From 9d4b959e5a9053b2a50c1a5bb473993d5d9efee2 Mon Sep 17 00:00:00 2001 From: msojocs Date: Sun, 30 Jun 2024 17:31:37 +0800 Subject: [PATCH] =?UTF-8?q?update:=20wcc,=20wcsc=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 7 + src/include/define.h | 4 +- src/wcc.cpp | 10 +- src/wcc/usage.cpp | 8 +- src/wcsc/usage.cpp | 2 +- src/wxml/compiler.cpp | 6 +- src/wxss/common.cpp | 4 +- test/runner/windows.ts | 3 +- test/spec/wcc/empty/version.spec.ts | 34 + test/spec/wcsc/empty/version.spec.ts | 32 + test/wcc.disassembly.cpp | 387743 ++++++++++++------------ test/wcsc.disassembly.cpp | 354537 +++++++++++----------- test/wine/info.txt | 6 +- test/wine/wcc.exe | Bin 2443808 -> 3120488 bytes test/wine/wcsc.exe | Bin 2115080 -> 2753776 bytes 15 files changed, 368568 insertions(+), 373828 deletions(-) create mode 100644 test/spec/wcc/empty/version.spec.ts create mode 100644 test/spec/wcsc/empty/version.spec.ts diff --git a/changelog.md b/changelog.md index 234d1ba..a4fcd21 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,9 @@ +## 🌈 v0.0.6 / 2024-06-30 + +🚀Features + +- 版本:更新至 -> 3c3eb3ac0ec1f85e5a72a9e7608a770a wcc.exe, 472fef6c6e0f6b3217e3d3dfa85188b2 wcsc.exe + ## 🌈 v0.0.5 / 2023-09-23 🐞 Bug Fixes @@ -12,6 +18,7 @@ - `WXSS::CSSTreeLib::RewriteSelectorRule::MarkGood`: 比较字符串错误 🚀Features + - feat: 添加新的`wcsc`的测试用例 ## 🌈 v0.0.3 / 2023-08-31 diff --git a/src/include/define.h b/src/include/define.h index 50c86c8..3ebb8c1 100644 --- a/src/include/define.h +++ b/src/include/define.h @@ -1,9 +1,9 @@ #ifndef __DEFINE_H__ #define __DEFINE_H__ -const char aIfThisThisGUnd[] = "if(this&&this.__g===undefined)Object.defineProperty(this,\"__g\",{configurable:false,enumerable:false,writable:false,value:function(){function D(e,t){if(typeof t!=\"undefined\")e.children.push(t)}function S(e){if(typeof e!=\"undefined\")return{tag:\"virtual\",wxKey:e,children:[]};return{tag:\"virtual\",children:[]}}function v(e){$gwxc++;if($gwxc>=16e3){throw\"Dom limit exceeded, please check if there's any mistake you've made.\"}return{tag:\"wx-\"+e,attr:{},children:[],n:[],raw:{},generics:{}}}function e(e,t){t&&e.properities.push(t)}function t(e,t,r){return typeof e[r]!=\"undefined\"?e[r]:t[r]}function u(e){console.warn(\"WXMLRT_\"+g+\":\"+e)}function r(e,t){u(t+\":-1:-1:-1: Template `\"+e+\"` is being called recursively, will be stop.\")}var s=console.warn;var n=console.log;function o(){function e(){}e.prototype={hn:function(e,t){if(typeof e==\"object\"){var r=0;var n=false,o=false;for(var a in e){n=n|a===\"__value__\";o=o|a===\"__wxspec__\";r++;if(r>2)break}return r==2&&n&&o&&(t||e.__wxspec__!==\"m\"||this.hn(e.__value__)===\"h\")?\"h\":\"n\"}return\"n\"},nh:function(e,t){return{__value__:e,__wxspec__:t?t:true}},rv:function(e){return this.hn(e,true)===\"n\"?e:this.rv(e.__value__)},hm:function(e){if(typeof e==\"object\"){var t=0;var r=false,n=false;for(var o in e){r=r|o===\"__value__\";n=n|o===\"__wxspec__\";t++;if(t>2)break}return t==2&&r&&n&&(e.__wxspec__===\"m\"||this.hm(e.__value__))}return false}};return new e}var A=o();function T(e){var t=e.split(\"\\n \"+\" \"+\" \"+\" \");for(var r=0;r=\":case\"<=\":case\">\":case\"<\":case\"<<\":case\">>\":p=x(e[1],t,r,n,o,a);u=x(e[2],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");switch(i){case\"+\":f=A.rv(p)+A.rv(u);break;case\"*\":f=A.rv(p)*A.rv(u);break;case\"/\":f=A.rv(p)/A.rv(u);break;case\"%\":f=A.rv(p)%A.rv(u);break;case\"|\":f=A.rv(p)|A.rv(u);break;case\"^\":f=A.rv(p)^A.rv(u);break;case\"&\":f=A.rv(p)&A.rv(u);break;case\"===\":f=A.rv(p)===A.rv(u);break;case\"==\":f=A.rv(p)==A.rv(u);break;case\"!=\":f=A.rv(p)!=A.rv(u);break;case\"!==\":f=A.rv(p)!==A.rv(u);break;case\">=\":f=A.rv(p)>=A.rv(u);break;case\"<=\":f=A.rv(p)<=A.rv(u);break;case\">\":f=A.rv(p)>A.rv(u);break;case\"<\":f=A.rv(p)>\":f=A.rv(p)>>A.rv(u);break;default:break}return l?A.nh(f,\"c\"):f;break;case\"-\":p=e.length===3?x(e[1],t,r,n,o,a):0;u=e.length===3?x(e[2],t,r,n,o,a):x(e[1],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");f=l?A.rv(p)-A.rv(u):p-u;return l?A.nh(f,\"c\"):f;break;case\"!\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=!A.rv(p);return l?A.nh(f,\"c\"):f;case\"~\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=~A.rv(p);return l?A.nh(f,\"c\"):f;default:s(\"unrecognized op\"+i)}}function x(e,t,r,n,o,a){var i=e[0];var p=false;if(typeof a!==\"undefined\")o.ap=a;if(typeof i===\"object\"){var u=i[0];var l,f,v,c,s,y,b,d,h,_,g;switch(u){case 2:return m(e,t,r,n,o);break;case 4:return x(e[1],t,r,n,o,p);break;case 5:switch(e.length){case 2:l=x(e[1],t,r,n,o,p);return M?[l]:[A.rv(l)];return[l];break;case 1:return[];break;default:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);l.push(M?v:A.rv(v));return l;break}break;case 6:l=x(e[1],t,r,n,o);var w=o.ap;h=A.hn(l)===\"h\";f=h?A.rv(l):l;o.is_affected|=h;if(M){if(f===null||typeof f===\"undefined\"){return h?A.nh(undefined,\"e\"):undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return h||_?A.nh(undefined,\"e\"):undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return h||_?g?y:A.nh(y,\"e\"):y}else{if(f===null||typeof f===\"undefined\"){return undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return g?A.rv(y):y}case 7:switch(e[1][0]){case 11:o.is_affected|=A.hn(n)===\"h\";return n;case 3:b=A.rv(r);d=A.rv(t);v=e[1][1];if(n&&n.f&&n.f.hasOwnProperty(v)){l=n.f;o.ap=true}else{l=b&&b.hasOwnProperty(v)?r:d&&d.hasOwnProperty(v)?t:undefined}if(M){if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;y=h&&!g?A.nh(y,\"e\"):y;return y}}else{if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;return A.rv(y)}}return undefined}break;case 8:l={};l[e[1]]=x(e[2],t,r,n,o,p);return l;break;case 9:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);function O(e,t,r){var n,o;h=A.hn(e)===\"h\";_=A.hn(t)===\"h\";f=A.rv(e);c=A.rv(t);for(var a in c){if(r||!f.hasOwnProperty(a)){f[a]=M?_?A.nh(c[a],\"e\"):c[a]:A.rv(c[a])}}return e}var s=l;var j=true;if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){l=v;v=s;j=false}if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){var P={};return O(O(P,l,j),v,j)}else return O(l,v,j);break;case 10:l=x(e[1],t,r,n,o,p);l=M?l:A.rv(l);return l;break;case 12:var P;l=x(e[1],t,r,n,o);if(!o.ap){return M&&A.hn(l)===\"h\"?A.nh(P,\"f\"):P}var w=o.ap;v=x(e[2],t,r,n,o,p);o.ap=w;h=A.hn(l)===\"h\";_=N(v);f=A.rv(l);c=A.rv(v);snap_bb=K(c,\"nv_\");try{P=typeof f===\"function\"?K(f.apply(null,snap_bb)):undefined}catch(t){t.message=t.message.replace(/nv_/g,\"\");t.stack=t.stack.substring(0,t.stack.indexOf(\"\\n\",t.stack.lastIndexOf(\"at nv_\")));t.stack=t.stack.replace(/\\snv_/g,\" \");t.stack=T(t.stack);if(n.debugInfo){t.stack+=\"\\n \"+\" \"+\" \"+\" at \"+n.debugInfo[0]+\":\"+n.debugInfo[1]+\":\"+n.debugInfo[2];console.error(t)}P=undefined}return M&&(_||h)?A.nh(P,\"f\"):P}}else{if(i===3||i===1)return e[1];else if(i===11){var l=\"\";for(var D=1;D=0;o--){if(r[e].i[o]&&n[r[e].i[o]][t])return n[r[e].i[o]][t]}for(var o=r[e].ti.length-1;o>=0;o--){var a=ne(r[e].ti[o],r,e);if(a&&n[a][t])return n[a][t]}var i=ae(r,e);for(var o=0;o=0;p--)if(r[e].j[p]){for(var a=r[r[e].j[p]].ti.length-1;a>=0;a--){var u=ne(r[r[e].j[p]].ti[a],r,e);if(u&&n[u][t]){return n[u][t]}}}}function ae(e,t){if(!t)return[];if($gaic[t]){return $gaic[t]}var r=[],n=[],o=0,a=0,i={},p={};n.push(t);p[t]=true;a++;while(o=16e3){throw\"Dom limit exceeded, please check if there's any mistake you've made.\"}return{tag:\"wx-\"+e,attr:{},children:[],n:[],raw:{},generics:{}}}function e(e,t){t&&e.properities.push(t)}function t(e,t,r){return typeof e[r]!=\"undefined\"?e[r]:t[r]}function u(e){console.warn(\"WXMLRT_\"+g+\":\"+e)}function r(e,t){u(t+\":-1:-1:-1: Template `\"+e+\"` is being called recursively, will be stop.\")}var s=console.warn;var n=console.log;function o(){function e(){}e.prototype={hn:function(e,t){if(typeof e==\"object\"){var r=0;var n=false,o=false;for(var a in e){n=n|a===\"__value__\";o=o|a===\"__wxspec__\";r++;if(r>2)break}return r==2&&n&&o&&(t||e.__wxspec__!==\"m\"||this.hn(e.__value__)===\"h\")?\"h\":\"n\"}return\"n\"},nh:function(e,t){return{__value__:e,__wxspec__:t?t:true}},rv:function(e){return this.hn(e,true)===\"n\"?e:this.rv(e.__value__)},hm:function(e){if(typeof e==\"object\"){var t=0;var r=false,n=false;for(var o in e){r=r|o===\"__value__\";n=n|o===\"__wxspec__\";t++;if(t>2)break}return t==2&&r&&n&&(e.__wxspec__===\"m\"||this.hm(e.__value__))}return false}};return new e}var A=o();function T(e){var t=e.split(\"\\n \"+\" \"+\" \"+\" \");for(var r=0;r=\":case\"<=\":case\">\":case\"<\":case\"<<\":case\">>\":p=x(e[1],t,r,n,o,a);u=x(e[2],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");switch(i){case\"+\":f=A.rv(p)+A.rv(u);break;case\"*\":f=A.rv(p)*A.rv(u);break;case\"/\":f=A.rv(p)/A.rv(u);break;case\"%\":f=A.rv(p)%A.rv(u);break;case\"|\":f=A.rv(p)|A.rv(u);break;case\"^\":f=A.rv(p)^A.rv(u);break;case\"&\":f=A.rv(p)&A.rv(u);break;case\"===\":f=A.rv(p)===A.rv(u);break;case\"==\":f=A.rv(p)==A.rv(u);break;case\"!=\":f=A.rv(p)!=A.rv(u);break;case\"!==\":f=A.rv(p)!==A.rv(u);break;case\">=\":f=A.rv(p)>=A.rv(u);break;case\"<=\":f=A.rv(p)<=A.rv(u);break;case\">\":f=A.rv(p)>A.rv(u);break;case\"<\":f=A.rv(p)>\":f=A.rv(p)>>A.rv(u);break;default:break}return l?A.nh(f,\"c\"):f;break;case\"-\":p=e.length===3?x(e[1],t,r,n,o,a):0;u=e.length===3?x(e[2],t,r,n,o,a):x(e[1],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");f=l?A.rv(p)-A.rv(u):p-u;return l?A.nh(f,\"c\"):f;break;case\"!\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=!A.rv(p);return l?A.nh(f,\"c\"):f;case\"~\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=~A.rv(p);return l?A.nh(f,\"c\"):f;default:s(\"unrecognized op\"+i)}}function x(e,t,r,n,o,a){var i=e[0];var p=false;if(typeof a!==\"undefined\")o.ap=a;if(typeof i===\"object\"){var u=i[0];var l,f,v,c,s,y,b,d,h,_,g;switch(u){case 2:return m(e,t,r,n,o);break;case 4:return x(e[1],t,r,n,o,p);break;case 5:switch(e.length){case 2:l=x(e[1],t,r,n,o,p);return M?[l]:[A.rv(l)];return[l];break;case 1:return[];break;default:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);l.push(M?v:A.rv(v));return l;break}break;case 6:l=x(e[1],t,r,n,o);var w=o.ap;h=A.hn(l)===\"h\";f=h?A.rv(l):l;o.is_affected|=h;if(M){if(f===null||typeof f===\"undefined\"){return h?A.nh(undefined,\"e\"):undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return h||_?A.nh(undefined,\"e\"):undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return h||_?g?y:A.nh(y,\"e\"):y}else{if(f===null||typeof f===\"undefined\"){return undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return g?A.rv(y):y}case 7:switch(e[1][0]){case 11:o.is_affected|=A.hn(n)===\"h\";return n;case 3:b=A.rv(r);d=A.rv(t);v=e[1][1];if(n&&n.f&&n.f.hasOwnProperty(v)){l=n.f;o.ap=true}else{l=b&&b.hasOwnProperty(v)?r:d&&d.hasOwnProperty(v)?t:undefined}if(M){if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;y=h&&!g?A.nh(y,\"e\"):y;return y}}else{if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;return A.rv(y)}}return undefined}break;case 8:l={};l[e[1]]=x(e[2],t,r,n,o,p);return l;break;case 9:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);function O(e,t,r){var n,o;h=A.hn(e)===\"h\";_=A.hn(t)===\"h\";f=A.rv(e);c=A.rv(t);for(var a in c){if(r||!f.hasOwnProperty(a)){f[a]=M?_?A.nh(c[a],\"e\"):c[a]:A.rv(c[a])}}return e}var s=l;var j=true;if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){l=v;v=s;j=false}if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){var P={};return O(O(P,l,j),v,j)}else return O(l,v,j);break;case 10:l=x(e[1],t,r,n,o,p);l=M?l:A.rv(l);return l;break;case 12:var P;l=x(e[1],t,r,n,o);if(!o.ap){return M&&A.hn(l)===\"h\"?A.nh(P,\"f\"):P}var w=o.ap;v=x(e[2],t,r,n,o,p);o.ap=w;h=A.hn(l)===\"h\";_=N(v);f=A.rv(l);c=A.rv(v);snap_bb=K(c,\"nv_\");try{P=typeof f===\"function\"?K(f.apply(null,snap_bb)):undefined}catch(t){t.message=t.message.replace(/nv_/g,\"\");t.stack=t.stack.substring(0,t.stack.indexOf(\"\\n\",t.stack.lastIndexOf(\"at nv_\")));t.stack=t.stack.replace(/\\snv_/g,\" \");t.stack=T(t.stack);if(n.debugInfo){t.stack+=\"\\n \"+\" \"+\" \"+\" at \"+n.debugInfo[0]+\":\"+n.debugInfo[1]+\":\"+n.debugInfo[2];console.error(t)}P=undefined}return M&&(_||h)?A.nh(P,\"f\"):P}}else{if(i===3||i===1)return e[1];else if(i===11){var l=\"\";for(var D=1;D=0;o--){if(r[e].i[o]&&n[r[e].i[o]][t])return n[r[e].i[o]][t]}for(var o=r[e].ti.length-1;o>=0;o--){var a=ne(r[e].ti[o],r,e);if(a&&n[a][t])return n[a][t]}var i=ae(r,e);for(var o=0;o=0;p--)if(r[e].j[p]){for(var a=r[r[e].j[p]].ti.length-1;a>=0;a--){var u=ne(r[r[e].j[p]].ti[a],r,e);if(u&&n[u][t]){return n[u][t]}}}}function ae(e,t){if(!t)return[];if($gaic[t]){return $gaic[t]}var r=[],n=[],o=0,a=0,i={},p={};n.push(t);p[t]=true;a++;while(o2)break;\n}\nreturn cnt == 2 && any1 && any2 && (obj.__wxspec__ === 'm' || this.hm(obj.__value__) );\n}\nreturn false;\n}\n}\nreturn new x;\n}\nwh=$gwh();\nfunction $gstack(s){\nvar tmp=s.split('\\n '+' '+' '+' ');\nfor(var i=0;i=':\ncase '<=':\ncase '>':\ncase '<':\ncase '<<':\ncase '>>':\n_a = rev( ops[1], e, s, g, o, _f );\n_b = rev( ops[2], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) === 'h' || wh.hn( _b ) === 'h');\nswitch( rop )\n{\ncase '+':\n_d = wh.rv( _a ) + wh.rv( _b );\nbreak;\ncase '*':\n_d = wh.rv( _a ) * wh.rv( _b );\nbreak;\ncase '/':\n_d = wh.rv( _a ) / wh.rv( _b );\nbreak;\ncase '%':\n_d = wh.rv( _a ) % wh.rv( _b );\nbreak;\ncase '|':\n_d = wh.rv( _a ) | wh.rv( _b );\nbreak;\ncase '^':\n_d = wh.rv( _a ) ^ wh.rv( _b );\nbreak;\ncase '&':\n_d = wh.rv( _a ) & wh.rv( _b );\nbreak;\ncase '===':\n_d = wh.rv( _a ) === wh.rv( _b );\nbreak;\ncase '==':\n_d = wh.rv( _a ) == wh.rv( _b );\nbreak;\ncase '!=':\n_d = wh.rv( _a ) != wh.rv( _b );\nbreak;\ncase '!==':\n_d = wh.rv( _a ) !== wh.rv( _b );\nbreak;\ncase '>=':\n_d = wh.rv( _a ) >= wh.rv( _b );\nbreak;\ncase '<=':\n_d = wh.rv( _a ) <= wh.rv( _b );\nbreak;\ncase '>':\n_d = wh.rv( _a ) > wh.rv( _b );\nbreak;\ncase '<':\n_d = wh.rv( _a ) < wh.rv( _b );\nbreak;\ncase '<<':\n_d = wh.rv( _a ) << wh.rv( _b );\nbreak;\ncase '>>':\n_d = wh.rv( _a ) >> wh.rv( _b );\nbreak;\ndefault:\nbreak;\n}\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\nbreak;\ncase '-':\n_a = ops.length === 3 ? rev( ops[1], e, s, g, o, _f ) : 0;\n_b = ops.length === 3 ? rev( ops[2], e, s, g, o, _f ) : rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) === 'h' || wh.hn( _b ) === 'h');\n_d = _c ? wh.rv( _a ) - wh.rv( _b ) : _a - _b;\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\nbreak;\ncase '!':\n_a = rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) == 'h');\n_d = !wh.rv(_a);\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\ncase '~':\n_a = rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) == 'h');\n_d = ~wh.rv(_a);\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\ndefault:\n$gwn('unrecognized op' + rop );\n}\n}\nfunction rev( ops, e, s, g, o, newap )\n{\nvar op = ops[0];\nvar _f = false;\nif ( typeof newap !== \"undefined\" ) o.ap = newap;\nif( typeof(op)==='object' )\n{\nvar vop=op[0];\nvar _a, _aa, _b, _bb, _c, _d, _s, _e, _ta, _tb, _td;\nswitch(vop)\n{\ncase 2:\nreturn ArithmeticEv(ops,e,s,g,o);\nbreak;\ncase 4: \nreturn rev( ops[1], e, s, g, o, _f );\nbreak;\ncase 5: \nswitch( ops.length )\n{\ncase 2: \n_a = rev( ops[1],e,s,g,o,_f );\nreturn should_pass_type_info?[_a]:[wh.rv(_a)];\nreturn [_a];\nbreak;\ncase 1: \nreturn [];\nbreak;\ndefault:\n_a = rev( ops[1],e,s,g,o,_f );\n_b = rev( ops[2],e,s,g,o,_f );\n_a.push( \nshould_pass_type_info ?\n_b :\nwh.rv( _b )\n);\nreturn _a;\nbreak;\n}\nbreak;\ncase 6:\n_a = rev(ops[1],e,s,g,o);\nvar ap = o.ap;\n_ta = wh.hn(_a)==='h';\n_aa = _ta ? wh.rv(_a) : _a;\no.is_affected |= _ta;\nif( should_pass_type_info )\n{\nif( _aa===null || typeof(_aa) === 'undefined' )\n{\nreturn _ta ? wh.nh(undefined, 'e') : undefined;\n}\n_b = rev(ops[2],e,s,g,o,_f);\n_tb = wh.hn(_b) === 'h';\n_bb = _tb ? wh.rv(_b) : _b;\no.ap = ap;\no.is_affected |= _tb;\nif( _bb===null || typeof(_bb) === 'undefined' || \n_bb === \"__proto__\" || _bb === \"prototype\" || _bb === \"caller\" ) \n{\nreturn (_ta || _tb) ? wh.nh(undefined, 'e') : undefined;\n}\n_d = _aa[_bb];\nif ( typeof _d === 'function' && !ap ) _d = undefined;\n_td = wh.hn(_d)==='h';\no.is_affected |= _td;\nreturn (_ta || _tb) ? (_td ? _d : wh.nh(_d, 'e')) : _d;\n}\nelse\n{\nif( _aa===null || typeof(_aa) === 'undefined' )\n{\nreturn undefined;\n}\n_b = rev(ops[2],e,s,g,o,_f);\n_tb = wh.hn(_b) === 'h';\n_bb = _tb ? wh.rv(_b) : _b;\no.ap = ap;\no.is_affected |= _tb;\nif( _bb===null || typeof(_bb) === 'undefined' || \n_bb === \"__proto__\" || _bb === \"prototype\" || _bb === \"caller\" ) \n{\nreturn undefined;\n}\n_d = _aa[_bb];\nif ( typeof _d === 'function' && !ap ) _d = undefined;\n_td = wh.hn(_d)==='h';\no.is_affected |= _td;\nreturn _td ? wh.rv(_d) : _d;\n}\ncase 7: \nswitch(ops[1][0])\n{\ncase 11:\no.is_affected |= wh.hn(g)==='h';\nreturn g;\ncase 3:\n_s = wh.rv( s );\n_e = wh.rv( e );\n_b = ops[1][1];\nif (g && g.f && g.f.hasOwnProperty(_b) )\n{\n_a = g.f;\no.ap = true;\n}\nelse\n{\n_a = _s && _s.hasOwnProperty(_b) ? \ns : (_e && _e.hasOwnProperty(_b) ? e : undefined );\n}\nif( should_pass_type_info )\n{\nif( _a )\n{\n_ta = wh.hn(_a) === 'h';\n_aa = _ta ? wh.rv( _a ) : _a;\n_d = _aa[_b];\n_td = wh.hn(_d) === 'h';\no.is_affected |= _ta || _td;\n_d = _ta && !_td ? wh.nh(_d,'e') : _d;\nreturn _d;\n}\n}\nelse\n{\nif( _a )\n{\n_ta = wh.hn(_a) === 'h';\n_aa = _ta ? wh.rv( _a ) : _a;\n_d = _aa[_b];\n_td = wh.hn(_d) === 'h';\no.is_affected |= _ta || _td;\nreturn wh.rv(_d);\n}\n}\nreturn undefined;\n}\nbreak;\ncase 8: \n_a = {};\n_a[ops[1]] = rev(ops[2],e,s,g,o,_f);\nreturn _a;\nbreak;\ncase 9: \n_a = rev(ops[1],e,s,g,o,_f);\n_b = rev(ops[2],e,s,g,o,_f);\nfunction merge( _a, _b, _ow )\n{\nvar ka, _bbk;\n_ta = wh.hn(_a)==='h';\n_tb = wh.hn(_b)==='h';\n_aa = wh.rv(_a);\n_bb = wh.rv(_b);\nfor(var k in _bb)\n{\nif ( _ow || !_aa.hasOwnProperty(k) )\n{\n_aa[k] = should_pass_type_info ? (_tb ? wh.nh(_bb[k],'e') : _bb[k]) : wh.rv(_bb[k]);\n}\n}\nreturn _a;\n}\nvar _c = _a\nvar _ow = true\nif ( typeof(ops[1][0]) === \"object\" && ops[1][0][0] === 10 ) {\n_a = _b\n_b = _c\n_ow = false\n}\nif ( typeof(ops[1][0]) === \"object\" && ops[1][0][0] === 10 ) {\nvar _r = {}\nreturn merge( merge( _r, _a, _ow ), _b, _ow );\n}\nelse\nreturn merge( _a, _b, _ow );\nbreak;\ncase 10:\n_a = rev(ops[1],e,s,g,o,_f);\n_a = should_pass_type_info ? _a : wh.rv( _a );\nreturn _a ;\nbreak;\ncase 12:\nvar _r;\n_a = rev(ops[1],e,s,g,o);\nif ( !o.ap )\n{\nreturn should_pass_type_info && wh.hn(_a)==='h' ? wh.nh( _r, 'f' ) : _r;\n}\nvar ap = o.ap;\n_b = rev(ops[2],e,s,g,o,_f);\no.ap = ap;\n_ta = wh.hn(_a)==='h';\n_tb = _ca(_b);\n_aa = wh.rv(_a);\t\n_bb = wh.rv(_b); snap_bb=$gdc(_bb,\"nv_\");\ntry{\n_r = typeof _aa === \"function\" ? $gdc(_aa.apply(null, snap_bb)) : undefined;\n} catch (e){\ne.message = e.message.replace(/nv_/g,\"\");\ne.stack = e.stack.substring(0,e.stack.indexOf(\"\\n\", e.stack.lastIndexOf(\"at nv_\")));\ne.stack = e.stack.replace(/\\snv_/g,\" \"); \ne.stack = $gstack(e.stack);\t\nif(g.debugInfo)\n{\ne.stack += \"\\n \"+\" \"+\" \"+\" at \"+g.debugInfo[0]+\":\"+g.debugInfo[1]+\":\"+g.debugInfo[2];\nconsole.error(e);\n}\n_r = undefined;\n}\nreturn should_pass_type_info && (_tb || _ta) ? wh.nh( _r, 'f' ) : _r;\n}\n}\nelse\n{\nif( op === 3 || op === 1) return ops[1];\nelse if( op === 11 ) \n{\nvar _a='';\nfor( var i = 1 ; i < ops.length ; i++ )\n{\nvar xp = wh.rv(rev(ops[i],e,s,g,o,_f));\n_a += typeof(xp) === 'undefined' ? '' : xp;\n}\nreturn _a;\n}\n}\n}\nfunction wrapper( ops, e, s, g, o, newap )\n{\nif( ops[0] == '11182016' )\n{\ng.debugInfo = ops[2];\nreturn rev( ops[1], e, s, g, o, newap );\n}\nelse\n{\ng.debugInfo = null;\nreturn rev( ops, e, s, g, o, newap );\n}\n}\nreturn wrapper;\n}\ngra=$gwrt(true); \ngrb=$gwrt(false); \nfunction TestTest( expr, ops, e,s,g, expect_a, expect_b, expect_affected )\n{\n{\nvar o = {is_affected:false};\nvar a = gra( ops, e,s,g, o );\nif( JSON.stringify(a) != JSON.stringify( expect_a )\n|| o.is_affected != expect_affected )\n{\nconsole.warn( \"A. \" + expr + \" get result \" + JSON.stringify(a) + \", \" + o.is_affected + \", but \" + JSON.stringify( expect_a ) + \", \" + expect_affected + \" is expected\" );\n}\n}\n{\nvar o = {is_affected:false};\nvar a = grb( ops, e,s,g, o );\nif( JSON.stringify(a) != JSON.stringify( expect_b )\n|| o.is_affected != expect_affected )\n{\nconsole.warn( \"B. \" + expr + \" get result \" + JSON.stringify(a) + \", \" + o.is_affected + \", but \" + JSON.stringify( expect_b ) + \", \" + expect_affected + \" is expected\" );\n}\n}\n}\n"; // idb -const char aVarNfInitFunct[] = "var nf_init=function(){\nif(typeof __WXML_GLOBAL__===\"undefined\"||undefined===__WXML_GLOBAL__.wxs_nf_init){\nnf_init_Object();nf_init_Function();nf_init_Array();nf_init_String();nf_init_Boolean();nf_init_Number();nf_init_Math();nf_init_Date();nf_init_RegExp();\n}\nif(typeof __WXML_GLOBAL__!==\"undefined\") __WXML_GLOBAL__.wxs_nf_init=true;\n};\nvar nf_init_Object=function(){\nObject.defineProperty(Object.prototype,\"nv_constructor\",{writable:true,value:\"Object\"})\nObject.defineProperty(Object.prototype,\"nv_toString\",{writable:true,value:function(){return \"[object Object]\"}})\n}\nvar nf_init_Function=function(){\nObject.defineProperty(Function.prototype,\"nv_constructor\",{writable:true,value:\"Function\"})\nObject.defineProperty(Function.prototype,\"nv_length\",{get:function(){return this.length;},set:function(){}});\nObject.defineProperty(Function.prototype,\"nv_toString\",{writable:true,value:function(){return \"[function Function]\"}})\n}\nvar nf_init_Array=function(){\nObject.defineProperty(Array.prototype,\"nv_toString\",{writable:true,value:function(){return this.nv_join();}})\nObject.defineProperty(Array.prototype,\"nv_join\",{writable:true,value:function(s){\ns=undefined==s?',':s;\nvar r=\"\";\nfor(var i=0;i +const char *sCliVersion = "20230804"; //----- (00401726) -------------------------------------------------------- int usage(int argc, const char **argv) { - printf("Wechat WXML Compiler, version %s\n", "v0.5vv_20200413_syb_scopedata"); + printf("Wechat WXML Compiler, core version %s, cli version %s\n", "v0.5vv_20211229_syb_scopedata", sCliVersion); printf( "Usage: %s [-d] [-o OUTPUT] [-xc XComponentDefine] [-om XComponentDefine] [-cb [callback.js...]] [-llcommon] [-llw/-l" - "la XCPath] \n", + "la XCPath] [--wxs ContentMapFile] \n", *argv); printf(" Options:\n"); printf(" -d: output code for debug\n"); @@ -19,5 +20,8 @@ int usage(int argc, const char **argv) printf(" -llw: compile in lazy load mode (webiew)\n"); printf(" -lla: compile in lazy load mode (app service)\n"); printf(" args XCPath: custom component paths connected by comma or --split (./page/index,./comp/comp)\n"); + printf(" --wxs: compile wxs scripts for glass-easel\n"); + puts(" --gdc: gdc function for glass-easel"); + puts(" --wxs-env: wxs env for glass-easel"); return 1; } \ No newline at end of file diff --git a/src/wcsc/usage.cpp b/src/wcsc/usage.cpp index ea425aa..55f9309 100644 --- a/src/wcsc/usage.cpp +++ b/src/wcsc/usage.cpp @@ -3,7 +3,7 @@ //----- (00401726) -------------------------------------------------------- int usage(int argc, const char **argv) { - printf("*** WeChat Stylesheet Compiler, Version %s ***\n", "v0.4me_20190328_db"); + printf("*** WeChat Stylesheet Compiler, Version %s ***\n", "v0.4me_20200724_db"); printf( "Usage: %s [-lc] [-o OUTPUT] [-s ] [-st] [-js] [-db] [-cp ] [-pc ] <[-sd ] | [import_css_files..]>\n", diff --git a/src/wxml/compiler.cpp b/src/wxml/compiler.cpp index 85a5b4d..74af9af 100644 --- a/src/wxml/compiler.cpp +++ b/src/wxml/compiler.cpp @@ -447,7 +447,7 @@ namespace WXML{ *ss << "__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};" << lineEndMark; if (v225 && gwxMark != "$gwx" && (mark & 0x60) == 0) { - *ss << "$gwx('init', global);" << lineEndMark; + *ss << "if (typeof $gwx === 'function') $gwx('init', global);" << lineEndMark; } *ss << "var " << eMark << "={}" << lineEndMark; *ss << "if(typeof(global.entrys)==='undefined')global.entrys={};" << eMark << "=global.entrys;" << lineEndMark; @@ -1782,12 +1782,12 @@ namespace WXML{ { std::stringstream result; result << "/*"; - result << "v0.5vv_20200413_syb_scopedata"; + result << "v0.5vv_20211229_syb_scopedata"; result << "*/"; result << a2; result << ".__wcc_version__='"; - result << "v0.5vv_20200413_syb_scopedata"; + result << "v0.5vv_20211229_syb_scopedata"; result << "';"; result << a2; result << ".__wcc_version_info__={\"customComponents\":true,\"fixZeroRpx\":true,\"propValueDeepCopy\":false};"; diff --git a/src/wxss/common.cpp b/src/wxss/common.cpp index f701aeb..f39d693 100644 --- a/src/wxss/common.cpp +++ b/src/wxss/common.cpp @@ -40,7 +40,7 @@ namespace WXSS int ret = v12.offset_0; if (!v12.offset_0) { - a3 = "/*v0.4me_20190328_db*/\n"; + a3 = "/*v0.4me_20200724_db*/\n"; if (a8) { ret = v12.ShowTree(a3); @@ -75,7 +75,7 @@ namespace WXSS ret = v32.GetCommHead(a2, v21, true, a8); if (!ret) { - a3 = "version=v0.4me_20190328_db="; + a3 = "version=v0.4me_20200724_db="; std::string v28 = WXML::Rewrite::ToStringCode2(v21); v28 = v28.insert(0, "comm="); v28.append("="); diff --git a/test/runner/windows.ts b/test/runner/windows.ts index 8dcdd79..dff70f9 100644 --- a/test/runner/windows.ts +++ b/test/runner/windows.ts @@ -62,7 +62,8 @@ const wcc = (args: string[], projectPath: string): Promise => { return new Promise((resolve, reject) => { wine.on("close", (n) => { // console.log("wine n: ", n); - if (0 === n) { + const errMsg = Buffer.concat(errData).toString() + if (0 === n || errMsg.length == 0) { let result = Buffer.concat(spwanData).toString(); // result = JSON.parse(result); resolve(result); diff --git a/test/spec/wcc/empty/version.spec.ts b/test/spec/wcc/empty/version.spec.ts new file mode 100644 index 0000000..d8523d3 --- /dev/null +++ b/test/spec/wcc/empty/version.spec.ts @@ -0,0 +1,34 @@ + +import assert from 'assert'; +import path from 'path'; +import linux from '../../../runner/linux' +import windows from '../../../runner/windows' +import * as fs from 'fs' + +describe("wcc - empty", function () { + describe("Empty: default command output", function () { + it("版本", async function () { + const projectPath = __dirname; + const args: string[] = [ + "-v" + ]; + let w = "" + try + { + w = (await windows.wcc(args, projectPath)).replace(/\r\n/g, '\n') + }catch{} + const n = await linux.wcc(args, projectPath); + const storagePath = path.resolve( + __dirname, + `version/${this.test?.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + + fs.writeFileSync(`${storagePath}/wine-output.js`, w); + fs.writeFileSync(`${storagePath}/node-output.js`, n); + assert.equal(w, n); + }); + }); +}); diff --git a/test/spec/wcsc/empty/version.spec.ts b/test/spec/wcsc/empty/version.spec.ts new file mode 100644 index 0000000..9ed7514 --- /dev/null +++ b/test/spec/wcsc/empty/version.spec.ts @@ -0,0 +1,32 @@ + +import assert from 'assert'; +import path from 'path'; +import linux from '../../../runner/linux' +import windows from '../../../runner/windows' +import * as fs from 'fs' + +describe("wcsc - empty", function () { + describe("Empty: default command output", function () { + it("使用说明", async function () { + const projectPath = __dirname; + const args: string[] = [ + "-v" + ]; + let w = (await windows.wcsc(args, projectPath)).replace(/\r\n/g, '\n') + let n = await linux.wcsc(args, projectPath); + const storagePath = path.resolve( + __dirname, + `version/${this.test?.title}` + ); + w = w.replace('wcsc.exe', '') + n = n.replace(/\/.*?\/wcsc/, '') + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + + fs.writeFileSync(`${storagePath}/wine-output.js`, w); + fs.writeFileSync(`${storagePath}/linux-output.js`, n); + assert.equal(w, n); + }); + }); +}); diff --git a/test/wcc.disassembly.cpp b/test/wcc.disassembly.cpp index 795409d..f5b3962 100644 --- a/test/wcc.disassembly.cpp +++ b/test/wcc.disassembly.cpp @@ -1,192709 +1,195034 @@ -/* This file was generated by the Hex-Rays decompiler version 7.7.0.220118. - Copyright (c) 2007-2021 Hex-Rays - - Detected compiler: GNU C++ -*/ - -#include -#include "defs.h" - -#include - - -//------------------------------------------------------------------------- -// Function declarations - -#define __thiscall __cdecl // Test compile in C mode - -void __cdecl __mingw_invalidParameterHandler(const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t pReserved); -int pre_c_init(); // idb -void pre_cpp_init(); // idb -// int __usercall __tmainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5); -// int __usercall WinMainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5); -// int __usercall mainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5); -int __cdecl atexit(_PVFV func); -int __gcc_register_frame(); -void __gcc_deregister_frame(void); // idb -int printf(char *a1, ...); -int fprintf(_iobuf *a1, char *a2, ...); -void __tcf_1(void); // idb -// void *__usercall std::_Vector_base::_M_allocate@(unsigned int a1@); -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); -size_t __thiscall std::string::basic_string(void **this, char *Str); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); -int __cdecl Usage(int a1, const char **a2); -int __cdecl ReadFile(char *FileName, unsigned int *a2); -int __cdecl Trim(int a1, int a2); -int __cdecl GetNextArg(int a1, int *a2, int a3); -int __cdecl EscapeToJsonString(int a1, int a2); -int __cdecl DictToJsonString(int a1, int a2); -int __cdecl Split(int a1, int *a2, int a3); -// void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); -void __thiscall std::vector::operator=(int this, int *a2); -int std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(void); // weak -// int __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>@(int a1@, int a2@); -_DWORD __stdcall std::string::operator+=(_DWORD); // weak -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); -int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*a2)[266], bool *a3, int *a4); -int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *a2); -int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *a2); -int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *a2); -int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *a2, int *a3); -std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3); -std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int *a1, int a2); -int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3); -int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2); -int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3); -int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2); -void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2); -int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2); -unsigned int __thiscall std::string::basic_string(void **this, char *Str); -void __cdecl WXML::Rewrite::GetToken(int a1, int a2); -BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *Str); -int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5); -void __tcf_3(void); // idb -void __tcf_4(void); // idb -void __tcf_5(void); // idb -void __tcf_6(void); // idb -void __tcf_7(void); // idb -void __tcf_8(void); // idb -void __tcf_9(void); // idb -void __tcf_10(void); // idb -void __tcf_11(void); // idb -void __tcf_12(void); // idb -void __tcf_13(void); // idb -void __tcf_14(void); // idb -void __tcf_15(void); // idb -void __tcf_16(void); // idb -void __tcf_17(void); // idb -void __tcf_18(void); // idb -void __tcf_19(void); // idb -void __tcf_20(void); // idb -void __tcf_21(void); // idb -void __tcf_22(void); // idb -void __tcf_23(void); // idb -void __tcf_24(void); // idb -void __tcf_25(void); // idb -void __tcf_26(void); // idb -void __tcf_27(void); // idb -void __tcf_28(void); // idb -void __tcf_29(void); // idb -void __tcf_30(void); // idb -void __tcf_31(void); // idb -void __tcf_32(void); // idb -void __tcf_33(void); // idb -void __tcf_34(void); // idb -void __tcf_35(void); // idb -void __tcf_36(void); // idb -void __tcf_37(void); // idb -void __tcf_38(void); // idb -void __tcf_39(void); // idb -void __tcf_40(void); // idb -void __tcf_41(void); // idb -int printf(char *a1, ...); -void __tcf_2(void); // idb -int sprintf(FILE *a1, int a2, ...); -// int __usercall __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>@(int a1@, int a2@); -// void *__usercall std::_Vector_base::_M_allocate@(unsigned int a1@); -// void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase(int a1@); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); -int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)); -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); -int __cdecl WXML::Compiler::GetVersionInfo(int a1, int *a2); -// void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(int a1@); -// void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); -// void __usercall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(int a1@); -int __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); -unsigned int __thiscall std::string::basic_string(void **this, char *Str); -void **__cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](void **a1); -void **__cdecl WXML::Compiler::GetFuncId(void **a1, _DWORD *a2, int a3); -void __thiscall std::vector::operator=(void *this, int *a2); -// void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); -void __fastcall std::deque::~deque(int a1); -int __cdecl WXML::Compiler::DealWxsTag(int a1, int **a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -struct _Unwind_Exception *__cdecl WXML::Compiler::RenderDefine(unsigned int **a1, WXML::NameAllocator *a2, _DWORD *a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, char a9, int *a10, int *a11, int *a12, int a13, int *a14, int *a15, int *a16, int a17, int a18, int a19, int *a20); -// struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@(WXML::DOMLib::Parser *a1@, int *a2, char **a3, char a4, int a5, int *a6, _DWORD *a7, int *a8, _DWORD *a9, _DWORD *a10, _DWORD *a11, int a12, char a13); -// std::ostream::sentry *__usercall WXML::Compiler::Compile@(int *a1@, _DWORD *a2, int *a3, unsigned __int8 **a4, _DWORD *a5, _DWORD *a6, char a7, int *a8, int a9, char a10, int *a11, int *a12, int *a13, int *a14, int *a15, int *a16, int a17, int a18, int a19, int *a20); -struct _Unwind_Exception *__cdecl WXML::Compiler::CompileLazy(_DWORD *a1, int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5, _DWORD *a6, int *a7, _DWORD *a8, char a9, int a10, int a11, char a12, int *a13, int *a14, int *a15, int *a16, int *a17, int *a18, int a19, int a20, int a21, int *a22); -void __thiscall WXML::NameAllocator::NameAllocator(_DWORD *this, int a2, int a3); -void __thiscall WXML::NameAllocator::GetNextName(int *this, int a2); -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); -void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void **a2); -int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3); -void __tcf_1_0(void); // idb -void __tcf_2_0(void); // idb -void __tcf_3_0(void); // idb -void __tcf_4_0(void); // idb -void __tcf_5_0(void); // idb -void __tcf_6_0(void); // idb -void __tcf_7_0(void); // idb -void __tcf_8_0(void); // idb -void __tcf_9_0(void); // idb -void __tcf_10_0(void); // idb -void __tcf_11_0(void); // idb -void __tcf_12_0(void); // idb -void __tcf_13_0(void); // idb -void __tcf_14_0(void); // idb -void __tcf_15_0(void); // idb -void __tcf_16_0(void); // idb -void __tcf_17_0(void); // idb -void __tcf_18_0(void); // idb -void __tcf_19_0(void); // idb -void __tcf_20_0(void); // idb -void __tcf_21_0(void); // idb -void __tcf_22_0(void); // idb -void __tcf_23_0(void); // idb -void __tcf_24_0(void); // idb -void __tcf_25_0(void); // idb -void __tcf_26_0(void); // idb -void __tcf_27_0(void); // idb -void __tcf_28_0(void); // idb -void __tcf_29_0(void); // idb -void __tcf_30_0(void); // idb -void __tcf_31_0(void); // idb -void __tcf_32_0(void); // idb -void __tcf_33_0(void); // idb -void __tcf_34_0(void); // idb -void __tcf_35_0(void); // idb -void __tcf_36_0(void); // idb -void __tcf_37_0(void); // idb -void __tcf_38_0(void); // idb -void __tcf_39_0(void); // idb -void __tcf_40_0(void); // idb -void __tcf_41_0(void); // idb -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); -_DWORD __stdcall std::string::operator+=(_DWORD); // weak -_DWORD __stdcall std::string::operator+=(_DWORD); // weak -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); -// int __usercall night::NSToken::tk_is_var_start@(int a1@); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); -int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); // weak -// int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>@(int a1@, int a2@); -int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); // weak -// int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>@(int a1@, int a2@); -size_t __thiscall std::string::basic_string(void **this, char *Str); -void __thiscall night::NSStream::NSStream(_DWORD *this, int a2, int a3, int a4); -_DWORD *__thiscall night::NSStream::next(_DWORD *ecx0, night::NSStream *this); -_DWORD *__thiscall night::NSStream::peek(_DWORD *ecx0, night::NSStream *this); -_DWORD *__thiscall night::NSStream::peek_2(_DWORD *ecx0, night::NSStream *this); -bool __fastcall night::NSStream::eof(night::NSStream *a1); -bool __fastcall night::NSStream::eof_2(night::NSStream *a1); -void __thiscall __noreturn night::NSStream::err(_DWORD *this, int a2, unsigned int a3, unsigned int a4, char a5); -// void __userpurge __noreturn night::NSToken::err(int a1@, int a2, unsigned int a3, unsigned int a4, char a5); -int __thiscall night::NSToken::read_while[abi:cxx11](int this, int a2, unsigned __int8 (__cdecl *a3)(_DWORD, int), int a4); -void __fastcall night::NSToken::read_comment_method_1(int a1); -_DWORD *__fastcall night::NSToken::read_comment_method_2(int a1); -unsigned __int8 __thiscall night::NSToken::skip_comment(night::NSStream **this, unsigned __int8 **a2); -bool __stdcall night::NSASTParse::is_save_for_division(int a1); -bool __stdcall night::NSASTParse::is_exp(int a1); -unsigned int __fastcall night::NSGod::hamlet(_DWORD *a1); -_DWORD *__thiscall night::NSGod::gen_son(void *this, int a2); -struct _Unwind_Exception *__thiscall night::NSToken::read_string(night::NSStream **this, char a2, int a3); -struct _Unwind_Exception *__thiscall night::NSToken::read_number(night::NSStream **this, int a2); -int __thiscall night::NSGod::gen_girl(void *this, int a2); -void __thiscall night::NSToken::push(int this, int a2); -struct _Unwind_Exception *__thiscall night::NSToken::read_var(int this, int a2); -unsigned __int8 **__fastcall night::NSToken::read_next(int a1); -unsigned __int8 **__fastcall night::NSToken::peek(int a1); -bool __fastcall night::NSToken::eof(int a1); -unsigned __int8 **__thiscall night::NSASTParse::is_punctuation(int *this, int a2); -unsigned __int8 **__thiscall night::NSASTParse::is_buildin_keywords(int *this, int a2); -unsigned __int8 **__thiscall night::NSASTParse::is_op(int *this, int a2); -unsigned __int8 **__thiscall night::NSASTParse::is_op_or_comma(int *this, int a2); -int __fastcall night::NSASTParse::end_line(int a1); -// int __userpurge night::NSASTParse::is_op_self@(int a1@, night::NSASTParse *this, bool a3); -// bool __userpurge night::NSASTParse::is_obj_op_self@(int *a1@, night::NSASTParse *this, bool a3); -unsigned __int8 **__fastcall night::NSToken::next(int a1); -void __thiscall night::NSASTParse::ignore_punc_pass_sem(int *this, int a2); -void __thiscall night::NSASTParse::ignore_punc(int *this, int a2); -void __thiscall night::NSASTParse::ignore_buildin_kw(int *this, int a2); -void __thiscall night::NSASTParse::ignore_op(int *this, int a2); -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_trans_kw(int *a1); -// _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, night::NSASTParse *this, bool a3); -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_op_self(int a1); -int __thiscall night::NSASTParse::make_binary_or_just_value(_DWORD *this, int a2, unsigned __int8 a3); -_DWORD *__fastcall night::NSASTParse::ast_expression_no_comma(int *a1); -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_varname(int a1); -_DWORD *__thiscall night::NSASTParse::ast_obj_op_self(_DWORD *this, int a2); -_DWORD *__thiscall night::NSASTParse::ast_obj_dot(int *this, int a2); -unsigned int *__fastcall night::NSASTParse::ast_if(int *a1); -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_ternary_expression(int *a1); -void **__thiscall night::NSASTParse::make_list_by_parser(int *this, int a2, int a3, int a4, int a5, char a6, int a7, int a8); -_DWORD *__thiscall night::NSASTParse::ast_call(int *this, int a2); -_DWORD *__thiscall night::NSASTParse::make_call_or_just_expression(int *this, _DWORD *a2); -_DWORD *__fastcall night::NSASTParse::ast_expression(int *a1); -_DWORD *__thiscall night::NSASTParse::ast_obj_op(int *this, int a2); -_DWORD *__fastcall night::NSASTParse::ast_while(int *a1); -_DWORD *__fastcall night::NSASTParse::ast_do_while(int *a1); -_DWORD *__fastcall night::NSASTParse::ast_switch(int *a1); -struct _Unwind_Exception *__fastcall night::NSASTParse::top_down(int *a1); -unsigned __int8 **__fastcall night::NSASTParse::ast_require(int *a1); -_DWORD *__fastcall night::NSASTParse::ast_code_block(int *a1); -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_function(int *a1); -_DWORD *__fastcall night::NSASTParse::ast_new_array(int *a1); -_DWORD *__fastcall night::NSASTParse::ast_for(int *a1); -_DWORD *__fastcall night::NSASTParse::ast_obj_block(int *a1); -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_var(_DWORD *a1); -_DWORD *__fastcall night::NSASTParse::ast_expression_no_binary(int *a1); -char *__thiscall night::NSCompileJs::compile_var[abi:cxx11](char *this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_function[abi:cxx11](_DWORD *this, int a2, _DWORD *a3); -void **__thiscall night::NSCompileJs::compile[abi:cxx11](void **this, int a2, _DWORD *a3); -int __thiscall night::NSCompileJs::compile_k_v[abi:cxx11](int this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_if[abi:cxx11](_DWORD *this, int a2, _DWORD *a3); -_DWORD *__thiscall night::NSCompileJs::compile_for[abi:cxx11](_DWORD *this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_while[abi:cxx11](_DWORD *this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_do_while[abi:cxx11](_DWORD *this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_switch[abi:cxx11](_DWORD *this, int a2, int a3); -_BYTE *__thiscall night::NSCompileJs::compile_obj_self_op[abi:cxx11](_BYTE *this, int a2, int a3); -_BYTE *__thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](_BYTE *this, int a2, int a3); -_BYTE *__thiscall night::NSCompileJs::compile_obj_dot[abi:cxx11](_BYTE *this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_op_self[abi:cxx11](_DWORD *this, int a2, int a3); -_BYTE *__thiscall night::NSCompileJs::compile_ternary[abi:cxx11](_BYTE *this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_binary[abi:cxx11](_DWORD *this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_assign[abi:cxx11](_DWORD *this, int a2, int a3); -int __thiscall night::NSCompileJs::compile_call[abi:cxx11](int this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_prog[abi:cxx11](_DWORD *this, int a2, int a3); -_DWORD *__thiscall night::NSCompileJs::compile_prog_no_sem[abi:cxx11](_DWORD *this, int a2, int a3); -char *__thiscall night::NSCompileJs::compile_once(char *this, int a2, unsigned int *a3, int a4, char a5); -int __cdecl night::compile_ns(int a1, int a2, int a3, int a4, unsigned int *a5, char a6); -int __cdecl night::compile_ns_with_sourcemap(night::NSASTParse *a1, int a2, int a3, int a4, int a5, unsigned int *a6, int a7); -void __tcf_0(void); // idb -void __tcf_1_1(void); // idb -void __tcf_2_1(void); // idb -void __tcf_3_1(void); // idb -void __tcf_4_1(void); // idb -void __tcf_5_1(void); // idb -void __tcf_6_1(void); // idb -void __tcf_7_1(void); // idb -void __tcf_8_1(void); // idb -void __tcf_9_1(void); // idb -void __tcf_10_1(void); // idb -void __tcf_11_1(void); // idb -void __tcf_12_1(void); // idb -void __tcf_13_1(void); // idb -void __tcf_14_1(void); // idb -void __tcf_15_1(void); // idb -void __tcf_16_1(void); // idb -void __tcf_17_1(void); // idb -void __tcf_18_1(void); // idb -void __tcf_19_1(void); // idb -void __tcf_20_1(void); // idb -void __tcf_21_1(void); // idb -void __tcf_22_1(void); // idb -void __tcf_23_1(void); // idb -void __tcf_24_1(void); // idb -void __tcf_25_1(void); // idb -void __tcf_26_1(void); // idb -void __tcf_27_1(void); // idb -void __tcf_28_1(void); // idb -void __tcf_29_1(void); // idb -void __tcf_30_1(void); // idb -void __tcf_31_1(void); // idb -void __tcf_32_1(void); // idb -void __tcf_33_1(void); // idb -void __tcf_34_1(void); // idb -void __tcf_35_1(void); // idb -void __tcf_36_1(void); // idb -void __tcf_37_1(void); // idb -void __tcf_38_1(void); // idb -_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2); -int __cdecl night::sourcemap::int2vlq[abi:cxx11](int a1, int a2); -int __cdecl night::sourcemap::gen_sourcemap_content(int *a1, _DWORD *a2, _DWORD *a3, int *a4, int a5, int a6); -void __tcf_1_2(void); // idb -void __tcf_2_2(void); // idb -void __tcf_3_2(void); // idb -void __tcf_4_2(void); // idb -void __tcf_5_2(void); // idb -void __tcf_6_2(void); // idb -void __tcf_7_2(void); // idb -void __tcf_8_2(void); // idb -void __tcf_9_2(void); // idb -void __tcf_10_2(void); // idb -void __tcf_11_2(void); // idb -void __tcf_12_2(void); // idb -void __tcf_13_2(void); // idb -void __tcf_14_2(void); // idb -void __tcf_15_2(void); // idb -void __tcf_16_2(void); // idb -void __tcf_17_2(void); // idb -void __tcf_18_2(void); // idb -void __tcf_19_2(void); // idb -void __tcf_20_2(void); // idb -void __tcf_21_2(void); // idb -void __tcf_22_2(void); // idb -void __tcf_23_2(void); // idb -void __tcf_24_2(void); // idb -void __tcf_25_2(void); // idb -void __tcf_26_2(void); // idb -void __tcf_27_2(void); // idb -void __tcf_28_2(void); // idb -void __tcf_29_2(void); // idb -void __tcf_30_2(void); // idb -void __tcf_31_2(void); // idb -void __tcf_32_2(void); // idb -void __tcf_33_2(void); // idb -void __tcf_34_2(void); // idb -void __tcf_35_2(void); // idb -void __tcf_36_2(void); // idb -void __tcf_37_2(void); // idb -void __tcf_38_2(void); // idb -void __tcf_39_1(void); // idb -int __cdecl night::str::path_combine(_DWORD *a1, _DWORD *a2, int a3); -int __cdecl night::str::get_token(int a1, _DWORD *a2, unsigned int a3); -int __cdecl night::readfile(char *FileName, unsigned int *a2); -int __cdecl night::writefile(char *FileName, int); // idb -bool __cdecl WXML::DOMLib::AttrsCompartor(int a1, int a2); -void __tcf_1_3(void); // idb -// int __usercall __gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>@(int (__cdecl *a1)(int, int)@, int a2@, int a3@); -// void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase(int a1@); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); -// std::ostream::sentry *__usercall std::operator<<>@(std::ostream::sentry *a1@, char a2@
); -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); -// int __userpurge WXML::DOMLib::WXMLDom::GenRawId@(_DWORD *a1@, WXML::DOMLib::WXMLDom *this, unsigned __int64 *a3); -void __fastcall WXML::DOMLib::Parser::Match(int a1); -bool __stdcall WXML::DOMLib::Parser::IsValidTag(const char **a1); -_DWORD *__fastcall WXML::DOMLib::Parser::Peek(_DWORD *a1); -int __cdecl WXML::DOMLib::WXMLDom::Error(int a1, int *a2, int a3, int *a4, int *a5); -int __cdecl WXML::DOMLib::joinString(int a1, _DWORD *a2, char a3); -_DWORD *__thiscall WXML::DOMLib::Parser::GetParsed(_DWORD *ecx0, WXML::DOMLib::Parser *this); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node(void **a1@); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1@); -void __fastcall WXML::DOMLib::WXMLDom::~WXMLDom(int a1); -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, int a2); -void __thiscall WXML::DOMLib::Token::operator=(int this, int a2); -_DWORD *__thiscall WXML::DOMLib::Parser::Error(_DWORD *ecx0, WXML::DOMLib::Parser *this, char *a3, WXML::DOMLib::Token *a4); -unsigned __int8 *__thiscall WXML::DOMLib::Token::operator=(int this, int a2); -unsigned __int8 *__thiscall std::pair::operator=(unsigned __int8 **this, int a2); -unsigned int __thiscall std::string::basic_string(void **this, char *Str); -void **__cdecl WXML::DOMLib::removern(void **a1, _DWORD *a2); -// int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@(int a1@, int a2@, int a3@); -int __thiscall WXML::DOMLib::WXMLDom::AddTestAttr(_DWORD *this, int *a2, int a3, char a4); -int __cdecl WXML::DOMLib::splitString(int a1, int *a2, char a3); -int __cdecl WXML::DOMLib::resolvePath(int a1, int *a2, int *a3); -void __fastcall WXML::DOMLib::Parser::ATTR(WXML::DOMLib::Parser *a1); -void __fastcall WXML::DOMLib::Parser::ATTR_LIST(WXML::DOMLib::Parser *a1); -void __thiscall std::map::erase(_DWORD *this, int a2); -int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1); -void __cdecl WXML::DOMLib::recurseDependencies(int *a1, int *a2, _DWORD *a3); -// void __usercall WXML::DOMLib::Parser::DOM(_DWORD *a1@, WXML::DOMLib::Parser *a2@); -// void __usercall WXML::DOMLib::Parser::DOMS(WXML::DOMLib::Parser *a1@, WXML::DOMLib::Parser *a2@); -// int __userpurge WXML::DOMLib::Parser::Parse@(int a1@, WXML::DOMLib::Parser *a2@, char *Str, int a4, int a5, _DWORD *a6); -int __fastcall WXML::DOMLib::WXMLDom::RecordAllPath(_DWORD *a1); -void __fastcall std::deque>::~deque(int a1); -int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps(int *a1, unsigned int *a2, WXML::EXPRLib::Parser *a3, _DWORD *a4, _DWORD *a5, char a6, int a7, char a8, int *a9, char a10, int a11); -int __thiscall WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord(_DWORD *this, int *a2, unsigned int *a3, WXML::EXPRLib::Parser *a4, _DWORD *a5, int *a6, unsigned __int8 a7, int a8); -int __thiscall WXML::DOMLib::WXMLDom::RenderNonDefine(int this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, char a12, unsigned __int8 a13, int a14, int a15); -int __thiscall WXML::DOMLib::WXMLDom::RenderChildren(_DWORD *this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, char a12, unsigned __int8 a13, int a14, int a15); -int __thiscall WXML::DOMLib::WXMLDom::RenderMeAsFunction(_DWORD *this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, int *a12, char a13, int *a14, char a15, unsigned __int8 a16, int a17, int *a18); -void __tcf_0_0(void); // idb -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); -int __fastcall WXML::DOMLib::Machine::Reset(_DWORD *a1); -void WXML::DOMLib::Machine::InitTransitTable(); -void __thiscall WXML::DOMLib::Machine::Machine(int this, int a2); -// int __usercall std::__relocate_a_1>@(int a1@, int a2@, int a3@); -int __thiscall WXML::DOMLib::Machine::Feed(struct _Unwind_Exception *this, char a2, int a3, unsigned __int8 **a4, int a5, int a6); -void __thiscall std::__shared_ptr::operator=(_DWORD *this, _DWORD *a2); -int __thiscall WXML::DOMLib::Tokenizer::GetTokens(_DWORD *this, _DWORD *a2, int a3, _DWORD *a4); -void __thiscall WXML::DOMLib::Tokenizer::Tokenizer(_DWORD *this, char *Str, int a3); -void __tcf_1_4(void); // idb -_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str); -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); -// std::ostream::sentry *__usercall std::operator<<>@(std::ostream::sentry *a1@, char a2@
); -size_t __thiscall std::string::basic_string(void **this, char *Str); -std::ostream::sentry *__cdecl WXML::EXPRLib::OutputAsStringOrKeyWord(int a1, int *a2, int a3, _BYTE *a4); -int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(int *this, int a2, int a3, _BYTE *a4); -// bool __usercall __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>@(char **a1@, int a2@); -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(int *this, int a2); -void __fastcall WXML::EXPRLib::ExprSyntaxTree::~ExprSyntaxTree(int a1); -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, int a2); -int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderCode(int *this, WXML::EXPRLib::Token *a2, int *a3, int *a4, int *a5, int *a6, int *a7, char a8, int a9); -// void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); -int __thiscall WXML::EXPRLib::Parser::Parse(int this, char **a2, int a3, int a4, int a5, unsigned int *a6, char a7); -// void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(_DWORD *a1@); -void __tcf_0_1(void); // idb -void __tcf_0_2(void); // idb -unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size); -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); -const char *__fastcall WXML::EXPRLib::Token::GetTokenName(const char **a1); -const char *__fastcall WXML::EXPRLib::Token::GetLiteral(_DWORD *a1); -void WXML::EXPRLib::Tokenizer::InitTransitTable(); -unsigned int __thiscall WXML::EXPRLib::Tokenizer::Tokenizer(void **this, char *Str, int a3, int a4, int a5); -// _DWORD *__usercall std::__relocate_a_1>@(_DWORD *a1@, _DWORD *a2@, _DWORD *a3@); -int __thiscall WXML::EXPRLib::Tokenizer::GetTokens(int *this, _DWORD *a2, unsigned int *a3); -void __tcf_1_5(void); // idb -size_t __thiscall std::string::basic_string(void **this, char *Str); -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); -int WXML::EXPRLib::TransitTable::GetExprNTType(); -int WXML::EXPRLib::TransitTable::GetAttrListNTType(); -void __thiscall std::vector::_M_move_assign(void *this, int *a2); -// void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int a1@); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=(_DWORD *this, _DWORD *a2); -_DWORD WXML::EXPRLib::TransitTable::Init(WXML::EXPRLib::TransitTable *__hidden this); // idb -void __tcf_0_3(void); // idb -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2); -unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *Src, unsigned int a3); -int __cdecl WXML::StringTemplating::Deal(char *Str, int a2, char **a3, _BYTE *a4); -// _DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4); -// _DWORD *__usercall d_make_name@(_DWORD *a1@, int a2@, int a3@); -// int __usercall d_number@(int a1@); -// int __usercall d_call_offset@(int a1@, int a2@); -// _DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@); -// int __usercall d_discriminator@(int a1@); -// int __usercall d_count_templates_scopes@(int result@, int *a2@, int a3@); -// _DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@); -void __cdecl d_growable_string_callback_adapter(void *Src, size_t Size, int a3); -int sprintf_constprop_0(FILE *a1, int a2, ...); -// BOOL __usercall next_is_type_qual_isra_0@(char *a1@); -// int __usercall d_append_char@(int a1@, char a2@
); -// _DWORD *__usercall d_lookup_template_argument@(int a1@, int a2@); -// size_t __usercall d_append_string@(int a1@, const char *Str@); -// _DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@); -// _DWORD *__usercall d_template_param@(_DWORD *a1@); -// size_t __usercall d_append_num@(int a1@, int a2@); -// _DWORD *__usercall d_source_name@(int a1@); -// _DWORD *__usercall d_substitution@(int a1@, char a2@
); -// int __usercall d_print_java_identifier@(int result@, unsigned int a2@, int a3@); -// int *__usercall d_type@(_DWORD *a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12); -// _DWORD *__usercall d_operator_name@(_DWORD *a1@); -// int __usercall d_parmlist@(_DWORD *a1@); -// _DWORD *__usercall d_bare_function_type@(_DWORD *a1@, int a2@); -// _DWORD *__usercall d_function_type@(int a1@); -// _DWORD *__usercall d_unqualified_name@(_DWORD *a1@); -// int *__usercall d_name@(_DWORD *a1@); -// unsigned int *__usercall d_encoding_part_0@(int a1@, int a2@); -// _DWORD *__usercall d_special_name@(_DWORD *a1@); -// unsigned int *__usercall d_expr_primary@(_DWORD *a1@); -// unsigned int *__usercall d_expression_1@(_DWORD *a1@); -// _DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
); -// int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@); -// unsigned int *__usercall d_template_arg@(_DWORD *a1@); -// _DWORD *__usercall d_template_args_1@(_DWORD *a1@); -// unsigned int __usercall d_print_comp_inner@(unsigned int result@, int a2@); -// int __usercall d_print_comp@(int result@, int a2@); -// int __usercall d_print_mod@(int a1@, _DWORD *a2@); -// unsigned int __usercall d_print_function_type@(unsigned int a1@, int a2@, _DWORD *a3); -// unsigned int __usercall d_print_mod_list@(unsigned int result@, _DWORD *a2@, int a3); -// int __usercall d_print_array_type@(int a1@, int a2@, int **a3); -// int __usercall d_print_conversion@(int a1@, int a2@); -// int __usercall d_print_expr_op@(int a1@, _DWORD *a2@); -// BOOL __usercall d_demangle_callback_constprop_0@(char *a1@, void (__cdecl *a2)(char *, int, int)@, int a3@); -// int __usercall d_print_subexpr@(int a1@, _DWORD *a2@); -// int __usercall d_maybe_print_fold_expression@(int a1@, int a2@); -char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus); -unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, void (__cdecl *a2)(char *, int, int), int a3); -void __do_global_dtors(void); // idb -int __do_global_ctors(); -int __main(); -int _setargv(); -int __stdcall __dyn_tls_dtor(int a1, unsigned int a2, int a3); -int __stdcall __dyn_tls_init(int a1, int a2, int a3); -int __tlregdtor(); -int __cdecl _matherr(struct _exception *Except); -void __cdecl fpreset(); -void __noreturn __report_error(char *Format, ...); -// _DWORD *__usercall mark_section_writable@(const void *a1@); -void _pei386_runtime_relocator(); -int (__cdecl *__cdecl __mingw_raise_matherr(int a1, int a2, double a3, double a4, double a5))(_DWORD); -void __cdecl __mingw_setusermatherr(_UserMathErrorFunctionPointer UserMathErrorFunction); -LONG __stdcall _gnu_exception_handler(_EXCEPTION_POINTERS *a1); -void __mingwthr_run_key_dtors_part_0(); -int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2); -int __cdecl ___w64_mingwthr_remove_key_dtor(int a1); -int __cdecl __mingw_TLScallback(int a1, unsigned int a2); -BOOL __cdecl _ValidateImageBase(int a1); -int __cdecl _FindPESection(int a1, unsigned int a2); -const char *__cdecl _FindPESectionByName(char *Str); -int __cdecl __mingw_GetSectionForAddress(int a1); -int __mingw_GetSectionCount(); -int __cdecl _FindPESectionExec(int a1); -int _GetPEImageBase(); -BOOL __cdecl _IsNonwritableInCurrentImage(int a1); -int __cdecl __mingw_enum_import_library_names(int a1); -int __cdecl __gthr_win32_once(int a1, void (*a2)(void)); -int __cdecl __gthr_win32_key_create(int *a1, int a2); -DWORD __cdecl __gthr_win32_key_delete(DWORD dwTlsIndex); -LPVOID __cdecl __gthr_win32_getspecific(DWORD dwTlsIndex); -DWORD __cdecl __gthr_win32_setspecific(DWORD dwTlsIndex, LPVOID lpTlsValue); -HANDLE __cdecl __gthr_win32_mutex_init_function(_DWORD *a1); -int __cdecl __gthr_win32_mutex_destroy(int a1); -int __cdecl __gthr_win32_mutex_lock(int a1); -BOOL __cdecl __gthr_win32_mutex_trylock(volatile signed __int32 *a1); -BOOL __cdecl __gthr_win32_mutex_unlock(int a1); -HANDLE __cdecl __gthr_win32_recursive_mutex_init_function(_DWORD *a1); -DWORD __cdecl __gthr_win32_recursive_mutex_lock(int a1); -int __cdecl __gthr_win32_recursive_mutex_trylock(int a1); -BOOL __cdecl __gthr_win32_recursive_mutex_unlock(int a1); -int __cdecl __gthr_win32_recursive_mutex_destroy(int a1); -// int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, _DWORD *a2@, int *a3@); -BOOL fc_key_init(); -void fc_key_init_once(); -LPVOID _Unwind_SjLj_GetContext(); -// int __usercall uw_install_context_constprop_0@(int a1@); -// int __usercall _Unwind_ForcedUnwind_Phase2@(_DWORD *a1@, void ***a2@, int *a3@); -void __cdecl _Unwind_SjLj_Register(struct SjLj_Function_Context *lpfctx); -void __cdecl _Unwind_SjLj_Unregister(struct SjLj_Function_Context *lpfctx); -_Unwind_Word __cdecl _Unwind_GetGR(struct _Unwind_Context *lpuctx, int r); -int __cdecl _Unwind_GetCFA(int a1); -void __cdecl _Unwind_SetGR(struct _Unwind_Context *lpuctx, int r, _Unwind_Word v); -int __cdecl _Unwind_GetIP(int a1); -int __cdecl _Unwind_GetIPInfo(int a1, _DWORD *a2); -int __cdecl _Unwind_SetIP(int a1, int a2); -int __cdecl _Unwind_GetLanguageSpecificData(int a1); -int _Unwind_GetRegionStart(); -int _Unwind_FindEnclosingFunction(); -int _Unwind_GetDataRelBase(); -int _Unwind_GetTextRelBase(); -_Unwind_Reason_Code __cdecl _Unwind_SjLj_RaiseException(struct _Unwind_Exception *lpuexcpt); -_Unwind_Reason_Code __cdecl _Unwind_SjLj_ForcedUnwind(struct _Unwind_Exception *lpuexcpt, _Unwind_Stop_Fn pfnstop, void *pdata); -void __cdecl _Unwind_SjLj_Resume(struct _Unwind_Exception *lpuexcpt); -_Unwind_Reason_Code __cdecl _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *lpuexcpt); -void __cdecl _Unwind_DeleteException(struct _Unwind_Exception *lpuexcpt); -_Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn pfntrace, void *lpdata); -void __cdecl emutls_destroy(int *a1); -// _DWORD *__usercall emutls_alloc@(size_t *a1@); -DWORD emutls_init(); -_DWORD *__cdecl __emutls_get_address(size_t *a1); -unsigned int *__cdecl __emutls_register_common(unsigned int *a1, unsigned int a2, unsigned int a3, unsigned int a4); -long double __cdecl __mingw_strtod(unsigned __int8 *a1, unsigned __int8 **a2); -long double __cdecl __mingw_strtof(unsigned __int8 *a1, unsigned __int8 **a2); -wint_t __cdecl btowc(int Ch); -int __cdecl __asctoe64(char *Str, long double *a2); -long double __cdecl strtold(const char *String, char **EndPtr); -unsigned __int64 __cdecl strtoull(const char *String, char **EndPtr, int Radix); -int __cdecl wctob(wint_t WCh); -wctype_t __cdecl wctype(const char *name); -FILE *__cdecl fopen64(const char *FileName, const char *Mode); -int __cdecl fseeko64(FILE *Stream, fpos_t a2, int a3); -fpos_t __cdecl ftello64(FILE *Stream); -__int64 __cdecl lseek64(int FileHandle, __int64 Offset, int Origin); -int __cdecl __mingw_vfprintf(FILE *Stream, char *a2, int *a3); -int __cdecl __mingw_vsnprintf(FILE *a1, int a2, char *a3, int *a4); -int __cdecl __mingw_vsprintf(FILE *a1, char *a2, int *a3); -int *__cdecl __increment_D2A(int *a1); -// int __usercall rvOK_constprop_0_isra_0@(int *a1@, int *a2@, char *a3@, double a4, int a5, int a6, _DWORD *a7); -_DWORD *__cdecl __decrement_D2A(int a1); -int *__cdecl __set_ones_D2A(int *a1, int a2); -int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, void *a5); -int *__cdecl __sum_D2A(int *a1, int *a2); -// unsigned int __usercall __m16m@(unsigned __int16 a1@, int a2@, int a3@); -// BOOL __usercall __eshift_part_0@(__int16 *a1@, int a2@); -__int16 *__cdecl __emovi(int a1, int a2); -unsigned int __cdecl __eaddm(int a1, int a2); -unsigned int __cdecl __esubm(int a1, int a2); -BOOL __cdecl __edivm(int a1, int *a2); -int __cdecl __emulm(int a1, int a2); -__int16 *__cdecl __toe64(_WORD *a1, int a2); -int __cdecl __ecmp(int a1, int a2); -BOOL __cdecl __eshift(__int16 *a1, int a2); -int __cdecl __enormlz(_WORD *a1); -__int16 __cdecl __emdnorm(int a1, int a2, int a3, int a4, int a5, int a6); -int __cdecl __emovo(_WORD *a1, int a2); -__int16 __cdecl __emul(int a1, int a2, int a3); -// int *__usercall __pformat_cvt@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7); -// int __usercall __pformat_putc@(int a1@, int a2@); -// int __usercall __pformat_wputchars@(int a1@, int a2@, int a3@); -// int __usercall __pformat_putchars@(_BYTE *a1@, int a2@, int a3@); -// int __usercall __pformat_puts@(char *a1@, int a2@); -// int __usercall __pformat_emit_inf_or_nan@(int a1@, int a2@, int a3@); -// int __usercall __pformat_xint@(int a1@, __int64 a2, int a3, int a4, int a5); -int __cdecl __pformat_int(__int64 a1, int a2, int a3, int a4); -// int __usercall __pformat_emit_radix_point@(int a1@); -// int __usercall __pformat_emit_float@(int a1@, char *a2@, int a3@, int a4); -// int __usercall __pformat_emit_efloat@(int a1@, char *a2@, int a3@, _DWORD *a4); -// void __usercall __pformat_efloat(_DWORD *a1@, long double a2); -// void __usercall __pformat_float(int a1@, long double a2); -// void __usercall __pformat_gfloat(_DWORD *a1@, long double a2); -// int __usercall __pformat_xldouble@(int a1@, long double a2); -int __cdecl __mingw_pformat(__int16 a1, FILE *a2, int a3, char *a4, int *a5); -int *__cdecl __rv_alloc_D2A(int a1); -int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, int a3); -void __cdecl __freedtoa(_DWORD *a1); -unsigned int __cdecl __quorem_D2A(int a1, int a2); -int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8); -int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5); -int __cdecl __rshift_D2A(int a1, int a2); -int __cdecl __trailz_D2A(int a1); -int __mingw_hexdig_init_D2A(); -int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3); -// void __usercall dtoa_lock(int a1@); -void dtoa_lock_cleanup(void); // idb -int *__cdecl __Balloc_D2A(int a1); -void __cdecl __Bfree_D2A(void *Block); -int *__cdecl __multadd_D2A(int *a1, int a2, int a3); -_DWORD *__cdecl __i2b_D2A(int a1); -int *__cdecl __mult_D2A(int a1, int a2); -int *__cdecl __pow5mult_D2A(int *a1, int a2); -int *__cdecl __lshift_D2A(int *a1, int a2); -int __cdecl __cmp_D2A(int a1, int a2); -int *__cdecl __diff_D2A(int a1, int a2); -long double __cdecl __b2d_D2A(int a1, _DWORD *a2); -int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3); -int __cdecl __strcp_D2A(__int64 a1); -int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5); -long double __cdecl __ratio_D2A(int a1, int a2); -int __cdecl __match_D2A(char **a1, char *a2); -size_t __cdecl __copybits_D2A(char *a1, int Val, size_t Size); -int __cdecl __any_on_D2A(int a1, int a2); -size_t __cdecl strnlen(const char *String, size_t MaxCount); -size_t __cdecl wcsnlen(const wchar_t *Source, size_t MaxCount); -// size_t __cdecl wcsxfrm(wchar_t *Destination, const wchar_t *Source, size_t MaxCount); -// size_t __cdecl wcslen(const wchar_t *String); -// size_t __cdecl wcsftime(wchar_t *Buffer, size_t SizeInWords, const wchar_t *Format, const struct tm *Tm); -// int __cdecl wcscoll(const wchar_t *String1, const wchar_t *String2); -// int __cdecl vfprintf(FILE *const Stream, const char *const Format, va_list ArgList); -// wint_t __cdecl ungetwc(wint_t Character, FILE *Stream); -// int __cdecl ungetc(int Character, FILE *Stream); -// wint_t __cdecl towupper(wint_t C); -// wint_t __cdecl towlower(wint_t C); -// size_t __cdecl strxfrm(char *Destination, const char *Source, size_t MaxCount); -// int __cdecl strncmp(const char *Str1, const char *Str2, size_t MaxCount); -// size_t __cdecl strlen(const char *Str); -// size_t __cdecl strftime(char *Buffer, size_t SizeInBytes, const char *Format, const struct tm *Tm); -// char *__cdecl strerror(int ErrorMessage); -// int __cdecl strcoll(const char *String1, const char *String2); -// int __cdecl strcmp(const char *Str1, const char *Str2); -// _crt_signal_t __cdecl signal(int Signal, _crt_signal_t Function); -// int __cdecl setvbuf(FILE *Stream, char *Buffer, int Mode, size_t Size); -// char *__cdecl setlocale(int Category, const char *Locale); -// void *__cdecl realloc(void *Block, size_t Size); -// wint_t __cdecl putwc(wchar_t Character, FILE *Stream); -// int __cdecl putc(int Character, FILE *Stream); -// void *__cdecl memset(void *, int Val, size_t Size); -// void *__cdecl memmove(void *, const void *Src, size_t Size); -// void *__cdecl memcpy(void *, const void *Src, size_t Size); -// int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size); -// void *__cdecl memchr(const void *Buf, int Val, size_t MaxCount); -// void *__cdecl malloc(size_t Size); -// struct lconv *__cdecl localeconv(); -// int __cdecl iswctype(wint_t C, wctype_t Type); -// int __cdecl isupper(int C); -// int __cdecl isspace(int C); -// int __cdecl islower(int C); -// wint_t __cdecl getwc(FILE *Stream); -// int __cdecl getc(FILE *Stream); -// size_t __cdecl fwrite(const void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); -// int __cdecl fsetpos(FILE *Stream, const fpos_t *Position); -// void __cdecl free(void *Block); -// size_t __cdecl fread(void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); -// int __cdecl fputs(const char *Buffer, FILE *Stream); -// int __cdecl fputc(int Character, FILE *Stream); -// int fprintf(FILE *const Stream, const char *const Format, ...); -// FILE *__cdecl fopen(const char *FileName, const char *Mode); -// char *__cdecl fgets(char *Buffer, int MaxCount, FILE *Stream); -// int __cdecl fgetpos(FILE *Stream, fpos_t *Position); -// int __cdecl fflush(FILE *Stream); -// int __cdecl fclose(FILE *Stream); -// void __cdecl __noreturn exit(int Code); -// void *__cdecl calloc(size_t Count, size_t Size); -// void __cdecl __noreturn abort(); -// int __cdecl write(int FileHandle, const void *Buf, unsigned int MaxCharCount); -// int __cdecl _strnicmp(const char *String1, const char *String2, size_t MaxCount); -// int __cdecl read(int FileHandle, void *DstBuf, unsigned int MaxCharCount); -// _onexit_t __cdecl _onexit(_onexit_t Func); -// void __cdecl _initterm(_PVFV *First, _PVFV *Last); -// int __cdecl _fileno(FILE *Stream); -// int __cdecl fileno(FILE *Stream); -// __int64 __cdecl _filelengthi64(int FileHandle); -// FILE *__cdecl fdopen(int FileHandle, const char *Format); -// int *__cdecl _errno(); -// int __cdecl close(int FileHandle); -// void __cdecl _cexit(); -// int __cdecl _amsg_exit(_DWORD); weak -// void __cdecl __setusermatherr(_UserMathErrorFunctionPointer UserMathErrorFunction); -// void __cdecl __set_app_type(_crt_app_type Type); -// int *__cdecl __p__fmode(); -// int *__cdecl __p__commode(); -// char **__cdecl __p__acmdln(); -// int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak -int __cdecl __mbrtowc_cp(LPWSTR lpWideCharStr, BYTE *lpMultiByteStr, int a3, int *a4, UINT CodePage, unsigned int a6); -size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State); -size_t __cdecl mbsrtowcs(wchar_t *Dest, const char **PSrc, size_t Count, mbstate_t *State); -size_t __cdecl mbrlen(const char *Ch, size_t SizeInBytes, mbstate_t *State); -int __cdecl __wcrtomb_cp(LPSTR lpMultiByteStr, WCHAR a2, UINT CodePage, int cbMultiByte); -size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State); -size_t __cdecl wcsrtombs(char *Dest, const wchar_t **PSource, size_t Count, mbstate_t *State); -FILE *__cdecl __acrt_iob_func(unsigned int Ix); -_invalid_parameter_handler __cdecl _get_invalid_parameter_handler(); -_invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler Handler); -int __cdecl mingw_rand_s(int a1); -int __cdecl init_rand_s(int a1); -void __cdecl _lock_file(FILE *Stream); -void __cdecl _unlock_file(FILE *Stream); -int __cdecl ___mb_cur_max_func(); -int msvcrt___lc_codepage_func(); -int setlocale_codepage_hack(); -int init_codepage_func(); -unsigned int __cdecl ___lc_codepage_func(); -// char *__cdecl strchr(const char *Str, int Val); -// int __cdecl atoi(const char *String); -// void __cdecl _unlock(FILE *Stream); weak -// int __cdecl _lock(_DWORD); weak -int __cdecl __mingwthr_key_dtor(int a1, int a2); -int __cdecl _txnal_cow_string_D1(); -void __cdecl __noreturn _txnal_cow_string_c_str(); -void __cdecl __noreturn _txnal_sso_string_c_str(); -char *__cdecl _txnal_logic_error_get_msg(char *a1); -void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *Block); -char *__cdecl _txnal_runtime_error_get_msg(char *a1); -void __cdecl _txnal_cow_string_C1_for_exceptions(struct _Unwind_Exception **a1); -int printf(char *a1, ...); -int sprintf(char *a1, char *a2, ...); -void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1); -void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1); -void __cdecl _ZGTtNSt11logic_errorC2EPKc(struct _Unwind_Exception **a1); -void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); -void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1); -int _ZGTtNSt11logic_errorD2Ev(); -void __cdecl _ZGTtNSt11range_errorC2EPKc(struct _Unwind_Exception **a1); -void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); -void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1); -int _ZGTtNSt11range_errorD2Ev(); -void __cdecl _ZGTtNSt12domain_errorC2EPKc(struct _Unwind_Exception **a1); -void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); -void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1); -int _ZGTtNSt12domain_errorD2Ev(); -void __cdecl _ZGTtNSt12length_errorC2EPKc(struct _Unwind_Exception **a1); -void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); -void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1); -int _ZGTtNSt12length_errorD2Ev(); -void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(struct _Unwind_Exception **a1); -void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); -void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1); -int _ZGTtNSt12out_of_rangeD2Ev(); -void __cdecl _ZGTtNSt13runtime_errorC2EPKc(struct _Unwind_Exception **a1); -void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); -void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1); -int _ZGTtNSt13runtime_errorD2Ev(); -void __cdecl _ZGTtNSt14overflow_errorC2EPKc(struct _Unwind_Exception **a1); -void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); -void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1); -int _ZGTtNSt14overflow_errorD2Ev(); -void __cdecl _ZGTtNSt15underflow_errorC2EPKc(struct _Unwind_Exception **a1); -void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); -void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1); -int _ZGTtNSt15underflow_errorD2Ev(); -void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(struct _Unwind_Exception **a1); -void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **a1); -void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1); -int _ZGTtNSt16invalid_argumentD2Ev(); -// int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@); -// char *__usercall parse_lsda_header@(int a1@, char *a2@, int a3@); -// int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4); -// int __usercall base_of_encoded_value@(char a1@); -void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, void (**a2)(void)); -// char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4); -void __cdecl __noreturn __cxxabiv1::__terminate(void (*)(void)); // idb -void __cdecl __noreturn __cxxabiv1::__unexpected(void (*)(void)); // idb -void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *Block); -void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1); -void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *__hidden this); // idb -void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *Block); -void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1); -void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *__hidden this); // idb -void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1); -void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *__hidden this); // idb -_DWORD *__cdecl `anonymous namespace'::get_locale_mutex(); -void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1); -void __cdecl `anonymous namespace'::io_error_category::~io_error_category(_anonymous_namespace_::io_error_category *__hidden this); // idb -void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *Block); -void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *Block); -// void __usercall `anonymous namespace'::pool::free(int a1@); -void __spoils `anonymous namespace'::pool::allocate(); -HANDLE `anonymous namespace'::init(); -int __stdcall zcc::shared_ptr::shared_ptr(void *Block); // idb -int __stdcall zcc::shared_ptr::shared_ptr(void *Block); // idb -int __stdcall zcc::shared_ptr::shared_ptr(void *Block); // idb -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); -void __thiscall zcc::shared_ptr,std::allocator>>::shared_ptr(_DWORD *this, int a2); -void __fastcall WXML::NameAllocator::~NameAllocator(int a1); -void __cdecl WXML::DOMLib::ParseException::~ParseException(void *); // idb -void __cdecl WXML::DOMLib::RenderException::~RenderException(void *); // idb -int __fastcall WXML::DOMLib::Token::ToAttrContent[abi:cxx11](int a1); -int __cdecl WXML::DOMLib::Token::GetTemplateContent(int *a1, unsigned __int8 **a2); -char __cdecl WXML::DOMLib::Token::IsValidVariableName(char **a1); -// bool __userpurge WXML::DOMLib::Token::IsMatch@(int a1@, WXML::DOMLib::Token *this, const char *a3); -unsigned __int8 **__fastcall WXML::DOMLib::Token::ToString[abi:cxx11](int a1); -_DWORD *__thiscall WXML::DOMLib::Token::Token(_DWORD *this, int a2); -// void __userpurge WXML::DOMLib::Token::Token(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3); -// void __userpurge WXML::DOMLib::Token::Token(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3); -void __fastcall WXML::DOMLib::Token::~Token(int a1); -_DWORD WXML::DOMLib::Parser::Parser(WXML::DOMLib::Parser *__hidden this); // idb -void __fastcall WXML::DOMLib::Parser::~Parser(int a1); -char __thiscall WXML::DOMLib::WXMLDom::IfHasItsElse(_DWORD *this, signed int a2, int *a3); -int __cdecl WXML::DOMLib::WXMLDom::ToCamelStyle(int a1, int a2); -char __fastcall WXML::DOMLib::WXMLDom::HasSpAttrPrefix(int a1); -int __thiscall WXML::DOMLib::WXMLDom::MarkIfHasDescendant(int this, int *a2); -void __thiscall WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(_DWORD *this, int *a2); -unsigned int __thiscall WXML::DOMLib::WXMLDom::Print(_DWORD *this, int a2, char *a3, char *a4); -void __thiscall WXML::DOMLib::WXMLDom::PrintMe(int this, int a2, char *a3, char *a4); -int __fastcall WXML::DOMLib::WXMLDom::WXMLDom(int a1); -std::ostream::sentry *__thiscall WXML::DOMLib::StrCache::RenderPathDefine(_DWORD *this, int a2); -void __thiscall WXML::DOMLib::StrCache::Insert(_DWORD *this, int a2); -int __thiscall WXML::DOMLib::StrCache::GetStrID(_DWORD *this, int a2); -void __fastcall WXML::EXPRLib::NonTerminal::~NonTerminal(void *a1); -void __fastcall WXML::EXPRLib::EPS::~EPS(void *a1); -// int __userpurge WXML::EXPRLib::Token::Token@(int *a1@, WXML::EXPRLib::Token *this, const WXML::EXPRLib::Token *a3); -int __fastcall WXML::EXPRLib::Token::Token(_DWORD *a1); -int __fastcall WXML::EXPRLib::Action::Action(int a1); -void __fastcall WXML::EXPRLib::Action::~Action(void **a1); -void __fastcall WXML::EXPRLib::Action::~Action(void **a1); -void __thiscall WXML::EXPRLib::Action::~Action(void **ecx0, WXML::EXPRLib::Action *this); -void __fastcall WXML::EXPRLib::Parser::~Parser(int a1); -int __fastcall WXML::EXPRLib::Terminal::Terminal(int a1); -void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1); -void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1); -void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this); -void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this); -void __thiscall night::NSASTParse::NSASTParse(int this, int a2, int a3, int a4); -void __fastcall night::NSASTParse::~NSASTParse(void **a1); -void __fastcall night::NSCompileJs::~NSCompileJs(int a1, int a2); -// void __userpurge night::ns_sourcemap::ns_sourcemap(int a1@, night::ns_sourcemap *this, const night::ns_sourcemap *a3); -void __fastcall night::ns_sourcemap::~ns_sourcemap(void **a1); -bool __cdecl night::NSToken::rw_cb_number(night::NSToken *this, _BYTE *a2); -char __cdecl night::NSToken::tk_is_comment2(night::NSToken *this, night::NSStream *a2); -bool __cdecl night::NSToken::tk_is_whitespace(night::NSToken *this); -char __cdecl night::NSToken::tk_is_valid_op_str(night::NSToken *this, int a2); -bool __cdecl night::NSToken::tk_is_not_line_break(night::NSToken *this); -_DWORD *__thiscall night::NSToken::get_tokens_for_sourcemap(_DWORD *this, void **a2, _DWORD *a3); -int __cdecl night::NSToken::tk_is_var(night::NSToken *this); -void __fastcall night::NSToken::~NSToken(int a1); -void **__thiscall night::ns_node::debug_no_space[abi:cxx11](void **this, const char **a2); -void __fastcall night::NSStream::~NSStream(void **a1); -void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(int *a1); -int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); -int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4); -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4); -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); -int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); -int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4); -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4); -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1); -int __cdecl __gnu_cxx::__concat_size_t(char *a1, unsigned int a2, unsigned int a3); -int __cdecl __gnu_cxx::__snprintf_lite(char *a1, unsigned int a2, const char *a3, char *a4); -int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1); -int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2); -int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1); -int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1); -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount); -size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount); -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, fpos_t a3, int a4, int a5); -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, fpos_t a3, int a4, int a5, int a6); -int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, int Character); -int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2); -int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1); -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *a2); -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *a2); -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block); -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1); -int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2); -int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1); -int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2); -int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1); -wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1); -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int a2, int a3); -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int a2, int a3); -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, fpos_t a3, int a4, int a5); -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, fpos_t a3, int a4, int a5, int a6); -__int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character); -int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character); -wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1); -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *a2); -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *a2); -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block); -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1); -int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2); -void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1); -void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1); -void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1); -void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1); -void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1); -void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1); -void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1); -void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *); // idb -void __noreturn __gnu_cxx::__verbose_terminate_handler(void); // idb -void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void); // idb -void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void); // idb -void __gnu_cxx::__freeres(void); -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); -// char __userpurge __cxxabiv1::__class_type_info::__do_catch@(_DWORD *a1@, __cxxabiv1::__class_type_info *this, const std::type_info *a3, void **a4, unsigned int a5); -bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int a2, int a3, _DWORD *a4); -// int __userpurge __cxxabiv1::__class_type_info::__do_upcast@(int *a1@, __cxxabiv1::__class_type_info *this, const __class_type_info *a3, void **a4); -int __thiscall __cxxabiv1::__class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8); -int __stdcall __cxxabiv1::__class_type_info::__do_find_public_src(__cxxabiv1::__class_type_info *this, const __cxxabiv1::__class_type_info *a2, const void *a3, const __cxxabiv1::__class_type_info *a4, const void *a5); -char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int a2, int a3, _DWORD *a4); -int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8); -// int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@(int a1@, __cxxabiv1::__si_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6); -int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); -int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, _DWORD *a7, int *a8); -// int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@(_DWORD *a1@, __cxxabiv1::__vmi_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6); -const char *`anonymous namespace'::io_error_category::name(); -int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3); -_anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition(_anonymous_namespace_::system_error_category *this, int a2); -const char *`anonymous namespace'::system_error_category::name(); -const char *`anonymous namespace'::generic_error_category::name(); -_DWORD *__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11](_DWORD *this, int a2, int ErrorMessage); -int WXML::EXPRLib::NonTerminal::GetClass(); -int WXML::EXPRLib::EPS::GetClass(); -int WXML::EXPRLib::Action::GetClass(); -int WXML::EXPRLib::Terminal::GetClass(); -const char *__gnu_cxx::__concurrence_lock_error::what(); -const char *__gnu_cxx::__concurrence_unlock_error::what(); -int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2); -int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3); -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD **a2, unsigned int a3); -int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3); -int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); -int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD **a2, unsigned int a3); -int __thiscall std::wstring::find_first_of(int *this, __int16 a2, unsigned int a3); -void *__thiscall std::wstring::get_allocator(void *this, int a2); -unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); -int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3); -int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD **a2, unsigned int a3); -int __thiscall std::wstring::find_last_not_of(_DWORD *this, __int16 a2, unsigned int a3); -int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int a3); -int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4); -int __thiscall std::wstring::find_first_not_of(_DWORD *this, _DWORD *a2, unsigned int a3); -int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3); -int __thiscall std::wstring::at(int *this, unsigned int a2); -int __fastcall std::wstring::end(_DWORD *a1); -int __fastcall std::wstring::_Rep::_M_is_leaked(int a1); -bool __fastcall std::wstring::_Rep::_M_is_shared(int a1); -int __fastcall std::wstring::back(_DWORD *a1); -int __fastcall std::wstring::cend(_DWORD *a1); -int __thiscall std::wstring::copy(int *this, _WORD *a2, unsigned int a3, unsigned int a4); -int __fastcall std::wstring::data(int a1); -int __thiscall std::wstring::find(int *this, wchar_t *String, int a3); -int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4); -int __thiscall std::wstring::find(int *this, _WORD **a2, unsigned int a3); -int __thiscall std::wstring::find(int *this, __int16 a2, unsigned int a3); -_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); -int __fastcall std::wstring::size(_DWORD *a1); -int __fastcall std::wstring::begin(int a1); -int __fastcall std::wstring::c_str(int a1); -_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2); -bool __fastcall std::wstring::empty(_DWORD *a1); -int __fastcall std::wstring::front(int a1); -int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3); -int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4); -int __thiscall std::wstring::rfind(_DWORD *this, _WORD **a2, unsigned int a3); -int __thiscall std::wstring::rfind(_DWORD *this, __int16 a2, unsigned int a3); -int __fastcall std::wstring::_M_rep(_DWORD *a1); -int __fastcall std::wstring::cbegin(int a1); -int __fastcall std::wstring::length(_DWORD *a1); -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4); -int __fastcall std::wstring::_M_data(int a1); -int __fastcall std::wstring::_M_iend(_DWORD *a1); -int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String); -int __thiscall std::wstring::compare(_DWORD *this, _WORD **a2); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); -int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _WORD *a4, unsigned int a5); -int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _WORD **a4); -int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6); -_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2); -unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3); -unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3); -int __fastcall std::wstring::capacity(_DWORD *a1); -int std::wstring::max_size(); -int __fastcall std::wstring::_M_ibegin(int a1); -int __thiscall std::wstring::operator[](_DWORD *this, int a2); -int __fastcall std::istream::gcount(int a1); -int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1); -int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1); -// int __userpurge std::string::_M_disjunct@(_DWORD *a1@, std::string *this, const char *a3); -// int __userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4); -// int __userpurge std::string::find_last_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); -// int __userpurge std::string::find_last_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); -// int __userpurge std::string::find_last_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); -// int __userpurge std::string::find_first_of@(int *a1@, std::string *this, const char *a3, unsigned int a4); -// int __userpurge std::string::find_first_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); -// int __userpurge std::string::find_first_of@(int *a1@, std::string *this, const std::string *a3, unsigned int a4); -// char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); -void *__thiscall std::string::get_allocator(void *ecx0, std::string *this); -// char *__userpurge std::string::_M_check_length@(_DWORD *a1@, std::string *this, unsigned int a3, std::length_error *a4, const char *a5); -// int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const char *a3, unsigned int a4); -// int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); -// int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const std::string *a3, unsigned int a4); -// int __userpurge std::string::find_last_not_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); -// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const char *a3, unsigned int a4); -// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); -// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const std::string *a3, unsigned int a4); -// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); -// char *__userpurge std::string::at@(int *a1@, std::string *this, unsigned int a3); -int __fastcall std::string::end(_DWORD *a1); -int __fastcall std::string::_Rep::_M_is_leaked(int a1); -bool __fastcall std::string::_Rep::_M_is_shared(int a1); -int __fastcall std::string::back(_DWORD *a1); -int __fastcall std::string::cend(_DWORD *a1); -// int __userpurge std::string::copy@(_DWORD *a1@, std::string *this, size_t a3, unsigned int a4, unsigned int a5); -int __fastcall std::string::data(int a1); -// int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4); -// int __userpurge std::string::find@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5); -// int __userpurge std::string::find@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); -// char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); -_DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this); -int __fastcall std::string::size(_DWORD *a1); -int __fastcall std::string::begin(int a1); -int __fastcall std::string::c_str(int a1); -_DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this); -bool __fastcall std::string::empty(_DWORD *a1); -int __fastcall std::string::front(int a1); -// int __userpurge std::string::rfind@(int *a1@, std::string *this, char *a3, unsigned int a4); -// int __userpurge std::string::rfind@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5); -// int __userpurge std::string::rfind@(int *a1@, std::string *this, const std::string *a3, unsigned int a4); -// int __userpurge std::string::rfind@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); -int __fastcall std::string::_M_rep(_DWORD *a1); -int __fastcall std::string::cbegin(int a1); -int __fastcall std::string::length(_DWORD *a1); -_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this); -int *__thiscall std::string::substr(int *ecx0, std::string *this, unsigned int a3, unsigned int a4); -int __fastcall std::string::_M_data(int a1); -int __fastcall std::string::_M_iend(_DWORD *a1); -// int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3); -// int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3); -// int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, char *Str, const char *a5); -// int __userpurge std::string::compare@(int *a1@, std::string *this, size_t a3, void *Buf2, const char *a5, unsigned int a6); -// int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, const void **a4, const std::string *a5); -// int __userpurge std::string::compare@(_DWORD *a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, unsigned int a6, unsigned int a7); -_DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this); -// std::string *__userpurge std::string::_M_check@(_DWORD *a1@, std::string *this, const char *a3, const char *a4); -// unsigned int __userpurge std::string::_M_limit@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); -int __fastcall std::string::capacity(_DWORD *a1); -int std::string::max_size(); -int __fastcall std::string::_M_ibegin(int a1); -int __thiscall std::string::operator[](_DWORD *this, int a2); -const char *std::bad_typeid::what(); -int __fastcall std::error_code::default_error_condition(int a1); -int __fastcall std::moneypunct::neg_format(_DWORD *a1); -int __fastcall std::moneypunct::pos_format(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); -int __fastcall std::moneypunct::frac_digits(_DWORD *a1); -int __fastcall std::moneypunct::decimal_point(_DWORD *a1); -int __fastcall std::moneypunct::do_neg_format(int a1); -int __fastcall std::moneypunct::do_pos_format(int a1); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_frac_digits(int a1); -int __fastcall std::moneypunct::do_decimal_point(int a1); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::neg_format(_DWORD *a1); -int __fastcall std::moneypunct::pos_format(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); -int __fastcall std::moneypunct::frac_digits(_DWORD *a1); -int __fastcall std::moneypunct::decimal_point(_DWORD *a1); -int __fastcall std::moneypunct::do_neg_format(int a1); -int __fastcall std::moneypunct::do_pos_format(int a1); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_frac_digits(int a1); -int __fastcall std::moneypunct::do_decimal_point(int a1); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::neg_format(_DWORD *a1); -int __fastcall std::moneypunct::pos_format(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); -int __fastcall std::moneypunct::frac_digits(_DWORD *a1); -int __fastcall std::moneypunct::decimal_point(_DWORD *a1); -int __fastcall std::moneypunct::do_neg_format(int a1); -int __fastcall std::moneypunct::do_pos_format(int a1); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_frac_digits(int a1); -int __fastcall std::moneypunct::do_decimal_point(int a1); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::neg_format(_DWORD *a1); -int __fastcall std::moneypunct::pos_format(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); -int __fastcall std::moneypunct::frac_digits(_DWORD *a1); -int __fastcall std::moneypunct::decimal_point(_DWORD *a1); -int __fastcall std::moneypunct::do_neg_format(int a1); -int __fastcall std::moneypunct::do_pos_format(int a1); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_frac_digits(int a1); -int __fastcall std::moneypunct::do_decimal_point(int a1); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2); -void __thiscall std::__timepunct::_M_put(const char **this, char *Buffer, size_t SizeInBytes, char *Format, struct tm *Tm); -_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2); -void __thiscall std::__timepunct::_M_put(const char **this, wchar_t *Buffer, size_t SizeInWords, wchar_t *Format, struct tm *Tm); -_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2); -struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1); -struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1); -int __fastcall std::runtime_error::what(int a1); -bool __fastcall std::__basic_file::is_open(_DWORD *a1); -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, std::string *a3, int a4); -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, std::string *a3, int a4, int a5, int a6); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _BYTE **a6); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, _BYTE **a2, int a3); -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _WORD **a6); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, _BYTE **a2, int a3); -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(int *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, int *a7, void **a8); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, _DWORD *a7, int *a8); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, _DWORD *a7, long double *a8); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, __int64 a2, int a3, int a4, unsigned __int8 a5, int a6, int *a7, long double *a8); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int *a9); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, int a7); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, std::string *a7); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, int a7); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, _DWORD *a7); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7); -const char *_ZGTtNKSt13bad_exception4whatEv(); -bool __fastcall std::filebuf::is_open(int a1); -bool __fastcall std::wfilebuf::is_open(int a1); -int __fastcall std::fstream::rdbuf(int a1); -bool __fastcall std::fstream::is_open(int a1); -int __fastcall std::wfstream::rdbuf(int a1); -bool __fastcall std::wfstream::is_open(int a1); -int __fastcall std::wistream::gcount(int a1); -int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1); -int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1); -long double std::random_device::_M_getentropy(); -int __fastcall std::ifstream::rdbuf(int a1); -bool __fastcall std::ifstream::is_open(int a1); -int __fastcall std::wifstream::rdbuf(int a1); -bool __fastcall std::wifstream::is_open(int a1); -int __fastcall std::ofstream::rdbuf(int a1); -bool __fastcall std::ofstream::is_open(int a1); -int __fastcall std::wofstream::rdbuf(int a1); -bool __fastcall std::wofstream::is_open(int a1); -int __fastcall std::streambuf::gptr(int a1); -int __fastcall std::streambuf::pptr(int a1); -int __fastcall std::streambuf::eback(int a1); -int __fastcall std::streambuf::egptr(int a1); -int __fastcall std::streambuf::epptr(int a1); -int __fastcall std::streambuf::pbase(int a1); -volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2); -int __fastcall std::wstreambuf::gptr(int a1); -int __fastcall std::wstreambuf::pptr(int a1); -int __fastcall std::wstreambuf::eback(int a1); -int __fastcall std::wstreambuf::egptr(int a1); -int __fastcall std::wstreambuf::epptr(int a1); -int __fastcall std::wstreambuf::pbase(int a1); -volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2); -int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); -int __thiscall std::__codecvt_utf8_base::do_in(int this, int a2, unsigned __int8 *a3, int a4, unsigned __int8 **a5, int a6, int a7, _DWORD *a8); -int __thiscall std::__codecvt_utf8_base::do_out(int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5); -int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); -int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); -int __thiscall std::__codecvt_utf8_base::do_out(int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5); -int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); -int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); -int __thiscall std::__codecvt_utf8_base::do_out(int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5); -// char __userpurge std::__iosfail_type_info::__do_upcast@(int *a1@, std::__iosfail_type_info *this, const __cxxabiv1::__class_type_info *a3, void **a4); -bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int a2); -int __fastcall std::istreambuf_iterator::_M_get(int a1); -bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2); -int __fastcall std::istreambuf_iterator::_M_get(int a1); -int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); -int __thiscall std::__codecvt_utf16_base::do_in(_DWORD *this, int a2, int a3, int a4, int *a5, int a6, int a7, _DWORD *a8); -int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _WORD *a6, int a7, _DWORD *a8); -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); -int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); -int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, int *a8); -int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _WORD *a6, int a7, int *a8); -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); -int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); -int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, int *a8); -int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _WORD *a6, int a7, int *a8); -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); -const char *std::bad_array_new_length::what(); -int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); -int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, unsigned int *a6, unsigned int *a7, unsigned int **a8); -int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned int a5); -int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); -int __thiscall std::__codecvt_utf8_utf16_base::do_in(_DWORD *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); -int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned int a5); -int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); -int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); -int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned int a5); -_DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3); -void *__thiscall std::_V2::error_category::_M_message(void *ecx0, std::_V2::error_category *this, int a3); -// bool __userpurge std::_V2::error_category::equivalent@(int a1@, std::_V2::error_category *this, const std::error_code *a3, int a4); -int __thiscall std::_V2::error_category::equivalent(void *this, int a2, _DWORD *a3); -std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition(std::_V2::error_category *this, int a2); -BOOL __thiscall std::map::count(_DWORD *this, int a2); -BOOL __thiscall std::map::count(_DWORD *this, int a2); -unsigned __int8 *__thiscall std::ctype::do_tolower(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *a3); -int __thiscall std::ctype::do_tolower(_DWORD *this, int a2); -unsigned __int8 *__thiscall std::ctype::do_toupper(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *a3); -int __thiscall std::ctype::do_toupper(_DWORD *this, int a2); -int __fastcall std::ctype::_M_widen_init(int a1); -int __fastcall std::ctype::_M_narrow_init(int a1); -_BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *a3, void *a4); -int __thiscall std::ctype::narrow(_BYTE *this, int a2, int a3); -_BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3); -int __stdcall std::ctype::do_widen(unsigned __int8 a1); -_BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4); -int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2); -wint_t *__thiscall std::ctype::do_scan_is(_WORD *this, unsigned __int16 a2, wint_t *a3, unsigned int a4); -unsigned int __stdcall std::ctype::do_tolower(wint_t *a1, unsigned int a2); -wint_t __stdcall std::ctype::do_tolower(wint_t C); -unsigned int __stdcall std::ctype::do_toupper(wint_t *a1, unsigned int a2); -wint_t __stdcall std::ctype::do_toupper(wint_t C); -wint_t *__thiscall std::ctype::do_scan_not(_WORD *this, unsigned __int16 a2, wint_t *a3, unsigned int a4); -int __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1); -unsigned int __thiscall std::ctype::do_is(char *this, wint_t *a2, unsigned int a3, _WORD *a4); -int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16 a2, wint_t C); -unsigned __int8 *__thiscall std::ctype::do_widen(_WORD *this, unsigned __int8 *a2, unsigned __int8 *a3, int a4); -int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2); -unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, int a5); -int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3); -int __fastcall std::locale::id::_M_id(volatile signed __int32 *a1); -int __thiscall std::locale::name[abi:cxx11](int this, int a2); -int *__thiscall std::locale::name(int *ecx0, std::locale *this); -// _DWORD *__userpurge std::locale::facet::_M_cow_shim@(volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3); -// _DWORD *__userpurge std::locale::facet::_M_sso_shim@(volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3); -int __fastcall std::locale::facet::_M_remove_reference(volatile signed __int32 *a1); -BOOL __thiscall std::locale::operator==(void *this, int a2); -unsigned int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3); -unsigned int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3); -int __fastcall std::moneypunct::neg_format(_DWORD *a1); -int __fastcall std::moneypunct::pos_format(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); -int __fastcall std::moneypunct::frac_digits(_DWORD *a1); -int __fastcall std::moneypunct::decimal_point(_DWORD *a1); -int __fastcall std::moneypunct::do_neg_format(int a1); -int __fastcall std::moneypunct::do_pos_format(int a1); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_frac_digits(int a1); -int __fastcall std::moneypunct::do_decimal_point(int a1); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::neg_format(_DWORD *a1); -int __fastcall std::moneypunct::pos_format(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); -int __fastcall std::moneypunct::frac_digits(_DWORD *a1); -int __fastcall std::moneypunct::decimal_point(_DWORD *a1); -int __fastcall std::moneypunct::do_neg_format(int a1); -int __fastcall std::moneypunct::do_pos_format(int a1); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_frac_digits(int a1); -int __fastcall std::moneypunct::do_decimal_point(int a1); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::neg_format(_DWORD *a1); -int __fastcall std::moneypunct::pos_format(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); -int __fastcall std::moneypunct::frac_digits(_DWORD *a1); -int __fastcall std::moneypunct::decimal_point(_DWORD *a1); -int __fastcall std::moneypunct::do_neg_format(int a1); -int __fastcall std::moneypunct::do_pos_format(int a1); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_frac_digits(int a1); -int __fastcall std::moneypunct::do_decimal_point(int a1); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::neg_format(_DWORD *a1); -int __fastcall std::moneypunct::pos_format(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); -int __fastcall std::moneypunct::frac_digits(_DWORD *a1); -int __fastcall std::moneypunct::decimal_point(_DWORD *a1); -int __fastcall std::moneypunct::do_neg_format(int a1); -int __fastcall std::moneypunct::do_pos_format(int a1); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_frac_digits(int a1); -int __fastcall std::moneypunct::do_decimal_point(int a1); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); -int __fastcall std::moneypunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); -int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int a2); -bool __fastcall std::string::_M_is_local(_DWORD *a1); -unsigned int __thiscall std::string::find_last_of(int *this, char *Str, unsigned int a3); -unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); -int __thiscall std::string::find_last_of(int *this, int a2, unsigned int a3); -int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3); -int __fastcall std::string::_M_local_data(int a1); -unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, unsigned int a3); -unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount); -int __thiscall std::string::find_first_of(_DWORD *this, int a2, unsigned int a3); -char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3); -void *__thiscall std::string::get_allocator(void *this, int a2); -unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); -int __fastcall std::string::_M_get_allocator(int a1); -int __thiscall std::string::find_last_not_of(int *this, char *Str, unsigned int a3); -int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); -int __thiscall std::string::find_last_not_of(int *this, int a2, unsigned int a3); -int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3); -unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, unsigned int a3); -unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); -int __thiscall std::string::find_first_not_of(int *this, int a2, unsigned int a3); -int __thiscall std::string::find_first_not_of(_DWORD *this, char a2, unsigned int a3); -unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2); -int __fastcall std::string::end(_DWORD *a1); -int __fastcall std::string::back(_DWORD *a1); -int __fastcall std::string::cend(_DWORD *a1); -size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, size_t a3, unsigned int a4); -int __fastcall std::string::data(int a1); -unsigned int __thiscall std::string::find(int *this, char *Str, int a3); -unsigned int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size); -unsigned int __thiscall std::string::find(int *this, int a2, int a3); -char *__thiscall std::string::find(int *this, char a2, unsigned int a3); -_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2); -int __fastcall std::string::size(int a1); -int __fastcall std::string::begin(int a1); -int __fastcall std::string::c_str(int a1); -_DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2); -bool __fastcall std::string::empty(int a1); -int __fastcall std::string::front(int a1); -int __thiscall std::string::rfind(int *this, char *Str, int a3); -int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size); -int __thiscall std::string::rfind(int *this, int a2, unsigned int a3); -int __thiscall std::string::rfind(int *this, char a2, unsigned int a3); -int __fastcall std::string::cbegin(int a1); -int __fastcall std::string::length(int a1); -_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::string::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4); -int __fastcall std::string::_M_data(int a1); -int __thiscall std::string::compare(int this, char *Str); -int __thiscall std::string::compare(int this, int a2); -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, char *Str); -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, void *Buf2, unsigned int a5); -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, int a4); -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); -_DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2); -unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int a2, const char *a3); -unsigned int __thiscall std::string::_M_limit(_DWORD *this, int a2, unsigned int a3); -int __fastcall std::string::capacity(_DWORD *a1); -int std::string::max_size(); -int __thiscall std::string::operator[](_DWORD *this, int a2); -bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2); -bool __fastcall std::wstring::_M_is_local(_DWORD *a1); -int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3); -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, unsigned int a3); -int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3); -int __fastcall std::wstring::_M_local_data(int a1); -int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); -int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, unsigned int a3); -int __thiscall std::wstring::find_first_of(_DWORD *this, __int16 a2, unsigned int a3); -void *__thiscall std::wstring::get_allocator(void *this, int a2); -unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); -int __fastcall std::wstring::_M_get_allocator(int a1); -int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3); -int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, unsigned int a3); -int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3); -int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int a3); -int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4); -int __thiscall std::wstring::find_first_not_of(int *this, _DWORD *a2, unsigned int a3); -int __thiscall std::wstring::find_first_not_of(_DWORD *this, __int16 a2, unsigned int a3); -int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); -int __fastcall std::wstring::end(_DWORD *a1); -int __fastcall std::wstring::back(_DWORD *a1); -int __fastcall std::wstring::cend(_DWORD *a1); -int __thiscall std::wstring::copy(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4); -int __fastcall std::wstring::data(int a1); -int __thiscall std::wstring::find(int *this, wchar_t *String, int a3); -int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4); -int __thiscall std::wstring::find(int *this, int a2, unsigned int a3); -int __thiscall std::wstring::find(_DWORD *this, __int16 a2, unsigned int a3); -_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); -int __fastcall std::wstring::size(int a1); -int __fastcall std::wstring::begin(int a1); -int __fastcall std::wstring::c_str(int a1); -_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2); -bool __fastcall std::wstring::empty(int a1); -int __fastcall std::wstring::front(int a1); -int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3); -int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4); -int __thiscall std::wstring::rfind(_DWORD *this, int a2, unsigned int a3); -int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3); -int __fastcall std::wstring::cbegin(int a1); -int __fastcall std::wstring::length(int a1); -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4); -int __fastcall std::wstring::_M_data(int a1); -int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String); -int __thiscall std::wstring::compare(_DWORD *this, int a2); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, _WORD *a4, unsigned int a5); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, int a4); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6); -_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2); -unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3); -unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3); -int __fastcall std::wstring::capacity(_DWORD *a1); -int std::wstring::max_size(); -int __thiscall std::wstring::operator[](_DWORD *this, int a2); -int __thiscall std::stringbuf::str(int this, int a2); -int __thiscall std::wstringbuf::str(int this, _DWORD *a2); -int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); -int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); -int __thiscall std::basic_stringstream,std::allocator>::str(int this, _DWORD *a2); -int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); -int __thiscall std::istringstream::str(int this, int a2); -int __fastcall std::istringstream::rdbuf(int a1); -int __thiscall std::wistringstream::str(int this, _DWORD *a2); -int __fastcall std::wistringstream::rdbuf(int a1); -int __thiscall std::ostringstream::str(int this, int a2); -int __fastcall std::ostringstream::rdbuf(int a1); -int __thiscall std::wostringstream::str(int this, _DWORD *a2); -int __fastcall std::wostringstream::rdbuf(int a1); -int __stdcall std::collate::_M_compare(char *, char *); // idb -int __stdcall std::collate::do_compare(_BYTE *a1, int a2, _BYTE *a3, int a4); -size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); -int __thiscall std::collate::do_transform(int this, int a2, _BYTE *a3, int a4); -int __thiscall std::collate::hash(void *this, char *a2, char *a3); -int __fastcall std::collate::compare(int a1); -int __stdcall std::collate::do_hash(char *a1, char *a2); -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); -int __stdcall std::collate::_M_compare(wchar_t *, wchar_t *); // idb -int __stdcall std::collate::do_compare(_WORD *a1, int a2, _WORD *a3, int a4); -size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); -int __thiscall std::collate::do_transform(int this, int a2, _WORD *a3, int a4); -int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3); -int __fastcall std::collate::compare(int a1); -int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2); -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); -int __stdcall std::messages::_M_convert_to_char(int a1); -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); -int __thiscall std::messages::open(void *this, int a2, int a3); -int __thiscall std::messages::open(void *this, int a2, int a3, int a4); -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6); -int __stdcall std::messages::do_open(int a1, int a2); -int __stdcall std::messages::do_close(int); // weak -int __stdcall std::messages::_M_convert_to_char(int a1); -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); -int __thiscall std::messages::open(void *this, int a2, int a3); -int __thiscall std::messages::open(void *this, int a2, int a3, int a4); -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6); -int __stdcall std::messages::do_open(int a1, int a2); -int __stdcall std::messages::do_close(int); // weak -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); -int __fastcall std::numpunct::decimal_point(_DWORD *a1); -int __fastcall std::numpunct::thousands_sep(_DWORD *a1); -int __fastcall std::numpunct::do_decimal_point(int a1); -int __fastcall std::numpunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); -int __fastcall std::numpunct::decimal_point(_DWORD *a1); -int __fastcall std::numpunct::thousands_sep(_DWORD *a1); -int __fastcall std::numpunct::do_decimal_point(int a1); -int __fastcall std::numpunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); -int __fastcall std::time_get>::date_order(int a1); -_DWORD *__stdcall std::time_get>::do_get_date(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -_DWORD *__stdcall std::time_get>::do_get_time(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); -int __fastcall std::time_get>::get_weekday(int a1); -int std::time_get>::do_date_order(); -int __fastcall std::time_get>::get_monthname(int a1); -_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); -_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); -unsigned __int64 __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, int a7, _DWORD *a8); -_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); -_DWORD *__stdcall std::time_get>::_M_extract_via_format(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char *a8); -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, int a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); -_DWORD *__thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int8 *a9, unsigned __int8 *a10); -int __thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); -_DWORD *__stdcall std::time_get>::do_get(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9); -int __fastcall std::time_get>::get_date(int a1); -int __fastcall std::time_get>::get_time(int a1); -int __fastcall std::time_get>::get_year(int a1); -int __fastcall std::time_get>::date_order(int a1); -int *__stdcall std::time_get>::do_get_date(int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -int *__stdcall std::time_get>::do_get_time(int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); -int __fastcall std::time_get>::get_weekday(int a1); -int std::time_get>::do_date_order(); -int __fastcall std::time_get>::get_monthname(int a1); -_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); -_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); -int __stdcall std::time_get>::_M_extract_name(int *a1, int a2, _DWORD *a3, int a4, int **a5, int a6, int a7, int a8, _DWORD *a9); -_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); -int *__stdcall std::time_get>::_M_extract_via_format(int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, wchar_t *String); -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); -int *__thiscall std::time_get>::get(void *this, int *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10); -int __thiscall std::time_get>::get(void *this, int *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); -int *__stdcall std::time_get>::do_get(int *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9); -int __fastcall std::time_get>::get_date(int a1); -int __fastcall std::time_get>::get_time(int a1); -int __fastcall std::time_get>::get_year(int a1); -_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); -int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); -__int64 __stdcall std::money_get>::do_get(__int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, int *a7); -__int64 __stdcall std::money_get>::do_get(__int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7); -_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); -_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); -int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); -int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); -struct _Unwind_Exception *__stdcall std::money_get>::do_get(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, int *a8); -struct _Unwind_Exception *__stdcall std::money_get>::do_get(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8); -int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, char a5, int a6); -int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); -__int64 __stdcall std::money_put>::do_put(__int64 a1, char a2, int a3, char a4, int a5); -__int64 __thiscall std::money_put>::do_put(void *this, __int64 a2, int a3, int a4, int a5, long double a6); -__int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, char a3, int a4); -__int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, char a3, int a4); -int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, unsigned __int16 a5, int a6); -int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); -__int64 __stdcall std::money_put>::do_put(__int64 a1, char a2, int a3, __int16 a4, int a5); -__int64 __thiscall std::money_put>::do_put(void *this, __int64 a2, int a3, int a4, int a5, long double a6); -__int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, __int16 a3, int a4); -__int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, __int16 a3, int a4); -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, int a3, unsigned __int8 **a4, int a5, int a6, _DWORD *a7); -int __stdcall std::codecvt::do_out(int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, int a5, int a6, _DWORD *a7); -unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4); -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, int a3, unsigned __int8 **a4, int a5, int a6, _DWORD *a7); -int __stdcall std::codecvt::do_out(int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); -unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4); -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, char *a5, char *a6, char **a7); -int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, int a5, int a6, _DWORD *a7); -unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned int a4); -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int std::codecvt::do_encoding(); -int std::codecvt::do_max_length(); -int std::codecvt::do_always_noconv(); -int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, char *a5, char *a6, char **a7); -int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, _BYTE *a5, _BYTE *a6, _BYTE **a7); -unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned int a4); -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); -int std::codecvt::do_max_length(); -int std::codecvt::do_always_noconv(); -int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); -int __stdcall std::codecvt::do_out(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); -unsigned int __stdcall std::codecvt::do_length(int a1, int a2, int a3, unsigned int a4); -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); -BOOL __cdecl std::codecvt::do_encoding(); -int __cdecl std::codecvt::do_max_length(); -int std::codecvt::do_always_noconv(); -int __stdcall std::codecvt::do_in(unsigned int *a1, char *a2, unsigned int a3, char **a4, wchar_t *a5, unsigned int a6, wchar_t **a7); -int __stdcall std::codecvt::do_out(unsigned int *a1, wchar_t *a2, unsigned int a3, wchar_t **a4, char *a5, unsigned int a6, char **a7); -int __stdcall std::codecvt::do_length(unsigned int *a1, char *a2, unsigned int a3, int a4); -int __stdcall std::collate::_M_compare(char *, char *); // idb -int __stdcall std::collate::do_compare(void *a1, _BYTE *a2, void *a3, int a4); -size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); -int *__thiscall std::collate::do_transform(int *this, int a2, _BYTE *a3, int a4); -int __thiscall std::collate::hash(void *this, char *a2, char *a3); -int __fastcall std::collate::compare(int a1); -int __stdcall std::collate::do_hash(char *a1, char *a2); -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); -int __stdcall std::collate::_M_compare(wchar_t *, wchar_t *); // idb -int __stdcall std::collate::do_compare(void *a1, _WORD *a2, void *a3, int a4); -size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); -int *__thiscall std::collate::do_transform(int *this, int a2, _WORD *a3, int a4); -int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3); -int __fastcall std::collate::compare(int a1); -int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2); -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _WORD *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _WORD *a6); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); -unsigned __int64 __stdcall std::num_get>::_M_extract_float(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); -int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -int __fastcall std::num_get>::get(int a1); -int __fastcall std::num_get>::get(int a1); -int __fastcall std::num_get>::get(int a1); -int __fastcall std::num_get>::get(int a1); -int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _WORD *a7); -int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -int __thiscall std::num_get>::get(void *this, unsigned __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); -unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, int *a5, _BYTE *a6); -int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, double *a6); -int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, long double *a6); -int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, float *a6); -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _WORD *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); -__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); -__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); -__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); -__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _WORD *a6); -__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); -__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); -__int64 __stdcall std::num_get>::_M_extract_float(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); -int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -int __fastcall std::num_get>::get(int a1); -int __fastcall std::num_get>::get(int a1); -int __fastcall std::num_get>::get(int a1); -int __fastcall std::num_get>::get(int a1); -int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); -int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _WORD *a7); -int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -int __thiscall std::num_get>::get(void *this, __int64 a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); -int __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); -__int64 __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, int *a5, _BYTE *a6); -std::locale::facet *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, double *a6); -std::locale::facet *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, long double *a6); -std::locale::facet *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, float *a6); -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -_BYTE *__stdcall std::num_put>::_M_group_int(char *a1, int a2, char a3, int a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); -int __stdcall std::num_put>::_M_insert_int(int a1, int a2, int *a3, int a4, int a5); -int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5); -int __stdcall std::num_put>::_M_insert_int(int a1, int a2, int *a3, int a4, __int64 a5); -int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5, int a6); -_BYTE *__stdcall std::num_put>::_M_group_float(char *a1, int a2, char a3, char *Src, int a5, _BYTE *a6, _DWORD *a7); -int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, int *a4, int a5, char a6, double a7); -int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, int *a4, int a5, char a6, long double a7); -int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5, unsigned __int8 a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, int *a4, char a5, double a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, int *a4, char a5, long double a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, int *a4, char a5, int a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, int *a4, char a5, __int64 a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6, int a7); -int __stdcall std::num_put>::_M_pad(char a1, int a2, _DWORD *a3, char *a4, _BYTE *a5, int *a6); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); -int *__stdcall std::num_put>::do_put(int *a1, int a2, int *a3, int a4, int a5); -int __thiscall std::num_put>::do_put(void *this, int a2, int a3, int *a4, char a5, double a6); -int __thiscall std::num_put>::do_put(void *this, int a2, int a3, int *a4, char a5, long double a6); -int __stdcall std::num_put>::do_put(int a1, int a2, int *a3, char a4, int a5); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); -int __stdcall std::num_put>::do_put(int a1, int a2, int *a3, char a4, __int64 a5); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5, int a6); -int __stdcall std::num_put>::_M_group_int(char *a1, int a2, __int16 a3, int a4, _WORD *a5, char *a6, int *a7); -int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5); -int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5); -int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, __int64 a5); -int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5, int a6); -int __stdcall std::num_put>::_M_group_float(char *a1, int a2, __int16 a3, char *Src, _WORD *a5, char *a6, _DWORD *a7); -int *__thiscall std::num_put>::_M_insert_float(void *this, int *a2, int a3, std::__num_base *a4, int a5, void *a6, double a7); -int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, int *a4, int a5, char a6, long double a7); -int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5, unsigned __int8 a6); -int *__thiscall std::num_put>::put(void *this, int *a2, int a3, std::__num_base *a4, unsigned __int16 a5, double a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, int *a4, unsigned __int16 a5, long double a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, __int64 a6); -int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, unsigned __int16 a5, int a6, int a7); -_WORD *__stdcall std::num_put>::_M_pad(unsigned __int16 a1, int a2, _DWORD *a3, _WORD *Size, _WORD *a5, int *a6); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5); -int *__thiscall std::num_put>::do_put(void *this, int *a2, int a3, std::__num_base *a4, unsigned __int16 a5, double a6); -int __thiscall std::num_put>::do_put(void *this, int a2, int a3, int *a4, unsigned __int16 a5, long double a6); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, __int64 a5); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, unsigned __int16 a4, int a5, int a6); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); -const char *std::bad_cast::what(); -int __fastcall std::ios_base::failure::what(int a1); -int __stdcall std::messages::_M_convert_to_char(int a1); -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); -int __thiscall std::messages::open(void *this, int a2, int a3); -int __thiscall std::messages::open(void *this, int a2, int a3, int a4); -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, std::string *a6); -int __stdcall std::messages::do_open(int a1, int a2); -int __stdcall std::messages::do_close(int); // weak -int __stdcall std::messages::_M_convert_to_char(int a1); -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); -int __thiscall std::messages::open(void *this, int a2, int a3); -int __thiscall std::messages::open(void *this, int a2, int a3, int a4); -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _DWORD *a6); -int __stdcall std::messages::do_open(int a1, int a2); -int __stdcall std::messages::do_close(int); // weak -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); -int __fastcall std::numpunct::decimal_point(_DWORD *a1); -int __fastcall std::numpunct::thousands_sep(_DWORD *a1); -int __fastcall std::numpunct::do_decimal_point(int a1); -int __fastcall std::numpunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); -int __fastcall std::numpunct::decimal_point(_DWORD *a1); -int __fastcall std::numpunct::thousands_sep(_DWORD *a1); -int __fastcall std::numpunct::do_decimal_point(int a1); -int __fastcall std::numpunct::do_thousands_sep(int a1); -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); -int __fastcall std::time_get>::date_order(int a1); -int __stdcall std::time_get>::do_get_date(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); -int __stdcall std::time_get>::do_get_time(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); -_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); -int __fastcall std::time_get>::get_weekday(int a1); -int std::time_get>::do_date_order(); -int __fastcall std::time_get>::get_monthname(int a1); -_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); -_DWORD *__stdcall std::time_get>::do_get_weekday(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int a6); -unsigned __int64 __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, int **a4, int a5, int a6, int a7, _DWORD *a8); -_DWORD *__stdcall std::time_get>::do_get_monthname(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int a6); -unsigned __int64 __stdcall std::time_get>::_M_extract_via_format(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char *a7); -int __stdcall std::time_get>::_M_extract_wday_or_month(unsigned __int64 a1, _DWORD *a2, int a3, unsigned int *a4, int a5, unsigned int a6, int a7, _DWORD *a8); -_DWORD *__stdcall std::time_get>::get(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, unsigned __int8 *a8, unsigned __int8 *a9); -int __stdcall std::time_get>::get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); -int __stdcall std::time_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); -int __fastcall std::time_get>::get_date(int a1); -int __fastcall std::time_get>::get_time(int a1); -int __fastcall std::time_get>::get_year(int a1); -int __fastcall std::time_get>::date_order(int a1); -_DWORD *__stdcall std::time_get>::do_get_date(__int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); -_DWORD *__stdcall std::time_get>::do_get_time(__int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); -_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); -int __fastcall std::time_get>::get_weekday(int a1); -int std::time_get>::do_date_order(); -int __fastcall std::time_get>::get_monthname(int a1); -_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); -_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); -int __stdcall std::time_get>::_M_extract_name(int *a1, int a2, _DWORD *a3, int a4, int **a5, int a6, int a7, int a8, _DWORD *a9); -_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); -__int64 __stdcall std::time_get>::_M_extract_via_format(__int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, wchar_t *a7); -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); -_DWORD *__thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10); -_DWORD *__stdcall std::time_get>::get(__int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); -_DWORD *__stdcall std::time_get>::do_get(__int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); -int __fastcall std::time_get>::get_date(int a1); -int __fastcall std::time_get>::get_time(int a1); -int __fastcall std::time_get>::get_year(int a1); -_DWORD *__thiscall std::time_put>::put(void *this, _DWORD *a2, int a3, int a4, char a5, int a6, unsigned __int8 *a7, unsigned __int8 *a8); -int __thiscall std::time_put>::put(void *this, int a2, int a3, int a4, char a5, int a6, char a7, char a8); -int __stdcall std::time_put>::do_put(int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7); -_DWORD *__thiscall std::time_put>::put(void *this, _DWORD *a2, int a3, int a4, unsigned __int16 a5, int a6, unsigned __int16 *a7, unsigned __int16 *a8); -int __thiscall std::time_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5, int a6, char a7, char a8); -int __stdcall std::time_put>::do_put(int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7); -const char *std::bad_alloc::what(); -int __fastcall std::ios::exceptions(int a1); -int __fastcall std::ios::bad(int a1); -int __fastcall std::ios::eof(int a1); -int __fastcall std::ios::tie(int a1); -bool __fastcall std::ios::fail(int a1); -int __fastcall std::ios::fill(int a1); -bool __fastcall std::ios::good(int a1); -int __fastcall std::ios::rdbuf(int a1); -int __thiscall std::ios::widen(int *this, int a2); -int __thiscall std::ios::narrow(_DWORD *this, int a2, int a3); -int __fastcall std::ios::rdstate(int a1); -int __fastcall std::ios::operator void *(int a1); -bool __fastcall std::ios::operator bool(int a1); -bool __fastcall std::ios::operator!(int a1); -int __fastcall std::wios::exceptions(int a1); -int __fastcall std::wios::bad(int a1); -int __fastcall std::wios::eof(int a1); -int __fastcall std::wios::tie(int a1); -bool __fastcall std::wios::fail(int a1); -int __fastcall std::wios::fill(int a1); -bool __fastcall std::wios::good(int a1); -int __fastcall std::wios::rdbuf(int a1); -int __thiscall std::wios::widen(_DWORD *this, char a2); -int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16 a2, char a3); -int __fastcall std::wios::rdstate(int a1); -int __fastcall std::wios::operator void *(int a1); -bool __fastcall std::wios::operator bool(int a1); -bool __fastcall std::wios::operator!(int a1); -const char *_ZGTtNKSt9exception4whatEv(); -unsigned __int64 __stdcall std::money_get>::_M_extract(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); -unsigned __int64 __stdcall std::money_get>::_M_extract(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); -int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); -int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); -unsigned __int64 __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, int *a7); -unsigned __int64 __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7); -__int64 __stdcall std::money_get>::_M_extract(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); -__int64 __stdcall std::money_get>::_M_extract(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); -int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); -int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); -struct _Unwind_Exception *__stdcall std::money_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, char a4, int a5, _DWORD *a6, int *a7); -struct _Unwind_Exception *__stdcall std::money_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, char a4, int a5, _DWORD *a6, long double *a7); -int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, char a5, struct _Unwind_Exception **a6); -int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); -__int64 __stdcall std::money_put>::do_put(__int64 a1, char a2, int a3, char a4, struct _Unwind_Exception **a5); -__int64 __thiscall std::money_put>::do_put(void *this, __int64 a2, int a3, int a4, int a5, long double a6); -__int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, char a3, struct _Unwind_Exception **a4); -__int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, char a3, struct _Unwind_Exception **a4); -int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, unsigned __int16 a5, char **a6); -int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); -__int64 __stdcall std::money_put>::do_put(__int64 a1, char a2, int a3, __int16 a4, char **a5); -__int64 __thiscall std::money_put>::do_put(void *this, __int64 a2, int a3, int a4, int a5, long double a6); -__int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, __int16 a3, char **a4); -__int64 __stdcall std::money_put>::_M_insert(__int64 a1, int a2, __int16 a3, char **a4); -// bool __userpurge std::type_info::__do_catch@(std::type_info *a1@, std::type_info *this, const type_info *a3, void **a4, unsigned int a5); -int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3); -int std::type_info::__is_function_p(); -bool __thiscall std::type_info::operator==(_DWORD *this, int a2); -int __cdecl std::wstring::_S_compare(int a1, int a2); -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int *__fastcall std::wstring::_M_leak_hard(int **a1); -_DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, __int16 a2); -_DWORD *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(_WORD *Src, int a2); -_DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2); -_DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2); -void *std::wstring::_S_empty_rep(); -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); -void __fastcall std::wstring::shrink_to_fit(int *a1); -int **__thiscall std::wstring::_M_replace_aux(int **this, int a2, int a3, unsigned int a4, __int16 a5); -int **__thiscall std::wstring::_M_replace_safe(int **this, int a2, int a3, _WORD *Src, int a5); -_DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, __int16 a2); -char *__thiscall std::wstring::at(int **this, unsigned int a2); -char *__fastcall std::wstring::end(int **a1); -void __thiscall std::wstring::_Rep::_M_destroy(void *Block, int a2); -void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *Block, int a2); -int __fastcall std::wstring::_Rep::_M_refcopy(int a1); -int __fastcall std::wstring::_Rep::_M_refdata(int a1); -void *std::wstring::_Rep::_S_empty_rep(); -void __fastcall std::wstring::_Rep::_M_set_leaked(int a1); -void __fastcall std::wstring::_Rep::_M_set_sharable(int a1); -int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(_DWORD *this, int a2); -_DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3); -_DWORD *__thiscall std::wstring::_Rep::_M_clone(int *this, int a2, int a3); -_DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2); -char *__fastcall std::wstring::back(int **a1); -int **__thiscall std::wstring::rend(int **this, int **a2); -int __thiscall std::wstring::swap(int *this, int *a2); -int *__fastcall std::wstring::begin(int **a1); -int __fastcall std::wstring::clear(int **a1); -char *__thiscall std::wstring::erase(int **this, int a2); -char *__thiscall std::wstring::erase(int **this, char *a2, int a3); -int **__thiscall std::wstring::erase(int **this, unsigned int a2, unsigned int a3); -int *__fastcall std::wstring::front(int **a1); -int *__thiscall std::wstring::append(int *this, wchar_t *String); -int *__thiscall std::wstring::append(int *this, char *a2, unsigned int a3); -int *__thiscall std::wstring::append(int *this, _DWORD *a2); -int *__thiscall std::wstring::append(int *this, _DWORD *a2, unsigned int a3, unsigned int a4); -int *__thiscall std::wstring::append(int *this, unsigned int a2, __int16 a3); -_DWORD *__thiscall std::wstring::assign(_DWORD *this, int *a2); -int **__thiscall std::wstring::assign(int **this, wchar_t *String); -int **__thiscall std::wstring::assign(int **this, char *Src, unsigned int a3); -int *__thiscall std::wstring::assign(int *this, _DWORD *a2); -int **__thiscall std::wstring::assign(int **this, _DWORD *a2, unsigned int a3, unsigned int a4); -int **__thiscall std::wstring::assign(int **this, unsigned int a2, __int16 a3); -int **__thiscall std::wstring::insert(int **this, int a2, int *a3, unsigned int a4); -int __thiscall std::wstring::insert(int **this, int a2, unsigned int a3, unsigned __int16 a4); -_WORD *__thiscall std::wstring::insert(int **this, int a2, __int16 a3); -int **__thiscall std::wstring::insert(int **this, int a2, wchar_t *String); -int **__thiscall std::wstring::insert(int **this, unsigned int a2, int *Src, unsigned int a4); -int **__thiscall std::wstring::insert(int **this, int a2, int **a3); -int **__thiscall std::wstring::insert(int **this, int a2, _DWORD *a3, unsigned int a4, unsigned int a5); -int **__thiscall std::wstring::insert(int **this, unsigned int a2, unsigned int a3, __int16 a4); -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, int **a2); -int *__thiscall std::wstring::resize(int *this, unsigned int a2); -int *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3); -int __cdecl std::wstring::_M_copy(_WORD *a1, unsigned __int16 *Src, size_t Size); -int __thiscall std::wstring::_M_data(_DWORD *this, int a2); -int *__fastcall std::wstring::_M_leak(int **a1); -int __cdecl std::wstring::_M_move(_WORD *a1, unsigned __int16 *Src, size_t Size); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, unsigned int a5); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, unsigned int a4, __int16 a5); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String); -int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, _WORD *Src, unsigned int a5); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4); -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _DWORD *a4, unsigned int a5, unsigned int a6); -int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 a5); -void __thiscall std::wstring::reserve(int *this, unsigned int a2); -int __fastcall std::wstring::pop_back(int **a1); -int __cdecl std::wstring::_M_assign(_WORD *a1, int a2, __int16 a3); -int __thiscall std::wstring::_M_mutate(int **this, int a2, int a3, int a4); -int __thiscall std::wstring::push_back(int *this, __int16 a2); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4); -_WORD *__fastcall std::wstring::basic_string(_DWORD *a1); -int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int a3, int a4); -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4); -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4); -_WORD *__fastcall std::wstring::basic_string(_DWORD *a1); -int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int a3, int a4); -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4); -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4); -void __fastcall std::wstring::~wstring(int *a1); -void __fastcall std::wstring::~wstring(int *a1); -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, int *a2); -int **__thiscall std::wstring::operator=(int **this, wchar_t *String); -int *__thiscall std::wstring::operator=(int *this, _DWORD *a2); -int **__thiscall std::wstring::operator=(int **this, char *a2, int a3); -int **__thiscall std::wstring::operator=(int **this, __int16 a2); -char *__thiscall std::wstring::operator[](int **this, int a2); -int *__thiscall std::wstring::operator+=(int *this, wchar_t *String); -int *__thiscall std::wstring::operator+=(int *this, __int16 a2); -// void __userpurge std::iostream::swap(_DWORD *a1@, std::iostream *this, std::iostream *a3); -void __thiscall std::iostream::iostream(_DWORD *this, int *a2); -void __thiscall std::iostream::iostream(_DWORD *this, int a2); -void __fastcall std::iostream::iostream(int a1); -int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3); -void __thiscall std::iostream::iostream(int *this, int *a2, int a3); -void __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this); -void __fastcall std::iostream::~iostream(_DWORD *a1); -void __fastcall std::iostream::~iostream(int a1); -void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this); -_DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); -// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); -// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5); -std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2); -std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3); -// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3); -int __fastcall std::istream::get(std::istream::sentry *a1); -int __fastcall std::istream::peek(std::istream::sentry *a1); -// std::istream::sentry *__userpurge std::istream::read@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); -// void __userpurge std::istream::swap(_DWORD *a1@, std::istream *this, std::istream *a3); -int __fastcall std::istream::sync(std::istream::sentry *a1); -std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5); -std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4); -_DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this); -std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *a1); -// std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *a1@, std::istream *this, int a3); -// std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *a1@, std::istream *this, int a3, int a4); -std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1); -// void __userpurge std::istream::sentry::sentry(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4); -// void __userpurge std::istream::sentry::sentry(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4); -// std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); -// std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5); -// std::istream::sentry *__userpurge std::istream::putback@(std::istream::sentry *a1@, std::istream *this, char a3); -// struct _Unwind_Exception *__userpurge std::istream::readsome@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); -void __thiscall std::istream::istream(_DWORD *this, int *a2); -void __thiscall std::istream::istream(_DWORD *this, int a2); -void __fastcall std::istream::istream(int a1); -int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3); -BOOL __thiscall std::istream::istream(int *this, int *a2, int a3); -BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this); -void __fastcall std::istream::~istream(_DWORD *a1); -void __fastcall std::istream::~istream(_DWORD *a1); -void __thiscall std::istream::~istream(_DWORD *ecx0, std::istream *this); -_DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)); -char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)); -char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)); -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2); -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2); -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2); -// std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3); -// void __userpurge std::ostream::swap(_DWORD *a1@, std::ostream *this, std::ostream *a3); -_DWORD *__fastcall std::ostream::flush(_DWORD *a1); -_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5); -_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4); -_DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this); -// std::ostream::sentry *__userpurge std::ostream::write@(std::ostream::sentry *a1@, std::ostream *this, const char *a3, int a4); -// int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3); -// int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3); -void __fastcall std::ostream::sentry::~sentry(int a1); -void __fastcall std::ostream::sentry::~sentry(int a1); -// const char *__userpurge std::ostream::_M_write@(_DWORD *a1@, std::ostream *this, const char *a3, int a4); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3); -void __thiscall std::ostream::ostream(_DWORD *this, _DWORD *a2); -void __thiscall std::ostream::ostream(_DWORD *this, int a2); -// int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3); -void __fastcall std::ostream::ostream(int a1); -int __thiscall std::ostream::ostream(_DWORD *this, _DWORD *a2, _DWORD *a3); -BOOL __thiscall std::ostream::ostream(int *this, int *a2, int a3); -int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3); -BOOL __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this); -void __fastcall std::ostream::~ostream(_DWORD *a1); -void __fastcall std::ostream::~ostream(_DWORD *a1); -void __thiscall std::ostream::~ostream(_DWORD *ecx0, std::ostream *this); -_DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)); -char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)); -char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)); -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2); -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2); -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2); -_DWORD __stdcall std::ostream::operator<<(_DWORD); // weak -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2); -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2); -char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2); -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -char *__fastcall std::string::_M_leak_hard(char **a1); -_DWORD *__cdecl std::string::_S_construct(size_t Size, char a2); -int __cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, int a2); -int __cdecl std::string::_S_construct(_BYTE *Src, int a2); -int __cdecl std::string::_S_construct(_BYTE *Src, int a2); -void *std::string::_S_empty_rep(); -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); -size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size); -size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size); -void __fastcall std::string::shrink_to_fit(int *a1); -// char **__userpurge std::string::_M_replace_aux@(char **a1@, std::string *this, unsigned int a3, size_t Size, char a5, char a6); -// char **__userpurge std::string::_M_replace_safe@(char **a1@, std::string *this, unsigned int a3, _BYTE *Src, size_t Size, unsigned int a6); -_DWORD *__cdecl std::string::_S_construct_aux_2(size_t Size, char a2); -// char *__userpurge std::string::at@(char **a1@, unsigned int this, unsigned int a3); -char *__fastcall std::string::end(char **a1); -void __thiscall std::string::_Rep::_M_destroy(void *Block, int a2); -void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *Block, int a2); -int __fastcall std::string::_Rep::_M_refcopy(int a1); -int __fastcall std::string::_Rep::_M_refdata(int a1); -void *std::string::_Rep::_S_empty_rep(); -void __fastcall std::string::_Rep::_M_set_leaked(int a1); -void __fastcall std::string::_Rep::_M_set_sharable(int a1); -// std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@(_DWORD *a1@, std::string::_Rep *this, unsigned int a3); -volatile signed __int32 *__thiscall std::string::_Rep::_M_grab(volatile signed __int32 *this, int a2, int a3); -_DWORD *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3); -_DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2); -char *__fastcall std::string::back(char **a1); -char **__thiscall std::string::rend(char **ecx0, char **this); -// int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3); -char *__fastcall std::string::begin(char **a1); -void __fastcall std::string::clear(char **a1); -char *__thiscall std::string::erase(char **this, int a2); -char *__thiscall std::string::erase(char **this, char *a2, char *a3); -// char **__userpurge std::string::erase@(char **a1@, std::string *this, unsigned int a3, unsigned int a4); -char *__fastcall std::string::front(char **a1); -// int *__userpurge std::string::append@(int *a1@, std::string *this, const char *a3); -// int *__userpurge std::string::append@(int *a1@, std::string *this, size_t Size, unsigned int a4); -// int *__userpurge std::string::append@(int *a1@, std::string *this, const std::string *a3); -// int *__userpurge std::string::append@(int *a1@, std::string *this, const std::string *a3, size_t a4, unsigned int a5); -// int *__userpurge std::string::append@(int *a1@, size_t this, char a3, char a4); -_DWORD *__thiscall std::string::assign(_DWORD *this, int *a2); -// char **__userpurge std::string::assign@(char **a1@, std::string *this, const char *a3); -// char **__userpurge std::string::assign@(char **a1@, std::string *this, size_t Size, unsigned int a4); -// int *__userpurge std::string::assign@(int *a1@, std::string *this, const std::string *a3); -// char **__userpurge std::string::assign@(char **a1@, std::string *this, const std::string *a3, size_t a4, unsigned int a5); -// char **__userpurge std::string::assign@(char **a1@, size_t this, char a3, char a4); -// char **__userpurge std::string::insert@(char **a1@, std::string *a2, char *a3, size_t a4, unsigned int a5); -char *__thiscall std::string::insert(char **this, int a2, char a3); -void __thiscall std::string::insert(char **this, int a2, size_t Size, char a4); -// char **__userpurge std::string::insert@(char **a1@, std::string *this, char *Str, const char *a4); -// char **__userpurge std::string::insert@(char **a1@, unsigned int this, char *Src, size_t Size, unsigned int a5); -// char **__userpurge std::string::insert@(char **a1@, std::string *this, char **a3, const std::string *a4); -// char **__userpurge std::string::insert@(char **a1@, std::string *this, _DWORD *a3, const std::string *a4, size_t a5, unsigned int a6); -// char **__userpurge std::string::insert@(char **a1@, std::string *this, size_t Size, char a4, char a5); -_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, char **this); -// void __userpurge std::string::resize(int *a1@, std::string *this, unsigned int a3); -// void __userpurge std::string::resize(int *a1@, size_t this, char a3, char a4); -size_t __cdecl std::string::_M_copy(std::string *this, char *Src, size_t Size); -// std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3); -char *__fastcall std::string::_M_leak(char **a1); -size_t __cdecl std::string::_M_move(std::string *this, char *Src, size_t Size); -// char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6); -char **__thiscall std::string::replace(char **this, int a2, int a3, char *Str); -// char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6); -// char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, size_t a5, unsigned int a6); -char **__thiscall std::string::replace(char **this, int a2, int a3, char **a4); -// char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6); -// char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, int a5, unsigned int a6); -// char **__userpurge std::string::replace@(char **a1@, std::string *a2, int a3, char *a4, size_t a5, unsigned int a6); -char **__thiscall std::string::replace(char **this, int a2, int a3, size_t Size, char a5); -// char **__userpurge std::string::replace@(char **a1@, std::string *this, unsigned int a3, char *Str, const char *a5); -// char **__userpurge std::string::replace@(char **a1@, unsigned int this, unsigned int a3, char *Src, size_t Size, unsigned int a6); -// char **__userpurge std::string::replace@(char **a1@, std::string *this, unsigned int a3, char **a4, const std::string *a5); -// char **__userpurge std::string::replace@(char **a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, size_t a6, unsigned int a7); -// char **__userpurge std::string::replace@(char **a1@, std::string *this, unsigned int a3, size_t a4, char a5, char a6); -// void __userpurge std::string::reserve(int *a1@, std::string *this, unsigned int a3); -void __fastcall std::string::pop_back(char **a1); -char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size); -// void __userpurge std::string::_M_mutate(char **a1@, size_t this, unsigned int a3, unsigned int a4, unsigned int a5); -// int __userpurge std::string::push_back@(int *a1@, std::string *this, char a3); -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2); -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); -int __thiscall std::string::string(_DWORD *this, char *Str, int a3); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4); -_BYTE *__thiscall std::string::string(_DWORD *this, int a2); -// _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3); -_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); -int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4); -// int __userpurge std::string::string@(int *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); -int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4); -char *__thiscall std::string::string(_DWORD *this, size_t Size, char *a3, int a4); -_BYTE *__fastcall std::string::string(_DWORD *a1); -int __thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, unsigned __int8 *Src, int a3, int a4); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4); -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2); -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); -int __thiscall std::string::string(_DWORD *this, char *Str, int a3); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4); -_BYTE *__thiscall std::string::string(_DWORD *this, int a2); -// _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3); -_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); -int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4); -// int __userpurge std::string::string@(int *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); -int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4); -char *__thiscall std::string::string(_DWORD *this, size_t Size, char *a3, int a4); -_BYTE *__fastcall std::string::string(_DWORD *a1); -int __thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, unsigned __int8 *Src, int a3, int a4); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4); -void __fastcall std::string::~string(int *a1); -void __fastcall std::string::~string(int *a1); -_DWORD *__thiscall std::string::operator=(_DWORD *this, int *a2); -char **__thiscall std::string::operator=(char **this, std::string *Str); -int *__thiscall std::string::operator=(int *this, _DWORD *a2); -char **__thiscall std::string::operator=(char **this, std::string *a2, size_t a3); -char **__thiscall std::string::operator=(char **this, char a2); -char *__thiscall std::string::operator[](char **this, int a2); -int *__thiscall std::string::operator+=(int *this, std::string *Str); -int *__thiscall std::string::operator+=(int *this, char a2); -int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *a2, char *a3); -void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1); -void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1); -int __cdecl std::money_base::_S_construct_pattern(); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); -void __fastcall std::__timepunct::~__timepunct(_DWORD *Block); -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1); -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1); -_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); -void __fastcall std::__timepunct::~__timepunct(_DWORD *Block); -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1); -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1); -// void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const char *a3); -void __thiscall std::logic_error::logic_error(_DWORD *this, int a2); -// void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::logic_error *a3); -// void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::string *a3); -void __fastcall std::logic_error::~logic_error(void *a1); -void __cdecl std::logic_error::~logic_error(std::exception *a1); -int *__thiscall std::logic_error::operator=(int *this, int a2); -int *__thiscall std::logic_error::operator=(int *this, int a2); -// void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const char *a3); -void __thiscall std::range_error::range_error(_DWORD *this, int a2); -// void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const std::string *a3); -void __fastcall std::range_error::~range_error(_DWORD *a1); -void __cdecl std::range_error::~range_error(std::exception *a1); -// int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); -// int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); -// int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); -void __cdecl std::_Destroy_aux::__destroy(void **a1, char **a2); -// int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3); -// int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3); -// unsigned __int8 *__usercall std::`anonymous namespace'::utf16_span@(unsigned __int8 *a1@, unsigned __int8 *a2@, unsigned int a3@, unsigned int a4, char a5); -int __cdecl std::`anonymous namespace'::__x86_rdrand(); -int __cdecl std::`anonymous namespace'::__x86_rdseed(std::_anonymous_namespace_ *this); -int __cdecl std::`anonymous namespace'::__winxp_rand_s(); -// int __usercall std::`anonymous namespace'::read_utf16_bom@(int a1@, int *a2@); -int __cdecl std::`anonymous namespace'::__x86_rdseed_rdrand(); -// int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **a1@, unsigned int a2@); -// int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **a1@, unsigned int a2@); -// int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@); -// int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **a1@, unsigned int a2@); -// int __usercall std::`anonymous namespace'::ucs2_in@(unsigned __int16 **a1@, int *a2@, unsigned int a3@, char a4); -// int __usercall std::`anonymous namespace'::ucs2_out@(unsigned __int16 **a1@, _DWORD *a2@, unsigned int a3@, char a4); -// int __usercall std::`anonymous namespace'::utf16_in@(unsigned __int8 **a1@, char **a2@, unsigned int a3@, char a4, int a5); -// int __usercall std::`anonymous namespace'::utf16_out@(unsigned __int16 **a1@, _BYTE **a2@, unsigned int a3@, int a4); -void __fastcall std::_Vector_base::~_Vector_base(void **a1); -int __fastcall std::__basic_file::fd(FILE **a1); -int __fastcall std::__basic_file::file(int a1); -_BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4); -FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3); -int __fastcall std::__basic_file::sync(FILE **a1); -int __fastcall std::__basic_file::close(int a1); -int __thiscall std::__basic_file::xsgetn(FILE **this, void *DstBuf, unsigned int MaxCharCount); -unsigned int __thiscall std::__basic_file::xsputn(FILE **this, char *a2, unsigned int a3); -__int64 __thiscall std::__basic_file::seekoff(FILE **this, __int64 a2, int a3); -void __cdecl __noreturn sub_4D7B75(int, int, int, int, int, int, int, int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int); // idb -_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3); -FILE **__thiscall std::__basic_file::sys_open(FILE **this, int FileHandle, char a3); -int __thiscall std::__basic_file::xsputn_2(FILE **this, char *a2, unsigned int a3, char *a4, unsigned int a5); -int __fastcall std::__basic_file::showmanyc(FILE **a1); -void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2); -FILE *__fastcall std::__basic_file::~__basic_file(int a1); -void __thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2); -// int __userpurge std::__cow_string::__cow_string@(_DWORD *a1@, std::__cow_string *this, size_t a3, unsigned int a4); -int __thiscall std::__cow_string::__cow_string(_DWORD *this, int a2); -// void __userpurge std::__cow_string::__cow_string(_DWORD *a1@, std::__cow_string *this, const std::__cow_string *a3); -_DWORD *__fastcall std::__cow_string::__cow_string(_DWORD *a1); -void __fastcall std::__cow_string::~__cow_string(int *a1); -int *__thiscall std::__cow_string::operator=(int *this, std::string *a2); -int *__thiscall std::__cow_string::operator=(int *this, std::string *a2); -void __thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); -void __thiscall std::__shared_ptr::__shared_ptr(int *this, int *a2); -int __thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2); -// _BYTE *__userpurge std::__sso_string::__sso_string@(int a1@, std::__sso_string *this, size_t Size, unsigned int a4); -_BYTE *__thiscall std::__sso_string::__sso_string(char *this, int a2); -// void __userpurge std::__sso_string::__sso_string(_DWORD *a1@, std::__sso_string *this, const std::__sso_string *a3); -// _BYTE *__userpurge std::__sso_string::__sso_string@(int a1@, std::__sso_string **this, const std::string *a3); -int __fastcall std::__sso_string::__sso_string(int a1); -void __fastcall std::__sso_string::~__sso_string(void **a1); -_DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int a2); -void *__thiscall std::__sso_string::operator=(void *this, int a2); -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block); -void __fastcall std::ctype_byname::~ctype_byname(int a1); -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block); -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1); -// void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const char *a3); -void __thiscall std::domain_error::domain_error(_DWORD *this, int a2); -// void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const std::string *a3); -void __fastcall std::domain_error::~domain_error(_DWORD *a1); -void __cdecl std::domain_error::~domain_error(std::exception *a1); -// void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const char *a3); -void __thiscall std::length_error::length_error(_DWORD *this, int a2); -// void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const std::string *a3); -void __fastcall std::length_error::~length_error(_DWORD *a1); -void __cdecl std::length_error::~length_error(std::exception *a1); -// void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const char *a3); -void __thiscall std::out_of_range::out_of_range(_DWORD *this, int a2); -// void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const std::string *a3); -void __fastcall std::out_of_range::~out_of_range(_DWORD *a1); -void __cdecl std::out_of_range::~out_of_range(std::exception *a1); -void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, char *Str); -void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, int a4); -void __fastcall std::system_error::~system_error(_DWORD *a1); -void __cdecl std::system_error::~system_error(std::exception *a1); -int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); -int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); -int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); -int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); -__int64 __cdecl std::__facet_shims::__money_get(int a1, int a2, __int64 a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9, _DWORD *a10); -__int64 __cdecl std::__facet_shims::__money_get(int a1, int *a2, __int64 a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9, _DWORD *a10); -struct _Unwind_Exception *__cdecl std::__facet_shims::__money_get(int a1, int a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11); -struct _Unwind_Exception *__cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11); -__int64 __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9); -__int64 __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9); -__int64 __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9); -__int64 __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *a1); -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block); -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *a1); -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block); -void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, std::string *a4, int a5, int a6, unsigned __int8 *a7, size_t a8); -void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, _BYTE *a7, int a8); -void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, _WORD *a7, int a8); -void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, _WORD *a7, int a8); -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, size_t a4, int a5); -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5); -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, size_t a4, int a5); -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5); -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, std::string *a4, int a5); -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5); -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5); -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5); -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); -// void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4); -void __fastcall std::__ios_failure::~__ios_failure(_DWORD *a1); -void __fastcall std::__ios_failure::~__ios_failure(_DWORD *a1); -void __fastcall std::bad_exception::~bad_exception(void *Block); -void __cdecl std::bad_exception::~bad_exception(void *); // idb -unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int a2); -int __thiscall std::filebuf::_M_get_ext_pos(int this, int a2); -int __fastcall std::filebuf::_M_create_pback(int a1); -int __fastcall std::filebuf::_M_destroy_pback(int a1); -int __fastcall std::filebuf::_M_terminate_output(int a1); -bool __thiscall std::filebuf::_M_convert_to_external(int this, char *a2, unsigned int a3); -void __fastcall std::filebuf::_M_destroy_internal_buffer(int a1); -void __fastcall std::filebuf::_M_allocate_internal_buffer(int a1); -_DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3); -_DWORD *__thiscall std::filebuf::open(_DWORD *this, wchar_t *a2, int a3); -_DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3); -int __thiscall std::filebuf::swap(int this, int a2); -int __fastcall std::filebuf::sync(_DWORD *a1); -struct _Unwind_Exception *__fastcall std::filebuf::close(struct _Unwind_Exception *a1); -char __thiscall std::filebuf::imbue(void *this, int a2); -int __thiscall std::filebuf::setbuf(int this, __int64 a2); -int __thiscall std::filebuf::xsgetn(_DWORD *this, char *a2, signed int a3); -int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, signed int a3); -_DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5); -_DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5); -_DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6); -int __thiscall std::filebuf::overflow(int this, int a2); -int __thiscall std::filebuf::pbackfail(char *this, int a2); -int __fastcall std::filebuf::showmanyc(_DWORD *a1); -int __fastcall std::filebuf::underflow(int a1); -int __thiscall std::filebuf::basic_filebuf(int this, std::locale *a2); -void __fastcall std::filebuf::basic_filebuf(int a1); -int __thiscall std::filebuf::basic_filebuf(int this, std::locale *a2); -void __fastcall std::filebuf::basic_filebuf(int a1); -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1); -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1); -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1); -int __thiscall std::filebuf::operator=(int this, int a2); -unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int a2); -int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int a2); -int __fastcall std::wfilebuf::_M_create_pback(int a1); -int __fastcall std::wfilebuf::_M_destroy_pback(int a1); -int __fastcall std::wfilebuf::_M_terminate_output(int a1); -bool __thiscall std::wfilebuf::_M_convert_to_external(int this, char *a2, unsigned int a3); -void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1); -void __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1); -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3); -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, wchar_t *a2, int a3); -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3); -int __thiscall std::wfilebuf::swap(int this, int a2); -int __fastcall std::wfilebuf::sync(_DWORD *a1); -struct _Unwind_Exception *__fastcall std::wfilebuf::close(struct _Unwind_Exception *a1); -char __thiscall std::wfilebuf::imbue(void *this, int a2); -int __thiscall std::wfilebuf::setbuf(int this, __int64 a2); -int __thiscall std::wfilebuf::xsgetn(_DWORD *this, char *a2, signed int a3); -int __thiscall std::wfilebuf::xsputn(int this, char *a2, signed int a3); -_DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5); -_DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5); -_DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6); -int __thiscall std::wfilebuf::overflow(int this, int a2); -int __thiscall std::wfilebuf::pbackfail(char *this, int a2); -int __fastcall std::wfilebuf::showmanyc(_DWORD *a1); -int __fastcall std::wfilebuf::underflow(int a1); -int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *a2); -void __fastcall std::wfilebuf::basic_filebuf(int a1); -int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *a2); -void __fastcall std::wfilebuf::basic_filebuf(int a1); -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1); -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1); -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1); -int __thiscall std::wfilebuf::operator=(int this, int a2); -int __thiscall std::fstream::open(int *this, char *a2, int a3); -int __thiscall std::fstream::open(int *this, wchar_t *a2, int a3); -int __thiscall std::fstream::open(int *this, char **a2, int a3); -void __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2); -struct _Unwind_Exception *__fastcall std::fstream::close(_DWORD *a1); -bool __fastcall std::fstream::is_open(int a1); -void __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2); -void __thiscall std::fstream::basic_fstream(_DWORD *this, char *a2, int a3); -void __thiscall std::fstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3); -void __thiscall std::fstream::basic_fstream(_DWORD *this, char **a2, int a3); -void __fastcall std::fstream::basic_fstream(int a1); -void __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::fstream::basic_fstream(int *this, int *a2, char *a3, int a4); -void __thiscall std::fstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4); -void __thiscall std::fstream::basic_fstream(int *this, int *a2, char **a3, int a4); -void __thiscall std::fstream::basic_fstream(int *this, int *a2); -void __fastcall std::fstream::~fstream(_DWORD *a1); -void __fastcall std::fstream::~fstream(int a1); -void __thiscall std::fstream::~fstream(int *this, int *a2); -_DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::wfstream::open(int *this, char *a2, int a3); -int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3); -int __thiscall std::wfstream::open(int *this, char **a2, int a3); -void __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2); -struct _Unwind_Exception *__fastcall std::wfstream::close(_DWORD *a1); -bool __fastcall std::wfstream::is_open(int a1); -void __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2); -void __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3); -void __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3); -void __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3); -void __fastcall std::wfstream::basic_fstream(int a1); -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4); -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4); -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4); -void __thiscall std::wfstream::basic_fstream(int *this, int *a2); -void __fastcall std::wfstream::~wfstream(_DWORD *a1); -void __fastcall std::wfstream::~wfstream(int a1); -void __thiscall std::wfstream::~wfstream(int *this, int *a2); -_DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2); -int __fastcall std::wistream::get(_DWORD *a1); -int __fastcall std::wistream::peek(_DWORD *a1); -_DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3); -void __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2); -int __fastcall std::wistream::sync(_DWORD *a1); -_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5); -_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4); -_DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2); -int *__fastcall std::wistream::unget(int *a1); -_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2); -_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, __int16 a3); -_DWORD *__fastcall std::wistream::ignore(_DWORD *a1); -void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); -void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); -_DWORD *__thiscall std::wistream::getline(_DWORD *this, char *a2, int a3); -_DWORD *__thiscall std::wistream::getline(_DWORD *this, char *a2, int a3, __int16 a4); -int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2); -struct _Unwind_Exception *__thiscall std::wistream::readsome(_DWORD *this, int a2, int a3); -void __thiscall std::wistream::basic_istream(_DWORD *this, int *a2); -void __thiscall std::wistream::basic_istream(_DWORD *this, int a2); -void __fastcall std::wistream::basic_istream(int a1); -int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3); -BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3); -BOOL __thiscall std::wistream::basic_istream(int *this, int *a2); -void __fastcall std::wistream::~wistream(char *Block); -void __fastcall std::wistream::~wistream(_DWORD *a1); -int __thiscall std::wistream::~wistream(int *this, int *a2); -_DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)); -char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)); -char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)); -_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _WORD *a2); -int *__thiscall std::wostream::put(int *this, unsigned __int16 a2); -void __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2); -_DWORD *__fastcall std::wostream::flush(_DWORD *a1); -_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5); -_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4); -_DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2); -int *__thiscall std::wostream::write(int *this, int a2, int a3); -int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2); -int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2); -void __fastcall std::wostream::sentry::~sentry(int a1); -void __fastcall std::wostream::sentry::~sentry(int a1); -int __thiscall std::wostream::_M_write(_DWORD *this, int a2, int a3); -int *__thiscall std::wostream::_M_insert(int *this, int a2); -int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2); -int *__thiscall std::wostream::_M_insert(int *this, double a2); -int *__thiscall std::wostream::_M_insert(int *this, long double a2); -int *__thiscall std::wostream::_M_insert(int *this, int a2); -int *__thiscall std::wostream::_M_insert(int *this, int a2); -int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3); -int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3); -void __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *a2); -void __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); -int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); -void __fastcall std::wostream::basic_ostream(int a1); -int __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *a2, _DWORD *a3); -BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3); -int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3); -BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2); -void __fastcall std::wostream::~wostream(char *Block); -void __fastcall std::wostream::~wostream(_DWORD *a1); -int __thiscall std::wostream::~wostream(int *this, int *a2); -_DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)); -char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)); -char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)); -int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2); -int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2); -int *__thiscall std::wostream::operator<<(int *this, float a2); -int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2); -int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2); -void __thiscall std::random_device::_M_init_pretr1(_DWORD *this, unsigned __int8 **a2); -// void __userpurge std::random_device::_M_init_pretr1(_DWORD *a1@, std::random_device **this, const std::string *a3); -int __fastcall std::random_device::_M_fini(int *a1); -// void __userpurge std::random_device::_M_init(_DWORD *a1@, std::random_device *this, const char *a3, unsigned int a4); -void *__thiscall std::random_device::_M_init(_DWORD *this, int a2); -// void __userpurge std::random_device::_M_init(_DWORD *a1@, std::random_device **this, const std::string *a3); -int __fastcall std::random_device::_M_getval(int a1); -// void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const char *a3); -void __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2); -// void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const std::runtime_error *a3); -// void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const std::string *a3); -void __fastcall std::runtime_error::~runtime_error(void *a1); -void __cdecl std::runtime_error::~runtime_error(std::exception *a1); -int *__thiscall std::runtime_error::operator=(int *this, int a2); -int *__thiscall std::runtime_error::operator=(int *this, int a2); -int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); -int __thiscall std::ifstream::open(int *this, char *a2, int a3); -int __thiscall std::ifstream::open(int *this, wchar_t *a2, int a3); -int __thiscall std::ifstream::open(int *this, char **a2, int a3); -void __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2); -struct _Unwind_Exception *__fastcall std::ifstream::close(_DWORD *a1); -bool __fastcall std::ifstream::is_open(int a1); -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2); -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char *a2, int a3); -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3); -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char **a2, int a3); -void __fastcall std::ifstream::basic_ifstream(int a1); -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char *a3, int a4); -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4); -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char **a3, int a4); -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2); -void __fastcall std::ifstream::~ifstream(_DWORD *a1); -void __fastcall std::ifstream::~ifstream(int a1); -void __thiscall std::ifstream::~ifstream(int *this, int *a2); -_DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::wifstream::open(int *this, char *a2, int a3); -int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3); -int __thiscall std::wifstream::open(int *this, char **a2, int a3); -void __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2); -struct _Unwind_Exception *__fastcall std::wifstream::close(_DWORD *a1); -bool __fastcall std::wifstream::is_open(int a1); -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2); -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3); -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3); -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3); -void __fastcall std::wifstream::basic_ifstream(int a1); -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4); -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4); -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4); -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2); -void __fastcall std::wifstream::~wifstream(_DWORD *a1); -void __fastcall std::wifstream::~wifstream(int a1); -void __thiscall std::wifstream::~wifstream(int *this, int *a2); -_DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2); -void __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2); -void __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2); -void __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2); -void __fastcall std::wiostream::basic_iostream(int a1); -int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3); -void __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3); -void __thiscall std::wiostream::basic_iostream(int *this, int *a2); -void __fastcall std::wiostream::~basic_iostream(char *Block); -void __fastcall std::wiostream::~basic_iostream(int a1); -int __thiscall std::wiostream::~basic_iostream(int *this, int *a2); -_DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::ofstream::open(int *this, char *a2, int a3); -int __thiscall std::ofstream::open(int *this, wchar_t *a2, int a3); -int __thiscall std::ofstream::open(int *this, char **a2, int a3); -void __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2); -struct _Unwind_Exception *__fastcall std::ofstream::close(_DWORD *a1); -bool __fastcall std::ofstream::is_open(int a1); -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, _DWORD *a2); -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char *a2, int a3); -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3); -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char **a2, int a3); -void __fastcall std::ofstream::basic_ofstream(int a1); -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char *a3, int a4); -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4); -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char **a3, int a4); -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2); -void __fastcall std::ofstream::~ofstream(_DWORD *a1); -void __fastcall std::ofstream::~ofstream(int a1); -void __thiscall std::ofstream::~ofstream(int *this, int *a2); -_DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::wofstream::open(int *this, char *a2, int a3); -int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3); -int __thiscall std::wofstream::open(int *this, char **a2, int a3); -void __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2); -struct _Unwind_Exception *__fastcall std::wofstream::close(_DWORD *a1); -bool __fastcall std::wofstream::is_open(int a1); -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, _DWORD *a2); -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3); -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3); -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3); -void __fastcall std::wofstream::basic_ofstream(int a1); -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4); -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4); -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4); -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2); -void __fastcall std::wofstream::~wofstream(_DWORD *a1); -void __fastcall std::wofstream::~wofstream(int a1); -void __thiscall std::wofstream::~wofstream(int *this, int *a2); -_DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block); -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block); -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); -// void __userpurge std::overflow_error::overflow_error(_DWORD *a1@, std::overflow_error *this, const char *a3); -void __thiscall std::overflow_error::overflow_error(_DWORD *this, int a2); -// void __userpurge std::overflow_error::overflow_error(_DWORD *a1@, std::overflow_error *this, const std::string *a3); -void __fastcall std::overflow_error::~overflow_error(_DWORD *a1); -void __cdecl std::overflow_error::~overflow_error(std::exception *a1); -void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1); -void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1, int a2); -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_destroy(void *Block); -int __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_dispose(int a1); -int __stdcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_get_deleter(int a1); -void __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr(void *Block); -_DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); -_DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); -int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2); -int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2); -int __thiscall std::streambuf::setg(_DWORD *this, int a2, int a3, int a4); -int __thiscall std::streambuf::setp(_DWORD *this, int a2, int a3); -void __thiscall std::streambuf::swap(int this, int a2); -int std::streambuf::sync(); -int __thiscall std::streambuf::gbump(_DWORD *this, int a2); -int __stdcall std::streambuf::imbue(int); // weak -int __thiscall std::streambuf::pbump(_DWORD *this, int a2); -int __fastcall std::streambuf::sgetc(_DWORD *a1); -int __fastcall std::streambuf::sgetn(int a1); -int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8 a2); -int __fastcall std::streambuf::sputn(int a1); -int __fastcall std::streambuf::uflow(_DWORD *a1); -int __fastcall std::streambuf::sbumpc(_DWORD *a1); -void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3); -int __fastcall std::streambuf::snextc(_DWORD *a1); -int (*__fastcall std::streambuf::stossc(_DWORD *a1))(void); -int __thiscall std::streambuf::xsgetn(_DWORD *this, char *a2, int a3); -int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3); -int __fastcall std::streambuf::pubsync(int a1); -_DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); -_DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); -int __fastcall std::streambuf::sungetc(_DWORD *a1); -int __fastcall std::streambuf::in_avail(_DWORD *a1); -int __stdcall std::streambuf::overflow(int a1); -volatile signed __int32 **__thiscall std::streambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); -int __stdcall std::streambuf::pbackfail(int a1); -int __thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3); -int std::streambuf::showmanyc(); -int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8 a2); -int std::streambuf::underflow(); -// volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *a1@, std::locale *a2, const std::locale *a3); -void __fastcall std::streambuf::basic_streambuf(_DWORD *a1); -// volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *a1@, std::locale *a2, const std::locale *a3); -void __fastcall std::streambuf::basic_streambuf(_DWORD *a1); -void __fastcall std::streambuf::~streambuf(char *Block); -void __fastcall std::streambuf::~streambuf(int a1); -void __fastcall std::streambuf::~streambuf(int a1); -volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int a2); -_DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); -_DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); -int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2); -int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2); -int __thiscall std::wstreambuf::setg(_DWORD *this, int a2, int a3, int a4); -int __thiscall std::wstreambuf::setp(_DWORD *this, int a2, int a3); -void __thiscall std::wstreambuf::swap(int this, int a2); -int std::wstreambuf::sync(); -int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2); -int __stdcall std::wstreambuf::imbue(int); // weak -int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2); -int __fastcall std::wstreambuf::sgetc(_DWORD *a1); -int __fastcall std::wstreambuf::sgetn(int a1); -int __thiscall std::wstreambuf::sputc(_DWORD *this, int a2); -int __fastcall std::wstreambuf::sputn(int a1); -int __fastcall std::wstreambuf::uflow(_DWORD *a1); -int __fastcall std::wstreambuf::sbumpc(_DWORD *a1); -void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3); -int __fastcall std::wstreambuf::snextc(_DWORD *a1); -int (*__fastcall std::wstreambuf::stossc(_DWORD *a1))(void); -int __thiscall std::wstreambuf::xsgetn(_DWORD *this, char *a2, int a3); -int __thiscall std::wstreambuf::xsputn(_DWORD *this, char *a2, int a3); -int __fastcall std::wstreambuf::pubsync(int a1); -_DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); -_DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); -int __fastcall std::wstreambuf::sungetc(_DWORD *a1); -int __fastcall std::wstreambuf::in_avail(_DWORD *a1); -int __stdcall std::wstreambuf::overflow(int a1); -volatile signed __int32 **__thiscall std::wstreambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); -int __stdcall std::wstreambuf::pbackfail(int a1); -int __thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3); -int std::wstreambuf::showmanyc(); -int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2); -int std::wstreambuf::underflow(); -// volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *a1@, std::locale *a2, const std::locale *a3); -void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); -// volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *a1@, std::locale *a2, const std::locale *a3); -void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); -void __fastcall std::wstreambuf::~wstreambuf(char *Block); -void __fastcall std::wstreambuf::~wstreambuf(int a1); -void __fastcall std::wstreambuf::~wstreambuf(int a1); -volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int a2); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block); -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block); -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block); -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); -void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block); -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); -// void __userpurge std::underflow_error::underflow_error(_DWORD *a1@, std::underflow_error *this, const char *a3); -void __thiscall std::underflow_error::underflow_error(_DWORD *this, int a2); -// void __userpurge std::underflow_error::underflow_error(_DWORD *a1@, std::underflow_error *this, const std::string *a3); -void __fastcall std::underflow_error::~underflow_error(_DWORD *a1); -void __cdecl std::underflow_error::~underflow_error(std::exception *a1); -int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1); -void __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(int a1); -void __thiscall std::__numpunct_cache::_M_cache(int this, int a2); -int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); -int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); -void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1); -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); -void __thiscall std::__numpunct_cache::_M_cache(int this, int a2); -BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); -BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); -void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1); -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); -// void __userpurge std::invalid_argument::invalid_argument(_DWORD *a1@, std::invalid_argument *this, const char *a3); -void __thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2); -// void __userpurge std::invalid_argument::invalid_argument(_DWORD *a1@, std::invalid_argument *this, const std::string *a3); -void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1); -void __cdecl std::invalid_argument::~invalid_argument(std::exception *a1); -int *__fastcall std::_Rb_tree_iterator>>::operator++(int *a1); -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); -void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block); -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); -void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block); -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block); -void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block); -void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block); -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); -void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1); -void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *__hidden this); // idb -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block); -void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block); -void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block); -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); -char *__cdecl std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>(int a1, int a2, char *a3); -int __cdecl std::__uninitialized_copy::__uninit_copy(night::ns_sourcemap *a1, night::ns_sourcemap *a2, int a3); -void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1); -void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1); -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block); -void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block); -void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block); -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); -void __fastcall std::_V2::error_category::~error_category(void *Block); -void __cdecl std::_V2::error_category::~error_category(std::_V2::error_category *__hidden this); // idb -void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this); -void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this); -char *__thiscall std::map>::operator[](_DWORD *this, int a2); -_DWORD *__thiscall std::map,std::allocator>>>::operator[](_DWORD *this, _DWORD *a2); -char *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2); -char *__thiscall std::map::operator[](_DWORD *this, int a2); -_DWORD *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2); -char *__thiscall std::map::operator[](_DWORD *this, int a2); -char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2); -char *__thiscall std::map>::operator[](_DWORD *this, int a2); -char *__thiscall std::map::operator[](_DWORD *this, int a2); -void **__thiscall std::map::operator[](void **this, int a2); -_DWORD *__thiscall std::map>>::operator[](_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::map>>::operator[](_DWORD *this, int *a2); -char *__thiscall std::map::operator[](_DWORD *this, unsigned int *a2); -char *__thiscall std::set::insert(_DWORD *this, int a2); -void __thiscall std::pair::swap(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::pair::pair(_DWORD *this, _DWORD *a2); -void __fastcall std::pair::~pair(void **a1); -int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, _BYTE *a4, int a5, int a6); -_WORD *__cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, _WORD *Size, _WORD *a4, int a5, int a6); -void *std::ctype::classic_table(); -int __thiscall std::ctype::ctype(_DWORD *this, void *a2, char a3, int a4); -int __thiscall std::ctype::ctype(_DWORD *this, int a2, void *a3, char a4, int a5); -void __fastcall std::ctype::~ctype(void **Block); -void __fastcall std::ctype::~ctype(int a1); -int __fastcall std::ctype::_M_initialize_ctype(int a1); -int __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3); -void __thiscall std::ctype::ctype(_DWORD *this, int a2); -void __fastcall std::ctype::~ctype(_DWORD *Block); -void __fastcall std::ctype::~ctype(_DWORD *a1); -int __fastcall std::deque>::back(_DWORD *a1); -int __fastcall std::deque>::pop_back(_DWORD *a1); -void __thiscall std::deque>::push_back(int this, _DWORD *a2); -int __fastcall std::deque>::back(_DWORD *a1); -int __fastcall std::deque>::pop_back(_DWORD *a1); -void __thiscall std::deque>::push_back(int this, int *a2); -int __fastcall std::deque>::pop_back(_DWORD *a1); -void __thiscall std::deque>::push_back(int this, int *a2); -void __thiscall std::deque::_M_push_back_aux(int this, int a2); -void __fastcall std::deque::pop_back(_DWORD *a1); -std::locale *std::locale::_S_initialize(); -std::locale *std::locale::_S_initialize_once(); -std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this); -// void __userpurge std::locale::_Impl::_M_init_extra(int a1@, std::locale::_Impl *this, std::locale::facet **a3); -// void __userpurge std::locale::_Impl::_M_init_extra(int a1@, std::locale::_Impl *this, int *a3, int **a4, const char *a5, const char *a6); -// void __userpurge std::locale::_Impl::_M_install_cache(int a1@, std::locale::_Impl *this, const std::locale::facet *a3, unsigned int a4); -// void __userpurge std::locale::_Impl::_M_install_facet(_DWORD *a1@, std::locale::_Impl *this, const std::locale::id *a3, const std::locale::facet *a4); -// void __userpurge std::locale::_Impl::_M_replace_facet(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, const std::locale::id *a4); -// int __userpurge std::locale::_Impl::_M_replace_category@(int result@, _DWORD *a2@, std::locale::_Impl *this, volatile signed __int32 **a4, const std::locale::id *const *a5); -// void __userpurge std::locale::_Impl::_Impl(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, unsigned int a4); -// void __userpurge std::locale::_Impl::_Impl(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3); -void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1); -int *const *std::locale::facet::_S_get_c_name(); -int std::locale::facet::_S_get_c_locale(); -int __cdecl std::locale::facet::_S_clone_c_locale(); -int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **a2); -int **std::locale::facet::_S_initialize_once(); -std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this); -int __cdecl std::locale::facet::_S_lc_ctype_c_locale(); -void __fastcall std::locale::facet::~facet(void *Block); -void __cdecl std::locale::facet::~facet(std::locale::facet *__hidden this); // idb -std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2); -_DWORD *std::locale::classic(); -// std::locale *__userpurge std::locale::locale@(_DWORD *a1@, std::locale *this, std::locale::_Impl *a3); -// volatile signed __int32 *__userpurge std::locale::locale@(volatile signed __int32 **a1@, volatile signed __int32 **this, const std::locale *a3); -void __fastcall std::locale::locale(_DWORD *a1); -void __fastcall std::locale::~locale(_DWORD **a1); -volatile signed __int32 **__thiscall std::locale::operator=(volatile signed __int32 **this, volatile signed __int32 **a2); -char *__thiscall std::vector>::_M_realloc_insert const&>(_DWORD *this, char *a2, _DWORD *a3); -int __thiscall std::vector>::_M_erase(_DWORD *this, int a2); -void __thiscall std::vector>::push_back(_DWORD *this, _DWORD *a2); -char *__thiscall std::vector>::_M_realloc_insert const&>(int **this, int *a2, int *a3); -void __thiscall std::vector>::push_back(int **this, int *a2); -char *__thiscall std::vector>::_M_realloc_insert const&>(_DWORD *this, char *a2, _DWORD *a3); -char *__thiscall std::vector>::push_back(_DWORD *this, _DWORD *a2); -void __thiscall std::vector>::vector(_DWORD *this, _DWORD *a2); -void __fastcall std::vector>::~vector(void **a1); -void __thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3); -void __thiscall std::vector::push_back(char **this, _DWORD *a2); -void __fastcall std::vector::~vector(void **a1); -void __thiscall std::vector::_M_realloc_insert(void **this, int a2, WXML::DOMLib::Token *a3); -void __thiscall std::vector::push_back(int this, WXML::DOMLib::Token *a2); -void __fastcall std::vector::~vector(void **a1); -void __thiscall std::vector::_M_realloc_insert(struct _Unwind_Exception **this, void **a2, _DWORD *a3); -void __thiscall std::vector::push_back(int this, _DWORD *a2); -void __fastcall std::vector::~vector(void ***a1); -_DWORD *__thiscall std::vector::_M_realloc_insert(_DWORD *this, char *a2, WXML::EXPRLib::Token *a3); -void __fastcall std::vector::~vector(void **a1); -void __thiscall std::vector::_M_realloc_insert(night::ns_sourcemap **this, night::ns_sourcemap *a2, night::ns_sourcemap *a3); -int __thiscall std::vector::at(int *this, unsigned int a2); -void __thiscall std::vector::push_back(night::ns_sourcemap **this, night::ns_sourcemap *a2); -void __fastcall std::vector::~vector(void ***a1, int a2); -_DWORD *__thiscall std::vector::emplace_back(void **this, _DWORD *a2); -void __thiscall std::vector::_M_realloc_insert(void **this, char *a2, int a3); -int __thiscall std::vector::_M_realloc_insert(void **this, char *a2, _DWORD *a3); -void __thiscall std::vector::push_back(int this, int a2); -void __fastcall std::vector::~vector(void ***a1, int a2); -char *__thiscall std::vector::_M_realloc_insert(void **this, _BYTE *a2, _DWORD *a3); -char *__thiscall std::vector::push_back(int this, _DWORD *a2); -char *__thiscall std::vector::emplace_back(void **this, char **a2); -int __thiscall std::vector::at(_DWORD *this, unsigned int a2); -char *__thiscall std::vector::push_back(void **this, char **a2); -char *__thiscall std::vector>>::_M_realloc_insert> const&>(void **this, _BYTE *a2, _DWORD *a3); -int __thiscall std::vector>>::at(_DWORD *this, unsigned int a2); -char *__thiscall std::vector>>::push_back(int this, _DWORD *a2); -char **__thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); -void __fastcall std::vector>::~vector(void ***a1); -_DWORD *__thiscall std::vector>::emplace_back>(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::vector>::_M_realloc_insert>(_DWORD *this, char *a2, _DWORD *a3); -void __fastcall std::vector>::~vector(void ***a1); -char **__thiscall std::vector>::emplace_back>(int this, _DWORD *a2); -char **__thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); -void __fastcall std::vector>::~vector(void ***a1); -char *__thiscall std::vector>::_M_realloc_insert>(_DWORD *this, char *a2, _DWORD *a3); -void __fastcall std::vector>::~vector(void **a1); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1); -void __thiscall std::string::_M_destroy(void **this, int a2); -void __fastcall std::string::_M_dispose(void **a1); -unsigned int *__thiscall std::string::_M_replace(unsigned int *this, size_t a2, size_t a3, char *Src, size_t a5); -int __cdecl std::string::_S_compare(int a1, int a2); -int __thiscall std::string::_M_capacity(_DWORD *this, int a2); -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t Size, char a3); -_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int a3, int a4); -_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int a3, int a4); -unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4); -int __fastcall std::string::_M_local_data(int a1); -int __thiscall std::string::_M_set_length(int *this, int a2); -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size); -void __fastcall std::string::shrink_to_fit(_DWORD *a1); -_DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t a2, int a3, size_t a4, char a5); -int __fastcall std::string::_M_get_allocator(int a1); -_BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t Size, char a3); -unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2); -int __fastcall std::string::end(_DWORD *a1); -int __fastcall std::string::back(_DWORD *a1); -_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2); -_BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *a2); -int __fastcall std::string::begin(int a1); -_BYTE *__fastcall std::string::clear(int a1); -char *__thiscall std::string::erase(int *this, char *a2); -int __thiscall std::string::erase(int *this, _BYTE *a2, int a3); -int __thiscall std::string::erase(int *this, int a2); -int __thiscall std::string::erase(int *this, _BYTE *a2, int a3); -int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3); -int __fastcall std::string::front(int a1); -_DWORD *__thiscall std::string::append(_DWORD *this, char *Str); -_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size); -_DWORD *__thiscall std::string::append(_DWORD *this, int a2); -_DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4); -_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size); -_DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3); -_DWORD *__thiscall std::string::assign(_DWORD *this, int a2); -unsigned int *__thiscall std::string::assign(unsigned int *this, char *Str); -unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3); -void *__thiscall std::string::assign(void *this, int a2); -unsigned int *__thiscall std::string::assign(unsigned int *this, _DWORD *a2, unsigned int a3, size_t a4); -unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3); -_DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3); -size_t __thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4); -size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3); -size_t __thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4); -unsigned int *__thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4); -size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3); -_DWORD *__thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4); -unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *Str); -unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *a3, size_t a4); -unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, int a3); -unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, _DWORD *a3, char *a4, size_t a5); -_DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int a2, size_t a3, char a4); -unsigned int *__thiscall std::string::insert<__gnu_cxx::__normal_iterator>(unsigned int *this, int a2, char *a3, int a4); -_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2); -_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2, char a3); -int __thiscall std::string::_M_data(_DWORD *this, int a2); -int __cdecl std::string::_S_copy(_BYTE *a1, unsigned __int8 *Src, int Size); -int __cdecl std::string::_S_move(_BYTE *a1, unsigned __int8 *Src, int Size); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); -_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *Str); -unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *a4, size_t a5); -unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, int a4); -unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6); -_DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5); -void __thiscall std::string::reserve(_DWORD *this, unsigned int a2); -int __thiscall std::string::_M_erase(int *this, int a2, int a3); -int __fastcall std::string::pop_back(_DWORD *a1); -_DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size); -void __thiscall std::string::_M_assign(int this, int a2); -void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2); -int __thiscall std::string::_M_length(_DWORD *this, int a2); -size_t __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5); -void *__cdecl std::string::_S_assign(_BYTE *a1, void *Val, size_t Size); -_DWORD *__thiscall std::string::push_back(_DWORD *this, char a2); -_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); -char *__thiscall std::string::basic_string(_DWORD *this, int a2); -_BYTE *__thiscall std::string::basic_string(char *this, int a2); -_BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); -_BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4); -int __fastcall std::string::basic_string(int a1); -_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(char *this, char *Src, int a3, int a4); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); -_BYTE *__thiscall std::string::basic_string(char *this, char *Src, int a3, int a4); -_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); -char *__thiscall std::string::basic_string(_DWORD *this, int a2); -_BYTE *__thiscall std::string::basic_string(char *this, int a2); -_BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); -_BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4); -int __fastcall std::string::basic_string(int a1); -_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(char *this, char *Src, int a3, int a4); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); -_BYTE *__thiscall std::string::basic_string(char *this, char *Src, int a3, int a4); -void __fastcall std::string::~string(void **a1); -void __fastcall std::string::~string(void **a1); -_DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *a2); -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); -void *__thiscall std::string::operator=(void *this, int a2); -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *a2, size_t a3); -_DWORD *__thiscall std::string::operator=(_DWORD *this, char a2); -int __thiscall std::string::operator[](_DWORD *this, int a2); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *Src, size_t Size); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char a2); -void __thiscall std::wstring::_M_destroy(void **this, int a2); -void __fastcall std::wstring::_M_dispose(void **a1); -unsigned int *__thiscall std::wstring::_M_replace(unsigned int *this, int a2, unsigned int a3, _WORD *Src, unsigned int a5); -int __cdecl std::wstring::_S_compare(int a1, int a2); -int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2); -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); -int __thiscall std::wstring::_M_construct(_DWORD *this, unsigned int a2, __int16 a3); -_WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int a3, int a4); -_WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int a3, int a4); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3); -int __fastcall std::wstring::_M_local_data(int a1); -int __thiscall std::wstring::_M_set_length(int *this, int a2); -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size); -void __fastcall std::wstring::shrink_to_fit(_DWORD *a1); -_DWORD *__thiscall std::wstring::_M_replace_aux(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5); -int __fastcall std::wstring::_M_get_allocator(int a1); -int __thiscall std::wstring::_M_construct_aux_2(_DWORD *this, unsigned int a2, __int16 a3); -int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); -int __fastcall std::wstring::end(_DWORD *a1); -int __fastcall std::wstring::back(_DWORD *a1); -_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); -_WORD *__thiscall std::wstring::swap(_DWORD *this, _DWORD *a2); -int __fastcall std::wstring::begin(int a1); -_WORD *__fastcall std::wstring::clear(int a1); -char *__thiscall std::wstring::erase(int *this, char *a2); -_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3); -int __thiscall std::wstring::erase(int *this, int a2); -_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3); -int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3); -int __fastcall std::wstring::front(int a1); -_DWORD *__thiscall std::wstring::append(_DWORD *this, wchar_t *String); -_DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3); -_DWORD *__thiscall std::wstring::append(_DWORD *this, int a2); -_DWORD *__thiscall std::wstring::append(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4); -_DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3); -_DWORD *__thiscall std::wstring::append(_DWORD *this, unsigned int a2, __int16 a3); -_DWORD *__thiscall std::wstring::assign(_DWORD *this, _DWORD *a2); -unsigned int *__thiscall std::wstring::assign(unsigned int *this, wchar_t *String); -unsigned int *__thiscall std::wstring::assign(unsigned int *this, _WORD *a2, int a3); -void *__thiscall std::wstring::assign(void *this, int a2); -unsigned int *__thiscall std::wstring::assign(unsigned int *this, _DWORD *a2, unsigned int a3, unsigned int a4); -unsigned int *__thiscall std::wstring::assign(unsigned int *this, _WORD *a2, int a3); -_DWORD *__thiscall std::wstring::assign(_DWORD *this, unsigned int a2, __int16 a3); -unsigned int __thiscall std::wstring::insert(unsigned int *this, int a2, _WORD *a3, int a4); -int __thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4); -int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3); -unsigned int *__thiscall std::wstring::insert(unsigned int *this, int a2, _WORD *a3, int a4); -_DWORD *__thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4); -int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3); -unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, wchar_t *String); -unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, _WORD *a3, int a4); -unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, int a3); -unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, _DWORD *a3, unsigned int a4, unsigned int a5); -_DWORD *__thiscall std::wstring::insert(_DWORD *this, unsigned int a2, unsigned int a3, __int16 a4); -unsigned int *__thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>(unsigned int *this, int a2, _WORD *a3, int a4); -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2); -_DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3); -int __thiscall std::wstring::_M_data(_DWORD *this, int a2); -int __cdecl std::wstring::_S_copy(_WORD *a1, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_move(_WORD *a1, unsigned __int16 *Src, size_t Size); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, int a4); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, wchar_t *String); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -_DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, wchar_t *String); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, int a4); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5); -_DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, wchar_t *String); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, _WORD *a4, int a5); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, int a4); -unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6); -_DWORD *__thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 a5); -void __thiscall std::wstring::reserve(int this, unsigned int a2); -int __thiscall std::wstring::_M_erase(int *this, int a2, int a3); -int __fastcall std::wstring::pop_back(int *a1); -_DWORD *__thiscall std::wstring::_M_append(_DWORD *this, _WORD *Src, int a3); -void __thiscall std::wstring::_M_assign(int this, int a2); -void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2); -int __thiscall std::wstring::_M_length(_DWORD *this, int a2); -unsigned int __thiscall std::wstring::_M_mutate(int this, int a2, int a3, _WORD *a4, int a5); -int __cdecl std::wstring::_S_assign(_WORD *a1, int a2, __int16 a3); -_DWORD *__thiscall std::wstring::push_back(_DWORD *this, __int16 a2); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -int __thiscall std::wstring::basic_string(_DWORD *this, int a2); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4); -int __fastcall std::wstring::basic_string(int a1); -_WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _WORD *Src, int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -int __thiscall std::wstring::basic_string(_DWORD *this, int a2); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4); -int __fastcall std::wstring::basic_string(int a1); -_WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _WORD *Src, int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4); -void __fastcall std::wstring::~wstring(void **a1); -void __fastcall std::wstring::~wstring(void **a1); -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, int a2); -unsigned int *__thiscall std::wstring::operator=(unsigned int *this, wchar_t *String); -void *__thiscall std::wstring::operator=(void *this, int a2); -unsigned int *__thiscall std::wstring::operator=(unsigned int *this, _WORD *a2, int a3); -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, __int16 a2); -int __thiscall std::wstring::operator[](_DWORD *this, int a2); -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String); -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, int a2); -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, _WORD *Src, unsigned int a3); -int __thiscall std::wstring::operator+=(char *this, __int16 a2); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3); -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); -unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); -unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); -int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); -int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); -unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1); -_DWORD *__thiscall std::stringbuf::_M_stringbuf_init(_DWORD *this, int a2); -int __thiscall std::stringbuf::str(int this, int a2); -void __thiscall std::stringbuf::swap(_DWORD *this, int a2); -_DWORD *__thiscall std::stringbuf::setbuf(int this, _DWORD *a2, int a3); -int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); -_DWORD *__thiscall std::stringbuf::seekoff(_DWORD *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5); -_DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6); -int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4); -int __thiscall std::stringbuf::overflow(_DWORD *this, int a2); -int __thiscall std::stringbuf::pbackfail(int this, int a2); -int __fastcall std::stringbuf::showmanyc(int a1); -int __fastcall std::stringbuf::underflow(int a1); -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2); -std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3); -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2, int a3); -char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2); -int __fastcall std::stringbuf::basic_stringbuf(int a1); -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2); -std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3); -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2, int a3); -char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2); -int __fastcall std::stringbuf::basic_stringbuf(int a1); -void __fastcall std::stringbuf::~stringbuf(_DWORD *Block); -void __fastcall std::stringbuf::~stringbuf(int a1); -int __thiscall std::stringbuf::operator=(int this, int a2); -unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); -unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); -int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); -int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); -unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1); -_DWORD *__thiscall std::wstringbuf::_M_stringbuf_init(_DWORD *this, int a2); -int __thiscall std::wstringbuf::str(int this, int a2); -void __thiscall std::wstringbuf::swap(_DWORD *this, int a2); -_DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3); -int __thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); -_DWORD *__thiscall std::wstringbuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, unsigned int a5); -_DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6); -int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4); -int __thiscall std::wstringbuf::overflow(_DWORD *this, unsigned __int16 a2); -int __thiscall std::wstringbuf::pbackfail(int this, int a2); -int __fastcall std::wstringbuf::showmanyc(int a1); -int __fastcall std::wstringbuf::underflow(int a1); -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2); -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3); -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2, int a3); -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2); -int __fastcall std::wstringbuf::basic_stringbuf(int a1); -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2); -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3); -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2, int a3); -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2); -int __fastcall std::wstringbuf::basic_stringbuf(int a1); -void __fastcall std::wstringbuf::~wstringbuf(_DWORD *Block); -void __fastcall std::wstringbuf::~wstringbuf(int a1); -int __thiscall std::wstringbuf::operator=(int this, int a2); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block); -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block); -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); -int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); -void __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int *a2); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2, int a3); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); -void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3, int a4); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *Block); -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); -int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); -_DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); -void __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, _DWORD *a2); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2, int a3); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); -void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3, int a4); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *Block); -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); -int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); -_DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::istringstream::str(int this, int a2); -void __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2); -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2); -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2, int a3); -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2); -void __fastcall std::istringstream::basic_istringstream(int a1); -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3, int a4); -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3); -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2); -void __fastcall std::istringstream::~istringstream(_DWORD *Block); -void __fastcall std::istringstream::~istringstream(int a1); -int __thiscall std::istringstream::~istringstream(int *this, int *a2); -_DWORD *__thiscall std::istringstream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::wistringstream::str(int this, int a2); -void __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2); -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, _DWORD *a2); -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2, int a3); -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2); -void __fastcall std::wistringstream::basic_istringstream(int a1); -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3, int a4); -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3); -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2); -void __fastcall std::wistringstream::~wistringstream(_DWORD *Block); -void __fastcall std::wistringstream::~wistringstream(int a1); -int __thiscall std::wistringstream::~wistringstream(int *this, int *a2); -_DWORD *__thiscall std::wistringstream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::ostringstream::str(int this, int a2); -void __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2); -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2); -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2, int a3); -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2); -void __fastcall std::ostringstream::basic_ostringstream(int a1); -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4); -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3); -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2); -void __fastcall std::ostringstream::~ostringstream(_DWORD *Block); -void __fastcall std::ostringstream::~ostringstream(int a1); -int __thiscall std::ostringstream::~ostringstream(int *this, int *a2); -_DWORD *__thiscall std::ostringstream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::wostringstream::str(int this, int a2); -void __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2); -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2); -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2, int a3); -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2); -void __fastcall std::wostringstream::basic_ostringstream(int a1); -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3); -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4); -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3); -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2); -void __fastcall std::wostringstream::~wostringstream(_DWORD *Block); -void __fastcall std::wostringstream::~wostringstream(int a1); -int __thiscall std::wostringstream::~wostringstream(int *this, int *a2); -_DWORD *__thiscall std::wostringstream::operator=(_DWORD *this, _DWORD *a2); -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); -void __thiscall std::collate::collate(_DWORD *this, int a2); -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); -void __thiscall std::collate::collate(_DWORD *this, int a2); -void __fastcall std::collate::~collate(_DWORD *Block); -void __fastcall std::collate::~collate(_DWORD *a1); -void __fastcall std::collate::~collate(_DWORD *a1); -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); -void __thiscall std::collate::collate(_DWORD *this, int a2); -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); -void __thiscall std::collate::collate(_DWORD *this, int a2); -void __fastcall std::collate::~collate(_DWORD *Block); -void __fastcall std::collate::~collate(_DWORD *a1); -void __fastcall std::collate::~collate(_DWORD *a1); -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::messages::messages(_DWORD *this, int a2); -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::messages::messages(_DWORD *this, int a2); -void __fastcall std::messages::~messages(_DWORD *Block); -void __fastcall std::messages::~messages(_DWORD *a1); -void __fastcall std::messages::~messages(_DWORD *a1); -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::messages::messages(_DWORD *this, int a2); -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::messages::messages(_DWORD *this, int a2); -void __fastcall std::messages::~messages(_DWORD *Block); -void __fastcall std::messages::~messages(_DWORD *a1); -void __fastcall std::messages::~messages(_DWORD *a1); -_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); -void __fastcall std::numpunct::~numpunct(_DWORD *a1); -void __fastcall std::numpunct::~numpunct(_DWORD *a1); -int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); -void __fastcall std::numpunct::~numpunct(_DWORD *a1); -void __fastcall std::numpunct::~numpunct(_DWORD *a1); -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); -void __fastcall std::time_get>::~time_get(_DWORD *Block); -void __cdecl std::time_get>::~time_get(std::locale::facet *a1); -void __cdecl std::time_get>::~time_get(std::locale::facet *a1); -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); -void __fastcall std::time_get>::~time_get(_DWORD *Block); -void __cdecl std::time_get>::~time_get(std::locale::facet *a1); -void __cdecl std::time_get>::~time_get(std::locale::facet *a1); -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); -void __fastcall std::money_get>::~money_get(_DWORD *Block); -void __cdecl std::money_get>::~money_get(std::locale::facet *a1); -void __cdecl std::money_get>::~money_get(std::locale::facet *a1); -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); -void __fastcall std::money_get>::~money_get(_DWORD *Block); -void __cdecl std::money_get>::~money_get(std::locale::facet *a1); -void __cdecl std::money_get>::~money_get(std::locale::facet *a1); -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); -void __fastcall std::money_put>::~money_put(_DWORD *Block); -void __cdecl std::money_put>::~money_put(std::locale::facet *a1); -void __cdecl std::money_put>::~money_put(std::locale::facet *a1); -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); -void __fastcall std::money_put>::~money_put(_DWORD *Block); -void __cdecl std::money_put>::~money_put(std::locale::facet *a1); -void __cdecl std::money_put>::~money_put(std::locale::facet *a1); -std::__cxx11 *__cdecl std::to_string(std::__cxx11 *this, unsigned int a2); -std::__cxx11 *__cdecl std::to_string(std::__cxx11 *this, unsigned int a2); -void __fastcall std::codecvt::~codecvt(_DWORD *Block); -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); -void __fastcall std::codecvt::~codecvt(_DWORD *Block); -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); -void __fastcall std::codecvt::~codecvt(_DWORD *Block); -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); -void __fastcall std::codecvt::~codecvt(_DWORD *Block); -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); -int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); -void __thiscall std::codecvt::codecvt(_DWORD *this, int a2); -void __fastcall std::codecvt::~codecvt(_DWORD *a1); -void __fastcall std::codecvt::~codecvt(_DWORD *a1); -int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); -void __thiscall std::codecvt::codecvt(_DWORD *this, int a2); -void __fastcall std::codecvt::~codecvt(_DWORD *a1); -void __fastcall std::codecvt::~codecvt(_DWORD *a1); -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); -void __thiscall std::collate::collate(_DWORD *this, int a2); -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); -void __thiscall std::collate::collate(_DWORD *this, int a2); -void __fastcall std::collate::~collate(_DWORD *Block); -void __fastcall std::collate::~collate(_DWORD *a1); -void __fastcall std::collate::~collate(_DWORD *a1); -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); -void __thiscall std::collate::collate(_DWORD *this, int a2); -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); -void __thiscall std::collate::collate(_DWORD *this, int a2); -void __fastcall std::collate::~collate(_DWORD *Block); -void __fastcall std::collate::~collate(_DWORD *a1); -void __fastcall std::collate::~collate(_DWORD *a1); -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); -void __fastcall std::num_get>::~num_get(_DWORD *Block); -void __cdecl std::num_get>::~num_get(std::locale::facet *a1); -void __cdecl std::num_get>::~num_get(std::locale::facet *a1); -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); -void __fastcall std::num_get>::~num_get(_DWORD *Block); -void __cdecl std::num_get>::~num_get(std::locale::facet *a1); -void __cdecl std::num_get>::~num_get(std::locale::facet *a1); -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); -void __fastcall std::num_put>::~num_put(_DWORD *Block); -void __cdecl std::num_put>::~num_put(std::locale::facet *a1); -void __cdecl std::num_put>::~num_put(std::locale::facet *a1); -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); -void __fastcall std::num_put>::~num_put(_DWORD *Block); -void __cdecl std::num_put>::~num_put(std::locale::facet *a1); -void __cdecl std::num_put>::~num_put(std::locale::facet *a1); -int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique(_DWORD *this, _DWORD *a2); -int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos(_DWORD *this, int a2); -int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(int a1); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); -_DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::lower_bound(_DWORD *this, int a2); -_DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); -int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); -int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -char *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>(_DWORD *this, int a2); -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::equal_range(_DWORD *this, int a2); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); -struct _Unwind_Exception *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>(_DWORD *this, char **a2); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::lower_bound(_DWORD *this, int a2); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::lower_bound(_DWORD *this, int a2); -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree(_DWORD *this, int a2); -void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); -int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos(_DWORD *this, _DWORD *a2); -int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int *a3); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, unsigned int *a2); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, unsigned int *a3); -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); -void __fastcall std::bad_cast::~bad_cast(_DWORD *a1); -void __cdecl std::bad_cast::~bad_cast(std::exception *a1); -// int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, int this, char a3, bool a4); -int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this); -void __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2); -_DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3); -void __fastcall std::ios_base::_M_dispose_callbacks(int a1); -void std::ios_base::Init::Init(); -void std::ios_base::Init::Init(); -void __cdecl std::ios_base::Init::~Init(); -volatile signed __int32 **__thiscall std::ios_base::imbue(volatile signed __int32 **ecx0, volatile signed __int32 **this, volatile signed __int32 **a3); -int std::ios_base::xalloc(); -void __fastcall std::ios_base::_M_init(int a1); -// volatile signed __int32 **__userpurge std::ios_base::_M_move@(int a1@, std::ios_base *this, std::ios_base *a3); -// void __userpurge std::ios_base::_M_swap(std::ios_base *a1@, std::ios_base *this, std::ios_base *a3); -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *a2, int *a3); -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2); -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3); -void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *Block); -void __cdecl std::ios_base::failure[abi:cxx11]::~failure(std::exception *a1); -// void __userpurge std::ios_base::failure::failure(_DWORD *a1@, std::ios_base::failure *this, const std::string *a3); -void __fastcall std::ios_base::failure::~failure(_DWORD *a1); -void __cdecl std::ios_base::failure::~failure(std::ios_base::failure *__hidden this); // idb -void __fastcall std::ios_base::ios_base(_DWORD *a1); -void __fastcall std::ios_base::~ios_base(int a1); -void __fastcall std::ios_base::~ios_base(int a1); -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::messages::messages(_DWORD *this, int a2); -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::messages::messages(_DWORD *this, int a2); -void __fastcall std::messages::~messages(_DWORD *Block); -void __fastcall std::messages::~messages(_DWORD *a1); -void __fastcall std::messages::~messages(_DWORD *a1); -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::messages::messages(_DWORD *this, int a2); -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); -void __thiscall std::messages::messages(_DWORD *this, int a2); -void __fastcall std::messages::~messages(_DWORD *Block); -void __fastcall std::messages::~messages(_DWORD *a1); -void __fastcall std::messages::~messages(_DWORD *a1); -_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); -void __fastcall std::numpunct::~numpunct(_DWORD *a1); -void __fastcall std::numpunct::~numpunct(_DWORD *a1); -int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2); -void __fastcall std::numpunct::~numpunct(_DWORD *a1); -void __fastcall std::numpunct::~numpunct(_DWORD *a1); -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); -void __fastcall std::time_get>::~time_get(_DWORD *Block); -void __cdecl std::time_get>::~time_get(std::locale::facet *a1); -void __cdecl std::time_get>::~time_get(std::locale::facet *a1); -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); -void __fastcall std::time_get>::~time_get(_DWORD *Block); -void __cdecl std::time_get>::~time_get(std::locale::facet *a1); -void __cdecl std::time_get>::~time_get(std::locale::facet *a1); -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); -void __fastcall std::time_put>::~time_put(_DWORD *Block); -void __cdecl std::time_put>::~time_put(std::locale::facet *a1); -void __cdecl std::time_put>::~time_put(std::locale::facet *a1); -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); -void __fastcall std::time_put>::~time_put(_DWORD *Block); -void __cdecl std::time_put>::~time_put(std::locale::facet *a1); -void __cdecl std::time_put>::~time_put(std::locale::facet *a1); -void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1); -void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1); -int __thiscall std::ios::exceptions(_DWORD *this, int a2); -int __thiscall std::ios::_M_setstate(_DWORD *this, int a2); -void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int a2); -int __thiscall std::ios::tie(_DWORD *this, int a2); -int __thiscall std::ios::fill(int this, char a2); -BOOL __thiscall std::ios::init(int this, int a2); -int __thiscall std::ios::move(int this, std::ios_base *a2); -int __thiscall std::ios::move(int this, std::ios_base *a2); -void __thiscall std::ios::swap(int this, std::ios_base *a2); -int __thiscall std::ios::clear(_DWORD *this, int a2); -volatile signed __int32 **__thiscall std::ios::imbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); -int __thiscall std::ios::rdbuf(_DWORD *this, int a2); -int __thiscall std::ios::copyfmt(int this, _DWORD *a2); -int __thiscall std::ios::setstate(_DWORD *this, int a2); -int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2); -void __thiscall std::ios::basic_ios(int this, int a2); -int __fastcall std::ios::basic_ios(int a1); -void __thiscall std::ios::basic_ios(int this, int a2); -int __fastcall std::ios::basic_ios(int a1); -void __fastcall std::ios::~ios(_DWORD *Block); -void __fastcall std::ios::~ios(int a1); -void __fastcall std::ios::~ios(int a1); -int __thiscall std::wios::exceptions(_DWORD *this, int a2); -int __thiscall std::wios::_M_setstate(_DWORD *this, int a2); -void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int a2); -int __thiscall std::wios::tie(_DWORD *this, int a2); -int __thiscall std::wios::fill(int this, __int16 a2); -BOOL __thiscall std::wios::init(int this, int a2); -int __thiscall std::wios::move(int this, std::ios_base *a2); -int __thiscall std::wios::move(int this, std::ios_base *a2); -void __thiscall std::wios::swap(int this, std::ios_base *a2); -int __thiscall std::wios::clear(_DWORD *this, int a2); -volatile signed __int32 **__thiscall std::wios::imbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); -int __thiscall std::wios::rdbuf(_DWORD *this, int a2); -int __thiscall std::wios::copyfmt(int this, _DWORD *a2); -int __thiscall std::wios::setstate(_DWORD *this, int a2); -int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2); -void __thiscall std::wios::basic_ios(int this, int a2); -int __fastcall std::wios::basic_ios(int a1); -void __thiscall std::wios::basic_ios(int this, int a2); -int __fastcall std::wios::basic_ios(int a1); -void __fastcall std::wios::~wios(_DWORD *Block); -void __fastcall std::wios::~wios(int a1); -void __fastcall std::wios::~wios(int a1); -void __fastcall std::exception::~exception(void *Block); -void __cdecl std::exception::~exception(std::exception *__hidden this); // idb -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); -void __fastcall std::money_get>::~money_get(_DWORD *Block); -void __cdecl std::money_get>::~money_get(std::locale::facet *a1); -void __cdecl std::money_get>::~money_get(std::locale::facet *a1); -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); -void __fastcall std::money_get>::~money_get(_DWORD *Block); -void __cdecl std::money_get>::~money_get(std::locale::facet *a1); -void __cdecl std::money_get>::~money_get(std::locale::facet *a1); -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); -void __fastcall std::money_put>::~money_put(_DWORD *Block); -void __cdecl std::money_put>::~money_put(std::locale::facet *a1); -void __cdecl std::money_put>::~money_put(std::locale::facet *a1); -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); -void __fastcall std::money_put>::~money_put(_DWORD *Block); -void __cdecl std::money_put>::~money_put(std::locale::facet *a1); -void __cdecl std::money_put>::~money_put(std::locale::facet *a1); -void __fastcall std::type_info::~type_info(void *Block); -void __cdecl std::type_info::~type_info(std::type_info *__hidden this); // idb -void __cdecl std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(int a1, int a2, unsigned __int8 **a3, int (__cdecl **a4)(int, int)); -void __noreturn std::unexpected(void); // idb -void __cdecl std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(int a1, int a2, int (__cdecl **a3)(int, int)); -void __cdecl std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(int a1, int a2, int a3, _DWORD *a4, int (__cdecl *a5)(int, int)); -int __cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5); -int __cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, unsigned int a3, int a4, __int16 a5, char a6); -int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, int a3, __int16 a4, char a5); -int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, unsigned int a3, int a4, __int16 a5, char a6); -void (*std::get_terminate(void))(void); -__int32 __cdecl std::set_terminate(void (__noreturn *a1)(void)); -_BYTE *__cdecl std::__add_grouping(_BYTE *a1, char a2, char *a3, int a4, _BYTE *a5, _BYTE *a6); -_WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, char *a5, char *a6); -void __cdecl std::__convert_to_v(unsigned __int8 *a1, double *a2, _DWORD *a3); -void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3); -void __cdecl std::__convert_to_v(unsigned __int8 *a1, float *a2, _DWORD *a3); -void (*std::get_unexpected(void))(void); -__int32 __cdecl std::set_unexpected(void (__noreturn *a1)(void)); -int std::get_new_handler(void); -__int32 __cdecl std::set_new_handler(void (*a1)(void)); -int std::__convert_from_v(int *const *a1, char *a2, int a3, char *a4, ...); -void __cdecl std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(unsigned __int8 **a1, char *a2, int (__cdecl *a3)(void **, struct _Unwind_Exception *)); -int __cdecl std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(_DWORD *a1, int a2, int a3, int (__cdecl *a4)(int, int)); -std::ostream::sentry *__cdecl std::__ostream_insert>(std::ostream::sentry *a1, int a2, int a3); -int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3); -int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2); -int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2); -int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3); -int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3); -void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden this); -int __cdecl std::_Rb_tree_decrement(_DWORD *a1); -int __cdecl std::_Rb_tree_decrement(_DWORD *a1); -int __cdecl std::_Rb_tree_increment(int a1); -int __cdecl std::_Rb_tree_increment(int a1); -bool std::uncaught_exception(void); -int std::uncaught_exceptions(void); -int __cdecl std::_Rb_tree_black_count(_DWORD *a1, _DWORD *a2); -int __cdecl std::_Rb_tree_rotate_left(int a1, _DWORD *a2); -int __cdecl std::_Rb_tree_rotate_right(int a1, _DWORD *a2); -int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3); -int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3); -void __cdecl std::__destroy_ios_failure(std::exception *a1); -int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4); -void __cdecl std::__construct_ios_failure(_DWORD *a1, char *a2); -bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *a1); -void __noreturn std::__throw_out_of_range_fmt(char *Str, ...); -void __cdecl std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>(_DWORD *a1, int (__cdecl *a2)(void **, struct _Unwind_Exception *)); -int *__cdecl std::_Rb_tree_rebalance_for_erase(int *a1, _DWORD *a2); -_DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4); -_DWORD *__cdecl std::ws>(_DWORD *a1); -_DWORD *__cdecl std::ws>(_DWORD *a1); -std::ios_base *__cdecl std::hex(std::ios_base *a1); -_DWORD *__cdecl std::endl>(std::ostream::sentry *a1); -_DWORD *__cdecl std::endl>(int *a1); -std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1); -int *__cdecl std::ends>(int *a1); -int __cdecl std::find<__gnu_cxx::__normal_iterator>,std::string>(int a1, int a2, int a3); -int __cdecl std::find<__gnu_cxx::__normal_iterator>,char const*>(int a1, int a2, char **a3); -int __cdecl std::find<__gnu_cxx::__normal_iterator>,std::string>(int a1, int a2, int a3); -void __cdecl std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>(char *a1, char *a2, int (__cdecl *a3)(int, int)); -_DWORD *__cdecl std::flush>(_DWORD *a1); -_DWORD *__cdecl std::flush>(_DWORD *a1); -std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *a1, _DWORD *a2); -std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *a1, _DWORD *a2, unsigned __int8 a3); -_DWORD *__cdecl std::getline,std::allocator>(_DWORD *a1, _DWORD *a2, __int16 a3); -int __cdecl std::setfill(unsigned __int8 a1); -int __cdecl std::setfill(unsigned __int16 a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -int __cdecl std::has_facet>>(int a1); -void __noreturn std::terminate(void); // idb -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -void *__cdecl std::use_facet>>(int a1); -bool __cdecl std::operator==(int a1, int a2); -bool __cdecl std::operator==(char *a1, int a2); -bool __cdecl std::operator==(int a1, char *a2); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, char a2); -std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2); -int *__cdecl std::operator<<>(int *a1, wchar_t *String); -int *__cdecl std::operator<<>(int *a1, char *Str); -int *__cdecl std::operator<<>(int *a1, __int16 a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator<<>(_DWORD *a1, __int16 a2); -int *__cdecl std::operator<<>(int *a1, char a2); -unsigned int __cdecl std::operator<(int a1, int a2); -int __cdecl std::operator!=(char *, int); // idb -int __cdecl std::operator!=(int, char *); // idb -int __cdecl std::operator!=(int a1, int a2); -_DWORD *__cdecl std::operator+(_DWORD *a1, _DWORD *a2, unsigned int *a3); -_DWORD *__cdecl std::operator+(_DWORD *a1, char *a2, unsigned int *a3); -int __cdecl std::operator+(int, char *Str, int); // idb -char *__cdecl std::operator+(char *a1, int a2, char *a3); -char *__cdecl std::operator+(char *a1, int a2, int a3); -int __cdecl std::operator+(int a1, char a2, int a3); -int *__cdecl std::operator+(int *a1, char *Str, std::string *a3); -int *__cdecl std::operator+(int *a1, _DWORD *a2, std::string *a3); -int *__cdecl std::operator+(int *a1, char a2, std::string *a3); -int __cdecl std::operator+(int, wchar_t *String, int); // idb -_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3); -int __cdecl std::operator+(int a1, __int16 a2, int a3); -int *__cdecl std::operator+(int *a1, wchar_t *String, _DWORD *a3); -int *__cdecl std::operator+(int *a1, _DWORD *a2, _DWORD *a3); -int *__cdecl std::operator+(int *a1, __int16 a2, _DWORD *a3); -std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2); -std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, char a2); -std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2); -int *__cdecl std::operator>>>(int *a1, _WORD *a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); -_DWORD *__cdecl std::operator>>>(_DWORD *a1, __int16 a2); -void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1); -void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1); -void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1); -void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1); -void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1); -void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1); -void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1); -void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); -void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1); -void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1); -void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1); -void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1); -void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1); -void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1); -void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1); -void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); -void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1); -void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1); -int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1); -int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1); -void __cdecl operator delete[](void *Block); -void __cdecl operator delete(void *Block); -void __cdecl operator delete(void *Block); -_DWORD __cdecl operator new[](unsigned int); // idb -int __cdecl operator new[](unsigned int a1); -void *__cdecl operator new(size_t a1); -int __cxa_allocate_dependent_exception(); -void *__cdecl __cxa_allocate_exception(size_t thrown_size); -void *__cdecl __cxa_begin_catch(void *); -void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *); -void __cdecl __noreturn __cxa_call_unexpected(void *); -struct type_info *__cxa_current_exception_type(void); -void __noreturn __cxa_deleted_virtual(void); -void __cxa_end_catch(void); -void __cdecl __cxa_free_dependent_exception(char *Block); -void __cdecl __cxa_free_exception(void *); -void *__cdecl __cxa_get_exception_ptr(void *); -_DWORD *__cxa_get_globals(); -_DWORD *__cxa_get_globals_fast(); -void __cdecl __cxa_guard_abort(__guard *); -int __cdecl __cxa_guard_acquire(__guard *); -void __cdecl __cxa_guard_release(__guard *); -int __cdecl __cxa_init_primary_exception(int a1, int a2, int a3); -void __noreturn __cxa_pure_virtual(void); -void __noreturn __cxa_rethrow(void); -void __cdecl __noreturn __cxa_throw(void *, struct type_info *lptinfo, void (__cdecl *)(void *)); -void *__cdecl __dynamic_cast(const void *lpsrc, const struct __class_type_info *lpstype, const struct __class_type_info *lpdtype, ptrdiff_t s2d); -int __cdecl __gxx_personality_sj0(int a1, int a2, __int64 a3, _Unwind_Exception *v, struct _Unwind_Context *lpuctx); -void __tcf_0_4(void); // idb -void __tcf_0_5(void); // idb -void __tcf_0_6(void); // idb -void __cdecl __tcf_0_7(std::_V2::error_category *a1); -void __tcf_0_8(void); // idb -void __tcf_1_6(void); // idb -int __cdecl main(int argc, const char **argv, const char **envp); -int _GLOBAL__sub_I__Z5UsageiPPKc(); -int _GLOBAL__sub_I__ZN4WXML8Compiler9GetFuncIdERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS7_ESaISt4pairIKS7_iEEERSB_(); -int _GLOBAL__sub_I__ZN5night8NSStreamC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j(); -size_t __thiscall std::string::basic_string(void **this, char *Str); -int _GLOBAL__sub_I__ZN5night9sourcemap21gen_sourcemap_contentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapIS6_jSt4lessIS6_ESaISt4pairIS7_jEEES9_IjS6_SA_IjESaISC_IKjS6_EEERSt6vectorINS_12ns_sourcemapESaISM_EEiRS6_PS6_(); -size_t __thiscall std::string::basic_string(void **this, char *Str); -int _GLOBAL__sub_I__ZN5night3str12path_combineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_RS6_(); -int _GLOBAL__sub_I__ZN4WXML6DOMLib7WXMLDom12componentCntE(); -int _GLOBAL__sub_I__ZN4WXML6DOMLib7Machine5ResetEv(); -int _GLOBAL__sub_I__ZN4WXML7EXPRLib7OPShort5CONSTE(); -int _GLOBAL__sub_I__ZNK4WXML7EXPRLib5Token12GetTokenNameEv(); -int _GLOBAL__sub_I__ZN4WXML7EXPRLib12TransitTable13GetExprNTTypeEv(); -int _GLOBAL__sub_I__ZN4WXML16StringTemplating4DealEPKcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorINS0_5TokenESaISB_EERb(); -int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv(); -void __noreturn __cxxabiv1::throw_recursive_init_exception(void); // idb -void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); -void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); -void __noreturn std::__throw_bad_exception(void); // idb -void __noreturn std::__throw_bad_alloc(void); // idb -void __noreturn std::__throw_bad_cast(void); // idb -void __noreturn std::__throw_bad_typeid(void); // idb -void __cdecl __noreturn std::__throw_logic_error(std::logic_error *); // idb -void __cdecl __noreturn std::__throw_domain_error(std::domain_error *); // idb -void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *); // idb -void __cdecl __noreturn std::__throw_length_error(std::length_error *); // idb -void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *); // idb -void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *); // idb -void __cdecl __noreturn std::__throw_range_error(std::range_error *); // idb -void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *); // idb -void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *); // idb -void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj(); -void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj(); -void __cdecl __noreturn d_type_cold(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11); -void __noreturn __cxa_bad_cast(void); -void __noreturn __cxa_bad_typeid(void); -void __noreturn __cxa_throw_bad_array_new_length(void); -void __cdecl __noreturn std::__throw_ios_failure(char *a1); -void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *, std::runtime_error *); // idb -void __cdecl __noreturn std::__throw_system_error(int); // idb -int _GLOBAL__sub_I__ZSt20__throw_system_errori(); -int __cdecl ____mb_cur_max_func(); -unsigned int __cdecl ____lc_codepage_func(); -// int __stdcall _IAT_start__(_DWORD); weak - -//------------------------------------------------------------------------- -// Data declarations - -_UNKNOWN loc_460001; // weak -_UNKNOWN loc_4A0000; // weak -_UNKNOWN loc_50001E; // weak -int __CTOR_LIST__[] = { -1 }; // weak -DWORD _data_start__ = 10u; // idb -int WXML::RPX::acceptNum(char const*,int &)::canAccept[266] = -{ - 65536, - 1, - 0, - 16777472, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 5578424, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 5584002, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 5588324, - 5588327, - 5588330, - 5588333, - 5588335, - 5588337, - 5588339, - 5588341, - 5588343, - 5588345, - 5588347, - 5588349, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 5474724, - -1, - -1, - 255, - 2, - 0, - -1, - -1, - 0, - -1, - 53, - -1074, - 971, - 1, - 0, - 14, - 24, - -149, - 104, - 1, - 0, - 14, - -1, - 64, - -16445, - 16320, - 1, - 0, - 14, - 7772032, - 4641200, - 4641216, - 4641232, - 4641328, - 4641568, - 4641456, - 4641680, - 4641776, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 4679456, - 5430400, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // idb -int WXML::RPX::acceptStr(char const*,int &)::canAccept[266] = -{ - 0, - 16777472, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 5578424, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 5584002, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 5588324, - 5588327, - 5588330, - 5588333, - 5588335, - 5588337, - 5588339, - 5588341, - 5588343, - 5588345, - 5588347, - 5588349, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 5474724, - -1, - -1, - 255, - 2, - 0, - -1, - -1, - 0, - -1, - 53, - -1074, - 971, - 1, - 0, - 14, - 24, - -149, - 104, - 1, - 0, - 14, - -1, - 64, - -16445, - 16320, - 1, - 0, - 14, - 7772032, - 4641200, - 4641216, - 4641232, - 4641328, - 4641568, - 4641456, - 4641680, - 4641776, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 4679456, - 5430400, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // idb -int WXML::RPX::acceptID(char const*,int &)::canAccept[266] = -{ - 1210319104, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 515375104, - 1210318933, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 880934912, - 1210318933, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1164181504, - 1164378197, - 1164574805, - 1164771413, - 1164902485, - 1165033557, - 1165164629, - 1165295701, - 1165426773, - 1165557845, - 1165688917, - 1165819989, - 1210318933, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - -1985740800, - -65453, - -1, - 16777215, - 131072, - 0, - -65536, - -1, - 65535, - -65536, - 3538943, - -70385664, - 63700991, - 65536, - 0, - 917504, - 1572864, - -9764864, - 6881279, - 65536, - 0, - 917504, - -65536, - 4259839, - -1077739520, - 1069613055, - 65536, - 0, - 917504, - -1753219072, - -776994698, - -775946170, - -774897594, - -768606138, - -752877498, - -760217530, - -745537466, - -739246010, - 70, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1730150400, - -595591097, - 82, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // idb -char *WXML::NameAllocator::ALPAHBET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; // idb -char *night::sourcemap::g_sVLQ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; // weak -char *WXML::EXPRLib::OPShort::DO_FUNC = &unk_554564; // idb -void *WXML::EXPRLib::OPShort::CS_GLOBAL = &unk_554567; // weak -char *WXML::EXPRLib::OPShort::EX_DICT = &unk_55456A; // idb -char *WXML::EXPRLib::OPShort::UNION_KV = &unk_55456D; // idb -char *WXML::EXPRLib::OPShort::MAKE_KV = &unk_55456F; // idb -char *WXML::EXPRLib::OPShort::GET_FROM_ENV = &unk_554571; // idb -char *WXML::EXPRLib::OPShort::GET_NAME = &unk_554573; // idb -char *WXML::EXPRLib::OPShort::CON_LIST = &unk_554575; // idb -char *WXML::EXPRLib::OPShort::MAKE_LIST = &unk_554577; // idb -char *WXML::EXPRLib::OPShort::NAME = &unk_554579; // idb -char *WXML::EXPRLib::OPShort::AOP = &unk_55457B; // idb -char *WXML::EXPRLib::OPShort::CONST = &unk_55457D; // idb -int *data_1 = &dword_5389A4; // weak -int _CRT_MT = 2; // weak -int once_0 = 0; // weak -int dword_53E1EC = -1; // weak -int use_fc_key = -1; // weak -int once_0_0 = 0; // weak -int dword_53E1F8 = -1; // weak -int fpi_0[6] = { 53, -1074, 971, 1, 0, 14 }; // weak -int fpi0_0[6] = { 24, -149, 104, 1, 0, 14 }; // weak -int _MINGW_INSTALL_DEBUG_MATHERR = -1; // weak -int fpi_0_0[6] = { 64, -16445, 16320, 1, 0, 14 }; // weak -void *pmem_next = &private_mem; // weak -FILE *(__cdecl *___acrt_iob_func)(unsigned int Ix) = &__acrt_iob_func; -int (__cdecl *_rand_s)(int) = &init_rand_s; // weak -char `guard variable for'std::moneypunct::id = '\0'; // weak -char `guard variable for'std::moneypunct::id = '\0'; // weak -char `guard variable for'std::moneypunct::id = '\0'; // weak -char `guard variable for'std::moneypunct::id = '\0'; // weak -char `guard variable for'std::__timepunct::id = '\0'; // weak -char `guard variable for'std::__timepunct::id = '\0'; // weak -char `guard variable for'std::moneypunct::id = '\0'; // weak -char `guard variable for'std::moneypunct::id = '\0'; // weak -char `guard variable for'std::moneypunct::id = '\0'; // weak -char `guard variable for'std::moneypunct::id = '\0'; // weak -char `guard variable for'std::collate::id = '\0'; // weak -char `guard variable for'std::collate::id = '\0'; // weak -char `guard variable for'std::messages::id = '\0'; // weak -char `guard variable for'std::messages::id = '\0'; // weak -char `guard variable for'std::numpunct::id = '\0'; // weak -char `guard variable for'std::numpunct::id = '\0'; // weak -char `guard variable for'std::time_get>::id = '\0'; // weak -char `guard variable for'std::time_get>::id = '\0'; // weak -char `guard variable for'std::money_get>::id = '\0'; // weak -char `guard variable for'std::money_get>::id = '\0'; // weak -char `guard variable for'std::money_put>::id = '\0'; // weak -char `guard variable for'std::money_put>::id = '\0'; // weak -char `guard variable for'std::collate::id = '\0'; // weak -char `guard variable for'std::collate::id = '\0'; // weak -char `guard variable for'std::num_get>::id = '\0'; // weak -char `guard variable for'std::num_get>::id = '\0'; // weak -char `guard variable for'std::num_put>::id = '\0'; // weak -char `guard variable for'std::num_put>::id = '\0'; // weak -char `guard variable for'std::messages::id = '\0'; // weak -char `guard variable for'std::messages::id = '\0'; // weak -char `guard variable for'std::numpunct::id = '\0'; // weak -char `guard variable for'std::numpunct::id = '\0'; // weak -char `guard variable for'std::time_get>::id = '\0'; // weak -char `guard variable for'std::time_get>::id = '\0'; // weak -char `guard variable for'std::time_put>::id = '\0'; // weak -char `guard variable for'std::time_put>::id = '\0'; // weak -char `guard variable for'std::money_get>::id = '\0'; // weak -char `guard variable for'std::money_get>::id = '\0'; // weak -char `guard variable for'std::money_put>::id = '\0'; // weak -char `guard variable for'std::money_put>::id = '\0'; // weak -__guard `guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex = 0; // idb -__guard `guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec = 0; // idb -__guard `guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex = 0; // idb -__guard `guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret = 0; // idb -void (*__cxxabiv1::__terminate_handler)(void) = &__gnu_cxx::__verbose_terminate_handler; // idb -void (*__cxxabiv1::__unexpected_handler)(void) = &std::terminate; // idb -_DWORD `anonymous namespace'::fake_mutex[4] = { 0, 0, 0, 0 }; // weak -_DWORD `anonymous namespace'::messages_c[4] = { 0, 0, 0, 0 }; // weak -_DWORD `anonymous namespace'::messages_w[4] = { 0, 0, 0, 0 }; // weak -_UNKNOWN `anonymous namespace'::numpunct_c; // weak -int dword_53E40C = 0; // weak -int dword_53E410 = 0; // weak -_UNKNOWN `anonymous namespace'::numpunct_w; // weak -int dword_53E418 = 0; // weak -int dword_53E41C = 0; // weak -_UNKNOWN `anonymous namespace'::time_get_c; // weak -int dword_53E424 = 0; // weak -_UNKNOWN `anonymous namespace'::time_get_w; // weak -int dword_53E42C = 0; // weak -_UNKNOWN `anonymous namespace'::time_put_c; // weak -int dword_53E434 = 0; // weak -_UNKNOWN `anonymous namespace'::time_put_w; // weak -int dword_53E43C = 0; // weak -_UNKNOWN `anonymous namespace'::codecvt_c16; // weak -int dword_53E444 = 0; // weak -_UNKNOWN `anonymous namespace'::codecvt_c32; // weak -int dword_53E44C = 0; // weak -_UNKNOWN `anonymous namespace'::money_get_c; // weak -int dword_53E454 = 0; // weak -_UNKNOWN `anonymous namespace'::money_get_w; // weak -int dword_53E45C = 0; // weak -_UNKNOWN `anonymous namespace'::money_put_c; // weak -int dword_53E464 = 0; // weak -_UNKNOWN `anonymous namespace'::money_put_w; // weak -int dword_53E46C = 0; // weak -_DWORD `anonymous namespace'::timepunct_c[5] = { 0, 0, 0, 0, 0 }; // weak -_DWORD `anonymous namespace'::timepunct_w[5] = { 0, 0, 0, 0, 0 }; // weak -int `anonymous namespace'::__new_handler = 0; // weak -_DWORD `anonymous namespace'::c_locale_impl[5] = { 0, 0, 0, 0, 0 }; // weak -_UNKNOWN `anonymous namespace'::moneypunct_cf; // weak -int dword_53E4B4 = 0; // weak -int dword_53E4B8 = 0; // weak -_UNKNOWN `anonymous namespace'::moneypunct_ct; // weak -int dword_53E4C0 = 0; // weak -int dword_53E4C4 = 0; // weak -_UNKNOWN `anonymous namespace'::moneypunct_wf; // weak -int dword_53E4CC = 0; // weak -int dword_53E4D0 = 0; // weak -_UNKNOWN `anonymous namespace'::moneypunct_wt; // weak -int dword_53E4D8 = 0; // weak -int dword_53E4DC = 0; // weak -_UNKNOWN `anonymous namespace'::codecvt_c16_c8; // weak -int dword_53E4E4 = 0; // weak -_UNKNOWN `anonymous namespace'::codecvt_c32_c8; // weak -int dword_53E4EC = 0; // weak -_DWORD `anonymous namespace'::emergency_pool[2] = { 0, 0 }; // weak -int dword_53E4F8 = 0; // weak -void *Block = NULL; // idb -int dword_53E500 = 0; // weak -int `anonymous namespace'::numpunct_cache_c = 0; // weak -int dword_53E524 = 0; // weak -int dword_53E528 = 0; // weak -int dword_53E52C = 0; // weak -char byte_53E530 = '\0'; // weak -int dword_53E534 = 0; // weak -int dword_53E538 = 0; // weak -int dword_53E53C = 0; // weak -int dword_53E540 = 0; // weak -__int16 word_53E544 = 0; // weak -char byte_53E584 = '\0'; // weak -int `anonymous namespace'::numpunct_cache_w = 0; // weak -int dword_53E5A4 = 0; // weak -int dword_53E5A8 = 0; // weak -int dword_53E5AC = 0; // weak -char byte_53E5B0 = '\0'; // weak -int dword_53E5B4 = 0; // weak -int dword_53E5B8 = 0; // weak -int dword_53E5BC = 0; // weak -int dword_53E5C0 = 0; // weak -int dword_53E5C4 = 0; // weak -char byte_53E644 = '\0'; // weak -int `anonymous namespace'::timepunct_cache_c = 0; // weak -int dword_53E664 = 0; // weak -int dword_53E668 = 0; // weak -int dword_53E66C = 0; // weak -int dword_53E670 = 0; // weak -int dword_53E674 = 0; // weak -int dword_53E678 = 0; // weak -int dword_53E67C = 0; // weak -int dword_53E680 = 0; // weak -int dword_53E684 = 0; // weak -int dword_53E688 = 0; // weak -int dword_53E68C = 0; // weak -int dword_53E690 = 0; // weak -int dword_53E694 = 0; // weak -int dword_53E698 = 0; // weak -int dword_53E69C = 0; // weak -int dword_53E6A0 = 0; // weak -int dword_53E6A4 = 0; // weak -int dword_53E6A8 = 0; // weak -int dword_53E6AC = 0; // weak -int dword_53E6B0 = 0; // weak -int dword_53E6B4 = 0; // weak -int dword_53E6B8 = 0; // weak -int dword_53E6BC = 0; // weak -int dword_53E6C0 = 0; // weak -int dword_53E6C4 = 0; // weak -int dword_53E6C8 = 0; // weak -int dword_53E6CC = 0; // weak -int dword_53E6D0 = 0; // weak -int dword_53E6D4 = 0; // weak -int dword_53E6D8 = 0; // weak -int dword_53E6DC = 0; // weak -int dword_53E6E0 = 0; // weak -int dword_53E6E4 = 0; // weak -int dword_53E6E8 = 0; // weak -int dword_53E6EC = 0; // weak -int dword_53E6F0 = 0; // weak -int dword_53E6F4 = 0; // weak -int dword_53E6F8 = 0; // weak -int dword_53E6FC = 0; // weak -int dword_53E700 = 0; // weak -int dword_53E704 = 0; // weak -int dword_53E708 = 0; // weak -int dword_53E70C = 0; // weak -int dword_53E710 = 0; // weak -int dword_53E714 = 0; // weak -int dword_53E718 = 0; // weak -int dword_53E71C = 0; // weak -int dword_53E720 = 0; // weak -char byte_53E724 = '\0'; // weak -int `anonymous namespace'::timepunct_cache_w = 0; // weak -int dword_53E744 = 0; // weak -int dword_53E748 = 0; // weak -int dword_53E74C = 0; // weak -int dword_53E750 = 0; // weak -int dword_53E754 = 0; // weak -int dword_53E758 = 0; // weak -int dword_53E75C = 0; // weak -int dword_53E760 = 0; // weak -int dword_53E764 = 0; // weak -int dword_53E768 = 0; // weak -int dword_53E76C = 0; // weak -int dword_53E770 = 0; // weak -int dword_53E774 = 0; // weak -int dword_53E778 = 0; // weak -int dword_53E77C = 0; // weak -int dword_53E780 = 0; // weak -int dword_53E784 = 0; // weak -int dword_53E788 = 0; // weak -int dword_53E78C = 0; // weak -int dword_53E790 = 0; // weak -int dword_53E794 = 0; // weak -int dword_53E798 = 0; // weak -int dword_53E79C = 0; // weak -int dword_53E7A0 = 0; // weak -int dword_53E7A4 = 0; // weak -int dword_53E7A8 = 0; // weak -int dword_53E7AC = 0; // weak -int dword_53E7B0 = 0; // weak -int dword_53E7B4 = 0; // weak -int dword_53E7B8 = 0; // weak -int dword_53E7BC = 0; // weak -int dword_53E7C0 = 0; // weak -int dword_53E7C4 = 0; // weak -int dword_53E7C8 = 0; // weak -int dword_53E7CC = 0; // weak -int dword_53E7D0 = 0; // weak -int dword_53E7D4 = 0; // weak -int dword_53E7D8 = 0; // weak -int dword_53E7DC = 0; // weak -int dword_53E7E0 = 0; // weak -int dword_53E7E4 = 0; // weak -int dword_53E7E8 = 0; // weak -int dword_53E7EC = 0; // weak -int dword_53E7F0 = 0; // weak -int dword_53E7F4 = 0; // weak -int dword_53E7F8 = 0; // weak -int dword_53E7FC = 0; // weak -int dword_53E800 = 0; // weak -char byte_53E804 = '\0'; // weak -int `anonymous namespace'::moneypunct_cache_cf = 0; // weak -int dword_53E824 = 0; // weak -int dword_53E828 = 0; // weak -int dword_53E82C = 0; // weak -__int16 word_53E830 = 0; // weak -char byte_53E832 = '\0'; // weak -int dword_53E834 = 0; // weak -int dword_53E838 = 0; // weak -int dword_53E83C = 0; // weak -int dword_53E840 = 0; // weak -int dword_53E844 = 0; // weak -int dword_53E848 = 0; // weak -int dword_53E84C = 0; // weak -int dword_53E850 = 0; // weak -int dword_53E854 = 0; // weak -char byte_53E863 = '\0'; // weak -int `anonymous namespace'::moneypunct_cache_ct = 0; // weak -int dword_53E884 = 0; // weak -int dword_53E888 = 0; // weak -int dword_53E88C = 0; // weak -__int16 word_53E890 = 0; // weak -char byte_53E892 = '\0'; // weak -int dword_53E894 = 0; // weak -int dword_53E898 = 0; // weak -int dword_53E89C = 0; // weak -int dword_53E8A0 = 0; // weak -int dword_53E8A4 = 0; // weak -int dword_53E8A8 = 0; // weak -int dword_53E8AC = 0; // weak -int dword_53E8B0 = 0; // weak -int dword_53E8B4 = 0; // weak -char byte_53E8C3 = '\0'; // weak -int `anonymous namespace'::moneypunct_cache_wf = 0; // weak -int dword_53E8E4 = 0; // weak -int dword_53E8E8 = 0; // weak -int dword_53E8EC = 0; // weak -char byte_53E8F0 = '\0'; // weak -int dword_53E8F2 = 0; // weak -int dword_53E8F8 = 0; // weak -int dword_53E8FC = 0; // weak -int dword_53E900 = 0; // weak -int dword_53E904 = 0; // weak -int dword_53E908 = 0; // weak -int dword_53E90C = 0; // weak -int dword_53E910 = 0; // weak -int dword_53E914 = 0; // weak -int dword_53E918 = 0; // weak -char byte_53E932 = '\0'; // weak -int `anonymous namespace'::moneypunct_cache_wt = 0; // weak -int dword_53E944 = 0; // weak -int dword_53E948 = 0; // weak -int dword_53E94C = 0; // weak -char byte_53E950 = '\0'; // weak -int dword_53E952 = 0; // weak -int dword_53E958 = 0; // weak -int dword_53E95C = 0; // weak -int dword_53E960 = 0; // weak -int dword_53E964 = 0; // weak -int dword_53E968 = 0; // weak -int dword_53E96C = 0; // weak -int dword_53E970 = 0; // weak -int dword_53E974 = 0; // weak -int dword_53E978 = 0; // weak -char byte_53E992 = '\0'; // weak -__int16 `anonymous namespace'::name_c = 0; // weak -_DWORD `anonymous namespace'::ctype_c[136] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -_DWORD `anonymous namespace'::ctype_w[184] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -_DWORD `anonymous namespace'::c_locale = 0; // weak -int `anonymous namespace'::name_vec = 0; // weak -int dword_53EEC8 = 0; // weak -int dword_53EECC = 0; // weak -int dword_53EED0 = 0; // weak -int dword_53EED4 = 0; // weak -int dword_53EED8 = 0; // weak -_UNKNOWN `anonymous namespace'::cache_vec; // weak -_DWORD `anonymous namespace'::codecvt_c[3] = { 0, 0, 0 }; // weak -_DWORD `anonymous namespace'::codecvt_w[3] = { 0, 0, 0 }; // weak -_UNKNOWN `anonymous namespace'::collate_c; // weak -int dword_53EFBC = 0; // weak -int dword_53EFC0 = 0; // weak -_UNKNOWN `anonymous namespace'::collate_w; // weak -int dword_53EFC8 = 0; // weak -int dword_53EFCC = 0; // weak -_UNKNOWN `anonymous namespace'::facet_vec; // weak -_UNKNOWN `anonymous namespace'::num_get_c; // weak -int dword_53F0A4 = 0; // weak -_UNKNOWN `anonymous namespace'::num_get_w; // weak -int dword_53F0AC = 0; // weak -_UNKNOWN `anonymous namespace'::num_put_c; // weak -int dword_53F0B4 = 0; // weak -_UNKNOWN `anonymous namespace'::num_put_w; // weak -int dword_53F0BC = 0; // weak -int `anonymous namespace'::static_mutex = 0; // weak -void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this) = { &off_55F194, &off_55F1BC }; // weak -void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this) = &off_55F1BC; // weak -_UNKNOWN __gnu_internal::buf_cin_sync; // weak -int dword_53F0E4 = 0; // weak -int dword_53F0E8 = 0; // weak -int dword_53F0EC = 0; // weak -int dword_53F0F0 = 0; // weak -int dword_53F0F4 = 0; // weak -int dword_53F0F8 = 0; // weak -_DWORD dword_53F0FC = 0; // weak -int dword_53F100 = 0; // weak -int dword_53F104 = 0; // weak -_UNKNOWN __gnu_internal::buf_cerr_sync; // weak -int dword_53F124 = 0; // weak -int dword_53F128 = 0; // weak -int dword_53F12C = 0; // weak -int dword_53F130 = 0; // weak -int dword_53F134 = 0; // weak -int dword_53F138 = 0; // weak -_DWORD dword_53F13C = 0; // weak -int dword_53F140 = 0; // weak -int dword_53F144 = 0; // weak -_UNKNOWN __gnu_internal::buf_cout_sync; // weak -int dword_53F164 = 0; // weak -int dword_53F168 = 0; // weak -int dword_53F16C = 0; // weak -int dword_53F170 = 0; // weak -int dword_53F174 = 0; // weak -int dword_53F178 = 0; // weak -_DWORD dword_53F17C = 0; // weak -int dword_53F180 = 0; // weak -int dword_53F184 = 0; // weak -_UNKNOWN __gnu_internal::buf_wcin_sync; // weak -int dword_53F1A4 = 0; // weak -int dword_53F1A8 = 0; // weak -int dword_53F1AC = 0; // weak -int dword_53F1B0 = 0; // weak -int dword_53F1B4 = 0; // weak -int dword_53F1B8 = 0; // weak -_DWORD dword_53F1BC = 0; // weak -int dword_53F1C0 = 0; // weak -__int16 word_53F1C4 = 0; // weak -_UNKNOWN __gnu_internal::buf_wcerr_sync; // weak -int dword_53F1E4 = 0; // weak -int dword_53F1E8 = 0; // weak -int dword_53F1EC = 0; // weak -int dword_53F1F0 = 0; // weak -int dword_53F1F4 = 0; // weak -int dword_53F1F8 = 0; // weak -_DWORD dword_53F1FC = 0; // weak -int dword_53F200 = 0; // weak -__int16 word_53F204 = 0; // weak -_UNKNOWN __gnu_internal::buf_wcout_sync; // weak -int dword_53F224 = 0; // weak -int dword_53F228 = 0; // weak -int dword_53F22C = 0; // weak -int dword_53F230 = 0; // weak -int dword_53F234 = 0; // weak -int dword_53F238 = 0; // weak -_DWORD dword_53F23C = 0; // weak -int dword_53F240 = 0; // weak -__int16 word_53F244 = 0; // weak -char __gnu_internal::buf_cin[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_cerr[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_cout[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_wcin[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_wcerr[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_wcout[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -_UNKNOWN std::wstring::_Rep::_S_empty_rep_storage; // weak -_UNKNOWN std::string::_Rep::_S_empty_rep_storage; // weak -char *std::__num_base::_S_atoms_in[3] = -{ - "-+xX0123456789abcdefABCDEF", - "-+xX0123456789abcdef0123456789ABCDEF", - "-0123456789" -}; // weak -char *std::__num_base::_S_atoms_out[2] = { "-+xX0123456789abcdef0123456789ABCDEF", "-0123456789" }; // weak -char *std::money_base::_S_atoms = "-0123456789"; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::__timepunct::id = 0; // weak -signed __int32 std::__timepunct::id = 0; // weak -_DWORD std::`anonymous namespace'::messages_c = 0; // weak -signed __int32 dword_53F5A8[3] = { 0, 0, 0 }; // weak -_DWORD std::`anonymous namespace'::messages_w = 0; // weak -signed __int32 dword_53F5B8[3] = { 0, 0, 0 }; // weak -int std::`anonymous namespace'::numpunct_c = 0; // weak -int dword_53F5C8 = 0; // weak -int dword_53F5CC = 0; // weak -int std::`anonymous namespace'::numpunct_w = 0; // weak -int dword_53F5D4 = 0; // weak -int dword_53F5D8 = 0; // weak -int std::`anonymous namespace'::time_get_c = 0; // weak -int dword_53F5E0 = 0; // weak -int std::`anonymous namespace'::time_get_w = 0; // weak -int dword_53F5E8 = 0; // weak -int std::`anonymous namespace'::money_get_c = 0; // weak -int dword_53F5F0 = 0; // weak -int std::`anonymous namespace'::money_get_w = 0; // weak -int dword_53F5F8 = 0; // weak -int std::`anonymous namespace'::money_put_c = 0; // weak -int dword_53F600 = 0; // weak -int std::`anonymous namespace'::money_put_w = 0; // weak -int dword_53F608 = 0; // weak -int std::`anonymous namespace'::moneypunct_cf = 0; // weak -int dword_53F610 = 0; // weak -int dword_53F614 = 0; // weak -int std::`anonymous namespace'::moneypunct_ct = 0; // weak -int dword_53F61C = 0; // weak -int dword_53F620 = 0; // weak -int std::`anonymous namespace'::moneypunct_wf = 0; // weak -int dword_53F628 = 0; // weak -int dword_53F62C = 0; // weak -int std::`anonymous namespace'::moneypunct_wt = 0; // weak -int dword_53F634 = 0; // weak -int dword_53F638 = 0; // weak -int std::`anonymous namespace'::collate_c = 0; // weak -int dword_53F640 = 0; // weak -int dword_53F644 = 0; // weak -int std::`anonymous namespace'::collate_w = 0; // weak -int dword_53F64C = 0; // weak -int dword_53F650 = 0; // weak -void *std::__timepunct_cache::_S_timezones[2] = { &off_559F1E, &off_559F22 }; // weak -wchar_t *std::__timepunct_cache::_S_timezones[3] = { L"GMT", L"HST", L"AKST" }; // weak -signed __int32 std::ctype::id = 0; // weak -signed __int32 std::ctype::id = 0; // weak -int std::locale::_S_classic = 0; // weak -int std::locale::id::_S_refcount = 0; // weak -int std::locale::facet::_S_c_locale = 0; // weak -_UNKNOWN std::locale::facet::_S_once; // weak -_UNKNOWN std::locale::_S_once; // weak -int std::locale::_S_global = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::collate::id = 0; // weak -signed __int32 std::collate::id = 0; // weak -signed __int32 std::messages::id = 0; // weak -signed __int32 std::messages::id = 0; // weak -signed __int32 std::numpunct::id = 0; // weak -signed __int32 std::numpunct::id = 0; // weak -signed __int32 std::time_get>::id = 0; // weak -signed __int32 std::time_get>::id = 0; // weak -signed __int32 std::money_get>::id = 0; // weak -signed __int32 std::money_get>::id = 0; // weak -signed __int32 std::money_put>::id = 0; // weak -signed __int32 std::money_put>::id = 0; // weak -_UNKNOWN std::codecvt::id; // weak -_UNKNOWN std::codecvt::id; // weak -_UNKNOWN std::codecvt::id; // weak -_UNKNOWN std::codecvt::id; // weak -signed __int32 std::codecvt::id = 0; // weak -signed __int32 std::codecvt::id = 0; // weak -signed __int32 std::collate::id = 0; // weak -signed __int32 std::collate::id = 0; // weak -signed __int32 std::num_get>::id = 0; // weak -signed __int32 std::num_get>::id = 0; // weak -signed __int32 std::num_put>::id = 0; // weak -signed __int32 std::num_put>::id = 0; // weak -int std::ios_base::Init::_S_refcount = 0; // weak -char std::ios_base::Init::_S_synced_with_stdio = '\x01'; // weak -signed __int32 std::messages::id = 0; // weak -signed __int32 std::messages::id = 0; // weak -signed __int32 std::numpunct::id = 0; // weak -signed __int32 std::numpunct::id = 0; // weak -signed __int32 std::time_get>::id = 0; // weak -signed __int32 std::time_get>::id = 0; // weak -signed __int32 std::time_put>::id = 0; // weak -signed __int32 std::time_put>::id = 0; // weak -signed __int32 std::money_get>::id = 0; // weak -signed __int32 std::money_get>::id = 0; // weak -signed __int32 std::money_put>::id = 0; // weak -signed __int32 std::money_put>::id[5] = { 0, 0, 0, 0, 0 }; // weak -int std::cin = 0; // weak -int dword_53F7C4 = 0; // weak -int dword_53F7C8[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_53F838 = 0; // weak -__int16 word_53F83C = 0; // weak -int dword_53F840 = 0; // weak -int dword_53F844 = 0; // weak -int dword_53F848 = 0; // weak -int dword_53F84C = 0; // weak -int std::cerr = 0; // weak -int dword_53F864 = 0; // weak -int dword_53F870 = 0; // weak -int dword_53F8D4 = 0; // weak -__int16 word_53F8D8 = 0; // weak -int dword_53F8DC = 0; // weak -int dword_53F8E0 = 0; // weak -int dword_53F8E4 = 0; // weak -int dword_53F8E8 = 0; // weak -int std::clog = 0; // weak -int dword_53F904[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_53F974 = 0; // weak -__int16 word_53F978 = 0; // weak -int dword_53F97C = 0; // weak -int dword_53F980 = 0; // weak -int dword_53F984 = 0; // weak -int dword_53F988 = 0; // weak -int std::cout = 0; // weak -int dword_53F9A4[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_53FA14 = 0; // weak -__int16 word_53FA18 = 0; // weak -int dword_53FA1C = 0; // weak -int dword_53FA20 = 0; // weak -int dword_53FA24 = 0; // weak -int dword_53FA28 = 0; // weak -int std::wcin = 0; // weak -int dword_53FA44 = 0; // weak -int dword_53FA48[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_53FAB8 = 0; // weak -__int16 word_53FABC = 0; // weak -char byte_53FABE = '\0'; // weak -int dword_53FAC0 = 0; // weak -int dword_53FAC4 = 0; // weak -int dword_53FAC8 = 0; // weak -int dword_53FACC = 0; // weak -int std::wcerr = 0; // weak -int dword_53FAE4 = 0; // weak -int dword_53FAF0 = 0; // weak -int dword_53FB54 = 0; // weak -__int16 word_53FB58 = 0; // weak -char byte_53FB5A = '\0'; // weak -int dword_53FB5C = 0; // weak -int dword_53FB60 = 0; // weak -int dword_53FB64 = 0; // weak -int dword_53FB68 = 0; // weak -int std::wclog = 0; // weak -int dword_53FB84[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_53FBF4 = 0; // weak -__int16 word_53FBF8 = 0; // weak -char byte_53FBFA = '\0'; // weak -int dword_53FBFC = 0; // weak -int dword_53FC00 = 0; // weak -int dword_53FC04 = 0; // weak -int dword_53FC08 = 0; // weak -int std::wcout = 0; // weak -int dword_53FC24[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_53FC94 = 0; // weak -__int16 word_53FC98 = 0; // weak -char byte_53FC9A = '\0'; // weak -int dword_53FC9C = 0; // weak -int dword_53FCA0 = 0; // weak -int dword_53FCA4 = 0; // weak -int dword_53FCA8 = 0; // weak -_DWORD `anonymous namespace'::get_locale_mutex(void)::locale_mutex[2] = { 0, 0 }; // weak -_UNKNOWN `anonymous namespace'::get_static_mutex(void)::once; // weak -void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this) = &off_55F16C; // weak -_DWORD `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex[2] = { 0, 0 }; // weak -_DWORD WXML::EXPRLib::TransitTable::GetInstance(void)::ret = 0; // weak -int dword_53FCE0 = 0; // weak -int dword_53FCE4 = 0; // weak -int dword_53FCE8 = 0; // weak -int dword_53FCEC = 0; // weak -int dword_53FCF0 = 0; // weak -char byte_53FCF4 = '\0'; // weak -char __gnu_cxx::__verbose_terminate_handler(void)::terminating = '\0'; // weak -int std::ios_base::xalloc(void)::_S_top = 0; // weak -size_t __emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global[4] = { 8u, 4u, 0u, 0u }; // weak -const char byte_5402D0 = '\0'; // idb -const char off_5403C3[] = { 's', '\0', 'e', '\0' }; // idb -const char byte_540876 = '\0'; // idb -const char off_540894[] = { 'u', 'r', 'l', '\0' }; // idb -const char aIfThisThisGUnd[] = "if(this&&this.__g===undefined)Object.defineProperty(this,\"__g\",{configurable:false,enumerable:false,writable:false,value:function(){function D(e,t){if(typeof t!=\"undefined\")e.children.push(t)}function S(e){if(typeof e!=\"undefined\")return{tag:\"virtual\",wxKey:e,children:[]};return{tag:\"virtual\",children:[]}}function v(e){$gwxc++;if($gwxc>=16e3){throw\"Dom limit exceeded, please check if there's any mistake you've made.\"}return{tag:\"wx-\"+e,attr:{},children:[],n:[],raw:{},generics:{}}}function e(e,t){t&&e.properities.push(t)}function t(e,t,r){return typeof e[r]!=\"undefined\"?e[r]:t[r]}function u(e){console.warn(\"WXMLRT_\"+g+\":\"+e)}function r(e,t){u(t+\":-1:-1:-1: Template `\"+e+\"` is being called recursively, will be stop.\")}var s=console.warn;var n=console.log;function o(){function e(){}e.prototype={hn:function(e,t){if(typeof e==\"object\"){var r=0;var n=false,o=false;for(var a in e){n=n|a===\"__value__\";o=o|a===\"__wxspec__\";r++;if(r>2)break}return r==2&&n&&o&&(t||e.__wxspec__!==\"m\"||this.hn(e.__value__)===\"h\")?\"h\":\"n\"}return\"n\"},nh:function(e,t){return{__value__:e,__wxspec__:t?t:true}},rv:function(e){return this.hn(e,true)===\"n\"?e:this.rv(e.__value__)},hm:function(e){if(typeof e==\"object\"){var t=0;var r=false,n=false;for(var o in e){r=r|o===\"__value__\";n=n|o===\"__wxspec__\";t++;if(t>2)break}return t==2&&r&&n&&(e.__wxspec__===\"m\"||this.hm(e.__value__))}return false}};return new e}var A=o();function T(e){var t=e.split(\"\\n \"+\" \"+\" \"+\" \");for(var r=0;r=\":case\"<=\":case\">\":case\"<\":case\"<<\":case\">>\":p=x(e[1],t,r,n,o,a);u=x(e[2],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");switch(i){case\"+\":f=A.rv(p)+A.rv(u);break;case\"*\":f=A.rv(p)*A.rv(u);break;case\"/\":f=A.rv(p)/A.rv(u);break;case\"%\":f=A.rv(p)%A.rv(u);break;case\"|\":f=A.rv(p)|A.rv(u);break;case\"^\":f=A.rv(p)^A.rv(u);break;case\"&\":f=A.rv(p)&A.rv(u);break;case\"===\":f=A.rv(p)===A.rv(u);break;case\"==\":f=A.rv(p)==A.rv(u);break;case\"!=\":f=A.rv(p)!=A.rv(u);break;case\"!==\":f=A.rv(p)!==A.rv(u);break;case\">=\":f=A.rv(p)>=A.rv(u);break;case\"<=\":f=A.rv(p)<=A.rv(u);break;case\">\":f=A.rv(p)>A.rv(u);break;case\"<\":f=A.rv(p)>\":f=A.rv(p)>>A.rv(u);break;default:break}return l?A.nh(f,\"c\"):f;break;case\"-\":p=e.length===3?x(e[1],t,r,n,o,a):0;u=e.length===3?x(e[2],t,r,n,o,a):x(e[1],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");f=l?A.rv(p)-A.rv(u):p-u;return l?A.nh(f,\"c\"):f;break;case\"!\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=!A.rv(p);return l?A.nh(f,\"c\"):f;case\"~\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=~A.rv(p);return l?A.nh(f,\"c\"):f;default:s(\"unrecognized op\"+i)}}function x(e,t,r,n,o,a){var i=e[0];var p=false;if(typeof a!==\"undefined\")o.ap=a;if(typeof i===\"object\"){var u=i[0];var l,f,v,c,s,y,b,d,h,_,g;switch(u){case 2:return m(e,t,r,n,o);break;case 4:return x(e[1],t,r,n,o,p);break;case 5:switch(e.length){case 2:l=x(e[1],t,r,n,o,p);return M?[l]:[A.rv(l)];return[l];break;case 1:return[];break;default:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);l.push(M?v:A.rv(v));return l;break}break;case 6:l=x(e[1],t,r,n,o);var w=o.ap;h=A.hn(l)===\"h\";f=h?A.rv(l):l;o.is_affected|=h;if(M){if(f===null||typeof f===\"undefined\"){return h?A.nh(undefined,\"e\"):undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return h||_?A.nh(undefined,\"e\"):undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return h||_?g?y:A.nh(y,\"e\"):y}else{if(f===null||typeof f===\"undefined\"){return undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return g?A.rv(y):y}case 7:switch(e[1][0]){case 11:o.is_affected|=A.hn(n)===\"h\";return n;case 3:b=A.rv(r);d=A.rv(t);v=e[1][1];if(n&&n.f&&n.f.hasOwnProperty(v)){l=n.f;o.ap=true}else{l=b&&b.hasOwnProperty(v)?r:d&&d.hasOwnProperty(v)?t:undefined}if(M){if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;y=h&&!g?A.nh(y,\"e\"):y;return y}}else{if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;return A.rv(y)}}return undefined}break;case 8:l={};l[e[1]]=x(e[2],t,r,n,o,p);return l;break;case 9:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);function O(e,t,r){var n,o;h=A.hn(e)===\"h\";_=A.hn(t)===\"h\";f=A.rv(e);c=A.rv(t);for(var a in c){if(r||!f.hasOwnProperty(a)){f[a]=M?_?A.nh(c[a],\"e\"):c[a]:A.rv(c[a])}}return e}var s=l;var j=true;if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){l=v;v=s;j=false}if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){var P={};return O(O(P,l,j),v,j)}else return O(l,v,j);break;case 10:l=x(e[1],t,r,n,o,p);l=M?l:A.rv(l);return l;break;case 12:var P;l=x(e[1],t,r,n,o);if(!o.ap){return M&&A.hn(l)===\"h\"?A.nh(P,\"f\"):P}var w=o.ap;v=x(e[2],t,r,n,o,p);o.ap=w;h=A.hn(l)===\"h\";_=N(v);f=A.rv(l);c=A.rv(v);snap_bb=K(c,\"nv_\");try{P=typeof f===\"function\"?K(f.apply(null,snap_bb)):undefined}catch(t){t.message=t.message.replace(/nv_/g,\"\");t.stack=t.stack.substring(0,t.stack.indexOf(\"\\n\",t.stack.lastIndexOf(\"at nv_\")));t.stack=t.stack.replace(/\\snv_/g,\" \");t.stack=T(t.stack);if(n.debugInfo){t.stack+=\"\\n \"+\" \"+\" \"+\" at \"+n.debugInfo[0]+\":\"+n.debugInfo[1]+\":\"+n.debugInfo[2];console.error(t)}P=undefined}return M&&(_||h)?A.nh(P,\"f\"):P}}else{if(i===3||i===1)return e[1];else if(i===11){var l=\"\";for(var D=1;D=0;o--){if(r[e].i[o]&&n[r[e].i[o]][t])return n[r[e].i[o]][t]}for(var o=r[e].ti.length-1;o>=0;o--){var a=ne(r[e].ti[o],r,e);if(a&&n[a][t])return n[a][t]}var i=ae(r,e);for(var o=0;o=0;p--)if(r[e].j[p]){for(var a=r[r[e].j[p]].ti.length-1;a>=0;a--){var u=ne(r[r[e].j[p]].ti[a],r,e);if(u&&n[u][t]){return n[u][t]}}}}function ae(e,t){if(!t)return[];if($gaic[t]){return $gaic[t]}var r=[],n=[],o=0,a=0,i={},p={};n.push(t);p[t]=true;a++;while(o2)break;\n}\nreturn cnt == 2 && any1 && any2 && (obj.__wxspec__ === 'm' || this.hm(obj.__value__) );\n}\nreturn false;\n}\n}\nreturn new x;\n}\nwh=$gwh();\nfunction $gstack(s){\nvar tmp=s.split('\\n '+' '+' '+' ');\nfor(var i=0;i=':\ncase '<=':\ncase '>':\ncase '<':\ncase '<<':\ncase '>>':\n_a = rev( ops[1], e, s, g, o, _f );\n_b = rev( ops[2], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) === 'h' || wh.hn( _b ) === 'h');\nswitch( rop )\n{\ncase '+':\n_d = wh.rv( _a ) + wh.rv( _b );\nbreak;\ncase '*':\n_d = wh.rv( _a ) * wh.rv( _b );\nbreak;\ncase '/':\n_d = wh.rv( _a ) / wh.rv( _b );\nbreak;\ncase '%':\n_d = wh.rv( _a ) % wh.rv( _b );\nbreak;\ncase '|':\n_d = wh.rv( _a ) | wh.rv( _b );\nbreak;\ncase '^':\n_d = wh.rv( _a ) ^ wh.rv( _b );\nbreak;\ncase '&':\n_d = wh.rv( _a ) & wh.rv( _b );\nbreak;\ncase '===':\n_d = wh.rv( _a ) === wh.rv( _b );\nbreak;\ncase '==':\n_d = wh.rv( _a ) == wh.rv( _b );\nbreak;\ncase '!=':\n_d = wh.rv( _a ) != wh.rv( _b );\nbreak;\ncase '!==':\n_d = wh.rv( _a ) !== wh.rv( _b );\nbreak;\ncase '>=':\n_d = wh.rv( _a ) >= wh.rv( _b );\nbreak;\ncase '<=':\n_d = wh.rv( _a ) <= wh.rv( _b );\nbreak;\ncase '>':\n_d = wh.rv( _a ) > wh.rv( _b );\nbreak;\ncase '<':\n_d = wh.rv( _a ) < wh.rv( _b );\nbreak;\ncase '<<':\n_d = wh.rv( _a ) << wh.rv( _b );\nbreak;\ncase '>>':\n_d = wh.rv( _a ) >> wh.rv( _b );\nbreak;\ndefault:\nbreak;\n}\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\nbreak;\ncase '-':\n_a = ops.length === 3 ? rev( ops[1], e, s, g, o, _f ) : 0;\n_b = ops.length === 3 ? rev( ops[2], e, s, g, o, _f ) : rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) === 'h' || wh.hn( _b ) === 'h');\n_d = _c ? wh.rv( _a ) - wh.rv( _b ) : _a - _b;\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\nbreak;\ncase '!':\n_a = rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) == 'h');\n_d = !wh.rv(_a);\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\ncase '~':\n_a = rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) == 'h');\n_d = ~wh.rv(_a);\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\ndefault:\n$gwn('unrecognized op' + rop );\n}\n}\nfunction rev( ops, e, s, g, o, newap )\n{\nvar op = ops[0];\nvar _f = false;\nif ( typeof newap !== \"undefined\" ) o.ap = newap;\nif( typeof(op)==='object' )\n{\nvar vop=op[0];\nvar _a, _aa, _b, _bb, _c, _d, _s, _e, _ta, _tb, _td;\nswitch(vop)\n{\ncase 2:\nreturn ArithmeticEv(ops,e,s,g,o);\nbreak;\ncase 4: \nreturn rev( ops[1], e, s, g, o, _f );\nbreak;\ncase 5: \nswitch( ops.length )\n{\ncase 2: \n_a = rev( ops[1],e,s,g,o,_f );\nreturn should_pass_type_info?[_a]:[wh.rv(_a)];\nreturn [_a];\nbreak;\ncase 1: \nreturn [];\nbreak;\ndefault:\n_a = rev( ops[1],e,s,g,o,_f );\n_b = rev( ops[2],e,s,g,o,_f );\n_a.push( \nshould_pass_type_info ?\n_b :\nwh.rv( _b )\n);\nreturn _a;\nbreak;\n}\nbreak;\ncase 6:\n_a = rev(ops[1],e,s,g,o);\nvar ap = o.ap;\n_ta = wh.hn(_a)==='h';\n_aa = _ta ? wh.rv(_a) : _a;\no.is_affected |= _ta;\nif( should_pass_type_info )\n{\nif( _aa===null || typeof(_aa) === 'undefined' )\n{\nreturn _ta ? wh.nh(undefined, 'e') : undefined;\n}\n_b = rev(ops[2],e,s,g,o,_f);\n_tb = wh.hn(_b) === 'h';\n_bb = _tb ? wh.rv(_b) : _b;\no.ap = ap;\no.is_affected |= _tb;\nif( _bb===null || typeof(_bb) === 'undefined' || \n_bb === \"__proto__\" || _bb === \"prototype\" || _bb === \"caller\" ) \n{\nreturn (_ta || _tb) ? wh.nh(undefined, 'e') : undefined;\n}\n_d = _aa[_bb];\nif ( typeof _d === 'function' && !ap ) _d = undefined;\n_td = wh.hn(_d)==='h';\no.is_affected |= _td;\nreturn (_ta || _tb) ? (_td ? _d : wh.nh(_d, 'e')) : _d;\n}\nelse\n{\nif( _aa===null || typeof(_aa) === 'undefined' )\n{\nreturn undefined;\n}\n_b = rev(ops[2],e,s,g,o,_f);\n_tb = wh.hn(_b) === 'h';\n_bb = _tb ? wh.rv(_b) : _b;\no.ap = ap;\no.is_affected |= _tb;\nif( _bb===null || typeof(_bb) === 'undefined' || \n_bb === \"__proto__\" || _bb === \"prototype\" || _bb === \"caller\" ) \n{\nreturn undefined;\n}\n_d = _aa[_bb];\nif ( typeof _d === 'function' && !ap ) _d = undefined;\n_td = wh.hn(_d)==='h';\no.is_affected |= _td;\nreturn _td ? wh.rv(_d) : _d;\n}\ncase 7: \nswitch(ops[1][0])\n{\ncase 11:\no.is_affected |= wh.hn(g)==='h';\nreturn g;\ncase 3:\n_s = wh.rv( s );\n_e = wh.rv( e );\n_b = ops[1][1];\nif (g && g.f && g.f.hasOwnProperty(_b) )\n{\n_a = g.f;\no.ap = true;\n}\nelse\n{\n_a = _s && _s.hasOwnProperty(_b) ? \ns : (_e && _e.hasOwnProperty(_b) ? e : undefined );\n}\nif( should_pass_type_info )\n{\nif( _a )\n{\n_ta = wh.hn(_a) === 'h';\n_aa = _ta ? wh.rv( _a ) : _a;\n_d = _aa[_b];\n_td = wh.hn(_d) === 'h';\no.is_affected |= _ta || _td;\n_d = _ta && !_td ? wh.nh(_d,'e') : _d;\nreturn _d;\n}\n}\nelse\n{\nif( _a )\n{\n_ta = wh.hn(_a) === 'h';\n_aa = _ta ? wh.rv( _a ) : _a;\n_d = _aa[_b];\n_td = wh.hn(_d) === 'h';\no.is_affected |= _ta || _td;\nreturn wh.rv(_d);\n}\n}\nreturn undefined;\n}\nbreak;\ncase 8: \n_a = {};\n_a[ops[1]] = rev(ops[2],e,s,g,o,_f);\nreturn _a;\nbreak;\ncase 9: \n_a = rev(ops[1],e,s,g,o,_f);\n_b = rev(ops[2],e,s,g,o,_f);\nfunction merge( _a, _b, _ow )\n{\nvar ka, _bbk;\n_ta = wh.hn(_a)==='h';\n_tb = wh.hn(_b)==='h';\n_aa = wh.rv(_a);\n_bb = wh.rv(_b);\nfor(var k in _bb)\n{\nif ( _ow || !_aa.hasOwnProperty(k) )\n{\n_aa[k] = should_pass_type_info ? (_tb ? wh.nh(_bb[k],'e') : _bb[k]) : wh.rv(_bb[k]);\n}\n}\nreturn _a;\n}\nvar _c = _a\nvar _ow = true\nif ( typeof(ops[1][0]) === \"object\" && ops[1][0][0] === 10 ) {\n_a = _b\n_b = _c\n_ow = false\n}\nif ( typeof(ops[1][0]) === \"object\" && ops[1][0][0] === 10 ) {\nvar _r = {}\nreturn merge( merge( _r, _a, _ow ), _b, _ow );\n}\nelse\nreturn merge( _a, _b, _ow );\nbreak;\ncase 10:\n_a = rev(ops[1],e,s,g,o,_f);\n_a = should_pass_type_info ? _a : wh.rv( _a );\nreturn _a ;\nbreak;\ncase 12:\nvar _r;\n_a = rev(ops[1],e,s,g,o);\nif ( !o.ap )\n{\nreturn should_pass_type_info && wh.hn(_a)==='h' ? wh.nh( _r, 'f' ) : _r;\n}\nvar ap = o.ap;\n_b = rev(ops[2],e,s,g,o,_f);\no.ap = ap;\n_ta = wh.hn(_a)==='h';\n_tb = _ca(_b);\n_aa = wh.rv(_a);\t\n_bb = wh.rv(_b); snap_bb=$gdc(_bb,\"nv_\");\ntry{\n_r = typeof _aa === \"function\" ? $gdc(_aa.apply(null, snap_bb)) : undefined;\n} catch (e){\ne.message = e.message.replace(/nv_/g,\"\");\ne.stack = e.stack.substring(0,e.stack.indexOf(\"\\n\", e.stack.lastIndexOf(\"at nv_\")));\ne.stack = e.stack.replace(/\\snv_/g,\" \"); \ne.stack = $gstack(e.stack);\t\nif(g.debugInfo)\n{\ne.stack += \"\\n \"+\" \"+\" \"+\" at \"+g.debugInfo[0]+\":\"+g.debugInfo[1]+\":\"+g.debugInfo[2];\nconsole.error(e);\n}\n_r = undefined;\n}\nreturn should_pass_type_info && (_tb || _ta) ? wh.nh( _r, 'f' ) : _r;\n}\n}\nelse\n{\nif( op === 3 || op === 1) return ops[1];\nelse if( op === 11 ) \n{\nvar _a='';\nfor( var i = 1 ; i < ops.length ; i++ )\n{\nvar xp = wh.rv(rev(ops[i],e,s,g,o,_f));\n_a += typeof(xp) === 'undefined' ? '' : xp;\n}\nreturn _a;\n}\n}\n}\nfunction wrapper( ops, e, s, g, o, newap )\n{\nif( ops[0] == '11182016' )\n{\ng.debugInfo = ops[2];\nreturn rev( ops[1], e, s, g, o, newap );\n}\nelse\n{\ng.debugInfo = null;\nreturn rev( ops, e, s, g, o, newap );\n}\n}\nreturn wrapper;\n}\ngra=$gwrt(true); \ngrb=$gwrt(false); \nfunction TestTest( expr, ops, e,s,g, expect_a, expect_b, expect_affected )\n{\n{\nvar o = {is_affected:false};\nvar a = gra( ops, e,s,g, o );\nif( JSON.stringify(a) != JSON.stringify( expect_a )\n|| o.is_affected != expect_affected )\n{\nconsole.warn( \"A. \" + expr + \" get result \" + JSON.stringify(a) + \", \" + o.is_affected + \", but \" + JSON.stringify( expect_a ) + \", \" + expect_affected + \" is expected\" );\n}\n}\n{\nvar o = {is_affected:false};\nvar a = grb( ops, e,s,g, o );\nif( JSON.stringify(a) != JSON.stringify( expect_b )\n|| o.is_affected != expect_affected )\n{\nconsole.warn( \"B. \" + expr + \" get result \" + JSON.stringify(a) + \", \" + o.is_affected + \", but \" + JSON.stringify( expect_b ) + \", \" + expect_affected + \" is expected\" );\n}\n}\n}\n"; // idb -const char aVarNfInitFunct[] = "var nf_init=function(){\nif(typeof __WXML_GLOBAL__===\"undefined\"||undefined===__WXML_GLOBAL__.wxs_nf_init){\nnf_init_Object();nf_init_Function();nf_init_Array();nf_init_String();nf_init_Boolean();nf_init_Number();nf_init_Math();nf_init_Date();nf_init_RegExp();\n}\nif(typeof __WXML_GLOBAL__!==\"undefined\") __WXML_GLOBAL__.wxs_nf_init=true;\n};\nvar nf_init_Object=function(){\nObject.defineProperty(Object.prototype,\"nv_constructor\",{writable:true,value:\"Object\"})\nObject.defineProperty(Object.prototype,\"nv_toString\",{writable:true,value:function(){return \"[object Object]\"}})\n}\nvar nf_init_Function=function(){\nObject.defineProperty(Function.prototype,\"nv_constructor\",{writable:true,value:\"Function\"})\nObject.defineProperty(Function.prototype,\"nv_length\",{get:function(){return this.length;},set:function(){}});\nObject.defineProperty(Function.prototype,\"nv_toString\",{writable:true,value:function(){return \"[function Function]\"}})\n}\nvar nf_init_Array=function(){\nObject.defineProperty(Array.prototype,\"nv_toString\",{writable:true,value:function(){return this.nv_join();}})\nObject.defineProperty(Array.prototype,\"nv_join\",{writable:true,value:function(s){\ns=undefined==s?',':s;\nvar r=\"\";\nfor(var i=0;i &,std::string &)::KEYWORDS[4] = { "true", "false", "undefined", "null" }; // weak -_UNKNOWN unk_556C08; // weak -_UNKNOWN unk_556C0A; // weak -_UNKNOWN unk_556C0C; // weak -_UNKNOWN unk_556C0E; // weak -_UNKNOWN unk_556C10; // weak -void *off_556C1C = &unk_720074; // weak -void *off_556C26 = &unk_610066; // weak -_UNKNOWN unk_556C34; // weak -void *off_556C40 = &unk_720074; // weak -void *off_556C4A = &unk_610066; // weak -_UNKNOWN unk_55739E; // weak -_UNKNOWN unk_5576EE; // weak -_BYTE byte_557ACA[2] = { 0, 0 }; // weak -_UNKNOWN unk_557D34; // weak -char byte_557D9D[] = { '0' }; // weak -_UNKNOWN unk_558106; // weak -void *off_558A2B = &unk_647473; // weak -void *off_558CF7 = &unk_6C6C75; // weak -_UNKNOWN unk_5590D4; // weak -_UNKNOWN unk_5590D6; // weak -_UNKNOWN unk_559324; // weak -void *cplus_demangle_operators = &unk_559324; // weak -void **off_559B20 = &off_5599B5; // weak -char *off_559C88 = "decimal32"; // weak -char *off_559C9C = "decimal64"; // weak -char *off_559CB0 = "decimal128"; // weak -char *off_559CC4 = "half"; // weak -char *off_559CD8 = "char8_t"; // weak -char *off_559CEC = "char16_t"; // weak -char *off_559D00 = "char32_t"; // weak -char *off_559D14 = "decltype(nullptr)"; // weak -void *off_559FE2 = &loc_4D4100; // weak -_UNKNOWN unk_559FE6; // weak -void *off_55A022 = &unk_6E7553; // weak -void *off_55A026 = &unk_6E6F4D; // weak -void *off_55A02A = &unk_657554; // weak -void *off_55A02E = &unk_646557; // weak -void *off_55A032 = &unk_756854; // weak -void *off_55A036 = &unk_697246; // weak -void *off_55A03A = &unk_746153; // weak -void *off_55A094 = &unk_6E614A; // weak -void *off_55A098 = &unk_626546; // weak -void *off_55A09C = &unk_72614D; // weak -void *off_55A0A0 = &unk_727041; // weak -void *off_55A0A4 = &unk_6E754A; // weak -void *off_55A0A8 = &unk_6C754A; // weak -void *off_55A0AC = &unk_677541; // weak -void *off_55A0B0 = &unk_706553; // weak -void *off_55A0B4 = &unk_74634F; // weak -void *off_55A0B8 = &unk_766F4E; // weak -void *off_55A0BC = &unk_636544; // weak -void *off_55A0C0 = &unk_6D0025; // weak -void *off_55A0D2 = &loc_480025; // weak -_UNKNOWN unk_55A0E4; // weak -void *off_55A0E6 = &loc_4D0041; // weak -void *off_55A0F2 = &unk_750053; // weak -void *off_55A100 = &unk_6F004D; // weak -void *off_55A10E = &unk_750054; // weak -void *off_55A11E = &unk_650057; // weak -void *off_55A132 = &unk_680054; // weak -void *off_55A144 = &unk_720046; // weak -void *off_55A152 = &unk_610053; // weak -void *off_55A164 = &unk_750053; // weak -void *off_55A16C = &unk_6F004D; // weak -void *off_55A174 = &unk_750054; // weak -void *off_55A17C = &unk_650057; // weak -void *off_55A184 = &unk_680054; // weak -void *off_55A18C = &unk_720046; // weak -void *off_55A194 = &unk_610053; // weak -void *off_55A19C = &unk_61004A; // weak -void *off_55A1AC = &unk_650046; // weak -void *off_55A1BE = &unk_61004D; // weak -void *off_55A1CA = &unk_700041; // weak -void *off_55A1D6 = &unk_61004D; // weak -void *off_55A1DE = &unk_75004A; // weak -void *off_55A1E8 = &unk_75004A; // weak -void *off_55A1F2 = &unk_750041; // weak -void *off_55A200 = &unk_650053; // weak -void *off_55A214 = &unk_63004F; // weak -void *off_55A224 = &unk_6F004E; // weak -void *off_55A236 = &unk_650044; // weak -void *off_55A248 = &unk_61004A; // weak -void *off_55A250 = &unk_650046; // weak -void *off_55A258 = &unk_61004D; // weak -void *off_55A260 = &unk_700041; // weak -void *off_55A268 = &unk_75004A; // weak -void *off_55A270 = &unk_75004A; // weak -void *off_55A278 = &unk_750041; // weak -void *off_55A280 = &unk_650053; // weak -void *off_55A288 = &unk_63004F; // weak -void *off_55A290 = &unk_6F004E; // weak -void *off_55A298 = &unk_650044; // weak -const char byte_55A2A0[4] = { '\0', '\0', '\0', '\0' }; // idb -int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD) = &__dyn_tls_init; // weak -char *CSWTCH_1[6] = -{ - "Argument domain error (DOMAIN)", - "Argument singularity (SIGN)", - "Overflow range error (OVERFLOW)", - "The result is too small to be represented (UNDERFLOW)", - "Total loss of significance (TLOSS)", - "Partial loss of significance (PLOSS)" -}; // weak -const char String1[] = { 'I', 'N', 'F', '\0' }; // idb -const char off_55A6CA[] = { 'N', 'A', 'N', '\0' }; // idb -_UNKNOWN unk_55A6D4; // weak -_UNKNOWN __etens; // weak -_UNKNOWN unk_55A770; // weak -int __eone = 0; // weak -char *cmap = "alnum"; // weak -__int16 word_55A804[] = { 263 }; // weak -int fivesbits[23] = -{ - 0, - 3, - 5, - 7, - 10, - 12, - 14, - 17, - 19, - 21, - 24, - 26, - 28, - 31, - 33, - 35, - 38, - 40, - 42, - 45, - 47, - 49, - 52 -}; // weak -void *off_55A9C7 = (void *)0x4E614E; // weak -void *off_55A9CB = &unk_666E49; // weak -const wchar_t String = 40u; // idb -void *off_55AB59 = (void *)0x4E614E; // weak -_UNKNOWN unk_55ABB4; // weak -double dbl_55ABB8[4] = { 3.369835408745143e30, 0.0, 0.0, 0.0 }; // weak -int dword_55ABDC[] = { 0 }; // weak -double dbl_55ABF8[] = { 0.0 }; // weak -double __tens_D2A[24] = -{ - 1.0, - 10.0, - 100.0, - 1000.0, - 10000.0, - 100000.0, - 1000000.0, - 1.0e7, - 1.0e8, - 1.0e9, - 1.0e10, - 1.0e11, - 1.0e12, - 1.0e13, - 1.0e14, - 1.0e15, - 1.0e16, - 1.0e17, - 1.0e18, - 1.0e19, - 1.0e20, - 1.0e21, - 1.0e22, - 0.0 -}; // weak -double __tinytens_D2A[4] = { 1.0e-16, 1.0e-32, 1.0e-64, 1.0e-128 }; // weak -double __bigtens_D2A[4] = { 1.0e16, 1.0e32, 1.0e64, 1.0e128 }; // weak -const WCHAR ModuleName = 109u; // idb -const WCHAR LibFileName = 97u; // idb -const WCHAR off_55AD8C = 109u; // idb -int CSWTCH_112[7] = { 4, 1, 16, 2, 8, 0, 0 }; // weak -char *const CSWTCH_18 = &unk_559D40; // idb -int std::money_base::_S_default_pattern = 67109634; // weak -__int16 std::`anonymous namespace'::utf8_bom = -17425; // weak -char **std::locale::_S_categories = &__gnu_cxx::category_names; // weak -int *std::locale::_S_twinned_facets = &std::numpunct::id; // weak -int *const std::locale::facet::_S_c_name = (int *const)0x43; // idb -_UNKNOWN unk_55B244; // weak -_UNKNOWN unk_55B258; // weak -_UNKNOWN unk_55B26C; // weak -_UNKNOWN unk_55B280; // weak -_UNKNOWN unk_55B294; // weak -_UNKNOWN unk_55B2A8; // weak -_UNKNOWN unk_55B2F8; // weak -_UNKNOWN unk_55B30C; // weak -_UNKNOWN unk_55B320; // weak -_UNKNOWN unk_55B334; // weak -_UNKNOWN unk_55B348; // weak -_UNKNOWN unk_55B35C; // weak -_UNKNOWN unk_55B370; // weak -_UNKNOWN unk_55B384; // weak -_UNKNOWN unk_55B398; // weak -_UNKNOWN unk_55B3AC; // weak -_UNKNOWN unk_55B3C0; // weak -_UNKNOWN unk_55B3D4; // weak -_UNKNOWN unk_55B3E8; // weak -_UNKNOWN unk_55B3FC; // weak -_UNKNOWN unk_55B44C; // weak -_UNKNOWN unk_55B460; // weak -_UNKNOWN unk_55B474; // weak -_UNKNOWN unk_55B488; // weak -_UNKNOWN unk_55B49C; // weak -_UNKNOWN unk_55B4B0; // weak -_UNKNOWN unk_55B500; // weak -_UNKNOWN unk_55B514; // weak -_UNKNOWN unk_55B528; // weak -_UNKNOWN unk_55B53C; // weak -_UNKNOWN unk_55B550; // weak -_UNKNOWN unk_55B564; // weak -_UNKNOWN unk_55B578; // weak -_UNKNOWN unk_55B58C; // weak -_UNKNOWN unk_55B5A0; // weak -_UNKNOWN unk_55B5B4; // weak -_UNKNOWN unk_55B5C8; // weak -_UNKNOWN unk_55B5DC; // weak -_UNKNOWN unk_55B5F0; // weak -_UNKNOWN unk_55B604; // weak -int *`typeinfo for'__cxxabiv1::__forced_unwind = &off_55F0D4; // weak -int *`typeinfo for'__cxxabiv1::__foreign_exception = &off_55F0D4; // weak -int *`typeinfo for'WXML::DOMLib::ParseException = &off_55F0D4; // weak -int *`typeinfo for'WXML::DOMLib::RenderException = &off_55F0D4; // weak -int *`typeinfo for'__gnu_cxx::recursive_init_error = &off_55F114; // weak -int *`typeinfo for'__gnu_cxx::__concurrence_lock_error = &off_55F114; // weak -int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error = &off_55F114; // weak -int *`typeinfo for'std::locale::facet::__shim = &off_55F0D4; // weak -int *`typeinfo for'std::locale::facet = &off_55F0D4; // weak -int *`typeinfo for'std::moneypunct = &off_55F140; // weak -int *`typeinfo for'std::moneypunct = &off_55F140; // weak -int *`typeinfo for'std::moneypunct = &off_55F140; // weak -int *`typeinfo for'std::moneypunct = &off_55F140; // weak -int *`typeinfo for'std::string = &off_55F0D4; // weak -int *`typeinfo for'std::collate = &off_55F114; // weak -int *`typeinfo for'std::collate = &off_55F114; // weak -int *`typeinfo for'std::messages = &off_55F140; // weak -int *`typeinfo for'std::messages = &off_55F140; // weak -int *`typeinfo for'std::numpunct = &off_55F114; // weak -int *`typeinfo for'std::numpunct = &off_55F114; // weak -int *`typeinfo for'std::time_get> = &off_55F140; // weak -int *`typeinfo for'std::time_get> = &off_55F140; // weak -int *`typeinfo for'std::money_get> = &off_55F114; // weak -int *`typeinfo for'std::money_get> = &off_55F114; // weak -int *`typeinfo for'std::money_put> = &off_55F114; // weak -int *`typeinfo for'std::money_put> = &off_55F114; // weak -int *`typeinfo for'std::ios_base::failure = &off_55F114; // weak -int `typeinfo for'std::bad_typeid = 5632276; // weak -int *`typeinfo for'std::moneypunct = &off_55F140; // weak -int *`typeinfo for'std::moneypunct = &off_55F140; // weak -int *`typeinfo for'std::moneypunct = &off_55F140; // weak -int *`typeinfo for'std::moneypunct = &off_55F140; // weak -int *`typeinfo for'std::__timepunct = &off_55F114; // weak -int *`typeinfo for'std::__timepunct = &off_55F114; // weak -int *`typeinfo for'std::logic_error = &off_55F114; // weak -int *`typeinfo for'std::range_error = &off_55F114; // weak -int *`typeinfo for'std::domain_error = &off_55F114; // weak -int *`typeinfo for'std::length_error = &off_55F114; // weak -int *`typeinfo for'std::out_of_range = &off_55F114; // weak -int *`typeinfo for'std::system_error = &off_55F114; // weak -int *`typeinfo for'std::__ios_failure = &off_560798; // weak -int *`typeinfo for'std::bad_exception = &off_55F114; // weak -int *`typeinfo for'std::runtime_error = &off_55F114; // weak -int *`typeinfo for'std::overflow_error = &off_55F114; // weak -int *`typeinfo for'std::underflow_error = &off_55F114; // weak -int *`typeinfo for'std::invalid_argument = &off_55F114; // weak -int *`typeinfo for'std::bad_array_new_length = &off_55F114; // weak -int *`typeinfo for'std::ctype = &off_55F140; // weak -int *`typeinfo for'std::ctype = &off_55F114; // weak -int *`typeinfo for'std::codecvt = &off_55F114; // weak -int *`typeinfo for'std::codecvt = &off_55F114; // weak -int *`typeinfo for'std::collate = &off_55F114; // weak -int *`typeinfo for'std::collate = &off_55F114; // weak -int *`typeinfo for'std::num_get> = &off_55F114; // weak -int *`typeinfo for'std::num_get> = &off_55F114; // weak -int *`typeinfo for'std::num_put> = &off_55F114; // weak -int *`typeinfo for'std::num_put> = &off_55F114; // weak -int *`typeinfo for'std::bad_cast = &off_55F114; // weak -int *`typeinfo for'std::messages = &off_55F140; // weak -int *`typeinfo for'std::messages = &off_55F140; // weak -int *`typeinfo for'std::numpunct = &off_55F114; // weak -int *`typeinfo for'std::numpunct = &off_55F114; // weak -int *`typeinfo for'std::time_get> = &off_55F140; // weak -int *`typeinfo for'std::time_get> = &off_55F140; // weak -int *`typeinfo for'std::time_put> = &off_55F114; // weak -int *`typeinfo for'std::time_put> = &off_55F114; // weak -int *`typeinfo for'std::bad_alloc = &off_55F114; // weak -int *`typeinfo for'std::money_get> = &off_55F114; // weak -int *`typeinfo for'std::money_get> = &off_55F114; // weak -int *`typeinfo for'std::money_put> = &off_55F114; // weak -int *`typeinfo for'std::money_put> = &off_55F114; // weak -void (__cdecl *off_55F0D4)(__cxxabiv1::__class_type_info *__hidden this) = &__cxxabiv1::__class_type_info::~__class_type_info; // weak -void (__cdecl *off_55F114)(__cxxabiv1::__si_class_type_info *__hidden this) = &__cxxabiv1::__si_class_type_info::~__si_class_type_info; // weak -void (__cdecl *off_55F140)(__cxxabiv1::__vmi_class_type_info *__hidden this) = &__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info; // weak -void (__cdecl *off_55F16C)(_anonymous_namespace_::io_error_category *__hidden this) = &`anonymous namespace'::io_error_category::~io_error_category; // weak -void (__cdecl *off_55F1E4)(WXML::EXPRLib::NonTerminal *__hidden this) = &WXML::EXPRLib::NonTerminal::~NonTerminal; // weak return 2 -void (__cdecl *off_55F20C)(WXML::EXPRLib::Action *__hidden this) = &WXML::EXPRLib::Action::~Action; // weak return 3 -void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this) = &WXML::EXPRLib::Terminal::~Terminal; // weak // return 1 -int (*off_55F234[2])() = -{ - &__gnu_cxx::stdio_filebuf::~stdio_filebuf, - &__gnu_cxx::stdio_filebuf::~stdio_filebuf -}; // weak -int (*off_55F274[2])() = -{ - &__gnu_cxx::stdio_filebuf::~stdio_filebuf, - &__gnu_cxx::stdio_filebuf::~stdio_filebuf -}; // weak -int (*off_55F2B4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak -int (*off_55F2F4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak -void (__cdecl *off_55F334)(__gnu_cxx::recursive_init_error *__hidden this) = &__gnu_cxx::recursive_init_error::~recursive_init_error; // weak -void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this) = &__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error; // weak -void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this) = &__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error; // weak -int (*off_55F370)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak -int (*off_55F38C)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak -int (*off_55F3A8)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak -int (*off_55F3C4)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak -int (*off_55F3E0)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak -int (*off_55F3FC)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak -int (*off_55F418)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak -int (*off_55F434)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak -int (*off_55F450)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak -int (*off_55F474)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak -int (*off_55F498)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak -int (*off_55F4BC)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak -int (*off_55F4E0)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak -int (*off_55F508)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak -int (*off_55F534)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak -int (*off_55F55C)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak -int (*off_55F588)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak -int (*off_55F5A0)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak -int (*off_55F5B8)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak -int (*off_55F5D0)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak -int (*off_55F5E8)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak -int (*off_55F600)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak -int (*off_55F618)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak -int (*off_55F630)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak -int (*off_55F648)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_55F67C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_55F6B0)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_55F6E4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_55F718)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_55F74C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_55F780)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_55F7B4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak -int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak -int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak -int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak -int (*off_55F8F0)() = &std::collate_byname::~collate_byname; // weak -int (*off_55F90C)() = &std::collate_byname::~collate_byname; // weak -int (*off_55F928)() = &std::stringbuf::~stringbuf; // weak -int (*off_55F968)() = &std::wstringbuf::~wstringbuf; // weak -int (*off_55F9A8)() = &std::messages_byname::~messages_byname; // weak -int (*off_55F9C4)() = &std::messages_byname::~messages_byname; // weak -int (*off_55F9E0)() = &std::numpunct_byname::~numpunct_byname; // weak -int (*off_55FA04)() = &std::numpunct_byname::~numpunct_byname; // weak -int (*off_55FA28)() = &std::time_get_byname>::~time_get_byname; // weak -int (*off_55FA54)() = &std::time_get_byname>::~time_get_byname; // weak -int (*off_55FA80)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_55FAB4)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_55FAE8)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_55FB1C)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_55FB54)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak -int (*off_55FB68[2])() = -{ - &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, - &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream -}; // weak -int (*off_55FB7C[2])() = -{ - &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, - &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream -}; // weak -int (*off_55FB90)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak -int (*off_55FBA4[2])() = -{ - &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, - &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream -}; // weak -int (*off_55FBB8[2])() = -{ - &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, - &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream -}; // weak -int (*off_55FBCC)() = &std::istringstream::~istringstream; // weak -int (*off_55FBE0[2])() = -{ - &`virtual thunk to'std::istringstream::~istringstream, - &`virtual thunk to'std::istringstream::~istringstream -}; // weak -int (*off_55FBF4)() = &std::wistringstream::~wistringstream; // weak -int (*off_55FC08[2])() = -{ - &`virtual thunk to'std::wistringstream::~wistringstream, - &`virtual thunk to'std::wistringstream::~wistringstream -}; // weak -int (*off_55FC1C)() = &std::ostringstream::~ostringstream; // weak -int (*off_55FC30[2])() = -{ - &`virtual thunk to'std::ostringstream::~ostringstream, - &`virtual thunk to'std::ostringstream::~ostringstream -}; // weak -int (*off_55FC44)() = &std::wostringstream::~wostringstream; // weak -int (*off_55FC58[2])() = -{ - &`virtual thunk to'std::wostringstream::~wostringstream, - &`virtual thunk to'std::wostringstream::~wostringstream -}; // weak -int (*off_55FC68)() = &std::collate::~collate; // weak -int (*off_55FC84)() = &std::collate::~collate; // weak -int (*off_55FCA0)() = &std::messages::~messages; // weak -int (*off_55FCBC)() = &std::messages::~messages; // weak -int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::numpunct::~numpunct; // weak -int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::numpunct::~numpunct; // weak -int (*off_55FD20)() = &std::time_get>::~time_get; // weak -int (*off_55FD4C)() = &std::time_get>::~time_get; // weak -int (*off_55FD78)() = &std::money_get>::~money_get; // weak -int (*off_55FD90)() = &std::money_get>::~money_get; // weak -int (*off_55FDA8)() = &std::money_put>::~money_put; // weak -int (*off_55FDC0)() = &std::money_put>::~money_put; // weak -int (*off_55FDD8)() = &std::ios_base::failure[abi:cxx11]::~failure; // weak -void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this) = &std::ios_base::failure::~failure; // weak -void (__cdecl *off_55FE04)(std::iostream *__hidden this) = &std::iostream::~iostream; // weak -void (__cdecl *off_55FE18[2])(std::iostream *__hidden this) = -{ - &`non-virtual thunk to'std::iostream::~iostream, - &`non-virtual thunk to'std::iostream::~iostream -}; // weak -void (__cdecl *off_55FE2C[2])(std::iostream *__hidden this) = -{ - &`virtual thunk to'std::iostream::~iostream, - &`virtual thunk to'std::iostream::~iostream -}; // weak -void (__cdecl *off_55FE40)(std::istream *__hidden this) = &std::istream::~istream; // weak -void (__cdecl *off_55FE54[2])(std::istream *__hidden this) = -{ - &`virtual thunk to'std::istream::~istream, - &`virtual thunk to'std::istream::~istream -}; // weak -void (__cdecl *off_55FE68)(std::ostream *__hidden this) = &std::ostream::~ostream; // weak -void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this) = -{ - &`virtual thunk to'std::ostream::~ostream, - &`virtual thunk to'std::ostream::~ostream -}; // weak -void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this) = &std::bad_typeid::~bad_typeid; // weak -int (*off_55FEA0)() = &std::moneypunct::~moneypunct; // weak -int (*off_55FED4)() = &std::moneypunct::~moneypunct; // weak -int (*off_55FF08)() = &std::moneypunct::~moneypunct; // weak -int (*off_55FF3C)() = &std::moneypunct::~moneypunct; // weak -int (*off_55FF70)() = &std::__timepunct::~__timepunct; // weak -int (*off_55FF80)() = &std::__timepunct::~__timepunct; // weak -void (__cdecl *off_55FF90)(std::logic_error *__hidden this) = &std::logic_error::~logic_error; // weak -void (__cdecl *off_55FFA4)(std::range_error *__hidden this) = &std::range_error::~range_error; // weak -int (*off_55FFB8)() = &std::ctype_byname::~ctype_byname; // weak -int (*off_55FFE8)() = &std::ctype_byname::~ctype_byname; // weak -void (__cdecl *off_560028)(std::domain_error *__hidden this) = &std::domain_error::~domain_error; // weak -void (__cdecl *off_56003C)(std::length_error *__hidden this) = &std::length_error::~length_error; // weak -void (__cdecl *off_560050)(std::out_of_range *__hidden this) = &std::out_of_range::~out_of_range; // weak -void (__cdecl *off_560064)(std::system_error *__hidden this) = &std::system_error::~system_error; // weak -void (__cdecl *off_560078)(std::__ios_failure *__hidden this) = &std::__ios_failure::~__ios_failure; // weak -void (__cdecl *off_56008C)(std::bad_exception *__hidden this) = &std::bad_exception::~bad_exception; // weak -int (*off_5600A0[2])() = { &std::filebuf::~filebuf, &std::filebuf::~filebuf }; // weak -int (*off_5600E0[2])() = { &std::wfilebuf::~wfilebuf, &std::wfilebuf::~wfilebuf }; // weak -int (*off_560124[2])() = { &std::fstream::~fstream, &std::fstream::~fstream }; // weak -int (*off_560138[2])() = -{ - &`non-virtual thunk to'std::fstream::~fstream, - &`non-virtual thunk to'std::fstream::~fstream -}; // weak -int (*off_56014C[2])() = -{ - &`virtual thunk to'std::fstream::~fstream, - &`virtual thunk to'std::fstream::~fstream -}; // weak -int (*off_560160[2])() = { &std::wfstream::~wfstream, &std::wfstream::~wfstream }; // weak -int (*off_560174[2])() = -{ - &`non-virtual thunk to'std::wfstream::~wfstream, - &`non-virtual thunk to'std::wfstream::~wfstream -}; // weak -int (*off_560188[2])() = -{ - &`virtual thunk to'std::wfstream::~wfstream, - &`virtual thunk to'std::wfstream::~wfstream -}; // weak -int (*off_56019C)() = &std::wistream::~wistream; // weak -int (*off_5601B0[2])() = -{ - &`virtual thunk to'std::wistream::~wistream, - &`virtual thunk to'std::wistream::~wistream -}; // weak -int (*off_5601C4)() = &std::wostream::~wostream; // weak -int (*off_5601D8[2])() = -{ - &`virtual thunk to'std::wostream::~wostream, - &`virtual thunk to'std::wostream::~wostream -}; // weak -void (__cdecl *off_5601E8)(std::runtime_error *__hidden this) = &std::runtime_error::~runtime_error; // weak -int (*off_560200[2])() = { &std::ifstream::~ifstream, &std::ifstream::~ifstream }; // weak -int (*off_560214[2])() = -{ - &`virtual thunk to'std::ifstream::~ifstream, - &`virtual thunk to'std::ifstream::~ifstream -}; // weak -int (*off_560228[2])() = { &std::wifstream::~wifstream, &std::wifstream::~wifstream }; // weak -int (*off_56023C[2])() = -{ - &`virtual thunk to'std::wifstream::~wifstream, - &`virtual thunk to'std::wifstream::~wifstream -}; // weak -int (*off_560250)() = &std::wiostream::~basic_iostream; // weak -int (*off_560264[2])() = -{ - &`non-virtual thunk to'std::wiostream::~basic_iostream, - &`non-virtual thunk to'std::wiostream::~basic_iostream -}; // weak -int (*off_560278[2])() = -{ - &`virtual thunk to'std::wiostream::~basic_iostream, - &`virtual thunk to'std::wiostream::~basic_iostream -}; // weak -int (*off_56028C[2])() = { &std::ofstream::~ofstream, &std::ofstream::~ofstream }; // weak -int (*off_5602A0[2])() = -{ - &`virtual thunk to'std::ofstream::~ofstream, - &`virtual thunk to'std::ofstream::~ofstream -}; // weak -int (*off_5602B4[2])() = { &std::wofstream::~wofstream, &std::wofstream::~wofstream }; // weak -int (*off_5602C8[2])() = -{ - &`virtual thunk to'std::wofstream::~wofstream, - &`virtual thunk to'std::wofstream::~wofstream -}; // weak -int (*off_5602D8)() = &std::codecvt_byname::~codecvt_byname; // weak -int (*off_560304)() = &std::codecvt_byname::~codecvt_byname; // weak -int (*off_560330)() = &std::collate_byname::~collate_byname; // weak -int (*off_56034C)() = &std::collate_byname::~collate_byname; // weak -void (__cdecl *off_560368)(std::overflow_error *__hidden this) = &std::overflow_error::~overflow_error; // weak -int (*off_5603D0)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak -int (*off_5603EC)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak -int (*off_560408)() = &std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr; // weak -int (*off_560424)() = &std::streambuf::~streambuf; // weak -int (*off_560464)() = &std::wstreambuf::~wstreambuf; // weak -int (*off_5604A4)() = &std::messages_byname::~messages_byname; // weak -int (*off_5604C0)() = &std::messages_byname::~messages_byname; // weak -int (*off_5604DC)() = &std::numpunct_byname::~numpunct_byname; // weak -int (*off_560500)() = &std::numpunct_byname::~numpunct_byname; // weak -int (*off_560524)() = &std::time_get_byname>::~time_get_byname; // weak -int (*off_56054C)() = &std::time_get_byname>::~time_get_byname; // weak -int (*off_560574)() = &std::time_put_byname>::~time_put_byname; // weak -int (*off_560588)() = &std::time_put_byname>::~time_put_byname; // weak -void (__cdecl *off_56059C)(std::underflow_error *__hidden this) = &std::underflow_error::~underflow_error; // weak -int (*off_5605B0)() = &std::__numpunct_cache::~__numpunct_cache; // weak -int (*off_5605C0)() = &std::__numpunct_cache::~__numpunct_cache; // weak -void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this) = &std::invalid_argument::~invalid_argument; // weak -int (*off_5605E4)() = &std::__timepunct_cache::~__timepunct_cache; // weak -int (*off_5605F4)() = &std::__timepunct_cache::~__timepunct_cache; // weak -int (*off_560604)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_560638)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_56066C)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_5606A0)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_5606D4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak -int (*off_5606E4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak -int (*off_5606F4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak -int (*off_560704)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak -int (*off_56076C)() = &std::__codecvt_utf8_base::~__codecvt_utf8_base; // weak -void (__cdecl *off_560798)(std::__iosfail_type_info *__hidden this) = &std::__iosfail_type_info::~__iosfail_type_info; // weak -int (*off_56081C)() = &std::__codecvt_utf16_base::~__codecvt_utf16_base; // weak -void (__cdecl *off_560848)(std::bad_array_new_length *__hidden this) = &std::bad_array_new_length::~bad_array_new_length; // weak -_UNKNOWN unk_56089C; // weak -_UNKNOWN unk_5608DC; // weak -_UNKNOWN unk_560908; // weak -_UNKNOWN unk_560934; // weak -_UNKNOWN unk_560960; // weak -_UNKNOWN unk_56098C; // weak -_UNKNOWN unk_5609B8; // weak -int (*off_560A3C)() = &std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base; // weak -int (*off_560A68)() = &std::ctype::~ctype; // weak -int (*off_560A98)() = &std::ctype::~ctype; // weak -int (*off_560AD8)() = &std::codecvt::~codecvt; // weak -int (*off_560B04)() = &std::codecvt::~codecvt; // weak -int (*off_560B30)() = &std::codecvt::~codecvt; // weak -int (*off_560B5C)() = &std::codecvt::~codecvt; // weak -int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::codecvt::~codecvt; // weak -int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::codecvt::~codecvt; // weak -int (*off_560BE0)() = &std::collate::~collate; // weak -int (*off_560BFC)() = &std::collate::~collate; // weak -int (*off_560C18)() = &std::num_get>::~num_get; // weak -int (*off_560C54)() = &std::num_get>::~num_get; // weak -int (*off_560C90)() = &std::num_put>::~num_put; // weak -int (*off_560CC0)() = &std::num_put>::~num_put; // weak -void (__cdecl *off_560CF0)(std::bad_cast *__hidden this) = &std::bad_cast::~bad_cast; // weak -void (__cdecl *off_560D04)(std::ios_base *__hidden this) = &std::ios_base::~ios_base; // weak -int (*off_560D14)() = &std::messages::~messages; // weak -int (*off_560D30)() = &std::messages::~messages; // weak -int (*off_560D4C)() = &std::numpunct::~numpunct; // weak -int (*off_560D70)() = &std::numpunct::~numpunct; // weak -int (*off_560D94)() = &std::time_get>::~time_get; // weak -int (*off_560DBC)() = &std::time_get>::~time_get; // weak -int (*off_560DE4)() = &std::time_put>::~time_put; // weak -int (*off_560DF8)() = &std::time_put>::~time_put; // weak -void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this) = &std::bad_alloc::~bad_alloc; // weak -int (*off_560E20)() = &std::ios::~ios; // weak -int (*off_560E30)() = &std::wios::~wios; // weak -int (*off_560E54)() = &std::money_get>::~money_get; // weak -int (*off_560E6C)() = &std::money_get>::~money_get; // weak -int (*off_560E84)() = &std::money_put>::~money_put; // weak -int (*off_560E9C)() = &std::money_put>::~money_put; // weak -_UNKNOWN std::ctype::classic_table(void)::_S_classic_table; // weak -char std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[] = { '0' }; // weak -char byte_5610E1[] = { '0' }; // weak -_TCHAR *__mingw_winmain_lpCmdLine; // idb -HINSTANCE __mingw_winmain_hInstance; // idb -_startupinfo startinfo; // idb -int has_cctor; // idb -int managedapp; // idb -int mainret; // idb -char **envp; // idb -char **argv; // idb -int argc; // idb -_UNKNOWN WXML::RPX::acceptNum(char const*,int &)::nextPos; // weak -int dword_5620EC; // weak -int dword_5620F4; // weak -int dword_5620F8; // weak -int dword_562100[264]; // weak -int dword_562520; // weak -int dword_562528[264]; // weak -int dword_562948; // weak -int dword_562950[266]; // weak -int dword_562D78[266]; // weak -int dword_5631A0[218]; // weak -char WXML::RPX::acceptNum(char const*,int &)::inited; // weak -_UNKNOWN WXML::RPX::acceptStr(char const*,int &)::nextPos; // weak -int dword_5635A8; // weak -int dword_5635BC; // weak -int dword_563948[34]; // weak -int dword_5639D0; // weak -int dword_563AB8; // weak -int dword_563D70[39]; // weak -int dword_563E0C; // weak -int dword_563EE0; // weak -int dword_564198[266]; // weak -int dword_5645C0[532]; // weak -char WXML::RPX::acceptStr(char const*,int &)::inited; // weak -_UNKNOWN WXML::RPX::acceptID(char const*,int &)::nextPos; // weak -int dword_564F24[30]; // weak -int dword_564F9C; // weak -int dword_564FA4[217]; // weak -int dword_565308; // weak -int dword_56530C; // weak -int dword_565310; // weak -int dword_565314; // weak -int dword_565318; // weak -int dword_56531C; // weak -int dword_565320; // weak -int dword_565324; // weak -int dword_565328; // weak -int dword_56532C; // weak -int dword_56534C[30]; // weak -int dword_5653C4; // weak -int dword_5653CC[169]; // weak -char WXML::RPX::acceptID(char const*,int &)::inited; // weak -_UNKNOWN night::NS_BUILTIN_TYPE; // weak -_UNKNOWN night::NS_BUILTIN_KW; // weak -_UNKNOWN night::NS_BUILTIN_SPACE; // weak -_UNKNOWN night::NS_BUILTIN_PUNC; // weak -_UNKNOWN night::NS_BUILTIN_ALL_OP; // weak -_UNKNOWN night::NS_BUILTIN_OP_SELF; // weak -_UNKNOWN night::NS_BUILTIN_OP; // weak -_UNKNOWN night::NS_TYPE_CALL; // weak -_UNKNOWN night::NS_TYPE_FUNC; // weak -_UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak -_UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak -_UNKNOWN night::NS_TYPE_PROG; // weak -_UNKNOWN night::NS_TYPE_SWITCH; // weak -_UNKNOWN night::NS_TYPE_DO_WHILE; // weak -_UNKNOWN night::NS_TYPE_WHILE; // weak -_UNKNOWN night::NS_TYPE_FOR; // weak -_UNKNOWN night::NS_TYPE_IF; // weak -_UNKNOWN night::NS_TYPE_BRACKET; // weak -_UNKNOWN night::NS_TYPE_ARRAY; // weak -_UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak -_UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak -_UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak -_UNKNOWN night::NS_TYPE_OBJ_DOT; // weak -_UNKNOWN night::NS_TYPE_K_V; // weak -_UNKNOWN night::NS_TYPE_TERNARY; // weak -_UNKNOWN night::NS_TYPE_ASSIGN; // weak -_UNKNOWN night::NS_TYPE_BINARY; // weak -_UNKNOWN night::NS_TYPE_OP_SELF; // weak -_UNKNOWN night::NS_TYPE_OP; // weak -_UNKNOWN night::NS_TYPE_PUNC; // weak -_UNKNOWN night::NS_TYPE_KW; // weak -_UNKNOWN night::NS_TYPE_B_TYPE; // weak -_UNKNOWN night::NS_TYPE_NUM; // weak -_UNKNOWN night::NS_TYPE_STR; // weak -_UNKNOWN night::NS_TYPE_VAR; // weak -_UNKNOWN night::NS_TYPE_BOOL; // weak -_UNKNOWN night::NS_TYPE_SKIP; // weak -_UNKNOWN night::nst_; // weak -_UNKNOWN night::nsv_; // weak -int WXML::NameAllocator::ALPAHBETLEN; // weak -_UNKNOWN night::std_v_v_n; // weak -_UNKNOWN night::std_v_n; // weak -int night::NS_BUILTIN_TYPE[6]; // weak -int night::NS_BUILTIN_KW[6]; // weak -int night::NS_BUILTIN_SPACE[6]; // weak -int night::NS_BUILTIN_PUNC[6]; // weak -int night::NS_BUILTIN_ALL_OP[6]; // weak -_UNKNOWN night::NS_BUILTIN_OP_SELF; // weak -int night::NS_BUILTIN_OP[6]; // weak -_UNKNOWN night::NS_TYPE_CALL; // weak -_UNKNOWN night::NS_TYPE_FUNC; // weak -_UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak -_UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak -_UNKNOWN night::NS_TYPE_PROG; // weak -_UNKNOWN night::NS_TYPE_SWITCH; // weak -_UNKNOWN night::NS_TYPE_DO_WHILE; // weak -_UNKNOWN night::NS_TYPE_WHILE; // weak -_UNKNOWN night::NS_TYPE_FOR; // weak -_UNKNOWN night::NS_TYPE_IF; // weak -_UNKNOWN night::NS_TYPE_BRACKET; // weak -_UNKNOWN night::NS_TYPE_ARRAY; // weak -_UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak -_UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak -_UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak -_UNKNOWN night::NS_TYPE_OBJ_DOT; // weak -_UNKNOWN night::NS_TYPE_K_V; // weak -_UNKNOWN night::NS_TYPE_TERNARY; // weak -_UNKNOWN night::NS_TYPE_ASSIGN; // weak -_UNKNOWN night::NS_TYPE_BINARY; // weak -_UNKNOWN night::NS_TYPE_OP_SELF; // weak -_UNKNOWN night::NS_TYPE_OP; // weak -_UNKNOWN night::NS_TYPE_PUNC; // weak -_UNKNOWN night::NS_TYPE_KW; // weak -_UNKNOWN night::NS_TYPE_B_TYPE; // weak -_UNKNOWN night::NS_TYPE_NUM; // weak -_UNKNOWN night::NS_TYPE_STR; // weak -_UNKNOWN night::NS_TYPE_VAR; // weak -_UNKNOWN night::NS_TYPE_BOOL; // weak -_UNKNOWN night::NS_TYPE_SKIP; // weak -_UNKNOWN night::nst_; // weak -void *night::nsv_; // weak -int dword_565DF4; // weak -_UNKNOWN night::NS_BUILTIN_TYPE; // weak -_UNKNOWN night::NS_BUILTIN_KW; // weak -_UNKNOWN night::NS_BUILTIN_SPACE; // weak -_UNKNOWN night::NS_BUILTIN_PUNC; // weak -_UNKNOWN night::NS_BUILTIN_ALL_OP; // weak -_UNKNOWN night::NS_BUILTIN_OP_SELF; // weak -_UNKNOWN night::NS_BUILTIN_OP; // weak -_UNKNOWN night::NS_TYPE_CALL; // weak -_UNKNOWN night::NS_TYPE_FUNC; // weak -_UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak -_UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak -_UNKNOWN night::NS_TYPE_PROG; // weak -_UNKNOWN night::NS_TYPE_SWITCH; // weak -_UNKNOWN night::NS_TYPE_DO_WHILE; // weak -_UNKNOWN night::NS_TYPE_WHILE; // weak -_UNKNOWN night::NS_TYPE_FOR; // weak -_UNKNOWN night::NS_TYPE_IF; // weak -_UNKNOWN night::NS_TYPE_BRACKET; // weak -_UNKNOWN night::NS_TYPE_ARRAY; // weak -_UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak -_UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak -_UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak -_UNKNOWN night::NS_TYPE_OBJ_DOT; // weak -_UNKNOWN night::NS_TYPE_K_V; // weak -_UNKNOWN night::NS_TYPE_TERNARY; // weak -_UNKNOWN night::NS_TYPE_ASSIGN; // weak -_UNKNOWN night::NS_TYPE_BINARY; // weak -_UNKNOWN night::NS_TYPE_OP_SELF; // weak -_UNKNOWN night::NS_TYPE_OP; // weak -_UNKNOWN night::NS_TYPE_PUNC; // weak -_UNKNOWN night::NS_TYPE_KW; // weak -_UNKNOWN night::NS_TYPE_B_TYPE; // weak -_UNKNOWN night::NS_TYPE_NUM; // weak -_UNKNOWN night::NS_TYPE_STR; // weak -_UNKNOWN night::NS_TYPE_VAR; // weak -_UNKNOWN night::NS_TYPE_BOOL; // weak -_UNKNOWN night::NS_TYPE_SKIP; // weak -_UNKNOWN night::nst_; // weak -_UNKNOWN night::nsv_; // weak -_UNKNOWN night::NS_BUILTIN_TYPE; // weak -_UNKNOWN night::NS_BUILTIN_KW; // weak -_UNKNOWN night::NS_BUILTIN_SPACE; // weak -_UNKNOWN night::NS_BUILTIN_PUNC; // weak -_UNKNOWN night::NS_BUILTIN_ALL_OP; // weak -_UNKNOWN night::NS_BUILTIN_OP_SELF; // weak -_UNKNOWN night::NS_BUILTIN_OP; // weak -_UNKNOWN night::NS_TYPE_CALL; // weak -_UNKNOWN night::NS_TYPE_FUNC; // weak -_UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak -_UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak -_UNKNOWN night::NS_TYPE_PROG; // weak -_UNKNOWN night::NS_TYPE_SWITCH; // weak -_UNKNOWN night::NS_TYPE_DO_WHILE; // weak -_UNKNOWN night::NS_TYPE_WHILE; // weak -_UNKNOWN night::NS_TYPE_FOR; // weak -_UNKNOWN night::NS_TYPE_IF; // weak -_UNKNOWN night::NS_TYPE_BRACKET; // weak -_UNKNOWN night::NS_TYPE_ARRAY; // weak -_UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak -_UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak -_UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak -_UNKNOWN night::NS_TYPE_OBJ_DOT; // weak -_UNKNOWN night::NS_TYPE_K_V; // weak -_UNKNOWN night::NS_TYPE_TERNARY; // weak -_UNKNOWN night::NS_TYPE_ASSIGN; // weak -_UNKNOWN night::NS_TYPE_BINARY; // weak -_UNKNOWN night::NS_TYPE_OP_SELF; // weak -_UNKNOWN night::NS_TYPE_OP; // weak -_UNKNOWN night::NS_TYPE_PUNC; // weak -_UNKNOWN night::NS_TYPE_KW; // weak -_UNKNOWN night::NS_TYPE_B_TYPE; // weak -_UNKNOWN night::NS_TYPE_NUM; // weak -_UNKNOWN night::NS_TYPE_STR; // weak -_UNKNOWN night::NS_TYPE_VAR; // weak -_UNKNOWN night::NS_TYPE_BOOL; // weak -_UNKNOWN night::NS_TYPE_SKIP; // weak -_UNKNOWN night::nst_; // weak -_UNKNOWN night::nsv_; // weak -int WXML::DOMLib::WXMLDom::componentCnt; // weak -int WXML::DOMLib::Machine::STT[]; // weak -int dword_566564; // weak -int dword_566574; // weak -int dword_566584; // weak -int dword_5665DC; // weak -int dword_5665E0; // weak -int WXML::DOMLib::Machine::TT[]; // weak -int dword_567960[]; // weak -int dword_567964; // weak -int dword_567A54; // weak -int dword_567B50; // weak -int dword_567D64; // weak -int dword_567D68[33]; // weak -int dword_567DEC; // weak -int dword_567E24; // weak -int dword_567F44; // weak -int dword_568168; // weak -int dword_56816C[34]; // weak -int dword_5681F4; // weak -int dword_568208; // weak -int dword_568228; // weak -int dword_56825C; // weak -int dword_568260; // weak -int dword_568264; // weak -int dword_56856C; // weak -int dword_568570[34]; // weak -int dword_5685F8; // weak -int dword_56862C; // weak -int dword_568664; // weak -int dword_568668; // weak -int dword_568970; // weak -int dword_568974; // weak -int dword_56899C; // weak -int dword_5689FC; // weak -int dword_568AE4; // weak -int dword_568D74; // weak -int dword_568D78[]; // weak -int dword_568E00; // weak -int dword_568E14; // weak -int dword_569178; // weak -int dword_5691A4; // weak -int dword_56957C; // weak -int dword_569984; // weak -int dword_5699AC; // weak -int dword_569A20; // weak -int dword_569AF4; // weak -int dword_569D84; // weak -int dword_569DB0; // weak -int dword_56A188; // weak -int dword_56A18C; // weak -int dword_56A214; // weak -int dword_56A2FC; // weak -int dword_56A58C; // weak -int dword_56A990; // weak -int dword_56A994; // weak -int dword_56AA30; // weak -int dword_56AB04; // weak -int dword_56AD94; // weak -int dword_56B198; // weak -int dword_56B388; // weak -int dword_56B59C; // weak -int dword_56B5A0; // weak -int dword_56B628; // weak -int dword_56B63C; // weak -int dword_56B794; // weak -int dword_56B9A0; // weak -int dword_56BB98; // weak -int dword_56BDA4; // weak -int dword_56BDA8[62]; // weak -int dword_56BEA0; // weak -int dword_56C1A8; // weak -int dword_56C260; // weak -int dword_56C5AC; // weak -int dword_56C664; // weak -int dword_56C9B0; // weak -int dword_56CA68; // weak -int dword_56CAAC; // weak -int dword_56CDB4; // weak -int dword_56CF98; // weak -int dword_56D1B8; // weak -int dword_56D388; // weak -int dword_56D5BC; // weak -int dword_56D5C0[62]; // weak -int dword_56D6B8; // weak -int dword_56D9C0; // weak -int dword_56DA80; // weak -int dword_56DABC; // weak -int dword_56DDC4; // weak -int dword_56DE84; // weak -int dword_56E1C8; // weak -int dword_56E3A8; // weak -int dword_56E5CC; // weak -int dword_56E7B0; // weak -int dword_56E9D0; // weak -int dword_56EBA0; // weak -int dword_56EDD4; // weak -int dword_56EDD8[62]; // weak -int dword_56EED0; // weak -int dword_56F1D8; // weak -int dword_56F2CC; // weak -int dword_56F5DC; // weak -int dword_56F6D8; // weak -int dword_56F9E0; // weak -int dword_56FA98; // weak -int dword_56FDE4; // weak -int dword_56FE9C; // weak -int dword_5701E8; // weak -int dword_5806EC; // weak -_UNKNOWN unk_620001; // weak -char WXML::DOMLib::Machine::InitTransitTable(void)::bInited; // weak -int WXML::EXPRLib::Tokenizer::TT[]; // weak -int dword_6689A0[]; // weak -int dword_6689A4[33]; // weak -int dword_668A28; // weak -int dword_668A2C; // weak -int dword_668A3C; // weak -int dword_668A40; // weak -int dword_668A5C; // weak -int dword_668A60; // weak -int dword_668A94; // weak -int dword_668A98; // weak -int dword_668A9C; // weak -int dword_668B94; // weak -int dword_668DA4; // weak -int dword_668E9C; // weak -int dword_6691A8; // weak -int dword_6691AC[46]; // weak -int dword_669264; // weak -int dword_6695AC; // weak -int dword_669668; // weak -int dword_6699B0; // weak -int dword_669DE0; // weak -int dword_669E40; // weak -int dword_669F28; // weak -int dword_66A1B8; // weak -int dword_66A1E4; // weak -int dword_66A5BC; // weak -int dword_66A5E8; // weak -int dword_66A65C; // weak -int dword_66A730; // weak -int dword_66A9C0; // weak -int dword_66A9EC; // weak -int dword_66ADC4; // weak -int dword_66ADC8[46]; // weak -int dword_66AE80; // weak -int dword_66B1C8; // weak -int dword_66B1CC[256]; // weak -int dword_66B5CC; // weak -int dword_66B6C4; // weak -int dword_66B9D0; // weak -int dword_66B9D4[256]; // weak -int dword_66BDD4; // weak -int dword_66BE70; // weak -int dword_66C1D8; // weak -int dword_66C3CC; // weak -int dword_66C5DC; // weak -int dword_66C6D0; // weak -int dword_66C6D4; // weak -int dword_66C9E0; // weak -int dword_66CAD8; // weak -int dword_66CADC; // weak -int dword_66CDE4; // weak -int dword_66CEDC; // weak -int dword_66D1E8; // weak -int dword_66D2E0; // weak -int dword_66D5EC; // weak -int dword_66D6E4; // weak -int dword_66D9F0; // weak -int dword_66DA9C; // weak -int dword_66DDF4; // weak -int dword_66DEA0; // weak -int dword_66E1F8; // weak -int dword_66E2A4; // weak -int dword_66E2B8; // weak -int dword_66E5FC; // weak -char WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited; // weak -int bss_0; // weak -int __native_startup_lock; // weak -int __native_startup_state; // weak -int _dowildcard; // weak -int mingw_initcharmax; // weak -int _newmode; // weak -int mingw_initltssuo_force; // weak -int mingw_initltsdyn_force; // weak -int mingw_initltsdrot_force; // weak -int _commode; -int mingw_app_type; // weak -int was_init_0; // weak -int maxSections; // weak -int the_secs; // weak -int (__cdecl *stUserMathErr)(_DWORD); // weak -int _fmode; -int (__stdcall *__mingw_oldexcpt_handler)(_DWORD); // weak -void *key_dtor_list; // idb -int __mingwthr_cs_init; // weak -struct _RTL_CRITICAL_SECTION __mingwthr_cs; // idb -DWORD fc_key; // idb -int fc_static; // weak -int emutls_size; // weak -DWORD emutls_key; // idb -int emutls_mutex; // weak -HANDLE hHandle; // idb -char __hexdig_D2A[48]; // weak -char byte_769690; // weak -int p5s; // weak -_UNKNOWN private_mem; // weak -int freelist[]; // weak -int dword_76A084; // weak -int dtoa_CS_init; // weak -struct _RTL_CRITICAL_SECTION dtoa_CritSec; // idb -struct _RTL_CRITICAL_SECTION CriticalSection; // idb -_UNKNOWN bss_1; // weak -_UNKNOWN internal_mbstate_1; // weak -_UNKNOWN internal_mbstate_2; // weak -int handler; // weak -int (__stdcall *pRtlGenRandom)(_DWORD, _DWORD); // weak -int msvcrt__lc_codepage; // weak -// extern HANDLE (__stdcall *CreateSemaphoreW)(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName); -// extern void (__stdcall *DeleteCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); -// extern void (__stdcall *EnterCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); -// extern DWORD (__stdcall *GetCurrentThreadId)(); -// extern DWORD (__stdcall *GetLastError)(); -// extern HMODULE (__stdcall *GetModuleHandleW)(LPCWSTR lpModuleName); -// extern FARPROC (__stdcall *GetProcAddress)(HMODULE hModule, LPCSTR lpProcName); -// extern void (__stdcall *GetStartupInfoA)(LPSTARTUPINFOA lpStartupInfo); -// extern void (__stdcall *InitializeCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); -// extern BOOL (__stdcall *IsDBCSLeadByteEx)(UINT CodePage, BYTE TestChar); -// extern void (__stdcall *LeaveCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); -// extern HMODULE (__stdcall *LoadLibraryW)(LPCWSTR lpLibFileName); -// extern int (__stdcall *MultiByteToWideChar)(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); -// extern BOOL (__stdcall *ReleaseSemaphore)(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); -// extern void (__stdcall *SetLastError)(DWORD dwErrCode); -// extern LPTOP_LEVEL_EXCEPTION_FILTER (__stdcall *SetUnhandledExceptionFilter)(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); -// extern void (__stdcall *Sleep)(DWORD dwMilliseconds); -// extern DWORD (__stdcall *TlsAlloc)(); -// extern BOOL (__stdcall *TlsFree)(DWORD dwTlsIndex); -// extern LPVOID (__stdcall *TlsGetValue)(DWORD dwTlsIndex); -// extern BOOL (__stdcall *TlsSetValue)(DWORD dwTlsIndex, LPVOID lpTlsValue); -// extern BOOL (__stdcall *VirtualProtect)(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); -// extern SIZE_T (__stdcall *VirtualQuery)(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); -// extern DWORD (__stdcall *WaitForSingleObject)(HANDLE hHandle, DWORD dwMilliseconds); -// extern int (__stdcall *WideCharToMultiByte)(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar); -// extern _UNKNOWN ___initenv; weak -// extern int ___mb_cur_max; -// extern int *(__cdecl *__errno)(); -// extern int (__cdecl *__fstat64)(int FileHandle, struct _stat64 *Stat); -// extern FILE __iob[]; -// extern int (__cdecl *__stricmp)(const char *String1, const char *String2); -// extern FILE *(__cdecl *__wfopen)(const wchar_t *FileName, const wchar_t *Mode); -_PVFV __xc_a = NULL; // idb -_PVFV __xc_z = NULL; // idb -_PVFV __crt_xc_end__ = NULL; // idb -_PVFV __xi_z = NULL; // idb - - -//----- (00401010) -------------------------------------------------------- -int pre_c_init() -{ - BOOL v0; // eax - __int16 v2; // dx - - v0 = 0; - mingw_initltsdrot_force = 1; - mingw_initltsdyn_force = 1; - mingw_initltssuo_force = 1; - mingw_initcharmax = 1; - if ( MEMORY[0x400000] == 23117 && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 ) - { - v2 = *(_WORD *)(MEMORY[0x40003C] + 4194328); - if ( v2 == 267 ) - { - if ( *(_DWORD *)(MEMORY[0x40003C] + 4194420) > 0xEu ) - v0 = *(_DWORD *)(MEMORY[0x40003C] + 4194536) != 0; - } - else if ( v2 == 523 && *(_DWORD *)(MEMORY[0x40003C] + 4194436) > 0xEu ) - { - v0 = *(_DWORD *)(MEMORY[0x40003C] + 4194552) != 0; - } - } - managedapp = v0; - if ( mingw_app_type ) - __set_app_type(_crt_gui_app); - else - __set_app_type(_crt_console_app); - *__p__fmode() = _fmode; - *__p__commode() = _commode; - _setargv(); - if ( _MINGW_INSTALL_DEBUG_MATHERR == 1 ) - __mingw_setusermatherr(_matherr); - return 0; -} -// 53E22C: using guessed type int _MINGW_INSTALL_DEBUG_MATHERR; -// 7695D8: using guessed type int mingw_initcharmax; -// 7695E0: using guessed type int mingw_initltssuo_force; -// 7695E4: using guessed type int mingw_initltsdyn_force; -// 7695E8: using guessed type int mingw_initltsdrot_force; -// 7695F4: using guessed type int mingw_app_type; - -//----- (00401130) -------------------------------------------------------- -void pre_cpp_init() -{ - startinfo.newmode = _newmode; - __getmainargs(&argc, &argv, &envp, _dowildcard, &startinfo); -} -// 46CBF8: using guessed type int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); -// 7695D4: using guessed type int _dowildcard; -// 7695DC: using guessed type int _newmode; - -//----- (00401170) -------------------------------------------------------- -// write access to const memory has been detected, the output may be wrong! -int __usercall __tmainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5) -{ - signed __int32 v5; // edi - signed __int32 v6; // eax - __int32 v7; // ebx - char **v8; // eax - char v9; // cl - _TCHAR *v10; // eax - char v11; // dl - char v12; // dl - DWORD wShowWindow; // eax - int v14; // ebx - size_t v15; // esi - char **v16; // eax - char **v17; // ebx - const char **v18; // edi - const char *v19; // eax - size_t Size; // esi - char *v21; // eax - int result; // eax - size_t v23; // [esp+14h] [ebp-7Ch] - char **v24; // [esp+18h] [ebp-78h] - const char **v25; // [esp+1Ch] [ebp-74h] - struct _STARTUPINFOA v26; // [esp+2Ch] [ebp-64h] BYREF - char *v27; // [esp+78h] [ebp-18h] - int v28; // [esp+7Ch] [ebp-14h] - int v29; // [esp+80h] [ebp-10h] - int v30; // [esp+84h] [ebp-Ch] - int v31; // [esp+88h] [ebp-8h] - int v32; // [esp+8Ch] [ebp-4h] - int retaddr; // [esp+90h] [ebp+0h] - - v32 = retaddr; - v31 = a2; - v30 = a3; - v29 = a4; - v28 = a1; - v27 = &a5; - memset(&v26, 0, sizeof(v26)); - if ( mingw_app_type ) - GetStartupInfoA(&v26); - v5 = *((_DWORD *)NtCurrentTeb() + 1); - while ( 1 ) - { - v6 = _InterlockedCompareExchange(&__native_startup_lock, v5, 0); - if ( !v6 ) - { - v7 = 0; - if ( __native_startup_state == 1 ) - goto LABEL_40; - goto LABEL_8; - } - if ( v5 == v6 ) - break; - Sleep(0x3E8u); - } - v7 = 1; - if ( __native_startup_state == 1 ) - { -LABEL_40: - _amsg_exit(31); - if ( __native_startup_state == 1 ) - goto LABEL_41; -LABEL_11: - if ( v7 ) - goto LABEL_12; - goto LABEL_42; - } -LABEL_8: - if ( __native_startup_state ) - { - has_cctor = 1; - } - else - { - __native_startup_state = 1; - _initterm(&__crt_xc_end__, &__xi_z); - } - if ( __native_startup_state != 1 ) - goto LABEL_11; -LABEL_41: - _initterm(&__xc_a, &__xc_z); - __native_startup_state = 2; - if ( v7 ) - goto LABEL_12; -LABEL_42: - _InterlockedExchange(&__native_startup_lock, v7); -LABEL_12: - if ( __dyn_tls_init_callback ) - __dyn_tls_init_callback(0, 2, 0); - _pei386_runtime_relocator(); - __mingw_oldexcpt_handler = (int (__stdcall *)(_DWORD))SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)_gnu_exception_handler); - _set_invalid_parameter_handler(__mingw_invalidParameterHandler); - fpreset(); - __mingw_winmain_hInstance = (HINSTANCE)0x400000; - v8 = __p__acmdln(); - v9 = 0; - v10 = *v8; - if ( !v10 ) - goto LABEL_27; - while ( 1 ) - { - v11 = *v10; - if ( *v10 <= 32 ) - break; - if ( v11 == 34 ) - v9 ^= 1u; -LABEL_19: - ++v10; - } - if ( !v11 ) - goto LABEL_26; - if ( (v9 & 1) != 0 ) - { - v9 = 1; - goto LABEL_19; - } - do - v12 = *++v10; - while ( v12 && v12 <= 32 ); -LABEL_26: - __mingw_winmain_lpCmdLine = v10; -LABEL_27: - if ( mingw_app_type ) - { - wShowWindow = 10; - if ( (v26.dwFlags & 1) != 0 ) - wShowWindow = v26.wShowWindow; - _data_start__ = wShowWindow; - } - v14 = argc; - v15 = 4 * argc + 4; - v16 = (char **)malloc(v15); - v24 = v16; - if ( v14 > 0 ) - { - v17 = v16; - v18 = (const char **)argv; - v23 = v15 - 4; - v25 = (const char **)((char *)argv + v15 - 4); - do - { - v19 = *v18; - ++v17; - ++v18; - Size = strlen(v19) + 1; - v21 = (char *)malloc(Size); - *(v17 - 1) = v21; - memcpy(v21, *(v18 - 1), Size); - } - while ( v25 != v18 ); - v16 = (char **)((char *)v24 + v23); - } - *v16 = 0; - argv = v24; - __main(); - ___initenv = envp; - result = main(argc, (const char **)argv, ___initenv); - mainret = result; - if ( !managedapp ) - exit(result); - if ( !has_cctor ) - { - _cexit(); - return mainret; - } - return result; -} -// 40137A: write access to const memory at 76B260 has been detected -// 401170: could not find valid save-restore pair for ebx -// 401170: could not find valid save-restore pair for ebp -// 401170: could not find valid save-restore pair for edi -// 401170: could not find valid save-restore pair for esi -// 4012B2: conditional instruction was optimized away because dl.1!=0 -// 46CBC8: using guessed type int __cdecl _amsg_exit(_DWORD); -// 55A440: using guessed type int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD); -// 7695CC: using guessed type int __native_startup_lock; -// 7695D0: using guessed type int __native_startup_state; -// 7695F4: using guessed type int mingw_app_type; -// 76960C: using guessed type int (__stdcall *__mingw_oldexcpt_handler)(_DWORD); - -//----- (004014B0) -------------------------------------------------------- -int __usercall WinMainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5) -{ - mingw_app_type = 1; - return __tmainCRTStartup(a1, a2, a3, a4, a5); -} -// 7695F4: using guessed type int mingw_app_type; - -//----- (004014C0) -------------------------------------------------------- -int __usercall mainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5) -{ - mingw_app_type = 0; - return __tmainCRTStartup(a1, a2, a3, a4, a5); -} -// 7695F4: using guessed type int mingw_app_type; - -//----- (004014D0) -------------------------------------------------------- -int __cdecl atexit(_PVFV func) -{ - return -(_onexit((_onexit_t)func) == 0); -} - -//----- (004014F0) -------------------------------------------------------- -int __gcc_register_frame() -{ - return atexit(__gcc_deregister_frame); -} - -//----- (00401520) -------------------------------------------------------- -int printf(char *a1, ...) -{ - FILE *v1; // eax - va_list va; // [esp+24h] [ebp+Ch] BYREF - - va_start(va, a1); - v1 = ___acrt_iob_func(1u); - return __mingw_vfprintf(v1, a1, (int *)va); -} - -//----- (00401550) -------------------------------------------------------- -int fprintf(_iobuf *a1, char *a2, ...) -{ - va_list va; // [esp+28h] [ebp+10h] BYREF - - va_start(va, a2); - return __mingw_vfprintf(a1, a2, (int *)va); -} - -//----- (00401571) -------------------------------------------------------- -void __tcf_1(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (0040157C) -------------------------------------------------------- -void *__usercall std::_Vector_base::_M_allocate@(unsigned int a1@) -{ - if ( !a1 ) - return 0; - if ( a1 > 0x5555555 ) - std::__throw_bad_alloc(); - return operator new(24 * a1); -} -// 40157C: could not find valid save-restore pair for ebp - -//----- (004015A2) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, this[1], Str, v2); -} - -//----- (004015E0) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 *v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 *v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = *this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = *this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == (unsigned __int8 *)(this + 2) ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 401647: variable 'v9' is possibly undefined - -//----- (00401668) -------------------------------------------------------- -size_t __thiscall std::string::basic_string(void **this, char *Str) -{ - char *v3; // edi - size_t result; // eax - _BYTE *v5; // edx - size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = strlen(Str); - v3 = &Str[v6[0]]; - if ( v6[0] > 0xF ) - { - *this = std::string::_M_create(v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); - result = v6[0]; - v5 = *this; - this[1] = (void *)v6[0]; - v5[result] = 0; - return result; -} -// 401668: using guessed type size_t var_1C[7]; - -//----- (004016E6) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00401726) -------------------------------------------------------- -int __cdecl Usage(int a1, const char **a2) -{ - printf("Wechat WXML Compiler, version %s\n", "v0.5vv_20200413_syb_scopedata"); - printf( - "Usage: %s [-d] [-o OUTPUT] [-xc XComponentDefine] [-om XComponentDefine] [-cb [callback.js...]] [-llcommon] [-llw/-l" - "la XCPath] \n", - *a2); - printf(" Options:\n"); - printf(" -d: output code for debug\n"); - printf(" -o: output destination (default stdout)\n"); - printf(" -xc: output simplified code for custom component\n"); - printf(" -cc: output compelete code for custom component\n"); - printf(" -s: read from stdin\n"); - printf(" -ds: insert debug wxs info\n"); - printf(" -cb: add life cycle callback\n"); - printf(" -llw: compile in lazy load mode (webiew)\n"); - printf(" -lla: compile in lazy load mode (app service)\n"); - printf(" args XCPath: custom component paths connected by comma or --split (./page/index,./comp/comp)\n"); - return 1; -} - -//----- (004017E0) -------------------------------------------------------- -int __cdecl ReadFile(char *FileName, unsigned int *a2) -{ - FILE *v2; // eax - FILE *v3; // ebx - unsigned int v4; // eax - int v5; // esi - char Buffer[4]; // [esp+10h] [ebp-418h] BYREF - char v8[1020]; // [esp+14h] [ebp-414h] BYREF - - std::string::operator=(a2, (char *)&byte_5402D0); - v2 = ___acrt_iob_func(0); - if ( FileName ) - v2 = fopen(FileName, "r"); - v3 = v2; - if ( !v2 ) - return -1; - *(_DWORD *)Buffer = 0; - memset(v8, 0, sizeof(v8)); - while ( fgets(Buffer, 1024, v3) ) - { - v4 = strlen(Buffer); - if ( v4 > 0x3FFFFFFF - a2[1] ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(a2, Buffer, v4); - } - v5 = 0; - if ( FileName ) - fclose(v3); - return v5; -} - -//----- (004018B2) -------------------------------------------------------- -int __cdecl Trim(int a1, int a2) -{ - unsigned int v2; // eax - void *v4[6]; // [esp+50h] [ebp-38h] BYREF - void *v5[8]; // [esp+68h] [ebp-20h] BYREF - - std::string::basic_string((char *)a1, a2); - while ( *(_DWORD *)(a1 + 4) > 1u && **(_BYTE **)a1 == 32 ) - { - std::string::substr(v4, (_DWORD *)a1, 1u, 0xFFFFFFFF); - std::string::operator=((unsigned __int8 **)a1, (int)v4); - std::string::_M_dispose(v4); - } - while ( 1 ) - { - v2 = *(_DWORD *)(a1 + 4); - if ( v2 <= 1 || *(_BYTE *)(*(_DWORD *)a1 + v2 - 1) != 32 ) - break; - std::string::substr(v5, (_DWORD *)a1, 0, v2 - 1); - std::string::operator=((unsigned __int8 **)a1, (int)v5); - std::string::_M_dispose(v5); - } - return a1; -} - -//----- (004019D7) -------------------------------------------------------- -/** - * @param a1 存储结果的容器 - * @param a2 配置内容 - * @param a3 换行标记 \n -*/ -int GetNextArg(int a1, int *a2, int a3) -{ - unsigned int v3; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-90h] - void *v6[2]; // [esp+58h] [ebp-50h] BYREF - char v7; // [esp+60h] [ebp-48h] BYREF - void *v8[6]; // [esp+70h] [ebp-38h] BYREF - void *v9[8]; // [esp+88h] [ebp-20h] BYREF - - v3 = std::string::find(a2, *(char **)a3, 0); - v6[1] = 0; - lpuexcpt = (struct _Unwind_Exception *)v3; - v6[0] = &v7; - v7 = 0; - if ( v3 == -1 ) - { - std::string::_M_assign((int)v6, (int)a2); - std::string::operator=((unsigned int *)a2, (char *)&byte_5402D0); - } - else - { - std::string::substr(v8, a2, 0, v3); - std::string::operator=((unsigned __int8 **)v6, (int)v8); - std::string::_M_dispose(v8); - std::string::substr(v9, a2, (unsigned int)lpuexcpt + *(_DWORD *)(a3 + 4), 0xFFFFFFFF); - // v9 = a2.substr(lpuexcpt) - std::string::operator=((unsigned __int8 **)a2, (int)v9); - std::string::_M_dispose(v9); - } - Trim(a1, (int)v6); - std::string::_M_dispose(v6); - return a1; -} - -//----- (00401B4E) -------------------------------------------------------- -int __cdecl EscapeToJsonString(int a1, int a2) -{ - unsigned __int8 v2; // al - char *v3; // eax - char *v4; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-110h] - unsigned __int8 v7; // [esp+57h] [ebp-D1h] BYREF - int v8; // [esp+58h] [ebp-D0h] BYREF - char v9[204]; // [esp+5Ch] [ebp-CCh] BYREF - - std::ostringstream::basic_ostringstream((int)&v8); - for ( lpuexcpt = *(struct _Unwind_Exception **)a2; - lpuexcpt != (struct _Unwind_Exception *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 4)); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v2 = *(_BYTE *)lpuexcpt; - if ( *(_BYTE *)lpuexcpt == '\\'/*92*/ || v2 == '"'/*34*/ || v2 <= 0x1Fu ) - { - v3 = (char *)std::operator<<>((std::ostream::sentry *)&v8, "\\u"); - v4 = std::ostream::operator<<(v3, (void (__cdecl *)(char *))std::hex); - *(_DWORD *)&v4[*(_DWORD *)(*(_DWORD *)v4 - 12) + 8] = 4; - std::operator<<>(v4, 48); // 48 -> '0' - std::ostream::operator<<(*(char *)lpuexcpt); - } - else - { - v7 = *(_BYTE *)lpuexcpt; - std::__ostream_insert>((std::ostream::sentry *)&v8, (int)&v7, 1); - } - } - std::stringbuf::str(a1, (int)v9); - std::ostringstream::~ostringstream((int)&v8); - return a1; -} -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 401B4E: using guessed type char var_CC[204]; - -//----- (00401CE9) -------------------------------------------------------- -int __cdecl DictToJsonString(int a1, int a2) -{ - char v2; // al - std::ostream::sentry *v3; // eax - std::ostream::sentry *v4; // eax - std::ostream::sentry *v6; // [esp+14h] [ebp-124h] - std::ostream::sentry *v7; // [esp+14h] [ebp-124h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-120h] - char *v9[6]; // [esp+50h] [ebp-E8h] BYREF - char v10[4]; // [esp+68h] [ebp-D0h] BYREF - char v11[204]; // [esp+6Ch] [ebp-CCh] BYREF - - std::ostringstream::basic_ostringstream((int)v10); - std::operator<<>((std::ostream::sentry *)v10, "{"); - lpuexcpt = *(struct _Unwind_Exception **)(a2 + 12); - v2 = 1; - while ( (struct _Unwind_Exception *)(a2 + 4) != lpuexcpt ) - { - if ( !v2 ) - std::operator<<>((std::ostream::sentry *)v10, ","); - v6 = std::operator<<>((std::ostream::sentry *)v10, "\""); - EscapeToJsonString((int)v9, (int)lpuexcpt + 16); - v3 = std::operator<<>(v6, v9[0]); - std::operator<<>(v3, "\":"); - std::string::_M_dispose((void **)v9); - v7 = std::operator<<>((std::ostream::sentry *)v10, "\""); - EscapeToJsonString((int)v9, (int)lpuexcpt + 40); - v4 = std::operator<<>(v7, v9[0]); - std::operator<<>(v4, "\""); - std::string::_M_dispose((void **)v9); - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcpt); - v2 = 0; - } - std::operator<<>((std::ostream::sentry *)v10, "}"); - std::stringbuf::str(a1, (int)v11); - std::ostringstream::~ostringstream((int)v10); - return a1; -} -// 401CE9: using guessed type char var_D0[4]; -// 401CE9: using guessed type char var_CC[204]; - -//----- (00401F72) -------------------------------------------------------- -int __cdecl Split(int a1, int *a2, int a3) -{ - unsigned int i; // eax - unsigned int v5; // [esp+14h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] - void *v7[6]; // [esp+50h] [ebp-38h] BYREF - void *v8[8]; // [esp+68h] [ebp-20h] BYREF - - lpuexcpt = 0; - *(_DWORD *)a1 = 0; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - for ( i = std::string::find(a2, a3, 0); ; i = std::string::find(a2, a3, (int)lpuexcpt) ) - { - v5 = i; - std::string::substr(v7, a2, (unsigned int)lpuexcpt, i - (_DWORD)lpuexcpt); - // v7 = a2.substr(lpuexcpt, i - lpuexcpt) - Trim((int)v8, (int)v7); - std::vector::emplace_back((void **)a1, v8); - std::string::_M_dispose(v8); - std::string::_M_dispose(v7); - if ( v5 == -1 ) - break; - lpuexcpt = (struct _Unwind_Exception *)(*(_DWORD *)(a3 + 4) + v5); - } - return a1; -} - -//----- (004020A8) -------------------------------------------------------- -void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( - int a1@) -{ - int v2; // esi - int v3; // edx - void *v4; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::vector::~vector((void ***)(a1 + 40), v3); - std::string::_M_dispose((void **)(a1 + 16)); - v4 = (void *)a1; - a1 = v2; - operator delete(v4); - } -} -// 4020C8: variable 'v3' is possibly undefined - -//----- (004020E8) -------------------------------------------------------- -void __thiscall std::vector::operator=(int this, int *a2) -{ - int v2; // edx - int v3; // eax - int v4; // [esp+18h] [ebp-60h] - int v5; // [esp+1Ch] [ebp-5Ch] - char *v6; // [esp+1Ch] [ebp-5Ch] - void **v7; // [esp+20h] [ebp-58h] - signed int v8; // [esp+24h] [ebp-54h] - int i; // [esp+24h] [ebp-54h] - char *Block; // [esp+28h] [ebp-50h] - int Blocka; // [esp+28h] [ebp-50h] - int v12; // [esp+2Ch] [ebp-4Ch] - void **v13; // [esp+30h] [ebp-48h] - int v14; // [esp+30h] [ebp-48h] - int v15; // [esp+34h] [ebp-44h] - void **j; // [esp+34h] [ebp-44h] - int v17; // [esp+34h] [ebp-44h] - - if ( a2 != (int *)this ) - { - v4 = a2[1]; - v15 = *a2; - v12 = v4 - *a2; - v8 = -1431655765 * (v12 >> 3); - v13 = *(void ***)this; - if ( *(_DWORD *)(this + 8) - *(_DWORD *)this >= (unsigned int)v12 ) - { - v7 = *(void ***)(this + 4); - if ( v12 > (unsigned int)((char *)v7 - (char *)v13) ) - { - for ( i = -1431655765 * (((char *)v7 - (char *)v13) >> 3); i > 0; --i ) - { - std::string::_M_assign((int)v13, v15); - v15 += 24; - v13 += 6; - } - v14 = a2[1]; - v17 = *a2 + *(_DWORD *)(this + 4) - *(_DWORD *)this; - v6 = *(char **)(this + 4); - while ( v14 != v17 ) - { - std::string::basic_string(v6, v17); - v17 += 24; - v6 += 24; - } - } - else - { - Blocka = -1431655765 * ((v4 - *a2) >> 3); - v5 = *(_DWORD *)this; - while ( Blocka > 0 ) - { - std::string::_M_assign(v5, v15); - v15 += 24; - v5 += 24; - --Blocka; - } - v3 = 0; - if ( v8 >= 0 ) - v3 = -1431655765 * (v12 >> 3); - for ( j = &v13[6 * v3]; v7 != j; j += 6 ) - std::string::_M_dispose(j); - } - } - else - { - Block = (char *)std::_Vector_base::_M_allocate(v8); - std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( - v15, - v4, - Block); - std::_Destroy_aux::__destroy(v2, *(void ***)this, *(void ***)(this + 4)); - if ( *(_DWORD *)this ) - operator delete(*(void **)this); - *(_DWORD *)this = Block; - *(_DWORD *)(this + 8) = &Block[v12]; - } - *(_DWORD *)(this + 4) = *(_DWORD *)this + v12; - } -} -// 4021A7: variable 'v2' is possibly undefined - -//----- (00402388) -------------------------------------------------------- -#error "4024F8: call analysis failed (funcsize=102)" - -//----- (004024FE) -------------------------------------------------------- -int __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>@( - int a1@, - int a2@) -{ - int i; // eax - int v4; // [esp+1Ch] [ebp-4Ch] - int v6; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-44h] - int v9; // [esp+28h] [ebp-40h] - - v9 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(); - *(_DWORD *)(v9 + 4) = a2; - if ( *(_DWORD *)(a1 + 12) ) - *(_DWORD *)(v9 + 12) = ((int (*)(void))std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>)(); - lpuexcpta = *(struct _Unwind_Exception **)(a1 + 8); - for ( i = v9; ; i = v6 ) - { - v4 = i; - if ( !lpuexcpta ) - break; - v6 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(); - *(_DWORD *)(v4 + 8) = v6; - *(_DWORD *)(v6 + 4) = v4; - if ( *((_DWORD *)lpuexcpta + 3) ) - *(_DWORD *)(v6 + 12) = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( - v6, - v6); - lpuexcpta = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 2); - } - return v9; -} -// 402388: using guessed type int std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(void); - -//----- (00402626) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, this[1], Str, v2); -} - -//----- (00402663) -------------------------------------------------------- -int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*a2)[266], bool *a3, int *a4) -{ - int v4; // eax - int i; // edx - int v7; // esi - int result; // eax - - v4 = 0; - for ( i = *(_DWORD *)a3; ; --i ) - { - v7 = v4; - if ( i <= 0 ) - break; - v4 = *((_DWORD *)this + 266 * v4 + *(unsigned __int8 *)a4); - if ( v4 == -1 ) - break; - a4 = (int *)((char *)a4 + 1); - } - result = -1; - if ( *((_BYTE *)*a2 + v7) ) - { - *(_DWORD *)a3 = i; - return 0; - } - return result; -} - -//----- (004026A6) -------------------------------------------------------- -int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *a2) -{ - int v2; // eax - - if ( !WXML::RPX::acceptID(char const*,int &)::inited ) - { - memset(&WXML::RPX::acceptID(char const*,int &)::nextPos, 255, 0x850u); - v2 = 0; - dword_564F9C = 1; - dword_5653C4 = 1; - do - { - dword_564FA4[v2] = 1; - dword_564F24[v2] = 1; - dword_5653CC[v2] = 1; - dword_56534C[v2++] = 1; - } - while ( v2 != 26 ); - dword_565308 = 1; - dword_56530C = 1; - dword_565310 = 1; - dword_565314 = 1; - dword_565318 = 1; - dword_56531C = 1; - dword_565320 = 1; - dword_565324 = 1; - dword_565328 = 1; - dword_56532C = 1; - WXML::RPX::acceptID(char const*,int &)::inited = 1; - } - return WXML::RPX::accept( - (WXML::RPX *)&WXML::RPX::acceptID(char const*,int &)::nextPos, - (int (*)[266])WXML::RPX::acceptID(char const*,int &)::canAccept, - a2, - (int *)this); -} -// 564F24: using guessed type int dword_564F24[30]; -// 564F9C: using guessed type int dword_564F9C; -// 564FA4: using guessed type int dword_564FA4[217]; -// 565308: using guessed type int dword_565308; -// 56530C: using guessed type int dword_56530C; -// 565310: using guessed type int dword_565310; -// 565314: using guessed type int dword_565314; -// 565318: using guessed type int dword_565318; -// 56531C: using guessed type int dword_56531C; -// 565320: using guessed type int dword_565320; -// 565324: using guessed type int dword_565324; -// 565328: using guessed type int dword_565328; -// 56532C: using guessed type int dword_56532C; -// 56534C: using guessed type int dword_56534C[30]; -// 5653C4: using guessed type int dword_5653C4; -// 5653CC: using guessed type int dword_5653CC[169]; -// 565670: using guessed type char WXML::RPX::acceptID(char const*,int &)::inited; - -//----- (004027A5) -------------------------------------------------------- -int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *a2) -{ - int i; // eax - - if ( !WXML::RPX::acceptStr(char const*,int &)::inited ) - { - memset(&WXML::RPX::acceptStr(char const*,int &)::nextPos, 255, 0x18F0u); - for ( i = 0; i != 256; ++i ) - { - dword_563948[i] = 1; - dword_563D70[i] = 2; - dword_564198[i] = 1; - dword_5645C0[i] = 2; - } - dword_5635A8 = 1; - dword_5635BC = 2; - dword_563AB8 = 3; - dword_563EE0 = 4; - dword_5639D0 = 5; - dword_563E0C = 5; - WXML::RPX::acceptStr(char const*,int &)::inited = 1; - } - return WXML::RPX::accept( - (WXML::RPX *)&WXML::RPX::acceptStr(char const*,int &)::nextPos, - (int (*)[266])WXML::RPX::acceptStr(char const*,int &)::canAccept, - a2, - (int *)this); -} -// 5635A8: using guessed type int dword_5635A8; -// 5635BC: using guessed type int dword_5635BC; -// 563948: using guessed type int dword_563948[34]; -// 5639D0: using guessed type int dword_5639D0; -// 563AB8: using guessed type int dword_563AB8; -// 563D70: using guessed type int dword_563D70[39]; -// 563E0C: using guessed type int dword_563E0C; -// 563EE0: using guessed type int dword_563EE0; -// 564198: using guessed type int dword_564198[266]; -// 5645C0: using guessed type int dword_5645C0[532]; -// 564E10: using guessed type char WXML::RPX::acceptStr(char const*,int &)::inited; - -//----- (0040286A) -------------------------------------------------------- -int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *a2) -{ - int v2; // eax - - if ( !WXML::RPX::acceptNum(char const*,int &)::inited ) - { - memset(&WXML::RPX::acceptNum(char const*,int &)::nextPos, 255, 0x14C8u); - v2 = 0; - dword_5620EC = 1; - dword_5620F4 = 1; - dword_5620F8 = 3; - dword_562520 = 3; - dword_562948 = 4; - do - { - dword_562100[v2] = 2; - dword_562528[v2] = 2; - dword_562950[v2] = 2; - dword_562D78[v2] = 4; - dword_5631A0[v2++] = 4; - } - while ( v2 != 10 ); - WXML::RPX::acceptNum(char const*,int &)::inited = 1; - } - return WXML::RPX::accept( - (WXML::RPX *)&WXML::RPX::acceptNum(char const*,int &)::nextPos, - (int (*)[266])WXML::RPX::acceptNum(char const*,int &)::canAccept, - a2, - (int *)this); -} -// 5620EC: using guessed type int dword_5620EC; -// 5620F4: using guessed type int dword_5620F4; -// 5620F8: using guessed type int dword_5620F8; -// 562100: using guessed type int dword_562100[264]; -// 562520: using guessed type int dword_562520; -// 562528: using guessed type int dword_562528[264]; -// 562948: using guessed type int dword_562948; -// 562950: using guessed type int dword_562950[266]; -// 562D78: using guessed type int dword_562D78[266]; -// 5631A0: using guessed type int dword_5631A0[218]; -// 563508: using guessed type char WXML::RPX::acceptNum(char const*,int &)::inited; - -//----- (0040292E) -------------------------------------------------------- -int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *a2, int *a3) -{ - WXML::RPX *v3; // ebx - int v4; // edi - int v5; // esi - - v3 = this; - v4 = *(_DWORD *)a2; - v5 = *(_DWORD *)a2 - 1; - *(_DWORD *)a2 = v5; - switch ( *((_BYTE *)this + 1) ) - { - case '(': - *a3 = 3; - break; - case ')': - *a3 = 4; - break; - case '+': - *a3 = 1; - break; - case ',': - *a3 = 6; - break; - case '-': - *a3 = 2; - break; - case '.': - *a3 = 5; - break; - default: - *(_DWORD *)a2 = v4; - if ( *(_BYTE *)this == 32 || *(_BYTE *)this == 9 ) - { - while ( *(int *)a2 > 0 && (*(_BYTE *)v3 == 32 || *(_BYTE *)v3 == 9) ) - { - v3 = (WXML::RPX *)((char *)v3 + 1); - --*(_DWORD *)a2; - } - *a3 = 7; - } - else - { - *(_DWORD *)a2 = v5; - *a3 = 0; - } - break; - } - return 0; -} - -//----- (004029C6) -------------------------------------------------------- -std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3) -{ - int i; // ebx - char v4; // dl - std::ostream::sentry *result; // eax - char v6; // dl - int v7; // [esp+1Fh] [ebp-9h] BYREF - - for ( i = 0; i < a2; ++i ) - { - v4 = *(_BYTE *)(a1 + i); - if ( v4 == '\''/*39*/ ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x27"); - continue; - } - if ( v4 <= '\''/*39*/ ) - { - if ( v4 == '"'/*34*/ ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x22"); - continue; - } - if ( v4 > '"'/*34*/ ) - { - if ( v4 == '&'/*38*/ ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x26"); - continue; - } - } - else - { - if ( v4 == '\n'/*10*/ ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\n"); - continue; - } - if ( v4 == '\r'/*13*/ ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\r"); - continue; - } - } - goto LABEL_31; - } - if ( v4 == '>' /*62*/ ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3e"); - continue; - } - if ( v4 <= '>' /*62*/ ) - { - if ( v4 == '<'/*60*/ ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3c"); - continue; - } - if ( v4 == '='/*61*/ ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3d"); - continue; - } -LABEL_31: - LOBYTE(v7) = *(_BYTE *)(a1 + i); - result = std::__ostream_insert>((std::ostream::sentry *)(a3 + 8), (int)&v7, 1); - continue; - } - if ( v4 != '\\'/*92*/ ) - goto LABEL_31; - v6 = *(_BYTE *)(a1 + i + 1); - if ( (unsigned __int8)(v6 - '\\'/*92*/) > 0x18u ) - { - if ( v6 == '\''/*39*/ || v6 == '"'/*34*/ ) - { -LABEL_29: - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\"); - continue; - } - } - else if ( ((0x1440001u >> (v6 - '\\'/*92*/)) & 1) != 0 ) - { - goto LABEL_29; - } - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x5c"); - } - return result; -} - -//----- (00402ADD) -------------------------------------------------------- -std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) -{ - return WXML::Rewrite::ToStringCode(*a1, a1[1], a2); -} - -//----- (00402B00) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3) -{ - char v3; // al - char *v5; // [esp+4h] [ebp-134h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-120h] - char v7; // [esp+5Fh] [ebp-D9h] BYREF - _BYTE v8[8]; // [esp+60h] [ebp-D8h] BYREF - char v9[4]; // [esp+68h] [ebp-D0h] BYREF - char v10[204]; // [esp+6Ch] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); - for ( lpuexcpt = 0; (int)lpuexcpt < a3; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v3 = *((_BYTE *)lpuexcpt + a2); - if ( v3 == 61 ) - { - v5 = "\\x3d"; - goto LABEL_12; - } - if ( v3 > 61 ) - { - if ( v3 == 62 ) - { - v5 = "\\x3e"; - goto LABEL_12; - } - } - else - { - if ( v3 == 38 ) - { - v5 = "\\x26"; - goto LABEL_12; - } - if ( v3 == 60 ) - { - v5 = "\\x3c"; -LABEL_12: - std::operator<<>((std::ostream::sentry *)v9, v5); - continue; - } - } - v7 = *((_BYTE *)lpuexcpt + a2); - std::__ostream_insert>((std::ostream::sentry *)v9, (int)&v7, 1); - } - std::stringbuf::str(a1, (int)v10); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); - return a1; -} -// 402B00: using guessed type char var_D0[4]; -// 402B00: using guessed type char var_CC[204]; - -//----- (00402C7C) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2) -{ - WXML::Rewrite::ToStringCode3[abi:cxx11](a1, *a2, a2[1]); - return a1; -} - -//----- (00402CA2) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3) -{ - char v3; // al - char *v5; // [esp+4h] [ebp-134h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-120h] - char v7; // [esp+5Fh] [ebp-D9h] BYREF - _BYTE v8[8]; // [esp+60h] [ebp-D8h] BYREF - char v9[4]; // [esp+68h] [ebp-D0h] BYREF - char v10[204]; // [esp+6Ch] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); - for ( lpuexcpt = 0; (int)lpuexcpt < a3; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v3 = *((_BYTE *)lpuexcpt + a2); - if ( v3 == 39 ) - { - v5 = "\\x27"; - goto LABEL_22; - } - if ( v3 > 39 ) - { - if ( v3 == 62 ) - { - v5 = "\\x3e"; - goto LABEL_22; - } - if ( v3 > 62 ) - { - if ( v3 == 92 ) - { - v5 = "\\\\"; - goto LABEL_22; - } - } - else - { - if ( v3 == 60 ) - { - v5 = "\\x3c"; - goto LABEL_22; - } - if ( v3 == 61 ) - { - v5 = "\\x3d"; - goto LABEL_22; - } - } - } - else - { - if ( v3 == 34 ) - { - v5 = "\\x22"; - goto LABEL_22; - } - if ( v3 > 34 ) - { - if ( v3 == 38 ) - { - v5 = "\\x26"; - goto LABEL_22; - } - } - else - { - if ( v3 == 10 ) - { - v5 = "\\n"; - goto LABEL_22; - } - if ( v3 == 13 ) - { - v5 = "\\r"; -LABEL_22: - std::operator<<>((std::ostream::sentry *)v9, v5); - continue; - } - } - } - v7 = *((_BYTE *)lpuexcpt + a2); - std::__ostream_insert>((std::ostream::sentry *)v9, (int)&v7, 1); - } - std::stringbuf::str(a1, (int)v10); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); - return a1; -} -// 402CA2: using guessed type char var_D0[4]; -// 402CA2: using guessed type char var_CC[204]; - -//----- (00402E6E) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2) -{ - WXML::Rewrite::ToStringCode2[abi:cxx11](a1, *a2, a2[1]); - return a1; -} - -//----- (00402E94) -------------------------------------------------------- -void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) -{ - void *v2; // ecx - _BYTE *v3; // eax - size_t v4; // eax - _BYTE *v5; // edx - int v6; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-130h] - void *Src; // [esp+58h] [ebp-F0h] BYREF - size_t Size; // [esp+5Ch] [ebp-ECh] - int v10[4]; // [esp+60h] [ebp-E8h] BYREF - char v11[12]; // [esp+70h] [ebp-D8h] BYREF - char v12[200]; // [esp+7Ch] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v11); - WXML::Rewrite::ToStringCode(*a1, a1[1], (int)v11); - std::stringbuf::str((int)&Src, (int)v12); - v2 = Src; - v3 = *(_BYTE **)a2; - if ( Src == v10 ) - { - if ( Size ) - std::string::_S_copy(v3, (unsigned __int8 *)Src, Size); - v4 = Size; - v5 = *(_BYTE **)a2; - *(_DWORD *)(a2 + 4) = Size; - v5[v4] = 0; - } - else - { - if ( v3 == (_BYTE *)(a2 + 8) ) - v3 = 0; - else - lpuexcpt = *(struct _Unwind_Exception **)(a2 + 8); - *(_DWORD *)(a2 + 4) = Size; - v6 = v10[0]; - *(_DWORD *)a2 = v2; - *(_DWORD *)(a2 + 8) = v6; - if ( v3 ) - { - Src = v3; - v10[0] = (int)lpuexcpt; - } - else - { - Src = v10; - } - } - Size = 0; - *(_BYTE *)Src = 0; - std::string::_M_dispose(&Src); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v11); -} -// 402FAC: variable 'lpuexcpt' is possibly undefined -// 402E94: using guessed type char var_CC[200]; - -//----- (0040302D) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2) -{ - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - WXML::Rewrite::ToStringCode(a2, a1); - return a1; -} - -//----- (004030B6) -------------------------------------------------------- -unsigned int __thiscall std::string::basic_string(void **this, char *Str) -{ - size_t v2; // eax - size_t v3; // eax - void **v5; // [esp+1Ch] [ebp-Ch] - - *this = this + 2; - v2 = -1; - if ( Str ) - { - v5 = this; - v3 = strlen(Str); - this = v5; - v2 = (size_t)&Str[v3]; - } - return std::string::_M_construct(this, (unsigned __int8 *)Str, v2); -} - -//----- (004030F1) -------------------------------------------------------- -void __cdecl WXML::Rewrite::GetToken(int a1, int a2) -{ - int v2; // eax - int v3; // ecx - _DWORD *v4; // ecx - int v5; // [esp+10h] [ebp-88h] - WXML::RPX *v6; // [esp+14h] [ebp-84h] - int lpuexcpt; // [esp+18h] [ebp-80h] - int v8; // [esp+54h] [ebp-44h] BYREF - bool v9[4]; // [esp+58h] [ebp-40h] BYREF - void *v10[2]; // [esp+5Ch] [ebp-3Ch] BYREF - char v11; // [esp+64h] [ebp-34h] BYREF - int v12; // [esp+74h] [ebp-24h] BYREF - void *v13[8]; // [esp+78h] [ebp-20h] BYREF - - v6 = *(WXML::RPX **)a1; - v2 = *(_DWORD *)(a1 + 4); - while ( 1 ) - { - v5 = v2; - if ( v2 <= 0 ) - break; - v8 = -1; - *(_DWORD *)v9 = v2; - lpuexcpt = WXML::RPX::acceptID(v6, v9); - if ( lpuexcpt ) - { - lpuexcpt = 1; - if ( WXML::RPX::acceptNum(v6, v9) ) - { - lpuexcpt = 2; - if ( WXML::RPX::acceptStr(v6, v9) ) - { - lpuexcpt = 3; - if ( !WXML::RPX::acceptSymbol(v6, (char *)v9, &v8) ) - lpuexcpt = (v8 == 7) + 3; - } - } - } - v10[0] = &v11; - std::string::_M_construct(v10, (unsigned __int8 *)v6, (size_t)v6 + v5 - *(_DWORD *)v9); - v12 = lpuexcpt; - std::string::basic_string(v13, v10); - v3 = *(_DWORD *)(a2 + 4); - if ( v3 == *(_DWORD *)(a2 + 8) ) - { - std::vector>::_M_realloc_insert>( - (_DWORD *)a2, - *(char **)(a2 + 4), - &v12); - } - else - { - v4 = (_DWORD *)(v3 + 4); - *(v4 - 1) = v12; - std::string::basic_string(v4, v13); - *(_DWORD *)(a2 + 4) += 28; - } - std::string::_M_dispose(v13); - std::string::_M_dispose(v10); - v2 = *(_DWORD *)v9; - v6 = (WXML::RPX *)((char *)v6 + v5 - *(_DWORD *)v9); - } -} - -//----- (004032CE) -------------------------------------------------------- -BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *Str) -{ - int v4; // eax - int v5; // eax - _DWORD *v6; // eax - _DWORD *v7; // eax - char *v8; // eax - unsigned int v9; // edx - unsigned int v10; // edx - _DWORD *v11; // eax - char v12; // dl - size_t v13; // eax - int v15; // [esp+1Ch] [ebp-DCh] - char *v16; // [esp+1Ch] [ebp-DCh] - char v17; // [esp+23h] [ebp-D5h] - int v18; // [esp+24h] [ebp-D4h] - char *v19; // [esp+24h] [ebp-D4h] - unsigned int lpuexcpt; // [esp+28h] [ebp-D0h] - BOOL lpuexcpta; // [esp+28h] [ebp-D0h] - char *v22; // [esp+6Ch] [ebp-8Ch] BYREF - char *v23; // [esp+70h] [ebp-88h] - int v24; // [esp+74h] [ebp-84h] - void *v25[6]; // [esp+78h] [ebp-80h] BYREF - void *v26[6]; // [esp+90h] [ebp-68h] BYREF - void *v27[2]; // [esp+A8h] [ebp-50h] BYREF - unsigned int v28; // [esp+B0h] [ebp-48h] BYREF - void *v29[2]; // [esp+C0h] [ebp-38h] BYREF - unsigned int v30; // [esp+C8h] [ebp-30h] BYREF - void *v31[7]; // [esp+D8h] [ebp-20h] BYREF - - v22 = 0; - v23 = 0; - v24 = 0; - WXML::Rewrite::GetToken(a1, (int)&v22); - std::string::operator=(a2, (char *)&byte_540876); - v17 = 1; - for ( lpuexcpt = 1; lpuexcpt < -1227133513 * ((v23 - v22) >> 2); ++lpuexcpt ) - { - v4 = 28 * (lpuexcpt - 1); - v18 = v4; - if ( *(_DWORD *)&v22[v4] == 1 - && (v5 = v4 + 28, v15 = v5, !*(_DWORD *)&v22[v5]) - && !std::string::compare((int)&v22[v5 + 4], "rpx") ) - { - std::string::basic_string(v29, Str); - v16 = &v22[v15 + 4]; - v19 = &v22[v18 + 4]; - std::string::basic_string(v25, a3); - v6 = std::string::append(v25, (int)v19); - std::string::basic_string(v26, v6); - v7 = std::string::append(v26, (int)v16); - std::string::basic_string(v27, v7); - v8 = (char *)v27[1] + (unsigned int)v29[1]; - v9 = 15; - if ( v27[0] != &v28 ) - v9 = v28; - if ( (unsigned int)v8 <= v9 ) - goto LABEL_15; - v10 = 15; - if ( v29[0] != &v30 ) - v10 = v30; - if ( (unsigned int)v8 > v10 ) -LABEL_15: - v11 = std::string::append(v27, (int)v29); - else - v11 = std::string::insert((unsigned int *)v29, 0, (int)v27); - std::string::basic_string(v31, v11); - std::string::operator+=(v31); - std::string::_M_dispose(v31); - std::string::_M_dispose(v27); - std::string::_M_dispose(v26); - std::string::_M_dispose(v25); - std::string::_M_dispose(v29); - v12 = v17; - if ( ++lpuexcpt == -1227133513 * ((v23 - v22) >> 2) ) - v12 = 0; - v17 = v12; - } - else - { - std::string::operator+=(&v22[v18 + 4]); - } - } - if ( v22 != v23 && v17 ) - std::string::operator+=(v23 - 24); - v13 = a2[1]; - if ( v13 == *(_DWORD *)(a1 + 4) ) - { - lpuexcpta = 0; - if ( v13 ) - lpuexcpta = memcmp((const void *)*a2, *(const void **)a1, v13) != 0; - } - else - { - lpuexcpta = 1; - } - std::vector>::~vector((void **)&v22); - return lpuexcpta; -} -// 402620: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); - -//----- (004036AC) -------------------------------------------------------- -int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5) -{ - char *v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // eax - std::ostream::sentry *v8; // eax - std::ostream::sentry *v9; // eax - std::ostream::sentry *v10; // eax - _DWORD *v11; // eax - char v12; // dl - int v14; // [esp+18h] [ebp-160h] - unsigned __int8 v15; // [esp+1Ch] [ebp-15Ch] - std::ostream::sentry *v16; // [esp+1Ch] [ebp-15Ch] - char v17; // [esp+23h] [ebp-155h] - char *Str1; // [esp+24h] [ebp-154h] - char *Str1a; // [esp+24h] [ebp-154h] - unsigned int lpuexcpt; // [esp+28h] [ebp-150h] - char *v21; // [esp+64h] [ebp-114h] BYREF - _BYTE *v22; // [esp+68h] [ebp-110h] - int v23; // [esp+6Ch] [ebp-10Ch] - char *v24; // [esp+70h] [ebp-108h] BYREF - int v25; // [esp+74h] [ebp-104h] - int v26; // [esp+88h] [ebp-F0h] BYREF - int v27; // [esp+8Ch] [ebp-ECh] - char v28; // [esp+90h] [ebp-E8h] BYREF - void *v29[2]; // [esp+A0h] [ebp-D8h] BYREF - char v30[4]; // [esp+A8h] [ebp-D0h] BYREF - char v31[200]; // [esp+ACh] [ebp-CCh] BYREF - - v21 = 0; - v22 = 0; - v23 = 0; - WXML::Rewrite::GetToken(a1, (int)&v21); - std::string::operator=(a2, (char *)&byte_540876); - v17 = 1; - lpuexcpt = 1; - v15 = 0; - while ( lpuexcpt < -1227133513 * ((v22 - v21) >> 2) ) - { - Str1 = (char *)(28 * (lpuexcpt - 1)); - if ( !std::string::compare((int)&Str1[(_DWORD)v21 + 4], (char *)off_540894) - && !std::string::compare((int)&Str1[(_DWORD)v21 + 32], "(") ) - { - std::string::basic_string((void **)&v24, (char *)&byte_540876); - while ( -1227133513 * ((v22 - v21) >> 2) > ++lpuexcpt ) - { - if ( !std::string::compare((int)&v21[28 * lpuexcpt + 4], ")") ) - { - v14 = v25; - for ( Str1a = v24; &v24[v25] - Str1a > 0 && (*Str1a == 32 || *Str1a == 9); ++Str1a ) - ; - if ( !strncmp(Str1a, "http://", 7u) - || !strncmp(Str1a, "https://", 8u) - || !strncmp(Str1a, "//", 2u) - || !strncmp(Str1a, "data:", 5u) ) - { - v27 = 0; - v26 = (int)&v28; - v28 = 0; - std::string::reserve(&v26, v14 + 4); - if ( (unsigned int)(0x3FFFFFFF - v27) <= 3 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v26, "url(", 4u); - std::string::append(&v26, (int)&v24); - v11 = std::string::append(&v26, ")"); - std::string::basic_string(v29, v11); - std::string::operator+=(v29); - std::string::_M_dispose(v29); - std::string::_M_dispose((void **)&v26); - } - else - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)v29); - v16 = std::operator<<>((std::ostream::sentry *)v30, "url("); - std::string::basic_string((void **)&v26, Str1a); - v6 = std::operator<<(v16, &v26); - v7 = std::operator<<>(v6, "-do-not-use-local-path-"); - v8 = std::operator<<(v7, a3); - std::operator<<>(v8, "&"); - v9 = (std::ostream::sentry *)std::ostream::operator<<(a4); - std::operator<<>(v9, "&"); - v10 = (std::ostream::sentry *)std::ostream::operator<<(a5); - std::operator<<>(v10, ")"); - std::string::_M_dispose((void **)&v26); - std::stringbuf::str((int)&v26, (int)v31); - std::string::operator+=(&v26); - std::string::_M_dispose((void **)&v26); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v29); - v15 = 1; - } - v12 = v17; - if ( ++lpuexcpt == -1227133513 * ((v22 - v21) >> 2) ) - v12 = 0; - v17 = v12; - break; - } - v5 = &v21[28 * lpuexcpt]; - if ( *(_DWORD *)v5 != 4 ) - { - if ( *(_DWORD *)v5 == 2 ) - { - std::string::substr(v29, (_DWORD *)v5 + 1, 1u, *((_DWORD *)v5 + 2) - 2); - std::string::operator+=(v29); - std::string::_M_dispose(v29); - } - else - { - std::string::operator+=(v5 + 4); - } - } - } - std::string::_M_dispose((void **)&v24); - } - else - { - std::string::operator+=(&Str1[(_DWORD)v21 + 4]); - } - ++lpuexcpt; - } - if ( v22 != v21 && v17 ) - std::string::operator+=(v22 - 24); - std::vector>::~vector((void **)&v21); - return v15; -} -// 402620: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 4036AC: using guessed type char var_D0[4]; -// 4036AC: using guessed type char var_CC[200]; - -//----- (00403D38) -------------------------------------------------------- -void __tcf_3(void) -{ - std::string::_M_dispose((void **)&night::nsv_); -} - -//----- (00403D42) -------------------------------------------------------- -void __tcf_4(void) -{ - std::string::_M_dispose((void **)&night::nst_); -} - -//----- (00403D4C) -------------------------------------------------------- -void __tcf_5(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); -} - -//----- (00403D56) -------------------------------------------------------- -void __tcf_6(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); -} - -//----- (00403D60) -------------------------------------------------------- -void __tcf_7(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_VAR); -} - -//----- (00403D6A) -------------------------------------------------------- -void __tcf_8(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_STR); -} - -//----- (00403D74) -------------------------------------------------------- -void __tcf_9(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_NUM); -} - -//----- (00403D7E) -------------------------------------------------------- -void __tcf_10(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); -} - -//----- (00403D88) -------------------------------------------------------- -void __tcf_11(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_KW); -} - -//----- (00403D92) -------------------------------------------------------- -void __tcf_12(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); -} - -//----- (00403D9C) -------------------------------------------------------- -void __tcf_13(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OP); -} - -//----- (00403DA6) -------------------------------------------------------- -void __tcf_14(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); -} - -//----- (00403DB0) -------------------------------------------------------- -void __tcf_15(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); -} - -//----- (00403DBA) -------------------------------------------------------- -void __tcf_16(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); -} - -//----- (00403DC4) -------------------------------------------------------- -void __tcf_17(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); -} - -//----- (00403DCE) -------------------------------------------------------- -void __tcf_18(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_K_V); -} - -//----- (00403DD8) -------------------------------------------------------- -void __tcf_19(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); -} - -//----- (00403DE2) -------------------------------------------------------- -void __tcf_20(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); -} - -//----- (00403DEC) -------------------------------------------------------- -void __tcf_21(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); -} - -//----- (00403DF6) -------------------------------------------------------- -void __tcf_22(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); -} - -//----- (00403E00) -------------------------------------------------------- -void __tcf_23(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); -} - -//----- (00403E0A) -------------------------------------------------------- -void __tcf_24(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); -} - -//----- (00403E14) -------------------------------------------------------- -void __tcf_25(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_IF); -} - -//----- (00403E1E) -------------------------------------------------------- -void __tcf_26(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_FOR); -} - -//----- (00403E28) -------------------------------------------------------- -void __tcf_27(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); -} - -//----- (00403E32) -------------------------------------------------------- -void __tcf_28(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); -} - -//----- (00403E3C) -------------------------------------------------------- -void __tcf_29(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); -} - -//----- (00403E46) -------------------------------------------------------- -void __tcf_30(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG); -} - -//----- (00403E50) -------------------------------------------------------- -void __tcf_31(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); -} - -//----- (00403E5A) -------------------------------------------------------- -void __tcf_32(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); -} - -//----- (00403E64) -------------------------------------------------------- -void __tcf_33(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); -} - -//----- (00403E6E) -------------------------------------------------------- -void __tcf_34(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_CALL); -} - -//----- (00403E78) -------------------------------------------------------- -void __tcf_35(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); -} - -//----- (00403E82) -------------------------------------------------------- -void __tcf_36(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); -} - -//----- (00403E8C) -------------------------------------------------------- -void __tcf_37(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); -} - -//----- (00403E96) -------------------------------------------------------- -void __tcf_38(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); -} - -//----- (00403EA0) -------------------------------------------------------- -void __tcf_39(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); -} - -//----- (00403EAA) -------------------------------------------------------- -void __tcf_40(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); -} - -//----- (00403EB4) -------------------------------------------------------- -void __tcf_41(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); -} - -//----- (00403EBE) -------------------------------------------------------- -int printf(char *a1, ...) -{ - FILE *v1; // eax - va_list va; // [esp+24h] [ebp+Ch] BYREF - - va_start(va, a1); - v1 = ___acrt_iob_func(1u); - return __mingw_vfprintf(v1, a1, (int *)va); -} - -//----- (00403EEE) -------------------------------------------------------- -void __tcf_2(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (00403EF8) -------------------------------------------------------- -int sprintf(FILE *a1, int a2, ...) -{ - va_list va; // [esp+28h] [ebp+10h] BYREF - - va_start(va, a2); - return __mingw_vsprintf(a1, "np_%d", (int *)va); -} - -//----- (00403F1A) -------------------------------------------------------- -int __usercall __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>@( - int a1@, - int a2@) -{ - int v2; // ecx - int v3; // ebx - - v2 = 0; - v3 = *(_DWORD *)(a2 + 4); - if ( v3 == *(_DWORD *)(a1 + 4) ) - { - LOBYTE(v2) = 1; - if ( v3 ) - LOBYTE(v2) = memcmp(*(const void **)a2, *(const void **)a1, *(_DWORD *)(a2 + 4)) == 0; - } - return v2; -} -// 403F4D: variable 'v2' is possibly undefined - -//----- (00403F52) -------------------------------------------------------- -void *__usercall std::_Vector_base::_M_allocate@(unsigned int a1@) -{ - if ( !a1 ) - return 0; - if ( a1 > 0x5555555 ) - std::__throw_bad_alloc(); - return operator new(24 * a1); -} -// 403F52: could not find valid save-restore pair for ebp - -//----- (00403F78) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::less,std::allocator>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00403FAC) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00403FE0) -------------------------------------------------------- -int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)) -{ - return a2(this); -} - -//----- (00403FF0) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 *v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 *v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = *this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = *this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == (unsigned __int8 *)(this + 2) ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 404057: variable 'v9' is possibly undefined - -//----- (00404078) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (004040AC) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (004040EC) -------------------------------------------------------- -int __cdecl WXML::Compiler::GetVersionInfo(int a1, int *a2) -{ - std::ostream::sentry *v2; // eax - std::ostream::sentry *v3; // eax - std::ostream::sentry *v4; // eax - std::ostream::sentry *v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // eax - char v9[8]; // [esp+50h] [ebp-D8h] BYREF - char v10[4]; // [esp+58h] [ebp-D0h] BYREF - char v11[204]; // [esp+5Ch] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v9); - v2 = std::operator<<>((std::ostream::sentry *)v10, "/*"); - v3 = std::operator<<>(v2, "v0.5vv_20200413_syb_scopedata"); - std::operator<<>(v3, "*/"); - v4 = std::operator<<((std::ostream::sentry *)v10, a2); - v5 = std::operator<<>(v4, ".__wcc_version__='"); - v6 = std::operator<<>(v5, "v0.5vv_20200413_syb_scopedata"); - std::operator<<>(v6, "';"); - v7 = std::operator<<((std::ostream::sentry *)v10, a2); - std::operator<<>( - v7, - ".__wcc_version_info__={\"customComponents\":true,\"fixZeroRpx\":true,\"propValueDeepCopy\":false};"); - std::stringbuf::str(a1, (int)v11); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v9); - return a1; -} -// 4040EC: using guessed type char var_D0[4]; -// 4040EC: using guessed type char var_CC[204]; - -//----- (0040424C) -------------------------------------------------------- -void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 44)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00404288) -------------------------------------------------------- -void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 44)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (004042C4) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 44)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00404300) -------------------------------------------------------- -int __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( - volatile signed __int32 **this, - volatile signed __int32 *a2) -{ - volatile signed __int32 *v3; // ecx - int result; // eax - - if ( *this != a2 ) - { - if ( a2 ) - { - if ( _CRT_MT ) - _InterlockedIncrement(a2 + 1); - else - ++*((_DWORD *)a2 + 1); - } - v3 = *this; - if ( *this ) - result = std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v3); - *this = a2; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00404338) -------------------------------------------------------- -// unsigned int __thiscall std::string::basic_string(void **this, char *Str) -// { -// size_t v2; // eax -// size_t v3; // eax -// void **v5; // [esp+1Ch] [ebp-Ch] - -// *this = this + 2; -// v2 = -1; -// if ( Str ) -// { -// v5 = this; -// v3 = strlen(Str); -// this = v5; -// v2 = (size_t)&Str[v3]; -// } -// return std::string::_M_construct(this, (unsigned __int8 *)Str, v2); -// } - -//----- (00404373) -------------------------------------------------------- -void **__cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](void **a1) -{ - std::string::basic_string(a1, aIfThisThisGUnd); - return a1; -} - -//----- (00404390) -------------------------------------------------------- -void **__cdecl WXML::Compiler::GetFuncId(void **a1, _DWORD *a2, int a3) -{ - int insert_unique_pos; // eax - _DWORD *v4; // edx - char *v5; // eax - void *Blocka; // [esp+18h] [ebp-C0h] - void **Block; // [esp+18h] [ebp-C0h] - FILE Str[4]; // [esp+50h] [ebp-88h] BYREF - - if ( !std::map::count(a2, a3) ) - { - Blocka = (void *)a2[5]; - std::string::basic_string((char *)Str, a3); - Str[0]._bufsiz = (int)Blocka; - Block = (void **)operator new(0x2Cu); - std::string::basic_string(Block + 4, Str); - Block[10] = (void *)Str[0]._bufsiz; - insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_get_insert_unique_pos( - a2, - (int)(Block + 4)); - if ( v4 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_insert_node( - a2, - insert_unique_pos, - v4, - Block); - } - else - { - std::string::_M_dispose(Block + 4); - operator delete(Block); - } - std::string::_M_dispose((void **)&Str[0]._ptr); - } - memset(Str, 0, sizeof(Str)); - v5 = std::map::operator[](a2, a3); - sprintf(Str, (int)"np_%d", *(_DWORD *)v5); - std::string::basic_string(a1, (char *)Str); - return a1; -} -// 404474: variable 'v4' is possibly undefined - -//----- (0040455A) -------------------------------------------------------- -void __thiscall std::vector::operator=(void *this, int *a2) -{ - void **v2; // ebx - void **v3; // edx - int v4; // edi - int v5; // edi - void **v6[9]; // [esp+4h] [ebp-24h] BYREF - - v2 = (void **)*((_DWORD *)this + 1); - v3 = (void **)*((_DWORD *)this + 2); - v4 = *a2; - v6[0] = *(void ***)this; - v6[1] = v2; - *(_DWORD *)this = v4; - v5 = a2[1]; - v6[2] = v3; - *((_DWORD *)this + 1) = v5; - *((_DWORD *)this + 2) = a2[2]; - *a2 = 0; - a2[1] = 0; - a2[2] = 0; - std::vector::~vector(v6, (int)v3); -} - -//----- (004045AE) -------------------------------------------------------- -void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( - int a1@) -{ - int v2; // esi - int v3; // edx - void *v4; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::vector::~vector((void ***)(a1 + 40), v3); - std::string::_M_dispose((void **)(a1 + 16)); - v4 = (void *)a1; - a1 = v2; - operator delete(v4); - } -} -// 4045CE: variable 'v3' is possibly undefined - -//----- (004045EE) -------------------------------------------------------- -void __fastcall std::deque::~deque(int a1) -{ - void **v2; // edi - int v3; // edx - void ***v4; // esi - void **v5; // eax - void **v6; // edx - int v7; // edx - void **v8; // esi - unsigned int v9; // edi - void *v10; // eax - void **v11; // [esp+1Ch] [ebp-2Ch] - void **v12; // [esp+20h] [ebp-28h] - void **v13; // [esp+24h] [ebp-24h] - unsigned int v14; // [esp+28h] [ebp-20h] - int v15; // [esp+2Ch] [ebp-1Ch] - - v2 = *(void ***)(a1 + 24); - v13 = *(void ***)(a1 + 16); - v3 = *(_DWORD *)(a1 + 20); - v12 = *(void ***)(a1 + 28); - v15 = v3; - v4 = (void ***)(v3 + 4); - v14 = *(_DWORD *)(a1 + 36); - v5 = *(void ***)(a1 + 8); - while ( v14 > (unsigned int)v4 ) - { - v6 = *v4; - v11 = v5; - ++v4; - std::_Destroy_aux::__destroy((int)v6, v6, v6 + 126); - v5 = v11; - } - if ( v15 == v14 ) - { - std::_Destroy_aux::__destroy(v3, v5, v2); - } - else - { - std::_Destroy_aux::__destroy((int)v13, v5, v13); - std::_Destroy_aux::__destroy(v7, v12, v2); - } - if ( *(_DWORD *)a1 ) - { - v8 = *(void ***)(a1 + 20); - v9 = *(_DWORD *)(a1 + 36) + 4; - while ( v9 > (unsigned int)v8 ) - { - v10 = *v8++; - operator delete(v10); - } - operator delete(*(void **)a1); - } -} -// 40465C: variable 'v7' is possibly undefined -// 404665: variable 'v3' is possibly undefined - -//----- (0040469D) -------------------------------------------------------- -int __cdecl WXML::Compiler::DealWxsTag( - int a1, - int **a2, - _DWORD *a3, - int a4, int a5, - _DWORD *a6, - int *a7) -{ - bool v7; // zf - int *v8; // eax - int *v9; // edx - void **v10; // ecx - _DWORD *v11; // eax - unsigned __int8 *v12; // ecx - int i; // eax - unsigned __int8 v14; // cl - char v15; // cl - char *v16; // eax - int v17; // eax - std::ostream::sentry *v18; // eax - std::ostream::sentry *v19; // eax - std::ostream::sentry *v20; // eax - std::ostream::sentry *v21; // eax - char *v22; // ecx - char *v23; // eax - int v24; // eax - _BYTE *v25; // eax - char v26; // si - bool v27; // dl - std::ostream::sentry *v28; // eax - std::ostream::sentry *v29; // eax - std::ostream::sentry *v30; // eax - std::ostream::sentry *v31; // eax - std::ostream::sentry *v32; // eax - std::ostream::sentry *v33; // eax - std::ostream::sentry *v34; // eax - std::ostream::sentry *v35; // eax - unsigned __int8 *v37; // [esp+0h] [ebp-3D8h] - _DWORD *v38; // [esp+10h] [ebp-3C8h] - BOOL v39; // [esp+10h] [ebp-3C8h] - unsigned int v40; // [esp+14h] [ebp-3C4h] - char v41; // [esp+14h] [ebp-3C4h] - _DWORD *v42; // [esp+14h] [ebp-3C4h] - BOOL v43; // [esp+14h] [ebp-3C4h] - char *lpuexcptc; // [esp+18h] [ebp-3C0h] - int lpuexcpt; // [esp+18h] [ebp-3C0h] - int lpuexcpta; // [esp+18h] [ebp-3C0h] - int lpuexcptb; // [esp+18h] [ebp-3C0h] - int v48; // [esp+5Ch] [ebp-37Ch] BYREF - volatile signed __int32 *v49; // [esp+60h] [ebp-378h] BYREF - void *v50[3]; // [esp+64h] [ebp-374h] BYREF - void *v51[6]; // [esp+70h] [ebp-368h] BYREF - void *v52[6]; // [esp+88h] [ebp-350h] BYREF - void *v53[2]; // [esp+A0h] [ebp-338h] BYREF - char v54; // [esp+A8h] [ebp-330h] BYREF - _DWORD v55[6]; // [esp+B8h] [ebp-320h] BYREF - WXML::DOMLib::Parser *v56[6]; // [esp+D0h] [ebp-308h] BYREF - int v57[6]; // [esp+E8h] [ebp-2F0h] BYREF - int v58[6]; // [esp+100h] [ebp-2D8h] BYREF - void *v59[6]; // [esp+118h] [ebp-2C0h] BYREF - void *v60[6]; // [esp+130h] [ebp-2A8h] BYREF - char v61[24]; // [esp+148h] [ebp-290h] BYREF - char v62[24]; // [esp+160h] [ebp-278h] BYREF - int v63[6]; // [esp+178h] [ebp-260h] BYREF - void *v64[2]; // [esp+190h] [ebp-248h] BYREF - char v65[4]; // [esp+198h] [ebp-240h] BYREF - char v66[196]; // [esp+19Ch] [ebp-23Ch] BYREF - void *v67[94]; // [esp+260h] [ebp-178h] BYREF - - // DealWxsTag - 0 - lpuexcptc = std::string::find(*a2, '>'/*62*/, (unsigned int)a2[4]); - // a2.find('>') - v40 = (unsigned int)(lpuexcptc + 1); - std::string::basic_string(v51, ""); - v53[0] = &v54; - v54 = 0; - v53[1] = 0; - v7 = *(_BYTE *)std::string::at(*a2, (unsigned int)(lpuexcptc - 1)) == '/'/*47*/; - v8 = a2[4]; - v9 = *a2; - if ( v7 ) - { - // int * v8 - // v8 -> a2.offset_16 - std::string::substr(v55, v9, (unsigned int)(v8 + 1), v40 - (_DWORD)v8 - 6); - std::string::operator=((unsigned __int8 **)v53, (int)v55); - v10 = (void **)v55; - } - else - { - std::string::substr(v56, v9, (unsigned int)(v8 + 1), v40 - (_DWORD)v8 - 5); - std::string::operator=((unsigned __int8 **)v53, (int)v56); - v10 = (void **)v56; - } - std::string::_M_dispose(v10); - std::string::basic_string((char *)v67, (int)v51); // "" - std::string::basic_string(v56, v11); - v37 = v12; - std::string::_M_dispose(v67); - // DealWxsTag - 5 - // a2[2] = a2.offset_8 - for ( lpuexcpt = 1; (int)a2[2] > lpuexcpt; ++lpuexcpt ) - { - std::operator+((int)v57, "\n", (int)v56); - v37 = std::string::operator=((unsigned __int8 **)v56, (int)v57); - std::string::_M_dispose((void **)v57); - } - // a2[3] = a2.offset_12 - for ( lpuexcpta = 1; (int)a2[3] > lpuexcpta; ++lpuexcpta ) - { - std::operator+((int)v58, " ", (int)v56); - v37 = std::string::operator=((unsigned __int8 **)v56, (int)v58); - std::string::_M_dispose((void **)v58); - } - WXML::DOMLib::Parser::Parser((WXML::DOMLib::Parser *)v37); - memset(v50, 0, sizeof(v50)); - lpuexcptb = WXML::DOMLib::Parser::Parse((int)v67, (WXML::DOMLib::Parser *)lpuexcpta, (char *)v56[0], (int)a7, a1, v50); - - // DealWxsTag - 10 - if ( !lpuexcptb ) - { - WXML::DOMLib::Parser::GetParsed(&v48, (WXML::DOMLib::Parser *)v67); - // a2[2] = a2.offset_8 - *a6 = a2[2]; - // a2[5] = a2.offset_20 size - // a2[4] = a2.offset_16 pos - if ( (int)((int)a2[5] + (_DWORD)a2[4] - v40) <= 0 ) - std::string::basic_string(v59, (char *)&byte_547B7C); - else - std::string::substr(v59, *a2, v40, (unsigned int)a2[5] + (_DWORD)a2[4] - v40); - std::string::operator=((unsigned __int8 **)a5, (int)v59); - std::string::_M_dispose(v59); - v41 = 1; - // a5 -> int - // a5 + 4 => offset_4 - for ( i = 0; i != *(_DWORD *)(a5 + 4); ++i ) - { - v14 = *(_BYTE *)(*(_DWORD *)a5 + i) - 9; - if ( v14 > 0x17u ) - { - v41 = 0; - } - else - { - v7 = ((0x800013u >> v14) & 1) == 0; - v15 = v41; - if ( v7 ) - v15 = 0; - v41 = v15; - } - } - // for end - - // v48 int - // v48 -> p - // v48 + 72 => v48.offset_72 - v38 = (_DWORD *)(**(_DWORD **)(v48 + 72) + 48); - std::string::basic_string(v60, (char *)off_547B7D); // src - v39 = std::map::count(v38, (int)v60); - std::string::_M_dispose(v60); - if ( !v39 - || (std::string::basic_string(v64, (char *)off_547B7D), // src - v16 = std::map::operator[]((_DWORD *)(**(_DWORD **)(v48 + 72) + 48), v64), - v17 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v16), - std::string::_M_assign(a4, v17), - std::string::_M_dispose(v64), - v41) ) - { - v42 = (_DWORD *)(**(_DWORD **)(v48 + 72) + 48); - std::string::basic_string(v64, "module"); - v43 = std::map::count(v42, (int)v64); - std::string::_M_dispose(v64); - if ( v43 ) - { - std::string::basic_string(v64, "module"); - v23 = std::map::operator[]((_DWORD *)(**(_DWORD **)(v48 + 72) + 48), v64); - v24 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v23); - std::string::_M_assign((int)a3, v24); - std::string::_M_dispose(v64); - v25 = (_BYTE *)*a3; - v26 = (unsigned __int8)(*(_BYTE *)*a3 - '0'/*48*/) > 9u; - while ( (_BYTE *)(*a3 + a3[1]) != v25 ) - { - v27 = (unsigned __int8)(*v25 - 'a'/*97*/) <= 0x19u || (unsigned __int8)(*v25 - '0'/*48*/) <= 9u; - if ( !v27 ) - v27 = *v25 == '_'/*95*/ || (unsigned __int8)(*v25 - 'A'/*65*/) <= 0x19u; - v26 &= v27; - ++v25; - } - if ( v26 ) - goto LABEL_35; // 销毁数据,返回 - std::basic_stringstream,std::allocator>::basic_stringstream((int)v64); - std::operator+((char *)v63, a1, ":"); - std::operator<<((std::ostream::sentry *)v65, v63); - v28 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); - std::operator<<>(v28, ":"); - v29 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); - v30 = std::operator<<>(v29, ": "); - v31 = std::operator<<(v30, a7); - std::operator<<>(v31, "invalid module name, [0-9a-zA-Z_] allowed only"); - std::string::_M_dispose((void **)v63); - std::stringbuf::str((int)v62, (int)v66); - std::string::operator=((unsigned __int8 **)a7, (int)v62); - v22 = v62; - } - else - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)v64); - std::operator+((char *)v63, a1, ":"); - std::operator<<((std::ostream::sentry *)v65, v63); - v32 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); - std::operator<<>(v32, ":"); - v33 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); - v34 = std::operator<<>(v33, ": "); - v35 = std::operator<<(v34, a7); - std::operator<<>(v35, "module expected in wxs tag"); - std::string::_M_dispose((void **)v63); - std::stringbuf::str((int)v63, (int)v66); - std::string::operator=((unsigned __int8 **)a7, (int)v63); - v22 = (char *)v63; - } - } - else - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)v64); - std::operator+((char *)v63, a1, ":"); - std::operator<<((std::ostream::sentry *)v65, v63); - v18 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); - std::operator<<>(v18, ":"); - v19 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); - v20 = std::operator<<>(v19, ": "); - v21 = std::operator<<(v20, a7); - std::operator<<>(v21, "wxs tag with src don't need any content"); - std::string::_M_dispose((void **)v63); - std::stringbuf::str((int)v61, (int)v66); - std::string::operator=((unsigned __int8 **)a7, (int)v61); - v22 = v61; - } - std::string::_M_dispose((void **)v22); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v64); - lpuexcptb = 1; -LABEL_35: - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v49); - } - std::vector::~vector(v50); - WXML::DOMLib::Parser::~Parser((int)v67); - std::string::_M_dispose((void **)v56); - std::string::_M_dispose(v53); - std::string::_M_dispose(v52); - std::string::_M_dispose(v51); - return lpuexcptb; -} -// 40488A: variable 'v12' is possibly undefined -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 40469D: using guessed type _DWORD var_320[6]; -// 40469D: using guessed type char var_240[4]; - -//----- (004050F6) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl WXML::Compiler::RenderDefine( - unsigned int **a1, - WXML::NameAllocator *a2, - _DWORD *a3, - int a4, - int a5, - int a6, - unsigned __int8 a7, - int a8, - char a9, - int *a10, - int *a11, - int *a12, - int a13, - int *a14, - int *a15, - int *a16, - int a17, - int a18, - int a19, - int *a20) -{ - char *v20; // eax - int v21; // eax - char *v22; // eax - unsigned int v23; // edx - int v24; // eax - unsigned int *v26; // [esp+5Ch] [ebp-BCh] - unsigned int *v27; // [esp+5Ch] [ebp-BCh] - unsigned int i; // [esp+64h] [ebp-B4h] - unsigned int *lpuexcpta; // [esp+68h] [ebp-B0h] - struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-B0h] - void *v31[6]; // [esp+ACh] [ebp-6Ch] BYREF - void *v32[6]; // [esp+C4h] [ebp-54h] BYREF - void *v33[15]; // [esp+DCh] [ebp-3Ch] BYREF - - if ( std::operator==((int)*a1, "template") ) - { - lpuexcpta = *a1; - std::string::basic_string(v33, "name"); - v26 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - lpuexcpta + 12, - (int)v33); - std::string::_M_dispose(v33); - if ( v26 != lpuexcpta + 13 ) - std::string::_M_replace(*a1, 0, (*a1)[1], "wx-define", 9u); - } - lpuexcpt = 0; - if ( std::operator==((int)*a1, "wx-define") ) - { - WXML::NameAllocator::NameAllocator(v33, a17, a18); - std::string::basic_string(v32, "name"); - v20 = std::map::operator[](*a1 + 12, v32); - v21 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v20); - std::string::basic_string((char *)v31, v21); - std::string::_M_dispose(v32); - v22 = std::map::operator[](a3, (int)v31); - std::string::_M_assign((int)v22, (int)a2); - v27 = *a1; - std::string::basic_string(v32, "r"); - lpuexcpt = (struct _Unwind_Exception *)WXML::DOMLib::WXMLDom::RenderMeAsFunction( - v27, - (int *)a2, - a14, - a4, - (int *)v31, - a5, - (int *)v33, - a10, - a11, - a12, - (int *)v32, // "r" - a15, - a9, - a16, - 1, - a7, - a8, - a20); - std::string::_M_dispose(v32); - std::string::_M_dispose(v31); - WXML::NameAllocator::~NameAllocator((int)v33); - } - for ( i = 0; ; ++i ) - { - // 18 * 4 = 72 - v23 = (*a1)[18]; - if ( (int)((*a1)[19] - v23) >> 3 <= i || lpuexcpt ) - break; - v24 = WXML::Compiler::RenderDefine( - v23 + 8 * i, - a2, - (int)a3, - a4, - a5, - a6, - a7, - a8, - a9, - (int)a10, - (int)a11, - (int)a12, - a13, - (int)a14, - (int)a15, - (int)a16, - a17, - a18, - a19, - (int)a20); - lpuexcpt = (struct _Unwind_Exception *)v24; - } - return lpuexcpt; -} - -//----- (00405522) -------------------------------------------------------- -struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@( - WXML::DOMLib::Parser *a1@, - int *a2, //文件名 - char **a3, // 源码 - char a4, // '\n' - int a5, // gwxMark - int *a6, - _DWORD *a7, - int *a8, - _DWORD *a9, - _DWORD *a10, - _DWORD *a11, - int a12, - char a13) -{ - char *v13; // eax - std::ostream::sentry *v14; // eax - std::ostream::sentry *v15; // eax - std::ostream::sentry *v16; // eax - std::ostream::sentry *v17; // eax - std::ostream::sentry *v18; // eax - std::ostream::sentry *v19; // eax - std::ostream::sentry *v20; // eax - std::ostream::sentry *v21; // eax - std::ostream::sentry *v22; // eax - std::ostream::sentry *v23; // eax - std::ostream::sentry *v24; // eax - std::ostream::sentry *v25; // eax - std::ostream::sentry *v26; // eax - std::ostream::sentry *v27; // eax - std::ostream::sentry *v28; // eax - std::ostream::sentry *v29; // eax - std::ostream::sentry *v30; // eax - std::ostream::sentry *v31; // eax - void **v32; // ecx - _DWORD *v33; // eax - _DWORD *v34; // eax - _DWORD *v35; // eax - _DWORD *v36; // eax - std::ostream::sentry *v37; // eax - std::ostream::sentry *v38; // eax - std::ostream::sentry *v39; // eax - char *v40; // eax - std::ostream::sentry *v41; // eax - std::ostream::sentry *v42; // eax - std::ostream::sentry *v43; // eax - std::ostream::sentry *v44; // eax - std::ostream::sentry *v45; // eax - std::ostream::sentry *v46; // eax - char *v47; // eax - WXML::DOMLib::Parser *v49; // [esp+0h] [ebp-478h] - unsigned int i; // [esp+2Ch] [ebp-44Ch] - std::ostream::sentry *v51; // [esp+30h] [ebp-448h] - bool v52; // [esp+30h] [ebp-448h] - std::ostream::sentry *v53; // [esp+30h] [ebp-448h] - std::ostream::sentry *v54; // [esp+30h] [ebp-448h] - int v55; // [esp+34h] [ebp-444h] - std::ostream::sentry *v56; // [esp+34h] [ebp-444h] - std::ostream::sentry *v57; // [esp+34h] [ebp-444h] - std::ostream::sentry *v58; // [esp+34h] [ebp-444h] - std::ostream::sentry *v59; // [esp+34h] [ebp-444h] - std::ostream::sentry *v60; // [esp+34h] [ebp-444h] - std::ostream::sentry *v61; // [esp+34h] [ebp-444h] - std::ostream::sentry *v62; // [esp+34h] [ebp-444h] - bool lpuexcpta; // [esp+38h] [ebp-440h] - struct _Unwind_Exception *lpuexcpt; // [esp+38h] [ebp-440h] - int v65; // [esp+70h] [ebp-408h] BYREF - int **v66; // [esp+74h] [ebp-404h] BYREF - int **v67; // [esp+78h] [ebp-400h] - int v68; // [esp+7Ch] [ebp-3FCh] - char *v69; // [esp+80h] [ebp-3F8h] BYREF - int v70; // [esp+84h] [ebp-3F4h] - char v71; // [esp+88h] [ebp-3F0h] BYREF - int v72[2]; // [esp+98h] [ebp-3E0h] BYREF - char v73; // [esp+A0h] [ebp-3D8h] BYREF - void *v74[2]; // [esp+B0h] [ebp-3C8h] BYREF - char v75; // [esp+B8h] [ebp-3C0h] BYREF - int v76; // [esp+C8h] [ebp-3B0h] BYREF - int v77; // [esp+CCh] [ebp-3ACh] - char v78; // [esp+D0h] [ebp-3A8h] BYREF - void *v79[2]; // [esp+E0h] [ebp-398h] BYREF - char v80; // [esp+E8h] [ebp-390h] BYREF - int v81[2]; // [esp+F8h] [ebp-380h] BYREF - char v82; // [esp+100h] [ebp-378h] BYREF - void *v83[6]; // [esp+110h] [ebp-368h] BYREF - int v84[2]; // [esp+128h] [ebp-350h] BYREF - char v85; // [esp+130h] [ebp-348h] BYREF - int v86[6]; // [esp+140h] [ebp-338h] BYREF - int v87[6]; // [esp+158h] [ebp-320h] BYREF - int v88[2]; // [esp+170h] [ebp-308h] BYREF - char v89[4]; // [esp+178h] [ebp-300h] BYREF - char v90[196]; // [esp+17Ch] [ebp-2FCh] BYREF - int v91; // [esp+240h] [ebp-238h] BYREF - volatile signed __int32 *v92; // [esp+244h] [ebp-234h] BYREF - char v93[4]; // [esp+248h] [ebp-230h] BYREF - char v94[196]; // [esp+24Ch] [ebp-22Ch] BYREF - int v95[2]; // [esp+310h] [ebp-168h] BYREF - char v96[4]; // [esp+318h] [ebp-160h] BYREF - char v97[348]; // [esp+31Ch] [ebp-15Ch] BYREF - - // ParseSource - 0 - std::string::substr(v95, a2, a2[1] - 5, 0xFFFFFFFF); - lpuexcpta = std::operator==((int)v95, ".wxml"); - std::string::_M_dispose((void **)v95); - if ( lpuexcpta ) - { - // 文件名 .wxml 结尾 - v66 = 0; - v67 = 0; - v68 = 0; - WXML::DOMLib::Parser::Parser(v49); - lpuexcpt = (struct _Unwind_Exception *)WXML::DOMLib::Parser::Parse((int)v95, a1, *a3, (int)a8, (int)a2, &v66); - if ( !lpuexcpt ) - { - // ParseSource - 5 - WXML::DOMLib::Parser::GetParsed(&v91, (WXML::DOMLib::Parser *)v95); - v13 = std::map>::operator[](a9, (int)a2); - *(_DWORD *)v13 = v91; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v13 + 1, v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v92); - v70 = 0; - v69 = &v71; - v71 = 0; - v72[0] = (int)&v73; - v72[1] = 0; - v73 = 0; - std::basic_stringstream,std::allocator>::basic_stringstream((int)v88); - if ( v66 != v67 ) - { - v51 = std::operator<<>((std::ostream::sentry *)v89, "f_['"); - WXML::Rewrite::ToStringCode((int)&v91, a2); - v14 = std::operator<<(v51, &v91); - v15 = std::operator<<>(v14, "']={};"); - std::operator<<>(v15, a4); - std::string::_M_dispose((void **)&v91); - } - // ParseSource - 10 - for ( i = 0; -1227133513 * (((char *)v67 - (char *)v66) >> 4) > i; ++i ) - { - v74[1] = 0; - v79[0] = &v80; - v81[0] = (int)&v82; - v74[0] = &v75; - v76 = (int)&v78; - v75 = 0; - v77 = 0; - v78 = 0; - v79[1] = 0; - v80 = 0; - v81[1] = 0; - v82 = 0; - v55 = WXML::Compiler::DealWxsTag((int)a2, &v66[28 * i], v74, (int)&v76, (int)v79, &v65, a8); - if ( v55 ) - goto LABEL_20; // 销毁数据,返回 - v16 = std::operator<<((std::ostream::sentry *)v89, a6); - v56 = std::operator<<>(v16, "['"); - WXML::Rewrite::ToStringCode((int)v87, a2); - v17 = std::operator<<(v56, v87); - v57 = std::operator<<>(v17, "']['"); - WXML::Rewrite::ToStringCode((int)&v91, (int *)v74); - v18 = std::operator<<(v57, &v91); - std::operator<<>(v18, "'] ="); - std::string::_M_dispose((void **)&v91); - std::string::_M_dispose((void **)v87); - /* - - WXML::DOMLib::Parser *a1@, - int *a2, //文件名 - char **a3, // 源码 - char a4, // '\n' - int a5, // gwxMark - int *a6, - _DWORD *a7, - int *a8, - _DWORD *a9, - _DWORD *a10, - _DWORD *a11, - int a12, - char a13)*/ - if ( v77 ) - { - MMBizWxaAppComm::PathCombine(a2, &v76, (unsigned int *)v81); - if ( *(_BYTE *)v81[0] == '/' /*47*/ ) - { - std::operator+((int)v86, 46, (int)v81); - std::string::operator=((unsigned __int8 **)v81, (int)v86); - std::string::_M_dispose((void **)v86); - } - if ( a7 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a7, - (int)v81) - && (std::operator==(a5, "$gwx") || a13) ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v91); - - v19 = std::operator<<((std::ostream::sentry *)v93, a2); - std::operator<<>(v19, ":"); - - v20 = (std::ostream::sentry *)std::ostream::operator<<(v65); - std::operator<<>(v20, ":"); - - v21 = (std::ostream::sentry *)std::ostream::operator<<(v66[28 * i + 3]); - v22 = std::operator<<>(v21, ":"); - - // 被引用文件 - v23 = std::operator<<(v22, &v76); - v24 = std::operator<<>(v23, " not found from "); - - // 引用文件(a2, a2引用v76) - std::operator<<(v24, a2); - std::stringbuf::str((int)v87, (int)v94); - - // errorMessage - std::string::operator=((unsigned __int8 **)a8, (int)v87); - std::string::_M_dispose((void **)v87); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v91); - v55 = 1; // 返回值,非0 - LABEL_20: - std::string::_M_dispose((void **)v81); - std::string::_M_dispose(v79); - std::string::_M_dispose((void **)&v76); - std::string::_M_dispose(v74); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v88); - std::string::_M_dispose((void **)v72); - std::string::_M_dispose((void **)&v69); - lpuexcpt = (struct _Unwind_Exception *)v55; - goto LABEL_24; // 销毁数据,返回 - } - v58 = std::operator<<>((std::ostream::sentry *)v89, "f_['"); - - // v81 -> ret (合并后的路径) - WXML::Rewrite::ToStringCode((int)&v91, v81); - v25 = std::operator<<(v58, &v91); - - std::operator<<>(v25, "'] || "); - std::string::_M_dispose((void **)&v91); - v59 = std::operator<<>((std::ostream::sentry *)v89, "nv_require(\""); - - std::operator+((int)v87, "p_", (int)v81); - WXML::Rewrite::ToStringCode((int)&v91, v87); - v26 = std::operator<<(v59, &v91); - - v27 = std::operator<<>(v26, "\");"); - std::operator<<>(v27, a4); - std::string::_M_dispose((void **)&v91); - std::string::_M_dispose((void **)v87); - - v28 = std::operator<<((std::ostream::sentry *)v89, a6); - v60 = std::operator<<>(v28, "['"); - - WXML::Rewrite::ToStringCode((int)v87, a2); - v29 = std::operator<<(v60, v87); - - v61 = std::operator<<>(v29, "']['"); - - WXML::Rewrite::ToStringCode((int)&v91, (int *)v74); - v30 = std::operator<<(v61, &v91); - - v31 = std::operator<<>(v30, "']();"); - std::operator<<>(v31, a4); - std::string::_M_dispose((void **)&v91); - v32 = (void **)v87; - } - else - { - std::operator+((int)v86, "m_", (int)a2); - v33 = std::string::append(v86, ":"); - - std::string::basic_string(v87, v33); - v34 = std::string::append(v87, (int)v74); - std::string::basic_string(&v91, v34); - WXML::Compiler::GetFuncId(v83, a11, (int)&v91); - - std::string::_M_dispose((void **)&v91); - std::string::_M_dispose((void **)v87); - std::string::_M_dispose((void **)v86); - - v55 = night::compile_ns((int)a2, (int)v83, (int)v79, v65, (unsigned int *)v72, 0); - if ( v55 ) - { - std::string::_M_assign((int)a8, (int)v72); - std::string::_M_dispose(v83); - goto LABEL_20; // 销毁数据,返回 - } - - v62 = std::operator<<>((std::ostream::sentry *)v89, "nv_require(\""); - - std::operator+((int)v84, "m_", (int)a2); - v35 = std::string::append(v84, ":"); - std::string::basic_string(v86, v35); - v36 = std::string::append(v86, (int)v74); - std::string::basic_string(v87, v36); - WXML::Rewrite::ToStringCode((int)&v91, v87); - v37 = std::operator<<(v62, &v91); - - v38 = std::operator<<>(v37, "\");"); - std::operator<<>(v38, a4); - std::string::_M_dispose((void **)&v91); - std::string::_M_dispose((void **)v87); - std::string::_M_dispose((void **)v86); - std::string::_M_dispose((void **)v84); - v39 = std::operator<<((std::ostream::sentry *)v89, v72); - std::operator<<>(v39, a4); - v32 = v83; - } - std::string::_M_dispose(v32); - std::string::_M_dispose((void **)v81); - std::string::_M_dispose(v79); - std::string::_M_dispose((void **)&v76); - std::string::_M_dispose(v74); - } - // ParseSource - 15 - std::stringbuf::str((int)&v91, (int)v90); - std::string::operator=((unsigned __int8 **)&v69, (int)&v91); - - std::string::_M_dispose((void **)&v91); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v88); - std::string::_M_dispose((void **)v72); - if ( v70 ) - { - v40 = std::map::operator[](a10, (int)a2); - std::string::_M_assign((int)v40, (int)&v69); - } - std::string::_M_dispose((void **)&v69); - } - LABEL_24: - WXML::DOMLib::Parser::~Parser((int)v95); - std::vector::~vector((void **)&v66); - } - // end isWXML - // ParseSource - 20 - else - { - std::string::substr(v95, a2, a2[1] - 4, 0xFFFFFFFF); - v52 = std::operator==((int)v95, ".wxs"); - std::string::_M_dispose((void **)v95); - lpuexcpt = 0; - if ( v52 ) - { - v84[0] = (int)&v85; - v84[1] = 0; - v85 = 0; - std::operator+((int)v95, "p_", (int)a2); - WXML::Compiler::GetFuncId((void **)v86, a11, (int)v95); - std::string::_M_dispose((void **)v95); - lpuexcpt = (struct _Unwind_Exception *)night::compile_ns((int)a2, (int)v86, (int)a3, 1, (unsigned int *)v84, 0); - if ( lpuexcpt ) - { - std::string::_M_assign((int)a8, (int)v84); - } - else - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)v95); - v53 = std::operator<<>((std::ostream::sentry *)v96, "f_['"); - WXML::Rewrite::ToStringCode((int)v87, a2); - v41 = std::operator<<(v53, v87); - v42 = std::operator<<>(v41, "'] = nv_require("); - v54 = std::operator<<>(v42, 34); // 双引号" - - std::operator+((int)v88, "p_", (int)a2); - WXML::Rewrite::ToStringCode((int)&v91, v88); - v43 = std::operator<<(v54, &v91); - - v44 = std::operator<<>(v43, 34); // 双引号" - v45 = std::operator<<>(v44, ");"); - std::operator<<>(v45, a4); - - std::string::_M_dispose((void **)&v91); - std::string::_M_dispose((void **)v88); - std::string::_M_dispose((void **)v87); - v46 = std::operator<<((std::ostream::sentry *)v96, v84); - std::operator<<>(v46, a4); - std::stringbuf::str((int)&v91, (int)v97); - v47 = std::map::operator[](a10, (int)a2); - std::string::operator=((unsigned __int8 **)v47, (int)&v91); - std::string::_M_dispose((void **)&v91); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v95); - } - std::string::_M_dispose((void **)v86); - std::string::_M_dispose((void **)v84); - } - } - return lpuexcpt; -} -// 40561E: variable 'v49' is possibly undefined -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 405522: using guessed type char var_300[4]; -// 405522: using guessed type char var_230[4]; -// 405522: using guessed type char var_22C[196]; -// 405522: using guessed type char var_2FC[196]; -// 405522: using guessed type char var_160[4]; -// 405522: using guessed type char var_15C[348]; - -//----- (00406648) -------------------------------------------------------- -std::ostream::sentry *__usercall WXML::Compiler::Compile@( - int *a1@, - _DWORD *a2, - int *a3, - unsigned __int8 **a4, - _DWORD *a5, - _DWORD *a6, - char a7, - int *a8, - int a9, - char a10, - int *a11, - int *a12, - int *a13, - int *a14, - int *a15, - int *a16, - int a17, - int a18, - int a19, - int *a20) -{ - char *v20; // eax - std::ostream::sentry *v21; // eax - std::ostream::sentry *v22; // eax - std::ostream::sentry *v23; // eax - std::ostream::sentry *v24; // eax - std::ostream::sentry *v25; // eax - bool v26; // al - std::ostream::sentry *v27; // eax - std::ostream::sentry *v28; // eax - std::ostream::sentry *v29; // eax - std::ostream::sentry *v30; // eax - std::ostream::sentry *v31; // eax - std::ostream::sentry *v32; // eax - std::ostream::sentry *v33; // eax - std::ostream::sentry *v34; // eax - std::ostream::sentry *v35; // eax - std::ostream::sentry *v36; // eax - std::ostream::sentry *v37; // eax - std::ostream::sentry *v38; // eax - std::ostream::sentry *v39; // eax - int *v40; // ecx - _DWORD *v41; // eax - _DWORD *v42; // eax - _DWORD *v43; // eax - _DWORD *v44; // eax - std::ostream::sentry *v45; // eax - std::ostream::sentry *v46; // eax - std::ostream::sentry *v47; // eax - char *v48; // eax - std::ostream::sentry *v49; // eax - std::ostream::sentry *v50; // eax - std::ostream::sentry *v51; // eax - std::ostream::sentry *v52; // eax - std::ostream::sentry *v53; // eax - std::ostream::sentry *v54; // eax - char *v55; // eax - std::ostream::sentry *v56; // eax - std::ostream::sentry *v57; // eax - std::ostream::sentry *v58; // eax - std::ostream::sentry *v59; // eax - std::ostream::sentry *v60; // eax - std::ostream::sentry *v61; // eax - _DWORD *v62; // eax - std::ostream::sentry *v63; // eax - std::ostream::sentry *v64; // eax - std::ostream::sentry *v65; // eax - std::ostream::sentry *v66; // eax - std::ostream::sentry *v67; // eax - std::ostream::sentry *v68; // eax - std::ostream::sentry *v69; // eax - std::ostream::sentry *v70; // eax - std::ostream::sentry *v71; // eax - std::ostream::sentry *v72; // eax - std::ostream::sentry *v73; // eax - std::ostream::sentry *v74; // eax - std::ostream::sentry *v75; // eax - std::ostream::sentry *v76; // eax - std::ostream::sentry *v77; // eax - std::ostream::sentry *v78; // eax - std::ostream::sentry *v79; // eax - std::ostream::sentry *v80; // eax - std::ostream::sentry *v81; // eax - std::ostream::sentry *v82; // eax - std::ostream::sentry *v83; // eax - std::ostream::sentry *v84; // eax - std::ostream::sentry *v85; // eax - std::ostream::sentry *v86; // eax - std::ostream::sentry *v87; // eax - std::ostream::sentry *v88; // eax - std::ostream::sentry *v89; // eax - std::ostream::sentry *v90; // eax - std::ostream::sentry *v91; // eax - std::ostream::sentry *v92; // eax - std::ostream::sentry *v93; // eax - std::ostream::sentry *v94; // eax - std::ostream::sentry *v95; // eax - std::ostream::sentry *v96; // eax - std::ostream::sentry *v97; // eax - std::ostream::sentry *v98; // eax - std::ostream::sentry *v99; // eax - std::ostream::sentry *v100; // eax - std::ostream::sentry *v101; // eax - std::ostream::sentry *v102; // eax - std::ostream::sentry *v103; // eax - std::ostream::sentry *v104; // eax - std::ostream::sentry *v105; // eax - std::ostream::sentry *v106; // eax - std::ostream::sentry *v107; // eax - std::ostream::sentry *v108; // eax - std::ostream::sentry *v109; // eax - std::ostream::sentry *v110; // eax - std::ostream::sentry *v111; // eax - std::ostream::sentry *j; // eax - int *v113; // eax - int *v114; // eax - std::ostream::sentry *v115; // eax - std::ostream::sentry *v116; // eax - std::ostream::sentry *v117; // eax - std::ostream::sentry *v118; // eax - std::ostream::sentry *v119; // eax - std::ostream::sentry *v120; // eax - std::ostream::sentry *v121; // eax - std::ostream::sentry *v122; // eax - std::ostream::sentry *v123; // eax - std::ostream::sentry *v124; // eax - std::ostream::sentry *v125; // eax - std::ostream::sentry *v126; // eax - std::ostream::sentry *v127; // eax - std::ostream::sentry *v128; // eax - std::ostream::sentry *v129; // eax - std::ostream::sentry *v130; // eax - std::ostream::sentry *v131; // eax - std::ostream::sentry *v132; // eax - std::ostream::sentry *v133; // eax - std::ostream::sentry *v134; // eax - std::ostream::sentry *v135; // eax - std::ostream::sentry *v136; // eax - std::ostream::sentry *v137; // eax - std::ostream::sentry *v138; // eax - std::ostream::sentry *v139; // eax - std::ostream::sentry *v140; // eax - std::ostream::sentry *v141; // eax - _DWORD *v142; // eax - std::ostream::sentry *v143; // eax - std::ostream::sentry *v144; // eax - std::ostream::sentry *v145; // eax - std::ostream::sentry *v146; // eax - std::ostream::sentry *v147; // eax - std::ostream::sentry *v148; // eax - std::ostream::sentry *v149; // eax - std::ostream::sentry *v150; // eax - std::ostream::sentry *v151; // eax - std::ostream::sentry *m; // eax - std::ostream::sentry *v153; // eax - std::ostream::sentry *v154; // eax - std::ostream::sentry *v155; // eax - std::ostream::sentry *v156; // eax - std::ostream::sentry *v157; // eax - int *n; // eax - std::ostream::sentry *v159; // eax - std::ostream::sentry *ii; // eax - int v161; // ecx - std::ostream::sentry *v162; // eax - int StrID; // eax - std::ostream::sentry *v164; // eax - int *v165; // eax - std::ostream::sentry *v166; // eax - int v167; // eax - std::ostream::sentry *v168; // eax - std::ostream::sentry *v169; // eax - int v170; // eax - int v171; // edx - _DWORD *v172; // eax - int v173; // eax - int v174; // eax - int v175; // eax - int v176; // edx - _DWORD *v177; // eax - int v178; // eax - int v179; // eax - std::ostream::sentry *v180; // eax - std::ostream::sentry *v181; // eax - std::ostream::sentry *v182; // eax - std::ostream::sentry *v183; // eax - std::ostream::sentry *v184; // eax - std::ostream::sentry *v185; // eax - std::ostream::sentry *v186; // eax - std::ostream::sentry *v187; // eax - std::ostream::sentry *v188; // eax - std::ostream::sentry *v189; // eax - std::ostream::sentry *v190; // eax - std::ostream::sentry *v191; // eax - std::ostream::sentry *v192; // eax - std::ostream::sentry *v193; // eax - std::ostream::sentry *v194; // eax - std::ostream::sentry *v195; // eax - std::ostream::sentry *v196; // eax - std::ostream::sentry *v197; // eax - std::ostream::sentry *v198; // eax - std::ostream::sentry *v199; // eax - std::ostream::sentry *v200; // eax - std::ostream::sentry *v201; // eax - std::ostream::sentry *v202; // eax - std::ostream::sentry *v203; // eax - std::ostream::sentry *v204; // eax - std::ostream::sentry *v205; // eax - std::ostream::sentry *v206; // eax - std::ostream::sentry *v207; // eax - std::ostream::sentry *v208; // eax - std::ostream::sentry *v209; // eax - std::ostream::sentry *v210; // eax - std::ostream::sentry *v211; // eax - std::ostream::sentry *v212; // eax - std::ostream::sentry *v213; // eax - std::ostream::sentry *v214; // eax - std::ostream::sentry *v215; // eax - std::ostream::sentry *v216; // eax - std::ostream::sentry *v217; // eax - std::ostream::sentry *v218; // eax - std::ostream::sentry *v219; // eax - std::ostream::sentry *v220; // eax - std::ostream::sentry *v221; // eax - std::ostream::sentry *v222; // eax - struct _Unwind_Exception *kk; // eax - std::ostream::sentry *v224; // eax - std::ostream::sentry *v225; // eax - std::ostream::sentry *v226; // eax - WXML::DOMLib::Parser *v228; // [esp+0h] [ebp-618h] - _DWORD *v229; // [esp+58h] [ebp-5C0h] - std::ostream::sentry *v230; // [esp+58h] [ebp-5C0h] - int v231; // [esp+5Ch] [ebp-5BCh] - _DWORD *v232; // [esp+60h] [ebp-5B8h] - std::ostream::sentry *v233; // [esp+60h] [ebp-5B8h] - bool v234; // [esp+64h] [ebp-5B4h] - int v235; // [esp+68h] [ebp-5B0h] - _DWORD *v236; // [esp+68h] [ebp-5B0h] - int v237; // [esp+68h] [ebp-5B0h] - int v238; // [esp+70h] [ebp-5A8h] - _DWORD *v239; // [esp+70h] [ebp-5A8h] - std::ostream::sentry *v240; // [esp+70h] [ebp-5A8h] - int v241; // [esp+70h] [ebp-5A8h] - int v242; // [esp+70h] [ebp-5A8h] - _DWORD *v243; // [esp+70h] [ebp-5A8h] - int v244; // [esp+70h] [ebp-5A8h] - std::ostream::sentry *v245; // [esp+74h] [ebp-5A4h] - int v246; // [esp+74h] [ebp-5A4h] - std::ostream::sentry *v247; // [esp+74h] [ebp-5A4h] - std::ostream::sentry *v248; // [esp+74h] [ebp-5A4h] - std::ostream::sentry *v249; // [esp+74h] [ebp-5A4h] - std::ostream::sentry *v250; // [esp+74h] [ebp-5A4h] - std::ostream::sentry *v251; // [esp+74h] [ebp-5A4h] - std::ostream::sentry *v252; // [esp+74h] [ebp-5A4h] - std::ostream::sentry *v253; // [esp+74h] [ebp-5A4h] - WXML::NameAllocator *v254; // [esp+7Ch] [ebp-59Ch] - int *v255; // [esp+7Ch] [ebp-59Ch] - WXML::NameAllocator *v256; // [esp+7Ch] [ebp-59Ch] - WXML::NameAllocator *jj; // [esp+7Ch] [ebp-59Ch] - std::ostream::sentry *i; // [esp+80h] [ebp-598h] - std::ostream::sentry *v259; // [esp+80h] [ebp-598h] - std::ostream::sentry *v260; // [esp+80h] [ebp-598h] - std::ostream::sentry *v261; // [esp+80h] [ebp-598h] - std::ostream::sentry *v262; // [esp+80h] [ebp-598h] - std::ostream::sentry *v263; // [esp+80h] [ebp-598h] - std::ostream::sentry *v264; // [esp+80h] [ebp-598h] - bool v265; // [esp+84h] [ebp-594h] - std::ostream::sentry *v266; // [esp+84h] [ebp-594h] - bool v267; // [esp+84h] [ebp-594h] - std::ostream::sentry *v268; // [esp+84h] [ebp-594h] - std::ostream::sentry *v269; // [esp+84h] [ebp-594h] - std::ostream::sentry *v270; // [esp+84h] [ebp-594h] - std::ostream::sentry *k; // [esp+84h] [ebp-594h] - std::ostream::sentry *v272; // [esp+84h] [ebp-594h] - std::ostream::sentry *v273; // [esp+84h] [ebp-594h] - std::ostream::sentry *v274; // [esp+84h] [ebp-594h] - std::ostream::sentry *v275; // [esp+84h] [ebp-594h] - int *v276; // [esp+84h] [ebp-594h] - struct _Unwind_Exception *lpuexcptb; // [esp+88h] [ebp-590h] - int *lpuexcpt; // [esp+88h] [ebp-590h] - struct _Unwind_Exception *lpuexcpta; // [esp+88h] [ebp-590h] - int v280; // [esp+C8h] [ebp-550h] BYREF - std::ostream::sentry *v281; // [esp+CCh] [ebp-54Ch] - volatile signed __int32 *v282; // [esp+D0h] [ebp-548h] BYREF - int **v283; // [esp+D4h] [ebp-544h] BYREF - int **v284; // [esp+D8h] [ebp-540h] - int v285; // [esp+DCh] [ebp-53Ch] - int v286; // [esp+E0h] [ebp-538h] BYREF - _DWORD v287[2]; // [esp+E4h] [ebp-534h] BYREF - std::ostream::sentry *v288; // [esp+ECh] [ebp-52Ch] - _DWORD v289[5]; // [esp+FCh] [ebp-51Ch] BYREF - int v290; // [esp+110h] [ebp-508h] BYREF - _DWORD v291[5]; // [esp+114h] [ebp-504h] BYREF - int v292; // [esp+128h] [ebp-4F0h] BYREF - _DWORD v293[5]; // [esp+12Ch] [ebp-4ECh] BYREF - char *v294; // [esp+140h] [ebp-4D8h] BYREF - int v295; // [esp+144h] [ebp-4D4h] - char v296; // [esp+148h] [ebp-4D0h] BYREF - int v297[2]; // [esp+158h] [ebp-4C0h] BYREF - char v298; // [esp+160h] [ebp-4B8h] BYREF - void *v299[2]; // [esp+170h] [ebp-4A8h] BYREF - char v300; // [esp+178h] [ebp-4A0h] BYREF - int v301; // [esp+188h] [ebp-490h] BYREF - int v302; // [esp+18Ch] [ebp-48Ch] - char v303; // [esp+190h] [ebp-488h] BYREF - void *v304[2]; // [esp+1A0h] [ebp-478h] BYREF - char v305; // [esp+1A8h] [ebp-470h] BYREF - int v306; // [esp+1B8h] [ebp-460h] BYREF - int v307; // [esp+1BCh] [ebp-45Ch] - char v308; // [esp+1C0h] [ebp-458h] BYREF - int v309; // [esp+1D0h] [ebp-448h] BYREF - int v310[5]; // [esp+1D4h] [ebp-444h] BYREF - int v311; // [esp+1E8h] [ebp-430h] BYREF - int v312; // [esp+1ECh] [ebp-42Ch] BYREF - char v313; // [esp+1F0h] [ebp-428h] BYREF - int v314[2]; // [esp+200h] [ebp-418h] BYREF - char v315; // [esp+208h] [ebp-410h] BYREF - int v316[6]; // [esp+218h] [ebp-400h] BYREF - char v317[8]; // [esp+230h] [ebp-3E8h] BYREF - char v318[4]; // [esp+238h] [ebp-3E0h] BYREF - char v319[196]; // [esp+23Ch] [ebp-3DCh] BYREF - int v320[2]; // [esp+300h] [ebp-318h] BYREF - char v321[4]; // [esp+308h] [ebp-310h] BYREF - char v322[196]; // [esp+30Ch] [ebp-30Ch] BYREF - int v323; // [esp+3D0h] [ebp-248h] BYREF - volatile signed __int32 *v324; // [esp+3D4h] [ebp-244h] BYREF - char v325[4]; // [esp+3D8h] [ebp-240h] BYREF - char v326[196]; // [esp+3DCh] [ebp-23Ch] BYREF - int v327[2]; // [esp+4A0h] [ebp-178h] BYREF - char v328[4]; // [esp+4A8h] [ebp-170h] BYREF - char v329[364]; // [esp+4ACh] [ebp-16Ch] BYREF - - // Compile - 0 - std::basic_stringstream,std::allocator>::basic_stringstream((int)v317); - std::_Rb_tree_header::_Rb_tree_header(v287); - std::_Rb_tree_header::_Rb_tree_header(v289); - lpuexcptb = (struct _Unwind_Exception *)operator new(0x24u); - std::_Rb_tree_header::_Rb_tree_header((_DWORD *)lpuexcptb + 1); - *((_DWORD *)lpuexcptb + 6) = 0; - *((_DWORD *)lpuexcptb + 7) = 0; - *((_DWORD *)lpuexcptb + 8) = 0; - zcc::shared_ptr::shared_ptr(lpuexcptb); - std::_Rb_tree_header::_Rb_tree_header(v291); - std::_Rb_tree_header::_Rb_tree_header(v293); - for ( i = (std::ostream::sentry *)a2[3]; - i != (std::ostream::sentry *)(a2 + 1); - i = (std::ostream::sentry *)std::_Rb_tree_increment((int)i) ) - { - lpuexcpt = (int *)((char *)i + 16); - std::string::substr(&v306, (_DWORD *)i + 4, *((_DWORD *)i + 5) - 5, 0xFFFFFFFF); - v265 = std::operator==((int)&v306, ".wxml"); - std::string::_M_dispose((void **)&v306); - if ( v265 ) - { - v283 = 0; - v284 = 0; - v285 = 0; - WXML::DOMLib::Parser::Parser(v228); - v266 = (std::ostream::sentry *)WXML::DOMLib::Parser::Parse( - (int)v327, - (WXML::DOMLib::Parser *)a1, - *((char **)i + 10), - (int)a3, // errorMessage - (int)lpuexcpt, - &v283); - if ( v266 ) - { -LABEL_25: - WXML::DOMLib::Parser::~Parser((int)v327); - std::vector::~vector((void **)&v283); - goto LABEL_118; // 销毁数据,返回v266 - } - WXML::DOMLib::Parser::GetParsed(&v323, (WXML::DOMLib::Parser *)v327); - v20 = std::map>::operator[](&v286, (int)lpuexcpt); - *(_DWORD *)v20 = v323; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v20 + 1, v324); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v324); - v295 = 0; - v294 = &v296; - v296 = 0; - v297[0] = (int)&v298; - v297[1] = 0; - v298 = 0; - std::basic_stringstream,std::allocator>::basic_stringstream((int)v320); - if ( v283 != v284 ) // begin() != end() - { - v245 = std::operator<<>((std::ostream::sentry *)v321, "f_['"); - WXML::Rewrite::ToStringCode((int)&v323, lpuexcpt); - v21 = std::operator<<(v245, &v323); - v22 = std::operator<<>(v21, "']={};"); - a1 = (int *)a10; - std::operator<<>(v22, a10); - std::string::_M_dispose((void **)&v323); - } - while ( (unsigned int)v266 < -1227133513 * (((char *)v284 - (char *)v283) >> 4) ) - { - v299[0] = &v300; - v299[1] = 0; - - v304[0] = &v305; - v304[1] = 0; - - a1 = a3; - - v301 = (int)&v303; - v302 = 0; - - v306 = (int)&v308; - v307 = 0; - - v300 = 0; - v303 = 0; - v305 = 0; - v308 = 0; - v246 = WXML::Compiler::DealWxsTag( - (int)lpuexcpt, - &v283[28 * (_DWORD)v266], - v299, - (int)&v301, - (int)v304, - &v280, - a3); - if ( v246 ) - goto LABEL_21; // 销毁数据,返回v246 - v23 = std::operator<<((std::ostream::sentry *)v321, a20); - v247 = std::operator<<>(v23, "['"); - WXML::Rewrite::ToStringCode((int)v316, lpuexcpt); - v24 = std::operator<<(v247, v316); - v248 = std::operator<<>(v24, "']['"); - WXML::Rewrite::ToStringCode((int)&v323, (int *)v299); - v25 = std::operator<<(v248, &v323); - std::operator<<>(v25, "'] ="); - std::string::_M_dispose((void **)&v323); - std::string::_M_dispose((void **)v316); - if ( v302 ) - { - MMBizWxaAppComm::PathCombine(lpuexcpt, &v301, (unsigned int *)&v306); - if ( *(_BYTE *)v306 == '/'/*47*/ ) - { - std::operator+((int)&v309, '.'/*46*/, (int)&v306); - std::string::operator=((unsigned __int8 **)&v306, (int)&v309); - std::string::_M_dispose((void **)&v309); - } - if ( a2 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a2, - (int)&v306) ) - { - v26 = std::operator==((int)a8, "$gwx"); - if ( (a9 & 0x20) != 0 || v26 ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v323); - v27 = std::operator<<((std::ostream::sentry *)v325, lpuexcpt); - std::operator<<>(v27, ":"); - v28 = (std::ostream::sentry *)std::ostream::operator<<(v280); - std::operator<<>(v28, ":"); - // int ** v283 - v29 = (std::ostream::sentry *)std::ostream::operator<<(v283[28 * (_DWORD)v266 + 3]); - v30 = std::operator<<>(v29, ":"); - v31 = std::operator<<(v30, &v301); - v32 = std::operator<<>(v31, " not found from "); - std::operator<<(v32, lpuexcpt); - std::stringbuf::str((int)&v311, (int)v326); - std::string::operator=((unsigned __int8 **)a3, (int)&v311); - std::string::_M_dispose((void **)&v311); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v323); - v246 = 1; -LABEL_21: - std::string::_M_dispose((void **)&v306); - std::string::_M_dispose(v304); - std::string::_M_dispose((void **)&v301); - std::string::_M_dispose(v299); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v320); - std::string::_M_dispose((void **)v297); - std::string::_M_dispose((void **)&v294); - v266 = (std::ostream::sentry *)v246; - goto LABEL_25; // 销毁数据,返回v266 - } - } - v249 = std::operator<<>((std::ostream::sentry *)v321, "f_['"); - WXML::Rewrite::ToStringCode((int)&v323, &v306); - v33 = std::operator<<(v249, &v323); - std::operator<<>(v33, "'] || "); - std::string::_M_dispose((void **)&v323); - v250 = std::operator<<>((std::ostream::sentry *)v321, "nv_require(\""); - std::operator+((int)v316, "p_", (int)&v306); - WXML::Rewrite::ToStringCode((int)&v323, v316); - v34 = std::operator<<(v250, &v323); - v35 = std::operator<<>(v34, "\");"); - std::operator<<>(v35, a10); - std::string::_M_dispose((void **)&v323); - std::string::_M_dispose((void **)v316); - v36 = std::operator<<((std::ostream::sentry *)v321, a20); - v251 = std::operator<<>(v36, "['"); - WXML::Rewrite::ToStringCode((int)v316, lpuexcpt); - v37 = std::operator<<(v251, v316); - v252 = std::operator<<>(v37, "']['"); - WXML::Rewrite::ToStringCode((int)&v323, (int *)v299); - v38 = std::operator<<(v252, &v323); - v39 = std::operator<<>(v38, "']();"); - std::operator<<>(v39, a10); - std::string::_M_dispose((void **)&v323); - v40 = v316; - } - else - { - std::operator+((int)v314, "m_", (int)lpuexcpt); - v41 = std::string::append(v314, ":"); - std::string::basic_string(v316, v41); - v42 = std::string::append(v316, (int)v299); - std::string::basic_string(&v323, v42); - a1 = &v323; - WXML::Compiler::GetFuncId((void **)&v309, &v292, (int)&v323); - std::string::_M_dispose((void **)&v323); - std::string::_M_dispose((void **)v316); - std::string::_M_dispose((void **)v314); - v246 = night::compile_ns((int)lpuexcpt, (int)&v309, (int)v304, v280, (unsigned int *)v297, 0); - if ( v246 ) - { - std::string::_M_assign((int)a3, (int)v297); - std::string::_M_dispose((void **)&v309); - goto LABEL_21; // 销毁数据,返回v246 - } - v253 = std::operator<<>((std::ostream::sentry *)v321, "nv_require(\""); - std::operator+((int)&v311, "m_", (int)lpuexcpt); - v43 = std::string::append(&v311, ":"); - std::string::basic_string(v314, v43); - v44 = std::string::append(v314, (int)v299); - std::string::basic_string(v316, v44); - WXML::Rewrite::ToStringCode((int)&v323, v316); - v45 = std::operator<<(v253, &v323); - v46 = std::operator<<>(v45, "\");"); - std::operator<<>(v46, a10); - std::string::_M_dispose((void **)&v323); - std::string::_M_dispose((void **)v316); - std::string::_M_dispose((void **)v314); - std::string::_M_dispose((void **)&v311); - v47 = std::operator<<((std::ostream::sentry *)v321, v297); - std::operator<<>(v47, a10); - v40 = &v309; - } - std::string::_M_dispose((void **)v40); - std::string::_M_dispose((void **)&v306); - std::string::_M_dispose(v304); - std::string::_M_dispose((void **)&v301); - std::string::_M_dispose(v299); - v266 = (std::ostream::sentry *)((char *)v266 + 1); - } - std::stringbuf::str((int)v314, (int)v322); - std::string::operator=((unsigned __int8 **)&v294, (int)v314); - std::string::_M_dispose((void **)v314); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v320); - std::string::_M_dispose((void **)v297); - if ( v295 ) - { - v48 = std::map::operator[](&v290, (int)lpuexcpt); - std::string::_M_assign((int)v48, (int)&v294); - } - std::string::_M_dispose((void **)&v294); - WXML::DOMLib::Parser::~Parser((int)v327); - std::vector::~vector((void **)&v283); - } - else - { - std::string::substr(v316, lpuexcpt, *((_DWORD *)i + 5) - 4, 0xFFFFFFFF); - v267 = std::operator==((int)v316, ".wxs"); - std::string::_M_dispose((void **)v316); - if ( v267 ) - { - v311 = (int)&v313; // std::string - v312 = 0; - v313 = 0; - std::operator+((int)v327, "p_", (int)lpuexcpt); - a1 = v327; - WXML::Compiler::GetFuncId((void **)v314, &v292, (int)v327); - std::string::_M_dispose((void **)v327); - v266 = (std::ostream::sentry *)night::compile_ns( - (int)lpuexcpt, - (int)v314, - (int)i + 40, - 1, - (unsigned int *)&v311, - 0); - if ( v266 ) - { - std::string::_M_assign((int)a3, (int)&v311); - std::string::_M_dispose((void **)v314); - std::string::_M_dispose((void **)&v311); - goto LABEL_118; // 销毁数据,返回v266 - } - std::basic_stringstream,std::allocator>::basic_stringstream((int)v327); - v268 = std::operator<<>((std::ostream::sentry *)v328, "f_['"); - WXML::Rewrite::ToStringCode((int)v316, lpuexcpt); - v49 = std::operator<<(v268, v316); - v50 = std::operator<<>(v49, "'] = nv_require("); - v269 = std::operator<<>(v50, 34); - std::operator+((int)v320, "p_", (int)lpuexcpt); - WXML::Rewrite::ToStringCode((int)&v323, v320); - v51 = std::operator<<(v269, &v323); - v52 = std::operator<<>(v51, 34); - v53 = std::operator<<>(v52, ");"); - std::operator<<>(v53, a10); - std::string::_M_dispose((void **)&v323); - std::string::_M_dispose((void **)v320); - std::string::_M_dispose((void **)v316); - v54 = std::operator<<((std::ostream::sentry *)v328, &v311); - std::operator<<>(v54, a10); - std::stringbuf::str((int)&v323, (int)v329); - v55 = std::map::operator[](&v290, (int)lpuexcpt); - std::string::operator=((unsigned __int8 **)v55, (int)&v323); - std::string::_M_dispose((void **)&v323); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v327); - std::string::_M_dispose((void **)v314); - std::string::_M_dispose((void **)&v311); - } - } - } - // Compile - 5 - if ( a7 ) - std::string::basic_string((void **)&v323, "global"); - else - std::string::basic_string((void **)&v323, "window"); - WXML::Compiler::GetVersionInfo((int)v327, &v323); - v56 = std::operator<<((std::ostream::sentry *)v318, v327); - std::ostream::operator<<(v56, (int (__cdecl *)(void *))std::endl>); - std::string::_M_dispose((void **)v327); - std::string::_M_dispose((void **)&v323); - WXML::NameAllocator::NameAllocator(&v323, a17, a18); - v57 = std::operator<<>((std::ostream::sentry *)v318, "var $gwxc"); - std::operator<<>(v57, a10); - v58 = std::operator<<>((std::ostream::sentry *)v318, "var $gaic={}"); - std::operator<<>(v58, a10); - v59 = std::operator<<((std::ostream::sentry *)v318, a8); - v60 = std::operator<<>(v59, "=function(path,global){"); - std::operator<<>(v60, a10); - std::operator<<>((std::ostream::sentry *)v318, "if(typeof global === 'undefined') global={};"); - std::operator<<>((std::ostream::sentry *)v318, "if(typeof __WXML_GLOBAL__ === 'undefined') {"); - v61 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__={};"); - std::operator<<>(v61, a10); - // Compile - 10 - if ( (a9 & 0x80) != 0 ) - { - std::string::basic_string((void **)v327, "life_cycle_callback_content"); - v259 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a6, - (int)v327); - std::string::_M_dispose((void **)v327); - if ( v259 != (std::ostream::sentry *)(a6 + 1) ) - { - std::string::basic_string((void **)v327, "life_cycle_callback_content"); - v62 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a6, - (int)v327); - std::operator<<((std::ostream::sentry *)v318, v62 + 10); - std::string::_M_dispose((void **)v327); - } - } - std::operator<<>((std::ostream::sentry *)v318, "}"); - v63 = std::operator<<>( - (std::ostream::sentry *)v318, - "__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};"); - std::operator<<>(v63, a10); - if ( !std::operator==((int)a8, "$gwx") && (a9 & 0x60) == 0 ) - { - v64 = std::operator<<>((std::ostream::sentry *)v318, "$gwx('init', global);"); - std::operator<<>(v64, a10); - } - // Compile - 15 - v65 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _(a,b){if(typeof(b)!='undefined')a.children.push(b);}"); - std::operator<<>(v65, a10); - v66 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _v(k){if(typeof(k)!='undefined')return {tag:'virtual','wxKey':k,children:[]};return {tag:'virtual',children:[]};}"); - std::operator<<>(v66, a10); - v67 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _n(tag){$gwxc++;if($gwxc>=16000){throw 'Dom limit exceeded, please check if there\\'s any mistake you" - "\\'ve made.'};return {tag:'wx-'+tag,attr:{},children:[],n:[],raw:{},generics:{}}}"); - std::operator<<>(v67, a10); - v68 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _p(a,b){b&&a.properities.push(b);}"); - std::operator<<>(v68, a10); - v69 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _s(scope,env,key){return typeof(scope[key])!='undefined'?scope[key]:env[key]}"); - std::operator<<>(v69, a10); - v70 = std::operator<<>((std::ostream::sentry *)v318, "function _wp(m){console.warn(\"WXMLRT_"); - v71 = std::operator<<(v70, a8); - v72 = std::operator<<>(v71, ":\"+m)}"); - std::operator<<>(v72, a10); - v73 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _wl(tname,prefix){_wp(prefix+':-1:-1:-1: Template `' + tname + '` is being called recursively, will be stop.')}"); - std::operator<<>(v73, a10); - v74 = std::operator<<>((std::ostream::sentry *)v318, aGwnConsoleWarn); - std::operator<<>(v74, a10); - v75 = std::operator<<>( - (std::ostream::sentry *)v318, - "function wfor( to_iter, func, env, _s, global, father, itemname, indexname, keyname )\n" - "{\n" - "var _n = wh.hn( to_iter ) === 'n'; \n" - "var scope = wh.rv( _s ); \n" - "var has_old_item = scope.hasOwnProperty(itemname);\n" - "var has_old_index = scope.hasOwnProperty(indexname);\n" - "var old_item = scope[itemname];\n" - "var old_index = scope[indexname];\n" - "var full = Object.prototype.toString.call(wh.rv(to_iter));\n" - "var type = full[8]; \n" - "if( type === 'N' && full[10] === 'l' ) type = 'X'; \n" - "var _y;\n" - "if( _n )\n" - "{\n" - "if( type === 'A' ) \n" - "{\n" - "var r_iter_item;\n" - "for( var i = 0 ; i < to_iter.length ; i++ )\n" - "{\n" - "scope[itemname] = to_iter[i];\n" - "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" - "r_iter_item = wh.rv(to_iter[i]);\n" - "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" - "ed;\n" - "_y = _v(key);\n" - "_(father,_y);\n" - "func( env, scope, _y, global );\n" - "}\n" - "}\n" - "else if( type === 'O' ) \n" - "{\n" - "var i = 0;\n" - "var r_iter_item;\n" - "for( var k in to_iter )\n" - "{\n" - "scope[itemname] = to_iter[k];\n" - "scope[indexname] = _n ? k : wh.nh(k, 'h');\n" - "r_iter_item = wh.rv(to_iter[k]);\n" - "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" - "ed;\n" - "_y = _v(key);\n" - "_(father,_y);\n" - "func( env,scope,_y,global );\n" - "i++;\n" - "}\n" - "}\n" - "else if( type === 'S' ) \n" - "{\n" - "for( var i = 0 ; i < to_iter.length ; i++ )\n" - "{\n" - "scope[itemname] = to_iter[i];\n" - "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" - "_y = _v( to_iter[i] + i );\n" - "_(father,_y);\n" - "func( env,scope,_y,global );\n" - "}\n" - "}\n" - "else if( type === 'N' ) \n" - "{\n" - "for( var i = 0 ; i < to_iter ; i++ )\n" - "{\n" - "scope[itemname] = i;\n" - "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" - "_y = _v( i );\n" - "_(father,_y);\n" - "func(env,scope,_y,global);\n" - "}\n" - "}\n" - "else\n" - "{\n" - "}\n" - "}\n" - "else\n" - "{\n" - "var r_to_iter = wh.rv(to_iter);\n" - "var r_iter_item, iter_item;\n" - "if( type === 'A' ) \n" - "{\n" - "for( var i = 0 ; i < r_to_iter.length ; i++ )\n" - "{\n" - "iter_item = r_to_iter[i];\n" - "iter_item = wh.hn(iter_item)==='n' ? wh.nh(iter_item,'h') : iter_item;\n" - "r_iter_item = wh.rv( iter_item );\n" - "scope[itemname] = iter_item\n" - "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" - "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" - "ed;\n" - "_y = _v(key);\n" - "_(father,_y);\n" - "func( env, scope, _y, global );\n" - "}\n" - "}\n" - "else if( type === 'O' ) \n" - "{\n" - "var i=0;\n" - "for( var k in r_to_iter )\n" - "{\n" - "iter_item = r_to_iter[k];\n" - "iter_item = wh.hn(iter_item)==='n'? wh.nh(iter_item,'h') : iter_item;\n" - "r_iter_item = wh.rv( iter_item );\n" - "scope[itemname] = iter_item;\n" - "scope[indexname] = _n ? k : wh.nh(k, 'h');\n" - "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" - "ed;\n" - "_y=_v(key);\n" - "_(father,_y);\n" - "func( env, scope, _y, global );\n" - "i++\n" - "}\n" - "}\n" - "else if( type === 'S' ) \n" - "{\n" - "for( var i = 0 ; i < r_to_iter.length ; i++ )\n" - "{\n" - "iter_item = wh.nh(r_to_iter[i],'h');\n" - "scope[itemname] = iter_item;\n" - "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" - "_y = _v( to_iter[i] + i );\n" - "_(father,_y);\n" - "func( env, scope, _y, global );\n" - "}\n" - "}\n" - "else if( type === 'N' ) \n" - "{\n" - "for( var i = 0 ; i < r_to_iter ; i++ )\n" - "{\n" - "iter_item = wh.nh(i,'h');\n" - "scope[itemname] = iter_item;\n" - "scope[indexname]= _n ? i : wh.nh(i,'h');\n" - "_y = _v( i );\n" - "_(father,_y);\n" - "func(env,scope,_y,global);\n" - "}\n" - "}\n" - "else\n" - "{\n" - "}\n" - "}\n" - "if(has_old_item)\n" - "{\n" - "scope[itemname]=old_item;\n" - "}\n" - "else\n" - "{\n" - "delete scope[itemname];\n" - "}\n" - "if(has_old_index)\n" - "{\n" - "scope[indexname]=old_index;\n" - "}\n" - "else\n" - "{\n" - "delete scope[indexname];\n" - "}\n" - "}\n"); - std::operator<<>(v75, a10); - // Compile - 20 - v76 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _ca(o)\n" - "{ \n" - "if ( wh.hn(o) == 'h' ) return true;\n" - "if ( typeof o !== \"object\" ) return false;\n" - "for(var i in o){ \n" - "if ( o.hasOwnProperty(i) ){\n" - "if (_ca(o[i])) return true;\n" - "}\n" - "}\n" - "return false;\n" - "}\n" - "function _da( node, attrname, opindex, raw, o )\n" - "{\n" - "var isaffected = false;\n" - "var value = $gdc( raw, \"\", 2 );\n" - "if ( o.ap && value && value.constructor===Function ) \n" - "{\n" - "attrname = \"$wxs:\" + attrname; \n" - "node.attr[\"$gdc\"] = $gdc;\n" - "}\n" - "if ( o.is_affected || _ca(raw) ) \n" - "{\n" - "node.n.push( attrname );\n" - "node.raw[attrname] = raw;\n" - "}\n" - "node.attr[attrname] = value;\n" - "}\n" - "function _r( node, attrname, opindex, env, scope, global ) \n" - "{\n" - "global.opindex=opindex;\n" - "var o = {}, _env;\n" - "var a = grb( z[opindex], env, scope, global, o );\n" - "_da( node, attrname, opindex, a, o );\n" - "}\n" - "function _rz( z, node, attrname, opindex, env, scope, global ) \n" - "{\n" - "global.opindex=opindex;\n" - "var o = {}, _env;\n" - "var a = grb( z[opindex], env, scope, global, o );\n" - "_da( node, attrname, opindex, a, o );\n" - "}\n" - "function _o( opindex, env, scope, global )\n" - "{\n" - "global.opindex=opindex;\n" - "var nothing = {};\n" - "var r = grb( z[opindex], env, scope, global, nothing );\n" - "return (r&&r.constructor===Function) ? undefined : r;\n" - "}\n" - "function _oz( z, opindex, env, scope, global )\n" - "{\n" - "global.opindex=opindex;\n" - "var nothing = {};\n" - "var r = grb( z[opindex], env, scope, global, nothing );\n" - "return (r&&r.constructor===Function) ? undefined : r;\n" - "}\n" - "function _1( opindex, env, scope, global, o )\n" - "{\n" - "var o = o || {};\n" - "global.opindex=opindex;\n" - "return gra( z[opindex], env, scope, global, o );\n" - "}\n" - "function _1z( z, opindex, env, scope, global, o )\n" - "{\n" - "var o = o || {};\n" - "global.opindex=opindex;\n" - "return gra( z[opindex], env, scope, global, o );\n" - "}\n" - "function _2( opindex, func, env, scope, global, father, itemname, indexname, keyname )\n" - "{\n" - "var o = {};\n" - "var to_iter = _1( opindex, env, scope, global );\n" - "wfor( to_iter, func, env, scope, global, father, itemname, indexname, keyname );\n" - "}\n" - "function _2z( z, opindex, func, env, scope, global, father, itemname, indexname, keyname )\n" - "{\n" - "var o = {};\n" - "var to_iter = _1z( z, opindex, env, scope, global );\n" - "wfor( to_iter, func, env, scope, global, father, itemname, indexname, keyname );\n" - "}\n"); - std::operator<<>(v76, a10); - v77 = std::operator<<>( - (std::ostream::sentry *)v318, - "\n" - "function _m(tag,attrs,generics,env,scope,global)\n" - "{\n" - "var tmp=_n(tag);\n" - "var base=0;\n" - "for(var i = 0 ; i < attrs.length ; i+=2 )\n" - "{\n" - "if(base+attrs[i+1]<0)\n" - "{\n" - "tmp.attr[attrs[i]]=true;\n" - "}\n" - "else\n" - "{\n" - "_r(tmp,attrs[i],base+attrs[i+1],env,scope,global);\n" - "if(base===0)base=attrs[i+1];\n" - "}\n" - "}\n" - "for(var i=0;i>(v77, a10); - v78 = std::operator<<>((std::ostream::sentry *)v318, aVarNfInitFunct); - std::operator<<>(v78, a10); - v79 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _af(p, a, r, c){\n" - "p.extraAttr = {\"t_action\": a, \"t_rawid\": r };\n" - "if ( typeof(c) != 'undefined' ) p.extraAttr.t_cid = c;\n" - "}\n"); - std::operator<<>(v79, a10); - // Compile - 25 - if ( !a7 ) - { - v80 = std::operator<<>((std::ostream::sentry *)v318, "function _gv( )"); - std::operator<<>(v80, a10); - v81 = std::operator<<>( - (std::ostream::sentry *)v318, - "{if( typeof( window.__webview_engine_version__) == 'undefined' ) return 0.0;"); - std::operator<<>(v81, a10); - v82 = std::operator<<>( - (std::ostream::sentry *)v318, - "return window.__webview_engine_version__;}"); - std::operator<<>(v82, a10); - } - v83 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _ai(i,p,e,me,r,c){var x=_grp(p,e,me);if(x)i.push(x);else{i.push('');_wp(me+':import:'+r+':'+c+': Path" - " `'+p+'` not found from `'+me+'`.')}}"); - std::operator<<>(v83, a10); - v84 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _grp(p,e,me){if(p[0]!='/'){var mepart=me.split('/');mepart.pop();var ppart=p.split('/');for(var i=0;i" - ">(v84, a10); - // Compile - 30 - std::operator<<>( - (std::ostream::sentry *)v318, - "function _gd(p,c,e,d){if(!c)return;if(d[p][c])return d[p][c];for(var x=e[p].i.length-1;x>=0;x--){if(e[p].i[x]&&d[e[p" - "].i[x]][c])return d[e[p].i[x]][c]};"); - std::operator<<>( - (std::ostream::sentry *)v318, - "for(var x=e[p].ti.length-1;x>=0;x--){var q=_grp(e[p].ti[x],e,p);if(q&&d[q][c])return d[q][c]}"); - std::operator<<>( - (std::ostream::sentry *)v318, - "var ii=_gapi(e,p);for(var x=0;x>( - (std::ostream::sentry *)v318, - "for(var k=e[p].j.length-1;k>=0;k--)if(e[p].j[k]){for(var q=e[e[p].j[k]].ti.length-1;q>=0;q--){var pp=_grp(e[e[p].j[k" - "]].ti[q],e,p);if(pp&&d[pp][c]){return d[pp][c]}}}"); - v85 = std::operator<<>((std::ostream::sentry *)v318, "}"); - std::operator<<>(v85, a10); - std::operator<<>( - (std::ostream::sentry *)v318, - "function _gapi(e,p){if(!p)return [];if($gaic[p]){return $gaic[p]};var ret=[],q=[],h=0,t=0,put={},visited={};q.push(p" - ");visited[p]=true;t++;while(h>( - (std::ostream::sentry *)v318, - "var a=q[h++];for(var i=0;i>( - (std::ostream::sentry *)v318, - "var nd=e[a].ic[i];var np=_grp(nd,e,a);if(np&&!visited[np]){visited[np]=true;q.push(np);t++;}}for(var i=0;a!=p&&i>( - (std::ostream::sentry *)v318, - "var ni=e[a].ti[i];var nm=_grp(ni,e,a);if(nm&&!put[nm]){put[nm]=true;ret.push(nm);}}"); - v86 = std::operator<<>((std::ostream::sentry *)v318, "}$gaic[p]=ret;return ret;}"); - std::operator<<>(v86, a10); - std::operator<<>((std::ostream::sentry *)v318, "var $ixc={};"); - v87 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _ic(p,ent,me,e,s,r,gg){var x=_grp(p,ent,me);ent[me].j.push(x);if(x){if($ixc[x]){_wp('-1:include:-1:-1" - ": `'+p+'` is being included in a loop, will be stop.');return;}$ixc[x]=true;try{ent[x].f(e,s,r,gg)}catch(e){}$" - "ixc[x]=false;}else{_wp(me+':include:-1:-1: Included path `'+p+'` not found from `'+me+'`.')}}"); - std::operator<<>(v87, a10); - std::operator<<>( - (std::ostream::sentry *)v318, - "function _w(tn,f,line,c){_wp(f+':template:'+line+':'+c+': Template `'+tn+'` not found.');}"); - v88 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _ev(dom){var changed=false;delete dom.properities;delete dom.n;if(dom.children){do{changed=false;var " - "newch = [];for(var i=0;i>(v88, a10); - // Compile - 35 - v89 = std::operator<<>( - (std::ostream::sentry *)v318, - "function _tsd( root )\n" - "{\n" - "if( root.tag == \"wx-wx-scope\" ) \n" - "{\n" - "root.tag = \"virtual\";\n" - "root.wxCkey = \"11\";\n" - "root['wxScopeData'] = root.attr['wx:scope-data'];\n" - "delete root.n;\n" - "delete root.raw;\n" - "delete root.generics;\n" - "delete root.attr;\n" - "}\n" - "for( var i = 0 ; root.children && i < root.children.length ; i++ )\n" - "{\n" - "_tsd( root.children[i] );\n" - "}\n" - "return root;\n" - "}\n"); - std::operator<<>(v89, a10); - v90 = std::operator<<>((std::ostream::sentry *)v318, "var "); - v91 = std::operator<<(v90, a14); - v92 = std::operator<<>(v91, "={}"); - std::operator<<>(v92, a10); - v93 = std::operator<<>( - (std::ostream::sentry *)v318, - "if(typeof(global.entrys)==='undefined')global.entrys={};"); - v94 = std::operator<<(v93, a14); - v95 = std::operator<<>(v94, "=global.entrys;"); - std::operator<<>(v95, a10); - v96 = std::operator<<>((std::ostream::sentry *)v318, "var "); - v97 = std::operator<<(v96, a15); - v98 = std::operator<<>(v97, "={}"); - std::operator<<>(v98, a10); - v99 = std::operator<<>( - (std::ostream::sentry *)v318, - "if(typeof(global.defines)==='undefined')global.defines={};"); - v100 = std::operator<<(v99, a15); - v101 = std::operator<<>(v100, "=global.defines;"); - std::operator<<>(v101, a10); - v102 = std::operator<<>((std::ostream::sentry *)v318, "var "); - v103 = std::operator<<(v102, a20); - v104 = std::operator<<>(v103, "={}"); - std::operator<<>(v104, a10); - v105 = std::operator<<>( - (std::ostream::sentry *)v318, - "if(typeof(global.modules)==='undefined')global.modules={};"); - v106 = std::operator<<(v105, a20); - v107 = std::operator<<>(v106, "=global.modules || {};"); - std::operator<<>(v107, a10); - v108 = std::operator<<>((std::ostream::sentry *)v318, "var "); - v109 = std::operator<<(v108, a16); - v110 = std::operator<<>(v109, "={}"); - std::operator<<>(v110, a10); - // Compile - 40 - if ( (a9 & 2) != 0 ) - { - v111 = std::operator<<>((std::ostream::sentry *)v318, "var cs"); - std::operator<<>(v111, a10); - } - std::_Rb_tree_header::_Rb_tree_header(v310); - for ( j = v288; ; j = (std::ostream::sentry *)std::_Rb_tree_increment((int)v270) ) - { - v270 = j; - if ( j == (std::ostream::sentry *)v287 ) - break; - WXML::DOMLib::WXMLDom::RewriteTree(*((_DWORD *)j + 10)); - v260 = (std::ostream::sentry *)*((_DWORD *)v270 + 10); - std::string::basic_string((void **)v327, (char *)off_550B3F); // "ALL" - v113 = std::map>::operator[](a5, v327); - WXML::DOMLib::WXMLDom::MarkIfHasDescendant((int)v260, v113); - std::string::_M_dispose((void **)v327); - if ( a7 ) - { - v261 = (std::ostream::sentry *)*((_DWORD *)v270 + 10); - std::string::basic_string((void **)v327, (char *)off_550B3F); // "ALL" - v114 = std::map>::operator[](a5, v327); - WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(v261, v114); - std::string::_M_dispose((void **)v327); - } - } - // Compile - 45 - v115 = std::operator<<>( - (std::ostream::sentry *)v318, - "__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}"); - std::operator<<>(v115, a10); - v116 = std::operator<<>( - (std::ostream::sentry *)v318, - "__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};"); - std::operator<<>(v116, a10); - v117 = std::operator<<>( - (std::ostream::sentry *)v318, - "__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};"); - std::operator<<>(v117, a10); - v118 = std::operator<<>((std::ostream::sentry *)v318, "var z=__WXML_GLOBAL__.ops_set."); - v119 = std::operator<<(v118, a8); - v120 = std::operator<<>(v119, " || [];"); - std::operator<<>(v120, a10); - if ( (a9 & 4) != 0 ) - { - v121 = std::operator<<>( - (std::ostream::sentry *)v318, - "__WXML_GLOBAL__.debuginfo_set = __WXML_GLOBAL__.debuginfo_set || {};"); - std::operator<<>(v121, a10); - v122 = std::operator<<>( - (std::ostream::sentry *)v318, - "var debugInfo=__WXML_GLOBAL__.debuginfo_set."); - v123 = std::operator<<(v122, a8); - v124 = std::operator<<>(v123, " || [];"); - std::operator<<>(v124, a10); - } - v254 = 0; - // Compile - 50 - for ( k = v288; k != (std::ostream::sentry *)v287; k = (std::ostream::sentry *)std::_Rb_tree_increment((int)k) ) - { - std::_Rb_tree_header::_Rb_tree_header(&v312); - v254 = (WXML::NameAllocator *)((char *)v254 + 1); - v307 = 0; - v306 = 0; - std::basic_stringstream,std::allocator>::basic_stringstream((int)v327); - v125 = std::operator<<((std::ostream::sentry *)v328, a8); - std::operator<<>(v125, "_"); - std::ostream::operator<<(v254); - std::stringbuf::str((int)v314, (int)v329); - std::string::basic_string((void **)v316, "gz"); - std::string::append(v316, (int)v314); - v126 = std::operator<<>((std::ostream::sentry *)v318, "function "); - v127 = std::operator<<(v126, v316); - v128 = std::operator<<>(v127, "(){"); - std::operator<<>(v128, a10); - v129 = std::operator<<>((std::ostream::sentry *)v318, "if( __WXML_GLOBAL__.ops_cached."); - v130 = std::operator<<(v129, v314); - std::operator<<>(v130, ")"); - v131 = std::operator<<>((std::ostream::sentry *)v318, "return __WXML_GLOBAL__.ops_cached."); - v132 = std::operator<<(v131, v314); - std::operator<<>(v132, a10); - v133 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__.ops_cached."); - v134 = std::operator<<(v133, v314); - v135 = std::operator<<>(v134, "=[];"); - std::operator<<>(v135, a10); - std::operator<<>((std::ostream::sentry *)v318, "(function(z){var a=11;"); - if ( (a9 & 4) != 0 ) - v136 = std::operator<<>( - (std::ostream::sentry *)v318, - "function Z(ops,debugLine){z.push(['11182016',ops,debugLine])}"); - else - v136 = std::operator<<>((std::ostream::sentry *)v318, "function Z(ops){z.push(ops)}"); - std::operator<<>(v136, a10); - WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( - *((_DWORD **)k + 10), - (int *)k + 4, - (unsigned int *)a3, - (WXML::EXPRLib::Parser *)v317, - &v311, - &v306, - (a9 & 4) != 0, - (int)a6); - v137 = std::operator<<>((std::ostream::sentry *)v318, "})(__WXML_GLOBAL__.ops_cached."); - v138 = std::operator<<(v137, v314); - std::operator<<>(v138, ");"); - v139 = std::operator<<>((std::ostream::sentry *)v318, "return __WXML_GLOBAL__.ops_cached."); - v140 = std::operator<<(v139, v314); - std::operator<<>(v140, a10); - v141 = std::operator<<>((std::ostream::sentry *)v318, "}"); - std::operator<<>(v141, a10); - std::string::basic_string((void **)v320, "get_page_z_name"); - v142 = std::map::operator[]((_DWORD *)(*((_DWORD *)k + 10) + 272), v320); - std::string::_M_assign((int)v142, (int)v316); - std::string::_M_dispose((void **)v320); - std::string::_M_dispose((void **)v316); - std::string::_M_dispose((void **)v314); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v327); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v311); - } - // Compile - 55 - v143 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__.ops_set."); - v144 = std::operator<<(v143, a8); - v145 = std::operator<<>(v144, "=z;"); - std::operator<<>(v145, a10); - v146 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__.ops_init."); - v147 = std::operator<<(v146, a8); - v148 = std::operator<<>(v147, "=true;"); - std::operator<<>(v148, a10); - if ( (a9 & 4) != 0 ) - { - v149 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__.debuginfo_set."); - v150 = std::operator<<(v149, a8); - v151 = std::operator<<>(v150, "=debugInfo;"); - std::operator<<>(v151, a10); - } - std::operator<<>((std::ostream::sentry *)v318, "var nv_require=function(){var nnm={"); - for ( m = (std::ostream::sentry *)v293[2]; ; m = (std::ostream::sentry *)std::_Rb_tree_increment((int)v272) ) - { - v272 = m; - if ( m == (std::ostream::sentry *)v293 ) - break; - v262 = std::operator<<>((std::ostream::sentry *)v318, 34); - WXML::Rewrite::ToStringCode((int)v327, (int *)v272 + 4); - v153 = std::operator<<(v262, v327); - v154 = std::operator<<>(v153, 34); - std::operator<<>(v154, ":np_"); - v155 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v272 + 10)); - std::operator<<>(v155, ","); - std::string::_M_dispose((void **)v327); - } - // Compile - 60 - std::operator<<>((std::ostream::sentry *)v318, "};var nom={};return function(n){"); - std::operator<<>( - (std::ostream::sentry *)v318, - "if(n[0]==='p'&&n[1]==='_'&&f_[n.slice(2)])return f_[n.slice(2)];"); - std::operator<<>( - (std::ostream::sentry *)v318, - "return function(){if(!nnm[n]) return undefined;"); - std::operator<<>( - (std::ostream::sentry *)v318, - "try{if(!nom[n])nom[n]=nnm[n]();return nom[n];}"); - std::operator<<>((std::ostream::sentry *)v318, "catch(e){"); - std::operator<<>((std::ostream::sentry *)v318, "e.message=e.message.replace(/nv_/g,'');"); - std::operator<<>( - (std::ostream::sentry *)v318, - "var tmp = e.stack.substring(0,e.stack.lastIndexOf(n));"); - std::operator<<>( - (std::ostream::sentry *)v318, - "e.stack = tmp.substring(0,tmp.lastIndexOf('\\n'));"); - std::operator<<>((std::ostream::sentry *)v318, "e.stack = e.stack.replace(/\\snv_/g,' ');"); - std::operator<<>((std::ostream::sentry *)v318, "e.stack = $gstack(e.stack);"); - v156 = std::operator<<>( - (std::ostream::sentry *)v318, - "e.stack += '\\n at ' + n.substring(2);console.error(e);}"); - std::operator<<>(v156, a10); - v157 = std::operator<<>((std::ostream::sentry *)v318, "}}}()"); - std::operator<<>(v157, a10); - for ( n = (int *)v291[2]; ; n = (int *)std::_Rb_tree_increment((int)v273) ) - { - v273 = (std::ostream::sentry *)n; - if ( n == v291 ) - break; - v159 = std::operator<<((std::ostream::sentry *)v318, n + 10); - std::operator<<>(v159, a10); - } - // Compile - 65 - for ( ii = v288; ; ii = (std::ostream::sentry *)std::_Rb_tree_increment((int)v274) ) - { - v274 = ii; - v263 = v281; - if ( ii == (std::ostream::sentry *)v287 ) - break; - std::string::basic_string((char *)v327, (int)ii + 16); // first - WXML::DOMLib::StrCache::Insert(v263, (int)v327); - std::string::_M_dispose((void **)v327); - v161 = *((_DWORD *)v274 + 10); // v274 ii second - *(_DWORD *)(v161 + 248) = v281; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(v161 + 252), v282); - WXML::DOMLib::WXMLDom::RecordAllPath(*((_DWORD **)v274 + 10)); - } - WXML::DOMLib::StrCache::RenderPathDefine(v281, (int)v317); - v238 = 0; - v264 = v288; - v234 = (a9 & 2) != 0; - while ( v264 != (std::ostream::sentry *)v287 ) - { - v162 = std::operator<<((std::ostream::sentry *)v318, a15); - std::operator<<>(v162, (char *)off_55101C); // "[x[" - v275 = v281; - v255 = (int *)((char *)v264 + 16); - std::string::basic_string((char *)v327, (int)v264 + 16); // first - StrID = WXML::DOMLib::StrCache::GetStrID(v275, (int)v327); - std::ostream::operator<<(StrID); - std::string::_M_dispose((void **)v327); - v164 = std::operator<<>((std::ostream::sentry *)v318, "]]={}"); - std::operator<<>(v164, a10); - std::string::basic_string((void **)v327, "get_page_z_name"); - // cur->second->offset_272["get_page_z_name"] - v165 = std::map::operator[]((_DWORD *)(*((_DWORD *)v264 + 10) + 272), v327); - v266 = WXML::Compiler::RenderDefine( - (unsigned int **)v264 + 10, - (std::ostream::sentry *)((char *)v264 + 16), - &v309, - (int)a3, - (int)v317, - (int)a6, - v234, - a9, - a10, // lineEndMark - a11, - a12, - a13, - (int)a8, - a14, - a15, - a16, - a17, - a18, - a19, - v165); - std::string::_M_dispose((void **)v327); - if ( v266 ) - goto LABEL_117; // 销毁数据,返回v266 - std::basic_stringstream,std::allocator>::basic_stringstream((int)v327); - - v314[0] = (int)&v315; // std::string - v314[1] = 0; - v315 = 0; - - std::operator<<>((std::ostream::sentry *)v328, "m"); - v231 = v238 + 1; - std::ostream::operator<<(v238); - std::stringbuf::str((int)v320, (int)v329); - std::string::operator=((unsigned __int8 **)v314, (int)v320); - std::string::_M_dispose((void **)v320); - v239 = (_DWORD *)*((_DWORD *)v264 + 10); - std::string::basic_string((void **)v316, "get_page_z_name"); - v276 = std::map::operator[]((_DWORD *)(*((_DWORD *)v264 + 10) + 272), v316); - std::string::basic_string((void **)v320, "r"); - v266 = (std::ostream::sentry *)WXML::DOMLib::WXMLDom::RenderMeAsFunction( - v239, - v255, - a14, - (int)a3, - v314, - (int)v317, - &v323, - a11, - a12, - a13, - v320, - a15, - a10, - a16, - 0, - v234, - a9, - v276); - std::string::_M_dispose((void **)v320); - std::string::_M_dispose((void **)v316); - if ( v266 ) - { - std::string::_M_dispose((void **)v314); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v327); - goto LABEL_117; // 销毁数据,返回v266 - } - v166 = std::operator<<((std::ostream::sentry *)v318, a14); - std::operator<<>(v166, (char *)off_55101C); // "[x[" - v240 = v281; - std::string::basic_string((char *)v320, (int)v255); - v167 = WXML::DOMLib::StrCache::GetStrID(v240, (int)v320); - std::ostream::operator<<(v167); - std::string::_M_dispose((void **)v320); - v168 = std::operator<<>((std::ostream::sentry *)v318, "]]={f:"); - v169 = std::operator<<(v168, v314); - std::operator<<>(v169, ",j:[],i:[],ti:["); - v256 = 0; - v241 = 0; - while ( 1 ) - { - v170 = *((_DWORD *)v264 + 10); - v171 = *(_DWORD *)(v170 + 72); - if ( (unsigned int)v256 >= (*(_DWORD *)(v170 + 76) - v171) >> 3 ) - break; - if ( std::operator==(*(_DWORD *)(v171 + 8 * (_DWORD)v256), "import") ) - { - v235 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v264 + 10) + 72) + 8 * (_DWORD)v256); - v229 = (_DWORD *)(v235 + 52); - std::string::basic_string((void **)v320, (char *)off_547B7D); // "src" - v236 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - (_DWORD *)(v235 + 48), - (int)v320); - std::string::_M_dispose((void **)v320); - if ( v236 != v229 ) - { - if ( v241 ) - std::operator<<>((std::ostream::sentry *)v318, ","); - std::operator<<>((std::ostream::sentry *)v318, "x["); - v230 = v281; - v237 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v264 + 10) + 72) + 8 * (_DWORD)v256); - std::string::basic_string((void **)v316, (char *)off_547B7D); // src - v172 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - (_DWORD *)(v237 + 48), - (int)v316); - v173 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v172 + 10)); - std::string::basic_string((char *)v320, v173); - v174 = WXML::DOMLib::StrCache::GetStrID(v230, (int)v320); - std::ostream::operator<<(v174); - std::string::_M_dispose((void **)v320); - std::string::_M_dispose((void **)v316); - std::operator<<>((std::ostream::sentry *)v318, "]"); - ++v241; - } - } - v256 = (WXML::NameAllocator *)((char *)v256 + 1); - } - std::operator<<>((std::ostream::sentry *)v318, "],ic:["); - for ( jj = 0; ; jj = (WXML::NameAllocator *)((char *)jj + 1) ) - { - v175 = *((_DWORD *)v264 + 10); - v176 = *(_DWORD *)(v175 + 72); - if ( (unsigned int)jj >= (*(_DWORD *)(v175 + 76) - v176) >> 3 ) - break; - if ( std::operator==(*(_DWORD *)(v176 + 8 * (_DWORD)jj), "include") ) - { - v242 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v264 + 10) + 72) + 8 * (_DWORD)jj); - v232 = (_DWORD *)(v242 + 52); - std::string::basic_string((void **)v320, (char *)off_547B7D); // src - v243 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - (_DWORD *)(v242 + 48), - (int)v320); - std::string::_M_dispose((void **)v320); - if ( v243 != v232 ) - { - if ( v266 ) - std::operator<<>((std::ostream::sentry *)v318, ","); - std::operator<<>((std::ostream::sentry *)v318, "x["); - v233 = v281; - v244 = *(_DWORD *)(*(_DWORD *)(*((_DWORD *)v264 + 10) + 72) + 8 * (_DWORD)jj); - std::string::basic_string((void **)v316, (char *)off_547B7D); // "src" - v177 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - (_DWORD *)(v244 + 48), - (int)v316); - v178 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v177 + 10)); - std::string::basic_string((char *)v320, v178); - v179 = WXML::DOMLib::StrCache::GetStrID(v233, (int)v320); - std::ostream::operator<<(v179); - std::string::_M_dispose((void **)v320); - std::string::_M_dispose((void **)v316); - std::operator<<>((std::ostream::sentry *)v318, "]"); - v266 = (std::ostream::sentry *)((char *)v266 + 1); - } - } - } - v180 = std::operator<<>((std::ostream::sentry *)v318, "]}"); - std::operator<<>(v180, a10); - std::string::_M_dispose((void **)v314); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v327); - v264 = (std::ostream::sentry *)std::_Rb_tree_increment((int)v264); - v238 = v231; - } - // Compile - 70 - v181 = std::operator<<>((std::ostream::sentry *)v318, "if(path&&"); - v182 = std::operator<<(v181, a14); - v183 = std::operator<<>(v182, "[path]){"); - std::operator<<>(v183, a10); - if ( !a7 ) - { - v184 = std::operator<<>((std::ostream::sentry *)v318, "window.__wxml_comp_version__=0.02"); - std::operator<<>(v184, a10); - } - v185 = std::operator<<>( - (std::ostream::sentry *)v318, - "return function(env,dd,global){$gwxc=0;var root={\"tag\":\"wx-page\"};root.children=[]"); - std::operator<<>(v185, a10); - v186 = std::operator<<>((std::ostream::sentry *)v318, "var main="); - v187 = std::operator<<(v186, a14); - v188 = std::operator<<>(v187, "[path].f"); - std::operator<<>(v188, a10); - if ( (a9 & 2) != 0 ) - { - v189 = std::operator<<>((std::ostream::sentry *)v318, "cs=[]"); - std::operator<<>(v189, a10); - } - if ( (a9 & 0x10) != 0 ) - { - v190 = std::operator<<>( - (std::ostream::sentry *)v318, - "console.log(path+': benv:\\n'+JSON.stringify(env))"); - std::operator<<>(v190, a10); - } - std::operator<<>((std::ostream::sentry *)v318, "if (typeof global===\"undefined\")global={};"); - v191 = std::operator<<>((std::ostream::sentry *)v318, "global.f=$gdc("); - v192 = std::operator<<(v191, a20); - v193 = std::operator<<>(v192, "[path],\"\",1);"); - std::operator<<>(v193, a10); - if ( !a7 ) - { - v194 = std::operator<<>( - (std::ostream::sentry *)v318, - "if(typeof(window.__webview_engine_version__)!='undefined'&&window.__webview_engine_version__+1e-6>=0.02+1e-" - "6&&window.__mergeData__)"); - std::operator<<>(v194, a10); - v195 = std::operator<<>((std::ostream::sentry *)v318, "{"); - std::operator<<>(v195, a10); - v196 = std::operator<<>((std::ostream::sentry *)v318, "env=window.__mergeData__(env,dd);"); - std::operator<<>(v196, a10); - v197 = std::operator<<>((std::ostream::sentry *)v318, "}"); - std::operator<<>(v197, a10); - } - v198 = std::operator<<>((std::ostream::sentry *)v318, "try{"); - std::operator<<>(v198, a10); - if ( (a9 & 0x10) != 0 ) - { - v199 = std::operator<<>( - (std::ostream::sentry *)v318, - "console.log(path+': aenv:\\n'+JSON.stringify(env)+', '+JSON.stringify(dd))"); - std::operator<<>(v199, a10); - } - // Compile - 75 - if ( (a9 & 0x80) != 0 ) - { - v200 = std::operator<<>((std::ostream::sentry *)v318, "if(__WXML_GLOBAL__."); - v201 = std::operator<<>(v200, "before_calculate"); - std::operator<<>(v201, ")"); - v202 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__."); - v203 = std::operator<<>(v202, "before_calculate"); - v204 = std::operator<<>(v203, "(path, env)"); - std::operator<<>(v204, a10); - } - v205 = std::operator<<>((std::ostream::sentry *)v318, "main(env,{},root,global);"); - std::operator<<>(v205, a10); - if ( (a9 & 0x80) != 0 ) - { - v206 = std::operator<<>((std::ostream::sentry *)v318, "if(__WXML_GLOBAL__."); - v207 = std::operator<<>(v206, "after_calculate"); - std::operator<<>(v207, ")"); - v208 = std::operator<<>((std::ostream::sentry *)v318, "__WXML_GLOBAL__."); - v209 = std::operator<<>(v208, "after_calculate"); - v210 = std::operator<<>(v209, "(path, root)"); - std::operator<<>(v210, a10); - } - v211 = std::operator<<>((std::ostream::sentry *)v318, "_tsd(root)"); - std::operator<<>(v211, a10); - if ( !a7 ) - { - v212 = std::operator<<>( - (std::ostream::sentry *)v318, - "if(typeof(window.__webview_engine_version__)=='undefined'|| window.__webview_engine_version__+1e-6<0.01+1e-" - "6){return _ev(root);}"); - std::operator<<>(v212, a10); - } - // Compile - 80 - v213 = std::operator<<>((std::ostream::sentry *)v318, "}catch(err){"); - std::operator<<>(v213, a10); - if ( (a9 & 2) != 0 ) - { - v214 = std::operator<<>((std::ostream::sentry *)v318, "console.log(cs, env);"); - std::operator<<>(v214, a10); - } - v215 = std::operator<<>((std::ostream::sentry *)v318, "console.log(err)"); - std::operator<<>(v215, a10); - if ( (a9 & 2) != 0 ) - { - v216 = std::operator<<>((std::ostream::sentry *)v318, "throw err"); - std::operator<<>(v216, a10); - } - v217 = std::operator<<>((std::ostream::sentry *)v318, "}"); - std::operator<<>(v217, a10); - if ( (a9 & 0x10) != 0 ) - { - v218 = std::operator<<>( - (std::ostream::sentry *)v318, - "console.log(path+': resp:\\n'+JSON.stringify(root))"); - std::operator<<>(v218, a10); - } - v219 = std::operator<<>((std::ostream::sentry *)v318, "return root;"); - std::operator<<>(v219, a10); - v220 = std::operator<<>((std::ostream::sentry *)v318, "}"); - std::operator<<>(v220, a10); - v221 = std::operator<<>((std::ostream::sentry *)v318, "}"); - std::operator<<>(v221, a10); - v222 = std::operator<<>((std::ostream::sentry *)v318, "}"); - std::operator<<>(v222, a10); - if ( (a9 & 8) != 0 ) - { - for ( kk = v288; ; kk = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcpta) ) - { - lpuexcpta = kk; - if ( kk == (struct _Unwind_Exception *)v287 ) - break; - v224 = std::operator<<>((std::ostream::sentry *)v318, "//"); - v225 = std::operator<<(v224, (int *)lpuexcpta + 4); - v226 = std::operator<<>(v225, ":"); - std::ostream::operator<<(v226, (int (__cdecl *)(void *))std::endl>); - WXML::DOMLib::WXMLDom::Print(*((_DWORD **)lpuexcpta + 10), 0, "//", v317); - } - } - std::stringbuf::str((int)v327, (int)v319); - std::string::operator=(a4, (int)v327); - std::string::_M_dispose((void **)v327); - // Compile - 85 - v266 = 0; -LABEL_117: - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v309); - WXML::NameAllocator::~NameAllocator((int)&v323); -LABEL_118: - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v292); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v290); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v282); - std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(v289[1]); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v286); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v317); - return v266; -} -// 406832: variable 'v228' is possibly undefined -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 406648: using guessed type char var_3E8[8]; -// 406648: using guessed type _DWORD var_534[2]; -// 406648: using guessed type char var_310[4]; -// 406648: using guessed type char var_240[4]; -// 406648: using guessed type char var_23C[196]; -// 406648: using guessed type char var_30C[196]; -// 406648: using guessed type char var_170[4]; -// 406648: using guessed type char var_3E0[4]; -// 406648: using guessed type int var_444[5]; -// 406648: using guessed type char var_3DC[196]; - -//----- (0040A124) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl WXML::Compiler::CompileLazy( - _DWORD *a1, // fileData - int *a2, // 错误信息 - _DWORD *a3, // 输出1 - _DWORD *a4, // 输出2 - _DWORD *a5, - _DWORD *a6, // vecFileContentMap - int *a7,// splitedData - _DWORD *a8,// mapData1 - char a9,// isLLA - int a10,// gwxMark - int a11,// mark - char a12,// '\n' - int *a13,// 'e' - int *a14,// const char off_5403C3[] = {'s','\0','e','\0'} - int *a15, // "gg" - int *a16,// "e_" - int *a17,// "d_" - int *a18,// "p_" - int a19, // '\0' - int a20, // "boxofchocolate" - int a21, // "$gdwx" - int *a22) // "f_" -{ - volatile signed __int32 **v22; // eax - _DWORD *v23; // eax - int v24; // edx - _DWORD *v25; // edx - _DWORD *v26; // eax - char *v27; // eax - int v28; // edx - int insert_hint_unique_pos; // eax - _DWORD *v30; // edx - bool v31; // zf - struct _Unwind_Exception *v32; // eax - struct _Unwind_Exception *v33; // edx - _DWORD *v34; // eax - int k; // eax - std::ostream::sentry *v36; // eax - int *m; // eax - std::ostream::sentry *v38; // eax - std::ostream::sentry *v39; // eax - std::ostream::sentry *v40; // eax - bool v41; // zf - struct _Unwind_Exception *v42; // eax - struct _Unwind_Exception *v43; // edx - struct _Unwind_Exception *v44; // eax - _DWORD *v45; // eax - volatile signed __int32 *v46; // edx - char *v47; // ecx - volatile signed __int32 **n; // eax - unsigned int v49; // edx - int v50; // edx - int *v51; // eax - int *v52; // eax - std::ostream::sentry *v53; // eax - std::ostream::sentry *v54; // eax - std::ostream::sentry *v55; // eax - char *v56; // eax - std::ostream::sentry *v57; // eax - std::ostream::sentry *v58; // eax - std::ostream::sentry *v59; // eax - std::ostream::sentry *v60; // eax - std::ostream::sentry *v61; // eax - _DWORD *v62; // eax - std::ostream::sentry *v63; // eax - std::ostream::sentry *v64; // eax - std::ostream::sentry *v65; // eax - std::ostream::sentry *v66; // eax - std::ostream::sentry *v67; // eax - std::ostream::sentry *v68; // eax - std::ostream::sentry *v69; // eax - std::ostream::sentry *v70; // eax - std::ostream::sentry *v71; // eax - std::ostream::sentry *v72; // eax - std::ostream::sentry *v73; // eax - std::ostream::sentry *v74; // eax - std::ostream::sentry *v75; // eax - std::ostream::sentry *v76; // eax - std::ostream::sentry *v77; // eax - std::ostream::sentry *v78; // eax - std::ostream::sentry *v79; // eax - std::ostream::sentry *v80; // eax - std::ostream::sentry *v81; // eax - std::ostream::sentry *v82; // eax - std::ostream::sentry *v83; // eax - std::ostream::sentry *v84; // eax - std::ostream::sentry *v85; // eax - std::ostream::sentry *v86; // eax - std::ostream::sentry *v87; // eax - std::ostream::sentry *v88; // eax - std::ostream::sentry *v89; // eax - std::ostream::sentry *v90; // eax - std::ostream::sentry *v91; // eax - std::ostream::sentry *v92; // eax - std::ostream::sentry *v93; // eax - std::ostream::sentry *v94; // eax - std::ostream::sentry *v95; // eax - std::ostream::sentry *v96; // eax - char *v97; // eax - std::__cxx11 *v98; // eax - std::ostream::sentry *v99; // eax - std::ostream::sentry *v100; // eax - std::ostream::sentry *v101; // eax - std::ostream::sentry *v102; // eax - std::ostream::sentry *v103; // eax - std::ostream::sentry *v104; // eax - std::ostream::sentry *v105; // eax - std::ostream::sentry *v106; // eax - std::ostream::sentry *v107; // eax - std::ostream::sentry *v108; // eax - std::ostream::sentry *v109; // eax - std::ostream::sentry *v110; // eax - std::ostream::sentry *v111; // eax - std::ostream::sentry *v112; // eax - std::ostream::sentry *v113; // eax - std::ostream::sentry *v114; // eax - _DWORD *v115; // eax - std::ostream::sentry *v116; // eax - std::ostream::sentry *v117; // eax - std::ostream::sentry *v118; // eax - std::ostream::sentry *v119; // eax - std::ostream::sentry *v120; // eax - std::ostream::sentry *v121; // eax - std::ostream::sentry *v122; // eax - std::ostream::sentry *v123; // eax - std::ostream::sentry *v124; // eax - int *mm; // eax - std::ostream::sentry *v126; // eax - std::ostream::sentry *v127; // eax - std::ostream::sentry *v128; // eax - std::ostream::sentry *v129; // eax - std::ostream::sentry *v130; // eax - int *nn; // eax - std::ostream::sentry *v132; // eax - char *v133; // eax - volatile signed __int32 **v134; // ecx - char *v135; // eax - char *v136; // eax - std::ostream::sentry *v137; // eax - int StrID; // eax - std::ostream::sentry *v139; // eax - int *v140; // eax - unsigned int *v141; // eax - std::ostream::sentry *v142; // eax - int v143; // eax - std::ostream::sentry *v144; // eax - std::ostream::sentry *v145; // eax - int v146; // edx - _DWORD *v147; // eax - int v148; // eax - int v149; // eax - int v150; // edx - _DWORD *v151; // eax - int v152; // eax - int v153; // eax - std::ostream::sentry *v154; // eax - std::ostream::sentry *v155; // eax - std::ostream::sentry *v156; // eax - std::ostream::sentry *v157; // eax - std::ostream::sentry *v158; // eax - std::ostream::sentry *v159; // eax - std::ostream::sentry *v160; // eax - std::ostream::sentry *v161; // eax - std::ostream::sentry *v162; // eax - std::ostream::sentry *v163; // eax - std::ostream::sentry *v164; // eax - std::ostream::sentry *v165; // eax - std::ostream::sentry *v166; // eax - std::ostream::sentry *v167; // eax - std::ostream::sentry *v168; // eax - std::ostream::sentry *v169; // eax - std::ostream::sentry *v170; // eax - std::ostream::sentry *v171; // eax - std::ostream::sentry *v172; // eax - std::ostream::sentry *v173; // eax - std::ostream::sentry *v174; // eax - std::ostream::sentry *v175; // eax - std::ostream::sentry *v176; // eax - std::ostream::sentry *v177; // eax - std::ostream::sentry *v178; // eax - std::ostream::sentry *v179; // eax - std::ostream::sentry *v180; // eax - std::ostream::sentry *v181; // eax - std::ostream::sentry *v182; // eax - std::ostream::sentry *v183; // eax - std::ostream::sentry *v184; // eax - std::ostream::sentry *v185; // eax - std::ostream::sentry *v186; // eax - std::ostream::sentry *v187; // eax - std::ostream::sentry *v188; // eax - std::ostream::sentry *v189; // eax - std::ostream::sentry *v190; // eax - std::ostream::sentry *v191; // eax - char *v192; // eax - std::ostream::sentry *v193; // eax - std::ostream::sentry *v194; // eax - std::ostream::sentry *v195; // eax - char *v196; // eax - char *v197; // eax - char *v198; // eax - std::ostream::sentry *v199; // eax - std::ostream::sentry *v200; // eax - std::ostream::sentry *v201; // eax - struct _Unwind_Exception *i5; // eax - char *v203; // eax - _DWORD *v205; // [esp+60h] [ebp-2C8h] - _DWORD *v206; // [esp+60h] [ebp-2C8h] - int v207; // [esp+64h] [ebp-2C4h] - WXML::NameAllocator *v208; // [esp+68h] [ebp-2C0h] - bool v209; // [esp+70h] [ebp-2B8h] - int v210; // [esp+74h] [ebp-2B4h] - _DWORD *v211; // [esp+74h] [ebp-2B4h] - int v212; // [esp+74h] [ebp-2B4h] - _DWORD *v213; // [esp+74h] [ebp-2B4h] - _DWORD *v214; // [esp+74h] [ebp-2B4h] - int v215; // [esp+78h] [ebp-2B0h] - int v216; // [esp+78h] [ebp-2B0h] - _DWORD *v217; // [esp+78h] [ebp-2B0h] - int v218; // [esp+78h] [ebp-2B0h] - char *v219; // [esp+7Ch] [ebp-2ACh] - char *v220; // [esp+80h] [ebp-2A8h] - char *v221; // [esp+88h] [ebp-2A0h] - void *v222; // [esp+8Ch] [ebp-29Ch] - void *v223; // [esp+90h] [ebp-298h] - int v224; // [esp+94h] [ebp-294h] - bool v225; // [esp+ABh] [ebp-27Dh] - int v226; // [esp+ACh] [ebp-27Ch] - int v227; // [esp+ACh] [ebp-27Ch] - int v228; // [esp+ACh] [ebp-27Ch] - unsigned int *v229; // [esp+ACh] [ebp-27Ch] - _DWORD *v230; // [esp+ACh] [ebp-27Ch] - unsigned int v231; // [esp+ACh] [ebp-27Ch] - unsigned int i3; // [esp+ACh] [ebp-27Ch] - _DWORD *v233; // [esp+B0h] [ebp-278h] - int v234; // [esp+B4h] [ebp-274h] - int v235; // [esp+B4h] [ebp-274h] - char *v236; // [esp+B8h] [ebp-270h] - WXML::EXPRLib::Parser *v237; // [esp+BCh] [ebp-26Ch] - WXML::EXPRLib::Parser *v238; // [esp+BCh] [ebp-26Ch] - WXML::EXPRLib::Parser *v239; // [esp+BCh] [ebp-26Ch] - WXML::EXPRLib::Parser *v240; // [esp+BCh] [ebp-26Ch] - WXML::EXPRLib::Parser *v241; // [esp+BCh] [ebp-26Ch] - int ii; // [esp+BCh] [ebp-26Ch] - WXML::EXPRLib::Parser *v243; // [esp+BCh] [ebp-26Ch] - char *v244; // [esp+C0h] [ebp-268h] - WXML::NameAllocator *v245; // [esp+C0h] [ebp-268h] - WXML::NameAllocator *i2; // [esp+C0h] [ebp-268h] - _DWORD *Block; // [esp+C4h] [ebp-264h] - int v248; // [esp+C8h] [ebp-260h] - WXML::DOMLib::Parser *v249; // [esp+CCh] [ebp-25Ch] - int *v250; // [esp+CCh] [ebp-25Ch] - std::ostream::sentry *v251; // [esp+CCh] [ebp-25Ch] - std::ostream::sentry *v252; // [esp+CCh] [ebp-25Ch] - std::ostream::sentry *v253; // [esp+CCh] [ebp-25Ch] - std::ostream::sentry *v254; // [esp+CCh] [ebp-25Ch] - std::ostream::sentry *v255; // [esp+CCh] [ebp-25Ch] - char *v256; // [esp+CCh] [ebp-25Ch] - std::ostream::sentry *v257; // [esp+CCh] [ebp-25Ch] - struct _Unwind_Exception *v258; // [esp+D0h] [ebp-258h] - char v259; // [esp+D0h] [ebp-258h] - char *v260; // [esp+D0h] [ebp-258h] - struct _Unwind_Exception *v261; // [esp+D0h] [ebp-258h] - void *v262; // [esp+D0h] [ebp-258h] - char *v263; // [esp+D0h] [ebp-258h] - volatile signed __int32 *v264; // [esp+D0h] [ebp-258h] - int *kk; // [esp+D0h] [ebp-258h] - int *v266; // [esp+D0h] [ebp-258h] - int *v267; // [esp+D0h] [ebp-258h] - _DWORD *v268; // [esp+D0h] [ebp-258h] - WXML::NameAllocator *i1; // [esp+D0h] [ebp-258h] - _DWORD *v270; // [esp+D0h] [ebp-258h] - int *v271; // [esp+D0h] [ebp-258h] - int *i4; // [esp+D0h] [ebp-258h] - bool v273; // [esp+D0h] [ebp-258h] - int i; // [esp+D4h] [ebp-254h] - _DWORD *v275; // [esp+D4h] [ebp-254h] - struct _Unwind_Exception *v276; // [esp+D4h] [ebp-254h] - int *v277; // [esp+D4h] [ebp-254h] - int v278; // [esp+D4h] [ebp-254h] - void **v279; // [esp+D4h] [ebp-254h] - int v280; // [esp+D4h] [ebp-254h] - int v281; // [esp+D4h] [ebp-254h] - int v282; // [esp+D4h] [ebp-254h] - struct _Unwind_Exception *lpuexcpt; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcpta; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcpto; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptb; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptc; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptd; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcpte; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptf; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptg; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcpth; // [esp+D8h] [ebp-250h] - char *lpuexcpti; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptj; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptp; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptk; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptl; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptm; // [esp+D8h] [ebp-250h] - struct _Unwind_Exception *lpuexcptn; // [esp+D8h] [ebp-250h] - int v300[2]; // [esp+118h] [ebp-210h] BYREF - int v301; // [esp+120h] [ebp-208h] BYREF - _DWORD v302[2]; // [esp+124h] [ebp-204h] BYREF - _DWORD *v303; // [esp+12Ch] [ebp-1FCh] - int v304; // [esp+138h] [ebp-1F0h] BYREF - _DWORD v305[2]; // [esp+13Ch] [ebp-1ECh] BYREF - void *v306; // [esp+144h] [ebp-1E4h] - int v307; // [esp+150h] [ebp-1D8h] BYREF - _DWORD v308[5]; // [esp+154h] [ebp-1D4h] BYREF - int v309; // [esp+168h] [ebp-1C0h] BYREF - _DWORD v310[5]; // [esp+16Ch] [ebp-1BCh] BYREF - int v311; // [esp+180h] [ebp-1A8h] BYREF - _DWORD v312[5]; // [esp+184h] [ebp-1A4h] BYREF - int v313; // [esp+198h] [ebp-190h] BYREF - _DWORD v314[4]; // [esp+19Ch] [ebp-18Ch] BYREF - int v315; // [esp+1ACh] [ebp-17Ch] - int v316; // [esp+1B0h] [ebp-178h] BYREF - int v317[5]; // [esp+1B4h] [ebp-174h] BYREF - int v318[6]; // [esp+1C8h] [ebp-160h] BYREF - int v319; // [esp+1E0h] [ebp-148h] BYREF - volatile signed __int32 *v320[5]; // [esp+1E4h] [ebp-144h] BYREF - int v321[6]; // [esp+1F8h] [ebp-130h] BYREF - void *j; // [esp+210h] [ebp-118h] BYREF - struct _Unwind_Exception *v323; // [esp+214h] [ebp-114h] - int v324; // [esp+218h] [ebp-110h] - int jj; // [esp+228h] [ebp-100h] BYREF - volatile signed __int32 *v326; // [esp+22Ch] [ebp-FCh] BYREF - volatile signed __int32 *v327; // [esp+230h] [ebp-F8h] - int v328; // [esp+240h] [ebp-E8h] BYREF - volatile signed __int32 *v329; // [esp+244h] [ebp-E4h] BYREF - char v330[4]; // [esp+248h] [ebp-E0h] BYREF - volatile signed __int32 **v331; // [esp+24Ch] [ebp-DCh] - unsigned int v332; // [esp+254h] [ebp-D4h] -/* - _DWORD *a1, // fileData - int *a2, // 错误信息 - _DWORD *a3, // 输出1 - _DWORD *a4, // 输出2 - _DWORD *a5, - _DWORD *a6, // vecFileContentMap - int *a7,// splitedData - _DWORD *a8,// mapData1 - char a9,// isLLA - int a10,// gwxMark - int a11,// mark - char a12,// '\n' - int *a13,// 'e' - int *a14,// const char off_5403C3[] = {'s','\0','e','\0'} - int *a15, // "gg" - int *a16,// "e_" - int *a17,// "d_" - int *a18,// "p_" - int a19, // '\0' - int a20, // "boxofchocolate" - int a21, // "$gdwx" - int *a22) // "f_" -*/ - std::_Rb_tree_header::_Rb_tree_header(v302); - std::_Rb_tree_header::_Rb_tree_header(v305); - std::_Rb_tree_header::_Rb_tree_header(v308); - std::_Rb_tree_header::_Rb_tree_header(v310); - std::_Rb_tree_header::_Rb_tree_header(v312); - // a1.offset_12 - lpuexcpt = (struct _Unwind_Exception *)a1[3]; - // a1.offset_4 - v249 = (WXML::DOMLib::Parser *)(a1 + 1); - // mark - 1 - while ( lpuexcpt != v249 ) - { - // 13个参数 - v258 = WXML::Compiler::ParseSource( - v249, - (int *)lpuexcpt + 4, // 文件名 - (char **)lpuexcpt + 10, // 源码? - a12, // '\n' - a10, // gwxMark - a22, // "f_" - a1, // fileData - a2, // 错误信息 - &v304, // map - &v309, // ??? - &v311, // ??? - (a11 & 4) != 0, // a11 -> mark - (a11 & 0x20) != 0); - // 源码解析失败,LABEL_187 -> return v258 - if ( v258 ) - goto LABEL_187; // 销毁数据,返回 - // 递增 - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcpt); - } - // mark - 5 - v223 = operator new(0xD0u); - // 输出流 - std::basic_stringstream,std::allocator>::basic_stringstream((int)v223); - - zcc::shared_ptr,std::allocator>>::shared_ptr(&jj, (int)v223); - - std::string::basic_string((void **)&v328, "__COMMON__"); - v22 = (volatile signed __int32 **)std::map,std::allocator>>>::operator[]( - &v301, - &v328); - // v22 = v301["__COMMON__"] = jj - *v22 = (volatile signed __int32 *)jj; - // v301["__COMMON__"] = jj - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v22 + 1, v326); - std::string::_M_dispose((void **)&v328); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v326); - jj = 0; - v326 = 0; - v327 = 0; - - std::string::basic_string((void **)&v328, "__COMMON__"); - v23 = std::map>::operator[](&v307, &v328); - // v23 = v307["__COMMON__"] - - std::vector::operator=(v23, &jj); - // v307["__COMMON__"] = jj - - std::string::_M_dispose((void **)&v328); - std::vector::~vector((void ***)&jj, v24); - - std::string::basic_string((void **)&v328, "__COMMON__"); - v226 = *std::map,std::allocator>>>::operator[]( - &v301, - &v328); - // v226 = v301["__COMMON__"] - - std::string::_M_dispose((void **)&v328); - - // a7.offset_4 a7.end() - v237 = (WXML::EXPRLib::Parser *)a7[1]; - - /* - _DWORD *a1, // fileData - int *a2, // 错误信息 - _DWORD *a3, // 输出1 - _DWORD *a4, // 输出2 - _DWORD *a5, - _DWORD *a6, // vecFileContentMap - int *a7,// splitedData - _DWORD *a8,// mapData1 - char a9,// isLLA - int a10,// gwxMark - int a11,// mark - char a12,// '\n' - int *a13,// 'e' - int *a14,// const char off_5403C3[] = {'s','\0','e','\0'} - int *a15, // "gg" - int *a16,// "e_" - int *a17,// "d_" - int *a18,// "p_" - int a19, // '\0' - int a20, // "boxofchocolate" - int a21, // "$gdwx" - int *a22) // "f_" -*/ - - // mark - 10 - // splitedData - for ( i = *a7; (WXML::EXPRLib::Parser *)i != v237; i += 24 ) - { - v222 = operator new(0xD0u); - std::basic_stringstream,std::allocator>::basic_stringstream((int)v222); - zcc::shared_ptr,std::allocator>>::shared_ptr( - &v328, - (int)v222); - lpuexcpta = (struct _Unwind_Exception *)std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>> - ::lower_bound( - &v301, - i); - if ( lpuexcpta == (struct _Unwind_Exception *)v302 || (unsigned __int8)std::operator<(i, (int)lpuexcpta + 16) ) - { - Block = operator new(0x30u); - std::string::basic_string((char *)Block + 16, i); - Block[10] = 0; - Block[11] = 0; - lpuexcpta = (struct _Unwind_Exception *)std::_Rb_tree< - std::string, - std::pair,std::allocator>>>, - std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>> - ::_M_get_insert_hint_unique_pos( - &v301, - lpuexcpta, - (int)(Block + 4)); - if ( v25 ) - { - lpuexcpta = (struct _Unwind_Exception *)std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>> - ::_M_insert_node( - &v301, - (int)lpuexcpta, - v25, - Block); - } - else - { - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)Block + 11); - std::string::_M_dispose((void **)Block + 4); - operator delete(Block); - } - } - *((_DWORD *)lpuexcpta + 10) = v328; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)lpuexcpta + 11, v329); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v329); - std::operator+((int)&jj, "./", i); - v26 = std::string::append(&jj, ".wxml"); - std::string::basic_string(&v328, v26); - // v328 ./*******.wxml - j = 0; - v323 = 0; - v324 = 0; - j = std::_Vector_base::_M_allocate(1u); - lpuexcpto = (struct _Unwind_Exception *)((char *)j + 24); - v324 = (int)j + 24; - std::string::basic_string((char *)j, (int)&v328); - v323 = lpuexcpto; - - v27 = std::map>::operator[](&v307, i); - std::vector::operator=(v27, (int *)&j); - // v307[i] = j - - std::vector::~vector((void ***)&j, v28); - std::string::_M_dispose((void **)&v328); - std::string::_M_dispose((void **)&jj); - } - // for end - // mark - 15 - - v238 = (WXML::EXPRLib::Parser *)a7[1]; // v238 - end? - // a7 splitedData - lpuexcptb = (struct _Unwind_Exception *)*a7; - std::_Rb_tree_header::_Rb_tree_header(v314); - // mark - 20 - // 是否splitedData结尾 - // a7.end() != a7.begin() - while ( v238 != lpuexcptb ) - { - insert_hint_unique_pos = std::_Rb_tree,std::less,std::allocator> - ::_M_get_insert_hint_unique_pos( - &v313, - v314, - (int)lpuexcptb); - v275 = v30; - if ( v30 ) - { - v259 = v30 == v314 || insert_hint_unique_pos != 0; - if ( !v259 ) - v259 = std::operator<((int)lpuexcptb, (int)(v30 + 4)); - v221 = (char *)operator new(0x28u); - std::string::basic_string(v221 + 16, (int)lpuexcptb); - std::_Rb_tree_insert_and_rebalance(v259, v221, v275, v314); - ++v315; - } - - // 下一个 - lpuexcptb = (struct _Unwind_Exception *)((char *)lpuexcptb + 24); - } - // while end - // mark - 25 - - // v304 - for ( j = v306; - j != v305; - std::_Rb_tree_iterator>> - ::operator++((int *)&j) ) - { - // j.offset_(16 * 4) -> j.offset_64 - v260 = (char *)j + 16; - // - std::string::substr(&jj, (_DWORD *)j + 4/*j.offset_16*/, 2u, *((_DWORD *)j + 5) - 7); - lpuexcptc = (struct _Unwind_Exception *)v314[1]; - v276 = (struct _Unwind_Exception *)v314; - while ( lpuexcptc ) - { - v31 = (unsigned __int8)std::operator<((int)lpuexcptc + 16, (int)&jj) == 0; - v32 = v276; - v33 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcptc + 3); - if ( v31 ) - { - v33 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcptc + 2); - if ( v31 ) - v32 = lpuexcptc; - } - lpuexcptc = v33; - v276 = v32; - } - if ( v276 == (struct _Unwind_Exception *)v314 || (unsigned __int8)std::operator<((int)&jj, (int)v276 + 16) ) - { - std::string::basic_string((void **)&v328, "__COMMON__"); - v34 = std::map>::operator[](&v307, &v328); - // v307[v328].push_back(v260) = v307["__COMMON__"].push_back(v260) - std::vector::push_back((int)v34, (int)v260); - std::string::_M_dispose((void **)&v328); - } - std::string::_M_dispose((void **)&jj); - } - // mark - 30 - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v328); - std::operator<<>( - (std::ostream::sentry *)v330, - "WXML::Compiler::CompileLazy: file name to paths:\n"); - std::operator<<>((std::ostream::sentry *)v330, " all files: [ "); - for ( k = a1[3]; ; k = std::_Rb_tree_increment((int)lpuexcptd) ) - { - lpuexcptd = (struct _Unwind_Exception *)k; - if ( (WXML::DOMLib::Parser *)k == v249 ) - break; - v36 = std::operator<<((std::ostream::sentry *)v330, (int *)(k + 16)); - std::operator<<>(v36, " "); - } - - // mark - 35 - std::operator<<>((std::ostream::sentry *)v330, "];\n"); - // _DWORD v308[5]; - for ( m = (int *)v308[2]; ; m = (int *)std::_Rb_tree_increment((int)v277) ) - { - v277 = m; - if ( m == v308 ) - break; - // key - v38 = std::operator<<>((std::ostream::sentry *)v330, " "); - v39 = std::operator<<(v38, v277 + 4); - std::operator<<>(v39, ": [ "); - v239 = (WXML::EXPRLib::Parser *)v277[11]; - v250 = (int *)v277[10]; - // 遍历value - while ( 1 ) - { - v234 = (int)v250; - if ( v239 == (WXML::EXPRLib::Parser *)v250 ) - break; - v40 = std::operator<<((std::ostream::sentry *)v330, v250); - std::operator<<>(v40, " "); - v261 = (struct _Unwind_Exception *)v305[1]; - lpuexcpte = (struct _Unwind_Exception *)v305; - // v261递增 - while ( v261 ) - { - v41 = (unsigned __int8)std::operator<((int)v261 + 16, (int)v250) == 0; - v42 = lpuexcpte; - v43 = (struct _Unwind_Exception *)*((_DWORD *)v261 + 3); - if ( v41 ) - { - v43 = (struct _Unwind_Exception *)*((_DWORD *)v261 + 2); - if ( v41 ) - v42 = v261; - } - v261 = v43; - lpuexcpte = v42; - } - // splitedData中有没有 - if ( lpuexcpte != (struct _Unwind_Exception *)v305 ) - { - v31 = (unsigned __int8)std::operator<((int)v250, (int)lpuexcpte + 16) == 0; - v44 = (struct _Unwind_Exception *)v305; - if ( v31 ) - v44 = lpuexcpte; - lpuexcpte = v44; - } - v250 += 6; - if ( lpuexcpte == (struct _Unwind_Exception *)v305 ) - { - std::operator+((int)&jj, "WXML file not found: ", v234); - std::string::operator=((unsigned __int8 **)a2, (int)&jj); - std::string::_M_dispose((void **)&jj); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v328); - v258 = (struct _Unwind_Exception *)-1152; - goto LABEL_186; // 销毁数据,返回v258 - } - } - std::operator<<>((std::ostream::sentry *)v330, "];\n"); - } - - // mark - 40 - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v328); - for ( j = v306; - ; - std::_Rb_tree_iterator>>::operator++((int *)&j) ) - { - lpuexcptf = (struct _Unwind_Exception *)j; - if ( j == v305 ) - break; - std::_Rb_tree_header::_Rb_tree_header(&v329); - v262 = (char *)lpuexcptf + 16; // std::string - WXML::DOMLib::recurseDependencies((int *)lpuexcptf + 10, (int *)lpuexcptf + 4, &v328); - lpuexcptg = (struct _Unwind_Exception *)v332; - if ( v332 > 0x5555555 ) - std::__throw_length_error((std::length_error *)"cannot create std::vector larger than max_size()"); - jj = 0; - v326 = 0; - v327 = 0; - v45 = std::_Vector_base::_M_allocate(v332); - v278 = (int)v45; // std::vector - jj = (int)v45; - v46 = &v45[6 * (_DWORD)lpuexcptg]; - v327 = v46; - while ( lpuexcptg ) - { - v47 = (char *)(v45 + 2); - v45[1] = 0; - v45 += 6; - *(v45 - 6) = v47; - *((_BYTE *)v45 - 16) = 0; - lpuexcptg = (struct _Unwind_Exception *)((char *)lpuexcptg - 1); - } - v326 = v46; - for ( n = v331; ; n = (volatile signed __int32 **)std::_Rb_tree_increment((int)lpuexcpth) ) - { - lpuexcpth = (struct _Unwind_Exception *)n; - if ( n == &v329 ) - break; - // v278.assign(n+4) - std::string::_M_assign(v278, (int)(n + 4)); - v278 += 24; // v278移到下一个元素 - } - lpuexcpti = std::map>::operator[](a5, (int)v262); - // a5[v262] - if ( lpuexcpti != (char *)&jj )// jj std::vector - { - v240 = (WXML::EXPRLib::Parser *)v326; - v263 = (char *)jj; - v279 = *(void ***)lpuexcpti; - v251 = (std::ostream::sentry *)((char *)v326 - jj); - v49 = *((_DWORD *)lpuexcpti + 2) - *(_DWORD *)lpuexcpti; - v235 = -1431655765 * (((int)v326 - jj) >> 3); - if ( v49 >= (unsigned int)v326 - jj ) - { - v241 = (WXML::EXPRLib::Parser *)*((_DWORD *)lpuexcpti + 1); - if ( (unsigned int)v251 > v241 - (WXML::EXPRLib::Parser *)v279 ) - { - // ii = v279.size() - for ( ii = -1431655765 * ((v241 - (WXML::EXPRLib::Parser *)v279) >> 3); ii > 0; --ii ) - { - std::string::_M_assign((int)v279, (int)v263); - v263 += 24; - v279 += 6; - } - v264 = v326; - v281 = jj + *((_DWORD *)lpuexcpti + 1) - *(_DWORD *)lpuexcpti; - v219 = (char *)*((_DWORD *)lpuexcpti + 1); - while ( v264 != (volatile signed __int32 *)v281 ) - { - std::string::basic_string(v219, v281); - v281 += 24; - v219 += 24; - } - } - else - { - while ( v235 > 0 ) - { - std::string::_M_assign((int)v279, (int)v263); - v263 += 24; - v279 += 6; - --v235; - } - while ( v241 != (WXML::EXPRLib::Parser *)v279 ) - { - std::string::_M_dispose(v279); - v279 += 6; - } - } - } - else - { - v236 = (char *)std::_Vector_base::_M_allocate(-1431655765 * (((int)v326 - jj) >> 3)); - v280 = (int)v263; - v220 = v236; - while ( v240 != (WXML::EXPRLib::Parser *)v280 ) - { - std::string::basic_string(v220, v280); - v220 += 24; - v280 += 24; - } - std::_Destroy_aux::__destroy(v50, *(void ***)lpuexcpti, *((void ***)lpuexcpti + 1)); - if ( *(_DWORD *)lpuexcpti ) - operator delete(*(void **)lpuexcpti); - *(_DWORD *)lpuexcpti = v236; - *((_DWORD *)lpuexcpti + 2) = (char *)v251 + (_DWORD)v236; - } - *((_DWORD *)lpuexcpti + 1) = (char *)v251 + *(_DWORD *)lpuexcpti; - } - std::vector::~vector((void ***)&jj, v49); - std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&v328); - } - // mark - 45 - std::_Rb_tree_header::_Rb_tree_header(v317); - for ( jj = (int)v306; - ; - std::_Rb_tree_iterator>>::operator++(&jj) ) - { - lpuexcptj = (struct _Unwind_Exception *)jj; - // end就退出循环 - if ( (_DWORD *)jj == v305 ) - break; - WXML::DOMLib::WXMLDom::RewriteTree(*(_DWORD *)(jj + 40)); - v282 = *((_DWORD *)lpuexcptj + 10); - std::string::basic_string((void **)&v328, (char *)off_550B3F); // "ALL" - v51 = std::map>::operator[](a6, &v328); - WXML::DOMLib::WXMLDom::MarkIfHasDescendant(v282, v51); - std::string::_M_dispose((void **)&v328); - if ( a9 ) - { - lpuexcptp = (struct _Unwind_Exception *)*((_DWORD *)lpuexcptj + 10); - std::string::basic_string((void **)&v328, (char *)off_550B3F); - v52 = std::map>::operator[](a6, &v328); - // a6["ALL"] - WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(lpuexcptp, v52); - std::string::_M_dispose((void **)&v328); - } - } - // mark - 50 - lpuexcptk = (struct _Unwind_Exception *)(v226 + 8); - if ( a9 ) - std::string::basic_string((void **)&jj, "global"); - else - std::string::basic_string((void **)&jj, "__globalThis"); - WXML::Compiler::GetVersionInfo((int)&v328, &jj); - v53 = std::operator<<(lpuexcptk, &v328); - std::ostream::operator<<(v53, (int (__cdecl *)(void *))std::endl>); - std::string::_M_dispose((void **)&v328); - std::string::_M_dispose((void **)&jj); - WXML::NameAllocator::NameAllocator(&v328, a19, a20); - v54 = std::operator<<>(lpuexcptk, "var $gwxc"); - std::operator<<>(v54, a12); - v55 = std::operator<<>(lpuexcptk, "var $gaic={}"); - std::operator<<>(v55, a12); - if ( !a9 ) - std::operator<<>( - lpuexcptk, - "var outerGlobal=typeof __globalThis==='undefined'?window:__globalThis;"); - v224 = 0; - // v301 ssDataMap - v233 = v303; - v209 = (a11 & 2) != 0; - // mark - 55 - // v233 会递增 - while ( v233 != v302 ) - { - v243 = (WXML::EXPRLib::Parser *)v233[10]; - v248 = (int)(v233 + 4); - v225 = std::operator==((int)(v233 + 4), "__COMMON__"); - if ( v225 ) - { - // a10 gwxMark - std::string::basic_string((char *)v318, a10); - } - else - { - std::to_string((std::__cxx11 *)&jj, v224); - std::operator+((char *)&j, a10, "_XC_"); - // std::string j = a10 + "_XC_" - std::operator+(v318, &j, (unsigned int *)&jj); - // std::string v318 = j + jj = j + v224 - std::string::_M_dispose(&j); - std::string::_M_dispose((void **)&jj); - ++v224; - } - // v56 = a4[v248] - v56 = std::map::operator[](a4, v248); - // a4[v248].assign(v318) - std::string::_M_assign((int)v56, (int)v318); - lpuexcptl = (WXML::EXPRLib::Parser *)((char *)v243 + 8); - if ( (a11 & 2) != 0 ) - { - v57 = std::operator<<>((WXML::EXPRLib::Parser *)((char *)v243 + 8), "var cs = cs || [];"); - std::operator<<>(v57, a12); - } - v58 = std::operator<<(lpuexcptl, v318); - v59 = std::operator<<>( - v58, - "=function(_,_v,_n,_p,_s,_wp,_wl,$gwn,$gwl,$gwh,wh,$gstack,$gwrt,gra,grb,TestTest,wfor,_ca,_da,_r,_rz,_o,_oz," - "_1,_1z,_2,_2z,_m,_mz,nv_getDate,nv_getRegExp,nv_console,nv_parseInt,nv_parseFloat,nv_isNaN,nv_isFinite,nv_de" - "codeURI,nv_decodeURIComponent,nv_encodeURI,nv_encodeURIComponent,$gdc,nv_JSON,_af,_gv,_ai,_grp,_gd,_gapi,$ix" - "c,_ic,_w,_ev,_tsd){"); - v60 = std::operator<<>(v59, "return function(path,global){"); - std::operator<<>(v60, a12); - std::operator<<>( - lpuexcptl, - "if(typeof global==='undefined'){if (typeof __GWX_GLOBAL__==='undefined')global={};else global=__GWX_GLOBAL__;}"); - std::operator<<>(lpuexcptl, "if(typeof __WXML_GLOBAL__ === 'undefined') {"); - v61 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__={};"); - std::operator<<>(v61, a12); - // a11 mark - if ( (a11 & 0x80) != 0 ) - { - std::string::basic_string((void **)&jj, "life_cycle_callback_content"); - v252 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a8, - (int)&jj); - std::string::_M_dispose((void **)&jj); - if ( a8 + 1 != (_DWORD *)v252 ) - { - std::string::basic_string((void **)&jj, "life_cycle_callback_content"); - v62 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a8, - (int)&jj); - std::operator<<(lpuexcptl, v62 + 10); - std::string::_M_dispose((void **)&jj); - } - } - std::operator<<>(lpuexcptl, "}"); - v63 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};"); - std::operator<<>(v63, a12); - if ( v225 && !std::operator==(a10, "$gwx") && (a11 & 0x60) == 0 ) - { - v64 = std::operator<<>(lpuexcptl, "$gwx('init', global);"); - std::operator<<>(v64, a12); - } - v65 = std::operator<<>(lpuexcptl, "var "); - v66 = std::operator<<(v65, a16); - v67 = std::operator<<>(v66, "={}"); - std::operator<<>(v67, a12); - v68 = std::operator<<>(lpuexcptl, "if(typeof(global.entrys)==='undefined')global.entrys={};"); - v69 = std::operator<<(v68, a16); // eMark - v70 = std::operator<<>(v69, "=global.entrys;"); - std::operator<<>(v70, a12); - v71 = std::operator<<>(lpuexcptl, "var "); - v72 = std::operator<<(v71, a17); - v73 = std::operator<<>(v72, "={}"); - std::operator<<>(v73, a12); - v74 = std::operator<<>( - lpuexcptl, - "if(typeof(global.defines)==='undefined')global.defines={};"); - v75 = std::operator<<(v74, a17); - v76 = std::operator<<>(v75, "=global.defines;"); - std::operator<<>(v76, a12); - v77 = std::operator<<>(lpuexcptl, "var "); - v78 = std::operator<<(v77, a22); // fMark - v79 = std::operator<<>(v78, "={}"); - std::operator<<>(v79, a12); - v80 = std::operator<<>( - lpuexcptl, - "if(typeof(global.modules)==='undefined')global.modules={};"); - v81 = std::operator<<(v80, a22); - v82 = std::operator<<>(v81, "=global.modules || {};"); - std::operator<<>(v82, a12); - v83 = std::operator<<>(lpuexcptl, "var "); - v84 = std::operator<<(v83, a18); - v85 = std::operator<<>(v84, "={}"); - std::operator<<>(v85, a12); - if ( (a11 & 2) != 0 ) - { - v86 = std::operator<<>(lpuexcptl, "var cs = cs || [];"); - std::operator<<>(v86, a12); - } - v87 = std::operator<<>( - lpuexcptl, - "__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}"); - std::operator<<>(v87, a12); - v88 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};"); - std::operator<<>(v88, a12); - v89 = std::operator<<>( - lpuexcptl, - "__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};"); - std::operator<<>(v89, a12); - v90 = std::operator<<>(lpuexcptl, "var z=__WXML_GLOBAL__.ops_set."); - v91 = std::operator<<(v90, v318); - v92 = std::operator<<>(v91, " || [];"); - std::operator<<>(v92, a12); - if ( (a11 & 4) != 0 ) - { - v93 = std::operator<<>( - lpuexcptl, - "__WXML_GLOBAL__.debuginfo_set = __WXML_GLOBAL__.debuginfo_set || {};"); - std::operator<<>(v93, a12); - v94 = std::operator<<>(lpuexcptl, "var debugInfo=__WXML_GLOBAL__.debuginfo_set."); - v95 = std::operator<<(v94, v318); - v96 = std::operator<<>(v95, " || [];"); - std::operator<<>(v96, a12); - } - v97 = std::map>::operator[](&v307, v248); - // v307[v248] - v253 = 0; - v227 = *((_DWORD *)v97 + 1); // end - for ( kk = *(int **)v97; kk != (int *)v227; kk += 6 ) - { - v244 = std::map>::operator[](&v304, (int)kk); - std::_Rb_tree_header::_Rb_tree_header(v320); - v253 = (std::ostream::sentry *)((char *)v253 + 1); - v300[1] = 0; - v300[0] = 0; - std::to_string(v98, (unsigned int)v253); - std::operator+((char *)&j, (int)v318, "_"); - std::operator+(v321, &j, (unsigned int *)&jj); - std::string::_M_dispose(&j); - std::string::_M_dispose((void **)&jj); - std::operator+((int)&j, "gz", (int)v321); - v99 = std::operator<<>(lpuexcptl, "function "); - v100 = std::operator<<(v99, (int *)&j); - v101 = std::operator<<>(v100, "(){"); - std::operator<<>(v101, a12); - v102 = std::operator<<>(lpuexcptl, "if( __WXML_GLOBAL__.ops_cached."); - v103 = std::operator<<(v102, v321); - std::operator<<>(v103, ")"); - v104 = std::operator<<>(lpuexcptl, "return __WXML_GLOBAL__.ops_cached."); - v105 = std::operator<<(v104, v321); - std::operator<<>(v105, a12); - v106 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.ops_cached."); - v107 = std::operator<<(v106, v321); - v108 = std::operator<<>(v107, "=[];"); - std::operator<<>(v108, a12); - std::operator<<>(lpuexcptl, "(function(z){var a=11;"); - if ( (a11 & 4) != 0 ) - v109 = std::operator<<>( - lpuexcptl, - "function Z(ops,debugLine){z.push(['11182016',ops,debugLine])}"); - else - v109 = std::operator<<>(lpuexcptl, "function Z(ops){z.push(ops)}"); - std::operator<<>(v109, a12); - WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( - *(_DWORD **)v244, - kk, - (unsigned int *)a2, - v243, - &v319, - v300, - (a11 & 4) != 0, - (int)a8); - v110 = std::operator<<>(lpuexcptl, "})(__WXML_GLOBAL__.ops_cached."); - v111 = std::operator<<(v110, v321); - std::operator<<>(v111, ");"); - v112 = std::operator<<>(lpuexcptl, "return __WXML_GLOBAL__.ops_cached."); - v113 = std::operator<<(v112, v321); - std::operator<<>(v113, a12); - v114 = std::operator<<>(lpuexcptl, "}"); - std::operator<<>(v114, a12); - std::string::basic_string((void **)&jj, "get_page_z_name"); - v115 = std::map::operator[]((_DWORD *)(*(_DWORD *)v244 + 272), &jj); - // ["get_page_z_name"].assign(j) - std::string::_M_assign((int)v115, (int)&j); - std::string::_M_dispose((void **)&jj); - std::string::_M_dispose(&j); - std::string::_M_dispose((void **)v321); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v319); - } - v116 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.ops_set."); - v117 = std::operator<<(v116, v318); - v118 = std::operator<<>(v117, "=z;"); - std::operator<<>(v118, a12); - v119 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.ops_init."); - v120 = std::operator<<(v119, v318); - v121 = std::operator<<>(v120, "=true;"); - std::operator<<>(v121, a12); - // a11 mark - if ( (a11 & 4) != 0 ) - { - v122 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.debuginfo_set."); - v123 = std::operator<<(v122, v318); - v124 = std::operator<<>(v123, "=debugInfo;"); - std::operator<<>(v124, a12); - } - if ( v225 ) - { - std::operator<<>(lpuexcptl, "var nv_require=function(){var nnm={"); - // v311 - for ( mm = (int *)v312[2]; ; mm = (int *)std::_Rb_tree_increment((int)v266) ) - { - v266 = mm; - if ( mm == v312 ) // end - break; - v254 = std::operator<<>(lpuexcptl, 34); // '"' - WXML::Rewrite::ToStringCode((int)&jj, v266 + 4); - v126 = std::operator<<(v254, &jj); - v127 = std::operator<<>(v126, 34); - std::operator<<>(v127, ":np_"); - v128 = (std::ostream::sentry *)std::ostream::operator<<(v266[10]); - std::operator<<>(v128, ","); - std::string::_M_dispose((void **)&jj); - } - std::operator<<>(lpuexcptl, "};var nom={};return function(n){"); - std::operator<<>( - lpuexcptl, - "if(n[0]==='p'&&n[1]==='_'&&f_[n.slice(2)])return f_[n.slice(2)];"); - std::operator<<>(lpuexcptl, "return function(){if(!nnm[n]) return undefined;"); - std::operator<<>(lpuexcptl, "try{if(!nom[n])nom[n]=nnm[n]();return nom[n];}"); - std::operator<<>(lpuexcptl, "catch(e){"); - std::operator<<>(lpuexcptl, "e.message=e.message.replace(/nv_/g,'');"); - std::operator<<>(lpuexcptl, "var tmp = e.stack.substring(0,e.stack.lastIndexOf(n));"); - std::operator<<>(lpuexcptl, "e.stack = tmp.substring(0,tmp.lastIndexOf('\\n'));"); - std::operator<<>(lpuexcptl, "e.stack = e.stack.replace(/\\snv_/g,' ');"); - std::operator<<>(lpuexcptl, "e.stack = $gstack(e.stack);"); - v129 = std::operator<<>( - lpuexcptl, - "e.stack += '\\n at ' + n.substring(2);console.error(e);}"); - std::operator<<>(v129, a12); - v130 = std::operator<<>(lpuexcptl, "}}}()"); - std::operator<<>(v130, a12); - for ( nn = (int *)v310[2]; ; nn = (int *)std::_Rb_tree_increment((int)v267) ) - { - v267 = nn; - if ( nn == v310 ) - break; - v132 = std::operator<<(lpuexcptl, nn + 10); - std::operator<<>(v132, a12); - } - } - v268 = operator new(0x24u); - std::_Rb_tree_header::_Rb_tree_header(v268 + 1); - v268[6] = 0; - v268[7] = 0; - v268[8] = 0; - zcc::shared_ptr::shared_ptr(v268); - // v248 i->first - v133 = std::map>::operator[](&v307, v248); - // v307[v248] - // v245 = v133.end() - v245 = (WXML::NameAllocator *)*((_DWORD *)v133 + 1); - // std::vector - for ( i1 = *(WXML::NameAllocator **)v133; ; i1 = (WXML::NameAllocator *)((char *)i1 + 24) ) - { - v255 = (std::ostream::sentry *)v319; - if ( i1 == v245 ) // end - break; - std::string::basic_string((char *)&jj, (int)i1); - WXML::DOMLib::StrCache::Insert(v255, (int)&jj); - std::string::_M_dispose((void **)&jj); - // v304[i1] - v134 = (volatile signed __int32 **)(*(_DWORD *)std::map>::operator[]( - &v304, - (int)i1) - + 252); - *(v134 - 1) = (volatile signed __int32 *)v319; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v134, v320[0]); - v135 = std::map>::operator[](&v304, (int)i1); - WXML::DOMLib::WXMLDom::RecordAllPath(*(_DWORD **)v135); - } - WXML::DOMLib::StrCache::RenderPathDefine((_DWORD *)v319, (int)v243); - // v248 i->first - v136 = std::map>::operator[](&v307, v248); - v228 = 0; // m用的递增 - v208 = (WXML::NameAllocator *)*((_DWORD *)v136 + 1); - for ( i2 = *(WXML::NameAllocator **)v136; v208 != i2; i2 = (WXML::NameAllocator *)((char *)i2 + 24) ) - { - v256 = std::map>::operator[](&v304, (int)i2); - v137 = std::operator<<(lpuexcptl, a17); - std::operator<<>(v137, (char *)off_55101C);// "[x[" - v270 = (_DWORD *)v319; - std::string::basic_string((char *)&jj, (int)i2); - StrID = WXML::DOMLib::StrCache::GetStrID(v270, (int)&jj); - std::ostream::operator<<(StrID); - std::string::_M_dispose((void **)&jj); - v139 = std::operator<<>(lpuexcptl, "]]={}"); - std::operator<<>(v139, a12); - std::string::basic_string((void **)&jj, "get_page_z_name"); - v140 = std::map::operator[]((_DWORD *)(*(_DWORD *)v256 + 272), &jj); - v258 = WXML::Compiler::RenderDefine( - (unsigned int **)v256, - i2, - &v316, - (int)a2, - (int)v243, - (int)a8, - v209, - a11, - a12, - a13, - a14, - a15, - a10, - a16, - a17, - a18, - a19, - a20, - a21, - v140); - std::string::_M_dispose((void **)&jj); - if ( v258 ) - goto LABEL_180; // 销毁数据,返回 - v207 = v228 + 1; - std::to_string((std::__cxx11 *)&jj, v228); - v141 = std::string::insert((unsigned int *)&jj, 0, "m"); - std::string::basic_string(v321, v141); - std::string::_M_dispose((void **)&jj); - v229 = *(unsigned int **)v256; - std::string::basic_string(&j, "get_page_z_name"); - v271 = std::map::operator[]((_DWORD *)(*(_DWORD *)v256 + 272), &j); - std::string::basic_string((void **)&jj, "r"); - v258 = (struct _Unwind_Exception *)WXML::DOMLib::WXMLDom::RenderMeAsFunction( - v229, - (int *)i2, - a16, - (int)a2, - v321, - (int)v243, // *ss - &v328, - a13, - a14, - a15, - &jj, - a17, - a12, - a18, - 0, - v209, - a11, - v271); - std::string::_M_dispose((void **)&jj); - std::string::_M_dispose(&j); - if ( v258 ) - { - std::string::_M_dispose((void **)v321); - LABEL_180: - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v320); - std::string::_M_dispose((void **)v318); - goto LABEL_185; // 销毁数据,返回 - } - v142 = std::operator<<(lpuexcptl, a16); - std::operator<<>(v142, (char *)off_55101C); // "[x[" - v230 = (_DWORD *)v319; - std::string::basic_string((char *)&jj, (int)i2); - v143 = WXML::DOMLib::StrCache::GetStrID(v230, (int)&jj); - // v230.GetStrID(i2) -> v319.GetStrID(i2) - std::ostream::operator<<(v143); - std::string::_M_dispose((void **)&jj); - v144 = std::operator<<>(lpuexcptl, "]]={f:"); - v145 = std::operator<<(v144, v321); - std::operator<<>(v145, ",j:[],i:[],ti:["); - v231 = 0; - v215 = 0; - while ( 1 ) - { - v146 = *(_DWORD *)(*(_DWORD *)v256 + 72); - // v231 -> index - if ( (*(_DWORD *)(*(_DWORD *)v256 + 76) - v146) >> 3 <= v231 ) - break; - if ( std::operator==(*(_DWORD *)(v146 + 8 * v231), "import") ) - { - v210 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v256 + 72) + 8 * v231); - v205 = (_DWORD *)(v210 + 52); - std::string::basic_string((void **)&jj, (char *)off_547B7D); // "src" - v211 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - (_DWORD *)(v210 + 48), - (int)&jj); - std::string::_M_dispose((void **)&jj); - if ( v211 != v205 ) - { - if ( v215 ) - std::operator<<>(lpuexcptl, ","); - std::operator<<>(lpuexcptl, "x["); - v206 = (_DWORD *)v319; - v212 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v256 + 72) + 8 * v231); - std::string::basic_string(&j, (char *)off_547B7D); // src - v147 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - (_DWORD *)(v212 + 48), - (int)&j); - v148 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v147 + 10)); - std::string::basic_string((char *)&jj, v148); - v149 = WXML::DOMLib::StrCache::GetStrID(v206, (int)&jj); - std::ostream::operator<<(v149); - std::string::_M_dispose((void **)&jj); - std::string::_M_dispose(&j); - std::operator<<>(lpuexcptl, "]"); - ++v215; - } - } - ++v231; - } - std::operator<<>(lpuexcptl, "],ic:["); - for ( i3 = 0; ; ++i3 ) - { - v150 = *(_DWORD *)(*(_DWORD *)v256 + 72); - if ( (*(_DWORD *)(*(_DWORD *)v256 + 76) - v150) >> 3 <= i3 ) - break; - if ( std::operator==(*(_DWORD *)(v150 + 8 * i3), "include") ) - { - v216 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v256 + 72) + 8 * i3); // item - v213 = (_DWORD *)(v216 + 52); - std::string::basic_string((void **)&jj, (char *)off_547B7D); // src - v217 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - (_DWORD *)(v216 + 48), - (int)&jj); - std::string::_M_dispose((void **)&jj); - if ( v217 != v213 ) - { - if ( v258 ) - std::operator<<>(lpuexcptl, ","); - std::operator<<>(lpuexcptl, "x["); - v214 = (_DWORD *)v319; - v218 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v256 + 72) + 8 * i3); // item - std::string::basic_string(&j, (char *)off_547B7D); - v151 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - (_DWORD *)(v218 + 48), - (int)&j); - v152 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v151 + 10)); - std::string::basic_string((char *)&jj, v152); - v153 = WXML::DOMLib::StrCache::GetStrID(v214, (int)&jj); - std::ostream::operator<<(v153); - std::string::_M_dispose((void **)&jj); - std::string::_M_dispose(&j); - std::operator<<>(lpuexcptl, "]"); - v258 = (struct _Unwind_Exception *)((char *)v258 + 1); - } - } - } - v154 = std::operator<<>(lpuexcptl, "]}"); - std::operator<<>(v154, a12); - std::string::_M_dispose((void **)v321); - v228 = v207; - } - v155 = std::operator<<>(lpuexcptl, "if(path&&"); - v156 = std::operator<<(v155, a16); - v157 = std::operator<<>(v156, "[path]){"); - std::operator<<>(v157, a12); - if ( !a9 ) - { - v158 = std::operator<<>(lpuexcptl, "outerGlobal.__wxml_comp_version__=0.02"); - std::operator<<>(v158, a12); - } - v159 = std::operator<<>( - lpuexcptl, - "return function(env,dd,global){$gwxc=0;var root={\"tag\":\"wx-page\"};root.children=[]"); - std::operator<<>(v159, a12); - v160 = std::operator<<>(lpuexcptl, ";g=\""); - v161 = std::operator<<(v160, v318); - std::operator<<>(v161, "\";"); - v162 = std::operator<<>(lpuexcptl, "var main="); - v163 = std::operator<<(v162, a16); - v164 = std::operator<<>(v163, "[path].f"); - std::operator<<>(v164, a12); - if ( (a11 & 2) != 0 ) - { - v165 = std::operator<<>(lpuexcptl, "cs=[]"); - std::operator<<>(v165, a12); - } - if ( (a11 & 0x10) != 0 ) - { - v166 = std::operator<<>(lpuexcptl, "console.log(path+': benv:\\n'+JSON.stringify(env))"); - std::operator<<>(v166, a12); - } - std::operator<<>(lpuexcptl, "if (typeof global===\"undefined\")global={};"); - v167 = std::operator<<>(lpuexcptl, "global.f=$gdc("); - v168 = std::operator<<(v167, a22); - v169 = std::operator<<>(v168, "[path],\"\",1);"); - std::operator<<>(v169, a12); - if ( !a9 ) - { - v170 = std::operator<<>( - lpuexcptl, - "if(typeof(outerGlobal.__webview_engine_version__)!='undefined'&&outerGlobal.__webview_engine_version__+1e" - "-6>=0.02+1e-6&&outerGlobal.__mergeData__)"); - std::operator<<>(v170, a12); - v171 = std::operator<<>(lpuexcptl, "{"); - std::operator<<>(v171, a12); - v172 = std::operator<<>(lpuexcptl, "env=outerGlobal.__mergeData__(env,dd);"); - std::operator<<>(v172, a12); - v173 = std::operator<<>(lpuexcptl, "}"); - std::operator<<>(v173, a12); - } - v174 = std::operator<<>(lpuexcptl, "try{"); - std::operator<<>(v174, a12); - if ( (a11 & 0x10) != 0 ) - { - v175 = std::operator<<>( - lpuexcptl, - "console.log(path+': aenv:\\n'+JSON.stringify(env)+', '+JSON.stringify(dd))"); - std::operator<<>(v175, a12); - } - if ( (a11 & 0x80) != 0 ) - { - std::operator<<>(lpuexcptl, "if(__WXML_GLOBAL__.before_calculate)"); - v176 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.before_calculate(path, env)"); - std::operator<<>(v176, a12); - } - v177 = std::operator<<>(lpuexcptl, "main(env,{},root,global);"); - std::operator<<>(v177, a12); - if ( (a11 & 0x80) != 0 ) - { - std::operator<<>(lpuexcptl, "if(__WXML_GLOBAL__.after_calculate)"); - v178 = std::operator<<>(lpuexcptl, "__WXML_GLOBAL__.after_calculate(path, root)"); - std::operator<<>(v178, a12); - } - v179 = std::operator<<>(lpuexcptl, "_tsd(root)"); - std::operator<<>(v179, a12); - if ( !a9 ) - { - v180 = std::operator<<>( - lpuexcptl, - "if(typeof(outerGlobal.__webview_engine_version__)=='undefined'|| outerGlobal.__webview_engine_version__+1" - "e-6<0.01+1e-6){return _ev(root);}"); - std::operator<<>(v180, a12); - } - v181 = std::operator<<>(lpuexcptl, "}catch(err){"); - std::operator<<>(v181, a12); - if ( (a11 & 2) != 0 ) - { - v182 = std::operator<<>(lpuexcptl, "console.log(cs, env);"); - std::operator<<>(v182, a12); - } - v183 = std::operator<<>(lpuexcptl, "console.log(err)"); - std::operator<<>(v183, a12); - if ( (a11 & 2) != 0 ) - { - v184 = std::operator<<>(lpuexcptl, "throw err"); - std::operator<<>(v184, a12); - } - v185 = std::operator<<>(lpuexcptl, "}"); - std::operator<<>(v185, a12); - if ( (a11 & 0x10) != 0 ) - { - v186 = std::operator<<>(lpuexcptl, "console.log(path+': resp:\\n'+JSON.stringify(root))"); - std::operator<<>(v186, a12); - } - v187 = std::operator<<>(lpuexcptl, ";g=\"\";"); - std::operator<<>(v187, a12); - v188 = std::operator<<>(lpuexcptl, "return root;"); - std::operator<<>(v188, a12); - v189 = std::operator<<>(lpuexcptl, "}"); - std::operator<<>(v189, a12); - v190 = std::operator<<>(lpuexcptl, "}"); - std::operator<<>(v190, a12); - v191 = std::operator<<>(lpuexcptl, "}"); - std::operator<<>(v191, a12); - std::operator<<>( - lpuexcptl, - "}(__g.a,__g.b,__g.c,__g.d,__g.e,__g.f,__g.g,__g.h,__g.i,__g.j,__g.k,__g.l,__g.m,__g.n,__g.o,__g.p,__g.q,__g.r,__g." - "s,__g.t,__g.u,__g.v,__g.w,__g.x,__g.y,__g.z,__g.A,__g.B,__g.C,__g.D,__g.E,__g.F,__g.G,__g.H,__g.I,__g.J,__g.K,__g." - "L,__g.M,__g.N,__g.O,__g.P,__g.Q,__g.R,__g.S,__g.T,__g.U,__g.V,__g.W,__g.X,__g.Y,__g.Z,__g.aa);"); - if ( (a11 & 8) != 0 ) - { - v192 = std::map>::operator[](&v307, v248); - v257 = (std::ostream::sentry *)*((_DWORD *)v192 + 1); - for ( i4 = *(int **)v192; i4 != (int *)v257; i4 += 6 ) - { - v193 = std::operator<<>(lpuexcptl, "//"); - v194 = std::operator<<(v193, i4); - v195 = std::operator<<>(v194, ":"); - std::operator<<>(v195, a12); - v196 = std::map>::operator[](&v304, (int)i4); - WXML::DOMLib::WXMLDom::Print(*(_DWORD **)v196, 0, "//", (char *)v243); - } - } - v197 = std::map>::operator[](&v307, v248); - v273 = v225 || *((_DWORD *)v197 + 1) == *(_DWORD *)v197; - lpuexcptm = std::operator<<>(lpuexcptl, "if(__vd_version_info__.delayedGwx||"); - v198 = "true"; - if ( !v273 ) - v198 = "false"; - std::string::basic_string((void **)&jj, v198); - v199 = std::operator<<(lpuexcptm, &jj); - v200 = std::operator<<>(v199, ")"); - v201 = std::operator<<(v200, v318); - std::operator<<>(v201, "();"); - std::string::_M_dispose((void **)&jj); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v320); - std::string::_M_dispose((void **)v318); - v233 = (_DWORD *)std::_Rb_tree_increment((int)v233); - } - // mark - 60 - // v301 ssDataMap - for ( i5 = (struct _Unwind_Exception *)v303; ; i5 = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcptn) ) - { - lpuexcptn = i5; - if ( i5 == (struct _Unwind_Exception *)v302 ) // end - break; - std::stringbuf::str((int)&jj, *((_DWORD *)i5 + 10) + 12); - v203 = std::map::operator[](a3, (int)lpuexcptn + 16); - // a3[(int)lpuexcptn + 16] - std::string::operator=((unsigned __int8 **)v203, (int)&jj); - // a3[(int)lpuexcptn + 16] = jj - std::string::_M_dispose((void **)&jj); - } - // mark - 65 - v258 = 0; -LABEL_185: - WXML::NameAllocator::~NameAllocator((int)&v328); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v316); -LABEL_186: - std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&v313); -LABEL_187: - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v311); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v309); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(v308[1]); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v304); - std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(v302[1]); - return v258; -} - -// CompileLazy End -// 40A40B: variable 'v24' is possibly undefined -// 40A5A0: variable 'v25' is possibly undefined -// 40A726: variable 'v28' is possibly undefined -// 40A799: variable 'v30' is possibly undefined -// 40AEEE: variable 'v50' is possibly undefined -// 40B084: variable 'v49' is possibly undefined -// 40BB69: variable 'v98' is possibly undefined -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 40A124: using guessed type char var_E0[4]; -// 40A124: using guessed type int var_174[5]; - -//----- (0040DB80) -------------------------------------------------------- -void __thiscall WXML::NameAllocator::NameAllocator(_DWORD *this, int a2, int a3) -{ - bool v3; // zf - int v4; // [esp+10h] [ebp-48h] - int v5; // [esp+14h] [ebp-44h] - - this[2] = 0; - v5 = (int)(this + 1); - *((_BYTE *)this + 12) = 0; - this[8] = 0; - this[1] = this + 3; - *((_BYTE *)this + 36) = 0; - v4 = (int)(this + 7); - v3 = WXML::NameAllocator::ALPAHBETLEN == 0; - this[7] = this + 9; - if ( v3 ) - WXML::NameAllocator::ALPAHBETLEN = strlen(WXML::NameAllocator::ALPAHBET); - std::string::_M_assign(v5, a2); - std::string::_M_assign(v4, a3); - *this = 0; -} -// 565A2C: using guessed type int WXML::NameAllocator::ALPAHBETLEN; - -//----- (0040DC6A) -------------------------------------------------------- -void __thiscall WXML::NameAllocator::GetNextName(int *this, int a2) -{ - std::ostream::sentry *v2; // eax - int v3; // ecx - _BYTE *v4; // eax - size_t v5; // eax - _BYTE *v6; // edx - int v7; // edx - int v8; // [esp+10h] [ebp-138h] - int v9; // [esp+14h] [ebp-134h] - _WORD Src[3]; // [esp+56h] [ebp-F2h] BYREF - size_t Size; // [esp+5Ch] [ebp-ECh] - int v13[4]; // [esp+60h] [ebp-E8h] BYREF - char v14[8]; // [esp+70h] [ebp-D8h] BYREF - char v15[4]; // [esp+78h] [ebp-D0h] BYREF - char v16[200]; // [esp+7Ch] [ebp-CCh] BYREF - - v9 = *this; - std::basic_stringstream,std::allocator>::basic_stringstream((int)v14); - v2 = std::operator<<((std::ostream::sentry *)v15, this + 1); - LOBYTE(Src[0]) = *(_BYTE *)(this[7] + *this % (unsigned int)this[8]); - std::__ostream_insert>(v2, (int)Src, 1); - while ( v9 ) - { - HIBYTE(Src[0]) = WXML::NameAllocator::ALPAHBET[v9 % WXML::NameAllocator::ALPAHBETLEN]; - std::__ostream_insert>((std::ostream::sentry *)v15, (int)Src + 1, 1); - v9 /= WXML::NameAllocator::ALPAHBETLEN; - } - ++*this; - std::stringbuf::str((int)&Src[1], (int)v16); - v3 = *(_DWORD *)&Src[1]; - v4 = *(_BYTE **)a2; - if ( *(int **)&Src[1] == v13 ) - { - if ( Size ) - std::string::_S_copy(v4, *(unsigned __int8 **)&Src[1], Size); - v5 = Size; - v6 = *(_BYTE **)a2; - *(_DWORD *)(a2 + 4) = Size; - v6[v5] = 0; - } - else - { - if ( v4 == (_BYTE *)(a2 + 8) ) - v4 = 0; - else - v8 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = Size; - v7 = v13[0]; - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v7; - if ( v4 ) - { - *(_DWORD *)&Src[1] = v4; - v13[0] = v8; - } - else - { - *(_DWORD *)&Src[1] = v13; - } - } - Size = 0; - **(_BYTE **)&Src[1] = 0; - std::string::_M_dispose((void **)&Src[1]); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v14); -} -// 40DE40: variable 'v8' is possibly undefined -// 565A2C: using guessed type int WXML::NameAllocator::ALPAHBETLEN; -// 40DC6A: using guessed type char var_D0[4]; -// 40DC6A: using guessed type char var_CC[200]; - -//----- (0040DEC4) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, this[1], Str, v2); -} - -//----- (0040DF01) -------------------------------------------------------- -void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void **a2) -{ - int v2; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - void *v4[8]; // [esp+58h] [ebp-20h] BYREF - - lpuexcpt = 0; - v2 = -1; - while ( a1[1] > (int)lpuexcpt ) - { - if ( *((_BYTE *)lpuexcpt + *a1) == '/' /*47*/ ) - { - if ( (int)lpuexcpt - v2 > 1 ) - { - std::string::substr(v4, a1, v2 + 1, (unsigned int)lpuexcpt - v2 - 1); - std::vector::emplace_back(a2, v4); - std::string::_M_dispose(v4); - } - v2 = (int)lpuexcpt; - } - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - } - if ( (int)lpuexcpt - v2 > 1 ) - { - std::string::substr(v4, a1, v2 + 1, (unsigned int)lpuexcpt - v2 - 1); - std::vector::emplace_back(a2, v4); - std::string::_M_dispose(v4); - } -} - -//----- (0040E020) -------------------------------------------------------- -int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3) -{ - bool v3; // zf - int v4; // eax - int v5; // edx - int v6; // edx - char *v8; // [esp+0h] [ebp-88h] - int v9; // [esp+14h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-70h] - void **v12; // [esp+50h] [ebp-38h] BYREF - void **v13; // [esp+54h] [ebp-34h] - char *v14; // [esp+58h] [ebp-30h] - void *v15; // [esp+5Ch] [ebp-2Ch] BYREF - int v16; // [esp+60h] [ebp-28h] - int v17; // [esp+64h] [ebp-24h] - void *v18; // [esp+68h] [ebp-20h] BYREF - size_t v19; // [esp+6Ch] [ebp-1Ch] - char v20[24]; // [esp+70h] [ebp-18h] BYREF - - v12 = 0; - v13 = 0; - v3 = a2[1] == 0; - v14 = 0; - v15 = 0; - v16 = 0; - v17 = 0; - if ( v3 || *(_BYTE *)*a2 != '/' /*47*/ ) - { - MMBizWxaAppComm::SplitBySlash(a1, (void **)&v12); - v4 = a1[1]; - if ( v4 ) - { - if ( *(_BYTE *)(*a1 + v4 - 1) != 47 ) - { - v13 -= 6; - std::string::_M_dispose(v13); - } - } - } - MMBizWxaAppComm::SplitBySlash(a2, &v15); - for ( lpuexcpt = 0; - (unsigned int)lpuexcpt < -1431655765 * ((v16 - (int)v15) >> 3); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v9 = 24 * (_DWORD)lpuexcpt; - if ( !std::string::compare((int)v15 + 24 * (_DWORD)lpuexcpt, "..") ) - { - if ( v12 != v13 ) - { - v13 -= 6; - std::string::_M_dispose(v13); - } - } - else if ( std::string::compare((int)v15 + v9, ".") ) - { - if ( v13 == (void **)v14 ) - { - std::vector::_M_realloc_insert((void **)&v12, (char *)v13, (int)v15 + v9); - } - else - { - std::string::basic_string((char *)v13, (int)v15 + v9); - v13 += 6; - } - } - } - if ( a1[1] && *(_BYTE *)*a1 == 47 || a2[1] && *(_BYTE *)*a2 == 47 ) - v8 = "/"; - else - v8 = (char *)&unk_551F01; - std::string::operator=(a3, v8); - // v12 dirList - for ( lpuexcpta = 0; - (unsigned int)lpuexcpta < -1431655765 * (((char *)v13 - (char *)v12) >> 3); - lpuexcpta = (struct _Unwind_Exception *)((char *)lpuexcpta + 1) ) - { - if ( lpuexcpta ) - { - v18 = v20; - std::string::_S_copy_chars(v20, "/", (size_t)""); - v19 = 1; - *((_BYTE *)v18 + 1) = 0; - std::string::_M_append(a3, v18, v19); - std::string::_M_dispose(&v18); - } - std::string::_M_append(a3, v12[6 * (_DWORD)lpuexcpta], (size_t)v12[6 * (_DWORD)lpuexcpta + 1]); - } - std::vector::~vector((void ***)&v15, v5); - std::vector::~vector(&v12, v6); - return 0; -} -// 40E2B1: variable 'v5' is possibly undefined -// 40E2B9: variable 'v6' is possibly undefined - -//----- (0040E2D0) -------------------------------------------------------- -void __tcf_1_0(void) -{ - std::string::_M_dispose(&night::nsv_); -} -// 565DF0: using guessed type void *night::nsv_; - -//----- (0040E2DA) -------------------------------------------------------- -void __tcf_2_0(void) -{ - std::string::_M_dispose((void **)&night::nst_); -} - -//----- (0040E2E4) -------------------------------------------------------- -void __tcf_3_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); -} - -//----- (0040E2EE) -------------------------------------------------------- -void __tcf_4_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); -} - -//----- (0040E2F8) -------------------------------------------------------- -void __tcf_5_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_VAR); -} - -//----- (0040E302) -------------------------------------------------------- -void __tcf_6_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_STR); -} - -//----- (0040E30C) -------------------------------------------------------- -void __tcf_7_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_NUM); -} - -//----- (0040E316) -------------------------------------------------------- -void __tcf_8_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); -} - -//----- (0040E320) -------------------------------------------------------- -void __tcf_9_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_KW); -} - -//----- (0040E32A) -------------------------------------------------------- -void __tcf_10_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); -} - -//----- (0040E334) -------------------------------------------------------- -void __tcf_11_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OP); -} - -//----- (0040E33E) -------------------------------------------------------- -void __tcf_12_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); -} - -//----- (0040E348) -------------------------------------------------------- -void __tcf_13_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); -} - -//----- (0040E352) -------------------------------------------------------- -void __tcf_14_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); -} - -//----- (0040E35C) -------------------------------------------------------- -void __tcf_15_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); -} - -//----- (0040E366) -------------------------------------------------------- -void __tcf_16_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_K_V); -} - -//----- (0040E370) -------------------------------------------------------- -void __tcf_17_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); -} - -//----- (0040E37A) -------------------------------------------------------- -void __tcf_18_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); -} - -//----- (0040E384) -------------------------------------------------------- -void __tcf_19_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); -} - -//----- (0040E38E) -------------------------------------------------------- -void __tcf_20_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); -} - -//----- (0040E398) -------------------------------------------------------- -void __tcf_21_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); -} - -//----- (0040E3A2) -------------------------------------------------------- -void __tcf_22_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); -} - -//----- (0040E3AC) -------------------------------------------------------- -void __tcf_23_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_IF); -} - -//----- (0040E3B6) -------------------------------------------------------- -void __tcf_24_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_FOR); -} - -//----- (0040E3C0) -------------------------------------------------------- -void __tcf_25_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); -} - -//----- (0040E3CA) -------------------------------------------------------- -void __tcf_26_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); -} - -//----- (0040E3D4) -------------------------------------------------------- -void __tcf_27_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); -} - -//----- (0040E3DE) -------------------------------------------------------- -void __tcf_28_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG); -} - -//----- (0040E3E8) -------------------------------------------------------- -void __tcf_29_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); -} - -//----- (0040E3F2) -------------------------------------------------------- -void __tcf_30_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); -} - -//----- (0040E3FC) -------------------------------------------------------- -void __tcf_31_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); -} - -//----- (0040E406) -------------------------------------------------------- -void __tcf_32_0(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_CALL); -} - -//----- (0040E410) -------------------------------------------------------- -void __tcf_33_0(void) -{ - std::string::_M_dispose((void **)night::NS_BUILTIN_OP); -} -// 565AF0: using guessed type int night::NS_BUILTIN_OP[6]; - -//----- (0040E41A) -------------------------------------------------------- -void __tcf_34_0(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); -} - -//----- (0040E424) -------------------------------------------------------- -void __tcf_35_0(void) -{ - std::string::_M_dispose((void **)night::NS_BUILTIN_ALL_OP); -} -// 565AC0: using guessed type int night::NS_BUILTIN_ALL_OP[6]; - -//----- (0040E42E) -------------------------------------------------------- -void __tcf_36_0(void) -{ - std::string::_M_dispose((void **)night::NS_BUILTIN_PUNC); -} -// 565AA8: using guessed type int night::NS_BUILTIN_PUNC[6]; - -//----- (0040E438) -------------------------------------------------------- -void __tcf_37_0(void) -{ - std::string::_M_dispose((void **)night::NS_BUILTIN_SPACE); -} -// 565A90: using guessed type int night::NS_BUILTIN_SPACE[6]; - -//----- (0040E442) -------------------------------------------------------- -void __tcf_38_0(void) -{ - std::string::_M_dispose((void **)night::NS_BUILTIN_KW); -} -// 565A78: using guessed type int night::NS_BUILTIN_KW[6]; - -//----- (0040E44C) -------------------------------------------------------- -void __tcf_39_0(void) -{ - std::string::_M_dispose((void **)night::NS_BUILTIN_TYPE); -} -// 565A60: using guessed type int night::NS_BUILTIN_TYPE[6]; - -//----- (0040E456) -------------------------------------------------------- -void __tcf_40_0(void) -{ - std::string::_M_dispose((void **)&night::std_v_n); -} - -//----- (0040E460) -------------------------------------------------------- -void __tcf_41_0(void) -{ - std::string::_M_dispose((void **)&night::std_v_v_n); -} - -//----- (0040E46A) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 *v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 *v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = *this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = *this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == (unsigned __int8 *)(this + 2) ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 40E4D1: variable 'v9' is possibly undefined - -//----- (0040E4FE) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, this[1], Str, v2); -} - -//----- (0040E53B) -------------------------------------------------------- -int __usercall night::NSToken::tk_is_var_start@(int a1@) -{ - unsigned int v1; // edx - - v1 = (a1 & 0xFFFFFFDF) - 65; // 'A' - LOBYTE(v1) = (unsigned __int8)v1 <= 0x19u; - LOBYTE(a1) = (_BYTE)a1 == 95; // '_' - return v1 | a1; -} - -//----- (0040E552) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 20)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0040E586) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0040E5BA) -------------------------------------------------------- -#error "40E664: call analysis failed (funcsize=61)" - -//----- (0040E69E) -------------------------------------------------------- -int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>@( - int a1@, - int a2@) -{ - int i; // eax - int v4; // [esp+1Ch] [ebp-4Ch] - int v6; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-44h] - int v9; // [esp+28h] [ebp-40h] - - v9 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); - *(_DWORD *)(v9 + 4) = a2; - if ( *(_DWORD *)(a1 + 12) ) - *(_DWORD *)(v9 + 12) = ((int (*)(void))std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>)(); - lpuexcpta = *(struct _Unwind_Exception **)(a1 + 8); - for ( i = v9; ; i = v6 ) - { - v4 = i; - if ( !lpuexcpta ) - break; - v6 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); - *(_DWORD *)(v4 + 8) = v6; - *(_DWORD *)(v6 + 4) = v4; - if ( *((_DWORD *)lpuexcpta + 3) ) - *(_DWORD *)(v6 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( - v6, - v6); - lpuexcpta = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 2); - } - return v9; -} -// 40E5BA: using guessed type int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); - -//----- (0040E7BE) -------------------------------------------------------- -#error "40E865: call analysis failed (funcsize=60)" - -//----- (0040E8A0) -------------------------------------------------------- -int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>@( - int a1@, - int a2@) -{ - int i; // eax - int v4; // [esp+1Ch] [ebp-4Ch] - int v6; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-44h] - int v9; // [esp+28h] [ebp-40h] - - v9 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); - *(_DWORD *)(v9 + 4) = a2; - if ( *(_DWORD *)(a1 + 12) ) - *(_DWORD *)(v9 + 12) = ((int (*)(void))std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>)(); - lpuexcpta = *(struct _Unwind_Exception **)(a1 + 8); - for ( i = v9; ; i = v6 ) - { - v4 = i; - if ( !lpuexcpta ) - break; - v6 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); - *(_DWORD *)(v4 + 8) = v6; - *(_DWORD *)(v6 + 4) = v4; - if ( *((_DWORD *)lpuexcpta + 3) ) - *(_DWORD *)(v6 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( - v6, - v6); - lpuexcpta = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 2); - } - return v9; -} -// 40E7BE: using guessed type int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); - -//----- (0040E9C0) -------------------------------------------------------- -size_t __thiscall std::string::basic_string(void **this, char *Str) -{ - char *v3; // edi - size_t result; // eax - _BYTE *v5; // edx - size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = strlen(Str); - v3 = &Str[v6[0]]; - if ( v6[0] > 0xF ) - { - *this = std::string::_M_create(v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); - result = v6[0]; - v5 = *this; - this[1] = (void *)v6[0]; - v5[result] = 0; - return result; -} -// 40E9C0: using guessed type size_t var_1C[7]; - -//----- (0040EA3E) -------------------------------------------------------- -void __thiscall night::NSStream::NSStream(_DWORD *this, int a2, int a3, int a4) -{ - int v4; // [esp+14h] [ebp-44h] - - *this = this + 2; // this->offset_0 - this[1] = 0; - *((_BYTE *)this + 8) = 0; - - v4 = (int)(this + 6); - - this[6] = this + 8; // this->offset_24 - this[7] = 0; - *((_BYTE *)this + 32) = 0; - - std::string::_M_assign((int)this, a2); - std::string::_M_assign(v4, a3); - this[12] = 0; // this->offset_48 - this[14] = 1; // this->offset_56 - this[13] = a4; // this->offset_52 -} - -//----- (0040EB14) -------------------------------------------------------- -_DWORD *__thiscall night::NSStream::next(_DWORD *ecx0, night::NSStream *this) -{ - unsigned int v3; // eax - int v5; // [esp+10h] [ebp-18h] - int v6; // [esp+14h] [ebp-14h] - char v7; // [esp+1Fh] [ebp-9h] - - v3 = *((_DWORD *)this + 12); - if ( v3 < *((_DWORD *)this + 7) ) - { - *((_DWORD *)this + 12) = v3 + 1; - v7 = *(_BYTE *)std::string::at((_DWORD *)this + 6, v3); - v6 = *((_DWORD *)this + 14); - v5 = *((_DWORD *)this + 13); - if ( v7 == 10 ) - { - *((_DWORD *)this + 14) = 1; - *((_DWORD *)this + 13) = v5 + 1; - } - else - { - ++*((_DWORD *)this + 14); - } - *(_BYTE *)ecx0 = v7; - ecx0[1] = v5; - ecx0[2] = v6; - } - else - { - *ecx0 = 0; - ecx0[1] = 0; - ecx0[2] = 0; - } - return ecx0; -} - -//----- (0040EB9C) -------------------------------------------------------- -_DWORD *__thiscall night::NSStream::peek(_DWORD *ecx0, night::NSStream *this) -{ - char *v3; // eax - int v4; // edx - char v5; // cl - - // (_DWORD *)this + 12 -> this->offset_48 - // (_DWORD *)this + 7 -> this->offset_28 - if ( *((_DWORD *)this + 12) < *((_DWORD *)this + 7) ) - { - // this->offset_24 std::string, offset_28 std::string.length() - // (_DWORD *)this + 6 -> this->offset_24 - // (_DWORD *)this + 12 -> this->offset_48 - v3 = (char *)std::string::at((_DWORD *)this + 6, *((_DWORD *)this + 12)); - // (_DWORD *)this + 14 -> this->offset_56 - v4 = *((_DWORD *)this + 14); - v5 = *v3; - // (_DWORD *)this + 13 -> this->offset_52 - ecx0[1] = *((_DWORD *)this + 13); - *(_BYTE *)ecx0 = v5; - ecx0[2] = v4; - } - else - { - *ecx0 = 0; - ecx0[1] = 0; - ecx0[2] = 0; - } - return ecx0; -} - -//----- (0040EBF0) -------------------------------------------------------- -_DWORD *__thiscall night::NSStream::peek_2(_DWORD *ecx0, night::NSStream *this) -{ - char v3; // dl - int v4; // ecx - int v5; // eax - // this->offset_48 + 1 < this->offset_24.length() - if ( (unsigned int)(*((_DWORD *)this + 12) + 1) < *((_DWORD *)this + 7) ) - { - // this->offset_24.at(this->offset_48 + 1) - v3 = *(_BYTE *)std::string::at((_DWORD *)this + 6, *((_DWORD *)this + 12) + 1); - v4 = *((_DWORD *)this + 13); // this->offset_52 - v5 = *((_DWORD *)this + 14) + 1;// this->offset_56 + 1 - if ( v3 == '\n'/*10*/ ) - { - ++v4; // 行数 - v5 = 1;// 当前行字符位置 - } - *(_BYTE *)ecx0 = v3; - ecx0[1] = v4; - ecx0[2] = v5; - } - else - { - *ecx0 = 0; - ecx0[1] = 0; - ecx0[2] = 0; - } - return ecx0; -} - -//----- (0040EC50) -------------------------------------------------------- -bool __fastcall night::NSStream::eof(night::NSStream *a1) -{ - int v2[5]; // [esp+14h] [ebp-14h] BYREF - - night::NSStream::peek(v2, a1); - return LOBYTE(v2[0]) == 0; -} -// 40EC50: using guessed type int var_14[5]; - -//----- (0040EC6C) -------------------------------------------------------- -bool __fastcall night::NSStream::eof_2(night::NSStream *a1) -{ - int v2[5]; // [esp+14h] [ebp-14h] BYREF - - night::NSStream::peek_2(v2, a1); - return LOBYTE(v2[0]) == 0; -} -// 40EC6C: using guessed type int var_14[5]; - -//----- (0040EC88) -------------------------------------------------------- -void __thiscall __noreturn night::NSStream::err(_DWORD *this, int a2, unsigned int a3, unsigned int a4, char a5) -{ - _DWORD *v5; // eax - _DWORD *v6; // eax - _DWORD *v7; // eax - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-90h] - int v10[2]; // [esp+58h] [ebp-50h] BYREF - char v11; // [esp+60h] [ebp-48h] BYREF - void *v12[6]; // [esp+70h] [ebp-38h] BYREF - void *v13[8]; // [esp+88h] [ebp-20h] BYREF - - v11 = 0; - v10[0] = (int)&v11; - v10[1] = 0; - std::string::basic_string((char *)v13, (int)this); - std::string::append(v13, ":"); - std::string::operator+=(v13); - std::string::_M_dispose(v13); - if ( a5 ) - { - std::to_string((std::__cxx11 *)v12, a3); - v5 = std::string::append(v12, ":"); - std::string::basic_string(v13, v5); - std::string::operator+=(v13); - std::string::_M_dispose(v13); - std::string::_M_dispose(v12); - std::to_string((std::__cxx11 *)v12, a4); - } - else - { - std::to_string((std::__cxx11 *)v12, this[13] + a3); - v7 = std::string::append(v12, ":"); - std::string::basic_string(v13, v7); - std::string::operator+=(v13); - std::string::_M_dispose(v13); - std::string::_M_dispose(v12); - std::to_string((std::__cxx11 *)v12, this[14] + a4); - } - v6 = std::string::append(v12, ":"); - std::string::basic_string(v13, v6); - std::string::operator+=(v13); - std::string::_M_dispose(v13); - std::string::_M_dispose(v12); - std::string::operator+=(a2); - lpuexcpta = (struct _Unwind_Exception *)__cxa_allocate_exception(0x18u); - std::string::basic_string(lpuexcpta, v10); - __cxa_throw(lpuexcpta, (struct type_info *)&`typeinfo for std::string, (void (__cdecl *)(void *))std::string::~string); -} -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 55BB98: using guessed type int *`typeinfo for'std::string; - -//----- (0040EFA6) -------------------------------------------------------- -void __userpurge __noreturn night::NSToken::err(int a1@, int a2, unsigned int a3, unsigned int a4, char a5) -{ - night::NSStream::err(*(_DWORD **)(a1 + 4), a2, a3, a4, a5); -} - -//----- (0040EFD0) -------------------------------------------------------- -int __thiscall night::NSToken::read_while[abi:cxx11]( - int this, - int a2, - unsigned __int8 (__cdecl *a3)(_DWORD, int), - int a4) -{ - _DWORD v6[5]; // [esp+54h] [ebp-14h] BYREF - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_BYTE *)(this + 8) = 0; - while ( !night::NSStream::eof(*(night::NSStream **)(a2 + 4)) ) - { - night::NSStream::peek(v6, *(night::NSStream **)(a2 + 4)); - if ( !a3(SLOBYTE(v6[0]), a4) ) - break; - night::NSStream::next(v6, *(night::NSStream **)(a2 + 4)); - std::string::push_back((_DWORD *)this, v6[0]); - } - return this; -} - -//----- (0040F0B0) -------------------------------------------------------- -void __fastcall night::NSToken::read_comment_method_1(int a1) -{ - void *v1[8]; // [esp+18h] [ebp-20h] BYREF - - night::NSToken::read_while[abi:cxx11]( - (int)v1, - a1, - (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_not_line_break, - 0); - std::string::_M_dispose(v1); -} - -//----- (0040F0DE) -------------------------------------------------------- -_DWORD *__fastcall night::NSToken::read_comment_method_2(int a1) -{ - void *v3[7]; // [esp+18h] [ebp-20h] BYREF - - night::NSToken::read_while[abi:cxx11]( - (int)v3, - a1, - (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_comment2, - *(_DWORD *)(a1 + 4)); - std::string::_M_dispose(v3); - return night::NSStream::next(v3, *(night::NSStream **)(a1 + 4)); -} - -//----- (0040F120) -------------------------------------------------------- -unsigned __int8 __thiscall night::NSToken::skip_comment(night::NSStream **this, unsigned __int8 **a2) -{ - unsigned __int8 result; // al - night::NSStream *v4; // [esp+0h] [ebp-38h] - void *v5[7]; // [esp+18h] [ebp-20h] BYREF - - while ( 1 ) - { - result = night::NSStream::eof(this[1]); - if ( result ) - break; - result = (unsigned __int8)night::NSStream::peek(v5, this[1]); - if ( LOBYTE(v5[0]) != '/'/*47*/ ) - break; - result = night::NSStream::eof_2(this[1]); - if ( result ) - break; - night::NSStream::peek_2(v5, this[1]); - v4 = this[1]; - if ( LOBYTE(v5[0]) == '/'/*47*/ ) - { - night::NSStream::next(v5, v4); - night::NSStream::next(v5, this[1]); - night::NSToken::read_comment_method_1((int)this); - } - else - { - result = (unsigned __int8)night::NSStream::peek_2(v5, v4); - if ( LOBYTE(v5[0]) != '*'/*42*/ ) - return result; - night::NSStream::next(v5, this[1]); - night::NSStream::next(v5, this[1]); - night::NSToken::read_comment_method_2((int)this); - } - night::NSToken::read_while[abi:cxx11]( - (int)v5, - (int)this, - (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_whitespace, - 0); - std::string::operator=(a2, (int)v5); - std::string::_M_dispose(v5); - } - return result; -} - -//----- (0040F210) -------------------------------------------------------- -bool __stdcall night::NSASTParse::is_save_for_division(int a1) -{ - bool result; // al - bool v2; // al - int v3; // esi - bool v4; // [esp+1Fh] [ebp-29h] - void *v5[8]; // [esp+28h] [ebp-20h] BYREF - - result = 0; - if ( a1 ) - { - std::string::basic_string((char *)v5, a1); - if ( !std::operator==((int)v5, (int)&night::NS_TYPE_BOOL) - && !std::operator==((int)v5, (int)&night::NS_TYPE_VAR) - && !std::operator==((int)v5, (int)&night::NS_TYPE_NUM) - && !std::operator==((int)v5, (int)&night::NS_TYPE_B_TYPE) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OP_SELF) - && !std::operator==((int)v5, (int)&night::NS_TYPE_BINARY) - && !std::operator==((int)v5, (int)&night::NS_TYPE_ASSIGN) - && !std::operator==((int)v5, (int)&night::NS_TYPE_TERNARY) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_DOT) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_PROPERTY) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_SELF_OP) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_BLOCK) - && !std::operator==((int)v5, (int)&night::NS_TYPE_BRACKET) - && !std::operator==((int)v5, (int)&night::NS_TYPE_CALL) ) - { - v2 = std::operator==((int)v5, (int)&night::NS_TYPE_KW); - if ( !v2 ) - goto LABEL_22; - v3 = a1 + 60; - if ( !std::operator==("null", a1 + 60) - && !std::operator==("undefined", v3) - && !std::operator==((char *)off_552620, v3) ) // "NaN" - { - v2 = std::operator==("Infinity", v3); - goto LABEL_22; - } - } - v2 = 1; -LABEL_22: - v4 = v2; - std::string::_M_dispose(v5); - return v4; - } - return result; -} - -//----- (0040F3F4) -------------------------------------------------------- -bool __stdcall night::NSASTParse::is_exp(int a1) -{ - bool result; // al - bool v2; // al - int v3; // esi - bool v4; // [esp+1Fh] [ebp-29h] - void *v5[8]; // [esp+28h] [ebp-20h] BYREF - - result = 0; - if ( a1 ) - { - std::string::basic_string((char *)v5, a1); - if ( !std::operator==((int)v5, (int)&night::NS_TYPE_BOOL) - && !std::operator==((int)v5, (int)&night::NS_TYPE_VAR) - && !std::operator==((int)v5, (int)&night::NS_TYPE_STR) - && !std::operator==((int)v5, (int)&night::NS_TYPE_NUM) - && !std::operator==((int)v5, (int)&night::NS_TYPE_B_TYPE) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OP_SELF) - && !std::operator==((int)v5, (int)&night::NS_TYPE_BINARY) - && !std::operator==((int)v5, (int)&night::NS_TYPE_ASSIGN) - && !std::operator==((int)v5, (int)&night::NS_TYPE_TERNARY) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_DOT) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_PROPERTY) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_SELF_OP) - && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_BLOCK) - && !std::operator==((int)v5, (int)&night::NS_TYPE_ARRAY) - && !std::operator==((int)v5, (int)&night::NS_TYPE_BRACKET) - && !std::operator==((int)v5, (int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE) - && !std::operator==((int)v5, (int)&night::NS_TYPE_FUNC) - && !std::operator==((int)v5, (int)&night::NS_TYPE_CALL) ) - { - v2 = std::operator==((int)v5, (int)&night::NS_TYPE_KW); - if ( !v2 ) - goto LABEL_26; - v3 = a1 + 60; - if ( !std::operator==("null", a1 + 60) - && !std::operator==("undefined", v3) - && !std::operator==((char *)off_552620, v3) ) - { - v2 = std::operator==("Infinity", v3); - goto LABEL_26; - } - } - v2 = 1; -LABEL_26: - v4 = v2; - std::string::_M_dispose(v5); - return v4; - } - return result; -} - -//----- (0040F638) -------------------------------------------------------- -unsigned int __fastcall night::NSGod::hamlet(_DWORD *a1) -{ - unsigned int result; // eax - int v3; // esi - void **v4; // ebx - bool v5; // al - unsigned int i; // [esp+1Ch] [ebp-3Ch] - void *v7[12]; // [esp+28h] [ebp-30h] BYREF - - for ( i = 0; ; ++i ) - { - // this->offset_0.size() - result = (a1[1] - *a1) >> 2; - if ( i >= result ) - break; - // v3 = this->offset_0[i] - v3 = *(_DWORD *)(*a1 + 4 * i); - std::string::basic_string((char *)v7, v3); - // v3->offset_0 == night::std_v_n - if ( std::operator==((int)v7, (int)&night::std_v_n) ) - { - // v3->offset_24 - v4 = *(void ***)(v3 + 24); -LABEL_6: - if ( !v4 ) - goto LABEL_12; - if ( *v4 ) - operator delete(*v4); - goto LABEL_11; - } - v5 = std::operator==((int)v7, (int)&night::std_v_v_n); - v4 = *(void ***)(v3 + 24); - if ( v5 ) - goto LABEL_6; - if ( !v4 ) - goto LABEL_12; - std::string::_M_dispose(v4 + 39); - std::string::_M_dispose(v4 + 33); - std::string::_M_dispose(v4 + 27); - std::string::_M_dispose(v4 + 21); - std::string::_M_dispose(v4 + 15); - std::string::_M_dispose(v4 + 6); - std::string::_M_dispose(v4); -LABEL_11: - operator delete(v4); -LABEL_12: - std::string::_M_dispose((void **)v3); - operator delete((void *)v3); - std::string::_M_dispose(v7); - } - return result; -} - -//----- (0040F72A) -------------------------------------------------------- -_DWORD *__thiscall night::NSGod::gen_son(void *this, int a2) -{ - _DWORD *v3; // eax - _DWORD *v4; // ebx - int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - v3 = operator new(0x1Cu); - *v3 = v3 + 2; - v3[1] = 0; - *((_BYTE *)v3 + 8) = 0; - v6[0] = (int)v3; - std::string::_M_assign((int)v3, a2); - v4 = operator new(0xF8u); // 248 - *v4 = v4 + 2; // std::string offset_0 - v4[1] = 0; - *((_BYTE *)v4 + 8) = 0; - - v4[6] = v4 + 8; // std::string offset_24 - v4[7] = 0; - *((_BYTE *)v4 + 32) = 0; - - v4[15] = v4 + 17; // std::string offset_60 - v4[16] = 0; - *((_BYTE *)v4 + 68) = 0; - - v4[21] = v4 + 23; // std::string offset_84 - v4[22] = 0; - *((_BYTE *)v4 + 92) = 0; - - v4[27] = v4 + 29; // std::string offset_108 - v4[28] = 0; - *((_BYTE *)v4 + 116) = 0; - - v4[33] = v4 + 35; // std::string offset_132 - v4[34] = 0; - *((_BYTE *)v4 + 140) = 0; - - v4[39] = v4 + 41; // std::string offset_156 - v4[40] = 0; - *((_BYTE *)v4 + 164) = 0; - - v4[13] = 0; - v4[12] = 0; - *((_BYTE *)v4 + 200) = 0; - *((_BYTE *)v4 + 56) = 0; - v4[55] = 0; - v4[54] = 0; - v4[53] = 0; - v4[52] = 0; - v4[51] = 0; - v4[48] = 0; - v4[47] = 0; - v4[46] = 0; - v4[45] = 0; - v4[61] = 0; - v4[60] = 0; - v4[58] = 0; - v4[57] = 0; - v4[49] = 0; - v4[59] = 0; - v4[56] = 0; // offset_224 - std::string::_M_assign((int)v4, a2); - *(_DWORD *)(v6[0] + 24) = v4; - std::vector::push_back((int)this, v6); - return v4; -} -// 40F72A: using guessed type int var_1C[7]; - -//----- (0040F8E2) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall night::NSToken::read_string(night::NSStream **this, char a2, int a3) -{ - bool v4; // [esp+16h] [ebp-82h] - bool i; // [esp+17h] [ebp-81h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-80h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-80h] - int v9[3]; // [esp+54h] [ebp-44h] BYREF - void *v10[2]; // [esp+60h] [ebp-38h] BYREF - char v11; // [esp+68h] [ebp-30h] BYREF - void *v12[8]; // [esp+78h] [ebp-20h] BYREF - - night::NSStream::next(v12, this[1]); - v10[0] = &v11; // std::string - v10[1] = 0; - v11 = 0; - for ( i = 0; ; i = v4 ) - { - v4 = night::NSStream::eof(this[1]); - if ( v4 ) - break; - night::NSStream::next(v9, this[1]); - if ( LOBYTE(v9[0]) == '\n'/*10*/ ) - { - if ( !i ) - { - std::string::basic_string(v12, "Unexpected `\\n`"); - night::NSStream::err(this[1], (int)v12, 0, 0, 0); - } - std::string::push_back(v10, 10); - } - else - { - if ( !i ) - { - if ( LOBYTE(v9[0]) == '\\'/*92*/ ) - { - v4 = 1; - std::string::push_back(v10, 92); - continue; - } - if ( LOBYTE(v9[0]) == a2 ) - break; - } - std::string::push_back(v10, v9[0]); - } - } - lpuexcpta = *this; - std::string::basic_string((char *)v12, (int)&night::NS_TYPE_STR); - lpuexcptb = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v12); - std::string::_M_dispose(v12); - WXML::Rewrite::ToStringCode((int)v12, (int *)v10); - std::string::operator=((unsigned __int8 **)lpuexcptb + 15, (int)v12); - std::string::_M_dispose(v12); - std::string::_M_replace_aux((_DWORD *)lpuexcptb + 27, 0, *((_DWORD *)lpuexcptb + 28), 1u, a2); - std::string::_M_assign((int)lpuexcptb + 84, a3); - std::string::_M_dispose(v10); - return lpuexcptb; -} -// 40F8E2: using guessed type int var_44[3]; - -//----- (0040FB50) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall night::NSToken::read_number(night::NSStream **this, int a2) -{ - _DWORD *v2; // eax - char v4; // [esp+14h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-B0h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-B0h] - char v8; // [esp+5Fh] [ebp-69h] BYREF - void *v9[6]; // [esp+60h] [ebp-68h] BYREF - _DWORD v10[6]; // [esp+78h] [ebp-50h] BYREF - int v11[2]; // [esp+90h] [ebp-38h] BYREF - char v12; // [esp+98h] [ebp-30h] BYREF - int v13[8]; // [esp+A8h] [ebp-20h] BYREF - - v8 = 0; - night::NSToken::read_while[abi:cxx11]( - (int)v9, - (int)this, - (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::rw_cb_number, - (int)&v8); - night::NSStream::peek(v13, this[1]); - v4 = v13[0]; - if ( (unsigned __int8)night::NSToken::tk_is_var_start(SLOBYTE(v13[0])) ) - { - v11[0] = (int)&v12; - std::string::_M_construct(v11, 1u, v4); - std::operator+(v13, "Unexpected token `", (unsigned int *)v11); - v2 = std::string::append(v13, "`"); - std::string::basic_string(v10, v2); - std::string::_M_dispose((void **)v13); - std::string::_M_dispose((void **)v11); - night::NSStream::err(this[1], (int)v10, 0, 0, 0); - } - lpuexcpta = *this; - std::string::basic_string((char *)v13, (int)&night::NS_TYPE_NUM); - lpuexcptb = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v13); - std::string::_M_dispose((void **)v13); - std::string::_M_assign((int)lpuexcptb + 60, (int)v9); - std::string::_M_assign((int)lpuexcptb + 84, a2); - std::string::_M_dispose(v9); - return lpuexcptb; -} -// 40FB50: using guessed type _DWORD var_50[6]; - -//----- (0040FDB8) -------------------------------------------------------- -int __thiscall night::NSGod::gen_girl(void *this, int a2) -{ - _DWORD *v3; // eax - _DWORD *v4; // eax - int v5; // edx - _DWORD *v6; // eax - int v7; // edx - _DWORD *v9; // [esp+1Ch] [ebp-Ch] BYREF - - v3 = operator new(0x1Cu); // 0x1C -> 28 night::NSGod::GodsSon - - *v3 = v3 + 2; // v3.offset_8 缓冲区 - v3[1] = 0; // v3.offset_4 长度 - *((_BYTE *)v3 + 8) = 0; // 缓冲区第一个字节是0 - - v9 = v3; - // v3是一个std::string - std::string::_M_assign((int)v3, a2); - if ( std::operator==((int)&night::std_v_n, a2) ) - { - v4 = operator new(0xCu); - v5 = (int)v9; - *v4 = 0; - v4[1] = 0; - v4[2] = 0; - *(_DWORD *)(v5 + 24) = v4; - } - if ( std::operator==((int)&night::std_v_v_n, a2) ) - { - v6 = operator new(0xCu); - v7 = (int)v9; - *v6 = 0; - v6[1] = 0; - v6[2] = 0; - *(_DWORD *)(v7 + 24) = v6; - } - std::vector::push_back((int)this, &v9); - // v9->offset_24 - return v9[6]; -} - -//----- (0040FE80) -------------------------------------------------------- -void __thiscall night::NSToken::push(int this, int a2) -{ - if ( *(_DWORD *)(this + 8) ) - { - std::vector::push_back((void **)(this + 12), (char **)(this + 8)); - *(_DWORD *)(this + 8) = 0; - } - if ( a2 ) - std::vector::push_back((void **)(this + 12), (char **)&a2); -} - -//----- (0040FEC2) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall night::NSToken::read_var(int this, int a2) -{ - _DWORD *v2; // eax - _DWORD *v3; // eax - void *v4; // eax - unsigned int v6; // [esp+10h] [ebp-B8h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-B0h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-B0h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-B0h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-B0h] - _DWORD v12[3]; // [esp+54h] [ebp-74h] BYREF - void *v13[6]; // [esp+60h] [ebp-68h] BYREF - int v14[6]; // [esp+78h] [ebp-50h] BYREF - int v15[6]; // [esp+90h] [ebp-38h] BYREF - void *v16[8]; // [esp+A8h] [ebp-20h] BYREF - - night::NSStream::peek(v12, *(night::NSStream **)(this + 4)); - night::NSToken::read_while[abi:cxx11]( - (int)v13, - this, - (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_var, - 0); - std::string::basic_string((char *)v14, (int)v13); - std::operator+((int)v15, " ", (int)v14); - v2 = std::string::append(v15, " "); - std::string::basic_string(v16, v2); - lpuexcptb = (struct _Unwind_Exception *)std::string::find(night::NS_BUILTIN_TYPE, (int)v16, 0); - std::string::_M_dispose(v16); - std::string::_M_dispose((void **)v15); - std::string::_M_dispose((void **)v14); - if ( lpuexcptb == (struct _Unwind_Exception *)-1 ) - { - std::string::basic_string((char *)v14, (int)v13); - std::operator+((int)v15, " ", (int)v14); - v3 = std::string::append(v15, " "); - std::string::basic_string(v16, v3); - v6 = std::string::find(night::NS_BUILTIN_KW, (int)v16, 0); - std::string::_M_dispose(v16); - std::string::_M_dispose((void **)v15); - std::string::_M_dispose((void **)v14); - lpuexcpta = *(struct _Unwind_Exception **)this; - v4 = &night::NS_TYPE_KW; - if ( v6 == -1 ) - v4 = &night::NS_TYPE_VAR; - std::string::basic_string((char *)v16, (int)v4); - lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v16); - std::string::_M_dispose(v16); - if ( v6 == -1 ) - std::operator+((char *)v16, (int)&night::nsv_, (int)v13); - else - std::string::basic_string((char *)v16, (int)v13); - - std::string::operator=((unsigned __int8 **)lpuexcpt + 15, (int)v16); - std::string::_M_dispose(v16); - std::string::_M_assign((int)lpuexcpt + 24, (int)v13); - std::string::_M_assign((int)lpuexcpt + 84, a2); - *((_DWORD *)lpuexcpt + 12) = v12[1]; - *((_DWORD *)lpuexcpt + 13) = v12[2]; - if ( !*std::map::operator[]((void **)(this + 24), (int)v13) ) - *std::map::operator[]((void **)(this + 24), (int)v13) = *(void **)(this + 44); - } - else - { - lpuexcptc = *(struct _Unwind_Exception **)this; - std::string::basic_string((char *)v16, (int)&night::NS_TYPE_B_TYPE); - lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcptc, (int)v16); - std::string::_M_dispose(v16); - std::string::_M_assign((int)lpuexcpt + 60, (int)v13); - std::string::_M_assign((int)lpuexcpt + 84, a2); - } - std::string::_M_dispose(v13); - return lpuexcpt; -} -// 565A60: using guessed type int night::NS_BUILTIN_TYPE[6]; -// 565A78: using guessed type int night::NS_BUILTIN_KW[6]; - -//----- (004102F0) -------------------------------------------------------- -unsigned __int8 **__fastcall night::NSToken::read_next(int a1) -{ - int v1; // eax - struct _Unwind_Exception *string; // eax - _DWORD *v3; // eax - unsigned int v5; // [esp+10h] [ebp-B8h] - unsigned int v6; // [esp+10h] [ebp-B8h] - unsigned __int8 **v7; // [esp+14h] [ebp-B4h] - char v8; // [esp+14h] [ebp-B4h] - night::NSStream *v9; // [esp+14h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-B0h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-B0h] - int v13[3]; // [esp+54h] [ebp-74h] BYREF - void *v14[6]; // [esp+60h] [ebp-68h] BYREF - int v15[2]; // [esp+78h] [ebp-50h] BYREF - char v16[16]; // [esp+80h] [ebp-48h] BYREF - int v17[2]; // [esp+90h] [ebp-38h] BYREF - char v18; // [esp+98h] [ebp-30h] BYREF - void *v19[2]; // [esp+A8h] [ebp-20h] BYREF - char v20; // [esp+B0h] [ebp-18h] BYREF - - v1 = *(_DWORD *)(a1 + 16); - if ( v1 == *(_DWORD *)(a1 + 12) ) - { - night::NSToken::read_while[abi:cxx11]( - (int)v14, - a1, - (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_whitespace, - 0); - if ( night::NSStream::eof(*(night::NSStream **)(a1 + 4)) - || (night::NSToken::skip_comment((night::NSStream **)a1, (unsigned __int8 **)v14), - night::NSStream::eof(*(night::NSStream **)(a1 + 4))) ) - { - v7 = 0; - } - else - { - night::NSStream::peek(v13, *(night::NSStream **)(a1 + 4)); - v8 = v13[0]; - if ( LOBYTE(v13[0]) == '"'/*34*/ || LOBYTE(v13[0]) == '\''/*39*/ ) - { - string = night::NSToken::read_string((night::NSStream **)a1, v13[0], (int)v14); - } - else if ( (unsigned __int8)(LOBYTE(v13[0]) - 48) > 9u ) - { - if ( !(unsigned __int8)night::NSToken::tk_is_var_start(SLOBYTE(v13[0])) ) - { - v17[0] = (int)&v18; - std::string::_M_construct(v17, 1u, v8); - v5 = std::string::find(night::NS_BUILTIN_PUNC, (int)v17, 0); - std::string::_M_dispose((void **)v17); - if ( v5 == -1 ) - { - v19[0] = &v20; - std::string::_M_construct(v19, 1u, v8); - v6 = std::string::find(night::NS_BUILTIN_OP, (int)v19, 0); - std::string::_M_dispose(v19); - if ( v6 == -1 ) - { - v15[0] = (int)v16; - lpuexcptb = *(struct _Unwind_Exception **)(a1 + 4); - std::string::_M_construct(v15, 1u, v8); - std::operator+(v17, "Unexpected token `", (unsigned int *)v15); - v3 = std::string::append(v17, "`"); - std::string::basic_string(v19, v3); - night::NSStream::err(lpuexcptb, (int)v19, 0, 0, 0); - } - v15[0] = (int)v16; // STD::STRING - v15[1] = 0; - v16[0] = 0; - night::NSToken::read_while[abi:cxx11]( - (int)v17, - a1, - (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_valid_op_str, - (int)v15); - lpuexcpta = *(struct _Unwind_Exception **)a1; - std::string::basic_string((char *)v19, (int)&night::NS_TYPE_OP); - v7 = (unsigned __int8 **)night::NSGod::gen_son(lpuexcpta, (int)v19); - std::string::_M_dispose(v19); - std::string::_M_assign((int)(v7 + 15), (int)v17); - std::string::_M_assign((int)(v7 + 21), (int)v14); - std::string::_M_dispose((void **)v17); - std::string::_M_dispose((void **)v15); - } - else - { - v9 = *(night::NSStream **)a1; - std::string::basic_string((char *)v19, (int)&night::NS_TYPE_PUNC); - v7 = (unsigned __int8 **)night::NSGod::gen_son(v9, (int)v19); - std::string::_M_dispose(v19); - night::NSStream::next(v19, *(night::NSStream **)(a1 + 4)); - v15[0] = (int)v16; - std::string::_M_construct(v15, 1u, (char)v19[0]); - // v7->offset_60 - std::string::operator=(v7 + 15, (int)v15); - std::string::_M_dispose((void **)v15); - // v7->offset_84 - std::string::_M_assign((int)(v7 + 21), (int)v14); - } - goto LABEL_19; - } - string = night::NSToken::read_var(a1, (int)v14); - } - else - { - string = night::NSToken::read_number((night::NSStream **)a1, (int)v14); - } - v7 = (unsigned __int8 **)string; - } - LABEL_19: - std::string::_M_dispose(v14); - return v7; - } - v7 = *(unsigned __int8 ***)(v1 - 4); - *(_DWORD *)(a1 + 16) = v1 - 4; - return v7; -} -// 565AA8: using guessed type int night::NS_BUILTIN_PUNC[6]; -// 565AF0: using guessed type int night::NS_BUILTIN_OP[6]; -// 4102F0: using guessed type int var_74[3]; - -//----- (0041081E) -------------------------------------------------------- -unsigned __int8 **__fastcall night::NSToken::peek(int a1) -{ - unsigned __int8 **result; // eax - - result = *(unsigned __int8 ***)(a1 + 8); - if ( !result ) - { - result = night::NSToken::read_next(a1); - *(_DWORD *)(a1 + 8) = result; - } - return result; -} - -//----- (0041083A) -------------------------------------------------------- -bool __fastcall night::NSToken::eof(int a1) -{ - return night::NSToken::peek(a1) == 0; -} - -//----- (0041084C) -------------------------------------------------------- -unsigned __int8 **__thiscall night::NSASTParse::is_punctuation(int *this, int a2) -{ - unsigned __int8 **v2; // eax - unsigned __int8 **v3; // ebx - - v2 = night::NSToken::peek(this[7]); - v3 = v2; - if ( v2 ) - { - if ( std::operator==((int)&night::NS_TYPE_PUNC, (int)v2) ) - { - if ( !std::operator==(a2, (int)(v3 + 15)) ) - return 0; - } - else - { - return 0; - } - } - return v3; -} - -//----- (004108A0) -------------------------------------------------------- -unsigned __int8 **__thiscall night::NSASTParse::is_buildin_keywords(int *this, int a2) -{ - unsigned __int8 **v2; // eax - unsigned __int8 **v3; // ebx - - v2 = night::NSToken::peek(this[7]); - v3 = v2; - if ( v2 ) - { - if ( std::operator==((int)&night::NS_TYPE_KW, (int)v2) ) - { - if ( !std::operator==(a2, (int)(v3 + 15)) ) - return 0; - } - else - { - return 0; - } - } - return v3; -} - -//----- (004108F4) -------------------------------------------------------- -unsigned __int8 **__thiscall night::NSASTParse::is_op(int *this, int a2) -{ - unsigned __int8 **v2; // eax - unsigned __int8 **v3; // ebx - - v2 = night::NSToken::peek(this[7]); - v3 = v2; - if ( v2 ) - { - if ( std::operator==((int)&night::NS_TYPE_OP, (int)v2) ) - { - if ( *(_DWORD *)(a2 + 4) && !std::operator==(a2, (int)(v3 + 15)) ) - return 0; - } - else - { - return 0; - } - } - return v3; -} - -//----- (00410950) -------------------------------------------------------- -unsigned __int8 **__thiscall night::NSASTParse::is_op_or_comma(int *this, int a2) -{ - unsigned __int8 **lpuexcpt; // [esp+18h] [ebp-60h] - void *v5[8]; // [esp+58h] [ebp-20h] BYREF - - std::string::basic_string(v5, ","); - lpuexcpt = night::NSASTParse::is_punctuation(this, (int)v5); - std::string::_M_dispose(v5); - if ( !lpuexcpt ) - return night::NSASTParse::is_op(this, a2); - std::string::_M_assign((int)lpuexcpt, (int)&night::NS_TYPE_OP); - return lpuexcpt; -} - -//----- (00410A24) -------------------------------------------------------- -int __fastcall night::NSASTParse::end_line(int a1) -{ - unsigned __int8 **v1; // eax - int v2; // edx - - v1 = night::NSToken::peek(*(_DWORD *)(a1 + 28)); - LOBYTE(v2) = 1; - if ( v1 ) - LOBYTE(v2) = std::string::find((int *)v1 + 21, 10, 0) + 1 != 0; - return v2; -} -// 410A56: variable 'v2' is possibly undefined - -//----- (00410A5A) -------------------------------------------------------- -int __userpurge night::NSASTParse::is_op_self@(int a1@, night::NSASTParse *this, bool a3) -{ - unsigned __int8 **v3; // eax - int v4; // ebx - int v5; // edi - int v6; // eax - int v7; // eax - - v3 = night::NSToken::peek(*(_DWORD *)(a1 + 28)); - if ( !v3 ) - return 0; - v5 = (int)v3; - LOBYTE(v6) = std::operator==((int)&night::NS_TYPE_OP, (int)v3); - v4 = v6; - if ( !(_BYTE)v6 ) - return 0; - if ( std::string::find_first_not_of((int *)(v5 + 60), (int)&night::NS_BUILTIN_OP_SELF, 0) == -1 ) - return v4; - if ( !(_BYTE)this || !std::operator==((int)&night::NS_TYPE_OP, v5) ) - return 0; - if ( !std::operator==("-", v5 + 60) ) - { - LOBYTE(v7) = std::operator==("+", v5 + 60); - return v7; - } - return v4; -} -// 410A8B: variable 'v6' is possibly undefined -// 410AED: variable 'v7' is possibly undefined - -//----- (00410AFC) -------------------------------------------------------- -bool __userpurge night::NSASTParse::is_obj_op_self@(int *a1@, night::NSASTParse *this, bool a3) -{ - unsigned __int8 **v3; // eax - bool lpuexcpt; // [esp+18h] [ebp-70h] - void *v7[6]; // [esp+50h] [ebp-38h] BYREF - void *v8[8]; // [esp+68h] [ebp-20h] BYREF - - if ( (_BYTE)this ) - { - v3 = night::NSToken::peek(a1[7]); - if ( v3 ) - { - if ( std::string::find((int *)v3 + 21, 10, 0) != (char *)-1 ) - return 0; - } - } - std::string::basic_string(v7, "++"); - lpuexcpt = 1; - if ( !night::NSASTParse::is_op(a1, (int)v7) ) - { - std::string::basic_string(v8, "--"); - lpuexcpt = night::NSASTParse::is_op(a1, (int)v8) != 0; - std::string::_M_dispose(v8); - } - std::string::_M_dispose(v7); - return lpuexcpt; -} - -//----- (00410C40) -------------------------------------------------------- -unsigned __int8 **__fastcall night::NSToken::next(int a1) -{ - unsigned __int8 **result; // eax - - result = *(unsigned __int8 ***)(a1 + 8); - *(_DWORD *)(a1 + 8) = 0; - if ( !result ) - return night::NSToken::read_next(a1); - return result; -} - -//----- (00410C56) -------------------------------------------------------- -void __thiscall night::NSASTParse::ignore_punc_pass_sem(int *this, int a2) -{ - _DWORD *v2; // eax - _DWORD *v3; // [esp+10h] [ebp-98h] - unsigned __int8 **v4; // [esp+14h] [ebp-94h] - bool v5; // [esp+14h] [ebp-94h] - unsigned int v6; // [esp+14h] [ebp-94h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-90h] - int v9[6]; // [esp+58h] [ebp-50h] BYREF - int v10[6]; // [esp+70h] [ebp-38h] BYREF - void *v11[8]; // [esp+88h] [ebp-20h] BYREF - - if ( night::NSASTParse::is_punctuation(this, a2) ) - { - night::NSToken::next(this[7]); - } - else if ( !std::operator==(";", a2) ) - { - v4 = night::NSToken::peek(this[7]); - std::string::basic_string((void **)v9, " "); - if ( v4 ) - { - v3 = v4 + 15; - if ( (unsigned int)v4[16] > 3 - && (std::string::substr(v11, v3, 0, 3u), - v5 = std::operator==((int)v11, (int)&night::nsv_), - std::string::_M_dispose(v11), - v5) ) - { - std::string::substr(v11, v3, 3u, 0xFFFFFFFF); - std::string::operator=((unsigned __int8 **)v9, (int)v11); - std::string::_M_dispose(v11); - } - else - { - std::string::_M_assign((int)v9, (int)v3); - } - v6 = -v9[1]; - } - else - { - v6 = 0; - } - lpuexcpta = (struct _Unwind_Exception *)this[7]; - std::operator+((int)v10, "Unexpected identifier `", (int)v9); - v2 = std::string::append(v10, "`"); - std::string::basic_string(v11, v2); - night::NSToken::err((int)lpuexcpta, (int)v11, 0, v6, 0); - } -} - -//----- (00410EF0) -------------------------------------------------------- -void __thiscall night::NSASTParse::ignore_punc(int *this, int a2) -{ - unsigned __int8 **v2; // eax - int v3; // ecx - _DWORD *v4; // eax - _DWORD *v6; // [esp+14h] [ebp-94h] - int v7; // [esp+14h] [ebp-94h] - unsigned __int8 **lpuexcpt; // [esp+18h] [ebp-90h] - bool lpuexcptb; // [esp+18h] [ebp-90h] - unsigned int lpuexcpta; // [esp+18h] [ebp-90h] - int v11[6]; // [esp+58h] [ebp-50h] BYREF - int v12[6]; // [esp+70h] [ebp-38h] BYREF - void *v13[8]; // [esp+88h] [ebp-20h] BYREF - - v2 = night::NSASTParse::is_punctuation(this, a2); - v3 = this[7]; - if ( !v2 ) - { - lpuexcpt = night::NSToken::peek(v3); - std::string::basic_string((void **)v11, " "); - if ( lpuexcpt ) - { - v6 = lpuexcpt + 15; - if ( (unsigned int)lpuexcpt[16] > 3 - && (std::string::substr(v13, v6, 0, 3u), - lpuexcptb = std::operator==((int)v13, (int)&night::nsv_), - std::string::_M_dispose(v13), - lpuexcptb) ) - { - std::string::substr(v13, v6, 3u, 0xFFFFFFFF); - std::string::operator=((unsigned __int8 **)v11, (int)v13); - std::string::_M_dispose(v13); - } - else - { - std::string::_M_assign((int)v11, (int)v6); - } - lpuexcpta = -v11[1]; - } - else - { - lpuexcpta = 0; - } - v7 = this[7]; - std::operator+((int)v12, "Unexpected identifier `", (int)v11); - v4 = std::string::append(v12, "`"); - std::string::basic_string(v13, v4); - night::NSToken::err(v7, (int)v13, 0, lpuexcpta, 0); - } - night::NSToken::next(v3); -} - -//----- (00411166) -------------------------------------------------------- -void __thiscall night::NSASTParse::ignore_buildin_kw(int *this, int a2) -{ - unsigned __int8 **v2; // eax - _DWORD *v3; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] - int v6[6]; // [esp+50h] [ebp-38h] BYREF - _DWORD v7[8]; // [esp+68h] [ebp-20h] BYREF - - v2 = night::NSASTParse::is_buildin_keywords(this, a2); - lpuexcpt = (struct _Unwind_Exception *)this[7]; - if ( !v2 ) - { - std::operator+((int)v6, "Expected `", a2); - v3 = std::string::append(v6, "`"); - std::string::basic_string(v7, v3); - night::NSToken::err((int)lpuexcpt, (int)v7, 0, 0, 0); - } - night::NSToken::next((int)lpuexcpt); -} -// 411166: using guessed type _DWORD var_20[8]; - -//----- (0041127E) -------------------------------------------------------- -void __thiscall night::NSASTParse::ignore_op(int *this, int a2) -{ - unsigned __int8 **v2; // eax - _DWORD *v3; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] - int v6[6]; // [esp+50h] [ebp-38h] BYREF - _DWORD v7[8]; // [esp+68h] [ebp-20h] BYREF - - v2 = night::NSASTParse::is_op(this, a2); - lpuexcpt = (struct _Unwind_Exception *)this[7]; - if ( !v2 ) - { - std::operator+((int)v6, "Expected operator `", a2); - v3 = std::string::append(v6, "`"); - std::string::basic_string(v7, v3); - night::NSToken::err((int)lpuexcpt, (int)v7, 0, 0, 0); - } - night::NSToken::next((int)lpuexcpt); -} -// 41127E: using guessed type _DWORD var_20[8]; - -//----- (00411396) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_trans_kw(int *a1) -{ - int v1; // ecx - int v2; // eax - struct _Unwind_Exception *v3; // eax - _DWORD *v4; // eax - unsigned __int8 **v5; // eax - int v6; // eax - night::NSASTParse *v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - unsigned __int8 **v11; // eax - _DWORD *v12; // eax - _DWORD *v13; // eax - _DWORD *v14; // eax - _DWORD *v15; // eax - night::NSASTParse *v17; // [esp+0h] [ebp-B8h] - char v18; // [esp+17h] [ebp-A1h] - unsigned int v19; // [esp+18h] [ebp-A0h] - unsigned int v20; // [esp+1Ch] [ebp-9Ch] - _DWORD *v21; // [esp+1Ch] [ebp-9Ch] - void *v22; // [esp+1Ch] [ebp-9Ch] - void **v23; // [esp+1Ch] [ebp-9Ch] - unsigned __int8 **v24; // [esp+20h] [ebp-98h] - int v25; // [esp+20h] [ebp-98h] - int v26; // [esp+20h] [ebp-98h] - void *v28; // [esp+24h] [ebp-94h] - int v29; // [esp+24h] [ebp-94h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcpte; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptd; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptf; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptg; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcpth; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcpti; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptj; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptk; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptl; // [esp+28h] [ebp-90h] - int v43[6]; // [esp+68h] [ebp-50h] BYREF - int v44[6]; // [esp+80h] [ebp-38h] BYREF - void *v45[8]; // [esp+98h] [ebp-20h] BYREF - - v1 = a1[7]; - v2 = *(_DWORD *)(v1 + 4); - v19 = *(_DWORD *)(v2 + 52); - v20 = *(_DWORD *)(v2 + 56); - v24 = night::NSToken::next(v1); - std::string::basic_string((char *)v43, (int)(v24 + 15)); - if ( std::operator==("true", (int)v43) || std::operator==("false", (int)v43) ) - { - lpuexcpta = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v45, (int)&night::NS_TYPE_BOOL); - v3 = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v45); - goto LABEL_31; - } - if ( std::operator==("null", (int)v43) - || std::operator==("undefined", (int)v43) - || std::operator==((char *)off_552620, (int)v43) - || std::operator==("Infinity", (int)v43) ) - { -LABEL_50: - lpuexcptl = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v45, (int)&night::NS_TYPE_KW); - lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcptl, (int)v45); - std::string::_M_dispose(v45); - std::string::_M_assign((int)lpuexcpt + 24, (int)(v24 + 6)); - *((_DWORD *)lpuexcpt + 12) = v24[12]; - *((_DWORD *)lpuexcpt + 13) = v24[13]; - std::string::_M_assign((int)lpuexcpt + 60, (int)v43); - goto LABEL_51; // 销毁数据,返回lpt - } - if ( std::operator==("return", (int)v43) - || std::operator==("delete", (int)v43) - || std::operator==("void", (int)v43) ) - { - if ( !std::string::compare((int)v43, "return") && a1[8] <= 0 ) - { - lpuexcpte = (struct _Unwind_Exception *)a1[7]; - std::operator+((int)v44, "Illegal ", (int)v43); - v4 = std::string::append(v44, " statement"); - std::string::basic_string(v45, v4); - night::NSToken::err((int)lpuexcpte, (int)v45, v19, v20, 1); - } - lpuexcptb = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v45, (int)&night::NS_TYPE_VAR); - v21 = night::NSGod::gen_son(lpuexcptb, (int)v45); - std::string::_M_dispose(v45); - std::string::_M_assign((int)(v21 + 15), (int)v43); - std::string::_M_assign((int)(v21 + 6), (int)(v24 + 6)); - v21[12] = v24[12]; - v21[13] = v24[13]; - - lpuexcptc = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v45, (int)&night::std_v_v_n); - v25 = night::NSGod::gen_girl(lpuexcptc, (int)v45); - std::string::_M_dispose(v45); - lpuexcptd = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v45, (int)&night::NS_TYPE_CALL); - lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcptd, (int)v45); - std::string::_M_dispose(v45); - // offset_220 - *((_DWORD *)lpuexcpt + 55) = v21; - // offset_224 - *((_DWORD *)lpuexcpt + 56) = v25; - v5 = night::NSToken::peek(a1[7]); - if ( v5 && std::string::find((int *)v5 + 21, 10, 0) == (char *)-1 ) - { - v22 = (void *)a1[6]; - std::string::basic_string((char *)v45, (int)&night::std_v_n); - v6 = night::NSGod::gen_girl(v22, (int)v45); - v17 = v7; - v44[0] = v6; - std::string::_M_dispose(v45); - v23 = (void **)v44[0]; - v45[0] = (void *)night::NSASTParse::ast_expression(v17); - std::vector::emplace_back(v23, (char **)v45); - } - else - { - v28 = (void *)a1[6]; - std::string::basic_string((char *)v45, (int)&night::std_v_n); - v44[0] = night::NSGod::gen_girl(v28, (int)v45); - std::string::_M_dispose(v45); - } - std::vector>>::push_back(v25, v44); - goto LABEL_51; // 销毁数据,返回lpt - } - if ( std::operator==("typeof", (int)v43) ) - { - lpuexcptf = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v45, (int)&night::NS_TYPE_OP_SELF); - lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcptf, (int)v45); - std::string::_M_dispose(v45); - std::string::basic_string((char *)v45, (int)v43); - std::string::append(v45, " "); - std::string::operator=((unsigned __int8 **)lpuexcpt + 39, (int)v45); - std::string::_M_dispose(v45); - v8 = night::NSASTParse::ast_expression_no_binary(a1); - // lpuexcpt->offset_192 - *((_DWORD *)lpuexcpt + 48) = v8; - if ( !night::NSASTParse::is_exp((int)v8) ) - { - v29 = a1[7]; - std::operator+((int)v44, "Unexpected statement[", *((_DWORD *)lpuexcpt + 48)); - v9 = std::string::append(v44, "]"); - std::string::basic_string(v45, v9); - night::NSToken::err(v29, (int)v45, v19, v20, 1); - } - goto LABEL_51; // 销毁数据,返回lpt - } - if ( std::operator==("this", (int)v43) ) - goto LABEL_30; - if ( !std::operator==("arguments", (int)v43) ) - { - if ( !std::operator==("break", (int)v43) && !std::operator==("continue", (int)v43) ) - { - lpuexcpti = (struct _Unwind_Exception *)a1[7]; - std::operator+((int)v44, "Unexpected token `", (int)v43); - v15 = std::string::append(v44, "`"); - std::string::basic_string(v45, v15); - night::NSToken::err((int)lpuexcpti, (int)v45, v19, v20, 1); - } - if ( !std::string::compare((int)v43, "break") && a1[9] <= 0 - || !std::string::compare((int)v43, "continue") && a1[10] <= 0 ) - { - lpuexcptj = (struct _Unwind_Exception *)a1[7]; - std::operator+((int)v44, "Illegal ", (int)v43); - v13 = std::string::append(v44, " statement"); - std::string::basic_string(v45, v13); - night::NSToken::err((int)lpuexcptj, (int)v45, v19, v20, 1); - } - v18 = night::NSASTParse::end_line((int)a1); - if ( !v18 ) - { - std::string::basic_string((void **)v44, ";"); - if ( !night::NSASTParse::is_punctuation(a1, (int)v44) ) - { - std::string::basic_string(v45, "}"); - v18 = night::NSASTParse::is_punctuation(a1, (int)v45) == 0; - std::string::_M_dispose(v45); - } - std::string::_M_dispose((void **)v44); - if ( v18 ) - { - lpuexcptk = (struct _Unwind_Exception *)a1[7]; - std::operator+((int)v44, "Unexpected token after `", (int)v43); - v14 = std::string::append(v44, "`"); - std::string::basic_string(v45, v14); - night::NSToken::err((int)lpuexcptk, (int)v45, v19, v20, 1); - } - } - goto LABEL_50; - } - if ( a1[8] <= 0 ) - { - lpuexcptg = (struct _Unwind_Exception *)a1[7]; - std::operator+((int)v44, "Illegal ", (int)v43); - v10 = std::string::append(v44, " statement"); - std::string::basic_string(v45, v10); - night::NSToken::err((int)lpuexcptg, (int)v45, v19, v20, 1); - } -LABEL_30: - lpuexcpth = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v45, (int)&night::NS_TYPE_KW); - v3 = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpth, (int)v45); -LABEL_31: - lpuexcpt = v3; - std::string::_M_dispose(v45); - std::string::_M_assign((int)lpuexcpt + 60, (int)v43); - std::string::_M_assign((int)lpuexcpt + 24, (int)(v24 + 6)); - *((_DWORD *)lpuexcpt + 12) = v24[12]; - *((_DWORD *)lpuexcpt + 13) = v24[13]; - v11 = night::NSToken::peek(a1[7]); - if ( v11 ) - { - v26 = (int)(v11 + 15); - if ( std::operator==("[", (int)(v11 + 15)) ) - { - v12 = night::NSASTParse::ast_obj_op(a1, (int)lpuexcpt); -LABEL_36: - lpuexcpt = (struct _Unwind_Exception *)night::NSASTParse::make_call_or_just_expression(a1, v12); - goto LABEL_51; // 销毁数据,返回lpt - } - if ( std::operator==(".", v26) ) - { - v12 = night::NSASTParse::ast_obj_dot(a1, (int)lpuexcpt); - goto LABEL_36; - } - } -LABEL_51: - std::string::_M_dispose((void **)v43); - return lpuexcpt; -} -// 411877: variable 'v7' is possibly undefined - -//----- (004120C0) -------------------------------------------------------- -_DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, night::NSASTParse *this, bool a3) -{ - int v3; // eax - _DWORD *v4; // eax - unsigned int *v5; // ecx - unsigned __int8 **v6; // eax - _DWORD *v7; // eax - bool v9; // al - bool v10; // dl - _DWORD *v11; // eax - _DWORD *v12; // eax - unsigned __int8 **v13; // eax - unsigned __int8 **v14; // eax - _DWORD *v15; // eax - char *v17; // [esp+0h] [ebp-1E8h] - bool v18; // [esp+4h] [ebp-1E4h] - bool v19; // [esp+4h] [ebp-1E4h] - bool v20; // [esp+4h] [ebp-1E4h] - bool v21; // [esp+1Eh] [ebp-1CAh] - char v22; // [esp+1Fh] [ebp-1C9h] - char v23; // [esp+20h] [ebp-1C8h] - char v24; // [esp+21h] [ebp-1C7h] - char v25; // [esp+22h] [ebp-1C6h] - char v26; // [esp+23h] [ebp-1C5h] - unsigned int v27; // [esp+24h] [ebp-1C4h] - unsigned __int8 **v28; // [esp+24h] [ebp-1C4h] - char v29; // [esp+24h] [ebp-1C4h] - unsigned int v30; // [esp+28h] [ebp-1C0h] - unsigned __int8 **v31; // [esp+28h] [ebp-1C0h] - char v32; // [esp+28h] [ebp-1C0h] - void *v33; // [esp+2Ch] [ebp-1BCh] - void *v34; // [esp+2Ch] [ebp-1BCh] - void *v35; // [esp+2Ch] [ebp-1BCh] - void *v36; // [esp+2Ch] [ebp-1BCh] - unsigned __int8 **v37; // [esp+2Ch] [ebp-1BCh] - bool v38; // [esp+2Ch] [ebp-1BCh] - int v39; // [esp+2Ch] [ebp-1BCh] - int v40; // [esp+2Ch] [ebp-1BCh] - int v41; // [esp+2Ch] [ebp-1BCh] - unsigned __int8 **v42; // [esp+30h] [ebp-1B8h] - void *v43; // [esp+30h] [ebp-1B8h] - void **v44; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v45; // [esp+30h] [ebp-1B8h] - bool v46; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v47; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v48; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v49; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v50; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v51; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v52; // [esp+30h] [ebp-1B8h] - char v53; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v54; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v55; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v56; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v57; // [esp+30h] [ebp-1B8h] - void *v58; // [esp+30h] [ebp-1B8h] - unsigned __int8 **v59; // [esp+30h] [ebp-1B8h] - int v61; // [esp+34h] [ebp-1B4h] - int v62; // [esp+34h] [ebp-1B4h] - int v63; // [esp+34h] [ebp-1B4h] - int v64; // [esp+38h] [ebp-1B0h] - _DWORD *v65; // [esp+38h] [ebp-1B0h] - char is_op_self; // [esp+38h] [ebp-1B0h] - bool v67[4]; // [esp+78h] [ebp-170h] BYREF - int v68; // [esp+7Ch] [ebp-16Ch] - void *v69[6]; // [esp+90h] [ebp-158h] BYREF - void *v70[6]; // [esp+A8h] [ebp-140h] BYREF - void *v71[6]; // [esp+C0h] [ebp-128h] BYREF - void *v72[6]; // [esp+D8h] [ebp-110h] BYREF - void *v73[6]; // [esp+F0h] [ebp-F8h] BYREF - void *v74[6]; // [esp+108h] [ebp-E0h] BYREF - void *v75[6]; // [esp+120h] [ebp-C8h] BYREF - void *v76[6]; // [esp+138h] [ebp-B0h] BYREF - void *v77[6]; // [esp+150h] [ebp-98h] BYREF - void *v78[6]; // [esp+168h] [ebp-80h] BYREF - void *v79[6]; // [esp+180h] [ebp-68h] BYREF - void *v80[6]; // [esp+198h] [ebp-50h] BYREF - int v81[6]; // [esp+1B0h] [ebp-38h] BYREF - void *v82[8]; // [esp+1C8h] [ebp-20h] BYREF - - // ast_dispatch - 0 - std::string::basic_string(v82, (char *)asc_5527F4); // "(\000)\000{" - v42 = night::NSASTParse::is_punctuation(a1, (int)v82); - std::string::_M_dispose(v82); - if ( !v42 ) - { - std::string::basic_string((char *)v67, (int)(a1 + 11)); - std::string::operator=(a1 + 11, (char *)&byte_551F04); - std::string::basic_string(v82, (char *)&asc_5527F4[4]); // { - v45 = night::NSASTParse::is_punctuation(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v45 ) - { - v28 = night::NSToken::next(a1[7]); - v37 = night::NSToken::next(a1[7]); - v31 = night::NSToken::next(a1[7]); - v46 = 0; - if ( v37 ) - { - if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v37) - || (v46 = std::operator==((int)&night::NS_TYPE_STR, (int)v37)) ) - { - v46 = 0; - if ( v31 ) - { - v46 = std::operator==((int)&night::NS_TYPE_PUNC, (int)v31); - if ( v46 ) - v46 = std::operator==(":", (int)(v31 + 15)); - } - } - if ( std::operator==((int)&night::NS_TYPE_PUNC, (int)v37) ) - { - v9 = std::operator==("}", (int)(v37 + 15)); // offset_60 - v10 = v46; - if ( v9 ) - v10 = v9; - v46 = v10; - } - } - night::NSToken::push(a1[7], (int)v31); - night::NSToken::push(a1[7], (int)v37); - night::NSToken::push(a1[7], (int)v28); - if ( v46 ) - { - v11 = night::NSASTParse::ast_obj_block(a1); - LABEL_113: - v65 = night::NSASTParse::make_call_or_just_expression(a1, v11); - goto LABEL_114; // 销毁v67, 返回v65 - } - if ( !v68 || (unsigned __int8)std::operator!=("op not=", (int)v67) ) - { - v11 = night::NSASTParse::ast_code_block(a1); - goto LABEL_113; - } - } - std::string::basic_string(v82, "["); - v47 = night::NSASTParse::is_punctuation(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v47 ) - { - v11 = night::NSASTParse::ast_new_array(a1); - goto LABEL_113; - } - if ( night::NSASTParse::is_obj_op_self(a1, 0, v18) ) - { - v11 = night::NSASTParse::ast_obj_op_self(a1, 0); - goto LABEL_113; - } - is_op_self = night::NSASTParse::is_op_self((int)a1, (night::NSASTParse *)1, v19); - if ( is_op_self ) - { - v11 = night::NSASTParse::ast_op_self((int)a1); - goto LABEL_113; - } - std::string::basic_string(v82, "if"); - v48 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v48 ) - { - v11 = night::NSASTParse::ast_if(a1); - goto LABEL_113; - } - std::string::basic_string(v82, (char *)off_552210); // for - v49 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v49 ) - { - v11 = night::NSASTParse::ast_for(a1); - goto LABEL_113; - } - std::string::basic_string(v82, "while"); - v50 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v50 ) - { - v11 = night::NSASTParse::ast_while(a1); - goto LABEL_113; - } - std::string::basic_string(v82, "do"); - v51 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v51 ) - { - v11 = night::NSASTParse::ast_do_while(a1); - goto LABEL_113; - } - std::string::basic_string(v82, "switch"); - v52 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v52 ) - { - v11 = night::NSASTParse::ast_switch(a1); - goto LABEL_113; - } - std::string::basic_string(v69, "true"); - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v69) ) - { - v38 = 0; // 销毁字符串 - v53 = 0; // 销毁字符串 - v26 = 0; // 销毁字符串 - v29 = 0; // 销毁字符串 - v32 = 0; // 销毁字符串 - v23 = 0; // 销毁字符串 - v22 = 0; // 销毁字符串 - v25 = 0; // 销毁字符串 - v24 = 0; // 销毁字符串 - } - else - { - std::string::basic_string(v70, "false"); - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v70) ) - { - v38 = 0; - v53 = 0; - v26 = 0; - v29 = 0; - v32 = 0; - v23 = 0; - v22 = 0; - v25 = 0; - } - else - { - std::string::basic_string(v71, "null"); - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v71) ) - { - v38 = 0; - v53 = 0; - v26 = 0; - v29 = 0; - v32 = 0; - v23 = 0; - v22 = 0; - } - else - { - std::string::basic_string(v72, "undefined"); - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v72) ) - { - v38 = 0; - v53 = 0; - v26 = 0; - v29 = 0; - v32 = 0; - v23 = 0; - } - else - { - std::string::basic_string(v73, (char *)off_552620); // NaN - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v73) ) - { - v38 = 0; - v53 = 0; - v26 = 0; - v29 = 0; - v32 = 0; - } - else - { - std::string::basic_string(v74, "Infinity"); - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v74) ) - { - v38 = 0; - v53 = 0; - v26 = 0; - v29 = 0; - } - else - { - std::string::basic_string(v75, "return"); - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v75) ) - { - v38 = 0; - v53 = 0; - v26 = 0; - } - else - { - std::string::basic_string(v76, "delete"); - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v76) ) - { - v38 = 0; - v53 = 0; - } - else - { - std::string::basic_string(v77, "void"); - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v77) ) - { - v38 = 0; - } - else - { - std::string::basic_string(v78, "typeof"); - if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v78) ) - { - std::string::basic_string(v79, "this"); - if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v79) ) - { - std::string::basic_string(v80, "arguments"); - v21 = 1; - if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v80) ) - { - std::string::basic_string((void **)v81, "break"); - v21 = 1; - if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v81) ) - { - std::string::basic_string(v82, "continue"); - v21 = night::NSASTParse::is_buildin_keywords(a1, (int)v82) != 0; - std::string::_M_dispose(v82); - } - std::string::_M_dispose((void **)v81); - } // end arguments - std::string::_M_dispose(v80); - v22 = 1; - v23 = 1; - v24 = 1; - v25 = 1; - v26 = 1; - v29 = 1; - v32 = 1; - v38 = 1; - v53 = 1; - goto LABEL_61; // LABEL_62 - }// end this - is_op_self = 1; - } - v38 = 1; - } - v53 = 1; - } - v26 = 1; - } // return end - v29 = 1; - } - v32 = 1; - } - v23 = 1; - } - v22 = 1; - } - v25 = 1; - } - v24 = 1; // 用于销毁字符串 - } // end check for "true" - v21 = 1; - if ( !is_op_self )// true 与 false 都是执行 label_62 - { - LABEL_62: - if ( v38 ) - std::string::_M_dispose(v78); - if ( v53 ) - std::string::_M_dispose(v77); - if ( v26 ) - std::string::_M_dispose(v76); - if ( v29 ) - std::string::_M_dispose(v75); - if ( v32 ) - std::string::_M_dispose(v74); - if ( v23 ) - std::string::_M_dispose(v73); - if ( v22 ) - std::string::_M_dispose(v72); - if ( v25 ) - std::string::_M_dispose(v71); - if ( v24 ) - std::string::_M_dispose(v70); - std::string::_M_dispose(v69); - if ( v21 ) - { - v11 = night::NSASTParse::ast_trans_kw(a1); - goto LABEL_113; - } - std::string::basic_string(v82, "require"); - v54 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v54 ) - { - v11 = night::NSASTParse::ast_require(a1); - goto LABEL_113; - } - std::string::basic_string(v82, (char *)off_551FFE); // var - v55 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v55 ) - { - v11 = night::NSASTParse::ast_var(a1); - goto LABEL_113; - } - std::string::basic_string(v82, "function"); - v56 = night::NSASTParse::is_buildin_keywords(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v56 ) - { - v11 = night::NSASTParse::ast_function(a1); - goto LABEL_113; - } - std::string::basic_string(v82, ";"); - v57 = night::NSASTParse::is_punctuation(a1, (int)v82); - std::string::_M_dispose(v82); - if ( v57 ) - { - v58 = (void *)a1[6]; - std::string::basic_string((char *)v82, (int)&night::NS_TYPE_SKIP); - v12 = night::NSGod::gen_son(v58, (int)v82); - v65 = night::NSASTParse::make_call_or_just_expression(a1, v12); - std::string::_M_dispose(v82); - LABEL_114: // 销毁v67, 返回v65 - std::string::_M_dispose((void **)v67); - return v65; - } - v59 = night::NSToken::next(a1[7]); - if ( !v59 ) - { - v62 = a1[7]; - std::string::basic_string(v82, "End of file"); - night::NSToken::err(v62, (int)v82, 0, 0, 0); - } - if ( !std::operator==((int)&night::NS_TYPE_VAR, (int)v59) - && !std::operator==((int)&night::NS_TYPE_NUM, (int)v59) - && !std::operator==((int)&night::NS_TYPE_STR, (int)v59) ) - { - v39 = (int)(v59 + 15); - if ( !std::operator==((int)&night::NS_TYPE_B_TYPE, (int)v59) ) - { - v63 = a1[7]; - std::operator+((int)v81, "Unexpected token `", v39); - v15 = std::string::append(v81, "`"); - std::string::basic_string(v82, v15); - night::NSToken::err(v63, (int)v82, 0, 0, 0); - } - if ( !std::operator==("Number", v39) - && !std::operator==("Math", v39) - && !std::operator==("Date", v39) ) - { - goto LABEL_112; - } - v14 = night::NSToken::peek(a1[7]); - if ( !v14 ) - goto LABEL_112; - v41 = (int)(v14 + 15); - if ( !std::operator==("[", (int)(v14 + 15)) ) - { - if ( std::operator==(".", v41) ) - goto LABEL_111; - LABEL_112: - v11 = v59; - goto LABEL_113; - } - LABEL_99: - v11 = night::NSASTParse::ast_obj_op(a1, (int)v59); - goto LABEL_113; - } - v13 = night::NSToken::peek(a1[7]); - if ( v13 ) - { - v40 = (int)(v13 + 15); - if ( std::operator==("[", (int)(v13 + 15)) ) - goto LABEL_99; - if ( std::operator==(".", v40) ) - { - LABEL_111: - v11 = night::NSASTParse::ast_obj_dot(a1, (int)v59); - goto LABEL_113; - } - } - if ( night::NSASTParse::is_obj_op_self(a1, (night::NSASTParse *)1, v20) ) - { - v11 = night::NSASTParse::ast_obj_op_self(a1, (int)v59); - goto LABEL_113; - } - goto LABEL_112; - }// end is_op_self - LABEL_61: - std::string::_M_dispose(v79); - goto LABEL_62; - } - - // ast_dispatch - 5 - v43 = (void *)a1[6]; - std::string::basic_string((char *)v82, (int)&night::std_v_n); - v44 = (void **)night::NSGod::gen_girl(v43, (int)v82); - std::string::_M_dispose(v82); - v33 = (void *)a1[6]; - std::string::basic_string((char *)v82, (int)&night::NS_TYPE_PUNC); - v79[0] = night::NSGod::gen_son(v33, (int)v82); - std::string::_M_dispose(v82); - std::string::operator=((unsigned int *)v79[0] + 15, (char *)asc_5527F4);// "(\000)\000{" - v17 = std::vector::push_back(v44, (char **)v79); - night::NSToken::next(a1[7]); - v3 = *(_DWORD *)(a1[7] + 4); - v27 = *(_DWORD *)(v3 + 52); - v30 = *(_DWORD *)(v3 + 56); - v80[0] = (void *)night::NSASTParse::ast_expression((night::NSASTParse *)v17); - // ast_dispatch - 10 - if ( !night::NSASTParse::is_exp((int)v80[0]) ) - { - v34 = v80[0]; - if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_ASSIGN, (int)v80[0]) ) - { - v61 = a1[7]; - std::operator+((int)v81, "Unexpected statement[", (int)v34); - v4 = std::string::append(v81, "]"); - std::string::basic_string(v82, v4); - night::NSToken::err(v61, (int)v82, v27, v30, 1); - } - } - std::vector::push_back(v44, (char **)v80); - std::string::basic_string(v82, (char *)&asc_5527F4[2]); // "(\000)\000{" - night::NSASTParse::ignore_punc(a1, (int)v82); - std::string::_M_dispose(v82); - v35 = (void *)a1[6]; - std::string::basic_string((char *)v82, (int)&night::NS_TYPE_PUNC); - v79[0] = night::NSGod::gen_son(v35, (int)v82); - std::string::_M_dispose(v82); - std::string::operator=((unsigned int *)v79[0] + 15, (char *)&asc_5527F4[2]); // ")\000{" ? - std::vector::push_back(v44, (char **)v79); - v36 = (void *)a1[6]; - std::string::basic_string((char *)v82, (int)&night::NS_TYPE_BRACKET); - v79[0] = night::NSGod::gen_son(v36, (int)v82); - std::string::_M_dispose(v82); - v5 = (unsigned int *)v79[0]; - *((_DWORD *)v79[0] + 57) = v44; - std::string::operator=(v5 + 27, (char *)&byte_551F04); - v6 = night::NSToken::peek(a1[7]); - - // ast_dispatch - 15 - if ( v6 ) - { - v64 = (int)(v6 + 15); - if ( std::operator==("[", (int)(v6 + 15)) ) - { - v7 = night::NSASTParse::ast_obj_op(a1, (int)v79[0]); - return night::NSASTParse::make_call_or_just_expression(a1, v7); - } - if ( std::operator==(".", v64) ) - { - v7 = night::NSASTParse::ast_obj_dot(a1, (int)v79[0]); - return night::NSASTParse::make_call_or_just_expression(a1, v7); - } - } - - // ast_dispatch - 20 - return night::NSASTParse::make_call_or_just_expression(a1, (_DWORD *)v79[0]); -} -// 4127DA: variable 'v18' is possibly undefined -// 412807: variable 'v19' is possibly undefined -// 413267: variable 'v20' is possibly undefined - -//----- (00413A7E) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_op_self(int a1) -{ - bool v2; // [esp+4h] [ebp-74h] - unsigned __int8 **v3; // [esp+10h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - void *v7[8]; // [esp+58h] [ebp-20h] BYREF - - v3 = night::NSToken::next(*(_DWORD *)(a1 + 28)); - lpuexcpt = *(struct _Unwind_Exception **)(a1 + 24); - std::string::basic_string((char *)v7, (int)&night::NS_TYPE_OP_SELF); - lpuexcpta = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpt, (int)v7); - std::string::_M_dispose(v7); - std::string::_M_assign((int)lpuexcpta + 156, (int)(v3 + 15)); - *((_DWORD *)lpuexcpta + 48) = night::NSASTParse::ast_dispatch(0, v2); - return lpuexcpta; -} -// 413B25: variable 'v2' is possibly undefined - -//----- (00413B64) -------------------------------------------------------- -int __thiscall night::NSASTParse::make_binary_or_just_value(_DWORD *this, int a2, unsigned __int8 a3) -{ - unsigned __int8 **v3; // edx - int v4; // eax - bool v6; // al - bool v7; // zf - char *v8; // eax - int v9; // eax - void *v10; // eax - bool v12; // [esp+4h] [ebp-A4h] - bool v13; // [esp+4h] [ebp-A4h] - bool v14; // [esp+4h] [ebp-A4h] - unsigned int v15; // [esp+20h] [ebp-88h] - unsigned int v16; // [esp+24h] [ebp-84h] - int binary_or_just_value; // [esp+28h] [ebp-80h] - unsigned __int8 v18; // [esp+2Ch] [ebp-7Ch] - struct _Unwind_Exception *v19; // [esp+2Ch] [ebp-7Ch] - void *v20; // [esp+2Ch] [ebp-7Ch] - unsigned __int8 **v21; // [esp+30h] [ebp-78h] - int v22; // [esp+30h] [ebp-78h] - void *v23; // [esp+34h] [ebp-74h] - _DWORD *v24; // [esp+34h] [ebp-74h] - bool v25; // [esp+34h] [ebp-74h] - _DWORD *v26; // [esp+34h] [ebp-74h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-70h] - struct _Unwind_Exception *lpuexcptb; // [esp+38h] [ebp-70h] - struct _Unwind_Exception *lpuexcptc; // [esp+38h] [ebp-70h] - void *v31[6]; // [esp+70h] [ebp-38h] BYREF - void *v32[8]; // [esp+88h] [ebp-20h] BYREF - - if ( a3 ) - { - std::string::basic_string(v31, (char *)&byte_551F04); // '\0' - v21 = night::NSASTParse::is_op(this, (int)v31); - v18 = a3; - } - else - { - std::string::basic_string(v32, (char *)&byte_551F04); - v21 = night::NSASTParse::is_op_or_comma(this, (int)v32); - v18 = 0; - std::string::_M_dispose(v32); - } - if ( v18 ) - std::string::_M_dispose(v31); - if ( v21 - && !(unsigned __int8)night::NSASTParse::is_op_self((int)this, 0, v12) - && !night::NSASTParse::is_obj_op_self(this, 0, v13) - && night::NSASTParse::is_exp(a2) ) - { - v3 = night::NSToken::next(this[7]); - v4 = *(_DWORD *)(this[7] + 4); - v16 = *(_DWORD *)(v4 + 56); - v15 = *(_DWORD *)(v4 + 52); - v22 = (int)(v3 + 15); - if ( std::operator==("?", (int)(v3 + 15)) ) - { - v19 = night::NSASTParse::ast_ternary_expression(this); - if ( !night::NSASTParse::is_exp((int)v19) ) - { - lpuexcpta = (struct _Unwind_Exception *)this[7]; - std::string::basic_string(v32, "Expected exp"); - night::NSToken::err((int)lpuexcpta, (int)v32, v15, v16, 1); - } - v23 = (void *)this[6]; - std::string::basic_string((char *)v32, (int)&night::NS_TYPE_BINARY); - v24 = night::NSGod::gen_son(v23, (int)v32); - std::string::_M_dispose(v32); - std::string::_M_assign((int)(v24 + 39), v22); - v24[45] = a2; - v24[46] = v19; - return night::NSASTParse::make_binary_or_just_value(v24, a3); - } - else - { - v6 = std::operator==("=", v22); - v7 = !v6; - v25 = v6; - v8 = "="; - if ( v7 ) - v8 = "op not="; - std::string::operator=(this + 11, v8); - v9 = night::NSASTParse::ast_dispatch(0, v14); - binary_or_just_value = night::NSASTParse::make_binary_or_just_value(v9, a3); - if ( !night::NSASTParse::is_exp(binary_or_just_value) ) - { - lpuexcptb = (struct _Unwind_Exception *)this[7]; - std::string::basic_string(v32, "Expected exp"); - night::NSToken::err((int)lpuexcptb, (int)v32, v15, v16, 1); - } - v20 = (void *)this[6]; - v10 = &night::NS_TYPE_ASSIGN; - if ( !v25 ) - v10 = &night::NS_TYPE_BINARY; - std::string::basic_string((char *)v32, (int)v10); - v26 = night::NSGod::gen_son(v20, (int)v32); - std::string::_M_dispose(v32); - std::string::_M_assign((int)(v26 + 39), v22); // v3->offset_60 - v26[45] = a2; - v26[46] = binary_or_just_value; - if ( (std::operator==("/", (int)(v26 + 39)) || std::operator==("/=", (int)(v26 + 39))) - && (!night::NSASTParse::is_save_for_division(a2) - || !night::NSASTParse::is_save_for_division(binary_or_just_value)) ) - { - lpuexcptc = (struct _Unwind_Exception *)this[7]; - std::string::basic_string(v32, "Expected exp"); - night::NSToken::err((int)lpuexcptc, (int)v32, v15, v16, 1); - } - return night::NSASTParse::make_binary_or_just_value(v26, a3); - } - } - return a2; -} -// 413C43: variable 'v12' is possibly undefined -// 413C5B: variable 'v13' is possibly undefined -// 413DFE: variable 'v14' is possibly undefined - -//----- (0041402E) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_expression_no_comma(int *a1) -{ - int v1; // eax - _DWORD *binary_or_just_value; // eax - bool v4; // [esp+4h] [ebp-24h] - - v1 = night::NSASTParse::ast_dispatch(0, v4); - binary_or_just_value = (_DWORD *)night::NSASTParse::make_binary_or_just_value(a1, v1, 1u); - return night::NSASTParse::make_call_or_just_expression(a1, binary_or_just_value); -} -// 41403E: variable 'v4' is possibly undefined - -//----- (00414068) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_varname(int a1) -{ - int v1; // eax - night::NSASTParse *v3; // [esp+0h] [ebp-88h] - unsigned int v4; // [esp+1Ch] [ebp-6Ch] - unsigned int v5; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] - void *v9[8]; // [esp+68h] [ebp-20h] BYREF - - v1 = *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4); - v4 = *(_DWORD *)(v1 + 52); - v5 = *(_DWORD *)(v1 + 56); - lpuexcpt = (struct _Unwind_Exception *)night::NSASTParse::ast_expression_no_comma(v3); - if ( (!std::operator==((int)&night::NS_TYPE_ASSIGN, (int)lpuexcpt) - || !std::operator==((int)&night::NS_TYPE_VAR, *((_DWORD *)lpuexcpt + 45))) - && !std::operator==((int)&night::NS_TYPE_VAR, (int)lpuexcpt) ) - { - lpuexcpta = *(struct _Unwind_Exception **)(a1 + 28); - std::string::basic_string(v9, "Expected variable"); - night::NSToken::err((int)lpuexcpta, (int)v9, v4, v5, 1); - } - return lpuexcpt; -} -// 4140B9: variable 'v3' is possibly undefined - -//----- (00414188) -------------------------------------------------------- -_DWORD *__thiscall night::NSASTParse::ast_obj_op_self(_DWORD *this, int a2) -{ - unsigned __int8 **v2; // eax - int v3; // edx - _DWORD *v4; // eax - night::NSASTParse *v6; // [esp+0h] [ebp-98h] - int v7; // [esp+18h] [ebp-80h] - int v8; // [esp+1Ch] [ebp-7Ch] - void *v9; // [esp+1Ch] [ebp-7Ch] - _DWORD *v10; // [esp+1Ch] [ebp-7Ch] - int v11; // [esp+20h] [ebp-78h] - unsigned __int8 **v12; // [esp+20h] [ebp-78h] - int v13; // [esp+20h] [ebp-78h] - void *v14; // [esp+24h] [ebp-74h] - _DWORD *v15; // [esp+24h] [ebp-74h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-70h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-70h] - struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-70h] - int v20[6]; // [esp+60h] [ebp-38h] BYREF - void *v21[8]; // [esp+78h] [ebp-20h] BYREF - - v14 = (void *)this[6]; - std::string::basic_string((char *)v21, (int)&night::NS_TYPE_OBJ_SELF_OP); - v15 = night::NSGod::gen_son(v14, (int)v21); - std::string::_M_dispose(v21); - *((_BYTE *)v15 + 200) = a2 == 0; - v11 = (int)(v15 + 39);// offset_156 - std::string::operator=(v15 + 39, (char *)&byte_551F04); - // v15.offset_192 - v15[48] = 0; - v2 = night::NSToken::next(this[7]); - if ( !v2 ) - { - lpuexcpta = (struct _Unwind_Exception *)this[7]; - std::string::basic_string(v21, "End of file"); - night::NSToken::err((int)lpuexcpta, (int)v21, 0, 0, 0); - } - v3 = (int)(v2 + 15); - v7 = (int)(v2 + 21); - v8 = (int)(v15 + 21); - if ( a2 ) - { - v15[48] = a2; - std::string::_M_assign(v11, v3); - std::string::_M_assign(v8, v7); - } - else - { - std::string::_M_assign(v11, v3); - std::string::_M_assign(v8, v7); - v12 = night::NSToken::peek(this[7]); - if ( !v12 ) - { - lpuexcptb = (struct _Unwind_Exception *)this[7]; - std::string::basic_string(v21, "End of file"); - night::NSToken::err((int)lpuexcptb, (int)v21, 0, 0, 0); - } - if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v12) ) - { - lpuexcptc = (struct _Unwind_Exception *)this[7]; - std::operator+((int)v20, "Unexpected token `", (int)(v12 + 15)); - v4 = std::string::append(v20, "`"); - std::string::basic_string(v21, v4); - night::NSToken::err((int)lpuexcptc, (int)v21, 0, 0, 0); - } - v13 = night::NSASTParse::ast_expression_no_comma(v6); - if ( std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, v13) ) - { - v9 = (void *)this[6]; - std::string::basic_string((char *)v21, (int)&night::NS_TYPE_OP); - v10 = night::NSGod::gen_son(v9, (int)v21); - std::string::_M_dispose(v21); - // v10->offset_60 v13->offset_156 - std::string::_M_assign((int)(v10 + 15), v13 + 156); - std::string::_M_assign((int)(v10 + 21), v13 + 84); - night::NSToken::push(this[7], (int)v10); - v15[48] = *(_DWORD *)(v13 + 192); - } - else - { - v15[48] = v13; - } - } - return v15; -} -// 4143BD: variable 'v6' is possibly undefined - -//----- (004144FA) -------------------------------------------------------- -_DWORD *__thiscall night::NSASTParse::ast_obj_dot(int *this, int a2) -{ - int v2; // ecx - int v3; // eax - _DWORD *v4; // eax - unsigned __int8 **v5; // eax - unsigned int v7; // [esp+14h] [ebp-84h] - unsigned int v8; // [esp+18h] [ebp-80h] - void **v9; // [esp+1Ch] [ebp-7Ch] - _DWORD *v10; // [esp+20h] [ebp-78h] - void *v11; // [esp+24h] [ebp-74h] - void *v12; // [esp+24h] [ebp-74h] - unsigned __int8 **v13; // [esp+24h] [ebp-74h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-70h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-70h] - int v17[6]; // [esp+60h] [ebp-38h] BYREF - void *v18[8]; // [esp+78h] [ebp-20h] BYREF - - v11 = (void *)this[6]; - std::string::basic_string((char *)v18, (int)&night::std_v_n); - v9 = (void **)night::NSGod::gen_girl(v11, (int)v18); - std::string::_M_dispose(v18); - v12 = (void *)this[6]; - std::string::basic_string((char *)v18, (int)&night::NS_TYPE_OBJ_DOT); - v10 = night::NSGod::gen_son(v12, (int)v18); - std::string::_M_dispose(v18); - - v10[48] = a2; - v10[49] = v9; - do - { - std::string::basic_string(v18, "."); - night::NSASTParse::ignore_punc(this, (int)v18); - std::string::_M_dispose(v18); - v2 = this[7]; - v3 = *(_DWORD *)(v2 + 4); - v7 = *(_DWORD *)(v3 + 52); - v8 = *(_DWORD *)(v3 + 56); - v13 = night::NSToken::peek(v2); - if ( !v13 ) - { - lpuexcpta = (struct _Unwind_Exception *)this[7]; - std::string::basic_string(v18, "End of file"); - night::NSToken::err((int)lpuexcpta, (int)v18, 0, 0, 0); - } - if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v13) ) - { - lpuexcptb = (struct _Unwind_Exception *)this[7]; - std::operator+((int)v17, "Unexpected token `", (int)(v13 + 15)); - v4 = std::string::append(v17, "`"); - std::string::basic_string(v18, v4); - night::NSToken::err((int)lpuexcptb, (int)v18, v7, v8, 1); - } - v18[0] = night::NSASTParse::ast_expression_no_comma(this); - std::vector::emplace_back(v9, (char **)v18); - v5 = night::NSToken::peek(this[7]); - } - while ( v5 && !(unsigned __int8)std::operator!=(".", (int)(v5 + 15)) ); - return v10; -} - -//----- (0041479A) -------------------------------------------------------- -unsigned int *__fastcall night::NSASTParse::ast_if(int *a1) -{ - _DWORD *v2; // [esp+1Ch] [ebp-6Ch] - _DWORD *v3; // [esp+20h] [ebp-68h] - unsigned __int8 **v4; // [esp+20h] [ebp-68h] - unsigned __int8 **v5; // [esp+20h] [ebp-68h] - void *v6; // [esp+24h] [ebp-64h] - unsigned int *v7; // [esp+24h] [ebp-64h] - void *v9[8]; // [esp+68h] [ebp-20h] BYREF - - std::string::basic_string(v9, "if"); - night::NSASTParse::ignore_buildin_kw(a1, (int)v9); - std::string::_M_dispose(v9); - v2 = night::NSASTParse::ast_expression_no_comma(a1); - v3 = night::NSASTParse::ast_expression_no_comma(a1); - v6 = (void *)a1[6]; - std::string::basic_string((char *)v9, (int)&night::NS_TYPE_IF); - v7 = night::NSGod::gen_son(v6, (int)v9); - std::string::_M_dispose(v9); - v7[51] = (unsigned int)v2; - v7[52] = (unsigned int)v3; - v7[53] = 0; - if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_PROG_NO_SEM, (int)v3) ) - { - if ( !night::NSToken::eof(a1[7]) ) - { - std::string::basic_string(v9, ";"); - v4 = night::NSASTParse::is_punctuation(a1, (int)v9); - std::string::_M_dispose(v9); - if ( v4 ) - night::NSToken::next(a1[7]); - } - std::string::operator=(v7 + 27, ";"); - } - std::string::basic_string(v9, "else"); - v5 = night::NSASTParse::is_buildin_keywords(a1, (int)v9); - std::string::_M_dispose(v9); - if ( v5 ) - { - night::NSToken::next(a1[7]); - v7[53] = (unsigned int)night::NSASTParse::ast_expression_no_comma(a1); - } - return v7; -} - -//----- (004149B4) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_ternary_expression(int *a1) -{ - night::NSASTParse *v1; // ecx - night::NSASTParse *v3; // [esp+0h] [ebp-78h] - night::NSASTParse *v4; // [esp+0h] [ebp-78h] - int v5; // [esp+10h] [ebp-68h] - int v6; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - void *v10[8]; // [esp+58h] [ebp-20h] BYREF - - v6 = night::NSASTParse::ast_expression_no_comma(v3); - std::string::basic_string(v10, ":"); - night::NSASTParse::ignore_punc(a1, (int)v10); - v4 = v1; - std::string::_M_dispose(v10); - v5 = night::NSASTParse::ast_expression_no_comma(v4); - lpuexcpta = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v10, (int)&night::NS_TYPE_TERNARY); - lpuexcptb = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v10); - std::string::_M_dispose(v10); - *((_DWORD *)lpuexcptb + 45) = v6; - *((_DWORD *)lpuexcptb + 46) = v5; - return lpuexcptb; -} -// 4149ED: variable 'v3' is possibly undefined -// 414A1A: variable 'v1' is possibly undefined - -//----- (00414AC0) -------------------------------------------------------- -void **__thiscall night::NSASTParse::make_list_by_parser( - int *this, - int a2, - int a3, - int a4, - int a5, - char a6, - int a7, - int a8) -{ - unsigned __int8 **v8; // eax - night::NSASTParse *v9; // edx - char *v10; // eax - night::NSASTParse *v12; // [esp+0h] [ebp-88h] - night::NSASTParse *v13; // [esp+0h] [ebp-88h] - int v14; // [esp+1Ch] [ebp-6Ch] - char i; // [esp+20h] [ebp-68h] - void *v16; // [esp+20h] [ebp-68h] - void *v17; // [esp+24h] [ebp-64h] - void **v18; // [esp+24h] [ebp-64h] - char *v20; // [esp+64h] [ebp-24h] BYREF - void *v21[8]; // [esp+68h] [ebp-20h] BYREF - - v17 = (void *)this[6]; - std::string::basic_string((char *)v21, (int)&night::std_v_n); - v18 = (void **)night::NSGod::gen_girl(v17, (int)v21); - std::string::_M_dispose(v21); - night::NSASTParse::ignore_punc(this, a2); - v14 = 0; - for ( i = 1; !night::NSToken::eof(this[7]) && !night::NSASTParse::is_punctuation(this, a3); i = 0 ) - { - if ( !i ) - { - if ( a6 ) - night::NSASTParse::ignore_punc_pass_sem(this, a4); - else - night::NSASTParse::ignore_punc(this, a4); - ++v14; - } - if ( night::NSASTParse::is_punctuation(this, a3) ) - break; - if ( std::operator==("ast_expression_no_comma", a5) ) - { - if ( std::operator==("ast_new_array", a8) ) - { - v8 = night::NSASTParse::is_punctuation(this, a4); - v12 = v9; - if ( v8 ) - { - v16 = (void *)this[6]; - std::string::basic_string((char *)v21, (int)&night::NS_TYPE_SKIP); - v20 = (char *)night::NSGod::gen_son(v16, (int)v21); - std::string::_M_dispose(v21); - goto LABEL_20; - } - } - v10 = (char *)night::NSASTParse::ast_expression_no_comma(v12); - } - else if ( std::operator==("ast_expression", a5) ) - { - v10 = (char *)night::NSASTParse::ast_expression(v13); - } - else - { - if ( !std::operator==("ast_varname", a5) ) - goto LABEL_20; - v10 = (char *)night::NSASTParse::ast_varname((int)this); - } - v20 = v10; -LABEL_20: - std::vector::push_back(v18, &v20); - } - if ( a7 != -1 && v14 != a7 ) - return 0; - night::NSASTParse::ignore_punc(this, a3); - return v18; -} -// 414C14: variable 'v9' is possibly undefined -// 414C5F: variable 'v12' is possibly undefined -// 414C87: variable 'v13' is possibly undefined - -//----- (00414D44) -------------------------------------------------------- -_DWORD *__thiscall night::NSASTParse::ast_call(int *this, int a2) -{ - _DWORD *v2; // eax - void ***i; // eax - unsigned __int8 **v4; // eax - unsigned __int8 **v5; // eax - unsigned __int8 **v7; // [esp+28h] [ebp-D0h] - unsigned __int8 **v8; // [esp+2Ch] [ebp-CCh] - unsigned __int8 **v9; // [esp+2Ch] [ebp-CCh] - int v10; // [esp+30h] [ebp-C8h] - int v11; // [esp+30h] [ebp-C8h] - int v12; // [esp+30h] [ebp-C8h] - void *v13; // [esp+34h] [ebp-C4h] - void *v14; // [esp+34h] [ebp-C4h] - _DWORD *v15; // [esp+34h] [ebp-C4h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-C0h] - void **list_by_parser; // [esp+70h] [ebp-88h] BYREF - void **v19; // [esp+74h] [ebp-84h] BYREF - void *v20[6]; // [esp+78h] [ebp-80h] BYREF - void *v21[6]; // [esp+90h] [ebp-68h] BYREF - void *v22[6]; // [esp+A8h] [ebp-50h] BYREF - int v23[6]; // [esp+C0h] [ebp-38h] BYREF - void *v24[8]; // [esp+D8h] [ebp-20h] BYREF - - v13 = (void *)this[6]; - std::string::basic_string((char *)v24, (int)&night::std_v_v_n); - v10 = night::NSGod::gen_girl(v13, (int)v24); - std::string::_M_dispose(v24); - v14 = (void *)this[6]; - std::string::basic_string((char *)v24, (int)&night::NS_TYPE_CALL); - v15 = night::NSGod::gen_son(v14, (int)v24); - std::string::_M_dispose(v24); - v15[55] = a2; - v15[56] = v10; - v8 = night::NSToken::peek(this[7]); - std::string::basic_string(v24, (char *)asc_5527F4); - v7 = night::NSASTParse::is_punctuation(this, (int)v24); - std::string::_M_dispose(v24); - if ( !v7 ) - { - lpuexcpta = (struct _Unwind_Exception *)this[7]; - std::operator+((int)v23, "Unexpected token `", (int)(v8 + 15)); - v2 = std::string::append(v23, "`"); - std::string::basic_string(v24, v2); - night::NSToken::err((int)lpuexcpta, (int)v24, 0, 0, 0); - } - std::string::basic_string(v24, (char *)&byte_551F04); // '\0' - std::string::basic_string((void **)v23, "ast_expression_no_comma"); - std::string::basic_string(v22, ","); - std::string::basic_string(v21, (char *)&asc_5527F4[2]); // ')' - std::string::basic_string(v20, (char *)asc_5527F4); // '(' - list_by_parser = night::NSASTParse::make_list_by_parser(this, (int)v20, (int)v21, (int)v22, (int)v23, 0, -1, (int)v24); - std::string::_M_dispose(v20); - std::string::_M_dispose(v21); - std::string::_M_dispose(v22); - std::string::_M_dispose((void **)v23); - std::string::_M_dispose(v24); - - for ( i = &list_by_parser; ; i = &v19 ) - { - std::vector>>::push_back(v10, i); - std::string::basic_string(v24, (char *)asc_5527F4); // '(' - v9 = night::NSASTParse::is_punctuation(this, (int)v24); - std::string::_M_dispose(v24); - if ( !v9 ) - break; - std::string::basic_string(v24, (char *)&byte_551F04); // '\0' - std::string::basic_string((void **)v23, "ast_expression_no_comma"); - std::string::basic_string(v22, ","); - std::string::basic_string(v21, (char *)&asc_5527F4[2]); - std::string::basic_string(v20, (char *)asc_5527F4); - v19 = night::NSASTParse::make_list_by_parser(this, (int)v20, (int)v21, (int)v22, (int)v23, 0, -1, (int)v24); - std::string::_M_dispose(v20); - std::string::_M_dispose(v21); - std::string::_M_dispose(v22); - std::string::_M_dispose((void **)v23); - std::string::_M_dispose(v24); - } - v4 = night::NSToken::peek(this[7]); - if ( v4 ) - { - v11 = (int)(v4 + 15); - if ( std::operator==("[", (int)(v4 + 15)) ) - { - v15 = night::NSASTParse::ast_obj_op(this, (int)v15); - std::string::basic_string(v24, (char *)asc_5527F4); // "(" - v5 = night::NSASTParse::is_punctuation(this, (int)v24); - } - else - { - if ( !std::operator==(".", v11) ) - return v15; - v15 = (_DWORD *)night::NSASTParse::ast_obj_dot(v15); - std::string::basic_string(v24, (char *)asc_5527F4); // "(" - v5 = night::NSASTParse::is_punctuation(this, (int)v24); - } - v12 = (int)v5; - std::string::_M_dispose(v24); - if ( v12 ) - return (_DWORD *)night::NSASTParse::ast_call(v15); - } - return v15; -} -// 4144FA: using guessed type __int64 __stdcall night::NSASTParse::ast_obj_dot(_DWORD); - -//----- (00415374) -------------------------------------------------------- -_DWORD *__thiscall night::NSASTParse::make_call_or_just_expression(int *this, _DWORD *a2) -{ - void *v4[8]; // [esp+58h] [ebp-20h] BYREF - - if ( !std::operator==((int)&night::NS_TYPE_PROG, (int)a2) - && !std::operator==((int)&night::NS_TYPE_B_TYPE, (int)a2) - && !std::operator==((int)&night::NS_TYPE_KW, (int)a2) - && (!std::operator==((int)&night::NS_TYPE_FUNC, (int)a2) - || !(unsigned __int8)std::operator!=((char *)&byte_551F04, (int)(a2 + 33))) ) // '\0' - { - std::string::basic_string(v4, (char *)asc_5527F4); // "(\000)\000{" - if ( night::NSASTParse::is_punctuation(this, (int)v4) ) - a2 = night::NSASTParse::ast_call(this, (int)a2); - std::string::_M_dispose(v4); - } - return a2; -} - -//----- (004154B2) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_expression(int *a1) -{ - _DWORD *v1; // eax - _DWORD *binary_or_just_value; // eax - bool v4; // [esp+4h] [ebp-24h] - - v1 = night::NSASTParse::ast_dispatch(a1, 0, v4); - binary_or_just_value = (_DWORD *)night::NSASTParse::make_binary_or_just_value(a1, (int)v1, 0); - return night::NSASTParse::make_call_or_just_expression(a1, binary_or_just_value); -} -// 4154C2: variable 'v4' is possibly undefined - -//----- (004154EC) -------------------------------------------------------- -_DWORD *__thiscall night::NSASTParse::ast_obj_op(int *this, int a2) -{ - night::NSASTParse *v2; // eax - unsigned __int8 **v3; // eax - unsigned __int8 **v5; // eax - night::NSASTParse *v7; // [esp+0h] [ebp-88h] - bool v8; // [esp+4h] [ebp-84h] - void **v9; // [esp+1Ch] [ebp-6Ch] - int v10; // [esp+20h] [ebp-68h] - void *v11; // [esp+24h] [ebp-64h] - void *v12; // [esp+24h] [ebp-64h] - _DWORD *v13; // [esp+24h] [ebp-64h] - void *v15[8]; // [esp+68h] [ebp-20h] BYREF - - v11 = (void *)this[6]; - std::string::basic_string((char *)v15, (int)&night::std_v_n); - v9 = (void **)night::NSGod::gen_girl(v11, (int)v15); - std::string::_M_dispose(v15); - v12 = (void *)this[6]; - std::string::basic_string((char *)v15, (int)&night::NS_TYPE_OBJ_PROPERTY); - v13 = night::NSGod::gen_son(v12, (int)v15); - std::string::_M_dispose(v15); - v13[48] = a2; - v13[49] = v9; - do - { - std::string::basic_string(v15, "["); - night::NSASTParse::ignore_punc(this, (int)v15); - v7 = v2; - std::string::_M_dispose(v15); - v15[0] = (void *)night::NSASTParse::ast_expression(v7); - std::vector::emplace_back(v9, (char **)v15); - std::string::basic_string(v15, "]"); - night::NSASTParse::ignore_punc(this, (int)v15); - std::string::_M_dispose(v15); - v3 = night::NSToken::peek(this[7]); - if ( !v3 ) - break; - v10 = (int)(v3 + 15); - if ( std::operator==(";", (int)(v3 + 15)) ) - break; - } - while ( !(unsigned __int8)std::operator!=("[", v10) ); - // == - - if ( night::NSASTParse::is_obj_op_self(this, 0, v8) ) - return night::NSASTParse::ast_obj_op_self(this, (int)v13); - v5 = night::NSToken::peek(this[7]); - - if ( v5 && std::operator==(".", (int)(v5 + 15)) ) - return (_DWORD *)night::NSASTParse::ast_obj_dot(v13); - - return v13; -} -// 4155E3: variable 'v2' is possibly undefined -// 415697: variable 'v8' is possibly undefined -// 4144FA: using guessed type __int64 __stdcall night::NSASTParse::ast_obj_dot(_DWORD); - -//----- (00415736) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_while(int *a1) -{ - night::NSASTParse *v1; // edx - night::NSASTParse *v2; // eax - night::NSASTParse *v4; // [esp+0h] [ebp-78h] - night::NSASTParse *v5; // [esp+0h] [ebp-78h] - void *v6; // [esp+14h] [ebp-64h] - _DWORD *v7; // [esp+14h] [ebp-64h] - void *v9[8]; // [esp+58h] [ebp-20h] BYREF - - night::NSToken::next(a1[7]); - v6 = (void *)a1[6]; - std::string::basic_string((char *)v9, (int)&night::NS_TYPE_WHILE); - v7 = night::NSGod::gen_son(v6, (int)v9); - std::string::_M_dispose(v9); - v7[51] = 0; - v7[54] = 0; - std::string::basic_string(v9, (char *)asc_5527F4); - night::NSASTParse::ignore_punc(a1, (int)v9); - v4 = v1; - std::string::_M_dispose(v9); - v7[51] = night::NSASTParse::ast_expression(v4); - std::string::basic_string(v9, (char *)&asc_5527F4[2]); - night::NSASTParse::ignore_punc(a1, (int)v9); - v5 = v2; - std::string::_M_dispose(v9); - ++a1[9]; - ++a1[10]; - v7[54] = night::NSASTParse::ast_expression(v5); - --a1[9]; - --a1[10]; - return v7; -} -// 4157F4: variable 'v1' is possibly undefined -// 41583A: variable 'v2' is possibly undefined - -//----- (004158AC) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_do_while(int *a1) -{ - int v1; // eax - unsigned __int8 **v2; // eax - night::NSASTParse *v3; // edx - night::NSASTParse *v4; // edx - night::NSASTParse *v6; // [esp+0h] [ebp-88h] - night::NSASTParse *v7; // [esp+0h] [ebp-88h] - unsigned int v8; // [esp+18h] [ebp-70h] - unsigned __int8 **v9; // [esp+1Ch] [ebp-6Ch] - unsigned int v10; // [esp+20h] [ebp-68h] - void *v11; // [esp+24h] [ebp-64h] - _DWORD *v12; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] - void *v15[8]; // [esp+68h] [ebp-20h] BYREF - - night::NSToken::next(a1[7]); - v11 = (void *)a1[6]; - std::string::basic_string((char *)v15, (int)&night::NS_TYPE_DO_WHILE); - v12 = night::NSGod::gen_son(v11, (int)v15); - std::string::_M_dispose(v15); - v12[51] = 0; - v12[54] = 0; - v1 = *(_DWORD *)(a1[7] + 4); - v10 = *(_DWORD *)(v1 + 56); - v8 = *(_DWORD *)(v1 + 52); - std::string::basic_string(v15, (char *)&asc_5527F4[4]); - v2 = night::NSASTParse::is_punctuation(a1, (int)v15); - v6 = v3; - v9 = v2; - std::string::_M_dispose(v15); - if ( !v9 ) - { - lpuexcpta = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v15, "Expected `{`"); - night::NSToken::err((int)lpuexcpta, (int)v15, v8, v10, 1); - } - ++a1[9]; - ++a1[10]; - v12[54] = night::NSASTParse::ast_expression(v6); - --a1[9]; - --a1[10]; - std::string::basic_string(v15, "while"); - night::NSASTParse::ignore_buildin_kw(a1, (int)v15); - std::string::_M_dispose(v15); - std::string::basic_string(v15, (char *)asc_5527F4); - night::NSASTParse::ignore_punc(a1, (int)v15); - v7 = v4; - std::string::_M_dispose(v15); - v12[51] = night::NSASTParse::ast_expression(v7); - std::string::basic_string(v15, (char *)&asc_5527F4[2]); - night::NSASTParse::ignore_punc(a1, (int)v15); - std::string::_M_dispose(v15); - return v12; -} -// 415982: variable 'v3' is possibly undefined -// 415A5F: variable 'v4' is possibly undefined - -//----- (00415AF0) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_switch(int *a1) -{ - night::NSASTParse *v1; // eax - int v2; // ecx - int v3; // eax - unsigned __int8 **v4; // eax - unsigned __int8 **v5; // eax - night::NSASTParse *v6; // edx - unsigned __int8 **v7; // eax - night::NSASTParse *v8; // edx - unsigned __int8 **v9; // eax - night::NSASTParse *v10; // edx - int v11; // eax - night::NSASTParse *v12; // edx - unsigned __int8 **v13; // eax - night::NSASTParse *v14; // edx - night::NSASTParse *v16; // [esp+0h] [ebp-B8h] - night::NSASTParse *v17; // [esp+0h] [ebp-B8h] - night::NSASTParse *v18; // [esp+0h] [ebp-B8h] - unsigned int v19; // [esp+10h] [ebp-A8h] - int v20; // [esp+14h] [ebp-A4h] - unsigned int v21; // [esp+14h] [ebp-A4h] - int v22; // [esp+1Ch] [ebp-9Ch] - bool v23; // [esp+1Ch] [ebp-9Ch] - unsigned __int8 **v24; // [esp+1Ch] [ebp-9Ch] - unsigned __int8 **v25; // [esp+1Ch] [ebp-9Ch] - void *v26; // [esp+1Ch] [ebp-9Ch] - int v27; // [esp+20h] [ebp-98h] - unsigned __int8 **v28; // [esp+20h] [ebp-98h] - unsigned __int8 **v29; // [esp+20h] [ebp-98h] - bool v30; // [esp+20h] [ebp-98h] - void **v31; // [esp+20h] [ebp-98h] - bool v32; // [esp+20h] [ebp-98h] - void *v33; // [esp+20h] [ebp-98h] - void **v34; // [esp+20h] [ebp-98h] - unsigned __int8 **v35; // [esp+20h] [ebp-98h] - void *v36; // [esp+20h] [ebp-98h] - void **v37; // [esp+20h] [ebp-98h] - unsigned __int8 **v38; // [esp+20h] [ebp-98h] - unsigned __int8 **v39; // [esp+20h] [ebp-98h] - unsigned __int8 **v40; // [esp+20h] [ebp-98h] - void **v41; // [esp+20h] [ebp-98h] - unsigned __int8 **v42; // [esp+20h] [ebp-98h] - void *v43; // [esp+24h] [ebp-94h] - void *v44; // [esp+24h] [ebp-94h] - void *v45; // [esp+24h] [ebp-94h] - void *v46; // [esp+24h] [ebp-94h] - _DWORD *v47; // [esp+24h] [ebp-94h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-90h] - struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-90h] - void **v52; // [esp+64h] [ebp-54h] BYREF - void *v53[6]; // [esp+68h] [ebp-50h] BYREF - void *v54[6]; // [esp+80h] [ebp-38h] BYREF - void *v55[8]; // [esp+98h] [ebp-20h] BYREF - - night::NSToken::next(a1[7]); - v43 = (void *)a1[6]; - std::string::basic_string((char *)v55, (int)&night::std_v_n); - v27 = night::NSGod::gen_girl(v43, (int)v55); - std::string::_M_dispose(v55); - - v44 = (void *)a1[6]; - std::string::basic_string((char *)v55, (int)&night::std_v_v_n); - v22 = night::NSGod::gen_girl(v44, (int)v55); - std::string::_M_dispose(v55); - - v45 = (void *)a1[6]; - std::string::basic_string((char *)v55, (int)&night::std_v_n); - v20 = night::NSGod::gen_girl(v45, (int)v55); - std::string::_M_dispose(v55); - - v46 = (void *)a1[6]; - std::string::basic_string((char *)v55, (int)&night::NS_TYPE_SWITCH); - v47 = night::NSGod::gen_son(v46, (int)v55); - std::string::_M_dispose(v55); - - // offset_232 - v47[58] = v27; - // offset_204 - v47[51] = 0; - // offset_236 - v47[59] = v22; - // offset_240 - v47[60] = v20; - - std::string::basic_string(v55, (char *)asc_5527F4); // "(\000)\000{" - night::NSASTParse::ignore_punc(a1, (int)v55); - v16 = v1; - std::string::_M_dispose(v55); - - v47[51] = night::NSASTParse::ast_expression(v16); - - std::string::basic_string(v55, (char *)&asc_5527F4[2]); - night::NSASTParse::ignore_punc(a1, (int)v55); - std::string::_M_dispose(v55); - - std::string::basic_string(v55, (char *)&asc_5527F4[4]); - night::NSASTParse::ignore_punc(a1, (int)v55); - std::string::_M_dispose(v55); - ++a1[9]; - while ( 1 ) - { - std::string::basic_string(v55, "case"); - v28 = night::NSASTParse::is_buildin_keywords(a1, (int)v55); - std::string::_M_dispose(v55); - if ( !v28 ) - break; - - std::string::basic_string(v55, "case"); - night::NSASTParse::ignore_buildin_kw(a1, (int)v55); - std::string::_M_dispose(v55); - v2 = a1[7]; - // int v2 - v3 = *(_DWORD *)(v2 + 4); - v19 = *(_DWORD *)(v3 + 52); - v21 = *(_DWORD *)(v3 + 56); - v29 = night::NSToken::peek(v2); - if ( !v29 ) - goto LABEL_4; - - std::string::basic_string(v54, "-"); - v23 = 1; - if ( !night::NSASTParse::is_op(a1, (int)v54) ) - { - std::string::basic_string(v55, "+"); - v23 = night::NSASTParse::is_op(a1, (int)v55) != 0; - std::string::_M_dispose(v55); - } - std::string::_M_dispose(v54); - if ( v23 ) - { - night::NSToken::next(a1[7]); - v4 = night::NSToken::peek(a1[7]); - v24 = v4; - if ( !v4 || !std::operator==((int)&night::NS_TYPE_NUM, (int)v4) ) - goto LABEL_4; - v25 = v24 + 15; - std::operator+((char *)v55, (int)(v29 + 15), (int)v25); - std::string::operator=(v25, (int)v55); - std::string::_M_dispose(v55); - } - else if ( !std::operator==((int)&night::NS_TYPE_VAR, (int)v29) - && !std::operator==((int)&night::NS_TYPE_NUM, (int)v29) - && !std::operator==((int)&night::NS_TYPE_STR, (int)v29) ) - { - std::string::basic_string(v54, "true"); - if ( night::NSASTParse::is_buildin_keywords(a1, (int)v54) ) - { - v30 = 1; - } - else - { - std::string::basic_string(v55, "false"); - v30 = night::NSASTParse::is_buildin_keywords(a1, (int)v55) != 0; - std::string::_M_dispose(v55); - } - std::string::_M_dispose(v54); - if ( !v30 ) - { - LABEL_4: - lpuexcpta = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v55, "Expected variable|numer|boolean|string"); - night::NSToken::err((int)lpuexcpta, (int)v55, v19, v21, 1); - } - } - // v47->offset_232 - v31 = (void **)v47[58]; - v55[0] = night::NSToken::next(a1[7]); - std::vector::emplace_back(v31, (char **)v55); - std::string::basic_string(v55, ":"); - night::NSASTParse::ignore_punc(a1, (int)v55); - std::string::_M_dispose(v55); - v52 = 0; - while ( 1 ) - { - std::string::basic_string(v53, "case"); - v5 = night::NSASTParse::is_buildin_keywords(a1, (int)v53); - v17 = v6; - if ( v5 ) - { - v32 = 0; - } - else - { - std::string::basic_string(v54, "default"); - v7 = night::NSASTParse::is_buildin_keywords(a1, (int)v54); - v32 = 0; - v17 = v8; - if ( !v7 ) - { - std::string::basic_string(v55, "}"); - v9 = night::NSASTParse::is_punctuation(a1, (int)v55); - v17 = v10; - v32 = v9 == 0; - std::string::_M_dispose(v55); - } - std::string::_M_dispose(v54); - } - std::string::_M_dispose(v53); - if ( !v32 ) - break; - if ( !v52 ) - { - v33 = (void *)a1[6]; - std::string::basic_string((char *)v55, (int)&night::std_v_n); - v11 = night::NSGod::gen_girl(v33, (int)v55); - v17 = v12; - v52 = (void **)v11; - std::string::_M_dispose(v55); - } - v34 = v52; - v55[0] = (void *)night::NSASTParse::ast_expression(v17); - std::vector::emplace_back(v34, (char **)v55); - while ( !night::NSToken::eof(a1[7]) ) - { - std::string::basic_string(v55, ";"); - v35 = night::NSASTParse::is_punctuation(a1, (int)v55); - std::string::_M_dispose(v55); - if ( !v35 ) - break; - night::NSToken::next(a1[7]); - } - } - if ( !v52 ) - { - v36 = (void *)a1[6]; - std::string::basic_string((char *)v55, (int)&night::std_v_n); - v52 = (void **)night::NSGod::gen_girl(v36, (int)v55); - std::string::_M_dispose(v55); - - v37 = v52; - v26 = (void *)a1[6]; - std::string::basic_string((char *)v55, (int)&night::NS_TYPE_SKIP); - v54[0] = night::NSGod::gen_son(v26, (int)v55); - std::vector::emplace_back(v37, (char **)v54); - std::string::_M_dispose(v55); - } - // v47->offset_236.push_back() - std::vector>>::push_back(v47[59], &v52); - - if ( night::NSToken::eof(a1[7]) ) - { - lpuexcptb = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v55, "End of file"); - night::NSToken::err((int)lpuexcptb, (int)v55, 0, 0, 0); - } - std::string::basic_string(v55, "}"); - v38 = night::NSASTParse::is_punctuation(a1, (int)v55); - std::string::_M_dispose(v55); - if ( v38 ) - break; - std::string::basic_string(v55, "default"); - v39 = night::NSASTParse::is_buildin_keywords(a1, (int)v55); - std::string::_M_dispose(v55); - if ( v39 ) - { - std::string::basic_string(v55, "default"); - night::NSASTParse::ignore_buildin_kw(a1, (int)v55); - std::string::_M_dispose(v55); - std::string::basic_string(v55, ":"); - night::NSASTParse::ignore_punc(a1, (int)v55); - std::string::_M_dispose(v55); - while ( 1 ) - { - std::string::basic_string(v55, "}"); - v13 = night::NSASTParse::is_punctuation(a1, (int)v55); - v18 = v14; - v40 = v13; - std::string::_M_dispose(v55); - if ( v40 ) - break; - v41 = (void **)v47[60]; - v55[0] = (void *)night::NSASTParse::ast_expression(v18); - std::vector::emplace_back(v41, (char **)v55); - if ( night::NSToken::eof(a1[7]) ) - { - lpuexcptc = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v55, "End of file"); - night::NSToken::err((int)lpuexcptc, (int)v55, 0, 0, 0); - } - while ( 1 ) - { - std::string::basic_string(v55, ";"); - v42 = night::NSASTParse::is_punctuation(a1, (int)v55); - std::string::_M_dispose(v55); - if ( !v42 ) - break; - night::NSToken::next(a1[7]); - } - } - break; - } - } - --a1[9]; - std::string::basic_string(v55, "}"); - night::NSASTParse::ignore_punc(a1, (int)v55); - std::string::_M_dispose(v55); - return v47; -} -// 415CEB: variable 'v1' is possibly undefined -// 416197: variable 'v6' is possibly undefined -// 4161E4: variable 'v8' is possibly undefined -// 41621E: variable 'v10' is possibly undefined -// 416297: variable 'v12' is possibly undefined -// 41660C: variable 'v14' is possibly undefined - -//----- (00416800) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall night::NSASTParse::top_down(int *a1) -{ - int v1; // eax - unsigned __int8 **v2; // eax - unsigned int v4; // [esp+14h] [ebp-74h] - unsigned int v5; // [esp+18h] [ebp-70h] - void **v6; // [esp+1Ch] [ebp-6Ch] - int v7; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-60h] - unsigned __int8 **lpuexcptd; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpte; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcptf; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *v16; // [esp+64h] [ebp-24h] BYREF - void *v17[8]; // [esp+68h] [ebp-20h] BYREF - - // this->offset_24 - lpuexcptb = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v17, (int)&night::std_v_n); - v6 = (void **)night::NSGod::gen_girl(lpuexcptb, (int)v17); - std::string::_M_dispose(v17); - // this->offset_28 - while ( !night::NSToken::eof(a1[7]) ) - { - v16 = (struct _Unwind_Exception *)night::NSASTParse::ast_expression(a1); - std::vector::push_back(v6, (char **)&v16); - v7 = a1[7]; - // int v7 - v1 = *(_DWORD *)(v7 + 4); - v5 = *(_DWORD *)(v1 + 56); - v4 = *(_DWORD *)(v1 + 52); - lpuexcpt = v16; - if ( std::operator==((int)&night::NS_TYPE_BOOL, (int)v16) - || std::operator==((int)&night::NS_TYPE_VAR, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_STR, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_NUM, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_B_TYPE, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_KW, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_OP_SELF, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_BINARY, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_ASSIGN, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_TERNARY, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_OBJ_DOT, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_OBJ_PROPERTY, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_ARRAY, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_BRACKET, (int)lpuexcpt) - || std::operator==((int)&night::NS_TYPE_CALL, (int)lpuexcpt) ) - { - v2 = night::NSToken::peek(v7); - lpuexcpta = (struct _Unwind_Exception *)v2; - if ( v2 ) - { - // v2->offset_60 - if ( (unsigned __int8)std::operator!=(";", (int)(v2 + 15)) - && std::string::find((int *)lpuexcpta + 21, 10, 0) == (char *)-1 ) - { - lpuexcptc = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v17, "Expected LineFeed"); - night::NSToken::err((int)lpuexcptc, (int)v17, v4, v5, 1); - } - } - } - while ( !night::NSToken::eof(a1[7]) ) - { - std::string::basic_string(v17, ";"); - lpuexcptd = night::NSASTParse::is_punctuation(a1, (int)v17); - std::string::_M_dispose(v17); - if ( !lpuexcptd ) - break; - night::NSToken::next(a1[7]); - } - } - // this->offset_24 - lpuexcpte = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v17, (int)&night::NS_TYPE_PROG); - lpuexcptf = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpte, (int)v17); - std::string::_M_dispose(v17); - // offset_228 - *((_DWORD *)lpuexcptf + 57) = v6; - std::string::operator=((unsigned int *)lpuexcptf + 27, (char *)&byte_551F04); - return lpuexcptf; -} - -//----- (00416C10) -------------------------------------------------------- -unsigned __int8 **__fastcall night::NSASTParse::ast_require(int *a1) -{ - int v1; // ecx - int v2; // eax - char *v3; // eax - unsigned __int8 **v4; // ecx - unsigned __int8 **v5; // eax - _DWORD *v6; // eax - unsigned int v8; // [esp+18h] [ebp-90h] - unsigned int v9; // [esp+1Ch] [ebp-8Ch] - void *v10; // [esp+20h] [ebp-88h] - char *v11; // [esp+20h] [ebp-88h] - void *v12; // [esp+20h] [ebp-88h] - void *v13; // [esp+20h] [ebp-88h] - void *v14; // [esp+20h] [ebp-88h] - void *v15; // [esp+20h] [ebp-88h] - void *v16; // [esp+24h] [ebp-84h] - void **v17; // [esp+24h] [ebp-84h] - int v18; // [esp+24h] [ebp-84h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-80h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-80h] - unsigned __int8 **v22; // [esp+68h] [ebp-40h] BYREF - unsigned __int8 **v23; // [esp+6Ch] [ebp-3Ch] BYREF - int v24[2]; // [esp+70h] [ebp-38h] BYREF - char v25; // [esp+78h] [ebp-30h] BYREF - int v26[8]; // [esp+88h] [ebp-20h] BYREF - - // this->offset_24 - v16 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::std_v_n); - v17 = (void **)night::NSGod::gen_girl(v16, (int)v26); - std::string::_M_dispose((void **)v26); - // this->offset_28 - v22 = night::NSToken::next(a1[7]); - std::operator+((char *)v26, (int)&night::nsv_, (int)(v22 + 15)); - std::string::operator=(v22 + 15, (int)v26); - std::string::_M_dispose((void **)v26); - std::vector::push_back(v17, (char **)&v22); - - // this->offset_24 - v10 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); - v22 = (unsigned __int8 **)night::NSGod::gen_son(v10, (int)v26); - std::string::_M_dispose((void **)v26); - // "(\000)\000{" - std::string::operator=((unsigned int *)v22 + 15, (char *)asc_5527F4); - std::vector::push_back(v17, (char **)&v22); - night::NSToken::next(a1[7]); - v1 = a1[7]; - v2 = *(_DWORD *)(v1 + 4); - v8 = *(_DWORD *)(v2 + 52); - v9 = *(_DWORD *)(v2 + 56); - v3 = (char *)night::NSToken::next(v1); - v11 = v3; - v23 = (unsigned __int8 **)v3; - - if ( !v3 || (unsigned __int8)std::operator!=((int)&night::NS_TYPE_STR, (int)v3) ) - { - lpuexcpta = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string((void **)v26, "Expected string"); - night::NSToken::err((int)lpuexcpta, (int)v26, v8, v9, 1); - } - v24[1] = 0; - v24[0] = (int)&v25; // std::string - v25 = 0; - if ( night::str::path_combine(a1, (_DWORD *)v11 + 15, (int)v24) ) - { - lpuexcptb = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string((void **)v26, "Expected wxs file"); - night::NSToken::err((int)lpuexcptb, (int)v26, v8, v9, 1); - } - std::operator+((int)v26, "p_", (int)v24); - std::string::operator=(v23 + 15, (int)v26); - std::string::_M_dispose((void **)v26); - // v23 -> v3 - std::vector::push_back(v17, (char **)&v23); - std::string::_M_dispose((void **)v24); - - v12 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); - v22 = (unsigned __int8 **)night::NSGod::gen_son(v12, (int)v26); - std::string::_M_dispose((void **)v26); - std::string::operator=((unsigned int *)v22 + 15, (char *)&asc_5527F4[2]); - std::vector::push_back(v17, (char **)&v22); - - night::NSToken::next(a1[7]); - v13 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); - v22 = (unsigned __int8 **)night::NSGod::gen_son(v13, (int)v26); - std::string::_M_dispose((void **)v26); - std::string::operator=((unsigned int *)v22 + 15, (char *)asc_5527F4); - std::vector::push_back(v17, (char **)&v22); - - v14 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); - v22 = (unsigned __int8 **)night::NSGod::gen_son(v14, (int)v26); - std::string::_M_dispose((void **)v26); - std::string::operator=((unsigned int *)v22 + 15, (char *)&asc_5527F4[2]); - std::vector::push_back(v17, (char **)&v22); - - v15 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); - v22 = (unsigned __int8 **)night::NSGod::gen_son(v15, (int)v26); - std::string::_M_dispose((void **)v26); - v4 = v22; - v22[57] = (unsigned __int8 *)v17; - // offset_108 - std::string::operator=((unsigned int *)v4 + 27, (char *)&byte_551F04); - - v5 = night::NSToken::peek(a1[7]); - if ( !v5 ) - return v22; - v18 = (int)(v5 + 15); - if ( !std::operator==("[", (int)(v5 + 15)) ) - { - if ( std::operator==(".", v18) ) - { - v6 = night::NSASTParse::ast_obj_dot(a1, (int)v22); - return (unsigned __int8 **)night::NSASTParse::make_call_or_just_expression(a1, v6); - } - return v22; - } - v6 = night::NSASTParse::ast_obj_op(a1, (int)v22); - return (unsigned __int8 **)night::NSASTParse::make_call_or_just_expression(a1, v6); -} - -//----- (00417150) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_code_block(int *a1) -{ - unsigned int *v1; // ecx - unsigned int *v2; // ecx - void *v4; // [esp+2Ch] [ebp-CCh] - void *v5; // [esp+2Ch] [ebp-CCh] - void **list_by_parser; // [esp+30h] [ebp-C8h] - void *v7; // [esp+30h] [ebp-C8h] - void *v8; // [esp+30h] [ebp-C8h] - void *v9; // [esp+34h] [ebp-C4h] - void **v10; // [esp+34h] [ebp-C4h] - void *v12[6]; // [esp+78h] [ebp-80h] BYREF - void *v13[6]; // [esp+90h] [ebp-68h] BYREF - void *v14[6]; // [esp+A8h] [ebp-50h] BYREF - void *v15[6]; // [esp+C0h] [ebp-38h] BYREF - void *v16[8]; // [esp+D8h] [ebp-20h] BYREF - - std::string::basic_string(v16, (char *)&byte_551F04); - std::string::basic_string(v15, "ast_expression"); - std::string::basic_string(v14, ";"); - std::string::basic_string(v13, "}"); - std::string::basic_string(v12, (char *)&asc_5527F4[4]); - list_by_parser = night::NSASTParse::make_list_by_parser(a1, (int)v12, (int)v13, (int)v14, (int)v15, 1, -1, (int)v16); - std::string::_M_dispose(v12); - std::string::_M_dispose(v13); - std::string::_M_dispose(v14); - std::string::_M_dispose(v15); - std::string::_M_dispose(v16); - v9 = (void *)a1[6]; - std::string::basic_string((char *)v16, (int)&night::std_v_n); - v10 = (void **)night::NSGod::gen_girl(v9, (int)v16); - std::string::_M_dispose(v16); - v4 = (void *)a1[6]; - std::string::basic_string((char *)v16, (int)&night::NS_TYPE_PUNC); - v15[0] = night::NSGod::gen_son(v4, (int)v16); - std::string::_M_dispose(v16); - std::string::operator=((unsigned int *)v15[0] + 15, (char *)&asc_5527F4[4]); - std::vector::push_back(v10, (char **)v15); - if ( *list_by_parser != list_by_parser[1] ) - { - v5 = (void *)a1[6]; - std::string::basic_string((char *)v16, (int)&night::NS_TYPE_PROG); - v15[0] = night::NSGod::gen_son(v5, (int)v16); - std::string::_M_dispose(v16); - v1 = (unsigned int *)v15[0]; - *((_DWORD *)v15[0] + 57) = list_by_parser; - std::string::operator=(v1 + 27, (char *)&byte_551F04); - std::vector::push_back(v10, (char **)v15); - } - v7 = (void *)a1[6]; - std::string::basic_string((char *)v16, (int)&night::NS_TYPE_PUNC); - v15[0] = night::NSGod::gen_son(v7, (int)v16); - std::string::_M_dispose(v16); - std::string::operator=((unsigned int *)v15[0] + 15, "}"); - std::vector::push_back(v10, (char **)v15); - - v8 = (void *)a1[6]; - std::string::basic_string((char *)v16, (int)&night::NS_TYPE_PROG_NO_SEM); - v15[0] = night::NSGod::gen_son(v8, (int)v16); - std::string::_M_dispose(v16); - v2 = (unsigned int *)v15[0]; - *((_DWORD *)v15[0] + 57) = v10; - std::string::operator=(v2 + 27, (char *)&byte_551F04); - return night::NSASTParse::make_call_or_just_expression(a1, (_DWORD *)v15[0]); -} - -//----- (00417578) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_function(int *a1) -{ - unsigned int *v2; // [esp+2Ch] [ebp-CCh] - unsigned __int8 **v3; // [esp+30h] [ebp-C8h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-C0h] - struct _Unwind_Exception *lpuexcpt; // [esp+38h] [ebp-C0h] - void *v7[6]; // [esp+78h] [ebp-80h] BYREF - void *v8[6]; // [esp+90h] [ebp-68h] BYREF - void *v9[6]; // [esp+A8h] [ebp-50h] BYREF - void *v10[6]; // [esp+C0h] [ebp-38h] BYREF - void *v11[8]; // [esp+D8h] [ebp-20h] BYREF - - // god - lpuexcpta = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v11, (int)&night::NS_TYPE_FUNC); - // son - lpuexcpt = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v11); - std::string::_M_dispose(v11); - std::string::_M_assign((int)lpuexcpt, (int)&night::NS_TYPE_FUNC); - - night::NSToken::next(a1[7]); - v3 = night::NSToken::peek(a1[7]); - v2 = (unsigned int *)((char *)lpuexcpt + 132); - if ( v3 && std::operator==((int)&night::NS_TYPE_VAR, (int)v3) ) - { - std::string::_M_assign((int)v2, (int)(v3 + 15)); - std::string::_M_assign((int)lpuexcpt + 24, (int)(v3 + 6)); - *((_DWORD *)lpuexcpt + 12) = v3[12]; - *((_DWORD *)lpuexcpt + 13) = v3[13]; - night::NSToken::next(a1[7]); - } - else - { - std::string::operator=(v2, (char *)&byte_551F04); - } - std::string::basic_string(v11, (char *)&byte_551F04); - std::string::basic_string(v10, "ast_varname"); - std::string::basic_string(v9, ","); - std::string::basic_string(v8, (char *)&asc_5527F4[2]); // ')' - std::string::basic_string(v7, (char *)asc_5527F4); // '(' - *((_DWORD *)lpuexcpt + 61) = night::NSASTParse::make_list_by_parser( - a1, - (int)v7, - (int)v8, - (int)v9, - (int)v10, - 0, - -1, - (int)v11); - std::string::_M_dispose(v7); - std::string::_M_dispose(v8); - std::string::_M_dispose(v9); - std::string::_M_dispose(v10); - std::string::_M_dispose(v11); - ++a1[8]; - *((_DWORD *)lpuexcpt + 54) = night::NSASTParse::ast_code_block(a1); - --a1[8]; - return lpuexcpt; -} - -//----- (004178AC) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_new_array(int *a1) -{ - unsigned int *v1; // ecx - unsigned int *v2; // ecx - unsigned __int8 **v3; // eax - void *v6; // [esp+2Ch] [ebp-CCh] - void *v7; // [esp+2Ch] [ebp-CCh] - void **list_by_parser; // [esp+30h] [ebp-C8h] - void *v9; // [esp+30h] [ebp-C8h] - void *v10; // [esp+30h] [ebp-C8h] - int v11; // [esp+30h] [ebp-C8h] - void *v12; // [esp+34h] [ebp-C4h] - void **v13; // [esp+34h] [ebp-C4h] - _DWORD *v14; // [esp+34h] [ebp-C4h] - void *v16[6]; // [esp+78h] [ebp-80h] BYREF - void *v17[6]; // [esp+90h] [ebp-68h] BYREF - void *v18[6]; // [esp+A8h] [ebp-50h] BYREF - void *v19[6]; // [esp+C0h] [ebp-38h] BYREF - void *v20[8]; // [esp+D8h] [ebp-20h] BYREF - - std::string::basic_string(v20, "ast_new_array"); - std::string::basic_string(v19, "ast_expression_no_comma"); - std::string::basic_string(v18, ","); - std::string::basic_string(v17, "]"); - std::string::basic_string(v16, "["); - list_by_parser = night::NSASTParse::make_list_by_parser(a1, (int)v16, (int)v17, (int)v18, (int)v19, 0, -1, (int)v20); - std::string::_M_dispose(v16); - std::string::_M_dispose(v17); - std::string::_M_dispose(v18); - std::string::_M_dispose(v19); - std::string::_M_dispose(v20); - v12 = (void *)a1[6]; - std::string::basic_string((char *)v20, (int)&night::std_v_n); - v13 = (void **)night::NSGod::gen_girl(v12, (int)v20); - std::string::_M_dispose(v20); - v6 = (void *)a1[6]; - std::string::basic_string((char *)v20, (int)&night::NS_TYPE_PUNC); - v19[0] = night::NSGod::gen_son(v6, (int)v20); - std::string::_M_dispose(v20); - std::string::operator=((unsigned int *)v19[0] + 15, "["); - std::vector::push_back(v13, (char **)v19); - if ( *list_by_parser != list_by_parser[1] ) - { - v7 = (void *)a1[6]; - std::string::basic_string((char *)v20, (int)&night::NS_TYPE_PROG); - v19[0] = night::NSGod::gen_son(v7, (int)v20); - std::string::_M_dispose(v20); - v1 = (unsigned int *)v19[0]; - *((_DWORD *)v19[0] + 57) = list_by_parser; - std::string::operator=(v1 + 27, ","); - std::vector::push_back(v13, (char **)v19); - } - v9 = (void *)a1[6]; - std::string::basic_string((char *)v20, (int)&night::NS_TYPE_PUNC); - v19[0] = night::NSGod::gen_son(v9, (int)v20); - std::string::_M_dispose(v20); - std::string::operator=((unsigned int *)v19[0] + 15, "]"); - std::vector::push_back(v13, (char **)v19); - - v10 = (void *)a1[6]; - std::string::basic_string((char *)v20, (int)&night::NS_TYPE_ARRAY); - v19[0] = night::NSGod::gen_son(v10, (int)v20); - std::string::_M_dispose(v20); - v2 = (unsigned int *)v19[0]; - *((_DWORD *)v19[0] + 57) = v13; - std::string::operator=(v2 + 27, (char *)&byte_551F04); - - v14 = night::NSASTParse::make_call_or_just_expression(a1, (_DWORD *)v19[0]); - v3 = night::NSToken::peek(a1[7]); - if ( v3 ) - { - v11 = (int)(v3 + 15); - if ( std::operator==("[", (int)(v3 + 15)) ) - return night::NSASTParse::ast_obj_op(a1, (int)v14); - if ( std::operator==(".", v11) ) - return night::NSASTParse::ast_obj_dot(a1, (int)v14); - } - return v14; -} - -//----- (00417D62) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_for(int *a1) -{ - night::NSASTParse *v1; // edx - night::NSASTParse *v3; // [esp+0h] [ebp-F8h] - void *v4; // [esp+2Ch] [ebp-CCh] - int v5; // [esp+30h] [ebp-C8h] - void *v6; // [esp+34h] [ebp-C4h] - _DWORD *v7; // [esp+34h] [ebp-C4h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-C0h] - struct _Unwind_Exception *lpuexcptb; // [esp+38h] [ebp-C0h] - void *v11[6]; // [esp+78h] [ebp-80h] BYREF - void *v12[6]; // [esp+90h] [ebp-68h] BYREF - void *v13[6]; // [esp+A8h] [ebp-50h] BYREF - void *v14[6]; // [esp+C0h] [ebp-38h] BYREF - void *v15[8]; // [esp+D8h] [ebp-20h] BYREF - - night::NSToken::next(a1[7]); - v6 = (void *)a1[6]; - std::string::basic_string((char *)v15, (int)&night::NS_TYPE_FOR); - v7 = night::NSGod::gen_son(v6, (int)v15); - std::string::_M_dispose(v15); - v7[57] = 0; - v7[54] = 0; - std::string::basic_string(v15, (char *)&byte_551F04); // '\0' - std::string::basic_string(v14, "ast_expression"); - std::string::basic_string(v13, ";"); - std::string::basic_string(v12, (char *)&asc_5527F4[2]); - std::string::basic_string(v11, (char *)asc_5527F4); // "(\000)\000{" - v7[57] = night::NSASTParse::make_list_by_parser(a1, (int)v11, (int)v12, (int)v13, (int)v14, 0, 2, (int)v15); - std::string::_M_dispose(v11); - std::string::_M_dispose(v12); - std::string::_M_dispose(v13); - std::string::_M_dispose(v14); - std::string::_M_dispose(v15); - v5 = v7[57]; - if ( !v5 ) - { - lpuexcpta = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v15, "Expected `for(xxx;xxx;xxx)`"); - night::NSToken::err((int)lpuexcpta, (int)v15, 0, 0, 0); - } - if ( *(_DWORD *)(v5 + 4) - *(_DWORD *)v5 == 8 ) - { - v4 = (void *)a1[6]; - std::string::basic_string((char *)v15, (int)&night::NS_TYPE_SKIP); - v14[0] = night::NSGod::gen_son(v4, (int)v15); - std::vector::emplace_back((void **)v5, (char **)v14); - v3 = v1; - std::string::_M_dispose(v15); - } - if ( *(_DWORD *)(v7[57] + 4) - *(_DWORD *)v7[57] != 12 ) - { - lpuexcptb = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v15, "Expected `for(xxx;xxx;xxx)`"); - night::NSToken::err((int)lpuexcptb, (int)v15, 0, 0, 0); - } - ++a1[9]; - ++a1[10]; - v7[54] = night::NSASTParse::ast_expression(v3); - --a1[9]; - --a1[10]; - return v7; -} -// 418005: variable 'v1' is possibly undefined -// 4180FA: variable 'v3' is possibly undefined - -//----- (0041812E) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_obj_block(int *a1) -{ - bool v1; // zf - unsigned __int8 **v2; // eax - char *v3; // eax - unsigned __int8 **v4; // eax - unsigned __int8 **v5; // eax - char *v6; // ecx - unsigned __int8 **v7; // eax - _DWORD *v8; // eax - _DWORD *v10; // [esp+18h] [ebp-70h] - void *v11; // [esp+1Ch] [ebp-6Ch] - void **v12; // [esp+20h] [ebp-68h] - void *v13; // [esp+24h] [ebp-64h] - void *v14; // [esp+24h] [ebp-64h] - unsigned __int8 **v15; // [esp+24h] [ebp-64h] - int v16; // [esp+24h] [ebp-64h] - int v17; // [esp+24h] [ebp-64h] - void *v18; // [esp+24h] [ebp-64h] - void *v19; // [esp+24h] [ebp-64h] - int v20; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-60h] - char *v25; // [esp+64h] [ebp-24h] BYREF - void *v26[8]; // [esp+68h] [ebp-20h] BYREF - - v13 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::std_v_n); - v12 = (void **)night::NSGod::gen_girl(v13, (int)v26); - std::string::_M_dispose(v26); - std::string::basic_string(v26, (char *)&asc_5527F4[4]); // '{' - night::NSASTParse::ignore_punc(a1, (int)v26); - std::string::_M_dispose(v26); - - v14 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); - v25 = (char *)night::NSGod::gen_son(v14, (int)v26); - std::string::_M_dispose(v26); - std::string::operator=((unsigned int *)v25 + 15, (char *)&asc_5527F4[4]); - std::vector::push_back(v12, &v25); - - std::string::basic_string(v26, "}"); - v15 = night::NSASTParse::is_punctuation(a1, (int)v26); - std::string::_M_dispose(v26); - v1 = v15 == 0; -LABEL_2: - if ( v1 ) - { - while ( 1 ) - { - v2 = night::NSToken::next(a1[7]); - v16 = (int)v2; - if ( !v2 - || (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v2) - && (unsigned __int8)std::operator!=((int)&night::NS_TYPE_STR, v16) ) - { - lpuexcpta = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v26, "Expected variable|string"); - night::NSToken::err((int)lpuexcpta, (int)v26, 0, 0, 0); - } - if ( std::operator==((int)&night::NS_TYPE_STR, v16) ) - { - std::operator+((char *)v26, (int)&night::nsv_, v16 + 60); - std::string::operator=((unsigned __int8 **)(v16 + 60), (int)v26); - std::string::_M_dispose(v26); - } - std::string::basic_string(v26, ":"); - night::NSASTParse::ignore_punc(a1, (int)v26); - std::string::_M_dispose(v26); - - v10 = night::NSASTParse::ast_expression_no_comma(a1); - v11 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_K_V); - v25 = (char *)night::NSGod::gen_son(v11, (int)v26); - std::string::_M_dispose(v26); - v3 = v25; - *((_DWORD *)v25 + 47) = v16; - *((_DWORD *)v3 + 48) = v10; - std::vector::push_back(v12, &v25); - v4 = night::NSToken::peek(a1[7]); - if ( !v4 ) - { - lpuexcptb = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v26, "Expected variable|string"); - night::NSToken::err((int)lpuexcptb, (int)v26, 0, 0, 0); - } - v17 = (int)(v4 + 15); - if ( std::operator==("}", (int)(v4 + 15)) ) - break; - if ( std::operator==(",", v17) ) - { - night::NSToken::next(a1[7]); - v5 = night::NSToken::peek(a1[7]); - if ( !v5 ) - { - lpuexcptc = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v26, "Expected variable|string"); - night::NSToken::err((int)lpuexcptc, (int)v26, 0, 0, 0); - } - v1 = !std::operator==("}", (int)(v5 + 15)); - goto LABEL_2; - } - } - } - - std::string::basic_string(v26, "}"); - night::NSASTParse::ignore_punc(a1, (int)v26); - std::string::_M_dispose(v26); - - v18 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PUNC); - v25 = (char *)night::NSGod::gen_son(v18, (int)v26); - std::string::_M_dispose(v26); - std::string::operator=((unsigned int *)v25 + 15, "}"); - std::vector::push_back(v12, &v25); - - v19 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_OBJ_BLOCK); - v25 = (char *)night::NSGod::gen_son(v19, (int)v26); - std::string::_M_dispose(v26); - v6 = v25; - *((_DWORD *)v25 + 57) = v12; - std::string::operator=((unsigned int *)v6 + 27, (char *)&byte_551F04); - v7 = night::NSToken::peek(a1[7]); - if ( !v7 ) - return night::NSASTParse::make_call_or_just_expression(a1, v25); - v20 = (int)(v7 + 15); - if ( !std::operator==("[", (int)(v7 + 15)) ) - { - if ( std::operator==(".", v20) ) - { - v8 = night::NSASTParse::ast_obj_dot(a1, (int)v25); - return night::NSASTParse::make_call_or_just_expression(a1, v8); - } - return night::NSASTParse::make_call_or_just_expression(a1, v25); - } - v8 = night::NSASTParse::ast_obj_op(a1, (int)v25); - return night::NSASTParse::make_call_or_just_expression(a1, v8); -} - -//----- (004186DE) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall night::NSASTParse::ast_var(_DWORD *a1) -{ - int v1; // ecx - int v2; // eax - unsigned __int8 **v3; // eax - int v4; // ecx - int v5; // eax - char v7; // al - _DWORD *v8; // eax - unsigned int v9; // [esp+14h] [ebp-94h] - unsigned int v10; // [esp+14h] [ebp-94h] - unsigned int v11; // [esp+18h] [ebp-90h] - unsigned int v12; // [esp+18h] [ebp-90h] - int v13; // [esp+1Ch] [ebp-8Ch] - unsigned __int8 **v14; // [esp+1Ch] [ebp-8Ch] - int v15; // [esp+1Ch] [ebp-8Ch] - void **v16; // [esp+20h] [ebp-88h] - void *v17; // [esp+24h] [ebp-84h] - char *v18; // [esp+24h] [ebp-84h] - int v19; // [esp+24h] [ebp-84h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-80h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-80h] - struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-80h] - char *v24; // [esp+6Ch] [ebp-3Ch] BYREF - int v25[6]; // [esp+70h] [ebp-38h] BYREF - void *v26[8]; // [esp+88h] [ebp-20h] BYREF - - night::NSToken::next(a1[7]); - v17 = (void *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::std_v_n); - v16 = (void **)night::NSGod::gen_girl(v17, (int)v26); - std::string::_M_dispose(v26); - while ( 1 ) - { - v1 = a1[7]; - v2 = *(_DWORD *)(v1 + 4); - v9 = *(_DWORD *)(v2 + 52); - v11 = *(_DWORD *)(v2 + 56); - v18 = (char *)night::NSToken::next(v1); - v24 = v18; - v13 = a1[7]; - if ( !v18 ) - { - std::string::basic_string(v26, "End of file"); - night::NSToken::err(v13, (int)v26, 0, 0, 0); - } - if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v18) ) - { - std::string::basic_string(v26, "Expected variable name"); - night::NSToken::err(v13, (int)v26, v9, v11, 1); - } - // offset_56 - v18[56] = 1; - v3 = night::NSToken::peek(v13); - if ( v3 && std::operator==("=", (int)(v3 + 15)) ) - { - v26[0] = (void *)night::NSASTParse::make_binary_or_just_value(a1, (int)v24, 1u); - std::vector::emplace_back(v16, (char **)v26); - } - else - { - std::vector::push_back(v16, &v24); - } - - v4 = a1[7]; // int v4 - v5 = *(_DWORD *)(v4 + 4); - v10 = *(_DWORD *)(v5 + 52); - v12 = *(_DWORD *)(v5 + 56); - v14 = night::NSToken::peek(v4); - if ( !v14 ) - break; - v19 = (int)(v14 + 15); - if ( std::operator==(";", (int)(v14 + 15)) - || (unsigned __int8)std::operator!=(",", v19) && std::string::find((int *)v14 + 21, 10, 0) != (char *)-1 ) - { - break; - } - if ( night::NSToken::eof(a1[7]) ) - { - lpuexcptc = (struct _Unwind_Exception *)a1[7]; - std::string::basic_string(v26, "End of file"); - night::NSToken::err((int)lpuexcptc, (int)v26, 0, 0, 0); - } - v7 = std::operator!=(",", v19); - v15 = a1[7]; - if ( v7 ) - { - std::operator+((int)v25, "Unexpected token `", v19); - v8 = std::string::append(v25, "`"); - std::string::basic_string(v26, v8); - night::NSToken::err(v15, (int)v26, v10, v12, 1); - } - night::NSToken::next(v15); - } - lpuexcpta = (struct _Unwind_Exception *)a1[6]; - std::string::basic_string((char *)v26, (int)&night::NS_TYPE_PROG); - lpuexcptb = (struct _Unwind_Exception *)night::NSGod::gen_son(lpuexcpta, (int)v26); - std::string::_M_dispose(v26); - // 228 - *((_DWORD *)lpuexcptb + 57) = v16; - std::string::operator=((unsigned int *)lpuexcptb + 27, (char *)&byte_551F04); - return lpuexcptb; -} - -//----- (00418B3E) -------------------------------------------------------- -_DWORD *__fastcall night::NSASTParse::ast_expression_no_binary(int *a1) -{ - _DWORD *v1; // eax - bool v3; // [esp+4h] [ebp-24h] - - v1 = (_DWORD *)night::NSASTParse::ast_dispatch(0, v3); - return night::NSASTParse::make_call_or_just_expression(a1, v1); -} -// 418B4E: variable 'v3' is possibly undefined - -//----- (00418B62) -------------------------------------------------------- -char *__thiscall night::NSCompileJs::compile_var[abi:cxx11](char *this, int a2, int a3) -{ - _DWORD *v3; // eax - char v6; // [esp+17h] [ebp-B1h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-B0h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-B0h] - void *v9[6]; // [esp+50h] [ebp-78h] BYREF - void *v10[6]; // [esp+68h] [ebp-60h] BYREF - int v11[2]; // [esp+80h] [ebp-48h] BYREF v11.offset_0 - char v12; // [esp+88h] [ebp-40h] BYREF - int v13; // [esp+98h] [ebp-30h] v11.offset_24 - int v14; // [esp+9Ch] [ebp-2Ch] v11.offset_28 - int v15[2]; // [esp+A0h] [ebp-28h] BYREF v11.offset_32 - char v16; // [esp+A8h] [ebp-20h] BYREF - int v17; // [esp+B8h] [ebp-10h] v11.offset_56 - int v18; // [esp+BCh] [ebp-Ch] v11.offset_60 - - std::string::basic_string(v9, (char *)&byte_551F04); // "\0" - if ( *(_BYTE *)(a3 + 56) ) - std::string::operator=((unsigned int *)v9, "var "); - *(_DWORD *)(a2 + 48) += v9[1]; - lpuexcpt = (struct _Unwind_Exception *)(a3 + 60); - std::string::substr(v11, (_DWORD *)(a3 + 60), 0, dword_565DF4); - if ( (unsigned __int8)std::operator!=((int)v11, (int)&night::nsv_) - && (unsigned __int8)std::operator!=("return", (int)lpuexcpt) - && (unsigned __int8)std::operator!=("delete", (int)lpuexcpt) ) - { - v6 = std::operator!=("void", (int)lpuexcpt); - } - else - { - v6 = 0; - } - std::string::_M_dispose((void **)v11); - if ( v6 ) - { - std::operator+((int)v11, "error : sys error for compile_var `", (int)lpuexcpt); - v3 = std::string::append(v11, "`"); - std::string::basic_string(v10, v3); - std::string::_M_dispose((void **)v11); - lpuexcpta = (struct _Unwind_Exception *)__cxa_allocate_exception(0x18u); - std::string::basic_string(lpuexcpta, v10); - __cxa_throw( - lpuexcpta, - (struct type_info *)&`typeinfo for std::string, - (void (__cdecl *)(void *))std::string::~string); - } - v11[0] = (int)&v12; - v11[1] = 0; - v12 = 0; - v13 = 0; - v14 = 0; - v15[0] = (int)&v16; - v15[1] = 0; - v16 = 0; - v17 = 0; - v18 = 0; - std::string::_M_assign((int)v11, a3 + 24); - v13 = *(_DWORD *)(a3 + 48); - v14 = *(_DWORD *)(a3 + 52); - std::string::_M_assign((int)v15, (int)lpuexcpt); - v17 = *(_DWORD *)(a3 + 48); - v18 = *(_DWORD *)(a2 + 48); - std::vector::push_back((night::ns_sourcemap **)(a2 + 36), (night::ns_sourcemap *)v11); - std::string::basic_string((char *)v10, (int)lpuexcpt); - *(_DWORD *)(a2 + 48) += v10[1]; - std::operator+(this, (int)v9, (int)v10); - std::string::_M_dispose(v10); - night::ns_sourcemap::~ns_sourcemap((void **)v11); - std::string::_M_dispose(v9); - return this; -} -// 55BB98: using guessed type int *`typeinfo for'std::string; -// 565DF4: using guessed type int dword_565DF4; - -//----- (00418ECE) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_function[abi:cxx11](_DWORD *this, int a2, _DWORD *a3) -{ - int *v3; // ecx - _DWORD *v4; // ecx - int *v5; // eax - bool v6; // al - _DWORD *v7; // ecx - _DWORD *v8; // eax - int v9; // eax - _DWORD *v10; // ecx - int *v11; // eax - int v12; // eax - _DWORD *v13; // eax - _DWORD *v14; // eax - int v15; // eax - _DWORD *v16; // eax - _DWORD *v17; // eax - int v18; // eax - int v19; // eax - int *v20; // ecx - _DWORD *v21; // eax - int v22; // eax - int v23; // eax - int v25; // [esp+18h] [ebp-110h] - unsigned int v26; // [esp+1Ch] [ebp-10Ch] - int v27; // [esp+1Ch] [ebp-10Ch] - int v28; // [esp+1Ch] [ebp-10Ch] - char v29; // [esp+20h] [ebp-108h] - unsigned int lpuexcpt; // [esp+24h] [ebp-104h] - unsigned int lpuexcpta; // [esp+24h] [ebp-104h] - unsigned int lpuexcptb; // [esp+24h] [ebp-104h] - void *v34[2]; // [esp+68h] [ebp-C0h] BYREF - char v35; // [esp+70h] [ebp-B8h] BYREF - int v36[6]; // [esp+80h] [ebp-A8h] BYREF - void *v37[6]; // [esp+98h] [ebp-90h] BYREF - char *v38; // [esp+B0h] [ebp-78h] BYREF - int v39; // [esp+B4h] [ebp-74h] - char v40; // [esp+B8h] [ebp-70h] BYREF - int v41; // [esp+C8h] [ebp-60h] BYREF - int v42; // [esp+CCh] [ebp-5Ch] - int v43; // [esp+E0h] [ebp-48h] BYREF v43.offset_0 - int v44; // [esp+E4h] [ebp-44h] - char v45; // [esp+E8h] [ebp-40h] BYREF - int v46; // [esp+F8h] [ebp-30h] v43.offset_24 - int v47; // [esp+FCh] [ebp-2Ch] - int v48[2]; // [esp+100h] [ebp-28h] BYREF - char v49; // [esp+108h] [ebp-20h] BYREF - int v50; // [esp+118h] [ebp-10h] v43.offset_56 - int v51; // [esp+11Ch] [ebp-Ch] - - // compile_function - 0 - *this = this + 2; - this[1] = 0; - *((_BYTE *)this + 8) = 0; - - // a3->offset_136 - v25 = a3[34]; - if ( v25 ) - { - std::string::basic_string((void **)&v41, "function "); - std::string::operator+=(&v41); - *(_DWORD *)(a2 + 48) += v42; - - v43 = (int)&v45; - v44 = 0; - v45 = 0; - - v46 = 0; - v47 = 0; - - v48[0] = (int)&v49; - v48[1] = 0; - v49 = 0; - - v50 = 0; - v51 = 0; - std::string::_M_assign((int)&v43, (int)(a3 + 6)); - v46 = a3[12]; - v47 = a3[13]; - std::string::_M_assign((int)v48, (int)(a3 + 33)); - v50 = a3[12]; - v51 = *(_DWORD *)(a2 + 48); - - // this->ofsset_36.push_back(v43) - std::vector::push_back((night::ns_sourcemap **)(a2 + 36), (night::ns_sourcemap *)&v43); - std::string::operator+=(a3 + 33); - *(_DWORD *)(a2 + 48) += a3[34]; - night::ns_sourcemap::~ns_sourcemap((void **)&v43); - v3 = &v41; - } - else - { - std::string::basic_string((void **)&v43, "(function "); - std::string::operator+=(&v43); - v3 = &v43; - *(_DWORD *)(a2 + 48) += v44; - } - // compile_function - 5 - std::string::_M_dispose((void **)v3); - std::string::operator+=(asc_5527F4); // "(\000)\000{" - lpuexcpt = 0; - ++*(_DWORD *)(a2 + 48); - v29 = 0; - while ( 1 ) - { - // a3->offset_244 - v4 = (_DWORD *)a3[61]; - if ( lpuexcpt >= (v4[1] - *v4) >> 2 ) - break; - v5 = (int *)std::vector::at(v4, lpuexcpt); - v6 = std::operator==((int)&night::NS_TYPE_VAR, *v5); - v7 = (_DWORD *)a3[61]; - if ( v6 ) - { - v8 = (_DWORD *)std::vector::at(v7, lpuexcpt); - std::string::operator+=(*v8 + 60); - *(_DWORD *)(a2 + 48) += *(_DWORD *)(*(_DWORD *)std::vector::at((_DWORD *)a3[61], lpuexcpt) + 64); - } - else - { - v9 = std::vector::at(v7, lpuexcpt); - std::string::operator+=(*(_DWORD *)(*(_DWORD *)v9 + 180) + 60); - v29 = 1; - *(_DWORD *)(a2 + 48) += *(_DWORD *)(*(_DWORD *)(*(_DWORD *)std::vector::at( - (_DWORD *)a3[61], - lpuexcpt) - + 180) - + 64); - } - v26 = lpuexcpt + 1; - lpuexcpt = (*(_DWORD *)(a3[61] + 4) - *(_DWORD *)a3[61]) >> 2; - if ( v26 != lpuexcpt ) - { - std::string::operator+=(","); - ++*(_DWORD *)(a2 + 48); - lpuexcpt = v26; - } - } - // compile_function - 10 - std::string::operator+=(5580790); - ++*(_DWORD *)(a2 + 48); - if ( v29 ) - { - std::string::operator+=(5580792); - lpuexcpta = 0; - ++*(_DWORD *)(a2 + 48); - while ( 1 ) - { - v10 = (_DWORD *)a3[61]; - if ( lpuexcpta >= (v10[1] - *v10) >> 2 ) - break; - v34[1] = 0; - v34[0] = &v35; - v35 = 0; - // cur - v11 = (int *)std::vector::at(v10, lpuexcpta); - if ( std::operator==((int)&night::NS_TYPE_ASSIGN, *v11) ) - { - // cur - v12 = std::vector::at((_DWORD *)a3[61], lpuexcpta); - std::string::basic_string((char *)v36, *(_DWORD *)(*(_DWORD *)v12 + 180) + 60); - std::string::basic_string((char *)&v41, (int)v36); - std::string::append(&v41, "=undefined==="); - v13 = std::string::append(&v41, (int)v36); - std::string::basic_string(&v43, v13); - v14 = std::string::append(&v43, "?"); - std::string::basic_string(v37, v14); - std::string::_M_dispose((void **)&v43); - std::string::_M_dispose((void **)&v41); - std::string::operator+=(v37); - *(_DWORD *)(a2 + 48) += v37[1]; - - v15 = std::vector::at((_DWORD *)a3[61], lpuexcpta); - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(*(_DWORD *)v15 + 184)); - std::string::operator+=(&v38); - std::operator+((int)&v43, ":", (int)v36); - v16 = std::string::append(&v43, ";"); - std::string::basic_string(&v41, v16); - std::string::_M_dispose((void **)&v43); - std::string::operator+=(&v41); - *(_DWORD *)(a2 + 48) += v42; - - std::string::_M_dispose((void **)&v41); - std::string::_M_dispose((void **)&v38); - std::string::_M_dispose(v37); - std::string::_M_dispose((void **)v36); - } - std::string::_M_dispose(v34); - ++lpuexcpta; - } - } - // compile_function - 15 - lpuexcptb = (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6; - night::NSCompileJs::compile[abi:cxx11](a2, a3[54]); - if ( v29 ) - { - v38 = &v40; - v39 = 0; - v40 = 0; - if ( std::string::find((int *)v37, "arguments", 0) != -1 ) - { - std::operator+((int)&v41, "arguments.", (int)&night::nsv_); - v17 = std::string::append(&v41, "length=arguments.length;"); - std::string::basic_string(&v43, v17); - std::string::operator=((unsigned __int8 **)&v38, (int)&v43); - std::string::_M_dispose((void **)&v43); - std::string::_M_dispose((void **)&v41); - std::string::operator+=(&v38); - *(_DWORD *)(a2 + 48) += v39; - } - std::string::substr(&v43, v37, 1u, 0xFFFFFFFF); - std::string::operator+=(&v43); - std::string::_M_dispose((void **)&v43); - --*(_DWORD *)(a2 + 48); - // int a2 - while ( lpuexcptb < (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6 ) - { - v18 = std::vector::at((int *)(a2 + 36), lpuexcptb); - v27 = v39 + *(_DWORD *)(v18 + 60) - 1; - v19 = std::vector::at((int *)(a2 + 36), lpuexcptb++); - *(_DWORD *)(v19 + 60) = v27; - } - v20 = (int *)&v38; - goto LABEL_29; // 销毁v20 -> LABEL_31 - } - // compile_function - 20 - if ( std::string::find((int *)v37, "arguments", 0) != -1 ) - { - std::operator+((int)&v43, "{arguments.", (int)&night::nsv_); - v21 = std::string::append(&v43, "length=arguments.length;"); - std::string::basic_string(&v41, v21); - std::string::_M_dispose((void **)&v43); - std::string::operator+=(&v41); - *(_DWORD *)(a2 + 48) += v42; - std::string::substr(&v43, v37, 1u, 0xFFFFFFFF); - std::string::operator+=(&v43); - std::string::_M_dispose((void **)&v43); - --*(_DWORD *)(a2 + 48); - while ( lpuexcptb < (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6 ) - { - v22 = std::vector::at((int *)(a2 + 36), lpuexcptb); - v28 = v42 + *(_DWORD *)(v22 + 60) - 1; - v23 = std::vector::at((int *)(a2 + 36), lpuexcptb++); - *(_DWORD *)(v23 + 60) = v28; - } - v20 = &v41; -LABEL_29: - std::string::_M_dispose((void **)v20); - goto LABEL_31; - } - // compile_function - 25 - std::string::operator+=(v37); -LABEL_31: - if ( !v25 ) - { - std::string::operator+=(5580790); - ++*(_DWORD *)(a2 + 48); - } - std::string::_M_dispose(v37); - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041995C) -------------------------------------------------------- -void **__thiscall night::NSCompileJs::compile[abi:cxx11](void **this, int a2, _DWORD *a3) -{ - _DWORD *v3; // eax - char **v4; // ecx - bool v5; // al - int v7; // [esp+14h] [ebp-B4h] - void *v9[6]; // [esp+50h] [ebp-78h] BYREF - char *v10; // [esp+68h] [ebp-60h] BYREF - int v11; // [esp+6Ch] [ebp-5Ch] - char v12; // [esp+70h] [ebp-58h] BYREF - char *v13; // [esp+80h] [ebp-48h] BYREF v13.offset_0 std::string - int v14; // [esp+84h] [ebp-44h] - char v15[16]; // [esp+88h] [ebp-40h] BYREF - int v16; // [esp+98h] [ebp-30h] v13.offset_24 - int v17; // [esp+9Ch] [ebp-2Ch] v13.offset_28 - char *v18; // [esp+A0h] [ebp-28h] BYREF v13.offset_32 std::string - int v19; // [esp+A4h] [ebp-24h] - char v20[16]; // [esp+A8h] [ebp-20h] BYREF - int v21; // [esp+B8h] [ebp-10h] v13.offset_56 - int v22; // [esp+BCh] [ebp-Ch] v13.offset_60 - - if ( !*(_DWORD *)(a2 + 4) ) - { - std::string::basic_string((char *)v9, (int)a3); - if ( std::operator==((int)&night::NS_TYPE_SKIP, (int)v9) ) - { - std::string::basic_string(this, (char *)&byte_551F04); // '\0' - LABEL_60: // 销毁数据,返回this - std::string::_M_dispose(v9); - return this; - } - if ( !std::operator==((int)&night::NS_TYPE_NUM, (int)v9) ) - { - if ( std::operator==((int)&night::NS_TYPE_BOOL, (int)v9) ) - { - v13 = v15; // v13.offset_0 - v14 = 0; - v15[0] = 0; - v18 = v20; - v16 = 0; - v17 = 0; - v19 = 0; - v20[0] = 0; - v21 = 0; - v22 = 0; - // a3 + 6 -> a3.offset_24 - std::string::_M_assign((int)&v13, (int)(a3 + 6)); - // v16 -> v13.offset_24 - v16 = a3[12]; - v17 = a3[13]; - // a3 + 15 -> a3.offset_60 - std::string::_M_assign((int)&v18, (int)(a3 + 15)); - v21 = a3[12]; - v22 = *(_DWORD *)(a2 + 48); - std::vector::push_back((night::ns_sourcemap **)(a2 + 36), (night::ns_sourcemap *)&v13); - std::string::basic_string((char *)&v10, (int)(a3 + 15)); - *(_DWORD *)(a2 + 48) += v11; - std::string::basic_string(this, &v10); - std::string::_M_dispose((void **)&v10); - night::ns_sourcemap::~ns_sourcemap((void **)&v13); - goto LABEL_60; // 销毁数据,返回this - } - if ( std::operator==((int)&night::NS_TYPE_STR, (int)v9) ) - { - // a3.offset_108 - std::operator+((char *)&v13, (int)(a3 + 27), (int)(a3 + 15)); - v3 = std::string::append(&v13, (int)(a3 + 27)); - std::string::basic_string(&v10, v3); - std::string::_M_dispose((void **)&v13); - *(_DWORD *)(a2 + 48) += v11; - std::string::basic_string(this, &v10); - LABEL_10: - v4 = &v10; - LABEL_11: - std::string::_M_dispose((void **)v4); - goto LABEL_60; // 销毁数据,返回this - } - if ( !std::operator==((int)&night::NS_TYPE_B_TYPE, (int)v9) - && !std::operator==((int)&night::NS_TYPE_PUNC, (int)v9) ) - { - if ( !std::operator==((int)&night::NS_TYPE_KW, (int)v9) ) - { - if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v9) ) - { - night::NSCompileJs::compile_var[abi:cxx11]((char *)this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_K_V, (int)v9) ) - { - night::NSCompileJs::compile_k_v[abi:cxx11]((int)this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_IF, (int)v9) ) - { - night::NSCompileJs::compile_if[abi:cxx11](this, a2, a3); - } - else if ( std::operator==((int)&night::NS_TYPE_FOR, (int)v9) ) - { - night::NSCompileJs::compile_for[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_WHILE, (int)v9) ) - { - night::NSCompileJs::compile_while[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_DO_WHILE, (int)v9) ) - { - night::NSCompileJs::compile_do_while[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_SWITCH, (int)v9) ) - { - night::NSCompileJs::compile_switch[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, (int)v9) ) - { - night::NSCompileJs::compile_obj_self_op[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_OBJ_PROPERTY, (int)v9) ) - { - night::NSCompileJs::compile_obj_property[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_OBJ_DOT, (int)v9) ) - { - night::NSCompileJs::compile_obj_dot[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_OP_SELF, (int)v9) ) - { - night::NSCompileJs::compile_op_self[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_TERNARY, (int)v9) ) - { - night::NSCompileJs::compile_ternary[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_BINARY, (int)v9) - || std::operator==((int)&night::NS_TYPE_ASSIGN, (int)v9) ) - { - night::NSCompileJs::compile_binary[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_FUNC, (int)v9) ) - { - night::NSCompileJs::compile_function[abi:cxx11](this, a2, a3); - } - else if ( std::operator==((int)&night::NS_TYPE_CALL, (int)v9) ) - { - night::NSCompileJs::compile_call[abi:cxx11]((int)this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_PROG, (int)v9) ) - { - night::NSCompileJs::compile_prog[abi:cxx11](this, a2, (int)a3); - } - else if ( std::operator==((int)&night::NS_TYPE_PROG_NO_SEM, (int)v9) - || std::operator==((int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, (int)v9) - || std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, (int)v9) - || std::operator==((int)&night::NS_TYPE_ARRAY, (int)v9) - || std::operator==((int)&night::NS_TYPE_BRACKET, (int)v9) ) - { - night::NSCompileJs::compile_prog_no_sem[abi:cxx11](this, a2, (int)a3); - } - else - { - std::string::_M_assign(a2, (int)a3); - std::string::basic_string(this, (char *)&byte_551F04); - } - goto LABEL_60; // 销毁数据,返回 - } - v10 = &v12; - v11 = 0; - v12 = 0; - v7 = (int)(a3 + 15); - if ( std::operator==("this", (int)(a3 + 15)) ) - { - std::string::operator=((unsigned int *)&v10, "(this.constructor===Window?{}:this)"); - ++*(_DWORD *)(a2 + 48); - } - else - { - std::string::_M_assign((int)&v10, v7); - } - v15[0] = 0; - v13 = v15; - v18 = v20; - v14 = 0; - v16 = 0; - v17 = 0; - v19 = 0; - v20[0] = 0; - v21 = 0; - v22 = 0; - // a3 + 6 -> a3.offset_24 - std::string::_M_assign((int)&v13, (int)(a3 + 6)); - v16 = a3[12]; - v17 = a3[13]; - std::string::_M_assign((int)&v18, v7); // a3.offset_60 - v21 = a3[12]; - v22 = *(_DWORD *)(a2 + 48); // a2.offset_48 - std::vector::push_back((night::ns_sourcemap **)(a2 + 36), (night::ns_sourcemap *)&v13); - v5 = std::operator==("this", v7); - *(_DWORD *)(a2 + 48) = !v5 + v11 + *(_DWORD *)(a2 + 48) - 1; - std::string::basic_string(this, &v10); - night::ns_sourcemap::~ns_sourcemap((void **)&v13); - goto LABEL_10; // 销毁数据,返回this - } - } - // a3 + 15 -> a3.offset_60 - std::string::basic_string((char *)&v13, (int)(a3 + 15)); - *(_DWORD *)(a2 + 48) += v14; - std::string::basic_string(this, &v13); - v4 = &v13; - goto LABEL_11; // 销毁数据,返回 - } - std::string::basic_string(this, (char *)&byte_551F04); // "\0" - return this; -} - -//----- (0041A302) -------------------------------------------------------- -int __thiscall night::NSCompileJs::compile_k_v[abi:cxx11](int this, int a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // eax - void *v7[6]; // [esp+50h] [ebp-38h] BYREF - void *v8[8]; // [esp+68h] [ebp-20h] BYREF - - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - *(_BYTE *)(this + 8) = 0; - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 188)); - v3 = std::string::append(v7, ":"); - std::string::basic_string(v8, v3); - std::string::operator=((unsigned __int8 **)this, (int)v8); - std::string::_M_dispose(v8); - std::string::_M_dispose(v7); - ++*(_DWORD *)(a2 + 48); - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); - v4 = std::string::append(v7, ","); - std::string::basic_string(v8, v4); - std::string::operator+=(v8); - std::string::_M_dispose(v8); - std::string::_M_dispose(v7); - ++*(_DWORD *)(a2 + 48); - return this; -} -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041A482) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_if[abi:cxx11](_DWORD *this, int a2, _DWORD *a3) -{ - void *v5[6]; // [esp+50h] [ebp-38h] BYREF - void *v6[8]; // [esp+68h] [ebp-20h] BYREF - - *this = this + 2; - this[1] = 0; - *((_BYTE *)this + 8) = 0; - std::string::operator+=("if "); - *(_DWORD *)(a2 + 48) += 3; - night::NSCompileJs::compile[abi:cxx11](a2, a3[51]); - std::string::operator+=(v6); - std::string::_M_dispose(v6); - night::NSCompileJs::compile[abi:cxx11](a2, a3[52]); - std::string::operator+=(v6); - std::string::_M_dispose(v6); - std::string::operator+=(a3 + 27); - *(_DWORD *)(a2 + 48) += a3[28]; - if ( a3[53] ) // a3.offset_212 - { - std::string::basic_string(v5, " else "); - std::string::operator+=(v5); - *(_DWORD *)(a2 + 48) += v5[1]; - night::NSCompileJs::compile[abi:cxx11](a2, a3[53]); - std::string::operator+=(v6); - std::string::_M_dispose(v6); - std::string::_M_dispose(v5); - } - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041A668) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_for[abi:cxx11](_DWORD *this, int a2, int a3) -{ - _DWORD *v3; // ecx - _DWORD *v4; // eax - _DWORD *v5; // eax - _DWORD *v6; // eax - _DWORD *v7; // eax - _DWORD *v8; // eax - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-A0h] - void *v12[2]; // [esp+50h] [ebp-68h] BYREF - char v13; // [esp+58h] [ebp-60h] BYREF - void *v14[6]; // [esp+68h] [ebp-50h] BYREF - void *v15[6]; // [esp+80h] [ebp-38h] BYREF - void *v16[8]; // [esp+98h] [ebp-20h] BYREF - - v12[0] = &v13; - v12[1] = 0; - v13 = 0; - std::string::basic_string(v14, "for("); - std::string::operator+=(v14); - *(_DWORD *)(a2 + 48) += v14[1]; - v3 = *(_DWORD **)(a3 + 228); - if ( v3[1] - *v3 != 12 ) - { - std::string::basic_string(v16, "error : sys error for compile_for"); - lpuexcpta = (struct _Unwind_Exception *)__cxa_allocate_exception(0x18u); - std::string::basic_string(lpuexcpta, v16); - __cxa_throw( - lpuexcpta, - (struct type_info *)&`typeinfo for std::string, - (void (__cdecl *)(void *))std::string::~string); - } - v4 = (_DWORD *)std::vector::at(v3, 0); - night::NSCompileJs::compile[abi:cxx11](a2, *v4); - v5 = std::string::append(v15, ";"); - std::string::basic_string(v16, v5); - std::string::operator+=(v16); - std::string::_M_dispose(v16); - std::string::_M_dispose(v15); - ++*(_DWORD *)(a2 + 48); - - v6 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 228), 1u); - night::NSCompileJs::compile[abi:cxx11](a2, *v6); - v7 = std::string::append(v15, ";"); - std::string::basic_string(v16, v7); - std::string::operator+=(v16); - std::string::_M_dispose(v16); - std::string::_M_dispose(v15); - ++*(_DWORD *)(a2 + 48); - v8 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 228), 2u); - night::NSCompileJs::compile[abi:cxx11](a2, *v8); - std::string::operator+=(v16); - std::string::_M_dispose(v16); - std::string::operator+=(5580790); - ++*(_DWORD *)(a2 + 48); - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 216)); - std::string::operator+=(v16); - std::string::_M_dispose(v16); - std::string::basic_string(this, v12); - std::string::_M_dispose(v14); - std::string::_M_dispose(v12); - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); -// 55BB98: using guessed type int *`typeinfo for'std::string; - -//----- (0041A9BA) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_while[abi:cxx11](_DWORD *this, int a2, int a3) -{ - void *v5[6]; // [esp+50h] [ebp-38h] BYREF - void *v6[8]; // [esp+68h] [ebp-20h] BYREF - - *this = this + 2; - this[1] = 0; - *((_BYTE *)this + 8) = 0; - - std::string::basic_string(v5, "while("); - std::string::operator+=(v5); - *(_DWORD *)(a2 + 48) += v5[1]; - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); - std::string::operator+=(v6); - std::string::_M_dispose(v6); - std::string::operator+=(5580790); - ++*(_DWORD *)(a2 + 48); - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 216)); - std::string::operator+=(v6); - std::string::_M_dispose(v6); - std::string::_M_dispose(v5); - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041AB28) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_do_while[abi:cxx11](_DWORD *this, int a2, int a3) -{ - void *v5[6]; // [esp+58h] [ebp-50h] BYREF - void *v6[6]; // [esp+70h] [ebp-38h] BYREF - void *v7[8]; // [esp+88h] [ebp-20h] BYREF - - *this = this + 2; - this[1] = 0; - *((_BYTE *)this + 8) = 0; - - std::string::basic_string(v5, "do"); - std::string::operator+=(v5); - *(_DWORD *)(a2 + 48) += v5[1]; - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 216)); - std::string::operator+=(v7); - std::string::_M_dispose(v7); - std::string::basic_string(v6, "while("); - std::string::operator+=(v6); - *(_DWORD *)(a2 + 48) += v6[1]; - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); - std::string::operator+=(v7); - std::string::_M_dispose(v7); - std::string::basic_string(v7, ");"); - std::string::operator+=(v7); - *(_DWORD *)(a2 + 48) += v7[1]; - std::string::_M_dispose(v7); - std::string::_M_dispose(v6); - std::string::_M_dispose(v5); - return this; -} -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041AD4C) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_switch[abi:cxx11](_DWORD *this, int a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // eax - _DWORD *v5; // eax - int v6; // eax - _DWORD **v7; // eax - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - _DWORD *v11; // eax - unsigned int v13; // [esp+10h] [ebp-A8h] - unsigned int lpuexcpt; // [esp+14h] [ebp-A4h] - unsigned int lpuexcpta; // [esp+14h] [ebp-A4h] - void *v17[6]; // [esp+50h] [ebp-68h] BYREF - void *v18[6]; // [esp+68h] [ebp-50h] BYREF - void *v19[6]; // [esp+80h] [ebp-38h] BYREF - void *v20[8]; // [esp+98h] [ebp-20h] BYREF - - this[1] = 0; - *this = this + 2; - *((_BYTE *)this + 8) = 0; - std::string::basic_string(v17, "switch("); - std::string::operator+=(v17); - *(_DWORD *)(a2 + 48) += v17[1]; - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); - v3 = std::string::append(v19, "){"); - std::string::basic_string(v20, v3); - std::string::operator+=(v20); - std::string::_M_dispose(v20); - std::string::_M_dispose(v19); - lpuexcpt = 0; - *(_DWORD *)(a2 + 48) += 2; - while ( lpuexcpt < (*(_DWORD *)(*(_DWORD *)(a3 + 232) + 4) - **(_DWORD **)(a3 + 232)) >> 2 ) - { - std::string::basic_string(v18, "case "); - std::string::operator+=(v18); - *(_DWORD *)(a2 + 48) += v18[1]; - v4 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 232), lpuexcpt); - night::NSCompileJs::compile[abi:cxx11](a2, *v4); - v5 = std::string::append(v19, ":"); - std::string::basic_string(v20, v5); - std::string::operator+=(v20); - std::string::_M_dispose(v20); - std::string::_M_dispose(v19); - v13 = 0; - ++*(_DWORD *)(a2 + 48); - while ( 1 ) - { - v6 = std::vector>>::at( - *(_DWORD **)(a3 + 236), - lpuexcpt); - if ( v13 >= (*(_DWORD *)(*(_DWORD *)v6 + 4) - **(_DWORD **)v6) >> 2 ) - break; - v7 = (_DWORD **)std::vector>>::at( - *(_DWORD **)(a3 + 236), - lpuexcpt); - v8 = (_DWORD *)std::vector::at(*v7, v13); - night::NSCompileJs::compile[abi:cxx11](a2, *v8); - v9 = std::string::append(v19, ";"); - std::string::basic_string(v20, v9); - std::string::operator+=(v20); - std::string::_M_dispose(v20); - std::string::_M_dispose(v19); - ++v13; - ++*(_DWORD *)(a2 + 48); - } - std::string::_M_dispose(v18); - ++lpuexcpt; - } - for ( lpuexcpta = 0; lpuexcpta < (*(_DWORD *)(*(_DWORD *)(a3 + 240) + 4) - **(_DWORD **)(a3 + 240)) >> 2; ++lpuexcpta ) - { - if ( !lpuexcpta ) - { - std::string::basic_string(v20, "default:"); - std::string::operator+=(v20); - *(_DWORD *)(a2 + 48) += v20[1]; - std::string::_M_dispose(v20); - } - v10 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 240), lpuexcpta); - night::NSCompileJs::compile[abi:cxx11](a2, *v10); - v11 = std::string::append(v19, ";"); - std::string::basic_string(v20, v11); - std::string::operator+=(v20); - std::string::_M_dispose(v20); - std::string::_M_dispose(v19); - ++*(_DWORD *)(a2 + 48); - } - std::string::operator+=("}"); - ++*(_DWORD *)(a2 + 48); - std::string::_M_dispose(v17); - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041B200) -------------------------------------------------------- -_BYTE *__thiscall night::NSCompileJs::compile_obj_self_op[abi:cxx11](_BYTE *this, int a2, int a3) -{ - _DWORD *v3; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-74h] - void *v7[6]; // [esp+50h] [ebp-38h] BYREF - void *v8[8]; // [esp+68h] [ebp-20h] BYREF - - *(_DWORD *)this = this + 8; - *((_DWORD *)this + 1) = 0; - this[8] = 0; - lpuexcpt = (struct _Unwind_Exception *)(a3 + 156); - if ( *(_BYTE *)(a3 + 200) ) - { - std::string::operator+=(lpuexcpt); - *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); - std::string::operator+=(v8); - std::string::_M_dispose(v8); - } - else - { - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); - v3 = std::string::append(v7, (int)lpuexcpt); - std::string::basic_string(v8, v3); - std::string::operator+=(v8); - std::string::_M_dispose(v8); - std::string::_M_dispose(v7); - *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); - } - return this; -} -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041B398) -------------------------------------------------------- -_BYTE *__thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](_BYTE *this, int a2, int a3) -{ - unsigned int *v3; // eax - int *v4; // eax - _DWORD *v5; // eax - _DWORD *v6; // eax - void **v7; // ecx - int *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - _DWORD *v11; // eax - _DWORD *v12; // eax - _DWORD *v13; // eax - _DWORD *v14; // eax - _DWORD *v15; // eax - _DWORD *v16; // eax - _DWORD *v17; // eax - _DWORD *v18; // eax - _DWORD *v19; // eax - _DWORD *v20; // eax - _DWORD *v21; // eax - _DWORD *v22; // eax - unsigned int lpuexcpt; // [esp+18h] [ebp-180h] - int v26[6]; // [esp+58h] [ebp-140h] BYREF - unsigned __int8 *v27; // [esp+70h] [ebp-128h] BYREF - int v28; // [esp+74h] [ebp-124h] - int v29[6]; // [esp+88h] [ebp-110h] BYREF - void *v30[6]; // [esp+A0h] [ebp-F8h] BYREF - void *v31[6]; // [esp+B8h] [ebp-E0h] BYREF - void *v32[6]; // [esp+D0h] [ebp-C8h] BYREF - void *v33[6]; // [esp+E8h] [ebp-B0h] BYREF - void *v34[6]; // [esp+100h] [ebp-98h] BYREF - void *v35[6]; // [esp+118h] [ebp-80h] BYREF - void *v36[6]; // [esp+130h] [ebp-68h] BYREF - void *v37[6]; // [esp+148h] [ebp-50h] BYREF - void *v38[6]; // [esp+160h] [ebp-38h] BYREF - int v39[8]; // [esp+178h] [ebp-20h] BYREF - - std::to_string((std::__cxx11 *)v39, *(_DWORD *)(a2 + 32)); - v3 = std::string::insert((unsigned int *)v39, 0, (int)&night::nst_); - std::string::basic_string(v26, v3); - std::string::_M_dispose((void **)v39); - ++*(_DWORD *)(a2 + 32); - - *(_DWORD *)this = this + 8; // std::string - *((_DWORD *)this + 1) = 0; - this[8] = 0; - - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); - std::string::operator+=(v39); - std::string::_M_dispose((void **)v39); - for ( lpuexcpt = 0; lpuexcpt < (*(_DWORD *)(*(_DWORD *)(a3 + 196) + 4) - **(_DWORD **)(a3 + 196)) >> 2; ++lpuexcpt ) - { - std::string::operator+=(&unk_552E38); - *(_DWORD *)(a2 + 48) += 2; - v4 = (int *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); - if ( std::operator==((int)&night::NS_TYPE_STR, *v4) ) - { - std::operator+((int)v39, "\"", (int)&night::nsv_); - v5 = std::string::append(v39, "\"+"); - std::string::basic_string(v38, v5); - std::string::_M_dispose((void **)v39); - std::string::operator+=(v38); - *(_DWORD *)(a2 + 48) += v38[1]; - v6 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); - night::NSCompileJs::compile[abi:cxx11](a2, *v6); - std::string::operator+=(v39); - std::string::_M_dispose((void **)v39); - v7 = v38; - } - else - { - v8 = (int *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); - if ( std::operator==((int)&night::NS_TYPE_NUM, *v8) ) - { - v9 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); - night::NSCompileJs::compile[abi:cxx11](a2, *v9); - std::string::operator+=(v39); - v7 = (void **)v39; - } - else - { - std::operator+((int)v39, (char *)asc_5527F4, (int)v26); - v10 = std::string::append(v39, "=("); - std::string::basic_string(&v27, v10); - std::string::_M_dispose((void **)v39); - std::string::operator+=(&v27); - *(_DWORD *)(a2 + 48) += v28; - - v11 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); - night::NSCompileJs::compile[abi:cxx11](a2, *v11); - v12 = std::string::append(v38, "),"); - std::string::basic_string(v39, v12); - std::string::operator+=(v39); - std::string::_M_dispose((void **)v39); - std::string::_M_dispose(v38); - *(_DWORD *)(a2 + 48) += 2; - - std::operator+((int)v29, "null==", (int)v26); - v13 = std::string::append(v29, "?undefined:"); - std::string::basic_string(v30, v13); - v14 = std::string::append(v30, "'number'=== typeof "); - std::string::basic_string(v31, v14); - v15 = std::string::append(v31, (int)v26); - std::string::basic_string(v32, v15); - v16 = std::string::append(v32, "?"); - std::string::basic_string(v33, v16); - v17 = std::string::append(v33, (int)v26); - std::string::basic_string(v34, v17); - v18 = std::string::append(v34, ":\""); - std::string::basic_string(v35, v18); - v19 = std::string::append(v35, (int)&night::nsv_); - std::string::basic_string(v36, v19); - v20 = std::string::append(v36, "\"+"); - std::string::basic_string(v37, v20); - v21 = std::string::append(v37, (int)v26); - std::string::basic_string(v38, v21); - v22 = std::string::append(v38, (char *)&asc_5527F4[2]); - std::string::basic_string(v39, v22); - std::string::operator=(&v27, (int)v39); - std::string::_M_dispose((void **)v39); - std::string::_M_dispose(v38); - std::string::_M_dispose(v37); - std::string::_M_dispose(v36); - std::string::_M_dispose(v35); - std::string::_M_dispose(v34); - std::string::_M_dispose(v33); - std::string::_M_dispose(v32); - std::string::_M_dispose(v31); - std::string::_M_dispose(v30); - std::string::_M_dispose((void **)v29); - std::string::operator+=(&v27); - v7 = (void **)&v27; - *(_DWORD *)(a2 + 48) += v28; - } - } - std::string::_M_dispose(v7); - std::string::operator+=(")]"); - *(_DWORD *)(a2 + 48) += 2; - } - std::string::_M_dispose((void **)v26); - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041BB26) -------------------------------------------------------- -_BYTE *__thiscall night::NSCompileJs::compile_obj_dot[abi:cxx11](_BYTE *this, int a2, int a3) -{ - _DWORD *v3; // eax - unsigned int lpuexcpt; // [esp+14h] [ebp-64h] - void *v7[8]; // [esp+58h] [ebp-20h] BYREF - - this[8] = 0; - *(_DWORD *)this = this + 8; - *((_DWORD *)this + 1) = 0; - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); - std::string::operator+=(v7); - std::string::_M_dispose(v7); - for ( lpuexcpt = 0; lpuexcpt < (*(_DWORD *)(*(_DWORD *)(a3 + 196) + 4) - **(_DWORD **)(a3 + 196)) >> 2; ++lpuexcpt ) - { - std::string::operator+=("."); - ++*(_DWORD *)(a2 + 48); - v3 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); - night::NSCompileJs::compile[abi:cxx11](a2, *v3); - std::string::operator+=(v7); - std::string::_M_dispose(v7); - } - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041BC88) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_op_self[abi:cxx11](_DWORD *this, int a2, int a3) -{ - void *v5[8]; // [esp+58h] [ebp-20h] BYREF - - *this = this + 2; - this[1] = 0; - *((_BYTE *)this + 8) = 0; - std::string::operator+=(a3 + 156); - *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); - std::string::operator+=(v5); - std::string::_M_dispose(v5); - return this; -} -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041BD76) -------------------------------------------------------- -_BYTE *__thiscall night::NSCompileJs::compile_ternary[abi:cxx11](_BYTE *this, int a2, int a3) -{ - _DWORD *v3; // eax - void *v6[6]; // [esp+50h] [ebp-38h] BYREF - void *v7[8]; // [esp+68h] [ebp-20h] BYREF - - *(_DWORD *)this = this + 8; - *((_DWORD *)this + 1) = 0; - this[8] = 0; - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 180)); - v3 = std::string::append(v6, ":"); - std::string::basic_string(v7, v3); - std::string::operator+=(v7); - std::string::_M_dispose(v7); - std::string::_M_dispose(v6); - ++*(_DWORD *)(a2 + 48); - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 184)); - std::string::operator+=(v7); - std::string::_M_dispose(v7); - return this; -} -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041BED0) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_binary[abi:cxx11](_DWORD *this, int a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // eax - void *v7[6]; // [esp+50h] [ebp-68h] BYREF - void *v8[6]; // [esp+68h] [ebp-50h] BYREF - void *v9[6]; // [esp+80h] [ebp-38h] BYREF - int v10[8]; // [esp+98h] [ebp-20h] BYREF - - // a3.offset_180 - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 180)); - std::operator+((int)v10, " ", a3 + 156); - v3 = std::string::append(v10, " "); - std::string::basic_string(v8, v3); - std::string::_M_dispose((void **)v10); - *(_DWORD *)(a2 + 48) += v8[1]; - - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 184)); - std::operator+((char *)v10, (int)v7, (int)v8); - v4 = std::string::append(v10, (int)v9); - std::string::basic_string(this, v4); - std::string::_M_dispose((void **)v10); - std::string::_M_dispose(v9); - std::string::_M_dispose(v8); - std::string::_M_dispose(v7); - return this; -} -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041C09C) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_assign[abi:cxx11](_DWORD *this, int a2, int a3) -{ - night::NSCompileJs::compile_binary[abi:cxx11](this, a2, a3); - return this; -} - -//----- (0041C0C0) -------------------------------------------------------- -int __thiscall night::NSCompileJs::compile_call[abi:cxx11](int this, int a2, int a3) -{ - _DWORD *v3; // ecx - int v4; // eax - int v5; // eax - _DWORD **v6; // eax - int *v7; // eax - _DWORD **v8; // eax - _DWORD *v9; // eax - int v10; // eax - int v11; // eax - int v12; // eax - _DWORD **v13; // eax - _DWORD *v14; // eax - int v15; // eax - unsigned int v17; // [esp+1Ch] [ebp-6Ch] - unsigned int v18; // [esp+1Ch] [ebp-6Ch] - unsigned int v19; // [esp+20h] [ebp-68h] - unsigned int i; // [esp+20h] [ebp-68h] - unsigned int lpuexcpt; // [esp+24h] [ebp-64h] - unsigned int lpuexcpta; // [esp+24h] [ebp-64h] - void *v24[8]; // [esp+68h] [ebp-20h] BYREF - - *(_DWORD *)this = this + 8; // std::string - *(_DWORD *)(this + 4) = 0; - *(_BYTE *)(this + 8) = 0; - night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 220)); - std::string::operator=((unsigned __int8 **)this, (int)v24); - std::string::_M_dispose(v24); - if ( std::operator==("return", *(_DWORD *)(a3 + 220) + 60) ) - { - for ( lpuexcpt = 0; ; ++lpuexcpt ) - { - v3 = *(_DWORD **)(a3 + 224); - if ( lpuexcpt >= (v3[1] - *v3) >> 2 ) - break; - v4 = std::vector>>::at(v3, lpuexcpt); - if ( **(_DWORD **)v4 != *(_DWORD *)(*(_DWORD *)v4 + 4) ) - { - v5 = std::vector>>::at( - *(_DWORD **)(a3 + 224), - lpuexcpt); - if ( *(_DWORD *)(*(_DWORD *)v5 + 4) - **(_DWORD **)v5 != 4 - || (v6 = (_DWORD **)std::vector>>::at( - *(_DWORD **)(a3 + 224), - lpuexcpt), - v7 = (int *)std::vector::at(*v6, 0), - !std::operator==((int)&night::NS_TYPE_SKIP, *v7)) ) - { - std::string::operator+=(asc_5527F4); // "(\000)\000{" - v19 = 0; - ++*(_DWORD *)(a2 + 48); - while ( 1 ) - { - // v4 - v11 = std::vector>>::at( - *(_DWORD **)(a3 + 224), - lpuexcpt); - if ( v19 >= (*(_DWORD *)(*(_DWORD *)v11 + 4) - **(_DWORD **)v11) >> 2 ) - break; - // v4 - v8 = (_DWORD **)std::vector>>::at( - *(_DWORD **)(a3 + 224), - lpuexcpt); - v9 = (_DWORD *)std::vector::at(*v8, v19); - night::NSCompileJs::compile[abi:cxx11](a2, *v9); - std::string::operator+=(v24); - std::string::_M_dispose(v24); - v17 = v19 + 1; - // v4 - v10 = std::vector>>::at( - *(_DWORD **)(a3 + 224), - lpuexcpt); - v19 = (*(_DWORD *)(*(_DWORD *)v10 + 4) - **(_DWORD **)v10) >> 2; - if ( v17 != v19 ) - { - std::string::operator+=(","); - ++*(_DWORD *)(a2 + 48); - v19 = v17; - } - } // end while - std::string::operator+=(5580790); - ++*(_DWORD *)(a2 + 48); - } - } - } - } - else - { - for ( i = 0; i < (*(_DWORD *)(*(_DWORD *)(a3 + 224) + 4) - **(_DWORD **)(a3 + 224)) >> 2; ++i ) - { - std::string::operator+=(asc_5527F4); // "(\000)\000{" - lpuexcpta = 0; - ++*(_DWORD *)(a2 + 48); - while ( 1 ) - { - v12 = std::vector>>::at(*(_DWORD **)(a3 + 224), i); - if ( lpuexcpta >= (*(_DWORD *)(*(_DWORD *)v12 + 4) - **(_DWORD **)v12) >> 2 ) - break; - v13 = (_DWORD **)std::vector>>::at( - *(_DWORD **)(a3 + 224), - i); - v14 = (_DWORD *)std::vector::at(*v13, lpuexcpta); - night::NSCompileJs::compile[abi:cxx11](a2, *v14); - std::string::operator+=(v24); - std::string::_M_dispose(v24); - v18 = lpuexcpta + 1; - v15 = std::vector>>::at(*(_DWORD **)(a3 + 224), i); - lpuexcpta = (*(_DWORD *)(*(_DWORD *)v15 + 4) - **(_DWORD **)v15) >> 2; - if ( v18 != lpuexcpta ) - { - std::string::operator+=(","); - ++*(_DWORD *)(a2 + 48); - lpuexcpta = v18; - } - } // end while - std::string::operator+=(5580790); - ++*(_DWORD *)(a2 + 48); - } - } - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041C4DC) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_prog[abi:cxx11](_DWORD *this, int a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - unsigned int v6; // [esp+10h] [ebp-78h] - unsigned int lpuexcpt; // [esp+14h] [ebp-74h] - void *v9; // [esp+50h] [ebp-38h] BYREF - int v10; // [esp+54h] [ebp-34h] - void *v11[8]; // [esp+68h] [ebp-20h] BYREF - - std::string::basic_string((char *)&v9, a3 + 108); - if ( !v10 ) - std::string::operator=((unsigned int *)&v9, ";"); - lpuexcpt = 0; - - *this = this + 2; - this[1] = 0; - *((_BYTE *)this + 8) = 0; - - while ( 1 ) - { - v4 = *(_DWORD **)(a3 + 228); - if ( lpuexcpt >= (v4[1] - *v4) >> 2 ) - break; - v3 = (_DWORD *)std::vector::at(v4, lpuexcpt); - night::NSCompileJs::compile[abi:cxx11](a2, *v3); - std::string::operator+=(v11); - std::string::_M_dispose(v11); - v6 = lpuexcpt + 1; - lpuexcpt = (*(_DWORD *)(*(_DWORD *)(a3 + 228) + 4) - **(_DWORD **)(a3 + 228)) >> 2; - if ( v6 != lpuexcpt ) - { - std::string::operator+=(&v9); - *(_DWORD *)(a2 + 48) += v10; - lpuexcpt = v6; - } - } - std::string::_M_dispose(&v9); - return this; -} -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041C66C) -------------------------------------------------------- -_DWORD *__thiscall night::NSCompileJs::compile_prog_no_sem[abi:cxx11](_DWORD *this, int a2, int a3) -{ - _DWORD *v3; // ecx - _DWORD *v4; // eax - unsigned int lpuexcpt; // [esp+14h] [ebp-64h] - void *v8[8]; // [esp+58h] [ebp-20h] BYREF - - *this = this + 2; - this[1] = 0; - *((_BYTE *)this + 8) = 0; - if ( std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, a3) ) - { - std::string::operator+=(asc_5527F4); // "(\000)\000{" - ++*(_DWORD *)(a2 + 48); - } - for ( lpuexcpt = 0; ; ++lpuexcpt ) - { - // a3.offset_228 - v3 = *(_DWORD **)(a3 + 228); - if ( lpuexcpt >= (v3[1] - *v3) >> 2 ) - break; - v4 = (_DWORD *)std::vector::at(v3, lpuexcpt); - night::NSCompileJs::compile[abi:cxx11](a2, *v4); - std::string::operator+=(v8); - std::string::_M_dispose(v8); - } - if ( std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, a3) ) - { - std::string::operator+=(5580790); - ++*(_DWORD *)(a2 + 48); - } - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 41995C: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); - -//----- (0041C7CC) -------------------------------------------------------- -/** - * @param this result - * @param a2 this -*/ -char *__thiscall night::NSCompileJs::compile_once(char *this, int a2, unsigned int *a3, int a4, char a5) -{ - const char **v5; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - void *v9[8]; // [esp+58h] [ebp-20h] BYREF - - // a2.offset_28 - *(_DWORD *)(a2 + 28) = a4; - std::string::operator=(a3, (char *)&byte_551F04); // "\0" - v5 = (const char **)night::NSASTParse::top_down(*(int **)(a2 + 24)); - lpuexcpt = (struct _Unwind_Exception *)v5; - if ( a5 ) - { - night::ns_node::debug_no_space[abi:cxx11](v9, v5); - printf("ast :%s\n", (const char *)v9[0]); - std::string::_M_dispose(v9); - } - // night::ns_node *lpuexcpt - night::NSCompileJs::compile[abi:cxx11](v9, a2, lpuexcpt); - std::string::_M_assign((int)a3, (int)v9); - std::string::basic_string(this, a2); - std::string::_M_dispose(v9); - return this; -} - -//----- (0041C8EC) -------------------------------------------------------- -int __cdecl night::compile_ns(int a1, int a2, int a3, int a4, unsigned int *a5, char a6) -{ - _DWORD *v6; // eax - _DWORD *v7; // eax - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - _DWORD *v11; // eax - _DWORD *v12; // eax - int v13; // edx - int v14; // edx - int lpuexcpt; // [esp+18h] [ebp-200h] - void *v17[3]; // [esp+5Ch] [ebp-1BCh] BYREF - void **v18[3]; // [esp+68h] [ebp-1B0h] BYREF - void *v19[2]; // [esp+74h] [ebp-1A4h] BYREF - char v20; // [esp+7Ch] [ebp-19Ch] BYREF - void *v21[6]; // [esp+8Ch] [ebp-18Ch] BYREF - void *v22[6]; // [esp+A4h] [ebp-174h] BYREF - int v23[6]; // [esp+BCh] [ebp-15Ch] BYREF - int v24[6]; // [esp+D4h] [ebp-144h] BYREF - int v25[6]; // [esp+ECh] [ebp-12Ch] BYREF - void *v26[6]; // [esp+104h] [ebp-114h] BYREF - int v27[7]; // [esp+11Ch] [ebp-FCh] BYREF - int v28[5]; // [esp+138h] [ebp-E0h] BYREF - void *v29[2]; // [esp+14Ch] [ebp-CCh] BYREF offset_0 - char v30; // [esp+154h] [ebp-C4h] BYREF - void **v31; // [esp+164h] [ebp-B4h] offset_24 - int v32; // [esp+168h] [ebp-B0h] offset_28 - int v33; // [esp+16Ch] [ebp-ACh] offset_32 - int v34; // [esp+170h] [ebp-A8h] offset_36 - int v35; // [esp+174h] [ebp-A4h] offset_40 - int v36; // [esp+178h] [ebp-A0h] offset_44 - int v37; // [esp+17Ch] [ebp-9Ch] offset_48 - void *v38[15]; // [esp+180h] [ebp-98h] BYREF - void *v39[23]; // [esp+1BCh] [ebp-5Ch] BYREF - - std::string::operator=(a5, (char *)&byte_551F04); // "\0" - memset(v17, 0, sizeof(v17)); - night::NSStream::NSStream(v38, a1, a3, a4); - v27[0] = (int)v17; - v27[1] = (int)v38; - v28[0] = 0; - v28[1] = 0; - v28[2] = (int)v28; - v28[3] = (int)v28; - v28[4] = 0; - memset(&v27[2], 0, 16); - std::string::basic_string((char *)v29, a1); - night::NSASTParse::NSASTParse((int)v39, (int)v29, (int)v27, (int)v17); - std::string::_M_dispose(v29); - v29[0] = &v30; // v29.offset_0 std::string缓冲区 - v29[1] = 0; // v29.offset_4 - v30 = 0; // v29.offset_8 - v31 = v39; // v29.offset_24 = v39 - v32 = 0; // v29.offset_28 - v33 = 0; // v29.offset_32 - v34 = 0; // v29.offset_36 - v35 = 0; // v29.offset_40 - v36 = 0; // v29.offset_44 - v37 = 1; // v29.offset_48 - - v19[0] = &v20; - v19[1] = 0; - v20 = 0; - - memset(v18, 0, sizeof(v18)); - night::NSCompileJs::compile_once((char *)v21, (int)v29, (unsigned int *)v19, (int)v18, a6); - night::NSGod::hamlet(v17); - if ( v21[1] ) - { - std::string::_M_assign((int)a5, (int)v21); - lpuexcpt = 121; - } - else - { - std::operator+((int)v24, ";return ", (int)&night::nsv_); - v6 = std::string::append(v24, "module."); - std::string::basic_string(v25, v6); - v7 = std::string::append(v25, (int)&night::nsv_); - std::string::basic_string(v26, v7); - v8 = std::string::append(v26, "exports;"); - std::string::basic_string(v22, v8); - std::string::_M_dispose(v26); - std::string::_M_dispose((void **)v25); - std::string::_M_dispose((void **)v24); - std::operator+((int)v25, "function ", a2); - v9 = std::string::append(v25, "(){"); - std::string::basic_string(v26, v9); - std::string::operator=((unsigned __int8 **)a5, (int)v26); - std::string::_M_dispose(v26); - std::string::_M_dispose((void **)v25); - std::operator+((int)v23, "var ", (int)&night::nsv_); - v10 = std::string::append(v23, "module={"); - std::string::basic_string(v24, v10); - v11 = std::string::append(v24, (int)&night::nsv_); - std::string::basic_string(v25, v11); - v12 = std::string::append(v25, "exports:{}};"); - std::string::basic_string(v26, v12); - std::string::operator+=(v26); - std::string::_M_dispose(v26); - std::string::_M_dispose((void **)v25); - std::string::_M_dispose((void **)v24); - std::string::_M_dispose((void **)v23); - std::operator+((char *)v26, (int)v19, (int)v22); - std::string::operator+=(v26); - std::string::_M_dispose(v26); - std::string::operator+=("}"); - std::string::_M_dispose(v22); - lpuexcpt = 0; - } - std::string::_M_dispose(v21); - std::vector::~vector(v18, v13); - std::string::_M_dispose(v19); - night::NSCompileJs::~NSCompileJs((int)v29, v14); - night::NSASTParse::~NSASTParse(v39); - night::NSToken::~NSToken((int)v27); - night::NSStream::~NSStream(v38); - std::_Vector_base::~_Vector_base(v17); - return lpuexcpt; -} -// 41CE51: variable 'v13' is possibly undefined -// 41D02D: variable 'v14' is possibly undefined -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); - -//----- (0041D077) -------------------------------------------------------- -int __cdecl night::compile_ns_with_sourcemap( - night::NSASTParse *a1, - int a2, - int a3, - int a4, - int a5, - unsigned int *a6, - int a7) -{ - _DWORD *v7; // eax - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - _DWORD *v11; // eax - _DWORD *v12; // eax - _DWORD *v13; // eax - int v14; // eax - int v15; // edx - int v16; // ecx - int v17; // edx - int v18; // ecx - int v19; // eax - int v20; // edx - int v21; // ecx - int v22; // edx - int v23; // ecx - int v24; // edx - int v25; // edx - int v26; // edx - const night::ns_sourcemap *v28; // [esp+4h] [ebp-234h] - int v29; // [esp+28h] [ebp-210h] - int v30; // [esp+2Ch] [ebp-20Ch] - void *v31; // [esp+30h] [ebp-208h] - int v32; // [esp+34h] [ebp-204h] - int lpuexcpt; // [esp+38h] [ebp-200h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-200h] - struct _Unwind_Exception *lpuexcptb; // [esp+38h] [ebp-200h] - void *v36[3]; // [esp+70h] [ebp-1C8h] BYREF - void **v37[3]; // [esp+7Ch] [ebp-1BCh] BYREF - void *Block; // [esp+88h] [ebp-1B0h] BYREF - int v39; // [esp+8Ch] [ebp-1ACh] - int v40; // [esp+90h] [ebp-1A8h] - void *v41[2]; // [esp+94h] [ebp-1A4h] BYREF - char v42; // [esp+9Ch] [ebp-19Ch] BYREF - void *v43[6]; // [esp+ACh] [ebp-18Ch] BYREF - void *v44[6]; // [esp+C4h] [ebp-174h] BYREF - int v45; // [esp+DCh] [ebp-15Ch] BYREF - int v46; // [esp+E0h] [ebp-158h] BYREF - int v47; // [esp+E4h] [ebp-154h] - int *v48; // [esp+E8h] [ebp-150h] - int *v49; // [esp+ECh] [ebp-14Ch] - int v50; // [esp+F0h] [ebp-148h] - int v51; // [esp+F4h] [ebp-144h] BYREF - int v52; // [esp+F8h] [ebp-140h] BYREF - int v53; // [esp+FCh] [ebp-13Ch] - int *v54; // [esp+100h] [ebp-138h] - int *v55; // [esp+104h] [ebp-134h] - int v56; // [esp+108h] [ebp-130h] - int v57; // [esp+10Ch] [ebp-12Ch] BYREF - int v58; // [esp+110h] [ebp-128h] BYREF - int v59; // [esp+114h] [ebp-124h] - int *v60; // [esp+118h] [ebp-120h] - int *v61; // [esp+11Ch] [ebp-11Ch] - int v62; // [esp+120h] [ebp-118h] - int v63; // [esp+124h] [ebp-114h] BYREF - int v64; // [esp+128h] [ebp-110h] BYREF - int v65; // [esp+12Ch] [ebp-10Ch] - int *v66; // [esp+130h] [ebp-108h] - int *v67; // [esp+134h] [ebp-104h] - int v68; // [esp+138h] [ebp-100h] - int v69[7]; // [esp+13Ch] [ebp-FCh] BYREF - int v70[5]; // [esp+158h] [ebp-E0h] BYREF - void *v71[2]; // [esp+16Ch] [ebp-CCh] BYREF - char v72; // [esp+174h] [ebp-C4h] BYREF - void **v73; // [esp+184h] [ebp-B4h] - int v74; // [esp+188h] [ebp-B0h] - int v75; // [esp+18Ch] [ebp-ACh] - struct _Unwind_Exception *v76; // [esp+190h] [ebp-A8h] - struct _Unwind_Exception *v77; // [esp+194h] [ebp-A4h] - int v78; // [esp+198h] [ebp-A0h] - int v79; // [esp+19Ch] [ebp-9Ch] - void *v80[15]; // [esp+1A0h] [ebp-98h] BYREF - void *v81[23]; // [esp+1DCh] [ebp-5Ch] BYREF - - std::string::operator=(a6, (char *)&byte_551F04); - memset(v36, 0, sizeof(v36)); - night::NSStream::NSStream(v80, (int)a1, a4, a5); - v70[2] = (int)v70; - v70[3] = (int)v70; - v69[1] = (int)v80; - v69[0] = (int)v36; - v70[0] = 0; - v70[1] = 0; - v70[4] = 0; - memset(&v69[2], 0, 16); - std::string::basic_string((char *)v71, (int)a1); - night::NSASTParse::NSASTParse((int)v81, (int)v71, (int)v69, (int)v36); - // 销毁清空v71 - std::string::_M_dispose(v71); - v71[0] = &v72; // v71.offset_0 - v71[1] = 0; // v71.offset_4 - - v72 = 0; // v71.offset_8 - v73 = v81; // v71.offset_12 - v74 = 0; // v71.offset_16 - v75 = 0; // v71.offset_20 - v76 = 0; // v71.offset_24 - v77 = 0; // v71.offset_28 - v78 = 0; // v71.offset_32 - v79 = 1; - - v41[0] = &v42; - v41[1] = 0; - - v42 = 0; - memset(v37, 0, sizeof(v37)); - night::NSCompileJs::compile_once((char *)v43, (int)v71, (unsigned int *)v41, (int)v37, 0); - night::NSGod::hamlet(v36); - if ( v43[1] ) - { - std::string::_M_assign((int)a6, (int)v43); - lpuexcpt = 121; - } - else - { - std::operator+((int)&v51, ";return ", (int)&night::nsv_); - v7 = std::string::append(&v51, "module."); - std::string::basic_string(&v57, v7); - v8 = std::string::append(&v57, (int)&night::nsv_); - std::string::basic_string(&v63, v8); - v9 = std::string::append(&v63, "exports;"); - std::string::basic_string(v44, v9); - std::string::_M_dispose((void **)&v63); - std::string::_M_dispose((void **)&v57); - std::string::_M_dispose((void **)&v51); - - std::operator+((int)&v57, "function ", a3); - v10 = std::string::append(&v57, "(){"); - std::string::basic_string(&v63, v10); - std::string::operator=((unsigned __int8 **)a6, (int)&v63); - - std::string::_M_dispose((void **)&v63); - std::string::_M_dispose((void **)&v57); - - std::operator+((int)&v45, "var ", (int)&night::nsv_); - v11 = std::string::append(&v45, "module={"); - std::string::basic_string(&v51, v11); - v12 = std::string::append(&v51, (int)&night::nsv_); - std::string::basic_string(&v57, v12); - v13 = std::string::append(&v57, "exports:{}};"); - std::string::basic_string(&v63, v13); - std::string::operator+=(&v63); - std::string::_M_dispose((void **)&v63); - std::string::_M_dispose((void **)&v57); - std::string::_M_dispose((void **)&v51); - std::string::_M_dispose((void **)&v45); - - v32 = a6[1]; - std::operator+((char *)&v63, (int)v41, (int)v44); - std::string::operator+=(&v63); - std::string::_M_dispose((void **)&v63); - - std::string::operator+=("}"); - std::operator+((int)&v63, "\n//# sourceMappingURL=", a2); - std::string::operator+=(&v63); - std::string::_M_dispose((void **)&v63); - Block = 0; - v39 = 0; - v40 = 0; - // v71.offset28 - v71.offset_24 - lpuexcpta = (struct _Unwind_Exception *)(v77 - v76); - if ( v77 == v76 ) - { - v31 = 0; - } - else - { - if ( (unsigned int)(v77 - v76) > 0x7FFFFFC0 ) - std::__throw_bad_alloc(); - v31 = operator new((size_t)lpuexcpta); - } - Block = v31; - v39 = (int)v31; - v40 = (int)lpuexcpta + (_DWORD)v31; - v29 = (int)v77; - lpuexcptb = v76; - v30 = (int)v31; - while ( (struct _Unwind_Exception *)v29 != lpuexcptb ) - { - night::ns_sourcemap::ns_sourcemap(v30, lpuexcptb, v28); - v30 += 64; - lpuexcptb = (struct _Unwind_Exception *)((char *)lpuexcptb + 64); - } - v46 = 0; - v39 = v30; - v48 = &v46; - v49 = &v46; - v47 = 0; - v50 = 0; - v52 = 0; - v53 = 0; - v54 = &v52; - v55 = &v52; - v56 = 0; - night::NSToken::get_tokens_for_sourcemap(v69, (void **)&v45, &v51); - v64 = 0; - v65 = 0; - v66 = &v64; - v67 = &v64; - v68 = 0; - if ( v53 ) - { - v14 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( - v53, - (int)&v64); - v15 = v14; - do - { - v16 = v15; - v15 = *(_DWORD *)(v15 + 8); - } - while ( v15 ); - v66 = (int *)v16; - v17 = v14; - do - { - v18 = v17; - v17 = *(_DWORD *)(v17 + 12); - } - while ( v17 ); - v67 = (int *)v18; - v65 = v14; - v68 = v56; - } - v58 = 0; - v59 = 0; - v60 = &v58; - v61 = &v58; - v62 = 0; - if ( v47 ) - { - v19 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( - v47, - (int)&v58); - v20 = v19; - do - { - v21 = v20; - v20 = *(_DWORD *)(v20 + 8); - } - while ( v20 ); - v60 = (int *)v21; - v22 = v19; - do - { - v23 = v22; - v22 = *(_DWORD *)(v22 + 12); - } - while ( v22 ); - v61 = (int *)v23; - v59 = v19; - v62 = v50; - } - night::sourcemap::gen_sourcemap_content((int *)a1, &v57, &v63, (int *)&Block, v32, a7); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v57); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v63); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v51); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v45); - std::vector::~vector((void ***)&Block, v24); - std::string::_M_dispose(v44); - lpuexcpt = 0; - } - std::string::_M_dispose(v43); - std::vector::~vector(v37, v25); - std::string::_M_dispose(v41); - night::NSCompileJs::~NSCompileJs((int)v71, v26); - night::NSASTParse::~NSASTParse(v81); - night::NSToken::~NSToken((int)v69); - night::NSStream::~NSStream(v80); - std::_Vector_base::~_Vector_base(v36); - return lpuexcpt; -} -// 41D6D5: variable 'v28' is possibly undefined -// 41D8F8: variable 'v24' is possibly undefined -// 41D923: variable 'v25' is possibly undefined -// 41DB97: variable 'v26' is possibly undefined -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); - -//----- (0041DBE4) -------------------------------------------------------- -void __tcf_0(void) -{ - std::string::_M_dispose((void **)&night::nsv_); -} - -//----- (0041DBEE) -------------------------------------------------------- -void __tcf_1_1(void) -{ - std::string::_M_dispose((void **)&night::nst_); -} - -//----- (0041DBF8) -------------------------------------------------------- -void __tcf_2_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); -} - -//----- (0041DC02) -------------------------------------------------------- -void __tcf_3_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); -} - -//----- (0041DC0C) -------------------------------------------------------- -void __tcf_4_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_VAR); -} - -//----- (0041DC16) -------------------------------------------------------- -void __tcf_5_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_STR); -} - -//----- (0041DC20) -------------------------------------------------------- -void __tcf_6_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_NUM); -} - -//----- (0041DC2A) -------------------------------------------------------- -void __tcf_7_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); -} - -//----- (0041DC34) -------------------------------------------------------- -void __tcf_8_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_KW); -} - -//----- (0041DC3E) -------------------------------------------------------- -void __tcf_9_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); -} - -//----- (0041DC48) -------------------------------------------------------- -void __tcf_10_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OP); -} - -//----- (0041DC52) -------------------------------------------------------- -void __tcf_11_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); -} - -//----- (0041DC5C) -------------------------------------------------------- -void __tcf_12_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); -} - -//----- (0041DC66) -------------------------------------------------------- -void __tcf_13_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); -} - -//----- (0041DC70) -------------------------------------------------------- -void __tcf_14_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); -} - -//----- (0041DC7A) -------------------------------------------------------- -void __tcf_15_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_K_V); -} - -//----- (0041DC84) -------------------------------------------------------- -void __tcf_16_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); -} - -//----- (0041DC8E) -------------------------------------------------------- -void __tcf_17_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); -} - -//----- (0041DC98) -------------------------------------------------------- -void __tcf_18_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); -} - -//----- (0041DCA2) -------------------------------------------------------- -void __tcf_19_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); -} - -//----- (0041DCAC) -------------------------------------------------------- -void __tcf_20_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); -} - -//----- (0041DCB6) -------------------------------------------------------- -void __tcf_21_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); -} - -//----- (0041DCC0) -------------------------------------------------------- -void __tcf_22_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_IF); -} - -//----- (0041DCCA) -------------------------------------------------------- -void __tcf_23_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_FOR); -} - -//----- (0041DCD4) -------------------------------------------------------- -void __tcf_24_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); -} - -//----- (0041DCDE) -------------------------------------------------------- -void __tcf_25_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); -} - -//----- (0041DCE8) -------------------------------------------------------- -void __tcf_26_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); -} - -//----- (0041DCF2) -------------------------------------------------------- -void __tcf_27_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG); -} - -//----- (0041DCFC) -------------------------------------------------------- -void __tcf_28_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); -} - -//----- (0041DD06) -------------------------------------------------------- -void __tcf_29_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); -} - -//----- (0041DD10) -------------------------------------------------------- -void __tcf_30_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); -} - -//----- (0041DD1A) -------------------------------------------------------- -void __tcf_31_1(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_CALL); -} - -//----- (0041DD24) -------------------------------------------------------- -void __tcf_32_1(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); -} - -//----- (0041DD2E) -------------------------------------------------------- -void __tcf_33_1(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); -} - -//----- (0041DD38) -------------------------------------------------------- -void __tcf_34_1(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); -} - -//----- (0041DD42) -------------------------------------------------------- -void __tcf_35_1(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); -} - -//----- (0041DD4C) -------------------------------------------------------- -void __tcf_36_1(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); -} - -//----- (0041DD56) -------------------------------------------------------- -void __tcf_37_1(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); -} - -//----- (0041DD60) -------------------------------------------------------- -void __tcf_38_1(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); -} - -//----- (0041DD6A) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) -{ - return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); -} - -//----- (0041DD8A) -------------------------------------------------------- -int __cdecl night::sourcemap::int2vlq[abi:cxx11](int a1, int a2) -{ - int v2; // edx - int v3; // eax - int v4; // edx - int lpuexcpt; // [esp+18h] [ebp-40h] - - v2 = 2 * a2; - *(_DWORD *)(a1 + 4) = 0; - if ( a2 < 0 ) - v2 = (-2 * a2) | 1; - *(_BYTE *)(a1 + 8) = 0; - lpuexcpt = v2; - *(_DWORD *)a1 = a1 + 8; - do - { - v3 = lpuexcpt; - lpuexcpt >>= 5; - v4 = v3 % 32; - if ( lpuexcpt > 0 ) - v4 |= 0x20u; - std::string::push_back((_DWORD *)a1, night::sourcemap::g_sVLQ[v4]); - } - while ( lpuexcpt > 0 ); - return a1; -} -// 53E0DC: using guessed type char *night::sourcemap::g_sVLQ; - -//----- (0041DE4C) -------------------------------------------------------- -int __cdecl night::sourcemap::gen_sourcemap_content(int *a1, _DWORD *a2, _DWORD *a3, int *a4, int a5, int a6) -{ - char *v6; // eax - _DWORD *v7; // eax - char *v8; // eax - bool v9; // zf - void **v10; // eax - void **v11; // edx - void **v12; // edx - char v13; // al - void *v14; // eax - void **v16; // [esp+18h] [ebp-C0h] - int insert_hint_unique_pos; // [esp+18h] [ebp-C0h] - int v18; // [esp+1Ch] [ebp-BCh] - int v19; // [esp+20h] [ebp-B8h] - int v20; // [esp+24h] [ebp-B4h] - int v21; // [esp+28h] [ebp-B0h] - int v22; // [esp+2Ch] [ebp-ACh] - int v23; // [esp+30h] [ebp-A8h] - int v24; // [esp+30h] [ebp-A8h] - int v25; // [esp+34h] [ebp-A4h] - int v26; // [esp+38h] [ebp-A0h] - void **v27; // [esp+38h] [ebp-A0h] - void **v28; // [esp+3Ch] [ebp-9Ch] - int v29; // [esp+3Ch] [ebp-9Ch] - void **v30; // [esp+40h] [ebp-98h] - void **v31; // [esp+40h] [ebp-98h] - int v32; // [esp+40h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+44h] [ebp-94h] - unsigned int lpuexcpta; // [esp+44h] [ebp-94h] - void **Block; // [esp+48h] [ebp-90h] - unsigned int v36; // [esp+84h] [ebp-54h] BYREF - char *v37; // [esp+88h] [ebp-50h] BYREF - int v38; // [esp+8Ch] [ebp-4Ch] - char v39; // [esp+90h] [ebp-48h] BYREF - int v40[2]; // [esp+A0h] [ebp-38h] BYREF - char v41; // [esp+A8h] [ebp-30h] BYREF - void *v42[8]; // [esp+B8h] [ebp-20h] BYREF - - v39 = 0; - v37 = &v39; - v38 = 0; - std::string::append(&v37, "{\"version\":3,\"sources\":[\""); - WXML::Rewrite::ToStringCode((int)v42, a1); - std::string::operator+=(&v37, (int)v42); - std::string::_M_dispose(v42); - std::string::append(&v37, "\"],"); - std::string::append(&v37, "\"names\":["); - for ( lpuexcpt = 0; (unsigned int)lpuexcpt < a3[5]; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - if ( lpuexcpt ) - { - v36 = (unsigned int)lpuexcpt + 1; - v8 = std::map::operator[](a3, &v36); - std::operator+((int)v40, ",\"", (int)v8); - } - else - { - v36 = 1; - v6 = std::map::operator[](a3, &v36); - std::operator+((int)v40, "\"", (int)v6); - } - v7 = std::string::append(v40, "\""); - std::string::basic_string(v42, v7); - std::string::operator+=(&v37, (int)v42); - std::string::_M_dispose(v42); - std::string::_M_dispose((void **)v40); - } - std::string::append(&v37, "],"); - std::string::append(&v37, "\"mappings\":\""); - lpuexcpta = 0; - v21 = 0; - v22 = 0; - v23 = 0; - v25 = 0; - while ( lpuexcpta < (a4[1] - *a4) >> 6 ) - { - v20 = *(_DWORD *)(std::vector::at(a4, lpuexcpta) + 60) + a5 - 1; - v19 = *(_DWORD *)(std::vector::at(a4, lpuexcpta) + 24) - 1; - v18 = *(_DWORD *)(std::vector::at(a4, lpuexcpta) + 28) - 1; - v26 = std::vector::at(a4, lpuexcpta); - v28 = (void **)(a2 + 1); - v30 = (void **)a2[2]; - Block = (void **)(a2 + 1); - while ( v30 ) - { - v9 = (unsigned __int8)std::operator<((int)(v30 + 4), v26) == 0; - v10 = Block; - if ( v9 ) - v10 = v30; - v11 = (void **)v30[3]; - Block = v10; - if ( v9 ) - v11 = (void **)v30[2]; - v30 = v11; - } - if ( v28 == Block || (unsigned __int8)std::operator<(v26, (int)(Block + 4)) ) - { - v16 = Block; - Block = (void **)operator new(0x2Cu); - v31 = Block + 4; - std::string::basic_string((char *)Block + 16, v26); - Block[10] = 0; - insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - a2, - v16, - (int)(Block + 4)); - v27 = v12; - if ( v12 ) - { - v13 = insert_hint_unique_pos != 0 || v28 == v12; - if ( !v13 ) - v13 = std::operator<((int)v31, (int)(v12 + 4)); - std::_Rb_tree_insert_and_rebalance(v13, Block, v27, v28); - ++a2[5]; - } - else - { - std::string::_M_dispose(v31); - operator delete(Block); - Block = (void **)insert_hint_unique_pos; - } - } - v14 = Block[10]; - v40[1] = 0; - v41 = 0; - v32 = (int)v14 - 1; - v29 = v19 - v23; - v24 = (int)v14 - v21 - 1; - v40[0] = (int)&v41; - night::sourcemap::int2vlq[abi:cxx11]((int)v42, v20 - v25); - std::string::operator+=(v40, (int)v42); - std::string::_M_dispose(v42); - night::sourcemap::int2vlq[abi:cxx11]((int)v42, 0); - std::string::operator+=(v40, (int)v42); - std::string::_M_dispose(v42); - night::sourcemap::int2vlq[abi:cxx11]((int)v42, v29); - std::string::operator+=(v40, (int)v42); - std::string::_M_dispose(v42); - night::sourcemap::int2vlq[abi:cxx11]((int)v42, v18 - v22); - std::string::operator+=(v40, (int)v42); - std::string::_M_dispose(v42); - night::sourcemap::int2vlq[abi:cxx11]((int)v42, v24); - std::string::operator+=(v40, (int)v42); - std::string::_M_dispose(v42); - std::string::basic_string((char *)v42, (int)v40); - std::string::append(v42, ","); - std::string::operator+=(&v37, (int)v42); - std::string::_M_dispose(v42); - std::string::_M_dispose((void **)v40); - ++lpuexcpta; - v21 = v32; - v22 = v18; - v23 = v19; - v25 = v20; - } - v37[v38 - 1] = 34; - std::string::append(&v37, "}"); - std::string::_M_assign(a6, (int)&v37); - std::string::_M_dispose((void **)&v37); - return 0; -} -// 41E242: variable 'v12' is possibly undefined - -//----- (0041E5F4) -------------------------------------------------------- -void __tcf_1_2(void) -{ - std::string::_M_dispose((void **)&night::nsv_); -} - -//----- (0041E5FE) -------------------------------------------------------- -void __tcf_2_2(void) -{ - std::string::_M_dispose((void **)&night::nst_); -} - -//----- (0041E608) -------------------------------------------------------- -void __tcf_3_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); -} - -//----- (0041E612) -------------------------------------------------------- -void __tcf_4_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); -} - -//----- (0041E61C) -------------------------------------------------------- -void __tcf_5_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_VAR); -} - -//----- (0041E626) -------------------------------------------------------- -void __tcf_6_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_STR); -} - -//----- (0041E630) -------------------------------------------------------- -void __tcf_7_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_NUM); -} - -//----- (0041E63A) -------------------------------------------------------- -void __tcf_8_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); -} - -//----- (0041E644) -------------------------------------------------------- -void __tcf_9_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_KW); -} - -//----- (0041E64E) -------------------------------------------------------- -void __tcf_10_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); -} - -//----- (0041E658) -------------------------------------------------------- -void __tcf_11_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OP); -} - -//----- (0041E662) -------------------------------------------------------- -void __tcf_12_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); -} - -//----- (0041E66C) -------------------------------------------------------- -void __tcf_13_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); -} - -//----- (0041E676) -------------------------------------------------------- -void __tcf_14_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); -} - -//----- (0041E680) -------------------------------------------------------- -void __tcf_15_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); -} - -//----- (0041E68A) -------------------------------------------------------- -void __tcf_16_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_K_V); -} - -//----- (0041E694) -------------------------------------------------------- -void __tcf_17_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); -} - -//----- (0041E69E) -------------------------------------------------------- -void __tcf_18_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); -} - -//----- (0041E6A8) -------------------------------------------------------- -void __tcf_19_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); -} - -//----- (0041E6B2) -------------------------------------------------------- -void __tcf_20_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); -} - -//----- (0041E6BC) -------------------------------------------------------- -void __tcf_21_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); -} - -//----- (0041E6C6) -------------------------------------------------------- -void __tcf_22_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); -} - -//----- (0041E6D0) -------------------------------------------------------- -void __tcf_23_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_IF); -} - -//----- (0041E6DA) -------------------------------------------------------- -void __tcf_24_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_FOR); -} - -//----- (0041E6E4) -------------------------------------------------------- -void __tcf_25_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); -} - -//----- (0041E6EE) -------------------------------------------------------- -void __tcf_26_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); -} - -//----- (0041E6F8) -------------------------------------------------------- -void __tcf_27_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); -} - -//----- (0041E702) -------------------------------------------------------- -void __tcf_28_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG); -} - -//----- (0041E70C) -------------------------------------------------------- -void __tcf_29_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); -} - -//----- (0041E716) -------------------------------------------------------- -void __tcf_30_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); -} - -//----- (0041E720) -------------------------------------------------------- -void __tcf_31_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); -} - -//----- (0041E72A) -------------------------------------------------------- -void __tcf_32_2(void) -{ - std::string::_M_dispose((void **)&night::NS_TYPE_CALL); -} - -//----- (0041E734) -------------------------------------------------------- -void __tcf_33_2(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); -} - -//----- (0041E73E) -------------------------------------------------------- -void __tcf_34_2(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); -} - -//----- (0041E748) -------------------------------------------------------- -void __tcf_35_2(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); -} - -//----- (0041E752) -------------------------------------------------------- -void __tcf_36_2(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); -} - -//----- (0041E75C) -------------------------------------------------------- -void __tcf_37_2(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); -} - -//----- (0041E766) -------------------------------------------------------- -void __tcf_38_2(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); -} - -//----- (0041E770) -------------------------------------------------------- -void __tcf_39_1(void) -{ - std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); -} - -//----- (0041E77A) -------------------------------------------------------- -int __cdecl night::str::path_combine(_DWORD *a1, _DWORD *a2, int a3) -{ - void *v3; // ecx - _BYTE *v4; // eax - size_t v5; // eax - _BYTE *v6; // edx - int v7; // edx - int v9; // [esp+14h] [ebp-94h] - int lpuexcpt; // [esp+18h] [ebp-90h] - char *v11; // [esp+58h] [ebp-50h] BYREF - unsigned int v12; // [esp+5Ch] [ebp-4Ch] - char v13; // [esp+60h] [ebp-48h] BYREF - - void *v14[6]; // [esp+70h] [ebp-38h] BYREF - - void *Src; // [esp+88h] [ebp-20h] BYREF - size_t Size; // [esp+8Ch] [ebp-1Ch] - int v17[5]; // [esp+90h] [ebp-18h] BYREF - - v12 = 0; - v11 = &v13; // std::string 00(v11) 00 00 00, 00(v12) 00 00 00, 00(v13) 00 00 00 - v13 = 0; - lpuexcpt = MMBizWxaAppComm::PathCombine(a1, a2, (unsigned int *)&v11); - if ( !lpuexcpt ) - { - lpuexcpt = 1; - if ( v12 > 3 ) - { - std::string::substr(v14, &v11, v12 - 4, 0xFFFFFFFF); - lpuexcpt = std::string::compare((int)v14, ".wxs"); - std::string::_M_dispose(v14); - if ( lpuexcpt ) - { - lpuexcpt = 2; - } - else - { - WXML::Rewrite::ToStringCode((int)&Src, (int *)&v11); - v3 = Src; - v4 = *(_BYTE **)a3; - if ( Src == v17 )// 使用缓冲区 - { - if ( Size ) - std::string::_S_copy(v4, (unsigned __int8 *)Src, Size); - v5 = Size; - v6 = *(_BYTE **)a3; - *(_DWORD *)(a3 + 4) = Size; - v6[v5] = 0; - } - else - { - if ( v4 == (_BYTE *)(a3 + 8) ) // v4使用缓冲区 - v4 = 0; - else - v9 = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 4) = Size; - v7 = v17[0]; - *(_DWORD *)a3 = v3; - *(_DWORD *)(a3 + 8) = v7; - if ( v4 ) - { - Src = v4; - v17[0] = v9; - } - else - { - Src = v17; - } - } - Size = 0; - *(_BYTE *)Src = 0; - std::string::_M_dispose(&Src); - } - } - } - std::string::_M_dispose((void **)&v11); - return lpuexcpt; -} -// 41E8CE: variable 'v9' is possibly undefined - -//----- (0041E949) -------------------------------------------------------- -int __cdecl night::str::get_token(int a1, _DWORD *a2, unsigned int a3) -{ - char v3; // al - - *(_DWORD *)(a1 + 4) = 0; // std::string - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - while ( a3 < a2[1] ) - { - v3 = *(_BYTE *)std::string::at(a2, a3); - if ( (unsigned __int8)((v3 & 0xDF) - 65) > 0x19u && v3 != 95 && (unsigned __int8)(v3 - 48) > 9u ) - break; - ++a3; - std::string::push_back((_DWORD *)a1, v3); - } - return a1; -} - -//----- (0041EA13) -------------------------------------------------------- -int __cdecl night::readfile(char *FileName, unsigned int *a2) -{ - void *v2; // esp - FILE *v3; // eax - FILE *v4; // ebx - unsigned int v5; // eax - char Buffer[4]; // [esp+10h] [ebp-1018h] BYREF - char v8[4092]; // [esp+14h] [ebp-1014h] BYREF - - v2 = alloca(4124); - std::string::_M_replace(a2, 0, a2[1], (char *)&unk_5534F3, 0); - v3 = fopen(FileName, "r"); - if ( !v3 ) - return -1; - v4 = v3; - memset(v8, 0, sizeof(v8)); - *(_DWORD *)Buffer = 0; - while ( fgets(Buffer, 4096, v4) ) - { - v5 = strlen(Buffer); - if ( 0x3FFFFFFF - a2[1] < v5 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(a2, Buffer, v5); - } - fclose(v4); - return 0; -} - -//----- (0041EAE9) -------------------------------------------------------- -int __cdecl night::writefile(char *FileName, int a2) -{ - FILE *v2; // ebx - int result; // eax - - v2 = fopen(FileName, "w+"); - result = -1; - if ( v2 ) - { - if ( fwrite(*(const void **)a2, *(_DWORD *)(a2 + 4), 1u, v2) == 1 ) - { - fclose(v2); - return 0; - } - else - { - fclose(v2); - return -1; - } - } - return result; -} - -//----- (0041EB4C) -------------------------------------------------------- -bool __cdecl WXML::DOMLib::AttrsCompartor(int a1, int a2) -{ - // a1 + 80 -> a1->offset_24->offset_56 - return *(_DWORD *)(a1 + 80) < *(_DWORD *)(a2 + 80); -} - -//----- (0041EB60) -------------------------------------------------------- -void __tcf_1_3(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (0041EB6A) -------------------------------------------------------- -int __usercall __gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>@( - int (__cdecl *a1)(int, int)@, - int a2@, - int a3@) -{ - return a1(a2, a3); -} - -//----- (0041EB7C) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::less,std::allocator>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0041EBB0) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0041EBF0) -------------------------------------------------------- -std::ostream::sentry *__usercall std::operator<<>@( - std::ostream::sentry *a1@, - char a2@
) -{ - int v3[3]; // [esp+1Ch] [ebp-Ch] BYREF - - LOBYTE(v3[0]) = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 41EBF0: using guessed type int var_C[3]; - -//----- (0041EC12) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, this[1], Str, v2); -} - -//----- (0041EC50) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 *v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 *v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = *this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = *this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == (unsigned __int8 *)(this + 2) ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 41ECB7: variable 'v9' is possibly undefined - -//----- (0041ECD8) -------------------------------------------------------- -int __userpurge WXML::DOMLib::WXMLDom::GenRawId@( - _DWORD *a1@, - WXML::DOMLib::WXMLDom *this, - unsigned __int64 *a3) -{ - unsigned int i; // esi - int v5; // edx - int v6; // eax - int result; // eax - unsigned __int64 *v8; // [esp+4h] [ebp-24h] - - for ( i = 0; (a1[19] - a1[18]) >> 3 > i; ++i ) - WXML::DOMLib::WXMLDom::GenRawId(this, v8); - v5 = *((_DWORD *)this + 1); - v6 = *(_DWORD *)this; - a1[67] = v5; - a1[66] = v6; - *(_DWORD *)this = v6; - result = 0; - *((_DWORD *)this + 1) = v5 + 1; - return result; -} -// 41ECFE: variable 'v8' is possibly undefined - -//----- (0041ED2A) -------------------------------------------------------- -void __fastcall WXML::DOMLib::Parser::Match(int a1) -{ - ++*(_DWORD *)(a1 + 100); -} - -//----- (0041ED2E) -------------------------------------------------------- -bool __stdcall WXML::DOMLib::Parser::IsValidTag(const char **a1) -{ - return strncmp(*a1, "wx-", 3u) != 0; -} - -//----- (0041ED5A) -------------------------------------------------------- -_DWORD *__fastcall WXML::DOMLib::Parser::Peek(_DWORD *a1) -{ - _DWORD *result; // eax - int v2; // esi - unsigned int v3; // ebx - - result = a1 + 26; // 26 * 4 = 104 - v2 = a1[22]; // offset_88 - v3 = a1[25]; // offset_100 - if ( v3 < -1227133513 * ((a1[23]/*offset_92*/ - v2) >> 4) ) - return (_DWORD *)(v2 + 112 * v3); - return result; -} - -//----- (0041ED84) -------------------------------------------------------- -int __cdecl WXML::DOMLib::WXMLDom::Error(int a1, int *a2, int a3, int *a4, int *a5) -{ - std::ostream::sentry *v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // eax - std::ostream::sentry *v8; // eax - std::ostream::sentry *v9; // eax - std::ostream::sentry *v10; // eax - std::ostream::sentry *v11; // eax - void *v13[6]; // [esp+58h] [ebp-F0h] BYREF - char v14[8]; // [esp+70h] [ebp-D8h] BYREF - char v15[4]; // [esp+78h] [ebp-D0h] BYREF - char v16[204]; // [esp+7Ch] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v14); - v5 = std::operator<<((std::ostream::sentry *)v15, a2); - std::operator<<>(v5, ":"); - // WXML::DOMLib::Token - v6 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(a3 + 8)); - std::operator<<>(v6, ":"); - // WXML::DOMLib::Token - v7 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(a3 + 12)); - std::operator<<>(v7, ":"); - if ( a4[1] ) - { - v8 = std::operator<<>((std::ostream::sentry *)v15, " Bad attr `"); - v9 = std::operator<<(v8, a4); - std::operator<<>(v9, "`"); - } - else - { - std::operator<<>((std::ostream::sentry *)v15, " Bad value"); - } - v10 = std::operator<<>((std::ostream::sentry *)v15, " with message: "); - v11 = std::operator<<(v10, a5); - std::operator<<>(v11, "."); - std::stringbuf::str((int)v13, (int)v16); - *(_DWORD *)a1 = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - *(_BYTE *)(a1 + 8) = 0; - std::string::_M_assign(a1, (int)v13); - std::string::_M_dispose(v13); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v14); - return a1; -} -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 41ED84: using guessed type char var_D0[4]; -// 41ED84: using guessed type char var_CC[204]; - -//----- (0041EFB6) -------------------------------------------------------- -int __cdecl WXML::DOMLib::joinString(int a1, _DWORD *a2, char a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-110h] - char v5[8]; // [esp+50h] [ebp-D8h] BYREF - char v6[4]; // [esp+58h] [ebp-D0h] BYREF - char v7[204]; // [esp+5Ch] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v5); - for ( lpuexcpt = 0; - (unsigned int)lpuexcpt < -1431655765 * ((a2[1] - *a2) >> 3); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - // -1431655765 * ((a2[1] - *a2) >> 3 =====> a2.size() - std::operator<<((std::ostream::sentry *)v6, (int *)(24 * (_DWORD)lpuexcpt + *a2)); - if ( (struct _Unwind_Exception *)(-1431655765 * ((a2[1] - *a2) >> 3) - 1) != lpuexcpt ) - std::operator<<>((std::ostream::sentry *)v6, a3); - } - std::stringbuf::str(a1, (int)v7); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v5); - return a1; -} -// 41EFB6: using guessed type char var_D0[4]; -// 41EFB6: using guessed type char var_CC[204]; - -//----- (0041F11E) -------------------------------------------------------- -_DWORD *__thiscall WXML::DOMLib::Parser::GetParsed(_DWORD *ecx0, WXML::DOMLib::Parser *this) -{ - std::__shared_ptr::__shared_ptr(ecx0, this); - return ecx0; -} - -//----- (0041F13A) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node( - void **a1@) -{ - void **v1; // esi - - v1 = a1 + 4; - WXML::DOMLib::Token::~Token((int)(a1 + 10)); - std::string::_M_dispose(v1); - operator delete(a1); -} - -//----- (0041F166) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)a1); - a1 = v2; - } -} - -//----- (0041F18C) -------------------------------------------------------- -void __fastcall WXML::DOMLib::WXMLDom::~WXMLDom(int a1) -{ - int v2; // edi - int i; // esi - volatile signed __int32 **v4; // ecx - - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 280)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 252)); - std::string::_M_dispose((void **)(a1 + 220)); - std::string::_M_dispose((void **)(a1 + 196)); - WXML::DOMLib::Token::~Token(a1 + 84); - v2 = *(_DWORD *)(a1 + 76); - for ( i = *(_DWORD *)(a1 + 72); v2 != i; i += 8 ) - { - v4 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - if ( *(_DWORD *)(a1 + 72) ) - operator delete(*(void **)(a1 + 72)); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 56)); - std::string::_M_dispose((void **)(a1 + 24)); - std::string::_M_dispose((void **)a1); -} - -//----- (0041F210) -------------------------------------------------------- -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, int a2) -{ - if ( *this != (volatile signed __int32 *)a2 ) - { - if ( a2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(a2); - if ( *this ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); - *this = (volatile signed __int32 *)a2; - } -} - -//----- (0041F23C) -------------------------------------------------------- -void __thiscall WXML::DOMLib::Token::operator=(int this, int a2) -{ - volatile signed __int32 **v3; // ecx - - v3 = (volatile signed __int32 **)(this + 4); - *(v3 - 1) = *(volatile signed __int32 **)a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, *(_DWORD *)(a2 + 4)); - *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); - *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); - *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); - *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); - *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); - *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); - std::string::_M_assign(this + 32, a2 + 32); - *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); - std::string::_M_assign(this + 60, a2 + 60); - *(_BYTE *)(this + 84) = *(_BYTE *)(a2 + 84); - std::string::_M_assign(this + 88, a2 + 88); -} - -//----- (0041F2C0) -------------------------------------------------------- -_DWORD *__thiscall WXML::DOMLib::Parser::Error( - _DWORD *ecx0, - WXML::DOMLib::Parser *this, - char *a3, - WXML::DOMLib::Token *a4) -{ - WXML::DOMLib::Token *v4; // eax - std::ostream::sentry *v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // eax - std::ostream::sentry *v8; // eax - std::ostream::sentry *v9; // eax - char v10; // dl - const WXML::DOMLib::Token *v12; // [esp+4h] [ebp-1C4h] - char *v13; // [esp+4h] [ebp-1C4h] - int v14; // [esp+1Ch] [ebp-1ACh] - int v15; // [esp+20h] [ebp-1A8h] - int v16; // [esp+24h] [ebp-1A4h] - void *v18[6]; // [esp+68h] [ebp-160h] BYREF - int v19[5]; // [esp+80h] [ebp-148h] BYREF - int v20; // [esp+94h] [ebp-134h] - int v21; // [esp+98h] [ebp-130h] - char v22[8]; // [esp+F0h] [ebp-D8h] BYREF - char v23[4]; // [esp+F8h] [ebp-D0h] BYREF - char v24[204]; // [esp+FCh] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v22); - v4 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(this); - WXML::DOMLib::Token::Token((int)v19, v4, v12); - if ( v21 == 4 ) - { - if ( !a4 ) - a4 = (WXML::DOMLib::Token *)(*((_DWORD *)this + 22) + 112 * (*((_DWORD *)this + 25) - 1)); - WXML::DOMLib::Token::operator=((int)v19, (int)a4); - a3 = "end tag missing"; - } - v5 = std::operator<<((std::ostream::sentry *)v23, (int *)this + 82); - std::operator<<>(v5, ":"); - v6 = (std::ostream::sentry *)std::ostream::operator<<(v19[2]); - std::operator<<>(v6, ":"); - v7 = (std::ostream::sentry *)std::ostream::operator<<(v19[3]); - v8 = std::operator<<>(v7, ": "); - v9 = std::operator<<>(v8, a3); - std::operator<<>(v9, ", near `"); - v16 = 0; - v14 = *(_DWORD *)v19[0]; - v15 = v19[4]; - while ( v20 > v16 ) - { - if ( v16 == 7 ) - { - if ( v20 > 7 ) - std::operator<<>((std::ostream::sentry *)v23, "..."); - break; - } - v10 = *(_BYTE *)(v15 + v14 + v16); - if ( v10 == 13 ) - { - v13 = "\\r"; -LABEL_11: - std::operator<<>((std::ostream::sentry *)v23, v13); - goto LABEL_12; - } - if ( v10 == 10 ) - { - v13 = "\\n"; - goto LABEL_11; - } - std::operator<<>((std::ostream::sentry *)v23, v10); -LABEL_12: - ++v16; - } - std::operator<<>((std::ostream::sentry *)v23, "`"); - std::stringbuf::str((int)v18, (int)v24); - *ecx0 = ecx0 + 2; - ecx0[1] = 0; - *((_BYTE *)ecx0 + 8) = 0; - std::string::_M_assign((int)ecx0, (int)v18); - std::string::_M_dispose(v18); - WXML::DOMLib::Token::~Token((int)v19); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v22); - return ecx0; -} -// 41F337: variable 'v12' is possibly undefined -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 41F2C0: using guessed type char var_D0[4]; -// 41F2C0: using guessed type char var_CC[204]; - -//----- (0041F610) -------------------------------------------------------- -unsigned __int8 *__thiscall WXML::DOMLib::Token::operator=(int this, int a2) -{ - volatile signed __int32 **v3; // ecx - - v3 = (volatile signed __int32 **)(this + 4); - *(v3 - 1) = *(volatile signed __int32 **)a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, *(_DWORD *)(a2 + 4)); - *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); - *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); - *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); - *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); - *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); - *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); - std::string::operator=((unsigned __int8 **)(this + 32), a2 + 32); - *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); - std::string::operator=((unsigned __int8 **)(this + 60), a2 + 60); - *(_BYTE *)(this + 84) = *(_BYTE *)(a2 + 84); - return std::string::operator=((unsigned __int8 **)(this + 88), a2 + 88); -} - -//----- (0041F694) -------------------------------------------------------- -unsigned __int8 *__thiscall std::pair::operator=(unsigned __int8 **this, int a2) -{ - std::string::operator=(this, a2); - return WXML::DOMLib::Token::operator=((int)(this + 6), a2 + 24); -} - -//----- (0041F6BE) -------------------------------------------------------- -unsigned int __thiscall std::string::basic_string(void **this, char *Str) -{ - size_t v2; // eax - size_t v3; // eax - void **v5; // [esp+1Ch] [ebp-Ch] - - *this = this + 2; - v2 = -1; - if ( Str ) - { - v5 = this; - v3 = strlen(Str); - this = v5; - v2 = (size_t)&Str[v3]; - } - return std::string::_M_construct(this, (unsigned __int8 *)Str, v2); -} - -//----- (0041F6F9) -------------------------------------------------------- -void **__cdecl WXML::DOMLib::removern(void **a1, _DWORD *a2) -{ - unsigned int v2; // edx - char v3; // al - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-40h] - - std::string::basic_string(a1, (char *)&byte_5537CA); // '\0' - for ( lpuexcpt = 0; ; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v2 = a2[1]; - if ( (unsigned int)lpuexcpt >= v2 ) - break; - v3 = *((_BYTE *)lpuexcpt + *a2); - if ( v2 - 1 <= (unsigned int)lpuexcpt || v3 != 13 || *((_BYTE *)lpuexcpt + *a2 + 1) != '\n'/*10*/ ) - std::string::push_back(a1, v3); - } - return a1; -} - -//----- (0041F7BA) -------------------------------------------------------- -int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@( - int a1@, - int a2@, - int a3@) -{ - char v6; // al - int v7; // edx - - while ( a1 ) - { - v6 = std::operator<(a1 + 16, a3); - v7 = *(_DWORD *)(a1 + 12); - if ( !v6 ) - v7 = *(_DWORD *)(a1 + 8); - if ( !v6 ) - a2 = a1; - a1 = v7; - } - return a2; -} - -//----- (0041F7F6) -------------------------------------------------------- -int __thiscall WXML::DOMLib::WXMLDom::AddTestAttr(_DWORD *this, int *a2, int a3, char a4) -{ - std::ostream::sentry *v4; // eax - std::ostream::sentry *v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // eax - std::ostream::sentry *v8; // eax - std::ostream::sentry *v9; // eax - std::ostream::sentry *v10; // eax - std::ostream::sentry *v11; // eax - std::ostream::sentry *v12; // eax - std::ostream::sentry *v13; // eax - std::ostream::sentry *v14; // eax - std::ostream::sentry *v15; // eax - BOOL v17; // [esp+18h] [ebp-140h] - unsigned int i; // [esp+20h] [ebp-138h] - BOOL lpuexcpt; // [esp+24h] [ebp-134h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-134h] - void **v22; // [esp+28h] [ebp-130h] - void *v23[6]; // [esp+60h] [ebp-F8h] BYREF - _QWORD v24[3]; // [esp+78h] [ebp-E0h] BYREF - void *v25[6]; // [esp+90h] [ebp-C8h] BYREF - void *v26[6]; // [esp+A8h] [ebp-B0h] BYREF - _QWORD v27[3]; // [esp+C0h] [ebp-98h] BYREF - void *v28; // [esp+D8h] [ebp-80h] BYREF - void *v29; // [esp+F0h] [ebp-68h] BYREF - void *v30; // [esp+108h] [ebp-50h] BYREF - void *v31; // [esp+120h] [ebp-38h] BYREF - void *v32; // [esp+138h] [ebp-20h] BYREF - char v33; // [esp+150h] [ebp-8h] BYREF - - lpuexcpt = 1; - if ( !std::operator==((int)this, "button") ) - lpuexcpt = std::operator==((int)this, "navigator"); - std::string::basic_string((void **)v27, "bind"); - std::string::basic_string(&v28, "bind:"); - std::string::basic_string(&v29, "catch"); - std::string::basic_string(&v30, "catch:"); - std::string::basic_string(&v31, "capture-bind"); - std::string::basic_string(&v32, "capture-catch"); - std::string::basic_string((void **)v24, (char *)off_553859); - std::string::basic_string(v25, "touchstart"); - std::string::basic_string(v26, "touchend"); - for ( i = 0; i <= 5 && !lpuexcpt; ++i ) - { - lpuexcpta = 0; - do - { - std::string::basic_string((char *)v23, (int)&v27[3 * i]); - std::string::append(v23, (int)&v24[3 * (int)lpuexcpta]); - v17 = std::map::count(this + 12, (int)v23); - std::string::_M_dispose(v23); - lpuexcpta = (struct _Unwind_Exception *)((char *)lpuexcpta + 1); - } - while ( (unsigned int)lpuexcpta <= 2 && !v17 ); - lpuexcpt = v17; - } - if ( lpuexcpt ) - { - ++WXML::DOMLib::WXMLDom::componentCnt; - v4 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "_af("); - v5 = std::operator<<(v4, a2); - v6 = std::operator<<>(v5, ","); - v7 = std::ostream::_M_insert(v6, 1); - v8 = std::operator<<>(v7, ","); - // 66 * 4 = 264; 67 * 4 = 268 - v9 = std::ostream::_M_insert(v8, this[66], this[67]); - } - else - { - v10 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "_af("); - v11 = std::operator<<(v10, a2); - v12 = std::operator<<>(v11, ","); - v9 = std::ostream::_M_insert(v12, 0); - } - v13 = std::operator<<>(v9, ","); - v14 = std::ostream::_M_insert(v13, this[66], this[67]); - v15 = std::operator<<>(v14, ");"); - std::operator<<>(v15, a4); - std::string::_M_dispose(v26); - std::string::_M_dispose(v25); - std::string::_M_dispose((void **)v24); - v22 = (void **)&v33; - do - { - v22 -= 6; - std::string::_M_dispose(v22); - } - while ( v22 != (void **)v27 ); - return 0; -} -// 566558: using guessed type int WXML::DOMLib::WXMLDom::componentCnt; - -//----- (0041FD73) -------------------------------------------------------- -int __cdecl WXML::DOMLib::splitString(int a1, int *a2, char a3) -{ - char *i; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - void *v6[8]; // [esp+58h] [ebp-20h] BYREF - - *(_DWORD *)a1 = 0; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - lpuexcpt = 0; - for ( i = std::string::find(a2, a3, 0); i != (char *)-1; i = std::string::find(a2, a3, (unsigned int)(i + 1)) ) - { - std::string::substr(v6, a2, (unsigned int)lpuexcpt, i - (char *)lpuexcpt); - std::vector::emplace_back((void **)a1, v6); - std::string::_M_dispose(v6); - lpuexcpt = (struct _Unwind_Exception *)(i + 1); - } - std::string::substr(v6, a2, (unsigned int)lpuexcpt, 0xFFFFFFFF); - std::vector::emplace_back((void **)a1, v6); - std::string::_M_dispose(v6); - return a1; -} - -//----- (0041FEDD) -------------------------------------------------------- -int __cdecl WXML::DOMLib::resolvePath(int a1, int *a2, int *a3) -{ - int v3; // edx - int v4; // edx - unsigned int v5; // eax - unsigned int i; // [esp+14h] [ebp-84h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-80h] - bool lpuexcpta; // [esp+18h] [ebp-80h] - void **v10; // [esp+54h] [ebp-44h] BYREF - void **v11; // [esp+58h] [ebp-40h] - void *v12[6]; // [esp+60h] [ebp-38h] BYREF - int v13[8]; // [esp+78h] [ebp-20h] BYREF - - *(_BYTE *)(a1 + 8) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - if ( *(_BYTE *)*a3 != '/'/*47*/ ) - { - // path1 - WXML::DOMLib::splitString((int)&v10, a2, '/'/*47*/); - v11 -= 6; - std::string::_M_dispose(v11); - // path2 - WXML::DOMLib::splitString((int)v13, a3, '/'/*47*/); - for ( i = 0; i < -1431655765 * ((v13[1] - v13[0]) >> 3); ++i ) - { - lpuexcpt = (struct _Unwind_Exception *)(24 * i); - // v13 p2Split - if ( std::operator==(24 * i + v13[0], "..") ) - { - v11 -= 6; - std::string::_M_dispose(v11); - } - else if ( !std::operator==((int)lpuexcpt + v13[0], (char *)&byte_5537CA) - && !std::operator==((int)lpuexcpt + v13[0], ".") ) - { - std::vector::push_back((int)&v10, (int)lpuexcpt + v13[0]); - } - } - WXML::DOMLib::joinString((int)v12, &v10, '/'/*47*/); - std::string::operator=((unsigned __int8 **)a1, (int)v12); - std::string::_M_dispose(v12); - std::vector::~vector((void ***)v13, v3); - std::vector::~vector(&v10, v4); - } - if ( *(_BYTE *)*a2 == '.'/*46*/ && *(_BYTE *)*a3 == '/'/*47*/ ) - { - std::operator+((int)v13, ".", (int)a3); - std::string::operator=((unsigned __int8 **)a1, (int)v13); - std::string::_M_dispose((void **)v13); - } - v5 = *(_DWORD *)(a1 + 4); - if ( v5 <= 4 - || (std::string::substr(v13, (_DWORD *)a1, v5 - 5, 0xFFFFFFFF), - lpuexcpta = std::operator==((int)v13, ".wxml"), - std::string::_M_dispose((void **)v13), - !lpuexcpta) ) - { - std::string::append((_DWORD *)a1, ".wxml"); - } - return a1; -} -// 42006A: variable 'v3' is possibly undefined -// 420072: variable 'v4' is possibly undefined - -//----- (00420184) -------------------------------------------------------- -void __fastcall WXML::DOMLib::Parser::ATTR(WXML::DOMLib::Parser *a1) -{ - WXML::DOMLib::Token *v1; // eax - int i; // edx - char v3; // cl - unsigned __int8 **v4; // eax - _DWORD *v5; // eax - WXML::DOMLib::Token *v6; // eax - int v7; // ecx - char *v8; // eax - int v9; // ecx - char *v10; // eax - const WXML::DOMLib::Token *v11; // [esp+4h] [ebp-164h] - const char *v12; // [esp+4h] [ebp-164h] - const char *v13; // [esp+4h] [ebp-164h] - const char *v14; // [esp+4h] [ebp-164h] - const WXML::DOMLib::Token *v15; // [esp+4h] [ebp-164h] - _DWORD *exception; // [esp+14h] [ebp-154h] - void *v18[6]; // [esp+58h] [ebp-110h] BYREF - int v19[5]; // [esp+70h] [ebp-F8h] BYREF - int v20; // [esp+84h] [ebp-E4h] - char v21[24]; // [esp+E0h] [ebp-88h] BYREF - int v22; // [esp+F8h] [ebp-70h] - /* - v19 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 00 00 00 00, 00(v20) 00 00 00, 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 00(v22) 00 00 00 - */ - v1 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); - WXML::DOMLib::Token::Token((int)v19, v1, v11); - if ( !WXML::DOMLib::Token::IsMatch((int)v19, (WXML::DOMLib::Token *)">", v12) - && !WXML::DOMLib::Token::IsMatch((int)v19, (WXML::DOMLib::Token *)"/>", v13) ) - { - if ( !v19[0] ) - goto LABEL_12; // 抛异常 - for ( i = 0; v20 > i; ++i ) - { - v3 = *(_BYTE *)(v19[4] + *(_DWORD *)v19[0] + i); - if ( - // 0xDF -> 1101 1111 - (unsigned __int8)((v3 & 0xDF) - 'A'/*65*/) > 25/*0x19u*/ // 超出26个大写字母范围 - && (unsigned __int8)(v3 - '0'/*48*/) > 10 /*0xAu*/ // 不是9,可能把(冒号:)考虑进去了 - && v3 != '_'/*95*/ // 不是下划线 - && v3 != '-'/*45*/ // 不是连字符 - ) - goto LABEL_12; - } - // 0xFFFE -> 1111 1111 1111 1110 - // 确保v20在1-65535之间 - if ( (unsigned int)(v20 - 1) > 0xFFFE ) // if (v20 > 0xFFFF) - { -LABEL_12: - exception = __cxa_allocate_exception(0x18u); - WXML::DOMLib::Parser::Error(exception, a1, "unexpected attribute name", 0); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for WXML::DOMLib::ParseException, - WXML::DOMLib::ParseException::~ParseException); - } - v4 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v19); - std::string::basic_string((char *)v18, (int)v4); - ++*((_DWORD *)a1 + 25); - v5 = WXML::DOMLib::Parser::Peek(a1); - WXML::DOMLib::Token::operator=((int)v19, (int)v5); - if ( WXML::DOMLib::Token::IsMatch((int)v19, (WXML::DOMLib::Token *)"=", v14) ) - { - ++*((_DWORD *)a1 + 25); - v6 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); - /* - v21[24] - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00, 00(v22) 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 00 00 00 00 - */ - WXML::DOMLib::Token::Token((int)v21, v6, v15); - if ( v22 == 2 ) - { - ++*((_DWORD *)a1 + 25); - v7 = *(_DWORD *)std::deque>::back((_DWORD *)a1 + 12); - v8 = std::map::operator[]((_DWORD *)(v7 + 48), (int)v18); - WXML::DOMLib::Token::operator=((int)v8, (int)v21); - } - WXML::DOMLib::Token::~Token((int)v21); - } - else - { - v9 = *(_DWORD *)std::deque>::back((_DWORD *)a1 + 12); - v10 = std::map::operator[]((_DWORD *)(v9 + 48), (int)v18); - WXML::DOMLib::Token::operator=((int)v10, (int)a1 + 216); - } - std::string::_M_dispose(v18); - } - WXML::DOMLib::Token::~Token((int)v19); -} -// 4201EC: variable 'v11' is possibly undefined -// 4201FF: variable 'v12' is possibly undefined -// 42021A: variable 'v13' is possibly undefined -// 42033E: variable 'v14' is possibly undefined -// 420361: variable 'v15' is possibly undefined -// 55B664: using guessed type int *`typeinfo for'WXML::DOMLib::ParseException; - -//----- (0042049C) -------------------------------------------------------- -void __fastcall WXML::DOMLib::Parser::ATTR_LIST(WXML::DOMLib::Parser *a1) -{ - WXML::DOMLib::Token *v1; // eax - WXML::DOMLib::Parser *v2; // edx - const WXML::DOMLib::Token *v3; // [esp+4h] [ebp-C4h] - const char *v4; // [esp+4h] [ebp-C4h] - const char *v5; // [esp+4h] [ebp-C4h] - char v7[120]; // [esp+50h] [ebp-78h] BYREF - - WXML::DOMLib::Parser::ATTR(a1); - v1 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); - WXML::DOMLib::Token::Token((int)v7, v1, v3); - if ( !WXML::DOMLib::Token::IsMatch((int)v7, (WXML::DOMLib::Token *)">", v4) - && !WXML::DOMLib::Token::IsMatch((int)v7, (WXML::DOMLib::Token *)"/>", v5) ) - { - WXML::DOMLib::Parser::ATTR_LIST(v2); - } - WXML::DOMLib::Token::~Token((int)v7); -} -// 420509: variable 'v3' is possibly undefined -// 420519: variable 'v4' is possibly undefined -// 42052D: variable 'v5' is possibly undefined -// 420547: variable 'v2' is possibly undefined - -//----- (00420592) -------------------------------------------------------- -void __thiscall std::map::erase(_DWORD *this, int a2) -{ - int *v3; // edx - int *v4; // esi - int *v5; // edi - int *v6; // eax - int v7; // [esp+1Ch] [ebp-1Ch] - - v4 = (int *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::equal_range( - this, - a2); - v5 = v3; - if ( v4 == (int *)this[3] && v3 == this + 1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(this[2]); - this[2] = 0; - this[3] = v5; - this[4] = v5; - this[5] = 0; - } - else - { - while ( v5 != v4 ) - { - v7 = std::_Rb_tree_increment((int)v4); - v6 = std::_Rb_tree_rebalance_for_erase(v4, this + 1); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)v6); - --this[5]; - v4 = (int *)v7; - } - } -} -// 4205AB: variable 'v3' is possibly undefined - -//----- (0042060C) -------------------------------------------------------- -int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1) -{ - int v1; // edx - _DWORD *v2; // eax - unsigned int *v3; // edx - char *v4; // eax - unsigned int *v5; // eax - int v6; // edx - char *v7; // eax - unsigned int *v8; // edx - _DWORD *v9; // eax - unsigned int *v10; // edx - char *v11; // eax - volatile signed __int32 **v12; // ecx - unsigned int *v13; // eax - int v14; // edx - unsigned int *v15; // ecx - int v16; // edx - unsigned int *v17; // ecx - int v18; // edx - char *v19; // eax - unsigned int *v20; // edx - char *v21; // eax - char *v22; // eax - char *v23; // eax - char *v24; // eax - volatile signed __int32 **v25; // ecx - unsigned int *v26; // ecx - int v27; // edx - char *v28; // eax - unsigned int *v29; // edx - char *v30; // eax - volatile signed __int32 **v31; // ecx - unsigned int *v32; // ecx - unsigned int *v34; // [esp+0h] [ebp-188h] - char *v35; // [esp+0h] [ebp-188h] - const WXML::DOMLib::Token *v36; // [esp+4h] [ebp-184h] - _DWORD *v37; // [esp+10h] [ebp-178h] - char **v38; // [esp+14h] [ebp-174h] - void *Block; // [esp+18h] [ebp-170h] - char *Blocka; // [esp+18h] [ebp-170h] - _DWORD *Blockb; // [esp+18h] [ebp-170h] - void *Blockc; // [esp+18h] [ebp-170h] - unsigned int *Blockd; // [esp+18h] [ebp-170h] - _DWORD *Blocke; // [esp+18h] [ebp-170h] - char *Blockf; // [esp+18h] [ebp-170h] - _DWORD *Blockg; // [esp+18h] [ebp-170h] - _DWORD *Blockh; // [esp+18h] [ebp-170h] - _DWORD *Blocki; // [esp+18h] [ebp-170h] - char *Blockj; // [esp+18h] [ebp-170h] - char *v50; // [esp+1Ch] [ebp-16Ch] - _DWORD *v51; // [esp+1Ch] [ebp-16Ch] - bool v52; // [esp+1Ch] [ebp-16Ch] - _DWORD *v53; // [esp+1Ch] [ebp-16Ch] - _DWORD *v54; // [esp+1Ch] [ebp-16Ch] - void *v55; // [esp+1Ch] [ebp-16Ch] - unsigned int *v56; // [esp+1Ch] [ebp-16Ch] - _DWORD *v57; // [esp+1Ch] [ebp-16Ch] - _DWORD *v58; // [esp+1Ch] [ebp-16Ch] - _DWORD *v59; // [esp+1Ch] [ebp-16Ch] - unsigned int *v60; // [esp+1Ch] [ebp-16Ch] - _DWORD *v61; // [esp+1Ch] [ebp-16Ch] - _DWORD *v62; // [esp+1Ch] [ebp-16Ch] - _DWORD *v63; // [esp+1Ch] [ebp-16Ch] - unsigned int *v64; // [esp+1Ch] [ebp-16Ch] - _DWORD *v65; // [esp+1Ch] [ebp-16Ch] - _DWORD *v66; // [esp+1Ch] [ebp-16Ch] - _DWORD *v67; // [esp+1Ch] [ebp-16Ch] - unsigned int *v68; // [esp+1Ch] [ebp-16Ch] - _DWORD *v69; // [esp+1Ch] [ebp-16Ch] - _DWORD *v70; // [esp+1Ch] [ebp-16Ch] - void *v71; // [esp+1Ch] [ebp-16Ch] - unsigned int *v72; // [esp+1Ch] [ebp-16Ch] - _DWORD *v73; // [esp+1Ch] [ebp-16Ch] - int v74; // [esp+20h] [ebp-168h] - int v75; // [esp+20h] [ebp-168h] - _DWORD *v76; // [esp+20h] [ebp-168h] - unsigned int i; // [esp+20h] [ebp-168h] - unsigned int j; // [esp+20h] [ebp-168h] - int v79; // [esp+20h] [ebp-168h] - char *Str; // [esp+24h] [ebp-164h] - char *Strg; // [esp+24h] [ebp-164h] - char *Stra; // [esp+24h] [ebp-164h] - char *Strb; // [esp+24h] [ebp-164h] - char *Strc; // [esp+24h] [ebp-164h] - char *Strd; // [esp+24h] [ebp-164h] - char *Stre; // [esp+24h] [ebp-164h] - char *Strf; // [esp+24h] [ebp-164h] - _DWORD *v89; // [esp+6Ch] [ebp-11Ch] BYREF - volatile signed __int32 *v90; // [esp+70h] [ebp-118h] BYREF - unsigned int *v91; // [esp+74h] [ebp-114h] - volatile signed __int32 *v92; // [esp+78h] [ebp-110h] BYREF - void *v93[6]; // [esp+7Ch] [ebp-10Ch] BYREF - void *v94[6]; // [esp+94h] [ebp-F4h] BYREF - void *v95[6]; // [esp+ACh] [ebp-DCh] BYREF - _DWORD *v96; // [esp+C4h] [ebp-C4h] BYREF - volatile signed __int32 *v97[5]; // [esp+C8h] [ebp-C0h] BYREF - unsigned int *v98; // [esp+DCh] [ebp-ACh] BYREF - volatile signed __int32 *v99[5]; // [esp+E0h] [ebp-A8h] BYREF - void *v100[6]; // [esp+F4h] [ebp-94h] BYREF - const char *v101; // [esp+10Ch] [ebp-7Ch] BYREF - char v102[120]; // [esp+110h] [ebp-78h] BYREF - - // RewriteTree - 0 - for ( Str = 0; ; ++Str ) - { - v1 = *(_DWORD *)(a1 + 72); - if ( (*(_DWORD *)(a1 + 76) - v1) >> 3 <= (unsigned int)Str ) - break; - v74 = *(_DWORD *)(v1 + 8 * (_DWORD)Str); - std::string::basic_string((void **)&v101, "wx:for"); - v2 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)(v74 + 48), // cur->offset_48 - (int)&v101); // "wx:for" - v34 = v3; - Block = v2; - std::string::_M_dispose((void **)&v101); - if ( Block != (void *)(v74 + 52) ) - { - v75 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str); // cur - std::string::basic_string(v100, "wx:for"); - v4 = std::map::operator[]( - (_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str) + 48), // cur->offset_48 - v100); // "wx:for" - // cur->offset_48["wx:for"] - v101 = "wx:for-items"; - // v4 - WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v4, v36); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_emplace_unique>( - (_DWORD *)(v75 + 48), - (char **)&v101); // "wx:for-items" - WXML::DOMLib::Token::~Token((int)v102); - std::string::_M_dispose(v100); - v76 = (_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str) + 48); - // cur->offset_48 - std::string::basic_string((void **)&v101, "wx:for"); - std::map::erase(v76, (int)&v101); - v34 = v5; - std::string::_M_dispose((void **)&v101); - } - } - - // RewriteTree - 5 - for ( i = 0; ; ++i ) - { - v6 = *(_DWORD *)(a1 + 72); - if ( (*(_DWORD *)(a1 + 76) - v6) >> 3 <= i ) - break; - v50 = (char *)(8 * i); - Strg = *(char **)(v6 + 8 * i); - std::string::basic_string((void **)&v101, "wx:for-items"); - v7 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)Strg + 12, - (int)&v101); - v34 = v8; - Blocka = v7; - std::string::_M_dispose((void **)&v101); - // cur->offset_52 - // char *Strg - if ( Blocka == Strg + 52 && !std::operator==(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * i), "block") ) - { - v38 = WXML::DOMLib::szWXIFControlAttrs; - while ( 1 ) - { - Stra = *v38; - if ( !*v38 ) - break; - Blockb = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * i); // cur - std::string::basic_string((void **)&v101, Stra); - v9 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - Blockb + 12, - (int)&v101); - v34 = v10; - v37 = v9; - std::string::_M_dispose((void **)&v101); - ++v38; - if ( v37 != Blockb + 13 ) - { - std::__shared_ptr::__shared_ptr( - &v96, - &v50[*(_DWORD *)(a1 + 72)]); // cur - Blockc = operator new(0x128u); - WXML::DOMLib::WXMLDom::WXMLDom((int)Blockc); - zcc::shared_ptr::shared_ptr(Blockc); - Blockd = v98; - std::string::basic_string(v100, Stra); - // v96 + 12 -> cur->offset_48[*v38] - v11 = std::map::operator[](v96 + 12, v100); - v101 = Stra; // *v38 - WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v11, v36); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_emplace_unique>( - Blockd + 12, // cur->offset_48 - (char **)&v101); - WXML::DOMLib::Token::~Token((int)v102); - std::string::_M_dispose(v100); - std::string::operator=(v98, "block"); - // v96 -> cur - WXML::DOMLib::Token::operator=((int)(v98 + 21), (int)(v96 + 21)); - std::string::_M_assign((int)(v98 + 6), (int)(v96 + 6)); - Blocke = v96 + 12; - std::string::basic_string((void **)&v101, Stra); // *v38 - std::map::erase(Blocke, (int)&v101); - std::string::_M_dispose((void **)&v101); - std::vector>::push_back(v98 + 18, &v96); - v12 = (volatile signed __int32 **)&v50[*(_DWORD *)(a1 + 72) + 4]; - *(v12 - 1) = (volatile signed __int32 *)v98; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v12, (int)v99[0]); - v34 = v13; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v99); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v97); - break; - } - } - } - } - - // RewriteTree - 10 - for ( Strb = 0; ; ++Strb ) - { - v14 = *(_DWORD *)(a1 + 72); - if ( (*(_DWORD *)(a1 + 76) - v14) >> 3 <= (unsigned int)Strb ) - break; - if ( !std::operator==(*(_DWORD *)(v14 + 8 * (_DWORD)Strb), "template") ) - goto LABEL_23; - v51 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); // cur - std::string::basic_string(v100, "is"); - // 13 * 4 = 52 - if ( v51 + 13 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v51 + 12, - (int)v100) ) - { - v52 = 0; - } - else - { - v53 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); - std::string::basic_string((void **)&v101, "name"); - v52 = v53 + 13 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - v53 + 12, - (int)&v101); - std::string::_M_dispose((void **)&v101); - } - std::string::_M_dispose(v100); - if ( v52 ) - { - v15 = *(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); // cur - v35 = "wx-template"; - } - else - { - LABEL_23: - if ( !std::operator==(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb), "template") ) - continue; - v15 = *(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); - v35 = "wx-define"; - } - v34 = std::string::operator=(v15, v35); - } - - // RewriteTree - 15 - for ( Strc = 0; ; ++Strc ) - { - v16 = *(_DWORD *)(a1 + 72); - if ( (*(_DWORD *)(a1 + 76) - v16) >> 3 <= (unsigned int)Strc ) - break; - if ( std::operator==(*(_DWORD *)(v16 + 8 * (_DWORD)Strc), "block") ) - { - // int a1 - std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strc), "block"); - v34 = v17; - } - } - - // RewriteTree - 20 - for ( j = 0; ; ++j ) - { - v18 = *(_DWORD *)(a1 + 72); - if ( (*(_DWORD *)(a1 + 76) - v18) >> 3 <= j ) - break; - Strd = (char *)(8 * j); - // cur->offset_0 - if ( (unsigned __int8)std::operator!=(*(_DWORD *)(v18 + 8 * j), "wx-repeat") ) - { - if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "wx-define") ) - { - if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "wx-import") ) - { - if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "import") ) - { - v54 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * j); // cur - std::string::basic_string((void **)&v101, "wx:for-items"); - v19 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v54 + 12, - (int)&v101); // "wx:for-items" - v34 = v20; - Blockf = v19; - std::string::_M_dispose((void **)&v101); - if ( Blockf != (char *)(v54 + 13) ) - { - std::__shared_ptr::__shared_ptr( - &v89, - &Strd[*(_DWORD *)(a1 + 72)]); - // cur - v55 = operator new(0x128u); - WXML::DOMLib::WXMLDom::WXMLDom((int)v55); - zcc::shared_ptr::shared_ptr(v55); - std::string::operator=(v91, "wx-repeat"); - // cur->offset_24 - std::string::_M_assign((int)(v91 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j) + 24); - WXML::DOMLib::Token::operator=((int)(v91 + 21), (int)(v89 + 21)); - std::vector>::push_back(v91 + 18, &v89); - v56 = v91; - std::string::basic_string(v100, "wx:for-items"); - // cur->offset_48["wx:for-items"] - v21 = std::map::operator[](v89 + 12, v100); - v101 = "wx:for-items"; - WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v21, v36); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_emplace_unique>( - v56 + 12, - (char **)&v101); - WXML::DOMLib::Token::~Token((int)v102); - std::string::_M_dispose(v100); - v57 = v89 + 12; - // v89 -> cur - std::string::basic_string(v93, "wx:for-items"); - std::map::erase(v57, (int)v93); - std::string::_M_dispose(v93); - v58 = v89; // cur - Blockg = v89 + 13; // cur->offset_52 end - std::string::basic_string(v94, "wx:for-item"); - v59 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v58 + 12, - (int)v94); - std::string::_M_dispose(v94); - if ( Blockg != v59 ) - { - v60 = v91; - std::string::basic_string(v100, "wx:for-item"); - // cur->offset_48["wx:for-item"] - v22 = std::map::operator[](v89 + 12, v100); - v101 = "wx:for-item"; - WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v22, v36); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_emplace_unique>( - v60 + 12, - (char **)&v101); // "wx:for-item" - WXML::DOMLib::Token::~Token((int)v102); - std::string::_M_dispose(v100); - v61 = v89 + 12; // cur->offset_48 - std::string::basic_string(v95, "wx:for-item"); - std::map::erase(v61, (int)v95); - std::string::_M_dispose(v95); - } - - //////////////////////////////////////"wx:for-index" - v62 = v89; // cur - Blockh = v89 + 13; // cur->offset_48.end() - std::string::basic_string((void **)&v96, "wx:for-index"); - v63 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v62 + 12, // cur->offset_48 - (int)&v96); // "wx:for-index" - std::string::_M_dispose((void **)&v96); - if ( v63 != Blockh ) - { - v64 = v91; - std::string::basic_string(v100, "wx:for-index"); - // cur->offset_48 - v23 = std::map::operator[](v89 + 12, v100); - v101 = "wx:for-index"; - WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v23, v36); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_emplace_unique>( - v64 + 12, - (char **)&v101); - WXML::DOMLib::Token::~Token((int)v102); - std::string::_M_dispose(v100); - v65 = v89 + 12; - std::string::basic_string((void **)&v98, "wx:for-index"); - std::map::erase(v65, (int)&v98); - std::string::_M_dispose((void **)&v98); - } - - ////////////////////////////////////////"wx:key" - v66 = v89; // cur - Blocki = v89 + 13; - std::string::basic_string(v100, "wx:key"); - v67 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - v66 + 12, - (int)v100); - std::string::_M_dispose(v100); - if ( Blocki != v67 ) - { - v68 = v91; - std::string::basic_string(v100, "wx:key"); - v24 = std::map::operator[](v89 + 12, v100); - v101 = "wx:key"; - WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v24, v36); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( - v68 + 12, // v91->offset_48 - (char **)&v101); // "wx:key" - WXML::DOMLib::Token::~Token((int)v102); - std::string::_M_dispose(v100); - v69 = v89 + 12; - std::string::basic_string((void **)&v101, "wx:key"); - std::map::erase(v69, (int)&v101); - std::string::_M_dispose((void **)&v101); - } - // Strd = (char *)(8 * j); - v25 = (volatile signed __int32 **)&Strd[*(_DWORD *)(a1 + 72) + 4]; - // cur->offset_16 - *(v25 - 1) = (volatile signed __int32 *)v91; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v25, (int)v92); - v34 = v26; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v90); - } - } - } - } - } - } - - // RewriteTree - 25 - for ( Stre = 0; ; ++Stre ) - { - v27 = *(_DWORD *)(a1 + 72); - if ( (*(_DWORD *)(a1 + 76) - v27) >> 3 <= (unsigned int)Stre ) - break; - v79 = 8 * (_DWORD)Stre; // index offset - v70 = *(_DWORD **)(v27 + 8 * (_DWORD)Stre); // cur - std::string::basic_string((void **)&v101, "wx:scope-data"); - v28 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v70 + 12, // cur->offset_48 - (int)&v101); // "wx:scope-data" - v34 = v29; - Blockj = v28; - std::string::_M_dispose((void **)&v101); - if ( Blockj != (char *)(v70 + 13) ) - { - std::__shared_ptr::__shared_ptr( - &v96, - (_DWORD *)(*(_DWORD *)(a1 + 72) + v79)); // cur - v71 = operator new(0x128u); - WXML::DOMLib::WXMLDom::WXMLDom((int)v71); - zcc::shared_ptr::shared_ptr(v71); - std::string::operator=(v98, "wx-scope"); - // cur->offset_96 - // int *v98 - std::string::_M_assign((int)(v98 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Stre) + 24); - WXML::DOMLib::Token::operator=((int)(v98 + 21), (int)(v96 + 21)); - // 18 * 4 = 72 - std::vector>::push_back(v98 + 18, &v96); - v72 = v98; - std::string::basic_string(v100, "wx:scope-data"); - v30 = std::map::operator[](v96 + 12, v100); - v101 = "wx:scope-data"; - WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v30, v36); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_emplace_unique>( - v72 + 12, - (char **)&v101);// "wx:scope-data" - WXML::DOMLib::Token::~Token((int)v102); - std::string::_M_dispose(v100); - v73 = v96 + 12; - std::string::basic_string((void **)&v101, "wx:scope-data"); - std::map::erase(v73, (int)&v101); - std::string::_M_dispose((void **)&v101); - v31 = (volatile signed __int32 **)(*(_DWORD *)(a1 + 72) + v79 + 4); - *(v31 - 1) = (volatile signed __int32 *)v98; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v31, (int)v99[0]); - v34 = v32; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v99); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v97); - } - } - - // RewriteTree - 30 - for ( Strf = 0; (*(_DWORD *)(a1 + 76) - *(_DWORD *)(a1 + 72)) >> 3 > (unsigned int)Strf; ++Strf ) - WXML::DOMLib::WXMLDom::RewriteTree((WXML::DOMLib::WXMLDom *)v34); - return 0; -} -// 4206CF: variable 'v3' is possibly undefined -// 420756: variable 'v36' is possibly undefined -// 4207D7: variable 'v5' is possibly undefined -// 420864: variable 'v8' is possibly undefined -// 42091F: variable 'v10' is possibly undefined -// 420B06: variable 'v13' is possibly undefined -// 420D42: variable 'v17' is possibly undefined -// 420E69: variable 'v20' is possibly undefined -// 4213FC: variable 'v26' is possibly undefined -// 42149A: variable 'v29' is possibly undefined -// 42167A: variable 'v32' is possibly undefined -// 4216DC: variable 'v34' is possibly undefined -// 554190: using guessed type char *WXML::DOMLib::szWXIFControlAttrs[4]; - -//----- (00421797) -------------------------------------------------------- -void __cdecl WXML::DOMLib::recurseDependencies(int *a1, int *a2, _DWORD *a3) -{ - char *v3; // eax - int *v4; // eax - int v5; // edx - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-70h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] - void *v9[6]; // [esp+50h] [ebp-38h] BYREF - void *v10[8]; // [esp+68h] [ebp-20h] BYREF - - if ( std::operator==(*a1, "import") || std::operator==(*a1, "include") ) - { - lpuexcpta = (struct _Unwind_Exception *)(*a1 + 48); - // const char off_5539C8[] = {'s','r','c','\0'} - std::string::basic_string(v10, (char *)off_5539C8); - lpuexcptb = (struct _Unwind_Exception *)std::map::count(lpuexcpta, (int)v10); - std::string::_M_dispose(v10); - if ( lpuexcptb ) // 大于0 - { - // const char off_5539C8[] = {'s','r','c','\0'} - // v9 = "src" - std::string::basic_string(v9, (char *)off_5539C8); - v3 = std::map::operator[]((_DWORD *)(*a1 + 48), v9); - v4 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v3); - WXML::DOMLib::resolvePath((int)v10, a2, v4); - // v10 = resolvePath(a2, a4); - std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( - a3, - v10); - std::string::_M_dispose(v10); - std::string::_M_dispose(v9); - } - } - for ( lpuexcpt = 0; ; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v5 = *(_DWORD *)(*a1 + 72); - if ( (unsigned int)lpuexcpt >= (*(_DWORD *)(*a1 + 76) - v5) >> 3 ) - break; - WXML::DOMLib::recurseDependencies(v5 + 8 * (_DWORD)lpuexcpt, a2, a3); - } -} - -//----- (00421934) -------------------------------------------------------- -void __usercall WXML::DOMLib::Parser::DOM(_DWORD *a1@, WXML::DOMLib::Parser *a2@) -{ - WXML::DOMLib::Token *v2; // eax - _DWORD *v3; // eax - unsigned __int8 **v4; // eax - unsigned __int8 **v5; // eax - char *v6; // ecx - unsigned __int8 **v7; // eax - int v8; // eax - _DWORD *v9; // eax - WXML::DOMLib::Token *v11; // eax - _DWORD *v12; // eax - int v13; // eax - _DWORD *v14; // eax - _DWORD *v15; // eax - _DWORD *v16; // ecx - int v17; // eax - int v18; // edx - unsigned __int8 v19; // cl - _DWORD *v20; // eax - const WXML::DOMLib::Token *v21; // [esp+4h] [ebp-224h] - const char *v22; // [esp+4h] [ebp-224h] - const WXML::DOMLib::Token *v23; // [esp+4h] [ebp-224h] - const char *v24; // [esp+4h] [ebp-224h] - const WXML::DOMLib::Token *v25; // [esp+4h] [ebp-224h] - const char *v26; // [esp+4h] [ebp-224h] - const char *v27; // [esp+4h] [ebp-224h] - const char *v28; // [esp+4h] [ebp-224h] - _DWORD *v29; // [esp+18h] [ebp-210h] - _DWORD *v30; // [esp+1Ch] [ebp-20Ch] - WXML::DOMLib::Token *v31; // [esp+20h] [ebp-208h] - _DWORD *v32; // [esp+24h] [ebp-204h] - WXML::DOMLib::Token *exception; // [esp+28h] [ebp-200h] - _DWORD *v34; // [esp+2Ch] [ebp-1FCh] - _DWORD *v35; // [esp+30h] [ebp-1F8h] - void *Blocka; // [esp+34h] [ebp-1F4h] - _DWORD *Block; // [esp+34h] [ebp-1F4h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-1F0h] - WXML::DOMLib::Token *v40[6]; // [esp+78h] [ebp-1B0h] BYREF - char *v41; // [esp+90h] [ebp-198h] BYREF - int v42[6]; // [esp+A8h] [ebp-180h] BYREF - int v43[6]; // [esp+C0h] [ebp-168h] BYREF - int v44; // [esp+D8h] [ebp-150h] - int v45; // [esp+130h] [ebp-F8h] BYREF - volatile signed __int32 *v46; // [esp+134h] [ebp-F4h] BYREF - unsigned int *v47; // [esp+1A0h] [ebp-88h] BYREF - volatile signed __int32 *v48[33]; // [esp+1A4h] [ebp-84h] BYREF - - v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); - WXML::DOMLib::Token::Token((int)v43, v2, v21); - if ( v44 ) - { - if ( v44 == 4 ) - goto LABEL_41; // 销毁数据,返回 - } - else - { - // "<" - if ( WXML::DOMLib::Token::IsMatch((int)v43, (WXML::DOMLib::Token *)&unk_5539CC, v22) ) - { - ++a1[25]; - v3 = WXML::DOMLib::Parser::Peek(a1); - WXML::DOMLib::Token::operator=((int)v43, (int)v3); - WXML::DOMLib::Token::Token((int)&v45, (WXML::DOMLib::Token *)v43, v23); - v4 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v43); - if ( !WXML::DOMLib::Parser::IsValidTag((const char **)v4) ) - { - exception = (WXML::DOMLib::Token *)__cxa_allocate_exception(0x18u); - WXML::DOMLib::Parser::Error(exception, (WXML::DOMLib::Parser *)a1, "unexpected tag", 0); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for WXML::DOMLib::ParseException, - WXML::DOMLib::ParseException::~ParseException); - } - ++a1[25]; - // v5 = v4 - v5 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v43); - // offset_8 - v6 = (char *)a1[8]; // offset_ - v35 = a1 + 2; // offset_8 - // v6 offset_8; a1[10] offset_8 - if ( v6 == (char *)(a1[10] - 24) ) - { - // 重新分配空间,CPP内部方法 - std::deque::_M_push_back_aux((int)v35, (int)v5); - } - else - { - // 把v5填进v6(offset_8) - std::string::basic_string(v6, (int)v5); - // v6(offset_8)指针后移 - a1[8] += 24; - } - Blocka = operator new(0x128u); - WXML::DOMLib::WXMLDom::WXMLDom((int)Blocka); // domPtr - zcc::shared_ptr::shared_ptr(Blocka); - // v4 - v7 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v43); // tag - std::string::_M_assign((int)v47, (int)v7); - // 4 * 6 = 24 - std::string::_M_assign((int)(v47 + 6), (int)v47); - // 21 * 4 = 84 - WXML::DOMLib::Token::operator=((int)(v47 + 21), (int)v43); - Block = a1 + 12; // offset_48 - v8 = std::deque>::back(a1 + 12); - std::vector>::push_back((_DWORD *)(*(_DWORD *)v8 + 72), &v47); - std::deque>::push_back((int)(a1 + 12), &v47); // a1.offset_48 - WXML::DOMLib::Parser::ATTR_LIST((WXML::DOMLib::Parser *)a1); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v48); - v9 = WXML::DOMLib::Parser::Peek(a1); - WXML::DOMLib::Token::operator=((int)v43, (int)v9); - if ( !v44 ) - { - if ( WXML::DOMLib::Token::IsMatch((int)v43, (WXML::DOMLib::Token *)">", v24) ) - { - ++a1[25]; - WXML::DOMLib::Parser::DOMS(a2); - v11 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); - WXML::DOMLib::Token::Token((int)&v47, v11, v25); - if ( v48[5] || !WXML::DOMLib::Token::IsMatch((int)&v47, (WXML::DOMLib::Token *)"((int)v42, "expect end-tag `", (int)v40); - v15 = std::string::append(v42, "`."); - std::string::basic_string(&v41, v15); - std::string::_M_dispose((void **)v42); - v30 = __cxa_allocate_exception(0x18u); - WXML::DOMLib::Parser::Error(v30, (WXML::DOMLib::Parser *)a1, v41, 0); - __cxa_throw( - v30, - (struct type_info *)&`typeinfo for WXML::DOMLib::ParseException, - WXML::DOMLib::ParseException::~ParseException); - } - ++a1[25]; - std::deque::pop_back(v35); - std::deque>::pop_back(Block); - v14 = WXML::DOMLib::Parser::Peek(a1); - WXML::DOMLib::Token::operator=((int)&v47, (int)v14); - if ( !WXML::DOMLib::Token::IsMatch((int)&v47, (WXML::DOMLib::Token *)">", v28) ) - { - v29 = __cxa_allocate_exception(0x18u); - WXML::DOMLib::Parser::Error(v29, (WXML::DOMLib::Parser *)a1, "unexpected token", 0); - __cxa_throw( - v29, - (struct type_info *)&`typeinfo for WXML::DOMLib::ParseException, - WXML::DOMLib::ParseException::~ParseException); - } - ++a1[25]; - std::string::_M_dispose((void **)v40); - WXML::DOMLib::Token::~Token((int)&v47); - goto LABEL_27;// 销毁数据,返回 - } - if ( WXML::DOMLib::Token::IsMatch((int)v43, (WXML::DOMLib::Token *)"/>", (const char *)v25) ) - { - ++a1[25]; - std::deque>::pop_back(Block); - std::deque::pop_back(v35); - LABEL_27: - WXML::DOMLib::Token::~Token((int)&v45); - goto LABEL_41;// 销毁数据,返回 - } - } - v32 = __cxa_allocate_exception(0x18u); - WXML::DOMLib::Parser::Error(v32, (WXML::DOMLib::Parser *)a1, "unexpected token", 0); - __cxa_throw( - v32, - (struct type_info *)&`typeinfo for WXML::DOMLib::ParseException, - WXML::DOMLib::ParseException::~ParseException); - } - if ( WXML::DOMLib::Token::IsMatch((int)v43, (WXML::DOMLib::Token *)" v17 ) - { - v19 = *(_BYTE *)(v18 + v17) - 9; - if ( v19 > 0x17u || ((0x800013u >> v19) & 1) == 0 ) - { - v20 = (_DWORD *)std::deque>::back(a1 + 12); - std::__shared_ptr::__shared_ptr(&v45, v20); - lpuexcpta = (struct _Unwind_Exception *)operator new(0x128u); - WXML::DOMLib::WXMLDom::WXMLDom((int)lpuexcpta); - zcc::shared_ptr::shared_ptr(lpuexcpta); - std::string::operator=(v47, "TEXTNODE"); - WXML::DOMLib::Token::operator=((int)(v47 + 21), (int)v43); - std::vector>::push_back((_DWORD *)(v45 + 72), &v47); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v48); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v46); - break; - } - ++v17; - } - } -LABEL_41: - WXML::DOMLib::Token::~Token((int)v43); -} -// 42199C: variable 'v21' is possibly undefined -// 4219BD: variable 'v22' is possibly undefined -// 421A03: variable 'v23' is possibly undefined -// 421C1C: variable 'v24' is possibly undefined -// 421C58: variable 'v25' is possibly undefined -// 421C71: variable 'v26' is possibly undefined -// 421D7E: variable 'v27' is possibly undefined -// 421DDC: variable 'v28' is possibly undefined -// 55B664: using guessed type int *`typeinfo for'WXML::DOMLib::ParseException; - -//----- (004222D2) -------------------------------------------------------- -void __usercall WXML::DOMLib::Parser::DOMS(WXML::DOMLib::Parser *a1@, WXML::DOMLib::Parser *a2@) -{ - WXML::DOMLib::Token *v2; // eax - const WXML::DOMLib::Token *v3; // [esp+4h] [ebp-C4h] - const char *v4; // [esp+4h] [ebp-C4h] - _DWORD *exception; // [esp+14h] [ebp-B4h] - char v7[24]; // [esp+50h] [ebp-78h] BYREF - int v8; // [esp+68h] [ebp-60h] - - while ( 1 ) - { - WXML::DOMLib::Parser::DOM(a1, a2); - v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); - WXML::DOMLib::Token::Token((int)v7, v2, v3); - if ( v8 == 4 ) - break; - if ( WXML::DOMLib::Token::IsMatch((int)v7, (WXML::DOMLib::Token *)"( - int a1@, - WXML::DOMLib::Parser *a2@, - char *Str, // fileContent - int a4, - int a5, - _DWORD *a6) -{ - char *v7; // [esp+1Ch] [ebp-ACh] - char *Block; // [esp+20h] [ebp-A8h] - void *Blocka; // [esp+20h] [ebp-A8h] - char *v10; // [esp+24h] [ebp-A4h] - int Tokens; // [esp+24h] [ebp-A4h] - int v13; // [esp+6Ch] [ebp-5Ch] - volatile signed __int32 *v14; // [esp+70h] [ebp-58h] BYREF - int v15; // [esp+74h] [ebp-54h] BYREF - volatile signed __int32 *v16; // [esp+78h] [ebp-50h] BYREF - void *v17; // [esp+98h] [ebp-30h] BYREF - - // 清空deque - while ( *(_DWORD *)(a1 + 16) != *(_DWORD *)(a1 + 32) ) - std::deque::pop_back((_DWORD *)(a1 + 8)); - while ( *(_DWORD *)(a1 + 72) != *(_DWORD *)(a1 + 56) ) - std::deque>::pop_back((_DWORD *)(a1 + 48)); - - // a1后偏移 100个字节 - *(_DWORD *)(a1 + 100) = 0; - // a1后偏移 88个字节 begin - v10 = *(char **)(a1 + 88); - // a1后偏移 92个字节 end - v7 = *(char **)(a1 + 92); - if ( v10 != v7 ) - { - Block = *(char **)(a1 + 88); - do - { - // 销毁? - WXML::DOMLib::Token::~Token((int)Block); - Block += 112; - } - // v7 end != Block current - while ( v7 != Block ); - *(_DWORD *)(a1 + 92) = v10; - } - // a1后偏移128字节 - *(_DWORD *)(a1 + 128) = 4; - // a1后偏移328字节 - std::string::_M_assign(a1 + 328, a5); - WXML::DOMLib::Tokenizer::Tokenizer(&v15, Str, a5); - Tokens = WXML::DOMLib::Tokenizer::GetTokens(&v15, (_DWORD *)(a1 + 88), a4, a6); - if ( !Tokens ) - { - Blocka = operator new(0x128u); - WXML::DOMLib::WXMLDom::WXMLDom((int)Blocka); - zcc::shared_ptr::shared_ptr(Blocka); - *(_DWORD *)a1 = v13; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(a1 + 4), (int)v14); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v14); - std::string::operator=(*(unsigned int **)a1, "root"); - // a1 + 48 => a1.offset_48 - std::deque>::push_back(a1 + 48, (_DWORD *)a1); - WXML::DOMLib::Parser::DOMS((WXML::DOMLib::Parser *)a1, a2); - } - std::string::_M_dispose(&v17); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v16); - return Tokens; -} -// 4225E6: variable 'v13' is possibly undefined - -//----- (0042270E) -------------------------------------------------------- -int __fastcall WXML::DOMLib::WXMLDom::RecordAllPath(_DWORD *a1) -{ - char *v1; // eax - int v2; // eax - int v3; // edx - volatile signed __int32 **v4; // ecx - WXML::DOMLib::WXMLDom *v5; // eax - int v7; // [esp+10h] [ebp-78h] - BOOL v8; // [esp+14h] [ebp-74h] - _DWORD *v9; // [esp+14h] [ebp-74h] - unsigned int i; // [esp+14h] [ebp-74h] - void *v12[6]; // [esp+50h] [ebp-38h] BYREF - void *v13[8]; // [esp+68h] [ebp-20h] BYREF - - if ( std::operator==((int)a1, "import") || std::operator==((int)a1, "include") ) - { - std::string::basic_string(v13, (char *)off_5539C8); // src - // this->offset_48 - v8 = std::map::count(a1 + 12, (int)v13); - std::string::_M_dispose(v13); - if ( v8 ) - { - v9 = (_DWORD *)a1[62]; // this->offset_248 - std::string::basic_string(v12, (char *)off_5539C8); // src - // this->offset_48["src"] - v1 = std::map::operator[](a1 + 12, v12); - v2 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v1); - std::string::basic_string((char *)v13, v2); - if ( !std::map::count(v9, (int)v13) ) - { - // v9 = this->offset_248 - v7 = v9[5]; // offset_20 - // v7 = this->offset_248->offset_20 - *(_DWORD *)std::map::operator[](v9, (int)v13) = v7; - std::vector::push_back((int)(v9 + 6), (int)v13); - // this->offset_248.offset_24 - } - std::string::_M_dispose(v13); - std::string::_M_dispose(v12); - } - } - for ( i = 0; ; ++i ) - { - v3 = a1[18]; - if ( i >= (a1[19] - v3) >> 3 ) - break; - v4 = (volatile signed __int32 **)(*(_DWORD *)(v3 + 8 * i) + 252); - // this->offset_248 - *(v4 - 1) = (volatile signed __int32 *)a1[62]; - // a1[63] -> this->offset_252 - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v4, a1[63]); - WXML::DOMLib::WXMLDom::RecordAllPath(v5); - } - return 0; -} -// 4228B2: variable 'v5' is possibly undefined - -//----- (00422902) -------------------------------------------------------- -void __fastcall std::deque>::~deque(int a1) -{ - int v2; // edi - int v3; // edx - int *v4; // esi - int v5; // eax - int v6; // edx - int v7; // edx - void **v8; // esi - unsigned int v9; // edi - void *v10; // eax - int v11; // [esp+1Ch] [ebp-2Ch] - int v12; // [esp+20h] [ebp-28h] - int v13; // [esp+24h] [ebp-24h] - unsigned int v14; // [esp+28h] [ebp-20h] - int v15; // [esp+2Ch] [ebp-1Ch] - - v2 = *(_DWORD *)(a1 + 24); - v13 = *(_DWORD *)(a1 + 16); - v3 = *(_DWORD *)(a1 + 20); - v12 = *(_DWORD *)(a1 + 28); - v15 = v3; - v4 = (int *)(v3 + 4); - v14 = *(_DWORD *)(a1 + 36); - v5 = *(_DWORD *)(a1 + 8); - while ( v14 > (unsigned int)v4 ) - { - v6 = *v4; - v11 = v5; - ++v4; - std::_Destroy_aux::__destroy *>(v6, v6, v6 + 512); - v5 = v11; - } - if ( v15 == v14 ) - { - std::_Destroy_aux::__destroy *>(v3, v5, v2); - } - else - { - std::_Destroy_aux::__destroy *>(v13, v5, v13); - std::_Destroy_aux::__destroy *>(v7, v12, v2); - } - if ( *(_DWORD *)a1 ) - { - v8 = *(void ***)(a1 + 20); - v9 = *(_DWORD *)(a1 + 36) + 4; - while ( v9 > (unsigned int)v8 ) - { - v10 = *v8++; - operator delete(v10); - } - operator delete(*(void **)a1); - } -} -// 422970: variable 'v7' is possibly undefined -// 422979: variable 'v3' is possibly undefined - -//----- (004229B2) -------------------------------------------------------- -int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps( - int *a1, - unsigned int *a2, - WXML::EXPRLib::Parser *a3, - _DWORD *a4, - _DWORD *a5, - char a6, - int a7, - char a8, - int *a9, - char a10, - int a11) -{ - unsigned __int8 **v11; // eax - char *v12; // eax - bool v13; // zf - struct _Unwind_Exception *v14; // eax - struct _Unwind_Exception *v15; // edx - struct _Unwind_Exception *v16; // eax - bool v17; // zf - struct _Unwind_Exception *v18; // eax - struct _Unwind_Exception *v19; // edx - _DWORD *v20; // ecx - _DWORD *v21; // eax - int v22; // eax - int v23; // edx - _DWORD *v24; // eax - _DWORD *v25; // eax - int v26; // edx - const char *v27; // eax - const char *v28; // eax - char *v29; // eax - bool v30; // zf - _DWORD *v31; // eax - _DWORD *v32; // edx - void *v33; // eax - void *v34; // eax - int v35; // eax - std::ostream::sentry *v36; // eax - std::ostream::sentry *v37; // eax - std::ostream::sentry *v38; // eax - std::ostream::sentry *v39; // eax - int v40; // eax - std::ostream::sentry *v41; // eax - std::ostream::sentry *v42; // eax - int v43; // eax - int v44; // eax - char *v46; // [esp+2Ch] [ebp-12Ch] - char *v47; // [esp+30h] [ebp-128h] - int v48; // [esp+3Ch] [ebp-11Ch] - void *exception; // [esp+40h] [ebp-118h] - int v50; // [esp+44h] [ebp-114h] - unsigned int v51; // [esp+48h] [ebp-110h] - char v52; // [esp+4Fh] [ebp-109h] - struct _Unwind_Exception *v53; // [esp+50h] [ebp-108h] - struct _Unwind_Exception *v54; // [esp+50h] [ebp-108h] - int i; // [esp+50h] [ebp-108h] - int v56; // [esp+50h] [ebp-108h] - _DWORD *v57; // [esp+50h] [ebp-108h] - int v58; // [esp+50h] [ebp-108h] - struct _Unwind_Exception *v59; // [esp+54h] [ebp-104h] - unsigned __int8 **v60; // [esp+54h] [ebp-104h] - int v61; // [esp+54h] [ebp-104h] - _DWORD *v62; // [esp+54h] [ebp-104h] - _DWORD *v63; // [esp+54h] [ebp-104h] - _DWORD *v64; // [esp+54h] [ebp-104h] - _DWORD *v65; // [esp+54h] [ebp-104h] - int v66; // [esp+54h] [ebp-104h] - unsigned int v67; // [esp+54h] [ebp-104h] - int v68; // [esp+54h] [ebp-104h] - char *v69; // [esp+54h] [ebp-104h] - int *v70; // [esp+54h] [ebp-104h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-100h] - struct _Unwind_Exception *lpuexcpta; // [esp+58h] [ebp-100h] - struct _Unwind_Exception *lpuexcptb; // [esp+58h] [ebp-100h] - unsigned int lpuexcptc; // [esp+58h] [ebp-100h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-100h] - struct _Unwind_Exception *lpuexcpte; // [esp+58h] [ebp-100h] - _WORD v77[3]; // [esp+9Eh] [ebp-BAh] BYREF - _DWORD *v78; // [esp+A4h] [ebp-B4h] - _DWORD *v79; // [esp+A8h] [ebp-B0h] - _BYTE *v80; // [esp+ACh] [ebp-ACh] BYREF - char *v81; // [esp+B0h] [ebp-A8h] - char *v82; // [esp+B4h] [ebp-A4h] - void *v83[2]; // [esp+C4h] [ebp-94h] BYREF - char v84; // [esp+CCh] [ebp-8Ch] BYREF - int *v85; // [esp+DCh] [ebp-7Ch] BYREF - void *v86[2]; // [esp+E0h] [ebp-78h] BYREF - char v87; // [esp+E8h] [ebp-70h] BYREF - void *Block; // [esp+F8h] [ebp-60h] BYREF - int v89; // [esp+FCh] [ebp-5Ch] BYREF - void *v90; // [esp+100h] [ebp-58h] BYREF - void *v91; // [esp+104h] [ebp-54h] BYREF - int v92; // [esp+108h] [ebp-50h] - _DWORD *v93; // [esp+10Ch] [ebp-4Ch] - int v94; // [esp+110h] [ebp-48h] - int v95; // [esp+114h] [ebp-44h] - int v96; // [esp+118h] [ebp-40h] - _DWORD *v97; // [esp+11Ch] [ebp-3Ch] - void *v98; // [esp+120h] [ebp-38h] - int v99; // [esp+124h] [ebp-34h] - void *v100; // [esp+128h] [ebp-30h] - void *v101; // [esp+12Ch] [ebp-2Ch] - int v102; // [esp+130h] [ebp-28h] - _DWORD *v103; // [esp+134h] [ebp-24h] - void *v104; // [esp+138h] [ebp-20h] - void *v105; // [esp+13Ch] [ebp-1Ch] - int v106; // [esp+140h] [ebp-18h] - _DWORD *v107; // [esp+144h] [ebp-14h] - int *v108; // [esp+148h] [ebp-10h] - void *v109; // [esp+14Ch] [ebp-Ch] - // DealSingleTokenToOps - 0 - if ( a8 ) - v11 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)a5); - else - v11 = (unsigned __int8 **)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)a5); - v12 = (char *)*v11; - *(_DWORD *)&v77[1] = 0; - v78 = 0; - v79 = 0; - LOBYTE(v77[0]) = 0; - v48 = WXML::StringTemplating::Deal(v12, (int)a2, (char **)&v77[1], v77); - // DealSingleTokenToOps - 5 - if ( v48 ) - { - exception = __cxa_allocate_exception(0x18u); - std::string::basic_string(&Block, "did you forget }}, ' or \""); - std::string::basic_string((void **)&v85, (char *)&byte_5537CA); // '\0' - WXML::DOMLib::WXMLDom::Error((int)exception, a1, (int)a5, (int *)&v85, (int *)&Block); - std::string::_M_dispose((void **)&v85); - std::string::_M_dispose(&Block); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - // DealSingleTokenToOps - 10 - if ( a8 ) - { - std::string::basic_string(&Block, "plain_text_marker"); - v59 = (struct _Unwind_Exception *)(a11 + 4); - v53 = *(struct _Unwind_Exception **)(a11 + 8); - lpuexcpt = (struct _Unwind_Exception *)(a11 + 4); - // 寻找key为plain_text_marker的元素 - while ( v53 ) - { - v13 = (unsigned __int8)std::operator<((int)v53 + 16, (int)&Block) == 0; - v14 = lpuexcpt; - v15 = (struct _Unwind_Exception *)*((_DWORD *)v53 + 3); - if ( v13 ) - { - v15 = (struct _Unwind_Exception *)*((_DWORD *)v53 + 2); - if ( v13 ) - v14 = v53; - } - v53 = v15; - lpuexcpt = v14; - } - if ( v59 != lpuexcpt ) - { - v13 = (unsigned __int8)std::operator<((int)&Block, (int)lpuexcpt + 16) == 0; - v16 = lpuexcpt; - if ( !v13 ) - v16 = (struct _Unwind_Exception *)(a11 + 4); - lpuexcpt = v16; - } - // 寻找结束 - - std::string::_M_dispose(&Block); - if ( v59 != lpuexcpt ) - { - std::string::basic_string(&Block, "plain_text_marker"); - lpuexcpta = *(struct _Unwind_Exception **)(a11 + 8); - v54 = (struct _Unwind_Exception *)(a11 + 4); - while ( lpuexcpta ) - { - v17 = (unsigned __int8)std::operator<((int)lpuexcpta + 16, (int)&Block) == 0; - v18 = v54; - v19 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 3); - if ( v17 ) - { - v19 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 2); - if ( v17 ) - v18 = lpuexcpta; - } - lpuexcpta = v19; - v54 = v18; - } - if ( v59 == v54 || (unsigned __int8)std::operator<((int)&Block, (int)v54 + 16) ) - std::__throw_out_of_range((std::out_of_range *)"map::at"); - - std::string::basic_string((char *)&v80, (int)v54 + 40); - std::string::_M_dispose(&Block); - v87 = 0; - // void *v86[2] - v86[0] = &v87; - v86[1] = 0; - v85 = 0; - std::string::operator=((unsigned int *)v86, (char *)&byte_5537CA); // '\0' - lpuexcptb = *(struct _Unwind_Exception **)&v77[1]; - if ( *(_DWORD **)&v77[1] != v78 && **(_DWORD **)&v77[1] == 1 ) - { - if ( v78 == v79 ) - { - std::vector::_M_realloc_insert( - (char **)&v77[1], - *(char **)&v77[1], - &v85); - } - else - { - Block = &v77[1]; - v89 = (int)v85; - std::string::basic_string((char *)&v90, (int)v86); - v20 = v78 + 1; - v21 = v78 - 6; - *v78 = *(v78 - 7); - std::string::basic_string(v20, v21); - v60 = (unsigned __int8 **)(v78 - 7); - v22 = ((char *)(v78 - 7) - (char *)lpuexcptb) >> 2; - v78 += 7; - for ( i = -1227133513 * v22; i > 0; --i ) - { - v60 -= 7; - v60[7] = *v60; - std::string::operator=(v60 + 8, (int)(v60 + 1)); - } - *(_DWORD *)lpuexcptb = v89; - std::string::operator=((unsigned __int8 **)lpuexcptb + 1, (int)&v90); - std::string::_M_dispose(&v90); - } - } - if ( *(_DWORD **)&v77[1] != v78 && *(v78 - 7) == 1 ) - std::vector::push_back((char **)&v77[1], &v85); - lpuexcptc = 1; // 当前下标 - // int v23 - v23 = 0; - while ( -1227133513 * (((int)v78 - *(_DWORD *)&v77[1]) >> 2) > lpuexcptc ) - { - v61 = v23 + 28; - v24 = (_DWORD *)(*(_DWORD *)&v77[1] + v23 + 28); // cur - if ( *v24 == 1 ) - { - if ( !*(_DWORD *)(v23 + *(_DWORD *)&v77[1]) ) - // pre - std::string::append((_DWORD *)(v23 + *(_DWORD *)&v77[1] + 4), (int)&v80); - } - else if ( !*v24 && *(_DWORD *)(*(_DWORD *)&v77[1] + v23) == 1 ) - { - v56 = (int)(v24 + 1); - std::string::basic_string((char *)v83, (int)&v80); - std::string::append(v83, v56); - // cur - std::string::operator=((unsigned __int8 **)(*(_DWORD *)&v77[1] + v61 + 4), (int)v83); - std::string::_M_dispose(v83); - } - ++lpuexcptc; - v23 = v61; - } - std::string::_M_dispose(v86); - std::string::_M_dispose((void **)&v80); - } - } // end a8 - // DealSingleTokenToOps - 15 - if ( a7 ) - { - v25 = *(_DWORD **)&v77[1]; - v26 = 0; - while ( v78 != v25 ) - { - v26 -= (*v25 == 0) - 1; - v25 += 7; - } - if ( v26 != a7 ) - { - // a5.offset_56 - a5[14] = -3; - std::string::operator=(a5 + 15, "the very attr must be an expression (surrouned by `{{..}}`)"); - v48 = -1; - goto LABEL_112; // 销毁数据,返回v48 - } - } - // DealSingleTokenToOps - 20 - if ( v78 == *(_DWORD **)&v77[1] ) - { - v89 = (int)&v91; - v90 = 0; - LOBYTE(v91) = 0; - Block = 0; - std::string::operator=((unsigned int *)&v89, (char *)&byte_5537CA); - Block = 0; - std::vector::push_back((char **)&v77[1], &Block); - std::string::_M_dispose((void **)&v89); - } - // DealSingleTokenToOps - 25 - v52 = 1; - if ( (unsigned int)v78 - *(_DWORD *)&v77[1] <= 0x1C ) - { - v52 = 0; - if ( (_DWORD *)((char *)v78 - *(_DWORD *)&v77[1]) == (_DWORD *)28 ) - v52 = a8 & (**(_DWORD **)&v77[1] == 1); - } - lpuexcptd = (WXML::EXPRLib::Parser *)((char *)a3 + 8); - std::operator<<>((WXML::EXPRLib::Parser *)((char *)a3 + 8), "Z("); - v80 = 0; - v81 = 0; - v82 = 0; - if ( v52 ) - { - std::operator<<>(lpuexcptd, "[a,"); - ++a9[1]; - } - // DealSingleTokenToOps - 30 - v27 = (const char *)&off_553AE9; // "nt_" - v51 = 0; - if ( a8 ) - v27 = "t_"; - v47 = (char *)v27; - v28 = &byte_5537CA; // '\0' - if ( a6 ) - v28 = (const char *)&unk_553AED; // "_d" - v46 = (char *)v28; - while ( -1227133513 * (((int)v78 - *(_DWORD *)&v77[1]) >> 2) > v51 ) - { - // v51 下标,在递增 - if ( v51 ) - // a3 - std::operator<<>(lpuexcptd, ","); - v83[1] = 0; - v84 = 0; - v50 = 28 * v51; - v62 = (_DWORD *)(*(_DWORD *)&v77[1] + 28 * v51); - v83[0] = &v84; - v29 = "s_"; - if ( *v62 ) - v29 = "e_"; - std::string::operator=((unsigned int *)v83, v29); - std::string::append(v83, v47); // v27 - std::string::append(v83, (int)(v62 + 1)); - std::string::append(v83, v46); // v28 - v57 = (_DWORD *)a4[2]; - v63 = a4 + 1; - - // find - while ( v57 ) - { - v30 = (unsigned __int8)std::operator<((int)(v57 + 4), (int)v83) == 0; - v31 = v63; - v32 = (_DWORD *)v57[3]; - if ( v30 ) - { - v32 = (_DWORD *)v57[2]; - if ( v30 ) - v31 = v57; - } - v57 = v32; - v63 = v31; - } - - if ( a4 + 1 == v63 || (unsigned __int8)std::operator<((int)v83, (int)(v63 + 4)) ) - { - if ( *(_DWORD *)(*(_DWORD *)&v77[1] + 28 * v51) ) - { - Block = 0; - v90 = 0; - v91 = 0; - v92 = 0; - v93 = 0; - v94 = 0; - v95 = 0; - v96 = 0; - v97 = 0; - v89 = 8; - Block = operator new(0x20u); - v64 = (char *)Block + ((2 * v89 - 2) & 0xFFFFFFFC); - v33 = operator new(0x200u); - v91 = v33; - v92 = (int)v33 + 512; - *v64 = v33; - v93 = v64; - v97 = v64; - v95 = (int)v33; - v96 = (int)v33 + 512; - v90 = v33; - v94 = (int)v33; - v98 = 0; - v100 = 0; - v101 = 0; - v102 = 0; - v103 = 0; - v104 = 0; - v105 = 0; - v106 = 0; - v107 = 0; - v99 = 8; - v98 = operator new(0x20u); - v65 = (char *)v98 + ((2 * v99 - 2) & 0xFFFFFFFC); - v34 = operator new(0x200u); - v101 = v34; - v102 = (int)v34 + 512; - *v65 = v34; - v103 = v65; - v107 = v65; - v105 = v34; - v106 = (int)v34 + 512; - v100 = v34; - v104 = v34; - v108 = 0; - v109 = 0; - std::string::basic_string((void **)&v85, (char *)&byte_5537CA); // '\0' - v66 = WXML::EXPRLib::Parser::Parse( - (int)&Block, - (char **)(*(_DWORD *)&v77[1] + v50 + 4), // v77[i].offset_4 - (int)&v85, - 1, - 1, - a2, - a6); - std::string::_M_dispose((void **)&v85); - if ( v66 ) - { - a5[14] = -3; - std::string::_M_assign((int)(a5 + 15), (int)a2); - std::operator<<>(lpuexcptd, "undefined"); - WXML::EXPRLib::Parser::~Parser((int)&Block); - std::string::_M_dispose(v83); - break; - } - v85 = v108; - v86[0] = v109; - if ( v109 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)v109); - /* - */ - v70 = v85; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v86); - std::string::basic_string((void **)&v85, (char *)&byte_5537CA); - WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(v70, (int)a3, (int)&v85, (_BYTE *)v77 + 1); - std::string::_M_dispose((void **)&v85); - WXML::EXPRLib::Parser::~Parser((int)&Block); - } - else - { - std::operator<<>(lpuexcptd, "[3,'"); - WXML::DOMLib::removern(&Block, (_DWORD *)(*(_DWORD *)&v77[1] + v50 + 4)); - WXML::Rewrite::ToStringCode((int *)&Block, (int)a3); - std::operator<<>(lpuexcptd, "']"); - std::string::_M_dispose(&Block); - } - v68 = *a9; // a9 WXML::DOMLib::RVMOpCodePositionRecorder * - v43 = -1; - if ( v52 ) - v43 = a9[1]; - v58 = v43; - std::string::basic_string((char *)&Block, (int)v83); - v94 = v68; - v95 = v58; - v69 = v81; - if ( v81 == v82 ) - { - std::vector>::_M_realloc_insert>( - &v80, - v81, - &Block); - } - else - { - std::string::basic_string(v81, &Block); - v44 = v94; - *((_DWORD *)v69 + 7) = v95; - *((_DWORD *)v69 + 6) = v44; - v81 += 32; - } - std::string::_M_dispose(&Block); - } - else - { - if ( v63[11] == -1 ) - { - if ( a10 ) - { - std::operator<<>(lpuexcptd, "z["); - v39 = (std::ostream::sentry *)std::ostream::operator<<(v63[10]); - std::operator<<>(v39, "][1]"); - goto LABEL_107; // a9.offset_4++ 下个循环 - } - std::operator<<>(lpuexcptd, "z["); - v40 = v63[10]; - } - else - { - std::operator<<>(lpuexcptd, "z["); - v42 = (std::ostream::sentry *)std::ostream::operator<<(v63[10]); - if ( a10 ) - std::operator<<>(v42, "][1]["); - else - std::operator<<>(v42, "]["); - v40 = v63[11]; - } - v41 = (std::ostream::sentry *)std::ostream::operator<<(v40); - std::operator<<>(v41, "]"); - } -LABEL_107: - ++a9[1]; - std::string::_M_dispose(v83); - ++v51; - } - // DealSingleTokenToOps - 35 - if ( v52 ) - std::operator<<>(lpuexcptd, "]"); - v35 = *a9; - // a5->offset_56 - if ( a5[14] == -1 ) - a5[14] = v35; - v67 = 0; - a9[1] = 0; - *a9 = v35 + 1; - while ( (v81 - v80) >> 5 > v67 ) - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_emplace_unique>( - a4, - (int)&v80[32 * v67++]); - std::vector>::~vector((void ***)&v80); - // DealSingleTokenToOps - 40 - if ( a10 ) - { - lpuexcpte = std::operator<<>(lpuexcptd, ",['"); - WXML::Rewrite::ToStringCode((int)&Block, a1); - v36 = std::operator<<(lpuexcpte, (int *)&Block); - std::operator<<>(v36, "',"); - v37 = (std::ostream::sentry *)std::ostream::operator<<(a5[2]); - std::operator<<>(v37, ","); - v38 = (std::ostream::sentry *)std::ostream::operator<<(a5[3]); - std::operator<<>(v38, "])\n"); - std::string::_M_dispose(&Block); - } - else - { - std::operator<<>(lpuexcptd, ")\n"); - } - // DealSingleTokenToOps - 45 -LABEL_112: - std::vector::~vector((void **)&v77[1]); - return v48; -} -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 553AE9: using guessed type void *off_553AE9; -// 55B66C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; - -//----- (00423B6C) -------------------------------------------------------- -int __thiscall WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( - _DWORD *this, - int *a2, - unsigned int *a3, - WXML::EXPRLib::Parser *a4, - _DWORD *a5, - int *a6, - unsigned __int8 a7, - int a8) -{ - int i; // esi - unsigned int j; // esi - - if ( std::operator==((int)this, "TEXTNODE") ) - { - WXML::DOMLib::WXMLDom::DealSingleTokenToOps(a2, a3, a4, a5, this + 21, 0, 0, 1, a6, a7, a8); - } - else - { - // this->offset_60 this->offset_52 - for ( i = this[15]; (_DWORD *)i != this + 13; i = std::_Rb_tree_increment(i) ) - { - // i + 40 -> second - if ( *(_DWORD *)(i + 60) - && !std::operator==((int)this, "import") - && !std::operator==((int)this, "include") ) - { - if ( std::operator==((int)this, "wx-template") && std::operator==(i + 16, "data") - || std::operator==((int)this, "wx-scope") && std::operator==(i + 16, "wx:scope-data") ) - { - WXML::DOMLib::WXMLDom::DealSingleTokenToOps(a2, a3, a4, a5, (_DWORD *)(i + 40), 1, 1, 0, a6, a7, a8); - } - else - { - WXML::DOMLib::WXMLDom::DealSingleTokenToOps(a2, a3, a4, a5, (_DWORD *)(i + 40), 0, 0, 0, a6, a7, a8); - } - } - } - // this[18] -> this->offset_72 - for ( j = 0; j < (this[19] - this[18]) >> 3; ++j ) - WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord((int)a2, (int)a3, a4, (int)a5, (int)a6, a7, a8); - } - return 0; -} - -//----- (00423D86) -------------------------------------------------------- -int __thiscall WXML::DOMLib::WXMLDom::RenderNonDefine( - int this, - int *a2, - int *a3, - int a4, - int *a5, - int a6, - int *a7, - int *a8, - int *a9, - int *a10, - int *a11, - char a12, - unsigned __int8 a13, - int a14, - int a15) -{ - std::ostream::sentry *v15; // eax - std::ostream::sentry *v16; // eax - std::ostream::sentry *v17; // eax - std::ostream::sentry *v18; // eax - std::ostream::sentry *v19; // eax - std::ostream::sentry *v20; // eax - int v21; // eax - void *v22; // eax - std::ostream::sentry *v23; // eax - std::ostream::sentry *v24; // eax - std::ostream::sentry *v25; // eax - std::ostream::sentry *v26; // eax - std::ostream::sentry *v27; // eax - std::ostream::sentry *v28; // eax - std::ostream::sentry *v29; // eax - std::ostream::sentry *v30; // eax - std::ostream::sentry *v31; // eax - char *v32; // eax - int v33; // eax - char *v34; // eax - int v35; // eax - char *v36; // eax - char *v37; // eax - char *v38; // eax - std::ostream::sentry *v39; // eax - std::ostream::sentry *v40; // eax - std::ostream::sentry *v41; // eax - std::ostream::sentry *v42; // eax - std::ostream::sentry *v43; // eax - std::ostream::sentry *v44; // eax - std::ostream::sentry *v45; // eax - int v46; // eax - char *v47; // eax - char *v48; // eax - std::ostream::sentry *v49; // eax - std::ostream::sentry *v50; // eax - std::ostream::sentry *v51; // eax - char *v52; // eax - std::ostream::sentry *v53; // eax - std::ostream::sentry *v54; // eax - std::ostream::sentry *v55; // eax - std::ostream::sentry *v56; // eax - std::ostream::sentry *v57; // eax - std::ostream::sentry *v58; // eax - std::ostream::sentry *v59; // eax - std::ostream::sentry *v60; // eax - std::ostream::sentry *v61; // eax - std::ostream::sentry *v62; // eax - std::ostream::sentry *v63; // eax - std::ostream::sentry *v64; // eax - std::ostream::sentry *v65; // eax - std::ostream::sentry *v66; // eax - std::ostream::sentry *v67; // eax - char *v68; // eax - int *v69; // eax - std::ostream::sentry *v70; // eax - std::ostream::sentry *v71; // eax - void **v72; // ecx - char *v73; // eax - char *v74; // eax - int v75; // eax - int StrID; // eax - std::ostream::sentry *v77; // eax - std::ostream::sentry *v78; // eax - int v79; // eax - std::ostream::sentry *v80; // eax - std::ostream::sentry *v81; // eax - std::ostream::sentry *v82; // eax - std::ostream::sentry *v83; // eax - std::ostream::sentry *v84; // eax - std::ostream::sentry *v85; // eax - std::ostream::sentry *v86; // eax - std::ostream::sentry *v87; // eax - std::ostream::sentry *v88; // eax - std::ostream::sentry *v89; // eax - std::ostream::sentry *v90; // eax - char *v91; // eax - int *v92; // eax - std::ostream::sentry *v93; // eax - std::ostream::sentry *v94; // eax - char *v95; // eax - std::ostream::sentry *v96; // eax - std::ostream::sentry *v97; // eax - std::ostream::sentry *v98; // eax - std::ostream::sentry *v99; // eax - std::ostream::sentry *v100; // eax - std::ostream::sentry *v101; // eax - std::ostream::sentry *v102; // eax - std::ostream::sentry *v103; // eax - std::ostream::sentry *v104; // eax - std::ostream::sentry *v105; // eax - int v106; // eax - std::ostream::sentry *v107; // eax - std::ostream::sentry *v108; // eax - std::ostream::sentry *v109; // eax - std::ostream::sentry *v110; // eax - std::ostream::sentry *v111; // eax - std::ostream::sentry *v112; // eax - std::ostream::sentry *v113; // eax - std::ostream::sentry *v114; // eax - std::ostream::sentry *v115; // eax - std::ostream::sentry *v116; // eax - char *v117; // eax - std::ostream::sentry *v118; // eax - std::ostream::sentry *v119; // eax - std::ostream::sentry *v120; // eax - char *v121; // eax - std::ostream::sentry *v122; // eax - std::ostream::sentry *v123; // eax - char *v124; // eax - std::ostream::sentry *v125; // eax - std::ostream::sentry *v126; // eax - std::ostream::sentry *v127; // eax - std::ostream::sentry *v128; // eax - std::ostream::sentry *v129; // eax - std::ostream::sentry *v130; // eax - std::ostream::sentry *v131; // eax - std::ostream::sentry *v132; // eax - std::ostream::sentry *v133; // eax - std::ostream::sentry *v134; // eax - std::ostream::sentry *v135; // eax - std::ostream::sentry *v136; // eax - std::ostream::sentry *v137; // eax - std::ostream::sentry *v138; // eax - std::ostream::sentry *v139; // eax - std::ostream::sentry *v140; // eax - std::ostream::sentry *v141; // eax - std::ostream::sentry *v142; // eax - std::ostream::sentry *v143; // eax - std::ostream::sentry *v144; // eax - std::ostream::sentry *v145; // eax - std::ostream::sentry *v146; // eax - std::ostream::sentry *v147; // eax - std::ostream::sentry *v148; // eax - std::ostream::sentry *v149; // eax - std::ostream::sentry *v150; // eax - std::ostream::sentry *v151; // eax - std::ostream::sentry *v152; // eax - int v153; // eax - char *v154; // eax - std::ostream::sentry *v155; // eax - char *v156; // eax - std::ostream::sentry *v157; // eax - std::ostream::sentry *v158; // eax - int j; // eax - int v160; // eax - int v161; // eax - char v162; // dl - std::ostream::sentry *v163; // eax - std::ostream::sentry *v164; // eax - int *v165; // eax - std::ostream::sentry *v166; // eax - bool v167; // zf - int *v168; // eax - std::ostream::sentry *v169; // edx - int *v170; // eax - unsigned __int8 **v171; // ecx - char *v172; // edx - _DWORD *v173; // eax - _DWORD *v174; // eax - std::ostream::sentry *v175; // eax - std::ostream::sentry *v176; // eax - std::ostream::sentry *v177; // eax - std::ostream::sentry *v178; // eax - std::ostream::sentry *v179; // eax - std::ostream::sentry *v180; // eax - char *v181; // edx - std::ostream::sentry *v182; // eax - std::ostream::sentry *v183; // eax - std::ostream::sentry *v184; // eax - std::ostream::sentry *v185; // eax - std::ostream::sentry *v186; // eax - std::ostream::sentry *v187; // eax - std::ostream::sentry *v188; // eax - std::ostream::sentry *v189; // eax - std::ostream::sentry *v190; // eax - std::ostream::sentry *v191; // eax - std::ostream::sentry *v192; // eax - std::ostream::sentry *v193; // eax - std::ostream::sentry *v194; // eax - std::ostream::sentry *v195; // eax - std::ostream::sentry *v196; // eax - std::ostream::sentry *v197; // eax - std::ostream::sentry *v198; // eax - std::ostream::sentry *v199; // eax - std::ostream::sentry *v200; // eax - std::ostream::sentry *v201; // eax - std::ostream::sentry *v202; // eax - std::ostream::sentry *v203; // eax - std::ostream::sentry *v204; // eax - std::ostream::sentry *v205; // eax - std::ostream::sentry *v206; // eax - std::ostream::sentry *v207; // eax - std::ostream::sentry *v208; // eax - std::ostream::sentry *v209; // eax - std::ostream::sentry *v210; // eax - std::ostream::sentry *v211; // eax - std::ostream::sentry *v212; // eax - std::ostream::sentry *v213; // eax - std::ostream::sentry *v214; // eax - std::ostream::sentry *v215; // eax - std::ostream::sentry *v216; // eax - std::ostream::sentry *v217; // eax - std::ostream::sentry *v218; // eax - std::ostream::sentry *v219; // eax - std::ostream::sentry *v220; // eax - std::ostream::sentry *v221; // eax - std::ostream::sentry *v222; // eax - std::ostream::sentry *v223; // eax - std::ostream::sentry *v224; // eax - std::ostream::sentry *v225; // eax - std::ostream::sentry *v226; // eax - std::ostream::sentry *v227; // eax - std::ostream::sentry *v228; // eax - std::ostream::sentry *v229; // eax - std::ostream::sentry *v230; // eax - void **p_Str; // ecx - int i; // eax - std::ostream::sentry *v233; // eax - std::ostream::sentry *v234; // eax - std::ostream::sentry *v235; // eax - std::ostream::sentry *v236; // eax - std::ostream::sentry *v237; // eax - std::ostream::sentry *v238; // eax - std::ostream::sentry *v239; // eax - std::ostream::sentry *v241; // [esp+0h] [ebp-388h] - char *v242; // [esp+4h] [ebp-384h] - const WXML::DOMLib::Token *v243; // [esp+4h] [ebp-384h] - const WXML::DOMLib::Token *v244; // [esp+4h] [ebp-384h] - void *exception; // [esp+5Ch] [ebp-32Ch] - void *v246; // [esp+60h] [ebp-328h] - void *v247; // [esp+64h] [ebp-324h] - void *v248; // [esp+68h] [ebp-320h] - void *v249; // [esp+6Ch] [ebp-31Ch] - void *v250; // [esp+70h] [ebp-318h] - void *v251; // [esp+74h] [ebp-314h] - void *v252; // [esp+78h] [ebp-310h] - void *v253; // [esp+7Ch] [ebp-30Ch] - void *v254; // [esp+80h] [ebp-308h] - void *v255; // [esp+84h] [ebp-304h] - std::ostream::sentry *v256; // [esp+88h] [ebp-300h] - std::ostream::sentry *v257; // [esp+88h] [ebp-300h] - std::ostream::sentry *v258; // [esp+88h] [ebp-300h] - char *v259; // [esp+88h] [ebp-300h] - char Str1; // [esp+90h] [ebp-2F8h] - char *Str1a; // [esp+90h] [ebp-2F8h] - char *Str1g; // [esp+90h] [ebp-2F8h] - char *Str1h; // [esp+90h] [ebp-2F8h] - char *Str1b; // [esp+90h] [ebp-2F8h] - char *Str1c; // [esp+90h] [ebp-2F8h] - char *Str1d; // [esp+90h] [ebp-2F8h] - char *Str1e; // [esp+90h] [ebp-2F8h] - char Str1f; // [esp+90h] [ebp-2F8h] - bool v269; // [esp+96h] [ebp-2F2h] - bool v270; // [esp+97h] [ebp-2F1h] - std::ostream::sentry *v271; // [esp+9Ch] [ebp-2ECh] - std::ostream::sentry *v272; // [esp+9Ch] [ebp-2ECh] - std::ostream::sentry *m; // [esp+9Ch] [ebp-2ECh] - std::ostream::sentry *v274; // [esp+9Ch] [ebp-2ECh] - std::ostream::sentry *v275; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v276; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v277; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v278; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v279; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v280; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v281; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v282; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v283; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v284; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v285; // [esp+A0h] [ebp-2E8h] - int *jj; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v287; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *ii; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v289; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v290; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v291; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v292; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v293; // [esp+A0h] [ebp-2E8h] - std::ostream::sentry *v294; // [esp+A4h] [ebp-2E4h] - std::ostream::sentry *v295; // [esp+A4h] [ebp-2E4h] - std::ostream::sentry *v296; // [esp+A4h] [ebp-2E4h] - std::ostream::sentry *v297; // [esp+A4h] [ebp-2E4h] - int *v298; // [esp+A4h] [ebp-2E4h] - std::ostream::sentry *k; // [esp+A4h] [ebp-2E4h] - char v300; // [esp+A4h] [ebp-2E4h] - std::ostream::sentry *v301; // [esp+A4h] [ebp-2E4h] - std::ostream::sentry *v302; // [esp+A4h] [ebp-2E4h] - int *v303; // [esp+A4h] [ebp-2E4h] - int n; // [esp+A4h] [ebp-2E4h] - std::ostream::sentry *v305; // [esp+A4h] [ebp-2E4h] - int *lpuexcpta; // [esp+A8h] [ebp-2E0h] - int *lpuexcptb; // [esp+A8h] [ebp-2E0h] - int *lpuexcptc; // [esp+A8h] [ebp-2E0h] - int *lpuexcptd; // [esp+A8h] [ebp-2E0h] - int *lpuexcpte; // [esp+A8h] [ebp-2E0h] - void *v312[6]; // [esp+ECh] [ebp-29Ch] BYREF - void *v313[6]; // [esp+104h] [ebp-284h] BYREF - void *v314[6]; // [esp+11Ch] [ebp-26Ch] BYREF - void *v315[6]; // [esp+134h] [ebp-254h] BYREF - void *v316[2]; // [esp+14Ch] [ebp-23Ch] BYREF - char v317; // [esp+154h] [ebp-234h] BYREF - int v318; // [esp+164h] [ebp-224h] BYREF - int v319; // [esp+168h] [ebp-220h] - char v320; // [esp+16Ch] [ebp-21Ch] BYREF - int v321; // [esp+17Ch] [ebp-20Ch] BYREF - int v322; // [esp+180h] [ebp-208h] - char v323; // [esp+184h] [ebp-204h] BYREF - int v324; // [esp+194h] [ebp-1F4h] BYREF - char *v325; // [esp+198h] [ebp-1F0h] - int v326; // [esp+19Ch] [ebp-1ECh] BYREF - int v327; // [esp+1ACh] [ebp-1DCh] BYREF - int v328; // [esp+1B0h] [ebp-1D8h] - char v329[16]; // [esp+1B4h] [ebp-1D4h] BYREF - int *v330; // [esp+1C4h] [ebp-1C4h] BYREF - int v331; // [esp+1C8h] [ebp-1C0h] BYREF - int v332[4]; // [esp+1CCh] [ebp-1BCh] BYREF - int v333; // [esp+1DCh] [ebp-1ACh] BYREF - int v334; // [esp+1E0h] [ebp-1A8h] - char v335[16]; // [esp+1E4h] [ebp-1A4h] BYREF - int v336; // [esp+1F4h] [ebp-194h] BYREF - int v337; // [esp+1F8h] [ebp-190h] - char v338; // [esp+1FCh] [ebp-18Ch] BYREF - int v339; // [esp+20Ch] [ebp-17Ch] BYREF - int v340; // [esp+210h] [ebp-178h] - int v341[4]; // [esp+214h] [ebp-174h] BYREF - int v342[2]; // [esp+224h] [ebp-164h] BYREF - char v343; // [esp+22Ch] [ebp-15Ch] BYREF - char *Str; // [esp+23Ch] [ebp-14Ch] BYREF - int v345; // [esp+240h] [ebp-148h] BYREF - char v346[108]; // [esp+244h] [ebp-144h] BYREF - int v347[2]; // [esp+2B0h] [ebp-D8h] BYREF - char v348[4]; // [esp+2B8h] [ebp-D0h] BYREF - char v349[12]; // [esp+2BCh] [ebp-CCh] BYREF - _DWORD v350[47]; // [esp+2C8h] [ebp-C0h] BYREF - - /* - int this, - int *a2, - int *a3, - int a4, - int *a5, - int a6, - int *a7, - int *a8, - int *a9, - int *a10, - int *a11, - char a12, - unsigned __int8 a13, - int a14, - int a15) - */ - // RenderNonDefine - 0 - // this int - // this + 28 => this.offset_28 - if ( a13 && *(_DWORD *)(this + 28) ) - { - // a6 + 8 => a6.offset_8 - v294 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "cs.push(\""); - WXML::Rewrite::ToStringCode((int)v347, a2); - v15 = std::operator<<(v294, v347); - v16 = std::operator<<>(v15, ":"); - // this + 24 => this.offset_24 - v17 = std::operator<<(v16, (int *)(this + 24)); - std::operator<<>(v17, ":"); - // this + 92 => this.offset_92 - v18 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); - std::operator<<>(v18, ":"); - // this + 96 => this.offset_96 - v19 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); - v20 = std::operator<<>(v19, "\")"); - std::operator<<>(v20, a12); - std::string::_M_dispose((void **)v347); - } - Str1 = std::operator==(this, "TEXTNODE"); - if ( Str1 ) - { - // this int - // this.offset_140 - v21 = *(_DWORD *)(this + 140); - if ( v21 == -3 ) - { - exception = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)v347, (char *)&byte_5537CA); - WXML::DOMLib::WXMLDom::Error((int)exception, a2, this + 84, v347, (int *)(this + 144)); - std::string::_M_dispose((void **)v347); - v22 = exception; - goto LABEL_9; - } - if ( v21 == -1 ) - { - v246 = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)v347, "value not set"); - std::string::basic_string((void **)&Str, (char *)&byte_5537CA); - WXML::DOMLib::WXMLDom::Error((int)v246, a2, this + 84, (int *)&Str, v347); - std::string::_M_dispose((void **)&Str); - std::string::_M_dispose((void **)v347); - v22 = v246; - goto LABEL_9; - } - v23 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); - v24 = std::operator<<(v23, a5); - std::operator<<>(v24, "=_oz(z,"); - v25 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 140)); - v26 = std::operator<<>(v25, ","); - v27 = std::operator<<(v26, a8); - v28 = std::operator<<>(v27, ","); - v29 = std::operator<<(v28, a9); - v30 = std::operator<<>(v29, ","); - v31 = std::operator<<(v30, a10); - v242 = ")"; -LABEL_68: - v87 = std::operator<<>(v31, v242); -LABEL_69: - std::operator<<>(v87, a12); - goto LABEL_169; - } // TEXTNODE end - // RenderNonDefine - 5 - if ( !(unsigned __int8)std::operator!=(this, "wx-define") - || !(unsigned __int8)std::operator!=(this, "wx-import") - || !(unsigned __int8)std::operator!=(this, "import") - || !(unsigned __int8)std::operator!=(this, "template") ) - { - goto LABEL_169; - } - - - if ( std::operator==(this, "wx-repeat") ) - { - std::string::basic_string(v312, "items"); // target1 - // this int - v295 = (std::ostream::sentry *)(this + 48); - v275 = (std::ostream::sentry *)(this + 52); - if ( (_DWORD *)(this + 52) == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)(this + 48), // this->offset_48 - (int)v312) ) // "items" - std::string::operator=((unsigned int *)v312, "wx:for-items"); - std::string::basic_string(v313, "index"); // target2 - if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v295, // this->offset_48 - (int)v313) ) // "index" - std::string::operator=((unsigned int *)v313, "wx:for-index"); - std::string::basic_string(v314, "item"); // target3 - if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v295, // this->offset_48 - (int)v314) ) // "item" - std::string::operator=((unsigned int *)v314, "wx:for-item"); - std::string::basic_string(v315, "wx:key"); - v316[0] = &v317; - v318 = (int)&v320; - v321 = (int)&v323; - v316[1] = 0; - v317 = 0; - v319 = 0; - v320 = 0; - v322 = 0; - v323 = 0; - if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v295, // this + 48 - (int)v312) ) // target1 - { - std::string::_M_dispose((void **)&v321); - std::string::_M_dispose((void **)&v318); - std::string::_M_dispose(v316); - std::string::_M_dispose(v315); - std::string::_M_dispose(v314); - std::string::_M_dispose(v313); - std::string::_M_dispose(v312); - return 0; - } - if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v295, // this + 48 - (int)v313) ) // target2 - { - // target2_1 - std::string::operator=((unsigned int *)&v318, "index"); - } - else - { - // this->offset_48[v313] - v32 = std::map::operator[](v295, (int)v313); - v33 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v32); - std::string::_M_assign((int)&v318, v33); - } - if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v295, // this + 48 - (int)v314) ) // target3 - { - // target3_1 - std::string::operator=((unsigned int *)&v321, "item"); - } - else - { - // this->offset_48[v314] - v34 = std::map::operator[](v295, (int)v314); - v35 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v34); - std::string::_M_assign((int)&v321, v35); - } - - if ( v275 != (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v295, - (int)v313) //target2 - // +14 -> offset_14 * 4 -> offset_56 - && *((_DWORD *)std::map::operator[](v295, (int)v313) + 14) == -3 - && (a14 & 1) == 0 ) - { - v250 = __cxa_allocate_exception(0x18u); - // char * + 60 -> offset 60 - lpuexcpta = (int *)(std::map::operator[](v295, (int)v313) + 60); - v36 = std::map::operator[](v295, (int)v313); - WXML::DOMLib::WXMLDom::Error((int)v250, a2, (int)v36, (int *)v313, lpuexcpta); - __cxa_throw( - v250, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - - if ( v275 != (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v295, // this->offset_48 - (int)v315) // "wx:key" - && *((_DWORD *)std::map::operator[](v295, (int)v315) + 14) == -3 - && (a14 & 1) == 0 ) - { - v249 = __cxa_allocate_exception(0x18u); - // char * + 60 -> offset 60 - lpuexcptb = (int *)(std::map::operator[](v295, (int)v315) + 60); - v37 = std::map::operator[](v295, (int)v315); - WXML::DOMLib::WXMLDom::Error((int)v249, a2, (int)v37, (int *)v315, lpuexcptb); - __cxa_throw( - v249, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - if ( !v319 ) - std::string::operator=((unsigned int *)&v318, "index"); // target2_1 - if ( !v322 ) - std::string::operator=((unsigned int *)&v321, "item"); // target3_1 - v325 = 0; - v324 = (int)&v326; // name1 - LOBYTE(v326) = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v324); - v327 = (int)v329; // name2 - v328 = 0; - v329[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v327); - v330 = v332; // name3 - v331 = 0; - LOBYTE(v332[0]) = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v330); - v333 = (int)v335; // name4 - v334 = 0; - v335[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v333); - std::string::basic_string((void **)v347, (char *)&byte_5537CA); // "\0" - std::string::basic_string((void **)&Str, (char *)&byte_5537CA); // "\0" - WXML::DOMLib::WXMLDom::RenderMeAsFunction( - a2, - a3, - a4, - &v324, - a6, - a7, - &v330, - &v327, - a10, - &v333, - a11, - a12, - &Str, - 0, - a13, - a14, - v347); - std::string::_M_dispose((void **)&Str); - std::string::_M_dispose((void **)v347); - - //---------- - // v295 -> this + 48 - // v312 target1 - // 14 * 4 = 56 - if ( *((_DWORD *)std::map::operator[](v295, (int)v312) + 14) == -3 ) - { - v247 = __cxa_allocate_exception(0x18u); - lpuexcptc = (int *)(std::map::operator[](v295, (int)v312) + 60); - v38 = std::map::operator[](v295, (int)v312); - WXML::DOMLib::WXMLDom::Error((int)v247, a2, (int)v38, (int *)v312, lpuexcptc); - __cxa_throw( - v247, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - if ( *((_DWORD *)std::map::operator[](v295, (int)v312) + 14) == -1 ) - { - v248 = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)v347, "value not set"); - // this int - WXML::DOMLib::WXMLDom::Error((int)v248, a2, this + 84, (int *)v312, v347); - std::string::_M_dispose((void **)v347); - __cxa_throw( - v248, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - if ( !a13 ) - goto LABEL_57; - if ( v275 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v295, // this->offset_48 - (int)v315) ) // "wx:key" - { - Str = v346; - v345 = 0; - v346[0] = 0; - v256 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); - WXML::Rewrite::ToStringCode((int)v347, a2); - v39 = std::operator<<(v256, v347); - v40 = std::operator<<>(v39, ":"); // - v41 = std::operator<<(v40, (int *)(this + 24)); - std::operator<<>(v41, ":"); - v42 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); - std::operator<<>(v42, ":"); - v43 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); - v44 = std::operator<<>( - v43, - ": Now you can provide attr `wx:key` for a `wx:for` to improve performance.')"); - std::operator<<>(v44, a12); - std::string::_M_dispose((void **)v347); - std::string::_M_dispose((void **)&Str); - } - - v45 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v295, // this->offset_48 - (int)v315); // "wx:key" - if ( v45 == v275 ) - goto LABEL_57; - v46 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v45 + 40); - std::string::basic_string((char *)&v336, v46); - v339 = (int)v341; - v340 = 0; - LOBYTE(v341[0]) = 0; - v47 = std::string::find(&v336, '.'/*46*/, 0); - v276 = (std::ostream::sentry *)v47; - if ( v47 != (char *)-1 ) - { - std::string::substr(&Str, &v336, 0, (unsigned int)v47); - Str1 = WXML::DOMLib::Token::IsValidVariableName(&Str); - if ( Str1 ) - { - std::string::substr(v347, &v336, (unsigned int)v276 + 1, 0xFFFFFFFF); - Str1 = WXML::DOMLib::Token::IsValidVariableName((char **)v347); - std::string::_M_dispose((void **)v347); - } - std::string::_M_dispose((void **)&Str); - if ( Str1 ) - { - std::string::substr(&Str, &v336, (unsigned int)v276 + 1, 0xFFFFFFFF); - std::string::operator=((unsigned __int8 **)&v339, (int)&Str); - std::string::_M_dispose((void **)&Str); - } - } - if ( WXML::DOMLib::Token::GetTemplateContent(&v336, (unsigned __int8 **)&v339) ) - { - if ( Str1 ) - goto LABEL_181; - } - else - { - if ( Str1 == 1 || WXML::DOMLib::Token::IsValidVariableName((char **)&v339) ) - goto LABEL_181; - v48 = std::string::find(&v339, '.'/*46*/, 0); - v277 = (std::ostream::sentry *)v48; - if ( v48 != (char *)-1 ) - { - std::string::substr(&Str, &v339, 0, (unsigned int)v48); - Str1f = WXML::DOMLib::Token::IsValidVariableName(&Str); - if ( Str1f ) - { - std::string::substr(v347, &v339, (unsigned int)v277 + 1, 0xFFFFFFFF); - Str1f = WXML::DOMLib::Token::IsValidVariableName((char **)v347); - std::string::_M_dispose((void **)v347); - } - std::string::_M_dispose((void **)&Str); - if ( Str1f ) - { - std::string::substr(v347, &v339, (unsigned int)v277 + 1, 0xFFFFFFFF); - std::string::operator=((unsigned __int8 **)&v339, (int)v347); - std::string::_M_dispose((void **)v347); - LABEL_181: - v289 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); - WXML::Rewrite::ToStringCode((int)v342, a2); - v223 = std::operator<<(v289, v342); - v224 = std::operator<<>(v223, ":"); - v225 = std::operator<<(v224, (int *)(this + 24)); - std::operator<<>(v225, ":"); - v226 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); - std::operator<<>(v226, ":"); - v227 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); - v290 = std::operator<<>(v227, ": wx:key=\""); - WXML::Rewrite::ToStringCode((int)&Str, &v336); - v228 = std::operator<<(v290, (int *)&Str); - v291 = std::operator<<>( - v228, - "\" does not look like a valid key name (did you mean wx:key=\""); - WXML::Rewrite::ToStringCode((int)v347, &v339); - v229 = std::operator<<(v291, v347); - v230 = std::operator<<>(v229, "\" ?)')"); - std::operator<<>(v230, a12); - std::string::_M_dispose((void **)v347); - std::string::_M_dispose((void **)&Str); - p_Str = (void **)v342; - LABEL_191: - std::string::_M_dispose(p_Str); - goto LABEL_56; - } - } - } - // else end - if ( !WXML::DOMLib::Token::IsValidVariableName((char **)&v336) ) - { - if ( v337 ) - { - if ( std::operator==((int)&v336, "0") ) - goto LABEL_56; - if ( *(_BYTE *)v336 != '0'/*48*/ ) - { - for ( i = 0; v337 != i; ++i ) - { - if ( (unsigned __int8)(*(_BYTE *)(v336 + i) - 48) > 9u ) - goto LABEL_189; - } - goto LABEL_56; - } - } - - /* - int this, - int *a2, - int *a3, - int a4, - int *a5, - int a6, - int *a7, - int *a8, - int *a9, - int *a10, - int *a11, - char a12, - unsigned __int8 a13, - int a14, - int a15) - */ - LABEL_189: - if ( !std::operator==((int)&v336, "*this") ) - { - v292 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); - WXML::Rewrite::ToStringCode((int)&Str, a2); - v233 = std::operator<<(v292, (int *)&Str); - v234 = std::operator<<>(v233, ":"); - v235 = std::operator<<(v234, (int *)(this + 24)); - std::operator<<>(v235, ":"); - v236 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); - std::operator<<>(v236, ":"); - v237 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); - v293 = std::operator<<>(v237, ": wx:key=\""); - WXML::Rewrite::ToStringCode((int)v347, &v336); - v238 = std::operator<<(v293, v347); - v239 = std::operator<<>(v238, "\" does not look like a valid key name.')"); - std::operator<<>(v239, a12); - std::string::_M_dispose((void **)v347); - p_Str = (void **)&Str; - goto LABEL_191; // LABEL_56 - } - } - LABEL_56: - std::string::_M_dispose((void **)&v339); - std::string::_M_dispose((void **)&v336); - - /* - int this, - int *a2, - int *a3, - int a4, - int *a5, - int a6, - int *a7, - int *a8, - int *a9, - int *a10, - int *a11, - char a12, - unsigned __int8 a13, - int a14, - int a15) - */ - LABEL_57: - v241 = (std::ostream::sentry *)(a6 + 8); - if ( *(_BYTE *)(this + 256) ) - { - v49 = std::operator<<(v241, a5); - v50 = std::operator<<>(v49, ".wxXCkey=4"); - } - else - { - v51 = std::operator<<(v241, a5); - v50 = std::operator<<>(v51, ".wxXCkey=2"); - } - std::operator<<>(v50, a12); - std::operator<<>((std::ostream::sentry *)(a6 + 8), "_2z(z,"); - v52 = std::map::operator[](v295, (int)v312); - v53 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v52 + 14)); - v54 = std::operator<<>(v53, ","); - v55 = std::operator<<(v54, &v324); // name1 - v56 = std::operator<<>(v55, ","); - v57 = std::operator<<(v56, a8); - v58 = std::operator<<>(v57, ","); - v59 = std::operator<<(v58, a9); - v60 = std::operator<<>(v59, ","); - v61 = std::operator<<(v60, a10); - v62 = std::operator<<>(v61, ","); - v63 = std::operator<<(v62, a5); - v64 = std::operator<<>(v63, ",'"); - v65 = std::operator<<(v64, &v321); // target3_1 - v66 = std::operator<<>(v65, "','"); - v67 = std::operator<<(v66, &v318); // target2_1 - v278 = std::operator<<>(v67, "','"); - v68 = std::map::operator[](v295, (int)v315); // v315 wxKey - v69 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v68); - v70 = std::operator<<(v278, v69); - v71 = std::operator<<>(v70, "')"); - std::operator<<>(v71, a12); - std::string::_M_dispose((void **)&v333); - std::string::_M_dispose((void **)&v330); - std::string::_M_dispose((void **)&v327); - std::string::_M_dispose((void **)&v324); - std::string::_M_dispose((void **)&v321); - std::string::_M_dispose((void **)&v318); - std::string::_M_dispose(v316); - std::string::_M_dispose(v315); - std::string::_M_dispose(v314); - std::string::_M_dispose(v313); - v72 = v312; - goto LABEL_84; - } // wx-repeat end - - // RenderNonDefine - 10 - if ( std::operator==(this, "block") ) - { - WXML::DOMLib::WXMLDom::RenderChildren(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); - goto LABEL_169; - } - // int this - v296 = (std::ostream::sentry *)(this + 48); - Str1a = (char *)(this + 52); - if ( std::operator==(this, "include") ) - { - std::string::basic_string((void **)v347, (char *)off_5539C8); // "src" - v279 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v296, - (int)v347); - std::string::_M_dispose((void **)v347); - // == end - if ( v279 == (std::ostream::sentry *)Str1a ) - goto LABEL_169; - std::string::basic_string((void **)v347, (char *)off_5539C8); // "src" - v280 = (std::ostream::sentry *)*((_DWORD *)std::map::operator[](v296, v347) + 14); - std::string::_M_dispose((void **)v347); - if ( v280 == (std::ostream::sentry *)-3 ) - { - v251 = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)&Str, (char *)off_5539C8); // "src" - // v296 this.offset_48 - lpuexcptd = (int *)(std::map::operator[](v296, &Str) + 60); - std::string::basic_string((void **)v347, (char *)off_5539C8); // "src" - std::string::basic_string((void **)v342, (char *)off_5539C8); // "src" - v73 = std::map::operator[](v296, v342); - // v296["src"] - WXML::DOMLib::WXMLDom::Error((int)v251, a2, (int)v73, v347, lpuexcptd); - std::string::_M_dispose((void **)v342); - std::string::_M_dispose((void **)v347); - std::string::_M_dispose((void **)&Str); - v22 = v251; -LABEL_9: - __cxa_throw( - v22, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - std::operator<<>((std::ostream::sentry *)(a6 + 8), "_ic(x["); - v271 = *(std::ostream::sentry **)(this + 248); - std::string::basic_string((void **)&Str, (char *)off_5539C8); - v74 = std::map::operator[](v296, &Str); - v75 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v74); - std::string::basic_string((char *)v347, v75); - StrID = WXML::DOMLib::StrCache::GetStrID(v271, (int)v347); - std::ostream::operator<<(StrID); - std::string::_M_dispose((void **)v347); - std::string::_M_dispose((void **)&Str); - v77 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); - v78 = std::operator<<(v77, a3); - std::operator<<>(v78, (char *)off_553CC8); - v297 = *(std::ostream::sentry **)(this + 248); - std::string::basic_string((char *)v347, (int)a2); - v79 = WXML::DOMLib::StrCache::GetStrID(v297, (int)v347); - std::ostream::operator<<(v79); - std::string::_M_dispose((void **)v347); - v80 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); - v81 = std::operator<<(v80, a8); - v82 = std::operator<<>(v81, ","); - v83 = std::operator<<(v82, a9); - v84 = std::operator<<>(v83, ","); - v85 = std::operator<<(v84, a5); - v86 = std::operator<<>(v85, ","); - v31 = std::operator<<(v86, a10); - v242 = ");"; - goto LABEL_68; - } - // RenderNonDefine - 15 - v270 = std::operator==(this, "wx-template"); - if ( v270 ) - { - std::string::basic_string((void **)v347, "is"); - v281 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v296, - (int)v347); - std::string::_M_dispose((void **)v347); - if ( v281 == (std::ostream::sentry *)Str1a ) - goto LABEL_169; - std::string::basic_string((void **)&Str, "is"); - v269 = v270; - if ( *((_DWORD *)std::map::operator[](v296, &Str) + 14) != -3 ) - { - std::string::basic_string((void **)v347, "is"); - v269 = *((_DWORD *)std::map::operator[](v296, v347) + 14) == -1; - std::string::_M_dispose((void **)v347); - } - std::string::_M_dispose((void **)&Str); - if ( v269 ) - { - v272 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp(\""); - WXML::Rewrite::ToStringCode((int)v347, a2); - v88 = std::operator<<(v272, v347); - std::operator<<>(v88, ":template:"); - v89 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); - std::operator<<>(v89, ":"); - v90 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); - std::operator<<>(v90, (char *)off_553CDD); - std::string::_M_dispose((void **)v347); - std::string::basic_string((void **)v347, "is"); - v91 = std::map::operator[](v296, v347); - v92 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v91); - WXML::Rewrite::ToStringCode(v92, a6); - std::string::_M_dispose((void **)v347); - v87 = std::operator<<>( - (std::ostream::sentry *)(a6 + 8), - "` is not a valid expression for a template.\")"); - goto LABEL_69; - } - v334 = 0; - v333 = (int)v335; - v335[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v333); - v282 = (std::ostream::sentry *)(a6 + 8); - v93 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); - v94 = std::operator<<(v93, &v333); - std::operator<<>(v94, "=_oz(z,"); - std::string::basic_string((void **)v347, "is"); - v95 = std::map::operator[](v296, v347); - v96 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v95 + 14)); - v97 = std::operator<<>(v96, ","); - v98 = std::operator<<(v97, a8); - v99 = std::operator<<>(v98, ","); - v100 = std::operator<<(v99, a9); - v101 = std::operator<<>(v100, ","); - v102 = std::operator<<(v101, a10); - v103 = std::operator<<>(v102, ")"); - std::operator<<>(v103, a12); - std::string::_M_dispose((void **)v347); - v336 = (int)&v338; - v337 = 0; - v338 = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v336); - v104 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); - v105 = std::operator<<(v104, &v336); - std::operator<<>(v105, "=_gd(x["); - v257 = *(std::ostream::sentry **)(this + 248); - std::string::basic_string((char *)v347, (int)a2); - v106 = WXML::DOMLib::StrCache::GetStrID(v257, (int)v347); - std::ostream::operator<<(v106); - std::string::_M_dispose((void **)v347); - v107 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); - v108 = std::operator<<(v107, &v333); - v109 = std::operator<<>(v108, ","); - v110 = std::operator<<(v109, a3); - v111 = std::operator<<>(v110, ","); - v112 = std::operator<<(v111, a11); - v113 = std::operator<<>(v112, ")"); - std::operator<<>(v113, a12); - v114 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "if("); - v115 = std::operator<<(v114, &v336); - v116 = std::operator<<>(v115, "){"); - std::operator<<>(v116, a12); - v340 = 0; - v339 = (int)v341; - LOBYTE(v341[0]) = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v339); - std::string::basic_string((void **)&Str, "data"); - if ( Str1a != (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - v296, - (int)&Str) ) - { - std::string::basic_string((void **)v347, "data"); - v117 = std::map::operator[](v296, v347); - v270 = *(_DWORD *)(WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v117) + 4) == 0; - std::string::_M_dispose((void **)v347); - } - std::string::_M_dispose((void **)&Str); - if ( v270 ) - { - v118 = std::operator<<>(v282, "var "); - v119 = std::operator<<(v118, &v339); - v120 = std::operator<<>(v119, "={}"); - std::operator<<>(v120, a12); - } - else - { - std::string::basic_string((void **)v347, "data"); - Str1g = (char *)*((_DWORD *)std::map::operator[](v296, v347) + 14); - std::string::_M_dispose((void **)v347); - if ( Str1g == (char *)-3 ) - { - v252 = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)&Str, "data"); - lpuexcpte = (int *)(std::map::operator[](v296, &Str) + 60); - std::string::basic_string((void **)v347, "data"); - std::string::basic_string((void **)v342, "data"); - v121 = std::map::operator[](v296, v342); - WXML::DOMLib::WXMLDom::Error((int)v252, a2, (int)v121, v347, lpuexcpte); - std::string::_M_dispose((void **)v342); - std::string::_M_dispose((void **)v347); - std::string::_M_dispose((void **)&Str); - __cxa_throw( - v252, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - v122 = std::operator<<>(v282, "var "); - v123 = std::operator<<(v122, &v339); - std::operator<<>(v123, "=_1z(z,"); - std::string::basic_string((void **)v347, "data"); - v124 = std::map::operator[](v296, v347); - v125 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v124 + 14)); - v126 = std::operator<<>(v125, ","); - v127 = std::operator<<(v126, a8); - v128 = std::operator<<>(v127, ","); - v129 = std::operator<<(v128, a9); - v130 = std::operator<<>(v129, ","); - v131 = std::operator<<(v130, a10); - v132 = std::operator<<>(v131, ") || {}"); - std::operator<<>(v132, a12); - std::string::_M_dispose((void **)v347); - } - v133 = std::operator<<>(v282, "var cur_globalf="); - v134 = std::operator<<(v133, a10); - v135 = std::operator<<>(v134, ".f"); - std::operator<<>(v135, a12); - v136 = std::operator<<(v282, a5); - v137 = std::operator<<>(v136, ".wxXCkey=3"); - std::operator<<>(v137, a12); - v138 = std::operator<<(v282, &v336); - v139 = std::operator<<>(v138, "("); - v140 = std::operator<<(v139, &v339); - v141 = std::operator<<>(v140, ","); - v142 = std::operator<<(v141, &v339); - v143 = std::operator<<>(v142, ","); - v144 = std::operator<<(v143, a5); - v145 = std::operator<<>(v144, ","); - v146 = std::operator<<(v145, a10); - v147 = std::operator<<>(v146, ")"); - std::operator<<>(v147, a12); - // - v148 = std::operator<<(v282, a10); - v149 = std::operator<<>(v148, ".f=cur_globalf"); - std::operator<<>(v149, a12); - std::string::_M_dispose((void **)&v339); - v150 = std::operator<<>(v282, "}"); - std::operator<<>(v150, a12); - v151 = std::operator<<>(v282, "else _w("); - v152 = std::operator<<(v151, &v333); - std::operator<<>(v152, (char *)off_553CC8); - Str1h = *(char **)(this + 248); - std::string::basic_string((char *)v347, (int)a2); - v153 = WXML::DOMLib::StrCache::GetStrID(Str1h, (int)v347); - std::ostream::operator<<(v153); - std::string::_M_dispose((void **)v347); - std::operator<<>(v282, "],"); - std::string::basic_string((void **)&Str, "is"); - v154 = std::map::operator[](v296, &Str); - v155 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v154 + 2)); - std::operator<<>(v155, ","); - std::string::basic_string((void **)v347, "is"); - v156 = std::map::operator[](v296, v347); - v157 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v156 + 3)); - v158 = std::operator<<>(v157, ")"); - std::operator<<>(v158, a12); - std::string::_M_dispose((void **)v347); - std::string::_M_dispose((void **)&Str); - std::string::_M_dispose((void **)&v336); - v72 = (void **)&v333; - LABEL_84: - std::string::_M_dispose(v72); - goto LABEL_169; - } - // RenderNonDefine - 20 - v324 = 0; - v325 = 0; - v326 = 0; - // int j; - for ( j = *(_DWORD *)(this + 60); ; j = std::_Rb_tree_increment((int)v298) ) - { - v298 = (int *)j; - if ( (char *)j == Str1a ) - break; - // offset_96 - v160 = *(_DWORD *)(j + 96); - if ( v160 == -3 ) - { - if ( (a14 & 1) == 0 ) - { - v254 = __cxa_allocate_exception(0x18u); - // v298 + 4 -> v298.offset_16; j->first - // v298 + 10 -> v298.offset_40; j->second - // v298 + 25 -> v298.offset_100; j->second.offset_60 - WXML::DOMLib::WXMLDom::Error((int)v254, a2, (int)(v298 + 10), v298 + 4, v298 + 25); - __cxa_throw( - v254, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - } - // v298[15] -> v298.offset_60 - else if ( v160 == -1 && v298[15] > 0 ) - { - v253 = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)v347, "interal error(1010)"); - WXML::DOMLib::WXMLDom::Error((int)v253, a2, (int)(v298 + 10), v298 + 4, v347); - std::string::_M_dispose((void **)v347); - __cxa_throw( - v253, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - // v298[4] -> v298.offset_16; j->first - v161 = v298[4]; - if ( *(_BYTE *)v161 != 'w'/*119*/ - || *(_BYTE *)(v161 + 1) != 'x'/*120*/ - || (v162 = *(_BYTE *)(v161 + 2), v162 != ':'/*58*/) && v162 != '-'/*45*/ - || !__stricmp((const char *)v161, "wx:scope-data") ) - { - // v298 + 4 -> v298.offset_16; j->first - // v298 + 10 -> v298.offset_40; j->second - // v298 + 25 -> v298.offset_100; j->second.offset_60 - std::string::basic_string((char *)v347, (int)(v298 + 4)); // j->first - WXML::DOMLib::Token::Token((int)v350, (WXML::DOMLib::Token *)(v298 + 10)/*j->second*/, v243); - std::vector>::emplace_back>( - &v324, - v347); - std::pair::~pair((void **)v347); - } - } - // RenderNonDefine - 25 - std::sort< - __gnu_cxx::__normal_iterator *, - std::vector>>, - bool (*)( - std::pair const&, - std::pair const&)>( - (char *)v324, - v325, - (int (__cdecl *)(int, int))WXML::DOMLib::AttrsCompartor); - v328 = 0; - v327 = (int)v329; - v332[1] = (int)&v331; - v332[2] = (int)&v331; - v329[0] = 0; - v283 = (std::ostream::sentry *)v325; - v331 = 0; - v332[0] = 0; - v332[3] = 0; - for ( k = (std::ostream::sentry *)v324; v283 != k; k = (std::ostream::sentry *)((char *)k + 136) ) - std::set::insert(&v330, (int)k); - std::basic_stringstream,std::allocator>::basic_stringstream((int)v347); - for ( m = 0; (unsigned int)m < -252645135 * ((int)&v325[-v324] >> 3); m = (std::ostream::sentry *)((char *)m + 1) ) - { - v258 = (std::ostream::sentry *)(136 * (_DWORD)m); // cur pos - Str1b = (char *)(136 * (_DWORD)m + v324); - std::string::substr(&v333, Str1b, 0, 6u); - v300 = std::operator!=((int)&v333, "model:"); - std::string::_M_dispose((void **)&v333); - if ( !v300 ) - { - v301 = std::operator<<>((std::ostream::sentry *)v348, "\"model:"); - std::string::substr(v342, Str1b, 6u, 0xFFFFFFFF); - v163 = std::operator<<(v301, v342); - v164 = std::operator<<>(v163, "\""); - v302 = std::operator<<>(v164, ":\""); - - v165 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v258 + v324 + 24); - WXML::Rewrite::ToStringCode((int)&Str, v165); - v166 = std::operator<<(v302, (int *)&Str); - - std::operator<<>(v166, "\","); - std::string::_M_dispose((void **)&Str); - std::string::_M_dispose((void **)v342); - std::string::substr(&v336, Str1b, 6u, 0xFFFFFFFF); - v284 = (std::ostream::sentry *)v332[0]; - v303 = &v331; - - // find - while ( v284 ) - { - // (int)v284 + 16 -> (int)v284 offset_16 - v167 = (unsigned __int8)std::operator<((int)v284 + 16, (int)&v336) == 0; - v168 = v303; - // (_DWORD *)v284 + 3 -> v284 offset_12 - v169 = (std::ostream::sentry *)*((_DWORD *)v284 + 3); - if ( v167 ) - { - // (_DWORD *)v284 + 2 -> v284 offset_8 - v169 = (std::ostream::sentry *)*((_DWORD *)v284 + 2); - if ( v167 ) - v168 = (int *)v284; - } - v284 = v169; - v303 = v168; - } // end while - if ( v303 != &v331 ) - { - v167 = (unsigned __int8)std::operator<((int)&v336, (int)(v303 + 4)) == 0; - v170 = &v331; - if ( v167 ) - v170 = v303; - v303 = v170; - } - // find end - - std::string::_M_dispose((void **)&v336); - if ( v303 == &v331 ) - { - std::string::substr(&v339, Str1b, 6u, 0xFFFFFFFF); - // v258 + v324 -> cur data - std::string::operator=((unsigned __int8 **)((char *)v258 + v324), (int)&v339); - std::string::_M_dispose((void **)&v339); - } - else - { - v171 = (unsigned __int8 **)((char *)v258 + v324); // cur - v172 = (char *)v258 + v324 + 136; // next - // v325 end - if ( v325 != v172 ) - { - for ( n = -252645135 * ((v325 - v172) >> 3); ; --n ) - { - v285 = (std::ostream::sentry *)(v171 + 34); - if ( n <= 0 ) - break; - std::pair::operator=(v171, (int)(v171 + 34)); - v171 = (unsigned __int8 **)v285; - } - } - v325 -= 136; - std::pair::~pair((void **)v325); - m = (std::ostream::sentry *)((char *)m - 1); - } - } - } - // RenderNonDefine - 30 - std::stringbuf::str((int)v342, (int)v349); - std::string::operator=((unsigned __int8 **)&v327, (int)v342); - std::string::_M_dispose((void **)v342); - if ( v328 ) - { - std::string::basic_string((char *)&v339, (int)a5); - std::string::append(&v339, ".rawAttr={"); - v173 = std::string::append(&v339, (int)&v327); - std::string::basic_string(v342, v173); - v174 = std::string::append(v342, "};"); - std::string::basic_string(&Str, v174); - std::string::operator=((unsigned __int8 **)&v327, (int)&Str); - std::string::_M_dispose((void **)&Str); - std::string::_M_dispose((void **)v342); - std::string::_M_dispose((void **)&v339); - } - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v347); - std::_Rb_tree,std::less,std::allocator> - ::_M_erase(v332[0]); - v305 = (std::ostream::sentry *)(a6 + 8); - if ( (unsigned int)&v325[-v324] <= 0x88 ) - { - v191 = std::operator<<>(v305, "var "); - v192 = std::operator<<(v191, a5); - v193 = std::operator<<>(v192, "=_n('"); - v194 = std::operator<<(v193, (int *)this); - v195 = std::operator<<>(v194, "')"); - std::operator<<>(v195, a12); - // v324 std::vector> - for ( ii = (std::ostream::sentry *)v324; ; ii = (std::ostream::sentry *)((char *)ii + 136) ) - { - if ( ii == (std::ostream::sentry *)v325 ) - goto LABEL_164; - Str1e = *(char **)ii; - Str = v346; - v345 = 0; - v346[0] = 0; - if ( !strncmp(Str1e, "data-", 5u) || std::string::find((int *)ii, ':'/*58*/, 0) != (char *)-1 ) - { - std::string::_M_assign((int)&Str, (int)ii); - if ( !strncmp(Str1e, "generic:", 8u) ) - { - std::operator<<>(v305, "var $tmp="); - // (_DWORD *)ii + 11 -> ii.offset_44 - if ( *((_DWORD *)ii + 11) ) - { - std::operator<<>(v305, "grb(z["); - v196 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)ii + 20)); - v197 = std::operator<<>(v196, "],"); - v198 = std::operator<<(v197, a8); - v199 = std::operator<<>(v198, ","); - v200 = std::operator<<(v199, a9); - v201 = std::operator<<>(v200, ","); - v202 = std::operator<<(v201, a10); - v203 = std::operator<<>(v202, ")"); - std::operator<<>(v203, a12); - v204 = std::operator<<>(v305, "if ($tmp!=\"\") $tmp=\"wx-\"+$tmp"); - } - else - { - v204 = std::operator<<>(v305, "\"\""); - } - std::operator<<>(v204, a12); - v205 = std::operator<<(v305, a5); - std::operator<<>(v205, ".generics['"); - v206 = std::operator<<>(v305, "wx-"); - v207 = std::operator<<>(v206, Str1e + 8); - v208 = std::operator<<>(v207, "']=$tmp"); - goto LABEL_158; - } - } - else - { - WXML::DOMLib::WXMLDom::ToCamelStyle((int)v347, (int)ii); - std::string::operator=((unsigned __int8 **)&Str, (int)v347); - std::string::_M_dispose((void **)v347); - } - // ii->offset_44 -> ii->offset_24->offset_20 - if ( *((_DWORD *)ii + 11) ) - { - // ii->offset_80 -> ii->offset_24->offset_56 - if ( *((_DWORD *)ii + 20) == -1 ) - { - v255 = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)v347, "interal error(1010)"); - WXML::DOMLib::WXMLDom::Error((int)v255, a2, (int)ii + 24, (int *)ii, v347); - std::string::_M_dispose((void **)v347); - __cxa_throw( - v255, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - v211 = std::operator<<>(v305, "_rz(z,"); - v212 = std::operator<<(v211, a5); - v213 = std::operator<<>(v212, ",'"); - v214 = std::operator<<(v213, (int *)&Str); - std::operator<<>(v214, "',"); - // ii->offset_80 -> ii->offset_24->offset_56 - v215 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)ii + 20)); - v216 = std::operator<<>(v215, ","); - v217 = std::operator<<(v216, a8); - v218 = std::operator<<>(v217, ","); - v219 = std::operator<<(v218, a9); - v220 = std::operator<<>(v219, ","); - v221 = std::operator<<(v220, a10); - v208 = std::operator<<>(v221, ")"); - } - else - { - v209 = std::operator<<(v305, a5); - std::operator<<>(v209, ".attr['"); - v210 = std::operator<<(v305, (int *)&Str); - v208 = std::operator<<>(v210, "']=true"); - } -LABEL_158: - std::operator<<>(v208, a12); - std::string::_M_dispose((void **)&Str); - } - } - // RenderNonDefine - 35 - v339 = 0; - v340 = 0; - /* - int v341[4]; // [esp+214h] [ebp-174h] BYREF - int v342[2]; - */ - v341[0] = 0; - v175 = std::operator<<>(v305, "var "); - v176 = std::operator<<(v175, a5); - v177 = std::operator<<>(v176, "=_mz(z,'"); - v178 = std::operator<<(v177, (int *)this); - std::operator<<>(v178, (char *)off_553DAF); - v274 = 0; - v259 = (char *)&byte_5537CA; - - for ( jj = (int *)v324; jj != (int *)v325; jj += 34 ) // 34 * 4 = 136 = 24 + 112 - { - Str1c = (char *)*jj; - v342[0] = (int)&v343; - v342[1] = 0; - v343 = 0; - if ( !strncmp(Str1c, "data-", 5u) || std::string::find(jj, ':'/*58*/, 0) != (char *)-1 ) - { - std::string::_M_assign((int)v342, (int)jj); - if ( !strncmp(Str1c, "generic:", 8u) ) - { - Str = Str1c + 8; // 往后偏移8位 - // jj + 6 -> jj.offset_24 -> jj->second - WXML::DOMLib::Token::Token((int)&v345, (WXML::DOMLib::Token *)(jj + 6), v244); - std::string::basic_string((void **)v347, Str); - WXML::DOMLib::Token::Token(v350, (int)&v345); - /* - std::pair - 136 - WXML::DOMLib::Token - 112 - std::string - (136 - 112 = 24) - */ - /* - std::string: - int v347[2]; // [esp+2B0h] [ebp-D8h] BYREF - char v348[4]; // [esp+2B8h] [ebp-D0h] BYREF - char v349[12]; // [esp+2BCh] [ebp-CCh] BYREF - WXML::DOMLib::Token: - _DWORD v350[47]; // [esp+2C8h] [ebp-C0h] BYREF - */ - std::vector>::emplace_back>( - &v339, - v347); - std::pair::~pair((void **)v347); - WXML::DOMLib::Token::~Token((int)&v345); - std::string::_M_dispose((void **)v342); - continue; - } - } - else - { - WXML::DOMLib::WXMLDom::ToCamelStyle((int)&Str, (int)jj); - std::string::operator=((unsigned __int8 **)v342, (int)&Str); - std::string::_M_dispose((void **)&Str); - } - std::operator<<>(v305, v259); - v179 = std::operator<<>(v305, "'"); - v180 = std::operator<<(v179, v342); - std::operator<<>(v180, "',"); - // jj->offset_44 -> jj->offset_24->offset_20 - if ( jj[11] ) - { - // jj->offset_80 -> jj->offset_24->offset_56 - std::ostream::operator<<(jj[20] - (_DWORD)v274); - if ( !v274 ) - v274 = (std::ostream::sentry *)jj[20]; - } - else - { - std::operator<<>(v305, "-1"); - } - std::string::_M_dispose((void **)v342); - v259 = ","; - } - // a6 << "],["; - std::operator<<>(v305, (char *)off_553DC7); - v287 = 0; - v181 = (char *)&byte_5537CA; - while ( (unsigned int)v287 < -252645135 * ((v340 - v339) >> 3) ) - { - std::operator<<>(v305, v181); - v182 = std::operator<<>(v305, "'wx-"); - Str1d = (char *)(136 * (_DWORD)v287); - v183 = std::operator<<(v182, (int *)(v339 + 136 * (_DWORD)v287)); - std::operator<<>(v183, "',"); - // cur->offset_44 - if ( *(_DWORD *)(v339 + 136 * (_DWORD)v287 + 44) ) - { - // cur->offset_80 -> cur->offset_24->offset_56 -> cur->second->offset_56 - std::ostream::operator<<(*(_DWORD *)&Str1d[v339 + 80] - (_DWORD)v274); - if ( !v274 ) - v274 = *(std::ostream::sentry **)&Str1d[v339 + 80]; - } - else - { - std::operator<<>(v305, "-1"); - } - v287 = (std::ostream::sentry *)((char *)v287 + 1); - v181 = ","; - } - // RenderNonDefine - 40 - v184 = std::operator<<>(v305, "],"); - v185 = std::operator<<(v184, a8); - v186 = std::operator<<>(v185, ","); - v187 = std::operator<<(v186, a9); - v188 = std::operator<<>(v187, ","); - v189 = std::operator<<(v188, a10); - v190 = std::operator<<>(v189, ")"); - std::operator<<>(v190, a12); - std::vector>::~vector((void ***)&v339); -LABEL_164: - if ( v328 ) - std::operator<<(v305, &v327); - WXML::DOMLib::WXMLDom::RenderChildren(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); - if ( (a14 & 1) != 0 ) - WXML::DOMLib::WXMLDom::AddTestAttr((_DWORD *)this, a5, a6, 10); - std::string::_M_dispose((void **)&v327); - std::vector>::~vector((void ***)&v324); -LABEL_169: - if ( a13 && *(_DWORD *)(this + 28) ) - { - v222 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "cs.pop()"); - std::operator<<>(v222, a12); - } - // RenderNonDefine - 45 - return 0; -} -// 4261A0: variable 'v243' is possibly undefined -// 426A09: variable 'v244' is possibly undefined -// 427CBE: using guessed type _DWORD __stdcall WXML::DOMLib::WXMLDom::RenderChildren(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, char, char, _DWORD, _DWORD); -// 429976: using guessed type _DWORD __stdcall WXML::DOMLib::WXMLDom::RenderMeAsFunction(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 55B66C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; -// 423D86: using guessed type _DWORD var_C0[47]; -// 423D86: using guessed type char var_D0[4]; -// 423D86: using guessed type char var_CC[12]; - -//----- (00427CBE) -------------------------------------------------------- -int __thiscall WXML::DOMLib::WXMLDom::RenderChildren( - _DWORD *this, - int *a2, - int *a3, - int a4, - int *a5, - int a6, - int *a7, - int *a8, - int *a9, - int *a10, - int *a11, - char a12, - unsigned __int8 a13, - int a14, - int a15) -{ - int v15; // edx - std::ostream::sentry *v16; // eax - std::ostream::sentry *v17; // eax - std::ostream::sentry *v18; // eax - std::ostream::sentry *v19; // eax - int StrID; // eax - std::ostream::sentry *v21; // eax - std::ostream::sentry *v22; // eax - std::ostream::sentry *v23; // eax - std::ostream::sentry *v24; // eax - std::ostream::sentry *v25; // eax - int v26; // eax - std::ostream::sentry *v27; // eax - int v28; // edx - char *v29; // eax - int v30; // ecx - int v31; // ecx - char *v32; // eax - std::ostream::sentry *v33; // eax - std::ostream::sentry *v34; // eax - std::ostream::sentry *v35; // eax - std::ostream::sentry *v36; // eax - std::ostream::sentry *v37; // eax - std::ostream::sentry *v38; // eax - std::ostream::sentry *v39; // eax - std::ostream::sentry *v40; // eax - char *v41; // eax - std::ostream::sentry *v42; // eax - std::ostream::sentry *v43; // eax - std::ostream::sentry *v44; // eax - std::ostream::sentry *v45; // eax - std::ostream::sentry *v46; // eax - std::ostream::sentry *v47; // eax - std::ostream::sentry *v48; // eax - std::ostream::sentry *v49; // eax - int v50; // eax - char *v51; // eax - std::ostream::sentry *v52; // eax - std::ostream::sentry *v53; // eax - std::ostream::sentry *v54; // eax - std::ostream::sentry *v55; // eax - std::ostream::sentry *v56; // eax - std::ostream::sentry *v57; // eax - std::ostream::sentry *v58; // eax - std::ostream::sentry *v59; // eax - std::ostream::sentry *v60; // eax - std::ostream::sentry *v61; // eax - std::ostream::sentry *v62; // eax - std::ostream::sentry *v63; // eax - std::ostream::sentry *v64; // eax - _DWORD *v65; // eax - int v66; // eax - int v67; // eax - std::ostream::sentry *v68; // eax - int v69; // eax - std::ostream::sentry *v70; // eax - std::ostream::sentry *v71; // eax - std::ostream::sentry *v72; // eax - std::ostream::sentry *v73; // eax - std::ostream::sentry *v74; // eax - std::ostream::sentry *v75; // eax - std::ostream::sentry *v76; // eax - std::ostream::sentry *v77; // eax - std::ostream::sentry *v78; // eax - std::ostream::sentry *v79; // eax - std::ostream::sentry *v80; // eax - std::ostream::sentry *v82; // eax - std::ostream::sentry *v83; // eax - std::ostream::sentry *v84; // eax - std::ostream::sentry *v85; // eax - std::ostream::sentry *v86; // eax - std::ostream::sentry *v87; // eax - std::ostream::sentry *v88; // eax - std::ostream::sentry *v89; // eax - std::ostream::sentry *v90; // eax - std::ostream::sentry *v91; // eax - std::ostream::sentry *v92; // eax - std::ostream::sentry *v93; // eax - int v95; // [esp+44h] [ebp-134h] - int v96; // [esp+48h] [ebp-130h] - _DWORD *v97; // [esp+48h] [ebp-130h] - char **v98; // [esp+4Ch] [ebp-12Ch] - char *v99; // [esp+4Ch] [ebp-12Ch] - _DWORD *v100; // [esp+4Ch] [ebp-12Ch] - _DWORD *v101; // [esp+50h] [ebp-128h] - char *v102; // [esp+50h] [ebp-128h] - char *v103; // [esp+50h] [ebp-128h] - char *v104; // [esp+50h] [ebp-128h] - void *v105; // [esp+54h] [ebp-124h] - void *v106; // [esp+58h] [ebp-120h] - void *v107; // [esp+5Ch] [ebp-11Ch] - void *v108; // [esp+60h] [ebp-118h] - struct _Unwind_Exception *v109; // [esp+64h] [ebp-114h] - struct _Unwind_Exception *v110; // [esp+68h] [ebp-110h] - char *Strc; // [esp+6Ch] [ebp-10Ch] - bool Str; // [esp+6Ch] [ebp-10Ch] - char *Strd; // [esp+6Ch] [ebp-10Ch] - int Stra; // [esp+6Ch] [ebp-10Ch] - char *Stre; // [esp+6Ch] [ebp-10Ch] - char *Strf; // [esp+6Ch] [ebp-10Ch] - char *Strg; // [esp+6Ch] [ebp-10Ch] - char *Strh; // [esp+6Ch] [ebp-10Ch] - char *Strb; // [esp+6Ch] [ebp-10Ch] - char *Stri; // [esp+6Ch] [ebp-10Ch] - char *Strj; // [esp+6Ch] [ebp-10Ch] - char *Strk; // [esp+6Ch] [ebp-10Ch] - char *Strl; // [esp+6Ch] [ebp-10Ch] - int v124; // [esp+70h] [ebp-108h] - _DWORD *v125; // [esp+70h] [ebp-108h] - _DWORD *v126; // [esp+70h] [ebp-108h] - unsigned int v127; // [esp+70h] [ebp-108h] - unsigned int j; // [esp+70h] [ebp-108h] - _DWORD *exception; // [esp+78h] [ebp-100h] - _DWORD *v130; // [esp+7Ch] [ebp-FCh] - int v131; // [esp+7Ch] [ebp-FCh] - _DWORD *v132; // [esp+7Ch] [ebp-FCh] - _DWORD *v133; // [esp+7Ch] [ebp-FCh] - int i; // [esp+7Ch] [ebp-FCh] - std::ostream::sentry *v135; // [esp+80h] [ebp-F8h] - int *v136; // [esp+80h] [ebp-F8h] - unsigned int v137; // [esp+84h] [ebp-F4h] - struct _Unwind_Exception *lpuexcpta; // [esp+88h] [ebp-F0h] - struct _Unwind_Exception *lpuexcptb; // [esp+88h] [ebp-F0h] - struct _Unwind_Exception *lpuexcptc; // [esp+88h] [ebp-F0h] - void **v142; // [esp+CCh] [ebp-ACh] BYREF - int v143; // [esp+D0h] [ebp-A8h] - int v144; // [esp+D4h] [ebp-A4h] - int v145[2]; // [esp+D8h] [ebp-A0h] BYREF - char v146; // [esp+E0h] [ebp-98h] BYREF - int v147[2]; // [esp+F0h] [ebp-88h] BYREF - char v148; // [esp+F8h] [ebp-80h] BYREF - void *v149[2]; // [esp+108h] [ebp-70h] BYREF - char v150; // [esp+110h] [ebp-68h] BYREF - int v151[2]; // [esp+120h] [ebp-58h] BYREF - char v152; // [esp+128h] [ebp-50h] BYREF - int v153[2]; // [esp+138h] [ebp-40h] BYREF - char v154; // [esp+140h] [ebp-38h] BYREF - __int64 v155; // [esp+150h] [ebp-28h] BYREF - char v156[16]; // [esp+158h] [ebp-20h] BYREF - int v157; // [esp+168h] [ebp-10h] - - v135 = (std::ostream::sentry *)(a6 + 8); - std::ostream::tellp(&v155, (std::ostream *)(a6 + 8)); - if ( v155 > 52428800 ) - { - exception = __cxa_allocate_exception(0x18u); - std::string::basic_string( - (void **)&v155, - "Interal error: generated code (>10M) will be too heavy to fly in a narrow wind."); - *exception = exception + 2; - exception[1] = 0; - *((_BYTE *)exception + 8) = 0; - std::string::_M_assign((int)exception, (int)&v155); - std::string::_M_dispose((void **)&v155); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - v148 = 0; - v145[0] = (int)&v146; - v147[0] = (int)&v148; - v145[1] = 0; - v146 = 0; - v147[1] = 0; - v137 = 0; - v109 = 0; - v110 = 0; - while ( 1 ) - { - // this->offset_72 - v15 = this[18]; - if ( (this[19] - v15) >> 3 <= v137 ) // v137是下标,在递增 - break; - // v15 this->offset_72 - // this->offset_72[i] - if ( (std::operator==(*(_DWORD *)(v15 + 8 * v137), "import") - || std::operator==(*(_DWORD *)(this[18] + 8 * v137), "wx-import")) - && (v124 = *(_DWORD *)(this[18] + 8 * v137), // this->offset_72[i] - v101 = (_DWORD *)(v124 + 52), - std::string::basic_string((void **)&v155, (char *)off_5539C8), // "src" - v125 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)(v124 + 48), - (int)&v155), - std::string::_M_dispose((void **)&v155), - v101 != v125) ) - { - if ( !v110 ) - { - WXML::NameAllocator::GetNextName(a7, (int)v145); - v16 = std::operator<<>(v135, "var "); - v17 = std::operator<<(v16, v145); - v18 = std::operator<<>(v17, "="); - v19 = std::operator<<(v18, a3); - std::operator<<>(v19, (char *)off_553FDC); // [x[ - v130 = (_DWORD *)this[62]; // this.offset_248 - std::string::basic_string((char *)&v155, (int)a2); - StrID = WXML::DOMLib::StrCache::GetStrID(v130, (int)&v155); - std::ostream::operator<<(StrID); - std::string::_M_dispose((void **)&v155); - v21 = std::operator<<>(v135, "]].i"); - std::operator<<>(v21, a12); - } - v110 = (struct _Unwind_Exception *)((char *)v110 + 1); - } - else if ( std::operator==(*(_DWORD *)(this[18] + 8 * v137), "include") ) - { - // this->offset_72[i] - // int v131 - v131 = *(_DWORD *)(this[18] + 8 * v137); - v126 = (_DWORD *)(v131 + 52); // cur->offset_48.end() - std::string::basic_string((void **)&v155, (char *)off_5539C8); // "src" - v132 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)(v131 + 48), // cur->offset_48 - (int)&v155); - std::string::_M_dispose((void **)&v155); - if ( v132 != v126 ) - { - if ( !v109 ) - { - WXML::NameAllocator::GetNextName(a7, (int)v147); - v22 = std::operator<<>(v135, "var "); - v23 = std::operator<<(v22, v147); - v24 = std::operator<<>(v23, "="); - v25 = std::operator<<(v24, a3); - std::operator<<>(v25, (char *)off_553FDC); // "[x[" - v133 = (_DWORD *)this[62]; - std::string::basic_string((char *)&v155, (int)a2); - v26 = WXML::DOMLib::StrCache::GetStrID(v133, (int)&v155); - std::ostream::operator<<(v26); - std::string::_M_dispose((void **)&v155); - v27 = std::operator<<>(v135, "]].j"); - std::operator<<>(v27, a12); - } - v109 = (struct _Unwind_Exception *)((char *)v109 + 1); - } - } - ++v137; - } // end while - // RenderChildren - 5 - v150 = 0; - v149[0] = &v150; - v149[1] = 0; - v127 = 0; - for ( i = 0; ; i = Stra ) - { - // this->offset_72 - v28 = this[18]; - if ( (this[19] - v28) >> 3 <= v127 ) - break; - Strc = *(char **)(v28 + 8 * v127); // cur - v102 = Strc + 52; - std::string::basic_string((void **)v153, "wx-if"); - v29 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)Strc + 12, // Strc.offset_48 - (int)v153); // "wx-if" - Str = 1; - if ( v102 == v29 ) - { - Strd = *(char **)(this[18] + 8 * v127); // cur - std::string::basic_string((void **)&v155, "wx:if"); - Str = Strd + 52 != (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)Strd + 12,// Strd.offset_48 - (int)&v155); // "wx:if" - std::string::_M_dispose((void **)&v155); - } - std::string::_M_dispose((void **)v153); - if ( Str ) - { - WXML::NameAllocator::GetNextName(a7, (int)v149); - std::string::_M_assign(*(_DWORD *)(this[18] + 8 * v127) + 220, (int)v149); - Stra = 2; - *(_DWORD *)(*(_DWORD *)(this[18] + 8 * v127) + 244) = 1; - } - else - { - Stre = *(char **)(this[18] + 8 * v127); // cur - v103 = Stre + 52; // offset_52 - std::string::basic_string((void **)v151, "wx:elif"); - Strf = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)Stre + 12, //offset_48 - (int)v151); - std::string::_M_dispose((void **)v151); - if ( v103 == Strf ) - { - Strg = *(char **)(this[18] + 8 * v127); // cur - v104 = Strg + 52; - std::string::basic_string((void **)v153, "wx:else"); - Strh = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)Strg + 12, - (int)v153); - std::string::_M_dispose((void **)v153); - if ( Strh != v104 ) - { - if ( !i ) - { - v106 = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)&v155, "`wx:if not found, then something must be wrong`"); - std::string::basic_string((void **)v153, "wx:else"); - WXML::DOMLib::WXMLDom::Error((int)v106, a2, *(_DWORD *)(this[18] + 8 * v127) + 84, v153, (int *)&v155); - std::string::_M_dispose((void **)v153); - std::string::_M_dispose((void **)&v155); - __cxa_throw( - v106, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - v31 = *(_DWORD *)(this[18] + 8 * v127); - *(_DWORD *)(v31 + 244) = i; - std::string::_M_assign(v31 + 220, (int)v149); - } - Stra = 0; - } - else - { - if ( !i ) - { - v105 = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)&v155, "`wx:if not found, then something must be wrong`"); - std::string::basic_string((void **)v153, "wx:elif"); - WXML::DOMLib::WXMLDom::Error((int)v105, a2, *(_DWORD *)(this[18] + 8 * v127) + 84, v153, (int *)&v155); - std::string::_M_dispose((void **)v153); - std::string::_M_dispose((void **)&v155); - __cxa_throw( - v105, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - Stra = i + 1; - v30 = *(_DWORD *)(this[18] + 8 * v127); - *(_DWORD *)(v30 + 244) = i; - std::string::_M_assign(v30 + 220, (int)v149); - } - } - ++v127; - }// end while - // RenderChildren - 10 - v152 = 0; - v151[0] = (int)&v152; - v151[1] = 0; - v142 = 0; - v143 = 0; - v144 = 0; - for ( j = 0; (this[19] - this[18]) >> 3 > j; ++j ) - { - std::string::_M_assign((int)v151, (int)a5); - // this->offset_72[j].offset_244 - if ( *(int *)(*(_DWORD *)(this[18] + 8 * j) + 244) <= 0 ) - goto LABEL_56; - // this->offset_72[j].offset_244 > 0 - v154 = 0; - v153[0] = (int)&v154; - v153[1] = 0; - v98 = WXML::DOMLib::szWXIFControlAttrs; - while ( 1 ) - { - Strb = *v98; - v96 = *(_DWORD *)(this[18] + 8 * j); // cur - if ( !*v98 ) - break; - v95 = *(_DWORD *)(this[18] + 8 * j) + 52; // cur->offset_52 - std::string::basic_string((void **)&v155, Strb); - v97 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)(v96 + 48), // cur->offset_48 - (int)&v155); // Strb v98 - std::string::_M_dispose((void **)&v155); - ++v98; - if ( v97 != (_DWORD *)v95 ) - { - std::string::operator=((unsigned int *)v153, Strb); - break; - } - } - if ( *((_DWORD *)std::map::operator[]( - (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), // cur->offset_48 - (int)v153) - + 14) == -3 ) - { - v107 = __cxa_allocate_exception(0x18u); - v136 = (int *)(std::map::operator[]( - (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), - (int)v153) - + 60); - v32 = std::map::operator[]( - (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), - (int)v153); - WXML::DOMLib::WXMLDom::Error((int)v107, a2, (int)v32, v153, v136); - __cxa_throw( - v107, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - if ( *((_DWORD *)std::map::operator[]( - (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), - (int)v153) - + 14) == -1 - && (unsigned __int8)std::operator!=((int)v153, "wx:else") ) - { - v108 = __cxa_allocate_exception(0x18u); - std::string::basic_string((void **)&v155, "value not set"); - WXML::DOMLib::WXMLDom::Error((int)v108, a2, *(_DWORD *)(this[18] + 8 * j) + 84, v153, (int *)&v155); - std::string::_M_dispose((void **)&v155); - __cxa_throw( - v108, - (struct type_info *)&`typeinfo for WXML::DOMLib::RenderException, - WXML::DOMLib::RenderException::~RenderException); - } - if ( std::operator==((int)v153, "wx-if") || std::operator==((int)v153, "wx:if") ) - { - v33 = std::operator<<>(v135, "var "); - v34 = std::operator<<(v33, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); - v35 = std::operator<<>(v34, "=_v()"); - std::operator<<>(v35, a12); - v36 = std::operator<<>(v135, "_("); - v37 = std::operator<<(v36, a5); - v38 = std::operator<<>(v37, ","); - v39 = std::operator<<(v38, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); - v40 = std::operator<<>(v39, ")"); - std::operator<<>(v40, a12); - std::operator<<>(v135, "if(_oz(z,"); - v41 = std::map::operator[]( - (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), // cur->offset_48 - (int)v153); - std::ostream::operator<<(*((_DWORD *)v41 + 14)); - v42 = std::operator<<>(v135, ","); - v43 = std::operator<<(v42, a8); - v44 = std::operator<<>(v43, ","); - v45 = std::operator<<(v44, a9); - v46 = std::operator<<>(v45, ","); - v47 = std::operator<<(v46, a10); - std::operator<<>(v47, ")){"); - v48 = std::operator<<(v135, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); - std::operator<<>(v48, ".wxVkey="); - v49 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); - std::operator<<>(v49, a12); - std::string::basic_string((char *)&v155, *(_DWORD *)(this[18] + 8 * j) + 220); - v157 = 1; - std::vector>::emplace_back>((int)&v142, &v155); - std::string::_M_dispose((void **)&v155); - v50 = *(_DWORD *)(this[18] + 8 * j); - if ( *(_BYTE *)(v50 + 256) ) - goto LABEL_54; - } - else - { - if ( !std::operator==((int)v153, "wx:elif") ) - { - v60 = std::operator<<>(v135, "else{"); - v61 = std::operator<<(v60, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); - std::operator<<>(v61, ".wxVkey="); - v62 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); - std::operator<<>(v62, a12); - v50 = *(_DWORD *)(this[18] + 8 * j); - if ( !*(_BYTE *)(v50 + 256) ) - goto LABEL_55; - LABEL_54: - std::string::basic_string((char *)&v155, v50 + 220); - v157 = 3; - std::vector>::emplace_back>((int)&v142, &v155); - std::string::_M_dispose((void **)&v155); - goto LABEL_55; - } - std::operator<<>(v135, "else if(_oz(z,"); - v51 = std::map::operator[]( - (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), - (int)v153); - std::ostream::operator<<(*((_DWORD *)v51 + 14)); - v52 = std::operator<<>(v135, ","); - v53 = std::operator<<(v52, a8); - v54 = std::operator<<>(v53, ","); - v55 = std::operator<<(v54, a9); - v56 = std::operator<<>(v55, ","); - v57 = std::operator<<(v56, a10); - std::operator<<>(v57, ")){"); - v58 = std::operator<<(v135, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); - std::operator<<>(v58, ".wxVkey="); - v59 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); - std::operator<<>(v59, a12); - v50 = *(_DWORD *)(this[18] + 8 * j); - if ( *(_BYTE *)(v50 + 256) ) - goto LABEL_54; - } - LABEL_55: - std::string::_M_assign((int)v151, *(_DWORD *)(this[18] + 8 * j) + 220); - std::string::_M_dispose((void **)v153); - // end this->offset_72[j].offset_244 > 0 - LABEL_56: - if ( std::operator==(*(_DWORD *)(this[18] + 8 * j), "import") - || std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-import") ) - { - Stri = *(char **)(this[18] + 8 * j); // cur - v99 = Stri + 52; - std::string::basic_string((void **)&v155, (char *)off_5539C8); // "src" - Strj = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - (_DWORD *)Stri + 12, // cur->offset_48 - (int)&v155); // src - std::string::_M_dispose((void **)&v155); - if ( v99 != Strj ) - { - v63 = std::operator<<>(v135, "_ai("); - v64 = std::operator<<(v63, v145); - std::operator<<>(v64, (char *)off_553CC8); // ",x[" - v100 = (_DWORD *)this[62]; - Strk = *(char **)(this[18] + 8 * j); - std::string::basic_string((void **)v153, (char *)off_5539C8); // "src" - v65 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::find( - (_DWORD *)Strk + 12, // cur->offset_48 - (int)v153); - v66 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v65 + 10)); - std::string::basic_string((char *)&v155, v66); - v67 = WXML::DOMLib::StrCache::GetStrID(v100, (int)&v155); - std::ostream::operator<<(v67); - std::string::_M_dispose((void **)&v155); - std::string::_M_dispose((void **)v153); - std::operator<<>(v135, "],"); - v68 = std::operator<<(v135, a3); - std::operator<<>(v68, (char *)off_553CC8); - Strl = (char *)this[62]; // 248 - std::string::basic_string((char *)&v155, (int)a2); - v69 = WXML::DOMLib::StrCache::GetStrID(Strl, (int)&v155); - std::ostream::operator<<(v69); - std::string::_M_dispose((void **)&v155); - std::operator<<>(v135, "],"); - v70 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 92)); - std::operator<<>(v70, ","); - v71 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 96)); - v72 = std::operator<<>(v71, ")"); - std::operator<<>(v72, a12); - goto LABEL_74; - } - } - if ( !std::operator==(*(_DWORD *)(this[18] + 8 * j), "import") - && !std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-import") ) - { - if ( std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-repeat") - || std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-template") ) - { - v155 = (unsigned int)v156; - v156[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v155); - v73 = std::operator<<>(v135, "var "); - v74 = std::operator<<(v73, (int *)&v155); - v75 = std::operator<<>(v74, "=_v()"); - std::operator<<>(v75, a12); - v76 = std::operator<<>(v135, "_("); - v77 = std::operator<<(v76, v151); - v78 = std::operator<<>(v77, ","); - v79 = std::operator<<(v78, (int *)&v155); - v80 = std::operator<<>(v79, ")"); - std::operator<<>(v80, a12); - WXML::DOMLib::WXMLDom::RenderNonDefine( - *(_DWORD *)(this[18] + 8 * j), - a2, - a3, - a4, - (int *)&v155, - a6, - a7, - a8, - a9, - a10, - a11, - a12, - a13, - a14, - a15); - LABEL_73: - std::string::_M_dispose((void **)&v155); - goto LABEL_74; - } - if ( std::operator==(*(_DWORD *)(this[18] + 8 * j), "block") - || std::operator==(*(_DWORD *)(this[18] + 8 * j), "include") ) - { - WXML::DOMLib::WXMLDom::RenderNonDefine( - *(_DWORD *)(this[18] + 8 * j), - a2, - a3, - a4, - v151, - a6, - a7, - a8, - a9, - a10, - a11, - a12, - a13, - a14, - a15); - goto LABEL_74; - } - if ( (unsigned __int8)std::operator!=(*(_DWORD *)(this[18] + 8 * j), "wx-import") ) - { - if ( (unsigned __int8)std::operator!=(*(_DWORD *)(this[18] + 8 * j), "wx-define") ) - { - v155 = (unsigned int)v156; - v156[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v155); - WXML::DOMLib::WXMLDom::RenderNonDefine( - *(_DWORD *)(this[18] + 8 * j), - a2, - a3, - a4, - (int *)&v155, - a6, - a7, - a8, - a9, - a10, - a11, - a12, - a13, - a14, - a15); - v82 = std::operator<<>(v135, "_("); - v83 = std::operator<<(v82, v151); - v84 = std::operator<<>(v83, ","); - v85 = std::operator<<(v84, (int *)&v155); - v86 = std::operator<<>(v85, ")"); - std::operator<<>(v86, a12); - goto LABEL_73; - } - } - } - LABEL_74: - if ( *(int *)(*(_DWORD *)(this[18] + 8 * j) + 244) > 0 ) - { - v87 = std::operator<<>(v135, "}"); - std::operator<<>(v87, a12); - } - } - // RenderChildren - 15 - for ( lpuexcpta = 0; - (unsigned int)lpuexcpta < -1227133513 * ((v143 - (int)v142) >> 2); - lpuexcpta = (struct _Unwind_Exception *)((char *)lpuexcpta + 1) ) - { - v88 = std::operator<<(v135, (int *)&v142[7 * (_DWORD)lpuexcpta]); - std::operator<<>(v88, ".wxXCkey="); - v89 = (std::ostream::sentry *)std::ostream::operator<<(v142[7 * (_DWORD)lpuexcpta + 6]); - std::operator<<>(v89, a12); - } - // RenderChildren - 20 - for ( lpuexcptb = 0; v110 != lpuexcptb; lpuexcptb = (struct _Unwind_Exception *)((char *)lpuexcptb + 1) ) - { - v90 = std::operator<<(v135, v145); - v91 = std::operator<<>(v90, ".pop()"); - std::operator<<>(v91, a12); - } - // RenderChildren - 25 - for ( lpuexcptc = 0; v109 != lpuexcptc; lpuexcptc = (struct _Unwind_Exception *)((char *)lpuexcptc + 1) ) - { - v92 = std::operator<<(v135, v147); - v93 = std::operator<<>(v92, ".pop()"); - std::operator<<>(v93, a12); - } - // RenderChildren - 30 - std::vector>::~vector(&v142); - std::string::_M_dispose((void **)v151); - std::string::_M_dispose(v149); - std::string::_M_dispose((void **)v147); - std::string::_M_dispose((void **)v145); - return 0; -} -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 554190: using guessed type char *WXML::DOMLib::szWXIFControlAttrs[4]; -// 55B66C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; - -//----- (00429976) -------------------------------------------------------- -int __thiscall WXML::DOMLib::WXMLDom::RenderMeAsFunction( - _DWORD *this, - int *a2, - int *a3, - int a4, - int *a5, - int a6, - int *a7, - int *a8, - int *a9, - int *a10, - int *a11, - int *a12, - char a13, - int *a14, - char a15, - unsigned __int8 a16, - int a17, - int *a18) -{ - std::ostream::sentry *v18; // eax - int StrID; // eax - std::ostream::sentry *v20; // eax - std::ostream::sentry *v21; // eax - std::ostream::sentry *v22; // eax - std::ostream::sentry *v23; // eax - std::ostream::sentry *v24; // eax - std::ostream::sentry *v25; // eax - std::ostream::sentry *v26; // eax - std::ostream::sentry *v27; // eax - std::ostream::sentry *v28; // eax - std::ostream::sentry *v29; // eax - std::ostream::sentry *v30; // eax - std::ostream::sentry *v31; // eax - std::ostream::sentry *v32; // eax - std::ostream::sentry *v33; // eax - std::ostream::sentry *v34; // eax - int v35; // eax - std::ostream::sentry *v36; // eax - std::ostream::sentry *v37; // eax - std::ostream::sentry *v38; // eax - std::ostream::sentry *v39; // eax - std::ostream::sentry *v40; // eax - std::ostream::sentry *v41; // eax - std::ostream::sentry *v42; // eax - std::ostream::sentry *v43; // eax - std::ostream::sentry *v44; // eax - std::ostream::sentry *v45; // eax - std::ostream::sentry *v46; // eax - std::ostream::sentry *v47; // eax - int v48; // eax - std::ostream::sentry *v49; // eax - std::ostream::sentry *v50; // eax - std::ostream::sentry *v51; // eax - std::ostream::sentry *v52; // eax - std::ostream::sentry *v53; // eax - std::ostream::sentry *v54; // eax - std::ostream::sentry *v55; // eax - std::ostream::sentry *v56; // eax - std::ostream::sentry *v57; // eax - std::ostream::sentry *v58; // eax - std::ostream::sentry *v59; // eax - std::ostream::sentry *v60; // eax - std::ostream::sentry *v61; // eax - std::ostream::sentry *v62; // eax - std::ostream::sentry *v63; // eax - std::ostream::sentry *v64; // eax - std::ostream::sentry *v65; // eax - std::ostream::sentry *v66; // eax - std::ostream::sentry *v67; // eax - std::ostream::sentry *v68; // eax - std::ostream::sentry *v69; // eax - _DWORD *v71; // [esp+44h] [ebp-84h] - std::ostream::sentry *v72; // [esp+48h] [ebp-80h] - std::ostream::sentry *v73; // [esp+48h] [ebp-80h] - _DWORD *v75; // [esp+54h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-70h] - int v77[2]; // [esp+90h] [ebp-38h] BYREF - char v78; // [esp+98h] [ebp-30h] BYREF - int v79; // [esp+A8h] [ebp-20h] BYREF - int v80; // [esp+ACh] [ebp-1Ch] BYREF - int v81; // [esp+B0h] [ebp-18h] - int *v82; // [esp+B4h] [ebp-14h] - int *v83; // [esp+B8h] [ebp-10h] - int v84; // [esp+BCh] [ebp-Ch] - - v77[0] = (int)&v78; - v77[1] = 0; - v78 = 0; - WXML::NameAllocator::GetNextName(a7, (int)v77); - lpuexcpt = (struct _Unwind_Exception *)(a6 + 8); - if ( a15 ) - { - v18 = std::operator<<(lpuexcpt, a12); - std::operator<<>(v18, (char *)off_553FDC); - // 4 * 62 = 248 - v75 = (_DWORD *)this[62]; - std::string::basic_string((char *)&v79, (int)a2); - StrID = WXML::DOMLib::StrCache::GetStrID(v75, (int)&v79); - std::ostream::operator<<(StrID); - std::string::_M_dispose((void **)&v79); - std::operator<<>(lpuexcpt, "]][\""); - WXML::Rewrite::ToStringCode(a5, a6); - std::operator<<>(lpuexcpt, "\"]"); - } - else - { - v20 = std::operator<<>(lpuexcpt, "var "); - std::operator<<(v20, a5); - } - v21 = std::operator<<>(lpuexcpt, "=function("); - v22 = std::operator<<(v21, a8); - v23 = std::operator<<>(v22, ","); - v24 = std::operator<<(v23, a9); - v25 = std::operator<<>(v24, ","); - v26 = std::operator<<(v25, a11); - v27 = std::operator<<>(v26, ","); - v28 = std::operator<<(v27, a10); - v29 = std::operator<<>(v28, "){"); - std::operator<<>(v29, a13); - if ( a18[1] ) - { - v30 = std::operator<<>(lpuexcpt, "var z="); - v31 = std::operator<<(v30, a18); - v32 = std::operator<<>(v31, "()"); - std::operator<<>(v32, a13); - } - if ( a15 ) - { - v33 = std::operator<<>(lpuexcpt, "var "); - v34 = std::operator<<(v33, v77); - std::operator<<>(v34, (char *)off_554111); - v72 = (std::ostream::sentry *)this[62]; - std::string::basic_string((char *)&v79, (int)a2); - v35 = WXML::DOMLib::StrCache::GetStrID(v72, (int)&v79); - std::ostream::operator<<(v35); - std::string::_M_dispose((void **)&v79); - std::operator<<>(lpuexcpt, "]"); - std::operator<<>(lpuexcpt, "+':"); - WXML::Rewrite::ToStringCode(a5, a6); - std::operator<<>(lpuexcpt, "'"); - std::operator<<>(lpuexcpt, a13); - v36 = std::operator<<(lpuexcpt, a11); - v37 = std::operator<<>(v36, ".wxVkey="); - v38 = std::operator<<(v37, v77); - std::operator<<>(v38, a13); - v39 = std::operator<<(lpuexcpt, a10); - v73 = std::operator<<>(v39, ".f=$gdc(f_[\""); - WXML::Rewrite::ToStringCode((int)&v79, a2); - v40 = std::operator<<(v73, &v79); - v41 = std::operator<<>(v40, "\"],\"\",1)"); - std::operator<<>(v41, a13); - std::string::_M_dispose((void **)&v79); - v42 = std::operator<<>(lpuexcpt, "if("); - v43 = std::operator<<(v42, a14); - v44 = std::operator<<>(v43, "["); - v45 = std::operator<<(v44, v77); - v46 = std::operator<<>(v45, "]){_wl("); - v47 = std::operator<<(v46, v77); - std::operator<<>(v47, (char *)off_553CC8); - v71 = (_DWORD *)this[62]; - std::string::basic_string((char *)&v79, (int)a2); - v48 = WXML::DOMLib::StrCache::GetStrID(v71, (int)&v79); - v49 = (std::ostream::sentry *)std::ostream::operator<<(v48); - v50 = std::operator<<>(v49, "]);return}"); - std::operator<<>(v50, a13); - std::string::_M_dispose((void **)&v79); - v51 = std::operator<<(lpuexcpt, a14); - v52 = std::operator<<>(v51, "["); - v53 = std::operator<<(v52, v77); - v54 = std::operator<<>(v53, "]=true"); - std::operator<<>(v54, a13); - v55 = std::operator<<>(lpuexcpt, "try{"); - std::operator<<>(v55, a13); - } - v80 = 0; - v82 = &v80; - v83 = &v80; - v81 = 0; - v84 = 0; - WXML::DOMLib::WXMLDom::RenderChildren(this, a2, a3, a4, a11, a6, a7, a8, a9, a10, a12, a13, a16, a17, (int)&v79); - if ( a15 ) - { - v56 = std::operator<<>(lpuexcpt, "}catch(err){"); - std::operator<<>(v56, a13); - v57 = std::operator<<(lpuexcpt, a14); - v58 = std::operator<<>(v57, "["); - v59 = std::operator<<(v58, v77); - v60 = std::operator<<>(v59, "]=false"); - std::operator<<>(v60, a13); - v61 = std::operator<<>(lpuexcpt, "throw err"); - std::operator<<>(v61, a13); - v62 = std::operator<<>(lpuexcpt, "}"); - std::operator<<>(v62, a13); - v63 = std::operator<<(lpuexcpt, a14); - v64 = std::operator<<>(v63, "["); - v65 = std::operator<<(v64, v77); - v66 = std::operator<<>(v65, "]=false"); - std::operator<<>(v66, a13); - } - v67 = std::operator<<>(lpuexcpt, "return "); - v68 = std::operator<<(v67, a11); - std::operator<<>(v68, a13); - v69 = std::operator<<>(lpuexcpt, "}"); - std::operator<<>(v69, a13); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(v81); - std::string::_M_dispose((void **)v77); - return 0; -} -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); - -//----- (0042A0BC) -------------------------------------------------------- -void __tcf_0_0(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (0042A0C6) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 *v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 *v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = *this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = *this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == (unsigned __int8 *)(this + 2) ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 42A12D: variable 'v9' is possibly undefined - -//----- (0042A14E) -------------------------------------------------------- -int __fastcall WXML::DOMLib::Machine::Reset(_DWORD *a1) -{ - int result; // eax - - // this.offset_4 - a1[1] = 0; - result = 0; - // this.offset_0 - *a1 = 0; - // this.offset_8 - a1[2] = 1; - // this.offset_12 - a1[3] = 0; - // this.offset_16 - a1[4] = 1; - // this.offset_20 - a1[5] = 1; - // this.offset_24 - a1[6] = 1; - return result; -} - -//----- (0042A182) -------------------------------------------------------- -void WXML::DOMLib::Machine::InitTransitTable() -{ - const char *v0; // edx - int v1; // eax - const char *i; // edx - int v3; // eax - const char *v4; // edx - int v5; // eax - const char *j; // edx - int v7; // eax - const char *k; // edx - int v9; // eax - const char *v10; // edx - int v11; // eax - const char *m; // edx - int v13; // eax - const char *v14; // edx - int v15; // eax - const char *n; // edx - int v17; // eax - const char *ii; // edx - int v19; // eax - const char *v20; // edx - int v21; // eax - const char *v22; // edx - int v23; // eax - const char *v24; // edx - int v25; // eax - - if ( !WXML::DOMLib::Machine::InitTransitTable(void)::bInited ) - { - WXML::DOMLib::Machine::InitTransitTable(void)::bInited = 1; - v0 = " \n\t\r"; - memset(&WXML::DOMLib::Machine::TT, 0, 0x101000u); - dword_5806EC = 99; - dword_567A54 = 131074; - dword_567B50 = 15; - dword_567D64 = 1; - dword_567964 = 131171; - dword_56B388 = 16; - dword_56B59C = 1; - dword_56B794 = 17; - dword_56B5A0 = -1; - dword_56B9A0 = 16; - dword_56BB98 = 1; - dword_56BDA4 = 1048592; - dword_56B628 = 11; - dword_56B63C = 13; - dword_56A2FC = 12; - dword_56A990 = 11; - dword_56A214 = 16; - dword_56A18C = -1; - dword_56A58C = 11; - dword_56AB04 = 14; - dword_56B198 = 13; - dword_56AA30 = 16; - dword_56A994 = -1; - dword_56AD94 = 13; - while ( 1 ) - { - v1 = *v0; - if ( !(_BYTE)v1 ) - break; - dword_567D68[v1] = 655363; - ++v0; - } - for ( i = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++i ) - { - v3 = *i; - if ( !(_BYTE)v3 ) - break; - dword_567D68[v3] = 131076; - } - dword_567E24 = 262147; - v4 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; - dword_567DEC = 33; - dword_567F44 = 22; - dword_568168 = -1; - dword_56FA98 = 34; - dword_56FDE4 = -1; - dword_56FE9C = 19; - dword_5701E8 = -1; - dword_56C260 = 20; - dword_56C5AC = 19; - dword_56C664 = 21; - dword_56C9B0 = 19; - dword_56CAAC = 524289; - dword_56CA68 = 21; - dword_56CDB4 = 19; - while ( 1 ) - { - v5 = *v4; - if ( !(_BYTE)v5 ) - break; - dword_568570[v5] = 4; - ++v4; - } - for ( j = "0123456789"; ; ++j ) - { - v7 = *j; - if ( !(_BYTE)v7 ) - break; - dword_568570[v7] = 4; - } - for ( k = " \n\t\r"; ; ++k ) - { - v9 = *k; - if ( !(_BYTE)v9 ) - break; - dword_568570[v9] = 655363; - } - dword_568664 = 131078; - v10 = " \n\t\r"; - dword_5685F8 = -1; - dword_568668 = 393217; - dword_56862C = 131090; - dword_568970 = 131075; - dword_568570[0] = -1; - while ( 1 ) - { - v11 = *v10; - if ( !(_BYTE)v11 ) - break; - dword_568D78[v11] = 655363; - ++v10; - } - for ( m = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++m ) - { - v13 = *m; - if ( !(_BYTE)v13 ) - break; - dword_568D78[v13] = 131077; - } - dword_568E00 = 131077; - v14 = " \n\t\r"; - dword_568E14 = 131081; - dword_568D78[0] = -1; - dword_569178 = -1; - while ( 1 ) - { - v15 = *v14; - if ( !(_BYTE)v15 ) - break; - dword_56816C[v15] = 524291; - ++v14; - } - for ( n = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++n ) - { - v17 = *n; - if ( !(_BYTE)v17 ) - break; - dword_56816C[v17] = 4; - } - for ( ii = "0123456789"; ; ++ii ) - { - v19 = *ii; - if ( !(_BYTE)v19 ) - break; - dword_56816C[v19] = -1; - } - dword_56825C = -1; - v20 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; - dword_5681F4 = 5; - dword_568208 = 9; - dword_568228 = 18; - dword_568264 = 262145; - dword_568260 = 6; - dword_56816C[0] = -1; - dword_56856C = -1; - while ( 1 ) - { - v21 = *v20; - if ( !(_BYTE)v21 ) - break; - dword_56BDA8[v21] = 131076; - ++v20; - } - dword_56BEA0 = 262145; - v22 = " \n\t\r"; - dword_56C1A8 = -1; - dword_568AE4 = 7; - dword_56899C = -1; - dword_56957C = 5; - dword_5691A4 = 655363; - dword_5689FC = 262147; - dword_568974 = -1; - dword_568D74 = 5; - dword_569AF4 = 10; - dword_5699AC = -1; - dword_56A188 = 9; - dword_569DB0 = 655363; - dword_569A20 = 262147; - dword_569984 = -1; - dword_569D84 = 9; - dword_56CF98 = 23; - dword_56D1B8 = 3145732; - dword_56D388 = 24; - dword_56D5BC = 3145732; - while ( 1 ) - { - v23 = *v22; - if ( !(_BYTE)v23 ) - break; - dword_56D5C0[v23] = 25; - ++v22; - } - dword_56D6B8 = 31; - v24 = " \n\t\r"; - dword_56D9C0 = 3145732; - dword_56DABC = 31; - dword_56DA80 = 32; - dword_56DDC4 = 25; - dword_56F6D8 = 262145; - dword_56F9E0 = 1048601; - dword_56F2CC = 131098; - dword_56F5DC = 31; - dword_56DE84 = 27; - dword_56E1C8 = (int)&loc_50001E + 1; - dword_56E3A8 = 28; - dword_56E5CC = (int)&loc_50001E + 1; - dword_56E7B0 = 29; - dword_56E9D0 = (int)&loc_50001E + 1; - dword_56EBA0 = 30; - dword_56EDD4 = (int)&loc_50001E + 1; - while ( 1 ) - { - v25 = *v24; - if ( !(_BYTE)v25 ) - break; - dword_56EDD8[v25] = 30; - ++v24; - } - dword_56EED0 = 524289; - dword_56F1D8 = -1; - dword_566564 = 1; - dword_566574 = 2; - dword_566584 = 2; - dword_5665DC = 3; - dword_5665E0 = 3; - } -} -// 566564: using guessed type int dword_566564; -// 566574: using guessed type int dword_566574; -// 566584: using guessed type int dword_566584; -// 5665DC: using guessed type int dword_5665DC; -// 5665E0: using guessed type int dword_5665E0; -// 567560: using guessed type int WXML::DOMLib::Machine::TT; -// 567964: using guessed type int dword_567964; -// 567A54: using guessed type int dword_567A54; -// 567B50: using guessed type int dword_567B50; -// 567D64: using guessed type int dword_567D64; -// 567D68: using guessed type int dword_567D68[33]; -// 567DEC: using guessed type int dword_567DEC; -// 567E24: using guessed type int dword_567E24; -// 567F44: using guessed type int dword_567F44; -// 568168: using guessed type int dword_568168; -// 56816C: using guessed type int dword_56816C[34]; -// 5681F4: using guessed type int dword_5681F4; -// 568208: using guessed type int dword_568208; -// 568228: using guessed type int dword_568228; -// 56825C: using guessed type int dword_56825C; -// 568260: using guessed type int dword_568260; -// 568264: using guessed type int dword_568264; -// 56856C: using guessed type int dword_56856C; -// 568570: using guessed type int dword_568570[34]; -// 5685F8: using guessed type int dword_5685F8; -// 56862C: using guessed type int dword_56862C; -// 568664: using guessed type int dword_568664; -// 568668: using guessed type int dword_568668; -// 568970: using guessed type int dword_568970; -// 568974: using guessed type int dword_568974; -// 56899C: using guessed type int dword_56899C; -// 5689FC: using guessed type int dword_5689FC; -// 568AE4: using guessed type int dword_568AE4; -// 568D74: using guessed type int dword_568D74; -// 568D78: using guessed type int dword_568D78[]; -// 568E00: using guessed type int dword_568E00; -// 568E14: using guessed type int dword_568E14; -// 569178: using guessed type int dword_569178; -// 5691A4: using guessed type int dword_5691A4; -// 56957C: using guessed type int dword_56957C; -// 569984: using guessed type int dword_569984; -// 5699AC: using guessed type int dword_5699AC; -// 569A20: using guessed type int dword_569A20; -// 569AF4: using guessed type int dword_569AF4; -// 569D84: using guessed type int dword_569D84; -// 569DB0: using guessed type int dword_569DB0; -// 56A188: using guessed type int dword_56A188; -// 56A18C: using guessed type int dword_56A18C; -// 56A214: using guessed type int dword_56A214; -// 56A2FC: using guessed type int dword_56A2FC; -// 56A58C: using guessed type int dword_56A58C; -// 56A990: using guessed type int dword_56A990; -// 56A994: using guessed type int dword_56A994; -// 56AA30: using guessed type int dword_56AA30; -// 56AB04: using guessed type int dword_56AB04; -// 56AD94: using guessed type int dword_56AD94; -// 56B198: using guessed type int dword_56B198; -// 56B388: using guessed type int dword_56B388; -// 56B59C: using guessed type int dword_56B59C; -// 56B5A0: using guessed type int dword_56B5A0; -// 56B628: using guessed type int dword_56B628; -// 56B63C: using guessed type int dword_56B63C; -// 56B794: using guessed type int dword_56B794; -// 56B9A0: using guessed type int dword_56B9A0; -// 56BB98: using guessed type int dword_56BB98; -// 56BDA4: using guessed type int dword_56BDA4; -// 56BDA8: using guessed type int dword_56BDA8[62]; -// 56BEA0: using guessed type int dword_56BEA0; -// 56C1A8: using guessed type int dword_56C1A8; -// 56C260: using guessed type int dword_56C260; -// 56C5AC: using guessed type int dword_56C5AC; -// 56C664: using guessed type int dword_56C664; -// 56C9B0: using guessed type int dword_56C9B0; -// 56CA68: using guessed type int dword_56CA68; -// 56CAAC: using guessed type int dword_56CAAC; -// 56CDB4: using guessed type int dword_56CDB4; -// 56CF98: using guessed type int dword_56CF98; -// 56D1B8: using guessed type int dword_56D1B8; -// 56D388: using guessed type int dword_56D388; -// 56D5BC: using guessed type int dword_56D5BC; -// 56D5C0: using guessed type int dword_56D5C0[62]; -// 56D6B8: using guessed type int dword_56D6B8; -// 56D9C0: using guessed type int dword_56D9C0; -// 56DA80: using guessed type int dword_56DA80; -// 56DABC: using guessed type int dword_56DABC; -// 56DDC4: using guessed type int dword_56DDC4; -// 56DE84: using guessed type int dword_56DE84; -// 56E1C8: using guessed type int dword_56E1C8; -// 56E3A8: using guessed type int dword_56E3A8; -// 56E5CC: using guessed type int dword_56E5CC; -// 56E7B0: using guessed type int dword_56E7B0; -// 56E9D0: using guessed type int dword_56E9D0; -// 56EBA0: using guessed type int dword_56EBA0; -// 56EDD4: using guessed type int dword_56EDD4; -// 56EDD8: using guessed type int dword_56EDD8[62]; -// 56EED0: using guessed type int dword_56EED0; -// 56F1D8: using guessed type int dword_56F1D8; -// 56F2CC: using guessed type int dword_56F2CC; -// 56F5DC: using guessed type int dword_56F5DC; -// 56F6D8: using guessed type int dword_56F6D8; -// 56F9E0: using guessed type int dword_56F9E0; -// 56FA98: using guessed type int dword_56FA98; -// 56FDE4: using guessed type int dword_56FDE4; -// 56FE9C: using guessed type int dword_56FE9C; -// 5701E8: using guessed type int dword_5701E8; -// 5806EC: using guessed type int dword_5806EC; -// 668560: using guessed type char WXML::DOMLib::Machine::InitTransitTable(void)::bInited; - -//----- (0042A6F2) -------------------------------------------------------- -void __thiscall WXML::DOMLib::Machine::Machine(int this, int a2) -{ - int v2; // [esp+14h] [ebp-44h] - - *(_DWORD *)(this + 32) = 0; - v2 = this + 28; - *(_BYTE *)(this + 36) = 0; - *(_DWORD *)(this + 28) = this + 36; - WXML::DOMLib::Machine::InitTransitTable(); - std::string::_M_assign(v2, a2); -} - -//----- (0042A78B) -------------------------------------------------------- -int __usercall std::__relocate_a_1>@( - int a1@, - int a2@, - int a3@) -{ - int v6; // ecx - _DWORD *v7; // ecx - int v8; // ecx - - while ( a1 != a2 ) - { - v6 = *(_DWORD *)(a1 + 4); - *(_DWORD *)a3 = *(_DWORD *)a1; - *(_DWORD *)(a3 + 4) = v6; - if ( v6 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v6); - *(_DWORD *)(a3 + 8) = *(_DWORD *)(a1 + 8); - *(_DWORD *)(a3 + 12) = *(_DWORD *)(a1 + 12); - *(_DWORD *)(a3 + 16) = *(_DWORD *)(a1 + 16); - *(_DWORD *)(a3 + 20) = *(_DWORD *)(a1 + 20); - *(_DWORD *)(a3 + 24) = *(_DWORD *)(a1 + 24); - *(_BYTE *)(a3 + 28) = *(_BYTE *)(a1 + 28); - std::string::basic_string((_DWORD *)(a3 + 32), (_DWORD *)(a1 + 32)); - *(_DWORD *)(a3 + 56) = *(_DWORD *)(a1 + 56); - std::string::basic_string((_DWORD *)(a3 + 60), (_DWORD *)(a1 + 60)); - v7 = (_DWORD *)(a3 + 88); - a3 += 112; - *(_BYTE *)(a3 - 28) = *(_BYTE *)(a1 + 84); - std::string::basic_string(v7, (_DWORD *)(a1 + 88)); - v8 = a1; - a1 += 112; - WXML::DOMLib::Token::~Token(v8); - } - return a3; -} - -//----- (0042A82E) -------------------------------------------------------- -int __thiscall WXML::DOMLib::Machine::Feed( - struct _Unwind_Exception *this, - char a2, - int a3, - unsigned __int8 **a4, - int a5, - int a6) -{ - struct _Unwind_Exception *v6; // eax - std::ostream::sentry *v7; // eax - std::ostream::sentry *v8; // eax - std::ostream::sentry *v9; // eax - std::ostream::sentry *v10; // eax - std::ostream::sentry *v11; // eax - std::ostream::sentry *v12; // eax - std::ostream::sentry *v13; // eax - std::ostream::sentry *v14; // eax - struct _Unwind_Exception *v15; // ebx - unsigned __int8 v16; // cf - int v17; // eax - int v18; // edx - int v19; // edx - int v20; // ecx - struct _Unwind_Exception *v21; // esi - int v22; // eax - int v23; // edx - int v24; // ebx - int v25; // esi - int v26; // esi - struct _Unwind_Exception *v27; // esi - int v28; // eax - int v29; // eax - int v30; // ecx - struct _Unwind_Exception *v31; // esi - int v32; // eax - int v33; // edx - int v34; // ebx - int v35; // ecx - int v36; // ecx - int v37; // ecx - int v38; // eax - int v39; // eax - int v40; // ecx - struct _Unwind_Exception *v41; // edx - const WXML::DOMLib::Token *v43; // [esp+4h] [ebp-154h] - int v44; // [esp+18h] [ebp-140h] - int v45; // [esp+1Ch] [ebp-13Ch] - signed __int32 v46; // [esp+24h] [ebp-134h] BYREF - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-130h] - void *v48[6]; // [esp+68h] [ebp-F0h] BYREF - int v49; // [esp+80h] [ebp-D8h] BYREF - int v50; // [esp+84h] [ebp-D4h] - int v51; // [esp+88h] [ebp-D0h] BYREF - int v52; // [esp+8Ch] [ebp-CCh] BYREF - int v53; // [esp+90h] [ebp-C8h] - int v54; // [esp+94h] [ebp-C4h] - int v55; // [esp+98h] [ebp-C0h] - char v56; // [esp+9Ch] [ebp-BCh] - char *v57; // [esp+A0h] [ebp-B8h] - int v58; // [esp+A4h] [ebp-B4h] - char v59[16]; // [esp+A8h] [ebp-B0h] BYREF - int v60; // [esp+B8h] [ebp-A0h] - char *v61; // [esp+BCh] [ebp-9Ch] - int v62; // [esp+C0h] [ebp-98h] - char v63[16]; // [esp+C4h] [ebp-94h] BYREF - char v64; // [esp+D4h] [ebp-84h] - char *v65; // [esp+D8h] [ebp-80h] - int v66; // [esp+DCh] [ebp-7Ch] - char v67[120]; // [esp+E0h] [ebp-78h] BYREF - - lpuexcpt = this; - LOBYTE(v46) = a2; - if ( a2 == '\n'/*10*/ ) - { - v6 = lpuexcpt; - // this->offset_8(lineCount) - ++*((_DWORD *)lpuexcpt + 2); - // this->offset_12(lineLength) - *((_DWORD *)v6 + 3) = 0; - } - // v44 喂入的字符 - v44 = (unsigned __int8)v46; - do - { - // offset_24 - v45 = *((_DWORD *)lpuexcpt + 6); - // v44 喂入的字符 - v46 = WXML::DOMLib::Machine::TT[257 * v45 + v44]; - if ( !v46 ) - { - v46 = dword_567960[257 * v45]; - if ( !v46 ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v49); - std::operator<<>((std::ostream::sentry *)&v51, "BAD STATE MACHINE! AT INPUT "); - v7 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpt + 6)); // offset 4 * 6 = 24 - v8 = std::operator<<>(v7, " "); - std::operator<<>(v8, a2); - std::stringbuf::str((int)v48, (int)&v52); -LABEL_12: - std::string::operator=(a4, (int)v48); - std::string::_M_dispose(v48); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v49); - return -1; - } - } - if ( v46 < 0 ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v49); - v9 = std::operator<<((std::ostream::sentry *)&v51, (int *)lpuexcpt + 7); // 文件路径,偏移:4 * 7 = 28 - std::operator<<>(v9, ":"); - // inc - v10 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpt + 2)); // 行数,偏移:4 * 2 = 8 - std::operator<<>(v10, ":"); - // lineLength - v11 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpt + 3)); // 行长度,偏移:4 * 3 = 12 - v12 = std::operator<<>(v11, ": "); - if ( a2 ) - { - v13 = std::operator<<>(v12, "unexpected character `"); - v14 = std::operator<<>(v13, a2); // 喂入的字符 - std::operator<<>(v14, "`"); - } - else - { - std::operator<<>(v12, "unexpected end"); - } - std::stringbuf::str((int)v48, (int)&v52); - goto LABEL_12; // 错误,返回 - } - v15 = lpuexcpt; - v16 = _bittest(&v46, 0x15u); - // v46 从TT中取出的 - // this->offset_24 - *((_DWORD *)lpuexcpt + 6) = (unsigned __int16)v46; - if ( v16 ) // if(_bittest(&v46, 0x15u)) - { - // v15 this 基址 - // this->offset_4 - v17 = *((_DWORD *)v15 + 1); - // fileLength > (v17 offset_4) - if ( *(_DWORD *)v15 > v17 ) - { - // this->offset_4存起来,有用;偏移 4 * 1 = 4 - v53 = *((_DWORD *)v15 + 1); // v49.offset_16 - v57 = v59; - v61 = v63; - v65 = v67; - // v18 外面不会用;偏移 4 * 4 = 16 - v18 = *((_DWORD *)v15 + 4); - // this->offset_4++; v17是offset_4的值 - *((_DWORD *)v15 + 1) = v17 + 1; - // v18是offset_16的值 - v51 = v18; // v49.offset_8 - // this->offset_20 暂存,有用;偏移 4 * 5 = 20 - v19 = *((_DWORD *)v15 + 5); - v49 = 0; - v52 = v19; // v49.offset_12 - // this->offset_20++ - *((_DWORD *)v15 + 5) = v19 + 1; - v50 = 0; // v49.offset_4 - v58 = 0; - v59[0] = 0; - v62 = 0; - v63[0] = 0; - v66 = 0; - v67[0] = 0; - v56 = 0; - v64 = 0; - v60 = -1; - v54 = 1; // v49.offset_20 - v55 = 0; // v49.offset_24 - std::vector::push_back(a3, (WXML::DOMLib::Token *)&v49); - // a3.push_back(); - WXML::DOMLib::Token::~Token((int)&v49); - } - } - // v46 从TT中取出的 - if ( _bittest(&v46, 0x16u) ) - { - // int a5; a5+4 -> a5.offset_4 end - WXML::DOMLib::Token::Token((int)&v49, (WXML::DOMLib::Token *)(*(_DWORD *)(a5 + 4) - 112), v43); - // 4 a5.offset_4 - v20 = *(_DWORD *)(a5 + 4) - 112; - // 4 a5.offset_4 - *(_DWORD *)(a5 + 4) = v20; - WXML::DOMLib::Token::~Token(v20); - v21 = lpuexcpt; - // offset 4 * 4 = offset_16 - *((_DWORD *)lpuexcpt + 4) = v51; - // offset 4 * 5 = offset_20 - *((_DWORD *)v21 + 5) = v52; - // offset 4 * 1 = offset_4 - *((_DWORD *)v21 + 1) = v53; - WXML::DOMLib::Token::~Token((int)&v49); - } - } - while ( _bittest(&v46, 0x14u) ); - - // v46 从TT中取出的 - if ( _bittest(&v46, 0x11u) ) - { - v22 = *(_DWORD *)lpuexcpt; // this->offset_0 - v23 = *((_DWORD *)lpuexcpt + 1); // this->offset_4 - // offset_1 < offset_0 - if ( v23 < *(_DWORD *)lpuexcpt ) - { - // lineLength this.offset_12 - v24 = *((_DWORD *)lpuexcpt + 3); - v49 = 0; // v49.offset_0 - v57 = v59; - v61 = v63; - v65 = v67; - v50 = 0; // v50 -> v49.offset_4 - // this.offset_16 - v25 = *((_DWORD *)lpuexcpt + 4); - v67[0] = 0; - v58 = 0; - // v51 -> v49.offset_8 = this.offset_16 - v51 = v25; - v59[0] = 0; - // this.offset_20 - v26 = *((_DWORD *)lpuexcpt + 5); - v63[0] = 0; - v62 = 0; - // v52 -> v49.offset_12 = this.offset_20 - v52 = v26; - v66 = 0; - // v54 -> v49.offset_20 = this.offset_0(fileLength) - this.offset_4 - v54 = v22 - v23; - v27 = lpuexcpt; - // v56 -> v49.offset_28 - v56 = 0; - // this.offset_4 = this.offset_0(fileLength) - *((_DWORD *)lpuexcpt + 1) = v22; - // this.offset_8 - v28 = *((_DWORD *)v27 + 2); - // this.offset_20 = this.offset_12(lineLength) - *((_DWORD *)v27 + 5) = v24; - // this.offset_16 = this.offset_8(lineCount) - *((_DWORD *)v27 + 4) = v28; - v64 = 0; - // v45 offset_24 - v29 = WXML::DOMLib::Machine::STT[v45]; - // v53 -> v49.offset_16 = this->offset_4 修改之前的 - v53 = v23; - v60 = -1; // offset_56 - /* - v49 offset_0 - - v50 - - v60 offset_56 - */ - // v55 -> v49.offset_24 - v55 = v29; - if ( v29 == 3 ) - v30 = a5; - else - v30 = a3; - std::vector::push_back(v30, (WXML::DOMLib::Token *)&v49); - WXML::DOMLib::Token::~Token((int)&v49); - } - } - - // this - v31 = lpuexcpt; - // offset_0 + 1 fileLength - v32 = *(_DWORD *)lpuexcpt + 1; - // offset_12 + 1 lineLength - v33 = *((_DWORD *)lpuexcpt + 3) + 1; - v16 = _bittest(&v46, 0x12u); - *(_DWORD *)lpuexcpt = v32; - *((_DWORD *)v31 + 3) = v33; - if ( v16 ) - { - v34 = v32; - v67[0] = 0; - v57 = v59; - v61 = v63; - v65 = v67; - // this->offset_16 - v35 = *((_DWORD *)v31 + 4); - // v49.offset_0 - v49 = 0; - // v49.offset_8 = this->offset_16 - v51 = v35; - // this->offset_20 - v36 = *((_DWORD *)v31 + 5); - // v49.offset_4 - v50 = 0; - // token.offset_12 = this->offset_20 - v52 = v36; - // v37 = this.offset_4 - v37 = *((_DWORD *)v31 + 1); - // this.offset_4 = this.offset_0 + 1 = this->fileLength 加一之后的值 - *((_DWORD *)v31 + 1) = v32; - // this.offset_8(lineCount) - v38 = *((_DWORD *)v31 + 2); - // this.offset_20 = this.offset_12(lineLength) 加一之后的值 - *((_DWORD *)v31 + 5) = v33; - // this.offset_16 = this.offset_8(lineCount) - *((_DWORD *)v31 + 4) = v38; - v58 = 0; - v39 = WXML::DOMLib::Machine::STT[v45]; - v59[0] = 0; - v62 = 0; - // token.offset_24 - v55 = v39; - v63[0] = 0; - v66 = 0; - v56 = 0; - v64 = 0; - v60 = -1; - // token.offset_16 = this->offset_4 修改之前的值 - v53 = v37; - // v49.offset_20 = (this->offset_0 + 1)fileLength - this->offset_4 - v54 = v34 - v37; - if ( v39 == 3 ) - v40 = a5; - else - v40 = a3; - std::vector::push_back(v40, (WXML::DOMLib::Token *)&v49); - WXML::DOMLib::Token::~Token((int)&v49); - } - v46 &= 0x80000u; - if ( v46 ) - { - v41 = lpuexcpt; - v46 = 0; - *((_DWORD *)lpuexcpt + 1) = *(_DWORD *)lpuexcpt; - *((_DWORD *)v41 + 5) = *((_DWORD *)v41 + 3); - } - return v46; -} -// 42AC48: variable 'v43' is possibly undefined -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 566560: using guessed type int WXML::DOMLib::Machine::STT[]; -// 567560: using guessed type int WXML::DOMLib::Machine::TT[]; -// 567960: using guessed type int dword_567960[]; - -//----- (0042AF82) -------------------------------------------------------- -void __thiscall std::__shared_ptr::operator=(_DWORD *this, _DWORD *a2) -{ - int v2; // esi - volatile signed __int32 *v4; // ecx - - v2 = a2[1]; - *this = *a2; - if ( v2 != this[1] ) - { - if ( v2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v2); - v4 = (volatile signed __int32 *)this[1]; - if ( v4 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v4); - this[1] = v2; - } -} - -//----- (0042AFB8) -------------------------------------------------------- -int __thiscall WXML::DOMLib::Tokenizer::GetTokens(_DWORD *this, _DWORD *a2, int a3, _DWORD *a4) -{ - struct _Unwind_Exception *v5; // ecx - unsigned int v6; // ebx - unsigned int v7; // edx - int v8; // eax - unsigned int v9; // edi - int v10; // eax - int v11; // eax - unsigned int v13; // [esp+28h] [ebp-20h] - struct _Unwind_Exception *v14; // [esp+2Ch] [ebp-1Ch] - int v15; // [esp+2Ch] [ebp-1Ch] - - WXML::DOMLib::Machine::Reset(this + 2); - if ( *this ) - { - v7 = 0; - v6 = 0; - // v7在递增 - while ( *(_DWORD *)(*this + 4) > v7 ) - { - // v6 Feed失败 - if ( v6 ) - return v6; - v13 = v7; - // v14 没用; v5 machine - v14 = v5; - v8 = WXML::DOMLib::Machine::Feed( - v5, - *(_BYTE *)(*(_DWORD *)*this + v7), - (int)a2, - (unsigned __int8 **)a3, - (int)a4, - 0); - v5 = v14; - // v8 中转 - v6 = v8; - v7 = v13 + 1; - } - if ( !v6 ) - { - // 上面Feed是成功的 - v9 = 0; - // 喂了一个0 - v15 = WXML::DOMLib::Machine::Feed(v5, 0, (int)a2, (unsigned __int8 **)a3, (int)a4, 0); - // std::vector a2 a4 - // a2[1] - *a2 = a2[1] - a2[0] = 起点与终点地址差 - while ( -1227133513 * ((a2[1] - *a2) >> 4) > v9 ) - { - v10 = 112 * v9++; - std::__shared_ptr::operator=((_DWORD *)(v10 + *a2), this); - } - while ( -1227133513 * ((a4[1] - *a4) >> 4) > v6 ) - { - v11 = 112 * v6++; - std::__shared_ptr::operator=((_DWORD *)(v11 + *a4), this); - } - return v15; - } - } - else - { - v6 = -1; - std::string::_M_replace( - (unsigned int *)a3, - 0, - *(_DWORD *)(a3 + 4), - "FATAL: no source was set or failed to allocate space for input source", - 0x45u); - } - return v6; -} -// 42B035: variable 'v5' is possibly undefined - -//----- (0042B0EE) -------------------------------------------------------- -void __thiscall WXML::DOMLib::Tokenizer::Tokenizer(_DWORD *this, char *Str, int a3) -{ - size_t v3; // eax - unsigned int v4; // eax - volatile signed __int32 *v5; // eax - int v6; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-58h] - _BYTE **Block; // [esp+18h] [ebp-50h] - int v10; // [esp+50h] [ebp-18h] BYREF - volatile signed __int32 *v11; // [esp+54h] [ebp-14h] BYREF - _BYTE *v12; // [esp+58h] [ebp-10h] BYREF - volatile signed __int32 *v13; // [esp+5Ch] [ebp-Ch] BYREF - - *this = 0; - this[1] = 0; - WXML::DOMLib::Machine::Machine((int)(this + 2), a3); - Block = (_BYTE **)operator new(0x18u); - v3 = strlen(Str) + 1; - v12 = (_BYTE *)v3; - *Block = Block + 2; - lpuexcpt = (struct _Unwind_Exception *)&Str[v3]; - if ( v3 > 0xF ) - { - *Block = std::string::_M_create((unsigned int *)&v12, 0); - Block[2] = v12; - } - std::string::_S_copy_chars(*Block, (unsigned __int8 *)Str, (size_t)lpuexcpt); - v4 = (unsigned int)v12; - Block[1] = v12; - (*Block)[v4] = 0; - v11 = 0; - v12 = Block; - v13 = 0; - v5 = (volatile signed __int32 *)operator new(0x10u); - *((_DWORD *)v5 + 1) = 1; - *((_DWORD *)v5 + 2) = 1; - *((_DWORD *)v5 + 3) = Block; - v6 = (int)v12; - *v5 = (volatile signed __int32)&off_5603EC; - v10 = v6; - v12 = 0; - v13 = v11; - v11 = v5; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v13); - std::__shared_ptr::operator=(this, &v10); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v11); -} -// 5603EC: using guessed type int (*off_5603EC)(); - -//----- (0042B2F0) -------------------------------------------------------- -void __tcf_1_4(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (0042B2FA) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) -{ - return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); -} - -//----- (0042B31A) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str) -{ - unsigned int v2; // eax - - v2 = strlen(Str); - if ( v2 > 0x3FFFFFFF - this[1] ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - return std::string::_M_append(this, Str, v2); -} - -//----- (0042B360) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, this[1], Str, v2); -} - -//----- (0042B39D) -------------------------------------------------------- -std::ostream::sentry *__usercall std::operator<<>@( - std::ostream::sentry *a1@, - char a2@
) -{ - int v3[3]; // [esp+1Ch] [ebp-Ch] BYREF - - LOBYTE(v3[0]) = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 42B39D: using guessed type int var_C[3]; - -//----- (0042B3C0) -------------------------------------------------------- -size_t __thiscall std::string::basic_string(void **this, char *Str) -{ - char *v3; // edi - size_t result; // eax - _BYTE *v5; // edx - size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = strlen(Str); - v3 = &Str[v6[0]]; - if ( v6[0] > 0xF ) - { - *this = std::string::_M_create(v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); - result = v6[0]; - v5 = *this; - this[1] = (void *)v6[0]; - v5[result] = 0; - return result; -} -// 42B3C0: using guessed type size_t var_1C[7]; - -//----- (0042B43D) -------------------------------------------------------- -std::ostream::sentry *__cdecl WXML::EXPRLib::OutputAsStringOrKeyWord(int a1, int *a2, int a3, _BYTE *a4) -{ - std::ostream::sentry *v4; // ebx - std::ostream::sentry *v5; // eax - bool v6; // al - std::ostream::sentry *v7; // eax - std::ostream::sentry *v8; // eax - std::ostream::sentry *v10; // [esp+30h] [ebp+8h] - char *v11; // [esp+34h] [ebp+Ch] - - v4 = (std::ostream::sentry *)(a1 + 8); - if ( std::operator==((int)a2, "true") ) - { - v5 = std::operator<<>(v4, WXML::EXPRLib::OPShort::CONST); - v11 = ",true"; -LABEL_8: - v10 = v5; - return std::operator<<>(v10, v11); - } - if ( std::operator==((int)a2, "false") ) - { - v5 = std::operator<<>(v4, WXML::EXPRLib::OPShort::CONST); - v11 = ",false"; - goto LABEL_8; - } - v6 = std::operator==((int)a2, "$global"); - *a4 = 1; - if ( !v6 ) - { - v7 = std::operator<<>(v4, WXML::EXPRLib::OPShort::NAME); - v8 = std::operator<<>(v7, ",'"); - v5 = std::operator<<(v8, a2); - v11 = (char *)off_5542FA; - goto LABEL_8; - } - v10 = (std::ostream::sentry *)(a1 + 8); - v11 = (char *)WXML::EXPRLib::OPShort::CS_GLOBAL; - return std::operator<<>(v10, v11); -} -// 53E154: using guessed type void *WXML::EXPRLib::OPShort::CS_GLOBAL; - -//----- (0042B518) -------------------------------------------------------- -int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(int *this, int a2, int a3, _BYTE *a4) -{ - char *Literal; // eax - std::ostream::sentry *v5; // eax - const char *v6; // eax - std::ostream::sentry *v7; // eax - std::ostream::sentry *v8; // eax - std::ostream::sentry *v9; // eax - std::ostream::sentry *v10; // eax - std::ostream::sentry *v11; // eax - std::ostream::sentry *v12; // eax - std::ostream::sentry *v13; // eax - std::ostream::sentry *v14; // eax - std::ostream::sentry *v15; // eax - std::ostream::sentry *v16; // eax - std::ostream::sentry *v17; // eax - char *v18; // eax - std::ostream::sentry *v19; // eax - std::ostream::sentry *v20; // eax - std::ostream::sentry *v21; // eax - std::ostream::sentry *v22; // eax - std::ostream::sentry *v23; // eax - std::ostream::sentry *v24; // eax - std::ostream::sentry *v25; // eax - std::ostream::sentry *v26; // eax - std::ostream::sentry *v27; // eax - std::ostream::sentry *v28; // eax - std::ostream::sentry *v29; // eax - std::ostream::sentry *v30; // eax - std::ostream::sentry *v31; // eax - char *v33; // [esp+4h] [ebp-74h] - int v34; // [esp+4h] [ebp-74h] - _BYTE *v35; // [esp+8h] [ebp-70h] - std::ostream::sentry *v36; // [esp+10h] [ebp-68h] - std::ostream::sentry *v37; // [esp+10h] [ebp-68h] - std::ostream::sentry *i; // [esp+10h] [ebp-68h] - std::ostream::sentry *j; // [esp+10h] [ebp-68h] - std::ostream::sentry *v40; // [esp+10h] [ebp-68h] - std::ostream::sentry *k; // [esp+10h] [ebp-68h] - std::ostream::sentry *m; // [esp+10h] [ebp-68h] - std::ostream::sentry *n; // [esp+10h] [ebp-68h] - WXML::EXPRLib::Token *v44; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - void *v47[8]; // [esp+58h] [ebp-20h] BYREF - - // RenderAsOps - 0 - v36 = (std::ostream::sentry *)*this; - v44 = (WXML::EXPRLib::Token *)(a2 + 8); - std::operator<<>((std::ostream::sentry *)(a2 + 8), (char *)&off_5542FA[2]); - // v36 this - if ( *(_BYTE *)v36 == '$'/*36*/ ) - { - // this->offset_24 - v37 = (std::ostream::sentry *)(this + 6); - if ( std::operator==((int)this, "$VAR") ) - { - Literal = (char *)WXML::EXPRLib::Token::GetLiteral(this + 6); - std::string::basic_string(v47, Literal); - WXML::EXPRLib::OutputAsStringOrKeyWord(a2, (int *)v47, a3, a4); - std::string::_M_dispose(v47); - } - else if ( std::operator==((int)this, "$STRING") ) - { - v5 = std::operator<<>(v44, WXML::EXPRLib::OPShort::CONST); - std::operator<<>(v5, ",'"); - // this[9] -> this->offset_24->offset_12 -> v6 - // +4 -> length - lpuexcpta = (struct _Unwind_Exception *)(*(_DWORD *)(this[9] + 4) - 2); - v6 = WXML::EXPRLib::Token::GetLiteral(v37); - /** - * a2 stringstream - */ - WXML::Rewrite::ToStringCode((int)(v6 + 1), (int)lpuexcpta, a2); - std::operator<<>(v44, (char *)off_5542FA); - } - else - { - v7 = std::operator<<>(v44, WXML::EXPRLib::OPShort::CONST); - std::operator<<>(v7, ","); - v33 = (char *)WXML::EXPRLib::Token::GetLiteral(v37); - std::operator<<>(v44, v33); - } - goto LABEL_46; // << "]"; return - } - - // RenderAsOps - 5 - // v36 -> this - if ( *(_BYTE *)v36 == 'O'/*79*/ && *((_BYTE *)v36 + 1) == 'P'/*80*/ && *((_BYTE *)v36 + 2) == '_'/*95*/ ) - { - if ( std::operator==((int)this, "OP_PATH") ) - { - if ( this[14] - this[13] != 8 ) - goto LABEL_46; // << "]"; return - v8 = std::operator<<>(v44, (char *)&off_5542FA[2]); - v9 = std::operator<<>(v8, WXML::EXPRLib::OPShort::GET_FROM_ENV); - std::operator<<>(v9, "],"); - v35 = a4; - v34 = a3; - LABEL_16: - WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, v34, v35); - goto LABEL_46; // << "]"; return - } - if ( std::operator==((int)this, "OP_LIST") ) - { - v10 = std::operator<<>(v44, (char *)&off_5542FA[2]); - v11 = std::operator<<>(v10, WXML::EXPRLib::OPShort::MAKE_LIST); - std::operator<<>(v11, "]"); - std::operator<<>(v44, ","); - if ( this[13] == this[14] ) - goto LABEL_46; // << "]"; return - goto LABEL_15; - } - if ( std::operator==((int)this, "OP_LIST_CONCAT") ) - { - v12 = std::operator<<>(v44, (char *)&off_5542FA[2]); - v13 = std::operator<<>(v12, WXML::EXPRLib::OPShort::CON_LIST); - std::operator<<>(v13, "]"); - for ( i = 0; (this[14] - this[13]) >> 3 > (unsigned int)i; i = (std::ostream::sentry *)((char *)i + 1) ) - { - std::operator<<>(v44, ","); - WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); - } - } - else if ( std::operator==((int)this, "OP_DICT_CONCAT") ) - { - v14 = std::operator<<>(v44, (char *)&off_5542FA[2]); - v15 = std::operator<<>(v14, WXML::EXPRLib::OPShort::UNION_KV); - std::operator<<>(v15, "]"); - for ( j = 0; (this[14] - this[13]) >> 3 > (unsigned int)j; j = (std::ostream::sentry *)((char *)j + 1) ) - { - std::operator<<>(v44, ","); - WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); - } - } - else if ( std::operator==((int)this, "OP_MAKE_DICT") ) - { - v16 = std::operator<<>(v44, (char *)&off_5542FA[2]); - v17 = std::operator<<>(v16, WXML::EXPRLib::OPShort::MAKE_KV); - std::operator<<>(v17, "],"); - v40 = std::operator<<>(v44, (char *)off_5542FA); - v18 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); - v19 = std::operator<<>(v40, v18); - std::operator<<>(v19, "',"); - if ( (unsigned int)(this[14] - this[13]) <= 8 ) - { - std::operator<<>(v44, (char *)&off_5542FA[2]); - std::operator<<>(v44, "[7],"); - WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); - std::operator<<>(v44, "]"); - } - else - { - WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); - } - } - else - { - if ( std::operator==((int)this, "OP_EXPAND") ) - { - v20 = std::operator<<>(v44, (char *)&off_5542FA[2]); - v21 = std::operator<<>(v20, WXML::EXPRLib::OPShort::EX_DICT); - std::operator<<>(v21, "],"); - LABEL_15: - v35 = a4; - v34 = a3; - goto LABEL_16; - } - if ( std::operator==((int)this, "OP_DICT") ) - { - v22 = std::operator<<>(v44, (char *)&off_5542FA[2]); - v23 = std::operator<<>(v22, WXML::EXPRLib::OPShort::GET_NAME); - std::operator<<>(v23, "]"); - for ( k = 0; (this[14] - this[13]) >> 3 > (unsigned int)k; k = (std::ostream::sentry *)((char *)k + 1) ) - { - std::operator<<>(v44, ","); - WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); - } - } - else if ( std::operator==((int)this, "OP_FUNC") ) - { - v24 = std::operator<<>(v44, (char *)&off_5542FA[2]); - v25 = std::operator<<>(v24, WXML::EXPRLib::OPShort::DO_FUNC); - std::operator<<>(v25, "]"); - for ( m = 0; (this[14] - this[13]) >> 3 > (unsigned int)m; m = (std::ostream::sentry *)((char *)m + 1) ) - { - std::operator<<>(v44, ","); - WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); - } - } - } - } - // RenderAsOps - 10 - else - { - v26 = std::operator<<>(v44, (char *)&off_5542FA[2]); - v27 = std::operator<<>(v26, WXML::EXPRLib::OPShort::AOP); - v28 = std::operator<<>(v27, ","); - v29 = std::operator<<>(v28, (char *)off_5542FA); - v30 = std::operator<<(v29, this); - v31 = std::operator<<>(v30, (char *)off_5542FA); - std::operator<<>(v31, "]"); - std::operator<<>(v44, ","); - // 13 * 4 = 52 - for ( n = 0; (this[14] - this[13]) >> 3 > (unsigned int)n; n = (std::ostream::sentry *)((char *)n + 1) ) - { - if ( n ) - std::operator<<>(v44, ","); - WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); - } - } - // RenderAsOps - 15 -LABEL_46: - std::operator<<>(v44, "]"); - return 0; -} - -//----- (0042BD94) -------------------------------------------------------- -bool __usercall __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>@( - char **a1@, - int a2@) -{ - return std::operator==(a2, *a1); -} - -//----- (0042BDAA) -------------------------------------------------------- -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(int *this, int a2) -{ - *this = a2; - if ( a2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(a2); -} - -//----- (0042BDC4) -------------------------------------------------------- -void __fastcall WXML::EXPRLib::ExprSyntaxTree::~ExprSyntaxTree(int a1) -{ - int v2; // edi - int i; // esi - volatile signed __int32 **v4; // ecx - - v2 = *(_DWORD *)(a1 + 56); - for ( i = *(_DWORD *)(a1 + 52); v2 != i; i += 8 ) - { - v4 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - if ( *(_DWORD *)(a1 + 52) ) - operator delete(*(void **)(a1 + 52)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 40)); - std::string::_M_dispose((void **)a1); -} - -//----- (0042BE0C) -------------------------------------------------------- -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, int a2) -{ - if ( *this != (volatile signed __int32 *)a2 ) - { - if ( a2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(a2); - if ( *this ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); - *this = (volatile signed __int32 *)a2; - } -} - -//----- (0042BE38) -------------------------------------------------------- -int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderCode( - int *this, - WXML::EXPRLib::Token *a2, - int *a3, - int *a4, - int *a5, - int *a6, - int *a7, - char a8, - int a9) -{ - _BYTE *v9; // eax - char v10; // dl - std::ostream::sentry *v11; // eax - std::ostream::sentry *v12; // eax - std::ostream::sentry *v13; // eax - std::ostream::sentry *v14; // eax - std::ostream::sentry *v15; // eax - char v16; // dl - std::ostream::sentry *v17; // eax - std::ostream::sentry *v18; // eax - std::ostream::sentry *v19; // eax - std::ostream::sentry *v20; // eax - std::ostream::sentry *v21; // eax - std::ostream::sentry *v22; // eax - std::ostream::sentry *v23; // eax - char *Literal; // eax - std::ostream::sentry *v25; // eax - std::ostream::sentry *v26; // eax - std::ostream::sentry *v27; // eax - std::ostream::sentry *v28; // eax - std::ostream::sentry *v29; // eax - char *v30; // eax - std::ostream::sentry *v31; // eax - std::ostream::sentry *v32; // eax - std::ostream::sentry *v33; // eax - std::ostream::sentry *v34; // eax - std::ostream::sentry *v35; // eax - std::ostream::sentry *v36; // eax - std::ostream::sentry *v37; // eax - std::ostream::sentry *v38; // eax - const char *v39; // eax - std::ostream::sentry *v40; // eax - std::ostream::sentry *v41; // eax - std::ostream::sentry *v42; // eax - std::ostream::sentry *v43; // eax - int v44; // edx - char *v45; // eax - std::ostream::sentry *v46; // eax - std::ostream::sentry *v47; // eax - std::ostream::sentry *v48; // eax - std::ostream::sentry *v49; // eax - std::ostream::sentry *v50; // eax - char *v51; // eax - std::ostream::sentry *v52; // eax - std::ostream::sentry *v53; // eax - std::ostream::sentry *v54; // eax - std::ostream::sentry *v55; // eax - std::ostream::sentry *v56; // eax - int v57; // edx - std::ostream::sentry *v58; // eax - std::ostream::sentry *v59; // eax - std::ostream::sentry *v60; // eax - std::ostream::sentry *v61; // eax - int v62; // edx - std::ostream::sentry *v63; // eax - char *v64; // eax - std::ostream::sentry *v65; // eax - std::ostream::sentry *v66; // eax - char *v67; // eax - std::ostream::sentry *v68; // eax - std::ostream::sentry *v69; // eax - std::ostream::sentry *v70; // eax - char *v71; // eax - std::ostream::sentry *v72; // eax - std::ostream::sentry *v73; // eax - std::ostream::sentry *v74; // eax - char *v75; // eax - std::ostream::sentry *v76; // eax - char *v77; // eax - std::ostream::sentry *v78; // eax - char *v79; // eax - std::ostream::sentry *v80; // eax - std::ostream::sentry *v81; // eax - std::ostream::sentry *v82; // eax - std::ostream::sentry *v83; // eax - std::ostream::sentry *v84; // eax - std::ostream::sentry *v85; // eax - std::ostream::sentry *v86; // eax - std::ostream::sentry *v87; // eax - std::ostream::sentry *v88; // eax - std::ostream::sentry *v89; // eax - std::ostream::sentry *v90; // eax - std::ostream::sentry *v91; // eax - std::ostream::sentry *v92; // eax - std::ostream::sentry *v93; // eax - std::ostream::sentry *v94; // eax - std::ostream::sentry *v95; // eax - std::ostream::sentry *v96; // eax - std::ostream::sentry *v97; // eax - std::ostream::sentry *v98; // eax - std::ostream::sentry *v99; // eax - std::ostream::sentry *v100; // eax - std::ostream::sentry *v101; // eax - std::ostream::sentry *v102; // eax - std::ostream::sentry *v103; // eax - std::ostream::sentry *v104; // eax - std::ostream::sentry *v105; // eax - std::ostream::sentry *v106; // eax - std::ostream::sentry *v107; // eax - std::ostream::sentry *v108; // eax - std::ostream::sentry *v109; // eax - std::ostream::sentry *v110; // eax - std::ostream::sentry *v111; // eax - std::ostream::sentry *v112; // eax - std::ostream::sentry *v113; // eax - std::ostream::sentry *v114; // eax - std::ostream::sentry *v115; // eax - std::ostream::sentry *v116; // eax - std::ostream::sentry *v117; // eax - std::ostream::sentry *v118; // eax - std::ostream::sentry *v119; // eax - int *v120; // ecx - std::ostream::sentry *v121; // eax - std::ostream::sentry *v122; // eax - std::ostream::sentry *v123; // eax - std::ostream::sentry *v124; // eax - std::ostream::sentry *v125; // eax - std::ostream::sentry *v126; // eax - std::ostream::sentry *v127; // eax - std::ostream::sentry *v128; // eax - std::ostream::sentry *v129; // eax - std::ostream::sentry *v130; // eax - std::ostream::sentry *v131; // eax - std::ostream::sentry *v132; // eax - std::ostream::sentry *v133; // eax - std::ostream::sentry *v134; // eax - std::ostream::sentry *v135; // eax - std::ostream::sentry *v136; // eax - std::ostream::sentry *v137; // eax - std::ostream::sentry *v138; // eax - std::ostream::sentry *v139; // eax - std::ostream::sentry *v140; // eax - std::ostream::sentry *v141; // eax - std::ostream::sentry *v142; // eax - std::ostream::sentry *v143; // eax - std::ostream::sentry *v144; // eax - std::ostream::sentry *v145; // eax - std::ostream::sentry *v146; // eax - int v147; // eax - std::ostream::sentry *v148; // eax - std::ostream::sentry *v149; // eax - std::ostream::sentry *v150; // eax - std::ostream::sentry *v151; // eax - std::ostream::sentry *v152; // eax - std::ostream::sentry *v153; // eax - std::ostream::sentry *v154; // eax - std::ostream::sentry *v155; // eax - std::ostream::sentry *v156; // eax - std::ostream::sentry *v157; // eax - std::ostream::sentry *v158; // eax - char *v160; // [esp+4h] [ebp-C4h] - char *v161; // [esp+4h] [ebp-C4h] - std::ostream::sentry *v162; // [esp+28h] [ebp-A0h] - std::ostream::sentry *v163; // [esp+2Ch] [ebp-9Ch] - std::ostream::sentry *v164; // [esp+2Ch] [ebp-9Ch] - const char *v165; // [esp+30h] [ebp-98h] - std::ostream::sentry *v166; // [esp+30h] [ebp-98h] - std::ostream::sentry *v167; // [esp+30h] [ebp-98h] - std::ostream::sentry *v168; // [esp+30h] [ebp-98h] - std::ostream::sentry *v169; // [esp+30h] [ebp-98h] - std::ostream::sentry *v170; // [esp+30h] [ebp-98h] - std::ostream::sentry *v171; // [esp+30h] [ebp-98h] - std::ostream::sentry *v172; // [esp+30h] [ebp-98h] - std::ostream::sentry *v173; // [esp+30h] [ebp-98h] - std::ostream::sentry *v174; // [esp+34h] [ebp-94h] - std::ostream::sentry *i; // [esp+34h] [ebp-94h] - std::ostream::sentry *j; // [esp+34h] [ebp-94h] - char *Str1a; // [esp+38h] [ebp-90h] - std::ostream::sentry *Str1b; // [esp+38h] [ebp-90h] - std::ostream::sentry *Str1c; // [esp+38h] [ebp-90h] - char *Str1d; // [esp+38h] [ebp-90h] - char *Str1e; // [esp+38h] [ebp-90h] - int v183[2]; // [esp+78h] [ebp-50h] BYREF - char v184; // [esp+80h] [ebp-48h] BYREF - int v185; // [esp+90h] [ebp-38h] BYREF - int v186; // [esp+94h] [ebp-34h] - char v187[16]; // [esp+98h] [ebp-30h] BYREF - int v188; // [esp+A8h] [ebp-20h] BYREF - int v189; // [esp+ACh] [ebp-1Ch] - char v190[24]; // [esp+B0h] [ebp-18h] BYREF - - v9 = (_BYTE *)*this; - v10 = *(_BYTE *)*this; - if ( v10 == 36 ) - { - v163 = (std::ostream::sentry *)(this + 6); - v174 = (WXML::EXPRLib::Token *)((char *)a2 + 8); - if ( std::operator==((int)this, "$VAR") ) - { - Str1a = (char *)WXML::EXPRLib::Token::GetLiteral(v163); - if ( !strcmp(Str1a, "true") ) - { - v11 = std::operator<<>(v174, "var "); - v12 = std::operator<<(v11, a3); - v13 = std::operator<<>(v12, "=true"); -LABEL_7: - v16 = a8; -LABEL_8: - std::operator<<>(v13, v16); - return 0; - } - if ( !strcmp(Str1a, "false") ) - { - v14 = std::operator<<>(v174, "var "); - v15 = std::operator<<(v14, a3); - v13 = std::operator<<>(v15, "=false"); - goto LABEL_7; - } - if ( !strcmp(Str1a, "$global") ) - { - v17 = std::operator<<>(v174, "var "); - v18 = std::operator<<(v17, a3); - v19 = std::operator<<>(v18, "="); - v13 = std::operator<<(v19, a6); - goto LABEL_7; - } - v20 = std::operator<<>(v174, "var "); - v21 = std::operator<<(v20, a3); - std::operator<<>(v21, a8); - v22 = std::operator<<>(v174, "if(typeof("); - v23 = std::operator<<(v22, a5); - Str1b = std::operator<<>(v23, "."); - Literal = (char *)WXML::EXPRLib::Token::GetLiteral(v163); - v25 = std::operator<<>(Str1b, Literal); - v26 = std::operator<<>(v25, ")!='undefined')"); - v27 = std::operator<<(v26, a3); - v28 = std::operator<<>(v27, "="); - v29 = std::operator<<(v28, a5); - Str1c = std::operator<<>(v29, "."); - v30 = (char *)WXML::EXPRLib::Token::GetLiteral(v163); - v31 = std::operator<<>(Str1c, v30); - std::operator<<>(v31, a8); - v32 = std::operator<<>(v174, "else "); - v33 = std::operator<<(v32, a3); - v34 = std::operator<<>(v33, "="); - v35 = std::operator<<(v34, a4); - v36 = std::operator<<>(v35, "."); - } - else - { - if ( std::operator==((int)this, "$STRING") ) - { - v37 = std::operator<<>(v174, "var "); - v38 = std::operator<<(v37, a3); - std::operator<<>(v38, "=\""); - Str1d = (char *)(*(_DWORD *)(this[9] + 4) - 2); - v39 = WXML::EXPRLib::Token::GetLiteral(v163); - WXML::Rewrite::ToStringCode((int)(v39 + 1), (int)Str1d, (int)a2); - v13 = std::operator<<>(v174, "\""); - goto LABEL_7; - } - v40 = std::operator<<>(v174, "var "); - v41 = std::operator<<(v40, a3); - v36 = std::operator<<>(v41, "="); - } - Str1e = (char *)v36; - v160 = (char *)WXML::EXPRLib::Token::GetLiteral(v163); - v13 = std::operator<<>((std::ostream::sentry *)Str1e, v160); - goto LABEL_7; - } - if ( v10 != 79 || v9[1] != 80 || v9[2] != 95 ) - { - if ( std::operator==((int)this, "?:") ) - { - v183[1] = 0; - v183[0] = (int)&v184; - v184 = 0; - WXML::NameAllocator::GetNextName(a7, (int)v183); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)v183, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v106 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); - v107 = std::operator<<(v106, a3); - std::endl>(v107); - v108 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if("); - v109 = std::operator<<(v108, v183); - v110 = std::operator<<>(v109, "){"); - std::operator<<>(v110, a8); - v186 = 0; - v185 = (int)v187; - v187[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v185); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v111 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); - v112 = std::operator<<>(v111, "="); - v113 = std::operator<<(v112, &v185); - v114 = std::operator<<>(v113, "}"); - std::operator<<>(v114, a8); - v115 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); - std::operator<<>(v115, a8); - v189 = 0; - v188 = (int)v190; - v190[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v188); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v116 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); - v117 = std::operator<<>(v116, "="); - v118 = std::operator<<(v117, &v188); - v119 = std::operator<<>(v118, "}"); - std::operator<<>(v119, a8); - std::string::_M_dispose((void **)&v188); - std::string::_M_dispose((void **)&v185); - v120 = v183; -LABEL_81: - std::string::_M_dispose((void **)v120); - return 0; - } - if ( std::operator==((int)this, "&&") ) - { - v186 = 0; - v185 = (int)v187; - v187[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v185); - v188 = (int)v190; - v189 = 0; - v190[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v188); - v121 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); - v122 = std::operator<<(v121, a3); - std::endl>(v122); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v123 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if(!"); - v124 = std::operator<<(v123, &v185); - v125 = std::operator<<>(v124, ")"); - v126 = std::operator<<(v125, a3); - v127 = std::operator<<>(v126, "="); - v128 = std::operator<<(v127, &v185); - std::operator<<>(v128, a8); - v129 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); - std::operator<<>(v129, a8); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v130 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); - v131 = std::operator<<>(v130, "="); - v132 = std::operator<<(v131, &v188); - v133 = std::operator<<>(v132, "}"); - std::operator<<>(v133, a8); - } - else if ( std::operator==((int)this, "||") ) - { - v186 = 0; - v185 = (int)v187; - v187[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v185); - v188 = (int)v190; - v189 = 0; - v190[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v188); - v134 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); - v135 = std::operator<<(v134, a3); - std::endl>(v135); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v136 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if("); - v137 = std::operator<<(v136, &v185); - v138 = std::operator<<>(v137, ")"); - v139 = std::operator<<(v138, a3); - v140 = std::operator<<>(v139, "="); - v141 = std::operator<<(v140, &v185); - std::operator<<>(v141, a8); - v142 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); - std::operator<<>(v142, a8); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v143 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); - v144 = std::operator<<>(v143, "="); - v145 = std::operator<<(v144, &v188); - v146 = std::operator<<>(v145, "}"); - std::operator<<>(v146, a8); - } - else - { - v147 = this[14] - this[13]; - if ( v147 != 16 ) - { - if ( v147 != 8 ) - return 0; - v189 = 0; - v188 = (int)v190; - v190[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v188); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v154 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); - v155 = std::operator<<(v154, a3); - v156 = std::operator<<>(v155, "="); - v157 = std::operator<<(v156, this); - v158 = std::operator<<(v157, &v188); - std::operator<<>(v158, a8); - goto LABEL_80; - } - v186 = 0; - v185 = (int)v187; - v187[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v185); - v188 = (int)v190; - v189 = 0; - v190[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v188); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v148 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); - v149 = std::operator<<(v148, a3); - v150 = std::operator<<>(v149, "="); - v151 = std::operator<<(v150, &v185); - v152 = std::operator<<(v151, this); - v153 = std::operator<<(v152, &v188); - std::operator<<>(v153, a8); - } -LABEL_76: - std::string::_M_dispose((void **)&v188); -LABEL_77: - v120 = &v185; - goto LABEL_81; - } - if ( v9[3] == 80 && v9[4] == 65 ) - { - if ( a3[1] ) - { - v42 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); - v43 = std::operator<<(v42, a3); - std::operator<<>(v43, "="); - } - v44 = this[13]; - if ( this[14] - v44 == 8 ) - { - v165 = WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)v44 + 24)); - v164 = (WXML::EXPRLib::Token *)((char *)a2 + 8); - if ( !strcmp(v165, "true") ) - { - std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "true"); -LABEL_35: - if ( !a3[1] ) - return 0; - v16 = a8; - v13 = (WXML::EXPRLib::Token *)((char *)a2 + 8); - goto LABEL_8; - } - if ( !strcmp(v165, "false") ) - { - std::operator<<>(v164, "false"); - goto LABEL_35; - } - if ( !strcmp(v165, "$global") ) - { - std::operator<<(v164, a6); - goto LABEL_35; - } - } - if ( a9 ) - { - v166 = *(std::ostream::sentry **)(a9 + 4); - v188 = (int)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); - if ( v166 == (std::ostream::sentry *)std::find<__gnu_cxx::__normal_iterator>,char const*>( - *(_DWORD *)a9, - *(_DWORD *)(a9 + 4), - (char **)&v188) ) - { - v45 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); - std::string::basic_string((void **)&v188, v45); - std::vector::emplace_back((void **)a9, &v188); - std::string::_M_dispose((void **)&v188); - } - } - v46 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "_s("); - v47 = std::operator<<(v46, a5); - v48 = std::operator<<>(v47, ","); - v49 = std::operator<<(v48, a4); - v50 = std::operator<<>(v49, ","); - v167 = std::operator<<>(v50, (char *)off_5542FA); - v51 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); - v52 = std::operator<<>(v167, v51); - v53 = std::operator<<>(v52, "')"); - std::operator<<>(v53, a8); - goto LABEL_35; - } - if ( !std::operator==((int)this, "OP_LIST") ) - { - if ( std::operator==((int)this, "OP_LIST_CONCAT") ) - { - for ( i = 0; ; i = (std::ostream::sentry *)((char *)i + 1) ) - { - v57 = this[13]; - if ( (unsigned int)i >= (this[14] - v57) >> 3 ) - break; - if ( std::operator==(*(_DWORD *)(v57 + 8 * (_DWORD)i), "OP_LIST_CONCAT") ) - { - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - } - else - { - v189 = 0; - v188 = (int)v190; - v190[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v188); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v58 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); - v59 = std::operator<<>(v58, ".push("); - v60 = std::operator<<(v59, &v188); - v61 = std::operator<<>(v60, ")"); - std::operator<<>(v61, a8); - std::string::_M_dispose((void **)&v188); - } - } - return 0; - } - if ( std::operator==((int)this, "OP_DICT_CONCAT") ) - { - for ( j = 0; ; j = (std::ostream::sentry *)((char *)j + 1) ) - { - v62 = this[13]; - if ( (unsigned int)j >= (this[14] - v62) >> 3 ) - break; - if ( std::operator==(*(_DWORD *)(v62 + 8 * (_DWORD)j), "$VAR") ) - { - v63 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); - v162 = std::operator<<>(v63, "[\""); - v64 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * (_DWORD)j) + 24)); - v65 = std::operator<<>(v162, v64); - std::operator<<>(v65, "\"]="); - v66 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a5); - v168 = std::operator<<>(v66, "."); - v67 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * (_DWORD)j) + 24)); - v68 = std::operator<<>(v168, v67); - v69 = std::operator<<>(v68, "?"); - v70 = std::operator<<(v69, a5); - v169 = std::operator<<>(v70, "."); - v71 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * (_DWORD)j) + 24)); - v72 = std::operator<<>(v169, v71); - v73 = std::operator<<>(v72, ":"); - v74 = std::operator<<(v73, a4); - v170 = std::operator<<>(v74, "."); - v75 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * (_DWORD)j) + 24)); - v76 = std::operator<<>(v170, v75); - std::operator<<>(v76, a8); - } - else - { - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - } - } - return 0; - } - if ( std::operator==((int)this, "OP_MAKE_DICT") ) - { - v186 = 0; - v185 = (int)v187; - v187[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v185); - if ( (unsigned int)(this[14] - this[13]) <= 8 ) - { - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - if ( a9 ) - { - v171 = *(std::ostream::sentry **)(a9 + 4); - v188 = (int)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); - if ( v171 == (std::ostream::sentry *)std::find<__gnu_cxx::__normal_iterator>,char const*>( - *(_DWORD *)a9, - *(_DWORD *)(a9 + 4), - (char **)&v188) ) - { - v77 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); - std::string::basic_string((void **)&v188, v77); - std::vector::emplace_back((void **)a9, &v188); - std::string::_M_dispose((void **)&v188); - } - } - } - else - { - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - } - v78 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); - v172 = std::operator<<>(v78, "[\""); - v79 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); - v80 = std::operator<<>(v172, v79); - v81 = std::operator<<>(v80, "\"]="); - v82 = std::operator<<(v81, &v185); - std::operator<<>(v82, a8); - goto LABEL_77; - } - if ( std::operator==((int)this, "OP_EXPAND") ) - { - v189 = 0; - v188 = (int)v190; - v190[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v188); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v83 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "{var ks=Object.keys("); - v84 = std::operator<<(v83, &v188); - std::operator<<>(v84, "||{});"); - v85 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "for(var k in ks){"); - v86 = std::operator<<(v85, a3); - v87 = std::operator<<>(v86, "[ks[k]]="); - v88 = std::operator<<(v87, &v188); - v89 = std::operator<<>(v88, "[ks[k]]}}"); - std::endl>(v89); -LABEL_80: - v120 = &v188; - goto LABEL_81; - } - if ( !std::operator==((int)this, "OP_DICT") ) - return 0; - v186 = 0; - v185 = (int)v187; - v187[0] = 0; - v188 = (int)v190; - v189 = 0; - v190[0] = 0; - WXML::NameAllocator::GetNextName(a7, (int)&v185); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v185, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - if ( std::operator==(*(_DWORD *)(this[13] + 8), "$VAR") ) - { - v90 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); - v91 = std::operator<<(v90, a3); - v92 = std::operator<<>(v91, "="); - v93 = std::operator<<(v92, &v185); - v94 = std::operator<<>(v93, "?"); - v95 = std::operator<<(v94, &v185); - v173 = std::operator<<>(v95, "."); - v161 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8) + 24)); - v96 = std::operator<<>(v173, v161); - } - else - { - WXML::NameAllocator::GetNextName(a7, (int)&v188); - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v188, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - v97 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); - v98 = std::operator<<(v97, a3); - v99 = std::operator<<>(v98, "="); - v100 = std::operator<<(v99, &v185); - v101 = std::operator<<>(v100, "?"); - v102 = std::operator<<(v101, &v185); - v103 = std::operator<<>(v102, (char *)&off_5542FA[2]); - v104 = std::operator<<(v103, &v188); - v96 = std::operator<<>(v104, "]"); - } - v105 = std::operator<<>(v96, ":undefined"); - std::operator<<>(v105, a8); - goto LABEL_76; - } - v54 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); - v55 = std::operator<<(v54, a3); - v56 = std::operator<<>(v55, (char *)off_5543FC); - std::operator<<>(v56, a8); - if ( this[13] != this[14] ) - WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); - return 0; -} - -//----- (0042DA5C) -------------------------------------------------------- -void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::_Destroy_aux::__destroy(*(void ***)(a1 + 40), *(char ***)(a1 + 44)); - if ( *(_DWORD *)(a1 + 40) ) - operator delete(*(void **)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0042DAB6) -------------------------------------------------------- -int __thiscall WXML::EXPRLib::Parser::Parse(int this, char **a2, int a3, int a4, int a5, unsigned int *a6, char a7) -{ - const WXML::EXPRLib::Token *v7; // edx - _DWORD *v8; // edi - volatile signed __int32 **v9; // ecx - const WXML::EXPRLib::Token *v10; // edx - _DWORD *v11; // edi - _DWORD *v12; // eax - int v13; // eax - int v14; // ecx - int v15; // eax - char *TokenName; // eax - int i; // eax - char *v18; // eax - volatile signed __int32 **v19; // ecx - int *v20; // eax - int *v21; // eax - _DWORD *v22; // edi - int *v23; // eax - int *v24; // edx - char *v25; // eax - bool v26; // zf - _DWORD *v27; // eax - _DWORD *v28; // edx - _DWORD *v29; // eax - char *v30; // eax - _DWORD *v31; // eax - char *v32; // eax - char *Literal; // eax - char *v34; // eax - _DWORD *v35; // eax - int v36; // ecx - int *v37; // eax - int v38; // edx - int v39; // eax - WXML::EXPRLib::TransitTable *v41; // [esp+0h] [ebp-118h] - int v42; // [esp+0h] [ebp-118h] - const WXML::EXPRLib::Token *v43; // [esp+4h] [ebp-114h] - const WXML::EXPRLib::Token *v44; // [esp+4h] [ebp-114h] - int v45; // [esp+10h] [ebp-108h] - _DWORD *v46; // [esp+10h] [ebp-108h] - int v47; // [esp+14h] [ebp-104h] - _DWORD *v48; // [esp+14h] [ebp-104h] - unsigned int v49; // [esp+18h] [ebp-100h] - _DWORD *v50; // [esp+1Ch] [ebp-FCh] - int *v51; // [esp+1Ch] [ebp-FCh] - _DWORD *v52; // [esp+1Ch] [ebp-FCh] - char *v53; // [esp+1Ch] [ebp-FCh] - int Tokens; // [esp+20h] [ebp-F8h] - void *Blockh; // [esp+24h] [ebp-F4h] - _DWORD *Block; // [esp+24h] [ebp-F4h] - _DWORD *Blocka; // [esp+24h] [ebp-F4h] - _DWORD *Blocki; // [esp+24h] [ebp-F4h] - int **Blockb; // [esp+24h] [ebp-F4h] - char *Blockc; // [esp+24h] [ebp-F4h] - volatile signed __int32 **Blockd; // [esp+24h] [ebp-F4h] - _DWORD *Blockj; // [esp+24h] [ebp-F4h] - _DWORD *Blocke; // [esp+24h] [ebp-F4h] - bool Blockf; // [esp+24h] [ebp-F4h] - int Blockg; // [esp+24h] [ebp-F4h] - int v67; // [esp+68h] [ebp-B0h] BYREF - void *v68; // [esp+6Ch] [ebp-ACh] BYREF - volatile signed __int32 *v69; // [esp+70h] [ebp-A8h] BYREF - _DWORD *v70; // [esp+74h] [ebp-A4h] BYREF - volatile signed __int32 *v71; // [esp+78h] [ebp-A0h] BYREF - _DWORD *v72; // [esp+7Ch] [ebp-9Ch] - volatile signed __int32 *v73; // [esp+80h] [ebp-98h] BYREF - char *v74; // [esp+84h] [ebp-94h] BYREF - int v75; // [esp+88h] [ebp-90h] - int v76; // [esp+8Ch] [ebp-8Ch] - void *v77[6]; // [esp+90h] [ebp-88h] BYREF - int **v78; // [esp+A8h] [ebp-70h] BYREF - volatile signed __int32 *v79[5]; // [esp+ACh] [ebp-6Ch] BYREF - int **v80; // [esp+C0h] [ebp-58h] BYREF - volatile signed __int32 *v81[5]; // [esp+C4h] [ebp-54h] BYREF - int v82[4]; // [esp+D8h] [ebp-40h] BYREF - char v83; // [esp+E8h] [ebp-30h] BYREF - int *v84; // [esp+F4h] [ebp-24h] BYREF - int v85[3]; // [esp+F8h] [ebp-20h] BYREF - volatile signed __int32 *v86[4]; // [esp+104h] [ebp-14h] BYREF - // WXML::EXPRLib::Parser::Parse - 0 - // int this - // 清空 - while ( *(_DWORD *)(this + 24) != *(_DWORD *)(this + 8) ) - std::deque>::pop_back((_DWORD *)this); - while ( *(_DWORD *)(this + 64) != *(_DWORD *)(this + 48) ) - std::deque>::pop_back((_DWORD *)(this + 40)); - - if ( !(_BYTE)`guard variable for WXML::EXPRLib::TransitTable::GetInstance(void)::ret - && __cxa_guard_acquire(&`guard variable for WXML::EXPRLib::TransitTable::GetInstance(void)::ret) ) - { - dword_53FCE0 = 0; - dword_53FCE4 = 0; - dword_53FCE8 = (int)&dword_53FCE0; - dword_53FCEC = (int)&dword_53FCE0; - dword_53FCF0 = 0; - byte_53FCF4 = 0; - // __cxa_guard_release(&`guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret); - atexit(__tcf_0_1); - } - WXML::EXPRLib::TransitTable::Init(v41); - WXML::EXPRLib::Tokenizer::Tokenizer(v77, *a2, a3, a4, a5); - // std::vector v74; - v74 = 0; - v75 = 0; - v76 = 0; - Tokens = WXML::EXPRLib::Tokenizer::GetTokens((int *)v77, &v74, a6); - v43 = v7; - if ( Tokens ) - goto LABEL_78; - // WXML::EXPRLib::Parser::Parse - 5 - if ( v74 == (char *)v75 ) - { - // _DWORD *v8; WXML::EXPRLib::ExprSyntaxTree - v8 = operator new(0x40u); - memset(v8, 0, 0x40u); - *v8 = v8 + 2; // std::string地址指向“向后偏移8位”的位置 - WXML::EXPRLib::Token::Token(v8 + 6); // v8.offset_24 - v8[13] = 0; - v8[14] = 0; - v8[15] = 0; - zcc::shared_ptr::shared_ptr(v8); - *(_DWORD *)(this + 80) = v84; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(this + 84), v85[0]); - v9 = (volatile signed __int32 **)v85; - goto LABEL_77; // 销毁数据,返回 - } - - // WXML::EXPRLib::Parser::Parse - 10 - WXML::EXPRLib::Token::Token(v82); - v82[0] = 5; - if ( v75 == v76 ) - { - std::vector::_M_realloc_insert( - &v74, - (char *)v75, - (WXML::EXPRLib::Token *)v82); - v44 = v10; - } - else - { - WXML::EXPRLib::Token::Token((int *)v75, (WXML::EXPRLib::Token *)v82, v43); - v75 += 28; - } - // WXML::EXPRLib::Parser::Parse - 15 - // _DWORD *v11 - v11 = operator new(0x38u); // 0x38 -> 56 - *v11 = &off_55F220; // 函数? - v11[1] = v11 + 3; // std::string - v11[2] = 0; - // v11.offset_12 - *((_BYTE *)v11 + 12) = 0; - // v11.offset_28 - WXML::EXPRLib::Token::Token(v11 + 7); - zcc::shared_ptr::shared_ptr(&v68, (int)v11); - Blockh = v68; - // Blockh - v68 - v11 WXML::EXPRLib::Base - std::string::basic_string((void **)&v84, "$"); - // Blockh -> v11 -> v68 - std::string::_M_assign((int)Blockh + 4, (int)&v84); - std::string::_M_dispose((void **)&v84); - std::deque>::push_back(this, (int *)&v68); - - // WXML::EXPRLib::Base - v12 = operator new(8u); - *v12 = &off_55F1E4; // 函数? - v12[1] = 0; - zcc::shared_ptr::shared_ptr(&v70, (int)v12); - // Block - v70 - v12 - Block = v70; - if ( a7 ) - Block[1] = WXML::EXPRLib::TransitTable::GetAttrListNTType(); - else - Block[1] = WXML::EXPRLib::TransitTable::GetExprNTType(); - std::deque>::push_back(this, (int *)&v70); - v72 = 0; - v73 = 0; - v49 = 0; - // WXML::EXPRLib::Parser::Parse - 20 - while ( 1 ) - { - // int this - v13 = *(_DWORD *)(this + 24); // this->offset_24 - if ( *(_DWORD *)(this + 8) == v13 ) // this->offset_8 - break; - if ( v13 == *(_DWORD *)(this + 28) ) // this->offset_28 - v13 = *(_DWORD *)(*(_DWORD *)(this + 36) - 4) + 512; - // int v13 - v42 = *(_DWORD *)(v13 - 4); // 00(v72) 00 00 00, 00(v42) 00 00 00(v13) shared_ptr - v72 = *(_DWORD **)(v13 - 8); // WXML::EXPRLib::Base - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v73, v42); - // v49在递增 - WXML::EXPRLib::Token::Token((int *)&v84, (WXML::EXPRLib::Token *)&v74[28 * v49], v44); - // v72.offset_8 - v15 = (*(int (__thiscall **)(_DWORD *, int))(*v72 + 8))(v72, v14); - Blocka = v72; - // WXML::EXPRLib::Parser::Parse - 20-1 - if ( v15 == 1 ) - { - TokenName = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); - if ( !std::operator==((int)(Blocka + 1), TokenName) || v49 >= -1227133513 * ((v75 - (int)v74) >> 2) ) - { - std::string::operator=(a6, "error at token `"); - goto LABEL_66; - } - ++v49; - std::deque>::pop_back((_DWORD *)this); - if ( (unsigned int)v84 - 1 <= 3 ) - { - Blocki = operator new(0x40u); - *Blocki = Blocki + 2; - Blocki[1] = 0; - *((_BYTE *)Blocki + 8) = 0; - WXML::EXPRLib::Token::Token(Blocki + 6); - Blocki[13] = 0; // offset_52 - Blocki[14] = 0; // offset_56 - Blocki[15] = 0; // offset_60 - zcc::shared_ptr::shared_ptr(Blocki); - Blockb = v80; - v80[6] = v84; - for ( i = 0; i != 8; ++i ) - *((_BYTE *)Blockb + i + 28) = *((_BYTE *)v85 + i); - Blockb[9] = (int *)v85[2]; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)Blockb + 10, (int)v86[0]); - Blockb[11] = (int *)v86[1]; - Blockb[12] = (int *)v86[2]; - v18 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); - std::string::operator=((unsigned int *)v80, v18); - std::deque>::push_back(this + 40, (int *)&v80); - v19 = v81; - LABEL_37: - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v19); - } - } - // WXML::EXPRLib::Parser::Parse - 20-2 - else - { - if ( (*(int (__fastcall **)(_DWORD *))(*v72 + 8))(v72) == 3 ) - { - std::deque>::pop_back((_DWORD *)this); - v50 = v72; - v47 = v72[7]; - if ( v47 == 2 ) - { - if ( *(_DWORD *)(this + 48) == *(_DWORD *)(this + 64) ) - { - std::string::operator=(a6, "interal error: "); - std::string::operator+=(a6, "1001"); - std::string::operator+=(a6, ", expr: `"); - std::string::operator+=(a6, (int)a2); - std::string::operator+=(a6, "`"); - Tokens = 1001; - goto LABEL_72; // 销毁数据,return Tokens - } - v20 = (int *)std::deque>::back((_DWORD *)(this + 40)); - // v78 - v20 - std::__shared_ptr::__shared_ptr((int *)&v78, v20); - std::deque>::pop_back((_DWORD *)(this + 40)); - if ( *(_DWORD *)(this + 64) == *(_DWORD *)(this + 48) ) - { - std::string::operator=(a6, "interal error: "); - std::string::operator+=(a6, "1002"); - std::string::operator+=(a6, ", expr: `"); - std::string::operator+=(a6, (int)a2); - std::string::operator+=(a6, "`"); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v79); - Tokens = 1002; - goto LABEL_72; // 销毁数据,return Tokens - } - v21 = (int *)std::deque>::back((_DWORD *)(this + 40)); - std::__shared_ptr::__shared_ptr((int *)&v80, v21); - // v80.offset_52 - std::vector>::push_back(v80 + 13, (int *)&v78); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v81); - } - ////////////////////// - else - { - v45 = v72[8]; - v22 = operator new(0x40u); - memset(v22, 0, 0x40u); - *v22 = v22 + 2; - WXML::EXPRLib::Token::Token(v22 + 6); - v22[13] = 0; - v22[14] = 0; - v22[15] = 0; - zcc::shared_ptr::shared_ptr(v22); - - // OP_PATH... - std::string::_M_assign((int)v78, (int)(v50 + 1)); // v50 -> v72 - - for ( Blockc = 0; (int)Blockc < v45; ++Blockc ) - { - if ( *(_DWORD *)(this + 64) == *(_DWORD *)(this + 48) ) - { - std::string::operator=(a6, "interal error: "); - std::string::operator+=(a6, "1003"); - std::string::operator+=(a6, ", expr: `"); - std::string::operator+=(a6, (int)a2); - std::string::operator+=(a6, "`"); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v79); - Tokens = 1003; - goto LABEL_72; // 销毁数据,return Tokens - } - v23 = (int *)std::deque>::back((_DWORD *)(this + 40)); - // v78.offset_52.push_back(v23) - std::vector>::push_back(v78 + 13, v23); - std::deque>::pop_back((_DWORD *)(this + 40)); - } - if ( !v47 ) - { - // v78->offset_56 - v24 = v78[14]; - if ( v78[13] != v24 ) - { - // v78->offset_52 - v51 = v78[13]; // WXML::EXPRLib::ExprSyntaxTree - for ( Blockd = (volatile signed __int32 **)(v24 - 2); Blockd > (volatile signed __int32 **)v51; Blockd -= 2 ) - { - std::__shared_ptr::__shared_ptr( - (int *)&v80, - v51); - *v51 = (int)*Blockd; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( - (volatile signed __int32 **)v51 + 1, - (int)Blockd[1]); - *Blockd = (volatile signed __int32 *)v80; - // v80 - v51 - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(Blockd + 1, (int)v81[0]); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v81); - v51 += 2; - } - } - } - std::deque>::push_back(this + 40, (int *)&v78); - } - v19 = v79; - goto LABEL_37; // 销毁v19 - } - // WXML::EXPRLib::Parser::Parse - 20-3 - if ( (*(int (__fastcall **)(_DWORD *))(*v72 + 8))(v72) == 2 ) - { - v67 = v72[1]; - v46 = std::map>>::operator[]( - &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, - &v67) - + 1; - // Blockj std::map> - Blockj = std::map>>::operator[]( - &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, - &v67); - v25 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); - std::string::basic_string((void **)&v78, v25); - v48 = Blockj + 1; - v52 = (_DWORD *)Blockj[2]; - Blocke = Blockj + 1; - - // 找key是v78的value bengin - while ( v52 ) - { - v26 = (unsigned __int8)std::operator<((int)(v52 + 4), (int)&v78) == 0; - v27 = Blocke; - if ( v26 ) - v27 = v52; - v28 = (_DWORD *)v52[3]; - Blocke = v27; - if ( v26 ) - v28 = (_DWORD *)v52[2]; - v52 = v28; - } - if ( v48 != Blocke ) - { - v26 = (unsigned __int8)std::operator<((int)&v78, (int)(Blocke + 4)) == 0; - v29 = v48; - if ( v26 ) - v29 = Blocke; - Blocke = v29; - } - // 找key是v78的value end - - // 是不是end - if ( Blocke == v46 ) - { - Blockf = 1; - } - else - { - v30 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); - std::string::basic_string((void **)&v80, v30); - v31 = std::map>>::operator[]( - &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, - &v67); - // v32 std::vector - v32 = std::map>::operator[](v31, &v80); - // begin == end - Blockf = *((_DWORD *)v32 + 1) == *(_DWORD *)v32; - std::string::_M_dispose((void **)&v80); - } - std::string::_M_dispose((void **)&v78); - if ( Blockf ) - { - std::string::operator=(a6, "unexpected token `"); - LABEL_66: - Literal = (char *)WXML::EXPRLib::Token::GetLiteral(&v84); - std::string::operator+=(a6, Literal); - std::string::operator+=(a6, "`"); - Tokens = -1; - LABEL_72: // 销毁数据,return Tokens - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v86); - goto LABEL_76; // 销毁数据,return Tokens - } - std::deque>::pop_back((_DWORD *)this); - v34 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v84); - std::string::basic_string((void **)&v80, v34); - v35 = std::map>>::operator[]( - &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, - &v67); - // v53 std::vector - v53 = std::map>::operator[](v35, &v80); - std::string::_M_dispose((void **)&v80); - // >> 3 大小应该是8字节 - for ( Blockg = ((*(_DWORD *)(*(_DWORD *)v53 + 4) - **(_DWORD **)v53) >> 3) - 1; Blockg >= 0; --Blockg ) - { - // v53[Blockg] WXML::EXPRLib::BNF - v36 = *(_DWORD *)(**(_DWORD **)v53 + 8 * Blockg); - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v36 + 8))(v36) == 4 ) - break; - std::deque>::push_back(this, (int *)(**(_DWORD **)v53 + 8 * Blockg)); - } - } - } - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v86); - } - // WXML::EXPRLib::Parser::Parse - 25 - if ( *(_DWORD *)(this + 64) == *(_DWORD *)(this + 48) ) - { - std::string::operator=(a6, "interal error: "); - std::string::operator+=(a6, "1004"); - std::string::operator+=(a6, ", expr: `"); - std::string::operator+=(a6, (int)a2); - std::string::operator+=(a6, "`"); - Tokens = 1004; - } - else - { - v37 = (int *)std::deque>::back((_DWORD *)(this + 40)); - v38 = *v37; - v39 = v37[1]; - *(_DWORD *)(this + 80) = v38; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(this + 84), v39); - } - // WXML::EXPRLib::Parser::Parse - 30 -LABEL_76: - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v73); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v71); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v69); - v9 = (volatile signed __int32 **)&v83; -LABEL_77: - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v9); -LABEL_78: - std::vector::~vector((void **)&v74); - std::string::_M_dispose(v77); - return Tokens; -} -// 42DBAF: variable 'v41' is possibly undefined -// 42DC28: variable 'v7' is possibly undefined -// 42DD16: variable 'v10' is possibly undefined -// 42DED8: variable 'v44' is possibly undefined -// 42DEF3: variable 'v14' is possibly undefined -// 53FCDC: using guessed type _DWORD WXML::EXPRLib::TransitTable::GetInstance(void)::ret; -// 53FCE0: using guessed type int dword_53FCE0; -// 53FCE4: using guessed type int dword_53FCE4; -// 53FCE8: using guessed type int dword_53FCE8; -// 53FCEC: using guessed type int dword_53FCEC; -// 53FCF0: using guessed type int dword_53FCF0; -// 53FCF4: using guessed type char byte_53FCF4; -// 55F1E4: using guessed type void (__cdecl *off_55F1E4)(WXML::EXPRLib::NonTerminal *__hidden this); -// 55F220: using guessed type void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this); - -//----- (0042E948) -------------------------------------------------------- -void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase( - _DWORD *a1@) -{ - _DWORD *v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(); - v2 = (_DWORD *)a1[2]; - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[7]); - v3 = a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0042E97C) -------------------------------------------------------- -void __tcf_0_1(void) -{ - std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase((_DWORD *)dword_53FCE4); -} -// 53FCE4: using guessed type int dword_53FCE4; - -//----- (0042E984) -------------------------------------------------------- -void __tcf_0_2(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (0042E98E) -------------------------------------------------------- -unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size) -{ - unsigned int result; // eax - _BYTE *v5; // edx - unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - if ( !Src && Size ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = Size - (_DWORD)Src; - if ( Size - (unsigned int)Src > 0xF ) - { - *this = std::string::_M_create(v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, Src, Size); - result = v6[0]; - v5 = *this; - this[1] = (void *)v6[0]; - v5[result] = 0; - return result; -} -// 42E98E: using guessed type unsigned int var_1C[7]; - -//----- (0042EA06) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 *v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 *v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = *this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = *this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == (unsigned __int8 *)(this + 2) ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 42EA6D: variable 'v9' is possibly undefined - -//----- (0042EA8E) -------------------------------------------------------- -const char *__fastcall WXML::EXPRLib::Token::GetTokenName(const char **a1) -{ - const char *result; // eax - - result = *a1; - switch ( (unsigned int)*a1 ) - { - case 0u: - result = (const char *)(a1 + 1); - break; - case 1u: - result = "$DECIMAL"; - break; - case 2u: - result = "$STRING"; - break; - case 3u: - result = "$VAR"; - break; - case 4u: - result = "$KEYWORD"; - break; - default: - return result; - } - return result; -} - -//----- (0042EABE) -------------------------------------------------------- -const char *__fastcall WXML::EXPRLib::Token::GetLiteral(_DWORD *a1) -{ - const char *result; // eax - int v2; // edx - - result = (const char *)(a1 + 1); - if ( *a1 ) - { - result = "$"; - if ( *a1 != 5 ) - { - // a1->offset_12 - v2 = a1[3]; - result = (const char *)&unk_5545E0; - if ( v2 ) - return *(const char **)v2; - } - } - return result; -} - -//----- (0042EAE0) -------------------------------------------------------- -void WXML::EXPRLib::Tokenizer::InitTransitTable() -{ - const char *i; // edx - int v1; // eax - const char *j; // edx - int v3; // eax - const char *k; // edx - int v5; // eax - const char *m; // edx - int v7; // eax - const char *v8; // edx - int v9; // eax - const char *n; // edx - int v11; // eax - const char *ii; // edx - int v13; // eax - const char *v14; // edx - int v15; // eax - const char *v16; // edx - int v17; // eax - - if ( !WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited ) - { - WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited = 1; - for ( i = " \n\t\r"; ; ++i ) - { - v1 = *i; - if ( !(_BYTE)v1 ) - break; - dword_6689A4[v1] = 8388609; - } - for ( j = "$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; ; ++j ) - { - v3 = *j; - if ( !(_BYTE)v3 ) - break; - dword_6689A4[v3] = 13; - } - for ( k = "0123456789"; ; ++k ) - { - v5 = *k; - if ( !(_BYTE)v5 ) - break; - dword_6689A4[v5] = 10; - } - for ( m = "+-*/%^~()[],?:{}"; ; ++m ) - { - v7 = *m; - if ( !(_BYTE)v7 ) - break; - dword_6689A4[v7] = 327681; - } - dword_668A5C = 3; - v8 = "$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; - dword_668A2C = 6; - dword_668A40 = 8; - dword_668A98 = 12; - dword_668B94 = 15; - dword_668A3C = 14; - dword_668A94 = 16; - dword_668A9C = 17; - dword_668A28 = 18; - dword_6689A4[0] = 8519681; - dword_668DA4 = -1; - dword_668A60 = 21; - dword_66DA9C = 22; - dword_66DDF4 = 4325377; - dword_66DEA0 = 23; - dword_66E1F8 = 8388630; - dword_66E2B8 = 8388609; - dword_66E2A4 = 4194326; - dword_66E5FC = 22; - while ( 1 ) - { - v9 = *v8; - if ( !(_BYTE)v9 ) - break; - dword_66B9D4[v9] = 13; - ++v8; - } - for ( n = "0123456789"; ; ++n ) - { - v11 = *n; - if ( !(_BYTE)v11 ) - break; - dword_66B9D4[v11] = 13; - } - dword_66BDD4 = (int)&unk_620001; - for ( ii = "0123456789"; ; ++ii ) - { - v13 = *ii; - if ( !(_BYTE)v13 ) - break; - dword_6691AC[v13] = 11; - } - dword_669264 = 4; - v14 = "0123456789"; - dword_6695AC = (int)&loc_460001; - dword_669668 = 327681; - dword_6699B0 = -1; - while ( 1 ) - { - v15 = *v14; - if ( !(_BYTE)v15 ) - break; - dword_66ADC8[v15] = 10; - ++v14; - } - dword_66AE80 = 11; - v16 = "0123456789"; - dword_66B1C8 = (int)&loc_4A0000 + 1; - while ( 1 ) - { - v17 = *v16; - if ( !(_BYTE)v17 ) - break; - dword_66B1CC[v17] = 11; - ++v16; - } - dword_66B5CC = (int)&loc_4A0000 + 1; - dword_66B6C4 = 19; - dword_66B9D0 = -1; - dword_66D2E0 = 327681; - dword_66D5EC = (int)&loc_460001; - dword_66BE70 = 327681; - dword_66C1D8 = 4325377; - dword_66C3CC = 327681; - dword_66C5DC = 4325377; - dword_668E9C = 327681; - dword_6691A8 = (int)&loc_460001; - dword_669F28 = 7; - dword_669DE0 = 9568257; - dword_66A5BC = 6; - dword_66A1E4 = 9568257; - dword_669E40 = 1114113; - dword_66A1B8 = 6; - dword_66A730 = 9; - dword_66A5E8 = 9568257; - dword_66ADC4 = 8; - dword_66A9EC = 9568257; - dword_66A65C = 1114113; - dword_66A9C0 = 8; - dword_66C6D4 = 327681; - dword_66C6D0 = 327681; - dword_66C9E0 = (int)&loc_460001; - dword_66CAD8 = 327681; - dword_66CADC = 327681; - dword_66CDE4 = (int)&loc_460001; - dword_66CEDC = 20; - dword_66D6E4 = 327681; - dword_66D9F0 = (int)&loc_460001; - dword_66D1E8 = (int)&loc_460001; - } -} -// 6689A4: using guessed type int dword_6689A4[33]; -// 668A28: using guessed type int dword_668A28; -// 668A2C: using guessed type int dword_668A2C; -// 668A3C: using guessed type int dword_668A3C; -// 668A40: using guessed type int dword_668A40; -// 668A5C: using guessed type int dword_668A5C; -// 668A60: using guessed type int dword_668A60; -// 668A94: using guessed type int dword_668A94; -// 668A98: using guessed type int dword_668A98; -// 668A9C: using guessed type int dword_668A9C; -// 668B94: using guessed type int dword_668B94; -// 668DA4: using guessed type int dword_668DA4; -// 668E9C: using guessed type int dword_668E9C; -// 6691A8: using guessed type int dword_6691A8; -// 6691AC: using guessed type int dword_6691AC[46]; -// 669264: using guessed type int dword_669264; -// 6695AC: using guessed type int dword_6695AC; -// 669668: using guessed type int dword_669668; -// 6699B0: using guessed type int dword_6699B0; -// 669DE0: using guessed type int dword_669DE0; -// 669E40: using guessed type int dword_669E40; -// 669F28: using guessed type int dword_669F28; -// 66A1B8: using guessed type int dword_66A1B8; -// 66A1E4: using guessed type int dword_66A1E4; -// 66A5BC: using guessed type int dword_66A5BC; -// 66A5E8: using guessed type int dword_66A5E8; -// 66A65C: using guessed type int dword_66A65C; -// 66A730: using guessed type int dword_66A730; -// 66A9C0: using guessed type int dword_66A9C0; -// 66A9EC: using guessed type int dword_66A9EC; -// 66ADC4: using guessed type int dword_66ADC4; -// 66ADC8: using guessed type int dword_66ADC8[46]; -// 66AE80: using guessed type int dword_66AE80; -// 66B1C8: using guessed type int dword_66B1C8; -// 66B1CC: using guessed type int dword_66B1CC[256]; -// 66B5CC: using guessed type int dword_66B5CC; -// 66B6C4: using guessed type int dword_66B6C4; -// 66B9D0: using guessed type int dword_66B9D0; -// 66B9D4: using guessed type int dword_66B9D4[256]; -// 66BDD4: using guessed type int dword_66BDD4; -// 66BE70: using guessed type int dword_66BE70; -// 66C1D8: using guessed type int dword_66C1D8; -// 66C3CC: using guessed type int dword_66C3CC; -// 66C5DC: using guessed type int dword_66C5DC; -// 66C6D0: using guessed type int dword_66C6D0; -// 66C6D4: using guessed type int dword_66C6D4; -// 66C9E0: using guessed type int dword_66C9E0; -// 66CAD8: using guessed type int dword_66CAD8; -// 66CADC: using guessed type int dword_66CADC; -// 66CDE4: using guessed type int dword_66CDE4; -// 66CEDC: using guessed type int dword_66CEDC; -// 66D1E8: using guessed type int dword_66D1E8; -// 66D2E0: using guessed type int dword_66D2E0; -// 66D5EC: using guessed type int dword_66D5EC; -// 66D6E4: using guessed type int dword_66D6E4; -// 66D9F0: using guessed type int dword_66D9F0; -// 66DA9C: using guessed type int dword_66DA9C; -// 66DDF4: using guessed type int dword_66DDF4; -// 66DEA0: using guessed type int dword_66DEA0; -// 66E1F8: using guessed type int dword_66E1F8; -// 66E2A4: using guessed type int dword_66E2A4; -// 66E2B8: using guessed type int dword_66E2B8; -// 66E5FC: using guessed type int dword_66E5FC; -// 7695A0: using guessed type char WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited; - -//----- (0042EE2E) -------------------------------------------------------- -unsigned int __thiscall WXML::EXPRLib::Tokenizer::Tokenizer(void **this, char *Str, int a3, int a4, int a5) -{ - size_t v5; // eax - size_t v6; // eax - void **v8; // [esp+1Ch] [ebp-Ch] - - *this = this + 2; // std::string缓冲区 - v5 = -1; - if ( Str ) - { - v8 = this; - v6 = strlen(Str); - this = v8; - v5 = (size_t)&Str[v6]; - } - return std::string::_M_construct(this, (unsigned __int8 *)Str, v5); -} - -//----- (0042EE69) -------------------------------------------------------- -_DWORD *__usercall std::__relocate_a_1>@( - _DWORD *a1@, - _DWORD *a2@, - _DWORD *a3@) -{ - int v6; // edx - int v7; // ecx - int v8; // eax - volatile signed __int32 **v9; // ecx - - while ( a1 != a2 ) - { - *a3 = *a1; - v6 = a1[2]; - a3[1] = a1[1]; - a3[2] = v6; - v7 = a1[4]; - a3[3] = a1[3]; - a3[4] = v7; - if ( v7 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v7); - v8 = a1[5]; - v9 = (volatile signed __int32 **)(a1 + 4); - a3 += 7; - a1 += 7; - *(a3 - 2) = v8; - *(a3 - 1) = *(a1 - 1); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v9); - } - return a3; -} - -//----- (0042EEC8) -------------------------------------------------------- -int __thiscall WXML::EXPRLib::Tokenizer::GetTokens(int *this, _DWORD *a2, unsigned int *a3) -{ - unsigned __int8 v3; // di - std::ostream::sentry *v4; // eax - std::ostream::sentry *v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // eax - int v8; // edx - int *v9; // ebx - char *v10; // eax - char v11; // cl - volatile signed __int32 *v12; // eax - void **v13; // edx - void **v14; // ecx - volatile signed __int32 *v15; // edx - int v17; // edx - volatile signed __int32 *v18; // ecx - int v19; // eax - int v21; // [esp+14h] [ebp-154h] - int v23; // [esp+1Ch] [ebp-14Ch] - int v24; // [esp+20h] [ebp-148h] - int v25; // [esp+24h] [ebp-144h] - const char **v26; // [esp+24h] [ebp-144h] - int v27; // [esp+28h] [ebp-140h] - int v28; // [esp+2Ch] [ebp-13Ch] - int v29; // [esp+30h] [ebp-138h] - volatile signed __int32 *v30; // [esp+30h] [ebp-138h] - const char **v31; // [esp+30h] [ebp-138h] - int v32; // [esp+30h] [ebp-138h] - void **Block; // [esp+34h] [ebp-134h] - struct _Unwind_Exception *lpuexcpt; // [esp+38h] [ebp-130h] BYREF - void **v35; // [esp+70h] [ebp-F8h] - volatile signed __int32 *v36; // [esp+74h] [ebp-F4h] BYREF - void **v37; // [esp+78h] [ebp-F0h] BYREF - volatile signed __int32 *v38; // [esp+7Ch] [ebp-ECh] BYREF - int v39; // [esp+90h] [ebp-D8h] BYREF - int v40[2]; // [esp+94h] [ebp-D4h] BYREF - const char **v41; // [esp+9Ch] [ebp-CCh] BYREF - volatile signed __int32 *v42; // [esp+A0h] [ebp-C8h] BYREF - int v43; // [esp+A4h] [ebp-C4h] - int v44; // [esp+A8h] [ebp-C0h] - - WXML::EXPRLib::Tokenizer::InitTransitTable(); - v21 = 18899; - v24 = 1; - v28 = 0; - v29 = 0; - v23 = this[1]; - while ( v28 <= v23 ) - { - if ( !--v21 ) - { - std::string::_M_replace(a3, 0, a3[1], "something must be wrong", 0x17u); - return -1; - } - v25 = *this; - v3 = *(_BYTE *)(*this + v28); - if ( v28 == v23 ) - v3 = 0; - lpuexcpt = (struct _Unwind_Exception *)WXML::EXPRLib::Tokenizer::TT[257 * v24 + v3]; - if ( !lpuexcpt ) - { - lpuexcpt = (struct _Unwind_Exception *)dword_6689A0[257 * v24]; - if ( !lpuexcpt ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v39); - std::operator<<>((std::ostream::sentry *)&v40[1], "no transition for "); - v4 = (std::ostream::sentry *)std::ostream::operator<<(v24); - v5 = std::operator<<>(v4, " with input "); - std::operator<<>(v5, v3); - std::stringbuf::str((int)&v37, (int)&v41); - std::string::operator=((unsigned __int8 **)a3, (int)&v37); - std::string::_M_dispose((void **)&v37); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v39); - return -1; - } - } - if ( lpuexcpt == (struct _Unwind_Exception *)-1 ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v39); - v6 = std::operator<<>((std::ostream::sentry *)&v40[1], "unexpected `"); - v7 = std::operator<<>(v6, v3); - std::operator<<>(v7, "` at pos"); - std::ostream::operator<<(v28); - std::stringbuf::str((int)&v37, (int)&v41); - std::string::operator=((unsigned __int8 **)a3, (int)&v37); - std::string::_M_dispose((void **)&v37); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v39); - return (int)lpuexcpt; - } - v24 = (unsigned __int16)lpuexcpt; - if ( ((unsigned int)lpuexcpt & 0x30000) != 0 ) - { - v8 = 1; - v27 = (((unsigned int)lpuexcpt & 0x20000) == 0) + v28 - 1; - if ( !_bittest((const signed __int32 *)&lpuexcpt, 0x13u) ) - { - v8 = 2; - if ( !_bittest((const signed __int32 *)&lpuexcpt, 0x14u) ) - v8 = ((int)((_DWORD)lpuexcpt << 10) >> 31) & 3; - } - if ( v29 <= v27 ) - { - v9 = v40; - v41 = 0; - v42 = 0; - memset(v40, 0, sizeof(v40)); - v39 = v8; - v43 = 0; - v44 = 0; - if ( v8 ) - { - Block = (void **)operator new(0x18u); - *Block = Block + 2; - std::string::_M_construct(Block, (unsigned __int8 *)(v29 + v25), v25 + v27 + 1); - v35 = 0; - v36 = 0; - v37 = Block; - v38 = 0; - v12 = (volatile signed __int32 *)operator new(0x10u); - v13 = v37; - *((_DWORD *)v12 + 1) = 1; - v14 = v35; - *((_DWORD *)v12 + 2) = 1; - *v12 = (volatile signed __int32)&off_5603EC; - *((_DWORD *)v12 + 3) = Block; - v35 = v13; - v15 = v36; - v37 = v14; - v36 = v12; - v38 = v15; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v38); - v41 = (const char **)v35; - v30 = v36; - if ( v36 != v42 ) - { - if ( v36 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)v36); - if ( v42 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v42); - v42 = v30; - } - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v36); - v31 = (const char **)WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS; - v26 = v41; - while ( *v31 ) - { - if ( !strcmp(*v26, *v31++) ) - { - v39 = 4; - break; - } - } - } - else - { - // v25 -> *this - v10 = (char *)(v29 + v25); - do - { - v11 = *v10++; - v9 = (int *)((char *)v9 + 1); - *((_BYTE *)v9 - 1) = v11; - } - while ( v10 != (char *)(v25 + v27 + 1) ); - *((_BYTE *)v40 + v27 + 1 - v29) = 0; - } - v32 = a2[1]; - if ( v32 == a2[2] ) // begin == end - { - std::vector::_M_realloc_insert( - a2, - (char *)v32, - (WXML::EXPRLib::Token *)&v39); - } - else - { - *(_DWORD *)v32 = v39; - v17 = v40[1]; - *(_DWORD *)(v32 + 4) = v40[0]; - *(_DWORD *)(v32 + 8) = v17; - v18 = v42; - *(_DWORD *)(v32 + 12) = v41; - *(_DWORD *)(v32 + 16) = v18; - if ( v18 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)v18); - *(_DWORD *)(v32 + 20) = v43; - *(_DWORD *)(v32 + 24) = v44; - a2[1] += 28; - } - v29 = v27 + 1; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v42); - } - } - // v19 临时存储,其它地方没用到 - v19 = v29; - v28 += ((unsigned int)lpuexcpt & 0x400000) == 0; - if ( ((unsigned int)lpuexcpt & 0x800000) != 0 ) - v19 = v28; - v29 = v19; - } - return 0; -} -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 5546D8: using guessed type char *WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS[4]; -// 5603EC: using guessed type int (*off_5603EC)(); -// 6685A0: using guessed type int WXML::EXPRLib::Tokenizer::TT[]; -// 6689A0: using guessed type int dword_6689A0[]; - -//----- (0042F5E4) -------------------------------------------------------- -void __tcf_1_5(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (0042F5EE) -------------------------------------------------------- -size_t __thiscall std::string::basic_string(void **this, char *Str) -{ - char *v3; // edi - size_t result; // eax - _BYTE *v5; // edx - size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = strlen(Str); - v3 = &Str[v6[0]]; - if ( v6[0] > 0xF ) - { - *this = std::string::_M_create(v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); - result = v6[0]; - v5 = *this; - this[1] = (void *)v6[0]; - v5[result] = 0; - return result; -} -// 42F5EE: using guessed type size_t var_1C[7]; - -//----- (0042F66C) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, this[1], Str, v2); -} - -//----- (0042F6AA) -------------------------------------------------------- -int WXML::EXPRLib::TransitTable::GetExprNTType() -{ - return 14; -} - -//----- (0042F6B0) -------------------------------------------------------- -int WXML::EXPRLib::TransitTable::GetAttrListNTType() -{ - return 12; -} - -//----- (0042F6B6) -------------------------------------------------------- -void __thiscall std::vector::_M_move_assign(void *this, int *a2) -{ - void **v2; // ebx - void **v3; // edx - int v4; // edi - int v5; // edi - void **v6[9]; // [esp+4h] [ebp-24h] BYREF - - v2 = (void **)*((_DWORD *)this + 1); - v3 = (void **)*((_DWORD *)this + 2); - v4 = *a2; - v6[0] = *(void ***)this; - v6[1] = v2; - *(_DWORD *)this = v4; - v5 = a2[1]; - v6[2] = v3; - *((_DWORD *)this + 1) = v5; - *((_DWORD *)this + 2) = a2[2]; - *a2 = 0; - a2[1] = 0; - a2[2] = 0; - std::vector::~vector(v6); -} - -//----- (0042F70A) -------------------------------------------------------- -void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(); - v2 = *(_DWORD *)(a1 + 8); - std::vector::~vector((void ***)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0042F74A) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - _DWORD *this, - _DWORD *a2) -{ - int result; // eax - int v4; // edi - - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(this[2]); - this[2] = 0; - this[3] = this + 1; - this[4] = this + 1; - result = a2[2]; - this[5] = 0; - if ( result ) - { - v4 = a2[1]; - this[2] = result; - this[1] = v4; - this[3] = a2[3]; - this[4] = a2[4]; - *(_DWORD *)(result + 4) = this + 1; - result = a2[5]; - this[5] = result; - a2[2] = 0; - a2[3] = a2 + 1; - a2[4] = a2 + 1; - a2[5] = 0; - } - return result; -} - -//----- (0042F7BE) -------------------------------------------------------- -#error "42F7BE: too big function (funcsize=0)" - -//----- (0045688C) -------------------------------------------------------- -void __tcf_0_3(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (00456896) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 *v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 *v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = *this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = *this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == (unsigned __int8 *)(this + 2) ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 4568FD: variable 'v9' is possibly undefined - -//----- (0045691E) -------------------------------------------------------- -unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *Src, unsigned int a3) -{ - unsigned int result; // eax - _BYTE *v5; // edx - unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( &Src[a3] && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = a3; - if ( a3 > 0xF ) - { - *this = std::string::_M_create(v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, Src, (size_t)&Src[a3]); - result = v6[0]; - v5 = *this; - this[1] = (void *)v6[0]; - v5[result] = 0; - return result; -} -// 45691E: using guessed type unsigned int var_1C[7]; - -//----- (00456999) -------------------------------------------------------- -int __cdecl WXML::StringTemplating::Deal(char *Str, int a2, char **a3, _BYTE *a4) -{ - size_t v4; // eax - int v5; // edx - char v6; // al - char v7; // cl - char *v8; // eax - char v9; // cl - char v10; // cl - bool v11; // zf - int v12; // eax - int v13; // eax - char *v14; // eax - signed int v16; // [esp+10h] [ebp-88h] - int v17; // [esp+14h] [ebp-84h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-80h] - void *v19[6]; // [esp+5Ch] [ebp-3Ch] BYREF - int v20; // [esp+74h] [ebp-24h] BYREF - char *v21; // [esp+78h] [ebp-20h] BYREF - int v22; // [esp+7Ch] [ebp-1Ch] - char v23[20]; // [esp+80h] [ebp-18h] BYREF - - v4 = strlen(Str); - lpuexcpt = 0; - v5 = 0; - v16 = v4; - v17 = 0; - while ( 1 ) - { - v6 = *((_BYTE *)lpuexcpt + (_DWORD)Str); // v6 = Str[lpuexcpt] - if ( (int)lpuexcpt >= v16 || !v6 ) - break; - v7 = *((_BYTE *)lpuexcpt + (_DWORD)Str + 1); - if ( v17 == 2 ) - { - if ( v6 == '\\'/*92*/ ) - goto LABEL_37; - v11 = v6 == '"'/*34*/; - LABEL_39: - v12 = 1; - LABEL_40: - if ( !v11 ) - v12 = v17; - v17 = v12; - goto LABEL_44; // ++ next while - } - if ( v17 > 2 ) - { - if ( v6 == '\\'/*92*/ ) - { - LABEL_37: - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - goto LABEL_44; // ++ next while - } - v11 = v6 == '\''/*39*/; - goto LABEL_39; - } - if ( v17 ) - { - if ( v6 != '}'/*125*/ || v7 != '}'/*125*/ ) - { - if ( v6 == '"'/*34*/ ) - { - v17 = 2; - goto LABEL_44; // ++ next while - } - v11 = v6 == '\''/*39*/; - v12 = 4; - goto LABEL_40; - } - if ( (int)lpuexcpt > v5 ) - { - v8 = (char *)lpuexcpt - 1; - while ( 1 ) - { - v9 = Str[v5]; - if ( v9 != ' '/*32*/ && v9 != '\t'/*9*/ ) - break; - ++v5; - } - while ( v5 < (int)v8 ) - { - v10 = v8[(_DWORD)Str]; - if ( v10 != ' '/*32*/ && v10 != '\t'/*9*/ ) - goto LABEL_30; - --v8; - } - if ( (char *)v5 != v8 ) - goto LABEL_31; - LABEL_30: - v21 = v23; - v22 = 0; - v23[0] = 0; - v20 = 0; - std::string::basic_string(v19, (unsigned __int8 *)&Str[v5], (unsigned int)&v8[-v5 + 1]); - std::string::operator=((unsigned __int8 **)&v21, (int)v19); - std::string::_M_dispose(v19); - v20 = 1; - std::vector::push_back(a3, &v20); - *a4 = 1; - std::string::_M_dispose((void **)&v21); - } - LABEL_31: - v17 = 0; - v5 = (int)lpuexcpt + 2; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - } - else if ( v6 == '{'/*123*/ && v7 == '{'/*123*/ ) - { - if ( (int)lpuexcpt > v5 ) - { - v23[0] = 0; - v21 = v23; - v22 = 0; - v20 = 0; - std::string::basic_string(v19, (unsigned __int8 *)&Str[v5], (unsigned int)lpuexcpt - v5); - std::string::operator=((unsigned __int8 **)&v21, (int)v19); - std::string::_M_dispose(v19); - v20 = 0; - std::vector::push_back(a3, &v20); - std::string::_M_dispose((void **)&v21); - } - v17 = 1; - v5 = (int)lpuexcpt + 2; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - } - LABEL_44: - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - } // end while - if ( v17 ) - return 1; - v13 = ~((unsigned int)lpuexcpt - v16); - if ( (int)lpuexcpt < v16 - 1 ) - v13 = 0; - v14 = (char *)lpuexcpt + v13; - if ( v5 <= (int)v14 ) - { - v23[0] = 0; - v21 = v23; - v22 = 0; - v20 = 0; - std::string::basic_string(v19, (unsigned __int8 *)&Str[v5], (unsigned int)&v14[-v5 + 1]); - std::string::operator=((unsigned __int8 **)&v21, (int)v19); - std::string::_M_dispose(v19); - std::vector::push_back(a3, &v20); - std::string::_M_dispose((void **)&v21); - } - return v17; -} -// 456A2B: conditional instruction was optimized away because %var_84.4==1 -// 456A3D: conditional instruction was optimized away because %var_84.4==4 - -//----- (00456CF0) -------------------------------------------------------- -_DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4) -{ - int v5; // ebx - _DWORD *v6; // ecx - _DWORD *result; // eax - - switch ( a2 ) - { - case 0: - case 5: - case 6: - case 7: - case 8: - case 24: - case 39: - case 44: - case 50: - case 51: - case 65: - case 66: - case 70: - case 71: - case 72: - return 0; - case 1: - case 2: - case 3: - case 4: - case 11: - case 33: - case 43: - case 45: - case 55: - case 56: - case 57: - case 58: - case 59: - case 61: - case 62: - case 64: - case 76: - case 78: - if ( a3 ) - goto LABEL_3; - return 0; - case 9: - case 10: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 34: - case 35: - case 36: - case 37: - case 38: - case 40: - case 48: - case 52: - case 53: - case 54: - case 60: - case 63: - case 67: - case 68: - case 69: - case 73: - case 74: - case 75: - if ( !a3 ) - return 0; - goto LABEL_4; - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 41: - case 46: - case 47: - case 77: - case 79: - case 80: - goto LABEL_4; - case 42: - case 49: -LABEL_3: - if ( !a4 ) - return 0; -LABEL_4: - v5 = a1[5]; - if ( v5 >= a1[6] ) - return 0; - v6 = (_DWORD *)(a1[4] + 20 * v5); - v6[1] = 0; - v6[2] = 0; - a1[5] = v5 + 1; - *v6 = a2; - v6[4] = a4; - result = v6; - v6[3] = a3; - return result; - default: - return 0; - } -} - -//----- (00456D70) -------------------------------------------------------- -_DWORD *__usercall d_make_name@(_DWORD *a1@, int a2@, int a3@) -{ - int v4; // ecx - _DWORD *v6; // edx - _DWORD *result; // eax - - v4 = a1[5]; - if ( v4 >= a1[6] ) - return 0; - v6 = (_DWORD *)(a1[4] + 20 * v4); - v6[1] = 0; - v6[2] = 0; - a1[5] = v4 + 1; - if ( !a2 || a3 <= 0 ) - return 0; - v6[1] = 0; - result = v6; - v6[2] = 0; - *v6 = 0; - v6[3] = a2; - v6[4] = a3; - return result; -} - -//----- (00456DD0) -------------------------------------------------------- -int __usercall d_number@(int a1@) -{ - char *v1; // ebx - char v2; // cl - _BYTE *v3; // ebx - signed int v4; // esi - int v5; // ecx - int v7; // [esp+0h] [ebp-14h] - - v1 = *(char **)(a1 + 12); - v2 = *v1; - if ( *v1 != 110 ) - { - if ( (unsigned __int8)(v2 - 48) <= 9u ) - { - v7 = 0; - goto LABEL_4; - } - return 0; - } - *(_DWORD *)(a1 + 12) = v1 + 1; - v2 = v1[1]; - if ( (unsigned __int8)(v2 - 48) > 9u ) - return 0; - v7 = 1; - ++v1; -LABEL_4: - v3 = v1 + 1; - v4 = 0; - v5 = (char)(v2 - 48); - while ( 1 ) - { - *(_DWORD *)(a1 + 12) = v3; - v4 = v5 + 10 * v4; - LOBYTE(v5) = *v3 - 48; - if ( (unsigned __int8)v5 > 9u ) - break; - v5 = (char)v5; - ++v3; - if ( (int)((0x7FFFFFFF - (char)v5) / 0xAu) < v4 ) - return -1; - } - if ( v7 ) - return -v4; - return v4; -} - -//----- (00456EA0) -------------------------------------------------------- -int __usercall d_call_offset@(int a1@, int a2@) -{ - _BYTE *v3; // eax - _BYTE *v4; // eax - _BYTE *v6; // eax - - if ( !a2 ) - { - v3 = *(_BYTE **)(a1 + 12); - if ( !*v3 ) - return 0; - *(_DWORD *)(a1 + 12) = v3 + 1; - a2 = (char)*v3; - } - if ( a2 != 104 ) - { - if ( a2 != 118 ) - return 0; - d_number(a1); - v4 = *(_BYTE **)(a1 + 12); - if ( *v4 != 95 ) - return 0; - *(_DWORD *)(a1 + 12) = v4 + 1; - } - d_number(a1); - v6 = *(_BYTE **)(a1 + 12); - if ( *v6 != 95 ) - return 0; - *(_DWORD *)(a1 + 12) = v6 + 1; - return 1; -} - -//----- (00456F00) -------------------------------------------------------- -_DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@) -{ - _DWORD *result; // eax - char *v4; // edx - char v5; // cl - int v6; // ebp - int v7; // esi - int v8; // edi - - result = a2; - v4 = (char *)a1[3]; - v5 = *v4; - if ( *v4 == 82 || v5 == 79 ) - { - v6 = a1[11]; - v7 = 32; - v8 = v6 + 3; - if ( v5 == 82 ) - { - v8 = v6 + 2; - v7 = 31; - } - a1[11] = v8; - a1[3] = v4 + 1; - return d_make_comp(a1, v7, (int)result, 0); - } - return result; -} - -//----- (00456F70) -------------------------------------------------------- -int __usercall d_discriminator@(int a1@) -{ - _BYTE *v2; // eax - int v3; // edx - int result; // eax - int v5; // eax - _BYTE *v6; // edx - - v2 = *(_BYTE **)(a1 + 12); - if ( *v2 != 95 ) - return 1; - *(_DWORD *)(a1 + 12) = v2 + 1; - if ( v2[1] != 95 ) - { - v3 = d_number(a1); - result = 0; - if ( v3 < 0 ) - return result; - return 1; - } - *(_DWORD *)(a1 + 12) = v2 + 2; - v5 = d_number(a1); - if ( v5 < 0 ) - return 0; - if ( v5 <= 9 ) - return 1; - v6 = *(_BYTE **)(a1 + 12); - result = 0; - if ( *v6 == 95 ) - { - *(_DWORD *)(a1 + 12) = v6 + 1; - return 1; - } - return result; -} - -//----- (00456FD0) -------------------------------------------------------- -int __usercall d_count_templates_scopes@(int result@, int *a2@, int a3@) -{ - _DWORD *v3; // esi - int *v4; // ebx - int v5; // edx - _DWORD *v6; // eax - int v7; // ecx - - if ( a2 ) - { - v3 = (_DWORD *)result; - v4 = a2; - while ( 2 ) - { - result = v4[2]; - if ( result <= 1 ) - { - v5 = v3[71]; - if ( v5 <= 1024 ) - { - v4[2] = result + 1; - result = *v4; - switch ( *v4 ) - { - case 1: - case 2: - case 3: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 37: - case 38: - case 40: - case 41: - case 42: - case 43: - case 45: - case 46: - case 47: - case 48: - case 49: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - case 64: - case 67: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - case 80: - goto LABEL_11; - case 4: - ++v3[81]; -LABEL_11: - v6 = (_DWORD *)v4[3]; - goto LABEL_12; - case 7: - case 8: - case 51: - v4 = (int *)v4[4]; - goto LABEL_7; - case 35: - case 36: - v6 = (_DWORD *)v4[3]; - if ( *v6 == 5 ) - ++v3[78]; -LABEL_12: - v3[71] = v5 + 1; - d_count_templates_scopes(a3, v6); - result = d_count_templates_scopes(v7, v4[4]); - --v3[71]; - return result; - case 44: - case 68: - case 69: - case 70: - case 71: - v4 = (int *)v4[3]; -LABEL_7: - if ( !v4 ) - return result; - continue; - default: - return result; - } - } - } - break; - } - } - return result; -} -// 45704A: variable 'v7' is possibly undefined - -//----- (00457080) -------------------------------------------------------- -_DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@) -{ - if ( result ) - { - while ( *result == 47 ) - { - if ( a2 <= 0 ) - { - if ( a2 ) - return 0; - return (_DWORD *)result[3]; - } - result = (_DWORD *)result[4]; - --a2; - if ( !result ) - return result; - } - } - return 0; -} - -//----- (004570D0) -------------------------------------------------------- -void __cdecl d_growable_string_callback_adapter(void *Src, size_t Size, int a3) -{ - size_t v3; // ebx - int v4; // edx - size_t v5; // eax - void *v6; // eax - - v3 = *(_DWORD *)(a3 + 8); - v4 = *(_DWORD *)(a3 + 12); - v5 = Size + *(_DWORD *)(a3 + 4) + 1; - if ( v5 > v3 ) - { - if ( v4 ) - return; - if ( v3 || (v3 = 2, v5 > 2) ) - { - do - v3 *= 2; - while ( v5 > v3 ); - } - v6 = realloc(*(void **)a3, v3); - if ( !v6 ) - { - free(*(void **)a3); - *(_DWORD *)a3 = 0; - *(_DWORD *)(a3 + 4) = 0; - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 12) = 1; - return; - } - *(_DWORD *)a3 = v6; - v4 = *(_DWORD *)(a3 + 12); - *(_DWORD *)(a3 + 8) = v3; - } - if ( !v4 ) - { - memcpy((void *)(*(_DWORD *)a3 + *(_DWORD *)(a3 + 4)), Src, Size); - *(_BYTE *)(*(_DWORD *)(a3 + 4) + Size + *(_DWORD *)a3) = 0; - *(_DWORD *)(a3 + 4) += Size; - } -} - -//----- (00457190) -------------------------------------------------------- -int sprintf_constprop_0(FILE *a1, int a2, ...) -{ - va_list va; // [esp+28h] [ebp+Ch] BYREF - - va_start(va, a2); - return __mingw_vsprintf(a1, "%d", (int *)va); -} - -//----- (004571C0) -------------------------------------------------------- -BOOL __usercall next_is_type_qual_isra_0@(char *a1@) -{ - char v2; // al - - v2 = *a1; - if ( v2 == 86 || v2 == 114 || v2 == 75 ) - return 1; - if ( v2 == 68 ) - return (a1[1] & 0xDF) == 79 || (unsigned __int8)(a1[1] - 119) <= 1u; - return 0; -} - -//----- (00457220) -------------------------------------------------------- -int __usercall d_append_char@(int a1@, char a2@
) -{ - int result; // eax - int v4; // ecx - int v5; // eax - char v6; // [esp+1Ch] [ebp-10h] - - result = *(_DWORD *)(a1 + 256); - if ( result == 255 ) - { - v5 = *(_DWORD *)(a1 + 268); - v6 = a2; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v5); - ++*(_DWORD *)(a1 + 296); - a2 = v6; - result = 0; - v4 = 1; - } - else - { - v4 = result + 1; - } - *(_DWORD *)(a1 + 256) = v4; - *(_BYTE *)(a1 + result) = a2; - *(_BYTE *)(a1 + 260) = a2; - return result; -} - -//----- (00457290) -------------------------------------------------------- -_DWORD *__usercall d_lookup_template_argument@(int a1@, int a2@) -{ - _DWORD *result; // eax - int v4; // edx - - result = *(_DWORD **)(a1 + 272); - if ( result ) - { - v4 = *(_DWORD *)(a2 + 12); - result = *(_DWORD **)(result[1] + 16); - if ( v4 >= 0 && result ) - { - while ( 1 ) - { - if ( *result != 47 ) - return 0; - if ( !v4 ) - break; - result = (_DWORD *)result[4]; - --v4; - if ( !result ) - return result; - } - return (_DWORD *)result[3]; - } - } - else - { - *(_DWORD *)(a1 + 280) = 1; - } - return result; -} - -//----- (004572F0) -------------------------------------------------------- -size_t __usercall d_append_string@(int a1@, const char *Str@) -{ - const char *v3; // ebx - size_t result; // eax - size_t v5; // edi - const char *v6; // edi - size_t v7; // ecx - char v8; // dl - int v9; // eax - char v10; // [esp+1Fh] [ebp-Dh] - - v3 = Str; - result = strlen(Str); - if ( result ) - { - v5 = result; - result = *(_DWORD *)(a1 + 256); - v6 = &v3[v5]; - do - { - v8 = *v3; - if ( result == 255 ) - { - v9 = *(_DWORD *)(a1 + 268); - v10 = *v3; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); - ++*(_DWORD *)(a1 + 296); - v8 = v10; - v7 = 0; - result = 1; - } - else - { - v7 = result++; - } - ++v3; - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v7) = v8; - *(_BYTE *)(a1 + 260) = v8; - } - while ( v6 != v3 ); - } - return result; -} - -//----- (00457390) -------------------------------------------------------- -_DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@) -{ - _DWORD *v4; // ebx - _DWORD *result; // eax - int v6; // edx - - if ( !a2 ) - return 0; - v4 = a2; - while ( 2 ) - { - switch ( *v4 ) - { - case 0: - case 6: - case 0x18: - case 0x27: - case 0x2C: - case 0x32: - case 0x41: - case 0x42: - case 0x46: - case 0x47: - case 0x48: - case 0x4B: - case 0x4C: - return 0; - case 5: - result = *(_DWORD **)(a1 + 272); - if ( result ) - { - v6 = v4[3]; - result = *(_DWORD **)(result[1] + 16); - if ( v6 >= 0 ) - { - if ( !result ) - return 0; - while ( 1 ) - { - if ( *result != 47 ) - return 0; - if ( !v6 ) - break; - result = (_DWORD *)result[4]; - --v6; - if ( !result ) - return 0; - } - result = (_DWORD *)result[3]; - } - if ( !result || *result != 47 ) - return 0; - } - else - { - *(_DWORD *)(a1 + 280) = 1; - } - break; - case 7: - case 8: - case 0x33: - goto LABEL_10; - default: - result = (_DWORD *)d_find_pack(a3, v4[3]); - if ( result ) - return result; -LABEL_10: - v4 = (_DWORD *)v4[4]; - if ( !v4 ) - return 0; - continue; - } - return result; - } -} -// 4573CD: variable 'a3' is possibly undefined - -//----- (00457430) -------------------------------------------------------- -_DWORD *__usercall d_template_param@(_DWORD *a1@) -{ - _BYTE *v2; // eax - char v3; // dl - int v4; // ecx - _BYTE *v5; // eax - int v6; // edx - _DWORD *result; // eax - - v2 = (_BYTE *)a1[3]; - if ( *v2 != 84 ) - return 0; - a1[3] = v2 + 1; - v3 = v2[1]; - if ( v3 == 95 ) - { - v4 = 0; - a1[3] = v2 + 2; - } - else - { - if ( v3 == 110 ) - return 0; - v4 = d_number((int)a1) + 1; - if ( v4 < 0 ) - return 0; - v5 = (_BYTE *)a1[3]; - if ( *v5 != 95 ) - return 0; - a1[3] = v5 + 1; - } - v6 = a1[5]; - if ( v6 < a1[6] ) - { - result = (_DWORD *)(a1[4] + 20 * v6); - result[1] = 0; - result[2] = 0; - a1[5] = v6 + 1; - *result = 5; - result[3] = v4; - return result; - } - return 0; -} - -//----- (004574C0) -------------------------------------------------------- -size_t __usercall d_append_num@(int a1@, int a2@) -{ - FILE *p_Str; // ebx - size_t result; // eax - size_t v5; // edi - FILE *v6; // edi - size_t v7; // ecx - char ptr; // dl - int v9; // eax - char v10; // [esp+1Fh] [ebp-2Dh] - FILE Str; // [esp+27h] [ebp-25h] BYREF - - p_Str = &Str; - sprintf_constprop_0(&Str, (int)"%d", a2); - result = strlen((const char *)&Str); - if ( result ) - { - v5 = result; - result = *(_DWORD *)(a1 + 256); - v6 = (FILE *)((char *)&Str + v5); - do - { - ptr = (char)p_Str->_ptr; - if ( result == 255 ) - { - v9 = *(_DWORD *)(a1 + 268); - v10 = (char)p_Str->_ptr; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); - ++*(_DWORD *)(a1 + 296); - ptr = v10; - v7 = 0; - result = 1; - } - else - { - v7 = result++; - } - p_Str = (FILE *)((char *)p_Str + 1); - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v7) = ptr; - *(_BYTE *)(a1 + 260) = ptr; - } - while ( v6 != p_Str ); - } - return result; -} -// 4574C0: using guessed type FILE var_25; - -//----- (00457570) -------------------------------------------------------- -_DWORD *__usercall d_source_name@(int a1@) -{ - int v2; // eax - int v3; // ebp - int v4; // ecx - _BYTE *v5; // eax - _DWORD *result; // eax - int v7; // edx - int v8; // eax - char v9; // [esp+3h] [ebp-11h] - - v2 = d_number(a1); - if ( v2 > 0 ) - { - v3 = *(_DWORD *)(a1 + 12); - v4 = v2; - if ( v2 > *(_DWORD *)(a1 + 4) - v3 ) - goto LABEL_18; - v5 = (_BYTE *)(v3 + v2); - *(_DWORD *)(a1 + 12) = v3 + v4; - if ( (*(_BYTE *)(a1 + 8) & 4) != 0 && *v5 == 36 ) - { - *(_DWORD *)(a1 + 12) = v5 + 1; - if ( v4 <= 9 ) - goto LABEL_7; - } - else if ( v4 <= 9 ) - { - goto LABEL_7; - } - if ( *(_DWORD *)v3 == 1330399071 && *(_DWORD *)(v3 + 4) == 1598832962 ) - { - v9 = *(_BYTE *)(v3 + 8); - if ( (v9 == 95 || v9 == 46 || v9 == 36) && *(_BYTE *)(v3 + 9) == 78 ) - { - v7 = *(_DWORD *)(a1 + 20); - *(_DWORD *)(a1 + 44) = *(_DWORD *)(a1 + 44) + 22 - v4; - if ( v7 < *(_DWORD *)(a1 + 24) ) - { - v8 = *(_DWORD *)(a1 + 16); - *(_DWORD *)(a1 + 20) = v7 + 1; - result = (_DWORD *)(v8 + 20 * v7); - result[1] = 0; - result[2] = 0; - *result = 0; - result[3] = "(anonymous namespace)"; - result[4] = 21; - goto LABEL_8; - } -LABEL_18: - result = 0; - goto LABEL_8; - } - } -LABEL_7: - result = d_make_name((_DWORD *)a1, v3, v4); -LABEL_8: - *(_DWORD *)(a1 + 40) = result; - return result; - } - return 0; -} - -//----- (00457680) -------------------------------------------------------- -_DWORD *__usercall d_substitution@(int a1@, char a2@
) -{ - _BYTE *v3; // eax - int v5; // edx - BOOL v6; // eax - char v7; // cl - const char *v8; // eax - _DWORD *comp; // esi - unsigned int v11; // eax - unsigned int i; // ecx - char *v13; // eax - unsigned int v14; // ecx - int v15; // esi - int v16; // edx - int v17; // ebp - int v18; // edi - _DWORD *v19; // edi - int v20; // ecx - int v21; // eax - _BYTE *v22; // eax - int v23; // edi - _DWORD *v24; // eax - int v25; // eax - BOOL v26; // [esp+4h] [ebp-18h] - int v27; // [esp+8h] [ebp-14h] - - v3 = *(_BYTE **)(a1 + 12); - if ( *v3 != 83 ) - return 0; - *(_DWORD *)(a1 + 12) = v3 + 1; - LOBYTE(v5) = v3[1]; - if ( !(_BYTE)v5 ) - { -LABEL_3: - v26 = (*(_BYTE *)(a1 + 8) & 8) != 0; - if ( (*(_BYTE *)(a1 + 8) & 8) == 0 && (a2 & 1) != 0 ) - { - v6 = 1; - if ( (unsigned __int8)(**(_BYTE **)(a1 + 12) - 67) > 1u ) - v6 = (*(_BYTE *)(a1 + 8) & 8) != 0; - v26 = v6; - } - v7 = 116; - v8 = "t"; - while ( (_BYTE)v5 != v7 ) - { - v8 += 28; - if ( v8 == (const char *)&unk_559324 ) - return 0; - v7 = *v8; - } - v15 = *((_DWORD *)v8 + 5); - v16 = *(_DWORD *)(a1 + 20); - v17 = *(_DWORD *)(a1 + 24); - if ( v15 ) - { - v27 = *((_DWORD *)v8 + 6); - if ( v16 >= v17 ) - { - v19 = 0; - } - else - { - v18 = 5 * v16++; - v19 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 4 * v18); - v19[1] = 0; - v19[2] = 0; - *(_DWORD *)(a1 + 20) = v16; - *v19 = 24; - v19[3] = v15; - v19[4] = v27; - } - *(_DWORD *)(a1 + 40) = v19; - } - if ( v26 ) - { - v20 = *((_DWORD *)v8 + 3); - v21 = *((_DWORD *)v8 + 4); - } - else - { - v20 = *((_DWORD *)v8 + 1); - v21 = *((_DWORD *)v8 + 2); - } - *(_DWORD *)(a1 + 44) += v21; - if ( v16 >= v17 ) - { - comp = 0; - } - else - { - comp = (_DWORD *)(*(_DWORD *)(a1 + 16) + 20 * v16); - comp[1] = 0; - comp[2] = 0; - *(_DWORD *)(a1 + 20) = v16 + 1; - *comp = 24; - comp[3] = v20; - comp[4] = v21; - } - v22 = *(_BYTE **)(a1 + 12); - if ( *v22 != 66 ) - return comp; - v23 = *(_DWORD *)(a1 + 40); - do - { - *(_DWORD *)(a1 + 12) = v22 + 1; - v24 = d_source_name(a1); - comp = d_make_comp((_DWORD *)a1, 76, (int)comp, (int)v24); - v22 = *(_BYTE **)(a1 + 12); - } - while ( *v22 == 66 ); - *(_DWORD *)(a1 + 40) = v23; - if ( comp ) - { - v25 = *(_DWORD *)(a1 + 32); - if ( v25 < *(_DWORD *)(a1 + 36) ) - { - *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v25) = comp; - *(_DWORD *)(a1 + 32) = v25 + 1; - return comp; - } - } - return 0; - } - *(_DWORD *)(a1 + 12) = v3 + 2; - v5 = (char)v3[1]; - if ( (unsigned __int8)(v5 - 48) > 9u ) - { - if ( (_BYTE)v5 != 95 ) - { - if ( (unsigned __int8)(v5 - 65) > 0x19u ) - goto LABEL_3; -LABEL_16: - v11 = 0; - if ( (unsigned __int8)(v5 - 48) > 9u ) - goto LABEL_22; -LABEL_17: - for ( i = v5 + 36 * v11 - 48; v11 <= i; i = v5 + 36 * v11 - 55 ) - { - v13 = *(char **)(a1 + 12); - v5 = *v13; - if ( (_BYTE)v5 ) - { - *(_DWORD *)(a1 + 12) = v13 + 1; - v5 = *v13; - if ( (_BYTE)v5 == 95 ) - { - v14 = i + 1; - goto LABEL_26; - } - } - v11 = i; - if ( (unsigned __int8)(v5 - 48) <= 9u ) - goto LABEL_17; -LABEL_22: - if ( (unsigned __int8)(v5 - 65) > 0x19u ) - return 0; - } - return 0; - } - } - else if ( (_BYTE)v5 != 95 ) - { - goto LABEL_16; - } - v14 = 0; -LABEL_26: - if ( *(_DWORD *)(a1 + 32) <= v14 ) - return 0; - return *(_DWORD **)(*(_DWORD *)(a1 + 28) + 4 * v14); -} - -//----- (004578C0) -------------------------------------------------------- -int __usercall d_print_java_identifier@(int result@, unsigned int a2@, int a3@) -{ - unsigned int v3; // edi - int v4; // ebx - char *i; // ebp - int v6; // ecx - char v7; // dl - unsigned int v8; // esi - _BYTE *v9; // ebx - int v10; // eax - char v11; // cl - int v12; // eax - _BYTE *v13; // esi - int v14; // eax - int v15; // [esp+14h] [ebp-28h] - char v16; // [esp+14h] [ebp-28h] - unsigned int v17; // [esp+14h] [ebp-28h] - int v18; // [esp+18h] [ebp-24h] - char *v19; // [esp+1Ch] [ebp-20h] - - v3 = a2 + a3; - if ( a2 < a2 + a3 ) - { - v4 = result; - for ( i = (char *)a2; v3 > (unsigned int)i; ++i ) - { - v7 = *i; - result = *(_DWORD *)(v4 + 256); - if ( (int)(v3 - (_DWORD)i) <= 3 || v7 != 95 || i[1] != 95 || i[2] != 85 || v3 <= (unsigned int)(i + 3) ) - { -LABEL_3: - if ( result == 255 ) - { - v12 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v16 = v7; - (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v12); - ++*(_DWORD *)(v4 + 296); - v7 = v16; - result = 0; - v6 = 1; - } - else - { - v6 = result + 1; - } - *(_DWORD *)(v4 + 256) = v6; - *(_BYTE *)(v4 + result) = v7; - *(_BYTE *)(v4 + 260) = v7; - continue; - } - v18 = v4; - v8 = 0; - v9 = i + 3; - v15 = result; - while ( 1 ) - { - v11 = *v9; - LOBYTE(v10) = *v9 - 48; - if ( (unsigned __int8)v10 <= 9u ) - { - v10 = (char)v10; - goto LABEL_15; - } - if ( (unsigned __int8)(v11 - 65) > 5u ) - break; - v10 = (char)(v11 - 55); -LABEL_15: - ++v9; - v8 = v10 + 16 * v8; - if ( (_BYTE *)v3 == v9 ) - { - result = v15; - v4 = v18; - goto LABEL_3; - } - } - if ( (unsigned __int8)(v11 - 97) <= 5u ) - { - v10 = (char)(v11 - 87); - goto LABEL_15; - } - result = v15; - v17 = v8; - v13 = v9; - v19 = v9; - v4 = v18; - if ( v3 <= (unsigned int)v13 || v17 > 0xFF || v11 != 95 ) - goto LABEL_3; - if ( result == 255 ) - { - v14 = *(_DWORD *)(v18 + 268); - *(_BYTE *)(v18 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(v18 + 264))(v18, 255, v14); - ++*(_DWORD *)(v18 + 296); - result = 0; - } - i = v19; - *(_DWORD *)(v18 + 256) = result + 1; - *(_BYTE *)(v18 + result) = v17; - *(_BYTE *)(v18 + 260) = v17; - } - } - return result; -} - -//----- (00457A70) -------------------------------------------------------- -int *__usercall d_type@( - _DWORD *a1@, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - int a10, - int a11, - int a12) -{ - char *v13; // esi - int v14; // edi - unsigned int *v15; // eax - unsigned int *name; // esi - int *result; // eax - int **v18; // esi - int *v19; // eax - int *v20; // edx - int *v21; // ecx - int v22; // edx - int v23; // edx - int v24; // ecx - int v25; // edx - int v26; // edx - char v27; // al - _BYTE *v28; // edx - int v29; // eax - int v30; // eax - int v31; // eax - int v32; // eax - _DWORD *v33; // eax - int v34; // eax - int *comp; // esi - _BYTE *v36; // eax - int v37; // eax - _BYTE *v38; // esi - int v39; // ecx - _DWORD *v40; // ecx - _BYTE *v41; // edx - char v42; // al - char *v43; // esi - char *v44; // ecx - int v45; // eax - int v46; // esi - int v47; // eax - int v48; // esi - unsigned int *v49; // eax - _BYTE *v50; // edx - int v51; // eax - int *v52; // edi - unsigned __int8 v53; // al - char *v54; // eax - char v55; // dl - int v56; // edx - int v57; // eax - int v58; // edx - int v59; // eax - int v60; // edx - int v61; // edx - int v62; // edx - int v63; // edx - int v64; // eax - unsigned int *v65; // esi - _BYTE *v66; // eax - int v67; // eax - int v68; // edx - int v69; // edx - int v70; // edx - int v71; // eax - int v72; // edx - _DWORD *v73; // eax - int v74; // ebp - int v75; // edi - _DWORD *v76; // ecx - int *v77; // edx - int v78; // eax - int v79; // edi - unsigned int *v80; // eax - _DWORD *v81; // [esp+0h] [ebp-4Ch] - int v82; // [esp+1Ch] [ebp-30h] - int *v83; // [esp+2Ch] [ebp-20h] BYREF - - v13 = (char *)a1[3]; - if ( next_is_type_qual_isra_0(v13) ) - { - v18 = d_cv_qualifiers(a1, &v83, 0); - if ( v18 ) - { - v19 = *(_BYTE *)a1[3] == 70 ? d_function_type((int)a1) : (int *)d_type(); - *v18 = v19; - v20 = v19; - if ( v19 ) - { - result = v83; - if ( (unsigned int)(*v20 - 31) <= 1 ) - { - v21 = (int *)v20[3]; - v20[3] = (int)v83; - v83 = *v18; - *v18 = v21; - result = v83; - } - if ( result ) - { - v22 = a1[8]; - if ( v22 < a1[9] ) - { - *(_DWORD *)(a1[7] + 4 * v22) = result; - a1[8] = v22 + 1; - return result; - } - } - } - } - } - else - { - switch ( *v13 ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'N': - case 'Z': - result = d_name(a1); - v83 = result; - goto LABEL_19; - case 'A': - v41 = v13 + 1; - a1[3] = v13 + 1; - v42 = v13[1]; - if ( v42 == 95 ) - { - name = 0; -LABEL_53: - a1[3] = v41 + 1; - v45 = d_type(); - result = d_make_comp(a1, 42, (int)name, v45); - v83 = result; - goto LABEL_19; - } - if ( (unsigned __int8)(v42 - 48) > 9u ) - { - v14 = a1[12]; - a1[12] = 1; - v15 = d_expression_1(a1); - a1[12] = v14; - name = v15; - if ( !v15 ) - return 0; -LABEL_52: - v41 = (_BYTE *)a1[3]; - if ( *v41 != 95 ) - return 0; - goto LABEL_53; - } - v43 = v13 + 2; - do - { - v44 = v43; - a1[3] = v43++; - } - while ( (unsigned __int8)(*v44 - 48) <= 9u ); - name = d_make_name(a1, (int)v41, v44 - v41); - if ( name ) - goto LABEL_52; - break; - case 'C': - a1[3] = v13 + 1; - v34 = d_type(); - result = d_make_comp(a1, 37, v34, 0); - v83 = result; - goto LABEL_19; - case 'D': - a1[3] = v13 + 1; - if ( !v13[1] ) - return 0; - a1[3] = v13 + 2; - switch ( v13[1] ) - { - case 'F': - v51 = a1[5]; - if ( v51 >= a1[6] ) - { - MEMORY[0] = 0; - BUG(); - } - v52 = (int *)(a1[4] + 20 * v51); - v52[1] = 0; - v52[2] = 0; - v83 = v52; - a1[5] = v51 + 1; - *v52 = 44; - v53 = v13[2] - 48; - *((_WORD *)v52 + 8) = v53 <= 9u; - if ( v53 <= 9u ) - { - d_number((int)a1); - v52 = v83; - } - v52[3] = d_type(); - if ( !v83[3] ) - return 0; - d_number((int)a1); - v54 = (char *)a1[3]; - v55 = *v54; - if ( *v54 ) - { - a1[3] = v54 + 1; - v55 = *v54; - } - result = v83; - *((_WORD *)v83 + 9) = v55 == 115; - return result; - case 'T': - case 't': - v48 = a1[12]; - a1[12] = 1; - v49 = d_expression_1(a1); - a1[12] = v48; - result = d_make_comp(a1, 67, (int)v49, 0); - v83 = result; - if ( result ) - { - v50 = (_BYTE *)a1[3]; - if ( *v50 ) - { - a1[3] = v50 + 1; - if ( *v50 == 69 ) - goto LABEL_20; - } - } - return 0; - case 'a': - v58 = a1[5]; - if ( v58 >= a1[6] ) - return 0; - v59 = a1[4]; - a1[5] = v58 + 1; - result = (int *)(v59 + 20 * v58); - result[1] = 0; - result[2] = 0; - *result = 0; - result[3] = (int)"auto"; - result[4] = 4; - return result; - case 'c': - v56 = a1[5]; - if ( v56 >= a1[6] ) - return 0; - v57 = a1[4]; - a1[5] = v56 + 1; - result = (int *)(v57 + 20 * v56); - result[1] = 0; - result[2] = 0; - *result = 0; - result[3] = (int)"decltype(auto)"; - result[4] = 14; - return result; - case 'd': - v68 = a1[5]; - if ( v68 >= a1[6] ) - { - v83 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v68); - result[1] = 0; - result[2] = 0; - a1[5] = v68 + 1; - *result = 39; - result[3] = (int)&off_559C9C; - a1[11] += 9; - return result; - case 'e': - v63 = a1[5]; - if ( v63 >= a1[6] ) - { - v83 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v63); - result[1] = 0; - result[2] = 0; - a1[5] = v63 + 1; - *result = 39; - result[3] = (int)&off_559CB0; - a1[11] += 10; - return result; - case 'f': - v61 = a1[5]; - if ( v61 >= a1[6] ) - { - v83 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v61); - result[1] = 0; - result[2] = 0; - a1[5] = v61 + 1; - *result = 39; - result[3] = (int)&off_559C88; - a1[11] += 9; - return result; - case 'h': - v60 = a1[5]; - if ( v60 >= a1[6] ) - { - v83 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v60); - result[1] = 0; - result[2] = 0; - a1[5] = v60 + 1; - *result = 39; - result[3] = (int)&off_559CC4; - a1[11] += 4; - return result; - case 'i': - v72 = a1[5]; - if ( v72 >= a1[6] ) - { - v83 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v72); - result[1] = 0; - result[2] = 0; - a1[5] = v72 + 1; - *result = 39; - result[3] = (int)&off_559D00; - a1[11] += 8; - return result; - case 'n': - v69 = a1[5]; - if ( v69 >= a1[6] ) - { - v83 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v69); - result[1] = 0; - result[2] = 0; - a1[5] = v69 + 1; - *result = 39; - result[3] = (int)&off_559D14; - a1[11] += 17; - return result; - case 'p': - v71 = d_type(); - result = d_make_comp(a1, 75, v71, 0); - v83 = result; - goto LABEL_19; - case 's': - v62 = a1[5]; - if ( v62 >= a1[6] ) - { - v83 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v62); - result[1] = 0; - result[2] = 0; - a1[5] = v62 + 1; - *result = 39; - result[3] = (int)&off_559CEC; - a1[11] += 8; - return result; - case 'u': - v70 = a1[5]; - if ( v70 >= a1[6] ) - { - v83 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v70); - result[1] = 0; - result[2] = 0; - a1[5] = v70 + 1; - *result = 39; - result[3] = (int)&off_559CD8; - a1[11] += 7; - return result; - case 'v': - if ( v13[2] == 95 ) - { - v79 = a1[12]; - a1[12] = 1; - a1[3] = v13 + 3; - v80 = d_expression_1(a1); - a1[12] = v79; - v65 = v80; - if ( !v80 ) - return 0; - } - else - { - v64 = a1[5]; - if ( v64 >= a1[6] ) - return 0; - v65 = (unsigned int *)(a1[4] + 20 * v64); - v65[1] = 0; - v65[2] = 0; - a1[5] = v64 + 1; - *v65 = 66; - v65[3] = d_number((int)a1); - } - v66 = (_BYTE *)a1[3]; - if ( *v66 != 95 ) - return 0; - a1[3] = v66 + 1; - v67 = d_type(); - result = d_make_comp(a1, 45, (int)v65, v67); - v83 = result; - break; - default: - return 0; - } - goto LABEL_19; - case 'F': - result = d_function_type((int)a1); - v83 = result; - goto LABEL_19; - case 'G': - a1[3] = v13 + 1; - v32 = d_type(); - result = d_make_comp(a1, 38, v32, 0); - v83 = result; - goto LABEL_19; - case 'M': - a1[3] = v13 + 1; - v46 = d_type(); - if ( !v46 ) - return 0; - v47 = d_type(); - if ( !v47 ) - return 0; - result = d_make_comp(a1, 43, v46, v47); - v83 = result; - goto LABEL_19; - case 'O': - a1[3] = v13 + 1; - v31 = d_type(); - result = d_make_comp(a1, 36, v31, 0); - v83 = result; - goto LABEL_19; - case 'P': - a1[3] = v13 + 1; - v30 = d_type(); - result = d_make_comp(a1, 34, v30, 0); - v83 = result; - goto LABEL_19; - case 'R': - a1[3] = v13 + 1; - v29 = d_type(); - result = d_make_comp(a1, 35, v29, 0); - v83 = result; - goto LABEL_19; - case 'S': - v27 = v13[1]; - if ( (unsigned __int8)(v27 - 48) <= 9u || v27 == 95 || (unsigned __int8)(v27 - 65) <= 0x19u ) - { - result = d_substitution((int)a1, 0); - v28 = (_BYTE *)a1[3]; - v83 = result; - if ( *v28 != 73 ) - return result; - a1[3] = v28 + 1; - v81 = d_template_args_1(a1); - result = d_make_comp(a1, 4, (int)v83, (int)v81); - goto LABEL_27; - } - result = d_name(a1); - v83 = result; - if ( !result ) - return 0; - if ( *result == 24 ) - return result; - goto LABEL_20; - case 'T': - result = d_template_param(a1); - v38 = (_BYTE *)a1[3]; - v83 = result; - if ( *v38 != 73 ) - goto LABEL_19; - if ( a1[13] ) - { - v74 = a1[5]; - v75 = a1[8]; - v82 = a1[11]; - a1[3] = v38 + 1; - v76 = d_template_args_1(a1); - if ( *(_BYTE *)a1[3] == 73 ) - { - v77 = v83; - if ( !v83 ) - return 0; - v78 = a1[8]; - if ( v78 >= a1[9] ) - return 0; - *(_DWORD *)(a1[7] + 4 * v78) = v83; - a1[8] = v78 + 1; - result = d_make_comp(a1, 4, (int)v77, (int)v76); - v83 = result; - } - else - { - a1[3] = v38; - a1[5] = v74; - a1[11] = v82; - result = v83; - a1[8] = v75; - } - } - else - { - if ( !result ) - return 0; - v39 = a1[8]; - if ( v39 >= a1[9] ) - return 0; - *(_DWORD *)(a1[7] + 4 * v39) = result; - a1[8] = v39 + 1; - v40 = 0; - if ( (unsigned __int8)(*v38 - 73) <= 1u ) - { - a1[3] = v38 + 1; - v40 = d_template_args_1(a1); - } - result = d_make_comp(a1, 4, (int)v83, (int)v40); -LABEL_27: - v83 = result; - } -LABEL_19: - if ( !result ) - return 0; -LABEL_20: - v26 = a1[8]; - if ( v26 < a1[9] ) - { - *(_DWORD *)(a1[7] + 4 * v26) = result; - result = v83; - a1[8] = v26 + 1; - return result; - } - return 0; - case 'U': - a1[3] = v13 + 1; - v83 = d_source_name((int)a1); - comp = v83; - v36 = (_BYTE *)a1[3]; - if ( *v36 == 73 ) - { - a1[3] = v36 + 1; - v73 = d_template_args_1(a1); - comp = d_make_comp(a1, 4, (int)v83, (int)v73); - } - v37 = d_type(); - result = d_make_comp(a1, 33, v37, (int)comp); - v83 = result; - goto LABEL_19; - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'l': - case 'm': - case 'n': - case 'o': - case 's': - case 't': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - v23 = a1[5]; - v24 = 20 * (char)(*v13 - 97) + 5610112; - if ( v23 >= a1[6] ) - d_type_cold(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); - result = (int *)(a1[4] + 20 * v23); - result[1] = 0; - result[2] = 0; - a1[5] = v23 + 1; - v25 = *(_DWORD *)(v24 + 4); - *result = 39; - result[3] = v24; - a1[11] += v25; - a1[3] = v13 + 1; - return result; - case 'u': - a1[3] = v13 + 1; - v33 = d_source_name((int)a1); - result = d_make_comp(a1, 40, (int)v33, 0); - v83 = result; - goto LABEL_19; - default: - return 0; - } - } - return 0; -} -// 559C88: using guessed type char *off_559C88; -// 559C9C: using guessed type char *off_559C9C; -// 559CB0: using guessed type char *off_559CB0; -// 559CC4: using guessed type char *off_559CC4; -// 559CD8: using guessed type char *off_559CD8; -// 559CEC: using guessed type char *off_559CEC; -// 559D00: using guessed type char *off_559D00; -// 559D14: using guessed type char *off_559D14; - -//----- (004583F0) -------------------------------------------------------- -_DWORD *__usercall d_operator_name@(_DWORD *a1@) -{ - unsigned __int8 *v2; // eax - unsigned __int8 v3; // si - unsigned __int8 v4; // cl - int v5; // edx - unsigned __int8 v6; // bp - void **v7; // edi - _BYTE *v8; // ecx - bool v9; // cc - _DWORD *result; // eax - int v11; // edx - char v12; // bl - _DWORD *v13; // eax - int v14; // edx - _DWORD *v15; // ecx - int v16; // ebx - int v17; // ecx - int v18; // [esp+18h] [ebp-24h] - _DWORD *v19; // [esp+1Ch] [ebp-20h] - - v2 = (unsigned __int8 *)a1[3]; - if ( !*v2 ) - { - v4 = 0; - v3 = 0; - goto LABEL_3; - } - a1[3] = v2 + 1; - v3 = *v2; - v4 = v2[1]; - if ( !v4 ) - { -LABEL_3: - v19 = a1; - v5 = 0; - v6 = v4; - v18 = 69; - while ( 1 ) - { - v7 = &cplus_demangle_operators + 4 * v5 + 4 * ((v18 - v5) / 2); - v8 = *v7; - v9 = *(_BYTE *)*v7 <= v3; - if ( *(_BYTE *)*v7 == v3 ) - { - v9 = v8[1] <= v6; - if ( v8[1] == v6 ) - break; - } - if ( v9 ) - v5 += (v18 - v5) / 2 + 1; - else - v18 = v5 + (v18 - v5) / 2; - if ( v5 == v18 ) - return 0; - } - v11 = v19[5]; - if ( v11 < v19[6] ) - { - result = (_DWORD *)(v19[4] + 20 * v11); - result[1] = 0; - result[2] = 0; - v19[5] = v11 + 1; - *result = 50; - result[3] = v7; - return result; - } - return 0; - } - a1[3] = v2 + 2; - v4 = v2[1]; - if ( v3 == 118 ) - { - v12 = v4 - 48; - if ( (unsigned __int8)(v4 - 48) > 9u ) - goto LABEL_3; - v13 = d_source_name((int)a1); - v14 = a1[5]; - v15 = v13; - if ( v14 >= a1[6] ) - return 0; - result = (_DWORD *)(a1[4] + 20 * v14); - result[1] = 0; - result[2] = 0; - a1[5] = v14 + 1; - if ( !v15 ) - return 0; - result[1] = 0; - result[2] = 0; - *result = 51; - result[3] = v12; - result[4] = v15; - } - else - { - if ( v4 != 118 || v3 != 99 ) - goto LABEL_3; - v16 = a1[13]; - a1[13] = a1[12] == 0; - v17 = d_type(); - if ( a1[13] ) - result = d_make_comp(a1, 53, v17, 0); - else - result = d_make_comp(a1, 52, v17, 0); - a1[13] = v16; - } - return result; -} -// 457A70: using guessed type int d_type(void); -// 559500: using guessed type void *cplus_demangle_operators; - -//----- (004585B0) -------------------------------------------------------- -int __usercall d_parmlist@(_DWORD *a1@) -{ - char *v2; // ebp - char v3; // al - int *v4; // esi - _DWORD *comp; // eax - int v6; // ecx - int result; // eax - _DWORD *v8; // edx - int v9; // edx - int v10; // [esp+1Ch] [ebp-20h] BYREF - - v2 = (char *)a1[3]; - v10 = 0; - v3 = *v2; - if ( v3 == 0 || v3 == 69 ) - return 0; - v4 = &v10; - if ( v3 == 46 ) - return 0; - do - { - if ( (v3 == 82 || v3 == 79) && v2[1] == 69 ) - break; - v6 = d_type(); - if ( !v6 ) - return 0; - comp = d_make_comp(a1, 46, v6, 0); - *v4 = (int)comp; - if ( !comp ) - return 0; - v2 = (char *)a1[3]; - v4 = comp + 4; - v3 = *v2; - if ( *v2 == 69 || *v2 == 0 ) - break; - } - while ( v3 != 46 ); - result = v10; - if ( !v10 ) - return 0; - if ( !*(_DWORD *)(v10 + 16) ) - { - v8 = *(_DWORD **)(v10 + 12); - if ( *v8 == 39 ) - { - v9 = v8[3]; - if ( *(_DWORD *)(v9 + 16) == 9 ) - { - a1[11] -= *(_DWORD *)(v9 + 4); - *(_DWORD *)(result + 12) = 0; - } - } - } - return result; -} -// 457A70: using guessed type int d_type(void); - -//----- (00458680) -------------------------------------------------------- -_DWORD *__usercall d_bare_function_type@(_DWORD *a1@, int a2@) -{ - _BYTE *v3; // eax - int v4; // esi - int v5; // eax - - v3 = (_BYTE *)a1[3]; - if ( *v3 == 74 ) - { - a1[3] = v3 + 1; - goto LABEL_3; - } - if ( a2 ) - { -LABEL_3: - v4 = d_type(); - if ( v4 ) - { - v5 = d_parmlist(a1); - if ( v5 ) - return d_make_comp(a1, 41, v4, v5); - } - return 0; - } - v4 = 0; - v5 = d_parmlist(a1); - if ( v5 ) - return d_make_comp(a1, 41, v4, v5); - return 0; -} -// 457A70: using guessed type int d_type(void); - -//----- (004586F0) -------------------------------------------------------- -_DWORD *__usercall d_function_type@(int a1@) -{ - unsigned int v2; // ecx - _BYTE *v3; // edx - _DWORD *result; // eax - _DWORD *v5; // eax - _BYTE *v6; // edx - - if ( (*(_BYTE *)(a1 + 10) & 4) != 0 ) - { - v3 = *(_BYTE **)(a1 + 12); - if ( *v3 == 70 ) - goto LABEL_8; - return 0; - } - v2 = *(_DWORD *)(a1 + 56); - if ( v2 > 0x800 ) - return 0; - v3 = *(_BYTE **)(a1 + 12); - *(_DWORD *)(a1 + 56) = v2 + 1; - result = 0; - if ( *v3 != 70 ) - { -LABEL_4: - *(_DWORD *)(a1 + 56) = v2; - return result; - } -LABEL_8: - *(_DWORD *)(a1 + 12) = v3 + 1; - if ( v3[1] == 89 ) - *(_DWORD *)(a1 + 12) = v3 + 2; - v5 = d_bare_function_type((_DWORD *)a1, 1); - result = d_ref_qualifier((_DWORD *)a1, v5); - v6 = *(_BYTE **)(a1 + 12); - if ( *v6 == 69 ) - *(_DWORD *)(a1 + 12) = v6 + 1; - else - result = 0; - if ( (*(_BYTE *)(a1 + 10) & 4) == 0 ) - { - v2 = *(_DWORD *)(a1 + 56) - 1; - goto LABEL_4; - } - return result; -} - -//----- (00458780) -------------------------------------------------------- -_DWORD *__usercall d_unqualified_name@(_DWORD *a1@) -{ - char *v2; // eax - char v3; // cl - _DWORD *v4; // eax - _DWORD *comp; // esi - char v6; // dl - char v8; // dl - char *v9; // ecx - char v10; // dl - int v11; // eax - bool v12; // sf - int v13; // ecx - int v14; // eax - int v15; // edx - int v16; // edi - _DWORD *v17; // eax - int v18; // eax - int v19; // edx - _BYTE *v20; // eax - _DWORD *v21; // eax - _DWORD *v22; // edi - int v23; // edx - int v24; // ecx - int v25; // edi - char v26; // dl - int v27; // eax - int v28; // ecx - int v29; // edx - int v30; // ecx - int v31; // edi - int v32; // eax - int v33; // edx - _DWORD *v34; // [esp+1Ch] [ebp-20h] - - v2 = (char *)a1[3]; - v3 = *v2; - if ( (unsigned __int8)(*v2 - 48) > 9u ) - { - if ( (unsigned __int8)(v3 - 97) <= 0x19u ) - { - if ( v3 == 111 && v2[1] == 110 ) - a1[3] = v2 + 2; - v4 = d_operator_name(a1); - comp = v4; - if ( v4 ) - { - if ( *v4 == 50 ) - { - v18 = v4[3]; - v19 = *(_DWORD *)(v18 + 8); - v20 = *(_BYTE **)v18; - a1[11] += v19 + 7; - if ( *v20 == 108 && v20[1] == 105 && !v20[2] ) - { - v21 = d_source_name((int)a1); - comp = d_make_comp(a1, 55, (int)comp, (int)v21); - v2 = (char *)a1[3]; - v6 = *v2; - goto LABEL_7; - } - } - } -LABEL_6: - v2 = (char *)a1[3]; - v6 = *v2; - goto LABEL_7; - } - if ( (unsigned __int8)(v3 - 67) > 1u ) - { - if ( v3 != 76 ) - { - if ( v3 != 85 ) - return 0; - v8 = v2[1]; - if ( v8 == 108 ) - { - v9 = v2 + 1; - a1[3] = v2 + 1; - v6 = v2[1]; - if ( v6 == 108 ) - { - a1[3] = v2 + 2; - v25 = d_parmlist(a1); - v2 = (char *)a1[3]; - v6 = *v2; - if ( !v25 || v6 != 69 ) - goto LABEL_43; - a1[3] = v2 + 1; - v26 = v2[1]; - if ( v26 == 95 ) - { - v2 += 2; - v28 = 0; - a1[3] = v2; - } - else - { - if ( v26 == 110 ) - return 0; - v27 = d_number((int)a1); - v12 = v27 + 1 < 0; - v28 = v27 + 1; - v2 = (char *)a1[3]; - v6 = *v2; - if ( v12 || v6 != 95 ) - goto LABEL_43; - a1[3] = ++v2; - } - v29 = a1[5]; - if ( v29 < a1[6] ) - { - comp = (_DWORD *)(a1[4] + 20 * v29); - comp[1] = 0; - comp[2] = 0; - a1[5] = v29 + 1; - v15 = a1[8]; - *comp = 70; - comp[3] = v25; - comp[4] = v28; - if ( v15 < a1[9] ) - goto LABEL_22; - } - goto LABEL_64; - } - } - else - { - if ( v8 != 116 ) - return 0; - v9 = v2 + 1; - a1[3] = v2 + 1; - v6 = v2[1]; - if ( v6 == 116 ) - { - a1[3] = v2 + 2; - v10 = v2[2]; - if ( v10 == 95 ) - { - v13 = 0; - a1[3] = v2 + 3; -LABEL_20: - v14 = a1[5]; - if ( v14 < a1[6] ) - { - comp = (_DWORD *)(a1[4] + 20 * v14); - v15 = a1[8]; - comp[1] = 0; - comp[2] = 0; - a1[5] = v14 + 1; - v2 = (char *)a1[3]; - *comp = 72; - comp[3] = v13; - if ( v15 < a1[9] ) - { -LABEL_22: - *(_DWORD *)(a1[7] + 4 * v15) = comp; - a1[8] = v15 + 1; - v6 = *v2; - goto LABEL_7; - } - goto LABEL_64; - } - goto LABEL_71; - } - if ( v10 != 110 ) - { - v11 = d_number((int)a1); - v12 = v11 + 1 < 0; - v13 = v11 + 1; - v2 = (char *)a1[3]; - v6 = *v2; - if ( !v12 && v6 == 95 ) - { - a1[3] = v2 + 1; - goto LABEL_20; - } -LABEL_43: - comp = 0; - goto LABEL_7; - } - return 0; - } - } - v2 = v9; - comp = 0; - goto LABEL_7; - } - a1[3] = v2 + 1; - comp = d_source_name((int)a1); - if ( comp && d_discriminator((int)a1) ) - goto LABEL_6; - return 0; - } - v22 = (_DWORD *)a1[10]; - v34 = v22; - if ( v22 && (!*v22 || *v22 == 24) ) - { - a1[11] += v22[4]; - v6 = *v2; - v3 = *v2; - if ( *v2 != 67 ) - { - if ( v6 != 68 ) - goto LABEL_43; - goto LABEL_40; - } - } - else if ( v3 != 67 ) - { -LABEL_40: - switch ( v2[1] ) - { - case '0': - v23 = 1; - goto LABEL_46; - case '1': - v23 = 2; - goto LABEL_46; - case '2': - v23 = 3; - goto LABEL_46; - case '4': - v23 = 4; - goto LABEL_46; - case '5': - v23 = 5; -LABEL_46: - v24 = a1[5]; - a1[3] = v2 + 2; - if ( v24 < a1[6] && (comp = (_DWORD *)(a1[4] + 20 * v24), comp[1] = 0, comp[2] = 0, a1[5] = v24 + 1, v22) ) - { - comp[1] = 0; - comp[2] = 0; - *comp = 8; - comp[3] = v23; - comp[4] = v22; - v6 = v2[2]; - v2 += 2; - } - else - { - v6 = v2[2]; - comp = 0; - v2 += 2; - } - break; - default: - v6 = v3; - comp = 0; - break; - } -LABEL_7: - if ( v6 != 66 ) - return comp; - goto LABEL_24; - } - v30 = v2[1]; - if ( (_BYTE)v30 == 73 ) - { - a1[3] = v2 + 1; - v33 = v2[2]; - if ( (unsigned __int8)(v33 - 49) > 4u ) - { - v6 = v2[1]; - comp = 0; - ++v2; - goto LABEL_7; - } - v31 = v33 - 48; - a1[3] = v2 + 3; - d_type(); - v34 = (_DWORD *)a1[10]; - } - else - { - if ( (unsigned __int8)(v30 - 49) > 4u ) - return 0; - v31 = v30 - 48; - a1[3] = v2 + 2; - } - v32 = a1[5]; - if ( v32 < a1[6] ) - { - comp = (_DWORD *)(a1[4] + 20 * v32); - comp[1] = 0; - comp[2] = 0; - a1[5] = v32 + 1; - if ( v34 ) - { - comp[1] = 0; - comp[2] = 0; - *comp = 7; - comp[3] = v31; - comp[4] = v34; - goto LABEL_6; - } - } -LABEL_71: - v2 = (char *)a1[3]; -LABEL_64: - v6 = *v2; - comp = 0; - goto LABEL_7; - } - comp = d_source_name((int)a1); - v2 = (char *)a1[3]; - if ( *v2 != 66 ) - return comp; -LABEL_24: - v16 = a1[10]; - do - { - a1[3] = v2 + 1; - v17 = d_source_name((int)a1); - comp = d_make_comp(a1, 76, (int)comp, (int)v17); - v2 = (char *)a1[3]; - } - while ( *v2 == 66 ); - a1[10] = v16; - return comp; -} -// 457A70: using guessed type int d_type(void); - -//----- (00458C60) -------------------------------------------------------- -int *__usercall d_name@(_DWORD *a1@) -{ - char *v2; // edx - char v3; // al - int *v4; // esi - _BYTE *v5; // eax - char v7; // al - _DWORD *v8; // esi - _BYTE *v9; // eax - char v10; // dl - _DWORD *v11; // eax - _DWORD *v12; // edi - _BYTE *v13; // eax - int v14; // edx - _DWORD *v15; // ecx - _DWORD *v17; // edx - int v18; // eax - int v19; // ecx - _DWORD *v20; // ecx - int *comp; // eax - int v22; // edx - _DWORD *v23; // eax - int **v24; // ebp - unsigned __int8 *v25; // edx - _DWORD *v26; // eax - int *v27; // edi - int v28; // ebx - _DWORD *v29; // esi - unsigned int v30; // eax - int *v31; // eax - int v32; // edx - int v33; // eax - int v34; // ecx - char v35; // dl - int v36; // ebp - _BYTE *v37; // eax - _DWORD *v38; // edx - int v39; // eax - _DWORD *v40; // ebx - int *v41; // eax - _BYTE *v42; // eax - _DWORD *v43; // eax - int v44; // eax - int v45; // edx - int v46; // eax - int *v47; // [esp+1Ch] [ebp-30h] - _DWORD *v48; // [esp+1Ch] [ebp-30h] - int *v49; // [esp+2Ch] [ebp-20h] BYREF - - v2 = (char *)a1[3]; - v3 = *v2; - if ( *v2 == 85 ) - return d_unqualified_name(a1); - if ( v3 > 85 ) - { - if ( v3 != 90 ) - goto LABEL_21; - a1[3] = v2 + 1; - v7 = v2[1]; - if ( v7 == 71 || v7 == 84 ) - v8 = d_special_name(a1); - else - v8 = d_encoding_part_0((int)a1, 0); - if ( !v8 ) - return 0; - v9 = (_BYTE *)a1[3]; - if ( *v9 != 69 ) - return 0; - a1[3] = v9 + 1; - v10 = v9[1]; - if ( v10 == 115 ) - { - a1[3] = v9 + 2; - if ( !d_discriminator((int)a1) ) - return 0; - v44 = a1[5]; - if ( v44 < a1[6] ) - { - v45 = a1[4]; - a1[5] = v44 + 1; - v12 = (_DWORD *)(v45 + 20 * v44); - v12[1] = 0; - v12[2] = 0; - *v12 = 0; - v12[3] = "string literal"; - v12[4] = 14; - goto LABEL_18; - } - } - else - { - if ( v10 != 100 ) - { - v11 = (_DWORD *)d_name(); - v12 = v11; - if ( v11 && ((*v11 - 70) & 0xFFFFFFFD) != 0 && !d_discriminator((int)a1) ) - return 0; - goto LABEL_18; - } - a1[3] = v9 + 2; - v35 = v9[2]; - if ( v35 == 95 ) - { - v36 = 0; - a1[3] = v9 + 3; - } - else - { - if ( v35 == 110 ) - return 0; - v36 = d_number((int)a1) + 1; - if ( v36 < 0 ) - return 0; - v37 = (_BYTE *)a1[3]; - if ( *v37 != 95 ) - return 0; - a1[3] = v37 + 1; - } - v38 = (_DWORD *)d_name(); - if ( v38 ) - { - if ( ((*v38 - 70) & 0xFFFFFFFD) != 0 ) - { - v48 = v38; - v46 = d_discriminator((int)a1); - v38 = v48; - if ( !v46 ) - return 0; - } - } - v39 = a1[5]; - if ( v39 < a1[6] ) - { - v12 = (_DWORD *)(a1[4] + 20 * v39); - v12[1] = 0; - v12[2] = 0; - a1[5] = v39 + 1; - *v12 = 71; - v12[4] = v36; - v12[3] = v38; - goto LABEL_18; - } - } - v12 = 0; -LABEL_18: - if ( *v8 == 3 ) - { - v43 = (_DWORD *)v8[4]; - if ( *v43 == 41 ) - v43[3] = 0; - } - return d_make_comp(a1, 2, (int)v8, (int)v12); - } - if ( v3 != 78 ) - { - if ( v3 == 83 ) - { - if ( v2[1] != 116 ) - { - v4 = d_substitution((int)a1, 0); - v5 = (_BYTE *)a1[3]; - if ( *v5 != 73 ) - return v4; - goto LABEL_62; - } - a1[3] = v2 + 2; - v17 = d_unqualified_name(a1); - v18 = a1[5]; - if ( v18 >= a1[6] ) - { - v20 = 0; - } - else - { - v19 = a1[4]; - a1[5] = v18 + 1; - v20 = (_DWORD *)(v19 + 20 * v18); - v20[1] = 0; - v20[2] = 0; - *v20 = 0; - v20[3] = &off_558A2B; - v20[4] = 3; - } - comp = d_make_comp(a1, 1, (int)v20, (int)v17); - a1[11] += 3; - v4 = comp; - v5 = (_BYTE *)a1[3]; - if ( *v5 == 73 ) - { - if ( !v4 ) - return 0; - v22 = a1[8]; - if ( v22 >= a1[9] ) - return 0; - *(_DWORD *)(a1[7] + 4 * v22) = v4; - a1[8] = v22 + 1; - if ( (unsigned __int8)(*v5 - 73) > 1u ) - { - v23 = 0; - return d_make_comp(a1, 4, (int)v4, (int)v23); - } -LABEL_62: - a1[3] = v5 + 1; - v23 = d_template_args_1(a1); - return d_make_comp(a1, 4, (int)v4, (int)v23); - } - return v4; - } -LABEL_21: - v4 = d_unqualified_name(a1); - v13 = (_BYTE *)a1[3]; - if ( *v13 != 73 ) - return v4; - if ( !v4 ) - return 0; - v14 = a1[8]; - if ( v14 >= a1[9] ) - return 0; - *(_DWORD *)(a1[7] + 4 * v14) = v4; - v15 = 0; - a1[8] = v14 + 1; - if ( (unsigned __int8)(*v13 - 73) <= 1u ) - { - a1[3] = v13 + 1; - v15 = d_template_args_1(a1); - } - return d_make_comp(a1, 4, (int)v4, (int)v15); - } - a1[3] = v2 + 1; - v24 = d_cv_qualifiers(a1, &v49, 1); - if ( !v24 ) - return 0; - v47 = d_ref_qualifier(a1, 0); - if ( !*(_BYTE *)a1[3] ) - { -LABEL_51: - *v24 = 0; - return 0; - } - v25 = (unsigned __int8 *)a1[3]; - v26 = a1; - v27 = 0; - v28 = *v25; - v29 = v26; - while ( 1 ) - { - if ( (_BYTE)v28 == 68 ) - { - if ( (v25[1] & 0xDF) == 84 ) - v31 = (int *)d_type(); - else - v31 = d_unqualified_name(v29); -LABEL_55: - v32 = 1; - if ( v27 ) - goto LABEL_44; - goto LABEL_56; - } - v30 = v28 - 48; - if ( (unsigned __int8)(v28 - 48) <= 0x1Cu ) - goto LABEL_58; - if ( (unsigned __int8)(v28 - 97) <= 0x19u ) - break; - if ( (_BYTE)v28 == 85 ) - { - v31 = d_unqualified_name(v29); - if ( v27 ) - { -LABEL_43: - v32 = 1; -LABEL_44: - v27 = d_make_comp(v29, v32, (int)v27, (int)v31); - goto LABEL_45; - } -LABEL_56: - v25 = (unsigned __int8 *)v29[3]; - v27 = v31; - goto LABEL_46; - } - if ( (_BYTE)v28 != 83 ) - goto LABEL_75; - v31 = d_substitution((int)v29, 1); - if ( v27 ) - goto LABEL_43; - v25 = (unsigned __int8 *)v29[3]; - v27 = v31; -LABEL_50: - v28 = *v25; - if ( !(_BYTE)v28 ) - goto LABEL_51; - } - do - { - v31 = d_unqualified_name(v29); - if ( v27 ) - goto LABEL_43; - v27 = v31; -LABEL_45: - v25 = (unsigned __int8 *)v29[3]; - if ( (_BYTE)v28 == 83 ) - goto LABEL_50; -LABEL_46: - LOBYTE(v28) = *v25; - if ( *v25 != 69 ) - { - if ( !v27 ) - goto LABEL_51; - v33 = v29[8]; - if ( v33 >= v29[9] ) - goto LABEL_51; - *(_DWORD *)(v29[7] + 4 * v33) = v27; - v29[8] = v33 + 1; - goto LABEL_50; - } - v30 = 21; -LABEL_58: - v34 = 268960767; - } - while ( _bittest(&v34, v30) ); - if ( (_BYTE)v28 == 73 ) - { - if ( !v27 ) - goto LABEL_51; - v29[3] = v25 + 1; - v31 = d_template_args_1(v29); - v32 = 4; - goto LABEL_44; - } -LABEL_75: - if ( (_BYTE)v28 == 84 ) - { - v31 = d_template_param(v29); - goto LABEL_55; - } - if ( (_BYTE)v28 != 69 ) - { - if ( !v27 || (_BYTE)v28 != 77 ) - goto LABEL_51; - v29[3] = ++v25; - goto LABEL_50; - } - *v24 = v27; - v40 = v29; - if ( v27 ) - { - if ( v47 ) - { - v41 = v49; - v49 = v47; - v47[3] = (int)v41; - } - v42 = (_BYTE *)v29[3]; - if ( *v42 == 69 ) - { - v4 = v49; - v40[3] = v42 + 1; - return v4; - } - } - return 0; -} -// 457A70: using guessed type int d_type(void); -// 558A2B: using guessed type void *off_558A2B; - -//----- (00459230) -------------------------------------------------------- -unsigned int *__usercall d_encoding_part_0@(int a1@, int a2@) -{ - int v4; // eax - unsigned int *v5; // ebx - unsigned int v6; // eax - int *i; // edx - int v8; // eax - char v10; // al - unsigned int *v11; // edx - unsigned int v12; // eax - int v13; // edx - _DWORD *v14; // eax - unsigned int *v15; // edx - unsigned int v16; // eax - - v4 = d_name(); - if ( !v4 ) - return 0; - v5 = (unsigned int *)v4; - if ( !a2 || (*(_BYTE *)(a1 + 8) & 1) != 0 ) - { - v10 = **(_BYTE **)(a1 + 12); - if ( v10 && v10 != 69 ) - { - v11 = v5; - while ( 1 ) - { - v12 = *v11; - if ( *v11 == 4 ) - break; - if ( *v11 > 4 ) - { - if ( v12 != 77 ) - { - if ( v12 <= 0x4D ) - { - if ( v12 - 28 > 4 ) - { -LABEL_21: - v13 = 0; - goto LABEL_22; - } - } - else if ( v12 - 79 > 1 ) - { - goto LABEL_21; - } - } - v11 = (unsigned int *)v11[3]; - } - else - { - if ( v12 != 2 ) - goto LABEL_21; - v11 = (unsigned int *)v11[4]; - } - if ( !v11 ) - goto LABEL_21; - } - v15 = (unsigned int *)v11[3]; - if ( v15 ) - { - while ( 1 ) - { - v16 = *v15; - if ( *v15 > 8 ) - break; - if ( v16 > 6 ) - goto LABEL_21; - if ( v16 - 1 <= 1 ) - { - v15 = (unsigned int *)v15[4]; - if ( v15 ) - continue; - } - goto LABEL_42; - } - v13 = v16 != 53; - } - else - { -LABEL_42: - v13 = 1; - } -LABEL_22: - v14 = d_bare_function_type((_DWORD *)a1, v13); - if ( !v14 ) - return 0; - if ( !a2 && *v5 == 2 && *v14 == 41 ) - v14[3] = 0; - return d_make_comp((_DWORD *)a1, 3, (int)v5, (int)v14); - } - return v5; - } - while ( 1 ) - { - v6 = *v5; - if ( *v5 == 77 ) - goto LABEL_27; - if ( *v5 <= 0x4D ) - break; - if ( v6 - 79 > 1 ) - return v5; -LABEL_27: - v5 = (unsigned int *)v5[3]; - } - if ( v6 - 28 <= 4 ) - goto LABEL_27; - if ( v6 != 2 ) - return v5; - for ( i = (int *)v5[4]; i; v5[4] = (unsigned int)i ) - { - v8 = *i; - if ( *i != 77 ) - { - if ( (unsigned int)*i > 0x4D ) - { - if ( (unsigned int)(v8 - 79) > 1 ) - return v5; - } - else if ( (unsigned int)(v8 - 28) > 4 ) - { - return v5; - } - } - i = (int *)i[3]; - } - return 0; -} -// 458C60: using guessed type int d_name(void); - -//----- (00459400) -------------------------------------------------------- -_DWORD *__usercall d_special_name@(_DWORD *a1@) -{ - int v2; // ecx - _BYTE *v3; // eax - char v4; // dl - int v5; // eax - _BYTE *v6; // edx - _BYTE *v7; // esi - int v8; // edi - _DWORD *comp; // ebp - char v10; // al - int v11; // edx - _DWORD *name; // eax - _DWORD *result; // eax - char v14; // al - int v15; // edi - int v16; // eax - _DWORD *v17; // esi - char v18; // al - unsigned int *v19; // ecx - int v20; // eax - bool v21; // zf - char v22; // al - unsigned int *v23; // ecx - unsigned int *v24; // ecx - int v25; // eax - int v26; // eax - int v27; // esi - _BYTE *v28; // eax - int v29; // eax - int v30; // eax - unsigned int *v31; // eax - char v32; // al - unsigned int *v33; // ecx - char v34; // al - unsigned int *v35; // ecx - char v36; // al - unsigned int *v37; // ecx - int v38; // eax - int v39; // eax - int v40; // eax - int v41; // eax - int v42; // eax - int v43; // ecx - char v44; // al - int v45; // [esp+1Ch] [ebp-20h] - int v46; // [esp+1Ch] [ebp-20h] - - v2 = a1[11]; - a1[11] = v2 + 20; - v3 = (_BYTE *)a1[3]; - if ( *v3 == 84 ) - { - a1[3] = v3 + 1; - if ( v3[1] ) - { - a1[3] = v3 + 2; - v14 = v3[1] - 65; - switch ( v14 ) - { - case 0: - v31 = d_template_arg(a1); - result = d_make_comp(a1, 48, (int)v31, 0); - break; - case 2: - v27 = d_type(); - if ( d_number((int)a1) < 0 ) - return 0; - v28 = (_BYTE *)a1[3]; - if ( *v28 != 95 ) - return 0; - a1[3] = v28 + 1; - v29 = d_type(); - a1[11] += 5; - result = d_make_comp(a1, 11, v29, v27); - break; - case 5: - v26 = d_type(); - result = d_make_comp(a1, 14, v26, 0); - break; - case 7: - v30 = d_name(); - result = d_make_comp(a1, 20, v30, 0); - break; - case 8: - v25 = d_type(); - result = d_make_comp(a1, 12, v25, 0); - break; - case 9: - v42 = d_type(); - result = d_make_comp(a1, 18, v42, 0); - break; - case 18: - v41 = d_type(); - result = d_make_comp(a1, 13, v41, 0); - break; - case 19: - a1[11] = v2 + 10; - v40 = d_type(); - result = d_make_comp(a1, 10, v40, 0); - break; - case 21: - a1[11] = v2 + 15; - v39 = d_type(); - result = d_make_comp(a1, 9, v39, 0); - break; - case 22: - v38 = d_name(); - result = d_make_comp(a1, 21, v38, 0); - break; - case 34: - if ( !d_call_offset((int)a1, 0) || !d_call_offset((int)a1, 0) ) - return 0; - v36 = *(_BYTE *)a1[3]; - if ( v36 == 71 || v36 == 84 ) - v37 = (unsigned int *)d_special_name(); - else - v37 = d_encoding_part_0((int)a1, 0); - result = d_make_comp(a1, 17, (int)v37, 0); - break; - case 39: - if ( !d_call_offset((int)a1, 104) ) - return 0; - v34 = *(_BYTE *)a1[3]; - if ( v34 == 71 || v34 == 84 ) - v35 = (unsigned int *)d_special_name(); - else - v35 = d_encoding_part_0((int)a1, 0); - result = d_make_comp(a1, 15, (int)v35, 0); - break; - case 53: - if ( !d_call_offset((int)a1, 118) ) - return 0; - v32 = *(_BYTE *)a1[3]; - if ( v32 == 71 || v32 == 84 ) - v33 = (unsigned int *)d_special_name(); - else - v33 = d_encoding_part_0((int)a1, 0); - result = d_make_comp(a1, 16, (int)v33, 0); - break; - default: - return 0; - } - return result; - } - return 0; - } - if ( *v3 != 71 ) - return 0; - a1[3] = v3 + 1; - if ( !v3[1] ) - return 0; - a1[3] = v3 + 2; - v4 = v3[1]; - if ( v4 == 84 ) - { - if ( !v3[2] ) - goto LABEL_86; - a1[3] = v3 + 3; - v21 = v3[2] == 110; - v22 = v3[3]; - if ( v21 ) - { - if ( v22 == 71 || v22 == 84 ) - v24 = (unsigned int *)d_special_name(); - else - v24 = d_encoding_part_0((int)a1, 0); - return d_make_comp(a1, 74, (int)v24, 0); - } - if ( v22 == 71 || v22 == 84 ) - v23 = (unsigned int *)d_special_name(); - else -LABEL_86: - v23 = d_encoding_part_0((int)a1, 0); - return d_make_comp(a1, 73, (int)v23, 0); - } - if ( v4 <= 84 ) - { - if ( v4 == 65 ) - { - v18 = v3[2]; - if ( v18 == 71 || v18 == 84 ) - v19 = (unsigned int *)d_special_name(); - else - v19 = d_encoding_part_0((int)a1, 0); - return d_make_comp(a1, 23, (int)v19, 0); - } - if ( v4 == 82 ) - { - v15 = d_name(); - v16 = a1[5]; - if ( v16 >= a1[6] ) - { - v17 = 0; - } - else - { - v17 = (_DWORD *)(a1[4] + 20 * v16); - v17[1] = 0; - v17[2] = 0; - a1[5] = v16 + 1; - *v17 = 66; - v17[3] = d_number((int)a1); - } - return d_make_comp(a1, 22, v15, (int)v17); - } - return 0; - } - if ( v4 != 86 ) - { - if ( v4 == 114 ) - { - v5 = d_number((int)a1); - if ( v5 > 1 ) - { - v6 = (_BYTE *)a1[3]; - if ( *v6 ) - { - v7 = v6 + 1; - a1[3] = v6 + 1; - if ( *v6 == 95 ) - { - v8 = v5 - 1; - comp = 0; - while ( *v7 ) - { - if ( *v7 == 36 ) - { - v10 = v7[1]; - switch ( v10 ) - { - case 'S': - v45 = 47; - break; - case '_': - v45 = 46; - break; - case '$': - v45 = 36; - break; - default: - return 0; - } - v11 = a1[5]; - v7 = (_BYTE *)(a1[3] + 2); - if ( v11 >= a1[6] ) - { - a1[3] = v7; - return 0; - } - v8 -= 2; - name = (_DWORD *)(a1[4] + 20 * v11); - name[1] = 0; - name[2] = 0; - a1[5] = v11 + 1; - *name = 65; - name[3] = v45; - a1[3] = v7; - } - else - { - v43 = 0; - do - { - if ( ++v43 >= v8 ) - break; - v44 = v7[v43]; - if ( !v44 ) - break; - } - while ( v44 != 36 ); - v46 = v43; - name = d_make_name(a1, (int)v7, v43); - v7 = (_BYTE *)(v46 + a1[3]); - v8 -= v46; - a1[3] = v7; - if ( !name ) - return 0; - } - if ( comp ) - { - comp = d_make_comp(a1, 64, (int)comp, (int)name); - if ( !comp ) - return 0; - } - else - { - comp = name; - } - if ( v8 <= 0 ) - return d_make_comp(a1, 63, (int)comp, 0); - } - } - } - } - } - return 0; - } - v20 = d_name(); - return d_make_comp(a1, 19, v20, 0); -} -// 457A70: using guessed type int d_type(void); -// 458C60: using guessed type int d_name(void); - -//----- (00459A30) -------------------------------------------------------- -unsigned int *__usercall d_expr_primary@(_DWORD *a1@) -{ - _BYTE *v1; // edx - char *v3; // eax - char v4; // cl - _DWORD *v5; // eax - int v6; // ebp - char *v7; // edx - char v8; // cl - int v9; // esi - char *v10; // eax - char *v11; // edi - char v13; // al - unsigned int *comp; // ebp - char v15; // dl - int v16; // eax - int v17; // ecx - _DWORD *name; // eax - - v1 = (_BYTE *)a1[3]; - if ( *v1 != 76 ) - return 0; - v3 = v1 + 1; - a1[3] = v1 + 1; - v4 = v1[1]; - if ( v4 == 95 ) - { - v3 = v1 + 2; - a1[3] = v1 + 2; - v15 = v1[2]; - if ( v15 != 90 ) - { - comp = 0; - goto LABEL_17; - } - goto LABEL_14; - } - if ( v4 == 90 ) - { -LABEL_14: - a1[3] = v3 + 1; - v13 = v3[1]; - if ( v13 == 71 || v13 == 84 ) - { - comp = (unsigned int *)d_special_name(); - v3 = (char *)a1[3]; - v15 = *v3; - } - else - { - comp = d_encoding_part_0((int)a1, 0); - v3 = (char *)a1[3]; - v15 = *v3; - } - goto LABEL_17; - } - v5 = (_DWORD *)d_type(); - v6 = (int)v5; - if ( !v5 ) - return 0; - v7 = (char *)a1[3]; - if ( *v5 == 39 ) - { - v16 = v5[3]; - if ( *(_DWORD *)(v16 + 16) ) - a1[11] -= *(_DWORD *)(v16 + 4); - v8 = *v7; - if ( !strcmp(*(const char **)v16, "decltype(nullptr)") ) - { - if ( v8 == 69 ) - { - a1[3] = v7 + 1; - return (unsigned int *)v6; - } - v9 = 61; - if ( v8 != 110 ) - goto LABEL_9; - goto LABEL_24; - } - } - else - { - v8 = *v7; - } - v9 = 61; - if ( v8 == 110 ) - { -LABEL_24: - v9 = 62; - a1[3] = v7 + 1; - v8 = *++v7; - } - if ( v8 != 69 ) - { -LABEL_9: - v10 = v7 + 1; - while ( v8 ) - { - a1[3] = v10; - v11 = v10; - v8 = *v10++; - if ( v8 == 69 ) - { - v17 = v11 - v7; - goto LABEL_28; - } - } - return 0; - } - v17 = 0; -LABEL_28: - name = d_make_name(a1, (int)v7, v17); - comp = d_make_comp(a1, v9, v6, (int)name); - v3 = (char *)a1[3]; - v15 = *v3; -LABEL_17: - if ( v15 != 69 ) - return 0; - a1[3] = v3 + 1; - return comp; -} -// 457A70: using guessed type int d_type(void); -// 459400: using guessed type int d_special_name(void); - -//----- (00459BF0) -------------------------------------------------------- -unsigned int *__usercall d_expression_1@(_DWORD *a1@) -{ - char *v2; // edx - char v3; // al - _DWORD *v4; // esi - _BYTE *v5; // eax - int *v7; // eax - int v8; // esi - int v9; // eax - int v10; // eax - char v11; // al - int v12; // eax - char v13; // al - int v14; // eax - _BYTE *v15; // edx - int v16; // edx - int v17; // eax - _BYTE *v18; // edx - int v19; // esi - char **v20; // edx - char *v21; // edi - int v22; // eax - int v23; // ebp - _DWORD *v24; // eax - _DWORD *v25; // edi - int v26; // ebp - _DWORD *v27; // eax - _DWORD *v28; // eax - _DWORD *v29; // eax - _DWORD *v30; // eax - int v31; // esi - _DWORD *v32; // edi - _BYTE *v33; // eax - _DWORD *v35; // eax - _DWORD *v36; // eax - _DWORD *v37; // eax - int v38; // eax - char v39; // dl - _BYTE *v40; // edx - char *v41; // eax - _DWORD *v42; // ebp - int v43; // eax - _DWORD *v44; // edi - _DWORD *v45; // eax - unsigned __int8 v46; // al - char *v47; // eax - char v48; // dl - _BYTE *v49; // eax - _DWORD *v50; // eax - _BYTE *v51; // eax - char v52; // al - _DWORD *comp; // [esp+0h] [ebp-2Ch] - - v2 = (char *)a1[3]; - v3 = *v2; - if ( *v2 == 76 ) - return d_expr_primary(a1); - if ( v3 != 84 ) - { - if ( v3 == 115 ) - { - v11 = v2[1]; - if ( v11 == 114 ) - { - a1[3] = v2 + 2; - v31 = d_type(); - v32 = d_unqualified_name(a1); - v33 = (_BYTE *)a1[3]; - if ( *v33 != 73 ) - return d_make_comp(a1, 1, v31, (int)v32); - a1[3] = v33 + 1; - v37 = d_template_args_1(a1); - comp = d_make_comp(a1, 4, (int)v32, (int)v37); - return d_make_comp(a1, 1, v31, (int)comp); - } - if ( v11 == 112 ) - { - a1[3] = v2 + 2; - v12 = d_expression_1(); - return d_make_comp(a1, 75, v12, 0); - } - } - else if ( v3 == 102 ) - { - if ( v2[1] == 112 ) - { - a1[3] = v2 + 2; - v13 = v2[2]; - switch ( v13 ) - { - case 'T': - a1[3] = v2 + 3; - v16 = 0; - break; - case '_': - a1[3] = v2 + 3; - v16 = 1; - break; - case 'n': - return 0; - default: - v14 = d_number((int)a1); - if ( v14 + 1 < 0 ) - return 0; - v15 = (_BYTE *)a1[3]; - if ( *v15 != 95 ) - return 0; - a1[3] = v15 + 1; - if ( v14 == 2147483646 ) - return 0; - v16 = v14 + 2; - break; - } - v17 = a1[5]; - if ( v17 < a1[6] ) - { - v4 = (_DWORD *)(a1[4] + 20 * v17); - v4[1] = 0; - v4[2] = 0; - a1[5] = v17 + 1; - *v4 = 6; - v4[3] = v16; - return v4; - } - return 0; - } - } - else - { - if ( (unsigned __int8)(v3 - 48) <= 9u ) - goto LABEL_6; - if ( v3 == 111 ) - { - if ( v2[1] == 110 ) - { - a1[3] = v2 + 2; -LABEL_6: - v4 = d_unqualified_name(a1); - if ( v4 ) - { - v5 = (_BYTE *)a1[3]; - if ( *v5 == 73 ) - { - a1[3] = v5 + 1; - v30 = d_template_args_1(a1); - return d_make_comp(a1, 4, (int)v4, (int)v30); - } - return v4; - } - return 0; - } - } - else if ( (v3 == 105 || v3 == 116) && v2[1] == 108 ) - { - v18 = v2 + 2; - v19 = 0; - a1[3] = v18; - if ( v3 == 116 ) - { - v38 = d_type(); - v18 = (_BYTE *)a1[3]; - v19 = v38; - } - if ( *v18 && v18[1] ) - { - v36 = d_exprlist(a1, 69); - return d_make_comp(a1, 49, v19, (int)v36); - } - return 0; - } - } - v7 = d_operator_name(a1); - v8 = (int)v7; - if ( !v7 ) - return 0; - v9 = *v7; - if ( v9 != 50 ) - { - if ( v9 == 52 ) - { - v51 = (_BYTE *)a1[3]; - if ( *v51 == 95 ) - { - a1[3] = v51 + 1; - v35 = d_exprlist(a1, 69); - return d_make_comp(a1, 55, v8, (int)v35); - } - goto LABEL_65; - } - if ( v9 == 51 ) - { - v10 = *(_DWORD *)(v8 + 12); - if ( v10 <= 1 ) - { - if ( !v10 ) - return d_make_comp(a1, 54, v8, 0); - if ( v10 == 1 ) - { -LABEL_65: - v35 = (_DWORD *)d_expression_1(); - return d_make_comp(a1, 55, v8, (int)v35); - } - } - } - return 0; - } - v20 = *(char ***)(v8 + 12); - v21 = *v20; - a1[11] += v20[2] - 2; - v22 = (unsigned __int8)*v21; - if ( v22 == 115 && v21[1] == 116 && !v21[2] ) - { - v35 = (_DWORD *)d_type(); - return d_make_comp(a1, 55, v8, (int)v35); - } - v23 = (int)v20[3]; - if ( v23 == 1 ) - { - v39 = *v21; - if ( (*v21 == 112 || v39 == 109) && v39 == v21[1] ) - { - v40 = (_BYTE *)a1[3]; - if ( *v40 == 95 ) - { - v23 = 0; - a1[3] = v40 + 1; - v22 = (unsigned __int8)*v21; - } - } - else - { - v23 = 0; - } - if ( v22 == 115 && v21[1] == 80 && !v21[2] ) - v35 = d_template_args_1(a1); - else - v35 = (_DWORD *)d_expression_1(); - if ( v23 ) - v35 = d_make_comp(a1, 57, (int)v35, (int)v35); - return d_make_comp(a1, 55, v8, (int)v35); - } - if ( v23 <= 1 ) - { - if ( !v23 ) - return d_make_comp(a1, 54, v8, 0); - return 0; - } - if ( v23 == 2 ) - { - v41 = **(char ***)(v8 + 12); - if ( v41[1] == 99 && ((v52 = *v41, (unsigned __int8)(v52 - 99) <= 1u) || (unsigned __int8)(v52 - 114) <= 1u) ) - { - v42 = (_DWORD *)d_type(); - } - else if ( *v21 == 102 ) - { - v42 = d_operator_name(a1); - } - else - { - v42 = (_DWORD *)d_expression_1(); - } - v43 = (unsigned __int8)*v21; - if ( v43 == 99 && v21[1] == 108 && !v21[2] ) - { - v44 = d_exprlist(a1, 69); - } - else if ( v43 == 100 && v21[1] == 116 && !v21[2] || v43 == 112 && v21[1] == 116 && !v21[2] ) - { - v44 = d_unqualified_name(a1); - v49 = (_BYTE *)a1[3]; - if ( *v49 == 73 ) - { - a1[3] = v49 + 1; - v50 = d_template_args_1(a1); - v44 = d_make_comp(a1, 4, (int)v44, (int)v50); - } - } - else - { - v44 = (_DWORD *)d_expression_1(); - } - v45 = d_make_comp(a1, 57, (int)v42, (int)v44); - return d_make_comp(a1, 56, v8, (int)v45); - } - if ( v23 != 3 ) - return 0; - if ( v22 == 113 && v21[1] == 117 && !v21[2] ) - { - v24 = (_DWORD *)d_expression_1(); - } - else - { - if ( *v21 != 102 ) - { - if ( *v21 != 110 ) - return 0; - v46 = v21[1]; - if ( v46 != 119 && v46 != 97 ) - return 0; - v25 = d_exprlist(a1, 95); - v26 = d_type(); - v47 = (char *)a1[3]; - v48 = *v47; - if ( *v47 == 69 ) - { - a1[3] = v47 + 1; - v27 = 0; - } - else if ( v48 == 112 ) - { - if ( v47[1] != 105 ) - return 0; - a1[3] = v47 + 2; - v27 = d_exprlist(a1, 69); - } - else - { - if ( v48 != 105 || v47[1] != 108 ) - return 0; - v27 = (_DWORD *)d_expression_1(); - } - goto LABEL_53; - } - v24 = d_operator_name(a1); - } - v25 = v24; - v26 = d_expression_1(); - v27 = (_DWORD *)d_expression_1(); - if ( !v27 ) - return 0; -LABEL_53: - v28 = d_make_comp(a1, 60, v26, (int)v27); - v29 = d_make_comp(a1, 59, (int)v25, (int)v28); - return d_make_comp(a1, 58, v8, (int)v29); - } - return d_template_param(a1); -} -// 457A70: using guessed type int d_type(void); - -//----- (0045A2A0) -------------------------------------------------------- -_DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
) -{ - _BYTE *v4; // eax - int *v5; // esi - _DWORD *comp; // eax - _BYTE *v7; // eax - int v8; // ebp - int v9; // eax - int v11; // [esp+1Ch] [ebp-20h] BYREF - - v4 = (_BYTE *)a1[3]; - v11 = 0; - v5 = &v11; - if ( *v4 == a2 ) - { - a1[3] = v4 + 1; - return d_make_comp(a1, 46, 0, 0); - } - else - { - do - { - v8 = a1[12]; - a1[12] = 1; - v9 = d_expression_1(); - a1[12] = v8; - if ( !v9 ) - return 0; - comp = d_make_comp(a1, 46, v9, 0); - *v5 = (int)comp; - if ( !comp ) - return 0; - v5 = comp + 4; - v7 = (_BYTE *)a1[3]; - } - while ( *v7 != a2 ); - a1[3] = v7 + 1; - return (_DWORD *)v11; - } -} -// 459BF0: using guessed type int d_expression_1(void); - -//----- (0045A350) -------------------------------------------------------- -int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@) -{ - int **v3; // esi - char *v5; // ebp - char i; // di - char v7; // al - int v8; // edi - unsigned int *v9; // eax - _BYTE *v10; // edx - int v11; // edx - _DWORD *comp; // eax - int *v14; // eax - int v15; // edx - _BYTE *v16; // edx - int **v17; // eax - int v18; // [esp+1Ch] [ebp-30h] - int v19; // [esp+20h] [ebp-2Ch] - int v20; // [esp+24h] [ebp-28h] - char v21; // [esp+28h] [ebp-24h] - - v3 = a2; - v21 = a3; - v20 = a3 == 0 ? 27 : 30; - v19 = a3 == 0 ? 26 : 29; - v18 = a3 == 0 ? 25 : 28; - v5 = (char *)a1[3]; - for ( i = *v5; next_is_type_qual_isra_0(v5); i = *v5 ) - { - a1[3] = v5 + 1; - switch ( i ) - { - case 'r': - a1[11] += 9; - v11 = v18; - v9 = 0; - break; - case 'V': - a1[11] += 9; - v11 = v19; - v9 = 0; - break; - case 'K': - a1[11] += 6; - v11 = v20; - v9 = 0; - break; - default: - if ( !v5[1] ) - return 0; - a1[3] = v5 + 2; - v7 = v5[1]; - if ( v7 == 120 ) - { - a1[11] += 17; - v9 = 0; - v11 = 77; - } - else if ( (v7 & 0xDF) == 79 ) - { - a1[11] += 9; - if ( v7 == 79 ) - { - v8 = a1[12]; - a1[12] = 1; - v9 = d_expression_1(a1); - a1[12] = v8; - if ( !v9 ) - return 0; - v10 = (_BYTE *)a1[3]; - if ( *v10 != 69 ) - return 0; - a1[3] = v10 + 1; - v11 = 79; - } - else - { - v9 = 0; - v11 = 79; - } - } - else - { - if ( v7 != 119 ) - return 0; - a1[11] += 6; - v9 = (unsigned int *)d_parmlist(a1); - if ( !v9 ) - return 0; - v16 = (_BYTE *)a1[3]; - if ( *v16 != 69 ) - return 0; - a1[3] = v16 + 1; - v11 = 80; - } - break; - } - comp = d_make_comp(a1, v11, 0, (int)v9); - *v3 = comp; - if ( !comp ) - return 0; - v5 = (char *)a1[3]; - v3 = (int **)(comp + 3); - } - if ( (v21 & 1) == 0 && i == 70 && v3 != a2 ) - { - v14 = *a2; - v15 = **a2; - if ( v15 != 26 ) - goto LABEL_34; -LABEL_21: - *v14 = 29; - while ( 1 ) - { - v17 = (int **)(v14 + 3); - if ( v3 == v17 ) - break; - v14 = *v17; - v15 = *v14; - if ( *v14 == 26 ) - goto LABEL_21; -LABEL_34: - if ( v15 == 27 ) - { - *v14 = 30; - } - else if ( v15 == 25 ) - { - *v14 = 28; - } - } - } - return v3; -} - -//----- (0045A570) -------------------------------------------------------- -unsigned int *__usercall d_template_arg@(_DWORD *a1@) -{ - char *v2; // edx - char v3; // al - unsigned int *result; // eax - int v5; // esi - _BYTE *v6; // edx - - v2 = (char *)a1[3]; - v3 = *v2; - if ( *v2 == 76 ) - return d_expr_primary(a1); - if ( v3 <= 76 ) - { - if ( (unsigned __int8)(v3 - 73) <= 1u ) - { - a1[3] = v2 + 1; - return d_template_args_1(a1); - } - return (unsigned int *)d_type(); - } - if ( v3 != 88 ) - return (unsigned int *)d_type(); - v5 = a1[12]; - a1[12] = 1; - a1[3] = v2 + 1; - result = d_expression_1(a1); - v6 = (_BYTE *)a1[3]; - a1[12] = v5; - if ( *v6 != 69 ) - return 0; - a1[3] = v6 + 1; - return result; -} -// 457A70: using guessed type int d_type(void); - -//----- (0045A600) -------------------------------------------------------- -_DWORD *__usercall d_template_args_1@(_DWORD *a1@) -{ - int v2; // edi - _BYTE *v3; // eax - int *v4; // esi - _DWORD *comp; // eax - _BYTE *v6; // eax - int v7; // ecx - int v9; // [esp+1Ch] [ebp-10h] BYREF - - v2 = a1[10]; - v3 = (_BYTE *)a1[3]; - if ( *v3 == 69 ) - { - a1[3] = v3 + 1; - return d_make_comp(a1, 47, 0, 0); - } - else - { - v9 = 0; - v4 = &v9; - do - { - v7 = d_template_arg(); - if ( !v7 ) - return 0; - comp = d_make_comp(a1, 47, v7, 0); - *v4 = (int)comp; - if ( !comp ) - return 0; - v4 = comp + 4; - v6 = (_BYTE *)a1[3]; - } - while ( *v6 != 69 ); - a1[10] = v2; - a1[3] = v6 + 1; - return (_DWORD *)v9; - } -} -// 45A570: using guessed type int d_template_arg(void); - -//----- (0045A6B0) -------------------------------------------------------- -unsigned int __usercall d_print_comp_inner@(unsigned int result@, int a2@) -{ - unsigned int v2; // ebx - int v3; // edi - unsigned int v4; // ebp - _DWORD *v5; // esi - unsigned int *v6; // edi - FILE *v7; // edx - int *v8; // ecx - int v9; // eax - int v10; // edx - char *v11; // eax - int v12; // eax - int v13; // ecx - char *v14; // eax - int v15; // edx - char *v16; // eax - int v17; // ecx - char *v18; // edx - _DWORD *v19; // ecx - unsigned int v20; // edi - int v21; // eax - int v22; // edx - int v23; // eax - int v24; // edx - char v25; // dl - int v26; // ecx - unsigned int v27; // edi - const char *v28; // ebp - char i14; // al - unsigned int v30; // edx - const char *v31; // edi - int v32; // eax - char i; // dl - int v34; // ecx - int v35; // eax - int v36; // eax - const char *v37; // edi - char i15; // dl - int v39; // ecx - int v40; // eax - int v41; // ebp - char **v42; // edx - FILE *v43; // ebp - int v44; // eax - const char *v45; // edi - char jj; // dl - int v47; // ecx - int v48; // eax - int v49; // eax - const char *v50; // edi - char ii; // dl - int v52; // ecx - int v53; // eax - int v54; // eax - const char *v55; // edi - char i6; // dl - int v57; // ecx - int v58; // eax - int v59; // eax - const char *v60; // edi - char i5; // dl - int v62; // ecx - int v63; // eax - int v64; // eax - const char *v65; // edi - char i4; // dl - int v67; // ecx - int v68; // eax - const char *v69; // edi - int v70; // eax - char i29; // dl - int v72; // ecx - int v73; // eax - _DWORD *v74; // eax - int v75; // ecx - const char *v76; // esi - char i28; // dl - unsigned int v78; // ecx - int v79; // eax - int v80; // eax - const char *v81; // edi - char i27; // dl - int v83; // ecx - int v84; // eax - int v85; // eax - const char *v86; // edi - char i26; // dl - int v88; // ecx - int v89; // eax - int v90; // eax - const char *v91; // edi - char i25; // dl - int v93; // ecx - int v94; // eax - int v95; // eax - const char *v96; // edi - char i2; // dl - int v98; // ecx - int v99; // eax - int v100; // eax - const char *v101; // edi - char i1; // dl - int v103; // ecx - int v104; // eax - int v105; // eax - const char *v106; // edi - char nn; // dl - int v108; // ecx - int v109; // eax - int v110; // eax - const char *v111; // edi - char mm; // dl - int v113; // ecx - int v114; // eax - int v115; // eax - const char *v116; // edi - char i3; // dl - int v118; // ecx - int v119; // eax - int v120; // edx - int v121; // ecx - const char *v122; // edi - int v123; // eax - char i30; // dl - int v125; // ecx - int v126; // eax - char *v127; // ebp - unsigned int v128; // edi - char *v129; // ecx - char *v130; // ebp - int v131; // eax - unsigned int v132; // edx - _DWORD *v133; // ecx - int v134; // edi - char *v135; // esi - char *v136; // edi - unsigned int v137; // ecx - char v138; // dl - int v139; // eax - int v140; // ecx - char *v141; // eax - _DWORD *v142; // eax - unsigned __int8 *v143; // edx - int v144; // eax - int v145; // ecx - int v146; // ecx - unsigned __int8 *v147; // eax - int v148; // edx - int v149; // ebp - const char *v150; // esi - char k; // dl - unsigned int v152; // ecx - int v153; // eax - int v154; // eax - const char *v155; // edi - char i11; // dl - int v157; // ecx - int v158; // eax - int v159; // eax - const char *v160; // edi - char i9; // dl - int v162; // ecx - int v163; // eax - int v164; // eax - const char *v165; // edi - char i8; // dl - int v167; // ecx - int v168; // eax - int v169; // eax - const char *v170; // edi - char i7; // dl - int v172; // ecx - int v173; // eax - int v174; // ecx - char *v175; // eax - int v176; // eax - char *base; // ecx - int v178; // eax - const char *v179; // edi - char j; // dl - int v181; // ecx - int v182; // eax - int v183; // edi - int v184; // ebp - int v185; // eax - int v186; // edx - int v187; // edx - int v188; // ecx - int v189; // edx - const char *v190; // esi - char i13; // dl - unsigned int v192; // ecx - int v193; // eax - int v194; // eax - const char *v195; // edi - char n; // dl - int v197; // ecx - int v198; // eax - int v199; // eax - const char *v200; // edi - char i20; // dl - int v202; // ecx - int v203; // eax - int v204; // eax - const char *v205; // edi - char i24; // dl - int v207; // ecx - int v208; // eax - int v209; // eax - int v210; // edi - _DWORD *v211; // ecx - int v212; // eax - _DWORD *v213; // ebp - int *v214; // esi - int v215; // eax - const char *v216; // edi - char i21; // dl - int v218; // ecx - int v219; // eax - FILE *v220; // esi - unsigned int v221; // edi - FILE *v222; // edi - unsigned int v223; // ecx - char v224; // dl - int v225; // eax - int v226; // eax - const char *v227; // edi - char i22; // dl - int v229; // ecx - int v230; // eax - int v231; // eax - const char *v232; // edi - char i17; // dl - int v234; // ecx - int v235; // eax - int v236; // eax - const char *v237; // edi - char i16; // dl - int v239; // ecx - int v240; // eax - int v241; // edi - const char *v242; // esi - char v243; // dl - int v244; // ebp - unsigned int v245; // ecx - int v246; // eax - int v247; // ecx - int v248; // esi - int v249; // eax - int v250; // edx - int v251; // edx - _DWORD *v252; // edi - int v253; // eax - int v254; // eax - _DWORD *v255; // ecx - int v256; // eax - const char *v257; // edi - char i23; // dl - int v259; // ecx - int v260; // eax - int v261; // edi - char *v262; // esi - char *v263; // edi - unsigned int v264; // ecx - char v265; // dl - int v266; // eax - int v267; // edi - char *v268; // esi - char *v269; // edi - unsigned int v270; // ecx - char v271; // dl - int v272; // eax - int v273; // edx - bool v274; // cf - const char *v275; // edi - int v276; // eax - char kk; // dl - int v278; // ecx - int v279; // eax - _DWORD *v280; // edi - FILE *v281; // esi - size_t v282; // ebp - int v283; // eax - FILE *v284; // ebp - int v285; // ecx - char ptr; // dl - int v287; // eax - char *v288; // esi - int v289; // edi - char *v290; // edi - unsigned int v291; // ecx - char v292; // dl - int v293; // eax - int v294; // ecx - const char *v295; // edi - int v296; // eax - char v297; // dl - int v298; // ecx - int v299; // eax - int v300; // eax - FILE *v301; // esi - size_t v302; // edi - FILE *v303; // edi - unsigned int v304; // ecx - char v305; // dl - int v306; // eax - int v307; // eax - int v308; // edx - const char *v309; // edi - int v310; // eax - char i10; // dl - int v312; // ecx - int v313; // eax - int v314; // eax - FILE *v315; // esi - size_t v316; // edi - FILE *v317; // edi - unsigned int v318; // ecx - char v319; // dl - int v320; // eax - int v321; // ebp - int v322; // eax - int v323; // edx - _DWORD *charbuf; // ecx - int v325; // eax - char v326; // al - const char *v327; // esi - char i12; // dl - unsigned int v329; // ecx - int v330; // eax - unsigned int v331; // ecx - _DWORD *v332; // esi - int v333; // eax - FILE *v334; // esi - unsigned int v335; // edi - FILE *v336; // edi - unsigned int v337; // ecx - char v338; // dl - int v339; // eax - FILE *v340; // esi - size_t v341; // edi - FILE *v342; // edi - unsigned int v343; // ecx - char v344; // dl - int v345; // eax - const char *v346; // esi - char m; // dl - unsigned int v348; // ecx - int v349; // eax - int v350; // eax - char *v351; // eax - char *v352; // eax - char *v353; // eax - unsigned __int8 *v354; // ebp - int v355; // edx - int v356; // ecx - _DWORD *i18; // eax - int v358; // ecx - int v359; // eax - int v360; // ecx - int v361; // eax - _DWORD *pack; // eax - int v363; // ecx - int i19; // edx - int v365; // eax - int v366; // eax - int v367; // eax - int v368; // eax - int v369; // eax - int v370; // eax - int v371; // eax - int v372; // eax - _DWORD *v373; // eax - int v374; // edi - _DWORD *v375; // ecx - int v376; // edx - _DWORD *v377; // ebp - _DWORD *v378; // edx - int v379; // edx - char v380; // al - int v381; // eax - int v382; // edx - FILE *v383; // esi - unsigned int v384; // edi - FILE *v385; // edi - unsigned int v386; // ecx - char v387; // dl - int v388; // eax - int v389; // eax - int v390; // eax - const char *v391; // edx - int v392; // edx - int v393; // eax - unsigned int v394; // edi - int v395; // eax - int v396; // eax - bool v397; // zf - _DWORD *v398; // ecx - int v399; // ebp - int *v400; // ebp - int v401; // edx - int v402; // edi - char *Str2; // [esp+4h] [ebp-88h] - int v404; // [esp+8h] [ebp-84h] - char *v405; // [esp+10h] [ebp-7Ch] - char v406; // [esp+10h] [ebp-7Ch] - char v407; // [esp+10h] [ebp-7Ch] - char v408; // [esp+10h] [ebp-7Ch] - char v409; // [esp+10h] [ebp-7Ch] - char v410; // [esp+10h] [ebp-7Ch] - char v411; // [esp+10h] [ebp-7Ch] - char v412; // [esp+10h] [ebp-7Ch] - char v413; // [esp+10h] [ebp-7Ch] - char v414; // [esp+10h] [ebp-7Ch] - char v415; // [esp+10h] [ebp-7Ch] - char v416; // [esp+10h] [ebp-7Ch] - char v417; // [esp+10h] [ebp-7Ch] - char v418; // [esp+10h] [ebp-7Ch] - char v419; // [esp+10h] [ebp-7Ch] - char v420; // [esp+10h] [ebp-7Ch] - char v421; // [esp+10h] [ebp-7Ch] - char v422; // [esp+10h] [ebp-7Ch] - char v423; // [esp+10h] [ebp-7Ch] - char v424; // [esp+10h] [ebp-7Ch] - char v425; // [esp+10h] [ebp-7Ch] - char v426; // [esp+10h] [ebp-7Ch] - char v427; // [esp+10h] [ebp-7Ch] - char v428; // [esp+10h] [ebp-7Ch] - char v429; // [esp+10h] [ebp-7Ch] - char v430; // [esp+10h] [ebp-7Ch] - char v431; // [esp+10h] [ebp-7Ch] - char v432; // [esp+10h] [ebp-7Ch] - char v433; // [esp+10h] [ebp-7Ch] - char v434; // [esp+10h] [ebp-7Ch] - char v435; // [esp+10h] [ebp-7Ch] - _DWORD *v436; // [esp+10h] [ebp-7Ch] - char v437; // [esp+10h] [ebp-7Ch] - char v438; // [esp+10h] [ebp-7Ch] - char v439; // [esp+10h] [ebp-7Ch] - char v440; // [esp+10h] [ebp-7Ch] - char v441; // [esp+10h] [ebp-7Ch] - char v442; // [esp+10h] [ebp-7Ch] - char v443; // [esp+10h] [ebp-7Ch] - char v444; // [esp+10h] [ebp-7Ch] - char v445; // [esp+10h] [ebp-7Ch] - char v446; // [esp+10h] [ebp-7Ch] - char v447; // [esp+10h] [ebp-7Ch] - char v448; // [esp+10h] [ebp-7Ch] - char v449; // [esp+10h] [ebp-7Ch] - char v450; // [esp+10h] [ebp-7Ch] - char v451; // [esp+10h] [ebp-7Ch] - char v452; // [esp+10h] [ebp-7Ch] - char v453; // [esp+10h] [ebp-7Ch] - char v454; // [esp+10h] [ebp-7Ch] - char v455; // [esp+10h] [ebp-7Ch] - char v456; // [esp+10h] [ebp-7Ch] - int v457; // [esp+10h] [ebp-7Ch] - char v458; // [esp+10h] [ebp-7Ch] - int v459; // [esp+10h] [ebp-7Ch] - unsigned int v460; // [esp+14h] [ebp-78h] - int v461; // [esp+14h] [ebp-78h] - int v462; // [esp+14h] [ebp-78h] - char *v463; // [esp+14h] [ebp-78h] - FILE *v464; // [esp+18h] [ebp-74h] - int v465; // [esp+1Ch] [ebp-70h] - int v466[2]; // [esp+28h] [ebp-64h] BYREF - FILE Str[2]; // [esp+30h] [ebp-5Ch] BYREF - - v2 = result; - if ( !a2 ) - goto LABEL_7; - v3 = *(_DWORD *)(result + 280); - if ( v3 ) - return result; - v4 = *(_DWORD *)a2; - v5 = (_DWORD *)a2; - switch ( *(_DWORD *)a2 ) - { - case 0: - v261 = *(_DWORD *)(a2 + 16); - v262 = *(char **)(a2 + 12); - if ( v261 ) - { - result = *(_DWORD *)(result + 256); - v263 = &v262[v261]; - do - { - v265 = *v262; - if ( result == 255 ) - { - v266 = *(_DWORD *)(v2 + 268); - v444 = *v262; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v266); - ++*(_DWORD *)(v2 + 296); - v265 = v444; - v264 = v4; - result = 1; - } - else - { - v264 = result++; - } - ++v262; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v264) = v265; - *(_BYTE *)(v2 + 260) = v265; - } - while ( v263 != v262 ); - } - return result; - case 1: - case 2: - v31 = "::"; - d_print_comp(*(_DWORD *)(a2 + 12), 17); - v32 = *(_DWORD *)(v2 + 256); - for ( i = 58; ; i = *v31 ) - { - if ( v32 == 255 ) - { - v35 = *(_DWORD *)(v2 + 268); - v407 = i; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v35); - ++*(_DWORD *)(v2 + 296); - i = v407; - v34 = 0; - v32 = 1; - } - else - { - v34 = v32++; - } - ++v31; - *(_DWORD *)(v2 + 256) = v32; - *(_BYTE *)(v2 + v34) = i; - *(_BYTE *)(v2 + 260) = i; - if ( "" == v31 ) - break; - } - v280 = (_DWORD *)v5[4]; - if ( *v280 == 71 ) - { - v281 = Str; - d_append_string(v2, "{default arg#"); - sprintf_constprop_0(Str, (int)"%d", v280[4] + 1); - v282 = strlen((const char *)Str); - if ( v282 ) - { - v283 = *(_DWORD *)(v2 + 256); - v284 = (FILE *)((char *)Str + v282); - do - { - ptr = (char)v281->_ptr; - if ( v283 == 255 ) - { - v287 = *(_DWORD *)(v2 + 268); - v447 = (char)v281->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v287); - ++*(_DWORD *)(v2 + 296); - ptr = v447; - v285 = 0; - v283 = 1; - } - else - { - v285 = v283++; - } - v281 = (FILE *)((char *)v281 + 1); - *(_DWORD *)(v2 + 256) = v283; - *(_BYTE *)(v2 + v285) = ptr; - *(_BYTE *)(v2 + 260) = ptr; - } - while ( v284 != v281 ); - } - d_append_string(v2, "}::"); - v8 = (int *)v280[3]; - } - else - { - v8 = (int *)v5[4]; - } - return d_print_comp(v8, 17); - case 3: - result = *(_DWORD *)(result + 276); - v6 = *(unsigned int **)(a2 + 12); - *(_DWORD *)(v2 + 276) = 0; - v465 = result; - if ( !v6 ) - goto LABEL_7; - v41 = 0; - v461 = *(_DWORD *)(v2 + 272); - v7 = Str; - result = 0; - while ( 2 ) - { - v7->_ptr = (char *)result; - ++v41; - v7->_base = 0; - v7->_flag = v461; - result = *v6; - v464 = v7; - v7->_cnt = (int)v6; - if ( result == 77 ) - goto LABEL_4; - if ( result > 0x4D ) - { - v274 = result == 79; - result -= 79; - if ( !v274 && result != 1 ) - { - *(_DWORD *)(v2 + 276) = v7; - goto LABEL_85; - } - } - else if ( result - 28 > 4 ) - { - *(_DWORD *)(v2 + 276) = v7; - if ( result == 2 ) - { - v6 = (unsigned int *)v6[4]; - result = *v6; - if ( *v6 == 71 ) - { - v6 = (unsigned int *)v6[3]; - if ( !v6 ) - goto LABEL_7; - result = *v6; - } - v42 = &Str[0]._ptr + 4 * v41; - while ( 1 ) - { - if ( result != 77 ) - { - if ( result > 0x4D ) - { - v274 = result == 79; - result -= 79; - if ( !v274 && result != 1 ) - goto LABEL_85; - } - else if ( result - 28 > 4 ) - { - break; - } - } - if ( v41 == 4 ) - goto LABEL_7; - v351 = *(v42 - 3); - *(v42 - 3) = (char *)v6; - ++v41; - *(_DWORD *)(v2 + 276) = v42; - v42[1] = v351; - v352 = *(v42 - 2); - *(v42 - 2) = 0; - v6 = (unsigned int *)v6[3]; - v42[2] = v352; - v42[3] = *(v42 - 1); - v353 = (char *)(v42 - 4); - v42 += 4; - *(v42 - 4) = v353; - result = v461; - *(v42 - 5) = (char *)v461; - if ( !v6 ) - goto LABEL_7; - result = *v6; - } - } - if ( result == 4 ) - { - v466[1] = (int)v6; - v466[0] = v461; - *(_DWORD *)(v2 + 272) = v466; - } -LABEL_85: - d_print_comp(*(_DWORD *)(a2 + 16), 17); - if ( *v6 == 4 ) - *(_DWORD *)(v2 + 272) = v466[0]; - v43 = (FILE *)((char *)Str + 16 * v41); - do - { - if ( !v43[-1]._bufsiz ) - { - v322 = *(_DWORD *)(v2 + 256); - if ( v322 == 255 ) - { - v381 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v381); - ++*(_DWORD *)(v2 + 296); - v323 = 1; - v322 = 0; - } - else - { - v323 = v322 + 1; - } - *(_DWORD *)(v2 + 256) = v323; - charbuf = (_DWORD *)v43[-1]._charbuf; - *(_BYTE *)(v2 + v322) = 32; - *(_BYTE *)(v2 + 260) = 32; - d_print_mod(v2, charbuf); - } - v43 = (FILE *)((char *)v43 - 16); - } - while ( Str != v43 ); - result = v465; - *(_DWORD *)(v2 + 276) = v465; - return result; - } -LABEL_4: - v6 = (unsigned int *)v6[3]; - if ( v6 ) - { - result = (unsigned int)v7; - v7 = (FILE *)((char *)v7 + 16); - if ( v41 == 4 ) - { - *(_DWORD *)(v2 + 276) = v464; - goto LABEL_7; - } - continue; - } - break; - } - *(_DWORD *)(v2 + 276) = v7; - goto LABEL_7; - case 4: - v183 = *(_DWORD *)(result + 328); - v184 = *(_DWORD *)(result + 276); - *(_DWORD *)(result + 328) = a2; - *(_DWORD *)(result + 276) = 0; - d_print_comp(*(_DWORD *)(a2 + 12), 17); - if ( *(_BYTE *)(v2 + 260) == 60 ) - d_append_char(v2, 32); - v185 = *(_DWORD *)(v2 + 256); - if ( v185 == 255 ) - { - v371 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v371); - ++*(_DWORD *)(v2 + 296); - v186 = 1; - v185 = 0; - } - else - { - v186 = v185 + 1; - } - *(_DWORD *)(v2 + 256) = v186; - *(_BYTE *)(v2 + v185) = 60; - *(_BYTE *)(v2 + 260) = 60; - d_print_comp(v5[4], 17); - if ( *(_BYTE *)(v2 + 260) == 62 ) - d_append_char(v2, 32); - result = *(_DWORD *)(v2 + 256); - if ( result == 255 ) - { - v370 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v370); - ++*(_DWORD *)(v2 + 296); - v187 = 1; - result = 0; - } - else - { - v187 = result + 1; - } - *(_DWORD *)(v2 + 256) = v187; - *(_BYTE *)(v2 + result) = 62; - *(_BYTE *)(v2 + 260) = 62; - *(_DWORD *)(v2 + 276) = v184; - *(_DWORD *)(v2 + 328) = v183; - return result; - case 5: - if ( *(_DWORD *)(result + 288) ) - { - v178 = *(_DWORD *)(result + 256); - v179 = "auto:"; - for ( j = 97; ; j = *v179 ) - { - if ( v178 == 255 ) - { - v182 = *(_DWORD *)(v2 + 268); - v431 = j; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v182); - ++*(_DWORD *)(v2 + 296); - j = v431; - v181 = 0; - v178 = 1; - } - else - { - v181 = v178++; - } - ++v179; - *(_DWORD *)(v2 + 256) = v178; - *(_BYTE *)(v2 + v181) = j; - *(_BYTE *)(v2 + 260) = j; - if ( v179 == "" ) - break; - } - v333 = v5[3]; - v334 = Str; - sprintf_constprop_0(Str, (int)"%d", v333 + 1); - result = strlen((const char *)Str); - v335 = result; - if ( result ) - { - result = *(_DWORD *)(v2 + 256); - v336 = (FILE *)((char *)Str + v335); - do - { - v338 = (char)v334->_ptr; - if ( result == 255 ) - { - v339 = *(_DWORD *)(v2 + 268); - v454 = (char)v334->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v339); - ++*(_DWORD *)(v2 + 296); - v338 = v454; - v337 = 0; - result = 1; - } - else - { - v337 = result++; - } - v334 = (FILE *)((char *)v334 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v337) = v338; - *(_BYTE *)(v2 + 260) = v338; - } - while ( v334 != v336 ); - } - return result; - } - result = (unsigned int)d_lookup_template_argument(result, a2); - v331 = result; - if ( result ) - { - if ( *(_DWORD *)result != 47 - || (v382 = *(_DWORD *)(v2 + 292), v382 < 0) - || (result = (unsigned int)d_index_template_argument_part_0((_DWORD *)result, v382), (v331 = result) != 0) ) - { - v332 = *(_DWORD **)(v2 + 272); - *(_DWORD *)(v2 + 272) = *v332; - result = d_print_comp(v331, 17); - *(_DWORD *)(v2 + 272) = v332; - return result; - } - } - goto LABEL_7; - case 6: - v149 = *(_DWORD *)(a2 + 12); - result = *(_DWORD *)(result + 256); - if ( v149 ) - { - v150 = "parm#"; - for ( k = 123; ; k = *v150++ ) - { - if ( result == 255 ) - { - v153 = *(_DWORD *)(v2 + 268); - v426 = k; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v153); - ++*(_DWORD *)(v2 + 296); - k = v426; - v152 = 0; - result = 1; - } - else - { - v152 = result++; - } - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v152) = k; - *(_BYTE *)(v2 + 260) = k; - if ( v150 == "" ) - break; - } - v340 = Str; - sprintf_constprop_0(Str, (int)"%d", v149); - v341 = strlen((const char *)Str); - result = *(_DWORD *)(v2 + 256); - if ( v341 ) - { - v342 = (FILE *)((char *)Str + v341); - do - { - v344 = (char)v340->_ptr; - if ( result == 255 ) - { - v345 = *(_DWORD *)(v2 + 268); - v455 = (char)v340->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v345); - ++*(_DWORD *)(v2 + 296); - v344 = v455; - v343 = 0; - result = 1; - } - else - { - v343 = result++; - } - v340 = (FILE *)((char *)v340 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v343) = v344; - *(_BYTE *)(v2 + 260) = v344; - } - while ( v342 != v340 ); - } - if ( result == 255 ) - { - v390 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v390); - ++*(_DWORD *)(v2 + 296); - result = 0; - } - *(_DWORD *)(v2 + 256) = result + 1; - *(_BYTE *)(v2 + result) = 125; - *(_BYTE *)(v2 + 260) = 125; - } - else - { - v346 = "this"; - for ( m = 116; ; m = *v346 ) - { - if ( result == 255 ) - { - v349 = *(_DWORD *)(v2 + 268); - v456 = m; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v349); - ++*(_DWORD *)(v2 + 296); - m = v456; - v348 = 0; - result = 1; - } - else - { - v348 = result++; - } - ++v346; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v348) = m; - *(_BYTE *)(v2 + 260) = m; - if ( v346 == "" ) - break; - } - } - return result; - case 7: - goto LABEL_14; - case 8: - v9 = *(_DWORD *)(result + 256); - if ( v9 == 255 ) - { - v367 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v367); - ++*(_DWORD *)(v2 + 296); - v10 = 1; - v9 = 0; - } - else - { - v10 = v9 + 1; - } - *(_DWORD *)(v2 + 256) = v10; - *(_BYTE *)(v2 + v9) = 126; - *(_BYTE *)(v2 + 260) = 126; - goto LABEL_14; - case 9: - v194 = *(_DWORD *)(result + 256); - v195 = "table for "; - for ( n = 118; ; n = *v195++ ) - { - if ( v194 == 255 ) - { - v198 = *(_DWORD *)(v2 + 268); - v433 = n; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v198); - ++*(_DWORD *)(v2 + 296); - n = v433; - v197 = 0; - v194 = 1; - } - else - { - v197 = v194++; - } - *(_DWORD *)(v2 + 256) = v194; - *(_BYTE *)(v2 + v197) = n; - *(_BYTE *)(v2 + 260) = n; - if ( v195 == "" ) - break; - } - goto LABEL_9; - case 0xA: - v49 = *(_DWORD *)(result + 256); - v50 = "TT for "; - for ( ii = 86; ; ii = *v50++ ) - { - if ( v49 == 255 ) - { - v53 = *(_DWORD *)(v2 + 268); - v410 = ii; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v53); - ++*(_DWORD *)(v2 + 296); - ii = v410; - v52 = 0; - v49 = 1; - } - else - { - v52 = v49++; - } - *(_DWORD *)(v2 + 256) = v49; - *(_BYTE *)(v2 + v52) = ii; - *(_BYTE *)(v2 + 260) = ii; - if ( v50 == "" ) - break; - } - goto LABEL_9; - case 0xB: - v44 = *(_DWORD *)(result + 256); - v45 = "onstruction vtable for "; - for ( jj = 99; ; jj = *v45++ ) - { - if ( v44 == 255 ) - { - v48 = *(_DWORD *)(v2 + 268); - v409 = jj; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v48); - ++*(_DWORD *)(v2 + 296); - jj = v409; - v47 = 0; - v44 = 1; - } - else - { - v47 = v44++; - } - *(_DWORD *)(v2 + 256) = v44; - *(_BYTE *)(v2 + v47) = jj; - *(_BYTE *)(v2 + 260) = jj; - if ( v45 == "" ) - break; - } - v275 = "-in-"; - d_print_comp(v5[3], 17); - v276 = *(_DWORD *)(v2 + 256); - for ( kk = 45; ; kk = *v275 ) - { - if ( v276 == 255 ) - { - v279 = *(_DWORD *)(v2 + 268); - v446 = kk; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v279); - ++*(_DWORD *)(v2 + 296); - kk = v446; - v278 = 0; - v276 = 1; - } - else - { - v278 = v276++; - } - ++v275; - *(_DWORD *)(v2 + 256) = v276; - *(_BYTE *)(v2 + v278) = kk; - *(_BYTE *)(v2 + 260) = kk; - if ( v275 == "" ) - break; - } - goto LABEL_14; - case 0xC: - v110 = *(_DWORD *)(result + 256); - v111 = "ypeinfo for "; - for ( mm = 116; ; mm = *v111++ ) - { - if ( v110 == 255 ) - { - v114 = *(_DWORD *)(v2 + 268); - v422 = mm; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v114); - ++*(_DWORD *)(v2 + 296); - mm = v422; - v113 = 0; - v110 = 1; - } - else - { - v113 = v110++; - } - *(_DWORD *)(v2 + 256) = v110; - *(_BYTE *)(v2 + v113) = mm; - *(_BYTE *)(v2 + 260) = mm; - if ( v111 == "" ) - break; - } - goto LABEL_9; - case 0xD: - v105 = *(_DWORD *)(result + 256); - v106 = "ypeinfo name for "; - for ( nn = 116; ; nn = *v106++ ) - { - if ( v105 == 255 ) - { - v109 = *(_DWORD *)(v2 + 268); - v421 = nn; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v109); - ++*(_DWORD *)(v2 + 296); - nn = v421; - v108 = 0; - v105 = 1; - } - else - { - v108 = v105++; - } - *(_DWORD *)(v2 + 256) = v105; - *(_BYTE *)(v2 + v108) = nn; - *(_BYTE *)(v2 + 260) = nn; - if ( v106 == "" ) - break; - } - goto LABEL_9; - case 0xE: - v100 = *(_DWORD *)(result + 256); - v101 = "ypeinfo fn for "; - for ( i1 = 116; ; i1 = *v101++ ) - { - if ( v100 == 255 ) - { - v104 = *(_DWORD *)(v2 + 268); - v420 = i1; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v104); - ++*(_DWORD *)(v2 + 296); - i1 = v420; - v103 = 0; - v100 = 1; - } - else - { - v103 = v100++; - } - *(_DWORD *)(v2 + 256) = v100; - *(_BYTE *)(v2 + v103) = i1; - *(_BYTE *)(v2 + 260) = i1; - if ( v101 == "" ) - break; - } - goto LABEL_9; - case 0xF: - v95 = *(_DWORD *)(result + 256); - v96 = "on-virtual thunk to "; - for ( i2 = 110; ; i2 = *v96++ ) - { - if ( v95 == 255 ) - { - v99 = *(_DWORD *)(v2 + 268); - v419 = i2; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v99); - ++*(_DWORD *)(v2 + 296); - i2 = v419; - v98 = 0; - v95 = 1; - } - else - { - v98 = v95++; - } - *(_DWORD *)(v2 + 256) = v95; - *(_BYTE *)(v2 + v98) = i2; - *(_BYTE *)(v2 + 260) = i2; - if ( v96 == "" ) - break; - } - goto LABEL_9; - case 0x10: - v115 = *(_DWORD *)(result + 256); - v116 = "irtual thunk to "; - for ( i3 = 118; ; i3 = *v116++ ) - { - if ( v115 == 255 ) - { - v119 = *(_DWORD *)(v2 + 268); - v423 = i3; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v119); - ++*(_DWORD *)(v2 + 296); - i3 = v423; - v118 = 0; - v115 = 1; - } - else - { - v118 = v115++; - } - *(_DWORD *)(v2 + 256) = v115; - *(_BYTE *)(v2 + v118) = i3; - *(_BYTE *)(v2 + 260) = i3; - if ( v116 == "" ) - break; - } - goto LABEL_9; - case 0x11: - v64 = *(_DWORD *)(result + 256); - v65 = "ovariant return thunk to "; - for ( i4 = 99; ; i4 = *v65++ ) - { - if ( v64 == 255 ) - { - v68 = *(_DWORD *)(v2 + 268); - v413 = i4; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v68); - ++*(_DWORD *)(v2 + 296); - i4 = v413; - v67 = 0; - v64 = 1; - } - else - { - v67 = v64++; - } - *(_DWORD *)(v2 + 256) = v64; - *(_BYTE *)(v2 + v67) = i4; - *(_BYTE *)(v2 + 260) = i4; - if ( v65 == "" ) - break; - } - goto LABEL_9; - case 0x12: - v59 = *(_DWORD *)(result + 256); - v60 = "ava Class for "; - for ( i5 = 106; ; i5 = *v60++ ) - { - if ( v59 == 255 ) - { - v63 = *(_DWORD *)(v2 + 268); - v412 = i5; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v63); - ++*(_DWORD *)(v2 + 296); - i5 = v412; - v62 = 0; - v59 = 1; - } - else - { - v62 = v59++; - } - *(_DWORD *)(v2 + 256) = v59; - *(_BYTE *)(v2 + v62) = i5; - *(_BYTE *)(v2 + 260) = i5; - if ( v60 == "" ) - break; - } - goto LABEL_9; - case 0x13: - v54 = *(_DWORD *)(result + 256); - v55 = "uard variable for "; - for ( i6 = 103; ; i6 = *v55++ ) - { - if ( v54 == 255 ) - { - v58 = *(_DWORD *)(v2 + 268); - v411 = i6; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v58); - ++*(_DWORD *)(v2 + 296); - i6 = v411; - v57 = 0; - v54 = 1; - } - else - { - v57 = v54++; - } - *(_DWORD *)(v2 + 256) = v54; - *(_BYTE *)(v2 + v57) = i6; - *(_BYTE *)(v2 + 260) = i6; - if ( v55 == "" ) - break; - } - goto LABEL_9; - case 0x14: - v169 = *(_DWORD *)(result + 256); - v170 = "LS init function for "; - for ( i7 = 84; ; i7 = *v170++ ) - { - if ( v169 == 255 ) - { - v173 = *(_DWORD *)(v2 + 268); - v430 = i7; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v173); - ++*(_DWORD *)(v2 + 296); - i7 = v430; - v172 = 0; - v169 = 1; - } - else - { - v172 = v169++; - } - *(_DWORD *)(v2 + 256) = v169; - *(_BYTE *)(v2 + v172) = i7; - *(_BYTE *)(v2 + 260) = i7; - if ( v170 == "" ) - break; - } - goto LABEL_9; - case 0x15: - v164 = *(_DWORD *)(result + 256); - v165 = "LS wrapper function for "; - for ( i8 = 84; ; i8 = *v165++ ) - { - if ( v164 == 255 ) - { - v168 = *(_DWORD *)(v2 + 268); - v429 = i8; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v168); - ++*(_DWORD *)(v2 + 296); - i8 = v429; - v167 = 0; - v164 = 1; - } - else - { - v167 = v164++; - } - *(_DWORD *)(v2 + 256) = v164; - *(_BYTE *)(v2 + v167) = i8; - *(_BYTE *)(v2 + 260) = i8; - if ( v165 == "" ) - break; - } - goto LABEL_9; - case 0x16: - v159 = *(_DWORD *)(result + 256); - v160 = "eference temporary #"; - for ( i9 = 114; ; i9 = *v160++ ) - { - if ( v159 == 255 ) - { - v163 = *(_DWORD *)(v2 + 268); - v428 = i9; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v163); - ++*(_DWORD *)(v2 + 296); - i9 = v428; - v162 = 0; - v159 = 1; - } - else - { - v162 = v159++; - } - *(_DWORD *)(v2 + 256) = v159; - *(_BYTE *)(v2 + v162) = i9; - *(_BYTE *)(v2 + 260) = i9; - if ( v160 == "" ) - break; - } - v309 = " for "; - d_print_comp(v5[4], 17); - v310 = *(_DWORD *)(v2 + 256); - for ( i10 = 32; ; i10 = *v309 ) - { - if ( v310 == 255 ) - { - v313 = *(_DWORD *)(v2 + 268); - v451 = i10; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v313); - ++*(_DWORD *)(v2 + 296); - i10 = v451; - v312 = 0; - v310 = 1; - } - else - { - v312 = v310++; - } - ++v309; - *(_DWORD *)(v2 + 256) = v310; - *(_BYTE *)(v2 + v312) = i10; - *(_BYTE *)(v2 + 260) = i10; - if ( v309 == "" ) - break; - } - goto LABEL_9; - case 0x17: - v154 = *(_DWORD *)(result + 256); - v155 = "idden alias for "; - for ( i11 = 104; ; i11 = *v155++ ) - { - if ( v154 == 255 ) - { - v158 = *(_DWORD *)(v2 + 268); - v427 = i11; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v158); - ++*(_DWORD *)(v2 + 296); - i11 = v427; - v157 = 0; - v154 = 1; - } - else - { - v157 = v154++; - } - *(_DWORD *)(v2 + 256) = v154; - *(_BYTE *)(v2 + v157) = i11; - *(_BYTE *)(v2 + 260) = i11; - if ( v155 == "" ) - break; - } - goto LABEL_9; - case 0x18: - v134 = *(_DWORD *)(a2 + 16); - v135 = *(char **)(a2 + 12); - if ( v134 ) - { - result = *(_DWORD *)(result + 256); - v136 = &v135[v134]; - do - { - v138 = *v135; - if ( result == 255 ) - { - v139 = *(_DWORD *)(v2 + 268); - v425 = *v135; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v139); - ++*(_DWORD *)(v2 + 296); - v138 = v425; - v137 = 0; - result = 1; - } - else - { - v137 = result++; - } - ++v135; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v137) = v138; - *(_BYTE *)(v2 + 260) = v138; - } - while ( v136 != v135 ); - } - return result; - case 0x19: - case 0x1A: - case 0x1B: - v14 = *(char **)(result + 276); - v405 = v14; - if ( !v14 ) - goto LABEL_36; - while ( 2 ) - { - if ( *((_DWORD *)v14 + 2) ) - goto LABEL_26; - v15 = **((_DWORD **)v14 + 1); - if ( (unsigned int)(v15 - 25) > 2 ) - { - v3 = 0; - goto LABEL_36; - } - if ( v4 != v15 ) - { -LABEL_26: - v14 = *(char **)v14; - if ( !v14 ) - goto LABEL_36; - continue; - } - break; - } -LABEL_9: - v8 = (int *)v5[3]; - return d_print_comp(v8, 17); - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x25: - case 0x26: - case 0x4D: - case 0x4F: - case 0x50: - v11 = *(char **)(result + 276); - goto LABEL_16; - case 0x23: - case 0x24: - result = *(_DWORD *)(a2 + 12); - v18 = *(char **)result; - if ( *(_DWORD *)(v2 + 288) ) - goto LABEL_33; - v3 = 0; - if ( v18 != (char *)5 ) - goto LABEL_33; - v374 = *(_DWORD *)(v2 + 308); - if ( v374 <= 0 ) - goto LABEL_621; - v375 = *(_DWORD **)(v2 + 304); - v376 = 0; - break; - case 0x27: - result = *(_DWORD *)(a2 + 12); - v267 = *(_DWORD *)(result + 4); - v268 = *(char **)result; - if ( v267 ) - { - result = *(_DWORD *)(v2 + 256); - v269 = &v268[v267]; - do - { - v271 = *v268; - if ( result == 255 ) - { - v272 = *(_DWORD *)(v2 + 268); - v445 = *v268; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v272); - ++*(_DWORD *)(v2 + 296); - v271 = v445; - v270 = 0; - result = 1; - } - else - { - v270 = result++; - } - ++v268; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v270) = v271; - *(_BYTE *)(v2 + 260) = v271; - } - while ( v268 != v269 ); - } - return result; - case 0x28: - goto LABEL_9; - case 0x29: - v174 = *(_DWORD *)(a2 + 12); - v175 = *(char **)(result + 276); - if ( !v174 ) - return d_print_function_type(v2, (int)v5, v175); - Str[0]._ptr = v175; - *(_DWORD *)(v2 + 276) = Str; - v176 = *(_DWORD *)(v2 + 272); - Str[0]._cnt = (int)v5; - Str[0]._flag = v176; - Str[0]._base = 0; - d_print_comp(v174, 17); - result = (unsigned int)Str[0]._ptr; - base = Str[0]._base; - *(_DWORD *)(v2 + 276) = Str[0]._ptr; - if ( !base ) - { - d_append_char(v2, 32); - v175 = *(char **)(v2 + 276); - return d_print_function_type(v2, (int)v5, v175); - } - return result; - case 0x2A: - v127 = *(char **)(result + 276); - Str[0]._cnt = a2; - v128 = 1; - v129 = v127; - v463 = v127; - Str[0]._ptr = v127; - v130 = (char *)Str; - *(_DWORD *)(result + 276) = Str; - v131 = *(_DWORD *)(result + 272); - Str[0]._base = 0; - Str[0]._flag = v131; - result = (unsigned int)v129; - if ( v129 ) - { - do - { - if ( (unsigned int)(**(_DWORD **)(result + 4) - 25) > 2 ) - break; - if ( !*(_DWORD *)(result + 8) ) - { - if ( v128 > 3 ) - goto LABEL_7; - v132 = v128++; - v132 *= 16; - *(char **)((char *)&Str[0]._ptr + v132) = *(char **)result; - v133 = (char **)((char *)&Str[0]._ptr + v132); - v133[1] = *(_DWORD *)(result + 4); - v133[2] = *(_DWORD *)(result + 8); - v133[3] = *(_DWORD *)(result + 12); - *(char **)((char *)&Str[0]._ptr + v132) = v130; - v130 = (char *)Str + v132; - *(_DWORD *)(v2 + 276) = (char *)Str + v132; - *(_DWORD *)(result + 8) = 1; - } - result = *(_DWORD *)result; - } - while ( result ); - d_print_comp(v5[4], 17); - *(_DWORD *)(v2 + 276) = v463; - result = (unsigned int)Str[0]._base; - if ( Str[0]._base ) - return result; - while ( v128 != 1 ) - { - --v128; - d_print_mod(v2, *((_DWORD **)&Str[0]._cnt + 4 * v128)); - } - } - else - { - result = d_print_comp(v5[4], 17); - v397 = Str[0]._base == 0; - *(_DWORD *)(v2 + 276) = 0; - if ( !v397 ) - return result; - } - return d_print_array_type(v2, (int)v5, *(int ***)(v2 + 276)); - case 0x2B: - case 0x2D: - v16 = *(char **)(result + 276); - Str[0]._cnt = a2; - v17 = *(_DWORD *)(a2 + 16); - Str[0]._base = 0; - Str[0]._ptr = v16; - *(_DWORD *)(v2 + 276) = Str; - Str[0]._flag = *(_DWORD *)(v2 + 272); - d_print_comp(v17, 17); - if ( !Str[0]._base ) - d_print_mod(v2, v5); - result = (unsigned int)Str[0]._ptr; - *(_DWORD *)(v2 + 276) = Str[0]._ptr; - return result; - case 0x2C: - if ( *(_WORD *)(a2 + 18) ) - d_append_string(result, "_Sat "); - v188 = v5[3]; - if ( *(void ****)(v188 + 12) == &off_559B20 ) - { - result = *(_DWORD *)(v2 + 256); - } - else - { - d_print_comp(v188, 17); - v189 = *(_DWORD *)(v2 + 256); - if ( v189 == 255 ) - { - v389 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v389); - ++*(_DWORD *)(v2 + 296); - v189 = 0; - } - result = v189 + 1; - *(_DWORD *)(v2 + 256) = v189 + 1; - *(_BYTE *)(v2 + v189) = 32; - *(_BYTE *)(v2 + 260) = 32; - } - if ( *((_WORD *)v5 + 8) ) - { - v327 = "Accum"; - for ( i12 = 95; ; i12 = *v327++ ) - { - if ( result == 255 ) - { - v330 = *(_DWORD *)(v2 + 268); - v453 = i12; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v330); - ++*(_DWORD *)(v2 + 296); - i12 = v453; - v329 = 0; - result = 1; - } - else - { - v329 = result++; - } - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v329) = i12; - *(_BYTE *)(v2 + 260) = i12; - if ( v327 == "" ) - break; - } - } - else - { - v190 = "Fract"; - for ( i13 = 95; ; i13 = *v190++ ) - { - if ( result == 255 ) - { - v193 = *(_DWORD *)(v2 + 268); - v432 = i13; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v193); - ++*(_DWORD *)(v2 + 296); - i13 = v432; - v192 = 0; - result = 1; - } - else - { - v192 = result++; - } - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v192) = i13; - *(_BYTE *)(v2 + 260) = i13; - if ( v190 == "" ) - break; - } - } - return result; - case 0x2E: - case 0x2F: - v26 = *(_DWORD *)(a2 + 12); - if ( v26 ) - d_print_comp(v26, 17); - result = v5[4]; - if ( result ) - { - v27 = *(_DWORD *)(v2 + 256); - if ( v27 > 0xFD ) - { - *(_BYTE *)(v2 + v27) = 0; - Str2 = (char *)v27; - v27 = 0; - (*(void (__cdecl **)(unsigned int, char *, _DWORD))(v2 + 264))(v2, Str2, *(_DWORD *)(v2 + 268)); - ++*(_DWORD *)(v2 + 296); - *(_DWORD *)(v2 + 256) = 0; - } - v28 = ", "; - for ( i14 = 44; ; i14 = *v28 ) - { - if ( v27 == 255 ) - { - v27 = 1; - v406 = i14; - v404 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v404); - ++*(_DWORD *)(v2 + 296); - i14 = v406; - v30 = 0; - } - else - { - v30 = v27++; - } - ++v28; - *(_DWORD *)(v2 + 256) = v27; - *(_BYTE *)(v2 + v30) = i14; - *(_BYTE *)(v2 + 260) = i14; - if ( v28 == "" ) - break; - } - v321 = *(_DWORD *)(v2 + 296); - result = d_print_comp(v5[4], 17); - if ( *(_DWORD *)(v2 + 296) == v321 && *(_DWORD *)(v2 + 256) == v27 ) - *(_DWORD *)(v2 + 256) = v27 - 2; - } - return result; - case 0x30: - v36 = *(_DWORD *)(result + 256); - v37 = "emplate parameter object for "; - for ( i15 = 116; ; i15 = *v37++ ) - { - if ( v36 == 255 ) - { - v40 = *(_DWORD *)(v2 + 268); - v408 = i15; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v40); - ++*(_DWORD *)(v2 + 296); - i15 = v408; - v39 = 0; - v36 = 1; - } - else - { - v39 = v36++; - } - *(_DWORD *)(v2 + 256) = v36; - *(_BYTE *)(v2 + v39) = i15; - *(_BYTE *)(v2 + 260) = i15; - if ( v37 == "" ) - break; - } - goto LABEL_9; - case 0x31: - v247 = *(_DWORD *)(a2 + 12); - v248 = v5[4]; - if ( v247 ) - d_print_comp(v247, 17); - v249 = *(_DWORD *)(v2 + 256); - if ( v249 == 255 ) - { - v365 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v365); - ++*(_DWORD *)(v2 + 296); - v250 = 1; - v249 = 0; - } - else - { - v250 = v249 + 1; - } - *(_DWORD *)(v2 + 256) = v250; - *(_BYTE *)(v2 + v249) = 123; - *(_BYTE *)(v2 + 260) = 123; - d_print_comp(v248, 17); - result = *(_DWORD *)(v2 + 256); - if ( result != 255 ) - goto LABEL_365; - goto LABEL_437; - case 0x32: - v241 = *(_DWORD *)(a2 + 12); - result = *(_DWORD *)(result + 256); - v242 = "perator"; - v243 = 111; - v244 = *(_DWORD *)(v241 + 8); - while ( 1 ) - { - if ( result == 255 ) - { - v246 = *(_DWORD *)(v2 + 268); - v442 = v243; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v246); - ++*(_DWORD *)(v2 + 296); - v243 = v442; - v245 = 0; - result = 1; - } - else - { - v245 = result++; - } - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v245) = v243; - *(_BYTE *)(v2 + 260) = v243; - if ( v242 == "" ) - break; - v243 = *v242++; - } - v288 = *(char **)(v241 + 4); - if ( (unsigned __int8)(*v288 - 97) <= 0x19u ) - { - if ( result == 255 ) - { - v393 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v393); - ++*(_DWORD *)(v2 + 296); - v288 = *(char **)(v241 + 4); - result = 0; - } - *(_DWORD *)(v2 + 256) = result + 1; - *(_BYTE *)(v2 + result) = 32; - *(_BYTE *)(v2 + 260) = 32; - } - v289 = v244 - 1; - if ( v288[v244 - 1] != 32 ) - v289 = v244; - if ( v289 ) - { - result = *(_DWORD *)(v2 + 256); - v290 = &v288[v289]; - do - { - v292 = *v288; - if ( result == 255 ) - { - v293 = *(_DWORD *)(v2 + 268); - v448 = *v288; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v293); - ++*(_DWORD *)(v2 + 296); - v292 = v448; - v291 = 0; - result = 1; - } - else - { - v291 = result++; - } - ++v288; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v291) = v292; - *(_BYTE *)(v2 + 260) = v292; - } - while ( v290 != v288 ); - } - return result; - case 0x33: - v236 = *(_DWORD *)(result + 256); - v237 = "perator "; - for ( i16 = 111; ; i16 = *v237++ ) - { - if ( v236 == 255 ) - { - v240 = *(_DWORD *)(v2 + 268); - v441 = i16; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v240); - ++*(_DWORD *)(v2 + 296); - i16 = v441; - v239 = 0; - v236 = 1; - } - else - { - v239 = v236++; - } - *(_DWORD *)(v2 + 256) = v236; - *(_BYTE *)(v2 + v239) = i16; - *(_BYTE *)(v2 + 260) = i16; - if ( v237 == "" ) - break; - } - goto LABEL_14; - case 0x35: - v231 = *(_DWORD *)(result + 256); - v232 = "perator "; - for ( i17 = 111; ; i17 = *v232++ ) - { - if ( v231 == 255 ) - { - v235 = *(_DWORD *)(v2 + 268); - v440 = i17; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v235); - ++*(_DWORD *)(v2 + 296); - i17 = v440; - v234 = 0; - v231 = 1; - } - else - { - v234 = v231++; - } - *(_DWORD *)(v2 + 256) = v231; - *(_BYTE *)(v2 + v234) = i17; - *(_BYTE *)(v2 + 260) = i17; - if ( v232 == "" ) - break; - } - return d_print_conversion(v2, (int)v5); - case 0x36: - v255 = *(_DWORD **)(a2 + 12); - return d_print_expr_op(v2, v255); - case 0x37: - v252 = *(_DWORD **)(a2 + 12); - v214 = *(int **)(a2 + 16); - if ( *v252 != 50 ) - { - if ( *v252 == 52 ) - { - v253 = *(_DWORD *)(result + 256); - if ( v253 == 255 ) - { - v396 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v396); - ++*(_DWORD *)(v2 + 296); - v253 = 0; - } - *(_DWORD *)(v2 + 256) = v253 + 1; - *(_BYTE *)(v2 + v253) = 40; - *(_BYTE *)(v2 + 260) = 40; - d_print_comp(v252[3], 17); - v254 = *(_DWORD *)(v2 + 256); - if ( v254 == 255 ) - { - v395 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v395); - ++*(_DWORD *)(v2 + 296); - v254 = 0; - } - *(_DWORD *)(v2 + 256) = v254 + 1; - *(_BYTE *)(v2 + v254) = 41; - *(_BYTE *)(v2 + 260) = 41; - } - else - { - d_print_expr_op(result, v252); - } - return d_print_subexpr(v2, v214); - } - v354 = *(unsigned __int8 **)v252[3]; - v355 = *v354 - 97; - if ( *v354 == 97 ) - { - v355 = v354[1] - 100; - if ( v354[1] == 100 ) - v355 = v354[2]; - } - v356 = *v214; - if ( !v355 && v356 == 3 ) - { - if ( *(_DWORD *)v214[3] == 1 && *(_DWORD *)v214[4] == 41 ) - v214 = (int *)v214[3]; - } - else if ( v356 == 57 ) - { - d_print_subexpr(result, (_DWORD *)v214[3]); - v255 = v252; - return d_print_expr_op(v2, v255); - } - if ( *v354 == 115 ) - { - if ( v354[1] == 90 && !v354[2] ) - { - for ( i18 = d_find_pack(result, v214, v354[2]); i18; ++v358 ) - { - if ( *i18 != 47 ) - break; - if ( !i18[3] ) - break; - i18 = (_DWORD *)i18[4]; - } - return d_append_num(v2, v358); - } - if ( v354[1] == 80 ) - { - v360 = 0; - if ( !v354[2] ) - { - do - { - if ( *v214 != 47 ) - break; - v361 = v214[3]; - if ( !v361 ) - break; - if ( *(_DWORD *)v361 == 75 ) - { - pack = d_find_pack(v2, *(_DWORD **)(v361 + 12), v360); - for ( i19 = 0; pack; ++i19 ) - { - if ( *pack != 47 ) - break; - if ( !pack[3] ) - break; - pack = (_DWORD *)pack[4]; - } - v360 = i19 + v363; - } - else - { - ++v360; - } - v214 = (int *)v214[4]; - } - while ( v214 ); - v383 = Str; - sprintf_constprop_0(Str, (int)"%d", v360); - result = strlen((const char *)Str); - v384 = result; - if ( result ) - { - result = *(_DWORD *)(v2 + 256); - v385 = (FILE *)((char *)Str + v384); - do - { - v387 = (char)v383->_ptr; - if ( result == 255 ) - { - v388 = *(_DWORD *)(v2 + 268); - v458 = (char)v383->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v388); - ++*(_DWORD *)(v2 + 296); - v387 = v458; - v386 = 0; - result = 1; - } - else - { - v386 = result++; - } - v383 = (FILE *)((char *)v383 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v386) = v387; - *(_BYTE *)(v2 + 260) = v387; - } - while ( v383 != v385 ); - } - return result; - } - } - } - d_print_expr_op(result, v252); - v359 = *v354; - if ( v359 == 103 && v354[1] == 115 ) - { - v8 = v214; - if ( !v354[2] ) - return d_print_comp(v8, 17); - } - if ( v359 == 115 && v354[1] == 116 && !v354[2] ) - { - d_append_char(v2, 40); - d_print_comp(v214, 17); - v25 = 41; - return d_append_char(v2, v25); - } - return d_print_subexpr(v2, v214); - case 0x38: - result = *(_DWORD *)(a2 + 16); - if ( *(_DWORD *)result != 57 ) - goto LABEL_7; - v140 = *(_DWORD *)(a2 + 12); - v141 = **(char ***)(v140 + 12); - if ( v141[1] == 99 ) - { - v380 = *v141; - if ( (unsigned __int8)(v380 - 99) <= 1u || (unsigned __int8)(v380 - 114) <= 1u ) - { - d_print_expr_op(v2, (_DWORD *)v140); - d_append_char(v2, 60); - d_print_comp(*(_DWORD *)(v5[4] + 12), 17); - d_append_string(v2, ">("); - d_print_comp(*(_DWORD *)(v5[4] + 16), 17); - v25 = 41; - return d_append_char(v2, v25); - } - } - result = d_maybe_print_fold_expression(v2, (int)v5); - if ( !result ) - { - v142 = (_DWORD *)v5[3]; - if ( *v142 == 50 ) - { - v392 = v142[3]; - if ( *(_DWORD *)(v392 + 8) == 1 && **(_BYTE **)(v392 + 4) == 62 ) - { - d_append_char(v2, 40); - v142 = (_DWORD *)v5[3]; - } - } - v143 = *(unsigned __int8 **)v142[3]; - v144 = *v143 - 99; - if ( *v143 == 99 ) - { - v144 = v143[1] - 108; - if ( v143[1] == 108 ) - v144 = v143[2]; - } - v145 = *(_DWORD *)(v5[4] + 12); - if ( !v144 && *(_DWORD *)v145 == 3 ) - { - if ( **(_DWORD **)(v145 + 16) != 41 ) - *(_DWORD *)(v2 + 280) = 1; - d_print_subexpr(v2, *(_DWORD **)(v145 + 12)); - } - else - { - d_print_subexpr(v2, (_DWORD *)v145); - } - v146 = v5[3]; - v147 = **(unsigned __int8 ***)(v146 + 12); - v148 = *v147; - if ( v148 == 105 && v147[1] == 120 && !v147[2] ) - { - d_append_char(v2, 91); - d_print_comp(*(_DWORD *)(v5[4] + 16), 17); - d_append_char(v2, 93); - } - else - { - if ( v148 != 99 || v147[1] != 108 || v147[2] ) - d_print_expr_op(v2, (_DWORD *)v146); - d_print_subexpr(v2, *(_DWORD **)(v5[4] + 16)); - } - result = v5[3]; - if ( *(_DWORD *)result == 50 ) - { - result = *(_DWORD *)(result + 12); - if ( *(_DWORD *)(result + 8) == 1 ) - { - result = *(_DWORD *)(result + 4); - v25 = 41; - if ( *(_BYTE *)result == 62 ) - return d_append_char(v2, v25); - } - } - } - return result; - case 0x3A: - result = *(_DWORD *)(a2 + 16); - if ( *(_DWORD *)result != 59 ) - goto LABEL_7; - result = *(_DWORD *)(result + 16); - if ( *(_DWORD *)result != 60 ) - goto LABEL_7; - result = d_maybe_print_fold_expression(v2, a2); - if ( result ) - return result; - v209 = v5[4]; - v210 = v5[3]; - v211 = *(_DWORD **)(v209 + 12); - v212 = *(_DWORD *)(v209 + 16); - v213 = *(_DWORD **)(v212 + 12); - v214 = *(int **)(v212 + 16); - v436 = v211; - if ( !strcmp(**(const char ***)(v210 + 12), "qu") ) - { - d_print_subexpr(v2, v436); - d_print_expr_op(v2, (_DWORD *)v210); - d_print_subexpr(v2, v213); - d_append_string(v2, " : "); - } - else - { - d_append_string(v2, "new "); - if ( v436[3] ) - { - d_print_subexpr(v2, v436); - d_append_char(v2, 32); - } - result = d_print_comp(v213, 17); - if ( !v214 ) - return result; - } - return d_print_subexpr(v2, v214); - case 0x3D: - case 0x3E: - v19 = *(_DWORD **)(a2 + 12); - if ( *v19 == 39 ) - { - v20 = *(_DWORD *)(v19[3] + 16); - if ( v20 > 6 ) - { - if ( v20 == 7 ) - { - v325 = v5[4]; - if ( !*(_DWORD *)v325 && *(_DWORD *)(v325 + 16) == 1 && v4 == 61 ) - { - v326 = **(_BYTE **)(v325 + 12); - if ( v326 == 48 ) - { - v391 = "false"; - return d_append_string(v2, v391); - } - if ( v326 == 49 ) - { - v391 = "true"; - return d_append_string(v2, v391); - } - } - } - } - else if ( v20 ) - { - v373 = (_DWORD *)v5[4]; - if ( !*v373 ) - { - if ( v4 == 62 ) - { - d_append_char(v2, 45); - v373 = (_DWORD *)v5[4]; - } - result = d_print_comp(v373, 17); - switch ( v20 ) - { - case 2u: - v25 = 117; - return d_append_char(v2, v25); - case 3u: - v25 = 108; - return d_append_char(v2, v25); - case 4u: - v391 = "ul"; - return d_append_string(v2, v391); - case 5u: - v391 = "ll"; - return d_append_string(v2, v391); - case 6u: - v391 = (const char *)&off_558CF7; - return d_append_string(v2, v391); - default: - return result; - } - return result; - } - } - } - else - { - v20 = 0; - } - v21 = *(_DWORD *)(v2 + 256); - if ( v21 == 255 ) - { - v372 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v372); - v19 = (_DWORD *)v5[3]; - v22 = 1; - v21 = 0; - ++*(_DWORD *)(v2 + 296); - } - else - { - v22 = v21 + 1; - } - *(_DWORD *)(v2 + 256) = v22; - *(_BYTE *)(v2 + v21) = 40; - *(_BYTE *)(v2 + 260) = 40; - d_print_comp(v19, 17); - v23 = *(_DWORD *)(v2 + 256); - if ( v23 == 255 ) - { - v369 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v369); - ++*(_DWORD *)(v2 + 296); - v24 = 1; - v23 = 0; - } - else - { - v24 = v23 + 1; - } - *(_DWORD *)(v2 + 256) = v24; - *(_BYTE *)(v2 + v23) = 41; - *(_BYTE *)(v2 + 260) = 41; - if ( *v5 == 62 ) - d_append_char(v2, 45); - if ( v20 != 8 ) - { -LABEL_14: - v8 = (int *)v5[4]; - return d_print_comp(v8, 17); - } - d_append_char(v2, 91); - d_print_comp(v5[4], 17); - v25 = 93; - return d_append_char(v2, v25); - case 0x3F: - v199 = *(_DWORD *)(result + 256); - v200 = "ava resource "; - for ( i20 = 106; ; i20 = *v200++ ) - { - if ( v199 == 255 ) - { - v203 = *(_DWORD *)(v2 + 268); - v434 = i20; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v203); - ++*(_DWORD *)(v2 + 296); - i20 = v434; - v202 = 0; - v199 = 1; - } - else - { - v202 = v199++; - } - *(_DWORD *)(v2 + 256) = v199; - *(_BYTE *)(v2 + v202) = i20; - *(_BYTE *)(v2 + 260) = i20; - if ( v200 == "" ) - break; - } - goto LABEL_9; - case 0x40: - d_print_comp(*(_DWORD *)(a2 + 12), 17); - goto LABEL_14; - case 0x41: - result = *(_DWORD *)(result + 256); - v120 = *(_DWORD *)(a2 + 12); - if ( result == 255 ) - { - v366 = *(_DWORD *)(v2 + 268); - v457 = *(_DWORD *)(a2 + 12); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v366); - ++*(_DWORD *)(v2 + 296); - LOBYTE(v120) = v457; - result = 0; - v121 = 1; - } - else - { - v121 = result + 1; - } - *(_DWORD *)(v2 + 256) = v121; - *(_BYTE *)(v2 + result) = v120; - *(_BYTE *)(v2 + 260) = v120; - return result; - case 0x42: - v220 = Str; - sprintf_constprop_0(Str, (int)"%d", *(_DWORD *)(a2 + 12)); - result = strlen((const char *)Str); - v221 = result; - if ( result ) - { - result = *(_DWORD *)(v2 + 256); - v222 = (FILE *)((char *)Str + v221); - do - { - v224 = (char)v220->_ptr; - if ( result == 255 ) - { - v225 = *(_DWORD *)(v2 + 268); - v438 = (char)v220->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v225); - ++*(_DWORD *)(v2 + 296); - v224 = v438; - v223 = 0; - result = 1; - } - else - { - v223 = result++; - } - v220 = (FILE *)((char *)v220 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v223) = v224; - *(_BYTE *)(v2 + 260) = v224; - } - while ( v222 != v220 ); - } - return result; - case 0x43: - v215 = *(_DWORD *)(result + 256); - v216 = "ecltype ("; - for ( i21 = 100; ; i21 = *v216++ ) - { - if ( v215 == 255 ) - { - v219 = *(_DWORD *)(v2 + 268); - v437 = i21; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v219); - ++*(_DWORD *)(v2 + 296); - i21 = v437; - v218 = 0; - v215 = 1; - } - else - { - v218 = v215++; - } - *(_DWORD *)(v2 + 256) = v215; - *(_BYTE *)(v2 + v218) = i21; - *(_BYTE *)(v2 + 260) = i21; - if ( v216 == "" ) - break; - } - d_print_comp(v5[3], 17); - result = *(_DWORD *)(v2 + 256); - if ( result == 255 ) - { - v368 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v368); - ++*(_DWORD *)(v2 + 296); - v308 = 1; - result = 0; - } - else - { - v308 = result + 1; - } - *(_DWORD *)(v2 + 256) = v308; - *(_BYTE *)(v2 + result) = 41; - *(_BYTE *)(v2 + 260) = 41; - return result; - case 0x44: - v226 = *(_DWORD *)(result + 256); - v227 = "lobal constructors keyed to "; - for ( i22 = 103; ; i22 = *v227++ ) - { - if ( v226 == 255 ) - { - v230 = *(_DWORD *)(v2 + 268); - v439 = i22; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v230); - ++*(_DWORD *)(v2 + 296); - i22 = v439; - v229 = 0; - v226 = 1; - } - else - { - v229 = v226++; - } - *(_DWORD *)(v2 + 256) = v226; - *(_BYTE *)(v2 + v229) = i22; - *(_BYTE *)(v2 + 260) = i22; - if ( v227 == "" ) - break; - } - goto LABEL_9; - case 0x45: - v256 = *(_DWORD *)(result + 256); - v257 = "lobal destructors keyed to "; - for ( i23 = 103; ; i23 = *v257++ ) - { - if ( v256 == 255 ) - { - v260 = *(_DWORD *)(v2 + 268); - v443 = i23; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v260); - ++*(_DWORD *)(v2 + 296); - i23 = v443; - v259 = 0; - v256 = 1; - } - else - { - v259 = v256++; - } - *(_DWORD *)(v2 + 256) = v256; - *(_BYTE *)(v2 + v259) = i23; - *(_BYTE *)(v2 + 260) = i23; - if ( v257 == "" ) - break; - } - goto LABEL_9; - case 0x46: - v204 = *(_DWORD *)(result + 256); - v205 = "lambda("; - for ( i24 = 123; ; i24 = *v205++ ) - { - if ( v204 == 255 ) - { - v208 = *(_DWORD *)(v2 + 268); - v435 = i24; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v208); - ++*(_DWORD *)(v2 + 296); - i24 = v435; - v207 = 0; - v204 = 1; - } - else - { - v207 = v204++; - } - *(_DWORD *)(v2 + 256) = v204; - *(_BYTE *)(v2 + v207) = i24; - *(_BYTE *)(v2 + 260) = i24; - if ( v205 == "" ) - break; - } - v294 = v5[3]; - v295 = ")#"; - ++*(_DWORD *)(v2 + 288); - d_print_comp(v294, 17); - v296 = *(_DWORD *)(v2 + 256); - v297 = 41; - --*(_DWORD *)(v2 + 288); - while ( 1 ) - { - if ( v296 == 255 ) - { - v299 = *(_DWORD *)(v2 + 268); - v449 = v297; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v299); - ++*(_DWORD *)(v2 + 296); - v297 = v449; - v298 = 0; - v296 = 1; - } - else - { - v298 = v296++; - } - ++v295; - *(_DWORD *)(v2 + 256) = v296; - *(_BYTE *)(v2 + v298) = v297; - *(_BYTE *)(v2 + 260) = v297; - if ( v295 == "" ) - break; - v297 = *v295; - } - v300 = v5[4]; - v301 = Str; - sprintf_constprop_0(Str, (int)"%d", v300 + 1); - v302 = strlen((const char *)Str); - result = *(_DWORD *)(v2 + 256); - if ( v302 ) - { - v303 = (FILE *)((char *)Str + v302); - do - { - v305 = (char)v301->_ptr; - if ( result == 255 ) - { - v306 = *(_DWORD *)(v2 + 268); - v450 = (char)v301->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v306); - ++*(_DWORD *)(v2 + 296); - v305 = v450; - v304 = 0; - result = 1; - } - else - { - v304 = result++; - } - v301 = (FILE *)((char *)v301 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v304) = v305; - *(_BYTE *)(v2 + 260) = v305; - } - while ( v303 != v301 ); - } - goto LABEL_436; - case 0x48: - v90 = *(_DWORD *)(result + 256); - v91 = "unnamed type#"; - for ( i25 = 123; ; i25 = *v91++ ) - { - if ( v90 == 255 ) - { - v94 = *(_DWORD *)(v2 + 268); - v418 = i25; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v94); - ++*(_DWORD *)(v2 + 296); - i25 = v418; - v93 = 0; - v90 = 1; - } - else - { - v93 = v90++; - } - *(_DWORD *)(v2 + 256) = v90; - *(_BYTE *)(v2 + v93) = i25; - *(_BYTE *)(v2 + 260) = i25; - if ( v91 == "" ) - break; - } - v314 = v5[3]; - v315 = Str; - sprintf_constprop_0(Str, (int)"%d", v314 + 1); - v316 = strlen((const char *)Str); - result = *(_DWORD *)(v2 + 256); - if ( v316 ) - { - v317 = (FILE *)((char *)Str + v316); - do - { - v319 = (char)v315->_ptr; - if ( result == 255 ) - { - v320 = *(_DWORD *)(v2 + 268); - v452 = (char)v315->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v320); - ++*(_DWORD *)(v2 + 296); - v319 = v452; - v318 = 0; - result = 1; - } - else - { - v318 = result++; - } - v315 = (FILE *)((char *)v315 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v318) = v319; - *(_BYTE *)(v2 + 260) = v319; - } - while ( v317 != v315 ); - } -LABEL_436: - if ( result == 255 ) - { -LABEL_437: - v307 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v307); - ++*(_DWORD *)(v2 + 296); - v251 = 1; - result = 0; - } - else - { -LABEL_365: - v251 = result + 1; - } - *(_DWORD *)(v2 + 256) = v251; - *(_BYTE *)(v2 + result) = 125; - *(_BYTE *)(v2 + 260) = 125; - return result; - case 0x49: - v85 = *(_DWORD *)(result + 256); - v86 = "ransaction clone for "; - for ( i26 = 116; ; i26 = *v86++ ) - { - if ( v85 == 255 ) - { - v89 = *(_DWORD *)(v2 + 268); - v417 = i26; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v89); - ++*(_DWORD *)(v2 + 296); - i26 = v417; - v88 = 0; - v85 = 1; - } - else - { - v88 = v85++; - } - *(_DWORD *)(v2 + 256) = v85; - *(_BYTE *)(v2 + v88) = i26; - *(_BYTE *)(v2 + 260) = i26; - if ( v86 == "" ) - break; - } - goto LABEL_9; - case 0x4A: - v80 = *(_DWORD *)(result + 256); - v81 = "on-transaction clone for "; - for ( i27 = 110; ; i27 = *v81++ ) - { - if ( v80 == 255 ) - { - v84 = *(_DWORD *)(v2 + 268); - v416 = i27; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v84); - ++*(_DWORD *)(v2 + 296); - i27 = v416; - v83 = 0; - v80 = 1; - } - else - { - v83 = v80++; - } - *(_DWORD *)(v2 + 256) = v80; - *(_BYTE *)(v2 + v83) = i27; - *(_BYTE *)(v2 + 260) = i27; - if ( v81 == "" ) - break; - } - goto LABEL_9; - case 0x4B: - v74 = d_find_pack(result, *(_DWORD **)(a2 + 12), 0); - if ( !v74 ) - { - d_print_subexpr(v2, (_DWORD *)v5[3]); - v391 = "..."; - return d_append_string(v2, v391); - } - while ( *v74 == 47 && v74[3] ) - { - v74 = (_DWORD *)v74[4]; - if ( !v74 ) - { - v465 = v75; - v462 = v75 + 1; - v464 = (FILE *)v5[3]; - do - { -LABEL_135: - *(_DWORD *)(v2 + 292) = v3; - result = d_print_comp(v464, 17); - if ( v465 > v3 ) - { - result = *(_DWORD *)(v2 + 256); - v76 = ", "; - for ( i28 = 44; ; i28 = *v76 ) - { - if ( result == 255 ) - { - v79 = *(_DWORD *)(v2 + 268); - v415 = i28; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v79); - ++*(_DWORD *)(v2 + 296); - i28 = v415; - v78 = 0; - result = 1; - } - else - { - v78 = result++; - } - ++v76; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v78) = i28; - *(_BYTE *)(v2 + 260) = i28; - if ( "" == v76 ) - break; - } - } - ++v3; - } - while ( v3 < v462 ); - return result; - } - ++v75; - } - result = v5[3]; - v462 = v75; - v464 = (FILE *)result; - if ( !v75 ) - return result; - v465 = v75 - 1; - goto LABEL_135; - case 0x4C: - v69 = "[abi:"; - d_print_comp(*(_DWORD *)(a2 + 12), 17); - v70 = *(_DWORD *)(v2 + 256); - for ( i29 = 91; ; i29 = *v69 ) - { - if ( v70 == 255 ) - { - v73 = *(_DWORD *)(v2 + 268); - v414 = i29; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v73); - ++*(_DWORD *)(v2 + 296); - i29 = v414; - v72 = 0; - v70 = 1; - } - else - { - v72 = v70++; - } - ++v69; - *(_DWORD *)(v2 + 256) = v70; - *(_BYTE *)(v2 + v72) = i29; - *(_BYTE *)(v2 + 260) = i29; - if ( v69 == "" ) - break; - } - goto LABEL_394; - case 0x4E: - v122 = "[clone "; - d_print_comp(*(_DWORD *)(a2 + 12), 17); - v123 = *(_DWORD *)(v2 + 256); - for ( i30 = 32; ; i30 = *v122++ ) - { - if ( v123 == 255 ) - { - v126 = *(_DWORD *)(v2 + 268); - v424 = i30; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v126); - ++*(_DWORD *)(v2 + 296); - i30 = v424; - v125 = 0; - v123 = 1; - } - else - { - v125 = v123++; - } - *(_DWORD *)(v2 + 256) = v123; - *(_BYTE *)(v2 + v125) = i30; - *(_BYTE *)(v2 + 260) = i30; - if ( v122 == "" ) - break; - } -LABEL_394: - d_print_comp(v5[4], 17); - result = *(_DWORD *)(v2 + 256); - if ( result == 255 ) - { - v350 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v350); - ++*(_DWORD *)(v2 + 296); - v273 = 1; - result = 0; - } - else - { - v273 = result + 1; - } - *(_DWORD *)(v2 + 256) = v273; - *(_BYTE *)(v2 + result) = 93; - *(_BYTE *)(v2 + 260) = 93; - return result; - default: - goto LABEL_7; - } - do - { - if ( result == *v375 ) - { - v377 = *(_DWORD **)(v2 + 300); - v378 = v377; - if ( !v377 ) - { -LABEL_606: - v394 = *(_DWORD *)(v2 + 272); - *(_DWORD *)(v2 + 272) = v375[1]; - v460 = v394; - v3 = 1; - result = (unsigned int)d_lookup_template_argument(v2, result); - if ( !result ) - goto LABEL_607; -LABEL_578: - v18 = *(char **)result; - if ( *(_DWORD *)result == 47 ) - { - v379 = *(_DWORD *)(v2 + 292); - if ( v379 < 0 ) - { - v405 = *(char **)(v2 + 276); - if ( *v5 != 47 ) - goto LABEL_36; - goto LABEL_463; - } - result = (unsigned int)d_index_template_argument_part_0((_DWORD *)result, v379); - if ( !result ) - { - if ( !v3 ) - goto LABEL_7; -LABEL_607: - result = v460; - *(_DWORD *)(v2 + 272) = v460; - goto LABEL_7; - } - v18 = *(char **)result; - } -LABEL_33: - v405 = *(char **)(v2 + 276); - if ( v18 != (char *)35 && (char *)*v5 != v18 ) - { - if ( v18 == (char *)36 ) - { - v13 = *(_DWORD *)(result + 12); - Str[0]._cnt = (int)v5; - Str[0]._base = 0; - Str[0]._ptr = v405; - *(_DWORD *)(v2 + 276) = Str; - Str[0]._flag = *(_DWORD *)(v2 + 272); - if ( v13 ) - goto LABEL_18; - goto LABEL_17; - } -LABEL_36: - v11 = v405; -LABEL_16: - Str[0]._ptr = v11; - *(_DWORD *)(v2 + 276) = Str; - v12 = *(_DWORD *)(v2 + 272); - Str[0]._cnt = (int)v5; - Str[0]._base = 0; - Str[0]._flag = v12; -LABEL_17: - v13 = v5[3]; -LABEL_18: - d_print_comp(v13, 17); - if ( !Str[0]._base ) - d_print_mod(v2, v5); - result = (unsigned int)Str[0]._ptr; - *(_DWORD *)(v2 + 276) = Str[0]._ptr; - if ( v3 ) - { - result = v460; - *(_DWORD *)(v2 + 272) = v460; - } - return result; - } -LABEL_463: - v5 = (_DWORD *)result; - goto LABEL_36; - } - while ( *v378 != result && (v377 == v378 || (_DWORD *)*v378 != v5) ) - { - v378 = (_DWORD *)v378[1]; - if ( !v378 ) - goto LABEL_606; - } -LABEL_577: - v3 = 0; - result = (unsigned int)d_lookup_template_argument(v2, result); - if ( !result ) - goto LABEL_7; - goto LABEL_578; - } - ++v376; - v375 += 2; - } - while ( v376 != v374 ); -LABEL_621: - if ( *(_DWORD *)(v2 + 312) <= v374 ) - goto LABEL_7; - v398 = *(_DWORD **)(v2 + 272); - v399 = *(_DWORD *)(v2 + 304) + 8 * v374; - *(_DWORD *)(v2 + 308) = v374 + 1; - v400 = (int *)(v399 + 4); - *(v400 - 1) = result; - if ( !v398 ) - { -LABEL_630: - *v400 = 0; - goto LABEL_577; - } - v401 = *(_DWORD *)(v2 + 320); - v464 = (FILE *)result; - v459 = *(_DWORD *)(v2 + 324); - while ( v459 > v401 ) - { - result = v398[1]; - v402 = *(_DWORD *)(v2 + 316) + 8 * v401++; - *(_DWORD *)(v2 + 320) = v401; - *(_DWORD *)(v402 + 4) = result; - *v400 = v402; - v398 = (_DWORD *)*v398; - v400 = (int *)v402; - if ( !v398 ) - { - result = (unsigned int)v464; - goto LABEL_630; - } - } -LABEL_7: - *(_DWORD *)(v2 + 280) = 1; - return result; -} -// 45CF43: conditional instruction was optimized away because eax.4==73 -// 45A7BF: variable 'v460' is possibly undefined -// 45AF70: variable 'v75' is possibly undefined -// 45CEBA: variable 'v358' is possibly undefined -// 45CFAE: variable 'v363' is possibly undefined -// 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); -// 558CF7: using guessed type void *off_558CF7; -// 559B20: using guessed type void **off_559B20; - -//----- (0045D800) -------------------------------------------------------- -int __usercall d_print_comp@(int result@, int a2@) -{ - _DWORD *v2; // esi - int v4; // edx - int v5; // eax - int v6; // [esp+8h] [ebp-14h] BYREF - int v7; // [esp+Ch] [ebp-10h] - - v2 = (_DWORD *)result; - if ( a2 && (result = *(_DWORD *)(a2 + 4), result <= 1) && (v4 = v2[71], v4 <= 1024) ) - { - v6 = a2; - *(_DWORD *)(a2 + 4) = result + 1; - v5 = v2[75]; - v2[71] = v4 + 1; - v7 = v5; - v2[75] = &v6; - d_print_comp_inner((unsigned int)v2, a2); - result = v7; - v2[75] = v7; - --*(_DWORD *)(a2 + 4); - --v2[71]; - } - else - { - v2[70] = 1; - } - return result; -} - -//----- (0045D890) -------------------------------------------------------- -int __usercall d_print_mod@(int a1@, _DWORD *a2@) -{ - _DWORD *v2; // esi - int result; // eax - const char *v5; // esi - char i; // dl - int v7; // ecx - int v8; // eax - const char *v9; // esi - char j; // dl - int v11; // ecx - int v12; // eax - const char *v13; // esi - char k; // dl - int v15; // ecx - int v16; // eax - const char *v17; // edi - char i1; // dl - int v19; // ecx - int v20; // eax - int v21; // edx - int v22; // edx - int v23; // eax - int v24; // edx - int v25; // edx - const char *v26; // esi - char m; // dl - int v28; // ecx - int v29; // eax - const char *v30; // esi - char n; // dl - int v32; // ecx - int v33; // eax - const char *v34; // esi - char ii; // dl - int v36; // ecx - int v37; // eax - int v38; // ecx - const char *v39; // esi - char jj; // dl - int v41; // ecx - int v42; // eax - int v43; // eax - const char *v44; // edi - char kk; // dl - int v46; // ecx - int v47; // eax - const char *v48; // esi - char mm; // dl - int v50; // ecx - int v51; // eax - const char *v52; // edi - char nn; // dl - int v54; // ecx - int v55; // eax - int v56; // ecx - int v57; // edx - int v58; // edx - int v59; // eax - int v60; // edx - int v61; // edx - int v62; // eax - int v63; // eax - int v64; // eax - int v65; // eax - int v66; // eax - int v67; // eax - int v68; // eax - int v69; // eax - char v70; // [esp+1Fh] [ebp-1Dh] - char v71; // [esp+1Fh] [ebp-1Dh] - char v72; // [esp+1Fh] [ebp-1Dh] - char v73; // [esp+1Fh] [ebp-1Dh] - char v74; // [esp+1Fh] [ebp-1Dh] - char v75; // [esp+1Fh] [ebp-1Dh] - char v76; // [esp+1Fh] [ebp-1Dh] - char v77; // [esp+1Fh] [ebp-1Dh] - char v78; // [esp+1Fh] [ebp-1Dh] - char v79; // [esp+1Fh] [ebp-1Dh] - char v80; // [esp+1Fh] [ebp-1Dh] - - v2 = a2; - switch ( *a2 ) - { - case 3: - a2 = (_DWORD *)a2[3]; - return d_print_comp(a2, 17); - case 0x19: - case 0x1C: - result = *(_DWORD *)(a1 + 256); - v5 = "restrict"; - for ( i = 32; ; i = *v5++ ) - { - if ( result == 255 ) - { - v8 = *(_DWORD *)(a1 + 268); - v70 = i; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v8); - ++*(_DWORD *)(a1 + 296); - i = v70; - v7 = 0; - result = 1; - } - else - { - v7 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v7) = i; - *(_BYTE *)(a1 + 260) = i; - if ( v5 == "" ) - break; - } - return result; - case 0x1A: - case 0x1D: - result = *(_DWORD *)(a1 + 256); - v9 = "volatile"; - for ( j = 32; ; j = *v9++ ) - { - if ( result == 255 ) - { - v12 = *(_DWORD *)(a1 + 268); - v71 = j; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v12); - ++*(_DWORD *)(a1 + 296); - j = v71; - v11 = 0; - result = 1; - } - else - { - v11 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v11) = j; - *(_BYTE *)(a1 + 260) = j; - if ( v9 == "" ) - break; - } - return result; - case 0x1B: - case 0x1E: - result = *(_DWORD *)(a1 + 256); - v13 = "const"; - for ( k = 32; ; k = *v13++ ) - { - if ( result == 255 ) - { - v16 = *(_DWORD *)(a1 + 268); - v72 = k; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v16); - ++*(_DWORD *)(a1 + 296); - k = v72; - v15 = 0; - result = 1; - } - else - { - v15 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v15) = k; - *(_BYTE *)(a1 + 260) = k; - if ( v13 == "" ) - break; - } - return result; - case 0x1F: - v21 = *(_DWORD *)(a1 + 256); - if ( v21 == 255 ) - { - v65 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v65); - *(_BYTE *)a1 = 32; - result = 1; - ++*(_DWORD *)(a1 + 296); -LABEL_38: - v25 = result + 1; - goto LABEL_39; - } - result = v21 + 1; - *(_DWORD *)(a1 + 256) = v21 + 1; - *(_BYTE *)(a1 + v21) = 32; - *(_BYTE *)(a1 + 260) = 32; -LABEL_37: - if ( result != 255 ) - goto LABEL_38; - v67 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v67); - ++*(_DWORD *)(a1 + 296); - v25 = 1; - result = 0; -LABEL_39: - *(_DWORD *)(a1 + 256) = v25; - *(_BYTE *)(a1 + result) = 38; - *(_BYTE *)(a1 + 260) = 38; - return result; - case 0x20: - v22 = *(_DWORD *)(a1 + 256); - if ( v22 == 255 ) - { - v64 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v64); - ++*(_DWORD *)(a1 + 296); - result = 1; - v22 = 0; - } - else - { - result = v22 + 1; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v22) = 32; - *(_BYTE *)(a1 + 260) = 32; - goto LABEL_42; - case 0x21: - v23 = *(_DWORD *)(a1 + 256); - if ( v23 == 255 ) - { - v63 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v63); - ++*(_DWORD *)(a1 + 296); - v24 = 1; - v23 = 0; - } - else - { - v24 = v23 + 1; - } - *(_DWORD *)(a1 + 256) = v24; - *(_BYTE *)(a1 + v23) = 32; - *(_BYTE *)(a1 + 260) = 32; - a2 = (_DWORD *)v2[4]; - return d_print_comp(a2, 17); - case 0x22: - result = *(_DWORD *)(a1 + 256); - if ( result == 255 ) - { - v69 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v69); - ++*(_DWORD *)(a1 + 296); - v61 = 1; - result = 0; - } - else - { - v61 = result + 1; - } - *(_DWORD *)(a1 + 256) = v61; - *(_BYTE *)(a1 + result) = 42; - *(_BYTE *)(a1 + 260) = 42; - return result; - case 0x23: - result = *(_DWORD *)(a1 + 256); - goto LABEL_37; - case 0x24: - result = *(_DWORD *)(a1 + 256); -LABEL_42: - v26 = "&&"; - for ( m = 38; ; m = *v26 ) - { - if ( result == 255 ) - { - v29 = *(_DWORD *)(a1 + 268); - v74 = m; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v29); - ++*(_DWORD *)(a1 + 296); - m = v74; - v28 = 0; - result = 1; - } - else - { - v28 = result++; - } - ++v26; - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v28) = m; - *(_BYTE *)(a1 + 260) = m; - if ( v26 == "" ) - break; - } - return result; - case 0x25: - result = *(_DWORD *)(a1 + 256); - v30 = "_Complex"; - for ( n = 32; ; n = *v30++ ) - { - if ( result == 255 ) - { - v33 = *(_DWORD *)(a1 + 268); - v75 = n; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v33); - ++*(_DWORD *)(a1 + 296); - n = v75; - v32 = 0; - result = 1; - } - else - { - v32 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v32) = n; - *(_BYTE *)(a1 + 260) = n; - if ( v30 == "" ) - break; - } - return result; - case 0x26: - result = *(_DWORD *)(a1 + 256); - v34 = "_Imaginary"; - for ( ii = 32; ; ii = *v34++ ) - { - if ( result == 255 ) - { - v37 = *(_DWORD *)(a1 + 268); - v76 = ii; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v37); - ++*(_DWORD *)(a1 + 296); - ii = v76; - v36 = 0; - result = 1; - } - else - { - v36 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v36) = ii; - *(_BYTE *)(a1 + 260) = ii; - if ( v34 == "" ) - break; - } - return result; - case 0x2B: - if ( *(_BYTE *)(a1 + 260) != 40 ) - { - v59 = *(_DWORD *)(a1 + 256); - if ( v59 == 255 ) - { - v68 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v68); - ++*(_DWORD *)(a1 + 296); - v60 = 1; - v59 = 0; - } - else - { - v60 = v59 + 1; - } - *(_DWORD *)(a1 + 256) = v60; - *(_BYTE *)(a1 + v59) = 32; - *(_BYTE *)(a1 + 260) = 32; - } - v38 = v2[3]; - v39 = "::*"; - d_print_comp(v38, 17); - result = *(_DWORD *)(a1 + 256); - for ( jj = 58; ; jj = *v39 ) - { - if ( result == 255 ) - { - v42 = *(_DWORD *)(a1 + 268); - v77 = jj; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v42); - ++*(_DWORD *)(a1 + 296); - jj = v77; - v41 = 0; - result = 1; - } - else - { - v41 = result++; - } - ++v39; - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v41) = jj; - *(_BYTE *)(a1 + 260) = jj; - if ( v39 == "" ) - break; - } - return result; - case 0x2D: - v43 = *(_DWORD *)(a1 + 256); - v44 = "__vector("; - for ( kk = 32; ; kk = *v44++ ) - { - if ( v43 == 255 ) - { - v47 = *(_DWORD *)(a1 + 268); - v78 = kk; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v47); - ++*(_DWORD *)(a1 + 296); - kk = v78; - v46 = 0; - v43 = 1; - } - else - { - v46 = v43++; - } - *(_DWORD *)(a1 + 256) = v43; - *(_BYTE *)(a1 + v46) = kk; - *(_BYTE *)(a1 + 260) = kk; - if ( v44 == "" ) - break; - } - v56 = v2[3]; - goto LABEL_90; - case 0x4D: - result = *(_DWORD *)(a1 + 256); - v48 = "transaction_safe"; - for ( mm = 32; ; mm = *v48++ ) - { - if ( result == 255 ) - { - v51 = *(_DWORD *)(a1 + 268); - v79 = mm; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v51); - ++*(_DWORD *)(a1 + 296); - mm = v79; - v50 = 0; - result = 1; - } - else - { - v50 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v50) = mm; - *(_BYTE *)(a1 + 260) = mm; - if ( v48 == "" ) - break; - } - return result; - case 0x4F: - result = *(_DWORD *)(a1 + 256); - v52 = "noexcept"; - for ( nn = 32; ; nn = *v52++ ) - { - if ( result == 255 ) - { - v55 = *(_DWORD *)(a1 + 268); - v80 = nn; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v55); - ++*(_DWORD *)(a1 + 296); - nn = v80; - v54 = 0; - result = 1; - } - else - { - v54 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v54) = nn; - *(_BYTE *)(a1 + 260) = nn; - if ( v52 == "" ) - break; - } - goto LABEL_85; - case 0x50: - result = *(_DWORD *)(a1 + 256); - v17 = "throw"; - for ( i1 = 32; ; i1 = *v17++ ) - { - if ( result == 255 ) - { - v20 = *(_DWORD *)(a1 + 268); - v73 = i1; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); - ++*(_DWORD *)(a1 + 296); - i1 = v73; - v19 = 0; - result = 1; - } - else - { - v19 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v19) = i1; - *(_BYTE *)(a1 + 260) = i1; - if ( v17 == "" ) - break; - } -LABEL_85: - v56 = v2[4]; - if ( v56 ) - { - if ( result == 255 ) - { - v62 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v62); - v56 = v2[4]; - v57 = 1; - result = 0; - ++*(_DWORD *)(a1 + 296); - } - else - { - v57 = result + 1; - } - *(_DWORD *)(a1 + 256) = v57; - *(_BYTE *)(a1 + result) = 40; - *(_BYTE *)(a1 + 260) = 40; -LABEL_90: - d_print_comp(v56, 17); - result = *(_DWORD *)(a1 + 256); - if ( result == 255 ) - { - v66 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v66); - ++*(_DWORD *)(a1 + 296); - v58 = 1; - result = 0; - } - else - { - v58 = result + 1; - } - *(_DWORD *)(a1 + 256) = v58; - *(_BYTE *)(a1 + result) = 41; - *(_BYTE *)(a1 + 260) = 41; - } - return result; - default: - return d_print_comp(a2, 17); - } -} -// 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); - -//----- (0045E1F0) -------------------------------------------------------- -unsigned int __usercall d_print_function_type@(unsigned int a1@, int a2@, _DWORD *a3) -{ - _DWORD *v5; // edx - char v6; // dl - int v7; // eax - int v8; // edx - int v9; // ebp - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // ecx - int v14; // edx - unsigned int result; // eax - int v16; // eax - int v17; // eax - int v18; // eax - int v19; // eax - int v20; // eax - - if ( !a3 ) - goto LABEL_17; - v5 = a3; - while ( 2 ) - { - if ( v5[2] ) - { -LABEL_17: - v9 = *(_DWORD *)(a1 + 276); - *(_DWORD *)(a1 + 276) = 0; - d_print_mod_list(a1, a3, 0); - v11 = *(_DWORD *)(a1 + 256); - if ( v11 != 255 ) - { -LABEL_11: - v12 = v11 + 1; - *(_DWORD *)(a1 + 256) = v11 + 1; - *(_BYTE *)(a1 + v11) = 40; - *(_BYTE *)(a1 + 260) = 40; - v13 = *(_DWORD *)(a2 + 16); - if ( !v13 ) - goto LABEL_13; - goto LABEL_12; - } - goto LABEL_18; - } - switch ( *(_DWORD *)v5[1] ) - { - case 0x19: - case 0x1A: - case 0x1B: - case 0x21: - case 0x25: - case 0x26: - case 0x2B: - v6 = *(_BYTE *)(a1 + 260); - v7 = *(_DWORD *)(a1 + 256); - goto LABEL_6; - case 0x22: - case 0x23: - case 0x24: - v6 = *(_BYTE *)(a1 + 260); - v7 = *(_DWORD *)(a1 + 256); - if ( (*(_BYTE *)(a1 + 260) & 0xFD) == 40 ) - { - if ( v7 == 255 ) - goto LABEL_22; - goto LABEL_8; - } -LABEL_6: - if ( v6 != 32 ) - { - if ( v7 == 255 ) - { - v20 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v20); - *(_BYTE *)a1 = 32; - v7 = 1; - ++*(_DWORD *)(a1 + 296); - goto LABEL_8; - } - *(_DWORD *)(a1 + 256) = v7 + 1; - *(_BYTE *)(a1 + v7++) = 32; - *(_BYTE *)(a1 + 260) = 32; - } - if ( v7 != 255 ) - { -LABEL_8: - v8 = v7 + 1; - goto LABEL_9; - } -LABEL_22: - v17 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v17); - ++*(_DWORD *)(a1 + 296); - v8 = 1; - v7 = 0; -LABEL_9: - *(_DWORD *)(a1 + 256) = v8; - *(_BYTE *)(a1 + v7) = 40; - v9 = *(_DWORD *)(a1 + 276); - *(_BYTE *)(a1 + 260) = 40; - *(_DWORD *)(a1 + 276) = 0; - d_print_mod_list(a1, a3, 0); - v10 = *(_DWORD *)(a1 + 256); - if ( v10 != 255 ) - { - v11 = v10 + 1; - *(_DWORD *)(a1 + 256) = v10 + 1; - *(_BYTE *)(a1 + v10) = 41; - *(_BYTE *)(a1 + 260) = 41; - if ( v10 != 254 ) - goto LABEL_11; -LABEL_18: - v16 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v16); - *(_BYTE *)a1 = 40; - *(_BYTE *)(a1 + 260) = 40; - v13 = *(_DWORD *)(a2 + 16); - ++*(_DWORD *)(a1 + 296); - *(_DWORD *)(a1 + 256) = 1; - if ( !v13 ) - { - v12 = 1; - goto LABEL_14; - } - goto LABEL_12; - } - v19 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v19); - *(_BYTE *)(a1 + 260) = 40; - *(_WORD *)a1 = 10281; - v13 = *(_DWORD *)(a2 + 16); - v12 = 2; - ++*(_DWORD *)(a1 + 296); - *(_DWORD *)(a1 + 256) = 2; - if ( !v13 ) - goto LABEL_14; -LABEL_12: - d_print_comp(v13, 17); - v12 = *(_DWORD *)(a1 + 256); -LABEL_13: - if ( v12 == 255 ) - { - v18 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v18); - ++*(_DWORD *)(a1 + 296); - v14 = 1; - v12 = 0; - goto LABEL_15; - } -LABEL_14: - v14 = v12 + 1; -LABEL_15: - *(_DWORD *)(a1 + 256) = v14; - *(_BYTE *)(a1 + v12) = 41; - *(_BYTE *)(a1 + 260) = 41; - result = d_print_mod_list(a1, a3, 1); - *(_DWORD *)(a1 + 276) = v9; - return result; - default: - v5 = (_DWORD *)*v5; - if ( !v5 ) - goto LABEL_17; - continue; - } - } -} -// 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); - -//----- (0045E530) -------------------------------------------------------- -unsigned int __usercall d_print_mod_list@(unsigned int result@, _DWORD *a2@, int a3) -{ - _DWORD *v3; // edi - int v4; // ebx - int v5; // edx - int v6; // esi - unsigned int *v7; // ecx - bool v8; // cf - int v9; // eax - int v10; // ebp - unsigned int v11; // ecx - int v12; // eax - const char *v13; // ebp - char i; // dl - int v15; // ecx - int v16; // eax - unsigned int *v17; // ebp - unsigned int v18; // edx - char *v19; // edi - char j; // dl - int v21; // ecx - int v22; // eax - FILE *p_Str; // edi - size_t v24; // edx - int v25; // eax - FILE *v26; // esi - int v27; // ecx - char ptr; // dl - int v29; // eax - const char *v30; // edi - char k; // dl - int v32; // ecx - int v33; // eax - char v34; // [esp+1Bh] [ebp-41h] - char v35; // [esp+1Bh] [ebp-41h] - char v36; // [esp+1Bh] [ebp-41h] - char v37; // [esp+1Bh] [ebp-41h] - int v38; // [esp+1Ch] [ebp-40h] - FILE Str; // [esp+27h] [ebp-35h] BYREF - - v3 = a2; - v4 = result; - if ( a2 ) - { - while ( 1 ) - { - if ( *(_DWORD *)(v4 + 280) ) - return result; - result = v3[2]; - if ( !result ) - break; -LABEL_7: - v3 = (_DWORD *)*v3; - if ( !v3 ) - return result; - } - v7 = (unsigned int *)v3[1]; - result = *v7; - if ( !a3 ) - { - if ( result == 77 ) - goto LABEL_7; - if ( result > 0x4D ) - { - v8 = result == 79; - result -= 79; - if ( v8 || result == 1 ) - goto LABEL_7; - v9 = v3[3]; - v6 = *(_DWORD *)(v4 + 272); - v3[2] = 1; - *(_DWORD *)(v4 + 272) = v9; - goto LABEL_6; - } - if ( result - 28 <= 4 ) - goto LABEL_7; - } - v5 = v3[3]; - v6 = *(_DWORD *)(v4 + 272); - v3[2] = 1; - *(_DWORD *)(v4 + 272) = v5; - switch ( result ) - { - case 0x29u: - result = d_print_function_type(*v3); - *(_DWORD *)(v4 + 272) = v6; - return result; - case 0x2Au: - result = d_print_array_type(v4, (int)v7, (int **)*v3); - *(_DWORD *)(v4 + 272) = v6; - return result; - case 2u: - v10 = *(_DWORD *)(v4 + 276); - v11 = v7[3]; - *(_DWORD *)(v4 + 276) = 0; - d_print_comp(v11, 17); - *(_DWORD *)(v4 + 276) = v10; - v12 = *(_DWORD *)(v4 + 256); - v13 = "::"; - for ( i = 58; ; i = *v13 ) - { - if ( v12 == 255 ) - { - v16 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v34 = i; - (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v16); - ++*(_DWORD *)(v4 + 296); - i = v34; - v15 = 0; - v12 = 1; - } - else - { - v15 = v12++; - } - ++v13; - *(_DWORD *)(v4 + 256) = v12; - *(_BYTE *)(v4 + v15) = i; - *(_BYTE *)(v4 + 260) = i; - if ( v13 == "" ) - break; - } - v17 = *(unsigned int **)(v3[1] + 16); - v18 = *v17; - if ( *v17 == 71 ) - { - v19 = "{default arg#" + 1; - for ( j = 123; ; j = *v19++ ) - { - if ( v12 == 255 ) - { - v22 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v35 = j; - (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v22); - ++*(_DWORD *)(v4 + 296); - j = v35; - v21 = 0; - v12 = 1; - } - else - { - v21 = v12++; - } - *(_DWORD *)(v4 + 256) = v12; - *(_BYTE *)(v4 + v21) = j; - *(_BYTE *)(v4 + 260) = j; - if ( v19 == "" ) - break; - } - p_Str = &Str; - sprintf_constprop_0(&Str, (int)"%d", v17[4] + 1); - v24 = strlen((const char *)&Str); - v25 = *(_DWORD *)(v4 + 256); - if ( v24 ) - { - v38 = v6; - v26 = (FILE *)((char *)&Str + v24); - do - { - ptr = (char)p_Str->_ptr; - if ( v25 == 255 ) - { - v29 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v36 = ptr; - (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v29); - ++*(_DWORD *)(v4 + 296); - ptr = v36; - v27 = 0; - v25 = 1; - } - else - { - v27 = v25++; - } - p_Str = (FILE *)((char *)p_Str + 1); - *(_DWORD *)(v4 + 256) = v25; - *(_BYTE *)(v4 + v27) = ptr; - *(_BYTE *)(v4 + 260) = ptr; - } - while ( p_Str != v26 ); - v6 = v38; - } - v30 = "}::"; - for ( k = 125; ; k = *v30 ) - { - if ( v25 == 255 ) - { - v33 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v37 = k; - (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v33); - ++*(_DWORD *)(v4 + 296); - k = v37; - v32 = 0; - v25 = 1; - } - else - { - v32 = v25++; - } - *(_DWORD *)(v4 + 256) = v25; - ++v30; - *(_BYTE *)(v4 + v32) = k; - *(_BYTE *)(v4 + 260) = k; - if ( v30 == "" ) - break; - } - goto LABEL_32; - } - while ( 1 ) - { - if ( v18 != 77 ) - { - if ( v18 > 0x4D ) - { - if ( v18 - 79 > 1 ) - { -LABEL_30: - result = d_print_comp(v17, 17); - *(_DWORD *)(v4 + 272) = v6; - return result; - } - } - else if ( v18 - 28 > 4 ) - { - goto LABEL_30; - } - } -LABEL_32: - v17 = (unsigned int *)v17[3]; - v18 = *v17; - } - } -LABEL_6: - result = d_print_mod(v4, v7); - *(_DWORD *)(v4 + 272) = v6; - goto LABEL_7; - } - return result; -} -// 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); -// 45E1F0: using guessed type _DWORD __cdecl d_print_function_type(_DWORD); -// 45E530: using guessed type FILE var_35; - -//----- (0045E890) -------------------------------------------------------- -int __usercall d_print_array_type@(int a1@, int a2@, int **a3) -{ - int **v5; // eax - int v6; // eax - int v7; // edx - int result; // eax - int v9; // ecx - int v10; // edx - int v11; // eax - int v12; // eax - int v13; // eax - char *v14; // esi - char i; // dl - int v16; // ecx - int v17; // eax - int v18; // edx - int v19; // eax - int v20; // eax - char v21; // [esp+1Fh] [ebp-1Dh] - - v5 = a3; - if ( !a3 ) - { -LABEL_5: - v6 = *(_DWORD *)(a1 + 256); - if ( v6 == 255 ) - goto LABEL_25; -LABEL_6: - v7 = v6 + 1; - *(_DWORD *)(a1 + 256) = v6 + 1; - *(_BYTE *)(a1 + v6) = 32; - *(_BYTE *)(a1 + 260) = 32; - if ( v6 == 254 ) - goto LABEL_14; - goto LABEL_7; - } - while ( v5[2] ) - { - v5 = (int **)*v5; - if ( !v5 ) - { - d_print_mod_list(0); - goto LABEL_5; - } - } - if ( *v5[1] == 42 ) - { - d_print_mod_list(0); - v7 = *(_DWORD *)(a1 + 256); - if ( v7 == 255 ) - { -LABEL_14: - v11 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v11); - *(_BYTE *)a1 = 91; - *(_BYTE *)(a1 + 260) = 91; - v9 = *(_DWORD *)(a2 + 12); - ++*(_DWORD *)(a1 + 296); - *(_DWORD *)(a1 + 256) = 1; - if ( !v9 ) - { - result = 1; - goto LABEL_10; - } - goto LABEL_8; - } -LABEL_7: - result = v7 + 1; - *(_DWORD *)(a1 + 256) = v7 + 1; - *(_BYTE *)(a1 + v7) = 91; - *(_BYTE *)(a1 + 260) = 91; - v9 = *(_DWORD *)(a2 + 12); - if ( !v9 ) - goto LABEL_9; - goto LABEL_8; - } - v13 = *(_DWORD *)(a1 + 256); - v14 = (char *)&unk_5590D4; - for ( i = 32; ; i = *v14 ) - { - if ( v13 == 255 ) - { - v17 = *(_DWORD *)(a1 + 268); - v21 = i; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v17); - ++*(_DWORD *)(a1 + 296); - i = v21; - v16 = 0; - v13 = 1; - } - else - { - v16 = v13++; - } - *(_DWORD *)(a1 + 256) = v13; - ++v14; - *(_BYTE *)(a1 + v16) = i; - *(_BYTE *)(a1 + 260) = i; - if ( &unk_5590D6 == (_UNKNOWN *)v14 ) - break; - } - d_print_mod_list(0); - v18 = *(_DWORD *)(a1 + 256); - if ( v18 == 255 ) - { - v20 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); - *(_BYTE *)a1 = 41; - v6 = 1; - ++*(_DWORD *)(a1 + 296); - goto LABEL_6; - } - v6 = v18 + 1; - *(_DWORD *)(a1 + 256) = v18 + 1; - *(_BYTE *)(a1 + v18) = 41; - *(_BYTE *)(a1 + 260) = 41; - if ( v18 != 254 ) - goto LABEL_6; -LABEL_25: - v19 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v19); - *(_BYTE *)(a1 + 260) = 91; - *(_WORD *)a1 = 23328; - v9 = *(_DWORD *)(a2 + 12); - result = 2; - ++*(_DWORD *)(a1 + 296); - *(_DWORD *)(a1 + 256) = 2; - if ( !v9 ) - goto LABEL_10; -LABEL_8: - d_print_comp(v9, 17); - result = *(_DWORD *)(a1 + 256); -LABEL_9: - if ( result == 255 ) - { - v12 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v12); - ++*(_DWORD *)(a1 + 296); - v10 = 1; - result = 0; - goto LABEL_11; - } -LABEL_10: - v10 = result + 1; -LABEL_11: - *(_DWORD *)(a1 + 256) = v10; - *(_BYTE *)(a1 + result) = 93; - *(_BYTE *)(a1 + 260) = 93; - return result; -} -// 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); -// 45E530: using guessed type _DWORD __cdecl d_print_mod_list(_DWORD); - -//----- (0045EB70) -------------------------------------------------------- -int __usercall d_print_conversion@(int a1@, int a2@) -{ - int v4; // eax - int v5; // edx - _DWORD *v6; // ecx - int result; // eax - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - int v15; // eax - int v16[5]; // [esp+18h] [ebp-14h] BYREF - - v4 = *(_DWORD *)(a1 + 328); - if ( v4 ) - { - v5 = *(_DWORD *)(a1 + 272); - v16[1] = v4; - v16[0] = v5; - *(_DWORD *)(a1 + 272) = v16; - } - v6 = *(_DWORD **)(a2 + 12); - if ( *v6 == 4 ) - { - d_print_comp(v6[3], 17); - if ( *(_DWORD *)(a1 + 328) ) - *(_DWORD *)(a1 + 272) = v16[0]; - v8 = *(_DWORD *)(a1 + 256); - if ( *(_BYTE *)(a1 + 260) == 60 ) - { - if ( v8 == 255 ) - { - v14 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v14); - *(_BYTE *)a1 = 32; - v8 = 1; - ++*(_DWORD *)(a1 + 296); - goto LABEL_11; - } - *(_DWORD *)(a1 + 256) = v8 + 1; - *(_BYTE *)(a1 + v8++) = 32; - *(_BYTE *)(a1 + 260) = 32; - } - if ( v8 == 255 ) - { - v13 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v13); - ++*(_DWORD *)(a1 + 296); - v9 = 1; - v8 = 0; -LABEL_12: - *(_DWORD *)(a1 + 256) = v9; - *(_BYTE *)(a1 + v8) = 60; - *(_BYTE *)(a1 + 260) = 60; - d_print_comp(*(_DWORD *)(*(_DWORD *)(a2 + 12) + 16), 17); - if ( *(_BYTE *)(a1 + 260) == 62 ) - { - v12 = *(_DWORD *)(a1 + 256); - if ( v12 == 255 ) - { - v15 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v15); - *(_BYTE *)a1 = 32; - result = 1; - ++*(_DWORD *)(a1 + 296); - goto LABEL_15; - } - result = v12 + 1; - *(_DWORD *)(a1 + 256) = v12 + 1; - *(_BYTE *)(a1 + v12) = 32; - *(_BYTE *)(a1 + 260) = 32; - } - else - { - result = *(_DWORD *)(a1 + 256); - } - if ( result == 255 ) - { - v11 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v11); - ++*(_DWORD *)(a1 + 296); - v10 = 1; - result = 0; - goto LABEL_16; - } -LABEL_15: - v10 = result + 1; -LABEL_16: - *(_DWORD *)(a1 + 256) = v10; - *(_BYTE *)(a1 + result) = 62; - *(_BYTE *)(a1 + 260) = 62; - return result; - } -LABEL_11: - v9 = v8 + 1; - goto LABEL_12; - } - result = d_print_comp(v6, 17); - if ( *(_DWORD *)(a1 + 328) ) - { - result = v16[0]; - *(_DWORD *)(a1 + 272) = v16[0]; - } - return result; -} -// 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); - -//----- (0045EDC0) -------------------------------------------------------- -int __usercall d_print_expr_op@(int a1@, _DWORD *a2@) -{ - int result; // eax - int v4; // edi - char *v5; // esi - char *v6; // edi - int v7; // ecx - char v8; // dl - int v9; // eax - char v10; // [esp+1Fh] [ebp-Dh] - - if ( *a2 != 50 ) - return d_print_comp(a2, 17); - result = a2[3]; - v4 = *(_DWORD *)(result + 8); - v5 = *(char **)(result + 4); - if ( v4 ) - { - result = *(_DWORD *)(a1 + 256); - v6 = &v5[v4]; - do - { - v8 = *v5; - if ( result == 255 ) - { - v9 = *(_DWORD *)(a1 + 268); - v10 = *v5; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); - ++*(_DWORD *)(a1 + 296); - v8 = v10; - v7 = 0; - result = 1; - } - else - { - v7 = result++; - } - ++v5; - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v7) = v8; - *(_BYTE *)(a1 + 260) = v8; - } - while ( v5 != v6 ); - } - return result; -} -// 45D800: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); - -//----- (0045EE70) -------------------------------------------------------- -BOOL __usercall d_demangle_callback_constprop_0@( - char *a1@, - void (__cdecl *a2)(char *, int, int)@, - int a3@) -{ - char v4; // al - bool v5; // zf - int v6; // esi - char v7; // al - char v8; // al - size_t v9; // eax - int v10; // edx - int v11; // ecx - int v12; // ecx - int v13; // eax - void *v14; // esp - void *v15; // esp - int *v16; // edi - int v17; // eax - void *v18; // esp - void *v19; // esp - size_t v20; // eax - int v21; // edx - int *comp; // edi - int v23; // ecx - char v24; // al - int v25; // eax - int v26; // edx - int v27; // eax - void *v28; // esp - void *v29; // esp - int v30; // eax - void *v31; // esp - void *v32; // esp - int v33; // eax - int v34; // edx - char v36; // al - char *v37; // edx - int v38; // eax - char v39; // al - char *v40; // ecx - int *v41; // esi - _DWORD *name; // eax - int *v43; // eax - char v44; // al - int v45[3]; // [esp+0h] [ebp-1D8h] BYREF - int v46[3]; // [esp+Ch] [ebp-1CCh] BYREF - int v47; // [esp+18h] [ebp-1C0h] - int v48; // [esp+1Ch] [ebp-1BCh] - int *v49; // [esp+20h] [ebp-1B8h] - int *v50; // [esp+24h] [ebp-1B4h] - int v51; // [esp+28h] [ebp-1B0h] - void (__cdecl *v52)(char *, int, int); // [esp+2Ch] [ebp-1ACh] - int v53[2]; // [esp+38h] [ebp-1A0h] BYREF - int v54; // [esp+40h] [ebp-198h] - char *Str; // [esp+44h] [ebp-194h] - int *v56; // [esp+48h] [ebp-190h] - int v57; // [esp+4Ch] [ebp-18Ch] - size_t v58; // [esp+50h] [ebp-188h] - int *v59; // [esp+54h] [ebp-184h] - int v60; // [esp+58h] [ebp-180h] - size_t v61; // [esp+5Ch] [ebp-17Ch] - int v62; // [esp+60h] [ebp-178h] - int v63; // [esp+64h] [ebp-174h] - int v64; // [esp+68h] [ebp-170h] - int v65; // [esp+6Ch] [ebp-16Ch] - int v66; // [esp+70h] [ebp-168h] - char v67[256]; // [esp+74h] [ebp-164h] BYREF - int v68; // [esp+174h] [ebp-64h] - char v69; // [esp+178h] [ebp-60h] - void (__cdecl *v70)(char *, int, int); // [esp+17Ch] [ebp-5Ch] - int v71; // [esp+180h] [ebp-58h] - int v72; // [esp+184h] [ebp-54h] - int v73; // [esp+188h] [ebp-50h] - int v74; // [esp+18Ch] [ebp-4Ch] - int v75; // [esp+190h] [ebp-48h] - int v76; // [esp+194h] [ebp-44h] - int v77; // [esp+198h] [ebp-40h] - int v78; // [esp+19Ch] [ebp-3Ch] - int v79; // [esp+1A0h] [ebp-38h] - int *v80; // [esp+1A4h] [ebp-34h] - int v81; // [esp+1A8h] [ebp-30h] - int v82; // [esp+1ACh] [ebp-2Ch] - int *v83; // [esp+1B0h] [ebp-28h] - int v84; // [esp+1B4h] [ebp-24h] - int v85; // [esp+1B8h] [ebp-20h] - int v86; // [esp+1BCh] [ebp-1Ch] - - v4 = *a1; - v52 = a2; - v51 = a3; - LOBYTE(v50) = v4; - if ( v4 != 95 || (v6 = 1, a1[1] != 90) ) - { - v5 = memcmp(a1, "_GLOBAL_", 8u) == 0; - v6 = 0; - if ( v5 ) - { - v7 = a1[8]; - if ( v7 == 95 || v7 == 46 || v7 == 36 ) - { - v8 = a1[9]; - if ( v8 == 68 || (v6 = 0, v8 == 73) ) - { - v6 = 0; - if ( a1[10] == 95 ) - v6 = (v8 != 73) + 2; - } - } - } - } - v9 = strlen(a1); - v53[0] = (int)a1; - v10 = 2 * v9; - v54 = 17; - v53[1] = (int)&a1[v9]; - v11 = 0; - Str = a1; - v58 = 2 * v9; - v57 = 0; - v61 = v9; - v60 = 0; - v62 = 0; - v63 = 0; - v64 = 0; - v65 = 0; - v66 = 0; - if ( 2 * v9 <= 0x800 ) - { - v12 = 4 * v9; - v49 = v45; - v13 = 16 * ((40 * v9 + 15) >> 4); - v14 = alloca(v13); - v15 = alloca(v13); - v16 = v46; - v48 = ((unsigned int)v46 + 3) >> 2; - v17 = 16 * ((unsigned int)(v12 + 15) >> 4); - v18 = alloca(v17); - v19 = alloca(v17); - v56 = v46; - v59 = v46; - if ( v6 != 1 ) - { - if ( (unsigned int)(v6 - 2) > 1 ) - { - comp = d_type(v53, v45[0], v45[1], v45[2], v46[0], v46[1], v46[2], v47, v48, (int)v49, (int)v50, v51); - v24 = *Str; - } - else - { - v5 = a1[11] == 95; - Str = a1 + 11; - if ( v5 && a1[12] == 90 ) - { - Str = a1 + 13; - v44 = a1[13]; - if ( v44 == 71 || v44 == 84 ) - v16 = d_special_name(v53); - else - v16 = (int *)d_encoding_part_0((int)v53, 0); - } - else - { - v47 = v10; - v50 = (int *)(a1 + 11); - v20 = strlen(a1 + 11); - if ( v47 > 0 && (v57 = 1, v21 = v48, *(_DWORD *)(4 * v48 + 4) = 0, *(_DWORD *)(4 * v21 + 8) = 0, v20) ) - { - *(_DWORD *)(4 * v21 + 0xC) = a1 + 11; - *(_DWORD *)(4 * v21) = 0; - *(_DWORD *)(4 * v21 + 0x10) = v20; - } - else - { - v16 = 0; - } - } - comp = d_make_comp(v53, (v6 != 2) + 68, (int)v16, 0); - Str += strlen(Str); - v24 = *Str; - } - goto LABEL_16; - } - if ( (_BYTE)v50 != 95 || a1[1] != 90 ) - return 0; - Str = a1 + 2; - v36 = a1[2]; - if ( v36 == 71 || v36 == 84 ) - comp = d_special_name(v53); - else - comp = (int *)d_encoding_part_0((int)v53, 1); - v24 = *Str; - if ( (v54 & 1) == 0 || v24 != 46 ) - { -LABEL_16: - if ( !v24 && comp ) - { - v68 = 0; - v69 = 0; - v70 = v52; - v72 = 0; - v71 = v51; - v73 = 0; - v77 = 0; - v78 = 0; - v74 = 0; - v75 = 0; - v76 = 0; - v79 = 0; - v80 = 0; - v81 = 0; - v82 = 0; - v83 = 0; - v84 = 0; - v85 = 0; - d_count_templates_scopes((int)v67, comp, v23); - if ( v75 <= 2047 ) - v75 = 0; - v25 = v82; - v86 = 0; - v26 = v82 * v85; - if ( v82 <= 0 ) - v25 = 1; - v85 *= v82; - v27 = 16 * ((unsigned int)(8 * v25 + 15) >> 4); - v28 = alloca(v27); - v29 = alloca(v27); - v80 = v46; - if ( v26 <= 0 ) - v26 = 1; - v30 = 16 * ((unsigned int)(8 * v26 + 15) >> 4); - v31 = alloca(v30); - v32 = alloca(v30); - v83 = v46; - d_print_comp((int)v67, (int)comp); - v33 = v68; - v34 = v71; - v67[v68] = 0; - v70(v67, v33, v34); - return v74 == 0; - } - return 0; - } - v50 = v53; - v37 = Str; - while ( 1 ) - { - v38 = (unsigned __int8)v37[1]; - v23 = v38 - 97; - if ( (unsigned __int8)(v38 - 97) <= 0x19u || (_BYTE)v38 == 95 ) - break; - if ( (unsigned __int8)(v38 - 48) > 9u ) - { - v24 = *v37; - goto LABEL_16; - } - v39 = *v37; - v40 = v37; -LABEL_44: - while ( v39 == 46 && (unsigned __int8)(v40[1] - 48) <= 9u ) - { - v39 = v40[2]; - for ( v40 += 2; (unsigned __int8)(v39 - 48) <= 9u; ++v40 ) - v39 = v40[1]; - } - v41 = v50; - Str = v40; - name = d_make_name(v50, (int)v37, v40 - v37); - v43 = d_make_comp(v41, 78, (int)comp, (int)name); - v37 = Str; - comp = v43; - v24 = *Str; - if ( *Str != 46 ) - goto LABEL_16; - } - v39 = v37[2]; - v40 = v37 + 2; - if ( (unsigned __int8)(v39 - 97) > 0x19u ) - goto LABEL_57; - while ( 1 ) - { - do - v39 = *++v40; - while ( (unsigned __int8)(v39 - 97) <= 0x19u ); -LABEL_57: - if ( v39 != 95 ) - goto LABEL_44; - } - } - return v11; -} -// 45F131: variable 'v23' is possibly undefined -// 45EE70: using guessed type char var_164[256]; - -//----- (0045F3E0) -------------------------------------------------------- -int __usercall d_print_subexpr@(int a1@, _DWORD *a2@) -{ - int v4; // edi - int result; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // [esp+18h] [ebp-14h] BYREF - int v14; // [esp+1Ch] [ebp-10h] - - if ( *a2 == 49 || *a2 <= 1u || *a2 == 6 ) - { - v4 = 1; - } - else - { - v9 = *(_DWORD *)(a1 + 256); - if ( v9 == 255 ) - { - v12 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v12); - ++*(_DWORD *)(a1 + 296); - v10 = 1; - v9 = 0; - } - else - { - v10 = v9 + 1; - } - *(_DWORD *)(a1 + 256) = v10; - v4 = 0; - *(_BYTE *)(a1 + v9) = 40; - *(_BYTE *)(a1 + 260) = 40; - } - result = a2[1]; - if ( result > 1 || (v6 = *(_DWORD *)(a1 + 284), v6 > 1024) ) - { - *(_DWORD *)(a1 + 280) = 1; - if ( v4 ) - return result; - } - else - { - v13 = a2; - a2[1] = result + 1; - v7 = *(_DWORD *)(a1 + 300); - *(_DWORD *)(a1 + 284) = v6 + 1; - v14 = v7; - *(_DWORD *)(a1 + 300) = &v13; - d_print_comp_inner(a2, 17); - result = v14; - *(_DWORD *)(a1 + 300) = v14; - --a2[1]; - --*(_DWORD *)(a1 + 284); - if ( v4 ) - return result; - } - result = *(_DWORD *)(a1 + 256); - if ( result == 255 ) - { - v11 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v11); - ++*(_DWORD *)(a1 + 296); - v8 = 1; - result = 0; - } - else - { - v8 = result + 1; - } - *(_DWORD *)(a1 + 256) = v8; - *(_BYTE *)(a1 + result) = 41; - *(_BYTE *)(a1 + 260) = 41; - return result; -} -// 45A6B0: using guessed type int __fastcall d_print_comp_inner(_DWORD, _DWORD); - -//----- (0045F550) -------------------------------------------------------- -int __usercall d_maybe_print_fold_expression@(int a1@, int a2@) -{ - _BYTE *v3; // eax - int v4; // edx - _DWORD *v5; // esi - _DWORD *v6; // edi - _DWORD *v7; // ebp - int v8; // edx - char v9; // al - int v10; // eax - int v11; // edx - _DWORD *v12; // ecx - const char *v13; // edi - int v14; // eax - char k; // dl - int v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - int v20; // eax - int v21; // edx - int v22; // eax - int v23; // edx - const char *v24; // esi - int v25; // eax - char j; // dl - int v27; // ecx - int v28; // eax - int v29; // eax - const char *v30; // esi - char i; // dl - int v32; // ecx - int v33; // eax - int v34; // eax - int v35; // eax - int v36; // eax - int v37; // [esp+18h] [ebp-24h] - char v38; // [esp+1Fh] [ebp-1Dh] - char v39; // [esp+1Fh] [ebp-1Dh] - char v40; // [esp+1Fh] [ebp-1Dh] - - v3 = **(_BYTE ***)(*(_DWORD *)(a2 + 12) + 12); - if ( *v3 != 102 ) - return 0; - v4 = *(_DWORD *)(a2 + 16); - v5 = 0; - v6 = *(_DWORD **)(v4 + 16); - v7 = *(_DWORD **)(v4 + 12); - if ( *v6 == 60 ) - { - v5 = (_DWORD *)v6[4]; - v6 = (_DWORD *)v6[3]; - } - v8 = *(_DWORD *)(a1 + 292); - *(_DWORD *)(a1 + 292) = -1; - v9 = v3[1]; - v37 = v8; - if ( v9 == 108 ) - { - v29 = *(_DWORD *)(a1 + 256); - v30 = "(..."; - for ( i = 40; ; i = *v30 ) - { - if ( v29 == 255 ) - { - v33 = *(_DWORD *)(a1 + 268); - v40 = i; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v33); - ++*(_DWORD *)(a1 + 296); - i = v40; - v32 = 0; - v29 = 1; - } - else - { - v32 = v29++; - } - *(_DWORD *)(a1 + 256) = v29; - ++v30; - *(_BYTE *)(a1 + v32) = i; - *(_BYTE *)(a1 + 260) = i; - if ( v30 == "" ) - break; - } - d_print_expr_op(a1, v7); - v19 = v6; - goto LABEL_18; - } - if ( v9 > 108 ) - { - if ( v9 == 114 ) - { - v22 = *(_DWORD *)(a1 + 256); - if ( v22 == 255 ) - { - v35 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v35); - ++*(_DWORD *)(a1 + 296); - v23 = 1; - v22 = 0; - } - else - { - v23 = v22 + 1; - } - *(_DWORD *)(a1 + 256) = v23; - v24 = "...)"; - *(_BYTE *)(a1 + v22) = 40; - *(_BYTE *)(a1 + 260) = 40; - d_print_subexpr(a1, v6); - d_print_expr_op(a1, v7); - v25 = *(_DWORD *)(a1 + 256); - for ( j = 46; ; j = *v24 ) - { - if ( v25 == 255 ) - { - v28 = *(_DWORD *)(a1 + 268); - v39 = j; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v28); - ++*(_DWORD *)(a1 + 296); - j = v39; - v27 = 0; - v25 = 1; - } - else - { - v27 = v25++; - } - ++v24; - *(_DWORD *)(a1 + 256) = v25; - *(_BYTE *)(a1 + v27) = j; - *(_BYTE *)(a1 + 260) = j; - if ( v24 == "" ) - break; - } - } - goto LABEL_21; - } - if ( v9 == 76 || v9 == 82 ) - { - v10 = *(_DWORD *)(a1 + 256); - if ( v10 == 255 ) - { - v36 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v36); - ++*(_DWORD *)(a1 + 296); - v11 = 1; - v10 = 0; - } - else - { - v11 = v10 + 1; - } - *(_DWORD *)(a1 + 256) = v11; - v12 = v6; - v13 = "..."; - *(_BYTE *)(a1 + v10) = 40; - *(_BYTE *)(a1 + 260) = 40; - d_print_subexpr(a1, v12); - d_print_expr_op(a1, v7); - v14 = *(_DWORD *)(a1 + 256); - for ( k = 46; ; k = *v13 ) - { - if ( v14 == 255 ) - { - v17 = *(_DWORD *)(a1 + 268); - v38 = k; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v17); - ++*(_DWORD *)(a1 + 296); - k = v38; - v16 = 0; - v14 = 1; - } - else - { - v16 = v14++; - } - ++v13; - *(_DWORD *)(a1 + 256) = v14; - *(_BYTE *)(a1 + v16) = k; - *(_BYTE *)(a1 + 260) = k; - if ( v13 == "" ) - break; - } - d_print_expr_op(a1, v7); - v19 = v5; -LABEL_18: - d_print_subexpr(a1, v19); - v20 = *(_DWORD *)(a1 + 256); - if ( v20 == 255 ) - { - v34 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v34); - ++*(_DWORD *)(a1 + 296); - v21 = 1; - v20 = 0; - } - else - { - v21 = v20 + 1; - } - *(_DWORD *)(a1 + 256) = v21; - *(_BYTE *)(a1 + v20) = 41; - *(_BYTE *)(a1 + 260) = 41; - } -LABEL_21: - *(_DWORD *)(a1 + 292) = v37; - return 1; -} - -//----- (0045F900) -------------------------------------------------------- -char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus) -{ - char *v4; // edi - size_t v5; // ebp - size_t v6; // eax - char *Str; // [esp+0h] [ebp-3Ch] - char *Src[2]; // [esp+10h] [ebp-2Ch] BYREF - size_t v10; // [esp+18h] [ebp-24h] - int v11; // [esp+1Ch] [ebp-20h] - - if ( !lpmangled || lpout && !lpoutlen ) - { - if ( lpstatus ) - *lpstatus = -3; - return 0; - } - Src[0] = 0; - Src[1] = 0; - v10 = 0; - v11 = 0; - if ( !d_demangle_callback_constprop_0( - (char *)lpmangled, - (void (__cdecl *)(char *, int, int))d_growable_string_callback_adapter, - (int)Src) ) - { - free(Src[0]); - if ( !lpstatus ) - return 0; - goto LABEL_25; - } - v4 = Src[0]; - if ( v11 ) - { - v5 = 1; - if ( Src[0] ) - goto LABEL_7; - if ( !lpstatus ) - return 0; - goto LABEL_16; - } - v5 = v10; - if ( Src[0] ) - { -LABEL_7: - if ( lpout ) - { - v6 = strlen(Src[0]); - if ( v6 < *lpoutlen ) - { - memcpy(lpout, Src[0], v6 + 1); - Str = v4; - v4 = lpout; - free(Str); - goto LABEL_10; - } - free(lpout); - } - else if ( !lpoutlen ) - { -LABEL_10: - if ( lpstatus ) - *lpstatus = 0; - return v4; - } - *lpoutlen = v5; - goto LABEL_10; - } - if ( lpstatus ) - { - if ( v10 == 1 ) - { -LABEL_16: - *lpstatus = -1; - return 0; - } -LABEL_25: - *lpstatus = -2; - return 0; - } - return 0; -} - -//----- (0045FA50) -------------------------------------------------------- -unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, void (__cdecl *a2)(char *, int, int), int a3) -{ - if ( a1 && a2 ) - return !d_demangle_callback_constprop_0(a1, a2, a3) ? 0xFFFFFFFE : 0; - else - return -3; -} - -//----- (0045FA90) -------------------------------------------------------- -void __do_global_dtors(void) -{ - void (*v0)(void); // eax - - v0 = (void (*)(void))*data_1; - if ( *data_1 ) - { - do - { - v0(); - v0 = (void (*)(void))data_1[1]; - ++data_1; - } - while ( v0 ); - } -} -// 53E1D4: using guessed type int *data_1; - -//----- (0045FAD0) -------------------------------------------------------- -int __do_global_ctors() -{ - int v0; // ebx - int v2; // eax - - v0 = __CTOR_LIST__[0]; - if ( __CTOR_LIST__[0] == -1 ) - { - v2 = 0; - do - v0 = v2++; - while ( __CTOR_LIST__[v2] ); - } - for ( ; v0; --v0 ) - ((void (*)(void))__CTOR_LIST__[v0])(); - return atexit(__do_global_dtors); -} -// 538950: using guessed type int __CTOR_LIST__[]; - -//----- (0045FB30) -------------------------------------------------------- -int __main() -{ - int result; // eax - - result = bss_0; - if ( !bss_0 ) - { - bss_0 = 1; - return __do_global_ctors(); - } - return result; -} -// 7695C8: using guessed type int bss_0; - -//----- (0045FB60) -------------------------------------------------------- -int _setargv() -{ - return 0; -} - -//----- (0045FB70) -------------------------------------------------------- -int __stdcall __dyn_tls_dtor(int a1, unsigned int a2, int a3) -{ - if ( a2 != 3 && a2 ) - return 1; - __mingw_TLScallback(a1, a2); - return 1; -} - -//----- (0045FBC0) -------------------------------------------------------- -int __stdcall __dyn_tls_init(int a1, int a2, int a3) -{ - if ( _CRT_MT != 2 ) - _CRT_MT = 2; - if ( a2 == 2 || a2 != 1 ) - return 1; - __mingw_TLScallback(a1, 1u); - return 1; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (0045FC60) -------------------------------------------------------- -int __tlregdtor() -{ - return 0; -} - -//----- (0045FC70) -------------------------------------------------------- -int __cdecl _matherr(struct _exception *Except) -{ - const char *v1; // ebx - unsigned int v2; // edx - char *name; // esi - FILE *v4; // eax - double arg1; // [esp+38h] [ebp-24h] - double arg2; // [esp+40h] [ebp-1Ch] - double retval; // [esp+48h] [ebp-14h] - - v1 = "Unknown error"; - v2 = Except->type - 1; - if ( v2 <= 5 ) - v1 = CSWTCH_1[v2]; - name = Except->name; - retval = Except->retval; - arg2 = Except->arg2; - arg1 = Except->arg1; - v4 = __acrt_iob_func(2u); - fprintf(v4, "_matherr(): %s in %s(%g, %g) (retval=%g)\n", v1, name, arg1, arg2, retval); - return 0; -} -// 55A578: using guessed type char *CSWTCH_1[6]; - -//----- (0045FCF0) -------------------------------------------------------- -void __cdecl fpreset() -{ - __asm { fninit } -} - -//----- (0045FD00) -------------------------------------------------------- -void __noreturn __report_error(char *Format, ...) -{ - FILE *Stream; // eax - FILE *v2; // eax - va_list va; // [esp+24h] [ebp+8h] BYREF - - va_start(va, Format); - Stream = __acrt_iob_func(2u); - fwrite("Mingw-w64 runtime failure:\n", 1u, 0x1Bu, Stream); - v2 = __acrt_iob_func(2u); - vfprintf(v2, Format, va); - abort(); -} - -//----- (0045FD60) -------------------------------------------------------- -_DWORD *__usercall mark_section_writable@(const void *a1@) -{ - int v2; // esi - int v3; // ecx - _DWORD *result; // eax - int SectionForAddress; // edi - int v6; // ebx - _DWORD *v7; // eax - const void *lpAddress; // eax - DWORD v9; // eax - SIZE_T RegionSize; // ecx - PVOID BaseAddress; // edx - DWORD *lpflOldProtect; // ebx - DWORD LastError; // eax - struct _MEMORY_BASIC_INFORMATION Buffer; // [esp+14h] [ebp-28h] BYREF - - v2 = maxSections; - if ( maxSections <= 0 ) - { - v2 = 0; -LABEL_6: - SectionForAddress = __mingw_GetSectionForAddress((int)a1); - if ( !SectionForAddress ) - __report_error("Address %p has no image-section", a1); - v6 = 20 * v2; - v7 = (_DWORD *)(20 * v2 + the_secs); - v7[4] = SectionForAddress; - *v7 = 0; - lpAddress = (const void *)(*(_DWORD *)(SectionForAddress + 12) + _GetPEImageBase()); - *(_DWORD *)(the_secs + 20 * v2 + 12) = lpAddress; - if ( !VirtualQuery(lpAddress, &Buffer, 0x1Cu) ) - __report_error( - " VirtualQuery failed for %d bytes at address %p", - *(_DWORD *)(SectionForAddress + 8), - *(const void **)(the_secs + v6 + 12)); - result = (_DWORD *)Buffer.Protect; - if ( ((Buffer.Protect - 64) & 0xFFFFFFBF) != 0 && ((Buffer.Protect - 4) & 0xFFFFFFFB) != 0 ) - { - v9 = 4; - RegionSize = Buffer.RegionSize; - if ( Buffer.Protect != 2 ) - v9 = 64; - BaseAddress = Buffer.BaseAddress; - lpflOldProtect = (DWORD *)(the_secs + v6); - lpflOldProtect[2] = Buffer.RegionSize; - lpflOldProtect[1] = (DWORD)BaseAddress; - result = (_DWORD *)VirtualProtect(BaseAddress, RegionSize, v9, lpflOldProtect); - if ( !result ) - { - LastError = GetLastError(); - __report_error(" VirtualProtect failed with code 0x%x", LastError); - } - } - ++maxSections; - } - else - { - v3 = 0; - result = (_DWORD *)(the_secs + 12); - while ( *result > (unsigned int)a1 || (unsigned int)a1 >= *(_DWORD *)(result[1] + 8) + *result ) - { - ++v3; - result += 5; - if ( v3 == maxSections ) - goto LABEL_6; - } - } - return result; -} -// 7695FC: using guessed type int maxSections; -// 769600: using guessed type int the_secs; - -//----- (0045FEC0) -------------------------------------------------------- -void _pei386_runtime_relocator() -{ - int v0; // eax - void *v1; // esp - void *v2; // esp - int v3; // [esp+10h] [ebp-38h] BYREF - - if ( !was_init_0 ) - { - was_init_0 = 1; - v0 = 16 * ((unsigned int)(20 * __mingw_GetSectionCount() + 27) >> 4); - v1 = alloca(v0); - maxSections = 0; - v2 = alloca(v0); - the_secs = (int)&v3; - } -} -// 7695F8: using guessed type int was_init_0; -// 7695FC: using guessed type int maxSections; -// 769600: using guessed type int the_secs; - -//----- (00460140) -------------------------------------------------------- -int (__cdecl *__cdecl __mingw_raise_matherr(int a1, int a2, double a3, double a4, double a5))(_DWORD) -{ - int (__cdecl *result)(_DWORD); // eax - int v6[2]; // [esp+10h] [ebp-2Ch] BYREF - double v7; // [esp+18h] [ebp-24h] - double v8; // [esp+20h] [ebp-1Ch] - double v9; // [esp+28h] [ebp-14h] - - result = stUserMathErr; - if ( stUserMathErr ) - { - v7 = a3; - v8 = a4; - v6[0] = a1; - v9 = a5; - v6[1] = a2; - return (int (__cdecl *)(_DWORD))stUserMathErr(v6); - } - return result; -} -// 769604: using guessed type int (__cdecl *stUserMathErr)(_DWORD); - -//----- (004601A0) -------------------------------------------------------- -void __cdecl __mingw_setusermatherr(_UserMathErrorFunctionPointer UserMathErrorFunction) -{ - stUserMathErr = (int (__cdecl *)(_DWORD))UserMathErrorFunction; - __setusermatherr(UserMathErrorFunction); -} -// 769604: using guessed type int (__cdecl *stUserMathErr)(_DWORD); - -//----- (004601B0) -------------------------------------------------------- -LONG __stdcall _gnu_exception_handler(_EXCEPTION_POINTERS *a1) -{ - DWORD ExceptionCode; // eax - _crt_signal_t v2; // eax - _crt_signal_t v4; // eax - _crt_signal_t v5; // eax - - ExceptionCode = a1->ExceptionRecord->ExceptionCode; - if ( ExceptionCode == -1073741677 ) - { -LABEL_6: - v2 = signal(8, 0); - if ( v2 == (_crt_signal_t)1 ) - { - signal(8, (_crt_signal_t)1); - fpreset(); - return -1; - } -LABEL_7: - if ( v2 ) - { - v2(8); - return -1; - } - goto LABEL_8; - } - if ( ExceptionCode > 0xC0000093 ) - { - if ( ExceptionCode == -1073741676 ) - { - v2 = signal(8, 0); - if ( v2 == (_crt_signal_t)1 ) - { - signal(8, (_crt_signal_t)1); - return -1; - } - goto LABEL_7; - } - if ( ExceptionCode != -1073741674 ) - goto LABEL_8; -LABEL_18: - v5 = signal(4, 0); - if ( v5 == (_crt_signal_t)1 ) - { - signal(4, (_crt_signal_t)1); - return -1; - } - if ( v5 ) - { - v5(4); - return -1; - } - goto LABEL_8; - } - if ( ExceptionCode == -1073741795 ) - goto LABEL_18; - if ( ExceptionCode <= 0xC000001D ) - { - if ( ExceptionCode == -1073741819 ) - { - v4 = signal(11, 0); - if ( v4 == (_crt_signal_t)1 ) - { - signal(11, (_crt_signal_t)1); - return -1; - } - if ( v4 ) - { - v4(11); - return -1; - } - } - goto LABEL_8; - } - if ( ExceptionCode + 1073741683 <= 4 ) - goto LABEL_6; -LABEL_8: - if ( __mingw_oldexcpt_handler ) - return __mingw_oldexcpt_handler(a1); - else - return 0; -} -// 76960C: using guessed type int (__stdcall *__mingw_oldexcpt_handler)(_DWORD); - -//----- (00460360) -------------------------------------------------------- -void __mingwthr_run_key_dtors_part_0() -{ - DWORD *v0; // ebx - LPVOID Value; // esi - - EnterCriticalSection(&__mingwthr_cs); - v0 = (DWORD *)key_dtor_list; - if ( key_dtor_list ) - { - do - { - Value = TlsGetValue(*v0); - if ( !GetLastError() && Value ) - ((void (__cdecl *)(LPVOID))v0[1])(Value); - v0 = (DWORD *)v0[2]; - } - while ( v0 ); - } - LeaveCriticalSection(&__mingwthr_cs); -} - -//----- (004603D0) -------------------------------------------------------- -int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2) -{ - int result; // eax - _DWORD *v3; // eax - _DWORD *v4; // ebx - void *v5; // eax - - result = __mingwthr_cs_init; - if ( __mingwthr_cs_init ) - { - v3 = calloc(1u, 0xCu); - v4 = v3; - if ( v3 ) - { - *v3 = a1; - v3[1] = a2; - EnterCriticalSection(&__mingwthr_cs); - v5 = key_dtor_list; - key_dtor_list = v4; - v4[2] = v5; - LeaveCriticalSection(&__mingwthr_cs); - return 0; - } - else - { - return -1; - } - } - return result; -} -// 769614: using guessed type int __mingwthr_cs_init; - -//----- (00460450) -------------------------------------------------------- -int __cdecl ___w64_mingwthr_remove_key_dtor(int a1) -{ - _DWORD *v2; // eax - _DWORD *v3; // ecx - int v4; // edx - - if ( !__mingwthr_cs_init ) - return 0; - EnterCriticalSection(&__mingwthr_cs); - v2 = key_dtor_list; - if ( key_dtor_list ) - { - v3 = 0; - while ( 1 ) - { - v4 = v2[2]; - if ( *v2 == a1 ) - break; - v3 = v2; - if ( !v4 ) - goto LABEL_11; - v2 = (_DWORD *)v2[2]; - } - if ( v3 ) - v3[2] = v4; - else - key_dtor_list = (void *)v2[2]; - free(v2); - } -LABEL_11: - LeaveCriticalSection(&__mingwthr_cs); - return 0; -} -// 769614: using guessed type int __mingwthr_cs_init; - -//----- (004604E0) -------------------------------------------------------- -int __cdecl __mingw_TLScallback(int a1, unsigned int a2) -{ - void *v3; // ebx - void *Block; // eax - - if ( a2 == 2 ) - { - fpreset(); - return 1; - } - else - { - if ( a2 > 2 ) - { - if ( a2 == 3 && __mingwthr_cs_init ) - __mingwthr_run_key_dtors_part_0(); - } - else if ( a2 ) - { - if ( !__mingwthr_cs_init ) - InitializeCriticalSection(&__mingwthr_cs); - __mingwthr_cs_init = 1; - } - else - { - if ( __mingwthr_cs_init ) - __mingwthr_run_key_dtors_part_0(); - if ( __mingwthr_cs_init == 1 ) - { - v3 = key_dtor_list; - while ( v3 ) - { - Block = v3; - v3 = (void *)*((_DWORD *)v3 + 2); - free(Block); - } - key_dtor_list = 0; - __mingwthr_cs_init = 0; - DeleteCriticalSection(&__mingwthr_cs); - } - } - return 1; - } -} -// 769614: using guessed type int __mingwthr_cs_init; - -//----- (004605D0) -------------------------------------------------------- -BOOL __cdecl _ValidateImageBase(int a1) -{ - int v1; // eax - - if ( *(_WORD *)a1 == 23117 && (v1 = *(_DWORD *)(a1 + 60) + a1, *(_DWORD *)v1 == 17744) ) - return *(_WORD *)(v1 + 24) == 267; - else - return 0; -} - -//----- (00460600) -------------------------------------------------------- -int __cdecl _FindPESection(int a1, unsigned int a2) -{ - int v2; // edx - int v3; // esi - int result; // eax - int v5; // ecx - unsigned int v6; // edx - - v2 = *(_DWORD *)(a1 + 60) + a1; - v3 = *(unsigned __int16 *)(v2 + 6); - result = v2 + *(unsigned __int16 *)(v2 + 20) + 24; - if ( !*(_WORD *)(v2 + 6) ) - return 0; - v5 = 0; - while ( 1 ) - { - v6 = *(_DWORD *)(result + 12); - if ( v6 <= a2 && *(_DWORD *)(result + 8) + v6 > a2 ) - break; - ++v5; - result += 40; - if ( v5 == v3 ) - return 0; - } - return result; -} - -//----- (00460640) -------------------------------------------------------- -const char *__cdecl _FindPESectionByName(char *Str) -{ - const char *v1; // ebx - int v2; // ebp - int v3; // esi - - v1 = 0; - if ( strlen(Str) > 8 - || MEMORY[0x400000] != 23117 - || *(_DWORD *)(MEMORY[0x40003C] + 0x400000) != 17744 - || *(_WORD *)(MEMORY[0x40003C] + 4194328) != 267 ) - { - return v1; - } - v2 = *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310); - v1 = (const char *)(MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24); - if ( *(_WORD *)(MEMORY[0x40003C] + 4194310) ) - { - v3 = 0; - while ( strncmp(v1, Str, 8u) ) - { - ++v3; - v1 += 40; - if ( v2 == v3 ) - return 0; - } - return v1; - } - return 0; -} - -//----- (004606E0) -------------------------------------------------------- -int __cdecl __mingw_GetSectionForAddress(int a1) -{ - int result; // eax - unsigned int v2; // ebx - int v3; // ecx - unsigned int v4; // edx - - result = 0; - if ( MEMORY[0x400000] == 23117 - && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 - && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) - { - result = MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24; - v2 = a1 - 0x400000; - if ( *(_WORD *)(MEMORY[0x40003C] + 4194310) ) - { - v3 = 0; - while ( 1 ) - { - v4 = *(_DWORD *)(result + 12); - if ( v2 >= v4 && v2 < *(_DWORD *)(result + 8) + v4 ) - break; - ++v3; - result += 40; - if ( v3 == *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) ) - return 0; - } - } - else - { - return 0; - } - } - return result; -} - -//----- (00460760) -------------------------------------------------------- -int __mingw_GetSectionCount() -{ - int result; // eax - - result = 0; - if ( MEMORY[0x400000] == 23117 - && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 - && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) - { - return *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310); - } - return result; -} - -//----- (004607A0) -------------------------------------------------------- -int __cdecl _FindPESectionExec(int a1) -{ - int result; // eax - int v3; // edx - - result = 0; - if ( MEMORY[0x400000] == 23117 - && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 - && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) - { - result = MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24; - if ( *(_WORD *)(MEMORY[0x40003C] + 4194310) ) - { - v3 = 0; - do - { - if ( (*(_BYTE *)(result + 39) & 0x20) != 0 ) - { - if ( !a1 ) - return result; - --a1; - } - ++v3; - result += 40; - } - while ( *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) != v3 ); - } - return 0; - } - return result; -} - -//----- (00460820) -------------------------------------------------------- -int _GetPEImageBase() -{ - int result; // eax - - result = 0; - if ( MEMORY[0x400000] == 23117 - && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 - && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) - { - return 0x400000; - } - return result; -} - -//----- (00460860) -------------------------------------------------------- -BOOL __cdecl _IsNonwritableInCurrentImage(int a1) -{ - _DWORD *v2; // eax - unsigned int v3; // ebx - int v4; // ecx - unsigned int v5; // edx - - if ( MEMORY[0x400000] != 23117 - || *(_DWORD *)(MEMORY[0x40003C] + 0x400000) != 17744 - || *(_WORD *)(MEMORY[0x40003C] + 4194328) != 267 ) - { - return 0; - } - v2 = (_DWORD *)(MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24); - v3 = a1 - 0x400000; - if ( !*(_WORD *)(MEMORY[0x40003C] + 4194310) ) - return 0; - v4 = 0; - while ( 1 ) - { - v5 = v2[3]; - if ( v3 >= v5 && v3 < v2[2] + v5 ) - break; - ++v4; - v2 += 10; - if ( *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) == v4 ) - return 0; - } - return v2[9] >= 0; -} - -//----- (004608F0) -------------------------------------------------------- -int __cdecl __mingw_enum_import_library_names(int a1) -{ - unsigned int v3; // eax - int v4; // edx - int v5; // esi - unsigned int v6; // ecx - unsigned int i; // eax - - if ( MEMORY[0x400000] != 23117 ) - return 0; - if ( *(_DWORD *)(MEMORY[0x40003C] + 0x400000) != 17744 ) - return 0; - if ( *(_WORD *)(MEMORY[0x40003C] + 4194328) != 267 ) - return 0; - v3 = *(_DWORD *)(MEMORY[0x40003C] + 4194432); - if ( !v3 ) - return 0; - v4 = MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24; - if ( !*(_WORD *)(MEMORY[0x40003C] + 4194310) ) - return 0; - v5 = 0; - while ( 1 ) - { - v6 = *(_DWORD *)(v4 + 12); - if ( v3 >= v6 && v3 < *(_DWORD *)(v4 + 8) + v6 ) - break; - ++v5; - v4 += 40; - if ( v5 == *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) ) - return 0; - } - for ( i = v3 + 0x400000; *(_DWORD *)(i + 4) || *(_DWORD *)(i + 12); i += 20 ) - { - if ( a1 <= 0 ) - return *(_DWORD *)(i + 12) + 0x400000; - --a1; - } - return 0; -} - -//----- (00460C40) -------------------------------------------------------- -int __cdecl __gthr_win32_once(int a1, void (*a2)(void)) -{ - if ( !a1 || !a2 ) - return 22; - if ( *(_DWORD *)a1 ) - return 0; - if ( _InterlockedAdd((volatile signed __int32 *)(a1 + 4), 1u) ) - { - while ( !*(_DWORD *)a1 ) - Sleep(0); - return 0; - } - a2(); - *(_DWORD *)a1 = 1; - return 0; -} - -//----- (00460CC0) -------------------------------------------------------- -int __cdecl __gthr_win32_key_create(int *a1, int a2) -{ - int v2; // eax - - v2 = TlsAlloc(); - if ( v2 == -1 ) - return GetLastError(); - *a1 = v2; - return __mingwthr_key_dtor(v2, a2); -} - -//----- (00460D00) -------------------------------------------------------- -DWORD __cdecl __gthr_win32_key_delete(DWORD dwTlsIndex) -{ - if ( TlsFree(dwTlsIndex) ) - return 0; - else - return GetLastError(); -} - -//----- (00460D30) -------------------------------------------------------- -LPVOID __cdecl __gthr_win32_getspecific(DWORD dwTlsIndex) -{ - DWORD LastError; // esi - LPVOID Value; // ebx - - LastError = GetLastError(); - Value = TlsGetValue(dwTlsIndex); - SetLastError(LastError); - return Value; -} - -//----- (00460D70) -------------------------------------------------------- -DWORD __cdecl __gthr_win32_setspecific(DWORD dwTlsIndex, LPVOID lpTlsValue) -{ - if ( TlsSetValue(dwTlsIndex, lpTlsValue) ) - return 0; - else - return GetLastError(); -} - -//----- (00460DB0) -------------------------------------------------------- -HANDLE __cdecl __gthr_win32_mutex_init_function(_DWORD *a1) -{ - HANDLE result; // eax - - *a1 = -1; - result = CreateSemaphoreW(0, 0, 0xFFFF, 0); - a1[1] = result; - return result; -} - -//----- (00460DF0) -------------------------------------------------------- -int __cdecl __gthr_win32_mutex_destroy(int a1) -{ - return _IAT_start__(*(_DWORD *)(a1 + 4)); -} -// 76B1F0: using guessed type int __stdcall _IAT_start__(_DWORD); - -//----- (00460E10) -------------------------------------------------------- -int __cdecl __gthr_win32_mutex_lock(int a1) -{ - if ( !_InterlockedAdd((volatile signed __int32 *)a1, 1u) || !WaitForSingleObject(*(HANDLE *)(a1 + 4), 0xFFFFFFFF) ) - return 0; - _InterlockedSub((volatile signed __int32 *)a1, 1u); - return 1; -} - -//----- (00460E60) -------------------------------------------------------- -BOOL __cdecl __gthr_win32_mutex_trylock(volatile signed __int32 *a1) -{ - return _InterlockedCompareExchange(a1, 0, -1) >= 0; -} - -//----- (00460E80) -------------------------------------------------------- -BOOL __cdecl __gthr_win32_mutex_unlock(int a1) -{ - return _InterlockedDecrement((volatile signed __int32 *)a1) >= 0 && !ReleaseSemaphore(*(HANDLE *)(a1 + 4), 1, 0); -} - -//----- (00460ED0) -------------------------------------------------------- -HANDLE __cdecl __gthr_win32_recursive_mutex_init_function(_DWORD *a1) -{ - HANDLE result; // eax - - *a1 = -1; - a1[1] = 0; - a1[2] = 0; - result = CreateSemaphoreW(0, 0, 0xFFFF, 0); - a1[3] = result; - return result; -} - -//----- (00460F20) -------------------------------------------------------- -DWORD __cdecl __gthr_win32_recursive_mutex_lock(int a1) -{ - DWORD CurrentThreadId; // eax - DWORD v2; // esi - DWORD result; // eax - - CurrentThreadId = GetCurrentThreadId(); - v2 = CurrentThreadId; - if ( _InterlockedAdd((volatile signed __int32 *)a1, 1u) ) - { - if ( *(_DWORD *)(a1 + 8) == CurrentThreadId ) - { - _InterlockedSub((volatile signed __int32 *)a1, 1u); - result = 0; - ++*(_DWORD *)(a1 + 4); - } - else - { - result = WaitForSingleObject(*(HANDLE *)(a1 + 12), 0xFFFFFFFF); - if ( result ) - { - _InterlockedSub((volatile signed __int32 *)a1, 1u); - return 1; - } - else - { - *(_DWORD *)(a1 + 4) = 1; - *(_DWORD *)(a1 + 8) = v2; - } - } - } - else - { - *(_DWORD *)(a1 + 4) = 1; - *(_DWORD *)(a1 + 8) = CurrentThreadId; - return 0; - } - return result; -} - -//----- (00460FA0) -------------------------------------------------------- -int __cdecl __gthr_win32_recursive_mutex_trylock(int a1) -{ - DWORD CurrentThreadId; // edx - int result; // eax - - CurrentThreadId = GetCurrentThreadId(); - if ( _InterlockedCompareExchange((volatile signed __int32 *)a1, 0, -1) < 0 ) - { - *(_DWORD *)(a1 + 4) = 1; - result = 0; - *(_DWORD *)(a1 + 8) = CurrentThreadId; - } - else - { - result = 1; - if ( *(_DWORD *)(a1 + 8) == CurrentThreadId ) - { - ++*(_DWORD *)(a1 + 4); - return 0; - } - } - return result; -} - -//----- (00460FF0) -------------------------------------------------------- -BOOL __cdecl __gthr_win32_recursive_mutex_unlock(int a1) -{ - bool v1; // zf - - v1 = (*(_DWORD *)(a1 + 4))-- == 1; - if ( v1 && (*(_DWORD *)(a1 + 8) = 0, _InterlockedDecrement((volatile signed __int32 *)a1) >= 0) ) - return !ReleaseSemaphore(*(HANDLE *)(a1 + 12), 1, 0); - else - return 0; -} - -//----- (00461050) -------------------------------------------------------- -int __cdecl __gthr_win32_recursive_mutex_destroy(int a1) -{ - _IAT_start__(*(_DWORD *)(a1 + 12)); - return 0; -} -// 76B1F0: using guessed type int __stdcall _IAT_start__(_DWORD); - -//----- (00461070) -------------------------------------------------------- -int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, _DWORD *a2@, int *a3@) -{ - int v3; // edi - _DWORD *v6; // eax - int v7; // ecx - int v8; // ebp - int result; // eax - int (__cdecl *v10)(int, int, _DWORD, _DWORD, _DWORD *, _DWORD *); // [esp+28h] [ebp-24h] - - v3 = 1; - v6 = (_DWORD *)*a2; - if ( !*a2 ) - return 2; - while ( 1 ) - { - v10 = (int (__cdecl *)(int, int, _DWORD, _DWORD, _DWORD *, _DWORD *))v6[6]; - if ( v6 == (_DWORD *)a1[4] ) - { - if ( !v10 ) - goto LABEL_14; - v7 = 6; - v8 = 4; - } - else - { - v7 = 2; - v8 = 0; - if ( !v10 ) - goto LABEL_8; - } - result = v10(1, v7, *a1, a1[1], a1, a2); - if ( result == 7 ) - break; - if ( result != 8 ) - return 2; - if ( v8 ) -LABEL_14: - abort(); - v6 = (_DWORD *)*a2; -LABEL_8: - v6 = (_DWORD *)*v6; - ++v3; - *a2 = v6; - if ( !v6 ) - return 2; - } - *a3 = v3; - return result; -} - -//----- (00461130) -------------------------------------------------------- -BOOL fc_key_init() -{ - int v0; // eax - DWORD LastError; // eax - BOOL result; // eax - - v0 = TlsAlloc(); - if ( v0 == -1 ) - { - LastError = GetLastError(); - } - else - { - fc_key = v0; - LastError = __mingwthr_key_dtor(v0, 0); - } - result = LastError == 0; - use_fc_key = result; - return result; -} -// 53E1F0: using guessed type int use_fc_key; - -//----- (00461170) -------------------------------------------------------- -void fc_key_init_once() -{ - int v0; // eax - DWORD LastError; // eax - - if ( !_CRT_MT ) - goto LABEL_4; - if ( once_0 ) - { - if ( use_fc_key < 0 ) -LABEL_4: - use_fc_key = 0; - } - else if ( _InterlockedAdd(&dword_53E1EC, 1u) ) - { - while ( !once_0 ) - Sleep(0); - if ( use_fc_key < 0 ) - use_fc_key = 0; - } - else - { - v0 = TlsAlloc(); - if ( v0 == -1 ) - { - LastError = GetLastError(); - } - else - { - fc_key = v0; - LastError = __mingwthr_key_dtor(v0, 0); - } - once_0 = 1; - use_fc_key = LastError == 0; - } -} -// 53E1E4: using guessed type int _CRT_MT; -// 53E1E8: using guessed type int once_0; -// 53E1EC: using guessed type int dword_53E1EC; -// 53E1F0: using guessed type int use_fc_key; - -//----- (00461250) -------------------------------------------------------- -LPVOID _Unwind_SjLj_GetContext() -{ - int v0; // ebx - DWORD dwTlsIndex; // ebx - DWORD LastError; // esi - LPVOID Value; // ebx - - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - v0 = fc_static; - if ( !use_fc_key ) - return (LPVOID)v0; - } - else - { - v0 = fc_static; - if ( !use_fc_key ) - return (LPVOID)v0; - } - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = TlsGetValue(dwTlsIndex); - SetLastError(LastError); - return Value; -} -// 53E1F0: using guessed type int use_fc_key; -// 769648: using guessed type int fc_static; - -//----- (004612C0) -------------------------------------------------------- -int __usercall uw_install_context_constprop_0@(int a1@) -{ - void *v2; // esi - int v3; // eax - - v2 = *(void **)a1; - v3 = use_fc_key; - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - v3 = use_fc_key; - } - if ( v3 ) - { - if ( !TlsSetValue(fc_key, v2) ) - GetLastError(); - } - else - { - fc_static = (int)v2; - } - return (*(int (**)(void))(*(_DWORD *)a1 + 36))(); -} -// 53E1F0: using guessed type int use_fc_key; -// 769648: using guessed type int fc_static; - -//----- (00461320) -------------------------------------------------------- -int __usercall _Unwind_ForcedUnwind_Phase2@(_DWORD *a1@, void ***a2@, int *a3@) -{ - int v4; // esi - void **i; // eax - int (__cdecl *v7)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // ebp - int result; // eax - void *lpTlsValue; // ecx - int v10; // eax - int (__cdecl *v11)(int, int, _DWORD, _DWORD, _DWORD *, void ***, int); // [esp+20h] [ebp-2Ch] - int v12; // [esp+24h] [ebp-28h] - void *v13; // [esp+28h] [ebp-24h] - - v4 = 1; - v11 = (int (__cdecl *)(int, int, _DWORD, _DWORD, _DWORD *, void ***, int))a1[3]; - v12 = a1[4]; - for ( i = *a2; i; *a2 = i ) - { - while ( 1 ) - { - v7 = (int (__cdecl *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))i[6]; - if ( v11(1, 10, *a1, a1[1], a1, a2, v12) ) - return 2; - if ( v7 ) - { - result = v7(1, 10, *a1, a1[1], a1, a2); - if ( result == 7 ) - goto LABEL_17; - if ( result != 8 ) - return 2; - } - lpTlsValue = **a2; - v10 = use_fc_key; - if ( use_fc_key < 0 ) - { - v13 = **a2; - fc_key_init_once(); - v10 = use_fc_key; - lpTlsValue = v13; - } - if ( v10 ) - break; - fc_static = (int)lpTlsValue; -LABEL_4: - ++v4; - i = (void **)**a2; - *a2 = i; - if ( !i ) - goto LABEL_14; - } - if ( TlsSetValue(fc_key, lpTlsValue) ) - goto LABEL_4; - GetLastError(); - ++v4; - i = (void **)**a2; - } -LABEL_14: - if ( v11(1, 26, *a1, a1[1], a1, a2, v12) ) - return 2; - result = 5; -LABEL_17: - *a3 = v4; - return result; -} -// 53E1F0: using guessed type int use_fc_key; -// 769648: using guessed type int fc_static; - -//----- (004614B0) -------------------------------------------------------- -void __cdecl _Unwind_SjLj_Register(struct SjLj_Function_Context *lpfctx) -{ - int v1; // eax - struct SjLj_Function_Context *v2; // eax - DWORD dwTlsIndex; // esi - DWORD LastError; // edi - struct SjLj_Function_Context *Value; // esi - DWORD v6; // eax - - v1 = use_fc_key; - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - v1 = use_fc_key; - } - if ( v1 ) - { - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = (struct SjLj_Function_Context *)TlsGetValue(dwTlsIndex); - SetLastError(LastError); - v6 = fc_key; - lpfctx->prev = Value; - if ( !TlsSetValue(v6, lpfctx) ) - GetLastError(); - } - else - { - v2 = (struct SjLj_Function_Context *)fc_static; - fc_static = (int)lpfctx; - lpfctx->prev = v2; - } -} -// 53E1F0: using guessed type int use_fc_key; -// 769648: using guessed type int fc_static; - -//----- (00461540) -------------------------------------------------------- -void __cdecl _Unwind_SjLj_Unregister(struct SjLj_Function_Context *lpfctx) -{ - struct SjLj_Function_Context *lpTlsValue; // ebx - int v2; // eax - - lpTlsValue = lpfctx->prev; - v2 = use_fc_key; - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - v2 = use_fc_key; - } - if ( v2 ) - { - if ( !TlsSetValue(fc_key, lpTlsValue) ) - GetLastError(); - } - else - { - fc_static = (int)lpTlsValue; - } -} -// 53E1F0: using guessed type int use_fc_key; -// 769648: using guessed type int fc_static; - -//----- (004615A0) -------------------------------------------------------- -_Unwind_Word __cdecl _Unwind_GetGR(struct _Unwind_Context *lpuctx, int r) -{ - return *(_DWORD *)(*(_DWORD *)lpuctx + 4 * r + 8); -} - -//----- (004615B0) -------------------------------------------------------- -int __cdecl _Unwind_GetCFA(int a1) -{ - int result; // eax - - result = 0; - if ( *(_DWORD *)a1 ) - return *(_DWORD *)(*(_DWORD *)a1 + 40); - return result; -} - -//----- (004615C0) -------------------------------------------------------- -void __cdecl _Unwind_SetGR(struct _Unwind_Context *lpuctx, int r, _Unwind_Word v) -{ - *(_DWORD *)(*(_DWORD *)lpuctx + 4 * r + 8) = v; -} - -//----- (004615E0) -------------------------------------------------------- -int __cdecl _Unwind_GetIP(int a1) -{ - return *(_DWORD *)(*(_DWORD *)a1 + 4) + 1; -} - -//----- (004615F0) -------------------------------------------------------- -int __cdecl _Unwind_GetIPInfo(int a1, _DWORD *a2) -{ - int result; // eax - - *a2 = 0; - result = 0; - if ( *(_DWORD *)a1 ) - return *(_DWORD *)(*(_DWORD *)a1 + 4) + 1; - return result; -} - -//----- (00461610) -------------------------------------------------------- -int __cdecl _Unwind_SetIP(int a1, int a2) -{ - int result; // eax - - result = a2 - 1; - *(_DWORD *)(*(_DWORD *)a1 + 4) = a2 - 1; - return result; -} - -//----- (00461630) -------------------------------------------------------- -int __cdecl _Unwind_GetLanguageSpecificData(int a1) -{ - return *(_DWORD *)(*(_DWORD *)a1 + 28); -} - -//----- (00461640) -------------------------------------------------------- -int _Unwind_GetRegionStart() -{ - return 0; -} - -//----- (00461650) -------------------------------------------------------- -int _Unwind_FindEnclosingFunction() -{ - return 0; -} - -//----- (00461660) -------------------------------------------------------- -int _Unwind_GetDataRelBase() -{ - return 0; -} - -//----- (00461670) -------------------------------------------------------- -int _Unwind_GetTextRelBase() -{ - return 0; -} - -//----- (00461680) -------------------------------------------------------- -_Unwind_Reason_Code __cdecl _Unwind_SjLj_RaiseException(struct _Unwind_Exception *lpuexcpt) -{ - _DWORD *Value; // esi - _DWORD *v2; // eax - int (__cdecl *v3)(int, int, _DWORD, _DWORD, struct _Unwind_Exception *, _DWORD **); // ecx - int v4; // eax - _Unwind_Reason_Code result; // eax - DWORD dwTlsIndex; // esi - DWORD LastError; // edi - _DWORD *v8; // eax - _DWORD *v9; // [esp+28h] [ebp-14h] BYREF - int v10[4]; // [esp+2Ch] [ebp-10h] BYREF - - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - Value = (_DWORD *)fc_static; - if ( !use_fc_key ) - goto LABEL_3; -LABEL_12: - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = TlsGetValue(dwTlsIndex); - SetLastError(LastError); - goto LABEL_3; - } - Value = (_DWORD *)fc_static; - if ( use_fc_key ) - goto LABEL_12; -LABEL_3: - v9 = Value; - if ( !Value ) - return 5; - v2 = Value; - while ( 1 ) - { - v3 = (int (__cdecl *)(int, int, _DWORD, _DWORD, struct _Unwind_Exception *, _DWORD **))v2[6]; - if ( !v3 ) - goto LABEL_8; - v4 = v3(1, 1, *(_DWORD *)lpuexcpt, *((_DWORD *)lpuexcpt + 1), lpuexcpt, &v9); - if ( v4 == 6 ) - break; - if ( v4 != 8 ) - return 3; -LABEL_8: - v2 = (_DWORD *)*v9; - v9 = v2; - if ( !v2 ) - return 5; - } - v8 = v9; - *((_DWORD *)lpuexcpt + 3) = 0; - v9 = Value; - *((_DWORD *)lpuexcpt + 4) = v8; - result = _Unwind_RaiseException_Phase2(lpuexcpt, &v9, v10); - if ( result != _URC_INSTALL_CONTEXT ) - return result; - uw_install_context_constprop_0((int)&v9); - return 3; -} -// 53E1F0: using guessed type int use_fc_key; -// 769648: using guessed type int fc_static; -// 461680: using guessed type int var_10[4]; - -//----- (00461790) -------------------------------------------------------- -_Unwind_Reason_Code __cdecl _Unwind_SjLj_ForcedUnwind( - struct _Unwind_Exception *lpuexcpt, - _Unwind_Stop_Fn pfnstop, - void *pdata) -{ - void **Value; // esi - _Unwind_Reason_Code result; // eax - DWORD dwTlsIndex; // esi - DWORD LastError; // edi - void **v7; // [esp+18h] [ebp-14h] BYREF - int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - Value = (void **)fc_static; - if ( !use_fc_key ) - goto LABEL_3; - } - else - { - Value = (void **)fc_static; - if ( !use_fc_key ) - goto LABEL_3; - } - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = (void **)TlsGetValue(dwTlsIndex); - SetLastError(LastError); -LABEL_3: - v7 = Value; - *((_DWORD *)lpuexcpt + 3) = pfnstop; - *((_DWORD *)lpuexcpt + 4) = pdata; - result = _Unwind_ForcedUnwind_Phase2(lpuexcpt, &v7, v8); - if ( result == _URC_INSTALL_CONTEXT ) - { - uw_install_context_constprop_0((int)&v7); - _Unwind_SjLj_Resume(lpuexcpt); - } - return result; -} -// 53E1F0: using guessed type int use_fc_key; -// 769648: using guessed type int fc_static; -// 461790: using guessed type int var_10[4]; - -//----- (00461830) -------------------------------------------------------- -void __cdecl __noreturn _Unwind_SjLj_Resume(struct _Unwind_Exception *lpuexcpt) -{ - LPVOID Context; // eax - int *v2; // ecx - void ***v3; // edx - struct _Unwind_Exception *v4; // eax - int i; // eax - LPVOID v6; // [esp+8h] [ebp-14h] BYREF - int v7[4]; // [esp+Ch] [ebp-10h] BYREF - - Context = _Unwind_SjLj_GetContext(); - v2 = v7; - v3 = (void ***)&v6; - v6 = Context; - v4 = lpuexcpt; - if ( *((_DWORD *)lpuexcpt + 3) ) - goto LABEL_5; - for ( i = _Unwind_RaiseException_Phase2(lpuexcpt, &v6, v7); ; i = _Unwind_ForcedUnwind_Phase2(v4, v3, v2) ) - { - if ( i != 7 ) - abort(); - v4 = (struct _Unwind_Exception *)uw_install_context_constprop_0((int)&v6); -LABEL_5: - ; - } -} -// 461866: variable 'v3' is possibly undefined -// 461866: variable 'v2' is possibly undefined -// 461830: using guessed type int var_10[4]; - -//----- (00461880) -------------------------------------------------------- -_Unwind_Reason_Code __cdecl __noreturn _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *lpuexcpt) -{ - void **Context; // [esp+8h] [ebp-14h] BYREF - int v3[4]; // [esp+Ch] [ebp-10h] BYREF - - if ( *((_DWORD *)lpuexcpt + 3) ) - { - Context = (void **)_Unwind_SjLj_GetContext(); - if ( _Unwind_ForcedUnwind_Phase2(lpuexcpt, &Context, v3) == 7 ) - uw_install_context_constprop_0((int)&Context); - abort(); - } - return _Unwind_SjLj_RaiseException(lpuexcpt); -} -// 461880: using guessed type int var_10[4]; - -//----- (004618D0) -------------------------------------------------------- -void __cdecl _Unwind_DeleteException(struct _Unwind_Exception *lpuexcpt) -{ - void (__cdecl *v1)(int, struct _Unwind_Exception *); // eax - - v1 = (void (__cdecl *)(int, struct _Unwind_Exception *))*((_DWORD *)lpuexcpt + 2); - if ( v1 ) - v1(1, lpuexcpt); -} - -//----- (004618F0) -------------------------------------------------------- -_Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn pfntrace, void *lpdata) -{ - LPVOID Value; // ebx - DWORD dwTlsIndex; // ebx - DWORD LastError; // ebp - int v6[8]; // [esp+1Ch] [ebp-20h] BYREF - - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - Value = (LPVOID)fc_static; - if ( !use_fc_key ) - goto LABEL_3; -LABEL_11: - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = TlsGetValue(dwTlsIndex); - SetLastError(LastError); - goto LABEL_3; - } - Value = (LPVOID)fc_static; - if ( use_fc_key ) - goto LABEL_11; -LABEL_3: - v6[0] = (int)Value; - while ( Value ) - { - if ( pfntrace((struct _Unwind_Context *)v6, lpdata) ) - return 3; - Value = *(LPVOID *)v6[0]; - v6[0] = *(_DWORD *)v6[0]; - } - if ( pfntrace((struct _Unwind_Context *)v6, lpdata) == _URC_NO_REASON ) - return 5; - return 3; -} -// 53E1F0: using guessed type int use_fc_key; -// 769648: using guessed type int fc_static; - -//----- (004619B0) -------------------------------------------------------- -void __cdecl emutls_destroy(int *a1) -{ - int v1; // edi - int v2; // ebx - int v3; // eax - - v1 = *a1; - if ( *a1 ) - { - v2 = 0; - do - { - v3 = a1[v2 + 1]; - if ( v3 ) - free(*(void **)(v3 - 4)); - ++v2; - } - while ( v1 != v2 ); - } - free(a1); -} - -//----- (00461A00) -------------------------------------------------------- -_DWORD *__usercall emutls_alloc@(size_t *a1@) -{ - unsigned int v2; // ebp - size_t v3; // edi - _DWORD *v4; // eax - _DWORD *v5; // ebx - const void *Src; // eax - void *v8; // eax - size_t v9; // [esp+8h] [ebp-24h] - - v2 = a1[1]; - v3 = *a1; - if ( v2 > 4 ) - { - v8 = malloc(v2 + v3 + 3); - if ( v8 ) - { - v5 = (_DWORD *)(-v2 & ((unsigned int)v8 + v2 + 3)); - *(v5 - 1) = v8; - Src = (const void *)a1[3]; - v9 = v3; - if ( Src ) - goto LABEL_4; - goto LABEL_7; - } -LABEL_8: - abort(); - } - v4 = malloc(v3 + 4); - if ( !v4 ) - goto LABEL_8; - *v4 = v4; - v5 = v4 + 1; - Src = (const void *)a1[3]; - v9 = v3; - if ( Src ) - { -LABEL_4: - memcpy(v5, Src, v9); - return v5; - } -LABEL_7: - memset(v5, 0, v9); - return v5; -} - -//----- (00461AA0) -------------------------------------------------------- -DWORD emutls_init() -{ - int v0; // eax - DWORD result; // eax - - emutls_mutex = -1; - hHandle = CreateSemaphoreW(0, 0, 0xFFFF, 0); - v0 = TlsAlloc(); - if ( v0 == -1 ) - { - result = GetLastError(); - } - else - { - emutls_key = v0; - result = __mingwthr_key_dtor(v0, (int)emutls_destroy); - } - if ( result ) - abort(); - return result; -} -// 769654: using guessed type int emutls_mutex; - -//----- (00461B20) -------------------------------------------------------- -_DWORD *__cdecl __emutls_get_address(size_t *a1) -{ - _DWORD *result; // eax - unsigned int v2; // edi - DWORD dwTlsIndex; // ebx - DWORD LastError; // esi - unsigned int *Value; // ebx - unsigned int v6; // edx - unsigned int v7; // edi - unsigned int *v8; // eax - int v9; // ecx - unsigned int *v10; // eax - int v11; // [esp+18h] [ebp-24h] - unsigned int v12; // [esp+1Ch] [ebp-20h] - - if ( !_CRT_MT ) - { - result = (_DWORD *)a1[2]; - if ( !result ) - { - result = emutls_alloc(a1); - a1[2] = (size_t)result; - } - return result; - } - v2 = a1[2]; - if ( !v2 ) - { - if ( !_CRT_MT ) - goto LABEL_27; - if ( once_0_0 ) - goto LABEL_38; - if ( _InterlockedAdd(&dword_53E1F8, 1u) ) - { - while ( !once_0_0 ) - Sleep(0); - } - else - { - emutls_init(); - once_0_0 = 1; - } - if ( _CRT_MT ) - { -LABEL_38: - if ( _InterlockedAdd(&emutls_mutex, 1u) && WaitForSingleObject(hHandle, 0xFFFFFFFF) ) - _InterlockedSub(&emutls_mutex, 1u); - v2 = a1[2]; - if ( v2 ) - goto LABEL_14; - } - else - { -LABEL_27: - v2 = a1[2]; - if ( v2 ) - goto LABEL_5; - } - v2 = emutls_size + 1; - emutls_size = v2; - a1[2] = v2; -LABEL_14: - if ( _CRT_MT && _InterlockedDecrement(&emutls_mutex) >= 0 ) - ReleaseSemaphore(hHandle, 1, 0); - } -LABEL_5: - dwTlsIndex = emutls_key; - LastError = GetLastError(); - Value = (unsigned int *)TlsGetValue(dwTlsIndex); - SetLastError(LastError); - if ( !Value ) - { - v8 = (unsigned int *)calloc(v2 + 33, 4u); - Value = v8; - if ( v8 ) - { - *v8 = v2 + 32; - goto LABEL_19; - } -LABEL_35: - abort(); - } - v6 = *Value; - if ( *Value < v2 ) - { - v9 = 2 * v6; - v12 = *Value; - if ( v2 > 2 * v6 ) - v9 = v2 + 32; - v11 = v9; - v10 = (unsigned int *)realloc(Value, 4 * v9 + 4); - Value = v10; - if ( v10 ) - { - *v10 = v11; - memset(&v10[v12 + 1], 0, 4 * (v11 - v12)); -LABEL_19: - if ( !TlsSetValue(emutls_key, Value) ) - GetLastError(); - goto LABEL_7; - } - goto LABEL_35; - } -LABEL_7: - v7 = v2 - 1; - result = (_DWORD *)Value[v7 + 1]; - if ( !result ) - { - result = emutls_alloc(a1); - Value[v7 + 1] = (unsigned int)result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53E1F4: using guessed type int once_0_0; -// 53E1F8: using guessed type int dword_53E1F8; -// 76964C: using guessed type int emutls_size; -// 769654: using guessed type int emutls_mutex; - -//----- (00461DC0) -------------------------------------------------------- -unsigned int *__cdecl __emutls_register_common(unsigned int *a1, unsigned int a2, unsigned int a3, unsigned int a4) -{ - unsigned int *result; // eax - - result = a1; - if ( *a1 < a2 ) - { - *a1 = a2; - a1[3] = 0; - } - if ( a1[1] < a3 ) - a1[1] = a3; - if ( a4 ) - { - if ( *a1 == a2 ) - a1[3] = a4; - } - return result; -} - -//----- (00461E00) -------------------------------------------------------- -long double __cdecl __mingw_strtod(unsigned __int8 *a1, unsigned __int8 **a2) -{ - char v2; // al - double v4; // [esp+28h] [ebp-24h] - int v5; // [esp+34h] [ebp-18h] BYREF - double v6; // [esp+38h] [ebp-14h] BYREF - - v2 = __strtodg(a1, a2, fpi_0, &v5, &v6); - switch ( v2 & 7 ) - { - case 0: - case 6: - v4 = 0.0; - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 1: - LODWORD(v4) = LODWORD(v6); - HIDWORD(v4) = HIDWORD(v6) & 0xFFEFFFFF | ((v5 + 1075) << 20); - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 2: - v4 = v6; - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 3: - v4 = INFINITY; - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 4: - v4 = NAN; - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 5: - *(_QWORD *)&v4 = *(_QWORD *)&v6 | 0x7FF0000000000000LL; - goto LABEL_3; - default: -LABEL_3: - if ( (v2 & 8) != 0 ) -LABEL_4: - HIDWORD(v4) |= 0x80000000; - break; - } - return v4; -} -// 461E5A: variable 'v4' is possibly undefined -// 53E1FC: using guessed type int fpi_0[6]; - -//----- (00461F20) -------------------------------------------------------- -long double __cdecl __mingw_strtof(unsigned __int8 *a1, unsigned __int8 **a2) -{ - char v2; // al - float v3; // edx - float v5; // [esp+38h] [ebp-14h] BYREF - int v6[4]; // [esp+3Ch] [ebp-10h] BYREF - - v2 = __strtodg(a1, a2, fpi0_0, v6, &v5); - switch ( v2 & 7 ) - { - case 1: - case 5: - LODWORD(v3) = LODWORD(v5) & 0x7FFFFF | ((v6[0] + 150) << 23); - break; - case 2: - v3 = v5; - break; - case 3: - v3 = INFINITY; - break; - case 4: - v3 = NAN; - break; - default: - v3 = 0.0; - break; - } - if ( (v2 & 8) != 0 ) - LODWORD(v3) |= 0x80000000; - return v3; -} -// 53E214: using guessed type int fpi0_0[6]; -// 461F20: using guessed type int var_10[4]; - -//----- (00461FC0) -------------------------------------------------------- -wint_t __cdecl btowc(int Ch) -{ - wint_t result; // ax - unsigned int CodePage; // eax - CHAR MultiByteStr; // [esp+2Dh] [ebp-Fh] BYREF - WCHAR WideCharStr[7]; // [esp+2Eh] [ebp-Eh] BYREF - - result = -1; - if ( Ch != -1 ) - { - MultiByteStr = Ch; - WideCharStr[0] = -1; - CodePage = ___lc_codepage_func(); - MultiByteToWideChar(CodePage, 8u, &MultiByteStr, 1, WideCharStr, 1); - return WideCharStr[0]; - } - return result; -} -// 461FC0: using guessed type WCHAR WideCharStr[7]; - -//----- (00462030) -------------------------------------------------------- -int __cdecl __asctoe64(char *Str, long double *a2) -{ - char *v2; // edi - size_t v3; // eax - char *v4; // esi - int v5; // eax - void *v6; // esp - void *v7; // esp - int i; // esi - int v9; // ebx - int v10; // eax - int *v11; // edx - char *v12; // esi - char *v13; // eax - char v14; // al - char *v15; // esi - char *v16; // ebx - char *v18; // edx - char v19; // al - int v20; // edx - __int16 *v21; // ebx - int v22; // ecx - __int16 v23; // ax - int v24; // ecx - __int16 *v25; // ebx - __int16 j; // ax - __int16 v27; // ax - __int16 *v28; // ecx - __int16 v29; // ax - int v30; // esi - char *v31; // esi - int v32; // eax - char v33; // al - int v34; // ecx - int v35; // edx - int v36; // ebx - int v37; // edx - __int16 *v38; // ecx - __int16 k; // ax - __int16 v40; // ax - int v41; // edx - __int16 *v42; // ecx - __int16 v43; // ax - __int16 *v44; // edx - __int16 v45; // ax - bool v46; // zf - int v47; // eax - long double v48; // fst6 - __int16 v49; // fps - int v54; // eax - char *v55; // ebx - int v56; // esi - __int64 *v57; // eax - int v58; // edi - int v59; // ebx - int v60; // ebx - int v61; // eax - int v62; // ebx - int v63; // [esp+0h] [ebp-B8h] - int v64; // [esp+20h] [ebp-98h] BYREF - int v65; // [esp+28h] [ebp-90h] - int v66; // [esp+2Ch] [ebp-8Ch] - int v67; // [esp+30h] [ebp-88h] - int v68; // [esp+34h] [ebp-84h] - __int64 *v69; // [esp+38h] [ebp-80h] - int v70; // [esp+3Ch] [ebp-7Ch] - char *v71; // [esp+40h] [ebp-78h] - unsigned __int16 v72; // [esp+46h] [ebp-72h] - int v73; // [esp+48h] [ebp-70h] - int v74; // [esp+4Ch] [ebp-6Ch] - int *v75; // [esp+50h] [ebp-68h] - int v76; // [esp+54h] [ebp-64h] - int v77; // [esp+58h] [ebp-60h] - char *String2; // [esp+5Ch] [ebp-5Ch] - __int64 v79; // [esp+6Ah] [ebp-4Eh] BYREF - int v80; // [esp+72h] [ebp-46h] - int v81; // [esp+76h] [ebp-42h] - __int16 v82; // [esp+7Ah] [ebp-3Eh] BYREF - __int64 v83; // [esp+7Ch] [ebp-3Ch] BYREF - int v84; // [esp+84h] [ebp-34h] - int v85; // [esp+88h] [ebp-30h] - __int16 v86; // [esp+8Ch] [ebp-2Ch] BYREF - char v87[2]; // [esp+8Eh] [ebp-2Ah] BYREF - unsigned __int16 v88; // [esp+90h] [ebp-28h] - - v2 = Str; - LOBYTE(v74) = *localeconv()->decimal_point; - v3 = strlen(Str); - v4 = (char *)(v3 + 2); - v5 = 16 * ((v3 + 29) >> 4); - v6 = alloca(v5); - v7 = alloca(v5); - String2 = v4; - v75 = &v64; - for ( i = 0; ; ++i ) - { - v9 = (unsigned __int8)*v2; - v10 = isspace(v9); - if ( !v10 ) - break; - ++v2; - } - v67 = i; - v11 = v75; - v68 = 0; - v12 = String2; - while ( 1 ) - { - v11 = (int *)((char *)v11 + 1); - *((_BYTE *)v11 - 1) = v9; - if ( !(_BYTE)v9 ) - break; - if ( (int)v12 <= ++v10 ) - break; - LOBYTE(v9) = v2[v10]; - } - v13 = (char *)v75; - *(_BYTE *)v11 = 0; - v14 = *v13; - if ( v14 == 45 ) - { - String2 = (char *)v75 + 1; - v72 = -1; - } - else - { - v72 = 0; - String2 = (char *)v75 + (v14 == 43); - } - if ( !_strnicmp(String1, String2, 3u) ) - { - v31 = String2; - v16 = String2 + 3; - v32 = _strnicmp("INITY", String2 + 3, 5u); - HIDWORD(v79) = 0; - v80 = 0; - if ( !v32 ) - v16 = v31 + 8; - v81 = 0; - v82 = 0; - WORD1(v79) = 0x7FFF; - goto LABEL_13; - } - v15 = String2; - if ( !_strnicmp(off_55A6CA, String2, 3u) ) - { - *(_DWORD *)((char *)&v79 + 2) = 0x7FFF; - v80 = 0; - v16 = v15 + 3; - HIWORD(v79) = -16384; - v81 = 0; - v82 = 0; -LABEL_13: - LOWORD(v79) = v72; - __toe64(&v79, (int)a2); - return v67 + v16 - (char *)v75; - } - v18 = String2; - v79 = 0LL; - v19 = *String2; - v80 = 0; - v81 = 0; - v82 = 0; - if ( v19 == 48 ) - { - do - v19 = *++v18; - while ( v19 == 48 ); - String2 = v18; - v65 = 1; - } - else - { - v65 = 0; - } - v70 = 0; - v73 = 0; - v66 = 0; - v71 = 0; - v76 = 0; - while ( 1 ) - { - v77 = v19 - 48; - if ( (unsigned int)v77 <= 9 ) - { - v20 = WORD2(v79); - if ( WORD2(v79) ) - { - v66 |= v77; - v71 = (char *)((__PAIR64__((unsigned int)v71, v76) - 1) >> 32); - } - else - { - v21 = &v82; - v71 += -(v76 == 0) + 1; - v22 = 0; - do - { - if ( *v21 < 0 ) - v22 |= 1u; - v23 = 2 * *v21; - if ( (v22 & 2) != 0 ) - v23 |= 1u; - --v21; - v22 *= 2; - v21[1] = v23; - } - while ( v21 != (__int16 *)((char *)&v79 + 2) ); - v24 = 0; - v69 = &v83; - v86 = 0; - v25 = &v86; - v83 = v79; - v84 = v80; - v85 = v81; - for ( j = 0; ; j = *v25 ) - { - if ( j < 0 ) - v24 |= 1u; - v27 = 2 * j; - if ( (v24 & 2) != 0 ) - v27 |= 1u; - --v25; - v24 *= 2; - v25[1] = v27; - if ( v25 == (__int16 *)((char *)&v83 + 2) ) - break; - } - v28 = &v86; - do - { - if ( *v28 < 0 ) - v20 |= 1u; - v29 = 2 * *v28; - if ( (v20 & 2) != 0 ) - v29 |= 1u; - --v28; - v20 *= 2; - v28[1] = v29; - } - while ( v28 != (__int16 *)((char *)&v83 + 2) ); - v30 = (int)v69; - __eaddm((int)v69, (int)&v79); - *(_DWORD *)v30 = 0; - *(_DWORD *)(v30 + 4) = 0; - *(_DWORD *)(v30 + 8) = 0; - *(_DWORD *)(v30 + 12) = 0; - *(_WORD *)(v30 + 16) = 0; - HIWORD(v85) = v77; - __eaddm(v30, (int)&v79); - } - ++v70; - v73 |= v77; - goto LABEL_23; - } - if ( (_BYTE)v74 != v19 ) - break; - if ( v76 ) - { - v76 = v65 | v70; - goto LABEL_66; - } - v76 = 1; -LABEL_23: - v19 = *++String2; - } - v76 = v65 | v70; - if ( (v19 & 0xDF) == 69 ) - { - if ( v65 | v70 ) - { - v33 = String2[1]; - if ( v33 == 45 ) - { - v34 = -1; - v16 = String2 + 2; - v33 = String2[2]; - } - else - { - v16 = String2 + 1; - v34 = 1; - } - if ( v33 == 43 ) - v33 = *++v16; - if ( (unsigned __int8)(v33 - 48) <= 9u ) - { - v35 = v68; - do - { - if ( v35 <= 4977 ) - v35 = (char)(v33 - 48) + 10 * v35; - v33 = *++v16; - } - while ( (unsigned __int8)(v33 - 48) <= 9u ); - v68 = v35; - if ( v34 == -1 ) - { - if ( v35 > 4977 ) - { - v82 = 0; - v79 = v72; - v80 = 0; - v81 = 0; - __toe64(&v79, (int)a2); - if ( !v73 ) - return v67 + v16 - (char *)v75; - String2 = v16; - goto LABEL_93; - } - String2 = v16; - v68 = -v35; - } - else - { - if ( v68 > 4977 ) - { - v79 = 0LL; - v82 = 0; - v80 = 0; - v81 = 0; - if ( !v73 ) - goto LABEL_13; - WORD1(v79) = 0x7FFF; - LOWORD(v79) = v72; - __toe64(&v79, (int)a2); - String2 = v16; - goto LABEL_93; - } - String2 = v16; - } - } - } - else - { - v68 = 0; - } - } -LABEL_66: - v77 = v68 - (_DWORD)v71; - if ( v68 - (int)v71 > 0 ) - { - while ( 1 ) - { - v36 = WORD2(v79); - if ( WORD2(v79) ) - break; - v37 = 0; - v38 = &v86; - v86 = 0; - v83 = v79; - v84 = v80; - v85 = v81; - for ( k = 0; ; k = *v38 ) - { - if ( k < 0 ) - v37 |= 1u; - v40 = 2 * k; - if ( (v37 & 2) != 0 ) - v40 |= 1u; - --v38; - v37 *= 2; - v38[1] = v40; - if ( v38 == (__int16 *)((char *)&v83 + 2) ) - break; - } - v41 = 0; - v42 = &v86; - do - { - if ( *v42 < 0 ) - v41 |= 1u; - v43 = 2 * *v42; - if ( (v41 & 2) != 0 ) - v43 |= 1u; - --v42; - v41 *= 2; - v42[1] = v43; - } - while ( v42 != (__int16 *)((char *)&v83 + 2) ); - __eaddm((int)&v79, (int)&v83); - v44 = &v86; - do - { - if ( *v44 < 0 ) - v36 |= 1u; - v45 = 2 * *v44; - if ( (v36 & 2) != 0 ) - v45 |= 1u; - --v44; - v36 *= 2; - v44[1] = v45; - } - while ( v44 != (__int16 *)((char *)&v83 + 2) ); - if ( WORD2(v83) ) - break; - v46 = v77-- == 1; - v82 = 0; - v79 = v83; - v80 = v84; - v81 = v85; - if ( v46 ) - { - v47 = __enormlz(&v79); - if ( v47 > 80 ) - goto LABEL_108; - __emdnorm((int)&v79, v66, 0, 16462 - v47, 64, 80); - v74 = WORD1(v79); - goto LABEL_91; - } - } - v54 = __enormlz(&v79); - if ( v54 > 80 ) - goto LABEL_108; - __emdnorm((int)&v79, v66, 0, 16462 - v54, 64, 80); - v70 = 1; - v74 = WORD1(v79); - v71 = v87; -LABEL_101: - v55 = (char *)&unk_55A770; - v56 = 1; - v83 = (unsigned int)__eone; - v84 = 1073709056; - v57 = &v83; - v58 = v77; - do - { - while ( (v56 & v58) == 0 ) - { - v55 -= 12; - v56 *= 2; - if ( v55 == (char *)&unk_55A6D4 ) - goto LABEL_105; - } - v56 *= 2; - v63 = (int)v55; - v55 -= 12; - v77 = (int)v57; - __emul(v63, (int)v57, (int)v57); - v57 = (__int64 *)v77; - } - while ( v55 != (char *)&unk_55A6D4 ); -LABEL_105: - __emovi((int)v57, (int)v71); - if ( v70 == -1 ) - { - v60 = v74 - v88; - v77 = __edivm((int)v71, (int *)&v79); - v74 = v60 + 0x3FFF; - } - else - { - v59 = v74 + v88; - v77 = __emulm((int)v71, (int)&v79); - v74 = v59 - 16382; - } - goto LABEL_91; - } - v61 = __enormlz(&v79); - if ( v61 > 80 ) - { -LABEL_108: - v79 = 0LL; - v80 = 0; - v81 = 0; - v82 = 0; - } - else - { - __emdnorm((int)&v79, v66, 0, 16462 - v61, 64, 80); - v74 = WORD1(v79); - if ( v77 ) - { - if ( v77 < -4096 ) - { - v71 = v87; - __emovi((int)&__etens, (int)v87); - v62 = v74 - v88; - __edivm((int)v87, (int *)&v79); - v70 = -1; - v74 = v62 + 0x3FFF; - v77 = -4096 - v77; - } - else - { - v70 = -1; - v77 = (int)&v71[-v68]; - v71 = v87; - } - goto LABEL_101; - } -LABEL_91: - __emdnorm((int)&v79, v77, 0, v74, 64, 64); - } - LOWORD(v79) = v72; - __toe64(&v79, (int)a2); - if ( !v73 ) - goto LABEL_95; -LABEL_93: - v48 = *a2; - _FST7 = v48; - if ( v48 == 0.0 ) - goto LABEL_98; - __asm { fxam } - if ( (v49 & 0x4500) == 1280 ) -LABEL_98: - *_errno() = 34; -LABEL_95: - if ( !v76 ) - return v76; - v16 = String2; - return v67 + v16 - (char *)v75; -} -// 55A77C: using guessed type int __eone; - -//----- (00462A00) -------------------------------------------------------- -long double __cdecl strtold(const char *String, char **EndPtr) -{ - int v2; // eax - long double v4[2]; // [esp+14h] [ebp-18h] BYREF - - v4[0] = 0.0; - v2 = __asctoe64((char *)String, v4); - if ( EndPtr ) - *EndPtr = (char *)&String[v2]; - return v4[0]; -} -// 462A00: using guessed type long double var_18[2]; - -//----- (00462A50) -------------------------------------------------------- -unsigned __int64 __cdecl strtoull(const char *String, char **EndPtr, int Radix) -{ - const char *v3; // esi - int C; // ebx - char v5; // al - int v6; // edi - unsigned int v7; // eax - int v8; // eax - int v9; // edx - int v10; // ecx - int v11; // edi - char *v12; // ebp - int v13; // esi - int v14; // edi - unsigned int v15; // ebx - unsigned __int64 v16; // rax - int v17; // ebx - int *v18; // eax - int *v20; // eax - unsigned int v21; // [esp+24h] [ebp-28h] - int v22; // [esp+28h] [ebp-24h] - char v23; // [esp+2Fh] [ebp-1Dh] - - v3 = String; - if ( EndPtr ) - *EndPtr = (char *)String; - if ( Radix == 1 || (unsigned int)Radix > 0x24 ) - { - v18 = _errno(); - v9 = 0; - v10 = 0; - *v18 = 33; - return __PAIR64__(v10, v9); - } - while ( 1 ) - { - C = *v3; - if ( !isspace(C) ) - break; - ++v3; - } - v23 = C; - v5 = C; - if ( (((_BYTE)C - 43) & 0xFD) == 0 ) - v5 = *++v3; - if ( Radix ) - { - if ( Radix != 16 || v5 != 48 ) - { -LABEL_12: - v6 = v5; - v7 = v5 - 48; - if ( v7 <= 9 ) - { - v21 = Radix; - v11 = v7; - } - else if ( isupper(v6) ) - { - v11 = v6 - 55; - v21 = Radix; - } - else - { - v8 = islower(v6); - v9 = 0; - v10 = 0; - if ( !v8 ) - return __PAIR64__(v10, v9); - v11 = v6 - 87; - v21 = Radix; - } - goto LABEL_16; - } - if ( (v3[1] & 0xDF) == 88 ) - { -LABEL_36: - v5 = v3[2]; - Radix = 16; - v3 += 2; - goto LABEL_12; - } - v21 = 16; - } - else - { - Radix = 10; - if ( v5 != 48 ) - goto LABEL_12; - if ( (v3[1] & 0xDF) == 88 ) - goto LABEL_36; - v21 = 8; - Radix = 8; - } - v11 = 0; -LABEL_16: - v12 = (char *)(v3 + 1); - v9 = 0; - v10 = 0; - if ( v11 >= v21 ) - return __PAIR64__(v10, v9); - v13 = v11; - v22 = 0; - v14 = v11 >> 31; - while ( 1 ) - { - v17 = *v12; - if ( (unsigned int)(v17 - 48) <= 9 ) - { - v15 = v17 - 48; - goto LABEL_19; - } - if ( isupper(*v12) ) - { - v15 = v17 - 55; - goto LABEL_19; - } - if ( !islower(v17) ) - break; - v15 = v17 - 87; -LABEL_19: - if ( v15 >= v21 ) - break; - if ( 0xFFFFFFFFFFFFFFFFLL / Radix + 1 < __PAIR64__(v14, v13) - || (v16 = (int)v15 + Radix * __PAIR64__(v14, v13), v16 < __PAIR64__(v14, v13)) ) - { - v22 = 1; - } - else - { - v14 = HIDWORD(v16); - v13 = v16; - } - ++v12; - } - v9 = v13; - v10 = v14; - if ( EndPtr ) - *EndPtr = v12; - if ( v22 ) - { - v20 = _errno(); - v9 = -1; - v10 = -1; - *v20 = 34; - } - else if ( v23 == 45 ) - { - v10 = (unsigned __int64)-__SPAIR64__(v14, v13) >> 32; - v9 = -v13; - } - return __PAIR64__(v10, v9); -} - -//----- (00462D20) -------------------------------------------------------- -int __cdecl wctob(wint_t WCh) -{ - unsigned int CodePage; // eax - CHAR MultiByteStr; // [esp+29h] [ebp-13h] BYREF - WCHAR WideCharStr; // [esp+2Ah] [ebp-12h] BYREF - BOOL UsedDefaultChar; // [esp+2Ch] [ebp-10h] BYREF - - UsedDefaultChar = 0; - WideCharStr = WCh; - CodePage = ___lc_codepage_func(); - if ( !WideCharToMultiByte(CodePage, 0, &WideCharStr, 1, &MultiByteStr, 1, 0, &UsedDefaultChar) || UsedDefaultChar ) - return -1; - else - return MultiByteStr; -} - -//----- (00462DA0) -------------------------------------------------------- -wctype_t __cdecl wctype(const char *name) -{ - const char *Str2; // eax - int v2; // ebx - - Str2 = "alnum"; - v2 = 0; - while ( strcmp(name, Str2) ) - { - if ( ++v2 == 11 ) - return 0; - Str2 = (&cmap)[2 * v2]; - } - return word_55A804[4 * v2]; -} -// 55A800: using guessed type char *cmap; -// 55A804: using guessed type __int16 word_55A804[]; - -//----- (00462E00) -------------------------------------------------------- -int __cdecl fseeko64(FILE *Stream, fpos_t a2, int a3) -{ - int v4; // eax - fpos_t Position[4]; // [esp+18h] [ebp-24h] BYREF - - switch ( a3 ) - { - case 1: - if ( !fgetpos(Stream, Position) ) - { - Position[0] += a2; - return fsetpos(Stream, Position); - } - return -1; - case 2: - fflush(Stream); - v4 = _fileno(Stream); - Position[0] = _filelengthi64(v4) + a2; - return fsetpos(Stream, Position); - case 0: - Position[0] = a2; - return fsetpos(Stream, Position); - default: - *_errno() = 22; - return -1; - } -} - -//----- (00462EC0) -------------------------------------------------------- -fpos_t __cdecl ftello64(FILE *Stream) -{ - fpos_t Position[2]; // [esp+18h] [ebp-14h] BYREF - - if ( fgetpos(Stream, Position) ) - return -1LL; - else - return Position[0]; -} -// 462EC0: using guessed type fpos_t var_14[2]; - -//----- (00462F10) -------------------------------------------------------- -int __cdecl __mingw_vfprintf(FILE *Stream, char *a2, int *a3) -{ - int v3; // ebx - - _lock_file(Stream); - v3 = __mingw_pformat(24576, Stream, 0, a2, a3); - _unlock_file(Stream); - return v3; -} - -//----- (00462F60) -------------------------------------------------------- -int __cdecl __mingw_vsnprintf(FILE *a1, int a2, char *a3, int *a4) -{ - int v4; // eax - bool v5; // cc - int v6; // edx - int v7; // eax - - if ( !a2 ) - return __mingw_pformat(0, a1, 0, a3, a4); - v4 = __mingw_pformat(0, a1, a2 - 1, a3, a4); - v5 = a2 - 1 <= v4; - v6 = v4; - v7 = a2 - 1; - if ( !v5 ) - v7 = v6; - *((_BYTE *)&a1->_ptr + v7) = 0; - return v6; -} - -//----- (00462FE0) -------------------------------------------------------- -int __cdecl __mingw_vsprintf(FILE *a1, char *a2, int *a3) -{ - int result; // eax - - result = __mingw_pformat(0x4000, a1, 0, a2, a3); - *((_BYTE *)&a1->_ptr + result) = 0; - return result; -} - -//----- (00463020) -------------------------------------------------------- -int *__cdecl __increment_D2A(int *a1) -{ - int *v1; // ebx - int v2; // esi - int *v3; // eax - int *result; // eax - int *v5; // edi - - v1 = a1; - v2 = a1[4]; - v3 = a1 + 5; - do - { - if ( *v3 != -1 ) - { - ++*v3; - return a1; - } - *v3++ = 0; - } - while ( &a1[v2 + 5] > v3 ); - if ( v2 >= a1[2] ) - { - v5 = __Balloc_D2A(a1[1] + 1); - memcpy(v5 + 3, a1 + 3, 4 * a1[4] + 8); - v1 = v5; - __Bfree_D2A(a1); - v2 = v5[4]; - } - v1[4] = v2 + 1; - result = v1; - v1[v2 + 5] = 1; - return result; -} - -//----- (004630C0) -------------------------------------------------------- -int __usercall rvOK_constprop_0_isra_0@( - int *a1@, - int *a2@, - char *a3@, - double a4, - int a5, - int a6, - _DWORD *a7) -{ - int *v8; // eax - int v9; // ecx - int v10; // edi - int *Size; // ebx - int v12; // eax - int v13; // edx - int v14; // eax - unsigned int v15; // edx - int v16; // ebp - int v18; // eax - int v19; // esi - int v20; // eax - int v21; // eax - int v22; // edx - int *v23; // eax - int v26; // [esp+24h] [ebp-38h] - int v27; // [esp+28h] [ebp-34h] - int v28; // [esp+2Ch] [ebp-30h] - int v29; // [esp+2Ch] [ebp-30h] - int v30; // [esp+38h] [ebp-24h] BYREF - int v31[8]; // [esp+3Ch] [ebp-20h] BYREF - - v8 = __d2b_D2A(a4, v31, &v30); - v9 = v30; - v10 = *a1; - Size = v8; - v12 = v30 - *a1; - v13 = v12 + v31[0]; - v30 = v12; - v31[0] += v12; - if ( v12 <= 0 ) - { - if ( !a5 ) - { - v16 = 0; - goto LABEL_14; - } - v27 = 0; - v26 = 0; - if ( !v12 ) - goto LABEL_18; - Size = __lshift_D2A(Size, v10 - v9); - goto LABEL_37; - } - if ( v10 == 53 ) - { - v16 = 0; - if ( !a5 || a1[3] != 1 ) - goto LABEL_14; - v27 = __any_on_D2A((int)Size, v12); - if ( !v27 ) - { - __rshift_D2A((int)Size, v30); - v26 = 0; - v13 = v31[0]; - goto LABEL_18; - } - } - else - { - if ( a6 != 1 ) - { - if ( a6 == 2 ) - { - v27 = __any_on_D2A((int)Size, v12); - __rshift_D2A((int)Size, v30); -LABEL_6: - Size = __increment_D2A(Size); - v14 = v10 & 0x1F; - if ( (v10 & 0x1F) != 0 ) - v14 = 32 - v14; - _BitScanReverse(&v15, Size[Size[4] + 4]); - if ( (v15 ^ 0x1F) == v14 ) - { - v26 = 32; - v13 = v31[0]; - } - else - { - if ( !v27 ) - v27 = Size[5] & 1; - __rshift_D2A((int)Size, 1); - v26 = 32; - v13 = ++v31[0]; - } - goto LABEL_18; - } - if ( v12 == 1 ) - { - v16 = 0; - if ( !a5 ) - goto LABEL_14; - v22 = ((unsigned int)Size[5] >> 1) & 1; - } - else - { - v22 = ((unsigned int)Size[((v12 - 1) >> 5) + 5] >> (v12 - 1)) & 1; - } - v29 = v22; - v27 = __any_on_D2A((int)Size, v12); - v26 = v27 != 0 ? 0x10 : 0; - __rshift_D2A((int)Size, v30); - if ( v29 ) - goto LABEL_6; - goto LABEL_37; - } - v27 = __any_on_D2A((int)Size, v12); - if ( !v27 ) - { - __rshift_D2A((int)Size, v30); - v26 = 0; - goto LABEL_37; - } - } - __rshift_D2A((int)Size, v30); - v26 = 16; -LABEL_37: - v13 = v31[0]; -LABEL_18: - v18 = a1[1]; - if ( v18 <= v13 ) - { - v21 = a1[2]; - if ( v21 < v13 ) - { - v31[0] = v21 + 1; - *a7 = 163; - v26 = 0; - *_errno() = 34; - v13 = v31[0]; - Size[4] = 0; - } - goto LABEL_30; - } - v31[0] = a1[1]; - v28 = v18 - v13; - if ( v10 < v18 - v13 || (v16 = a1[4]) != 0 ) - { - Size[4] = 0; - v13 = v18; - v26 = 0; - *a7 = 80; -LABEL_30: - v16 = 1; - *a2 = v13; - __copybits_D2A(a3, v10, (size_t)Size); - *a7 |= v26; - goto LABEL_14; - } - if ( v28 - 1 > 0 && !v27 ) - v27 = __any_on_D2A((int)Size, v28 - 1); - if ( a5 | v27 ) - { - v19 = Size[((v28 - 1) >> 5) + 5] & (1 << (v28 - 1)); - __rshift_D2A((int)Size, v28); - *a7 = 2; - if ( v19 ) - { - v23 = __increment_D2A(Size); - v26 = 96; - v13 = v31[0]; - Size = v23; - } - else - { - v13 = v31[0]; - v20 = 80; - if ( !v27 ) - v20 = v26; - v26 = v20; - } - goto LABEL_30; - } -LABEL_14: - __Bfree_D2A(Size); - return v16; -} -// 4630C0: using guessed type int var_20[8]; - -//----- (004634A0) -------------------------------------------------------- -_DWORD *__cdecl __decrement_D2A(int a1) -{ - _DWORD *result; // eax - unsigned int v2; // ecx - - result = (_DWORD *)(a1 + 20); - v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); - while ( !*result ) - { - *result++ = -1; - if ( v2 <= (unsigned int)result ) - return result; - } - --*result; - return result; -} - -//----- (004634E0) -------------------------------------------------------- -int *__cdecl __set_ones_D2A(int *a1, int a2) -{ - int *v2; // ebx - int v3; // edi - int *v4; // edi - int v5; // eax - int v6; // eax - unsigned int v7; // eax - size_t Size; // ebp - unsigned int v10; // eax - size_t v11; // edx - - v2 = a1; - v3 = (a2 + 31) >> 5; - if ( a1[1] < v3 ) - { - __Bfree_D2A(a1); - v2 = __Balloc_D2A(v3); - } - v4 = v2 + 5; - v5 = a2 >> 5; - if ( (a2 & 0x1F) != 0 ) - { - v6 = v5 + 1; - v2[4] = v6; - v7 = (unsigned int)&v4[v6]; - if ( v7 > (unsigned int)v4 ) - { - Size = 4 * ((v7 - (unsigned int)v2 - 21) >> 2) + 4; - if ( (unsigned int)v2 + 21 > v7 ) - Size = 4; - v4 = (int *)((char *)v4 + Size); - memset(v2 + 5, 255, Size); - } - *(v4 - 1) = (unsigned int)*(v4 - 1) >> (32 - (a2 & 0x1F)); - return v2; - } - v2[4] = v5; - v10 = (unsigned int)&v4[v5]; - if ( (unsigned int)v4 >= v10 ) - return v2; - v11 = 4 * ((v10 - (unsigned int)v2 - 21) >> 2) + 4; - if ( v10 < (unsigned int)v2 + 21 ) - v11 = 4; - memset(v2 + 5, 255, v11); - return v2; -} - -//----- (004635D0) -------------------------------------------------------- -int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, void *a5) -{ - char *decimal_point; // edi - unsigned __int8 *v6; // ebp - signed __int8 v7; // cl - int v8; // eax - int v9; // ebx - int v10; // edi - unsigned __int8 *v11; // edx - int result; // eax - unsigned __int8 *v13; // edi - size_t v14; // eax - unsigned __int8 *v15; // edx - unsigned __int8 *v16; // esi - int v17; // ecx - unsigned __int8 *v18; // edx - unsigned __int8 *v19; // esi - int v20; // esi - int v21; // edx - unsigned __int8 *v22; // eax - int v23; // eax - int v24; // eax - int v25; // esi - char *v26; // ebx - int v27; // esi - int v28; // edx - int v29; // ecx - int v30; // eax - int v31; // edi - long double v32; // fst7 - int v36; // eax - int v37; // eax - int v38; // ecx - char v39; // al - signed int v40; // esi - long double v41; // fst7 - int *v42; // eax - int v43; // esi - int v44; // edx - int v45; // eax - int v46; // edi - int v47; // edi - int v48; // edx - int v49; // edi - int v50; // edi - int v51; // eax - int *v52; // eax - int v53; // edx - int *v54; // ebx - int v55; // eax - int *v56; // edi - int v57; // esi - int v58; // ebp - int v59; // ebx - int v60; // eax - int v61; // ebx - int v62; // esi - int v63; // edx - int v64; // esi - int v65; // ebp - bool v66; // cc - int v67; // eax - int *v68; // eax - int *v69; // ebp - int v70; // ebx - int v71; // eax - int v72; // eax - int v73; // eax - int *v74; // edx - int *v75; // ebx - _DWORD *v76; // esi - int *v77; // eax - int v78; // edx - unsigned int v79; // ecx - long double v80; // fst7 - long double v81; // fst5 - int v82; // eax - unsigned __int8 *v83; // edx - int v84; // esi - int v85; // esi - int v86; // edi - int v87; // edx - int v88; // esi - int v89; // ecx - int v90; // ecx - int v91; // edx - char v92; // dl - int v93; // eax - long double v94; // fst6 - int v95; // edx - int v96; // ecx - int v97; // edi - int v98; // esi - int v99; // esi - int v100; // ecx - long double v101; // fst6 - char v102; // cl - int v103; // eax - int v104; // ecx - int *v105; // eax - long double v106; // fst7 - int *v107; // eax - int v108; // edx - unsigned int v109; // ecx - bool v110; // zf - int *v111; // eax - long double v112; // fst6 - long double v113; // fst5 - long double v114; // fst6 - int v115; // ebx - int *v116; // eax - int *v117; // esi - int v120; // eax - int v121; // edx - size_t v122; // esi - _DWORD *v123; // eax - int v124; // eax - int v125; // edi - int v126; // ebx - int v127; // esi - int v128; // ecx - int v129; // edx - unsigned int v130; // edi - size_t v131; // edx - int v133; // eax - size_t v134; // eax - int v135; // ecx - double Str; // [esp+0h] [ebp-CCh] - int Size; // [esp+8h] [ebp-C4h] - int v138; // [esp+Ch] [ebp-C0h] - int v139; // [esp+20h] [ebp-ACh] - double v140; // [esp+20h] [ebp-ACh] - int *v141; // [esp+20h] [ebp-ACh] - int v142; // [esp+2Ch] [ebp-A0h] - void *v143; // [esp+2Ch] [ebp-A0h] - int *v144; // [esp+2Ch] [ebp-A0h] - int Val; // [esp+30h] [ebp-9Ch] - char *v146; // [esp+34h] [ebp-98h] - int v147; // [esp+34h] [ebp-98h] - int v148; // [esp+34h] [ebp-98h] - int v149; // [esp+34h] [ebp-98h] - int v150; // [esp+38h] [ebp-94h] - int v151; // [esp+38h] [ebp-94h] - unsigned __int8 *v152; // [esp+38h] [ebp-94h] - int v153; // [esp+40h] [ebp-8Ch] - int v154; // [esp+40h] [ebp-8Ch] - double v155; // [esp+40h] [ebp-8Ch] - int v156; // [esp+48h] [ebp-84h] - int v157; // [esp+48h] [ebp-84h] - int v158; // [esp+4Ch] [ebp-80h] - unsigned __int8 *v159; // [esp+4Ch] [ebp-80h] - int v160; // [esp+4Ch] [ebp-80h] - int *v161; // [esp+4Ch] [ebp-80h] - BOOL v162; // [esp+4Ch] [ebp-80h] - int v163; // [esp+4Ch] [ebp-80h] - int v164; // [esp+50h] [ebp-7Ch] - double v165; // [esp+50h] [ebp-7Ch] - int v166; // [esp+50h] [ebp-7Ch] - unsigned __int8 *i; // [esp+58h] [ebp-74h] - int v168; // [esp+58h] [ebp-74h] - int v169; // [esp+5Ch] [ebp-70h] - int v170; // [esp+5Ch] [ebp-70h] - int v171; // [esp+60h] [ebp-6Ch] - int v172; // [esp+64h] [ebp-68h] - int v173; // [esp+68h] [ebp-64h] - int v174; // [esp+6Ch] [ebp-60h] - int v175; // [esp+70h] [ebp-5Ch] - int *v176; // [esp+74h] [ebp-58h] - int v177; // [esp+78h] [ebp-54h] - void *Src; // [esp+7Ch] [ebp-50h] - int v179; // [esp+80h] [ebp-4Ch] - int v180; // [esp+84h] [ebp-48h] - int v181; // [esp+88h] [ebp-44h] - int v182; // [esp+94h] [ebp-38h] BYREF - int v183; // [esp+98h] [ebp-34h] BYREF - int v184; // [esp+9Ch] [ebp-30h] BYREF - int v185; // [esp+A0h] [ebp-2Ch] BYREF - int v186; // [esp+A4h] [ebp-28h] BYREF - unsigned __int8 *v187; // [esp+A8h] [ebp-24h] BYREF - size_t v188; // [esp+ACh] [ebp-20h] BYREF - - decimal_point = localeconv()->decimal_point; - v184 = 0; - v153 = strlen(decimal_point); - v188 = 0; - Val = *a3; - v187 = a1; - v6 = a1; - while ( 2 ) - { - v7 = *v6; - switch ( *v6 ) - { - case 0u: - goto LABEL_12; - case 9u: - case 0xAu: - case 0xBu: - case 0xCu: - case 0xDu: - case 0x20u: - v187 = ++v6; - continue; - case 0x2Bu: - v173 = 0; - goto LABEL_225; - case 0x2Du: - v173 = 1; -LABEL_225: - v187 = v6 + 1; - v7 = v6[1]; - if ( v7 ) - { - ++v6; -LABEL_4: - v139 = 0; - if ( v7 == 48 ) - { - v22 = v6 + 1; - if ( (v6[1] & 0xDF) == 88 ) - { - v184 = __gethex_D2A(&v187, a3, a4, (int **)&v188, v173); - if ( v184 != 6 ) - goto LABEL_79; - v187 = a1; - v14 = v188; - if ( a2 ) - *a2 = a1; - goto LABEL_35; - } - do - { - v187 = v22; - v6 = v22; - v7 = *v22++; - } - while ( v7 == 48 ); - v14 = 0; - if ( !v7 ) - goto LABEL_31; - v139 = 1; - } - v180 = a3[4]; - v8 = v7; - if ( (unsigned int)(v7 - 48) > 9 ) - { - v142 = 0; - v11 = v6; - v9 = 0; - v156 = 0; - } - else - { - v146 = decimal_point; - v9 = 0; - v142 = 0; - v10 = 0; - do - { - if ( v9 <= 8 ) - { - v10 = v8 + 10 * v10 - 48; - } - else if ( v9 <= 15 ) - { - v142 = v8 + 10 * v142 - 48; - } - v11 = &v6[++v9]; - v187 = &v6[v9]; - v8 = (char)v6[v9]; - v7 = v6[v9]; - } - while ( (unsigned int)(v8 - 48) <= 9 ); - v156 = v10; - decimal_point = v146; - } - if ( *decimal_point == v7 ) - { - if ( !decimal_point[1] ) - { - v82 = 1; -LABEL_182: - v83 = &v11[v82]; - v187 = v83; - v8 = (char)*v83; - if ( v9 ) - { - v84 = v8 - 48; - v147 = v9; - v13 = 0; - for ( i = 0; (unsigned int)(v8 - 48) <= 9; v84 = v8 - 48 ) - { - v163 = v84; - ++v13; - v152 = v187; - if ( v84 ) - { - i = &i[(_DWORD)v13]; - v124 = v147 + 1; - if ( v13 == (unsigned __int8 *)1 ) - { - v128 = v147++; - } - else - { - v125 = (int)&v13[v147]; - v166 = v9; - v170 = v84; - v126 = v147; - v127 = v142; - v128 = v125 - 1; - v147 = v125; - v129 = v156; - while ( 1 ) - { - v130 = v126; - v126 = v124; - if ( v130 <= 8 ) - { - v129 *= 10; - } - else if ( v124 <= 16 ) - { - v127 *= 10; - } - if ( v124 == v128 ) - break; - ++v124; - } - v156 = v129; - v9 = v166; - v142 = v127; - v84 = v170; - } - if ( v128 <= 8 ) - { -LABEL_223: - v13 = 0; - v156 = v163 + 10 * v156; - } - else - { - v13 = 0; - if ( v147 <= 16 ) - v142 = v84 + 10 * v142; - } - } - v187 = v152 + 1; - v8 = (char)v152[1]; - } - } - else - { - if ( v8 == 48 ) - { - v104 = 1 - (_DWORD)v83; - do - { - v13 = &v83[v104]; - v187 = ++v83; - v8 = (char)*v83; - } - while ( v8 == 48 ); - } - else - { - v13 = 0; - } - if ( (unsigned int)(v8 - 49) <= 8 ) - { - v6 = v187; - v147 = 1; - v163 = v8 - 48; - v152 = v187; - i = v13 + 1; - goto LABEL_223; - } - i = 0; - v147 = 0; - } - v150 = 1; -LABEL_20: - if ( (v8 & 0xFFFFFFDF) != 69 ) - { - v158 = 0; - goto LABEL_22; - } - if ( !(v139 | (unsigned int)v13 | v147) ) - goto LABEL_30; - a1 = v187++; - v8 = (char)a1[1]; - if ( (_BYTE)v8 == 43 ) - { - v164 = 0; - } - else - { - if ( (_BYTE)v8 != 45 ) - { - v164 = 0; - goto LABEL_41; - } - v164 = 1; - } - v187 = a1 + 2; - v8 = (char)a1[2]; -LABEL_41: - if ( (unsigned int)(v8 - 48) > 9 ) - { - v158 = 0; - v187 = a1; - } - else - { - if ( v8 == 48 ) - { - v15 = v187 + 1; - do - { - v187 = v15; - v8 = (char)*v15++; - } - while ( v8 == 48 ); - } - v158 = 0; - if ( (unsigned int)(v8 - 49) <= 8 ) - { - v16 = v187; - v17 = v8 - 48; - v159 = v187++; - v8 = (char)v159[1]; - if ( (unsigned int)(v8 - 48) > 9 ) - goto LABEL_289; - v18 = v16 + 2; - do - { - v187 = v18; - v19 = v18++; - v17 = v8 + 10 * v17 - 48; - v8 = (char)*(v18 - 1); - } - while ( (unsigned int)(v8 - 48) <= 9 ); - v20 = v19 - v159; - v160 = 19999; - if ( v20 <= 8 ) - { -LABEL_289: - v121 = 19999; - if ( v17 <= 19999 ) - v121 = v17; - v160 = v121; - } - v21 = -v160; - if ( !v164 ) - v21 = v160; - v158 = v21; - } - } -LABEL_22: - if ( !v147 ) - { - if ( (unsigned int)v13 | v139 ) - goto LABEL_79; - if ( v150 ) - goto LABEL_30; - if ( v8 != 105 ) - { - if ( v8 > 105 ) - { - if ( v8 != 110 ) - goto LABEL_30; -LABEL_29: - if ( !__match_D2A((char **)&v187, "an") ) - goto LABEL_30; - v184 = 4; - *a4 = a3[2] + 1; - if ( *v187 != 40 ) - goto LABEL_79; - v184 = __hexnan_D2A(&v187, a3, (int *)a5); -LABEL_233: - *a4 = a3[2] + 1; - v14 = v188; - goto LABEL_31; - } - if ( v8 != 73 ) - { - if ( v8 != 78 ) - { -LABEL_30: - v184 = 6; - v187 = a1; - v14 = v188; - goto LABEL_31; - } - goto LABEL_29; - } - } - if ( !__match_D2A((char **)&v187, "nf") ) - goto LABEL_30; - --v187; - if ( !__match_D2A((char **)&v187, "inity") ) - ++v187; - v184 = 3; - goto LABEL_233; - } - v184 = 1; - v175 = v158 - (_DWORD)i; - v30 = a3[3] & 3; - v172 = v30 - v173; - if ( v30 != 2 ) - { - v172 = v173 + 1; - if ( v30 != 3 ) - v172 = v30 == 0; - } - v31 = 16; - v32 = (long double)(unsigned int)v156; - if ( !v9 ) - v9 = v147; - if ( v147 <= 16 ) - v31 = v147; - v140 = v32; - if ( v147 > 9 ) - v140 = v32 * dbl_55ABB8[v31] + (long double)(unsigned int)v142; - if ( Val > 53 || v147 > 15 ) - { - v37 = v158 - (_DWORD)i; - goto LABEL_106; - } - if ( !v175 ) - { - v36 = rvOK_constprop_0_isra_0(a3, a4, (char *)a5, v140, 1, v172, &v184); - goto LABEL_98; - } - if ( v175 <= 0 ) - { - v37 = v158 - (_DWORD)i; - if ( v175 < -22 ) - goto LABEL_106; - Str = v140 / __tens_D2A[(_DWORD)&i[-v158]]; - } - else - { - if ( v175 <= 22 ) - { - _EDX = LODWORD(v140); - if ( LODWORD(v140) ) - { - __asm { tzcnt ecx, edx } - v143 = (void *)(53 - _ECX); - } - else - { - _ECX = HIDWORD(v140) | 0x100000; - __asm { tzcnt ecx, ecx } - v143 = (void *)(21 - _ECX); - } - v138 = v172; - Size = (int)v143 + fivesbits[v175] <= 53; - Str = v140 * __tens_D2A[v175]; - v140 = Str; - goto LABEL_97; - } - v40 = v175 + v147 - v31; - if ( 37 - v147 < v175 ) - goto LABEL_107; - Str = v140 * __tens_D2A[15 - v147] * __tens_D2A[v175 - (15 - v147)]; - } - Size = 0; - v140 = Str; - v138 = v172; -LABEL_97: - v36 = rvOK_constprop_0_isra_0(a3, a4, (char *)a5, Str, Size, v138, &v184); -LABEL_98: - if ( v36 ) - goto LABEL_79; - v37 = 0; -LABEL_106: - v40 = v37 + v147 - v31; - if ( v40 <= 0 ) - { - if ( v40 ) - { - v85 = -v40; - if ( (v85 & 0xF) != 0 ) - v140 = v140 / __tens_D2A[v85 & 0xF]; - v40 = v85 & 0xFFFFFFF0; - if ( v40 ) - { - v86 = v40 >> 4; - if ( v40 <= 255 ) - { - v90 = 0; - } - else - { - v87 = v40 >> 4; - v88 = 0; - do - { - v87 -= 16; - v89 = HIDWORD(v140) >> 20; - HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; - v90 = v88 + (v89 & 0x7FF) - 1023; - v88 = v90; - v140 = v140 * 1.0e-256; - } - while ( v87 > 15 ); - v86 &= 0xFu; - } - v91 = (HIDWORD(v140) >> 20) & 0x7FF; - HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; - v40 = v90 + v91 - 1023; - if ( v86 ) - { - v92 = 0; - v93 = 0; - v94 = v140; - do - { - if ( (v86 & 1) != 0 ) - { - v94 = v94 * __tinytens_D2A[v93]; - v92 = 1; - } - ++v93; - v86 >>= 1; - } - while ( v86 ); - if ( !v92 ) - v94 = v140; - v41 = v94; - goto LABEL_111; - } - } - } - goto LABEL_110; - } -LABEL_107: - if ( (v40 & 0xF) != 0 ) - v140 = v140 * __tens_D2A[v40 & 0xF]; - v40 &= 0xFFFFFFF0; - if ( v40 ) - { - v95 = v40 >> 4; - if ( v40 <= 255 ) - { - v99 = 0; - } - else - { - v96 = v40 >> 4; - v97 = 0; - do - { - v96 -= 16; - v98 = HIDWORD(v140) >> 20; - HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; - v99 = v97 + (v98 & 0x7FF) - 1023; - v97 = v99; - v140 = v140 * 1.0e256; - } - while ( v96 > 15 ); - v95 &= 0xFu; - } - v100 = (HIDWORD(v140) >> 20) & 0x7FF; - HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; - v41 = v140; - v40 = v99 + v100 - 1023; - if ( v95 ) - { - v101 = v140; - v102 = 0; - v103 = 0; - do - { - if ( (v95 & 1) != 0 ) - { - v101 = v101 * __bigtens_D2A[v103]; - v102 = 1; - } - ++v103; - v95 >>= 1; - } - while ( v95 ); - if ( !v102 ) - v101 = v140; - v41 = v101; - } - goto LABEL_111; - } -LABEL_110: - v41 = v140; -LABEL_111: - v42 = __d2b_D2A(v41, &v186, &v185); - v43 = v186 + v40; - v188 = (size_t)v42; - v44 = (int)v42; - v45 = v185; - v186 = v43; - v46 = v185 - Val; - if ( v185 - Val > 0 ) - { - __rshift_D2A(v44, v185 - Val); - v45 = Val; - v186 += v46; - v43 = v186; - v185 = Val; - } - v47 = v45 + v43 - Val; - v181 = v47; - if ( a3[2] + 1 < v47 ) - { - v151 = 0; - goto LABEL_264; - } - v48 = a3[1]; - v171 = v48; - if ( v47 >= v48 ) - { - v151 = 0; - } - else - { - v49 = v43 - v48; - if ( v43 - v48 > 0 ) - { - v105 = __lshift_D2A((int *)v188, v43 - v48); - v185 += v49; - v188 = (size_t)v105; - } - else if ( v43 != v48 ) - { - v50 = v45 + v49; - v14 = v188; - v185 = v50; - if ( v50 > 0 ) - { - __rshift_D2A(v188, v48 - v43); - } - else - { - if ( v50 < -1 ) - { - *(_DWORD *)(v188 + 16) = 0; - *(_DWORD *)(v14 + 20) = 0; - *a4 = v48; - if ( !v180 ) - { - v29 = 80; - goto LABEL_78; - } - goto LABEL_260; - } - v185 = 1; - *(_DWORD *)(v188 + 16) = 1; - *(_DWORD *)(v14 + 20) = 1; - } - } - v186 = v171; - if ( v180 ) - { - v51 = v181; - v151 = 1; - v181 = v171; - if ( v51 + 1 < v171 ) - { - v14 = v188; - *(_DWORD *)(v188 + 16) = 0; - *(_DWORD *)(v14 + 20) = 0; - *a4 = v171; - goto LABEL_260; - } - } - else - { - v151 = 1; - v181 = v171; - } - } - v52 = __s2b_D2A((int)v6, v9, v147, v156, v153); - v53 = 0; - v149 = 0; - v54 = v52; - v176 = v52; - v55 = (int)&i[-v158]; - if ( v175 >= 0 ) - v55 = 0; - if ( v175 >= 0 ) - v53 = v158 - (_DWORD)i; - v157 = v55; - Src = v54 + 3; - v174 = v53; - v177 = Val + 1; - while ( 1 ) - { - v144 = __Balloc_D2A(v176[1]); - memcpy(v144 + 3, Src, 4 * v176[4] + 8); - v56 = __Balloc_D2A(*(_DWORD *)(v188 + 4)); - memcpy(v56 + 3, (const void *)(v188 + 12), 4 * *(_DWORD *)(v188 + 16) + 8); - v57 = v185; - v58 = v186; - v59 = v186 + v149; - v154 = v185 - v149; - v141 = __i2b_D2A(1); - if ( v59 < 0 ) - { - v60 = v174 - v59; - v61 = v157; - } - else - { - v60 = v174; - v61 = v157 + v59; - } - v62 = v58 + v57 - Val; - v63 = v177 - v154; - if ( v171 > v62 ) - v63 = v177 - v154 + v62 - v171; - v64 = v61 + v63; - v65 = v60 + v63; - v66 = v61 + v63 <= v60 + v63; - v67 = v60 + v63; - if ( v66 ) - v67 = v61 + v63; - if ( v61 <= v67 ) - v67 = v61; - if ( v67 > 0 ) - { - v64 -= v67; - v65 -= v67; - v61 -= v67; - } - if ( v157 > 0 ) - { - v141 = __pow5mult_D2A(v141, v157); - v161 = __mult_D2A((int)v141, (int)v56); - __Bfree_D2A(v56); - v56 = v161; - } - if ( v64 - v149 > 0 ) - { - v56 = __lshift_D2A(v56, v64 - v149); - } - else if ( v64 != v149 ) - { - __rshift_D2A((int)v56, v149 - v64); - } - if ( v175 > 0 ) - v144 = __pow5mult_D2A(v144, v174); - if ( v65 > 0 ) - v144 = __lshift_D2A(v144, v65); - if ( v61 > 0 ) - v141 = __lshift_D2A(v141, v61); - v68 = __diff_D2A((int)v56, (int)v144); - v69 = v68; - if ( v68[4] <= 1 && !v68[5] ) - goto LABEL_62; - v70 = v68[3]; - v68[3] = 0; - v71 = __cmp_D2A((int)v68, (int)v141); - if ( v172 && v71 <= 0 ) - { - v72 = v172 & 1; - v149 = v70 ^ v72; - if ( v72 == v70 ) - { - v184 = v72 == 0 ? 33 : 17; - goto LABEL_62; - } - if ( v70 ) - { - v184 = 33; - v155 = 1.0; - v168 = 0; - v165 = 1.0; - v179 = 32; - v162 = 0; - goto LABEL_162; - } - v184 = 17; - if ( v181 != v171 ) - { - v73 = Val; - v74 = (int *)v188; - if ( Val > 31 ) - { - while ( !*(_DWORD *)(v188 + 4 * v70 + 20) ) - { - v73 -= 32; - ++v70; - if ( v73 <= 31 ) - goto LABEL_266; - } - } - else - { - v73 = Val; -LABEL_266: - if ( v73 <= 1 ) - goto LABEL_268; - v117 = (int *)(v188 + 4 * v70 + 20); - _EBX = *v117; - __asm { tzcnt ecx, ebx } - *v117 = (unsigned int)*v117 >> _ECX; - if ( v73 - 1 <= _ECX ) - { -LABEL_268: - v186 = v181 - 1; - v185 = Val; - v188 = (size_t)__set_ones_D2A(v74, Val); - goto LABEL_62; - } - } - } - } - else - { - if ( v71 < 0 ) - { - if ( v70 ) - { - v184 = 17; - goto LABEL_62; - } - v184 = 33; - if ( v154 > 1 || v181 == v171 || (v151 & 1) != 0 ) - { -LABEL_62: - if ( v151 ) - goto LABEL_63; - goto LABEL_277; - } - v69 = __lshift_D2A(v69, 1); - if ( __cmp_D2A((int)v69, (int)v141) <= 0 ) - goto LABEL_277; - v184 = 17; - v151 = 0; -LABEL_303: - v186 -= Val; - v185 = Val; - v188 = (size_t)__set_ones_D2A((int *)v188, Val); - goto LABEL_62; - } - if ( !v71 ) - { - if ( v70 ) - { - if ( !v151 ) - goto LABEL_344; - v122 = v188; - v123 = (_DWORD *)(v188 + 20); - while ( v188 + 20 + 4 * (v185 >> 5) > (unsigned int)v123 ) - { - if ( *v123++ != -1 ) - goto LABEL_344; - } - if ( (v185 & 0x1F) != 0 && (*v123 | (-1 << (v185 & 0x1F))) != -1 ) - { -LABEL_344: - v184 = 17; - goto LABEL_335; - } - *(_DWORD *)(v188 + 16) = 1; - *(_DWORD *)(v122 + 20) = 1; - v185 = 1; - v186 = Val + v171 - 1; - v120 = v151; - v184 = 33; -LABEL_278: - v151 = Val - v120; - if ( Val != v120 ) - { - if ( Val - v120 <= 0 ) - __rshift_D2A(v188, v120 - Val); - else - v188 = (size_t)__lshift_D2A((int *)v188, v151); - v23 = v186 - v151; - v151 = 0; - v186 = v23; -LABEL_64: - *a4 = v23; - __Bfree_D2A(v56); - __Bfree_D2A(v144); - __Bfree_D2A(v141); - __Bfree_D2A(v176); - __Bfree_D2A(v69); - if ( a3[2] >= v186 ) - goto LABEL_265; - v24 = a3[3] & 3; - switch ( v24 ) - { - case 2: - if ( !v173 ) - goto LABEL_264; - break; - case 3: - if ( v173 ) - goto LABEL_264; - break; - case 1: -LABEL_264: - v184 = 163; - *(_DWORD *)(v188 + 16) = 0; - *_errno() = 34; - *a4 = a3[2] + 1; -LABEL_265: - v14 = v188; -LABEL_73: - if ( !v151 ) - goto LABEL_31; - if ( !v180 ) - { - v28 = v184 & 0x30; - v29 = v184 & 0xFFFFFFF8; - if ( *(int *)(v14 + 16) > 0 ) - v29 |= 2u; - v184 = v29; - if ( v28 ) - { -LABEL_78: - v184 = v29 | 0x40; - *_errno() = 34; - } -LABEL_79: - v14 = v188; -LABEL_31: - if ( a2 ) - *a2 = v187; - if ( v173 ) - v184 |= 8u; -LABEL_35: - if ( v14 ) - { - __copybits_D2A((char *)a5, Val, v14); - __Bfree_D2A((void *)v188); - } - return v184; - } -LABEL_260: - *(_DWORD *)(v14 + 16) = 0; - v184 = 80; - *_errno() = 34; - v14 = v188; - goto LABEL_31; - default: - break; - } - __Bfree_D2A((void *)v188); - v188 = 0; - v184 = 17; - *a4 = a3[2]; - v25 = *a3; - v26 = (char *)a5 + 4 * ((*a3 + 31) >> 5); - if ( a5 < v26 ) - memset(a5, 255, 4 * ((unsigned int)&v26[~(unsigned int)a5] >> 2) + 4); - v27 = v25 & 0x1F; - if ( v27 ) - *((_DWORD *)v26 - 1) >>= 32 - v27; - v14 = 0; - goto LABEL_73; - } -LABEL_63: - v23 = v186; - goto LABEL_64; - } - if ( v154 != 1 ) - { - v184 = 33; -LABEL_335: - if ( Val <= v154 || (v151 & 1) != 0 ) - { - v131 = v188; - if ( (*(_BYTE *)(v188 + 20) & 1) != 0 ) - { - if ( v70 ) - { - v134 = (size_t)__increment_D2A((int *)v188); - v135 = *(_DWORD *)(v134 + 16); - v188 = v134; - _BitScanReverse(&v134, *(_DWORD *)(v134 + 4 * v135 + 16)); - if ( (-v185 & 0x1F) != (v134 ^ 0x1F) ) - ++v185; - v184 = 33; - } - else if ( v154 == 1 ) - { -LABEL_330: - *(_DWORD *)(v131 + 16) = 0; - v184 = 80; - v186 = v171; - } - else - { - __decrement_D2A(v188); - v184 = 17; - } - } - goto LABEL_62; - } -LABEL_277: - v120 = v185; - goto LABEL_278; - } - v184 = 1; - if ( v181 == v171 ) - { - v184 = 33; - if ( *(_DWORD *)(v188 + 16) == 1 ) - { - v133 = 1; - if ( *(_DWORD *)(v188 + 20) != 1 ) - v133 = v180; - v180 = v133; - } - goto LABEL_62; - } - goto LABEL_303; - } - v106 = __ratio_D2A((int)v69, (int)v141); - if ( v106 > 2.0 ) - { - v112 = v106 * 0.5; - v179 = v70 == 0 ? 32 : 16; - v162 = v70 == 0; - v165 = v112; - if ( v112 >= 2147483647.0 ) - { - v168 = 0; - v155 = v112; - goto LABEL_257; - } - v168 = (int)v112; - v113 = (long double)(int)v112; - v155 = v113; - v114 = v112 - v113; - v165 = v114; - if ( v172 == 1 ) - { - if ( v70 ) - goto LABEL_257; - } - else - { - if ( v172 != 2 ) - { - if ( v114 < 0.5 ) - { -LABEL_257: - v149 = 0; - goto LABEL_162; - } -LABEL_274: - ++v168; - v179 = 48 - v179; - v155 = (double)v168; - goto LABEL_257; - } - if ( !v70 ) - goto LABEL_257; - } - if ( v165 <= 0.0 ) - goto LABEL_257; - goto LABEL_274; - } - if ( v70 ) - { - v168 = 0; - v155 = 1.0; - v179 = 32; - v165 = 1.0; - v149 = 0; - v162 = 0; - goto LABEL_162; - } - v149 = 0; - } - if ( v154 <= 1 && (v151 & 1) != 0 ) - { - v151 = 1; - v131 = v188; - goto LABEL_330; - } - v168 = 0; - v155 = 1.0; - v179 = 16; - v165 = 1.0; - v162 = 1; -LABEL_162: - v169 = v185 + v186; - if ( v185 < Val && (v151 & 1) == 0 ) - { - v115 = Val - v185; - v116 = __lshift_D2A((int *)v188, Val - v185); - v186 -= v115; - v188 = (size_t)v116; - v185 = Val; - } - v75 = __d2b_D2A(v155, &v182, &v183); - if ( v182 < 0 ) - { - __rshift_D2A((int)v75, -v182); - } - else if ( v182 ) - { - v75 = __lshift_D2A(v75, v182); - } - v76 = (_DWORD *)v188; - if ( v162 ) - { - v77 = __diff_D2A(v188, (int)v75); - v188 = (size_t)v77; - if ( !v151 ) - { - v78 = v76[4]; - if ( v77[4] <= v78 - 1 - || (_BitScanReverse(&v79, v77[v78 + 4]), - _BitScanReverse((unsigned int *)&v78, v76[v78 + 4]), - (v78 ^ 0x1F) < (int)(v79 ^ 0x1F)) ) - { - if ( v181 != v171 ) - { - v111 = __lshift_D2A(v77, 1); - --v186; - --v181; - v188 = (size_t)v111; - __Bfree_D2A(v75); - __Bfree_D2A(v76); -LABEL_251: - v151 = 0; - v149 = __trailz_D2A(v188); - goto LABEL_180; - } - --v185; - v151 = v162; - } - } - } - else - { - v107 = __sum_D2A((int *)v188, v75); - v108 = v107[4]; - v188 = (size_t)v107; - if ( v76[4] <= v108 - 1 - || (_BitScanReverse(&v109, v107[v108 + 4]), - _BitScanReverse((unsigned int *)&v108, v76[v108 + 4]), - (v108 ^ 0x1F) > (int)(v109 ^ 0x1F)) ) - { - if ( v151 ) - { - v110 = ++v185 == Val; - v151 = !v110; - } - else - { - __rshift_D2A((int)v107, 1); - ++v186; - ++v181; - v168 = 0; - } - } - } - __Bfree_D2A(v75); - __Bfree_D2A(v76); - if ( v149 ) - goto LABEL_62; - if ( v186 + v185 == v169 && v168 ) - { - v80 = v155 * 5.0e-16; - v81 = v165 - 0.5; - if ( -v80 <= v81 ) - { - if ( v81 > v80 && 1.0 - v80 > v165 ) - { -LABEL_61: - v184 |= v179; - goto LABEL_62; - } - } - else if ( v165 > v80 ) - { - goto LABEL_61; - } - } - if ( !v151 ) - goto LABEL_251; -LABEL_180: - __Bfree_D2A(v56); - __Bfree_D2A(v144); - __Bfree_D2A(v141); - __Bfree_D2A(v69); - } - } - v148 = v8; - v38 = 1; - v39 = decimal_point[1]; - while ( v11[v38] == v39 ) - { - v39 = decimal_point[++v38]; - if ( !v39 ) - { - v82 = v38; - goto LABEL_182; - } - } - v8 = v148; - } - v147 = v9; - v13 = 0; - i = 0; - v150 = 0; - goto LABEL_20; - } -LABEL_12: - result = 6; - v184 = 6; - if ( !a2 ) - return result; - *a2 = a1; - return v184; - default: - v173 = 0; - goto LABEL_4; - } - } -} -// 55A940: using guessed type int fivesbits[23]; -// 55ABB8: using guessed type double dbl_55ABB8[4]; -// 55AC00: using guessed type double __tens_D2A[24]; -// 55ACC0: using guessed type double __tinytens_D2A[4]; -// 55AD00: using guessed type double __bigtens_D2A[4]; - -//----- (004651A0) -------------------------------------------------------- -int *__cdecl __sum_D2A(int *a1, int *a2) -{ - int *v2; // esi - int *v3; // ebx - unsigned int *v4; // ebp - int *v5; // eax - int v6; // edi - int *v7; // ecx - unsigned int *v8; // edi - unsigned int v9; // esi - unsigned int v10; // eax - unsigned int v11; // ebx - unsigned int v12; // edx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // edi - unsigned int *v16; // ebx - char *i; // edx - unsigned int v18; // ecx - unsigned int v19; // eax - unsigned int v20; // ecx - int *v22; // ebx - unsigned int v23; // [esp+18h] [ebp-34h] - int *v24; // [esp+1Ch] [ebp-30h] - int v25; // [esp+20h] [ebp-2Ch] - int v26; // [esp+24h] [ebp-28h] - int *v27; // [esp+28h] [ebp-24h] - int *v28; // [esp+2Ch] [ebp-20h] - - v2 = a2; - v3 = a1; - if ( a1[4] < a2[4] ) - { - v3 = a2; - v2 = a1; - } - v4 = (unsigned int *)(v3 + 5); - v5 = __Balloc_D2A(v3[1]); - v6 = v3[4]; - v27 = v3 + 5; - v7 = v5 + 5; - v24 = v5; - v5[4] = v6; - v28 = v5 + 5; - v26 = v2[4]; - v23 = (unsigned int)&v5[v26 + 5]; - v25 = v6; - v8 = (unsigned int *)(v2 + 5); - v9 = 0; - do - { - v10 = *v4; - v11 = *v8; - ++v4; - ++v8; - ++v7; - v12 = v9 + (unsigned __int16)v10 + (unsigned __int16)v11; - *((_WORD *)v7 - 2) = v12; - v13 = HIWORD(v12) + HIWORD(v11) + HIWORD(v10); - *((_WORD *)v7 - 1) = v13; - v9 = HIWORD(v13); - } - while ( v23 > (unsigned int)v7 ); - v14 = 4 * ((v23 - (unsigned int)v24 - 21) >> 2) + 4; - if ( v23 < (unsigned int)v24 + 21 ) - v14 = 4; - v15 = v23 + 4 * (v25 - v26); - v16 = (unsigned int *)((char *)v27 + v14); - for ( i = (char *)v28 + v14; v15 > (unsigned int)i; v9 = HIWORD(v20) ) - { - v18 = *v16; - i += 4; - ++v16; - v19 = v9 + (unsigned __int16)v18; - *((_WORD *)i - 2) = v19; - v20 = HIWORD(v19) + HIWORD(v18); - *((_WORD *)i - 1) = v20; - } - if ( v9 ) - { - if ( v25 == v24[2] ) - { - v22 = __Balloc_D2A(v24[1] + 1); - memcpy(v22 + 3, v24 + 3, 4 * v24[4] + 8); - __Bfree_D2A(v24); - v24 = v22; - v25 = v22[4]; - } - v24[4] = v25 + 1; - v24[v25 + 5] = 1; - } - return v24; -} - -//----- (00465330) -------------------------------------------------------- -unsigned int __usercall __m16m@(unsigned __int16 a1@, int a2@, int a3@) -{ - int v3; // edi - unsigned __int16 *v4; // ecx - char *v5; // edx - unsigned int result; // eax - int v7; // eax - unsigned int v8; // eax - unsigned int v9; // ebx - int v10; // ebp - unsigned int v11; // eax - char v13[10]; // [esp+16h] [ebp-1Eh] BYREF - int v14; // [esp+20h] [ebp-14h] BYREF - - v3 = a1; - v4 = (unsigned __int16 *)(a2 + 16); - v14 = 0; - v5 = (char *)&v14 + 2; - do - { - while ( 1 ) - { - v7 = *v4; - v5 -= 2; - --v4; - if ( (_WORD)v7 ) - break; - result = 0; - *((_WORD *)v5 - 1) = 0; - if ( v5 == v13 ) - goto LABEL_5; - } - v8 = v3 * v7; - v9 = *((unsigned __int16 *)v5 + 1) + (unsigned __int16)v8; - v10 = *(unsigned __int16 *)v5; - *((_WORD *)v5 + 1) = v9; - v11 = HIWORD(v9) + v10 + HIWORD(v8); - *(_WORD *)v5 = v11; - result = HIWORD(v11); - *((_WORD *)v5 - 1) = result; - } - while ( v5 != v13 ); -LABEL_5: - *(_DWORD *)(a3 + 4) = *(_DWORD *)v5; - *(_DWORD *)(a3 + 8) = *((_DWORD *)v5 + 1); - *(_DWORD *)(a3 + 12) = *((_DWORD *)v5 + 2); - *(_WORD *)(a3 + 16) = *((_WORD *)v5 + 6); - return result; -} - -//----- (004653C0) -------------------------------------------------------- -BOOL __usercall __eshift_part_0@(__int16 *a1@, int a2@) -{ - int v2; // esi - void *v4; // ebp - const void *v5; // eax - int v6; // esi - const void *Src; // edi - __int16 *v8; // edi - __int16 *i; // ecx - __int16 *v10; // ebx - int v11; // edx - __int16 v12; // ax - __int16 *v14; // edx - __int16 v15; // di - unsigned __int16 v16; // ax - __int16 v17; // bp - int v18; // ecx - _WORD *v19; // edx - unsigned __int16 v20; // bp - __int16 *v21; // edi - __int16 *v22; // eax - __int16 v23; // dx - unsigned int v24; // eax - int v25; // esi - unsigned __int16 v26; // ax - int v27; // edi - __int16 *v28; // ecx - int v29; // edx - __int16 v30; // ax - __int16 v31; // cx - __int16 *v32; // edx - unsigned __int16 v33; // ax - __int16 v34; // bp - char v35; // [esp+14h] [ebp-28h] - int v36; // [esp+14h] [ebp-28h] - _WORD *v37; // [esp+14h] [ebp-28h] - unsigned __int16 v38; // [esp+1Ah] [ebp-22h] - __int16 *v39; // [esp+1Ch] [ebp-20h] - - v2 = a2; - if ( a2 < 0 ) - { - v18 = -a2; - v36 = -a2; - if ( a2 >= -15 ) - { - if ( a2 >= -7 ) - { - v21 = a1 + 2; - v38 = 0; - goto LABEL_28; - } - v26 = 0; - v21 = a1 + 2; - } - else - { - v19 = a1 + 8; - v20 = 0; - v21 = a1 + 2; - do - { - v37 = v19; - v20 |= a1[8]; - v22 = v19; - do - { - v23 = *--v22; - v22[1] = v23; - } - while ( v22 != v21 ); - v18 -= 16; - v19 = v37; - a1[2] = 0; - } - while ( v18 > 15 ); - v38 = v20; - v24 = -((-16 - v2) & 0xFFFFFFF0); - if ( v2 >= -15 ) - v24 = 0; - v25 = -16 - v2 + v24; - v26 = v20; - v36 = v25; - if ( v25 <= 7 ) - { -LABEL_27: - if ( !v36 ) - return v38 != 0; -LABEL_28: - v39 = v21; - v27 = v38; - do - { - v28 = v39; - v29 = 0; - v38 = v27 | a1[8] & 1; - v27 |= a1[8] & 1; - do - { - if ( (*v28 & 1) != 0 ) - v29 |= 1u; - v30 = (unsigned __int16)*v28 >> 1; - if ( (v29 & 2) != 0 ) - v30 |= 0x8000u; - ++v28; - v29 *= 2; - *(v28 - 1) = v30; - } - while ( v28 != a1 + 9 ); - --v36; - } - while ( v36 ); - return v38 != 0; - } - } - v31 = 0; - v38 = v26 | *((unsigned __int8 *)a1 + 16); - v32 = v21; - do - { - v33 = *v32; - v34 = v31; - ++v32; - v31 = v33 << 8; - *(v32 - 1) = v34 | HIBYTE(v33); - } - while ( v32 != a1 + 9 ); - v36 -= 8; - goto LABEL_27; - } - v4 = a1 + 2; - v5 = a1 + 3; - if ( a2 > 15 ) - { - v35 = a2; - v6 = a2; - Src = v5; - do - { - v6 -= 16; - memmove(v4, Src, 0xCu); - a1[8] = 0; - } - while ( v6 > 15 ); - v2 = v35 & 0xF; - } - if ( v2 > 7 ) - { - v14 = a1 + 8; - v15 = 0; - do - { - v16 = *v14; - v17 = v15; - --v14; - v15 = HIBYTE(v16); - v14[1] = v17 | (v16 << 8); - } - while ( v14 != a1 + 1 ); - v2 -= 8; - } - v8 = a1 + 8; - for ( i = a1 + 1; v2; --v2 ) - { - v10 = v8; - v11 = 0; - do - { - if ( *v10 < 0 ) - v11 |= 1u; - v12 = 2 * *v10; - if ( (v11 & 2) != 0 ) - v12 |= 1u; - --v10; - v11 *= 2; - v10[1] = v12; - } - while ( v10 != i ); - } - return 0; -} - -//----- (00465600) -------------------------------------------------------- -__int16 *__cdecl __emovi(int a1, int a2) -{ - __int16 *result; // eax - __int16 v3; // dx - int v4; // edx - __int16 v5; // di - int v6; // edx - int v7; // edx - __int16 v8; // bx - - *(_WORD *)a2 = *(__int16 *)(a1 + 10) >> 15; - result = (__int16 *)(a1 + 8); - v3 = *(_WORD *)(a1 + 10) & 0x7FFF; - *(_WORD *)(a2 + 2) = v3; - if ( v3 == 0x7FFF ) - { - if ( (*(_WORD *)(a1 + 10) & 0x7FFF) == 0x7FFF ) - { - v6 = a1; - while ( 1 ) - { - v6 += 2; - if ( *(_WORD *)(v6 - 2) ) - break; - if ( a1 + 10 == v6 ) - goto LABEL_6; - } - v7 = a2 + 6; - *(_WORD *)(a2 + 4) = 0; - do - { - v8 = *result--; - v7 += 2; - *(_WORD *)(v7 - 2) = v8; - } - while ( (__int16 *)(a1 - 4) != result ); - } - else - { -LABEL_6: - *(_DWORD *)(a2 + 4) = 0; - *(_DWORD *)(a2 + 8) = 0; - *(_DWORD *)(a2 + 12) = 0; - *(_WORD *)(a2 + 16) = 0; - } - } - else - { - v4 = a2 + 6; - *(_WORD *)(a2 + 4) = 0; - do - { - v5 = *result--; - v4 += 2; - *(_WORD *)(v4 - 2) = v5; - } - while ( result != (__int16 *)(a1 - 2) ); - *(_WORD *)(a2 + 16) = 0; - } - return result; -} - -//----- (004656D0) -------------------------------------------------------- -unsigned int __cdecl __eaddm(int a1, int a2) -{ - int v2; // edx - int v3; // ecx - unsigned int result; // eax - - v2 = 7; - v3 = 0; - do - { - result = v3 + *(unsigned __int16 *)(a2 + 2 * v2 + 2) + *(unsigned __int16 *)(a1 + 2 * v2 + 2); - *(_WORD *)(a2 + 2 * v2 + 2) = result; - v3 = HIWORD(result) & 1; - --v2; - } - while ( v2 ); - return result; -} - -//----- (00465710) -------------------------------------------------------- -unsigned int __cdecl __esubm(int a1, int a2) -{ - int v2; // edx - int v3; // ecx - unsigned int result; // eax - - v2 = 7; - v3 = 0; - do - { - result = *(unsigned __int16 *)(a2 + 2 * v2 + 2) - v3 - *(unsigned __int16 *)(a1 + 2 * v2 + 2); - *(_WORD *)(a2 + 2 * v2 + 2) = result; - v3 = HIWORD(result) & 1; - --v2; - } - while ( v2 ); - return result; -} - -//----- (00465750) -------------------------------------------------------- -BOOL __cdecl __edivm(int a1, int *a2) -{ - int v2; // edx - int v3; // eax - _WORD *v4; // ecx - __int16 v5; // ax - unsigned int v6; // eax - unsigned __int16 v7; // ax - int v8; // eax - unsigned __int16 v9; // bx - int v10; // edx - int v11; // ecx - unsigned int v12; // eax - int *v13; // esi - __int16 v14; // ax - int v16; // ecx - char *v17; // edx - int v18; // esi - int v19; // ebx - int v20; // eax - unsigned int v21; // ecx - int v22; // eax - unsigned __int16 v23; // bx - int v24; // ecx - char *v25; // edx - int v26; // eax - unsigned int v27; // ecx - char *v28; // [esp+14h] [ebp-68h] - __int16 v29; // [esp+24h] [ebp-58h] - unsigned int v30; // [esp+28h] [ebp-54h] - int v31; // [esp+3Ah] [ebp-42h] - int v32; // [esp+3Eh] [ebp-3Eh] BYREF - int v33; // [esp+42h] [ebp-3Ah] - int v34; // [esp+46h] [ebp-36h] - __int16 v35; // [esp+4Ah] [ebp-32h] - _WORD v36[1]; // [esp+4Ch] [ebp-30h] BYREF - char v37[14]; // [esp+4Eh] [ebp-2Eh] BYREF - char v38[32]; // [esp+5Ch] [ebp-20h] BYREF - - v2 = 0; - v32 = 0; - v33 = 0; - v3 = *a2; - v34 = 0; - v35 = 0; - v4 = a2 + 1; - v31 = v3; - do - { - if ( (*v4 & 1) != 0 ) - v2 |= 1u; - v5 = *v4 >> 1; - if ( (v2 & 2) != 0 ) - v5 |= 0x8000u; - ++v4; - v2 *= 2; - *(v4 - 1) = v5; - } - while ( (_WORD *)((char *)a2 + 18) != v4 ); - v30 = *(unsigned __int16 *)(a1 + 6); - v28 = (char *)&v32; - do - { - v6 = *((unsigned __int16 *)a2 + 3) + (*((unsigned __int16 *)a2 + 2) << 16); - if ( 0xFFFF * v30 < v6 ) - { - v7 = -1; - v29 = -1; - } - else - { - v29 = v6 / v30; - v7 = v29; - } - __m16m(v7, a1, (int)v36); - v8 = 2; - while ( 1 ) - { - v9 = *((_WORD *)a2 + v8); - if ( v36[v8] != v9 ) - break; - if ( ++v8 == 9 ) - goto LABEL_13; - } - if ( v36[v8] > v9 ) - { - v16 = 0; - v17 = v38; - v18 = a1 + 16; - v19 = a1 + 16; - do - { - v20 = *(unsigned __int16 *)v17; - v17 -= 2; - v19 -= 2; - v21 = v20 - v16 - *(unsigned __int16 *)(v19 + 2); - *((_WORD *)v17 + 1) = v21; - v16 = HIWORD(v21) & 1; - } - while ( v17 != v37 ); - v22 = 2; - while ( 1 ) - { - v23 = *((_WORD *)a2 + v22); - if ( v36[v22] != v23 ) - break; - if ( ++v22 == 9 ) - goto LABEL_26; - } - if ( v36[v22] <= v23 ) - { -LABEL_26: - --v29; - goto LABEL_13; - } - v29 -= 2; - v24 = 0; - v25 = v38; - do - { - v26 = *(unsigned __int16 *)v25; - v25 -= 2; - v18 -= 2; - v27 = v26 - v24 - *(unsigned __int16 *)(v18 + 2); - *((_WORD *)v25 + 1) = v27; - v24 = HIWORD(v27) & 1; - } - while ( v25 != v37 ); - } -LABEL_13: - v10 = 7; - v11 = 0; - do - { - v12 = *((unsigned __int16 *)a2 + v10 + 1) - v11 - (unsigned __int16)v36[v10 + 1]; - *((_WORD *)a2 + v10 + 1) = v12; - v11 = HIWORD(v12) & 1; - --v10; - } - while ( v10 ); - *(_WORD *)v28 = v29; - memmove(a2 + 1, (char *)a2 + 6, 0xCu); - v28 += 2; - *((_WORD *)a2 + 8) = 0; - } - while ( v28 != (char *)v36 ); - v13 = a2 + 1; - v14 = 0; - do - { - v13 = (int *)((char *)v13 + 2); - v14 |= *((_WORD *)v13 - 1); - } - while ( (int *)((char *)a2 + 18) != v13 ); - *a2 = v31; - a2[1] = v32; - a2[2] = v33; - a2[3] = v34; - *((_WORD *)a2 + 8) = v35; - return v14 != 0; -} -// 465750: using guessed type _WORD var_30[1]; - -//----- (004659F0) -------------------------------------------------------- -int __cdecl __emulm(int a1, int a2) -{ - unsigned __int16 v2; // bp - int v3; // edx - unsigned __int16 *v4; // ebx - unsigned __int16 v5; // ax - int v6; // esi - __int16 *v7; // ecx - char *v8; // edx - int v9; // edi - int v10; // eax - unsigned int v11; // esi - char v13[2]; // [esp+2Ch] [ebp-40h] BYREF - char v14; // [esp+2Eh] [ebp-3Eh] BYREF - char v15; // [esp+3Ch] [ebp-30h] BYREF - int v16; // [esp+3Eh] [ebp-2Eh] - int Src; // [esp+42h] [ebp-2Ah] BYREF - int v18; // [esp+46h] [ebp-26h] - int v19; // [esp+4Ah] [ebp-22h] - __int16 v20; // [esp+4Eh] [ebp-1Eh] BYREF - - v2 = 0; - Src = 0; - v18 = 0; - v3 = *(_DWORD *)a2; - v4 = (unsigned __int16 *)(a1 + 16); - v19 = 0; - v16 = v3; - v20 = 0; - do - { - v5 = *v4--; - if ( v5 ) - { - v6 = 0; - __m16m(v5, a2, (int)v13); - v7 = &v20; - v8 = &v15; - do - { - v9 = (unsigned __int16)*v7; - v10 = *(unsigned __int16 *)v8; - v8 -= 2; - --v7; - v11 = v6 + v9 + v10; - v7[1] = v11; - v6 = HIWORD(v11) & 1; - } - while ( v8 != &v14 ); - } - v2 |= v20; - memmove((char *)&Src + 2, &Src, 0xCu); - LOWORD(Src) = 0; - } - while ( v4 != (unsigned __int16 *)(a1 + 4) ); - *(_DWORD *)a2 = v16; - *(_DWORD *)(a2 + 4) = Src; - *(_DWORD *)(a2 + 8) = v18; - *(_DWORD *)(a2 + 12) = v19; - *(_WORD *)(a2 + 16) = v20; - return v2; -} -// 4659F0: using guessed type char var_40[2]; - -//----- (00465B00) -------------------------------------------------------- -__int16 *__cdecl __toe64(_WORD *a1, int a2) -{ - int v2; // edx - __int16 *result; // eax - int v4; // edx - __int16 v5; // bx - __int16 v6; // bx - _WORD *v7; // ebx - __int16 v8; // ax - _WORD *v9; // edx - __int16 *v10; // ebx - - v2 = (unsigned __int16)a1[1]; - result = a1 + 3; - if ( (a1[1] & 0x7FFF) == 0x7FFF ) - { - v9 = a1 + 3; - do - { - if ( *v9 ) - { - *(_DWORD *)a2 = 0; - *(_DWORD *)(a2 + 4) = -1073741824; - *(_DWORD *)(a2 + 8) = 0x7FFF; - return result; - } - ++v9; - } - while ( a1 + 9 != v9 ); - *(_WORD *)(a2 + 10) = 0; - v4 = a2 + 6; - if ( *a1 ) - goto LABEL_8; - goto LABEL_4; - } - if ( !(_WORD)v2 ) - { - v7 = a1 + 2; - do - { - if ( (*v7 & 1) != 0 ) - v2 |= 1u; - v8 = *v7 >> 1; - if ( (v2 & 2) != 0 ) - v8 |= 0x8000u; - ++v7; - v2 *= 2; - *(v7 - 1) = v8; - } - while ( a1 + 9 != v7 ); - result = a1 + 3; - *(_WORD *)(a2 + 10) = 0; - v4 = a2 + 6; - if ( !*a1 ) - goto LABEL_4; -LABEL_8: - v5 = a1[1] | 0x8000; - goto LABEL_5; - } - *(_WORD *)(a2 + 10) = 0; - v4 = a2 + 6; - if ( *a1 ) - goto LABEL_8; -LABEL_4: - v5 = a1[1]; -LABEL_5: - *(_WORD *)(a2 + 8) = v5; - if ( (a1[1] & 0x7FFF) == 0x7FFF ) - { - v10 = result; - while ( !*v10 ) - { - if ( a1 + 9 == ++v10 ) - { - *(_DWORD *)a2 = 0; - *(_DWORD *)(a2 + 4) = 0x80000000; - return result; - } - } - } - do - { - v6 = *result++; - v4 -= 2; - *(_WORD *)(v4 + 2) = v6; - } - while ( result != a1 + 7 ); - return result; -} - -//----- (00465C50) -------------------------------------------------------- -int __cdecl __ecmp(int a1, int a2) -{ - int v2; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // edx - unsigned __int16 v8; // si - unsigned __int16 v9; // cx - __int16 v10[9]; // [esp+14h] [ebp-30h] BYREF - __int16 v11[15]; // [esp+26h] [ebp-1Eh] BYREF - - if ( (*(_WORD *)(a1 + 10) & 0x7FFF) == 0x7FFF ) - { - v4 = a1; - while ( 1 ) - { - v4 += 2; - if ( *(_WORD *)(v4 - 2) ) - return -2; - if ( a1 + 10 == v4 ) - { - if ( (*(_WORD *)(a2 + 10) & 0x7FFF) != 0x7FFF ) - goto LABEL_3; - goto LABEL_13; - } - } - } - if ( (*(_WORD *)(a2 + 10) & 0x7FFF) == 0x7FFF ) - { -LABEL_13: - v5 = a2; - do - { - v5 += 2; - if ( *(_WORD *)(v5 - 2) ) - return -2; - } - while ( a2 + 10 != v5 ); - } -LABEL_3: - __emovi(a1, (int)v10); - __emovi(a2, (int)v11); - if ( v10[0] == v11[0] ) - { - v6 = 1; - v7 = v10[0] == 0 ? 1 : -1; - while ( 1 ) - { - v8 = v10[v6++]; - v9 = v10[v6 + 8]; - if ( v8 != v9 ) - break; - if ( v6 == 8 ) - return 0; - } - if ( v8 <= v9 ) - return v10[0] == 0 ? 1 : -1; - return v7; - } - else - { - v2 = 1; - while ( !v10[v2] && !v11[v2] ) - { - if ( ++v2 == 8 ) - return 0; - } - return v10[0] == 0 ? 1 : -1; - } -} -// 465C50: using guessed type __int16 var_1E[15]; - -//----- (00465D90) -------------------------------------------------------- -BOOL __cdecl __eshift(__int16 *a1, int a2) -{ - return a2 && __eshift_part_0(a1, a2); -} - -//----- (00465DB0) -------------------------------------------------------- -int __cdecl __enormlz(_WORD *a1) -{ - unsigned __int16 v1; // ax - __int16 v2; // dx - int v3; // ecx - __int16 *j; // eax - unsigned __int16 *v5; // edx - __int16 v6; // si - unsigned __int16 v7; // ax - __int16 v8; // di - __int16 *v9; // esi - int v10; // edx - __int16 v11; // ax - unsigned __int16 *v13; // esi - int v14; // edx - unsigned __int16 v15; // ax - unsigned __int16 *v16; // ecx - __int16 i; // dx - __int16 v18; // si - - v1 = a1[2]; - if ( v1 ) - { - v3 = 0; - if ( (v1 & 0xFF00) != 0 ) - { - v16 = a1 + 2; - for ( i = 0; ; i = v18 ) - { - ++v16; - v18 = v1 << 8; - *(v16 - 1) = i | HIBYTE(v1); - if ( a1 + 9 == v16 ) - break; - v1 = *v16; - } - v1 = a1[2]; - v3 = -8; - } - while ( v1 ) - { - v13 = a1 + 2; - v14 = 0; - while ( 1 ) - { - if ( (v1 & 1) != 0 ) - v14 |= 1u; - v15 = v1 >> 1; - if ( (v14 & 2) != 0 ) - v15 |= 0x8000u; - ++v13; - v14 *= 2; - *(v13 - 1) = v15; - if ( a1 + 9 == v13 ) - break; - v1 = *v13; - } - if ( --v3 == -81 ) - break; - v1 = a1[2]; - } - } - else - { - v2 = a1[3]; - v3 = 0; - if ( v2 >= 0 ) - { - if ( v2 ) - { -LABEL_9: - while ( (v2 & 0xFF00) == 0 ) - { - v5 = a1 + 8; - v6 = 0; - do - { - v7 = *v5; - v8 = v6; - --v5; - v6 = HIBYTE(v7); - v5[1] = v8 | (v7 << 8); - } - while ( v5 != a1 + 1 ); - v2 = a1[3]; - v3 += 8; - } - while ( v2 >= 0 ) - { - v9 = a1 + 8; - v10 = 0; - do - { - if ( *v9 < 0 ) - v10 |= 1u; - v11 = 2 * *v9; - if ( (v10 & 2) != 0 ) - v11 |= 1u; - --v9; - v10 *= 2; - v9[1] = v11; - } - while ( a1 + 1 != v9 ); - if ( ++v3 > 96 ) - break; - v2 = a1[3]; - } - } - else - { - while ( 1 ) - { - for ( j = a1 + 3; ; v2 = *j ) - { - *(++j - 2) = v2; - if ( a1 + 9 == j ) - break; - } - v3 += 16; - a1[8] = 0; - if ( v3 == 96 ) - break; - v2 = a1[3]; - if ( v2 ) - goto LABEL_9; - } - } - } - } - return v3; -} - -//----- (00465F60) -------------------------------------------------------- -__int16 __cdecl __emdnorm(int a1, int a2, int a3, int a4, int a5, int a6) -{ - int v6; // eax - int v7; // esi - bool v8; // dl - __int16 v9; // ax - bool v10; // zf - int v11; // eax - int v12; // edx - int v13; // ecx - unsigned int v14; // eax - __int16 *v15; // ecx - int v16; // edx - __int16 v17; // ax - _WORD *v18; // ecx - int v19; // edx - _WORD *v20; // ecx - int v21; // edx - __int16 v22; // ax - bool v24; // [esp+13h] [ebp-49h] - __int16 *v25; // [esp+14h] [ebp-48h] - int v26; // [esp+18h] [ebp-44h] - int v27; // [esp+1Ch] [ebp-40h] - int v28[3]; // [esp+2Eh] [ebp-2Eh] - int v29; // [esp+3Ah] [ebp-22h] - __int16 v30; // [esp+3Eh] [ebp-1Eh] - - v30 = 0; - v29 = 0x10000; - HIWORD(v28[0]) = 0; - v28[1] = 0; - v28[2] = 0; - v6 = __enormlz((_WORD *)a1); - v7 = a4 - v6; - if ( v6 > 80 && v7 <= 32766 ) - goto LABEL_19; - if ( v7 >= 0 ) - { - if ( !a5 ) - goto LABEL_9; - v8 = v7 <= 0 && a6 != 80; - v24 = v8; - if ( a6 != 64 ) - goto LABEL_6; - v29 = 1; - v25 = (__int16 *)(a1 + 14); - if ( !v8 ) - { - v26 = 6; - v9 = *(_WORD *)(a1 + 14); - goto LABEL_46; - } - v26 = 6; - v27 = 7; -LABEL_52: - v20 = (_WORD *)(a1 + 4); - v21 = 0; - a2 |= *(_WORD *)(a1 + 16) & 1; - do - { - if ( (*v20 & 1) != 0 ) - v21 |= 1u; - v22 = *v20 >> 1; - if ( (v21 & 2) != 0 ) - v22 |= 0x8000u; - ++v20; - v21 *= 2; - *(v20 - 1) = v22; - } - while ( v20 != (_WORD *)(a1 + 18) ); - v9 = *v25; - if ( a6 > 79 || v27 != 7 ) - { -LABEL_49: - *v25 = 0; - if ( v9 >= 0 ) - goto LABEL_27; - goto LABEL_22; - } -LABEL_46: - if ( *(_WORD *)(a1 + 16) ) - v9 |= 1u; - *(_WORD *)(a1 + 16) = 0; - goto LABEL_49; - } - if ( v7 < -80 ) - { -LABEL_19: - *(_DWORD *)(a1 + 2) = 0; - *(_DWORD *)(a1 + 6) = 0; - *(_DWORD *)(a1 + 10) = 0; - *(_DWORD *)(a1 + 14) = 0; - return v6; - } - v10 = !__eshift_part_0((__int16 *)a1, a4 - v6); - v11 = 1; - if ( v10 ) - v11 = a2; - a2 = v11; - if ( !a5 ) - goto LABEL_35; - v24 = a6 != 80; - if ( a6 == 64 ) - { - v29 = 1; - v25 = (__int16 *)(a1 + 14); - v26 = 6; - v27 = 7; - goto LABEL_52; - } -LABEL_6: - v25 = (__int16 *)(a1 + 16); - if ( v24 ) - { - v26 = 7; - v27 = 8; - goto LABEL_52; - } - v9 = *(_WORD *)(a1 + 16); - *(_WORD *)(a1 + 16) = 0; - if ( v9 >= 0 ) - goto LABEL_8; - v26 = 7; -LABEL_22: - if ( v9 != (__int16)0x8000 ) - goto LABEL_25; - if ( a2 ) - { - if ( !a3 ) - { -LABEL_25: - v12 = 7; - v13 = 0; - do - { - v14 = v13 + *(unsigned __int16 *)(a1 + 2 * v12 + 2) + *((unsigned __int16 *)v28 + v12 + 1); - *(_WORD *)(a1 + 2 * v12 + 2) = v14; - v13 = HIWORD(v14) & 1; - --v12; - } - while ( v12 ); - } - } - else if ( (*(_BYTE *)(a1 + 2 * v26) & 1) != 0 ) - { - goto LABEL_25; - } -LABEL_27: - if ( !v24 ) - { -LABEL_8: - LOWORD(v6) = *(_WORD *)(a1 + 4); - if ( !(_WORD)v6 ) - goto LABEL_9; - goto LABEL_36; - } - v15 = (__int16 *)(a1 + 16); - v16 = 0; - do - { - if ( *v15 < 0 ) - v16 |= 1u; - v17 = 2 * *v15; - if ( (v16 & 2) != 0 ) - v17 |= 1u; - --v15; - v16 *= 2; - v15[1] = v17; - } - while ( v15 != (__int16 *)(a1 + 2) ); - LOWORD(v6) = *(_WORD *)(a1 + 4); - if ( (_WORD)v6 ) - { -LABEL_36: - v18 = (_WORD *)(a1 + 4); - v19 = 0; - while ( 1 ) - { - if ( (v6 & 1) != 0 ) - v19 |= 1u; - LOWORD(v6) = (unsigned __int16)v6 >> 1; - if ( (v19 & 2) != 0 ) - LOWORD(v6) = v6 | 0x8000; - ++v18; - v19 *= 2; - *(v18 - 1) = v6; - if ( (_WORD *)(a1 + 18) == v18 ) - break; - LOWORD(v6) = *v18; - } - ++v7; -LABEL_9: - *(_WORD *)(a1 + 16) = 0; - if ( v7 > 32766 ) - { - *(_DWORD *)(a1 + 4) = 0; - *(_WORD *)(a1 + 2) = 0x7FFF; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - return v6; - } - goto LABEL_10; - } -LABEL_35: - *(_WORD *)(a1 + 16) = 0; -LABEL_10: - LOWORD(v6) = 0; - if ( v7 < 0 ) - LOWORD(v7) = 0; - *(_WORD *)(a1 + 2) = v7; - return v6; -} - -//----- (004662E0) -------------------------------------------------------- -int __cdecl __emovo(_WORD *a1, int a2) -{ - int result; // eax - __int16 v3; // dx - __int16 *v4; // edx - __int16 v5; // bx - _WORD *v6; // ebx - - result = a2; - v3 = a1[1]; - if ( *a1 ) - v3 = a1[1] | 0x8000; - *(_WORD *)(a2 + 10) = v3; - if ( a1[1] == 0x7FFF ) - { - v6 = a1 + 3; - while ( !*v6 ) - { - if ( a1 + 9 == ++v6 ) - { - *(_DWORD *)a2 = 0; - *(_DWORD *)(a2 + 4) = 0; - *(_WORD *)(a2 + 8) = 0; - *(_WORD *)(a2 + 10) = v3 | 0x7FFF; - return result; - } - } - *(_DWORD *)a2 = 0; - *(_DWORD *)(a2 + 4) = 0; - *(_DWORD *)(a2 + 8) = 2147467264; - } - else - { - v4 = a1 + 3; - result = a2 + 8; - do - { - v5 = *v4++; - result -= 2; - *(_WORD *)(result + 2) = v5; - } - while ( v4 != a1 + 8 ); - } - return result; -} - -//----- (00466370) -------------------------------------------------------- -__int16 __cdecl __emul(int a1, int a2, int a3) -{ - int v3; // edx - int v4; // ebx - __int16 v5; // bp - int v6; // ecx - int v7; // eax - int v8; // esi - int v9; // eax - _WORD *v10; // eax - int v11; // eax - int v12; // ecx - int v13; // eax - int v14; // eax - _WORD *v15; // eax - int v16; // ebx - int v17; // ebp - char *v18; // eax - int v19; // eax - unsigned __int16 v20; // cx - unsigned int v21; // eax - unsigned int v22; // edx - bool v23; // zf - __int16 v24; // ax - char *v25; // eax - int v26; // eax - __int16 v28; // [esp+2Ch] [ebp-50h] - __int16 v29; // [esp+2Eh] [ebp-4Eh] - __int16 v30; // [esp+3Ch] [ebp-40h] BYREF - unsigned __int16 v31; // [esp+3Eh] [ebp-3Eh] - char v32; // [esp+40h] [ebp-3Ch] BYREF - char v33; // [esp+4Ch] [ebp-30h] BYREF - __int16 v34; // [esp+4Eh] [ebp-2Eh] BYREF - unsigned __int16 v35; // [esp+50h] [ebp-2Ch] - char v36; // [esp+52h] [ebp-2Ah] BYREF - char v37; // [esp+5Eh] [ebp-1Eh] BYREF - - v3 = a1; - v4 = a2; - v5 = *(_WORD *)(a1 + 10) & 0x7FFF; - if ( v5 == 0x7FFF ) - { - v12 = a1 + 10; - v13 = a1; - do - { - v13 += 2; - if ( *(_WORD *)(v13 - 2) ) - { - *(_DWORD *)a3 = *(_DWORD *)a1; - *(_DWORD *)(a3 + 4) = *(_DWORD *)(a1 + 4); - v11 = *(_DWORD *)(a1 + 8); - *(_DWORD *)(a3 + 8) = v11; - return v11; - } - } - while ( v13 != v12 ); - v29 = *(_WORD *)(a2 + 10); - v28 = v29 & 0x7FFF; - if ( (v29 & 0x7FFF) == 0x7FFF ) - goto LABEL_3; - goto LABEL_18; - } - v29 = *(_WORD *)(a2 + 10); - if ( (v29 & 0x7FFF) == 0x7FFF ) - { -LABEL_3: - v6 = a2 + 10; - v7 = a2; - do - { - v7 += 2; - if ( *(_WORD *)(v7 - 2) ) - { - *(_DWORD *)a3 = *(_DWORD *)a2; - *(_DWORD *)(a3 + 4) = *(_DWORD *)(a2 + 4); - v11 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a3 + 8) = v11; - return v11; - } - } - while ( v7 != v6 ); - v8 = 0; - if ( v5 != 0x7FFF ) - goto LABEL_7; - v12 = a1 + 10; - v28 = 0x7FFF; -LABEL_18: - v14 = a1; - while ( 1 ) - { - v14 += 2; - if ( *(_WORD *)(v14 - 2) ) - break; - if ( v14 == v12 ) - { - v15 = (_WORD *)(a2 + 2); - while ( !*v15 ) - { - if ( ++v15 == (_WORD *)(a2 + 16) ) - { -LABEL_13: - LOWORD(v11) = a3; - *(_DWORD *)a3 = 0; - *(_DWORD *)(a3 + 4) = 0; - *(_DWORD *)(a3 + 8) = 2147467264; - return v11; - } - } - if ( v28 != 0x7FFF ) - goto LABEL_41; - v8 = 1; - v6 = a2 + 10; - goto LABEL_7; - } - } - if ( v28 != 0x7FFF ) - goto LABEL_27; - v8 = 0; - v6 = a2 + 10; -LABEL_7: - v9 = a2; - while ( 1 ) - { - v9 += 2; - if ( *(_WORD *)(v9 - 2) ) - break; - if ( v9 == v6 ) - { - v10 = (_WORD *)(a1 + 2); - while ( !*v10 ) - { - if ( (_WORD *)(a1 + 16) == ++v10 ) - goto LABEL_13; - } - goto LABEL_33; - } - } - if ( !v8 ) - goto LABEL_27; -LABEL_33: - v28 = 0x7FFF; - if ( v5 == 0x7FFF ) - { - v12 = a1 + 10; -LABEL_41: - while ( 1 ) - { - v3 += 2; - if ( *(_WORD *)(v3 - 2) ) - break; - if ( v3 == v12 ) - goto LABEL_34; - } - v21 = 0; - } - else - { -LABEL_34: - v21 = (unsigned int)*(__int16 *)(a1 + 10) >> 31; - } - if ( v28 == 0x7FFF ) - { - while ( 1 ) - { - v4 += 2; - if ( *(_WORD *)(v4 - 2) ) - break; - if ( v4 == a2 + 10 ) - goto LABEL_36; - } - v22 = 0; - } - else - { -LABEL_36: - v22 = (unsigned int)v29 >> 31; - } - v23 = v22 == v21; - v24 = 0x8000; - if ( v23 ) - v24 = 0; - *(_DWORD *)a3 = 0; - LOWORD(v11) = v24 | 0x7FFF; - *(_DWORD *)(a3 + 4) = 0; - *(_WORD *)(a3 + 8) = 0; - *(_WORD *)(a3 + 10) = v11; - return v11; - } -LABEL_27: - __emovi(a1, (int)&v30); - __emovi(a2, (int)&v34); - v16 = v31; - v17 = v35; - if ( v31 ) - { - v20 = v35; -LABEL_52: - v25 = &v36; - if ( v20 ) - { -LABEL_56: - v26 = __emulm((int)&v30, (int)&v34); - __emdnorm((int)&v34, v26, 0, v16 + v17 - 16382, 64, 80); - v34 = -(v30 != v34); - LOWORD(v11) = __emovo(&v34, a3); - return v11; - } - while ( v25 != &v37 ) - { - v25 += 2; - if ( *((_WORD *)v25 - 1) ) - { - v17 -= __enormlz(&v34); - goto LABEL_56; - } - } - } - else - { - v18 = &v32; - while ( v18 != &v33 ) - { - v18 += 2; - if ( *((_WORD *)v18 - 1) ) - { - v19 = __enormlz(&v30); - v20 = v35; - v16 = -v19; - goto LABEL_52; - } - } - } - LOWORD(v11) = a3; - *(_DWORD *)a3 = 0; - *(_DWORD *)(a3 + 4) = 0; - *(_DWORD *)(a3 + 8) = 0; - return v11; -} - -//----- (00466720) -------------------------------------------------------- -int *__usercall __pformat_cvt@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7) -{ - char v10; // c2 - char v11; // c3 - char v12; // c0 - __int16 v13; // cx - int v14; // ebx - int v15; // eax - long double v17; // [esp+20h] [ebp-2Ch] BYREF - int v18; // [esp+2Ch] [ebp-20h] - int v19; // [esp+38h] [ebp-14h] BYREF - int *v20; // [esp+3Ch] [ebp-10h] BYREF - - *(_QWORD *)&v17 = a2; - HIDWORD(v17) = a3; - _FST7 = v17; - v18 = a4; - __asm { fxam } - if ( v12 ) - { - if ( !v10 ) - { - v19 = 4; - v14 = 0; - v15 = 0; - goto LABEL_7; - } - v19 = 3; - v13 = WORD4(v17); - v14 = 0; - } - else - { - v13 = WORD4(v17); - if ( v10 ) - { - if ( v11 ) - { - v19 = 2; - v14 = -16445; - } - else - { - v19 = 1; - v14 = (__int16)((WORD4(v17) & 0x7FFF) - 16446); - } - } - else - { - v19 = 0; - v14 = 0; - } - } - v15 = v13 & 0x8000; -LABEL_7: - *a7 = v15; - return __gdtoa(fpi_0_0, v14, (int *)&v17, &v19, a1, a5, a6, &v20); -} -// 466754: variable 'v12' is possibly undefined -// 466759: variable 'v10' is possibly undefined -// 4667DB: variable 'v11' is possibly undefined -// 53E230: using guessed type int fpi_0_0[6]; - -//----- (00466820) -------------------------------------------------------- -int __usercall __pformat_putc@(int a1@, int a2@) -{ - int v4; // edx - int v5; // eax - int result; // eax - - v4 = *(_DWORD *)(a2 + 4); - if ( (v4 & 0x4000) == 0 ) - { - v5 = *(_DWORD *)(a2 + 32); - if ( *(_DWORD *)(a2 + 36) <= v5 ) - goto LABEL_5; - } - if ( (v4 & 0x2000) == 0 ) - { - *(_BYTE *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 32)) = a1; - v5 = *(_DWORD *)(a2 + 32); -LABEL_5: - result = v5 + 1; - *(_DWORD *)(a2 + 32) = result; - return result; - } - fputc(a1, *(FILE **)a2); - result = *(_DWORD *)(a2 + 32) + 1; - *(_DWORD *)(a2 + 32) = result; - return result; -} - -//----- (00466880) -------------------------------------------------------- -int __usercall __pformat_wputchars@(int a1@, int a2@, int a3@) -{ - int v5; // eax - int result; // eax - signed int v7; // eax - char *v8; // ebp - char *v9; // esi - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // eax - int v15; // [esp+1Ch] [ebp-40h] - mbstate_t State; // [esp+28h] [ebp-34h] BYREF - char Dest[44]; // [esp+30h] [ebp-2Ch] BYREF - - wcrtomb(Dest, 0, &State); - v5 = *(_DWORD *)(a3 + 12); - if ( v5 >= 0 && a2 > v5 ) - a2 = *(_DWORD *)(a3 + 12); - result = *(_DWORD *)(a3 + 8); - if ( result <= a2 ) - { - *(_DWORD *)(a3 + 8) = -1; - goto LABEL_6; - } - v13 = result - a2; - *(_DWORD *)(a3 + 8) = v13; - if ( (*(_BYTE *)(a3 + 5) & 4) == 0 ) - { - *(_DWORD *)(a3 + 8) = v13 - 1; - do - { - __pformat_putc(32, a3); - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - } - while ( result ); -LABEL_6: - if ( a2 <= 0 ) - { - *(_DWORD *)(a3 + 8) = -2; - return result; - } - goto LABEL_7; - } - if ( a2 > 0 ) - { -LABEL_7: - v15 = a2; - while ( 1 ) - { - a1 += 2; - v7 = wcrtomb(Dest, *(_WORD *)(a1 - 2), &State); - if ( v7 <= 0 ) - goto LABEL_19; - v8 = &Dest[v7]; - v9 = Dest; - do - { - while ( 1 ) - { - v11 = *(_DWORD *)(a3 + 4); - ++v9; - if ( (v11 & 0x4000) == 0 ) - { - v10 = *(_DWORD *)(a3 + 32); - if ( *(_DWORD *)(a3 + 36) <= v10 ) - goto LABEL_11; - } - v12 = *(v9 - 1); - if ( (v11 & 0x2000) != 0 ) - break; - *(_BYTE *)(*(_DWORD *)a3 + *(_DWORD *)(a3 + 32)) = v12; - v10 = *(_DWORD *)(a3 + 32); -LABEL_11: - *(_DWORD *)(a3 + 32) = v10 + 1; - if ( v9 == v8 ) - goto LABEL_16; - } - fputc(v12, *(FILE **)a3); - ++*(_DWORD *)(a3 + 32); - } - while ( v9 != v8 ); -LABEL_16: - if ( !--v15 ) - { - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - if ( result > 0 ) - goto LABEL_18; - return result; - } - } - } - *(_DWORD *)(a3 + 8) = v13 - 1; - do - { -LABEL_18: - __pformat_putc(32, a3); -LABEL_19: - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - } - while ( result > 0 ); - return result; -} -// 466880: using guessed type char var_2C[44]; - -//----- (004669E0) -------------------------------------------------------- -int __usercall __pformat_putchars@(_BYTE *a1@, int a2@, int a3@) -{ - int v3; // edi - int v6; // eax - int result; // eax - int v8; // eax - int v9; // edi - int v10; // edx - FILE *Stream; // ecx - int v12; // edx - int v13; // eax - int v14; // edx - - v3 = a2; - v6 = *(_DWORD *)(a3 + 12); - if ( v6 >= 0 && a2 > v6 ) - v3 = *(_DWORD *)(a3 + 12); - result = *(_DWORD *)(a3 + 8); - if ( result > v3 ) - { - v13 = result - v3; - *(_DWORD *)(a3 + 8) = v13; - v14 = v13; - v8 = *(_DWORD *)(a3 + 4); - if ( (v8 & 0x400) != 0 ) - { - if ( !v3 ) - { - *(_DWORD *)(a3 + 8) = v14 - 1; - goto LABEL_21; - } - goto LABEL_8; - } - *(_DWORD *)(a3 + 8) = v14 - 1; - do - { - __pformat_putc(32, a3); - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - } - while ( result ); - } - else - { - *(_DWORD *)(a3 + 8) = -1; - } - if ( !v3 ) - { - *(_DWORD *)(a3 + 8) = -2; - return result; - } - v8 = *(_DWORD *)(a3 + 4); -LABEL_8: - v9 = (int)&a1[v3 - 1]; - while ( 1 ) - { - if ( (v8 & 0x4000) != 0 || (v10 = *(_DWORD *)(a3 + 32), *(_DWORD *)(a3 + 36) > v10) ) - { - Stream = *(FILE **)a3; - if ( (v8 & 0x2000) != 0 ) - fputc((char)*a1, Stream); - else - *((_BYTE *)&Stream->_ptr + *(_DWORD *)(a3 + 32)) = *a1; - v10 = *(_DWORD *)(a3 + 32); - } - *(_DWORD *)(a3 + 32) = v10 + 1; - if ( (_BYTE *)v9 == a1 ) - break; - v8 = *(_DWORD *)(a3 + 4); - ++a1; - } - while ( 1 ) - { - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - if ( result <= 0 ) - break; - v8 = *(_DWORD *)(a3 + 4); -LABEL_21: - if ( (v8 & 0x4000) != 0 || (v12 = *(_DWORD *)(a3 + 32), *(_DWORD *)(a3 + 36) > v12) ) - { - if ( (v8 & 0x2000) != 0 ) - fputc(32, *(FILE **)a3); - else - *(_BYTE *)(*(_DWORD *)a3 + *(_DWORD *)(a3 + 32)) = 32; - v12 = *(_DWORD *)(a3 + 32); - } - *(_DWORD *)(a3 + 32) = v12 + 1; - } - return result; -} - -//----- (00466B20) -------------------------------------------------------- -int __usercall __pformat_puts@(char *a1@, int a2@) -{ - char *String; // ebx - signed int MaxCount; // eax - int v5; // eax - - String = a1; - if ( !a1 ) - String = "(null)"; - MaxCount = *(_DWORD *)(a2 + 12); - if ( MaxCount < 0 ) - v5 = strlen(String); - else - v5 = strnlen(String, MaxCount); - return __pformat_putchars(String, v5, a2); -} - -//----- (00466B80) -------------------------------------------------------- -int __usercall __pformat_emit_inf_or_nan@(int a1@, int a2@, int a3@) -{ - int v5; // ebx - char *v6; // ecx - char v7; // bl - int i; // edx - char v10; // [esp+Ch] [ebp-20h] BYREF - char v11[31]; // [esp+Dh] [ebp-1Fh] BYREF - - *(_DWORD *)(a3 + 12) = -1; - v5 = *(_DWORD *)(a3 + 4); - if ( a1 ) - { - v10 = 45; - v6 = v11; - } - else if ( (v5 & 0x100) != 0 ) - { - v10 = 43; - v6 = v11; - } - else if ( (v5 & 0x40) != 0 ) - { - v10 = 32; - v6 = v11; - } - else - { - v6 = &v10; - } - v7 = v5 & 0x20; - for ( i = 0; i != 3; ++i ) - v6[i] = v7 | *(_BYTE *)(a2 + i) & 0xDF; - return __pformat_putchars(&v10, v6 + 3 - &v10, a3); -} - -//----- (00466C10) -------------------------------------------------------- -int __usercall __pformat_xint@(int a1@, __int64 a2, int a3, int a4, int a5) -{ - int v5; // ebx - int v6; // ecx - int v7; // edi - int v8; // ecx - int v9; // eax - void *v10; // esp - char v11; // cl - void *v12; // esp - int v13; // ebx - unsigned __int64 v14; // rdi - char v15; // al - char v16; // cl - char *v17; // esi - int v18; // eax - int result; // eax - int v20; // edi - bool v21; // zf - unsigned int v22; // edx - int v23; // edi - int v24; // eax - int v25; // eax - int v26; // esi - int v27; // eax - int v28; // eax - int v29; // eax - void *v30; // esp - void *v31; // esp - int v32; // ecx - int v33; // eax - int v34; // edx - size_t v35; // edi - size_t v36; // eax - size_t v37; // ecx - size_t v38; // edi - int v39; // ecx - unsigned int v40; // eax - int v41; // eax - void *v42; // esp - void *v43; // esp - int v44; // eax - int v45; // eax - void *v46; // esp - void *v47; // esp - int v48; // eax - void *v49; // [esp+0h] [ebp-68h] - FILE *v50; // [esp+4h] [ebp-64h] - _BYTE v51[8]; // [esp+10h] [ebp-58h] BYREF - int v52; // [esp+18h] [ebp-50h] - int v53; // [esp+1Ch] [ebp-4Ch] - __int64 v54; // [esp+20h] [ebp-48h] - int v55; // [esp+28h] [ebp-40h] - int v56; // [esp+2Ch] [ebp-3Ch] - char *v57; // [esp+30h] [ebp-38h] - size_t v58; // [esp+34h] [ebp-34h] - size_t Size; // [esp+38h] [ebp-30h] - size_t v60; // [esp+3Ch] [ebp-2Ch] - __int64 v61; // [esp+40h] [ebp-28h] - int v62; // [esp+48h] [ebp-20h] - int v63; // [esp+4Ch] [ebp-1Ch] - - v56 = a1; - v5 = a5; - v61 = a2; - v54 = a2; - v62 = a3; - v63 = a4; - if ( a1 == 111 ) - { - v39 = 0; - v7 = *(_DWORD *)(a5 + 4); - v55 = *(_DWORD *)(a5 + 12); - if ( v55 >= 0 ) - v39 = v55; - v8 = v39 + 24; - if ( (v7 & 0x1000) != 0 ) - { - if ( *(_WORD *)(a5 + 28) ) - { - v60 = 3; -LABEL_46: - v53 = *(_DWORD *)(a5 + 8); - v28 = v8 / 3u + v8; - if ( v28 < v53 ) - v28 = v53; - v29 = 16 * ((unsigned int)(v28 + 27) >> 4); - v30 = alloca(v29); - v31 = alloca(v29); - v57 = v51; - if ( v56 != 111 ) - { - v11 = 15; - goto LABEL_50; - } -LABEL_75: - v11 = 7; - goto LABEL_8; - } - v48 = v8; - v53 = *(_DWORD *)(a5 + 8); - if ( v8 < v53 ) - v48 = v53; - v40 = v48 + 27; - } - else - { - v53 = *(_DWORD *)(a5 + 8); - if ( v53 >= v8 ) - v8 = v53; - v40 = v8 + 27; - } - v41 = 16 * (v40 >> 4); - v42 = alloca(v41); - v43 = alloca(v41); - v60 = 3; - v57 = v51; - goto LABEL_75; - } - v6 = 0; - v7 = *(_DWORD *)(a5 + 4); - v55 = *(_DWORD *)(a5 + 12); - if ( v55 >= 0 ) - v6 = v55; - v8 = v6 + 18; - if ( (v7 & 0x1000) != 0 ) - { - v21 = *(_WORD *)(a5 + 28) == 0; - v60 = 4; - if ( v21 ) - { - v44 = v8; - v53 = *(_DWORD *)(a5 + 8); - if ( v8 < v53 ) - v44 = v53; - v45 = 16 * ((unsigned int)(v44 + 27) >> 4); - v46 = alloca(v45); - v11 = 15; - v47 = alloca(v45); - v57 = v51; -LABEL_50: - if ( v54 ) - goto LABEL_9; -LABEL_51: - v17 = v57; - goto LABEL_52; - } - goto LABEL_46; - } - v53 = *(_DWORD *)(a5 + 8); - if ( v53 >= v8 ) - v8 = v53; - v9 = 16 * ((unsigned int)(v8 + 27) >> 4); - v10 = alloca(v9); - v11 = 15; - v12 = alloca(v9); - v60 = 4; - v57 = v51; -LABEL_8: - if ( !v54 ) - goto LABEL_51; -LABEL_9: - LOBYTE(Size) = v11; - v52 = v7; - v13 = (int)v57; - v14 = __PAIR64__(v54, HIDWORD(v54)); - LOBYTE(v58) = v56 & 0x20; - do - { - ++v13; - v15 = v58 | ((BYTE4(v14) & Size) + 55); - v16 = v60; - if ( (unsigned __int8)((BYTE4(v14) & Size) + 48) < 0x3Au ) - v15 = (BYTE4(v14) & Size) + 48; - HIDWORD(v14) = __PAIR64__(v14, HIDWORD(v14)) >> v60; - *(_BYTE *)(v13 - 1) = v15; - LODWORD(v14) = (unsigned int)v14 >> v16; - if ( (v16 & 0x20) != 0 ) - HIDWORD(v14) = v14; - if ( (v16 & 0x20) != 0 ) - LODWORD(v14) = 0; - } - while ( v14 ); - v17 = (char *)v13; - v7 = v52; - v5 = a5; - if ( v17 == v57 ) - { -LABEL_52: - v32 = v55; - v33 = v7; - v34 = v17 - v57; - BYTE1(v33) = BYTE1(v7) & 0xF7; - *(_DWORD *)(v5 + 4) = v33; - v18 = v32 - v34; - if ( v32 <= 0 ) - goto LABEL_78; - goto LABEL_53; - } - if ( v55 <= 0 || (v18 = v55 - (v17 - v57), v18 <= 0) ) - { - if ( v56 != 111 || (v52 & 0x800) == 0 ) - goto LABEL_21; - *v17++ = 48; -LABEL_78: - if ( v17 == v57 ) - { - result = 0; - if ( v55 ) - goto LABEL_56; -LABEL_22: - v20 = v53; - if ( result < v53 ) - goto LABEL_57; - goto LABEL_23; - } -LABEL_21: - result = v17 - v57; - goto LABEL_22; - } -LABEL_53: - v35 = 1; - v49 = v17; - if ( v18 > 0 ) - v35 = v18; - v17 += v35; - memset(v49, 48, v35); - if ( v17 != v57 ) - goto LABEL_21; -LABEL_56: - v20 = v53; - *v17 = 48; - result = ++v17 - v57; - if ( result < v20 ) - { -LABEL_57: - v21 = v56 == 111; - v36 = v20 - result; - Size = v36; - *(_DWORD *)(v5 + 8) = v36; - v23 = *(_DWORD *)(v5 + 4); - if ( v21 ) - { - if ( v55 >= 0 || (*(_DWORD *)(v5 + 4) & 0x600) != 512 ) - { - v37 = Size - 1; - if ( (v23 & 0x400) != 0 ) - { - if ( v17 > v57 ) - { -LABEL_88: - v58 = v37; - v22 = (unsigned int)v57; - goto LABEL_31; - } -LABEL_84: - v26 = v37; - goto LABEL_40; - } - goto LABEL_64; - } - } - else - { - if ( (v23 & 0x800) != 0 ) - { - Size = v36 - 2; - if ( (int)(v36 - 2) <= 0 || v55 >= 0 ) - goto LABEL_61; - } - else if ( v55 >= 0 ) - { - goto LABEL_86; - } - if ( (v23 & 0x600) != 512 ) - { - if ( (v23 & 0x800) == 0 ) - { -LABEL_86: - v37 = Size - 1; - if ( (v23 & 0x400) != 0 ) - goto LABEL_87; -LABEL_64: - v38 = v37; - do - { - __pformat_putc(32, v5); - result = v38--; - } - while ( result > 0 ); -LABEL_66: - if ( v17 > v57 ) - { - v23 = *(_DWORD *)(v5 + 4); - v22 = (unsigned int)v57; - Size = -1; - v58 = -2; - goto LABEL_31; - } - return result; - } -LABEL_61: - result = (unsigned __int8)v56; - v17[1] = 48; - v17 += 2; - *(v17 - 2) = result; - goto LABEL_62; - } - } - v58 = Size - 1; - v60 = Size; - result = (int)memset(v17, 48, Size); - v17 += v60; - Size = v58 - Size; - if ( v56 == 111 || (v23 & 0x800) == 0 ) - { -LABEL_62: - if ( (int)Size > 0 ) - { - v23 = *(_DWORD *)(v5 + 4); - v37 = Size - 1; - if ( (v23 & 0x400) == 0 ) - goto LABEL_64; -LABEL_87: - if ( v57 < v17 ) - goto LABEL_88; - goto LABEL_84; - } - goto LABEL_26; - } - goto LABEL_61; - } -LABEL_23: - v21 = v56 == 111; - *(_DWORD *)(v5 + 8) = -1; - if ( v21 ) - goto LABEL_66; - Size = -1; - if ( (*(_BYTE *)(v5 + 5) & 8) != 0 ) - { - result = (unsigned __int8)v56; - v17[1] = 48; - v17 += 2; - *(v17 - 2) = result; - } -LABEL_26: - v22 = (unsigned int)v57; - if ( v17 <= v57 ) - return result; - v23 = *(_DWORD *)(v5 + 4); - v58 = Size - 1; -LABEL_31: - while ( 1 ) - { - --v17; - if ( (v23 & 0x4000) != 0 ) - break; - v24 = *(_DWORD *)(v5 + 32); - if ( *(_DWORD *)(v5 + 36) > v24 ) - break; -LABEL_29: - result = v24 + 1; - *(_DWORD *)(v5 + 32) = result; - if ( (unsigned int)v17 <= v22 ) - goto LABEL_35; -LABEL_30: - v23 = *(_DWORD *)(v5 + 4); - } - v25 = *v17; - if ( (v23 & 0x2000) == 0 ) - { - *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = v25; - v24 = *(_DWORD *)(v5 + 32); - goto LABEL_29; - } - v50 = *(FILE **)v5; - v60 = v22; - fputc(v25, v50); - v22 = v60; - result = *(_DWORD *)(v5 + 32) + 1; - *(_DWORD *)(v5 + 32) = result; - if ( (unsigned int)v17 > v22 ) - goto LABEL_30; -LABEL_35: - if ( (int)Size > 0 ) - { - v23 = *(_DWORD *)(v5 + 4); - v26 = v58; -LABEL_40: - while ( 2 ) - { - if ( (v23 & 0x4000) != 0 || (v27 = *(_DWORD *)(v5 + 32), *(_DWORD *)(v5 + 36) > v27) ) - { - if ( (v23 & 0x2000) != 0 ) - { - fputc(32, *(FILE **)v5); - ++*(_DWORD *)(v5 + 32); - result = v26 - 1; - if ( v26 <= 0 ) - return result; - goto LABEL_39; - } - *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = 32; - v27 = *(_DWORD *)(v5 + 32); - } - *(_DWORD *)(v5 + 32) = v27 + 1; - result = v26 - 1; - if ( v26 <= 0 ) - return result; -LABEL_39: - v23 = *(_DWORD *)(v5 + 4); - v26 = result; - continue; - } - } - return result; -} - -//----- (004671C0) -------------------------------------------------------- -int __cdecl __pformat_int(__int64 a1, int a2, int a3, int a4) -{ - int v4; // ecx - int v5; // ebx - int v6; // esi - int v7; // ecx - int v8; // eax - void *v9; // esp - void *v10; // esp - unsigned int v11; // edi - int v12; // esi - char *v13; // ebx - char *v14; // ecx - unsigned __int64 v15; // kr08_8 - char *v16; // edi - char *v17; // esi - int v18; // eax - size_t v19; // edx - int v20; // eax - int v21; // edx - unsigned int v22; // ecx - int v23; // edi - char *v24; // esi - int v25; // eax - int v26; // eax - int result; // eax - int v28; // edx - int v29; // ecx - int v30; // edx - int v31; // eax - int v32; // eax - signed int v33; // ecx - int v34; // ecx - int v36; // [esp+10h] [ebp-48h] BYREF - int v37; // [esp+18h] [ebp-40h] - char *v38; // [esp+1Ch] [ebp-3Ch] - __int64 v39; // [esp+20h] [ebp-38h] - int v40; // [esp+28h] [ebp-30h] - char *v41; // [esp+2Ch] [ebp-2Ch] - __int64 v42; // [esp+30h] [ebp-28h] - int v43; // [esp+38h] [ebp-20h] - int v44; // [esp+3Ch] [ebp-1Ch] - - v4 = 0; - v5 = a4; - v42 = a1; - v6 = *(_DWORD *)(a4 + 4); - v43 = a2; - v44 = a3; - v39 = a1; - v37 = *(_DWORD *)(a4 + 12); - if ( v37 >= 0 ) - v4 = v37; - v7 = v4 + 23; - if ( (v6 & 0x1000) != 0 && *(_WORD *)(a4 + 28) ) - v7 += v7 / 3u; - v40 = *(_DWORD *)(a4 + 8); - if ( v40 >= v7 ) - v7 = v40; - v8 = 16 * ((unsigned int)(v7 + 27) >> 4); - v9 = alloca(v8); - v10 = alloca(v8); - v41 = (char *)&v36; - if ( (v6 & 0x80) != 0 ) - { - if ( v39 < 0 ) - { - v12 = -(int)v39; - v11 = (unsigned __int64)-v39 >> 32; -LABEL_12: - v38 = v41 + 1; - v13 = v41; - while ( 1 ) - { - if ( v41 == v13 ) - { - v14 = v41; - v13 = v38; - } - else - { - v14 = v13 + 1; - if ( (*(_BYTE *)(a4 + 5) & 0x10) != 0 && *(_WORD *)(a4 + 28) && ((v13 - v41) & 0x80000003) == 3 ) - { - *v13 = 44; - v13 += 2; - } - else - { - v14 = v13++; - } - } - LODWORD(v39) = v14; - *v14 = __PAIR64__(v11, v12) % 0xA + 48; - if ( __PAIR64__(v11, v12) <= 9 ) - break; - v15 = __PAIR64__(v11, v12) / 0xA; - v11 = (__PAIR64__(v11, v12) / 0xA) >> 32; - v12 = v15; - } - v16 = v13; - v17 = v13; - v5 = a4; - if ( v37 > 0 ) - { - v18 = v37 - (v16 - v41); - if ( v18 <= 0 ) - goto LABEL_26; - goto LABEL_23; - } - if ( v41 != v16 ) - goto LABEL_27; - goto LABEL_64; - } - *(_DWORD *)(a4 + 4) = v6 & 0xFFFFFF7F; - } - v11 = HIDWORD(v39); - v12 = v39; - if ( v39 ) - goto LABEL_12; - v17 = v41; - v18 = v37; - if ( v37 > 0 ) - { -LABEL_23: - v19 = 1; - if ( v18 > 0 ) - v19 = v18; - LODWORD(v39) = v19; - memset(v17, 48, v19); - v17 += v39; -LABEL_26: - if ( v41 != v17 ) - goto LABEL_27; - goto LABEL_68; - } -LABEL_64: - if ( !v37 ) - { - v21 = *(_DWORD *)(v5 + 4); - if ( v40 <= 0 ) - goto LABEL_33; - if ( (v21 & 0x1C0) == 0 ) - goto LABEL_32; - goto LABEL_30; - } -LABEL_68: - *v17++ = 48; -LABEL_27: - if ( v40 <= 0 ) - goto LABEL_61; - v40 -= v17 - v41; - v20 = v40; - v21 = *(_DWORD *)(v5 + 4); - *(_DWORD *)(v5 + 8) = v40; - if ( v20 <= 0 ) - goto LABEL_33; - if ( (v21 & 0x1C0) != 0 ) -LABEL_30: - *(_DWORD *)(v5 + 8) = v40 - 1; - if ( v37 >= 0 || (v21 & 0x600) != 512 ) - { -LABEL_32: - if ( (v21 & 0x400) != 0 ) - goto LABEL_33; - v31 = *(_DWORD *)(v5 + 8); - *(_DWORD *)(v5 + 8) = v31 - 1; - if ( v31 <= 0 ) - goto LABEL_33; - do - { - __pformat_putc(32, v5); - v32 = *(_DWORD *)(v5 + 8); - *(_DWORD *)(v5 + 8) = v32 - 1; - } - while ( v32 > 0 ); -LABEL_61: - v21 = *(_DWORD *)(v5 + 4); - goto LABEL_33; - } - v33 = *(_DWORD *)(v5 + 8); - *(_DWORD *)(v5 + 8) = v33 - 1; - if ( v33 > 0 ) - { - v40 = v21; - LODWORD(v39) = v33; - memset(v17, 48, v33); - v34 = v39; - LOWORD(v21) = v40; - *(_DWORD *)(v5 + 8) = -1; - v17 += v34; - } -LABEL_33: - if ( (v21 & 0x80u) == 0 ) - { - if ( (v21 & 0x100) != 0 ) - { - *v17 = 43; - v22 = (unsigned int)(v17 + 1); - } - else - { - v22 = (unsigned int)v17; - if ( (v21 & 0x40) != 0 ) - { - *v17 = 32; - v22 = (unsigned int)(v17 + 1); - } - } - } - else - { - *v17 = 45; - v22 = (unsigned int)(v17 + 1); - } - v23 = (int)v41; - if ( v22 > (unsigned int)v41 ) - { - v24 = (char *)v22; - while ( 1 ) - { - --v24; - if ( (v21 & 0x4000) == 0 ) - { - v25 = *(_DWORD *)(v5 + 32); - if ( *(_DWORD *)(v5 + 36) <= v25 ) - goto LABEL_38; - } - v26 = *v24; - if ( (v21 & 0x2000) == 0 ) - break; - fputc(v26, *(FILE **)v5); - ++*(_DWORD *)(v5 + 32); - if ( (char *)v23 == v24 ) - goto LABEL_44; -LABEL_39: - v21 = *(_DWORD *)(v5 + 4); - } - *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = v26; - v25 = *(_DWORD *)(v5 + 32); -LABEL_38: - *(_DWORD *)(v5 + 32) = v25 + 1; - if ( (char *)v23 == v24 ) - goto LABEL_44; - goto LABEL_39; - } -LABEL_44: - result = *(_DWORD *)(v5 + 8); - while ( 1 ) - { - v28 = result--; - *(_DWORD *)(v5 + 8) = result; - if ( v28 <= 0 ) - break; - v29 = *(_DWORD *)(v5 + 4); - if ( (v29 & 0x4000) != 0 || (v30 = *(_DWORD *)(v5 + 32), *(_DWORD *)(v5 + 36) > v30) ) - { - if ( (v29 & 0x2000) != 0 ) - fputc(32, *(FILE **)v5); - else - *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = 32; - v30 = *(_DWORD *)(v5 + 32); - result = *(_DWORD *)(v5 + 8); - } - *(_DWORD *)(v5 + 32) = v30 + 1; - } - return result; -} - -//----- (004675E0) -------------------------------------------------------- -int __usercall __pformat_emit_radix_point@(int a1@) -{ - wchar_t v2; // dx - int v3; // eax - int v4; // eax - void *v5; // esp - void *v6; // esp - char *v7; // esi - signed int v8; // eax - char *v9; // edi - int result; // eax - int v11; // edx - FILE *v12; // ecx - struct lconv *v13; // eax - signed int v14; // eax - int v15; // [esp+0h] [ebp-48h] BYREF - char Dest[12]; // [esp+10h] [ebp-38h] BYREF - int *v17; // [esp+1Ch] [ebp-2Ch] - wchar_t DstCh; // [esp+26h] [ebp-22h] BYREF - mbstate_t State; // [esp+28h] [ebp-20h] BYREF - - if ( *(_DWORD *)(a1 + 16) == -3 ) - { - State._Wchar = 0; - *(_DWORD *)&State._Byte = 0; - v13 = localeconv(); - v14 = mbrtowc(&DstCh, v13->decimal_point, 0x10u, &State); - if ( v14 <= 0 ) - { - v2 = *(_WORD *)(a1 + 20); - } - else - { - v2 = DstCh; - *(_WORD *)(a1 + 20) = DstCh; - } - *(_DWORD *)(a1 + 16) = v14; - } - else - { - v2 = *(_WORD *)(a1 + 20); - } - if ( !v2 ) - return __pformat_putc(46, a1); - v3 = *(_DWORD *)(a1 + 16); - v17 = &v15; - v4 = 16 * ((unsigned int)(v3 + 15) >> 4); - v5 = alloca(v4); - v6 = alloca(v4); - State._Wchar = 0; - v7 = Dest; - *(_DWORD *)&State._Byte = 0; - v8 = wcrtomb(Dest, v2, &State); - if ( v8 > 0 ) - { - v9 = &Dest[v8]; - while ( 1 ) - { - result = *(_DWORD *)(a1 + 4); - ++v7; - if ( (result & 0x4000) == 0 ) - { - v11 = *(_DWORD *)(a1 + 32); - if ( *(_DWORD *)(a1 + 36) <= v11 ) - goto LABEL_7; - } - v12 = *(FILE **)a1; - if ( (result & 0x2000) != 0 ) - { - result = fputc(*(v7 - 1), v12); - ++*(_DWORD *)(a1 + 32); - if ( v7 == v9 ) - return result; - } - else - { - result = *(_DWORD *)(a1 + 32); - *((_BYTE *)&v12->_ptr + result) = *(v7 - 1); - v11 = *(_DWORD *)(a1 + 32); -LABEL_7: - *(_DWORD *)(a1 + 32) = v11 + 1; - if ( v7 == v9 ) - return result; - } - } - } - return __pformat_putc(46, a1); -} -// 4675E0: using guessed type char Dest[12]; - -//----- (00467730) -------------------------------------------------------- -int __usercall __pformat_emit_float@(int a1@, char *a2@, int a3@, int a4) -{ - int v7; // ecx - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // eax - char v12; // dl - int v13; // eax - int v14; // eax - int v15; // ecx - int v16; // eax - int v17; // eax - int result; // eax - char v19; // dl - int v20; // eax - int v21; // eax - int v22; // eax - int v23; // edx - unsigned int v24; // [esp+Ch] [ebp-20h] - - v7 = *(_DWORD *)(a4 + 8); - if ( a3 <= 0 ) - { - if ( v7 <= 0 ) - { - if ( v7 ) - { - *(_DWORD *)(a4 + 8) = -1; - goto LABEL_9; - } - } - else - { - --v7; - } - v14 = *(_DWORD *)(a4 + 12); - if ( v7 <= v14 ) - { - *(_DWORD *)(a4 + 8) = -1; - goto LABEL_9; - } - } - else if ( a3 > v7 || (v14 = *(_DWORD *)(a4 + 12), v7 -= a3, v7 <= v14) ) - { - *(_DWORD *)(a4 + 8) = -1; - v8 = -1; - if ( (*(_BYTE *)(a4 + 5) & 0x10) == 0 ) - goto LABEL_9; -LABEL_4: - if ( !*(_WORD *)(a4 + 28) ) - goto LABEL_28; - goto LABEL_5; - } - v8 = v7 - v14; - *(_DWORD *)(a4 + 8) = v8; - if ( v14 > 0 || (v21 = *(_DWORD *)(a4 + 4), (v21 & 0x800) != 0) ) - { - *(_DWORD *)(a4 + 8) = --v8; - if ( a3 <= 0 || (*(_BYTE *)(a4 + 5) & 0x10) == 0 ) - goto LABEL_28; - goto LABEL_4; - } - if ( a3 > 0 && (v21 & 0x1000) != 0 && *(_WORD *)(a4 + 28) ) - { -LABEL_5: - v9 = v8; - v24 = (a3 + 2) / 3u; - if ( v24 != 1 ) - { - while ( v9 > 0 ) - { - *(_DWORD *)(a4 + 8) = --v9; - if ( !(v9 + v24 - 1 - v8) ) - { - v8 = v9; - goto LABEL_28; - } - } - goto LABEL_9; - } -LABEL_28: - if ( v8 > 0 ) - goto LABEL_29; -LABEL_9: - if ( !a1 ) - { -LABEL_10: - v10 = *(_DWORD *)(a4 + 4); - goto LABEL_11; - } - goto LABEL_52; - } -LABEL_29: - if ( a1 ) - { - v15 = v8 - 1; - *(_DWORD *)(a4 + 8) = v15; - if ( v15 && (*(_DWORD *)(a4 + 4) & 0x600) == 0 ) - goto LABEL_33; -LABEL_52: - __pformat_putc(45, a4); - goto LABEL_14; - } - v10 = *(_DWORD *)(a4 + 4); - if ( (v10 & 0x1C0) != 0 ) - { - v15 = v8 - 1; - *(_DWORD *)(a4 + 8) = v15; - if ( v15 && (v10 & 0x600) == 0 ) - { -LABEL_33: - *(_DWORD *)(a4 + 8) = v15 - 1; - do - { -LABEL_34: - __pformat_putc(32, a4); - v16 = *(_DWORD *)(a4 + 8); - *(_DWORD *)(a4 + 8) = v16 - 1; - } - while ( v16 > 0 ); - if ( a1 ) - goto LABEL_52; - goto LABEL_10; - } - } - else if ( (v10 & 0x600) == 0 ) - { - v23 = *(_DWORD *)(a4 + 8); - *(_DWORD *)(a4 + 8) = v23 - 1; - if ( v23 > 0 ) - goto LABEL_34; - } -LABEL_11: - if ( (v10 & 0x100) != 0 ) - { - __pformat_putc(43, a4); - } - else if ( (v10 & 0x40) != 0 ) - { - __pformat_putc(32, a4); - } -LABEL_14: - v11 = *(_DWORD *)(a4 + 8); - if ( v11 > 0 && (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) - { - *(_DWORD *)(a4 + 8) = v11 - 1; - do - { - __pformat_putc(48, a4); - v22 = *(_DWORD *)(a4 + 8); - *(_DWORD *)(a4 + 8) = v22 - 1; - } - while ( v22 > 0 ); - } - if ( a3 <= 0 ) - { - __pformat_putc(48, a4); - v17 = *(_DWORD *)(a4 + 12); - if ( v17 > 0 || (*(_BYTE *)(a4 + 5) & 8) != 0 ) - { - __pformat_emit_radix_point(a4); - if ( !a3 ) - goto LABEL_44; - v17 = *(_DWORD *)(a4 + 12); - } - else if ( !a3 ) - { -LABEL_39: - result = v17 - 1; - *(_DWORD *)(a4 + 12) = result; - return result; - } - *(_DWORD *)(a4 + 12) = a3 + v17; - do - { - __pformat_putc(48, a4); - ++a3; - } - while ( a3 ); - } - else - { - while ( 1 ) - { - v12 = *a2; - v13 = 48; - if ( *a2 ) - { - ++a2; - v13 = v12; - } - __pformat_putc(v13, a4); - if ( !--a3 ) - break; - if ( (*(_BYTE *)(a4 + 5) & 0x10) != 0 && *(_WORD *)(a4 + 28) && (unsigned int)(-1431655765 * a3) <= 0x55555555 ) - __pformat_wputchars(a4 + 28, 1, a4); - } - v17 = *(_DWORD *)(a4 + 12); - if ( v17 <= 0 && (*(_BYTE *)(a4 + 5) & 8) == 0 ) - goto LABEL_39; - __pformat_emit_radix_point(a4); - } -LABEL_44: - while ( 1 ) - { - result = *(_DWORD *)(a4 + 12); - *(_DWORD *)(a4 + 12) = result - 1; - if ( result <= 0 ) - break; - v19 = *a2; - v20 = 48; - if ( *a2 ) - { - ++a2; - v20 = v19; - } - __pformat_putc(v20, a4); - } - return result; -} - -//----- (00467AE0) -------------------------------------------------------- -int __usercall __pformat_emit_efloat@(int a1@, char *a2@, int a3@, _DWORD *a4) -{ - int v4; // ecx - int i; // ebx - int v6; // eax - int v7; // ecx - int v8; // eax - int v9; // edx - __int64 v12; // [esp+30h] [ebp-2Ch] - int v13; // [esp+38h] [ebp-24h] - int v14; // [esp+3Ch] [ebp-20h] - - v12 = a3 - 1; - v4 = (int)v12 / 10; - for ( i = 1; v4; v4 /= 10 ) - ++i; - v6 = a4[10]; - if ( v6 == -1 ) - { - a4[10] = 2; - v6 = 2; - } - v7 = a4[2]; - if ( i < v6 ) - i = v6; - v8 = v7 - (i + 2); - if ( v7 <= i + 2 ) - v8 = -1; - a4[2] = v8; - __pformat_emit_float(a1, a2, 1, (int)a4); - a4[3] = a4[10]; - v9 = a4[1]; - a4[1] = v9 | 0x1C0; - __pformat_putc(v9 & 0x20 | 0x45, (int)a4); - a4[2] += i + 1; - return __pformat_int(v12, v13, v14, (int)a4); -} -// 467BC2: variable 'v13' is possibly undefined -// 467BC2: variable 'v14' is possibly undefined - -//----- (00467BD0) -------------------------------------------------------- -void __usercall __pformat_efloat(_DWORD *a1@, long double a2) -{ - int v3; // eax - int v4; // eax - int *v5; // eax - int *v6; // esi - int v7; // [esp+28h] [ebp-24h] BYREF - int v8; // [esp+2Ch] [ebp-20h] BYREF - long double v9; // [esp+30h] [ebp-1Ch] - int v10; // [esp+3Ch] [ebp-10h] - - v3 = a1[3]; - if ( v3 < 0 ) - { - a1[3] = 6; - v4 = 7; - } - else - { - v4 = v3 + 1; - } - v9 = a2; - v5 = __pformat_cvt(2, *(__int64 *)&v9, SHIDWORD(v9), v10, v4, &v8, &v7); - v6 = v5; - if ( v8 == -32768 ) - __pformat_emit_inf_or_nan(v7, (int)v5, (int)a1); - else - __pformat_emit_efloat(v7, (char *)v5, v8, a1); - __freedtoa(v6); -} - -//----- (00467C80) -------------------------------------------------------- -void __usercall __pformat_float(int a1@, long double a2) -{ - int v3; // eax - int *v4; // eax - int *v5; // esi - int v6; // eax - int v7; // edx - int v8; // ecx - int v9; // edx - int v10; // [esp+28h] [ebp-24h] BYREF - int v11; // [esp+2Ch] [ebp-20h] BYREF - long double v12; // [esp+30h] [ebp-1Ch] - int v13; // [esp+3Ch] [ebp-10h] - - v3 = *(_DWORD *)(a1 + 12); - if ( v3 < 0 ) - { - *(_DWORD *)(a1 + 12) = 6; - v3 = 6; - } - v12 = a2; - v4 = __pformat_cvt(3, *(__int64 *)&v12, SHIDWORD(v12), v13, v3, &v11, &v10); - v5 = v4; - if ( v11 == -32768 ) - { - __pformat_emit_inf_or_nan(v10, (int)v4, a1); - } - else - { - __pformat_emit_float(v10, (char *)v4, v11, a1); - v6 = *(_DWORD *)(a1 + 8); - while ( 1 ) - { - v7 = v6--; - *(_DWORD *)(a1 + 8) = v6; - if ( v7 <= 0 ) - break; - v8 = *(_DWORD *)(a1 + 4); - if ( (v8 & 0x4000) != 0 || (v9 = *(_DWORD *)(a1 + 32), *(_DWORD *)(a1 + 36) > v9) ) - { - if ( (v8 & 0x2000) != 0 ) - fputc(32, *(FILE **)a1); - else - *(_BYTE *)(*(_DWORD *)a1 + *(_DWORD *)(a1 + 32)) = 32; - v9 = *(_DWORD *)(a1 + 32); - v6 = *(_DWORD *)(a1 + 8); - } - *(_DWORD *)(a1 + 32) = v9 + 1; - } - } - __freedtoa(v5); -} - -//----- (00467D70) -------------------------------------------------------- -void __usercall __pformat_gfloat(_DWORD *a1@, long double a2) -{ - int v3; // eax - int *v4; // eax - int v5; // edi - int *Str; // esi - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // eax - int v12; // edx - int v13; // [esp+28h] [ebp-24h] BYREF - int v14; // [esp+2Ch] [ebp-20h] BYREF - long double v15; // [esp+30h] [ebp-1Ch] - int v16; // [esp+3Ch] [ebp-10h] - - v3 = a1[3]; - if ( v3 < 0 ) - { - a1[3] = 6; - v3 = 6; - } - else if ( !v3 ) - { - a1[3] = 1; - v3 = 1; - } - v15 = a2; - v4 = __pformat_cvt(2, *(__int64 *)&v15, SHIDWORD(v15), v16, v3, &v14, &v13); - v5 = v14; - Str = v4; - if ( v14 == -32768 ) - { - __pformat_emit_inf_or_nan(v13, (int)v4, (int)a1); - __freedtoa(Str); - } - else - { - v7 = a1[1] & 0x800; - if ( v14 < -3 || (v8 = a1[3], v14 > v8) ) - { - if ( v7 ) - v10 = a1[3] - 1; - else - v10 = strlen((const char *)Str) - 1; - a1[3] = v10; - __pformat_emit_efloat(v13, (char *)Str, v5, a1); - __freedtoa(Str); - } - else - { - if ( v7 ) - { - a1[3] = v8 - v14; - } - else - { - v11 = strlen((const char *)Str) - v14; - a1[3] = v11; - if ( v11 < 0 ) - { - v12 = a1[2]; - if ( v12 > 0 ) - a1[2] = v12 + v11; - } - } - __pformat_emit_float(v13, (char *)Str, v5, (int)a1); - while ( 1 ) - { - v9 = a1[2]; - a1[2] = v9 - 1; - if ( v9 <= 0 ) - break; - __pformat_putc(32, (int)a1); - } - __freedtoa(Str); - } - } -} - -//----- (00467F00) -------------------------------------------------------- -int __usercall __pformat_xldouble@(int a1@, long double a2) -{ - __int16 v3; // fps - __int16 v5; // fps - int v9; // ebp - unsigned int v10; // edi - char *v11; // eax - char *v12; // esi - int v13; // edx - int v14; // eax - int v15; // edi - int v16; // ecx - int v17; // ebp - int v18; // eax - int v19; // eax - int v20; // eax - int v21; // eax - char v22; // cl - __int64 v23; // rax - unsigned int v24; // edi - unsigned int v25; // esi - unsigned __int64 v26; // kr08_8 - char v27; // cl - unsigned int v28; // esi - int v29; // edi - int v30; // ecx - __int16 v31; // dx - char v32; // cl - char v33; // al - unsigned int v34; // eax - int v35; // ecx - int v37; // eax - int v38; // eax - __int16 v39; // dx - int v40; // ecx - int v41; // esi - int v42; // eax - unsigned int v43; // [esp+24h] [ebp-88h] - int v44; // [esp+24h] [ebp-88h] - int v45; // [esp+2Ch] [ebp-80h] - __int16 v46; // [esp+30h] [ebp-7Ch] - char *v47; // [esp+30h] [ebp-7Ch] - int v48; // [esp+34h] [ebp-78h] - __int64 v51[2]; // [esp+68h] [ebp-44h] BYREF - char v52; // [esp+78h] [ebp-34h] BYREF - char v53; // [esp+79h] [ebp-33h] BYREF - - _FST7 = a2; - __asm { fxam } - if ( (v3 & 0x4500) == 256 ) - return __pformat_emit_inf_or_nan(0, (int)&off_55A9C7, a1); - if ( (SWORD4(a2) & 0x8000u) != 0 ) - *(_DWORD *)(a1 + 4) |= 0x80u; - __asm { fxam } - if ( (v5 & 0x4500) == 1280 ) - return __pformat_emit_inf_or_nan(WORD4(a2) & 0x8000, (int)&off_55A9CB, a1); - v9 = DWORD1(a2); - v10 = LODWORD(a2); - v46 = WORD4(a2) & 0x7FFF; - if ( (WORD4(a2) & 0x7FFF) != 0 ) - { - v46 -= 0x3FFF; - v43 = *(_DWORD *)(a1 + 12); - if ( v43 <= 0xE ) - goto LABEL_40; - v45 = *(_DWORD *)(a1 + 4); - if ( !*(_QWORD *)&a2 ) - goto LABEL_9; - goto LABEL_53; - } - if ( !*(_QWORD *)&a2 ) - { - v43 = *(_DWORD *)(a1 + 12); - if ( v43 > 0xE ) - { - v45 = *(_DWORD *)(a1 + 4); -LABEL_9: - if ( *(int *)(a1 + 12) > 0 || (v11 = &v52, (v45 & 0x800) != 0) ) - { - v52 = 46; - v11 = &v53; - } - *v11 = 48; - v12 = v11 + 1; - v48 = *(_DWORD *)(a1 + 8); - if ( v48 > 0 ) - goto LABEL_12; -LABEL_87: - v17 = 2; - v44 = v46; - if ( (v45 & 0x80u) == 0 ) - goto LABEL_21; - goto LABEL_88; - } - do - { - v9 = __PAIR64__(v9, v10) >> 31; - v10 *= 2; -LABEL_40: - ; - } - while ( v9 >= 0 ); - goto LABEL_41; - } - if ( (SDWORD1(a2) & 0x80000000) != 0 ) - { - v46 = -16382; - } - else - { - v38 = -16383; - do - { - v9 = __PAIR64__(v9, v10) >> 31; - v39 = v38; - v10 *= 2; - --v38; - } - while ( v9 >= 0 ); - v46 = v39; - } - v43 = *(_DWORD *)(a1 + 12); - if ( v43 <= 0xE ) - { -LABEL_41: - v22 = 4 * (14 - v43); - v23 = 4LL << (v22 & 0x1F); - if ( (v22 & 0x20) != 0 ) - HIDWORD(v23) = 4LL << (v22 & 0x1F); - if ( (v22 & 0x20) != 0 ) - LODWORD(v23) = 0; - v26 = v23 + (__PAIR64__(v9, v10) >> 1); - v24 = HIDWORD(v26); - v25 = v26; - if ( (v26 & 0x8000000000000000LL) != 0LL ) - { - ++v46; - } - else - { - v24 = v26 >> 31; - v25 = 2 * v26; - } - v27 = 4 * (15 - v43); - v28 = __PAIR64__(v24, v25) >> v27; - v29 = v24 >> v27; - v30 = v27 & 0x20; - if ( v30 ) - v28 = v29; - if ( v30 ) - v29 = 0; - v9 = v29; - v10 = v28; - } - v45 = *(_DWORD *)(a1 + 4); -LABEL_53: - v12 = &v52; - v31 = v46; - do - { - v34 = v10 & 0xF; - if ( v10 & 0xFFFFFFF0 | v9 ) - { - v10 = __PAIR64__(v9, v10) >> 4; - v9 = (unsigned int)v9 >> 4; - v35 = *(_DWORD *)(a1 + 12); - if ( v35 > 0 ) - *(_DWORD *)(a1 + 12) = v35 - 1; - } - else - { - if ( v12 > &v52 || (v45 & 0x800) != 0 || *(int *)(a1 + 12) > 0 ) - *v12++ = 46; - if ( v9 | v10 ^ 1 ) - { - v40 = (unsigned __int16)(v31 - 1); - v47 = v12; - v41 = v10 & 0xF; - do - { - v10 = __PAIR64__(v9, v10) >> 1; - v9 = (unsigned int)v9 >> 1; - v31 = v40--; - } - while ( v10 ^ 1 | v9 ); - v34 = v41; - v10 = 0; - v12 = v47; - v9 = 0; - } - else - { - v10 = 0; - v9 = 0; - } - } - if ( v34 ) - { - v32 = v34; - if ( v34 <= 9 ) -LABEL_56: - v33 = v32 + 48; - else - v33 = v45 & 0x20 | (v34 + 55); - *v12++ = v33; - continue; - } - v32 = 0; - if ( v12 > &v52 || *(int *)(a1 + 12) >= 0 ) - goto LABEL_56; - } - while ( v10 | v9 ); - v46 = v31; - if ( v12 == &v52 ) - goto LABEL_9; - v48 = *(_DWORD *)(a1 + 8); - if ( v48 <= 0 ) - goto LABEL_87; -LABEL_12: - v13 = *(_DWORD *)(a1 + 12); - v14 = v12 - &v52; - if ( v13 > 0 ) - v14 = v12 - &v52 + v13; - v44 = v46; - v15 = v14 - (((v45 & 0x1C0) == 0) - 6); - v16 = v46 / 10; - if ( v16 ) - { - do - { - ++v15; - v16 /= 10; - } - while ( v16 ); - v17 = (__int16)(v15 + 2 - (v14 - (((v45 & 0x1C0) == 0) - 6))); - } - else - { - v17 = 2; - } - if ( v48 <= v15 ) - { - *(_DWORD *)(a1 + 8) = -1; - } - else - { - v18 = v48 - v15; - if ( (v45 & 0x600) != 0 ) - { - *(_DWORD *)(a1 + 8) = v18; - } - else - { - *(_DWORD *)(a1 + 8) = v18 - 1; - if ( v18 > 0 ) - { - do - { - __pformat_putc(32, a1); - v42 = *(_DWORD *)(a1 + 8); - *(_DWORD *)(a1 + 8) = v42 - 1; - } - while ( v42 > 0 ); - v45 = *(_DWORD *)(a1 + 4); - } - } - } - if ( (v45 & 0x80u) != 0 ) - { -LABEL_88: - __pformat_putc(45, a1); - goto LABEL_24; - } -LABEL_21: - if ( (v45 & 0x100) != 0 ) - { - __pformat_putc(43, a1); - } - else if ( (v45 & 0x40) != 0 ) - { - __pformat_putc(32, a1); - } -LABEL_24: - __pformat_putc(48, a1); - __pformat_putc(*(_DWORD *)(a1 + 4) & 0x20 | 0x58, a1); - v19 = *(_DWORD *)(a1 + 8); - if ( v19 > 0 && (*(_BYTE *)(a1 + 5) & 2) != 0 ) - { - *(_DWORD *)(a1 + 8) = v19 - 1; - do - { - __pformat_putc(48, a1); - v20 = *(_DWORD *)(a1 + 8); - *(_DWORD *)(a1 + 8) = v20 - 1; - } - while ( v20 > 0 ); - } - if ( v12 > &v52 ) - { - do - { - v21 = *--v12; - if ( v21 == 46 ) - { - __pformat_emit_radix_point(a1); - } - else if ( v21 == 44 ) - { - LOWORD(v51[0]) = *(_WORD *)(a1 + 28); - if ( LOWORD(v51[0]) ) - __pformat_wputchars((int)v51, 1, a1); - } - else - { - __pformat_putc(v21, a1); - } - } - while ( v12 != &v52 ); - } - while ( 1 ) - { - v37 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(a1 + 12) = v37 - 1; - if ( v37 <= 0 ) - break; - __pformat_putc(48, a1); - } - __pformat_putc(*(_DWORD *)(a1 + 4) & 0x20 | 0x50, a1); - *(_DWORD *)(a1 + 8) += v17; - *(_DWORD *)(a1 + 4) |= 0x1C0u; - v51[0] = v44; - v51[1] = v44 >> 31; - return __pformat_int(v44, v44 >> 31, v44 >> 31, a1); -} -// 55A9C7: using guessed type void *off_55A9C7; -// 55A9CB: using guessed type void *off_55A9CB; - -//----- (00468520) -------------------------------------------------------- -int __cdecl __mingw_pformat(__int16 a1, FILE *a2, int a3, char *a4, int *a5) -{ - int v6; // eax - int result; // eax - char *v8; // ebp - char v9; // cl - int v10; // edx - char v11; // al - char *v12; // esi - unsigned int v13; // ecx - char *v14; // ebx - int v15; // ebp - int *v16; // eax - unsigned int v17; // edx - int v18; // eax - __int64 v19; // rax - mbstate_t v20; // rax - char *v21; // eax - int *v22; // esi - int *v23; // esi - int v24; // eax - long double v25; // fst7 - char *v26; // eax - long double v27; // fst7 - long double v28; // fst7 - int v29; // eax - int v30; // edx - long double v31; // fst7 - int v32; // eax - unsigned int v33; // eax - int v34; // eax - long double v35; // fst7 - long double v36; // fst7 - long double v37; // fst7 - long double v38; // fst7 - int v39; // eax - const wchar_t *v40; // edi - int v41; // eax - unsigned int v42; // eax - int v43; // edx - struct lconv *v44; // eax - signed int v45; // eax - unsigned int v46; // edi - __int64 v47; // [esp+0h] [ebp-ACh] - __int64 v48; // [esp+8h] [ebp-A4h] - int v49; // [esp+28h] [ebp-84h] - int v50; // [esp+2Ch] [ebp-80h] - size_t *v51; // [esp+30h] [ebp-7Ch] - char *v52; // [esp+34h] [ebp-78h] - int ErrorMessage; // [esp+38h] [ebp-74h] - wchar_t DstCh; // [esp+4Eh] [ebp-5Eh] BYREF - mbstate_t v55; // [esp+50h] [ebp-5Ch] BYREF - __int64 v56; // [esp+58h] [ebp-54h] - FILE *Stream; // [esp+64h] [ebp-48h] BYREF - int v58; // [esp+68h] [ebp-44h] - int v59; // [esp+6Ch] [ebp-40h] BYREF - size_t MaxCount[2]; // [esp+70h] [ebp-3Ch] BYREF - __int16 v61; // [esp+78h] [ebp-34h] - int v62; // [esp+7Ch] [ebp-30h] - wchar_t v63; // [esp+80h] [ebp-2Ch] - int v64; // [esp+84h] [ebp-28h] - int v65; // [esp+88h] [ebp-24h] - int v66; // [esp+8Ch] [ebp-20h] - - v6 = *_errno(); - v59 = -1; - MaxCount[0] = -1; - ErrorMessage = v6; - MaxCount[1] = -3; - Stream = a2; - v61 = 0; - v62 = 0; - v50 = a1 & 0x6000; - v58 = v50; - v63 = 0; - v65 = a3; - result = *a4; - v64 = 0; - v66 = -1; - if ( result ) - { - v8 = a4 + 1; - v9 = result; - while ( 1 ) - { - if ( result == 37 ) - { - MaxCount[0] = -1; - v59 = -1; - v58 = a1 & 0x6000; - v11 = *v8; - if ( !*v8 ) - return v64; - v49 = 0; - v12 = v8; - v13 = 0; - v51 = (size_t *)&v59; - v52 = v8; - while ( 2 ) - { - v14 = v12 + 1; - v15 = v11; - switch ( v11 ) - { - case ' ': - if ( v13 ) - goto LABEL_104; - v11 = v12[1]; - v58 |= 0x40u; - ++v12; - goto LABEL_16; - case '#': - if ( v13 ) - goto LABEL_104; - v11 = v12[1]; - v58 |= 0x800u; - ++v12; - goto LABEL_16; - case '%': - v8 = v12 + 1; - __pformat_putc(37, (int)&Stream); - break; - case '\'': - if ( v13 ) - goto LABEL_104; - v58 |= 0x1000u; - v55._Wchar = 0; - v44 = localeconv(); - v45 = mbrtowc(&DstCh, v44->thousands_sep, 0x10u, &v55); - v13 = 0; - if ( v45 > 0 ) - v63 = DstCh; - v62 = v45; - v11 = *++v12; - goto LABEL_16; - case '*': - if ( !v51 ) - goto LABEL_92; - if ( (v13 & 0xFFFFFFFD) != 0 ) - { - v11 = v12[1]; - v51 = 0; - ++v12; - v13 = 4; - } - else - { - v39 = *a5; - *v51 = *a5; - if ( v39 >= 0 ) - goto LABEL_100; - if ( v13 ) - { - MaxCount[0] = -1; -LABEL_100: - v11 = v12[1]; - v51 = 0; - ++a5; - ++v12; - goto LABEL_16; - } - v11 = v12[1]; - v59 = -v59; - ++a5; - ++v12; - v58 |= 0x400u; - v51 = 0; - } - goto LABEL_16; - case '+': - if ( v13 ) - goto LABEL_104; - v11 = v12[1]; - v58 |= 0x100u; - ++v12; - goto LABEL_16; - case '-': - if ( v13 ) - goto LABEL_104; - v11 = v12[1]; - v58 |= 0x400u; - ++v12; - goto LABEL_16; - case '.': - if ( v13 <= 1 ) - { - v11 = v12[1]; - MaxCount[0] = 0; - ++v12; - v51 = MaxCount; - v13 = 2; - } - else - { -LABEL_92: - v11 = v12[1]; - v13 = 4; - ++v12; - } - goto LABEL_16; - case '0': - if ( v13 ) - { - if ( v13 > 3 ) - goto LABEL_116; - v15 = 48; -LABEL_113: - if ( v13 == 2 ) - v13 = 3; -LABEL_23: - if ( v51 ) - { - if ( (*v51 & 0x80000000) == 0 ) - { - *v51 = v15 + 10 * *v51 - 48; - v11 = *++v12; - goto LABEL_16; - } - *v51 = v15 - 48; - } -LABEL_104: - v11 = *++v12; - } - else - { - v11 = v12[1]; - v58 |= 0x200u; - ++v12; - } - goto LABEL_16; - case 'A': - if ( (v58 & 4) == 0 ) - goto LABEL_90; - goto LABEL_48; - case 'C': - MaxCount[0] = -1; - v23 = a5 + 1; - goto LABEL_80; - case 'E': - if ( (v58 & 4) == 0 ) - goto LABEL_82; - goto LABEL_73; - case 'F': - if ( (v58 & 4) == 0 ) - goto LABEL_84; - goto LABEL_64; - case 'G': - if ( (v58 & 4) == 0 ) - goto LABEL_86; - goto LABEL_66; - case 'I': - v11 = v12[1]; - if ( v11 == 54 ) - { - if ( v12[2] != 52 ) - { -LABEL_116: - v8 = v52; - __pformat_putc(37, (int)&Stream); - break; - } - v11 = v12[3]; - v49 = 3; - v12 += 3; - v13 = 4; - } - else if ( v11 == 51 ) - { - if ( v12[2] != 50 ) - goto LABEL_116; - v11 = v12[3]; - v49 = 2; - v12 += 3; - v13 = 4; - } - else - { - v49 = 0; - ++v12; - v13 = 4; - } -LABEL_16: - if ( !v11 ) - return v64; - continue; - case 'L': - v11 = v12[1]; - v58 |= 4u; - ++v12; - v13 = 4; - goto LABEL_16; - case 'S': - v22 = a5 + 1; - goto LABEL_106; - case 'X': - case 'o': - case 'u': - case 'x': - if ( v49 == 3 ) - { - v42 = *a5; - v43 = a5[1]; - a5 += 2; - v55._Wchar = v42; - *(_DWORD *)&v55._Byte = v43; - } - else - { - v16 = a5 + 1; - if ( v49 == 2 ) - { - v46 = *a5; - *(_DWORD *)&v55._Byte = 0; - v55._Wchar = v46; - a5 = v16; - } - else - { - v17 = *a5; - if ( v49 == 1 ) - { - *(_DWORD *)&v55._Byte = 0; - ++a5; - v55._Wchar = (unsigned __int16)v17; - } - else - { - if ( v49 == 5 ) - v17 = (unsigned __int8)v17; - v55._Wchar = v17; - ++a5; - *(_DWORD *)&v55._Byte = 0; - } - } - } - v47 = (__int64)v55; - v48 = v56; - if ( v15 == 117 ) - goto LABEL_41; - v18 = v15; - v8 = v12 + 1; - __pformat_xint(v18, *(_QWORD *)&v55, v56, SHIDWORD(v56), (int)&Stream); - goto LABEL_9; - case 'a': - v58 |= 0x20u; - if ( (v58 & 4) != 0 ) - { -LABEL_48: - v25 = *(long double *)a5; - v8 = v12 + 1; - a5 += 3; - __pformat_xldouble((int)&Stream, v25); - } - else - { -LABEL_90: - v38 = *(double *)a5; - v8 = v12 + 1; - a5 += 2; - __pformat_xldouble((int)&Stream, v38); - } - goto LABEL_9; - case 'c': - MaxCount[0] = -1; - v23 = a5 + 1; - if ( (unsigned int)(v49 - 2) <= 1 ) - { -LABEL_80: - v34 = *a5; - a5 = v23; - v8 = v14; - LOWORD(v55._Wchar) = v34; - __pformat_wputchars((int)&v55, 1, (int)&Stream); - } - else - { - v24 = *a5++; - v8 = v14; - LOBYTE(v55._Wchar) = v24; - __pformat_putchars(&v55, 1, (int)&Stream); - } - goto LABEL_9; - case 'd': - case 'i': - v58 |= 0x80u; - if ( v49 == 3 ) - { - v20 = *(mbstate_t *)a5; - a5 += 2; - v55 = v20; - } - else - { - LODWORD(v19) = *a5; - if ( v49 == 2 ) - goto LABEL_39; - if ( v49 != 1 ) - { - if ( v49 == 5 ) - LODWORD(v19) = (char)v19; -LABEL_39: - v19 = (int)v19; - v55 = (mbstate_t)(int)v19; - ++a5; - goto LABEL_40; - } - ++a5; - v19 = (__int16)v19; - v55 = (mbstate_t)(__int16)v19; - } -LABEL_40: - v56 = *(int *)&v20._Byte >> 31; - v47 = (__int64)v55; - v48 = v56; -LABEL_41: - __pformat_int(v47, v48, SHIDWORD(v48), (int)&Stream); -LABEL_42: - v8 = v12 + 1; - break; - case 'e': - v58 |= 0x20u; - if ( (v58 & 4) != 0 ) - { -LABEL_73: - v31 = *(long double *)a5; - v8 = v12 + 1; - a5 += 3; - __pformat_efloat(&Stream, v31); - } - else - { -LABEL_82: - v35 = *(double *)a5; - v8 = v12 + 1; - a5 += 2; - __pformat_efloat(&Stream, v35); - } - goto LABEL_9; - case 'f': - v58 |= 0x20u; - if ( (v58 & 4) != 0 ) - { -LABEL_64: - v27 = *(long double *)a5; - v8 = v12 + 1; - a5 += 3; - __pformat_float((int)&Stream, v27); - } - else - { -LABEL_84: - v36 = *(double *)a5; - v8 = v12 + 1; - a5 += 2; - __pformat_float((int)&Stream, v36); - } - goto LABEL_9; - case 'g': - v58 |= 0x20u; - if ( (v58 & 4) != 0 ) - { -LABEL_66: - v28 = *(long double *)a5; - v8 = v12 + 1; - a5 += 3; - __pformat_gfloat(&Stream, v28); - } - else - { -LABEL_86: - v37 = *(double *)a5; - v8 = v12 + 1; - a5 += 2; - __pformat_gfloat(&Stream, v37); - } - goto LABEL_9; - case 'h': - v11 = v12[1]; - if ( v11 == 104 ) - { - v11 = v12[2]; - v49 = 5; - v12 += 2; - } - else - { - v49 = 1; - ++v12; - } - v13 = 4; - goto LABEL_16; - case 'j': - v11 = v12[1]; - v49 = 3; - ++v12; - v13 = 4; - goto LABEL_16; - case 'l': - v11 = v12[1]; - if ( v11 == 108 ) - { - v11 = v12[2]; - v49 = 3; - v12 += 2; - } - else - { - v49 = 2; - ++v12; - } - v13 = 4; - goto LABEL_16; - case 'm': - v8 = v12 + 1; - v26 = strerror(ErrorMessage); - __pformat_puts(v26, (int)&Stream); - goto LABEL_9; - case 'n': - v29 = *a5++; - v30 = v64; - switch ( v49 ) - { - case 5: - *(_BYTE *)v29 = v64; - v8 = v12 + 1; - break; - case 1: - *(_WORD *)v29 = v64; - v8 = v12 + 1; - break; - case 2: - *(_DWORD *)v29 = v64; - v8 = v12 + 1; - break; - default: - *(_DWORD *)v29 = v64; - if ( v49 != 3 ) - goto LABEL_42; - v8 = v12 + 1; - *(_DWORD *)(v29 + 4) = v30 >> 31; - break; - } - goto LABEL_9; - case 'p': - if ( !v13 ) - { - v32 = a1 & 0x6000; - if ( v58 == v50 ) - { - BYTE1(v32) = BYTE1(v50) | 2; - MaxCount[0] = 8; - v58 = v32; - } - } - v33 = *a5; - *(_DWORD *)&v55._Byte = 0; - v8 = v12 + 1; - ++a5; - v55._Wchar = v33; - v56 = 0LL; - __pformat_xint(120, v33, 0, 0, (int)&Stream); - goto LABEL_9; - case 's': - v21 = (char *)*a5; - v22 = a5 + 1; - if ( (unsigned int)(v49 - 2) <= 1 ) - { -LABEL_106: - v40 = (const wchar_t *)*a5; - if ( !v40 ) - v40 = &String; - if ( (MaxCount[0] & 0x80000000) != 0 ) - v41 = wcslen(v40); - else - v41 = wcsnlen(v40, MaxCount[0]); - v8 = v14; - __pformat_wputchars((int)v40, v41, (int)&Stream); - a5 = v22; - } - else - { - ++a5; - v8 = v14; - __pformat_puts(v21, (int)&Stream); - } - goto LABEL_9; - case 't': - case 'z': - v49 = 0; - v11 = v12[1]; - v13 = 4; - ++v12; - goto LABEL_16; - default: - if ( (unsigned __int8)(v11 - 48) > 9u || v13 > 3 ) - goto LABEL_116; - if ( v13 ) - goto LABEL_113; - v13 = 1; - goto LABEL_23; - } - break; - } - } - else - { - if ( (v58 & 0x4000) != 0 || (v10 = v64, v65 > v64) ) - { - if ( (v58 & 0x2000) != 0 ) - fputc(result, Stream); - else - *((_BYTE *)&Stream->_ptr + v64) = v9; - v10 = v64; - } - v64 = v10 + 1; - } -LABEL_9: - v9 = *v8++; - result = v9; - if ( !v9 ) - return v64; - } - } - return result; -} - -//----- (00468EC0) -------------------------------------------------------- -int *__cdecl __rv_alloc_D2A(int a1) -{ - int v1; // ebx - int v2; // eax - int *v3; // eax - - v1 = 0; - if ( a1 > 19 ) - { - v2 = 4; - do - { - v2 *= 2; - ++v1; - } - while ( v2 + 15 < a1 ); - } - v3 = __Balloc_D2A(v1); - *v3 = v1; - return v3 + 1; -} - -//----- (00468F00) -------------------------------------------------------- -int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, int a3) -{ - int v3; // eax - int v4; // edi - int *v5; // eax - char *v6; // edx - char v7; // cl - int *v8; // edi - _BYTE *v9; // eax - char v10; // cl - - if ( a3 <= 19 ) - { - v4 = 0; - } - else - { - v3 = 4; - v4 = 0; - do - { - v3 *= 2; - ++v4; - } - while ( a3 > v3 + 15 ); - } - v5 = __Balloc_D2A(v4); - v6 = a1 + 1; - *v5 = v4; - v7 = *a1; - v8 = v5 + 1; - *((_BYTE *)v5 + 4) = *a1; - v9 = v5 + 1; - if ( v7 ) - { - do - { - v10 = *v6; - ++v9; - ++v6; - *v9 = v10; - } - while ( v10 ); - } - if ( a2 ) - *a2 = v9; - return v8; -} - -//----- (00468F80) -------------------------------------------------------- -void __cdecl __freedtoa(_DWORD *a1) -{ - int v1; // ecx - - v1 = *(a1 - 1); - *a1 = v1; - a1[1] = 1 << v1; - __Bfree_D2A(a1 - 1); -} - -//----- (00468FA0) -------------------------------------------------------- -unsigned int __cdecl __quorem_D2A(int a1, int a2) -{ - int v2; // ebx - unsigned int result; // eax - int v4; // eax - unsigned int v5; // ebx - _DWORD *v6; // ecx - unsigned int v7; // esi - __int64 v8; // kr00_8 - bool v9; // cf - int v10; // eax - int v11; // ecx - _DWORD *v12; // esi - unsigned int v13; // ebp - __int64 v14; // rcx - int v15; // eax - _DWORD *v16; // edx - unsigned int v17; // eax - int v18; // edx - __int64 v19; // [esp+18h] [ebp-54h] - __int64 v20; // [esp+18h] [ebp-54h] - _DWORD *v21; // [esp+2Ch] [ebp-40h] - unsigned __int64 v22; // [esp+30h] [ebp-3Ch] - int v23; // [esp+38h] [ebp-34h] - unsigned int v24; // [esp+3Ch] [ebp-30h] - unsigned int v25; // [esp+40h] [ebp-2Ch] - int v26; // [esp+44h] [ebp-28h] - _DWORD *v27; // [esp+4Ch] [ebp-20h] - - v2 = *(_DWORD *)(a2 + 16); - result = 0; - v26 = v2; - if ( *(_DWORD *)(a1 + 16) >= v2 ) - { - v23 = v2 - 1; - v4 = 4 * (v2 - 1); - v21 = (_DWORD *)(a2 + 20 + v4); - v27 = (_DWORD *)(a1 + 20 + v4); - v25 = a1 + 20; - v24 = *v27 / (unsigned int)(*v21 + 1); - if ( *v27 >= (unsigned int)(*v21 + 1) ) - { - v22 = 0LL; - v5 = a2 + 20; - v6 = (_DWORD *)(a1 + 20); - v19 = 0LL; - do - { - v5 += 4; - v7 = *(_DWORD *)(v5 - 4) * v24 + v22; - v22 = (*(unsigned int *)(v5 - 4) * (unsigned __int64)v24 + v22) >> 32; - v8 = v19 + v7; - v9 = *v6 < (unsigned int)v8; - v10 = *v6++ - v8; - *(v6 - 1) = v10; - v19 = -(char)(v9 + BYTE4(v8)) & 1; - } - while ( (unsigned int)v21 >= v5 ); - if ( !*v27 ) - { - if ( v25 < (unsigned int)(v27 - 1) ) - { - v11 = v23; - do - { - if ( v27[v11 - v26] ) - break; - --v11; - } - while ( v26 - 2 - (((unsigned int)v27 - a1 - 25) >> 2) != v11 ); - v23 = v11; - } - *(_DWORD *)(a1 + 16) = v23; - } - } - if ( __cmp_D2A(a1, a2) >= 0 ) - { - v12 = (_DWORD *)(a1 + 20); - ++v24; - v20 = 0LL; - v13 = a2 + 20; - do - { - v13 += 4; - v14 = v20 + *(unsigned int *)(v13 - 4); - v9 = *v12 < (unsigned int)v14; - v15 = *v12++ - v14; - *(v12 - 1) = v15; - v20 = -(char)(v9 + BYTE4(v14)) & 1; - } - while ( (unsigned int)v21 >= v13 ); - v16 = (_DWORD *)(v25 + 4 * v23); - if ( !*v16 ) - { - if ( v25 < (unsigned int)(v16 - 1) ) - { - v17 = v23 - 1 - (((unsigned int)v16 - a1 - 25) >> 2); - v18 = v23; - do - { - if ( *(_DWORD *)(v25 + 4 * v18 - 4) ) - break; - --v18; - } - while ( v18 != v17 ); - v23 = v18; - } - *(_DWORD *)(a1 + 16) = v23; - } - } - return v24; - } - return result; -} - -//----- (004691C0) -------------------------------------------------------- -int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8) -{ - int v8; // esi - int v9; // eax - int v11; // edi - int v12; // edx - int i; // eax - int *v14; // ebp - int *v15; // eax - int *v16; // edx - int *v17; // ecx - int v18; // ebx - int v19; // ebx - int v20; // ebx - int v21; // eax - unsigned int v22; // edx - int v23; // eax - double v24; // rax - int v25; // ecx - int v26; // eax - signed int v27; // edx - long double v28; // fst7 - int v29; // eax - int v30; // eax - int v31; // eax - long double v32; // fst7 - double v33; // rax - int v34; // esi - long double v35; // fst6 - long double v36; // fst5 - int *v37; // eax - long double v38; // fst6 - long double v39; // fst7 - long double v40; // fst6 - char v41; // dl - long double v42; // rt0 - long double v43; // fst5 - char v44; // dl - int *v45; // ebx - int *n; // ecx - int v47; // edi - int v48; // ecx - int v49; // eax - int v50; // edi - int *v51; // esi - int v52; // eax - int v53; // eax - bool v54; // bl - int v55; // edi - char v56; // bl - int v57; // ebx - int v58; // eax - int v59; // eax - bool v60; // dl - double v61; // rax - long double v62; // fst6 - long double v63; // fst7 - unsigned int v64; // ebx - int v65; // ebx - int *v66; // ebx - int v67; // eax - int *v68; // edi - unsigned int v69; // eax - int v70; // edi - int *v71; // edx - int v72; // ecx - int *v73; // ecx - int v74; // eax - int v75; // eax - int *v76; // eax - unsigned int v77; // eax - int v78; // edx - char v79; // al - int *v80; // ebx - int *v81; // edx - int v82; // ecx - long double v83; // fst5 - bool v84; // zf - long double m; // fst6 - long double v86; // fst6 - long double v87; // fst5 - int v88; // edx - int v89; // eax - bool v90; // zf - bool v91; // cc - long double v92; // fst6 - bool v93; // di - long double v94; // fst5 - int v95; // edx - bool v96; // cl - int *v97; // edx - int *v98; // edi - int *k; // esi - int *v100; // eax - int v101; // eax - int *v102; // ecx - double v103; // rax - int *v104; // ebx - char v105; // dl - int v106; // edi - int v107; // eax - long double v108; // fst6 - int v109; // edx - int v110; // [esp+18h] [ebp-A4h] - int *v111; // [esp+18h] [ebp-A4h] - int v112; // [esp+18h] [ebp-A4h] - int *v113; // [esp+18h] [ebp-A4h] - int *v114; // [esp+18h] [ebp-A4h] - unsigned int v115; // [esp+28h] [ebp-94h] - bool v116; // [esp+28h] [ebp-94h] - int v117; // [esp+2Ch] [ebp-90h] - int *j; // [esp+30h] [ebp-8Ch] - int v119; // [esp+34h] [ebp-88h] - int v120; // [esp+34h] [ebp-88h] - int v121; // [esp+34h] [ebp-88h] - int v122; // [esp+38h] [ebp-84h] - double v123; // [esp+38h] [ebp-84h] - int *v124; // [esp+38h] [ebp-84h] - int *v125; // [esp+38h] [ebp-84h] - int v126; // [esp+40h] [ebp-7Ch] - int v127; // [esp+4Ch] [ebp-70h] - char v128; // [esp+4Ch] [ebp-70h] - int v129; // [esp+50h] [ebp-6Ch] - int v130; // [esp+50h] [ebp-6Ch] - double v131; // [esp+50h] [ebp-6Ch] - int v132; // [esp+58h] [ebp-64h] - int v133; // [esp+58h] [ebp-64h] - int *v134; // [esp+5Ch] [ebp-60h] - int v135; // [esp+60h] [ebp-5Ch] - int v136; // [esp+60h] [ebp-5Ch] - int *v137; // [esp+60h] [ebp-5Ch] - int v138; // [esp+64h] [ebp-58h] - int v139; // [esp+68h] [ebp-54h] - int v140; // [esp+6Ch] [ebp-50h] - int v141; // [esp+70h] [ebp-4Ch] - int v142; // [esp+74h] [ebp-48h] - bool v143; // [esp+78h] [ebp-44h] - bool v144; // [esp+78h] [ebp-44h] - int v145; // [esp+7Ch] [ebp-40h] - int v146; // [esp+80h] [ebp-3Ch] - int v147; // [esp+88h] [ebp-34h] - int v148[8]; // [esp+9Ch] [ebp-20h] BYREF - - v110 = a5; - v119 = a6; - v8 = *a4; - *a4 &= 0xFFFFFFCF; - v9 = v8 & 7; - if ( v9 == 3 ) - { - *a7 = -32768; - return __nrv_alloc_D2A("Infinity", a8, 8); - } - v117 = v8 & 4; - if ( (v8 & 4) == 0 ) - { - if ( (v8 & 7) != 0 ) - { - if ( (unsigned int)(v9 - 1) > 1 ) - return 0; - v11 = *a1; - v12 = 0; - for ( i = 32; v11 > i; ++v12 ) - i *= 2; - v122 = (v11 - 1) >> 5; - v14 = __Balloc_D2A(v12); - v15 = a3; - v16 = v14 + 5; - v17 = &a3[v122]; - do - { - v18 = *v15++; - *v16++ = v18; - } - while ( v17 >= v15 ); - v19 = v122 * 4 + 4; - if ( (char *)v17 + 1 < (char *)a3 + 1 ) - v19 = 4; - v20 = v19 >> 2; - do - { - v21 = v20--; - if ( v14[v20 + 5] ) - { - _BitScanReverse(&v22, v14[v20 + 5]); - v14[4] = v21; - v20 = 32 * v21 - (v22 ^ 0x1F); - goto LABEL_18; - } - } - while ( v20 ); - v14[4] = 0; -LABEL_18: - v23 = __trailz_D2A((int)v14); - v148[0] = v23; - v135 = a2; - if ( v23 ) - { - __rshift_D2A((int)v14, v23); - v135 = v148[0] + a2; - v20 -= v148[0]; - } - if ( v14[4] ) - { - v24 = __b2d_D2A((int)v14, v148); - LODWORD(v123) = LODWORD(v24); - v25 = v20 + v135 - 1; - v26 = HIDWORD(v24) & 0xFFFFF | 0x3FF00000; - HIDWORD(v123) = v26; - v27 = abs32(v25) - 1077; - v28 = (v123 - 1.5) * 0.289529654602168 + 0.1760912590558 + (long double)v25 * 0.301029995663981; - if ( v27 > 0 ) - v28 = v28 + (long double)v27 * 7.0e-17; - v127 = (int)v28; - if ( v28 < 0.0 && (long double)v127 != v28 ) - --v127; - HIDWORD(v123) = (v25 << 20) + v26; - v132 = -v135; - if ( (unsigned int)v127 > 0x16 ) - { - v142 = 1; - } - else - { - if ( __tens_D2A[v127] <= (long double)v123 ) - { - v142 = 0; - v138 = 0; - if ( v135 <= 0 ) - goto LABEL_69; -LABEL_110: - v132 = 0; - v138 = v135; -LABEL_33: - if ( v127 < 0 ) - { - v29 = v127; - v138 -= v127; - v127 = 0; - v140 = v29; - v141 = -v29; - goto LABEL_35; - } -LABEL_69: - v141 = 0; - v132 += v127; - v140 = v127; -LABEL_35: - if ( (unsigned int)a5 > 9 ) - { - v110 = 0; - } - else - { - if ( a5 > 5 ) - { - v143 = 0; - v110 = a5 - 4; - } - else - { - v143 = (unsigned int)(v20 + v135 + 1021) <= 0x7F7; - } - switch ( v110 ) - { - case 4: - v139 = 1; - goto LABEL_42; - case 5: - v139 = 1; -LABEL_128: - v145 = v140 + a6; - v30 = v140 + a6 + 1; - v126 = v30; - if ( v30 <= 0 ) - { - v148[0] = 1; - v30 = 1; - } - else - { - v148[0] = v140 + a6 + 1; - } - goto LABEL_45; - case 2: - v139 = 0; -LABEL_42: - v30 = 1; - if ( a6 > 0 ) - v30 = a6; - v148[0] = v30; - v145 = v30; - v126 = v30; - v119 = v30; -LABEL_45: - v134 = __rv_alloc_D2A(v30); - v129 = a1[3]; - v84 = v129 == 1; - v130 = v129 - 1; - v144 = v143 && (unsigned int)v126 <= 0xE; - if ( v84 ) - goto LABEL_50; - goto LABEL_46; - case 3: - v139 = 0; - goto LABEL_128; - } - } - v148[0] = (int)((long double)v11 * 0.30103) + 3; - v134 = __rv_alloc_D2A(v148[0]); - v121 = a1[3]; - v130 = v121 - 1; - if ( v121 == 1 ) - { - if ( v135 < 0 ) - { - v106 = v11 - v20; - v119 = 0; - v48 = v106 + 1; - v126 = -1; - v49 = a1[1]; - v148[0] = v106 + 1; - v145 = -1; - if ( v49 <= v135 - v106 ) - goto LABEL_79; - goto LABEL_76; - } - if ( a1[5] >= v140 ) - { - v126 = -1; - v63 = __tens_D2A[v140]; - goto LABEL_198; - } - v119 = 0; - v145 = -1; - v126 = -1; -LABEL_75: - v47 = v11 - v20; - v48 = v47 + 1; - v49 = a1[1]; - v148[0] = v47 + 1; - if ( v135 - v47 >= v49 ) - { -LABEL_168: - if ( v110 > 1 ) - goto LABEL_169; -LABEL_79: - v132 += v48; - v50 = v141; - v136 = v138; - v138 += v48; -LABEL_80: - v139 = 1; - v51 = __i2b_D2A(1); -LABEL_81: - if ( v136 > 0 && v132 > 0 ) - { - v52 = v132; - if ( v136 <= v132 ) - v52 = v136; - v138 -= v52; - v148[0] = v52; - v136 -= v52; - v132 -= v52; - } - if ( v141 ) - { - if ( v139 ) - { - if ( v50 > 0 ) - { - v51 = __pow5mult_D2A(v51, v50); - v124 = __mult_D2A((int)v51, (int)v14); - __Bfree_D2A(v14); - v14 = v124; - } - v53 = v141 - v50; - if ( v141 == v50 ) - goto LABEL_91; - } - else - { - v53 = v141; - } - v14 = __pow5mult_D2A(v14, v53); - } -LABEL_91: - v125 = __i2b_D2A(1); - v54 = v110 <= 1 && v20 == 1; - if ( v127 > 0 ) - { - v125 = __pow5mult_D2A(v125, v127); - if ( !v54 || a2 <= a1[1] + 1 ) - { - v55 = 0; -LABEL_136: - _BitScanReverse(&v64, v125[v125[4] + 4]); - v56 = v64 ^ 0x1F; -LABEL_94: - v57 = (v56 - (_BYTE)v132 - 4) & 0x1F; - v148[0] = v57; - v58 = v57; - if ( v57 + v138 > 0 ) - { - v14 = __lshift_D2A(v14, v57 + v138); - v58 = v148[0]; - } - v59 = v132 + v58; - if ( v59 > 0 ) - v125 = __lshift_D2A(v125, v59); - v60 = v110 > 2; - if ( v142 && (v116 = v110 > 2, v75 = __cmp_D2A((int)v14, (int)v125), v60 = v110 > 2, v75 < 0) ) - { - v14 = __multadd_D2A(v14, 10, 0); - if ( !v139 ) - { - if ( v145 > 0 || !v116 ) - { - v120 = v140; - v126 = v145; -LABEL_177: - v68 = v134; - v148[0] = 1; - while ( 1 ) - { - v68 = (int *)((char *)v68 + 1); - v77 = __quorem_D2A((int)v14, (int)v125) + 48; - *((_BYTE *)v68 - 1) = v77; - if ( v148[0] >= v126 ) - break; - v76 = __multadd_D2A(v14, 10, 0); - ++v148[0]; - v14 = v76; - } - LOBYTE(v115) = v77; - v73 = 0; -LABEL_181: - if ( v130 ) - { - v78 = v14[4]; - v79 = *((_BYTE *)v68 - 1); - if ( v130 != 2 ) - { - if ( v78 > 1 || v14[5] ) - { -LABEL_185: - v80 = v134; - goto LABEL_188; - } -LABEL_191: - while ( v79 == 48 ) - { - v79 = *((_BYTE *)v68 - 2); - v68 = (int *)((char *)v68 - 1); - } - goto LABEL_160; - } - } - else - { - v113 = v73; - v14 = __lshift_D2A(v14, 1); - v89 = __cmp_D2A((int)v14, (int)v125); - v73 = v113; - v90 = v89 == 0; - v91 = v89 <= 0; - v79 = *((_BYTE *)v68 - 1); - if ( !v91 || v90 && (v115 & 1) != 0 ) - goto LABEL_185; - v78 = v14[4]; - } - if ( v78 <= 1 ) - { - v109 = 16; - if ( !v14[5] ) - v109 = v117; - v117 = v109; - } - else - { - v117 = 16; - } - goto LABEL_191; - } - goto LABEL_263; - } - v51 = __multadd_D2A(v51, 10, 0); - if ( v145 <= 0 && v116 ) - { -LABEL_263: - --v140; - v126 = v145; - goto LABEL_101; - } - v120 = v140; - v126 = v145; - } - else - { - if ( v126 <= 0 && v60 ) - { -LABEL_101: - if ( !v126 ) - { - v125 = __multadd_D2A(v125, 5, 0); - if ( __cmp_D2A((int)v14, (int)v125) > 0 ) - { - v45 = v134; - v120 = v140 + 2; -LABEL_104: - v134 = (int *)((char *)v134 + 1); - *(_BYTE *)v45 = 49; - v117 = 32; - goto LABEL_105; - } - } -LABEL_133: - v45 = v134; - v117 = 16; - v120 = -v119; -LABEL_105: - __Bfree_D2A(v125); - if ( !v51 ) - { -LABEL_107: - __Bfree_D2A(v14); - *(_BYTE *)v134 = 0; - *a7 = v120; - if ( a8 ) - *a8 = v134; - *a4 |= v117; - return v45; - } -LABEL_106: - __Bfree_D2A(v51); - goto LABEL_107; - } - v120 = v140 + 1; - if ( !v139 ) - goto LABEL_177; - } - v65 = v136 + v57; - if ( v65 > 0 ) - v51 = __lshift_D2A(v51, v65); - v66 = v51; - if ( v55 ) - { - v104 = __Balloc_D2A(v51[1]); - memcpy(v104 + 3, v51 + 3, 4 * v51[4] + 8); - v66 = __lshift_D2A(v104, 1); - } - v148[0] = 1; - for ( j = v134; ; j = (int *)((char *)j + 1) ) - { - v69 = __quorem_D2A((int)v14, (int)v125); - v115 = v69 + 48; - v128 = v69; - v70 = __cmp_D2A((int)v14, (int)v51); - v71 = __diff_D2A((int)v125, (int)v66); - if ( v71[3] ) - { - __Bfree_D2A(v71); - v67 = 1; - } - else - { - v137 = v71; - v133 = __cmp_D2A((int)v14, (int)v71); - __Bfree_D2A(v137); - v67 = v133 | v110; - if ( v133 | v110 ) - { - v67 = v133; - } - else if ( !(v130 | *a3 & 1) ) - { - v72 = v70; - v68 = (int *)((char *)j + 1); - if ( v115 == 57 ) - goto LABEL_262; - if ( v72 <= 0 ) - { - if ( v14[4] <= 1 ) - { - if ( v14[5] ) - v67 = 16; - } - else - { - v67 = 16; - } - } - else - { - LOBYTE(v115) = v128 + 49; - v67 = 32; - } - v117 = v67; - *(_BYTE *)j = v115; - v73 = v51; - v51 = v66; - goto LABEL_160; - } - } - if ( v70 < 0 || !(v110 | v70) && (*(_BYTE *)a3 & 1) == 0 ) - break; - v68 = (int *)((char *)j + 1); - if ( v67 > 0 && v130 != 2 ) - { - if ( v115 == 57 ) - goto LABEL_262; - v73 = v51; - v117 = 32; - v51 = v66; - *(_BYTE *)j = v115 + 1; - goto LABEL_160; - } - *(_BYTE *)j = v115; - if ( v148[0] == v126 ) - { - v73 = v51; - v51 = v66; - goto LABEL_181; - } - v14 = __multadd_D2A(v14, 10, 0); - if ( v51 == v66 ) - { - v51 = __multadd_D2A(v51, 10, 0); - v66 = v51; - } - else - { - v51 = __multadd_D2A(v51, 10, 0); - v66 = __multadd_D2A(v66, 10, 0); - } - ++v148[0]; - } - v68 = (int *)((char *)j + 1); - if ( v130 ) - { - if ( v14[4] <= 1 && !v14[5] ) - { - if ( v67 <= 0 ) - { - v73 = v51; - v51 = v66; - goto LABEL_240; - } -LABEL_257: - v14 = __lshift_D2A(v14, 1); - v107 = __cmp_D2A((int)v14, (int)v125); - if ( v107 <= 0 && (v107 || (v115 & 1) == 0) ) - { - v130 = 32; - goto LABEL_260; - } - if ( v115 != 57 ) - { - v130 = 32; - LOBYTE(v115) = v128 + 49; - goto LABEL_260; - } -LABEL_262: - v73 = v51; - v51 = v66; - v80 = v134; - *(_BYTE *)j = 57; - v79 = 57; - while ( 1 ) - { -LABEL_188: - v81 = (int *)((char *)v68 - 1); - if ( v79 != 57 ) - { - v117 = 32; - *(_BYTE *)v81 = v79 + 1; - goto LABEL_160; - } - if ( v81 == v80 ) - break; - v79 = *((_BYTE *)v68 - 2); - v68 = (int *)((char *)v68 - 1); - } - ++v120; - v117 = 32; - *(_BYTE *)v134 = 49; -LABEL_160: - v111 = v73; - __Bfree_D2A(v125); - if ( !v51 ) - { - v45 = v134; - v134 = v68; - goto LABEL_107; - } - if ( !v111 || v111 == v51 ) - { - v45 = v134; - v134 = v68; - } - else - { - __Bfree_D2A(v111); - v45 = v134; - v134 = v68; - } - goto LABEL_106; - } - if ( v130 != 2 ) - { - v98 = v51; - for ( k = (int *)((char *)j + 1); ; k = (int *)((char *)k + 1) ) - { - v101 = __cmp_D2A((int)v125, (int)v66); - v102 = k; - if ( v101 <= 0 ) - break; - *((_BYTE *)k - 1) = v115; - v100 = __multadd_D2A(v66, 10, 0); - if ( v98 == v66 ) - v98 = v100; - v114 = v100; - v14 = __multadd_D2A(v14, 10, 0); - j = k; - v115 = __quorem_D2A((int)v14, (int)v125) + 48; - v66 = v114; - } - v51 = v98; - v68 = v102; - if ( v115 != 57 ) - { - v117 = 32; - v73 = v51; - v51 = v66; - LOBYTE(v115) = v115 + 1; - goto LABEL_240; - } - goto LABEL_262; - } - } - else - { - if ( v67 > 0 ) - goto LABEL_257; -LABEL_260: - if ( v14[4] <= 1 ) - { - v73 = v51; - v51 = v66; - if ( v14[5] ) - v117 = 16; - else - v117 = v130; -LABEL_240: - *(_BYTE *)j = v115; - goto LABEL_160; - } - } - v73 = v51; - v117 = 16; - v51 = v66; - goto LABEL_240; - } - } - else - { - v55 = 0; - if ( !v54 || a1[1] + 1 >= a2 ) - { -LABEL_93: - v56 = 31; - if ( !v127 ) - goto LABEL_94; - goto LABEL_136; - } - } - ++v138; - v55 = 1; - ++v132; - goto LABEL_93; - } -LABEL_76: - if ( ((v110 - 3) & 0xFFFFFFFD) != 0 ) - { - v48 = v135 - v49 + 1; - v148[0] = v48; - if ( v126 <= 0 || v110 <= 1 || v48 <= v126 ) - goto LABEL_79; -LABEL_169: - v74 = v126 - 1; - if ( v141 < v126 - 1 ) - { - v50 = 0; - v88 = v74 - v141; - v141 = v126 - 1; - v127 += v88; - } - else - { - v50 = v141 - v74; - } - if ( v126 < 0 ) - { - v148[0] = 0; - v136 = v138 - v126; - } - else - { - v132 += v126; - v148[0] = v126; - v136 = v138; - v138 += v126; - } - goto LABEL_80; - } - goto LABEL_168; - } - v119 = 0; - v144 = 0; - v139 = 1; - v145 = -1; - v126 = -1; -LABEL_46: - v31 = 2; - if ( v130 >= 0 ) - v31 = v130; - v130 = v31; - if ( (v8 & 8) == 0 ) - goto LABEL_119; - v130 = 3 - v31; -LABEL_50: - if ( v144 && !(v140 | v130) ) - { - v32 = v123; - v148[0] = 0; - if ( v142 && v32 < 1.0 ) - { - if ( v126 ) - { - v34 = v145; - if ( v145 <= 0 ) - { -LABEL_118: - v130 = 0; - goto LABEL_119; - } - v32 = v32 * 10.0; - v146 = -1; - v103 = v32 * 3.0 + 7.0; - LODWORD(v131) = LODWORD(v103); - HIDWORD(v131) = HIDWORD(v103) - 54525952; -LABEL_56: - v35 = v131; - v36 = dbl_55ABF8[v34]; - if ( v139 ) - { - v37 = (int *)((char *)v134 + 1); - *(_BYTE *)v134 = (int)v32 + 48; - v38 = 0.5 / v36 - v35; - v39 = v32 - (long double)(int)v32; - if ( v38 > v39 ) - { -LABEL_265: - v45 = v134; - v134 = v37; - v120 = v146 + 1; - if ( 0.0 == v39 ) - { - v117 = 0; - goto LABEL_107; - } - goto LABEL_215; - } - while ( 1 ) - { - v43 = v38; - if ( v38 > 1.0 - v39 ) - break; - if ( ++v148[0] >= v34 ) - goto LABEL_118; - v37 = (int *)((char *)v37 + 1); - v40 = v39 * 10.0; - v41 = (int)v40; - v42 = v40 - (long double)(int)v40; - v38 = v43 * 10.0; - v39 = v42; - *((_BYTE *)v37 - 1) = v41 + 48; - if ( v38 > v42 ) - goto LABEL_265; - } - v44 = *((_BYTE *)v37 - 1); -LABEL_63: - v45 = v134; - n = v37; - v120 = v146 + 1; - goto LABEL_64; - } - v92 = v35 * v36; - v37 = v134; - v147 = v11; - v93 = 0; - v148[0] = 1; - v94 = v32; - while ( 1 ) - { - v95 = (int)v94; - if ( (int)v94 ) - { - v93 = v144; - v94 = v94 - (long double)(int)v94; - } - v37 = (int *)((char *)v37 + 1); - v44 = v95 + 48; - *((_BYTE *)v37 - 1) = v44; - if ( v148[0] == v34 ) - break; - v94 = v94 * 10.0; - v93 = v144; - ++v148[0]; - } - v96 = v93; - v11 = v147; - if ( !v96 ) - v94 = v32; - if ( v94 > v92 + 0.5 ) - goto LABEL_63; - if ( 0.5 - v92 > v94 ) - { - v45 = v134; - if ( 0.0 == v94 ) - v117 = 0; - else - v117 = 16; - v82 = v146 + 1; - goto LABEL_228; - } - goto LABEL_118; - } - v61 = v32 + v32 + 7.0; - LODWORD(v131) = LODWORD(v61); - HIDWORD(v131) = HIDWORD(v61) - 54525952; - } - else - { - v33 = v32 + v32 + 7.0; - LODWORD(v131) = LODWORD(v33); - HIDWORD(v131) = HIDWORD(v33) - 54525952; - if ( v126 ) - { - v146 = 0; - v34 = v126; - goto LABEL_56; - } - } - v62 = v32 - 5.0; - if ( v62 > v131 ) - { - v120 = 2; - v45 = v134; - v51 = 0; - v125 = 0; - goto LABEL_104; - } - if ( -v131 > v62 ) - { -LABEL_132: - v125 = 0; - v51 = 0; - goto LABEL_133; - } - goto LABEL_118; - } -LABEL_119: - if ( v135 >= 0 && a1[5] >= v140 ) - { - v63 = __tens_D2A[v140]; - if ( v119 < 0 ) - { - v51 = (int *)v126; - if ( v126 <= 0 ) - { - if ( !v126 && v63 * 5.0 < v123 ) - { - v125 = 0; - v45 = v134; - v120 = v140 + 2; - goto LABEL_104; - } - goto LABEL_132; - } - } -LABEL_198: - v148[0] = 1; - v82 = v140 + 1; - v120 = v140 + 1; - v37 = (int *)((char *)v134 + 1); - v112 = (int)(v123 / v63); - *(_BYTE *)v134 = v112 + 48; - v83 = v123 - (long double)v112 * v63; - v84 = v83 == 0.0; - for ( m = v83; ; m = v87 ) - { - if ( v84 ) - { - v45 = v134; - v134 = v37; - goto LABEL_107; - } - if ( v148[0] == v126 ) - break; - v86 = m * 10.0; - v37 = (int *)((char *)v37 + 1); - ++v148[0]; - v112 = (int)(v86 / v63); - *((_BYTE *)v37 - 1) = v112 + 48; - v87 = v86 - (long double)v112 * v63; - v84 = v87 == 0.0; - } - if ( v130 ) - { - if ( v130 == 1 ) - { - v44 = *((_BYTE *)v37 - 1); - v45 = v134; - n = v37; - goto LABEL_64; - } - v45 = v134; - v134 = v37; -LABEL_215: - v117 = 16; - goto LABEL_107; - } - v108 = m + m; - v44 = *((_BYTE *)v37 - 1); - if ( v108 > v63 ) - { - v45 = v134; - for ( n = v37; ; n = v37 ) - { -LABEL_64: - v37 = (int *)((char *)n - 1); - if ( v44 != 57 ) - { - v134 = n; - v105 = v44 + 1; - goto LABEL_252; - } - if ( v37 == v45 ) - break; - v44 = *((_BYTE *)n - 2); -LABEL_67: - ; - } - ++v120; - v105 = 49; - v134 = n; - *(_BYTE *)v45 = 48; -LABEL_252: - *(_BYTE *)v37 = v105; - v117 = 32; - goto LABEL_107; - } - v45 = v134; - if ( v108 == v63 && (v112 & 1) != 0 ) - goto LABEL_67; - v117 = 16; - do - { -LABEL_228: - v97 = v37; - v37 = (int *)((char *)v37 - 1); - } - while ( *((_BYTE *)v97 - 1) == 48 ); - v134 = v97; - v120 = v82; - goto LABEL_107; - } - if ( !v139 ) - { - v50 = v141; - v51 = 0; - v136 = v138; - goto LABEL_81; - } - goto LABEL_75; - } - v142 = 0; - --v127; - } - v138 = 0; - if ( v135 <= 0 ) - goto LABEL_33; - goto LABEL_110; - } - __Bfree_D2A(v14); - } - *a7 = 1; - return __nrv_alloc_D2A("0", a8, 1); - } - if ( v9 != 4 ) - return 0; - *a7 = -32768; - return __nrv_alloc_D2A((char *)&off_55AB59, a8, 3); -} -// 55AB59: using guessed type void *off_55AB59; -// 55ABF8: using guessed type double dbl_55ABF8[]; -// 55AC00: using guessed type double __tens_D2A[24]; -// 4691C0: using guessed type int var_20[8]; - -//----- (0046A910) -------------------------------------------------------- -int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5) -{ - char *decimal_point; // edi - unsigned __int8 *v6; // ebx - unsigned __int8 v7; // cl - unsigned __int8 *v8; // eax - int v9; // edx - int v10; // ebp - unsigned __int8 *v11; // ebx - char v12; // al - int v13; // edx - unsigned __int8 v14; // bp - unsigned __int8 *v15; // esi - unsigned __int8 *v16; // eax - int v17; // esi - int v18; // eax - int v19; // ebx - int v20; // ebp - int v21; // esi - int v22; // edx - int j; // eax - int *v24; // edi - int v25; // ebx - int v26; // ecx - unsigned __int8 v27; // dl - unsigned __int8 v28; // dl - int v29; // ecx - bool v30; // zf - int v31; // eax - int v32; // edx - int i; // eax - int v34; // eax - int v35; // edx - unsigned __int8 *v36; // ecx - unsigned int *v37; // edi - char v38; // cl - int v39; // eax - int v40; // eax - unsigned int v41; // ebp - int *v42; // ebx - unsigned int v43; // eax - int *v44; // edx - int v45; // eax - int v46; // edx - int v47; // edx - int v48; // edi - int v49; // edx - int v50; // edx - int v51; // ecx - int v52; // ecx - unsigned int v53; // esi - unsigned int v54; // eax - unsigned int v55; // eax - int v56; // ebx - signed int v57; // ebx - int v58; // edi - int v59; // esi - int v60; // eax - int v61; // ebx - int v62; // eax - int v64; // ebx - int v65; // edx - char v66; // dl - int v67; // eax - int v68; // ecx - int v69; // ebx - int v70; // ecx - int v71; // esi - unsigned int v72; // eax - int v73; // edi - unsigned __int8 *v74; // ecx - int v75; // eax - int v76; // eax - int Val; // [esp+4h] [ebp-48h] - int v78; // [esp+14h] [ebp-38h] - unsigned int v79; // [esp+14h] [ebp-38h] - int v80; // [esp+18h] [ebp-34h] - BOOL v81; // [esp+18h] [ebp-34h] - unsigned int v82; // [esp+18h] [ebp-34h] - unsigned __int8 *v83; // [esp+1Ch] [ebp-30h] - char *v84; // [esp+1Ch] [ebp-30h] - int v85; // [esp+20h] [ebp-2Ch] - int *v86; // [esp+24h] [ebp-28h] - _BYTE *v87; // [esp+24h] [ebp-28h] - char *v88; // [esp+24h] [ebp-28h] - _DWORD *v89; // [esp+28h] [ebp-24h] - int v90; // [esp+28h] [ebp-24h] - int v91; // [esp+2Ch] [ebp-20h] - - decimal_point = localeconv()->decimal_point; - if ( !byte_769690 ) - __mingw_hexdig_init_D2A(); - *a4 = 0; - v6 = *a1; - v7 = (*a1)[2]; - if ( v7 == 48 ) - { - v8 = v6 + 3; - v9 = -2 - (_DWORD)v6; - do - { - v10 = (int)&v8[v9]; - v11 = v8; - v7 = *v8++; - } - while ( v7 == 48 ); - } - else - { - v11 = v6 + 2; - v10 = 0; - } - if ( __hexdig_D2A[v7] ) - { - v79 = (unsigned int)v11; - ++v10; - v16 = 0; - v81 = 0; - goto LABEL_31; - } - v12 = *decimal_point; - v13 = 0; - if ( *decimal_point ) - { - v80 = v10; - v14 = v7; - do - { - if ( v12 != v7 ) - { - v7 = v14; - v10 = v80; - goto LABEL_12; - } - v12 = decimal_point[++v13]; - v7 = v11[v13]; - v15 = &v11[v13]; - } - while ( v12 ); - v10 = v80; - v16 = &v11[v13]; - if ( __hexdig_D2A[v7] ) - { - if ( v7 == 48 ) - { - v11 += v13; - do - v27 = *++v11; - while ( v27 == 48 ); - v79 = (unsigned int)v11; - v10 = 1; - v81 = __hexdig_D2A[v27] == 0; - if ( !__hexdig_D2A[v27] ) - { -LABEL_32: - if ( v27 != *decimal_point ) - { - v28 = *v11; - v29 = 4 * (v16 - v11); - v30 = v16 == 0; - v31 = 0; - if ( !v30 ) - v31 = v29; - v85 = v31; -LABEL_36: - if ( (v28 & 0xDF) != 80 ) - goto LABEL_37; -LABEL_53: - v83 = v11; - v11 = (unsigned __int8 *)v79; - goto LABEL_54; - } - if ( v16 ) - { - v85 = 4 * (v16 - v11); - if ( (*v11 & 0xDF) != 80 ) - { -LABEL_37: - *a1 = v11; - if ( !v81 ) - { -LABEL_38: - v32 = 0; - for ( i = (int)&v11[-v79 - 1]; i > 7; ++v32 ) - i >>= 1; - v86 = __Balloc_D2A(v32); - v89 = v86 + 5; - if ( decimal_point[1] ) - { - v34 = 0; - do - ++v34; - while ( decimal_point[v34 + 1] ); - v91 = v34; - } - else - { - v91 = 0; - } - if ( (unsigned int)v11 <= v79 ) - { - v37 = (unsigned int *)(v86 + 5); - v53 = 0; - v42 = v86 + 6; - v55 = 32; - } - else - { - v35 = 0; - v36 = v11; - v84 = &decimal_point[v91]; - v37 = (unsigned int *)(v86 + 5); - v82 = 0; - do - { - while ( 1 ) - { - v40 = *(v36 - 1); - v41 = (unsigned int)(v36 - 1); - v42 = (int *)(v37 + 1); - if ( (_BYTE)v40 != *v84 ) - break; - v36 = (unsigned __int8 *)(v41 - v91); - if ( v41 - v91 <= v79 ) - goto LABEL_68; - } - if ( v35 == 32 ) - { - v43 = v82; - v44 = (int *)(v37 + 2); - v82 = 0; - *v37++ = v43; - v40 = *(v36 - 1); - v42 = v44; - v38 = 0; - v35 = 4; - } - else - { - v38 = v35; - v35 += 4; - } - v39 = (__hexdig_D2A[v40] & 0xF) << v38; - v36 = (unsigned __int8 *)v41; - v82 |= v39; - } - while ( v41 > v79 ); -LABEL_68: - v53 = v82; - _BitScanReverse(&v54, v82); - v55 = v54 ^ 0x1F; - } - *v37 = v53; - v56 = v42 - v89; - v86[4] = v56; - v57 = 32 * v56 - v55; - v58 = *a2; - if ( v57 > *a2 ) - { - v69 = v57 - v58; - v59 = __any_on_D2A((int)v86, v69); - if ( v59 ) - { - v59 = 1; - if ( (v89[(v69 - 1) >> 5] & (1 << (v69 - 1))) != 0 ) - { - if ( v69 == 1 || (v59 = 3, !__any_on_D2A((int)v86, v69 - 1)) ) - v59 = 2; - } - } - __rshift_D2A((int)v86, v69); - v85 += v69; - } - else - { - v59 = 0; - if ( v57 < *a2 ) - { - v85 -= v58 - v57; - v86 = __lshift_D2A(v86, v58 - v57); - v89 = v86 + 5; - } - } - if ( a2[2] < v85 ) - { -LABEL_110: - __Bfree_D2A(v86); - goto LABEL_111; - } - v60 = a2[1]; - if ( v60 <= v85 ) - { - v61 = 1; - goto LABEL_75; - } - v64 = v60 - v85; - if ( v58 > v60 - v85 ) - { - v70 = v64 - 1; - if ( v59 ) - { - v59 = 1; - } - else if ( v64 != 1 ) - { - v76 = __any_on_D2A((int)v86, v64 - 1); - v70 = v64 - 1; - v59 = v76; - } - Val = v64; - if ( (v89[v70 >> 5] & (1 << v70)) != 0 ) - v59 |= 2u; - v58 -= v64; - v61 = 2; - __rshift_D2A((int)v86, Val); - v85 = a2[1]; -LABEL_75: - if ( !v59 ) - { -LABEL_80: - *a4 = v86; - *a3 = v85; - return v61; - } - v62 = a2[3]; - if ( v62 == 2 ) - { - a5 = 1 - a5; - } - else if ( v62 != 3 ) - { - if ( v62 != 1 || (v59 & 2) == 0 || ((*v89 | v59) & 1) == 0 ) - goto LABEL_79; -LABEL_128: - v71 = v86[4]; - v86 = __increment_D2A(v86); - v72 = (unsigned int)(v86 + 5); - if ( v61 == 2 ) - { - v61 = 34; - if ( *a2 - 1 == v58 ) - v61 = ((*(_DWORD *)(v72 + 4 * (v58 >> 5)) & (1 << v58)) == 0) + 33; - goto LABEL_80; - } - if ( v86[4] <= v71 - && ((v73 = v58 & 0x1F) == 0 - || (_BitScanReverse(&v72, *(_DWORD *)(v72 + 4 * v71 - 4)), 32 - v73 <= (int)(v72 ^ 0x1F))) - || (__rshift_D2A((int)v86, 1), ++v85, a2[2] >= v85) ) - { - v61 = 33; - goto LABEL_80; - } - goto LABEL_110; - } - if ( !a5 ) - { -LABEL_79: - v61 |= 0x10u; - goto LABEL_80; - } - goto LABEL_128; - } - v65 = a2[3]; - if ( v65 == 2 ) - { - if ( !a5 ) - goto LABEL_141; - } - else if ( v65 == 3 ) - { - if ( a5 ) - goto LABEL_141; - } - else if ( v65 == 1 && v58 == v64 ) - { - if ( v58 == 1 ) - { -LABEL_141: - v86[4] = 1; - *v89 = 1; - goto LABEL_93; - } - if ( __any_on_D2A((int)v86, v58 - 1) ) - { - v60 = a2[1]; - goto LABEL_141; - } - } - __Bfree_D2A(v86); -LABEL_99: - *_errno() = 34; - return 80; - } - return 0; - } - goto LABEL_53; - } - v66 = decimal_point[1]; - if ( v66 ) - { - v67 = 1; - while ( v11[v67] == v66 ) - { - v66 = decimal_point[++v67]; - v68 = v67; - if ( !v66 ) - goto LABEL_151; - } - v28 = *v11; - } - else - { - v68 = 1; -LABEL_151: - v74 = &v11[v68]; - v11 = v74; - v28 = *v74; - if ( __hexdig_D2A[*v74] ) - { - do - { - v75 = *++v11; - v28 = v75; - } - while ( __hexdig_D2A[v75] ); - v85 = 4 * (v74 - v11); - goto LABEL_36; - } - } - v85 = 0; - goto LABEL_36; - } - } - else - { - v81 = 0; - v11 += v13; - v10 = 1; - v79 = (unsigned int)v15; - } - do - { -LABEL_31: - v26 = *++v11; - v27 = v26; - } - while ( __hexdig_D2A[v26] ); - goto LABEL_32; - } - } - else - { -LABEL_12: - v16 = v11; - } - v83 = v16; - if ( (v7 & 0xDF) != 80 ) - { - v81 = 1; - v17 = 0; - v85 = 0; - v78 = 0; - goto LABEL_15; - } - v85 = 0; - v81 = 1; -LABEL_54: - v45 = v83[1]; - if ( (_BYTE)v45 == 43 ) - { - v78 = 0; - } - else - { - if ( (_BYTE)v45 != 45 ) - { - v78 = 0; - v87 = v83 + 1; - goto LABEL_57; - } - v78 = 1; - } - v45 = v83[2]; - v87 = v83 + 2; -LABEL_57: - v46 = (unsigned __int8)__hexdig_D2A[v45]; - v17 = 0; - v16 = v83; - if ( (unsigned __int8)(v46 - 1) <= 0x18u ) - { - v90 = v46 - 16; - v16 = v87 + 1; - v47 = (unsigned __int8)__hexdig_D2A[(unsigned __int8)v87[1]]; - if ( (unsigned __int8)(__hexdig_D2A[(unsigned __int8)v87[1]] - 1) <= 0x18u ) - { - v88 = decimal_point; - v48 = v47; - v49 = v90; - do - { - v30 = (v49 & 0xF8000000) == 0; - v50 = 5 * v49; - if ( !v30 ) - v17 = 1; - v51 = v16[1]; - v49 = v48 + 2 * v50 - 16; - ++v16; - v48 = (unsigned __int8)__hexdig_D2A[v51]; - } - while ( (unsigned __int8)(__hexdig_D2A[v51] - 1) <= 0x18u ); - v90 = v49; - decimal_point = v88; - } - v52 = -v90; - if ( !v78 ) - v52 = v90; - v85 += v52; - } -LABEL_15: - if ( !v10 ) - v16 = v11 - 1; - *a1 = v16; - if ( v81 ) - return 0; - if ( !v17 ) - { - v79 = (unsigned int)v11; - v11 = v83; - goto LABEL_38; - } - v18 = a2[3]; - if ( v78 ) - { - if ( v18 == 2 ) - { - if ( a5 ) - goto LABEL_99; - } - else if ( v18 != 3 || !a5 ) - { - goto LABEL_99; - } - v86 = __Balloc_D2A(0); - v86[4] = 1; - v86[5] = 1; - v60 = a2[1]; -LABEL_93: - v25 = 98; - *a4 = v86; - *a3 = v60; - *_errno() = 34; - return v25; - } - if ( v18 == 2 ) - { - if ( !a5 ) - goto LABEL_111; - goto LABEL_23; - } - if ( v18 == 3 ) - { - if ( a5 ) - goto LABEL_111; - goto LABEL_23; - } - if ( v18 != 1 ) - { -LABEL_23: - v19 = *a2 & 0x1F; - v20 = *a2 >> 5; - v21 = v20 - ((v19 == 0) - 1); - v22 = 0; - for ( j = v21 >> 1; j; j >>= 1 ) - ++v22; - v24 = __Balloc_D2A(v22); - *a4 = v24; - v24[4] = v21; - if ( v20 > 0 ) - { - memset(v24 + 5, 255, 4 * v20); - v78 = v20; - } - if ( v21 > v20 ) - v24[v78 + 5] = 32 >> (32 - v19); - v25 = 17; - *a3 = a2[1]; - return v25; - } -LABEL_111: - *_errno() = 34; - return 163; -} -// 769690: using guessed type char byte_769690; - -//----- (0046B2F0) -------------------------------------------------------- -int __cdecl __rshift_D2A(int a1, int a2) -{ - int v2; // ebx - _DWORD *v3; // ebp - unsigned int v4; // ebx - _DWORD *v5; // esi - char v6; // di - int *v7; // edx - int v8; // eax - int v9; // esi - int v10; // ebx - _DWORD *v11; // edx - int result; // eax - _DWORD *v13; // edi - unsigned int v14; // [esp+0h] [ebp-24h] - int v15; // [esp+4h] [ebp-20h] - int v16; // [esp+8h] [ebp-1Ch] - - v2 = *(_DWORD *)(a1 + 16); - v16 = a2 >> 5; - v15 = v2; - if ( v2 <= a2 >> 5 ) - goto LABEL_8; - v3 = (_DWORD *)(a1 + 20); - v4 = a1 + 20 + 4 * v2; - v5 = (_DWORD *)(a1 + 20 + 4 * (a2 >> 5)); - v6 = a2 & 0x1F; - if ( (a2 & 0x1F) == 0 ) - { - v13 = (_DWORD *)(a1 + 20); - if ( v4 > (unsigned int)v5 ) - { - do - *v13++ = *v5++; - while ( v4 > (unsigned int)v5 ); - v11 = &v3[v15 - v16]; - goto LABEL_13; - } -LABEL_8: - *(_DWORD *)(a1 + 16) = 0; -LABEL_9: - result = a1; - *(_DWORD *)(a1 + 20) = 0; - return result; - } - v7 = v5 + 1; - v8 = *v5 >> v6; - if ( v4 <= (unsigned int)(v5 + 1) ) - { - *(_DWORD *)(a1 + 20) = v8; - if ( v8 ) - { - v11 = (_DWORD *)(a1 + 20); -LABEL_7: - ++v11; - goto LABEL_13; - } - goto LABEL_8; - } - v14 = v4; - v9 = a1 + 20; - do - { - v10 = *v7; - v9 += 4; - ++v7; - *(_DWORD *)(v9 - 4) = (v10 << (32 - v6)) | v8; - v8 = (unsigned int)*(v7 - 1) >> v6; - } - while ( v14 > (unsigned int)v7 ); - v3 = (_DWORD *)(a1 + 20); - v11 = (_DWORD *)(a1 + 20 + 4 * (v15 - v16) - 4); - *v11 = v8; - if ( v8 ) - goto LABEL_7; -LABEL_13: - result = v11 - v3; - *(_DWORD *)(a1 + 16) = result; - if ( v11 == v3 ) - goto LABEL_9; - return result; -} - -//----- (0046B400) -------------------------------------------------------- -int __cdecl __trailz_D2A(int a1) -{ - int *v1; // eax - unsigned int v2; // ebx - int v3; // edx - - v1 = (int *)(a1 + 20); - v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); - v3 = 0; - if ( a1 + 20 < v2 ) - { - while ( 1 ) - { - _ECX = *v1; - if ( *v1 ) - break; - ++v1; - v3 += 32; - if ( v2 <= (unsigned int)v1 ) - return v3; - } - if ( v2 > (unsigned int)v1 ) - { - __asm { tzcnt ecx, ecx } - v3 += _ECX; - } - } - return v3; -} - -//----- (0046B440) -------------------------------------------------------- -int __mingw_hexdig_init_D2A() -{ - const char *v0; // edx - int v1; // eax - int v2; // ecx - char *v3; // edx - int v4; // eax - int v5; // ecx - int v6; // edx - int result; // eax - char v8; // cl - - v0 = "123456789"; - v1 = 48; - do - { - v2 = (int)&(v0++)[16 - (_DWORD)"123456789"]; - __hexdig_D2A[v1] = v2; - v1 = *((unsigned __int8 *)v0 - 1); - } - while ( (_BYTE)v1 ); - v3 = (char *)&unk_55ABB4; - v4 = 97; - do - { - v5 = (int)&(v3++)[26 - (_DWORD)&unk_55ABB4]; - __hexdig_D2A[v4] = v5; - v4 = (unsigned __int8)*(v3 - 1); - } - while ( (_BYTE)v4 ); - v6 = 5614523; - result = 65; - do - { - v8 = v6++ + 95; - __hexdig_D2A[result] = v8; - result = *(unsigned __int8 *)(v6 - 1); - } - while ( (_BYTE)result ); - return result; -} - -//----- (0046B4C0) -------------------------------------------------------- -int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3) -{ - int *v3; // edx - unsigned __int8 *v4; // ebx - unsigned int v5; // eax - unsigned __int8 v6; // dl - unsigned int v7; // edx - unsigned __int8 *v8; // eax - int *v9; // ebp - int v10; // esi - int *v11; // edi - char v12; // cl - int *v13; // ebx - int v14; // edx - unsigned int v15; // eax - int v16; // edx - int v17; // eax - int *v18; // eax - unsigned int v19; // edi - int *v20; // ebp - int *v21; // edi - int *v22; // esi - unsigned int v23; // eax - size_t Size; // edx - int v25; // eax - int *v26; // eax - int v29; // edx - char i; // dl - int *v31; // ecx - _DWORD *v32; // edx - unsigned int v33; // eax - unsigned int v34; // ebx - char v35; // [esp+10h] [ebp-3Ch] - char v36; // [esp+10h] [ebp-3Ch] - int v37; // [esp+14h] [ebp-38h] - int v38; // [esp+18h] [ebp-34h] - int *v39; // [esp+1Ch] [ebp-30h] - unsigned __int8 *v40; // [esp+20h] [ebp-2Ch] - int *v41; // [esp+28h] [ebp-24h] - int v42; // [esp+2Ch] [ebp-20h] - - if ( !byte_769690 ) - __mingw_hexdig_init_D2A(); - v42 = *a2 & 0x1F; - v3 = &a3[*a2 >> 5]; - if ( v42 ) - { - v39 = &a3[*a2 >> 5]; - v41 = v3 + 1; - } - else - { - v41 = &a3[*a2 >> 5]; - v39 = v3 - 1; - } - *(v41 - 1) = 0; - v4 = *a1; - v5 = (*a1)[1]; - v6 = (*a1)[1]; - if ( !v6 ) - return 4; - while ( v5 <= 0x20 ) - { - v5 = v4[2]; - ++v4; - v6 = v5; - if ( !v5 ) - return 4; - } - if ( v6 == 48 && (v4[2] & 0xDF) == 88 && (v7 = v4[3], (unsigned __int8)v7 > 0x20u) ) - { - v8 = v4 + 3; - v4 += 2; - } - else - { - v7 = v4[1]; - v8 = v4 + 1; - if ( !v4[1] ) - return 4; - } - v9 = v39; - v38 = 0; - v10 = 0; - v37 = 0; - v11 = v39; - do - { - while ( 1 ) - { - v12 = __hexdig_D2A[v7]; - if ( v12 ) - break; - if ( v7 > 0x20 ) - { - v31 = v11; - v19 = (unsigned int)v9; - v20 = v31; - if ( v7 == 41 && v37 ) - { - *a1 = v4 + 2; - goto LABEL_25; - } - while ( 1 ) - { - ++v8; - if ( v7 == 41 ) - break; - v7 = (char)*v8; - if ( !*v8 ) - return 4; - } - *a1 = v8; - return 4; - } - if ( v37 > v38 ) - { - if ( v11 < v9 && v10 <= 7 ) - { - v40 = v8; - v13 = v11; - v35 = 4 * (8 - v10); - v14 = *v11; - do - { - v15 = v13[1]; - ++v13; - v16 = (v15 << (32 - v35)) | v14; - v17 = v15 >> v35; - *(v13 - 1) = v16; - *v13 = v17; - v14 = v17; - } - while ( v13 < v9 ); - v8 = v40; - } - if ( v11 <= a3 ) - { - v7 = v8[1]; - v4 = v8; - v10 = 8; - goto LABEL_23; - } - v9 = v11 - 1; - *(v11 - 1) = 0; - v10 = 0; - v38 = v37; - --v11; - } - for ( i = v8[1]; (unsigned __int8)i <= 0x20u; ++v8 ) - i = v8[2]; - if ( i != 48 ) - goto LABEL_49; - if ( (v8[2] & 0xDF) != 88 ) - goto LABEL_49; - v7 = v8[3]; - if ( (unsigned __int8)v7 <= 0x20u ) - goto LABEL_49; - v4 = v8 + 2; - v8 += 3; - } - ++v10; - ++v37; - if ( v10 > 8 ) - { - if ( v11 <= a3 ) - goto LABEL_49; - *(v11 - 1) = 0; - v29 = 0; - --v11; - v10 = 1; - } - else - { - v29 = 16 * *v11; - } - *v11 = v29 | v12 & 0xF; -LABEL_49: - v7 = v8[1]; - v4 = v8; -LABEL_23: - ++v8; - } - while ( v7 ); - v18 = v11; - v19 = (unsigned int)v9; - v20 = v18; - if ( !v37 ) - return 4; -LABEL_25: - if ( v19 > (unsigned int)v20 && v10 <= 7 ) - { - v32 = v20; - v36 = 4 * (8 - v10); - v33 = *v20; - do - { - v34 = v32[1]; - *v32++ = (v34 << (32 - v36)) | v33; - v33 = v34 >> v36; - *v32 = v34 >> v36; - } - while ( (unsigned int)v32 < v19 ); - } - if ( a3 >= v20 ) - { - v25 = *(v41 - 1); - if ( v42 ) - { - v25 &= 0xFFFFFFFF >> (32 - v42); - *(v41 - 1) = v25; - } - } - else - { - v21 = a3; - v22 = v20; - do - *v21++ = *v22++; - while ( v39 >= v22 ); - v23 = 4 * ((unsigned int)((char *)v39 - (char *)v20) >> 2) + 4; - if ( (char *)v39 + 1 < (char *)v20 + 1 ) - v23 = 4; - Size = 4 * ((unsigned int)((char *)v39 - ((char *)a3 + v23)) >> 2) + 4; - if ( (char *)a3 + v23 + 1 > (char *)v39 + 1 ) - Size = 4; - memset((char *)a3 + v23, 0, Size); - v25 = *(v41 - 1); - } - if ( v25 ) - return 5; - if ( v39 != a3 ) - { - v26 = v39; - while ( 1 ) - { - if ( *--v26 ) - return 5; - if ( a3 == v26 ) - { - v39 = v26; - break; - } - } - } - *v39 = 1; - return 5; -} -// 769690: using guessed type char byte_769690; - -//----- (0046B8E0) -------------------------------------------------------- -void __usercall dtoa_lock(int a1@) -{ - int v2; // eax - __int32 v3; // eax - - if ( dtoa_CS_init == 2 ) - goto LABEL_9; - if ( dtoa_CS_init ) - { - if ( dtoa_CS_init != 1 ) - return; - do - { -LABEL_4: - Sleep(1u); - v2 = dtoa_CS_init; - } - while ( dtoa_CS_init == 1 ); - goto LABEL_5; - } - v3 = _InterlockedExchange(&dtoa_CS_init, 1); - if ( !v3 ) - { - InitializeCriticalSection(&dtoa_CritSec); - InitializeCriticalSection(&CriticalSection); - atexit(dtoa_lock_cleanup); - dtoa_CS_init = 2; - goto LABEL_9; - } - if ( v3 == 2 ) - { - dtoa_CS_init = 2; - goto LABEL_9; - } - v2 = dtoa_CS_init; - if ( dtoa_CS_init == 1 ) - goto LABEL_4; -LABEL_5: - if ( v2 == 2 ) -LABEL_9: - EnterCriticalSection((LPCRITICAL_SECTION)(24 * a1 + 7774400)); -} -// 76A0A8: using guessed type int dtoa_CS_init; - -//----- (0046B9C0) -------------------------------------------------------- -void dtoa_lock_cleanup(void) -{ - if ( _InterlockedExchange(&dtoa_CS_init, 3) == 2 ) - { - DeleteCriticalSection(&dtoa_CritSec); - DeleteCriticalSection(&CriticalSection); - } -} -// 76A0A8: using guessed type int dtoa_CS_init; - -//----- (0046BA00) -------------------------------------------------------- -int *__cdecl __Balloc_D2A(int a1) -{ - int v1; // esi - int *result; // eax - bool v3; // zf - int *v4; // [esp+1Ch] [ebp-10h] - - dtoa_lock(0); - if ( a1 > 9 ) - goto LABEL_2; - result = (int *)freelist[a1]; - if ( result ) - { - v3 = dtoa_CS_init == 2; - freelist[a1] = *result; - if ( !v3 ) - goto LABEL_4; -LABEL_8: - v4 = result; - LeaveCriticalSection(&dtoa_CritSec); - result = v4; - goto LABEL_4; - } - result = (int *)pmem_next; - v1 = 1 << a1; - if ( ((unsigned int)(4 * (1 << a1) + 27) >> 3) + (((_BYTE *)pmem_next - (_BYTE *)&private_mem) >> 3) > 0x120 ) - { -LABEL_2: - v1 = 1 << a1; - result = (int *)malloc((4 * (1 << a1) + 27) & 0xFFFFFFF8); - if ( !result ) - return result; - } - else - { - pmem_next = (char *)pmem_next + ((4 * (1 << a1) + 27) & 0xFFFFFFF8); - } - v3 = dtoa_CS_init == 2; - result[1] = a1; - result[2] = v1; - if ( v3 ) - goto LABEL_8; -LABEL_4: - result[4] = 0; - result[3] = 0; - return result; -} -// 53E248: using guessed type void *pmem_next; -// 76A080: using guessed type int freelist[]; -// 76A0A8: using guessed type int dtoa_CS_init; - -//----- (0046BAF0) -------------------------------------------------------- -void __cdecl __Bfree_D2A(void *Block) -{ - int v1; // eax - bool v2; // zf - int v3; // edx - - if ( Block ) - { - if ( *((int *)Block + 1) <= 9 ) - { - dtoa_lock(0); - v1 = *((_DWORD *)Block + 1); - v2 = dtoa_CS_init == 2; - v3 = freelist[v1]; - freelist[v1] = (int)Block; - *(_DWORD *)Block = v3; - if ( v2 ) - LeaveCriticalSection(&dtoa_CritSec); - } - else - { - free(Block); - } - } -} -// 76A080: using guessed type int freelist[]; -// 76A0A8: using guessed type int dtoa_CS_init; - -//----- (0046BB60) -------------------------------------------------------- -int *__cdecl __multadd_D2A(int *a1, int a2, int a3) -{ - int v3; // ecx - __int64 v4; // rdi - unsigned __int64 v5; // rax - int *v6; // ebp - int *v8; // eax - __int64 v9; // [esp+10h] [ebp-2Ch] - int v10; // [esp+1Ch] [ebp-20h] - - v3 = 0; - HIDWORD(v4) = a3; - LODWORD(v4) = a3 >> 31; - v10 = a1[4]; - LODWORD(v9) = a2; - do - { - HIDWORD(v9) = a2 >> 31; - v5 = __PAIR64__(v4, HIDWORD(v4)) + v9 * (unsigned int)a1[v3 + 5]; - a1[v3 + 5] = v5; - LODWORD(v4) = 0; - ++v3; - HIDWORD(v4) = HIDWORD(v5); - } - while ( v10 > v3 ); - v6 = a1; - if ( v4 ) - { - if ( a1[2] <= v10 ) - { - v8 = __Balloc_D2A(a1[1] + 1); - v6 = v8; - if ( v8 ) - { - memcpy(v8 + 3, a1 + 3, 4 * a1[4] + 8); - __Bfree_D2A(a1); - v6[v10 + 5] = HIDWORD(v4); - v6[4] = v10 + 1; - } - } - else - { - v6 = a1; - a1[v10 + 5] = HIDWORD(v5); - a1[4] = v10 + 1; - } - } - return v6; -} - -//----- (0046BC40) -------------------------------------------------------- -_DWORD *__cdecl __i2b_D2A(int a1) -{ - _DWORD *result; // eax - bool v2; // zf - _DWORD *v3; // [esp+1Ch] [ebp-10h] - - dtoa_lock(0); - result = (_DWORD *)dword_76A084; - if ( dword_76A084 ) - { - dword_76A084 = *(_DWORD *)dword_76A084; - if ( dtoa_CS_init != 2 ) - { -LABEL_3: - result[3] = 0; - result[4] = 1; - result[5] = a1; - return result; - } -LABEL_8: - v3 = result; - LeaveCriticalSection(&dtoa_CritSec); - result = v3; - goto LABEL_3; - } - result = pmem_next; - if ( (unsigned int)((((_BYTE *)pmem_next - (_BYTE *)&private_mem) >> 3) + 4) <= 0x120 ) - { - pmem_next = (char *)pmem_next + 32; -LABEL_7: - v2 = dtoa_CS_init == 2; - result[1] = 1; - result[2] = 2; - if ( !v2 ) - goto LABEL_3; - goto LABEL_8; - } - result = malloc(0x20u); - if ( result ) - goto LABEL_7; - return result; -} -// 53E248: using guessed type void *pmem_next; -// 76A084: using guessed type int dword_76A084; -// 76A0A8: using guessed type int dtoa_CS_init; - -//----- (0046BCF0) -------------------------------------------------------- -int *__cdecl __mult_D2A(int a1, int a2) -{ - int v2; // edi - int v3; // ebx - int v4; // esi - int v5; // ebp - int *v6; // eax - unsigned int v7; // eax - unsigned int v8; // edx - unsigned int v9; // esi - unsigned int *v10; // ebp - unsigned __int64 v11; // rax - int v12; // eax - unsigned int v14; // [esp+14h] [ebp-48h] - unsigned int v15; // [esp+18h] [ebp-44h] - unsigned int v16; // [esp+1Ch] [ebp-40h] - unsigned int v17; // [esp+20h] [ebp-3Ch] - unsigned int *v18; // [esp+24h] [ebp-38h] - unsigned int v19; // [esp+28h] [ebp-34h] - int v20; // [esp+2Ch] [ebp-30h] - int *v21; // [esp+30h] [ebp-2Ch] - unsigned int *v22; // [esp+34h] [ebp-28h] - unsigned int v23; // [esp+3Ch] [ebp-20h] - - v2 = a1; - v3 = a2; - v4 = *(_DWORD *)(a1 + 16); - v5 = *(_DWORD *)(a2 + 16); - if ( v4 >= v5 ) - { - v5 = *(_DWORD *)(a1 + 16); - v4 = *(_DWORD *)(a2 + 16); - v3 = a1; - v2 = a2; - } - v20 = v5 + v4; - v6 = __Balloc_D2A(*(_DWORD *)(v3 + 4) + (*(_DWORD *)(v3 + 8) < v5 + v4)); - v21 = v6; - if ( v6 ) - { - v22 = (unsigned int *)(v6 + 5); - v7 = (unsigned int)&v6[v20 + 5]; - if ( (unsigned int)v22 < v7 ) - memset(v22, 0, 4 * ((v7 - (unsigned int)v21 - 21) >> 2) + 4); - v17 = v3 + 20 + 4 * v5; - v15 = v2 + 20; - v19 = v2 + 20 + 4 * v4; - if ( v2 + 20 < v19 ) - { - v8 = 4; - if ( v17 >= v3 + 21 ) - v8 = 4 * ((unsigned int)(4 * v5 - 1) >> 2) + 4; - v23 = v8; - v18 = v22; - do - { - while ( 1 ) - { - v15 += 4; - if ( *(_DWORD *)(v15 - 4) ) - break; - ++v18; - if ( v19 <= v15 ) - goto LABEL_15; - } - v16 = *(_DWORD *)(v15 - 4); - v9 = 0; - v14 = v3 + 20; - v10 = v18; - do - { - v14 += 4; - v11 = v9 + *v10++ + *(unsigned int *)(v14 - 4) * (unsigned __int64)v16; - v9 = HIDWORD(v11); - *(v10 - 1) = v11; - } - while ( v17 > v14 ); - LODWORD(v11) = v18++; - *(_DWORD *)(v11 + v23) = HIDWORD(v11); - } - while ( v19 > v15 ); - } -LABEL_15: - if ( v20 > 0 ) - { - v12 = v20; - do - { - if ( v22[v12 - 1] ) - break; - --v12; - } - while ( v12 ); - v20 = v12; - } - v21[4] = v20; - } - return v21; -} - -//----- (0046BEA0) -------------------------------------------------------- -int *__cdecl __pow5mult_D2A(int *a1, int a2) -{ - int *v2; // edi - int v3; // ebx - int *v4; // ebp - int **v5; // esi - int *v6; // edi - int *v7; // eax - int *v8; // edi - int v10; // eax - bool v11; // zf - int v12; // edx - int *v13; // eax - int *v14; // eax - int *Block; // [esp+0h] [ebp-3Ch] - - v2 = a1; - if ( (a2 & 3) == 0 || (v2 = __multadd_D2A(a1, dword_55ABDC[a2 & 3], 0)) != 0 ) - { - v3 = a2 >> 2; - v4 = v2; - if ( a2 >> 2 ) - { - v5 = (int **)p5s; - if ( !p5s ) - { - dtoa_lock(1); - v5 = (int **)p5s; - if ( !p5s ) - { - v14 = __Balloc_D2A(1); - v5 = (int **)v14; - if ( !v14 ) - { - p5s = 0; - return 0; - } - v14[5] = 625; - v14[4] = 1; - p5s = (int)v14; - *v14 = 0; - } - if ( dtoa_CS_init == 2 ) - LeaveCriticalSection(&CriticalSection); - } - v4 = v2; - if ( (v3 & 1) != 0 ) - goto LABEL_9; -LABEL_5: - v3 >>= 1; - if ( v3 ) - { - while ( 1 ) - { - v6 = *v5; - if ( *v5 ) - goto LABEL_7; - dtoa_lock(1); - v6 = *v5; - if ( !*v5 ) - { - v13 = __mult_D2A((int)v5, (int)v5); - *v5 = v13; - v6 = v13; - if ( !v13 ) - return 0; - *v13 = 0; - } - if ( dtoa_CS_init != 2 ) - { -LABEL_7: - v5 = (int **)v6; - } - else - { - v5 = (int **)v6; - LeaveCriticalSection(&CriticalSection); - } - if ( (v3 & 1) == 0 ) - goto LABEL_5; -LABEL_9: - v7 = __mult_D2A((int)v4, (int)v5); - v8 = v7; - if ( !v7 ) - return 0; - if ( !v4 ) - { - v4 = v7; - goto LABEL_5; - } - if ( v4[1] <= 9 ) - { - dtoa_lock(0); - v10 = v4[1]; - v11 = dtoa_CS_init == 2; - v12 = freelist[v10]; - freelist[v10] = (int)v4; - *v4 = v12; - v4 = v8; - if ( v11 ) - LeaveCriticalSection(&dtoa_CritSec); - goto LABEL_5; - } - Block = v4; - v4 = v7; - free(Block); - v3 >>= 1; - if ( !v3 ) - return v4; - } - } - } - return v4; - } - return 0; -} -// 55ABDC: using guessed type int dword_55ABDC[]; -// 769760: using guessed type int p5s; -// 76A080: using guessed type int freelist[]; -// 76A0A8: using guessed type int dtoa_CS_init; - -//----- (0046C080) -------------------------------------------------------- -int *__cdecl __lshift_D2A(int *a1, int a2) -{ - int v2; // edx - int v3; // esi - int i; // eax - int *v5; // eax - int *v6; // edi - int *v7; // esi - unsigned int v8; // edx - char v9; // cl - int *v10; // ebp - unsigned int v11; // eax - int v12; // ebx - int v13; // ebx - unsigned int v14; // ecx - _DWORD *v16; // edi - _DWORD *v17; // esi - int *v18; // [esp+1Ch] [ebp-30h] - int v19; // [esp+20h] [ebp-2Ch] - - v2 = a1[1]; - v3 = a2 >> 5; - v19 = (a2 >> 5) + a1[4]; - for ( i = a1[2]; v19 + 1 > i; ++v2 ) - i *= 2; - v5 = __Balloc_D2A(v2); - v18 = v5; - if ( v5 ) - { - v6 = v5 + 5; - if ( v3 > 0 ) - { - v6 += v3; - memset(v5 + 5, 0, 4 * v3); - } - v7 = a1 + 5; - v8 = (unsigned int)&a1[a1[4] + 5]; - v9 = a2 & 0x1F; - if ( (a2 & 0x1F) != 0 ) - { - v10 = v6; - v11 = 0; - do - { - v12 = *v7; - ++v10; - ++v7; - *(v10 - 1) = (v12 << v9) | v11; - v11 = (unsigned int)*(v7 - 1) >> (32 - v9); - } - while ( v8 > (unsigned int)v7 ); - v13 = v19 + 1; - v14 = 4 * ((v8 - (unsigned int)a1 - 21) >> 2) + 4; - if ( v8 < (unsigned int)a1 + 21 ) - v14 = 4; - if ( !v11 ) - v13 = v19; - *(int *)((char *)v6 + v14) = v11; - v19 = v13; - } - else - { - do - { - *v6 = *v7; - v17 = v7 + 1; - v16 = v6 + 1; - if ( v8 <= (unsigned int)v17 ) - break; - *v16 = *v17; - v7 = v17 + 1; - v6 = v16 + 1; - } - while ( v8 > (unsigned int)v7 ); - } - v18[4] = v19; - __Bfree_D2A(a1); - } - return v18; -} - -//----- (0046C1C0) -------------------------------------------------------- -int __cdecl __cmp_D2A(int a1, int a2) -{ - int v2; // eax - int v3; // ebx - int v4; // edx - _DWORD *v5; // eax - _DWORD *v6; // edx - - v2 = *(_DWORD *)(a2 + 16); - v3 = *(_DWORD *)(a1 + 16) - v2; - if ( !v3 ) - { - v4 = 4 * v2; - v5 = (_DWORD *)(a1 + 20 + 4 * v2); - v6 = (_DWORD *)(a2 + v4 + 20); - while ( *--v5 == *--v6 ) - { - if ( a1 + 20 >= (unsigned int)v5 ) - return v3; - } - return *v5 < *v6 ? -1 : 1; - } - return v3; -} - -//----- (0046C210) -------------------------------------------------------- -int *__cdecl __diff_D2A(int a1, int a2) -{ - int v2; // esi - int v3; // eax - int v4; // ebx - int v5; // edx - _DWORD *v6; // eax - _DWORD *v7; // edx - int *v8; // eax - int *v9; // edi - int v10; // eax - int v11; // ebx - int v12; // esi - unsigned int v13; // ebp - __int64 v14; // rcx - __int64 v15; // rax - unsigned __int64 v16; // rax - int v17; // edx - unsigned int v18; // ebx - unsigned int v19; // eax - unsigned int v20; // ebx - int v21; // ebx - int v22; // eax - unsigned int *v23; // ecx - int v24; // ebp - int v25; // ebx - unsigned int v26; // eax - unsigned __int64 v27; // rax - int v28; // eax - int v29; // edx - int v31; // [esp+18h] [ebp-44h] - int *v32; // [esp+24h] [ebp-38h] - int v33; // [esp+24h] [ebp-38h] - unsigned int v34; // [esp+28h] [ebp-34h] - int *v35; // [esp+2Ch] [ebp-30h] - unsigned int v36; // [esp+30h] [ebp-2Ch] - int v37; // [esp+34h] [ebp-28h] - int v38; // [esp+38h] [ebp-24h] - int *v39; // [esp+3Ch] [ebp-20h] - - v2 = a1; - v3 = *(_DWORD *)(a2 + 16); - v4 = *(_DWORD *)(a1 + 16) - v3; - if ( v4 ) - { - v4 = 0; - if ( *(_DWORD *)(a1 + 16) - v3 < 0 ) - { -LABEL_24: - v4 = 1; - v2 = a2; - a2 = a1; - } -LABEL_6: - v8 = __Balloc_D2A(*(_DWORD *)(v2 + 4)); - v35 = v8; - v9 = v8; - if ( v8 ) - { - v8[3] = v4; - v10 = *(_DWORD *)(v2 + 16); - v11 = v2 + 20; - v12 = 0; - v38 = v11; - v37 = v10; - v36 = v11 + 4 * v10; - v31 = v11; - v13 = a2 + 20; - v34 = a2 + 20 + 4 * *(_DWORD *)(a2 + 16); - v39 = v9 + 5; - v32 = v9 + 5; - do - { - v31 += 4; - v13 += 4; - v14 = *(unsigned int *)(v13 - 4); - v15 = *(unsigned int *)(v31 - 4) - (unsigned __int64)(unsigned int)v12 - v14; - LODWORD(v14) = *(_DWORD *)(v31 - 4) - v12 - v14; - v16 = __PAIR64__(HIDWORD(v15), (unsigned int)++v32) & 0x1FFFFFFFFLL; - v12 = HIDWORD(v16); - *(_DWORD *)(v16 - 4) = v14; - v17 = v14; - } - while ( v34 > v13 ); - v18 = v34 - a2 - 21; - v19 = v18 & 0xFFFFFFFC; - v20 = v18 >> 2; - if ( v34 < a2 + 21 ) - v19 = 0; - v21 = 4 * v20 + 4; - v22 = (int)v39 + v19; - if ( v34 < a2 + 21 ) - v21 = 4; - v23 = (unsigned int *)(v21 + v38); - v33 = v21 + v38; - if ( v36 > v21 + v38 ) - { - v24 = (int)v39 + v21; - v25 = (int)v39 + v21; - do - { - v26 = *v23++; - v27 = v26 - (unsigned __int64)(unsigned int)v12; - v25 += 4; - v12 = BYTE4(v27) & 1; - v17 = v27; - *(_DWORD *)(v25 - 4) = v27; - } - while ( v36 > (unsigned int)v23 ); - v22 = v24 + ((v36 - 1 - v33) & 0xFFFFFFFC); - } - if ( !v17 ) - { - v28 = v22 - 4 * v37; - v29 = v37; - do - --v29; - while ( !*(_DWORD *)(v28 + 4 * v29) ); - v37 = v29; - } - v35[4] = v37; - } - return v35; - } - else - { - v5 = 4 * v3; - v6 = (_DWORD *)(a1 + 20 + 4 * v3); - v7 = (_DWORD *)(a2 + v5 + 20); - do - { - if ( *--v6 != *--v7 ) - { - if ( *v6 < *v7 ) - goto LABEL_24; - goto LABEL_6; - } - } - while ( a1 + 20 < (unsigned int)v6 ); - v35 = __Balloc_D2A(0); - if ( !v35 ) - return v35; - v35[4] = 1; - v35[5] = 0; - return v35; - } -} - -//----- (0046C440) -------------------------------------------------------- -long double __cdecl __b2d_D2A(int a1, _DWORD *a2) -{ - unsigned int v2; // esi - int v3; // ebx - unsigned int v4; // edx - unsigned int v5; // ebp - unsigned int v6; // eax - signed int v7; // eax - int v8; // eax - unsigned int v9; // edi - int v11; // edi - int v12; // edx - double v13; // [esp+0h] [ebp-1Ch] - double v14; // [esp+0h] [ebp-1Ch] - - v2 = a1 + 20; - v3 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); - v4 = *(_DWORD *)(v3 - 4); - v5 = v3 - 4; - _BitScanReverse(&v6, v4); - v7 = v6 ^ 0x1F; - *a2 = 32 - v7; - if ( v7 > 10 ) - { - v8 = v7 - 11; - if ( v2 >= v5 ) - { - v9 = 0; - if ( v8 ) - { - v9 = 0; - HIDWORD(v13) = (v4 << v8) | 0x3FF00000; - goto LABEL_5; - } - } - else - { - v9 = *(_DWORD *)(v3 - 8); - if ( v8 ) - { - v12 = (v9 >> (32 - v8)) | (v4 << v8); - v9 <<= v8; - HIDWORD(v13) = v12 | 0x3FF00000; - if ( v2 < v3 - 8 ) - v9 |= *(_DWORD *)(v3 - 12) >> (32 - v8); - goto LABEL_5; - } - } - HIDWORD(v13) = v4 | 0x3FF00000; -LABEL_5: - LODWORD(v13) = v9; - return v13; - } - v11 = 0; - if ( v2 < v5 ) - v11 = *(_DWORD *)(v3 - 8) >> (11 - v7); - LODWORD(v14) = v11 | (v4 << (v7 + 21)); - HIDWORD(v14) = (v4 >> (11 - v7)) | 0x3FF00000; - return v14; -} - -//----- (0046C550) -------------------------------------------------------- -int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3) -{ - int *v3; // edx - int v6; // eax - int v8; // esi - int v9; // ebx - unsigned int v10; // eax - - v3 = __Balloc_D2A(1); - if ( !v3 ) - return v3; - _ESI = LODWORD(a1); - _EBX = HIDWORD(a1) & 0xFFFFF; - v6 = (HIDWORD(a1) >> 20) & 0x7FF; - if ( v6 ) - _EBX = HIDWORD(a1) & 0xFFFFF | 0x100000; - if ( LODWORD(a1) ) - { - __asm { tzcnt edi, esi } - v8 = LODWORD(a1) >> _EDI; - if ( _EDI ) - { - v8 |= _EBX << (32 - _EDI); - _EBX >>= _EDI; - } - v3[6] = _EBX; - v9 = 1 - ((_EBX == 0) - 1); - v3[5] = v8; - v3[4] = v9; - if ( !v6 ) - goto LABEL_8; - } - else - { - v3[4] = 1; - __asm { tzcnt ecx, ebx } - _EDI = _ECX + 32; - v3[5] = _EBX >> _ECX; - v9 = 1; - if ( !v6 ) - { -LABEL_8: - *a2 = _EDI - 1074; - _BitScanReverse(&v10, v3[v9 + 4]); - *a3 = 32 * v9 - (v10 ^ 0x1F); - return v3; - } - } - *a2 = v6 + _EDI - 1075; - *a3 = 53 - _EDI; - return v3; -} - -//----- (0046C650) -------------------------------------------------------- -int __cdecl __strcp_D2A(__int64 a1) -{ - __int64 v1; // rax - char v2; // cl - char v3; // cl - - v1 = a1 + 0x100000000LL; - v2 = *(_BYTE *)HIDWORD(a1); - *(_BYTE *)a1 = *(_BYTE *)HIDWORD(a1); - if ( v2 ) - { - do - { - v3 = *(_BYTE *)HIDWORD(v1); - LODWORD(v1) = v1 + 1; - ++HIDWORD(v1); - *(_BYTE *)v1 = v3; - } - while ( v3 ); - } - return v1; -} - -//----- (0046C680) -------------------------------------------------------- -int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5) -{ - int v5; // edi - int v6; // eax - int v7; // edx - int *result; // eax - char *v9; // ebx - int v10; // edx - char *v11; // ebx - char *v12; // esi - int v13; // edx - - v5 = a2; - if ( a3 <= 9 ) - { - v7 = 0; - } - else - { - v6 = 1; - v7 = 0; - do - { - v6 *= 2; - ++v7; - } - while ( (a3 + 8) / 9 > v6 ); - } - result = __Balloc_D2A(v7); - result[4] = 1; - result[5] = a4; - if ( a2 <= 9 ) - { - v11 = (char *)(a1 + a5 + 9); - v5 = 9; - } - else - { - v9 = (char *)(a1 + 9); - do - { - v10 = *v9++; - result = __multadd_D2A(result, 10, v10 - 48); - } - while ( v9 != (char *)(a2 + a1) ); - v11 = &v9[a5]; - } - if ( a3 > v5 ) - { - v12 = &v11[a3 - v5]; - do - { - v13 = *v11++; - result = __multadd_D2A(result, 10, v13 - 48); - } - while ( v12 != v11 ); - } - return result; -} - -//----- (0046C770) -------------------------------------------------------- -long double __cdecl __ratio_D2A(int a1, int a2) -{ - int v2; // eax - double v4; // [esp+10h] [ebp-3Ch] - double v5; // [esp+18h] [ebp-34h] - double v6; // [esp+20h] [ebp-2Ch] - double v7; // [esp+28h] [ebp-24h] - int v8; // [esp+38h] [ebp-14h] BYREF - int v9[4]; // [esp+3Ch] [ebp-10h] BYREF - - v4 = __b2d_D2A(a1, &v8); - v6 = v4; - v5 = __b2d_D2A(a2, v9); - v7 = v5; - v2 = v8 + 32 * (*(_DWORD *)(a1 + 16) - *(_DWORD *)(a2 + 16)) - v9[0]; - if ( v2 <= 0 ) - { - HIDWORD(v7) = HIDWORD(v5) - (v2 << 20); - return v4 / v7; - } - else - { - HIDWORD(v6) = HIDWORD(v4) + (v2 << 20); - return v6 / v5; - } -} -// 46C770: using guessed type int var_10[4]; - -//----- (0046C830) -------------------------------------------------------- -int __cdecl __match_D2A(char **a1, char *a2) -{ - char *v3; // edx - int v4; // eax - int v5; // ebx - - v3 = *a1; - do - { - v5 = *a2++; - ++v3; - if ( !v5 ) - { - *a1 = v3; - return 1; - } - v4 = *v3; - if ( (unsigned int)(v4 - 65) < 0x1A ) - v4 += 32; - } - while ( v4 == v5 ); - return 0; -} - -//----- (0046C880) -------------------------------------------------------- -size_t __cdecl __copybits_D2A(char *a1, int Val, size_t Size) -{ - char *v3; // ecx - _DWORD *v4; // esi - size_t result; // eax - char *v6; // edi - - v3 = a1; - v4 = (_DWORD *)(Size + 20); - result = Size + 20 + 4 * *(_DWORD *)(Size + 16); - if ( Size + 20 < result ) - { - v6 = a1; - do - { - *(_DWORD *)v6 = *v4++; - v6 += 4; - } - while ( result > (unsigned int)v4 ); - result = (result - Size - 21) >> 2; - v3 = &a1[4 * result + 4]; - } - if ( &a1[4 * ((Val - 1) >> 5) + 4] > v3 ) - return (size_t)memset(v3, 0, 4 * ((unsigned int)(&a1[4 * ((Val - 1) >> 5) + 3] - v3) >> 2) + 4); - return result; -} - -//----- (0046C900) -------------------------------------------------------- -int __cdecl __any_on_D2A(int a1, int a2) -{ - int v2; // esi - unsigned int v3; // edx - _DWORD *v4; // eax - int v6; // ecx - - v2 = *(_DWORD *)(a1 + 16); - v3 = a1 + 20; - if ( v2 < a2 >> 5 ) - { - v4 = (_DWORD *)(v3 + 4 * v2); - goto LABEL_4; - } - v4 = (_DWORD *)(v3 + 4 * (a2 >> 5)); - if ( v2 > a2 >> 5 && (a2 & 0x1F) != 0 ) - { - v6 = 1; - if ( *v4 != *v4 >> (a2 & 0x1F) << (a2 & 0x1F) ) - return v6; - } - do - { -LABEL_4: - if ( (unsigned int)v4 <= v3 ) - return 0; - } - while ( !*--v4 ); - return 1; -} - -//----- (0046C970) -------------------------------------------------------- -size_t __cdecl strnlen(const char *String, size_t MaxCount) -{ - size_t v2; // edx - const char *v3; // eax - - v2 = 0; - v3 = String; - if ( MaxCount ) - { - do - { - if ( !*v3 ) - break; - v2 = ++v3 - String; - } - while ( v3 - String < MaxCount ); - } - return v2; -} - -//----- (0046C9A0) -------------------------------------------------------- -size_t __cdecl wcsnlen(const wchar_t *Source, size_t MaxCount) -{ - size_t v2; // edx - size_t v3; // eax - - v2 = MaxCount; - v3 = 0; - if ( MaxCount ) - { - while ( Source[v3] ) - { - if ( MaxCount == ++v3 ) - return v2; - } - return v3; - } - return v2; -} - -//----- (0046CC00) -------------------------------------------------------- -int __cdecl __mbrtowc_cp(LPWSTR lpWideCharStr, BYTE *lpMultiByteStr, int a3, int *a4, UINT CodePage, unsigned int a6) -{ - int v6; // edx - BYTE TestChar; // al - int v8; // eax - int v10; // [esp+2Ch] [ebp-10h] BYREF - - if ( !lpMultiByteStr ) - return 0; - if ( !a3 ) - return -2; - v6 = *a4; - TestChar = *lpMultiByteStr; - *a4 = 0; - v10 = v6; - if ( !TestChar ) - { - *lpWideCharStr = 0; - return 0; - } - if ( a6 <= 1 ) - goto LABEL_11; - if ( (_BYTE)v6 ) - { - BYTE1(v10) = TestChar; - v8 = MultiByteToWideChar(CodePage, 8u, (LPCCH)&v10, 2, lpWideCharStr, 1); -LABEL_9: - if ( v8 ) - return 2; -LABEL_19: - *_errno() = 42; - return -1; - } - if ( !IsDBCSLeadByteEx(CodePage, TestChar) ) - { -LABEL_11: - if ( !CodePage ) - { - *lpWideCharStr = *lpMultiByteStr; - return 1; - } - if ( MultiByteToWideChar(CodePage, 8u, (LPCCH)lpMultiByteStr, 1, lpWideCharStr, 1) ) - return 1; - goto LABEL_19; - } - if ( a3 != 1 ) - { - v8 = MultiByteToWideChar(CodePage, 8u, (LPCCH)lpMultiByteStr, 2, lpWideCharStr, 1); - goto LABEL_9; - } - *(_BYTE *)a4 = *lpMultiByteStr; - return -2; -} - -//----- (0046CDA0) -------------------------------------------------------- -size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State) -{ - wchar_t *v4; // ebx - mbstate_t *v5; // esi - unsigned int v7; // [esp+10h] [ebp-2Ch] - unsigned int v8; // [esp+14h] [ebp-28h] - WCHAR v9; // [esp+2Eh] [ebp-Eh] BYREF - - v4 = DstCh; - v5 = State; - v9 = 0; - if ( !DstCh ) - v4 = &v9; - v8 = ___mb_cur_max_func(); - v7 = ___lc_codepage_func(); - if ( !State ) - v5 = (mbstate_t *)&internal_mbstate_2; - return __mbrtowc_cp(v4, (BYTE *)SrcCh, SizeInBytes, (int *)v5, v7, v8); -} - -//----- (0046CE00) -------------------------------------------------------- -size_t __cdecl mbsrtowcs(wchar_t *Dest, const char **PSrc, size_t Count, mbstate_t *State) -{ - mbstate_t *v4; // eax - int v5; // eax - unsigned int v6; // esi - BYTE *v7; // eax - unsigned int v8; // edi - wchar_t *v9; // ebx - int i; // eax - BYTE *v11; // ecx - unsigned int v13; // ebx - size_t v14; // esi - int v15; // eax - unsigned int v16; // [esp+28h] [ebp-34h] - WCHAR v17[15]; // [esp+3Eh] [ebp-1Eh] BYREF - mbstate_t *Statea; // [esp+6Ch] [ebp+10h] - - v4 = (mbstate_t *)&internal_mbstate_1; - if ( State ) - v4 = State; - Statea = v4; - v16 = ___lc_codepage_func(); - v5 = ___mb_cur_max_func(); - if ( !PSrc ) - return 0; - v6 = v5; - v7 = (BYTE *)*PSrc; - if ( !*PSrc ) - return 0; - if ( Dest ) - { - v8 = 0; - if ( Count ) - { - v9 = Dest; - for ( i = __mbrtowc_cp(Dest, v7, Count, (int *)Statea, v16, v6); - i > 0; - i = __mbrtowc_cp(v9, v11, Count - v8, (int *)Statea, v16, v6) ) - { - v8 += i; - ++v9; - v11 = (BYTE *)&(*PSrc)[i]; - *PSrc = (const char *)v11; - if ( Count <= v8 ) - return v8; - } - if ( Count > v8 && !i ) - *PSrc = 0; - } - return v8; - } - else - { - v13 = v6; - v17[0] = 0; - v14 = 0; - while ( 1 ) - { - v15 = __mbrtowc_cp(v17, &v7[v14], v13, (int *)Statea, v16, v13); - if ( v15 <= 0 ) - break; - v14 += v15; - v7 = (BYTE *)*PSrc; - } - return v14; - } -} -// 46CE00: using guessed type WCHAR var_1E[15]; - -//----- (0046CF40) -------------------------------------------------------- -size_t __cdecl mbrlen(const char *Ch, size_t SizeInBytes, mbstate_t *State) -{ - mbstate_t *v3; // ebx - unsigned int v5; // [esp+10h] [ebp-2Ch] - unsigned int v6; // [esp+14h] [ebp-28h] - WCHAR v7[7]; // [esp+2Eh] [ebp-Eh] BYREF - - v3 = State; - v7[0] = 0; - v6 = ___mb_cur_max_func(); - v5 = ___lc_codepage_func(); - if ( !State ) - v3 = (mbstate_t *)&bss_1; - return __mbrtowc_cp(v7, (BYTE *)Ch, SizeInBytes, (int *)v3, v5, v6); -} -// 46CF40: using guessed type WCHAR var_E[7]; - -//----- (0046CFA0) -------------------------------------------------------- -int __cdecl __wcrtomb_cp(LPSTR lpMultiByteStr, WCHAR a2, UINT CodePage, int cbMultiByte) -{ - int result; // eax - WCHAR WideCharStr[8]; // [esp+2Ch] [ebp-20h] BYREF - BOOL UsedDefaultChar; // [esp+3Ch] [ebp-10h] BYREF - - WideCharStr[0] = a2; - if ( !CodePage ) - { - if ( a2 <= 0xFFu ) - { - *lpMultiByteStr = a2; - return 1; - } -LABEL_7: - *_errno() = 42; - return -1; - } - UsedDefaultChar = 0; - result = WideCharToMultiByte(CodePage, 0, WideCharStr, 1, lpMultiByteStr, cbMultiByte, 0, &UsedDefaultChar); - if ( !result || UsedDefaultChar ) - goto LABEL_7; - return result; -} -// 46CFA0: using guessed type WCHAR WideCharStr[8]; - -//----- (0046D040) -------------------------------------------------------- -size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State) -{ - char *v3; // ebx - int v4; // edi - unsigned int v5; // eax - CHAR v7; // [esp+1Bh] [ebp-11h] BYREF - - v3 = Dest; - if ( !Dest ) - v3 = &v7; - v4 = ___mb_cur_max_func(); - v5 = ___lc_codepage_func(); - return __wcrtomb_cp(v3, Source, v5, v4); -} - -//----- (0046D090) -------------------------------------------------------- -size_t __cdecl wcsrtombs(char *Dest, const wchar_t **PSource, size_t Count, mbstate_t *State) -{ - size_t v4; // ebx - char *v5; // esi - int v6; // edi - const wchar_t *v7; // ebp - WCHAR *v8; // ebx - int v9; // ebp - size_t v10; // edi - int v11; // eax - int v13; // ebp - WCHAR *i; // edi - int v15; // eax - unsigned int v16; // [esp+1Ch] [ebp-30h] - CHAR v18[33]; // [esp+2Bh] [ebp-21h] BYREF - - v4 = 0; - v5 = Dest; - v16 = ___lc_codepage_func(); - v6 = ___mb_cur_max_func(); - v7 = *PSource; - if ( !*PSource ) - return v4; - if ( !Dest ) - { - v13 = v6; - for ( i = (WCHAR *)*PSource; ; ++i ) - { - v15 = __wcrtomb_cp(v18, *i, v16, v13); - if ( v15 <= 0 ) - break; - v4 += v15; - if ( !v18[v15 - 1] ) - return v4 - 1; - } - return -1; - } - if ( Count ) - { - v8 = (WCHAR *)*PSource; - v9 = v6; - v10 = 0; - while ( 1 ) - { - v11 = __wcrtomb_cp(v5, *v8, v16, v9); - if ( v11 <= 0 ) - return -1; - v5 += v11; - v10 += v11; - if ( !*(v5 - 1) ) - { - *PSource = 0; - return v10 - 1; - } - ++v8; - if ( Count <= v10 ) - { - v7 = v8; - v4 = v10; - break; - } - } - } - *PSource = v7; - return v4; -} -// 46D090: using guessed type CHAR var_21[33]; - -//----- (0046D1B0) -------------------------------------------------------- -FILE *__cdecl __acrt_iob_func(unsigned int Ix) -{ - return &__iob[Ix]; -} - -//----- (0046D1C0) -------------------------------------------------------- -_invalid_parameter_handler __cdecl _get_invalid_parameter_handler() -{ - return (_invalid_parameter_handler)handler; -} -// 76A10C: using guessed type int handler; - -//----- (0046D1D0) -------------------------------------------------------- -_invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler Handler) -{ - return (_invalid_parameter_handler)_InterlockedExchange(&handler, (__int32)Handler); -} -// 76A10C: using guessed type int handler; - -//----- (0046D1E0) -------------------------------------------------------- -int __cdecl mingw_rand_s(int a1) -{ - char v1; // dl - int result; // eax - - if ( !a1 ) - return 22; - if ( !pRtlGenRandom ) - return 22; - v1 = pRtlGenRandom(a1, 4); - result = 0; - if ( !v1 ) - return 22; - return result; -} -// 76A110: using guessed type int (__stdcall *pRtlGenRandom)(_DWORD, _DWORD); - -//----- (0046D230) -------------------------------------------------------- -int __cdecl init_rand_s(int a1) -{ - HMODULE ModuleHandleW; // eax - int (__cdecl *rand_s)(int); // eax - HMODULE LibraryW; // eax - - ModuleHandleW = GetModuleHandleW(&ModuleName); - rand_s = (int (__cdecl *)(int))GetProcAddress(ModuleHandleW, "rand_s"); - if ( !rand_s ) - { - LibraryW = LoadLibraryW(&LibFileName); - pRtlGenRandom = (int (__stdcall *)(_DWORD, _DWORD))GetProcAddress(LibraryW, "SystemFunction036"); - rand_s = mingw_rand_s; - } - _rand_s = rand_s; - return rand_s(a1); -} -// 53E258: using guessed type int (__cdecl *_rand_s)(int); -// 76A110: using guessed type int (__stdcall *pRtlGenRandom)(_DWORD, _DWORD); - -//----- (0046D2B0) -------------------------------------------------------- -void __cdecl _lock_file(FILE *Stream) -{ - FILE *v1; // eax - - if ( Stream >= __acrt_iob_func(0) && Stream <= __acrt_iob_func(0x13u) ) - { - v1 = __acrt_iob_func(0); - _lock(Stream - v1 + 16); - Stream->_flag |= 0x8000u; - } - else - { - EnterCriticalSection((LPCRITICAL_SECTION)&Stream[1]); - } -} -// 46D498: using guessed type int __cdecl _lock(_DWORD); - -//----- (0046D320) -------------------------------------------------------- -void __cdecl _unlock_file(FILE *Stream) -{ - FILE *v1; // eax - - if ( Stream >= __acrt_iob_func(0) && Stream <= __acrt_iob_func(0x13u) ) - { - Stream->_flag &= ~0x8000u; - v1 = __acrt_iob_func(0); - _unlock((FILE *)(Stream - v1 + 16)); - } - else - { - LeaveCriticalSection((LPCRITICAL_SECTION)&Stream[1]); - } -} -// 46D490: using guessed type void __cdecl _unlock(FILE *Stream); - -//----- (0046D390) -------------------------------------------------------- -int __cdecl ___mb_cur_max_func() -{ - return ___mb_cur_max; -} - -//----- (0046D3A0) -------------------------------------------------------- -int msvcrt___lc_codepage_func() -{ - return *(_DWORD *)msvcrt__lc_codepage; -} -// 76A114: using guessed type int msvcrt__lc_codepage; - -//----- (0046D3B0) -------------------------------------------------------- -int setlocale_codepage_hack() -{ - char *v0; // eax - char *v1; // eax - int v2; // edx - - v0 = setlocale(2, 0); - v1 = strchr(v0, 46); - v2 = 0; - if ( v1 ) - return atoi(v1 + 1); - return v2; -} - -//----- (0046D3F0) -------------------------------------------------------- -int init_codepage_func() -{ - HMODULE ModuleHandleW; // eax - HMODULE v1; // ebx - unsigned int (__cdecl *___lc_codepage_func)(); // eax - - ModuleHandleW = GetModuleHandleW(&off_55AD8C); - if ( ModuleHandleW ) - { - v1 = ModuleHandleW; - ___lc_codepage_func = (unsigned int (__cdecl *)())GetProcAddress(ModuleHandleW, "___lc_codepage_func"); - if ( ___lc_codepage_func ) - { -LABEL_3: - *(_DWORD *)____lc_codepage_func = ___lc_codepage_func; - return ___lc_codepage_func(); - } - msvcrt__lc_codepage = (int)GetProcAddress(v1, "__lc_codepage"); - if ( msvcrt__lc_codepage ) - { - ___lc_codepage_func = (unsigned int (__cdecl *)())msvcrt___lc_codepage_func; - goto LABEL_3; - } - } - *(_DWORD *)____lc_codepage_func = setlocale_codepage_hack; - return setlocale_codepage_hack(); -} -// 76A114: using guessed type int msvcrt__lc_codepage; - -//----- (0046D4B0) -------------------------------------------------------- -int __cdecl __mingwthr_key_dtor(int a1, int a2) -{ - if ( a2 ) - return ___w64_mingwthr_add_key_dtor(a1, a2); - else - return 0; -} - -//----- (0046D4D0) -------------------------------------------------------- -int __cdecl _txnal_cow_string_D1() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046D500) -------------------------------------------------------- -void __cdecl __noreturn _txnal_cow_string_c_str() -{ - JUMPOUT(0); -} -// 46D504: control flows out of bounds to 0 - -//----- (0046D510) -------------------------------------------------------- -void __cdecl __noreturn _txnal_sso_string_c_str() -{ - JUMPOUT(0); -} -// 46D514: control flows out of bounds to 0 - -//----- (0046D520) -------------------------------------------------------- -char *__cdecl _txnal_logic_error_get_msg(char *a1) -{ - return a1 + 4; -} - -//----- (0046D530) -------------------------------------------------------- -void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *Block) -{ - int v1; // eax - int v2[3]; // [esp+1Fh] [ebp-Dh] BYREF - - if ( !_CRT_MT ) - { - v1 = *((_DWORD *)Block + 2); - *((_DWORD *)Block + 2) = v1 - 1; - if ( v1 > 0 ) - return; -LABEL_5: - std::string::_Rep::_M_destroy((void *)Block, (int)v2); - return; - } - if ( _InterlockedExchangeAdd(Block + 2, 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; -// 46D530: using guessed type int var_D[3]; - -//----- (0046D580) -------------------------------------------------------- -char *__cdecl _txnal_runtime_error_get_msg(char *a1) -{ - return a1 + 4; -} - -//----- (0046D590) -------------------------------------------------------- -void __cdecl _txnal_cow_string_C1_for_exceptions(struct _Unwind_Exception **a1) -{ - int v1; // eax - int v2; // ecx - int lpuexcpt; // [esp+14h] [ebp-48h] - struct _Unwind_Exception *lpuexcpta; // [esp+14h] [ebp-48h] - - lpuexcpt = 1; - while ( (unsigned __int8)MEMORY[0]() ) - ++lpuexcpt; - v1 = MEMORY[0](lpuexcpt + 12); - v2 = lpuexcpt; - *(_DWORD *)(v1 + 8) = 0; - v1 += 12; - *(_DWORD *)(v1 - 8) = lpuexcpt - 1; - *(_DWORD *)(v1 - 12) = lpuexcpt - 1; - lpuexcpta = (struct _Unwind_Exception *)v1; - MEMORY[0](v2); - *a1 = lpuexcpta; -} - -//----- (0046D6B0) -------------------------------------------------------- -int printf(char *a1, ...) -{ - FILE *v1; // eax - va_list va; // [esp+24h] [ebp+Ch] BYREF - - va_start(va, a1); - v1 = ___acrt_iob_func(1u); - return __mingw_vfprintf(v1, a1, (int *)va); -} - -//----- (0046D6E0) -------------------------------------------------------- -int sprintf(char *a1, char *a2, ...) -{ - va_list va; // [esp+28h] [ebp+10h] BYREF - - va_start(va, a2); - return __mingw_vsprintf((FILE *)a1, a2, (int *)va); -} - -//----- (0046D710) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1) -{ - JUMPOUT(0); -} -// 46D717: control flows out of bounds to 0 - -//----- (0046D730) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1) -{ - JUMPOUT(0); -} -// 46D737: control flows out of bounds to 0 - -//----- (0046D750) -------------------------------------------------------- -void __cdecl _ZGTtNSt11logic_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::logic_error::~logic_error(v1); -} -// 46D7E2: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 46D750: using guessed type int var_C[3]; - -//----- (0046D840) -------------------------------------------------------- -void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::logic_error::~logic_error(v1); -} -// 46D8D6: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 46D840: using guessed type int var_C[3]; - -//----- (0046D930) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 46D968: control flows out of bounds to 0 - -//----- (0046D970) -------------------------------------------------------- -int _ZGTtNSt11logic_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046D9B0) -------------------------------------------------------- -void __cdecl _ZGTtNSt11range_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_5601E8; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_55FFA4; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::range_error::~range_error(v1); -} -// 46DA49: variable 'v1' is possibly undefined -// 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 46D9B0: using guessed type int var_C[3]; - -//----- (0046DAB0) -------------------------------------------------------- -void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_5601E8; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_55FFA4; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::range_error::~range_error(v1); -} -// 46DB4D: variable 'v1' is possibly undefined -// 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 46DAB0: using guessed type int var_C[3]; - -//----- (0046DBB0) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 46DBE8: control flows out of bounds to 0 - -//----- (0046DBF0) -------------------------------------------------------- -int _ZGTtNSt11range_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046DC30) -------------------------------------------------------- -void __cdecl _ZGTtNSt12domain_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_560028; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::domain_error::~domain_error(v1); -} -// 46DCC9: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); -// 46DC30: using guessed type int var_C[3]; - -//----- (0046DD30) -------------------------------------------------------- -void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_560028; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::domain_error::~domain_error(v1); -} -// 46DDCD: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); -// 46DD30: using guessed type int var_C[3]; - -//----- (0046DE30) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 46DE68: control flows out of bounds to 0 - -//----- (0046DE70) -------------------------------------------------------- -int _ZGTtNSt12domain_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046DEB0) -------------------------------------------------------- -void __cdecl _ZGTtNSt12length_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_56003C; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::length_error::~length_error(v1); -} -// 46DF49: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); -// 46DEB0: using guessed type int var_C[3]; - -//----- (0046DFB0) -------------------------------------------------------- -void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_56003C; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::length_error::~length_error(v1); -} -// 46E04D: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); -// 46DFB0: using guessed type int var_C[3]; - -//----- (0046E0B0) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 46E0E8: control flows out of bounds to 0 - -//----- (0046E0F0) -------------------------------------------------------- -int _ZGTtNSt12length_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046E130) -------------------------------------------------------- -void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_560050; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::out_of_range::~out_of_range(v1); -} -// 46E1C9: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); -// 46E130: using guessed type int var_C[3]; - -//----- (0046E230) -------------------------------------------------------- -void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_560050; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::out_of_range::~out_of_range(v1); -} -// 46E2CD: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); -// 46E230: using guessed type int var_C[3]; - -//----- (0046E330) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 46E368: control flows out of bounds to 0 - -//----- (0046E370) -------------------------------------------------------- -int _ZGTtNSt12out_of_rangeD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046E3B0) -------------------------------------------------------- -void __cdecl _ZGTtNSt13runtime_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_5601E8; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::runtime_error::~runtime_error(v1); -} -// 46E442: variable 'v1' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 46E3B0: using guessed type int var_C[3]; - -//----- (0046E4A0) -------------------------------------------------------- -void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_5601E8; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::runtime_error::~runtime_error(v1); -} -// 46E536: variable 'v1' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 46E4A0: using guessed type int var_C[3]; - -//----- (0046E590) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 46E5C8: control flows out of bounds to 0 - -//----- (0046E5D0) -------------------------------------------------------- -int _ZGTtNSt13runtime_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046E610) -------------------------------------------------------- -void __cdecl _ZGTtNSt14overflow_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_5601E8; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_560368; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::overflow_error::~overflow_error(v1); -} -// 46E6A9: variable 'v1' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); -// 46E610: using guessed type int var_C[3]; - -//----- (0046E710) -------------------------------------------------------- -void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_5601E8; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_560368; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::overflow_error::~overflow_error(v1); -} -// 46E7AD: variable 'v1' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); -// 46E710: using guessed type int var_C[3]; - -//----- (0046E810) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 46E848: control flows out of bounds to 0 - -//----- (0046E850) -------------------------------------------------------- -int _ZGTtNSt14overflow_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046E890) -------------------------------------------------------- -void __cdecl _ZGTtNSt15underflow_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_5601E8; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_56059C; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::underflow_error::~underflow_error(v1); -} -// 46E929: variable 'v1' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); -// 46E890: using guessed type int var_C[3]; - -//----- (0046E990) -------------------------------------------------------- -void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_5601E8; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_56059C; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::underflow_error::~underflow_error(v1); -} -// 46EA2D: variable 'v1' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); -// 46E990: using guessed type int var_C[3]; - -//----- (0046EA90) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 46EAC8: control flows out of bounds to 0 - -//----- (0046EAD0) -------------------------------------------------------- -int _ZGTtNSt15underflow_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046EB10) -------------------------------------------------------- -void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_5605D0; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::invalid_argument::~invalid_argument(v1); -} -// 46EBA9: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); -// 46EB10: using guessed type int var_C[3]; - -//----- (0046EC10) -------------------------------------------------------- -void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_55FF90; - std::string::string(v3, (char *)byte_55A2A0, (int)v2); - *(_DWORD *)&v2[1] = &off_5605D0; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::invalid_argument::~invalid_argument(v1); -} -// 46ECAD: variable 'v1' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); -// 46EC10: using guessed type int var_C[3]; - -//----- (0046ED10) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 46ED48: control flows out of bounds to 0 - -//----- (0046ED50) -------------------------------------------------------- -int _ZGTtNSt16invalid_argumentD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (0046ED90) -------------------------------------------------------- -int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@) -{ - int result; // eax - int *v7; // [esp+1Ch] [ebp-10h] BYREF - - v7 = *a3; - if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2) ) - v7 = (int *)*v7; - result = (*(int (__thiscall **)(int, int, int **, int))(*(_DWORD *)a1 + 16))(a1, a2, &v7, 1); - if ( (_BYTE)result ) - *a3 = v7; - return result; -} - -//----- (0046EDF0) -------------------------------------------------------- -char *__usercall parse_lsda_header@(int a1@, char *a2@, int a3@) -{ - int RegionStart; // eax - char v7; // dl - int *v8; // ebp - char v9; // al - char *v10; // esi - int v11; // edi - int v12; // ecx - char v13; // dl - int v14; // eax - char *v15; // edx - int v16; // edi - int v17; // ecx - char v18; // si - int v19; // eax - char *result; // eax - char v21; // di - int *v22; // eax - char *encoded_value_with_base; // ebp - char v24; // al - - RegionStart = 0; - if ( a1 ) - RegionStart = _Unwind_GetRegionStart(); - *(_DWORD *)a3 = RegionStart; - v7 = *a2; - v8 = (int *)(a2 + 1); - if ( *a2 == -1 ) - { - *(_DWORD *)(a3 + 4) = RegionStart; - v9 = *(_BYTE *)v8; - v10 = a2 + 2; - *(_BYTE *)(a3 + 20) = *(_BYTE *)v8; - if ( v9 != -1 ) - goto LABEL_5; -LABEL_12: - *(_DWORD *)(a3 + 12) = 0; - goto LABEL_8; - } - v21 = *a2; - v22 = (int *)base_of_encoded_value(v7); - encoded_value_with_base = read_encoded_value_with_base(v21, v22, v8, (int *)(a3 + 4)); - v24 = *encoded_value_with_base; - v10 = encoded_value_with_base + 1; - *(_BYTE *)(a3 + 20) = *encoded_value_with_base; - if ( v24 == -1 ) - goto LABEL_12; -LABEL_5: - v11 = 0; - v12 = 0; - do - { - v13 = *v10++; - v14 = (v13 & 0x7F) << v12; - v12 += 7; - v11 |= v14; - } - while ( v13 < 0 ); - *(_DWORD *)(a3 + 12) = &v10[v11]; -LABEL_8: - v15 = v10 + 1; - v16 = 0; - v17 = 0; - *(_BYTE *)(a3 + 21) = *v10; - do - { - v18 = *v15++; - v19 = (v18 & 0x7F) << v17; - v17 += 7; - v16 |= v19; - } - while ( v18 < 0 ); - result = v15; - *(_DWORD *)(a3 + 16) = &v15[v16]; - return result; -} - -//----- (0046EED0) -------------------------------------------------------- -int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4) -{ - char *v6; // ebx - int v7; // ebp - int v8; // ecx - char v9; // dl - int v10; // eax - char v11; // al - unsigned __int8 v12; // dl - int v13; // ecx - int result; // eax - int *v15; // [esp+1Ch] [ebp-30h] BYREF - int v16[8]; // [esp+2Ch] [ebp-20h] BYREF - - v15 = a3; - v6 = (char *)(*(_DWORD *)(a1 + 12) + ~a4); - while ( 1 ) - { - v7 = 0; - v8 = 0; - do - { - v9 = *v6++; - v10 = (v9 & 0x7F) << v8; - v8 += 7; - v7 |= v10; - } - while ( v9 < 0 ); - if ( !v7 ) - return 0; - v11 = *(_BYTE *)(a1 + 20); - if ( v11 == -1 ) - { - v13 = 0; - } - else - { - v12 = v11 & 7; - if ( (v11 & 7) == 2 ) - { - v13 = -2 * v7; - } - else - { - if ( v12 <= 2u ) - { - if ( v12 ) -LABEL_18: - abort(); - } - else if ( v12 != 3 ) - { - if ( v12 != 4 ) - goto LABEL_18; - v13 = -8 * v7; - goto LABEL_11; - } - v13 = -4 * v7; - } - } -LABEL_11: - read_encoded_value_with_base(v11, *(int **)(a1 + 8), (int *)(*(_DWORD *)(a1 + 12) + v13), v16); - result = get_adjusted_ptr(v16[0], a2, &v15); - if ( (_BYTE)result ) - return result; - } -} -// 46EED0: using guessed type int var_20[8]; - -//----- (0046EFB0) -------------------------------------------------------- -int __usercall base_of_encoded_value@(char a1@) -{ - unsigned __int8 v1; // dl - - if ( a1 == -1 ) - return 0; - v1 = a1 & 0x70; - if ( (a1 & 0x70) == 48 ) - return _Unwind_GetDataRelBase(); - if ( v1 <= 0x30u ) - { - if ( v1 == 32 ) - return _Unwind_GetTextRelBase(); - if ( v1 > 0x20u || (a1 & 0x60) != 0 ) -LABEL_11: - abort(); - return 0; - } - if ( v1 != 64 ) - { - if ( v1 != 80 ) - goto LABEL_11; - return 0; - } - return _Unwind_GetRegionStart(); -} - -//----- (0046F030) -------------------------------------------------------- -void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, void (**a2)(void)) -{ - void (*v2)(void); // edx - - if ( (unsigned int)a1 > _URC_FOREIGN_EXCEPTION_CAUGHT ) - __cxxabiv1::__terminate(*(a2 - 9)); - if ( !_InterlockedSub((volatile signed __int32 *)a2 - 16, 1u) ) - { - v2 = *(a2 - 11); - if ( v2 ) - v2(); - __cxa_free_exception(a2 + 8); - } -} - -//----- (0046F080) -------------------------------------------------------- -char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4) -{ - int *v4; // esi - int v6; // edx - char *result; // eax - _DWORD *v8; // eax - int v9; // edx - int v10; // ecx - int v11; // ebp - char v12; // dl - int v13; // edi - unsigned int v14; // ecx - int v15; // ebp - char v16; // dl - int v17; // edi - char v18; // di - - v4 = a3; - if ( a1 == 80 ) - { - v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); - v9 = *v8; - result = (char *)(v8 + 1); - *a4 = v9; - } - else - { - switch ( a1 & 0xF ) - { - case 0: - case 3: - case 0xB: - v6 = *a3; - result = (char *)(a3 + 1); - goto LABEL_4; - case 1: - result = (char *)a3; - v10 = 0; - v11 = 0; - do - { - v12 = *result++; - v13 = (v12 & 0x7F) << v10; - v10 += 7; - v11 |= v13; - } - while ( v12 < 0 ); - v6 = v11; - goto LABEL_4; - case 2: - v6 = *(unsigned __int16 *)a3; - result = (char *)a3 + 2; - goto LABEL_4; - case 4: - case 0xC: - v6 = *a3; - result = (char *)(a3 + 2); - goto LABEL_4; - case 9: - result = (char *)a3; - v14 = 0; - v15 = 0; - do - { - v16 = *result++; - v17 = (v16 & 0x7F) << v14; - v14 += 7; - v15 |= v17; - } - while ( v16 < 0 ); - v18 = v16; - v6 = v15; - if ( v14 > 0x1F || (v18 & 0x40) == 0 ) - goto LABEL_4; - v6 = (-1 << v14) | v15; - goto LABEL_5; - case 0xA: - v6 = *(__int16 *)a3; - result = (char *)a3 + 2; -LABEL_4: - if ( !v6 ) - goto LABEL_8; -LABEL_5: - if ( (a1 & 0x70) != 16 ) - v4 = a2; - v6 += (int)v4; - if ( a1 < 0 ) - *a4 = *(_DWORD *)v6; - else -LABEL_8: - *a4 = v6; - break; - default: - abort(); - } - } - return result; -} - -//----- (0046F1D0) -------------------------------------------------------- -void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)) -{ - a1(); - abort(); -} - -//----- (0046F280) -------------------------------------------------------- -void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)) -{ - a1(); - std::terminate(); -} - -//----- (0046F290) -------------------------------------------------------- -void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *Block) -{ - operator delete(Block); -} - -//----- (0046F2C0) -------------------------------------------------------- -void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1) -{ - std::type_info *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_55F0D4; - std::type_info::~type_info(Block); - operator delete(a1); -} -// 46F2CC: variable 'Block' is possibly undefined -// 55F0D4: using guessed type void (__cdecl *off_55F0D4)(__cxxabiv1::__class_type_info *__hidden this); - -//----- (0046F2F0) -------------------------------------------------------- -void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_55F0D4; - std::type_info::~type_info(this); -} -// 46F2F0: variable 'v1' is possibly undefined -// 55F0D4: using guessed type void (__cdecl *off_55F0D4)(__cxxabiv1::__class_type_info *__hidden this); - -//----- (0046F300) -------------------------------------------------------- -void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *Block) -{ - operator delete(Block); -} - -//----- (0046F330) -------------------------------------------------------- -void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1) -{ - __cxxabiv1::__class_type_info *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_55F114; - __cxxabiv1::__class_type_info::~__class_type_info(Block); - operator delete(a1); -} -// 46F33C: variable 'Block' is possibly undefined -// 55F114: using guessed type void (__cdecl *off_55F114)(__cxxabiv1::__si_class_type_info *__hidden this); - -//----- (0046F360) -------------------------------------------------------- -void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_55F114; - __cxxabiv1::__class_type_info::~__class_type_info(this); -} -// 46F360: variable 'v1' is possibly undefined -// 55F114: using guessed type void (__cdecl *off_55F114)(__cxxabiv1::__si_class_type_info *__hidden this); - -//----- (0046F370) -------------------------------------------------------- -void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1) -{ - __cxxabiv1::__class_type_info *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_55F140; - __cxxabiv1::__class_type_info::~__class_type_info(Block); - operator delete(a1); -} -// 46F37C: variable 'Block' is possibly undefined -// 55F140: using guessed type void (__cdecl *off_55F140)(__cxxabiv1::__vmi_class_type_info *__hidden this); - -//----- (0046F3A0) -------------------------------------------------------- -void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_55F140; - __cxxabiv1::__class_type_info::~__class_type_info(this); -} -// 46F3A0: variable 'v1' is possibly undefined -// 55F140: using guessed type void (__cdecl *off_55F140)(__cxxabiv1::__vmi_class_type_info *__hidden this); - -//----- (0046F3B0) -------------------------------------------------------- -_DWORD *__cdecl `anonymous namespace'::get_locale_mutex() -{ - if ( !(_BYTE)`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex - && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex) ) - { - if ( _CRT_MT ) - __gthr_win32_mutex_init_function(`anonymous namespace'::get_locale_mutex(void)::locale_mutex); - __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex); - atexit(__tcf_0_6); - } - return `anonymous namespace'::get_locale_mutex(void)::locale_mutex; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53FCC0: using guessed type _DWORD `anonymous namespace'::get_locale_mutex(void)::locale_mutex[2]; - -//----- (0046F480) -------------------------------------------------------- -void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1) -{ - std::_V2::error_category *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_55F16C; - std::_V2::error_category::~error_category(Block); - operator delete(a1); -} -// 46F48C: variable 'Block' is possibly undefined -// 55F16C: using guessed type void (__cdecl *off_55F16C)(_anonymous_namespace_::io_error_category *__hidden this); - -//----- (0046F4A0) -------------------------------------------------------- -void __cdecl `anonymous namespace'::io_error_category::~io_error_category( - _anonymous_namespace_::io_error_category *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_55F16C; - std::_V2::error_category::~error_category(this); -} -// 46F4A0: variable 'v1' is possibly undefined -// 55F16C: using guessed type void (__cdecl *off_55F16C)(_anonymous_namespace_::io_error_category *__hidden this); - -//----- (0046F4B0) -------------------------------------------------------- -void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *Block) -{ - operator delete(Block); -} - -//----- (0046F4D0) -------------------------------------------------------- -void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *Block) -{ - operator delete(Block); -} - -//----- (0046F4F0) -------------------------------------------------------- -void __usercall `anonymous namespace'::pool::free(int a1@) -{ - int v1; // esi - int *v2; // eax - _DWORD *v3; // edi - int v4; // ecx - int *v5; // ebx - int *v6; // edx - int *v7; // ebp - int v8; // edx - int v9; // eax - _DWORD *exception; // eax - int v12; // [esp+18h] [ebp-54h] - - v1 = _CRT_MT; - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_lock((int)&`anonymous namespace'::emergency_pool) ) - __gnu_cxx::__throw_concurrence_lock_error(); - v1 = _CRT_MT; - } - v2 = (int *)dword_53E4F8; - v3 = (_DWORD *)(a1 - 16); - if ( !dword_53E4F8 - || (v4 = *(_DWORD *)(a1 - 16), v5 = (_DWORD *)((char *)v3 + v4), v12 = v4, dword_53E4F8 > (unsigned int)v3 + v4) ) - { - *(_DWORD *)(a1 - 12) = dword_53E4F8; - dword_53E4F8 = a1 - 16; - goto LABEL_18; - } - v6 = *(int **)(dword_53E4F8 + 4); - if ( (_DWORD *)dword_53E4F8 == (_DWORD *)((char *)v3 + v4) ) - { - *(_DWORD *)(a1 - 16) = *(_DWORD *)dword_53E4F8 + v4; - *(_DWORD *)(a1 - 12) = v6; - dword_53E4F8 = a1 - 16; -LABEL_18: - if ( !v1 ) - return; - goto LABEL_15; - } - v7 = &dword_53E4F8; - if ( v6 ) - { - while ( 1 ) - { - if ( v5 >= v6 ) - { - if ( v5 == v6 ) - { - v12 = *v5 + v4; - v2[1] = v5[1]; - } - v2 = (int *)*v7; - goto LABEL_13; - } - v7 = v2 + 1; - if ( !v6[1] ) - break; - v2 = v6; - v6 = (int *)v6[1]; - } - v2 = (int *)v2[1]; - v8 = *v2; - if ( v3 != (int *)((char *)v2 + *v2) ) - goto LABEL_14; - goto LABEL_22; - } -LABEL_13: - v8 = *v2; - if ( v3 == (int *)((char *)v2 + *v2) ) - { -LABEL_22: - *v2 = v12 + v8; - goto LABEL_18; - } -LABEL_14: - *(_DWORD *)(a1 - 12) = v2[1]; - v9 = *v7; - *(_DWORD *)(a1 - 16) = v12; - *(_DWORD *)(v9 + 4) = v3; - if ( !v1 ) - return; -LABEL_15: - if ( __gthr_win32_mutex_unlock((int)&`anonymous namespace'::emergency_pool) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_55F35C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } -} -// 53E1E4: using guessed type int _CRT_MT; -// 53E4F8: using guessed type int dword_53E4F8; -// 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (0046F6C0) -------------------------------------------------------- -void __spoils `anonymous namespace'::pool::allocate() -{ - unsigned int v0; // eax - unsigned int v1; // eax - int *v2; // ebx - unsigned int v3; // ecx - unsigned int *v4; // edx - unsigned int *v5; // esi - unsigned int v6; // esi - unsigned int *v7; // ecx - unsigned int v8; // eax - _DWORD *exception; // eax - int v10; // [esp+18h] [ebp-44h] - unsigned int *v11; // [esp+18h] [ebp-44h] - - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_lock((int)&`anonymous namespace'::emergency_pool) ) - __gnu_cxx::__throw_concurrence_lock_error(); - v8 = v10 + 16; - v11 = (unsigned int *)dword_53E4F8; - if ( v8 < 8 ) - v8 = 8; - v1 = (v8 + 15) & 0xFFFFFFF0; - if ( !dword_53E4F8 ) - { -LABEL_10: - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_unlock((int)&`anonymous namespace'::emergency_pool) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_55F35C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - } - return; - } -LABEL_5: - v2 = &dword_53E4F8; - while ( 1 ) - { - v3 = *v11; - v4 = v11; - v5 = (unsigned int *)v11[1]; - v11 = v5; - if ( v3 >= v1 ) - break; - v2 = (int *)(v4 + 1); - if ( !v5 ) - goto LABEL_10; - } - v6 = v3 - v1; - if ( v3 - v1 > 7 ) - { - v7 = (unsigned int *)((char *)v4 + v1); - *v7 = v6; - v7[1] = (unsigned int)v11; - *(_DWORD *)*v2 = v1; - *v2 = (int)v4 + v1; - } - else - { - *v4 = v3; - *v2 = (int)v11; - } - goto LABEL_10; - } - v0 = v10 + 16; - v11 = (unsigned int *)dword_53E4F8; - if ( v0 < 8 ) - v0 = 8; - v1 = (v0 + 15) & 0xFFFFFFF0; - if ( dword_53E4F8 ) - goto LABEL_5; -} -// 46F713: variable 'v10' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53E4F8: using guessed type int dword_53E4F8; -// 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (0046F870) -------------------------------------------------------- -HANDLE `anonymous namespace'::init() -{ - HANDLE result; // eax - - result = (HANDLE)_CRT_MT; - if ( _CRT_MT ) - result = __gthr_win32_recursive_mutex_init_function(`anonymous namespace'::fake_mutex); - `anonymous namespace'::static_mutex = (int)`anonymous namespace'::fake_mutex; - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53E3D8: using guessed type _DWORD `anonymous namespace'::fake_mutex[4]; -// 53F0C0: using guessed type int `anonymous namespace'::static_mutex; - -//----- (0046F8B0) -------------------------------------------------------- -#error "46F9B2: call analysis failed (funcsize=68)" - -//----- (0046F9B8) -------------------------------------------------------- -#error "46FAC5: call analysis failed (funcsize=71)" - -//----- (0046FACC) -------------------------------------------------------- -#error "46FBCE: call analysis failed (funcsize=68)" - -//----- (0046FBD4) -------------------------------------------------------- -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // edx - volatile signed __int32 *v5; // [esp+5Ch] [ebp-Ch] BYREF - - v5 = 0; - *this = 0; - this[1] = 0; - v2 = operator new(0x10u); - v2[1] = 1; - v2[2] = 1; - v2[3] = a2; - *v2 = &off_5603D0; - *this = a2; - v3 = (volatile signed __int32 *)this[1]; - this[1] = v2; - v5 = v3; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v5); -} -// 5603D0: using guessed type int (*off_5603D0)(); - -//----- (0046FCD4) -------------------------------------------------------- -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // edx - volatile signed __int32 *v5; // [esp+5Ch] [ebp-Ch] BYREF - - v5 = 0; - *this = 0; - this[1] = 0; - v2 = operator new(0x10u); - v2[1] = 1; - v2[2] = 1; - v2[3] = a2; - *v2 = &off_5603D0; - *this = a2; - v3 = (volatile signed __int32 *)this[1]; - this[1] = v2; - v5 = v3; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v5); -} -// 5603D0: using guessed type int (*off_5603D0)(); - -//----- (0046FDD4) -------------------------------------------------------- -void __thiscall zcc::shared_ptr,std::allocator>>::shared_ptr( - _DWORD *this, - int a2) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // edx - volatile signed __int32 *v5; // [esp+5Ch] [ebp-Ch] BYREF - - v5 = 0; - *this = 0; - this[1] = 0; - v2 = operator new(0x10u); - v2[1] = 1; - v2[2] = 1; - v2[3] = a2; - *v2 = &off_560408; - *this = a2; - v3 = (volatile signed __int32 *)this[1]; - this[1] = v2; - v5 = v3; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v5); -} -// 560408: using guessed type int (*off_560408)(); - -//----- (0046FED4) -------------------------------------------------------- -void __fastcall WXML::NameAllocator::~NameAllocator(int a1) -{ - std::string::_M_dispose((void **)(a1 + 28)); - std::string::_M_dispose((void **)(a1 + 4)); -} - -//----- (0046FF00) -------------------------------------------------------- -int __fastcall WXML::DOMLib::Token::ToAttrContent[abi:cxx11](int a1) -{ - char v1; // al - char v2; // cl - int v3; // eax - unsigned __int8 v4; // dl - _BYTE *v6; // [esp+1Ch] [ebp-8Ch] - int v7; // [esp+20h] [ebp-88h] - int v8; // [esp+24h] [ebp-84h] - void *v10[2]; // [esp+68h] [ebp-40h] BYREF - char v11[16]; // [esp+70h] [ebp-38h] BYREF - unsigned __int8 Src[30]; // [esp+80h] [ebp-28h] BYREF - size_t Size; // [esp+9Eh] [ebp-Ah] BYREF - - if ( !*(_DWORD *)a1 || *(_BYTE *)(a1 + 84) ) - return a1 + 88; - // *(_DWORD *)(a1 + 16) pos - v6 = (_BYTE *)(**(_DWORD **)a1 + *(_DWORD *)(a1 + 16)); - // size - v8 = *(_DWORD *)(a1 + 20); - v7 = *v6 == '\''/*39*/ || *v6 == '"'/*34*/; - if ( v8 > 0 ) - { - v1 = v6[v8 - 1]; - if ( v1 == '"'/*34*/ || v1 == '\''/*39*/ ) - --v8; - } - v2 = 0; - v3 = 0; - while ( v8 > v7 ) - { - v4 = v6[v7]; - if ( v4 == '\\'/*92*/ ) - { - if ( !v2 ) - { - v2 = 1; - goto LABEL_22; - } - } - else if ( v2 ) - { - switch ( v4 ) - { - case 'n': - Src[v3] = 10; // \n - goto LABEL_20; - case 't': - Src[v3] = 9; // \t - goto LABEL_20; - case 'r': - Src[v3] = 13; // \r - goto LABEL_20; - } - } - Src[v3] = v4; -LABEL_20: - ++v3; - v2 = 0; - Src[v3] = 0; - if ( v3 == 30 ) // 达到30个字符 - { - v10[0] = v11; - std::string::_M_construct(v10, Src, (size_t)&Size); - std::string::append((_DWORD *)(a1 + 88), (int)v10); - std::string::_M_dispose(v10); - Src[0] = 0; - v2 = 0; - v3 = 0; - } -LABEL_22: - ++v7; - } - if ( v3 ) - { - v10[0] = v11; - std::string::_M_construct(v10, Src, (size_t)&Src[v3]); - std::string::append((_DWORD *)(a1 + 88), (int)v10); - std::string::_M_dispose(v10); - } - *(_BYTE *)(a1 + 84) = 1; - return a1 + 88; -} -// 46FF00: using guessed type unsigned __int8 Src[30]; - -//----- (00470100) -------------------------------------------------------- -int __cdecl WXML::DOMLib::Token::GetTemplateContent(int *a1, unsigned __int8 **a2) -{ - int v2; // edi - int v3; // eax - signed int v4; // edx - int v5; // ebx - int v6; // ecx - signed int v7; // eax - int v10; // [esp+1Ch] [ebp-3Ch] - void *v11[12]; // [esp+28h] [ebp-30h] BYREF - - v2 = 0; - v10 = a1[1]; // a1字符串长度 - v3 = v10 - 1; - // a1 std::string地址(内容,长度) - // *a1 std::string内容的地址 - while ( v2 < v10 && *(_BYTE *)(*a1 + v2) == ' '/*32*/ ) - ++v2; - while ( v3 >= 0 && *(_BYTE *)(*a1 + v3) == ' '/*32*/ ) - --v3; - v4 = v2 + 2; - if ( v2 + 2 >= v10 ) - return -1; - v5 = *a1; - v6 = -1; - if ( *(_BYTE *)(*a1 + v2) != '{'/*123*/ ) - return v6; - if ( *(_BYTE *)(v5 + v2 + 1) != '{'/*123*/ || v3 <= 1 ) - return -1; - if ( *(_BYTE *)(v5 + v3) == '}'/*125*/ && *(_BYTE *)(v5 + v3 - 1) == '}'/*125*/ ) - { - v7 = v3 - 2; - do - { - if ( *(_BYTE *)(v5 + v4) != ' '/*32*/ ) - break; - ++v4; - } - while ( v10 != v4 ); - do - { - if ( *(_BYTE *)(v5 + v7) != ' '/*32*/ ) - break; - } - while ( v7-- != 0 ); - v6 = -1; - if ( v4 < v7 ) - { - std::string::substr(v11, a1, v4, v7 - v4 + 1); - std::string::operator=(a2, (int)v11); - std::string::_M_dispose(v11); - return 0; - } - } - return v6; -} - -//----- (004701C0) -------------------------------------------------------- -char __cdecl WXML::DOMLib::Token::IsValidVariableName(char **a1) -{ - char v1; // al - unsigned __int8 v2; // dl - char result; // al - unsigned int i; // edx - char v5; // al - bool v6; // cc - bool v7; // zf - - v1 = **a1; // v1 字符串缓冲区第一个字符 - if ( v1 == '_'/*95*/ || v1 == '$'/*36*/ || (v2 = (v1 & 0xDF) - 'A'/*65*/, result = 0, v2 <= 0x19u) ) // 0x19u 25 - { - for ( i = 1; ; ++i ) - { - // a1[1] a1字符长度 - if ( (unsigned int)a1[1] <= i ) - return 1; - v5 = (*a1)[i]; - if ( v5 <= '`'/*96*/ ) - { - if ( v5 > '@'/*64*/ ) - { - if ( v5 <= 'Z'/*90*/ ) - continue; - v7 = v5 == '_'/*95*/; - goto LABEL_13; - } - if ( v5 <= '/'/*47*/ ) - { - v7 = v5 == '$'/*36*/; -LABEL_13: - if ( !v7 ) - return 0; - continue; - } - v6 = v5 <= '9'/*57*/; - } - else - { - v6 = v5 <= 'z'/*122*/; - } - if ( !v6 ) - return 0; - } - } - return result; -} - -//----- (0047021C) -------------------------------------------------------- -bool __userpurge WXML::DOMLib::Token::IsMatch@(int a1@, WXML::DOMLib::Token *this, const char *a3) -{ - bool result; // al - int v4; // edi - int i; // eax - - result = 0; - if ( *(_DWORD *)a1 ) - { - // a1.offset_20 size - v4 = *(_DWORD *)(a1 + 20); - for ( i = 0; ; ++i ) - { - if ( v4 <= i ) - return *((_BYTE *)this + v4) == 0; - // a1.offset_16 pos - if ( *(_BYTE *)(**(_DWORD **)a1 + *(_DWORD *)(a1 + 16) + i) != *((_BYTE *)this + i) ) - break; - } - return 0; - } - return result; -} - -//----- (00470258) -------------------------------------------------------- -unsigned __int8 **__fastcall WXML::DOMLib::Token::ToString[abi:cxx11](int a1) -{ - unsigned __int8 **v1; // edi - void *v4[12]; // [esp+18h] [ebp-30h] BYREF - - // offset 32 - v1 = (unsigned __int8 **)(a1 + 32); - // offset 28 - if ( *(_DWORD *)a1 && !*(_BYTE *)(a1 + 28) ) - { - std::string::substr(v4, *(_DWORD **)a1, *(_DWORD *)(a1 + 16), *(_DWORD *)(a1 + 20)); - std::string::operator=(v1, (int)v4); - std::string::_M_dispose(v4); - *(_BYTE *)(a1 + 28) = 1; - } - return v1; -} - -//----- (004702B0) -------------------------------------------------------- -_DWORD *__thiscall WXML::DOMLib::Token::Token(_DWORD *this, int a2) -{ - int v3; // ecx - - *this = *(_DWORD *)a2; - v3 = *(_DWORD *)(a2 + 4); - this[1] = v3; - if ( v3 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v3); - this[2] = *(_DWORD *)(a2 + 8); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - this[6] = *(_DWORD *)(a2 + 24); - *((_BYTE *)this + 28) = *(_BYTE *)(a2 + 28); - std::string::basic_string(this + 8, (_DWORD *)(a2 + 32)); - this[14] = *(_DWORD *)(a2 + 56); - std::string::basic_string(this + 15, (_DWORD *)(a2 + 60)); - *((_BYTE *)this + 84) = *(_BYTE *)(a2 + 84); - return std::string::basic_string(this + 22, (_DWORD *)(a2 + 88)); -} - -//----- (00470334) -------------------------------------------------------- -void __userpurge WXML::DOMLib::Token::Token(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3) -{ - int v4; // ecx - - *(_DWORD *)a1 = *(_DWORD *)this; - v4 = *((_DWORD *)this + 1); - *(_DWORD *)(a1 + 4) = v4; - if ( v4 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v4); - *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); - *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); - *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); - *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); - *(_DWORD *)(a1 + 24) = *((_DWORD *)this + 6); - *(_BYTE *)(a1 + 28) = *((_BYTE *)this + 28); - std::string::basic_string((char *)(a1 + 32), (int)this + 32); - *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); - std::string::basic_string((char *)(a1 + 60), (int)this + 60); - *(_BYTE *)(a1 + 84) = *((_BYTE *)this + 84); - std::string::basic_string((char *)(a1 + 88), (int)this + 88); -} - -//----- (00470480) -------------------------------------------------------- -void __userpurge WXML::DOMLib::Token::Token(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3) -{ - int v4; // ecx - - *(_DWORD *)a1 = *(_DWORD *)this; - v4 = *((_DWORD *)this + 1); - *(_DWORD *)(a1 + 4) = v4; - if ( v4 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v4); - *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); - *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); - *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); - *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); - *(_DWORD *)(a1 + 24) = *((_DWORD *)this + 6); // - *(_BYTE *)(a1 + 28) = *((_BYTE *)this + 28); - std::string::basic_string((char *)(a1 + 32), (int)this + 32); - *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); - std::string::basic_string((char *)(a1 + 60), (int)this + 60); - *(_BYTE *)(a1 + 84) = *((_BYTE *)this + 84); - std::string::basic_string((char *)(a1 + 88), (int)this + 88); -} - -//----- (004705CC) -------------------------------------------------------- -void __fastcall WXML::DOMLib::Token::~Token(int a1) -{ - std::string::_M_dispose((void **)(a1 + 88)); - std::string::_M_dispose((void **)(a1 + 60)); - std::string::_M_dispose((void **)(a1 + 32)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); -} - -//----- (004705F8) -------------------------------------------------------- -#error "4709CA: call analysis failed (funcsize=214)" - -//----- (00470A34) -------------------------------------------------------- -void __fastcall WXML::DOMLib::Parser::~Parser(int a1) -{ - int v2; // edi - int *v3; // esi - int v4; // eax - int v5; // edx - int v6; // edx - void **v7; // esi - unsigned int v8; // edi - void *v9; // eax - int v10; // [esp+1Ch] [ebp-2Ch] - int v11; // [esp+20h] [ebp-28h] - int v12; // [esp+24h] [ebp-24h] - unsigned int v13; // [esp+28h] [ebp-20h] - int v14; // [esp+2Ch] [ebp-1Ch] - - std::string::_M_dispose((void **)(a1 + 328)); - WXML::DOMLib::Token::~Token(a1 + 216); - WXML::DOMLib::Token::~Token(a1 + 104); - std::vector::~vector((void **)(a1 + 88)); - v2 = *(_DWORD *)(a1 + 72); - v12 = *(_DWORD *)(a1 + 64); - v11 = *(_DWORD *)(a1 + 76); - v14 = *(_DWORD *)(a1 + 68); - v3 = (int *)(v14 + 4); - v13 = *(_DWORD *)(a1 + 84); - v4 = *(_DWORD *)(a1 + 56); - while ( v13 > (unsigned int)v3 ) - { - v5 = *v3; - v10 = v4; - ++v3; - std::_Destroy_aux::__destroy *>(v5, v5, v5 + 512); - v4 = v10; - } - if ( v14 == v13 ) - { - std::_Destroy_aux::__destroy *>(v13, v4, v2); - } - else - { - std::_Destroy_aux::__destroy *>(v13, v4, v12); - std::_Destroy_aux::__destroy *>(v6, v11, v2); - } - if ( *(_DWORD *)(a1 + 48) ) - { - v7 = *(void ***)(a1 + 68); - v8 = *(_DWORD *)(a1 + 84) + 4; - while ( v8 > (unsigned int)v7 ) - { - v9 = *v7++; - operator delete(v9); - } - operator delete(*(void **)(a1 + 48)); - } - std::deque::~deque(a1 + 8); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); -} -// 470AC8: variable 'v6' is possibly undefined - -//----- (00470B1C) -------------------------------------------------------- -char __thiscall WXML::DOMLib::WXMLDom::IfHasItsElse(_DWORD *this, signed int a2, int *a3) -{ - BOOL v3; // eax - BOOL v4; // eax - int v5; // eax - unsigned int i; // eax - int v7; // edx - BOOL v8; // eax - int v10; // [esp+18h] [ebp-80h] - signed int v11; // [esp+1Ch] [ebp-7Ch] - int v12; // [esp+1Ch] [ebp-7Ch] - _DWORD *v13; // [esp+20h] [ebp-78h] - bool v14; // [esp+20h] [ebp-78h] - _DWORD *v15; // [esp+20h] [ebp-78h] - unsigned int v16; // [esp+20h] [ebp-78h] - _DWORD *v17; // [esp+24h] [ebp-74h] - bool v18; // [esp+24h] [ebp-74h] - _DWORD *v19; // [esp+24h] [ebp-74h] - _DWORD *v20; // [esp+24h] [ebp-74h] - _DWORD *v21; // [esp+24h] [ebp-74h] - void *v23[6]; // [esp+60h] [ebp-38h] BYREF - void *v24[8]; // [esp+78h] [ebp-20h] BYREF - - // this[18] -> this->offset_72 - v17 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); - std::string::basic_string(v23, "wx:else"); - v3 = std::map::count(v17, (int)v23); - v18 = 1; - if ( !v3 ) - { - v19 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); - std::string::basic_string(v24, "wx:elif"); - v18 = std::map::count(v19, (int)v24); - std::string::_M_dispose(v24); - } - std::string::_M_dispose(v23); - if ( v18 ) - return 1; - v13 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); - std::string::basic_string(v23, "wx:if"); - v4 = std::map::count(v13, (int)v23); - v14 = 0; - if ( !v4 ) - { - // _DWORD *this, - // this[18] -> this.offset_(18 * 4) -> this->offset_72 - // a2 是 int,那么8可能是单位数据的大小 - v15 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); - std::string::basic_string(v24, "wx-if"); - v14 = !std::map::count(v15, (int)v24); - std::string::_M_dispose(v24); - } - std::string::_M_dispose(v23); - if ( !v14 ) - { - v11 = a2 - 1; - // this->offset_72[a2] - v5 = *(_DWORD *)(this[18] + 8 * a2); - if ( *(_DWORD *)(v5 + 72) == *(_DWORD *)(v5 + 76) ) - { - for ( i = a2 + 1; ; i = v16 + 1 ) - { - v16 = i; - v7 = this[18]; // this->offset_72 - // (this[19] - v7) / 8 - // 8 是单位大小,除以8就是单位的数量 - // this[18]是起点,this[19]是终点 - if ( (this[19] - v7) >> 3 <= i ) - break; - v10 = 8 * i; - // this->offset_72[i].offset_48 - v20 = (_DWORD *)(*(_DWORD *)(v7 + 8 * i) + 48); - std::string::basic_string(v23, "wx:else"); - v8 = std::map::count(v20, (int)v23); - v18 = 1; - if ( !v8 ) - { - v21 = (_DWORD *)(*(_DWORD *)(this[18] + v10) + 48); - std::string::basic_string(v24, "wx:elif"); - v18 = std::map::count(v21, (int)v24); - std::string::_M_dispose(v24); - } - std::string::_M_dispose(v23); - if ( !v18 ) - break; - v12 = a3[1]; // a3.end() - if ( v12 != std::find<__gnu_cxx::__normal_iterator>,std::string>( - *a3, // start - v12, // end - // this->offset_(18 * 4) -> this->offset_72 - // this->offset_72[i] - *(_DWORD *)(this[18] + v10)) - || *(_DWORD *)(*(_DWORD *)(this[18] + v10) + 76) != *(_DWORD *)(*(_DWORD *)(this[18] + v10) + 72) ) - { - return v18; - } - v11 = v16; - } - } - while ( v11 >= a2 ) - std::vector>::_M_erase(this + 18, this[18] + 8 * v11--); - return 1; - } - return v18; -} - -//----- (00470E20) -------------------------------------------------------- -int __cdecl WXML::DOMLib::WXMLDom::ToCamelStyle(int a1, int a2) -{ - char v2; // al - char *i; // [esp+14h] [ebp-44h] - char lpuexcpt; // [esp+18h] [ebp-40h] - - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - std::string::reserve((_DWORD *)a1, *(_DWORD *)(a2 + 4)); - lpuexcpt = 0; - for ( i = *(char **)a2; ; ++i ) - { - v2 = *i; - if ( !*i ) - break; - if ( v2 > '.'/*46*/ ) - { - if ( v2 == ':'/*58*/ ) - { -LABEL_11: - lpuexcpt = 1; - continue; - } - } - else if ( v2 > ','/*44*/ ) - { - goto LABEL_11; - } - if ( (unsigned __int8)(v2 - 'a'/*97*/) <= 0x19u && lpuexcpt ) - { - std::string::push_back((_DWORD *)a1, v2 - ' '/*32*/); - lpuexcpt = 0; - } - else - { - std::string::push_back((_DWORD *)a1, *i); - } - } - return a1; -} - -//----- (00470F1C) -------------------------------------------------------- -char __fastcall WXML::DOMLib::WXMLDom::HasSpAttrPrefix(int a1) -{ - int i; // ebx - const char *v3; // edi - const char *v5; // edi - - for ( i = *(_DWORD *)(a1 + 60); i != a1 + 52; i = std::_Rb_tree_increment(i) ) - { - v3 = *(const char **)(i + 16); - if ( strncmp(v3, "bind", 4u) ) - { - if ( strncmp(v3, "catch", 5u) ) - { - if ( strncmp(v3, "capture-bind", 0xCu) ) - { - if ( strncmp(v3, "capture-catch", 0xDu) ) - { - if ( !std::operator==(i + 16, "slot") ) - { - v5 = *(const char **)(i + 16); - if ( strncmp(v5, "wx:", 3u) ) - { - if ( strncmp(v5, "mark:", 5u) ) - continue; - } - } - } - } - } - } - return 1; - } - return 0; -} - -//----- (00471024) -------------------------------------------------------- -int __thiscall WXML::DOMLib::WXMLDom::MarkIfHasDescendant(int this, int *a2) -{ - /* - a2 std::vector const& - */ - int result; // eax - int v4; // ebx - int v5; // ecx - int v6; // eax - int v7; // [esp+1Ch] [ebp-1Ch] - - result = a2[1]; - if ( *a2 != result ) - { - v4 = (*(_DWORD *)(this + 76) - *(_DWORD *)(this + 72)) >> 3; - while ( --v4 >= 0 ) - { - WXML::DOMLib::WXMLDom::MarkIfHasDescendant(a2); - v5 = *a2; - v6 = *(_DWORD *)(*(_DWORD *)(this + 72) + 8 * v4); - *(_BYTE *)(this + 256) |= *(_BYTE *)(v6 + 256); - v7 = a2[1]; - result = std::find<__gnu_cxx::__normal_iterator>,std::string>( - v5, - v7, - v6); - if ( v7 != result ) - *(_BYTE *)(this + 256) = 1; - } - } - return result; -} - -//----- (0047109C) -------------------------------------------------------- -void __thiscall WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(_DWORD *this, int *a2) -{ - // std::vector const& a2 - - int v3; // ebx - int v4; // esi - int *v5; // eax - volatile signed __int32 **v6; // esi - volatile signed __int32 **v7; // eax - volatile signed __int32 *v8; // ecx - volatile signed __int32 *v9; // eax - int v10; // [esp+1Ch] [ebp-1Ch] - - // 19 * 4 = 76; 18 * 4 = 72 - v3 = (this[19] - this[18]) >> 3; - while ( --v3 >= 0 ) - { - v4 = 8 * v3; - WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(a2); - if ( !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "include") - && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "import") - && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "wx-template") - && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "wx-define") - && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "template") - && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "slot") - && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "wx-import") ) - { - v10 = a2[1]; - if ( v10 == std::find<__gnu_cxx::__normal_iterator>,std::string>( - *a2, - v10, - *(_DWORD *)(this[18] + 8 * v3)) - && !WXML::DOMLib::WXMLDom::IfHasItsElse(this, v3, a2) ) - { - v5 = (int *)(v4 + this[18]); - if ( *(_DWORD *)(*v5 + 76) == *(_DWORD *)(*v5 + 72) ) - { - std::vector>::_M_erase(this + 18, (int)v5); - } - else if ( *(_DWORD *)(*v5 + 76) - *(_DWORD *)(*v5 + 72) == 8 && !WXML::DOMLib::WXMLDom::HasSpAttrPrefix(*v5) ) - { - // 把 v7 复制到 v6 - v6 = (volatile signed __int32 **)(this[18] + v4); - // 18 * 4 = 72 - v7 = (volatile signed __int32 **)*((_DWORD *)*v6 + 18); - v8 = *v7; - v9 = v7[1]; - *v6 = v8; - // v6 + 1 -> v6.offset_4 - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v6 + 1, v9); - } - } - } - } -} - -//----- (00471248) -------------------------------------------------------- -unsigned int __thiscall WXML::DOMLib::WXMLDom::Print(_DWORD *this, int a2, char *a3, char *a4) -{ - unsigned int v4; // esi - unsigned int result; // eax - - v4 = 0; - WXML::DOMLib::WXMLDom::PrintMe((int)this, a2, a3, a4); - while ( 1 ) - { - // this.offset_(19*4) -> offset_76 - // this.offset_(18*4) -> offset_72 - result = (this[19] - this[18]) >> 3; // size - if ( result <= v4 ) - break; - ++v4; - WXML::DOMLib::WXMLDom::Print(a2 + 1, a3, a4); - } - return result; -} - -//----- (004712AC) -------------------------------------------------------- -void __thiscall WXML::DOMLib::WXMLDom::PrintMe(int this, int a2, char *a3, char *a4) -{ - char *v4; // eax - int v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // eax - std::ostream::sentry *v8; // eax - std::ostream::sentry *v9; // eax - bool v10; // zf - int v11; // eax - int j; // eax - unsigned __int8 **v13; // eax - std::ostream::sentry *v14; // eax - int *v15; // eax - std::ostream::sentry *v16; // eax - std::ostream::sentry *v17; // eax - unsigned __int8 **v18; // eax - std::ostream::sentry *v19; // eax - std::ostream::sentry *v20; // eax - std::ostream::sentry *v21; // eax - int *v22; // eax - std::ostream::sentry *v23; // eax - std::ostream::sentry *v24; // eax - std::ostream::sentry *v25; // eax - std::ostream::sentry *v26; // eax - std::ostream::sentry *v27; // eax - std::ostream::sentry *v28; // eax - std::ostream::sentry *v29; // [esp+2Ch] [ebp-11Ch] - std::ostream::sentry *v30; // [esp+30h] [ebp-118h] - int i; // [esp+34h] [ebp-114h] - int v32; // [esp+34h] [ebp-114h] - char v34[216]; // [esp+70h] [ebp-D8h] BYREF - _DWORD *v35; // [esp+158h] [ebp+10h] - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v34); - v4 = v34; - if ( a4 ) - v4 = a4; - v35 = v4; - if ( (v4[*(_DWORD *)(*(_DWORD *)v4 - 12) + 20] & 5) != 0 ) - printf("%s", a3); - else - std::operator<<>((std::ostream::sentry *)(v4 + 8), a3); - for ( i = 0; ; ++i ) - { - v5 = *(_DWORD *)((char *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5; - if ( i >= a2 ) - break; - if ( v5 ) - printf(" "); - else - std::operator<<>((std::ostream::sentry *)(v35 + 2), " "); - } - if ( v5 ) - { - printf("pos: %d, %d, tag: %s, ", *(_DWORD *)(this + 92), *(_DWORD *)(this + 96), *(const char **)this); - } - else - { - std::operator<<>((std::ostream::sentry *)(v35 + 2), "pos: "); - v6 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); - std::operator<<>(v6, ", "); - v7 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); - v8 = std::operator<<>(v7, " tag: "); - v9 = std::operator<<(v8, (int *)this); - std::operator<<>(v9, ", "); - } - v10 = !std::operator==(this, "TEXTNODE"); - v11 = *(_DWORD *)(*v35 - 12); - if ( v10 ) - { - if ( (*((_BYTE *)v35 + v11 + 20) & 5) != 0 ) - printf("attr: "); - else - std::operator<<>((std::ostream::sentry *)(v35 + 2), "attr: "); - // int this - for ( j = *(_DWORD *)(this + 60); ; j = std::_Rb_tree_increment(v32) ) - { - v32 = j; - if ( j == this + 52 ) - break; - // int j - if ( (*(_DWORD *)((char *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5) != 0 ) - { - v13 = WXML::DOMLib::Token::ToString[abi:cxx11](j + 40); - printf("%s->%s,", *(const char **)(v32 + 16), (const char *)*v13); - } - else - { - v14 = std::operator<<((std::ostream::sentry *)(v35 + 2), (int *)(j + 16)); - v29 = std::operator<<>(v14, "->"); - // int v32 - v15 = (int *)WXML::DOMLib::Token::ToString[abi:cxx11](v32 + 40); - v16 = std::operator<<(v29, v15); - std::operator<<>(v16, " "); - v17 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(v32 + 96)); - std::operator<<>(v17, " "); - } - } - } - else if ( (*((_BYTE *)v35 + v11 + 20) & 5) != 0 ) - { - v18 = WXML::DOMLib::Token::ToString[abi:cxx11](this + 84); - printf( - "pos: %d, %d, len: %d, %s", - *(_DWORD *)(this + 92), - *(_DWORD *)(this + 96), - *(_DWORD *)(this + 104), - (const char *)*v18); - } - else - { - std::operator<<>((std::ostream::sentry *)(v35 + 2), "pos: "); - v19 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); - std::operator<<>(v19, ", "); - v20 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); - std::operator<<>(v20, ", len: "); - v21 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 104)); - v30 = std::operator<<>(v21, ", "); - v22 = (int *)WXML::DOMLib::Token::ToString[abi:cxx11](this + 84); - std::operator<<(v30, v22); - } - if ( (*((_BYTE *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5) != 0 ) - { - printf( - "icn: %s, icc: %u, ivwn: %s", - *(const char **)(this + 196), - *(_DWORD *)(this + 244), - *(const char **)(this + 220)); - } - else - { - v23 = std::operator<<>((std::ostream::sentry *)(v35 + 2), "icn:"); - v24 = std::operator<<(v23, (int *)(this + 196)); - v25 = std::operator<<>(v24, ", "); - std::operator<<>(v25, "icc: "); - v26 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 244)); - v27 = std::operator<<>(v26, ", ivwn: "); - std::operator<<(v27, (int *)(this + 220)); - } - if ( (*((_BYTE *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5) != 0 ) - { - printf(", hasXComponentDescendant %d", *(unsigned __int8 *)(this + 256)); - } - else - { - v28 = std::operator<<>((std::ostream::sentry *)(v35 + 2), ", hasXComponentDescendant"); - std::ostream::_M_insert(v28, *(_BYTE *)(this + 256)); - } - if ( (*((_BYTE *)v35 + *(_DWORD *)(*v35 - 12) + 20) & 5) != 0 ) - printf("\n"); - else - std::operator<<>((std::ostream::sentry *)(v35 + 2), "\n"); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v34); -} -// 4D03A0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); - -//----- (00471934) -------------------------------------------------------- -int __fastcall WXML::DOMLib::WXMLDom::WXMLDom(int a1) -{ - int result; // eax - - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_DWORD *)(a1 + 24) = a1 + 32; - *(_DWORD *)(a1 + 60) = a1 + 52; - *(_DWORD *)(a1 + 64) = a1 + 52; - *(_DWORD *)(a1 + 116) = a1 + 124; - *(_DWORD *)(a1 + 144) = a1 + 152; - *(_DWORD *)(a1 + 172) = a1 + 180; - *(_BYTE *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_BYTE *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 68) = 0; - *(_DWORD *)(a1 + 72) = 0; - *(_DWORD *)(a1 + 76) = 0; - *(_DWORD *)(a1 + 80) = 0; - *(_DWORD *)(a1 + 84) = 0; - *(_DWORD *)(a1 + 88) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_BYTE *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 148) = 0; - *(_BYTE *)(a1 + 152) = 0; - *(_DWORD *)(a1 + 176) = 0; - *(_BYTE *)(a1 + 180) = 0; - *(_BYTE *)(a1 + 112) = 0; - *(_BYTE *)(a1 + 168) = 0; - *(_DWORD *)(a1 + 104) = 0; - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 140) = -1; - *(_DWORD *)(a1 + 196) = a1 + 204; - *(_DWORD *)(a1 + 220) = a1 + 228; - result = a1 + 276; - *(_DWORD *)(a1 + 200) = 0; - *(_BYTE *)(a1 + 204) = 0; - *(_DWORD *)(a1 + 224) = 0; - *(_BYTE *)(a1 + 228) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)(a1 + 252) = 0; - *(_DWORD *)(a1 + 276) = 0; - *(_DWORD *)(a1 + 280) = 0; - *(_DWORD *)(a1 + 284) = a1 + 276; - *(_DWORD *)(a1 + 288) = a1 + 276; - *(_DWORD *)(a1 + 292) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_BYTE *)(a1 + 256) = 0; - *(_DWORD *)(a1 + 264) = 0; - *(_DWORD *)(a1 + 268) = 0; - return result; -} - -//----- (00471AB8) -------------------------------------------------------- -std::ostream::sentry *__thiscall WXML::DOMLib::StrCache::RenderPathDefine(_DWORD *this, int a2) -{ - unsigned int v3; // esi - std::ostream::sentry *v4; // ebx - int *v5; // eax - - v3 = 0; - v4 = (std::ostream::sentry *)(a2 + 8); - std::operator<<>((std::ostream::sentry *)(a2 + 8), "var x=["); - while ( v3 < -1431655765 * ((this[7] - this[6]) >> 3) ) - { - if ( v3 ) - std::operator<<>(v4, ","); - std::operator<<>(v4, "'"); - v5 = (int *)(this[6] + 24 * v3++); - WXML::Rewrite::ToStringCode(v5, a2); - std::operator<<>(v4, "'"); - } - return std::operator<<>(v4, "];"); -} - -//----- (00471B54) -------------------------------------------------------- -void __thiscall WXML::DOMLib::StrCache::Insert(_DWORD *this, int a2) -{ - int v3; // edi - - if ( !std::map::count(this, a2) ) - { - v3 = this[5]; - *(_DWORD *)std::map::operator[](this, a2) = v3; - std::vector::push_back((int)(this + 6), a2); - } -} - -//----- (00471B9C) -------------------------------------------------------- -int __thiscall WXML::DOMLib::StrCache::GetStrID(_DWORD *this, int a2) -{ - BOOL v2; // edx - int result; // eax - - v2 = std::map::count(this, a2); - result = -1; - if ( v2 ) - return *(_DWORD *)std::map::operator[](this, a2); - return result; -} - -//----- (00471BD0) -------------------------------------------------------- -void __fastcall WXML::EXPRLib::NonTerminal::~NonTerminal(void *a1) -{ - operator delete(a1); -} - -//----- (00471BE4) -------------------------------------------------------- -void __fastcall WXML::EXPRLib::EPS::~EPS(void *a1) -{ - operator delete(a1); -} - -//----- (00471BF8) -------------------------------------------------------- -int __userpurge WXML::EXPRLib::Token::Token@( - int *a1@, - WXML::EXPRLib::Token *this, - const WXML::EXPRLib::Token *a3) -{ - int *v4; // ecx - int v5; // edx - int v6; // eax - int result; // eax - - v4 = a1 + 4; - v5 = *((_DWORD *)this + 2); - *(v4 - 4) = *(_DWORD *)this; - v6 = *((_DWORD *)this + 1); - *(v4 - 2) = v5; - *(v4 - 3) = v6; - *(v4 - 1) = *((_DWORD *)this + 3); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v4, *((_DWORD *)this + 4)); - a1[5] = *((_DWORD *)this + 5); - result = *((_DWORD *)this + 6); - a1[6] = result; - return result; -} - -//----- (00471C40) -------------------------------------------------------- -int __fastcall WXML::EXPRLib::Token::Token(_DWORD *a1) -{ - int result; // eax - - result = 0; - a1[3] = 0; - a1[4] = 0; - memset(a1 + 1, 0, 8u); - a1[5] = 0; - a1[6] = 0; - return result; -} - -/** - * off_55F20C -*/ -//----- (00471C78) -------------------------------------------------------- -int __fastcall WXML::EXPRLib::Action::Action(int a1) -{ - int result; // eax - - *(_DWORD *)a1 = &off_55F20C; - *(_DWORD *)(a1 + 4) = a1 + 12; - result = a1 + 44; - *(_DWORD *)(a1 + 8) = 0; - *(_BYTE *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 36) = a1 + 44; - *(_DWORD *)(a1 + 40) = 0; - *(_BYTE *)(a1 + 44) = 0; - *(_DWORD *)(a1 + 28) = 0; - return result; -} -// 55F20C: using guessed type void (__cdecl *off_55F20C)(WXML::EXPRLib::Action *__hidden this); - -//----- (00471CA8) -------------------------------------------------------- -void __fastcall WXML::EXPRLib::Action::~Action(void **a1) -{ - WXML::EXPRLib::Action::~Action(a1); - operator delete(a1); -} - -//----- (00471CC4) -------------------------------------------------------- -void __fastcall WXML::EXPRLib::Action::~Action(void **a1) -{ - WXML::EXPRLib::Action::~Action(a1, (WXML::EXPRLib::Action *)2); -} - -//----- (00471CDC) -------------------------------------------------------- -void __thiscall WXML::EXPRLib::Action::~Action(void **ecx0, WXML::EXPRLib::Action *this) -{ - void **v3; // ecx - - v3 = ecx0 + 9; - *(v3 - 9) = &off_55F20C; - std::string::_M_dispose(v3); - std::string::_M_dispose(ecx0 + 1); -} -// 55F20C: using guessed type void (__cdecl *off_55F20C)(WXML::EXPRLib::Action *__hidden this); - -//----- (00471D00) -------------------------------------------------------- -void __fastcall WXML::EXPRLib::Parser::~Parser(int a1) -{ - int v2; // edi - int v3; // edx - int *v4; // esi - int v5; // eax - int v6; // edx - int v7; // edx - void **v8; // esi - unsigned int v9; // edi - void *v10; // eax - int v11; // [esp+1Ch] [ebp-2Ch] - int v12; // [esp+20h] [ebp-28h] - int v13; // [esp+24h] [ebp-24h] - unsigned int v14; // [esp+28h] [ebp-20h] - int v15; // [esp+2Ch] [ebp-1Ch] - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 84)); - v2 = *(_DWORD *)(a1 + 64); - v13 = *(_DWORD *)(a1 + 56); - v3 = *(_DWORD *)(a1 + 60); - v12 = *(_DWORD *)(a1 + 68); - v15 = v3; - v4 = (int *)(v3 + 4); - v14 = *(_DWORD *)(a1 + 76); - v5 = *(_DWORD *)(a1 + 48); - while ( v14 > (unsigned int)v4 ) - { - v6 = *v4; - v11 = v5; - ++v4; - std::_Destroy_aux::__destroy *>(v6, v6, v6 + 512); - v5 = v11; - } - if ( v15 == v14 ) - { - std::_Destroy_aux::__destroy *>(v3, v5, v2); - } - else - { - std::_Destroy_aux::__destroy *>(v3, v5, v13); - std::_Destroy_aux::__destroy *>(v7, v12, v2); - } - if ( *(_DWORD *)(a1 + 40) ) - { - v8 = *(void ***)(a1 + 60); - v9 = *(_DWORD *)(a1 + 76) + 4; - while ( v9 > (unsigned int)v8 ) - { - v10 = *v8++; - operator delete(v10); - } - operator delete(*(void **)(a1 + 40)); - } - std::deque>::~deque(a1); -} -// 471D6A: variable 'v3' is possibly undefined -// 471D76: variable 'v7' is possibly undefined - -/** - * off_55F220 - * 0 -*/ -//----- (00471DC0) -------------------------------------------------------- -int __fastcall WXML::EXPRLib::Terminal::Terminal(int a1) -{ - int result; // eax - - *(_DWORD *)(a1 + 4) = a1 + 12; - result = 0; - *(_DWORD *)a1 = &off_55F220; - *(_DWORD *)(a1 + 8) = 0; - *(_BYTE *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 40) = 0; - *(_DWORD *)(a1 + 44) = 0; - memset((void *)(a1 + 32), 0, 8u); - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - return result; -} -// 55F220: using guessed type void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this); - -//----- (00471E0C) -------------------------------------------------------- -void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1) -{ - WXML::EXPRLib::Terminal::~Terminal(a1); - operator delete(a1); -} - -//----- (00471E28) -------------------------------------------------------- -void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1) -{ - WXML::EXPRLib::Terminal::~Terminal(a1, (WXML::EXPRLib::Terminal *)2); -} - -//----- (00471E40) -------------------------------------------------------- -void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this) -{ - volatile signed __int32 **v3; // ecx - - v3 = (volatile signed __int32 **)(ecx0 + 11); - *(v3 - 11) = (volatile signed __int32 *)&off_55F220; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); - std::string::_M_dispose(ecx0 + 1); -} -// 55F220: using guessed type void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this); - -//----- (00471E64) -------------------------------------------------------- -void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this) -{ - volatile signed __int32 **v3; // ecx - - v3 = (volatile signed __int32 **)(ecx0 + 11); - *(v3 - 11) = (volatile signed __int32 *)&off_55F220; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); - std::string::_M_dispose(ecx0 + 1); -} -// 55F220: using guessed type void (__cdecl *off_55F220)(WXML::EXPRLib::Terminal *__hidden this); - -//----- (00471E88) -------------------------------------------------------- -void __thiscall night::NSASTParse::NSASTParse(int this, int a2, int a3, int a4) -{ - std::string::basic_string((char *)this, a2); - *(_DWORD *)(this + 44) = this + 52; - *(_DWORD *)(this + 48) = 0; - *(_BYTE *)(this + 52) = 0; - - *(_DWORD *)(this + 32) = 0; - *(_DWORD *)(this + 28) = a3; - - *(_DWORD *)(this + 36) = 0; - *(_DWORD *)(this + 24) = a4; - *(_DWORD *)(this + 40) = 0; - std::string::operator=((unsigned int *)(this + 44), (char *)&byte_551F04); // "\0" -} - -//----- (00471F5C) -------------------------------------------------------- -void __fastcall night::NSASTParse::~NSASTParse(void **a1) -{ - std::string::_M_dispose(a1 + 11); - std::string::_M_dispose(a1); -} - -//----- (00471F78) -------------------------------------------------------- -void __fastcall night::NSCompileJs::~NSCompileJs(int a1, int a2) -{ - std::vector::~vector((void ***)(a1 + 36), a2); - std::string::_M_dispose((void **)a1); -} - -//----- (00471F94) -------------------------------------------------------- -void __userpurge night::ns_sourcemap::ns_sourcemap( - int a1@, - night::ns_sourcemap *this, - const night::ns_sourcemap *a3) -{ - std::string::basic_string((char *)a1, (int)this); - *(_DWORD *)(a1 + 24) = *((_DWORD *)this + 6); - *(_DWORD *)(a1 + 28) = *((_DWORD *)this + 7); - std::string::basic_string((char *)(a1 + 32), (int)this + 32); - *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); - *(_DWORD *)(a1 + 60) = *((_DWORD *)this + 15); -} - -//----- (0047204C) -------------------------------------------------------- -void __fastcall night::ns_sourcemap::~ns_sourcemap(void **a1) -{ - std::string::_M_dispose(a1 + 8); - std::string::_M_dispose(a1); -} - -//----- (00472068) -------------------------------------------------------- -bool __cdecl night::NSToken::rw_cb_number(night::NSToken *this, _BYTE *a2) -{ - bool result; // al - - if ( (_BYTE)this != '.'/*46*/ ) - return (unsigned __int8)((_BYTE)this - 48) <= 9u; - result = 0; - if ( !*a2 ) - { - *a2 = 1; - return 1; - } - return result; -} - -//----- (00472090) -------------------------------------------------------- -char __cdecl night::NSToken::tk_is_comment2(night::NSToken *this, night::NSStream *a2) -{ - int v3[3]; // [esp+1Ch] [ebp-2Ch] BYREF - int v4[3]; // [esp+28h] [ebp-20h] BYREF - int v5[4]; // [esp+34h] [ebp-14h] BYREF - - night::NSStream::peek(v3, a2); - if ( LOBYTE(v3[0]) != '*'/*42*/ ) - return 1; - night::NSStream::peek_2(v4, a2); - if ( LOBYTE(v4[0]) != '/'/*47*/ ) - return 1; - night::NSStream::next(v5, a2); - return 0; -} -// 472090: using guessed type int var_2C[3]; -// 472090: using guessed type int var_20[3]; -// 472090: using guessed type int var_14[4]; - -//----- (004720D8) -------------------------------------------------------- -bool __cdecl night::NSToken::tk_is_whitespace(night::NSToken *this) -{ - unsigned int v1; // ebx - void *v3[2]; // [esp+18h] [ebp-20h] BYREF - char v4; // [esp+20h] [ebp-18h] BYREF - - v3[0] = &v4; - std::string::_M_construct(v3, 1u, (char)this); - v1 = std::string::find(night::NS_BUILTIN_SPACE, (int)v3, 0); - std::string::_M_dispose(v3); - return v1 != -1; -} -// 565A90: using guessed type int night::NS_BUILTIN_SPACE[6]; - -//----- (0047212C) -------------------------------------------------------- -char __cdecl night::NSToken::tk_is_valid_op_str(night::NSToken *this, int a2) -{ - char lpuexcpt; // [esp+18h] [ebp-70h] - void *v4[2]; // [esp+50h] [ebp-38h] BYREF - char v5; // [esp+58h] [ebp-30h] BYREF - void *v6[8]; // [esp+68h] [ebp-20h] BYREF - - v4[0] = &v5; - std::string::_M_construct(v4, 1u, (char)this); - if ( std::string::find(night::NS_BUILTIN_OP, (int)v4, 0) == -1 - || (std::string::basic_string((char *)v6, a2), - std::string::_M_replace_aux(v6, (size_t)v6[1], 0, 1u, (char)this), - std::string::operator=((unsigned __int8 **)v4, (int)v6), - std::string::_M_dispose(v6), - std::string::find(night::NS_BUILTIN_ALL_OP, (int)v4, 0) == -1) ) - { - lpuexcpt = 0; - } - else - { - std::string::_M_assign(a2, (int)v4); - lpuexcpt = 1; - } - std::string::_M_dispose(v4); - return lpuexcpt; -} -// 565AC0: using guessed type int night::NS_BUILTIN_ALL_OP[6]; -// 565AF0: using guessed type int night::NS_BUILTIN_OP[6]; - -//----- (0047229C) -------------------------------------------------------- -bool __cdecl night::NSToken::tk_is_not_line_break(night::NSToken *this) -{ - void *v2[2]; // [esp+18h] [ebp-20h] BYREF - char v3; // [esp+20h] [ebp-18h] BYREF - - v2[0] = &v3; - std::string::_M_construct(v2, 1u, (char)this); - std::string::_M_dispose(v2); - return (_BYTE)this != 10; -} - -//----- (004722D8) -------------------------------------------------------- -_DWORD *__thiscall night::NSToken::get_tokens_for_sourcemap(_DWORD *this, void **a2, _DWORD *a3) -{ - int i; // esi - _DWORD *result; // eax - void **v5; // eax - void *v6; // edx - _DWORD *v7; // ebx - _DWORD *j; // eax - _DWORD *v9; // ecx - unsigned int v10; // eax - _DWORD *v11; // edx - bool v12; // al - _DWORD *v13; // [esp+20h] [ebp-28h] - int insert_hint_unique_pos; // [esp+20h] [ebp-28h] - unsigned int v16; // [esp+28h] [ebp-20h] - _DWORD *v17; // [esp+2Ch] [ebp-1Ch] - - for ( i = this[9]; ; i = std::_Rb_tree_increment(i) ) - { - result = this + 7; - if ( (_DWORD *)i == this + 7 ) - break; - v5 = std::map::operator[](a2, i + 16); - v6 = *(void **)(i + 40); - v7 = a3 + 1; - *v5 = v6; - v17 = a3 + 1; - for ( j = (_DWORD *)a3[2]; j; j = v9 ) - { - v9 = (_DWORD *)j[3]; - if ( (unsigned int)v6 <= j[4] ) - v9 = (_DWORD *)j[2]; - if ( (unsigned int)v6 <= j[4] ) - v7 = j; - } - if ( v17 == v7 || (unsigned int)v6 < v7[4] ) - { - v13 = v7; - v7 = operator new(0x2Cu); - v10 = *(_DWORD *)(i + 40); - v7[6] = 0; - v7[4] = v10; - v16 = v10; - v7[5] = v7 + 7; - *((_BYTE *)v7 + 28) = 0; - insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - a3, - v13, - v7 + 4); - if ( v11 ) - { - v12 = insert_hint_unique_pos != 0 || v17 == v11; - if ( !v12 ) - v12 = v16 < v11[4]; - std::_Rb_tree_insert_and_rebalance(v12, v7, v11, v17); - ++a3[5]; - } - else - { - std::string::_M_dispose((void **)v7 + 5); - operator delete(v7); - v7 = (_DWORD *)insert_hint_unique_pos; - } - } - std::string::_M_assign((int)(v7 + 5), i + 16); - } - return result; -} -// 47238A: variable 'v11' is possibly undefined - -//----- (00472400) -------------------------------------------------------- -int __cdecl night::NSToken::tk_is_var(night::NSToken *this) -{ - int result; // eax - int v2; // edx - int v3; // ecx - int v4; // eax - - result = night::NSToken::tk_is_var_start((char)this); - if ( !(_BYTE)result ) - { - v4 = v3 - 48; - LOBYTE(v4) = (unsigned __int8)(v3 - 48) <= 9u; - LOBYTE(v2) = (_BYTE)v3 == 95; - return v2 | v4; - } - return result; -} -// 472415: variable 'v3' is possibly undefined -// 472423: variable 'v2' is possibly undefined - -//----- (00472428) -------------------------------------------------------- -void __fastcall night::NSToken::~NSToken(int a1) -{ - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(a1 + 24); - if ( *(_DWORD *)(a1 + 12) ) - operator delete(*(void **)(a1 + 12)); -} - -//----- (00472450) -------------------------------------------------------- -void **__thiscall night::ns_node::debug_no_space[abi:cxx11](void **this, const char **a2) -{ - const char *v2; // ecx - const char *v3; // ecx - const char *v4; // ebx - const char *v5; // ecx - const char *v6; // edx - const char *v7; // ecx - _DWORD *v8; // eax - const char *v9; // esi - const char *v10; // ebx - const char *v11; // eax - const char *v12; // edx - const char *v13; // ecx - _DWORD *v14; // eax - _DWORD *v15; // eax - const char *v16; // esi - int v17; // eax - _DWORD *v18; // eax - char *v19; // ecx - _DWORD *v20; // eax - _DWORD *v21; // eax - int *v22; // ecx - const char *v23; // edx - const char *v24; // ebx - const char *v25; // ecx - _DWORD *v26; // eax - _DWORD *v27; // eax - _DWORD *v28; // eax - const char *v29; // esi - int v30; // eax - char *v31; // ecx - _DWORD *v32; // eax - _DWORD *v33; // eax - const char *v34; // edx - const char *v35; // ecx - _DWORD *v36; // eax - _DWORD *v37; // eax - const char *v38; // esi - int v39; // eax - _DWORD *v40; // eax - char *v41; // ecx - _DWORD *v42; // eax - _DWORD *v43; // eax - _DWORD *v44; // eax - int v45; // eax - _DWORD *v46; // eax - _DWORD *v47; // eax - _DWORD **v48; // eax - _DWORD *v49; // eax - _DWORD *v50; // eax - char *v51; // ecx - _DWORD *v52; // eax - const char *v53; // edx - const char *v54; // ecx - const char *v55; // edi - const char *v56; // ebx - int v57; // eax - char *v58; // ecx - _DWORD *v59; // eax - const char *v60; // esi - int v61; // eax - _DWORD *v62; // eax - int v63; // eax - _DWORD *v64; // eax - _DWORD *v65; // eax - _DWORD **v66; // eax - _DWORD *v67; // eax - _DWORD *v68; // eax - const char *v69; // edx - const char *v70; // ebx - const char *v71; // esi - int v72; // eax - char *v73; // ecx - _DWORD *v74; // eax - _DWORD *v75; // eax - _DWORD *v76; // eax - unsigned int m; // [esp+30h] [ebp-508h] - unsigned int mm; // [esp+30h] [ebp-508h] - unsigned int i; // [esp+34h] [ebp-504h] - unsigned int j; // [esp+34h] [ebp-504h] - unsigned int k; // [esp+34h] [ebp-504h] - unsigned int n; // [esp+34h] [ebp-504h] - unsigned int ii; // [esp+34h] [ebp-504h] - unsigned int kk; // [esp+34h] [ebp-504h] - const char *v86; // [esp+34h] [ebp-504h] - unsigned int jj; // [esp+34h] [ebp-504h] - char *v89; // [esp+78h] [ebp-4C0h] BYREF - int v90; // [esp+7Ch] [ebp-4BCh] - char v91[16]; // [esp+80h] [ebp-4B8h] BYREF - int v92[2]; // [esp+90h] [ebp-4A8h] BYREF - char v93[16]; // [esp+98h] [ebp-4A0h] BYREF - int v94[2]; // [esp+A8h] [ebp-490h] BYREF - char v95; // [esp+B0h] [ebp-488h] BYREF - int v96; // [esp+C0h] [ebp-478h] BYREF - int v97; // [esp+C4h] [ebp-474h] - char v98[16]; // [esp+C8h] [ebp-470h] BYREF - int v99[2]; // [esp+D8h] [ebp-460h] BYREF - char v100[16]; // [esp+E0h] [ebp-458h] BYREF - int v101[2]; // [esp+F0h] [ebp-448h] BYREF - char v102; // [esp+F8h] [ebp-440h] BYREF - int v103[6]; // [esp+108h] [ebp-430h] BYREF - char Str[4]; // [esp+120h] [ebp-418h] BYREF - char v105[1020]; // [esp+124h] [ebp-414h] BYREF - - // debug_no_space - 0 - *(_DWORD *)Str = 0; - memset(v105, 0, sizeof(v105)); - if ( std::operator==("skip", (int)a2) ) - sprintf(Str, "type[%s]", *a2); - if ( std::operator==("bool", (int)a2) ) - { - v2 = *a2; - if ( *((_QWORD *)a2 + 6) ) - sprintf(Str, "(%d,%d)type[%s] value[%s]", a2[12], a2[13], v2, a2[15]); - else - sprintf(Str, "type[%s] value[%s]", v2, a2[15]); - } - if ( std::operator==((char *)off_551FEA, (int)a2) - || std::operator==("builtin_type", (int)a2) - || std::operator==("kw", (int)a2) - || std::operator==((char *)off_551FFE, (int)a2) - || std::operator==("punc", (int)a2) - || std::operator==("op", (int)a2) ) - { - v3 = *a2; - if ( *((_QWORD *)a2 + 6) ) - sprintf(Str, "(%d,%d)type[%s] value[%s]", a2[12], a2[13], v3, a2[15]); - else - sprintf(Str, "type[%s] value[%s]", v3, a2[15]); - } - - // var - if ( std::operator==((char *)off_551FFE, (int)a2) ) - { - v4 = a2[15]; - v5 = *a2; - if ( *((_QWORD *)a2 + 6) ) - sprintf(Str, "(%d,%d)type[%s] value[%s] flag[%d]", a2[12], a2[13], v5, v4, *((unsigned __int8 *)a2 + 56)); - else - sprintf(Str, "type[%s] value[%s] flag[%d]", v5, v4, *((unsigned __int8 *)a2 + 56)); - } - // debug_no_space - 5 - if ( std::operator==("op_self", (int)a2) ) - { - v97 = 0; - v96 = (int)v98; - v6 = a2[13]; - v7 = *a2; - v98[0] = 0; - if ( __PAIR64__((unsigned int)v6, a2[12]) ) - sprintf(Str, "(%d,%d)type[%s] op[%s]", a2[12], v6, v7, a2[39]); - else - sprintf(Str, "type[%s] op[%s]", v7, a2[39]); - std::string::operator=((unsigned int *)&v96, Str); - night::ns_node::debug_no_space[abi:cxx11](a2[48]); - std::operator+(v101, "\nobj=>", (unsigned int *)v99); - v8 = std::string::append(v101, "\nobj<="); - std::string::basic_string(v103, v8); - std::string::operator+=(v103); - goto LABEL_73; - } - if ( std::operator==((char *)off_552086, (int)a2) ) - { - v9 = a2[15]; - v10 = *a2; - v11 = a2[27]; - if ( *((_QWORD *)a2 + 6) ) - sprintf(Str, "(%d,%d)type[%s] value[%s%s%s]", a2[12], a2[13], v10, v11, v9, a2[27]); - else - sprintf(Str, "type[%s] value[%s%s%s]", v10, v11, v9, a2[27]); - } - // debug_no_space - 10 - if ( std::operator==((char *)off_5520BF, (int)a2) ) - { - v97 = 0; - v96 = (int)v98; - v12 = a2[13]; - v13 = *a2; - v98[0] = 0; - if ( __PAIR64__((unsigned int)v12, a2[12]) ) - sprintf(Str, "(%d,%d)type[%s]", a2[12], v12, v13); - else - sprintf(Str, "type[%s]", v13); - std::string::operator=((unsigned int *)&v96, Str); - night::ns_node::debug_no_space[abi:cxx11](a2[47]); - std::operator+(v101, " key[", (unsigned int *)v99); - v14 = std::string::append(v101, "]"); - std::string::basic_string(v103, v14); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); - night::ns_node::debug_no_space[abi:cxx11](a2[48]); - std::operator+(v101, " value[", (unsigned int *)v99); - v15 = std::string::append(v101, "]"); - std::string::basic_string(v103, v15); - std::string::operator+=(v103); - goto LABEL_73; - } - if ( std::operator==("obj_self_op", (int)a2) ) - { - if ( a2[12] || a2[13] ) - { - night::ns_node::debug_no_space[abi:cxx11](a2[48]); - sprintf( - Str, - "(%d,%d)type[%s] after[%d] op[%s] obj[%s]", - a2[12], - a2[13], - *a2, - *((unsigned __int8 *)a2 + 200), - a2[39], - (const char *)v103[0]); - } - else - { - night::ns_node::debug_no_space[abi:cxx11](a2[48]); - sprintf( - Str, - "type[%s] after[%d] op[%s] obj[%s]", - *a2, - *((unsigned __int8 *)a2 + 200), - a2[39], - (const char *)v103[0]); - } - std::string::_M_dispose((void **)v103); - } - // debug_no_space - 15 - if ( std::operator==("obj_dot", (int)a2) || std::operator==("obj_property", (int)a2) ) - { - v93[0] = 0; - v92[0] = (int)v93; - v92[1] = 0; - v16 = a2[49]; - v17 = *((_DWORD *)v16 + 1); - if ( *((_QWORD *)a2 + 6) ) - sprintf(Str, "(%d,%d)type[%s] propertys[%zu]", a2[12], a2[13], *a2, (v17 - *(_DWORD *)v16) >> 2); - else - sprintf(Str, "type[%s] propertys[%zu]", *a2, (v17 - *(_DWORD *)v16) >> 2); - std::string::operator=((unsigned int *)v92, Str); - night::ns_node::debug_no_space[abi:cxx11](a2[48]); - std::operator+(v101, "\nobj =>", (unsigned int *)v99); - v18 = std::string::append(v101, "\nobj<="); - std::string::basic_string(v103, v18); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); - std::string::operator+=("\npropertys =>"); - for ( i = 0; ; ++i ) - { - v19 = (char *)a2[49]; - if ( i >= (*((_DWORD *)v19 + 1) - *(_DWORD *)v19) >> 2 ) - break; - v20 = (_DWORD *)std::vector::at(v19, i); - night::ns_node::debug_no_space[abi:cxx11](*v20); - v94[0] = (int)&v95; - std::string::_M_construct(v94, 1u, i + 48); - std::operator+(&v96, "\n[", (unsigned int *)v94); - v21 = std::string::append(&v96, "] "); - std::string::basic_string(v99, v21); - std::operator+(v103, v99, (unsigned int *)v101); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v99); - std::string::_M_dispose((void **)&v96); - std::string::_M_dispose((void **)v94); - std::string::_M_dispose((void **)v101); - } - std::string::operator+=("\npropertys<="); - std::string::basic_string(this, v92); - v22 = v92; - goto LABEL_131; - } - // debug_no_space - 20 - if ( std::operator==("if", (int)a2) ) - { - v97 = 0; - v96 = (int)v98; - v23 = a2[13]; - v24 = a2[27]; - v98[0] = 0; - v25 = *a2; - if ( __PAIR64__((unsigned int)v23, a2[12]) ) - sprintf(Str, "(%d,%d)type[%s] punc[%s]", a2[12], v23, v25, v24); - else - sprintf(Str, "type[%s] punc[%s]", v25, v24); - std::string::operator=((unsigned int *)&v96, Str); - night::ns_node::debug_no_space[abi:cxx11](a2[51]); - std::operator+(v101, "\ncond =>", (unsigned int *)v99); - v26 = std::string::append(v101, "\ncond<="); - std::string::basic_string(v103, v26); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); - night::ns_node::debug_no_space[abi:cxx11](a2[52]); - std::operator+(v101, "\nifd =>", (unsigned int *)v99); - v27 = std::string::append(v101, "\nifd<="); - std::string::basic_string(v103, v27); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); - if ( !a2[53] ) - goto LABEL_130; - night::ns_node::debug_no_space[abi:cxx11](a2[53]); - std::operator+(v101, "\nelsed =>", (unsigned int *)v99); - v28 = std::string::append(v101, "\nelsed<="); - std::string::basic_string(v103, v28); - std::string::operator+=(v103); -LABEL_73: - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); -LABEL_130: - std::string::basic_string(this, &v96); - v22 = &v96; - goto LABEL_131; - } - - // debug_no_space - 25 - if ( std::operator==((char *)off_552210, (int)a2) ) - { - v98[0] = 0; - v96 = (int)v98; - v97 = 0; - v29 = a2[57]; - v30 = *((_DWORD *)v29 + 1); - if ( *((_QWORD *)a2 + 6) ) - sprintf(Str, "(%d,%d)type[%s] progs[%zu]", a2[12], a2[13], *a2, (v30 - *(_DWORD *)v29) >> 2); - else - sprintf(Str, "type[%s] progs[%zu]", *a2, (v30 - *(_DWORD *)v29) >> 2); - std::string::operator=((unsigned int *)&v96, Str); - std::string::operator+=("\nprogs =>"); - for ( j = 0; ; ++j ) - { - v31 = (char *)a2[57]; - if ( j >= (*((_DWORD *)v31 + 1) - *(_DWORD *)v31) >> 2 ) - break; - v32 = (_DWORD *)std::vector::at(v31, j); - night::ns_node::debug_no_space[abi:cxx11](*v32); - std::operator+(v103, "\n", (unsigned int *)v101); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - } - std::string::operator+=("\nprogs<="); - night::ns_node::debug_no_space[abi:cxx11](a2[54]); - std::operator+(v101, "\nbody =>", (unsigned int *)v99); - v33 = std::string::append(v101, "\nbody<="); - std::string::basic_string(v103, v33); - std::string::operator+=(v103); - goto LABEL_73; - } - // debug_no_space - 30 - if ( std::operator==("while", (int)a2) || std::operator==("do_while", (int)a2) ) - { - v97 = 0; - v96 = (int)v98; - v34 = a2[13]; - v35 = *a2; - v98[0] = 0; - if ( __PAIR64__((unsigned int)v34, a2[12]) ) - sprintf(Str, "(%d,%d)type[%s]", a2[12], v34, v35); - else - sprintf(Str, "type[%s]", v35); - std::string::operator=((unsigned int *)&v96, Str); - night::ns_node::debug_no_space[abi:cxx11](a2[51]); - std::operator+(v101, "\ncond =>", (unsigned int *)v99); - v36 = std::string::append(v101, "\ncond<="); - std::string::basic_string(v103, v36); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); - night::ns_node::debug_no_space[abi:cxx11](a2[54]); - std::operator+(v101, "\nbody =>", (unsigned int *)v99); - v37 = std::string::append(v101, "\nbody<="); - std::string::basic_string(v103, v37); - std::string::operator+=(v103); - goto LABEL_73; - } - // debug_no_space - 35 - if ( std::operator==("switch", (int)a2) ) - { - v91[0] = 0; - v89 = v91; - v90 = 0; - v38 = a2[58]; - v39 = *((_DWORD *)v38 + 1); - if ( *((_QWORD *)a2 + 6) ) - sprintf(Str, "(%d,%d)type[%s] cases[%zu]", a2[12], a2[13], *a2, (v39 - *(_DWORD *)v38) >> 2); - else - sprintf(Str, "type[%s] cases[%zu]", *a2, (v39 - *(_DWORD *)v38) >> 2); - std::string::operator=((unsigned int *)&v89, Str); - night::ns_node::debug_no_space[abi:cxx11](a2[51]); - std::operator+(v101, "\ncond =>", (unsigned int *)v99); - v40 = std::string::append(v101, "\ncond<="); - std::string::basic_string(v103, v40); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); - std::string::operator+=("\ncases=>\n"); - for ( k = 0; ; ++k ) - { - v41 = (char *)a2[58]; - if ( k >= (*((_DWORD *)v41 + 1) - *(_DWORD *)v41) >> 2 ) - break; - v42 = (_DWORD *)std::vector::at(v41, k); - night::ns_node::debug_no_space[abi:cxx11](*v42); - v92[0] = (int)v93; - std::string::_M_construct(v92, 1u, k + 48); - std::operator+(v94, "cases[", (unsigned int *)v92); - v43 = std::string::append(v94, "]=>"); - std::string::basic_string(&v96, v43); - std::operator+(v101, &v96, (unsigned int *)v99); - v44 = std::string::append(v101, "<=cases"); - std::string::basic_string(v103, v44); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)&v96); - std::string::_M_dispose((void **)v94); - std::string::_M_dispose((void **)v92); - std::string::_M_dispose((void **)v99); - for ( m = 0; ; ++m ) - { - v45 = std::vector>>::at(a2[59], k); - if ( m >= (*(_DWORD *)(*(_DWORD *)v45 + 4) - **(_DWORD **)v45) >> 2 ) - break; - v99[0] = (int)v100; - std::string::_M_construct(v99, 1u, m + 48); - v92[0] = (int)v93; - std::string::_M_construct(v92, 1u, k + 48); - std::operator+(v94, "\ncase_progs[", (unsigned int *)v92); - v46 = std::string::append(v94, ","); - std::string::basic_string(&v96, v46); - std::operator+(v101, &v96, (unsigned int *)v99); - v47 = std::string::append(v101, "]=>"); - std::string::basic_string(v103, v47); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)&v96); - std::string::_M_dispose((void **)v94); - std::string::_M_dispose((void **)v92); - std::string::_M_dispose((void **)v99); - v48 = (_DWORD **)std::vector>>::at(a2[59], k); - v49 = (_DWORD *)std::vector::at(*v48, m); - night::ns_node::debug_no_space[abi:cxx11](*v49); - v50 = std::string::append(v101, "<=case_progs\n"); - std::string::basic_string(v103, v50); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - } - } - std::string::operator+=("cases<="); - std::string::operator+=("\ndefault=>"); - for ( n = 0; ; ++n ) - { - v51 = (char *)a2[60]; - if ( n >= (*((_DWORD *)v51 + 1) - *(_DWORD *)v51) >> 2 ) - break; - v52 = (_DWORD *)std::vector::at(v51, n); - night::ns_node::debug_no_space[abi:cxx11](*v52); - std::operator+(v103, "\n", (unsigned int *)v101); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - } - std::string::operator+=("\ndefault<="); - } - // debug_no_space - 40 - else - { - if ( std::operator==("binary", (int)a2) - || std::operator==("assign", (int)a2) - || std::operator==("ternary", (int)a2) ) - { - v101[1] = 0; - v101[0] = (int)&v102; - v53 = a2[13]; - v54 = *a2; - v102 = 0; - if ( __PAIR64__((unsigned int)v53, a2[12]) ) - sprintf(Str, "(%d,%d)type[%s] op[%s]", a2[12], v53, v54, a2[39]); - else - sprintf(Str, "type[%s] op[%s]", v54, a2[39]); - std::string::operator=((unsigned int *)v101, Str); - std::string::operator+=("\nleft <="); - night::ns_node::debug_no_space[abi:cxx11](a2[45]); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::operator+=("\nright <="); - night::ns_node::debug_no_space[abi:cxx11](a2[46]); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::basic_string(this, v101); - v22 = v101; - goto LABEL_131; - } - if ( std::operator==("prog", (int)a2) - || std::operator==("prog_no_sem", (int)a2) - || std::operator==("prog_no_sem_require", (int)a2) - || std::operator==("obj_block", (int)a2) - || std::operator==("array", (int)a2) - || std::operator==("bracket", (int)a2) ) - { - v100[0] = 0; - v99[0] = (int)v100; - v99[1] = 0; - v55 = a2[57]; - v56 = *a2; - v57 = *((_DWORD *)v55 + 1); - if ( *((_QWORD *)a2 + 6) ) - sprintf(Str, "(%d,%d)type[%s] punc[%s] progs[%zu] =>", a2[12], a2[13], v56, a2[27], (v57 - *(_DWORD *)v55) >> 2); - else - sprintf(Str, "type[%s] punc[%s] progs[%zu] =>", v56, a2[27], (v57 - *(_DWORD *)v55) >> 2); - std::string::operator=((unsigned int *)v99, Str); - for ( ii = 0; ; ++ii ) - { - v58 = (char *)a2[57]; - if ( ii >= (*((_DWORD *)v58 + 1) - *(_DWORD *)v58) >> 2 ) - break; - v59 = (_DWORD *)std::vector::at(v58, ii); - night::ns_node::debug_no_space[abi:cxx11](*v59); - std::operator+(v103, "\n", (unsigned int *)v101); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - } - std::string::operator+=("\nprogs<="); - std::string::basic_string(this, v99); - v22 = v99; - goto LABEL_131; - } - if ( !std::operator==("call", (int)a2) ) - { - if ( !std::operator==("function", (int)a2) ) - { - std::string::basic_string(this, Str); - return this; - } - v98[0] = 0; - v96 = (int)v98; - v97 = 0; - v86 = a2[12]; - v69 = a2[61]; - v70 = a2[13]; - v71 = *a2; - v72 = *((_DWORD *)v69 + 1); - if ( v86 || v70 ) - sprintf(Str, "func (%d,%d)type[%s] name[%s] fargs[%zu] =>", v86, v70, v71, a2[33], (v72 - *(_DWORD *)v69) >> 2); - else - sprintf(Str, "func type[%s] name[%s] fargs[%zu] =>", v71, a2[33], (v72 - *(_DWORD *)v69) >> 2); - std::string::operator=((unsigned int *)&v96, Str); - for ( jj = 0; ; ++jj ) - { - v73 = (char *)a2[61]; - if ( jj >= (*((_DWORD *)v73 + 1) - *(_DWORD *)v73) >> 2 ) - break; - v74 = (_DWORD *)std::vector::at(v73, jj); - night::ns_node::debug_no_space[abi:cxx11](*v74); - std::operator+(v101, "\nfargs[]=>", (unsigned int *)v99); - v75 = std::string::append(v101, "<=[]fargs"); - std::string::basic_string(v103, v75); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); - } - std::string::operator+=("\nfargs<="); - night::ns_node::debug_no_space[abi:cxx11](a2[54]); - std::operator+(v101, "\nbody=>", (unsigned int *)v99); - v76 = std::string::append(v101, "\nbody<="); - std::string::basic_string(v103, v76); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); - std::string::operator+=("\nfunc<="); - goto LABEL_130; - } - v91[0] = 0; - v89 = v91; - v90 = 0; - v60 = a2[56]; - v61 = *((_DWORD *)v60 + 1); - if ( *((_QWORD *)a2 + 6) ) - sprintf(Str, "call (%d,%d)type[%s] argss[%zu] =>", a2[12], a2[13], *a2, (v61 - *(_DWORD *)v60) >> 2); - else - sprintf(Str, "call type[%s] argss[%zu] =>", *a2, (v61 - *(_DWORD *)v60) >> 2); - std::string::operator=((unsigned int *)&v89, Str); - night::ns_node::debug_no_space[abi:cxx11](a2[55]); - std::operator+(v101, "\nfunc=>", (unsigned int *)v99); - v62 = std::string::append(v101, "\nfunc<="); - std::string::basic_string(v103, v62); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)v99); - for ( kk = 0; kk < (*((_DWORD *)a2[56] + 1) - *(_DWORD *)a2[56]) >> 2; ++kk ) - { - for ( mm = 0; ; ++mm ) - { - v63 = std::vector>>::at(a2[56], kk); - if ( mm >= (*(_DWORD *)(*(_DWORD *)v63 + 4) - **(_DWORD **)v63) >> 2 ) - break; - v99[0] = (int)v100; - std::string::_M_construct(v99, 1u, mm + 48); - v92[0] = (int)v93; - std::string::_M_construct(v92, 1u, kk + 48); - std::operator+(v94, "\nargss[", (unsigned int *)v92); - v64 = std::string::append(v94, ","); - std::string::basic_string(&v96, v64); - std::operator+(v101, &v96, (unsigned int *)v99); - v65 = std::string::append(v101, "]=>"); - std::string::basic_string(v103, v65); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - std::string::_M_dispose((void **)&v96); - std::string::_M_dispose((void **)v94); - std::string::_M_dispose((void **)v92); - std::string::_M_dispose((void **)v99); - v66 = (_DWORD **)std::vector>>::at(a2[56], kk); - v67 = (_DWORD *)std::vector::at(*v66, mm); - night::ns_node::debug_no_space[abi:cxx11](*v67); - v68 = std::string::append(v101, "<="); - std::string::basic_string(v103, v68); - std::string::operator+=(v103); - std::string::_M_dispose((void **)v103); - std::string::_M_dispose((void **)v101); - } - } - std::string::operator+=("\ncall<="); - } - // debug_no_space - 45 - std::string::basic_string(this, &v89); - v22 = (int *)&v89; -LABEL_131: - std::string::_M_dispose((void **)v22); - return this; -} -// 40E4F2: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 40E4F8: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); - -//----- (00474990) -------------------------------------------------------- -void __fastcall night::NSStream::~NSStream(void **a1) -{ - std::string::_M_dispose(a1 + 6); - std::string::_M_dispose(a1); -} - -//----- (004749B0) -------------------------------------------------------- -void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(int *a1) -{ - _DWORD *exception; // eax - - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_unlock(*a1) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_55F35C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - } -} -// 53E1E4: using guessed type int _CRT_MT; -// 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00474A70) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) -{ - return std::__basic_file::fd((FILE **)(a1 + 40)); -} - -//----- (00474A80) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) -{ - return std::__basic_file::file(a1 + 40); -} - -//----- (00474AA0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) -{ - int v4; // eax - - std::filebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_55F234; - std::__basic_file::sys_open(this + 40, a2, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::filebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 55F234: using guessed type int (*off_55F234[2])(); - -//----- (00474BA0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) -{ - int v4; // eax - - std::filebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_55F234; - std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::filebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 55F234: using guessed type int (*off_55F234[2])(); - -//----- (00474CB0) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) -{ - std::filebuf::basic_filebuf((int)a1); - *a1 = off_55F234; -} -// 55F234: using guessed type int (*off_55F234[2])(); - -//----- (00474CD0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) -{ - int v4; // eax - - std::filebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_55F234; - std::__basic_file::sys_open(this + 40, a2, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::filebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 55F234: using guessed type int (*off_55F234[2])(); - -//----- (00474DD0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) -{ - int v4; // eax - - std::filebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_55F234; - std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::filebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 55F234: using guessed type int (*off_55F234[2])(); - -//----- (00474EE0) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) -{ - std::filebuf::basic_filebuf((int)a1); - *a1 = off_55F234; -} -// 55F234: using guessed type int (*off_55F234[2])(); - -//----- (00474F00) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600A0; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)a1 + 7); - operator delete(a1); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00474FB0) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600A0; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00475050) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600A0; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (004750F0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) -{ - return std::__basic_file::fd((FILE **)(a1 + 40)); -} - -//----- (00475100) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) -{ - return std::__basic_file::file(a1 + 40); -} - -//----- (00475120) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) -{ - int v4; // eax - - std::wfilebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_55F274; - std::__basic_file::sys_open(this + 40, a2, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::wfilebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 55F274: using guessed type int (*off_55F274[2])(); - -//----- (00475220) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) -{ - int v4; // eax - - std::wfilebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_55F274; - std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::wfilebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 55F274: using guessed type int (*off_55F274[2])(); - -//----- (00475330) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) -{ - std::wfilebuf::basic_filebuf((int)a1); - *a1 = off_55F274; -} -// 55F274: using guessed type int (*off_55F274[2])(); - -//----- (00475350) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) -{ - int v4; // eax - - std::wfilebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_55F274; - std::__basic_file::sys_open(this + 40, a2, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::wfilebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 55F274: using guessed type int (*off_55F274[2])(); - -//----- (00475450) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) -{ - int v4; // eax - - std::wfilebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_55F274; - std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::wfilebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 55F274: using guessed type int (*off_55F274[2])(); - -//----- (00475560) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) -{ - std::wfilebuf::basic_filebuf((int)a1); - *a1 = off_55F274; -} -// 55F274: using guessed type int (*off_55F274[2])(); - -//----- (00475580) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600E0; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)a1 + 7); - operator delete(a1); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00475630) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600E0; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (004756D0) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600E0; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00475770) -------------------------------------------------------- -int __cdecl __gnu_cxx::__concat_size_t(char *a1, unsigned int a2, unsigned int a3) -{ - void *v4; // esp - void *v5; // esp - _BYTE *v6; // ebx - unsigned int v7; // eax - int v8; // esi - int v10; // [esp-10h] [ebp-48h] BYREF - _BYTE v11[28]; // [esp-4h] [ebp-3Ch] BYREF - int *v12; // [esp+18h] [ebp-20h] - _BYTE *v13; // [esp+1Ch] [ebp-1Ch] - - v4 = alloca(32); - v5 = alloca(32); - v12 = &v10; - v13 = v11; - v6 = v11; - do - { - *--v6 = byte_557D9D[a3 % 0xA]; - v7 = a3; - a3 /= 0xAu; - } - while ( v7 > 9 ); - v8 = v13 - v6; - if ( v13 - v6 > a2 ) - return -1; - memcpy(a1, (char *)v12 - v8 + 12, v13 - v6); - return v8; -} - -//----- (00475800) -------------------------------------------------------- -int __cdecl __gnu_cxx::__snprintf_lite(char *a1, unsigned int a2, const char *a3, char *a4) -{ - const char *Src; // edx - const char *v5; // esi - const char *v7; // edi - char *v8; // ebx - char v9; // al - char v10; // al - char *v11; // ebp - int v12; // eax - int result; // eax - char *v14; // ebp - char *v15; // ecx - char v16; // al - char *v17; // [esp+30h] [ebp+4h] - - Src = a1; - v5 = a3; - v7 = &a1[a2 - 1]; - v8 = a1; - v9 = *a3; - if ( !*a3 ) - { - result = 0; - goto LABEL_17; - } - if ( a1 >= v7 ) -LABEL_26: - __gnu_cxx::__throw_insufficient_space(Src, v8); - while ( 1 ) - { - if ( v9 != 37 ) - goto LABEL_4; - v10 = v5[1]; - if ( v10 == 115 ) - { - v14 = a4 + 4; - v15 = *(char **)a4; - v16 = *v15; - if ( *v15 ) - { - if ( v7 <= v8 ) - { - v7 = v8; -LABEL_24: - __gnu_cxx::__throw_insufficient_space(Src, v7); - } - while ( 1 ) - { - ++v15; - *v8++ = v16; - v16 = *v15; - if ( !*v15 ) - break; - if ( v7 == v8 ) - goto LABEL_24; - } - } - v5 += 2; - a4 = v14; - goto LABEL_6; - } - if ( v10 != 122 ) - { - if ( v10 == 37 ) - ++v5; - else -LABEL_4: - v10 = *v5; - *v8 = v10; - ++v5; - ++v8; -LABEL_6: - v9 = *v5; - if ( !*v5 ) - break; - goto LABEL_7; - } - if ( v5[2] != 117 ) - goto LABEL_4; - v11 = a4 + 4; - v17 = (char *)Src; - v12 = __gnu_cxx::__concat_size_t(v8, v7 - v8, *(_DWORD *)a4); - Src = v17; - if ( v12 <= 0 ) - goto LABEL_26; - v5 += 3; - v8 += v12; - a4 = v11; - v9 = *v5; - if ( !*v5 ) - break; -LABEL_7: - if ( v8 >= v7 ) - goto LABEL_26; - } - result = v8 - Src; -LABEL_17: - *v8 = 0; - return result; -} - -//----- (00475920) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) -{ - return *(_DWORD *)(a1 + 32); -} - -//----- (00475930) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - int v15; // edx - int result; // eax - const std::locale *v17; // [esp+4h] [ebp-48h] - volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] - _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - v18 = (volatile signed __int32 **)(this + 28); - std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); - std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); - std::locale::~locale(v19); - v14 = *(_DWORD *)(this + 32); - *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); - v15 = *(_DWORD *)(a2 + 36); - *(_DWORD *)(a2 + 32) = v14; - result = *(_DWORD *)(this + 36); - *(_DWORD *)(this + 36) = v15; - *(_DWORD *)(a2 + 36) = result; - return result; -} -// 475998: variable 'v17' is possibly undefined - -//----- (004759F0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) -{ - return fflush(*(FILE **)(a1 + 32)); -} - -//----- (00475A10) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) -{ - int result; // eax - - result = getc(*(FILE **)(a1 + 32)); - *(_DWORD *)(a1 + 36) = result; - return result; -} - -//----- (00475A30) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount) -{ - int result; // eax - int v5; // edx - - result = fread(Buffer, 1u, ElementCount, *(FILE **)(this + 32)); - v5 = -1; - if ( result > 0 ) - v5 = (unsigned __int8)Buffer[result - 1]; - *(_DWORD *)(this + 36) = v5; - return result; -} - -//----- (00475A80) -------------------------------------------------------- -size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount) -{ - return fwrite(Buffer, 1u, ElementCount, this[8]); -} - -//----- (00475AB0) -------------------------------------------------------- -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, fpos_t a3, int a4, int a5) -{ - int v6; // ecx - fpos_t v8; // rax - - *this = -1; - this[1] = -1; - this[2] = 0; - v6 = 0; - if ( a4 ) - v6 = (a4 != 1) + 1; - if ( !fseeko64(*(FILE **)(a2 + 32), a3, v6) ) - { - v8 = ftello64((FILE *)*(_DWORD *)(a2 + 32)); - this[2] = 0; - *(_QWORD *)this = v8; - } - return this; -} - -//----- (00475B40) -------------------------------------------------------- -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( - _DWORD *this, - FILE **a2, - fpos_t a3, - int a4, - int a5, - int a6) -{ - _DWORD *(__thiscall *file)(_DWORD *, int, fpos_t, int, int); // edi - fpos_t v9; // rax - - file = (_DWORD *(__thiscall *)(_DWORD *, int, fpos_t, int, int))(*a2)->_file; - if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - if ( !fseeko64(a2[8], a3, 0) ) - { - v9 = ftello64(a2[8]); - this[2] = 0; - *(_QWORD *)this = v9; - } - return this; - } - else - { - ((void (__thiscall *)(_DWORD *, FILE **, _DWORD, _DWORD, _DWORD, int))file)(this, a2, a3, HIDWORD(a3), 0, a6); - return this; - } -} - -//----- (00475C20) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, int Character) -{ - if ( Character == -1 ) - return -(fflush(this[8]) != 0); - else - return putc(Character, this[8]); -} - -//----- (00475C60) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2) -{ - int result; // eax - - result = a2; - if ( a2 != -1 || (result = *(_DWORD *)(this + 36), result != -1) ) - result = ungetc(result, *(FILE **)(this + 32)); - *(_DWORD *)(this + 36) = -1; - return result; -} - -//----- (00475CA0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) -{ - int v2; // eax - - v2 = getc(*(FILE **)(a1 + 32)); - return ungetc(v2, *(FILE **)(a1 + 32)); -} - -//----- (00475CD0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *a2) -{ - int v3; // eax - int v4; // eax - const std::locale *v5; // [esp+8h] [ebp-58h] - - std::streambuf::basic_streambuf(this, a2, v5); - v3 = *((_DWORD *)a2 + 8); - *this = &off_55F2B4; - *((_DWORD *)a2 + 8) = 0; - this[8] = v3; - v4 = *((_DWORD *)a2 + 9); - *((_DWORD *)a2 + 9) = -1; - this[9] = v4; -} -// 475D05: variable 'v5' is possibly undefined -// 55F2B4: using guessed type int (*off_55F2B4)(); - -//----- (00475D40) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_560424; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - result = a2; - *this = &off_55F2B4; - this[9] = -1; - this[8] = a2; - return result; -} -// 55F2B4: using guessed type int (*off_55F2B4)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00475DA0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *a2) -{ - int v3; // eax - int v4; // eax - const std::locale *v5; // [esp+8h] [ebp-58h] - - std::streambuf::basic_streambuf(this, a2, v5); - v3 = *((_DWORD *)a2 + 8); - *this = &off_55F2B4; - *((_DWORD *)a2 + 8) = 0; - this[8] = v3; - v4 = *((_DWORD *)a2 + 9); - *((_DWORD *)a2 + 9) = -1; - this[9] = v4; -} -// 475DD5: variable 'v5' is possibly undefined -// 55F2B4: using guessed type int (*off_55F2B4)(); - -//----- (00475E10) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_560424; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - result = a2; - *this = &off_55F2B4; - this[9] = -1; - this[8] = a2; - return result; -} -// 55F2B4: using guessed type int (*off_55F2B4)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00475E70) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block) -{ - _DWORD **v2; // ecx - - v2 = (_DWORD **)(Block + 28); - *(v2 - 7) = &off_560424; - std::locale::~locale(v2); - operator delete(Block); -} -// 560424: using guessed type int (*off_560424)(); - -//----- (00475EA0) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) -{ - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 560424: using guessed type int (*off_560424)(); - -//----- (00475EB0) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) -{ - int v3; // eax - int v4; // eax - - std::streambuf::operator=((volatile signed __int32 **)this, a2); - v3 = *(_DWORD *)(a2 + 32); - *(_DWORD *)(a2 + 32) = 0; - *(_DWORD *)(this + 32) = v3; - v4 = *(_DWORD *)(a2 + 36); - *(_DWORD *)(a2 + 36) = -1; - *(_DWORD *)(this + 36) = v4; - return this; -} - -//----- (00475F20) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) -{ - return *(_DWORD *)(a1 + 32); -} - -//----- (00475F30) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - __int16 v15; // dx - int result; // eax - const std::locale *v17; // [esp+4h] [ebp-48h] - volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] - _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - v18 = (volatile signed __int32 **)(this + 28); - std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); - std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); - std::locale::~locale(v19); - v14 = *(_DWORD *)(this + 32); - *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); - v15 = *(_WORD *)(a2 + 36); - *(_DWORD *)(a2 + 32) = v14; - result = *(unsigned __int16 *)(this + 36); - *(_WORD *)(this + 36) = v15; - *(_WORD *)(a2 + 36) = result; - return result; -} -// 475F98: variable 'v17' is possibly undefined - -//----- (00475FF0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) -{ - return fflush(*(FILE **)(a1 + 32)); -} - -//----- (00476010) -------------------------------------------------------- -wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) -{ - wint_t result; // ax - - result = getwc(*(FILE **)(a1 + 32)); - *(_WORD *)(a1 + 36) = result; - return result; -} - -//----- (00476030) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int a2, int a3) -{ - int v4; // edi - wint_t v5; // ax - - v4 = 0; - if ( a3 ) - { - while ( 1 ) - { - v5 = getwc(*(FILE **)(this + 32)); - if ( v5 == 0xFFFF ) - break; - *(_WORD *)(a2 + 2 * v4++) = v5; - if ( a3 == v4 ) - goto LABEL_7; - } - if ( !v4 ) - goto LABEL_6; -LABEL_7: - *(_WORD *)(this + 36) = *(_WORD *)(a2 + 2 * v4 - 2); - return v4; - } - else - { -LABEL_6: - *(_WORD *)(this + 36) = -1; - return 0; - } -} - -//----- (004760B0) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int a2, int a3) -{ - int i; // ebx - - if ( !a3 ) - return 0; - for ( i = 0; i != a3; ++i ) - { - if ( putwc(*(_WORD *)(a2 + 2 * i), this[8]) == 0xFFFF ) - break; - } - return i; -} - -//----- (00476100) -------------------------------------------------------- -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, fpos_t a3, int a4, int a5) -{ - int v6; // ecx - fpos_t v8; // rax - - *this = -1; - this[1] = -1; - this[2] = 0; - v6 = 0; - if ( a4 ) - v6 = (a4 != 1) + 1; - if ( !fseeko64(*(FILE **)(a2 + 32), a3, v6) ) - { - v8 = ftello64((FILE *)*(_DWORD *)(a2 + 32)); - this[2] = 0; - *(_QWORD *)this = v8; - } - return this; -} - -//----- (00476190) -------------------------------------------------------- -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( - _DWORD *this, - FILE **a2, - fpos_t a3, - int a4, - int a5, - int a6) -{ - _DWORD *(__thiscall *file)(_DWORD *, int, fpos_t, int, int); // edi - fpos_t v9; // rax - - file = (_DWORD *(__thiscall *)(_DWORD *, int, fpos_t, int, int))(*a2)->_file; - if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - if ( !fseeko64(a2[8], a3, 0) ) - { - v9 = ftello64(a2[8]); - this[2] = 0; - *(_QWORD *)this = v9; - } - return this; - } - else - { - ((void (__thiscall *)(_DWORD *, FILE **, _DWORD, _DWORD, _DWORD, int))file)(this, a2, a3, HIDWORD(a3), 0, a6); - return this; - } -} - -//----- (00476270) -------------------------------------------------------- -__int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character) -{ - int v2; // eax - - if ( Character == 0xFFFF ) - return -(fflush(this[8]) != 0); - else - LOWORD(v2) = putwc(Character, this[8]); - return v2; -} - -//----- (004762B0) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character) -{ - int result; // eax - - if ( Character == 0xFFFF ) - { - result = *(unsigned __int16 *)(this + 36); - if ( (_WORD)result != 0xFFFF ) - LOWORD(result) = ungetwc(*(_WORD *)(this + 36), *(FILE **)(this + 32)); - *(_WORD *)(this + 36) = -1; - } - else - { - LOWORD(result) = ungetwc(Character, *(FILE **)(this + 32)); - *(_WORD *)(this + 36) = -1; - } - return result; -} - -//----- (00476320) -------------------------------------------------------- -wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) -{ - wint_t v2; // ax - - v2 = getwc(*(FILE **)(a1 + 32)); - return ungetwc(v2, *(FILE **)(a1 + 32)); -} - -//----- (00476350) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *a2) -{ - int v3; // eax - const std::locale *v4; // [esp+8h] [ebp-58h] - - std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v4); - v3 = *((_DWORD *)a2 + 8); - *(_DWORD *)this = &off_55F2F4; - *((_DWORD *)a2 + 8) = 0; - *(_DWORD *)(this + 32) = v3; - *(_WORD *)(this + 36) = *((_WORD *)a2 + 18); - *((_WORD *)a2 + 18) = -1; -} -// 476385: variable 'v4' is possibly undefined -// 55F2F4: using guessed type int (*off_55F2F4)(); - -//----- (004763D0) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_560464; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_55F2F4; - this[8] = a2; - result = -1; - *((_WORD *)this + 18) = -1; - return result; -} -// 55F2F4: using guessed type int (*off_55F2F4)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00476430) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *a2) -{ - int v3; // eax - const std::locale *v4; // [esp+8h] [ebp-58h] - - std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v4); - v3 = *((_DWORD *)a2 + 8); - *(_DWORD *)this = &off_55F2F4; - *((_DWORD *)a2 + 8) = 0; - *(_DWORD *)(this + 32) = v3; - *(_WORD *)(this + 36) = *((_WORD *)a2 + 18); - *((_WORD *)a2 + 18) = -1; -} -// 476465: variable 'v4' is possibly undefined -// 55F2F4: using guessed type int (*off_55F2F4)(); - -//----- (004764B0) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_560464; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_55F2F4; - this[8] = a2; - result = -1; - *((_WORD *)this + 18) = -1; - return result; -} -// 55F2F4: using guessed type int (*off_55F2F4)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00476510) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block) -{ - _DWORD **v2; // ecx - - v2 = (_DWORD **)(Block + 28); - *(v2 - 7) = &off_560464; - std::locale::~locale(v2); - operator delete(Block); -} -// 560464: using guessed type int (*off_560464)(); - -//----- (00476540) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) -{ - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 560464: using guessed type int (*off_560464)(); - -//----- (00476550) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) -{ - int v3; // eax - - std::wstreambuf::operator=((volatile signed __int32 **)this, a2); - v3 = *(_DWORD *)(a2 + 32); - *(_DWORD *)(a2 + 32) = 0; - *(_DWORD *)(this + 32) = v3; - LOWORD(v3) = *(_WORD *)(a2 + 36); - *(_WORD *)(a2 + 36) = -1; - *(_WORD *)(this + 36) = v3; - return this; -} - -//----- (004765C0) -------------------------------------------------------- -void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1) -{ - *a1 = &off_55F334; -} -// 55F334: using guessed type void (__cdecl *off_55F334)(__gnu_cxx::recursive_init_error *__hidden this); - -//----- (004765D0) -------------------------------------------------------- -void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_55F334; - std::exception::~exception(Block); - operator delete(a1); -} -// 4765DC: variable 'Block' is possibly undefined -// 55F334: using guessed type void (__cdecl *off_55F334)(__gnu_cxx::recursive_init_error *__hidden this); - -//----- (00476600) -------------------------------------------------------- -void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55F334; - std::exception::~exception(a1); -} -// 476600: variable 'v1' is possibly undefined -// 55F334: using guessed type void (__cdecl *off_55F334)(__gnu_cxx::recursive_init_error *__hidden this); - -//----- (00476610) -------------------------------------------------------- -void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_55F348; - std::exception::~exception(Block); - operator delete(a1); -} -// 47661C: variable 'Block' is possibly undefined -// 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); - -//----- (00476640) -------------------------------------------------------- -void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55F348; - std::exception::~exception(a1); -} -// 476640: variable 'v1' is possibly undefined -// 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); - -//----- (00476650) -------------------------------------------------------- -void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_55F35C; - std::exception::~exception(Block); - operator delete(a1); -} -// 47665C: variable 'Block' is possibly undefined -// 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00476680) -------------------------------------------------------- -void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55F35C; - std::exception::~exception(a1); -} -// 476680: variable 'v1' is possibly undefined -// 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00476690) -------------------------------------------------------- -void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *a2) -{ - void *v2; // esp - void *v3; // esp - int v4[38]; // [esp+10h] [ebp-98h] BYREF - - HIBYTE(v4[5]) = unk_557D34; - strcpy((char *)&v4[31], " "); - strcpy( - (char *)&v4[6], - "ot enough space for format expansion (Please submit full bug report at https://gcc.gnu.org/bugs/):\n "); - v2 = alloca(a2 - Src + 117); - v3 = alloca(a2 - Src + 117); - qmemcpy(v4, (char *)&v4[5] + 3, 0x68u); - memcpy(&v4[26], Src, a2 - Src); - *((_BYTE *)&v4[26] + v4[3]) = 0; - std::__throw_logic_error((std::logic_error *)v4); -} - -//----- (00476720) -------------------------------------------------------- -void __noreturn __gnu_cxx::__verbose_terminate_handler(void) -{ - struct type_info *v0; // eax - _BYTE *v1; // edx - bool v2; // zf - FILE *v3; // eax - FILE *v4; // eax - FILE *v5; // eax - FILE *v6; // eax - FILE *v7; // eax - FILE *v8; // eax - FILE *(__cdecl *v9)(unsigned int); // [esp+10h] [ebp-5Ch] - char *Block; // [esp+14h] [ebp-58h] - char *Buffer; // [esp+18h] [ebp-54h] - int status[4]; // [esp+5Ch] [ebp-10h] BYREF - - if ( !__gnu_cxx::__verbose_terminate_handler(void)::terminating ) - { - __gnu_cxx::__verbose_terminate_handler(void)::terminating = 1; - v0 = __cxa_current_exception_type(); - if ( v0 ) - { - v1 = (_BYTE *)*((_DWORD *)v0 + 1); - v2 = *v1 == 42; - status[0] = -1; - Buffer = &v1[v2]; - Block = __cxa_demangle(Buffer, 0, 0, status); - v9 = ___acrt_iob_func; - v3 = ___acrt_iob_func(2u); - fwrite("terminate called after throwing an instance of '", 1u, 0x30u, v3); - if ( status[0] ) - { - v4 = v9(2u); - fputs(Buffer, v4); - } - else - { - v6 = v9(2u); - fputs(Block, v6); - } - v5 = v9(2u); - fwrite("'\n", 1u, 2u, v5); - if ( !status[0] ) - free(Block); - __cxa_rethrow(); - } - v7 = ___acrt_iob_func(2u); - fwrite("terminate called without an active exception\n", 1u, 0x2Du, v7); - abort(); - } - v8 = ___acrt_iob_func(2u); - fwrite("terminate called recursively\n", 1u, 0x1Du, v8); - abort(); -} -// 53FCF8: using guessed type char __gnu_cxx::__verbose_terminate_handler(void)::terminating; -// 476720: using guessed type int status[4]; - -//----- (004769F0) -------------------------------------------------------- -void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_55F348; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); -} -// 55B6E8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; -// 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); - -//----- (00476A20) -------------------------------------------------------- -void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_55F35C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); -} -// 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00476A50) -------------------------------------------------------- -void __gnu_cxx::__freeres(void) -{ - if ( Block ) - { - free(Block); - Block = 0; - } -} - -//----- (00476A80) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00476A90) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00476AA0) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00476AB0) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00476AC0) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00476AD0) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00476AE0) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00476AF0) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00476B00) -------------------------------------------------------- -char __userpurge __cxxabiv1::__class_type_info::__do_catch@( - _DWORD *a1@, - __cxxabiv1::__class_type_info *this, - const std::type_info *a3, - void **a4, - unsigned int a5) -{ - char result; // al - - result = std::type_info::operator==(a1, (int)this); - if ( !result && (unsigned int)a4 <= 3 ) - return (*(int (__thiscall **)(__cxxabiv1::__class_type_info *, _DWORD *, const std::type_info *))(*(_DWORD *)this + 20))( - this, - a1, - a3); - return result; -} - -//----- (00476B40) -------------------------------------------------------- -bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int a2, int a3, _DWORD *a4) -{ - bool result; // al - - result = std::type_info::operator==(this, a2); - if ( result ) - { - a4[3] = 8; - a4[1] = 6; - *a4 = a3; - } - return result; -} - -//----- (00476B80) -------------------------------------------------------- -int __userpurge __cxxabiv1::__class_type_info::__do_upcast@( - int *a1@, - __cxxabiv1::__class_type_info *this, - const __class_type_info *a3, - void **a4) -{ - int v4; // eax - int v5; // edx - int v6; // edx - int v8; // [esp+10h] [ebp-1Ch] BYREF - int v9; // [esp+14h] [ebp-18h] - int v10; // [esp+18h] [ebp-14h] - int v11; // [esp+1Ch] [ebp-10h] - - v4 = *a1; - v8 = 0; - v5 = *(_DWORD *)a3; - v9 = 0; - v10 = 16; - v11 = 0; - (*(void (__thiscall **)(int *, __cxxabiv1::__class_type_info *, int, int *))(v4 + 24))(a1, this, v5, &v8); - v6 = 0; - if ( (v9 & 6) == 6 ) - { - v6 = 1; - *(_DWORD *)a3 = v8; - } - return v6; -} - -//----- (00476BF0) -------------------------------------------------------- -int __thiscall __cxxabiv1::__class_type_info::__do_dyncast( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - _DWORD *a8) -{ - bool v9; // al - _DWORD *v10; // [esp+1Ch] [ebp-10h] - - if ( a5 == a7 && (v10 = this, v9 = std::type_info::operator==(this, a6), this = v10, v9) ) - { - a8[2] = a3; - return 0; - } - else - { - if ( std::type_info::operator==(this, a4) ) - { - *a8 = a5; - a8[3] = 1; - a8[1] = a3; - } - return 0; - } -} - -//----- (00476C60) -------------------------------------------------------- -int __stdcall __cxxabiv1::__class_type_info::__do_find_public_src( - __cxxabiv1::__class_type_info *this, - const __cxxabiv1::__class_type_info *a2, - const void *a3, - const __cxxabiv1::__class_type_info *a4, - const void *a5) -{ - return 5 * (a4 == a2) + 1; -} - -//----- (00476C80) -------------------------------------------------------- -char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int a2, int a3, _DWORD *a4) -{ - char result; // al - - result = __cxxabiv1::__class_type_info::__do_upcast((_DWORD *)this, a2, a3, a4); - if ( !result ) - return (*(int (__thiscall **)(_DWORD, int, int, _DWORD *))(**(_DWORD **)(this + 8) + 24))( - *(_DWORD *)(this + 8), - a2, - a3, - a4); - return result; -} - -//----- (00476CE0) -------------------------------------------------------- -int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - _DWORD *a8) -{ - bool v8; // al - _DWORD *v9; // ecx - int v10; // edx - bool v12; // al - - v8 = std::type_info::operator==(this, a4); - v9 = this; - v10 = a7; - if ( v8 ) - { - *a8 = a5; - a8[1] = a3; - if ( a2 < 0 ) - { - if ( a2 == -2 ) - a8[3] = 1; - } - else - { - a8[3] = 5 * (a7 == a2 + a5) + 1; - } - } - else - { - if ( a5 != a7 ) - return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( - v9[2], - a2, - a3, - a4, - a5, - a6, - v10, - a8); - v12 = std::type_info::operator==(this, a6); - v9 = this; - v10 = a7; - if ( !v12 ) - return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( - v9[2], - a2, - a3, - a4, - a5, - a6, - v10, - a8); - a8[2] = a3; - } - return 0; -} - -//----- (00476DE0) -------------------------------------------------------- -int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@( - int a1@, - __cxxabiv1::__si_class_type_info *this, - const __cxxabiv1::__class_type_info *a3, - const void *a4, - const __cxxabiv1::__class_type_info *a5, - const void *a6) -{ - __cxxabiv1::__si_class_type_info *v7; // edx - bool v9; // al - - v7 = this; - if ( a5 == a3 && (v9 = std::type_info::operator==((_DWORD *)a1, (int)a4), v7 = this, v9) ) - return 6; - else - return (*(int (__thiscall **)(_DWORD, __cxxabiv1::__si_class_type_info *, const __cxxabiv1::__class_type_info *, const void *, const __cxxabiv1::__class_type_info *))(**(_DWORD **)(a1 + 8) + 32))( - *(_DWORD *)(a1 + 8), - v7, - a3, - a4, - a5); -} - -//----- (00476E50) -------------------------------------------------------- -int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4) -{ - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // ebx - bool v9; // cf - int v10; // eax - int v11; // esi - char *v12; // edx - int v13; // eax - int v14; // eax - int v15; // ecx - int v16; // eax - _DWORD *v17; // ecx - int result; // eax - bool v19; // al - char v20; // [esp+13h] [ebp-39h] - unsigned __int8 v21; // [esp+13h] [ebp-39h] - int v22; // [esp+18h] [ebp-34h] - int v23; // [esp+20h] [ebp-2Ch] BYREF - int v24; // [esp+24h] [ebp-28h] - int v25; // [esp+28h] [ebp-24h] - _DWORD *v26; // [esp+2Ch] [ebp-20h] - - LOBYTE(v5) = __cxxabiv1::__class_type_info::__do_upcast(this, a2, (int)a3, a4); - v6 = v5; - if ( (_BYTE)v5 ) - return v6; - v22 = a4[2]; - if ( (v22 & 0x10) != 0 ) - v22 = this[2]; - v7 = this[3]; - v8 = v7 - 1; - if ( !v7 ) - { -LABEL_34: - LOBYTE(v6) = a4[1] != 0; - return v6; - } - while ( 1 ) - { - while ( 1 ) - { - v23 = 0; - v24 = 0; - v25 = v22; - v10 = this[2 * v8 + 5]; - v26 = 0; - v11 = v10 & 2; - v6 = v10 & 1; - v20 = v10 & 1; - if ( !(v11 | v22 & 1) ) - goto LABEL_9; - v12 = 0; - if ( a3 ) - { - v13 = v10 >> 8; - if ( v20 ) - v13 = *(_DWORD *)(*a3 + v13); - v12 = (char *)a3 + v13; - } - v6 = (*(int (__thiscall **)(_DWORD, int, char *, int *))(*(_DWORD *)this[2 * v8 + 4] + 24))( - this[2 * v8 + 4], - a2, - v12, - &v23); - if ( !(_BYTE)v6 ) - goto LABEL_9; - if ( v26 == (_DWORD *)8 && v20 ) - v26 = (_DWORD *)this[2 * v8 + 4]; - if ( !v11 && v24 > 3 ) - v24 &= ~2u; - v14 = a4[3]; - if ( v14 ) - break; - v15 = v25; - *a4 = v23; - v16 = v24; - a4[2] = v15; - v17 = v26; - a4[1] = v16; - a4[3] = v17; - if ( v16 <= 3 ) - return v6; - if ( (v16 & 2) != 0 ) - { - if ( (this[2] & 1) == 0 ) - return v6; - goto LABEL_9; - } - if ( (v16 & 1) == 0 || (this[2] & 2) == 0 ) - return v6; - v9 = v8-- == 0; - if ( v9 ) - goto LABEL_34; - } - if ( *a4 != v23 ) - break; - if ( !*a4 ) - { - if ( v26 == (_DWORD *)8 || v14 == 8 || (v21 = v6, v19 = std::type_info::operator==(v26, a4[3]), v6 = v21, !v19) ) - { - a4[1] = 2; - return v6; - } - } - a4[1] |= v24; -LABEL_9: - v9 = v8-- == 0; - if ( v9 ) - goto LABEL_34; - } - *a4 = 0; - result = v6; - a4[1] = 2; - return result; -} -// 476E78: variable 'v5' is possibly undefined - -//----- (00477080) -------------------------------------------------------- -int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast( - _DWORD *this, - int a2, - int a3, - int a4, - _DWORD *a5, - int a6, - _DWORD *a7, - int *a8) -{ - unsigned int v8; // eax - int v9; // eax - int v10; // edi - int v11; // esi - int v12; // ebx - int v13; // edx - int v14; // eax - bool v15; // cf - int v16; // eax - int v17; // ecx - int v18; // eax - int v19; // edx - unsigned __int8 v20; // si - int v21; // eax - int v22; // edx - int v24; // eax - int v25; // eax - int v27; // [esp+40h] [ebp-58h] - int v28; // [esp+44h] [ebp-54h] - char v29; // [esp+44h] [ebp-54h] - unsigned int v30; // [esp+48h] [ebp-50h] - int v31; // [esp+4Ch] [ebp-4Ch] - int v32; // [esp+54h] [ebp-44h] - unsigned __int8 v33; // [esp+59h] [ebp-3Fh] - char v34; // [esp+5Ah] [ebp-3Eh] - char v35; // [esp+5Bh] [ebp-3Dh] - int v36; // [esp+68h] [ebp-30h] BYREF - int v37; // [esp+6Ch] [ebp-2Ch] - int v38; // [esp+70h] [ebp-28h] - int v39; // [esp+74h] [ebp-24h] - int v40; // [esp+78h] [ebp-20h] - - if ( (a8[4] & 0x10) != 0 ) - a8[4] = this[2]; - if ( a5 == a7 && std::type_info::operator==(this, a6) ) - { - a8[2] = a3; - return 0; - } - if ( std::type_info::operator==(this, a4) ) - { - *a8 = (int)a5; - a8[1] = a3; - if ( a2 >= 0 ) - { - a8[3] = 5 * (a7 == (_DWORD *)((char *)a5 + a2)) + 1; - return 0; - } - v33 = 0; - if ( a2 == -2 ) - a8[3] = 1; - return v33; - } - v8 = 0; - v33 = 0; - v35 = 0; - v34 = 1; - if ( a2 >= 0 ) - v8 = (unsigned int)a7 - a2; - v30 = v8; - while ( 1 ) - { - v9 = this[3]; - v10 = v9 - 1; - if ( v9 ) - break; -LABEL_59: - v35 &= v34; - if ( !v35 ) - return v33; - v34 = 0; - } - while ( 1 ) - { - while ( 1 ) - { - v16 = a8[4]; - v36 = 0; - v37 = 0; - v17 = a3; - v29 = v16; - v40 = v16; - v38 = 0; - v18 = this[2 * v10 + 5]; - v39 = 0; - v19 = v18 >> 8; - if ( (v18 & 1) != 0 ) - { - v17 = a3 | 1; - v19 = *(_DWORD *)(*a5 + v19); - } - if ( !v30 || v34 != v30 < (unsigned int)a5 + v19 ) - break; - v35 = 1; -LABEL_30: - v15 = v10-- == 0; - if ( v15 ) - goto LABEL_59; - } - if ( (v18 & 2) != 0 ) - break; - if ( a2 != -2 || (v29 & 3) != 0 ) - { - v17 &= ~2u; - break; - } - v15 = v10-- == 0; - if ( v15 ) - goto LABEL_59; - } - v20 = (*(int (__thiscall **)(_DWORD, int, int, int, int, int, _DWORD *, int *))(*(_DWORD *)this[2 * v10 + 4] + 28))( - this[2 * v10 + 4], - a2, - v17, - a4, - (int)a5 + v19, - a6, - a7, - &v36); - v12 = v39; - v21 = v38 | a8[2]; - v28 = v21; - v22 = v39; - a8[2] = v21; - if ( (v22 & 0xFFFFFFFB) == 2 ) - { - v25 = v36; - a8[3] = v12; - *a8 = v25; - a8[1] = v37; - return v20; - } - v13 = v36; - v27 = *a8; - if ( v33 ) - { - if ( !v27 ) - { - if ( !v36 ) - goto LABEL_29; - v11 = a8[3]; - if ( v21 <= 3 ) - goto LABEL_43; - goto LABEL_15; - } - } - else if ( !*a8 ) - { - v24 = v37; - *a8 = v36; - a8[1] = v24; - if ( v13 && v28 ) - { - v33 = v20; - if ( (this[2] & 1) == 0 ) - return v33; - } - else - { - v33 = v20; - } - goto LABEL_29; - } - if ( v36 == v27 ) - { - a8[1] |= v37; - goto LABEL_29; - } - if ( !v36 && !v20 ) - { -LABEL_29: - if ( v28 == 4 ) - return v33; - goto LABEL_30; - } - v11 = a8[3]; - if ( v21 <= 3 ) - goto LABEL_43; -LABEL_15: - if ( (v21 & 1) == 0 || (a8[4] & 2) == 0 ) - { - if ( !v11 ) - v11 = 1; - if ( !v12 ) - v12 = 1; - v31 = v11; - v32 = v12; - goto LABEL_22; - } -LABEL_43: - v31 = v11; - v32 = v12; - if ( v11 > 0 ) - goto LABEL_44; - if ( v12 <= 3 || (v12 & 1) != 0 && (this[2] & 2) != 0 ) - { - if ( a2 < 0 ) - { - if ( a2 != -2 ) - { - v11 = (*(int (__fastcall **)(int, int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, v36, a2, v27, a6, a7); - v31 = v11; -LABEL_44: - if ( v12 <= 0 ) - { - if ( v11 > 3 && ((v11 & 1) == 0 || (this[2] & 2) == 0) ) - { - if ( (v11 ^ 1) > 3 ) - { -LABEL_80: - v12 = v11; - v14 = v31 & 2; - goto LABEL_26; - } -LABEL_55: - v28 = a8[2]; -LABEL_56: - *a8 = 0; - a8[3] = 1; - v33 = 1; - goto LABEL_29; - } - v13 = v36; - if ( a2 < 0 ) - { - if ( a2 != -2 ) - { - v12 = (*(int (__thiscall **)(int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, a2, v36, a6, a7); - v32 = v12; - if ( (v12 ^ v31) <= 3 ) - goto LABEL_51; -LABEL_23: - v13 = v36; - if ( v12 <= 3 ) - { - v12 = v11; - v14 = v11 & 2; - goto LABEL_26; - } - goto LABEL_24; - } -LABEL_79: - if ( (v31 ^ 1) > 3 ) - goto LABEL_80; - goto LABEL_55; - } - if ( a7 != (_DWORD *)(v36 + a2) ) - goto LABEL_79; - if ( (v11 ^ 6) <= 3 ) - { - v32 = 6; -LABEL_51: - if ( (v31 & v32) > 3 ) - { - *a8 = 0; - a8[3] = 2; - return 1; - } - goto LABEL_55; - } -LABEL_99: - v14 = 2; - v12 = 6; - goto LABEL_25; - } -LABEL_22: - if ( (v12 ^ v31) <= 3 ) - goto LABEL_51; - goto LABEL_23; - } - if ( v12 <= 0 ) - { -LABEL_78: - v31 = 1; - v11 = 1; - goto LABEL_79; - } - } - else - { - if ( a7 == (_DWORD *)(a2 + v27) ) - { - v31 = 6; - v11 = 6; - if ( v12 <= 0 ) - goto LABEL_80; - goto LABEL_22; - } - if ( v12 <= 0 ) - { - if ( a7 == (_DWORD *)(v36 + a2) ) - goto LABEL_99; - goto LABEL_78; - } - } - v11 = 1; - if ( (v12 ^ 1) <= 3 ) - goto LABEL_56; - goto LABEL_23; - } - if ( (v12 ^ 1) <= 3 ) - goto LABEL_56; -LABEL_24: - v14 = v12 & 2; -LABEL_25: - *a8 = v13; - v33 = 0; - a8[1] = v37; -LABEL_26: - a8[3] = v12; - if ( !v14 && (v12 & 1) != 0 ) - { - v28 = a8[2]; - goto LABEL_29; - } - return 0; -} - -//----- (00477730) -------------------------------------------------------- -int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@( - _DWORD *a1@, - __cxxabiv1::__vmi_class_type_info *this, - const __cxxabiv1::__class_type_info *a3, - const void *a4, - const __cxxabiv1::__class_type_info *a5, - const void *a6) -{ - int v7; // eax - int v8; // ebx - int v9; // edx - int v10; // eax - int result; // eax - bool v13; // dl - char v14; // [esp+1Fh] [ebp-1Dh] - - if ( a3 != a5 || (v13 = std::type_info::operator==(a1, (int)a4), result = 6, !v13) ) - { - v7 = a1[3]; - v8 = v7 - 1; - if ( !v7 ) - return 1; - while ( 1 ) - { - v9 = a1[2 * v8 + 5]; - if ( (v9 & 2) != 0 ) - { - v10 = v9 >> 8; - v14 = v9 & 1; - if ( (v9 & 1) != 0 ) - { - if ( this == (__cxxabiv1::__vmi_class_type_info *)-3 ) - goto LABEL_8; - v10 = *(_DWORD *)(*(_DWORD *)a3 + v10); - } - result = (*(int (__thiscall **)(_DWORD, __cxxabiv1::__vmi_class_type_info *, int, const void *, const __cxxabiv1::__class_type_info *))(*(_DWORD *)a1[2 * v8 + 4] + 32))( - a1[2 * v8 + 4], - this, - (int)a3 + v10, - a4, - a5); - if ( result > 3 ) - { - if ( v14 ) - return result | 1; - return result; - } - } -LABEL_8: - if ( v8-- == 0 ) - return 1; - } - } - return result; -} - -//----- (00477810) -------------------------------------------------------- -const char *`anonymous namespace'::io_error_category::name() -{ - return "iostream"; -} - -//----- (00477820) -------------------------------------------------------- -int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3) -{ - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_BYTE *)(this + 8) = 0; - if ( a3 == 1 ) - std::string::_M_replace((unsigned int *)this, 0, 0, "iostream error", 0xEu); - else - std::string::_M_replace((unsigned int *)this, 0, 0, "Unknown error", 0xDu); - return this; -} - -//----- (00477910) -------------------------------------------------------- -_anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition( - _anonymous_namespace_::system_error_category *this, - int a2) -{ - return this; -} - -//----- (00477970) -------------------------------------------------------- -const char *`anonymous namespace'::system_error_category::name() -{ - return "system"; -} - -//----- (00477980) -------------------------------------------------------- -const char *`anonymous namespace'::generic_error_category::name() -{ - return "generic"; -} - -//----- (00477990) -------------------------------------------------------- -_DWORD *__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11]( - _DWORD *this, - int a2, - int ErrorMessage) -{ - void *v4; // edi - char *v5; // eax - char *Src; // esi - size_t v7; // eax - size_t Size; // ebp - void *v10; // eax - size_t v11[8]; // [esp+1Ch] [ebp-20h] BYREF - - v4 = this + 2; - v5 = strerror(ErrorMessage); - *this = v4; - if ( !v5 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Src = v5; - v7 = strlen(v5); - v11[0] = v7; - Size = v7; - if ( v7 > 0xF ) - { - v10 = std::string::_M_create(v11, 0); - *this = v10; - v4 = v10; - this[2] = v11[0]; - goto LABEL_9; - } - if ( v7 != 1 ) - { - if ( !v7 ) - goto LABEL_5; -LABEL_9: - memcpy(v4, Src, Size); - v7 = v11[0]; - v4 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Src; -LABEL_5: - this[1] = v7; - *((_BYTE *)v4 + v7) = 0; - return this; -} -// 477990: using guessed type size_t var_20[8]; - -//----- (00477A40) -------------------------------------------------------- -int WXML::EXPRLib::NonTerminal::GetClass() -{ - return 2; -} - -//----- (00477A48) -------------------------------------------------------- -int WXML::EXPRLib::EPS::GetClass() -{ - return 4; -} - -//----- (00477A50) -------------------------------------------------------- -int WXML::EXPRLib::Action::GetClass() -{ - return 3; -} - -//----- (00477A58) -------------------------------------------------------- -int WXML::EXPRLib::Terminal::GetClass() -{ - return 1; -} - -//----- (00477A60) -------------------------------------------------------- -const char *__gnu_cxx::__concurrence_lock_error::what() -{ - return "__gnu_cxx::__concurrence_lock_error"; -} - -//----- (00477A70) -------------------------------------------------------- -const char *__gnu_cxx::__concurrence_unlock_error::what() -{ - return "__gnu_cxx::__concurrence_unlock_error"; -} - -//----- (00477A80) -------------------------------------------------------- -int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) -{ - unsigned int v2; // eax - int v3; // edx - - v2 = *this; - v3 = 1; - if ( *this <= a2 ) - { - v3 = *(_DWORD *)(v2 - 12); - LOBYTE(v3) = v2 + 2 * v3 < a2; - } - return v3; -} - -//----- (00477AB0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_last_of(this, String, a3, v4); -} - -//----- (00477AF0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // ebx - int v5; // eax - unsigned int v6; // eax - _WORD *v7; // eax - int v8; // edx - - v4 = a3; - v5 = *(_DWORD *)(*this - 12); - if ( !v5 || !a4 ) - return -1; - v6 = v5 - 1; - if ( v6 <= a3 ) - v4 = v6; - while ( !a2 ) - { -LABEL_9: - if ( v4-- == 0 ) - return v4; - } - v7 = a2; - v8 = a4; - while ( *(_WORD *)(*this + 2 * v4) != *v7 ) - { - ++v7; - if ( !--v8 ) - goto LABEL_9; - } - return v4; -} - -//----- (00477B60) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::find_last_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (00477B90) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - - result = -1; - v4 = *(_DWORD *)(*this - 12); - if ( v4 ) - { - result = v4 - 1; - if ( a3 <= v4 - 1 ) - result = a3; - do - { - if ( a2 == *(_WORD *)(*this + 2 * result) ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00477BD0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_first_of(this, String, a3, v4); -} - -//----- (00477C10) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // ebp - int v6; // edx - _WORD *v7; // eax - - if ( !a4 ) - return -1; - v4 = a3; - v5 = *(_DWORD *)(*this - 12); - if ( v5 <= a3 ) - return -1; - while ( !a2 ) - { -LABEL_7: - if ( v5 <= ++v4 ) - return -1; - } - v6 = a4; - v7 = a2; - while ( *(_WORD *)(*this + 2 * v4) != *v7 ) - { - ++v7; - if ( !--v6 ) - goto LABEL_7; - } - return v4; -} - -//----- (00477C70) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::find_first_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (00477CA0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(int *this, __int16 a2, unsigned int a3) -{ - return std::wstring::find(this, a2, a3); -} - -//----- (00477CB0) -------------------------------------------------------- -void *__thiscall std::wstring::get_allocator(void *this, int a2) -{ - return this; -} - -//----- (00477CC0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) -{ - unsigned int result; // eax - - result = a2 + 536870910 - *(_DWORD *)(*this - 12); - if ( result < a3 ) - std::__throw_length_error(a4); - return result; -} - -//----- (00477CF0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_last_not_of(this, String, a3, v4); -} - -//----- (00477D30) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - int v4; // ebx - int v5; // eax - unsigned int v6; // eax - _WORD *v7; // eax - int v8; // edx - - v4 = -1; - v5 = *(_DWORD *)(*this - 12); - if ( v5 ) - { - v6 = v5 - 1; - v4 = a3; - if ( v6 <= a3 ) - v4 = v6; - while ( a4 && a2 ) - { - v7 = a2; - v8 = a4; - while ( *(_WORD *)(*this + 2 * v4) != *v7 ) - { - ++v7; - if ( !--v8 ) - return v4; - } - if ( v4-- == 0 ) - return v4; - } - } - return v4; -} - -//----- (00477DA0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::find_last_not_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (00477DD0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(_DWORD *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - - result = -1; - v4 = *(_DWORD *)(*this - 12); - if ( v4 ) - { - result = v4 - 1; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_WORD *)(*this + 2 * result) != a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00477E10) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int a3) -{ - unsigned int v4; // ebx - size_t v5; // eax - int v6; // esi - unsigned int v7; // edi - size_t v8; // ebp - __int16 v9; // cx - wchar_t *v10; // eax - size_t v11; // edx - - v4 = a3; - v5 = wcslen(String); - v6 = *this; - v7 = *(_DWORD *)(v6 - 12); - if ( a3 < v7 ) - { - v8 = v5; - if ( !v5 ) - return v4; - v9 = *(_WORD *)(v6 + 2 * a3); - if ( !String ) - return v4; - while ( 1 ) - { - v10 = String; - v11 = v8; - while ( v9 != *v10 ) - { - ++v10; - if ( !--v11 ) - return v4; - } - if ( ++v4 == v7 ) - break; - v9 = *(_WORD *)(v6 + 2 * v4); - } - } - return -1; -} - -//----- (00477EA0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4) -{ - int v4; // esi - unsigned int v5; // ebx - unsigned int v6; // edi - __int16 v7; // cx - _WORD *v8; // eax - int v9; // edx - - v4 = *this; - v5 = a3; - v6 = *(_DWORD *)(*this - 12); - if ( a3 < v6 ) - { - if ( !a4 ) - return v5; - v7 = *(_WORD *)(v4 + 2 * a3); - if ( !a2 ) - return v5; - while ( 1 ) - { - v8 = a2; - v9 = a4; - while ( v7 != *v8 ) - { - ++v8; - if ( !--v9 ) - return v5; - } - if ( v6 == ++v5 ) - break; - v7 = *(_WORD *)(v4 + 2 * v5); - } - } - return -1; -} - -//----- (00477F20) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(_DWORD *this, _DWORD *a2, unsigned int a3) -{ - unsigned int v3; // ebx - unsigned int v4; // esi - int v5; // edx - _WORD *i; // eax - - v3 = a3; - v4 = *(_DWORD *)(*this - 12); - if ( a3 < v4 ) - { - if ( !*(_DWORD *)(*a2 - 12) ) - return v3; - do - { - v5 = *(_DWORD *)(*a2 - 12); - for ( i = (_WORD *)*a2; *(_WORD *)(*this + 2 * v3) != *i; ++i ) - { - if ( !--v5 ) - return v3; - } - ++v3; - } - while ( v3 != v4 ); - } - return -1; -} - -//----- (00477F90) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3) -{ - int v3; // edx - int result; // eax - unsigned int v5; // ecx - - v3 = *this; - result = a3; - v5 = *(_DWORD *)(*this - 12); - if ( a3 >= v5 ) - return -1; - while ( *(_WORD *)(v3 + 2 * result) == a2 ) - { - if ( ++result == v5 ) - return -1; - } - return result; -} - -//----- (00477FD0) -------------------------------------------------------- -int __thiscall std::wstring::at(int *this, unsigned int a2) -{ - int v2; // edx - unsigned int v3; // ecx - - v2 = *this; - v3 = *(_DWORD *)(*this - 12); - if ( a2 >= v3 ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, v3); - return v2 + 2 * a2; -} - -//----- (00478000) -------------------------------------------------------- -int __fastcall std::wstring::end(_DWORD *a1) -{ - return *a1 + 2 * *(_DWORD *)(*a1 - 12); -} - -//----- (00478010) -------------------------------------------------------- -int __fastcall std::wstring::_Rep::_M_is_leaked(int a1) -{ - return *(_DWORD *)(a1 + 8) >> 31; -} - -//----- (00478020) -------------------------------------------------------- -bool __fastcall std::wstring::_Rep::_M_is_shared(int a1) -{ - return *(_DWORD *)(a1 + 8) > 0; -} - -//----- (00478030) -------------------------------------------------------- -int __fastcall std::wstring::back(_DWORD *a1) -{ - return *a1 + 2 * *(_DWORD *)(*a1 - 12) - 2; -} - -//----- (00478040) -------------------------------------------------------- -int __fastcall std::wstring::cend(_DWORD *a1) -{ - return *a1 + 2 * *(_DWORD *)(*a1 - 12); -} - -//----- (00478050) -------------------------------------------------------- -int __thiscall std::wstring::copy(int *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - int v4; // ecx - unsigned int v5; // ebx - unsigned int v6; // ebx - _WORD *Src; // eax - - v4 = *this; - v5 = *(_DWORD *)(v4 - 12); - if ( a4 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::copy", - a4, - *(_DWORD *)(v4 - 12)); - v6 = v5 - a4; - if ( v6 > a3 ) - v6 = a3; - if ( !v6 ) - return v6; - Src = (_WORD *)(v4 + 2 * a4); - if ( v6 != 1 ) - { - memcpy(a2, Src, 2 * v6); - return v6; - } - *a2 = *Src; - return 1; -} - -//----- (004780D0) -------------------------------------------------------- -int __fastcall std::wstring::data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004780E0) -------------------------------------------------------- -int __thiscall std::wstring::find(int *this, wchar_t *String, int a3) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::find(this, String, a3, v4); -} - -//----- (00478120) -------------------------------------------------------- -int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // edx - _WORD *v5; // eax - int v6; // edi - unsigned int v7; // edx - unsigned int v8; // edx - int v10; // edx - __int16 v11; // bx - unsigned int v12; // edx - int v13; // ecx - int v14; // [esp+4h] [ebp-14h] - - v14 = *this; - v4 = *(_DWORD *)(*this - 12); - if ( a4 ) - { - if ( v4 > a3 && (v5 = (_WORD *)(v14 + 2 * a3), v6 = v14 + 2 * v4, v7 = v4 - a3, a4 <= v7) && (v8 = 1 - a4 + v7) != 0 ) - { -LABEL_5: - while ( *a2 != *v5 ) - { - ++v5; - if ( !--v8 ) - return -1; - } - if ( a2 != v5 ) - { - v10 = 0; - while ( v10 != a4 - 1 ) - { - v11 = v5[++v10]; - if ( v11 != a2[v10] ) - { - v12 = (v6 - (int)++v5) >> 1; - if ( a4 <= v12 ) - { - v8 = 1 - a4 + v12; - if ( v8 ) - goto LABEL_5; - } - return -1; - } - } - } - return ((int)v5 - v14) >> 1; - } - else - { - return -1; - } - } - else - { - v13 = -1; - if ( v4 >= a3 ) - return a3; - return v13; - } -} - -//----- (00478210) -------------------------------------------------------- -int __thiscall std::wstring::find(int *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::find(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (00478240) -------------------------------------------------------- -int __thiscall std::wstring::find(int *this, __int16 a2, unsigned int a3) -{ - int v3; // ebx - int result; // eax - unsigned int v5; // edx - unsigned int v6; // edx - _WORD *i; // eax - - v3 = *this; - result = -1; - v5 = *(_DWORD *)(*this - 12); - if ( a3 < v5 ) - { - v6 = v5 - a3; - for ( i = (_WORD *)(v3 + 2 * a3); *i != a2; ++i ) - { - if ( !--v6 ) - return -1; - } - return ((int)i - v3) >> 1; - } - return result; -} - -//----- (00478290) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (004782A0) -------------------------------------------------------- -int __fastcall std::wstring::size(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12); -} - -//----- (004782B0) -------------------------------------------------------- -int __fastcall std::wstring::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004782C0) -------------------------------------------------------- -int __fastcall std::wstring::c_str(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004782D0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (004782E0) -------------------------------------------------------- -bool __fastcall std::wstring::empty(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) == 0; -} - -//----- (004782F0) -------------------------------------------------------- -int __fastcall std::wstring::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00478300) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::rfind(this, String, a3, v4); -} - -//----- (00478340) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - int v4; // ebx - int v5; // esi - unsigned int v6; // eax - unsigned int v7; // eax - int v8; // esi - _WORD *v9; // eax - _WORD *v10; // edx - unsigned int v11; // ecx - - v4 = -1; - v5 = a3; - v6 = *(_DWORD *)(*this - 12); - if ( a4 <= v6 ) - { - v7 = v6 - a4; - if ( v7 <= a3 ) - v5 = v7; - v4 = v5; - v8 = *this + 2 * v5; - if ( a4 ) - { - while ( 1 ) - { - v9 = (_WORD *)v8; - if ( (_WORD *)v8 == a2 ) - break; - if ( a2 ) - { - v10 = a2; - v11 = a4; - while ( *v9 == *v10 ) - { - ++v9; - ++v10; - if ( !--v11 ) - return v4; - } - } - v8 -= 2; - if ( !v4 ) - return -1; - --v4; - } - } - } - return v4; -} -// 4783A9: conditional instruction was optimized away because %arg_8.4!=0 - -//----- (004783C0) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::rfind(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (004783F0) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - - result = -1; - v4 = *(_DWORD *)(*this - 12); - if ( v4 ) - { - result = v4 - 1; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_WORD *)(*this + 2 * result) == a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00478430) -------------------------------------------------------- -int __fastcall std::wstring::_M_rep(_DWORD *a1) -{ - return *a1 - 12; -} - -//----- (00478440) -------------------------------------------------------- -int __fastcall std::wstring::cbegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00478450) -------------------------------------------------------- -int __fastcall std::wstring::length(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12); -} - -//----- (00478460) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); - return result; -} - -//----- (00478480) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // eax - unsigned int v6; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::substr", - a3, - *(_DWORD *)(*a2 - 12)); - v6 = v5 - a3; - if ( v6 > a4 ) - v6 = a4; - *this = std::wstring::_S_construct((_WORD *)(*a2 + 2 * a3), *a2 + 2 * (a3 + v6)); - return this; -} - -//----- (004784F0) -------------------------------------------------------- -int __fastcall std::wstring::_M_data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00478500) -------------------------------------------------------- -int __fastcall std::wstring::_M_iend(_DWORD *a1) -{ - return *a1 + 2 * *(_DWORD *)(*a1 - 12); -} - -//----- (00478510) -------------------------------------------------------- -int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String) -{ - wchar_t *v3; // ebx - size_t v4; // esi - size_t v5; // edx - size_t v6; // eax - wchar_t *v7; // edx - size_t v9; // [esp+18h] [ebp-24h] - size_t v10; // [esp+1Ch] [ebp-20h] - - v3 = String; - v4 = *((_DWORD *)*this - 3); - v5 = wcslen(String); - v10 = v5; - v6 = v4; - if ( v5 <= v4 ) - v6 = v5; - v9 = v6; - if ( !v6 ) - return v4 - v10; - v7 = *this; - if ( String == *this ) - return v4 - v10; - if ( (v7 != 0) != (String != 0) ) - return String == 0 ? 1 : -1; - while ( *v7 == *v3 ) - { - ++v7; - ++v3; - if ( !--v9 ) - return v4 - v10; - } - return *v7 < *v3 ? -1 : 1; -} - -//----- (004785B0) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, _WORD **a2) -{ - _WORD *v2; // eax - _WORD *v3; // edx - unsigned int v4; // ebx - unsigned int v5; // esi - unsigned int v6; // ecx - - v2 = (_WORD *)*this; - v3 = *a2; - v4 = *(_DWORD *)(*this - 12); - v5 = *((_DWORD *)*a2 - 3); - v6 = v4; - if ( v5 <= v4 ) - v6 = *((_DWORD *)*a2 - 3); - if ( !v6 || v3 == v2 ) - return v4 - v5; - while ( *v2 == *v3 ) - { - ++v2; - ++v3; - if ( !--v6 ) - return v4 - v5; - } - return *v2 < *v3 ? -1 : 1; -} - -//----- (00478600) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) -{ - unsigned int v4; // eax - unsigned int v5; // ebx - wchar_t *v6; // esi - unsigned int v7; // ebx - unsigned int v9; // ebx - size_t v10; // ecx - size_t v11; // eax - wchar_t *v12; // edx - unsigned int v14; // [esp+1Ch] [ebp-20h] - - v4 = a3; - v5 = *(_DWORD *)(*this - 12); - v6 = String; - if ( a2 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - *(_DWORD *)(*this - 12)); - v7 = v5 - a2; - if ( v7 <= a3 ) - v4 = v7; - v9 = v4; - v14 = v4; - v10 = wcslen(String); - v11 = v9; - if ( v10 <= v9 ) - v11 = v10; - if ( !v11 ) - return v14 - v10; - v12 = (wchar_t *)(*this + 2 * a2); - if ( v12 == String ) - return v14 - v10; - if ( (v12 != 0) != (String != 0) ) - return String == 0 ? 1 : -1; - while ( *v12 == *v6 ) - { - ++v12; - ++v6; - if ( !--v11 ) - return v14 - v10; - } - return *v12 < *v6 ? -1 : 1; -} - -//----- (004786E0) -------------------------------------------------------- -int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _WORD *a4, unsigned int a5) -{ - int v5; // esi - unsigned int v6; // eax - _WORD *v7; // ecx - unsigned int v8; // eax - unsigned int v9; // edi - _WORD *v10; // edx - int v11; // esi - - v5 = *this; - v6 = *(_DWORD *)(*this - 12); - v7 = a4; - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - v6); - v8 = v6 - a2; - if ( v8 > a3 ) - v8 = a3; - v9 = a5; - if ( v8 <= a5 ) - v9 = v8; - if ( !v9 ) - return v8 - a5; - v10 = (_WORD *)(v5 + 2 * a2); - if ( v10 == a4 ) - return v8 - a5; - v11 = 1; - if ( !a4 ) - return v11; - while ( *v10 == *v7 ) - { - ++v10; - ++v7; - if ( !--v9 ) - return v8 - a5; - } - return *v10 < *v7 ? -1 : 1; -} - -//----- (00478780) -------------------------------------------------------- -int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _WORD **a4) -{ - int v4; // esi - unsigned int v5; // eax - unsigned int v6; // eax - _WORD *v7; // edx - unsigned int v8; // ecx - unsigned int v9; // edi - _WORD *v10; // ebx - - v4 = *this; - v5 = *(_DWORD *)(*this - 12); - if ( a2 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - *(_DWORD *)(*this - 12)); - v6 = v5 - a2; - if ( v6 > a3 ) - v6 = a3; - v7 = *a4; - v8 = v6; - v9 = *((_DWORD *)*a4 - 3); - if ( v9 <= v6 ) - v8 = *((_DWORD *)*a4 - 3); - if ( !v8 ) - return v6 - v9; - v10 = (_WORD *)(v4 + 2 * a2); - if ( v10 == v7 ) - return v6 - v9; - while ( *v10 == *v7 ) - { - ++v10; - ++v7; - if ( !--v8 ) - return v6 - v9; - } - return *v10 < *v7 ? -1 : 1; -} - -//----- (00478810) -------------------------------------------------------- -int __thiscall std::wstring::compare( - int *this, - unsigned int a2, - unsigned int a3, - _DWORD *a4, - unsigned int a5, - unsigned int a6) -{ - int v6; // edi - unsigned int v7; // eax - unsigned int v8; // edx - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // esi - _WORD *v12; // ebx - _WORD *v13; // ecx - - v6 = *this; - v7 = *(_DWORD *)(*this - 12); - if ( a2 > v7 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - *(_DWORD *)(v6 - 12)); - v8 = *(_DWORD *)(*a4 - 12); - if ( a5 > v8 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a5, - *(_DWORD *)(*a4 - 12)); - v9 = v7 - a2; - if ( v9 > a3 ) - v9 = a3; - v10 = v8 - a5; - if ( v10 > a6 ) - v10 = a6; - v11 = v9; - if ( v10 <= v9 ) - v11 = v10; - if ( !v11 ) - return v9 - v10; - v12 = (_WORD *)(*a4 + 2 * a5); - v13 = (_WORD *)(v6 + 2 * a2); - if ( v12 == v13 ) - return v9 - v10; - while ( *v13 == *v12 ) - { - ++v13; - ++v12; - if ( !--v11 ) - return v9 - v10; - } - return *v13 < *v12 ? -1 : 1; -} - -//----- (004788D0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); - return result; -} - -//----- (004788F0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) -{ - unsigned int result; // eax - unsigned int v4; // edx - - result = a2; - v4 = *(_DWORD *)(*this - 12); - if ( v4 < a2 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v4); - return result; -} - -//----- (00478930) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) -{ - unsigned int result; // eax - - result = *(_DWORD *)(*this - 12) - a2; - if ( result > a3 ) - return a3; - return result; -} - -//----- (00478950) -------------------------------------------------------- -int __fastcall std::wstring::capacity(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 8); -} - -//----- (00478960) -------------------------------------------------------- -int std::wstring::max_size() -{ - return 536870910; -} - -//----- (00478970) -------------------------------------------------------- -int __fastcall std::wstring::_M_ibegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00478980) -------------------------------------------------------- -int __thiscall std::wstring::operator[](_DWORD *this, int a2) -{ - return *this + 2 * a2; -} - -//----- (00478990) -------------------------------------------------------- -int __fastcall std::istream::gcount(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (004789A0) -------------------------------------------------------- -int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1) -{ - return *a1; -} - -//----- (004789B0) -------------------------------------------------------- -int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1) -{ - return *a1; -} - -//----- (004789C0) -------------------------------------------------------- -int __userpurge std::string::_M_disjunct@(_DWORD *a1@, std::string *this, const char *a3) -{ - int v3; // edx - - v3 = 1; - if ( *a1 <= (unsigned int)this ) - LOBYTE(v3) = *(_DWORD *)(*a1 - 12) + *a1 < (unsigned int)this; - return v3; -} - -//----- (004789E0) -------------------------------------------------------- -int __userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4) -{ - size_t v5; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v5 = strlen((const char *)this); - return std::string::find_last_of(a1, this, a3, v5, v7); -} -// 478A04: variable 'v7' is possibly undefined - -//----- (00478A20) -------------------------------------------------------- -int __userpurge std::string::find_last_of@( - int *a1@, - std::string *this, - const char *a3, - size_t MaxCount, - unsigned int a5) -{ - int v5; // esi - const char *v6; // ebx - int v7; // eax - unsigned int v8; // eax - - v5 = *a1; - v6 = a3; - v7 = *(_DWORD *)(*a1 - 12); - if ( !v7 || !MaxCount ) - return -1; - v8 = v7 - 1; - if ( v8 <= (unsigned int)a3 ) - v6 = (const char *)v8; - do - { - if ( memchr(this, v6[v5], MaxCount) ) - break; - } - while ( v6-- != 0 ); - return (int)v6; -} - -//----- (00478AA0) -------------------------------------------------------- -int __userpurge std::string::find_last_of@( - int *a1@, - std::string **this, - const std::string *a3, - unsigned int a4) -{ - unsigned int v5; // [esp+Ch] [ebp-10h] - - return std::string::find_last_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); -} -// 478ABB: variable 'v5' is possibly undefined - -//----- (00478AD0) -------------------------------------------------------- -int __userpurge std::string::find_last_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - int result; // eax - int v5; // ebx - - result = -1; - v5 = *(_DWORD *)(*a1 - 12); - if ( v5 ) - { - result = v5 - 1; - if ( a3 <= v5 - 1 ) - result = a3; - do - { - if ( (_BYTE)this == *(_BYTE *)(*a1 + result) ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00478B10) -------------------------------------------------------- -int __userpurge std::string::find_first_of@(int *a1@, std::string *this, const char *a3, unsigned int a4) -{ - size_t v6; // eax - int v7; // edi - size_t MaxCount; // ebx - unsigned int v10; // [esp+1Ch] [ebp-20h] - - v6 = strlen((const char *)this); - if ( v6 ) - { - v7 = *a1; - MaxCount = v6; - v10 = *(_DWORD *)(v7 - 12); - while ( v10 > (unsigned int)a3 ) - { - if ( memchr(this, a3[v7], MaxCount) ) - return (int)a3; - ++a3; - } - } - return -1; -} - -//----- (00478B80) -------------------------------------------------------- -int __userpurge std::string::find_first_of@( - int *a1@, - std::string *this, - const char *a3, - size_t MaxCount, - unsigned int a5) -{ - int v6; // esi - unsigned int v7; // edi - - if ( MaxCount ) - { - v6 = *a1; - v7 = *(_DWORD *)(*a1 - 12); - while ( v7 > (unsigned int)a3 ) - { - if ( memchr(this, a3[v6], MaxCount) ) - return (int)a3; - ++a3; - } - } - return -1; -} - -//----- (00478BF0) -------------------------------------------------------- -int __userpurge std::string::find_first_of@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4) -{ - const void *Buf; // esi - size_t MaxCount; // ebx - int v7; // edi - unsigned int v9; // [esp+1Ch] [ebp-20h] - - Buf = *(const void **)this; - MaxCount = *(_DWORD *)(*(_DWORD *)this - 12); - if ( MaxCount ) - { - v7 = *a1; - v9 = *(_DWORD *)(*a1 - 12); - while ( v9 > (unsigned int)a3 ) - { - if ( memchr(Buf, *((char *)a3 + v7), MaxCount) ) - return (int)a3; - a3 = (const std::string *)((char *)a3 + 1); - } - } - return -1; -} - -//----- (00478C60) -------------------------------------------------------- -char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - int v4; // ebx - int v5; // esi - unsigned int v6; // edx - char *v7; // eax - - v4 = -1; - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( a3 < v6 ) - { - v7 = (char *)memchr((const void *)(v5 + a3), (char)this, v6 - a3); - if ( v7 ) - return &v7[-v5]; - } - return (char *)v4; -} - -//----- (00478CB0) -------------------------------------------------------- -void *__thiscall std::string::get_allocator(void *ecx0, std::string *this) -{ - return ecx0; -} - -//----- (00478CC0) -------------------------------------------------------- -char *__userpurge std::string::_M_check_length@( - _DWORD *a1@, - std::string *this, - unsigned int a3, - std::length_error *a4, - const char *a5) -{ - char *result; // eax - - result = (char *)this - *(_DWORD *)(*a1 - 12) + 1073741820; - if ( (unsigned int)result < a3 ) - std::__throw_length_error(a4); - return result; -} - -//----- (00478CF0) -------------------------------------------------------- -int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const char *a3, unsigned int a4) -{ - int v4; // ebx - int v5; // esi - int v6; // ebp - size_t v7; // eax - const char *v8; // ecx - size_t MaxCount; // edi - - v4 = -1; - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( v6 ) - { - v7 = strlen((const char *)this); - v8 = (const char *)(v6 - 1); - if ( (unsigned int)a3 <= v6 - 1 ) - v8 = a3; - MaxCount = v7; - v4 = (int)v8; - do - { - if ( !MaxCount ) - break; - if ( !memchr(this, *(char *)(v5 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - } - return v4; -} - -//----- (00478D60) -------------------------------------------------------- -int __userpurge std::string::find_last_not_of@( - int *a1@, - std::string *this, - const char *a3, - size_t MaxCount, - unsigned int a5) -{ - int v5; // ebx - int v6; // edi - const char *v7; // edx - int v8; // eax - unsigned int v9; // eax - - v5 = -1; - v6 = *a1; - v7 = a3; - v8 = *(_DWORD *)(*a1 - 12); - if ( v8 ) - { - v9 = v8 - 1; - if ( v9 <= (unsigned int)a3 ) - v7 = (const char *)v9; - v5 = (int)v7; - do - { - if ( !MaxCount ) - break; - if ( !memchr(this, *(char *)(v6 + v5), MaxCount) ) - break; - } - while ( v5-- != 0 ); - } - return v5; -} - -//----- (00478DC0) -------------------------------------------------------- -int __userpurge std::string::find_last_not_of@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4) -{ - int v4; // ebx - int v5; // edi - int v6; // eax - const std::string *v7; // eax - _DWORD *Buf; // ebp - size_t MaxCount; // esi - - v4 = -1; - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( v6 ) - { - v7 = (const std::string *)(v6 - 1); - Buf = *(_DWORD **)this; - if ( a3 <= v7 ) - v7 = a3; - MaxCount = *(Buf - 3); - v4 = (int)v7; - do - { - if ( !MaxCount ) - break; - if ( !memchr(Buf, *(char *)(v5 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - } - return v4; -} - -//----- (00478E20) -------------------------------------------------------- -int __userpurge std::string::find_last_not_of@( - _DWORD *a1@, - std::string *this, - unsigned int a3, - unsigned int a4) -{ - int result; // eax - int v5; // ebx - - result = -1; - v5 = *(_DWORD *)(*a1 - 12); - if ( v5 ) - { - result = v5 - 1; - if ( v5 - 1 > a3 ) - result = a3; - do - { - if ( *(_BYTE *)(*a1 + result) != (_BYTE)this ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00478E60) -------------------------------------------------------- -int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const char *a3, unsigned int a4) -{ - const char *v5; // edi - size_t v6; // eax - int v7; // esi - unsigned int v8; // ebp - size_t MaxCount; // ebx - - v5 = a3; - v6 = strlen((const char *)this); - v7 = *a1; - v8 = *(_DWORD *)(v7 - 12); - if ( (unsigned int)a3 >= v8 ) - return -1; - MaxCount = v6; - if ( v6 ) - { - while ( memchr(this, v5[v7], MaxCount) ) - { - if ( ++v5 == (const char *)v8 ) - return -1; - } - } - return (int)v5; -} - -//----- (00478ED0) -------------------------------------------------------- -int __userpurge std::string::find_first_not_of@( - int *a1@, - std::string *this, - const char *a3, - size_t MaxCount, - unsigned int a5) -{ - int v5; // ebx - const char *v6; // ebp - unsigned int v7; // edi - - v5 = *a1; - v6 = a3; - v7 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)a3 >= v7 ) - return -1; - if ( MaxCount ) - { - while ( memchr(this, v6[v5], MaxCount) ) - { - if ( ++v6 == (const char *)v7 ) - return -1; - } - } - return (int)v6; -} - -//----- (00478F30) -------------------------------------------------------- -int __userpurge std::string::find_first_not_of@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4) -{ - int v4; // esi - const std::string *v5; // ebp - const void *Buf; // ebx - size_t MaxCount; // edi - unsigned int v9; // [esp+1Ch] [ebp-20h] - - v4 = *a1; - v5 = a3; - Buf = *(const void **)this; - MaxCount = *(_DWORD *)(*(_DWORD *)this - 12); - v9 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)a3 >= v9 ) - return -1; - if ( MaxCount ) - { - while ( memchr(Buf, *((char *)v5 + v4), MaxCount) ) - { - v5 = (const std::string *)((char *)v5 + 1); - if ( v5 == (const std::string *)v9 ) - return -1; - } - } - return (int)v5; -} - -//----- (00478FA0) -------------------------------------------------------- -int __userpurge std::string::find_first_not_of@( - int *a1@, - std::string *this, - unsigned int a3, - unsigned int a4) -{ - int v4; // edx - int result; // eax - unsigned int v6; // ecx - - v4 = *a1; - result = a3; - v6 = *(_DWORD *)(*a1 - 12); - if ( a3 >= v6 ) - return -1; - while ( *(_BYTE *)(v4 + result) == (_BYTE)this ) - { - if ( ++result == v6 ) - return -1; - } - return result; -} - -//----- (00478FE0) -------------------------------------------------------- -char *__userpurge std::string::at@(int *a1@, std::string *this, unsigned int a3) -{ - int v3; // eax - unsigned int v4; // ecx - - v3 = *a1; - v4 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this >= v4 ) - std::__throw_out_of_range_fmt( - "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", - (size_t)this, - v4); - return (char *)this + v3; -} - -//----- (00479010) -------------------------------------------------------- -int __fastcall std::string::end(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) + *a1; -} - -//----- (00479020) -------------------------------------------------------- -int __fastcall std::string::_Rep::_M_is_leaked(int a1) -{ - return *(_DWORD *)(a1 + 8) >> 31; -} - -//----- (00479030) -------------------------------------------------------- -bool __fastcall std::string::_Rep::_M_is_shared(int a1) -{ - return *(_DWORD *)(a1 + 8) > 0; -} - -//----- (00479040) -------------------------------------------------------- -int __fastcall std::string::back(_DWORD *a1) -{ - return *a1 + *(_DWORD *)(*a1 - 12) - 1; -} - -//----- (00479050) -------------------------------------------------------- -int __fastcall std::string::cend(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) + *a1; -} - -//----- (00479060) -------------------------------------------------------- -int __userpurge std::string::copy@( - _DWORD *a1@, - std::string *this, - size_t a3, - unsigned int a4, - unsigned int a5) -{ - unsigned int v5; // ebx - size_t Size; // ebx - _BYTE *Src; // eax - - v5 = *(_DWORD *)(*a1 - 12); - if ( a4 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::copy", - a4, - *(_DWORD *)(*a1 - 12)); - Size = v5 - a4; - if ( Size > a3 ) - Size = a3; - if ( !Size ) - return Size; - Src = (_BYTE *)(*a1 + a4); - if ( Size != 1 ) - { - memcpy(this, Src, Size); - return Size; - } - *(_BYTE *)this = *Src; - return 1; -} - -//----- (004790E0) -------------------------------------------------------- -int __fastcall std::string::data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004790F0) -------------------------------------------------------- -int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4) -{ - size_t Size; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - Size = strlen((const char *)this); - return std::string::find(a1, this, a3, Size, v7); -} -// 479114: variable 'v7' is possibly undefined - -//----- (00479130) -------------------------------------------------------- -int __userpurge std::string::find@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5) -{ - int v5; // edi - unsigned int v6; // edx - int v7; // ecx - int v8; // ebp - size_t v9; // edx - const char *Buf; // eax - size_t MaxCount; // edx - int Val; // ebp - const char *v13; // edi - int v15; // ecx - int v16; // [esp+18h] [ebp-24h] - int v17; // [esp+1Ch] [ebp-20h] - - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( Size ) - { - v7 = -1; - if ( v6 > (unsigned int)a3 ) - { - v8 = v5 + v6; - v9 = v6 - (_DWORD)a3; - Buf = &a3[v5]; - v16 = v8; - if ( Size <= v9 ) - { - MaxCount = 1 - Size + v9; - if ( MaxCount ) - { - v17 = v5; - Val = *(char *)this; - while ( 1 ) - { - v13 = (const char *)memchr(Buf, Val, MaxCount); - if ( !v13 ) - return -1; - if ( !memcmp(v13, this, Size) ) - break; - Buf = v13 + 1; - if ( Size <= v16 - (int)(v13 + 1) ) - { - MaxCount = v16 - (_DWORD)v13 - Size; - if ( MaxCount ) - continue; - } - return -1; - } - return (int)&v13[-v17]; - } - } - } - return v7; - } - else - { - v15 = -1; - if ( v6 >= (unsigned int)a3 ) - return (int)a3; - return v15; - } -} - -//----- (00479200) -------------------------------------------------------- -int __userpurge std::string::find@(int *a1@, std::string **this, const std::string *a3, unsigned int a4) -{ - unsigned int v5; // [esp+Ch] [ebp-10h] - - return std::string::find(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); -} -// 47921B: variable 'v5' is possibly undefined - -//----- (00479230) -------------------------------------------------------- -char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - int v4; // ebx - int v5; // esi - unsigned int v6; // edx - char *v7; // eax - - v4 = -1; - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( a3 < v6 ) - { - v7 = (char *)memchr((const void *)(v5 + a3), (char)this, v6 - a3); - if ( v7 ) - return &v7[-v5]; - } - return (char *)v4; -} - -//----- (00479280) -------------------------------------------------------- -_DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this) -{ - _DWORD *result; // eax - - result = ecx0; - *ecx0 = *(_DWORD *)this; - return result; -} - -//----- (00479290) -------------------------------------------------------- -int __fastcall std::string::size(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12); -} - -//----- (004792A0) -------------------------------------------------------- -int __fastcall std::string::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004792B0) -------------------------------------------------------- -int __fastcall std::string::c_str(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004792C0) -------------------------------------------------------- -_DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this) -{ - _DWORD *result; // eax - - result = ecx0; - *ecx0 = *(_DWORD *)this; - return result; -} - -//----- (004792D0) -------------------------------------------------------- -bool __fastcall std::string::empty(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) == 0; -} - -//----- (004792E0) -------------------------------------------------------- -int __fastcall std::string::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004792F0) -------------------------------------------------------- -int __userpurge std::string::rfind@(int *a1@, std::string *this, char *a3, unsigned int a4) -{ - size_t v5; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v5 = strlen((const char *)this); - return std::string::rfind(a1, this, a3, v5, v7); -} -// 479314: variable 'v7' is possibly undefined - -//----- (00479330) -------------------------------------------------------- -int __userpurge std::string::rfind@( - int *a1@, - std::string *this, - const char *a3, - size_t Size, - unsigned int a5) -{ - int v5; // ebx - int v6; // ebp - size_t v7; // eax - const char *v8; // edx - unsigned int v9; // eax - - v5 = -1; - v6 = *a1; - v7 = *(_DWORD *)(*a1 - 12); - v8 = a3; - if ( Size <= v7 ) - { - v9 = v7 - Size; - if ( v9 <= (unsigned int)a3 ) - v8 = (const char *)v9; - v5 = (int)v8; - if ( Size ) - { - while ( memcmp((const void *)(v6 + v5), this, Size) ) - { - if ( !v5 ) - return -1; - --v5; - } - } - } - return v5; -} -// 479381: conditional instruction was optimized away because %arg_8.4!=0 - -//----- (004793A0) -------------------------------------------------------- -int __userpurge std::string::rfind@(int *a1@, std::string *this, const std::string *a3, unsigned int a4) -{ - int v4; // ebx - int v5; // ebp - const std::string *v6; // edx - const void *Buf2; // edi - size_t v8; // eax - size_t Size; // esi - unsigned int v10; // eax - - v4 = -1; - v5 = *a1; - v6 = a3; - Buf2 = *(const void **)this; - v8 = *(_DWORD *)(*a1 - 12); - Size = *(_DWORD *)(*(_DWORD *)this - 12); - if ( Size <= v8 ) - { - v10 = v8 - Size; - if ( v10 <= (unsigned int)a3 ) - v6 = (const std::string *)v10; - v4 = (int)v6; - if ( Size ) - { - while ( memcmp((const void *)(v5 + v4), Buf2, Size) ) - { - if ( !v4 ) - return -1; - --v4; - } - } - } - return v4; -} -// 4793F2: conditional instruction was optimized away because esi.4!=0 - -//----- (00479410) -------------------------------------------------------- -int __userpurge std::string::rfind@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - int result; // eax - int v5; // ebx - - result = -1; - v5 = *(_DWORD *)(*a1 - 12); - if ( v5 ) - { - result = v5 - 1; - if ( v5 - 1 > a3 ) - result = a3; - do - { - if ( *(_BYTE *)(*a1 + result) == (_BYTE)this ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00479450) -------------------------------------------------------- -int __fastcall std::string::_M_rep(_DWORD *a1) -{ - return *a1 - 12; -} - -//----- (00479460) -------------------------------------------------------- -int __fastcall std::string::cbegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00479470) -------------------------------------------------------- -int __fastcall std::string::length(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12); -} - -//----- (00479480) -------------------------------------------------------- -_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this) -{ - _DWORD *result; // eax - - result = ecx0; - *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; - return result; -} - -//----- (00479490) -------------------------------------------------------- -int *__thiscall std::string::substr(int *ecx0, std::string *this, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // eax - unsigned int v6; // eax - - v5 = *(_DWORD *)(*(_DWORD *)this - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::substr", - a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - v6 = v5 - a3; - if ( v6 > a4 ) - v6 = a4; - *ecx0 = std::string::_S_construct((_BYTE *)(a3 + *(_DWORD *)this), *(_DWORD *)this + a3 + v6); - return ecx0; -} - -//----- (00479500) -------------------------------------------------------- -int __fastcall std::string::_M_data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00479510) -------------------------------------------------------- -int __fastcall std::string::_M_iend(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) + *a1; -} - -//----- (00479520) -------------------------------------------------------- -int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3) -{ - const void *v3; // edi - size_t v4; // esi - size_t v5; // ebx - size_t Size; // eax - int result; // eax - - v3 = *a1; - v4 = *((_DWORD *)*a1 - 3); - v5 = strlen((const char *)this); - Size = v4; - if ( v5 <= v4 ) - Size = v5; - if ( !Size ) - return v4 - v5; - result = memcmp(v3, this, Size); - if ( !result ) - return v4 - v5; - return result; -} - -//----- (00479570) -------------------------------------------------------- -int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3) -{ - const void *Buf1; // eax - size_t v4; // esi - size_t Size; // ecx - size_t v6; // ebx - int result; // eax - - Buf1 = *a1; - v4 = *((_DWORD *)*a1 - 3); - Size = v4; - v6 = *((_DWORD *)*this - 3); - if ( v6 <= v4 ) - Size = *((_DWORD *)*this - 3); - if ( !Size ) - return v4 - v6; - result = memcmp(Buf1, *this, Size); - if ( !result ) - return v4 - v6; - return result; -} - -//----- (004795B0) -------------------------------------------------------- -int __userpurge std::string::compare@( - int *a1@, - std::string *this, - unsigned int a3, - char *Str, - const char *a5) -{ - int v5; // ebp - unsigned int v6; // ebx - unsigned int v7; // ebx - size_t v8; // edi - size_t Size; // eax - int result; // eax - - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)this, - *(_DWORD *)(*a1 - 12)); - v7 = v6 - (_DWORD)this; - if ( v7 > a3 ) - v7 = a3; - v8 = strlen(Str); - Size = v7; - if ( v8 <= v7 ) - Size = v8; - if ( !Size ) - return v7 - v8; - result = memcmp((char *)this + v5, Str, Size); - if ( !result ) - return v7 - v8; - return result; -} - -//----- (00479630) -------------------------------------------------------- -int __userpurge std::string::compare@( - int *a1@, - std::string *this, - size_t a3, - void *Buf2, - const char *a5, - unsigned int a6) -{ - int v6; // eax - unsigned int v7; // ebx - unsigned int v8; // ebx - const char *Size; // ecx - int result; // eax - - v6 = *a1; - v7 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this > v7 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)this, - *(_DWORD *)(*a1 - 12)); - v8 = v7 - (_DWORD)this; - Size = a5; - if ( v8 > a3 ) - v8 = a3; - if ( v8 <= (unsigned int)a5 ) - Size = (const char *)v8; - if ( !Size ) - return v8 - (_DWORD)a5; - result = memcmp((char *)this + v6, Buf2, (size_t)Size); - if ( !result ) - return v8 - (_DWORD)a5; - return result; -} - -//----- (004796A0) -------------------------------------------------------- -int __userpurge std::string::compare@( - int *a1@, - std::string *this, - unsigned int a3, - const void **a4, - const std::string *a5) -{ - int v5; // eax - unsigned int v6; // ebx - unsigned int v7; // ebx - _DWORD *Buf2; // ecx - unsigned int v9; // esi - size_t Size; // edi - int result; // eax - - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)this, - *(_DWORD *)(*a1 - 12)); - v7 = v6 - (_DWORD)this; - Buf2 = *a4; - if ( v7 > a3 ) - v7 = a3; - v9 = *(Buf2 - 3); - Size = v7; - if ( v9 <= v7 ) - Size = *(Buf2 - 3); - if ( !Size ) - return v7 - v9; - result = memcmp((char *)this + v5, Buf2, Size); - if ( !result ) - return v7 - v9; - return result; -} - -//----- (00479720) -------------------------------------------------------- -int __userpurge std::string::compare@( - _DWORD *a1@, - std::string *this, - unsigned int a3, - _DWORD *a4, - const std::string *a5, - unsigned int a6, - unsigned int a7) -{ - unsigned int v7; // ebx - unsigned int v8; // ebp - unsigned int v9; // eax - unsigned int v10; // ebx - unsigned int v11; // eax - size_t Size; // eax - int result; // eax - - v7 = *(_DWORD *)(*a1 - 12); - v8 = a6; - if ( (unsigned int)this > v7 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)this, - *(_DWORD *)(*a1 - 12)); - v9 = *(_DWORD *)(*a4 - 12); - if ( (unsigned int)a5 > v9 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)a5, - *(_DWORD *)(*a4 - 12)); - v10 = v7 - (_DWORD)this; - if ( v10 > a3 ) - v10 = a3; - v11 = v9 - (_DWORD)a5; - if ( v11 <= a6 ) - v8 = v11; - Size = v10; - if ( v8 <= v10 ) - Size = v8; - if ( !Size ) - return v10 - v8; - result = memcmp((char *)this + *a1, (char *)a5 + *a4, Size); - if ( !result ) - return v10 - v8; - return result; -} - -//----- (004797D0) -------------------------------------------------------- -_DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this) -{ - _DWORD *result; // eax - - result = ecx0; - *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; - return result; -} - -//----- (004797E0) -------------------------------------------------------- -std::string *__userpurge std::string::_M_check@( - _DWORD *a1@, - std::string *this, - const char *a3, - const char *a4) -{ - std::string *result; // eax - unsigned int v5; // edx - - result = this; - v5 = *(_DWORD *)(*a1 - 12); - if ( v5 < (unsigned int)this ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, (size_t)this, v5); - return result; -} - -//----- (00479820) -------------------------------------------------------- -unsigned int __userpurge std::string::_M_limit@( - _DWORD *a1@, - std::string *this, - unsigned int a3, - unsigned int a4) -{ - unsigned int result; // eax - - result = *(_DWORD *)(*a1 - 12) - (_DWORD)this; - if ( result > a3 ) - return a3; - return result; -} - -//----- (00479840) -------------------------------------------------------- -int __fastcall std::string::capacity(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 8); -} - -//----- (00479850) -------------------------------------------------------- -int std::string::max_size() -{ - return 1073741820; -} - -//----- (00479860) -------------------------------------------------------- -int __fastcall std::string::_M_ibegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00479870) -------------------------------------------------------- -int __thiscall std::string::operator[](_DWORD *this, int a2) -{ - return a2 + *this; -} - -//----- (00479880) -------------------------------------------------------- -const char *std::bad_typeid::what() -{ - return "std::bad_typeid"; -} - -//----- (00479890) -------------------------------------------------------- -int __fastcall std::error_code::default_error_condition(int a1) -{ - return (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 20))(*(_DWORD *)(a1 + 4), *(_DWORD *)a1); -} - -//----- (004798B0) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (004798D0) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (004798F0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - std::string::string(this, *(char **)(a2[2] + 20), (int)v5); - else - v3(a2); - return this; -} -// 4798F0: using guessed type int var_D[3]; - -//----- (00479950) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 479950: using guessed type int var_D[3]; - -//----- (00479980) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 44); - else - return v1(); -} - -//----- (004799A0) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 17); - else - return v1(); -} - -//----- (004799C0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (004799D0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (004799E0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - std::string::string(this, *(char **)(a2[2] + 36), (int)v5); - else - v3(a2); - return this; -} -// 4799E0: using guessed type int var_D[3]; - -//----- (00479A40) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - std::string::string(this, *(char **)(a2[2] + 28), (int)v5); - else - v3(a2); - return this; -} -// 479A40: using guessed type int var_D[3]; - -//----- (00479AA0) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 18); - else - return v1(); -} - -//----- (00479AC0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); - return this; -} -// 479AC0: using guessed type int var_D[3]; - -//----- (00479AF0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); -} - -//----- (00479B00) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); -} - -//----- (00479B10) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); - return this; -} -// 479B10: using guessed type int var_D[3]; - -//----- (00479B40) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); - return this; -} -// 479B40: using guessed type int var_D[3]; - -//----- (00479B70) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (00479B80) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 479B80: using guessed type int var_D[3]; - -//----- (00479BE0) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (00479C00) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (00479C20) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - std::string::string(this, *(char **)(a2[2] + 20), (int)v5); - else - v3(a2); - return this; -} -// 479C20: using guessed type int var_D[3]; - -//----- (00479C80) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 479C80: using guessed type int var_D[3]; - -//----- (00479CB0) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 44); - else - return v1(); -} - -//----- (00479CD0) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 17); - else - return v1(); -} - -//----- (00479CF0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (00479D00) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (00479D10) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - std::string::string(this, *(char **)(a2[2] + 36), (int)v5); - else - v3(a2); - return this; -} -// 479D10: using guessed type int var_D[3]; - -//----- (00479D70) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - std::string::string(this, *(char **)(a2[2] + 28), (int)v5); - else - v3(a2); - return this; -} -// 479D70: using guessed type int var_D[3]; - -//----- (00479DD0) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 18); - else - return v1(); -} - -//----- (00479DF0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); - return this; -} -// 479DF0: using guessed type int var_D[3]; - -//----- (00479E20) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); -} - -//----- (00479E30) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); -} - -//----- (00479E40) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); - return this; -} -// 479E40: using guessed type int var_D[3]; - -//----- (00479E70) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); - return this; -} -// 479E70: using guessed type int var_D[3]; - -//----- (00479EA0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (00479EB0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 479EB0: using guessed type int var_D[3]; - -//----- (00479F10) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 56); - else - return v1(); -} - -//----- (00479F30) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (00479F50) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); - else - v3(a2); - return this; -} -// 479F50: using guessed type int var_D[3]; - -//----- (00479FB0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 479FB0: using guessed type int var_D[3]; - -//----- (00479FE0) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (0047A000) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 18); - else - return v1(); -} - -//----- (0047A020) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); -} - -//----- (0047A030) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (0047A040) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); - else - v3(a2); - return this; -} -// 47A040: using guessed type int var_D[3]; - -//----- (0047A0A0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); - else - v3(a2); - return this; -} -// 47A0A0: using guessed type int var_D[3]; - -//----- (0047A100) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 20); - else - return v1(); -} - -//----- (0047A120) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); - return this; -} -// 47A120: using guessed type int var_D[3]; - -//----- (0047A150) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (0047A160) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (0047A170) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); - return this; -} -// 47A170: using guessed type int var_D[3]; - -//----- (0047A1A0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); - return this; -} -// 47A1A0: using guessed type int var_D[3]; - -//----- (0047A1D0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); -} - -//----- (0047A1E0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 47A1E0: using guessed type int var_D[3]; - -//----- (0047A240) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 56); - else - return v1(); -} - -//----- (0047A260) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (0047A280) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); - else - v3(a2); - return this; -} -// 47A280: using guessed type int var_D[3]; - -//----- (0047A2E0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 47A2E0: using guessed type int var_D[3]; - -//----- (0047A310) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (0047A330) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 18); - else - return v1(); -} - -//----- (0047A350) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); -} - -//----- (0047A360) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (0047A370) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); - else - v3(a2); - return this; -} -// 47A370: using guessed type int var_D[3]; - -//----- (0047A3D0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); - else - v3(a2); - return this; -} -// 47A3D0: using guessed type int var_D[3]; - -//----- (0047A430) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 20); - else - return v1(); -} - -//----- (0047A450) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); - return this; -} -// 47A450: using guessed type int var_D[3]; - -//----- (0047A480) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (0047A490) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (0047A4A0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); - return this; -} -// 47A4A0: using guessed type int var_D[3]; - -//----- (0047A4D0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); - return this; -} -// 47A4D0: using guessed type int var_D[3]; - -//----- (0047A500) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); -} - -//----- (0047A510) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 47A510: using guessed type int var_D[3]; - -//----- (0047A580) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 8); - a2[1] = *(_DWORD *)(v2 + 12); - return result; -} - -//----- (0047A5A0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 16); - a2[1] = *(_DWORD *)(v2 + 20); - return result; -} - -//----- (0047A5C0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[18]; - a2[1] = v2[19]; - a2[2] = v2[20]; - a2[3] = v2[21]; - a2[4] = v2[22]; - a2[5] = v2[23]; - a2[6] = v2[24]; - return result; -} - -//----- (0047A600) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 24); - a2[1] = *(_DWORD *)(v2 + 28); - return result; -} - -//----- (0047A620) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[37]; - a2[1] = v2[38]; - a2[2] = v2[39]; - a2[3] = v2[40]; - a2[4] = v2[41]; - a2[5] = v2[42]; - a2[6] = v2[43]; - a2[7] = v2[44]; - a2[8] = v2[45]; - a2[9] = v2[46]; - a2[10] = v2[47]; - a2[11] = v2[48]; - return result; -} - -//----- (0047A6A0) -------------------------------------------------------- -void __thiscall std::__timepunct::_M_put( - const char **this, - char *Buffer, - size_t SizeInBytes, - char *Format, - struct tm *Tm) -{ - char *v5; // eax - char *v6; // edx - char *Src; // [esp+10h] [ebp-4Ch] - char *Srca; // [esp+10h] [ebp-4Ch] - unsigned int Size; // [esp+14h] [ebp-48h] - size_t v10; // [esp+14h] [ebp-48h] - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - v5 = (char *)operator new[](Size); - v6 = Src; - Srca = v5; - memcpy(v5, v6, Size); - setlocale(0, this[4]); - v10 = strftime(Buffer, SizeInBytes, Format, Tm); - setlocale(0, Srca); - operator delete[](Srca); - if ( !v10 ) - *Buffer = 0; -} - -//----- (0047A7D0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[11]; - a2[1] = v2[12]; - a2[2] = v2[13]; - a2[3] = v2[14]; - a2[4] = v2[15]; - a2[5] = v2[16]; - a2[6] = v2[17]; - return result; -} - -//----- (0047A810) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 32); - a2[1] = *(_DWORD *)(v2 + 36); - return result; -} - -//----- (0047A830) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[25]; - a2[1] = v2[26]; - a2[2] = v2[27]; - a2[3] = v2[28]; - a2[4] = v2[29]; - a2[5] = v2[30]; - a2[6] = v2[31]; - a2[7] = v2[32]; - a2[8] = v2[33]; - a2[9] = v2[34]; - a2[10] = v2[35]; - a2[11] = v2[36]; - return result; -} - -//----- (0047A8A0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 8); - a2[1] = *(_DWORD *)(v2 + 12); - return result; -} - -//----- (0047A8C0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 16); - a2[1] = *(_DWORD *)(v2 + 20); - return result; -} - -//----- (0047A8E0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[18]; - a2[1] = v2[19]; - a2[2] = v2[20]; - a2[3] = v2[21]; - a2[4] = v2[22]; - a2[5] = v2[23]; - a2[6] = v2[24]; - return result; -} - -//----- (0047A920) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 24); - a2[1] = *(_DWORD *)(v2 + 28); - return result; -} - -//----- (0047A940) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[37]; - a2[1] = v2[38]; - a2[2] = v2[39]; - a2[3] = v2[40]; - a2[4] = v2[41]; - a2[5] = v2[42]; - a2[6] = v2[43]; - a2[7] = v2[44]; - a2[8] = v2[45]; - a2[9] = v2[46]; - a2[10] = v2[47]; - a2[11] = v2[48]; - return result; -} - -//----- (0047A9C0) -------------------------------------------------------- -void __thiscall std::__timepunct::_M_put( - const char **this, - wchar_t *Buffer, - size_t SizeInWords, - wchar_t *Format, - struct tm *Tm) -{ - char *v5; // eax - char *v6; // edx - char *Src; // [esp+10h] [ebp-4Ch] - char *Srca; // [esp+10h] [ebp-4Ch] - unsigned int Size; // [esp+14h] [ebp-48h] - size_t v10; // [esp+14h] [ebp-48h] - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - v5 = (char *)operator new[](Size); - v6 = Src; - Srca = v5; - memcpy(v5, v6, Size); - setlocale(0, this[4]); - v10 = wcsftime(Buffer, SizeInWords, Format, Tm); - setlocale(0, Srca); - operator delete[](Srca); - if ( !v10 ) - *Buffer = 0; -} - -//----- (0047AAF0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[11]; - a2[1] = v2[12]; - a2[2] = v2[13]; - a2[3] = v2[14]; - a2[4] = v2[15]; - a2[5] = v2[16]; - a2[6] = v2[17]; - return result; -} - -//----- (0047AB30) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 32); - a2[1] = *(_DWORD *)(v2 + 36); - return result; -} - -//----- (0047AB50) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[25]; - a2[1] = v2[26]; - a2[2] = v2[27]; - a2[3] = v2[28]; - a2[4] = v2[29]; - a2[5] = v2[30]; - a2[6] = v2[31]; - a2[7] = v2[32]; - a2[8] = v2[33]; - a2[9] = v2[34]; - a2[10] = v2[35]; - a2[11] = v2[36]; - return result; -} - -//----- (0047ABB0) -------------------------------------------------------- -struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1) -{ - unsigned int v2; // [esp+8h] [ebp-60h] - std::locale::_Impl *v3; // [esp+1Ch] [ebp-4Ch] - std::locale::facet *v4; // [esp+20h] [ebp-48h] - int v5; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] - - v4 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); - v5 = *(_DWORD *)(*a1 + 12) + 4 * (_DWORD)v4; - lpuexcpt = *(struct _Unwind_Exception **)v5; - if ( !*(_DWORD *)v5 ) - { - v3 = (std::locale::_Impl *)operator new(0x68u); - *((_DWORD *)v3 + 1) = 0; - *(_DWORD *)v3 = &off_5605B0; - *((_DWORD *)v3 + 2) = 0; - *((_DWORD *)v3 + 3) = 0; - *((_BYTE *)v3 + 16) = 0; - *((_DWORD *)v3 + 5) = 0; - *((_DWORD *)v3 + 6) = 0; - *((_DWORD *)v3 + 7) = 0; - *((_DWORD *)v3 + 8) = 0; - *((_WORD *)v3 + 18) = 0; - *((_BYTE *)v3 + 100) = 0; - std::__numpunct_cache::_M_cache((int)v3, (int)a1); - std::locale::_Impl::_M_install_cache(*a1, v3, v4, v2); - return *(struct _Unwind_Exception **)v5; - } - return lpuexcpt; -} -// 47ACA3: variable 'v2' is possibly undefined -// 53F788: using guessed type signed __int32 std::numpunct::id; -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (0047AD20) -------------------------------------------------------- -struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1) -{ - _DWORD *v2; // eax - unsigned int v3; // [esp+8h] [ebp-60h] - std::locale::_Impl *v4; // [esp+1Ch] [ebp-4Ch] - std::locale::facet *v5; // [esp+20h] [ebp-48h] - int v6; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] - - v5 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); - v6 = *(_DWORD *)(*a1 + 12) + 4 * (_DWORD)v5; - lpuexcpt = *(struct _Unwind_Exception **)v6; - if ( !*(_DWORD *)v6 ) - { - v2 = operator new(0xA8u); - v2[1] = 0; - *v2 = &off_5605C0; - v2[2] = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[5] = 0; - v2[6] = 0; - v2[7] = 0; - v2[8] = 0; - v2[9] = 0; - *((_BYTE *)v2 + 164) = 0; - v4 = (std::locale::_Impl *)v2; - std::__numpunct_cache::_M_cache((int)v2, (int)a1); - std::locale::_Impl::_M_install_cache(*a1, v4, v5, v3); - return *(struct _Unwind_Exception **)v6; - } - return lpuexcpt; -} -// 47AE17: variable 'v3' is possibly undefined -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (0047AE90) -------------------------------------------------------- -int __fastcall std::runtime_error::what(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (0047AEA0) -------------------------------------------------------- -bool __fastcall std::__basic_file::is_open(_DWORD *a1) -{ - return *a1 != 0; -} - -//----- (0047AEB0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( - int *this, - int a2, - int a3, - int a4, - int a5) -{ - int v6; // [esp+0h] [ebp-2Ch] - - LOBYTE(v6) = 0; - return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); -} -// 47AEDE: variable 'v6' is possibly undefined - -//----- (0047AEF0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( - int *this, - int a2, - int a3, - int a4, - int a5) -{ - int v6; // [esp+0h] [ebp-2Ch] - - LOBYTE(v6) = 0; - return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); -} -// 47AF1E: variable 'v6' is possibly undefined - -//----- (0047AF30) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( - _DWORD *this, - int a2, - int a3, - int a4) -{ - int v5; // [esp+0h] [ebp-88h] - void *v7; // [esp+63h] [ebp-25h] BYREF - unsigned __int8 *v8[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v9)(unsigned __int8 **); // [esp+7Ch] [ebp-Ch] - - v9 = 0; - LOBYTE(v5) = 0; - std::__facet_shims::__collate_transform(v5, *(_DWORD *)(a2 + 12), v8, a3, a4); - if ( !v9 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::string::string(this, v8[0], (size_t)v8[1], (int)&v7); - if ( v9 ) - v9(v8); - return this; -} -// 47AF93: variable 'v5' is possibly undefined - -//----- (0047B030) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( - _DWORD *this, - int a2, - std::string *a3, - int a4) -{ - _BYTE *v4; // eax - int v6; // [esp+0h] [ebp-88h] - void *v8[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v9)(void **); // [esp+7Ch] [ebp-Ch] - - v9 = 0; - LOBYTE(v6) = 0; - std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), v8, a3, a4); - if ( !v9 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v4 = v8[0]; - *this = this + 2; - std::string::_M_construct(this, v4, (int)&v4[(unsigned int)v8[1]]); - if ( v9 ) - v9(v8); - return this; -} -// 47B093: variable 'v6' is possibly undefined - -//----- (0047B130) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( - int *this, - int a2, - int a3, - int a4, - int a5) -{ - int v6; // [esp+0h] [ebp-2Ch] - - LOBYTE(v6) = 0; - return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); -} -// 47B15E: variable 'v6' is possibly undefined - -//----- (0047B170) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( - int *this, - int a2, - int a3, - int a4, - int a5) -{ - int v6; // [esp+0h] [ebp-2Ch] - - LOBYTE(v6) = 0; - return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); -} -// 47B19E: variable 'v6' is possibly undefined - -//----- (0047B1B0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( - _DWORD *this, - int a2, - int a3, - int a4) -{ - int v5; // [esp+0h] [ebp-88h] - void *v7; // [esp+63h] [ebp-25h] BYREF - _WORD *v8[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v9)(_WORD **); // [esp+7Ch] [ebp-Ch] - - v9 = 0; - LOBYTE(v5) = 0; - std::__facet_shims::__collate_transform(v5, *(_DWORD *)(a2 + 12), v8, a3, a4); - if ( !v9 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::wstring::basic_string(this, v8[0], (int)v8[1], (int)&v7); - if ( v9 ) - v9(v8); - return this; -} -// 47B213: variable 'v5' is possibly undefined - -//----- (0047B2B0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( - _DWORD *this, - int a2, - int a3, - int a4) -{ - _WORD *v4; // eax - int v6; // [esp+0h] [ebp-88h] - void *v8[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v9)(void **); // [esp+7Ch] [ebp-Ch] - - v9 = 0; - LOBYTE(v6) = 0; - std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), v8, a3, a4); - if ( !v9 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v4 = v8[0]; - *this = this + 2; - std::wstring::_M_construct(this, v4, (int)&v4[(int)v8[1]]); - if ( v9 ) - v9(v8); - return this; -} -// 47B313: variable 'v6' is possibly undefined - -//----- (0047B3B0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( - _DWORD *this, - int a2, - std::string *a3, - int a4, - int a5, - int a6) -{ - _BYTE *v6; // eax - int v8; // [esp+0h] [ebp-88h] - void *v10[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v11)(void **); // [esp+7Ch] [ebp-Ch] - - v11 = 0; - LOBYTE(v8) = 0; - std::__facet_shims::__messages_get( - v8, - *(_DWORD *)(a2 + 16), - v10, - a3, - a4, - a5, - *(unsigned __int8 **)a6, - *(_DWORD *)(a6 + 4)); - if ( !v11 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v6 = v10[0]; - *this = this + 2; - std::string::_M_construct(this, v6, (int)&v6[(unsigned int)v10[1]]); - if ( v11 ) - v11(v10); - return this; -} -// 47B42D: variable 'v8' is possibly undefined - -//----- (0047B4D0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - _BYTE **a6) -{ - int v7; // [esp+0h] [ebp-88h] - void *v9; // [esp+63h] [ebp-25h] BYREF - unsigned __int8 *v10[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v11)(unsigned __int8 **); // [esp+7Ch] [ebp-Ch] - - v11 = 0; - LOBYTE(v7) = 0; - std::__facet_shims::__messages_get(v7, *(_DWORD *)(a2 + 16), v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); - if ( !v11 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::string::string(this, v10[0], (size_t)v10[1], (int)&v9); - if ( v11 ) - v11(v10); - return this; -} -// 47B54A: variable 'v7' is possibly undefined - -//----- (0047B5E0) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( - int *this, - int a2, - int a3) -{ - int v4; // [esp+0h] [ebp-2Ch] - - LOBYTE(v4) = 0; - return std::__facet_shims::__messages_open(v4, this[4], *(unsigned __int8 **)a2, *(_DWORD *)(a2 + 4), a3); -} -// 47B607: variable 'v4' is possibly undefined - -//----- (0047B620) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( - int *this, - _BYTE **a2, - int a3) -{ - int v4; // [esp+0h] [ebp-2Ch] - - LOBYTE(v4) = 0; - return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); -} -// 47B647: variable 'v4' is possibly undefined - -//----- (0047B660) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) -{ - int v3; // [esp+0h] [ebp-1Ch] - - LOBYTE(v3) = 0; - return std::__facet_shims::__messages_close(v3, this[4], a2); -} -// 47B676: variable 'v3' is possibly undefined - -//----- (0047B690) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) -{ - int v3; // [esp+0h] [ebp-1Ch] - - LOBYTE(v3) = 0; - return std::__facet_shims::__messages_close(v3, this[4], a2); -} -// 47B6A6: variable 'v3' is possibly undefined - -//----- (0047B6C0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - int a6) -{ - _WORD *v6; // eax - int v8; // [esp+0h] [ebp-88h] - void *v10[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v11)(void **); // [esp+7Ch] [ebp-Ch] - - v11 = 0; - LOBYTE(v8) = 0; - std::__facet_shims::__messages_get( - v8, - *(_DWORD *)(a2 + 16), - v10, - a3, - a4, - a5, - *(_WORD **)a6, - *(_DWORD *)(a6 + 4)); - if ( !v11 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v6 = v10[0]; - *this = this + 2; - std::wstring::_M_construct(this, v6, (int)&v6[(int)v10[1]]); - if ( v11 ) - v11(v10); - return this; -} -// 47B73D: variable 'v8' is possibly undefined - -//----- (0047B7E0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - _WORD **a6) -{ - int v7; // [esp+0h] [ebp-88h] - void *v9; // [esp+63h] [ebp-25h] BYREF - _WORD *v10[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v11)(_WORD **); // [esp+7Ch] [ebp-Ch] - - v11 = 0; - LOBYTE(v7) = 0; - std::__facet_shims::__messages_get(v7, *(_DWORD *)(a2 + 16), v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); - if ( !v11 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::wstring::basic_string(this, v10[0], (int)v10[1], (int)&v9); - if ( v11 ) - v11(v10); - return this; -} -// 47B85A: variable 'v7' is possibly undefined - -//----- (0047B8F0) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( - int *this, - int a2, - int a3) -{ - int v4; // [esp+0h] [ebp-2Ch] - - LOBYTE(v4) = 0; - return std::__facet_shims::__messages_open(v4, this[4], *(unsigned __int8 **)a2, *(_DWORD *)(a2 + 4), a3); -} -// 47B917: variable 'v4' is possibly undefined - -//----- (0047B930) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( - int *this, - _BYTE **a2, - int a3) -{ - int v4; // [esp+0h] [ebp-2Ch] - - LOBYTE(v4) = 0; - return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); -} -// 47B957: variable 'v4' is possibly undefined - -//----- (0047B970) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) -{ - int v3; // [esp+0h] [ebp-1Ch] - - LOBYTE(v3) = 0; - return std::__facet_shims::__messages_close(v3, this[4], a2); -} -// 47B986: variable 'v3' is possibly undefined - -//----- (0047B9A0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) -{ - int v3; // [esp+0h] [ebp-1Ch] - - LOBYTE(v3) = 0; - return std::__facet_shims::__messages_close(v3, this[4], a2); -} -// 47B9B6: variable 'v3' is possibly undefined - -//----- (0047B9D0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); -} -// 47BA1E: variable 'v9' is possibly undefined - -//----- (0047BA30) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); -} -// 47BA7E: variable 'v9' is possibly undefined - -//----- (0047BA90) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); -} -// 47BADE: variable 'v9' is possibly undefined - -//----- (0047BAF0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); -} -// 47BB3E: variable 'v9' is possibly undefined - -//----- (0047BB50) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); -} -// 47BB9E: variable 'v9' is possibly undefined - -//----- (0047BBB0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); -} -// 47BBFE: variable 'v9' is possibly undefined - -//----- (0047BC10) -------------------------------------------------------- -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) -{ - int v2; // [esp+0h] [ebp-1Ch] - - LOBYTE(v2) = 0; - return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); -} -// 47BC1E: variable 'v2' is possibly undefined - -//----- (0047BC30) -------------------------------------------------------- -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) -{ - int v2; // [esp+0h] [ebp-1Ch] - - LOBYTE(v2) = 0; - return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); -} -// 47BC3E: variable 'v2' is possibly undefined - -//----- (0047BC50) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); -} -// 47BC9E: variable 'v9' is possibly undefined - -//----- (0047BCB0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); -} -// 47BCFE: variable 'v9' is possibly undefined - -//----- (0047BD10) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); -} -// 47BD5E: variable 'v9' is possibly undefined - -//----- (0047BD70) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); -} -// 47BDBE: variable 'v9' is possibly undefined - -//----- (0047BDD0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); -} -// 47BE1E: variable 'v9' is possibly undefined - -//----- (0047BE30) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); -} -// 47BE7E: variable 'v9' is possibly undefined - -//----- (0047BE90) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); -} -// 47BEDE: variable 'v9' is possibly undefined - -//----- (0047BEF0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); -} -// 47BF3E: variable 'v9' is possibly undefined - -//----- (0047BF50) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); -} -// 47BF9E: variable 'v9' is possibly undefined - -//----- (0047BFB0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); -} -// 47BFFE: variable 'v9' is possibly undefined - -//----- (0047C010) -------------------------------------------------------- -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) -{ - int v2; // [esp+0h] [ebp-1Ch] - - LOBYTE(v2) = 0; - return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); -} -// 47C01E: variable 'v2' is possibly undefined - -//----- (0047C030) -------------------------------------------------------- -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) -{ - int v2; // [esp+0h] [ebp-1Ch] - - LOBYTE(v2) = 0; - return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); -} -// 47C03E: variable 'v2' is possibly undefined - -//----- (0047C050) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); -} -// 47C09E: variable 'v9' is possibly undefined - -//----- (0047C0B0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); -} -// 47C0FE: variable 'v9' is possibly undefined - -//----- (0047C110) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); -} -// 47C15E: variable 'v9' is possibly undefined - -//----- (0047C170) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); -} -// 47C1BE: variable 'v9' is possibly undefined - -//----- (0047C1D0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - int *this, - __int64 a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - int *a7, - void **a8) -{ - void (__cdecl *v8)(void **); // eax - size_t v10; // edx - int *v11; // eax - int v12; // ebx - int v13; // esi - int v14; // [esp+0h] [ebp-C8h] - int v15; // [esp+78h] [ebp-50h] BYREF - void *Block; // [esp+7Ch] [ebp-4Ch] BYREF - size_t Size; // [esp+80h] [ebp-48h] - int v18[4]; // [esp+84h] [ebp-44h] BYREF - void *v19[6]; // [esp+94h] [ebp-34h] BYREF - void (__cdecl *v20)(void **); // [esp+ACh] [ebp-1Ch] - __int64 v21; // [esp+D0h] [ebp+8h] - - v20 = 0; - v15 = 0; - LOBYTE(v14) = 0; - v21 = std::__facet_shims::__money_get(v14, this[2], a2, a3, a4, a5, a6, &v15, 0, v19); - v8 = v20; - if ( v15 ) - { - *a7 = v15; - goto LABEL_3; - } - if ( !v20 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - Block = v18; - std::string::_M_construct(&Block, (_BYTE *)v19[0], (int)v19[0] + (unsigned int)v19[1]); - v10 = Size; - v11 = (int *)*a8; - if ( Block == v18 ) - { - if ( Size ) - { - if ( Size == 1 ) - *(_BYTE *)v11 = v18[0]; - else - memcpy(v11, v18, Size); - v10 = Size; - v11 = (int *)*a8; - } - a8[1] = (void *)v10; - *((_BYTE *)v11 + v10) = 0; - v11 = (int *)Block; - goto LABEL_11; - } - v12 = v18[0]; - if ( v11 == (int *)(a8 + 2) ) - { - *a8 = Block; - a8[1] = (void *)v10; - a8[2] = (void *)v12; - goto LABEL_15; - } - v13 = (int)a8[2]; - *a8 = Block; - a8[1] = (void *)v10; - a8[2] = (void *)v12; - if ( !v11 ) - { -LABEL_15: - Block = v18; - v11 = v18; - goto LABEL_11; - } - Block = v11; - v18[0] = v13; -LABEL_11: - Size = 0; - *(_BYTE *)v11 = 0; - if ( Block != v18 ) - operator delete(Block); - v8 = v20; -LABEL_3: - if ( v8 ) - v8(v19); - return v21; -} -// 47C281: variable 'v14' is possibly undefined - -//----- (0047C430) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - __int64 a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - _DWORD *a7, - int *a8) -{ - void (__cdecl *v8)(void **); // eax - int v10; // ecx - int v11; // eax - int v12; // [esp+0h] [ebp-A8h] - std::string *v13; // [esp+4h] [ebp-A4h] - char v14[5]; // [esp+7Bh] [ebp-2Dh] BYREF - int v15; // [esp+80h] [ebp-28h] BYREF - void *v16[6]; // [esp+84h] [ebp-24h] BYREF - void (__cdecl *v17)(void **); // [esp+9Ch] [ebp-Ch] - __int64 v18; // [esp+B0h] [ebp+8h] - - v17 = 0; - *(_DWORD *)&v14[1] = 0; - LOBYTE(v12) = 0; - v18 = std::__facet_shims::__money_get(v12, (int *)this[2], a2, a3, a4, a5, a6, &v14[1], 0, v16); - v8 = v17; - if ( *(_DWORD *)&v14[1] ) - { - *a7 = *(_DWORD *)&v14[1]; - } - else - { - if ( !v17 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::string::string(&v15, (unsigned __int8 *)v16[0], (size_t)v16[1], (int)v14); - std::string::swap(a8, (std::string *)&v15, v13); - v10 = v15; - if ( _CRT_MT ) - { - v11 = _InterlockedExchangeAdd((volatile signed __int32 *)(v15 - 4), 0xFFFFFFFF); - } - else - { - v11 = *(_DWORD *)(v15 - 4); - *(_DWORD *)(v15 - 4) = v11 - 1; - } - if ( v11 <= 0 ) - std::string::_Rep::_M_destroy((void *)(v10 - 12), (int)v14); - v8 = v17; - } - if ( v8 ) - v8(v16); - return v18; -} -// 47C4CC: variable 'v12' is possibly undefined -// 47C543: variable 'v13' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (0047C5D0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - __int64 a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - _DWORD *a7, - long double *a8) -{ - __int64 result; // rax - int v9; // [esp+0h] [ebp-5Ch] - int *v10; // [esp+4h] [ebp-58h] - int v11; // [esp+3Ch] [ebp-20h] BYREF - long double v12[2]; // [esp+40h] [ebp-1Ch] BYREF - - LOBYTE(v9) = 0; - v10 = (int *)this[2]; - v11 = 0; - result = std::__facet_shims::__money_get(v9, v10, a2, a3, a4, a5, a6, &v11, (int)v12, 0); - if ( v11 ) - *a7 = v11; - else - *a8 = v12[0]; - return result; -} -// 47C631: variable 'v9' is possibly undefined -// 47C5D0: using guessed type long double var_1C[2]; - -//----- (0047C660) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - __int64 a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - int *a7, - long double *a8) -{ - __int64 result; // rax - int v9; // [esp+0h] [ebp-5Ch] - int v10; // [esp+4h] [ebp-58h] - int v11; // [esp+3Ch] [ebp-20h] BYREF - long double v12[2]; // [esp+40h] [ebp-1Ch] BYREF - - LOBYTE(v9) = 0; - v10 = this[2]; - v11 = 0; - result = std::__facet_shims::__money_get(v9, v10, a2, a3, a4, a5, a6, &v11, (int)v12, 0); - if ( v11 ) - *a7 = v11; - else - *a8 = v12[0]; - return result; -} -// 47C6C1: variable 'v9' is possibly undefined -// 47C660: using guessed type long double var_1C[2]; - -//----- (0047C6F0) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - int a9) -{ - int v9; // eax - void (__cdecl *v10)(void **); // eax - int *v12; // ebx - int v13; // edx - int *v14; // eax - int v15; // ebx - int v16; // esi - int v17; // ecx - int v18; // [esp+0h] [ebp-D8h] - struct _Unwind_Exception *lpuexcpt; // [esp+40h] [ebp-98h] - int v20; // [esp+88h] [ebp-50h] BYREF - int *v21; // [esp+8Ch] [ebp-4Ch] BYREF - int v22; // [esp+90h] [ebp-48h] - int Src[4]; // [esp+94h] [ebp-44h] BYREF - void *v24[6]; // [esp+A4h] [ebp-34h] BYREF - void (__cdecl *v25)(void **); // [esp+BCh] [ebp-1Ch] - - v9 = this[2]; - LOBYTE(v18) = 0; - v25 = 0; - v20 = 0; - lpuexcpt = std::__facet_shims::__money_get(v18, v9, a2, a3, a4, a5, a6, a7, &v20, 0, v24); - v10 = v25; - if ( v20 ) - { - *a8 = v20; - goto LABEL_3; - } - if ( !v25 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v21 = Src; - std::wstring::_M_construct(&v21, (_WORD *)v24[0], (int)v24[0] + 2 * (int)v24[1]); - v12 = Src; - v13 = v22; - v14 = *(int **)a9; - if ( v21 == Src ) - { - v17 = 2 * v22; - if ( v22 ) - { - if ( v22 == 1 ) - { - *(_WORD *)v14 = Src[0]; - v17 = 2; - } - else - { - memcpy(v14, Src, 2 * v22); - v13 = v22; - v12 = v21; - v14 = *(int **)a9; - v17 = 2 * v22; - } - } - *(_DWORD *)(a9 + 4) = v13; - *(_WORD *)((char *)v14 + v17) = 0; - v14 = v12; - goto LABEL_11; - } - v15 = Src[0]; - if ( v14 == (int *)(a9 + 8) ) - { - *(_DWORD *)a9 = v21; - *(_DWORD *)(a9 + 4) = v13; - *(_DWORD *)(a9 + 8) = v15; - } - else - { - v16 = *(_DWORD *)(a9 + 8); - *(_DWORD *)a9 = v21; - *(_DWORD *)(a9 + 4) = v13; - *(_DWORD *)(a9 + 8) = v15; - if ( v14 ) - { - v21 = v14; - Src[0] = v16; -LABEL_11: - v22 = 0; - *(_WORD *)v14 = 0; - if ( v14 != Src ) - operator delete(v14); - } - } - v10 = v25; -LABEL_3: - if ( v10 ) - v10(v24); - return lpuexcpt; -} -// 47C7B9: variable 'v18' is possibly undefined - -//----- (0047C970) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - int *a9) -{ - int *v9; // eax - void (__cdecl *v10)(void **); // eax - int v12; // ecx - int v13; // eax - int v14; // [esp+0h] [ebp-B8h] - struct _Unwind_Exception *lpuexcpt; // [esp+40h] [ebp-78h] - char v16[5]; // [esp+8Bh] [ebp-2Dh] BYREF - int v17; // [esp+90h] [ebp-28h] BYREF - void *v18[6]; // [esp+94h] [ebp-24h] BYREF - void (__cdecl *v19)(void **); // [esp+ACh] [ebp-Ch] - - v9 = (int *)this[2]; - LOBYTE(v14) = 0; - v19 = 0; - *(_DWORD *)&v16[1] = 0; - lpuexcpt = std::__facet_shims::__money_get(v14, v9, a2, a3, a4, a5, a6, a7, &v16[1], 0, v18); - v10 = v19; - if ( *(_DWORD *)&v16[1] ) - { - *a8 = *(_DWORD *)&v16[1]; - } - else - { - if ( !v19 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::wstring::basic_string(&v17, (_WORD *)v18[0], (int)v18[1], (int)v16); - std::wstring::swap(a9, &v17); - v12 = v17; - if ( _CRT_MT ) - { - v13 = _InterlockedExchangeAdd((volatile signed __int32 *)(v17 - 4), 0xFFFFFFFF); - } - else - { - v13 = *(_DWORD *)(v17 - 4); - *(_DWORD *)(v17 - 4) = v13 - 1; - } - if ( v13 <= 0 ) - std::wstring::_Rep::_M_destroy((void *)(v12 - 12), (int)v16); - v10 = v19; - } - if ( v10 ) - v10(v18); - return lpuexcpt; -} -// 47CA1F: variable 'v14' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (0047CB40) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - long double *a9) -{ - struct _Unwind_Exception *v9; // ecx - int v11; // [esp+0h] [ebp-6Ch] - int *v12; // [esp+4h] [ebp-68h] - int v13; // [esp+4Ch] [ebp-20h] BYREF - long double v14[2]; // [esp+50h] [ebp-1Ch] BYREF - - LOBYTE(v11) = 0; - v12 = (int *)this[2]; - v13 = 0; - v9 = std::__facet_shims::__money_get(v11, v12, a2, a3, a4, a5, a6, a7, &v13, (int)v14, 0); - if ( v13 ) - *a8 = v13; - else - *a9 = v14[0]; - return v9; -} -// 47CBAD: variable 'v11' is possibly undefined -// 47CB40: using guessed type long double var_1C[2]; - -//----- (0047CC00) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - long double *a9) -{ - struct _Unwind_Exception *v9; // ecx - int v11; // [esp+0h] [ebp-6Ch] - int v12; // [esp+4h] [ebp-68h] - int v13; // [esp+4Ch] [ebp-20h] BYREF - long double v14[2]; // [esp+50h] [ebp-1Ch] BYREF - - LOBYTE(v11) = 0; - v12 = this[2]; - v13 = 0; - v9 = std::__facet_shims::__money_get(v11, v12, a2, a3, a4, a5, a6, a7, &v13, (int)v14, 0); - if ( v13 ) - *a8 = v13; - else - *a9 = v14[0]; - return v9; -} -// 47CC6D: variable 'v11' is possibly undefined -// 47CC00: using guessed type long double var_1C[2]; - -//----- (0047CCC0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6, - int a7) -{ - int *v7; // eax - _BYTE *v8; // edx - size_t v9; // ebx - int v11; // [esp+0h] [ebp-A8h] - void *Src; // [esp+30h] [ebp-78h] - int Size; // [esp+40h] [ebp-68h] - __int64 Sizea; // [esp+40h] [ebp-68h] - int v16; // [esp+80h] [ebp-28h] BYREF - int v17[2]; // [esp+84h] [ebp-24h] BYREF - int v18[4]; // [esp+8Ch] [ebp-1Ch] BYREF - void (__cdecl *v19)(void **); // [esp+9Ch] [ebp-Ch] - - v7 = v18; - v19 = 0; - v8 = *(_BYTE **)a7; - v9 = *(_DWORD *)(a7 + 4); - v17[0] = (int)v18; - Src = v8; - Size = v9; - if ( &v8[v9] && !v8 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v16 = v9; - if ( v9 > 0xF ) - { - v7 = (int *)std::string::_M_create((unsigned int *)&v16, 0); - v17[0] = (int)v7; - v18[0] = v16; -LABEL_12: - memcpy(v7, Src, v9); - Size = v16; - v7 = (int *)v17[0]; - goto LABEL_6; - } - if ( v9 == 1 ) - { - LOBYTE(v18[0]) = *v8; - goto LABEL_6; - } - if ( v9 ) - goto LABEL_12; -LABEL_6: - v17[1] = Size; - *((_BYTE *)v7 + Size) = 0; - v19 = std::__facet_shims::`anonymous namespace'::__destroy_string; - LOBYTE(v11) = 0; - Sizea = std::__facet_shims::__money_put(v11, this[2], a2, a3, a4, a5, a6, 0.0, (int)v17); - if ( v19 ) - v19((void **)v17); - return Sizea; -} -// 47CDAB: variable 'v11' is possibly undefined - -//----- (0047CEA0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6, - std::string *a7) -{ - int v8; // [esp+0h] [ebp-A8h] - const std::string *v9; // [esp+4h] [ebp-A4h] - __int64 lpuexcpt; // [esp+40h] [ebp-68h] - int v12[6]; // [esp+84h] [ebp-24h] BYREF - void (__cdecl *v13)(int *); // [esp+9Ch] [ebp-Ch] - - v13 = 0; - std::string::string(v12, a7, v9); - v12[1] = *(_DWORD *)(*(_DWORD *)a7 - 12); - v13 = std::__facet_shims::`anonymous namespace'::__destroy_string; - LOBYTE(v8) = 0; - lpuexcpt = std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, 0.0, (int)v12); - if ( v13 ) - v13(v12); - return lpuexcpt; -} -// 47CEF5: variable 'v9' is possibly undefined -// 47CF4F: variable 'v8' is possibly undefined - -//----- (0047CFC0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6, - long double a7) -{ - int v8; // [esp+0h] [ebp-3Ch] - - LOBYTE(v8) = 0; - return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); -} -// 47D008: variable 'v8' is possibly undefined - -//----- (0047D020) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6, - long double a7) -{ - int v8; // [esp+0h] [ebp-3Ch] - - LOBYTE(v8) = 0; - return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); -} -// 47D068: variable 'v8' is possibly undefined - -//----- (0047D080) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - unsigned __int16 a6, - int a7) -{ - int v8; // [esp+0h] [ebp-A8h] - __int64 lpuexcpt; // [esp+40h] [ebp-68h] - int v11[2]; // [esp+84h] [ebp-24h] BYREF - char v12; // [esp+8Ch] [ebp-1Ch] BYREF - void (__cdecl *v13)(void **); // [esp+9Ch] [ebp-Ch] - - v13 = 0; - v11[0] = (int)&v12; - std::wstring::_M_construct(v11, *(_WORD **)a7, *(_DWORD *)a7 + 2 * *(_DWORD *)(a7 + 4)); - v13 = std::__facet_shims::`anonymous namespace'::__destroy_string; - LOBYTE(v8) = 0; - lpuexcpt = std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, 0.0, (int)v11); - if ( v13 ) - v13((void **)v11); - return lpuexcpt; -} -// 47D139: variable 'v8' is possibly undefined - -//----- (0047D1A0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - unsigned __int16 a6, - _DWORD *a7) -{ - int v8; // [esp+0h] [ebp-A8h] - __int64 lpuexcpt; // [esp+40h] [ebp-68h] - int v11[6]; // [esp+84h] [ebp-24h] BYREF - void (__cdecl *v12)(int *); // [esp+9Ch] [ebp-Ch] - - v12 = 0; - std::wstring::basic_string(v11, a7); - v11[1] = *(_DWORD *)(*a7 - 12); - v12 = std::__facet_shims::`anonymous namespace'::__destroy_string; - LOBYTE(v8) = 0; - lpuexcpt = std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, 0.0, (int)v11); - if ( v12 ) - v12(v11); - return lpuexcpt; -} -// 47D24F: variable 'v8' is possibly undefined - -//----- (0047D2C0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - __int16 a6, - long double a7) -{ - int v8; // [esp+0h] [ebp-3Ch] - - LOBYTE(v8) = 0; - return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); -} -// 47D308: variable 'v8' is possibly undefined - -//----- (0047D320) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - __int16 a6, - long double a7) -{ - int v8; // [esp+0h] [ebp-3Ch] - - LOBYTE(v8) = 0; - return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); -} -// 47D368: variable 'v8' is possibly undefined - -//----- (0047D380) -------------------------------------------------------- -const char *_ZGTtNKSt13bad_exception4whatEv() -{ - return "std::bad_exception"; -} - -//----- (0047D390) -------------------------------------------------------- -bool __fastcall std::filebuf::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 40)); -} - -//----- (0047D3A0) -------------------------------------------------------- -bool __fastcall std::wfilebuf::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 40)); -} - -//----- (0047D3B0) -------------------------------------------------------- -int __fastcall std::fstream::rdbuf(int a1) -{ - return a1 + 12; -} - -//----- (0047D3C0) -------------------------------------------------------- -bool __fastcall std::fstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 52)); -} - -//----- (0047D3D0) -------------------------------------------------------- -int __fastcall std::wfstream::rdbuf(int a1) -{ - return a1 + 12; -} - -//----- (0047D3E0) -------------------------------------------------------- -bool __fastcall std::wfstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 52)); -} - -//----- (0047D3F0) -------------------------------------------------------- -int __fastcall std::wistream::gcount(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (0047D400) -------------------------------------------------------- -int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1) -{ - return *a1; -} - -//----- (0047D410) -------------------------------------------------------- -int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1) -{ - return *a1; -} - -//----- (0047D420) -------------------------------------------------------- -long double std::random_device::_M_getentropy() -{ - return 0.0; -} - -//----- (0047D430) -------------------------------------------------------- -int __fastcall std::ifstream::rdbuf(int a1) -{ - return a1 + 8; -} - -//----- (0047D440) -------------------------------------------------------- -bool __fastcall std::ifstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 48)); -} - -//----- (0047D450) -------------------------------------------------------- -int __fastcall std::wifstream::rdbuf(int a1) -{ - return a1 + 8; -} - -//----- (0047D460) -------------------------------------------------------- -bool __fastcall std::wifstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 48)); -} - -//----- (0047D470) -------------------------------------------------------- -int __fastcall std::ofstream::rdbuf(int a1) -{ - return a1 + 4; -} - -//----- (0047D480) -------------------------------------------------------- -bool __fastcall std::ofstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 44)); -} - -//----- (0047D490) -------------------------------------------------------- -int __fastcall std::wofstream::rdbuf(int a1) -{ - return a1 + 4; -} - -//----- (0047D4A0) -------------------------------------------------------- -bool __fastcall std::wofstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 44)); -} - -//----- (0047D4B0) -------------------------------------------------------- -int __fastcall std::streambuf::gptr(int a1) -{ - return *(_DWORD *)(a1 + 8); -} - -//----- (0047D4C0) -------------------------------------------------------- -int __fastcall std::streambuf::pptr(int a1) -{ - return *(_DWORD *)(a1 + 20); -} - -//----- (0047D4D0) -------------------------------------------------------- -int __fastcall std::streambuf::eback(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (0047D4E0) -------------------------------------------------------- -int __fastcall std::streambuf::egptr(int a1) -{ - return *(_DWORD *)(a1 + 12); -} - -//----- (0047D4F0) -------------------------------------------------------- -int __fastcall std::streambuf::epptr(int a1) -{ - return *(_DWORD *)(a1 + 24); -} - -//----- (0047D500) -------------------------------------------------------- -int __fastcall std::streambuf::pbase(int a1) -{ - return *(_DWORD *)(a1 + 16); -} - -//----- (0047D510) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2) -{ - const std::locale *v4; // [esp+4h] [ebp-18h] - - std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); - return this; -} -// 47D520: variable 'v4' is possibly undefined - -//----- (0047D540) -------------------------------------------------------- -int __fastcall std::wstreambuf::gptr(int a1) -{ - return *(_DWORD *)(a1 + 8); -} - -//----- (0047D550) -------------------------------------------------------- -int __fastcall std::wstreambuf::pptr(int a1) -{ - return *(_DWORD *)(a1 + 20); -} - -//----- (0047D560) -------------------------------------------------------- -int __fastcall std::wstreambuf::eback(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (0047D570) -------------------------------------------------------- -int __fastcall std::wstreambuf::egptr(int a1) -{ - return *(_DWORD *)(a1 + 12); -} - -//----- (0047D580) -------------------------------------------------------- -int __fastcall std::wstreambuf::epptr(int a1) -{ - return *(_DWORD *)(a1 + 24); -} - -//----- (0047D590) -------------------------------------------------------- -int __fastcall std::wstreambuf::pbase(int a1) -{ - return *(_DWORD *)(a1 + 16); -} - -//----- (0047D5A0) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2) -{ - const std::locale *v4; // [esp+4h] [ebp-18h] - - std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); - return this; -} -// 47D5B0: variable 'v4' is possibly undefined - -//----- (0047D5D0) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0047D5F0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; -} - -//----- (0047D610) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_in( - int this, - int a2, - unsigned __int8 *a3, - int a4, - unsigned __int8 **a5, - int a6, - int a7, - _DWORD *a8) -{ - unsigned int v8; // edi - unsigned __int8 *v9; // edx - unsigned int v11; // eax - int result; // eax - unsigned __int8 *v13; // [esp+8h] [ebp-14h] BYREF - unsigned __int8 *v14; // [esp+Ch] [ebp-10h] - - v8 = *(_DWORD *)(this + 8); - v9 = a3; - v13 = a3; - v14 = (unsigned __int8 *)a4; - if ( (*(_BYTE *)(this + 12) & 4) != 0 - && (unsigned int)(a4 - (_DWORD)a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v9 = a3 + 3; - v13 = a3 + 3; - } - if ( (unsigned __int8 *)a4 == v9 ) - { -LABEL_14: - result = 0; - } - else - { - while ( 1 ) - { - if ( a7 == a6 ) - { - v9 = v13; - result = 1; - goto LABEL_9; - } - v11 = std::`anonymous namespace'::read_utf8_code_point(&v13, v8); - v9 = v13; - if ( v11 == -2 ) - { - result = 1; - goto LABEL_9; - } - if ( v8 < v11 ) - break; - a6 += 4; - *(_DWORD *)(a6 - 4) = v11; - if ( v14 == v9 ) - goto LABEL_14; - } - result = 2; - } -LABEL_9: - *a5 = v9; - *a8 = a6; - return result; -} -// 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (0047D6E0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_out( - int this, - int a2, - unsigned int *a3, - unsigned int *a4, - unsigned int **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned int v8; // edi - _BYTE *v9; // eax - unsigned int *v10; // ebx - int v11; // ecx - _BYTE *v13[5]; // [esp+8h] [ebp-14h] BYREF - - v8 = *(_DWORD *)(this + 8); - v9 = a6; - v10 = a3; - v13[0] = a6; - v13[1] = a7; - if ( (*(_BYTE *)(this + 12) & 2) != 0 ) - { - v11 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_8; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v13[0] = a6 + 3; - } - if ( a3 == a4 ) - { -LABEL_11: - v9 = v13[0]; - v11 = 0; - } - else - { - while ( 1 ) - { - if ( v8 < *v10 ) - { - v9 = v13[0]; - v11 = 2; - goto LABEL_8; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v13, *v10) ) - break; - if ( a4 == ++v10 ) - goto LABEL_11; - } - v9 = v13[0]; - v11 = 1; - } -LABEL_8: - *a5 = v10; - *a8 = v9; - return v11; -} - -//----- (0047D790) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - int a5) -{ - unsigned int v5; // esi - int v6; // ebx - unsigned int utf8_code; // eax - bool v8; // dl - unsigned __int8 *v10[5]; // [esp+8h] [ebp-14h] BYREF - - v5 = *(_DWORD *)(this + 8); - v10[0] = a3; - v10[1] = a4; - if ( (*(_BYTE *)(this + 12) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v10[0] = a3 + 3; - } - v6 = a5 - 1; - if ( a5 ) - { - do - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v10, v5); - v8 = v6-- != 0; - } - while ( v5 >= utf8_code && v8 ); - } - return (unsigned __int8 *)(v10[0] - a3); -} -// 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (0047D820) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0047D840) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 3 : 6; -} - -//----- (0047D860) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_in( - _DWORD *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - char *a6, - char *a7, - char **a8) -{ - int v8; // eax - unsigned int v9; // ecx - int result; // eax - unsigned __int8 *v11[2]; // [esp+8h] [ebp-10h] BYREF - char *v12[2]; // [esp+10h] [ebp-8h] BYREF - - v11[0] = a3; - v11[1] = a4; - v12[0] = a6; - v12[1] = a7; - v8 = this[3]; - v9 = this[2]; - if ( v9 >= 0xFFFF ) - v9 = 0xFFFF; - result = std::`anonymous namespace'::utf16_in(v11, v12, v9, v8 & 6 | 1, 1); - *a5 = v11[0]; - *a8 = v12[0]; - return result; -} - -//----- (0047D8D0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_out( - int this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned __int16 *v8; // ebx - _BYTE *v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // ecx - unsigned __int16 *v14[2]; // [esp+4h] [ebp-1Ch] BYREF - _BYTE *v15[5]; // [esp+Ch] [ebp-14h] BYREF - - v8 = a3; - v9 = a6; - v14[1] = a4; - v10 = *(_DWORD *)(this + 8); - v14[0] = a3; - v15[0] = a6; - v15[1] = a7; - if ( v10 >= 0xFFFF ) - v10 = 0xFFFF; - if ( (*(_BYTE *)(this + 12) & 2) != 0 ) - { - v12 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_5; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v15[0] = a6 + 3; - } - v11 = std::`anonymous namespace'::utf16_out(v14, v15, v10, 1); - v8 = v14[0]; - v12 = v11; - v9 = v15[0]; -LABEL_5: - *a5 = v8; - *a8 = v9; - return v12; -} - -//----- (0047D970) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - int a5) -{ - unsigned int v5; // esi - int v6; // ebx - unsigned int utf8_code; // eax - bool v8; // dl - unsigned __int8 *v10[5]; // [esp+8h] [ebp-14h] BYREF - - v5 = *(_DWORD *)(this + 8); - v10[0] = a3; - v10[1] = a4; - if ( (*(_BYTE *)(this + 12) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v10[0] = a3 + 3; - } - v6 = a5 - 1; - if ( v5 >= 0xFFFF ) - v5 = 0xFFFF; - if ( a5 ) - { - do - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v10, v5); - v8 = v6-- != 0; - } - while ( v5 >= utf8_code && v8 ); - } - return (unsigned __int8 *)(v10[0] - a3); -} -// 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (0047DA10) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0047DA30) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 3 : 6; -} - -//----- (0047DA50) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_in( - _DWORD *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - char *a6, - char *a7, - char **a8) -{ - unsigned int v8; // ecx - int result; // eax - unsigned __int8 *v10[2]; // [esp+8h] [ebp-10h] BYREF - char *v11[2]; // [esp+10h] [ebp-8h] BYREF - - v8 = this[3]; - v10[0] = a3; - v10[1] = a4; - v11[0] = a6; - v11[1] = a7; - if ( v8 >= 0xFFFF ) - v8 = 0xFFFF; - result = std::`anonymous namespace'::utf16_in(v10, v11, v8, 1, 1); - *a5 = v10[0]; - *a8 = v11[0]; - return result; -} - -//----- (0047DAC0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_out( - int this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned __int16 *v8; // ebx - _BYTE *v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // ecx - _BYTE *v14[2]; // [esp+4h] [ebp-1Ch] BYREF - unsigned __int16 *v15[5]; // [esp+Ch] [ebp-14h] BYREF - - v8 = a3; - v9 = a6; - v15[1] = a4; - v10 = *(_DWORD *)(this + 12); - v14[0] = a6; - v14[1] = a7; - v15[0] = a3; - if ( v10 >= 0xFFFF ) - v10 = 0xFFFF; - if ( (*(_BYTE *)(this + 16) & 2) != 0 ) - { - v12 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_5; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v14[0] = a6 + 3; - } - v11 = std::`anonymous namespace'::utf16_out(v15, v14, v10, 1); - v8 = v15[0]; - v12 = v11; - v9 = v14[0]; -LABEL_5: - *a5 = v8; - *a8 = v9; - return v12; -} - -//----- (0047DB60) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - int a5) -{ - unsigned int v5; // esi - int v6; // ebx - unsigned int utf8_code; // eax - bool v8; // dl - unsigned __int8 *v10[5]; // [esp+8h] [ebp-14h] BYREF - - v5 = *(_DWORD *)(this + 12); - v10[0] = a3; - v10[1] = a4; - if ( (*(_BYTE *)(this + 16) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v10[0] = a3 + 3; - } - v6 = a5 - 1; - if ( v5 >= 0xFFFF ) - v5 = 0xFFFF; - if ( a5 ) - { - do - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v10, v5); - v8 = v6-- != 0; - } - while ( v5 >= utf8_code && v8 ); - } - return (unsigned __int8 *)(v10[0] - a3); -} -// 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (0047DC00) -------------------------------------------------------- -char __userpurge std::__iosfail_type_info::__do_upcast@( - int *a1@, - std::__iosfail_type_info *this, - const __cxxabiv1::__class_type_info *a3, - void **a4) -{ - char result; // al - - result = std::__is_ios_failure_handler(this); - if ( !result ) - return __cxxabiv1::__class_type_info::__do_upcast(a1, this, a3, a4); - *(_DWORD *)a3 += 16; - return result; -} - -//----- (0047DC50) -------------------------------------------------------- -bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - unsigned __int8 v4; // dl - _DWORD *v5; // ecx - char v6; // bl - char v7; // di - unsigned __int8 v9; // di - int v10; // eax - int v11; // eax - unsigned __int8 v12; // [esp+Fh] [ebp-Dh] - - v3 = (_DWORD *)*this; - v4 = this[1] == -1; - if ( (v4 & (v3 != 0)) != 0 ) - { - v9 = v4 & (v3 != 0); - v4 = 0; - if ( v3[2] >= v3[3] ) - { - v10 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); - v4 = 0; - if ( v10 == -1 ) - { - *this = 0; - v4 = v9; - } - } - } - v5 = *(_DWORD **)a2; - v6 = *(_DWORD *)(a2 + 4) == -1; - v7 = v6 & (*(_DWORD *)a2 != 0); - if ( v7 ) - { - v6 = 0; - if ( v5[2] >= v5[3] ) - { - v12 = v4; - v11 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); - v4 = v12; - if ( v11 == -1 ) - { - *(_DWORD *)a2 = 0; - v6 = v7; - } - } - } - return v6 == (char)v4; -} - -//----- (0047DCF0) -------------------------------------------------------- -int __fastcall std::istreambuf_iterator::_M_get(int a1) -{ - int result; // eax - _DWORD *v3; // ecx - unsigned __int8 *v4; // eax - - result = *(_DWORD *)(a1 + 4); - v3 = *(_DWORD **)a1; - if ( __PAIR64__(result, (unsigned int)v3) > 0xFFFFFFFF00000000LL ) - { - v4 = (unsigned __int8 *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - { - result = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); - if ( result == -1 ) - *(_DWORD *)a1 = 0; - } - else - { - return *v4; - } - } - return result; -} - -//----- (0047DD40) -------------------------------------------------------- -bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2) -{ - _DWORD *v3; // ecx - unsigned __int8 v4; // dl - _DWORD *v5; // edi - unsigned __int8 v6; // al - unsigned __int8 v7; // bl - unsigned __int8 v9; // di - _WORD *v10; // eax - __int16 v11; // ax - __int16 *v12; // eax - __int16 v13; // cx - __int16 v14; // ax - unsigned __int8 v15; // [esp+Fh] [ebp-Dh] - - v3 = *(_DWORD **)this; - v4 = this[2] == 0xFFFF; - if ( (v4 & (v3 != 0)) != 0 ) - { - v9 = v4 & (v3 != 0); - v10 = (_WORD *)v3[2]; - v11 = (unsigned int)v10 >= v3[3] ? (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3) : *v10; - v4 = 0; - if ( v11 == -1 ) - { - *(_DWORD *)this = 0; - v4 = v9; - } - } - v5 = *(_DWORD **)a2; - v6 = *(_WORD *)(a2 + 4) == 0xFFFF; - v7 = v6 & (*(_DWORD *)a2 != 0); - if ( v7 ) - { - v12 = (__int16 *)v5[2]; - if ( (unsigned int)v12 >= v5[3] ) - { - v15 = v4; - v14 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); - v4 = v15; - v13 = v14; - } - else - { - v13 = *v12; - } - v6 = 0; - if ( v13 == -1 ) - { - *(_DWORD *)a2 = 0; - v6 = v7; - } - } - return v4 == v6; -} - -//----- (0047DDE0) -------------------------------------------------------- -int __fastcall std::istreambuf_iterator::_M_get(int a1) -{ - int result; // eax - _DWORD *v3; // ecx - unsigned __int16 *v4; // eax - - result = *(unsigned __int16 *)(a1 + 4); - v3 = *(_DWORD **)a1; - if ( (_WORD)result == 0xFFFF && v3 ) - { - v4 = (unsigned __int16 *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - result = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); - else - result = *v4; - if ( (_WORD)result == 0xFFFF ) - *(_DWORD *)a1 = 0; - } - return result; -} - -//----- (0047DE30) -------------------------------------------------------- -int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0047DE50) -------------------------------------------------------- -int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 6; -} - -//----- (0047DE70) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_in( - _DWORD *this, - int a2, - int a3, - int a4, - int *a5, - int a6, - int a7, - _DWORD *a8) -{ - unsigned int v8; // esi - _WORD *v10; // ecx - unsigned int v11; // edx - int v12; // edi - unsigned __int16 v13; // dx - unsigned __int16 v14; // bp - unsigned int v15; // eax - int v16; // edx - __int16 v17; // bp - int v18; // eax - int v20; // [esp+0h] [ebp-24h] - int v21; // [esp+8h] [ebp-1Ch] BYREF - _WORD *v22; // [esp+Ch] [ebp-18h] BYREF - int v23; // [esp+10h] [ebp-14h] - - v8 = this[2]; - v22 = (_WORD *)a3; - v23 = a4; - v21 = this[3]; - std::`anonymous namespace'::read_utf16_bom((int)&v22, &v21); - v10 = v22; - v20 = v23; - v11 = (unsigned int)(v23 - (_DWORD)v22) >> 1; - if ( !v11 ) - { -LABEL_20: - *a5 = (int)v10; - *a8 = a6; - return 2 * (a4 != (_DWORD)v10); - } - v12 = v21 & 1; - while ( a7 != a6 ) - { - LOWORD(v15) = *v10; - v17 = __ROL2__(*v10, 8); - if ( !v12 ) - LOWORD(v15) = v17; - v15 = (unsigned __int16)v15; - if ( (unsigned int)(unsigned __int16)v15 - 55296 <= 0x3FF ) - { - if ( v11 == 1 ) - goto LABEL_16; - v13 = v10[1]; - v14 = __ROL2__(v13, 8); - if ( !v12 ) - v13 = v14; - if ( (unsigned int)v13 - 56320 <= 0x3FF ) - { - v15 = v13 + ((unsigned __int16)v15 << 10) - 56613888; - v16 = 2; - if ( v8 < v15 ) - goto LABEL_15; - goto LABEL_8; - } -LABEL_18: - v10 = v22; - v18 = (int)v22; - if ( v8 != -1 ) - { - v11 = 2; - goto LABEL_17; - } - a6 += 4; - *(_DWORD *)(a6 - 4) = -1; - v11 = (unsigned int)(v20 - (_DWORD)v10) >> 1; - if ( !v11 ) - goto LABEL_20; - } - else - { - if ( (unsigned int)(unsigned __int16)v15 - 56320 <= 0x3FF ) - goto LABEL_18; - v16 = 1; - if ( v8 < (unsigned __int16)v15 ) - { -LABEL_15: - v11 = 2; -LABEL_16: - v18 = (int)v22; -LABEL_17: - *a5 = v18; - *a8 = a6; - return v11; - } -LABEL_8: - v10 += v16; - a6 += 4; - *(_DWORD *)(a6 - 4) = v15; - v22 = v10; - v11 = (unsigned int)(v20 - (_DWORD)v10) >> 1; - if ( !v11 ) - goto LABEL_20; - } - } - *a5 = (int)v22; - *a8 = a7; - return 1; -} - -//----- (0047E010) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_out( - _DWORD *this, - int a2, - unsigned int *a3, - unsigned int *a4, - unsigned int **a5, - _WORD *a6, - int a7, - _DWORD *a8) -{ - int v8; // edi - unsigned int v9; // ebx - unsigned int *v10; // eax - _WORD *v11; // edx - int v12; // esi - unsigned int v13; // esi - unsigned int v14; // edi - unsigned int v16; // edi - __int16 v17; // si - __int16 v18; // di - __int16 v19; // di - unsigned int v20; // [esp+0h] [ebp-14h] - int v21; // [esp+0h] [ebp-14h] - - v8 = this[3]; - v9 = this[2]; - v10 = a3; - v11 = a6; - if ( (v8 & 2) != 0 ) - { - v20 = a7 - (_DWORD)a6; - v12 = 1; - if ( (v8 & 1) != 0 ) - { - if ( v20 <= 1 ) - goto LABEL_11; - v11 = a6 + 1; - *a6 = -257; - } - else - { - if ( v20 <= 1 ) - goto LABEL_11; - v11 = a6 + 1; - *a6 = -2; - } - } - if ( a3 == a4 ) - { -LABEL_17: - v12 = 0; - } - else - { - v21 = v8 & 1; - while ( 1 ) - { - v13 = *v10; - if ( v9 < *v10 ) - break; - v14 = (unsigned int)(a7 - (_DWORD)v11) >> 1; - if ( v13 > 0xFFFF ) - { - if ( v14 <= 1 ) - { -LABEL_10: - v12 = 1; - goto LABEL_11; - } - v16 = v13 >> 10; - v17 = (v13 & 0x3FF) - 9216; - v18 = v16 - 10304; - if ( !v21 ) - { - v18 = __ROL2__(v18, 8); - v17 = __ROL2__(v17, 8); - } - *v11 = v18; - v11 += 2; - *(v11 - 1) = v17; - } - else - { - if ( !v14 ) - goto LABEL_10; - v19 = __ROL2__(v13, 8); - if ( !v21 ) - LOWORD(v13) = v19; - *v11++ = v13; - } - if ( a4 == ++v10 ) - goto LABEL_17; - } - v12 = 2; - } -LABEL_11: - *a5 = v10; - *a8 = v11; - return v12; -} - -//----- (0047E140) -------------------------------------------------------- -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) -{ - unsigned int v5; // ebx - _WORD *v6; // ecx - int v7; // esi - unsigned int v8; // edx - unsigned int v9; // eax - __int16 v10; // bp - unsigned __int16 v11; // dx - unsigned __int16 v12; // bp - int v13; // edx - bool v15; // dl - bool v16; // al - int v17; // [esp+8h] [ebp-1Ch] BYREF - _WORD *v18; // [esp+Ch] [ebp-18h] BYREF - int v19; // [esp+10h] [ebp-14h] - - v5 = this[2]; - v18 = (_WORD *)a3; - v19 = a4; - v17 = this[3]; - std::`anonymous namespace'::read_utf16_bom((int)&v18, &v17); - if ( a5 ) - { - v6 = v18; - v7 = a5 - 1; - v8 = (unsigned int)(v19 - (_DWORD)v18) >> 1; - if ( v8 ) - goto LABEL_3; -LABEL_17: - v9 = -2; - while ( 1 ) - { - v15 = v5 >= v9; - v16 = v7-- != 0; - if ( !v16 || !v15 ) - return (char *)v6 - a3; - v8 = (unsigned int)(v19 - (_DWORD)v6) >> 1; - if ( !v8 ) - goto LABEL_17; -LABEL_3: - LOWORD(v9) = *v6; - v10 = __ROL2__(*v6, 8); - if ( (v17 & 1) == 0 ) - LOWORD(v9) = v10; - v9 = (unsigned __int16)v9; - if ( (unsigned int)(unsigned __int16)v9 - 55296 > 0x3FF ) - { - if ( (unsigned int)(unsigned __int16)v9 - 56320 <= 0x3FF ) - goto LABEL_18; - v13 = 1; - if ( v5 < (unsigned __int16)v9 ) - return (char *)v6 - a3; -LABEL_14: - v6 += v13; - v18 = v6; - } - else - { - if ( v8 == 1 ) - goto LABEL_17; - v11 = v6[1]; - v12 = __ROL2__(v11, 8); - if ( (v17 & 1) == 0 ) - v11 = v12; - if ( (unsigned int)v11 - 56320 <= 0x3FF ) - { - v9 = v11 + ((unsigned __int16)v9 << 10) - 56613888; - v13 = 2; - if ( v5 < v9 ) - return (char *)v6 - a3; - goto LABEL_14; - } -LABEL_18: - v9 = -1; - } - } - } - return (char *)v18 - a3; -} - -//----- (0047E280) -------------------------------------------------------- -int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0047E2A0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 2 : 4; -} - -//----- (0047E2C0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_in( - unsigned int *this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - int a6, - int a7, - int *a8) -{ - unsigned int v8; // edx - int result; // eax - unsigned __int16 *v10; // edx - int v11; // esi - unsigned __int16 *v12[2]; // [esp+4h] [ebp-18h] BYREF - int v13[4]; // [esp+Ch] [ebp-10h] BYREF - - v8 = this[3]; - v12[0] = a3; - v12[1] = a4; - v13[0] = a6; - v13[1] = a7; - result = std::`anonymous namespace'::ucs2_in(v12, v13, this[2], v8); - v10 = v12[0]; - v11 = v13[0]; - *a5 = v12[0]; - *a8 = v11; - if ( !result && v10 != a4 ) - return 2; - return result; -} - -//----- (0047E330) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_out( - _DWORD *this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _WORD *a6, - int a7, - int *a8) -{ - unsigned int v8; // edi - unsigned __int16 *v9; // edx - int v10; // eax - int v11; // esi - unsigned int v12; // ebx - int v13; // ecx - int v14; // eax - unsigned __int16 *v16[2]; // [esp+4h] [ebp-1Ch] BYREF - int v17[5]; // [esp+Ch] [ebp-14h] BYREF - - v8 = this[2]; - v9 = a3; - v10 = (int)a6; - v16[1] = a4; - v11 = this[3]; - v16[0] = a3; - v17[0] = (int)a6; - v17[1] = a7; - if ( (v11 & 2) == 0 ) - goto LABEL_5; - v12 = a7 - (_DWORD)a6; - v13 = 1; - if ( (v11 & 1) == 0 ) - { - if ( v12 <= 1 ) - goto LABEL_6; - *a6 = -2; - v17[0] = (int)(a6 + 1); - goto LABEL_5; - } - if ( v12 > 1 ) - { - *a6 = -257; - v17[0] = (int)(a6 + 1); -LABEL_5: - v14 = std::`anonymous namespace'::ucs2_out(v16, v17, v8, v11); - v9 = v16[0]; - v13 = v14; - v10 = v17[0]; - } -LABEL_6: - *a5 = v9; - *a8 = v10; - return v13; -} - -//----- (0047E3E0) -------------------------------------------------------- -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) -{ - unsigned int v5; // esi - unsigned __int16 *v6; // edx - int v7; // ecx - unsigned __int16 v8; // ax - unsigned __int16 v9; // bx - bool v11; // al - int v12; // [esp+4h] [ebp-1Ch] BYREF - unsigned __int16 *v13; // [esp+8h] [ebp-18h] BYREF - int v14; // [esp+Ch] [ebp-14h] - - v5 = this[2]; - v13 = (unsigned __int16 *)a3; - v14 = a4; - v12 = this[3]; - std::`anonymous namespace'::read_utf16_bom((int)&v13, &v12); - v6 = v13; - if ( v5 >= 0xFFFF ) - v5 = 0xFFFF; - if ( a5 ) - { - v7 = a5 - 1; - do - { - if ( !((unsigned int)(v14 - (_DWORD)v6) >> 1) ) - break; - v8 = *v6; - v9 = __ROL2__(*v6, 8); - if ( (v12 & 1) == 0 ) - v8 = v9; - if ( (unsigned __int16)(v8 + 10240) <= 0x7FFu ) - break; - if ( v5 < v8 ) - break; - ++v6; - v11 = v7 != 0; - v13 = v6; - --v7; - } - while ( v11 ); - } - return (char *)v6 - a3; -} - -//----- (0047E4A0) -------------------------------------------------------- -int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0047E4C0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 2 : 4; -} - -//----- (0047E4E0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_in( - unsigned int *this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - int a6, - int a7, - int *a8) -{ - unsigned int v8; // edx - int result; // eax - unsigned __int16 *v10; // edx - int v11; // esi - unsigned __int16 *v12[2]; // [esp+4h] [ebp-18h] BYREF - int v13[4]; // [esp+Ch] [ebp-10h] BYREF - - v8 = this[4]; - v12[0] = a3; - v12[1] = a4; - v13[0] = a6; - v13[1] = a7; - result = std::`anonymous namespace'::ucs2_in(v12, v13, this[3], v8); - v10 = v12[0]; - v11 = v13[0]; - *a5 = v12[0]; - *a8 = v11; - if ( !result && v10 != a4 ) - return 2; - return result; -} - -//----- (0047E550) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_out( - _DWORD *this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _WORD *a6, - int a7, - int *a8) -{ - unsigned int v8; // edi - unsigned __int16 *v9; // edx - int v10; // eax - int v11; // esi - unsigned int v12; // ebx - int v13; // ecx - int v14; // eax - int v16[2]; // [esp+4h] [ebp-1Ch] BYREF - unsigned __int16 *v17[5]; // [esp+Ch] [ebp-14h] BYREF - - v8 = this[3]; - v9 = a3; - v10 = (int)a6; - v17[1] = a4; - v11 = this[4]; - v16[0] = (int)a6; - v16[1] = a7; - v17[0] = a3; - if ( (v11 & 2) == 0 ) - goto LABEL_5; - v12 = a7 - (_DWORD)a6; - v13 = 1; - if ( (v11 & 1) == 0 ) - { - if ( v12 <= 1 ) - goto LABEL_6; - *a6 = -2; - v16[0] = (int)(a6 + 1); - goto LABEL_5; - } - if ( v12 > 1 ) - { - *a6 = -257; - v16[0] = (int)(a6 + 1); -LABEL_5: - v14 = std::`anonymous namespace'::ucs2_out(v17, v16, v8, v11); - v9 = v17[0]; - v13 = v14; - v10 = v16[0]; - } -LABEL_6: - *a5 = v9; - *a8 = v10; - return v13; -} - -//----- (0047E600) -------------------------------------------------------- -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) -{ - unsigned int v5; // esi - unsigned __int16 *v6; // edx - int v7; // ecx - unsigned __int16 v8; // ax - unsigned __int16 v9; // bx - bool v11; // al - int v12; // [esp+4h] [ebp-1Ch] BYREF - unsigned __int16 *v13; // [esp+8h] [ebp-18h] BYREF - int v14; // [esp+Ch] [ebp-14h] - - v5 = this[3]; - v13 = (unsigned __int16 *)a3; - v14 = a4; - v12 = this[4]; - std::`anonymous namespace'::read_utf16_bom((int)&v13, &v12); - v6 = v13; - if ( v5 >= 0xFFFF ) - v5 = 0xFFFF; - if ( a5 ) - { - v7 = a5 - 1; - do - { - if ( !((unsigned int)(v14 - (_DWORD)v6) >> 1) ) - break; - v8 = *v6; - v9 = __ROL2__(*v6, 8); - if ( (v12 & 1) == 0 ) - v8 = v9; - if ( (unsigned __int16)(v8 + 10240) <= 0x7FFu ) - break; - if ( v5 < v8 ) - break; - ++v6; - v11 = v7 != 0; - v13 = v6; - --v7; - } - while ( v11 ); - } - return (char *)v6 - a3; -} - -//----- (0047E6C0) -------------------------------------------------------- -const char *std::bad_array_new_length::what() -{ - return "std::bad_array_new_length"; -} - -//----- (0047E6D0) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0047E6F0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; -} - -//----- (0047E710) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_in( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - unsigned int *a6, - unsigned int *a7, - unsigned int **a8) -{ - unsigned int v8; // edi - unsigned __int8 *v9; // ebp - unsigned int v11; // eax - int result; // eax - unsigned __int8 *v13; // [esp+8h] [ebp-18h] BYREF - unsigned __int8 *v14; // [esp+Ch] [ebp-14h] - - v8 = *(_DWORD *)(this + 8); - v9 = a3; - v13 = a3; - v14 = a4; - if ( (*(_BYTE *)(this + 12) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v9 = a3 + 3; - v13 = a3 + 3; - } - if ( a4 == v9 ) - { -LABEL_13: - result = 0; - } - else - { - while ( 1 ) - { - if ( a7 == a6 ) - { - v9 = v13; - result = 0; - goto LABEL_11; - } - v11 = std::`anonymous namespace'::read_utf8_code_point(&v13, v8); - if ( v11 == -2 ) - { - v9 = v13; - result = 1; - goto LABEL_11; - } - if ( v8 < v11 ) - break; - if ( v11 <= 0xFFFF ) - { - *a6 = v11; - v9 = v13; - ++a6; - if ( v14 == v13 ) - goto LABEL_13; - } - else - { - if ( (unsigned int)((char *)a7 - (char *)a6) <= 4 ) - { - result = 1; - goto LABEL_11; - } - v9 = v13; - a6 += 2; - *(a6 - 1) = (unsigned __int16)((v11 & 0x3FF) - 9216); - *(a6 - 2) = (unsigned __int16)((v11 >> 10) - 10304); - if ( v14 == v9 ) - goto LABEL_13; - } - } - v9 = v13; - result = 2; - } -LABEL_11: - *a5 = v9; - *a8 = a6; - return result; -} -// 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (0047E860) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_out( - int this, - int a2, - unsigned int *a3, - unsigned int *a4, - unsigned int **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned int v8; // edi - _BYTE *v9; // eax - unsigned int *v10; // ebx - unsigned int v11; // ecx - unsigned int v12; // eax - int v13; // ebp - unsigned int v14; // edx - int v15; // ecx - _BYTE *v17[6]; // [esp+8h] [ebp-18h] BYREF - - v8 = *(_DWORD *)(this + 8); - v9 = a6; - v10 = a3; - v17[0] = a6; - v17[1] = a7; - if ( (*(_BYTE *)(this + 12) & 2) != 0 ) - { - v15 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_13; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v17[0] = a6 + 3; - } - v11 = (char *)a4 - (char *)a3; - if ( a3 == a4 ) - { -LABEL_16: - v9 = v17[0]; - v15 = 0; - } - else - { - while ( 1 ) - { - v14 = *v10; - if ( *v10 - 55296 <= 0x3FF ) - { - if ( v11 <= 4 ) - goto LABEL_16; - v12 = v10[1]; - if ( v12 - 56320 > 0x3FF || (v13 = 2, v14 = v12 + (v14 << 10) - 56613888, v8 < v14) ) - { -LABEL_12: - v9 = v17[0]; - v15 = 2; - goto LABEL_13; - } - } - else - { - if ( v14 - 56320 <= 0x3FF ) - goto LABEL_12; - v13 = 1; - if ( v8 < v14 ) - goto LABEL_12; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v17, v14) ) - break; - v10 += v13; - v11 = (char *)a4 - (char *)v10; - if ( a4 == v10 ) - goto LABEL_16; - } - v9 = v17[0]; - v15 = 1; - } -LABEL_13: - *a5 = v10; - *a8 = v9; - return v15; -} - -//----- (0047E970) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length( - unsigned int *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned int a5) -{ - return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a3, a4, a5, this[2], this[3]) - a3); -} - -//----- (0047E9A0) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0047E9C0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; -} - -//----- (0047E9E0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_in( - _DWORD *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - char *a6, - char *a7, - char **a8) -{ - unsigned int v8; // edx - int result; // eax - unsigned __int8 *v10[2]; // [esp+8h] [ebp-10h] BYREF - char *v11[2]; // [esp+10h] [ebp-8h] BYREF - - v8 = this[2]; - v10[0] = a3; - v10[1] = a4; - v11[0] = a6; - v11[1] = a7; - result = std::`anonymous namespace'::utf16_in(v10, v11, v8, this[3] & 6 | 1, 0); - *a5 = v10[0]; - *a8 = v11[0]; - return result; -} - -//----- (0047EA50) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_out( - int this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned __int16 *v8; // ebx - _BYTE *v9; // eax - unsigned int v10; // esi - int v11; // eax - int v12; // edx - unsigned __int16 *v14[2]; // [esp+4h] [ebp-18h] BYREF - _BYTE *v15[4]; // [esp+Ch] [ebp-10h] BYREF - - v8 = a3; - v9 = a6; - v14[1] = a4; - v10 = *(_DWORD *)(this + 8); - v14[0] = a3; - v15[0] = a6; - v15[1] = a7; - if ( (*(_BYTE *)(this + 12) & 2) != 0 ) - { - v12 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_3; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v15[0] = a6 + 3; - } - v11 = std::`anonymous namespace'::utf16_out(v14, v15, v10, 0); - v8 = v14[0]; - v12 = v11; - v9 = v15[0]; -LABEL_3: - *a5 = v8; - *a8 = v9; - return v12; -} - -//----- (0047EAE0) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length( - unsigned int *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned int a5) -{ - return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a3, a4, a5, this[2], this[3]) - a3); -} - -//----- (0047EB10) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0047EB30) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 4 : 7; -} - -//----- (0047EB50) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_in( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - char *a6, - char *a7, - char **a8) -{ - unsigned int v8; // edi - unsigned __int8 *v9; // ebp - unsigned int v11; // eax - int result; // eax - unsigned __int8 *v13; // [esp+8h] [ebp-18h] BYREF - unsigned __int8 *v14; // [esp+Ch] [ebp-14h] - - v8 = *(_DWORD *)(this + 12); - v9 = a3; - v13 = a3; - v14 = a4; - if ( (*(_BYTE *)(this + 16) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v9 = a3 + 3; - v13 = a3 + 3; - } - if ( v9 == a4 ) - { -LABEL_13: - result = 0; - } - else - { - while ( 1 ) - { - if ( a7 == a6 ) - { - v9 = v13; - result = 0; - goto LABEL_11; - } - v11 = std::`anonymous namespace'::read_utf8_code_point(&v13, v8); - if ( v11 == -2 ) - { - v9 = v13; - result = 1; - goto LABEL_11; - } - if ( v8 < v11 ) - break; - if ( v11 <= 0xFFFF ) - { - *(_WORD *)a6 = v11; - v9 = v13; - a6 += 2; - if ( v14 == v13 ) - goto LABEL_13; - } - else - { - if ( (unsigned int)(a7 - a6) <= 2 ) - { - result = 1; - goto LABEL_11; - } - v9 = v13; - a6 += 4; - *((_WORD *)a6 - 1) = (v11 & 0x3FF) - 9216; - *((_WORD *)a6 - 2) = (v11 >> 10) - 10304; - if ( v14 == v9 ) - goto LABEL_13; - } - } - v9 = v13; - result = 2; - } -LABEL_11: - *a5 = v9; - *a8 = a6; - return result; -} -// 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (0047EC90) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_out( - int this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned int v8; // edi - _BYTE *v9; // eax - unsigned __int16 *v10; // ebx - unsigned int v11; // ecx - int v12; // eax - int v13; // ebp - unsigned int v14; // edx - int v15; // ecx - _BYTE *v17[6]; // [esp+8h] [ebp-18h] BYREF - - v8 = *(_DWORD *)(this + 12); - v9 = a6; - v10 = a3; - v17[0] = a6; - v17[1] = a7; - if ( (*(_BYTE *)(this + 16) & 2) != 0 ) - { - v15 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_13; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v17[0] = a6 + 3; - } - v11 = (char *)a4 - (char *)a3; - if ( a3 == a4 ) - { -LABEL_16: - v9 = v17[0]; - v15 = 0; - } - else - { - while ( 1 ) - { - v14 = *v10; - if ( v14 - 55296 <= 0x3FF ) - { - if ( v11 <= 2 ) - goto LABEL_16; - v12 = v10[1]; - if ( (unsigned int)(v12 - 56320) > 0x3FF || (v13 = 2, v14 = v12 + (v14 << 10) - 56613888, v8 < v14) ) - { -LABEL_12: - v9 = v17[0]; - v15 = 2; - goto LABEL_13; - } - } - else - { - if ( v14 - 56320 <= 0x3FF ) - goto LABEL_12; - v13 = 1; - if ( v8 < v14 ) - goto LABEL_12; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v17, v14) ) - break; - v10 += v13; - v11 = (char *)a4 - (char *)v10; - if ( a4 == v10 ) - goto LABEL_16; - } - v9 = v17[0]; - v15 = 1; - } -LABEL_13: - *a5 = v10; - *a8 = v9; - return v15; -} - -//----- (0047EDB0) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length( - unsigned int *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned int a5) -{ - return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a3, a4, a5, this[3], this[4]) - a3); -} - -//----- (0047EDE0) -------------------------------------------------------- -_DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3) -{ - unsigned int v4; // [esp+8h] [ebp-70h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v7; // [esp+60h] [ebp-18h] BYREF - - (*(void (__thiscall **)(void **, int, int))(*(_DWORD *)a2 + 16))(Block, a2, a3); - std::__cow_string::__cow_string(this, (std::__cow_string *)Block[0], (size_t)Block[1], v4); - if ( Block[0] != &v7 ) - operator delete(Block[0]); - return this; -} -// 47EE4C: variable 'v4' is possibly undefined - -//----- (0047EEB0) -------------------------------------------------------- -void *__thiscall std::_V2::error_category::_M_message(void *ecx0, std::_V2::error_category *this, int a3) -{ - int v3; // ecx - int v4; // eax - unsigned int v6; // [esp+8h] [ebp-60h] - char v8[13]; // [esp+5Bh] [ebp-Dh] BYREF - - (*(void (__thiscall **)(char *, std::_V2::error_category *, int))(*(_DWORD *)this + 12))(&v8[1], this, a3); - std::__sso_string::__sso_string((int)ecx0, *(std::__sso_string **)&v8[1], *(_DWORD *)(*(_DWORD *)&v8[1] - 12), v6); - v3 = *(_DWORD *)&v8[1]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v8[1] - 4), 0xFFFFFFFF) > 0 ) - return ecx0; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v8); - return ecx0; - } - v4 = *(_DWORD *)(*(_DWORD *)&v8[1] - 4); - *(_DWORD *)(*(_DWORD *)&v8[1] - 4) = v4 - 1; - if ( v4 <= 0 ) - goto LABEL_5; - return ecx0; -} -// 47EF1C: variable 'v6' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (0047EFA0) -------------------------------------------------------- -bool __userpurge std::_V2::error_category::equivalent@( - int a1@, - std::_V2::error_category *this, - const std::error_code *a3, - int a4) -{ - bool result; // al - - result = 0; - if ( *((_DWORD *)this + 1) == a1 ) - return *(_DWORD *)this == (_DWORD)a3; - return result; -} - -//----- (0047EFC0) -------------------------------------------------------- -int __thiscall std::_V2::error_category::equivalent(void *this, int a2, _DWORD *a3) -{ - int v3; // eax - int v4; // edx - int v5; // ecx - int v6; // edx - - v3 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)this + 20))(this, a2); - v5 = v4; - v6 = 0; - if ( a3[1] == v5 ) - LOBYTE(v6) = *a3 == v3; - return v6; -} -// 47EFD4: variable 'v4' is possibly undefined - -//----- (0047F000) -------------------------------------------------------- -std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition( - std::_V2::error_category *this, - int a2) -{ - return this; -} - -//----- (0047F010) -------------------------------------------------------- -BOOL __thiscall std::map::count(_DWORD *this, int a2) -{ - _DWORD *v2; // esi - _DWORD *v3; // ebx - _DWORD *i; // edi - char v5; // al - _DWORD *v6; // edx - - v2 = this + 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v5 = std::operator<((int)(i + 4), a2); - v6 = (_DWORD *)i[3]; - if ( !v5 ) - v6 = (_DWORD *)i[2]; - if ( !v5 ) - v3 = i; - } - if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) - v3 = v2; - return v2 != v3; -} - -//----- (0047F074) -------------------------------------------------------- -BOOL __thiscall std::map::count(_DWORD *this, int a2) -{ - _DWORD *v2; // esi - _DWORD *v3; // ebx - _DWORD *i; // edi - char v5; // al - _DWORD *v6; // edx - - v2 = this + 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v5 = std::operator<((int)(i + 4), a2); - v6 = (_DWORD *)i[3]; - if ( !v5 ) - v6 = (_DWORD *)i[2]; - if ( !v5 ) - v3 = i; - } - if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) - v3 = v2; - return v2 != v3; -} - -//----- (0047F0E0) -------------------------------------------------------- -unsigned __int8 *__thiscall std::ctype::do_tolower(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *a3) -{ - unsigned __int8 *v3; // ebx - unsigned __int8 v5; // al - int (__thiscall *v6)(_DWORD *, int); // edx - - v3 = a2; - if ( a2 < a3 ) - { - do - { - while ( 1 ) - { - v6 = *(int (__thiscall **)(_DWORD *, int))(*this + 16); - v5 = *v3; - if ( v6 == std::ctype::do_tolower ) - break; - *v3++ = v6(this, (char)v5); - if ( a3 == v3 ) - return a3; - } - if ( (*(_BYTE *)(this[6] + 2 * v5) & 1) != 0 ) - v5 += 32; - *v3++ = v5; - } - while ( a3 != v3 ); - } - return a3; -} - -//----- (0047F150) -------------------------------------------------------- -int __thiscall std::ctype::do_tolower(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 1) != 0 ) - return a2 + 32; - return result; -} - -//----- (0047F170) -------------------------------------------------------- -unsigned __int8 *__thiscall std::ctype::do_toupper(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *a3) -{ - unsigned __int8 *v3; // ebx - unsigned __int8 v5; // al - int (__thiscall *v6)(_DWORD *, int); // edx - - v3 = a2; - if ( a2 < a3 ) - { - do - { - while ( 1 ) - { - v6 = *(int (__thiscall **)(_DWORD *, int))(*this + 8); - v5 = *v3; - if ( v6 == std::ctype::do_toupper ) - break; - *v3++ = v6(this, (char)v5); - if ( a3 == v3 ) - return a3; - } - if ( (*(_BYTE *)(this[6] + 2 * v5) & 2) != 0 ) - v5 -= 32; - *v3++ = v5; - } - while ( a3 != v3 ); - } - return a3; -} - -//----- (0047F1E0) -------------------------------------------------------- -int __thiscall std::ctype::do_toupper(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 2) != 0 ) - return a2 - 32; - return result; -} - -//----- (0047F200) -------------------------------------------------------- -int __fastcall std::ctype::_M_widen_init(int a1) -{ - int i; // eax - char *Buf2; // edx - void (__thiscall *v4)(int, _DWORD *, char *, int); // eax - int result; // eax - char *v6; // [esp+1Ch] [ebp-120h] - _DWORD Buf1[64]; // [esp+20h] [ebp-11Ch] BYREF - char v8[28]; // [esp+120h] [ebp-1Ch] BYREF - - for ( i = 0; i != 256; ++i ) - *((_BYTE *)Buf1 + i) = i; - Buf2 = (char *)(a1 + 29); - v4 = *(void (__thiscall **)(int, _DWORD *, char *, int))(*(_DWORD *)a1 + 28); - if ( (char *)v4 == (char *)std::ctype::do_widen ) - { - *(_DWORD *)(a1 + 29) = Buf1[0]; - *(_DWORD *)(a1 + 281) = Buf1[63]; - qmemcpy( - (void *)((a1 + 33) & 0xFFFFFFFC), - (const void *)((char *)Buf1 - &Buf2[-((a1 + 33) & 0xFFFFFFFC)]), - 4 * ((unsigned int)&Buf2[-((a1 + 33) & 0xFFFFFFFC) + 256] >> 2)); - } - else - { - v6 = (char *)(a1 + 29); - v4(a1, Buf1, v8, a1 + 29); - Buf2 = v6; - } - *(_BYTE *)(a1 + 28) = 1; - result = memcmp(Buf1, Buf2, 0x100u); - if ( result ) - *(_BYTE *)(a1 + 28) = 2; - return result; -} -// 47F200: using guessed type char var_1C[28]; - -//----- (0047F2B0) -------------------------------------------------------- -int __fastcall std::ctype::_M_narrow_init(int a1) -{ - int i; // eax - char *Buf2; // edx - void (__thiscall *v4)(int, _DWORD *, char *, _DWORD, int); // eax - int result; // eax - int (__thiscall *v6)(int, _DWORD *, char *, int, char *); // eax - char *v7; // [esp+1Ch] [ebp-130h] - char v8; // [esp+2Fh] [ebp-11Dh] BYREF - _DWORD Buf1[64]; // [esp+30h] [ebp-11Ch] BYREF - char v10[28]; // [esp+130h] [ebp-1Ch] BYREF - - for ( i = 0; i != 256; ++i ) - *((_BYTE *)Buf1 + i) = i; - Buf2 = (char *)(a1 + 285); - v4 = *(void (__thiscall **)(int, _DWORD *, char *, _DWORD, int))(*(_DWORD *)a1 + 36); - if ( (char *)v4 == (char *)std::ctype::do_narrow ) - { - *(_DWORD *)(a1 + 285) = Buf1[0]; - *(_DWORD *)(a1 + 537) = Buf1[63]; - qmemcpy( - (void *)((a1 + 289) & 0xFFFFFFFC), - (const void *)((char *)Buf1 - &Buf2[-((a1 + 289) & 0xFFFFFFFC)]), - 4 * ((unsigned int)&Buf2[-((a1 + 289) & 0xFFFFFFFC) + 256] >> 2)); - } - else - { - v7 = (char *)(a1 + 285); - v4(a1, Buf1, v10, 0, a1 + 285); - Buf2 = v7; - } - *(_BYTE *)(a1 + 541) = 1; - result = memcmp(Buf1, Buf2, 0x100u); - if ( result - || ((v6 = *(int (__thiscall **)(int, _DWORD *, char *, int, char *))(*(_DWORD *)a1 + 36), - (char *)v6 != (char *)std::ctype::do_narrow) - ? (result = v6(a1, Buf1, (char *)Buf1 + 1, 1, &v8)) - : (result = LOBYTE(Buf1[0]), v8 = Buf1[0]), - v8 == 1) ) - { - *(_BYTE *)(a1 + 541) = 2; - } - return result; -} -// 47F2B0: using guessed type char var_1C[28]; - -//----- (0047F3C0) -------------------------------------------------------- -_BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *a3, void *a4) -{ - char v4; // al - _BYTE *(__stdcall *v5)(_BYTE *, _BYTE *, void *); // eax - - v4 = this[28]; - if ( v4 == 1 ) - goto LABEL_4; - if ( v4 ) - { - v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); - if ( v5 == std::ctype::do_widen ) - goto LABEL_4; - return v5(Src, a3, a4); - } - std::ctype::_M_widen_init((int)this); - v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); - if ( v5 != std::ctype::do_widen ) - return v5(Src, a3, a4); -LABEL_4: - if ( Src == a3 ) - return Src; - memcpy(a4, Src, a3 - Src); - return a3; -} - -//----- (0047F450) -------------------------------------------------------- -int __thiscall std::ctype::narrow(_BYTE *this, int a2, int a3) -{ - int result; // eax - int v5; // ecx - int (__stdcall *v6)(unsigned __int8, int); // eax - - result = (unsigned __int8)this[(unsigned __int8)a2 + 285]; - if ( !(_BYTE)result ) - { - v5 = a2; - v6 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)this + 32); - if ( v6 != std::ctype::do_narrow ) - v5 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v6)(this, (char)a2, (char)a3); - result = a3; - if ( (_BYTE)a3 != (_BYTE)v5 ) - { - this[(unsigned __int8)a2 + 285] = v5; - return v5; - } - } - return result; -} - -//----- (0047F4C0) -------------------------------------------------------- -_BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3) -{ - if ( a2 != Src ) - memcpy(a3, Src, a2 - Src); - return a2; -} - -//----- (0047F500) -------------------------------------------------------- -int __stdcall std::ctype::do_widen(unsigned __int8 a1) -{ - return a1; -} - -//----- (0047F510) -------------------------------------------------------- -_BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4) -{ - if ( a2 != Src ) - memcpy(a4, Src, a2 - Src); - return a2; -} - -//----- (0047F550) -------------------------------------------------------- -int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2) -{ - return a1; -} - -//----- (0047F560) -------------------------------------------------------- -wint_t *__thiscall std::ctype::do_scan_is(_WORD *this, unsigned __int16 a2, wint_t *a3, unsigned int a4) -{ - _WORD *v4; // edi - wint_t C; // si - int (__thiscall *v6)(_WORD *, unsigned __int16, wint_t); // eax - _WORD *v7; // ebp - wint_t *v9; // [esp+14h] [ebp-28h] - - if ( (unsigned int)a3 >= a4 ) - return a3; - v9 = a3; - v4 = this + 343; - while ( 1 ) - { - C = *v9; - v6 = *(int (__thiscall **)(_WORD *, unsigned __int16, wint_t))(*(_DWORD *)this + 8); - if ( v6 == std::ctype::do_is ) - break; - if ( (unsigned __int8)v6(this, a2, *v9) ) - return v9; -LABEL_10: - if ( a4 <= (unsigned int)++v9 ) - return v9; - } - v7 = this + 327; - while ( (*v7 & a2) == 0 || !iswctype(C, v7[16]) ) - { - if ( v4 == ++v7 ) - goto LABEL_10; - } - return v9; -} - -//----- (0047F640) -------------------------------------------------------- -unsigned int __stdcall std::ctype::do_tolower(wint_t *a1, unsigned int a2) -{ - wint_t *v2; // ebx - wint_t C; // ax - - v2 = a1; - if ( (unsigned int)a1 < a2 ) - { - do - { - C = *v2++; - *(v2 - 1) = towlower(C); - } - while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); - } - return a2; -} - -//----- (0047F690) -------------------------------------------------------- -wint_t __stdcall std::ctype::do_tolower(wint_t C) -{ - return towlower(C); -} - -//----- (0047F6B0) -------------------------------------------------------- -unsigned int __stdcall std::ctype::do_toupper(wint_t *a1, unsigned int a2) -{ - wint_t *v2; // ebx - wint_t C; // ax - - v2 = a1; - if ( (unsigned int)a1 < a2 ) - { - do - { - C = *v2++; - *(v2 - 1) = towupper(C); - } - while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); - } - return a2; -} - -//----- (0047F700) -------------------------------------------------------- -wint_t __stdcall std::ctype::do_toupper(wint_t C) -{ - return towupper(C); -} - -//----- (0047F720) -------------------------------------------------------- -wint_t *__thiscall std::ctype::do_scan_not(_WORD *this, unsigned __int16 a2, wint_t *a3, unsigned int a4) -{ - _WORD *v4; // ebp - wint_t C; // si - int (__thiscall *v6)(_WORD *, unsigned __int16, wint_t); // eax - _WORD *v7; // edi - wint_t *v9; // [esp+14h] [ebp-28h] - - if ( (unsigned int)a3 >= a4 ) - return a3; - v9 = a3; - v4 = this + 343; - do - { - while ( 1 ) - { - C = *v9; - v6 = *(int (__thiscall **)(_WORD *, unsigned __int16, wint_t))(*(_DWORD *)this + 8); - if ( v6 == std::ctype::do_is ) - break; - if ( (unsigned __int8)v6(this, a2, *v9) ) - { - if ( a4 > (unsigned int)++v9 ) - continue; - } - return v9; - } - v7 = this + 327; - while ( (*v7 & a2) == 0 || !iswctype(C, v7[16]) ) - { - if ( v4 == ++v7 ) - return v9; - } - ++v9; - } - while ( a4 > (unsigned int)v9 ); - return v9; -} - -//----- (0047F800) -------------------------------------------------------- -int __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1) -{ - int v1; // edx - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - int v12; // eax - int v13; // eax - int v14; // eax - - if ( a1 > 0x40u ) - { - switch ( a1 ) - { - case 0x200u: - LOWORD(v13) = wctype("punct"); - return v13; - case 0x20Cu: - LOWORD(v3) = wctype("graph"); - return v3; - case 0x100u: - LOWORD(v4) = wctype("cntrl"); - return v4; - case 0x400u: - LOWORD(v14) = wctype("blank"); - return v14; - default: - return 0; - } - } - else - { - v1 = 0; - if ( a1 ) - { - switch ( a1 ) - { - case 1u: - LOWORD(v6) = wctype("upper"); - v1 = v6; - break; - case 2u: - LOWORD(v7) = wctype("lower"); - v1 = v7; - break; - case 4u: - LOWORD(v8) = wctype("alpha"); - v1 = v8; - break; - case 8u: - LOWORD(v9) = wctype("digit"); - v1 = v9; - break; - case 0xCu: - LOWORD(v10) = wctype("alnum"); - v1 = v10; - break; - case 0x10u: - LOWORD(v11) = wctype("xdigit"); - v1 = v11; - break; - case 0x20u: - LOWORD(v12) = wctype("space"); - v1 = v12; - break; - case 0x40u: - LOWORD(v5) = wctype("print"); - v1 = v5; - break; - default: - return 0; - } - } - } - return v1; -} -// 47F854: variable 'v3' is possibly undefined -// 47F876: variable 'v4' is possibly undefined -// 47F88C: variable 'v5' is possibly undefined -// 47F89C: variable 'v6' is possibly undefined -// 47F8AC: variable 'v7' is possibly undefined -// 47F8C4: variable 'v8' is possibly undefined -// 47F8DC: variable 'v9' is possibly undefined -// 47F8F4: variable 'v10' is possibly undefined -// 47F90C: variable 'v11' is possibly undefined -// 47F924: variable 'v12' is possibly undefined -// 47F93C: variable 'v13' is possibly undefined -// 47F959: variable 'v14' is possibly undefined - -//----- (0047F960) -------------------------------------------------------- -unsigned int __thiscall std::ctype::do_is(char *this, wint_t *a2, unsigned int a3, _WORD *a4) -{ - wint_t *v4; // ebx - _WORD *v5; // edi - _WORD *v6; // ebp - __int16 v7; // si - _WORD *v8; // eax - _WORD *v10; // [esp+1Ch] [ebp-20h] - - v4 = a2; - if ( (unsigned int)a2 < a3 ) - { - v5 = this + 686; - v10 = this + 654; - do - { - v6 = v10; - v7 = 0; - do - { - if ( iswctype(*v4, v6[16]) ) - v7 |= *v6; - ++v6; - } - while ( v6 != v5 ); - v8 = a4; - ++v4; - ++a4; - *v8 = v7; - } - while ( a3 > (unsigned int)v4 ); - } - return a3; -} - -//----- (0047F9E0) -------------------------------------------------------- -int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16 a2, wint_t C) -{ - _WORD *v3; // esi - _WORD *v4; // ebx - - v3 = this + 343; - v4 = this + 327; - do - { - if ( (*v4 & a2) != 0 && iswctype(C, v4[16]) ) - return 1; - ++v4; - } - while ( v4 != v3 ); - return 0; -} - -//----- (0047FA50) -------------------------------------------------------- -unsigned __int8 *__thiscall std::ctype::do_widen( - _WORD *this, - unsigned __int8 *a2, - unsigned __int8 *a3, - int a4) -{ - unsigned __int8 *v4; // eax - int v7; // ecx - - v4 = a2; - if ( a2 < a3 ) - { - do - { - v7 = *v4++; - a4 += 2; - *(_WORD *)(a4 - 2) = this[v7 + 71]; - } - while ( a3 != v4 ); - } - return a3; -} - -//----- (0047FA90) -------------------------------------------------------- -int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2) -{ - return this[a2 + 71]; -} - -//----- (0047FAA0) -------------------------------------------------------- -unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, int a5) -{ - wint_t *v5; // esi - int v6; // ebx - unsigned int v8; // ebp - int v9; // ecx - int v10; // eax - int v12; // eax - - v5 = a2; - v6 = a5; - if ( this[12] ) - { - if ( (unsigned int)a2 < a3 ) - { - v8 = a5 + ((a3 - 1 - (unsigned int)a2) >> 1) + 1; - do - { - while ( 1 ) - { - v9 = *v5; - if ( (unsigned __int16)v9 > 0x7Fu ) - break; - ++v6; - ++v5; - *(_BYTE *)(v6 - 1) = this[v9 + 13]; - if ( v8 == v6 ) - return a3; - } - v10 = wctob(*v5); - if ( v10 == -1 ) - LOBYTE(v10) = a4; - ++v6; - ++v5; - *(_BYTE *)(v6 - 1) = v10; - } - while ( v8 != v6 ); - } - return a3; - } - if ( (unsigned int)a2 >= a3 ) - return a3; - do - { - v12 = wctob(*v5); - if ( v12 == -1 ) - LOBYTE(v12) = a4; - ++v6; - ++v5; - *(_BYTE *)(v6 - 1) = v12; - } - while ( v6 != a5 + ((a3 - 1 - (unsigned int)a2) >> 1) + 1 ); - return a3; -} - -//----- (0047FB80) -------------------------------------------------------- -int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3) -{ - int result; // eax - - if ( WCh <= 0x7Fu && this[12] ) - return (unsigned __int8)this[WCh + 13]; - result = wctob(WCh); - if ( result == -1 ) - return a3; - return result; -} - -//----- (0047FBC0) -------------------------------------------------------- -int __fastcall std::locale::id::_M_id(volatile signed __int32 *a1) -{ - int v1; // eax - - v1 = *a1; - if ( *a1 ) - return v1 - 1; - if ( !_CRT_MT ) - { - v1 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v1; - *a1 = v1; - return v1 - 1; - } - _InterlockedCompareExchange(a1, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - return *a1 - 1; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F6EC: using guessed type int std::locale::id::_S_refcount; - -//----- (0047FC10) -------------------------------------------------------- -int __thiscall std::locale::name[abi:cxx11](int this, int a2) -{ - int v2; // eax - unsigned int v3; // eax - int v4; // eax - unsigned int v5; // edx - unsigned int v6; // eax - int v7; // eax - unsigned int v8; // edx - unsigned int v9; // eax - int v10; // eax - unsigned int v11; // edx - unsigned int v12; // eax - size_t v14; // eax - const char *v15; // [esp+0h] [ebp-68h] - char *Str; // [esp+14h] [ebp-54h] - int v17; // [esp+18h] [ebp-50h] - size_t v18; // [esp+1Ch] [ebp-4Ch] - size_t v19; // [esp+1Ch] [ebp-4Ch] - size_t v20; // [esp+1Ch] [ebp-4Ch] - char *Str1; // [esp+20h] [ebp-48h] - char *Str1a; // [esp+20h] [ebp-48h] - char *Str1b; // [esp+20h] [ebp-48h] - char *Str1c; // [esp+20h] [ebp-48h] - char *Str1d; // [esp+20h] [ebp-48h] - char *Str1e; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcptb; // [esp+24h] [ebp-44h] - int lpuexcptc; // [esp+24h] [ebp-44h] - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_BYTE *)(this + 8) = 0; - v17 = this + 8; - v18 = *(_DWORD *)(*(_DWORD *)a2 + 16); - Str = *(char **)v18; - if ( *(_DWORD *)v18 ) - { - if ( *(_DWORD *)(v18 + 4) ) - { - lpuexcpt = 0; - Str1 = *(char **)v18; - while ( 1 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v15 = Str1; - Str1 = *(char **)(v18 + 4 * (_DWORD)lpuexcpt); - v2 = strcmp(v15, Str1); - if ( (unsigned int)lpuexcpt > 4 ) - break; - if ( v2 ) - goto LABEL_6; - } - if ( !v2 ) - goto LABEL_26; -LABEL_6: - std::string::reserve((_DWORD *)this, 0x80u); - v3 = strlen(*std::locale::_S_categories); - if ( v3 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append((_DWORD *)this, *std::locale::_S_categories, v3); - Str1a = *(char **)(this + 4); - lpuexcpta = (struct _Unwind_Exception *)(Str1a + 1); - v4 = *(_DWORD *)this; - if ( v17 == *(_DWORD *)this ) - v5 = 15; - else - v5 = *(_DWORD *)(this + 8); - if ( (unsigned int)lpuexcpta > v5 ) - { - std::string::_M_mutate(this, (size_t)Str1a, 0, 0, 1u); - v4 = *(_DWORD *)this; - } - Str1a[v4] = 61; - *(_DWORD *)(this + 4) = lpuexcpta; - Str1a[*(_DWORD *)this + 1] = 0; - lpuexcptb = **(struct _Unwind_Exception ***)(*(_DWORD *)a2 + 16); - v6 = strlen((const char *)lpuexcptb); - if ( v6 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append((_DWORD *)this, lpuexcptb, v6); - for ( lpuexcptc = 1; lpuexcptc != 6; ++lpuexcptc ) - { - v19 = *(_DWORD *)(this + 4); - Str1b = (char *)(v19 + 1); - v7 = *(_DWORD *)this; - if ( v17 == *(_DWORD *)this ) - v8 = 15; - else - v8 = *(_DWORD *)(this + 8); - if ( (unsigned int)Str1b > v8 ) - { - std::string::_M_mutate(this, v19, 0, 0, 1u); - v7 = *(_DWORD *)this; - } - *(_BYTE *)(v7 + v19) = 59; - *(_DWORD *)(this + 4) = Str1b; - *(_BYTE *)(*(_DWORD *)this + v19 + 1) = 0; - Str1c = std::locale::_S_categories[lpuexcptc]; - v9 = strlen(Str1c); - if ( v9 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append((_DWORD *)this, Str1c, v9); - v10 = *(_DWORD *)this; - v20 = *(_DWORD *)(this + 4); - Str1d = (char *)(v20 + 1); - if ( v17 == *(_DWORD *)this ) - v11 = 15; - else - v11 = *(_DWORD *)(this + 8); - if ( (unsigned int)Str1d > v11 ) - { - std::string::_M_mutate(this, v20, 0, 0, 1u); - v10 = *(_DWORD *)this; - } - *(_BYTE *)(v10 + v20) = 61; - *(_DWORD *)(this + 4) = Str1d; - *(_BYTE *)(*(_DWORD *)this + v20 + 1) = 0; - Str1e = *(char **)(*(_DWORD *)(*(_DWORD *)a2 + 16) + lpuexcptc * 4); - v12 = strlen(Str1e); - if ( v12 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append((_DWORD *)this, Str1e, v12); - } - } - else - { -LABEL_26: - v14 = strlen(Str); - std::string::_M_replace((unsigned int *)this, 0, 0, Str, v14); - } - } - else - { - std::string::_M_replace_aux((_DWORD *)this, 0, 0, 1u, 42); - } - return this; -} -// 55AF6C: using guessed type char **std::locale::_S_categories; - -//----- (004800B0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__thiscall std::locale::name(int *ecx0, std::locale *this) -{ - _DWORD *v2; // eax - int v3; // edx - int v4; // eax - size_t v5; // eax - int v6; // eax - size_t v7; // eax - int v8; // eax - size_t v9; // eax - int v10; // eax - size_t v11; // eax - size_t v13; // eax - const char *v14; // [esp-4h] [ebp-7Ch] - unsigned int v15; // [esp+0h] [ebp-78h] - unsigned int v16; // [esp+0h] [ebp-78h] - unsigned int v17; // [esp+0h] [ebp-78h] - unsigned int v18; // [esp+0h] [ebp-78h] - unsigned int v19; // [esp+4h] [ebp-74h] - unsigned int v20; // [esp+4h] [ebp-74h] - unsigned int v21; // [esp+4h] [ebp-74h] - char v22; // [esp+Ch] [ebp-6Ch] - char *Str; // [esp+18h] [ebp-60h] - int v24; // [esp+1Ch] [ebp-5Ch] - int v25; // [esp+1Ch] [ebp-5Ch] - int v26; // [esp+1Ch] [ebp-5Ch] - char *Str1; // [esp+20h] [ebp-58h] - char *Str1a; // [esp+20h] [ebp-58h] - char *Str1b; // [esp+20h] [ebp-58h] - char *Str1d; // [esp+20h] [ebp-58h] - char *Str1c; // [esp+20h] [ebp-58h] - char *Str1e; // [esp+20h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-54h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-54h] - struct _Unwind_Exception *lpuexcptc; // [esp+24h] [ebp-54h] - int lpuexcptb; // [esp+24h] [ebp-54h] - unsigned int v38[2]; // [esp+6Fh] [ebp-9h] BYREF - - v2 = std::string::_S_construct(0, 0); - v3 = *(_DWORD *)this; - *ecx0 = (int)v2; - v24 = *(_DWORD *)(v3 + 16); - Str = *(char **)v24; - if ( *(_DWORD *)v24 ) - { - if ( *(_DWORD *)(v24 + 4) ) - { - lpuexcpt = 0; - Str1 = *(char **)v24; - while ( 1 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v14 = Str1; - Str1 = *(char **)(v24 + 4 * (_DWORD)lpuexcpt); - v4 = strcmp(v14, Str1); - if ( (unsigned int)lpuexcpt > 4 ) - break; - if ( v4 ) - goto LABEL_6; - } - if ( !v4 ) - goto LABEL_19; -LABEL_6: - std::string::reserve(ecx0, (std::string *)0x80, v15); - v5 = strlen(*std::locale::_S_categories); - std::string::append(ecx0, (std::string *)*std::locale::_S_categories, v5, (unsigned int)v38); - Str1a = *(char **)(*ecx0 - 12); - lpuexcpta = (struct _Unwind_Exception *)(Str1a + 1); - if ( (unsigned int)(Str1a + 1) > *(_DWORD *)(*ecx0 - 8) || *(int *)(*ecx0 - 4) > 0 ) - std::string::reserve(ecx0, lpuexcpta, v16); - *(_BYTE *)(*ecx0 + *(_DWORD *)(*ecx0 - 12)) = 61; - v6 = *ecx0; - *(_DWORD *)(v6 - 12) = lpuexcpta; - *(_DWORD *)(v6 - 4) = 0; - Str1a[v6 + 1] = 0; - lpuexcptc = **(struct _Unwind_Exception ***)(*(_DWORD *)this + 16); - v7 = strlen((const char *)lpuexcptc); - std::string::append(ecx0, lpuexcptc, v7, v19); - for ( lpuexcptb = 1; lpuexcptb != 6; ++lpuexcptb ) - { - v25 = *(_DWORD *)(*ecx0 - 12); - Str1b = (char *)(v25 + 1); - if ( (unsigned int)(v25 + 1) > *(_DWORD *)(*ecx0 - 8) || *(int *)(*ecx0 - 4) > 0 ) - std::string::reserve(ecx0, (std::string *)Str1b, v17); - *(_BYTE *)(*ecx0 + *(_DWORD *)(*ecx0 - 12)) = 59; - v8 = *ecx0; - *(_DWORD *)(v8 - 12) = Str1b; - *(_DWORD *)(v8 - 4) = 0; - *(_BYTE *)(v8 + v25 + 1) = 0; - Str1d = std::locale::_S_categories[lpuexcptb]; - v9 = strlen(Str1d); - std::string::append(ecx0, (std::string *)Str1d, v9, v20); - v26 = *(_DWORD *)(*ecx0 - 12); - Str1c = (char *)(v26 + 1); - if ( (unsigned int)(v26 + 1) > *(_DWORD *)(*ecx0 - 8) || *(int *)(*ecx0 - 4) > 0 ) - std::string::reserve(ecx0, (std::string *)Str1c, v18); - *(_BYTE *)(*ecx0 + *(_DWORD *)(*ecx0 - 12)) = 61; - v10 = *ecx0; - *(_DWORD *)(v10 - 12) = Str1c; - *(_DWORD *)(v10 - 4) = 0; - *(_BYTE *)(v10 + v26 + 1) = 0; - Str1e = *(char **)(*(_DWORD *)(*(_DWORD *)this + 16) + lpuexcptb * 4); - v11 = strlen(Str1e); - std::string::append(ecx0, (std::string *)Str1e, v11, v21); - } - } - else - { -LABEL_19: - v13 = strlen(Str); - std::string::assign((char **)ecx0, (std::string *)Str, v13, (unsigned int)v38); - } - } - else - { - std::string::_M_replace_aux((char **)ecx0, 0, *(v2 - 3), 1u, 42, v22); - } - return ecx0; -} -// 480406: positive sp value 4 has been found -// 48017E: variable 'v15' is possibly undefined -// 4801DB: variable 'v16' is possibly undefined -// 48022F: variable 'v19' is possibly undefined -// 48026B: variable 'v17' is possibly undefined -// 4802C0: variable 'v20' is possibly undefined -// 4802F5: variable 'v18' is possibly undefined -// 48034D: variable 'v21' is possibly undefined -// 4803E0: variable 'v22' is possibly undefined -// 55AF6C: using guessed type char **std::locale::_S_categories; - -//----- (00480420) -------------------------------------------------------- -_DWORD *__userpurge std::locale::facet::_M_cow_shim@( - volatile signed __int32 *a1@, - std::locale::facet *this, - const std::locale::id *a3) -{ - void *v3; // eax - _WORD *v5; // eax - _DWORD *v6; // eax - int v7; // ecx - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - int c_locale; // eax - int v12; // edx - _DWORD *v13; // eax - _DWORD *v14; // eax - _WORD *v15; // eax - _DWORD *v16; // eax - int v17; // ecx - _WORD *v18; // eax - _DWORD *v19; // eax - int v20; // ecx - int v21; // edx - _DWORD *v22; // eax - _DWORD *v23; // eax - _DWORD *v24; // eax - _DWORD *v25; // eax - _DWORD *v26; // eax - _DWORD *v27; // eax - _DWORD *v28; // eax - int v29; // ecx - _DWORD *v30; // eax - _DWORD *v31; // eax - int v32; // edx - int v33; // [esp+0h] [ebp-78h] - int v34; // [esp+0h] [ebp-78h] - int v35; // [esp+0h] [ebp-78h] - int v36; // [esp+0h] [ebp-78h] - int v37; // [esp+0h] [ebp-78h] - int v38; // [esp+0h] [ebp-78h] - int v39; // [esp+30h] [ebp-48h] - int v40; // [esp+30h] [ebp-48h] - int v41; // [esp+30h] [ebp-48h] - int v42; // [esp+30h] [ebp-48h] - int v43; // [esp+30h] [ebp-48h] - int v44; // [esp+30h] [ebp-48h] - _DWORD *Block; // [esp+34h] [ebp-44h] - - v3 = __dynamic_cast( - (const void *)a1, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, - -2); - if ( v3 ) - return *(_DWORD **)v3; - if ( this == (std::locale::facet *)&std::numpunct::id ) - { - v5 = operator new(0x68u); - v5[18] = 0; - *((_DWORD *)v5 + 1) = 0; - *(_DWORD *)v5 = &off_5605B0; - *((_DWORD *)v5 + 2) = 0; - *((_DWORD *)v5 + 3) = 0; - *((_BYTE *)v5 + 16) = 0; - *((_DWORD *)v5 + 5) = 0; - *((_DWORD *)v5 + 6) = 0; - *((_DWORD *)v5 + 7) = 0; - *((_DWORD *)v5 + 8) = 0; - *((_BYTE *)v5 + 100) = 0; - v39 = (int)v5; - v6 = operator new(0x14u); - v6[1] = 0; - *v6 = &off_560D4C; - Block = v6; - v6[2] = v39; - std::numpunct::_M_initialize_numpunct(v6, 0); - v7 = _CRT_MT; - Block[3] = a1; - if ( v7 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F450; - Block[4] = v39; - LOBYTE(v33) = 0; - std::__facet_shims::__numpunct_fill_cache(v33, (int *)a1, v39); - } - else if ( this == (std::locale::facet *)&std::collate::id ) - { - v10 = operator new(0x10u); - v10[1] = 0; - *v10 = &off_560BE0; - Block = v10; - c_locale = std::locale::facet::_S_get_c_locale(); - v12 = _CRT_MT; - Block[2] = c_locale; - Block[3] = a1; - if ( v12 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F370; - } - else if ( this == (std::locale::facet *)&std::time_get>::id ) - { - v8 = operator new(0xCu); - Block = v8; - v8[1] = 0; - *v8 = &off_560D94; - v8[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v8 = &off_55F4E0; - } - else if ( this == (std::locale::facet *)&std::money_get>::id ) - { - v13 = operator new(0xCu); - Block = v13; - v13[1] = 0; - *v13 = &off_560E54; - v13[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v13 = &off_55F588; - } - else if ( this == (std::locale::facet *)&std::money_put>::id ) - { - v14 = operator new(0xCu); - Block = v14; - v14[1] = 0; - *v14 = &off_560E84; - v14[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v14 = &off_55F5E8; - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v15 = operator new(0x44u); - v15[8] = 0; - *(_DWORD *)v15 = &off_5606E4; - *((_DWORD *)v15 + 1) = 0; - *((_DWORD *)v15 + 2) = 0; - *((_DWORD *)v15 + 3) = 0; - *((_BYTE *)v15 + 18) = 0; - *((_DWORD *)v15 + 5) = 0; - *((_DWORD *)v15 + 6) = 0; - *((_DWORD *)v15 + 7) = 0; - *((_DWORD *)v15 + 8) = 0; - *((_DWORD *)v15 + 9) = 0; - *((_DWORD *)v15 + 10) = 0; - *((_DWORD *)v15 + 11) = 0; - *((_DWORD *)v15 + 12) = 0; - *((_DWORD *)v15 + 13) = 0; - *((_BYTE *)v15 + 67) = 0; - v40 = (int)v15; - v16 = operator new(0x14u); - v16[1] = 0; - *v16 = &off_55FED4; - Block = v16; - v16[2] = v40; - std::moneypunct::_M_initialize_moneypunct(v16, 0, 0); - v17 = _CRT_MT; - Block[3] = a1; - if ( v17 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F6B0; - Block[4] = v40; - LOBYTE(v34) = 0; - std::__facet_shims::__moneypunct_fill_cache(v34, (int *)a1, v40); - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v18 = operator new(0x44u); - v18[8] = 0; - *(_DWORD *)v18 = &off_5606D4; - *((_DWORD *)v18 + 1) = 0; - *((_DWORD *)v18 + 2) = 0; - *((_DWORD *)v18 + 3) = 0; - *((_BYTE *)v18 + 18) = 0; - *((_DWORD *)v18 + 5) = 0; - *((_DWORD *)v18 + 6) = 0; - *((_DWORD *)v18 + 7) = 0; - *((_DWORD *)v18 + 8) = 0; - *((_DWORD *)v18 + 9) = 0; - *((_DWORD *)v18 + 10) = 0; - *((_DWORD *)v18 + 11) = 0; - *((_DWORD *)v18 + 12) = 0; - *((_DWORD *)v18 + 13) = 0; - *((_BYTE *)v18 + 67) = 0; - v41 = (int)v18; - v19 = operator new(0x14u); - v19[1] = 0; - *v19 = &off_55FEA0; - Block = v19; - v19[2] = v41; - std::moneypunct::_M_initialize_moneypunct(v19, 0, 0); - v20 = _CRT_MT; - Block[3] = a1; - if ( v20 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F648; - Block[4] = v41; - LOBYTE(v35) = 0; - std::__facet_shims::__moneypunct_fill_cache(v35, (int *)a1, v41); - } - else if ( this == (std::locale::facet *)&std::messages::id ) - { - Block = operator new(0x14u); - std::messages::messages(Block, 0); - v21 = _CRT_MT; - Block[4] = a1; - if ( v21 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F3E0; - } - else if ( this == (std::locale::facet *)&std::numpunct::id ) - { - v22 = operator new(0xA8u); - v22[1] = 0; - *v22 = &off_5605C0; - v22[2] = 0; - v22[3] = 0; - *((_BYTE *)v22 + 16) = 0; - v22[5] = 0; - v22[6] = 0; - v22[7] = 0; - v22[8] = 0; - v22[9] = 0; - *((_BYTE *)v22 + 164) = 0; - v42 = (int)v22; - v23 = operator new(0x14u); - v23[1] = 0; - *v23 = &off_560D70; - Block = v23; - v23[2] = v42; - std::numpunct::_M_initialize_numpunct(v23, 0); - Block[3] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F498; - Block[4] = v42; - LOBYTE(v36) = 0; - std::__facet_shims::__numpunct_fill_cache(v36, (int *)a1, v42); - } - else if ( this == (std::locale::facet *)&std::collate::id ) - { - v9 = operator new(0x10u); - v9[1] = 0; - *v9 = &off_560BFC; - Block = v9; - v9[2] = std::locale::facet::_S_get_c_locale(); - Block[3] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F3A8; - } - else if ( this == (std::locale::facet *)&std::time_get>::id ) - { - v24 = operator new(0xCu); - Block = v24; - v24[1] = 0; - *v24 = &off_560DBC; - v24[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v24 = &off_55F534; - } - else if ( this == (std::locale::facet *)&std::money_get>::id ) - { - v25 = operator new(0xCu); - Block = v25; - v25[1] = 0; - *v25 = &off_560E6C; - v25[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v25 = &off_55F5B8; - } - else if ( this == (std::locale::facet *)std::money_put>::id ) - { - v26 = operator new(0xCu); - Block = v26; - v26[1] = 0; - *v26 = &off_560E9C; - v26[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v26 = &off_55F618; - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v27 = operator new(0x54u); - v27[1] = 0; - *v27 = &off_560704; - v27[2] = 0; - v27[3] = 0; - *((_BYTE *)v27 + 16) = 0; - *(_DWORD *)((char *)v27 + 18) = 0; - v27[6] = 0; - v27[7] = 0; - v27[8] = 0; - v27[9] = 0; - v27[10] = 0; - v27[11] = 0; - v27[12] = 0; - v27[13] = 0; - v27[14] = 0; - *((_BYTE *)v27 + 82) = 0; - v43 = (int)v27; - v28 = operator new(0x14u); - v28[1] = 0; - *v28 = &off_55FF3C; - Block = v28; - v28[2] = v43; - std::moneypunct::_M_initialize_moneypunct(v28, 0, 0); - v29 = _CRT_MT; - Block[3] = a1; - if ( v29 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F780; - Block[4] = v43; - LOBYTE(v37) = 0; - std::__facet_shims::__moneypunct_fill_cache(v37, (int *)a1, v43); - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v30 = operator new(0x54u); - v30[1] = 0; - *v30 = &off_5606F4; - v30[2] = 0; - v30[3] = 0; - *((_BYTE *)v30 + 16) = 0; - *(_DWORD *)((char *)v30 + 18) = 0; - v30[6] = 0; - v30[7] = 0; - v30[8] = 0; - v30[9] = 0; - v30[10] = 0; - v30[11] = 0; - v30[12] = 0; - v30[13] = 0; - v30[14] = 0; - *((_BYTE *)v30 + 82) = 0; - v44 = (int)v30; - v31 = operator new(0x14u); - v31[1] = 0; - *v31 = &off_55FF08; - Block = v31; - v31[2] = v44; - std::moneypunct::_M_initialize_moneypunct(v31, 0, 0); - v32 = _CRT_MT; - Block[3] = a1; - if ( v32 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F718; - Block[4] = v44; - LOBYTE(v38) = 0; - std::__facet_shims::__moneypunct_fill_cache(v38, (int *)a1, v44); - } - else - { - if ( this != (std::locale::facet *)&std::messages::id ) - std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); - Block = operator new(0x14u); - std::messages::messages(Block, 0); - Block[4] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F418; - } - return Block; -} -// 48069D: variable 'v33' is possibly undefined -// 480978: variable 'v34' is possibly undefined -// 480A90: variable 'v35' is possibly undefined -// 480BDE: variable 'v36' is possibly undefined -// 480DFA: variable 'v37' is possibly undefined -// 480F18: variable 'v38' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F58C: using guessed type signed __int32 std::moneypunct::id; -// 53F590: using guessed type signed __int32 std::moneypunct::id; -// 53F594: using guessed type signed __int32 std::moneypunct::id; -// 53F598: using guessed type signed __int32 std::moneypunct::id; -// 53F760: using guessed type signed __int32 std::collate::id; -// 53F764: using guessed type signed __int32 std::collate::id; -// 53F780: using guessed type signed __int32 std::messages::id; -// 53F784: using guessed type signed __int32 std::messages::id; -// 53F788: using guessed type signed __int32 std::numpunct::id; -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 53F790: using guessed type signed __int32 std::time_get>::id; -// 53F794: using guessed type signed __int32 std::time_get>::id; -// 53F7A0: using guessed type signed __int32 std::money_get>::id; -// 53F7A4: using guessed type signed __int32 std::money_get>::id; -// 53F7A8: using guessed type signed __int32 std::money_put>::id; -// 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; -// 55BB08: using guessed type int *`typeinfo for'std::locale::facet::__shim; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55F370: using guessed type int (*off_55F370)(); -// 55F3A8: using guessed type int (*off_55F3A8)(); -// 55F3E0: using guessed type int (*off_55F3E0)(); -// 55F418: using guessed type int (*off_55F418)(); -// 55F450: using guessed type int (*off_55F450)(); -// 55F498: using guessed type int (*off_55F498)(); -// 55F4E0: using guessed type int (*off_55F4E0)(); -// 55F534: using guessed type int (*off_55F534)(); -// 55F588: using guessed type int (*off_55F588)(); -// 55F5B8: using guessed type int (*off_55F5B8)(); -// 55F5E8: using guessed type int (*off_55F5E8)(); -// 55F618: using guessed type int (*off_55F618)(); -// 55F648: using guessed type int (*off_55F648)(); -// 55F6B0: using guessed type int (*off_55F6B0)(); -// 55F718: using guessed type int (*off_55F718)(); -// 55F780: using guessed type int (*off_55F780)(); -// 55FEA0: using guessed type int (*off_55FEA0)(); -// 55FED4: using guessed type int (*off_55FED4)(); -// 55FF08: using guessed type int (*off_55FF08)(); -// 55FF3C: using guessed type int (*off_55FF3C)(); -// 5605B0: using guessed type int (*off_5605B0)(); -// 5605C0: using guessed type int (*off_5605C0)(); -// 5606D4: using guessed type int (*off_5606D4)(); -// 5606E4: using guessed type int (*off_5606E4)(); -// 5606F4: using guessed type int (*off_5606F4)(); -// 560704: using guessed type int (*off_560704)(); -// 560BE0: using guessed type int (*off_560BE0)(); -// 560BFC: using guessed type int (*off_560BFC)(); -// 560D4C: using guessed type int (*off_560D4C)(); -// 560D70: using guessed type int (*off_560D70)(); -// 560D94: using guessed type int (*off_560D94)(); -// 560DBC: using guessed type int (*off_560DBC)(); -// 560E54: using guessed type int (*off_560E54)(); -// 560E6C: using guessed type int (*off_560E6C)(); -// 560E84: using guessed type int (*off_560E84)(); -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (004810C0) -------------------------------------------------------- -_DWORD *__userpurge std::locale::facet::_M_sso_shim@( - volatile signed __int32 *a1@, - std::locale::facet *this, - const std::locale::id *a3) -{ - void *v3; // eax - _WORD *v5; // eax - _DWORD *v6; // eax - int v7; // ecx - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - int c_locale; // eax - int v12; // edx - _DWORD *v13; // eax - _DWORD *v14; // eax - _WORD *v15; // eax - _DWORD *v16; // eax - int v17; // ecx - _WORD *v18; // eax - _DWORD *v19; // eax - int v20; // ecx - int v21; // edx - _DWORD *v22; // eax - _DWORD *v23; // eax - _DWORD *v24; // eax - _DWORD *v25; // eax - _DWORD *v26; // eax - _DWORD *v27; // eax - _DWORD *v28; // eax - int v29; // ecx - _DWORD *v30; // eax - _DWORD *v31; // eax - int v32; // edx - int v33; // [esp+0h] [ebp-78h] - int v34; // [esp+0h] [ebp-78h] - int v35; // [esp+0h] [ebp-78h] - int v36; // [esp+0h] [ebp-78h] - int v37; // [esp+0h] [ebp-78h] - int v38; // [esp+0h] [ebp-78h] - int v39; // [esp+30h] [ebp-48h] - int v40; // [esp+30h] [ebp-48h] - int v41; // [esp+30h] [ebp-48h] - int v42; // [esp+30h] [ebp-48h] - int v43; // [esp+30h] [ebp-48h] - int v44; // [esp+30h] [ebp-48h] - _DWORD *Block; // [esp+34h] [ebp-44h] - - v3 = __dynamic_cast( - (const void *)a1, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, - -2); - if ( v3 ) - return *(_DWORD **)v3; - if ( this == (std::locale::facet *)&std::numpunct::id ) - { - v5 = operator new(0x68u); - v5[18] = 0; - *((_DWORD *)v5 + 1) = 0; - *(_DWORD *)v5 = &off_5605B0; - *((_DWORD *)v5 + 2) = 0; - *((_DWORD *)v5 + 3) = 0; - *((_BYTE *)v5 + 16) = 0; - *((_DWORD *)v5 + 5) = 0; - *((_DWORD *)v5 + 6) = 0; - *((_DWORD *)v5 + 7) = 0; - *((_DWORD *)v5 + 8) = 0; - *((_BYTE *)v5 + 100) = 0; - v39 = (int)v5; - v6 = operator new(0x14u); - v6[1] = 0; - *v6 = &off_55FCD8; - Block = v6; - v6[2] = v39; - std::numpunct::_M_initialize_numpunct(v6, 0); - v7 = _CRT_MT; - Block[3] = a1; - if ( v7 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F474; - Block[4] = v39; - LOBYTE(v33) = 0; - std::__facet_shims::__numpunct_fill_cache(v33, (int *)a1, v39); - } - else if ( this == (std::locale::facet *)&std::collate::id ) - { - v10 = operator new(0x10u); - v10[1] = 0; - *v10 = &off_55FC68; - Block = v10; - c_locale = std::locale::facet::_S_get_c_locale(); - v12 = _CRT_MT; - Block[2] = c_locale; - Block[3] = a1; - if ( v12 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F38C; - } - else if ( this == (std::locale::facet *)&std::time_get>::id ) - { - v8 = operator new(0xCu); - Block = v8; - v8[1] = 0; - *v8 = &off_55FD20; - v8[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v8 = &off_55F508; - } - else if ( this == (std::locale::facet *)&std::money_get>::id ) - { - v13 = operator new(0xCu); - Block = v13; - v13[1] = 0; - *v13 = &off_55FD78; - v13[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v13 = &off_55F5A0; - } - else if ( this == (std::locale::facet *)&std::money_put>::id ) - { - v14 = operator new(0xCu); - Block = v14; - v14[1] = 0; - *v14 = &off_55FDA8; - v14[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v14 = &off_55F600; - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v15 = operator new(0x44u); - v15[8] = 0; - *(_DWORD *)v15 = &off_5606E4; - *((_DWORD *)v15 + 1) = 0; - *((_DWORD *)v15 + 2) = 0; - *((_DWORD *)v15 + 3) = 0; - *((_BYTE *)v15 + 18) = 0; - *((_DWORD *)v15 + 5) = 0; - *((_DWORD *)v15 + 6) = 0; - *((_DWORD *)v15 + 7) = 0; - *((_DWORD *)v15 + 8) = 0; - *((_DWORD *)v15 + 9) = 0; - *((_DWORD *)v15 + 10) = 0; - *((_DWORD *)v15 + 11) = 0; - *((_DWORD *)v15 + 12) = 0; - *((_DWORD *)v15 + 13) = 0; - *((_BYTE *)v15 + 67) = 0; - v40 = (int)v15; - v16 = operator new(0x14u); - v16[1] = 0; - *v16 = &off_55F854; - Block = v16; - v16[2] = v40; - std::moneypunct::_M_initialize_moneypunct(v16, 0, 0); - v17 = _CRT_MT; - Block[3] = a1; - if ( v17 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F6E4; - Block[4] = v40; - LOBYTE(v34) = 0; - std::__facet_shims::__moneypunct_fill_cache(v34, (int *)a1, v40); - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v18 = operator new(0x44u); - v18[8] = 0; - *(_DWORD *)v18 = &off_5606D4; - *((_DWORD *)v18 + 1) = 0; - *((_DWORD *)v18 + 2) = 0; - *((_DWORD *)v18 + 3) = 0; - *((_BYTE *)v18 + 18) = 0; - *((_DWORD *)v18 + 5) = 0; - *((_DWORD *)v18 + 6) = 0; - *((_DWORD *)v18 + 7) = 0; - *((_DWORD *)v18 + 8) = 0; - *((_DWORD *)v18 + 9) = 0; - *((_DWORD *)v18 + 10) = 0; - *((_DWORD *)v18 + 11) = 0; - *((_DWORD *)v18 + 12) = 0; - *((_DWORD *)v18 + 13) = 0; - *((_BYTE *)v18 + 67) = 0; - v41 = (int)v18; - v19 = operator new(0x14u); - v19[1] = 0; - *v19 = &off_55F820; - Block = v19; - v19[2] = v41; - std::moneypunct::_M_initialize_moneypunct(v19, 0, 0); - v20 = _CRT_MT; - Block[3] = a1; - if ( v20 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F67C; - Block[4] = v41; - LOBYTE(v35) = 0; - std::__facet_shims::__moneypunct_fill_cache(v35, (int *)a1, v41); - } - else if ( this == (std::locale::facet *)&std::messages::id ) - { - Block = operator new(0x14u); - std::messages::messages(Block, 0); - v21 = _CRT_MT; - Block[4] = a1; - if ( v21 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F3FC; - } - else if ( this == (std::locale::facet *)&std::numpunct::id ) - { - v22 = operator new(0xA8u); - v22[1] = 0; - *v22 = &off_5605C0; - v22[2] = 0; - v22[3] = 0; - *((_BYTE *)v22 + 16) = 0; - v22[5] = 0; - v22[6] = 0; - v22[7] = 0; - v22[8] = 0; - v22[9] = 0; - *((_BYTE *)v22 + 164) = 0; - v42 = (int)v22; - v23 = operator new(0x14u); - v23[1] = 0; - *v23 = &off_55FCFC; - Block = v23; - v23[2] = v42; - std::numpunct::_M_initialize_numpunct(v23, 0); - Block[3] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F4BC; - Block[4] = v42; - LOBYTE(v36) = 0; - std::__facet_shims::__numpunct_fill_cache(v36, (int *)a1, v42); - } - else if ( this == (std::locale::facet *)&std::collate::id ) - { - v9 = operator new(0x10u); - v9[1] = 0; - *v9 = &off_55FC84; - Block = v9; - v9[2] = std::locale::facet::_S_get_c_locale(); - Block[3] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F3C4; - } - else if ( this == (std::locale::facet *)&std::time_get>::id ) - { - v24 = operator new(0xCu); - Block = v24; - v24[1] = 0; - *v24 = &off_55FD4C; - v24[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v24 = &off_55F55C; - } - else if ( this == (std::locale::facet *)&std::money_get>::id ) - { - v25 = operator new(0xCu); - Block = v25; - v25[1] = 0; - *v25 = &off_55FD90; - v25[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v25 = &off_55F5D0; - } - else if ( this == (std::locale::facet *)&std::money_put>::id ) - { - v26 = operator new(0xCu); - Block = v26; - v26[1] = 0; - *v26 = &off_55FDC0; - v26[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v26 = &off_55F630; - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v27 = operator new(0x54u); - v27[1] = 0; - *v27 = &off_560704; - v27[2] = 0; - v27[3] = 0; - *((_BYTE *)v27 + 16) = 0; - *(_DWORD *)((char *)v27 + 18) = 0; - v27[6] = 0; - v27[7] = 0; - v27[8] = 0; - v27[9] = 0; - v27[10] = 0; - v27[11] = 0; - v27[12] = 0; - v27[13] = 0; - v27[14] = 0; - *((_BYTE *)v27 + 82) = 0; - v43 = (int)v27; - v28 = operator new(0x14u); - v28[1] = 0; - *v28 = &off_55F8BC; - Block = v28; - v28[2] = v43; - std::moneypunct::_M_initialize_moneypunct(v28, 0, 0); - v29 = _CRT_MT; - Block[3] = a1; - if ( v29 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F7B4; - Block[4] = v43; - LOBYTE(v37) = 0; - std::__facet_shims::__moneypunct_fill_cache(v37, (int *)a1, v43); - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v30 = operator new(0x54u); - v30[1] = 0; - *v30 = &off_5606F4; - v30[2] = 0; - v30[3] = 0; - *((_BYTE *)v30 + 16) = 0; - *(_DWORD *)((char *)v30 + 18) = 0; - v30[6] = 0; - v30[7] = 0; - v30[8] = 0; - v30[9] = 0; - v30[10] = 0; - v30[11] = 0; - v30[12] = 0; - v30[13] = 0; - v30[14] = 0; - *((_BYTE *)v30 + 82) = 0; - v44 = (int)v30; - v31 = operator new(0x14u); - v31[1] = 0; - *v31 = &off_55F888; - Block = v31; - v31[2] = v44; - std::moneypunct::_M_initialize_moneypunct(v31, 0, 0); - v32 = _CRT_MT; - Block[3] = a1; - if ( v32 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F74C; - Block[4] = v44; - LOBYTE(v38) = 0; - std::__facet_shims::__moneypunct_fill_cache(v38, (int *)a1, v44); - } - else - { - if ( this != (std::locale::facet *)&std::messages::id ) - std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); - Block = operator new(0x14u); - std::messages::messages(Block, 0); - Block[4] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_55F434; - } - return Block; -} -// 48133D: variable 'v33' is possibly undefined -// 481618: variable 'v34' is possibly undefined -// 481730: variable 'v35' is possibly undefined -// 48187E: variable 'v36' is possibly undefined -// 481A9A: variable 'v37' is possibly undefined -// 481BB8: variable 'v38' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55BB08: using guessed type int *`typeinfo for'std::locale::facet::__shim; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55F38C: using guessed type int (*off_55F38C)(); -// 55F3C4: using guessed type int (*off_55F3C4)(); -// 55F3FC: using guessed type int (*off_55F3FC)(); -// 55F434: using guessed type int (*off_55F434)(); -// 55F474: using guessed type int (*off_55F474)(); -// 55F4BC: using guessed type int (*off_55F4BC)(); -// 55F508: using guessed type int (*off_55F508)(); -// 55F55C: using guessed type int (*off_55F55C)(); -// 55F5A0: using guessed type int (*off_55F5A0)(); -// 55F5D0: using guessed type int (*off_55F5D0)(); -// 55F600: using guessed type int (*off_55F600)(); -// 55F630: using guessed type int (*off_55F630)(); -// 55F67C: using guessed type int (*off_55F67C)(); -// 55F6E4: using guessed type int (*off_55F6E4)(); -// 55F74C: using guessed type int (*off_55F74C)(); -// 55F7B4: using guessed type int (*off_55F7B4)(); -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FC68: using guessed type int (*off_55FC68)(); -// 55FC84: using guessed type int (*off_55FC84)(); -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FD20: using guessed type int (*off_55FD20)(); -// 55FD4C: using guessed type int (*off_55FD4C)(); -// 55FD78: using guessed type int (*off_55FD78)(); -// 55FD90: using guessed type int (*off_55FD90)(); -// 55FDA8: using guessed type int (*off_55FDA8)(); -// 55FDC0: using guessed type int (*off_55FDC0)(); -// 5605B0: using guessed type int (*off_5605B0)(); -// 5605C0: using guessed type int (*off_5605C0)(); -// 5606D4: using guessed type int (*off_5606D4)(); -// 5606E4: using guessed type int (*off_5606E4)(); -// 5606F4: using guessed type int (*off_5606F4)(); -// 560704: using guessed type int (*off_560704)(); - -//----- (00481D60) -------------------------------------------------------- -int __fastcall std::locale::facet::_M_remove_reference(volatile signed __int32 *a1) -{ - int result; // eax - - if ( _CRT_MT ) - { - result = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); - } - else - { - result = *((_DWORD *)a1 + 1); - *((_DWORD *)a1 + 1) = result - 1; - } - if ( result == 1 ) - return (*(int (__fastcall **)(volatile signed __int32 *))(*a1 + 4))(a1); - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00481DA0) -------------------------------------------------------- -BOOL __thiscall std::locale::operator==(void *this, int a2) -{ - const char **v2; // ecx - const char **Block; // [esp+10h] [ebp-78h] - char *Blocka; // [esp+10h] [ebp-78h] - const char **v6; // [esp+14h] [ebp-74h] - char *v7; // [esp+14h] [ebp-74h] - bool lpuexcpta; // [esp+18h] [ebp-70h] - char *v10; // [esp+50h] [ebp-38h] BYREF - size_t Size; // [esp+54h] [ebp-34h] - char v12; // [esp+58h] [ebp-30h] BYREF - void *Buf2[2]; // [esp+68h] [ebp-20h] BYREF - char v14; // [esp+70h] [ebp-18h] BYREF - - if ( *(_DWORD *)this == *(_DWORD *)a2 ) - return 1; - v6 = *(const char ***)(*(_DWORD *)this + 16); - if ( *v6 && (v2 = *(const char ***)(*(_DWORD *)a2 + 16), Block = v2, *v2) && !strcmp(*v6, *v2) ) - { - if ( !v6[1] && !Block[1] ) - return 1; - std::locale::name[abi:cxx11]((int)Buf2, a2); - std::locale::name[abi:cxx11]((int)&v10, (int)this); - lpuexcpta = 0; - Blocka = v10; - v7 = (char *)Buf2[0]; - if ( (void *)Size == Buf2[1] ) - { - lpuexcpta = 1; - if ( Size ) - lpuexcpta = memcmp(v10, Buf2[0], Size) == 0; - } - if ( Blocka != &v12 ) - { - operator delete(Blocka); - v7 = (char *)Buf2[0]; - } - if ( v7 != &v14 ) - operator delete(v7); - } - else - { - return 0; - } - return lpuexcpta; -} - -//----- (00481F60) -------------------------------------------------------- -unsigned int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3) -{ - int v3; // ebx - unsigned int v4; // edx - unsigned int v5; // eax - int v6; // ecx - bool v7; // cf - unsigned int v8; // eax - - v3 = 89478485; - v4 = a2; - v5 = -1431655765 * ((this[1] - *this) >> 3); - if ( 89478485 - v5 < a2 ) - std::__throw_length_error(a3); - v6 = 89478485; - if ( a2 < v5 ) - v4 = v5; - v7 = __CFADD__(v4, v5); - v8 = v4 + v5; - if ( !v7 ) - { - if ( v8 <= 0x5555555 ) - return v8; - return v3; - } - return v6; -} - -//----- (00481FB4) -------------------------------------------------------- -unsigned int __thiscall std::vector::_M_check_len( - _DWORD *this, - unsigned int a2, - std::length_error *a3) -{ - int v3; // ebx - unsigned int v4; // eax - unsigned int v5; // edx - int v6; // ecx - bool v7; // cf - unsigned int v8; // eax - - v3 = 0x1FFFFFFF; - v4 = (this[1] - *this) >> 2; - v5 = a2; - if ( 0x1FFFFFFF - v4 < a2 ) - std::__throw_length_error(a3); - v6 = 0x1FFFFFFF; - if ( a2 < v4 ) - v5 = v4; - v7 = __CFADD__(v5, v4); - v8 = v5 + v4; - if ( !v7 ) - { - if ( v8 <= 0x1FFFFFFF ) - return v8; - return v3; - } - return v6; -} - -//----- (00482000) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (00482020) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (00482040) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - { - Str = *(char **)(a2[2] + 20); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482084: variable 'v7' is possibly undefined - -//----- (004820C0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 4820C0: using guessed type size_t var_20[8]; - -//----- (00482170) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 44); - else - return v1(); -} - -//----- (00482190) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 17); - else - return v1(); -} - -//----- (004821B0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (004821C0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (004821D0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - { - Str = *(char **)(a2[2] + 36); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482214: variable 'v7' is possibly undefined - -//----- (00482250) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - { - Str = *(char **)(a2[2] + 28); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482294: variable 'v7' is possibly undefined - -//----- (004822D0) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 18); - else - return v1(); -} - -//----- (004822F0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 20); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 4822F0: using guessed type size_t var_20[8]; - -//----- (004823A0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); -} - -//----- (004823B0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); -} - -//----- (004823C0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 36); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 4823C0: using guessed type size_t var_20[8]; - -//----- (00482470) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 28); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 482470: using guessed type size_t var_20[8]; - -//----- (00482520) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (00482530) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482574: variable 'v7' is possibly undefined - -//----- (004825B0) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (004825D0) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (004825F0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - { - Str = *(char **)(a2[2] + 20); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482634: variable 'v7' is possibly undefined - -//----- (00482670) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 482670: using guessed type size_t var_20[8]; - -//----- (00482720) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 44); - else - return v1(); -} - -//----- (00482740) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 17); - else - return v1(); -} - -//----- (00482760) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (00482770) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (00482780) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - { - Str = *(char **)(a2[2] + 36); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4827C4: variable 'v7' is possibly undefined - -//----- (00482800) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - { - Str = *(char **)(a2[2] + 28); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482844: variable 'v7' is possibly undefined - -//----- (00482880) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 18); - else - return v1(); -} - -//----- (004828A0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 20); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 4828A0: using guessed type size_t var_20[8]; - -//----- (00482950) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); -} - -//----- (00482960) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); -} - -//----- (00482970) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 36); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 482970: using guessed type size_t var_20[8]; - -//----- (00482A20) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 28); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 482A20: using guessed type size_t var_20[8]; - -//----- (00482AD0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (00482AE0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482B24: variable 'v7' is possibly undefined - -//----- (00482B60) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 56); - else - return v1(); -} - -//----- (00482B80) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (00482BA0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - { - String = *(wchar_t **)(a2[2] + 24); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482BE5: variable 'v7' is possibly undefined - -//----- (00482C20) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - void *v2; // esi - const char *Str; // edi - size_t v5; // eax - size_t Size; // ebp - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 482C20: using guessed type size_t var_20[8]; - -//----- (00482CD0) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (00482CF0) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 18); - else - return v1(); -} - -//----- (00482D10) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); -} - -//----- (00482D20) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (00482D30) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - { - String = *(wchar_t **)(a2[2] + 40); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482D75: variable 'v7' is possibly undefined - -//----- (00482DB0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - { - String = *(wchar_t **)(a2[2] + 32); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 482DF5: variable 'v7' is possibly undefined - -//----- (00482E30) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 20); - else - return v1(); -} - -//----- (00482E50) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 482E88: variable 'v6' is possibly undefined - -//----- (00482EA0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (00482EB0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (00482EC0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 482EF8: variable 'v6' is possibly undefined - -//----- (00482F10) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 482F48: variable 'v6' is possibly undefined - -//----- (00482F60) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); -} - -//----- (00482F70) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - std::string::_M_construct(this, Str, v5); - return this; - } - else - { - v3(a2); - return this; - } -} - -//----- (00482FE0) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 56); - else - return v1(); -} - -//----- (00483000) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (00483020) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - { - String = *(wchar_t **)(a2[2] + 24); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 483065: variable 'v7' is possibly undefined - -//----- (004830A0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - void *v2; // esi - const char *Str; // edi - size_t v5; // eax - size_t Size; // ebp - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 4830A0: using guessed type size_t var_20[8]; - -//----- (00483150) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (00483170) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 18); - else - return v1(); -} - -//----- (00483190) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); -} - -//----- (004831A0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (004831B0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - { - String = *(wchar_t **)(a2[2] + 40); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4831F5: variable 'v7' is possibly undefined - -//----- (00483230) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - { - String = *(wchar_t **)(a2[2] + 32); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 483275: variable 'v7' is possibly undefined - -//----- (004832B0) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 20); - else - return v1(); -} - -//----- (004832D0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 483308: variable 'v6' is possibly undefined - -//----- (00483320) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (00483330) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (00483340) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 483378: variable 'v6' is possibly undefined - -//----- (00483390) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 4833C8: variable 'v6' is possibly undefined - -//----- (004833E0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); -} - -//----- (004833F0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - std::string::_M_construct(this, Str, v5); - return this; - } - else - { - v3(a2); - return this; - } -} - -//----- (00483460) -------------------------------------------------------- -int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int a2) -{ - int v2; // edx - - v2 = 1; - if ( *this <= a2 ) - LOBYTE(v2) = this[1] + *this < a2; - return v2; -} - -//----- (00483480) -------------------------------------------------------- -bool __fastcall std::string::_M_is_local(_DWORD *a1) -{ - return a1 + 2 == (_DWORD *)*a1; -} - -//----- (00483490) -------------------------------------------------------- -unsigned int __thiscall std::string::find_last_of(int *this, char *Str, unsigned int a3) -{ - unsigned int v4; // ebx - size_t MaxCount; // esi - int v6; // eax - unsigned int v7; // eax - int v8; // ebp - - v4 = a3; - MaxCount = strlen(Str); - v6 = this[1]; - if ( !v6 || !MaxCount ) - return -1; - v7 = v6 - 1; - v8 = *this; - if ( a3 > v7 ) - v4 = v7; - do - { - if ( memchr(Str, *(char *)(v8 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - return v4; -} - -//----- (00483510) -------------------------------------------------------- -unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) -{ - int v4; // eax - unsigned int v5; // ebx - unsigned int v6; // eax - int v7; // ebp - - v4 = this[1]; - v5 = a3; - if ( !v4 || !MaxCount ) - return -1; - v6 = v4 - 1; - v7 = *this; - if ( v6 <= a3 ) - v5 = v6; - do - { - if ( memchr(Buf, *(char *)(v7 + v5), MaxCount) ) - break; - } - while ( v5-- != 0 ); - return v5; -} - -//----- (00483590) -------------------------------------------------------- -int __thiscall std::string::find_last_of(int *this, int a2, unsigned int a3) -{ - int v3; // eax - unsigned int v4; // ebx - size_t MaxCount; // esi - unsigned int v6; // eax - const void *Buf; // ebp - int v8; // edi - - v3 = this[1]; - v4 = a3; - MaxCount = *(_DWORD *)(a2 + 4); - if ( !v3 || !MaxCount ) - return -1; - v6 = v3 - 1; - Buf = *(const void **)a2; - v8 = *this; - if ( a3 > v6 ) - v4 = v6; - do - { - if ( memchr(Buf, *(char *)(v8 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - return v4; -} - -//----- (00483610) -------------------------------------------------------- -int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( a3 <= v4 - 1 ) - result = a3; - do - { - if ( a2 == *(_BYTE *)(v5 + result) ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00483650) -------------------------------------------------------- -int __fastcall std::string::_M_local_data(int a1) -{ - return a1 + 8; -} - -//----- (00483660) -------------------------------------------------------- -unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, unsigned int a3) -{ - size_t v5; // eax - size_t MaxCount; // ebx - unsigned int v8; // [esp+1Ch] [ebp-20h] - - v5 = strlen(Str); - if ( v5 ) - { - MaxCount = v5; - v8 = this[1]; - while ( v8 > a3 ) - { - if ( memchr(Str, *(char *)(*this + a3), MaxCount) ) - return a3; - ++a3; - } - } - return -1; -} - -//----- (004836E0) -------------------------------------------------------- -unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount) -{ - unsigned int v5; // edi - - if ( MaxCount ) - { - v5 = this[1]; - while ( v5 > a3 ) - { - if ( memchr(Buf, *(char *)(*this + a3), MaxCount) ) - return a3; - ++a3; - } - } - return -1; -} - -//----- (00483750) -------------------------------------------------------- -int __thiscall std::string::find_first_of(_DWORD *this, int a2, unsigned int a3) -{ - size_t MaxCount; // esi - const void *Buf; // ebp - unsigned int v8; // [esp+1Ch] [ebp-20h] - - MaxCount = *(_DWORD *)(a2 + 4); - Buf = *(const void **)a2; - if ( MaxCount ) - { - v8 = this[1]; - while ( v8 > a3 ) - { - if ( memchr(Buf, *(char *)(*this + a3), MaxCount) ) - return a3; - ++a3; - } - } - return -1; -} - -//----- (004837C0) -------------------------------------------------------- -char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3) -{ - int v3; // ebx - unsigned int v4; // edx - int v5; // esi - char *v6; // eax - - v3 = -1; - v4 = this[1]; - if ( a3 < v4 ) - { - v5 = *this; - v6 = (char *)memchr((const void *)(*this + a3), a2, v4 - a3); - if ( v6 ) - return &v6[-v5]; - } - return (char *)v3; -} - -//----- (00483810) -------------------------------------------------------- -void *__thiscall std::string::get_allocator(void *this, int a2) -{ - return this; -} - -//----- (00483820) -------------------------------------------------------- -unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) -{ - unsigned int result; // eax - - result = a2 + 0x3FFFFFFF - this[1]; - if ( result < a3 ) - std::__throw_length_error(a4); - return result; -} - -//----- (00483850) -------------------------------------------------------- -int __fastcall std::string::_M_get_allocator(int a1) -{ - return a1; -} - -//----- (00483860) -------------------------------------------------------- -int __thiscall std::string::find_last_not_of(int *this, char *Str, unsigned int a3) -{ - int v3; // ebx - int v4; // ebp - size_t MaxCount; // esi - unsigned int v6; // edx - int v9; // [esp+1Ch] [ebp-20h] - - v3 = -1; - v9 = this[1]; - if ( v9 ) - { - v4 = *this; - MaxCount = strlen(Str); - v6 = v9 - 1; - if ( a3 <= v9 - 1 ) - v6 = a3; - v3 = v6; - do - { - if ( !MaxCount ) - break; - if ( !memchr(Str, *(char *)(v4 + v3), MaxCount) ) - break; - } - while ( v3-- != 0 ); - } - return v3; -} - -//----- (004838D0) -------------------------------------------------------- -int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) -{ - int v4; // ebx - int v5; // eax - unsigned int v6; // edx - unsigned int v7; // eax - int v8; // ebp - - v4 = -1; - v5 = this[1]; - v6 = a3; - if ( v5 ) - { - v7 = v5 - 1; - v8 = *this; - if ( v7 <= a3 ) - v6 = v7; - v4 = v6; - do - { - if ( !MaxCount ) - break; - if ( !memchr(Buf, *(char *)(v8 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - } - return v4; -} - -//----- (00483930) -------------------------------------------------------- -int __thiscall std::string::find_last_not_of(int *this, int a2, unsigned int a3) -{ - int v3; // ebx - int v4; // eax - unsigned int v5; // eax - size_t MaxCount; // esi - int v7; // ebp - const void *Buf; // edi - - v3 = -1; - v4 = this[1]; - if ( v4 ) - { - v5 = v4 - 1; - MaxCount = *(_DWORD *)(a2 + 4); - v7 = *this; - Buf = *(const void **)a2; - if ( a3 <= v5 ) - v5 = a3; - v3 = v5; - do - { - if ( !MaxCount ) - break; - if ( !memchr(Buf, *(char *)(v7 + v3), MaxCount) ) - break; - } - while ( v3-- != 0 ); - } - return v3; -} - -//----- (00483990) -------------------------------------------------------- -int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_BYTE *)(v5 + result) != a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (004839D0) -------------------------------------------------------- -unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, unsigned int a3) -{ - unsigned int v4; // esi - size_t v5; // eax - unsigned int v6; // edi - int v7; // ebp - size_t MaxCount; // ebx - - v4 = a3; - v5 = strlen(Str); - v6 = this[1]; - if ( a3 >= v6 ) - return -1; - v7 = *this; - MaxCount = v5; - if ( v5 ) - { - while ( memchr(Str, *(char *)(v7 + v4), MaxCount) ) - { - if ( ++v4 == v6 ) - return -1; - } - } - return v4; -} - -//----- (00483A40) -------------------------------------------------------- -unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) -{ - unsigned int v4; // esi - unsigned int v5; // edi - int v6; // ebp - - v4 = this[1]; - v5 = a3; - if ( a3 >= v4 ) - return -1; - v6 = *this; - if ( MaxCount ) - { - while ( memchr(Buf, *(char *)(v6 + v5), MaxCount) ) - { - if ( ++v5 == v4 ) - return -1; - } - } - return v5; -} - -//----- (00483AA0) -------------------------------------------------------- -int __thiscall std::string::find_first_not_of(int *this, int a2, unsigned int a3) -{ - unsigned int v3; // esi - unsigned int v4; // ebp - size_t MaxCount; // ebx - int v6; // edi - void *i; // eax - void *Buf; // [esp+1Ch] [ebp-20h] - - v3 = this[1]; - v4 = a3; - MaxCount = *(_DWORD *)(a2 + 4); - if ( a3 >= v3 ) - return -1; - v6 = *this; - if ( MaxCount ) - { - Buf = *(void **)a2; - for ( i = memchr(*(const void **)a2, *(char *)(v6 + a3), MaxCount); i; i = memchr(Buf, *(char *)(v6 + v4), MaxCount) ) - { - if ( v3 == ++v4 ) - return -1; - } - } - return v4; -} - -//----- (00483B10) -------------------------------------------------------- -int __thiscall std::string::find_first_not_of(_DWORD *this, char a2, unsigned int a3) -{ - int result; // eax - unsigned int v4; // edx - - result = a3; - v4 = this[1]; - if ( a3 >= v4 ) - return -1; - while ( *(_BYTE *)(*this + result) == a2 ) - { - if ( ++result == v4 ) - return -1; - } - return result; -} - -//----- (00483B50) -------------------------------------------------------- -unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) -{ - if ( a2 >= this[1] ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); - return *this + a2; -} - -//----- (00483B80) -------------------------------------------------------- -int __fastcall std::string::end(_DWORD *a1) -{ - return a1[1] + *a1; -} - -//----- (00483B90) -------------------------------------------------------- -int __fastcall std::string::back(_DWORD *a1) -{ - return *a1 + a1[1] - 1; -} - -//----- (00483BA0) -------------------------------------------------------- -int __fastcall std::string::cend(_DWORD *a1) -{ - return a1[1] + *a1; -} - -//----- (00483BB0) -------------------------------------------------------- -size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, size_t a3, unsigned int a4) -{ - unsigned int v4; // ebx - size_t Size; // ebx - _BYTE *Src; // eax - - v4 = this[1]; - if ( a4 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::copy", - a4, - this[1]); - Size = v4 - a4; - if ( Size > a3 ) - Size = a3; - if ( !Size ) - return Size; - Src = (_BYTE *)(*this + a4); - if ( Size != 1 ) - { - memcpy(a2, Src, Size); - return Size; - } - *a2 = *Src; - return 1; -} - -//----- (00483C30) -------------------------------------------------------- -int __fastcall std::string::data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00483C40) -------------------------------------------------------- -unsigned int __thiscall std::string::find(int *this, char *Str, int a3) -{ - size_t Size; // eax - - Size = strlen(Str); - return std::string::find(this, Str, a3, Size); -} - -//----- (00483C80) -------------------------------------------------------- -unsigned int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size) -{ - unsigned int v4; // edx - int v6; // ecx - const void *Buf; // eax - int v8; // edi - size_t v9; // edx - size_t MaxCount; // edx - int Val; // ebp - char *v12; // edi - int v14; // ecx - int v15; // [esp+18h] [ebp-24h] - int v16; // [esp+1Ch] [ebp-20h] - - v4 = this[1]; - if ( Size ) - { - v6 = -1; - if ( v4 > a3 ) - { - v16 = *this; - Buf = (const void *)(*this + a3); - v8 = v4 + v16; - v9 = v4 - a3; - v15 = v8; - if ( Size <= v9 ) - { - MaxCount = 1 - Size + v9; - if ( MaxCount ) - { - Val = *Buf2; - while ( 1 ) - { - v12 = (char *)memchr(Buf, Val, MaxCount); - if ( !v12 ) - return -1; - if ( !memcmp(v12, Buf2, Size) ) - break; - Buf = v12 + 1; - if ( Size <= v15 - (int)(v12 + 1) ) - { - MaxCount = v15 - (_DWORD)v12 - Size; - if ( MaxCount ) - continue; - } - return -1; - } - return (unsigned int)&v12[-v16]; - } - } - } - return v6; - } - else - { - v14 = -1; - if ( v4 >= a3 ) - return a3; - return v14; - } -} - -//----- (00483D50) -------------------------------------------------------- -unsigned int __thiscall std::string::find(int *this, int a2, int a3) -{ - return std::string::find(this, *(char **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (00483D80) -------------------------------------------------------- -char *__thiscall std::string::find(int *this, char a2, unsigned int a3) -{ - int v3; // ebx - unsigned int v4; // edx - int v5; // esi - char *v6; // eax - - v3 = -1; - v4 = this[1]; - if ( a3 < v4 ) - { - v5 = *this; - v6 = (char *)memchr((const void *)(*this + a3), a2, v4 - a3); - if ( v6 ) - return &v6[-v5]; - } - return (char *)v3; -} - -//----- (00483DD0) -------------------------------------------------------- -_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (00483DE0) -------------------------------------------------------- -int __fastcall std::string::size(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (00483DF0) -------------------------------------------------------- -int __fastcall std::string::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00483E00) -------------------------------------------------------- -int __fastcall std::string::c_str(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00483E10) -------------------------------------------------------- -_DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (00483E20) -------------------------------------------------------- -bool __fastcall std::string::empty(int a1) -{ - return *(_DWORD *)(a1 + 4) == 0; -} - -//----- (00483E30) -------------------------------------------------------- -int __fastcall std::string::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00483E40) -------------------------------------------------------- -int __thiscall std::string::rfind(int *this, char *Str, int a3) -{ - size_t v4; // eax - - v4 = strlen(Str); - return std::string::rfind(this, Str, a3, v4); -} - -//----- (00483E80) -------------------------------------------------------- -int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size) -{ - int v4; // ebx - size_t v5; // eax - unsigned int v6; // edx - unsigned int v7; // eax - int v8; // ebp - - v4 = -1; - v5 = this[1]; - v6 = a3; - if ( Size <= v5 ) - { - v7 = v5 - Size; - v8 = *this; - if ( v7 <= a3 ) - v6 = v7; - v4 = v6; - if ( Size ) - { - while ( memcmp((const void *)(v8 + v4), Buf2, Size) ) - { - if ( !v4 ) - return -1; - --v4; - } - } - } - return v4; -} -// 483ED1: conditional instruction was optimized away because %arg_8.4!=0 - -//----- (00483EF0) -------------------------------------------------------- -int __thiscall std::string::rfind(int *this, int a2, unsigned int a3) -{ - int v3; // ebx - size_t v4; // eax - int v5; // edx - size_t Size; // esi - unsigned int v7; // eax - const void *Buf2; // edi - int v9; // ebp - - v3 = -1; - v4 = this[1]; - v5 = a3; - Size = *(_DWORD *)(a2 + 4); - if ( Size <= v4 ) - { - v7 = v4 - Size; - Buf2 = *(const void **)a2; - v9 = *this; - if ( v7 <= a3 ) - v5 = v7; - v3 = v5; - if ( Size ) - { - while ( memcmp((const void *)(v9 + v3), Buf2, Size) ) - { - if ( !v3 ) - return -1; - --v3; - } - } - } - return v3; -} -// 483F42: conditional instruction was optimized away because esi.4!=0 - -//----- (00483F60) -------------------------------------------------------- -int __thiscall std::string::rfind(int *this, char a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_BYTE *)(v5 + result) == a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00483FA0) -------------------------------------------------------- -int __fastcall std::string::cbegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00483FB0) -------------------------------------------------------- -int __fastcall std::string::length(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (00483FC0) -------------------------------------------------------- -_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + a2[1]; - return result; -} - -//----- (00483FD0) -------------------------------------------------------- -_DWORD *__thiscall std::string::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::substr", - a3, - a2[1]); - v6 = v5 - a3; - *this = this + 2; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, v8); - return this; -} -// 48400B: variable 'v8' is possibly undefined - -//----- (00484040) -------------------------------------------------------- -int __fastcall std::string::_M_data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00484050) -------------------------------------------------------- -int __thiscall std::string::compare(int this, char *Str) -{ - size_t v3; // edi - size_t v4; // ebx - size_t Size; // eax - int result; // eax - - v3 = *(_DWORD *)(this + 4); - v4 = strlen(Str); - Size = v3; - if ( v4 <= v3 ) - Size = v4; - if ( !Size ) - return v3 - v4; - result = memcmp(*(const void **)this, Str, Size); - if ( !result ) - return v3 - v4; - return result; -} - -//----- (004840A0) -------------------------------------------------------- -int __thiscall std::string::compare(int this, int a2) -{ - size_t v2; // esi - size_t Size; // edx - size_t v4; // ebx - int result; // eax - - v2 = *(_DWORD *)(this + 4); - Size = v2; - v4 = *(_DWORD *)(a2 + 4); - if ( v4 <= v2 ) - Size = *(_DWORD *)(a2 + 4); - if ( !Size ) - return v2 - v4; - result = memcmp(*(const void **)this, *(const void **)a2, Size); - if ( !result ) - return v2 - v4; - return result; -} - -//----- (004840E0) -------------------------------------------------------- -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, char *Str) -{ - unsigned int v4; // ebx - unsigned int v5; // ebx - size_t v7; // edi - size_t Size; // eax - int result; // eax - - v4 = this[1]; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v5 = v4 - a2; - if ( v5 > a3 ) - v5 = a3; - v7 = strlen(Str); - Size = v5; - if ( v7 <= v5 ) - Size = v7; - if ( !Size ) - return v5 - v7; - result = memcmp((const void *)(*this + a2), Str, Size); - if ( !result ) - return v5 - v7; - return result; -} - -//----- (00484160) -------------------------------------------------------- -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, void *Buf2, unsigned int a5) -{ - unsigned int v5; // ebx - unsigned int v6; // ebx - size_t Size; // edx - int result; // eax - - v5 = this[1]; - if ( a2 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v6 = v5 - a2; - if ( v6 > a3 ) - v6 = a3; - Size = a5; - if ( v6 <= a5 ) - Size = v6; - if ( !Size ) - return v6 - a5; - result = memcmp((const void *)(*this + a2), Buf2, Size); - if ( !result ) - return v6 - a5; - return result; -} - -//----- (004841D0) -------------------------------------------------------- -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, int a4) -{ - unsigned int v4; // ebx - size_t v5; // ebx - size_t v6; // esi - size_t Size; // edi - int result; // eax - - v4 = this[1]; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v5 = v4 - a2; - if ( v5 > a3 ) - v5 = a3; - v6 = *(_DWORD *)(a4 + 4); - Size = v5; - if ( v6 <= v5 ) - Size = *(_DWORD *)(a4 + 4); - if ( !Size ) - return v5 - v6; - result = memcmp((const void *)(*this + a2), *(const void **)a4, Size); - if ( !result ) - return v5 - v6; - return result; -} - -//----- (00484240) -------------------------------------------------------- -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) -{ - unsigned int v6; // ebx - size_t v7; // edi - unsigned int v8; // eax - size_t v9; // ebx - size_t v10; // eax - size_t Size; // eax - int result; // eax - - v6 = this[1]; - v7 = a6; - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - v6); - v8 = a4[1]; - if ( a5 > v8 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a5, - a4[1]); - v9 = v6 - a2; - if ( v9 > a3 ) - v9 = a3; - v10 = v8 - a5; - if ( v10 <= a6 ) - v7 = v10; - Size = v9; - if ( v7 <= v9 ) - Size = v7; - if ( !Size ) - return v9 - v7; - result = memcmp((const void *)(*this + a2), (const void *)(*a4 + a5), Size); - if ( !result ) - return v9 - v7; - return result; -} - -//----- (004842F0) -------------------------------------------------------- -_DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + a2[1]; - return result; -} - -//----- (00484300) -------------------------------------------------------- -unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int a2, const char *a3) -{ - unsigned int v3; // edx - unsigned int result; // eax - - v3 = this[1]; - result = a2; - if ( a2 > v3 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); - return result; -} - -//----- (00484330) -------------------------------------------------------- -unsigned int __thiscall std::string::_M_limit(_DWORD *this, int a2, unsigned int a3) -{ - unsigned int result; // eax - - result = this[1] - a2; - if ( result > a3 ) - return a3; - return result; -} - -//----- (00484350) -------------------------------------------------------- -int __fastcall std::string::capacity(_DWORD *a1) -{ - if ( (_DWORD *)*a1 == a1 + 2 ) - return 15; - else - return a1[2]; -} - -//----- (00484370) -------------------------------------------------------- -int std::string::max_size() -{ - return 0x3FFFFFFF; -} - -//----- (00484380) -------------------------------------------------------- -int __thiscall std::string::operator[](_DWORD *this, int a2) -{ - return a2 + *this; -} - -//----- (00484390) -------------------------------------------------------- -bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) -{ - bool result; // al - - result = 1; - if ( *this <= a2 ) - return *this + 2 * this[1] < a2; - return result; -} - -//----- (004843B0) -------------------------------------------------------- -bool __fastcall std::wstring::_M_is_local(_DWORD *a1) -{ - return a1 + 2 == (_DWORD *)*a1; -} - -//----- (004843C0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_last_of(this, String, a3, v4); -} - -//----- (00484400) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - int v4; // eax - unsigned int v5; // ebx - unsigned int v6; // eax - _WORD *v7; // eax - int v8; // edx - - v4 = this[1]; - v5 = a3; - if ( !v4 || !a4 ) - return -1; - v6 = v4 - 1; - if ( v6 <= a3 ) - v5 = v6; - while ( !a2 ) - { -LABEL_9: - if ( v5-- == 0 ) - return v5; - } - v7 = a2; - v8 = a4; - while ( *(_WORD *)(*this + 2 * v5) != *v7 ) - { - ++v7; - if ( !--v8 ) - goto LABEL_9; - } - return v5; -} - -//----- (00484470) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, unsigned int a3) -{ - return std::wstring::find_last_of(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (004844A0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( a3 <= v4 - 1 ) - result = a3; - do - { - if ( a2 == *(_WORD *)(v5 + 2 * result) ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (004844E0) -------------------------------------------------------- -int __fastcall std::wstring::_M_local_data(int a1) -{ - return a1 + 8; -} - -//----- (004844F0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_first_of(this, String, a3, v4); -} - -//----- (00484530) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // ebp - unsigned int v5; // ebx - int v6; // edx - _WORD *v7; // eax - - if ( !a4 ) - return -1; - v4 = this[1]; - v5 = a3; - if ( v4 <= a3 ) - return -1; - while ( !a2 ) - { -LABEL_7: - if ( v4 <= ++v5 ) - return -1; - } - v6 = a4; - v7 = a2; - while ( *(_WORD *)(*this + 2 * v5) != *v7 ) - { - ++v7; - if ( !--v6 ) - goto LABEL_7; - } - return v5; -} - -//----- (00484590) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, unsigned int a3) -{ - return std::wstring::find_first_of(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (004845C0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(_DWORD *this, __int16 a2, unsigned int a3) -{ - return std::wstring::find(this, a2, a3); -} - -//----- (004845D0) -------------------------------------------------------- -void *__thiscall std::wstring::get_allocator(void *this, int a2) -{ - return this; -} - -//----- (004845E0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) -{ - unsigned int result; // eax - - result = a2 + 0x1FFFFFFF - this[1]; - if ( result < a3 ) - std::__throw_length_error(a4); - return result; -} - -//----- (00484610) -------------------------------------------------------- -int __fastcall std::wstring::_M_get_allocator(int a1) -{ - return a1; -} - -//----- (00484620) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_last_not_of(this, String, a3, v4); -} - -//----- (00484660) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - int v4; // eax - int v5; // ebx - unsigned int v6; // eax - _WORD *v7; // eax - int v8; // edx - - v4 = this[1]; - v5 = -1; - if ( v4 ) - { - v6 = v4 - 1; - v5 = a3; - if ( v6 <= a3 ) - v5 = v6; - while ( a4 && a2 ) - { - v7 = a2; - v8 = a4; - while ( *(_WORD *)(*this + 2 * v5) != *v7 ) - { - ++v7; - if ( !--v8 ) - return v5; - } - if ( v5-- == 0 ) - return v5; - } - } - return v5; -} - -//----- (004846D0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, unsigned int a3) -{ - return std::wstring::find_last_not_of(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (00484700) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_WORD *)(v5 + 2 * result) != a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00484740) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int a3) -{ - unsigned int v4; // ebx - size_t v5; // eax - unsigned int v6; // esi - int v7; // ebp - size_t v8; // edi - __int16 v9; // cx - wchar_t *v10; // eax - size_t v11; // edx - - v4 = a3; - v5 = wcslen(String); - v6 = this[1]; - if ( a3 < v6 ) - { - v7 = *this; - v8 = v5; - if ( !v5 ) - return v4; - v9 = *(_WORD *)(v7 + 2 * a3); - if ( !String ) - return v4; - while ( 1 ) - { - v10 = String; - v11 = v8; - while ( v9 != *v10 ) - { - ++v10; - if ( !--v11 ) - return v4; - } - if ( ++v4 == v6 ) - break; - v9 = *(_WORD *)(v7 + 2 * v4); - } - } - return -1; -} - -//----- (004847D0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // esi - int v6; // edi - __int16 v7; // cx - _WORD *v8; // eax - int v9; // edx - - v4 = a3; - v5 = this[1]; - if ( a3 < v5 ) - { - v6 = *this; - if ( !a4 ) - return v4; - v7 = *(_WORD *)(*this + 2 * a3); - if ( !a2 ) - return v4; - while ( 1 ) - { - v8 = a2; - v9 = a4; - while ( v7 != *v8 ) - { - ++v8; - if ( !--v9 ) - return v4; - } - if ( ++v4 == v5 ) - break; - v7 = *(_WORD *)(v6 + 2 * v4); - } - } - return -1; -} - -//----- (00484850) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, _DWORD *a2, unsigned int a3) -{ - unsigned int v3; // esi - unsigned int v4; // ebx - int v5; // edi - __int16 v6; // cx - _WORD *v7; // eax - int v8; // edx - - v3 = this[1]; - v4 = a3; - if ( a3 < v3 ) - { - v5 = *this; - if ( !a2[1] ) - return v4; - v6 = *(_WORD *)(*this + 2 * a3); - if ( !*a2 ) - return v4; - while ( 1 ) - { - v7 = (_WORD *)*a2; - v8 = a2[1]; - while ( v6 != *v7 ) - { - ++v7; - if ( !--v8 ) - return v4; - } - if ( ++v4 == v3 ) - break; - v6 = *(_WORD *)(v5 + 2 * v4); - } - } - return -1; -} - -//----- (004848D0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(_DWORD *this, __int16 a2, unsigned int a3) -{ - int result; // eax - unsigned int v4; // edx - - result = a3; - v4 = this[1]; - if ( a3 >= v4 ) - return -1; - while ( *(_WORD *)(*this + 2 * result) == a2 ) - { - if ( ++result == v4 ) - return -1; - } - return result; -} - -//----- (00484920) -------------------------------------------------------- -int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) -{ - if ( a2 >= this[1] ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); - return *this + 2 * a2; -} - -//----- (00484950) -------------------------------------------------------- -int __fastcall std::wstring::end(_DWORD *a1) -{ - return *a1 + 2 * a1[1]; -} - -//----- (00484960) -------------------------------------------------------- -int __fastcall std::wstring::back(_DWORD *a1) -{ - return *a1 + 2 * a1[1] - 2; -} - -//----- (00484970) -------------------------------------------------------- -int __fastcall std::wstring::cend(_DWORD *a1) -{ - return *a1 + 2 * a1[1]; -} - -//----- (00484980) -------------------------------------------------------- -int __thiscall std::wstring::copy(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // ebx - _WORD *Src; // eax - - v4 = this[1]; - if ( a4 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::copy", - a4, - this[1]); - v5 = v4 - a4; - if ( v5 > a3 ) - v5 = a3; - if ( !v5 ) - return v5; - Src = (_WORD *)(*this + 2 * a4); - if ( v5 != 1 ) - { - memcpy(a2, Src, 2 * v5); - return v5; - } - *a2 = *Src; - return 1; -} - -//----- (00484A00) -------------------------------------------------------- -int __fastcall std::wstring::data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00484A10) -------------------------------------------------------- -int __thiscall std::wstring::find(int *this, wchar_t *String, int a3) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::find(this, String, a3, v4); -} - -//----- (00484A50) -------------------------------------------------------- -int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // ebx - _WORD *v5; // eax - int v6; // edx - int v8; // edx - __int16 v9; // bx - unsigned int v10; // edx - int v11; // ecx - int v12; // [esp+0h] [ebp-18h] - int v13; // [esp+4h] [ebp-14h] - - v4 = this[1]; - if ( a4 ) - { - if ( v4 > a3 && (v13 = *this, v5 = (_WORD *)(*this + 2 * a3), a4 <= v4 - a3) && (v6 = 1 - a4 + v4 - a3, v5) && v6 ) - { - v12 = v13 + 2 * v4; -LABEL_7: - while ( *a2 != *v5 ) - { - ++v5; - if ( !--v6 ) - return -1; - } - if ( a2 != v5 ) - { - v8 = 0; - while ( a4 - 1 != v8 ) - { - v9 = v5[++v8]; - if ( v9 != a2[v8] ) - { - v10 = (v12 - (int)++v5) >> 1; - if ( a4 <= v10 ) - { - v6 = 1 - a4 + v10; - if ( v6 ) - goto LABEL_7; - } - return -1; - } - } - } - return ((int)v5 - v13) >> 1; - } - else - { - return -1; - } - } - else - { - v11 = -1; - if ( v4 >= a3 ) - return a3; - return v11; - } -} - -//----- (00484B50) -------------------------------------------------------- -int __thiscall std::wstring::find(int *this, int a2, unsigned int a3) -{ - return std::wstring::find(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (00484B80) -------------------------------------------------------- -int __thiscall std::wstring::find(_DWORD *this, __int16 a2, unsigned int a3) -{ - unsigned int v3; // eax - unsigned int v4; // eax - _WORD *v5; // edx - - v3 = this[1]; - if ( a3 >= v3 ) - return -1; - v4 = v3 - a3; - v5 = (_WORD *)(*this + 2 * a3); - if ( !v5 ) - return -1; - while ( *v5 != a2 ) - { - ++v5; - if ( !--v4 ) - return -1; - } - return ((int)v5 - *this) >> 1; -} - -//----- (00484BE0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (00484BF0) -------------------------------------------------------- -int __fastcall std::wstring::size(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (00484C00) -------------------------------------------------------- -int __fastcall std::wstring::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00484C10) -------------------------------------------------------- -int __fastcall std::wstring::c_str(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00484C20) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (00484C30) -------------------------------------------------------- -bool __fastcall std::wstring::empty(int a1) -{ - return *(_DWORD *)(a1 + 4) == 0; -} - -//----- (00484C40) -------------------------------------------------------- -int __fastcall std::wstring::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00484C50) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::rfind(this, String, a3, v4); -} - -//----- (00484C90) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - int v4; // ebx - unsigned int v5; // eax - unsigned int v6; // eax - int v7; // esi - _WORD *v8; // eax - _WORD *v9; // edx - unsigned int v10; // ecx - - v4 = -1; - v5 = this[1]; - if ( a4 <= v5 ) - { - v6 = v5 - a4; - v4 = a3; - if ( v6 <= a3 ) - v4 = v6; - v7 = *this + 2 * v4; - if ( a4 ) - { - while ( 1 ) - { - v8 = (_WORD *)v7; - if ( (_WORD *)v7 == a2 ) - break; - if ( (v7 != 0) == (a2 != 0) ) - { - v9 = a2; - v10 = a4; - while ( *v8 == *v9 ) - { - ++v8; - ++v9; - if ( !--v10 ) - return v4; - } - } - v7 -= 2; - if ( !v4 ) - return -1; - --v4; - } - } - } - return v4; -} -// 484D01: conditional instruction was optimized away because %arg_8.4!=0 - -//----- (00484D20) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, int a2, unsigned int a3) -{ - return std::wstring::rfind(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (00484D50) -------------------------------------------------------- -int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_WORD *)(v5 + 2 * result) == a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00484D90) -------------------------------------------------------- -int __fastcall std::wstring::cbegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00484DA0) -------------------------------------------------------- -int __fastcall std::wstring::length(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (00484DB0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * a2[1]; - return result; -} - -//----- (00484DD0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::substr", - a3, - a2[1]); - v6 = v5 - a3; - *this = this + 2; - if ( v6 > a4 ) - v6 = a4; - LOBYTE(v8) = 0; - std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); - return this; -} -// 484E0D: variable 'v8' is possibly undefined - -//----- (00484E40) -------------------------------------------------------- -int __fastcall std::wstring::_M_data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00484E50) -------------------------------------------------------- -int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String) -{ - size_t v3; // esi - wchar_t *v4; // ebx - size_t v5; // edx - size_t v6; // eax - wchar_t *v7; // edx - size_t v9; // [esp+18h] [ebp-24h] - size_t v10; // [esp+1Ch] [ebp-20h] - - v3 = (size_t)this[1]; - v4 = String; - v5 = wcslen(String); - v10 = v5; - v6 = v3; - if ( v5 <= v3 ) - v6 = v5; - v9 = v6; - if ( !v6 ) - return v3 - v10; - v7 = *this; - if ( String == *this ) - return v3 - v10; - if ( (v7 != 0) != (String != 0) ) - return String == 0 ? 1 : -1; - while ( *v7 == *v4 ) - { - ++v7; - ++v4; - if ( !--v9 ) - return v3 - v10; - } - return *v7 < *v4 ? -1 : 1; -} - -//----- (00484EF0) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, int a2) -{ - unsigned int v2; // ebx - unsigned int v3; // esi - _WORD *v4; // eax - _WORD *v5; // ecx - unsigned int v7; // [esp+0h] [ebp-18h] - unsigned int v8; // [esp+4h] [ebp-14h] - - v2 = this[1]; - v8 = v2; - v3 = *(_DWORD *)(a2 + 4); - if ( v3 <= v2 ) - v2 = *(_DWORD *)(a2 + 4); - v7 = v2; - if ( !v2 ) - return v8 - v3; - v4 = *(_WORD **)a2; - v5 = (_WORD *)*this; - if ( *(_WORD **)a2 == v5 ) - return v8 - v3; - if ( (v5 != 0) != (v4 != 0) ) - return v4 == 0 ? 1 : -1; - while ( *v5 == *v4 ) - { - ++v5; - ++v4; - if ( !--v7 ) - return v8 - v3; - } - return *v5 < *v4 ? -1 : 1; -} - -//----- (00484F90) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) -{ - unsigned int v4; // ebx - unsigned int v5; // eax - wchar_t *v6; // esi - unsigned int v7; // ebx - unsigned int v9; // ebx - size_t v10; // ecx - size_t v11; // eax - wchar_t *v12; // edx - unsigned int v14; // [esp+1Ch] [ebp-20h] - - v4 = this[1]; - v5 = a3; - v6 = String; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v7 = v4 - a2; - if ( v7 <= a3 ) - v5 = v7; - v9 = v5; - v14 = v5; - v10 = wcslen(String); - v11 = v9; - if ( v10 <= v9 ) - v11 = v10; - if ( !v11 ) - return v14 - v10; - v12 = (wchar_t *)(*this + 2 * a2); - if ( v12 == String ) - return v14 - v10; - if ( (v12 != 0) != (String != 0) ) - return String == 0 ? 1 : -1; - while ( *v12 == *v6 ) - { - ++v12; - ++v6; - if ( !--v11 ) - return v14 - v10; - } - return *v12 < *v6 ? -1 : 1; -} - -//----- (00485070) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, _WORD *a4, unsigned int a5) -{ - unsigned int v6; // eax - unsigned int v7; // edi - _WORD *v8; // ecx - unsigned int v9; // eax - unsigned int v10; // ebx - unsigned int v11; // edi - _WORD *v12; // edx - unsigned int v14; // [esp+1Ch] [ebp-20h] - - v6 = this[1]; - v7 = a3; - v8 = a4; - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - v6); - v9 = v6 - a2; - v10 = a5; - if ( v9 <= a3 ) - v7 = v9; - if ( v7 <= a5 ) - v10 = v7; - v14 = v7; - v11 = v10; - if ( !v10 ) - return v14 - a5; - v12 = (_WORD *)(*this + 2 * a2); - if ( v12 == a4 ) - return v14 - a5; - if ( (v12 != 0) != (a4 != 0) ) - return a4 == 0 ? 1 : -1; - while ( *v12 == *v8 ) - { - ++v12; - ++v8; - if ( !--v11 ) - return v14 - a5; - } - return *v12 < *v8 ? -1 : 1; -} - -//----- (00485140) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - unsigned int v5; // ebx - unsigned int v6; // eax - unsigned int v7; // esi - unsigned int v8; // eax - _WORD *v9; // edx - _WORD *v10; // ecx - unsigned int v12; // [esp+18h] [ebp-24h] - - v4 = this[1]; - v5 = a3; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - v4); - v6 = v4 - a2; - v7 = *(_DWORD *)(a4 + 4); - if ( v6 <= a3 ) - v5 = v6; - v8 = v5; - if ( v7 <= v5 ) - v8 = *(_DWORD *)(a4 + 4); - v12 = v8; - if ( !v8 ) - return v5 - v7; - v9 = *(_WORD **)a4; - v10 = (_WORD *)(*this + 2 * a2); - if ( v10 == *(_WORD **)a4 ) - return v5 - v7; - if ( (v10 != 0) != (v9 != 0) ) - return v9 == 0 ? 1 : -1; - while ( *v10 == *v9 ) - { - ++v10; - ++v9; - if ( !--v12 ) - return v5 - v7; - } - return *v10 < *v9 ? -1 : 1; -} - -//----- (00485210) -------------------------------------------------------- -int __thiscall std::wstring::compare( - _DWORD *this, - unsigned int a2, - unsigned int a3, - _DWORD *a4, - unsigned int a5, - unsigned int a6) -{ - unsigned int v6; // eax - unsigned int v7; // edi - unsigned int v8; // edx - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // edx - int v12; // ebx - _WORD *v13; // esi - _WORD *i; // ecx - - v6 = this[1]; - v7 = a6; - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v8 = a4[1]; - if ( a5 > v8 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a5, - a4[1]); - v9 = v6 - a2; - if ( v9 > a3 ) - v9 = a3; - v10 = v8 - a5; - if ( v10 <= a6 ) - v7 = v10; - v11 = v9; - if ( v7 <= v9 ) - v11 = v7; - if ( !v11 ) - return v9 - v7; - v12 = *this + 2 * a2; - v13 = (_WORD *)(*a4 + 2 * a5); - if ( v13 == (_WORD *)v12 ) - return v9 - v7; - if ( (v12 != 0) != (v13 != 0) ) - return v13 == 0 ? 1 : -1; - for ( i = (_WORD *)(*this + 2 * a2); *i == *v13; ++i ) - { - ++v13; - if ( !--v11 ) - return v9 - v7; - } - return *i < *v13 ? -1 : 1; -} - -//----- (00485320) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * a2[1]; - return result; -} - -//----- (00485340) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) -{ - unsigned int v3; // edx - unsigned int result; // eax - - v3 = this[1]; - result = a2; - if ( a2 > v3 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); - return result; -} - -//----- (00485370) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) -{ - unsigned int result; // eax - - result = this[1] - a2; - if ( result > a3 ) - return a3; - return result; -} - -//----- (00485390) -------------------------------------------------------- -int __fastcall std::wstring::capacity(_DWORD *a1) -{ - if ( (_DWORD *)*a1 == a1 + 2 ) - return 7; - else - return a1[2]; -} - -//----- (004853B0) -------------------------------------------------------- -int std::wstring::max_size() -{ - return 0x1FFFFFFF; -} - -//----- (004853C0) -------------------------------------------------------- -int __thiscall std::wstring::operator[](_DWORD *this, int a2) -{ - return *this + 2 * a2; -} - -//----- (004853D0) -------------------------------------------------------- -int __thiscall std::stringbuf::str(int this, int a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_BYTE *)(this + 8) = 0; - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - v3 = *(_DWORD *)(a2 + 20); - if ( v3 ) - { - v4 = *(_DWORD *)(a2 + 12); - v5 = *(_DWORD *)(a2 + 16); - if ( v3 > v4 ) - std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 16), v3 - v5); - else - std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 16), v4 - v5); - } - else - { - std::string::_M_assign(this, a2 + 36); - } - return this; -} - -//----- (004854F0) -------------------------------------------------------- -int __thiscall std::wstringbuf::str(int this, _DWORD *a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_WORD *)(this + 8) = 0; - v3 = a2[5]; - if ( v3 ) - { - v4 = a2[3]; - v5 = a2[4]; - if ( v3 > v4 ) - std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[4], (int)(v3 - v5) >> 1); - else - std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[4], (int)(v4 - v5) >> 1); - } - else - { - std::wstring::_M_assign(this, (int)(a2 + 9)); - } - return this; -} - -//----- (00485620) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_BYTE *)(this + 8) = 0; - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - v3 = *(_DWORD *)(a2 + 32); - if ( v3 ) - { - v4 = *(_DWORD *)(a2 + 24); - v5 = *(_DWORD *)(a2 + 28); - if ( v3 > v4 ) - std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 28), v3 - v5); - else - std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 28), v4 - v5); - } - else - { - std::string::_M_assign(this, a2 + 48); - } - return this; -} - -//----- (00485740) -------------------------------------------------------- -int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) -{ - return a1 + 12; -} - -//----- (00485750) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::str( - int this, - _DWORD *a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_WORD *)(this + 8) = 0; - v3 = a2[8]; - if ( v3 ) - { - v4 = a2[6]; - v5 = a2[7]; - if ( v3 > v4 ) - std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[7], (int)(v3 - v5) >> 1); - else - std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[7], (int)(v4 - v5) >> 1); - } - else - { - std::wstring::_M_assign(this, (int)(a2 + 12)); - } - return this; -} - -//----- (00485880) -------------------------------------------------------- -int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) -{ - return a1 + 12; -} - -//----- (00485890) -------------------------------------------------------- -int __thiscall std::istringstream::str(int this, int a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_BYTE *)(this + 8) = 0; - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - v3 = *(_DWORD *)(a2 + 28); - if ( v3 ) - { - v4 = *(_DWORD *)(a2 + 20); - v5 = *(_DWORD *)(a2 + 24); - if ( v3 > v4 ) - std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 24), v3 - v5); - else - std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 24), v4 - v5); - } - else - { - std::string::_M_assign(this, a2 + 44); - } - return this; -} - -//----- (004859B0) -------------------------------------------------------- -int __fastcall std::istringstream::rdbuf(int a1) -{ - return a1 + 8; -} - -//----- (004859C0) -------------------------------------------------------- -int __thiscall std::wistringstream::str(int this, _DWORD *a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_WORD *)(this + 8) = 0; - v3 = a2[7]; - if ( v3 ) - { - v4 = a2[5]; - v5 = a2[6]; - if ( v3 > v4 ) - std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[6], (int)(v3 - v5) >> 1); - else - std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[6], (int)(v4 - v5) >> 1); - } - else - { - std::wstring::_M_assign(this, (int)(a2 + 11)); - } - return this; -} - -//----- (00485AF0) -------------------------------------------------------- -int __fastcall std::wistringstream::rdbuf(int a1) -{ - return a1 + 8; -} - -//----- (00485B00) -------------------------------------------------------- -int __thiscall std::ostringstream::str(int this, int a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_BYTE *)(this + 8) = 0; - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - v3 = *(_DWORD *)(a2 + 24); - if ( v3 ) - { - v4 = *(_DWORD *)(a2 + 16); - v5 = *(_DWORD *)(a2 + 20); - if ( v3 > v4 ) - std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 20), v3 - v5); - else - std::string::_M_replace((unsigned int *)this, 0, 0, *(char **)(a2 + 20), v4 - v5); - } - else - { - std::string::_M_assign(this, a2 + 40); - } - return this; -} - -//----- (00485C20) -------------------------------------------------------- -int __fastcall std::ostringstream::rdbuf(int a1) -{ - return a1 + 4; -} - -//----- (00485C30) -------------------------------------------------------- -int __thiscall std::wostringstream::str(int this, _DWORD *a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_WORD *)(this + 8) = 0; - v3 = a2[6]; - if ( v3 ) - { - v4 = a2[4]; - v5 = a2[5]; - if ( v3 > v4 ) - std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[5], (int)(v3 - v5) >> 1); - else - std::wstring::_M_replace((unsigned int *)this, 0, 0, (_WORD *)a2[5], (int)(v4 - v5) >> 1); - } - else - { - std::wstring::_M_assign(this, (int)(a2 + 10)); - } - return this; -} - -//----- (00485D60) -------------------------------------------------------- -int __fastcall std::wostringstream::rdbuf(int a1) -{ - return a1 + 4; -} - -//----- (00485D70) -------------------------------------------------------- -int __stdcall std::collate::_M_compare(char *String1, char *String2) -{ - int v2; // eax - - v2 = strcoll(String1, String2); - return (v2 >> 30) | (v2 != 0); -} - -//----- (00485DA0) -------------------------------------------------------- -int __stdcall std::collate::do_compare(_BYTE *a1, int a2, _BYTE *a3, int a4) -{ - int i; // eax - char *v5; // eax - int v7; // [esp+8h] [ebp-90h] - int v8; // [esp+8h] [ebp-90h] - char *v9; // [esp+14h] [ebp-84h] - int v10; // [esp+1Ch] [ebp-7Ch] - char *v11; // [esp+20h] [ebp-78h] - char *v12; // [esp+24h] [ebp-74h] - char *Str; // [esp+28h] [ebp-70h] - char *Stra; // [esp+28h] [ebp-70h] - void *v15[2]; // [esp+60h] [ebp-38h] BYREF - char v16[16]; // [esp+68h] [ebp-30h] BYREF - void *Block[2]; // [esp+78h] [ebp-20h] BYREF - char v18[20]; // [esp+80h] [ebp-18h] BYREF - - LOBYTE(v7) = 0; - v15[0] = v16; - std::string::_M_construct(v15, a1, a2, v7); - Block[0] = v18; - LOBYTE(v8) = 0; - std::string::_M_construct(Block, a3, a4, v8); - Str = (char *)v15[0]; - v9 = (char *)v15[1] + (unsigned int)v15[0]; - v12 = (char *)Block[0]; - v11 = (char *)Block[1] + (unsigned int)Block[0]; - for ( i = std::collate::_M_compare((char *)v15[0], (char *)Block[0]); - ; - i = std::collate::_M_compare(Str, v5 + 1) ) - { - v10 = i; - if ( i ) - break; - Stra = &Str[strlen(Str)]; - v5 = &v12[strlen(v12)]; - if ( v9 == Stra ) - { - if ( v11 == v5 ) - break; - if ( v9 == Stra ) - { - v10 = -1; - break; - } - } - if ( v11 == v5 ) - { - v10 = 1; - break; - } - v12 = v5 + 1; - Str = Stra + 1; - } - if ( Block[0] != v18 ) - operator delete(Block[0]); - if ( v15[0] != v16 ) - operator delete(v15[0]); - return v10; -} -// 485DF5: variable 'v7' is possibly undefined -// 485E1F: variable 'v8' is possibly undefined - -//----- (00485F30) -------------------------------------------------------- -size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) -{ - return strxfrm(Destination, Source, MaxCount); -} - -//----- (00485F60) -------------------------------------------------------- -int __thiscall std::collate::do_transform(int this, int a2, _BYTE *a3, int a4) -{ - unsigned int i; // eax - char *v5; // eax - int v6; // eax - unsigned int v7; // edx - int v9; // [esp+8h] [ebp-90h] - int v10; // [esp+1Ch] [ebp-7Ch] - char *v11; // [esp+20h] [ebp-78h] - size_t v12; // [esp+24h] [ebp-74h] - unsigned int v13; // [esp+28h] [ebp-70h] - char *Block; // [esp+2Ch] [ebp-6Ch] - unsigned int v15; // [esp+30h] [ebp-68h] - char *Str; // [esp+34h] [ebp-64h] - void *v18[2]; // [esp+78h] [ebp-20h] BYREF - char v19[20]; // [esp+80h] [ebp-18h] BYREF - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_BYTE *)(this + 8) = 0; - v18[0] = v19; - LOBYTE(v9) = 0; - v10 = this + 8; - std::string::_M_construct(v18, a3, a4, v9); - Str = (char *)v18[0]; - v11 = (char *)v18[1] + (unsigned int)v18[0]; - v15 = 2 * (a4 - (_DWORD)a3); - Block = (char *)operator new[](v15); - for ( i = std::collate::_M_transform(Block, Str, v15); ; i = std::collate::_M_transform(Block, Str, v15) ) - { - if ( v15 <= i ) - { - v15 = i + 1; - operator delete[](Block); - Block = (char *)operator new[](v15); - i = std::collate::_M_transform(Block, Str, v15); - } - if ( i > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append((_DWORD *)this, Block, i); - v5 = &Str[strlen(Str)]; - if ( v11 == v5 ) - break; - Str = v5 + 1; - v12 = *(_DWORD *)(this + 4); - v13 = v12 + 1; - v6 = *(_DWORD *)this; - if ( v10 == *(_DWORD *)this ) - v7 = 15; - else - v7 = *(_DWORD *)(this + 8); - if ( v13 > v7 ) - { - std::string::_M_mutate(this, v12, 0, 0, 1u); - v6 = *(_DWORD *)this; - } - *(_BYTE *)(v6 + v12) = 0; - *(_DWORD *)(this + 4) = v13; - *(_BYTE *)(*(_DWORD *)this + v12 + 1) = 0; - } - operator delete[](Block); - if ( v18[0] != v19 ) - operator delete(v18[0]); - return this; -} -// 485FCB: variable 'v9' is possibly undefined - -//----- (00486210) -------------------------------------------------------- -int __thiscall std::collate::hash(void *this, char *a2, char *a3) -{ - char *v3; // edx - int (__stdcall *v4)(char *, char *); // eax - int result; // eax - int v6; // ecx - - v3 = a2; - v4 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); - if ( v4 != std::collate::do_hash ) - return v4(a2, a3); - result = 0; - if ( a2 < a3 ) - { - do - { - v6 = *v3++; - result = v6 + __ROL4__(result, 7); - } - while ( a3 != v3 ); - } - return result; -} - -//----- (00486260) -------------------------------------------------------- -int __fastcall std::collate::compare(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (00486270) -------------------------------------------------------- -int __stdcall std::collate::do_hash(char *a1, char *a2) -{ - char *v2; // edx - int result; // eax - int v4; // ecx - - v2 = a1; - result = 0; - if ( a1 < a2 ) - { - do - { - v4 = *v2++; - result = v4 + __ROL4__(result, 7); - } - while ( a2 != v2 ); - } - return result; -} - -//----- (004862A0) -------------------------------------------------------- -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) -{ - (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); - return this; -} - -//----- (004862D0) -------------------------------------------------------- -int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) -{ - int v2; // eax - - v2 = wcscoll(String1, String2); - return (v2 >> 30) | (v2 != 0); -} - -//----- (00486300) -------------------------------------------------------- -int __stdcall std::collate::do_compare(_WORD *a1, int a2, _WORD *a3, int a4) -{ - int i; // eax - wchar_t *v5; // eax - int v7; // [esp+8h] [ebp-90h] - int v8; // [esp+8h] [ebp-90h] - wchar_t *v9; // [esp+14h] [ebp-84h] - int v10; // [esp+1Ch] [ebp-7Ch] - char *v11; // [esp+20h] [ebp-78h] - wchar_t *v12; // [esp+24h] [ebp-74h] - wchar_t *String; // [esp+28h] [ebp-70h] - wchar_t *Stringa; // [esp+28h] [ebp-70h] - void *v15[2]; // [esp+60h] [ebp-38h] BYREF - char v16[16]; // [esp+68h] [ebp-30h] BYREF - void *Block[2]; // [esp+78h] [ebp-20h] BYREF - char v18[20]; // [esp+80h] [ebp-18h] BYREF - - LOBYTE(v7) = 0; - v15[0] = v16; - std::wstring::_M_construct(v15, a1, a2, v7); - Block[0] = v18; - LOBYTE(v8) = 0; - std::wstring::_M_construct(Block, a3, a4, v8); - String = (wchar_t *)v15[0]; - v9 = (wchar_t *)((char *)v15[0] + 2 * (int)v15[1]); - v12 = (wchar_t *)Block[0]; - v11 = (char *)Block[0] + 2 * (int)Block[1]; - for ( i = std::collate::_M_compare((wchar_t *)v15[0], (wchar_t *)Block[0]); - ; - i = std::collate::_M_compare(String, v5 + 1) ) - { - v10 = i; - if ( i ) - break; - Stringa = &String[wcslen(String)]; - v5 = &v12[wcslen(v12)]; - if ( v9 == Stringa ) - { - if ( v11 == (char *)v5 ) - break; - if ( v9 == Stringa ) - { - v10 = -1; - break; - } - } - if ( v11 == (char *)v5 ) - { - v10 = 1; - break; - } - v12 = v5 + 1; - String = Stringa + 1; - } - if ( Block[0] != v18 ) - operator delete(Block[0]); - if ( v15[0] != v16 ) - operator delete(v15[0]); - return v10; -} -// 486355: variable 'v7' is possibly undefined -// 48637F: variable 'v8' is possibly undefined - -//----- (004864A0) -------------------------------------------------------- -size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) -{ - return wcsxfrm(Destination, Source, MaxCount); -} - -//----- (004864D0) -------------------------------------------------------- -int __thiscall std::collate::do_transform(int this, int a2, _WORD *a3, int a4) -{ - unsigned int i; // eax - wchar_t *v5; // eax - int v6; // eax - unsigned int v7; // edx - int v9; // [esp+8h] [ebp-90h] - int v10; // [esp+1Ch] [ebp-7Ch] - char *v11; // [esp+20h] [ebp-78h] - int v12; // [esp+24h] [ebp-74h] - unsigned int v13; // [esp+28h] [ebp-70h] - wchar_t *Block; // [esp+2Ch] [ebp-6Ch] - wchar_t *String; // [esp+30h] [ebp-68h] - size_t lpuexcpt; // [esp+38h] [ebp-60h] - void *v18[2]; // [esp+78h] [ebp-20h] BYREF - char v19[20]; // [esp+80h] [ebp-18h] BYREF - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - v10 = this + 8; - *(_WORD *)(this + 8) = 0; - v18[0] = v19; - LOBYTE(v9) = 0; - std::wstring::_M_construct(v18, a3, a4, v9); - String = (wchar_t *)v18[0]; - v11 = (char *)v18[0] + 2 * (int)v18[1]; - lpuexcpt = a4 - (_DWORD)a3; - if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - Block = (wchar_t *)operator new[](2 * (a4 - (_DWORD)a3)); - for ( i = std::collate::_M_transform(Block, String, lpuexcpt); - ; - i = std::collate::_M_transform(Block, String, lpuexcpt) ) - { - if ( lpuexcpt <= i ) - { - lpuexcpt = i + 1; - operator delete[](Block); - if ( lpuexcpt > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - Block = (wchar_t *)operator new[](2 * lpuexcpt); - i = std::collate::_M_transform(Block, String, lpuexcpt); - } - if ( i > 0x1FFFFFFF - *(_DWORD *)(this + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append((_DWORD *)this, Block, i); - v5 = &String[wcslen(String)]; - if ( v11 == (char *)v5 ) - break; - String = v5 + 1; - v12 = *(_DWORD *)(this + 4); - v13 = v12 + 1; - v6 = *(_DWORD *)this; - if ( v10 == *(_DWORD *)this ) - v7 = 7; - else - v7 = *(_DWORD *)(this + 8); - if ( v13 > v7 ) - { - std::wstring::_M_mutate(this, v12, 0, 0, 1); - v6 = *(_DWORD *)this; - } - *(_WORD *)(v6 + 2 * v12) = 0; - *(_DWORD *)(this + 4) = v13; - *(_WORD *)(v6 + 2 * v12 + 2) = 0; - } - operator delete[](Block); - if ( v18[0] != v19 ) - operator delete(v18[0]); - return this; -} -// 48653D: variable 'v9' is possibly undefined - -//----- (004867C0) -------------------------------------------------------- -int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3) -{ - unsigned __int16 *v3; // edx - int (__stdcall *v4)(unsigned __int16 *, unsigned int); // eax - int result; // eax - int v6; // ecx - - v3 = a2; - v4 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); - if ( v4 != std::collate::do_hash ) - return v4(a2, a3); - result = 0; - if ( (unsigned int)a2 < a3 ) - { - do - { - v6 = *v3++; - result = v6 + __ROL4__(result, 7); - } - while ( a3 > (unsigned int)v3 ); - } - return result; -} - -//----- (00486810) -------------------------------------------------------- -int __fastcall std::collate::compare(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (00486820) -------------------------------------------------------- -int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) -{ - unsigned __int16 *v2; // edx - int result; // eax - int v4; // ecx - - v2 = a1; - for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) - v4 = *v2++; - return result; -} - -//----- (00486850) -------------------------------------------------------- -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) -{ - (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); - return this; -} - -//----- (00486880) -------------------------------------------------------- -int __stdcall std::messages::_M_convert_to_char(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00486890) -------------------------------------------------------- -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) -{ - _DWORD *result; // eax - - this[1] = 0; - result = this; - *this = this + 2; - *((_BYTE *)this + 8) = 0; - return result; -} - -//----- (004868B0) -------------------------------------------------------- -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) -{ - (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); - return this; -} - -//----- (004868F0) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3) -{ - int (__stdcall *v3)(int, int); // eax - - v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v3 == std::messages::do_open ) - return 0; - else - return v3(a2, a3); -} - -//----- (00486910) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3, int a4) -{ - int (__stdcall *v4)(int, int); // edx - - v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v4 == std::messages::do_open ) - return 0; - else - return v4(a2, a3); -} - -//----- (00486950) -------------------------------------------------------- -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) -{ - int (__stdcall *result)(int); // eax - - result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); - if ( result != std::messages::do_close ) - return (int (__stdcall *)(int))result(a2); - return result; -} -// 486A30: using guessed type int __stdcall std::messages::do_close(int); - -//----- (00486970) -------------------------------------------------------- -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - void *v6; // eax - _BYTE *Src; // edi - size_t Size; // esi - size_t v11[4]; // [esp+1Ch] [ebp-10h] BYREF - - v6 = this + 2; - *this = this + 2; - Src = *(_BYTE **)a6; - Size = *(_DWORD *)(a6 + 4); - if ( Size + *(_DWORD *)a6 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v11[0] = *(_DWORD *)(a6 + 4); - if ( Size > 0xF ) - { - v6 = std::string::_M_create(v11, 0); - *this = v6; - this[2] = v11[0]; - goto LABEL_10; - } - if ( Size != 1 ) - { - if ( !Size ) - goto LABEL_6; -LABEL_10: - memcpy(v6, Src, Size); - Size = v11[0]; - v6 = (void *)*this; - goto LABEL_6; - } - *((_BYTE *)this + 8) = *Src; -LABEL_6: - this[1] = Size; - *((_BYTE *)v6 + Size) = 0; - return this; -} -// 486970: using guessed type size_t var_10[4]; - -//----- (00486A20) -------------------------------------------------------- -int __stdcall std::messages::do_open(int a1, int a2) -{ - return 0; -} - -//----- (00486A40) -------------------------------------------------------- -int __stdcall std::messages::_M_convert_to_char(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00486A50) -------------------------------------------------------- -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) -{ - _DWORD *result; // eax - - this[1] = 0; - result = this; - *this = this + 2; - *((_WORD *)this + 4) = 0; - return result; -} - -//----- (00486A70) -------------------------------------------------------- -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) -{ - (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); - return this; -} - -//----- (00486AB0) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3) -{ - int (__stdcall *v3)(int, int); // eax - - v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v3 == std::messages::do_open ) - return 0; - else - return v3(a2, a3); -} - -//----- (00486AD0) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3, int a4) -{ - int (__stdcall *v4)(int, int); // edx - - v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v4 == std::messages::do_open ) - return 0; - else - return v4(a2, a3); -} - -//----- (00486B10) -------------------------------------------------------- -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) -{ - int (__stdcall *result)(int); // eax - - result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); - if ( result != std::messages::do_close ) - return (int (__stdcall *)(int))result(a2); - return result; -} -// 486C00: using guessed type int __stdcall std::messages::do_close(int); - -//----- (00486B30) -------------------------------------------------------- -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _WORD *v6; // eax - _WORD *Src; // ebp - signed int Size; // esi - int v10; // edi - unsigned int v11; // edx - unsigned int v13[8]; // [esp+1Ch] [ebp-20h] BYREF - - v6 = this + 2; - *this = this + 2; - Src = *(_WORD **)a6; - Size = 2 * *(_DWORD *)(a6 + 4); - if ( Size + *(_DWORD *)a6 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v10 = Size >> 1; - v13[0] = Size >> 1; - if ( (unsigned int)Size > 0xE ) - { - v6 = std::wstring::_M_create(v13, 0); - *this = v6; - this[2] = v13[0]; - } - if ( v10 == 1 ) - { - *v6 = *Src; - } - else if ( v10 ) - { - memcpy(v6, Src, Size); - v6 = (_WORD *)*this; - } - v11 = v13[0]; - this[1] = v13[0]; - v6[v11] = 0; - return this; -} -// 486B30: using guessed type unsigned int var_20[8]; - -//----- (00486BF0) -------------------------------------------------------- -int __stdcall std::messages::do_open(int a1, int a2) -{ - return 0; -} - -//----- (00486C10) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 486C10: using guessed type size_t var_20[8]; - -//----- (00486CC0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 20); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 486CC0: using guessed type size_t var_20[8]; - -//----- (00486D70) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) -{ - void *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 28); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 486D70: using guessed type size_t var_20[8]; - -//----- (00486E20) -------------------------------------------------------- -int __fastcall std::numpunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 36); - else - return v1(); -} - -//----- (00486E40) -------------------------------------------------------- -int __fastcall std::numpunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 37); - else - return v1(); -} - -//----- (00486E60) -------------------------------------------------------- -int __fastcall std::numpunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); -} - -//----- (00486E70) -------------------------------------------------------- -int __fastcall std::numpunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); -} - -//----- (00486E80) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::numpunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 486EC4: variable 'v7' is possibly undefined - -//----- (00486F00) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::numpunct::do_truename ) - { - Str = *(char **)(a2[2] + 20); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 486F44: variable 'v7' is possibly undefined - -//----- (00486F80) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::numpunct::do_falsename ) - { - Str = *(char **)(a2[2] + 28); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 486FC4: variable 'v7' is possibly undefined - -//----- (00487000) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) -{ - void *v2; // esi - const char *Str; // edi - size_t v5; // eax - size_t Size; // ebp - void *v8; // eax - size_t v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create(v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (void *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 487000: using guessed type size_t var_20[8]; - -//----- (004870B0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 4870E8: variable 'v6' is possibly undefined - -//----- (00487100) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 487138: variable 'v6' is possibly undefined - -//----- (00487150) -------------------------------------------------------- -int __fastcall std::numpunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 36); - else - return v1(); -} - -//----- (00487170) -------------------------------------------------------- -int __fastcall std::numpunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 38); - else - return v1(); -} - -//----- (00487190) -------------------------------------------------------- -int __fastcall std::numpunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); -} - -//----- (004871A0) -------------------------------------------------------- -int __fastcall std::numpunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); -} - -//----- (004871B0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::numpunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - std::string::_M_construct(this, Str, v5); - return this; - } - else - { - v3(a2); - return this; - } -} - -//----- (00487220) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::numpunct::do_truename ) - { - String = *(wchar_t **)(a2[2] + 20); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 487265: variable 'v7' is possibly undefined - -//----- (004872A0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::numpunct::do_falsename ) - { - String = *(wchar_t **)(a2[2] + 28); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4872E5: variable 'v7' is possibly undefined - -//----- (00487320) -------------------------------------------------------- -int __fastcall std::time_get>::date_order(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); - if ( v1 == std::time_get>::do_date_order ) - return 0; - else - return v1(); -} - -//----- (00487340) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_date( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _DWORD *v7; // eax - _DWORD *v8; // esi - int v9; // edx - char v10; // dl - char v11; // al - int v13; // eax - int v14; // eax - char v15; // [esp+28h] [ebp-24h] - char v16; // [esp+28h] [ebp-24h] - - v7 = std::use_facet>(a5 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - *(char **)(v7[2] + 8)); - v10 = v9 == -1; - v15 = v10 & (v8 != 0); - if ( v15 ) - { - v10 = 0; - if ( v8[2] >= v8[3] ) - { - v14 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v10 = 0; - if ( v14 == -1 ) - v10 = v15; - if ( v14 == -1 ) - v8 = 0; - } - } - v11 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v11 = 0; - if ( a3[2] >= a3[3] ) - { - v16 = v10; - v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v10 = v16; - v11 = v13 == -1; - } - } - } - if ( v10 == v11 ) - *a6 |= 2u; - return v8; -} -// 4873A9: variable 'v9' is possibly undefined - -//----- (00487450) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_time( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _DWORD *v7; // eax - _DWORD *v8; // esi - int v9; // edx - char v10; // dl - char v11; // al - int v13; // eax - int v14; // eax - char v15; // [esp+28h] [ebp-24h] - char v16; // [esp+28h] [ebp-24h] - - v7 = std::use_facet>(a5 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - *(char **)(v7[2] + 16)); - v10 = v9 == -1; - v15 = v10 & (v8 != 0); - if ( v15 ) - { - v10 = 0; - if ( v8[2] >= v8[3] ) - { - v14 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v10 = 0; - if ( v14 == -1 ) - v10 = v15; - if ( v14 == -1 ) - v8 = 0; - } - } - v11 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v11 = 0; - if ( a3[2] >= a3[3] ) - { - v16 = v10; - v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v10 = v16; - v11 = v13 == -1; - } - } - } - if ( v10 == v11 ) - *a6 |= 2u; - return v8; -} -// 4874B9: variable 'v9' is possibly undefined - -//----- (00487560) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_year( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int a7) -{ - int v7; // edx - _DWORD *v8; // ebx - int v9; // eax - char v10; // si - char v11; // al - int v13; // eax - bool v14; // zf - _DWORD *v15; // eax - _DWORD *v16; // [esp+34h] [ebp-38h] - char v17; // [esp+38h] [ebp-34h] - int v18; // [esp+48h] [ebp-24h] BYREF - int v19[8]; // [esp+4Ch] [ebp-20h] BYREF - - v19[0] = 0; - v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v18, 0, 9999, 4u, a5, v19); - v16 = v8; - if ( v19[0] ) - { - *a6 |= 4u; - } - else - { - v9 = v18 - 1900; - if ( v18 < 0 ) - v9 = v18 + 100; - *(_DWORD *)(a7 + 20) = v9; - } - v10 = v7 == -1; - v17 = (v8 != 0) & v10; - if ( v17 ) - { - v10 = 0; - if ( v8[2] >= v8[3] ) - { - v13 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v14 = v13 == -1; - if ( v13 == -1 ) - v10 = v17; - v15 = 0; - if ( !v14 ) - v15 = v8; - v16 = v15; - } - } - v11 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v11 = 0; - if ( a3[2] >= a3[3] ) - v11 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - } - if ( v10 == v11 ) - *a6 |= 2u; - return v16; -} -// 4875F3: variable 'v7' is possibly undefined -// 487560: using guessed type int var_20[8]; - -//----- (004876B0) -------------------------------------------------------- -int __fastcall std::time_get>::get_weekday(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); -} - -//----- (004876C0) -------------------------------------------------------- -int std::time_get>::do_date_order() -{ - return 0; -} - -//----- (004876D0) -------------------------------------------------------- -int __fastcall std::time_get>::get_monthname(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); -} - -//----- (004876E0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_num( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int *a5, - signed int a6, - int a7, - unsigned int a8, - int a9, - _DWORD *a10) -{ - unsigned int v10; // ebp - int v12; // eax - int v13; // edi - char v14; // al - unsigned __int8 v15; // al - unsigned int v16; // eax - bool v17; // dl - char v18; // bl - int v19; // ebx - char v20; // dl - int (__stdcall *v21)(unsigned __int8, int); // eax - int v23; // eax - char *v24; // eax - int v25; // eax - int v26; // eax - unsigned int v28; // [esp+20h] [ebp-2Ch] - _BYTE *v29; // [esp+24h] [ebp-28h] - bool v31; // [esp+2Fh] [ebp-1Dh] - - v10 = 10; - v29 = std::use_facet>(a9 + 108); - if ( a8 != 2 ) - { - v12 = 1; - if ( a8 == 4 ) - v12 = 1000; - v10 = v12; - } - v28 = 0; - v13 = 0; - while ( 1 ) - { - v17 = a2 == -1; - v18 = v17 && a1 != 0; - if ( v18 ) - { - if ( a1[2] >= a1[3] ) - { - v25 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v17 = a2 == -1; - if ( v25 != -1 ) - v18 = 0; - if ( v25 == -1 ) - a1 = 0; - } - else - { - v18 = 0; - } - } - else - { - v18 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v31 = v17; - v23 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v17 = v31; - if ( v23 == -1 ) - { - a3 = 0; - v18 ^= 1u; - } - } - } - else - { - v18 ^= a4 == -1; - } - if ( v28 >= a8 || !v18 ) - break; - if ( a1 && v17 ) - { - v24 = (char *)a1[2]; - if ( (unsigned int)v24 >= a1[3] ) - { - v26 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v26 == -1 ) - { - v20 = -1; - v19 = 255; - a1 = 0; - } - else - { - v19 = (unsigned __int8)v26; - v20 = v26; - } - } - else - { - v19 = (unsigned __int8)*v24; - v20 = *v24; - } - } - else - { - v19 = (unsigned __int8)a2; - v20 = a2; - } - v14 = v29[v19 + 285]; - if ( !v14 ) - { - v21 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v29 + 32); - if ( v21 != std::ctype::do_narrow ) - v20 = v21(v20, 42); - if ( v20 == 42 ) - goto LABEL_27; - v29[v19 + 285] = v20; - v14 = v20; - } - v15 = v14 - 48; - if ( v15 > 9u ) - goto LABEL_27; - v13 = (char)v15 + 10 * v13; - if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) - goto LABEL_27; - v16 = a1[2]; - v10 /= 0xAu; - if ( v16 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v16 + 1; - ++v28; - a2 = -1; - } - if ( v28 == a8 ) - { -LABEL_30: - *a5 = v13; - return a1; - } -LABEL_27: - if ( a8 == 4 && v28 == 2 ) - { - v13 -= 100; - goto LABEL_30; - } - *a10 |= 4u; - return a1; -} - -//----- (004879A0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_weekday( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // dl - char v14; // al - int v16; // eax - int v17; // eax - char v18; // [esp+34h] [ebp-68h] - char v19; // [esp+34h] [ebp-68h] - _DWORD *v20; // [esp+38h] [ebp-64h] - unsigned int v21; // [esp+40h] [ebp-5Ch] BYREF - int v22; // [esp+44h] [ebp-58h] BYREF - int v23[21]; // [esp+48h] [ebp-54h] BYREF - - v22 = 0; - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v23[0] = v7[18]; - v23[1] = v7[19]; - v23[2] = v7[20]; - v23[3] = v7[21]; - v23[4] = v7[22]; - v23[5] = v7[23]; - v23[6] = v7[24]; - v23[7] = v7[11]; - v23[8] = v7[12]; - v23[9] = v7[13]; - v23[10] = v7[14]; - v23[11] = v7[15]; - v8 = v7[16]; - v9 = v7[17]; - v23[12] = v8; - v23[13] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v21, - (int)v23, - 7u, - a5, - &v22); - v12 = v11; - if ( v22 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 24) = v21; - v13 = v10 == -1; - v18 = v13 & (v11 != 0); - if ( v18 ) - { - v13 = 0; - if ( v11[2] >= v11[3] ) - { - v12 = 0; - v20 = v11; - v17 = (*(int (**)(void))(*v11 + 36))(); - v13 = 0; - if ( v17 != -1 ) - v12 = v20; - if ( v17 == -1 ) - v13 = v18; - } - } - v14 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v14 = 0; - if ( a3[2] >= a3[3] ) - { - v19 = v13; - v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v13 = v19; - v14 = v16 == -1; - } - } - } - if ( v13 == v14 ) - *a6 |= 2u; - return v12; -} -// 487AAF: variable 'v10' is possibly undefined - -//----- (00487B60) -------------------------------------------------------- -unsigned __int64 __stdcall std::time_get>::_M_extract_name( - unsigned __int64 a1, - _DWORD *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - int a7, - _DWORD *a8) -{ - int v8; // eax - void *v9; // esp - void *v10; // esp - unsigned __int8 v11; // dl - unsigned __int8 v12; // bl - int v14; // edx - int v15; // esi - unsigned int v16; // ebx - int v17; // edi - char v18; // al - int v19; // ecx - int *v20; // edi - size_t v21; // eax - unsigned int v22; // esi - unsigned int v23; // ebx - size_t v24; // eax - unsigned int v25; // eax - char v26; // si - unsigned __int8 v27; // dl - int *v28; // ecx - unsigned int v29; // eax - unsigned int i; // esi - unsigned int v31; // eax - int v32; // eax - const char *v33; // edi - const char *v34; // esi - size_t v35; // eax - unsigned int v36; // ebx - unsigned __int8 v37; // dl - char v38; // dl - char v39; // di - _BYTE *v40; // eax - char v41; // di - int v42; // eax - bool v43; // zf - int v44; // eax - int v45; // eax - bool v46; // zf - _DWORD *v47; // eax - int v48; // eax - _BYTE *v49; // eax - int v50; // eax - int v51; // eax - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - int v55; // eax - bool v56; // zf - int v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - char v61; // al - int v62; // eax - int v63; // eax - int v64; // eax - int v65; // eax - int v66; // eax - bool v67; // zf - _DWORD *v68; // eax - int v69; // [esp+10h] [ebp-38h] BYREF - void *v70; // [esp+14h] [ebp-34h] - _DWORD *v71; // [esp+18h] [ebp-30h] - int v72; // [esp+1Ch] [ebp-2Ch] - unsigned __int8 v73; // [esp+22h] [ebp-26h] - unsigned __int8 v74; // [esp+23h] [ebp-25h] - unsigned __int64 v75; // [esp+24h] [ebp-24h] - const char *v76; // [esp+2Ch] [ebp-1Ch] - - v72 = HIDWORD(a1); - v75 = a1; - v71 = a2; - v70 = std::use_facet>(a7 + 108); - v8 = 16 * ((unsigned int)(4 * a6 + 27) >> 4); - v9 = alloca(v8); - v10 = alloca(v8); - LOBYTE(v76) = HIDWORD(a1) == -1; - if ( ((unsigned __int8)v76 & ((_DWORD)a1 != 0)) != 0 ) - { - if ( *(_DWORD *)(v75 + 8) >= *(_DWORD *)(v75 + 12) ) - { - v54 = *(_DWORD *)v75; - v74 = (unsigned __int8)v76 & ((_DWORD)a1 != 0); - v55 = (*(int (__fastcall **)(_DWORD))(v54 + 36))(v75); - v11 = v74; - v56 = v55 == -1; - if ( v55 != -1 ) - v11 = 0; - v57 = 0; - if ( !v56 ) - v57 = v75; - LODWORD(v75) = v57; - } - else - { - v11 = 0; - } - } - else - { - v11 = (unsigned __int8)v76; - } - v74 = a3 == -1; - v12 = v74 & (a2 != 0); - if ( v12 ) - { - if ( a2[2] >= a2[3] ) - { - v50 = *a2; - v73 = v11; - v51 = (*(int (__fastcall **)(_DWORD *))(v50 + 36))(a2); - v11 = v73; - v52 = v51 == -1; - if ( v51 != -1 ) - v12 = 0; - v53 = 0; - if ( !v52 ) - v53 = a2; - v71 = v53; - } - else - { - v12 = 0; - } - } - else - { - v12 = v74; - } - if ( v12 == v11 ) - goto LABEL_6; - if ( (_DWORD)v75 && (_BYTE)v76 ) - { - v49 = *(_BYTE **)(v75 + 8); - if ( (unsigned int)v49 >= *(_DWORD *)(v75 + 12) ) - { - v58 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v75 + 36))(v75); - v59 = v58 == -1; - v60 = v58; - v61 = -1; - if ( !v59 ) - v61 = v60; - LOBYTE(v76) = v61; - v62 = 0; - if ( !v59 ) - v62 = v75; - LODWORD(v75) = v62; - } - else - { - LOBYTE(v76) = *v49; - } - } - else - { - LOBYTE(v76) = v72; - } - if ( !a6 ) - { -LABEL_6: - *a8 |= 4u; - return v75; - } - v72 = (int)&v69; - v14 = a5; - v15 = 0; - v16 = 0; - v17 = (int)v70; - do - { - while ( 1 ) - { - v19 = **(char **)(v14 + 4 * v15); - if ( (_BYTE)v19 == (_BYTE)v76 ) - break; - a5 = v14; - v18 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v17 + 8))(v17, v19); - v14 = a5; - if ( v18 == (_BYTE)v76 ) - break; - if ( a6 == ++v15 ) - goto LABEL_17; - } - *(_DWORD *)(v72 + 4 * v16++) = v15++; - } - while ( a6 != v15 ); -LABEL_17: - v76 = 0; - v20 = (int *)v72; - if ( v16 <= 1 ) - goto LABEL_39; - do - { - v72 = *v20; - v21 = strlen(*(const char **)(a5 + 4 * v72)); - HIDWORD(v75) = v16; - v22 = v21; - v23 = 1; - do - { - v24 = strlen(*(const char **)(a5 + 4 * v20[v23])); - if ( v22 > v24 ) - v22 = v24; - ++v23; - } - while ( v23 < HIDWORD(v75) ); - v16 = HIDWORD(v75); - v25 = *(_DWORD *)(v75 + 8); - if ( v25 >= *(_DWORD *)(v75 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v75 + 40))(v75); - else - *(_DWORD *)(v75 + 8) = v25 + 1; - if ( (unsigned int)++v76 >= v22 ) - goto LABEL_57; - v26 = 0; - if ( *(_DWORD *)(v75 + 8) >= *(_DWORD *)(v75 + 12) ) - { - v26 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v75 + 36))(v75) == -1; - v48 = 0; - if ( !v26 ) - v48 = v75; - LODWORD(v75) = v48; - } - if ( (v74 & (v71 != 0)) != 0 ) - { - if ( v71[2] < v71[3] ) - { - if ( !v26 ) - goto LABEL_57; - goto LABEL_29; - } - v44 = *v71; - BYTE4(v75) = v74 & (v71 != 0); - v45 = (*(int (__fastcall **)(_DWORD *))(v44 + 36))(v71); - v27 = BYTE4(v75); - v46 = v45 == -1; - if ( v45 != -1 ) - v27 = 0; - v47 = 0; - if ( !v46 ) - v47 = v71; - v71 = v47; - } - else - { - v27 = v74; - } - if ( v26 == v27 ) - goto LABEL_57; -LABEL_29: - v28 = (int *)v75; - v29 = v72; - for ( i = 0; ; v29 = v20[i] ) - { - v14 = (unsigned __int8)v76[*(_DWORD *)(a5 + 4 * v29)]; - LOBYTE(v29) = -1; - if ( v28 ) - { - v29 = v28[2]; - if ( v29 >= v28[3] ) - { - v42 = *v28; - LOBYTE(v75) = v14; - HIDWORD(v75) = v28; - v29 = (*(int (**)(void))(v42 + 36))(); - v43 = v29 == -1; - if ( v29 == -1 ) - LOBYTE(v29) = -1; - v28 = (int *)HIDWORD(v75); - if ( v43 ) - v28 = 0; - v14 = (unsigned __int8)v75; - } - else - { - LOBYTE(v29) = *(_BYTE *)v29; - } - } - if ( (_BYTE)v14 == (_BYTE)v29 ) - break; - v20[i] = v20[--v16]; - if ( v16 <= i ) - goto LABEL_37; -LABEL_31: - ; - } - if ( v16 > ++i ) - goto LABEL_31; -LABEL_37: - LODWORD(v75) = v28; - } - while ( v16 > 1 ); - HIDWORD(v75) = -1; -LABEL_39: - if ( v16 != 1 ) - goto LABEL_6; - v31 = *(_DWORD *)(v75 + 8); - if ( v31 >= *(_DWORD *)(v75 + 12) ) - (*(void (__fastcall **)(_DWORD, int))(*(_DWORD *)v75 + 40))(v75, v14); - else - *(_DWORD *)(v75 + 8) = v31 + 1; - v32 = *v20; - v33 = *(const char **)(a5 + 4 * *v20); - v72 = v32; - v34 = v76 + 1; - v35 = strlen(v33); - HIDWORD(v75) = v35; - if ( (unsigned int)(v76 + 1) < v35 ) - { - v76 = v33; - v36 = v75; - while ( 1 ) - { - v41 = 0; - if ( *(_DWORD *)(v36 + 8) >= *(_DWORD *)(v36 + 12) ) - { - v41 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v36 + 36))(v36) == -1; - if ( v41 ) - v36 = 0; - } - if ( (v74 & (v71 != 0)) != 0 ) - { - if ( v71[2] >= v71[3] ) - { - v65 = *v71; - LOBYTE(v75) = v74 & (v71 != 0); - v66 = (*(int (__fastcall **)(_DWORD *))(v65 + 36))(v71); - v37 = v75; - v67 = v66 == -1; - if ( v66 != -1 ) - v37 = 0; - v68 = 0; - if ( !v67 ) - v68 = v71; - v71 = v68; - } - else - { - v37 = 0; - } - } - else - { - v37 = v74; - } - if ( v41 == v37 ) - { -LABEL_95: - v75 = v36 | 0xFFFFFFFF00000000LL; - goto LABEL_6; - } - v38 = -1; - v39 = v34[(_DWORD)v76]; - if ( v36 ) - { - v40 = *(_BYTE **)(v36 + 8); - if ( (unsigned int)v40 < *(_DWORD *)(v36 + 12) ) - { - if ( v39 != *v40 ) - goto LABEL_95; - goto LABEL_49; - } - v63 = *(_DWORD *)v36; - LOBYTE(v75) = -1; - v64 = (*(int (__fastcall **)(unsigned int))(v63 + 36))(v36); - v38 = v75; - if ( v64 != -1 ) - v38 = v64; - if ( v64 == -1 ) - v36 = 0; - } - if ( v39 != v38 ) - goto LABEL_95; - v40 = *(_BYTE **)(v36 + 8); - if ( (unsigned int)v40 >= *(_DWORD *)(v36 + 12) ) - { - (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v36 + 40))(v36); - goto LABEL_50; - } -LABEL_49: - *(_DWORD *)(v36 + 8) = v40 + 1; -LABEL_50: - if ( ++v34 == (const char *)HIDWORD(v75) ) - { - LODWORD(v75) = v36; - goto LABEL_98; - } - } - } - if ( v34 != (const char *)v35 ) - { -LABEL_57: - HIDWORD(v75) = -1; - goto LABEL_6; - } -LABEL_98: - HIDWORD(v75) = -1; - *a4 = v72; - return v75; -} - -//----- (00488090) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_monthname( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // edx - int v9; // edx - int v10; // edx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // dl - char v14; // al - int v16; // eax - int v17; // eax - char v18; // [esp+34h] [ebp-98h] - char v19; // [esp+34h] [ebp-98h] - _DWORD *v20; // [esp+38h] [ebp-94h] - unsigned int v21; // [esp+48h] [ebp-84h] BYREF - int v22; // [esp+4Ch] [ebp-80h] BYREF - int v23[31]; // [esp+50h] [ebp-7Ch] BYREF - - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v23[0] = v7[37]; - v23[1] = v7[38]; - v23[2] = v7[39]; - v23[3] = v7[40]; - v23[4] = v7[41]; - v23[5] = v7[42]; - v23[6] = v7[43]; - v23[7] = v7[44]; - v23[8] = v7[45]; - v23[9] = v7[46]; - v23[10] = v7[47]; - v23[11] = v7[48]; - v23[12] = v7[25]; - v23[13] = v7[26]; - v23[14] = v7[27]; - v23[15] = v7[28]; - v8 = v7[29]; - v22 = 0; - v23[16] = v8; - v23[17] = v7[30]; - v23[18] = v7[31]; - v23[19] = v7[32]; - v23[20] = v7[33]; - v23[21] = v7[34]; - v9 = v7[35]; - v23[23] = v7[36]; - v23[22] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v21, - (int)v23, - 0xCu, - a5, - &v22); - v12 = v11; - if ( v22 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 16) = v21; - v13 = v10 == -1; - v18 = v13 & (v11 != 0); - if ( v18 ) - { - v13 = 0; - if ( v11[2] >= v11[3] ) - { - v12 = 0; - v20 = v11; - v17 = (*(int (**)(void))(*v11 + 36))(); - v13 = 0; - if ( v17 != -1 ) - v12 = v20; - if ( v17 == -1 ) - v13 = v18; - } - } - v14 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v14 = 0; - if ( a3[2] >= a3[3] ) - { - v19 = v13; - v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v13 = v19; - v14 = v16 == -1; - } - } - } - if ( v13 == v14 ) - *a6 |= 2u; - return v12; -} -// 48823C: variable 'v10' is possibly undefined - -//----- (004882F0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_via_format( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - char *a8) -{ - size_t v8; // esi - _BYTE *v10; // edi - bool v11; // bl - char v12; // dl - char v13; // cl - char v14; // al - int (__stdcall *v15)(unsigned __int8, int); // eax - char v16; // dl - int v17; // eax - int v18; // edx - char v19; // al - int (__stdcall *v20)(unsigned __int8, int); // eax - char v21; // al - int v23; // eax - _BYTE *v24; // eax - int v25; // esi - int (__stdcall *v26)(unsigned __int8, int); // eax - int v27; // edx - int v28; // eax - _DWORD *v29; // eax - int v30; // eax - unsigned __int64 v31; // kr00_8 - char v32; // al - void (__fastcall *v33)(_BYTE *, int, const char *, const char *, int *); // eax - _DWORD *v34; // eax - int v35; // edx - int v36; // edx - char v37; // al - void (__fastcall *v38)(_BYTE *, int, const char *, const char *, int *); // eax - int v39; // edx - _DWORD *v40; // eax - unsigned __int8 *v41; // eax - int v42; // ebx - int v43; // edx - char v44; // al - int (__stdcall *v45)(unsigned __int8, int); // eax - unsigned int v46; // eax - unsigned __int8 *v47; // eax - int v48; // eax - unsigned __int64 v49; // rax - char v50; // si - int v51; // esi - char v52; // dl - int v53; // esi - char v54; // dl - _DWORD *v55; // eax - int v56; // edx - int v57; // edx - _DWORD *v58; // eax - int v59; // eax - unsigned __int64 v60; // kr08_8 - _DWORD *v61; // eax - int v62; // edx - char v63; // al - void (__fastcall *v64)(_BYTE *, int, const char *, void *, int *); // eax - _DWORD *v65; // eax - _DWORD *v66; // eax - int v67; // edx - unsigned __int8 *v68; // eax - int v69; // eax - int v70; // edx - unsigned __int8 *v71; // eax - int v72; // ebx - char v73; // al - int (__stdcall *v74)(unsigned __int8, int); // eax - int v75; // eax - bool v76; // zf - _DWORD *v77; // eax - int v78; // eax - int v79; // eax - int (__stdcall *v80)(unsigned __int8); // eax - char *v81; // ecx - int (__stdcall *v82)(unsigned __int8); // eax - __int64 v83; // rax - _BYTE *v84; // eax - _BYTE *v85; // eax - char *Str; // [esp+0h] [ebp-BCh] - int v87; // [esp+14h] [ebp-A8h] - int v88; // [esp+20h] [ebp-9Ch] - size_t v90; // [esp+38h] [ebp-84h] - char v91; // [esp+38h] [ebp-84h] - char *v93; // [esp+44h] [ebp-78h] - int v94; // [esp+44h] [ebp-78h] - bool v95; // [esp+44h] [ebp-78h] - size_t v96; // [esp+48h] [ebp-74h] - int v97; // [esp+4Ch] [ebp-70h] - char v98; // [esp+4Ch] [ebp-70h] - _DWORD *v99; // [esp+54h] [ebp-68h] - char v100; // [esp+5Ah] [ebp-62h] - char v101; // [esp+5Ah] [ebp-62h] - bool v102; // [esp+5Bh] [ebp-61h] - int v103; // [esp+5Ch] [ebp-60h] - int v104; // [esp+68h] [ebp-54h] BYREF - int v105; // [esp+6Ch] [ebp-50h] BYREF - int v106[3]; // [esp+70h] [ebp-4Ch] BYREF - int v107; // [esp+7Ch] [ebp-40h] - int v108; // [esp+80h] [ebp-3Ch] - int v109; // [esp+84h] [ebp-38h] - int v110; // [esp+88h] [ebp-34h] - int v111; // [esp+8Ch] [ebp-30h] - int v112; // [esp+90h] [ebp-2Ch] - int v113; // [esp+94h] [ebp-28h] - int v114; // [esp+98h] [ebp-24h] - int v115; // [esp+9Ch] [ebp-20h] - - v8 = 0; - v99 = std::use_facet>(a5 + 108); - v10 = std::use_facet>(a5 + 108); - v104 = 0; - v96 = strlen(a8); - while ( 1 ) - { - v11 = a2 == -1; - if ( v11 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v75 = (*(int (__thiscall **)(_DWORD *, char *))(*a1 + 36))(a1, Str); - v12 = v11 && a1 != 0; - if ( v75 != -1 ) - v12 = 0; - if ( v75 == -1 ) - a1 = 0; - } - else - { - v12 = 0; - } - } - else - { - v12 = a2 == -1; - } - v100 = a4 == -1; - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v91 = v12; - v23 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v12 = v91; - if ( v23 == -1 ) - { - a3 = 0; - v12 = v91 ^ 1; - } - } - } - else - { - v12 ^= v100; - } - if ( v8 >= v96 || !v12 ) - break; - if ( v104 ) - goto LABEL_32; - v93 = &a8[v8]; - v90 = v8 + 1; - v97 = (unsigned __int8)a8[v8]; - v13 = a8[v8]; - v14 = v10[v97 + 285]; - if ( v14 ) - { -LABEL_15: - if ( v14 != 37 ) - goto LABEL_16; - v94 = (unsigned __int8)a8[v8 + 1]; - v18 = v94; - v19 = v10[v94 + 285]; - if ( !v19 ) - { - v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v20 != std::ctype::do_narrow ) - v18 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v10, (char)v94, 0); - if ( !(_BYTE)v18 ) - { -LABEL_47: - v104 |= 4u; - goto LABEL_48; - } - v10[v94 + 285] = v18; - v19 = v18; - } - v105 = 0; - if ( (v19 == 69 || v19 == 79) - && (v90 = v8 + 2, v25 = (unsigned __int8)a8[v8 + 2], v19 = v10[v25 + 285], v18 = v25, !v19) ) - { - v26 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v26 != std::ctype::do_narrow ) - v18 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v26)(v10, (char)v25, 0); - if ( !(_BYTE)v18 ) - goto LABEL_47; - v10[v25 + 285] = v18; - v21 = v18 - 65; - if ( (unsigned __int8)(v18 - 65) > 0x38u ) - goto LABEL_47; - } - else - { - v21 = v19 - 65; - } - switch ( v21 ) - { - case 0: - v65 = (_DWORD *)v99[2]; - v106[0] = v65[11]; - v106[1] = v65[12]; - v106[2] = v65[13]; - v107 = v65[14]; - v108 = v65[15]; - v109 = v65[16]; - v59 = v65[17]; - goto LABEL_114; - case 1: - v40 = (_DWORD *)v99[2]; - v106[0] = v40[25]; - v106[1] = v40[26]; - v106[2] = v40[27]; - v107 = v40[28]; - v108 = v40[29]; - v109 = v40[30]; - v110 = v40[31]; - v111 = v40[32]; - v112 = v40[33]; - v113 = v40[34]; - v114 = v40[35]; - v30 = v40[36]; - goto LABEL_57; - case 2: - case 24: - case 56: - a1 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 0, - 9999, - 4u, - a5, - &v104); - a2 = v27; - if ( !v104 ) - { - v28 = v105 - 1900; - if ( v105 < 0 ) - v28 = v105 + 100; - a7[5] = v28; - } - break; - case 3: - v32 = v10[28]; - if ( v32 == 1 ) - goto LABEL_156; - if ( !v32 ) - std::ctype::_M_widen_init((int)v10); - v33 = *(void (__fastcall **)(_BYTE *, int, const char *, const char *, int *))(*(_DWORD *)v10 + 28); - if ( (char *)v33 == (char *)std::ctype::do_widen ) -LABEL_156: - strcpy((char *)v106, "%m/%d/%y"); - else - v33(v10, v18, "%m/%d/%y", "%H:%M", v106); - goto LABEL_155; - case 7: - v34 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 0, - 23, - 2u, - a5, - &v104); - goto LABEL_65; - case 8: - v34 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 1, - 12, - 2u, - a5, - &v104); -LABEL_65: - a1 = v34; - a2 = v35; - if ( !v104 ) - a7[2] = v105; - break; - case 12: - a1 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 0, - 59, - 2u, - a5, - &v104); - a2 = v36; - if ( !v104 ) - a7[1] = v105; - break; - case 17: - v37 = v10[28]; - if ( v37 == 1 ) - goto LABEL_157; - if ( !v37 ) - std::ctype::_M_widen_init((int)v10); - v38 = *(void (__fastcall **)(_BYTE *, int, const char *, const char *, int *))(*(_DWORD *)v10 + 28); - if ( (char *)v38 == (char *)std::ctype::do_widen ) -LABEL_157: - strcpy((char *)v106, "%H:%M"); - else - v38(v10, v18, "%H:%M", "%H:%M:%S", v106); - goto LABEL_155; - case 18: - a1 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 0, - 60, - 2u, - a5, - &v104); - a2 = v39; - if ( !v104 ) - *a7 = v105; - break; - case 19: - v63 = v10[28]; - if ( v63 == 1 ) - goto LABEL_154; - if ( !v63 ) - std::ctype::_M_widen_init((int)v10); - v64 = *(void (__fastcall **)(_BYTE *, int, const char *, void *, int *))(*(_DWORD *)v10 + 28); - if ( (char *)v64 == (char *)std::ctype::do_widen ) -LABEL_154: - strcpy((char *)v106, "%H:%M:%S"); - else - v64(v10, v18, "%H:%M:%S", &unk_55739E, v106); -LABEL_155: - v61 = (_DWORD *)std::time_get>::_M_extract_via_format( - (int)a1, - a2, - (int)a3, - a4, - a5, - (int)&v104, - (int)a7, - (char *)v106); - goto LABEL_117; - case 23: - v61 = (_DWORD *)std::time_get>::_M_extract_via_format( - (int)a1, - a2, - (int)a3, - a4, - a5, - (int)&v104, - (int)a7, - *(char **)(v99[2] + 16)); - goto LABEL_117; - case 25: - if ( a1 && a2 == -1 ) - { - v47 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v47 >= a1[3] ) - { - v48 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); - if ( v48 == -1 ) - { - v48 = 255; - a1 = 0; - } - else - { - v48 = (unsigned __int8)v48; - } - } - else - { - v48 = *v47; - } - } - else - { - v48 = (unsigned __int8)a2; - } - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * v48) & 1) == 0 ) - goto LABEL_47; - v49 = std::time_get>::_M_extract_name( - __PAIR64__(a2, (unsigned int)a1), - a3, - a4, - v106, - (int)std::__timepunct_cache::_S_timezones, - 14, - a5, - &v104); - a1 = (_DWORD *)v49; - v95 = HIDWORD(v49) == -1; - v103 = HIDWORD(v49); - a2 = HIDWORD(v49); - BYTE4(v49) = v95; - v102 = v95 && (_DWORD)v49 != 0; - if ( v102 ) - { - BYTE4(v49) = 0; - if ( *(_DWORD *)(v49 + 8) >= *(_DWORD *)(v49 + 12) ) - { - LODWORD(v49) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v49 + 36))(v49); - BYTE4(v49) = 0; - if ( (_DWORD)v49 == -1 ) - { - BYTE4(v49) = v102; - a1 = 0; - v102 = 0; - } - } - } - v50 = v100 & (a3 != 0); - if ( v50 ) - { - v100 = 0; - if ( a3[2] >= a3[3] ) - { - v98 = BYTE4(v49); - LODWORD(v49) = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - BYTE4(v49) = v98; - v76 = (_DWORD)v49 == -1; - if ( (_DWORD)v49 != -1 ) - v50 = 0; - v100 = v50; - v77 = 0; - if ( !v76 ) - v77 = a3; - a3 = v77; - } - } - if ( BYTE4(v49) != v100 && !(v106[0] | v104) ) - { - LOBYTE(v51) = v103; - if ( v102 ) - { - v84 = (_BYTE *)a1[2]; - if ( (unsigned int)v84 >= a1[3] ) - { - v51 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v51 == -1 ) - a1 = 0; - } - else - { - LOBYTE(v51) = *v84; - } - } - if ( v10[28] ) - { - v52 = v10[74]; - } - else - { - std::ctype::_M_widen_init((int)v10); - v52 = 45; - v80 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); - if ( v80 != std::ctype::do_widen ) - { - v52 = ((int (__fastcall *)(_BYTE *, int, int))v80)(v10, 45, 45); - Str = v81; - } - } - if ( (_BYTE)v51 == v52 ) - goto LABEL_112; - if ( a1 && v95 ) - { - v85 = (_BYTE *)a1[2]; - if ( (unsigned int)v85 >= a1[3] ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v53 == -1 ) - a1 = 0; - } - else - { - LOBYTE(v53) = *v85; - } - } - else - { - LOBYTE(v53) = v103; - } - if ( v10[28] ) - { - v54 = v10[72]; - } - else - { - std::ctype::_M_widen_init((int)v10); - v54 = 43; - v82 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); - if ( v82 != std::ctype::do_widen ) - { - v83 = ((__int64 (__fastcall *)(_BYTE *, int, int))v82)(v10, 43, 43); - Str = (char *)HIDWORD(v83); - v54 = v83; - } - } - if ( (_BYTE)v53 == v54 ) - { -LABEL_112: - v55 = std::time_get>::_M_extract_num( - a1, - v103, - a3, - a4, - v106, - 0, - 23, - 2u, - a5, - &v104); - a1 = std::time_get>::_M_extract_num( - v55, - v56, - a3, - a4, - v106, - 0, - 59, - 2u, - a5, - &v104); - a2 = v57; - } - } - break; - case 32: - v58 = (_DWORD *)v99[2]; - v106[0] = v58[18]; - v106[1] = v58[19]; - v106[2] = v58[20]; - v107 = v58[21]; - v108 = v58[22]; - v109 = v58[23]; - v59 = v58[24]; -LABEL_114: - v110 = v59; - v60 = std::time_get>::_M_extract_name( - __PAIR64__(a2, (unsigned int)a1), - a3, - a4, - &v105, - (int)v106, - 7, - a5, - &v104); - a2 = HIDWORD(v60); - a1 = (_DWORD *)v60; - if ( !v104 ) - a7[6] = v105; - break; - case 33: - case 39: - v29 = (_DWORD *)v99[2]; - v106[0] = v29[37]; - v106[1] = v29[38]; - v106[2] = v29[39]; - v107 = v29[40]; - v108 = v29[41]; - v109 = v29[42]; - v110 = v29[43]; - v111 = v29[44]; - v112 = v29[45]; - v113 = v29[46]; - v114 = v29[47]; - v30 = v29[48]; -LABEL_57: - v115 = v30; - v31 = std::time_get>::_M_extract_name( - __PAIR64__(a2, (unsigned int)a1), - a3, - a4, - &v105, - (int)v106, - 12, - a5, - &v104); - a2 = HIDWORD(v31); - a1 = (_DWORD *)v31; - if ( !v104 ) - a7[4] = v105; - break; - case 34: - v61 = (_DWORD *)std::time_get>::_M_extract_via_format( - (int)a1, - a2, - (int)a3, - a4, - a5, - (int)&v104, - (int)a7, - *(char **)(v99[2] + 24)); - goto LABEL_117; - case 35: - v88 = a5; - v87 = 1; - goto LABEL_126; - case 36: - if ( a1 && a2 == -1 ) - { - v68 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v68 < a1[3] ) - { - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * *v68) & 0x20) != 0 ) - goto LABEL_133; - goto LABEL_164; - } - v69 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); - if ( v69 == -1 ) - a1 = 0; - } - else - { - LOBYTE(v69) = a2; - } - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)v69) & 0x20) != 0 ) - { - v68 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v68 < a1[3] ) -LABEL_133: - a1[2] = v68 + 1; - else - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - v66 = std::time_get>::_M_extract_num( - a1, - -1, - a3, - a4, - &v105, - 1, - 9, - 1u, - a5, - &v104); - goto LABEL_127; - } -LABEL_164: - v88 = a5; - v87 = 10; -LABEL_126: - v66 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - v87, - 31, - 2u, - v88, - &v104); -LABEL_127: - a1 = v66; - a2 = v67; - if ( !v104 ) - a7[3] = v105; - break; - case 44: - a1 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 1, - 12, - 2u, - a5, - &v104); - a2 = v70; - if ( !v104 ) - a7[4] = v105 - 1; - break; - case 45: - if ( a1 && a2 == -1 ) - { - v41 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v41 >= a1[3] ) - { - v79 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); - if ( v79 == -1 ) - { - v42 = 255; - v43 = -1; - a1 = 0; - } - else - { - v43 = v79; - v42 = (unsigned __int8)v79; - } - } - else - { - v42 = *v41; - v43 = v42; - } - } - else - { - v43 = a2; - v42 = (unsigned __int8)a2; - } - v44 = v10[v42 + 285]; - if ( v44 ) - goto LABEL_88; - v45 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v45 != std::ctype::do_narrow ) - v43 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v45)(v10, (char)v43, 0); - if ( (_BYTE)v43 ) - { - v10[v42 + 285] = v43; - v44 = v43; -LABEL_88: - if ( v44 == 10 ) - goto LABEL_89; - } - goto LABEL_47; - case 51: - if ( a1 && a2 == -1 ) - { - v71 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v71 >= a1[3] ) - { - v78 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); - if ( v78 == -1 ) - { - v72 = 255; - v43 = -1; - a1 = 0; - } - else - { - v43 = v78; - v72 = (unsigned __int8)v78; - } - } - else - { - v72 = *v71; - v43 = v72; - } - } - else - { - v43 = a2; - v72 = (unsigned __int8)a2; - } - v73 = v10[v72 + 285]; - if ( v73 ) - goto LABEL_151; - v74 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v74 != std::ctype::do_narrow ) - v43 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v74)(v10, (char)v43, 0); - if ( !(_BYTE)v43 ) - goto LABEL_47; - v10[v72 + 285] = v43; - v73 = v43; -LABEL_151: - if ( v73 != 9 ) - goto LABEL_47; -LABEL_89: - v46 = a1[2]; - if ( v46 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *, int))(*a1 + 40))(a1, v43); - else - a1[2] = v46 + 1; - a2 = -1; - break; - case 55: - v61 = (_DWORD *)std::time_get>::_M_extract_via_format( - (int)a1, - a2, - (int)a3, - a4, - a5, - (int)&v104, - (int)a7, - *(char **)(v99[2] + 8)); -LABEL_117: - a1 = v61; - a2 = v62; - break; - default: - goto LABEL_47; - } -LABEL_48: - v8 = v90 + 1; - } - else - { - v15 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v15 != std::ctype::do_narrow ) - v13 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v15)(v10, (char)v97, 0); - if ( v13 ) - { - v10[v97 + 285] = v13; - v14 = v13; - goto LABEL_15; - } -LABEL_16: - v16 = *v93; - if ( !a1 || a2 != -1 ) - { - LOBYTE(v17) = a2; - goto LABEL_19; - } - v24 = (_BYTE *)a1[2]; - if ( (unsigned int)v24 >= a1[3] ) - { - v101 = *v93; - v17 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v16 = v101; - if ( v17 == -1 ) - a1 = 0; -LABEL_19: - if ( v16 != (_BYTE)v17 ) - goto LABEL_20; - v24 = (_BYTE *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - { -LABEL_40: - a1[2] = v24 + 1; - goto LABEL_41; - } - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_41: - a2 = -1; - ++v8; - } - else - { - if ( v16 == *v24 ) - goto LABEL_40; -LABEL_20: - v104 |= 4u; - ++v8; - } - } - } - if ( v104 || v8 != v96 ) -LABEL_32: - *a6 |= 4u; - return a1; -} -// 488668: variable 'v27' is possibly undefined -// 4887E0: variable 'v18' is possibly undefined -// 488846: variable 'v35' is possibly undefined -// 4888F9: variable 'v36' is possibly undefined -// 4889BF: variable 'v39' is possibly undefined -// 488CA7: variable 'v56' is possibly undefined -// 488CB1: variable 'v57' is possibly undefined -// 488DD7: variable 'v62' is possibly undefined -// 488ED9: variable 'v67' is possibly undefined -// 489000: variable 'v70' is possibly undefined -// 489129: variable 'Str' is possibly undefined -// 489324: variable 'v81' is possibly undefined -// 53F660: using guessed type void *std::__timepunct_cache::_S_timezones[2]; - -//----- (00489410) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - unsigned int *a5, - int a6, - unsigned int a7, - int a8, - _DWORD *a9) -{ - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // dl - char v13; // bl - unsigned int v14; // esi - unsigned int v15; // edi - char v16; // dl - char v17; // bl - unsigned int v18; // edx - unsigned int *v19; // ecx - unsigned int v20; // eax - char *v22; // eax - unsigned int v23; // eax - int v24; // edx - int v25; // ebx - int v26; // esi - char v27; // al - int v28; // ecx - unsigned int v29; // eax - int v30; // eax - void *v31; // esp - void *v32; // esp - int v33; // ebx - int v34; // eax - int v35; // eax - _DWORD *v36; // ebx - int v37; // eax - char v38; // dl - bool v39; // zf - _DWORD *v40; // eax - int v41; // eax - bool v42; // zf - _DWORD *v43; // eax - _DWORD *v44; // ebx - int v45; // eax - int v46; // eax - char v47; // dl - bool v48; // zf - _DWORD *v49; // eax - _BYTE *v50; // eax - int v51; // eax - int v52; // eax - bool v53; // zf - _DWORD *v54; // eax - _DWORD *v55; // edi - int v56; // eax - bool v57; // zf - char v58; // si - char v59; // al - _DWORD *v60; // eax - _BYTE v61[12]; // [esp+10h] [ebp-48h] BYREF - _DWORD *v62; // [esp+1Ch] [ebp-3Ch] - _DWORD *v63; // [esp+20h] [ebp-38h] - int v64; // [esp+24h] [ebp-34h] - _DWORD *v65; // [esp+28h] [ebp-30h] - bool v66; // [esp+2Eh] [ebp-2Ah] - char v67; // [esp+2Fh] [ebp-29h] - char *v68; // [esp+30h] [ebp-28h] - int *v69; // [esp+34h] [ebp-24h] - int *v70; // [esp+38h] [ebp-20h] - _DWORD *v71; // [esp+3Ch] [ebp-1Ch] - - v65 = a1; - v64 = a2; - v63 = a3; - v68 = (char *)std::use_facet>(a8 + 108); - v9 = 16 * ((8 * a7 + 27) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v70 = (int *)v61; - v12 = a2 == -1; - LOBYTE(v71) = v12 & (a1 != 0); - if ( (_BYTE)v71 ) - { - v12 = 0; - if ( v65[2] >= v65[3] ) - { - v34 = *v65; - LOBYTE(v69) = 0; - v35 = (*(int (__fastcall **)(_DWORD *))(v34 + 36))(v65); - v12 = (char)v69; - if ( v35 == -1 ) - { - v12 = (char)v71; - v65 = 0; - LOBYTE(v71) = 0; - } - } - } - v66 = a4 == -1; - v13 = v66 && a3 != 0; - if ( v13 ) - { - if ( a3[2] >= a3[3] ) - { - v51 = *a3; - LOBYTE(v69) = v12; - v52 = (*(int (__fastcall **)(_DWORD *))(v51 + 36))(a3); - v12 = (char)v69; - v53 = v52 == -1; - if ( v52 != -1 ) - v13 = 0; - v54 = 0; - if ( !v53 ) - v54 = a3; - v63 = v54; - } - else - { - v13 = 0; - } - } - else - { - v13 = v66; - } - if ( v12 == v13 ) - { - v62 = 0; - v14 = 0; - v15 = 0; - goto LABEL_6; - } - if ( (_BYTE)v71 ) - { - v50 = (_BYTE *)v65[2]; - if ( (unsigned int)v50 >= v65[3] ) - { - v55 = v65; - v56 = (*(int (__fastcall **)(_DWORD *))(*v65 + 36))(v65); - v57 = v56 == -1; - v58 = v56; - v59 = -1; - if ( !v57 ) - v59 = v58; - LOBYTE(v71) = v59; - v60 = 0; - if ( !v57 ) - v60 = v55; - v65 = v60; - } - else - { - LOBYTE(v71) = *v50; - } - } - else - { - LOBYTE(v71) = a2; - } - v14 = 2 * a7; - if ( !(2 * a7) ) - { - v62 = 0; - v15 = 0; - goto LABEL_6; - } - v69 = (int *)(2 * a7); - v24 = a6; - v25 = 0; - v15 = 0; - v26 = (int)v68; - do - { - while ( 1 ) - { - v28 = **(char **)(v24 + 4 * v25); - if ( (_BYTE)v28 == (_BYTE)v71 ) - break; - a6 = v24; - v27 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v26 + 8))(v26, v28); - v24 = a6; - if ( v27 == (_BYTE)v71 ) - break; - if ( (int *)++v25 == v69 ) - goto LABEL_50; - } - v70[v15++] = v25++; - } - while ( (int *)v25 != v69 ); -LABEL_50: - v62 = 0; - v14 = 0; - if ( v15 ) - { - v29 = v65[2]; - if ( v29 >= v65[3] ) - (*(void (__fastcall **)(_DWORD *, int))(*v65 + 40))(v65, v24); - else - v65[2] = v29 + 1; - v30 = 16 * ((4 * v15 + 27) >> 4); - v31 = alloca(v30); - v14 = 0; - v32 = alloca(v30); - v71 = (_DWORD *)v15; - v62 = v61; - v69 = (int *)v61; - v33 = (int)v70; - do - { - v69[v14] = strlen(*(const char **)(a6 + 4 * *(_DWORD *)(v33 + 4 * v14))); - ++v14; - } - while ( v71 != (_DWORD *)v14 ); - v64 = -1; - v15 = 1; - } -LABEL_6: - while ( 2 ) - { - v16 = v64 == -1; - LOBYTE(v71) = v16 & (v65 != 0); - if ( (_BYTE)v71 ) - { - if ( v65[2] >= v65[3] ) - { - v44 = v65; - v45 = *v65; - LOBYTE(v69) = v64 == -1; - v46 = (*(int (__fastcall **)(_DWORD *))(v45 + 36))(v65); - v47 = (char)v71; - v48 = v46 == -1; - if ( v46 != -1 ) - v47 = 0; - v49 = 0; - if ( !v48 ) - v49 = v44; - LOBYTE(v71) = v47; - v16 = (char)v69; - v65 = v49; - } - else - { - LOBYTE(v71) = 0; - } - } - else - { - LOBYTE(v71) = v64 == -1; - } - v17 = v66 && v63 != 0; - if ( v17 ) - { - if ( v63[2] < v63[3] ) - { - if ( !(_BYTE)v71 ) - break; - goto LABEL_11; - } - LOBYTE(v69) = v16; - v41 = (*(int (__fastcall **)(_DWORD *))(*v63 + 36))(v63); - v16 = (char)v69; - v42 = v41 == -1; - if ( v41 != -1 ) - v17 = 0; - v43 = 0; - if ( !v42 ) - v43 = v63; - v63 = v43; - } - else - { - v17 = v66; - } - if ( (_BYTE)v71 == v17 ) - break; -LABEL_11: - if ( v65 && v16 ) - { - v22 = (char *)v65[2]; - if ( (unsigned int)v22 >= v65[3] ) - { - v36 = v65; - v37 = (*(int (__fastcall **)(_DWORD *))(*v65 + 36))(v65); - v38 = -1; - v39 = v37 == -1; - if ( v37 != -1 ) - v38 = v37; - v40 = 0; - if ( !v39 ) - v40 = v36; - v67 = v38; - v65 = v40; - } - else - { - v67 = *v22; - } - } - else - { - v67 = v64; - } - if ( !v14 ) - { -LABEL_30: - *a9 |= 4u; - return v65; - } - v18 = 0; - v68 = 0; - v71 = v62; - do - { - while ( 1 ) - { - v19 = &v71[v18]; - if ( *v19 > v15 ) - break; - ++v68; - ++v18; -LABEL_17: - if ( v14 <= v18 ) - goto LABEL_21; - } - v69 = &v70[v18]; - if ( v67 == *(_BYTE *)(*(_DWORD *)(a6 + 4 * *v69) + v15) ) - { - ++v18; - goto LABEL_17; - } - *v69 = v70[--v14]; - *v19 = v71[v14]; - } - while ( v14 > v18 ); -LABEL_21: - if ( v68 != (char *)v14 ) - { - v20 = v65[2]; - if ( v20 >= v65[3] ) - (*(void (__fastcall **)(_DWORD *))(*v65 + 40))(v65); - else - v65[2] = v20 + 1; - v64 = -1; - ++v15; - continue; - } - break; - } - if ( v14 != 1 ) - { - if ( v14 == 2 && (*v62 == v15 || v62[1] == v15) ) - goto LABEL_39; - goto LABEL_30; - } - if ( *v62 != v15 ) - goto LABEL_30; -LABEL_39: - v23 = *v70; - if ( *v70 >= a7 ) - v23 = *v70 - a7; - *a5 = v23; - return v65; -} - -//----- (004898B0) -------------------------------------------------------- -_DWORD *__thiscall std::time_get>::get( - void *this, - _DWORD *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - _DWORD *a7, - _DWORD *a8, - unsigned __int8 *a9, - unsigned __int8 *a10) -{ - unsigned __int8 *v10; // edi - _DWORD *v12; // ebp - int v13; // edx - char v14; // dl - char v15; // bl - char v16; // dl - char v17; // bl - unsigned int v18; // eax - char v19; // dl - char v20; // bl - char v21; // bl - char v22; // dl - int (__stdcall *v23)(unsigned __int8, int); // eax - unsigned __int8 v24; // dl - int (__stdcall *v25)(unsigned __int8, int); // eax - int v26; // ecx - __int64 (__thiscall *v27)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int); // eax - _BYTE *v28; // eax - char v29; // dl - _BYTE *v30; // edi - _DWORD *v31; // eax - int v32; // edx - char v33; // bl - char v34; // dl - char v35; // al - unsigned __int8 *i; // edi - int j; // ebp - bool v39; // al - bool v40; // di - char v41; // dl - char v42; // bl - int v43; // eax - unsigned __int8 *v44; // eax - int v45; // edi - char v46; // al - int (__stdcall *v47)(unsigned __int8, int); // eax - int (__stdcall *v48)(unsigned __int8); // eax - __int64 v49; // kr00_8 - char *v50; // eax - int v51; // eax - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - char *v55; // eax - signed __int8 v56; // al - int v57; // eax - int v58; // eax - bool v59; // zf - _DWORD *v60; // eax - int v61; // eax - int v62; // eax - bool v63; // [esp+4Bh] [ebp-51h] - bool v65; // [esp+50h] [ebp-4Ch] - char v66; // [esp+50h] [ebp-4Ch] - _DWORD *v67; // [esp+50h] [ebp-4Ch] - char v68; // [esp+50h] [ebp-4Ch] - char v70; // [esp+54h] [ebp-48h] - bool v71; // [esp+54h] [ebp-48h] - int v72; // [esp+58h] [ebp-44h] - unsigned __int8 *v73; // [esp+58h] [ebp-44h] - char v74; // [esp+58h] [ebp-44h] - int v76; // [esp+60h] [ebp-3Ch] - unsigned __int8 v77; // [esp+60h] [ebp-3Ch] - int v78; // [esp+68h] [ebp-34h] - char v79; // [esp+7Ch] [ebp-20h] BYREF - char v80; // [esp+7Dh] [ebp-1Fh] - char v81; // [esp+7Eh] [ebp-1Eh] - char v82; // [esp+7Fh] [ebp-1Dh] - unsigned __int8 *v83; // [esp+BCh] [ebp+20h] - - v10 = a9; - v12 = std::use_facet>(a6 + 108); - *a7 = 0; - if ( a9 == a10 ) - return a2; - v63 = a5 == -1; - while ( 1 ) - { - v65 = a3 == -1; - if ( !v65 || a2 == 0 ) - { - v19 = a3 == -1; - goto LABEL_19; - } - if ( a2[2] >= a2[3] ) - { - v57 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v19 = v65 && a2 != 0; - if ( v57 != -1 ) - v19 = 0; - if ( v57 == -1 ) - a2 = 0; -LABEL_19: - v20 = v63 && a4 != 0; - if ( !v20 ) - goto LABEL_20; - goto LABEL_84; - } - v19 = 0; - v20 = v63 && a4 != 0; - if ( !v20 ) - { -LABEL_20: - v20 = a5 == -1; - goto LABEL_21; - } -LABEL_84: - if ( a4[2] >= a4[3] ) - { - v74 = v19; - v58 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v19 = v74; - v59 = v58 == -1; - if ( v58 != -1 ) - v20 = 0; - v60 = 0; - if ( !v59 ) - v60 = a4; - a4 = v60; -LABEL_21: - if ( v19 == v20 ) - goto LABEL_86; - goto LABEL_22; - } - if ( !v19 ) - { -LABEL_86: - *a7 = 6; - return a2; - } -LABEL_22: - v21 = *((_BYTE *)v12 + *v10 + 285); - v72 = *v10; - v22 = *v10; - if ( !v21 ) - { - v23 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); - if ( v23 != std::ctype::do_narrow ) - v22 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v23)(v12, v22, 0); - if ( !v22 ) - goto LABEL_3; - v21 = v22; - *((_BYTE *)v12 + v72 + 285) = v22; - } - if ( v21 == 37 ) - { - v73 = v10 + 1; - if ( a10 == v10 + 1 ) - break; - v76 = v10[1]; - v24 = v10[1]; - v66 = *((_BYTE *)v12 + v76 + 285); - if ( !v66 ) - { - v25 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); - if ( v25 != std::ctype::do_narrow ) - v24 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v25)(v12, (char)v76, 0); - if ( !v24 ) - { - v66 = 0; - v26 = 0; - v78 = 0; - goto LABEL_37; - } - v66 = v24; - *((_BYTE *)v12 + v76 + 285) = v24; - } - v24 = v66; - if ( v66 == 69 || v66 == 79 ) - { - v73 = v10 + 2; - if ( a10 == v10 + 2 ) - break; - v45 = v10[2]; - v46 = *((_BYTE *)v12 + v45 + 285); - v78 = v66; - v24 = v45; - if ( v46 ) - { - v26 = v46; - v24 = *((_BYTE *)v12 + v45 + 285); - } - else - { - v26 = (char)v45; - v47 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); - if ( v47 != std::ctype::do_narrow ) - { - v56 = ((int (__fastcall *)(_DWORD *, int, _DWORD, _DWORD))v47)(v12, v45, (char)v45, 0); - v26 = v56; - v24 = v56; - } - if ( v24 ) - *((_BYTE *)v12 + v45 + 285) = v24; - } - } - else - { - v78 = 0; - v26 = v66; - v66 = 0; - } -LABEL_37: - v77 = v24; - v27 = *(__int64 (__thiscall **)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int))(*(_DWORD *)this + 32); - if ( (char *)v27 == (char *)std::time_get>::do_get ) - { - v28 = std::use_facet>(a6 + 108); - v29 = v77; - v30 = v28; - *a7 = 0; - if ( v28[28] ) - { - v21 = v28[66]; - } - else - { - std::ctype::_M_widen_init((int)v28); - v29 = v77; - v48 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v30 + 24); - if ( v48 != std::ctype::do_widen ) - { - v21 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v48)(v30, v77, 37); - v29 = v77; - } - } - v79 = v21; - if ( v66 ) - { - v81 = v29; - v82 = 0; - v80 = v66; - } - else - { - v80 = v29; - v81 = 0; - } - v31 = std::time_get>::_M_extract_via_format( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - &v79); - a2 = v31; - v33 = v32 == -1; - a3 = v32; - v34 = v33 & (v31 != 0); - if ( v34 ) - { - v33 = 0; - if ( v31[2] >= v31[3] ) - { - v68 = v34; - if ( (*(int (__fastcall **)(_DWORD *))(*v31 + 36))(v31) == -1 ) - { - v33 = v68; - a2 = 0; - } - } - } - if ( a4 && a5 == -1 ) - { - v35 = 0; - if ( a4[2] >= a4[3] ) - v35 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4) == -1; - } - else - { - v35 = a5 == -1; - } - if ( v35 == v33 ) - *a7 |= 2u; - } - else - { - v49 = v27(this, a2, a3, a4, a5, a6, a7, a8, v26, v78); - a3 = HIDWORD(v49); - a2 = (_DWORD *)v49; - } - v10 = v73 + 1; - if ( a10 == v73 + 1 ) - return a2; - goto LABEL_16; - } -LABEL_3: - v13 = v12[6]; - if ( (*(_BYTE *)(v13 + 2 * *v10) & 0x20) != 0 ) - { - for ( i = v10 + 1; a10 != i; ++i ) - { - if ( (*(_BYTE *)(v13 + 2 * *i) & 0x20) == 0 ) - break; - } - v83 = i; - v67 = v12; - for ( j = a3; ; j = -1 ) - { - v39 = j == -1; - v40 = v39; - if ( v39 && a2 != 0 ) - { - if ( a2[2] >= a2[3] ) - { - v71 = v39 && a2 != 0; - v54 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v41 = v71; - if ( v54 != -1 ) - v41 = 0; - if ( v54 == -1 ) - a2 = 0; - } - else - { - v41 = 0; - } - } - else - { - v41 = j == -1; - } - v42 = v63 && a4 != 0; - if ( !v42 ) - break; - if ( a4[2] >= a4[3] ) - { - v70 = v41; - v51 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v41 = v70; - v52 = v51 == -1; - if ( v51 != -1 ) - v42 = 0; - v53 = 0; - if ( !v52 ) - v53 = a4; - a4 = v53; -LABEL_59: - if ( v41 == v42 ) - goto LABEL_72; - goto LABEL_60; - } - if ( !v41 ) - { -LABEL_72: - a3 = j; - v10 = v83; - v12 = v67; - goto LABEL_15; - } -LABEL_60: - if ( a2 && v40 ) - { - v44 = (unsigned __int8 *)a2[2]; - if ( (unsigned int)v44 < a2[3] ) - { - if ( (*(_BYTE *)(v67[6] + 2 * *v44) & 0x20) == 0 ) - { - a3 = -1; - v10 = v83; - v12 = v67; - goto LABEL_15; - } -LABEL_65: - a2[2] = v44 + 1; - continue; - } - v43 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - if ( v43 == -1 ) - a2 = 0; - } - else - { - LOBYTE(v43) = j; - } - if ( (*(_BYTE *)(v67[6] + 2 * (unsigned __int8)v43) & 0x20) == 0 ) - goto LABEL_72; - v44 = (unsigned __int8 *)a2[2]; - if ( (unsigned int)v44 < a2[3] ) - goto LABEL_65; - (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); - } - v42 = a5 == -1; - goto LABEL_59; - } - if ( a2 && a3 == -1 ) - { - v50 = (char *)a2[2]; - if ( (unsigned int)v50 >= a2[3] ) - { - v61 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v14 = v61; - if ( v61 == -1 ) - v14 = -1; - if ( v61 == -1 ) - a2 = 0; - } - else - { - v14 = *v50; - } - } - else - { - v14 = a3; - } - v15 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, v14); - if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, (char)*v10) != v15 ) - { - if ( a2 && a3 == -1 ) - { - v55 = (char *)a2[2]; - if ( (unsigned int)v55 >= a2[3] ) - { - v62 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v16 = v62; - if ( v62 == -1 ) - v16 = -1; - if ( v62 == -1 ) - a2 = 0; - } - else - { - v16 = *v55; - } - } - else - { - v16 = a3; - } - v17 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, v16); - if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, (char)*v10) != v17 ) - break; - } - v18 = a2[2]; - if ( v18 >= a2[3] ) - (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); - else - a2[2] = v18 + 1; - a3 = -1; - ++v10; -LABEL_15: - if ( a10 == v10 ) - return a2; -LABEL_16: - if ( *a7 ) - return a2; - } - *a7 = 4; - return a2; -} -// 48A011: conditional instruction was optimized away because eax.4==FFFFFFFF -// 489BA7: variable 'v32' is possibly undefined - -//----- (0048A140) -------------------------------------------------------- -int __thiscall std::time_get>::get( - void *this, - _DWORD *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - _DWORD *a7, - _DWORD *a8, - char a9, - char a10) -{ - _DWORD *(__stdcall *v10)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // eax - _BYTE *v11; // eax - char v12; // dl - _DWORD *v13; // esi - int v14; // edx - char v15; // dl - char v16; // al - int (__stdcall *v18)(unsigned __int8); // eax - int v19; // eax - int v20; // eax - char v21; // [esp+24h] [ebp-48h] - char v22; // [esp+28h] [ebp-44h] - _BYTE *v23; // [esp+3Ch] [ebp-30h] - char v24; // [esp+4Ch] [ebp-20h] BYREF - char v25; // [esp+4Dh] [ebp-1Fh] - char v26; // [esp+4Eh] [ebp-1Eh] - char v27; // [esp+4Fh] [ebp-1Dh] - - v10 = *(_DWORD *(__stdcall **)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); - if ( v10 != std::time_get>::do_get ) - return ((int (__thiscall *)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( - this, - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - a10); - v11 = std::use_facet>(a6 + 108); - *a7 = 0; - if ( v11[28] ) - { - v12 = v11[66]; - } - else - { - v23 = v11; - std::ctype::_M_widen_init((int)v11); - v12 = 37; - v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); - if ( v18 != std::ctype::do_widen ) - v12 = v18(37u); - } - v24 = v12; - if ( a10 ) - { - v27 = 0; - v25 = a10; - v26 = a9; - } - else - { - v26 = 0; - v25 = a9; - } - v13 = std::time_get>::_M_extract_via_format(a2, a3, a4, a5, a6, a7, a8, &v24); - v15 = v14 == -1; - v22 = v15 & (v13 != 0); - if ( v22 ) - { - v15 = 0; - if ( v13[2] >= v13[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13); - v15 = 0; - if ( v20 == -1 ) - v15 = v22; - if ( v20 == -1 ) - v13 = 0; - } - } - v16 = a5 == -1; - if ( a4 ) - { - if ( a5 == -1 ) - { - v16 = 0; - if ( a4[2] >= a4[3] ) - { - v21 = v15; - v19 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v15 = v21; - v16 = v19 == -1; - } - } - } - if ( v15 == v16 ) - *a7 |= 2u; - return (int)v13; -} -// 48A221: variable 'v14' is possibly undefined - -//----- (0048A380) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - char a8, - char a9) -{ - _BYTE *v9; // ebp - char v10; // dl - _DWORD *v11; // esi - int v12; // edx - char v13; // dl - char v14; // bp - char v15; // al - int (__stdcall *v17)(unsigned __int8); // eax - int v18; // eax - int v19; // eax - char v20; // [esp+20h] [ebp-3Ch] - char v21; // [esp+3Ch] [ebp-20h] BYREF - char v22; // [esp+3Dh] [ebp-1Fh] - char v23; // [esp+3Eh] [ebp-1Eh] - char v24; // [esp+3Fh] [ebp-1Dh] - - v9 = std::use_facet>(a5 + 108); - *a6 = 0; - if ( v9[28] ) - { - v10 = v9[66]; - } - else - { - std::ctype::_M_widen_init((int)v9); - v10 = 37; - v17 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v9 + 24); - if ( v17 != std::ctype::do_widen ) - v10 = ((int (__fastcall *)(_BYTE *, int, int))v17)(v9, 37, 37); - } - v21 = v10; - if ( a9 ) - { - v24 = 0; - v22 = a9; - v23 = a8; - } - else - { - v23 = 0; - v22 = a8; - } - v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, a7, &v21); - v13 = v12 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v13 = 0; - if ( v11[2] >= v11[3] ) - { - v19 = (*(int (__fastcall **)(_DWORD *))(*v11 + 36))(v11); - v13 = 0; - if ( v19 == -1 ) - { - v13 = v14; - v11 = 0; - } - } - } - v15 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v15 = 0; - if ( a3[2] >= a3[3] ) - { - v20 = v13; - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v13 = v20; - v15 = v18 == -1; - } - } - } - if ( v13 == v15 ) - *a6 |= 2u; - return v11; -} -// 48A529: conditional instruction was optimized away because eax.4==FFFFFFFF -// 48A43D: variable 'v12' is possibly undefined - -//----- (0048A540) -------------------------------------------------------- -int __fastcall std::time_get>::get_date(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); -} - -//----- (0048A550) -------------------------------------------------------- -int __fastcall std::time_get>::get_time(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); -} - -//----- (0048A560) -------------------------------------------------------- -int __fastcall std::time_get>::get_year(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); -} - -//----- (0048A570) -------------------------------------------------------- -int __fastcall std::time_get>::date_order(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); - if ( v1 == std::time_get>::do_date_order ) - return 0; - else - return v1(); -} - -//----- (0048A590) -------------------------------------------------------- -int *__stdcall std::time_get>::do_get_date( - int *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _DWORD *v7; // eax - int *v8; // ecx - int *v9; // ebp - __int16 v10; // dx - _BOOL2 v11; // bx - bool v12; // cl - __int16 *v14; // eax - __int16 v15; // ax - bool v16; // si - __int16 *v17; // eax - __int16 v18; // ax - int *v19; // [esp+30h] [ebp-2Ch] - - v7 = std::use_facet>(a5 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - *(wchar_t **)(v7[2] + 8)); - v9 = v8; - v11 = v10 == -1; - if ( v11 && v8 != 0 ) - { - v16 = v11 && v8 != 0; - v17 = (__int16 *)v8[2]; - if ( (unsigned int)v17 >= v8[3] ) - { - v19 = v8; - v18 = (*(int (**)(void))(*v8 + 36))(); - v8 = v19; - } - else - { - v18 = *v17; - } - LOBYTE(v11) = 0; - v9 = 0; - if ( v18 == -1 ) - LOBYTE(v11) = v16; - if ( v18 != -1 ) - v9 = v8; - } - v12 = (_WORD)a4 == 0xFFFF; - if ( a3 && (_WORD)a4 == 0xFFFF ) - { - v14 = (__int16 *)a3[2]; - if ( (unsigned int)v14 >= a3[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v15 = *v14; - v12 = v15 == -1; - } - if ( v11 == v12 ) - *a6 |= 2u; - return v9; -} -// 48A60F: variable 'v10' is possibly undefined - -//----- (0048A6C0) -------------------------------------------------------- -int *__stdcall std::time_get>::do_get_time( - int *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _DWORD *v7; // eax - int *v8; // ecx - int *v9; // ebp - __int16 v10; // dx - _BOOL2 v11; // bx - bool v12; // cl - __int16 *v14; // eax - __int16 v15; // ax - bool v16; // si - __int16 *v17; // eax - __int16 v18; // ax - int *v19; // [esp+30h] [ebp-2Ch] - - v7 = std::use_facet>(a5 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - *(wchar_t **)(v7[2] + 16)); - v9 = v8; - v11 = v10 == -1; - if ( v11 && v8 != 0 ) - { - v16 = v11 && v8 != 0; - v17 = (__int16 *)v8[2]; - if ( (unsigned int)v17 >= v8[3] ) - { - v19 = v8; - v18 = (*(int (**)(void))(*v8 + 36))(); - v8 = v19; - } - else - { - v18 = *v17; - } - LOBYTE(v11) = 0; - v9 = 0; - if ( v18 == -1 ) - LOBYTE(v11) = v16; - if ( v18 != -1 ) - v9 = v8; - } - v12 = (_WORD)a4 == 0xFFFF; - if ( a3 && (_WORD)a4 == 0xFFFF ) - { - v14 = (__int16 *)a3[2]; - if ( (unsigned int)v14 >= a3[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v15 = *v14; - v12 = v15 == -1; - } - if ( v11 == v12 ) - *a6 |= 2u; - return v9; -} -// 48A73F: variable 'v10' is possibly undefined - -//----- (0048A7F0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_year( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - __int16 v7; // dx - _DWORD *v8; // ecx - _DWORD *v9; // ebp - int v10; // ebx - char v11; // bl - char v12; // cl - __int16 *v14; // eax - __int16 v15; // ax - __int16 *v16; // eax - __int16 v17; // ax - bool v18; // zf - _DWORD *v19; // eax - char v20; // [esp+40h] [ebp-3Ch] - _DWORD *v21; // [esp+44h] [ebp-38h] - int v22; // [esp+58h] [ebp-24h] BYREF - int v23[8]; // [esp+5Ch] [ebp-20h] BYREF - - v23[0] = 0; - v8 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v22, - 0, - 9999, - 4u, - a5, - v23); - v9 = v8; - if ( v23[0] ) - { - *a6 |= 4u; - } - else - { - v10 = v22 + 100; - if ( v22 >= 0 ) - v10 = v22 - 1900; - *(_DWORD *)(a7 + 20) = v10; - } - v11 = v7 == -1; - v20 = v11 & (v8 != 0); - if ( v20 ) - { - v16 = (__int16 *)v8[2]; - if ( (unsigned int)v16 >= v8[3] ) - { - v21 = v8; - v17 = (*(int (**)(void))(*v8 + 36))(); - v8 = v21; - } - else - { - v17 = *v16; - } - v18 = v17 == -1; - v11 = 0; - if ( v17 == -1 ) - v11 = v20; - v19 = 0; - if ( !v18 ) - v19 = v8; - v9 = v19; - } - v12 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v14 = (__int16 *)a3[2]; - if ( (unsigned int)v14 >= a3[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v15 = *v14; - v12 = v15 == -1; - } - if ( v12 == v11 ) - *a6 |= 2u; - return v9; -} -// 48A8AD: variable 'v7' is possibly undefined -// 48A7F0: using guessed type int var_20[8]; - -//----- (0048A960) -------------------------------------------------------- -int __fastcall std::time_get>::get_weekday(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); -} - -//----- (0048A970) -------------------------------------------------------- -int std::time_get>::do_date_order() -{ - return 0; -} - -//----- (0048A980) -------------------------------------------------------- -int __fastcall std::time_get>::get_monthname(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); -} - -//----- (0048A990) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_num( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int *a5, - signed int a6, - int a7, - unsigned int a8, - int a9, - _DWORD *a10) -{ - unsigned int v10; // ebp - int v12; // eax - int v13; // edi - char v14; // dl - char v15; // bl - int v16; // edx - unsigned __int8 v17; // al - unsigned int v18; // eax - __int16 *v19; // eax - __int16 v20; // ax - __int16 *v21; // eax - __int16 v22; // ax - bool v23; // zf - _DWORD *v24; // eax - unsigned __int16 *v26; // eax - bool v27; // [esp+1Bh] [ebp-31h] - unsigned int v28; // [esp+1Ch] [ebp-30h] - void *v30; // [esp+24h] [ebp-28h] - char v32; // [esp+2Eh] [ebp-1Eh] - char v33; // [esp+2Fh] [ebp-1Dh] - - v10 = 10; - v30 = std::use_facet>(a9 + 108); - if ( a8 != 2 ) - { - v12 = 1; - if ( a8 == 4 ) - v12 = 1000; - v10 = v12; - } - v28 = 0; - v32 = a4 == -1; - v13 = 0; - while ( 1 ) - { - v27 = a2 == 0xFFFF; - v14 = v27 && a1 != 0; - if ( v14 ) - break; - v14 = a2 == 0xFFFF; - v15 = v32 & (a3 != 0); - if ( v15 ) - goto LABEL_26; -LABEL_7: - if ( v14 == v32 ) - goto LABEL_33; -LABEL_8: - if ( v28 >= a8 ) - goto LABEL_33; - if ( a1 && a2 == 0xFFFF ) - { - v26 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v26 >= a1[3] ) - v16 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v16 = *v26; - if ( (_WORD)v16 == 0xFFFF ) - a1 = 0; - } - else - { - v16 = a2; - } - v17 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v30 + 48))(v30, v16, 42) - 48; - if ( v17 > 9u ) - goto LABEL_34; - v13 = (char)v17 + 10 * v13; - if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) - goto LABEL_34; - v18 = a1[2]; - v10 /= 0xAu; - if ( v18 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v18 + 2; - ++v28; - a2 = -1; - } - v19 = (__int16 *)a1[2]; - if ( (unsigned int)v19 >= a1[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v14 = v27 && a1 != 0; - } - else - { - v20 = *v19; - } - if ( v20 == -1 ) - a1 = 0; - if ( v20 != -1 ) - v14 = 0; - v15 = v32 & (a3 != 0); - if ( !v15 ) - goto LABEL_7; -LABEL_26: - v21 = (__int16 *)a3[2]; - if ( (unsigned int)v21 >= a3[3] ) - { - v33 = v14; - v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v14 = v33; - } - else - { - v22 = *v21; - } - v23 = v22 == -1; - v24 = 0; - if ( !v23 ) - v24 = a3; - a3 = v24; - if ( !v23 ) - v15 = 0; - if ( v14 != v15 ) - goto LABEL_8; -LABEL_33: - if ( v28 == a8 ) - { -LABEL_37: - *a5 = v13; - return a1; - } -LABEL_34: - if ( a8 == 4 && v28 == 2 ) - { - v13 -= 100; - goto LABEL_37; - } - *a10 |= 4u; - return a1; -} - -//----- (0048AC10) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_weekday( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // ecx - int v9; // eax - __int16 v10; // dx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // bl - char v14; // si - char v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - _DWORD *v21; // [esp+40h] [ebp-6Ch] - unsigned int v22; // [esp+50h] [ebp-5Ch] BYREF - int v23; // [esp+54h] [ebp-58h] BYREF - int v24[21]; // [esp+58h] [ebp-54h] BYREF - - v23 = 0; - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v24[0] = v7[18]; - v24[1] = v7[19]; - v24[2] = v7[20]; - v24[3] = v7[21]; - v24[4] = v7[22]; - v24[5] = v7[23]; - v24[6] = v7[24]; - v24[7] = v7[11]; - v24[8] = v7[12]; - v24[9] = v7[13]; - v24[10] = v7[14]; - v24[11] = v7[15]; - v8 = v7[16]; - v9 = v7[17]; - v24[12] = v8; - v24[13] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v22, - (int)v24, - 7u, - a5, - &v23); - v12 = v11; - if ( v23 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 24) = v22; - v13 = v10 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v19 = (__int16 *)v11[2]; - if ( (unsigned int)v19 >= v11[3] ) - { - v21 = v11; - v20 = (*(int (**)(void))(*v11 + 36))(); - v11 = v21; - } - else - { - v20 = *v19; - } - v13 = 0; - v12 = 0; - if ( v20 == -1 ) - v13 = v14; - if ( v20 != -1 ) - v12 = v11; - } - v15 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v12; -} -// 48AD3D: variable 'v10' is possibly undefined - -//----- (0048AE00) -------------------------------------------------------- -int __stdcall std::time_get>::_M_extract_name( - int *a1, - int a2, - _DWORD *a3, - int a4, - int **a5, - int a6, - int a7, - int a8, - _DWORD *a9) -{ - void *v9; // edi - int v10; // eax - void *v11; // esp - void *v12; // esp - int *v13; // edx - char v14; // bl - int v15; // eax - int v17; // ebx - int v18; // edx - size_t v19; // esi - __int16 v20; // ax - int v21; // ecx - int *v22; // edx - int *v23; // ebx - int *v24; // edi - size_t v25; // eax - unsigned int v26; // ebx - unsigned int v27; // esi - size_t v28; // eax - unsigned int v29; // edi - unsigned int v30; // eax - __int16 *v31; // eax - __int16 v32; // ax - bool v33; // zf - int v34; // eax - char v35; // di - char v36; // dl - int *v37; // ecx - size_t v38; // edi - int i; // eax - __int16 v40; // ax - __int16 *v41; // eax - unsigned int v42; // eax - int v43; // ebx - const wchar_t *v44; // edi - unsigned int v45; // ebx - int *v46; // esi - unsigned int v47; // eax - __int16 *v48; // eax - __int16 v49; // ax - char v50; // di - char v51; // dl - wchar_t v52; // di - __int16 v53; // ax - _WORD *v54; // eax - __int16 *v55; // eax - __int16 v56; // ax - bool v57; // zf - _DWORD *v58; // eax - int v59; // eax - __int16 *v60; // eax - __int16 v61; // ax - bool v62; // zf - int v63; // eax - char v64; // cl - __int16 *v65; // eax - __int16 v66; // ax - bool v67; // zf - _DWORD *v68; // eax - _WORD *v69; // eax - int v70; // eax - int v71; // eax - int v72; // eax - __int16 v73; // ax - __int16 *v74; // eax - __int16 v75; // ax - bool v76; // zf - _DWORD *v77; // eax - int v78; // [esp+10h] [ebp-38h] BYREF - _DWORD *v79; // [esp+14h] [ebp-34h] - bool v80; // [esp+1Bh] [ebp-2Dh] - int *v81; // [esp+1Ch] [ebp-2Ch] - int *v82; // [esp+20h] [ebp-28h] - int *v83; // [esp+24h] [ebp-24h] - const wchar_t *v84; // [esp+28h] [ebp-20h] - size_t v85; // [esp+2Ch] [ebp-1Ch] - - v81 = (int *)a4; - v78 = a2; - LOWORD(v84) = a2; - v82 = a1; - v79 = a3; - v9 = std::use_facet>(a8 + 108); - v10 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); - v11 = alloca(v10); - v12 = alloca(v10); - v13 = &v78; - LOBYTE(v85) = (_WORD)a2 == 0xFFFF; - LOBYTE(v83) = v85 & (a1 != 0); - if ( (_BYTE)v83 ) - { - v60 = (__int16 *)a1[2]; - if ( (unsigned int)v60 >= a1[3] ) - { - v72 = *a1; - v82 = &v78; - v61 = (*(int (__fastcall **)(int *))(v72 + 36))(a1); - v13 = v82; - } - else - { - v61 = *v60; - } - v62 = v61 == -1; - v63 = 0; - v64 = (char)v83; - if ( !v62 ) - v63 = (int)a1; - v82 = (int *)v63; - if ( !v62 ) - v64 = 0; - LOBYTE(v83) = v64; - } - else - { - LOBYTE(v83) = v85; - } - v80 = (_WORD)v81 == 0xFFFF; - v14 = v80 && a3 != 0; - if ( v14 ) - { - v65 = (__int16 *)a3[2]; - if ( (unsigned int)v65 >= a3[3] ) - { - v71 = *a3; - v81 = v13; - v66 = (*(int (__fastcall **)(_DWORD *))(v71 + 36))(a3); - v13 = v81; - } - else - { - v66 = *v65; - } - v67 = v66 == -1; - v68 = 0; - if ( !v67 ) - v68 = a3; - v79 = v68; - if ( !v67 ) - v14 = 0; - } - else - { - v14 = v80; - } - if ( v14 == (_BYTE)v83 ) - goto LABEL_6; - if ( v82 && (_BYTE)v85 ) - { - v69 = (_WORD *)v82[2]; - if ( (unsigned int)v69 >= v82[3] ) - { - v83 = v13; - v73 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); - v13 = v83; - LOWORD(v85) = v73; - } - else - { - LOWORD(v85) = *v69; - } - v70 = 0; - if ( (_WORD)v85 != 0xFFFF ) - v70 = (int)v82; - v82 = (int *)v70; - } - else - { - LOWORD(v85) = (_WORD)v84; - } - if ( !a7 ) - goto LABEL_6; - v83 = v13; - v17 = 0; - v18 = a6; - v19 = 0; - do - { - while ( 1 ) - { - v21 = **(unsigned __int16 **)(v18 + 4 * v17); - if ( (_WORD)v21 == (_WORD)v85 ) - break; - a6 = v18; - v20 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v21); - v18 = a6; - if ( v20 == (_WORD)v85 ) - break; - if ( a7 == ++v17 ) - goto LABEL_17; - } - v83[v19++] = v17++; - } - while ( a7 != v17 ); -LABEL_17: - v22 = v83; - v83 = 0; - if ( v19 <= 1 ) - goto LABEL_44; - v23 = v22; - do - { - v24 = v23; - v81 = (int *)*v23; - v25 = wcslen(*(const wchar_t **)(a6 + 4 * (_DWORD)v81)); - v85 = v19; - v26 = 1; - v27 = v25; - do - { - v28 = wcslen(*(const wchar_t **)(a6 + 4 * v24[v26])); - if ( v27 > v28 ) - v27 = v28; - ++v26; - } - while ( v26 < v85 ); - v23 = v24; - v29 = v27; - v19 = v85; - v30 = v82[2]; - if ( v30 >= v82[3] ) - (*(void (__fastcall **)(int *))(*v82 + 40))(v82); - else - v82[2] = v30 + 2; - v83 = (int *)((char *)v83 + 1); - if ( (unsigned int)v83 >= v29 ) - goto LABEL_73; - v31 = (__int16 *)v82[2]; - if ( (unsigned int)v31 >= v82[3] ) - v32 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); - else - v32 = *v31; - v33 = v32 == -1; - v34 = 0; - if ( !v33 ) - v34 = (int)v82; - v82 = (int *)v34; - v35 = v33; - v36 = v80 && v79 != 0; - if ( v36 ) - { - v55 = (__int16 *)v79[2]; - if ( (unsigned int)v55 >= v79[3] ) - { - LOBYTE(v85) = v80 && v79 != 0; - v56 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); - v36 = v85; - } - else - { - v56 = *v55; - } - v57 = v56 == -1; - v58 = 0; - if ( !v57 ) - v58 = v79; - v79 = v58; - if ( !v57 ) - v36 = 0; - if ( v35 == v36 ) - goto LABEL_73; - } - else if ( v33 == v80 ) - { - goto LABEL_73; - } - v37 = v82; - v38 = 0; - v84 = (const wchar_t *)(2 * (_DWORD)v83); - for ( i = (int)v81; ; i = v23[v38] ) - { - LOWORD(v85) = *(const wchar_t *)((char *)v84 + *(_DWORD *)(a6 + 4 * i)); - v40 = -1; - if ( v37 ) - { - v41 = (__int16 *)v37[2]; - if ( (unsigned int)v41 >= v37[3] ) - { - v59 = *v37; - v82 = v37; - v40 = (*(int (**)(void))(v59 + 36))(); - v37 = v82; - } - else - { - v40 = *v41; - } - if ( v40 == -1 ) - v37 = 0; - } - if ( (_WORD)v85 == v40 ) - break; - v23[v38] = v23[--v19]; - if ( v19 <= v38 ) - goto LABEL_42; -LABEL_34: - ; - } - if ( v19 > ++v38 ) - goto LABEL_34; -LABEL_42: - v82 = v37; - } - while ( v19 > 1 ); - LOWORD(v84) = -1; - v22 = v23; -LABEL_44: - if ( v19 == 1 ) - { - v42 = v82[2]; - if ( v42 >= v82[3] ) - { - v85 = (size_t)v22; - (*(void (__fastcall **)(int *))(*v82 + 40))(v82); - v22 = (int *)v85; - } - else - { - v82[2] = v42 + 2; - } - v43 = (int)v83; - v44 = *(const wchar_t **)(a6 + 4 * *v22); - v83 = (int *)*v22; - v45 = v43 + 1; - v85 = wcslen(v44); - if ( v45 < v85 ) - { - v84 = v44; - v46 = v82; - do - { - v48 = (__int16 *)v46[2]; - if ( (unsigned int)v48 >= v46[3] ) - v49 = (*(int (__fastcall **)(int *))(*v46 + 36))(v46); - else - v49 = *v48; - v50 = v49 == -1; - if ( v49 == -1 ) - v46 = 0; - v51 = v80 && v79 != 0; - if ( v51 ) - { - v74 = (__int16 *)v79[2]; - if ( (unsigned int)v74 >= v79[3] ) - { - LOBYTE(v82) = v80 && v79 != 0; - v75 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); - v51 = (char)v82; - } - else - { - v75 = *v74; - } - v76 = v75 == -1; - v77 = 0; - if ( !v76 ) - v77 = v79; - v79 = v77; - if ( !v76 ) - v51 = 0; - } - else - { - v51 = v80; - } - if ( v51 == v50 ) - goto LABEL_108; - v52 = v84[v45]; - v53 = -1; - if ( v46 ) - { - v54 = (_WORD *)v46[2]; - v53 = (unsigned int)v54 >= v46[3] ? (*(int (__fastcall **)(int *))(*v46 + 36))(v46) : *v54; - if ( v53 == -1 ) - v46 = 0; - } - if ( v52 != v53 ) - { -LABEL_108: - v82 = v46; - LOWORD(v84) = -1; - goto LABEL_6; - } - v47 = v46[2]; - if ( v47 >= v46[3] ) - (*(void (__fastcall **)(int *))(*v46 + 40))(v46); - else - v46[2] = v47 + 2; - ++v45; - } - while ( v45 < v85 ); - v82 = v46; - } - if ( v85 == v45 ) - { - *a5 = v83; - LOWORD(v84) = -1; - goto LABEL_7; - } -LABEL_73: - LOWORD(v84) = -1; - } -LABEL_6: - *a9 |= 4u; -LABEL_7: - HIWORD(v15) = HIWORD(v78); - LOWORD(v15) = (_WORD)v84; - v78 = v15; - return (int)v82; -} - -//----- (0048B350) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_monthname( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // ecx - int v9; // ecx - __int16 v10; // dx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // bl - char v14; // si - char v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - _DWORD *v21; // [esp+40h] [ebp-9Ch] - unsigned int v22; // [esp+58h] [ebp-84h] BYREF - int v23; // [esp+5Ch] [ebp-80h] BYREF - int v24[31]; // [esp+60h] [ebp-7Ch] BYREF - - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v24[0] = v7[37]; - v24[1] = v7[38]; - v24[2] = v7[39]; - v24[3] = v7[40]; - v24[4] = v7[41]; - v24[5] = v7[42]; - v24[6] = v7[43]; - v24[7] = v7[44]; - v24[8] = v7[45]; - v24[9] = v7[46]; - v24[10] = v7[47]; - v24[11] = v7[48]; - v24[12] = v7[25]; - v24[13] = v7[26]; - v24[14] = v7[27]; - v24[15] = v7[28]; - v8 = v7[29]; - v23 = 0; - v24[16] = v8; - v24[17] = v7[30]; - v24[18] = v7[31]; - v24[19] = v7[32]; - v24[20] = v7[33]; - v24[21] = v7[34]; - v9 = v7[35]; - v24[23] = v7[36]; - v24[22] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v22, - (int)v24, - 0xCu, - a5, - &v23); - v12 = v11; - if ( v23 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 16) = v22; - v13 = v10 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v19 = (__int16 *)v11[2]; - if ( (unsigned int)v19 >= v11[3] ) - { - v21 = v11; - v20 = (*(int (**)(void))(*v11 + 36))(); - v11 = v21; - } - else - { - v20 = *v19; - } - v13 = 0; - v12 = 0; - if ( v20 == -1 ) - v13 = v14; - if ( v20 != -1 ) - v12 = v11; - } - v15 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v12; -} -// 48B51A: variable 'v10' is possibly undefined - -//----- (0048B5E0) -------------------------------------------------------- -int *__stdcall std::time_get>::_M_extract_via_format( - int *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - wchar_t *String) -{ - int v8; // ebp - void *v9; // esi - size_t v10; // edi - char v11; // dl - char v12; // bl - size_t v13; // ebx - char v14; // al - unsigned __int8 v15; // al - wchar_t v16; // bx - unsigned __int16 v17; // ax - __int16 *v19; // eax - __int16 v20; // ax - bool v21; // zf - int *v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - bool v25; // zf - _DWORD *v26; // eax - unsigned int v27; // eax - unsigned __int16 *v28; // eax - int *v29; // edi - unsigned __int16 v30; // dx - int *v31; // eax - _DWORD *v32; // eax - int *v33; // eax - unsigned __int16 v34; // dx - _DWORD *v35; // eax - int *v36; // eax - unsigned __int16 v37; // dx - unsigned __int16 v38; // dx - int *v39; // eax - unsigned __int16 v40; // dx - unsigned __int16 v41; // dx - unsigned __int16 v42; // dx - unsigned __int16 v43; // dx - unsigned __int16 v44; // ax - int *v45; // eax - unsigned __int16 v46; // dx - unsigned __int16 v47; // di - char v48; // dl - char v49; // bl - unsigned __int16 v50; // bx - _DWORD *v51; // eax - unsigned __int16 v52; // dx - unsigned __int16 v53; // dx - int *v54; // eax - unsigned __int16 v55; // dx - int *v56; // eax - unsigned __int16 v57; // dx - unsigned __int16 v58; // dx - _DWORD *v59; // eax - _DWORD *v60; // eax - unsigned __int16 v61; // dx - unsigned __int16 v62; // ax - unsigned int v63; // eax - unsigned __int16 v64; // dx - unsigned __int16 v65; // dx - unsigned __int16 v66; // ax - unsigned int v67; // eax - unsigned __int16 v68; // ax - unsigned __int16 v69; // dx - unsigned __int16 *v70; // eax - int *v71; // edi - unsigned __int16 *v72; // eax - int *v73; // edi - unsigned __int16 *v74; // eax - int *v75; // edi - unsigned __int16 *v76; // eax - int *v77; // edi - __int16 *v78; // eax - __int16 v79; // ax - bool v80; // zf - _DWORD *v81; // eax - _WORD *v82; // edx - __int16 v83; // ax - unsigned __int16 *v84; // eax - int *v85; // eax - unsigned __int16 *v86; // eax - int *v87; // eax - bool v88; // [esp+5Fh] [ebp-12Dh] - bool v89; // [esp+5Fh] [ebp-12Dh] - size_t v92; // [esp+68h] [ebp-124h] - char v93; // [esp+68h] [ebp-124h] - size_t v94; // [esp+6Ch] [ebp-120h] - bool v95; // [esp+70h] [ebp-11Ch] - _DWORD *v96; // [esp+7Ch] [ebp-110h] - unsigned __int16 v97; // [esp+80h] [ebp-10Ch] - unsigned __int16 v98; // [esp+84h] [ebp-108h] - bool v99; // [esp+86h] [ebp-106h] - char v100; // [esp+87h] [ebp-105h] - int v101; // [esp+138h] [ebp-54h] BYREF - int *v102; // [esp+13Ch] [ebp-50h] BYREF - wchar_t v103[2]; // [esp+140h] [ebp-4Ch] BYREF - int v104; // [esp+144h] [ebp-48h] - int v105; // [esp+148h] [ebp-44h] - int v106; // [esp+14Ch] [ebp-40h] - int v107; // [esp+150h] [ebp-3Ch] - int v108; // [esp+154h] [ebp-38h] - int v109; // [esp+158h] [ebp-34h] - int v110; // [esp+15Ch] [ebp-30h] - int v111; // [esp+160h] [ebp-2Ch] - int v112; // [esp+164h] [ebp-28h] - int v113; // [esp+168h] [ebp-24h] - int v114; // [esp+16Ch] [ebp-20h] - - HIWORD(v8) = HIWORD(a2); - v98 = a2; - v96 = std::use_facet>(a5 + 108); - v9 = std::use_facet>(a5 + 108); - v101 = 0; - v94 = wcslen(String); - v99 = (_WORD)a4 == 0xFFFF; - v10 = 0; - while ( 1 ) - { - v88 = v98 == 0xFFFF; - v11 = v88 && a1 != 0; - if ( v11 ) - { - v19 = (__int16 *)a1[2]; - if ( (unsigned int)v19 >= a1[3] ) - { - v20 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - v11 = v88 && a1 != 0; - } - else - { - v20 = *v19; - } - v21 = v20 == -1; - v22 = 0; - if ( !v21 ) - v22 = a1; - a1 = v22; - if ( !v21 ) - v11 = 0; - v12 = v99 && a3 != 0; - if ( !v12 ) - { -LABEL_4: - v12 = (_WORD)a4 == 0xFFFF; - goto LABEL_5; - } - } - else - { - v11 = v98 == 0xFFFF; - v12 = v99 && a3 != 0; - if ( !v12 ) - goto LABEL_4; - } - v23 = (__int16 *)a3[2]; - if ( (unsigned int)v23 >= a3[3] ) - { - v93 = v11; - v24 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v11 = v93; - } - else - { - v24 = *v23; - } - v25 = v24 == -1; - v26 = 0; - if ( !v25 ) - v26 = a3; - a3 = v26; - if ( !v25 ) - v12 = 0; -LABEL_5: - if ( v11 == v12 || v10 >= v94 ) - break; - if ( v101 ) - goto LABEL_22; - v13 = v10; - v92 = v10 + 1; - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v10], 0) == 37 ) - { - v14 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v13 + 1], 0); - v102 = 0; - if ( v14 == 69 || v14 == 79 ) - { - v92 = v10 + 2; - v15 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v13 + 2], 0) - 65; - if ( v15 > 0x38u ) - { -LABEL_19: - v101 |= 4u; - goto LABEL_20; - } - } - else - { - v15 = v14 - 65; - } - switch ( v15 ) - { - case 0u: - LOWORD(v8) = v98; - v59 = (_DWORD *)v96[2]; - *(_DWORD *)v103 = v59[11]; - v104 = v59[12]; - v105 = v59[13]; - v106 = v59[14]; - v107 = v59[15]; - v108 = v59[16]; - v109 = v59[17]; - v36 = (int *)std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - &v102, - (int)v103, - 7, - a5, - &v101); - goto LABEL_56; - case 1u: - LOWORD(v8) = v98; - v60 = (_DWORD *)v96[2]; - *(_DWORD *)v103 = v60[25]; - v104 = v60[26]; - v105 = v60[27]; - v106 = v60[28]; - v107 = v60[29]; - v108 = v60[30]; - v109 = v60[31]; - v110 = v60[32]; - v111 = v60[33]; - v112 = v60[34]; - v113 = v60[35]; - v114 = v60[36]; - v33 = (int *)std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - &v102, - (int)v103, - 12, - a5, - &v101); - goto LABEL_53; - case 2u: - case 0x18u: - case 0x38u: - a1 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 0, - 9999, - 4u, - a5, - &v101); - v98 = v30; - if ( !v101 ) - { - v31 = v102 - 475; - if ( (int)v102 < 0 ) - v31 = v102 + 25; - a7[5] = v31; - } - break; - case 3u: - (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( - v9, - "%m/%d/%y", - "%H:%M", - v103); - LOWORD(v8) = v98; - a1 = (int *)std::time_get>::_M_extract_via_format( - (int)a1, - v8, - (int)a3, - a4, - a5, - (int)&v101, - (int)a7, - v103); - v98 = v61; - break; - case 7u: - v54 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 0, - 23, - 2u, - a5, - &v101); - goto LABEL_83; - case 8u: - v54 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 1, - 12, - 2u, - a5, - &v101); -LABEL_83: - a1 = v54; - v98 = v55; - if ( !v101 ) - a7[2] = v102; - break; - case 0xCu: - v56 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 0, - 59, - 2u, - a5, - &v101); - v98 = v57; - a1 = v56; - if ( !v101 ) - a7[1] = v102; - break; - case 0x11u: - (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( - v9, - "%H:%M", - "%H:%M:%S", - v103); - LOWORD(v8) = v98; - a1 = (int *)std::time_get>::_M_extract_via_format( - (int)a1, - v8, - (int)a3, - a4, - a5, - (int)&v101, - (int)a7, - v103); - v98 = v58; - break; - case 0x12u: - a1 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 0, - 60, - 2u, - a5, - &v101); - v98 = v41; - if ( !v101 ) - *a7 = v102; - break; - case 0x13u: - (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v9 + 44))( - v9, - "%H:%M:%S", - &unk_5576EE, - v103); - LOWORD(v8) = v98; - a1 = (int *)std::time_get>::_M_extract_via_format( - (int)a1, - v8, - (int)a3, - a4, - a5, - (int)&v101, - (int)a7, - v103); - v98 = v42; - break; - case 0x17u: - LOWORD(v8) = v98; - a1 = (int *)std::time_get>::_M_extract_via_format( - (int)a1, - v8, - (int)a3, - a4, - a5, - (int)&v101, - (int)a7, - *(wchar_t **)(v96[2] + 16)); - v98 = v43; - break; - case 0x19u: - if ( a1 && v98 == 0xFFFF ) - { - v76 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v76 >= a1[3] ) - v44 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v44 = *v76; - v77 = 0; - if ( v44 != 0xFFFF ) - v77 = a1; - a1 = v77; - } - else - { - v44 = v98; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 8))(v9, 1, v44) ) - goto LABEL_19; - LOWORD(v8) = v98; - v45 = (int *)std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - (int **)v103, - (int)std::__timepunct_cache::_S_timezones, - 14, - a5, - &v101); - v47 = v46; - v89 = v46 == 0xFFFF; - v97 = v46; - a1 = v45; - v48 = v89; - v98 = v47; - v95 = v89 && v45 != 0; - if ( v95 ) - { - v82 = (_WORD *)v45[2]; - v83 = (unsigned int)v82 >= v45[3] ? (*(int (__fastcall **)(int *))(*v45 + 36))(v45) : *v82; - v48 = 0; - if ( v83 == -1 ) - { - v48 = v95; - a1 = 0; - v95 = 0; - } - } - v49 = v99 && a3 != 0; - if ( v49 ) - { - v78 = (__int16 *)a3[2]; - if ( (unsigned int)v78 >= a3[3] ) - { - v100 = v48; - v79 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v48 = v100; - } - else - { - v79 = *v78; - } - v80 = v79 == -1; - v81 = 0; - if ( !v80 ) - v81 = a3; - a3 = v81; - if ( !v80 ) - v49 = 0; - } - else - { - v49 = (_WORD)a4 == 0xFFFF; - } - if ( v48 != v49 && !(*(_DWORD *)v103 | v101) ) - { - v50 = v47; - if ( v95 ) - { - v84 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v84 >= a1[3] ) - v50 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v50 = *v84; - v85 = 0; - if ( v50 != 0xFFFF ) - v85 = a1; - a1 = v85; - } - if ( (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 45) == v50 ) - goto LABEL_81; - if ( a1 && v89 ) - { - v86 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v86 >= a1[3] ) - v47 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v47 = *v86; - v87 = 0; - if ( v47 != 0xFFFF ) - v87 = a1; - a1 = v87; - } - if ( (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 43) == v47 ) - { -LABEL_81: - v51 = std::time_get>::_M_extract_num( - a1, - v97, - a3, - a4, - (int *)v103, - 0, - 23, - 2u, - a5, - &v101); - a1 = std::time_get>::_M_extract_num( - v51, - v52, - a3, - a4, - (int *)v103, - 0, - 59, - 2u, - a5, - &v101); - v98 = v53; - } - } - break; - case 0x20u: - LOWORD(v8) = v98; - v35 = (_DWORD *)v96[2]; - *(_DWORD *)v103 = v35[18]; - v104 = v35[19]; - v105 = v35[20]; - v106 = v35[21]; - v107 = v35[22]; - v108 = v35[23]; - v109 = v35[24]; - v36 = (int *)std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - &v102, - (int)v103, - 7, - a5, - &v101); -LABEL_56: - a1 = v36; - v98 = v37; - if ( !v101 ) - a7[6] = v102; - break; - case 0x21u: - case 0x27u: - LOWORD(v8) = v98; - v32 = (_DWORD *)v96[2]; - *(_DWORD *)v103 = v32[37]; - v104 = v32[38]; - v105 = v32[39]; - v106 = v32[40]; - v107 = v32[41]; - v108 = v32[42]; - v109 = v32[43]; - v110 = v32[44]; - v111 = v32[45]; - v112 = v32[46]; - v113 = v32[47]; - v114 = v32[48]; - v33 = (int *)std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - &v102, - (int)v103, - 12, - a5, - &v101); -LABEL_53: - a1 = v33; - v98 = v34; - if ( !v101 ) - a7[4] = v102; - break; - case 0x22u: - LOWORD(v8) = v98; - a1 = (int *)std::time_get>::_M_extract_via_format( - (int)a1, - v8, - (int)a3, - a4, - a5, - (int)&v101, - (int)a7, - *(wchar_t **)(v96[2] + 24)); - v98 = v38; - break; - case 0x23u: - v39 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 1, - 31, - 2u, - a5, - &v101); - goto LABEL_60; - case 0x24u: - if ( a1 && v98 == 0xFFFF ) - { - v74 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v74 >= a1[3] ) - v62 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v62 = *v74; - v75 = 0; - if ( v62 != 0xFFFF ) - v75 = a1; - a1 = v75; - } - else - { - v62 = v98; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 8))(v9, 32, v62) ) - { - v63 = a1[2]; - if ( v63 >= a1[3] ) - (*(void (__fastcall **)(int *))(*a1 + 40))(a1); - else - a1[2] = v63 + 2; - a1 = std::time_get>::_M_extract_num( - a1, - 0xFFFFu, - a3, - a4, - (int *)&v102, - 1, - 9, - 1u, - a5, - &v101); - v98 = v64; - } - else - { - v39 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 10, - 31, - 2u, - a5, - &v101); -LABEL_60: - a1 = v39; - v98 = v40; - } - if ( !v101 ) - a7[3] = v102; - break; - case 0x2Cu: - a1 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 1, - 12, - 2u, - a5, - &v101); - v98 = v65; - if ( !v101 ) - a7[4] = (char *)v102 - 1; - break; - case 0x2Du: - if ( a1 && v98 == 0xFFFF ) - { - v70 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v70 >= a1[3] ) - v66 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v66 = *v70; - v71 = 0; - if ( v66 != 0xFFFF ) - v71 = a1; - a1 = v71; - } - else - { - v66 = v98; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, v66, 0) != 10 ) - goto LABEL_19; - goto LABEL_105; - case 0x33u: - if ( a1 && v98 == 0xFFFF ) - { - v72 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v72 >= a1[3] ) - v68 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v68 = *v72; - v73 = 0; - if ( v68 != 0xFFFF ) - v73 = a1; - a1 = v73; - } - else - { - v68 = v98; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, v68, 0) != 9 ) - goto LABEL_19; -LABEL_105: - v67 = a1[2]; - if ( v67 >= a1[3] ) - (*(void (__fastcall **)(int *))(*a1 + 40))(a1); - else - a1[2] = v67 + 2; - v98 = -1; - break; - case 0x37u: - LOWORD(v8) = v98; - a1 = (int *)std::time_get>::_M_extract_via_format( - (int)a1, - v8, - (int)a3, - a4, - a5, - (int)&v101, - (int)a7, - *(wchar_t **)(v96[2] + 8)); - v98 = v69; - break; - default: - goto LABEL_19; - } -LABEL_20: - v10 = v92 + 1; - } - else - { - v16 = String[v10]; - if ( a1 && v98 == 0xFFFF ) - { - v28 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v28 >= a1[3] ) - v17 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v17 = *v28; - v29 = 0; - if ( v17 != 0xFFFF ) - v29 = a1; - a1 = v29; - } - else - { - v17 = v98; - } - if ( v16 == v17 ) - { - v27 = a1[2]; - if ( v27 >= a1[3] ) - (*(void (__fastcall **)(int *))(*a1 + 40))(a1); - else - a1[2] = v27 + 2; - v10 = v92; - v98 = -1; - } - else - { - v101 |= 4u; - v10 = v92; - } - } - } - if ( v10 != v94 || v101 ) -LABEL_22: - *a6 |= 4u; - return a1; -} -// 48B963: variable 'v30' is possibly undefined -// 48BAB7: variable 'v34' is possibly undefined -// 48BBA3: variable 'v37' is possibly undefined -// 48BC36: variable 'v38' is possibly undefined -// 48BCBA: variable 'v40' is possibly undefined -// 48BD65: variable 'v41' is possibly undefined -// 48BE11: variable 'v42' is possibly undefined -// 48BE8B: variable 'v43' is possibly undefined -// 48BF2C: variable 'v46' is possibly undefined -// 48C0A5: variable 'v52' is possibly undefined -// 48C0BC: variable 'v53' is possibly undefined -// 48C151: variable 'v55' is possibly undefined -// 48C25B: variable 'v57' is possibly undefined -// 48C31A: variable 'v58' is possibly undefined -// 48C56F: variable 'v61' is possibly undefined -// 48C640: variable 'v64' is possibly undefined -// 48C6CB: variable 'v65' is possibly undefined -// 48C7F8: variable 'v69' is possibly undefined -// 53F6A0: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[3]; - -//----- (0048CAC0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - unsigned int *a5, - int a6, - unsigned int a7, - int a8, - _DWORD *a9) -{ - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // dl - char v13; // di - char v14; // bl - unsigned int v15; // edi - int *v16; // esi - char v17; // dl - char v18; // bl - unsigned int v19; // edx - unsigned int *v20; // ecx - int v21; // ebx - unsigned int v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - bool v25; // zf - _DWORD *v26; // eax - __int16 *v28; // eax - __int16 v29; // ax - bool v30; // zf - _DWORD *v31; // eax - __int16 *v32; // eax - _DWORD *v33; // eax - unsigned int v34; // eax - __int16 v35; // si - int v36; // edx - int v37; // ebx - int v38; // edi - __int16 v39; // ax - int v40; // ecx - unsigned int v41; // eax - unsigned int v42; // eax - int v43; // eax - void *v44; // esp - void *v45; // esp - int v46; // ebx - __int16 *v47; // eax - __int16 v48; // ax - bool v49; // zf - _DWORD *v50; // eax - _WORD *v51; // eax - __int16 v52; // ax - __int16 *v53; // eax - _DWORD *v54; // eax - int v55; // eax - _DWORD v56[2]; // [esp+10h] [ebp-48h] BYREF - _DWORD *v57; // [esp+18h] [ebp-40h] - char v58; // [esp+1Fh] [ebp-39h] - _DWORD *v59; // [esp+20h] [ebp-38h] - unsigned int v60; // [esp+24h] [ebp-34h] - __int16 v61; // [esp+28h] [ebp-30h] - __int16 v62; // [esp+2Ah] [ebp-2Eh] - int v63; // [esp+2Ch] [ebp-2Ch] - int *v64; // [esp+30h] [ebp-28h] - int *v65; // [esp+34h] [ebp-24h] - unsigned int v66; // [esp+38h] [ebp-20h] - unsigned int v67; // [esp+3Ch] [ebp-1Ch] - - v59 = a1; - v56[1] = a2; - v61 = a2; - v57 = a3; - v64 = (int *)std::use_facet>(a8 + 108); - v9 = 16 * ((8 * a7 + 27) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v12 = (_WORD)a2 == 0xFFFF; - v65 = v56; - v13 = v12 & (a1 != 0); - if ( v13 ) - { - v51 = (_WORD *)v59[2]; - v52 = (unsigned int)v51 >= v59[3] ? (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59) : *v51; - v12 = 0; - if ( v52 == -1 ) - { - v12 = v13; - v59 = 0; - v13 = 0; - } - } - v58 = a4 == -1; - v14 = v58 & (a3 != 0); - if ( v14 ) - { - v47 = (__int16 *)a3[2]; - if ( (unsigned int)v47 >= a3[3] ) - { - v55 = *a3; - LOBYTE(v67) = v12; - v48 = (*(int (__fastcall **)(_DWORD *))(v55 + 36))(a3); - v12 = v67; - } - else - { - v48 = *v47; - } - v49 = v48 == -1; - v50 = 0; - if ( !v49 ) - v50 = a3; - v57 = v50; - if ( !v49 ) - v14 = 0; - } - else - { - v14 = v58; - } - if ( v12 == v14 ) - { - v66 = 0; - v15 = 0; - v16 = 0; - goto LABEL_6; - } - v35 = v61; - if ( v13 ) - { - v53 = (__int16 *)v59[2]; - if ( (unsigned int)v53 >= v59[3] ) - v35 = (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59); - else - v35 = *v53; - v54 = 0; - if ( v35 != -1 ) - v54 = v59; - v59 = v54; - } - v15 = 2 * a7; - if ( !(2 * a7) ) - { - v66 = 0; - v16 = 0; - goto LABEL_6; - } - v67 = 2 * a7; - v36 = a6; - v37 = 0; - v66 = 0; - v38 = (int)v64; - do - { - while ( 1 ) - { - v40 = **(unsigned __int16 **)(v36 + 4 * v37); - if ( (_WORD)v40 == v35 ) - break; - a6 = v36; - v39 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v38 + 24))(v38, v40); - v36 = a6; - if ( v39 == v35 ) - break; - if ( ++v37 == v67 ) - goto LABEL_62; - } - v41 = v66; - v65[v66] = v37++; - v66 = v41 + 1; - } - while ( v37 != v67 ); -LABEL_62: - v15 = 0; - v16 = 0; - if ( v66 ) - { - v42 = v59[2]; - if ( v42 >= v59[3] ) - (*(void (__fastcall **)(_DWORD *, int))(*v59 + 40))(v59, v36); - else - v59[2] = v42 + 2; - v43 = 16 * ((4 * v66 + 27) >> 4); - v44 = alloca(v43); - v15 = 0; - v45 = alloca(v43); - v64 = v56; - v67 = (unsigned int)v56; - v46 = (int)v65; - do - { - *(_DWORD *)(v67 + 4 * v15) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v46 + 4 * v15))); - ++v15; - } - while ( v66 != v15 ); - v66 = 1; - v16 = v64; - v61 = -1; - } -LABEL_6: - while ( 2 ) - { - LOBYTE(v67) = v61 == -1; - v17 = v67 & (v59 != 0); - if ( v17 ) - { - v28 = (__int16 *)v59[2]; - if ( (unsigned int)v28 >= v59[3] ) - { - LOBYTE(v64) = v67 & (v59 != 0); - v29 = (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59); - v17 = (char)v64; - } - else - { - v29 = *v28; - } - v30 = v29 == -1; - v31 = 0; - if ( !v30 ) - v31 = v59; - v59 = v31; - if ( !v30 ) - v17 = 0; - } - else - { - v17 = v67; - } - v18 = v58 & (v57 != 0); - if ( v18 ) - { - v23 = (__int16 *)v57[2]; - if ( (unsigned int)v23 >= v57[3] ) - { - LOBYTE(v64) = v17; - v24 = (*(int (__fastcall **)(_DWORD *))(*v57 + 36))(v57); - v17 = (char)v64; - } - else - { - v24 = *v23; - } - v25 = v24 == -1; - v26 = 0; - if ( !v25 ) - v26 = v57; - v57 = v26; - if ( !v25 ) - v18 = 0; - if ( v17 == v18 ) - break; - } - else if ( v17 == v58 ) - { - break; - } - if ( v59 && (_BYTE)v67 ) - { - v32 = (__int16 *)v59[2]; - if ( (unsigned int)v32 >= v59[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59); - else - v62 = *v32; - v33 = 0; - if ( v62 != -1 ) - v33 = v59; - v59 = v33; - } - else - { - v62 = v61; - } - if ( !v15 ) - { -LABEL_34: - *a9 |= 4u; - return v59; - } - v67 = (unsigned int)v16; - v19 = 0; - v63 = 0; - v60 = 2 * v66; - do - { - while ( 1 ) - { - v20 = (unsigned int *)(v67 + 4 * v19); - if ( *v20 > v66 ) - break; - ++v63; - ++v19; -LABEL_16: - if ( v19 >= v15 ) - goto LABEL_20; - } - v21 = v65[v19]; - v64 = &v65[v19]; - if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v21) + v60) == v62 ) - { - ++v19; - goto LABEL_16; - } - *v64 = v65[--v15]; - *v20 = *(_DWORD *)(v67 + 4 * v15); - } - while ( v19 < v15 ); -LABEL_20: - v16 = (int *)v67; - if ( v15 != v63 ) - { - v22 = v59[2]; - if ( v22 >= v59[3] ) - (*(void (__fastcall **)(_DWORD *))(*v59 + 40))(v59); - else - v59[2] = v22 + 2; - ++v66; - v61 = -1; - continue; - } - break; - } - if ( v15 != 1 ) - { - if ( v15 == 2 && (*v16 == v66 || v16[1] == v66) ) - goto LABEL_52; - goto LABEL_34; - } - if ( *v16 != v66 ) - goto LABEL_34; -LABEL_52: - v34 = *v65; - if ( *v65 >= a7 ) - v34 = *v65 - a7; - *a5 = v34; - return v59; -} - -//----- (0048CF80) -------------------------------------------------------- -int *__thiscall std::time_get>::get( - void *this, - int *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - _DWORD *a7, - _DWORD *a8, - unsigned __int16 *a9, - unsigned __int16 *a10) -{ - unsigned __int16 *v10; // ebp - void *v12; // ebx - int v13; // edx - __int16 v14; // si - int v15; // edx - __int16 v16; // si - unsigned int v17; // eax - char v18; // si - char v19; // dl - char v20; // si - int v21; // eax - int *(__stdcall *v22)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // edx - int v23; // eax - void *v24; // eax - int *v25; // esi - unsigned __int16 v26; // dx - char v27; // dl - char v28; // bp - char v29; // al - unsigned __int16 *i; // ebp - void *v32; // ebp - char v33; // dl - char v34; // bl - int v35; // edx - unsigned int v36; // eax - bool v37; // si - __int16 *v38; // eax - __int16 v39; // ax - __int16 *v40; // eax - __int16 v41; // ax - bool v42; // zf - _DWORD *v43; // eax - unsigned __int16 *v44; // eax - char v45; // dl - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - __int16 *v50; // eax - __int16 v51; // ax - int v52; // ecx - int v53; // ebp - unsigned __int16 v54; // dx - unsigned __int16 *v55; // eax - __int16 *v56; // eax - __int16 v57; // ax - __int16 *v58; // eax - __int16 v59; // ax - unsigned __int16 *v60; // eax - unsigned __int16 v61; // [esp+5Eh] [ebp-4Ah] - unsigned __int16 *v63; // [esp+64h] [ebp-44h] - char v64; // [esp+64h] [ebp-44h] - int v65; // [esp+68h] [ebp-40h] - int v66; // [esp+6Ch] [ebp-3Ch] - char v68; // [esp+74h] [ebp-34h] - char v69; // [esp+75h] [ebp-33h] - char v70; // [esp+75h] [ebp-33h] - wchar_t v71; // [esp+84h] [ebp-24h] BYREF - __int16 v72; // [esp+86h] [ebp-22h] - __int16 v73; // [esp+88h] [ebp-20h] - __int16 v74; // [esp+8Ah] [ebp-1Eh] - unsigned __int16 *v75; // [esp+C8h] [ebp+20h] - - v10 = a9; - HIWORD(v65) = HIWORD(a3); - v61 = a3; - HIWORD(v66) = HIWORD(a5); - v12 = std::use_facet>(a6 + 108); - *a7 = 0; - if ( a9 != a10 ) - { - v68 = (_WORD)a5 == 0xFFFF; - while ( 1 ) - { - v18 = v61 == 0xFFFF && a2 != 0; - if ( v18 ) - { - v50 = (__int16 *)a2[2]; - if ( (unsigned int)v50 >= a2[3] ) - v51 = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - else - v51 = *v50; - if ( v51 == -1 ) - a2 = 0; - if ( v51 != -1 ) - v18 = 0; - } - else - { - v18 = v61 == 0xFFFF; - } - v19 = v68 & (a4 != 0); - if ( v19 ) - { - v46 = (__int16 *)a4[2]; - if ( (unsigned int)v46 >= a4[3] ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v19 = v68 & (a4 != 0); - } - else - { - v47 = *v46; - } - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = a4; - a4 = v49; - if ( !v48 ) - v19 = 0; - if ( v18 == v19 ) - { -LABEL_81: - *a7 = 6; - return a2; - } - } - else if ( v18 == v68 ) - { - goto LABEL_81; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, *v10, 0) == 37 ) - { - v63 = v10 + 1; - if ( a10 == v10 + 1 ) - goto LABEL_115; - v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[1], 0); - if ( v20 == 69 || (v69 = 0, v21 = 0, v20 == 79) ) - { - v63 = v10 + 2; - if ( a10 == v10 + 2 ) - goto LABEL_115; - v45 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[2], 0); - v69 = v20; - v21 = v20; - v20 = v45; - } - v22 = *(int *(__stdcall **)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); - if ( v22 == std::time_get>::do_get ) - { - HIWORD(v23) = HIWORD(v65); - LOWORD(v23) = v61; - v65 = v23; - HIWORD(v23) = HIWORD(v66); - LOWORD(v23) = a5; - v66 = v23; - v24 = std::use_facet>(a6 + 108); - *a7 = 0; - v71 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v24 + 40))(v24, 37); - if ( v69 ) - { - v73 = v20; - v72 = v69; - v74 = 0; - } - else - { - v72 = v20; - v73 = 0; - } - v25 = std::time_get>::_M_extract_via_format( - a2, - v65, - a4, - v66, - a6, - a7, - a8, - &v71); - a2 = v25; - v61 = v26; - v27 = v26 == 0xFFFF; - v28 = v27 & (v25 != 0); - if ( v28 ) - { - v56 = (__int16 *)v25[2]; - if ( (unsigned int)v56 >= v25[3] ) - v57 = (*(int (__fastcall **)(int *))(*v25 + 36))(v25); - else - v57 = *v56; - v27 = 0; - a2 = 0; - if ( v57 == -1 ) - v27 = v28; - if ( v57 != -1 ) - a2 = v25; - } - if ( a4 && (_WORD)a5 == 0xFFFF ) - { - v58 = (__int16 *)a4[2]; - if ( (unsigned int)v58 >= a4[3] ) - { - v70 = v27; - v59 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v27 = v70; - } - else - { - v59 = *v58; - } - v29 = v59 == -1; - } - else - { - v29 = (_WORD)a5 == 0xFFFF; - } - if ( v29 == v27 ) - *a7 |= 2u; - } - else - { - HIWORD(v52) = HIWORD(v65); - HIWORD(v53) = HIWORD(v66); - LOWORD(v52) = v61; - LOWORD(v53) = a5; - a2 = (int *)((int (__thiscall *)(void *, int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, int))v22)( - this, - a2, - v52, - a4, - v53, - a6, - a7, - a8, - v20, - v21); - v61 = v54; - } - v10 = v63 + 1; - if ( a10 == v63 + 1 ) - return a2; - goto LABEL_16; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *v10) ) - break; - if ( a2 && v61 == 0xFFFF ) - { - v55 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v55 >= a2[3] ) - v13 = (*(unsigned __int16 (__fastcall **)(int *))(*a2 + 36))(a2); - else - v13 = *v55; - if ( (_WORD)v13 == 0xFFFF ) - a2 = 0; - } - else - { - v13 = v61; - } - v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 32))(v12, v13); - if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 32))(v12, *v10) != v14 ) - { - if ( a2 && v61 == 0xFFFF ) - { - v60 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v60 >= a2[3] ) - v15 = (*(unsigned __int16 (__fastcall **)(int *))(*a2 + 36))(a2); - else - v15 = *v60; - if ( (_WORD)v15 == 0xFFFF ) - a2 = 0; - } - else - { - v15 = v61; - } - v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 24))(v12, v15); - if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 24))(v12, *v10) != v16 ) - { -LABEL_115: - *a7 = 4; - return a2; - } - } - v17 = a2[2]; - if ( v17 >= a2[3] ) - (*(void (__fastcall **)(int *))(*a2 + 40))(a2); - else - a2[2] = v17 + 2; - ++v10; - v61 = -1; -LABEL_15: - if ( a10 == v10 ) - return a2; -LABEL_16: - if ( *a7 ) - return a2; - } - for ( i = v10 + 1; a10 != i; ++i ) - { - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *i) ) - break; - } - v75 = i; - v32 = v12; - while ( 1 ) - { - v37 = v61 == 0xFFFF; - v33 = v37 && a2 != 0; - if ( v33 ) - { - v38 = (__int16 *)a2[2]; - if ( (unsigned int)v38 >= a2[3] ) - { - v39 = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - v33 = v37 && a2 != 0; - } - else - { - v39 = *v38; - } - if ( v39 == -1 ) - a2 = 0; - if ( v39 != -1 ) - v33 = 0; - v34 = v68 & (a4 != 0); - if ( !v34 ) - { -LABEL_42: - if ( v68 == v33 ) - goto LABEL_65; - goto LABEL_43; - } - } - else - { - v33 = v61 == 0xFFFF; - v34 = v68 & (a4 != 0); - if ( !v34 ) - goto LABEL_42; - } - v40 = (__int16 *)a4[2]; - if ( (unsigned int)v40 >= a4[3] ) - { - v64 = v33; - v41 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v33 = v64; - } - else - { - v41 = *v40; - } - v42 = v41 == -1; - v43 = 0; - if ( !v42 ) - v43 = a4; - a4 = v43; - if ( !v42 ) - v34 = 0; - if ( v34 == v33 ) - { -LABEL_65: - v12 = v32; - v10 = v75; - goto LABEL_15; - } -LABEL_43: - if ( a2 && v61 == 0xFFFF ) - { - v44 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v44 >= a2[3] ) - v35 = (*(unsigned __int16 (__fastcall **)(int *))(*a2 + 36))(a2); - else - v35 = *v44; - if ( (_WORD)v35 == 0xFFFF ) - a2 = 0; - } - else - { - v35 = v61; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v32 + 8))(v32, 32, v35) ) - goto LABEL_65; - v36 = a2[2]; - if ( v36 >= a2[3] ) - (*(void (__fastcall **)(int *))(*a2 + 40))(a2); - else - a2[2] = v36 + 2; - v61 = -1; - } - } - return a2; -} -// 48D25F: variable 'v26' is possibly undefined -// 48D5A6: variable 'v54' is possibly undefined - -//----- (0048D710) -------------------------------------------------------- -int __thiscall std::time_get>::get( - void *this, - int *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - _DWORD *a7, - _DWORD *a8, - char a9, - char a10) -{ - int *(__stdcall *v10)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // eax - void *v11; // eax - int *v12; // ecx - int *v13; // ebp - __int16 v14; // dx - _BOOL2 v15; // bx - bool v16; // si - bool v17; // cl - __int16 *v19; // eax - __int16 v20; // ax - __int16 *v21; // eax - __int16 v22; // ax - int v23; // [esp+28h] [ebp-48h] - wchar_t v24; // [esp+4Ch] [ebp-24h] BYREF - __int16 v25; // [esp+4Eh] [ebp-22h] - __int16 v26; // [esp+50h] [ebp-20h] - __int16 v27; // [esp+52h] [ebp-1Eh] - - v10 = *(int *(__stdcall **)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); - if ( v10 != std::time_get>::do_get ) - return ((int (__thiscall *)(void *, int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( - this, - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - a10); - v11 = std::use_facet>(a6 + 108); - *a7 = 0; - v24 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v11 + 40))(v11, 37); - if ( a10 ) - { - v26 = a9; - v25 = a10; - v27 = 0; - } - else - { - v25 = a9; - v26 = 0; - } - v12 = std::time_get>::_M_extract_via_format( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - &v24); - v13 = v12; - v15 = v14 == -1; - v16 = v15 && v12 != 0; - if ( v16 ) - { - v19 = (__int16 *)v12[2]; - if ( (unsigned int)v19 >= v12[3] ) - { - v23 = (int)v12; - v20 = (*(int (**)(void))(*v12 + 36))(); - v12 = (int *)v23; - } - else - { - v20 = *v19; - } - LOBYTE(v15) = 0; - v13 = 0; - if ( v20 == -1 ) - LOBYTE(v15) = v16; - if ( v20 != -1 ) - v13 = v12; - } - v17 = (_WORD)a5 == 0xFFFF; - if ( a4 && (_WORD)a5 == 0xFFFF ) - { - v21 = (__int16 *)a4[2]; - if ( (unsigned int)v21 >= a4[3] ) - v22 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - else - v22 = *v21; - v17 = v22 == -1; - } - if ( v15 == v17 ) - *a7 |= 2u; - return (int)v13; -} -// 48D819: variable 'v14' is possibly undefined - -//----- (0048D960) -------------------------------------------------------- -int *__stdcall std::time_get>::do_get( - int *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - char a8, - char a9) -{ - void *v9; // eax - int *v10; // ecx - int *v11; // ebp - __int16 v12; // dx - _BOOL2 v13; // bx - bool v14; // si - bool v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - int v21; // [esp+34h] [ebp-3Ch] - wchar_t v22; // [esp+4Ch] [ebp-24h] BYREF - __int16 v23; // [esp+4Eh] [ebp-22h] - __int16 v24; // [esp+50h] [ebp-20h] - __int16 v25; // [esp+52h] [ebp-1Eh] - - v9 = std::use_facet>(a5 + 108); - *a6 = 0; - v22 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 37); - if ( a9 ) - { - v24 = a8; - v23 = a9; - v25 = 0; - } - else - { - v23 = a8; - v24 = 0; - } - v10 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - &v22); - v11 = v10; - v13 = v12 == -1; - v14 = v13 && v10 != 0; - if ( v14 ) - { - v19 = (__int16 *)v10[2]; - if ( (unsigned int)v19 >= v10[3] ) - { - v21 = (int)v10; - v20 = (*(int (**)(void))(*v10 + 36))(); - v10 = (int *)v21; - } - else - { - v20 = *v19; - } - LOBYTE(v13) = 0; - v11 = 0; - if ( v20 == -1 ) - LOBYTE(v13) = v14; - if ( v20 != -1 ) - v11 = v10; - } - v15 = (_WORD)a4 == 0xFFFF; - if ( a3 && (_WORD)a4 == 0xFFFF ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v11; -} -// 48DA44: variable 'v12' is possibly undefined - -//----- (0048DB20) -------------------------------------------------------- -int __fastcall std::time_get>::get_date(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); -} - -//----- (0048DB30) -------------------------------------------------------- -int __fastcall std::time_get>::get_time(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); -} - -//----- (0048DB40) -------------------------------------------------------- -int __fastcall std::time_get>::get_year(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); -} - -//----- (0048DB50) -------------------------------------------------------- -_DWORD *__stdcall std::money_get>::_M_extract( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _BYTE *v7; // edx - unsigned int v8; // eax - _DWORD *v9; // ecx - unsigned int v10; // eax - char v11; // al - _BYTE *v12; // eax - char v13; // al - _BYTE *v14; // edx - unsigned int v15; // eax - char v16; // al - int v17; // eax - char v18; // dl - _BYTE *v19; // eax - int v20; // eax - _DWORD *v21; // eax - char v22; // al - int v23; // eax - unsigned __int8 *v24; // eax - char v25; // al - int v26; // edx - int v27; // eax - _BYTE *v28; // eax - int v29; // eax - _DWORD *v30; // eax - char v31; // al - int v32; // eax - unsigned __int8 *v33; // eax - bool v34; // zf - char v35; // al - _DWORD *v36; // edx - char v37; // al - unsigned __int8 *v39; // eax - char v40; // al - bool v41; // zf - _DWORD *v42; // edx - char v43; // al - char v44; // al - _BYTE *v45; // edx - unsigned int v46; // eax - int v47; // eax - unsigned __int8 v48; // dl - bool v49; // zf - _DWORD *v50; // eax - char v51; // al - unsigned int first_not_of; // eax - bool v53; // zf - _DWORD *v54; // eax - bool v55; // bl - int v56; // eax - bool v57; // zf - char v58; // dl - _DWORD *v59; // eax - _DWORD *v60; // eax - bool v61; // zf - _DWORD *v62; // edx - bool v63; // zf - _DWORD *v64; // eax - bool v65; // bl - _BYTE *v66; // eax - bool v67; // zf - _DWORD *v68; // eax - int v69; // eax - _BYTE *v70; // eax - int v71; // eax - _DWORD *v72; // edx - bool v73; // zf - _DWORD *v74; // eax - char v75; // bl - int v76; // eax - _DWORD *v77; // eax - bool v78; // zf - _DWORD *v79; // eax - bool v80; // bl - _DWORD *v81; // edx - bool v82; // zf - _DWORD *v83; // edx - bool v84; // zf - _DWORD *v85; // edx - bool v86; // zf - _DWORD *v87; // eax - bool v88; // bl - _DWORD *v89; // edx - bool v90; // zf - _DWORD *v91; // eax - bool v92; // bl - _DWORD *v93; // edx - _DWORD *v94; // edx - unsigned int v95; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v96; // [esp+14h] [ebp-C4h] - char v97; // [esp+18h] [ebp-C0h] - char v98; // [esp+1Ch] [ebp-BCh] - unsigned int v99; // [esp+1Ch] [ebp-BCh] - _DWORD *v100; // [esp+20h] [ebp-B8h] - unsigned int v101; // [esp+24h] [ebp-B4h] - int v102; // [esp+2Ch] [ebp-ACh] - char v103; // [esp+30h] [ebp-A8h] - char v104; // [esp+30h] [ebp-A8h] - int v105; // [esp+30h] [ebp-A8h] - unsigned int v106; // [esp+30h] [ebp-A8h] - char v107; // [esp+30h] [ebp-A8h] - char v108; // [esp+30h] [ebp-A8h] - char v109; // [esp+30h] [ebp-A8h] - bool v110; // [esp+35h] [ebp-A3h] - char v111; // [esp+36h] [ebp-A2h] - char v112; // [esp+37h] [ebp-A1h] - unsigned int Buf; // [esp+38h] [ebp-A0h] - std::locale::facet *Bufa; // [esp+38h] [ebp-A0h] - int *v115; // [esp+3Ch] [ebp-9Ch] - int v116; // [esp+3Ch] [ebp-9Ch] - int v117; // [esp+40h] [ebp-98h] - std::locale::facet *v119; // [esp+4Ch] [ebp-8Ch] - std::locale::facet *v120; // [esp+4Ch] [ebp-8Ch] - char v121; // [esp+4Ch] [ebp-8Ch] - std::locale::facet *v122; // [esp+4Ch] [ebp-8Ch] - char v123; // [esp+4Ch] [ebp-8Ch] - unsigned __int8 v124; // [esp+4Ch] [ebp-8Ch] - char v125; // [esp+4Ch] [ebp-8Ch] - char v126; // [esp+4Ch] [ebp-8Ch] - char v127; // [esp+4Ch] [ebp-8Ch] - char v128; // [esp+4Ch] [ebp-8Ch] - char v129; // [esp+4Ch] [ebp-8Ch] - bool v130; // [esp+4Ch] [ebp-8Ch] - char v131; // [esp+50h] [ebp-88h] - bool v132; // [esp+50h] [ebp-88h] - unsigned __int8 v133; // [esp+50h] [ebp-88h] - char v134; // [esp+50h] [ebp-88h] - unsigned __int8 v135; // [esp+50h] [ebp-88h] - bool v136; // [esp+50h] [ebp-88h] - bool v137; // [esp+50h] [ebp-88h] - bool v138; // [esp+50h] [ebp-88h] - bool v139; // [esp+50h] [ebp-88h] - size_t v140; // [esp+50h] [ebp-88h] - char v141; // [esp+50h] [ebp-88h] - size_t v143; // [esp+54h] [ebp-84h] - size_t v144; // [esp+54h] [ebp-84h] - int v146; // [esp+9Ch] [ebp-3Ch] - void *v147; // [esp+A0h] [ebp-38h] BYREF - std::locale::facet *v148; // [esp+A4h] [ebp-34h] - int v149[4]; // [esp+A8h] [ebp-30h] BYREF - void *Block; // [esp+B8h] [ebp-20h] BYREF - size_t v151; // [esp+BCh] [ebp-1Ch] - int v152[5]; // [esp+C0h] [ebp-18h] BYREF - - v100 = std::use_facet>(a5 + 108); - v119 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v115 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v119); - v117 = *v115; - if ( !*v115 ) - { - v60 = operator new(0x44u); - *v60 = &off_5606D4; - v60[1] = 0; - v60[2] = 0; - v60[3] = 0; - *((_WORD *)v60 + 8) = 0; - *((_BYTE *)v60 + 18) = 0; - v60[5] = 0; - v60[6] = 0; - v60[7] = 0; - v60[8] = 0; - v60[9] = 0; - v60[10] = 0; - v60[11] = 0; - v60[12] = 0; - v60[13] = 0; - *((_BYTE *)v60 + 67) = 0; - v96 = (std::locale::_Impl *)v60; - std::__moneypunct_cache::_M_cache((int)v60, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, v119, v95); - v117 = *v115; - } - if ( *(_DWORD *)(v117 + 32) ) - v110 = *(_DWORD *)(v117 + 40) != 0; - else - v110 = 0; - v148 = 0; - v147 = v149; - LOBYTE(v149[0]) = 0; - if ( *(_BYTE *)(v117 + 16) ) - std::string::reserve(&v147, 0x20u); - Block = v152; - v151 = 0; - LOBYTE(v152[0]) = 0; - std::string::reserve(&Block, 0x20u); - v102 = 0; - v112 = 0; - v116 = 0; - v146 = *(_DWORD *)(v117 + 52); - v97 = 0; - v101 = 0; - v111 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)&v146 + v102) ) - { - case 0: - v104 = 1; - goto LABEL_37; - case 1: - v138 = a2 == -1; - if ( v138 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v86 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v87 = 0; - if ( !v86 ) - v87 = a1; - v88 = v138 && a1 != 0; - a1 = v87; - if ( !v86 ) - v88 = 0; - v127 = v88; - } - else - { - v127 = 0; - } - } - else - { - v127 = a2 == -1; - } - v31 = a4 == -1; - v107 = v31 & (a3 != 0); - if ( v107 ) - { - v31 = 0; - if ( a3[2] >= a3[3] ) - { - v61 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v31 = 0; - if ( v61 ) - v31 = v107; - v62 = 0; - if ( !v61 ) - v62 = a3; - a3 = v62; - } - } - v104 = 0; - if ( v127 == v31 ) - goto LABEL_37; - if ( !a1 || a2 != -1 ) - { - LOBYTE(v32) = a2; - goto LABEL_107; - } - v33 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v33 >= a1[3] ) - { - v32 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v89 = 0; - if ( v32 != -1 ) - v89 = a1; - a1 = v89; -LABEL_107: - v104 = 0; - if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) - goto LABEL_37; - v33 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v33 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_110; - } -LABEL_109: - a1[2] = v33 + 1; -LABEL_110: - a2 = -1; - v104 = 1; - goto LABEL_37; - } - if ( (*(_BYTE *)(v100[6] + 2 * *v33) & 0x20) != 0 ) - goto LABEL_109; - a2 = -1; -LABEL_37: - if ( v102 == 3 ) - { - v16 = v104 & (v101 > 1); -LABEL_39: - if ( v16 ) - { - if ( v111 ) - v17 = *(_DWORD *)(v117 + 36); - else - v17 = *(_DWORD *)(v117 + 28); - v105 = v17; - for ( Buf = 1; ; ++Buf ) - { - v135 = a2 == -1; - if ( (v135 & (a1 != 0)) != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v74 = 0; - if ( !v73 ) - v74 = a1; - v75 = v135 & (a1 != 0); - a1 = v74; - if ( !v73 ) - v75 = 0; - v123 = v75; - } - else - { - v123 = 0; - } - } - else - { - v123 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v123 ^= v20 == -1; - v34 = v20 == -1; - v21 = 0; - if ( !v34 ) - v21 = a3; - a3 = v21; - } - } - else - { - v123 ^= a4 == -1; - } - if ( Buf >= v101 || !v123 ) - { - if ( Buf != v101 ) - { -LABEL_195: - v124 = v135 & (a1 != 0); - goto LABEL_120; - } - if ( v151 > 1 ) - goto LABEL_207; - goto LABEL_174; - } - v18 = a2; - v124 = v135 & (a1 != 0); - if ( v124 ) - { - v19 = (_BYTE *)a1[2]; - if ( (unsigned int)v19 < a1[3] ) - { - if ( *(_BYTE *)(v105 + Buf) != *v19 ) - { - v135 &= a1 != 0; - goto LABEL_120; - } -LABEL_49: - a1[2] = v19 + 1; - goto LABEL_50; - } - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v34 = v76 == -1; - v18 = v76; - v77 = 0; - if ( !v34 ) - v77 = a1; - a1 = v77; - } - if ( *(_BYTE *)(v105 + Buf) != v18 ) - goto LABEL_195; - v19 = (_BYTE *)a1[2]; - if ( (unsigned int)v19 < a1[3] ) - goto LABEL_49; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_50: - a2 = -1; - } - } - if ( !v104 ) - goto LABEL_119; - if ( v151 > 1 ) - { -LABEL_207: - first_not_of = std::string::find_first_not_of(&Block, 48, 0); - if ( first_not_of ) - { - if ( first_not_of != -1 ) - goto LABEL_209; - first_not_of = v151 - 1; - if ( !v151 ) - { - v151 = 0; - *(_BYTE *)Block = 0; - goto LABEL_174; - } - if ( v151 != 1 ) - { -LABEL_209: - if ( v151 <= first_not_of ) - first_not_of = v151; - std::string::_M_erase((int *)&Block, 0, first_not_of); - } - } - } -LABEL_174: - if ( v111 && *(_BYTE *)Block != 48 ) - std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); - v140 = (size_t)v148; - if ( v148 ) - { - v44 = v97; - if ( !v112 ) - v44 = v116; - v45 = v147; - Bufa = (std::locale::facet *)((char *)v148 + 1); - v129 = v44; - v46 = 15; - if ( v147 != v149 ) - v46 = v149[0]; - if ( (unsigned int)v148 + 1 > v46 ) - { - std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); - v45 = v147; - } - v45[v140] = v129; - v148 = Bufa; - *((_BYTE *)v147 + v140 + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v117 + 8), *(_DWORD *)(v117 + 12), (int)&v147) ) - *a6 |= 4u; - } - v135 = a2 == -1; - v124 = v135 & (a1 != 0); - if ( v112 && *(_DWORD *)(v117 + 44) != v116 ) - goto LABEL_120; - std::string::swap(a7, &Block); - if ( !v124 ) - goto LABEL_121; -LABEL_189: - v135 = 0; - if ( a1[2] >= a1[3] ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v48 = v124; - v49 = v47 == -1; - if ( v47 != -1 ) - v48 = 0; - v50 = 0; - if ( !v49 ) - v50 = a1; - v135 = v48; - a1 = v50; - } - goto LABEL_121; - } - while ( 1 ) - { - v136 = a2 == -1; - if ( v136 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v63 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v64 = 0; - if ( !v63 ) - v64 = a1; - v65 = v136 && a1 != 0; - a1 = v64; - if ( !v63 ) - v65 = 0; - v125 = v65; - } - else - { - v125 = 0; - } - } - else - { - v125 = a2 == -1; - } - v22 = a4 == -1; - v98 = v22 & (a3 != 0); - if ( v98 ) - { - v22 = 0; - if ( a3[2] >= a3[3] ) - { - v41 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v22 = v98; - if ( !v41 ) - v22 = 0; - v42 = 0; - if ( !v41 ) - v42 = a3; - a3 = v42; - } - } - if ( v22 == v125 ) - goto LABEL_136; - if ( a1 && a2 == -1 ) - { - v24 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - { - if ( (*(_BYTE *)(v100[6] + 2 * *v24) & 0x20) == 0 ) - { - a2 = -1; - v25 = v104 ^ 1; - goto LABEL_137; - } -LABEL_67: - a1[2] = v24 + 1; - goto LABEL_68; - } - v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v72 = 0; - if ( v23 != -1 ) - v72 = a1; - a1 = v72; - } - else - { - LOBYTE(v23) = a2; - } - if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v23) & 0x20) == 0 ) - goto LABEL_136; - v24 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - goto LABEL_67; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_68: - a2 = -1; - } - case 2: - if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) - goto LABEL_82; - v25 = v102 == 0 || v101 > 1; - if ( v25 ) - goto LABEL_82; - if ( v102 != 1 ) - { - v104 = 1; - if ( v102 == 2 ) - { - if ( HIBYTE(v146) == 4 ) - goto LABEL_82; - v26 = 3; - if ( HIBYTE(v146) == 3 && v110 ) - goto LABEL_82; - goto LABEL_139; - } -LABEL_137: - v26 = v102 + 1; - if ( v102 + 1 > 3 || v25 ) - { - v16 = v104 & (v101 > 1); - goto LABEL_39; - } -LABEL_139: - v102 = v26; - continue; - } - if ( !v110 && (_BYTE)v146 != 3 && BYTE2(v146) != 1 ) - { - v26 = 2; - goto LABEL_139; - } -LABEL_82: - v106 = 0; - v99 = *(_DWORD *)(v117 + 24); - while ( 2 ) - { - v137 = a2 == -1; - if ( v137 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v78 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v79 = 0; - if ( !v78 ) - v79 = a1; - v80 = v137 && a1 != 0; - a1 = v79; - if ( !v78 ) - v80 = 0; - v126 = v80; - } - else - { - v126 = 0; - } - } - else - { - v126 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v29 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v126 ^= v29 == -1; - v34 = v29 == -1; - v30 = 0; - if ( !v34 ) - v30 = a3; - a3 = v30; - } - } - else - { - v126 ^= a4 == -1; - } - v25 = v126 & (v106 < v99); - if ( v25 ) - { - if ( !a1 || a2 != -1 ) - { - LOBYTE(v27) = a2; - goto LABEL_88; - } - v28 = (_BYTE *)a1[2]; - if ( (unsigned int)v28 < a1[3] ) - { - if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != *v28 ) - { - a2 = -1; - goto LABEL_168; - } - goto LABEL_90; - } - v27 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v81 = 0; - if ( v27 != -1 ) - v81 = a1; - a1 = v81; -LABEL_88: - if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != (_BYTE)v27 ) - goto LABEL_168; - v28 = (_BYTE *)a1[2]; - if ( (unsigned int)v28 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else -LABEL_90: - a1[2] = v28 + 1; - ++v106; - a2 = -1; - continue; - } - break; - } - if ( v106 == v99 ) - goto LABEL_198; -LABEL_168: - if ( !v106 ) - { - v104 = (*(_BYTE *)(a5 + 13) & 2) == 0; - v25 = (*(_BYTE *)(a5 + 13) & 2) != 0; - goto LABEL_137; - } -LABEL_119: - v135 = a2 == -1; - v124 = v135 & (a1 != 0); -LABEL_120: - *a6 |= 4u; - if ( v124 ) - goto LABEL_189; -LABEL_121: - v37 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v37 = 0; - if ( a3[2] >= a3[3] ) - v37 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - } - if ( v37 == v135 ) - *a6 |= 2u; - if ( Block != v152 ) - operator delete(Block); - if ( v147 != v149 ) - operator delete(v147); - return a1; - case 3: - if ( !*(_DWORD *)(v117 + 32) ) - { - if ( !*(_DWORD *)(v117 + 40) ) - goto LABEL_74; -LABEL_199: - v141 = a2 == -1; - if ( !a1 || a2 != -1 ) - { - v130 = a2 == -1; - goto LABEL_202; - } -LABEL_253: - v130 = 1; - v141 = 0; - if ( a1[2] >= a1[3] ) - { - v67 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v68 = 0; - if ( !v67 ) - v68 = a1; - v130 = 1; - v141 = v67; - a1 = v68; - } -LABEL_202: - v51 = a4 == -1; - v109 = v51 & (a3 != 0); - if ( v109 ) - { - v51 = 0; - if ( a3[2] >= a3[3] ) - { - v84 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v51 = 0; - if ( v84 ) - v51 = v109; - v85 = 0; - if ( !v84 ) - v85 = a3; - a3 = v85; - } - } - if ( v51 == v141 ) - { -LABEL_204: - if ( !*(_DWORD *)(v117 + 32) || *(_DWORD *)(v117 + 40) ) - { -LABEL_74: - v25 = v110; - v104 = !v110; - goto LABEL_137; - } - goto LABEL_157; - } - if ( a1 && v130 ) - { - v70 = (_BYTE *)a1[2]; - if ( (unsigned int)v70 < a1[3] ) - { - if ( *v70 != **(_BYTE **)(v117 + 36) ) - goto LABEL_204; - v101 = *(_DWORD *)(v117 + 40); - goto LABEL_267; - } - v71 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v93 = 0; - if ( v71 != -1 ) - v93 = a1; - a1 = v93; - } - else - { - LOBYTE(v71) = a2; - } - if ( **(_BYTE **)(v117 + 36) != (_BYTE)v71 ) - goto LABEL_204; - v101 = *(_DWORD *)(v117 + 40); - v70 = (_BYTE *)a1[2]; - if ( (unsigned int)v70 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_268; - } -LABEL_267: - a1[2] = v70 + 1; -LABEL_268: - a2 = -1; - v25 = 0; - v104 = 1; - v111 = 1; - goto LABEL_137; - } - v139 = a2 == -1; - if ( v139 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v90 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v91 = 0; - if ( !v90 ) - v91 = a1; - v92 = v139 && a1 != 0; - a1 = v91; - if ( !v90 ) - v92 = 0; - v128 = v92; - } - else - { - v128 = 0; - } - } - else - { - v128 = a2 == -1; - } - v43 = a4 == -1; - v108 = v43 & (a3 != 0); - if ( v108 ) - { - v43 = 0; - if ( a3[2] >= a3[3] ) - { - v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v43 = 0; - if ( v82 ) - v43 = v108; - v83 = 0; - if ( !v82 ) - v83 = a3; - a3 = v83; - } - } - if ( v128 == v43 ) - { -LABEL_155: - if ( *(_DWORD *)(v117 + 40) ) - goto LABEL_199; -LABEL_156: - if ( !*(_DWORD *)(v117 + 32) ) - goto LABEL_74; -LABEL_157: - v104 = 1; - v25 = 0; - v111 = 1; - goto LABEL_137; - } - if ( a1 && a2 == -1 ) - { - v66 = (_BYTE *)a1[2]; - if ( (unsigned int)v66 < a1[3] ) - { - if ( **(_BYTE **)(v117 + 28) != *v66 ) - { - if ( *(_DWORD *)(v117 + 40) ) - goto LABEL_253; - goto LABEL_156; - } - v101 = *(_DWORD *)(v117 + 32); - goto LABEL_260; - } - v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v94 = 0; - if ( v69 != -1 ) - v94 = a1; - a1 = v94; - } - else - { - LOBYTE(v69) = a2; - } - if ( **(_BYTE **)(v117 + 28) != (_BYTE)v69 ) - goto LABEL_155; - v101 = *(_DWORD *)(v117 + 32); - v66 = (_BYTE *)a1[2]; - if ( (unsigned int)v66 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_261: - a2 = -1; - v25 = 0; -LABEL_198: - v104 = 1; - goto LABEL_137; - } -LABEL_260: - a1[2] = v66 + 1; - goto LABEL_261; - case 4: - while ( 2 ) - { - v132 = a2 == -1; - if ( v132 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v54 = 0; - if ( !v53 ) - v54 = a1; - v55 = v132 && a1 != 0; - a1 = v54; - if ( !v53 ) - v55 = 0; - v121 = v55; - } - else - { - v121 = 0; - } - } - else - { - v121 = a2 == -1; - } - v11 = a4 == -1; - v103 = v11 & (a3 != 0); - if ( v103 && (v11 = 0, a3[2] >= a3[3]) ) - { - v34 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v35 = v103; - if ( !v34 ) - v35 = 0; - v36 = 0; - if ( !v34 ) - v36 = a3; - a3 = v36; - if ( v35 == v121 ) - goto LABEL_117; - } - else if ( v11 == v121 ) - { - goto LABEL_117; - } - if ( a1 && a2 == -1 ) - { - v39 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v39 >= a1[3] ) - { - v56 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v57 = v56 == -1; - v58 = -1; - if ( v56 != -1 ) - v58 = v56; - v59 = 0; - if ( !v57 ) - v59 = a1; - v133 = v58; - a1 = v59; - } - else - { - v133 = *v39; - } - } - else - { - v133 = a2; - } - v12 = memchr((const void *)(v117 + 57), (char)v133, 0xAu); - if ( v12 ) - { - v7 = Block; - v131 = v12[(_DWORD)std::money_base::_S_atoms - 56 - v117]; - v143 = v151; - v8 = 15; - if ( Block != v152 ) - v8 = v152[0]; - v120 = (std::locale::facet *)(v151 + 1); - if ( v151 + 1 > v8 ) - { - std::string::_M_mutate((int)&Block, v151, 0, 0, 1u); - v7 = Block; - } - ++v116; - v7[v143] = v131; - v151 = (size_t)v120; - *((_BYTE *)Block + v143 + 1) = 0; -LABEL_14: - v9 = a1; - v10 = a1[2]; - if ( v10 < a1[3] ) - { -LABEL_15: - v9[2] = v10 + 1; -LABEL_16: - a2 = -1; - continue; - } -LABEL_35: - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_16; - } - break; - } - v104 = v112 | (*(_BYTE *)(v117 + 17) != v133); - if ( !v104 ) - { - if ( *(int *)(v117 + 44) > 0 ) - { - v40 = v116; - v112 = 1; - v116 = 0; - v97 = v40; - goto LABEL_14; - } - v112 = 0; -LABEL_117: - v104 = 1; -LABEL_118: - if ( !v151 ) - goto LABEL_119; - goto LABEL_136; - } - v13 = *(_BYTE *)(v117 + 16); - if ( !v13 ) - goto LABEL_118; - if ( *(_BYTE *)(v117 + 18) == v133 ) - { - if ( !v112 ) - { - if ( v116 ) - { - v134 = v116; - v14 = v147; - v144 = (size_t)v148; - v15 = 15; - if ( v147 != v149 ) - v15 = v149[0]; - v122 = (std::locale::facet *)((char *)v148 + 1); - if ( (unsigned int)v148 + 1 > v15 ) - { - std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); - v14 = v147; - } - v116 = 0; - v14[v144] = v134; - v148 = v122; - *((_BYTE *)v147 + v144 + 1) = 0; - v9 = a1; - v10 = a1[2]; - if ( v10 < a1[3] ) - goto LABEL_15; - goto LABEL_35; - } - v104 = 0; - goto LABEL_118; - } - v13 = v112; - } - v104 = v13; - if ( !v151 ) - goto LABEL_119; -LABEL_136: - v25 = v104 ^ 1; - goto LABEL_137; - default: - v104 = 1; - v25 = 0; - goto LABEL_137; - } - } -} -// 48ED3B: variable 'v95' is possibly undefined -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 53F708: using guessed type signed __int32 std::moneypunct::id; -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (0048F480) -------------------------------------------------------- -_DWORD *__stdcall std::money_get>::_M_extract( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _BYTE *v7; // edx - unsigned int v8; // eax - _DWORD *v9; // ecx - unsigned int v10; // eax - char v11; // al - _BYTE *v12; // eax - char v13; // al - _BYTE *v14; // edx - unsigned int v15; // eax - char v16; // al - int v17; // eax - char v18; // dl - _BYTE *v19; // eax - int v20; // eax - _DWORD *v21; // eax - char v22; // al - int v23; // eax - unsigned __int8 *v24; // eax - char v25; // al - int v26; // edx - int v27; // eax - _BYTE *v28; // eax - int v29; // eax - _DWORD *v30; // eax - char v31; // al - int v32; // eax - unsigned __int8 *v33; // eax - bool v34; // zf - char v35; // al - _DWORD *v36; // edx - char v37; // al - unsigned __int8 *v39; // eax - char v40; // al - bool v41; // zf - _DWORD *v42; // edx - char v43; // al - char v44; // al - _BYTE *v45; // edx - unsigned int v46; // eax - int v47; // eax - unsigned __int8 v48; // dl - bool v49; // zf - _DWORD *v50; // eax - char v51; // al - unsigned int first_not_of; // eax - bool v53; // zf - _DWORD *v54; // eax - bool v55; // bl - int v56; // eax - bool v57; // zf - char v58; // dl - _DWORD *v59; // eax - _DWORD *v60; // eax - bool v61; // zf - _DWORD *v62; // edx - bool v63; // zf - _DWORD *v64; // eax - bool v65; // bl - _BYTE *v66; // eax - bool v67; // zf - _DWORD *v68; // eax - int v69; // eax - _BYTE *v70; // eax - int v71; // eax - _DWORD *v72; // edx - bool v73; // zf - _DWORD *v74; // eax - char v75; // bl - int v76; // eax - _DWORD *v77; // eax - bool v78; // zf - _DWORD *v79; // eax - bool v80; // bl - _DWORD *v81; // edx - bool v82; // zf - _DWORD *v83; // edx - bool v84; // zf - _DWORD *v85; // edx - bool v86; // zf - _DWORD *v87; // eax - bool v88; // bl - _DWORD *v89; // edx - bool v90; // zf - _DWORD *v91; // eax - bool v92; // bl - _DWORD *v93; // edx - _DWORD *v94; // edx - unsigned int v95; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v96; // [esp+14h] [ebp-C4h] - char v97; // [esp+18h] [ebp-C0h] - char v98; // [esp+1Ch] [ebp-BCh] - unsigned int v99; // [esp+1Ch] [ebp-BCh] - _DWORD *v100; // [esp+20h] [ebp-B8h] - unsigned int v101; // [esp+24h] [ebp-B4h] - int v102; // [esp+2Ch] [ebp-ACh] - char v103; // [esp+30h] [ebp-A8h] - char v104; // [esp+30h] [ebp-A8h] - int v105; // [esp+30h] [ebp-A8h] - unsigned int v106; // [esp+30h] [ebp-A8h] - char v107; // [esp+30h] [ebp-A8h] - char v108; // [esp+30h] [ebp-A8h] - char v109; // [esp+30h] [ebp-A8h] - bool v110; // [esp+35h] [ebp-A3h] - char v111; // [esp+36h] [ebp-A2h] - char v112; // [esp+37h] [ebp-A1h] - unsigned int Buf; // [esp+38h] [ebp-A0h] - std::locale::facet *Bufa; // [esp+38h] [ebp-A0h] - int *v115; // [esp+3Ch] [ebp-9Ch] - int v116; // [esp+3Ch] [ebp-9Ch] - int v117; // [esp+40h] [ebp-98h] - std::locale::facet *v119; // [esp+4Ch] [ebp-8Ch] - std::locale::facet *v120; // [esp+4Ch] [ebp-8Ch] - char v121; // [esp+4Ch] [ebp-8Ch] - std::locale::facet *v122; // [esp+4Ch] [ebp-8Ch] - char v123; // [esp+4Ch] [ebp-8Ch] - unsigned __int8 v124; // [esp+4Ch] [ebp-8Ch] - char v125; // [esp+4Ch] [ebp-8Ch] - char v126; // [esp+4Ch] [ebp-8Ch] - char v127; // [esp+4Ch] [ebp-8Ch] - char v128; // [esp+4Ch] [ebp-8Ch] - char v129; // [esp+4Ch] [ebp-8Ch] - bool v130; // [esp+4Ch] [ebp-8Ch] - char v131; // [esp+50h] [ebp-88h] - bool v132; // [esp+50h] [ebp-88h] - unsigned __int8 v133; // [esp+50h] [ebp-88h] - char v134; // [esp+50h] [ebp-88h] - unsigned __int8 v135; // [esp+50h] [ebp-88h] - bool v136; // [esp+50h] [ebp-88h] - bool v137; // [esp+50h] [ebp-88h] - bool v138; // [esp+50h] [ebp-88h] - bool v139; // [esp+50h] [ebp-88h] - size_t v140; // [esp+50h] [ebp-88h] - char v141; // [esp+50h] [ebp-88h] - size_t v143; // [esp+54h] [ebp-84h] - size_t v144; // [esp+54h] [ebp-84h] - int v146; // [esp+9Ch] [ebp-3Ch] - void *v147; // [esp+A0h] [ebp-38h] BYREF - std::locale::facet *v148; // [esp+A4h] [ebp-34h] - int v149[4]; // [esp+A8h] [ebp-30h] BYREF - void *Block; // [esp+B8h] [ebp-20h] BYREF - size_t v151; // [esp+BCh] [ebp-1Ch] - int v152[5]; // [esp+C0h] [ebp-18h] BYREF - - v100 = std::use_facet>(a5 + 108); - v119 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v115 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v119); - v117 = *v115; - if ( !*v115 ) - { - v60 = operator new(0x44u); - *v60 = &off_5606E4; - v60[1] = 0; - v60[2] = 0; - v60[3] = 0; - *((_WORD *)v60 + 8) = 0; - *((_BYTE *)v60 + 18) = 0; - v60[5] = 0; - v60[6] = 0; - v60[7] = 0; - v60[8] = 0; - v60[9] = 0; - v60[10] = 0; - v60[11] = 0; - v60[12] = 0; - v60[13] = 0; - *((_BYTE *)v60 + 67) = 0; - v96 = (std::locale::_Impl *)v60; - std::__moneypunct_cache::_M_cache((int)v60, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, v119, v95); - v117 = *v115; - } - if ( *(_DWORD *)(v117 + 32) ) - v110 = *(_DWORD *)(v117 + 40) != 0; - else - v110 = 0; - v148 = 0; - v147 = v149; - LOBYTE(v149[0]) = 0; - if ( *(_BYTE *)(v117 + 16) ) - std::string::reserve(&v147, 0x20u); - Block = v152; - v151 = 0; - LOBYTE(v152[0]) = 0; - std::string::reserve(&Block, 0x20u); - v102 = 0; - v112 = 0; - v116 = 0; - v146 = *(_DWORD *)(v117 + 52); - v97 = 0; - v101 = 0; - v111 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)&v146 + v102) ) - { - case 0: - v104 = 1; - goto LABEL_37; - case 1: - v138 = a2 == -1; - if ( v138 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v86 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v87 = 0; - if ( !v86 ) - v87 = a1; - v88 = v138 && a1 != 0; - a1 = v87; - if ( !v86 ) - v88 = 0; - v127 = v88; - } - else - { - v127 = 0; - } - } - else - { - v127 = a2 == -1; - } - v31 = a4 == -1; - v107 = v31 & (a3 != 0); - if ( v107 ) - { - v31 = 0; - if ( a3[2] >= a3[3] ) - { - v61 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v31 = 0; - if ( v61 ) - v31 = v107; - v62 = 0; - if ( !v61 ) - v62 = a3; - a3 = v62; - } - } - v104 = 0; - if ( v127 == v31 ) - goto LABEL_37; - if ( !a1 || a2 != -1 ) - { - LOBYTE(v32) = a2; - goto LABEL_107; - } - v33 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v33 >= a1[3] ) - { - v32 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v89 = 0; - if ( v32 != -1 ) - v89 = a1; - a1 = v89; -LABEL_107: - v104 = 0; - if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) - goto LABEL_37; - v33 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v33 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_110; - } -LABEL_109: - a1[2] = v33 + 1; -LABEL_110: - a2 = -1; - v104 = 1; - goto LABEL_37; - } - if ( (*(_BYTE *)(v100[6] + 2 * *v33) & 0x20) != 0 ) - goto LABEL_109; - a2 = -1; -LABEL_37: - if ( v102 == 3 ) - { - v16 = v104 & (v101 > 1); -LABEL_39: - if ( v16 ) - { - if ( v111 ) - v17 = *(_DWORD *)(v117 + 36); - else - v17 = *(_DWORD *)(v117 + 28); - v105 = v17; - for ( Buf = 1; ; ++Buf ) - { - v135 = a2 == -1; - if ( (v135 & (a1 != 0)) != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v74 = 0; - if ( !v73 ) - v74 = a1; - v75 = v135 & (a1 != 0); - a1 = v74; - if ( !v73 ) - v75 = 0; - v123 = v75; - } - else - { - v123 = 0; - } - } - else - { - v123 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v123 ^= v20 == -1; - v34 = v20 == -1; - v21 = 0; - if ( !v34 ) - v21 = a3; - a3 = v21; - } - } - else - { - v123 ^= a4 == -1; - } - if ( Buf >= v101 || !v123 ) - { - if ( Buf != v101 ) - { -LABEL_195: - v124 = v135 & (a1 != 0); - goto LABEL_120; - } - if ( v151 > 1 ) - goto LABEL_207; - goto LABEL_174; - } - v18 = a2; - v124 = v135 & (a1 != 0); - if ( v124 ) - { - v19 = (_BYTE *)a1[2]; - if ( (unsigned int)v19 < a1[3] ) - { - if ( *(_BYTE *)(v105 + Buf) != *v19 ) - { - v135 &= a1 != 0; - goto LABEL_120; - } -LABEL_49: - a1[2] = v19 + 1; - goto LABEL_50; - } - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v34 = v76 == -1; - v18 = v76; - v77 = 0; - if ( !v34 ) - v77 = a1; - a1 = v77; - } - if ( *(_BYTE *)(v105 + Buf) != v18 ) - goto LABEL_195; - v19 = (_BYTE *)a1[2]; - if ( (unsigned int)v19 < a1[3] ) - goto LABEL_49; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_50: - a2 = -1; - } - } - if ( !v104 ) - goto LABEL_119; - if ( v151 > 1 ) - { -LABEL_207: - first_not_of = std::string::find_first_not_of(&Block, 48, 0); - if ( first_not_of ) - { - if ( first_not_of != -1 ) - goto LABEL_209; - first_not_of = v151 - 1; - if ( !v151 ) - { - v151 = 0; - *(_BYTE *)Block = 0; - goto LABEL_174; - } - if ( v151 != 1 ) - { -LABEL_209: - if ( v151 <= first_not_of ) - first_not_of = v151; - std::string::_M_erase((int *)&Block, 0, first_not_of); - } - } - } -LABEL_174: - if ( v111 && *(_BYTE *)Block != 48 ) - std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); - v140 = (size_t)v148; - if ( v148 ) - { - v44 = v97; - if ( !v112 ) - v44 = v116; - v45 = v147; - Bufa = (std::locale::facet *)((char *)v148 + 1); - v129 = v44; - v46 = 15; - if ( v147 != v149 ) - v46 = v149[0]; - if ( (unsigned int)v148 + 1 > v46 ) - { - std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); - v45 = v147; - } - v45[v140] = v129; - v148 = Bufa; - *((_BYTE *)v147 + v140 + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v117 + 8), *(_DWORD *)(v117 + 12), (int)&v147) ) - *a6 |= 4u; - } - v135 = a2 == -1; - v124 = v135 & (a1 != 0); - if ( v112 && *(_DWORD *)(v117 + 44) != v116 ) - goto LABEL_120; - std::string::swap(a7, &Block); - if ( !v124 ) - goto LABEL_121; -LABEL_189: - v135 = 0; - if ( a1[2] >= a1[3] ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v48 = v124; - v49 = v47 == -1; - if ( v47 != -1 ) - v48 = 0; - v50 = 0; - if ( !v49 ) - v50 = a1; - v135 = v48; - a1 = v50; - } - goto LABEL_121; - } - while ( 1 ) - { - v136 = a2 == -1; - if ( v136 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v63 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v64 = 0; - if ( !v63 ) - v64 = a1; - v65 = v136 && a1 != 0; - a1 = v64; - if ( !v63 ) - v65 = 0; - v125 = v65; - } - else - { - v125 = 0; - } - } - else - { - v125 = a2 == -1; - } - v22 = a4 == -1; - v98 = v22 & (a3 != 0); - if ( v98 ) - { - v22 = 0; - if ( a3[2] >= a3[3] ) - { - v41 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v22 = v98; - if ( !v41 ) - v22 = 0; - v42 = 0; - if ( !v41 ) - v42 = a3; - a3 = v42; - } - } - if ( v22 == v125 ) - goto LABEL_136; - if ( a1 && a2 == -1 ) - { - v24 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - { - if ( (*(_BYTE *)(v100[6] + 2 * *v24) & 0x20) == 0 ) - { - a2 = -1; - v25 = v104 ^ 1; - goto LABEL_137; - } -LABEL_67: - a1[2] = v24 + 1; - goto LABEL_68; - } - v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v72 = 0; - if ( v23 != -1 ) - v72 = a1; - a1 = v72; - } - else - { - LOBYTE(v23) = a2; - } - if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v23) & 0x20) == 0 ) - goto LABEL_136; - v24 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - goto LABEL_67; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_68: - a2 = -1; - } - case 2: - if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) - goto LABEL_82; - v25 = v102 == 0 || v101 > 1; - if ( v25 ) - goto LABEL_82; - if ( v102 != 1 ) - { - v104 = 1; - if ( v102 == 2 ) - { - if ( HIBYTE(v146) == 4 ) - goto LABEL_82; - v26 = 3; - if ( HIBYTE(v146) == 3 && v110 ) - goto LABEL_82; - goto LABEL_139; - } -LABEL_137: - v26 = v102 + 1; - if ( v102 + 1 > 3 || v25 ) - { - v16 = v104 & (v101 > 1); - goto LABEL_39; - } -LABEL_139: - v102 = v26; - continue; - } - if ( !v110 && (_BYTE)v146 != 3 && BYTE2(v146) != 1 ) - { - v26 = 2; - goto LABEL_139; - } -LABEL_82: - v106 = 0; - v99 = *(_DWORD *)(v117 + 24); - while ( 2 ) - { - v137 = a2 == -1; - if ( v137 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v78 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v79 = 0; - if ( !v78 ) - v79 = a1; - v80 = v137 && a1 != 0; - a1 = v79; - if ( !v78 ) - v80 = 0; - v126 = v80; - } - else - { - v126 = 0; - } - } - else - { - v126 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v29 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v126 ^= v29 == -1; - v34 = v29 == -1; - v30 = 0; - if ( !v34 ) - v30 = a3; - a3 = v30; - } - } - else - { - v126 ^= a4 == -1; - } - v25 = v126 & (v106 < v99); - if ( v25 ) - { - if ( !a1 || a2 != -1 ) - { - LOBYTE(v27) = a2; - goto LABEL_88; - } - v28 = (_BYTE *)a1[2]; - if ( (unsigned int)v28 < a1[3] ) - { - if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != *v28 ) - { - a2 = -1; - goto LABEL_168; - } - goto LABEL_90; - } - v27 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v81 = 0; - if ( v27 != -1 ) - v81 = a1; - a1 = v81; -LABEL_88: - if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != (_BYTE)v27 ) - goto LABEL_168; - v28 = (_BYTE *)a1[2]; - if ( (unsigned int)v28 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else -LABEL_90: - a1[2] = v28 + 1; - ++v106; - a2 = -1; - continue; - } - break; - } - if ( v106 == v99 ) - goto LABEL_198; -LABEL_168: - if ( !v106 ) - { - v104 = (*(_BYTE *)(a5 + 13) & 2) == 0; - v25 = (*(_BYTE *)(a5 + 13) & 2) != 0; - goto LABEL_137; - } -LABEL_119: - v135 = a2 == -1; - v124 = v135 & (a1 != 0); -LABEL_120: - *a6 |= 4u; - if ( v124 ) - goto LABEL_189; -LABEL_121: - v37 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v37 = 0; - if ( a3[2] >= a3[3] ) - v37 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - } - if ( v37 == v135 ) - *a6 |= 2u; - if ( Block != v152 ) - operator delete(Block); - if ( v147 != v149 ) - operator delete(v147); - return a1; - case 3: - if ( !*(_DWORD *)(v117 + 32) ) - { - if ( !*(_DWORD *)(v117 + 40) ) - goto LABEL_74; -LABEL_199: - v141 = a2 == -1; - if ( !a1 || a2 != -1 ) - { - v130 = a2 == -1; - goto LABEL_202; - } -LABEL_253: - v130 = 1; - v141 = 0; - if ( a1[2] >= a1[3] ) - { - v67 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v68 = 0; - if ( !v67 ) - v68 = a1; - v130 = 1; - v141 = v67; - a1 = v68; - } -LABEL_202: - v51 = a4 == -1; - v109 = v51 & (a3 != 0); - if ( v109 ) - { - v51 = 0; - if ( a3[2] >= a3[3] ) - { - v84 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v51 = 0; - if ( v84 ) - v51 = v109; - v85 = 0; - if ( !v84 ) - v85 = a3; - a3 = v85; - } - } - if ( v51 == v141 ) - { -LABEL_204: - if ( !*(_DWORD *)(v117 + 32) || *(_DWORD *)(v117 + 40) ) - { -LABEL_74: - v25 = v110; - v104 = !v110; - goto LABEL_137; - } - goto LABEL_157; - } - if ( a1 && v130 ) - { - v70 = (_BYTE *)a1[2]; - if ( (unsigned int)v70 < a1[3] ) - { - if ( *v70 != **(_BYTE **)(v117 + 36) ) - goto LABEL_204; - v101 = *(_DWORD *)(v117 + 40); - goto LABEL_267; - } - v71 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v93 = 0; - if ( v71 != -1 ) - v93 = a1; - a1 = v93; - } - else - { - LOBYTE(v71) = a2; - } - if ( **(_BYTE **)(v117 + 36) != (_BYTE)v71 ) - goto LABEL_204; - v101 = *(_DWORD *)(v117 + 40); - v70 = (_BYTE *)a1[2]; - if ( (unsigned int)v70 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_268; - } -LABEL_267: - a1[2] = v70 + 1; -LABEL_268: - a2 = -1; - v25 = 0; - v104 = 1; - v111 = 1; - goto LABEL_137; - } - v139 = a2 == -1; - if ( v139 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v90 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v91 = 0; - if ( !v90 ) - v91 = a1; - v92 = v139 && a1 != 0; - a1 = v91; - if ( !v90 ) - v92 = 0; - v128 = v92; - } - else - { - v128 = 0; - } - } - else - { - v128 = a2 == -1; - } - v43 = a4 == -1; - v108 = v43 & (a3 != 0); - if ( v108 ) - { - v43 = 0; - if ( a3[2] >= a3[3] ) - { - v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v43 = 0; - if ( v82 ) - v43 = v108; - v83 = 0; - if ( !v82 ) - v83 = a3; - a3 = v83; - } - } - if ( v128 == v43 ) - { -LABEL_155: - if ( *(_DWORD *)(v117 + 40) ) - goto LABEL_199; -LABEL_156: - if ( !*(_DWORD *)(v117 + 32) ) - goto LABEL_74; -LABEL_157: - v104 = 1; - v25 = 0; - v111 = 1; - goto LABEL_137; - } - if ( a1 && a2 == -1 ) - { - v66 = (_BYTE *)a1[2]; - if ( (unsigned int)v66 < a1[3] ) - { - if ( **(_BYTE **)(v117 + 28) != *v66 ) - { - if ( *(_DWORD *)(v117 + 40) ) - goto LABEL_253; - goto LABEL_156; - } - v101 = *(_DWORD *)(v117 + 32); - goto LABEL_260; - } - v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v94 = 0; - if ( v69 != -1 ) - v94 = a1; - a1 = v94; - } - else - { - LOBYTE(v69) = a2; - } - if ( **(_BYTE **)(v117 + 28) != (_BYTE)v69 ) - goto LABEL_155; - v101 = *(_DWORD *)(v117 + 32); - v66 = (_BYTE *)a1[2]; - if ( (unsigned int)v66 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_261: - a2 = -1; - v25 = 0; -LABEL_198: - v104 = 1; - goto LABEL_137; - } -LABEL_260: - a1[2] = v66 + 1; - goto LABEL_261; - case 4: - while ( 2 ) - { - v132 = a2 == -1; - if ( v132 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v54 = 0; - if ( !v53 ) - v54 = a1; - v55 = v132 && a1 != 0; - a1 = v54; - if ( !v53 ) - v55 = 0; - v121 = v55; - } - else - { - v121 = 0; - } - } - else - { - v121 = a2 == -1; - } - v11 = a4 == -1; - v103 = v11 & (a3 != 0); - if ( v103 && (v11 = 0, a3[2] >= a3[3]) ) - { - v34 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v35 = v103; - if ( !v34 ) - v35 = 0; - v36 = 0; - if ( !v34 ) - v36 = a3; - a3 = v36; - if ( v35 == v121 ) - goto LABEL_117; - } - else if ( v11 == v121 ) - { - goto LABEL_117; - } - if ( a1 && a2 == -1 ) - { - v39 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v39 >= a1[3] ) - { - v56 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v57 = v56 == -1; - v58 = -1; - if ( v56 != -1 ) - v58 = v56; - v59 = 0; - if ( !v57 ) - v59 = a1; - v133 = v58; - a1 = v59; - } - else - { - v133 = *v39; - } - } - else - { - v133 = a2; - } - v12 = memchr((const void *)(v117 + 57), (char)v133, 0xAu); - if ( v12 ) - { - v7 = Block; - v131 = v12[(_DWORD)std::money_base::_S_atoms - 56 - v117]; - v143 = v151; - v8 = 15; - if ( Block != v152 ) - v8 = v152[0]; - v120 = (std::locale::facet *)(v151 + 1); - if ( v151 + 1 > v8 ) - { - std::string::_M_mutate((int)&Block, v151, 0, 0, 1u); - v7 = Block; - } - ++v116; - v7[v143] = v131; - v151 = (size_t)v120; - *((_BYTE *)Block + v143 + 1) = 0; -LABEL_14: - v9 = a1; - v10 = a1[2]; - if ( v10 < a1[3] ) - { -LABEL_15: - v9[2] = v10 + 1; -LABEL_16: - a2 = -1; - continue; - } -LABEL_35: - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_16; - } - break; - } - v104 = v112 | (*(_BYTE *)(v117 + 17) != v133); - if ( !v104 ) - { - if ( *(int *)(v117 + 44) > 0 ) - { - v40 = v116; - v112 = 1; - v116 = 0; - v97 = v40; - goto LABEL_14; - } - v112 = 0; -LABEL_117: - v104 = 1; -LABEL_118: - if ( !v151 ) - goto LABEL_119; - goto LABEL_136; - } - v13 = *(_BYTE *)(v117 + 16); - if ( !v13 ) - goto LABEL_118; - if ( *(_BYTE *)(v117 + 18) == v133 ) - { - if ( !v112 ) - { - if ( v116 ) - { - v134 = v116; - v14 = v147; - v144 = (size_t)v148; - v15 = 15; - if ( v147 != v149 ) - v15 = v149[0]; - v122 = (std::locale::facet *)((char *)v148 + 1); - if ( (unsigned int)v148 + 1 > v15 ) - { - std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); - v14 = v147; - } - v116 = 0; - v14[v144] = v134; - v148 = v122; - *((_BYTE *)v147 + v144 + 1) = 0; - v9 = a1; - v10 = a1[2]; - if ( v10 < a1[3] ) - goto LABEL_15; - goto LABEL_35; - } - v104 = 0; - goto LABEL_118; - } - v13 = v112; - } - v104 = v13; - if ( !v151 ) - goto LABEL_119; -LABEL_136: - v25 = v104 ^ 1; - goto LABEL_137; - default: - v104 = 1; - v25 = 0; - goto LABEL_137; - } - } -} -// 49066B: variable 'v95' is possibly undefined -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 53F70C: using guessed type signed __int32 std::moneypunct::id; -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (00490DB0) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); -} - -//----- (00490DC0) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00490DD0) -------------------------------------------------------- -__int64 __stdcall std::money_get>::do_get( - __int64 a1, - _DWORD *a2, - int a3, - char a4, - int a5, - _DWORD *a6, - int *a7) -{ - __int64 v7; // rax - char v9; // al - void (__thiscall *v10)(_BYTE *, char *, char *, void *); // eax - void *v11; // [esp+28h] [ebp-70h] - char *v12; // [esp+2Ch] [ebp-6Ch] - _BYTE *v13; // [esp+30h] [ebp-68h] - _DWORD *Size; // [esp+34h] [ebp-64h] - char *Block; // [esp+38h] [ebp-60h] - void *v16; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - char v18[24]; // [esp+80h] [ebp-18h] BYREF - __int64 v19; // [esp+A0h] [ebp+8h] - - v18[0] = 0; - v13 = std::use_facet>(a5 + 108); - v16 = v18; - v17 = 0; - if ( a4 ) - LODWORD(v7) = std::money_get>::_M_extract( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - a5, - a6, - &v16); - else - LODWORD(v7) = std::money_get>::_M_extract( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - a5, - a6, - &v16); - v19 = v7; - Size = v17; - if ( !v17 ) - goto LABEL_4; - std::string::resize(a7, v17, 0); - Block = (char *)v16; - v12 = (char *)v16 + (_DWORD)Size; - v9 = v13[28]; - v11 = (void *)*a7; - if ( v9 != 1 ) - { - if ( !v9 ) - std::ctype::_M_widen_init((int)v13); - v10 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v10 == (char *)std::ctype::do_widen ) - { - if ( v12 != Block ) - { -LABEL_14: - memcpy(v11, Block, (size_t)Size); - Block = (char *)v16; - goto LABEL_5; - } - } - else - { - v10(v13, Block, v12, v11); - } -LABEL_4: - Block = (char *)v16; - goto LABEL_5; - } - if ( v12 != v16 ) - goto LABEL_14; -LABEL_5: - if ( Block != v18 ) - operator delete(Block); - return v19; -} -// 490E76: variable 'v7' is possibly undefined - -//----- (00490FE0) -------------------------------------------------------- -__int64 __stdcall std::money_get>::do_get( - __int64 a1, - _DWORD *a2, - int a3, - char a4, - int a5, - _DWORD *a6, - long double *a7) -{ - __int64 v7; // rax - void *Block[2]; // [esp+68h] [ebp-20h] BYREF - char v10[24]; // [esp+70h] [ebp-18h] BYREF - __int64 v11; // [esp+90h] [ebp+8h] - - Block[0] = v10; - Block[1] = 0; - v10[0] = 0; - if ( a4 ) - LODWORD(v7) = std::money_get>::_M_extract( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - a5, - a6, - Block); - else - LODWORD(v7) = std::money_get>::_M_extract( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - a5, - a6, - Block); - v11 = v7; - std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((char *)Block[0], a7, a6); - if ( Block[0] != v10 ) - operator delete(Block[0]); - return v11; -} -// 491071: variable 'v7' is possibly undefined - -//----- (00491110) -------------------------------------------------------- -_DWORD *__stdcall std::money_get>::_M_extract( - _DWORD *a1, - __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - char v7; // al - _BYTE *v8; // edx - unsigned int v9; // eax - _DWORD *v10; // ecx - unsigned int v11; // eax - char v12; // al - __int16 v13; // dx - _WORD *v14; // eax - _BYTE *v15; // edx - unsigned int v16; // eax - char v17; // al - int v18; // eax - char v19; // al - __int16 v20; // ax - unsigned int v21; // eax - __int16 *v22; // eax - __int16 v23; // ax - bool v24; // zf - _DWORD *v25; // eax - char v26; // bl - char v27; // al - unsigned __int16 v28; // ax - unsigned int v29; // eax - __int16 *v30; // eax - __int16 v31; // ax - bool v32; // zf - _DWORD *v33; // eax - bool v34; // bl - char v35; // al - unsigned __int16 v36; // ax - unsigned int v37; // eax - char v38; // al - int v39; // edx - bool v40; // al - __int16 v41; // ax - unsigned int v42; // eax - __int16 *v43; // eax - __int16 v44; // ax - bool v45; // zf - _DWORD *v46; // eax - bool v47; // bl - __int16 *v48; // eax - __int16 v49; // ax - bool v50; // zf - _DWORD *v51; // ebx - char v52; // al - _BYTE *v53; // eax - _BYTE *v54; // edx - __int16 *v56; // eax - __int16 v57; // ax - bool v58; // zf - _DWORD *v59; // eax - bool v60; // bl - __int16 *v61; // eax - _DWORD *v62; // eax - char v63; // al - __int16 *v64; // eax - __int16 v65; // ax - bool v66; // zf - _DWORD *v67; // ebx - unsigned __int16 *v68; // eax - _DWORD *v69; // ebx - char v70; // al - __int16 *v71; // eax - __int16 v72; // ax - bool v73; // zf - _DWORD *v74; // ebx - char v75; // al - _BYTE *v76; // eax - unsigned int v77; // edx - __int16 *v78; // eax - _DWORD *v79; // ebx - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // ebx - __int16 *v84; // eax - _DWORD *v85; // ebx - char v86; // al - unsigned int first_not_of; // eax - __int16 v88; // ax - unsigned int v89; // eax - _DWORD *v90; // eax - __int16 *v91; // eax - __int16 v92; // ax - __int16 *v93; // eax - __int16 v94; // ax - unsigned __int8 v95; // bl - bool v96; // zf - __int16 *v97; // eax - __int16 v98; // ax - bool v99; // zf - _DWORD *v100; // ebx - __int16 *v101; // eax - __int16 v102; // ax - bool v103; // zf - _DWORD *v104; // eax - bool v105; // bl - __int16 *v106; // eax - __int16 v107; // ax - _DWORD *v108; // ebx - unsigned int v109; // eax - __int16 *v110; // eax - _DWORD *v111; // ebx - __int16 *v112; // eax - __int16 v113; // ax - bool v114; // zf - _DWORD *v115; // eax - bool v116; // bl - __int16 *v117; // eax - __int16 v118; // ax - bool v119; // zf - _DWORD *v120; // eax - bool v121; // bl - __int16 *v122; // eax - __int16 v123; // ax - bool v124; // zf - _DWORD *v125; // ebx - unsigned __int16 *v126; // eax - _DWORD *v127; // ebx - __int16 *v128; // eax - __int16 v129; // ax - bool v130; // zf - _DWORD *v131; // ebx - unsigned int v132; // [esp+8h] [ebp-E0h] - std::locale::_Impl *v133; // [esp+1Ch] [ebp-CCh] - char v134; // [esp+20h] [ebp-C8h] - char v135; // [esp+2Ch] [ebp-BCh] - unsigned int v136; // [esp+2Ch] [ebp-BCh] - void *v137; // [esp+30h] [ebp-B8h] - unsigned int v138; // [esp+34h] [ebp-B4h] - int v139; // [esp+3Ch] [ebp-ACh] - int v140; // [esp+3Ch] [ebp-ACh] - bool v141; // [esp+40h] [ebp-A8h] - char v142; // [esp+41h] [ebp-A7h] - bool v143; // [esp+42h] [ebp-A6h] - char v144; // [esp+43h] [ebp-A5h] - char v145; // [esp+44h] [ebp-A4h] - char v146; // [esp+48h] [ebp-A0h] - char v147; // [esp+48h] [ebp-A0h] - unsigned int i; // [esp+48h] [ebp-A0h] - char v149; // [esp+48h] [ebp-A0h] - unsigned int v150; // [esp+48h] [ebp-A0h] - char v151; // [esp+48h] [ebp-A0h] - char v152; // [esp+48h] [ebp-A0h] - int *v153; // [esp+4Ch] [ebp-9Ch] - int v154; // [esp+4Ch] [ebp-9Ch] - size_t v155; // [esp+50h] [ebp-98h] - int v156; // [esp+54h] [ebp-94h] - std::locale::facet *v157; // [esp+58h] [ebp-90h] - std::locale::facet *v158; // [esp+58h] [ebp-90h] - char v159; // [esp+58h] [ebp-90h] - std::locale::facet *v160; // [esp+58h] [ebp-90h] - char v161; // [esp+58h] [ebp-90h] - char v162; // [esp+58h] [ebp-90h] - char v163; // [esp+58h] [ebp-90h] - bool v164; // [esp+58h] [ebp-90h] - char v165; // [esp+58h] [ebp-90h] - char v166; // [esp+58h] [ebp-90h] - bool v167; // [esp+58h] [ebp-90h] - char v169; // [esp+60h] [ebp-88h] - bool v170; // [esp+60h] [ebp-88h] - char v171; // [esp+60h] [ebp-88h] - unsigned __int8 v172; // [esp+60h] [ebp-88h] - bool v173; // [esp+60h] [ebp-88h] - bool v174; // [esp+60h] [ebp-88h] - bool v175; // [esp+60h] [ebp-88h] - bool v176; // [esp+60h] [ebp-88h] - size_t v177; // [esp+60h] [ebp-88h] - char v178; // [esp+60h] [ebp-88h] - size_t v180; // [esp+64h] [ebp-84h] - size_t v181; // [esp+64h] [ebp-84h] - int v183; // [esp+ACh] [ebp-3Ch] - void *v184; // [esp+B0h] [ebp-38h] BYREF - size_t v185; // [esp+B4h] [ebp-34h] - int v186[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - size_t v188; // [esp+CCh] [ebp-1Ch] - int v189[5]; // [esp+D0h] [ebp-18h] BYREF - - v137 = std::use_facet>(a5 + 108); - v157 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v153 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v157); - v156 = *v153; - if ( !*v153 ) - { - v90 = operator new(0x54u); - v90[1] = 0; - *v90 = &off_5606F4; - v90[2] = 0; - v90[3] = 0; - *((_BYTE *)v90 + 16) = 0; - *(_DWORD *)((char *)v90 + 18) = 0; - v90[6] = 0; - v90[7] = 0; - v90[8] = 0; - v90[9] = 0; - v90[10] = 0; - v90[11] = 0; - v90[12] = 0; - v90[13] = 0; - v90[14] = 0; - *((_BYTE *)v90 + 82) = 0; - v133 = (std::locale::_Impl *)v90; - std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v133, v157, v132); - v156 = *v153; - } - if ( *(_DWORD *)(v156 + 36) ) - v141 = *(_DWORD *)(v156 + 44) != 0; - else - v141 = 0; - v185 = 0; - v184 = v186; - LOBYTE(v186[0]) = 0; - if ( *(_BYTE *)(v156 + 16) ) - std::string::reserve(&v184, 0x20u); - Block = v189; - v188 = 0; - LOBYTE(v189[0]) = 0; - std::string::reserve(&Block, 0x20u); - v139 = 0; - v144 = 0; - v154 = 0; - v183 = *(_DWORD *)(v156 + 56); - v134 = 0; - v138 = 0; - v142 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)&v183 + v139) ) - { - case 0: - v146 = 1; - goto LABEL_39; - case 1: - v174 = a2 == -1; - if ( v174 && a1 != 0 ) - { - v101 = (__int16 *)a1[2]; - if ( (unsigned int)v101 >= a1[3] ) - v102 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v102 = *v101; - v103 = v102 == -1; - v104 = 0; - if ( !v103 ) - v104 = a1; - v105 = v174 && a1 != 0; - a1 = v104; - if ( !v103 ) - v105 = 0; - v163 = v105; - } - else - { - v163 = a2 == -1; - } - v35 = a4 == -1; - v149 = v35 & (a3 != 0); - if ( v149 ) - { - v97 = (__int16 *)a3[2]; - if ( (unsigned int)v97 >= a3[3] ) - v98 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v98 = *v97; - v99 = v98 == -1; - v35 = 0; - if ( v99 ) - v35 = v149; - v100 = 0; - if ( !v99 ) - v100 = a3; - a3 = v100; - } - v146 = 0; - if ( v35 != v163 ) - { - if ( a1 && a2 == -1 ) - { - v126 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v126 >= a1[3] ) - v36 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v36 = *v126; - v127 = 0; - if ( v36 != 0xFFFF ) - v127 = a1; - a1 = v127; - } - else - { - v36 = a2; - } - v146 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v36); - if ( v146 ) - { - v37 = a1[2]; - if ( v37 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v37 + 2; - a2 = -1; - } - } -LABEL_39: - if ( v139 == 3 ) - { - v17 = v146 & (v138 > 1); - goto LABEL_41; - } - while ( 1 ) - { - v173 = a2 == -1; - if ( v173 && a1 != 0 ) - { - v30 = (__int16 *)a1[2]; - if ( (unsigned int)v30 >= a1[3] ) - v31 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v31 = *v30; - v32 = v31 == -1; - v33 = 0; - if ( !v32 ) - v33 = a1; - v34 = v173 && a1 != 0; - a1 = v33; - if ( !v32 ) - v34 = 0; - v162 = v34; - } - else - { - v162 = a2 == -1; - } - v27 = a4 == -1; - v135 = v27 & (a3 != 0); - if ( v135 ) - { - v64 = (__int16 *)a3[2]; - if ( (unsigned int)v64 >= a3[3] ) - v65 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v65 = *v64; - v66 = v65 == -1; - v67 = 0; - v27 = v135; - if ( !v66 ) - v67 = a3; - a3 = v67; - if ( !v66 ) - v27 = 0; - } - if ( v162 == v27 ) - break; - if ( a1 && a2 == -1 ) - { - v68 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v68 >= a1[3] ) - v28 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v28 = *v68; - v69 = 0; - if ( v28 != 0xFFFF ) - v69 = a1; - a1 = v69; - } - else - { - v28 = a2; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v28) ) - break; - v29 = a1[2]; - if ( v29 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v29 + 2; - a2 = -1; - } - goto LABEL_157; - case 2: - if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) - goto LABEL_103; - v38 = v139 == 0 || v138 > 1; - if ( v38 ) - goto LABEL_103; - if ( v139 != 1 ) - { - v146 = 1; - if ( v139 != 2 ) - goto LABEL_158; - if ( HIBYTE(v183) == 4 ) - goto LABEL_103; - v39 = 3; - if ( HIBYTE(v183) == 3 && v141 ) - goto LABEL_103; -LABEL_160: - v139 = v39; - continue; - } - if ( !v141 && (_BYTE)v183 != 3 && BYTE2(v183) != 1 ) - { - v39 = 2; - goto LABEL_160; - } -LABEL_103: - v150 = 0; - v136 = *(_DWORD *)(v156 + 28); - while ( 1 ) - { - v175 = a2 == -1; - if ( v175 && a1 != 0 ) - { - v43 = (__int16 *)a1[2]; - if ( (unsigned int)v43 >= a1[3] ) - v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v44 = *v43; - v45 = v44 == -1; - v46 = 0; - if ( !v45 ) - v46 = a1; - v47 = v175 && a1 != 0; - a1 = v46; - if ( !v45 ) - v47 = 0; - v164 = v47; - } - else - { - v164 = a2 == -1; - } - v40 = a4 == -1; - v143 = v40 && a3 != 0; - if ( v143 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - v40 = v143; - if ( !v82 ) - v83 = a3; - a3 = v83; - if ( !v82 ) - v40 = 0; - } - v38 = (v150 < v136) & (v164 ^ v40); - if ( !v38 ) - break; - if ( a1 && a2 == -1 ) - { - v84 = (__int16 *)a1[2]; - if ( (unsigned int)v84 >= a1[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v41 = *v84; - v85 = 0; - if ( v41 != -1 ) - v85 = a1; - a1 = v85; - } - else - { - v41 = a2; - } - if ( *(_WORD *)(*(_DWORD *)(v156 + 24) + 2 * v150) != v41 ) - goto LABEL_227; - v42 = a1[2]; - if ( v42 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v42 + 2; - ++v150; - a2 = -1; - } - if ( v150 == v136 ) - { -LABEL_247: - v146 = 1; - } - else - { -LABEL_227: - if ( v150 ) - goto LABEL_131; - v146 = (*(_BYTE *)(a5 + 13) & 2) == 0; - v38 = (*(_BYTE *)(a5 + 13) & 2) != 0; - } -LABEL_158: - v39 = v139 + 1; - if ( v139 + 1 <= 3 && !v38 ) - goto LABEL_160; - v17 = v146 & (v138 > 1); -LABEL_41: - if ( v17 ) - { - if ( v142 ) - v18 = *(_DWORD *)(v156 + 40); - else - v18 = *(_DWORD *)(v156 + 32); - v140 = v18; - for ( i = 1; ; ++i ) - { - v172 = a2 == -1; - if ( (v172 & (a1 != 0)) != 0 ) - { - v22 = (__int16 *)a1[2]; - if ( (unsigned int)v22 >= a1[3] ) - v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v23 = *v22; - v24 = v23 == -1; - v25 = 0; - if ( !v24 ) - v25 = a1; - v26 = v172 & (a1 != 0); - a1 = v25; - if ( !v24 ) - v26 = 0; - v161 = v26; - } - else - { - v161 = a2 == -1; - } - v19 = a4 == -1; - v145 = v19 & (a3 != 0); - if ( v145 ) - { - v71 = (__int16 *)a3[2]; - if ( (unsigned int)v71 >= a3[3] ) - v72 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v72 = *v71; - v73 = v72 == -1; - v74 = 0; - v19 = v145; - if ( !v73 ) - v74 = a3; - a3 = v74; - if ( !v73 ) - v19 = 0; - if ( i >= v138 ) - { -LABEL_189: - if ( i == v138 ) - { - if ( v188 <= 1 ) - goto LABEL_191; - goto LABEL_236; - } - goto LABEL_132; - } - } - else if ( i >= v138 ) - { - goto LABEL_189; - } - if ( v19 == v161 ) - goto LABEL_189; - if ( a1 && a2 == -1 ) - { - v78 = (__int16 *)a1[2]; - if ( (unsigned int)v78 >= a1[3] ) - v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v20 = *v78; - v79 = 0; - if ( v20 != -1 ) - v79 = a1; - a1 = v79; - } - else - { - v20 = a2; - } - if ( *(_WORD *)(v140 + 2 * i) != v20 ) - goto LABEL_132; - v21 = a1[2]; - if ( v21 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v21 + 2; - a2 = -1; - } - } - if ( !v146 ) - { -LABEL_131: - v172 = a2 == -1; - goto LABEL_132; - } - if ( v188 <= 1 ) - goto LABEL_191; -LABEL_236: - first_not_of = std::string::find_first_not_of(&Block, 48, 0); - if ( first_not_of ) - { - if ( first_not_of != -1 ) - goto LABEL_238; - first_not_of = v188 - 1; - if ( !v188 ) - { - v188 = 0; - *(_BYTE *)Block = 0; - goto LABEL_191; - } - if ( v188 != 1 ) - { -LABEL_238: - if ( v188 <= first_not_of ) - first_not_of = v188; - std::string::_M_erase((int *)&Block, 0, first_not_of); - } - } -LABEL_191: - if ( v142 && *(_BYTE *)Block != 48 ) - std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); - v177 = v185; - if ( v185 ) - { - v75 = v134; - if ( !v144 ) - v75 = v154; - v155 = v185 + 1; - v166 = v75; - v76 = v184; - v77 = 15; - if ( v184 != v186 ) - v77 = v186[0]; - if ( v185 + 1 > v77 ) - { - std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); - v76 = v184; - } - v76[v177] = v166; - v185 = v155; - *((_BYTE *)v184 + v177 + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v156 + 8), *(_DWORD *)(v156 + 12), (int)&v184) ) - *a6 |= 4u; - } - v172 = a2 == -1; - if ( v144 && *(_DWORD *)(v156 + 48) != v154 ) - { -LABEL_132: - v53 = a6; - *a6 |= 4u; - } - else - { - v53 = std::string::swap(a7, &Block); - } - if ( (v172 & (a1 != 0)) != 0 ) - { - v93 = (__int16 *)a1[2]; - if ( (unsigned int)v93 >= a1[3] ) - v94 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v94 = *v93; - v95 = v172 & (a1 != 0); - v96 = v94 == -1; - if ( v94 != -1 ) - v95 = 0; - v53 = 0; - if ( !v96 ) - v53 = a1; - v172 = v95; - a1 = v53; - } - LOBYTE(v53) = a4 == -1; - v54 = v53; - if ( a3 && a4 == -1 ) - { - v91 = (__int16 *)a3[2]; - if ( (unsigned int)v91 >= a3[3] ) - v92 = (*(int (__fastcall **)(_DWORD *, _BYTE *))(*a3 + 36))(a3, v54); - else - v92 = *v91; - LOBYTE(v54) = v92 == -1; - } - if ( (_BYTE)v54 == v172 ) - *a6 |= 2u; - if ( Block != v189 ) - operator delete(Block); - if ( v184 != v186 ) - operator delete(v184); - return a1; - case 3: - if ( *(_DWORD *)(v156 + 36) ) - { - v176 = a2 == -1; - if ( v176 && a1 != 0 ) - { - v112 = (__int16 *)a1[2]; - if ( (unsigned int)v112 >= a1[3] ) - v113 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v113 = *v112; - v114 = v113 == -1; - v115 = 0; - if ( !v114 ) - v115 = a1; - v116 = v176 && a1 != 0; - a1 = v115; - if ( !v114 ) - v116 = 0; - v165 = v116; - } - else - { - v165 = a2 == -1; - } - v70 = a4 == -1; - v151 = v70 & (a3 != 0); - if ( v151 ) - { - v122 = (__int16 *)a3[2]; - if ( (unsigned int)v122 >= a3[3] ) - v123 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v123 = *v122; - v124 = v123 == -1; - v70 = 0; - if ( v124 ) - v70 = v151; - v125 = 0; - if ( !v124 ) - v125 = a3; - a3 = v125; - } - if ( v165 != v70 ) - { - if ( a1 && a2 == -1 ) - { - v110 = (__int16 *)a1[2]; - if ( (unsigned int)v110 >= a1[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v88 = *v110; - v111 = 0; - if ( v88 != -1 ) - v111 = a1; - a1 = v111; - } - else - { - v88 = a2; - } - if ( **(_WORD **)(v156 + 32) == v88 ) - { - v138 = *(_DWORD *)(v156 + 36); - v89 = a1[2]; - if ( v89 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v89 + 2; - v38 = 0; - a2 = -1; - goto LABEL_247; - } - } - if ( !*(_DWORD *)(v156 + 44) ) - { - if ( !*(_DWORD *)(v156 + 36) ) - goto LABEL_95; -LABEL_181: - v146 = 1; - v38 = 0; - v142 = 1; - goto LABEL_158; - } - } - else if ( !*(_DWORD *)(v156 + 44) ) - { - goto LABEL_95; - } - v167 = a2 == -1; - if ( v167 && a1 != 0 ) - { - v117 = (__int16 *)a1[2]; - if ( (unsigned int)v117 >= a1[3] ) - v118 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v118 = *v117; - v119 = v118 == -1; - v120 = 0; - if ( !v119 ) - v120 = a1; - v121 = v167 && a1 != 0; - a1 = v120; - if ( !v119 ) - v121 = 0; - v178 = v121; - } - else - { - v178 = a2 == -1; - } - v86 = a4 == -1; - v152 = v86 & (a3 != 0); - if ( v152 ) - { - v128 = (__int16 *)a3[2]; - if ( (unsigned int)v128 >= a3[3] ) - v129 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v129 = *v128; - v130 = v129 == -1; - v86 = 0; - if ( v130 ) - v86 = v152; - v131 = 0; - if ( !v130 ) - v131 = a3; - a3 = v131; - } - if ( v178 == v86 ) - goto LABEL_369; - if ( a1 && a2 == -1 ) - { - v106 = (__int16 *)a1[2]; - if ( (unsigned int)v106 >= a1[3] ) - v107 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v107 = *v106; - v108 = 0; - if ( v107 != -1 ) - v108 = a1; - a1 = v108; - } - else - { - v107 = a2; - } - if ( **(_WORD **)(v156 + 40) != v107 ) - { -LABEL_369: - if ( !*(_DWORD *)(v156 + 36) || *(_DWORD *)(v156 + 44) ) - { -LABEL_95: - v38 = v141; - v146 = !v141; - goto LABEL_158; - } - goto LABEL_181; - } - v138 = *(_DWORD *)(v156 + 44); - v109 = a1[2]; - if ( v109 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v109 + 2; - v146 = 1; - v38 = 0; - a2 = -1; - v142 = 1; - goto LABEL_158; - case 4: - while ( 2 ) - { - v170 = a2 == -1; - if ( v170 && a1 != 0 ) - { - v56 = (__int16 *)a1[2]; - if ( (unsigned int)v56 >= a1[3] ) - v57 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v57 = *v56; - v58 = v57 == -1; - v59 = 0; - if ( !v58 ) - v59 = a1; - v60 = v170 && a1 != 0; - a1 = v59; - if ( !v58 ) - v60 = 0; - v159 = v60; - } - else - { - v159 = a2 == -1; - } - v12 = a4 == -1; - v147 = v12 & (a3 != 0); - if ( v147 ) - { - v48 = (__int16 *)a3[2]; - if ( (unsigned int)v48 >= a3[3] ) - v49 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v49 = *v48; - v50 = v49 == -1; - v51 = 0; - v52 = v147; - if ( !v50 ) - v51 = a3; - a3 = v51; - if ( !v50 ) - v52 = 0; - if ( v159 == v52 ) - goto LABEL_129; - } - else if ( v159 == v12 ) - { - goto LABEL_129; - } - if ( a1 && a2 == -1 ) - { - v61 = (__int16 *)a1[2]; - if ( (unsigned int)v61 >= a1[3] ) - v13 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v13 = *v61; - v62 = 0; - if ( v13 != -1 ) - v62 = a1; - a1 = v62; - } - else - { - v13 = a2; - } - v14 = (_WORD *)(v156 + 62); - if ( v13 == *(_WORD *)(v156 + 62) ) - { -LABEL_32: - v15 = Block; - v171 = std::money_base::_S_atoms[((int)v14 - v156 - 60) >> 1]; - v181 = v188; - v16 = 15; - if ( Block != v189 ) - v16 = v189[0]; - v160 = (std::locale::facet *)(v188 + 1); - if ( v188 + 1 > v16 ) - { - std::string::_M_mutate((int)&Block, v188, 0, 0, 1u); - v15 = Block; - } - ++v154; - v15[v181] = v171; - v188 = (size_t)v160; - *((_BYTE *)Block + v181 + 1) = 0; - v10 = a1; - v11 = a1[2]; - if ( v11 >= a1[3] ) - { -LABEL_37: - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_21; - } -LABEL_20: - v10[2] = v11 + 2; -LABEL_21: - a2 = -1; - continue; - } - break; - } - while ( ++v14 != (_WORD *)(v156 + 82) ) - { - if ( v13 == *v14 ) - goto LABEL_32; - } - v7 = v144 | (*(_WORD *)(v156 + 18) != (unsigned __int16)v13); - if ( v7 ) - { - v146 = *(_BYTE *)(v156 + 16); - if ( !v146 ) - goto LABEL_249; - if ( *(_WORD *)(v156 + 20) == v13 ) - { - if ( !v144 ) - { - if ( v154 ) - { - v169 = v154; - v8 = v184; - v180 = v185; - v9 = 15; - if ( v184 != v186 ) - v9 = v186[0]; - v158 = (std::locale::facet *)(v185 + 1); - if ( v185 + 1 > v9 ) - { - std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); - v8 = v184; - } - v154 = 0; - v8[v180] = v169; - v185 = (size_t)v158; - *((_BYTE *)v184 + v180 + 1) = 0; -LABEL_19: - v10 = a1; - v11 = a1[2]; - if ( v11 >= a1[3] ) - goto LABEL_37; - goto LABEL_20; - } - v146 = 0; - goto LABEL_130; - } - v7 = v144; -LABEL_249: - v146 = v7; - if ( !v188 ) - goto LABEL_131; - goto LABEL_157; - } -LABEL_130: - if ( !v188 ) - goto LABEL_131; -LABEL_157: - v38 = v146 ^ 1; - goto LABEL_158; - } - if ( *(int *)(v156 + 48) > 0 ) - { - v63 = v154; - v144 = 1; - v154 = 0; - v134 = v63; - goto LABEL_19; - } - v144 = 0; -LABEL_129: - v146 = 1; - goto LABEL_130; - default: - v146 = 1; - v38 = 0; - goto LABEL_158; - } - } -} -// 49228F: variable 'v132' is possibly undefined -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 53F710: using guessed type signed __int32 std::moneypunct::id; -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (00492910) -------------------------------------------------------- -_DWORD *__stdcall std::money_get>::_M_extract( - _DWORD *a1, - __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - char v7; // al - _BYTE *v8; // edx - unsigned int v9; // eax - _DWORD *v10; // ecx - unsigned int v11; // eax - char v12; // al - __int16 v13; // dx - _WORD *v14; // eax - _BYTE *v15; // edx - unsigned int v16; // eax - char v17; // al - int v18; // eax - char v19; // al - __int16 v20; // ax - unsigned int v21; // eax - __int16 *v22; // eax - __int16 v23; // ax - bool v24; // zf - _DWORD *v25; // eax - char v26; // bl - char v27; // al - unsigned __int16 v28; // ax - unsigned int v29; // eax - __int16 *v30; // eax - __int16 v31; // ax - bool v32; // zf - _DWORD *v33; // eax - bool v34; // bl - char v35; // al - unsigned __int16 v36; // ax - unsigned int v37; // eax - char v38; // al - int v39; // edx - bool v40; // al - __int16 v41; // ax - unsigned int v42; // eax - __int16 *v43; // eax - __int16 v44; // ax - bool v45; // zf - _DWORD *v46; // eax - bool v47; // bl - __int16 *v48; // eax - __int16 v49; // ax - bool v50; // zf - _DWORD *v51; // ebx - char v52; // al - _BYTE *v53; // eax - _BYTE *v54; // edx - __int16 *v56; // eax - __int16 v57; // ax - bool v58; // zf - _DWORD *v59; // eax - bool v60; // bl - __int16 *v61; // eax - _DWORD *v62; // eax - char v63; // al - __int16 *v64; // eax - __int16 v65; // ax - bool v66; // zf - _DWORD *v67; // ebx - unsigned __int16 *v68; // eax - _DWORD *v69; // ebx - char v70; // al - __int16 *v71; // eax - __int16 v72; // ax - bool v73; // zf - _DWORD *v74; // ebx - char v75; // al - _BYTE *v76; // eax - unsigned int v77; // edx - __int16 *v78; // eax - _DWORD *v79; // ebx - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // ebx - __int16 *v84; // eax - _DWORD *v85; // ebx - char v86; // al - unsigned int first_not_of; // eax - __int16 v88; // ax - unsigned int v89; // eax - _DWORD *v90; // eax - __int16 *v91; // eax - __int16 v92; // ax - __int16 *v93; // eax - __int16 v94; // ax - unsigned __int8 v95; // bl - bool v96; // zf - __int16 *v97; // eax - __int16 v98; // ax - bool v99; // zf - _DWORD *v100; // ebx - __int16 *v101; // eax - __int16 v102; // ax - bool v103; // zf - _DWORD *v104; // eax - bool v105; // bl - __int16 *v106; // eax - __int16 v107; // ax - _DWORD *v108; // ebx - unsigned int v109; // eax - __int16 *v110; // eax - _DWORD *v111; // ebx - __int16 *v112; // eax - __int16 v113; // ax - bool v114; // zf - _DWORD *v115; // eax - bool v116; // bl - __int16 *v117; // eax - __int16 v118; // ax - bool v119; // zf - _DWORD *v120; // eax - bool v121; // bl - __int16 *v122; // eax - __int16 v123; // ax - bool v124; // zf - _DWORD *v125; // ebx - unsigned __int16 *v126; // eax - _DWORD *v127; // ebx - __int16 *v128; // eax - __int16 v129; // ax - bool v130; // zf - _DWORD *v131; // ebx - unsigned int v132; // [esp+8h] [ebp-E0h] - std::locale::_Impl *v133; // [esp+1Ch] [ebp-CCh] - char v134; // [esp+20h] [ebp-C8h] - char v135; // [esp+2Ch] [ebp-BCh] - unsigned int v136; // [esp+2Ch] [ebp-BCh] - void *v137; // [esp+30h] [ebp-B8h] - unsigned int v138; // [esp+34h] [ebp-B4h] - int v139; // [esp+3Ch] [ebp-ACh] - int v140; // [esp+3Ch] [ebp-ACh] - bool v141; // [esp+40h] [ebp-A8h] - char v142; // [esp+41h] [ebp-A7h] - bool v143; // [esp+42h] [ebp-A6h] - char v144; // [esp+43h] [ebp-A5h] - char v145; // [esp+44h] [ebp-A4h] - char v146; // [esp+48h] [ebp-A0h] - char v147; // [esp+48h] [ebp-A0h] - unsigned int i; // [esp+48h] [ebp-A0h] - char v149; // [esp+48h] [ebp-A0h] - unsigned int v150; // [esp+48h] [ebp-A0h] - char v151; // [esp+48h] [ebp-A0h] - char v152; // [esp+48h] [ebp-A0h] - int *v153; // [esp+4Ch] [ebp-9Ch] - int v154; // [esp+4Ch] [ebp-9Ch] - size_t v155; // [esp+50h] [ebp-98h] - int v156; // [esp+54h] [ebp-94h] - std::locale::facet *v157; // [esp+58h] [ebp-90h] - std::locale::facet *v158; // [esp+58h] [ebp-90h] - char v159; // [esp+58h] [ebp-90h] - std::locale::facet *v160; // [esp+58h] [ebp-90h] - char v161; // [esp+58h] [ebp-90h] - char v162; // [esp+58h] [ebp-90h] - char v163; // [esp+58h] [ebp-90h] - bool v164; // [esp+58h] [ebp-90h] - char v165; // [esp+58h] [ebp-90h] - char v166; // [esp+58h] [ebp-90h] - bool v167; // [esp+58h] [ebp-90h] - char v169; // [esp+60h] [ebp-88h] - bool v170; // [esp+60h] [ebp-88h] - char v171; // [esp+60h] [ebp-88h] - unsigned __int8 v172; // [esp+60h] [ebp-88h] - bool v173; // [esp+60h] [ebp-88h] - bool v174; // [esp+60h] [ebp-88h] - bool v175; // [esp+60h] [ebp-88h] - bool v176; // [esp+60h] [ebp-88h] - size_t v177; // [esp+60h] [ebp-88h] - char v178; // [esp+60h] [ebp-88h] - size_t v180; // [esp+64h] [ebp-84h] - size_t v181; // [esp+64h] [ebp-84h] - int v183; // [esp+ACh] [ebp-3Ch] - void *v184; // [esp+B0h] [ebp-38h] BYREF - size_t v185; // [esp+B4h] [ebp-34h] - int v186[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - size_t v188; // [esp+CCh] [ebp-1Ch] - int v189[5]; // [esp+D0h] [ebp-18h] BYREF - - v137 = std::use_facet>(a5 + 108); - v157 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v153 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v157); - v156 = *v153; - if ( !*v153 ) - { - v90 = operator new(0x54u); - v90[1] = 0; - *v90 = &off_560704; - v90[2] = 0; - v90[3] = 0; - *((_BYTE *)v90 + 16) = 0; - *(_DWORD *)((char *)v90 + 18) = 0; - v90[6] = 0; - v90[7] = 0; - v90[8] = 0; - v90[9] = 0; - v90[10] = 0; - v90[11] = 0; - v90[12] = 0; - v90[13] = 0; - v90[14] = 0; - *((_BYTE *)v90 + 82) = 0; - v133 = (std::locale::_Impl *)v90; - std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v133, v157, v132); - v156 = *v153; - } - if ( *(_DWORD *)(v156 + 36) ) - v141 = *(_DWORD *)(v156 + 44) != 0; - else - v141 = 0; - v185 = 0; - v184 = v186; - LOBYTE(v186[0]) = 0; - if ( *(_BYTE *)(v156 + 16) ) - std::string::reserve(&v184, 0x20u); - Block = v189; - v188 = 0; - LOBYTE(v189[0]) = 0; - std::string::reserve(&Block, 0x20u); - v139 = 0; - v144 = 0; - v154 = 0; - v183 = *(_DWORD *)(v156 + 56); - v134 = 0; - v138 = 0; - v142 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)&v183 + v139) ) - { - case 0: - v146 = 1; - goto LABEL_39; - case 1: - v174 = a2 == -1; - if ( v174 && a1 != 0 ) - { - v101 = (__int16 *)a1[2]; - if ( (unsigned int)v101 >= a1[3] ) - v102 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v102 = *v101; - v103 = v102 == -1; - v104 = 0; - if ( !v103 ) - v104 = a1; - v105 = v174 && a1 != 0; - a1 = v104; - if ( !v103 ) - v105 = 0; - v163 = v105; - } - else - { - v163 = a2 == -1; - } - v35 = a4 == -1; - v149 = v35 & (a3 != 0); - if ( v149 ) - { - v97 = (__int16 *)a3[2]; - if ( (unsigned int)v97 >= a3[3] ) - v98 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v98 = *v97; - v99 = v98 == -1; - v35 = 0; - if ( v99 ) - v35 = v149; - v100 = 0; - if ( !v99 ) - v100 = a3; - a3 = v100; - } - v146 = 0; - if ( v35 != v163 ) - { - if ( a1 && a2 == -1 ) - { - v126 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v126 >= a1[3] ) - v36 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v36 = *v126; - v127 = 0; - if ( v36 != 0xFFFF ) - v127 = a1; - a1 = v127; - } - else - { - v36 = a2; - } - v146 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v36); - if ( v146 ) - { - v37 = a1[2]; - if ( v37 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v37 + 2; - a2 = -1; - } - } -LABEL_39: - if ( v139 == 3 ) - { - v17 = v146 & (v138 > 1); - goto LABEL_41; - } - while ( 1 ) - { - v173 = a2 == -1; - if ( v173 && a1 != 0 ) - { - v30 = (__int16 *)a1[2]; - if ( (unsigned int)v30 >= a1[3] ) - v31 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v31 = *v30; - v32 = v31 == -1; - v33 = 0; - if ( !v32 ) - v33 = a1; - v34 = v173 && a1 != 0; - a1 = v33; - if ( !v32 ) - v34 = 0; - v162 = v34; - } - else - { - v162 = a2 == -1; - } - v27 = a4 == -1; - v135 = v27 & (a3 != 0); - if ( v135 ) - { - v64 = (__int16 *)a3[2]; - if ( (unsigned int)v64 >= a3[3] ) - v65 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v65 = *v64; - v66 = v65 == -1; - v67 = 0; - v27 = v135; - if ( !v66 ) - v67 = a3; - a3 = v67; - if ( !v66 ) - v27 = 0; - } - if ( v162 == v27 ) - break; - if ( a1 && a2 == -1 ) - { - v68 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v68 >= a1[3] ) - v28 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v28 = *v68; - v69 = 0; - if ( v28 != 0xFFFF ) - v69 = a1; - a1 = v69; - } - else - { - v28 = a2; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v28) ) - break; - v29 = a1[2]; - if ( v29 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v29 + 2; - a2 = -1; - } - goto LABEL_157; - case 2: - if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) - goto LABEL_103; - v38 = v139 == 0 || v138 > 1; - if ( v38 ) - goto LABEL_103; - if ( v139 != 1 ) - { - v146 = 1; - if ( v139 != 2 ) - goto LABEL_158; - if ( HIBYTE(v183) == 4 ) - goto LABEL_103; - v39 = 3; - if ( HIBYTE(v183) == 3 && v141 ) - goto LABEL_103; -LABEL_160: - v139 = v39; - continue; - } - if ( !v141 && (_BYTE)v183 != 3 && BYTE2(v183) != 1 ) - { - v39 = 2; - goto LABEL_160; - } -LABEL_103: - v150 = 0; - v136 = *(_DWORD *)(v156 + 28); - while ( 1 ) - { - v175 = a2 == -1; - if ( v175 && a1 != 0 ) - { - v43 = (__int16 *)a1[2]; - if ( (unsigned int)v43 >= a1[3] ) - v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v44 = *v43; - v45 = v44 == -1; - v46 = 0; - if ( !v45 ) - v46 = a1; - v47 = v175 && a1 != 0; - a1 = v46; - if ( !v45 ) - v47 = 0; - v164 = v47; - } - else - { - v164 = a2 == -1; - } - v40 = a4 == -1; - v143 = v40 && a3 != 0; - if ( v143 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - v40 = v143; - if ( !v82 ) - v83 = a3; - a3 = v83; - if ( !v82 ) - v40 = 0; - } - v38 = (v150 < v136) & (v164 ^ v40); - if ( !v38 ) - break; - if ( a1 && a2 == -1 ) - { - v84 = (__int16 *)a1[2]; - if ( (unsigned int)v84 >= a1[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v41 = *v84; - v85 = 0; - if ( v41 != -1 ) - v85 = a1; - a1 = v85; - } - else - { - v41 = a2; - } - if ( *(_WORD *)(*(_DWORD *)(v156 + 24) + 2 * v150) != v41 ) - goto LABEL_227; - v42 = a1[2]; - if ( v42 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v42 + 2; - ++v150; - a2 = -1; - } - if ( v150 == v136 ) - { -LABEL_247: - v146 = 1; - } - else - { -LABEL_227: - if ( v150 ) - goto LABEL_131; - v146 = (*(_BYTE *)(a5 + 13) & 2) == 0; - v38 = (*(_BYTE *)(a5 + 13) & 2) != 0; - } -LABEL_158: - v39 = v139 + 1; - if ( v139 + 1 <= 3 && !v38 ) - goto LABEL_160; - v17 = v146 & (v138 > 1); -LABEL_41: - if ( v17 ) - { - if ( v142 ) - v18 = *(_DWORD *)(v156 + 40); - else - v18 = *(_DWORD *)(v156 + 32); - v140 = v18; - for ( i = 1; ; ++i ) - { - v172 = a2 == -1; - if ( (v172 & (a1 != 0)) != 0 ) - { - v22 = (__int16 *)a1[2]; - if ( (unsigned int)v22 >= a1[3] ) - v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v23 = *v22; - v24 = v23 == -1; - v25 = 0; - if ( !v24 ) - v25 = a1; - v26 = v172 & (a1 != 0); - a1 = v25; - if ( !v24 ) - v26 = 0; - v161 = v26; - } - else - { - v161 = a2 == -1; - } - v19 = a4 == -1; - v145 = v19 & (a3 != 0); - if ( v145 ) - { - v71 = (__int16 *)a3[2]; - if ( (unsigned int)v71 >= a3[3] ) - v72 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v72 = *v71; - v73 = v72 == -1; - v74 = 0; - v19 = v145; - if ( !v73 ) - v74 = a3; - a3 = v74; - if ( !v73 ) - v19 = 0; - if ( i >= v138 ) - { -LABEL_189: - if ( i == v138 ) - { - if ( v188 <= 1 ) - goto LABEL_191; - goto LABEL_236; - } - goto LABEL_132; - } - } - else if ( i >= v138 ) - { - goto LABEL_189; - } - if ( v19 == v161 ) - goto LABEL_189; - if ( a1 && a2 == -1 ) - { - v78 = (__int16 *)a1[2]; - if ( (unsigned int)v78 >= a1[3] ) - v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v20 = *v78; - v79 = 0; - if ( v20 != -1 ) - v79 = a1; - a1 = v79; - } - else - { - v20 = a2; - } - if ( *(_WORD *)(v140 + 2 * i) != v20 ) - goto LABEL_132; - v21 = a1[2]; - if ( v21 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v21 + 2; - a2 = -1; - } - } - if ( !v146 ) - { -LABEL_131: - v172 = a2 == -1; - goto LABEL_132; - } - if ( v188 <= 1 ) - goto LABEL_191; -LABEL_236: - first_not_of = std::string::find_first_not_of(&Block, 48, 0); - if ( first_not_of ) - { - if ( first_not_of != -1 ) - goto LABEL_238; - first_not_of = v188 - 1; - if ( !v188 ) - { - v188 = 0; - *(_BYTE *)Block = 0; - goto LABEL_191; - } - if ( v188 != 1 ) - { -LABEL_238: - if ( v188 <= first_not_of ) - first_not_of = v188; - std::string::_M_erase((int *)&Block, 0, first_not_of); - } - } -LABEL_191: - if ( v142 && *(_BYTE *)Block != 48 ) - std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); - v177 = v185; - if ( v185 ) - { - v75 = v134; - if ( !v144 ) - v75 = v154; - v155 = v185 + 1; - v166 = v75; - v76 = v184; - v77 = 15; - if ( v184 != v186 ) - v77 = v186[0]; - if ( v185 + 1 > v77 ) - { - std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); - v76 = v184; - } - v76[v177] = v166; - v185 = v155; - *((_BYTE *)v184 + v177 + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v156 + 8), *(_DWORD *)(v156 + 12), (int)&v184) ) - *a6 |= 4u; - } - v172 = a2 == -1; - if ( v144 && *(_DWORD *)(v156 + 48) != v154 ) - { -LABEL_132: - v53 = a6; - *a6 |= 4u; - } - else - { - v53 = std::string::swap(a7, &Block); - } - if ( (v172 & (a1 != 0)) != 0 ) - { - v93 = (__int16 *)a1[2]; - if ( (unsigned int)v93 >= a1[3] ) - v94 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v94 = *v93; - v95 = v172 & (a1 != 0); - v96 = v94 == -1; - if ( v94 != -1 ) - v95 = 0; - v53 = 0; - if ( !v96 ) - v53 = a1; - v172 = v95; - a1 = v53; - } - LOBYTE(v53) = a4 == -1; - v54 = v53; - if ( a3 && a4 == -1 ) - { - v91 = (__int16 *)a3[2]; - if ( (unsigned int)v91 >= a3[3] ) - v92 = (*(int (__fastcall **)(_DWORD *, _BYTE *))(*a3 + 36))(a3, v54); - else - v92 = *v91; - LOBYTE(v54) = v92 == -1; - } - if ( (_BYTE)v54 == v172 ) - *a6 |= 2u; - if ( Block != v189 ) - operator delete(Block); - if ( v184 != v186 ) - operator delete(v184); - return a1; - case 3: - if ( *(_DWORD *)(v156 + 36) ) - { - v176 = a2 == -1; - if ( v176 && a1 != 0 ) - { - v112 = (__int16 *)a1[2]; - if ( (unsigned int)v112 >= a1[3] ) - v113 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v113 = *v112; - v114 = v113 == -1; - v115 = 0; - if ( !v114 ) - v115 = a1; - v116 = v176 && a1 != 0; - a1 = v115; - if ( !v114 ) - v116 = 0; - v165 = v116; - } - else - { - v165 = a2 == -1; - } - v70 = a4 == -1; - v151 = v70 & (a3 != 0); - if ( v151 ) - { - v122 = (__int16 *)a3[2]; - if ( (unsigned int)v122 >= a3[3] ) - v123 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v123 = *v122; - v124 = v123 == -1; - v70 = 0; - if ( v124 ) - v70 = v151; - v125 = 0; - if ( !v124 ) - v125 = a3; - a3 = v125; - } - if ( v165 != v70 ) - { - if ( a1 && a2 == -1 ) - { - v110 = (__int16 *)a1[2]; - if ( (unsigned int)v110 >= a1[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v88 = *v110; - v111 = 0; - if ( v88 != -1 ) - v111 = a1; - a1 = v111; - } - else - { - v88 = a2; - } - if ( **(_WORD **)(v156 + 32) == v88 ) - { - v138 = *(_DWORD *)(v156 + 36); - v89 = a1[2]; - if ( v89 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v89 + 2; - v38 = 0; - a2 = -1; - goto LABEL_247; - } - } - if ( !*(_DWORD *)(v156 + 44) ) - { - if ( !*(_DWORD *)(v156 + 36) ) - goto LABEL_95; -LABEL_181: - v146 = 1; - v38 = 0; - v142 = 1; - goto LABEL_158; - } - } - else if ( !*(_DWORD *)(v156 + 44) ) - { - goto LABEL_95; - } - v167 = a2 == -1; - if ( v167 && a1 != 0 ) - { - v117 = (__int16 *)a1[2]; - if ( (unsigned int)v117 >= a1[3] ) - v118 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v118 = *v117; - v119 = v118 == -1; - v120 = 0; - if ( !v119 ) - v120 = a1; - v121 = v167 && a1 != 0; - a1 = v120; - if ( !v119 ) - v121 = 0; - v178 = v121; - } - else - { - v178 = a2 == -1; - } - v86 = a4 == -1; - v152 = v86 & (a3 != 0); - if ( v152 ) - { - v128 = (__int16 *)a3[2]; - if ( (unsigned int)v128 >= a3[3] ) - v129 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v129 = *v128; - v130 = v129 == -1; - v86 = 0; - if ( v130 ) - v86 = v152; - v131 = 0; - if ( !v130 ) - v131 = a3; - a3 = v131; - } - if ( v178 == v86 ) - goto LABEL_369; - if ( a1 && a2 == -1 ) - { - v106 = (__int16 *)a1[2]; - if ( (unsigned int)v106 >= a1[3] ) - v107 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v107 = *v106; - v108 = 0; - if ( v107 != -1 ) - v108 = a1; - a1 = v108; - } - else - { - v107 = a2; - } - if ( **(_WORD **)(v156 + 40) != v107 ) - { -LABEL_369: - if ( !*(_DWORD *)(v156 + 36) || *(_DWORD *)(v156 + 44) ) - { -LABEL_95: - v38 = v141; - v146 = !v141; - goto LABEL_158; - } - goto LABEL_181; - } - v138 = *(_DWORD *)(v156 + 44); - v109 = a1[2]; - if ( v109 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v109 + 2; - v146 = 1; - v38 = 0; - a2 = -1; - v142 = 1; - goto LABEL_158; - case 4: - while ( 2 ) - { - v170 = a2 == -1; - if ( v170 && a1 != 0 ) - { - v56 = (__int16 *)a1[2]; - if ( (unsigned int)v56 >= a1[3] ) - v57 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v57 = *v56; - v58 = v57 == -1; - v59 = 0; - if ( !v58 ) - v59 = a1; - v60 = v170 && a1 != 0; - a1 = v59; - if ( !v58 ) - v60 = 0; - v159 = v60; - } - else - { - v159 = a2 == -1; - } - v12 = a4 == -1; - v147 = v12 & (a3 != 0); - if ( v147 ) - { - v48 = (__int16 *)a3[2]; - if ( (unsigned int)v48 >= a3[3] ) - v49 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v49 = *v48; - v50 = v49 == -1; - v51 = 0; - v52 = v147; - if ( !v50 ) - v51 = a3; - a3 = v51; - if ( !v50 ) - v52 = 0; - if ( v159 == v52 ) - goto LABEL_129; - } - else if ( v159 == v12 ) - { - goto LABEL_129; - } - if ( a1 && a2 == -1 ) - { - v61 = (__int16 *)a1[2]; - if ( (unsigned int)v61 >= a1[3] ) - v13 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v13 = *v61; - v62 = 0; - if ( v13 != -1 ) - v62 = a1; - a1 = v62; - } - else - { - v13 = a2; - } - v14 = (_WORD *)(v156 + 62); - if ( v13 == *(_WORD *)(v156 + 62) ) - { -LABEL_32: - v15 = Block; - v171 = std::money_base::_S_atoms[((int)v14 - v156 - 60) >> 1]; - v181 = v188; - v16 = 15; - if ( Block != v189 ) - v16 = v189[0]; - v160 = (std::locale::facet *)(v188 + 1); - if ( v188 + 1 > v16 ) - { - std::string::_M_mutate((int)&Block, v188, 0, 0, 1u); - v15 = Block; - } - ++v154; - v15[v181] = v171; - v188 = (size_t)v160; - *((_BYTE *)Block + v181 + 1) = 0; - v10 = a1; - v11 = a1[2]; - if ( v11 >= a1[3] ) - { -LABEL_37: - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_21; - } -LABEL_20: - v10[2] = v11 + 2; -LABEL_21: - a2 = -1; - continue; - } - break; - } - while ( ++v14 != (_WORD *)(v156 + 82) ) - { - if ( v13 == *v14 ) - goto LABEL_32; - } - v7 = v144 | (*(_WORD *)(v156 + 18) != (unsigned __int16)v13); - if ( v7 ) - { - v146 = *(_BYTE *)(v156 + 16); - if ( !v146 ) - goto LABEL_249; - if ( *(_WORD *)(v156 + 20) == v13 ) - { - if ( !v144 ) - { - if ( v154 ) - { - v169 = v154; - v8 = v184; - v180 = v185; - v9 = 15; - if ( v184 != v186 ) - v9 = v186[0]; - v158 = (std::locale::facet *)(v185 + 1); - if ( v185 + 1 > v9 ) - { - std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); - v8 = v184; - } - v154 = 0; - v8[v180] = v169; - v185 = (size_t)v158; - *((_BYTE *)v184 + v180 + 1) = 0; -LABEL_19: - v10 = a1; - v11 = a1[2]; - if ( v11 >= a1[3] ) - goto LABEL_37; - goto LABEL_20; - } - v146 = 0; - goto LABEL_130; - } - v7 = v144; -LABEL_249: - v146 = v7; - if ( !v188 ) - goto LABEL_131; - goto LABEL_157; - } -LABEL_130: - if ( !v188 ) - goto LABEL_131; -LABEL_157: - v38 = v146 ^ 1; - goto LABEL_158; - } - if ( *(int *)(v156 + 48) > 0 ) - { - v63 = v154; - v144 = 1; - v154 = 0; - v134 = v63; - goto LABEL_19; - } - v144 = 0; -LABEL_129: - v146 = 1; - goto LABEL_130; - default: - v146 = 1; - v38 = 0; - goto LABEL_158; - } - } -} -// 493A8F: variable 'v132' is possibly undefined -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 53F714: using guessed type signed __int32 std::moneypunct::id; -// 560704: using guessed type int (*off_560704)(); - -//----- (00494110) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); -} - -//----- (00494120) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00494130) -------------------------------------------------------- -struct _Unwind_Exception *__stdcall std::money_get>::do_get( - _DWORD *a1, - __int16 a2, - _DWORD *a3, - __int16 a4, - char a5, - int a6, - _DWORD *a7, - int *a8) -{ - struct _Unwind_Exception *v8; // eax - void *v10; // [esp+20h] [ebp-78h] - unsigned int v11; // [esp+28h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-68h] - void *Block; // [esp+78h] [ebp-20h] BYREF - unsigned int v14; // [esp+7Ch] [ebp-1Ch] - char v15[20]; // [esp+80h] [ebp-18h] BYREF - - v15[0] = 0; - v10 = std::use_facet>(a6 + 108); - Block = v15; - v14 = 0; - if ( a5 ) - v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a4, - a6, - a7, - &Block); - else - v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a4, - a6, - a7, - &Block); - lpuexcpt = v8; - v11 = v14; - if ( v14 ) - { - std::wstring::resize(a8, v14, 0); - (*(void (__thiscall **)(void *, void *, char *, int))(*(_DWORD *)v10 + 44))(v10, Block, (char *)Block + v11, *a8); - } - if ( Block != v15 ) - operator delete(Block); - return lpuexcpt; -} - -//----- (00494300) -------------------------------------------------------- -struct _Unwind_Exception *__stdcall std::money_get>::do_get( - _DWORD *a1, - __int16 a2, - _DWORD *a3, - __int16 a4, - char a5, - int a6, - _DWORD *a7, - long double *a8) -{ - struct _Unwind_Exception *v8; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-68h] - void *Block[2]; // [esp+78h] [ebp-20h] BYREF - char v12[20]; // [esp+80h] [ebp-18h] BYREF - - Block[0] = v12; - Block[1] = 0; - v12[0] = 0; - if ( a5 ) - v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a4, - a6, - a7, - Block); - else - v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a4, - a6, - a7, - Block); - lpuexcpt = v8; - std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((char *)Block[0], a8, a7); - if ( Block[0] != v12 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (00494470) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - __int64 a2, - unsigned __int8 a3, - int a4, - char a5, - int a6) -{ - __int64 (__stdcall *v6)(__int64, char, int, char, int); // edx - - v6 = *(__int64 (__stdcall **)(__int64, char, int, char, int))(*(_DWORD *)this + 12); - if ( v6 != std::money_put>::do_put ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, int))v6)(a2, HIDWORD(a2), a3, a4, a5, a6); - if ( a3 ) - return std::money_put>::_M_insert(a2, a4, a5, a6); - return std::money_put>::_M_insert(a2, a4, a5, a6); -} - -//----- (00494510) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6) -{ - return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00494530) -------------------------------------------------------- -__int64 __stdcall std::money_put>::do_put( - __int64 a1, - char a2, - int a3, - char a4, - int a5) -{ - if ( a2 ) - return std::money_put>::_M_insert(a1, a3, a4, a5); - else - return std::money_put>::_M_insert(a1, a3, a4, a5); -} - -//----- (004945A0) -------------------------------------------------------- -__int64 __thiscall std::money_put>::do_put( - void *this, - __int64 a2, - int a3, - int a4, - int a5, - long double a6) -{ - void *v6; // esp - void *v7; // esp - int v8; // eax - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // al - void (__thiscall *v13)(_BYTE *, void *, char *, void *); // eax - __int64 v14; // rax - const std::locale *v16[22]; // [esp-30h] [ebp-D8h] BYREF - void *v17; // [esp+28h] [ebp-80h] - char *v18; // [esp+2Ch] [ebp-7Ch] - int v19; // [esp+30h] [ebp-78h] - int v20; // [esp+34h] [ebp-74h] - void *v21; // [esp+38h] [ebp-70h] - _BYTE *v22; // [esp+3Ch] [ebp-6Ch] - __int64 Size; // [esp+40h] [ebp-68h] - void *Src; // [esp+48h] [ebp-60h] - _DWORD *v25; // [esp+84h] [ebp-24h] BYREF - void *Block[2]; // [esp+88h] [ebp-20h] BYREF - char v27[24]; // [esp+90h] [ebp-18h] BYREF - - v21 = this; - v20 = a3; - v19 = a5; - std::locale::locale((volatile signed __int32 **)&v25, (volatile signed __int32 **)(a4 + 108), v16[13]); - v22 = std::use_facet>((int)&v25); - v6 = alloca(80); - v7 = alloca(80); - LODWORD(Size) = v16; - Src = v16; - Block[0] = (void *)std::locale::facet::_S_get_c_locale(); - v8 = std::__convert_from_v((int *const *)Block, (char *)Size, 64, "%.*Lf", 0, a6); - LODWORD(Size) = v8; - if ( v8 > 63 ) - { - LODWORD(Size) = v8 + 1; - v9 = 16 * ((unsigned int)(v8 + 28) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v18 = (char *)v16; - Src = v16; - Block[0] = (void *)std::locale::facet::_S_get_c_locale(); - LODWORD(Size) = std::__convert_from_v((int *const *)Block, v18, Size, "%.*Lf", 0, a6); - } - Block[0] = v27; - std::string::_M_construct(Block, Size, 0); - v12 = v22[28]; - v17 = Block[0]; - v18 = (char *)Src + Size; - if ( v12 == 1 ) - { - if ( (char *)Src + (_DWORD)Size != Src ) -LABEL_7: - memcpy(v17, Src, Size); - } - else - { - if ( v12 ) - { - v13 = *(void (__thiscall **)(_BYTE *, void *, char *, void *))(*(_DWORD *)v22 + 28); - if ( (char *)v13 == (char *)std::ctype::do_widen ) - goto LABEL_6; - } - else - { - std::ctype::_M_widen_init((int)v22); - v13 = *(void (__thiscall **)(_BYTE *, void *, char *, void *))(*(_DWORD *)v22 + 28); - if ( (char *)v13 == (char *)std::ctype::do_widen ) - { -LABEL_6: - if ( v18 == Src ) - goto LABEL_8; - goto LABEL_7; - } - } - v13(v22, Src, v18, v17); - } -LABEL_8: - if ( (_BYTE)v20 ) - v14 = std::money_put>::_M_insert(a2, a4, v19, (int)Block); - else - v14 = std::money_put>::_M_insert(a2, a4, v19, (int)Block); - Size = v14; - if ( Block[0] != v27 ) - operator delete(Block[0]); - std::locale::~locale(&v25); - return Size; -} - -//----- (004948B0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - char a3, - int a4) -{ - int v4; // ecx - char *v5; // ebx - struct _Unwind_Exception *v6; // eax - unsigned __int8 *v7; // ecx - int v9; // eax - bool v10; // sf - size_t v11; // eax - _BYTE *v12; // eax - bool v13; // dl - _BYTE *v14; // edx - unsigned int v15; // eax - size_t v16; // edx - int v17; // edx - int *v18; // eax - char v19; // bl - int v20; // edx - int v21; // ebx - _BYTE *v22; // edx - size_t v23; // eax - size_t v24; // edx - _BYTE *v25; // edx - unsigned int v26; // eax - _WORD *v27; // eax - unsigned int v28; // [esp+8h] [ebp-E0h] - size_t v29; // [esp+8h] [ebp-E0h] - int v30; // [esp+20h] [ebp-C8h] - char v31; // [esp+24h] [ebp-C4h] - int v32; // [esp+24h] [ebp-C4h] - std::locale::_Impl *v33; // [esp+28h] [ebp-C0h] - int v34; // [esp+2Ch] [ebp-BCh] - int v35; // [esp+2Ch] [ebp-BCh] - size_t v36; // [esp+30h] [ebp-B8h] - size_t v37; // [esp+30h] [ebp-B8h] - char v38; // [esp+34h] [ebp-B4h] - size_t v39; // [esp+38h] [ebp-B0h] - bool v40; // [esp+38h] [ebp-B0h] - signed int v41; // [esp+3Ch] [ebp-ACh] - int v42; // [esp+3Ch] [ebp-ACh] - int *v43; // [esp+40h] [ebp-A8h] - char *v44; // [esp+40h] [ebp-A8h] - std::locale::facet *v45; // [esp+4Ch] [ebp-9Ch] - std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] - _DWORD *v47; // [esp+50h] [ebp-98h] - size_t v48; // [esp+50h] [ebp-98h] - size_t v49; // [esp+50h] [ebp-98h] - __int64 v50; // [esp+54h] [ebp-94h] - int v51; // [esp+5Ch] [ebp-8Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-88h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] - void **lpuexcptb; // [esp+60h] [ebp-88h] - char lpuexcptc; // [esp+60h] [ebp-88h] - int v56; // [esp+ACh] [ebp-3Ch] BYREF - void *v57; // [esp+B0h] [ebp-38h] BYREF - size_t v58; // [esp+B4h] [ebp-34h] - int v59[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - int v61; // [esp+CCh] [ebp-1Ch] - int v62[5]; // [esp+D0h] [ebp-18h] BYREF - - v50 = a1; - v47 = std::use_facet>(a2 + 108); - v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); - v51 = *v43; - if ( !*v43 ) - { - v27 = operator new(0x44u); - *(_DWORD *)v27 = &off_5606D4; - v27[8] = 0; - *((_DWORD *)v27 + 1) = 0; - *((_DWORD *)v27 + 2) = 0; - *((_DWORD *)v27 + 3) = 0; - *((_BYTE *)v27 + 18) = 0; - *((_DWORD *)v27 + 5) = 0; - *((_DWORD *)v27 + 6) = 0; - *((_DWORD *)v27 + 7) = 0; - *((_DWORD *)v27 + 8) = 0; - *((_DWORD *)v27 + 9) = 0; - *((_DWORD *)v27 + 10) = 0; - *((_DWORD *)v27 + 11) = 0; - *((_DWORD *)v27 + 12) = 0; - *((_DWORD *)v27 + 13) = 0; - *((_BYTE *)v27 + 67) = 0; - v33 = (std::locale::_Impl *)v27; - std::__moneypunct_cache::_M_cache((int)v27, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v33, v45, v28); - v51 = *v43; - } - v4 = *(_DWORD *)(a4 + 4); - lpuexcpt = *(struct _Unwind_Exception **)a4; - if ( **(_BYTE **)a4 == *(_BYTE *)(v51 + 56) ) - { - v56 = *(_DWORD *)(v51 + 52); - if ( !v4 ) - goto LABEL_10; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v44 = *(char **)(v51 + 36); - v46 = *(std::locale::facet **)(v51 + 40); - } - else - { - v5 = *(char **)(v51 + 28); - v56 = *(_DWORD *)(v51 + 48); - v44 = v5; - v46 = *(std::locale::facet **)(v51 + 32); - } - v6 = lpuexcpt; - v7 = (unsigned __int8 *)lpuexcpt + v4; - if ( v7 > (unsigned __int8 *)lpuexcpt ) - { - do - { - if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) - break; - v6 = (struct _Unwind_Exception *)((char *)v6 + 1); - } - while ( v7 != (unsigned __int8 *)v6 ); - v48 = v6 - lpuexcpt; - if ( v6 != lpuexcpt ) - { - LOBYTE(v59[0]) = 0; - v57 = v59; - v58 = 0; - std::string::reserve(&v57, 2 * v48); - v9 = *(_DWORD *)(v51 + 44); - v41 = v48 - v9; - if ( (int)(v48 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v48 - v9; - if ( v10 ) - v11 = v48; - v41 = v11; - if ( *(_DWORD *)(v51 + 12) ) - { - std::string::_M_replace_aux(&v57, 0, v58, 2 * v11, 0); - v12 = std::__add_grouping( - v57, - *(_BYTE *)(v51 + 18), - *(char **)(v51 + 8), - *(_DWORD *)(v51 + 12), - lpuexcpt, - (_BYTE *)lpuexcpt + v41); - if ( v12 - (_BYTE *)v57 > v58 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v12 - (_BYTE *)v57, - v58); - v58 = v12 - (_BYTE *)v57; - *v12 = 0; - v9 = *(_DWORD *)(v51 + 44); - } - else - { - std::string::_M_replace((unsigned int *)&v57, 0, v58, (char *)lpuexcpt, v11); - v9 = *(_DWORD *)(v51 + 44); - } - } - v39 = v58; - if ( v9 > 0 ) - { - v22 = v57; - v37 = v58 + 1; - v38 = *(_BYTE *)(v51 + 17); - v23 = 15; - if ( v57 != v59 ) - v23 = v59[0]; - if ( v58 + 1 > v23 ) - { - std::string::_M_mutate((int)&v57, v58, 0, 0, 1u); - v22 = v57; - } - v22[v39] = v38; - v58 = v37; - *((_BYTE *)v57 + v37) = 0; - if ( v41 < 0 ) - { - std::string::_M_replace_aux(&v57, v58, 0, -v41, *(_BYTE *)(v51 + 57)); - if ( v48 > 0x3FFFFFFF - v58 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v57, lpuexcpt, v48); - } - else - { - v24 = *(_DWORD *)(v51 + 44); - if ( v24 > 0x3FFFFFFF - v58 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v57, (_BYTE *)lpuexcpt + v41, v24); - } - v39 = v58; - } - v42 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v46 + v39); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v46 + v39 + *(_DWORD *)(v51 + 24)); - LOBYTE(v62[0]) = 0; - Block = v62; - v61 = 0; - std::string::reserve(&Block, 2 * (_DWORD)lpuexcpta); - v49 = *(_DWORD *)(a2 + 8); - v13 = v49 > (unsigned int)lpuexcpta && v42 == 16; - v36 = v49 - (_DWORD)lpuexcpta; - lpuexcptb = (void **)&v56; - v40 = v13; - do - { - switch ( *(_BYTE *)lpuexcptb ) - { - case 0: - if ( v40 ) - goto LABEL_34; - break; - case 1: - v35 = v61; - if ( v40 ) - { -LABEL_34: - std::string::_M_replace_aux(&Block, v61, 0, v36, a3); - } - else - { - v25 = Block; - v26 = 15; - if ( Block != v62 ) - v26 = v62[0]; - v32 = v61 + 1; - if ( v61 + 1 > v26 ) - { - std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); - v25 = Block; - } - v25[v35] = a3; - v61 = v32; - *((_BYTE *)Block + v35 + 1) = 0; - } - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - { - v16 = *(_DWORD *)(v51 + 24); - if ( v16 > 0x3FFFFFFF - v61 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&Block, *(_BYTE **)(v51 + 20), v16); - } - break; - case 3: - if ( v46 ) - { - v14 = Block; - v31 = *v44; - v34 = v61; - v15 = 15; - if ( Block != v62 ) - v15 = v62[0]; - v30 = v61 + 1; - if ( v61 + 1 > v15 ) - { - std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); - v14 = Block; - } - v14[v34] = v31; - v61 = v30; - *((_BYTE *)Block + v34 + 1) = 0; - } - break; - case 4: - std::string::_M_append(&Block, v57, v58); - break; - default: - break; - } - lpuexcptb = (void **)((char *)lpuexcptb + 1); - } - while ( &v57 != lpuexcptb ); - v17 = v61; - if ( (unsigned int)v46 > 1 ) - { - if ( (unsigned int)v46 - 1 > 0x3FFFFFFF - v61 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&Block, v44 + 1, (size_t)v46 - 1); - v17 = v61; - if ( v61 < v49 ) - goto LABEL_41; - } - else if ( v61 < v49 ) - { -LABEL_41: - v29 = v49 - v17; - if ( v42 == 32 ) - std::string::_M_replace_aux(&Block, v17, 0, v29, a3); - else - std::string::_M_replace_aux(&Block, 0, 0, v29, a3); - goto LABEL_43; - } - v49 = v17; -LABEL_43: - v18 = (int *)Block; - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v19 = 0; - v20 = (*(int (__thiscall **)(_DWORD, void *, size_t))(*(_DWORD *)a1 + 48))(a1, Block, v49); - v18 = (int *)Block; - if ( v49 != v20 ) - v19 = 1; - lpuexcptc = v19; - } - v21 = HIDWORD(a1); - LOBYTE(v21) = lpuexcptc; - HIDWORD(v50) = v21; - if ( v18 != v62 ) - operator delete(v18); - if ( v57 != v59 ) - operator delete(v57); - } - } -LABEL_10: - *(_DWORD *)(a2 + 8) = 0; - return v50; -} -// 4950C3: variable 'v28' is possibly undefined -// 53F708: using guessed type signed __int32 std::moneypunct::id; -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (00495360) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - char a3, - int a4) -{ - int v4; // ecx - char *v5; // ebx - struct _Unwind_Exception *v6; // eax - unsigned __int8 *v7; // ecx - int v9; // eax - bool v10; // sf - size_t v11; // eax - _BYTE *v12; // eax - bool v13; // dl - _BYTE *v14; // edx - unsigned int v15; // eax - size_t v16; // edx - int v17; // edx - int *v18; // eax - char v19; // bl - int v20; // edx - int v21; // ebx - _BYTE *v22; // edx - size_t v23; // eax - size_t v24; // edx - _BYTE *v25; // edx - unsigned int v26; // eax - _WORD *v27; // eax - unsigned int v28; // [esp+8h] [ebp-E0h] - size_t v29; // [esp+8h] [ebp-E0h] - int v30; // [esp+20h] [ebp-C8h] - char v31; // [esp+24h] [ebp-C4h] - int v32; // [esp+24h] [ebp-C4h] - std::locale::_Impl *v33; // [esp+28h] [ebp-C0h] - int v34; // [esp+2Ch] [ebp-BCh] - int v35; // [esp+2Ch] [ebp-BCh] - size_t v36; // [esp+30h] [ebp-B8h] - size_t v37; // [esp+30h] [ebp-B8h] - char v38; // [esp+34h] [ebp-B4h] - size_t v39; // [esp+38h] [ebp-B0h] - bool v40; // [esp+38h] [ebp-B0h] - signed int v41; // [esp+3Ch] [ebp-ACh] - int v42; // [esp+3Ch] [ebp-ACh] - int *v43; // [esp+40h] [ebp-A8h] - char *v44; // [esp+40h] [ebp-A8h] - std::locale::facet *v45; // [esp+4Ch] [ebp-9Ch] - std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] - _DWORD *v47; // [esp+50h] [ebp-98h] - size_t v48; // [esp+50h] [ebp-98h] - size_t v49; // [esp+50h] [ebp-98h] - __int64 v50; // [esp+54h] [ebp-94h] - int v51; // [esp+5Ch] [ebp-8Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-88h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] - void **lpuexcptb; // [esp+60h] [ebp-88h] - char lpuexcptc; // [esp+60h] [ebp-88h] - int v56; // [esp+ACh] [ebp-3Ch] BYREF - void *v57; // [esp+B0h] [ebp-38h] BYREF - size_t v58; // [esp+B4h] [ebp-34h] - int v59[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - int v61; // [esp+CCh] [ebp-1Ch] - int v62[5]; // [esp+D0h] [ebp-18h] BYREF - - v50 = a1; - v47 = std::use_facet>(a2 + 108); - v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); - v51 = *v43; - if ( !*v43 ) - { - v27 = operator new(0x44u); - *(_DWORD *)v27 = &off_5606E4; - v27[8] = 0; - *((_DWORD *)v27 + 1) = 0; - *((_DWORD *)v27 + 2) = 0; - *((_DWORD *)v27 + 3) = 0; - *((_BYTE *)v27 + 18) = 0; - *((_DWORD *)v27 + 5) = 0; - *((_DWORD *)v27 + 6) = 0; - *((_DWORD *)v27 + 7) = 0; - *((_DWORD *)v27 + 8) = 0; - *((_DWORD *)v27 + 9) = 0; - *((_DWORD *)v27 + 10) = 0; - *((_DWORD *)v27 + 11) = 0; - *((_DWORD *)v27 + 12) = 0; - *((_DWORD *)v27 + 13) = 0; - *((_BYTE *)v27 + 67) = 0; - v33 = (std::locale::_Impl *)v27; - std::__moneypunct_cache::_M_cache((int)v27, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v33, v45, v28); - v51 = *v43; - } - v4 = *(_DWORD *)(a4 + 4); - lpuexcpt = *(struct _Unwind_Exception **)a4; - if ( **(_BYTE **)a4 == *(_BYTE *)(v51 + 56) ) - { - v56 = *(_DWORD *)(v51 + 52); - if ( !v4 ) - goto LABEL_10; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v44 = *(char **)(v51 + 36); - v46 = *(std::locale::facet **)(v51 + 40); - } - else - { - v5 = *(char **)(v51 + 28); - v56 = *(_DWORD *)(v51 + 48); - v44 = v5; - v46 = *(std::locale::facet **)(v51 + 32); - } - v6 = lpuexcpt; - v7 = (unsigned __int8 *)lpuexcpt + v4; - if ( v7 > (unsigned __int8 *)lpuexcpt ) - { - do - { - if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) - break; - v6 = (struct _Unwind_Exception *)((char *)v6 + 1); - } - while ( v7 != (unsigned __int8 *)v6 ); - v48 = v6 - lpuexcpt; - if ( v6 != lpuexcpt ) - { - LOBYTE(v59[0]) = 0; - v57 = v59; - v58 = 0; - std::string::reserve(&v57, 2 * v48); - v9 = *(_DWORD *)(v51 + 44); - v41 = v48 - v9; - if ( (int)(v48 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v48 - v9; - if ( v10 ) - v11 = v48; - v41 = v11; - if ( *(_DWORD *)(v51 + 12) ) - { - std::string::_M_replace_aux(&v57, 0, v58, 2 * v11, 0); - v12 = std::__add_grouping( - v57, - *(_BYTE *)(v51 + 18), - *(char **)(v51 + 8), - *(_DWORD *)(v51 + 12), - lpuexcpt, - (_BYTE *)lpuexcpt + v41); - if ( v12 - (_BYTE *)v57 > v58 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v12 - (_BYTE *)v57, - v58); - v58 = v12 - (_BYTE *)v57; - *v12 = 0; - v9 = *(_DWORD *)(v51 + 44); - } - else - { - std::string::_M_replace((unsigned int *)&v57, 0, v58, (char *)lpuexcpt, v11); - v9 = *(_DWORD *)(v51 + 44); - } - } - v39 = v58; - if ( v9 > 0 ) - { - v22 = v57; - v37 = v58 + 1; - v38 = *(_BYTE *)(v51 + 17); - v23 = 15; - if ( v57 != v59 ) - v23 = v59[0]; - if ( v58 + 1 > v23 ) - { - std::string::_M_mutate((int)&v57, v58, 0, 0, 1u); - v22 = v57; - } - v22[v39] = v38; - v58 = v37; - *((_BYTE *)v57 + v37) = 0; - if ( v41 < 0 ) - { - std::string::_M_replace_aux(&v57, v58, 0, -v41, *(_BYTE *)(v51 + 57)); - if ( v48 > 0x3FFFFFFF - v58 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v57, lpuexcpt, v48); - } - else - { - v24 = *(_DWORD *)(v51 + 44); - if ( v24 > 0x3FFFFFFF - v58 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v57, (_BYTE *)lpuexcpt + v41, v24); - } - v39 = v58; - } - v42 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v46 + v39); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v46 + v39 + *(_DWORD *)(v51 + 24)); - LOBYTE(v62[0]) = 0; - Block = v62; - v61 = 0; - std::string::reserve(&Block, 2 * (_DWORD)lpuexcpta); - v49 = *(_DWORD *)(a2 + 8); - v13 = v49 > (unsigned int)lpuexcpta && v42 == 16; - v36 = v49 - (_DWORD)lpuexcpta; - lpuexcptb = (void **)&v56; - v40 = v13; - do - { - switch ( *(_BYTE *)lpuexcptb ) - { - case 0: - if ( v40 ) - goto LABEL_34; - break; - case 1: - v35 = v61; - if ( v40 ) - { -LABEL_34: - std::string::_M_replace_aux(&Block, v61, 0, v36, a3); - } - else - { - v25 = Block; - v26 = 15; - if ( Block != v62 ) - v26 = v62[0]; - v32 = v61 + 1; - if ( v61 + 1 > v26 ) - { - std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); - v25 = Block; - } - v25[v35] = a3; - v61 = v32; - *((_BYTE *)Block + v35 + 1) = 0; - } - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - { - v16 = *(_DWORD *)(v51 + 24); - if ( v16 > 0x3FFFFFFF - v61 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&Block, *(_BYTE **)(v51 + 20), v16); - } - break; - case 3: - if ( v46 ) - { - v14 = Block; - v31 = *v44; - v34 = v61; - v15 = 15; - if ( Block != v62 ) - v15 = v62[0]; - v30 = v61 + 1; - if ( v61 + 1 > v15 ) - { - std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); - v14 = Block; - } - v14[v34] = v31; - v61 = v30; - *((_BYTE *)Block + v34 + 1) = 0; - } - break; - case 4: - std::string::_M_append(&Block, v57, v58); - break; - default: - break; - } - lpuexcptb = (void **)((char *)lpuexcptb + 1); - } - while ( &v57 != lpuexcptb ); - v17 = v61; - if ( (unsigned int)v46 > 1 ) - { - if ( (unsigned int)v46 - 1 > 0x3FFFFFFF - v61 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&Block, v44 + 1, (size_t)v46 - 1); - v17 = v61; - if ( v61 < v49 ) - goto LABEL_41; - } - else if ( v61 < v49 ) - { -LABEL_41: - v29 = v49 - v17; - if ( v42 == 32 ) - std::string::_M_replace_aux(&Block, v17, 0, v29, a3); - else - std::string::_M_replace_aux(&Block, 0, 0, v29, a3); - goto LABEL_43; - } - v49 = v17; -LABEL_43: - v18 = (int *)Block; - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v19 = 0; - v20 = (*(int (__thiscall **)(_DWORD, void *, size_t))(*(_DWORD *)a1 + 48))(a1, Block, v49); - v18 = (int *)Block; - if ( v49 != v20 ) - v19 = 1; - lpuexcptc = v19; - } - v21 = HIDWORD(a1); - LOBYTE(v21) = lpuexcptc; - HIDWORD(v50) = v21; - if ( v18 != v62 ) - operator delete(v18); - if ( v57 != v59 ) - operator delete(v57); - } - } -LABEL_10: - *(_DWORD *)(a2 + 8) = 0; - return v50; -} -// 495B73: variable 'v28' is possibly undefined -// 53F70C: using guessed type signed __int32 std::moneypunct::id; -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (00495E10) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - __int64 a2, - unsigned __int8 a3, - int a4, - unsigned __int16 a5, - int a6) -{ - __int64 (__stdcall *v6)(__int64, char, int, __int16, int); // edx - - v6 = *(__int64 (__stdcall **)(__int64, char, int, __int16, int))(*(_DWORD *)this + 12); - if ( v6 != std::money_put>::do_put ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, int))v6)(a2, HIDWORD(a2), a3, a4, a5, a6); - if ( a3 ) - return std::money_put>::_M_insert(a2, a4, a5, a6); - return std::money_put>::_M_insert(a2, a4, a5, a6); -} - -//----- (00495EB0) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - unsigned __int16 a6) -{ - return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00495ED0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::do_put( - __int64 a1, - char a2, - int a3, - __int16 a4, - int a5) -{ - if ( a2 ) - return std::money_put>::_M_insert(a1, a3, a4, a5); - else - return std::money_put>::_M_insert(a1, a3, a4, a5); -} - -//----- (00495F40) -------------------------------------------------------- -__int64 __thiscall std::money_put>::do_put( - void *this, - __int64 a2, - int a3, - int a4, - int a5, - long double a6) -{ - void *v6; // esp - void *v7; // esp - int v8; // eax - int v9; // eax - void *v10; // esp - void *v11; // esp - __int64 v12; // rax - int v14; // [esp-44h] [ebp-ECh] - int v15; // [esp-40h] [ebp-E8h] - int v16; // [esp-3Ch] [ebp-E4h] - int v17; // [esp-38h] [ebp-E0h] - int v18; // [esp-34h] [ebp-DCh] - char *v19[23]; // [esp-30h] [ebp-D8h] BYREF - char *v20; // [esp+2Ch] [ebp-7Ch] - int v21; // [esp+30h] [ebp-78h] - int v22; // [esp+34h] [ebp-74h] - void *v23; // [esp+38h] [ebp-70h] - void *v24; // [esp+3Ch] [ebp-6Ch] - __int64 lpuexcpt; // [esp+40h] [ebp-68h] - char **v26; // [esp+48h] [ebp-60h] - _DWORD *v27; // [esp+84h] [ebp-24h] BYREF - void *Block[2]; // [esp+88h] [ebp-20h] BYREF - char v29[20]; // [esp+90h] [ebp-18h] BYREF - - v23 = this; - v22 = a3; - v21 = a5; - std::locale::locale( - (volatile signed __int32 **)&v27, - (volatile signed __int32 **)(a4 + 108), - (const std::locale *)v19[13]); - v24 = std::use_facet>((int)&v27); - v6 = alloca(80); - v7 = alloca(80); - LODWORD(lpuexcpt) = v19; - v26 = v19; - Block[0] = (void *)std::locale::facet::_S_get_c_locale(); - v8 = std::__convert_from_v((int *const *)Block, (char *)lpuexcpt, 64, "%.*Lf", 0, a6); - LODWORD(lpuexcpt) = v8; - if ( v8 > 63 ) - { - LODWORD(lpuexcpt) = v8 + 1; - v9 = 16 * ((unsigned int)(v8 + 28) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v20 = (char *)v19; - v26 = v19; - Block[0] = (void *)std::locale::facet::_S_get_c_locale(); - LODWORD(lpuexcpt) = std::__convert_from_v((int *const *)Block, v20, lpuexcpt, "%.*Lf", 0, a6); - } - Block[0] = v29; - std::wstring::_M_construct(Block, lpuexcpt, 0); - (*(void (__thiscall **)(void *, char **, char *, void *, int, int, int, int, int, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *))(*(_DWORD *)v24 + 44))( - v24, - v26, - (char *)v26 + lpuexcpt, - Block[0], - v14, - v15, - v16, - v17, - v18, - v19[0], - v19[1], - v19[2], - v19[3], - v19[4], - v19[5], - v19[6], - v19[7], - v19[8], - v19[9]); - if ( (_BYTE)v22 ) - v12 = std::money_put>::_M_insert(a2, a4, v21, (int)Block); - else - v12 = std::money_put>::_M_insert(a2, a4, v21, (int)Block); - lpuexcpt = v12; - if ( Block[0] != v29 ) - operator delete(Block[0]); - std::locale::~locale(&v27); - return lpuexcpt; -} -// 4960B1: variable 'v14' is possibly undefined -// 4960B1: variable 'v15' is possibly undefined -// 4960B1: variable 'v16' is possibly undefined -// 4960B1: variable 'v17' is possibly undefined -// 4960B1: variable 'v18' is possibly undefined - -//----- (004961A0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - __int16 a3, - int a4) -{ - int v4; // eax - signed int v5; // eax - std::locale::facet *v7; // esi - char *v8; // edx - int v9; // eax - bool v10; // sf - unsigned int v11; // eax - char *v12; // edx - unsigned int v13; // eax - bool v14; // dl - _WORD *v15; // eax - unsigned int v16; // edx - unsigned int v17; // edx - int v18; // ecx - int *v19; // eax - char v20; // bl - int v21; // edx - int v22; // ebx - _WORD *v23; // eax - unsigned int v24; // edx - unsigned int v25; // edx - _WORD *v26; // eax - unsigned int v27; // edx - _DWORD *v28; // eax - unsigned int v29; // [esp-4h] [ebp-ECh] - unsigned int v30; // [esp+8h] [ebp-E0h] - unsigned int v31; // [esp+20h] [ebp-C8h] - __int16 v32; // [esp+24h] [ebp-C4h] - unsigned int v33; // [esp+24h] [ebp-C4h] - std::locale::_Impl *v34; // [esp+28h] [ebp-C0h] - int v35; // [esp+2Ch] [ebp-BCh] - int v36; // [esp+2Ch] [ebp-BCh] - unsigned int v37; // [esp+30h] [ebp-B8h] - __int16 v38; // [esp+30h] [ebp-B8h] - int v39; // [esp+34h] [ebp-B4h] - int v40; // [esp+38h] [ebp-B0h] - bool v41; // [esp+38h] [ebp-B0h] - __int16 *v42; // [esp+3Ch] [ebp-ACh] - int *v43; // [esp+48h] [ebp-A0h] - unsigned int v44; // [esp+48h] [ebp-A0h] - int v45; // [esp+48h] [ebp-A0h] - std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] - std::locale::facet *v47; // [esp+4Ch] [ebp-9Ch] - void *v48; // [esp+50h] [ebp-98h] - int v49; // [esp+50h] [ebp-98h] - int v50; // [esp+50h] [ebp-98h] - unsigned int v51; // [esp+50h] [ebp-98h] - __int64 v52; // [esp+54h] [ebp-94h] - int v53; // [esp+5Ch] [ebp-8Ch] - char *lpuexcpt; // [esp+60h] [ebp-88h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] - void **lpuexcptb; // [esp+60h] [ebp-88h] - char lpuexcptc; // [esp+60h] [ebp-88h] - int v58; // [esp+ACh] [ebp-3Ch] BYREF - void *v59; // [esp+B0h] [ebp-38h] BYREF - int v60; // [esp+B4h] [ebp-34h] - int v61[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - unsigned int v63; // [esp+CCh] [ebp-1Ch] - int v64[6]; // [esp+D0h] [ebp-18h] BYREF - - v52 = a1; - v48 = std::use_facet>(a2 + 108); - v46 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v46); - v53 = *v43; - if ( !*v43 ) - { - v28 = operator new(0x54u); - v28[1] = 0; - *v28 = &off_5606F4; - v28[2] = 0; - v28[3] = 0; - *((_BYTE *)v28 + 16) = 0; - *(_DWORD *)((char *)v28 + 18) = 0; - v28[6] = 0; - v28[7] = 0; - v28[8] = 0; - v28[9] = 0; - v28[10] = 0; - v28[11] = 0; - v28[12] = 0; - v28[13] = 0; - v28[14] = 0; - *((_BYTE *)v28 + 82) = 0; - v34 = (std::locale::_Impl *)v28; - std::__moneypunct_cache::_M_cache((int)v28, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v34, v46, v30); - v53 = *v43; - } - v4 = *(_DWORD *)(a4 + 4); - lpuexcpt = *(char **)a4; - if ( **(_WORD **)a4 == *(_WORD *)(v53 + 60) ) - { - v42 = *(__int16 **)(v53 + 40); - v7 = *(std::locale::facet **)(v53 + 44); - v58 = *(_DWORD *)(v53 + 56); - v47 = v7; - v8 = lpuexcpt + 2; - if ( !v4 ) - v8 = lpuexcpt; - lpuexcpt = v8; - } - else - { - v58 = *(_DWORD *)(v53 + 52); - v42 = *(__int16 **)(v53 + 32); - v47 = *(std::locale::facet **)(v53 + 36); - } - v5 = (*(int (__thiscall **)(void *, int, char *, char *))(*(_DWORD *)v48 + 20))(v48, 8, lpuexcpt, &lpuexcpt[2 * v4]) - - (_DWORD)lpuexcpt; - v44 = v5 >> 1; - if ( v5 >> 1 ) - { - v59 = v61; - v60 = 0; - LOWORD(v61[0]) = 0; - std::wstring::reserve((int)&v59, v5); - v9 = *(_DWORD *)(v53 + 48); - v49 = v60; - v40 = v44 - v9; - if ( (int)(v44 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v44 - v9; - if ( v10 ) - v11 = v44; - v40 = v11; - if ( *(_DWORD *)(v53 + 12) ) - { - v50 = 2 * v11; - std::wstring::_M_replace_aux(&v59, 0, v60, 2 * v11, 0); - v12 = (char *)std::__add_grouping( - v59, - *(_WORD *)(v53 + 20), - *(char **)(v53 + 8), - *(_DWORD *)(v53 + 12), - lpuexcpt, - &lpuexcpt[v50]); - v13 = (v12 - (_BYTE *)v59) >> 1; - v49 = v13; - if ( v13 > v60 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v13, - v60); - v60 = (v12 - (_BYTE *)v59) >> 1; - *(_WORD *)v12 = 0; - v9 = *(_DWORD *)(v53 + 48); - } - else - { - std::wstring::_M_replace((unsigned int *)&v59, 0, v60, lpuexcpt, v11); - v49 = v60; - v9 = *(_DWORD *)(v53 + 48); - } - } - if ( v9 > 0 ) - { - v38 = *(_WORD *)(v53 + 18); - v23 = v59; - v39 = v49 + 1; - v24 = 7; - if ( v59 != v61 ) - v24 = v61[0]; - if ( v49 + 1 > v24 ) - { - std::wstring::_M_mutate((int)&v59, v49, 0, 0, 1); - v23 = v59; - } - v23[v49] = v38; - v60 = v49 + 1; - v23[v49 + 1] = 0; - if ( v40 < 0 ) - { - std::wstring::_M_replace_aux(&v59, v39, 0, -v40, *(_WORD *)(v53 + 62)); - if ( v44 > 0x1FFFFFFF - v60 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&v59, lpuexcpt, v44); - } - else - { - v25 = *(_DWORD *)(v53 + 48); - if ( v25 > 0x1FFFFFFF - v39 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&v59, &lpuexcpt[2 * v40], v25); - } - v49 = v60; - } - v45 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v47 + v49); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v47 + v49 + *(_DWORD *)(v53 + 28)); - Block = v64; - v63 = 0; - LOWORD(v64[0]) = 0; - std::wstring::reserve((int)&Block, 2 * (_DWORD)lpuexcpta); - v51 = *(_DWORD *)(a2 + 8); - v14 = v51 > (unsigned int)lpuexcpta && v45 == 16; - v37 = v51 - (_DWORD)lpuexcpta; - lpuexcptb = (void **)&v58; - v41 = v14; - do - { - switch ( *(_BYTE *)lpuexcptb ) - { - case 0: - if ( v41 ) - goto LABEL_31; - break; - case 1: - v36 = v63; - if ( v41 ) - { -LABEL_31: - std::wstring::_M_replace_aux(&Block, v63, 0, v37, a3); - } - else - { - v26 = Block; - v33 = v63 + 1; - v27 = 7; - if ( Block != v64 ) - v27 = v64[0]; - if ( v63 + 1 > v27 ) - { - std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); - v26 = Block; - } - v26[v36] = a3; - v63 = v33; - v26[v36 + 1] = 0; - } - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - { - v17 = *(_DWORD *)(v53 + 28); - if ( v17 > 0x1FFFFFFF - v63 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&Block, *(_WORD **)(v53 + 24), v17); - } - break; - case 3: - if ( v47 ) - { - v32 = *v42; - v35 = v63; - v15 = Block; - v31 = v63 + 1; - v16 = 7; - if ( Block != v64 ) - v16 = v64[0]; - if ( v63 + 1 > v16 ) - { - std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); - v15 = Block; - } - v15[v35] = v32; - v63 = v31; - v15[v35 + 1] = 0; - } - break; - case 4: - std::wstring::_M_append(&Block, v59, v60); - break; - default: - break; - } - lpuexcptb = (void **)((char *)lpuexcptb + 1); - } - while ( &v59 != lpuexcptb ); - v18 = v63; - if ( (unsigned int)v47 > 1 ) - { - if ( (unsigned int)v47 - 1 > 0x1FFFFFFF - v63 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&Block, v42 + 1, (int)v47 - 1); - v18 = v63; - if ( v51 > v63 ) - goto LABEL_38; - } - else if ( v51 > v63 ) - { -LABEL_38: - v29 = v51 - v18; - if ( v45 == 32 ) - std::wstring::_M_replace_aux(&Block, v18, 0, v29, a3); - else - std::wstring::_M_replace_aux(&Block, 0, 0, v29, a3); - goto LABEL_40; - } - v51 = v18; -LABEL_40: - v19 = (int *)Block; - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v20 = 0; - v21 = (*(int (__thiscall **)(_DWORD, void *, unsigned int))(*(_DWORD *)a1 + 48))(a1, Block, v51); - v19 = (int *)Block; - if ( v51 != v21 ) - v20 = 1; - lpuexcptc = v20; - } - v22 = HIDWORD(a1); - LOBYTE(v22) = lpuexcptc; - HIDWORD(v52) = v22; - if ( v19 != v64 ) - operator delete(v19); - if ( v59 != v61 ) - operator delete(v59); - } - *(_DWORD *)(a2 + 8) = 0; - return v52; -} -// 4969EC: variable 'v30' is possibly undefined -// 53F710: using guessed type signed __int32 std::moneypunct::id; -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (00496CC0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - __int16 a3, - int a4) -{ - int v4; // eax - signed int v5; // eax - std::locale::facet *v7; // esi - char *v8; // edx - int v9; // eax - bool v10; // sf - unsigned int v11; // eax - char *v12; // edx - unsigned int v13; // eax - bool v14; // dl - _WORD *v15; // eax - unsigned int v16; // edx - unsigned int v17; // edx - int v18; // ecx - int *v19; // eax - char v20; // bl - int v21; // edx - int v22; // ebx - _WORD *v23; // eax - unsigned int v24; // edx - unsigned int v25; // edx - _WORD *v26; // eax - unsigned int v27; // edx - _DWORD *v28; // eax - unsigned int v29; // [esp-4h] [ebp-ECh] - unsigned int v30; // [esp+8h] [ebp-E0h] - unsigned int v31; // [esp+20h] [ebp-C8h] - __int16 v32; // [esp+24h] [ebp-C4h] - unsigned int v33; // [esp+24h] [ebp-C4h] - std::locale::_Impl *v34; // [esp+28h] [ebp-C0h] - int v35; // [esp+2Ch] [ebp-BCh] - int v36; // [esp+2Ch] [ebp-BCh] - unsigned int v37; // [esp+30h] [ebp-B8h] - __int16 v38; // [esp+30h] [ebp-B8h] - int v39; // [esp+34h] [ebp-B4h] - int v40; // [esp+38h] [ebp-B0h] - bool v41; // [esp+38h] [ebp-B0h] - __int16 *v42; // [esp+3Ch] [ebp-ACh] - int *v43; // [esp+48h] [ebp-A0h] - unsigned int v44; // [esp+48h] [ebp-A0h] - int v45; // [esp+48h] [ebp-A0h] - std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] - std::locale::facet *v47; // [esp+4Ch] [ebp-9Ch] - void *v48; // [esp+50h] [ebp-98h] - int v49; // [esp+50h] [ebp-98h] - int v50; // [esp+50h] [ebp-98h] - unsigned int v51; // [esp+50h] [ebp-98h] - __int64 v52; // [esp+54h] [ebp-94h] - int v53; // [esp+5Ch] [ebp-8Ch] - char *lpuexcpt; // [esp+60h] [ebp-88h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] - void **lpuexcptb; // [esp+60h] [ebp-88h] - char lpuexcptc; // [esp+60h] [ebp-88h] - int v58; // [esp+ACh] [ebp-3Ch] BYREF - void *v59; // [esp+B0h] [ebp-38h] BYREF - int v60; // [esp+B4h] [ebp-34h] - int v61[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - unsigned int v63; // [esp+CCh] [ebp-1Ch] - int v64[6]; // [esp+D0h] [ebp-18h] BYREF - - v52 = a1; - v48 = std::use_facet>(a2 + 108); - v46 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v46); - v53 = *v43; - if ( !*v43 ) - { - v28 = operator new(0x54u); - v28[1] = 0; - *v28 = &off_560704; - v28[2] = 0; - v28[3] = 0; - *((_BYTE *)v28 + 16) = 0; - *(_DWORD *)((char *)v28 + 18) = 0; - v28[6] = 0; - v28[7] = 0; - v28[8] = 0; - v28[9] = 0; - v28[10] = 0; - v28[11] = 0; - v28[12] = 0; - v28[13] = 0; - v28[14] = 0; - *((_BYTE *)v28 + 82) = 0; - v34 = (std::locale::_Impl *)v28; - std::__moneypunct_cache::_M_cache((int)v28, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v34, v46, v30); - v53 = *v43; - } - v4 = *(_DWORD *)(a4 + 4); - lpuexcpt = *(char **)a4; - if ( **(_WORD **)a4 == *(_WORD *)(v53 + 60) ) - { - v42 = *(__int16 **)(v53 + 40); - v7 = *(std::locale::facet **)(v53 + 44); - v58 = *(_DWORD *)(v53 + 56); - v47 = v7; - v8 = lpuexcpt + 2; - if ( !v4 ) - v8 = lpuexcpt; - lpuexcpt = v8; - } - else - { - v58 = *(_DWORD *)(v53 + 52); - v42 = *(__int16 **)(v53 + 32); - v47 = *(std::locale::facet **)(v53 + 36); - } - v5 = (*(int (__thiscall **)(void *, int, char *, char *))(*(_DWORD *)v48 + 20))(v48, 8, lpuexcpt, &lpuexcpt[2 * v4]) - - (_DWORD)lpuexcpt; - v44 = v5 >> 1; - if ( v5 >> 1 ) - { - v59 = v61; - v60 = 0; - LOWORD(v61[0]) = 0; - std::wstring::reserve((int)&v59, v5); - v9 = *(_DWORD *)(v53 + 48); - v49 = v60; - v40 = v44 - v9; - if ( (int)(v44 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v44 - v9; - if ( v10 ) - v11 = v44; - v40 = v11; - if ( *(_DWORD *)(v53 + 12) ) - { - v50 = 2 * v11; - std::wstring::_M_replace_aux(&v59, 0, v60, 2 * v11, 0); - v12 = (char *)std::__add_grouping( - v59, - *(_WORD *)(v53 + 20), - *(char **)(v53 + 8), - *(_DWORD *)(v53 + 12), - lpuexcpt, - &lpuexcpt[v50]); - v13 = (v12 - (_BYTE *)v59) >> 1; - v49 = v13; - if ( v13 > v60 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v13, - v60); - v60 = (v12 - (_BYTE *)v59) >> 1; - *(_WORD *)v12 = 0; - v9 = *(_DWORD *)(v53 + 48); - } - else - { - std::wstring::_M_replace((unsigned int *)&v59, 0, v60, lpuexcpt, v11); - v49 = v60; - v9 = *(_DWORD *)(v53 + 48); - } - } - if ( v9 > 0 ) - { - v38 = *(_WORD *)(v53 + 18); - v23 = v59; - v39 = v49 + 1; - v24 = 7; - if ( v59 != v61 ) - v24 = v61[0]; - if ( v49 + 1 > v24 ) - { - std::wstring::_M_mutate((int)&v59, v49, 0, 0, 1); - v23 = v59; - } - v23[v49] = v38; - v60 = v49 + 1; - v23[v49 + 1] = 0; - if ( v40 < 0 ) - { - std::wstring::_M_replace_aux(&v59, v39, 0, -v40, *(_WORD *)(v53 + 62)); - if ( v44 > 0x1FFFFFFF - v60 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&v59, lpuexcpt, v44); - } - else - { - v25 = *(_DWORD *)(v53 + 48); - if ( v25 > 0x1FFFFFFF - v39 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&v59, &lpuexcpt[2 * v40], v25); - } - v49 = v60; - } - v45 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v47 + v49); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v47 + v49 + *(_DWORD *)(v53 + 28)); - Block = v64; - v63 = 0; - LOWORD(v64[0]) = 0; - std::wstring::reserve((int)&Block, 2 * (_DWORD)lpuexcpta); - v51 = *(_DWORD *)(a2 + 8); - v14 = v51 > (unsigned int)lpuexcpta && v45 == 16; - v37 = v51 - (_DWORD)lpuexcpta; - lpuexcptb = (void **)&v58; - v41 = v14; - do - { - switch ( *(_BYTE *)lpuexcptb ) - { - case 0: - if ( v41 ) - goto LABEL_31; - break; - case 1: - v36 = v63; - if ( v41 ) - { -LABEL_31: - std::wstring::_M_replace_aux(&Block, v63, 0, v37, a3); - } - else - { - v26 = Block; - v33 = v63 + 1; - v27 = 7; - if ( Block != v64 ) - v27 = v64[0]; - if ( v63 + 1 > v27 ) - { - std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); - v26 = Block; - } - v26[v36] = a3; - v63 = v33; - v26[v36 + 1] = 0; - } - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - { - v17 = *(_DWORD *)(v53 + 28); - if ( v17 > 0x1FFFFFFF - v63 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&Block, *(_WORD **)(v53 + 24), v17); - } - break; - case 3: - if ( v47 ) - { - v32 = *v42; - v35 = v63; - v15 = Block; - v31 = v63 + 1; - v16 = 7; - if ( Block != v64 ) - v16 = v64[0]; - if ( v63 + 1 > v16 ) - { - std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); - v15 = Block; - } - v15[v35] = v32; - v63 = v31; - v15[v35 + 1] = 0; - } - break; - case 4: - std::wstring::_M_append(&Block, v59, v60); - break; - default: - break; - } - lpuexcptb = (void **)((char *)lpuexcptb + 1); - } - while ( &v59 != lpuexcptb ); - v18 = v63; - if ( (unsigned int)v47 > 1 ) - { - if ( (unsigned int)v47 - 1 > 0x1FFFFFFF - v63 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&Block, v42 + 1, (int)v47 - 1); - v18 = v63; - if ( v51 > v63 ) - goto LABEL_38; - } - else if ( v51 > v63 ) - { -LABEL_38: - v29 = v51 - v18; - if ( v45 == 32 ) - std::wstring::_M_replace_aux(&Block, v18, 0, v29, a3); - else - std::wstring::_M_replace_aux(&Block, 0, 0, v29, a3); - goto LABEL_40; - } - v51 = v18; -LABEL_40: - v19 = (int *)Block; - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v20 = 0; - v21 = (*(int (__thiscall **)(_DWORD, void *, unsigned int))(*(_DWORD *)a1 + 48))(a1, Block, v51); - v19 = (int *)Block; - if ( v51 != v21 ) - v20 = 1; - lpuexcptc = v20; - } - v22 = HIDWORD(a1); - LOBYTE(v22) = lpuexcptc; - HIDWORD(v52) = v22; - if ( v19 != v64 ) - operator delete(v19); - if ( v59 != v61 ) - operator delete(v59); - } - *(_DWORD *)(a2 + 8) = 0; - return v52; -} -// 49750C: variable 'v30' is possibly undefined -// 53F714: using guessed type signed __int32 std::moneypunct::id; -// 560704: using guessed type int (*off_560704)(); - -//----- (004977E0) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00497800) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - int a1, - unsigned __int8 *a2, - int a3, - unsigned __int8 **a4, - int a5, - int a6, - _DWORD *a7) -{ - unsigned __int8 *v7; // edx - unsigned int v9; // eax - int result; // eax - unsigned __int8 *v11; // [esp+8h] [ebp-10h] BYREF - unsigned __int8 *v12; // [esp+Ch] [ebp-Ch] - - v7 = (unsigned __int8 *)a3; - v11 = a2; - v12 = (unsigned __int8 *)a3; - if ( a2 == (unsigned __int8 *)a3 ) - { -LABEL_9: - result = 0; - } - else - { - while ( 1 ) - { - if ( a6 == a5 ) - { - v7 = v11; - result = 1; - goto LABEL_8; - } - v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); - v7 = v11; - if ( v9 == -2 ) - { - result = 1; - goto LABEL_8; - } - if ( v9 > 0x10FFFF ) - break; - a5 += 4; - *(_DWORD *)(a5 - 4) = v9; - if ( v12 == v7 ) - goto LABEL_9; - } - result = 2; - } -LABEL_8: - *a4 = v7; - *a7 = a5; - return result; -} - -//----- (004978A0) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - int a1, - unsigned int *a2, - unsigned int *a3, - unsigned int **a4, - int a5, - int a6, - _DWORD *a7) -{ - _BYTE *v7; // eax - unsigned int *v8; // ebx - unsigned int v9; // edx - int v11; // edx - _BYTE *v12; // [esp+8h] [ebp-10h] BYREF - _BYTE *v13; // [esp+Ch] [ebp-Ch] - - v7 = (_BYTE *)a5; - v8 = a2; - v12 = (_BYTE *)a5; - v13 = (_BYTE *)a6; - if ( a2 == a3 ) - { - v11 = 0; - } - else - { - do - { - v9 = *v8; - if ( *v8 > 0x10FFFF ) - { - v7 = v12; - v11 = 2; - goto LABEL_11; - } - if ( v9 <= 0x7F ) - { - v7 = v12; - if ( v13 == v12 ) - { - v11 = 1; - goto LABEL_11; - } - ++v12; - *v7 = v9; - } - else if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)&v12, v9) ) - { - v7 = v12; - v11 = 1; - goto LABEL_11; - } - ++v8; - } - while ( a3 != v8 ); - v7 = v12; - v11 = 0; - } -LABEL_11: - *a4 = v8; - *a7 = v7; - return v11; -} - -//----- (00497960) -------------------------------------------------------- -unsigned __int8 *__stdcall std::codecvt::do_length( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - int a4) -{ - int v4; // ebx - bool v5; // dl - bool v6; // al - unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF - - v8[0] = a2; - v8[1] = a3; - if ( !a4 ) - return 0; - v4 = a4 - 1; - do - { - v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; - v6 = v4-- != 0; - } - while ( v6 && v5 ); - return (unsigned __int8 *)(v8[0] - a2); -} - -//----- (004979C0) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (004979E0) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - int a1, - unsigned __int8 *a2, - int a3, - unsigned __int8 **a4, - int a5, - int a6, - _DWORD *a7) -{ - unsigned __int8 *v7; // edx - unsigned int v9; // eax - int result; // eax - unsigned __int8 *v11; // [esp+8h] [ebp-10h] BYREF - unsigned __int8 *v12; // [esp+Ch] [ebp-Ch] - - v7 = (unsigned __int8 *)a3; - v11 = a2; - v12 = (unsigned __int8 *)a3; - if ( a2 == (unsigned __int8 *)a3 ) - { -LABEL_9: - result = 0; - } - else - { - while ( 1 ) - { - if ( a6 == a5 ) - { - v7 = v11; - result = 1; - goto LABEL_8; - } - v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); - v7 = v11; - if ( v9 == -2 ) - { - result = 1; - goto LABEL_8; - } - if ( v9 > 0x10FFFF ) - break; - a5 += 4; - *(_DWORD *)(a5 - 4) = v9; - if ( v12 == v7 ) - goto LABEL_9; - } - result = 2; - } -LABEL_8: - *a4 = v7; - *a7 = a5; - return result; -} - -//----- (00497A80) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - int a1, - unsigned int *a2, - unsigned int *a3, - unsigned int **a4, - _BYTE *a5, - _BYTE *a6, - _DWORD *a7) -{ - _BYTE *v7; // eax - unsigned int *v8; // ebx - int v10; // ecx - _BYTE *v11[4]; // [esp+8h] [ebp-10h] BYREF - - v7 = a5; - v8 = a2; - v11[0] = a5; - v11[1] = a6; - if ( a2 == a3 ) - { - v10 = 0; - } - else - { - do - { - if ( *v8 > 0x10FFFF ) - { - v7 = v11[0]; - v10 = 2; - goto LABEL_7; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v11, *v8) ) - { - v7 = v11[0]; - v10 = 1; - goto LABEL_7; - } - ++v8; - } - while ( a3 != v8 ); - v7 = v11[0]; - v10 = 0; - } -LABEL_7: - *a4 = v8; - *a7 = v7; - return v10; -} - -//----- (00497B10) -------------------------------------------------------- -unsigned __int8 *__stdcall std::codecvt::do_length( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - int a4) -{ - int v4; // ebx - bool v5; // dl - bool v6; // al - unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF - - v8[0] = a2; - v8[1] = a3; - if ( !a4 ) - return 0; - v4 = a4 - 1; - do - { - v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; - v6 = v4-- != 0; - } - while ( v6 && v5 ); - return (unsigned __int8 *)(v8[0] - a2); -} - -//----- (00497B70) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00497B90) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned __int8 **a4, - char *a5, - char *a6, - char **a7) -{ - unsigned __int8 *v7; // edi - unsigned int v9; // eax - int result; // eax - unsigned __int8 *v11; // [esp+8h] [ebp-14h] BYREF - unsigned __int8 *v12; // [esp+Ch] [ebp-10h] - - v7 = a2; - v11 = a2; - v12 = a3; - if ( a2 == a3 ) - { -LABEL_12: - result = 0; - } - else - { - while ( 1 ) - { - if ( a6 == a5 ) - { - v7 = v11; - result = 0; - goto LABEL_10; - } - v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); - if ( v9 == -2 ) - { - v7 = v11; - result = 1; - goto LABEL_10; - } - if ( v9 > 0x10FFFF ) - break; - if ( v9 <= 0xFFFF ) - { - *(_WORD *)a5 = v9; - v7 = v11; - a5 += 2; - if ( v12 == v11 ) - goto LABEL_12; - } - else - { - if ( (unsigned int)(a6 - a5) <= 2 ) - { - result = 1; - goto LABEL_10; - } - v7 = v11; - a5 += 4; - *((_WORD *)a5 - 1) = (v9 & 0x3FF) - 9216; - *((_WORD *)a5 - 2) = (v9 >> 10) - 10304; - if ( v12 == v7 ) - goto LABEL_12; - } - } - v7 = v11; - result = 2; - } -LABEL_10: - *a4 = v7; - *a7 = a5; - return result; -} - -//----- (00497C80) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - int a1, - unsigned __int16 *a2, - unsigned __int16 *a3, - unsigned __int16 **a4, - int a5, - int a6, - _DWORD *a7) -{ - unsigned __int16 *v7; // ebx - _BYTE *v8; // eax - unsigned int v9; // edi - int v10; // eax - int v11; // edi - unsigned int v12; // edx - unsigned __int16 v13; // cx - int v15; // edx - _BYTE *v16; // [esp+8h] [ebp-14h] BYREF - _BYTE *v17; // [esp+Ch] [ebp-10h] - - v7 = a2; - v8 = (_BYTE *)a5; - v16 = (_BYTE *)a5; - v9 = (char *)a3 - (char *)a2; - v17 = (_BYTE *)a6; - if ( a2 != a3 ) - { - while ( 1 ) - { - while ( 1 ) - { - v12 = *v7; - v13 = *v7; - if ( v12 - 55296 > 0x3FF ) - break; - if ( v9 <= 2 ) - goto LABEL_13; - v10 = v7[1]; - if ( (unsigned int)(v10 - 56320) > 0x3FF ) - { -LABEL_16: - v8 = v16; - v15 = 2; - goto LABEL_15; - } - v11 = 2; - v12 = v10 + (v12 << 10) - 56613888; -LABEL_6: - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)&v16, v12) ) - { - v8 = v16; - v15 = 1; - goto LABEL_15; - } - v7 += v11; - v9 = (char *)a3 - (char *)v7; - if ( a3 == v7 ) - goto LABEL_13; - } - if ( v12 - 56320 <= 0x3FF ) - goto LABEL_16; - if ( v12 > 0x7F ) - { - v11 = 1; - goto LABEL_6; - } - v8 = v16; - if ( v17 == v16 ) - { - v15 = 1; - goto LABEL_15; - } - ++v16; - *v8 = v13; - v9 = (char *)a3 - (char *)++v7; - if ( a3 == v7 ) - { -LABEL_13: - v8 = v16; - v15 = 0; - goto LABEL_15; - } - } - } - v15 = 0; -LABEL_15: - *a4 = v7; - *a7 = v8; - return v15; -} - -//----- (00497DA0) -------------------------------------------------------- -unsigned __int8 *__stdcall std::codecvt::do_length( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // esi - unsigned int utf8_code; // eax - unsigned __int8 *v8[6]; // [esp+8h] [ebp-18h] BYREF - - v4 = 1; - v8[0] = a2; - v8[1] = a3; - if ( a4 > 1 ) - { - v5 = 0; - do - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu); - if ( utf8_code > 0x10FFFF ) - return (unsigned __int8 *)(v8[0] - a2); - if ( utf8_code <= 0xFFFF ) - v4 = v5; - v5 = v4 + 1; - v4 += 2; - } - while ( a4 > v4 ); - } - if ( a4 != v4 ) - return (unsigned __int8 *)(v8[0] - a2); - std::`anonymous namespace'::read_utf8_code_point(v8, 0xFFFFu); - return (unsigned __int8 *)(v8[0] - a2); -} - -//----- (00497E40) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00497E60) -------------------------------------------------------- -int std::codecvt::do_encoding() -{ - return 0; -} - -//----- (00497E70) -------------------------------------------------------- -int std::codecvt::do_max_length() -{ - return 4; -} - -//----- (00497E80) -------------------------------------------------------- -int std::codecvt::do_always_noconv() -{ - return 0; -} - -//----- (00497E90) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned __int8 **a4, - char *a5, - char *a6, - char **a7) -{ - int result; // eax - unsigned __int8 *v8[2]; // [esp+8h] [ebp-10h] BYREF - char *v9[2]; // [esp+10h] [ebp-8h] BYREF - - v8[0] = a2; - v8[1] = a3; - v9[0] = a5; - v9[1] = a6; - result = std::`anonymous namespace'::utf16_in(v8, v9, 0x10FFFFu, 1, 0); - *a4 = v8[0]; - *a7 = v9[0]; - return result; -} - -//----- (00497EF0) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - int a1, - unsigned __int16 *a2, - unsigned __int16 *a3, - unsigned __int16 **a4, - _BYTE *a5, - _BYTE *a6, - _BYTE **a7) -{ - int result; // eax - unsigned __int16 *v8[2]; // [esp+4h] [ebp-10h] BYREF - _BYTE *v9[2]; // [esp+Ch] [ebp-8h] BYREF - - v8[0] = a2; - v8[1] = a3; - v9[0] = a5; - v9[1] = a6; - result = std::`anonymous namespace'::utf16_out(v8, v9, 0x10FFFFu, 0); - *a4 = v8[0]; - *a7 = v9[0]; - return result; -} - -//----- (00497F50) -------------------------------------------------------- -unsigned __int8 *__stdcall std::codecvt::do_length( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned int a4) -{ - return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a2, a3, a4, 0x10FFFFu, 0) - a2); -} - -//----- (00497F80) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00497FA0) -------------------------------------------------------- -int std::codecvt::do_max_length() -{ - return 1; -} - -//----- (00497FB0) -------------------------------------------------------- -int std::codecvt::do_always_noconv() -{ - return 1; -} - -//----- (00497FC0) -------------------------------------------------------- -int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) -{ - *a4 = a2; - *a7 = a5; - return 3; -} - -//----- (00497FE0) -------------------------------------------------------- -int __stdcall std::codecvt::do_out(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) -{ - *a4 = a2; - *a7 = a5; - return 3; -} - -//----- (00498000) -------------------------------------------------------- -unsigned int __stdcall std::codecvt::do_length(int a1, int a2, int a3, unsigned int a4) -{ - unsigned int result; // eax - - result = a3 - a2; - if ( a3 - a2 > a4 ) - return a4; - return result; -} - -//----- (00498020) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00498040) -------------------------------------------------------- -BOOL __cdecl std::codecvt::do_encoding() -{ - return ____mb_cur_max_func() == 1; -} - -//----- (004980C0) -------------------------------------------------------- -int __cdecl std::codecvt::do_max_length() -{ - return ____mb_cur_max_func(); -} - -//----- (00498140) -------------------------------------------------------- -int std::codecvt::do_always_noconv() -{ - return 0; -} - -//----- (00498150) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - unsigned int *a1, - char *a2, - unsigned int a3, - char **a4, - wchar_t *a5, - unsigned int a6, - wchar_t **a7) -{ - char *v7; // esi - wchar_t *v8; // edi - const char *SrcCh; // edi - wchar_t *DstCh; // esi - size_t v11; // eax - int result; // eax - mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF - wchar_t *v14; // [esp+50h] [ebp+14h] - wchar_t *v15; // [esp+50h] [ebp+14h] - wchar_t *v16; // [esp+50h] [ebp+14h] - - v7 = a2; - v8 = a5; - State._Wchar = *a1; - if ( (unsigned int)a5 >= a6 || (unsigned int)a2 >= a3 ) - { -LABEL_12: - result = (unsigned int)v7 < a3; - } - else - { - SrcCh = a2; - DstCh = a5; - while ( 1 ) - { - v11 = mbrtowc(DstCh, SrcCh, a3 - (_DWORD)SrcCh, &State); - if ( v11 == -1 ) - { - v14 = DstCh; - result = 2; - v7 = (char *)SrcCh; - v8 = v14; - goto LABEL_13; - } - if ( v11 == -2 ) - break; - if ( !v11 ) - { - *DstCh = 0; - v11 = 1; - } - SrcCh += v11; - ++DstCh; - *a1 = State._Wchar; - if ( a3 <= (unsigned int)SrcCh || a6 <= (unsigned int)DstCh ) - { - v15 = DstCh; - v7 = (char *)SrcCh; - v8 = v15; - goto LABEL_12; - } - } - v16 = DstCh; - result = 1; - v7 = (char *)SrcCh; - v8 = v16; - } -LABEL_13: - *a4 = v7; - *a7 = v8; - return result; -} - -//----- (00498240) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - unsigned int *a1, - wchar_t *a2, - unsigned int a3, - wchar_t **a4, - char *a5, - unsigned int a6, - char **a7) -{ - wchar_t *v7; // edi - char *v8; // ebx - unsigned int Size; // eax - int result; // eax - size_t v11; // eax - char *Dest; // [esp+0h] [ebp-4Ch] - mbstate_t Src; // [esp+24h] [ebp-28h] BYREF - - v7 = a2; - v8 = a5; - Src._Wchar = *a1; - if ( (int)(____mb_cur_max_func() * ((int)(a3 - (_DWORD)a2) >> 1) - (a6 - (_DWORD)a5)) <= 0 ) - { - if ( a3 <= (unsigned int)a2 ) - { -LABEL_18: - result = 0; - goto LABEL_12; - } - while ( 1 ) - { - v11 = wcrtomb(v8, *v7, &Src); - if ( v11 == -1 ) - break; - v8 += v11; - ++v7; - *a1 = Src._Wchar; - if ( a3 <= (unsigned int)v7 ) - goto LABEL_18; - } - } - else - { - if ( a3 <= (unsigned int)a2 || a6 <= (unsigned int)a5 ) - { -LABEL_11: - result = (unsigned int)v7 < a3; - goto LABEL_12; - } - for ( Size = wcrtomb((char *)&Src._State + 1, *a2, &Src); Size != -1; Size = wcrtomb( - (char *)&Src._State + 1, - *v7, - &Src) ) - { - if ( a6 - (unsigned int)v8 < Size ) - { - result = 1; - goto LABEL_12; - } - Dest = v8; - ++v7; - v8 += Size; - memcpy(Dest, (char *)&Src._State + 1, Size); - *a1 = Src._Wchar; - if ( a3 <= (unsigned int)v7 || a6 <= (unsigned int)v8 ) - goto LABEL_11; - } - } - result = 2; -LABEL_12: - *a4 = v7; - *a7 = v8; - return result; -} - -//----- (00498370) -------------------------------------------------------- -int __stdcall std::codecvt::do_length(unsigned int *a1, char *a2, unsigned int a3, int a4) -{ - int v4; // esi - const char *SrcCh; // ebp - int v6; // edi - size_t v7; // eax - mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF - - v4 = 0; - State._Wchar = *a1; - if ( a4 && (unsigned int)a2 < a3 ) - { - SrcCh = a2; - v6 = a4; - do - { - v7 = mbrtowc(0, SrcCh, a3 - (_DWORD)SrcCh, &State); - if ( v7 > 0xFFFFFFFD ) - break; - if ( !v7 ) - v7 = 1; - --v6; - SrcCh += v7; - *a1 = State._Wchar; - v4 += v7; - if ( a3 <= (unsigned int)SrcCh ) - break; - } - while ( v6 ); - } - return v4; -} - -//----- (00498400) -------------------------------------------------------- -int __stdcall std::collate::_M_compare(char *String1, char *String2) -{ - int v2; // eax - - v2 = strcoll(String1, String2); - return (v2 >> 30) | (v2 != 0); -} - -//----- (00498430) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int __stdcall std::collate::do_compare(void *a1, _BYTE *a2, void *a3, int a4) -{ - int i; // eax - char *v5; // eax - int v6; // eax - int v7; // eax - char *v9; // [esp+18h] [ebp-74h] - char *v10; // [esp+18h] [ebp-74h] - char *Str; // [esp+1Ch] [ebp-70h] - char *v12; // [esp+20h] [ebp-6Ch] - int v13; // [esp+24h] [ebp-68h] - char *v14; // [esp+2Ch] [ebp-60h] - char *v15; // [esp+30h] [ebp-5Ch] - char *v16; // [esp+34h] [ebp-58h] - char v17; // [esp+7Bh] [ebp-11h] BYREF - _BYTE *retaddr; // [esp+8Ch] [ebp+0h] - - v15 = (char *)std::string::_S_construct(retaddr, (int)a1); - v16 = (char *)std::string::_S_construct(a2, (int)a3); - Str = v16; - v9 = v15; - v12 = &v16[*((_DWORD *)v16 - 3)]; - v14 = &v15[*((_DWORD *)v15 - 3)]; - for ( i = std::collate::_M_compare(v15, v16); ; i = std::collate::_M_compare(v9, v5 + 1) ) - { - v13 = i; - if ( i ) - break; - v10 = &v9[strlen(v9)]; - v5 = &Str[strlen(Str)]; - if ( v14 == v10 ) - { - if ( v12 == v5 ) - break; - if ( v14 == v10 ) - { - v13 = -1; - break; - } - } - if ( v12 == v5 ) - { - v13 = 1; - break; - } - Str = v5 + 1; - v9 = v10 + 1; - } - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_11; - } - else - { - v6 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_11; - } - std::string::_Rep::_M_destroy(v16 - 12, (int)&v17); -LABEL_11: - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v15 - 1, 0xFFFFFFFF) > 0 ) - return v13; -LABEL_15: - std::string::_Rep::_M_destroy(v15 - 12, (int)&v17); - return v13; - } - v7 = *((_DWORD *)v15 - 1); - *((_DWORD *)v15 - 1) = v7 - 1; - if ( v7 <= 0 ) - goto LABEL_15; - return v13; -} -// 498650: positive sp value 4 has been found -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00498670) -------------------------------------------------------- -size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) -{ - return strxfrm(Destination, Source, MaxCount); -} - -//----- (004986A0) -------------------------------------------------------- -int *__thiscall std::collate::do_transform(int *this, int a2, _BYTE *a3, int a4) -{ - size_t i; // eax - int v5; // eax - char *v6; // eax - int v7; // eax - unsigned int v9; // [esp+4h] [ebp-84h] - unsigned int v10; // [esp+8h] [ebp-80h] - char *v11; // [esp+1Ch] [ebp-6Ch] - char *v12; // [esp+20h] [ebp-68h] - int v13; // [esp+24h] [ebp-64h] - std::string *v14; // [esp+28h] [ebp-60h] - char *Block; // [esp+2Ch] [ebp-5Ch] - unsigned int v17; // [esp+34h] [ebp-54h] - char *Str; // [esp+38h] [ebp-50h] - int v19; // [esp+7Fh] [ebp-9h] BYREF - - *this = (int)std::string::_S_construct(0, 0); - v11 = (char *)std::string::_S_construct(a3, a4); - v17 = 2 * (a4 - (_DWORD)a3); - v12 = &v11[*((_DWORD *)v11 - 3)]; - Block = (char *)operator new[](v17); - Str = v11; - for ( i = std::collate::_M_transform(Block, v11, v17); ; i = std::collate::_M_transform(Block, Str, v17) ) - { - if ( v17 <= i ) - { - v17 = i + 1; - operator delete[](Block); - Block = (char *)operator new[](v17); - i = std::collate::_M_transform(Block, Str, v17); - } - std::string::append(this, (std::string *)Block, i, v10); - v6 = &Str[strlen(Str)]; - if ( v12 == v6 ) - break; - Str = v6 + 1; - v13 = *(_DWORD *)(*this - 12); - v14 = (std::string *)(v13 + 1); - if ( (unsigned int)(v13 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::string::reserve(this, v14, v9); - *(_BYTE *)(*this + *(_DWORD *)(*this - 12)) = 0; - v5 = *this; - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v14; - *(_BYTE *)(v5 + v13 + 1) = 0; - } - operator delete[](Block); - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v11 - 1, 0xFFFFFFFF) > 0 ) - return this; -LABEL_13: - std::string::_Rep::_M_destroy(v11 - 12, (int)&v19); - return this; - } - v7 = *((_DWORD *)v11 - 1); - *((_DWORD *)v11 - 1) = v7 - 1; - if ( v7 <= 0 ) - goto LABEL_13; - return this; -} -// 498783: variable 'v9' is possibly undefined -// 498828: variable 'v10' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00498950) -------------------------------------------------------- -int __thiscall std::collate::hash(void *this, char *a2, char *a3) -{ - char *v3; // edx - int (__stdcall *v4)(char *, char *); // eax - int result; // eax - int v6; // ecx - - v3 = a2; - v4 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); - if ( v4 != std::collate::do_hash ) - return v4(a2, a3); - result = 0; - if ( a2 < a3 ) - { - do - { - v6 = *v3++; - result = v6 + __ROL4__(result, 7); - } - while ( a3 != v3 ); - } - return result; -} - -//----- (004989A0) -------------------------------------------------------- -int __fastcall std::collate::compare(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (004989B0) -------------------------------------------------------- -int __stdcall std::collate::do_hash(char *a1, char *a2) -{ - char *v2; // edx - int result; // eax - int v4; // ecx - - v2 = a1; - result = 0; - if ( a1 < a2 ) - { - do - { - v4 = *v2++; - result = v4 + __ROL4__(result, 7); - } - while ( a2 != v2 ); - } - return result; -} - -//----- (004989E0) -------------------------------------------------------- -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) -{ - (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); - return this; -} - -//----- (00498A10) -------------------------------------------------------- -int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) -{ - int v2; // eax - - v2 = wcscoll(String1, String2); - return (v2 >> 30) | (v2 != 0); -} - -//----- (00498A40) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int __stdcall std::collate::do_compare(void *a1, _WORD *a2, void *a3, int a4) -{ - int i; // eax - wchar_t *v5; // eax - int v6; // eax - int v7; // eax - wchar_t *v9; // [esp+18h] [ebp-74h] - wchar_t *v10; // [esp+18h] [ebp-74h] - wchar_t *String; // [esp+1Ch] [ebp-70h] - wchar_t *v12; // [esp+20h] [ebp-6Ch] - int v13; // [esp+24h] [ebp-68h] - wchar_t *v14; // [esp+2Ch] [ebp-60h] - wchar_t *v15; // [esp+30h] [ebp-5Ch] - wchar_t *v16; // [esp+34h] [ebp-58h] - char v17; // [esp+7Bh] [ebp-11h] BYREF - _WORD *retaddr; // [esp+8Ch] [ebp+0h] - - v15 = (wchar_t *)std::wstring::_S_construct(retaddr, (int)a1); - v16 = (wchar_t *)std::wstring::_S_construct(a2, (int)a3); - String = v16; - v9 = v15; - v14 = &v15[*((_DWORD *)v15 - 3)]; - v12 = &String[*((_DWORD *)String - 3)]; - for ( i = std::collate::_M_compare(v15, v16); ; i = std::collate::_M_compare(v9, v5 + 1) ) - { - v13 = i; - if ( i ) - break; - v10 = &v9[wcslen(v9)]; - v5 = &String[wcslen(String)]; - if ( v14 == v10 ) - { - if ( v12 == v5 ) - break; - if ( v14 == v10 ) - { - v13 = -1; - break; - } - } - if ( v12 == v5 ) - { - v13 = 1; - break; - } - String = v5 + 1; - v9 = v10 + 1; - } - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_11; - } - else - { - v6 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_11; - } - std::wstring::_Rep::_M_destroy(v16 - 6, (int)&v17); -LABEL_11: - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v15 - 1, 0xFFFFFFFF) > 0 ) - return v13; -LABEL_15: - std::wstring::_Rep::_M_destroy(v15 - 6, (int)&v17); - return v13; - } - v7 = *((_DWORD *)v15 - 1); - *((_DWORD *)v15 - 1) = v7 - 1; - if ( v7 <= 0 ) - goto LABEL_15; - return v13; -} -// 498C68: positive sp value 4 has been found -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00498C80) -------------------------------------------------------- -size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) -{ - return wcsxfrm(Destination, Source, MaxCount); -} - -//----- (00498CB0) -------------------------------------------------------- -int *__thiscall std::collate::do_transform(int *this, int a2, _WORD *a3, int a4) -{ - unsigned int i; // eax - int v5; // eax - wchar_t *v6; // eax - int v7; // eax - wchar_t *v9; // [esp+10h] [ebp-68h] - wchar_t *v10; // [esp+14h] [ebp-64h] - unsigned int v11; // [esp+18h] [ebp-60h] - wchar_t *Block; // [esp+1Ch] [ebp-5Ch] - wchar_t *String; // [esp+24h] [ebp-54h] - size_t lpuexcpt; // [esp+28h] [ebp-50h] - int v16; // [esp+6Fh] [ebp-9h] BYREF - - *this = (int)std::wstring::_S_construct(0, 0); - v9 = (wchar_t *)std::wstring::_S_construct(a3, a4); - v10 = &v9[*((_DWORD *)v9 - 3)]; - lpuexcpt = a4 - (_DWORD)a3; - if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - Block = (wchar_t *)operator new[](2 * (a4 - (_DWORD)a3)); - String = v9; - for ( i = std::collate::_M_transform(Block, v9, lpuexcpt); - ; - i = std::collate::_M_transform(Block, String, lpuexcpt) ) - { - if ( lpuexcpt <= i ) - { - lpuexcpt = i + 1; - operator delete[](Block); - if ( lpuexcpt > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - Block = (wchar_t *)operator new[](2 * lpuexcpt); - i = std::collate::_M_transform(Block, String, lpuexcpt); - } - std::wstring::append(this, (char *)Block, i); - v6 = &String[wcslen(String)]; - if ( v10 == v6 ) - break; - String = v6 + 1; - v11 = *(_DWORD *)(*this - 12) + 1; - if ( v11 > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::wstring::reserve(this, v11); - v5 = *this; - *(_WORD *)(v5 + 2 * *(_DWORD *)(*this - 12)) = 0; - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v11; - *(_WORD *)(v5 + 2 * v11) = 0; - } - operator delete[](Block); - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v9 - 1, 0xFFFFFFFF) > 0 ) - return this; -LABEL_15: - std::wstring::_Rep::_M_destroy(v9 - 6, (int)&v16); - return this; - } - v7 = *((_DWORD *)v9 - 1); - *((_DWORD *)v9 - 1) = v7 - 1; - if ( v7 <= 0 ) - goto LABEL_15; - return this; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00498F90) -------------------------------------------------------- -int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3) -{ - unsigned __int16 *v3; // edx - int (__stdcall *v4)(unsigned __int16 *, unsigned int); // eax - int result; // eax - int v6; // ecx - - v3 = a2; - v4 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); - if ( v4 != std::collate::do_hash ) - return v4(a2, a3); - result = 0; - if ( (unsigned int)a2 < a3 ) - { - do - { - v6 = *v3++; - result = v6 + __ROL4__(result, 7); - } - while ( a3 > (unsigned int)v3 ); - } - return result; -} - -//----- (00498FE0) -------------------------------------------------------- -int __fastcall std::collate::compare(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (00498FF0) -------------------------------------------------------- -int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) -{ - unsigned __int16 *v2; // edx - int result; // eax - int v4; // ecx - - v2 = a1; - for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) - v4 = *v2++; - return result; -} - -//----- (00499020) -------------------------------------------------------- -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) -{ - (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); - return this; -} - -//----- (00499050) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // ebx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - unsigned int v20; // edx - unsigned int v21; // eax - int *v22; // eax - bool v24; // al - bool v25; // zf - _DWORD *v26; // eax - char *v27; // eax - char *v28; // eax - unsigned int v29; // edx - _BYTE *v30; // eax - int v31; // eax - _DWORD *v32; // ecx - unsigned int v33; // eax - unsigned int v34; // edx - unsigned int v35; // eax - char *v36; // eax - size_t v37; // edx - size_t v38; // edx - int v39; // edx - char *v40; // eax - char *v41; // eax - _DWORD *v42; // eax - int v43; // eax - bool v44; // bl - bool v45; // zf - _DWORD *v46; // eax - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // dl - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - bool v55; // zf - char v56; // bl - _DWORD *v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - _DWORD *v61; // eax - char v62; // bl - int v63; // eax - bool v64; // zf - _DWORD *v65; // eax - char v66; // bl - int v67; // eax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // zf - char v71; // al - _DWORD *v72; // eax - bool v73; // zf - _DWORD *v74; // eax - bool v75; // cl - char v76; // bl - int v77; // eax - bool v78; // dl - bool v79; // zf - _DWORD *v80; // eax - int v81; // eax - bool v82; // bl - bool v83; // zf - _DWORD *v84; // eax - int v85; // eax - char v86; // dl - bool v87; // zf - _DWORD *v88; // eax - int v89; // eax - bool v90; // dl - bool v91; // zf - _DWORD *v92; // eax - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+18h] [ebp-A0h] - size_t MaxCount; // [esp+1Ch] [ebp-9Ch] - int Buf; // [esp+20h] [ebp-98h] - void *Bufa; // [esp+20h] [ebp-98h] - bool v98; // [esp+26h] [ebp-92h] - char v99; // [esp+27h] [ebp-91h] - unsigned int v100; // [esp+28h] [ebp-90h] - char v101; // [esp+2Ch] [ebp-8Ch] - char v102; // [esp+2Ch] [ebp-8Ch] - int v103; // [esp+30h] [ebp-88h] - char v104; // [esp+30h] [ebp-88h] - char v105; // [esp+34h] [ebp-84h] - int v106; // [esp+34h] [ebp-84h] - size_t v107; // [esp+34h] [ebp-84h] - char v108; // [esp+38h] [ebp-80h] - unsigned int v109; // [esp+38h] [ebp-80h] - _DWORD *v110; // [esp+3Ch] [ebp-7Ch] - char v111; // [esp+40h] [ebp-78h] - bool v112; // [esp+40h] [ebp-78h] - int *v113; // [esp+44h] [ebp-74h] - unsigned int v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - bool v116; // [esp+48h] [ebp-70h] - char v117; // [esp+48h] [ebp-70h] - char v118; // [esp+48h] [ebp-70h] - char v119; // [esp+48h] [ebp-70h] - char v120; // [esp+48h] [ebp-70h] - _DWORD *v121; // [esp+4Ch] [ebp-6Ch] - bool v122; // [esp+50h] [ebp-68h] - int v123; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - char lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v131; // [esp+9Ch] [ebp-1Ch] - int v132[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v110 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v113 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v123 = *v113; - if ( !*v113 ) - { - v42 = operator new(0x68u); - v42[1] = 0; - *v42 = &off_5605B0; - v42[2] = 0; - v42[3] = 0; - *((_BYTE *)v42 + 16) = 0; - v42[5] = 0; - v42[6] = 0; - v42[7] = 0; - v42[8] = 0; - *((_WORD *)v42 + 18) = 0; - *((_BYTE *)v42 + 100) = 0; - v94 = (std::locale::_Impl *)v42; - std::__numpunct_cache::_M_cache((int)v42, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v123 = *v113; - } - v114 = 8; - v103 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v103 != 64 ) - { - v7 = 10; - if ( v103 == 8 ) - v7 = 16; - v114 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v82 = lpuexcpta && a1 != 0; - v83 = v81 == -1; - if ( v81 != -1 ) - v82 = 0; - v84 = 0; - if ( !v83 ) - v84 = a1; - v105 = v82; - v121 = v84; - } - else - { - v105 = 0; - } - } - else - { - v105 = a2 == -1; - } - v122 = a4 == -1; - if ( v122 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v78 = v122 && a3 != 0; - v79 = v77 == -1; - if ( v77 != -1 ) - v78 = 0; - v80 = 0; - if ( !v79 ) - v80 = a3; - v101 = v78; - v110 = v80; - } - else - { - v101 = 0; - } - } - else - { - v101 = a4 == -1; - } - if ( v105 != v101 ) - { - if ( v121 && a2 == -1 ) - { - v41 = (char *)v121[2]; - if ( (unsigned int)v41 >= v121[3] ) - { - v85 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v86 = -1; - v87 = v85 == -1; - if ( v85 != -1 ) - v86 = v85; - v88 = 0; - if ( !v87 ) - v88 = v121; - lpuexcptb = v86; - v121 = v88; - } - else - { - lpuexcptb = *v41; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v123 + 16); - v98 = *(_BYTE *)(v123 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v123 + 74) == lpuexcptb || *(_BYTE *)(v123 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v123 + 37) != lpuexcptb) && *(_BYTE *)(v123 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = v121[2]; - v10 = v121[3]; - } - else - { - v11 = v9 + 1; - v121[2] = v11; - } - v111 = 0; - if ( v11 >= v10 ) - { - v52 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v53 = 0; - if ( !v52 ) - v53 = v121; - v111 = v52; - v121 = v53; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v89 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); - v90 = v122 && v110 != 0; - v91 = v89 == -1; - if ( v89 != -1 ) - v90 = 0; - v92 = 0; - if ( !v91 ) - v92 = v110; - v115 = v90; - v110 = v92; - } - else - { - v115 = 0; - } - } - else - { - v115 = a4 == -1; - } - if ( v111 == v115 ) - { - v104 = 1; - v106 = 0; - v112 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v121 ) - { - v40 = (char *)v121[2]; - if ( (unsigned int)v40 >= v121[3] ) - { - v62 = -1; - v63 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v64 = v63 == -1; - if ( v63 != -1 ) - v62 = v63; - v65 = 0; - if ( !v64 ) - v65 = v121; - lpuexcptb = v62; - v121 = v65; - } - else - { - lpuexcptb = *v40; - } - } - v8 = *(_BYTE *)(v123 + 16); - } - } - else - { - v98 = 0; - } - v106 = 0; - v112 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v123 + 37) == lpuexcptb || *(_BYTE *)(v123 + 36) == lpuexcptb ) - { -LABEL_111: - v104 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v123 + 78) != lpuexcptb ) - break; - v24 = v114 == 10 || !v112; - if ( !v24 ) - goto LABEL_33; - v112 = v103 == 0 || v114 == 8; - if ( !v112 ) - { - ++v106; - v112 = v24; - goto LABEL_37; - } - v12 = v121; - v114 = 8; - v106 = 0; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 < v14 ) - { -LABEL_38: - v15 = v13 + 1; - v108 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v108 = 0; - if ( v121[2] < v121[3] ) - { -LABEL_39: - v116 = v122 && v110 != 0; - if ( !v116 ) - goto LABEL_40; - goto LABEL_79; - } -LABEL_76: - v25 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v26 = 0; - if ( !v25 ) - v26 = v121; - v108 = v25; - v121 = v26; - v116 = v122 && v110 != 0; - if ( !v116 ) - { -LABEL_40: - v117 = a4 == -1; - goto LABEL_41; - } -LABEL_79: - if ( v110[2] >= v110[3] ) - { - v43 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); - v44 = v116; - v45 = v43 == -1; - if ( v43 != -1 ) - v44 = 0; - v46 = 0; - if ( !v45 ) - v46 = v110; - v117 = v44; - v110 = v46; -LABEL_41: - if ( v108 == v117 ) - goto LABEL_42; - goto LABEL_81; - } - if ( !v108 ) - { -LABEL_42: - v104 = 1; - goto LABEL_43; - } -LABEL_81: - lpuexcptb = -1; - if ( v121 ) - { - v27 = (char *)v121[2]; - if ( (unsigned int)v27 >= v121[3] ) - { - v66 = -1; - v67 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v68 = v67 == -1; - if ( v67 != -1 ) - v66 = v67; - v69 = 0; - if ( !v68 ) - v69 = v121; - lpuexcptb = v66; - v121 = v69; - } - else - { - lpuexcptb = *v27; - } - } - if ( !v112 ) - { - v104 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v123 + 16); - } - if ( !v112 ) - goto LABEL_111; -LABEL_33: - if ( *(_BYTE *)(v123 + 76) != lpuexcptb && *(_BYTE *)(v123 + 77) != lpuexcptb ) - { - v104 = 0; - v112 = 1; - goto LABEL_43; - } - if ( v103 != 0 && v114 != 16 ) - { - v104 = 0; - MaxCount = v114; - Buf = v114; - v112 = 1; - goto LABEL_46; - } - v106 = 0; - v112 = 0; - v114 = 16; -LABEL_37: - v12 = v121; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 < v14 ) - goto LABEL_38; - goto LABEL_75; - } - v98 = 0; - v104 = 1; - lpuexcptb = 0; - v106 = 0; - v112 = 0; -LABEL_43: - v16 = 22; - if ( v114 != 16 ) - v16 = v114; - MaxCount = v16; - Buf = v16; -LABEL_46: - v131 = 0; - Block = v132; - LOBYTE(v132[0]) = 0; - if ( *(_BYTE *)(v123 + 16) ) - std::string::reserve(&Block, 0x20u); - v100 = 0xFFFFFFFF / v114; - v99 = *(_BYTE *)(v123 + 100); - if ( !v99 ) - { - if ( v104 ) - { - v76 = v104; - v102 = 0; - v104 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - v99 = v76; - v109 = 0; - goto LABEL_63; - } - v102 = 0; - v109 = 0; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_110; - v17 = lpuexcptb - 55; - goto LABEL_55; - } - v17 = lpuexcptb - 87; - if ( v100 < v109 ) - { -LABEL_56: - v18 = v121; - v102 = 1; - v19 = v121[2]; - v20 = v121[3]; - if ( v19 < v20 ) - goto LABEL_57; - goto LABEL_90; - } -LABEL_89: - v102 |= ~v17 < v114 * v109; - v18 = v121; - v109 = v114 * v109 + v17; - v20 = v121[3]; - v19 = v121[2]; - ++v106; - if ( v19 < v20 ) - { -LABEL_57: - v21 = v19 + 1; - v18[2] = v21; - goto LABEL_58; - } -LABEL_90: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v21 = v121[2]; - v20 = v121[3]; -LABEL_58: - v118 = 0; - if ( v21 >= v20 ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v48 = 0; - if ( !v47 ) - v48 = v121; - v118 = v47; - v121 = v48; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; - v50 = 0; - if ( !v49 ) - v50 = v110; - v51 = v122 && v110 != 0; - v110 = v50; - if ( !v49 ) - v51 = 0; - lpuexcptc = v51; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v118 ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v121 ) - { - v28 = (char *)v121[2]; - if ( (unsigned int)v28 >= v121[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v55 = v54 == -1; - v56 = -1; - if ( v54 != -1 ) - v56 = v54; - v57 = 0; - if ( !v55 ) - v57 = v121; - lpuexcptb = v56; - v121 = v57; - } - else - { - lpuexcptb = *v28; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_110; -LABEL_54: - v17 = lpuexcptb - 48; -LABEL_55: - if ( v100 < v109 ) - goto LABEL_56; - goto LABEL_89; - } - if ( v104 ) - { - v109 = 0; - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - v99 = v104; - v104 = 0; - goto LABEL_63; - } - v102 = 0; - v109 = 0; - Bufa = (void *)(v123 + 78); - while ( !*(_BYTE *)(v123 + 16) || *(_BYTE *)(v123 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v123 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_110: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - v31 = v30 - (_BYTE *)Bufa; - if ( v31 > 15 ) - v31 -= 6; - if ( v100 >= v109 ) - { - v102 |= ~v31 < v114 * v109; - ++v106; - v109 = v114 * v109 + v31; - goto LABEL_122; - } - v32 = v121; - v102 = v99; - v34 = v121[3]; - v33 = v121[2]; - if ( v33 < v34 ) - { -LABEL_123: - v35 = v33 + 1; - v32[2] = v35; - goto LABEL_124; - } -LABEL_130: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v35 = v121[2]; - v34 = v121[3]; -LABEL_124: - v119 = 0; - if ( v34 <= v35 ) - { - v70 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v71 = 0; - if ( v70 ) - v71 = v99; - v119 = v71; - v72 = 0; - if ( !v70 ) - v72 = v121; - v121 = v72; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; - v74 = 0; - if ( !v73 ) - v74 = v110; - v75 = v122 && v110 != 0; - v110 = v74; - if ( !v73 ) - v75 = 0; - lpuexcpte = v75; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v119 ) - { - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v121 ) - { - v36 = (char *)v121[2]; - if ( (unsigned int)v36 >= v121[3] ) - { - v58 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v59 = v58 == -1; - v60 = -1; - if ( v58 != -1 ) - v60 = v58; - v61 = 0; - if ( !v59 ) - v61 = v121; - lpuexcptb = v60; - v121 = v61; - } - else - { - lpuexcptb = *v36; - } - } - else - { - lpuexcptb = -1; - } - } - v22 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v131; - if ( v106 ) - { - v120 = v106; - v37 = 15; - if ( Block != v132 ) - v37 = v132[0]; - v107 = v131 + 1; - if ( v131 + 1 > v37 ) - { - std::string::_M_mutate((int)&Block, v131, 0, 0, 1u); - v22 = (int *)Block; - } - v38 = v107; - v106 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v120; - v131 = v38; - *((_BYTE *)Block + v38) = 0; -LABEL_122: - v32 = v121; - v33 = v121[2]; - v34 = v121[3]; - if ( v33 < v34 ) - goto LABEL_123; - goto LABEL_130; - } - v99 = 0; - v104 = *(_BYTE *)(v123 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v29 = 15; - if ( v22 != v132 ) - v29 = v132[0]; - if ( (unsigned int)lpuexcptd + 1 > v29 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v22 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v106; - v131 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v123 + 8), *(_DWORD *)(v123 + 12), (int)&Block) ) - *a6 = 4; - v22 = (int *)Block; - if ( v112 || v131 | v106 ) - goto LABEL_102; -LABEL_66: - *a7 = 0; - *a6 = 4; - } - else - { - if ( !v106 && !v112 ) - goto LABEL_66; -LABEL_102: - if ( v104 ) - goto LABEL_66; - if ( v102 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v39 = -v109; - if ( !v98 ) - v39 = v109; - *a7 = v39; - } - } - if ( v99 ) - *a6 |= 2u; - if ( v22 != v132 ) - operator delete(v22); - return v121; -} -// 499B57: variable 'v93' is possibly undefined -// 53F728: using guessed type signed __int32 std::numpunct::id; -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (0049A080) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // ebx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - unsigned int v20; // edx - unsigned int v21; // eax - int *v22; // eax - bool v24; // al - bool v25; // zf - _DWORD *v26; // eax - char *v27; // eax - char *v28; // eax - unsigned int v29; // edx - _BYTE *v30; // eax - int v31; // eax - _DWORD *v32; // ecx - unsigned int v33; // eax - unsigned int v34; // edx - unsigned int v35; // eax - char *v36; // eax - size_t v37; // edx - size_t v38; // edx - int v39; // edx - char *v40; // eax - char *v41; // eax - _DWORD *v42; // eax - int v43; // eax - bool v44; // dl - bool v45; // zf - _DWORD *v46; // eax - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // cl - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - bool v55; // zf - char v56; // bl - _DWORD *v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - _DWORD *v61; // eax - char v62; // bl - int v63; // eax - bool v64; // zf - _DWORD *v65; // eax - char v66; // bl - int v67; // eax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // zf - char v71; // al - _DWORD *v72; // eax - bool v73; // zf - _DWORD *v74; // eax - bool v75; // cl - char v76; // bl - int v77; // eax - bool v78; // dl - bool v79; // zf - _DWORD *v80; // eax - int v81; // eax - bool v82; // bl - bool v83; // zf - _DWORD *v84; // eax - int v85; // eax - char v86; // dl - bool v87; // zf - _DWORD *v88; // eax - int v89; // eax - bool v90; // dl - bool v91; // zf - _DWORD *v92; // eax - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+10h] [ebp-A8h] - bool v95; // [esp+14h] [ebp-A4h] - size_t MaxCount; // [esp+18h] [ebp-A0h] - unsigned int v97; // [esp+1Ch] [ebp-9Ch] - int Buf; // [esp+20h] [ebp-98h] - void *Bufa; // [esp+20h] [ebp-98h] - char v100; // [esp+27h] [ebp-91h] - unsigned int v101; // [esp+28h] [ebp-90h] - char v102; // [esp+2Ch] [ebp-8Ch] - char v103; // [esp+2Ch] [ebp-8Ch] - int v104; // [esp+30h] [ebp-88h] - char v105; // [esp+30h] [ebp-88h] - char v106; // [esp+34h] [ebp-84h] - int v107; // [esp+34h] [ebp-84h] - size_t v108; // [esp+34h] [ebp-84h] - char v109; // [esp+38h] [ebp-80h] - unsigned int v110; // [esp+38h] [ebp-80h] - _DWORD *v111; // [esp+3Ch] [ebp-7Ch] - char v112; // [esp+40h] [ebp-78h] - bool v113; // [esp+40h] [ebp-78h] - int *v114; // [esp+44h] [ebp-74h] - unsigned int v115; // [esp+44h] [ebp-74h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - char v118; // [esp+48h] [ebp-70h] - char v119; // [esp+48h] [ebp-70h] - char v120; // [esp+48h] [ebp-70h] - char v121; // [esp+48h] [ebp-70h] - _DWORD *v122; // [esp+4Ch] [ebp-6Ch] - bool v123; // [esp+50h] [ebp-68h] - int v124; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - char lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v132; // [esp+9Ch] [ebp-1Ch] - int v133[5]; // [esp+A0h] [ebp-18h] BYREF - - v122 = a1; - v111 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v114 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v124 = *v114; - if ( !*v114 ) - { - v42 = operator new(0x68u); - v42[1] = 0; - *v42 = &off_5605B0; - v42[2] = 0; - v42[3] = 0; - *((_BYTE *)v42 + 16) = 0; - v42[5] = 0; - v42[6] = 0; - v42[7] = 0; - v42[8] = 0; - *((_WORD *)v42 + 18) = 0; - *((_BYTE *)v42 + 100) = 0; - v94 = (std::locale::_Impl *)v42; - std::__numpunct_cache::_M_cache((int)v42, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v124 = *v114; - } - v115 = 8; - v104 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v104 != 64 ) - { - v7 = 10; - if ( v104 == 8 ) - v7 = 16; - v115 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v82 = lpuexcpta && a1 != 0; - v83 = v81 == -1; - if ( v81 != -1 ) - v82 = 0; - v84 = 0; - if ( !v83 ) - v84 = a1; - v106 = v82; - v122 = v84; - } - else - { - v106 = 0; - } - } - else - { - v106 = a2 == -1; - } - v123 = a4 == -1; - if ( v123 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v78 = v123 && a3 != 0; - v79 = v77 == -1; - if ( v77 != -1 ) - v78 = 0; - v80 = 0; - if ( !v79 ) - v80 = a3; - v102 = v78; - v111 = v80; - } - else - { - v102 = 0; - } - } - else - { - v102 = a4 == -1; - } - if ( v106 != v102 ) - { - if ( v122 && a2 == -1 ) - { - v41 = (char *)v122[2]; - if ( (unsigned int)v41 >= v122[3] ) - { - v85 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v86 = -1; - v87 = v85 == -1; - if ( v85 != -1 ) - v86 = v85; - v88 = 0; - if ( !v87 ) - v88 = v122; - lpuexcptb = v86; - v122 = v88; - } - else - { - lpuexcptb = *v41; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v124 + 16); - v95 = *(_BYTE *)(v124 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v124 + 74) == lpuexcptb || *(_BYTE *)(v124 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v124 + 37) != lpuexcptb) && *(_BYTE *)(v124 + 36) != lpuexcptb ) - { - v9 = v122[2]; - v10 = v122[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v11 = v122[2]; - v10 = v122[3]; - } - else - { - v11 = v9 + 1; - v122[2] = v11; - } - v112 = 0; - if ( v11 >= v10 ) - { - v52 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v53 = 0; - if ( !v52 ) - v53 = v122; - v112 = v52; - v122 = v53; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v89 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); - v90 = v123 && v111 != 0; - v91 = v89 == -1; - if ( v89 != -1 ) - v90 = 0; - v92 = 0; - if ( !v91 ) - v92 = v111; - v116 = v90; - v111 = v92; - } - else - { - v116 = 0; - } - } - else - { - v116 = a4 == -1; - } - if ( v112 == v116 ) - { - v105 = 1; - v107 = 0; - v113 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v122 ) - { - v40 = (char *)v122[2]; - if ( (unsigned int)v40 >= v122[3] ) - { - v62 = -1; - v63 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v64 = v63 == -1; - if ( v63 != -1 ) - v62 = v63; - v65 = 0; - if ( !v64 ) - v65 = v122; - lpuexcptb = v62; - v122 = v65; - } - else - { - lpuexcptb = *v40; - } - } - v8 = *(_BYTE *)(v124 + 16); - } - } - else - { - v95 = 0; - } - v107 = 0; - v113 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v124 + 37) == lpuexcptb || *(_BYTE *)(v124 + 36) == lpuexcptb ) - { -LABEL_111: - v105 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v124 + 78) != lpuexcptb ) - break; - v24 = v115 == 10 || !v113; - if ( !v24 ) - goto LABEL_33; - v113 = v104 == 0 || v115 == 8; - if ( !v113 ) - { - ++v107; - v113 = v24; - goto LABEL_37; - } - v12 = v122; - v115 = 8; - v107 = 0; - v13 = v122[2]; - v14 = v122[3]; - if ( v13 < v14 ) - { -LABEL_38: - v15 = v13 + 1; - v109 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v109 = 0; - if ( v122[2] < v122[3] ) - { -LABEL_39: - v117 = v123 && v111 != 0; - if ( !v117 ) - goto LABEL_40; - goto LABEL_79; - } -LABEL_76: - v25 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v26 = 0; - if ( !v25 ) - v26 = v122; - v109 = v25; - v122 = v26; - v117 = v123 && v111 != 0; - if ( !v117 ) - { -LABEL_40: - v118 = a4 == -1; - goto LABEL_41; - } -LABEL_79: - if ( v111[2] >= v111[3] ) - { - v43 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); - v44 = v117; - v45 = v43 == -1; - if ( v43 != -1 ) - v44 = 0; - v46 = 0; - if ( !v45 ) - v46 = v111; - v118 = v44; - v111 = v46; -LABEL_41: - if ( v109 == v118 ) - goto LABEL_42; - goto LABEL_81; - } - if ( !v109 ) - { -LABEL_42: - v105 = 1; - goto LABEL_43; - } -LABEL_81: - lpuexcptb = -1; - if ( v122 ) - { - v27 = (char *)v122[2]; - if ( (unsigned int)v27 >= v122[3] ) - { - v66 = -1; - v67 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v68 = v67 == -1; - if ( v67 != -1 ) - v66 = v67; - v69 = 0; - if ( !v68 ) - v69 = v122; - lpuexcptb = v66; - v122 = v69; - } - else - { - lpuexcptb = *v27; - } - } - if ( !v113 ) - { - v105 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v124 + 16); - } - if ( !v113 ) - goto LABEL_111; -LABEL_33: - if ( *(_BYTE *)(v124 + 76) != lpuexcptb && *(_BYTE *)(v124 + 77) != lpuexcptb ) - { - v105 = 0; - v113 = 1; - goto LABEL_43; - } - if ( v104 != 0 && v115 != 16 ) - { - v105 = 0; - MaxCount = v115; - Buf = v115; - v113 = 1; - goto LABEL_46; - } - v107 = 0; - v113 = 0; - v115 = 16; -LABEL_37: - v12 = v122; - v13 = v122[2]; - v14 = v122[3]; - if ( v13 < v14 ) - goto LABEL_38; - goto LABEL_75; - } - v95 = 0; - v105 = 1; - lpuexcptb = 0; - v107 = 0; - v113 = 0; -LABEL_43: - v16 = 22; - if ( v115 != 16 ) - v16 = v115; - MaxCount = v16; - Buf = v16; -LABEL_46: - v132 = 0; - Block = v133; - LOBYTE(v133[0]) = 0; - if ( *(_BYTE *)(v124 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = v95 + 0x7FFFFFFF; - v101 = v97 / v115; - v100 = *(_BYTE *)(v124 + 100); - if ( !v100 ) - { - if ( v105 ) - { - v76 = v105; - v103 = 0; - v105 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - v100 = v76; - v110 = 0; - goto LABEL_63; - } - v103 = 0; - v110 = 0; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_110; - v17 = lpuexcptb - 55; - goto LABEL_55; - } - v17 = lpuexcptb - 87; - if ( v101 < v110 ) - { -LABEL_56: - v18 = v122; - v103 = 1; - v19 = v122[2]; - v20 = v122[3]; - if ( v19 < v20 ) - goto LABEL_57; - goto LABEL_90; - } -LABEL_89: - v103 |= v97 - v17 < v115 * v110; - v18 = v122; - v110 = v115 * v110 + v17; - v20 = v122[3]; - v19 = v122[2]; - ++v107; - if ( v19 < v20 ) - { -LABEL_57: - v21 = v19 + 1; - v18[2] = v21; - goto LABEL_58; - } -LABEL_90: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v21 = v122[2]; - v20 = v122[3]; -LABEL_58: - v119 = 0; - if ( v21 >= v20 ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v48 = 0; - if ( !v47 ) - v48 = v122; - v119 = v47; - v122 = v48; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; - v50 = 0; - if ( !v49 ) - v50 = v111; - v51 = v123 && v111 != 0; - v111 = v50; - if ( !v49 ) - v51 = 0; - lpuexcptc = v51; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v119 ) - { - v100 = 1; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v122 ) - { - v28 = (char *)v122[2]; - if ( (unsigned int)v28 >= v122[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v55 = v54 == -1; - v56 = -1; - if ( v54 != -1 ) - v56 = v54; - v57 = 0; - if ( !v55 ) - v57 = v122; - lpuexcptb = v56; - v122 = v57; - } - else - { - lpuexcptb = *v28; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_110; -LABEL_54: - v17 = lpuexcptb - 48; -LABEL_55: - if ( v101 < v110 ) - goto LABEL_56; - goto LABEL_89; - } - if ( v105 ) - { - v110 = 0; - v103 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - v100 = v105; - v105 = 0; - goto LABEL_63; - } - v103 = 0; - v110 = 0; - Bufa = (void *)(v124 + 78); - while ( !*(_BYTE *)(v124 + 16) || *(_BYTE *)(v124 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v124 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_110: - v100 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - v31 = v30 - (_BYTE *)Bufa; - if ( v31 > 15 ) - v31 -= 6; - if ( v101 >= v110 ) - { - v103 |= v97 - v31 < v115 * v110; - ++v107; - v110 = v115 * v110 + v31; - goto LABEL_122; - } - v32 = v122; - v103 = v100; - v34 = v122[3]; - v33 = v122[2]; - if ( v33 < v34 ) - { -LABEL_123: - v35 = v33 + 1; - v32[2] = v35; - goto LABEL_124; - } -LABEL_130: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v35 = v122[2]; - v34 = v122[3]; -LABEL_124: - v120 = 0; - if ( v34 <= v35 ) - { - v70 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v71 = 0; - if ( v70 ) - v71 = v100; - v120 = v71; - v72 = 0; - if ( !v70 ) - v72 = v122; - v122 = v72; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; - v74 = 0; - if ( !v73 ) - v74 = v111; - v75 = v123 && v111 != 0; - v111 = v74; - if ( !v73 ) - v75 = 0; - lpuexcpte = v75; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v120 ) - { - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v122 ) - { - v36 = (char *)v122[2]; - if ( (unsigned int)v36 >= v122[3] ) - { - v58 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v59 = v58 == -1; - v60 = -1; - if ( v58 != -1 ) - v60 = v58; - v61 = 0; - if ( !v59 ) - v61 = v122; - lpuexcptb = v60; - v122 = v61; - } - else - { - lpuexcptb = *v36; - } - } - else - { - lpuexcptb = -1; - } - } - v22 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v132; - if ( v107 ) - { - v121 = v107; - v37 = 15; - if ( Block != v133 ) - v37 = v133[0]; - v108 = v132 + 1; - if ( v132 + 1 > v37 ) - { - std::string::_M_mutate((int)&Block, v132, 0, 0, 1u); - v22 = (int *)Block; - } - v38 = v108; - v107 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v121; - v132 = v38; - *((_BYTE *)Block + v38) = 0; -LABEL_122: - v32 = v122; - v33 = v122[2]; - v34 = v122[3]; - if ( v33 < v34 ) - goto LABEL_123; - goto LABEL_130; - } - v100 = 0; - v105 = *(_BYTE *)(v124 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v29 = 15; - if ( v22 != v133 ) - v29 = v133[0]; - if ( (unsigned int)lpuexcptd + 1 > v29 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v22 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v107; - v132 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v124 + 8), *(_DWORD *)(v124 + 12), (int)&Block) ) - *a6 = 4; - v22 = (int *)Block; - if ( v113 || v132 | v107 ) - goto LABEL_102; -LABEL_66: - *a7 = 0; - *a6 = 4; - } - else - { - if ( !v107 && !v113 ) - goto LABEL_66; -LABEL_102: - if ( v105 ) - goto LABEL_66; - if ( v103 ) - { - *a7 = v95 + 0x7FFFFFFF; - *a6 = 4; - } - else - { - v39 = -v110; - if ( !v95 ) - v39 = v110; - *a7 = v39; - } - } - if ( v100 ) - *a6 |= 2u; - if ( v22 != v133 ) - operator delete(v22); - return v122; -} -// 49AB95: variable 'v93' is possibly undefined -// 53F728: using guessed type signed __int32 std::numpunct::id; -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (0049B0C0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // ebx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - unsigned int v20; // edx - unsigned int v21; // eax - int *v22; // eax - bool v24; // al - bool v25; // zf - _DWORD *v26; // eax - char *v27; // eax - char *v28; // eax - unsigned int v29; // edx - _BYTE *v30; // eax - int v31; // eax - _DWORD *v32; // ecx - unsigned int v33; // eax - unsigned int v34; // edx - unsigned int v35; // eax - char *v36; // eax - size_t v37; // edx - size_t v38; // edx - int v39; // edx - char *v40; // eax - char *v41; // eax - _DWORD *v42; // eax - int v43; // eax - bool v44; // bl - bool v45; // zf - _DWORD *v46; // eax - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // dl - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - bool v55; // zf - char v56; // bl - _DWORD *v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - _DWORD *v61; // eax - char v62; // bl - int v63; // eax - bool v64; // zf - _DWORD *v65; // eax - char v66; // bl - int v67; // eax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // zf - char v71; // al - _DWORD *v72; // eax - bool v73; // zf - _DWORD *v74; // eax - bool v75; // cl - char v76; // bl - int v77; // eax - bool v78; // dl - bool v79; // zf - _DWORD *v80; // eax - int v81; // eax - bool v82; // bl - bool v83; // zf - _DWORD *v84; // eax - int v85; // eax - char v86; // dl - bool v87; // zf - _DWORD *v88; // eax - int v89; // eax - bool v90; // dl - bool v91; // zf - _DWORD *v92; // eax - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+18h] [ebp-A0h] - size_t MaxCount; // [esp+1Ch] [ebp-9Ch] - int Buf; // [esp+20h] [ebp-98h] - void *Bufa; // [esp+20h] [ebp-98h] - bool v98; // [esp+26h] [ebp-92h] - char v99; // [esp+27h] [ebp-91h] - unsigned int v100; // [esp+28h] [ebp-90h] - char v101; // [esp+2Ch] [ebp-8Ch] - char v102; // [esp+2Ch] [ebp-8Ch] - int v103; // [esp+30h] [ebp-88h] - char v104; // [esp+30h] [ebp-88h] - char v105; // [esp+34h] [ebp-84h] - int v106; // [esp+34h] [ebp-84h] - size_t v107; // [esp+34h] [ebp-84h] - char v108; // [esp+38h] [ebp-80h] - unsigned int v109; // [esp+38h] [ebp-80h] - _DWORD *v110; // [esp+3Ch] [ebp-7Ch] - char v111; // [esp+40h] [ebp-78h] - bool v112; // [esp+40h] [ebp-78h] - int *v113; // [esp+44h] [ebp-74h] - unsigned int v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - bool v116; // [esp+48h] [ebp-70h] - char v117; // [esp+48h] [ebp-70h] - char v118; // [esp+48h] [ebp-70h] - char v119; // [esp+48h] [ebp-70h] - char v120; // [esp+48h] [ebp-70h] - _DWORD *v121; // [esp+4Ch] [ebp-6Ch] - bool v122; // [esp+50h] [ebp-68h] - int v123; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - char lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v131; // [esp+9Ch] [ebp-1Ch] - int v132[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v110 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v113 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v123 = *v113; - if ( !*v113 ) - { - v42 = operator new(0x68u); - v42[1] = 0; - *v42 = &off_5605B0; - v42[2] = 0; - v42[3] = 0; - *((_BYTE *)v42 + 16) = 0; - v42[5] = 0; - v42[6] = 0; - v42[7] = 0; - v42[8] = 0; - *((_WORD *)v42 + 18) = 0; - *((_BYTE *)v42 + 100) = 0; - v94 = (std::locale::_Impl *)v42; - std::__numpunct_cache::_M_cache((int)v42, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v123 = *v113; - } - v114 = 8; - v103 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v103 != 64 ) - { - v7 = 10; - if ( v103 == 8 ) - v7 = 16; - v114 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v82 = lpuexcpta && a1 != 0; - v83 = v81 == -1; - if ( v81 != -1 ) - v82 = 0; - v84 = 0; - if ( !v83 ) - v84 = a1; - v105 = v82; - v121 = v84; - } - else - { - v105 = 0; - } - } - else - { - v105 = a2 == -1; - } - v122 = a4 == -1; - if ( v122 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v78 = v122 && a3 != 0; - v79 = v77 == -1; - if ( v77 != -1 ) - v78 = 0; - v80 = 0; - if ( !v79 ) - v80 = a3; - v101 = v78; - v110 = v80; - } - else - { - v101 = 0; - } - } - else - { - v101 = a4 == -1; - } - if ( v105 != v101 ) - { - if ( v121 && a2 == -1 ) - { - v41 = (char *)v121[2]; - if ( (unsigned int)v41 >= v121[3] ) - { - v85 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v86 = -1; - v87 = v85 == -1; - if ( v85 != -1 ) - v86 = v85; - v88 = 0; - if ( !v87 ) - v88 = v121; - lpuexcptb = v86; - v121 = v88; - } - else - { - lpuexcptb = *v41; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v123 + 16); - v98 = *(_BYTE *)(v123 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v123 + 74) == lpuexcptb || *(_BYTE *)(v123 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v123 + 37) != lpuexcptb) && *(_BYTE *)(v123 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = v121[2]; - v10 = v121[3]; - } - else - { - v11 = v9 + 1; - v121[2] = v11; - } - v111 = 0; - if ( v11 >= v10 ) - { - v52 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v53 = 0; - if ( !v52 ) - v53 = v121; - v111 = v52; - v121 = v53; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v89 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); - v90 = v122 && v110 != 0; - v91 = v89 == -1; - if ( v89 != -1 ) - v90 = 0; - v92 = 0; - if ( !v91 ) - v92 = v110; - v115 = v90; - v110 = v92; - } - else - { - v115 = 0; - } - } - else - { - v115 = a4 == -1; - } - if ( v111 == v115 ) - { - v104 = 1; - v106 = 0; - v112 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v121 ) - { - v40 = (char *)v121[2]; - if ( (unsigned int)v40 >= v121[3] ) - { - v62 = -1; - v63 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v64 = v63 == -1; - if ( v63 != -1 ) - v62 = v63; - v65 = 0; - if ( !v64 ) - v65 = v121; - lpuexcptb = v62; - v121 = v65; - } - else - { - lpuexcptb = *v40; - } - } - v8 = *(_BYTE *)(v123 + 16); - } - } - else - { - v98 = 0; - } - v106 = 0; - v112 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v123 + 37) == lpuexcptb || *(_BYTE *)(v123 + 36) == lpuexcptb ) - { -LABEL_111: - v104 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v123 + 78) != lpuexcptb ) - break; - v24 = v114 == 10 || !v112; - if ( !v24 ) - goto LABEL_33; - v112 = v103 == 0 || v114 == 8; - if ( !v112 ) - { - ++v106; - v112 = v24; - goto LABEL_37; - } - v12 = v121; - v114 = 8; - v106 = 0; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 < v14 ) - { -LABEL_38: - v15 = v13 + 1; - v108 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v108 = 0; - if ( v121[2] < v121[3] ) - { -LABEL_39: - v116 = v122 && v110 != 0; - if ( !v116 ) - goto LABEL_40; - goto LABEL_79; - } -LABEL_76: - v25 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v26 = 0; - if ( !v25 ) - v26 = v121; - v108 = v25; - v121 = v26; - v116 = v122 && v110 != 0; - if ( !v116 ) - { -LABEL_40: - v117 = a4 == -1; - goto LABEL_41; - } -LABEL_79: - if ( v110[2] >= v110[3] ) - { - v43 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); - v44 = v116; - v45 = v43 == -1; - if ( v43 != -1 ) - v44 = 0; - v46 = 0; - if ( !v45 ) - v46 = v110; - v117 = v44; - v110 = v46; -LABEL_41: - if ( v108 == v117 ) - goto LABEL_42; - goto LABEL_81; - } - if ( !v108 ) - { -LABEL_42: - v104 = 1; - goto LABEL_43; - } -LABEL_81: - lpuexcptb = -1; - if ( v121 ) - { - v27 = (char *)v121[2]; - if ( (unsigned int)v27 >= v121[3] ) - { - v66 = -1; - v67 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v68 = v67 == -1; - if ( v67 != -1 ) - v66 = v67; - v69 = 0; - if ( !v68 ) - v69 = v121; - lpuexcptb = v66; - v121 = v69; - } - else - { - lpuexcptb = *v27; - } - } - if ( !v112 ) - { - v104 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v123 + 16); - } - if ( !v112 ) - goto LABEL_111; -LABEL_33: - if ( *(_BYTE *)(v123 + 76) != lpuexcptb && *(_BYTE *)(v123 + 77) != lpuexcptb ) - { - v104 = 0; - v112 = 1; - goto LABEL_43; - } - if ( v103 != 0 && v114 != 16 ) - { - v104 = 0; - MaxCount = v114; - Buf = v114; - v112 = 1; - goto LABEL_46; - } - v106 = 0; - v112 = 0; - v114 = 16; -LABEL_37: - v12 = v121; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 < v14 ) - goto LABEL_38; - goto LABEL_75; - } - v98 = 0; - v104 = 1; - lpuexcptb = 0; - v106 = 0; - v112 = 0; -LABEL_43: - v16 = 22; - if ( v114 != 16 ) - v16 = v114; - MaxCount = v16; - Buf = v16; -LABEL_46: - v131 = 0; - Block = v132; - LOBYTE(v132[0]) = 0; - if ( *(_BYTE *)(v123 + 16) ) - std::string::reserve(&Block, 0x20u); - v100 = 0xFFFFFFFF / v114; - v99 = *(_BYTE *)(v123 + 100); - if ( !v99 ) - { - if ( v104 ) - { - v76 = v104; - v102 = 0; - v104 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - v99 = v76; - v109 = 0; - goto LABEL_63; - } - v102 = 0; - v109 = 0; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_110; - v17 = lpuexcptb - 55; - goto LABEL_55; - } - v17 = lpuexcptb - 87; - if ( v100 < v109 ) - { -LABEL_56: - v18 = v121; - v102 = 1; - v19 = v121[2]; - v20 = v121[3]; - if ( v19 < v20 ) - goto LABEL_57; - goto LABEL_90; - } -LABEL_89: - v102 |= ~v17 < v114 * v109; - v18 = v121; - v109 = v114 * v109 + v17; - v20 = v121[3]; - v19 = v121[2]; - ++v106; - if ( v19 < v20 ) - { -LABEL_57: - v21 = v19 + 1; - v18[2] = v21; - goto LABEL_58; - } -LABEL_90: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v21 = v121[2]; - v20 = v121[3]; -LABEL_58: - v118 = 0; - if ( v21 >= v20 ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v48 = 0; - if ( !v47 ) - v48 = v121; - v118 = v47; - v121 = v48; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; - v50 = 0; - if ( !v49 ) - v50 = v110; - v51 = v122 && v110 != 0; - v110 = v50; - if ( !v49 ) - v51 = 0; - lpuexcptc = v51; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v118 ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v121 ) - { - v28 = (char *)v121[2]; - if ( (unsigned int)v28 >= v121[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v55 = v54 == -1; - v56 = -1; - if ( v54 != -1 ) - v56 = v54; - v57 = 0; - if ( !v55 ) - v57 = v121; - lpuexcptb = v56; - v121 = v57; - } - else - { - lpuexcptb = *v28; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_110; -LABEL_54: - v17 = lpuexcptb - 48; -LABEL_55: - if ( v100 < v109 ) - goto LABEL_56; - goto LABEL_89; - } - if ( v104 ) - { - v109 = 0; - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - v99 = v104; - v104 = 0; - goto LABEL_63; - } - v102 = 0; - v109 = 0; - Bufa = (void *)(v123 + 78); - while ( !*(_BYTE *)(v123 + 16) || *(_BYTE *)(v123 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v123 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_110: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - v31 = v30 - (_BYTE *)Bufa; - if ( v31 > 15 ) - v31 -= 6; - if ( v100 >= v109 ) - { - v102 |= ~v31 < v114 * v109; - ++v106; - v109 = v114 * v109 + v31; - goto LABEL_122; - } - v32 = v121; - v102 = v99; - v34 = v121[3]; - v33 = v121[2]; - if ( v33 < v34 ) - { -LABEL_123: - v35 = v33 + 1; - v32[2] = v35; - goto LABEL_124; - } -LABEL_130: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v35 = v121[2]; - v34 = v121[3]; -LABEL_124: - v119 = 0; - if ( v34 <= v35 ) - { - v70 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v71 = 0; - if ( v70 ) - v71 = v99; - v119 = v71; - v72 = 0; - if ( !v70 ) - v72 = v121; - v121 = v72; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; - v74 = 0; - if ( !v73 ) - v74 = v110; - v75 = v122 && v110 != 0; - v110 = v74; - if ( !v73 ) - v75 = 0; - lpuexcpte = v75; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v119 ) - { - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v121 ) - { - v36 = (char *)v121[2]; - if ( (unsigned int)v36 >= v121[3] ) - { - v58 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v59 = v58 == -1; - v60 = -1; - if ( v58 != -1 ) - v60 = v58; - v61 = 0; - if ( !v59 ) - v61 = v121; - lpuexcptb = v60; - v121 = v61; - } - else - { - lpuexcptb = *v36; - } - } - else - { - lpuexcptb = -1; - } - } - v22 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v131; - if ( v106 ) - { - v120 = v106; - v37 = 15; - if ( Block != v132 ) - v37 = v132[0]; - v107 = v131 + 1; - if ( v131 + 1 > v37 ) - { - std::string::_M_mutate((int)&Block, v131, 0, 0, 1u); - v22 = (int *)Block; - } - v38 = v107; - v106 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v120; - v131 = v38; - *((_BYTE *)Block + v38) = 0; -LABEL_122: - v32 = v121; - v33 = v121[2]; - v34 = v121[3]; - if ( v33 < v34 ) - goto LABEL_123; - goto LABEL_130; - } - v99 = 0; - v104 = *(_BYTE *)(v123 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v29 = 15; - if ( v22 != v132 ) - v29 = v132[0]; - if ( (unsigned int)lpuexcptd + 1 > v29 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v22 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v106; - v131 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v123 + 8), *(_DWORD *)(v123 + 12), (int)&Block) ) - *a6 = 4; - v22 = (int *)Block; - if ( v112 || v131 | v106 ) - goto LABEL_102; -LABEL_66: - *a7 = 0; - *a6 = 4; - } - else - { - if ( !v106 && !v112 ) - goto LABEL_66; -LABEL_102: - if ( v104 ) - goto LABEL_66; - if ( v102 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v39 = -v109; - if ( !v98 ) - v39 = v109; - *a7 = v39; - } - } - if ( v99 ) - *a6 |= 2u; - if ( v22 != v132 ) - operator delete(v22); - return v121; -} -// 49BBC7: variable 'v93' is possibly undefined -// 53F728: using guessed type signed __int32 std::numpunct::id; -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (0049C0F0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _WORD *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // ebx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - unsigned int v20; // edx - unsigned int v21; // eax - int *v22; // eax - bool v24; // al - bool v25; // zf - _DWORD *v26; // eax - char *v27; // eax - char *v28; // eax - unsigned int v29; // edx - _BYTE *v30; // eax - int v31; // eax - int v32; // ebx - _DWORD *v33; // ecx - unsigned int v34; // eax - unsigned int v35; // edx - unsigned int v36; // eax - char *v37; // eax - size_t v38; // ebx - unsigned int v39; // edx - int v40; // edx - char *v41; // eax - char *v42; // eax - _DWORD *v43; // eax - int v44; // eax - bool v45; // bl - bool v46; // zf - _DWORD *v47; // eax - bool v48; // zf - _DWORD *v49; // eax - bool v50; // zf - _DWORD *v51; // eax - bool v52; // cl - bool v53; // zf - _DWORD *v54; // eax - int v55; // eax - bool v56; // zf - char v57; // dl - _DWORD *v58; // eax - int v59; // eax - bool v60; // zf - char v61; // dl - _DWORD *v62; // eax - int v63; // eax - char v64; // dl - bool v65; // zf - _DWORD *v66; // eax - char v67; // bl - int v68; // eax - bool v69; // zf - _DWORD *v70; // eax - bool v71; // zf - char v72; // al - _DWORD *v73; // eax - bool v74; // zf - _DWORD *v75; // eax - bool v76; // dl - char v77; // bl - int v78; // eax - bool v79; // bl - bool v80; // zf - _DWORD *v81; // eax - int v82; // eax - bool v83; // dl - bool v84; // zf - _DWORD *v85; // eax - char v86; // bl - int v87; // eax - char v88; // dl - bool v89; // zf - _DWORD *v90; // eax - int v91; // eax - bool v92; // bl - bool v93; // zf - _DWORD *v94; // eax - unsigned int v95; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v96; // [esp+18h] [ebp-A0h] - size_t MaxCount; // [esp+1Ch] [ebp-9Ch] - int Buf; // [esp+20h] [ebp-98h] - void *Bufa; // [esp+20h] [ebp-98h] - bool v100; // [esp+26h] [ebp-92h] - char v101; // [esp+27h] [ebp-91h] - int v102; // [esp+28h] [ebp-90h] - char v103; // [esp+2Ch] [ebp-8Ch] - char v104; // [esp+2Ch] [ebp-8Ch] - int v105; // [esp+30h] [ebp-88h] - char v106; // [esp+30h] [ebp-88h] - char v107; // [esp+34h] [ebp-84h] - int v108; // [esp+34h] [ebp-84h] - char v109; // [esp+38h] [ebp-80h] - unsigned __int16 v110; // [esp+38h] [ebp-80h] - _DWORD *v111; // [esp+3Ch] [ebp-7Ch] - char v112; // [esp+40h] [ebp-78h] - bool v113; // [esp+40h] [ebp-78h] - int *v114; // [esp+44h] [ebp-74h] - int v115; // [esp+44h] [ebp-74h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - char v118; // [esp+48h] [ebp-70h] - char v119; // [esp+48h] [ebp-70h] - char v120; // [esp+48h] [ebp-70h] - char v121; // [esp+48h] [ebp-70h] - _DWORD *v122; // [esp+4Ch] [ebp-6Ch] - bool v123; // [esp+50h] [ebp-68h] - int v124; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - char lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v132; // [esp+9Ch] [ebp-1Ch] - int v133[5]; // [esp+A0h] [ebp-18h] BYREF - - v122 = a1; - v111 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v114 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v124 = *v114; - if ( !*v114 ) - { - v43 = operator new(0x68u); - v43[1] = 0; - *v43 = &off_5605B0; - v43[2] = 0; - v43[3] = 0; - *((_BYTE *)v43 + 16) = 0; - v43[5] = 0; - v43[6] = 0; - v43[7] = 0; - v43[8] = 0; - *((_WORD *)v43 + 18) = 0; - *((_BYTE *)v43 + 100) = 0; - v96 = (std::locale::_Impl *)v43; - std::__numpunct_cache::_M_cache((int)v43, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, lpuexcpt, v95); - v124 = *v114; - } - v115 = 8; - v105 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v105 != 64 ) - { - v7 = 10; - if ( v105 == 8 ) - v7 = 16; - v115 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v82 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v83 = lpuexcpta && a1 != 0; - v84 = v82 == -1; - if ( v82 != -1 ) - v83 = 0; - v85 = 0; - if ( !v84 ) - v85 = a1; - v107 = v83; - v122 = v85; - } - else - { - v107 = 0; - } - } - else - { - v107 = a2 == -1; - } - v123 = a4 == -1; - if ( v123 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v78 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v79 = v123 && a3 != 0; - v80 = v78 == -1; - if ( v78 != -1 ) - v79 = 0; - v81 = 0; - if ( !v80 ) - v81 = a3; - v103 = v79; - v111 = v81; - } - else - { - v103 = 0; - } - } - else - { - v103 = a4 == -1; - } - if ( v107 != v103 ) - { - if ( v122 && a2 == -1 ) - { - v42 = (char *)v122[2]; - if ( (unsigned int)v42 >= v122[3] ) - { - v87 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v88 = -1; - v89 = v87 == -1; - if ( v87 != -1 ) - v88 = v87; - v90 = 0; - if ( !v89 ) - v90 = v122; - lpuexcptb = v88; - v122 = v90; - } - else - { - lpuexcptb = *v42; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v124 + 16); - v100 = *(_BYTE *)(v124 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v124 + 74) == lpuexcptb || *(_BYTE *)(v124 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v124 + 37) != lpuexcptb) && *(_BYTE *)(v124 + 36) != lpuexcptb ) - { - v9 = v122[2]; - v10 = v122[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v11 = v122[2]; - v10 = v122[3]; - } - else - { - v11 = v9 + 1; - v122[2] = v11; - } - v112 = 0; - if ( v11 >= v10 ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v54 = 0; - if ( !v53 ) - v54 = v122; - v112 = v53; - v122 = v54; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v91 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); - v92 = v123 && v111 != 0; - v93 = v91 == -1; - if ( v91 != -1 ) - v92 = 0; - v94 = 0; - if ( !v93 ) - v94 = v111; - v116 = v92; - v111 = v94; - } - else - { - v116 = 0; - } - } - else - { - v116 = a4 == -1; - } - if ( v112 == v116 ) - { - v106 = 1; - v108 = 0; - v113 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v122 ) - { - v41 = (char *)v122[2]; - if ( (unsigned int)v41 >= v122[3] ) - { - v63 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v64 = -1; - v65 = v63 == -1; - if ( v63 != -1 ) - v64 = v63; - v66 = 0; - if ( !v65 ) - v66 = v122; - lpuexcptb = v64; - v122 = v66; - } - else - { - lpuexcptb = *v41; - } - } - v8 = *(_BYTE *)(v124 + 16); - } - } - else - { - v100 = 0; - } - v108 = 0; - v113 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v124 + 37) == lpuexcptb || *(_BYTE *)(v124 + 36) == lpuexcptb ) - { -LABEL_111: - v106 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v124 + 78) != lpuexcptb ) - break; - v24 = v115 == 10 || !v113; - if ( !v24 ) - goto LABEL_33; - v113 = v105 == 0 || v115 == 8; - if ( !v113 ) - { - ++v108; - v113 = v24; - goto LABEL_37; - } - v12 = v122; - v115 = 8; - v108 = 0; - v13 = v122[2]; - v14 = v122[3]; - if ( v13 < v14 ) - { -LABEL_38: - v15 = v13 + 1; - v109 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v109 = 0; - if ( v122[2] < v122[3] ) - { -LABEL_39: - v117 = v123 && v111 != 0; - if ( !v117 ) - goto LABEL_40; - goto LABEL_79; - } -LABEL_76: - v25 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v26 = 0; - if ( !v25 ) - v26 = v122; - v109 = v25; - v122 = v26; - v117 = v123 && v111 != 0; - if ( !v117 ) - { -LABEL_40: - v118 = a4 == -1; - goto LABEL_41; - } -LABEL_79: - if ( v111[2] >= v111[3] ) - { - v44 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); - v45 = v117; - v46 = v44 == -1; - if ( v44 != -1 ) - v45 = 0; - v47 = 0; - if ( !v46 ) - v47 = v111; - v118 = v45; - v111 = v47; -LABEL_41: - if ( v109 == v118 ) - goto LABEL_42; - goto LABEL_81; - } - if ( !v109 ) - { -LABEL_42: - v106 = 1; - goto LABEL_43; - } -LABEL_81: - lpuexcptb = -1; - if ( v122 ) - { - v27 = (char *)v122[2]; - if ( (unsigned int)v27 >= v122[3] ) - { - v67 = -1; - v68 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v69 = v68 == -1; - if ( v68 != -1 ) - v67 = v68; - v70 = 0; - if ( !v69 ) - v70 = v122; - lpuexcptb = v67; - v122 = v70; - } - else - { - lpuexcptb = *v27; - } - } - if ( !v113 ) - { - v106 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v124 + 16); - } - if ( !v113 ) - goto LABEL_111; -LABEL_33: - if ( *(_BYTE *)(v124 + 76) != lpuexcptb && *(_BYTE *)(v124 + 77) != lpuexcptb ) - { - v106 = 0; - v113 = 1; - goto LABEL_43; - } - if ( v105 != 0 && v115 != 16 ) - { - v106 = 0; - MaxCount = v115; - Buf = v115; - v113 = 1; - goto LABEL_46; - } - v108 = 0; - v113 = 0; - v115 = 16; -LABEL_37: - v12 = v122; - v13 = v122[2]; - v14 = v122[3]; - if ( v13 < v14 ) - goto LABEL_38; - goto LABEL_75; - } - v100 = 0; - v106 = 1; - lpuexcptb = 0; - v108 = 0; - v113 = 0; -LABEL_43: - v16 = 22; - if ( v115 != 16 ) - v16 = v115; - MaxCount = v16; - Buf = v16; -LABEL_46: - v132 = 0; - Block = v133; - LOBYTE(v133[0]) = 0; - if ( *(_BYTE *)(v124 + 16) ) - std::string::reserve(&Block, 0x20u); - v102 = 0xFFFF / v115; - v101 = *(_BYTE *)(v124 + 100); - if ( !v101 ) - { - if ( v106 ) - { - v77 = v106; - v104 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - v101 = v77; - v110 = 0; - goto LABEL_63; - } - v104 = 0; - v110 = 0; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_110; - v17 = lpuexcptb - 55; - goto LABEL_55; - } - v17 = lpuexcptb - 87; - if ( (unsigned __int16)v102 < v110 ) - { -LABEL_56: - v18 = v122; - v104 = 1; - v19 = v122[2]; - v20 = v122[3]; - if ( v19 < v20 ) - goto LABEL_57; - goto LABEL_90; - } -LABEL_89: - v104 |= (unsigned __int16)(v115 * v110) > 0xFFFF - v17; - v18 = v122; - v110 = v115 * v110 + v17; - v20 = v122[3]; - v19 = v122[2]; - ++v108; - if ( v19 < v20 ) - { -LABEL_57: - v21 = v19 + 1; - v18[2] = v21; - goto LABEL_58; - } -LABEL_90: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v21 = v122[2]; - v20 = v122[3]; -LABEL_58: - v119 = 0; - if ( v21 >= v20 ) - { - v48 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v49 = 0; - if ( !v48 ) - v49 = v122; - v119 = v48; - v122 = v49; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v50 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; - v51 = 0; - if ( !v50 ) - v51 = v111; - v52 = v123 && v111 != 0; - v111 = v51; - if ( !v50 ) - v52 = 0; - lpuexcptc = v52; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v119 ) - { - v101 = 1; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v122 ) - { - v28 = (char *)v122[2]; - if ( (unsigned int)v28 >= v122[3] ) - { - v55 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v56 = v55 == -1; - v57 = -1; - if ( v55 != -1 ) - v57 = v55; - v58 = 0; - if ( !v56 ) - v58 = v122; - lpuexcptb = v57; - v122 = v58; - } - else - { - lpuexcptb = *v28; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_110; -LABEL_54: - v17 = lpuexcptb - 48; -LABEL_55: - if ( (unsigned __int16)v102 < v110 ) - goto LABEL_56; - goto LABEL_89; - } - if ( v106 ) - { - v86 = v106; - v104 = 0; - v106 = 0; - v101 = v86; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - v110 = 0; - goto LABEL_63; - } - v104 = 0; - Bufa = (void *)(v124 + 78); - v110 = 0; - while ( !*(_BYTE *)(v124 + 16) || *(_BYTE *)(v124 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v124 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_110: - v101 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - v31 = v30 - (_BYTE *)Bufa; - if ( v31 > 15 ) - v31 -= 6; - if ( (unsigned __int16)v102 >= v110 ) - { - v32 = (unsigned __int16)(v115 * v110); - v104 |= v32 > 0xFFFF - v31; - ++v108; - v110 = v32 + v31; - goto LABEL_122; - } - v33 = v122; - v104 = v101; - v35 = v122[3]; - v34 = v122[2]; - if ( v34 < v35 ) - { -LABEL_123: - v36 = v34 + 1; - v33[2] = v36; - goto LABEL_124; - } -LABEL_130: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v36 = v122[2]; - v35 = v122[3]; -LABEL_124: - v120 = 0; - if ( v35 <= v36 ) - { - v71 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v72 = 0; - if ( v71 ) - v72 = v101; - v120 = v72; - v73 = 0; - if ( !v71 ) - v73 = v122; - v122 = v73; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v74 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; - v75 = 0; - if ( !v74 ) - v75 = v111; - v76 = v123 && v111 != 0; - v111 = v75; - if ( !v74 ) - v76 = 0; - lpuexcpte = v76; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v120 ) - { - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v122 ) - { - v37 = (char *)v122[2]; - if ( (unsigned int)v37 >= v122[3] ) - { - v59 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v60 = v59 == -1; - v61 = -1; - if ( v59 != -1 ) - v61 = v59; - v62 = 0; - if ( !v60 ) - v62 = v122; - lpuexcptb = v61; - v122 = v62; - } - else - { - lpuexcptb = *v37; - } - } - else - { - lpuexcptb = -1; - } - } - v22 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v132; - if ( v108 ) - { - v121 = v108; - v39 = 15; - if ( Block != v133 ) - v39 = v133[0]; - v38 = v132 + 1; - if ( v132 + 1 > v39 ) - { - std::string::_M_mutate((int)&Block, v132, 0, 0, 1u); - v22 = (int *)Block; - } - v108 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v121; - v132 = v38; - *((_BYTE *)Block + v38) = 0; -LABEL_122: - v33 = v122; - v34 = v122[2]; - v35 = v122[3]; - if ( v34 < v35 ) - goto LABEL_123; - goto LABEL_130; - } - v101 = 0; - v106 = *(_BYTE *)(v124 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v29 = 15; - if ( v22 != v133 ) - v29 = v133[0]; - if ( (unsigned int)lpuexcptd + 1 > v29 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v22 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v108; - v132 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v124 + 8), *(_DWORD *)(v124 + 12), (int)&Block) ) - *a6 = 4; - v22 = (int *)Block; - if ( v113 || v132 | v108 ) - goto LABEL_102; -LABEL_66: - *a7 = 0; - *a6 = 4; - } - else - { - if ( !v108 && !v113 ) - goto LABEL_66; -LABEL_102: - if ( v106 ) - goto LABEL_66; - if ( v104 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v40 = -v110; - if ( !v100 ) - LOWORD(v40) = v110; - *a7 = v40; - } - } - if ( v101 ) - *a6 |= 2u; - if ( v22 != v133 ) - operator delete(v22); - return v122; -} -// 49CC05: variable 'v95' is possibly undefined -// 53F728: using guessed type signed __int32 std::numpunct::id; -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (0049D130) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // edi - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - unsigned __int64 v17; // kr00_8 - int v18; // esi - _DWORD *v19; // ecx - unsigned int v20; // eax - unsigned int v21; // edx - unsigned int v22; // eax - int *v23; // eax - bool v25; // al - bool v26; // zf - _DWORD *v27; // eax - char *v28; // eax - char *v29; // eax - unsigned int v30; // edx - int v31; // ecx - unsigned int v32; // ebx - _BYTE *v33; // eax - int v34; // esi - _DWORD *v35; // esi - unsigned int v36; // eax - unsigned int v37; // edx - unsigned int v38; // eax - char *v39; // eax - size_t v40; // edi - unsigned int v41; // edx - char *v42; // eax - char *v43; // eax - _DWORD *v44; // eax - int v45; // eax - bool v46; // dl - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // zf - _DWORD *v52; // eax - bool v53; // bl - bool v54; // zf - _DWORD *v55; // eax - int v56; // eax - bool v57; // zf - char v58; // dl - _DWORD *v59; // eax - int v60; // eax - bool v61; // zf - char v62; // dl - _DWORD *v63; // eax - int v64; // eax - char v65; // dl - bool v66; // zf - _DWORD *v67; // eax - int v68; // eax - char v69; // dl - bool v70; // zf - _DWORD *v71; // eax - bool v72; // zf - char v73; // al - _DWORD *v74; // eax - bool v75; // zf - _DWORD *v76; // eax - bool v77; // dl - char v78; // cl - int v79; // eax - bool v80; // si - bool v81; // zf - _DWORD *v82; // eax - int v83; // eax - bool v84; // dl - bool v85; // zf - _DWORD *v86; // eax - int v87; // eax - bool v88; // zf - char v89; // si - _DWORD *v90; // eax - int v91; // eax - bool v92; // bl - bool v93; // zf - _DWORD *v94; // eax - unsigned int v95; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v96; // [esp+14h] [ebp-C4h] - unsigned __int64 v97; // [esp+18h] [ebp-C0h] - size_t MaxCount; // [esp+20h] [ebp-B8h] - int Buf; // [esp+24h] [ebp-B4h] - void *Bufa; // [esp+24h] [ebp-B4h] - bool v101; // [esp+2Ah] [ebp-AEh] - char v102; // [esp+2Bh] [ebp-ADh] - char v103; // [esp+34h] [ebp-A4h] - char v104; // [esp+34h] [ebp-A4h] - int v105; // [esp+38h] [ebp-A0h] - char v106; // [esp+38h] [ebp-A0h] - char v107; // [esp+3Ch] [ebp-9Ch] - int v108; // [esp+3Ch] [ebp-9Ch] - char v109; // [esp+40h] [ebp-98h] - char v110; // [esp+40h] [ebp-98h] - char v111; // [esp+40h] [ebp-98h] - char v112; // [esp+40h] [ebp-98h] - _DWORD *v113; // [esp+44h] [ebp-94h] - int *v114; // [esp+48h] [ebp-90h] - int v115; // [esp+48h] [ebp-90h] - char v116; // [esp+50h] [ebp-88h] - char v117; // [esp+50h] [ebp-88h] - unsigned __int64 v118; // [esp+50h] [ebp-88h] - char v119; // [esp+58h] [ebp-80h] - bool v120; // [esp+58h] [ebp-80h] - _DWORD *v121; // [esp+5Ch] [ebp-7Ch] - bool v122; // [esp+60h] [ebp-78h] - int v123; // [esp+64h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-70h] - bool lpuexcpta; // [esp+68h] [ebp-70h] - char lpuexcptb; // [esp+68h] [ebp-70h] - char lpuexcptc; // [esp+68h] [ebp-70h] - struct _Unwind_Exception *lpuexcptd; // [esp+68h] [ebp-70h] - char lpuexcpte; // [esp+68h] [ebp-70h] - void *Block; // [esp+A8h] [ebp-30h] BYREF - size_t v131; // [esp+ACh] [ebp-2Ch] - int v132[10]; // [esp+B0h] [ebp-28h] BYREF - - v121 = a1; - v113 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v114 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v123 = *v114; - if ( !*v114 ) - { - v44 = operator new(0x68u); - v44[1] = 0; - *v44 = &off_5605B0; - v44[2] = 0; - v44[3] = 0; - *((_BYTE *)v44 + 16) = 0; - v44[5] = 0; - v44[6] = 0; - v44[7] = 0; - v44[8] = 0; - *((_WORD *)v44 + 18) = 0; - *((_BYTE *)v44 + 100) = 0; - v96 = (std::locale::_Impl *)v44; - std::__numpunct_cache::_M_cache((int)v44, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, lpuexcpt, v95); - v123 = *v114; - } - v115 = 8; - v105 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v105 != 64 ) - { - v7 = 10; - if ( v105 == 8 ) - v7 = 16; - v115 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v83 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v84 = lpuexcpta && a1 != 0; - v85 = v83 == -1; - if ( v83 != -1 ) - v84 = 0; - v86 = 0; - if ( !v85 ) - v86 = a1; - v107 = v84; - v121 = v86; - } - else - { - v107 = 0; - } - } - else - { - v107 = a2 == -1; - } - v122 = a4 == -1; - if ( v122 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v79 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v80 = v122 && a3 != 0; - v81 = v79 == -1; - if ( v79 != -1 ) - v80 = 0; - v103 = v80; - v82 = 0; - if ( !v81 ) - v82 = a3; - v113 = v82; - } - else - { - v103 = 0; - } - } - else - { - v103 = a4 == -1; - } - if ( v107 != v103 ) - { - if ( v121 && a2 == -1 ) - { - v43 = (char *)v121[2]; - if ( (unsigned int)v43 >= v121[3] ) - { - v87 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v88 = v87 == -1; - v89 = -1; - if ( v87 != -1 ) - v89 = v87; - lpuexcptb = v89; - v90 = 0; - if ( !v88 ) - v90 = v121; - v121 = v90; - } - else - { - lpuexcptb = *v43; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v123 + 16); - v101 = *(_BYTE *)(v123 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v123 + 74) == lpuexcptb || *(_BYTE *)(v123 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v123 + 37) != lpuexcptb) && *(_BYTE *)(v123 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = v121[2]; - v10 = v121[3]; - } - else - { - v11 = v9 + 1; - v121[2] = v11; - } - v119 = 0; - if ( v11 >= v10 ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v55 = 0; - if ( !v54 ) - v55 = v121; - v119 = v54; - v121 = v55; - } - if ( v122 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v91 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); - v92 = v122 && v113 != 0; - v93 = v91 == -1; - if ( v91 != -1 ) - v92 = 0; - v94 = 0; - if ( !v93 ) - v94 = v113; - v116 = v92; - v113 = v94; - } - else - { - v116 = 0; - } - } - else - { - v116 = a4 == -1; - } - if ( v119 == v116 ) - { - v106 = 1; - v108 = 0; - v120 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v121 ) - { - v42 = (char *)v121[2]; - if ( (unsigned int)v42 >= v121[3] ) - { - v64 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v65 = -1; - v66 = v64 == -1; - if ( v64 != -1 ) - v65 = v64; - v67 = 0; - if ( !v66 ) - v67 = v121; - lpuexcptb = v65; - v121 = v67; - } - else - { - lpuexcptb = *v42; - } - } - v8 = *(_BYTE *)(v123 + 16); - } - } - else - { - v101 = 0; - } - v108 = 0; - v120 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v123 + 37) == lpuexcptb || *(_BYTE *)(v123 + 36) == lpuexcptb ) - { -LABEL_115: - v106 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v123 + 78) != lpuexcptb ) - break; - v25 = v115 == 10 || !v120; - if ( !v25 ) - goto LABEL_33; - v120 = v105 == 0 || v115 == 8; - if ( !v120 ) - { - ++v108; - v120 = v25; - goto LABEL_37; - } - v108 = 0; - v12 = v121; - v115 = 8; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 >= v14 ) - { -LABEL_77: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v109 = 0; - if ( v121[2] < v121[3] ) - goto LABEL_39; - goto LABEL_78; - } -LABEL_38: - v15 = v13 + 1; - v109 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; -LABEL_78: - v26 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v27 = 0; - if ( !v26 ) - v27 = v121; - v109 = v26; - v121 = v27; -LABEL_39: - if ( v122 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v45 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); - v46 = v122 && v113 != 0; - v47 = v45 == -1; - if ( v45 != -1 ) - v46 = 0; - v48 = 0; - if ( !v47 ) - v48 = v113; - v117 = v46; - v113 = v48; - } - else - { - v117 = 0; - } - } - else - { - v117 = a4 == -1; - } - if ( v109 == v117 ) - { - v106 = 1; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v121 ) - { - v28 = (char *)v121[2]; - if ( (unsigned int)v28 >= v121[3] ) - { - v68 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v69 = -1; - v70 = v68 == -1; - if ( v68 != -1 ) - v69 = v68; - v71 = 0; - if ( !v70 ) - v71 = v121; - lpuexcptb = v69; - v121 = v71; - } - else - { - lpuexcptb = *v28; - } - } - if ( !v120 ) - { - v106 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v123 + 16); - } - if ( !v120 ) - goto LABEL_115; -LABEL_33: - if ( *(_BYTE *)(v123 + 76) != lpuexcptb && *(_BYTE *)(v123 + 77) != lpuexcptb ) - { - v106 = 0; - v120 = 1; - goto LABEL_43; - } - if ( v105 != 0 && v115 != 16 ) - { - v106 = 0; - MaxCount = v115; - Buf = v115; - v120 = 1; - goto LABEL_46; - } - v108 = 0; - v120 = 0; - v115 = 16; -LABEL_37: - v12 = v121; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 >= v14 ) - goto LABEL_77; - goto LABEL_38; - } - v101 = 0; - v106 = 1; - lpuexcptb = 0; - v108 = 0; - v120 = 0; -LABEL_43: - v16 = 22; - if ( v115 != 16 ) - v16 = v115; - MaxCount = v16; - Buf = v16; -LABEL_46: - v131 = 0; - Block = v132; - LOBYTE(v132[0]) = 0; - if ( *(_BYTE *)(v123 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0x8000000000000000LL; - if ( !v101 ) - v97 = 0x7FFFFFFFFFFFFFFFLL; - v17 = v97 / v115; - v102 = *(_BYTE *)(v123 + 100); - if ( !v102 ) - { - if ( v106 ) - { - v78 = v106; - v104 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - v102 = v78; - v118 = 0LL; - goto LABEL_65; - } - v104 = 0; - v118 = 0LL; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_56; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_114; - v18 = lpuexcptb - 55; - } - else - { - v18 = lpuexcptb - 87; - } -LABEL_57: - if ( v17 >= v118 ) - { - v104 |= v97 - v18 < v115 * v118; - v19 = v121; - v118 = v115 * v118 + v18; - v20 = v121[2]; - v21 = v121[3]; - ++v108; - if ( v20 < v21 ) - { -LABEL_59: - v22 = v20 + 1; - v19[2] = v22; - goto LABEL_60; - } - } - else - { - v19 = v121; - v104 = 1; - v20 = v121[2]; - v21 = v121[3]; - if ( v20 < v21 ) - goto LABEL_59; - } - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v22 = v121[2]; - v21 = v121[3]; -LABEL_60: - v110 = 0; - if ( v22 >= v21 ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v50 = 0; - if ( !v49 ) - v50 = v121; - v110 = v49; - v121 = v50; - } - if ( v122 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v51 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; - v52 = 0; - if ( !v51 ) - v52 = v113; - v53 = v122 && v113 != 0; - v113 = v52; - if ( !v51 ) - v53 = 0; - lpuexcptc = v53; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v110 ) - { - v102 = 1; - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - goto LABEL_65; - } - if ( v121 ) - { - v29 = (char *)v121[2]; - if ( (unsigned int)v29 >= v121[3] ) - { - v56 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v57 = v56 == -1; - v58 = -1; - if ( v56 != -1 ) - v58 = v56; - v59 = 0; - if ( !v57 ) - v59 = v121; - lpuexcptb = v58; - v121 = v59; - } - else - { - lpuexcptb = *v29; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_114; -LABEL_56: - v18 = lpuexcptb - 48; - goto LABEL_57; - } - if ( v106 ) - { - v118 = 0LL; - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - v102 = v106; - v104 = 0; - v106 = 0; - goto LABEL_65; - } - v104 = 0; - v118 = 0LL; - Bufa = (void *)(v123 + 78); - while ( !*(_BYTE *)(v123 + 16) || *(_BYTE *)(v123 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v123 + 36) || (v33 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_114: - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - goto LABEL_65; - } - v34 = v33 - (_BYTE *)Bufa; - if ( v33 - (_BYTE *)Bufa > 15 ) - v34 -= 6; - if ( v17 >= v118 ) - { - v104 |= v97 - v34 < v115 * v118; - ++v108; - v118 = v115 * v118 + v34; - goto LABEL_126; - } - v35 = v121; - v104 = v102; - v37 = v121[3]; - v36 = v121[2]; - if ( v36 < v37 ) - { -LABEL_127: - v38 = v36 + 1; - v35[2] = v38; - goto LABEL_128; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v38 = v121[2]; - v37 = v121[3]; -LABEL_128: - v111 = 0; - if ( v37 <= v38 ) - { - v72 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v73 = 0; - if ( v72 ) - v73 = v102; - v111 = v73; - v74 = 0; - if ( !v72 ) - v74 = v121; - v121 = v74; - } - if ( v122 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v75 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; - v76 = 0; - if ( !v75 ) - v76 = v113; - v77 = v122 && v113 != 0; - v113 = v76; - if ( !v75 ) - v77 = 0; - lpuexcpte = v77; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v111 ) - { - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - goto LABEL_65; - } - if ( v121 ) - { - v39 = (char *)v121[2]; - if ( (unsigned int)v39 >= v121[3] ) - { - v60 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v61 = v60 == -1; - v62 = -1; - if ( v60 != -1 ) - v62 = v60; - v63 = 0; - if ( !v61 ) - v63 = v121; - lpuexcptb = v62; - v121 = v63; - } - else - { - lpuexcptb = *v39; - } - } - else - { - lpuexcptb = -1; - } - } - v23 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v131; - if ( v108 ) - { - v41 = 15; - if ( Block != v132 ) - v41 = v132[0]; - v112 = v108; - v40 = v131 + 1; - if ( v131 + 1 > v41 ) - { - std::string::_M_mutate((int)&Block, v131, 0, 0, 1u); - v23 = (int *)Block; - } - v108 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v23) = v112; - v131 = v40; - *((_BYTE *)Block + v40) = 0; -LABEL_126: - v35 = v121; - v36 = v121[2]; - v37 = v121[3]; - if ( v36 < v37 ) - goto LABEL_127; - goto LABEL_134; - } - v102 = 0; - v106 = *(_BYTE *)(v123 + 16); -LABEL_65: - if ( lpuexcptd ) - { - v30 = 15; - if ( v23 != v132 ) - v30 = v132[0]; - if ( (unsigned int)lpuexcptd + 1 > v30 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v23 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v23) = v108; - v131 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v123 + 8), *(_DWORD *)(v123 + 12), (int)&Block) ) - *a6 = 4; - v23 = (int *)Block; - if ( v120 || v131 | v108 ) - goto LABEL_104; -LABEL_68: - *a7 = 0; - a7[1] = 0; - *a6 = 4; - } - else - { - if ( !v108 && !v120 ) - goto LABEL_68; -LABEL_104: - if ( v106 ) - goto LABEL_68; - if ( v104 ) - { - v31 = 0; - v32 = 0x80000000; - if ( !v101 ) - { - v31 = -1; - v32 = 0x7FFFFFFF; - } - a7[1] = v32; - *a7 = v31; - *a6 = 4; - } - else - { - if ( v101 ) - v118 = -(__int64)v118; - *(_QWORD *)a7 = v118; - } - } - if ( v102 ) - *a6 |= 2u; - if ( v23 != v132 ) - operator delete(v23); - return v121; -} -// 49DE27: variable 'v95' is possibly undefined -// 53F728: using guessed type signed __int32 std::numpunct::id; -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (0049E3B0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // edi - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - unsigned __int64 v17; // kr08_8 - int v18; // esi - _DWORD *v19; // ecx - unsigned int v20; // eax - unsigned int v21; // edx - unsigned int v22; // eax - int *v23; // eax - bool v25; // al - bool v26; // zf - _DWORD *v27; // eax - char *v28; // eax - char *v29; // eax - unsigned int v30; // edx - _BYTE *v31; // eax - int v32; // esi - _DWORD *v33; // ebx - unsigned int v34; // eax - unsigned int v35; // edx - unsigned int v36; // eax - char *v37; // eax - size_t v38; // edx - size_t v39; // esi - char *v40; // eax - char *v41; // eax - _DWORD *v42; // eax - int v43; // eax - bool v44; // dl - bool v45; // zf - _DWORD *v46; // eax - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // di - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - bool v55; // zf - char v56; // dl - _DWORD *v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - _DWORD *v61; // eax - char v62; // si - int v63; // eax - bool v64; // zf - _DWORD *v65; // eax - char v66; // bl - int v67; // eax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // zf - char v71; // al - _DWORD *v72; // eax - bool v73; // zf - _DWORD *v74; // eax - bool v75; // di - char v76; // bl - int v77; // eax - bool v78; // bl - bool v79; // zf - _DWORD *v80; // eax - int v81; // eax - bool v82; // dl - bool v83; // zf - _DWORD *v84; // eax - int v85; // eax - char v86; // dl - bool v87; // zf - _DWORD *v88; // eax - int v89; // eax - bool v90; // di - bool v91; // zf - _DWORD *v92; // eax - unsigned int v93; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v94; // [esp+18h] [ebp-C0h] - size_t MaxCount; // [esp+1Ch] [ebp-BCh] - int Buf; // [esp+20h] [ebp-B8h] - void *Bufa; // [esp+20h] [ebp-B8h] - bool v98; // [esp+26h] [ebp-B2h] - char v99; // [esp+27h] [ebp-B1h] - char v100; // [esp+30h] [ebp-A8h] - char v101; // [esp+30h] [ebp-A8h] - int v102; // [esp+34h] [ebp-A4h] - char v103; // [esp+34h] [ebp-A4h] - char v104; // [esp+38h] [ebp-A0h] - int v105; // [esp+38h] [ebp-A0h] - size_t v106; // [esp+38h] [ebp-A0h] - char v107; // [esp+3Ch] [ebp-9Ch] - char v108; // [esp+3Ch] [ebp-9Ch] - char v109; // [esp+3Ch] [ebp-9Ch] - char v110; // [esp+3Ch] [ebp-9Ch] - int *v111; // [esp+40h] [ebp-98h] - int v112; // [esp+40h] [ebp-98h] - _DWORD *v113; // [esp+48h] [ebp-90h] - char v114; // [esp+4Ch] [ebp-8Ch] - bool v115; // [esp+4Ch] [ebp-8Ch] - char v116; // [esp+50h] [ebp-88h] - char v117; // [esp+50h] [ebp-88h] - unsigned __int64 v118; // [esp+50h] [ebp-88h] - _DWORD *v119; // [esp+58h] [ebp-80h] - bool v120; // [esp+5Ch] [ebp-7Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-78h] - bool lpuexcpta; // [esp+60h] [ebp-78h] - char lpuexcptb; // [esp+60h] [ebp-78h] - char lpuexcptc; // [esp+60h] [ebp-78h] - struct _Unwind_Exception *lpuexcptd; // [esp+60h] [ebp-78h] - char lpuexcpte; // [esp+60h] [ebp-78h] - int v127; // [esp+68h] [ebp-70h] - void *Block; // [esp+A8h] [ebp-30h] BYREF - size_t v129; // [esp+ACh] [ebp-2Ch] - int v130[10]; // [esp+B0h] [ebp-28h] BYREF - - v119 = a1; - v113 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v111 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v127 = *v111; - if ( !*v111 ) - { - v42 = operator new(0x68u); - v42[1] = 0; - *v42 = &off_5605B0; - v42[2] = 0; - v42[3] = 0; - *((_BYTE *)v42 + 16) = 0; - v42[5] = 0; - v42[6] = 0; - v42[7] = 0; - v42[8] = 0; - *((_WORD *)v42 + 18) = 0; - *((_BYTE *)v42 + 100) = 0; - v94 = (std::locale::_Impl *)v42; - std::__numpunct_cache::_M_cache((int)v42, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v127 = *v111; - } - v112 = 8; - v102 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v102 != 64 ) - { - v7 = 10; - if ( v102 == 8 ) - v7 = 16; - v112 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v82 = lpuexcpta && a1 != 0; - v83 = v81 == -1; - if ( v81 != -1 ) - v82 = 0; - v84 = 0; - if ( !v83 ) - v84 = a1; - v104 = v82; - v119 = v84; - } - else - { - v104 = 0; - } - } - else - { - v104 = a2 == -1; - } - v120 = a4 == -1; - if ( v120 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v78 = v120 && a3 != 0; - v79 = v77 == -1; - if ( v77 != -1 ) - v78 = 0; - v80 = 0; - if ( !v79 ) - v80 = a3; - v100 = v78; - v113 = v80; - } - else - { - v100 = 0; - } - } - else - { - v100 = a4 == -1; - } - if ( v104 != v100 ) - { - if ( v119 && a2 == -1 ) - { - v41 = (char *)v119[2]; - if ( (unsigned int)v41 >= v119[3] ) - { - v85 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v86 = -1; - v87 = v85 == -1; - if ( v85 != -1 ) - v86 = v85; - v88 = 0; - if ( !v87 ) - v88 = v119; - lpuexcptb = v86; - v119 = v88; - } - else - { - lpuexcptb = *v41; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v127 + 16); - v98 = *(_BYTE *)(v127 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v127 + 74) == lpuexcptb || *(_BYTE *)(v127 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v127 + 37) != lpuexcptb) && *(_BYTE *)(v127 + 36) != lpuexcptb ) - { - v9 = v119[2]; - v10 = v119[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); - v11 = v119[2]; - v10 = v119[3]; - } - else - { - v11 = v9 + 1; - v119[2] = v11; - } - v114 = 0; - if ( v11 >= v10 ) - { - v52 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; - v53 = 0; - if ( !v52 ) - v53 = v119; - v114 = v52; - v119 = v53; - } - if ( v120 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v89 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); - v90 = v120 && v113 != 0; - v91 = v89 == -1; - if ( v89 != -1 ) - v90 = 0; - v116 = v90; - v92 = 0; - if ( !v91 ) - v92 = v113; - v113 = v92; - } - else - { - v116 = 0; - } - } - else - { - v116 = a4 == -1; - } - if ( v114 == v116 ) - { - v103 = 1; - v105 = 0; - v115 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v119 ) - { - v40 = (char *)v119[2]; - if ( (unsigned int)v40 >= v119[3] ) - { - v62 = -1; - v63 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v64 = v63 == -1; - if ( v63 != -1 ) - v62 = v63; - lpuexcptb = v62; - v65 = 0; - if ( !v64 ) - v65 = v119; - v119 = v65; - } - else - { - lpuexcptb = *v40; - } - } - v8 = *(_BYTE *)(v127 + 16); - } - } - else - { - v98 = 0; - } - v105 = 0; - v115 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v127 + 37) == lpuexcptb || *(_BYTE *)(v127 + 36) == lpuexcptb ) - { -LABEL_112: - v103 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v127 + 78) != lpuexcptb ) - break; - v25 = v112 == 10 || !v115; - if ( !v25 ) - goto LABEL_33; - v115 = v102 == 0 || v112 == 8; - if ( !v115 ) - { - ++v105; - v115 = v25; - goto LABEL_37; - } - v105 = 0; - v12 = v119; - v112 = 8; - v13 = v119[2]; - v14 = v119[3]; - if ( v13 >= v14 ) - { -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); - v107 = 0; - if ( v119[2] < v119[3] ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_38: - v15 = v13 + 1; - v107 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; -LABEL_76: - v26 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; - v27 = 0; - if ( !v26 ) - v27 = v119; - v107 = v26; - v119 = v27; -LABEL_39: - if ( v120 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v43 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); - v44 = v120 && v113 != 0; - v45 = v43 == -1; - if ( v43 != -1 ) - v44 = 0; - v46 = 0; - if ( !v45 ) - v46 = v113; - v117 = v44; - v113 = v46; - } - else - { - v117 = 0; - } - } - else - { - v117 = a4 == -1; - } - if ( v107 == v117 ) - { - v103 = 1; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v119 ) - { - v28 = (char *)v119[2]; - if ( (unsigned int)v28 >= v119[3] ) - { - v66 = -1; - v67 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v68 = v67 == -1; - if ( v67 != -1 ) - v66 = v67; - v69 = 0; - if ( !v68 ) - v69 = v119; - lpuexcptb = v66; - v119 = v69; - } - else - { - lpuexcptb = *v28; - } - } - if ( !v115 ) - { - v103 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v127 + 16); - } - if ( !v115 ) - goto LABEL_112; -LABEL_33: - if ( *(_BYTE *)(v127 + 76) != lpuexcptb && *(_BYTE *)(v127 + 77) != lpuexcptb ) - { - v103 = 0; - v115 = 1; - goto LABEL_43; - } - if ( v102 != 0 && v112 != 16 ) - { - v103 = 0; - MaxCount = v112; - Buf = v112; - v115 = 1; - goto LABEL_46; - } - v105 = 0; - v115 = 0; - v112 = 16; -LABEL_37: - v12 = v119; - v13 = v119[2]; - v14 = v119[3]; - if ( v13 >= v14 ) - goto LABEL_75; - goto LABEL_38; - } - v98 = 0; - v103 = 1; - lpuexcptb = 0; - v105 = 0; - v115 = 0; -LABEL_43: - v16 = 22; - if ( v112 != 16 ) - v16 = v112; - MaxCount = v16; - Buf = v16; -LABEL_46: - v129 = 0; - Block = v130; - LOBYTE(v130[0]) = 0; - if ( *(_BYTE *)(v127 + 16) ) - std::string::reserve(&Block, 0x20u); - v17 = 0xFFFFFFFFFFFFFFFFLL / v112; - v99 = *(_BYTE *)(v127 + 100); - if ( !v99 ) - { - if ( v103 ) - { - v76 = v103; - v101 = 0; - v103 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - v99 = v76; - v118 = 0LL; - goto LABEL_63; - } - v101 = 0; - v118 = 0LL; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - v18 = lpuexcptb - 87; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_111; - v18 = lpuexcptb - 55; - } -LABEL_55: - if ( v17 >= v118 ) - { - v101 |= __PAIR64__(~(v18 >> 31), ~v18) < v112 * v118; - v19 = v119; - ++v105; - v20 = v119[2]; - v21 = v119[3]; - v118 = v112 * v118 + v18; - if ( v20 < v21 ) - { -LABEL_57: - v22 = v20 + 1; - v19[2] = v22; - goto LABEL_58; - } - } - else - { - v19 = v119; - v101 = 1; - v20 = v119[2]; - v21 = v119[3]; - if ( v20 < v21 ) - goto LABEL_57; - } - (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); - v22 = v119[2]; - v21 = v119[3]; -LABEL_58: - v108 = 0; - if ( v22 >= v21 ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; - v48 = 0; - if ( !v47 ) - v48 = v119; - v108 = v47; - v119 = v48; - } - if ( v120 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; - v50 = 0; - if ( !v49 ) - v50 = v113; - v51 = v120 && v113 != 0; - v113 = v50; - if ( !v49 ) - v51 = 0; - lpuexcptc = v51; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v108 ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - goto LABEL_63; - } - if ( v119 ) - { - v29 = (char *)v119[2]; - if ( (unsigned int)v29 >= v119[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v55 = v54 == -1; - v56 = -1; - if ( v54 != -1 ) - v56 = v54; - v57 = 0; - if ( !v55 ) - v57 = v119; - lpuexcptb = v56; - v119 = v57; - } - else - { - lpuexcptb = *v29; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_111; -LABEL_54: - v18 = lpuexcptb - 48; - goto LABEL_55; - } - if ( v103 ) - { - v118 = 0LL; - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - v99 = v103; - v101 = 0; - v103 = 0; - goto LABEL_63; - } - v101 = 0; - v118 = 0LL; - Bufa = (void *)(v127 + 78); - while ( !*(_BYTE *)(v127 + 16) || *(_BYTE *)(v127 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v127 + 36) || (v31 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_111: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - goto LABEL_63; - } - v32 = v31 - (_BYTE *)Bufa; - if ( v31 - (_BYTE *)Bufa > 15 ) - v32 -= 6; - if ( v17 >= v118 ) - { - v101 |= __PAIR64__(~(v32 >> 31), ~v32) < v112 * v118; - v118 = v112 * v118 + v32; - ++v105; - goto LABEL_123; - } - v33 = v119; - v101 = v99; - v35 = v119[3]; - v34 = v119[2]; - if ( v34 < v35 ) - { -LABEL_124: - v36 = v34 + 1; - v33[2] = v36; - goto LABEL_125; - } -LABEL_131: - (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); - v36 = v119[2]; - v35 = v119[3]; -LABEL_125: - v109 = 0; - if ( v35 <= v36 ) - { - v70 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; - v71 = 0; - if ( v70 ) - v71 = v99; - v109 = v71; - v72 = 0; - if ( !v70 ) - v72 = v119; - v119 = v72; - } - if ( v120 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; - v74 = 0; - if ( !v73 ) - v74 = v113; - v75 = v120 && v113 != 0; - v113 = v74; - if ( !v73 ) - v75 = 0; - lpuexcpte = v75; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v109 ) - { - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - goto LABEL_63; - } - if ( v119 ) - { - v37 = (char *)v119[2]; - if ( (unsigned int)v37 >= v119[3] ) - { - v58 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v59 = v58 == -1; - v60 = -1; - if ( v58 != -1 ) - v60 = v58; - v61 = 0; - if ( !v59 ) - v61 = v119; - lpuexcptb = v60; - v119 = v61; - } - else - { - lpuexcptb = *v37; - } - } - else - { - lpuexcptb = -1; - } - } - v23 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v129; - if ( v105 ) - { - v38 = 15; - if ( Block != v130 ) - v38 = v130[0]; - v110 = v105; - v106 = v129 + 1; - if ( v129 + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); - v23 = (int *)Block; - } - v39 = v106; - v105 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v23) = v110; - v129 = v39; - *((_BYTE *)Block + v39) = 0; -LABEL_123: - v33 = v119; - v34 = v119[2]; - v35 = v119[3]; - if ( v34 < v35 ) - goto LABEL_124; - goto LABEL_131; - } - v99 = 0; - v103 = *(_BYTE *)(v127 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v30 = 15; - if ( v23 != v130 ) - v30 = v130[0]; - if ( (unsigned int)lpuexcptd + 1 > v30 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v23 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v23) = v105; - v129 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v127 + 8), *(_DWORD *)(v127 + 12), (int)&Block) ) - *a6 = 4; - v23 = (int *)Block; - if ( v115 || v129 | v105 ) - goto LABEL_103; -LABEL_66: - *a7 = 0; - a7[1] = 0; - *a6 = 4; - } - else - { - if ( !v105 && !v115 ) - goto LABEL_66; -LABEL_103: - if ( v103 ) - goto LABEL_66; - if ( v101 ) - { - *a7 = -1; - a7[1] = -1; - *a6 = 4; - } - else - { - if ( v98 ) - v118 = -(__int64)v118; - *(_QWORD *)a7 = v118; - } - } - if ( v99 ) - *a6 |= 2u; - if ( v23 != v130 ) - operator delete(v23); - return v119; -} -// 49F0A5: variable 'v93' is possibly undefined -// 53F728: using guessed type signed __int32 std::numpunct::id; -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (0049F650) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - _BYTE *v7; // eax - char v8; // al - int v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - unsigned int v20; // eax - bool v21; // al - _BYTE *v22; // eax - char v23; // al - char i; // al - _BYTE *v25; // eax - int v26; // eax - _DWORD *v27; // ecx - unsigned int v28; // eax - char v29; // al - char v30; // al - int v31; // edx - int v32; // eax - char *v33; // eax - char *v34; // eax - bool v35; // al - int v36; // eax - unsigned int v37; // [esp+4h] [ebp-94h] - bool v38; // [esp+1Fh] [ebp-79h] - size_t MaxCount; // [esp+20h] [ebp-78h] - int Buf; // [esp+24h] [ebp-74h] - void *Bufa; // [esp+24h] [ebp-74h] - unsigned int v42; // [esp+28h] [ebp-70h] - char v43; // [esp+28h] [ebp-70h] - int v44; // [esp+2Ch] [ebp-6Ch] - char v45; // [esp+2Ch] [ebp-6Ch] - int v46; // [esp+30h] [ebp-68h] - char v47; // [esp+34h] [ebp-64h] - char v48; // [esp+35h] [ebp-63h] - char v49; // [esp+35h] [ebp-63h] - bool v50; // [esp+36h] [ebp-62h] - char v51; // [esp+36h] [ebp-62h] - bool v52; // [esp+37h] [ebp-61h] - unsigned int v53; // [esp+38h] [ebp-60h] - struct _Unwind_Exception *v54; // [esp+3Ch] [ebp-5Ch] - char lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - unsigned int v59; // [esp+48h] [ebp-50h] - char v60; // [esp+48h] [ebp-50h] - int v61; // [esp+8Bh] [ebp-Dh] BYREF - const char *v62[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v54 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v44 = v6; - if ( v6 == 64 ) - { - v53 = 8; -LABEL_4: - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v50 ) - { - lpuexcpt = 0; - v46 = 0; - MaxCount = v53; - Buf = v53; - v52 = 0; - v38 = 0; - goto LABEL_17; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v53 = 10; - goto LABEL_4; - } - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v50 ) - { - MaxCount = 22; - lpuexcpt = 0; - v46 = 0; - v52 = 0; - v38 = 0; - v53 = 16; - Buf = 22; - goto LABEL_17; - } - v53 = 16; -LABEL_5: - LOBYTE(v7) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_7; - v7 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v7 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v7) = *v7; -LABEL_7: - lpuexcpt = (char)v7; - goto LABEL_8; - } - v7 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v7 != (_BYTE *)-1 ) - goto LABEL_7; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_8: - v8 = *((_BYTE *)v54 + 16); - v38 = *((_BYTE *)v54 + 74) == (unsigned __int8)lpuexcpt; - if ( *((_BYTE *)v54 + 74) != lpuexcpt && *((_BYTE *)v54 + 75) != lpuexcpt - || v8 && *((_BYTE *)v54 + 37) == lpuexcpt - || *((_BYTE *)v54 + 36) == lpuexcpt ) - { - goto LABEL_45; - } - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v46 = 0; - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v52 = 0; - if ( !v50 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v54 + 16); -LABEL_45: - v46 = 0; - v52 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v54 + 37) == lpuexcpt || *((_BYTE *)v54 + 36) == lpuexcpt ) - { -LABEL_94: - v50 = 0; - goto LABEL_14; - } - if ( *((_BYTE *)v54 + 78) != lpuexcpt ) - break; - v21 = v53 == 10 || !v52; - if ( !v21 ) - goto LABEL_51; - v52 = v44 == 0 || v53 == 8; - if ( !v52 ) - { - ++v46; - v52 = v21; - goto LABEL_55; - } - v19 = (_DWORD *)a1; - v46 = 0; - v53 = 8; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - { -LABEL_56: - HIDWORD(a1) = -1; - v19[2] = v20 + 1; - goto LABEL_57; - } -LABEL_64: - (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); - v19 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v51 = 1; - goto LABEL_58; - } -LABEL_57: - v51 = 0; - if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) - { - LODWORD(a1) = 0; - v51 = 1; - } -LABEL_58: - v60 = a3 == -1; - v43 = v60 & (a2 != 0); - if ( v43 ) - { - v60 = 0; - if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) - { - a2 = 0; - v60 = v43; - } - } - if ( v51 == v60 ) - { - v50 = 1; - goto LABEL_14; - } - LOBYTE(v22) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_68; - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v22) = *v22; -LABEL_68: - lpuexcpt = (char)v22; - goto LABEL_69; - } - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 != (_BYTE *)-1 ) - goto LABEL_68; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_69: - if ( !v52 ) - goto LABEL_94; - v8 = *((_BYTE *)v54 + 16); - } - if ( !v52 ) - goto LABEL_94; -LABEL_51: - if ( *((_BYTE *)v54 + 76) != lpuexcpt && *((_BYTE *)v54 + 77) != lpuexcpt ) - { - v50 = 0; - v52 = 1; - goto LABEL_14; - } - if ( v44 != 0 && v53 != 16 ) - { - v50 = 0; - v52 = 1; - MaxCount = v53; - Buf = v53; - goto LABEL_17; - } - v46 = 0; - v52 = 0; - v53 = 16; -LABEL_55: - v19 = (_DWORD *)a1; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - goto LABEL_56; - goto LABEL_64; - } -LABEL_14: - v9 = 22; - if ( v53 != 16 ) - v9 = v53; - MaxCount = v9; - Buf = v9; -LABEL_17: - v62[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v54 + 16) ) - std::string::reserve((int *)v62, (std::string *)0x20, v37); - v10 = 0xFFFFFFFF % v53; - v42 = 0xFFFFFFFF / v53; - v48 = *((_BYTE *)v54 + 100); - if ( v48 ) - { - if ( v50 ) - { - v59 = 0; - v45 = 0; - v48 = v50; - v50 = 0; - goto LABEL_33; - } - v45 = 0; - v59 = 0; - Bufa = (char *)v54 + 78; -LABEL_100: - for ( i = *((_BYTE *)v54 + 16); i && *((_BYTE *)v54 + 37) == lpuexcpt; i = *((_BYTE *)v54 + 16) ) - { - if ( !v46 ) - { - v48 = 0; - v50 = i; - goto LABEL_33; - } - std::string::push_back((int *)v62, (std::string *)(char)v46, v37); - v27 = (_DWORD *)a1; - v46 = 0; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 < *(_DWORD *)(a1 + 12) ) - goto LABEL_109; -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); - v27 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_110; - lpuexcptc = v48; -LABEL_111: - v29 = a3 == -1; - v47 = v29 & (a2 != 0); - if ( v47 ) - { - v29 = 0; - if ( a2[2] >= a2[3] ) - { - v31 = (*(int (**)(void))(*a2 + 36))(); - v29 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v29 = v47; - } - } - } - if ( v29 == lpuexcptc ) - goto LABEL_33; - v30 = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v34 = *(char **)(a1 + 8); - if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) - { - v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v36; - if ( v36 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_100; - } - v30 = *v34; - } - lpuexcpt = v30; - } - if ( lpuexcpt != *((_BYTE *)v54 + 36) ) - { - v25 = memchr(Bufa, lpuexcpt, MaxCount); - if ( v25 ) - { - v26 = v25 - (_BYTE *)Bufa; - if ( v26 > 15 ) - v26 -= 6; - if ( v42 < v59 ) - { - v45 = v48; - } - else - { - v45 |= ~v26 < v53 * v59; - ++v46; - v59 = v53 * v59 + v26; - } - v27 = (_DWORD *)a1; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_118; -LABEL_109: - HIDWORD(a1) = -1; - v27[2] = v28 + 1; -LABEL_110: - lpuexcptc = 0; - if ( v27[2] >= v27[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v48; - } - } - goto LABEL_111; - } - } -LABEL_97: - v48 = 0; - } - else - { - v45 = 0; - if ( !v50 ) - { - v59 = 0; -LABEL_22: - v11 = lpuexcpt; - if ( Buf > 10 ) - { - v10 = (unsigned __int8)lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_25; - while ( (unsigned __int8)(v10 - 97) <= 5u ) - { - v12 = v11 - 87; - if ( v42 < v59 ) - goto LABEL_27; -LABEL_74: - v10 = v53 * v59; - v45 |= ~v12 < v53 * v59; - v13 = (_DWORD *)a1; - v59 = v53 * v59 + v12; - ++v46; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_28; -LABEL_75: - (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_29; - lpuexcpta = 1; -LABEL_30: - v15 = a3 == -1; - LOBYTE(v10) = v15 & (a2 != 0); - v49 = v10; - if ( (_BYTE)v10 ) - { - v15 = 0; - if ( a2[2] >= a2[3] ) - { - v10 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v10 == -1 ) - { - a2 = 0; - v15 = v49; - } - } - } - if ( lpuexcpta == v15 ) - { - v48 = 1; - goto LABEL_33; - } - v23 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_81; - v33 = *(char **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - v23 = *v33; -LABEL_81: - lpuexcpt = v23; - goto LABEL_22; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_22; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_97; - v10 = -1; - } - v10 -= 65; - if ( (unsigned __int8)v10 <= 5u ) - { - v12 = v11 - 55; - goto LABEL_26; - } - } - else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_25: - v12 = lpuexcpt - 48; -LABEL_26: - if ( v42 >= v59 ) - goto LABEL_74; -LABEL_27: - v13 = (_DWORD *)a1; - v45 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_75; -LABEL_28: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; -LABEL_29: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } - goto LABEL_30; - } - goto LABEL_97; - } - v35 = v50; - v59 = 0; - v50 = 0; - v48 = v35; - } -LABEL_33: - v16 = v62[0]; - if ( *((_DWORD *)v62[0] - 3) ) - { - std::string::push_back((int *)v62, (std::string *)(char)v46, v37); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v54 + 2), *((_DWORD *)v54 + 3), v62) ) - *a5 = 4; - v16 = v62[0]; - if ( !v46 && !v52 && !*((_DWORD *)v62[0] - 3) ) - goto LABEL_36; - } - else if ( !v52 && !v46 ) - { - goto LABEL_36; - } - if ( v50 ) - { -LABEL_36: - *a6 = 0; - *a5 = 4; - goto LABEL_37; - } - if ( v45 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v32 = -v59; - if ( !v38 ) - v32 = v59; - *a6 = v32; - } -LABEL_37: - if ( v48 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_125: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v61); - return lpuexcptb; - } - v17 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v17 - 1; - if ( v17 <= 0 ) - goto LABEL_125; - return lpuexcptb; -} -// 49FEA9: variable 'v37' is possibly undefined -// 49FB57: variable 'v10' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004A01C0) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // dl - char v8; // al - int v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - unsigned int v20; // eax - bool v21; // al - _BYTE *v22; // eax - char v23; // al - char i; // al - _BYTE *v25; // eax - int v26; // eax - _DWORD *v27; // ecx - unsigned int v28; // eax - char v29; // al - char v30; // al - int v31; // edx - int v32; // eax - char *v33; // eax - char *v34; // eax - bool v35; // al - int v36; // eax - unsigned int v37; // [esp+4h] [ebp-94h] - bool v38; // [esp+18h] [ebp-80h] - size_t MaxCount; // [esp+1Ch] [ebp-7Ch] - unsigned int v40; // [esp+20h] [ebp-78h] - int Buf; // [esp+24h] [ebp-74h] - void *Bufa; // [esp+24h] [ebp-74h] - unsigned int v43; // [esp+28h] [ebp-70h] - char v44; // [esp+28h] [ebp-70h] - int v45; // [esp+2Ch] [ebp-6Ch] - char v46; // [esp+2Ch] [ebp-6Ch] - int v47; // [esp+30h] [ebp-68h] - char v48; // [esp+34h] [ebp-64h] - char v49; // [esp+35h] [ebp-63h] - char v50; // [esp+35h] [ebp-63h] - bool v51; // [esp+36h] [ebp-62h] - char v52; // [esp+36h] [ebp-62h] - bool v53; // [esp+37h] [ebp-61h] - unsigned int v54; // [esp+38h] [ebp-60h] - struct _Unwind_Exception *v55; // [esp+3Ch] [ebp-5Ch] - char lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - unsigned int v60; // [esp+48h] [ebp-50h] - char v61; // [esp+48h] [ebp-50h] - int v62; // [esp+8Bh] [ebp-Dh] BYREF - const char *v63[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v55 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v45 = v6; - if ( v6 == 64 ) - { - v54 = 8; -LABEL_4: - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v51 ) - { - lpuexcpt = 0; - v47 = 0; - MaxCount = v54; - Buf = v54; - v53 = 0; - v38 = 0; - goto LABEL_14; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v54 = 10; - goto LABEL_4; - } - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v51 ) - { - MaxCount = 22; - lpuexcpt = 0; - v47 = 0; - v53 = 0; - v38 = 0; - v54 = 16; - Buf = 22; - goto LABEL_14; - } - v54 = 16; -LABEL_5: - v7 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v7; - v38 = *((_BYTE *)v55 + 74) == (unsigned __int8)v7; - if ( *((_BYTE *)v55 + 74) == v7 ) - { - v8 = *((_BYTE *)v55 + 16); - } - else - { - v8 = *((_BYTE *)v55 + 16); - if ( *((_BYTE *)v55 + 75) != v7 ) - { -LABEL_42: - v47 = 0; - v53 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v55 + 37) == lpuexcpt || *((_BYTE *)v55 + 36) == lpuexcpt ) - { -LABEL_91: - v51 = 0; - goto LABEL_11; - } - if ( *((_BYTE *)v55 + 78) != lpuexcpt ) - break; - v21 = v54 == 10 || !v53; - if ( !v21 ) - goto LABEL_48; - v53 = v54 == 8 || v45 == 0; - if ( !v53 ) - { - ++v47; - v53 = v21; - goto LABEL_52; - } - v19 = (_DWORD *)a1; - v47 = 0; - v54 = 8; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - { -LABEL_53: - HIDWORD(a1) = -1; - v19[2] = v20 + 1; - goto LABEL_54; - } -LABEL_61: - (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); - v19 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v52 = 1; - goto LABEL_55; - } -LABEL_54: - v52 = 0; - if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) - { - LODWORD(a1) = 0; - v52 = 1; - } -LABEL_55: - v61 = a3 == -1; - v44 = v61 & (a2 != 0); - if ( v44 ) - { - v61 = 0; - if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) - { - a2 = 0; - v61 = v44; - } - } - if ( v61 == v52 ) - { - v51 = 1; - goto LABEL_11; - } - LOBYTE(v22) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_65; - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v22) = *v22; -LABEL_65: - lpuexcpt = (char)v22; - goto LABEL_66; - } - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 != (_BYTE *)-1 ) - goto LABEL_65; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_66: - if ( !v53 ) - goto LABEL_91; - v8 = *((_BYTE *)v55 + 16); - } - if ( !v53 ) - goto LABEL_91; -LABEL_48: - if ( *((_BYTE *)v55 + 76) != lpuexcpt && *((_BYTE *)v55 + 77) != lpuexcpt ) - { - v51 = 0; - v53 = 1; - goto LABEL_11; - } - if ( v45 != 0 && v54 != 16 ) - { - v51 = 0; - v53 = 1; - MaxCount = v54; - Buf = v54; - goto LABEL_14; - } - v47 = 0; - v53 = 0; - v54 = 16; -LABEL_52: - v19 = (_DWORD *)a1; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - goto LABEL_53; - goto LABEL_61; - } - } - if ( v8 && *((_BYTE *)v55 + 37) == v7 || *((_BYTE *)v55 + 36) == v7 ) - goto LABEL_42; - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v47 = 0; - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v53 = 0; - if ( !v51 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v55 + 16); - goto LABEL_42; - } -LABEL_11: - v9 = 22; - if ( v54 != 16 ) - v9 = v54; - MaxCount = v9; - Buf = v9; -LABEL_14: - v63[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v55 + 16) ) - std::string::reserve((int *)v63, (std::string *)0x20, v37); - v40 = v38 + 0x7FFFFFFF; - v10 = v40 % v54; - v43 = v40 / v54; - v49 = *((_BYTE *)v55 + 100); - if ( v49 ) - { - if ( v51 ) - { - v60 = 0; - v46 = 0; - v49 = v51; - v51 = 0; - goto LABEL_30; - } - v46 = 0; - v60 = 0; - Bufa = (char *)v55 + 78; -LABEL_97: - for ( i = *((_BYTE *)v55 + 16); i && *((_BYTE *)v55 + 37) == lpuexcpt; i = *((_BYTE *)v55 + 16) ) - { - if ( !v47 ) - { - v49 = 0; - v51 = i; - goto LABEL_30; - } - std::string::push_back((int *)v63, (std::string *)(char)v47, v37); - v27 = (_DWORD *)a1; - v47 = 0; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 < *(_DWORD *)(a1 + 12) ) - goto LABEL_106; -LABEL_116: - (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); - v27 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_107; - lpuexcptc = v49; -LABEL_108: - v29 = a3 == -1; - v48 = v29 & (a2 != 0); - if ( v48 ) - { - v29 = 0; - if ( a2[2] >= a2[3] ) - { - v31 = (*(int (**)(void))(*a2 + 36))(); - v29 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v29 = v48; - } - } - } - if ( v29 == lpuexcptc ) - goto LABEL_30; - v30 = BYTE4(a1); - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v34 = *(char **)(a1 + 8); - if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) - { - v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v36; - if ( v36 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_97; - } - v30 = *v34; - } - lpuexcpt = v30; - } - if ( lpuexcpt != *((_BYTE *)v55 + 36) ) - { - v25 = memchr(Bufa, lpuexcpt, MaxCount); - if ( v25 ) - { - v26 = v25 - (_BYTE *)Bufa; - if ( v26 > 15 ) - v26 -= 6; - if ( v43 < v60 ) - { - v46 = v49; - } - else - { - v46 |= v40 - v26 < v60 * v54; - ++v47; - v60 = v60 * v54 + v26; - } - v27 = (_DWORD *)a1; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_116; -LABEL_106: - HIDWORD(a1) = -1; - v27[2] = v28 + 1; -LABEL_107: - lpuexcptc = 0; - if ( v27[2] >= v27[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v49; - } - } - goto LABEL_108; - } - } -LABEL_94: - v49 = 0; - } - else - { - v46 = 0; - if ( !v51 ) - { - v60 = 0; -LABEL_19: - v11 = lpuexcpt; - if ( Buf > 10 ) - { - v10 = (unsigned __int8)lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_22; - while ( (unsigned __int8)(v10 - 97) <= 5u ) - { - v12 = v11 - 87; - if ( v43 < v60 ) - goto LABEL_24; -LABEL_71: - v10 = v54 * v60; - v46 |= v40 - v12 < v54 * v60; - v13 = (_DWORD *)a1; - v60 = v54 * v60 + v12; - ++v47; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_25; -LABEL_72: - (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_26; - lpuexcpta = 1; -LABEL_27: - v15 = a3 == -1; - LOBYTE(v10) = v15 & (a2 != 0); - v50 = v10; - if ( (_BYTE)v10 ) - { - v10 = a2[3]; - v15 = 0; - if ( a2[2] >= v10 ) - { - v10 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v10 == -1 ) - { - a2 = 0; - v15 = v50; - } - } - } - if ( lpuexcpta == v15 ) - { - v49 = 1; - goto LABEL_30; - } - v23 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_78; - v33 = *(char **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - v23 = *v33; -LABEL_78: - lpuexcpt = v23; - goto LABEL_19; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_19; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_94; - v10 = -1; - } - v10 -= 65; - if ( (unsigned __int8)v10 <= 5u ) - { - v12 = v11 - 55; - goto LABEL_23; - } - } - else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_22: - v12 = lpuexcpt - 48; -LABEL_23: - if ( v43 >= v60 ) - goto LABEL_71; -LABEL_24: - v13 = (_DWORD *)a1; - v46 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_72; -LABEL_25: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; -LABEL_26: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } - goto LABEL_27; - } - goto LABEL_94; - } - v35 = v51; - v60 = 0; - v51 = 0; - v49 = v35; - } -LABEL_30: - v16 = v63[0]; - if ( *((_DWORD *)v63[0] - 3) ) - { - std::string::push_back((int *)v63, (std::string *)(char)v47, v37); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v55 + 2), *((_DWORD *)v55 + 3), v63) ) - *a5 = 4; - v16 = v63[0]; - if ( !v47 && !v53 && !*((_DWORD *)v63[0] - 3) ) - goto LABEL_33; - } - else if ( !v53 && !v47 ) - { - goto LABEL_33; - } - if ( v51 ) - { -LABEL_33: - *a6 = 0; - *a5 = 4; - goto LABEL_34; - } - if ( v46 ) - { - *a6 = v38 + 0x7FFFFFFF; - *a5 = 4; - } - else - { - v32 = -v60; - if ( !v38 ) - v32 = v60; - *a6 = v32; - } -LABEL_34: - if ( v49 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_123: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v62); - return lpuexcptb; - } - v17 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v17 - 1; - if ( v17 <= 0 ) - goto LABEL_123; - return lpuexcptb; -} -// 4A0A39: variable 'v37' is possibly undefined -// 4A06D8: variable 'v10' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004A0D20) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - _BYTE *v7; // eax - char v8; // al - int v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - unsigned int v20; // eax - bool v21; // al - _BYTE *v22; // eax - char v23; // al - char i; // al - _BYTE *v25; // eax - int v26; // eax - _DWORD *v27; // ecx - unsigned int v28; // eax - char v29; // al - char v30; // al - int v31; // edx - int v32; // eax - char *v33; // eax - char *v34; // eax - bool v35; // al - int v36; // eax - unsigned int v37; // [esp+4h] [ebp-94h] - bool v38; // [esp+1Fh] [ebp-79h] - size_t MaxCount; // [esp+20h] [ebp-78h] - int Buf; // [esp+24h] [ebp-74h] - void *Bufa; // [esp+24h] [ebp-74h] - unsigned int v42; // [esp+28h] [ebp-70h] - char v43; // [esp+28h] [ebp-70h] - int v44; // [esp+2Ch] [ebp-6Ch] - char v45; // [esp+2Ch] [ebp-6Ch] - int v46; // [esp+30h] [ebp-68h] - char v47; // [esp+34h] [ebp-64h] - char v48; // [esp+35h] [ebp-63h] - char v49; // [esp+35h] [ebp-63h] - bool v50; // [esp+36h] [ebp-62h] - char v51; // [esp+36h] [ebp-62h] - bool v52; // [esp+37h] [ebp-61h] - unsigned int v53; // [esp+38h] [ebp-60h] - struct _Unwind_Exception *v54; // [esp+3Ch] [ebp-5Ch] - char lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - unsigned int v59; // [esp+48h] [ebp-50h] - char v60; // [esp+48h] [ebp-50h] - int v61; // [esp+8Bh] [ebp-Dh] BYREF - const char *v62[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v54 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v44 = v6; - if ( v6 == 64 ) - { - v53 = 8; -LABEL_4: - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v50 ) - { - lpuexcpt = 0; - v46 = 0; - MaxCount = v53; - Buf = v53; - v52 = 0; - v38 = 0; - goto LABEL_17; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v53 = 10; - goto LABEL_4; - } - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v50 ) - { - MaxCount = 22; - lpuexcpt = 0; - v46 = 0; - v52 = 0; - v38 = 0; - v53 = 16; - Buf = 22; - goto LABEL_17; - } - v53 = 16; -LABEL_5: - LOBYTE(v7) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_7; - v7 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v7 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v7) = *v7; -LABEL_7: - lpuexcpt = (char)v7; - goto LABEL_8; - } - v7 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v7 != (_BYTE *)-1 ) - goto LABEL_7; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_8: - v8 = *((_BYTE *)v54 + 16); - v38 = *((_BYTE *)v54 + 74) == (unsigned __int8)lpuexcpt; - if ( *((_BYTE *)v54 + 74) != lpuexcpt && *((_BYTE *)v54 + 75) != lpuexcpt - || v8 && *((_BYTE *)v54 + 37) == lpuexcpt - || *((_BYTE *)v54 + 36) == lpuexcpt ) - { - goto LABEL_45; - } - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v46 = 0; - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v52 = 0; - if ( !v50 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v54 + 16); -LABEL_45: - v46 = 0; - v52 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v54 + 37) == lpuexcpt || *((_BYTE *)v54 + 36) == lpuexcpt ) - { -LABEL_94: - v50 = 0; - goto LABEL_14; - } - if ( *((_BYTE *)v54 + 78) != lpuexcpt ) - break; - v21 = v53 == 10 || !v52; - if ( !v21 ) - goto LABEL_51; - v52 = v44 == 0 || v53 == 8; - if ( !v52 ) - { - ++v46; - v52 = v21; - goto LABEL_55; - } - v19 = (_DWORD *)a1; - v46 = 0; - v53 = 8; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - { -LABEL_56: - HIDWORD(a1) = -1; - v19[2] = v20 + 1; - goto LABEL_57; - } -LABEL_64: - (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); - v19 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v51 = 1; - goto LABEL_58; - } -LABEL_57: - v51 = 0; - if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) - { - LODWORD(a1) = 0; - v51 = 1; - } -LABEL_58: - v60 = a3 == -1; - v43 = v60 & (a2 != 0); - if ( v43 ) - { - v60 = 0; - if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) - { - a2 = 0; - v60 = v43; - } - } - if ( v51 == v60 ) - { - v50 = 1; - goto LABEL_14; - } - LOBYTE(v22) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_68; - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v22) = *v22; -LABEL_68: - lpuexcpt = (char)v22; - goto LABEL_69; - } - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 != (_BYTE *)-1 ) - goto LABEL_68; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_69: - if ( !v52 ) - goto LABEL_94; - v8 = *((_BYTE *)v54 + 16); - } - if ( !v52 ) - goto LABEL_94; -LABEL_51: - if ( *((_BYTE *)v54 + 76) != lpuexcpt && *((_BYTE *)v54 + 77) != lpuexcpt ) - { - v50 = 0; - v52 = 1; - goto LABEL_14; - } - if ( v44 != 0 && v53 != 16 ) - { - v50 = 0; - v52 = 1; - MaxCount = v53; - Buf = v53; - goto LABEL_17; - } - v46 = 0; - v52 = 0; - v53 = 16; -LABEL_55: - v19 = (_DWORD *)a1; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - goto LABEL_56; - goto LABEL_64; - } -LABEL_14: - v9 = 22; - if ( v53 != 16 ) - v9 = v53; - MaxCount = v9; - Buf = v9; -LABEL_17: - v62[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v54 + 16) ) - std::string::reserve((int *)v62, (std::string *)0x20, v37); - v10 = 0xFFFFFFFF % v53; - v42 = 0xFFFFFFFF / v53; - v48 = *((_BYTE *)v54 + 100); - if ( v48 ) - { - if ( v50 ) - { - v59 = 0; - v45 = 0; - v48 = v50; - v50 = 0; - goto LABEL_33; - } - v45 = 0; - v59 = 0; - Bufa = (char *)v54 + 78; -LABEL_100: - for ( i = *((_BYTE *)v54 + 16); i && *((_BYTE *)v54 + 37) == lpuexcpt; i = *((_BYTE *)v54 + 16) ) - { - if ( !v46 ) - { - v48 = 0; - v50 = i; - goto LABEL_33; - } - std::string::push_back((int *)v62, (std::string *)(char)v46, v37); - v27 = (_DWORD *)a1; - v46 = 0; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 < *(_DWORD *)(a1 + 12) ) - goto LABEL_109; -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); - v27 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_110; - lpuexcptc = v48; -LABEL_111: - v29 = a3 == -1; - v47 = v29 & (a2 != 0); - if ( v47 ) - { - v29 = 0; - if ( a2[2] >= a2[3] ) - { - v31 = (*(int (**)(void))(*a2 + 36))(); - v29 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v29 = v47; - } - } - } - if ( v29 == lpuexcptc ) - goto LABEL_33; - v30 = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v34 = *(char **)(a1 + 8); - if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) - { - v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v36; - if ( v36 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_100; - } - v30 = *v34; - } - lpuexcpt = v30; - } - if ( lpuexcpt != *((_BYTE *)v54 + 36) ) - { - v25 = memchr(Bufa, lpuexcpt, MaxCount); - if ( v25 ) - { - v26 = v25 - (_BYTE *)Bufa; - if ( v26 > 15 ) - v26 -= 6; - if ( v42 < v59 ) - { - v45 = v48; - } - else - { - v45 |= ~v26 < v53 * v59; - ++v46; - v59 = v53 * v59 + v26; - } - v27 = (_DWORD *)a1; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_118; -LABEL_109: - HIDWORD(a1) = -1; - v27[2] = v28 + 1; -LABEL_110: - lpuexcptc = 0; - if ( v27[2] >= v27[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v48; - } - } - goto LABEL_111; - } - } -LABEL_97: - v48 = 0; - } - else - { - v45 = 0; - if ( !v50 ) - { - v59 = 0; -LABEL_22: - v11 = lpuexcpt; - if ( Buf > 10 ) - { - v10 = (unsigned __int8)lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_25; - while ( (unsigned __int8)(v10 - 97) <= 5u ) - { - v12 = v11 - 87; - if ( v42 < v59 ) - goto LABEL_27; -LABEL_74: - v10 = v53 * v59; - v45 |= ~v12 < v53 * v59; - v13 = (_DWORD *)a1; - v59 = v53 * v59 + v12; - ++v46; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_28; -LABEL_75: - (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_29; - lpuexcpta = 1; -LABEL_30: - v15 = a3 == -1; - LOBYTE(v10) = v15 & (a2 != 0); - v49 = v10; - if ( (_BYTE)v10 ) - { - v15 = 0; - if ( a2[2] >= a2[3] ) - { - v10 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v10 == -1 ) - { - a2 = 0; - v15 = v49; - } - } - } - if ( lpuexcpta == v15 ) - { - v48 = 1; - goto LABEL_33; - } - v23 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_81; - v33 = *(char **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - v23 = *v33; -LABEL_81: - lpuexcpt = v23; - goto LABEL_22; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_22; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_97; - v10 = -1; - } - v10 -= 65; - if ( (unsigned __int8)v10 <= 5u ) - { - v12 = v11 - 55; - goto LABEL_26; - } - } - else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_25: - v12 = lpuexcpt - 48; -LABEL_26: - if ( v42 >= v59 ) - goto LABEL_74; -LABEL_27: - v13 = (_DWORD *)a1; - v45 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_75; -LABEL_28: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; -LABEL_29: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } - goto LABEL_30; - } - goto LABEL_97; - } - v35 = v50; - v59 = 0; - v50 = 0; - v48 = v35; - } -LABEL_33: - v16 = v62[0]; - if ( *((_DWORD *)v62[0] - 3) ) - { - std::string::push_back((int *)v62, (std::string *)(char)v46, v37); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v54 + 2), *((_DWORD *)v54 + 3), v62) ) - *a5 = 4; - v16 = v62[0]; - if ( !v46 && !v52 && !*((_DWORD *)v62[0] - 3) ) - goto LABEL_36; - } - else if ( !v52 && !v46 ) - { - goto LABEL_36; - } - if ( v50 ) - { -LABEL_36: - *a6 = 0; - *a5 = 4; - goto LABEL_37; - } - if ( v45 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v32 = -v59; - if ( !v38 ) - v32 = v59; - *a6 = v32; - } -LABEL_37: - if ( v48 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_125: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v61); - return lpuexcptb; - } - v17 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v17 - 1; - if ( v17 <= 0 ) - goto LABEL_125; - return lpuexcptb; -} -// 4A1579: variable 'v37' is possibly undefined -// 4A1227: variable 'v10' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004A1890) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _WORD *a6) -{ - int v6; // eax - _BYTE *v7; // eax - char v8; // al - int v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - unsigned int v20; // eax - bool v21; // al - _BYTE *v22; // eax - char v23; // al - char i; // al - _BYTE *v25; // eax - int v26; // eax - _DWORD *v27; // ecx - unsigned int v28; // eax - char v29; // al - char v30; // al - int v31; // edx - int v32; // eax - char *v33; // eax - char *v34; // eax - bool v35; // al - bool v36; // al - int v37; // eax - unsigned int v38; // [esp+4h] [ebp-94h] - bool v39; // [esp+1Fh] [ebp-79h] - size_t MaxCount; // [esp+20h] [ebp-78h] - int Buf; // [esp+24h] [ebp-74h] - void *Bufa; // [esp+24h] [ebp-74h] - int v43; // [esp+28h] [ebp-70h] - char v44; // [esp+28h] [ebp-70h] - int v45; // [esp+2Ch] [ebp-6Ch] - char v46; // [esp+2Ch] [ebp-6Ch] - int v47; // [esp+30h] [ebp-68h] - char v48; // [esp+34h] [ebp-64h] - char v49; // [esp+35h] [ebp-63h] - char v50; // [esp+35h] [ebp-63h] - bool v51; // [esp+36h] [ebp-62h] - char v52; // [esp+36h] [ebp-62h] - bool v53; // [esp+37h] [ebp-61h] - int v54; // [esp+38h] [ebp-60h] - struct _Unwind_Exception *v55; // [esp+3Ch] [ebp-5Ch] - char lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - unsigned __int16 v60; // [esp+48h] [ebp-50h] - char v61; // [esp+48h] [ebp-50h] - int v62; // [esp+8Bh] [ebp-Dh] BYREF - const char *v63[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v55 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v45 = v6; - if ( v6 == 64 ) - { - v54 = 8; -LABEL_4: - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v51 ) - { - lpuexcpt = 0; - v47 = 0; - MaxCount = v54; - Buf = v54; - v53 = 0; - v39 = 0; - goto LABEL_17; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v54 = 10; - goto LABEL_4; - } - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v51 ) - { - MaxCount = 22; - lpuexcpt = 0; - v47 = 0; - v53 = 0; - v39 = 0; - v54 = 16; - Buf = 22; - goto LABEL_17; - } - v54 = 16; -LABEL_5: - LOBYTE(v7) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_7; - v7 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v7 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v7) = *v7; -LABEL_7: - lpuexcpt = (char)v7; - goto LABEL_8; - } - v7 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v7 != (_BYTE *)-1 ) - goto LABEL_7; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_8: - v8 = *((_BYTE *)v55 + 16); - v39 = *((_BYTE *)v55 + 74) == (unsigned __int8)lpuexcpt; - if ( *((_BYTE *)v55 + 74) != lpuexcpt && *((_BYTE *)v55 + 75) != lpuexcpt - || v8 && *((_BYTE *)v55 + 37) == lpuexcpt - || *((_BYTE *)v55 + 36) == lpuexcpt ) - { - goto LABEL_45; - } - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v47 = 0; - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v53 = 0; - if ( !v51 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v55 + 16); -LABEL_45: - v47 = 0; - v53 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v55 + 37) == lpuexcpt || *((_BYTE *)v55 + 36) == lpuexcpt ) - { -LABEL_94: - v51 = 0; - goto LABEL_14; - } - if ( *((_BYTE *)v55 + 78) != lpuexcpt ) - break; - v21 = v54 == 10 || !v53; - if ( !v21 ) - goto LABEL_51; - v53 = v45 == 0 || v54 == 8; - if ( !v53 ) - { - ++v47; - v53 = v21; - goto LABEL_55; - } - v19 = (_DWORD *)a1; - v47 = 0; - v54 = 8; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - { -LABEL_56: - HIDWORD(a1) = -1; - v19[2] = v20 + 1; - goto LABEL_57; - } -LABEL_64: - (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); - v19 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v52 = 1; - goto LABEL_58; - } -LABEL_57: - v52 = 0; - if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) - { - LODWORD(a1) = 0; - v52 = 1; - } -LABEL_58: - v61 = a3 == -1; - v44 = v61 & (a2 != 0); - if ( v44 ) - { - v61 = 0; - if ( a2[2] >= a2[3] && (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1 ) - { - a2 = 0; - v61 = v44; - } - } - if ( v52 == v61 ) - { - v51 = 1; - goto LABEL_14; - } - LOBYTE(v22) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_68; - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v22) = *v22; -LABEL_68: - lpuexcpt = (char)v22; - goto LABEL_69; - } - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 != (_BYTE *)-1 ) - goto LABEL_68; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_69: - if ( !v53 ) - goto LABEL_94; - v8 = *((_BYTE *)v55 + 16); - } - if ( !v53 ) - goto LABEL_94; -LABEL_51: - if ( *((_BYTE *)v55 + 76) != lpuexcpt && *((_BYTE *)v55 + 77) != lpuexcpt ) - { - v51 = 0; - v53 = 1; - goto LABEL_14; - } - if ( v45 != 0 && v54 != 16 ) - { - v51 = 0; - v53 = 1; - MaxCount = v54; - Buf = v54; - goto LABEL_17; - } - v47 = 0; - v53 = 0; - v54 = 16; -LABEL_55: - v19 = (_DWORD *)a1; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - goto LABEL_56; - goto LABEL_64; - } -LABEL_14: - v9 = 22; - if ( v54 != 16 ) - v9 = v54; - MaxCount = v9; - Buf = v9; -LABEL_17: - v63[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v55 + 16) ) - std::string::reserve((int *)v63, (std::string *)0x20, v38); - v10 = 0xFFFF % v54; - v43 = 0xFFFF / v54; - v49 = *((_BYTE *)v55 + 100); - if ( v49 ) - { - if ( v51 ) - { - v36 = v51; - v46 = 0; - v51 = 0; - v49 = v36; - v60 = 0; - goto LABEL_33; - } - v46 = 0; - v60 = 0; - Bufa = (char *)v55 + 78; -LABEL_100: - for ( i = *((_BYTE *)v55 + 16); i && *((_BYTE *)v55 + 37) == lpuexcpt; i = *((_BYTE *)v55 + 16) ) - { - if ( !v47 ) - { - v49 = 0; - v51 = i; - goto LABEL_33; - } - std::string::push_back((int *)v63, (std::string *)(char)v47, v38); - v27 = (_DWORD *)a1; - v47 = 0; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 < *(_DWORD *)(a1 + 12) ) - goto LABEL_109; -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); - v27 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_110; - lpuexcptc = v49; -LABEL_111: - v29 = a3 == -1; - v48 = v29 & (a2 != 0); - if ( v48 ) - { - v29 = 0; - if ( a2[2] >= a2[3] ) - { - v31 = (*(int (**)(void))(*a2 + 36))(); - v29 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v29 = v48; - } - } - } - if ( v29 == lpuexcptc ) - goto LABEL_33; - v30 = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v34 = *(char **)(a1 + 8); - if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) - { - v37 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v37; - if ( v37 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_100; - } - v30 = *v34; - } - lpuexcpt = v30; - } - if ( lpuexcpt != *((_BYTE *)v55 + 36) ) - { - v25 = memchr(Bufa, lpuexcpt, MaxCount); - if ( v25 ) - { - v26 = v25 - (_BYTE *)Bufa; - if ( v26 > 15 ) - v26 -= 6; - if ( (unsigned __int16)v43 < v60 ) - { - v46 = v49; - } - else - { - v46 |= (unsigned __int16)(v54 * v60) > 0xFFFF - v26; - ++v47; - v60 = v54 * v60 + v26; - } - v27 = (_DWORD *)a1; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_118; -LABEL_109: - HIDWORD(a1) = -1; - v27[2] = v28 + 1; -LABEL_110: - lpuexcptc = 0; - if ( v27[2] >= v27[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v49; - } - } - goto LABEL_111; - } - } -LABEL_97: - v49 = 0; - } - else - { - v46 = 0; - if ( !v51 ) - { - v60 = 0; -LABEL_22: - v11 = lpuexcpt; - if ( Buf > 10 ) - { - v10 = (unsigned __int8)lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_25; - while ( (unsigned __int8)(v10 - 97) <= 5u ) - { - v12 = v11 - 87; - if ( (unsigned __int16)v43 < v60 ) - goto LABEL_27; -LABEL_74: - v10 = v60; - LOWORD(v10) = v54 * v60; - v46 |= (unsigned __int16)(v54 * v60) > 0xFFFF - v12; - v13 = (_DWORD *)a1; - v60 = v54 * v60 + v12; - ++v47; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_28; -LABEL_75: - (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_29; - lpuexcpta = 1; -LABEL_30: - v15 = a3 == -1; - LOBYTE(v10) = v15 & (a2 != 0); - v50 = v10; - if ( (_BYTE)v10 ) - { - v10 = a2[3]; - v15 = 0; - if ( a2[2] >= v10 ) - { - v10 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v10 == -1 ) - { - a2 = 0; - v15 = v50; - } - } - } - if ( lpuexcpta == v15 ) - { - v49 = 1; - goto LABEL_33; - } - v23 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_81; - v33 = *(char **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - v23 = *v33; -LABEL_81: - lpuexcpt = v23; - goto LABEL_22; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_22; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_97; - v10 = -1; - } - v10 -= 65; - if ( (unsigned __int8)v10 <= 5u ) - { - v12 = v11 - 55; - goto LABEL_26; - } - } - else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_25: - v12 = lpuexcpt - 48; -LABEL_26: - if ( (unsigned __int16)v43 >= v60 ) - goto LABEL_74; -LABEL_27: - v13 = (_DWORD *)a1; - v46 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_75; -LABEL_28: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; -LABEL_29: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } - goto LABEL_30; - } - goto LABEL_97; - } - v35 = v51; - v51 = 0; - v49 = v35; - v60 = 0; - } -LABEL_33: - v16 = v63[0]; - if ( *((_DWORD *)v63[0] - 3) ) - { - std::string::push_back((int *)v63, (std::string *)(char)v47, v38); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v55 + 2), *((_DWORD *)v55 + 3), v63) ) - *a5 = 4; - v16 = v63[0]; - if ( !v47 && !v53 && !*((_DWORD *)v63[0] - 3) ) - goto LABEL_36; - } - else if ( !v53 && !v47 ) - { - goto LABEL_36; - } - if ( v51 ) - { -LABEL_36: - *a6 = 0; - *a5 = 4; - goto LABEL_37; - } - if ( v46 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v32 = -v60; - if ( !v39 ) - LOWORD(v32) = v60; - *a6 = v32; - } -LABEL_37: - if ( v49 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_125: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v62); - return lpuexcptb; - } - v17 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v17 - 1; - if ( v17 <= 0 ) - goto LABEL_125; - return lpuexcptb; -} -// 4A2101: variable 'v38' is possibly undefined -// 4A1DA0: variable 'v10' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004A2410) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // dl - char v8; // al - int v9; // eax - unsigned __int64 v10; // kr00_8 - int v11; // esi - int v12; // esi - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int *v17; // eax - int v18; // eax - _DWORD *v20; // ecx - unsigned int v21; // eax - bool v22; // al - _BYTE *v23; // eax - char v24; // al - char v25; // al - int v26; // eax - unsigned int v27; // edx - int *v28; // esi - _DWORD *v29; // eax - int v30; // edx - char v31; // al - _BYTE *v32; // eax - int v33; // esi - _DWORD *v34; // ecx - unsigned int v35; // eax - char v36; // al - char v37; // al - int v38; // edx - char *v39; // eax - char *v40; // eax - bool v41; // al - int v42; // eax - int v43; // eax - unsigned int v44; // [esp+4h] [ebp-B4h] - char v45; // [esp+4h] [ebp-B4h] - char v46; // [esp+1Bh] [ebp-9Dh] - size_t MaxCount; // [esp+1Ch] [ebp-9Ch] - unsigned __int64 v48; // [esp+20h] [ebp-98h] - int Buf; // [esp+28h] [ebp-90h] - void *Bufa; // [esp+28h] [ebp-90h] - char v51; // [esp+30h] [ebp-88h] - int v52; // [esp+34h] [ebp-84h] - char v53; // [esp+34h] [ebp-84h] - int v54; // [esp+38h] [ebp-80h] - int v55; // [esp+40h] [ebp-78h] - bool v56; // [esp+44h] [ebp-74h] - char v57; // [esp+45h] [ebp-73h] - char v58; // [esp+45h] [ebp-73h] - bool v59; // [esp+46h] [ebp-72h] - char v60; // [esp+46h] [ebp-72h] - bool v61; // [esp+47h] [ebp-71h] - unsigned __int64 v62; // [esp+48h] [ebp-70h] - char v63; // [esp+48h] [ebp-70h] - char lpuexcpt; // [esp+50h] [ebp-68h] - char lpuexcpta; // [esp+50h] [ebp-68h] - unsigned __int64 lpuexcptb; // [esp+50h] [ebp-68h] - char lpuexcptc; // [esp+50h] [ebp-68h] - struct _Unwind_Exception *v68; // [esp+58h] [ebp-60h] - int v69; // [esp+9Bh] [ebp-1Dh] BYREF - const char *v70[7]; // [esp+9Ch] [ebp-1Ch] BYREF - - v68 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v52 = v6; - if ( v6 == 64 ) - { - v54 = 8; -LABEL_4: - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - lpuexcpt = 0; - v55 = 0; - MaxCount = v54; - Buf = v54; - v61 = 0; - v56 = 0; - goto LABEL_14; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v54 = 10; - goto LABEL_4; - } - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - MaxCount = 22; - lpuexcpt = 0; - v55 = 0; - v61 = 0; - v56 = 0; - v54 = 16; - Buf = 22; - goto LABEL_14; - } - v54 = 16; -LABEL_5: - v7 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v7; - v56 = *((_BYTE *)v68 + 74) == (unsigned __int8)v7; - if ( *((_BYTE *)v68 + 74) == v7 ) - { - v8 = *((_BYTE *)v68 + 16); - } - else - { - v8 = *((_BYTE *)v68 + 16); - if ( *((_BYTE *)v68 + 75) != v7 ) - { -LABEL_44: - v55 = 0; - v61 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v68 + 37) == lpuexcpt || *((_BYTE *)v68 + 36) == lpuexcpt ) - { -LABEL_95: - v59 = 0; - goto LABEL_11; - } - if ( *((_BYTE *)v68 + 78) != lpuexcpt ) - break; - v22 = v54 == 10 || !v61; - if ( !v22 ) - goto LABEL_50; - v61 = v54 == 8 || v52 == 0; - if ( !v61 ) - { - ++v55; - v61 = v22; - goto LABEL_54; - } - v20 = (_DWORD *)a1; - v55 = 0; - v54 = 8; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 < *(_DWORD *)(a1 + 12) ) - { -LABEL_55: - HIDWORD(a1) = -1; - v20[2] = v21 + 1; - goto LABEL_56; - } -LABEL_63: - (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); - v20 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v60 = 1; - goto LABEL_57; - } -LABEL_56: - v60 = 0; - if ( v20[2] >= v20[3] && (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20) == -1 ) - { - LODWORD(a1) = 0; - v60 = 1; - } -LABEL_57: - v63 = a3 == -1; - v51 = v63 & (a2 != 0); - if ( v51 ) - { - v63 = 0; - if ( a2[2] >= a2[3] && (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1 ) - { - a2 = 0; - v63 = v51; - } - } - if ( v63 == v60 ) - { - v59 = 1; - goto LABEL_11; - } - LOBYTE(v23) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_67; - v23 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v23 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v23) = *v23; -LABEL_67: - lpuexcpt = (char)v23; - goto LABEL_68; - } - v23 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v23 != (_BYTE *)-1 ) - goto LABEL_67; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_68: - if ( !v61 ) - goto LABEL_95; - v8 = *((_BYTE *)v68 + 16); - } - if ( !v61 ) - goto LABEL_95; -LABEL_50: - if ( *((_BYTE *)v68 + 76) != lpuexcpt && *((_BYTE *)v68 + 77) != lpuexcpt ) - { - v59 = 0; - v61 = 1; - goto LABEL_11; - } - if ( v52 != 0 && v54 != 16 ) - { - v59 = 0; - v61 = 1; - MaxCount = v54; - Buf = v54; - goto LABEL_14; - } - v55 = 0; - v61 = 0; - v54 = 16; -LABEL_54: - v20 = (_DWORD *)a1; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 < *(_DWORD *)(a1 + 12) ) - goto LABEL_55; - goto LABEL_63; - } - } - if ( v8 && *((_BYTE *)v68 + 37) == v7 || *((_BYTE *)v68 + 36) == v7 ) - goto LABEL_44; - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v55 = 0; - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v61 = 0; - if ( !v59 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v68 + 16); - goto LABEL_44; - } -LABEL_11: - v9 = 22; - if ( v54 != 16 ) - v9 = v54; - MaxCount = v9; - Buf = v9; -LABEL_14: - v70[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v68 + 16) ) - std::string::reserve((int *)v70, (std::string *)0x20, v44); - v48 = 0x8000000000000000LL; - if ( !v56 ) - v48 = 0x7FFFFFFFFFFFFFFFLL; - v10 = v48 / v54; - v57 = *((_BYTE *)v68 + 100); - if ( !v57 ) - { - v53 = 0; - if ( v59 ) - { - v41 = v59; - v62 = 0LL; - v59 = 0; - v57 = v41; - goto LABEL_32; - } - v62 = 0LL; -LABEL_21: - v11 = lpuexcpt; - if ( Buf <= 10 ) - { - if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_24: - v12 = lpuexcpt - 48; - goto LABEL_25; - } -LABEL_98: - v57 = 0; - goto LABEL_32; - } - v24 = lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_24; - while ( 1 ) - { - if ( (unsigned __int8)(v24 - 97) > 5u ) - { - if ( (unsigned __int8)(v24 - 65) > 5u ) - goto LABEL_98; - v12 = v11 - 55; - } - else - { - v12 = v11 - 87; - } -LABEL_25: - if ( v10 >= v62 ) - { - v53 |= v48 - v12 < v54 * v62; - v13 = (_DWORD *)a1; - v62 = v54 * v62 + v12; - ++v55; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - { -LABEL_27: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; - goto LABEL_28; - } - } - else - { - v13 = (_DWORD *)a1; - v53 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_27; - } - (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpta = 1; - goto LABEL_29; - } -LABEL_28: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } -LABEL_29: - v15 = a3 == -1; - v58 = v15 & (a2 != 0); - if ( v58 ) - { - v15 = 0; - if ( a2[2] >= a2[3] ) - { - v30 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v30 == -1 ) - { - a2 = 0; - v15 = v58; - } - } - } - if ( lpuexcpta == v15 ) - { - v57 = 1; - goto LABEL_32; - } - v25 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_80; - v39 = *(char **)(a1 + 8); - if ( (unsigned int)v39 < *(_DWORD *)(a1 + 12) ) - { - v25 = *v39; -LABEL_80: - lpuexcpt = v25; - goto LABEL_21; - } - v42 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v42; - v11 = v42; - if ( v42 != -1 ) - goto LABEL_21; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_98; - v24 = -1; - } - } - if ( v59 ) - { - v62 = 0LL; - v57 = v59; - v53 = 0; - v59 = 0; - } - else - { - v53 = 0; - v62 = 0LL; - Bufa = (char *)v68 + 78; -LABEL_101: - v31 = *((_BYTE *)v68 + 16); - if ( !v31 || *((_BYTE *)v68 + 37) != lpuexcpt ) - { -LABEL_103: - if ( lpuexcpt == *((_BYTE *)v68 + 36) ) - goto LABEL_98; - v32 = memchr(Bufa, lpuexcpt, MaxCount); - if ( !v32 ) - goto LABEL_98; - v33 = v32 - (_BYTE *)Bufa; - if ( v32 - (_BYTE *)Bufa > 15 ) - v33 -= 6; - if ( v10 < v62 ) - { - v53 = v57; - } - else - { - v53 |= v48 - v33 < v54 * v62; - ++v55; - v62 = v54 * v62 + v33; - } - v34 = (_DWORD *)a1; - v35 = *(_DWORD *)(a1 + 8); - if ( v35 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_120; -LABEL_110: - HIDWORD(a1) = -1; - v34[2] = v35 + 1; -LABEL_111: - lpuexcptc = 0; - if ( v34[2] >= v34[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v34 + 36))(v34) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v57; - } - } - goto LABEL_112; - } - while ( v55 ) - { - std::string::push_back((int *)v70, (std::string *)(char)v55, v45); - v34 = (_DWORD *)a1; - v55 = 0; - v35 = *(_DWORD *)(a1 + 8); - if ( v35 < *(_DWORD *)(a1 + 12) ) - goto LABEL_110; -LABEL_120: - (*(void (__fastcall **)(_DWORD *))(*v34 + 40))(v34); - v34 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_111; - lpuexcptc = v57; -LABEL_112: - v36 = a3 == -1; - v46 = v36 & (a2 != 0); - if ( v46 ) - { - v36 = 0; - if ( a2[2] >= a2[3] ) - { - v38 = (*(int (**)(void))(*a2 + 36))(); - v36 = 0; - if ( v38 == -1 ) - { - a2 = 0; - v36 = v46; - } - } - } - if ( v36 == lpuexcptc ) - goto LABEL_32; - v37 = BYTE4(a1); - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v40 = *(char **)(a1 + 8); - if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) - { - v43 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v43; - if ( v43 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_101; - } - v37 = *v40; - } - lpuexcpt = v37; - v31 = *((_BYTE *)v68 + 16); - if ( !v31 || *((_BYTE *)v68 + 37) != lpuexcpt ) - goto LABEL_103; - } - v57 = 0; - v59 = v31; - } -LABEL_32: - v16 = v70[0]; - if ( *((_DWORD *)v70[0] - 3) ) - { - std::string::push_back((int *)v70, (std::string *)(char)v55, v45); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v68 + 2), *((_DWORD *)v68 + 3), v70) ) - *a5 = 4; - v16 = v70[0]; - if ( !v55 && !v61 && !*((_DWORD *)v70[0] - 3) ) - goto LABEL_35; - } - else if ( !v61 && !v55 ) - { - goto LABEL_35; - } - if ( v59 ) - { -LABEL_35: - v17 = a6; - *a6 = 0; - v17[1] = 0; - *a5 = 4; - goto LABEL_36; - } - if ( v53 ) - { - v26 = 0; - v27 = 0x80000000; - if ( !v56 ) - { - v26 = -1; - v27 = 0x7FFFFFFF; - } - v28 = a6; - *a6 = v26; - v29 = a5; - v28[1] = v27; - *v29 = 4; - } - else - { - if ( v56 ) - v62 = -(__int64)v62; - *(_QWORD *)a6 = v62; - } -LABEL_36: - if ( v57 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_127: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v69); - return lpuexcptb; - } - v18 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v18 - 1; - if ( v18 <= 0 ) - goto LABEL_127; - return lpuexcptb; -} -// 4A2DA9: variable 'v44' is possibly undefined -// 4A2A69: variable 'v45' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004A30C0) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // eax - char v7; // dl - char v8; // al - int v9; // eax - unsigned __int64 v10; // kr08_8 - int v11; // eax - int v12; // esi - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - _DWORD *v17; // eax - int v18; // eax - _DWORD *v20; // ecx - unsigned int v21; // eax - bool v22; // al - _BYTE *v23; // eax - char v24; // dl - char v25; // al - int v26; // edx - char v27; // al - _BYTE *v28; // eax - int v29; // esi - _DWORD *v30; // ecx - unsigned int v31; // eax - char v32; // al - char v33; // al - int v34; // edx - _DWORD *v35; // eax - char *v36; // eax - char *v37; // eax - bool v38; // al - int v39; // eax - unsigned int v40; // [esp+4h] [ebp-A4h] - char v41; // [esp+4h] [ebp-A4h] - bool v42; // [esp+13h] [ebp-95h] - size_t MaxCount; // [esp+14h] [ebp-94h] - int Buf; // [esp+18h] [ebp-90h] - void *Bufa; // [esp+18h] [ebp-90h] - char v46; // [esp+20h] [ebp-88h] - int v47; // [esp+24h] [ebp-84h] - char v48; // [esp+24h] [ebp-84h] - int v49; // [esp+28h] [ebp-80h] - int v50; // [esp+30h] [ebp-78h] - char v51; // [esp+34h] [ebp-74h] - char v52; // [esp+35h] [ebp-73h] - char v53; // [esp+35h] [ebp-73h] - bool v54; // [esp+36h] [ebp-72h] - char v55; // [esp+36h] [ebp-72h] - bool v56; // [esp+37h] [ebp-71h] - unsigned __int64 v57; // [esp+38h] [ebp-70h] - char v58; // [esp+38h] [ebp-70h] - char lpuexcpt; // [esp+40h] [ebp-68h] - char lpuexcpta; // [esp+40h] [ebp-68h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-68h] - char lpuexcptc; // [esp+40h] [ebp-68h] - struct _Unwind_Exception *v63; // [esp+48h] [ebp-60h] - int v64; // [esp+8Bh] [ebp-1Dh] BYREF - const char *v65[7]; // [esp+8Ch] [ebp-1Ch] BYREF - - v63 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v47 = v6; - if ( v6 == 64 ) - { - v49 = 8; -LABEL_4: - v54 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v54 ) - { - lpuexcpt = 0; - v50 = 0; - MaxCount = v49; - Buf = v49; - v56 = 0; - v42 = 0; - goto LABEL_14; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v49 = 10; - goto LABEL_4; - } - v54 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v54 ) - { - MaxCount = 22; - lpuexcpt = 0; - v50 = 0; - v56 = 0; - v42 = 0; - v49 = 16; - Buf = 22; - goto LABEL_14; - } - v49 = 16; -LABEL_5: - v7 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v7; - v42 = *((_BYTE *)v63 + 74) == (unsigned __int8)v7; - if ( *((_BYTE *)v63 + 74) == v7 ) - { - v8 = *((_BYTE *)v63 + 16); - } - else - { - v8 = *((_BYTE *)v63 + 16); - if ( *((_BYTE *)v63 + 75) != v7 ) - { -LABEL_42: - v50 = 0; - v56 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v63 + 37) == lpuexcpt || *((_BYTE *)v63 + 36) == lpuexcpt ) - { -LABEL_94: - v54 = 0; - goto LABEL_11; - } - if ( *((_BYTE *)v63 + 78) != lpuexcpt ) - break; - v22 = v49 == 10 || !v56; - if ( !v22 ) - goto LABEL_48; - v56 = v49 == 8 || v47 == 0; - if ( !v56 ) - { - ++v50; - v56 = v22; - goto LABEL_52; - } - v20 = (_DWORD *)a1; - v50 = 0; - v49 = 8; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 < *(_DWORD *)(a1 + 12) ) - { -LABEL_53: - HIDWORD(a1) = -1; - v20[2] = v21 + 1; - goto LABEL_54; - } -LABEL_61: - (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); - v20 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v55 = 1; - goto LABEL_55; - } -LABEL_54: - v55 = 0; - if ( v20[2] >= v20[3] && (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20) == -1 ) - { - LODWORD(a1) = 0; - v55 = 1; - } -LABEL_55: - v58 = a3 == -1; - v46 = v58 & (a2 != 0); - if ( v46 ) - { - v58 = 0; - if ( a2[2] >= a2[3] && (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1 ) - { - a2 = 0; - v58 = v46; - } - } - if ( v58 == v55 ) - { - v54 = 1; - goto LABEL_11; - } - LOBYTE(v23) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_65; - v23 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v23 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v23) = *v23; -LABEL_65: - lpuexcpt = (char)v23; - goto LABEL_66; - } - v23 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v23 != (_BYTE *)-1 ) - goto LABEL_65; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_66: - if ( !v56 ) - goto LABEL_94; - v8 = *((_BYTE *)v63 + 16); - } - if ( !v56 ) - goto LABEL_94; -LABEL_48: - if ( *((_BYTE *)v63 + 76) != lpuexcpt && *((_BYTE *)v63 + 77) != lpuexcpt ) - { - v54 = 0; - v56 = 1; - goto LABEL_11; - } - if ( v47 != 0 && v49 != 16 ) - { - v54 = 0; - v56 = 1; - MaxCount = v49; - Buf = v49; - goto LABEL_14; - } - v50 = 0; - v56 = 0; - v49 = 16; -LABEL_52: - v20 = (_DWORD *)a1; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 < *(_DWORD *)(a1 + 12) ) - goto LABEL_53; - goto LABEL_61; - } - } - if ( v8 && *((_BYTE *)v63 + 37) == v7 || *((_BYTE *)v63 + 36) == v7 ) - goto LABEL_42; - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v50 = 0; - v54 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v56 = 0; - if ( !v54 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v63 + 16); - goto LABEL_42; - } -LABEL_11: - v9 = 22; - if ( v49 != 16 ) - v9 = v49; - MaxCount = v9; - Buf = v9; -LABEL_14: - v65[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v63 + 16) ) - std::string::reserve((int *)v65, (std::string *)0x20, v40); - v10 = 0xFFFFFFFFFFFFFFFFLL / v49; - v52 = *((_BYTE *)v63 + 100); - if ( !v52 ) - { - v48 = 0; - if ( v54 ) - { - v38 = v54; - v57 = 0LL; - v54 = 0; - v52 = v38; - goto LABEL_30; - } - v57 = 0LL; -LABEL_19: - v11 = lpuexcpt; - if ( Buf <= 10 ) - { - if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_22: - v12 = lpuexcpt - 48; - goto LABEL_23; - } -LABEL_95: - v52 = 0; - goto LABEL_30; - } - v24 = lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_22; - while ( 1 ) - { - v12 = v11 - 87; - if ( (unsigned __int8)(v24 - 97) > 5u ) - { - if ( (unsigned __int8)(v24 - 65) > 5u ) - goto LABEL_95; - v12 = v11 - 55; - } -LABEL_23: - if ( v10 >= v57 ) - { - v48 |= __PAIR64__(~(v12 >> 31), ~v12) < v49 * v57; - v13 = (_DWORD *)a1; - ++v50; - v57 = v49 * v57 + v12; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - { -LABEL_25: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; - goto LABEL_26; - } - } - else - { - v13 = (_DWORD *)a1; - v48 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_25; - } - (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpta = 1; - goto LABEL_27; - } -LABEL_26: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } -LABEL_27: - v15 = a3 == -1; - v53 = v15 & (a2 != 0); - if ( v53 ) - { - v15 = 0; - if ( a2[2] >= a2[3] ) - { - v26 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v26 == -1 ) - { - a2 = 0; - v15 = v53; - } - } - } - if ( v15 == lpuexcpta ) - { - v52 = 1; - goto LABEL_30; - } - v25 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_79; - v36 = *(char **)(a1 + 8); - if ( (unsigned int)v36 < *(_DWORD *)(a1 + 12) ) - { - v25 = *v36; -LABEL_79: - lpuexcpt = v25; - goto LABEL_19; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_19; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_95; - v24 = -1; - } - } - if ( v54 ) - { - v57 = 0LL; - v52 = v54; - v48 = 0; - v54 = 0; - } - else - { - v48 = 0; - v57 = 0LL; - Bufa = (char *)v63 + 78; -LABEL_98: - v27 = *((_BYTE *)v63 + 16); - if ( !v27 || *((_BYTE *)v63 + 37) != lpuexcpt ) - { -LABEL_100: - if ( lpuexcpt == *((_BYTE *)v63 + 36) ) - goto LABEL_95; - v28 = memchr(Bufa, lpuexcpt, MaxCount); - if ( !v28 ) - goto LABEL_95; - v29 = v28 - (_BYTE *)Bufa; - if ( v28 - (_BYTE *)Bufa > 15 ) - v29 -= 6; - if ( v10 < v57 ) - { - v48 = v52; - } - else - { - v48 |= __PAIR64__(~(v29 >> 31), ~v29) < v49 * v57; - v57 = v49 * v57 + v29; - ++v50; - } - v30 = (_DWORD *)a1; - v31 = *(_DWORD *)(a1 + 8); - if ( v31 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_117; -LABEL_107: - HIDWORD(a1) = -1; - v30[2] = v31 + 1; -LABEL_108: - lpuexcptc = 0; - if ( v30[2] >= v30[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v30 + 36))(v30) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v52; - } - } - goto LABEL_109; - } - while ( v50 ) - { - std::string::push_back((int *)v65, (std::string *)(char)v50, v41); - v30 = (_DWORD *)a1; - v50 = 0; - v31 = *(_DWORD *)(a1 + 8); - if ( v31 < *(_DWORD *)(a1 + 12) ) - goto LABEL_107; -LABEL_117: - (*(void (__fastcall **)(_DWORD *))(*v30 + 40))(v30); - v30 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_108; - lpuexcptc = v52; -LABEL_109: - v32 = a3 == -1; - v51 = v32 & (a2 != 0); - if ( v51 ) - { - v32 = 0; - if ( a2[2] >= a2[3] ) - { - v34 = (*(int (**)(void))(*a2 + 36))(); - v32 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v32 = v51; - } - } - } - if ( lpuexcptc == v32 ) - goto LABEL_30; - v33 = BYTE4(a1); - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v37 = *(char **)(a1 + 8); - if ( (unsigned int)v37 >= *(_DWORD *)(a1 + 12) ) - { - v39 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v39; - if ( v39 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_98; - } - v33 = *v37; - } - lpuexcpt = v33; - v27 = *((_BYTE *)v63 + 16); - if ( !v27 || *((_BYTE *)v63 + 37) != lpuexcpt ) - goto LABEL_100; - } - v52 = 0; - v54 = v27; - } -LABEL_30: - v16 = v65[0]; - if ( *((_DWORD *)v65[0] - 3) ) - { - std::string::push_back((int *)v65, (std::string *)(char)v50, v41); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v63 + 2), *((_DWORD *)v63 + 3), v65) ) - *a5 = 4; - v16 = v65[0]; - if ( !v50 && !v56 && !*((_DWORD *)v65[0] - 3) ) - goto LABEL_33; - } - else if ( !v56 && !v50 ) - { - goto LABEL_33; - } - if ( v54 ) - { -LABEL_33: - v17 = a6; - *a6 = 0; - v17[1] = 0; - *a5 = 4; - goto LABEL_34; - } - if ( v48 ) - { - v35 = a6; - *a6 = -1; - v35[1] = -1; - *a5 = 4; - } - else - { - if ( v42 ) - v57 = -(__int64)v57; - *(_QWORD *)a6 = v57; - } -LABEL_34: - if ( v52 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_124: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v64); - return lpuexcptb; - } - v18 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v18 - 1; - if ( v18 <= 0 ) - goto LABEL_124; - return lpuexcptb; -} -// 4A3A19: variable 'v40' is possibly undefined -// 4A3701: variable 'v41' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004A3D30) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_float( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // dl - char v7; // cl - int v8; // eax - _DWORD *v9; // ecx - unsigned int v10; // eax - char v11; // al - char v12; // al - char v13; // al - int v14; // eax - char v15; // al - void *v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - char v20; // al - int v21; // eax - bool v23; // zf - int v24; // eax - int v25; // eax - char v26; // al - int v27; // eax - _DWORD *v28; // ecx - unsigned int v29; // eax - char v30; // al - char v31; // al - char v32; // dl - int v33; // edx - char v34; // cl - const char *v35; // eax - int v36; // ebx - int v37; // edx - char *v38; // eax - char *v39; // eax - int v40; // edx - char *v41; // eax - char v42; // cl - char v43; // al - char i; // dl - _DWORD *v45; // ecx - unsigned int v46; // eax - int v47; // eax - _BYTE *v48; // eax - bool v49; // al - int v50; // eax - int v51; // eax - int v52; // eax - unsigned int v53; // [esp+4h] [ebp-84h] - unsigned int v54; // [esp+4h] [ebp-84h] - unsigned int v55; // [esp+Ch] [ebp-7Ch] - int v56; // [esp+14h] [ebp-74h] - char v57; // [esp+14h] [ebp-74h] - void *Buf; // [esp+18h] [ebp-70h] - bool v59; // [esp+1Ch] [ebp-6Ch] - char v60; // [esp+1Ch] [ebp-6Ch] - int v61; // [esp+1Ch] [ebp-6Ch] - char v62; // [esp+20h] [ebp-68h] - int v63; // [esp+20h] [ebp-68h] - char v64; // [esp+20h] [ebp-68h] - int v65; // [esp+20h] [ebp-68h] - char v66; // [esp+20h] [ebp-68h] - int v67; // [esp+24h] [ebp-64h] - char v68; // [esp+28h] [ebp-60h] - int v69; // [esp+28h] [ebp-60h] - char v70; // [esp+28h] [ebp-60h] - char v71; // [esp+28h] [ebp-60h] - int v72; // [esp+28h] [ebp-60h] - char v73; // [esp+2Ch] [ebp-5Ch] - char v74; // [esp+2Ch] [ebp-5Ch] - char v75; // [esp+2Ch] [ebp-5Ch] - char v76; // [esp+2Ch] [ebp-5Ch] - std::string *v77; // [esp+2Ch] [ebp-5Ch] - struct _Unwind_Exception *v78; // [esp+30h] [ebp-58h] - unsigned __int64 v79; // [esp+30h] [ebp-58h] - char lpuexcpt; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-50h] - char lpuexcptb; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptc; // [esp+38h] [ebp-50h] - char lpuexcptd; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpte; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptf; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptg; // [esp+38h] [ebp-50h] - char lpuexcpth; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpti; // [esp+38h] [ebp-50h] - int v90; // [esp+7Bh] [ebp-Dh] BYREF - const char *v91[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v78 = std::__use_cache>::operator()((int *)(a4 + 108)); - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - lpuexcpt = 0; - v67 = 0; - v73 = 0; - goto LABEL_3; - } - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v42 = *((_BYTE *)v78 + 75); - if ( v42 == lpuexcpt ) - { - v43 = *((_BYTE *)v78 + 16); - } - else - { - v43 = *((_BYTE *)v78 + 16); - if ( *((_BYTE *)v78 + 74) != lpuexcpt ) - { -LABEL_113: - v67 = 0; - for ( i = 0; ; i = 1 ) - { - if ( v43 && *((_BYTE *)v78 + 37) == lpuexcpt - || *((_BYTE *)v78 + 36) == lpuexcpt - || *((_BYTE *)v78 + 78) != lpuexcpt ) - { - v73 = i; - goto LABEL_3; - } - if ( i ) - { - v45 = (_DWORD *)a1; - ++v67; - v46 = *(_DWORD *)(a1 + 8); - if ( v46 < *(_DWORD *)(a1 + 12) ) - goto LABEL_120; - } - else - { - v72 = *(_DWORD *)(*a6 - 12); - v77 = (std::string *)(v72 + 1); - if ( (unsigned int)(v72 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, v77, v53); - ++v67; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 48; - v47 = *a6; - *(_DWORD *)(v47 - 12) = v77; - *(_DWORD *)(v47 - 4) = 0; - *(_BYTE *)(v47 + v72 + 1) = 0; - v45 = (_DWORD *)a1; - v46 = *(_DWORD *)(a1 + 8); - if ( v46 < *(_DWORD *)(a1 + 12) ) - { -LABEL_120: - HIDWORD(a1) = -1; - v45[2] = v46 + 1; - goto LABEL_121; - } - } - (*(void (__fastcall **)(_DWORD *))(*v45 + 40))(v45); - v45 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v71 = 1; - goto LABEL_122; - } -LABEL_121: - v71 = 0; - if ( v45[2] >= v45[3] && (*(int (__fastcall **)(_DWORD *))(*v45 + 36))(v45) == -1 ) - { - LODWORD(a1) = 0; - v71 = 1; - } -LABEL_122: - v76 = a3 == -1; - v66 = v76 & (a2 != 0); - if ( v66 ) - { - v76 = 0; - if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) - { - a2 = 0; - v76 = v66; - } - } - if ( v71 == v76 ) - { - v73 = 1; - v59 = 1; - goto LABEL_3; - } - LOBYTE(v48) = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_132; - v48 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v48 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v48) = *v48; -LABEL_132: - lpuexcpt = (char)v48; - goto LABEL_133; - } - v48 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v48 != (_BYTE *)-1 ) - goto LABEL_132; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_133: - v43 = *((_BYTE *)v78 + 16); - } - } - } - if ( v43 && *((_BYTE *)v78 + 37) == lpuexcpt || *((_BYTE *)v78 + 36) == lpuexcpt ) - goto LABEL_113; - std::string::push_back(a6, (std::string *)(2 * (v42 != lpuexcpt) + 43), v53); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v49 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !v49 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v43 = *((_BYTE *)v78 + 16); - goto LABEL_113; - } - v73 = 0; - v59 = v49; - v67 = 0; -LABEL_3: - v91[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v78 + 16) ) - std::string::reserve((int *)v91, (std::string *)0x20, v54); - v68 = *((_BYTE *)v78 + 100); - if ( !v68 ) - { - if ( !v59 ) - { - v62 = 0; - v60 = 0; -LABEL_8: - v6 = lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - { -LABEL_9: - v74 = v6; - v69 = *(_DWORD *)(*a6 - 12); - lpuexcpta = (struct _Unwind_Exception *)(v69 + 1); - if ( (unsigned int)(v69 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcpta, v54); - v7 = v74; - v73 = 1; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v7; - v8 = *a6; - *(_DWORD *)(v8 - 4) = 0; - *(_DWORD *)(v8 - 12) = lpuexcpta; - *(_BYTE *)(v8 + v69 + 1) = 0; - goto LABEL_13; - } - while ( 1 ) - { - if ( *((_BYTE *)v78 + 36) == lpuexcpt && !((unsigned __int8)v60 | (unsigned __int8)v62) ) - { - std::string::push_back(a6, (std::string *)0x2E, v54); - v62 = 0; - v60 = 1; -LABEL_13: - v9 = (_DWORD *)a1; - v10 = *(_DWORD *)(a1 + 8); - if ( v10 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_29; -LABEL_14: - HIDWORD(a1) = -1; - v9[2] = v10 + 1; -LABEL_15: - lpuexcptb = 0; - if ( v9[2] >= v9[3] ) - { - lpuexcptb = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptb = 1; - } - } - goto LABEL_16; - } - if ( *((_BYTE *)v78 + 92) != lpuexcpt && *((_BYTE *)v78 + 98) != lpuexcpt ) - goto LABEL_46; - v73 &= v62 ^ 1; - if ( !v73 ) - goto LABEL_46; - std::string::push_back(a6, (std::string *)0x65, v54); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - goto LABEL_164; - v13 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v13; - if ( *((_BYTE *)v78 + 75) == v13 ) - { - v14 = 43; - } - else - { - if ( *((_BYTE *)v78 + 74) != v13 ) - { - v62 = v73; - goto LABEL_8; - } - v14 = 45; - } - std::string::push_back(a6, (std::string *)v14, v54); - v9 = (_DWORD *)a1; - v62 = v73; - v10 = *(_DWORD *)(a1 + 8); - if ( v10 < *(_DWORD *)(a1 + 12) ) - goto LABEL_14; -LABEL_29: - (*(void (__fastcall **)(_DWORD *))(*v9 + 40))(v9); - v9 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_15; - lpuexcptb = 1; -LABEL_16: - v11 = a3 == -1; - v70 = v11 & (a2 != 0); - if ( v70 ) - { - v11 = 0; - if ( a2[2] >= a2[3] ) - { - v33 = (*(int (**)(void))(*a2 + 36))(); - v11 = 0; - if ( v33 == -1 ) - { - a2 = 0; - v11 = v70; - } - } - } - if ( v11 == lpuexcptb ) - goto LABEL_46; - v12 = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v38 = *(char **)(a1 + 8); - if ( (unsigned int)v38 >= *(_DWORD *)(a1 + 12) ) - { - v50 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v50; - if ( v50 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_8; - } - v12 = *v38; - } - lpuexcpt = v12; - v6 = v12; - if ( (unsigned __int8)(v12 - 48) <= 9u ) - goto LABEL_9; - } - } -LABEL_166: - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - if ( *((_DWORD *)v91[0] - 3) ) - goto LABEL_50; - goto LABEL_53; - } - if ( v59 ) - goto LABEL_166; - v62 = 0; - v60 = 0; - v15 = *((_BYTE *)v78 + 16); - Buf = (char *)v78 + 78; - while ( 1 ) - { - while ( 1 ) - { - if ( v15 && *((_BYTE *)v78 + 37) == lpuexcpt ) - { - v60 |= v62; - if ( v60 ) - { - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - v24 = *((_DWORD *)v91[0] - 3); -LABEL_160: - if ( v24 ) - goto LABEL_51; - goto LABEL_53; - } - if ( !v67 ) - { - std::string::_M_mutate((char **)a6, 0, *(_DWORD *)(*a6 - 12), 0, v55); - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - if ( *((_DWORD *)v91[0] - 3) ) - goto LABEL_50; - goto LABEL_53; - } - v65 = *((_DWORD *)v91[0] - 3); - lpuexcpti = (struct _Unwind_Exception *)(v65 + 1); - if ( (unsigned int)(v65 + 1) > *((_DWORD *)v91[0] - 2) || *((int *)v91[0] - 1) > 0 ) - std::string::reserve((int *)v91, lpuexcpti, v54); - v34 = v67; - v67 = 0; - v91[0][*((_DWORD *)v91[0] - 3)] = v34; - v35 = v91[0]; - *((_DWORD *)v91[0] - 3) = lpuexcpti; - v36 = v65; - *((_DWORD *)v35 - 1) = 0; - v62 = 0; - v35[v36 + 1] = 0; -LABEL_41: - v18 = (_DWORD *)a1; - v19 = *(_DWORD *)(a1 + 8); - if ( v19 < *(_DWORD *)(a1 + 12) ) - goto LABEL_42; - goto LABEL_62; - } - if ( *((_BYTE *)v78 + 36) == lpuexcpt ) - break; - v16 = memchr(Buf, lpuexcpt, 0xAu); - if ( v16 ) - { - v75 = (_BYTE)v16 - (_BYTE)Buf + 48; - v56 = *(_DWORD *)(*a6 - 12); - lpuexcptc = (struct _Unwind_Exception *)(v56 + 1); - if ( (unsigned int)(v56 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptc, v54); - ++v67; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v75; - v17 = *a6; - *(_DWORD *)(v17 - 12) = lpuexcptc; - *(_DWORD *)(v17 - 4) = 0; - *(_BYTE *)(v17 + v56 + 1) = 0; - v73 = v68; - goto LABEL_41; - } - if ( *((_BYTE *)v78 + 92) != lpuexcpt && *((_BYTE *)v78 + 98) != lpuexcpt ) - goto LABEL_46; - v23 = (((unsigned __int8)v62 ^ 1) & (unsigned __int8)v73) == 0; - v73 &= v62 ^ 1; - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - v21 = *((_DWORD *)v91[0] - 3); - if ( v23 ) - goto LABEL_47; - if ( v21 && !v60 ) - std::string::push_back((int *)v91, (std::string *)(char)v67, v54); - v63 = *(_DWORD *)(*a6 - 12); - lpuexcptg = (struct _Unwind_Exception *)(v63 + 1); - if ( (unsigned int)(v63 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptg, v54); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 101; - v27 = *a6; - *(_DWORD *)(v27 - 12) = lpuexcptg; - *(_DWORD *)(v27 - 4) = 0; - *(_BYTE *)(v27 + v63 + 1) = 0; - v28 = (_DWORD *)a1; - v29 = *(_DWORD *)(a1 + 8); - if ( v29 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v28 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpth = v73; - goto LABEL_79; - } - } - else - { - HIDWORD(a1) = -1; - *(_DWORD *)(a1 + 8) = v29 + 1; - } - lpuexcpth = 0; - if ( v28[2] >= v28[3] ) - { - lpuexcpth = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v28 + 36))(v28) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpth = v73; - } - } -LABEL_79: - v30 = a3 == -1; - v64 = v30 & (a2 != 0); - if ( v64 ) - { - v30 = 0; - if ( a2[2] >= a2[3] ) - { - v40 = (*(int (**)(void))(*a2 + 36))(); - v30 = 0; - if ( v40 == -1 ) - { - a2 = 0; - v30 = v64; - } - } - } - if ( v30 == lpuexcpth ) - { -LABEL_164: - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - if ( *((_DWORD *)v91[0] - 3) ) - goto LABEL_51; - goto LABEL_53; - } - v31 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_82; - v41 = *(char **)(a1 + 8); - if ( (unsigned int)v41 < *(_DWORD *)(a1 + 12) ) - { - v31 = *v41; -LABEL_82: - lpuexcpt = v31; - goto LABEL_83; - } - v52 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v52; - if ( v52 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } -LABEL_83: - v32 = *((_BYTE *)v78 + 75); - v15 = *((_BYTE *)v78 + 16); - if ( v32 != lpuexcpt && *((_BYTE *)v78 + 74) != lpuexcpt ) - goto LABEL_85; - if ( v15 && *((_BYTE *)v78 + 37) == lpuexcpt ) - { - v62 = *((_BYTE *)v78 + 16); - v73 = v62; - } - else - { - if ( *((_BYTE *)v78 + 36) != lpuexcpt ) - { - std::string::push_back(a6, (std::string *)(2 * (v32 != lpuexcpt) + 43), v54); - v62 = v73; - goto LABEL_41; - } -LABEL_85: - v62 = v73; - } - } - v23 = ((unsigned __int8)v60 | (unsigned __int8)v62) == 0; - v62 |= v60; - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - v24 = *((_DWORD *)v91[0] - 3); - if ( !v23 ) - goto LABEL_160; - if ( v24 ) - std::string::push_back((int *)v91, (std::string *)(char)v67, v54); - v61 = *(_DWORD *)(*a6 - 12); - lpuexcptf = (struct _Unwind_Exception *)(v61 + 1); - if ( (unsigned int)(v61 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptf, v54); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 46; - v25 = *a6; - *(_DWORD *)(v25 - 12) = lpuexcptf; - *(_DWORD *)(v25 - 4) = 0; - *(_BYTE *)(v25 + v61 + 1) = 0; - v18 = (_DWORD *)a1; - v60 = v68; - v19 = *(_DWORD *)(a1 + 8); - if ( v19 < *(_DWORD *)(a1 + 12) ) - { -LABEL_42: - HIDWORD(a1) = -1; - v18[2] = v19 + 1; - goto LABEL_43; - } -LABEL_62: - (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); - v18 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptd = v68; - goto LABEL_44; - } -LABEL_43: - lpuexcptd = 0; - if ( v18[2] >= v18[3] ) - { - lpuexcptd = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptd = v68; - } - } -LABEL_44: - v20 = a3 == -1; - v57 = v20 & (a2 != 0); - if ( v57 ) - { - v20 = 0; - if ( a2[2] >= a2[3] ) - { - v37 = (*(int (**)(void))(*a2 + 36))(); - v20 = 0; - if ( v37 == -1 ) - { - a2 = 0; - v20 = v57; - } - } - } - if ( lpuexcptd == v20 ) - break; - v26 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_65; - v39 = *(char **)(a1 + 8); - if ( (unsigned int)v39 < *(_DWORD *)(a1 + 12) ) - { - v26 = *v39; -LABEL_65: - lpuexcpt = v26; - goto LABEL_66; - } - v51 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v51; - if ( v51 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } -LABEL_66: - v15 = *((_BYTE *)v78 + 16); - } -LABEL_46: - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - v21 = *((_DWORD *)v91[0] - 3); -LABEL_47: - if ( !v21 ) - goto LABEL_53; - if ( v60 || v62 ) - goto LABEL_51; -LABEL_50: - std::string::push_back((int *)v91, (std::string *)(char)v67, v54); - lpuexcpte = (struct _Unwind_Exception *)v91[0]; -LABEL_51: - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v78 + 2), *((_DWORD *)v78 + 3), v91) ) - *a5 = 4; -LABEL_53: - v79 = a1; - std::string::_Rep::_M_dispose((volatile signed __int32 *)lpuexcpte - 3, (int)&v90); - return v79; -} -// 4A4623: variable 'v54' is possibly undefined -// 4A4735: variable 'v53' is possibly undefined -// 4A4B05: variable 'v55' is possibly undefined - -//----- (004A4B70) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - unsigned __int64 (__stdcall *v7)(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *); // eax - int v8; // esi - int result; // eax - int v10[8]; // [esp+3Ch] [ebp-20h] BYREF - - v7 = *(unsigned __int64 (__stdcall **)(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *))(*(_DWORD *)this + 48); - if ( v7 != std::num_get>::do_get ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD *, int, int, _DWORD *, _DWORD *))v7)( - a2, - HIDWORD(a2), - a3, - a4, - a5, - a6, - a7); - v8 = *(_DWORD *)(a5 + 12); - *(_DWORD *)(a5 + 12) = v8 & 0xFFFFFFB5 | 8; - result = std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, v10); - *(_DWORD *)(a5 + 12) = v8; - *a7 = v10[0]; - return result; -} -// 4A4B70: using guessed type int var_20[8]; - -//----- (004A4C20) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (004A4C30) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); -} - -//----- (004A4C40) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); -} - -//----- (004A4C50) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); -} - -//----- (004A4C60) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4A5A90: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004A4CE0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4A5AA0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004A4D60) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4A5AB0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004A4DE0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _WORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4A5AC0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004A4E60) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4A5AD0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004A4EE0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4A5AE0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004A4F60) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // esi - unsigned __int64 result; // rax - int v8[8]; // [esp+2Ch] [ebp-20h] BYREF - - v6 = *(_DWORD *)(a4 + 12); - *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; - result = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, v8); - *(_DWORD *)(a4 + 12) = v6; - *a6 = v8[0]; - return result; -} -// 4A4F60: using guessed type int var_20[8]; - -//----- (004A4FD0) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - int *a5, - _BYTE *a6) -{ - _BYTE *v6; // edi - struct _Unwind_Exception *v8; // eax - int v9; // ecx - struct _Unwind_Exception *v10; // edi - int v11; // eax - bool v12; // dl - int v13; // eax - struct _Unwind_Exception *v14; // ebp - unsigned int v15; // edi - unsigned int v16; // eax - bool v17; // cl - char v18; // si - char v19; // bl - char v20; // bl - _BYTE *v21; // eax - int v22; // eax - int v23; // eax - unsigned int v24; // eax - bool v25; // bl - struct _Unwind_Exception *v26; // edi - unsigned int v27; // ebp - int v28; // eax - unsigned int v29; // eax - bool v30; // [esp+2Bh] [ebp-31h] - bool v31; // [esp+2Ch] [ebp-30h] - char v32; // [esp+2Dh] [ebp-2Fh] - char v33; // [esp+2Eh] [ebp-2Eh] - char v34; // [esp+2Eh] [ebp-2Eh] - bool v35; // [esp+2Eh] [ebp-2Eh] - bool v36; // [esp+2Eh] [ebp-2Eh] - bool v37; // [esp+2Fh] [ebp-2Dh] - unsigned int v38[8]; // [esp+3Ch] [ebp-20h] BYREF - - if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) - { - v38[0] = -1; - a1 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v38); - if ( v38[0] > 1 ) - { - *a6 = 1; - *a5 = 4; - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - } - else - { - v6 = a6; - *a6 = v38[0]; - *v6 &= 1u; - } - return a1; - } - v8 = std::__use_cache>::operator()((int *)(a4 + 108)); - v9 = *((_DWORD *)v8 + 8); - v10 = v8; - v11 = *((_DWORD *)v8 + 6); - v12 = v9 == 0; - v31 = v11 == 0; - if ( !(v11 | v9) ) - goto LABEL_41; - v32 = 1; - v13 = HIDWORD(a1); - v30 = 1; - v14 = v10; - v15 = 0; - while ( 1 ) - { - v18 = v13 == -1; - v19 = ((_DWORD)a1 != 0) & v18; - if ( v19 ) - { - v18 = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v35 = v12; - v23 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); - v12 = v35; - if ( v23 == -1 ) - { - LODWORD(a1) = 0; - v18 = v19; - } - } - } - v20 = a3 == -1; - v34 = v20 & (a2 != 0); - if ( v34 ) - { - v20 = 0; - if ( a2[2] >= a2[3] ) - { - v37 = v12; - v22 = (*(int (**)(void))(*a2 + 36))(); - v12 = v37; - if ( v22 == -1 ) - { - a2 = 0; - v20 = v34; - } - } - } - if ( v20 == v18 ) - { - v33 = 1; - v24 = v15; - v25 = v30; - v26 = v14; - v27 = v24; -LABEL_45: - if ( v25 && *((_DWORD *)v26 + 8) == v27 && v27 ) - { - *a6 = 0; - if ( v32 && *((_DWORD *)v26 + 6) == v27 ) - goto LABEL_42; - } - else - { - if ( !v32 || *((_DWORD *)v26 + 6) != v27 || !v27 ) - { - *a6 = 0; - if ( !v33 ) - goto LABEL_42; - *a5 = 6; - return a1; - } - *a6 = 1; - } - v28 = 2 * (v33 != 0); -LABEL_62: - *a5 = v28; - return a1; - } - LOBYTE(v21) = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v21 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v21 >= *(_DWORD *)(a1 + 12) ) - { - v36 = v12; - v21 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - v12 = v36; - if ( v21 == (_BYTE *)-1 ) - LODWORD(a1) = 0; - } - else - { - LOBYTE(v21) = *v21; - } - } - if ( !v12 ) - v30 = *(_BYTE *)(*((_DWORD *)v14 + 7) + v15) == (unsigned __int8)v21; - if ( !v30 ) - { - if ( v31 ) - { - if ( v32 ) - { - if ( *((_DWORD *)v14 + 6) == v15 && v15 ) - { - *a6 = 1; - v28 = 0; - goto LABEL_62; - } - goto LABEL_41; - } -LABEL_43: - *a6 = 0; - *a5 = 4; - return a1; - } -LABEL_8: - v32 = *(_BYTE *)(*((_DWORD *)v14 + 5) + v15) == (unsigned __int8)v21; - goto LABEL_9; - } - if ( !v31 ) - goto LABEL_8; -LABEL_9: - v33 = v12 & (v32 ^ 1); - if ( v33 ) - break; - if ( !(v30 | (unsigned __int8)v32) ) - goto LABEL_43; - ++v15; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v16 + 1; - HIDWORD(a1) = -1; - if ( !v30 ) - { - v12 = v32; -LABEL_29: - v31 = *((_DWORD *)v14 + 6) <= v15; - v32 |= v30; - v17 = v12 && v31; - goto LABEL_16; - } - v12 = *((_DWORD *)v14 + 8) <= v15; - if ( v32 ) - goto LABEL_29; - v17 = *((_DWORD *)v14 + 8) <= v15; - v31 = v30; -LABEL_16: - v13 = -1; - if ( v17 ) - { - v29 = v15; - v25 = v30; - v26 = v14; - v27 = v29; - goto LABEL_45; - } - } - if ( !v30 ) - goto LABEL_43; - if ( *((_DWORD *)v14 + 8) == v15 && v15 ) - { - *a6 = 0; - v28 = 0; - goto LABEL_62; - } -LABEL_41: - *a6 = 0; -LABEL_42: - *a5 = 4; - return a1; -} -// 4A4FD0: using guessed type unsigned int var_20[8]; - -//----- (004A5430) -------------------------------------------------------- -int __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - double *a6) -{ - char v6; // al - int v7; // ecx - int v8; // eax - int v10; // eax - char v11; // dl - bool v12; // zf - int v13; // eax - unsigned int v14; // [esp+4h] [ebp-84h] - char v15; // [esp+23h] [ebp-65h] - int v16; // [esp+24h] [ebp-64h] - char v17; // [esp+30h] [ebp-58h] - unsigned __int64 v18; // [esp+34h] [ebp-54h] - int v19; // [esp+78h] [ebp-10h] BYREF - int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF - - v19 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v19, (std::string *)0x20, v14); - v18 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v19); - v16 = v18; - v20[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((unsigned __int8 *)v19, a6, a5); - v17 = HIDWORD(v18) == -1; - v15 = v17 & ((_DWORD)v18 != 0); - if ( v15 ) - { - v17 = 0; - if ( *(_DWORD *)(v18 + 8) >= *(_DWORD *)(v18 + 12) ) - { - v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v18 + 36))(v18); - v11 = v15; - v12 = v10 == -1; - if ( v10 != -1 ) - v11 = 0; - v13 = 0; - if ( !v12 ) - v13 = v18; - v17 = v11; - v16 = v13; - } - } - v6 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v6 = 0; - if ( a2[2] >= a2[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; - } - } - if ( v6 == v17 ) - *a5 |= 2u; - v7 = v19; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v19 - 4), 0xFFFFFFFF) > 0 ) - return v16; -LABEL_10: - std::string::_Rep::_M_destroy((void *)(v7 - 12), (int)v20); - return v16; - } - v8 = *(_DWORD *)(v19 - 4); - *(_DWORD *)(v19 - 4) = v8 - 1; - if ( v8 <= 0 ) - goto LABEL_10; - return v16; -} -// 4A54B0: variable 'v14' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 4A5430: using guessed type int var_C[3]; - -//----- (004A5650) -------------------------------------------------------- -int __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - long double *a6) -{ - char v6; // al - char *v7; // ecx - int v8; // eax - int v10; // eax - char v11; // dl - bool v12; // zf - int v13; // eax - unsigned int v14; // [esp+4h] [ebp-84h] - char v15; // [esp+23h] [ebp-65h] - int v16; // [esp+24h] [ebp-64h] - char v17; // [esp+30h] [ebp-58h] - unsigned __int64 v18; // [esp+34h] [ebp-54h] - char *String; // [esp+78h] [ebp-10h] BYREF - int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF - - String = (char *)std::string::_S_construct(0, 0); - std::string::reserve((int *)&String, (std::string *)0x20, v14); - v18 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (int *)&String); - v16 = v18; - v20[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v(String, a6, a5); - v17 = HIDWORD(v18) == -1; - v15 = v17 & ((_DWORD)v18 != 0); - if ( v15 ) - { - v17 = 0; - if ( *(_DWORD *)(v18 + 8) >= *(_DWORD *)(v18 + 12) ) - { - v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v18 + 36))(v18); - v11 = v15; - v12 = v10 == -1; - if ( v10 != -1 ) - v11 = 0; - v13 = 0; - if ( !v12 ) - v13 = v18; - v17 = v11; - v16 = v13; - } - } - v6 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v6 = 0; - if ( a2[2] >= a2[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; - } - } - if ( v6 == v17 ) - *a5 |= 2u; - v7 = String; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) - return v16; -LABEL_10: - std::string::_Rep::_M_destroy(v7 - 12, (int)v20); - return v16; - } - v8 = *((_DWORD *)String - 1); - *((_DWORD *)String - 1) = v8 - 1; - if ( v8 <= 0 ) - goto LABEL_10; - return v16; -} -// 4A56D0: variable 'v14' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 4A5650: using guessed type int var_C[3]; - -//----- (004A5870) -------------------------------------------------------- -int __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - float *a6) -{ - char v6; // al - int v7; // ecx - int v8; // eax - int v10; // eax - char v11; // dl - bool v12; // zf - int v13; // eax - unsigned int v14; // [esp+4h] [ebp-84h] - char v15; // [esp+23h] [ebp-65h] - int v16; // [esp+24h] [ebp-64h] - char v17; // [esp+30h] [ebp-58h] - unsigned __int64 v18; // [esp+34h] [ebp-54h] - int v19; // [esp+78h] [ebp-10h] BYREF - int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF - - v19 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v19, (std::string *)0x20, v14); - v18 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v19); - v16 = v18; - v20[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((unsigned __int8 *)v19, a6, a5); - v17 = HIDWORD(v18) == -1; - v15 = v17 & ((_DWORD)v18 != 0); - if ( v15 ) - { - v17 = 0; - if ( *(_DWORD *)(v18 + 8) >= *(_DWORD *)(v18 + 12) ) - { - v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v18 + 36))(v18); - v11 = v15; - v12 = v10 == -1; - if ( v10 != -1 ) - v11 = 0; - v13 = 0; - if ( !v12 ) - v13 = v18; - v17 = v11; - v16 = v13; - } - } - v6 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v6 = 0; - if ( a2[2] >= a2[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; - } - } - if ( v6 == v17 ) - *a5 |= 2u; - v7 = v19; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v19 - 4), 0xFFFFFFFF) > 0 ) - return v16; -LABEL_10: - std::string::_Rep::_M_destroy((void *)(v7 - 12), (int)v20); - return v16; - } - v8 = *(_DWORD *)(v19 - 4); - *(_DWORD *)(v19 - 4) = v8 - 1; - if ( v8 <= 0 ) - goto LABEL_10; - return v16; -} -// 4A58F0: variable 'v14' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 4A5870: using guessed type int var_C[3]; - -//----- (004A5AF0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // ebx - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - unsigned int v25; // eax - unsigned int v26; // edx - __int16 *v27; // eax - __int16 v28; // ax - bool v29; // zf - _DWORD *v30; // eax - int *v31; // eax - bool v33; // al - unsigned __int16 *v34; // eax - _DWORD *v35; // eax - _WORD *v36; // eax - unsigned int v37; // edx - unsigned int v38; // edx - int v39; // eax - bool v40; // cc - int v41; // edx - int v42; // eax - _DWORD *v43; // ecx - unsigned int v44; // eax - unsigned int v45; // edx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - unsigned __int16 *v50; // eax - _DWORD *v51; // eax - __int16 *v52; // eax - __int16 v53; // ax - bool v54; // zf - _DWORD *v55; // eax - bool v56; // bl - unsigned __int16 *v57; // eax - _DWORD *v58; // eax - size_t v59; // edx - size_t v60; // ecx - __int16 *v61; // eax - __int16 v62; // ax - bool v63; // zf - _DWORD *v64; // eax - bool v65; // dl - __int16 *v66; // eax - __int16 v67; // ax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // cl - int v71; // edx - unsigned __int16 *v72; // eax - _DWORD *v73; // eax - _DWORD *v74; // eax - __int16 *v75; // eax - __int16 v76; // ax - bool v77; // zf - _DWORD *v78; // eax - bool v79; // bl - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // eax - bool v84; // dl - unsigned __int16 *v85; // eax - _DWORD *v86; // edx - __int16 *v87; // eax - __int16 v88; // ax - bool v89; // zf - _DWORD *v90; // eax - bool v91; // bl - char v92; // bl - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+14h] [ebp-A4h] - unsigned int v95; // [esp+1Ch] [ebp-9Ch] - int v96; // [esp+20h] [ebp-98h] - unsigned int v97; // [esp+24h] [ebp-94h] - bool v98; // [esp+2Dh] [ebp-8Bh] - char v99; // [esp+2Eh] [ebp-8Ah] - int v100; // [esp+30h] [ebp-88h] - char v101; // [esp+30h] [ebp-88h] - _DWORD *v102; // [esp+34h] [ebp-84h] - char v103; // [esp+38h] [ebp-80h] - int v104; // [esp+38h] [ebp-80h] - size_t v105; // [esp+38h] [ebp-80h] - char v106; // [esp+3Dh] [ebp-7Bh] - char v107; // [esp+3Eh] [ebp-7Ah] - char v108; // [esp+3Eh] [ebp-7Ah] - char v109; // [esp+3Eh] [ebp-7Ah] - char v110; // [esp+3Eh] [ebp-7Ah] - char v111; // [esp+40h] [ebp-78h] - char v112; // [esp+40h] [ebp-78h] - unsigned int v113; // [esp+40h] [ebp-78h] - bool v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - int *v118; // [esp+4Ch] [ebp-6Ch] - unsigned int v119; // [esp+4Ch] [ebp-6Ch] - int v120; // [esp+50h] [ebp-68h] - _DWORD *v121; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - unsigned __int16 lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v129; // [esp+9Ch] [ebp-1Ch] - int v130[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v102 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v120 = *v118; - if ( !*v118 ) - { - v74 = operator new(0xA8u); - v74[1] = 0; - *v74 = &off_5605C0; - v74[2] = 0; - v74[3] = 0; - *((_BYTE *)v74 + 16) = 0; - v74[5] = 0; - v74[6] = 0; - v74[7] = 0; - v74[8] = 0; - v74[9] = 0; - *((_BYTE *)v74 + 164) = 0; - v94 = (std::locale::_Impl *)v74; - std::__numpunct_cache::_M_cache((int)v74, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v120 = *v118; - } - v119 = 8; - v100 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v100 != 64 ) - { - v7 = 10; - if ( v100 == 8 ) - v7 = 16; - v119 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v75 = (__int16 *)a1[2]; - if ( (unsigned int)v75 >= a1[3] ) - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v76 = *v75; - v77 = v76 == -1; - v78 = 0; - if ( !v77 ) - v78 = a1; - v79 = lpuexcpta && a1 != 0; - v121 = v78; - if ( !v77 ) - v79 = 0; - v103 = v79; - } - else - { - v103 = a2 == 0xFFFF; - } - v114 = a4 == -1; - if ( v114 && a3 != 0 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - if ( !v82 ) - v83 = a3; - v84 = v114 && a3 != 0; - v102 = v83; - if ( !v82 ) - v84 = 0; - v115 = v84; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v103 ) - { - if ( v121 && a2 == 0xFFFF ) - { - v72 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v72 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v72; - v73 = 0; - if ( lpuexcptb != 0xFFFF ) - v73 = v121; - v121 = v73; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v120 + 16); - v98 = *(_WORD *)(v120 + 112) == lpuexcptb; - if ( *(_WORD *)(v120 + 112) == lpuexcptb || *(_WORD *)(v120 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v120 + 38) != lpuexcptb) && *(_WORD *)(v120 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = (__int16 *)v121[2]; - v10 = v121[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v121[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v121; - v111 = v13; - v121 = v14; - if ( v114 && v102 != 0 ) - { - v87 = (__int16 *)v102[2]; - if ( (unsigned int)v87 >= v102[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v88 = *v87; - v89 = v88 == -1; - v90 = 0; - if ( !v89 ) - v90 = v102; - v91 = v114 && v102 != 0; - v102 = v90; - if ( !v89 ) - v91 = 0; - v116 = v91; - } - else - { - v116 = a4 == -1; - } - if ( v111 == v116 ) - { - v106 = 1; - v104 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v121 ) - { - v85 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v85 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v85; - v86 = 0; - if ( lpuexcptb != 0xFFFF ) - v86 = v121; - v8 = *(_BYTE *)(v120 + 16); - v121 = v86; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v120 + 16); - } - } - } - else - { - v98 = 0; - } - v104 = 0; - v117 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v120 + 38) == lpuexcptb || *(_WORD *)(v120 + 36) == lpuexcptb ) - { -LABEL_178: - v106 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v120 + 120) != lpuexcptb ) - break; - v33 = v119 == 10 || !v117; - if ( !v33 ) - goto LABEL_36; - v117 = v100 == 0 || v119 == 8; - if ( !v117 ) - { - ++v104; - v117 = v33; - goto LABEL_40; - } - v15 = v121; - v104 = 0; - v119 = 8; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( v17 > (unsigned int)v18 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v18 = (__int16 *)v121[2]; - if ( v121[3] > (unsigned int)v18 ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v121; - v107 = v20; - v121 = v21; - if ( v114 && v102 != 0 ) - { - v52 = (__int16 *)v102[2]; - if ( (unsigned int)v52 >= v102[3] ) - v53 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v53 = *v52; - v54 = v53 == -1; - v55 = 0; - if ( !v54 ) - v55 = v102; - v56 = v114 && v102 != 0; - v102 = v55; - if ( !v54 ) - v56 = 0; - v112 = v56; - } - else - { - v112 = a4 == -1; - } - if ( v112 == v107 ) - { - v106 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v121 ) - { - v34 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v34 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v34; - v35 = 0; - if ( lpuexcptb != 0xFFFF ) - v35 = v121; - v121 = v35; - } - if ( !v117 ) - { - v106 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v120 + 16); - } - if ( !v117 ) - goto LABEL_178; -LABEL_36: - if ( *(_WORD *)(v120 + 116) != lpuexcptb && *(_WORD *)(v120 + 118) != lpuexcptb ) - { - v106 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v100 != 0 && v119 != 16 ) - { - v106 = 0; - v95 = v119; - v96 = v119; - v117 = 1; - goto LABEL_52; - } - v104 = 0; - v117 = 0; - v119 = 16; -LABEL_40: - v15 = v121; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v98 = 0; - lpuexcptb = 0; - v106 = 1; - v104 = 0; - v117 = 0; -LABEL_49: - v22 = 22; - if ( v119 != 16 ) - v22 = v119; - v95 = v22; - v96 = v22; -LABEL_52: - v129 = 0; - Block = v130; - LOBYTE(v130[0]) = 0; - if ( *(_BYTE *)(v120 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0xFFFFFFFF / v119; - v99 = *(_BYTE *)(v120 + 164); - if ( !v99 ) - { - if ( !v106 ) - { - v101 = 0; - v113 = 0; - while ( v96 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v23 = lpuexcptb - 55; - goto LABEL_61; - } - v23 = lpuexcptb - 87; - if ( v97 < v113 ) - { -LABEL_62: - v24 = v121; - v101 = 1; - v25 = v121[2]; - v26 = v121[3]; - if ( v25 < v26 ) - goto LABEL_63; - goto LABEL_118; - } -LABEL_117: - v101 |= ~v23 < v119 * v113; - v24 = v121; - v113 = v119 * v113 + v23; - v26 = v121[3]; - v25 = v121[2]; - ++v104; - if ( v25 < v26 ) - { -LABEL_63: - v27 = (__int16 *)(v25 + 2); - v24[2] = v27; - goto LABEL_64; - } -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v27 = (__int16 *)v121[2]; - v26 = v121[3]; -LABEL_64: - if ( v26 <= (unsigned int)v27 ) - v28 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v28 = *v27; - v29 = v28 == -1; - v30 = 0; - if ( !v29 ) - v30 = v121; - v108 = v29; - v121 = v30; - if ( v114 && v102 != 0 ) - { - v66 = (__int16 *)v102[2]; - if ( (unsigned int)v66 >= v102[3] ) - v67 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v67 = *v66; - v68 = v67 == -1; - v69 = 0; - if ( !v68 ) - v69 = v102; - v70 = v114 && v102 != 0; - v102 = v69; - if ( !v68 ) - v70 = 0; - lpuexcptc = v70; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v108 == lpuexcptc ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v57 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v57 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v57; - v58 = 0; - if ( lpuexcptb != 0xFFFF ) - v58 = v121; - v121 = v58; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v96 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v23 = lpuexcptb - 48; -LABEL_61: - if ( v97 < v113 ) - goto LABEL_62; - goto LABEL_117; - } - v92 = v106; - v101 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v92; - v113 = 0; - goto LABEL_72; - } - if ( v106 ) - { - v113 = 0; - v101 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v106; - v106 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v117 || v104 ) - goto LABEL_111; - goto LABEL_75; - } - v101 = 0; - v113 = 0; - while ( 1 ) - { - if ( *(_BYTE *)(v120 + 16) && *(_WORD *)(v120 + 38) == lpuexcptb ) - { - v31 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v129; - if ( !v104 ) - { - v99 = 0; - v106 = *(_BYTE *)(v120 + 16); - goto LABEL_72; - } - v110 = v104; - v59 = 15; - if ( Block != v130 ) - v59 = v130[0]; - v105 = v129 + 1; - if ( v129 + 1 > v59 ) - { - std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); - v31 = (int *)Block; - } - v60 = v105; - v104 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v110; - v129 = v60; - *((_BYTE *)Block + v60) = 0; -LABEL_123: - v43 = v121; - v44 = v121[2]; - v45 = v121[3]; - if ( v44 < v45 ) - goto LABEL_124; - goto LABEL_134; - } - if ( lpuexcptb == *(_WORD *)(v120 + 36) ) - break; - v36 = (_WORD *)(v120 + 120); - v37 = v95; - while ( *v36 != lpuexcptb ) - { - ++v36; - if ( !--v37 ) - goto LABEL_102; - } - v39 = (int)v36 - v120 - 120; - v40 = v39 <= 30; - v41 = (v39 >> 1) - 6; - v42 = v39 >> 1; - if ( !v40 ) - v42 = v41; - if ( v97 < v113 ) - { - v101 = v99; - goto LABEL_123; - } - v101 |= ~v42 < v119 * v113; - v43 = v121; - v113 = v119 * v113 + v42; - v45 = v121[3]; - v44 = v121[2]; - ++v104; - if ( v44 < v45 ) - { -LABEL_124: - v46 = (__int16 *)(v44 + 2); - v43[2] = v46; - goto LABEL_125; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v46 = (__int16 *)v121[2]; - v45 = v121[3]; -LABEL_125: - if ( v45 <= (unsigned int)v46 ) - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v47 = *v46; - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = v121; - v109 = v48; - v121 = v49; - if ( v114 && v102 != 0 ) - { - v61 = (__int16 *)v102[2]; - if ( (unsigned int)v61 >= v102[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v62 = *v61; - v63 = v62 == -1; - v64 = 0; - if ( !v63 ) - v64 = v102; - v65 = v114 && v102 != 0; - v102 = v64; - if ( !v63 ) - v65 = 0; - lpuexcpte = v65; - } - else - { - lpuexcpte = a4 == -1; - } - if ( v109 == lpuexcpte ) - { - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v50 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v50 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v50; - v51 = 0; - if ( lpuexcptb != 0xFFFF ) - v51 = v121; - v121 = v51; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - if ( !v129 ) - goto LABEL_73; -LABEL_103: - v38 = 15; - if ( v31 != v130 ) - v38 = v130[0]; - if ( (unsigned int)lpuexcptd + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v104; - v129 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v120 + 8), *(_DWORD *)(v120 + 12), (int)&Block) ) - *a6 = 4; - v31 = (int *)Block; - if ( !v117 && !(v129 | v104) ) - { -LABEL_75: - *a7 = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v106 ) - goto LABEL_75; - if ( v101 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v71 = -v113; - if ( !v98 ) - v71 = v113; - *a7 = v71; - } -LABEL_76: - if ( v99 ) - *a6 |= 2u; - if ( v31 != v130 ) - operator delete(v31); - return v121; -} -// 4A66D0: variable 'v93' is possibly undefined -// 53F72C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004A6AE0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // ebx - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - unsigned int v25; // eax - unsigned int v26; // edx - __int16 *v27; // eax - __int16 v28; // ax - bool v29; // zf - _DWORD *v30; // eax - int *v31; // eax - bool v33; // al - unsigned __int16 *v34; // eax - _DWORD *v35; // eax - _WORD *v36; // eax - unsigned int v37; // edx - unsigned int v38; // edx - int v39; // eax - bool v40; // cc - int v41; // edx - int v42; // eax - _DWORD *v43; // ecx - unsigned int v44; // eax - unsigned int v45; // edx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - unsigned __int16 *v50; // eax - _DWORD *v51; // eax - __int16 *v52; // eax - __int16 v53; // ax - bool v54; // zf - _DWORD *v55; // eax - bool v56; // bl - unsigned __int16 *v57; // eax - _DWORD *v58; // eax - size_t v59; // edx - size_t v60; // edx - __int16 *v61; // eax - __int16 v62; // ax - bool v63; // zf - _DWORD *v64; // eax - bool v65; // bl - __int16 *v66; // eax - __int16 v67; // ax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // bl - int v71; // edx - unsigned __int16 *v72; // eax - _DWORD *v73; // eax - _DWORD *v74; // eax - __int16 *v75; // eax - __int16 v76; // ax - bool v77; // zf - _DWORD *v78; // eax - bool v79; // cl - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // eax - bool v84; // cl - unsigned __int16 *v85; // eax - _DWORD *v86; // edx - __int16 *v87; // eax - __int16 v88; // ax - bool v89; // zf - _DWORD *v90; // eax - bool v91; // dl - char v92; // bl - unsigned int v93; // [esp+8h] [ebp-C0h] - std::locale::_Impl *v94; // [esp+1Ch] [ebp-ACh] - bool v95; // [esp+20h] [ebp-A8h] - unsigned int v96; // [esp+28h] [ebp-A0h] - unsigned int v97; // [esp+2Ch] [ebp-9Ch] - int v98; // [esp+30h] [ebp-98h] - unsigned int v99; // [esp+34h] [ebp-94h] - char v100; // [esp+3Eh] [ebp-8Ah] - int v101; // [esp+40h] [ebp-88h] - char v102; // [esp+40h] [ebp-88h] - _DWORD *v103; // [esp+44h] [ebp-84h] - char v104; // [esp+48h] [ebp-80h] - int v105; // [esp+48h] [ebp-80h] - size_t v106; // [esp+48h] [ebp-80h] - char v107; // [esp+4Dh] [ebp-7Bh] - char v108; // [esp+4Eh] [ebp-7Ah] - char v109; // [esp+4Eh] [ebp-7Ah] - char v110; // [esp+4Eh] [ebp-7Ah] - char v111; // [esp+4Eh] [ebp-7Ah] - char v112; // [esp+50h] [ebp-78h] - char v113; // [esp+50h] [ebp-78h] - unsigned int v114; // [esp+50h] [ebp-78h] - bool v115; // [esp+54h] [ebp-74h] - char v116; // [esp+58h] [ebp-70h] - char v117; // [esp+58h] [ebp-70h] - bool v118; // [esp+58h] [ebp-70h] - int *v119; // [esp+5Ch] [ebp-6Ch] - unsigned int v120; // [esp+5Ch] [ebp-6Ch] - int v121; // [esp+60h] [ebp-68h] - _DWORD *v122; // [esp+64h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-60h] - bool lpuexcpta; // [esp+68h] [ebp-60h] - unsigned __int16 lpuexcptb; // [esp+68h] [ebp-60h] - char lpuexcptc; // [esp+68h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+68h] [ebp-60h] - char lpuexcpte; // [esp+68h] [ebp-60h] - void *Block; // [esp+A8h] [ebp-20h] BYREF - size_t v130; // [esp+ACh] [ebp-1Ch] - int v131[5]; // [esp+B0h] [ebp-18h] BYREF - - v122 = a1; - v103 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v119 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v121 = *v119; - if ( !*v119 ) - { - v74 = operator new(0xA8u); - v74[1] = 0; - *v74 = &off_5605C0; - v74[2] = 0; - v74[3] = 0; - *((_BYTE *)v74 + 16) = 0; - v74[5] = 0; - v74[6] = 0; - v74[7] = 0; - v74[8] = 0; - v74[9] = 0; - *((_BYTE *)v74 + 164) = 0; - v94 = (std::locale::_Impl *)v74; - std::__numpunct_cache::_M_cache((int)v74, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v121 = *v119; - } - v120 = 8; - v101 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v101 != 64 ) - { - v7 = 10; - if ( v101 == 8 ) - v7 = 16; - v120 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v75 = (__int16 *)a1[2]; - if ( (unsigned int)v75 >= a1[3] ) - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v76 = *v75; - v77 = v76 == -1; - v78 = 0; - if ( !v77 ) - v78 = a1; - v79 = lpuexcpta && a1 != 0; - v122 = v78; - if ( !v77 ) - v79 = 0; - v104 = v79; - } - else - { - v104 = a2 == 0xFFFF; - } - v115 = a4 == -1; - if ( v115 && a3 != 0 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - if ( !v82 ) - v83 = a3; - v84 = v115 && a3 != 0; - v103 = v83; - if ( !v82 ) - v84 = 0; - v116 = v84; - } - else - { - v116 = a4 == -1; - } - if ( v116 != v104 ) - { - if ( v122 && a2 == 0xFFFF ) - { - v72 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v72 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v72; - v73 = 0; - if ( lpuexcptb != 0xFFFF ) - v73 = v122; - v122 = v73; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v121 + 16); - v95 = *(_WORD *)(v121 + 112) == lpuexcptb; - if ( *(_WORD *)(v121 + 112) == lpuexcptb || *(_WORD *)(v121 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v121 + 38) != lpuexcptb) && *(_WORD *)(v121 + 36) != lpuexcptb ) - { - v9 = v122[2]; - v10 = v122[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v11 = (__int16 *)v122[2]; - v10 = v122[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v122[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v122; - v112 = v13; - v122 = v14; - if ( v115 && v103 != 0 ) - { - v87 = (__int16 *)v103[2]; - if ( (unsigned int)v87 >= v103[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); - else - v88 = *v87; - v89 = v88 == -1; - v90 = 0; - if ( !v89 ) - v90 = v103; - v91 = v115 && v103 != 0; - v103 = v90; - if ( !v89 ) - v91 = 0; - v117 = v91; - } - else - { - v117 = a4 == -1; - } - if ( v112 == v117 ) - { - v107 = 1; - v105 = 0; - v118 = 0; - goto LABEL_49; - } - if ( v122 ) - { - v85 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v85 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v85; - v86 = 0; - if ( lpuexcptb != 0xFFFF ) - v86 = v122; - v8 = *(_BYTE *)(v121 + 16); - v122 = v86; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v121 + 16); - } - } - } - else - { - v95 = 0; - } - v105 = 0; - v118 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v121 + 38) == lpuexcptb || *(_WORD *)(v121 + 36) == lpuexcptb ) - { -LABEL_178: - v107 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v121 + 120) != lpuexcptb ) - break; - v33 = v120 == 10 || !v118; - if ( !v33 ) - goto LABEL_36; - v118 = v101 == 0 || v120 == 8; - if ( !v118 ) - { - ++v105; - v118 = v33; - goto LABEL_40; - } - v15 = v122; - v105 = 0; - v120 = 8; - v16 = v122[2]; - v17 = v122[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( (unsigned int)v18 < v17 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v18 = (__int16 *)v122[2]; - if ( (unsigned int)v18 < v122[3] ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v122; - v108 = v20; - v122 = v21; - if ( v115 && v103 != 0 ) - { - v52 = (__int16 *)v103[2]; - if ( (unsigned int)v52 >= v103[3] ) - v53 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); - else - v53 = *v52; - v54 = v53 == -1; - v55 = 0; - if ( !v54 ) - v55 = v103; - v56 = v115 && v103 != 0; - v103 = v55; - if ( !v54 ) - v56 = 0; - v113 = v56; - } - else - { - v113 = a4 == -1; - } - if ( v113 == v108 ) - { - v107 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v122 ) - { - v34 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v34 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v34; - v35 = 0; - if ( lpuexcptb != 0xFFFF ) - v35 = v122; - v122 = v35; - } - if ( !v118 ) - { - v107 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v121 + 16); - } - if ( !v118 ) - goto LABEL_178; -LABEL_36: - if ( *(_WORD *)(v121 + 116) != lpuexcptb && *(_WORD *)(v121 + 118) != lpuexcptb ) - { - v107 = 0; - v118 = 1; - goto LABEL_49; - } - if ( v101 != 0 && v120 != 16 ) - { - v107 = 0; - v96 = v120; - v98 = v120; - v118 = 1; - goto LABEL_52; - } - v105 = 0; - v118 = 0; - v120 = 16; -LABEL_40: - v15 = v122; - v16 = v122[2]; - v17 = v122[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v95 = 0; - lpuexcptb = 0; - v107 = 1; - v105 = 0; - v118 = 0; -LABEL_49: - v22 = 22; - if ( v120 != 16 ) - v22 = v120; - v96 = v22; - v98 = v22; -LABEL_52: - v130 = 0; - Block = v131; - LOBYTE(v131[0]) = 0; - if ( *(_BYTE *)(v121 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = v95 + 0x7FFFFFFF; - v99 = v97 / v120; - v100 = *(_BYTE *)(v121 + 164); - if ( !v100 ) - { - if ( !v107 ) - { - v102 = 0; - v114 = 0; - while ( v98 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v23 = lpuexcptb - 55; - goto LABEL_61; - } - v23 = lpuexcptb - 87; - if ( v99 < v114 ) - { -LABEL_62: - v24 = v122; - v102 = 1; - v25 = v122[2]; - v26 = v122[3]; - if ( v25 < v26 ) - goto LABEL_63; - goto LABEL_118; - } -LABEL_117: - v102 |= v97 - v23 < v120 * v114; - v24 = v122; - v114 = v120 * v114 + v23; - v26 = v122[3]; - v25 = v122[2]; - ++v105; - if ( v25 < v26 ) - { -LABEL_63: - v27 = (__int16 *)(v25 + 2); - v24[2] = v27; - goto LABEL_64; - } -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v27 = (__int16 *)v122[2]; - v26 = v122[3]; -LABEL_64: - if ( v26 <= (unsigned int)v27 ) - v28 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v28 = *v27; - v29 = v28 == -1; - v30 = 0; - if ( !v29 ) - v30 = v122; - v109 = v29; - v122 = v30; - if ( v115 && v103 != 0 ) - { - v66 = (__int16 *)v103[2]; - if ( (unsigned int)v66 >= v103[3] ) - v67 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); - else - v67 = *v66; - v68 = v67 == -1; - v69 = 0; - if ( !v68 ) - v69 = v103; - v70 = v115 && v103 != 0; - v103 = v69; - if ( !v68 ) - v70 = 0; - lpuexcptc = v70; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v109 == lpuexcptc ) - { - v100 = 1; - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v122 ) - { - v57 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v57 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v57; - v58 = 0; - if ( lpuexcptb != 0xFFFF ) - v58 = v122; - v122 = v58; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v98 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v23 = lpuexcptb - 48; -LABEL_61: - if ( v99 < v114 ) - goto LABEL_62; - goto LABEL_117; - } - v92 = v107; - v102 = 0; - v107 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - v100 = v92; - v114 = 0; - goto LABEL_72; - } - if ( v107 ) - { - v114 = 0; - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - v100 = v107; - v107 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v118 || v105 ) - goto LABEL_111; - goto LABEL_75; - } - v102 = 0; - v114 = 0; - while ( 1 ) - { - if ( *(_BYTE *)(v121 + 16) && *(_WORD *)(v121 + 38) == lpuexcptb ) - { - v31 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v130; - if ( !v105 ) - { - v100 = 0; - v107 = *(_BYTE *)(v121 + 16); - goto LABEL_72; - } - v111 = v105; - v59 = 15; - if ( Block != v131 ) - v59 = v131[0]; - v106 = v130 + 1; - if ( v130 + 1 > v59 ) - { - std::string::_M_mutate((int)&Block, v130, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v111; - v60 = v106; - v105 = 0; - v130 = v60; - *((_BYTE *)Block + v60) = 0; -LABEL_123: - v43 = v122; - v44 = v122[2]; - v45 = v122[3]; - if ( v44 < v45 ) - goto LABEL_124; - goto LABEL_134; - } - if ( lpuexcptb == *(_WORD *)(v121 + 36) ) - break; - v36 = (_WORD *)(v121 + 120); - v37 = v96; - while ( *v36 != lpuexcptb ) - { - ++v36; - if ( !--v37 ) - goto LABEL_102; - } - v39 = (int)v36 - v121 - 120; - v40 = v39 <= 30; - v41 = (v39 >> 1) - 6; - v42 = v39 >> 1; - if ( !v40 ) - v42 = v41; - if ( v99 < v114 ) - { - v102 = v100; - goto LABEL_123; - } - v102 |= v97 - v42 < v120 * v114; - v43 = v122; - v114 = v120 * v114 + v42; - v45 = v122[3]; - v44 = v122[2]; - ++v105; - if ( v44 < v45 ) - { -LABEL_124: - v46 = (__int16 *)(v44 + 2); - v43[2] = v46; - goto LABEL_125; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v46 = (__int16 *)v122[2]; - v45 = v122[3]; -LABEL_125: - if ( v45 <= (unsigned int)v46 ) - v47 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v47 = *v46; - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = v122; - v110 = v48; - v122 = v49; - if ( v115 && v103 != 0 ) - { - v61 = (__int16 *)v103[2]; - if ( (unsigned int)v61 >= v103[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); - else - v62 = *v61; - v63 = v62 == -1; - v64 = 0; - if ( !v63 ) - v64 = v103; - v65 = v115 && v103 != 0; - v103 = v64; - if ( !v63 ) - v65 = 0; - lpuexcpte = v65; - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v110 ) - { - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v122 ) - { - v50 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v50 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v50; - v51 = 0; - if ( lpuexcptb != 0xFFFF ) - v51 = v122; - v122 = v51; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v100 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - if ( !v130 ) - goto LABEL_73; -LABEL_103: - v38 = 15; - if ( v31 != v131 ) - v38 = v131[0]; - if ( (unsigned int)lpuexcptd + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v105; - v130 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v121 + 8), *(_DWORD *)(v121 + 12), (int)&Block) ) - *a6 = 4; - v31 = (int *)Block; - if ( !v118 && !(v130 | v105) ) - { -LABEL_75: - *a7 = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v107 ) - goto LABEL_75; - if ( v102 ) - { - *a7 = v95 + 0x7FFFFFFF; - *a6 = 4; - } - else - { - v71 = -v114; - if ( !v95 ) - v71 = v114; - *a7 = v71; - } -LABEL_76: - if ( v100 ) - *a6 |= 2u; - if ( v31 != v131 ) - operator delete(v31); - return v122; -} -// 4A76E0: variable 'v93' is possibly undefined -// 53F72C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004A7AF0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // ebx - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - unsigned int v25; // eax - unsigned int v26; // edx - __int16 *v27; // eax - __int16 v28; // ax - bool v29; // zf - _DWORD *v30; // eax - int *v31; // eax - bool v33; // al - unsigned __int16 *v34; // eax - _DWORD *v35; // eax - _WORD *v36; // eax - unsigned int v37; // edx - unsigned int v38; // edx - int v39; // eax - bool v40; // cc - int v41; // edx - int v42; // eax - _DWORD *v43; // ecx - unsigned int v44; // eax - unsigned int v45; // edx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - unsigned __int16 *v50; // eax - _DWORD *v51; // eax - __int16 *v52; // eax - __int16 v53; // ax - bool v54; // zf - _DWORD *v55; // eax - bool v56; // bl - unsigned __int16 *v57; // eax - _DWORD *v58; // eax - size_t v59; // edx - size_t v60; // ecx - __int16 *v61; // eax - __int16 v62; // ax - bool v63; // zf - _DWORD *v64; // eax - bool v65; // dl - __int16 *v66; // eax - __int16 v67; // ax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // cl - int v71; // edx - unsigned __int16 *v72; // eax - _DWORD *v73; // eax - _DWORD *v74; // eax - __int16 *v75; // eax - __int16 v76; // ax - bool v77; // zf - _DWORD *v78; // eax - bool v79; // bl - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // eax - bool v84; // dl - unsigned __int16 *v85; // eax - _DWORD *v86; // edx - __int16 *v87; // eax - __int16 v88; // ax - bool v89; // zf - _DWORD *v90; // eax - bool v91; // bl - char v92; // bl - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+14h] [ebp-A4h] - unsigned int v95; // [esp+1Ch] [ebp-9Ch] - int v96; // [esp+20h] [ebp-98h] - unsigned int v97; // [esp+24h] [ebp-94h] - bool v98; // [esp+2Dh] [ebp-8Bh] - char v99; // [esp+2Eh] [ebp-8Ah] - int v100; // [esp+30h] [ebp-88h] - char v101; // [esp+30h] [ebp-88h] - _DWORD *v102; // [esp+34h] [ebp-84h] - char v103; // [esp+38h] [ebp-80h] - int v104; // [esp+38h] [ebp-80h] - size_t v105; // [esp+38h] [ebp-80h] - char v106; // [esp+3Dh] [ebp-7Bh] - char v107; // [esp+3Eh] [ebp-7Ah] - char v108; // [esp+3Eh] [ebp-7Ah] - char v109; // [esp+3Eh] [ebp-7Ah] - char v110; // [esp+3Eh] [ebp-7Ah] - char v111; // [esp+40h] [ebp-78h] - char v112; // [esp+40h] [ebp-78h] - unsigned int v113; // [esp+40h] [ebp-78h] - bool v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - int *v118; // [esp+4Ch] [ebp-6Ch] - unsigned int v119; // [esp+4Ch] [ebp-6Ch] - int v120; // [esp+50h] [ebp-68h] - _DWORD *v121; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - unsigned __int16 lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v129; // [esp+9Ch] [ebp-1Ch] - int v130[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v102 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v120 = *v118; - if ( !*v118 ) - { - v74 = operator new(0xA8u); - v74[1] = 0; - *v74 = &off_5605C0; - v74[2] = 0; - v74[3] = 0; - *((_BYTE *)v74 + 16) = 0; - v74[5] = 0; - v74[6] = 0; - v74[7] = 0; - v74[8] = 0; - v74[9] = 0; - *((_BYTE *)v74 + 164) = 0; - v94 = (std::locale::_Impl *)v74; - std::__numpunct_cache::_M_cache((int)v74, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v120 = *v118; - } - v119 = 8; - v100 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v100 != 64 ) - { - v7 = 10; - if ( v100 == 8 ) - v7 = 16; - v119 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v75 = (__int16 *)a1[2]; - if ( (unsigned int)v75 >= a1[3] ) - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v76 = *v75; - v77 = v76 == -1; - v78 = 0; - if ( !v77 ) - v78 = a1; - v79 = lpuexcpta && a1 != 0; - v121 = v78; - if ( !v77 ) - v79 = 0; - v103 = v79; - } - else - { - v103 = a2 == 0xFFFF; - } - v114 = a4 == -1; - if ( v114 && a3 != 0 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - if ( !v82 ) - v83 = a3; - v84 = v114 && a3 != 0; - v102 = v83; - if ( !v82 ) - v84 = 0; - v115 = v84; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v103 ) - { - if ( v121 && a2 == 0xFFFF ) - { - v72 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v72 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v72; - v73 = 0; - if ( lpuexcptb != 0xFFFF ) - v73 = v121; - v121 = v73; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v120 + 16); - v98 = *(_WORD *)(v120 + 112) == lpuexcptb; - if ( *(_WORD *)(v120 + 112) == lpuexcptb || *(_WORD *)(v120 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v120 + 38) != lpuexcptb) && *(_WORD *)(v120 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = (__int16 *)v121[2]; - v10 = v121[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v121[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v121; - v111 = v13; - v121 = v14; - if ( v114 && v102 != 0 ) - { - v87 = (__int16 *)v102[2]; - if ( (unsigned int)v87 >= v102[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v88 = *v87; - v89 = v88 == -1; - v90 = 0; - if ( !v89 ) - v90 = v102; - v91 = v114 && v102 != 0; - v102 = v90; - if ( !v89 ) - v91 = 0; - v116 = v91; - } - else - { - v116 = a4 == -1; - } - if ( v111 == v116 ) - { - v106 = 1; - v104 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v121 ) - { - v85 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v85 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v85; - v86 = 0; - if ( lpuexcptb != 0xFFFF ) - v86 = v121; - v8 = *(_BYTE *)(v120 + 16); - v121 = v86; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v120 + 16); - } - } - } - else - { - v98 = 0; - } - v104 = 0; - v117 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v120 + 38) == lpuexcptb || *(_WORD *)(v120 + 36) == lpuexcptb ) - { -LABEL_178: - v106 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v120 + 120) != lpuexcptb ) - break; - v33 = v119 == 10 || !v117; - if ( !v33 ) - goto LABEL_36; - v117 = v100 == 0 || v119 == 8; - if ( !v117 ) - { - ++v104; - v117 = v33; - goto LABEL_40; - } - v15 = v121; - v104 = 0; - v119 = 8; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( v17 > (unsigned int)v18 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v18 = (__int16 *)v121[2]; - if ( v121[3] > (unsigned int)v18 ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v121; - v107 = v20; - v121 = v21; - if ( v114 && v102 != 0 ) - { - v52 = (__int16 *)v102[2]; - if ( (unsigned int)v52 >= v102[3] ) - v53 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v53 = *v52; - v54 = v53 == -1; - v55 = 0; - if ( !v54 ) - v55 = v102; - v56 = v114 && v102 != 0; - v102 = v55; - if ( !v54 ) - v56 = 0; - v112 = v56; - } - else - { - v112 = a4 == -1; - } - if ( v112 == v107 ) - { - v106 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v121 ) - { - v34 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v34 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v34; - v35 = 0; - if ( lpuexcptb != 0xFFFF ) - v35 = v121; - v121 = v35; - } - if ( !v117 ) - { - v106 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v120 + 16); - } - if ( !v117 ) - goto LABEL_178; -LABEL_36: - if ( *(_WORD *)(v120 + 116) != lpuexcptb && *(_WORD *)(v120 + 118) != lpuexcptb ) - { - v106 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v100 != 0 && v119 != 16 ) - { - v106 = 0; - v95 = v119; - v96 = v119; - v117 = 1; - goto LABEL_52; - } - v104 = 0; - v117 = 0; - v119 = 16; -LABEL_40: - v15 = v121; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v98 = 0; - lpuexcptb = 0; - v106 = 1; - v104 = 0; - v117 = 0; -LABEL_49: - v22 = 22; - if ( v119 != 16 ) - v22 = v119; - v95 = v22; - v96 = v22; -LABEL_52: - v129 = 0; - Block = v130; - LOBYTE(v130[0]) = 0; - if ( *(_BYTE *)(v120 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0xFFFFFFFF / v119; - v99 = *(_BYTE *)(v120 + 164); - if ( !v99 ) - { - if ( !v106 ) - { - v101 = 0; - v113 = 0; - while ( v96 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v23 = lpuexcptb - 55; - goto LABEL_61; - } - v23 = lpuexcptb - 87; - if ( v97 < v113 ) - { -LABEL_62: - v24 = v121; - v101 = 1; - v25 = v121[2]; - v26 = v121[3]; - if ( v25 < v26 ) - goto LABEL_63; - goto LABEL_118; - } -LABEL_117: - v101 |= ~v23 < v119 * v113; - v24 = v121; - v113 = v119 * v113 + v23; - v26 = v121[3]; - v25 = v121[2]; - ++v104; - if ( v25 < v26 ) - { -LABEL_63: - v27 = (__int16 *)(v25 + 2); - v24[2] = v27; - goto LABEL_64; - } -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v27 = (__int16 *)v121[2]; - v26 = v121[3]; -LABEL_64: - if ( v26 <= (unsigned int)v27 ) - v28 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v28 = *v27; - v29 = v28 == -1; - v30 = 0; - if ( !v29 ) - v30 = v121; - v108 = v29; - v121 = v30; - if ( v114 && v102 != 0 ) - { - v66 = (__int16 *)v102[2]; - if ( (unsigned int)v66 >= v102[3] ) - v67 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v67 = *v66; - v68 = v67 == -1; - v69 = 0; - if ( !v68 ) - v69 = v102; - v70 = v114 && v102 != 0; - v102 = v69; - if ( !v68 ) - v70 = 0; - lpuexcptc = v70; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v108 == lpuexcptc ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v57 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v57 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v57; - v58 = 0; - if ( lpuexcptb != 0xFFFF ) - v58 = v121; - v121 = v58; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v96 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v23 = lpuexcptb - 48; -LABEL_61: - if ( v97 < v113 ) - goto LABEL_62; - goto LABEL_117; - } - v92 = v106; - v101 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v92; - v113 = 0; - goto LABEL_72; - } - if ( v106 ) - { - v113 = 0; - v101 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v106; - v106 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v117 || v104 ) - goto LABEL_111; - goto LABEL_75; - } - v101 = 0; - v113 = 0; - while ( 1 ) - { - if ( *(_BYTE *)(v120 + 16) && *(_WORD *)(v120 + 38) == lpuexcptb ) - { - v31 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v129; - if ( !v104 ) - { - v99 = 0; - v106 = *(_BYTE *)(v120 + 16); - goto LABEL_72; - } - v110 = v104; - v59 = 15; - if ( Block != v130 ) - v59 = v130[0]; - v105 = v129 + 1; - if ( v129 + 1 > v59 ) - { - std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); - v31 = (int *)Block; - } - v60 = v105; - v104 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v110; - v129 = v60; - *((_BYTE *)Block + v60) = 0; -LABEL_123: - v43 = v121; - v44 = v121[2]; - v45 = v121[3]; - if ( v44 < v45 ) - goto LABEL_124; - goto LABEL_134; - } - if ( lpuexcptb == *(_WORD *)(v120 + 36) ) - break; - v36 = (_WORD *)(v120 + 120); - v37 = v95; - while ( *v36 != lpuexcptb ) - { - ++v36; - if ( !--v37 ) - goto LABEL_102; - } - v39 = (int)v36 - v120 - 120; - v40 = v39 <= 30; - v41 = (v39 >> 1) - 6; - v42 = v39 >> 1; - if ( !v40 ) - v42 = v41; - if ( v97 < v113 ) - { - v101 = v99; - goto LABEL_123; - } - v101 |= ~v42 < v119 * v113; - v43 = v121; - v113 = v119 * v113 + v42; - v45 = v121[3]; - v44 = v121[2]; - ++v104; - if ( v44 < v45 ) - { -LABEL_124: - v46 = (__int16 *)(v44 + 2); - v43[2] = v46; - goto LABEL_125; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v46 = (__int16 *)v121[2]; - v45 = v121[3]; -LABEL_125: - if ( v45 <= (unsigned int)v46 ) - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v47 = *v46; - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = v121; - v109 = v48; - v121 = v49; - if ( v114 && v102 != 0 ) - { - v61 = (__int16 *)v102[2]; - if ( (unsigned int)v61 >= v102[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v62 = *v61; - v63 = v62 == -1; - v64 = 0; - if ( !v63 ) - v64 = v102; - v65 = v114 && v102 != 0; - v102 = v64; - if ( !v63 ) - v65 = 0; - lpuexcpte = v65; - } - else - { - lpuexcpte = a4 == -1; - } - if ( v109 == lpuexcpte ) - { - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v50 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v50 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v50; - v51 = 0; - if ( lpuexcptb != 0xFFFF ) - v51 = v121; - v121 = v51; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - if ( !v129 ) - goto LABEL_73; -LABEL_103: - v38 = 15; - if ( v31 != v130 ) - v38 = v130[0]; - if ( (unsigned int)lpuexcptd + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v104; - v129 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v120 + 8), *(_DWORD *)(v120 + 12), (int)&Block) ) - *a6 = 4; - v31 = (int *)Block; - if ( !v117 && !(v129 | v104) ) - { -LABEL_75: - *a7 = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v106 ) - goto LABEL_75; - if ( v101 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v71 = -v113; - if ( !v98 ) - v71 = v113; - *a7 = v71; - } -LABEL_76: - if ( v99 ) - *a6 |= 2u; - if ( v31 != v130 ) - operator delete(v31); - return v121; -} -// 4A86D0: variable 'v93' is possibly undefined -// 53F72C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004A8AE0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - _WORD *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // ebx - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - unsigned int v25; // eax - unsigned int v26; // edx - __int16 *v27; // eax - __int16 v28; // ax - bool v29; // zf - _DWORD *v30; // eax - int *v31; // eax - bool v33; // al - unsigned __int16 *v34; // eax - _DWORD *v35; // eax - _WORD *v36; // eax - int v37; // edx - unsigned int v38; // edx - int v39; // eax - bool v40; // cc - int v41; // edx - int v42; // eax - _DWORD *v43; // ecx - unsigned int v44; // eax - unsigned int v45; // edx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - unsigned __int16 *v50; // eax - _DWORD *v51; // eax - __int16 *v52; // eax - __int16 v53; // ax - bool v54; // zf - _DWORD *v55; // eax - bool v56; // bl - unsigned __int16 *v57; // eax - _DWORD *v58; // eax - size_t v59; // edx - size_t v60; // edx - __int16 *v61; // eax - __int16 v62; // ax - bool v63; // zf - _DWORD *v64; // eax - bool v65; // dl - __int16 *v66; // eax - __int16 v67; // ax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // bl - int v71; // edx - unsigned __int16 *v72; // eax - _DWORD *v73; // eax - _DWORD *v74; // eax - __int16 *v75; // eax - __int16 v76; // ax - bool v77; // zf - _DWORD *v78; // eax - bool v79; // dl - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // eax - bool v84; // dl - unsigned __int16 *v85; // eax - _DWORD *v86; // edx - __int16 *v87; // eax - __int16 v88; // ax - bool v89; // zf - _DWORD *v90; // eax - bool v91; // dl - char v92; // bl - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+14h] [ebp-A4h] - int v95; // [esp+1Ch] [ebp-9Ch] - int v96; // [esp+20h] [ebp-98h] - int v97; // [esp+24h] [ebp-94h] - bool v98; // [esp+2Dh] [ebp-8Bh] - char v99; // [esp+2Eh] [ebp-8Ah] - int v100; // [esp+30h] [ebp-88h] - char v101; // [esp+30h] [ebp-88h] - _DWORD *v102; // [esp+34h] [ebp-84h] - char v103; // [esp+38h] [ebp-80h] - int v104; // [esp+38h] [ebp-80h] - size_t v105; // [esp+38h] [ebp-80h] - char v106; // [esp+3Dh] [ebp-7Bh] - char v107; // [esp+3Eh] [ebp-7Ah] - char v108; // [esp+3Eh] [ebp-7Ah] - char v109; // [esp+3Eh] [ebp-7Ah] - char v110; // [esp+3Eh] [ebp-7Ah] - char v111; // [esp+40h] [ebp-78h] - char v112; // [esp+40h] [ebp-78h] - unsigned __int16 v113; // [esp+40h] [ebp-78h] - bool v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - int *v118; // [esp+4Ch] [ebp-6Ch] - int v119; // [esp+4Ch] [ebp-6Ch] - int v120; // [esp+50h] [ebp-68h] - _DWORD *v121; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - unsigned __int16 lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v129; // [esp+9Ch] [ebp-1Ch] - int v130[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v102 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v120 = *v118; - if ( !*v118 ) - { - v74 = operator new(0xA8u); - v74[1] = 0; - *v74 = &off_5605C0; - v74[2] = 0; - v74[3] = 0; - *((_BYTE *)v74 + 16) = 0; - v74[5] = 0; - v74[6] = 0; - v74[7] = 0; - v74[8] = 0; - v74[9] = 0; - *((_BYTE *)v74 + 164) = 0; - v94 = (std::locale::_Impl *)v74; - std::__numpunct_cache::_M_cache((int)v74, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v120 = *v118; - } - v119 = 8; - v100 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v100 != 64 ) - { - v7 = 10; - if ( v100 == 8 ) - v7 = 16; - v119 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v75 = (__int16 *)a1[2]; - if ( (unsigned int)v75 >= a1[3] ) - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v76 = *v75; - v77 = v76 == -1; - v78 = 0; - if ( !v77 ) - v78 = a1; - v79 = lpuexcpta && a1 != 0; - v121 = v78; - if ( !v77 ) - v79 = 0; - v103 = v79; - } - else - { - v103 = a2 == 0xFFFF; - } - v114 = a4 == -1; - if ( v114 && a3 != 0 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - if ( !v82 ) - v83 = a3; - v84 = v114 && a3 != 0; - v102 = v83; - if ( !v82 ) - v84 = 0; - v115 = v84; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v103 ) - { - if ( v121 && a2 == 0xFFFF ) - { - v72 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v72 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v72; - v73 = 0; - if ( lpuexcptb != 0xFFFF ) - v73 = v121; - v121 = v73; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v120 + 16); - v98 = *(_WORD *)(v120 + 112) == lpuexcptb; - if ( *(_WORD *)(v120 + 112) == lpuexcptb || *(_WORD *)(v120 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v120 + 38) != lpuexcptb) && *(_WORD *)(v120 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = (__int16 *)v121[2]; - v10 = v121[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v121[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v121; - v111 = v13; - v121 = v14; - if ( v114 && v102 != 0 ) - { - v87 = (__int16 *)v102[2]; - if ( (unsigned int)v87 >= v102[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v88 = *v87; - v89 = v88 == -1; - v90 = 0; - if ( !v89 ) - v90 = v102; - v91 = v114 && v102 != 0; - v102 = v90; - if ( !v89 ) - v91 = 0; - v116 = v91; - } - else - { - v116 = a4 == -1; - } - if ( v111 == v116 ) - { - v106 = 1; - v104 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v121 ) - { - v85 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v85 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v85; - v86 = 0; - if ( lpuexcptb != 0xFFFF ) - v86 = v121; - v8 = *(_BYTE *)(v120 + 16); - v121 = v86; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v120 + 16); - } - } - } - else - { - v98 = 0; - } - v104 = 0; - v117 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v120 + 38) == lpuexcptb || *(_WORD *)(v120 + 36) == lpuexcptb ) - { -LABEL_178: - v106 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v120 + 120) != lpuexcptb ) - break; - v33 = v119 == 10 || !v117; - if ( !v33 ) - goto LABEL_36; - v117 = v100 == 0 || v119 == 8; - if ( !v117 ) - { - ++v104; - v117 = v33; - goto LABEL_40; - } - v15 = v121; - v104 = 0; - v119 = 8; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( v17 > (unsigned int)v18 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v18 = (__int16 *)v121[2]; - if ( v121[3] > (unsigned int)v18 ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v121; - v107 = v20; - v121 = v21; - if ( v114 && v102 != 0 ) - { - v52 = (__int16 *)v102[2]; - if ( (unsigned int)v52 >= v102[3] ) - v53 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v53 = *v52; - v54 = v53 == -1; - v55 = 0; - if ( !v54 ) - v55 = v102; - v56 = v114 && v102 != 0; - v102 = v55; - if ( !v54 ) - v56 = 0; - v112 = v56; - } - else - { - v112 = a4 == -1; - } - if ( v112 == v107 ) - { - v106 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v121 ) - { - v34 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v34 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v34; - v35 = 0; - if ( lpuexcptb != 0xFFFF ) - v35 = v121; - v121 = v35; - } - if ( !v117 ) - { - v106 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v120 + 16); - } - if ( !v117 ) - goto LABEL_178; -LABEL_36: - if ( *(_WORD *)(v120 + 116) != lpuexcptb && *(_WORD *)(v120 + 118) != lpuexcptb ) - { - v106 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v100 != 0 && v119 != 16 ) - { - v106 = 0; - v95 = v119; - v96 = v119; - v117 = 1; - goto LABEL_52; - } - v104 = 0; - v117 = 0; - v119 = 16; -LABEL_40: - v15 = v121; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v98 = 0; - lpuexcptb = 0; - v106 = 1; - v104 = 0; - v117 = 0; -LABEL_49: - v22 = 22; - if ( v119 != 16 ) - v22 = v119; - v95 = v22; - v96 = v22; -LABEL_52: - v129 = 0; - Block = v130; - LOBYTE(v130[0]) = 0; - if ( *(_BYTE *)(v120 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0xFFFF / v119; - v99 = *(_BYTE *)(v120 + 164); - if ( !v99 ) - { - if ( !v106 ) - { - v101 = 0; - v113 = 0; - while ( v96 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v23 = lpuexcptb - 55; - goto LABEL_61; - } - v23 = lpuexcptb - 87; - if ( (unsigned __int16)v97 < v113 ) - { -LABEL_62: - v24 = v121; - v101 = 1; - v25 = v121[2]; - v26 = v121[3]; - if ( v25 < v26 ) - goto LABEL_63; - goto LABEL_118; - } -LABEL_117: - v101 |= (unsigned __int16)(v119 * v113) > 0xFFFF - v23; - v24 = v121; - v113 = v119 * v113 + v23; - v26 = v121[3]; - v25 = v121[2]; - ++v104; - if ( v25 < v26 ) - { -LABEL_63: - v27 = (__int16 *)(v25 + 2); - v24[2] = v27; - goto LABEL_64; - } -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v27 = (__int16 *)v121[2]; - v26 = v121[3]; -LABEL_64: - if ( v26 <= (unsigned int)v27 ) - v28 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v28 = *v27; - v29 = v28 == -1; - v30 = 0; - if ( !v29 ) - v30 = v121; - v108 = v29; - v121 = v30; - if ( v114 && v102 != 0 ) - { - v66 = (__int16 *)v102[2]; - if ( (unsigned int)v66 >= v102[3] ) - v67 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v67 = *v66; - v68 = v67 == -1; - v69 = 0; - if ( !v68 ) - v69 = v102; - v70 = v114 && v102 != 0; - v102 = v69; - if ( !v68 ) - v70 = 0; - lpuexcptc = v70; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v108 == lpuexcptc ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v57 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v57 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v57; - v58 = 0; - if ( lpuexcptb != 0xFFFF ) - v58 = v121; - v121 = v58; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v96 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v23 = lpuexcptb - 48; -LABEL_61: - if ( (unsigned __int16)v97 < v113 ) - goto LABEL_62; - goto LABEL_117; - } - v92 = v106; - v101 = 0; - v106 = 0; - v99 = v92; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v113 = 0; - goto LABEL_72; - } - if ( v106 ) - { - v101 = 0; - v113 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v106; - v106 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v117 || v104 ) - goto LABEL_111; - goto LABEL_75; - } - v101 = 0; - v113 = 0; - while ( 1 ) - { - if ( *(_BYTE *)(v120 + 16) && *(_WORD *)(v120 + 38) == lpuexcptb ) - { - v31 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v129; - if ( !v104 ) - { - v99 = 0; - v106 = *(_BYTE *)(v120 + 16); - goto LABEL_72; - } - v110 = v104; - v59 = 15; - if ( Block != v130 ) - v59 = v130[0]; - v105 = v129 + 1; - if ( v129 + 1 > v59 ) - { - std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); - v31 = (int *)Block; - } - v60 = v105; - v104 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v110; - v129 = v60; - *((_BYTE *)Block + v60) = 0; -LABEL_123: - v43 = v121; - v44 = v121[2]; - v45 = v121[3]; - if ( v44 < v45 ) - goto LABEL_124; - goto LABEL_134; - } - if ( lpuexcptb == *(_WORD *)(v120 + 36) ) - break; - v36 = (_WORD *)(v120 + 120); - v37 = v95; - while ( *v36 != lpuexcptb ) - { - ++v36; - if ( !--v37 ) - goto LABEL_102; - } - v39 = (int)v36 - v120 - 120; - v40 = v39 <= 30; - v41 = (v39 >> 1) - 6; - v42 = v39 >> 1; - if ( !v40 ) - v42 = v41; - if ( (unsigned __int16)v97 < v113 ) - { - v101 = v99; - goto LABEL_123; - } - v101 |= (unsigned __int16)(v119 * v113) > 0xFFFF - v42; - v43 = v121; - v113 = v119 * v113 + v42; - v45 = v121[3]; - v44 = v121[2]; - ++v104; - if ( v44 < v45 ) - { -LABEL_124: - v46 = (__int16 *)(v44 + 2); - v43[2] = v46; - goto LABEL_125; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v46 = (__int16 *)v121[2]; - v45 = v121[3]; -LABEL_125: - if ( v45 <= (unsigned int)v46 ) - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v47 = *v46; - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = v121; - v109 = v48; - v121 = v49; - if ( v114 && v102 != 0 ) - { - v61 = (__int16 *)v102[2]; - if ( (unsigned int)v61 >= v102[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v62 = *v61; - v63 = v62 == -1; - v64 = 0; - if ( !v63 ) - v64 = v102; - v65 = v114 && v102 != 0; - v102 = v64; - if ( !v63 ) - v65 = 0; - lpuexcpte = v65; - } - else - { - lpuexcpte = a4 == -1; - } - if ( v109 == lpuexcpte ) - { - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v50 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v50 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v50; - v51 = 0; - if ( lpuexcptb != 0xFFFF ) - v51 = v121; - v121 = v51; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - if ( !v129 ) - goto LABEL_73; -LABEL_103: - v38 = 15; - if ( v31 != v130 ) - v38 = v130[0]; - if ( (unsigned int)lpuexcptd + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v104; - v129 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v120 + 8), *(_DWORD *)(v120 + 12), (int)&Block) ) - *a6 = 4; - v31 = (int *)Block; - if ( !v117 && !(v129 | v104) ) - { -LABEL_75: - *a7 = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v106 ) - goto LABEL_75; - if ( v101 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v71 = -v113; - if ( !v98 ) - LOWORD(v71) = v113; - *a7 = v71; - } -LABEL_76: - if ( v99 ) - *a6 |= 2u; - if ( v31 != v130 ) - operator delete(v31); - return v121; -} -// 4A96E0: variable 'v93' is possibly undefined -// 53F72C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004A9AF0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // edi - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - unsigned __int64 v23; // kr00_8 - int v24; // esi - _DWORD *v25; // ecx - unsigned int v26; // eax - unsigned int v27; // edx - __int16 *v28; // eax - __int16 v29; // ax - bool v30; // zf - _DWORD *v31; // eax - int *v32; // eax - bool v34; // al - unsigned __int16 *v35; // eax - _DWORD *v36; // eax - _WORD *v37; // eax - int v38; // edx - unsigned int v39; // edx - int v40; // ecx - unsigned int v41; // ebx - int v42; // eax - int v43; // esi - _DWORD *v44; // ebx - unsigned int v45; // eax - unsigned int v46; // edx - __int16 *v47; // eax - __int16 v48; // ax - bool v49; // zf - _DWORD *v50; // eax - unsigned __int16 *v51; // eax - _DWORD *v52; // eax - __int16 *v53; // eax - __int16 v54; // ax - bool v55; // zf - _DWORD *v56; // eax - bool v57; // si - unsigned __int16 *v58; // eax - _DWORD *v59; // eax - char v60; // bl - size_t v61; // edx - size_t v62; // ebx - __int16 *v63; // eax - __int16 v64; // ax - bool v65; // zf - _DWORD *v66; // eax - bool v67; // cl - __int16 *v68; // eax - __int16 v69; // ax - bool v70; // zf - _DWORD *v71; // eax - bool v72; // bl - unsigned __int16 *v73; // eax - _DWORD *v74; // eax - _DWORD *v75; // eax - __int16 *v76; // eax - __int16 v77; // ax - bool v78; // zf - _DWORD *v79; // eax - bool v80; // si - __int16 *v81; // eax - __int16 v82; // ax - bool v83; // zf - _DWORD *v84; // eax - bool v85; // si - unsigned __int16 *v86; // eax - _DWORD *v87; // edx - __int16 *v88; // eax - __int16 v89; // ax - bool v90; // zf - _DWORD *v91; // eax - bool v92; // bl - char v93; // bl - unsigned int v94; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v95; // [esp+14h] [ebp-C4h] - int v96; // [esp+1Ch] [ebp-BCh] - unsigned __int64 v97; // [esp+20h] [ebp-B8h] - int v98; // [esp+28h] [ebp-B0h] - bool v99; // [esp+39h] [ebp-9Fh] - char v100; // [esp+3Ah] [ebp-9Eh] - _DWORD *v101; // [esp+3Ch] [ebp-9Ch] - int v102; // [esp+40h] [ebp-98h] - __int64 v103; // [esp+40h] [ebp-98h] - int v104; // [esp+48h] [ebp-90h] - size_t v105; // [esp+48h] [ebp-90h] - char v106; // [esp+4Ch] [ebp-8Ch] - char v107; // [esp+4Dh] [ebp-8Bh] - char v108; // [esp+4Dh] [ebp-8Bh] - char v109; // [esp+4Dh] [ebp-8Bh] - char v110; // [esp+4Eh] [ebp-8Ah] - char v111; // [esp+4Eh] [ebp-8Ah] - char v112; // [esp+4Eh] [ebp-8Ah] - char v113; // [esp+4Eh] [ebp-8Ah] - bool v114; // [esp+50h] [ebp-88h] - char v115; // [esp+54h] [ebp-84h] - char v116; // [esp+54h] [ebp-84h] - bool v117; // [esp+54h] [ebp-84h] - int *v118; // [esp+58h] [ebp-80h] - int v119; // [esp+58h] [ebp-80h] - unsigned __int64 v120; // [esp+58h] [ebp-80h] - int v121; // [esp+60h] [ebp-78h] - _DWORD *v122; // [esp+64h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-70h] - bool lpuexcpta; // [esp+68h] [ebp-70h] - unsigned __int16 lpuexcptb; // [esp+68h] [ebp-70h] - char lpuexcptc; // [esp+68h] [ebp-70h] - struct _Unwind_Exception *lpuexcptd; // [esp+68h] [ebp-70h] - char lpuexcpte; // [esp+68h] [ebp-70h] - void *Block; // [esp+A8h] [ebp-30h] BYREF - size_t v130; // [esp+ACh] [ebp-2Ch] - int v131[10]; // [esp+B0h] [ebp-28h] BYREF - - v122 = a1; - v101 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v121 = *v118; - if ( !*v118 ) - { - v75 = operator new(0xA8u); - v75[1] = 0; - *v75 = &off_5605C0; - v75[2] = 0; - v75[3] = 0; - *((_BYTE *)v75 + 16) = 0; - v75[5] = 0; - v75[6] = 0; - v75[7] = 0; - v75[8] = 0; - v75[9] = 0; - *((_BYTE *)v75 + 164) = 0; - v95 = (std::locale::_Impl *)v75; - std::__numpunct_cache::_M_cache((int)v75, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v95, lpuexcpt, v94); - v121 = *v118; - } - v119 = 8; - v102 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v102 != 64 ) - { - v7 = 10; - if ( v102 == 8 ) - v7 = 16; - v119 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v76 = (__int16 *)a1[2]; - if ( (unsigned int)v76 >= a1[3] ) - v77 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v77 = *v76; - v78 = v77 == -1; - v79 = 0; - if ( !v78 ) - v79 = a1; - v80 = lpuexcpta && a1 != 0; - v122 = v79; - if ( !v78 ) - v80 = 0; - v107 = v80; - } - else - { - v107 = a2 == 0xFFFF; - } - v114 = a4 == -1; - if ( v114 && a3 != 0 ) - { - v81 = (__int16 *)a3[2]; - if ( (unsigned int)v81 >= a3[3] ) - v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v82 = *v81; - v83 = v82 == -1; - v84 = 0; - if ( !v83 ) - v84 = a3; - v85 = v114 && a3 != 0; - v101 = v84; - if ( !v83 ) - v85 = 0; - v115 = v85; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v107 ) - { - if ( v122 && a2 == 0xFFFF ) - { - v73 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v73 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v73; - v74 = 0; - if ( lpuexcptb != 0xFFFF ) - v74 = v122; - v122 = v74; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v121 + 16); - v99 = *(_WORD *)(v121 + 112) == lpuexcptb; - if ( *(_WORD *)(v121 + 112) == lpuexcptb || *(_WORD *)(v121 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v121 + 38) != lpuexcptb) && *(_WORD *)(v121 + 36) != lpuexcptb ) - { - v9 = v122[2]; - v10 = v122[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v11 = (__int16 *)v122[2]; - v10 = v122[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v122[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v122; - v110 = v13; - v122 = v14; - if ( v114 && v101 != 0 ) - { - v88 = (__int16 *)v101[2]; - if ( (unsigned int)v88 >= v101[3] ) - v89 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); - else - v89 = *v88; - v90 = v89 == -1; - v91 = 0; - if ( !v90 ) - v91 = v101; - v92 = v114 && v101 != 0; - v101 = v91; - if ( !v90 ) - v92 = 0; - v116 = v92; - } - else - { - v116 = a4 == -1; - } - if ( v110 == v116 ) - { - v106 = 1; - v104 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v122 ) - { - v86 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v86 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v86; - v87 = 0; - if ( lpuexcptb != 0xFFFF ) - v87 = v122; - v8 = *(_BYTE *)(v121 + 16); - v122 = v87; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v121 + 16); - } - } - } - else - { - v99 = 0; - } - v117 = 0; - v104 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v121 + 38) == lpuexcptb || *(_WORD *)(v121 + 36) == lpuexcptb ) - { -LABEL_182: - v106 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v121 + 120) != lpuexcptb ) - break; - v34 = v119 == 10 || !v117; - if ( !v34 ) - goto LABEL_36; - v117 = v102 == 0 || v119 == 8; - if ( !v117 ) - { - ++v104; - v117 = v34; - goto LABEL_40; - } - v15 = v122; - v119 = 8; - v104 = 0; - v16 = v122[2]; - v17 = v122[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( (unsigned int)v18 < v17 ) - goto LABEL_42; - goto LABEL_87; - } -LABEL_86: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v18 = (__int16 *)v122[2]; - if ( (unsigned int)v18 < v122[3] ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_87: - v19 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v122; - v108 = v20; - v122 = v21; - if ( v114 && v101 != 0 ) - { - v53 = (__int16 *)v101[2]; - if ( (unsigned int)v53 >= v101[3] ) - v54 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); - else - v54 = *v53; - v55 = v54 == -1; - v56 = 0; - if ( !v55 ) - v56 = v101; - v57 = v114 && v101 != 0; - v101 = v56; - if ( !v55 ) - v57 = 0; - v111 = v57; - } - else - { - v111 = a4 == -1; - } - if ( v111 == v108 ) - { - v106 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v122 ) - { - v35 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v35 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v35; - v36 = 0; - if ( lpuexcptb != 0xFFFF ) - v36 = v122; - v122 = v36; - } - if ( !v117 ) - { - v106 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v121 + 16); - } - if ( !v117 ) - goto LABEL_182; -LABEL_36: - if ( *(_WORD *)(v121 + 116) != lpuexcptb && *(_WORD *)(v121 + 118) != lpuexcptb ) - { - v106 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v102 != 0 && v119 != 16 ) - { - v106 = 0; - v96 = v119; - v98 = v119; - v117 = 1; - goto LABEL_52; - } - v104 = 0; - v117 = 0; - v119 = 16; -LABEL_40: - v15 = v122; - v16 = v122[2]; - v17 = v122[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_86; - } - v99 = 0; - lpuexcptb = 0; - v106 = 1; - v104 = 0; - v117 = 0; -LABEL_49: - v22 = 22; - if ( v119 != 16 ) - v22 = v119; - v96 = v22; - v98 = v22; -LABEL_52: - v130 = 0; - Block = v131; - LOBYTE(v131[0]) = 0; - if ( *(_BYTE *)(v121 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0x8000000000000000LL; - if ( !v99 ) - v97 = 0x7FFFFFFFFFFFFFFFLL; - v103 = v119; - v23 = v97 / v119; - v100 = *(_BYTE *)(v121 + 164); - if ( !v100 ) - { - if ( !v106 ) - { - v109 = 0; - v120 = 0LL; - while ( v98 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_62; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_104; - v24 = lpuexcptb - 55; - } - else - { - v24 = lpuexcptb - 87; - } -LABEL_63: - if ( v23 >= v120 ) - { - v109 |= v97 - v24 < v103 * v120; - v25 = v122; - v120 = v103 * v120 + v24; - v26 = v122[2]; - v27 = v122[3]; - ++v104; - if ( v26 < v27 ) - { -LABEL_65: - v28 = (__int16 *)(v26 + 2); - v25[2] = v28; - goto LABEL_66; - } - } - else - { - v25 = v122; - v109 = 1; - v26 = v122[2]; - v27 = v122[3]; - if ( v26 < v27 ) - goto LABEL_65; - } - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v28 = (__int16 *)v122[2]; - v27 = v122[3]; -LABEL_66: - if ( v27 <= (unsigned int)v28 ) - v29 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v29 = *v28; - v30 = v29 == -1; - v31 = 0; - if ( !v30 ) - v31 = v122; - v112 = v30; - v122 = v31; - if ( v114 && v101 != 0 ) - { - v68 = (__int16 *)v101[2]; - if ( (unsigned int)v68 >= v101[3] ) - v69 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); - else - v69 = *v68; - v70 = v69 == -1; - v71 = 0; - if ( !v70 ) - v71 = v101; - v72 = v114 && v101 != 0; - v101 = v71; - if ( !v70 ) - v72 = 0; - lpuexcptc = v72; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v112 == lpuexcptc ) - { - v100 = 1; - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - goto LABEL_74; - } - if ( v122 ) - { - v58 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v58 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v58; - v59 = 0; - if ( lpuexcptb != 0xFFFF ) - v59 = v122; - v122 = v59; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v98 + 48) <= lpuexcptb ) - goto LABEL_104; -LABEL_62: - v24 = lpuexcptb - 48; - goto LABEL_63; - } - v93 = v106; - v109 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - v100 = v93; - v120 = 0LL; - goto LABEL_74; - } - if ( v106 ) - { - v120 = 0LL; - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - v100 = v106; - v109 = 0; - v106 = 0; -LABEL_74: - if ( lpuexcptd ) - goto LABEL_105; -LABEL_75: - if ( v117 || v104 ) - goto LABEL_113; - goto LABEL_77; - } - v109 = 0; - v120 = 0LL; - while ( 1 ) - { - if ( *(_BYTE *)(v121 + 16) && *(_WORD *)(v121 + 38) == lpuexcptb ) - { - v32 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v130; - if ( !v104 ) - { - v100 = 0; - v106 = *(_BYTE *)(v121 + 16); - goto LABEL_74; - } - v60 = v104; - v61 = 15; - if ( Block != v131 ) - v61 = v131[0]; - v105 = v130 + 1; - if ( v130 + 1 > v61 ) - { - std::string::_M_mutate((int)&Block, v130, 0, 0, 1u); - v32 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v32) = v60; - v62 = v105; - v104 = 0; - v130 = v62; - *((_BYTE *)Block + v62) = 0; -LABEL_127: - v44 = v122; - v45 = v122[2]; - v46 = v122[3]; - if ( v45 < v46 ) - goto LABEL_128; - goto LABEL_138; - } - if ( lpuexcptb == *(_WORD *)(v121 + 36) ) - break; - v37 = (_WORD *)(v121 + 120); - v38 = v96; - while ( *v37 != lpuexcptb ) - { - ++v37; - if ( !--v38 ) - goto LABEL_104; - } - v42 = (int)v37 - v121 - 120; - v43 = (v42 >> 1) - 6; - if ( v42 <= 30 ) - v43 = v42 >> 1; - if ( v23 < v120 ) - { - v109 = v100; - goto LABEL_127; - } - v44 = v122; - v109 |= v97 - v43 < v103 * v120; - v45 = v122[2]; - v46 = v122[3]; - v120 = v103 * v120 + v43; - ++v104; - if ( v45 < v46 ) - { -LABEL_128: - v47 = (__int16 *)(v45 + 2); - v44[2] = v47; - goto LABEL_129; - } -LABEL_138: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v47 = (__int16 *)v122[2]; - v46 = v122[3]; -LABEL_129: - if ( v46 <= (unsigned int)v47 ) - v48 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v48 = *v47; - v49 = v48 == -1; - v50 = 0; - if ( !v49 ) - v50 = v122; - v113 = v49; - v122 = v50; - if ( v114 && v101 != 0 ) - { - v63 = (__int16 *)v101[2]; - if ( (unsigned int)v63 >= v101[3] ) - v64 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); - else - v64 = *v63; - v65 = v64 == -1; - v66 = 0; - if ( !v65 ) - v66 = v101; - v67 = v114 && v101 != 0; - v101 = v66; - if ( !v65 ) - v67 = 0; - lpuexcpte = v67; - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v113 ) - { - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - goto LABEL_74; - } - if ( v122 ) - { - v51 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v51 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v51; - v52 = 0; - if ( lpuexcptb != 0xFFFF ) - v52 = v122; - v122 = v52; - } - else - { - lpuexcptb = -1; - } - } -LABEL_104: - v100 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - if ( !v130 ) - goto LABEL_75; -LABEL_105: - v39 = 15; - if ( v32 != v131 ) - v39 = v131[0]; - if ( (unsigned int)lpuexcptd + 1 > v39 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v32 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v32) = v104; - v130 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v121 + 8), *(_DWORD *)(v121 + 12), (int)&Block) ) - *a6 = 4; - v32 = (int *)Block; - if ( !v117 && !(v130 | v104) ) - { -LABEL_77: - *a7 = 0; - a7[1] = 0; - *a6 = 4; - goto LABEL_78; - } -LABEL_113: - if ( v106 ) - goto LABEL_77; - if ( v109 ) - { - v40 = 0; - v41 = 0x80000000; - if ( !v99 ) - { - v40 = -1; - v41 = 0x7FFFFFFF; - } - *a7 = v40; - a7[1] = v41; - *a6 = 4; - } - else - { - if ( v99 ) - v120 = -(__int64)v120; - *(_QWORD *)a7 = v120; - } -LABEL_78: - if ( v100 ) - *a6 |= 2u; - if ( v32 != v131 ) - operator delete(v32); - return v122; -} -// 4AA912: variable 'v94' is possibly undefined -// 53F72C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004AAD90) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // edi - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - unsigned __int64 v23; // kr08_8 - int v24; // esi - _DWORD *v25; // ecx - unsigned int v26; // eax - unsigned int v27; // edx - __int16 *v28; // eax - __int16 v29; // ax - bool v30; // zf - _DWORD *v31; // eax - int *v32; // eax - bool v34; // al - unsigned __int16 *v35; // eax - _DWORD *v36; // eax - _WORD *v37; // eax - int v38; // edx - unsigned int v39; // edx - int v40; // eax - int v41; // esi - _DWORD *v42; // ebx - unsigned int v43; // eax - unsigned int v44; // edx - __int16 *v45; // eax - __int16 v46; // ax - bool v47; // zf - _DWORD *v48; // eax - unsigned __int16 *v49; // eax - _DWORD *v50; // eax - __int16 *v51; // eax - __int16 v52; // ax - bool v53; // zf - _DWORD *v54; // eax - bool v55; // bl - unsigned __int16 *v56; // eax - _DWORD *v57; // eax - size_t v58; // edx - size_t v59; // edi - __int16 *v60; // eax - __int16 v61; // ax - bool v62; // zf - _DWORD *v63; // eax - bool v64; // cl - __int16 *v65; // eax - __int16 v66; // ax - bool v67; // zf - _DWORD *v68; // eax - bool v69; // bl - unsigned __int16 *v70; // eax - _DWORD *v71; // eax - _DWORD *v72; // eax - __int16 *v73; // eax - __int16 v74; // ax - bool v75; // zf - _DWORD *v76; // eax - bool v77; // bl - __int16 *v78; // eax - __int16 v79; // ax - bool v80; // zf - _DWORD *v81; // eax - bool v82; // cl - unsigned __int16 *v83; // eax - _DWORD *v84; // edx - __int16 *v85; // eax - __int16 v86; // ax - bool v87; // zf - _DWORD *v88; // eax - bool v89; // si - char v90; // bl - unsigned int v91; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v92; // [esp+18h] [ebp-C0h] - int v93; // [esp+20h] [ebp-B8h] - int v94; // [esp+24h] [ebp-B4h] - bool v95; // [esp+35h] [ebp-A3h] - char v96; // [esp+36h] [ebp-A2h] - int v97; // [esp+38h] [ebp-A0h] - __int64 v98; // [esp+38h] [ebp-A0h] - _DWORD *v99; // [esp+40h] [ebp-98h] - int v100; // [esp+44h] [ebp-94h] - size_t v101; // [esp+44h] [ebp-94h] - char v102; // [esp+48h] [ebp-90h] - char v103; // [esp+49h] [ebp-8Fh] - char v104; // [esp+49h] [ebp-8Fh] - char v105; // [esp+49h] [ebp-8Fh] - char v106; // [esp+4Ah] [ebp-8Eh] - char v107; // [esp+4Ah] [ebp-8Eh] - char v108; // [esp+4Ah] [ebp-8Eh] - char v109; // [esp+4Ah] [ebp-8Eh] - char v110; // [esp+4Ah] [ebp-8Eh] - bool v111; // [esp+4Ch] [ebp-8Ch] - int *v112; // [esp+50h] [ebp-88h] - int v113; // [esp+50h] [ebp-88h] - unsigned __int64 v114; // [esp+50h] [ebp-88h] - char v115; // [esp+58h] [ebp-80h] - char v116; // [esp+58h] [ebp-80h] - bool v117; // [esp+58h] [ebp-80h] - int v118; // [esp+5Ch] [ebp-7Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-78h] - bool lpuexcpta; // [esp+60h] [ebp-78h] - unsigned __int16 lpuexcptb; // [esp+60h] [ebp-78h] - char lpuexcptc; // [esp+60h] [ebp-78h] - struct _Unwind_Exception *lpuexcptd; // [esp+60h] [ebp-78h] - char lpuexcpte; // [esp+60h] [ebp-78h] - _DWORD *v125; // [esp+68h] [ebp-70h] - void *Block; // [esp+A8h] [ebp-30h] BYREF - size_t v127; // [esp+ACh] [ebp-2Ch] - int v128[10]; // [esp+B0h] [ebp-28h] BYREF - - v125 = a1; - v99 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v112 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v118 = *v112; - if ( !*v112 ) - { - v72 = operator new(0xA8u); - v72[1] = 0; - *v72 = &off_5605C0; - v72[2] = 0; - v72[3] = 0; - *((_BYTE *)v72 + 16) = 0; - v72[5] = 0; - v72[6] = 0; - v72[7] = 0; - v72[8] = 0; - v72[9] = 0; - *((_BYTE *)v72 + 164) = 0; - v92 = (std::locale::_Impl *)v72; - std::__numpunct_cache::_M_cache((int)v72, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v92, lpuexcpt, v91); - v118 = *v112; - } - v113 = 8; - v97 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v97 != 64 ) - { - v7 = 10; - if ( v97 == 8 ) - v7 = 16; - v113 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v73 = (__int16 *)a1[2]; - if ( (unsigned int)v73 >= a1[3] ) - v74 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v74 = *v73; - v75 = v74 == -1; - v76 = 0; - if ( !v75 ) - v76 = a1; - v77 = lpuexcpta && a1 != 0; - v125 = v76; - if ( !v75 ) - v77 = 0; - v103 = v77; - } - else - { - v103 = a2 == 0xFFFF; - } - v111 = a4 == -1; - if ( v111 && a3 != 0 ) - { - v78 = (__int16 *)a3[2]; - if ( (unsigned int)v78 >= a3[3] ) - v79 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v79 = *v78; - v80 = v79 == -1; - v81 = 0; - if ( !v80 ) - v81 = a3; - v82 = v111 && a3 != 0; - v99 = v81; - if ( !v80 ) - v82 = 0; - v115 = v82; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v103 ) - { - if ( v125 && a2 == 0xFFFF ) - { - v70 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v70 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v70; - v71 = 0; - if ( lpuexcptb != 0xFFFF ) - v71 = v125; - v125 = v71; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v118 + 16); - v95 = *(_WORD *)(v118 + 112) == lpuexcptb; - if ( *(_WORD *)(v118 + 112) == lpuexcptb || *(_WORD *)(v118 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v118 + 38) != lpuexcptb) && *(_WORD *)(v118 + 36) != lpuexcptb ) - { - v9 = v125[2]; - v10 = v125[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); - v11 = (__int16 *)v125[2]; - v10 = v125[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v125[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v125; - v106 = v13; - v125 = v14; - if ( v111 && v99 != 0 ) - { - v85 = (__int16 *)v99[2]; - if ( (unsigned int)v85 >= v99[3] ) - v86 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); - else - v86 = *v85; - v87 = v86 == -1; - v88 = 0; - if ( !v87 ) - v88 = v99; - v89 = v111 && v99 != 0; - v99 = v88; - if ( !v87 ) - v89 = 0; - v116 = v89; - } - else - { - v116 = a4 == -1; - } - if ( v106 == v116 ) - { - v102 = 1; - v100 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v125 ) - { - v83 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v83 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v83; - v84 = 0; - if ( lpuexcptb != 0xFFFF ) - v84 = v125; - v8 = *(_BYTE *)(v118 + 16); - v125 = v84; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v118 + 16); - } - } - } - else - { - v95 = 0; - } - v117 = 0; - v100 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v118 + 38) == lpuexcptb || *(_WORD *)(v118 + 36) == lpuexcptb ) - { -LABEL_179: - v102 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v118 + 120) != lpuexcptb ) - break; - v34 = v113 == 10 || !v117; - if ( !v34 ) - goto LABEL_36; - v117 = v97 == 0 || v113 == 8; - if ( !v117 ) - { - ++v100; - v117 = v34; - goto LABEL_40; - } - v100 = 0; - v15 = v125; - v113 = 8; - v16 = v125[2]; - v17 = v125[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( v17 > (unsigned int)v18 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); - v18 = (__int16 *)v125[2]; - if ( v125[3] > (unsigned int)v18 ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v125; - v104 = v20; - v125 = v21; - if ( v111 && v99 != 0 ) - { - v51 = (__int16 *)v99[2]; - if ( (unsigned int)v51 >= v99[3] ) - v52 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); - else - v52 = *v51; - v53 = v52 == -1; - v54 = 0; - if ( !v53 ) - v54 = v99; - v55 = v111 && v99 != 0; - v99 = v54; - if ( !v53 ) - v55 = 0; - v107 = v55; - } - else - { - v107 = a4 == -1; - } - if ( v107 == v104 ) - { - v102 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v125 ) - { - v35 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v35 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v35; - v36 = 0; - if ( lpuexcptb != 0xFFFF ) - v36 = v125; - v125 = v36; - } - if ( !v117 ) - { - v102 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v118 + 16); - } - if ( !v117 ) - goto LABEL_179; -LABEL_36: - if ( *(_WORD *)(v118 + 116) != lpuexcptb && *(_WORD *)(v118 + 118) != lpuexcptb ) - { - v102 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v97 != 0 && v113 != 16 ) - { - v102 = 0; - v93 = v113; - v94 = v113; - v117 = 1; - goto LABEL_52; - } - v100 = 0; - v117 = 0; - v113 = 16; -LABEL_40: - v15 = v125; - v16 = v125[2]; - v17 = v125[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v117 = 0; - v95 = 0; - lpuexcptb = 0; - v102 = 1; - v100 = 0; -LABEL_49: - v22 = 22; - if ( v113 != 16 ) - v22 = v113; - v93 = v22; - v94 = v22; -LABEL_52: - v127 = 0; - Block = v128; - LOBYTE(v128[0]) = 0; - if ( *(_BYTE *)(v118 + 16) ) - std::string::reserve(&Block, 0x20u); - v98 = v113; - v23 = 0xFFFFFFFFFFFFFFFFLL / v113; - v96 = *(_BYTE *)(v118 + 164); - if ( !v96 ) - { - if ( !v102 ) - { - v105 = 0; - v114 = 0LL; - while ( v94 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - v24 = lpuexcptb - 87; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v24 = lpuexcptb - 55; - } -LABEL_61: - if ( v23 >= v114 ) - { - v105 |= __PAIR64__(~(v24 >> 31), ~v24) < v98 * v114; - v25 = v125; - ++v100; - v26 = v125[2]; - v27 = v125[3]; - v114 = v98 * v114 + v24; - if ( v26 < v27 ) - { -LABEL_63: - v28 = (__int16 *)(v26 + 2); - v25[2] = v28; - goto LABEL_64; - } - } - else - { - v25 = v125; - v105 = 1; - v26 = v125[2]; - v27 = v125[3]; - if ( v26 < v27 ) - goto LABEL_63; - } - (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); - v28 = (__int16 *)v125[2]; - v27 = v125[3]; -LABEL_64: - if ( v27 <= (unsigned int)v28 ) - v29 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - v29 = *v28; - v30 = v29 == -1; - v31 = 0; - if ( !v30 ) - v31 = v125; - v108 = v30; - v125 = v31; - if ( v111 && v99 != 0 ) - { - v65 = (__int16 *)v99[2]; - if ( (unsigned int)v65 >= v99[3] ) - v66 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); - else - v66 = *v65; - v67 = v66 == -1; - v68 = 0; - if ( !v67 ) - v68 = v99; - v69 = v111 && v99 != 0; - v99 = v68; - if ( !v67 ) - v69 = 0; - lpuexcptc = v69; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v108 == lpuexcptc ) - { - v96 = 1; - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - goto LABEL_72; - } - if ( v125 ) - { - v56 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v56 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v56; - v57 = 0; - if ( lpuexcptb != 0xFFFF ) - v57 = v125; - v125 = v57; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v94 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v24 = lpuexcptb - 48; - goto LABEL_61; - } - v90 = v102; - v105 = 0; - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - v96 = v90; - v114 = 0LL; - goto LABEL_72; - } - if ( v102 ) - { - v114 = 0LL; - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - v96 = v102; - v105 = 0; - v102 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v117 || v100 ) - goto LABEL_111; - goto LABEL_75; - } - v105 = 0; - v114 = 0LL; - while ( 1 ) - { - if ( *(_BYTE *)(v118 + 16) && *(_WORD *)(v118 + 38) == lpuexcptb ) - { - v32 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v127; - if ( !v100 ) - { - v96 = 0; - v102 = *(_BYTE *)(v118 + 16); - goto LABEL_72; - } - v58 = 15; - v110 = v100; - if ( Block != v128 ) - v58 = v128[0]; - v101 = v127 + 1; - if ( v127 + 1 > v58 ) - { - std::string::_M_mutate((int)&Block, v127, 0, 0, 1u); - v32 = (int *)Block; - } - v59 = v101; - v100 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v32) = v110; - v127 = v59; - *((_BYTE *)Block + v59) = 0; -LABEL_126: - v42 = v125; - v43 = v125[2]; - v44 = v125[3]; - if ( v43 < v44 ) - goto LABEL_127; - goto LABEL_137; - } - if ( lpuexcptb == *(_WORD *)(v118 + 36) ) - break; - v37 = (_WORD *)(v118 + 120); - v38 = v93; - while ( *v37 != lpuexcptb ) - { - ++v37; - if ( !--v38 ) - goto LABEL_102; - } - v40 = (int)v37 - v118 - 120; - v41 = (v40 >> 1) - 6; - if ( v40 <= 30 ) - v41 = v40 >> 1; - if ( v23 < v114 ) - { - v105 = v96; - goto LABEL_126; - } - v105 |= __PAIR64__(~(v41 >> 31), ~v41) < v98 * v114; - v114 = v98 * v114 + v41; - ++v100; - v42 = v125; - v43 = v125[2]; - v44 = v125[3]; - if ( v43 < v44 ) - { -LABEL_127: - v45 = (__int16 *)(v43 + 2); - v42[2] = v45; - goto LABEL_128; - } -LABEL_137: - (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); - v45 = (__int16 *)v125[2]; - v44 = v125[3]; -LABEL_128: - if ( v44 <= (unsigned int)v45 ) - v46 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - v46 = *v45; - v47 = v46 == -1; - v48 = 0; - if ( !v47 ) - v48 = v125; - v109 = v47; - v125 = v48; - if ( v111 && v99 != 0 ) - { - v60 = (__int16 *)v99[2]; - if ( (unsigned int)v60 >= v99[3] ) - v61 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); - else - v61 = *v60; - v62 = v61 == -1; - v63 = 0; - if ( !v62 ) - v63 = v99; - v64 = v111 && v99 != 0; - v99 = v63; - if ( !v62 ) - v64 = 0; - lpuexcpte = v64; - } - else - { - lpuexcpte = a4 == -1; - } - if ( v109 == lpuexcpte ) - { - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - goto LABEL_72; - } - if ( v125 ) - { - v49 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v49 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v49; - v50 = 0; - if ( lpuexcptb != 0xFFFF ) - v50 = v125; - v125 = v50; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v96 = 0; - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - if ( !v127 ) - goto LABEL_73; -LABEL_103: - v39 = 15; - if ( v32 != v128 ) - v39 = v128[0]; - if ( (unsigned int)lpuexcptd + 1 > v39 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v32 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v32) = v100; - v127 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v118 + 8), *(_DWORD *)(v118 + 12), (int)&Block) ) - *a6 = 4; - v32 = (int *)Block; - if ( !v117 && !(v127 | v100) ) - { -LABEL_75: - *a7 = 0; - a7[1] = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v102 ) - goto LABEL_75; - if ( v105 ) - { - *a7 = -1; - a7[1] = -1; - *a6 = 4; - } - else - { - if ( v95 ) - v114 = -(__int64)v114; - *(_QWORD *)a7 = v114; - } -LABEL_76: - if ( v96 ) - *a6 |= 2u; - if ( v32 != v128 ) - operator delete(v32); - return v125; -} -// 4ABB6F: variable 'v91' is possibly undefined -// 53F72C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004ABFD0) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // al - unsigned int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - _DWORD *v12; // ecx - unsigned int v13; // eax - __int16 *v14; // eax - __int16 v15; // ax - char v16; // al - const char *v17; // eax - int v18; // edx - _DWORD *v19; // edx - int v20; // edx - _DWORD *v22; // ecx - unsigned int v23; // eax - __int16 *v24; // eax - __int16 v25; // ax - char v26; // al - bool v27; // al - char *v28; // eax - int v29; // edx - _WORD *v30; // eax - __int16 v31; // dx - _WORD *v32; // eax - _WORD *v33; // eax - __int16 v34; // dx - int v35; // eax - bool v36; // cc - int v37; // edx - int v38; // eax - _DWORD *v39; // ecx - unsigned int v40; // eax - __int16 *v41; // eax - __int16 v42; // ax - char v43; // al - _WORD *v44; // eax - char v45; // bl - const char *v46; // eax - _WORD *v47; // eax - __int16 v48; // dx - _WORD *v49; // eax - int v50; // edx - _WORD *v51; // eax - char v52; // bl - unsigned int v53; // [esp+4h] [ebp-94h] - bool v54; // [esp+1Bh] [ebp-7Dh] - int v55; // [esp+1Ch] [ebp-7Ch] - int v56; // [esp+20h] [ebp-78h] - unsigned int v57; // [esp+24h] [ebp-74h] - char v58; // [esp+28h] [ebp-70h] - char v59; // [esp+2Ah] [ebp-6Eh] - char v60; // [esp+2Bh] [ebp-6Dh] - char v61; // [esp+2Bh] [ebp-6Dh] - int v62; // [esp+2Ch] [ebp-6Ch] - char v63; // [esp+2Ch] [ebp-6Ch] - char v64; // [esp+2Ch] [ebp-6Ch] - int v65; // [esp+30h] [ebp-68h] - unsigned int v66; // [esp+34h] [ebp-64h] - char v67; // [esp+34h] [ebp-64h] - bool v68; // [esp+38h] [ebp-60h] - unsigned int v69; // [esp+3Ch] [ebp-5Ch] - unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - std::string *lpuexcptd; // [esp+40h] [ebp-58h] - struct _Unwind_Exception *v75; // [esp+48h] [ebp-50h] - int v76; // [esp+8Bh] [ebp-Dh] BYREF - const char *v77[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v75 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v62 = v6; - if ( v6 == 64 ) - { - v69 = 8; -LABEL_4: - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v65 = 0; - v68 = 0; - v55 = v69; - v56 = v69; - lpuexcpt = 0; - v54 = 0; - goto LABEL_18; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v69 = 10; - goto LABEL_4; - } - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v55 = 22; - lpuexcpt = 0; - v65 = 0; - v68 = 0; - v54 = 0; - v69 = 16; - v56 = 22; - goto LABEL_18; - } - v69 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v51 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v51; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v75 + 16); - v54 = *((_WORD *)v75 + 56) == lpuexcpt; - if ( *((_WORD *)v75 + 56) != lpuexcpt && *((_WORD *)v75 + 57) != lpuexcpt - || v7 && *((_WORD *)v75 + 19) == lpuexcpt - || *((_WORD *)v75 + 18) == lpuexcpt ) - { - goto LABEL_49; - } - v8 = *(_DWORD *)(a1 + 8); - if ( v8 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v8 + 2; - WORD2(a1) = -1; - v65 = 0; - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v68 = 0; - if ( !v60 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v75 + 16); -LABEL_49: - v65 = 0; - v68 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) - { -LABEL_116: - v60 = 0; - goto LABEL_15; - } - if ( *((_WORD *)v75 + 60) != lpuexcpt ) - break; - v27 = v69 == 10 || !v68; - if ( !v27 ) - goto LABEL_55; - v68 = v62 == 0 || v69 == 8; - if ( !v68 ) - { - ++v65; - v68 = v27; - goto LABEL_59; - } - v22 = (_DWORD *)a1; - v65 = 0; - v69 = 8; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - { -LABEL_60: - v22[2] = v23 + 2; - WORD2(a1) = -1; - goto LABEL_61; - } -LABEL_71: - (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - v22 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v67 = 1; - goto LABEL_65; - } -LABEL_61: - v24 = (__int16 *)v22[2]; - if ( (unsigned int)v24 >= v22[3] ) - v25 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - else - v25 = *v24; - v67 = 0; - if ( v25 == -1 ) - { - LODWORD(a1) = 0; - v67 = 1; - } -LABEL_65: - v26 = a3 == -1; - v61 = v26 & (a2 != 0); - if ( v61 ) - { - v30 = (_WORD *)a2[2]; - v31 = (unsigned int)v30 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v30; - v26 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v26 = v61; - } - } - if ( v26 == v67 ) - { - v60 = 1; - goto LABEL_15; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v49 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v68 ) - goto LABEL_116; - v7 = *((_BYTE *)v75 + 16); - } - if ( !v68 ) - goto LABEL_116; -LABEL_55: - if ( *((_WORD *)v75 + 58) != lpuexcpt && *((_WORD *)v75 + 59) != lpuexcpt ) - { - v60 = 0; - v68 = 1; - goto LABEL_15; - } - if ( v62 != 0 && v69 != 16 ) - { - v60 = 0; - v68 = 1; - v55 = v69; - v56 = v69; - goto LABEL_18; - } - v65 = 0; - v68 = 0; - v69 = 16; -LABEL_59: - v22 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - goto LABEL_60; - goto LABEL_71; - } -LABEL_15: - v9 = 22; - if ( v69 != 16 ) - v9 = v69; - v55 = v9; - v56 = v9; -LABEL_18: - v77[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v75 + 16) ) - std::string::reserve((int *)v77, (std::string *)0x20, v53); - v57 = 0xFFFFFFFF / v69; - v63 = *((_BYTE *)v75 + 164); - if ( v63 ) - { - if ( v60 ) - { - v17 = v77[0]; - v66 = 0; - v59 = 0; - v63 = v60; - v18 = *((_DWORD *)v77[0] - 3); - v60 = 0; -LABEL_37: - if ( v18 ) - goto LABEL_86; - goto LABEL_38; - } - v59 = 0; - v66 = 0; - while ( !*((_BYTE *)v75 + 16) || *((_WORD *)v75 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v75 + 18) ) - goto LABEL_85; - v28 = (char *)v75 + 120; - v29 = v55; - while ( lpuexcpt != *(_WORD *)v28 ) - { - v28 += 2; - if ( !--v29 ) - goto LABEL_85; - } - v35 = v28 - ((char *)v75 + 120); - v36 = v35 <= 30; - v37 = (v35 >> 1) - 6; - v38 = v35 >> 1; - if ( !v36 ) - v38 = v37; - if ( v57 < v66 ) - { - v59 = v63; - goto LABEL_123; - } - v59 |= ~v38 < v69 * v66; - v39 = (_DWORD *)a1; - v66 = v69 * v66 + v38; - ++v65; - v40 = *(_DWORD *)(a1 + 8); - if ( v40 < *(_DWORD *)(a1 + 12) ) - { -LABEL_124: - v39[2] = v40 + 2; - WORD2(a1) = -1; - goto LABEL_125; - } -LABEL_133: - (*(void (__fastcall **)(_DWORD *))(*v39 + 40))(v39); - v39 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v63; - goto LABEL_129; - } -LABEL_125: - v41 = (__int16 *)v39[2]; - if ( (unsigned int)v41 >= v39[3] ) - v42 = (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39); - else - v42 = *v41; - lpuexcptc = 0; - if ( v42 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v63; - } -LABEL_129: - v43 = a3 == -1; - v58 = v43 & (a2 != 0); - if ( v58 ) - { - v47 = (_WORD *)a2[2]; - v48 = (unsigned int)v47 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v47; - v43 = 0; - if ( v48 == -1 ) - { - a2 = 0; - v43 = v58; - } - } - if ( lpuexcptc == v43 ) - { - v17 = v77[0]; - v18 = *((_DWORD *)v77[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v44 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v44 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v44; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v17 = v77[0]; - v18 = *((_DWORD *)v77[0] - 3); - if ( !v65 ) - { - v63 = 0; - v60 = *((_BYTE *)v75 + 16); - goto LABEL_37; - } - lpuexcptd = (std::string *)(v18 + 1); - if ( (unsigned int)(v18 + 1) > *((_DWORD *)v77[0] - 2) || *((int *)v77[0] - 1) > 0 ) - std::string::reserve((int *)v77, lpuexcptd, v53); - v45 = v65; - v65 = 0; - v77[0][*((_DWORD *)v77[0] - 3)] = v45; - v46 = v77[0]; - *((_DWORD *)v77[0] - 1) = 0; - *((_DWORD *)v46 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v46) = 0; -LABEL_123: - v39 = (_DWORD *)a1; - v40 = *(_DWORD *)(a1 + 8); - if ( v40 < *(_DWORD *)(a1 + 12) ) - goto LABEL_124; - goto LABEL_133; - } - if ( v60 ) - { - v52 = v60; - v17 = v77[0]; - v59 = 0; - v60 = 0; - v63 = v52; - v18 = *((_DWORD *)v77[0] - 3); - v66 = 0; - goto LABEL_37; - } - v59 = 0; - v66 = 0; -LABEL_23: - v10 = lpuexcpt; - if ( v56 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_26: - v11 = lpuexcpt - 48; -LABEL_27: - if ( v57 >= v66 ) - goto LABEL_97; -LABEL_28: - v12 = (_DWORD *)a1; - v59 = 1; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_98; -LABEL_29: - v12[2] = v13 + 2; - WORD2(a1) = -1; -LABEL_30: - v14 = (__int16 *)v12[2]; - if ( (unsigned int)v14 >= v12[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v15 = *v14; - lpuexcpta = 0; - if ( v15 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - goto LABEL_34; - } - while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) - { - v11 = v10 - 87; - if ( v57 < v66 ) - goto LABEL_28; -LABEL_97: - v59 |= ~v11 < v69 * v66; - v12 = (_DWORD *)a1; - v66 = v69 * v66 + v11; - ++v65; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - goto LABEL_29; -LABEL_98: - (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_30; - lpuexcpta = 1; -LABEL_34: - v16 = a3 == -1; - v64 = v16 & (a2 != 0); - if ( v64 ) - { - v33 = (_WORD *)a2[2]; - v34 = (unsigned int)v33 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v33; - v16 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v16 = v64; - } - } - if ( lpuexcpta == v16 ) - { - v17 = v77[0]; - v63 = 1; - v18 = *((_DWORD *)v77[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) - goto LABEL_23; - v32 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v32 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v32; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_23; - LODWORD(a1) = 0; - v10 = 0xFFFF; - if ( v56 <= 10 ) - goto LABEL_85; - } - if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) - { - v11 = v10 - 55; - goto LABEL_27; - } - } - else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v56 + 48) > lpuexcpt ) - { - goto LABEL_26; - } -LABEL_85: - v17 = v77[0]; - v63 = 0; - if ( *((_DWORD *)v77[0] - 3) ) - { -LABEL_86: - std::string::push_back((int *)v77, (std::string *)(char)v65, v53); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v75 + 2), *((_DWORD *)v75 + 3), v77) ) - *a5 = 4; - v17 = v77[0]; - if ( !v65 && !v68 && !*((_DWORD *)v77[0] - 3) ) - goto LABEL_40; - goto LABEL_91; - } -LABEL_38: - if ( !v65 && !v68 ) - goto LABEL_40; -LABEL_91: - if ( v60 ) - { -LABEL_40: - v19 = a5; - *a6 = 0; - *v19 = 4; - goto LABEL_41; - } - if ( v59 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v50 = -v66; - if ( !v54 ) - v50 = v66; - *a6 = v50; - } -LABEL_41: - if ( v63 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_156: - std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v76); - return lpuexcptb; - } - v20 = *((_DWORD *)v17 - 1); - *((_DWORD *)v17 - 1) = v20 - 1; - if ( v20 <= 0 ) - goto LABEL_156; - return lpuexcptb; -} -// 4AC977: variable 'v53' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004ACC10) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // al - int v8; // eax - int v9; // eax - int v10; // eax - _DWORD *v11; // ecx - unsigned int v12; // eax - __int16 *v13; // eax - __int16 v14; // ax - char v15; // al - const char *v16; // eax - int v17; // edx - _DWORD *v18; // ecx - int v19; // edx - _DWORD *v21; // ecx - unsigned int v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - char v25; // al - bool v26; // al - char *v27; // eax - int v28; // edx - _WORD *v29; // eax - __int16 v30; // dx - _WORD *v31; // eax - _WORD *v32; // eax - __int16 v33; // dx - int v34; // eax - bool v35; // cc - int v36; // edx - int v37; // eax - _DWORD *v38; // ecx - unsigned int v39; // eax - __int16 *v40; // eax - __int16 v41; // ax - char v42; // al - _WORD *v43; // eax - char v44; // bl - const char *v45; // eax - _WORD *v46; // eax - __int16 v47; // dx - _WORD *v48; // eax - int v49; // edx - _WORD *v50; // eax - char v51; // bl - unsigned int v52; // [esp+4h] [ebp-94h] - bool v53; // [esp+14h] [ebp-84h] - int v54; // [esp+18h] [ebp-80h] - unsigned int v55; // [esp+1Ch] [ebp-7Ch] - int v56; // [esp+20h] [ebp-78h] - unsigned int v57; // [esp+24h] [ebp-74h] - char v58; // [esp+28h] [ebp-70h] - char v59; // [esp+2Ah] [ebp-6Eh] - char v60; // [esp+2Bh] [ebp-6Dh] - char v61; // [esp+2Bh] [ebp-6Dh] - int v62; // [esp+2Ch] [ebp-6Ch] - char v63; // [esp+2Ch] [ebp-6Ch] - char v64; // [esp+2Ch] [ebp-6Ch] - int v65; // [esp+30h] [ebp-68h] - unsigned int v66; // [esp+34h] [ebp-64h] - char v67; // [esp+34h] [ebp-64h] - bool v68; // [esp+38h] [ebp-60h] - unsigned int v69; // [esp+3Ch] [ebp-5Ch] - unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - std::string *lpuexcptd; // [esp+40h] [ebp-58h] - struct _Unwind_Exception *v75; // [esp+48h] [ebp-50h] - int v76; // [esp+8Bh] [ebp-Dh] BYREF - const char *v77[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v75 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v62 = v6; - if ( v6 == 64 ) - { - v69 = 8; -LABEL_4: - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v65 = 0; - v68 = 0; - v54 = v69; - v56 = v69; - lpuexcpt = 0; - v53 = 0; - goto LABEL_16; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v69 = 10; - goto LABEL_4; - } - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v54 = 22; - lpuexcpt = 0; - v65 = 0; - v68 = 0; - v53 = 0; - v69 = 16; - v56 = 22; - goto LABEL_16; - } - v69 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v50 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v50; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v75 + 16); - v53 = *((_WORD *)v75 + 56) == lpuexcpt; - if ( *((_WORD *)v75 + 56) != lpuexcpt && *((_WORD *)v75 + 57) != lpuexcpt - || v7 && *((_WORD *)v75 + 19) == lpuexcpt - || *((_WORD *)v75 + 18) == lpuexcpt ) - { - goto LABEL_47; - } - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v65 = 0; - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v68 = 0; - if ( !v60 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v75 + 16); -LABEL_47: - v65 = 0; - v68 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) - { -LABEL_114: - v60 = 0; - goto LABEL_13; - } - if ( *((_WORD *)v75 + 60) != lpuexcpt ) - break; - v26 = v69 == 10 || !v68; - if ( !v26 ) - goto LABEL_53; - v68 = v62 == 0 || v69 == 8; - if ( !v68 ) - { - ++v65; - v68 = v26; - goto LABEL_57; - } - v21 = (_DWORD *)a1; - v65 = 0; - v69 = 8; - v22 = *(_DWORD *)(a1 + 8); - if ( v22 < *(_DWORD *)(a1 + 12) ) - { -LABEL_58: - v21[2] = v22 + 2; - WORD2(a1) = -1; - goto LABEL_59; - } -LABEL_69: - (*(void (__fastcall **)(_DWORD *))(*v21 + 40))(v21); - v21 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v67 = 1; - goto LABEL_63; - } -LABEL_59: - v23 = (__int16 *)v21[2]; - if ( (unsigned int)v23 >= v21[3] ) - v24 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); - else - v24 = *v23; - v67 = 0; - if ( v24 == -1 ) - { - LODWORD(a1) = 0; - v67 = 1; - } -LABEL_63: - v25 = a3 == -1; - v61 = v25 & (a2 != 0); - if ( v61 ) - { - v29 = (_WORD *)a2[2]; - v30 = (unsigned int)v29 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v29; - v25 = 0; - if ( v30 == -1 ) - { - a2 = 0; - v25 = v61; - } - } - if ( v25 == v67 ) - { - v60 = 1; - goto LABEL_13; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v48 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v48; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v68 ) - goto LABEL_114; - v7 = *((_BYTE *)v75 + 16); - } - if ( !v68 ) - goto LABEL_114; -LABEL_53: - if ( *((_WORD *)v75 + 58) != lpuexcpt && *((_WORD *)v75 + 59) != lpuexcpt ) - { - v60 = 0; - v68 = 1; - goto LABEL_13; - } - if ( v69 != 16 && v62 != 0 ) - { - v60 = 0; - v68 = 1; - v54 = v69; - v56 = v69; - goto LABEL_16; - } - v65 = 0; - v68 = 0; - v69 = 16; -LABEL_57: - v21 = (_DWORD *)a1; - v22 = *(_DWORD *)(a1 + 8); - if ( v22 < *(_DWORD *)(a1 + 12) ) - goto LABEL_58; - goto LABEL_69; - } -LABEL_13: - v8 = 22; - if ( v69 != 16 ) - v8 = v69; - v54 = v8; - v56 = v8; -LABEL_16: - v77[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v75 + 16) ) - std::string::reserve((int *)v77, (std::string *)0x20, v52); - v55 = v53 + 0x7FFFFFFF; - v57 = v55 / v69; - v63 = *((_BYTE *)v75 + 164); - if ( v63 ) - { - if ( v60 ) - { - v16 = v77[0]; - v66 = 0; - v59 = 0; - v63 = v60; - v17 = *((_DWORD *)v77[0] - 3); - v60 = 0; -LABEL_35: - if ( v17 ) - goto LABEL_84; - goto LABEL_36; - } - v59 = 0; - v66 = 0; - while ( !*((_BYTE *)v75 + 16) || *((_WORD *)v75 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v75 + 18) ) - goto LABEL_83; - v27 = (char *)v75 + 120; - v28 = v54; - while ( *(_WORD *)v27 != lpuexcpt ) - { - v27 += 2; - if ( !--v28 ) - goto LABEL_83; - } - v34 = v27 - ((char *)v75 + 120); - v35 = v34 <= 30; - v36 = (v34 >> 1) - 6; - v37 = v34 >> 1; - if ( !v35 ) - v37 = v36; - if ( v57 < v66 ) - { - v59 = v63; - goto LABEL_121; - } - v59 |= v55 - v37 < v69 * v66; - v38 = (_DWORD *)a1; - v66 = v69 * v66 + v37; - ++v65; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - { -LABEL_122: - v38[2] = v39 + 2; - WORD2(a1) = -1; - goto LABEL_123; - } -LABEL_131: - (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); - v38 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v63; - goto LABEL_127; - } -LABEL_123: - v40 = (__int16 *)v38[2]; - if ( (unsigned int)v40 >= v38[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38); - else - v41 = *v40; - lpuexcptc = 0; - if ( v41 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v63; - } -LABEL_127: - v42 = a3 == -1; - v58 = v42 & (a2 != 0); - if ( v58 ) - { - v46 = (_WORD *)a2[2]; - v47 = (unsigned int)v46 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v46; - v42 = 0; - if ( v47 == -1 ) - { - a2 = 0; - v42 = v58; - } - } - if ( v42 == lpuexcptc ) - { - v16 = v77[0]; - v17 = *((_DWORD *)v77[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v43 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v43; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v16 = v77[0]; - v17 = *((_DWORD *)v77[0] - 3); - if ( !v65 ) - { - v63 = 0; - v60 = *((_BYTE *)v75 + 16); - goto LABEL_35; - } - lpuexcptd = (std::string *)(v17 + 1); - if ( (unsigned int)(v17 + 1) > *((_DWORD *)v77[0] - 2) || *((int *)v77[0] - 1) > 0 ) - std::string::reserve((int *)v77, lpuexcptd, v52); - v44 = v65; - v65 = 0; - v77[0][*((_DWORD *)v77[0] - 3)] = v44; - v45 = v77[0]; - *((_DWORD *)v77[0] - 1) = 0; - *((_DWORD *)v45 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v45) = 0; -LABEL_121: - v38 = (_DWORD *)a1; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - goto LABEL_122; - goto LABEL_131; - } - if ( v60 ) - { - v51 = v60; - v16 = v77[0]; - v59 = 0; - v60 = 0; - v63 = v51; - v17 = *((_DWORD *)v77[0] - 3); - v66 = 0; - goto LABEL_35; - } - v59 = 0; - v66 = 0; -LABEL_21: - v9 = lpuexcpt; - if ( v56 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_24: - v10 = lpuexcpt - 48; -LABEL_25: - if ( v57 >= v66 ) - goto LABEL_95; -LABEL_26: - v11 = (_DWORD *)a1; - v59 = 1; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_96; -LABEL_27: - v11[2] = v12 + 2; - WORD2(a1) = -1; -LABEL_28: - v13 = (__int16 *)v11[2]; - if ( (unsigned int)v13 >= v11[3] ) - v14 = (*(int (__fastcall **)(_DWORD *))(*v11 + 36))(v11); - else - v14 = *v13; - lpuexcpta = 0; - if ( v14 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - goto LABEL_32; - } - while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) - { - v10 = v9 - 87; - if ( v57 < v66 ) - goto LABEL_26; -LABEL_95: - v59 |= v55 - v10 < v69 * v66; - v11 = (_DWORD *)a1; - v66 = v69 * v66 + v10; - ++v65; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 < *(_DWORD *)(a1 + 12) ) - goto LABEL_27; -LABEL_96: - (*(void (__fastcall **)(_DWORD *))(*v11 + 40))(v11); - v11 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_28; - lpuexcpta = 1; -LABEL_32: - v15 = a3 == -1; - v64 = v15 & (a2 != 0); - if ( v64 ) - { - v32 = (_WORD *)a2[2]; - v33 = (unsigned int)v32 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v32; - v15 = 0; - if ( v33 == -1 ) - { - a2 = 0; - v15 = v64; - } - } - if ( v15 == lpuexcpta ) - { - v16 = v77[0]; - v63 = 1; - v17 = *((_DWORD *)v77[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_21; - v31 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v31 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v31; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_21; - LODWORD(a1) = 0; - v9 = 0xFFFF; - if ( v56 <= 10 ) - goto LABEL_83; - } - if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) - { - v10 = v9 - 55; - goto LABEL_25; - } - } - else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v56 + 48) > lpuexcpt ) - { - goto LABEL_24; - } -LABEL_83: - v16 = v77[0]; - v63 = 0; - if ( *((_DWORD *)v77[0] - 3) ) - { -LABEL_84: - std::string::push_back((int *)v77, (std::string *)(char)v65, v52); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v75 + 2), *((_DWORD *)v75 + 3), v77) ) - *a5 = 4; - v16 = v77[0]; - if ( !v65 && !v68 && !*((_DWORD *)v77[0] - 3) ) - goto LABEL_38; - goto LABEL_89; - } -LABEL_36: - if ( !v65 && !v68 ) - goto LABEL_38; -LABEL_89: - if ( v60 ) - { -LABEL_38: - v18 = a5; - *a6 = 0; - *v18 = 4; - goto LABEL_39; - } - if ( v59 ) - { - *a6 = v53 + 0x7FFFFFFF; - *a5 = 4; - } - else - { - v49 = -v66; - if ( !v53 ) - v49 = v66; - *a6 = v49; - } -LABEL_39: - if ( v63 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_154: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v76); - return lpuexcptb; - } - v19 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v19 - 1; - if ( v19 <= 0 ) - goto LABEL_154; - return lpuexcptb; -} -// 4AD5C7: variable 'v52' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004AD850) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // al - int v8; // eax - int v9; // eax - int v10; // eax - _DWORD *v11; // ecx - unsigned int v12; // eax - __int16 *v13; // eax - __int16 v14; // ax - char v15; // al - const char *v16; // eax - int v17; // edx - _DWORD *v18; // ecx - int v19; // edx - _DWORD *v21; // ecx - unsigned int v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - char v25; // al - bool v26; // al - char *v27; // eax - int v28; // edx - _WORD *v29; // eax - __int16 v30; // dx - _WORD *v31; // eax - _WORD *v32; // eax - __int16 v33; // dx - int v34; // eax - bool v35; // cc - int v36; // edx - int v37; // eax - _DWORD *v38; // ecx - unsigned int v39; // eax - __int16 *v40; // eax - __int16 v41; // ax - char v42; // al - _WORD *v43; // eax - char v44; // bl - const char *v45; // eax - _WORD *v46; // eax - __int16 v47; // dx - _WORD *v48; // eax - int v49; // edx - _WORD *v50; // eax - char v51; // bl - unsigned int v52; // [esp+4h] [ebp-94h] - bool v53; // [esp+1Bh] [ebp-7Dh] - int v54; // [esp+1Ch] [ebp-7Ch] - int v55; // [esp+20h] [ebp-78h] - unsigned int v56; // [esp+24h] [ebp-74h] - char v57; // [esp+28h] [ebp-70h] - char v58; // [esp+2Ah] [ebp-6Eh] - char v59; // [esp+2Bh] [ebp-6Dh] - char v60; // [esp+2Bh] [ebp-6Dh] - int v61; // [esp+2Ch] [ebp-6Ch] - char v62; // [esp+2Ch] [ebp-6Ch] - char v63; // [esp+2Ch] [ebp-6Ch] - int v64; // [esp+30h] [ebp-68h] - unsigned int v65; // [esp+34h] [ebp-64h] - char v66; // [esp+34h] [ebp-64h] - bool v67; // [esp+38h] [ebp-60h] - unsigned int v68; // [esp+3Ch] [ebp-5Ch] - unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - std::string *lpuexcptd; // [esp+40h] [ebp-58h] - struct _Unwind_Exception *v74; // [esp+48h] [ebp-50h] - int v75; // [esp+8Bh] [ebp-Dh] BYREF - const char *v76[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v74 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v61 = v6; - if ( v6 == 64 ) - { - v68 = 8; -LABEL_4: - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - v64 = 0; - v67 = 0; - v54 = v68; - v55 = v68; - lpuexcpt = 0; - v53 = 0; - goto LABEL_16; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v68 = 10; - goto LABEL_4; - } - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - v54 = 22; - lpuexcpt = 0; - v64 = 0; - v67 = 0; - v53 = 0; - v68 = 16; - v55 = 22; - goto LABEL_16; - } - v68 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v50 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v50; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v74 + 16); - v53 = *((_WORD *)v74 + 56) == lpuexcpt; - if ( *((_WORD *)v74 + 56) != lpuexcpt && *((_WORD *)v74 + 57) != lpuexcpt - || v7 && *((_WORD *)v74 + 19) == lpuexcpt - || *((_WORD *)v74 + 18) == lpuexcpt ) - { - goto LABEL_47; - } - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v64 = 0; - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v67 = 0; - if ( !v59 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v74 + 16); -LABEL_47: - v64 = 0; - v67 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v74 + 19) == lpuexcpt || *((_WORD *)v74 + 18) == lpuexcpt ) - { -LABEL_114: - v59 = 0; - goto LABEL_13; - } - if ( *((_WORD *)v74 + 60) != lpuexcpt ) - break; - v26 = v68 == 10 || !v67; - if ( !v26 ) - goto LABEL_53; - v67 = v61 == 0 || v68 == 8; - if ( !v67 ) - { - ++v64; - v67 = v26; - goto LABEL_57; - } - v21 = (_DWORD *)a1; - v64 = 0; - v68 = 8; - v22 = *(_DWORD *)(a1 + 8); - if ( v22 < *(_DWORD *)(a1 + 12) ) - { -LABEL_58: - v21[2] = v22 + 2; - WORD2(a1) = -1; - goto LABEL_59; - } -LABEL_69: - (*(void (__fastcall **)(_DWORD *))(*v21 + 40))(v21); - v21 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v66 = 1; - goto LABEL_63; - } -LABEL_59: - v23 = (__int16 *)v21[2]; - if ( (unsigned int)v23 >= v21[3] ) - v24 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); - else - v24 = *v23; - v66 = 0; - if ( v24 == -1 ) - { - LODWORD(a1) = 0; - v66 = 1; - } -LABEL_63: - v25 = a3 == -1; - v60 = v25 & (a2 != 0); - if ( v60 ) - { - v29 = (_WORD *)a2[2]; - v30 = (unsigned int)v29 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v29; - v25 = 0; - if ( v30 == -1 ) - { - a2 = 0; - v25 = v60; - } - } - if ( v66 == v25 ) - { - v59 = 1; - goto LABEL_13; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v48 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v48; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v67 ) - goto LABEL_114; - v7 = *((_BYTE *)v74 + 16); - } - if ( !v67 ) - goto LABEL_114; -LABEL_53: - if ( *((_WORD *)v74 + 58) != lpuexcpt && *((_WORD *)v74 + 59) != lpuexcpt ) - { - v59 = 0; - v67 = 1; - goto LABEL_13; - } - if ( v68 != 16 && v61 != 0 ) - { - v59 = 0; - v67 = 1; - v54 = v68; - v55 = v68; - goto LABEL_16; - } - v64 = 0; - v67 = 0; - v68 = 16; -LABEL_57: - v21 = (_DWORD *)a1; - v22 = *(_DWORD *)(a1 + 8); - if ( v22 < *(_DWORD *)(a1 + 12) ) - goto LABEL_58; - goto LABEL_69; - } -LABEL_13: - v8 = 22; - if ( v68 != 16 ) - v8 = v68; - v54 = v8; - v55 = v8; -LABEL_16: - v76[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v74 + 16) ) - std::string::reserve((int *)v76, (std::string *)0x20, v52); - v56 = 0xFFFFFFFF / v68; - v62 = *((_BYTE *)v74 + 164); - if ( v62 ) - { - if ( v59 ) - { - v16 = v76[0]; - v65 = 0; - v58 = 0; - v62 = v59; - v17 = *((_DWORD *)v76[0] - 3); - v59 = 0; -LABEL_35: - if ( v17 ) - goto LABEL_84; - goto LABEL_36; - } - v58 = 0; - v65 = 0; - while ( !*((_BYTE *)v74 + 16) || *((_WORD *)v74 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v74 + 18) ) - goto LABEL_83; - v27 = (char *)v74 + 120; - v28 = v54; - while ( *(_WORD *)v27 != lpuexcpt ) - { - v27 += 2; - if ( !--v28 ) - goto LABEL_83; - } - v34 = v27 - ((char *)v74 + 120); - v35 = v34 <= 30; - v36 = (v34 >> 1) - 6; - v37 = v34 >> 1; - if ( !v35 ) - v37 = v36; - if ( v56 < v65 ) - { - v58 = v62; - goto LABEL_121; - } - v58 |= ~v37 < v68 * v65; - v38 = (_DWORD *)a1; - v65 = v68 * v65 + v37; - ++v64; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - { -LABEL_122: - v38[2] = v39 + 2; - WORD2(a1) = -1; - goto LABEL_123; - } -LABEL_131: - (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); - v38 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v62; - goto LABEL_127; - } -LABEL_123: - v40 = (__int16 *)v38[2]; - if ( (unsigned int)v40 >= v38[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38); - else - v41 = *v40; - lpuexcptc = 0; - if ( v41 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v62; - } -LABEL_127: - v42 = a3 == -1; - v57 = v42 & (a2 != 0); - if ( v57 ) - { - v46 = (_WORD *)a2[2]; - v47 = (unsigned int)v46 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v46; - v42 = 0; - if ( v47 == -1 ) - { - a2 = 0; - v42 = v57; - } - } - if ( v42 == lpuexcptc ) - { - v16 = v76[0]; - v17 = *((_DWORD *)v76[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v43 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v43; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v16 = v76[0]; - v17 = *((_DWORD *)v76[0] - 3); - if ( !v64 ) - { - v62 = 0; - v59 = *((_BYTE *)v74 + 16); - goto LABEL_35; - } - lpuexcptd = (std::string *)(v17 + 1); - if ( (unsigned int)(v17 + 1) > *((_DWORD *)v76[0] - 2) || *((int *)v76[0] - 1) > 0 ) - std::string::reserve((int *)v76, lpuexcptd, v52); - v44 = v64; - v64 = 0; - v76[0][*((_DWORD *)v76[0] - 3)] = v44; - v45 = v76[0]; - *((_DWORD *)v76[0] - 1) = 0; - *((_DWORD *)v45 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v45) = 0; -LABEL_121: - v38 = (_DWORD *)a1; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - goto LABEL_122; - goto LABEL_131; - } - if ( v59 ) - { - v51 = v59; - v16 = v76[0]; - v58 = 0; - v59 = 0; - v62 = v51; - v17 = *((_DWORD *)v76[0] - 3); - v65 = 0; - goto LABEL_35; - } - v58 = 0; - v65 = 0; -LABEL_21: - v9 = lpuexcpt; - if ( v55 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_24: - v10 = lpuexcpt - 48; -LABEL_25: - if ( v56 >= v65 ) - goto LABEL_95; -LABEL_26: - v11 = (_DWORD *)a1; - v58 = 1; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_96; -LABEL_27: - v11[2] = v12 + 2; - WORD2(a1) = -1; -LABEL_28: - v13 = (__int16 *)v11[2]; - if ( (unsigned int)v13 >= v11[3] ) - v14 = (*(int (__fastcall **)(_DWORD *))(*v11 + 36))(v11); - else - v14 = *v13; - lpuexcpta = 0; - if ( v14 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - goto LABEL_32; - } - while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) - { - v10 = v9 - 87; - if ( v56 < v65 ) - goto LABEL_26; -LABEL_95: - v58 |= ~v10 < v68 * v65; - v11 = (_DWORD *)a1; - v65 = v68 * v65 + v10; - ++v64; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 < *(_DWORD *)(a1 + 12) ) - goto LABEL_27; -LABEL_96: - (*(void (__fastcall **)(_DWORD *))(*v11 + 40))(v11); - v11 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_28; - lpuexcpta = 1; -LABEL_32: - v15 = a3 == -1; - v63 = v15 & (a2 != 0); - if ( v63 ) - { - v32 = (_WORD *)a2[2]; - v33 = (unsigned int)v32 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v32; - v15 = 0; - if ( v33 == -1 ) - { - a2 = 0; - v15 = v63; - } - } - if ( v15 == lpuexcpta ) - { - v16 = v76[0]; - v62 = 1; - v17 = *((_DWORD *)v76[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_21; - v31 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v31 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v31; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_21; - LODWORD(a1) = 0; - v9 = 0xFFFF; - if ( v55 <= 10 ) - goto LABEL_83; - } - if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) - { - v10 = v9 - 55; - goto LABEL_25; - } - } - else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v55 + 48) > lpuexcpt ) - { - goto LABEL_24; - } -LABEL_83: - v16 = v76[0]; - v62 = 0; - if ( *((_DWORD *)v76[0] - 3) ) - { -LABEL_84: - std::string::push_back((int *)v76, (std::string *)(char)v64, v52); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v74 + 2), *((_DWORD *)v74 + 3), v76) ) - *a5 = 4; - v16 = v76[0]; - if ( !v64 && !v67 && !*((_DWORD *)v76[0] - 3) ) - goto LABEL_38; - goto LABEL_89; - } -LABEL_36: - if ( !v64 && !v67 ) - goto LABEL_38; -LABEL_89: - if ( v59 ) - { -LABEL_38: - v18 = a5; - *a6 = 0; - *v18 = 4; - goto LABEL_39; - } - if ( v58 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v49 = -v65; - if ( !v53 ) - v49 = v65; - *a6 = v49; - } -LABEL_39: - if ( v62 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_154: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v75); - return lpuexcptb; - } - v19 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v19 - 1; - if ( v19 <= 0 ) - goto LABEL_154; - return lpuexcptb; -} -// 4AE1E7: variable 'v52' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004AE460) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - _WORD *a6) -{ - int v6; // eax - char v7; // al - unsigned int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - _DWORD *v12; // ecx - unsigned int v13; // eax - __int16 *v14; // eax - __int16 v15; // ax - char v16; // al - const char *v17; // eax - int v18; // edx - _DWORD *v19; // edx - int v20; // edx - _DWORD *v22; // ecx - unsigned int v23; // eax - __int16 *v24; // eax - __int16 v25; // ax - char v26; // al - bool v27; // al - char *v28; // eax - int v29; // edx - _WORD *v30; // eax - __int16 v31; // dx - _WORD *v32; // eax - _WORD *v33; // eax - __int16 v34; // dx - int v35; // eax - bool v36; // cc - int v37; // edx - int v38; // eax - _DWORD *v39; // ecx - unsigned int v40; // eax - __int16 *v41; // eax - __int16 v42; // ax - char v43; // al - _WORD *v44; // eax - char v45; // bl - const char *v46; // eax - _WORD *v47; // eax - __int16 v48; // dx - _WORD *v49; // eax - int v50; // edx - _WORD *v51; // eax - char v52; // bl - unsigned int v53; // [esp+4h] [ebp-94h] - int v54; // [esp+1Ch] [ebp-7Ch] - bool v55; // [esp+21h] [ebp-77h] - char v56; // [esp+22h] [ebp-76h] - int v57; // [esp+24h] [ebp-74h] - int v58; // [esp+28h] [ebp-70h] - int v59; // [esp+2Ch] [ebp-6Ch] - char v60; // [esp+2Ch] [ebp-6Ch] - char v61; // [esp+2Ch] [ebp-6Ch] - int v62; // [esp+30h] [ebp-68h] - char v63; // [esp+34h] [ebp-64h] - char v64; // [esp+35h] [ebp-63h] - char v65; // [esp+35h] [ebp-63h] - unsigned __int16 v66; // [esp+36h] [ebp-62h] - char v67; // [esp+36h] [ebp-62h] - bool v68; // [esp+38h] [ebp-60h] - int v69; // [esp+3Ch] [ebp-5Ch] - unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - std::string *lpuexcptd; // [esp+40h] [ebp-58h] - struct _Unwind_Exception *v75; // [esp+48h] [ebp-50h] - int v76; // [esp+8Bh] [ebp-Dh] BYREF - const char *v77[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v75 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v59 = v6; - if ( v6 == 64 ) - { - v69 = 8; -LABEL_4: - v64 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v64 ) - { - v62 = 0; - v68 = 0; - v54 = v69; - v57 = v69; - lpuexcpt = 0; - v55 = 0; - goto LABEL_18; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v69 = 10; - goto LABEL_4; - } - v64 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v64 ) - { - v54 = 22; - lpuexcpt = 0; - v62 = 0; - v68 = 0; - v55 = 0; - v69 = 16; - v57 = 22; - goto LABEL_18; - } - v69 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v51 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v51; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v75 + 16); - v55 = *((_WORD *)v75 + 56) == lpuexcpt; - if ( *((_WORD *)v75 + 56) != lpuexcpt && *((_WORD *)v75 + 57) != lpuexcpt - || v7 && *((_WORD *)v75 + 19) == lpuexcpt - || *((_WORD *)v75 + 18) == lpuexcpt ) - { - goto LABEL_49; - } - v8 = *(_DWORD *)(a1 + 8); - if ( v8 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v8 + 2; - WORD2(a1) = -1; - v62 = 0; - v64 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v68 = 0; - if ( !v64 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v75 + 16); -LABEL_49: - v62 = 0; - v68 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) - { -LABEL_116: - v64 = 0; - goto LABEL_15; - } - if ( *((_WORD *)v75 + 60) != lpuexcpt ) - break; - v27 = v69 == 10 || !v68; - if ( !v27 ) - goto LABEL_55; - v68 = v59 == 0 || v69 == 8; - if ( !v68 ) - { - ++v62; - v68 = v27; - goto LABEL_59; - } - v22 = (_DWORD *)a1; - v62 = 0; - v69 = 8; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - { -LABEL_60: - v22[2] = v23 + 2; - WORD2(a1) = -1; - goto LABEL_61; - } -LABEL_71: - (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - v22 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v67 = 1; - goto LABEL_65; - } -LABEL_61: - v24 = (__int16 *)v22[2]; - if ( (unsigned int)v24 >= v22[3] ) - v25 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - else - v25 = *v24; - v67 = 0; - if ( v25 == -1 ) - { - LODWORD(a1) = 0; - v67 = 1; - } -LABEL_65: - v26 = a3 == -1; - v65 = v26 & (a2 != 0); - if ( v65 ) - { - v30 = (_WORD *)a2[2]; - v31 = (unsigned int)v30 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v30; - v26 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v26 = v65; - } - } - if ( v26 == v67 ) - { - v64 = 1; - goto LABEL_15; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v49 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v68 ) - goto LABEL_116; - v7 = *((_BYTE *)v75 + 16); - } - if ( !v68 ) - goto LABEL_116; -LABEL_55: - if ( *((_WORD *)v75 + 58) != lpuexcpt && *((_WORD *)v75 + 59) != lpuexcpt ) - { - v64 = 0; - v68 = 1; - goto LABEL_15; - } - if ( v69 != 16 && v59 != 0 ) - { - v64 = 0; - v68 = 1; - v54 = v69; - v57 = v69; - goto LABEL_18; - } - v62 = 0; - v68 = 0; - v69 = 16; -LABEL_59: - v22 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - goto LABEL_60; - goto LABEL_71; - } -LABEL_15: - v9 = 22; - if ( v69 != 16 ) - v9 = v69; - v54 = v9; - v57 = v9; -LABEL_18: - v77[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v75 + 16) ) - std::string::reserve((int *)v77, (std::string *)0x20, v53); - v58 = 0xFFFF / v69; - v60 = *((_BYTE *)v75 + 164); - if ( v60 ) - { - if ( v64 ) - { - v17 = v77[0]; - v63 = 0; - v66 = 0; - v60 = v64; - v18 = *((_DWORD *)v77[0] - 3); - v64 = 0; -LABEL_37: - if ( v18 ) - goto LABEL_86; - goto LABEL_38; - } - v63 = 0; - v66 = 0; - while ( !*((_BYTE *)v75 + 16) || *((_WORD *)v75 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v75 + 18) ) - goto LABEL_85; - v28 = (char *)v75 + 120; - v29 = v54; - while ( lpuexcpt != *(_WORD *)v28 ) - { - v28 += 2; - if ( !--v29 ) - goto LABEL_85; - } - v35 = v28 - ((char *)v75 + 120); - v36 = v35 <= 30; - v37 = (v35 >> 1) - 6; - v38 = v35 >> 1; - if ( !v36 ) - v38 = v37; - if ( (unsigned __int16)v58 < v66 ) - { - v63 = v60; - goto LABEL_123; - } - v63 |= (unsigned __int16)(v69 * v66) > 0xFFFF - v38; - v39 = (_DWORD *)a1; - v66 = v69 * v66 + v38; - ++v62; - v40 = *(_DWORD *)(a1 + 8); - if ( v40 < *(_DWORD *)(a1 + 12) ) - { -LABEL_124: - v39[2] = v40 + 2; - WORD2(a1) = -1; - goto LABEL_125; - } -LABEL_133: - (*(void (__fastcall **)(_DWORD *))(*v39 + 40))(v39); - v39 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v60; - goto LABEL_129; - } -LABEL_125: - v41 = (__int16 *)v39[2]; - if ( (unsigned int)v41 >= v39[3] ) - v42 = (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39); - else - v42 = *v41; - lpuexcptc = 0; - if ( v42 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v60; - } -LABEL_129: - v43 = a3 == -1; - v56 = v43 & (a2 != 0); - if ( v56 ) - { - v47 = (_WORD *)a2[2]; - v48 = (unsigned int)v47 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v47; - v43 = 0; - if ( v48 == -1 ) - { - a2 = 0; - v43 = v56; - } - } - if ( lpuexcptc == v43 ) - { - v17 = v77[0]; - v18 = *((_DWORD *)v77[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v44 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v44 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v44; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v17 = v77[0]; - v18 = *((_DWORD *)v77[0] - 3); - if ( !v62 ) - { - v60 = 0; - v64 = *((_BYTE *)v75 + 16); - goto LABEL_37; - } - lpuexcptd = (std::string *)(v18 + 1); - if ( (unsigned int)(v18 + 1) > *((_DWORD *)v77[0] - 2) || *((int *)v77[0] - 1) > 0 ) - std::string::reserve((int *)v77, lpuexcptd, v53); - v45 = v62; - v62 = 0; - v77[0][*((_DWORD *)v77[0] - 3)] = v45; - v46 = v77[0]; - *((_DWORD *)v77[0] - 1) = 0; - *((_DWORD *)v46 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v46) = 0; -LABEL_123: - v39 = (_DWORD *)a1; - v40 = *(_DWORD *)(a1 + 8); - if ( v40 < *(_DWORD *)(a1 + 12) ) - goto LABEL_124; - goto LABEL_133; - } - if ( v64 ) - { - v52 = v64; - v17 = v77[0]; - v63 = 0; - v64 = 0; - v60 = v52; - v18 = *((_DWORD *)v77[0] - 3); - v66 = 0; - goto LABEL_37; - } - v63 = 0; - v66 = 0; -LABEL_23: - v10 = lpuexcpt; - if ( v57 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_26: - v11 = lpuexcpt - 48; -LABEL_27: - if ( (unsigned __int16)v58 >= v66 ) - goto LABEL_97; -LABEL_28: - v12 = (_DWORD *)a1; - v63 = 1; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_98; -LABEL_29: - v12[2] = v13 + 2; - WORD2(a1) = -1; -LABEL_30: - v14 = (__int16 *)v12[2]; - if ( (unsigned int)v14 >= v12[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v15 = *v14; - lpuexcpta = 0; - if ( v15 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - goto LABEL_34; - } - while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) - { - v11 = v10 - 87; - if ( (unsigned __int16)v58 < v66 ) - goto LABEL_28; -LABEL_97: - v63 |= (unsigned __int16)(v69 * v66) > 0xFFFF - v11; - v12 = (_DWORD *)a1; - v66 = v69 * v66 + v11; - ++v62; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - goto LABEL_29; -LABEL_98: - (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_30; - lpuexcpta = 1; -LABEL_34: - v16 = a3 == -1; - v61 = v16 & (a2 != 0); - if ( v61 ) - { - v33 = (_WORD *)a2[2]; - v34 = (unsigned int)v33 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v33; - v16 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v16 = v61; - } - } - if ( lpuexcpta == v16 ) - { - v17 = v77[0]; - v60 = 1; - v18 = *((_DWORD *)v77[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) - goto LABEL_23; - v32 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v32 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v32; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_23; - LODWORD(a1) = 0; - v10 = 0xFFFF; - if ( v57 <= 10 ) - goto LABEL_85; - } - if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) - { - v11 = v10 - 55; - goto LABEL_27; - } - } - else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v57 + 48) > lpuexcpt ) - { - goto LABEL_26; - } -LABEL_85: - v17 = v77[0]; - v60 = 0; - if ( *((_DWORD *)v77[0] - 3) ) - { -LABEL_86: - std::string::push_back((int *)v77, (std::string *)(char)v62, v53); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v75 + 2), *((_DWORD *)v75 + 3), v77) ) - *a5 = 4; - v17 = v77[0]; - if ( !v62 && !v68 && !*((_DWORD *)v77[0] - 3) ) - goto LABEL_40; - goto LABEL_91; - } -LABEL_38: - if ( !v62 && !v68 ) - goto LABEL_40; -LABEL_91: - if ( v64 ) - { -LABEL_40: - v19 = a5; - *a6 = 0; - *v19 = 4; - goto LABEL_41; - } - if ( v63 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v50 = -v66; - if ( !v55 ) - LOWORD(v50) = v66; - *a6 = v50; - } -LABEL_41: - if ( v60 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_156: - std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v76); - return lpuexcptb; - } - v20 = *((_DWORD *)v17 - 1); - *((_DWORD *)v17 - 1) = v20 - 1; - if ( v20 <= 0 ) - goto LABEL_156; - return lpuexcptb; -} -// 4AEE07: variable 'v53' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004AF0A0) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // eax - char v7; // al - int v8; // eax - unsigned __int64 v9; // kr00_8 - int v10; // esi - int v11; // esi - _DWORD *v12; // ecx - unsigned int v13; // eax - __int16 *v14; // eax - __int16 v15; // ax - char v16; // al - const char *v17; // eax - int v18; // edx - _DWORD *v19; // edi - _DWORD *v20; // esi - int v21; // edx - _DWORD *v23; // ecx - unsigned int v24; // eax - __int16 *v25; // eax - __int16 v26; // ax - char v27; // al - bool v28; // al - char *v29; // eax - int v30; // edx - int v31; // ecx - unsigned int v32; // ebx - int *v33; // edi - _DWORD *v34; // ebx - _WORD *v35; // eax - __int16 v36; // dx - _WORD *v37; // eax - _WORD *v38; // eax - __int16 v39; // dx - int v40; // eax - int v41; // esi - _DWORD *v42; // ecx - unsigned int v43; // eax - __int16 *v44; // eax - __int16 v45; // ax - char v46; // al - _WORD *v47; // eax - char v48; // bl - const char *v49; // eax - _WORD *v50; // eax - __int16 v51; // dx - _WORD *v52; // eax - _WORD *v53; // eax - char v54; // bl - unsigned int v55; // [esp+4h] [ebp-B4h] - unsigned int v56; // [esp+4h] [ebp-B4h] - int v57; // [esp+14h] [ebp-A4h] - unsigned __int64 v58; // [esp+18h] [ebp-A0h] - bool v59; // [esp+21h] [ebp-97h] - char v60; // [esp+22h] [ebp-96h] - int v61; // [esp+24h] [ebp-94h] - char v62; // [esp+32h] [ebp-86h] - char v63; // [esp+33h] [ebp-85h] - char v64; // [esp+33h] [ebp-85h] - int v65; // [esp+34h] [ebp-84h] - char v66; // [esp+34h] [ebp-84h] - char v67; // [esp+34h] [ebp-84h] - __int64 v68; // [esp+38h] [ebp-80h] - char v69; // [esp+38h] [ebp-80h] - int v70; // [esp+40h] [ebp-78h] - bool v71; // [esp+44h] [ebp-74h] - int v72; // [esp+48h] [ebp-70h] - unsigned __int64 v73; // [esp+48h] [ebp-70h] - unsigned __int16 lpuexcpt; // [esp+50h] [ebp-68h] - char lpuexcpta; // [esp+50h] [ebp-68h] - __int64 lpuexcptb; // [esp+50h] [ebp-68h] - char lpuexcptc; // [esp+50h] [ebp-68h] - std::string *lpuexcptd; // [esp+50h] [ebp-68h] - struct _Unwind_Exception *v79; // [esp+58h] [ebp-60h] - int v80; // [esp+9Bh] [ebp-1Dh] BYREF - const char *v81[7]; // [esp+9Ch] [ebp-1Ch] BYREF - - v79 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v65 = v6; - if ( v6 == 64 ) - { - v72 = 8; -LABEL_4: - v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v63 ) - { - v70 = 0; - v71 = 0; - v57 = v72; - v61 = v72; - lpuexcpt = 0; - v59 = 0; - goto LABEL_16; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v72 = 10; - goto LABEL_4; - } - v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v63 ) - { - v70 = 0; - v57 = 22; - lpuexcpt = 0; - v71 = 0; - v59 = 0; - v72 = 16; - v61 = 22; - goto LABEL_16; - } - v72 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v53 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v53 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v53; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v79 + 16); - v59 = *((_WORD *)v79 + 56) == lpuexcpt; - if ( *((_WORD *)v79 + 56) != lpuexcpt && *((_WORD *)v79 + 57) != lpuexcpt - || v7 && *((_WORD *)v79 + 19) == lpuexcpt - || *((_WORD *)v79 + 18) == lpuexcpt ) - { - goto LABEL_49; - } - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v70 = 0; - v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v71 = 0; - if ( !v63 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v79 + 16); -LABEL_49: - v70 = 0; - v71 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v79 + 19) == lpuexcpt || *((_WORD *)v79 + 18) == lpuexcpt ) - { -LABEL_118: - v63 = 0; - goto LABEL_13; - } - if ( *((_WORD *)v79 + 60) != lpuexcpt ) - break; - v28 = v72 == 10 || !v71; - if ( !v28 ) - goto LABEL_55; - v71 = v65 == 0 || v72 == 8; - if ( !v71 ) - { - ++v70; - v71 = v28; - goto LABEL_59; - } - v23 = (_DWORD *)a1; - v70 = 0; - v72 = 8; - v24 = *(_DWORD *)(a1 + 8); - if ( v24 < *(_DWORD *)(a1 + 12) ) - { -LABEL_60: - v23[2] = v24 + 2; - WORD2(a1) = -1; - goto LABEL_61; - } -LABEL_71: - (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); - v23 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v69 = 1; - goto LABEL_65; - } -LABEL_61: - v25 = (__int16 *)v23[2]; - if ( (unsigned int)v25 >= v23[3] ) - v26 = (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23); - else - v26 = *v25; - v69 = 0; - if ( v26 == -1 ) - { - LODWORD(a1) = 0; - v69 = 1; - } -LABEL_65: - v27 = a3 == -1; - v64 = v27 & (a2 != 0); - if ( v64 ) - { - v35 = (_WORD *)a2[2]; - v36 = (unsigned int)v35 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v35; - v27 = 0; - if ( v36 == -1 ) - { - a2 = 0; - v27 = v64; - } - } - if ( v27 == v69 ) - { - v63 = 1; - goto LABEL_13; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v52 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v52; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v71 ) - goto LABEL_118; - v7 = *((_BYTE *)v79 + 16); - } - if ( !v71 ) - goto LABEL_118; -LABEL_55: - if ( *((_WORD *)v79 + 58) != lpuexcpt && *((_WORD *)v79 + 59) != lpuexcpt ) - { - v63 = 0; - v71 = 1; - goto LABEL_13; - } - if ( v72 != 16 && v65 != 0 ) - { - v63 = 0; - v71 = 1; - v57 = v72; - v61 = v72; - goto LABEL_16; - } - v70 = 0; - v71 = 0; - v72 = 16; -LABEL_59: - v23 = (_DWORD *)a1; - v24 = *(_DWORD *)(a1 + 8); - if ( v24 < *(_DWORD *)(a1 + 12) ) - goto LABEL_60; - goto LABEL_71; - } -LABEL_13: - v8 = 22; - if ( v72 != 16 ) - v8 = v72; - v57 = v8; - v61 = v8; -LABEL_16: - v81[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v79 + 16) ) - std::string::reserve((int *)v81, (std::string *)0x20, v55); - v58 = 0x8000000000000000LL; - if ( !v59 ) - v58 = 0x7FFFFFFFFFFFFFFFLL; - v68 = v72; - v9 = v58 / v72; - v66 = *((_BYTE *)v79 + 164); - if ( v66 ) - { - if ( v63 ) - { - v17 = v81[0]; - v73 = 0LL; - v66 = v63; - v18 = *((_DWORD *)v81[0] - 3); - v62 = 0; - v63 = 0; -LABEL_37: - if ( v18 ) - goto LABEL_86; - goto LABEL_38; - } - v62 = 0; - v73 = 0LL; - while ( !*((_BYTE *)v79 + 16) || *((_WORD *)v79 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v79 + 18) ) - goto LABEL_85; - v29 = (char *)v79 + 120; - v30 = v57; - while ( *(_WORD *)v29 != lpuexcpt ) - { - v29 += 2; - if ( !--v30 ) - goto LABEL_85; - } - v40 = v29 - ((char *)v79 + 120); - v41 = (v40 >> 1) - 6; - if ( v40 <= 30 ) - v41 = v40 >> 1; - if ( v9 < v73 ) - { - v62 = v66; - goto LABEL_125; - } - v62 |= v58 - v41 < v68 * v73; - v42 = (_DWORD *)a1; - v73 = v68 * v73 + v41; - ++v70; - v43 = *(_DWORD *)(a1 + 8); - if ( v43 < *(_DWORD *)(a1 + 12) ) - { -LABEL_126: - v42[2] = v43 + 2; - WORD2(a1) = -1; - goto LABEL_127; - } -LABEL_135: - (*(void (__fastcall **)(_DWORD *))(*v42 + 40))(v42); - v42 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v66; - goto LABEL_131; - } -LABEL_127: - v44 = (__int16 *)v42[2]; - if ( (unsigned int)v44 >= v42[3] ) - v45 = (*(int (__fastcall **)(_DWORD *))(*v42 + 36))(v42); - else - v45 = *v44; - lpuexcptc = 0; - if ( v45 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v66; - } -LABEL_131: - v46 = a3 == -1; - v60 = v46 & (a2 != 0); - if ( v60 ) - { - v50 = (_WORD *)a2[2]; - v51 = (unsigned int)v50 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v50; - v46 = 0; - if ( v51 == -1 ) - { - a2 = 0; - v46 = v60; - } - } - if ( v46 == lpuexcptc ) - { - v17 = v81[0]; - v18 = *((_DWORD *)v81[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v47 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v47; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v17 = v81[0]; - v18 = *((_DWORD *)v81[0] - 3); - if ( !v70 ) - { - v66 = 0; - v63 = *((_BYTE *)v79 + 16); - goto LABEL_37; - } - lpuexcptd = (std::string *)(v18 + 1); - if ( (unsigned int)(v18 + 1) > *((_DWORD *)v81[0] - 2) || *((int *)v81[0] - 1) > 0 ) - std::string::reserve((int *)v81, lpuexcptd, v56); - v48 = v70; - v70 = 0; - v81[0][*((_DWORD *)v81[0] - 3)] = v48; - v49 = v81[0]; - *((_DWORD *)v81[0] - 1) = 0; - *((_DWORD *)v49 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v49) = 0; -LABEL_125: - v42 = (_DWORD *)a1; - v43 = *(_DWORD *)(a1 + 8); - if ( v43 < *(_DWORD *)(a1 + 12) ) - goto LABEL_126; - goto LABEL_135; - } - if ( v63 ) - { - v54 = v63; - v17 = v81[0]; - v62 = 0; - v63 = 0; - v66 = v54; - v18 = *((_DWORD *)v81[0] - 3); - v73 = 0LL; - goto LABEL_37; - } - v62 = 0; - v73 = 0LL; -LABEL_23: - v10 = lpuexcpt; - if ( v61 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_26: - v11 = lpuexcpt - 48; - goto LABEL_27; - } - while ( 1 ) - { - if ( (unsigned __int16)(lpuexcpt - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcpt - 65) > 5u ) - goto LABEL_85; - v11 = v10 - 55; - } - else - { - v11 = v10 - 87; - } -LABEL_27: - if ( v9 >= v73 ) - { - v62 |= v58 - v11 < v68 * v73; - v12 = (_DWORD *)a1; - v73 = v68 * v73 + v11; - ++v70; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - { -LABEL_29: - v12[2] = v13 + 2; - WORD2(a1) = -1; - goto LABEL_30; - } - } - else - { - v12 = (_DWORD *)a1; - v62 = 1; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - goto LABEL_29; - } - (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpta = 1; - goto LABEL_34; - } -LABEL_30: - v14 = (__int16 *)v12[2]; - if ( (unsigned int)v14 >= v12[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v15 = *v14; - lpuexcpta = 0; - if ( v15 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } -LABEL_34: - v16 = a3 == -1; - v67 = v16 & (a2 != 0); - if ( v67 ) - { - v38 = (_WORD *)a2[2]; - v39 = (unsigned int)v38 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v38; - v16 = 0; - if ( v39 == -1 ) - { - a2 = 0; - v16 = v67; - } - } - if ( v16 == lpuexcpta ) - { - v17 = v81[0]; - v66 = 1; - v18 = *((_DWORD *)v81[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_23; - v37 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v37 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v37; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_23; - LODWORD(a1) = 0; - v10 = 0xFFFF; - if ( v61 <= 10 ) - goto LABEL_85; - } - } - if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v61 + 48) > lpuexcpt ) - goto LABEL_26; -LABEL_85: - v17 = v81[0]; - v66 = 0; - if ( *((_DWORD *)v81[0] - 3) ) - { -LABEL_86: - std::string::push_back((int *)v81, (std::string *)(char)v70, v56); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v79 + 2), *((_DWORD *)v79 + 3), v81) ) - *a5 = 4; - v17 = v81[0]; - if ( !v70 && !v71 && !*((_DWORD *)v81[0] - 3) ) - goto LABEL_40; - goto LABEL_91; - } -LABEL_38: - if ( !v70 && !v71 ) - goto LABEL_40; -LABEL_91: - if ( v63 ) - { -LABEL_40: - v19 = a6; - v20 = a5; - *a6 = 0; - v19[1] = 0; - *v20 = 4; - goto LABEL_41; - } - if ( v62 ) - { - v31 = 0; - v32 = 0x80000000; - if ( !v59 ) - { - v31 = -1; - v32 = 0x7FFFFFFF; - } - v33 = a6; - a6[1] = v32; - v34 = a5; - *v33 = v31; - *v34 = 4; - } - else - { - if ( v59 ) - v73 = -(__int64)v73; - *(_QWORD *)a6 = v73; - } -LABEL_41: - if ( v66 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_158: - std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v80); - return lpuexcptb; - } - v21 = *((_DWORD *)v17 - 1); - *((_DWORD *)v17 - 1) = v21 - 1; - if ( v21 <= 0 ) - goto LABEL_158; - return lpuexcptb; -} -// 4AFBA7: variable 'v55' is possibly undefined -// 4AF6E7: variable 'v56' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004AFE80) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // eax - char v7; // al - int v8; // eax - unsigned __int64 v9; // kr00_8 - int v10; // eax - int v11; // esi - _DWORD *v12; // ecx - unsigned int v13; // eax - __int16 *v14; // eax - __int16 v15; // ax - char v16; // al - const char *v17; // eax - int v18; // edx - _DWORD *v19; // ebx - _DWORD *v20; // edi - int v21; // edx - _DWORD *v23; // ecx - unsigned int v24; // eax - __int16 *v25; // eax - __int16 v26; // ax - char v27; // al - bool v28; // al - char *v29; // eax - int v30; // edx - _WORD *v31; // eax - __int16 v32; // dx - _WORD *v33; // eax - _WORD *v34; // eax - __int16 v35; // dx - int v36; // eax - int v37; // esi - _DWORD *v38; // ecx - unsigned int v39; // eax - __int16 *v40; // eax - __int16 v41; // ax - char v42; // al - _WORD *v43; // eax - char v44; // bl - const char *v45; // eax - _WORD *v46; // eax - __int16 v47; // dx - _WORD *v48; // eax - _DWORD *v49; // ebx - _DWORD *v50; // edi - _WORD *v51; // eax - char v52; // bl - unsigned int v53; // [esp+4h] [ebp-B4h] - unsigned int v54; // [esp+4h] [ebp-B4h] - bool v55; // [esp+1Fh] [ebp-99h] - int v56; // [esp+20h] [ebp-98h] - int v57; // [esp+24h] [ebp-94h] - char v58; // [esp+30h] [ebp-88h] - char v59; // [esp+32h] [ebp-86h] - char v60; // [esp+33h] [ebp-85h] - char v61; // [esp+33h] [ebp-85h] - int v62; // [esp+34h] [ebp-84h] - char v63; // [esp+34h] [ebp-84h] - char v64; // [esp+34h] [ebp-84h] - __int64 v65; // [esp+38h] [ebp-80h] - char v66; // [esp+38h] [ebp-80h] - int v67; // [esp+40h] [ebp-78h] - bool v68; // [esp+44h] [ebp-74h] - int v69; // [esp+48h] [ebp-70h] - unsigned __int64 v70; // [esp+48h] [ebp-70h] - unsigned __int16 lpuexcpt; // [esp+50h] [ebp-68h] - char lpuexcpta; // [esp+50h] [ebp-68h] - __int64 lpuexcptb; // [esp+50h] [ebp-68h] - char lpuexcptc; // [esp+50h] [ebp-68h] - std::string *lpuexcptd; // [esp+50h] [ebp-68h] - struct _Unwind_Exception *v76; // [esp+58h] [ebp-60h] - int v77; // [esp+9Bh] [ebp-1Dh] BYREF - const char *v78[7]; // [esp+9Ch] [ebp-1Ch] BYREF - - v76 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v62 = v6; - if ( v6 == 64 ) - { - v69 = 8; -LABEL_4: - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v67 = 0; - v68 = 0; - v56 = v69; - v57 = v69; - lpuexcpt = 0; - v55 = 0; - goto LABEL_16; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v69 = 10; - goto LABEL_4; - } - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v67 = 0; - v56 = 22; - lpuexcpt = 0; - v68 = 0; - v55 = 0; - v69 = 16; - v57 = 22; - goto LABEL_16; - } - v69 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v51 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v51; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v76 + 16); - v55 = *((_WORD *)v76 + 56) == lpuexcpt; - if ( *((_WORD *)v76 + 56) != lpuexcpt && *((_WORD *)v76 + 57) != lpuexcpt - || v7 && *((_WORD *)v76 + 19) == lpuexcpt - || *((_WORD *)v76 + 18) == lpuexcpt ) - { - goto LABEL_47; - } - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v67 = 0; - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v68 = 0; - if ( !v60 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v76 + 16); -LABEL_47: - v67 = 0; - v68 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v76 + 19) == lpuexcpt || *((_WORD *)v76 + 18) == lpuexcpt ) - { -LABEL_117: - v60 = 0; - goto LABEL_13; - } - if ( *((_WORD *)v76 + 60) != lpuexcpt ) - break; - v28 = v69 == 10 || !v68; - if ( !v28 ) - goto LABEL_53; - v68 = v62 == 0 || v69 == 8; - if ( !v68 ) - { - ++v67; - v68 = v28; - goto LABEL_57; - } - v23 = (_DWORD *)a1; - v67 = 0; - v69 = 8; - v24 = *(_DWORD *)(a1 + 8); - if ( v24 < *(_DWORD *)(a1 + 12) ) - { -LABEL_58: - v23[2] = v24 + 2; - WORD2(a1) = -1; - goto LABEL_59; - } -LABEL_69: - (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); - v23 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v66 = 1; - goto LABEL_63; - } -LABEL_59: - v25 = (__int16 *)v23[2]; - if ( (unsigned int)v25 >= v23[3] ) - v26 = (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23); - else - v26 = *v25; - v66 = 0; - if ( v26 == -1 ) - { - LODWORD(a1) = 0; - v66 = 1; - } -LABEL_63: - v27 = a3 == -1; - v61 = v27 & (a2 != 0); - if ( v61 ) - { - v31 = (_WORD *)a2[2]; - v32 = (unsigned int)v31 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v31; - v27 = 0; - if ( v32 == -1 ) - { - a2 = 0; - v27 = v61; - } - } - if ( v66 == v27 ) - { - v60 = 1; - goto LABEL_13; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v48 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v48; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v68 ) - goto LABEL_117; - v7 = *((_BYTE *)v76 + 16); - } - if ( !v68 ) - goto LABEL_117; -LABEL_53: - if ( *((_WORD *)v76 + 58) != lpuexcpt && *((_WORD *)v76 + 59) != lpuexcpt ) - { - v60 = 0; - v68 = 1; - goto LABEL_13; - } - if ( v69 != 16 && v62 != 0 ) - { - v60 = 0; - v68 = 1; - v56 = v69; - v57 = v69; - goto LABEL_16; - } - v67 = 0; - v68 = 0; - v69 = 16; -LABEL_57: - v23 = (_DWORD *)a1; - v24 = *(_DWORD *)(a1 + 8); - if ( v24 < *(_DWORD *)(a1 + 12) ) - goto LABEL_58; - goto LABEL_69; - } -LABEL_13: - v8 = 22; - if ( v69 != 16 ) - v8 = v69; - v56 = v8; - v57 = v8; -LABEL_16: - v78[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v76 + 16) ) - std::string::reserve((int *)v78, (std::string *)0x20, v53); - v65 = v69; - v9 = 0xFFFFFFFFFFFFFFFFLL / v69; - v63 = *((_BYTE *)v76 + 164); - if ( v63 ) - { - if ( v60 ) - { - v17 = v78[0]; - v70 = 0LL; - v63 = v60; - v18 = *((_DWORD *)v78[0] - 3); - v59 = 0; - v60 = 0; -LABEL_35: - if ( v18 ) - goto LABEL_84; - goto LABEL_36; - } - v59 = 0; - v70 = 0LL; - while ( !*((_BYTE *)v76 + 16) || *((_WORD *)v76 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v76 + 18) ) - goto LABEL_83; - v29 = (char *)v76 + 120; - v30 = v56; - while ( *(_WORD *)v29 != lpuexcpt ) - { - v29 += 2; - if ( !--v30 ) - goto LABEL_83; - } - v36 = v29 - ((char *)v76 + 120); - v37 = (v36 >> 1) - 6; - if ( v36 <= 30 ) - v37 = v36 >> 1; - if ( v9 < v70 ) - { - v59 = v63; - goto LABEL_122; - } - v59 |= __PAIR64__(~(v37 >> 31), ~v37) < v65 * v70; - v38 = (_DWORD *)a1; - ++v67; - v70 = v65 * v70 + v37; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - { -LABEL_123: - v38[2] = v39 + 2; - WORD2(a1) = -1; - goto LABEL_124; - } -LABEL_132: - (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); - v38 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v63; - goto LABEL_128; - } -LABEL_124: - v40 = (__int16 *)v38[2]; - if ( (unsigned int)v40 >= v38[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38); - else - v41 = *v40; - lpuexcptc = 0; - if ( v41 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v63; - } -LABEL_128: - v42 = a3 == -1; - v58 = v42 & (a2 != 0); - if ( v58 ) - { - v46 = (_WORD *)a2[2]; - v47 = (unsigned int)v46 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v46; - v42 = 0; - if ( v47 == -1 ) - { - a2 = 0; - v42 = v58; - } - } - if ( v42 == lpuexcptc ) - { - v17 = v78[0]; - v18 = *((_DWORD *)v78[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v43 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v43; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v17 = v78[0]; - v18 = *((_DWORD *)v78[0] - 3); - if ( !v67 ) - { - v63 = 0; - v60 = *((_BYTE *)v76 + 16); - goto LABEL_35; - } - lpuexcptd = (std::string *)(v18 + 1); - if ( (unsigned int)(v18 + 1) > *((_DWORD *)v78[0] - 2) || *((int *)v78[0] - 1) > 0 ) - std::string::reserve((int *)v78, lpuexcptd, v54); - v44 = v67; - v67 = 0; - v78[0][*((_DWORD *)v78[0] - 3)] = v44; - v45 = v78[0]; - *((_DWORD *)v78[0] - 1) = 0; - *((_DWORD *)v45 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v45) = 0; -LABEL_122: - v38 = (_DWORD *)a1; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - goto LABEL_123; - goto LABEL_132; - } - if ( v60 ) - { - v52 = v60; - v17 = v78[0]; - v59 = 0; - v60 = 0; - v63 = v52; - v18 = *((_DWORD *)v78[0] - 3); - v70 = 0LL; - goto LABEL_35; - } - v59 = 0; - v70 = 0LL; -LABEL_21: - v10 = lpuexcpt; - if ( v57 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_24: - v11 = lpuexcpt - 48; - goto LABEL_25; - } - while ( 1 ) - { - v11 = v10 - 87; - if ( (unsigned __int16)(lpuexcpt - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcpt - 65) > 5u ) - goto LABEL_83; - v11 = v10 - 55; - } -LABEL_25: - if ( v9 >= v70 ) - { - v59 |= __PAIR64__(~(v11 >> 31), ~v11) < v65 * v70; - v12 = (_DWORD *)a1; - ++v67; - v70 = v65 * v70 + v11; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - { -LABEL_27: - v12[2] = v13 + 2; - WORD2(a1) = -1; - goto LABEL_28; - } - } - else - { - v12 = (_DWORD *)a1; - v59 = 1; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - goto LABEL_27; - } - (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpta = 1; - goto LABEL_32; - } -LABEL_28: - v14 = (__int16 *)v12[2]; - if ( (unsigned int)v14 >= v12[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v15 = *v14; - lpuexcpta = 0; - if ( v15 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } -LABEL_32: - v16 = a3 == -1; - v64 = v16 & (a2 != 0); - if ( v64 ) - { - v34 = (_WORD *)a2[2]; - v35 = (unsigned int)v34 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v34; - v16 = 0; - if ( v35 == -1 ) - { - a2 = 0; - v16 = v64; - } - } - if ( v16 == lpuexcpta ) - { - v17 = v78[0]; - v63 = 1; - v18 = *((_DWORD *)v78[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_21; - v33 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v33 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v33; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_21; - LODWORD(a1) = 0; - v10 = 0xFFFF; - if ( v57 <= 10 ) - goto LABEL_83; - } - } - if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v57 + 48) > lpuexcpt ) - goto LABEL_24; -LABEL_83: - v17 = v78[0]; - v63 = 0; - if ( *((_DWORD *)v78[0] - 3) ) - { -LABEL_84: - std::string::push_back((int *)v78, (std::string *)(char)v67, v54); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v76 + 2), *((_DWORD *)v76 + 3), v78) ) - *a5 = 4; - v17 = v78[0]; - if ( !v67 && !v68 && !*((_DWORD *)v78[0] - 3) ) - goto LABEL_38; - goto LABEL_89; - } -LABEL_36: - if ( !v67 && !v68 ) - goto LABEL_38; -LABEL_89: - if ( v60 ) - { -LABEL_38: - v19 = a6; - v20 = a5; - *a6 = 0; - v19[1] = 0; - *v20 = 4; - goto LABEL_39; - } - if ( v59 ) - { - v49 = a6; - v50 = a5; - *a6 = -1; - v49[1] = -1; - *v50 = 4; - } - else - { - if ( v55 ) - v70 = -(__int64)v70; - *(_QWORD *)a6 = v70; - } -LABEL_39: - if ( v63 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_155: - std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v77); - return lpuexcptb; - } - v21 = *((_DWORD *)v17 - 1); - *((_DWORD *)v17 - 1) = v21 - 1; - if ( v21 <= 0 ) - goto LABEL_155; - return lpuexcptb; -} -// 4B0947: variable 'v53' is possibly undefined -// 4B0497: variable 'v54' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004B0C20) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_float( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // cl - int v7; // eax - _DWORD *v8; // ecx - unsigned int v9; // eax - __int16 *v10; // eax - __int16 v11; // ax - char v12; // al - int v13; // eax - int v14; // eax - char v16; // al - char *v17; // eax - bool v18; // zf - int v19; // eax - _DWORD *v20; // ecx - unsigned int v21; // eax - __int16 *v22; // eax - __int16 v23; // ax - char v24; // al - __int16 v25; // dx - _WORD *v26; // eax - unsigned int v27; // eax - __int16 v28; // ax - int v29; // eax - int v30; // eax - _DWORD *v31; // ecx - unsigned int v32; // eax - __int16 *v33; // eax - __int16 v34; // ax - char v35; // al - int v36; // eax - const char *v37; // eax - int v38; // eax - _WORD *v39; // eax - __int16 v40; // dx - char v41; // cl - const char *v42; // eax - std::string *v43; // ebx - int v44; // eax - _WORD *v45; // eax - __int16 v46; // dx - __int16 *v47; // eax - _WORD *v48; // eax - __int16 v49; // dx - _WORD *v50; // eax - __int16 v51; // dx - char v52; // al - char i; // dl - _DWORD *v54; // ecx - unsigned int v55; // eax - __int16 *v56; // eax - __int16 v57; // ax - char v58; // al - int v59; // eax - _WORD *v60; // eax - __int16 v61; // dx - _WORD *v62; // eax - bool v63; // al - unsigned int v64; // [esp+4h] [ebp-84h] - unsigned int v65; // [esp+4h] [ebp-84h] - unsigned int v66; // [esp+Ch] [ebp-7Ch] - int v67; // [esp+14h] [ebp-74h] - char v68; // [esp+14h] [ebp-74h] - int v69; // [esp+14h] [ebp-74h] - char v70; // [esp+1Bh] [ebp-6Dh] - char v71; // [esp+1Ch] [ebp-6Ch] - std::string *v72; // [esp+1Ch] [ebp-6Ch] - std::string *v73; // [esp+1Ch] [ebp-6Ch] - bool v74; // [esp+20h] [ebp-68h] - char v75; // [esp+20h] [ebp-68h] - std::string *v76; // [esp+20h] [ebp-68h] - char v77; // [esp+20h] [ebp-68h] - std::string *v78; // [esp+20h] [ebp-68h] - std::string *v79; // [esp+20h] [ebp-68h] - int v80; // [esp+24h] [ebp-64h] - int v81; // [esp+28h] [ebp-60h] - char v82; // [esp+28h] [ebp-60h] - char v83; // [esp+28h] [ebp-60h] - int v84; // [esp+28h] [ebp-60h] - char v85; // [esp+2Ch] [ebp-5Ch] - char v86; // [esp+2Ch] [ebp-5Ch] - char v87; // [esp+2Ch] [ebp-5Ch] - char v88; // [esp+2Ch] [ebp-5Ch] - std::string *v89; // [esp+2Ch] [ebp-5Ch] - struct _Unwind_Exception *v90; // [esp+30h] [ebp-58h] - __int64 v91; // [esp+30h] [ebp-58h] - __int16 lpuexcpt; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-50h] - char lpuexcptb; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptc; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptd; // [esp+38h] [ebp-50h] - char lpuexcpte; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptf; // [esp+38h] [ebp-50h] - char lpuexcptg; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpth; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpti; // [esp+38h] [ebp-50h] - char lpuexcptj; // [esp+38h] [ebp-50h] - int v103; // [esp+7Bh] [ebp-Dh] BYREF - const char *v104[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v90 = std::__use_cache>::operator()((int *)(a4 + 108)); - v74 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v74 ) - { - v80 = 0; - lpuexcpt = 0; - v85 = 0; - goto LABEL_3; - } - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v51 = *((_WORD *)v90 + 57); - if ( v51 == lpuexcpt ) - { - v52 = *((_BYTE *)v90 + 16); - } - else - { - v52 = *((_BYTE *)v90 + 16); - if ( *((_WORD *)v90 + 56) != lpuexcpt ) - { -LABEL_144: - v80 = 0; - for ( i = 0; ; i = 1 ) - { - if ( v52 && *((_WORD *)v90 + 19) == lpuexcpt - || *((_WORD *)v90 + 18) == lpuexcpt - || *((_WORD *)v90 + 60) != lpuexcpt ) - { - v85 = i; - goto LABEL_3; - } - if ( i ) - { - v54 = (_DWORD *)a1; - ++v80; - v55 = *(_DWORD *)(a1 + 8); - if ( v55 < *(_DWORD *)(a1 + 12) ) - goto LABEL_151; - } - else - { - v84 = *(_DWORD *)(*a6 - 12); - v89 = (std::string *)(v84 + 1); - if ( (unsigned int)(v84 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, v89, v64); - ++v80; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 48; - v59 = *a6; - *(_DWORD *)(v59 - 12) = v89; - *(_DWORD *)(v59 - 4) = 0; - *(_BYTE *)(v59 + v84 + 1) = 0; - v54 = (_DWORD *)a1; - v55 = *(_DWORD *)(a1 + 8); - if ( v55 < *(_DWORD *)(a1 + 12) ) - { -LABEL_151: - v54[2] = v55 + 2; - WORD2(a1) = -1; - goto LABEL_152; - } - } - (*(void (__fastcall **)(_DWORD *))(*v54 + 40))(v54); - v54 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v88 = 1; - goto LABEL_156; - } -LABEL_152: - v56 = (__int16 *)v54[2]; - if ( (unsigned int)v56 >= v54[3] ) - v57 = (*(int (__fastcall **)(_DWORD *))(*v54 + 36))(v54); - else - v57 = *v56; - v88 = 0; - if ( v57 == -1 ) - { - LODWORD(a1) = 0; - v88 = 1; - } -LABEL_156: - v58 = a3 == -1; - v83 = v58 & (a2 != 0); - if ( v83 ) - { - v60 = (_WORD *)a2[2]; - v61 = (unsigned int)v60 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v60; - v58 = 0; - if ( v61 == -1 ) - { - a2 = 0; - v58 = v83; - } - } - if ( v58 == v88 ) - { - v85 = 1; - v74 = 1; - goto LABEL_3; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v62 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v62; - if ( lpuexcpt == -1 ) - LODWORD(a1) = 0; - } - v52 = *((_BYTE *)v90 + 16); - } - } - } - if ( v52 && *((_WORD *)v90 + 19) == lpuexcpt || *((_WORD *)v90 + 18) == lpuexcpt ) - goto LABEL_144; - std::string::push_back(a6, (std::string *)(2 * (v51 != lpuexcpt) + 43), v64); - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !v63 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v52 = *((_BYTE *)v90 + 16); - goto LABEL_144; - } - v85 = 0; - v74 = v63; - v80 = 0; -LABEL_3: - v104[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v90 + 16) ) - std::string::reserve((int *)v104, (std::string *)0x20, v65); - v70 = *((_BYTE *)v90 + 164); - if ( !v70 ) - { - if ( !v74 ) - { - v75 = 0; - v71 = 0; -LABEL_8: - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { - v86 = lpuexcpt; - v81 = *(_DWORD *)(*a6 - 12); - lpuexcpta = (struct _Unwind_Exception *)(v81 + 1); - if ( (unsigned int)(v81 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcpta, v65); - v6 = v86; - v85 = 1; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v6; - v7 = *a6; - *(_DWORD *)(v7 - 4) = 0; - *(_DWORD *)(v7 - 12) = lpuexcpta; - *(_BYTE *)(v7 + v81 + 1) = 0; - goto LABEL_13; - } - while ( 1 ) - { - if ( *((_WORD *)v90 + 18) == lpuexcpt && !((unsigned __int8)v75 | (unsigned __int8)v71) ) - { - v71 = 1; - std::string::push_back(a6, (std::string *)0x2E, v65); - v75 = 0; -LABEL_13: - v8 = (_DWORD *)a1; - v9 = *(_DWORD *)(a1 + 8); - if ( v9 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_78; -LABEL_14: - v8[2] = v9 + 2; - WORD2(a1) = -1; -LABEL_15: - v10 = (__int16 *)v8[2]; - if ( (unsigned int)v10 >= v8[3] ) - v11 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - else - v11 = *v10; - lpuexcptb = 0; - if ( v11 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptb = 1; - } - goto LABEL_19; - } - if ( *((_WORD *)v90 + 74) != lpuexcpt && *((_WORD *)v90 + 80) != lpuexcpt ) - goto LABEL_21; - v85 &= v75 ^ 1; - if ( !v85 ) - goto LABEL_21; - std::string::push_back(a6, (std::string *)0x65, v65); - v27 = *(_DWORD *)(a1 + 8); - if ( v27 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v27 + 2; - WORD2(a1) = -1; - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - goto LABEL_200; - v28 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v28; - if ( *((_WORD *)v90 + 57) == v28 ) - { - v29 = 43; - } - else - { - if ( *((_WORD *)v90 + 56) != v28 ) - { - v75 = v85; - goto LABEL_8; - } - v29 = 45; - } - std::string::push_back(a6, (std::string *)v29, v65); - v8 = (_DWORD *)a1; - v75 = v85; - v9 = *(_DWORD *)(a1 + 8); - if ( v9 < *(_DWORD *)(a1 + 12) ) - goto LABEL_14; -LABEL_78: - (*(void (__fastcall **)(_DWORD *))(*v8 + 40))(v8); - v8 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_15; - lpuexcptb = 1; -LABEL_19: - v12 = a3 == -1; - v82 = v12 & (a2 != 0); - if ( v82 ) - { - v39 = (_WORD *)a2[2]; - v40 = (unsigned int)v39 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v39; - v12 = 0; - if ( v40 == -1 ) - { - a2 = 0; - v12 = v82; - } - } - if ( lpuexcptb == v12 ) - goto LABEL_21; - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_8; - v26 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v26 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v26; - if ( lpuexcpt != -1 ) - goto LABEL_8; - LODWORD(a1) = 0; - } - } -LABEL_203: - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - if ( *((_DWORD *)v104[0] - 3) ) - goto LABEL_25; - goto LABEL_28; - } - if ( v74 ) - goto LABEL_203; - v75 = 0; - v71 = 0; - v16 = *((_BYTE *)v90 + 16); - while ( 1 ) - { - if ( v16 && *((_WORD *)v90 + 19) == lpuexcpt ) - { - v71 |= v75; - if ( v71 ) - { - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - v36 = *((_DWORD *)v104[0] - 3); -LABEL_197: - if ( v36 ) - goto LABEL_26; - goto LABEL_28; - } - if ( !v80 ) - { - std::string::_M_mutate((char **)a6, 0, *(_DWORD *)(*a6 - 12), 0, v66); - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - if ( *((_DWORD *)v104[0] - 3) ) - goto LABEL_25; - goto LABEL_28; - } - v78 = (std::string *)*((_DWORD *)v104[0] - 3); - lpuexcpti = (std::string *)((char *)v78 + 1); - if ( (unsigned int)v78 + 1 > *((_DWORD *)v104[0] - 2) || *((int *)v104[0] - 1) > 0 ) - std::string::reserve((int *)v104, lpuexcpti, v65); - v41 = v80; - v80 = 0; - v104[0][*((_DWORD *)v104[0] - 3)] = v41; - v42 = v104[0]; - *((_DWORD *)v104[0] - 3) = lpuexcpti; - v43 = v78; - *((_DWORD *)v42 - 1) = 0; - v75 = 0; - *((_BYTE *)v43 + (_DWORD)v42 + 1) = 0; -LABEL_84: - v31 = (_DWORD *)a1; - v32 = *(_DWORD *)(a1 + 8); - if ( v32 < *(_DWORD *)(a1 + 12) ) - goto LABEL_85; - goto LABEL_105; - } - v17 = (char *)v90 + 120; - if ( *((_WORD *)v90 + 18) != lpuexcpt ) - { - do - { - if ( *(_WORD *)v17 == lpuexcpt ) - { - v87 = ((v17 - ((char *)v90 + 120)) >> 1) + 48; - v67 = *(_DWORD *)(*a6 - 12); - lpuexcptf = (struct _Unwind_Exception *)(v67 + 1); - if ( (unsigned int)(v67 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptf, v65); - ++v80; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v87; - v30 = *a6; - *(_DWORD *)(v30 - 12) = lpuexcptf; - *(_DWORD *)(v30 - 4) = 0; - *(_BYTE *)(v30 + v67 + 1) = 0; - v85 = v70; - goto LABEL_84; - } - v17 += 2; - } - while ( v17 != (char *)v90 + 140 ); - if ( *((_WORD *)v90 + 74) != lpuexcpt && *((_WORD *)v90 + 80) != lpuexcpt ) - break; - v18 = (((unsigned __int8)v75 ^ 1) & (unsigned __int8)v85) == 0; - v85 &= v75 ^ 1; - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - v13 = *((_DWORD *)v104[0] - 3); - if ( v18 ) - goto LABEL_22; - if ( v13 && !v71 ) - std::string::push_back((int *)v104, (std::string *)(char)v80, v65); - v76 = *(std::string **)(*a6 - 12); - lpuexcptd = (std::string *)((char *)v76 + 1); - if ( (unsigned int)v76 + 1 > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptd, v65); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 101; - v19 = *a6; - *(_DWORD *)(v19 - 12) = lpuexcptd; - *(_DWORD *)(v19 - 4) = 0; - *((_BYTE *)v76 + v19 + 1) = 0; - v20 = (_DWORD *)a1; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v20 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_49; - lpuexcpte = v85; - } - else - { - *(_DWORD *)(a1 + 8) = v21 + 2; - WORD2(a1) = -1; -LABEL_49: - v22 = (__int16 *)v20[2]; - if ( (unsigned int)v22 >= v20[3] ) - v23 = (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20); - else - v23 = *v22; - lpuexcpte = 0; - if ( v23 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpte = v85; - } - } - v24 = a3 == -1; - v77 = v24 & (a2 != 0); - if ( v77 ) - { - v48 = (_WORD *)a2[2]; - v49 = (unsigned int)v48 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v48; - v24 = 0; - if ( v49 == -1 ) - { - a2 = 0; - v24 = v77; - } - } - if ( v24 == lpuexcpte ) - { -LABEL_200: - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - if ( *((_DWORD *)v104[0] - 3) ) - goto LABEL_26; - goto LABEL_28; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v50 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v50; - if ( lpuexcpt == -1 ) - LODWORD(a1) = 0; - } - v25 = *((_WORD *)v90 + 57); - v16 = *((_BYTE *)v90 + 16); - if ( v25 != lpuexcpt && *((_WORD *)v90 + 56) != lpuexcpt ) - goto LABEL_59; - if ( v16 && *((_WORD *)v90 + 19) == lpuexcpt ) - { - v75 = *((_BYTE *)v90 + 16); - v85 = v75; - continue; - } - if ( *((_WORD *)v90 + 18) == lpuexcpt ) - { -LABEL_59: - v75 = v85; - continue; - } - lpuexcptj = 2 * (v25 != lpuexcpt) + 43; - v69 = *(_DWORD *)(*a6 - 12); - v79 = (std::string *)(v69 + 1); - if ( (unsigned int)(v69 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, v79, v65); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = lpuexcptj; - v44 = *a6; - *(_DWORD *)(v44 - 12) = v79; - *(_DWORD *)(v44 - 4) = 0; - *(_BYTE *)(v44 + v69 + 1) = 0; - v75 = v85; - goto LABEL_84; - } - v18 = ((unsigned __int8)v71 | (unsigned __int8)v75) == 0; - v75 |= v71; - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - v36 = *((_DWORD *)v104[0] - 3); - if ( !v18 ) - goto LABEL_197; - if ( v36 ) - { - v72 = (std::string *)(v36 + 1); - if ( (unsigned int)(v36 + 1) > *((_DWORD *)v104[0] - 2) || *((int *)v104[0] - 1) > 0 ) - std::string::reserve((int *)v104, v72, v65); - v104[0][*((_DWORD *)v104[0] - 3)] = v80; - v37 = v104[0]; - *((_DWORD *)v104[0] - 1) = 0; - *((_DWORD *)v37 - 3) = v72; - *((_BYTE *)v72 + (_DWORD)v37) = 0; - } - v73 = *(std::string **)(*a6 - 12); - lpuexcpth = (std::string *)((char *)v73 + 1); - if ( (unsigned int)v73 + 1 > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcpth, v65); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 46; - v38 = *a6; - *(_DWORD *)(v38 - 12) = lpuexcpth; - *(_DWORD *)(v38 - 4) = 0; - *((_BYTE *)v73 + v38 + 1) = 0; - v31 = (_DWORD *)a1; - v71 = v70; - v32 = *(_DWORD *)(a1 + 8); - if ( v32 < *(_DWORD *)(a1 + 12) ) - { -LABEL_85: - v31[2] = v32 + 2; - WORD2(a1) = -1; - goto LABEL_86; - } -LABEL_105: - (*(void (__fastcall **)(_DWORD *))(*v31 + 40))(v31); - v31 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptg = v70; - goto LABEL_90; - } -LABEL_86: - v33 = (__int16 *)v31[2]; - if ( (unsigned int)v33 >= v31[3] ) - v34 = (*(int (__fastcall **)(_DWORD *))(*v31 + 36))(v31); - else - v34 = *v33; - lpuexcptg = 0; - if ( v34 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptg = v70; - } -LABEL_90: - v35 = a3 == -1; - v68 = v35 & (a2 != 0); - if ( v68 ) - { - v45 = (_WORD *)a2[2]; - v46 = (unsigned int)v45 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v45; - v35 = 0; - if ( v46 == -1 ) - { - a2 = 0; - v35 = v68; - } - } - if ( lpuexcptg == v35 ) - break; - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v47 = *(__int16 **)(a1 + 8); - if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) - lpuexcpt = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - else - lpuexcpt = *v47; - v16 = *((_BYTE *)v90 + 16); - if ( lpuexcpt == -1 ) - LODWORD(a1) = 0; - } - else - { - v16 = *((_BYTE *)v90 + 16); - } - } -LABEL_21: - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - v13 = *((_DWORD *)v104[0] - 3); -LABEL_22: - if ( !v13 ) - goto LABEL_28; - if ( v71 || v75 ) - goto LABEL_26; -LABEL_25: - std::string::push_back((int *)v104, (std::string *)(char)v80, v65); - lpuexcptc = (struct _Unwind_Exception *)v104[0]; -LABEL_26: - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v90 + 2), *((_DWORD *)v90 + 3), v104) ) - *a5 = 4; -LABEL_28: - v91 = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)lpuexcptc - 1, 0xFFFFFFFF) > 0 ) - return v91; -LABEL_141: - std::string::_Rep::_M_destroy((char *)lpuexcptc - 12, (int)&v103); - return v91; - } - v14 = *((_DWORD *)lpuexcptc - 1); - *((_DWORD *)lpuexcptc - 1) = v14 - 1; - if ( v14 <= 0 ) - goto LABEL_141; - return v91; -} -// 4B1644: variable 'v65' is possibly undefined -// 4B1765: variable 'v64' is possibly undefined -// 4B1B06: variable 'v66' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004B1B80) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(__int64, _DWORD *, __int16, int, _DWORD *, _DWORD *); // eax - int v8; // edi - int result; // eax - int v10; // ecx - int v11[8]; // [esp+4Ch] [ebp-20h] BYREF - - v7 = *(int (__stdcall **)(__int64, _DWORD *, __int16, int, _DWORD *, _DWORD *))(*(_DWORD *)this + 48); - if ( v7 != std::num_get>::do_get ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD *, int, int, _DWORD *, int *))v7)( - a2, - HIDWORD(a2), - a3, - a4, - a5, - a6, - a7); - v8 = *(_DWORD *)(a5 + 12); - *(_DWORD *)(a5 + 12) = v8 & 0xFFFFFFB5 | 8; - result = std::num_get>::_M_extract_int( - a2, - a3, - a4, - a5, - a6, - v11); - v10 = v11[0]; - *(_DWORD *)(a5 + 12) = v8; - *a7 = v10; - return result; -} -// 4B1B80: using guessed type int var_20[8]; - -//----- (004B1C50) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (004B1C60) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); -} - -//----- (004B1C70) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); -} - -//----- (004B1C80) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); -} - -//----- (004B1C90) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4B2BA0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004B1D10) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4B2BB0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004B1D90) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int( - a2, - a3, - a4, - a5, - a6, - a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4B2BC0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004B1E10) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _WORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int( - a2, - a3, - a4, - a5, - a6, - a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4B2BD0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004B1E90) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4B2BE0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004B1F10) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int( - a2, - a3, - a4, - a5, - a6, - a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 4B2BF0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004B1F90) -------------------------------------------------------- -int __stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // edi - int result; // eax - int v8[8]; // [esp+3Ch] [ebp-20h] BYREF - - v6 = *(_DWORD *)(a4 + 12); - *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; - result = std::num_get>::_M_extract_int( - a1, - a2, - a3, - a4, - a5, - v8); - *(_DWORD *)(a4 + 12) = v6; - *a6 = v8[0]; - return result; -} -// 4B1F90: using guessed type int var_20[8]; - -//----- (004B2030) -------------------------------------------------------- -__int64 __stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - int *a5, - _BYTE *a6) -{ - _BYTE *v6; // edx - struct _Unwind_Exception *v8; // eax - int v9; // ecx - struct _Unwind_Exception *v10; // esi - int v11; // eax - bool v12; // dl - __int16 v13; // ax - unsigned int v14; // ebp - char v15; // di - unsigned int v16; // eax - bool v17; // cl - char v18; // si - char v19; // di - char v20; // al - char v21; // di - unsigned __int16 v22; // ax - __int16 *v23; // eax - __int16 v24; // cx - bool v25; // bl - struct _Unwind_Exception *v26; // esi - char v27; // dl - __int16 *v28; // eax - __int16 v29; // ax - unsigned __int16 *v30; // eax - int v31; // eax - __int16 v32; // ax - struct _Unwind_Exception *v33; // [esp+20h] [ebp-3Ch] - bool v34; // [esp+24h] [ebp-38h] - bool v35; // [esp+25h] [ebp-37h] - char v36; // [esp+26h] [ebp-36h] - bool v37; // [esp+27h] [ebp-35h] - bool v38; // [esp+27h] [ebp-35h] - bool v39; // [esp+27h] [ebp-35h] - __int64 v40; // [esp+28h] [ebp-34h] - unsigned int v41[8]; // [esp+3Ch] [ebp-20h] BYREF - - if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) - { - v41[0] = -1; - v40 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v41); - LODWORD(a1) = v40; - WORD2(a1) = WORD2(v40); - if ( v41[0] > 1 ) - { - *a6 = 1; - *a5 = 4; - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - } - else - { - v6 = a6; - *a6 = v41[0]; - *v6 &= 1u; - } - return a1; - } - v8 = std::__use_cache>::operator()((int *)(a4 + 108)); - v9 = *((_DWORD *)v8 + 8); - v10 = v8; - v11 = *((_DWORD *)v8 + 6); - v12 = v9 == 0; - v35 = v11 == 0; - if ( !(v11 | v9) ) - goto LABEL_55; - v33 = v10; - v13 = WORD2(a1); - v14 = 0; - v36 = 1; - v34 = 1; - while ( 1 ) - { - v18 = v13 == -1; - v19 = v18 & ((_DWORD)a1 != 0); - if ( v19 ) - { - v28 = *(__int16 **)(a1 + 8); - if ( (unsigned int)v28 >= *(_DWORD *)(a1 + 12) ) - { - v38 = v12; - v29 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); - v12 = v38; - } - else - { - v29 = *v28; - } - v18 = 0; - if ( v29 == -1 ) - { - LODWORD(a1) = 0; - v18 = v19; - } - } - v20 = a3 == -1; - v21 = v20 & (a2 != 0); - if ( v21 ) - { - v23 = (__int16 *)a2[2]; - if ( (unsigned int)v23 >= a2[3] ) - { - v37 = v12; - v32 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v12 = v37; - v24 = v32; - } - else - { - v24 = *v23; - } - v20 = 0; - if ( v24 == -1 ) - break; - } - if ( v18 == v20 ) - goto LABEL_35; -LABEL_20: - v22 = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v30 = *(unsigned __int16 **)(a1 + 8); - if ( (unsigned int)v30 >= *(_DWORD *)(a1 + 12) ) - { - v39 = v12; - v22 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - v12 = v39; - } - else - { - v22 = *v30; - } - if ( v22 == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v12 ) - v34 = *(_WORD *)(*((_DWORD *)v33 + 7) + 2 * v14) == v22; - if ( !v34 ) - { - if ( v35 ) - { - if ( v36 ) - { - if ( *((_DWORD *)v33 + 6) == v14 && v14 ) - { - *a6 = 1; - v31 = 0; -LABEL_68: - *a5 = v31; - return a1; - } -LABEL_55: - *a6 = 0; - goto LABEL_56; - } -LABEL_57: - *a6 = 0; - *a5 = 4; - return a1; - } -LABEL_8: - v36 = *(_WORD *)(*((_DWORD *)v33 + 5) + 2 * v14) == v22; - goto LABEL_9; - } - if ( !v35 ) - goto LABEL_8; -LABEL_9: - v15 = v12 & (v36 ^ 1); - if ( v15 ) - { - if ( v34 ) - { - if ( *((_DWORD *)v33 + 8) == v14 && v14 ) - { - *a6 = 0; - v31 = 0; - goto LABEL_68; - } - goto LABEL_55; - } - goto LABEL_57; - } - if ( !(v34 | (unsigned __int8)v36) ) - goto LABEL_57; - ++v14; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v16 + 2; - WORD2(a1) = -1; - if ( !v34 ) - { - v12 = v36; -LABEL_30: - v35 = *((_DWORD *)v33 + 6) <= v14; - v36 |= v34; - v17 = v12 && v35; - goto LABEL_16; - } - v12 = *((_DWORD *)v33 + 8) <= v14; - if ( v36 ) - goto LABEL_30; - v17 = *((_DWORD *)v33 + 8) <= v14; - v35 = v34; -LABEL_16: - v13 = -1; - if ( v17 ) - { - v25 = v34; - v26 = v33; - v27 = v15; - goto LABEL_36; - } - } - a2 = 0; - if ( v18 != v21 ) - goto LABEL_20; -LABEL_35: - v25 = v34; - v26 = v33; - v27 = 1; -LABEL_36: - if ( v25 && *((_DWORD *)v26 + 8) == v14 && v14 ) - { - *a6 = 0; - if ( !v36 || *((_DWORD *)v26 + 6) != v14 ) - goto LABEL_71; -LABEL_56: - *a5 = 4; - return a1; - } - if ( v36 && *((_DWORD *)v26 + 6) == v14 && v14 ) - { - *a6 = 1; -LABEL_71: - v31 = 2 * (v27 != 0); - goto LABEL_68; - } - *a6 = 0; - if ( !v27 ) - goto LABEL_56; - *a5 = 6; - return a1; -} -// 4B2030: using guessed type unsigned int var_20[8]; - -//----- (004B24B0) -------------------------------------------------------- -std::locale::facet *__stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - double *a6) -{ - __int64 v6; // rax - char v7; // dl - int v8; // ecx - int v9; // eax - __int16 *v11; // eax - __int16 v12; // ax - __int16 *v13; // eax - __int16 v14; // ax - unsigned __int8 v15; // dl - bool v16; // zf - std::locale::facet *v17; // eax - unsigned int v18; // [esp+4h] [ebp-94h] - std::locale::facet *v19; // [esp+30h] [ebp-68h] - std::locale::facet *v20; // [esp+38h] [ebp-60h] - __int16 lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int8 lpuexcpt; // [esp+40h] [ebp-58h] - int v23; // [esp+88h] [ebp-10h] BYREF - int v24[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v23 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v23, (std::string *)0x20, v18); - v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v23); - lpuexcpta = WORD2(v6); - v20 = (std::locale::facet *)v6; - v19 = (std::locale::facet *)v6; - v24[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((unsigned __int8 *)v23, a6, a5); - lpuexcpt = lpuexcpta == -1; - if ( (lpuexcpt & (v19 != 0)) != 0 ) - { - v13 = (__int16 *)*((_DWORD *)v20 + 2); - if ( (unsigned int)v13 >= *((_DWORD *)v20 + 3) ) - v14 = (*(int (__fastcall **)(std::locale::facet *))(*(_DWORD *)v20 + 36))(v20); - else - v14 = *v13; - v15 = lpuexcpt & (v20 != 0); - v16 = v14 == -1; - if ( v14 != -1 ) - v15 = 0; - v17 = 0; - if ( !v16 ) - v17 = v20; - lpuexcpt = v15; - v19 = v17; - } - v7 = a3 == -1; - if ( a2 && a3 == -1 ) - { - v11 = (__int16 *)a2[2]; - if ( (unsigned int)v11 >= a2[3] ) - v12 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v12 = *v11; - v7 = v12 == -1; - } - if ( lpuexcpt == v7 ) - *a5 |= 2u; - v8 = v23; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) - return v19; -LABEL_10: - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)v24); - return v19; - } - v9 = *(_DWORD *)(v23 - 4); - *(_DWORD *)(v23 - 4) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_10; - return v19; -} -// 4B2530: variable 'v18' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 4B24B0: using guessed type int var_C[3]; - -//----- (004B2700) -------------------------------------------------------- -std::locale::facet *__stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - long double *a6) -{ - __int64 v6; // rax - char v7; // dl - char *v8; // ecx - int v9; // eax - __int16 *v11; // eax - __int16 v12; // ax - __int16 *v13; // eax - __int16 v14; // ax - unsigned __int8 v15; // dl - bool v16; // zf - std::locale::facet *v17; // eax - unsigned int v18; // [esp+4h] [ebp-94h] - std::locale::facet *v19; // [esp+30h] [ebp-68h] - std::locale::facet *v20; // [esp+38h] [ebp-60h] - __int16 lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int8 lpuexcpt; // [esp+40h] [ebp-58h] - char *String; // [esp+88h] [ebp-10h] BYREF - int v24[3]; // [esp+8Ch] [ebp-Ch] BYREF - - String = (char *)std::string::_S_construct(0, 0); - std::string::reserve((int *)&String, (std::string *)0x20, v18); - v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (int *)&String); - lpuexcpta = WORD2(v6); - v20 = (std::locale::facet *)v6; - v19 = (std::locale::facet *)v6; - v24[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v(String, a6, a5); - lpuexcpt = lpuexcpta == -1; - if ( (lpuexcpt & (v19 != 0)) != 0 ) - { - v13 = (__int16 *)*((_DWORD *)v20 + 2); - if ( (unsigned int)v13 >= *((_DWORD *)v20 + 3) ) - v14 = (*(int (__fastcall **)(std::locale::facet *))(*(_DWORD *)v20 + 36))(v20); - else - v14 = *v13; - v15 = lpuexcpt & (v20 != 0); - v16 = v14 == -1; - if ( v14 != -1 ) - v15 = 0; - v17 = 0; - if ( !v16 ) - v17 = v20; - lpuexcpt = v15; - v19 = v17; - } - v7 = a3 == -1; - if ( a2 && a3 == -1 ) - { - v11 = (__int16 *)a2[2]; - if ( (unsigned int)v11 >= a2[3] ) - v12 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v12 = *v11; - v7 = v12 == -1; - } - if ( lpuexcpt == v7 ) - *a5 |= 2u; - v8 = String; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) - return v19; -LABEL_10: - std::string::_Rep::_M_destroy(v8 - 12, (int)v24); - return v19; - } - v9 = *((_DWORD *)String - 1); - *((_DWORD *)String - 1) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_10; - return v19; -} -// 4B2780: variable 'v18' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 4B2700: using guessed type int var_C[3]; - -//----- (004B2950) -------------------------------------------------------- -std::locale::facet *__stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - float *a6) -{ - __int64 v6; // rax - char v7; // dl - int v8; // ecx - int v9; // eax - __int16 *v11; // eax - __int16 v12; // ax - __int16 *v13; // eax - __int16 v14; // ax - unsigned __int8 v15; // dl - bool v16; // zf - std::locale::facet *v17; // eax - unsigned int v18; // [esp+4h] [ebp-94h] - std::locale::facet *v19; // [esp+30h] [ebp-68h] - std::locale::facet *v20; // [esp+38h] [ebp-60h] - __int16 lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int8 lpuexcpt; // [esp+40h] [ebp-58h] - int v23; // [esp+88h] [ebp-10h] BYREF - int v24[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v23 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v23, (std::string *)0x20, v18); - v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v23); - lpuexcpta = WORD2(v6); - v20 = (std::locale::facet *)v6; - v19 = (std::locale::facet *)v6; - v24[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((unsigned __int8 *)v23, a6, a5); - lpuexcpt = lpuexcpta == -1; - if ( (lpuexcpt & (v19 != 0)) != 0 ) - { - v13 = (__int16 *)*((_DWORD *)v20 + 2); - if ( (unsigned int)v13 >= *((_DWORD *)v20 + 3) ) - v14 = (*(int (__fastcall **)(std::locale::facet *))(*(_DWORD *)v20 + 36))(v20); - else - v14 = *v13; - v15 = lpuexcpt & (v20 != 0); - v16 = v14 == -1; - if ( v14 != -1 ) - v15 = 0; - v17 = 0; - if ( !v16 ) - v17 = v20; - lpuexcpt = v15; - v19 = v17; - } - v7 = a3 == -1; - if ( a2 && a3 == -1 ) - { - v11 = (__int16 *)a2[2]; - if ( (unsigned int)v11 >= a2[3] ) - v12 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v12 = *v11; - v7 = v12 == -1; - } - if ( lpuexcpt == v7 ) - *a5 |= 2u; - v8 = v23; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) - return v19; -LABEL_10: - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)v24); - return v19; - } - v9 = *(_DWORD *)(v23 - 4); - *(_DWORD *)(v23 - 4) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_10; - return v19; -} -// 4B29D0: variable 'v18' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 4B2950: using guessed type int var_C[3]; - -//----- (004B2C00) -------------------------------------------------------- -_BYTE *__stdcall std::num_put>::_M_group_int( - char *a1, - int a2, - char a3, - int a4, - _BYTE *a5, - _BYTE *a6, - _DWORD *a7) -{ - _BYTE *result; // eax - - result = (_BYTE *)(std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5); - *a7 = result; - return result; -} - -//----- (004B2C50) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - int *a3, - int a4, - int a5) -{ - struct _Unwind_Exception *v5; // esi - void *v6; // esp - void *v7; // esp - unsigned int v8; // eax - int v9; // eax - int v10; // ebx - char *v11; // edx - int v12; // esi - int v14; // eax - void *v15; // esp - void *v16; // esp - int v17; // eax - void *v18; // esp - void *v19; // esp - char *v20; // eax - _BYTE *v21; // eax - char v22; // al - int v23; // [esp-14h] [ebp-7Ch] - int v24; // [esp-Ch] [ebp-74h] - char v25[2]; // [esp+0h] [ebp-68h] BYREF - _BYTE v26[18]; // [esp+2h] [ebp-66h] BYREF - char v27[20]; // [esp+14h] [ebp-54h] BYREF - unsigned int v28; // [esp+28h] [ebp-40h] - int v29; // [esp+2Ch] [ebp-3Ch] - char *v30; // [esp+30h] [ebp-38h] - int v31; // [esp+34h] [ebp-34h] - unsigned int v32; // [esp+38h] [ebp-30h] - char *v33; // [esp+3Ch] [ebp-2Ch] - - v31 = a2; - v29 = a4; - v5 = std::__use_cache>::operator()(a3 + 27); - v33 = (char *)v5 + 38; - v32 = a3[3]; - v6 = alloca(32); - v7 = alloca(32); - v28 = v32 & 0x4A; - v8 = a5; - LOBYTE(v33) = v28 != 8 && v28 != 64; - if ( a5 <= 0 ) - { - v8 = -a5; - if ( v28 == 8 || v28 == 64 ) - v8 = a5; - } - v30 = v25; - v9 = std::__int_to_char(v27, v8, (int)v5 + 38, v32, (char)v33); - v10 = v9; - v11 = &v30[-v9 + 20]; - if ( !*((_BYTE *)v5 + 16) ) - { - if ( (_BYTE)v33 ) - goto LABEL_6; -LABEL_16: - if ( (v32 & 0x200) != 0 && a5 ) - { - if ( v28 == 64 ) - { - v22 = *((_BYTE *)v5 + 42); - ++v10; - --v11; - } - else - { - v10 += 2; - v11 -= 2; - v11[1] = *((_BYTE *)v5 + ((v32 >> 14) & 1) + 40); - v22 = *((_BYTE *)v5 + 42); - } - *v11 = v22; - } - goto LABEL_8; - } - v17 = 16 * ((unsigned int)(2 * v9 + 29) >> 4); - v18 = alloca(v17); - v19 = alloca(v17); - v23 = *((_DWORD *)v5 + 3); - v20 = (char *)*((_DWORD *)v5 + 2); - v30 = v26; - v21 = std::__add_grouping(v26, *((_BYTE *)v5 + 37), v20, v23, v11, &v11[v10]); - v11 = v30; - v10 = v21 - v30; - if ( !(_BYTE)v33 ) - goto LABEL_16; -LABEL_6: - if ( a5 < 0 ) - { - ++v10; - *--v11 = *((_BYTE *)v5 + 38); - } - else if ( (v32 & 0x800) != 0 ) - { - ++v10; - *--v11 = *((_BYTE *)v5 + 39); - v12 = a3[2]; - if ( v12 <= v10 ) - goto LABEL_9; - goto LABEL_13; - } -LABEL_8: - v12 = a3[2]; - if ( v12 <= v10 ) - goto LABEL_9; -LABEL_13: - v14 = 16 * ((unsigned int)(v12 + 27) >> 4); - v15 = alloca(v14); - v16 = alloca(v14); - v24 = v10; - v10 = v12; - v33 = v25; - std::__pad>::_S_pad(a3, (void *)(char)v29, v25, v11, v12, v24); - v11 = v33; -LABEL_9: - a3[2] = 0; - if ( !(_BYTE)v31 ) - (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)a1 + 48))(a1, v11, v10); - return a1; -} -// 4B2C50: using guessed type char anonymous_0[20]; - -//----- (004B2EA0) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5) -{ - unsigned int v5; // ecx - void *v6; // esp - void *v7; // esp - struct _Unwind_Exception *v8; // edx - int v9; // eax - char v10; // bl - struct _Unwind_Exception *v11; // eax - char v12; // si - int v14; // eax - void *v15; // esp - void *v16; // esp - int v17; // eax - _BYTE *v18; // eax - int v19; // esi - int v20; // eax - void *v21; // esp - void *v22; // esp - _DWORD *v23; // eax - char v24[2]; // [esp+0h] [ebp-88h] BYREF - _BYTE v25[6]; // [esp+2h] [ebp-86h] BYREF - unsigned int v26; // [esp+8h] [ebp-80h] - char v27[16]; // [esp+14h] [ebp-74h] BYREF - int v28; // [esp+24h] [ebp-64h] - unsigned int v29; // [esp+28h] [ebp-60h] - unsigned int v30; // [esp+2Ch] [ebp-5Ch] - int v31; // [esp+30h] [ebp-58h] - int v32; // [esp+34h] [ebp-54h] - std::locale::_Impl *v33; // [esp+38h] [ebp-50h] - int *v34; // [esp+3Ch] [ebp-4Ch] - int v35; // [esp+40h] [ebp-48h] - int v36; // [esp+44h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-40h] - - v35 = a1; - v32 = a2; - v31 = a4; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v34 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v36 = *v34; - if ( !v36 ) - { - v23 = operator new(0x68u); - v23[1] = 0; - *v23 = &off_5605B0; - v23[2] = 0; - v23[3] = 0; - *((_BYTE *)v23 + 16) = 0; - v23[5] = 0; - v23[6] = 0; - v23[7] = 0; - v23[8] = 0; - *((_WORD *)v23 + 18) = 0; - *((_BYTE *)v23 + 100) = 0; - v33 = (std::locale::_Impl *)v23; - std::__numpunct_cache::_M_cache((int)v23, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v33, lpuexcpt, v26); - v36 = *v34; - } - v5 = a3[3]; - v28 = v36 + 38; - v30 = v5; - v6 = alloca(32); - v7 = alloca(32); - v33 = (std::locale::_Impl *)v24; - v29 = v5 & 0x4A; - LOBYTE(v34) = v29 != 8 && v29 != 64; - lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char(v27, a5, v36 + 38, v5, (char)v34); - v8 = (struct _Unwind_Exception *)(v33 - lpuexcpt + 20); - if ( *(_BYTE *)(v36 + 16) ) - { - v14 = 16 * ((unsigned int)(2 * (_DWORD)lpuexcpt + 29) >> 4); - v15 = alloca(v14); - v16 = alloca(v14); - v17 = *(_DWORD *)(v36 + 12); - lpuexcpt = (struct _Unwind_Exception *)v25; - v18 = std::__add_grouping(v25, *(_BYTE *)(v36 + 37), *(char **)(v36 + 8), v17, v8, (_BYTE *)v33 + 20); - v8 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)(v18 - (_BYTE *)lpuexcpt); - if ( (_BYTE)v34 ) - goto LABEL_5; - } - else if ( (_BYTE)v34 ) - { - goto LABEL_5; - } - if ( (v30 & 0x200) != 0 && a5 ) - { - if ( v29 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v8 = (struct _Unwind_Exception *)((char *)v8 - 1); - } - else - { - v8 = (struct _Unwind_Exception *)((char *)v8 - 2); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_BYTE *)v8 + 1) = *(_BYTE *)(v28 + ((v30 >> 14) & 1) + 2); - } - *(_BYTE *)v8 = *(_BYTE *)(v36 + 42); - } -LABEL_5: - v9 = a3[2]; - v36 = v9; - if ( v9 > (int)lpuexcpt ) - { - v19 = v9; - v20 = 16 * ((unsigned int)(v9 + 27) >> 4); - v21 = alloca(v20); - v22 = alloca(v20); - v34 = (int *)v24; - std::__pad>::_S_pad(a3, (void *)(char)v31, v24, v8, v19, (int)lpuexcpt); - v8 = (struct _Unwind_Exception *)v34; - lpuexcpt = (struct _Unwind_Exception *)v36; - } - v10 = v32; - a3[2] = 0; - LOBYTE(v36) = v10; - if ( !v10 ) - { - v11 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v35 + 48))( - v35, - v8, - lpuexcpt); - v12 = v36; - if ( lpuexcpt != v11 ) - v12 = 1; - LOBYTE(v36) = v12; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v36; - return v35; -} -// 53F788: using guessed type signed __int32 std::numpunct::id; -// 5605B0: using guessed type int (*off_5605B0)(); -// 4B2EA0: using guessed type char anonymous_1[16]; - -//----- (004B3240) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - int *a3, - int a4, - __int64 a5) -{ - struct _Unwind_Exception *v5; // edi - void *v6; // esp - void *v7; // esp - __int64 v8; // rax - int v9; // eax - char *v10; // esi - int v11; // ebx - char *v12; // edx - int v13; // esi - int v15; // eax - void *v16; // esp - void *v17; // esp - int v18; // eax - void *v19; // esp - void *v20; // esp - _BYTE *v21; // eax - char v22; // al - int v23; // [esp-2Ch] [ebp-94h] - char v24[2]; // [esp-20h] [ebp-88h] BYREF - _BYTE v25[38]; // [esp-1Eh] [ebp-86h] BYREF - char v26[24]; // [esp+8h] [ebp-60h] BYREF - unsigned int v27; // [esp+20h] [ebp-48h] - int v28; // [esp+24h] [ebp-44h] - int v29; // [esp+28h] [ebp-40h] - unsigned int v30; // [esp+2Ch] [ebp-3Ch] - int v31; // [esp+30h] [ebp-38h] - int v32; // [esp+34h] [ebp-34h] - __int64 v33; // [esp+38h] [ebp-30h] - - v31 = a1; - v29 = a2; - v28 = a4; - v33 = a5; - v5 = std::__use_cache>::operator()(a3 + 27); - v32 = (int)v5 + 38; - v30 = a3[3]; - v6 = alloca(64); - v7 = alloca(64); - v27 = v30 & 0x4A; - v8 = a5; - LOBYTE(v32) = v27 != 8 && v27 != 64; - if ( ((HIDWORD(a5) | ((unsigned __int64)(a5 - 1) >> 32)) & 0x80000000) != 0LL && (_BYTE)v32 ) - v8 = -a5; - v9 = std::__int_to_char(v26, v8, HIDWORD(v8), (int)v5 + 38, v30, v32); - v10 = &v24[-v9]; - v11 = v9; - v12 = &v24[-v9 + 40]; - if ( !*((_BYTE *)v5 + 16) ) - { - if ( (_BYTE)v32 ) - goto LABEL_6; -LABEL_16: - if ( (v30 & 0x200) != 0 && v33 ) - { - if ( v27 == 64 ) - { - v22 = *((_BYTE *)v5 + 42); - ++v11; - --v12; - } - else - { - v11 += 2; - v12 -= 2; - v12[1] = *((_BYTE *)v5 + ((v30 >> 14) & 1) + 40); - v22 = *((_BYTE *)v5 + 42); - } - *v12 = v22; - } - goto LABEL_8; - } - v18 = 16 * ((unsigned int)(2 * v9 + 29) >> 4); - v19 = alloca(v18); - v20 = alloca(v18); - v21 = std::__add_grouping( - v25, - *((_BYTE *)v5 + 37), - *((char **)v5 + 2), - *((_DWORD *)v5 + 3), - v10 + 40, - &v12[v11]); - v12 = v25; - v11 = v21 - v25; - if ( !(_BYTE)v32 ) - goto LABEL_16; -LABEL_6: - if ( v33 < 0 ) - { - ++v11; - *--v12 = *((_BYTE *)v5 + 38); - } - else if ( (v30 & 0x800) != 0 ) - { - ++v11; - *--v12 = *((_BYTE *)v5 + 39); - v13 = a3[2]; - if ( v13 <= v11 ) - goto LABEL_9; - goto LABEL_13; - } -LABEL_8: - v13 = a3[2]; - if ( v13 <= v11 ) - goto LABEL_9; -LABEL_13: - v15 = 16 * ((unsigned int)(v13 + 27) >> 4); - v16 = alloca(v15); - v17 = alloca(v15); - v23 = v11; - v11 = v13; - std::__pad>::_S_pad(a3, (void *)(char)v28, v24, v12, v13, v23); - v12 = v24; -LABEL_9: - a3[2] = 0; - if ( !(_BYTE)v29 ) - (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v31 + 48))(v31, v12, v11); - return v31; -} -// 4B3240: using guessed type char anonymous_0[24]; - -//----- (004B34A0) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6) -{ - unsigned int v6; // ecx - void *v7; // esp - void *v8; // esp - int v9; // ebx - struct _Unwind_Exception *v10; // edx - int v11; // eax - char v12; // bl - struct _Unwind_Exception *v13; // eax - char v14; // si - int v16; // eax - void *v17; // esp - void *v18; // esp - int v19; // eax - _BYTE *v20; // eax - int v21; // ebx - int v22; // eax - void *v23; // esp - void *v24; // esp - _DWORD *v25; // eax - char v26[2]; // [esp-20h] [ebp-B8h] BYREF - _BYTE v27[38]; // [esp-1Eh] [ebp-B6h] BYREF - unsigned int v28[9]; // [esp+8h] [ebp-90h] BYREF - int v29; // [esp+2Ch] [ebp-6Ch] - unsigned int v30; // [esp+30h] [ebp-68h] - unsigned int v31; // [esp+34h] [ebp-64h] - int v32; // [esp+38h] [ebp-60h] - int v33; // [esp+3Ch] [ebp-5Ch] - std::locale::_Impl *v34; // [esp+40h] [ebp-58h] - int *v35; // [esp+44h] [ebp-54h] - unsigned __int64 v36; // [esp+48h] [ebp-50h] - int v37; // [esp+50h] [ebp-48h] - int v38; // [esp+54h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-40h] - - v37 = a1; - v33 = a2; - v32 = a4; - v36 = __PAIR64__(a5, a6); - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v35 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v38 = *v35; - if ( !v38 ) - { - v25 = operator new(0x68u); - v25[1] = 0; - *v25 = &off_5605B0; - v25[2] = 0; - v25[3] = 0; - *((_BYTE *)v25 + 16) = 0; - v25[5] = 0; - v25[6] = 0; - v25[7] = 0; - v25[8] = 0; - *((_WORD *)v25 + 18) = 0; - *((_BYTE *)v25 + 100) = 0; - v34 = (std::locale::_Impl *)v25; - std::__numpunct_cache::_M_cache((int)v25, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v34, lpuexcpt, v28[0]); - v38 = *v35; - } - v6 = a3[3]; - v29 = v38 + 38; - v31 = v6; - v7 = alloca(64); - v8 = alloca(64); - v34 = (std::locale::_Impl *)v26; - v30 = v6 & 0x4A; - LOBYTE(v35) = v30 != 8 && v30 != 64; - lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char( - v28, - HIDWORD(v36), - v36, - v38 + 38, - v6, - (char)v35); - v9 = v34 - lpuexcpt; - v10 = (struct _Unwind_Exception *)(v34 - lpuexcpt + 40); - if ( *(_BYTE *)(v38 + 16) ) - { - v16 = 16 * ((unsigned int)(2 * (_DWORD)lpuexcpt + 29) >> 4); - v17 = alloca(v16); - v18 = alloca(v16); - v19 = *(_DWORD *)(v38 + 12); - lpuexcpt = (struct _Unwind_Exception *)v27; - v20 = std::__add_grouping( - v27, - *(_BYTE *)(v38 + 37), - *(char **)(v38 + 8), - v19, - (_BYTE *)(v9 + 40), - (_BYTE *)v34 + 40); - v10 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)(v20 - (_BYTE *)lpuexcpt); - if ( (_BYTE)v35 ) - goto LABEL_5; - } - else if ( (_BYTE)v35 ) - { - goto LABEL_5; - } - if ( (v31 & 0x200) != 0 && v36 ) - { - if ( v30 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v10 = (struct _Unwind_Exception *)((char *)v10 - 1); - } - else - { - v10 = (struct _Unwind_Exception *)((char *)v10 - 2); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_BYTE *)v10 + 1) = *(_BYTE *)(v29 + ((v31 >> 14) & 1) + 2); - } - *(_BYTE *)v10 = *(_BYTE *)(v38 + 42); - } -LABEL_5: - v11 = a3[2]; - v38 = v11; - if ( v11 > (int)lpuexcpt ) - { - v21 = v11; - v22 = 16 * ((unsigned int)(v11 + 27) >> 4); - v23 = alloca(v22); - v24 = alloca(v22); - HIDWORD(v36) = v26; - std::__pad>::_S_pad(a3, (void *)(char)v32, v26, v10, v21, (int)lpuexcpt); - v10 = (struct _Unwind_Exception *)HIDWORD(v36); - lpuexcpt = (struct _Unwind_Exception *)v38; - } - v12 = v33; - a3[2] = 0; - LOBYTE(v38) = v12; - if ( !v12 ) - { - v13 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v37 + 48))( - v37, - v10, - lpuexcpt); - v14 = v38; - if ( lpuexcpt != v13 ) - v14 = 1; - LOBYTE(v38) = v14; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v38; - return v37; -} -// 53F788: using guessed type signed __int32 std::numpunct::id; -// 5605B0: using guessed type int (*off_5605B0)(); -// 4B34A0: using guessed type unsigned int anonymous_0[9]; - -//----- (004B3860) -------------------------------------------------------- -_BYTE *__stdcall std::num_put>::_M_group_float( - char *a1, - int a2, - char a3, - char *Src, - int a5, - _BYTE *a6, - _DWORD *a7) -{ - char *v7; // ebp - _BYTE *v8; // ecx - int v9; // eax - _BYTE *v10; // edx - _BYTE *result; // eax - _BYTE *v12; // [esp+2Ch] [ebp-20h] - - if ( Src ) - { - v7 = (char *)(Src - a6); - v8 = std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, Src); - v9 = 0; - v10 = &v8[-a5]; - if ( *a7 != Src - a6 ) - { - v12 = &v8[-a5]; - memcpy(v8, Src, *a7 - (_DWORD)v7); - v10 = v12; - v9 = *a7 - (_DWORD)v7; - } - result = &v10[v9]; - *a7 = result; - } - else - { - result = &std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, &a6[*a7])[-a5]; - *a7 = result; - } - return result; -} - -//----- (004B3930) -------------------------------------------------------- -int __thiscall std::num_put>::_M_insert_float( - void *this, - int a2, - int a3, - int *a4, - int a5, - char a6, - double a7) -{ - int v7; // ebx - void *v8; // esp - void *v9; // esp - int v10; // eax - _BYTE *v11; // eax - int v12; // ebx - _BYTE *v13; // esi - int v14; // eax - void *v15; // esp - char v16; // dl - void *v17; // esp - char *v18; // eax - void (__thiscall *v19)(_BYTE *, char *, char *, void *); // edx - char *v20; // eax - char *v21; // edx - struct _Unwind_Exception *v22; // ecx - signed int v23; // esi - int v25; // eax - void *v26; // esp - void *v27; // esp - int v28; // eax - void *v29; // esp - void *v30; // esp - char *v31; // ecx - int v32; // ebx - int v33; // eax - void *v34; // esp - void *v35; // esp - int v36; // eax - int v37; // eax - void *v38; // esp - void *v39; // esp - int v40; // [esp-2Ch] [ebp-B4h] - char v41; // [esp-20h] [ebp-A8h] BYREF - _BYTE v42[71]; // [esp-1Fh] [ebp-A7h] BYREF - char *v43; // [esp+28h] [ebp-60h] - int v44; // [esp+2Ch] [ebp-5Ch] - void *v45; // [esp+30h] [ebp-58h] - int v46; // [esp+34h] [ebp-54h] - size_t Size; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *v48; // [esp+3Ch] [ebp-4Ch] - void *v49; // [esp+40h] [ebp-48h] - int v50; // [esp+44h] [ebp-44h] - int v51[2]; // [esp+48h] [ebp-40h] - size_t MaxCount; // [esp+58h] [ebp-30h] BYREF - int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF - char v54[40]; // [esp+60h] [ebp-28h] BYREF - - v45 = this; - v50 = a2; - *(double *)v51 = a7; - v46 = a3; - v44 = a5; - v49 = a4 + 27; - v48 = std::__use_cache>::operator()(a4 + 27); - v7 = a4[1]; - if ( v7 < 0 ) - v7 = 6; - std::__num_base::_S_format_float((std::__num_base *)a4, (const std::ios_base *)v54, (char *)a6); - v8 = alloca(64); - v9 = alloca(64); - if ( (a4[3] & 0x104) == 260 ) - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v36 = std::__convert_from_v(&c_locale, &v41, 45, v54, v51[0], v51[1]); - MaxCount = v36; - if ( v36 > 44 ) - { - Size = v36 + 1; - v37 = 16 * ((unsigned int)(v36 + 28) >> 4); - v38 = alloca(v37); - v39 = alloca(v37); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, &v41, Size, v54, v51[0], v51[1]); - } - } - else - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v10 = std::__convert_from_v(&c_locale, &v41, 45, v54, v7, v51[0], v51[1]); - MaxCount = v10; - if ( v10 > 44 ) - { - Size = v10 + 1; - v25 = 16 * ((unsigned int)(v10 + 28) >> 4); - v26 = alloca(v25); - v27 = alloca(v25); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, &v41, Size, v54, v7, v51[0], v51[1]); - } - } - v11 = std::use_facet>((int)v49); - v12 = MaxCount; - v13 = v11; - Size = MaxCount; - v14 = 16 * ((MaxCount + 27) >> 4); - v15 = alloca(v14); - v16 = v13[28]; - v17 = alloca(v14); - v49 = &v41; - v51[0] = (int)&v41; - v18 = &v42[MaxCount - 1]; - if ( v16 != 1 ) - { - if ( v16 ) - { - v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v19 == (char *)std::ctype::do_widen ) - goto LABEL_9; - } - else - { - v43 = &v42[MaxCount - 1]; - std::ctype::_M_widen_init((int)v13); - v18 = v43; - v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v19 == (char *)std::ctype::do_widen ) - { -LABEL_9: - v12 = MaxCount; - if ( v18 != &v41 ) - memcpy(v49, &v41, Size); - goto LABEL_11; - } - } - v19(v13, &v41, v18, v49); - v12 = MaxCount; - goto LABEL_11; - } - if ( v18 != &v41 ) - memcpy(v49, &v41, MaxCount); -LABEL_11: - if ( !v12 ) - { - if ( *((_BYTE *)v48 + 16) ) - { - v21 = 0; - goto LABEL_20; - } -LABEL_14: - v23 = a4[2]; - if ( v23 <= v12 ) - goto LABEL_15; - goto LABEL_23; - } - v20 = (char *)memchr(&v41, 46, v12); - v21 = v20; - if ( !v20 ) - { - if ( *((_BYTE *)v48 + 16) && (v12 <= 2 || v42[0] <= 57 && (unsigned __int8)(v42[1] - 48) <= 9u && v42[0] > 47) ) - goto LABEL_20; - goto LABEL_14; - } - v22 = v48; - v21 = (char *)v49 + v20 - &v41; - *v21 = *((_BYTE *)v48 + 36); - if ( !*((_BYTE *)v22 + 16) ) - goto LABEL_14; -LABEL_20: - v28 = 16 * ((unsigned int)(2 * v12 + 27) >> 4); - v29 = alloca(v28); - v30 = alloca(v28); - if ( ((v41 - 43) & 0xFD) != 0 ) - { - v31 = &v41; - v32 = 0; - } - else - { - v31 = v42; - MaxCount = v12 - 1; - v32 = 1; - v41 = *(_BYTE *)v49; - v51[0] = (int)v49 + 1; - } - std::num_put>::_M_group_float( - *((char **)v48 + 2), - *((_DWORD *)v48 + 3), - *((_BYTE *)v48 + 37), - v21, - (int)v31, - (_BYTE *)v51[0], - &MaxCount); - v12 = MaxCount + v32; - v51[0] = (int)&v41; - MaxCount = v12; - v23 = a4[2]; - if ( v23 <= v12 ) - goto LABEL_15; -LABEL_23: - v33 = 16 * ((unsigned int)(v23 + 27) >> 4); - v34 = alloca(v33); - v35 = alloca(v33); - v40 = v12; - v12 = v23; - std::__pad>::_S_pad(a4, (void *)(char)v44, &v41, (_BYTE *)v51[0], v23, v40); - MaxCount = v23; - v51[0] = (int)&v41; -LABEL_15: - a4[2] = 0; - if ( !(_BYTE)v46 ) - (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v50 + 48))(v50, v51[0], v12); - return v50; -} - -//----- (004B3D90) -------------------------------------------------------- -int __thiscall std::num_put>::_M_insert_float( - void *this, - int a2, - int a3, - int *a4, - int a5, - char a6, - long double a7) -{ - int v7; // ebx - void *v8; // esp - void *v9; // esp - int v10; // eax - _BYTE *v11; // eax - int v12; // ebx - _BYTE *v13; // esi - int v14; // eax - void *v15; // esp - char v16; // dl - void *v17; // esp - char *v18; // eax - void (__thiscall *v19)(_BYTE *, char *, char *, void *); // edx - char *v20; // eax - char *v21; // edx - struct _Unwind_Exception *v22; // ecx - signed int v23; // esi - int v25; // eax - void *v26; // esp - void *v27; // esp - int v28; // eax - void *v29; // esp - void *v30; // esp - char *v31; // ecx - int v32; // ebx - int v33; // eax - void *v34; // esp - void *v35; // esp - int v36; // eax - int v37; // eax - void *v38; // esp - void *v39; // esp - int v44; // [esp-3Ch] [ebp-C4h] - char v45; // [esp-30h] [ebp-B8h] BYREF - _BYTE v46[91]; // [esp-2Fh] [ebp-B7h] BYREF - char *v47; // [esp+2Ch] [ebp-5Ch] - int v48; // [esp+30h] [ebp-58h] - void *v49; // [esp+34h] [ebp-54h] - size_t Size; // [esp+38h] [ebp-50h] - int v51; // [esp+3Ch] [ebp-4Ch] - struct _Unwind_Exception *v52; // [esp+40h] [ebp-48h] - void *v53; // [esp+44h] [ebp-44h] - int v54; // [esp+48h] [ebp-40h] - int v55; // [esp+4Ch] [ebp-3Ch] - size_t MaxCount; // [esp+58h] [ebp-30h] BYREF - int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF - char v58[40]; // [esp+60h] [ebp-28h] BYREF - - v49 = this; - v54 = a2; - v51 = a3; - v48 = a5; - v55 = (int)(a4 + 27); - v52 = std::__use_cache>::operator()(a4 + 27); - v7 = a4[1]; - if ( v7 < 0 ) - v7 = 6; - std::__num_base::_S_format_float((std::__num_base *)a4, (const std::ios_base *)v58, (char *)a6); - v8 = alloca(80); - v9 = alloca(80); - if ( (a4[3] & 0x104) == 260 ) - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v36 = std::__convert_from_v(&c_locale, &v45, 54, v58, *(_QWORD *)&a7, HIDWORD(a7)); - MaxCount = v36; - if ( v36 > 53 ) - { - v53 = (void *)(v36 + 1); - v37 = 16 * ((unsigned int)(v36 + 28) >> 4); - v38 = alloca(v37); - v39 = alloca(v37); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, &v45, (int)v53, v58, *(_QWORD *)&a7, HIDWORD(a7)); - } - } - else - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v10 = std::__convert_from_v(&c_locale, &v45, 54, v58, v7, *(_QWORD *)&a7, HIDWORD(a7)); - MaxCount = v10; - if ( v10 > 53 ) - { - v53 = (void *)(v10 + 1); - v25 = 16 * ((unsigned int)(v10 + 28) >> 4); - v26 = alloca(v25); - v27 = alloca(v25); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, &v45, (int)v53, v58, v7, *(_QWORD *)&a7, HIDWORD(a7)); - } - } - v11 = std::use_facet>(v55); - v12 = MaxCount; - v13 = v11; - Size = MaxCount; - v14 = 16 * ((MaxCount + 27) >> 4); - v15 = alloca(v14); - v16 = v13[28]; - v17 = alloca(v14); - v53 = &v45; - v55 = (int)&v45; - v18 = &v46[MaxCount - 1]; - if ( v16 != 1 ) - { - if ( v16 ) - { - v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v19 == (char *)std::ctype::do_widen ) - goto LABEL_9; - } - else - { - v47 = &v46[MaxCount - 1]; - std::ctype::_M_widen_init((int)v13); - v18 = v47; - v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v19 == (char *)std::ctype::do_widen ) - { -LABEL_9: - v12 = MaxCount; - if ( v18 != &v45 ) - memcpy(v53, &v45, Size); - goto LABEL_11; - } - } - v19(v13, &v45, v18, v53); - v12 = MaxCount; - goto LABEL_11; - } - if ( v18 != &v45 ) - memcpy(v53, &v45, MaxCount); -LABEL_11: - if ( !v12 ) - { - if ( *((_BYTE *)v52 + 16) ) - { - v21 = 0; - goto LABEL_20; - } -LABEL_14: - v23 = a4[2]; - if ( v23 <= v12 ) - goto LABEL_15; - goto LABEL_23; - } - v20 = (char *)memchr(&v45, 46, v12); - v21 = v20; - if ( !v20 ) - { - if ( *((_BYTE *)v52 + 16) && (v12 <= 2 || v46[0] <= 57 && (unsigned __int8)(v46[1] - 48) <= 9u && v46[0] > 47) ) - goto LABEL_20; - goto LABEL_14; - } - v22 = v52; - v21 = (char *)v53 + v20 - &v45; - *v21 = *((_BYTE *)v52 + 36); - if ( !*((_BYTE *)v22 + 16) ) - goto LABEL_14; -LABEL_20: - v28 = 16 * ((unsigned int)(2 * v12 + 27) >> 4); - v29 = alloca(v28); - v30 = alloca(v28); - if ( ((v45 - 43) & 0xFD) != 0 ) - { - v31 = &v45; - v32 = 0; - } - else - { - v31 = v46; - MaxCount = v12 - 1; - v32 = 1; - v45 = *(_BYTE *)v53; - v55 = (int)v53 + 1; - } - std::num_put>::_M_group_float( - *((char **)v52 + 2), - *((_DWORD *)v52 + 3), - *((_BYTE *)v52 + 37), - v21, - (int)v31, - (_BYTE *)v55, - &MaxCount); - v12 = MaxCount + v32; - v55 = (int)&v45; - MaxCount = v12; - v23 = a4[2]; - if ( v23 <= v12 ) - goto LABEL_15; -LABEL_23: - v33 = 16 * ((unsigned int)(v23 + 27) >> 4); - v34 = alloca(v33); - v35 = alloca(v33); - v44 = v12; - v12 = v23; - std::__pad>::_S_pad(a4, (void *)(char)v48, &v45, (_BYTE *)v55, v23, v44); - MaxCount = v23; - v55 = (int)&v45; -LABEL_15: - a4[2] = 0; - if ( !(_BYTE)v51 ) - (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v54 + 48))(v54, v55, v12); - return v54; -} - -//----- (004B41F0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - char a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax - int v7; // edi - int result; // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 36); - if ( v6 != std::num_put>::do_put ) - return v6(a2, a3, a4, a5, a6); - v7 = a4[3]; - a4[3] = v7 & 0xFFFFBDB5 | 0x208; - result = std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - a4[3] = v7; - return result; -} - -//----- (004B4290) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int a4, - char a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (004B42B0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - char a5, - double a6) -{ - int (__thiscall *v6)(void *, int, int, int *, char, double); // eax - - v6 = *(int (__thiscall **)(void *, int, int, int *, char, double))(*(_DWORD *)this + 28); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); - else - return ((int (__stdcall *)(int, int, int *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, LODWORD(a6), HIDWORD(a6)); -} - -//----- (004B4320) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - char a5, - long double a6) -{ - int (__thiscall *v6)(void *, int, int, int *, char, long double); // eax - - v6 = *(int (__thiscall **)(void *, int, int, int *, char, long double))(*(_DWORD *)this + 32); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 76, a6); - else - return ((int (__stdcall *)(int, int, int *, _DWORD, _DWORD, _DWORD, _DWORD))v6)( - a2, - a3, - a4, - a5, - LODWORD(a6), - DWORD1(a6), - HIDWORD(a6)); -} - -//----- (004B4390) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - char a5, - int a6) -{ - int (__stdcall *v6)(int, int, int *, char, int); // eax - - v6 = *(int (__stdcall **)(int, int, int *, char, int))(*(_DWORD *)this + 12); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return v6(a2, a3, a4, a5, a6); -} - -//----- (004B43F0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - char a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 16); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return v6(a2, a3, a4, a5, a6); -} - -//----- (004B4450) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - char a5, - __int64 a6) -{ - int (__stdcall *v6)(int, int, int *, char, __int64); // eax - - v6 = *(int (__stdcall **)(int, int, int *, char, __int64))(*(_DWORD *)this + 20); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return ((int (__stdcall *)(int, int, int *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); -} - -//----- (004B44C0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - char a5, - int a6, - int a7) -{ - int (__stdcall *v7)(int, int, _DWORD *, char, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, _DWORD *, char, int, int))(*(_DWORD *)this + 24); - if ( v7 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, a3, a4, a5, a6, a7); -} - -//----- (004B4530) -------------------------------------------------------- -int __stdcall std::num_put>::_M_pad( - char a1, - int a2, - _DWORD *a3, - char *a4, - _BYTE *a5, - int *a6) -{ - int result; // eax - - result = std::__pad>::_S_pad(a3, (void *)a1, a4, a5, a2, *a6); - *a6 = a2; - return result; -} - -//----- (004B4580) -------------------------------------------------------- -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) -{ - int v5; // edi - int result; // eax - - v5 = a3[3]; - a3[3] = v5 & 0xFFFFBDB5 | 0x208; - result = std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); - a3[3] = v5; - return result; -} - -//----- (004B4600) -------------------------------------------------------- -int *__stdcall std::num_put>::do_put(int *a1, int a2, int *a3, int a4, int a5) -{ - int v5; // edi - struct _Unwind_Exception *v7; // eax - int v8; // ecx - char v9; // dl - int v10; // ecx - int v11; // eax - size_t v12; // edx - int v13; // eax - void *v14; // esp - void *v15; // esp - char v16; // dl - int v17; // edi - int v18; // ecx - int v19; // eax - int v20; // edi - _BYTE v21[8]; // [esp+20h] [ebp-68h] BYREF - _BYTE *v22; // [esp+28h] [ebp-60h] - int v23; // [esp+2Ch] [ebp-5Ch] - char v24; // [esp+33h] [ebp-55h] - int v25; // [esp+34h] [ebp-54h] - int v26; // [esp+38h] [ebp-50h] - int v27; // [esp+3Ch] [ebp-4Ch] - - v5 = a3[3]; - v26 = a4; - if ( (v5 & 1) == 0 ) - return (int *)std::num_put>::_M_insert_int( - (int)a1, - a2, - a3, - (char)a4, - (unsigned __int8)a5); - v27 = a5; - v7 = std::__use_cache>::operator()(a3 + 27); - if ( (_BYTE)a5 ) - { - v8 = *((_DWORD *)v7 + 5); - v9 = a2; - v27 = *((_DWORD *)v7 + 6); - v25 = v8; - v10 = v27; - v11 = a3[2]; - if ( v27 < v11 ) - goto LABEL_5; -LABEL_10: - a3[2] = 0; - if ( !v9 ) - { - v19 = *a1; - LOBYTE(v26) = 0; - (*(int (__thiscall **)(int *, int, int))(v19 + 48))(a1, v25, v27); - } - return a1; - } - v18 = *((_DWORD *)v7 + 7); - v9 = a2; - v27 = *((_DWORD *)v7 + 8); - v25 = v18; - v10 = v27; - v11 = a3[2]; - if ( v27 >= v11 ) - goto LABEL_10; -LABEL_5: - v24 = v9; - v23 = v11 - v10; - v12 = v11 - v10; - v13 = 16 * ((unsigned int)(v11 - v10 + 27) >> 4); - v14 = alloca(v13); - v15 = alloca(v13); - v22 = v21; - memset(v21, (char)v26, v12); - v16 = v24; - a3[2] = 0; - if ( (v5 & 0xB0) == 32 ) - { - if ( !v16 ) - { - v20 = v27; - if ( v20 == (*(int (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v25, v27) ) - (*(void (__thiscall **)(int *, _BYTE *, int))(*a1 + 48))(a1, v22, v23); - } - } - else if ( !v16 ) - { - v17 = v23; - if ( v17 == (*(int (__thiscall **)(int *, _BYTE *, int))(*a1 + 48))(a1, v22, v23) ) - (*(void (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v25, v27); - } - return a1; -} - -//----- (004B4800) -------------------------------------------------------- -int __thiscall std::num_put>::do_put( - void *this, - int a2, - int a3, - int *a4, - char a5, - double a6) -{ - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); -} - -//----- (004B4850) -------------------------------------------------------- -int __thiscall std::num_put>::do_put( - void *this, - int a2, - int a3, - int *a4, - char a5, - long double a6) -{ - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 76, a6); -} - -//----- (004B48A0) -------------------------------------------------------- -int __stdcall std::num_put>::do_put(int a1, int a2, int *a3, char a4, int a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (004B48B0) -------------------------------------------------------- -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (004B48C0) -------------------------------------------------------- -int __stdcall std::num_put>::do_put(int a1, int a2, int *a3, char a4, __int64 a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (004B48D0) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - char a4, - int a5, - int a6) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5, a6); -} - -//----- (004B48E0) -------------------------------------------------------- -int __stdcall std::num_put>::_M_group_int( - char *a1, - int a2, - __int16 a3, - int a4, - _WORD *a5, - char *a6, - int *a7) -{ - int result; // eax - - result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[2 * *a7]) - a5; - *a7 = result; - return result; -} - -//----- (004B4930) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5) -{ - void *v5; // esp - void *v6; // esp - unsigned int v7; // eax - int v8; // ecx - struct _Unwind_Exception *v9; // edx - int v10; // eax - char v11; // cl - struct _Unwind_Exception *v12; // eax - char v13; // bl - int v15; // ebx - int v16; // eax - void *v17; // esp - void *v18; // esp - int v19; // eax - void *v20; // esp - void *v21; // esp - int v22; // eax - char *v23; // eax - _DWORD *v24; // eax - __int16 v25; // [esp-20h] [ebp-A8h] BYREF - _WORD v26[18]; // [esp-1Ch] [ebp-A4h] BYREF - unsigned int v27; // [esp+8h] [ebp-80h] - unsigned int v28; // [esp+24h] [ebp-64h] - int v29; // [esp+28h] [ebp-60h] - int v30; // [esp+2Ch] [ebp-5Ch] - int v31; // [esp+30h] [ebp-58h] - unsigned int v32; // [esp+34h] [ebp-54h] - int v33; // [esp+38h] [ebp-50h] - std::locale::_Impl *v34; // [esp+3Ch] [ebp-4Ch] - int *v35; // [esp+40h] [ebp-48h] - int v36; // [esp+44h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-40h] - - v33 = a1; - v30 = a2; - v29 = a4; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v35 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v36 = *v35; - if ( !v36 ) - { - v24 = operator new(0xA8u); - v24[1] = 0; - *v24 = &off_5605C0; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - v24[5] = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - *((_BYTE *)v24 + 164) = 0; - v34 = (std::locale::_Impl *)v24; - std::__numpunct_cache::_M_cache((int)v24, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v34, lpuexcpt, v27); - v36 = *v35; - } - v31 = v36 + 40; - v32 = a3[3]; - v5 = alloca(64); - v6 = alloca(64); - v28 = v32 & 0x4A; - v34 = (std::locale::_Impl *)&v25; - v7 = a5; - LOBYTE(v35) = v28 != 8 && v28 != 64; - if ( a5 <= 0 ) - { - v7 = -a5; - if ( v28 == 8 || v28 == 64 ) - v7 = a5; - } - v8 = std::__int_to_char((_WORD *)v34 + 20, v7, v31, v32, (char)v35); - lpuexcpt = (struct _Unwind_Exception *)v8; - v9 = (std::locale::_Impl *)((char *)v34 + 2 * (20 - v8)); - if ( !*(_BYTE *)(v36 + 16) ) - { - if ( (_BYTE)v35 ) - goto LABEL_8; -LABEL_20: - if ( (v32 & 0x200) != 0 && a5 ) - { - if ( v28 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - } - else - { - v9 = (struct _Unwind_Exception *)((char *)v9 - 4); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_WORD *)v9 + 1) = *(_WORD *)(v31 + 2 * ((v32 >> 14) & 1) + 4); - } - *(_WORD *)v9 = *(_WORD *)(v36 + 48); - } - goto LABEL_10; - } - v19 = 16 * ((unsigned int)(4 * v8 + 31) >> 4); - v20 = alloca(v19); - v21 = alloca(v19); - v22 = *(_DWORD *)(v36 + 12); - lpuexcpt = (struct _Unwind_Exception *)v26; - v23 = (char *)std::__add_grouping( - v26, - *(_WORD *)(v36 + 38), - *(char **)(v36 + 8), - v22, - (char *)v9, - (char *)v9 + 2 * v8); - v9 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)((v23 - (char *)lpuexcpt) >> 1); - if ( !(_BYTE)v35 ) - goto LABEL_20; -LABEL_8: - if ( a5 < 0 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - *(_WORD *)v9 = *(_WORD *)(v36 + 40); - } - else if ( (v32 & 0x800) != 0 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - *(_WORD *)v9 = *(_WORD *)(v36 + 42); - v10 = a3[2]; - v36 = v10; - if ( v10 <= (int)lpuexcpt ) - goto LABEL_11; - goto LABEL_17; - } -LABEL_10: - v10 = a3[2]; - v36 = v10; - if ( v10 <= (int)lpuexcpt ) - goto LABEL_11; -LABEL_17: - v15 = v10; - v16 = 16 * ((unsigned int)(2 * v10 + 27) >> 4); - v17 = alloca(v16); - v18 = alloca(v16); - v35 = (int *)&v25; - std::__pad>::_S_pad(a3, (void *)(unsigned __int16)v29, &v25, v9, v15, (int)lpuexcpt); - v9 = (struct _Unwind_Exception *)v35; - lpuexcpt = (struct _Unwind_Exception *)v36; -LABEL_11: - v11 = v30; - a3[2] = 0; - LOBYTE(v36) = v11; - if ( !v11 ) - { - v12 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v33 + 48))( - v33, - v9, - lpuexcpt); - v13 = v36; - if ( v12 != lpuexcpt ) - v13 = 1; - LOBYTE(v36) = v13; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v36; - return v33; -} -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004B4D50) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5) -{ - unsigned int v5; // ecx - void *v6; // esp - void *v7; // esp - struct _Unwind_Exception *v8; // edx - int v9; // eax - char v10; // si - struct _Unwind_Exception *v11; // eax - char v12; // dl - int v14; // eax - void *v15; // esp - void *v16; // esp - int v17; // eax - char *v18; // eax - int v19; // esi - int v20; // eax - void *v21; // esp - void *v22; // esp - _DWORD *v23; // eax - char *v24; // [esp-2Ch] [ebp-B4h] - __int16 v25; // [esp-20h] [ebp-A8h] BYREF - _WORD v26[18]; // [esp-1Ch] [ebp-A4h] BYREF - unsigned int v27[7]; // [esp+8h] [ebp-80h] BYREF - int v28; // [esp+24h] [ebp-64h] - unsigned int v29; // [esp+28h] [ebp-60h] - unsigned int v30; // [esp+2Ch] [ebp-5Ch] - int v31; // [esp+30h] [ebp-58h] - int v32; // [esp+34h] [ebp-54h] - std::locale::_Impl *v33; // [esp+38h] [ebp-50h] - int *v34; // [esp+3Ch] [ebp-4Ch] - int v35; // [esp+40h] [ebp-48h] - int v36; // [esp+44h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-40h] - - v35 = a1; - v32 = a2; - v31 = a4; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v34 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v36 = *v34; - if ( !v36 ) - { - v23 = operator new(0xA8u); - v23[1] = 0; - *v23 = &off_5605C0; - v23[2] = 0; - v23[3] = 0; - *((_BYTE *)v23 + 16) = 0; - v23[5] = 0; - v23[6] = 0; - v23[7] = 0; - v23[8] = 0; - v23[9] = 0; - *((_BYTE *)v23 + 164) = 0; - v33 = (std::locale::_Impl *)v23; - std::__numpunct_cache::_M_cache((int)v23, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v33, lpuexcpt, v27[0]); - v36 = *v34; - } - v5 = a3[3]; - v28 = v36 + 40; - v30 = v5; - v6 = alloca(64); - v7 = alloca(64); - v33 = (std::locale::_Impl *)&v25; - v29 = v5 & 0x4A; - LOBYTE(v34) = v29 != 8 && v29 != 64; - lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char(v27, a5, v36 + 40, v5, (char)v34); - v8 = (std::locale::_Impl *)((char *)v33 + 2 * (20 - (_DWORD)lpuexcpt)); - if ( *(_BYTE *)(v36 + 16) ) - { - v14 = 16 * ((unsigned int)(4 * (_DWORD)lpuexcpt + 31) >> 4); - v15 = alloca(v14); - v16 = alloca(v14); - v24 = (char *)v8 + 2 * (_DWORD)lpuexcpt; - v17 = *(_DWORD *)(v36 + 12); - lpuexcpt = (struct _Unwind_Exception *)v26; - v18 = (char *)std::__add_grouping(v26, *(_WORD *)(v36 + 38), *(char **)(v36 + 8), v17, (char *)v8, v24); - v8 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)((v18 - (char *)lpuexcpt) >> 1); - if ( (_BYTE)v34 ) - goto LABEL_5; - } - else if ( (_BYTE)v34 ) - { - goto LABEL_5; - } - if ( (v30 & 0x200) != 0 && a5 ) - { - if ( v29 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v8 = (struct _Unwind_Exception *)((char *)v8 - 2); - } - else - { - v8 = (struct _Unwind_Exception *)((char *)v8 - 4); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_WORD *)v8 + 1) = *(_WORD *)(v28 + 2 * ((v30 >> 14) & 1) + 4); - } - *(_WORD *)v8 = *(_WORD *)(v36 + 48); - } -LABEL_5: - v9 = a3[2]; - v36 = v9; - if ( v9 > (int)lpuexcpt ) - { - v19 = v9; - v20 = 16 * ((unsigned int)(2 * v9 + 27) >> 4); - v21 = alloca(v20); - v22 = alloca(v20); - v34 = (int *)&v25; - std::__pad>::_S_pad( - a3, - (void *)(unsigned __int16)v31, - &v25, - v8, - v19, - (int)lpuexcpt); - v8 = (struct _Unwind_Exception *)v34; - lpuexcpt = (struct _Unwind_Exception *)v36; - } - v10 = v32; - a3[2] = 0; - LOBYTE(v36) = v10; - if ( !v10 ) - { - v11 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v35 + 48))( - v35, - v8, - lpuexcpt); - v12 = v36; - if ( v11 != lpuexcpt ) - v12 = 1; - LOBYTE(v36) = v12; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v36; - return v35; -} -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); -// 4B4D50: using guessed type unsigned int anonymous_0[7]; - -//----- (004B5100) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - __int64 a5) -{ - void *v5; // esp - void *v6; // esp - __int64 v7; // rax - int v8; // ecx - struct _Unwind_Exception *v9; // edx - int v10; // eax - char v11; // bl - struct _Unwind_Exception *v12; // eax - char v13; // bl - int v15; // edi - int v16; // eax - void *v17; // esp - void *v18; // esp - int v19; // eax - void *v20; // esp - void *v21; // esp - int v22; // eax - char *v23; // eax - _DWORD *v24; // eax - __int16 v25; // [esp-40h] [ebp-E8h] BYREF - _WORD v26[34]; // [esp-3Ch] [ebp-E4h] BYREF - unsigned int v27; // [esp+8h] [ebp-A0h] - unsigned int v28; // [esp+2Ch] [ebp-7Ch] - int v29; // [esp+30h] [ebp-78h] - int v30; // [esp+34h] [ebp-74h] - int v31; // [esp+38h] [ebp-70h] - unsigned int v32; // [esp+3Ch] [ebp-6Ch] - int v33; // [esp+40h] [ebp-68h] - std::locale::_Impl *v34; // [esp+44h] [ebp-64h] - __int64 v35; // [esp+48h] [ebp-60h] - int *v36; // [esp+50h] [ebp-58h] - int v37; // [esp+54h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-50h] - - v33 = a1; - v30 = a2; - v29 = a4; - v35 = a5; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v36 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v37 = *v36; - if ( !v37 ) - { - v24 = operator new(0xA8u); - v24[1] = 0; - *v24 = &off_5605C0; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - v24[5] = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - *((_BYTE *)v24 + 164) = 0; - v34 = (std::locale::_Impl *)v24; - std::__numpunct_cache::_M_cache((int)v24, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v34, lpuexcpt, v27); - v37 = *v36; - } - v31 = v37 + 40; - v32 = a3[3]; - v5 = alloca(96); - v6 = alloca(96); - v28 = v32 & 0x4A; - v34 = (std::locale::_Impl *)&v25; - v7 = v35; - LOBYTE(v36) = v28 != 8 && v28 != 64; - if ( (HIDWORD(v35) | (((_DWORD)v35 != 0) + HIDWORD(v35) - 1)) < 0 && (_BYTE)v36 ) - v7 = -v35; - v8 = std::__int_to_char((_WORD *)v34 + 40, v7, HIDWORD(v7), v31, v32, (char)v36); - lpuexcpt = (struct _Unwind_Exception *)v8; - v9 = (std::locale::_Impl *)((char *)v34 + 2 * (40 - v8)); - if ( !*(_BYTE *)(v37 + 16) ) - { - if ( (_BYTE)v36 ) - goto LABEL_8; -LABEL_20: - if ( (v32 & 0x200) != 0 && v35 ) - { - if ( v28 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - } - else - { - v9 = (struct _Unwind_Exception *)((char *)v9 - 4); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_WORD *)v9 + 1) = *(_WORD *)(v31 + 2 * ((v32 >> 14) & 1) + 4); - } - *(_WORD *)v9 = *(_WORD *)(v37 + 48); - } - goto LABEL_10; - } - v19 = 16 * ((unsigned int)(4 * v8 + 31) >> 4); - v20 = alloca(v19); - v21 = alloca(v19); - v22 = *(_DWORD *)(v37 + 12); - lpuexcpt = (struct _Unwind_Exception *)v26; - v23 = (char *)std::__add_grouping( - v26, - *(_WORD *)(v37 + 38), - *(char **)(v37 + 8), - v22, - (char *)v9, - (char *)v9 + 2 * v8); - v9 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)((v23 - (char *)lpuexcpt) >> 1); - if ( !(_BYTE)v36 ) - goto LABEL_20; -LABEL_8: - if ( v35 < 0 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - *(_WORD *)v9 = *(_WORD *)(v37 + 40); - } - else if ( (v32 & 0x800) != 0 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - *(_WORD *)v9 = *(_WORD *)(v37 + 42); - v10 = a3[2]; - v37 = v10; - if ( v10 <= (int)lpuexcpt ) - goto LABEL_11; - goto LABEL_17; - } -LABEL_10: - v10 = a3[2]; - v37 = v10; - if ( v10 <= (int)lpuexcpt ) - goto LABEL_11; -LABEL_17: - v15 = v10; - v16 = 16 * ((unsigned int)(2 * v10 + 27) >> 4); - v17 = alloca(v16); - v18 = alloca(v16); - v36 = (int *)&v25; - std::__pad>::_S_pad(a3, (void *)(unsigned __int16)v29, &v25, v9, v15, (int)lpuexcpt); - v9 = (struct _Unwind_Exception *)v36; - lpuexcpt = (struct _Unwind_Exception *)v37; -LABEL_11: - v11 = v30; - a3[2] = 0; - LOBYTE(v37) = v11; - if ( !v11 ) - { - v12 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v33 + 48))( - v33, - v9, - lpuexcpt); - v13 = v37; - if ( v12 != lpuexcpt ) - v13 = 1; - LOBYTE(v37) = v13; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v37; - return v33; -} -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004B5550) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6) -{ - unsigned int v6; // ecx - void *v7; // esp - void *v8; // esp - struct _Unwind_Exception *v9; // edx - int v10; // eax - char v11; // si - struct _Unwind_Exception *v12; // eax - char v13; // dl - int v15; // eax - void *v16; // esp - void *v17; // esp - int v18; // eax - char *v19; // eax - int v20; // esi - int v21; // eax - void *v22; // esp - void *v23; // esp - _DWORD *v24; // eax - char *v25; // [esp-4Ch] [ebp-E4h] - __int16 v26; // [esp-40h] [ebp-D8h] BYREF - _WORD v27[34]; // [esp-3Ch] [ebp-D4h] BYREF - unsigned int v28; // [esp+8h] [ebp-90h] - __int16 v29[14]; // [esp+10h] [ebp-88h] BYREF - int v30; // [esp+2Ch] [ebp-6Ch] - unsigned int v31; // [esp+30h] [ebp-68h] - unsigned int v32; // [esp+34h] [ebp-64h] - int v33; // [esp+38h] [ebp-60h] - int v34; // [esp+3Ch] [ebp-5Ch] - std::locale::_Impl *v35; // [esp+40h] [ebp-58h] - int *v36; // [esp+44h] [ebp-54h] - unsigned __int64 v37; // [esp+48h] [ebp-50h] - int v38; // [esp+50h] [ebp-48h] - int v39; // [esp+54h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-40h] - - v38 = a1; - v34 = a2; - v33 = a4; - v37 = __PAIR64__(a5, a6); - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v36 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v39 = *v36; - if ( !v39 ) - { - v24 = operator new(0xA8u); - v24[1] = 0; - *v24 = &off_5605C0; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - v24[5] = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - *((_BYTE *)v24 + 164) = 0; - v35 = (std::locale::_Impl *)v24; - std::__numpunct_cache::_M_cache((int)v24, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v35, lpuexcpt, v28); - v39 = *v36; - } - v6 = a3[3]; - v30 = v39 + 40; - v32 = v6; - v7 = alloca(96); - v8 = alloca(96); - v35 = (std::locale::_Impl *)&v26; - v31 = v6 & 0x4A; - LOBYTE(v36) = v31 != 8 && v31 != 64; - lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char( - v29, - HIDWORD(v37), - v37, - v39 + 40, - v6, - (char)v36); - v9 = (std::locale::_Impl *)((char *)v35 + 2 * (40 - (_DWORD)lpuexcpt)); - if ( *(_BYTE *)(v39 + 16) ) - { - v15 = 16 * ((unsigned int)(4 * (_DWORD)lpuexcpt + 31) >> 4); - v16 = alloca(v15); - v17 = alloca(v15); - v25 = (char *)v9 + 2 * (_DWORD)lpuexcpt; - v18 = *(_DWORD *)(v39 + 12); - lpuexcpt = (struct _Unwind_Exception *)v27; - v19 = (char *)std::__add_grouping(v27, *(_WORD *)(v39 + 38), *(char **)(v39 + 8), v18, (char *)v9, v25); - v9 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)((v19 - (char *)lpuexcpt) >> 1); - if ( (_BYTE)v36 ) - goto LABEL_5; - } - else if ( (_BYTE)v36 ) - { - goto LABEL_5; - } - if ( (v32 & 0x200) != 0 && v37 ) - { - if ( v31 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - } - else - { - v9 = (struct _Unwind_Exception *)((char *)v9 - 4); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_WORD *)v9 + 1) = *(_WORD *)(v30 + 2 * ((v32 >> 14) & 1) + 4); - } - *(_WORD *)v9 = *(_WORD *)(v39 + 48); - } -LABEL_5: - v10 = a3[2]; - v39 = v10; - if ( v10 > (int)lpuexcpt ) - { - v20 = v10; - v21 = 16 * ((unsigned int)(2 * v10 + 27) >> 4); - v22 = alloca(v21); - v23 = alloca(v21); - HIDWORD(v37) = &v26; - std::__pad>::_S_pad( - a3, - (void *)(unsigned __int16)v33, - &v26, - v9, - v20, - (int)lpuexcpt); - v9 = (struct _Unwind_Exception *)HIDWORD(v37); - lpuexcpt = (struct _Unwind_Exception *)v39; - } - v11 = v34; - a3[2] = 0; - LOBYTE(v39) = v11; - if ( !v11 ) - { - v12 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v38 + 48))( - v38, - v9, - lpuexcpt); - v13 = v39; - if ( v12 != lpuexcpt ) - v13 = 1; - LOBYTE(v39) = v13; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v39; - return v38; -} -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); -// 4B5550: using guessed type __int16 anonymous_1[14]; - -//----- (004B5920) -------------------------------------------------------- -int __stdcall std::num_put>::_M_group_float( - char *a1, - int a2, - __int16 a3, - char *Src, - _WORD *a5, - char *a6, - _DWORD *a7) -{ - int v7; // ebx - _WORD *v8; // edx - int v9; // ebp - int v10; // eax - int result; // eax - - if ( Src ) - { - v7 = (Src - a6) >> 1; - v8 = std::__add_grouping(a5, a3, a1, a2, a6, Src); - v9 = v8 - a5; - v10 = 0; - if ( *a7 != v7 ) - { - memcpy(v8, Src, 2 * (*a7 - v7)); - v10 = *a7 - v7; - } - result = v9 + v10; - *a7 = result; - } - else - { - result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[2 * *a7]) - a5; - *a7 = result; - } - return result; -} - -//----- (004B59F0) -------------------------------------------------------- -int *__thiscall std::num_put>::_M_insert_float( - void *this, - int *a2, - int a3, - std::__num_base *a4, - int a5, - void *a6, - double a7) -{ - int v7; // eax - int v8; // edx - void *v9; // esp - void *v10; // esp - int v11; // eax - void *v12; // ecx - int v13; // eax - void *v14; // esp - void *v15; // esp - char *v16; // edx - char v17; // cl - int v18; // eax - char v19; // dl - int v20; // eax - int v21; // eax - char v22; // bl - int v24; // eax - void *v25; // esp - void *v26; // esp - size_t v27; // esi - int v28; // eax - void *v29; // esp - void *v30; // esp - __int16 *v31; // ecx - int v32; // ecx - int v33; // eax - void *v34; // esp - void *v35; // esp - int v36; // eax - int v37; // eax - void *v38; // esp - void *v39; // esp - char v40; // al - _DWORD *v41; // eax - int v42; // esi - int v43; // [esp-34h] [ebp-ECh] - int v44; // [esp-30h] [ebp-E8h] - int v45; // [esp-2Ch] [ebp-E4h] - int v46; // [esp-28h] [ebp-E0h] - _DWORD v47[11]; // [esp-20h] [ebp-D8h] BYREF - _WORD *v48; // [esp+Ch] [ebp-ACh] - __int16 v49; // [esp+20h] [ebp-98h] BYREF - __int16 v50; // [esp+22h] [ebp-96h] BYREF - std::locale::_Impl *v51; // [esp+2Ch] [ebp-8Ch] - int v52; // [esp+30h] [ebp-88h] - int v53; // [esp+34h] [ebp-84h] - void *v54; // [esp+38h] [ebp-80h] - std::locale::facet *v55; // [esp+3Ch] [ebp-7Ch] - int v56; // [esp+40h] [ebp-78h] - int *v57; // [esp+44h] [ebp-74h] - int v58; // [esp+48h] [ebp-70h] - int v59; // [esp+4Ch] [ebp-6Ch] - size_t MaxCount[2]; // [esp+50h] [ebp-68h] - void *Buf; // [esp+58h] [ebp-60h] - int v62; // [esp+98h] [ebp-20h] BYREF - int *c_locale; // [esp+9Ch] [ebp-1Ch] BYREF - char v64[24]; // [esp+A0h] [ebp-18h] BYREF - - v54 = this; - v57 = a2; - *(double *)MaxCount = a7; - v56 = a3; - v53 = a5; - Buf = a6; - v59 = (int)a4 + 108; - v55 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); - v52 = *(_DWORD *)(*((_DWORD *)a4 + 27) + 12) + 4 * (_DWORD)v55; - v58 = *(_DWORD *)v52; - if ( !v58 ) - { - v41 = operator new(0xA8u); - v42 = v59; - v41[1] = 0; - *v41 = &off_5605C0; - v41[2] = 0; - v41[3] = 0; - *((_BYTE *)v41 + 16) = 0; - v41[5] = 0; - v41[6] = 0; - v41[7] = 0; - v41[8] = 0; - v41[9] = 0; - *((_BYTE *)v41 + 164) = 0; - v51 = (std::locale::_Impl *)v41; - std::__numpunct_cache::_M_cache((int)v41, v42); - std::locale::_Impl::_M_install_cache(*((_DWORD *)a4 + 27), v51, v55, v47[10]); - v58 = *(_DWORD *)v52; - } - v7 = 6; - if ( *((int *)a4 + 1) >= 0 ) - v7 = *((_DWORD *)a4 + 1); - v55 = (std::locale::facet *)v7; - std::__num_base::_S_format_float(a4, (const std::ios_base *)v64, (char *)(char)Buf); - v8 = *((_DWORD *)a4 + 3) & 0x104; - v9 = alloca(64); - v10 = alloca(64); - Buf = v47; - if ( v8 == 260 ) - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v36 = std::__convert_from_v(&c_locale, (char *)Buf, 45, v64, MaxCount[0], MaxCount[1]); - v62 = v36; - if ( v36 > 44 ) - { - v55 = (std::locale::facet *)(v36 + 1); - v37 = 16 * ((unsigned int)(v36 + 28) >> 4); - v38 = alloca(v37); - v39 = alloca(v37); - Buf = v47; - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v62 = std::__convert_from_v(&c_locale, (char *)Buf, (int)v55, v64, MaxCount[0], MaxCount[1]); - } - } - else - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v11 = std::__convert_from_v(&c_locale, (char *)Buf, 45, v64, v55, MaxCount[0], MaxCount[1]); - v62 = v11; - if ( v11 > 44 ) - { - v52 = v11 + 1; - v24 = 16 * ((unsigned int)(v11 + 28) >> 4); - v25 = alloca(v24); - v26 = alloca(v24); - Buf = v47; - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v62 = std::__convert_from_v(&c_locale, (char *)Buf, v52, v64, v55, MaxCount[0], MaxCount[1]); - } - } - v12 = std::use_facet>(v59); - v13 = 16 * ((unsigned int)(2 * v62 + 27) >> 4); - v14 = alloca(v13); - v15 = alloca(v13); - v55 = (std::locale::facet *)v47; - v59 = (int)v47; - (*(void (__thiscall **)(void *, void *, char *, _DWORD *, int, int, int, int))(*(_DWORD *)v12 + 44))( - v12, - Buf, - (char *)Buf + v62, - v47, - v43, - v44, - v45, - v46); - MaxCount[0] = v62; - if ( !v62 ) - { - if ( *(_BYTE *)(v58 + 16) ) - { - v16 = 0; - goto LABEL_19; - } -LABEL_11: - v18 = *((_DWORD *)a4 + 2); - Buf = (void *)v18; - if ( v18 <= (int)MaxCount[0] ) - goto LABEL_12; - goto LABEL_22; - } - v16 = (char *)memchr(Buf, 46, MaxCount[0]); - v17 = *(_BYTE *)(v58 + 16); - if ( !v16 ) - { - if ( v17 ) - { - if ( (int)MaxCount[0] <= 2 ) - goto LABEL_19; - v40 = *((_BYTE *)Buf + 1); - if ( v40 <= 57 ) - { - LOBYTE(v52) = *((_BYTE *)Buf + 2); - if ( (unsigned __int8)(v52 - 48) <= 9u && v40 > 47 ) - goto LABEL_19; - } - } - goto LABEL_11; - } - v16 = (char *)v55 + 2 * (v16 - (_BYTE *)Buf); - *(_WORD *)v16 = *(_WORD *)(v58 + 36); - if ( !v17 ) - goto LABEL_11; -LABEL_19: - v27 = MaxCount[0]; - v28 = 16 * ((4 * MaxCount[0] + 27) >> 4); - v29 = alloca(v28); - v30 = alloca(v28); - v52 = (int)&v49; - if ( ((*(_BYTE *)Buf - 43) & 0xFD) != 0 ) - { - MaxCount[0] = 0; - v31 = (__int16 *)v52; - } - else - { - MaxCount[0] = 1; - v49 = *(_WORD *)v55; - v62 = v27 - 1; - v31 = &v50; - v59 = (int)v55 + 2; - } - std::num_put>::_M_group_float( - *(char **)(v58 + 8), - *(_DWORD *)(v58 + 12), - *(_WORD *)(v58 + 38), - v16, - v31, - (char *)v59, - &v62); - MaxCount[0] += v62; - v62 = MaxCount[0]; - v59 = v52; - v18 = *((_DWORD *)a4 + 2); - Buf = (void *)v18; - if ( v18 > (int)MaxCount[0] ) - { -LABEL_22: - v32 = v18; - v33 = 16 * ((unsigned int)(2 * v18 + 27) >> 4); - v34 = alloca(v33); - v35 = alloca(v33); - v48 = (_WORD *)v59; - v59 = (int)&v49; - std::__pad>::_S_pad( - a4, - (void *)(unsigned __int16)v53, - &v49, - v48, - v32, - MaxCount[0]); - v62 = (int)Buf; - MaxCount[0] = (size_t)Buf; - } -LABEL_12: - v19 = v56; - *((_DWORD *)a4 + 2) = 0; - LOBYTE(Buf) = v19; - if ( !v19 ) - { - v20 = *v57; - v47[8] = v59; - v47[9] = MaxCount[0]; - v21 = (*(int (__thiscall **)(int *, int, size_t))(v20 + 48))(v57, v59, MaxCount[0]); - v22 = (char)Buf; - if ( v21 != MaxCount[0] ) - v22 = 1; - LOBYTE(Buf) = v22; - } - MaxCount[0] = (unsigned __int8)Buf; - return v57; -} -// 4B5B72: variable 'v43' is possibly undefined -// 4B5B72: variable 'v44' is possibly undefined -// 4B5B72: variable 'v45' is possibly undefined -// 4B5B72: variable 'v46' is possibly undefined -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004B6010) -------------------------------------------------------- -// bad sp value at call has been detected, the output may be wrong! -int __thiscall std::num_put>::_M_insert_float( - void *this, - int a2, - int a3, - int *a4, - int a5, - char a6, - long double a7) -{ - int v7; // esi - void *v8; // esp - void *v9; // esp - int v10; // eax - int *v11; // ecx - int v12; // eax - void *v13; // esp - void *v14; // esp - int v15; // eax - int v16; // esi - char *v17; // edx - char v18; // cl - signed int v19; // ebx - int v21; // eax - void *v22; // esp - void *v23; // esp - int v24; // eax - void *v25; // esp - void *v26; // esp - __int16 *v27; // ebx - int v28; // esi - int v29; // eax - void *v30; // esp - void *v31; // esp - int v32; // eax - int v33; // eax - void *v34; // esp - void *v35; // esp - int v36; // [esp-44h] [ebp-BCh] - int v37; // [esp-40h] [ebp-B8h] - int v41; // [esp-3Ch] [ebp-B4h] - int v43; // [esp-38h] [ebp-B0h] - int v44; // [esp-34h] [ebp-ACh] - __int16 v45; // [esp-30h] [ebp-A8h] BYREF - char v46; // [esp-2Eh] [ebp-A6h] BYREF - const std::ios_base *v47; // [esp+4h] [ebp-74h] - char *v48; // [esp+8h] [ebp-70h] - int v49; // [esp+14h] [ebp-64h] - __int16 v50; // [esp+20h] [ebp-58h] BYREF - __int16 v51; // [esp+22h] [ebp-56h] BYREF - int v52; // [esp+24h] [ebp-54h] - void *v53; // [esp+28h] [ebp-50h] - int v54; // [esp+2Ch] [ebp-4Ch] - int v55; // [esp+30h] [ebp-48h] - int v56; // [esp+34h] [ebp-44h] - struct _Unwind_Exception *v57; // [esp+38h] [ebp-40h] - int v58; // [esp+3Ch] [ebp-3Ch] - size_t MaxCount; // [esp+48h] [ebp-30h] BYREF - int *c_locale; // [esp+4Ch] [ebp-2Ch] BYREF - char v61[40]; // [esp+50h] [ebp-28h] BYREF - - v53 = this; - v56 = a2; - v54 = a3; - v52 = a5; - v58 = (int)(a4 + 27); - v57 = std::__use_cache>::operator()(a4 + 27); - v7 = a4[1]; - v48 = (char *)a6; - v47 = (const std::ios_base *)v61; - if ( v7 < 0 ) - v7 = 6; - std::__num_base::_S_format_float((std::__num_base *)a4, v47, v48); - v55 = a4[3]; - v8 = alloca(80); - v9 = alloca(80); - if ( (v55 & 0x104) == 260 ) - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v32 = std::__convert_from_v(&c_locale, (char *)&v45, 54, v61, *(_QWORD *)&a7, HIDWORD(a7)); - MaxCount = v32; - if ( v32 > 53 ) - { - v55 = v32 + 1; - v33 = 16 * ((unsigned int)(v32 + 28) >> 4); - v34 = alloca(v33); - v35 = alloca(v33); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, (char *)&v45, v55, v61, *(_QWORD *)&a7, HIDWORD(a7)); - } - } - else - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v10 = std::__convert_from_v(&c_locale, (char *)&v45, 54, v61, v7, *(_QWORD *)&a7, HIDWORD(a7)); - MaxCount = v10; - if ( v10 > 53 ) - { - v55 = v10 + 1; - v21 = 16 * ((unsigned int)(v10 + 28) >> 4); - v22 = alloca(v21); - v23 = alloca(v21); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, (char *)&v45, v55, v61, v7, *(_QWORD *)&a7, HIDWORD(a7)); - } - } - v11 = (int *)std::use_facet>(v58); - v12 = 16 * ((2 * MaxCount + 27) >> 4); - v13 = alloca(v12); - v14 = alloca(v12); - v15 = *v11; - v58 = (int)&v45; - (*(void (__thiscall **)(int *, __int16 *, char *, __int16 *, int, int, int, int, int))(v15 + 44))( - v11, - &v45, - (char *)&v45 + MaxCount, - &v45, - v36, - v37, - v41, - v43, - v44); - v16 = MaxCount; - if ( !MaxCount ) - { - if ( *((_BYTE *)v57 + 16) ) - { - v17 = 0; - goto LABEL_15; - } -LABEL_9: - v19 = a4[2]; - if ( v16 >= v19 ) - goto LABEL_10; - goto LABEL_18; - } - v17 = (char *)memchr(&v45, 46, MaxCount); - v18 = *((_BYTE *)v57 + 16); - if ( !v17 ) - { - if ( v18 && (v16 <= 2 || SHIBYTE(v45) <= 57 && (unsigned __int8)(v46 - 48) <= 9u && SHIBYTE(v45) > 47) ) - goto LABEL_15; - goto LABEL_9; - } - v17 = (char *)(&v45 + v17 - (char *)&v45); - *(_WORD *)v17 = *((_WORD *)v57 + 18); - if ( !v18 ) - goto LABEL_9; -LABEL_15: - v24 = 16 * ((unsigned int)(4 * v16 + 27) >> 4); - v25 = alloca(v24); - v26 = alloca(v24); - if ( (((_BYTE)v45 - 43) & 0xFD) != 0 ) - { - v27 = &v50; - v28 = 0; - } - else - { - v27 = &v51; - v58 = (int)&v46; - v50 = v45; - MaxCount = v16 - 1; - v28 = 1; - } - v55 = (int)&v50; - std::num_put>::_M_group_float( - *((char **)v57 + 2), - *((_DWORD *)v57 + 3), - *((_WORD *)v57 + 19), - v17, - v27, - (char *)v58, - &MaxCount); - v16 = MaxCount + v28; - MaxCount = v16; - v58 = v55; - v19 = a4[2]; - if ( v16 >= v19 ) - goto LABEL_10; -LABEL_18: - v29 = 16 * ((unsigned int)(2 * v19 + 27) >> 4); - v30 = alloca(v29); - v31 = alloca(v29); - v49 = v16; - v16 = v19; - std::__pad>::_S_pad(a4, (void *)(unsigned __int16)v52, &v50, (_WORD *)v58, v19, v49); - MaxCount = v19; - v58 = (int)&v50; -LABEL_10: - a4[2] = 0; - if ( !(_BYTE)v54 ) - (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v56 + 48))(v56, v58, v16); - return v56; -} -// 4B6138: bad sp value at call -// 4B6118: variable 'v36' is possibly undefined -// 4B6118: variable 'v37' is possibly undefined -// 4B6118: variable 'v41' is possibly undefined -// 4B6118: variable 'v43' is possibly undefined -// 4B6118: variable 'v44' is possibly undefined - -//----- (004B63F0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, int); // eax - int v7; // edi - int result; // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, int))(*(_DWORD *)this + 36); - if ( v6 != std::num_put>::do_put ) - return v6(a2, a3, a4, a5, a6); - v7 = a4[3]; - a4[3] = v7 & 0xFFFFBDB5 | 0x208; - result = std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - a4[3] = v7; - return result; -} - -//----- (004B6490) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int a4, - unsigned __int16 a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (004B64B0) -------------------------------------------------------- -int *__thiscall std::num_put>::put( - void *this, - int *a2, - int a3, - std::__num_base *a4, - unsigned __int16 a5, - double a6) -{ - int *(__thiscall *v6)(void *, int *, int, std::__num_base *, unsigned __int16, double); // eax - - v6 = *(int *(__thiscall **)(void *, int *, int, std::__num_base *, unsigned __int16, double))(*(_DWORD *)this + 28); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); - else - return (int *)((int (__stdcall *)(int *, int, std::__num_base *, _DWORD, _DWORD, _DWORD))v6)( - a2, - a3, - a4, - a5, - LODWORD(a6), - HIDWORD(a6)); -} - -//----- (004B6520) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - unsigned __int16 a5, - long double a6) -{ - int (__thiscall *v6)(void *, int, int, int *, unsigned __int16, long double); // eax - - v6 = *(int (__thiscall **)(void *, int, int, int *, unsigned __int16, long double))(*(_DWORD *)this + 32); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_float( - this, - a2, - a3, - a4, - a5, - 76, - a6); - else - return ((int (__stdcall *)(int, int, int *, _DWORD, _DWORD, _DWORD, _DWORD))v6)( - a2, - a3, - a4, - a5, - LODWORD(a6), - DWORD1(a6), - HIDWORD(a6)); -} - -//----- (004B6590) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, int); // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, int))(*(_DWORD *)this + 12); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return v6(a2, a3, a4, a5, a6); -} - -//----- (004B65F0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, int); // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, int))(*(_DWORD *)this + 16); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return v6(a2, a3, a4, a5, a6); -} - -//----- (004B6650) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - __int64 a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, __int64); // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, __int64))(*(_DWORD *)this + 20); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return ((int (__stdcall *)(int, int, _DWORD *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); -} - -//----- (004B66C0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - int a6, - int a7) -{ - int (__stdcall *v7)(int, int, _DWORD *, unsigned __int16, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, int, int))(*(_DWORD *)this + 24); - if ( v7 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int( - a2, - a3, - a4, - a5, - a6, - a7); - else - return v7(a2, a3, a4, a5, a6, a7); -} - -//----- (004B6730) -------------------------------------------------------- -_WORD *__stdcall std::num_put>::_M_pad( - unsigned __int16 a1, - int a2, - _DWORD *a3, - _WORD *Size, - _WORD *a5, - int *a6) -{ - _WORD *result; // eax - - result = std::__pad>::_S_pad(a3, (void *)a1, Size, a5, a2, *a6); - *a6 = a2; - return result; -} - -//----- (004B6780) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - int a5) -{ - int v5; // edi - int result; // eax - - v5 = a3[3]; - a3[3] = v5 & 0xFFFFBDB5 | 0x208; - result = std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); - a3[3] = v5; - return result; -} - -//----- (004B6800) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - int a5) -{ - int v5; // edi - struct _Unwind_Exception *v7; // eax - int v8; // ecx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - void *v14; // esp - __int16 v15; // di - void *v16; // esp - __int16 *v17; // eax - int v18; // edi - int v19; // edi - int v20; // eax - char v21; // cl - int v22; // edi - int v23; // edi - int v24; // eax - char v25; // dl - int v26; // [esp+20h] [ebp-68h] BYREF - int *v27; // [esp+24h] [ebp-64h] - int v28; // [esp+28h] [ebp-60h] - int v29; // [esp+2Ch] [ebp-5Ch] - __int16 v30; // [esp+32h] [ebp-56h] - int v31; // [esp+34h] [ebp-54h] - int v32; // [esp+38h] [ebp-50h] - int v33; // [esp+3Ch] [ebp-4Ch] - - v5 = a3[3]; - v30 = a4; - v31 = v5; - if ( (v5 & 1) == 0 ) - return std::num_put>::_M_insert_int( - a1, - a2, - a3, - a4, - (unsigned __int8)a5); - v33 = a5; - v7 = std::__use_cache>::operator()(a3 + 27); - if ( (_BYTE)a5 ) - { - v8 = *((_DWORD *)v7 + 5); - v9 = *((_DWORD *)v7 + 6); - } - else - { - v8 = *((_DWORD *)v7 + 7); - v9 = *((_DWORD *)v7 + 8); - } - v29 = v8; - v32 = v9; - v10 = v9; - LOBYTE(v33) = a2; - v11 = a3[2]; - if ( v32 >= v11 ) - { - a3[2] = 0; - if ( !(_BYTE)a2 ) - LOBYTE(v33) = v32 != (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 48))(a1, v29, v32); - return a1; - } - v12 = v11 - v10; - v28 = v12; - v13 = 16 * ((unsigned int)(2 * v12 + 27) >> 4); - v14 = alloca(v13); - v15 = v30; - v16 = alloca(v13); - v17 = (__int16 *)&v26; - v27 = &v26; - do - { - *v17++ = v15; - --v12; - } - while ( v12 ); - a3[2] = 0; - if ( (v31 & 0xB0) == 32 ) - { - if ( !(_BYTE)a2 ) - { - v22 = v32; - if ( v22 == (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 48))(a1, v29, v32) ) - { - v23 = v28; - v24 = (*(int (__thiscall **)(int, int *, int))(*(_DWORD *)a1 + 48))(a1, v27, v28); - v25 = v33; - if ( v23 != v24 ) - v25 = 1; - LOBYTE(v33) = v25; - return a1; - } -LABEL_23: - LOBYTE(v33) = 1; - } - } - else if ( !(_BYTE)a2 ) - { - v18 = v28; - if ( v18 == (*(int (__thiscall **)(int, int *, int))(*(_DWORD *)a1 + 48))(a1, v27, v28) ) - { - v19 = v32; - v20 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 48))(a1, v29, v32); - v21 = v33; - if ( v19 != v20 ) - v21 = 1; - LOBYTE(v33) = v21; - return a1; - } - goto LABEL_23; - } - return a1; -} - -//----- (004B6A30) -------------------------------------------------------- -int *__thiscall std::num_put>::do_put( - void *this, - int *a2, - int a3, - std::__num_base *a4, - unsigned __int16 a5, - double a6) -{ - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); -} - -//----- (004B6A80) -------------------------------------------------------- -int __thiscall std::num_put>::do_put( - void *this, - int a2, - int a3, - int *a4, - unsigned __int16 a5, - long double a6) -{ - return std::num_put>::_M_insert_float( - this, - a2, - a3, - a4, - a5, - 76, - a6); -} - -//----- (004B6AD0) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - int a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (004B6AE0) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - int a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (004B6AF0) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - __int64 a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (004B6B00) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - int a5, - int a6) -{ - return std::num_put>::_M_insert_int( - a1, - a2, - a3, - a4, - a5, - a6); -} - -//----- (004B6B10) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - _DWORD *this, - int a2) -{ - _DWORD *v2; // esi - _DWORD *v3; // ebx - _DWORD *i; // edi - char v5; // al - _DWORD *v6; // edx - - v2 = this + 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v5 = std::operator<((int)(i + 4), a2); - v6 = (_DWORD *)i[3]; - if ( !v5 ) - v6 = (_DWORD *)i[2]; - if ( !v5 ) - v3 = i; - } - if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) - return v2; - return v3; -} - -//----- (004B6B70) -------------------------------------------------------- -const char *std::bad_cast::what() -{ - return "std::bad_cast"; -} - -//----- (004B6B80) -------------------------------------------------------- -int __fastcall std::ios_base::failure::what(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (004B6BA0) -------------------------------------------------------- -int __stdcall std::messages::_M_convert_to_char(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004B6BB0) -------------------------------------------------------- -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) -{ - *this = std::string::_S_construct(0, 0); - return this; -} - -//----- (004B6BE0) -------------------------------------------------------- -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) -{ - (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); - return this; -} - -//----- (004B6C20) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3) -{ - int (__stdcall *v3)(int, int); // eax - - v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v3 == std::messages::do_open ) - return 0; - else - return v3(a2, a3); -} - -//----- (004B6C40) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3, int a4) -{ - int (__stdcall *v4)(int, int); // edx - - v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v4 == std::messages::do_open ) - return 0; - else - return v4(a2, a3); -} - -//----- (004B6C80) -------------------------------------------------------- -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) -{ - int (__stdcall *result)(int); // eax - - result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); - if ( result != std::messages::do_close ) - return (int (__stdcall *)(int))result(a2); - return result; -} -// 4B6CD0: using guessed type int __stdcall std::messages::do_close(int); - -//----- (004B6CA0) -------------------------------------------------------- -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, std::string *a6) -{ - const std::string *v8; // [esp+4h] [ebp-18h] - - std::string::string(this, a6, v8); - return this; -} -// 4B6CAD: variable 'v8' is possibly undefined - -//----- (004B6CC0) -------------------------------------------------------- -int __stdcall std::messages::do_open(int a1, int a2) -{ - return 0; -} - -//----- (004B6CE0) -------------------------------------------------------- -int __stdcall std::messages::_M_convert_to_char(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004B6CF0) -------------------------------------------------------- -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) -{ - *this = std::wstring::_S_construct(0, 0); - return this; -} - -//----- (004B6D20) -------------------------------------------------------- -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) -{ - (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); - return this; -} - -//----- (004B6D60) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3) -{ - int (__stdcall *v3)(int, int); // eax - - v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v3 == std::messages::do_open ) - return 0; - else - return v3(a2, a3); -} - -//----- (004B6D80) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3, int a4) -{ - int (__stdcall *v4)(int, int); // edx - - v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v4 == std::messages::do_open ) - return 0; - else - return v4(a2, a3); -} - -//----- (004B6DC0) -------------------------------------------------------- -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) -{ - int (__stdcall *result)(int); // eax - - result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); - if ( result != std::messages::do_close ) - return (int (__stdcall *)(int))result(a2); - return result; -} -// 4B6E10: using guessed type int __stdcall std::messages::do_close(int); - -//----- (004B6DE0) -------------------------------------------------------- -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _DWORD *a6) -{ - std::wstring::basic_string(this, a6); - return this; -} - -//----- (004B6E00) -------------------------------------------------------- -int __stdcall std::messages::do_open(int a1, int a2) -{ - return 0; -} - -//----- (004B6E20) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 4B6E20: using guessed type int var_D[3]; - -//----- (004B6E50) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); - return this; -} -// 4B6E50: using guessed type int var_D[3]; - -//----- (004B6E80) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); - return this; -} -// 4B6E80: using guessed type int var_D[3]; - -//----- (004B6EB0) -------------------------------------------------------- -int __fastcall std::numpunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 36); - else - return v1(); -} - -//----- (004B6ED0) -------------------------------------------------------- -int __fastcall std::numpunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 37); - else - return v1(); -} - -//----- (004B6EF0) -------------------------------------------------------- -int __fastcall std::numpunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); -} - -//----- (004B6F00) -------------------------------------------------------- -int __fastcall std::numpunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); -} - -//----- (004B6F10) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::numpunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 4B6F10: using guessed type int var_D[3]; - -//----- (004B6F70) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::numpunct::do_truename ) - std::string::string(this, *(char **)(a2[2] + 20), (int)v5); - else - v3(a2); - return this; -} -// 4B6F70: using guessed type int var_D[3]; - -//----- (004B6FD0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::numpunct::do_falsename ) - std::string::string(this, *(char **)(a2[2] + 28), (int)v5); - else - v3(a2); - return this; -} -// 4B6FD0: using guessed type int var_D[3]; - -//----- (004B7030) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 4B7030: using guessed type int var_D[3]; - -//----- (004B7060) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); - return this; -} -// 4B7060: using guessed type int var_D[3]; - -//----- (004B7090) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); - return this; -} -// 4B7090: using guessed type int var_D[3]; - -//----- (004B70C0) -------------------------------------------------------- -int __fastcall std::numpunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 36); - else - return v1(); -} - -//----- (004B70E0) -------------------------------------------------------- -int __fastcall std::numpunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 38); - else - return v1(); -} - -//----- (004B7100) -------------------------------------------------------- -int __fastcall std::numpunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); -} - -//----- (004B7110) -------------------------------------------------------- -int __fastcall std::numpunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); -} - -//----- (004B7120) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::numpunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 4B7120: using guessed type int var_D[3]; - -//----- (004B7180) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::numpunct::do_truename ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 20), (int)v5); - else - v3(a2); - return this; -} -// 4B7180: using guessed type int var_D[3]; - -//----- (004B71E0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::numpunct::do_falsename ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 28), (int)v5); - else - v3(a2); - return this; -} -// 4B71E0: using guessed type int var_D[3]; - -//----- (004B7240) -------------------------------------------------------- -int __fastcall std::time_get>::date_order(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); - if ( v1 == std::time_get>::do_date_order ) - return 0; - else - return v1(); -} - -//----- (004B7260) -------------------------------------------------------- -int __stdcall std::time_get>::do_get_date( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - _DWORD *v6; // eax - int v7; // esi - unsigned __int64 v8; // rax - char v10; // [esp+28h] [ebp-24h] - char v11; // [esp+28h] [ebp-24h] - - v6 = std::use_facet>(a4 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - (char *)*(_DWORD *)(v6[2] + 8)); - v7 = v8; - BYTE4(v8) = HIDWORD(v8) == -1; - v10 = BYTE4(v8) & ((_DWORD)v8 != 0); - if ( v10 ) - { - BYTE4(v8) = 0; - if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) - { - LODWORD(v8) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v8 + 36))(v8); - BYTE4(v8) = 0; - if ( (_DWORD)v8 == -1 ) - BYTE4(v8) = v10; - if ( (_DWORD)v8 == -1 ) - v7 = 0; - } - } - LOBYTE(v8) = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - LOBYTE(v8) = 0; - if ( a2[2] >= a2[3] ) - { - v11 = BYTE4(v8); - LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - BYTE4(v8) = v11; - LOBYTE(v8) = (_DWORD)v8 == -1; - } - } - } - if ( BYTE4(v8) == (_BYTE)v8 ) - *a5 |= 2u; - return v7; -} - -//----- (004B7370) -------------------------------------------------------- -int __stdcall std::time_get>::do_get_time( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - _DWORD *v6; // eax - int v7; // esi - unsigned __int64 v8; // rax - char v10; // [esp+28h] [ebp-24h] - char v11; // [esp+28h] [ebp-24h] - - v6 = std::use_facet>(a4 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - (char *)*(_DWORD *)(v6[2] + 16)); - v7 = v8; - BYTE4(v8) = HIDWORD(v8) == -1; - v10 = BYTE4(v8) & ((_DWORD)v8 != 0); - if ( v10 ) - { - BYTE4(v8) = 0; - if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) - { - LODWORD(v8) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v8 + 36))(v8); - BYTE4(v8) = 0; - if ( (_DWORD)v8 == -1 ) - BYTE4(v8) = v10; - if ( (_DWORD)v8 == -1 ) - v7 = 0; - } - } - LOBYTE(v8) = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - LOBYTE(v8) = 0; - if ( a2[2] >= a2[3] ) - { - v11 = BYTE4(v8); - LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - BYTE4(v8) = v11; - LOBYTE(v8) = (_DWORD)v8 == -1; - } - } - } - if ( BYTE4(v8) == (_BYTE)v8 ) - *a5 |= 2u; - return v7; -} - -//----- (004B7480) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_year( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int a7) -{ - int v7; // edx - _DWORD *v8; // ebx - int v9; // eax - char v10; // si - char v11; // al - int v13; // eax - bool v14; // zf - _DWORD *v15; // eax - _DWORD *v16; // [esp+34h] [ebp-38h] - char v17; // [esp+38h] [ebp-34h] - int v18; // [esp+48h] [ebp-24h] BYREF - int v19[8]; // [esp+4Ch] [ebp-20h] BYREF - - v19[0] = 0; - v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v18, 0, 9999, 4u, a5, v19); - v16 = v8; - if ( v19[0] ) - { - *a6 |= 4u; - } - else - { - v9 = v18 - 1900; - if ( v18 < 0 ) - v9 = v18 + 100; - *(_DWORD *)(a7 + 20) = v9; - } - v10 = v7 == -1; - v17 = (v8 != 0) & v10; - if ( v17 ) - { - v10 = 0; - if ( v8[2] >= v8[3] ) - { - v13 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v14 = v13 == -1; - if ( v13 == -1 ) - v10 = v17; - v15 = 0; - if ( !v14 ) - v15 = v8; - v16 = v15; - } - } - v11 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v11 = 0; - if ( a3[2] >= a3[3] ) - v11 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - } - if ( v10 == v11 ) - *a6 |= 2u; - return v16; -} -// 4B7513: variable 'v7' is possibly undefined -// 4B7480: using guessed type int var_20[8]; - -//----- (004B75D0) -------------------------------------------------------- -int __fastcall std::time_get>::get_weekday(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); -} - -//----- (004B75E0) -------------------------------------------------------- -int std::time_get>::do_date_order() -{ - return 0; -} - -//----- (004B75F0) -------------------------------------------------------- -int __fastcall std::time_get>::get_monthname(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); -} - -//----- (004B7600) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_num( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int *a5, - signed int a6, - int a7, - unsigned int a8, - int a9, - _DWORD *a10) -{ - unsigned int v10; // ebp - int v12; // eax - int v13; // edi - char v14; // al - unsigned __int8 v15; // al - unsigned int v16; // eax - bool v17; // dl - char v18; // bl - int v19; // ebx - char v20; // dl - int (__stdcall *v21)(unsigned __int8, int); // eax - int v23; // eax - char *v24; // eax - int v25; // eax - int v26; // eax - unsigned int v28; // [esp+20h] [ebp-2Ch] - _BYTE *v29; // [esp+24h] [ebp-28h] - bool v31; // [esp+2Fh] [ebp-1Dh] - - v10 = 10; - v29 = std::use_facet>(a9 + 108); - if ( a8 != 2 ) - { - v12 = 1; - if ( a8 == 4 ) - v12 = 1000; - v10 = v12; - } - v28 = 0; - v13 = 0; - while ( 1 ) - { - v17 = a2 == -1; - v18 = v17 && a1 != 0; - if ( v18 ) - { - if ( a1[2] >= a1[3] ) - { - v25 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v17 = a2 == -1; - if ( v25 != -1 ) - v18 = 0; - if ( v25 == -1 ) - a1 = 0; - } - else - { - v18 = 0; - } - } - else - { - v18 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v31 = v17; - v23 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v17 = v31; - if ( v23 == -1 ) - { - a3 = 0; - v18 ^= 1u; - } - } - } - else - { - v18 ^= a4 == -1; - } - if ( v28 >= a8 || !v18 ) - break; - if ( a1 && v17 ) - { - v24 = (char *)a1[2]; - if ( (unsigned int)v24 >= a1[3] ) - { - v26 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v26 == -1 ) - { - v20 = -1; - v19 = 255; - a1 = 0; - } - else - { - v19 = (unsigned __int8)v26; - v20 = v26; - } - } - else - { - v19 = (unsigned __int8)*v24; - v20 = *v24; - } - } - else - { - v19 = (unsigned __int8)a2; - v20 = a2; - } - v14 = v29[v19 + 285]; - if ( !v14 ) - { - v21 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v29 + 32); - if ( v21 != std::ctype::do_narrow ) - v20 = v21(v20, 42); - if ( v20 == 42 ) - goto LABEL_27; - v29[v19 + 285] = v20; - v14 = v20; - } - v15 = v14 - 48; - if ( v15 > 9u ) - goto LABEL_27; - v13 = (char)v15 + 10 * v13; - if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) - goto LABEL_27; - v16 = a1[2]; - v10 /= 0xAu; - if ( v16 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v16 + 1; - ++v28; - a2 = -1; - } - if ( v28 == a8 ) - { -LABEL_30: - *a5 = v13; - return a1; - } -LABEL_27: - if ( a8 == 4 && v28 == 2 ) - { - v13 -= 100; - goto LABEL_30; - } - *a10 |= 4u; - return a1; -} - -//----- (004B78C0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_weekday( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int a6) -{ - _DWORD *v6; // eax - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // ecx - _DWORD *v11; // ebp - char v12; // dl - char v13; // al - int v15; // eax - int v16; // eax - char v17; // [esp+34h] [ebp-68h] - char v18; // [esp+34h] [ebp-68h] - _DWORD *v19; // [esp+38h] [ebp-64h] - unsigned int v20; // [esp+40h] [ebp-5Ch] BYREF - int v21; // [esp+44h] [ebp-58h] BYREF - int v22[21]; // [esp+48h] [ebp-54h] BYREF - - v21 = 0; - v6 = (_DWORD *)*((_DWORD *)std::use_facet>(a4 + 108) + 2); - v22[0] = v6[18]; - v22[1] = v6[19]; - v22[2] = v6[20]; - v22[3] = v6[21]; - v22[4] = v6[22]; - v22[5] = v6[23]; - v22[6] = v6[24]; - v22[7] = v6[11]; - v22[8] = v6[12]; - v22[9] = v6[13]; - v22[10] = v6[14]; - v22[11] = v6[15]; - v7 = v6[16]; - v8 = v6[17]; - v22[12] = v7; - v22[13] = v8; - v10 = (_DWORD *)std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - &v20, - (int)v22, - 7u, - a4, - &v21); - v11 = v10; - if ( v21 ) - *a5 |= 4u; - else - *(_DWORD *)(a6 + 24) = v20; - v12 = v9 == -1; - v17 = v12 & (v10 != 0); - if ( v17 ) - { - v12 = 0; - if ( v10[2] >= v10[3] ) - { - v11 = 0; - v19 = v10; - v16 = (*(int (**)(void))(*v10 + 36))(); - v12 = 0; - if ( v16 != -1 ) - v11 = v19; - if ( v16 == -1 ) - v12 = v17; - } - } - v13 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v13 = 0; - if ( a2[2] >= a2[3] ) - { - v18 = v12; - v15 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v12 = v18; - v13 = v15 == -1; - } - } - } - if ( v12 == v13 ) - *a5 |= 2u; - return v11; -} -// 4B79CF: variable 'v9' is possibly undefined - -//----- (004B7A80) -------------------------------------------------------- -unsigned __int64 __stdcall std::time_get>::_M_extract_name( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int **a4, - int a5, - int a6, - int a7, - _DWORD *a8) -{ - _DWORD *v8; // edi - int v9; // ebx - _DWORD *v10; // edx - int v11; // eax - void *v12; // esp - void *v13; // esp - char v14; // bl - int v16; // edi - unsigned int v17; // ebx - int *v18; // esi - int v19; // edx - int v20; // eax - char v21; // al - int v22; // ecx - int *v23; // esi - int *v24; // edx - int v25; // esi - size_t v26; // eax - unsigned int v27; // ebx - unsigned int i; // esi - size_t v29; // eax - int v30; // esi - unsigned int v31; // edi - unsigned int v32; // eax - char v33; // di - unsigned int j; // edi - char v35; // si - _BYTE *v36; // eax - int v37; // eax - const char *v38; // edi - unsigned int v39; // ebx - size_t v40; // eax - unsigned int v41; // esi - int *v42; // edi - char v43; // bl - int v44; // ecx - char v45; // bl - int v46; // eax - _BYTE *v47; // eax - char v48; // dl - int v49; // eax - int v50; // eax - int v51; // eax - int v52; // eax - int v53; // eax - int v54; // eax - int v55; // eax - bool v56; // zf - _DWORD *v57; // eax - int v58; // eax - int v59; // eax - int v60; // eax - int v61; // eax - bool v62; // zf - _DWORD *v63; // eax - int v64; // eax - int v65; // eax - int v66; // [esp+10h] [ebp-38h] BYREF - _DWORD *v67; // [esp+18h] [ebp-30h] - int *v68; // [esp+1Ch] [ebp-2Ch] - int *v69; // [esp+20h] [ebp-28h] - _DWORD *v70; // [esp+24h] [ebp-24h] - int *v71; // [esp+28h] [ebp-20h] - unsigned int v72; // [esp+2Ch] [ebp-1Ch] - - v8 = a2; - v9 = a3; - v67 = a2; - v10 = std::use_facet>(a7 + 108); - v11 = 16 * ((unsigned int)(4 * a6 + 27) >> 4); - v12 = alloca(v11); - v13 = alloca(v11); - LOBYTE(v72) = HIDWORD(a1) == -1; - LOBYTE(v71) = v72 & ((_DWORD)a1 != 0); - if ( (_BYTE)v71 ) - { - LOBYTE(v72) = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v53 = *(_DWORD *)a1; - v70 = v10; - v54 = (*(int (**)(void))(v53 + 36))(); - v10 = v70; - if ( v54 == -1 ) - { - LODWORD(a1) = 0; - LOBYTE(v72) = (_BYTE)v71; - } - } - } - LOBYTE(v70) = v9 == -1; - v14 = (unsigned __int8)v70 & (v8 != 0); - if ( v14 ) - { - if ( v8[2] >= v8[3] ) - { - v60 = *v8; - v71 = v10; - v61 = (*(int (__fastcall **)(_DWORD *))(v60 + 36))(v8); - v10 = v71; - v62 = v61 == -1; - if ( v61 != -1 ) - v14 = 0; - v63 = 0; - if ( !v62 ) - v63 = v8; - v67 = v63; - } - else - { - v14 = 0; - } - } - else - { - v14 = (char)v70; - } - if ( v14 == (_BYTE)v72 ) - goto LABEL_5; - v69 = v10; - LOBYTE(v72) = std::istreambuf_iterator::_M_get((int)&a1); - if ( !a6 ) - goto LABEL_5; - v71 = &v66; - v16 = 0; - v17 = 0; - v18 = v69; - v19 = a5; - do - { - while ( 1 ) - { - v22 = **(char **)(v19 + 4 * v16); - if ( (_BYTE)v22 == (_BYTE)v72 ) - break; - v20 = *v18; - a5 = v19; - v21 = (*(int (__thiscall **)(int *, int))(v20 + 8))(v18, v22); - v19 = a5; - if ( (_BYTE)v72 == v21 ) - break; - if ( a6 == ++v16 ) - goto LABEL_13; - } - v71[v17++] = v16++; - } - while ( a6 != v16 ); -LABEL_13: - v72 = 0; - v23 = v71; - if ( v17 <= 1 ) - goto LABEL_35; - v24 = v71; - do - { - v25 = *v24; - v68 = v24; - v26 = strlen(*(const char **)(a5 + 4 * v25)); - v71 = (int *)v17; - v69 = (int *)v25; - v27 = v26; - for ( i = 1; i < (unsigned int)v71; ++i ) - { - v29 = strlen(*(const char **)(a5 + 4 * v68[i])); - if ( v27 > v29 ) - v27 = v29; - } - v24 = v68; - v30 = (int)v69; - v31 = v27; - v17 = (unsigned int)v71; - v32 = *(_DWORD *)(a1 + 8); - if ( v32 >= *(_DWORD *)(a1 + 12) ) - { - v52 = *(_DWORD *)a1; - v71 = v68; - (*(void (__fastcall **)(_DWORD))(v52 + 40))(a1); - v24 = v71; - } - else - { - *(_DWORD *)(a1 + 8) = v32 + 1; - } - ++v72; - HIDWORD(a1) = -1; - if ( v72 >= v31 ) - goto LABEL_5; - LOBYTE(v71) = 1; - if ( (_DWORD)a1 ) - { - LOBYTE(v71) = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v58 = *(_DWORD *)a1; - v69 = v24; - v59 = (*(int (**)(void))(v58 + 36))(); - v24 = v69; - if ( v59 == -1 ) - { - LODWORD(a1) = 0; - LOBYTE(v71) = 1; - } - } - } - v33 = (unsigned __int8)v70 & (v67 != 0); - if ( v33 ) - { - if ( v67[2] >= v67[3] ) - { - v69 = v24; - v55 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); - v24 = v69; - v56 = v55 == -1; - if ( v55 != -1 ) - v33 = 0; - v57 = 0; - if ( !v56 ) - v57 = v67; - v67 = v57; - } - else - { - v33 = 0; - } - } - else - { - v33 = (char)v70; - } - if ( (_BYTE)v71 == v33 ) - goto LABEL_5; - for ( j = 0; ; v30 = v24[j] ) - { - v35 = *(_BYTE *)(*(_DWORD *)(a5 + 4 * v30) + v72); - LOBYTE(v36) = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v36 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v36 >= *(_DWORD *)(a1 + 12) ) - { - v51 = *(_DWORD *)a1; - v71 = v24; - v36 = (_BYTE *)(*(int (**)(void))(v51 + 36))(); - v24 = v71; - if ( v36 == (_BYTE *)-1 ) - LODWORD(a1) = 0; - } - else - { - LOBYTE(v36) = *v36; - } - } - if ( v35 == (_BYTE)v36 ) - break; - v24[j] = v24[--v17]; - if ( v17 <= j ) - goto LABEL_33; -LABEL_29: - ; - } - if ( v17 > ++j ) - goto LABEL_29; -LABEL_33: - ; - } - while ( v17 > 1 ); - v23 = v24; -LABEL_35: - if ( v17 == 1 ) - { - std::streambuf::sbumpc((_DWORD *)a1); - v37 = *v23; - HIDWORD(a1) = -1; - v38 = *(const char **)(a5 + 4 * v37); - v69 = (int *)v37; - v39 = v72 + 1; - v40 = strlen(v38); - v71 = (int *)v40; - if ( v72 + 1 < v40 ) - { - v72 = (unsigned int)v38; - v41 = v39; - v42 = v67; - while ( 1 ) - { - v48 = 1; - if ( (_DWORD)a1 ) - { - v48 = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v49 = *(_DWORD *)a1; - LOBYTE(v68) = 0; - v50 = (*(int (**)(void))(v49 + 36))(); - v48 = (char)v68; - if ( v50 == -1 ) - { - LODWORD(a1) = 0; - v48 = 1; - } - } - } - v43 = (unsigned __int8)v70 & (v42 != 0); - if ( v43 ) - { - if ( v42[2] >= (unsigned int)v42[3] ) - { - v64 = *v42; - LOBYTE(v68) = v48; - v65 = (*(int (__fastcall **)(int *))(v64 + 36))(v42); - v48 = (char)v68; - if ( v65 != -1 ) - v43 = 0; - if ( v65 == -1 ) - v42 = 0; - } - else - { - v43 = 0; - } - } - else - { - v43 = (char)v70; - } - if ( v43 == v48 ) - goto LABEL_5; - v44 = a1; - v45 = *(_BYTE *)(v72 + v41); - LOBYTE(v46) = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v47 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v47 < *(_DWORD *)(a1 + 12) ) - { - if ( v45 != *v47 ) - goto LABEL_5; - goto LABEL_44; - } - v46 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); - if ( v46 == -1 ) - LODWORD(a1) = 0; - } - if ( v45 != (_BYTE)v46 ) - goto LABEL_5; - v44 = a1; - v47 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - goto LABEL_45; - } -LABEL_44: - *(_DWORD *)(v44 + 8) = v47 + 1; -LABEL_45: - HIDWORD(a1) = -1; - if ( (int *)++v41 == v71 ) - goto LABEL_81; - } - } - if ( v39 == v40 ) - { -LABEL_81: - *a4 = v69; - return a1; - } - } -LABEL_5: - *a8 |= 4u; - return a1; -} - -//----- (004B7F50) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_monthname( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int a6) -{ - _DWORD *v6; // eax - int v7; // edx - int v8; // edx - int v9; // edx - _DWORD *v10; // ecx - _DWORD *v11; // ebp - char v12; // dl - char v13; // al - int v15; // eax - int v16; // eax - char v17; // [esp+34h] [ebp-98h] - char v18; // [esp+34h] [ebp-98h] - _DWORD *v19; // [esp+38h] [ebp-94h] - unsigned int v20; // [esp+48h] [ebp-84h] BYREF - int v21; // [esp+4Ch] [ebp-80h] BYREF - int v22[31]; // [esp+50h] [ebp-7Ch] BYREF - - v6 = (_DWORD *)*((_DWORD *)std::use_facet>(a4 + 108) + 2); - v22[0] = v6[37]; - v22[1] = v6[38]; - v22[2] = v6[39]; - v22[3] = v6[40]; - v22[4] = v6[41]; - v22[5] = v6[42]; - v22[6] = v6[43]; - v22[7] = v6[44]; - v22[8] = v6[45]; - v22[9] = v6[46]; - v22[10] = v6[47]; - v22[11] = v6[48]; - v22[12] = v6[25]; - v22[13] = v6[26]; - v22[14] = v6[27]; - v22[15] = v6[28]; - v7 = v6[29]; - v21 = 0; - v22[16] = v7; - v22[17] = v6[30]; - v22[18] = v6[31]; - v22[19] = v6[32]; - v22[20] = v6[33]; - v22[21] = v6[34]; - v8 = v6[35]; - v22[23] = v6[36]; - v22[22] = v8; - v10 = (_DWORD *)std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - &v20, - (int)v22, - 0xCu, - a4, - &v21); - v11 = v10; - if ( v21 ) - *a5 |= 4u; - else - *(_DWORD *)(a6 + 16) = v20; - v12 = v9 == -1; - v17 = v12 & (v10 != 0); - if ( v17 ) - { - v12 = 0; - if ( v10[2] >= v10[3] ) - { - v11 = 0; - v19 = v10; - v16 = (*(int (**)(void))(*v10 + 36))(); - v12 = 0; - if ( v16 != -1 ) - v11 = v19; - if ( v16 == -1 ) - v12 = v17; - } - } - v13 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v13 = 0; - if ( a2[2] >= a2[3] ) - { - v18 = v12; - v15 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v12 = v18; - v13 = v15 == -1; - } - } - } - if ( v12 == v13 ) - *a5 |= 2u; - return v11; -} -// 4B80FC: variable 'v9' is possibly undefined - -//----- (004B81B0) -------------------------------------------------------- -unsigned __int64 __stdcall std::time_get>::_M_extract_via_format( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char *a7) -{ - char *v7; // ebx - _DWORD *v8; // eax - size_t v9; // ebx - _BYTE *v10; // esi - size_t v11; // eax - _DWORD *v12; // ecx - int v13; // eax - char v14; // dl - char v15; // di - size_t v16; // edi - char *v17; // ebp - int v18; // edx - char v19; // al - char v20; // cl - int (__stdcall *v21)(unsigned __int8, int); // eax - _BYTE *v22; // eax - char v23; // bl - int v24; // eax - int v25; // ebp - char v26; // al - char v27; // dl - int (__stdcall *v28)(unsigned __int8, int); // eax - char v29; // al - int v31; // eax - int v32; // ebx - char v33; // dl - int (__stdcall *v34)(unsigned __int8, int); // eax - unsigned __int64 v35; // rax - int *v36; // eax - _DWORD *v37; // eax - int v38; // eax - unsigned __int64 v39; // rax - _DWORD *v40; // eax - char v41; // al - char *v42; // eax - unsigned __int64 v43; // rax - _DWORD *v44; // eax - int v45; // eax - unsigned __int64 v46; // rax - unsigned __int64 v47; // rax - unsigned __int64 v48; // rax - unsigned __int64 v49; // rax - unsigned __int64 v50; // rax - char v51; // al - char v52; // bp - char v53; // al - char v54; // bp - char v55; // al - unsigned __int64 v56; // rax - unsigned __int64 v57; // rax - _DWORD *v58; // eax - int (__stdcall *v59)(unsigned __int8); // edx - char *v60; // ecx - int (__stdcall *v61)(unsigned __int8); // edx - char *v62; // edx - char *Stra; // [esp+0h] [ebp-9Ch] - char *Str; // [esp+0h] [ebp-9Ch] - size_t v65; // [esp+30h] [ebp-6Ch] - _DWORD *v66; // [esp+38h] [ebp-64h] - char v67; // [esp+3Ch] [ebp-60h] - int v68; // [esp+3Ch] [ebp-60h] - int v69; // [esp+48h] [ebp-54h] BYREF - int *v70; // [esp+4Ch] [ebp-50h] BYREF - unsigned int v71; // [esp+50h] [ebp-4Ch] BYREF - int v72; // [esp+54h] [ebp-48h] - int v73; // [esp+58h] [ebp-44h] - int v74; // [esp+5Ch] [ebp-40h] - int v75; // [esp+60h] [ebp-3Ch] - int v76; // [esp+64h] [ebp-38h] - int v77; // [esp+68h] [ebp-34h] - int v78; // [esp+6Ch] [ebp-30h] - int v79; // [esp+70h] [ebp-2Ch] - int v80; // [esp+74h] [ebp-28h] - int v81; // [esp+78h] [ebp-24h] - int v82; // [esp+7Ch] [ebp-20h] - - v7 = (char *)(a4 + 108); - v8 = std::use_facet>(a4 + 108); - Stra = v7; - v9 = 0; - v66 = v8; - v10 = std::use_facet>((int)Stra); - v11 = strlen(a7); - v69 = 0; - v12 = (_DWORD *)a1; - v65 = v11; - v13 = HIDWORD(a1); - while ( 1 ) - { - v14 = v13 == -1; - v15 = v14 & (v12 != 0); - if ( v15 ) - { - v14 = 0; - if ( v12[2] >= v12[3] ) - { - v31 = (*(int (__thiscall **)(_DWORD *, char *))(*v12 + 36))(v12, Str); - v14 = 0; - if ( v31 == -1 ) - { - LODWORD(a1) = 0; - v14 = v15; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v67 = v14; - v24 = (*(int (**)(void))(*a2 + 36))(); - v14 = v67; - if ( v24 == -1 ) - { - a2 = 0; - v14 = v67 ^ 1; - } - } - } - else - { - v14 ^= a3 == -1; - } - if ( v9 >= v65 || !v14 ) - break; - if ( v69 ) - goto LABEL_32; - v16 = v9 + 1; - v17 = &a7[v9]; - v18 = (unsigned __int8)a7[v9]; - v19 = v10[v18 + 285]; - v20 = a7[v9]; - if ( v19 ) - { -LABEL_14: - if ( v19 != 37 ) - goto LABEL_15; - v25 = (unsigned __int8)a7[v16]; - v26 = v10[v25 + 285]; - v27 = a7[v16]; - if ( !v26 ) - { - v28 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v28 != std::ctype::do_narrow ) - v27 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v28)(v10, v27, 0); - if ( !v27 ) - { -LABEL_43: - v69 |= 4u; - v13 = HIDWORD(a1); - goto LABEL_44; - } - v10[v25 + 285] = v27; - v26 = v27; - } - v70 = 0; - if ( (v26 == 69 || v26 == 79) - && (v16 = v9 + 2, v32 = (unsigned __int8)a7[v9 + 2], v26 = v10[v32 + 285], v33 = v32, !v26) ) - { - v34 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v34 != std::ctype::do_narrow ) - v33 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v34)(v10, (char)v32, 0); - if ( !v33 ) - goto LABEL_43; - v10[v32 + 285] = v33; - v29 = v33 - 65; - if ( (unsigned __int8)(v33 - 65) > 0x38u ) - goto LABEL_43; - } - else - { - v29 = v26 - 65; - } - switch ( v29 ) - { - case 0: - v44 = (_DWORD *)v66[2]; - v71 = v44[11]; - v72 = v44[12]; - v73 = v44[13]; - v74 = v44[14]; - v75 = v44[15]; - v76 = v44[16]; - v45 = v44[17]; - goto LABEL_63; - case 1: - v40 = (_DWORD *)v66[2]; - v71 = v40[25]; - v72 = v40[26]; - v73 = v40[27]; - v74 = v40[28]; - v75 = v40[29]; - v76 = v40[30]; - v77 = v40[31]; - v78 = v40[32]; - v79 = v40[33]; - v80 = v40[34]; - v81 = v40[35]; - v38 = v40[36]; - goto LABEL_52; - case 2: - case 24: - case 56: - LODWORD(v35) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 0, - 9999, - 4u, - a4, - &v69); - a1 = v35; - if ( v69 ) - goto LABEL_55; - v36 = v70 - 475; - if ( (int)v70 < 0 ) - v36 = v70 + 25; - a6[5] = v36; - v13 = HIDWORD(a1); - break; - case 3: - std::ctype::widen(v10, "%m/%d/%y", "%H:%M", &v71); - LODWORD(v43) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v69, - (int)a6, - (char *)&v71); - goto LABEL_61; - case 7: - LODWORD(v46) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 0, - 23, - 2u, - a4, - &v69); - goto LABEL_67; - case 8: - LODWORD(v46) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 1, - 12, - 2u, - a4, - &v69); -LABEL_67: - a1 = v46; - if ( v69 ) - goto LABEL_55; - a6[2] = v70; - v13 = HIDWORD(a1); - break; - case 12: - LODWORD(v47) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 0, - 59, - 2u, - a4, - &v69); - a1 = v47; - if ( v69 ) - goto LABEL_55; - a6[1] = v70; - v13 = HIDWORD(a1); - break; - case 17: - std::ctype::widen(v10, "%H:%M", "%H:%M:%S", &v71); - LODWORD(v43) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v69, - (int)a6, - (char *)&v71); - goto LABEL_61; - case 18: - LODWORD(v39) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 0, - 60, - 2u, - a4, - &v69); - a1 = v39; - if ( v69 ) - goto LABEL_55; - *a6 = v70; - v13 = HIDWORD(a1); - break; - case 19: - std::ctype::widen(v10, "%H:%M:%S", byte_557ACA, &v71); - LODWORD(v43) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v69, - (int)a6, - (char *)&v71); - goto LABEL_61; - case 23: - v42 = *(char **)(v66[2] + 16); - goto LABEL_60; - case 25: - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 1) == 0 ) - goto LABEL_43; - a1 = std::time_get>::_M_extract_name( - a1, - a2, - a3, - (int **)&v71, - (int)std::__timepunct_cache::_S_timezones, - 14, - a4, - &v69); - if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) && !(v71 | v69) ) - { - v52 = std::istreambuf_iterator::_M_get((int)&a1); - if ( v10[28] ) - { - v53 = v10[74]; - } - else - { - std::ctype::_M_widen_init((int)v10); - v59 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); - v53 = 45; - if ( v59 != std::ctype::do_widen ) - { - v53 = ((int (__thiscall *)(_BYTE *, int))v59)(v10, 45); - Str = v60; - } - } - if ( v52 == v53 ) - goto LABEL_94; - v54 = std::istreambuf_iterator::_M_get((int)&a1); - if ( v10[28] ) - { - v55 = v10[72]; - } - else - { - std::ctype::_M_widen_init((int)v10); - v61 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); - v55 = 43; - if ( v61 != std::ctype::do_widen ) - { - v55 = ((int (__thiscall *)(_BYTE *, int))v61)(v10, 43); - Str = v62; - } - } - if ( v54 == v55 ) - { -LABEL_94: - LODWORD(v56) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v71, - 0, - 23, - 2u, - a4, - &v69); - a1 = v56; - LODWORD(v57) = std::time_get>::_M_extract_num( - (_DWORD *)v56, - SHIDWORD(v56), - a2, - a3, - (int *)&v71, - 0, - 59, - 2u, - a4, - &v69); - a1 = v57; - } - } - goto LABEL_55; - case 32: - v58 = (_DWORD *)v66[2]; - v71 = v58[18]; - v72 = v58[19]; - v73 = v58[20]; - v74 = v58[21]; - v75 = v58[22]; - v76 = v58[23]; - v45 = v58[24]; -LABEL_63: - v77 = v45; - a1 = std::time_get>::_M_extract_name( - a1, - a2, - a3, - &v70, - (int)&v71, - 7, - a4, - &v69); - if ( v69 ) - goto LABEL_55; - a6[6] = v70; - v13 = HIDWORD(a1); - break; - case 33: - case 39: - v37 = (_DWORD *)v66[2]; - v71 = v37[37]; - v72 = v37[38]; - v73 = v37[39]; - v74 = v37[40]; - v75 = v37[41]; - v76 = v37[42]; - v77 = v37[43]; - v78 = v37[44]; - v79 = v37[45]; - v80 = v37[46]; - v81 = v37[47]; - v38 = v37[48]; -LABEL_52: - v82 = v38; - a1 = std::time_get>::_M_extract_name( - a1, - a2, - a3, - &v70, - (int)&v71, - 12, - a4, - &v69); - if ( v69 ) - goto LABEL_55; - a6[4] = v70; - v13 = HIDWORD(a1); - break; - case 34: - v42 = *(char **)(v66[2] + 24); - goto LABEL_60; - case 35: - LODWORD(v48) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 1, - 31, - 2u, - a4, - &v69); - a1 = v48; - if ( v69 ) - goto LABEL_55; - a6[3] = v70; - v13 = HIDWORD(a1); - break; - case 36: - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 0x20) != 0 ) - { - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - LODWORD(v49) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - -1, - a2, - a3, - (int *)&v70, - 1, - 9, - 1u, - a4, - &v69); - } - else - { - LODWORD(v49) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 10, - 31, - 2u, - a4, - &v69); - } - a1 = v49; - v13 = HIDWORD(v49); - if ( !v69 ) - a6[3] = v70; - break; - case 44: - LODWORD(v50) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 1, - 12, - 2u, - a4, - &v69); - a1 = v50; - if ( v69 ) - { -LABEL_55: - v13 = HIDWORD(a1); - } - else - { - a6[4] = (char *)v70 - 1; - v13 = HIDWORD(a1); - } - break; - case 45: - v51 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (unsigned __int8)std::ctype::narrow(v10, v51, 0) != 10 ) - goto LABEL_43; - goto LABEL_58; - case 51: - v41 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (unsigned __int8)std::ctype::narrow(v10, v41, 0) != 9 ) - goto LABEL_43; -LABEL_58: - std::streambuf::sbumpc((_DWORD *)a1); - v13 = -1; - HIDWORD(a1) = -1; - break; - case 55: - v42 = *(char **)(v66[2] + 8); -LABEL_60: - LODWORD(v43) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v69, - (int)a6, - v42); -LABEL_61: - a1 = v43; - v13 = HIDWORD(v43); - break; - default: - goto LABEL_43; - } -LABEL_44: - v12 = (_DWORD *)a1; - v9 = v16 + 1; - } - else - { - v21 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v21 != std::ctype::do_narrow ) - { - v68 = (unsigned __int8)a7[v9]; - v20 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v21)(v10, (char)v18, 0); - v18 = v68; - } - if ( v20 ) - { - v10[v18 + 285] = v20; - v19 = v20; - goto LABEL_14; - } -LABEL_15: - LOBYTE(v22) = BYTE4(a1); - v23 = *v17; - v12 = (_DWORD *)a1; - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ) - { - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 == (_BYTE *)-1 ) - { - LODWORD(a1) = 0; - v12 = 0; - LOBYTE(v22) = -1; - } - else - { - v12 = (_DWORD *)a1; - } - } - else - { - LOBYTE(v22) = *v22; - } - } - if ( v23 == (_BYTE)v22 ) - { - std::streambuf::sbumpc(v12); - v9 = v16; - v13 = -1; - HIDWORD(a1) = -1; - v12 = (_DWORD *)a1; - } - else - { - v69 |= 4u; - v13 = HIDWORD(a1); - v9 = v16; - } - } - } - if ( v69 || v9 != v65 ) -LABEL_32: - *a5 |= 4u; - return a1; -} -// 4B83C4: variable 'Str' is possibly undefined -// 4B8536: variable 'v35' is possibly undefined -// 4B86F7: variable 'v39' is possibly undefined -// 4B8837: variable 'v43' is possibly undefined -// 4B89B3: variable 'v46' is possibly undefined -// 4B8A81: variable 'v47' is possibly undefined -// 4B8B86: variable 'v48' is possibly undefined -// 4B8C47: variable 'v49' is possibly undefined -// 4B8CDA: variable 'v50' is possibly undefined -// 4B8EFB: variable 'v56' is possibly undefined -// 4B8F11: variable 'v57' is possibly undefined -// 4B9061: variable 'v60' is possibly undefined -// 4B908F: variable 'v62' is possibly undefined -// 53F660: using guessed type void *std::__timepunct_cache::_S_timezones[2]; -// 557ACA: using guessed type _BYTE byte_557ACA[2]; - -//----- (004B90A0) -------------------------------------------------------- -int __stdcall std::time_get>::_M_extract_wday_or_month( - unsigned __int64 a1, - _DWORD *a2, - int a3, - unsigned int *a4, - int a5, - unsigned int a6, - int a7, - _DWORD *a8) -{ - _DWORD *v8; // esi - int v9; // ebx - int v10; // eax - void *v11; // esp - void *v12; // esp - unsigned __int8 v13; // dl - char v14; // bl - int v15; // eax - unsigned int v16; // edi - unsigned int v17; // esi - int *v18; // ecx - char v19; // dl - char v20; // bl - char v21; // bl - _BYTE *v22; // eax - unsigned int v23; // edx - unsigned int *v24; // ecx - unsigned int v25; // eax - int v26; // eax - int v27; // eax - unsigned int v29; // eax - int v30; // ebx - int v31; // edx - int *v32; // esi - int v33; // eax - char v34; // al - int v35; // ecx - int v36; // eax - void *v37; // esp - int v38; // esi - void *v39; // esp - int v40; // ecx - int *v41; // edi - int *v42; // ebx - int v43; // eax - unsigned __int8 v44; // di - int v45; // eax - int v46; // eax - int v47; // eax - int v48; // eax - bool v49; // zf - _DWORD *v50; // eax - int v51; // eax - int v52; // eax - bool v53; // zf - _DWORD *v54; // eax - int v55; // [esp+10h] [ebp-38h] BYREF - int *v56; // [esp+14h] [ebp-34h] - _DWORD *v57; // [esp+18h] [ebp-30h] - bool v58; // [esp+1Eh] [ebp-2Ah] - char v59; // [esp+1Fh] [ebp-29h] - int *v60; // [esp+20h] [ebp-28h] - int *v61; // [esp+24h] [ebp-24h] - int *v62; // [esp+28h] [ebp-20h] - int *v63; // [esp+2Ch] [ebp-1Ch] - - v8 = a2; - v9 = a3; - v57 = a2; - v60 = (int *)std::use_facet>(a7 + 108); - v10 = 16 * ((8 * a6 + 27) >> 4); - v11 = alloca(v10); - v12 = alloca(v10); - v13 = HIDWORD(a1) == -1; - v62 = &v55; - if ( (v13 & ((_DWORD)a1 != 0)) != 0 ) - { - v44 = v13 & ((_DWORD)a1 != 0); - v13 = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v45 = *(_DWORD *)a1; - LOBYTE(v63) = 0; - v46 = (*(int (**)(void))(v45 + 36))(); - v13 = (unsigned __int8)v63; - if ( v46 == -1 ) - { - LODWORD(a1) = 0; - v13 = v44; - } - } - } - v58 = v9 == -1; - v14 = v58 && v8 != 0; - if ( v14 ) - { - if ( v8[2] >= v8[3] ) - { - v51 = *v8; - LOBYTE(v63) = v13; - v52 = (*(int (__fastcall **)(_DWORD *))(v51 + 36))(v8); - v13 = (unsigned __int8)v63; - v53 = v52 == -1; - if ( v52 != -1 ) - v14 = 0; - v54 = 0; - if ( !v53 ) - v54 = v8; - v57 = v54; - } - else - { - v14 = 0; - } - } - else - { - v14 = v58; - } - if ( v13 == v14 ) - { - v56 = 0; - v15 = HIDWORD(a1); - v16 = 0; - v17 = 0; - v18 = (int *)a1; - } - else - { - v30 = 0; - v16 = 0; - LOBYTE(v63) = std::istreambuf_iterator::_M_get((int)&a1); - v17 = 2 * a6; - if ( 2 * a6 ) - { - v61 = (int *)(2 * a6); - v31 = a5; - v32 = v60; - do - { - while ( 1 ) - { - v35 = **(char **)(v31 + 4 * v30); - if ( (_BYTE)v35 == (_BYTE)v63 ) - break; - v33 = *v32; - a5 = v31; - v34 = (*(int (__thiscall **)(int *, int))(v33 + 8))(v32, v35); - v31 = a5; - if ( (_BYTE)v63 == v34 ) - break; - if ( (int *)++v30 == v61 ) - goto LABEL_47; - } - v62[v16++] = v30++; - } - while ( (int *)v30 != v61 ); -LABEL_47: - v18 = (int *)a1; - if ( v16 ) - { - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v36 = 16 * ((4 * v16 + 27) >> 4); - v37 = alloca(v36); - v38 = a5; - v39 = alloca(v36); - v40 = (int)&v62[v16]; - v61 = (int *)v16; - v41 = v62; - v63 = (int *)v40; - v56 = &v55; - v42 = &v55; - do - { - v43 = *v41; - ++v42; - ++v41; - *(v42 - 1) = strlen(*(const char **)(v38 + 4 * v43)); - } - while ( v41 != v63 ); - v16 = (unsigned int)v61; - v18 = (int *)a1; - v15 = -1; - v17 = 1; - } - else - { - v56 = 0; - v15 = HIDWORD(a1); - v17 = 0; - } - } - else - { - v15 = HIDWORD(a1); - v18 = (int *)a1; - v56 = 0; - } - } - v19 = v15 == -1; - v20 = v19 & (v18 != 0); - if ( v20 ) - goto LABEL_23; -LABEL_7: - v21 = v58 && v57 != 0; - if ( !v21 ) - { - v21 = v58; - goto LABEL_9; - } - if ( v57[2] >= v57[3] ) - { - v47 = *v57; - LOBYTE(v63) = v19; - v48 = (*(int (__fastcall **)(_DWORD *))(v47 + 36))(v57); - v19 = (char)v63; - v49 = v48 == -1; - if ( v48 != -1 ) - v21 = 0; - v50 = 0; - if ( !v49 ) - v50 = v57; - v57 = v50; -LABEL_9: - if ( v21 == v19 ) - goto LABEL_29; -LABEL_10: - LOBYTE(v22) = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ) - { - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 == (_BYTE *)-1 ) - { - LODWORD(a1) = 0; - v59 = -1; - goto LABEL_12; - } - } - else - { - LOBYTE(v22) = *v22; - } - } - v59 = (char)v22; -LABEL_12: - if ( !v16 ) - goto LABEL_31; - v23 = 0; - v60 = 0; - v63 = v56; - while ( 1 ) - { - while ( 1 ) - { - v24 = (unsigned int *)&v63[v23]; - if ( *v24 > v17 ) - break; - v60 = (int *)((char *)v60 + 1); - ++v23; -LABEL_15: - if ( v16 <= v23 ) - goto LABEL_19; - } - v61 = &v62[v23]; - if ( *(_BYTE *)(*(_DWORD *)(a5 + 4 * *v61) + v17) == v59 ) - { - ++v23; - goto LABEL_15; - } - *v61 = v62[--v16]; - *v24 = v63[v16]; - if ( v16 <= v23 ) - { -LABEL_19: - if ( v60 == (int *)v16 ) - goto LABEL_29; - v18 = (int *)a1; - v25 = *(_DWORD *)(a1 + 8); - if ( v25 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v18 = (int *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v25 + 1; - } - ++v17; - HIDWORD(a1) = -1; - v19 = 1; - v20 = v18 != 0; - if ( v18 ) - { -LABEL_23: - v19 = 0; - if ( v18[2] >= (unsigned int)v18[3] ) - { - v26 = *v18; - LOBYTE(v63) = 0; - v27 = (*(int (__fastcall **)(int *))(v26 + 36))(v18); - v19 = (char)v63; - if ( v27 == -1 ) - { - LODWORD(a1) = 0; - v19 = v20; - } - } - } - goto LABEL_7; - } - } - } - if ( v19 ) - goto LABEL_10; -LABEL_29: - if ( v16 == 1 ) - { - if ( *v56 != v17 ) - { -LABEL_31: - *a8 |= 4u; - return a1; - } - } - else if ( v16 != 2 || *v56 != v17 && v56[1] != v17 ) - { - goto LABEL_31; - } - v29 = *v62; - if ( *v62 >= a6 ) - v29 = *v62 - a6; - *a4 = v29; - return a1; -} - -//----- (004B94D0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::get( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - unsigned __int8 *a8, - unsigned __int8 *a9) -{ - unsigned __int8 *v9; // edi - _DWORD *v11; // ebp - int v12; // edx - char v13; // dl - char v14; // bl - char v15; // dl - char v16; // bl - unsigned int v17; // eax - char v18; // dl - char v19; // bl - char v20; // bl - char v21; // dl - int (__stdcall *v22)(unsigned __int8, int); // eax - unsigned __int8 v23; // dl - int (__stdcall *v24)(unsigned __int8, int); // eax - int v25; // edi - int (__stdcall *v26)(unsigned __int8, int); // eax - _BYTE *v27; // eax - char v28; // dl - _BYTE *v29; // edi - char v30; // bl - unsigned __int64 v31; // rax - char v32; // al - unsigned __int8 *i; // edi - int j; // ebp - bool v36; // al - bool v37; // di - char v38; // dl - char v39; // bl - int v40; // eax - unsigned __int8 *v41; // eax - int (__stdcall *v42)(unsigned __int8); // eax - char *v43; // eax - int v44; // eax - int v45; // eax - bool v46; // zf - _DWORD *v47; // eax - char *v48; // eax - int v49; // eax - int v50; // eax - bool v51; // zf - _DWORD *v52; // eax - int v53; // eax - int v54; // eax - bool v55; // [esp+3Fh] [ebp-4Dh] - bool v57; // [esp+44h] [ebp-48h] - char v58; // [esp+44h] [ebp-48h] - _DWORD *v59; // [esp+44h] [ebp-48h] - char v60; // [esp+44h] [ebp-48h] - bool v62; // [esp+48h] [ebp-44h] - char v63; // [esp+48h] [ebp-44h] - int v64; // [esp+4Ch] [ebp-40h] - unsigned __int8 *v65; // [esp+4Ch] [ebp-40h] - char v66; // [esp+4Ch] [ebp-40h] - int v67; // [esp+50h] [ebp-3Ch] - unsigned __int8 v68; // [esp+50h] [ebp-3Ch] - char v69; // [esp+6Ch] [ebp-20h] BYREF - char v70; // [esp+6Dh] [ebp-1Fh] - char v71; // [esp+6Eh] [ebp-1Eh] - char v72; // [esp+6Fh] [ebp-1Dh] - unsigned __int8 *v73; // [esp+ACh] [ebp+20h] - - v9 = a8; - v11 = std::use_facet>(a5 + 108); - *a6 = 0; - if ( a8 == a9 ) - return a1; - v55 = a4 == -1; - while ( 1 ) - { - v57 = a2 == -1; - if ( !v57 || a1 == 0 ) - { - v18 = a2 == -1; - goto LABEL_19; - } - if ( a1[2] >= a1[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v18 = v57 && a1 != 0; - if ( v49 != -1 ) - v18 = 0; - if ( v49 == -1 ) - a1 = 0; -LABEL_19: - v19 = v55 && a3 != 0; - if ( !v19 ) - goto LABEL_20; - goto LABEL_85; - } - v18 = 0; - v19 = v55 && a3 != 0; - if ( !v19 ) - { -LABEL_20: - v19 = a4 == -1; - goto LABEL_21; - } -LABEL_85: - if ( a3[2] >= a3[3] ) - { - v66 = v18; - v50 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v18 = v66; - v51 = v50 == -1; - if ( v50 != -1 ) - v19 = 0; - v52 = 0; - if ( !v51 ) - v52 = a3; - a3 = v52; -LABEL_21: - if ( v18 == v19 ) - goto LABEL_87; - goto LABEL_22; - } - if ( !v18 ) - { -LABEL_87: - *a6 = 6; - return a1; - } -LABEL_22: - v20 = *((_BYTE *)v11 + *v9 + 285); - v64 = *v9; - v21 = *v9; - if ( !v20 ) - { - v22 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); - if ( v22 != std::ctype::do_narrow ) - v21 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v22)(v11, v21, 0); - if ( !v21 ) - goto LABEL_3; - v20 = v21; - *((_BYTE *)v11 + v64 + 285) = v21; - } - if ( v20 == 37 ) - { - v65 = v9 + 1; - if ( a9 == v9 + 1 ) - break; - v67 = v9[1]; - v23 = v9[1]; - v58 = *((_BYTE *)v11 + v67 + 285); - if ( !v58 ) - { - v24 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); - if ( v24 != std::ctype::do_narrow ) - v23 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v24)(v11, (char)v67, 0); - if ( !v23 ) - goto LABEL_89; - v58 = v23; - *((_BYTE *)v11 + v67 + 285) = v23; - } - if ( v58 == 69 || v58 == 79 ) - { - v65 = v9 + 2; - if ( a9 == v9 + 2 ) - break; - v25 = v9[2]; - v23 = v25; - if ( *((_BYTE *)v11 + v25 + 285) ) - { - v23 = *((_BYTE *)v11 + v25 + 285); - } - else - { - v26 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); - if ( v26 != std::ctype::do_narrow ) - v23 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v26)(v11, (char)v25, 0); - if ( v23 ) - *((_BYTE *)v11 + v25 + 285) = v23; - } -LABEL_42: - v68 = v23; - v27 = std::use_facet>(a5 + 108); - v28 = v68; - v29 = v27; - *a6 = 0; - if ( v27[28] ) - { - v20 = v27[66]; - } - else - { - std::ctype::_M_widen_init((int)v27); - v28 = v68; - v42 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v29 + 24); - if ( v42 != std::ctype::do_widen ) - { - v20 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v42)(v29, v68, 37); - v28 = v68; - } - } - v69 = v20; - if ( v58 ) - { - v71 = v28; - v72 = 0; - v70 = v58; - } - else - { - v70 = v28; - v71 = 0; - } - v31 = std::time_get>::_M_extract_via_format( - __PAIR64__(a2, (unsigned int)a1), - a3, - a4, - a5, - a6, - a7, - &v69); - a1 = (_DWORD *)v31; - v30 = HIDWORD(v31) == -1; - a2 = HIDWORD(v31); - BYTE4(v31) = v30 & ((_DWORD)v31 != 0); - if ( BYTE4(v31) ) - { - v30 = 0; - if ( *(_DWORD *)(v31 + 8) >= *(_DWORD *)(v31 + 12) ) - { - v60 = BYTE4(v31); - if ( (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v31 + 36))(v31) == -1 ) - { - v30 = v60; - a1 = 0; - } - } - } - if ( a3 && a4 == -1 ) - { - v32 = 0; - if ( a3[2] >= a3[3] ) - v32 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - else - { - v32 = a4 == -1; - } - if ( v30 == v32 ) - *a6 |= 2u; - v9 = v65 + 1; - if ( a9 == v65 + 1 ) - return a1; - goto LABEL_16; - } - v23 = v58; -LABEL_89: - v58 = 0; - goto LABEL_42; - } -LABEL_3: - v12 = v11[6]; - if ( (*(_BYTE *)(v12 + 2 * *v9) & 0x20) != 0 ) - { - for ( i = v9 + 1; a9 != i; ++i ) - { - if ( (*(_BYTE *)(v12 + 2 * *i) & 0x20) == 0 ) - break; - } - v73 = i; - v59 = v11; - for ( j = a2; ; j = -1 ) - { - v36 = j == -1; - v37 = v36; - if ( v36 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v62 = v36 && a1 != 0; - v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v38 = v62; - if ( v44 != -1 ) - v38 = 0; - if ( v44 == -1 ) - a1 = 0; - } - else - { - v38 = 0; - } - } - else - { - v38 = j == -1; - } - v39 = v55 && a3 != 0; - if ( !v39 ) - break; - if ( a3[2] >= a3[3] ) - { - v63 = v38; - v45 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v38 = v63; - v46 = v45 == -1; - if ( v45 != -1 ) - v39 = 0; - v47 = 0; - if ( !v46 ) - v47 = a3; - a3 = v47; -LABEL_63: - if ( v38 == v39 ) - goto LABEL_76; - goto LABEL_64; - } - if ( !v38 ) - { -LABEL_76: - a2 = j; - v9 = v73; - v11 = v59; - goto LABEL_15; - } -LABEL_64: - if ( a1 && v37 ) - { - v41 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v41 < a1[3] ) - { - if ( (*(_BYTE *)(v59[6] + 2 * *v41) & 0x20) == 0 ) - { - a2 = -1; - v9 = v73; - v11 = v59; - goto LABEL_15; - } -LABEL_69: - a1[2] = v41 + 1; - continue; - } - v40 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v40 == -1 ) - a1 = 0; - } - else - { - LOBYTE(v40) = j; - } - if ( (*(_BYTE *)(v59[6] + 2 * (unsigned __int8)v40) & 0x20) == 0 ) - goto LABEL_76; - v41 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v41 < a1[3] ) - goto LABEL_69; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - } - v39 = a4 == -1; - goto LABEL_63; - } - if ( a1 && a2 == -1 ) - { - v43 = (char *)a1[2]; - if ( (unsigned int)v43 >= a1[3] ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v13 = v53; - if ( v53 == -1 ) - v13 = -1; - if ( v53 == -1 ) - a1 = 0; - } - else - { - v13 = *v43; - } - } - else - { - v13 = a2; - } - v14 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, v13); - if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, (char)*v9) != v14 ) - { - if ( a1 && a2 == -1 ) - { - v48 = (char *)a1[2]; - if ( (unsigned int)v48 >= a1[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v15 = v54; - if ( v54 == -1 ) - v15 = -1; - if ( v54 == -1 ) - a1 = 0; - } - else - { - v15 = *v48; - } - } - else - { - v15 = a2; - } - v16 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, v15); - if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, (char)*v9) != v16 ) - break; - } - v17 = a1[2]; - if ( v17 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v17 + 1; - a2 = -1; - ++v9; -LABEL_15: - if ( a9 == v9 ) - return a1; -LABEL_16: - if ( *a6 ) - return a1; - } - *a6 = 4; - return a1; -} -// 4B9AF9: conditional instruction was optimized away because eax.4==FFFFFFFF - -//----- (004B9CA0) -------------------------------------------------------- -int __stdcall std::time_get>::get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char a7, - char a8) -{ - _BYTE *v8; // ebp - char v9; // dl - int v10; // esi - unsigned __int64 v11; // rax - char v12; // bp - int (__stdcall *v14)(unsigned __int8); // eax - char v15; // [esp+20h] [ebp-3Ch] - char v16; // [esp+3Ch] [ebp-20h] BYREF - char v17; // [esp+3Dh] [ebp-1Fh] - char v18; // [esp+3Eh] [ebp-1Eh] - char v19; // [esp+3Fh] [ebp-1Dh] - - v8 = std::use_facet>(a4 + 108); - *a5 = 0; - if ( v8[28] ) - { - v9 = v8[66]; - } - else - { - std::ctype::_M_widen_init((int)v8); - v9 = 37; - v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); - if ( v14 != std::ctype::do_widen ) - v9 = ((int (__fastcall *)(_BYTE *, int, int))v14)(v8, 37, 37); - } - v16 = v9; - if ( a8 ) - { - v19 = 0; - v17 = a8; - v18 = a7; - } - else - { - v18 = 0; - v17 = a7; - } - v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); - v10 = v11; - BYTE4(v11) = HIDWORD(v11) == -1; - v12 = BYTE4(v11) & ((_DWORD)v11 != 0); - if ( v12 ) - { - BYTE4(v11) = 0; - if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) - { - LODWORD(v11) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v11 + 36))(v11); - BYTE4(v11) = 0; - if ( (_DWORD)v11 == -1 ) - { - BYTE4(v11) = v12; - v10 = 0; - } - } - } - LOBYTE(v11) = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - LOBYTE(v11) = 0; - if ( a2[2] >= a2[3] ) - { - v15 = BYTE4(v11); - LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - BYTE4(v11) = v15; - LOBYTE(v11) = (_DWORD)v11 == -1; - } - } - } - if ( (_BYTE)v11 == BYTE4(v11) ) - *a5 |= 2u; - return v10; -} -// 4B9E49: conditional instruction was optimized away because eax.4==FFFFFFFF - -//----- (004B9E60) -------------------------------------------------------- -int __stdcall std::time_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char a7, - char a8) -{ - _BYTE *v8; // ebp - char v9; // dl - int v10; // esi - unsigned __int64 v11; // rax - char v12; // bp - int (__stdcall *v14)(unsigned __int8); // eax - char v15; // [esp+20h] [ebp-3Ch] - char v16; // [esp+3Ch] [ebp-20h] BYREF - char v17; // [esp+3Dh] [ebp-1Fh] - char v18; // [esp+3Eh] [ebp-1Eh] - char v19; // [esp+3Fh] [ebp-1Dh] - - v8 = std::use_facet>(a4 + 108); - *a5 = 0; - if ( v8[28] ) - { - v9 = v8[66]; - } - else - { - std::ctype::_M_widen_init((int)v8); - v9 = 37; - v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); - if ( v14 != std::ctype::do_widen ) - v9 = ((int (__fastcall *)(_BYTE *, int, int))v14)(v8, 37, 37); - } - v16 = v9; - if ( a8 ) - { - v19 = 0; - v17 = a8; - v18 = a7; - } - else - { - v18 = 0; - v17 = a7; - } - v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); - v10 = v11; - BYTE4(v11) = HIDWORD(v11) == -1; - v12 = BYTE4(v11) & ((_DWORD)v11 != 0); - if ( v12 ) - { - BYTE4(v11) = 0; - if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) - { - LODWORD(v11) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v11 + 36))(v11); - BYTE4(v11) = 0; - if ( (_DWORD)v11 == -1 ) - { - BYTE4(v11) = v12; - v10 = 0; - } - } - } - LOBYTE(v11) = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - LOBYTE(v11) = 0; - if ( a2[2] >= a2[3] ) - { - v15 = BYTE4(v11); - LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - BYTE4(v11) = v15; - LOBYTE(v11) = (_DWORD)v11 == -1; - } - } - } - if ( BYTE4(v11) == (_BYTE)v11 ) - *a5 |= 2u; - return v10; -} -// 4BA009: conditional instruction was optimized away because eax.4==FFFFFFFF - -//----- (004BA020) -------------------------------------------------------- -int __fastcall std::time_get>::get_date(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); -} - -//----- (004BA030) -------------------------------------------------------- -int __fastcall std::time_get>::get_time(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); -} - -//----- (004BA040) -------------------------------------------------------- -int __fastcall std::time_get>::get_year(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); -} - -//----- (004BA050) -------------------------------------------------------- -int __fastcall std::time_get>::date_order(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); - if ( v1 == std::time_get>::do_date_order ) - return 0; - else - return v1(); -} - -//----- (004BA070) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_date( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - _DWORD *v6; // eax - __int64 v7; // rax - _DWORD *v8; // ecx - _DWORD *v9; // ebp - _BOOL2 v10; // bx - bool v11; // cl - __int16 *v13; // eax - __int16 v14; // ax - bool v15; // si - __int16 *v16; // eax - __int16 v17; // ax - _DWORD *v18; // [esp+30h] [ebp-2Ch] - - v6 = std::use_facet>(a4 + 108); - v7 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - (wchar_t *)*(_DWORD *)(v6[2] + 8)); - v8 = (_DWORD *)v7; - v9 = (_DWORD *)v7; - v10 = WORD2(v7) == 0xFFFF; - if ( v10 && (_DWORD)v7 != 0 ) - { - v15 = v10 && (_DWORD)v7 != 0; - v16 = *(__int16 **)(v7 + 8); - if ( (unsigned int)v16 >= v8[3] ) - { - v18 = v8; - v17 = (*(int (**)(void))(*v8 + 36))(); - v8 = v18; - } - else - { - v17 = *v16; - } - LOBYTE(v10) = 0; - v9 = 0; - if ( v17 == -1 ) - LOBYTE(v10) = v15; - if ( v17 != -1 ) - v9 = v8; - } - v11 = (_WORD)a3 == 0xFFFF; - if ( a2 && (_WORD)a3 == 0xFFFF ) - { - v13 = (__int16 *)a2[2]; - if ( (unsigned int)v13 >= a2[3] ) - v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v14 = *v13; - v11 = v14 == -1; - } - if ( v10 == v11 ) - *a5 |= 2u; - return v9; -} - -//----- (004BA1A0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_time( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - _DWORD *v6; // eax - __int64 v7; // rax - _DWORD *v8; // ecx - _DWORD *v9; // ebp - _BOOL2 v10; // bx - bool v11; // cl - __int16 *v13; // eax - __int16 v14; // ax - bool v15; // si - __int16 *v16; // eax - __int16 v17; // ax - _DWORD *v18; // [esp+30h] [ebp-2Ch] - - v6 = std::use_facet>(a4 + 108); - v7 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - (wchar_t *)*(_DWORD *)(v6[2] + 16)); - v8 = (_DWORD *)v7; - v9 = (_DWORD *)v7; - v10 = WORD2(v7) == 0xFFFF; - if ( v10 && (_DWORD)v7 != 0 ) - { - v15 = v10 && (_DWORD)v7 != 0; - v16 = *(__int16 **)(v7 + 8); - if ( (unsigned int)v16 >= v8[3] ) - { - v18 = v8; - v17 = (*(int (**)(void))(*v8 + 36))(); - v8 = v18; - } - else - { - v17 = *v16; - } - LOBYTE(v10) = 0; - v9 = 0; - if ( v17 == -1 ) - LOBYTE(v10) = v15; - if ( v17 != -1 ) - v9 = v8; - } - v11 = (_WORD)a3 == 0xFFFF; - if ( a2 && (_WORD)a3 == 0xFFFF ) - { - v13 = (__int16 *)a2[2]; - if ( (unsigned int)v13 >= a2[3] ) - v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v14 = *v13; - v11 = v14 == -1; - } - if ( v10 == v11 ) - *a5 |= 2u; - return v9; -} - -//----- (004BA2D0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_year( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - __int16 v7; // dx - _DWORD *v8; // ecx - _DWORD *v9; // ebp - int v10; // ebx - char v11; // bl - char v12; // cl - __int16 *v14; // eax - __int16 v15; // ax - __int16 *v16; // eax - __int16 v17; // ax - bool v18; // zf - _DWORD *v19; // eax - char v20; // [esp+40h] [ebp-3Ch] - _DWORD *v21; // [esp+44h] [ebp-38h] - int v22; // [esp+58h] [ebp-24h] BYREF - int v23[8]; // [esp+5Ch] [ebp-20h] BYREF - - v23[0] = 0; - v8 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v22, - 0, - 9999, - 4u, - a5, - v23); - v9 = v8; - if ( v23[0] ) - { - *a6 |= 4u; - } - else - { - v10 = v22 + 100; - if ( v22 >= 0 ) - v10 = v22 - 1900; - *(_DWORD *)(a7 + 20) = v10; - } - v11 = v7 == -1; - v20 = v11 & (v8 != 0); - if ( v20 ) - { - v16 = (__int16 *)v8[2]; - if ( (unsigned int)v16 >= v8[3] ) - { - v21 = v8; - v17 = (*(int (**)(void))(*v8 + 36))(); - v8 = v21; - } - else - { - v17 = *v16; - } - v18 = v17 == -1; - v11 = 0; - if ( v17 == -1 ) - v11 = v20; - v19 = 0; - if ( !v18 ) - v19 = v8; - v9 = v19; - } - v12 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v14 = (__int16 *)a3[2]; - if ( (unsigned int)v14 >= a3[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v15 = *v14; - v12 = v15 == -1; - } - if ( v12 == v11 ) - *a6 |= 2u; - return v9; -} -// 4BA38D: variable 'v7' is possibly undefined -// 4BA2D0: using guessed type int var_20[8]; - -//----- (004BA440) -------------------------------------------------------- -int __fastcall std::time_get>::get_weekday(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); -} - -//----- (004BA450) -------------------------------------------------------- -int std::time_get>::do_date_order() -{ - return 0; -} - -//----- (004BA460) -------------------------------------------------------- -int __fastcall std::time_get>::get_monthname(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); -} - -//----- (004BA470) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_num( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int *a5, - signed int a6, - int a7, - unsigned int a8, - int a9, - _DWORD *a10) -{ - unsigned int v10; // ebp - int v12; // eax - int v13; // edi - char v14; // dl - char v15; // bl - int v16; // edx - unsigned __int8 v17; // al - unsigned int v18; // eax - __int16 *v19; // eax - __int16 v20; // ax - __int16 *v21; // eax - __int16 v22; // ax - bool v23; // zf - _DWORD *v24; // eax - unsigned __int16 *v26; // eax - bool v27; // [esp+1Bh] [ebp-31h] - unsigned int v28; // [esp+1Ch] [ebp-30h] - void *v30; // [esp+24h] [ebp-28h] - char v32; // [esp+2Eh] [ebp-1Eh] - char v33; // [esp+2Fh] [ebp-1Dh] - - v10 = 10; - v30 = std::use_facet>(a9 + 108); - if ( a8 != 2 ) - { - v12 = 1; - if ( a8 == 4 ) - v12 = 1000; - v10 = v12; - } - v28 = 0; - v32 = a4 == -1; - v13 = 0; - while ( 1 ) - { - v27 = a2 == 0xFFFF; - v14 = v27 && a1 != 0; - if ( v14 ) - break; - v14 = a2 == 0xFFFF; - v15 = v32 & (a3 != 0); - if ( v15 ) - goto LABEL_26; -LABEL_7: - if ( v14 == v32 ) - goto LABEL_33; -LABEL_8: - if ( v28 >= a8 ) - goto LABEL_33; - if ( a1 && a2 == 0xFFFF ) - { - v26 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v26 >= a1[3] ) - v16 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v16 = *v26; - if ( (_WORD)v16 == 0xFFFF ) - a1 = 0; - } - else - { - v16 = a2; - } - v17 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v30 + 48))(v30, v16, 42) - 48; - if ( v17 > 9u ) - goto LABEL_34; - v13 = (char)v17 + 10 * v13; - if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) - goto LABEL_34; - v18 = a1[2]; - v10 /= 0xAu; - if ( v18 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v18 + 2; - ++v28; - a2 = -1; - } - v19 = (__int16 *)a1[2]; - if ( (unsigned int)v19 >= a1[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v14 = v27 && a1 != 0; - } - else - { - v20 = *v19; - } - if ( v20 == -1 ) - a1 = 0; - if ( v20 != -1 ) - v14 = 0; - v15 = v32 & (a3 != 0); - if ( !v15 ) - goto LABEL_7; -LABEL_26: - v21 = (__int16 *)a3[2]; - if ( (unsigned int)v21 >= a3[3] ) - { - v33 = v14; - v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v14 = v33; - } - else - { - v22 = *v21; - } - v23 = v22 == -1; - v24 = 0; - if ( !v23 ) - v24 = a3; - a3 = v24; - if ( !v23 ) - v15 = 0; - if ( v14 != v15 ) - goto LABEL_8; -LABEL_33: - if ( v28 == a8 ) - { -LABEL_37: - *a5 = v13; - return a1; - } -LABEL_34: - if ( a8 == 4 && v28 == 2 ) - { - v13 -= 100; - goto LABEL_37; - } - *a10 |= 4u; - return a1; -} - -//----- (004BA6F0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_weekday( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // ecx - int v9; // eax - __int16 v10; // dx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // bl - char v14; // si - char v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - _DWORD *v21; // [esp+40h] [ebp-6Ch] - unsigned int v22; // [esp+50h] [ebp-5Ch] BYREF - int v23; // [esp+54h] [ebp-58h] BYREF - int v24[21]; // [esp+58h] [ebp-54h] BYREF - - v23 = 0; - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v24[0] = v7[18]; - v24[1] = v7[19]; - v24[2] = v7[20]; - v24[3] = v7[21]; - v24[4] = v7[22]; - v24[5] = v7[23]; - v24[6] = v7[24]; - v24[7] = v7[11]; - v24[8] = v7[12]; - v24[9] = v7[13]; - v24[10] = v7[14]; - v24[11] = v7[15]; - v8 = v7[16]; - v9 = v7[17]; - v24[12] = v8; - v24[13] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v22, - (int)v24, - 7u, - a5, - &v23); - v12 = v11; - if ( v23 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 24) = v22; - v13 = v10 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v19 = (__int16 *)v11[2]; - if ( (unsigned int)v19 >= v11[3] ) - { - v21 = v11; - v20 = (*(int (**)(void))(*v11 + 36))(); - v11 = v21; - } - else - { - v20 = *v19; - } - v13 = 0; - v12 = 0; - if ( v20 == -1 ) - v13 = v14; - if ( v20 != -1 ) - v12 = v11; - } - v15 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v12; -} -// 4BA81D: variable 'v10' is possibly undefined - -//----- (004BA8E0) -------------------------------------------------------- -int __stdcall std::time_get>::_M_extract_name( - int *a1, - int a2, - _DWORD *a3, - int a4, - int **a5, - int a6, - int a7, - int a8, - _DWORD *a9) -{ - void *v9; // edi - int v10; // eax - void *v11; // esp - void *v12; // esp - int *v13; // edx - char v14; // bl - int v15; // eax - int v17; // ebx - int v18; // edx - size_t v19; // esi - __int16 v20; // ax - int v21; // ecx - int *v22; // edx - int *v23; // ebx - int *v24; // edi - size_t v25; // eax - unsigned int v26; // ebx - unsigned int v27; // esi - size_t v28; // eax - unsigned int v29; // edi - unsigned int v30; // eax - __int16 *v31; // eax - __int16 v32; // ax - bool v33; // zf - int v34; // eax - char v35; // di - char v36; // dl - int *v37; // ecx - size_t v38; // edi - int i; // eax - __int16 v40; // ax - __int16 *v41; // eax - unsigned int v42; // eax - int v43; // ebx - const wchar_t *v44; // edi - unsigned int v45; // ebx - int *v46; // esi - unsigned int v47; // eax - __int16 *v48; // eax - __int16 v49; // ax - char v50; // di - char v51; // dl - wchar_t v52; // di - __int16 v53; // ax - _WORD *v54; // eax - __int16 *v55; // eax - __int16 v56; // ax - bool v57; // zf - _DWORD *v58; // eax - int v59; // eax - __int16 *v60; // eax - __int16 v61; // ax - bool v62; // zf - int v63; // eax - char v64; // cl - __int16 *v65; // eax - __int16 v66; // ax - bool v67; // zf - _DWORD *v68; // eax - _WORD *v69; // eax - int v70; // eax - int v71; // eax - int v72; // eax - __int16 v73; // ax - __int16 *v74; // eax - __int16 v75; // ax - bool v76; // zf - _DWORD *v77; // eax - int v78; // [esp+10h] [ebp-38h] BYREF - _DWORD *v79; // [esp+14h] [ebp-34h] - bool v80; // [esp+1Bh] [ebp-2Dh] - int *v81; // [esp+1Ch] [ebp-2Ch] - int *v82; // [esp+20h] [ebp-28h] - int *v83; // [esp+24h] [ebp-24h] - const wchar_t *v84; // [esp+28h] [ebp-20h] - size_t v85; // [esp+2Ch] [ebp-1Ch] - - v81 = (int *)a4; - v78 = a2; - LOWORD(v84) = a2; - v82 = a1; - v79 = a3; - v9 = std::use_facet>(a8 + 108); - v10 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); - v11 = alloca(v10); - v12 = alloca(v10); - v13 = &v78; - LOBYTE(v85) = (_WORD)a2 == 0xFFFF; - LOBYTE(v83) = v85 & (a1 != 0); - if ( (_BYTE)v83 ) - { - v60 = (__int16 *)a1[2]; - if ( (unsigned int)v60 >= a1[3] ) - { - v72 = *a1; - v82 = &v78; - v61 = (*(int (__fastcall **)(int *))(v72 + 36))(a1); - v13 = v82; - } - else - { - v61 = *v60; - } - v62 = v61 == -1; - v63 = 0; - v64 = (char)v83; - if ( !v62 ) - v63 = (int)a1; - v82 = (int *)v63; - if ( !v62 ) - v64 = 0; - LOBYTE(v83) = v64; - } - else - { - LOBYTE(v83) = v85; - } - v80 = (_WORD)v81 == 0xFFFF; - v14 = v80 && a3 != 0; - if ( v14 ) - { - v65 = (__int16 *)a3[2]; - if ( (unsigned int)v65 >= a3[3] ) - { - v71 = *a3; - v81 = v13; - v66 = (*(int (__fastcall **)(_DWORD *))(v71 + 36))(a3); - v13 = v81; - } - else - { - v66 = *v65; - } - v67 = v66 == -1; - v68 = 0; - if ( !v67 ) - v68 = a3; - v79 = v68; - if ( !v67 ) - v14 = 0; - } - else - { - v14 = v80; - } - if ( v14 == (_BYTE)v83 ) - goto LABEL_6; - if ( v82 && (_BYTE)v85 ) - { - v69 = (_WORD *)v82[2]; - if ( (unsigned int)v69 >= v82[3] ) - { - v83 = v13; - v73 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); - v13 = v83; - LOWORD(v85) = v73; - } - else - { - LOWORD(v85) = *v69; - } - v70 = 0; - if ( (_WORD)v85 != 0xFFFF ) - v70 = (int)v82; - v82 = (int *)v70; - } - else - { - LOWORD(v85) = (_WORD)v84; - } - if ( !a7 ) - goto LABEL_6; - v83 = v13; - v17 = 0; - v18 = a6; - v19 = 0; - do - { - while ( 1 ) - { - v21 = **(unsigned __int16 **)(v18 + 4 * v17); - if ( (_WORD)v21 == (_WORD)v85 ) - break; - a6 = v18; - v20 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v21); - v18 = a6; - if ( v20 == (_WORD)v85 ) - break; - if ( a7 == ++v17 ) - goto LABEL_17; - } - v83[v19++] = v17++; - } - while ( a7 != v17 ); -LABEL_17: - v22 = v83; - v83 = 0; - if ( v19 <= 1 ) - goto LABEL_44; - v23 = v22; - do - { - v24 = v23; - v81 = (int *)*v23; - v25 = wcslen(*(const wchar_t **)(a6 + 4 * (_DWORD)v81)); - v85 = v19; - v26 = 1; - v27 = v25; - do - { - v28 = wcslen(*(const wchar_t **)(a6 + 4 * v24[v26])); - if ( v27 > v28 ) - v27 = v28; - ++v26; - } - while ( v26 < v85 ); - v23 = v24; - v29 = v27; - v19 = v85; - v30 = v82[2]; - if ( v30 >= v82[3] ) - (*(void (__fastcall **)(int *))(*v82 + 40))(v82); - else - v82[2] = v30 + 2; - v83 = (int *)((char *)v83 + 1); - if ( (unsigned int)v83 >= v29 ) - goto LABEL_73; - v31 = (__int16 *)v82[2]; - if ( (unsigned int)v31 >= v82[3] ) - v32 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); - else - v32 = *v31; - v33 = v32 == -1; - v34 = 0; - if ( !v33 ) - v34 = (int)v82; - v82 = (int *)v34; - v35 = v33; - v36 = v80 && v79 != 0; - if ( v36 ) - { - v55 = (__int16 *)v79[2]; - if ( (unsigned int)v55 >= v79[3] ) - { - LOBYTE(v85) = v80 && v79 != 0; - v56 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); - v36 = v85; - } - else - { - v56 = *v55; - } - v57 = v56 == -1; - v58 = 0; - if ( !v57 ) - v58 = v79; - v79 = v58; - if ( !v57 ) - v36 = 0; - if ( v35 == v36 ) - goto LABEL_73; - } - else if ( v33 == v80 ) - { - goto LABEL_73; - } - v37 = v82; - v38 = 0; - v84 = (const wchar_t *)(2 * (_DWORD)v83); - for ( i = (int)v81; ; i = v23[v38] ) - { - LOWORD(v85) = *(const wchar_t *)((char *)v84 + *(_DWORD *)(a6 + 4 * i)); - v40 = -1; - if ( v37 ) - { - v41 = (__int16 *)v37[2]; - if ( (unsigned int)v41 >= v37[3] ) - { - v59 = *v37; - v82 = v37; - v40 = (*(int (**)(void))(v59 + 36))(); - v37 = v82; - } - else - { - v40 = *v41; - } - if ( v40 == -1 ) - v37 = 0; - } - if ( (_WORD)v85 == v40 ) - break; - v23[v38] = v23[--v19]; - if ( v19 <= v38 ) - goto LABEL_42; -LABEL_34: - ; - } - if ( v19 > ++v38 ) - goto LABEL_34; -LABEL_42: - v82 = v37; - } - while ( v19 > 1 ); - LOWORD(v84) = -1; - v22 = v23; -LABEL_44: - if ( v19 == 1 ) - { - v42 = v82[2]; - if ( v42 >= v82[3] ) - { - v85 = (size_t)v22; - (*(void (__fastcall **)(int *))(*v82 + 40))(v82); - v22 = (int *)v85; - } - else - { - v82[2] = v42 + 2; - } - v43 = (int)v83; - v44 = *(const wchar_t **)(a6 + 4 * *v22); - v83 = (int *)*v22; - v45 = v43 + 1; - v85 = wcslen(v44); - if ( v45 < v85 ) - { - v84 = v44; - v46 = v82; - do - { - v48 = (__int16 *)v46[2]; - if ( (unsigned int)v48 >= v46[3] ) - v49 = (*(int (__fastcall **)(int *))(*v46 + 36))(v46); - else - v49 = *v48; - v50 = v49 == -1; - if ( v49 == -1 ) - v46 = 0; - v51 = v80 && v79 != 0; - if ( v51 ) - { - v74 = (__int16 *)v79[2]; - if ( (unsigned int)v74 >= v79[3] ) - { - LOBYTE(v82) = v80 && v79 != 0; - v75 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); - v51 = (char)v82; - } - else - { - v75 = *v74; - } - v76 = v75 == -1; - v77 = 0; - if ( !v76 ) - v77 = v79; - v79 = v77; - if ( !v76 ) - v51 = 0; - } - else - { - v51 = v80; - } - if ( v51 == v50 ) - goto LABEL_108; - v52 = v84[v45]; - v53 = -1; - if ( v46 ) - { - v54 = (_WORD *)v46[2]; - v53 = (unsigned int)v54 >= v46[3] ? (*(int (__fastcall **)(int *))(*v46 + 36))(v46) : *v54; - if ( v53 == -1 ) - v46 = 0; - } - if ( v52 != v53 ) - { -LABEL_108: - v82 = v46; - LOWORD(v84) = -1; - goto LABEL_6; - } - v47 = v46[2]; - if ( v47 >= v46[3] ) - (*(void (__fastcall **)(int *))(*v46 + 40))(v46); - else - v46[2] = v47 + 2; - ++v45; - } - while ( v45 < v85 ); - v82 = v46; - } - if ( v85 == v45 ) - { - *a5 = v83; - LOWORD(v84) = -1; - goto LABEL_7; - } -LABEL_73: - LOWORD(v84) = -1; - } -LABEL_6: - *a9 |= 4u; -LABEL_7: - HIWORD(v15) = HIWORD(v78); - LOWORD(v15) = (_WORD)v84; - v78 = v15; - return (int)v82; -} - -//----- (004BAE30) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_monthname( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // ecx - int v9; // ecx - __int16 v10; // dx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // bl - char v14; // si - char v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - _DWORD *v21; // [esp+40h] [ebp-9Ch] - unsigned int v22; // [esp+58h] [ebp-84h] BYREF - int v23; // [esp+5Ch] [ebp-80h] BYREF - int v24[31]; // [esp+60h] [ebp-7Ch] BYREF - - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v24[0] = v7[37]; - v24[1] = v7[38]; - v24[2] = v7[39]; - v24[3] = v7[40]; - v24[4] = v7[41]; - v24[5] = v7[42]; - v24[6] = v7[43]; - v24[7] = v7[44]; - v24[8] = v7[45]; - v24[9] = v7[46]; - v24[10] = v7[47]; - v24[11] = v7[48]; - v24[12] = v7[25]; - v24[13] = v7[26]; - v24[14] = v7[27]; - v24[15] = v7[28]; - v8 = v7[29]; - v23 = 0; - v24[16] = v8; - v24[17] = v7[30]; - v24[18] = v7[31]; - v24[19] = v7[32]; - v24[20] = v7[33]; - v24[21] = v7[34]; - v9 = v7[35]; - v24[23] = v7[36]; - v24[22] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v22, - (int)v24, - 0xCu, - a5, - &v23); - v12 = v11; - if ( v23 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 16) = v22; - v13 = v10 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v19 = (__int16 *)v11[2]; - if ( (unsigned int)v19 >= v11[3] ) - { - v21 = v11; - v20 = (*(int (**)(void))(*v11 + 36))(); - v11 = v21; - } - else - { - v20 = *v19; - } - v13 = 0; - v12 = 0; - if ( v20 == -1 ) - v13 = v14; - if ( v20 != -1 ) - v12 = v11; - } - v15 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v12; -} -// 4BAFFA: variable 'v10' is possibly undefined - -//----- (004BB0C0) -------------------------------------------------------- -__int64 __stdcall std::time_get>::_M_extract_via_format( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - wchar_t *a7) -{ - wchar_t *v7; // ebx - _DWORD *v8; // eax - size_t v9; // ebx - void *v10; // esi - size_t v11; // eax - _DWORD *v12; // ecx - __int16 v13; // ax - char v14; // dl - char v15; // di - char v16; // al - char v17; // di - size_t v18; // edi - size_t v19; // ebp - char v20; // al - unsigned __int8 v21; // al - __int16 v22; // ax - wchar_t v23; // bx - _WORD *v25; // eax - __int16 v26; // ax - __int16 *v27; // eax - __int16 v28; // cx - __int16 *v29; // eax - __int16 v30; // dx - int *v31; // edx - _DWORD *v32; // eax - __int16 v33; // dx - _DWORD *v34; // eax - __int16 v35; // dx - __int16 v36; // dx - unsigned __int16 v37; // ax - __int16 v38; // dx - __int16 v39; // di - __int16 v40; // di - unsigned __int16 v41; // dx - __int16 v42; // dx - __int16 v43; // dx - __int16 v44; // dx - __int16 v45; // dx - __int16 v46; // dx - __int16 v47; // dx - __int16 v48; // dx - _DWORD *v49; // eax - __int16 v50; // dx - _DWORD *v51; // eax - __int16 v52; // dx - __int16 v53; // dx - unsigned __int16 v54; // ax - __int16 v55; // dx - __int16 v56; // dx - unsigned __int16 v57; // ax - unsigned __int16 v58; // ax - __int16 v59; // dx - __int16 v60; // dx - __int16 v61; // dx - __int16 v62; // ax - wchar_t *String; // [esp+20h] [ebp-15Ch] - size_t v64; // [esp+5Ch] [ebp-120h] - wchar_t *v65; // [esp+60h] [ebp-11Ch] - char v66; // [esp+60h] [ebp-11Ch] - _DWORD *v67; // [esp+6Ch] [ebp-110h] - int v68; // [esp+128h] [ebp-54h] BYREF - int *v69; // [esp+12Ch] [ebp-50h] BYREF - wchar_t v70[2]; // [esp+130h] [ebp-4Ch] BYREF - int v71; // [esp+134h] [ebp-48h] - int v72; // [esp+138h] [ebp-44h] - int v73; // [esp+13Ch] [ebp-40h] - int v74; // [esp+140h] [ebp-3Ch] - int v75; // [esp+144h] [ebp-38h] - int v76; // [esp+148h] [ebp-34h] - int v77; // [esp+14Ch] [ebp-30h] - int v78; // [esp+150h] [ebp-2Ch] - int v79; // [esp+154h] [ebp-28h] - int v80; // [esp+158h] [ebp-24h] - int v81; // [esp+15Ch] [ebp-20h] - - v7 = (wchar_t *)(a4 + 108); - v8 = std::use_facet>(a4 + 108); - String = v7; - v9 = 0; - v67 = v8; - v10 = std::use_facet>((int)String); - v11 = wcslen(a7); - v12 = (_DWORD *)a1; - v68 = 0; - v64 = v11; - v13 = WORD2(a1); - while ( 1 ) - { - v14 = v13 == -1; - v15 = v14 & (v12 != 0); - if ( v15 ) - { - v25 = (_WORD *)v12[2]; - v26 = (unsigned int)v25 >= v12[3] ? (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12) : *v25; - v14 = 0; - if ( v26 == -1 ) - { - LODWORD(a1) = 0; - v14 = v15; - } - } - v16 = (_WORD)a3 == 0xFFFF; - v17 = v16 & (a2 != 0); - if ( v17 ) - { - v27 = (__int16 *)a2[2]; - if ( (unsigned int)v27 >= a2[3] ) - { - v66 = v14; - v62 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v14 = v66; - v28 = v62; - } - else - { - v28 = *v27; - } - v16 = 0; - if ( v28 == -1 ) - { - a2 = 0; - v16 = v17; - } - } - if ( v14 == v16 || v9 >= v64 ) - break; - if ( v68 ) - goto LABEL_21; - v18 = v9; - v19 = v9 + 1; - v65 = &a7[v9]; - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, *v65, 0) == 37 ) - { - v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v18 + 1], 0); - v69 = 0; - if ( v20 == 69 || v20 == 79 ) - { - v19 = v9 + 2; - v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v18 + 2], 0) - 65; - if ( v21 > 0x38u ) - { -LABEL_17: - v68 |= 4u; -LABEL_18: - v13 = WORD2(a1); - goto LABEL_19; - } - } - else - { - v21 = v20 - 65; - } - switch ( v21 ) - { - case 0u: - v49 = (_DWORD *)v67[2]; - *(_DWORD *)v70 = v49[11]; - v71 = v49[12]; - v72 = v49[13]; - v73 = v49[14]; - v74 = v49[15]; - v75 = v49[16]; - v76 = v49[17]; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - &v69, - (int)v70, - 7, - a4, - &v68); - v13 = v50; - WORD2(a1) = v50; - if ( !v68 ) - goto LABEL_45; - break; - case 1u: - v51 = (_DWORD *)v67[2]; - *(_DWORD *)v70 = v51[25]; - v71 = v51[26]; - v72 = v51[27]; - v73 = v51[28]; - v74 = v51[29]; - v75 = v51[30]; - v76 = v51[31]; - v77 = v51[32]; - v78 = v51[33]; - v79 = v51[34]; - v80 = v51[35]; - v81 = v51[36]; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - &v69, - (int)v70, - 12, - a4, - &v68); - v13 = v52; - WORD2(a1) = v52; - if ( !v68 ) - goto LABEL_43; - break; - case 2u: - case 0x18u: - case 0x38u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 0, - 9999, - 4u, - a4, - &v68); - v13 = v30; - WORD2(a1) = v30; - if ( !v68 ) - { - v31 = v69 - 475; - if ( (int)v69 < 0 ) - v31 = v69 + 25; - a6[5] = v31; - } - break; - case 3u: - (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( - v10, - "%m/%d/%y", - "%H:%M", - v70); - LODWORD(a1) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v68, - (int)a6, - v70); - v13 = v53; - WORD2(a1) = v53; - break; - case 7u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 0, - 23, - 2u, - a4, - &v68); - v13 = v45; - WORD2(a1) = v45; - if ( !v68 ) - goto LABEL_57; - break; - case 8u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 1, - 12, - 2u, - a4, - &v68); - v13 = v46; - WORD2(a1) = v46; - if ( !v68 ) -LABEL_57: - a6[2] = v69; - break; - case 0xCu: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 0, - 59, - 2u, - a4, - &v68); - v13 = v47; - WORD2(a1) = v47; - if ( !v68 ) - a6[1] = v69; - break; - case 0x11u: - (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( - v10, - "%H:%M", - "%H:%M:%S", - v70); - LODWORD(a1) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v68, - (int)a6, - v70); - v13 = v48; - WORD2(a1) = v48; - break; - case 0x12u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 0, - 60, - 2u, - a4, - &v68); - v13 = v60; - WORD2(a1) = v60; - if ( !v68 ) - *a6 = v69; - break; - case 0x13u: - (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v10 + 44))( - v10, - "%H:%M:%S", - &unk_558106, - v70); - LODWORD(a1) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v68, - (int)a6, - v70); - v13 = v61; - WORD2(a1) = v61; - break; - case 0x17u: - LODWORD(a1) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v68, - (int)a6, - *(wchar_t **)(v67[2] + 16)); - v13 = v36; - WORD2(a1) = v36; - break; - case 0x19u: - v37 = std::istreambuf_iterator::_M_get((int)&a1); - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 1, v37) ) - goto LABEL_17; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - (int **)v70, - (int)std::__timepunct_cache::_S_timezones, - 14, - a4, - &v68); - WORD2(a1) = v38; - if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) && !(*(_DWORD *)v70 | v68) ) - { - v39 = std::istreambuf_iterator::_M_get((int)&a1); - if ( v39 == (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 45) - || (v40 = std::istreambuf_iterator::_M_get((int)&a1), - v40 == (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 43)) ) - { - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)v70, - 0, - 23, - 2u, - a4, - &v68); - WORD2(a1) = v41; - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - v41, - a2, - a3, - (int *)v70, - 0, - 59, - 2u, - a4, - &v68); - WORD2(a1) = v42; - } - } - goto LABEL_18; - case 0x20u: - v34 = (_DWORD *)v67[2]; - *(_DWORD *)v70 = v34[18]; - v71 = v34[19]; - v72 = v34[20]; - v73 = v34[21]; - v74 = v34[22]; - v75 = v34[23]; - v76 = v34[24]; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - &v69, - (int)v70, - 7, - a4, - &v68); - v13 = v35; - WORD2(a1) = v35; - if ( !v68 ) -LABEL_45: - a6[6] = v69; - break; - case 0x21u: - case 0x27u: - v32 = (_DWORD *)v67[2]; - *(_DWORD *)v70 = v32[37]; - v71 = v32[38]; - v72 = v32[39]; - v73 = v32[40]; - v74 = v32[41]; - v75 = v32[42]; - v76 = v32[43]; - v77 = v32[44]; - v78 = v32[45]; - v79 = v32[46]; - v80 = v32[47]; - v81 = v32[48]; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - &v69, - (int)v70, - 12, - a4, - &v68); - v13 = v33; - WORD2(a1) = v33; - if ( !v68 ) -LABEL_43: - a6[4] = v69; - break; - case 0x22u: - LODWORD(a1) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v68, - (int)a6, - *(wchar_t **)(v67[2] + 24)); - v13 = v43; - WORD2(a1) = v43; - break; - case 0x23u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 1, - 31, - 2u, - a4, - &v68); - v13 = v44; - WORD2(a1) = v44; - if ( !v68 ) - goto LABEL_55; - break; - case 0x24u: - v54 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v54) ) - { - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - 0xFFFFu, - a2, - a3, - (int *)&v69, - 1, - 9, - 1u, - a4, - &v68); - } - else - { - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 10, - 31, - 2u, - a4, - &v68); - } - WORD2(a1) = v55; - v13 = v55; - if ( !v68 ) -LABEL_55: - a6[3] = v69; - break; - case 0x2Cu: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 1, - 12, - 2u, - a4, - &v68); - v13 = v56; - WORD2(a1) = v56; - if ( !v68 ) - a6[4] = (char *)v69 - 1; - break; - case 0x2Du: - v57 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v57, 0) != 10 ) - goto LABEL_17; - goto LABEL_75; - case 0x33u: - v58 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v58, 0) != 9 ) - goto LABEL_17; -LABEL_75: - std::wstreambuf::sbumpc((_DWORD *)a1); - v13 = -1; - WORD2(a1) = -1; - break; - case 0x37u: - LODWORD(a1) = std::time_get>::_M_extract_via_format( - a1, - SHIDWORD(a1), - (int)a2, - a3, - a4, - (int)&v68, - (int)a6, - *(wchar_t **)(v67[2] + 8)); - v13 = v59; - WORD2(a1) = v59; - break; - default: - goto LABEL_17; - } -LABEL_19: - v12 = (_DWORD *)a1; - v9 = v19 + 1; - } - else - { - v12 = (_DWORD *)a1; - v22 = WORD2(a1); - v23 = *v65; - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v29 = *(__int16 **)(a1 + 8); - if ( (unsigned int)v29 >= *(_DWORD *)(a1 + 12) ) - v22 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); - else - v22 = *v29; - if ( v22 == -1 ) - { - LODWORD(a1) = 0; - v12 = 0; - } - else - { - v12 = (_DWORD *)a1; - } - } - if ( v23 == v22 ) - { - std::wstreambuf::sbumpc(v12); - v9 = v19; - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - v13 = -1; - } - else - { - v68 |= 4u; - v13 = WORD2(a1); - v9 = v19; - } - } - } - if ( v9 != v64 || v68 ) -LABEL_21: - *a5 |= 4u; - return a1; -} -// 4BB406: variable 'v30' is possibly undefined -// 4BB56A: variable 'v33' is possibly undefined -// 4BB66C: variable 'v35' is possibly undefined -// 4BB70F: variable 'v36' is possibly undefined -// 4BB7DC: variable 'v38' is possibly undefined -// 4BB8F6: variable 'v41' is possibly undefined -// 4BB96C: variable 'v42' is possibly undefined -// 4BB9FB: variable 'v43' is possibly undefined -// 4BBA9C: variable 'v44' is possibly undefined -// 4BBB56: variable 'v45' is possibly undefined -// 4BBC10: variable 'v46' is possibly undefined -// 4BBCB9: variable 'v47' is possibly undefined -// 4BBD7C: variable 'v48' is possibly undefined -// 4BBE65: variable 'v50' is possibly undefined -// 4BBF97: variable 'v52' is possibly undefined -// 4BC049: variable 'v53' is possibly undefined -// 4BC117: variable 'v55' is possibly undefined -// 4BC1C7: variable 'v56' is possibly undefined -// 4BC2EA: variable 'v59' is possibly undefined -// 4BC388: variable 'v60' is possibly undefined -// 4BC44A: variable 'v61' is possibly undefined -// 53F6A0: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[3]; - -//----- (004BC560) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - unsigned int *a5, - int a6, - unsigned int a7, - int a8, - _DWORD *a9) -{ - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // dl - char v13; // di - char v14; // bl - unsigned int v15; // edi - int *v16; // esi - char v17; // dl - char v18; // bl - unsigned int v19; // edx - unsigned int *v20; // ecx - int v21; // ebx - unsigned int v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - bool v25; // zf - _DWORD *v26; // eax - __int16 *v28; // eax - __int16 v29; // ax - bool v30; // zf - _DWORD *v31; // eax - __int16 *v32; // eax - _DWORD *v33; // eax - unsigned int v34; // eax - __int16 v35; // si - int v36; // edx - int v37; // ebx - int v38; // edi - __int16 v39; // ax - int v40; // ecx - unsigned int v41; // eax - int v42; // eax - void *v43; // esp - void *v44; // esp - int v45; // ebx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - _WORD *v50; // eax - __int16 v51; // ax - __int16 *v52; // eax - _DWORD *v53; // eax - int v54; // eax - _DWORD v55[2]; // [esp+10h] [ebp-48h] BYREF - _DWORD *v56; // [esp+18h] [ebp-40h] - char v57; // [esp+1Fh] [ebp-39h] - _DWORD *v58; // [esp+20h] [ebp-38h] - unsigned int v59; // [esp+24h] [ebp-34h] - __int16 v60; // [esp+28h] [ebp-30h] - __int16 v61; // [esp+2Ah] [ebp-2Eh] - int v62; // [esp+2Ch] [ebp-2Ch] - int *v63; // [esp+30h] [ebp-28h] - int *v64; // [esp+34h] [ebp-24h] - unsigned int v65; // [esp+38h] [ebp-20h] - unsigned int v66; // [esp+3Ch] [ebp-1Ch] - - v58 = a1; - v55[1] = a2; - v60 = a2; - v56 = a3; - v63 = (int *)std::use_facet>(a8 + 108); - v9 = 16 * ((8 * a7 + 27) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v12 = (_WORD)a2 == 0xFFFF; - v64 = v55; - v13 = v12 & (a1 != 0); - if ( v13 ) - { - v50 = (_WORD *)v58[2]; - v51 = (unsigned int)v50 >= v58[3] ? (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58) : *v50; - v12 = 0; - if ( v51 == -1 ) - { - v12 = v13; - v58 = 0; - v13 = 0; - } - } - v57 = a4 == -1; - v14 = v57 & (a3 != 0); - if ( v14 ) - { - v46 = (__int16 *)a3[2]; - if ( (unsigned int)v46 >= a3[3] ) - { - v54 = *a3; - LOBYTE(v66) = v12; - v47 = (*(int (__fastcall **)(_DWORD *))(v54 + 36))(a3); - v12 = v66; - } - else - { - v47 = *v46; - } - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = a3; - v56 = v49; - if ( !v48 ) - v14 = 0; - } - else - { - v14 = v57; - } - if ( v12 == v14 ) - { - v65 = 0; - v15 = 0; - v16 = 0; - goto LABEL_6; - } - v35 = v60; - if ( v13 ) - { - v52 = (__int16 *)v58[2]; - if ( (unsigned int)v52 >= v58[3] ) - v35 = (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58); - else - v35 = *v52; - v53 = 0; - if ( v35 != -1 ) - v53 = v58; - v58 = v53; - } - v15 = 2 * a7; - if ( !(2 * a7) ) - { - v65 = 0; - v16 = 0; - goto LABEL_6; - } - v66 = 2 * a7; - v36 = a6; - v37 = 0; - v65 = 0; - v38 = (int)v63; - do - { - while ( 1 ) - { - v40 = **(unsigned __int16 **)(v36 + 4 * v37); - if ( (_WORD)v40 == v35 ) - break; - a6 = v36; - v39 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v38 + 24))(v38, v40); - v36 = a6; - if ( v39 == v35 ) - break; - if ( ++v37 == v66 ) - goto LABEL_62; - } - v41 = v65; - v64[v65] = v37++; - v65 = v41 + 1; - } - while ( v37 != v66 ); -LABEL_62: - v15 = 0; - v16 = 0; - if ( v65 ) - { - std::wstreambuf::sbumpc(v58); - v42 = 16 * ((4 * v65 + 27) >> 4); - v43 = alloca(v42); - v44 = alloca(v42); - v63 = v55; - v66 = (unsigned int)v55; - v45 = (int)v64; - do - { - *(_DWORD *)(v66 + 4 * v15) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v45 + 4 * v15))); - ++v15; - } - while ( v65 != v15 ); - v65 = 1; - v16 = v63; - v60 = -1; - } -LABEL_6: - while ( 2 ) - { - LOBYTE(v66) = v60 == -1; - v17 = v66 & (v58 != 0); - if ( v17 ) - { - v28 = (__int16 *)v58[2]; - if ( (unsigned int)v28 >= v58[3] ) - { - LOBYTE(v63) = v66 & (v58 != 0); - v29 = (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58); - v17 = (char)v63; - } - else - { - v29 = *v28; - } - v30 = v29 == -1; - v31 = 0; - if ( !v30 ) - v31 = v58; - v58 = v31; - if ( !v30 ) - v17 = 0; - } - else - { - v17 = v66; - } - v18 = v57 & (v56 != 0); - if ( v18 ) - { - v23 = (__int16 *)v56[2]; - if ( (unsigned int)v23 >= v56[3] ) - { - LOBYTE(v63) = v17; - v24 = (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56); - v17 = (char)v63; - } - else - { - v24 = *v23; - } - v25 = v24 == -1; - v26 = 0; - if ( !v25 ) - v26 = v56; - v56 = v26; - if ( !v25 ) - v18 = 0; - if ( v17 == v18 ) - break; - } - else if ( v17 == v57 ) - { - break; - } - if ( v58 && (_BYTE)v66 ) - { - v32 = (__int16 *)v58[2]; - if ( (unsigned int)v32 >= v58[3] ) - v61 = (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58); - else - v61 = *v32; - v33 = 0; - if ( v61 != -1 ) - v33 = v58; - v58 = v33; - } - else - { - v61 = v60; - } - if ( !v15 ) - { -LABEL_34: - *a9 |= 4u; - return v58; - } - v66 = (unsigned int)v16; - v19 = 0; - v62 = 0; - v59 = 2 * v65; - do - { - while ( 1 ) - { - v20 = (unsigned int *)(v66 + 4 * v19); - if ( *v20 > v65 ) - break; - ++v62; - ++v19; -LABEL_16: - if ( v19 >= v15 ) - goto LABEL_20; - } - v21 = v64[v19]; - v63 = &v64[v19]; - if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v21) + v59) == v61 ) - { - ++v19; - goto LABEL_16; - } - *v63 = v64[--v15]; - *v20 = *(_DWORD *)(v66 + 4 * v15); - } - while ( v19 < v15 ); -LABEL_20: - v16 = (int *)v66; - if ( v15 != v62 ) - { - v22 = v58[2]; - if ( v22 >= v58[3] ) - (*(void (__fastcall **)(_DWORD *))(*v58 + 40))(v58); - else - v58[2] = v22 + 2; - ++v65; - v60 = -1; - continue; - } - break; - } - if ( v15 != 1 ) - { - if ( v15 == 2 && (*v16 == v65 || v16[1] == v65) ) - goto LABEL_52; - goto LABEL_34; - } - if ( *v16 != v65 ) - goto LABEL_34; -LABEL_52: - v34 = *v64; - if ( *v64 >= a7 ) - v34 = *v64 - a7; - *a5 = v34; - return v58; -} - -//----- (004BCA00) -------------------------------------------------------- -_DWORD *__thiscall std::time_get>::get( - void *this, - _DWORD *a2, - int a3, - _DWORD *a4, - int a5, - _DWORD *a6, - _DWORD *a7, - _DWORD *a8, - unsigned __int16 *a9, - unsigned __int16 *a10) -{ - unsigned __int16 *v10; // ebp - void *v12; // edi - int v13; // edx - __int16 v14; // bx - int v15; // edx - __int16 v16; // bx - unsigned int v17; // eax - char v18; // bl - char v19; // dl - char v20; // al - __int16 v21; // bx - void *v22; // eax - int v23; // edx - _DWORD *v24; // ebx - __int64 v25; // rax - char v26; // bp - char v28; // bl - char v29; // dl - int v30; // edx - unsigned int v31; // eax - __int16 *v32; // eax - __int16 v33; // ax - __int16 *v34; // eax - __int16 v35; // ax - bool v36; // zf - _DWORD *v37; // eax - unsigned __int16 *v38; // eax - unsigned __int16 *v39; // eax - void *v40; // eax - __int16 *v41; // eax - __int16 v42; // ax - bool v43; // zf - _DWORD *v44; // eax - __int16 *v45; // eax - __int16 v46; // ax - unsigned __int16 *v47; // eax - unsigned __int16 *v48; // eax - __int64 v49; // [esp+30h] [ebp-7Ch] - int v50; // [esp+30h] [ebp-7Ch] - __int16 v51; // [esp+56h] [ebp-56h] - unsigned __int16 v52; // [esp+5Ah] [ebp-52h] - unsigned __int16 *v54; // [esp+60h] [ebp-4Ch] - char v55; // [esp+60h] [ebp-4Ch] - unsigned __int16 *v56; // [esp+68h] [ebp-44h] - char v57; // [esp+70h] [ebp-3Ch] - __int16 v58; // [esp+76h] [ebp-36h] - wchar_t v60; // [esp+88h] [ebp-24h] BYREF - __int16 v61; // [esp+8Ah] [ebp-22h] - __int16 v62; // [esp+8Ch] [ebp-20h] - __int16 v63; // [esp+8Eh] [ebp-1Eh] - - v10 = a9; - v52 = a3; - HIWORD(v56) = a5; - v12 = std::use_facet>((int)(a6 + 27)); - *a7 = 0; - if ( a9 != a10 ) - { - BYTE1(v56) = (_WORD)a5 == 0xFFFF; - while ( 1 ) - { - v18 = v52 == 0xFFFF && a2 != 0; - if ( v18 ) - { - v45 = (__int16 *)a2[2]; - if ( (unsigned int)v45 >= a2[3] ) - v46 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v46 = *v45; - if ( v46 == -1 ) - a2 = 0; - if ( v46 != -1 ) - v18 = 0; - } - else - { - v18 = v52 == 0xFFFF; - } - v19 = BYTE1(v56) & (a4 != 0); - if ( v19 ) - { - v41 = (__int16 *)a4[2]; - if ( (unsigned int)v41 >= a4[3] ) - { - v42 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v19 = BYTE1(v56) & (a4 != 0); - } - else - { - v42 = *v41; - } - v43 = v42 == -1; - v44 = 0; - if ( !v43 ) - v44 = a4; - a4 = v44; - if ( !v43 ) - v19 = 0; - if ( v19 == v18 ) - { -LABEL_81: - *a7 = 6; - return a2; - } - } - else if ( BYTE1(v56) == v18 ) - { - goto LABEL_81; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, *v10, 0) == 37 ) - { - v54 = v10 + 1; - if ( a10 == v10 + 1 ) - goto LABEL_114; - v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[1], 0); - v21 = v20; - if ( v20 == 69 || v20 == 79 ) - { - if ( a10 == v10 + 2 ) - goto LABEL_114; - (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[2]); - HIWORD(v39) = (unsigned int)(v10 + 2) >> 16; - LOWORD(v39) = v51; - v54 = v39; - HIWORD(v39) = HIWORD(v56); - LOWORD(v39) = HIWORD(a3); - v56 = v39; - HIWORD(v10) = HIWORD(v39); - v40 = std::use_facet>((int)this); - *a6 = 0; - v60 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v40 + 40))(v40, 37, v50); - HIWORD(v23) = v58; - if ( (_BYTE)v21 ) - { - v61 = v21; - v62 = (char)v51; - v63 = 0; -LABEL_27: - LOWORD(v10) = HIWORD(v56); - LODWORD(v49) = a2; - LOWORD(v23) = v52; - HIDWORD(v49) = v23; - v25 = std::time_get>::_M_extract_via_format( - v49, - a4, - (int)v10, - (int)a6, - a7, - a8, - &v60); - v24 = (_DWORD *)v25; - a2 = (_DWORD *)v25; - v52 = WORD2(v25); - BYTE4(v25) = WORD2(v25) == 0xFFFF; - v26 = BYTE4(v25) & ((_DWORD)v25 != 0); - if ( v26 ) - { - LODWORD(v25) = *(_DWORD *)(v25 + 8); - if ( (unsigned int)v25 >= v24[3] ) - LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); - else - LOWORD(v25) = *(_WORD *)v25; - BYTE4(v25) = 0; - a2 = 0; - if ( (_WORD)v25 == 0xFFFF ) - BYTE4(v25) = v26; - if ( (_WORD)v25 != 0xFFFF ) - a2 = v24; - } - if ( a4 && BYTE1(v56) ) - { - LODWORD(v25) = a4[2]; - if ( (unsigned int)v25 >= a4[3] ) - { - v57 = BYTE4(v25); - LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - BYTE4(v25) = v57; - } - else - { - LOWORD(v25) = *(_WORD *)v25; - } - LOBYTE(v25) = (_WORD)v25 == 0xFFFF; - } - else - { - LOBYTE(v25) = BYTE1(v56); - } - if ( (_BYTE)v25 == BYTE4(v25) ) - *a7 |= 2u; - v10 = v54 + 1; - if ( a10 == v54 + 1 ) - return a2; - goto LABEL_16; - } - v21 = (char)v51; - } - else - { - HIWORD(v10) = HIWORD(a5); - v22 = std::use_facet>((int)(a6 + 27)); - *a7 = 0; - v60 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v22 + 40))(v22, 37); - HIWORD(v23) = HIWORD(a3); - } - v61 = v21; - v62 = 0; - goto LABEL_27; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *v10) ) - break; - if ( a2 && v52 == 0xFFFF ) - { - v47 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v47 >= a2[3] ) - v13 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v13 = *v47; - if ( (_WORD)v13 == 0xFFFF ) - a2 = 0; - } - else - { - v13 = v52; - } - v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 32))(v12, v13); - if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 32))(v12, *v10) != v14 ) - { - if ( a2 && v52 == 0xFFFF ) - { - v48 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v48 >= a2[3] ) - v15 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v15 = *v48; - if ( (_WORD)v15 == 0xFFFF ) - a2 = 0; - } - else - { - v15 = v52; - } - v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 24))(v12, v15); - if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 24))(v12, *v10) != v16 ) - { -LABEL_114: - *a7 = 4; - return a2; - } - } - v17 = a2[2]; - if ( v17 >= a2[3] ) - (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); - else - a2[2] = v17 + 2; - ++v10; - v52 = -1; -LABEL_15: - if ( a10 == v10 ) - return a2; -LABEL_16: - if ( *a7 ) - return a2; - } - for ( ++v10; a10 != v10; ++v10 ) - { - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *v10) ) - break; - } - while ( 1 ) - { - v28 = v52 == 0xFFFF && a2 != 0; - if ( v28 ) - { - v32 = (__int16 *)a2[2]; - if ( (unsigned int)v32 >= a2[3] ) - v33 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v33 = *v32; - if ( v33 == -1 ) - a2 = 0; - if ( v33 != -1 ) - v28 = 0; - v29 = BYTE1(v56) & (a4 != 0); - if ( !v29 ) - { -LABEL_41: - if ( BYTE1(v56) == v28 ) - goto LABEL_15; - goto LABEL_42; - } - } - else - { - v28 = v52 == 0xFFFF; - v29 = BYTE1(v56) & (a4 != 0); - if ( !v29 ) - goto LABEL_41; - } - v34 = (__int16 *)a4[2]; - if ( (unsigned int)v34 >= a4[3] ) - { - v55 = v29; - v35 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v29 = v55; - } - else - { - v35 = *v34; - } - v36 = v35 == -1; - v37 = 0; - if ( !v36 ) - v37 = a4; - a4 = v37; - if ( !v36 ) - v29 = 0; - if ( v29 == v28 ) - goto LABEL_15; -LABEL_42: - if ( a2 && v52 == 0xFFFF ) - { - v38 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v38 >= a2[3] ) - v30 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v30 = *v38; - if ( (_WORD)v30 == 0xFFFF ) - a2 = 0; - } - else - { - v30 = v52; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v12 + 8))(v12, 32, v30) ) - goto LABEL_15; - v31 = a2[2]; - if ( v31 >= a2[3] ) - (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); - else - a2[2] = v31 + 2; - v52 = -1; - } - } - return a2; -} -// 4BCEE5: variable 'v51' is possibly undefined -// 4BCF27: variable 'v50' is possibly undefined -// 4BCF34: variable 'v58' is possibly undefined - -//----- (004BD150) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::get( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char a7, - char a8) -{ - void *v8; // eax - __int64 v9; // rax - _DWORD *v10; // ecx - _DWORD *v11; // ebp - _BOOL2 v12; // bx - bool v13; // si - bool v14; // cl - __int16 *v16; // eax - __int16 v17; // ax - __int16 *v18; // eax - __int16 v19; // ax - int v20; // [esp+34h] [ebp-3Ch] - wchar_t v21; // [esp+4Ch] [ebp-24h] BYREF - __int16 v22; // [esp+4Eh] [ebp-22h] - __int16 v23; // [esp+50h] [ebp-20h] - __int16 v24; // [esp+52h] [ebp-1Eh] - - v8 = std::use_facet>(a4 + 108); - *a5 = 0; - v21 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v8 + 40))(v8, 37); - if ( a8 ) - { - v23 = a7; - v22 = a8; - v24 = 0; - } - else - { - v22 = a7; - v23 = 0; - } - v9 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v21); - v10 = (_DWORD *)v9; - v11 = (_DWORD *)v9; - v12 = WORD2(v9) == 0xFFFF; - v13 = v12 && (_DWORD)v9 != 0; - if ( v13 ) - { - v18 = *(__int16 **)(v9 + 8); - if ( (unsigned int)v18 >= v10[3] ) - { - v20 = (int)v10; - v19 = (*(int (**)(void))(*v10 + 36))(); - v10 = (_DWORD *)v20; - } - else - { - v19 = *v18; - } - LOBYTE(v12) = 0; - v11 = 0; - if ( v19 == -1 ) - LOBYTE(v12) = v13; - if ( v19 != -1 ) - v11 = v10; - } - v14 = (_WORD)a3 == 0xFFFF; - if ( a2 && (_WORD)a3 == 0xFFFF ) - { - v16 = (__int16 *)a2[2]; - if ( (unsigned int)v16 >= a2[3] ) - v17 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v17 = *v16; - v14 = v17 == -1; - } - if ( v12 == v14 ) - *a5 |= 2u; - return v11; -} - -//----- (004BD310) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char a7, - char a8) -{ - void *v8; // eax - __int64 v9; // rax - _DWORD *v10; // ecx - _DWORD *v11; // ebp - _BOOL2 v12; // bx - bool v13; // si - bool v14; // cl - __int16 *v16; // eax - __int16 v17; // ax - __int16 *v18; // eax - __int16 v19; // ax - int v20; // [esp+34h] [ebp-3Ch] - wchar_t v21; // [esp+4Ch] [ebp-24h] BYREF - __int16 v22; // [esp+4Eh] [ebp-22h] - __int16 v23; // [esp+50h] [ebp-20h] - __int16 v24; // [esp+52h] [ebp-1Eh] - - v8 = std::use_facet>(a4 + 108); - *a5 = 0; - v21 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v8 + 40))(v8, 37); - if ( a8 ) - { - v23 = a7; - v22 = a8; - v24 = 0; - } - else - { - v22 = a7; - v23 = 0; - } - v9 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v21); - v10 = (_DWORD *)v9; - v11 = (_DWORD *)v9; - v12 = WORD2(v9) == 0xFFFF; - v13 = v12 && (_DWORD)v9 != 0; - if ( v13 ) - { - v18 = *(__int16 **)(v9 + 8); - if ( (unsigned int)v18 >= v10[3] ) - { - v20 = (int)v10; - v19 = (*(int (**)(void))(*v10 + 36))(); - v10 = (_DWORD *)v20; - } - else - { - v19 = *v18; - } - LOBYTE(v12) = 0; - v11 = 0; - if ( v19 == -1 ) - LOBYTE(v12) = v13; - if ( v19 != -1 ) - v11 = v10; - } - v14 = (_WORD)a3 == 0xFFFF; - if ( a2 && (_WORD)a3 == 0xFFFF ) - { - v16 = (__int16 *)a2[2]; - if ( (unsigned int)v16 >= a2[3] ) - v17 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v17 = *v16; - v14 = v17 == -1; - } - if ( v12 == v14 ) - *a5 |= 2u; - return v11; -} - -//----- (004BD4D0) -------------------------------------------------------- -int __fastcall std::time_get>::get_date(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); -} - -//----- (004BD4E0) -------------------------------------------------------- -int __fastcall std::time_get>::get_time(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); -} - -//----- (004BD4F0) -------------------------------------------------------- -int __fastcall std::time_get>::get_year(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); -} - -//----- (004BD500) -------------------------------------------------------- -_DWORD *__thiscall std::time_put>::put( - void *this, - _DWORD *a2, - int a3, - int a4, - char a5, - int a6, - unsigned __int8 *a7, - unsigned __int8 *a8) -{ - int v8; // ebp - unsigned __int8 *v9; // ebx - _BYTE *v10; // eax - _BYTE *v11; // esi - int v12; // edx - unsigned __int8 *v13; // edi - unsigned __int8 v14; // al - unsigned __int8 v15; // cl - int (__stdcall *v16)(unsigned __int8, int); // eax - int v17; // edx - signed __int8 v18; // al - unsigned __int8 v19; // cl - int (__stdcall *v20)(unsigned __int8, int); // eax - int v21; // ecx - int v22; // ebx - int v23; // edx - int v24; // ebx - __int64 v25; // rax - int v27; // edx - _BYTE *v28; // eax - int v29; // ecx - char v30; // dl - int (__stdcall *v31)(unsigned __int8, int); // eax - char v32; // al - int v33; // [esp+18h] [ebp-44h] - char v34; // [esp+27h] [ebp-35h] - int v37; // [esp+34h] [ebp-28h] - int v38; // [esp+34h] [ebp-28h] - int v39; // [esp+34h] [ebp-28h] - - v8 = a3; - v9 = a7; - v34 = a3; - v10 = std::use_facet>(a4 + 108); - if ( a7 != a8 ) - { - v11 = v10; - while ( 1 ) - { - v12 = *v9; - v13 = v9 + 1; - v14 = v11[v12 + 285]; - v15 = *v9; - if ( !v14 ) - { - v16 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v11 + 32); - if ( v16 != std::ctype::do_narrow ) - { - v38 = *v9; - v15 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v16)(v11, (char)v12, 0); - v12 = v38; - } - if ( !v15 ) - goto LABEL_3; - v11[v12 + 285] = v15; - v14 = v15; - } - if ( v14 == 37 ) - { - if ( a8 == v13 ) - return a2; - v17 = v9[1]; - v18 = v11[v17 + 285]; - v19 = v9[1]; - if ( !v18 ) - { - v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v11 + 32); - if ( v20 != std::ctype::do_narrow ) - { - v39 = v9[1]; - v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v11, (char)v17, 0); - v17 = v39; - } - if ( !v19 ) - { - v21 = 0; - v22 = 0; - goto LABEL_21; - } - v11[v17 + 285] = v19; - v18 = v19; - } - if ( v18 == 69 || v18 == 79 ) - { - v13 = v9 + 2; - if ( a8 == v9 + 2 ) - return a2; - v29 = v9[2]; - v22 = v18; - v37 = v29; - v30 = v29; - v21 = (char)v11[v29 + 285]; - if ( !(_BYTE)v21 ) - { - v21 = v30; - v31 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v11 + 32); - if ( v31 != std::ctype::do_narrow ) - { - v32 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v31)(v11, v30, 0); - v21 = v32; - v30 = v32; - } - if ( v30 ) - v11[v37 + 285] = v30; - } - } - else - { - v21 = v18; - v22 = 0; - } -LABEL_21: - v23 = v8; - LOBYTE(v23) = v34; - v33 = v22; - v24 = v23; - v25 = ((__int64 (__thiscall *)(void *, _DWORD *, int, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( - this, - a2, - v23, - a4, - a5, - a6, - v21, - v33); - LOBYTE(v24) = BYTE4(v25); - v8 = v24; - v9 = v13 + 1; - a2 = (_DWORD *)v25; - v34 = BYTE4(v25); - if ( a8 == v13 + 1 ) - return a2; - } - else - { -LABEL_3: - if ( v34 ) - { - ++v9; - } - else - { - v27 = *v9; - v28 = (_BYTE *)a2[5]; - if ( (unsigned int)v28 >= a2[6] ) - { - ++v9; - v34 = (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v27) == -1; - } - else - { - *v28 = v27; - ++a2[5]; - ++v9; - } - } - if ( a8 == v9 ) - return a2; - } - } - } - return a2; -} - -//----- (004BD790) -------------------------------------------------------- -int __thiscall std::time_put>::put( - void *this, - int a2, - int a3, - int a4, - char a5, - int a6, - char a7, - char a8) -{ - return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( - this, - a2, - a3, - a4, - a5, - a6, - a7, - a8); -} - -//----- (004BD7B0) -------------------------------------------------------- -int __stdcall std::time_put>::do_put( - int a1, - char a2, - int a3, - int a4, - struct tm *a5, - char a6, - char a7) -{ - _BYTE *v7; // ebx - const char **v8; // eax - const char **v9; // edx - char v10; // cl - size_t v11; // eax - int (__stdcall *v13)(unsigned __int8); // eax - const char **v14; // [esp+1Ch] [ebp-B0h] - char Format; // [esp+2Ch] [ebp-A0h] BYREF - char v16; // [esp+2Dh] [ebp-9Fh] - char v17; // [esp+2Eh] [ebp-9Eh] - char v18; // [esp+2Fh] [ebp-9Dh] - char Buffer[156]; // [esp+30h] [ebp-9Ch] BYREF - - v7 = std::use_facet>(a3 + 108); - v8 = (const char **)std::use_facet>(a3 + 108); - v9 = v8; - if ( v7[28] ) - { - v10 = v7[66]; - } - else - { - v14 = v8; - std::ctype::_M_widen_init((int)v7); - v9 = v14; - v10 = 37; - v13 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v7 + 24); - if ( v13 != std::ctype::do_widen ) - { - v10 = ((int (__fastcall *)(_BYTE *, const char **, int))v13)(v7, v14, 37); - v9 = v14; - } - } - Format = v10; - if ( a7 ) - { - v16 = a7; - v18 = 0; - v17 = a6; - } - else - { - v17 = 0; - v16 = a6; - } - std::__timepunct::_M_put(v9, Buffer, 0x80u, &Format, a5); - v11 = strlen(Buffer); - if ( !a2 ) - (*(int (__thiscall **)(int, char *, size_t))(*(_DWORD *)a1 + 48))(a1, Buffer, v11); - return a1; -} - -//----- (004BD900) -------------------------------------------------------- -_DWORD *__thiscall std::time_put>::put( - void *this, - _DWORD *a2, - int a3, - int a4, - unsigned __int16 a5, - int a6, - unsigned __int16 *a7, - unsigned __int16 *a8) -{ - int v8; // ebp - unsigned __int16 *v9; // ebx - void *v10; // eax - void *v11; // esi - unsigned __int16 *v12; // edi - char v13; // al - int v14; // edx - int v15; // eax - int v16; // ecx - int v17; // ebp - __int64 v18; // rax - int v19; // ecx - int v21; // edx - _WORD *v22; // eax - char v23; // cl - char v26; // [esp+46h] [ebp-26h] - char v27; // [esp+47h] [ebp-25h] - - v8 = a3; - v9 = a7; - v26 = a3; - v10 = std::use_facet>(a4 + 108); - if ( a7 != a8 ) - { - v11 = v10; - do - { - while ( 1 ) - { - v12 = v9 + 1; - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, *v9, 0) != 37 ) - break; - if ( a8 == v12 ) - return a2; - v13 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[1], 0); - v14 = v13; - if ( v13 == 69 || (v15 = 0, (_BYTE)v14 == 79) ) - { - v27 = v14; - v12 = v9 + 2; - if ( a8 == v9 + 2 ) - return a2; - v23 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[2], 0); - v15 = v27; - v14 = v23; - } - v16 = v8; - LOBYTE(v16) = v26; - v17 = v16; - v18 = ((__int64 (__thiscall *)(void *, _DWORD *, int, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( - this, - a2, - v16, - a4, - a5, - a6, - v14, - v15); - v19 = v17; - v9 = v12 + 1; - LOBYTE(v19) = BYTE4(v18); - v8 = v19; - a2 = (_DWORD *)v18; - v26 = BYTE4(v18); - if ( a8 == v12 + 1 ) - return a2; - } - if ( v26 ) - { - ++v9; - } - else - { - v21 = *v9; - v22 = (_WORD *)a2[5]; - if ( (unsigned int)v22 >= a2[6] ) - { - LOWORD(v21) = (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v21); - } - else - { - *v22 = v21; - a2[5] = v22 + 1; - } - ++v9; - v26 = (_WORD)v21 == 0xFFFF; - } - } - while ( a8 != v9 ); - } - return a2; -} - -//----- (004BDAC0) -------------------------------------------------------- -int __thiscall std::time_put>::put( - void *this, - int a2, - int a3, - int a4, - unsigned __int16 a5, - int a6, - char a7, - char a8) -{ - return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( - this, - a2, - a3, - a4, - a5, - a6, - a7, - a8); -} - -//----- (004BDAE0) -------------------------------------------------------- -int __stdcall std::time_put>::do_put( - int a1, - char a2, - int a3, - int a4, - struct tm *a5, - char a6, - char a7) -{ - const char **v7; // ebx - size_t v8; // eax - void *v10; // [esp+1Ch] [ebp-134h] - wchar_t Format; // [esp+2Ch] [ebp-124h] BYREF - __int16 v12; // [esp+2Eh] [ebp-122h] - __int16 v13; // [esp+30h] [ebp-120h] - __int16 v14; // [esp+32h] [ebp-11Eh] - wchar_t Buffer[142]; // [esp+34h] [ebp-11Ch] BYREF - - v10 = std::use_facet>(a3 + 108); - v7 = (const char **)std::use_facet>(a3 + 108); - Format = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 37); - if ( a7 ) - { - v13 = a6; - v12 = a7; - v14 = 0; - } - else - { - v12 = a6; - v13 = 0; - } - std::__timepunct::_M_put(v7, Buffer, 0x80u, &Format, a5); - v8 = wcslen(Buffer); - if ( !a2 ) - (*(int (__thiscall **)(int, wchar_t *, size_t))(*(_DWORD *)a1 + 48))(a1, Buffer, v8); - return a1; -} - -//----- (004BDC00) -------------------------------------------------------- -const char *std::bad_alloc::what() -{ - return "std::bad_alloc"; -} - -//----- (004BDC10) -------------------------------------------------------- -int __fastcall std::ios::exceptions(int a1) -{ - return *(_DWORD *)(a1 + 16); -} - -//----- (004BDC20) -------------------------------------------------------- -int __fastcall std::ios::bad(int a1) -{ - return *(_DWORD *)(a1 + 20) & 1; -} - -//----- (004BDC30) -------------------------------------------------------- -int __fastcall std::ios::eof(int a1) -{ - return (*(_DWORD *)(a1 + 20) >> 1) & 1; -} - -//----- (004BDC40) -------------------------------------------------------- -int __fastcall std::ios::tie(int a1) -{ - return *(_DWORD *)(a1 + 112); -} - -//----- (004BDC50) -------------------------------------------------------- -bool __fastcall std::ios::fail(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) != 0; -} - -//----- (004BDC60) -------------------------------------------------------- -int __fastcall std::ios::fill(int a1) -{ - int result; // eax - _BYTE *v3; // esi - int (__stdcall *v4)(unsigned __int8); // edx - - if ( *(_BYTE *)(a1 + 117) ) - return *(unsigned __int8 *)(a1 + 116); - v3 = *(_BYTE **)(a1 + 124); - if ( !v3 ) - std::__throw_bad_cast(); - if ( v3[28] ) - { - result = (unsigned __int8)v3[61]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)(a1 + 124)); - v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); - result = 32; - if ( v4 != std::ctype::do_widen ) - result = ((int (__thiscall *)(_BYTE *, int))v4)(v3, 32); - } - *(_BYTE *)(a1 + 116) = result; - *(_BYTE *)(a1 + 117) = 1; - return result; -} - -//----- (004BDCD0) -------------------------------------------------------- -bool __fastcall std::ios::good(int a1) -{ - return *(_DWORD *)(a1 + 20) == 0; -} - -//----- (004BDCE0) -------------------------------------------------------- -int __fastcall std::ios::rdbuf(int a1) -{ - return *(_DWORD *)(a1 + 120); -} - -//----- (004BDCF0) -------------------------------------------------------- -int __thiscall std::ios::widen(int *this, int a2) -{ - _BYTE *v2; // ebx - int result; // eax - int (__stdcall *v4)(unsigned __int8); // edx - - v2 = (_BYTE *)this[31]; - if ( !v2 ) - std::__throw_bad_cast(); - if ( v2[28] ) - return (unsigned __int8)v2[(unsigned __int8)a2 + 29]; - std::ctype::_M_widen_init(this[31]); - v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); - result = a2; - if ( v4 != std::ctype::do_widen ) - return ((int (__thiscall *)(_BYTE *, _DWORD))v4)(v2, (char)a2); - return result; -} - -//----- (004BDD50) -------------------------------------------------------- -int __thiscall std::ios::narrow(_DWORD *this, int a2, int a3) -{ - int v3; // ebx - int result; // eax - int v5; // ecx - int (__stdcall *v6)(unsigned __int8, int); // eax - - v3 = this[31]; - if ( !v3 ) - std::__throw_bad_cast(); - result = *(unsigned __int8 *)(v3 + (unsigned __int8)a2 + 285); - if ( !(_BYTE)result ) - { - v5 = a2; - v6 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v3 + 32); - if ( v6 != std::ctype::do_narrow ) - v5 = ((int (__thiscall *)(int, _DWORD, _DWORD))v6)(v3, (char)a2, (char)a3); - result = a3; - if ( (_BYTE)a3 != (_BYTE)v5 ) - { - *(_BYTE *)(v3 + (unsigned __int8)a2 + 285) = v5; - return v5; - } - } - return result; -} - -//----- (004BDDC0) -------------------------------------------------------- -int __fastcall std::ios::rdstate(int a1) -{ - return *(_DWORD *)(a1 + 20); -} - -//----- (004BDDD0) -------------------------------------------------------- -int __fastcall std::ios::operator void *(int a1) -{ - int result; // eax - - result = 0; - if ( (*(_BYTE *)(a1 + 20) & 5) == 0 ) - return a1; - return result; -} - -//----- (004BDDE0) -------------------------------------------------------- -bool __fastcall std::ios::operator bool(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) == 0; -} - -//----- (004BDDF0) -------------------------------------------------------- -bool __fastcall std::ios::operator!(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) != 0; -} - -//----- (004BDE00) -------------------------------------------------------- -int __fastcall std::wios::exceptions(int a1) -{ - return *(_DWORD *)(a1 + 16); -} - -//----- (004BDE10) -------------------------------------------------------- -int __fastcall std::wios::bad(int a1) -{ - return *(_DWORD *)(a1 + 20) & 1; -} - -//----- (004BDE20) -------------------------------------------------------- -int __fastcall std::wios::eof(int a1) -{ - return (*(_DWORD *)(a1 + 20) >> 1) & 1; -} - -//----- (004BDE30) -------------------------------------------------------- -int __fastcall std::wios::tie(int a1) -{ - return *(_DWORD *)(a1 + 112); -} - -//----- (004BDE40) -------------------------------------------------------- -bool __fastcall std::wios::fail(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) != 0; -} - -//----- (004BDE50) -------------------------------------------------------- -int __fastcall std::wios::fill(int a1) -{ - int result; // eax - int v3; // ecx - - if ( *(_BYTE *)(a1 + 118) ) - return *(unsigned __int16 *)(a1 + 116); - v3 = *(_DWORD *)(a1 + 124); - if ( !v3 ) - std::__throw_bad_cast(); - result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 32); - *(_BYTE *)(a1 + 118) = 1; - *(_WORD *)(a1 + 116) = result; - return result; -} - -//----- (004BDE90) -------------------------------------------------------- -bool __fastcall std::wios::good(int a1) -{ - return *(_DWORD *)(a1 + 20) == 0; -} - -//----- (004BDEA0) -------------------------------------------------------- -int __fastcall std::wios::rdbuf(int a1) -{ - return *(_DWORD *)(a1 + 120); -} - -//----- (004BDEB0) -------------------------------------------------------- -int __thiscall std::wios::widen(_DWORD *this, char a2) -{ - int v2; // ecx - - v2 = this[31]; - if ( !v2 ) - std::__throw_bad_cast(); - return (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); -} - -//----- (004BDEE0) -------------------------------------------------------- -int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16 a2, char a3) -{ - int v3; // ecx - - v3 = this[31]; - if ( !v3 ) - std::__throw_bad_cast(); - return (*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v3 + 48))(v3, a2, a3); -} - -//----- (004BDF20) -------------------------------------------------------- -int __fastcall std::wios::rdstate(int a1) -{ - return *(_DWORD *)(a1 + 20); -} - -//----- (004BDF30) -------------------------------------------------------- -int __fastcall std::wios::operator void *(int a1) -{ - int result; // eax - - result = 0; - if ( (*(_BYTE *)(a1 + 20) & 5) == 0 ) - return a1; - return result; -} - -//----- (004BDF40) -------------------------------------------------------- -bool __fastcall std::wios::operator bool(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) == 0; -} - -//----- (004BDF50) -------------------------------------------------------- -bool __fastcall std::wios::operator!(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) != 0; -} - -//----- (004BDF60) -------------------------------------------------------- -const char *_ZGTtNKSt9exception4whatEv() -{ - return "std::exception"; -} - -//----- (004BDF70) -------------------------------------------------------- -unsigned __int64 __stdcall std::money_get>::_M_extract( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // al - int v7; // eax - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - _BYTE *v11; // eax - int v12; // eax - int v13; // eax - _DWORD *v14; // ecx - int v15; // eax - unsigned int v16; // eax - char v17; // al - char v18; // al - _BYTE *v19; // eax - char v20; // al - char v21; // bl - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - int v25; // eax - int v26; // eax - _BYTE *v27; // eax - int v28; // eax - int v29; // eax - _DWORD *v30; // ecx - char v31; // al - int v32; // eax - unsigned __int8 *v33; // eax - int v34; // edx - char *v35; // eax - char v36; // al - int v38; // edx - std::string *v39; // eax - unsigned int first_not_of; // eax - unsigned int v41; // edx - int v42; // eax - _WORD *v43; // eax - int *v44; // eax - unsigned int v45; // [esp+4h] [ebp-94h] - unsigned int v46; // [esp+4h] [ebp-94h] - std::string *v47; // [esp+4h] [ebp-94h] - unsigned int v48; // [esp+8h] [ebp-90h] - char *v49; // [esp+8h] [ebp-90h] - unsigned int v50; // [esp+Ch] [ebp-8Ch] - char v51; // [esp+10h] [ebp-88h] - std::locale::_Impl *v52; // [esp+14h] [ebp-84h] - char v53; // [esp+18h] [ebp-80h] - _DWORD *v54; // [esp+1Ch] [ebp-7Ch] - unsigned int v55; // [esp+20h] [ebp-78h] - int v56; // [esp+28h] [ebp-70h] - bool v57; // [esp+2Ch] [ebp-6Ch] - char v58; // [esp+2Dh] [ebp-6Bh] - char v59; // [esp+2Eh] [ebp-6Ah] - char v60; // [esp+2Fh] [ebp-69h] - char v61; // [esp+30h] [ebp-68h] - int v62; // [esp+30h] [ebp-68h] - unsigned int v63; // [esp+30h] [ebp-68h] - char v64; // [esp+30h] [ebp-68h] - char v65; // [esp+30h] [ebp-68h] - char v66; // [esp+34h] [ebp-64h] - int v67; // [esp+34h] [ebp-64h] - char v68; // [esp+34h] [ebp-64h] - char v69; // [esp+34h] [ebp-64h] - char v70; // [esp+34h] [ebp-64h] - int v71; // [esp+34h] [ebp-64h] - unsigned int v72; // [esp+34h] [ebp-64h] - int *Buf; // [esp+38h] [ebp-60h] - unsigned int Bufa; // [esp+38h] [ebp-60h] - std::locale::facet *v75; // [esp+3Ch] [ebp-5Ch] - std::locale::facet *v76; // [esp+3Ch] [ebp-5Ch] - int lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - std::string *lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - char lpuexcptd; // [esp+40h] [ebp-58h] - std::string *lpuexcpte; // [esp+40h] [ebp-58h] - char lpuexcptf; // [esp+40h] [ebp-58h] - char lpuexcptg; // [esp+40h] [ebp-58h] - char lpuexcpth; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcpti; // [esp+40h] [ebp-58h] - int v87; // [esp+48h] [ebp-50h] - char v88[5]; // [esp+83h] [ebp-15h] BYREF - int v89; // [esp+88h] [ebp-10h] BYREF - int v90[2]; // [esp+8Ch] [ebp-Ch] - - lpuexcpt = a4 + 108; - v54 = std::use_facet>(a4 + 108); - v75 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - Buf = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v75); - v87 = *Buf; - if ( !*Buf ) - { - v43 = operator new(0x44u); - *(_DWORD *)v43 = &off_5606D4; - v43[8] = 0; - *((_DWORD *)v43 + 1) = 0; - *((_DWORD *)v43 + 2) = 0; - *((_DWORD *)v43 + 3) = 0; - *((_BYTE *)v43 + 18) = 0; - *((_DWORD *)v43 + 5) = 0; - *((_DWORD *)v43 + 6) = 0; - *((_DWORD *)v43 + 7) = 0; - *((_DWORD *)v43 + 8) = 0; - *((_DWORD *)v43 + 9) = 0; - *((_DWORD *)v43 + 10) = 0; - *((_DWORD *)v43 + 11) = 0; - *((_DWORD *)v43 + 12) = 0; - *((_DWORD *)v43 + 13) = 0; - *((_BYTE *)v43 + 67) = 0; - v52 = (std::locale::_Impl *)v43; - std::__moneypunct_cache::_M_cache((int)v43, lpuexcpt); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v52, v75, v48); - v87 = *Buf; - } - if ( *(_DWORD *)(v87 + 32) ) - v57 = *(_DWORD *)(v87 + 40) != 0; - else - v57 = 0; - *(_DWORD *)&v88[1] = std::string::_S_construct(0, 0); - if ( *(_BYTE *)(v87 + 16) ) - std::string::reserve((int *)&v88[1], (std::string *)0x20, v45); - v49 = v88; - v89 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v89, (std::string *)0x20, v46); - v60 = 0; - v56 = 0; - v76 = 0; - v90[0] = *(_DWORD *)(v87 + 52); - v53 = 0; - v55 = 0; - v58 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)v90 + v56) ) - { - case 0: - v66 = 1; - goto LABEL_10; - case 1: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) - || (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 0x20) == 0 ) - { - v66 = 0; - if ( v56 == 3 ) - { -LABEL_11: - v6 = v66 & (v55 > 1); - goto LABEL_12; - } - } - else - { - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v66 = 1; -LABEL_10: - if ( v56 == 3 ) - goto LABEL_11; - } - v29 = HIDWORD(a1); - v30 = (_DWORD *)a1; - while ( 1 ) - { - lpuexcpth = v29 == -1; - v65 = lpuexcpth & (v30 != 0); - if ( v65 ) - { - lpuexcpth = 0; - if ( v30[2] >= v30[3] ) - { - lpuexcpth = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v30 + 36))(v30) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpth = v65; - } - } - } - v31 = a3 == -1; - v64 = v31 & (a2 != 0); - if ( v64 ) - { - v31 = 0; - if ( a2[2] >= a2[3] ) - { - v38 = (*(int (**)(void))(*a2 + 36))(); - v31 = 0; - if ( v38 == -1 ) - { - a2 = 0; - v31 = v64; - } - } - } - if ( lpuexcpth == v31 ) - goto LABEL_113; - v30 = (_DWORD *)a1; - LOBYTE(v32) = BYTE4(a1); - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v33 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - if ( (*(_BYTE *)(v54[6] + 2 * *v33) & 0x20) == 0 ) - goto LABEL_113; -LABEL_88: - v30[2] = v33 + 1; - goto LABEL_89; - } - v32 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v32 == -1 ) - LODWORD(a1) = 0; - } - if ( (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) - goto LABEL_113; - v30 = (_DWORD *)a1; - v33 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - goto LABEL_88; - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v30 = (_DWORD *)a1; -LABEL_89: - HIDWORD(a1) = -1; - v29 = -1; - } - case 2: - if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) - goto LABEL_65; - lpuexcptf = v56 == 0 || v55 > 1; - if ( lpuexcptf ) - goto LABEL_65; - if ( v56 == 1 ) - { - if ( v57 || LOBYTE(v90[0]) == 3 || BYTE2(v90[0]) == 1 ) - { -LABEL_65: - v24 = (_DWORD *)a1; - v72 = 0; - v63 = *(_DWORD *)(v87 + 24); - v25 = HIDWORD(a1); - while ( 2 ) - { - lpuexcptg = v25 == -1; - v59 = lpuexcptg & (v24 != 0); - if ( v59 ) - { - lpuexcptg = 0; - if ( v24[2] >= v24[3] ) - { - lpuexcptg = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptg = v59; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v28 = (*(int (**)(void))(*a2 + 36))(); - lpuexcptg ^= v28 == -1; - if ( v28 == -1 ) - a2 = 0; - } - } - else - { - lpuexcptg ^= a3 == -1; - } - lpuexcptf = (v72 < v63) & lpuexcptg; - if ( !lpuexcptf ) - { - if ( v72 == v63 ) - { -LABEL_160: - v66 = 1; - goto LABEL_114; - } -LABEL_143: - if ( !v72 ) - { - v66 = (*(_BYTE *)(a4 + 13) & 2) == 0; - lpuexcptf = (*(_BYTE *)(a4 + 13) & 2) != 0; - goto LABEL_114; - } -LABEL_107: - *a5 |= 4u; - goto LABEL_108; - } - LOBYTE(v26) = BYTE4(a1); - v24 = (_DWORD *)a1; - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v27 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v27 >= *(_DWORD *)(a1 + 12) ) - { - v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v26 == -1 ) - LODWORD(a1) = 0; - goto LABEL_69; - } - if ( *v27 != *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) ) - goto LABEL_143; -LABEL_71: - v24[2] = v27 + 1; - } - else - { -LABEL_69: - if ( *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) != (_BYTE)v26 ) - goto LABEL_143; - v24 = (_DWORD *)a1; - v27 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v27 < *(_DWORD *)(a1 + 12) ) - goto LABEL_71; - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v24 = (_DWORD *)a1; - } - ++v72; - v25 = -1; - HIDWORD(a1) = -1; - continue; - } - } - v23 = 2; -LABEL_116: - v56 = v23; - continue; - } - v66 = 1; - if ( v56 == 2 ) - { - if ( HIBYTE(v90[0]) == 4 ) - goto LABEL_65; - v23 = 3; - if ( HIBYTE(v90[0]) == 3 && v57 ) - goto LABEL_65; - goto LABEL_116; - } -LABEL_114: - v23 = v56 + 1; - if ( v56 + 1 <= 3 && !lpuexcptf ) - goto LABEL_116; - v6 = v66 & (v55 > 1); -LABEL_12: - if ( !v6 ) - { - if ( v66 ) - { - if ( *(_DWORD *)(v89 - 12) > 1u ) - goto LABEL_161; - goto LABEL_149; - } - goto LABEL_107; - } - if ( v58 ) - v7 = *(_DWORD *)(v87 + 36); - else - v7 = *(_DWORD *)(v87 + 28); - v67 = v7; - v8 = HIDWORD(a1); - v9 = (_DWORD *)a1; - Bufa = 1; - while ( 2 ) - { - lpuexcpta = v8 == -1; - v61 = lpuexcpta & (v9 != 0); - if ( v61 ) - { - lpuexcpta = 0; - if ( v9[2] >= v9[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = v61; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v12 = (*(int (**)(void))(*a2 + 36))(); - lpuexcpta ^= v12 == -1; - if ( v12 == -1 ) - a2 = 0; - } - } - else - { - lpuexcpta ^= a3 == -1; - } - if ( Bufa < v55 && lpuexcpta ) - { - v9 = (_DWORD *)a1; - LOBYTE(v10) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_21; - v11 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v11 < *(_DWORD *)(a1 + 12) ) - { - if ( *v11 != *(_BYTE *)(v67 + Bufa) ) - goto LABEL_107; - goto LABEL_23; - } - v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v10 == -1 ) - LODWORD(a1) = 0; -LABEL_21: - if ( *(_BYTE *)(v67 + Bufa) != (_BYTE)v10 ) - goto LABEL_107; - v9 = (_DWORD *)a1; - v11 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v9 = (_DWORD *)a1; - } - else - { -LABEL_23: - v9[2] = v11 + 1; - } - ++Bufa; - v8 = -1; - HIDWORD(a1) = -1; - continue; - } - break; - } - if ( Bufa != v55 ) - goto LABEL_107; - if ( *(_DWORD *)(v89 - 12) <= 1u ) - goto LABEL_149; -LABEL_161: - first_not_of = std::string::find_first_not_of(&v89, (std::string *)0x30, 0, (unsigned int)v49); - if ( first_not_of ) - { - v41 = *(_DWORD *)(v89 - 12); - if ( first_not_of == -1 ) - first_not_of = v41 - 1; - if ( first_not_of > v41 ) - first_not_of = *(_DWORD *)(v89 - 12); - std::string::_M_mutate((char **)&v89, 0, first_not_of, 0, v50); - } -LABEL_149: - if ( v58 ) - { - v44 = (int *)v89; - if ( *(int *)(v89 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v89); - v44 = (int *)v89; - } - if ( *(_BYTE *)v44 != 48 ) - { - if ( *(v44 - 1) >= 0 ) - std::string::_M_leak_hard((char **)&v89); - std::string::_M_replace_aux((char **)&v89, 0, 0, 1u, 45, v51); - *(_DWORD *)(v89 - 4) = -1; - } - } - if ( *(_DWORD *)(*(_DWORD *)&v88[1] - 12) ) - { - v39 = (std::string *)(char)v76; - if ( v60 ) - v39 = (std::string *)v53; - std::string::push_back((int *)&v88[1], v39, (char)v47); - if ( !(unsigned __int8)std::__verify_grouping( - *(char **)(v87 + 8), - *(_DWORD *)(v87 + 12), - (const char **)&v88[1]) ) - *a5 |= 4u; - } - if ( v60 && *(std::locale::facet **)(v87 + 44) != v76 ) - goto LABEL_107; - std::string::swap(a6, (std::string *)&v89, v47); -LABEL_108: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - lpuexcpti = a1; - std::string::_Rep::_M_dispose((volatile signed __int32 *)(v89 - 12), (int)v88); - std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v88[1] - 12), (int)&v89); - return lpuexcpti; - case 3: - if ( *(_DWORD *)(v87 + 32) ) - { - lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptf && **(_BYTE **)(v87 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v55 = *(_DWORD *)(v87 + 32); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v66 = 1; - goto LABEL_114; - } - if ( !*(_DWORD *)(v87 + 40) ) - { - if ( !*(_DWORD *)(v87 + 32) ) - goto LABEL_57; - goto LABEL_125; - } - } - else if ( !*(_DWORD *)(v87 + 40) ) - { - goto LABEL_57; - } - lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptf && **(_BYTE **)(v87 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v55 = *(_DWORD *)(v87 + 40); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v66 = 1; - v58 = 1; - goto LABEL_114; - } - if ( !*(_DWORD *)(v87 + 32) || *(_DWORD *)(v87 + 40) ) - { -LABEL_57: - lpuexcptf = v57; - v66 = !v57; - goto LABEL_114; - } -LABEL_125: - lpuexcptf = 0; - v66 = 1; - v58 = 1; - goto LABEL_114; - case 4: - v13 = HIDWORD(a1); - v14 = (_DWORD *)a1; - while ( 2 ) - { - lpuexcptc = v13 == -1; - v69 = lpuexcptc & (v14 != 0); - if ( v69 ) - { - lpuexcptc = 0; - if ( v14[2] >= v14[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v14 + 36))(v14) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v69; - } - } - } - v17 = a3 == -1; - v70 = v17 & (a2 != 0); - if ( v70 ) - { - v17 = 0; - if ( a2[2] >= a2[3] ) - { - v34 = (*(int (**)(void))(*a2 + 36))(); - v17 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v17 = v70; - } - } - } - if ( lpuexcptc == v17 ) - goto LABEL_105; - v18 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_43; - v35 = *(char **)(a1 + 8); - if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) - { - v42 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcptd = v42; - if ( v42 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptd = -1; - } - } - else - { - v18 = *v35; -LABEL_43: - lpuexcptd = v18; - } - v19 = memchr((const void *)(v87 + 57), lpuexcptd, 0xAu); - if ( v19 ) - { - v68 = v19[(_DWORD)std::money_base::_S_atoms - 56 - v87]; - v62 = *(_DWORD *)(v89 - 12); - lpuexcptb = (std::string *)(v62 + 1); - if ( (unsigned int)(v62 + 1) > *(_DWORD *)(v89 - 8) || *(int *)(v89 - 4) > 0 ) - std::string::reserve(&v89, lpuexcptb, (unsigned int)v47); - v76 = (std::locale::facet *)((char *)v76 + 1); - *(_BYTE *)(v89 + *(_DWORD *)(v89 - 12)) = v68; - v15 = v89; - *(_DWORD *)(v89 - 12) = lpuexcptb; - *(_DWORD *)(v15 - 4) = 0; - *(_BYTE *)(v15 + v62 + 1) = 0; -LABEL_36: - v14 = (_DWORD *)a1; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 < *(_DWORD *)(a1 + 12) ) - { -LABEL_37: - v14[2] = v16 + 1; -LABEL_38: - HIDWORD(a1) = -1; - v13 = -1; - continue; - } -LABEL_54: - (*(void (__fastcall **)(_DWORD *))(*v14 + 40))(v14); - v14 = (_DWORD *)a1; - goto LABEL_38; - } - break; - } - v66 = v60 | (*(_BYTE *)(v87 + 17) != (unsigned __int8)lpuexcptd); - if ( v66 ) - { - v20 = *(_BYTE *)(v87 + 16); - if ( v20 ) - { - if ( *(_BYTE *)(v87 + 18) != lpuexcptd ) - goto LABEL_172; - if ( v60 ) - { - v20 = v60; -LABEL_172: - v66 = v20; - if ( !*(_DWORD *)(v89 - 12) ) - goto LABEL_107; - goto LABEL_113; - } - if ( v76 ) - { - v71 = *(_DWORD *)(*(_DWORD *)&v88[1] - 12); - lpuexcpte = (std::string *)(v71 + 1); - if ( (unsigned int)(v71 + 1) > *(_DWORD *)(*(_DWORD *)&v88[1] - 8) || *(int *)(*(_DWORD *)&v88[1] - 4) > 0 ) - std::string::reserve((int *)&v88[1], lpuexcpte, (unsigned int)v47); - v21 = (char)v76; - v76 = 0; - *(_BYTE *)(*(_DWORD *)&v88[1] + *(_DWORD *)(*(_DWORD *)&v88[1] - 12)) = v21; - v22 = *(_DWORD *)&v88[1]; - *(_DWORD *)(*(_DWORD *)&v88[1] - 4) = 0; - *(_DWORD *)(v22 - 12) = lpuexcpte; - *(_BYTE *)(v22 + v71 + 1) = 0; - v14 = (_DWORD *)a1; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 < *(_DWORD *)(a1 + 12) ) - goto LABEL_37; - goto LABEL_54; - } - v66 = 0; - } - } - else - { - if ( *(int *)(v87 + 44) > 0 ) - { - v36 = (char)v76; - v60 = 1; - v76 = 0; - v53 = v36; - goto LABEL_36; - } - v60 = 0; -LABEL_105: - v66 = 1; - } - if ( !*(_DWORD *)(v89 - 12) ) - goto LABEL_107; -LABEL_113: - lpuexcptf = v66 ^ 1; - goto LABEL_114; - default: - lpuexcptf = 0; - goto LABEL_160; - } - } -} -// 4BED35: variable 'v48' is possibly undefined -// 4BE03D: variable 'v45' is possibly undefined -// 4BE07B: variable 'v46' is possibly undefined -// 4BE233: variable 'v47' is possibly undefined -// 4BEB6A: variable 'v49' is possibly undefined -// 4BEBAB: variable 'v50' is possibly undefined -// 4BEDDF: variable 'v51' is possibly undefined -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 53F58C: using guessed type signed __int32 std::moneypunct::id; -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (004BEF60) -------------------------------------------------------- -unsigned __int64 __stdcall std::money_get>::_M_extract( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // al - int v7; // eax - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - _BYTE *v11; // eax - int v12; // eax - int v13; // eax - _DWORD *v14; // ecx - int v15; // eax - unsigned int v16; // eax - char v17; // al - char v18; // al - _BYTE *v19; // eax - char v20; // al - char v21; // bl - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - int v25; // eax - int v26; // eax - _BYTE *v27; // eax - int v28; // eax - int v29; // eax - _DWORD *v30; // ecx - char v31; // al - int v32; // eax - unsigned __int8 *v33; // eax - int v34; // edx - char *v35; // eax - char v36; // al - int v38; // edx - std::string *v39; // eax - unsigned int first_not_of; // eax - unsigned int v41; // edx - int v42; // eax - _WORD *v43; // eax - int *v44; // eax - unsigned int v45; // [esp+4h] [ebp-94h] - unsigned int v46; // [esp+4h] [ebp-94h] - std::string *v47; // [esp+4h] [ebp-94h] - unsigned int v48; // [esp+8h] [ebp-90h] - char *v49; // [esp+8h] [ebp-90h] - unsigned int v50; // [esp+Ch] [ebp-8Ch] - char v51; // [esp+10h] [ebp-88h] - std::locale::_Impl *v52; // [esp+14h] [ebp-84h] - char v53; // [esp+18h] [ebp-80h] - _DWORD *v54; // [esp+1Ch] [ebp-7Ch] - unsigned int v55; // [esp+20h] [ebp-78h] - int v56; // [esp+28h] [ebp-70h] - bool v57; // [esp+2Ch] [ebp-6Ch] - char v58; // [esp+2Dh] [ebp-6Bh] - char v59; // [esp+2Eh] [ebp-6Ah] - char v60; // [esp+2Fh] [ebp-69h] - char v61; // [esp+30h] [ebp-68h] - int v62; // [esp+30h] [ebp-68h] - unsigned int v63; // [esp+30h] [ebp-68h] - char v64; // [esp+30h] [ebp-68h] - char v65; // [esp+30h] [ebp-68h] - char v66; // [esp+34h] [ebp-64h] - int v67; // [esp+34h] [ebp-64h] - char v68; // [esp+34h] [ebp-64h] - char v69; // [esp+34h] [ebp-64h] - char v70; // [esp+34h] [ebp-64h] - int v71; // [esp+34h] [ebp-64h] - unsigned int v72; // [esp+34h] [ebp-64h] - int *Buf; // [esp+38h] [ebp-60h] - unsigned int Bufa; // [esp+38h] [ebp-60h] - std::locale::facet *v75; // [esp+3Ch] [ebp-5Ch] - std::locale::facet *v76; // [esp+3Ch] [ebp-5Ch] - int lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - std::string *lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - char lpuexcptd; // [esp+40h] [ebp-58h] - std::string *lpuexcpte; // [esp+40h] [ebp-58h] - char lpuexcptf; // [esp+40h] [ebp-58h] - char lpuexcptg; // [esp+40h] [ebp-58h] - char lpuexcpth; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcpti; // [esp+40h] [ebp-58h] - int v87; // [esp+48h] [ebp-50h] - char v88[5]; // [esp+83h] [ebp-15h] BYREF - int v89; // [esp+88h] [ebp-10h] BYREF - int v90[2]; // [esp+8Ch] [ebp-Ch] - - lpuexcpt = a4 + 108; - v54 = std::use_facet>(a4 + 108); - v75 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - Buf = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v75); - v87 = *Buf; - if ( !*Buf ) - { - v43 = operator new(0x44u); - *(_DWORD *)v43 = &off_5606E4; - v43[8] = 0; - *((_DWORD *)v43 + 1) = 0; - *((_DWORD *)v43 + 2) = 0; - *((_DWORD *)v43 + 3) = 0; - *((_BYTE *)v43 + 18) = 0; - *((_DWORD *)v43 + 5) = 0; - *((_DWORD *)v43 + 6) = 0; - *((_DWORD *)v43 + 7) = 0; - *((_DWORD *)v43 + 8) = 0; - *((_DWORD *)v43 + 9) = 0; - *((_DWORD *)v43 + 10) = 0; - *((_DWORD *)v43 + 11) = 0; - *((_DWORD *)v43 + 12) = 0; - *((_DWORD *)v43 + 13) = 0; - *((_BYTE *)v43 + 67) = 0; - v52 = (std::locale::_Impl *)v43; - std::__moneypunct_cache::_M_cache((int)v43, lpuexcpt); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v52, v75, v48); - v87 = *Buf; - } - if ( *(_DWORD *)(v87 + 32) ) - v57 = *(_DWORD *)(v87 + 40) != 0; - else - v57 = 0; - *(_DWORD *)&v88[1] = std::string::_S_construct(0, 0); - if ( *(_BYTE *)(v87 + 16) ) - std::string::reserve((int *)&v88[1], (std::string *)0x20, v45); - v49 = v88; - v89 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v89, (std::string *)0x20, v46); - v60 = 0; - v56 = 0; - v76 = 0; - v90[0] = *(_DWORD *)(v87 + 52); - v53 = 0; - v55 = 0; - v58 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)v90 + v56) ) - { - case 0: - v66 = 1; - goto LABEL_10; - case 1: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) - || (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 0x20) == 0 ) - { - v66 = 0; - if ( v56 == 3 ) - { -LABEL_11: - v6 = v66 & (v55 > 1); - goto LABEL_12; - } - } - else - { - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v66 = 1; -LABEL_10: - if ( v56 == 3 ) - goto LABEL_11; - } - v29 = HIDWORD(a1); - v30 = (_DWORD *)a1; - while ( 1 ) - { - lpuexcpth = v29 == -1; - v65 = lpuexcpth & (v30 != 0); - if ( v65 ) - { - lpuexcpth = 0; - if ( v30[2] >= v30[3] ) - { - lpuexcpth = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v30 + 36))(v30) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpth = v65; - } - } - } - v31 = a3 == -1; - v64 = v31 & (a2 != 0); - if ( v64 ) - { - v31 = 0; - if ( a2[2] >= a2[3] ) - { - v38 = (*(int (**)(void))(*a2 + 36))(); - v31 = 0; - if ( v38 == -1 ) - { - a2 = 0; - v31 = v64; - } - } - } - if ( lpuexcpth == v31 ) - goto LABEL_113; - v30 = (_DWORD *)a1; - LOBYTE(v32) = BYTE4(a1); - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v33 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - if ( (*(_BYTE *)(v54[6] + 2 * *v33) & 0x20) == 0 ) - goto LABEL_113; -LABEL_88: - v30[2] = v33 + 1; - goto LABEL_89; - } - v32 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v32 == -1 ) - LODWORD(a1) = 0; - } - if ( (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) - goto LABEL_113; - v30 = (_DWORD *)a1; - v33 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - goto LABEL_88; - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v30 = (_DWORD *)a1; -LABEL_89: - HIDWORD(a1) = -1; - v29 = -1; - } - case 2: - if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) - goto LABEL_65; - lpuexcptf = v56 == 0 || v55 > 1; - if ( lpuexcptf ) - goto LABEL_65; - if ( v56 == 1 ) - { - if ( v57 || LOBYTE(v90[0]) == 3 || BYTE2(v90[0]) == 1 ) - { -LABEL_65: - v24 = (_DWORD *)a1; - v72 = 0; - v63 = *(_DWORD *)(v87 + 24); - v25 = HIDWORD(a1); - while ( 2 ) - { - lpuexcptg = v25 == -1; - v59 = lpuexcptg & (v24 != 0); - if ( v59 ) - { - lpuexcptg = 0; - if ( v24[2] >= v24[3] ) - { - lpuexcptg = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptg = v59; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v28 = (*(int (**)(void))(*a2 + 36))(); - lpuexcptg ^= v28 == -1; - if ( v28 == -1 ) - a2 = 0; - } - } - else - { - lpuexcptg ^= a3 == -1; - } - lpuexcptf = (v72 < v63) & lpuexcptg; - if ( !lpuexcptf ) - { - if ( v72 == v63 ) - { -LABEL_160: - v66 = 1; - goto LABEL_114; - } -LABEL_143: - if ( !v72 ) - { - v66 = (*(_BYTE *)(a4 + 13) & 2) == 0; - lpuexcptf = (*(_BYTE *)(a4 + 13) & 2) != 0; - goto LABEL_114; - } -LABEL_107: - *a5 |= 4u; - goto LABEL_108; - } - LOBYTE(v26) = BYTE4(a1); - v24 = (_DWORD *)a1; - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v27 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v27 >= *(_DWORD *)(a1 + 12) ) - { - v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v26 == -1 ) - LODWORD(a1) = 0; - goto LABEL_69; - } - if ( *v27 != *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) ) - goto LABEL_143; -LABEL_71: - v24[2] = v27 + 1; - } - else - { -LABEL_69: - if ( *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) != (_BYTE)v26 ) - goto LABEL_143; - v24 = (_DWORD *)a1; - v27 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v27 < *(_DWORD *)(a1 + 12) ) - goto LABEL_71; - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v24 = (_DWORD *)a1; - } - ++v72; - v25 = -1; - HIDWORD(a1) = -1; - continue; - } - } - v23 = 2; -LABEL_116: - v56 = v23; - continue; - } - v66 = 1; - if ( v56 == 2 ) - { - if ( HIBYTE(v90[0]) == 4 ) - goto LABEL_65; - v23 = 3; - if ( HIBYTE(v90[0]) == 3 && v57 ) - goto LABEL_65; - goto LABEL_116; - } -LABEL_114: - v23 = v56 + 1; - if ( v56 + 1 <= 3 && !lpuexcptf ) - goto LABEL_116; - v6 = v66 & (v55 > 1); -LABEL_12: - if ( !v6 ) - { - if ( v66 ) - { - if ( *(_DWORD *)(v89 - 12) > 1u ) - goto LABEL_161; - goto LABEL_149; - } - goto LABEL_107; - } - if ( v58 ) - v7 = *(_DWORD *)(v87 + 36); - else - v7 = *(_DWORD *)(v87 + 28); - v67 = v7; - v8 = HIDWORD(a1); - v9 = (_DWORD *)a1; - Bufa = 1; - while ( 2 ) - { - lpuexcpta = v8 == -1; - v61 = lpuexcpta & (v9 != 0); - if ( v61 ) - { - lpuexcpta = 0; - if ( v9[2] >= v9[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = v61; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v12 = (*(int (**)(void))(*a2 + 36))(); - lpuexcpta ^= v12 == -1; - if ( v12 == -1 ) - a2 = 0; - } - } - else - { - lpuexcpta ^= a3 == -1; - } - if ( Bufa < v55 && lpuexcpta ) - { - v9 = (_DWORD *)a1; - LOBYTE(v10) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_21; - v11 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v11 < *(_DWORD *)(a1 + 12) ) - { - if ( *v11 != *(_BYTE *)(v67 + Bufa) ) - goto LABEL_107; - goto LABEL_23; - } - v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v10 == -1 ) - LODWORD(a1) = 0; -LABEL_21: - if ( *(_BYTE *)(v67 + Bufa) != (_BYTE)v10 ) - goto LABEL_107; - v9 = (_DWORD *)a1; - v11 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v9 = (_DWORD *)a1; - } - else - { -LABEL_23: - v9[2] = v11 + 1; - } - ++Bufa; - v8 = -1; - HIDWORD(a1) = -1; - continue; - } - break; - } - if ( Bufa != v55 ) - goto LABEL_107; - if ( *(_DWORD *)(v89 - 12) <= 1u ) - goto LABEL_149; -LABEL_161: - first_not_of = std::string::find_first_not_of(&v89, (std::string *)0x30, 0, (unsigned int)v49); - if ( first_not_of ) - { - v41 = *(_DWORD *)(v89 - 12); - if ( first_not_of == -1 ) - first_not_of = v41 - 1; - if ( first_not_of > v41 ) - first_not_of = *(_DWORD *)(v89 - 12); - std::string::_M_mutate((char **)&v89, 0, first_not_of, 0, v50); - } -LABEL_149: - if ( v58 ) - { - v44 = (int *)v89; - if ( *(int *)(v89 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v89); - v44 = (int *)v89; - } - if ( *(_BYTE *)v44 != 48 ) - { - if ( *(v44 - 1) >= 0 ) - std::string::_M_leak_hard((char **)&v89); - std::string::_M_replace_aux((char **)&v89, 0, 0, 1u, 45, v51); - *(_DWORD *)(v89 - 4) = -1; - } - } - if ( *(_DWORD *)(*(_DWORD *)&v88[1] - 12) ) - { - v39 = (std::string *)(char)v76; - if ( v60 ) - v39 = (std::string *)v53; - std::string::push_back((int *)&v88[1], v39, (char)v47); - if ( !(unsigned __int8)std::__verify_grouping( - *(char **)(v87 + 8), - *(_DWORD *)(v87 + 12), - (const char **)&v88[1]) ) - *a5 |= 4u; - } - if ( v60 && *(std::locale::facet **)(v87 + 44) != v76 ) - goto LABEL_107; - std::string::swap(a6, (std::string *)&v89, v47); -LABEL_108: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - lpuexcpti = a1; - std::string::_Rep::_M_dispose((volatile signed __int32 *)(v89 - 12), (int)v88); - std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v88[1] - 12), (int)&v89); - return lpuexcpti; - case 3: - if ( *(_DWORD *)(v87 + 32) ) - { - lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptf && **(_BYTE **)(v87 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v55 = *(_DWORD *)(v87 + 32); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v66 = 1; - goto LABEL_114; - } - if ( !*(_DWORD *)(v87 + 40) ) - { - if ( !*(_DWORD *)(v87 + 32) ) - goto LABEL_57; - goto LABEL_125; - } - } - else if ( !*(_DWORD *)(v87 + 40) ) - { - goto LABEL_57; - } - lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptf && **(_BYTE **)(v87 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v55 = *(_DWORD *)(v87 + 40); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v66 = 1; - v58 = 1; - goto LABEL_114; - } - if ( !*(_DWORD *)(v87 + 32) || *(_DWORD *)(v87 + 40) ) - { -LABEL_57: - lpuexcptf = v57; - v66 = !v57; - goto LABEL_114; - } -LABEL_125: - lpuexcptf = 0; - v66 = 1; - v58 = 1; - goto LABEL_114; - case 4: - v13 = HIDWORD(a1); - v14 = (_DWORD *)a1; - while ( 2 ) - { - lpuexcptc = v13 == -1; - v69 = lpuexcptc & (v14 != 0); - if ( v69 ) - { - lpuexcptc = 0; - if ( v14[2] >= v14[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v14 + 36))(v14) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v69; - } - } - } - v17 = a3 == -1; - v70 = v17 & (a2 != 0); - if ( v70 ) - { - v17 = 0; - if ( a2[2] >= a2[3] ) - { - v34 = (*(int (**)(void))(*a2 + 36))(); - v17 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v17 = v70; - } - } - } - if ( lpuexcptc == v17 ) - goto LABEL_105; - v18 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_43; - v35 = *(char **)(a1 + 8); - if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) - { - v42 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcptd = v42; - if ( v42 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptd = -1; - } - } - else - { - v18 = *v35; -LABEL_43: - lpuexcptd = v18; - } - v19 = memchr((const void *)(v87 + 57), lpuexcptd, 0xAu); - if ( v19 ) - { - v68 = v19[(_DWORD)std::money_base::_S_atoms - 56 - v87]; - v62 = *(_DWORD *)(v89 - 12); - lpuexcptb = (std::string *)(v62 + 1); - if ( (unsigned int)(v62 + 1) > *(_DWORD *)(v89 - 8) || *(int *)(v89 - 4) > 0 ) - std::string::reserve(&v89, lpuexcptb, (unsigned int)v47); - v76 = (std::locale::facet *)((char *)v76 + 1); - *(_BYTE *)(v89 + *(_DWORD *)(v89 - 12)) = v68; - v15 = v89; - *(_DWORD *)(v89 - 12) = lpuexcptb; - *(_DWORD *)(v15 - 4) = 0; - *(_BYTE *)(v15 + v62 + 1) = 0; -LABEL_36: - v14 = (_DWORD *)a1; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 < *(_DWORD *)(a1 + 12) ) - { -LABEL_37: - v14[2] = v16 + 1; -LABEL_38: - HIDWORD(a1) = -1; - v13 = -1; - continue; - } -LABEL_54: - (*(void (__fastcall **)(_DWORD *))(*v14 + 40))(v14); - v14 = (_DWORD *)a1; - goto LABEL_38; - } - break; - } - v66 = v60 | (*(_BYTE *)(v87 + 17) != (unsigned __int8)lpuexcptd); - if ( v66 ) - { - v20 = *(_BYTE *)(v87 + 16); - if ( v20 ) - { - if ( *(_BYTE *)(v87 + 18) != lpuexcptd ) - goto LABEL_172; - if ( v60 ) - { - v20 = v60; -LABEL_172: - v66 = v20; - if ( !*(_DWORD *)(v89 - 12) ) - goto LABEL_107; - goto LABEL_113; - } - if ( v76 ) - { - v71 = *(_DWORD *)(*(_DWORD *)&v88[1] - 12); - lpuexcpte = (std::string *)(v71 + 1); - if ( (unsigned int)(v71 + 1) > *(_DWORD *)(*(_DWORD *)&v88[1] - 8) || *(int *)(*(_DWORD *)&v88[1] - 4) > 0 ) - std::string::reserve((int *)&v88[1], lpuexcpte, (unsigned int)v47); - v21 = (char)v76; - v76 = 0; - *(_BYTE *)(*(_DWORD *)&v88[1] + *(_DWORD *)(*(_DWORD *)&v88[1] - 12)) = v21; - v22 = *(_DWORD *)&v88[1]; - *(_DWORD *)(*(_DWORD *)&v88[1] - 4) = 0; - *(_DWORD *)(v22 - 12) = lpuexcpte; - *(_BYTE *)(v22 + v71 + 1) = 0; - v14 = (_DWORD *)a1; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 < *(_DWORD *)(a1 + 12) ) - goto LABEL_37; - goto LABEL_54; - } - v66 = 0; - } - } - else - { - if ( *(int *)(v87 + 44) > 0 ) - { - v36 = (char)v76; - v60 = 1; - v76 = 0; - v53 = v36; - goto LABEL_36; - } - v60 = 0; -LABEL_105: - v66 = 1; - } - if ( !*(_DWORD *)(v89 - 12) ) - goto LABEL_107; -LABEL_113: - lpuexcptf = v66 ^ 1; - goto LABEL_114; - default: - lpuexcptf = 0; - goto LABEL_160; - } - } -} -// 4BFD25: variable 'v48' is possibly undefined -// 4BF02D: variable 'v45' is possibly undefined -// 4BF06B: variable 'v46' is possibly undefined -// 4BF223: variable 'v47' is possibly undefined -// 4BFB5A: variable 'v49' is possibly undefined -// 4BFB9B: variable 'v50' is possibly undefined -// 4BFDCF: variable 'v51' is possibly undefined -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 53F590: using guessed type signed __int32 std::moneypunct::id; -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (004BFF50) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); -} - -//----- (004BFF60) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (004BFF70) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -unsigned __int64 __stdcall std::money_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - char a4, - int a5, - _DWORD *a6, - int *a7) -{ - unsigned __int64 v7; // rax - size_t v8; // eax - char v9; // al - void (__thiscall *v10)(_BYTE *, char *, char *, void *); // eax - int v11; // eax - char v13; // [esp+4h] [ebp-84h] - char *v14; // [esp+28h] [ebp-60h] - void *v15; // [esp+2Ch] [ebp-5Ch] - size_t Size; // [esp+30h] [ebp-58h] - _BYTE *v17; // [esp+34h] [ebp-54h] - char *Src; // [esp+38h] [ebp-50h] - int v19; // [esp+7Bh] [ebp-Dh] BYREF - int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF - unsigned __int64 v21; // [esp+90h] [ebp+8h] - - v17 = std::use_facet>(a5 + 108); - v20[0] = (int)std::string::_S_construct(0, 0); - if ( a4 ) - v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v20); - else - v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v20); - v21 = v7; - Src = (char *)v20[0]; - v8 = *(_DWORD *)(v20[0] - 12); - Size = v8; - if ( v8 ) - { - std::string::resize(a7, v8, 0, v13); - v15 = (void *)*a7; - if ( *(int *)(*a7 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)a7); - v15 = (void *)*a7; - } - Src = (char *)v20[0]; - v14 = (char *)(Size + v20[0]); - v9 = v17[28]; - if ( v9 == 1 ) - { - if ( v14 != (char *)v20[0] ) - goto LABEL_11; - } - else - { - if ( !v9 ) - std::ctype::_M_widen_init((int)v17); - v10 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v17 + 28); - if ( (char *)v10 == (char *)std::ctype::do_widen ) - { - if ( v14 != Src ) - { -LABEL_11: - memcpy(v15, Src, Size); - Src = (char *)v20[0]; - goto LABEL_12; - } - } - else - { - v10(v17, Src, v14, v15); - } - Src = (char *)v20[0]; - } - } -LABEL_12: - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)Src - 1, 0xFFFFFFFF) > 0 ) - return v21; -LABEL_17: - std::string::_Rep::_M_destroy(Src - 12, (int)&v19); - return v21; - } - v11 = *((_DWORD *)Src - 1); - *((_DWORD *)Src - 1) = v11 - 1; - if ( v11 <= 0 ) - goto LABEL_17; - return v21; -} -// 4C01CF: positive sp value 4 has been found -// 4C0059: variable 'v13' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 4BFF70: using guessed type _DWORD *arg_8; - -//----- (004C01F0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -unsigned __int64 __stdcall std::money_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - char a4, - int a5, - _DWORD *a6, - long double *a7) -{ - unsigned __int64 v7; // rax - char *v8; // ecx - int v9; // eax - char *String; // [esp+68h] [ebp-10h] BYREF - int v12[3]; // [esp+6Ch] [ebp-Ch] BYREF - unsigned __int64 v13; // [esp+80h] [ebp+8h] - - String = (char *)std::string::_S_construct(0, 0); - if ( a4 ) - v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); - else - v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); - v13 = v7; - v12[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v(String, a7, a6); - v8 = String; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) - return v13; -LABEL_8: - std::string::_Rep::_M_destroy(v8 - 12, (int)v12); - return v13; - } - v9 = *((_DWORD *)String - 1); - *((_DWORD *)String - 1) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_8; - return v13; -} -// 4C0348: positive sp value 4 has been found -// 53E1E4: using guessed type int _CRT_MT; -// 4C01F0: using guessed type int var_C[3]; - -//----- (004C0360) -------------------------------------------------------- -__int64 __stdcall std::money_get>::_M_extract( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // al - int v7; // eax - __int16 v8; // ax - _DWORD *v9; // ecx - char v10; // al - __int16 v11; // ax - unsigned int v12; // eax - _WORD *v13; // eax - __int16 v14; // ax - __int16 v15; // ax - _DWORD *v16; // ecx - char v17; // al - unsigned __int16 v18; // dx - _WORD *v19; // eax - char v20; // al - char v21; // cl - int v22; // eax - unsigned int v23; // eax - int v24; // eax - _DWORD *v25; // ecx - __int16 i; // ax - bool v27; // al - __int16 v28; // ax - unsigned int v29; // eax - _WORD *v30; // eax - __int16 v31; // ax - __int16 v32; // ax - _DWORD *v33; // ecx - char v34; // al - unsigned __int16 v35; // ax - unsigned int v36; // eax - _WORD *v37; // eax - __int16 v38; // ax - int v39; // eax - __int16 *v40; // eax - __int16 v41; // dx - int v42; // eax - int v43; // edx - int v44; // eax - int v45; // edx - _WORD *v47; // eax - __int16 v48; // ax - _WORD *v49; // eax - char v50; // al - _WORD *v51; // eax - __int16 v52; // dx - _WORD *v53; // eax - unsigned __int16 v54; // ax - __int16 *v55; // eax - __int16 v56; // dx - std::string *v57; // eax - _WORD *v58; // eax - _WORD *v59; // eax - __int16 v60; // dx - __int16 *v61; // eax - unsigned int first_not_of; // eax - unsigned int v63; // edx - _DWORD *v64; // eax - int *v65; // eax - unsigned int v66; // [esp+4h] [ebp-94h] - unsigned int v67; // [esp+4h] [ebp-94h] - std::string *v68; // [esp+4h] [ebp-94h] - unsigned int v69; // [esp+8h] [ebp-90h] - unsigned int v70; // [esp+Ch] [ebp-8Ch] - std::locale::_Impl *v71; // [esp+10h] [ebp-88h] - char v72; // [esp+14h] [ebp-84h] - void *v73; // [esp+18h] [ebp-80h] - unsigned int v74; // [esp+1Ch] [ebp-7Ch] - int v75; // [esp+24h] [ebp-74h] - bool v76; // [esp+29h] [ebp-6Fh] - char v77; // [esp+2Ah] [ebp-6Eh] - char v78; // [esp+2Bh] [ebp-6Dh] - bool v79; // [esp+2Ch] [ebp-6Ch] - bool v80; // [esp+2Ch] [ebp-6Ch] - char v81; // [esp+30h] [ebp-68h] - char v82; // [esp+30h] [ebp-68h] - unsigned int v83; // [esp+30h] [ebp-68h] - char v84; // [esp+30h] [ebp-68h] - char v85; // [esp+30h] [ebp-68h] - int v86; // [esp+30h] [ebp-68h] - char v87; // [esp+34h] [ebp-64h] - int v88; // [esp+34h] [ebp-64h] - char v89; // [esp+34h] [ebp-64h] - char v90; // [esp+34h] [ebp-64h] - int v91; // [esp+34h] [ebp-64h] - unsigned int v92; // [esp+34h] [ebp-64h] - char v93; // [esp+34h] [ebp-64h] - int *v94; // [esp+38h] [ebp-60h] - unsigned int v95; // [esp+38h] [ebp-60h] - std::locale::facet *v96; // [esp+3Ch] [ebp-5Ch] - std::locale::facet *v97; // [esp+3Ch] [ebp-5Ch] - int lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - char lpuexcptb; // [esp+40h] [ebp-58h] - std::string *lpuexcptc; // [esp+40h] [ebp-58h] - char lpuexcptd; // [esp+40h] [ebp-58h] - bool lpuexcpte; // [esp+40h] [ebp-58h] - char lpuexcptf; // [esp+40h] [ebp-58h] - std::string *lpuexcptg; // [esp+40h] [ebp-58h] - __int64 lpuexcpth; // [esp+40h] [ebp-58h] - int v107; // [esp+48h] [ebp-50h] - char v108[5]; // [esp+83h] [ebp-15h] BYREF - int v109; // [esp+88h] [ebp-10h] BYREF - int v110[2]; // [esp+8Ch] [ebp-Ch] - - lpuexcpt = a4 + 108; - v73 = std::use_facet>(a4 + 108); - v96 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v96); - v107 = *v94; - if ( !*v94 ) - { - v64 = operator new(0x54u); - v64[1] = 0; - *v64 = &off_5606F4; - v64[2] = 0; - v64[3] = 0; - *((_BYTE *)v64 + 16) = 0; - *(_DWORD *)((char *)v64 + 18) = 0; - v64[6] = 0; - v64[7] = 0; - v64[8] = 0; - v64[9] = 0; - v64[10] = 0; - v64[11] = 0; - v64[12] = 0; - v64[13] = 0; - v64[14] = 0; - *((_BYTE *)v64 + 82) = 0; - v71 = (std::locale::_Impl *)v64; - std::__moneypunct_cache::_M_cache((int)v64, lpuexcpt); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v71, v96, v69); - v107 = *v94; - } - if ( *(_DWORD *)(v107 + 36) ) - v76 = *(_DWORD *)(v107 + 44) != 0; - else - v76 = 0; - *(_DWORD *)&v108[1] = std::string::_S_construct(0, 0); - if ( *(_BYTE *)(v107 + 16) ) - std::string::reserve((int *)&v108[1], (std::string *)0x20, v66); - v109 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v109, (std::string *)0x20, v67); - v78 = 0; - v75 = 0; - v77 = 0; - v110[0] = *(_DWORD *)(v107 + 56); - v97 = 0; - v72 = 0; - v74 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)v110 + v75) ) - { - case 0: - v87 = 1; - goto LABEL_10; - case 1: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) - || (v54 = std::istreambuf_iterator::_M_get((int)&a1), - (v87 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v54)) == 0) ) - { - v87 = 0; - if ( v75 == 3 ) - goto LABEL_11; - } - else - { - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; -LABEL_10: - if ( v75 == 3 ) - { -LABEL_11: - v6 = v87 & (v74 > 1); - goto LABEL_12; - } - } - v32 = WORD2(a1); - v33 = (_DWORD *)a1; - while ( 1 ) - { - lpuexcptf = v32 == -1; - v85 = lpuexcptf & (v33 != 0); - if ( v85 ) - { - v37 = (_WORD *)v33[2]; - v38 = (unsigned int)v37 >= v33[3] ? (*(int (__fastcall **)(_DWORD *))(*v33 + 36))(v33) : *v37; - lpuexcptf = 0; - if ( v38 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptf = v85; - } - } - v34 = a3 == -1; - v84 = v34 & (a2 != 0); - if ( v84 ) - { - v51 = (_WORD *)a2[2]; - v52 = (unsigned int)v51 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v51; - v34 = 0; - if ( v52 == -1 ) - { - a2 = 0; - v34 = v84; - } - } - if ( lpuexcptf == v34 ) - break; - v35 = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v53 = *(_WORD **)(a1 + 8); - v35 = (unsigned int)v53 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v53; - if ( v35 == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v35) ) - break; - v33 = (_DWORD *)a1; - v36 = *(_DWORD *)(a1 + 8); - if ( v36 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v33 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v36 + 2; - } - WORD2(a1) = -1; - v32 = -1; - } -LABEL_120: - lpuexcptd = v87 ^ 1; - goto LABEL_121; - case 2: - if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) - goto LABEL_61; - lpuexcptd = v75 == 0 || v74 > 1; - if ( lpuexcptd ) - goto LABEL_61; - if ( v75 != 1 ) - { - v87 = 1; - if ( v75 != 2 ) - goto LABEL_121; - if ( HIBYTE(v110[0]) == 4 ) - goto LABEL_61; - v24 = 3; - if ( HIBYTE(v110[0]) == 3 && v76 ) - goto LABEL_61; -LABEL_123: - v75 = v24; - continue; - } - if ( !v76 && LOBYTE(v110[0]) != 3 && BYTE2(v110[0]) != 1 ) - { - v24 = 2; - goto LABEL_123; - } -LABEL_61: - v25 = (_DWORD *)a1; - v92 = 0; - v83 = *(_DWORD *)(v107 + 28); - for ( i = WORD2(a1); ; i = -1 ) - { - lpuexcpte = i == -1; - v80 = lpuexcpte && v25 != 0; - if ( v80 ) - { - v30 = (_WORD *)v25[2]; - v31 = (unsigned int)v30 >= v25[3] ? (*(int (__fastcall **)(_DWORD *))(*v25 + 36))(v25) : *v30; - lpuexcpte = 0; - if ( v31 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpte = v80; - } - } - v27 = a3 == -1; - v79 = v27 && a2 != 0; - if ( v79 ) - { - v59 = (_WORD *)a2[2]; - v60 = (unsigned int)v59 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v59; - v27 = 0; - if ( v60 == -1 ) - { - a2 = 0; - v27 = v79; - } - } - lpuexcptd = (v92 < v83) & (lpuexcpte ^ v27); - if ( !lpuexcptd ) - break; - v28 = WORD2(a1); - if ( (_DWORD)a1 - && WORD2(a1) == 0xFFFF - && ((v61 = *(__int16 **)(a1 + 8), (unsigned int)v61 >= *(_DWORD *)(a1 + 12)) - ? (v28 = (*(int (**)(void))(*(_DWORD *)a1 + 36))()) - : (v28 = *v61), - v28 == -1) ) - { - LODWORD(a1) = 0; - if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != 0xFFFF ) - goto LABEL_171; - } - else if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != v28 ) - { - goto LABEL_171; - } - v25 = (_DWORD *)a1; - v29 = *(_DWORD *)(a1 + 8); - if ( v29 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v25 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v29 + 2; - } - ++v92; - WORD2(a1) = -1; - } - if ( v92 == v83 ) - { -LABEL_181: - v87 = 1; - } - else - { -LABEL_171: - if ( v92 ) - goto LABEL_102; - v87 = (*(_BYTE *)(a4 + 13) & 2) == 0; - lpuexcptd = (*(_BYTE *)(a4 + 13) & 2) != 0; - } -LABEL_121: - v24 = v75 + 1; - if ( v75 + 1 <= 3 && !lpuexcptd ) - goto LABEL_123; - v6 = v87 & (v74 > 1); -LABEL_12: - if ( !v6 ) - { - if ( v87 ) - { - if ( *(_DWORD *)(v109 - 12) > 1u ) - goto LABEL_182; - goto LABEL_150; - } - goto LABEL_102; - } - if ( v77 ) - v7 = *(_DWORD *)(v107 + 40); - else - v7 = *(_DWORD *)(v107 + 32); - v88 = v7; - v8 = WORD2(a1); - v9 = (_DWORD *)a1; - v95 = 1; - while ( 2 ) - { - lpuexcpta = v8 == -1; - v82 = lpuexcpta & (v9 != 0); - if ( v82 ) - { - v13 = (_WORD *)v9[2]; - v14 = (unsigned int)v13 >= v9[3] ? (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) : *v13; - lpuexcpta = 0; - if ( v14 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = v82; - } - } - v10 = a3 == -1; - v81 = v10 & (a2 != 0); - if ( !v81 - || ((v55 = (__int16 *)a2[2], (unsigned int)v55 >= a2[3]) - ? (v56 = (*(int (**)(void))(*a2 + 36))()) - : (v56 = *v55), - v10 = 0, - v56 != -1) ) - { - if ( v95 >= v74 ) - break; - goto LABEL_18; - } - v10 = v81; - a2 = 0; - if ( v95 < v74 ) - { -LABEL_18: - if ( lpuexcpta == v10 ) - break; - v11 = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v58 = *(_WORD **)(a1 + 8); - v11 = (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v58; - if ( v11 == -1 ) - LODWORD(a1) = 0; - } - if ( *(_WORD *)(v88 + 2 * v95) != v11 ) - goto LABEL_102; - v9 = (_DWORD *)a1; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v9 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v12 + 2; - } - ++v95; - WORD2(a1) = -1; - v8 = -1; - continue; - } - break; - } - if ( v95 != v74 ) - goto LABEL_102; - if ( *(_DWORD *)(v109 - 12) <= 1u ) - goto LABEL_150; -LABEL_182: - first_not_of = std::string::find_first_not_of(&v109, (std::string *)0x30, 0, (unsigned int)v108); - if ( first_not_of ) - { - v63 = *(_DWORD *)(v109 - 12); - if ( first_not_of == -1 ) - first_not_of = v63 - 1; - if ( first_not_of > v63 ) - first_not_of = *(_DWORD *)(v109 - 12); - std::string::_M_mutate((char **)&v109, 0, first_not_of, 0, v70); - } -LABEL_150: - if ( v77 ) - { - v65 = (int *)v109; - if ( *(int *)(v109 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v109); - v65 = (int *)v109; - } - if ( *(_BYTE *)v65 != 48 ) - { - if ( *(v65 - 1) >= 0 ) - std::string::_M_leak_hard((char **)&v109); - std::string::_M_replace_aux((char **)&v109, 0, 0, 1u, 45, (char)v71); - *(_DWORD *)(v109 - 4) = -1; - } - } - if ( *(_DWORD *)(*(_DWORD *)&v108[1] - 12) ) - { - v57 = (std::string *)(char)v97; - if ( v78 ) - v57 = (std::string *)v72; - std::string::push_back((int *)&v108[1], v57, (char)v68); - if ( !(unsigned __int8)std::__verify_grouping( - *(char **)(v107 + 8), - *(_DWORD *)(v107 + 12), - (const char **)&v108[1]) ) - *a5 |= 4u; - } - if ( v78 && *(std::locale::facet **)(v107 + 48) != v97 ) - { -LABEL_102: - *a5 |= 4u; - goto LABEL_103; - } - std::string::swap(a6, (std::string *)&v109, v68); -LABEL_103: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - lpuexcpth = a1; - v42 = v109; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v109 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_179; - } - else - { - v43 = *(_DWORD *)(v109 - 4); - *(_DWORD *)(v109 - 4) = v43 - 1; - if ( v43 > 0 ) - goto LABEL_107; -LABEL_179: - std::string::_Rep::_M_destroy((void *)(v42 - 12), (int)v108); - } -LABEL_107: - v44 = *(_DWORD *)&v108[1]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v108[1] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpth; -LABEL_177: - std::string::_Rep::_M_destroy((void *)(v44 - 12), (int)&v109); - return lpuexcpth; - } - v45 = *(_DWORD *)(*(_DWORD *)&v108[1] - 4); - *(_DWORD *)(*(_DWORD *)&v108[1] - 4) = v45 - 1; - if ( v45 <= 0 ) - goto LABEL_177; - return lpuexcpth; - case 3: - if ( *(_DWORD *)(v107 + 36) ) - { - lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptd - && **(_WORD **)(v107 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v74 = *(_DWORD *)(v107 + 36); - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - goto LABEL_181; - } - if ( !*(_DWORD *)(v107 + 44) ) - { - if ( !*(_DWORD *)(v107 + 36) ) - goto LABEL_53; -LABEL_137: - lpuexcptd = 0; - v87 = 1; - v77 = 1; - goto LABEL_121; - } - } - else if ( !*(_DWORD *)(v107 + 44) ) - { - goto LABEL_53; - } - lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( lpuexcptd - || **(_WORD **)(v107 + 40) != (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) - { - if ( !*(_DWORD *)(v107 + 36) || *(_DWORD *)(v107 + 44) ) - { -LABEL_53: - lpuexcptd = v76; - v87 = !v76; - goto LABEL_121; - } - goto LABEL_137; - } - v74 = *(_DWORD *)(v107 + 44); - std::wstreambuf::sbumpc((_DWORD *)a1); - v87 = 1; - WORD2(a1) = -1; - v77 = 1; - goto LABEL_121; - case 4: - v15 = WORD2(a1); - v16 = (_DWORD *)a1; - while ( 2 ) - { - lpuexcptb = v15 == -1; - v89 = lpuexcptb & (v16 != 0); - if ( v89 ) - { - v47 = (_WORD *)v16[2]; - v48 = (unsigned int)v47 >= v16[3] ? (*(int (__fastcall **)(_DWORD *))(*v16 + 36))(v16) : *v47; - lpuexcptb = 0; - if ( v48 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptb = v89; - } - } - v17 = a3 == -1; - v90 = v17 & (a2 != 0); - if ( v90 - && ((v40 = (__int16 *)a2[2], (unsigned int)v40 >= a2[3]) - ? (v41 = (*(int (**)(void))(*a2 + 36))()) - : (v41 = *v40), - v17 = 0, - v41 == -1) ) - { - a2 = 0; - if ( lpuexcptb == v90 ) - goto LABEL_100; - } - else if ( lpuexcptb == v17 ) - { - goto LABEL_100; - } - v18 = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v49 = *(_WORD **)(a1 + 8); - v18 = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; - if ( v18 == 0xFFFF ) - LODWORD(a1) = 0; - } - v19 = (_WORD *)(v107 + 62); - do - { - if ( v18 == *v19 ) - { - v93 = std::money_base::_S_atoms[((int)v19 - v107 - 60) >> 1]; - v86 = *(_DWORD *)(v109 - 12); - lpuexcptg = (std::string *)(v86 + 1); - if ( (unsigned int)(v86 + 1) > *(_DWORD *)(v109 - 8) || *(int *)(v109 - 4) > 0 ) - std::string::reserve(&v109, lpuexcptg, (unsigned int)v68); - v97 = (std::locale::facet *)((char *)v97 + 1); - *(_BYTE *)(v109 + *(_DWORD *)(v109 - 12)) = v93; - v39 = v109; - *(_DWORD *)(v109 - 12) = lpuexcptg; - *(_DWORD *)(v39 - 4) = 0; - *(_BYTE *)(v39 + v86 + 1) = 0; - v16 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - goto LABEL_49; - goto LABEL_95; - } - ++v19; - } - while ( v19 != (_WORD *)(v107 + 82) ); - v20 = v78 | (*(_WORD *)(v107 + 18) != v18); - if ( !v20 ) - { - if ( *(int *)(v107 + 48) > 0 ) - { - v50 = (char)v97; - v78 = 1; - v97 = 0; - v72 = v50; - goto LABEL_48; - } - v78 = 0; -LABEL_100: - v87 = 1; -LABEL_101: - if ( !*(_DWORD *)(v109 - 12) ) - goto LABEL_102; - goto LABEL_120; - } - v87 = *(_BYTE *)(v107 + 16); - if ( v87 ) - { - if ( *(_WORD *)(v107 + 20) != v18 ) - goto LABEL_101; - if ( !v78 ) - { - if ( v97 ) - { - v91 = *(_DWORD *)(*(_DWORD *)&v108[1] - 12); - lpuexcptc = (std::string *)(v91 + 1); - if ( (unsigned int)(v91 + 1) > *(_DWORD *)(*(_DWORD *)&v108[1] - 8) - || *(int *)(*(_DWORD *)&v108[1] - 4) > 0 ) - { - std::string::reserve((int *)&v108[1], lpuexcptc, (unsigned int)v68); - } - v21 = (char)v97; - v97 = 0; - *(_BYTE *)(*(_DWORD *)&v108[1] + *(_DWORD *)(*(_DWORD *)&v108[1] - 12)) = v21; - v22 = *(_DWORD *)&v108[1]; - *(_DWORD *)(*(_DWORD *)&v108[1] - 12) = lpuexcptc; - *(_DWORD *)(v22 - 4) = 0; - *(_BYTE *)(v22 + v91 + 1) = 0; -LABEL_48: - v16 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - { -LABEL_49: - v16[2] = v23 + 2; -LABEL_50: - WORD2(a1) = -1; - v15 = -1; - continue; - } -LABEL_95: - (*(void (__fastcall **)(_DWORD *))(*v16 + 40))(v16); - v16 = (_DWORD *)a1; - goto LABEL_50; - } - v87 = 0; - goto LABEL_101; - } - v20 = v78; - } - break; - } - v87 = v20; - if ( !*(_DWORD *)(v109 - 12) ) - goto LABEL_102; - goto LABEL_120; - default: - lpuexcptd = 0; - v87 = 1; - goto LABEL_121; - } - } -} -// 4C110C: variable 'v69' is possibly undefined -// 4C042D: variable 'v66' is possibly undefined -// 4C046B: variable 'v67' is possibly undefined -// 4C06D2: variable 'v68' is possibly undefined -// 4C0F9B: variable 'v70' is possibly undefined -// 4C11D8: variable 'v71' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 53F594: using guessed type signed __int32 std::moneypunct::id; -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (004C13B0) -------------------------------------------------------- -__int64 __stdcall std::money_get>::_M_extract( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // al - int v7; // eax - __int16 v8; // ax - _DWORD *v9; // ecx - char v10; // al - __int16 v11; // ax - unsigned int v12; // eax - _WORD *v13; // eax - __int16 v14; // ax - __int16 v15; // ax - _DWORD *v16; // ecx - char v17; // al - unsigned __int16 v18; // dx - _WORD *v19; // eax - char v20; // al - char v21; // cl - int v22; // eax - unsigned int v23; // eax - int v24; // eax - _DWORD *v25; // ecx - __int16 i; // ax - bool v27; // al - __int16 v28; // ax - unsigned int v29; // eax - _WORD *v30; // eax - __int16 v31; // ax - __int16 v32; // ax - _DWORD *v33; // ecx - char v34; // al - unsigned __int16 v35; // ax - unsigned int v36; // eax - _WORD *v37; // eax - __int16 v38; // ax - int v39; // eax - __int16 *v40; // eax - __int16 v41; // dx - int v42; // eax - int v43; // edx - int v44; // eax - int v45; // edx - _WORD *v47; // eax - __int16 v48; // ax - _WORD *v49; // eax - char v50; // al - _WORD *v51; // eax - __int16 v52; // dx - _WORD *v53; // eax - unsigned __int16 v54; // ax - __int16 *v55; // eax - __int16 v56; // dx - std::string *v57; // eax - _WORD *v58; // eax - _WORD *v59; // eax - __int16 v60; // dx - __int16 *v61; // eax - unsigned int first_not_of; // eax - unsigned int v63; // edx - _DWORD *v64; // eax - int *v65; // eax - unsigned int v66; // [esp+4h] [ebp-94h] - unsigned int v67; // [esp+4h] [ebp-94h] - std::string *v68; // [esp+4h] [ebp-94h] - unsigned int v69; // [esp+8h] [ebp-90h] - unsigned int v70; // [esp+Ch] [ebp-8Ch] - std::locale::_Impl *v71; // [esp+10h] [ebp-88h] - char v72; // [esp+14h] [ebp-84h] - void *v73; // [esp+18h] [ebp-80h] - unsigned int v74; // [esp+1Ch] [ebp-7Ch] - int v75; // [esp+24h] [ebp-74h] - bool v76; // [esp+29h] [ebp-6Fh] - char v77; // [esp+2Ah] [ebp-6Eh] - char v78; // [esp+2Bh] [ebp-6Dh] - bool v79; // [esp+2Ch] [ebp-6Ch] - bool v80; // [esp+2Ch] [ebp-6Ch] - char v81; // [esp+30h] [ebp-68h] - char v82; // [esp+30h] [ebp-68h] - unsigned int v83; // [esp+30h] [ebp-68h] - char v84; // [esp+30h] [ebp-68h] - char v85; // [esp+30h] [ebp-68h] - int v86; // [esp+30h] [ebp-68h] - char v87; // [esp+34h] [ebp-64h] - int v88; // [esp+34h] [ebp-64h] - char v89; // [esp+34h] [ebp-64h] - char v90; // [esp+34h] [ebp-64h] - int v91; // [esp+34h] [ebp-64h] - unsigned int v92; // [esp+34h] [ebp-64h] - char v93; // [esp+34h] [ebp-64h] - int *v94; // [esp+38h] [ebp-60h] - unsigned int v95; // [esp+38h] [ebp-60h] - std::locale::facet *v96; // [esp+3Ch] [ebp-5Ch] - std::locale::facet *v97; // [esp+3Ch] [ebp-5Ch] - int lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - char lpuexcptb; // [esp+40h] [ebp-58h] - std::string *lpuexcptc; // [esp+40h] [ebp-58h] - char lpuexcptd; // [esp+40h] [ebp-58h] - bool lpuexcpte; // [esp+40h] [ebp-58h] - char lpuexcptf; // [esp+40h] [ebp-58h] - std::string *lpuexcptg; // [esp+40h] [ebp-58h] - __int64 lpuexcpth; // [esp+40h] [ebp-58h] - int v107; // [esp+48h] [ebp-50h] - char v108[5]; // [esp+83h] [ebp-15h] BYREF - int v109; // [esp+88h] [ebp-10h] BYREF - int v110[2]; // [esp+8Ch] [ebp-Ch] - - lpuexcpt = a4 + 108; - v73 = std::use_facet>(a4 + 108); - v96 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v96); - v107 = *v94; - if ( !*v94 ) - { - v64 = operator new(0x54u); - v64[1] = 0; - *v64 = &off_560704; - v64[2] = 0; - v64[3] = 0; - *((_BYTE *)v64 + 16) = 0; - *(_DWORD *)((char *)v64 + 18) = 0; - v64[6] = 0; - v64[7] = 0; - v64[8] = 0; - v64[9] = 0; - v64[10] = 0; - v64[11] = 0; - v64[12] = 0; - v64[13] = 0; - v64[14] = 0; - *((_BYTE *)v64 + 82) = 0; - v71 = (std::locale::_Impl *)v64; - std::__moneypunct_cache::_M_cache((int)v64, lpuexcpt); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v71, v96, v69); - v107 = *v94; - } - if ( *(_DWORD *)(v107 + 36) ) - v76 = *(_DWORD *)(v107 + 44) != 0; - else - v76 = 0; - *(_DWORD *)&v108[1] = std::string::_S_construct(0, 0); - if ( *(_BYTE *)(v107 + 16) ) - std::string::reserve((int *)&v108[1], (std::string *)0x20, v66); - v109 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v109, (std::string *)0x20, v67); - v78 = 0; - v75 = 0; - v77 = 0; - v110[0] = *(_DWORD *)(v107 + 56); - v97 = 0; - v72 = 0; - v74 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)v110 + v75) ) - { - case 0: - v87 = 1; - goto LABEL_10; - case 1: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) - || (v54 = std::istreambuf_iterator::_M_get((int)&a1), - (v87 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v54)) == 0) ) - { - v87 = 0; - if ( v75 == 3 ) - goto LABEL_11; - } - else - { - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; -LABEL_10: - if ( v75 == 3 ) - { -LABEL_11: - v6 = v87 & (v74 > 1); - goto LABEL_12; - } - } - v32 = WORD2(a1); - v33 = (_DWORD *)a1; - while ( 1 ) - { - lpuexcptf = v32 == -1; - v85 = lpuexcptf & (v33 != 0); - if ( v85 ) - { - v37 = (_WORD *)v33[2]; - v38 = (unsigned int)v37 >= v33[3] ? (*(int (__fastcall **)(_DWORD *))(*v33 + 36))(v33) : *v37; - lpuexcptf = 0; - if ( v38 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptf = v85; - } - } - v34 = a3 == -1; - v84 = v34 & (a2 != 0); - if ( v84 ) - { - v51 = (_WORD *)a2[2]; - v52 = (unsigned int)v51 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v51; - v34 = 0; - if ( v52 == -1 ) - { - a2 = 0; - v34 = v84; - } - } - if ( lpuexcptf == v34 ) - break; - v35 = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v53 = *(_WORD **)(a1 + 8); - v35 = (unsigned int)v53 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v53; - if ( v35 == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v35) ) - break; - v33 = (_DWORD *)a1; - v36 = *(_DWORD *)(a1 + 8); - if ( v36 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v33 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v36 + 2; - } - WORD2(a1) = -1; - v32 = -1; - } -LABEL_120: - lpuexcptd = v87 ^ 1; - goto LABEL_121; - case 2: - if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) - goto LABEL_61; - lpuexcptd = v75 == 0 || v74 > 1; - if ( lpuexcptd ) - goto LABEL_61; - if ( v75 != 1 ) - { - v87 = 1; - if ( v75 != 2 ) - goto LABEL_121; - if ( HIBYTE(v110[0]) == 4 ) - goto LABEL_61; - v24 = 3; - if ( HIBYTE(v110[0]) == 3 && v76 ) - goto LABEL_61; -LABEL_123: - v75 = v24; - continue; - } - if ( !v76 && LOBYTE(v110[0]) != 3 && BYTE2(v110[0]) != 1 ) - { - v24 = 2; - goto LABEL_123; - } -LABEL_61: - v25 = (_DWORD *)a1; - v92 = 0; - v83 = *(_DWORD *)(v107 + 28); - for ( i = WORD2(a1); ; i = -1 ) - { - lpuexcpte = i == -1; - v80 = lpuexcpte && v25 != 0; - if ( v80 ) - { - v30 = (_WORD *)v25[2]; - v31 = (unsigned int)v30 >= v25[3] ? (*(int (__fastcall **)(_DWORD *))(*v25 + 36))(v25) : *v30; - lpuexcpte = 0; - if ( v31 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpte = v80; - } - } - v27 = a3 == -1; - v79 = v27 && a2 != 0; - if ( v79 ) - { - v59 = (_WORD *)a2[2]; - v60 = (unsigned int)v59 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v59; - v27 = 0; - if ( v60 == -1 ) - { - a2 = 0; - v27 = v79; - } - } - lpuexcptd = (v92 < v83) & (lpuexcpte ^ v27); - if ( !lpuexcptd ) - break; - v28 = WORD2(a1); - if ( (_DWORD)a1 - && WORD2(a1) == 0xFFFF - && ((v61 = *(__int16 **)(a1 + 8), (unsigned int)v61 >= *(_DWORD *)(a1 + 12)) - ? (v28 = (*(int (**)(void))(*(_DWORD *)a1 + 36))()) - : (v28 = *v61), - v28 == -1) ) - { - LODWORD(a1) = 0; - if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != 0xFFFF ) - goto LABEL_171; - } - else if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != v28 ) - { - goto LABEL_171; - } - v25 = (_DWORD *)a1; - v29 = *(_DWORD *)(a1 + 8); - if ( v29 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v25 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v29 + 2; - } - ++v92; - WORD2(a1) = -1; - } - if ( v92 == v83 ) - { -LABEL_181: - v87 = 1; - } - else - { -LABEL_171: - if ( v92 ) - goto LABEL_102; - v87 = (*(_BYTE *)(a4 + 13) & 2) == 0; - lpuexcptd = (*(_BYTE *)(a4 + 13) & 2) != 0; - } -LABEL_121: - v24 = v75 + 1; - if ( v75 + 1 <= 3 && !lpuexcptd ) - goto LABEL_123; - v6 = v87 & (v74 > 1); -LABEL_12: - if ( !v6 ) - { - if ( v87 ) - { - if ( *(_DWORD *)(v109 - 12) > 1u ) - goto LABEL_182; - goto LABEL_150; - } - goto LABEL_102; - } - if ( v77 ) - v7 = *(_DWORD *)(v107 + 40); - else - v7 = *(_DWORD *)(v107 + 32); - v88 = v7; - v8 = WORD2(a1); - v9 = (_DWORD *)a1; - v95 = 1; - while ( 2 ) - { - lpuexcpta = v8 == -1; - v82 = lpuexcpta & (v9 != 0); - if ( v82 ) - { - v13 = (_WORD *)v9[2]; - v14 = (unsigned int)v13 >= v9[3] ? (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) : *v13; - lpuexcpta = 0; - if ( v14 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = v82; - } - } - v10 = a3 == -1; - v81 = v10 & (a2 != 0); - if ( !v81 - || ((v55 = (__int16 *)a2[2], (unsigned int)v55 >= a2[3]) - ? (v56 = (*(int (**)(void))(*a2 + 36))()) - : (v56 = *v55), - v10 = 0, - v56 != -1) ) - { - if ( v95 >= v74 ) - break; - goto LABEL_18; - } - v10 = v81; - a2 = 0; - if ( v95 < v74 ) - { -LABEL_18: - if ( lpuexcpta == v10 ) - break; - v11 = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v58 = *(_WORD **)(a1 + 8); - v11 = (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v58; - if ( v11 == -1 ) - LODWORD(a1) = 0; - } - if ( *(_WORD *)(v88 + 2 * v95) != v11 ) - goto LABEL_102; - v9 = (_DWORD *)a1; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v9 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v12 + 2; - } - ++v95; - WORD2(a1) = -1; - v8 = -1; - continue; - } - break; - } - if ( v95 != v74 ) - goto LABEL_102; - if ( *(_DWORD *)(v109 - 12) <= 1u ) - goto LABEL_150; -LABEL_182: - first_not_of = std::string::find_first_not_of(&v109, (std::string *)0x30, 0, (unsigned int)v108); - if ( first_not_of ) - { - v63 = *(_DWORD *)(v109 - 12); - if ( first_not_of == -1 ) - first_not_of = v63 - 1; - if ( first_not_of > v63 ) - first_not_of = *(_DWORD *)(v109 - 12); - std::string::_M_mutate((char **)&v109, 0, first_not_of, 0, v70); - } -LABEL_150: - if ( v77 ) - { - v65 = (int *)v109; - if ( *(int *)(v109 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v109); - v65 = (int *)v109; - } - if ( *(_BYTE *)v65 != 48 ) - { - if ( *(v65 - 1) >= 0 ) - std::string::_M_leak_hard((char **)&v109); - std::string::_M_replace_aux((char **)&v109, 0, 0, 1u, 45, (char)v71); - *(_DWORD *)(v109 - 4) = -1; - } - } - if ( *(_DWORD *)(*(_DWORD *)&v108[1] - 12) ) - { - v57 = (std::string *)(char)v97; - if ( v78 ) - v57 = (std::string *)v72; - std::string::push_back((int *)&v108[1], v57, (char)v68); - if ( !(unsigned __int8)std::__verify_grouping( - *(char **)(v107 + 8), - *(_DWORD *)(v107 + 12), - (const char **)&v108[1]) ) - *a5 |= 4u; - } - if ( v78 && *(std::locale::facet **)(v107 + 48) != v97 ) - { -LABEL_102: - *a5 |= 4u; - goto LABEL_103; - } - std::string::swap(a6, (std::string *)&v109, v68); -LABEL_103: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - lpuexcpth = a1; - v42 = v109; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v109 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_179; - } - else - { - v43 = *(_DWORD *)(v109 - 4); - *(_DWORD *)(v109 - 4) = v43 - 1; - if ( v43 > 0 ) - goto LABEL_107; -LABEL_179: - std::string::_Rep::_M_destroy((void *)(v42 - 12), (int)v108); - } -LABEL_107: - v44 = *(_DWORD *)&v108[1]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v108[1] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpth; -LABEL_177: - std::string::_Rep::_M_destroy((void *)(v44 - 12), (int)&v109); - return lpuexcpth; - } - v45 = *(_DWORD *)(*(_DWORD *)&v108[1] - 4); - *(_DWORD *)(*(_DWORD *)&v108[1] - 4) = v45 - 1; - if ( v45 <= 0 ) - goto LABEL_177; - return lpuexcpth; - case 3: - if ( *(_DWORD *)(v107 + 36) ) - { - lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptd - && **(_WORD **)(v107 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v74 = *(_DWORD *)(v107 + 36); - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - goto LABEL_181; - } - if ( !*(_DWORD *)(v107 + 44) ) - { - if ( !*(_DWORD *)(v107 + 36) ) - goto LABEL_53; -LABEL_137: - lpuexcptd = 0; - v87 = 1; - v77 = 1; - goto LABEL_121; - } - } - else if ( !*(_DWORD *)(v107 + 44) ) - { - goto LABEL_53; - } - lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( lpuexcptd - || **(_WORD **)(v107 + 40) != (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) - { - if ( !*(_DWORD *)(v107 + 36) || *(_DWORD *)(v107 + 44) ) - { -LABEL_53: - lpuexcptd = v76; - v87 = !v76; - goto LABEL_121; - } - goto LABEL_137; - } - v74 = *(_DWORD *)(v107 + 44); - std::wstreambuf::sbumpc((_DWORD *)a1); - v87 = 1; - WORD2(a1) = -1; - v77 = 1; - goto LABEL_121; - case 4: - v15 = WORD2(a1); - v16 = (_DWORD *)a1; - while ( 2 ) - { - lpuexcptb = v15 == -1; - v89 = lpuexcptb & (v16 != 0); - if ( v89 ) - { - v47 = (_WORD *)v16[2]; - v48 = (unsigned int)v47 >= v16[3] ? (*(int (__fastcall **)(_DWORD *))(*v16 + 36))(v16) : *v47; - lpuexcptb = 0; - if ( v48 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptb = v89; - } - } - v17 = a3 == -1; - v90 = v17 & (a2 != 0); - if ( v90 - && ((v40 = (__int16 *)a2[2], (unsigned int)v40 >= a2[3]) - ? (v41 = (*(int (**)(void))(*a2 + 36))()) - : (v41 = *v40), - v17 = 0, - v41 == -1) ) - { - a2 = 0; - if ( lpuexcptb == v90 ) - goto LABEL_100; - } - else if ( lpuexcptb == v17 ) - { - goto LABEL_100; - } - v18 = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v49 = *(_WORD **)(a1 + 8); - v18 = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; - if ( v18 == 0xFFFF ) - LODWORD(a1) = 0; - } - v19 = (_WORD *)(v107 + 62); - do - { - if ( v18 == *v19 ) - { - v93 = std::money_base::_S_atoms[((int)v19 - v107 - 60) >> 1]; - v86 = *(_DWORD *)(v109 - 12); - lpuexcptg = (std::string *)(v86 + 1); - if ( (unsigned int)(v86 + 1) > *(_DWORD *)(v109 - 8) || *(int *)(v109 - 4) > 0 ) - std::string::reserve(&v109, lpuexcptg, (unsigned int)v68); - v97 = (std::locale::facet *)((char *)v97 + 1); - *(_BYTE *)(v109 + *(_DWORD *)(v109 - 12)) = v93; - v39 = v109; - *(_DWORD *)(v109 - 12) = lpuexcptg; - *(_DWORD *)(v39 - 4) = 0; - *(_BYTE *)(v39 + v86 + 1) = 0; - v16 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - goto LABEL_49; - goto LABEL_95; - } - ++v19; - } - while ( v19 != (_WORD *)(v107 + 82) ); - v20 = v78 | (*(_WORD *)(v107 + 18) != v18); - if ( !v20 ) - { - if ( *(int *)(v107 + 48) > 0 ) - { - v50 = (char)v97; - v78 = 1; - v97 = 0; - v72 = v50; - goto LABEL_48; - } - v78 = 0; -LABEL_100: - v87 = 1; -LABEL_101: - if ( !*(_DWORD *)(v109 - 12) ) - goto LABEL_102; - goto LABEL_120; - } - v87 = *(_BYTE *)(v107 + 16); - if ( v87 ) - { - if ( *(_WORD *)(v107 + 20) != v18 ) - goto LABEL_101; - if ( !v78 ) - { - if ( v97 ) - { - v91 = *(_DWORD *)(*(_DWORD *)&v108[1] - 12); - lpuexcptc = (std::string *)(v91 + 1); - if ( (unsigned int)(v91 + 1) > *(_DWORD *)(*(_DWORD *)&v108[1] - 8) - || *(int *)(*(_DWORD *)&v108[1] - 4) > 0 ) - { - std::string::reserve((int *)&v108[1], lpuexcptc, (unsigned int)v68); - } - v21 = (char)v97; - v97 = 0; - *(_BYTE *)(*(_DWORD *)&v108[1] + *(_DWORD *)(*(_DWORD *)&v108[1] - 12)) = v21; - v22 = *(_DWORD *)&v108[1]; - *(_DWORD *)(*(_DWORD *)&v108[1] - 12) = lpuexcptc; - *(_DWORD *)(v22 - 4) = 0; - *(_BYTE *)(v22 + v91 + 1) = 0; -LABEL_48: - v16 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - { -LABEL_49: - v16[2] = v23 + 2; -LABEL_50: - WORD2(a1) = -1; - v15 = -1; - continue; - } -LABEL_95: - (*(void (__fastcall **)(_DWORD *))(*v16 + 40))(v16); - v16 = (_DWORD *)a1; - goto LABEL_50; - } - v87 = 0; - goto LABEL_101; - } - v20 = v78; - } - break; - } - v87 = v20; - if ( !*(_DWORD *)(v109 - 12) ) - goto LABEL_102; - goto LABEL_120; - default: - lpuexcptd = 0; - v87 = 1; - goto LABEL_121; - } - } -} -// 4C215C: variable 'v69' is possibly undefined -// 4C147D: variable 'v66' is possibly undefined -// 4C14BB: variable 'v67' is possibly undefined -// 4C1722: variable 'v68' is possibly undefined -// 4C1FEB: variable 'v70' is possibly undefined -// 4C2228: variable 'v71' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 53F598: using guessed type signed __int32 std::moneypunct::id; -// 560704: using guessed type int (*off_560704)(); - -//----- (004C2400) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); -} - -//----- (004C2410) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (004C2420) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -struct _Unwind_Exception *__stdcall std::money_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - char a4, - int a5, - _DWORD *a6, - int *a7) -{ - struct _Unwind_Exception *v7; // eax - int v8; // ecx - unsigned int v9; // eax - int v10; // eax - int v11; // eax - void *v13; // [esp+20h] [ebp-68h] - unsigned int v14; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-58h] - int v16; // [esp+7Bh] [ebp-Dh] BYREF - int v17[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v13 = std::use_facet>(a5 + 108); - v17[0] = (int)std::string::_S_construct(0, 0); - if ( a4 ) - v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a5, - a6, - v17); - else - v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a5, - a6, - v17); - v8 = v17[0]; - lpuexcpt = v7; - v9 = *(_DWORD *)(v17[0] - 12); - v14 = v9; - if ( v9 ) - { - std::wstring::resize(a7, v9, 0); - v10 = *a7; - if ( *(int *)(*a7 - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)a7); - v10 = *a7; - } - (*(void (__thiscall **)(void *, int, unsigned int, int))(*(_DWORD *)v13 + 44))(v13, v17[0], v17[0] + v14, v10); - v8 = v17[0]; - } - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; -LABEL_12: - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)&v16); - return lpuexcpt; - } - v11 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v11 - 1; - if ( v11 <= 0 ) - goto LABEL_12; - return lpuexcpt; -} -// 4C2637: positive sp value 4 has been found -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C2650) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -struct _Unwind_Exception *__stdcall std::money_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - char a4, - int a5, - _DWORD *a6, - long double *a7) -{ - struct _Unwind_Exception *v7; // eax - char *v8; // ecx - int v9; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-58h] - char *String; // [esp+78h] [ebp-10h] BYREF - int c_locale; // [esp+7Ch] [ebp-Ch] BYREF - - String = (char *)std::string::_S_construct(0, 0); - if ( a4 ) - v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a5, - a6, - (int *)&String); - else - v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a5, - a6, - (int *)&String); - lpuexcpt = v7; - c_locale = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v(String, a7, a6); - v8 = String; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) - return lpuexcpt; -LABEL_8: - std::string::_Rep::_M_destroy(v8 - 12, (int)&c_locale); - return lpuexcpt; - } - v9 = *((_DWORD *)String - 1); - *((_DWORD *)String - 1) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_8; - return lpuexcpt; -} -// 4C27E0: positive sp value 4 has been found -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C2800) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - __int64 a2, - unsigned __int8 a3, - int a4, - char a5, - struct _Unwind_Exception **a6) -{ - __int64 (__stdcall *v6)(__int64, char, int, char, struct _Unwind_Exception **); // edx - - v6 = *(__int64 (__stdcall **)(__int64, char, int, char, struct _Unwind_Exception **))(*(_DWORD *)this + 12); - if ( v6 != std::money_put>::do_put ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, struct _Unwind_Exception **))v6)( - a2, - HIDWORD(a2), - a3, - a4, - a5, - a6); - if ( a3 ) - return std::money_put>::_M_insert(a2, a4, a5, a6); - return std::money_put>::_M_insert(a2, a4, a5, a6); -} - -//----- (004C28A0) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6) -{ - return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (004C28C0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::do_put( - __int64 a1, - char a2, - int a3, - char a4, - struct _Unwind_Exception **a5) -{ - if ( a2 ) - return std::money_put>::_M_insert(a1, a3, a4, a5); - else - return std::money_put>::_M_insert(a1, a3, a4, a5); -} - -//----- (004C2930) -------------------------------------------------------- -__int64 __thiscall std::money_put>::do_put( - void *this, - __int64 a2, - int a3, - int a4, - int a5, - long double a6) -{ - void *v6; // esp - void *v7; // esp - int v8; // eax - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // al - void (__thiscall *v13)(_BYTE *, void *, char *, char *); // eax - __int64 v14; // rax - int *v15; // ecx - int v16; // eax - const std::locale *v18[22]; // [esp-30h] [ebp-C8h] BYREF - char *v19; // [esp+28h] [ebp-70h] - int v20; // [esp+2Ch] [ebp-6Ch] - int v21; // [esp+30h] [ebp-68h] - void *v22; // [esp+34h] [ebp-64h] - char *v23; // [esp+38h] [ebp-60h] - _BYTE *v24; // [esp+3Ch] [ebp-5Ch] - __int64 Size; // [esp+40h] [ebp-58h] - void *Src; // [esp+48h] [ebp-50h] - char v27[5]; // [esp+87h] [ebp-11h] BYREF - int *v28[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v22 = this; - v21 = a3; - v20 = a5; - std::locale::locale((volatile signed __int32 **)&v27[1], (volatile signed __int32 **)(a4 + 108), v18[13]); - v24 = std::use_facet>((int)&v27[1]); - v6 = alloca(80); - v7 = alloca(80); - LODWORD(Size) = v18; - Src = v18; - v28[0] = (int *)std::locale::facet::_S_get_c_locale(); - v8 = std::__convert_from_v(v28, (char *)Size, 64, "%.*Lf", 0, a6); - LODWORD(Size) = v8; - if ( v8 > 63 ) - { - LODWORD(Size) = v8 + 1; - v9 = 16 * ((unsigned int)(v8 + 28) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v23 = (char *)v18; - Src = v18; - v28[0] = (int *)std::locale::facet::_S_get_c_locale(); - LODWORD(Size) = std::__convert_from_v(v28, v23, Size, "%.*Lf", 0, a6); - } - std::string::string(v28, Size, 0, (int)v27); - v23 = (char *)v28[0]; - if ( *(v28[0] - 1) >= 0 ) - { - std::string::_M_leak_hard((char **)v28); - v23 = (char *)v28[0]; - } - v19 = (char *)Src + Size; - v12 = v24[28]; - if ( v12 == 1 ) - goto LABEL_8; - if ( v12 ) - { - v13 = *(void (__thiscall **)(_BYTE *, void *, char *, char *))(*(_DWORD *)v24 + 28); - if ( (char *)v13 == (char *)std::ctype::do_widen ) - goto LABEL_8; -LABEL_19: - v13(v24, Src, v19, v23); - goto LABEL_10; - } - std::ctype::_M_widen_init((int)v24); - v13 = *(void (__thiscall **)(_BYTE *, void *, char *, char *))(*(_DWORD *)v24 + 28); - if ( (char *)v13 != (char *)std::ctype::do_widen ) - goto LABEL_19; -LABEL_8: - if ( v19 != Src ) - memcpy(v23, Src, Size); -LABEL_10: - if ( (_BYTE)v21 ) - v14 = std::money_put>::_M_insert( - a2, - a4, - v20, - (struct _Unwind_Exception **)v28); - else - v14 = std::money_put>::_M_insert( - a2, - a4, - v20, - (struct _Unwind_Exception **)v28); - Size = v14; - v15 = v28[0]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(v28[0] - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_14; -LABEL_17: - std::string::_Rep::_M_destroy(v15 - 3, (int)v27); - goto LABEL_14; - } - v16 = *(v28[0] - 1); - *(v28[0] - 1) = v16 - 1; - if ( v16 <= 0 ) - goto LABEL_17; -LABEL_14: - std::locale::~locale((_DWORD **)&v27[1]); - return Size; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C2C40) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - char a3, - struct _Unwind_Exception **a4) -{ - int v4; // ecx - char *v5; // edx - struct _Unwind_Exception *v6; // eax - unsigned __int8 *v7; // ecx - int v9; // eax - bool v10; // sf - size_t v11; // eax - _BYTE *v12; // eax - int v13; // eax - size_t v14; // edx - size_t v15; // eax - bool v16; // dl - char v17; // al - unsigned int v18; // ecx - size_t v19; // edx - int v20; // eax - char v21; // dl - int v22; // ebx - _DWORD *v23; // eax - unsigned int v24; // [esp+4h] [ebp-B4h] - char v25; // [esp+4h] [ebp-B4h] - unsigned int v26; // [esp+4h] [ebp-B4h] - const std::string *v27; // [esp+4h] [ebp-B4h] - unsigned int v28; // [esp+8h] [ebp-B0h] - unsigned int *v29; // [esp+8h] [ebp-B0h] - char *v30; // [esp+8h] [ebp-B0h] - unsigned int v31; // [esp+8h] [ebp-B0h] - unsigned int v32; // [esp+Ch] [ebp-ACh] - char v33; // [esp+10h] [ebp-A8h] - char v34; // [esp+28h] [ebp-90h] - char *v35; // [esp+2Ch] [ebp-8Ch] - std::locale::_Impl *v36; // [esp+30h] [ebp-88h] - int v37; // [esp+34h] [ebp-84h] - size_t v38; // [esp+34h] [ebp-84h] - _BYTE *v39; // [esp+38h] [ebp-80h] - bool v40; // [esp+38h] [ebp-80h] - signed int v41; // [esp+3Ch] [ebp-7Ch] - int v42; // [esp+3Ch] [ebp-7Ch] - int *v43; // [esp+40h] [ebp-78h] - char *v44; // [esp+40h] [ebp-78h] - std::locale::facet *v45; // [esp+4Ch] [ebp-6Ch] - std::locale::facet *v46; // [esp+4Ch] [ebp-6Ch] - _DWORD *v47; // [esp+50h] [ebp-68h] - size_t v48; // [esp+50h] [ebp-68h] - size_t v49; // [esp+50h] [ebp-68h] - __int64 v50; // [esp+54h] [ebp-64h] - int v51; // [esp+5Ch] [ebp-5Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-58h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] - char *lpuexcptb; // [esp+60h] [ebp-58h] - char lpuexcptc; // [esp+60h] [ebp-58h] - char v56[5]; // [esp+A3h] [ebp-15h] BYREF - unsigned int v57; // [esp+A8h] [ebp-10h] BYREF - int v58; // [esp+ACh] [ebp-Ch] BYREF - char v59; // [esp+B0h] [ebp-8h] BYREF - - v50 = a1; - v47 = std::use_facet>(a2 + 108); - v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); - v51 = *v43; - if ( !*v43 ) - { - v23 = operator new(0x44u); - *v23 = &off_5606D4; - v23[1] = 0; - v23[2] = 0; - v23[3] = 0; - *((_WORD *)v23 + 8) = 0; - *((_BYTE *)v23 + 18) = 0; - v23[5] = 0; - v23[6] = 0; - v23[7] = 0; - v23[8] = 0; - v23[9] = 0; - v23[10] = 0; - v23[11] = 0; - v23[12] = 0; - v23[13] = 0; - *((_BYTE *)v23 + 67) = 0; - v36 = (std::locale::_Impl *)v23; - std::__moneypunct_cache::_M_cache((int)v23, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v36, v45, v28); - v51 = *v43; - } - v4 = *((_DWORD *)*a4 - 3); - lpuexcpt = *a4; - if ( *(_BYTE *)*a4 == *(_BYTE *)(v51 + 56) ) - { - v58 = *(_DWORD *)(v51 + 52); - if ( !v4 ) - goto LABEL_10; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v44 = *(char **)(v51 + 36); - v46 = *(std::locale::facet **)(v51 + 40); - } - else - { - v5 = *(char **)(v51 + 28); - v58 = *(_DWORD *)(v51 + 48); - v44 = v5; - v46 = *(std::locale::facet **)(v51 + 32); - } - v6 = lpuexcpt; - v7 = (unsigned __int8 *)lpuexcpt + v4; - if ( v7 > (unsigned __int8 *)lpuexcpt ) - { - do - { - if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) - break; - v6 = (struct _Unwind_Exception *)((char *)v6 + 1); - } - while ( v7 != (unsigned __int8 *)v6 ); - v48 = v6 - lpuexcpt; - if ( v6 != lpuexcpt ) - { - v29 = &v57; - *(_DWORD *)&v56[1] = std::string::_S_construct(0, 0); - std::string::reserve((int *)&v56[1], (std::string *)(2 * v48), v24); - v9 = *(_DWORD *)(v51 + 44); - v41 = v48 - v9; - if ( (int)(v48 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v48 - v9; - if ( v10 ) - v11 = v48; - v41 = v11; - if ( *(_DWORD *)(v51 + 12) ) - { - std::string::_M_replace_aux((char **)&v56[1], 0, *(_DWORD *)(*(_DWORD *)&v56[1] - 12), 2 * v11, 0, v33); - v37 = *(_DWORD *)(v51 + 12); - v35 = *(char **)(v51 + 8); - v34 = *(_BYTE *)(v51 + 18); - v12 = *(_BYTE **)&v56[1]; - if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v56[1]); - v12 = *(_BYTE **)&v56[1]; - } - v39 = std::__add_grouping(v12, v34, v35, v37, lpuexcpt, (_BYTE *)lpuexcpt + v41); - v13 = *(_DWORD *)&v56[1]; - if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v56[1]); - v13 = *(_DWORD *)&v56[1]; - } - v14 = (size_t)&v39[-v13]; - v15 = *(_DWORD *)(v13 - 12); - if ( v14 > v15 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v14, - v15); - std::string::_M_mutate((char **)&v56[1], v14, v15 - v14, 0, v32); - v9 = *(_DWORD *)(v51 + 44); - } - else - { - std::string::assign((char **)&v56[1], lpuexcpt, v11, (unsigned int)&v57); - v9 = *(_DWORD *)(v51 + 44); - } - } - if ( v9 > 0 ) - { - std::string::push_back((int *)&v56[1], (std::string *)*(char *)(v51 + 17), v25); - if ( v41 < 0 ) - { - std::string::append((int *)&v56[1], -v41, *(_BYTE *)(v51 + 57), (char)v29); - std::string::append((int *)&v56[1], lpuexcpt, v48, v31); - } - else - { - std::string::append( - (int *)&v56[1], - (struct _Unwind_Exception *)((char *)lpuexcpt + v41), - *(_DWORD *)(v51 + 44), - (unsigned int)v29); - } - } - v42 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12)); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12) + *(_DWORD *)(v51 + 24)); - v30 = v56; - v57 = (unsigned int)std::string::_S_construct(0, 0); - std::string::reserve((int *)&v57, (std::string *)(2 * (_DWORD)lpuexcpta), v26); - v49 = *(_DWORD *)(a2 + 8); - v16 = v49 > (unsigned int)lpuexcpta && v42 == 16; - v38 = v49 - (_DWORD)lpuexcpta; - lpuexcptb = (char *)&v58; - v40 = v16; - do - { - switch ( *lpuexcptb ) - { - case 0: - if ( v40 ) - { - v17 = a3; - goto LABEL_33; - } - break; - case 1: - v17 = a3; - if ( v40 ) -LABEL_33: - std::string::append((int *)&v57, v38, v17, (char)v30); - else - std::string::push_back((int *)&v57, (std::string *)a3, (char)v27); - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - std::string::append((int *)&v57, *(std::string **)(v51 + 20), *(_DWORD *)(v51 + 24), (unsigned int)v30); - break; - case 3: - if ( v46 ) - std::string::push_back((int *)&v57, (std::string *)*v44, (char)v27); - break; - case 4: - std::string::append((int *)&v57, (std::string *)&v56[1], v27); - break; - default: - break; - } - ++lpuexcptb; - } - while ( lpuexcptb != &v59 ); - if ( (unsigned int)v46 > 1 ) - { - std::string::append((int *)&v57, (std::string *)(v44 + 1), (size_t)v46 - 1, (unsigned int)v30); - v18 = v57; - v19 = *(_DWORD *)(v57 - 12); - if ( v49 > v19 ) - goto LABEL_40; - } - else - { - v18 = v57; - v19 = *(_DWORD *)(v57 - 12); - if ( v49 > v19 ) - { -LABEL_40: - if ( v42 == 32 ) - std::string::append((int *)&v57, v49 - v19, a3, (char)v30); - else - std::string::_M_replace_aux((char **)&v57, 0, 0, v49 - v19, a3, v33); - v18 = v57; - goto LABEL_43; - } - } - v49 = v19; -LABEL_43: - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v20 = (*(int (__thiscall **)(_DWORD, unsigned int, size_t))(*(_DWORD *)a1 + 48))(a1, v18, v49); - v21 = 0; - v18 = v57; - if ( v20 != v49 ) - v21 = 1; - lpuexcptc = v21; - } - v22 = HIDWORD(a1); - LOBYTE(v22) = lpuexcptc; - HIDWORD(v50) = v22; - std::string::_Rep::_M_dispose((volatile signed __int32 *)(v18 - 12), (int)v56); - std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v56[1] - 12), (int)&v57); - } - } -LABEL_10: - *(_DWORD *)(a2 + 8) = 0; - return v50; -} -// 4C32D5: variable 'v28' is possibly undefined -// 4C2DB2: variable 'v24' is possibly undefined -// 4C2E12: variable 'v33' is possibly undefined -// 4C2EC2: variable 'v32' is possibly undefined -// 4C2F38: variable 'v26' is possibly undefined -// 4C2FAE: variable 'v27' is possibly undefined -// 4C2FE3: variable 'v30' is possibly undefined -// 4C3164: variable 'v25' is possibly undefined -// 4C318C: variable 'v29' is possibly undefined -// 4C334C: variable 'v31' is possibly undefined -// 53F58C: using guessed type signed __int32 std::moneypunct::id; -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (004C3450) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - char a3, - struct _Unwind_Exception **a4) -{ - int v4; // ecx - char *v5; // edx - struct _Unwind_Exception *v6; // eax - unsigned __int8 *v7; // ecx - int v9; // eax - bool v10; // sf - size_t v11; // eax - _BYTE *v12; // eax - int v13; // eax - size_t v14; // edx - size_t v15; // eax - bool v16; // dl - char v17; // al - unsigned int v18; // ecx - size_t v19; // edx - int v20; // eax - char v21; // dl - int v22; // ebx - _DWORD *v23; // eax - unsigned int v24; // [esp+4h] [ebp-B4h] - char v25; // [esp+4h] [ebp-B4h] - unsigned int v26; // [esp+4h] [ebp-B4h] - const std::string *v27; // [esp+4h] [ebp-B4h] - unsigned int v28; // [esp+8h] [ebp-B0h] - unsigned int *v29; // [esp+8h] [ebp-B0h] - char *v30; // [esp+8h] [ebp-B0h] - unsigned int v31; // [esp+8h] [ebp-B0h] - unsigned int v32; // [esp+Ch] [ebp-ACh] - char v33; // [esp+10h] [ebp-A8h] - char v34; // [esp+28h] [ebp-90h] - char *v35; // [esp+2Ch] [ebp-8Ch] - std::locale::_Impl *v36; // [esp+30h] [ebp-88h] - int v37; // [esp+34h] [ebp-84h] - size_t v38; // [esp+34h] [ebp-84h] - _BYTE *v39; // [esp+38h] [ebp-80h] - bool v40; // [esp+38h] [ebp-80h] - signed int v41; // [esp+3Ch] [ebp-7Ch] - int v42; // [esp+3Ch] [ebp-7Ch] - int *v43; // [esp+40h] [ebp-78h] - char *v44; // [esp+40h] [ebp-78h] - std::locale::facet *v45; // [esp+4Ch] [ebp-6Ch] - std::locale::facet *v46; // [esp+4Ch] [ebp-6Ch] - _DWORD *v47; // [esp+50h] [ebp-68h] - size_t v48; // [esp+50h] [ebp-68h] - size_t v49; // [esp+50h] [ebp-68h] - __int64 v50; // [esp+54h] [ebp-64h] - int v51; // [esp+5Ch] [ebp-5Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-58h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] - char *lpuexcptb; // [esp+60h] [ebp-58h] - char lpuexcptc; // [esp+60h] [ebp-58h] - char v56[5]; // [esp+A3h] [ebp-15h] BYREF - unsigned int v57; // [esp+A8h] [ebp-10h] BYREF - int v58; // [esp+ACh] [ebp-Ch] BYREF - char v59; // [esp+B0h] [ebp-8h] BYREF - - v50 = a1; - v47 = std::use_facet>(a2 + 108); - v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); - v51 = *v43; - if ( !*v43 ) - { - v23 = operator new(0x44u); - *v23 = &off_5606E4; - v23[1] = 0; - v23[2] = 0; - v23[3] = 0; - *((_WORD *)v23 + 8) = 0; - *((_BYTE *)v23 + 18) = 0; - v23[5] = 0; - v23[6] = 0; - v23[7] = 0; - v23[8] = 0; - v23[9] = 0; - v23[10] = 0; - v23[11] = 0; - v23[12] = 0; - v23[13] = 0; - *((_BYTE *)v23 + 67) = 0; - v36 = (std::locale::_Impl *)v23; - std::__moneypunct_cache::_M_cache((int)v23, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v36, v45, v28); - v51 = *v43; - } - v4 = *((_DWORD *)*a4 - 3); - lpuexcpt = *a4; - if ( *(_BYTE *)*a4 == *(_BYTE *)(v51 + 56) ) - { - v58 = *(_DWORD *)(v51 + 52); - if ( !v4 ) - goto LABEL_10; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v44 = *(char **)(v51 + 36); - v46 = *(std::locale::facet **)(v51 + 40); - } - else - { - v5 = *(char **)(v51 + 28); - v58 = *(_DWORD *)(v51 + 48); - v44 = v5; - v46 = *(std::locale::facet **)(v51 + 32); - } - v6 = lpuexcpt; - v7 = (unsigned __int8 *)lpuexcpt + v4; - if ( v7 > (unsigned __int8 *)lpuexcpt ) - { - do - { - if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) - break; - v6 = (struct _Unwind_Exception *)((char *)v6 + 1); - } - while ( v7 != (unsigned __int8 *)v6 ); - v48 = v6 - lpuexcpt; - if ( v6 != lpuexcpt ) - { - v29 = &v57; - *(_DWORD *)&v56[1] = std::string::_S_construct(0, 0); - std::string::reserve((int *)&v56[1], (std::string *)(2 * v48), v24); - v9 = *(_DWORD *)(v51 + 44); - v41 = v48 - v9; - if ( (int)(v48 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v48 - v9; - if ( v10 ) - v11 = v48; - v41 = v11; - if ( *(_DWORD *)(v51 + 12) ) - { - std::string::_M_replace_aux((char **)&v56[1], 0, *(_DWORD *)(*(_DWORD *)&v56[1] - 12), 2 * v11, 0, v33); - v37 = *(_DWORD *)(v51 + 12); - v35 = *(char **)(v51 + 8); - v34 = *(_BYTE *)(v51 + 18); - v12 = *(_BYTE **)&v56[1]; - if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v56[1]); - v12 = *(_BYTE **)&v56[1]; - } - v39 = std::__add_grouping(v12, v34, v35, v37, lpuexcpt, (_BYTE *)lpuexcpt + v41); - v13 = *(_DWORD *)&v56[1]; - if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v56[1]); - v13 = *(_DWORD *)&v56[1]; - } - v14 = (size_t)&v39[-v13]; - v15 = *(_DWORD *)(v13 - 12); - if ( v14 > v15 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v14, - v15); - std::string::_M_mutate((char **)&v56[1], v14, v15 - v14, 0, v32); - v9 = *(_DWORD *)(v51 + 44); - } - else - { - std::string::assign((char **)&v56[1], lpuexcpt, v11, (unsigned int)&v57); - v9 = *(_DWORD *)(v51 + 44); - } - } - if ( v9 > 0 ) - { - std::string::push_back((int *)&v56[1], (std::string *)*(char *)(v51 + 17), v25); - if ( v41 < 0 ) - { - std::string::append((int *)&v56[1], -v41, *(_BYTE *)(v51 + 57), (char)v29); - std::string::append((int *)&v56[1], lpuexcpt, v48, v31); - } - else - { - std::string::append( - (int *)&v56[1], - (struct _Unwind_Exception *)((char *)lpuexcpt + v41), - *(_DWORD *)(v51 + 44), - (unsigned int)v29); - } - } - v42 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12)); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12) + *(_DWORD *)(v51 + 24)); - v30 = v56; - v57 = (unsigned int)std::string::_S_construct(0, 0); - std::string::reserve((int *)&v57, (std::string *)(2 * (_DWORD)lpuexcpta), v26); - v49 = *(_DWORD *)(a2 + 8); - v16 = v49 > (unsigned int)lpuexcpta && v42 == 16; - v38 = v49 - (_DWORD)lpuexcpta; - lpuexcptb = (char *)&v58; - v40 = v16; - do - { - switch ( *lpuexcptb ) - { - case 0: - if ( v40 ) - { - v17 = a3; - goto LABEL_33; - } - break; - case 1: - v17 = a3; - if ( v40 ) -LABEL_33: - std::string::append((int *)&v57, v38, v17, (char)v30); - else - std::string::push_back((int *)&v57, (std::string *)a3, (char)v27); - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - std::string::append((int *)&v57, *(std::string **)(v51 + 20), *(_DWORD *)(v51 + 24), (unsigned int)v30); - break; - case 3: - if ( v46 ) - std::string::push_back((int *)&v57, (std::string *)*v44, (char)v27); - break; - case 4: - std::string::append((int *)&v57, (std::string *)&v56[1], v27); - break; - default: - break; - } - ++lpuexcptb; - } - while ( lpuexcptb != &v59 ); - if ( (unsigned int)v46 > 1 ) - { - std::string::append((int *)&v57, (std::string *)(v44 + 1), (size_t)v46 - 1, (unsigned int)v30); - v18 = v57; - v19 = *(_DWORD *)(v57 - 12); - if ( v49 > v19 ) - goto LABEL_40; - } - else - { - v18 = v57; - v19 = *(_DWORD *)(v57 - 12); - if ( v49 > v19 ) - { -LABEL_40: - if ( v42 == 32 ) - std::string::append((int *)&v57, v49 - v19, a3, (char)v30); - else - std::string::_M_replace_aux((char **)&v57, 0, 0, v49 - v19, a3, v33); - v18 = v57; - goto LABEL_43; - } - } - v49 = v19; -LABEL_43: - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v20 = (*(int (__thiscall **)(_DWORD, unsigned int, size_t))(*(_DWORD *)a1 + 48))(a1, v18, v49); - v21 = 0; - v18 = v57; - if ( v20 != v49 ) - v21 = 1; - lpuexcptc = v21; - } - v22 = HIDWORD(a1); - LOBYTE(v22) = lpuexcptc; - HIDWORD(v50) = v22; - std::string::_Rep::_M_dispose((volatile signed __int32 *)(v18 - 12), (int)v56); - std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v56[1] - 12), (int)&v57); - } - } -LABEL_10: - *(_DWORD *)(a2 + 8) = 0; - return v50; -} -// 4C3AE5: variable 'v28' is possibly undefined -// 4C35C2: variable 'v24' is possibly undefined -// 4C3622: variable 'v33' is possibly undefined -// 4C36D2: variable 'v32' is possibly undefined -// 4C3748: variable 'v26' is possibly undefined -// 4C37BE: variable 'v27' is possibly undefined -// 4C37F3: variable 'v30' is possibly undefined -// 4C3974: variable 'v25' is possibly undefined -// 4C399C: variable 'v29' is possibly undefined -// 4C3B5C: variable 'v31' is possibly undefined -// 53F590: using guessed type signed __int32 std::moneypunct::id; -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (004C3C60) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - __int64 a2, - unsigned __int8 a3, - int a4, - unsigned __int16 a5, - char **a6) -{ - __int64 (__stdcall *v6)(__int64, char, int, __int16, char **); // edx - - v6 = *(__int64 (__stdcall **)(__int64, char, int, __int16, char **))(*(_DWORD *)this + 12); - if ( v6 != std::money_put>::do_put ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, char **))v6)(a2, HIDWORD(a2), a3, a4, a5, a6); - if ( a3 ) - return std::money_put>::_M_insert(a2, a4, a5, a6); - return std::money_put>::_M_insert(a2, a4, a5, a6); -} - -//----- (004C3D00) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - unsigned __int16 a6) -{ - return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (004C3D20) -------------------------------------------------------- -__int64 __stdcall std::money_put>::do_put( - __int64 a1, - char a2, - int a3, - __int16 a4, - char **a5) -{ - if ( a2 ) - return std::money_put>::_M_insert(a1, a3, a4, a5); - else - return std::money_put>::_M_insert(a1, a3, a4, a5); -} - -//----- (004C3D90) -------------------------------------------------------- -__int64 __thiscall std::money_put>::do_put( - void *this, - __int64 a2, - int a3, - int a4, - int a5, - long double a6) -{ - void *v6; // esp - void *v7; // esp - int v8; // eax - int v9; // eax - void *v10; // esp - void *v11; // esp - int *v12; // eax - __int64 v13; // rax - int *v14; // ecx - int v15; // eax - int v17; // [esp-44h] [ebp-DCh] - int v18; // [esp-40h] [ebp-D8h] - int v19; // [esp-3Ch] [ebp-D4h] - int v20; // [esp-38h] [ebp-D0h] - int v21; // [esp-34h] [ebp-CCh] - char *v22[23]; // [esp-30h] [ebp-C8h] BYREF - char *v23; // [esp+2Ch] [ebp-6Ch] - int v24; // [esp+30h] [ebp-68h] - int v25; // [esp+34h] [ebp-64h] - void *v26; // [esp+38h] [ebp-60h] - void *v27; // [esp+3Ch] [ebp-5Ch] - __int64 lpuexcpt; // [esp+40h] [ebp-58h] - char **v29; // [esp+48h] [ebp-50h] - char v30[5]; // [esp+87h] [ebp-11h] BYREF - int *v31[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v26 = this; - v25 = a3; - v24 = a5; - std::locale::locale( - (volatile signed __int32 **)&v30[1], - (volatile signed __int32 **)(a4 + 108), - (const std::locale *)v22[13]); - v27 = std::use_facet>((int)&v30[1]); - v6 = alloca(80); - v7 = alloca(80); - LODWORD(lpuexcpt) = v22; - v29 = v22; - v31[0] = (int *)std::locale::facet::_S_get_c_locale(); - v8 = std::__convert_from_v(v31, (char *)lpuexcpt, 64, "%.*Lf", 0, a6); - LODWORD(lpuexcpt) = v8; - if ( v8 > 63 ) - { - LODWORD(lpuexcpt) = v8 + 1; - v9 = 16 * ((unsigned int)(v8 + 28) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v23 = (char *)v22; - v29 = v22; - v31[0] = (int *)std::locale::facet::_S_get_c_locale(); - LODWORD(lpuexcpt) = std::__convert_from_v(v31, v23, lpuexcpt, "%.*Lf", 0, a6); - } - std::wstring::basic_string(v31, lpuexcpt, 0, (int)v30); - v12 = v31[0]; - if ( *(v31[0] - 1) >= 0 ) - { - std::wstring::_M_leak_hard(v31); - v12 = v31[0]; - } - (*(void (__thiscall **)(void *, char **, char *, int *, int, int, int, int, int, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *))(*(_DWORD *)v27 + 44))( - v27, - v29, - (char *)v29 + lpuexcpt, - v12, - v17, - v18, - v19, - v20, - v21, - v22[0], - v22[1], - v22[2], - v22[3], - v22[4], - v22[5], - v22[6], - v22[7], - v22[8], - v22[9]); - if ( (_BYTE)v25 ) - v13 = std::money_put>::_M_insert(a2, a4, v24, (char **)v31); - else - v13 = std::money_put>::_M_insert(a2, a4, v24, (char **)v31); - lpuexcpt = v13; - v14 = v31[0]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(v31[0] - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_9; -LABEL_12: - std::wstring::_Rep::_M_destroy(v14 - 3, (int)v30); - goto LABEL_9; - } - v15 = *(v31[0] - 1); - *(v31[0] - 1) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_12; -LABEL_9: - std::locale::~locale((_DWORD **)&v30[1]); - return lpuexcpt; -} -// 4C3F0D: variable 'v17' is possibly undefined -// 4C3F0D: variable 'v18' is possibly undefined -// 4C3F0D: variable 'v19' is possibly undefined -// 4C3F0D: variable 'v20' is possibly undefined -// 4C3F0D: variable 'v21' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C4060) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - __int16 a3, - char **a4) -{ - int v4; // eax - char *v6; // edx - int v7; // eax - bool v8; // sf - unsigned int v9; // eax - unsigned int v10; // ebx - _WORD *v11; // edx - _WORD *v12; // eax - int v13; // edx - int v14; // eax - unsigned int v15; // edx - unsigned int v16; // eax - bool v17; // dl - __int16 v18; // ax - int v19; // ecx - unsigned int v20; // edx - int v21; // eax - char v22; // bl - int v23; // edx - _DWORD *v24; // eax - unsigned int v25; // [esp+8h] [ebp-B0h] - __int16 v26; // [esp+28h] [ebp-90h] - char *v27; // [esp+2Ch] [ebp-8Ch] - std::locale::_Impl *v28; // [esp+30h] [ebp-88h] - int v29; // [esp+34h] [ebp-84h] - unsigned int v30; // [esp+34h] [ebp-84h] - _WORD *v31; // [esp+38h] [ebp-80h] - bool v32; // [esp+38h] [ebp-80h] - int v33; // [esp+3Ch] [ebp-7Ch] - int *v34; // [esp+48h] [ebp-70h] - int v35; // [esp+48h] [ebp-70h] - int v36; // [esp+48h] [ebp-70h] - int v37; // [esp+48h] [ebp-70h] - std::locale::facet *v38; // [esp+4Ch] [ebp-6Ch] - std::locale::facet *v39; // [esp+4Ch] [ebp-6Ch] - void *v40; // [esp+50h] [ebp-68h] - unsigned int v41; // [esp+50h] [ebp-68h] - unsigned int v42; // [esp+50h] [ebp-68h] - __int64 v43; // [esp+54h] [ebp-64h] - int v44; // [esp+5Ch] [ebp-5Ch] - char *lpuexcpt; // [esp+60h] [ebp-58h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] - char *lpuexcptb; // [esp+60h] [ebp-58h] - char lpuexcptc; // [esp+60h] [ebp-58h] - char v49[5]; // [esp+A3h] [ebp-15h] BYREF - int v50; // [esp+A8h] [ebp-10h] BYREF - int v51; // [esp+ACh] [ebp-Ch] BYREF - char v52; // [esp+B0h] [ebp-8h] BYREF - - v43 = a1; - v40 = std::use_facet>(a2 + 108); - v38 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v34 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v38); - v44 = *v34; - if ( !*v34 ) - { - v24 = operator new(0x54u); - v24[1] = 0; - *v24 = &off_5606F4; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - *(_DWORD *)((char *)v24 + 18) = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - v24[10] = 0; - v24[11] = 0; - v24[12] = 0; - v24[13] = 0; - v24[14] = 0; - *((_BYTE *)v24 + 82) = 0; - v28 = (std::locale::_Impl *)v24; - std::__moneypunct_cache::_M_cache((int)v24, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v28, v38, v25); - v44 = *v34; - } - lpuexcpt = *a4; - v4 = *((_DWORD *)*a4 - 3); - if ( *(_WORD *)*a4 == *(_WORD *)(v44 + 60) ) - { - v51 = *(_DWORD *)(v44 + 56); - v33 = *(_DWORD *)(v44 + 40); - v39 = *(std::locale::facet **)(v44 + 44); - v6 = lpuexcpt + 2; - if ( !v4 ) - v6 = lpuexcpt; - lpuexcpt = v6; - } - else - { - v51 = *(_DWORD *)(v44 + 52); - v33 = *(_DWORD *)(v44 + 32); - v39 = *(std::locale::facet **)(v44 + 36); - } - v35 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v40 + 20))(v40, 8) - (_DWORD)lpuexcpt; - v41 = v35 >> 1; - if ( v35 >> 1 ) - { - *(_DWORD *)&v49[1] = std::wstring::_S_construct(0, 0); - std::wstring::reserve((int *)&v49[1], v35); - v7 = *(_DWORD *)(v44 + 48); - v36 = v41 - v7; - if ( (int)(v41 - v7) > 0 ) - { - v8 = v7 < 0; - v9 = v41 - v7; - if ( v8 ) - v9 = v41; - v36 = v9; - v10 = v9; - if ( *(_DWORD *)(v44 + 12) ) - { - std::wstring::_M_replace_aux((int **)&v49[1], 0, *(_DWORD *)(*(_DWORD *)&v49[1] - 12), 2 * v9, 0); - v11 = *(_WORD **)&v49[1]; - v29 = *(_DWORD *)(v44 + 12); - v27 = *(char **)(v44 + 8); - v26 = *(_WORD *)(v44 + 20); - if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)&v49[1]); - v11 = *(_WORD **)&v49[1]; - } - v12 = std::__add_grouping(v11, v26, v27, v29, lpuexcpt, &lpuexcpt[2 * v10]); - v13 = *(_DWORD *)&v49[1]; - v31 = v12; - if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)&v49[1]); - v13 = *(_DWORD *)&v49[1]; - } - v14 = (int)v31 - v13; - v15 = *(_DWORD *)(v13 - 12); - v16 = v14 >> 1; - if ( v16 > v15 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v16, - v15); - std::wstring::_M_mutate((int **)&v49[1], v16, v15 - v16, 0); - v7 = *(_DWORD *)(v44 + 48); - } - else - { - std::wstring::assign((int **)&v49[1], lpuexcpt, v9); - v7 = *(_DWORD *)(v44 + 48); - } - } - if ( v7 > 0 ) - { - std::wstring::push_back((int *)&v49[1], *(_WORD *)(v44 + 18)); - if ( v36 < 0 ) - { - std::wstring::append((int *)&v49[1], -v36, *(_WORD *)(v44 + 62)); - std::wstring::append((int *)&v49[1], lpuexcpt, v41); - } - else - { - std::wstring::append((int *)&v49[1], &lpuexcpt[2 * v36], *(_DWORD *)(v44 + 48)); - } - } - v37 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12)); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12) + *(_DWORD *)(v44 + 28)); - v50 = (int)std::wstring::_S_construct(0, 0); - std::wstring::reserve(&v50, 2 * (_DWORD)lpuexcpta); - v42 = *(_DWORD *)(a2 + 8); - v17 = v42 > (unsigned int)lpuexcpta && v37 == 16; - v30 = v42 - (_DWORD)lpuexcpta; - lpuexcptb = (char *)&v51; - v32 = v17; - do - { - switch ( *lpuexcptb ) - { - case 0: - if ( v32 ) - { - v18 = a3; - goto LABEL_30; - } - break; - case 1: - v18 = a3; - if ( v32 ) -LABEL_30: - std::wstring::append(&v50, v30, v18); - else - std::wstring::push_back(&v50, a3); - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - std::wstring::append(&v50, *(char **)(v44 + 24), *(_DWORD *)(v44 + 28)); - break; - case 3: - if ( v39 ) - std::wstring::push_back(&v50, *(_WORD *)v33); - break; - case 4: - std::wstring::append(&v50, &v49[1]); - break; - default: - break; - } - ++lpuexcptb; - } - while ( lpuexcptb != &v52 ); - if ( (unsigned int)v39 > 1 ) - { - std::wstring::append(&v50, (char *)(v33 + 2), (unsigned int)v39 - 1); - v19 = v50; - v20 = *(_DWORD *)(v50 - 12); - if ( v42 > v20 ) - goto LABEL_37; - } - else - { - v19 = v50; - v20 = *(_DWORD *)(v50 - 12); - if ( v42 > v20 ) - { -LABEL_37: - if ( v37 == 32 ) - std::wstring::append(&v50, v42 - v20, a3); - else - std::wstring::_M_replace_aux((int **)&v50, 0, 0, v42 - v20, a3); - v19 = v50; - goto LABEL_40; - } - } - v42 = v20; -LABEL_40: - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v21 = (*(int (__thiscall **)(_DWORD, int, unsigned int))(*(_DWORD *)a1 + 48))(a1, v19, v42); - v22 = 0; - v19 = v50; - if ( v21 != v42 ) - v22 = 1; - lpuexcptc = v22; - } - v23 = HIDWORD(a1); - LOBYTE(v23) = lpuexcptc; - HIDWORD(v43) = v23; - std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v19 - 12), (int)v49); - std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v49[1] - 12), (int)&v50); - } - *(_DWORD *)(a2 + 8) = 0; - return v43; -} -// 4C46FE: variable 'v25' is possibly undefined -// 53F594: using guessed type signed __int32 std::moneypunct::id; -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (004C4890) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - __int16 a3, - char **a4) -{ - int v4; // eax - char *v6; // edx - int v7; // eax - bool v8; // sf - unsigned int v9; // eax - unsigned int v10; // ebx - _WORD *v11; // edx - _WORD *v12; // eax - int v13; // edx - int v14; // eax - unsigned int v15; // edx - unsigned int v16; // eax - bool v17; // dl - __int16 v18; // ax - int v19; // ecx - unsigned int v20; // edx - int v21; // eax - char v22; // bl - int v23; // edx - _DWORD *v24; // eax - unsigned int v25; // [esp+8h] [ebp-B0h] - __int16 v26; // [esp+28h] [ebp-90h] - char *v27; // [esp+2Ch] [ebp-8Ch] - std::locale::_Impl *v28; // [esp+30h] [ebp-88h] - int v29; // [esp+34h] [ebp-84h] - unsigned int v30; // [esp+34h] [ebp-84h] - _WORD *v31; // [esp+38h] [ebp-80h] - bool v32; // [esp+38h] [ebp-80h] - int v33; // [esp+3Ch] [ebp-7Ch] - int *v34; // [esp+48h] [ebp-70h] - int v35; // [esp+48h] [ebp-70h] - int v36; // [esp+48h] [ebp-70h] - int v37; // [esp+48h] [ebp-70h] - std::locale::facet *v38; // [esp+4Ch] [ebp-6Ch] - std::locale::facet *v39; // [esp+4Ch] [ebp-6Ch] - void *v40; // [esp+50h] [ebp-68h] - unsigned int v41; // [esp+50h] [ebp-68h] - unsigned int v42; // [esp+50h] [ebp-68h] - __int64 v43; // [esp+54h] [ebp-64h] - int v44; // [esp+5Ch] [ebp-5Ch] - char *lpuexcpt; // [esp+60h] [ebp-58h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] - char *lpuexcptb; // [esp+60h] [ebp-58h] - char lpuexcptc; // [esp+60h] [ebp-58h] - char v49[5]; // [esp+A3h] [ebp-15h] BYREF - int v50; // [esp+A8h] [ebp-10h] BYREF - int v51; // [esp+ACh] [ebp-Ch] BYREF - char v52; // [esp+B0h] [ebp-8h] BYREF - - v43 = a1; - v40 = std::use_facet>(a2 + 108); - v38 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v34 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v38); - v44 = *v34; - if ( !*v34 ) - { - v24 = operator new(0x54u); - v24[1] = 0; - *v24 = &off_560704; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - *(_DWORD *)((char *)v24 + 18) = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - v24[10] = 0; - v24[11] = 0; - v24[12] = 0; - v24[13] = 0; - v24[14] = 0; - *((_BYTE *)v24 + 82) = 0; - v28 = (std::locale::_Impl *)v24; - std::__moneypunct_cache::_M_cache((int)v24, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v28, v38, v25); - v44 = *v34; - } - lpuexcpt = *a4; - v4 = *((_DWORD *)*a4 - 3); - if ( *(_WORD *)*a4 == *(_WORD *)(v44 + 60) ) - { - v51 = *(_DWORD *)(v44 + 56); - v33 = *(_DWORD *)(v44 + 40); - v39 = *(std::locale::facet **)(v44 + 44); - v6 = lpuexcpt + 2; - if ( !v4 ) - v6 = lpuexcpt; - lpuexcpt = v6; - } - else - { - v51 = *(_DWORD *)(v44 + 52); - v33 = *(_DWORD *)(v44 + 32); - v39 = *(std::locale::facet **)(v44 + 36); - } - v35 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v40 + 20))(v40, 8) - (_DWORD)lpuexcpt; - v41 = v35 >> 1; - if ( v35 >> 1 ) - { - *(_DWORD *)&v49[1] = std::wstring::_S_construct(0, 0); - std::wstring::reserve((int *)&v49[1], v35); - v7 = *(_DWORD *)(v44 + 48); - v36 = v41 - v7; - if ( (int)(v41 - v7) > 0 ) - { - v8 = v7 < 0; - v9 = v41 - v7; - if ( v8 ) - v9 = v41; - v36 = v9; - v10 = v9; - if ( *(_DWORD *)(v44 + 12) ) - { - std::wstring::_M_replace_aux((int **)&v49[1], 0, *(_DWORD *)(*(_DWORD *)&v49[1] - 12), 2 * v9, 0); - v11 = *(_WORD **)&v49[1]; - v29 = *(_DWORD *)(v44 + 12); - v27 = *(char **)(v44 + 8); - v26 = *(_WORD *)(v44 + 20); - if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)&v49[1]); - v11 = *(_WORD **)&v49[1]; - } - v12 = std::__add_grouping(v11, v26, v27, v29, lpuexcpt, &lpuexcpt[2 * v10]); - v13 = *(_DWORD *)&v49[1]; - v31 = v12; - if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)&v49[1]); - v13 = *(_DWORD *)&v49[1]; - } - v14 = (int)v31 - v13; - v15 = *(_DWORD *)(v13 - 12); - v16 = v14 >> 1; - if ( v16 > v15 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v16, - v15); - std::wstring::_M_mutate((int **)&v49[1], v16, v15 - v16, 0); - v7 = *(_DWORD *)(v44 + 48); - } - else - { - std::wstring::assign((int **)&v49[1], lpuexcpt, v9); - v7 = *(_DWORD *)(v44 + 48); - } - } - if ( v7 > 0 ) - { - std::wstring::push_back((int *)&v49[1], *(_WORD *)(v44 + 18)); - if ( v36 < 0 ) - { - std::wstring::append((int *)&v49[1], -v36, *(_WORD *)(v44 + 62)); - std::wstring::append((int *)&v49[1], lpuexcpt, v41); - } - else - { - std::wstring::append((int *)&v49[1], &lpuexcpt[2 * v36], *(_DWORD *)(v44 + 48)); - } - } - v37 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12)); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12) + *(_DWORD *)(v44 + 28)); - v50 = (int)std::wstring::_S_construct(0, 0); - std::wstring::reserve(&v50, 2 * (_DWORD)lpuexcpta); - v42 = *(_DWORD *)(a2 + 8); - v17 = v42 > (unsigned int)lpuexcpta && v37 == 16; - v30 = v42 - (_DWORD)lpuexcpta; - lpuexcptb = (char *)&v51; - v32 = v17; - do - { - switch ( *lpuexcptb ) - { - case 0: - if ( v32 ) - { - v18 = a3; - goto LABEL_30; - } - break; - case 1: - v18 = a3; - if ( v32 ) -LABEL_30: - std::wstring::append(&v50, v30, v18); - else - std::wstring::push_back(&v50, a3); - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - std::wstring::append(&v50, *(char **)(v44 + 24), *(_DWORD *)(v44 + 28)); - break; - case 3: - if ( v39 ) - std::wstring::push_back(&v50, *(_WORD *)v33); - break; - case 4: - std::wstring::append(&v50, &v49[1]); - break; - default: - break; - } - ++lpuexcptb; - } - while ( lpuexcptb != &v52 ); - if ( (unsigned int)v39 > 1 ) - { - std::wstring::append(&v50, (char *)(v33 + 2), (unsigned int)v39 - 1); - v19 = v50; - v20 = *(_DWORD *)(v50 - 12); - if ( v42 > v20 ) - goto LABEL_37; - } - else - { - v19 = v50; - v20 = *(_DWORD *)(v50 - 12); - if ( v42 > v20 ) - { -LABEL_37: - if ( v37 == 32 ) - std::wstring::append(&v50, v42 - v20, a3); - else - std::wstring::_M_replace_aux((int **)&v50, 0, 0, v42 - v20, a3); - v19 = v50; - goto LABEL_40; - } - } - v42 = v20; -LABEL_40: - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v21 = (*(int (__thiscall **)(_DWORD, int, unsigned int))(*(_DWORD *)a1 + 48))(a1, v19, v42); - v22 = 0; - v19 = v50; - if ( v21 != v42 ) - v22 = 1; - lpuexcptc = v22; - } - v23 = HIDWORD(a1); - LOBYTE(v23) = lpuexcptc; - HIDWORD(v43) = v23; - std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v19 - 12), (int)v49); - std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v49[1] - 12), (int)&v50); - } - *(_DWORD *)(a2 + 8) = 0; - return v43; -} -// 4C4F2E: variable 'v25' is possibly undefined -// 53F598: using guessed type signed __int32 std::moneypunct::id; -// 560704: using guessed type int (*off_560704)(); - -//----- (004C50C0) -------------------------------------------------------- -bool __userpurge std::type_info::__do_catch@( - std::type_info *a1@, - std::type_info *this, - const type_info *a3, - void **a4, - unsigned int a5) -{ - bool result; // al - const char *Str1; // ecx - - result = 1; - if ( a1 != this ) - { - Str1 = (const char *)*((_DWORD *)a1 + 1); - result = 0; - if ( *Str1 != 42 ) - return strcmp(Str1, (const char *)((**((_BYTE **)this + 1) == 42) + *((_DWORD *)this + 1))) == 0; - } - return result; -} - -//----- (004C5100) -------------------------------------------------------- -int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3) -{ - return 0; -} - -//----- (004C5110) -------------------------------------------------------- -int std::type_info::__is_function_p() -{ - return 0; -} - -//----- (004C5120) -------------------------------------------------------- -bool __thiscall std::type_info::operator==(_DWORD *this, int a2) -{ - bool result; // al - const char *Str1; // ecx - - result = 1; - if ( (_DWORD *)a2 != this ) - { - Str1 = (const char *)this[1]; - result = 0; - if ( *Str1 != 42 ) - return strcmp(Str1, (const char *)((**(_BYTE **)(a2 + 4) == 42) + *(_DWORD *)(a2 + 4))) == 0; - } - return result; -} - -//----- (004C5160) -------------------------------------------------------- -int __cdecl std::wstring::_S_compare(int a1, int a2) -{ - return a1 - a2; -} - -//----- (004C5170) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004C5180) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004C5190) -------------------------------------------------------- -int *__fastcall std::wstring::_M_leak_hard(int **a1) -{ - int *result; // eax - - if ( *(*a1 - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - result = *a1; - *(*a1 - 1) = -1; - return result; -} - -//----- (004C51D0) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, __int16 a2) -{ - _DWORD *v2; // eax - _WORD *v3; // ecx - unsigned int v4; // edx - - v2 = std::wstring::_Rep::_S_create(a1, 0); - if ( a1 ) - { - v3 = v2 + 3; - v4 = a1; - if ( a1 == 1 ) - { - *((_WORD *)v2 + 6) = a2; - } - else - { - do - { - *v3++ = a2; - --v4; - } - while ( v4 ); - } - } - v2[2] = 0; - *v2 = a1; - *((_WORD *)v2 + a1 + 6) = 0; - return v2 + 3; -} - -//----- (004C5240) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(_WORD *Src, int a2) -{ - size_t Size; // esi - int v3; // ebp - int *v4; // eax - int *v5; // ebx - _DWORD *v6; // edx - _DWORD *v8; // [esp+1Ch] [ebp-20h] - - Size = a2 - (_DWORD)Src; - v3 = (a2 - (int)Src) >> 1; - v4 = std::wstring::_Rep::_S_create(v3, 0); - v5 = v4; - v6 = v4 + 3; - if ( v3 == 1 ) - { - *((_WORD *)v4 + 6) = *Src; - } - else if ( v3 ) - { - v8 = v4 + 3; - memcpy(v4 + 3, Src, Size); - v6 = v8; - } - v5[2] = 0; - *v5 = v3; - *(_WORD *)((char *)v5 + Size + 12) = 0; - return v6; -} - -//----- (004C52D0) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2) -{ - size_t Size; // esi - int v3; // ebp - int *v4; // eax - int *v5; // ebx - _DWORD *v6; // edx - _DWORD *v8; // [esp+1Ch] [ebp-20h] - - if ( a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a2 - (_DWORD)Src; - v3 = (a2 - (int)Src) >> 1; - v4 = std::wstring::_Rep::_S_create(v3, 0); - v5 = v4; - v6 = v4 + 3; - if ( v3 == 1 ) - { - *((_WORD *)v4 + 6) = *Src; - } - else if ( v3 ) - { - v8 = v4 + 3; - memcpy(v4 + 3, Src, Size); - v6 = v8; - } - v5[2] = 0; - *v5 = v3; - *(_WORD *)((char *)v5 + Size + 12) = 0; - return v6; -} - -//----- (004C5370) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2) -{ - size_t Size; // esi - int v3; // ebp - int *v4; // eax - int *v5; // ebx - _DWORD *v6; // edx - _DWORD *v8; // [esp+1Ch] [ebp-20h] - - if ( a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a2 - (_DWORD)Src; - v3 = (a2 - (int)Src) >> 1; - v4 = std::wstring::_Rep::_S_create(v3, 0); - v5 = v4; - v6 = v4 + 3; - if ( v3 == 1 ) - { - *((_WORD *)v4 + 6) = *Src; - } - else if ( v3 ) - { - v8 = v4 + 3; - memcpy(v4 + 3, Src, Size); - v6 = v8; - } - v5[2] = 0; - *v5 = v3; - *(_WORD *)((char *)v5 + Size + 12) = 0; - return v6; -} - -//----- (004C5410) -------------------------------------------------------- -void *std::wstring::_S_empty_rep() -{ - return &std::wstring::_Rep::_S_empty_rep_storage; -} - -//----- (004C5420) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004C5460) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004C54A0) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004C54E0) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004C5520) -------------------------------------------------------- -void __fastcall std::wstring::shrink_to_fit(int *a1) -{ - if ( *(_DWORD *)(*a1 - 12) < *(_DWORD *)(*a1 - 8) ) - std::wstring::reserve(a1, 0); -} - -//----- (004C55B0) -------------------------------------------------------- -int **__thiscall std::wstring::_M_replace_aux(int **this, int a2, int a3, unsigned int a4, __int16 a5) -{ - unsigned int v6; // ebx - _WORD *v7; // eax - - v6 = a4; - if ( a4 > a3 + 536870910 - *(*this - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::wstring::_M_mutate(this, a2, a3, a4); - if ( !a4 ) - return this; - v7 = (_WORD *)*this + a2; - if ( a4 != 1 ) - { - do - { - *v7++ = a5; - --v6; - } - while ( v6 ); - return this; - } - *v7 = a5; - return this; -} - -//----- (004C5640) -------------------------------------------------------- -int **__thiscall std::wstring::_M_replace_safe(int **this, int a2, int a3, _WORD *Src, int a5) -{ - std::wstring::_M_mutate(this, a2, a3, a5); - if ( !a5 ) - return this; - if ( a5 != 1 ) - { - memcpy((char *)*this + 2 * a2, Src, 2 * a5); - return this; - } - *((_WORD *)*this + a2) = *Src; - return this; -} - -//----- (004C56C0) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, __int16 a2) -{ - _DWORD *v2; // eax - _WORD *v3; // ecx - unsigned int v4; // edx - - v2 = std::wstring::_Rep::_S_create(a1, 0); - if ( a1 ) - { - v3 = v2 + 3; - v4 = a1; - if ( a1 == 1 ) - { - *((_WORD *)v2 + 6) = a2; - } - else - { - do - { - *v3++ = a2; - --v4; - } - while ( v4 ); - } - } - v2[2] = 0; - *v2 = a1; - *((_WORD *)v2 + a1 + 6) = 0; - return v2 + 3; -} - -//----- (004C5730) -------------------------------------------------------- -char *__thiscall std::wstring::at(int **this, unsigned int a2) -{ - int *v2; // eax - int *v5; // eax - - v2 = *this; - if ( a2 >= *(*this - 3) ) - std::__throw_out_of_range_fmt( - "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", - a2, - *(*this - 3)); - if ( *(v2 - 1) < 0 ) - return (char *)v2 + 2 * a2; - if ( *(v2 - 1) > 0 ) - std::wstring::_M_mutate(this, 0, 0, 0); - v5 = *this; - *(v5 - 1) = -1; - return (char *)v5 + 2 * a2; -} - -//----- (004C57B0) -------------------------------------------------------- -char *__fastcall std::wstring::end(int **a1) -{ - int *v1; // eax - int *v4; // eax - int v5; // edx - - v1 = *a1; - if ( *(*a1 - 1) < 0 ) - return (char *)v1 + 2 * *(v1 - 3); - if ( *(v1 - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - v4 = *a1; - v5 = *(*a1 - 3); - *(v4 - 1) = -1; - return (char *)v4 + 2 * v5; -} - -//----- (004C5800) -------------------------------------------------------- -void __thiscall std::wstring::_Rep::_M_destroy(void *Block, int a2) -{ - operator delete(Block); -} - -//----- (004C5820) -------------------------------------------------------- -void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *Block, int a2) -{ - int v2; // eax - - if ( !_CRT_MT ) - { - v2 = *((_DWORD *)Block + 2); - *((_DWORD *)Block + 2) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)Block); - return; - } - if ( _InterlockedExchangeAdd(Block + 2, 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C5860) -------------------------------------------------------- -int __fastcall std::wstring::_Rep::_M_refcopy(int a1) -{ - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); - else - ++*(_DWORD *)(a1 + 8); - return a1 + 12; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C5890) -------------------------------------------------------- -int __fastcall std::wstring::_Rep::_M_refdata(int a1) -{ - return a1 + 12; -} - -//----- (004C58A0) -------------------------------------------------------- -void *std::wstring::_Rep::_S_empty_rep() -{ - return &std::wstring::_Rep::_S_empty_rep_storage; -} - -//----- (004C58B0) -------------------------------------------------------- -void __fastcall std::wstring::_Rep::_M_set_leaked(int a1) -{ - *(_DWORD *)(a1 + 8) = -1; -} - -//----- (004C58C0) -------------------------------------------------------- -void __fastcall std::wstring::_Rep::_M_set_sharable(int a1) -{ - *(_DWORD *)(a1 + 8) = 0; -} - -//----- (004C58D0) -------------------------------------------------------- -int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] = 0; - *this = a2; - *((_WORD *)this + a2 + 6) = 0; - return result; -} - -//----- (004C58F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3) -{ - _DWORD *result; // eax - - if ( *(int *)(this + 8) < 0 ) - return std::wstring::_Rep::_M_clone((int *)this, a2, 0); - if ( _CRT_MT ) - { - _InterlockedAdd((volatile signed __int32 *)(this + 8), 1u); - return (_DWORD *)(this + 12); - } - else - { - result = (_DWORD *)(this + 12); - ++*(_DWORD *)(this + 8); - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C5940) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::_Rep::_M_clone(int *this, int a2, int a3) -{ - _DWORD *v4; // eax - int v5; // edx - _DWORD *v6; // ebx - int v7; // eax - - v4 = std::wstring::_Rep::_S_create(a3 + *this, this[1]); - v5 = 0; - v6 = v4; - v7 = *this; - if ( *this ) - { - if ( v7 == 1 ) - { - *((_WORD *)v6 + 6) = *((_WORD *)this + 6); - v5 = 2; - } - else - { - memcpy(v6 + 3, this + 3, 2 * v7); - v7 = *this; - v5 = 2 * *this; - } - } - *v6 = v7; - v6[2] = 0; - *(_WORD *)((char *)v6 + v5 + 12) = 0; - return v6 + 3; -} - -//----- (004C59C0) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2) -{ - unsigned int v2; // ebx - signed int v3; // eax - unsigned int v4; // ecx - _DWORD *result; // eax - - v2 = a1; - if ( a1 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_S_create"); - if ( a1 <= a2 ) - { - v3 = 2 * a1 + 14; - } - else - { - if ( a1 < 2 * a2 ) - v2 = 2 * a2; - v3 = 2 * v2 + 14; - v4 = 2 * v2 + 30; - if ( v4 <= 0x1000 || v2 <= a2 ) - { - if ( v3 < 0 ) - std::__throw_bad_alloc(); - } - else - { - v2 += (4096 - (v4 & 0xFFF)) >> 1; - if ( v2 > 0x1FFFFFFE ) - v2 = 536870910; - v3 = 2 * v2 + 14; - } - } - result = operator new(v3); - result[1] = v2; - result[2] = 0; - return result; -} - -//----- (004C5A60) -------------------------------------------------------- -char *__fastcall std::wstring::back(int **a1) -{ - int *v1; // eax - int v2; // esi - int *v5; // eax - - v1 = *a1; - v2 = *(*a1 - 3) - 1; - if ( *(*a1 - 1) < 0 ) - return (char *)v1 + 2 * v2; - if ( *(v1 - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - v5 = *a1; - *(v5 - 1) = -1; - return (char *)v5 + 2 * v2; -} - -//----- (004C5AC0) -------------------------------------------------------- -int **__thiscall std::wstring::rend(int **this, int **a2) -{ - int *v3; // eax - int *v5; // eax - - v3 = *a2; - if ( *(*a2 - 1) >= 0 ) - { - if ( *(v3 - 1) > 0 ) - std::wstring::_M_mutate(a2, 0, 0, 0); - v5 = *a2; - *(v5 - 1) = -1; - *this = v5; - return this; - } - else - { - *this = v3; - return this; - } -} - -//----- (004C5B20) -------------------------------------------------------- -int __thiscall std::wstring::swap(int *this, int *a2) -{ - int result; // eax - int v3; // edx - - result = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(result - 4) = 0; - v3 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - *this = v3; - *a2 = result; - return result; -} - -//----- (004C5B50) -------------------------------------------------------- -int *__fastcall std::wstring::begin(int **a1) -{ - int *result; // eax - - result = *a1; - if ( *(*a1 - 1) >= 0 ) - { - if ( *(result - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - result = *a1; - *(*a1 - 1) = -1; - } - return result; -} - -//----- (004C5BA0) -------------------------------------------------------- -int __fastcall std::wstring::clear(int **a1) -{ - return std::wstring::_M_mutate(a1, 0, *(*a1 - 3), 0); -} - -//----- (004C5BD0) -------------------------------------------------------- -char *__thiscall std::wstring::erase(int **this, int a2) -{ - int v3; // esi - int *v4; // eax - - v3 = a2 - (_DWORD)*this; - std::wstring::_M_mutate(this, v3 >> 1, 1, 0); - v4 = *this; - *(v4 - 1) = -1; - return (char *)v4 + v3; -} - -//----- (004C5C10) -------------------------------------------------------- -char *__thiscall std::wstring::erase(int **this, char *a2, int a3) -{ - char *result; // eax - int v5; // ebx - int *v6; // eax - - result = a2; - if ( (a3 - (int)a2) >> 1 ) - { - v5 = a2 - (char *)*this; - std::wstring::_M_mutate(this, v5 >> 1, (a3 - (int)a2) >> 1, 0); - v6 = *this; - *(v6 - 1) = -1; - return (char *)v6 + v5; - } - return result; -} - -//----- (004C5C70) -------------------------------------------------------- -int **__thiscall std::wstring::erase(int **this, unsigned int a2, unsigned int a3) -{ - unsigned int v4; // ecx - int v5; // eax - - v4 = *(*this - 3); - v5 = v4 - a2; - if ( v4 - a2 > a3 ) - v5 = a3; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - a2, - v4); - std::wstring::_M_mutate(this, a2, v5, 0); - return this; -} - -//----- (004C5CD0) -------------------------------------------------------- -int *__fastcall std::wstring::front(int **a1) -{ - int *result; // eax - - result = *a1; - if ( *(*a1 - 1) >= 0 ) - { - if ( *(result - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - result = *a1; - *(*a1 - 1) = -1; - } - return result; -} - -//----- (004C5D20) -------------------------------------------------------- -int *__thiscall std::wstring::append(int *this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::append(this, (char *)String, v3); -} - -//----- (004C5D50) -------------------------------------------------------- -int *__thiscall std::wstring::append(int *this, char *a2, unsigned int a3) -{ - char *Src; // edi - unsigned int v5; // eax - int v6; // ebp - unsigned int v7; // ebp - _WORD *v8; // edx - char *v10; // edi - bool v11; // cc - - Src = a2; - if ( a3 ) - { - v5 = *this; - v6 = *(_DWORD *)(*this - 12); - if ( a3 > 536870910 - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v7 = a3 + v6; - if ( v7 > *(_DWORD *)(v5 - 8) || (v11 = *(_DWORD *)(v5 - 4) <= 0, v5 = *this, !v11) ) - { - if ( v5 <= (unsigned int)a2 && (unsigned int)a2 <= v5 + 2 * *(_DWORD *)(v5 - 12) ) - { - v10 = &a2[-v5]; - std::wstring::reserve(this, v7); - v5 = *this; - Src = &v10[*this]; - v8 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( a3 != 1 ) - goto LABEL_8; - goto LABEL_12; - } - std::wstring::reserve(this, v7); - v5 = *this; - } - v8 = (_WORD *)(v5 + 2 * *(_DWORD *)(v5 - 12)); - if ( a3 != 1 ) - { -LABEL_8: - memcpy(v8, Src, 2 * a3); - v5 = *this; -LABEL_9: - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v7; - *(_WORD *)(v5 + 2 * v7) = 0; - return this; - } -LABEL_12: - *v8 = *(_WORD *)Src; - goto LABEL_9; - } - return this; -} - -//----- (004C5E30) -------------------------------------------------------- -int *__thiscall std::wstring::append(int *this, _DWORD *a2) -{ - int v3; // esi - unsigned int v4; // edi - int v5; // eax - _WORD *Src; // ecx - _WORD *v7; // edx - - v3 = *(_DWORD *)(*a2 - 12); - if ( v3 ) - { - v4 = v3 + *(_DWORD *)(*this - 12); - if ( v4 > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - { - std::wstring::reserve(this, v3 + *(_DWORD *)(*this - 12)); - v5 = *this; - Src = (_WORD *)*a2; - v7 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( v3 == 1 ) - { -LABEL_9: - *v7 = *Src; - goto LABEL_5; - } - } - else - { - v5 = *this; - Src = (_WORD *)*a2; - v7 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( v3 == 1 ) - goto LABEL_9; - } - memcpy(v7, Src, 2 * v3); - v5 = *this; -LABEL_5: - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v4; - *(_WORD *)(v5 + 2 * v4) = 0; - } - return this; -} - -//----- (004C5EC0) -------------------------------------------------------- -int *__thiscall std::wstring::append(int *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // ebx - unsigned int v7; // edx - _WORD *Src; // edi - int v9; // eax - _WORD *v10; // ecx - unsigned int v12; // [esp+1Ch] [ebp-20h] - unsigned int v13; // [esp+1Ch] [ebp-20h] - - v4 = *(_DWORD *)(*a2 - 12); - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::append", - a3, - *(_DWORD *)(*a2 - 12)); - v5 = v4 - a3; - if ( v5 > a4 ) - v5 = a4; - if ( v5 ) - { - v7 = v5 + *(_DWORD *)(*this - 12); - if ( v7 > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - { - v12 = v5 + *(_DWORD *)(*this - 12); - std::wstring::reserve(this, v12); - v7 = v12; - } - Src = (_WORD *)(*a2 + 2 * a3); - v9 = *this; - v10 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( v5 == 1 ) - { - *v10 = *Src; - } - else - { - v13 = v7; - memcpy(v10, Src, 2 * v5); - v9 = *this; - v7 = v13; - } - *(_DWORD *)(v9 - 4) = 0; - *(_DWORD *)(v9 - 12) = v7; - *(_WORD *)(v9 + 2 * v7) = 0; - } - return this; -} - -//----- (004C5FA0) -------------------------------------------------------- -int *__thiscall std::wstring::append(int *this, unsigned int a2, __int16 a3) -{ - unsigned int v4; // ebx - __int16 v5; // dx - int v6; // ecx - int v7; // edi - unsigned int v8; // edi - int v9; // ecx - _WORD *v10; // eax - - v4 = a2; - v5 = a3; - if ( a2 ) - { - v6 = *this; - v7 = *(_DWORD *)(v6 - 12); - if ( a2 > 536870910 - v7 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v8 = a2 + v7; - if ( v8 > *(_DWORD *)(v6 - 8) || *(int *)(v6 - 4) > 0 ) - { - std::wstring::reserve(this, v8); - v5 = a3; - } - v9 = *this; - v10 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( a2 == 1 ) - { - *v10 = v5; - *(_DWORD *)(v9 - 4) = 0; - *(_DWORD *)(v9 - 12) = v8; - *(_WORD *)(v9 + 2 * v8) = 0; - } - else - { - do - { - *v10++ = a3; - --v4; - } - while ( v4 ); - *(_DWORD *)(v9 - 4) = 0; - *(_DWORD *)(v9 - 12) = v8; - *(_WORD *)(v9 + 2 * v8) = 0; - } - } - return this; -} - -//----- (004C6060) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::assign(_DWORD *this, int *a2) -{ - _DWORD *result; // eax - int v3; // edx - int v4; // ecx - - result = this; - v3 = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - v4 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *result = v4; - *a2 = v3; - return result; -} - -//----- (004C60A0) -------------------------------------------------------- -int **__thiscall std::wstring::assign(int **this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::assign(this, (char *)String, v3); -} - -//----- (004C60D0) -------------------------------------------------------- -int **__thiscall std::wstring::assign(int **this, char *Src, unsigned int a3) -{ - int *v3; // eax - int v4; // edx - bool v6; // cc - int *v7; // eax - int *v8; // eax - unsigned int v10; // edx - - v3 = *this; - v4 = *(*this - 3); - if ( a3 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::assign"); - if ( v3 <= (int *)Src && (char *)v3 + 2 * v4 >= Src ) - { - v6 = *(v3 - 1) <= 0; - v7 = *this; - if ( !v6 ) - { - v4 = *(v7 - 3); - goto LABEL_6; - } - v10 = (Src - (char *)v7) >> 1; - if ( a3 <= v10 ) - { - if ( a3 != 1 ) - { - if ( a3 ) - { - memcpy(v7, Src, 2 * a3); - v7 = *this; - } - goto LABEL_15; - } - } - else - { - if ( !v10 ) - { -LABEL_15: - *(v7 - 1) = 0; - *(v7 - 3) = a3; - *((_WORD *)v7 + a3) = 0; - return this; - } - if ( a3 != 1 ) - { - if ( a3 ) - { - memmove(v7, Src, 2 * a3); - v7 = *this; - } - goto LABEL_15; - } - } - *(_WORD *)v7 = *(_WORD *)Src; - goto LABEL_15; - } -LABEL_6: - std::wstring::_M_mutate(this, 0, v4, a3); - if ( !a3 ) - return this; - v8 = *this; - if ( a3 != 1 ) - { - memcpy(v8, Src, 2 * a3); - return this; - } - *(_WORD *)v8 = *(_WORD *)Src; - return this; -} - -//----- (004C61F0) -------------------------------------------------------- -int *__thiscall std::wstring::assign(int *this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - int v5; // edx - char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = (_DWORD *)*a2; - if ( *this != *a2 ) - { - if ( (int)*(v3 - 1) < 0 ) - { - v3 = std::wstring::_Rep::_M_clone(v3 - 3, (int)v7, 0); - v4 = *this; - if ( !_CRT_MT ) - goto LABEL_6; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(v3 - 1, 1u); - else - ++*(v3 - 1); - v4 = *this; - if ( !_CRT_MT ) - { -LABEL_6: - v5 = *(_DWORD *)(v4 - 4); - *(_DWORD *)(v4 - 4) = v5 - 1; - if ( v5 > 0 ) - { -LABEL_7: - *this = (int)v3; - return this; - } -LABEL_11: - operator delete((void *)(v4 - 12)); - *this = (int)v3; - return this; - } - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v4 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - goto LABEL_11; - } - return this; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4C61F0: using guessed type char var_D[13]; - -//----- (004C62A0) -------------------------------------------------------- -int **__thiscall std::wstring::assign(int **this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // eax - - v4 = *(_DWORD *)(*a2 - 12) - a3; - if ( v4 > a4 ) - v4 = a4; - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::assign", - a3, - *(_DWORD *)(*a2 - 12)); - return std::wstring::assign(this, (char *)(*a2 + 2 * a3), v4); -} - -//----- (004C6310) -------------------------------------------------------- -int **__thiscall std::wstring::assign(int **this, unsigned int a2, __int16 a3) -{ - unsigned int v3; // ebx - int *v5; // eax - - v3 = a2; - if ( a2 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::wstring::_M_mutate(this, 0, *(*this - 3), a2); - if ( !a2 ) - return this; - v5 = *this; - if ( a2 != 1 ) - { - do - { - *(_WORD *)v5 = a3; - v5 = (int *)((char *)v5 + 2); - --v3; - } - while ( v3 ); - return this; - } - *(_WORD *)v5 = a3; - return this; -} - -//----- (004C6390) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, int a2, int *a3, unsigned int a4) -{ - return std::wstring::insert(this, (a2 - (int)*this) >> 1, a3, a4); -} - -//----- (004C63B0) -------------------------------------------------------- -int __thiscall std::wstring::insert(int **this, int a2, unsigned int a3, unsigned __int16 a4) -{ - unsigned int v5; // esi - int v6; // ebx - int result; // eax - unsigned __int16 *v8; // ebx - - v5 = a3; - v6 = a2 - (_DWORD)*this; - if ( a3 > 536870910 - *(*this - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - result = std::wstring::_M_mutate(this, v6 >> 1, 0, a3); - if ( a3 ) - { - v8 = (unsigned __int16 *)((char *)*this + v6); - if ( a3 == 1 ) - { - result = a4; - *v8 = a4; - } - else - { - do - { - *v8++ = a4; - --v5; - } - while ( v5 ); - } - } - return result; -} - -//----- (004C6440) -------------------------------------------------------- -_WORD *__thiscall std::wstring::insert(int **this, int a2, __int16 a3) -{ - int v3; // ebx - int *v5; // edx - _WORD *result; // eax - - v3 = a2 - (_DWORD)*this; - if ( *(*this - 3) == 536870910 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::wstring::_M_mutate(this, (a2 - (int)*this) >> 1, 0, 1); - v5 = *this; - result = (_WORD *)((char *)*this + v3); - *result = a3; - *(v5 - 1) = -1; - return result; -} - -//----- (004C64A0) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, int a2, wchar_t *String) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::insert(this, a2, (int *)String, v4); -} - -//----- (004C64E0) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, unsigned int a2, int *Src, unsigned int a4) -{ - int *v5; // edx - unsigned int v6; // ecx - _WORD *v7; // eax - char *v9; // ebp - int v10; // edx - char *v11; // eax - _WORD *v12; // edi - char *v13; // ecx - size_t Size; // ecx - int v15; // edx - unsigned int v16; // esi - _WORD *v17; // ebp - _WORD *v18; // ecx - size_t v19; // [esp+18h] [ebp-24h] - int v20; // [esp+1Ch] [ebp-20h] - - v5 = *this; - v6 = *(*this - 3); - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a2, - v6); - if ( a4 > 536870910 - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::insert"); - if ( v5 <= Src && Src <= (int *)((char *)v5 + 2 * v6) && *(v5 - 1) <= 0 ) - { - v9 = (char *)((char *)Src - (char *)*this); - std::wstring::_M_mutate(this, a2, 0, a4); - v10 = 2 * a2; - v11 = &v9[(_DWORD)*this]; - v12 = (_WORD *)*this + a2; - v13 = &v11[2 * a4]; - if ( v13 > (char *)v12 ) - { - if ( v11 < (char *)v12 ) - { - Size = v10 - (_DWORD)v9; - v15 = (v10 - (int)v9) >> 1; - if ( v15 == 1 ) - { - *v12 = *(_WORD *)v11; - } - else if ( v15 ) - { - v20 = v15; - v19 = Size; - memcpy(v12, v11, Size); - v15 = v20; - Size = v19; - } - v16 = a4 - v15; - v17 = &v12[a4]; - v18 = (_WORD *)((char *)v12 + Size); - if ( a4 - v15 == 1 ) - { - *v18 = *v17; - } - else if ( v16 ) - { - memcpy(v18, v17, 2 * v16); - } - } - else if ( a4 == 1 ) - { - *v12 = *(_WORD *)v13; - } - else if ( a4 ) - { - memcpy(v12, &v11[2 * a4], 2 * a4); - } - } - else if ( a4 == 1 ) - { - *v12 = *(_WORD *)v11; - } - else if ( a4 ) - { - memcpy(v12, v11, 2 * a4); - } - return this; - } - std::wstring::_M_mutate(this, a2, 0, a4); - if ( !a4 ) - return this; - v7 = (_WORD *)*this + a2; - if ( a4 != 1 ) - { - memcpy(v7, Src, 2 * a4); - return this; - } - *v7 = *(_WORD *)Src; - return this; -} - -//----- (004C66C0) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, int a2, int **a3) -{ - return std::wstring::insert(this, a2, *a3, *(*a3 - 3)); -} - -//----- (004C66F0) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, int a2, _DWORD *a3, unsigned int a4, unsigned int a5) -{ - unsigned int v5; // eax - - v5 = *(_DWORD *)(*a3 - 12) - a4; - if ( v5 > a5 ) - v5 = a5; - if ( a4 > *(_DWORD *)(*a3 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a4, - *(_DWORD *)(*a3 - 12)); - return std::wstring::insert(this, a2, (int *)(*a3 + 2 * a4), v5); -} - -//----- (004C6760) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, unsigned int a2, unsigned int a3, __int16 a4) -{ - if ( a2 > *(*this - 3) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a2, - *(*this - 3)); - return std::wstring::_M_replace_aux(this, a2, 0, a3, a4); -} - -//----- (004C67C0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, int **a2) -{ - int *v3; // eax - - v3 = *a2; - if ( *(*a2 - 1) >= 0 ) - { - if ( *(v3 - 1) > 0 ) - std::wstring::_M_mutate(a2, 0, 0, 0); - v3 = *a2; - *(*a2 - 1) = -1; - } - *this = (char *)v3 + 2 * *(v3 - 3); - return this; -} - -//----- (004C6830) -------------------------------------------------------- -int *__thiscall std::wstring::resize(int *this, unsigned int a2) -{ - int *result; // eax - unsigned int v3; // edx - - result = (int *)a2; - v3 = *(_DWORD *)(*this - 12); - if ( a2 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::resize"); - if ( a2 > v3 ) - return std::wstring::append(this, a2 - v3, 0); - if ( a2 < v3 ) - return (int *)std::wstring::_M_mutate((int **)this, a2, v3 - a2, 0); - return result; -} - -//----- (004C68A0) -------------------------------------------------------- -int *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3) -{ - int *result; // eax - unsigned int v4; // edx - - result = (int *)a2; - v4 = *(_DWORD *)(*this - 12); - if ( a2 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::resize"); - if ( a2 > v4 ) - return std::wstring::append(this, a2 - v4, a3); - if ( a2 < v4 ) - return (int *)std::wstring::_M_mutate((int **)this, a2, v4 - a2, 0); - return result; -} - -//----- (004C6920) -------------------------------------------------------- -int __cdecl std::wstring::_M_copy(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memcpy(a1, Src, 2 * Size); - } - return result; -} - -//----- (004C6960) -------------------------------------------------------- -int __thiscall std::wstring::_M_data(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004C6970) -------------------------------------------------------- -int *__fastcall std::wstring::_M_leak(int **a1) -{ - int *result; // eax - - result = *a1; - if ( *(*a1 - 1) >= 0 ) - { - if ( *(result - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - result = *a1; - *(*a1 - 1) = -1; - } - return result; -} - -//----- (004C69C0) -------------------------------------------------------- -int __cdecl std::wstring::_M_move(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memmove(a1, Src, 2 * Size); - } - return result; -} - -//----- (004C6A00) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); -} - -//----- (004C6A30) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String) -{ - unsigned int v5; // eax - - v5 = wcslen(String); - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, String, v5); -} - -//----- (004C6A80) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); -} - -//----- (004C6AB0) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, unsigned int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, a5); -} - -//----- (004C6AD0) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, *a4, *((_DWORD *)*a4 - 3)); -} - -//----- (004C6B10) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); -} - -//----- (004C6B40) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); -} - -//----- (004C6B70) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (2 * a5) >> 1); -} - -//----- (004C6BA0) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, unsigned int a4, __int16 a5) -{ - unsigned int v6; // esi - int v7; // ebx - _WORD *v8; // ebx - - v6 = a4; - v7 = a2 - (_DWORD)*this; - if ( a4 > ((a3 - a2) >> 1) + 536870910 - *(*this - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::wstring::_M_mutate(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4); - if ( !a4 ) - return this; - v8 = (_WORD *)((char *)*this + v7); - if ( a4 != 1 ) - { - do - { - *v8++ = a5; - --v6; - } - while ( v6 ); - return this; - } - *v8 = a5; - return this; -} - -//----- (004C6C40) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String) -{ - unsigned int v5; // eax - - v5 = wcslen(String); - return std::wstring::replace(this, a2, a3, String, v5); -} - -//----- (004C6C80) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, _WORD *Src, unsigned int a5) -{ - int *v5; // edx - unsigned int v6; // eax - int v7; // ecx - int *v9; // edx - _WORD *v10; // eax - int v11; // eax - int Size; // [esp+18h] [ebp-60h] - int v13; // [esp+1Ch] [ebp-5Ch] - _DWORD *v14; // [esp+1Ch] [ebp-5Ch] - int v15; // [esp+20h] [ebp-58h] - int v16; // [esp+24h] [ebp-54h] - - v5 = *this; - v6 = *(*this - 3); - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - *(*this - 3)); - v7 = v6 - a2; - if ( v6 - a2 > a3 ) - v7 = a3; - v16 = v7; - if ( v7 - v6 + 536870910 < a5 ) - std::__throw_length_error((std::length_error *)"basic_string::replace"); - if ( v5 > (int *)Src || Src > (_WORD *)v5 + v6 || *(v5 - 1) > 0 ) - { - std::wstring::_M_mutate(this, a2, v7, a5); - if ( a5 ) - { - if ( a5 == 1 ) - *((_WORD *)*this + a2) = *Src; - else - memcpy((char *)*this + 2 * a2, Src, 2 * a5); - } - return this; - } - v9 = *this; - Size = 2 * a5; - v15 = 2 * a2; - if ( &Src[a5] <= (_WORD *)*this + a2 ) - { - v13 = ((char *)Src - (char *)v9) >> 1; -LABEL_15: - std::wstring::_M_mutate(this, a2, v7, a5); - v10 = (_WORD *)((char *)*this + v15); - if ( a5 == 1 ) - { - *v10 = *((_WORD *)*this + v13); - } - else if ( a5 ) - { - memcpy(v10, (char *)*this + 2 * v13, Size); - } - return this; - } - if ( Src >= (_WORD *)v9 + a2 + v7 ) - { - v13 = a5 + (((char *)Src - (char *)v9) >> 1) - v7; - goto LABEL_15; - } - v14 = std::wstring::_S_construct(Src, (int)&Src[a5]); - std::wstring::_M_mutate(this, a2, v16, a5); - if ( a5 ) - { - if ( a5 == 1 ) - *((_WORD *)*this + a2) = *(_WORD *)v14; - else - memcpy((char *)*this + v15, v14, Size); - } - if ( _CRT_MT ) - { - v11 = _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF); - } - else - { - v11 = *(v14 - 1); - *(v14 - 1) = v11 - 1; - } - if ( v11 <= 0 ) - operator delete(v14 - 3); - return this; -} -// 4C6F5A: positive sp value 4 has been found -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C6F70) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4) -{ - return std::wstring::replace(this, a2, a3, *a4, *((_DWORD *)*a4 - 3)); -} - -//----- (004C6FB0) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _DWORD *a4, unsigned int a5, unsigned int a6) -{ - unsigned int v6; // eax - - v6 = *(_DWORD *)(*a4 - 12) - a5; - if ( v6 > a6 ) - v6 = a6; - if ( a5 > *(_DWORD *)(*a4 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a5, - *(_DWORD *)(*a4 - 12)); - return std::wstring::replace(this, a2, a3, (_WORD *)(*a4 + 2 * a5), v6); -} - -//----- (004C7020) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 a5) -{ - unsigned int v5; // eax - - v5 = *(*this - 3) - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > *(*this - 3) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - *(*this - 3)); - return std::wstring::_M_replace_aux(this, a2, v5, a4, a5); -} - -//----- (004C7090) -------------------------------------------------------- -void __thiscall std::wstring::reserve(int *this, unsigned int a2) -{ - int v3; // ecx - unsigned int v4; // eax - unsigned int v5; // edx - int *v6; // ecx - _DWORD *v7; // esi - int v8; // eax - int v9; // edx - char v10[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *this; - v4 = a2; - if ( a2 == *(_DWORD *)(v3 - 8) ) - { - if ( *(int *)(v3 - 4) <= 0 ) - return; - v3 = *this; - } - v5 = *(_DWORD *)(v3 - 12); - v6 = (int *)(v3 - 12); - if ( a2 < v5 ) - v4 = v5; - v7 = std::wstring::_Rep::_M_clone(v6, (int)v10, v4 - v5); - v8 = *this; - if ( _CRT_MT ) - { - v9 = _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF); - } - else - { - v9 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v9 - 1; - } - if ( v9 <= 0 ) - operator delete((void *)(v8 - 12)); - *this = (int)v7; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4C7090: using guessed type char var_D[13]; - -//----- (004C7120) -------------------------------------------------------- -int __fastcall std::wstring::pop_back(int **a1) -{ - unsigned int v1; // eax - - v1 = *(*a1 - 3); - if ( v1 - 1 > v1 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - 0xFFFFFFFF, - 0); - return std::wstring::_M_mutate(a1, v1 - 1, 1, 0); -} - -//----- (004C7180) -------------------------------------------------------- -int __cdecl std::wstring::_M_assign(_WORD *a1, int a2, __int16 a3) -{ - int result; // eax - _WORD *v4; // edx - - result = a2; - v4 = a1; - if ( a2 == 1 ) - { - *a1 = a3; - } - else if ( a2 ) - { - do - { - *v4++ = a3; - --result; - } - while ( result ); - } - return result; -} - -//----- (004C71C0) -------------------------------------------------------- -int __thiscall std::wstring::_M_mutate(int **this, int a2, int a3, int a4) -{ - int *v5; // eax - int v6; // edi - unsigned int v7; // ecx - unsigned int v8; // ebx - int v9; // edi - _DWORD *v10; // eax - _DWORD *v11; // ecx - char *v12; // ebp - int *v13; // eax - _WORD *v14; // ecx - int v15; // edx - int result; // eax - void *v17; // [esp+18h] [ebp-34h] - _WORD *Src; // [esp+18h] [ebp-34h] - _DWORD *v19; // [esp+1Ch] [ebp-30h] - - v5 = *this; - v6 = *(*this - 3); - v7 = *(*this - 2); - v8 = v6 + a4 - a3; - v17 = (void *)(a2 + a3); - v9 = v6 - (a2 + a3); - if ( v8 > v7 ) - { -LABEL_4: - v10 = std::wstring::_Rep::_S_create(v8, v7); - v11 = v10; - if ( a2 ) - { - v13 = *this; - v12 = (char *)(v11 + 3); - if ( a2 == 1 ) - { - *((_WORD *)v11 + 6) = *(_WORD *)v13; - } - else - { - v19 = v11; - memcpy(v12, v13, 2 * a2); - v13 = *this; - v11 = v19; - } - } - else - { - v12 = (char *)(v10 + 3); - v13 = *this; - } - if ( v9 ) - { - Src = (_WORD *)v13 + (_DWORD)v17; - v14 = (_WORD *)v11 + a2 + a4 + 6; - if ( v9 == 1 ) - { - *v14 = *Src; - } - else - { - memcpy(v14, Src, 2 * v9); - v13 = *this; - } - } - if ( _CRT_MT ) - { - v15 = _InterlockedExchangeAdd(v13 - 1, 0xFFFFFFFF); - } - else - { - v15 = *(v13 - 1); - *(v13 - 1) = v15 - 1; - } - if ( v15 <= 0 ) - operator delete(v13 - 3); - *this = (int *)v12; - goto LABEL_14; - } - if ( *(v5 - 1) > 0 ) - { - v7 = *(*this - 2); - goto LABEL_4; - } - v12 = (char *)*this; - if ( v9 && a4 != a3 ) - { - if ( v9 == 1 ) - { - *(_WORD *)&v12[2 * a2 + 2 * a4] = *(_WORD *)&v12[2 * (_DWORD)v17]; - } - else - { - memmove(&v12[2 * a2 + 2 * a4], &v12[2 * (_DWORD)v17], 2 * v9); - v12 = (char *)*this; - } - } -LABEL_14: - result = 0; - *((_DWORD *)v12 - 1) = 0; - *((_DWORD *)v12 - 3) = v8; - *(_WORD *)&v12[2 * v8] = 0; - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C7380) -------------------------------------------------------- -int __thiscall std::wstring::push_back(int *this, __int16 a2) -{ - int v3; // edx - int v4; // ebx - int result; // eax - - v3 = *(_DWORD *)(*this - 12); - v4 = v3 + 1; - if ( (unsigned int)(v3 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::wstring::reserve(this, v3 + 1); - result = *this; - *(_WORD *)(result + 2 * *(_DWORD *)(*this - 12)) = a2; - *(_DWORD *)(result - 4) = 0; - *(_DWORD *)(result - 12) = v4; - *(_WORD *)(result + 2 * v4) = 0; - return result; -} - -//----- (004C73D0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - char *v2; // eax - _WORD *result; // eax - - *this = *a2; - v2 = (char *)operator new(0xEu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004C7410) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) -{ - char *v3; // eax - _WORD *result; // eax - - *this = *a2; - v3 = (char *)operator new(0xEu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004C7450) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) -{ - int v3; // eax - _DWORD *result; // eax - - v3 = -2; - if ( String ) - v3 = (int)&String[wcslen(String)]; - result = std::wstring::_S_construct(String, v3); - *this = result; - return result; -} - -//----- (004C74A0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, (int)&a2[a3]); - *this = result; - return result; -} - -//----- (004C74E0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - char *v3; // eax - _WORD *result; // eax - - v3 = (char *)operator new(0xEu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *this = result; - return result; -} - -//----- (004C7520) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - char v4[13]; // [esp+1Fh] [ebp-Dh] BYREF - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::wstring::_Rep::_M_clone(result - 3, (int)v4, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4C7520: using guessed type char var_D[13]; - -//----- (004C7590) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::wstring::_Rep::_M_clone(result - 3, a3, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C7600) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v5; // edx - _DWORD *result; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(*a2 + 2 * a3), *a2 + 2 * v5); - *this = result; - return result; -} - -//----- (004C7660) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) -{ - int v5; // ecx - unsigned int v6; // eax - int v7; // eax - _DWORD *result; // eax - - v5 = *a2; - v6 = *(_DWORD *)(*a2 - 12) - a3; - if ( v6 > a4 ) - v6 = a4; - v7 = v5 + 2 * (a3 + v6); - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(v5 + 2 * a3), v7); - *this = result; - return result; -} - -//----- (004C76D0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) -{ - int v6; // ecx - unsigned int v7; // eax - int v8; // eax - _DWORD *result; // eax - - v6 = *a2; - v7 = *(_DWORD *)(*a2 - 12) - a3; - if ( v7 > a4 ) - v7 = a4; - v8 = v6 + 2 * (a3 + v7); - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(v6 + 2 * a3), v8); - *this = result; - return result; -} - -//----- (004C7740) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, (int)&a2[a3]); - *this = result; - return result; -} - -//----- (004C7780) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, a3); - *this = result; - return result; -} - -//----- (004C77B0) -------------------------------------------------------- -_WORD *__fastcall std::wstring::basic_string(_DWORD *a1) -{ - char *v2; // eax - _WORD *result; // eax - - v2 = (char *)operator new(0xEu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a1 = result; - return result; -} - -//----- (004C77F0) -------------------------------------------------------- -int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - size_t Size; // esi - int v6; // ebp - _DWORD *v7; // ebx - void *v8; // ecx - int result; // eax - - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - memcpy(v8, Src, Size); - v8 = v7 + 3; - } - result = 0; - v7[2] = 0; - *v7 = v6; - *(_WORD *)((char *)v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004C7880) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // esi - int v6; // ebp - int *v7; // eax - int *v8; // ebx - _DWORD *v9; // ecx - int result; // eax - _DWORD *v11; // [esp+1Ch] [ebp-20h] - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7; - v9 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - v11 = v7 + 3; - memcpy(v7 + 3, Src, Size); - v9 = v11; - } - result = 0; - v8[2] = 0; - *v8 = v6; - *(_WORD *)((char *)v8 + Size + 12) = 0; - *this = v9; - return result; -} - -//----- (004C7930) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // esi - int v6; // ebp - int *v7; // eax - int *v8; // ebx - _DWORD *v9; // ecx - int result; // eax - _DWORD *v11; // [esp+1Ch] [ebp-20h] - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7; - v9 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - v11 = v7 + 3; - memcpy(v7 + 3, Src, Size); - v9 = v11; - } - result = 0; - v8[2] = 0; - *v8 = v6; - *(_WORD *)((char *)v8 + Size + 12) = 0; - *this = v9; - return result; -} - -//----- (004C79E0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - char *v2; // eax - _WORD *result; // eax - - *this = *a2; - v2 = (char *)operator new(0xEu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004C7A20) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) -{ - char *v3; // eax - _WORD *result; // eax - - *this = *a2; - v3 = (char *)operator new(0xEu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004C7A60) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) -{ - int v3; // eax - _DWORD *result; // eax - - v3 = -2; - if ( String ) - v3 = (int)&String[wcslen(String)]; - result = std::wstring::_S_construct(String, v3); - *this = result; - return result; -} - -//----- (004C7AB0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, (int)&a2[a3]); - *this = result; - return result; -} - -//----- (004C7AF0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - char *v3; // eax - _WORD *result; // eax - - v3 = (char *)operator new(0xEu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *this = result; - return result; -} - -//----- (004C7B30) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - char v4[13]; // [esp+1Fh] [ebp-Dh] BYREF - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::wstring::_Rep::_M_clone(result - 3, (int)v4, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4C7B30: using guessed type char var_D[13]; - -//----- (004C7BA0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::wstring::_Rep::_M_clone(result - 3, a3, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C7C10) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v5; // edx - _DWORD *result; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(*a2 + 2 * a3), *a2 + 2 * v5); - *this = result; - return result; -} - -//----- (004C7C70) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) -{ - int v5; // ecx - unsigned int v6; // eax - int v7; // eax - _DWORD *result; // eax - - v5 = *a2; - v6 = *(_DWORD *)(*a2 - 12) - a3; - if ( v6 > a4 ) - v6 = a4; - v7 = v5 + 2 * (a3 + v6); - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(v5 + 2 * a3), v7); - *this = result; - return result; -} - -//----- (004C7CE0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) -{ - int v6; // ecx - unsigned int v7; // eax - int v8; // eax - _DWORD *result; // eax - - v6 = *a2; - v7 = *(_DWORD *)(*a2 - 12) - a3; - if ( v7 > a4 ) - v7 = a4; - v8 = v6 + 2 * (a3 + v7); - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(v6 + 2 * a3), v8); - *this = result; - return result; -} - -//----- (004C7D50) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, (int)&a2[a3]); - *this = result; - return result; -} - -//----- (004C7D90) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, a3); - *this = result; - return result; -} - -//----- (004C7DC0) -------------------------------------------------------- -_WORD *__fastcall std::wstring::basic_string(_DWORD *a1) -{ - char *v2; // eax - _WORD *result; // eax - - v2 = (char *)operator new(0xEu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a1 = result; - return result; -} - -//----- (004C7E00) -------------------------------------------------------- -int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - size_t Size; // esi - int v6; // ebp - _DWORD *v7; // ebx - void *v8; // ecx - int result; // eax - - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - memcpy(v8, Src, Size); - v8 = v7 + 3; - } - result = 0; - v7[2] = 0; - *v7 = v6; - *(_WORD *)((char *)v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004C7E90) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // esi - int v6; // ebp - int *v7; // eax - int *v8; // ebx - _DWORD *v9; // ecx - int result; // eax - _DWORD *v11; // [esp+1Ch] [ebp-20h] - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7; - v9 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - v11 = v7 + 3; - memcpy(v7 + 3, Src, Size); - v9 = v11; - } - result = 0; - v8[2] = 0; - *v8 = v6; - *(_WORD *)((char *)v8 + Size + 12) = 0; - *this = v9; - return result; -} - -//----- (004C7F40) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // esi - int v6; // ebp - int *v7; // eax - int *v8; // ebx - _DWORD *v9; // ecx - int result; // eax - _DWORD *v11; // [esp+1Ch] [ebp-20h] - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7; - v9 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - v11 = v7 + 3; - memcpy(v7 + 3, Src, Size); - v9 = v11; - } - result = 0; - v8[2] = 0; - *v8 = v6; - *(_WORD *)((char *)v8 + Size + 12) = 0; - *this = v9; - return result; -} - -//----- (004C7FF0) -------------------------------------------------------- -void __fastcall std::wstring::~wstring(int *a1) -{ - int v1; // eax - int v2; // edx - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)(v1 - 12)); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C8030) -------------------------------------------------------- -void __fastcall std::wstring::~wstring(int *a1) -{ - int v1; // eax - int v2; // edx - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)(v1 - 12)); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004C8070) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, int *a2) -{ - _DWORD *result; // eax - int v3; // edx - int v4; // ecx - - result = this; - v3 = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - v4 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *result = v4; - *a2 = v3; - return result; -} - -//----- (004C80B0) -------------------------------------------------------- -int **__thiscall std::wstring::operator=(int **this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::assign(this, (char *)String, v3); -} - -//----- (004C80E0) -------------------------------------------------------- -int *__thiscall std::wstring::operator=(int *this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - int v5; // edx - char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = (_DWORD *)*a2; - if ( *this != *a2 ) - { - if ( (int)*(v3 - 1) < 0 ) - { - v3 = std::wstring::_Rep::_M_clone(v3 - 3, (int)v7, 0); - v4 = *this; - if ( !_CRT_MT ) - goto LABEL_6; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(v3 - 1, 1u); - else - ++*(v3 - 1); - v4 = *this; - if ( !_CRT_MT ) - { -LABEL_6: - v5 = *(_DWORD *)(v4 - 4); - *(_DWORD *)(v4 - 4) = v5 - 1; - if ( v5 > 0 ) - { -LABEL_7: - *this = (int)v3; - return this; - } -LABEL_11: - operator delete((void *)(v4 - 12)); - *this = (int)v3; - return this; - } - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v4 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - goto LABEL_11; - } - return this; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4C80E0: using guessed type char var_D[13]; - -//----- (004C8190) -------------------------------------------------------- -int **__thiscall std::wstring::operator=(int **this, char *a2, int a3) -{ - std::wstring::assign(this, a2, a3); - return this; -} - -//----- (004C81C0) -------------------------------------------------------- -int **__thiscall std::wstring::operator=(int **this, __int16 a2) -{ - std::wstring::_M_mutate(this, 0, *(*this - 3), 1); - *(_WORD *)*this = a2; - return this; -} - -//----- (004C8200) -------------------------------------------------------- -char *__thiscall std::wstring::operator[](int **this, int a2) -{ - int *v2; // eax - int *v5; // eax - - v2 = *this; - if ( *(*this - 1) < 0 ) - return (char *)v2 + 2 * a2; - if ( *(v2 - 1) > 0 ) - std::wstring::_M_mutate(this, 0, 0, 0); - v5 = *this; - *(v5 - 1) = -1; - return (char *)v5 + 2 * a2; -} - -//----- (004C8260) -------------------------------------------------------- -int *__thiscall std::wstring::operator+=(int *this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::append(this, (char *)String, v3); -} - -//----- (004C82B0) -------------------------------------------------------- -int *__thiscall std::wstring::operator+=(int *this, __int16 a2) -{ - int v3; // edx - int v4; // esi - int v5; // eax - - v3 = *(_DWORD *)(*this - 12); - v4 = v3 + 1; - if ( (unsigned int)(v3 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::wstring::reserve(this, v3 + 1); - v5 = *this; - *(_WORD *)(v5 + 2 * *(_DWORD *)(*this - 12)) = a2; - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v4; - *(_WORD *)(v5 + 2 * v4) = 0; - return this; -} - -//----- (004C8310) -------------------------------------------------------- -void __userpurge std::iostream::swap(_DWORD *a1@, std::iostream *this, std::iostream *a3) -{ - std::ios_base *v4; // esi - std::ios_base *v5; // ebx - int v6; // edx - char v7; // cl - char v8; // cl - int v9; // edx - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v4 = (std::ios_base *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = (std::iostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - std::ios_base::_M_swap(v4, v5, v10); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - std::ios::_M_cache_locale(v5, (int)v5 + 108); - v6 = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = *((_DWORD *)v5 + 28); - *((_DWORD *)v5 + 28) = v6; - v7 = *((_BYTE *)v4 + 116); - *((_BYTE *)v4 + 116) = *((_BYTE *)v5 + 116); - LOBYTE(v6) = *((_BYTE *)v5 + 117); - *((_BYTE *)v5 + 116) = v7; - v8 = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 117) = v6; - v9 = a1[1]; - *((_BYTE *)v5 + 117) = v8; - a1[1] = *((_DWORD *)this + 1); - *((_DWORD *)this + 1) = v9; -} -// 4C834D: variable 'v10' is possibly undefined - -//----- (004C83D0) -------------------------------------------------------- -void __thiscall std::iostream::iostream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 3; - std::ios_base::ios_base(this + 3); - *((_WORD *)this + 64) = 0; - v2 = a2[1]; - *this = &unk_55B3C0; - this[1] = v2; - this[31] = 0; - v3 = *a2; - this[33] = 0; - this[34] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[3] = &unk_55B3D4; - this[35] = 0; - this[36] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 30)); - this[33] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[31] = v5; - *((_WORD *)this + 64) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; - *this = &off_55FE04; - this[3] = off_55FE2C; - this[2] = off_55FE18; -} -// 4C8472: variable 'v6' is possibly undefined -// 55FE04: using guessed type void (__cdecl *off_55FE04)(std::iostream *__hidden this); -// 55FE18: using guessed type void (__cdecl *off_55FE18[2])(std::iostream *__hidden this); -// 55FE2C: using guessed type void (__cdecl *off_55FE2C[2])(std::iostream *__hidden this); - -//----- (004C8520) -------------------------------------------------------- -void __thiscall std::iostream::iostream(_DWORD *this, int a2) -{ - int v2; // [esp+14h] [ebp-44h] - - v2 = (int)(this + 3); - std::ios_base::ios_base(this + 3); - this[31] = 0; - *((_WORD *)this + 64) = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - *this = &unk_55B3C0; - this[3] = &unk_55B3D4; - this[1] = 0; - std::ios::init(v2, a2); - this[2] = &unk_55B3E8; - this[3] = &unk_55B3FC; - std::ios::init(v2, a2); - *this = &off_55FE04; - this[3] = off_55FE2C; - this[2] = off_55FE18; -} -// 55FE04: using guessed type void (__cdecl *off_55FE04)(std::iostream *__hidden this); -// 55FE18: using guessed type void (__cdecl *off_55FE18[2])(std::iostream *__hidden this); -// 55FE2C: using guessed type void (__cdecl *off_55FE2C[2])(std::iostream *__hidden this); - -//----- (004C8660) -------------------------------------------------------- -void __fastcall std::iostream::iostream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 12; - std::ios_base::ios_base((_DWORD *)(a1 + 12)); - *(_DWORD *)(a1 + 124) = 0; - *(_WORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)(a1 + 144) = 0; - *(_DWORD *)a1 = &unk_55B3C0; - *(_DWORD *)(a1 + 12) = &unk_55B3D4; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_55B3E8; - *(_DWORD *)(a1 + 12) = &unk_55B3FC; - std::ios::init(v1, 0); - *(_DWORD *)a1 = &off_55FE04; - *(_DWORD *)(a1 + 12) = off_55FE2C; - *(_DWORD *)(a1 + 8) = off_55FE18; -} -// 55FE04: using guessed type void (__cdecl *off_55FE04)(std::iostream *__hidden this); -// 55FE18: using guessed type void (__cdecl *off_55FE18[2])(std::iostream *__hidden this); -// 55FE2C: using guessed type void (__cdecl *off_55FE2C[2])(std::iostream *__hidden this); - -//----- (004C87A0) -------------------------------------------------------- -int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // edi - int v6; // edx - __int16 v7; // ax - int v8; // eax - int v9; // edx - int v10; // eax - int v11; // edx - int result; // eax - std::ios_base *v13; // [esp+4h] [ebp-38h] - std::ios_base *v14; // [esp+1Ch] [ebp-20h] - - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; - this[1] = a3[1]; - v5 = (int)this + *(_DWORD *)(v4 - 12); - v14 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v5, v14, v13); - std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); - *(_DWORD *)(v5 + 120) = 0; - v6 = *((_DWORD *)v14 + 28); - *((_DWORD *)v14 + 28) = 0; - v7 = *((_WORD *)v14 + 58); - *(_DWORD *)(v5 + 112) = v6; - *(_WORD *)(v5 + 116) = v7; - v8 = a2[3]; - a3[1] = 0; - v9 = a2[4]; - this[2] = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v9; - v10 = *a2; - v11 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - result = a2[6]; - this[2] = result; - return result; -} -// 4C87DB: variable 'v13' is possibly undefined - -//----- (004C8850) -------------------------------------------------------- -void __thiscall std::iostream::iostream(int *this, int *a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - _DWORD *v8; // ecx - int v9; // eax - int v10; // edx - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v4 - 12), a3); - v7 = a2[3]; - this[2] = v7; - v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); - *v8 = a2[4]; - std::ios::init((int)v8, a3); - v9 = *a2; - v10 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; - this[2] = a2[6]; -} - -//----- (004C8950) -------------------------------------------------------- -void __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - - v3 = *((_DWORD *)this + 1); - v4 = *((_DWORD *)this + 2); - v5 = *(_DWORD *)(v3 - 12); - *ecx0 = v3; - *(_DWORD *)((char *)ecx0 + v5) = v4; - ecx0[1] = 0; - std::ios::init((int)ecx0 + *(_DWORD *)(v3 - 12), 0); - v6 = *((_DWORD *)this + 3); - ecx0[2] = v6; - v7 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v6 - 12) + 8); - *v7 = *((_DWORD *)this + 4); - std::ios::init((int)v7, 0); - v8 = *(_DWORD *)this; - v9 = *((_DWORD *)this + 5); - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v8 - 12)) = v9; - ecx0[2] = *((_DWORD *)this + 6); -} - -//----- (004C8A50) -------------------------------------------------------- -void __fastcall std::iostream::~iostream(_DWORD *a1) -{ - _DWORD *v2; // ecx - - v2 = a1 + 3; - *(v2 - 1) = &unk_55B3E8; - *(v2 - 3) = &unk_55B3C0; - *(v2 - 2) = 0; - *v2 = &off_560E20; - std::ios_base::~ios_base((int)v2); - operator delete(a1); -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004C8A90) -------------------------------------------------------- -void __fastcall std::iostream::~iostream(int a1) -{ - _DWORD *v1; // ecx - - *(_DWORD *)(a1 + 8) = &unk_55B3E8; - v1 = (_DWORD *)(a1 + 12); - *(v1 - 3) = &unk_55B3C0; - *(v1 - 2) = 0; - *v1 = &off_560E20; - std::ios_base::~ios_base((int)v1); -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004C8AC0) -------------------------------------------------------- -void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this) -{ - int v2; // edx - int v3; // edx - int v4; // edx - - v2 = *(_DWORD *)this; - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 5); - ecx0[2] = *((_DWORD *)this + 6); - v3 = *((_DWORD *)this + 3); - ecx0[2] = v3; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12) + 8) = *((_DWORD *)this + 4); - v4 = *((_DWORD *)this + 1); - *ecx0 = v4; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v4 - 12)) = *((_DWORD *)this + 2); - ecx0[1] = 0; -} - -//----- (004C8B10) -------------------------------------------------------- -_DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - return this; -} -// 4C8B4D: variable 'v10' is possibly undefined - -//----- (004C8BD0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 48))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C8C1A: variable 'v5' is possibly undefined -// 4C8BD0: using guessed type int var_1C[7]; - -//----- (004C8D90) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 8))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C8DDA: variable 'v5' is possibly undefined -// 4C8D90: using guessed type int var_1C[7]; - -//----- (004C8F50) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 40))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C8F9A: variable 'v5' is possibly undefined -// 4C8F50: using guessed type int var_1C[7]; - -//----- (004C9110) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 44))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C915A: variable 'v5' is possibly undefined -// 4C9110: using guessed type int var_1C[7]; - -//----- (004C92D0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 36))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C931A: variable 'v5' is possibly undefined -// 4C92D0: using guessed type int var_1C[7]; - -//----- (004C9490) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 20))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C94DA: variable 'v5' is possibly undefined -// 4C9490: using guessed type int var_1C[7]; - -//----- (004C9650) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C969A: variable 'v5' is possibly undefined -// 4C9650: using guessed type int var_1C[7]; - -//----- (004C9810) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 24))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C985A: variable 'v5' is possibly undefined -// 4C9810: using guessed type int var_1C[7]; - -//----- (004C99D0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 16))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C9A1A: variable 'v5' is possibly undefined -// 4C99D0: using guessed type int var_1C[7]; - -//----- (004C9B90) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 28))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C9BDA: variable 'v5' is possibly undefined -// 4C9B90: using guessed type int var_1C[7]; - -//----- (004C9D50) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 32))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 4C9D9A: variable 'v5' is possibly undefined -// 4C9D50: using guessed type int var_1C[7]; - -//----- (004C9F10) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::get@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - int a4) -{ - int v4; // eax - _BYTE *v5; // esi - unsigned __int8 v7; // al - int (__stdcall *v9)(unsigned __int8); // edx - char v10; // [esp+Ch] [ebp-10h] - - v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v5 = *(_BYTE **)((char *)a1 + v4 + 124); - if ( !v5 ) - std::__throw_bad_cast(); - if ( v5[28] ) - { - v7 = v5[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); - v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); - v7 = 10; - if ( v9 != std::ctype::do_widen ) - v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); - } - return std::istream::get(a1, this, a3, v7, v10); -} -// 4C9F43: variable 'v10' is possibly undefined - -//----- (004C9F90) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::get@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - unsigned __int8 a4, - char a5) -{ - int v6; // edx - unsigned __int8 *v7; // eax - int v8; // eax - unsigned __int8 *v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - bool v12; // [esp+8h] [ebp-80h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - char v15[25]; // [esp+6Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v15, a1, (std::istream *)1, v12); - if ( !v15[0] ) - { - if ( (int)a3 > 0 ) - *(_BYTE *)this = 0; - goto LABEL_4; - } - lpuexcpt = *(struct _Unwind_Exception **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v7 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v7 < *((_DWORD *)lpuexcpt + 3) ) - { - v8 = *v7; - if ( (int)a3 <= *((_DWORD *)a1 + 1) + 1 ) - goto LABEL_7; - goto LABEL_13; - } - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v6 = *((_DWORD *)a1 + 1); - if ( (int)a3 <= v6 + 1 ) - { -LABEL_6: - if ( v8 != -1 ) - goto LABEL_7; - } - else if ( v8 != -1 ) - { -LABEL_13: - if ( a4 != v8 ) - { - while ( 1 ) - { - this = (std::istream *)((char *)this + 1); - *((_BYTE *)this - 1) = v8; - v10 = *((_DWORD *)lpuexcpt + 3); - ++*((_DWORD *)a1 + 1); - v11 = *((_DWORD *)lpuexcpt + 2); - if ( v11 < v10 ) - { - v9 = (unsigned __int8 *)(v11 + 1); - *((_DWORD *)lpuexcpt + 2) = v9; - } - else - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_21; - v9 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - v10 = *((_DWORD *)lpuexcpt + 3); - } - if ( (unsigned int)v9 >= v10 ) - { - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v6 = *((_DWORD *)a1 + 1); - if ( v6 + 1 >= (int)a3 ) - goto LABEL_6; - if ( v8 == -1 ) - { -LABEL_21: - if ( (int)a3 > 0 ) - { - v6 = 2; - *(_BYTE *)this = 0; - if ( *((_DWORD *)a1 + 1) ) - goto LABEL_10; - goto LABEL_23; - } - if ( !*((_DWORD *)a1 + 1) ) - { - v6 = 2; -LABEL_23: - v6 |= 4u; - goto LABEL_10; - } -LABEL_33: - v6 = 2; - goto LABEL_10; - } - } - else - { - v8 = *v9; - v6 = *((_DWORD *)a1 + 1); - if ( v6 + 1 >= (int)a3 ) - break; - } - if ( v8 == a4 ) - { - if ( (int)a3 > 0 ) - { - *(_BYTE *)this = 0; - v6 = *((_DWORD *)a1 + 1); - } - if ( !v6 ) - goto LABEL_23; - return a1; - } - } - } -LABEL_7: - if ( (int)a3 > 0 ) - { - *(_BYTE *)this = 0; - if ( *((_DWORD *)a1 + 1) ) - return a1; - goto LABEL_9; - } -LABEL_4: - if ( *((_DWORD *)a1 + 1) ) - return a1; -LABEL_9: - v6 = 4; - goto LABEL_10; - } - if ( (int)a3 <= 0 ) - { - if ( v6 ) - goto LABEL_33; - } - else - { - *(_BYTE *)this = 0; - if ( *((_DWORD *)a1 + 1) ) - goto LABEL_33; - } - v6 = 6; -LABEL_10: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v6); - return a1; -} -// 4C9FE7: variable 'v12' is possibly undefined -// 4C9F90: using guessed type char var_19[25]; - -//----- (004CA2F0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2) -{ - int v2; // eax - _BYTE *v3; // esi - unsigned __int8 v5; // al - int (__stdcall *v7)(unsigned __int8); // edx - - v2 = *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *(_BYTE **)((char *)this + v2 + 124); - if ( !v3 ) - std::__throw_bad_cast(); - if ( v3[28] ) - { - v5 = v3[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)this + v2 + 124)); - v7 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); - v5 = 10; - if ( v7 != std::ctype::do_widen ) - v5 = ((int (__thiscall *)(_BYTE *, int))v7)(v3, 10); - } - return std::istream::get(this, a2, v5); -} - -//----- (004CA370) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3) -{ - int v3; // eax - unsigned __int8 *v5; // eax - int v6; // edx - int v7; // eax - unsigned int v8; // edx - unsigned int v9; // eax - unsigned __int8 *v10; // eax - int v11; // edx - _BYTE *v12; // edx - bool v13; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v16[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)this + 1) = 0; - std::istream::sentry::sentry(v16, this, (std::istream *)1, v13); - if ( v16[0] ) - { - lpuexcpt = *(struct _Unwind_Exception **)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 120); - v5 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v7 = (unsigned __int8)v6; - if ( v6 == -1 ) - { -LABEL_20: - v3 = *((_DWORD *)this + 1) == 0 ? 6 : 2; - goto LABEL_4; - } - } - else - { - v6 = *v5; - v7 = v6; - } - if ( v6 != a3 ) - { - do - { - v12 = (_BYTE *)a2[5]; - if ( (unsigned int)v12 < a2[6] ) - { - *v12 = v7; - ++a2[5]; - } - else if ( (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v7) == -1 ) - { - break; - } - ++*((_DWORD *)this + 1); - v8 = *((_DWORD *)lpuexcpt + 3); - v9 = *((_DWORD *)lpuexcpt + 2); - if ( v9 >= v8 ) - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_20; - v10 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - } - else - { - v10 = (unsigned __int8 *)(v9 + 1); - *((_DWORD *)lpuexcpt + 2) = v10; - } - if ( (unsigned int)v10 >= v8 ) - { - v11 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v7 = (unsigned __int8)v11; - if ( v11 == -1 ) - goto LABEL_20; - } - else - { - v7 = *v10; - v11 = (unsigned __int8)v7; - } - } - while ( a3 != v11 ); - } - } - if ( !*((_DWORD *)this + 1) ) - { - v3 = 4; -LABEL_4: - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v3); - } - return this; -} -// 4CA3C7: variable 'v13' is possibly undefined -// 4CA370: using guessed type char var_19[25]; - -//----- (004CA600) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3) -{ - int v3; // eax - _DWORD *v5; // ecx - char *v6; // eax - char v7; // dl - int v8; // eax - bool v9; // [esp+8h] [ebp-70h] - char v11[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v11, a1, (std::istream *)1, v9); - if ( v11[0] ) - { - v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v6 = (char *)v5[2]; - if ( (unsigned int)v6 >= v5[3] ) - { - v8 = (*(int (__fastcall **)(_DWORD *))(*v5 + 40))(v5); - if ( v8 == -1 ) - { - v3 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; - goto LABEL_4; - } - v7 = v8; - } - else - { - v7 = *v6; - v5[2] = v6 + 1; - } - *((_DWORD *)a1 + 1) = 1; - *(_BYTE *)this = v7; - if ( *((_DWORD *)a1 + 1) ) - return a1; -LABEL_3: - v3 = 4; -LABEL_4: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v3); - return a1; - } - if ( !*((_DWORD *)a1 + 1) ) - goto LABEL_3; - return a1; -} -// 4CA651: variable 'v9' is possibly undefined -// 4CA600: using guessed type char var_19[25]; - -//----- (004CA7D0) -------------------------------------------------------- -int __fastcall std::istream::get(std::istream::sentry *a1) -{ - _DWORD *v1; // ecx - unsigned __int8 *v2; // eax - struct _Unwind_Exception *v3; // edi - int v5; // eax - bool v6; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v9[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v9, a1, (std::istream *)1, v6); - if ( !v9[0] ) - { - if ( *((_DWORD *)a1 + 1) ) - return -1; - v5 = 4; -LABEL_8: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v5); - return -1; - } - v1 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v2 = (unsigned __int8 *)v1[2]; - if ( (unsigned int)v2 >= v1[3] ) - { - lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(_DWORD *))(*v1 + 40))(v1); - if ( lpuexcpt != (struct _Unwind_Exception *)-1 ) - goto LABEL_4; - v5 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; - goto LABEL_8; - } - v3 = (struct _Unwind_Exception *)*v2; - v1[2] = v2 + 1; - lpuexcpt = v3; -LABEL_4: - *((_DWORD *)a1 + 1) = 1; - return (int)lpuexcpt; -} -// 4CA821: variable 'v6' is possibly undefined -// 4CA7D0: using guessed type char var_19[25]; - -//----- (004CA990) -------------------------------------------------------- -int __fastcall std::istream::peek(std::istream::sentry *a1) -{ - _DWORD *v1; // ecx - unsigned __int8 *v2; // eax - bool v4; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v7[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v7, a1, (std::istream *)1, v4); - if ( !v7[0] ) - return -1; - v1 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v2 = (unsigned __int8 *)v1[2]; - if ( (unsigned int)v2 < v1[3] ) - return *v2; - lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(_DWORD *))(*v1 + 36))(v1); - if ( lpuexcpt == (struct _Unwind_Exception *)-1 ) - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); - return (int)lpuexcpt; -} -// 4CA9E1: variable 'v4' is possibly undefined -// 4CA990: using guessed type char var_19[25]; - -//----- (004CAB30) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::read@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - int a4) -{ - int v4; // ecx - char *v5; // eax - bool v7; // [esp+8h] [ebp-70h] - char v9[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v9, a1, (std::istream *)1, v7); - if ( v9[0] ) - { - v4 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v5 = (char *)(*(int (__thiscall **)(int, std::istream *, char *))(*(_DWORD *)v4 + 32))(v4, this, a3); - *((_DWORD *)a1 + 1) = v5; - if ( a3 != v5 ) - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); - } - return a1; -} -// 4CAB81: variable 'v7' is possibly undefined -// 4CAB30: using guessed type char var_19[25]; - -//----- (004CACC0) -------------------------------------------------------- -void __userpurge std::istream::swap(_DWORD *a1@, std::istream *this, std::istream *a3) -{ - std::ios_base *v4; // esi - std::ios_base *v5; // ebx - int v6; // edx - char v7; // cl - char v8; // cl - int v9; // edx - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v4 = (std::ios_base *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = (std::istream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - std::ios_base::_M_swap(v4, v5, v10); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - std::ios::_M_cache_locale(v5, (int)v5 + 108); - v6 = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = *((_DWORD *)v5 + 28); - *((_DWORD *)v5 + 28) = v6; - v7 = *((_BYTE *)v4 + 116); - *((_BYTE *)v4 + 116) = *((_BYTE *)v5 + 116); - LOBYTE(v6) = *((_BYTE *)v5 + 117); - *((_BYTE *)v5 + 116) = v7; - v8 = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 117) = v6; - v9 = a1[1]; - *((_BYTE *)v5 + 117) = v8; - a1[1] = *((_DWORD *)this + 1); - *((_DWORD *)this + 1) = v9; -} -// 4CACFD: variable 'v10' is possibly undefined - -//----- (004CAD80) -------------------------------------------------------- -int __fastcall std::istream::sync(std::istream::sentry *a1) -{ - int v1; // ecx - bool v3; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::istream::sentry::sentry(v6, a1, (std::istream *)1, v3); - if ( !v6[0] ) - return -1; - v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - if ( !v1 ) - return -1; - lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1); - if ( lpuexcpt != (struct _Unwind_Exception *)-1 ) - return 0; - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - return (int)lpuexcpt; -} -// 4CADCA: variable 'v3' is possibly undefined -// 4CAD80: using guessed type char var_19[25]; - -//----- (004CAF10) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5) -{ - char *v5; // edi - _DWORD *v6; // eax - int v7; // edi - void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax - _DWORD *v10; // [esp+0h] [ebp-B8h] - bool v11; // [esp+8h] [ebp-B0h] - char v13; // [esp+7Fh] [ebp-39h] BYREF - int v14[14]; // [esp+80h] [ebp-38h] BYREF - - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); - std::istream::sentry::sentry(&v13, this, (std::istream *)1, v11); - if ( v13 ) - { - v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (v5[20] & 5) == 0 ) - { - v6 = (_DWORD *)*((_DWORD *)v5 + 30); - v7 = *v6; - v14[6] = a4; - v10 = v6; - v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); - v14[4] = a2; - v14[5] = a3; - v14[7] = a5; - v8(v14, v10, a2, a3, a4, a5, 8); - if ( (v14[0] & v14[1]) == -1 ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); - } - } - return this; -} -// 4CAF9F: variable 'v11' is possibly undefined - -//----- (004CB150) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4) -{ - char *v4; // edi - bool v6; // [esp+8h] [ebp-90h] - char v8; // [esp+6Fh] [ebp-29h] BYREF - int v9[10]; // [esp+70h] [ebp-28h] BYREF - - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); - std::istream::sentry::sentry(&v8, this, (std::istream *)1, v6); - if ( v8 ) - { - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (v4[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( - v9, - *((_DWORD *)v4 + 30), - a2, - a3, - a4, - 8); - if ( (v9[0] & v9[1]) == -1 ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); - } - } - return this; -} -// 4CB1C4: variable 'v6' is possibly undefined - -//----- (004CB320) -------------------------------------------------------- -_DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this) -{ - char *v2; // esi - bool v4; // [esp+8h] [ebp-90h] - char v6; // [esp+6Fh] [ebp-29h] BYREF - int v7[10]; // [esp+70h] [ebp-28h] BYREF - - *ecx0 = -1; - ecx0[1] = -1; - ecx0[2] = 0; - std::istream::sentry::sentry(&v6, this, (std::istream *)1, v4); - if ( v6 ) - { - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (v2[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v2 + 30) + 16))( - v7, - *((_DWORD *)v2 + 30), - 0, - 0, - 1, - 8); - *ecx0 = v7[0]; - ecx0[1] = v7[1]; - ecx0[2] = v7[2]; - } - } - return ecx0; -} -// 4CB384: variable 'v4' is possibly undefined - -//----- (004CB4D0) -------------------------------------------------------- -std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *a1) -{ - int v2; // eax - _DWORD *v3; // ecx - _DWORD *v4; // eax - unsigned int v5; // eax - bool v7; // [esp+8h] [ebp-70h] - char v9[25]; // [esp+5Fh] [ebp-19h] BYREF - - v2 = *(_DWORD *)a1; - *((_DWORD *)a1 + 1) = 0; - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), - *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); - std::istream::sentry::sentry(v9, a1, (std::istream *)1, v7); - if ( v9[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - if ( v3 ) - { - v5 = v3[2]; - if ( v3[1] < v5 ) - { - v3[2] = v5 - 1; - return a1; - } - if ( (*(int (__thiscall **)(_DWORD *, int))(*v3 + 44))(v3, -1) != -1 ) - return a1; - v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - } - std::ios::clear(v4, v4[5] | 1); - } - return a1; -} -// 4CB53C: variable 'v7' is possibly undefined -// 4CB4D0: using guessed type char var_19[25]; - -//----- (004CB680) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::ignore@( - std::istream::sentry *a1@, - std::istream *this, - int a3) -{ - unsigned __int8 *v4; // eax - int v5; // edx - int i; // eax - unsigned int v7; // ebx - unsigned int v8; // edx - int v9; // ecx - unsigned __int8 *v10; // edx - unsigned __int8 *v11; // edx - bool v12; // [esp+8h] [ebp-80h] - _DWORD *v13; // [esp+1Ch] [ebp-6Ch] - char v14; // [esp+23h] [ebp-65h] - char lpuexcpt; // [esp+24h] [ebp-64h] - std::istream::sentry *v16; // [esp+28h] [ebp-60h] - char v17[25]; // [esp+6Fh] [ebp-19h] BYREF - - v16 = a1; - if ( this == (std::istream *)1 ) - return std::istream::ignore(a1); - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v17, a1, (std::istream *)1, v12); - if ( (int)this > 0 ) - { - lpuexcpt = v17[0]; - if ( v17[0] ) - { - v13 = *(_DWORD **)((char *)v16 + *(_DWORD *)(*(_DWORD *)v16 - 12) + 120); - v4 = (unsigned __int8 *)v13[2]; - if ( (unsigned int)v4 >= v13[3] ) - v5 = (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13); - else - v5 = *v4; - v14 = 0; - for ( i = *((_DWORD *)v16 + 1); ; i = 0x80000000 ) - { - while ( 2 ) - { - if ( (int)this > i ) - { - while ( 1 ) - { - if ( v5 == -1 ) - goto LABEL_23; - v7 = v13[3]; - v8 = v13[2]; - v9 = (int)this - i; - if ( (int)this - i > (int)(v7 - v8) ) - v9 = v13[3] - v8; - if ( v9 <= 1 ) - break; - v10 = (unsigned __int8 *)(v9 + v8); - i += v9; - v13[2] = v10; - *((_DWORD *)v16 + 1) = i; - if ( v7 <= (unsigned int)v10 ) - goto LABEL_26; - v5 = *v10; - if ( (int)this <= i ) - goto LABEL_16; - } - *((_DWORD *)v16 + 1) = i + 1; - if ( v8 >= v7 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v13 + 40))(v13) == -1 ) - { -LABEL_23: - if ( v14 ) - *((_DWORD *)v16 + 1) = 0x7FFFFFFF; - goto LABEL_25; - } - v11 = (unsigned __int8 *)v13[2]; - v7 = v13[3]; - } - else - { - v11 = (unsigned __int8 *)(v8 + 1); - v13[2] = v11; - } - if ( v7 > (unsigned int)v11 ) - { - v5 = *v11; - i = *((_DWORD *)v16 + 1); - continue; - } -LABEL_26: - v5 = (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13); - i = *((_DWORD *)v16 + 1); - continue; - } - break; - } -LABEL_16: - if ( this != (std::istream *)0x7FFFFFFF ) - break; - if ( v5 == -1 ) - goto LABEL_23; - *((_DWORD *)v16 + 1) = 0x80000000; - v14 = lpuexcpt; - } - if ( v14 ) - *((_DWORD *)v16 + 1) = 0x7FFFFFFF; - if ( v5 == -1 ) -LABEL_25: - std::ios::clear( - (std::istream::sentry *)((char *)v16 + *(_DWORD *)(*(_DWORD *)v16 - 12)), - *(_DWORD *)((char *)v16 + *(_DWORD *)(*(_DWORD *)v16 - 12) + 20) | 2); - } - } - return v16; -} -// 4CB6D7: variable 'v12' is possibly undefined -// 4CB680: using guessed type char var_19[25]; - -//----- (004CB980) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::ignore@( - std::istream::sentry *a1@, - std::istream *this, - int a3, - int a4) -{ - unsigned __int8 *v5; // eax - int v6; // eax - unsigned __int8 *v7; // ebx - signed int v8; // edi - _BYTE *v9; // eax - _DWORD *v10; // edx - signed int v11; // ecx - unsigned __int8 *v12; // ebx - unsigned int v13; // eax - unsigned __int8 *v14; // eax - int v15; // [esp+4h] [ebp-94h] - bool v16; // [esp+8h] [ebp-90h] - unsigned int v17; // [esp+24h] [ebp-74h] - _DWORD *v18; // [esp+2Ch] [ebp-6Ch] - char v19; // [esp+32h] [ebp-66h] - char v20; // [esp+33h] [ebp-65h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - std::istream::sentry *v22; // [esp+38h] [ebp-60h] - char v23[25]; // [esp+7Fh] [ebp-19h] BYREF - - v22 = a1; - if ( a3 == -1 ) - return std::istream::ignore(a1, this, v15); - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v23, a1, (std::istream *)1, v16); - if ( (int)this > 0 ) - { - v20 = v23[0]; - if ( v23[0] ) - { - v18 = *(_DWORD **)((char *)v22 + *(_DWORD *)(*(_DWORD *)v22 - 12) + 120); - v5 = (unsigned __int8 *)v18[2]; - if ( (unsigned int)v5 >= v18[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); - else - v6 = *v5; - v19 = 0; -LABEL_9: - for ( lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); - (int)this <= (int)lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)0x80000000 ) - { -LABEL_19: - if ( this != (std::istream *)0x7FFFFFFF ) - { - if ( v19 ) - goto LABEL_25; - goto LABEL_26; - } - if ( v6 == -1 ) - { -LABEL_33: - if ( v19 ) - *((_DWORD *)v22 + 1) = 0x7FFFFFFF; - goto LABEL_35; - } - if ( v6 == a3 ) - { - if ( !v19 ) - { -LABEL_29: - if ( lpuexcpt != (struct _Unwind_Exception *)0x7FFFFFFF ) -LABEL_30: - *((_DWORD *)v22 + 1) = (char *)lpuexcpt + 1; - v13 = v18[2]; - if ( v13 >= v18[3] ) - (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); - else - v18[2] = v13 + 1; - return v22; - } -LABEL_25: - *((_DWORD *)v22 + 1) = 0x7FFFFFFF; -LABEL_26: - if ( v6 == -1 ) - { -LABEL_35: - std::ios::clear( - (std::istream::sentry *)((char *)v22 + *(_DWORD *)(*(_DWORD *)v22 - 12)), - *(_DWORD *)((char *)v22 + *(_DWORD *)(*(_DWORD *)v22 - 12) + 20) | 2); - return v22; - } - if ( v6 != a3 ) - return v22; -LABEL_28: - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); - goto LABEL_29; - } - *((_DWORD *)v22 + 1) = 0x80000000; - v19 = v20; - } - while ( 1 ) - { - if ( v6 == -1 ) - goto LABEL_33; - if ( v6 == a3 ) - break; - v7 = (unsigned __int8 *)v18[2]; - v17 = v18[3]; - v8 = v17 - (_DWORD)v7; - if ( this - lpuexcpt <= (int)(v17 - (_DWORD)v7) ) - v8 = this - lpuexcpt; - if ( v8 <= 1 ) - { - *((_DWORD *)v22 + 1) = (char *)lpuexcpt + 1; - if ( v17 > (unsigned int)v7 ) - { - v10 = v18; - v14 = v7 + 1; - v18[2] = v7 + 1; - goto LABEL_38; - } - if ( (*(int (__fastcall **)(_DWORD *))(*v18 + 40))(v18) != -1 ) - { - v14 = (unsigned __int8 *)v18[2]; - v17 = v18[3]; -LABEL_38: - if ( v17 > (unsigned int)v14 ) - { - v6 = *v14; - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); - goto LABEL_9; - } -LABEL_40: - v6 = (*(int (__fastcall **)(_DWORD *, _DWORD *))(*v18 + 36))(v18, v10); - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); - goto LABEL_9; - } - goto LABEL_33; - } - v9 = memchr(v7, (char)a3, v8); - v10 = v18; - v11 = v9 - v7; - if ( !v9 ) - v11 = v8; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + v11); - v12 = &v7[v11]; - v18[2] = v12; - *((_DWORD *)v22 + 1) = lpuexcpt; - if ( v17 <= (unsigned int)v12 ) - goto LABEL_40; - v6 = *v12; - if ( (int)this <= (int)lpuexcpt ) - goto LABEL_19; - } - if ( this == (std::istream *)0x7FFFFFFF ) - { - if ( !v19 ) - goto LABEL_30; - goto LABEL_25; - } - if ( v19 ) - goto LABEL_25; - goto LABEL_28; - } - } - return v22; -} -// 4CB9DA: variable 'v16' is possibly undefined -// 4CBA20: variable 'v15' is possibly undefined -// 4CBC37: variable 'v10' is possibly undefined -// 4CB980: using guessed type char var_19[25]; - -//----- (004CBD90) -------------------------------------------------------- -std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1) -{ - _DWORD *v2; // ecx - unsigned int v3; // eax - bool v4; // [esp+8h] [ebp-70h] - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v6, a1, (std::istream *)1, v4); - if ( v6[0] ) - { - v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v3 = v2[2]; - if ( v3 >= v2[3] ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2) == -1 ) - { - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); - return a1; - } - } - else - { - v2[2] = v3 + 1; - } - *((_DWORD *)a1 + 1) = 1; - } - return a1; -} -// 4CBDE1: variable 'v4' is possibly undefined -// 4CBD90: using guessed type char var_19[25]; - -//----- (004CBF20) -------------------------------------------------------- -void __userpurge std::istream::sentry::sentry(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4) -{ - char *v4; // ecx - int v5; // eax - _BYTE *v6; // eax - unsigned int v7; // eax - unsigned int v8; // edx - unsigned __int8 *v9; // eax - int v10; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - - *a1 = 0; - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v5 = *((_DWORD *)v4 + 5); - if ( v5 ) - goto LABEL_6; - if ( *((_DWORD *)v4 + 28) ) - { - std::ostream::flush(*((_DWORD **)v4 + 28)); - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) - goto LABEL_5; - } - else if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) - { - goto LABEL_9; - } - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v4 + 30); - v6 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v6 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v10 = *((_DWORD *)v4 + 31); - if ( v10 ) - { - if ( v6 == (_BYTE *)-1 ) - { -LABEL_20: - v5 = *((_DWORD *)v4 + 5) | 2; - goto LABEL_6; - } - goto LABEL_12; - } -LABEL_27: - std::__throw_bad_cast(); - } - LOBYTE(v6) = *v6; - v10 = *((_DWORD *)v4 + 31); - if ( !v10 ) - goto LABEL_27; -LABEL_12: - while ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * (unsigned __int8)v6) & 0x20) != 0 ) - { - while ( 1 ) - { - v7 = *((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - if ( v7 >= v8 ) - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_19; - v9 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - } - else - { - v9 = (unsigned __int8 *)(v7 + 1); - *((_DWORD *)lpuexcpt + 2) = v9; - } - if ( (unsigned int)v9 >= v8 ) - break; - if ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * *v9) & 0x20) == 0 ) - goto LABEL_17; - } - v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - if ( v6 == (_BYTE *)-1 ) - { -LABEL_19: - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - goto LABEL_20; - } - } -LABEL_17: - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); -LABEL_5: - v5 = *((_DWORD *)v4 + 5); - if ( v5 ) - { -LABEL_6: - std::ios::clear(v4, v5 | 4); - return; - } -LABEL_9: - *a1 = 1; -} - -//----- (004CC1B0) -------------------------------------------------------- -void __userpurge std::istream::sentry::sentry(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4) -{ - char *v4; // ecx - int v5; // eax - _BYTE *v6; // eax - unsigned int v7; // eax - unsigned int v8; // edx - unsigned __int8 *v9; // eax - int v10; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - - *a1 = 0; - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v5 = *((_DWORD *)v4 + 5); - if ( v5 ) - goto LABEL_6; - if ( *((_DWORD *)v4 + 28) ) - { - std::ostream::flush(*((_DWORD **)v4 + 28)); - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) - goto LABEL_5; - } - else if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) - { - goto LABEL_9; - } - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v4 + 30); - v6 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v6 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v10 = *((_DWORD *)v4 + 31); - if ( v10 ) - { - if ( v6 == (_BYTE *)-1 ) - { -LABEL_20: - v5 = *((_DWORD *)v4 + 5) | 2; - goto LABEL_6; - } - goto LABEL_12; - } -LABEL_27: - std::__throw_bad_cast(); - } - LOBYTE(v6) = *v6; - v10 = *((_DWORD *)v4 + 31); - if ( !v10 ) - goto LABEL_27; -LABEL_12: - while ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * (unsigned __int8)v6) & 0x20) != 0 ) - { - while ( 1 ) - { - v7 = *((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - if ( v7 >= v8 ) - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_19; - v9 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - } - else - { - v9 = (unsigned __int8 *)(v7 + 1); - *((_DWORD *)lpuexcpt + 2) = v9; - } - if ( (unsigned int)v9 >= v8 ) - break; - if ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * *v9) & 0x20) == 0 ) - goto LABEL_17; - } - v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - if ( v6 == (_BYTE *)-1 ) - { -LABEL_19: - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - goto LABEL_20; - } - } -LABEL_17: - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); -LABEL_5: - v5 = *((_DWORD *)v4 + 5); - if ( v5 ) - { -LABEL_6: - std::ios::clear(v4, v5 | 4); - return; - } -LABEL_9: - *a1 = 1; -} - -//----- (004CC440) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::getline@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - int a4) -{ - int v4; // eax - _BYTE *v5; // esi - unsigned __int8 v7; // al - int (__stdcall *v9)(unsigned __int8); // edx - char v10; // [esp+Ch] [ebp-10h] - - v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v5 = *(_BYTE **)((char *)a1 + v4 + 124); - if ( !v5 ) - std::__throw_bad_cast(); - if ( v5[28] ) - { - v7 = v5[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); - v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); - v7 = 10; - if ( v9 != std::ctype::do_widen ) - v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); - } - return std::istream::getline(a1, this, a3, v7, v10); -} -// 4CC473: variable 'v10' is possibly undefined - -//----- (004CC4C0) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::getline@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - unsigned __int8 a4, - char a5) -{ - int v5; // edx - size_t v6; // edx - _DWORD *v8; // eax - char *v9; // esi - size_t v10; // eax - int v11; // ecx - unsigned __int8 *v12; // eax - unsigned __int8 *v13; // edx - char *v14; // eax - signed int v15; // edx - unsigned int v16; // edx - unsigned int v17; // eax - unsigned __int8 *v18; // eax - size_t v19; // ebx - bool v20; // [esp+8h] [ebp-90h] - std::istream *v21; // [esp+1Ch] [ebp-7Ch] - _DWORD *v22; // [esp+28h] [ebp-70h] - unsigned int v23; // [esp+2Ch] [ebp-6Ch] - char *Buf; // [esp+34h] [ebp-64h] - size_t MaxCount; // [esp+38h] [ebp-60h] - char v27[25]; // [esp+7Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v27, a1, (std::istream *)1, v20); - if ( v27[0] ) - { - v8 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v9 = (char *)v8[2]; - v22 = v8; - Buf = v9; - v23 = v8[3]; - if ( (unsigned int)v9 < v23 ) - { - v10 = *((_DWORD *)a1 + 1); - v11 = (unsigned __int8)*v9; - v6 = v10 + 1; - if ( (int)a3 > (int)(v10 + 1) ) - goto LABEL_11; -LABEL_31: - if ( a4 != v11 ) - { - if ( (int)a3 <= 0 ) - { - v5 = 4; - v10 = *((_DWORD *)a1 + 1); - goto LABEL_38; - } - v5 = 4; - *(_BYTE *)this = 0; -LABEL_5: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v5); - return a1; - } - Buf = (char *)v22[2]; - v23 = v22[3]; - goto LABEL_43; - } - v11 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v10 = *((_DWORD *)a1 + 1); - v19 = v10; - v6 = v10 + 1; - if ( (int)a3 <= (int)(v10 + 1) ) - { -LABEL_50: - if ( v11 != -1 ) - goto LABEL_31; - if ( (int)a3 <= 0 ) - { - v10 = v19; - v5 = 2; - goto LABEL_38; - } - } - else - { - if ( v11 != -1 ) - { - Buf = (char *)v22[2]; - v23 = v22[3]; -LABEL_11: - if ( a4 == v11 ) - { -LABEL_43: - *((_DWORD *)a1 + 1) = v6; - if ( (unsigned int)Buf < v23 ) - { - v22[2] = Buf + 1; - if ( (int)a3 > 0 ) - { - *(_BYTE *)this = 0; - if ( !*((_DWORD *)a1 + 1) ) - goto LABEL_4; - return a1; - } - goto LABEL_7; - } - (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - if ( (int)a3 > 0 ) - { - *(_BYTE *)this = 0; - if ( !*((_DWORD *)a1 + 1) ) - goto LABEL_4; - return a1; - } -LABEL_6: - v6 = *((_DWORD *)a1 + 1); -LABEL_7: - if ( !v6 ) - goto LABEL_4; - return a1; - } - while ( 1 ) - { - v14 = &a3[-v10 - 1]; - v15 = v23 - (_DWORD)Buf; - if ( (int)v14 <= (int)(v23 - (_DWORD)Buf) ) - v15 = (signed int)v14; - MaxCount = v15; - if ( v15 > 1 ) - { - v12 = (unsigned __int8 *)memchr(Buf, (char)a4, v15); - v13 = v12; - if ( !v12 || (MaxCount = v12 - (unsigned __int8 *)Buf, v12 != (unsigned __int8 *)Buf) ) - { - memcpy(this, Buf, MaxCount); - v13 = (unsigned __int8 *)(v22[2] + MaxCount); - v23 = v22[3]; - } - this = (std::istream *)((char *)this + MaxCount); - v22[2] = v13; - v10 = *((_DWORD *)a1 + 1) + MaxCount; - *((_DWORD *)a1 + 1) = v10; - if ( (unsigned int)v13 < v23 ) - { - v11 = *v13; - goto LABEL_17; - } - v11 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - } - else - { - v21 = (std::istream *)((char *)this + 1); - *(_BYTE *)this = v11; - v16 = v22[3]; - ++*((_DWORD *)a1 + 1); - v17 = v22[2]; - if ( v17 >= v16 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v22 + 40))(v22) == -1 ) - goto LABEL_35; - v18 = (unsigned __int8 *)v22[2]; - v16 = v22[3]; - } - else - { - v18 = (unsigned __int8 *)(v17 + 1); - v22[2] = v18; - } - if ( (unsigned int)v18 < v16 ) - { - v11 = *v18; - this = (std::istream *)((char *)this + 1); - v10 = *((_DWORD *)a1 + 1); -LABEL_17: - v6 = v10 + 1; - if ( (int)a3 <= (int)(v10 + 1) ) - goto LABEL_31; - goto LABEL_18; - } - v11 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - this = (std::istream *)((char *)this + 1); - } - v19 = *((_DWORD *)a1 + 1); - v10 = v19; - v6 = v19 + 1; - if ( (int)(v19 + 1) >= (int)a3 ) - goto LABEL_50; - if ( v11 == -1 ) - { - v21 = this; -LABEL_35: - if ( (int)a3 > 0 ) - *(_BYTE *)v21 = 0; - v5 = 2; - v10 = *((_DWORD *)a1 + 1); -LABEL_38: - if ( !v10 ) - v5 |= 4u; - goto LABEL_5; - } -LABEL_18: - Buf = (char *)v22[2]; - v23 = v22[3]; - if ( a4 == v11 ) - goto LABEL_43; - } - } - if ( (int)a3 <= 0 ) - { - v5 = 2; - goto LABEL_38; - } - } - v5 = 2; - *(_BYTE *)this = 0; - if ( !*((_DWORD *)a1 + 1) ) - v5 = 6; - goto LABEL_5; - } - if ( (int)a3 <= 0 ) - goto LABEL_6; - *(_BYTE *)this = 0; - if ( !*((_DWORD *)a1 + 1) ) - { -LABEL_4: - v5 = 4; - goto LABEL_5; - } - return a1; -} -// 4CC51F: variable 'v20' is possibly undefined -// 4CC4C0: using guessed type char var_19[25]; - -//----- (004CC9F0) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::putback@( - std::istream::sentry *a1@, - std::istream *this, - char a3) -{ - int v4; // eax - _DWORD *v5; // ecx - _DWORD *v6; // eax - unsigned int v7; // eax - bool v9; // [esp+8h] [ebp-70h] - char v11[25]; // [esp+5Fh] [ebp-19h] BYREF - - v4 = *(_DWORD *)a1; - *((_DWORD *)a1 + 1) = 0; - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v4 - 12)), - *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v4 - 12) + 20) & 0xFFFFFFFD); - std::istream::sentry::sentry(v11, a1, (std::istream *)1, v9); - if ( v11[0] ) - { - v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - if ( v5 ) - { - v7 = v5[2]; - if ( v5[1] < v7 && (_BYTE)this == *(_BYTE *)(v7 - 1) ) - { - v5[2] = v7 - 1; - return a1; - } - if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v5 + 44))(v5, (unsigned __int8)this) != -1 ) - return a1; - v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - } - std::ios::clear(v6, v6[5] | 1); - } - return a1; -} -// 4CCA62: variable 'v9' is possibly undefined -// 4CC9F0: using guessed type char var_19[25]; - -//----- (004CCBB0) -------------------------------------------------------- -struct _Unwind_Exception *__userpurge std::istream::readsome@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - int a4) -{ - _DWORD *v5; // ecx - char *v6; // eax - int v7; // ecx - bool v8; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v11[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v11, a1, (std::istream *)1, v8); - if ( !v11[0] ) - return (struct _Unwind_Exception *)*((_DWORD *)a1 + 1); - v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v6 = (char *)(v5[3] - v5[2]); - if ( !v6 ) - v6 = (char *)(*(int (__fastcall **)(_DWORD *))(*v5 + 28))(v5); - if ( (int)v6 <= 0 ) - { - if ( v6 == (char *)-1 ) - { - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); - return (struct _Unwind_Exception *)*((_DWORD *)a1 + 1); - } - return (struct _Unwind_Exception *)*((_DWORD *)a1 + 1); - } - if ( (int)v6 > (int)a3 ) - v6 = a3; - v7 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, std::istream *, char *))(*(_DWORD *)v7 + 32))( - v7, - this, - v6); - *((_DWORD *)a1 + 1) = lpuexcpt; - return lpuexcpt; -} -// 4CCC01: variable 'v8' is possibly undefined -// 4CCBB0: using guessed type char var_19[25]; - -//----- (004CCD90) -------------------------------------------------------- -void __thiscall std::istream::istream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 2; - std::ios_base::ios_base(this + 2); - *((_WORD *)this + 62) = 0; - v2 = a2[1]; - *this = &off_55FE40; - this[1] = v2; - this[30] = 0; - v3 = *a2; - this[32] = 0; - this[33] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[2] = off_55FE54; - this[34] = 0; - this[35] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 29)); - this[32] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[30] = v5; - *((_WORD *)this + 62) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; -} -// 4CCE2F: variable 'v6' is possibly undefined -// 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); -// 55FE54: using guessed type void (__cdecl *off_55FE54[2])(std::istream *__hidden this); - -//----- (004CCEC0) -------------------------------------------------------- -void __thiscall std::istream::istream(_DWORD *this, int a2) -{ - int v2; // [esp+14h] [ebp-44h] - - v2 = (int)(this + 2); - std::ios_base::ios_base(this + 2); - this[30] = 0; - *((_WORD *)this + 62) = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - *this = &off_55FE40; - this[2] = off_55FE54; - this[1] = 0; - std::ios::init(v2, a2); -} -// 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); -// 55FE54: using guessed type void (__cdecl *off_55FE54[2])(std::istream *__hidden this); - -//----- (004CCFA0) -------------------------------------------------------- -void __fastcall std::istream::istream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 8; - std::ios_base::ios_base((_DWORD *)(a1 + 8)); - *(_DWORD *)(a1 + 120) = 0; - *(_WORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)a1 = &off_55FE40; - *(_DWORD *)(a1 + 8) = off_55FE54; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); -} -// 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); -// 55FE54: using guessed type void (__cdecl *off_55FE54[2])(std::istream *__hidden this); - -//----- (004CD080) -------------------------------------------------------- -int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // edx - int v5; // ebx - std::ios_base *v6; // edi - int v7; // eax - int result; // eax - std::ios_base *v9; // [esp+4h] [ebp-18h] - - v3 = *a2; - v4 = a2[1]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = v4; - this[1] = a3[1]; - v5 = (int)this + *(_DWORD *)(v3 - 12); - v6 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v5, v6, v9); - std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); - v7 = *((_DWORD *)v6 + 28); - *(_DWORD *)(v5 + 120) = 0; - *((_DWORD *)v6 + 28) = 0; - *(_DWORD *)(v5 + 112) = v7; - result = *((unsigned __int16 *)v6 + 58); - a3[1] = 0; - *(_WORD *)(v5 + 116) = result; - return result; -} -// 4CD0B2: variable 'v9' is possibly undefined - -//----- (004CD100) -------------------------------------------------------- -BOOL __thiscall std::istream::istream(int *this, int *a2, int a3) -{ - int v3; // eax - int v4; // edx - int v5; // ebx - - v3 = *a2; - v4 = a2[1]; - v5 = *(_DWORD *)(*a2 - 12); - *this = *a2; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - return std::ios::init((int)this + *(_DWORD *)(v3 - 12), a3); -} - -//----- (004CD140) -------------------------------------------------------- -BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this) -{ - int v2; // eax - int v3; // edx - int v4; // ebx - - v2 = *(_DWORD *)this; - v3 = *((_DWORD *)this + 1); - v4 = *(_DWORD *)(*(_DWORD *)this - 12); - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + v4) = v3; - ecx0[1] = 0; - return std::ios::init((int)ecx0 + *(_DWORD *)(v2 - 12), 0); -} - -//----- (004CD170) -------------------------------------------------------- -void __fastcall std::istream::~istream(_DWORD *a1) -{ - _DWORD *v2; // ecx - - v2 = a1 + 2; - *(v2 - 2) = &off_55FE40; - *(v2 - 1) = 0; - *v2 = &off_560E20; - std::ios_base::~ios_base((int)v2); - operator delete(a1); -} -// 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004CD1A0) -------------------------------------------------------- -void __fastcall std::istream::~istream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_55FE40; - v1 = a1 + 2; - *(v1 - 1) = 0; - *v1 = &off_560E20; - std::ios_base::~ios_base((int)v1); -} -// 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004CD1C0) -------------------------------------------------------- -void __thiscall std::istream::~istream(_DWORD *ecx0, std::istream *this) -{ - int v2; // eax - - v2 = *(_DWORD *)this; - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); - ecx0[1] = 0; -} - -//----- (004CD1E0) -------------------------------------------------------- -_DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - return this; -} -// 4CD21D: variable 'v10' is possibly undefined - -//----- (004CD2A0) -------------------------------------------------------- -int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)) -{ - return a2(this); -} - -//----- (004CD2B0) -------------------------------------------------------- -char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004CD2D0) -------------------------------------------------------- -char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004CD2F0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) -{ - char *v2; // ecx - int v3; // eax - bool v5; // [esp+8h] [ebp-70h] - char v7; // [esp+5Eh] [ebp-1Ah] BYREF - char v8[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( !a2 ) - { - v3 = 4; - goto LABEL_9; - } - if ( !std::__copy_streambufs_eof>(*((_DWORD **)v2 + 30), a2, v8) ) - { - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = v8[0] == 0 ? 4 : 6; - goto LABEL_9; - } - if ( v8[0] ) - { - v3 = 2; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); -LABEL_9: - std::ios::clear(v2, *((_DWORD *)v2 + 5) | v3); - } - } - else if ( !a2 ) - { - v3 = 4; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - goto LABEL_9; - } - return this; -} -// 4CD33A: variable 'v5' is possibly undefined -// 4CD2F0: using guessed type char var_19[25]; - -//----- (004CD510) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+67h] [ebp-21h] BYREF - int v8; // [esp+68h] [ebp-20h] BYREF - int v9[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8 = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int *))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - &v8, - v9); - *a2 = v9[0]; - if ( v8 ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8); - } - return this; -} -// 4CD55A: variable 'v5' is possibly undefined -// 4CD510: using guessed type int var_1C[7]; - -//----- (004CD710) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2) -{ - char *v2; // edi - int v3; // ecx - int v4; // eax - bool v6; // [esp+8h] [ebp-80h] - char v8; // [esp+67h] [ebp-21h] BYREF - int v9; // [esp+68h] [ebp-20h] BYREF - int v10[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v8, this, 0, v6); - if ( v8 ) - { - v9 = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int *))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (int)this + *(_DWORD *)(*(_DWORD *)this - 12), - &v9, - v10); - v4 = v9; - if ( v10[0] >= -32768 ) - { - if ( v10[0] > 0x7FFF ) - { - v9 |= 4u; - v4 = v9; - *a2 = 0x7FFF; - goto LABEL_9; - } - *a2 = v10[0]; - } - else - { - v4 = v9 | 4; - v9 |= 4u; - *a2 = 0x8000; - } - if ( !v4 ) - return this; -LABEL_9: - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v4); - } - return this; -} -// 4CD823: conditional instruction was optimized away because eax.4>=4u -// 4CD75A: variable 'v6' is possibly undefined -// 4CD710: using guessed type int var_1C[7]; - -//----- (004CD950) -------------------------------------------------------- -std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3) -{ - _DWORD *v3; // ecx - _BYTE *v4; // eax - int v5; // ecx - int v7; // [esp+0h] [ebp-78h] - std::ostream *v8; // [esp+4h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v11[4]; // [esp+58h] [ebp-20h] BYREF - _DWORD *v12; // [esp+5Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v11, a1, v8); - if ( v11[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v4 = (_BYTE *)v3[5]; - if ( (unsigned int)v4 >= v3[6] ) - { - if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v3 + 52))(v3, (unsigned __int8)this) == -1 ) - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - else - { - *v4 = (_BYTE)this; - ++v3[5]; - } - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpt + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v7) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), - *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); - } - } - return a1; -} -// 4CD998: variable 'v8' is possibly undefined -// 4CD9F4: variable 'v7' is possibly undefined -// 4CD950: using guessed type char var_20[4]; - -//----- (004CDB40) -------------------------------------------------------- -void __userpurge std::ostream::swap(_DWORD *a1@, std::ostream *this, std::ostream *a3) -{ - std::ios_base *v3; // ebx - std::ios_base *v4; // esi - int v5; // eax - char v6; // dl - char v7; // dl - std::ios_base *v8; // [esp+4h] [ebp-58h] - - v3 = (std::ios_base *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v4 = (std::ostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - *((_BYTE *)v4 + 117) = v7; -} -// 4CDB77: variable 'v8' is possibly undefined - -//----- (004CDBE0) -------------------------------------------------------- -_DWORD *__fastcall std::ostream::flush(_DWORD *a1) -{ - int v1; // ecx - - v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - if ( v1 && (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1) == -1 ) - std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - return a1; -} - -//----- (004CDD30) -------------------------------------------------------- -_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) -{ - char *v5; // edi - _DWORD *v6; // eax - int v7; // edi - void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax - _DWORD *v10; // [esp+0h] [ebp-A8h] - int v12[14]; // [esp+70h] [ebp-38h] BYREF - - v5 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v5[20] & 5) == 0 ) - { - v6 = (_DWORD *)*((_DWORD *)v5 + 30); - v7 = *v6; - v12[6] = a4; - v10 = v6; - v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); - v12[4] = a2; - v12[5] = a3; - v12[7] = a5; - v8(v12, v10, a2, a3, a4, a5, 16); - if ( (v12[0] & v12[1]) == -1 ) - std::ios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - return this; -} - -//----- (004CDEF0) -------------------------------------------------------- -_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4) -{ - char *v4; // edi - int v7[10]; // [esp+60h] [ebp-28h] BYREF - - v4 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v4[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( - v7, - *((_DWORD *)v4 + 30), - a2, - a3, - a4, - 16); - if ( (v7[0] & v7[1]) == -1 ) - std::ios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - return this; -} - -//----- (004CE080) -------------------------------------------------------- -_DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this) -{ - int v2; // eax - char *v3; // esi - int v6[10]; // [esp+60h] [ebp-28h] BYREF - - v2 = *(_DWORD *)this; - *ecx0 = -1; - ecx0[1] = -1; - v3 = (char *)this + *(_DWORD *)(v2 - 12); - ecx0[2] = 0; - if ( (v3[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( - v6, - *((_DWORD *)v3 + 30), - 0, - 0, - 1, - 16); - *ecx0 = v6[0]; - ecx0[1] = v6[1]; - ecx0[2] = v6[2]; - } - return ecx0; -} - -//----- (004CE200) -------------------------------------------------------- -std::ostream::sentry *__userpurge std::ostream::write@( - std::ostream::sentry *a1@, - std::ostream *this, - const char *a3, - int a4) -{ - int v4; // ecx - int v5; // ecx - int v7; // [esp+0h] [ebp-78h] - std::ostream *v8; // [esp+4h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v11[4]; // [esp+58h] [ebp-20h] BYREF - _DWORD *v12; // [esp+5Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v11, a1, v8); - if ( v11[0] ) - { - v4 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - if ( a3 != (const char *)(*(int (__thiscall **)(int, std::ostream *, const char *))(*(_DWORD *)v4 + 48))( - v4, - this, - a3) ) - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpt + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v7) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), - *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); - } - } - return a1; -} -// 4CE242: variable 'v8' is possibly undefined -// 4CE2AF: variable 'v7' is possibly undefined -// 4CE200: using guessed type char var_20[4]; - -//----- (004CE3D0) -------------------------------------------------------- -int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) -{ - int v4; // eax - char *v5; // ecx - int result; // eax - - *(_BYTE *)a1 = 0; - v4 = *(_DWORD *)this; - *(_DWORD *)(a1 + 4) = this; - v5 = (char *)this + *(_DWORD *)(v4 - 12); - result = *((_DWORD *)v5 + 5); - if ( *((_DWORD *)v5 + 28) ) - { - if ( result ) - return std::ios::clear(v5, result | 4); - std::ostream::flush(*((_DWORD **)v5 + 28)); - result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); - v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - } - if ( result ) - return std::ios::clear(v5, result | 4); - *(_BYTE *)a1 = 1; - return result; -} - -//----- (004CE430) -------------------------------------------------------- -int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) -{ - int v4; // eax - char *v5; // ecx - int result; // eax - - *(_BYTE *)a1 = 0; - v4 = *(_DWORD *)this; - *(_DWORD *)(a1 + 4) = this; - v5 = (char *)this + *(_DWORD *)(v4 - 12); - result = *((_DWORD *)v5 + 5); - if ( *((_DWORD *)v5 + 28) ) - { - if ( result ) - return std::ios::clear(v5, result | 4); - std::ostream::flush(*((_DWORD **)v5 + 28)); - result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); - v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - } - if ( result ) - return std::ios::clear(v5, result | 4); - *(_BYTE *)a1 = 1; - return result; -} - -//----- (004CE490) -------------------------------------------------------- -void __fastcall std::ostream::sentry::~sentry(int a1) -{ - int v2; // ebx - int v3; // ecx - _DWORD *v4; // ecx - - if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) - { - v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); - if ( !std::uncaught_exception() ) - { - v3 = *(_DWORD *)(v2 + 120); - if ( v3 ) - { - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) - { - v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); - std::ios::clear(v4, v4[5] | 1); - } - } - } - } -} - -//----- (004CE520) -------------------------------------------------------- -void __fastcall std::ostream::sentry::~sentry(int a1) -{ - int v2; // ebx - int v3; // ecx - _DWORD *v4; // ecx - - if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) - { - v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); - if ( !std::uncaught_exception() ) - { - v3 = *(_DWORD *)(v2 + 120); - if ( v3 ) - { - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) - { - v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); - std::ios::clear(v4, v4[5] | 1); - } - } - } - } -} - -//----- (004CE5B0) -------------------------------------------------------- -const char *__userpurge std::ostream::_M_write@(_DWORD *a1@, std::ostream *this, const char *a3, int a4) -{ - int v5; // ecx - const char *result; // eax - - v5 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - result = (const char *)(*(int (__thiscall **)(int, std::ostream *, const char *))(*(_DWORD *)v5 + 48))(v5, this, a3); - if ( a3 != result ) - return (const char *)std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - return result; -} - -//----- (004CE600) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+2Ch] [ebp-6Ch] - int v12; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int))(*(_DWORD *)v12 + 36))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4CE645: variable 'v10' is possibly undefined -// 4CE6C8: variable 'v3' is possibly undefined -// 4CE71C: variable 'v9' is possibly undefined -// 4CE600: using guessed type char var_20[4]; - -//----- (004CE8B0) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+28h] [ebp-70h] - int v12; // [esp+2Ch] [ebp-6Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, _DWORD))(*(_DWORD *)v12 + 8))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4CE8FB: variable 'v10' is possibly undefined -// 4CE985: variable 'v3' is possibly undefined -// 4CE9D9: variable 'v9' is possibly undefined -// 4CE8B0: using guessed type char var_20[4]; - -//----- (004CEB70) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+24h] [ebp-74h] - int v12; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, _DWORD, _DWORD))(*(_DWORD *)v12 + 28))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - LODWORD(a2), - HIDWORD(a2)); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4CEBBB: variable 'v10' is possibly undefined -// 4CEC38: variable 'v3' is possibly undefined -// 4CEC8C: variable 'v9' is possibly undefined -// 4CEB70: using guessed type char var_20[4]; - -//----- (004CEE20) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v12; // [esp+2Ch] [ebp-6Ch] - int v13; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v17[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v18; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v17, this, v10); - if ( v17[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v13 = *((_DWORD *)lpuexcpt + 32); - if ( !v13 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v12 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v12 ) - std::__throw_bad_cast(); - if ( v12[28] ) - { - v2 = (char)v12[61]; - v6 = v12[61]; - } - else - { - std::ctype::_M_widen_init((int)v12); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v12 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v12, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v13 + 32))( - v13, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - LODWORD(a2), - DWORD1(a2), - HIDWORD(a2)); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v18 + *(_DWORD *)(*v18 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), - *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); - } - } - return this; -} -// 4CEE65: variable 'v10' is possibly undefined -// 4CEEE2: variable 'v3' is possibly undefined -// 4CEF36: variable 'v9' is possibly undefined -// 4CEE20: using guessed type char var_20[4]; - -//----- (004CF0D0) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+2Ch] [ebp-6Ch] - int v12; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int))(*(_DWORD *)v12 + 12))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4CF115: variable 'v10' is possibly undefined -// 4CF198: variable 'v3' is possibly undefined -// 4CF1EC: variable 'v9' is possibly undefined -// 4CF0D0: using guessed type char var_20[4]; - -//----- (004CF380) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+2Ch] [ebp-6Ch] - int v12; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int))(*(_DWORD *)v12 + 16))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4CF3C5: variable 'v10' is possibly undefined -// 4CF448: variable 'v3' is possibly undefined -// 4CF49C: variable 'v9' is possibly undefined -// 4CF380: using guessed type char var_20[4]; - -//----- (004CF630) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3) -{ - int v3; // ecx - char v4; // dl - int v5; // ecx - char v7; // al - int v8; // eax - int (__stdcall *v9)(unsigned __int8); // edx - int v10; // [esp+0h] [ebp-98h] - std::ostream *v11; // [esp+4h] [ebp-94h] - _BYTE *v12; // [esp+24h] [ebp-74h] - int v13; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v17[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v18; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v17, this, v11); - if ( v17[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v13 = *((_DWORD *)lpuexcpt + 32); - if ( !v13 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v3 = *((char *)lpuexcpt + 116); - } - else - { - v12 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v12 ) - std::__throw_bad_cast(); - if ( v12[28] ) - { - v3 = (char)v12[61]; - v7 = v12[61]; - } - else - { - std::ctype::_M_widen_init((int)v12); - v3 = 32; - v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v12 + 24); - v7 = 32; - if ( v9 != std::ctype::do_widen ) - { - v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v12, 32); - v3 = v7; - } - } - *((_BYTE *)lpuexcpt + 116) = v7; - v8 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v8 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int, int))(*(_DWORD *)v13 + 20))( - v13, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v3, - a2, - a3); - if ( v4 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v18 + *(_DWORD *)(*v18 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v10) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), - *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); - } - } - return this; -} -// 4CF681: variable 'v11' is possibly undefined -// 4CF709: variable 'v4' is possibly undefined -// 4CF75D: variable 'v10' is possibly undefined -// 4CF630: using guessed type char var_20[4]; - -//----- (004CF8F0) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert( - std::ostream::sentry *this, - int a2, - int a3) -{ - int v3; // ecx - char v4; // dl - int v5; // ecx - char v7; // al - int v8; // eax - int (__stdcall *v9)(unsigned __int8); // edx - int v10; // [esp+0h] [ebp-98h] - std::ostream *v11; // [esp+4h] [ebp-94h] - _BYTE *v12; // [esp+24h] [ebp-74h] - int v13; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v17[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v18; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v17, this, v11); - if ( v17[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v13 = *((_DWORD *)lpuexcpt + 32); - if ( !v13 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v3 = *((char *)lpuexcpt + 116); - } - else - { - v12 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v12 ) - std::__throw_bad_cast(); - if ( v12[28] ) - { - v3 = (char)v12[61]; - v7 = v12[61]; - } - else - { - std::ctype::_M_widen_init((int)v12); - v3 = 32; - v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v12 + 24); - v7 = 32; - if ( v9 != std::ctype::do_widen ) - { - v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v12, 32); - v3 = v7; - } - } - *((_BYTE *)lpuexcpt + 116) = v7; - v8 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v8 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int, int))(*(_DWORD *)v13 + 24))( - v13, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v3, - a2, - a3); - if ( v4 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v18 + *(_DWORD *)(*v18 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v10) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), - *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); - } - } - return this; -} -// 4CF941: variable 'v11' is possibly undefined -// 4CF9C9: variable 'v4' is possibly undefined -// 4CFA1D: variable 'v10' is possibly undefined -// 4CF8F0: using guessed type char var_20[4]; - -//----- (004CFBB0) -------------------------------------------------------- -void __thiscall std::ostream::ostream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - std::ios_base *v3; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v5; // [esp+14h] [ebp-44h] - - v5 = this + 1; - std::ios_base::ios_base(this + 1); - *((_WORD *)this + 60) = 0; - this[29] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_55FE68; - this[1] = off_55FE7C; - lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v5, lpuexcpt, v3); - std::ios::_M_cache_locale(v5, (int)(this + 28)); - v2 = *((_DWORD *)lpuexcpt + 28); - this[31] = 0; - *((_DWORD *)lpuexcpt + 28) = 0; - this[29] = v2; - *((_WORD *)this + 60) = *((_WORD *)lpuexcpt + 58); -} -// 4CFC42: variable 'v3' is possibly undefined -// 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); -// 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); - -//----- (004CFCC0) -------------------------------------------------------- -void __thiscall std::ostream::ostream(_DWORD *this, int a2) -{ - int v2; // [esp+14h] [ebp-44h] - - v2 = (int)(this + 1); - std::ios_base::ios_base(this + 1); - this[29] = 0; - *((_WORD *)this + 60) = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_55FE68; - this[1] = off_55FE7C; - std::ios::init(v2, a2); -} -// 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); -// 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); - -//----- (004CFDA0) -------------------------------------------------------- -int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)(a1 + 4)); - result = 0; - *(_DWORD *)(a1 + 116) = 0; - *(_WORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)a1 = &off_55FE68; - *(_DWORD *)(a1 + 4) = off_55FE7C; - return result; -} -// 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); -// 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); - -//----- (004CFE00) -------------------------------------------------------- -void __fastcall std::ostream::ostream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 4; - std::ios_base::ios_base((_DWORD *)(a1 + 4)); - *(_DWORD *)(a1 + 116) = 0; - *(_WORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)a1 = &off_55FE68; - *(_DWORD *)(a1 + 4) = off_55FE7C; - std::ios::init(v1, 0); -} -// 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); -// 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); - -//----- (004CFEE0) -------------------------------------------------------- -int __thiscall std::ostream::ostream(_DWORD *this, _DWORD *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // ebx - std::ios_base *v5; // esi - int v6; // eax - int result; // eax - std::ios_base *v8; // [esp+4h] [ebp-18h] - - v3 = a2[1]; - v4 = (int)this + *(_DWORD *)(*a2 - 12); - *this = *a2; - *(_DWORD *)v4 = v3; - v5 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v4, v5, v8); - std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); - v6 = *((_DWORD *)v5 + 28); - *(_DWORD *)(v4 + 120) = 0; - *((_DWORD *)v5 + 28) = 0; - *(_DWORD *)(v4 + 112) = v6; - result = *((unsigned __int16 *)v5 + 58); - *(_WORD *)(v4 + 116) = result; - return result; -} -// 4CFF05: variable 'v8' is possibly undefined - -//----- (004CFF50) -------------------------------------------------------- -BOOL __thiscall std::ostream::ostream(int *this, int *a2, int a3) -{ - int v3; // edx - int v4; // eax - _DWORD *v5; // ecx - - v3 = *a2; - v4 = a2[1]; - *this = *a2; - v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); - *v5 = v4; - return std::ios::init((int)v5, a3); -} - -//----- (004CFF80) -------------------------------------------------------- -int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3) -{ - int v3; // edx - int result; // eax - - v3 = *(_DWORD *)this; - result = *((_DWORD *)this + 1); - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12)) = result; - return result; -} - -//----- (004CFFA0) -------------------------------------------------------- -BOOL __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this) -{ - int v2; // edx - int v3; // eax - _DWORD *v4; // ecx - - v2 = *(_DWORD *)this; - v3 = *((_DWORD *)this + 1); - *ecx0 = *(_DWORD *)this; - v4 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)); - *v4 = v3; - return std::ios::init((int)v4, 0); -} - -//----- (004CFFC0) -------------------------------------------------------- -void __fastcall std::ostream::~ostream(_DWORD *a1) -{ - _DWORD *v2; // ecx - - v2 = a1 + 1; - *(v2 - 1) = &off_55FE68; - *v2 = &off_560E20; - std::ios_base::~ios_base((int)v2); - operator delete(a1); -} -// 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004CFFF0) -------------------------------------------------------- -void __fastcall std::ostream::~ostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_55FE68; - v1 = a1 + 1; - *v1 = &off_560E20; - std::ios_base::~ios_base((int)v1); -} -// 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004D0010) -------------------------------------------------------- -void __thiscall std::ostream::~ostream(_DWORD *ecx0, std::ostream *this) -{ - int v2; // eax - - v2 = *(_DWORD *)this; - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); -} - -//----- (004D0030) -------------------------------------------------------- -_DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // ebx - std::ios_base *v4; // esi - int v5; // eax - char v6; // dl - char v7; // dl - std::ios_base *v9; // [esp+4h] [ebp-18h] - - v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - v4 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - std::ios_base::_M_swap(v4, v3, v9); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - v5 = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = v5; - v6 = *((_BYTE *)v4 + 116); - *((_BYTE *)v4 + 116) = *((_BYTE *)v3 + 116); - LOBYTE(v5) = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 116) = v6; - v7 = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 117) = v5; - *((_BYTE *)v3 + 117) = v7; - return this; -} -// 4D006A: variable 'v9' is possibly undefined - -//----- (004D00E0) -------------------------------------------------------- -int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)) -{ - return a2(this); -} - -//----- (004D00F0) -------------------------------------------------------- -char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004D0110) -------------------------------------------------------- -char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004D0140) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2) -{ - char *v2; // ecx - int v3; // eax - int v4; // ecx - int v6; // [esp+0h] [ebp-78h] - std::ostream *v7; // [esp+4h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v10; // [esp+57h] [ebp-21h] BYREF - char v11[4]; // [esp+58h] [ebp-20h] BYREF - _DWORD *v12; // [esp+5Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v11, this, v7); - if ( v11[0] ) - { - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( !a2 ) - { - v3 = 1; - goto LABEL_13; - } - if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v2 + 30), &v10) ) - { - v3 = 4; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); -LABEL_13: - std::ios::clear(v2, *((_DWORD *)v2 + 5) | v3); - } - } - else if ( !a2 ) - { - v3 = 1; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - goto LABEL_13; - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpt + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v6) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), - *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); - } - } - return this; -} -// 4D0182: variable 'v7' is possibly undefined -// 4D021B: variable 'v6' is possibly undefined -// 4D0140: using guessed type char var_20[4]; - -//----- (004D0350) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2) -{ - return std::ostream::_M_insert(this, a2); -} - -//----- (004D0380) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2) -{ - return std::ostream::_M_insert(this, a2); -} - -//----- (004D03E0) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) -{ - int v2; // eax - - v2 = *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 12) & 0x4A; - if ( v2 == 64 || v2 == 8 ) - return std::ostream::_M_insert(this, a2); - else - return std::ostream::_M_insert(this, (__int16)a2); -} - -//----- (004D0420) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) -{ - return std::ostream::_M_insert(this, a2); -} - -//----- (004D0450) -------------------------------------------------------- -char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2) -{ - return (char *)this - a2; -} - -//----- (004D0460) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004D0470) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004D0480) -------------------------------------------------------- -char *__fastcall std::string::_M_leak_hard(char **a1) -{ - char *result; // eax - unsigned int v3; // [esp+Ch] [ebp-10h] - - if ( *((int *)*a1 - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v3); - result = *a1; - *((_DWORD *)*a1 - 1) = -1; - return result; -} -// 4D04A6: variable 'v3' is possibly undefined - -//----- (004D04C0) -------------------------------------------------------- -_DWORD *__cdecl std::string::_S_construct(size_t Size, char a2) -{ - _DWORD *v2; // ebx - _DWORD *result; // eax - - v2 = std::string::_Rep::_S_create(Size, 0); - if ( Size ) - { - if ( Size == 1 ) - *((_BYTE *)v2 + 12) = a2; - else - memset(v2 + 3, a2, Size); - } - v2[2] = 0; - result = v2 + 3; - *v2 = Size; - *((_BYTE *)v2 + Size + 12) = 0; - return result; -} - -//----- (004D0530) -------------------------------------------------------- -int __cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, int a2) -{ - size_t Size; // ebx - size_t *v3; // eax - size_t *v4; // esi - int v5; // ebp - int result; // eax - - Size = a2 - (_DWORD)Src; - v3 = std::string::_Rep::_S_create(a2 - (_DWORD)Src, 0); - v4 = v3; - v5 = (int)(v3 + 3); - if ( a2 - (_DWORD)Src == 1 ) - { - *((_BYTE *)v3 + 12) = *Src; - } - else if ( Size ) - { - memcpy(v3 + 3, Src, Size); - } - v4[2] = 0; - result = v5; - *v4 = Size; - *((_BYTE *)v4 + Size + 12) = 0; - return result; -} - -//----- (004D05A0) -------------------------------------------------------- -int __cdecl std::string::_S_construct(_BYTE *Src, int a2) -{ - size_t Size; // ebx - size_t *v3; // eax - size_t *v4; // esi - int v5; // ebp - int result; // eax - - if ( a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a2 - (_DWORD)Src; - v3 = std::string::_Rep::_S_create(a2 - (_DWORD)Src, 0); - v4 = v3; - v5 = (int)(v3 + 3); - if ( a2 - (_DWORD)Src == 1 ) - { - *((_BYTE *)v3 + 12) = *Src; - } - else if ( Size ) - { - memcpy(v3 + 3, Src, Size); - } - v4[2] = 0; - result = v5; - *v4 = Size; - *((_BYTE *)v4 + Size + 12) = 0; - return result; -} - -//----- (004D0630) -------------------------------------------------------- -int __cdecl std::string::_S_construct(_BYTE *Src, int a2) -{ - size_t Size; // ebx - size_t *v3; // eax - size_t *v4; // esi - int v5; // ebp - int result; // eax - - if ( a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a2 - (_DWORD)Src; - v3 = std::string::_Rep::_S_create(a2 - (_DWORD)Src, 0); - v4 = v3; - v5 = (int)(v3 + 3); - if ( a2 - (_DWORD)Src == 1 ) - { - *((_BYTE *)v3 + 12) = *Src; - } - else if ( Size ) - { - memcpy(v3 + 3, Src, Size); - } - v4[2] = 0; - result = v5; - *v4 = Size; - *((_BYTE *)v4 + Size + 12) = 0; - return result; -} - -//----- (004D06C0) -------------------------------------------------------- -void *std::string::_S_empty_rep() -{ - return &std::string::_Rep::_S_empty_rep_storage; -} - -//----- (004D06D0) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004D0710) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004D0750) -------------------------------------------------------- -size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size) -{ - size_t result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = (unsigned __int8)*Src; - *(_BYTE *)this = result; - } - else if ( result ) - { - return (size_t)memcpy(this, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004D0790) -------------------------------------------------------- -size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size) -{ - size_t result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = (unsigned __int8)*Src; - *(_BYTE *)this = result; - } - else if ( result ) - { - return (size_t)memcpy(this, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004D07D0) -------------------------------------------------------- -void __fastcall std::string::shrink_to_fit(int *a1) -{ - unsigned int v1; // [esp+4h] [ebp-64h] - - if ( *(_DWORD *)(*a1 - 12) < *(_DWORD *)(*a1 - 8) ) - std::string::reserve(a1, 0, v1); -} -// 4D0839: variable 'v1' is possibly undefined - -//----- (004D0860) -------------------------------------------------------- -char **__userpurge std::string::_M_replace_aux@( - char **a1@, - std::string *this, - unsigned int a3, - size_t Size, - char a5, - char a6) -{ - _BYTE *v7; // edi - unsigned int v9; // [esp+Ch] [ebp-20h] - - if ( Size > a3 + 1073741820 - *((_DWORD *)*a1 - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); - if ( !Size ) - return a1; - v7 = (char *)this + (_DWORD)*a1; - if ( Size != 1 ) - { - memset(v7, a5, Size); - return a1; - } - *v7 = a5; - return a1; -} -// 4D0895: variable 'v9' is possibly undefined - -//----- (004D08F0) -------------------------------------------------------- -char **__userpurge std::string::_M_replace_safe@( - char **a1@, - std::string *this, - unsigned int a3, - _BYTE *Src, - size_t Size, - unsigned int a6) -{ - _BYTE *v7; // edi - unsigned int v9; // [esp+Ch] [ebp-10h] - - std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); - if ( !Size ) - return a1; - v7 = (char *)this + (_DWORD)*a1; - if ( Size != 1 ) - { - memcpy(v7, Src, Size); - return a1; - } - *v7 = *Src; - return a1; -} -// 4D090F: variable 'v9' is possibly undefined - -//----- (004D0960) -------------------------------------------------------- -_DWORD *__cdecl std::string::_S_construct_aux_2(size_t Size, char a2) -{ - _DWORD *v2; // ebx - _DWORD *result; // eax - - v2 = std::string::_Rep::_S_create(Size, 0); - if ( Size ) - { - if ( Size == 1 ) - *((_BYTE *)v2 + 12) = a2; - else - memset(v2 + 3, a2, Size); - } - v2[2] = 0; - result = v2 + 3; - *v2 = Size; - *((_BYTE *)v2 + Size + 12) = 0; - return result; -} - -//----- (004D09D0) -------------------------------------------------------- -char *__userpurge std::string::at@(char **a1@, unsigned int this, unsigned int a3) -{ - char *v3; // eax - char *v6; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v3 = *a1; - if ( this >= *((_DWORD *)*a1 - 3) ) - std::__throw_out_of_range_fmt( - "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", - this, - *((_DWORD *)*a1 - 3)); - if ( *((int *)v3 - 1) < 0 ) - return &v3[this]; - if ( *((int *)v3 - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v7); - v6 = *a1; - *((_DWORD *)v6 - 1) = -1; - return &v6[this]; -} -// 4D0A18: variable 'v7' is possibly undefined - -//----- (004D0A50) -------------------------------------------------------- -char *__fastcall std::string::end(char **a1) -{ - char *v1; // eax - char *v4; // eax - unsigned int v5; // [esp+Ch] [ebp-10h] - - v1 = *a1; - if ( *((int *)*a1 - 1) < 0 ) - return &v1[*((_DWORD *)v1 - 3)]; - if ( *((int *)v1 - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v5); - v4 = *a1; - *((_DWORD *)v4 - 1) = -1; - return &v4[*((_DWORD *)v4 - 3)]; -} -// 4D0A84: variable 'v5' is possibly undefined - -//----- (004D0AA0) -------------------------------------------------------- -void __thiscall std::string::_Rep::_M_destroy(void *Block, int a2) -{ - operator delete(Block); -} - -//----- (004D0AC0) -------------------------------------------------------- -void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *Block, int a2) -{ - int v2; // eax - - if ( !_CRT_MT ) - { - v2 = *((_DWORD *)Block + 2); - *((_DWORD *)Block + 2) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)Block); - return; - } - if ( _InterlockedExchangeAdd(Block + 2, 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D0B00) -------------------------------------------------------- -int __fastcall std::string::_Rep::_M_refcopy(int a1) -{ - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); - else - ++*(_DWORD *)(a1 + 8); - return a1 + 12; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D0B30) -------------------------------------------------------- -int __fastcall std::string::_Rep::_M_refdata(int a1) -{ - return a1 + 12; -} - -//----- (004D0B40) -------------------------------------------------------- -void *std::string::_Rep::_S_empty_rep() -{ - return &std::string::_Rep::_S_empty_rep_storage; -} - -//----- (004D0B50) -------------------------------------------------------- -void __fastcall std::string::_Rep::_M_set_leaked(int a1) -{ - *(_DWORD *)(a1 + 8) = -1; -} - -//----- (004D0B60) -------------------------------------------------------- -void __fastcall std::string::_Rep::_M_set_sharable(int a1) -{ - *(_DWORD *)(a1 + 8) = 0; -} - -//----- (004D0B70) -------------------------------------------------------- -std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@( - _DWORD *a1@, - std::string::_Rep *this, - unsigned int a3) -{ - std::string::_Rep *result; // eax - - result = this; - a1[2] = 0; - *a1 = this; - *((_BYTE *)this + (_DWORD)a1 + 12) = 0; - return result; -} - -//----- (004D0B90) -------------------------------------------------------- -volatile signed __int32 *__thiscall std::string::_Rep::_M_grab(volatile signed __int32 *this, int a2, int a3) -{ - volatile signed __int32 *result; // eax - - if ( *((int *)this + 2) < 0 ) - return std::string::_Rep::_M_clone((int)this, a2, 0); - if ( _CRT_MT ) - { - _InterlockedAdd(this + 2, 1u); - return this + 3; - } - else - { - result = this + 3; - ++*((_DWORD *)this + 2); - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D0BE0) -------------------------------------------------------- -_DWORD *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3) -{ - _DWORD *v4; // ebx - size_t v5; // eax - - v4 = std::string::_Rep::_S_create(a3 + *(_DWORD *)this, *(_DWORD *)(this + 4)); - v5 = *(_DWORD *)this; - if ( *(_DWORD *)this ) - { - if ( v5 == 1 ) - *((_BYTE *)v4 + 12) = *(_BYTE *)(this + 12); - else - memcpy(v4 + 3, (const void *)(this + 12), *(_DWORD *)this); - v5 = *(_DWORD *)this; - } - *v4 = v5; - v4[2] = 0; - *((_BYTE *)v4 + v5 + 12) = 0; - return v4 + 3; -} - -//----- (004D0C60) -------------------------------------------------------- -_DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2) -{ - unsigned int v2; // ebx - size_t v3; // eax - _DWORD *result; // eax - - v2 = a1; - if ( a1 > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::_S_create"); - if ( a1 <= a2 ) - { - v3 = a1 + 13; - } - else - { - if ( a1 < 2 * a2 ) - v2 = 2 * a2; - if ( v2 + 29 <= 0x1000 || v2 <= a2 ) - { - v3 = v2 + 13; - if ( (int)(v2 + 13) < 0 ) - std::__throw_bad_alloc(); - } - else - { - v2 = v2 + 4096 - (((_WORD)v2 + 29) & 0xFFF); - if ( v2 > 0x3FFFFFFC ) - v2 = 1073741820; - v3 = v2 + 13; - } - } - result = operator new(v3); - result[1] = v2; - result[2] = 0; - return result; -} - -//----- (004D0CF0) -------------------------------------------------------- -char *__fastcall std::string::back(char **a1) -{ - char *v1; // eax - int v2; // esi - char *v5; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v1 = *a1; - v2 = *((_DWORD *)*a1 - 3) - 1; - if ( *((int *)*a1 - 1) < 0 ) - return &v1[v2]; - if ( *((int *)v1 - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v6); - v5 = *a1; - *((_DWORD *)v5 - 1) = -1; - return &v5[v2]; -} -// 4D0D30: variable 'v6' is possibly undefined - -//----- (004D0D50) -------------------------------------------------------- -char **__thiscall std::string::rend(char **ecx0, char **this) -{ - char *v3; // eax - char *v5; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v3 = *this; - if ( *((int *)*this - 1) >= 0 ) - { - if ( *((int *)v3 - 1) > 0 ) - std::string::_M_mutate(this, 0, 0, 0, v6); - v5 = *this; - *((_DWORD *)v5 - 1) = -1; - *ecx0 = v5; - return ecx0; - } - else - { - *ecx0 = v3; - return ecx0; - } -} -// 4D0D90: variable 'v6' is possibly undefined - -//----- (004D0DB0) -------------------------------------------------------- -int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3) -{ - int result; // eax - int v4; // edx - - result = *a1; - if ( *(int *)(*a1 - 4) < 0 ) - *(_DWORD *)(result - 4) = 0; - v4 = *(_DWORD *)this; - if ( *(int *)(*(_DWORD *)this - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *a1 = v4; - *(_DWORD *)this = result; - return result; -} - -//----- (004D0DE0) -------------------------------------------------------- -char *__fastcall std::string::begin(char **a1) -{ - char *result; // eax - unsigned int v3; // [esp+Ch] [ebp-10h] - - result = *a1; - if ( *((int *)*a1 - 1) >= 0 ) - { - if ( *((int *)result - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v3); - result = *a1; - *((_DWORD *)*a1 - 1) = -1; - } - return result; -} -// 4D0E14: variable 'v3' is possibly undefined - -//----- (004D0E30) -------------------------------------------------------- -void __fastcall std::string::clear(char **a1) -{ - unsigned int v1; // [esp+Ch] [ebp-10h] - - std::string::_M_mutate(a1, 0, *((_DWORD *)*a1 - 3), 0, v1); -} -// 4D0E4B: variable 'v1' is possibly undefined - -//----- (004D0E60) -------------------------------------------------------- -char *__thiscall std::string::erase(char **this, int a2) -{ - size_t v3; // esi - char *v4; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v3 = a2 - (_DWORD)*this; - std::string::_M_mutate(this, v3, 1u, 0, v6); - v4 = *this; - *((_DWORD *)v4 - 1) = -1; - return &v4[v3]; -} -// 4D0E82: variable 'v6' is possibly undefined - -//----- (004D0EA0) -------------------------------------------------------- -char *__thiscall std::string::erase(char **this, char *a2, char *a3) -{ - char *result; // eax - size_t v5; // ebx - char *v6; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - result = a2; - if ( a3 != a2 ) - { - v5 = a2 - *this; - std::string::_M_mutate(this, v5, a3 - a2, 0, v7); - v6 = *this; - *((_DWORD *)v6 - 1) = -1; - return &v6[v5]; - } - return result; -} -// 4D0ED5: variable 'v7' is possibly undefined - -//----- (004D0EF0) -------------------------------------------------------- -char **__userpurge std::string::erase@(char **a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // ecx - unsigned int v6; // eax - unsigned int v8; // [esp+Ch] [ebp-10h] - - v5 = *((_DWORD *)*a1 - 3); - v6 = v5 - (_DWORD)this; - if ( v5 - (unsigned int)this > a3 ) - v6 = a3; - if ( (unsigned int)this > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - (size_t)this, - v5); - std::string::_M_mutate(a1, (size_t)this, v6, 0, v8); - return a1; -} -// 4D0F22: variable 'v8' is possibly undefined - -//----- (004D0F50) -------------------------------------------------------- -char *__fastcall std::string::front(char **a1) -{ - char *result; // eax - unsigned int v3; // [esp+Ch] [ebp-10h] - - result = *a1; - if ( *((int *)*a1 - 1) >= 0 ) - { - if ( *((int *)result - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v3); - result = *a1; - *((_DWORD *)*a1 - 1) = -1; - } - return result; -} -// 4D0F84: variable 'v3' is possibly undefined - -//----- (004D0FA0) -------------------------------------------------------- -int *__userpurge std::string::append@(int *a1@, std::string *this, const char *a3) -{ - size_t v4; // eax - unsigned int v6; // [esp+8h] [ebp-14h] - - v4 = strlen((const char *)this); - return std::string::append(a1, this, v4, v6); -} -// 4D0FBC: variable 'v6' is possibly undefined - -//----- (004D0FD0) -------------------------------------------------------- -int *__userpurge std::string::append@(int *a1@, std::string *this, size_t Size, unsigned int a4) -{ - std::string *v5; // ebp - unsigned int v6; // eax - int v7; // esi - std::string *v8; // esi - _BYTE *v9; // eax - int v10; // eax - char *v12; // ebp - bool v13; // cc - void *Src; // [esp+4h] [ebp-28h] - - v5 = this; - if ( Size ) - { - v6 = *a1; - v7 = *(_DWORD *)(*a1 - 12); - if ( Size > 1073741820 - v7 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v8 = (std::string *)(Size + v7); - if ( (unsigned int)v8 > *(_DWORD *)(v6 - 8) || (v13 = *(_DWORD *)(v6 - 4) <= 0, v6 = *a1, !v13) ) - { - if ( v6 <= (unsigned int)this && (unsigned int)this <= v6 + *(_DWORD *)(v6 - 12) ) - { - v12 = (char *)this - v6; - std::string::reserve(a1, v8, (unsigned int)Src); - v5 = (std::string *)&v12[*a1]; - v9 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( Size != 1 ) - goto LABEL_8; - goto LABEL_12; - } - std::string::reserve(a1, v8, (unsigned int)Src); - v6 = *a1; - } - v9 = (_BYTE *)(*(_DWORD *)(v6 - 12) + v6); - if ( Size != 1 ) - { -LABEL_8: - memcpy(v9, v5, Size); -LABEL_9: - v10 = *a1; - *(_DWORD *)(v10 - 4) = 0; - *(_DWORD *)(v10 - 12) = v8; - *((_BYTE *)v8 + v10) = 0; - return a1; - } -LABEL_12: - *v9 = *(_BYTE *)v5; - goto LABEL_9; - } - return a1; -} -// 4D1012: variable 'Src' is possibly undefined - -//----- (004D10A0) -------------------------------------------------------- -int *__userpurge std::string::append@(int *a1@, std::string *this, const std::string *a3) -{ - size_t Size; // esi - size_t v5; // edi - _BYTE *v6; // edx - _BYTE *v7; // eax - int v8; // eax - void *Src; // [esp+4h] [ebp-28h] - - Size = *(_DWORD *)(*(_DWORD *)this - 12); - if ( Size ) - { - v5 = Size + *(_DWORD *)(*a1 - 12); - if ( v5 > *(_DWORD *)(*a1 - 8) || *(int *)(*a1 - 4) > 0 ) - { - std::string::reserve(a1, (std::string *)(Size + *(_DWORD *)(*a1 - 12)), (unsigned int)Src); - v6 = *(_BYTE **)this; - v7 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( Size == 1 ) - { -LABEL_9: - *v7 = *v6; - goto LABEL_5; - } - } - else - { - v6 = *(_BYTE **)this; - v7 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( Size == 1 ) - goto LABEL_9; - } - memcpy(v7, v6, Size); -LABEL_5: - v8 = *a1; - *(_DWORD *)(v8 - 4) = 0; - *(_DWORD *)(v8 - 12) = v5; - *(_BYTE *)(v8 + v5) = 0; - } - return a1; -} -// 4D10C8: variable 'Src' is possibly undefined - -//----- (004D1130) -------------------------------------------------------- -int *__userpurge std::string::append@( - int *a1@, - std::string *this, - const std::string *a3, - size_t a4, - unsigned int a5) -{ - unsigned int v5; // ebx - size_t Size; // ebx - std::string *v8; // edx - _BYTE *v9; // edi - _BYTE *v10; // eax - int v11; // eax - void *Src; // [esp+4h] [ebp-38h] - std::string *v14; // [esp+1Ch] [ebp-20h] - std::string *v15; // [esp+1Ch] [ebp-20h] - - v5 = *(_DWORD *)(*(_DWORD *)this - 12); - if ( (unsigned int)a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::append", - (size_t)a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - Size = v5 - (_DWORD)a3; - if ( Size > a4 ) - Size = a4; - if ( Size ) - { - v8 = (std::string *)(Size + *(_DWORD *)(*a1 - 12)); - if ( (unsigned int)v8 > *(_DWORD *)(*a1 - 8) || *(int *)(*a1 - 4) > 0 ) - { - v14 = (std::string *)(Size + *(_DWORD *)(*a1 - 12)); - std::string::reserve(a1, v14, (unsigned int)Src); - v8 = v14; - } - v9 = (char *)a3 + *(_DWORD *)this; - v10 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( Size == 1 ) - { - *v10 = *v9; - } - else - { - v15 = v8; - memcpy(v10, v9, Size); - v8 = v15; - } - v11 = *a1; - *(_DWORD *)(v11 - 4) = 0; - *(_DWORD *)(v11 - 12) = v8; - *((_BYTE *)v8 + v11) = 0; - } - return a1; -} -// 4D117A: variable 'Src' is possibly undefined - -//----- (004D1210) -------------------------------------------------------- -int *__userpurge std::string::append@(int *a1@, size_t this, char a3, char a4) -{ - int v5; // edx - int v6; // esi - std::string *v7; // esi - _BYTE *v8; // eax - int v9; // eax - int Val; // [esp+4h] [ebp-28h] - - if ( this ) - { - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( this > 1073741820 - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v7 = (std::string *)(this + v6); - if ( (unsigned int)v7 > *(_DWORD *)(v5 - 8) || *(int *)(v5 - 4) > 0 ) - std::string::reserve(a1, v7, Val); - v8 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( this == 1 ) - *v8 = a3; - else - memset(v8, a3, this); - v9 = *a1; - *(_DWORD *)(v9 - 4) = 0; - *(_DWORD *)(v9 - 12) = v7; - *((_BYTE *)v7 + v9) = 0; - } - return a1; -} -// 4D1248: variable 'Val' is possibly undefined - -//----- (004D12B0) -------------------------------------------------------- -_DWORD *__thiscall std::string::assign(_DWORD *this, int *a2) -{ - _DWORD *result; // eax - int v3; // edx - int v4; // ecx - - result = this; - v3 = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - v4 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *result = v4; - *a2 = v3; - return result; -} - -//----- (004D12F0) -------------------------------------------------------- -char **__userpurge std::string::assign@(char **a1@, std::string *this, const char *a3) -{ - size_t v4; // eax - unsigned int v6; // [esp+8h] [ebp-14h] - - v4 = strlen((const char *)this); - return std::string::assign(a1, this, v4, v6); -} -// 4D130C: variable 'v6' is possibly undefined - -//----- (004D1320) -------------------------------------------------------- -char **__userpurge std::string::assign@(char **a1@, std::string *this, size_t Size, unsigned int a4) -{ - char *v4; // eax - unsigned int v5; // edx - bool v7; // cc - char *v8; // eax - char *v9; // eax - unsigned int v11; // [esp+Ch] [ebp-10h] - - v4 = *a1; - v5 = *((_DWORD *)*a1 - 3); - if ( Size > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::assign"); - if ( v4 <= (char *)this && &v4[v5] >= (char *)this ) - { - v7 = *((_DWORD *)v4 - 1) <= 0; - v8 = *a1; - if ( !v7 ) - { - v5 = *((_DWORD *)v8 - 3); - goto LABEL_6; - } - if ( Size <= this - (std::string *)v8 ) - { - if ( Size != 1 ) - { - if ( Size ) - { - memcpy(v8, this, Size); - v8 = *a1; - } - goto LABEL_15; - } - } - else - { - if ( this == (std::string *)v8 ) - { -LABEL_15: - *((_DWORD *)v8 - 1) = 0; - *((_DWORD *)v8 - 3) = Size; - v8[Size] = 0; - return a1; - } - if ( Size != 1 ) - { - if ( Size ) - { - memmove(v8, this, Size); - v8 = *a1; - } - goto LABEL_15; - } - } - *v8 = *(_BYTE *)this; - v8 = *a1; - goto LABEL_15; - } -LABEL_6: - std::string::_M_mutate(a1, 0, v5, Size, v11); - if ( !Size ) - return a1; - v9 = *a1; - if ( Size != 1 ) - { - memcpy(v9, this, Size); - return a1; - } - *v9 = *(_BYTE *)this; - return a1; -} -// 4D1371: variable 'v11' is possibly undefined - -//----- (004D1430) -------------------------------------------------------- -int *__userpurge std::string::assign@(int *a1@, std::string *this, const std::string *a3) -{ - _DWORD *v4; // esi - int v5; // eax - int v6; // edx - char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v4 = *(_DWORD **)this; - if ( *a1 != *(_DWORD *)this ) - { - if ( (int)*(v4 - 1) < 0 ) - { - v4 = std::string::_Rep::_M_clone((int)(v4 - 3), (int)v8, 0); - v5 = *a1; - if ( !_CRT_MT ) - goto LABEL_6; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(v4 - 1, 1u); - else - ++*(v4 - 1); - v5 = *a1; - if ( !_CRT_MT ) - { -LABEL_6: - v6 = *(_DWORD *)(v5 - 4); - *(_DWORD *)(v5 - 4) = v6 - 1; - if ( v6 > 0 ) - { -LABEL_7: - *a1 = (int)v4; - return a1; - } -LABEL_11: - operator delete((void *)(v5 - 12)); - *a1 = (int)v4; - return a1; - } - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v5 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - goto LABEL_11; - } - return a1; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4D1430: using guessed type char var_D[13]; - -//----- (004D14E0) -------------------------------------------------------- -char **__userpurge std::string::assign@( - char **a1@, - std::string *this, - const std::string *a3, - size_t a4, - unsigned int a5) -{ - size_t v5; // eax - unsigned int v7; // [esp+8h] [ebp-14h] - - v5 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; - if ( v5 > a4 ) - v5 = a4; - if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::assign", - (size_t)a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - return std::string::assign(a1, (const std::string *)((char *)a3 + *(_DWORD *)this), v5, v7); -} -// 4D1511: variable 'v7' is possibly undefined - -//----- (004D1550) -------------------------------------------------------- -char **__userpurge std::string::assign@(char **a1@, size_t this, char a3, char a4) -{ - char *v5; // edx - unsigned int v7; // [esp+Ch] [ebp-10h] - - if ( this > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(a1, 0, *((_DWORD *)*a1 - 3), this, v7); - if ( !this ) - return a1; - v5 = *a1; - if ( this != 1 ) - { - memset(v5, a3, this); - return a1; - } - *v5 = a3; - return a1; -} -// 4D157C: variable 'v7' is possibly undefined - -//----- (004D15D0) -------------------------------------------------------- -char **__userpurge std::string::insert@(char **a1@, std::string *a2, char *a3, size_t a4, unsigned int a5) -{ - return std::string::insert(a1, a2 - (std::string *)*a1, a3, a4, a5); -} - -//----- (004D15E0) -------------------------------------------------------- -char *__thiscall std::string::insert(char **this, int a2, char a3) -{ - int v3; // esi - char *v5; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v3 = a2 - (_DWORD)*this; - if ( *((_DWORD *)*this - 3) == 1073741820 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(this, a2 - (_DWORD)*this, 0, 1u, v7); - (*this)[v3] = a3; - v5 = *this; - *((_DWORD *)v5 - 1) = -1; - return &v5[v3]; -} -// 4D1610: variable 'v7' is possibly undefined - -//----- (004D1640) -------------------------------------------------------- -void __thiscall std::string::insert(char **this, int a2, size_t Size, char a4) -{ - size_t v4; // esi - char *v6; // esi - unsigned int v7; // [esp+Ch] [ebp-20h] - - v4 = a2 - (_DWORD)*this; - if ( Size > 1073741820 - *((_DWORD *)*this - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(this, v4, 0, Size, v7); - if ( Size ) - { - v6 = &(*this)[v4]; - if ( Size == 1 ) - *v6 = a4; - else - memset(v6, a4, Size); - } -} -// 4D1674: variable 'v7' is possibly undefined - -//----- (004D16D0) -------------------------------------------------------- -char **__userpurge std::string::insert@(char **a1@, std::string *this, char *Str, const char *a4) -{ - size_t v5; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v5 = strlen(Str); - return std::string::insert(a1, (unsigned int)this, Str, v5, v7); -} -// 4D16F4: variable 'v7' is possibly undefined - -//----- (004D1710) -------------------------------------------------------- -char **__userpurge std::string::insert@( - char **a1@, - unsigned int this, - char *Src, - size_t Size, - unsigned int a5) -{ - char *v5; // edx - unsigned int v6; // eax - char *v8; // edi - std::string *v10; // ebp - char *v11; // eax - char *v12; // edx - size_t v13; // edi - char *v14; // esi - char *v15; // edx - size_t v16; // eax - unsigned int v17; // [esp+Ch] [ebp-30h] - char *v18; // [esp+1Ch] [ebp-20h] - - v5 = *a1; - v6 = *((_DWORD *)*a1 - 3); - if ( this > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - this, - *((_DWORD *)*a1 - 3)); - if ( Size > 1073741820 - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::insert"); - if ( v5 <= Src && Src <= &v5[v6] && *((int *)v5 - 1) <= 0 ) - { - v10 = (std::string *)(Src - *a1); - std::string::_M_mutate(a1, this, 0, Size, v17); - v11 = (char *)v10 + (_DWORD)*a1; - v12 = &(*a1)[this]; - if ( &v11[Size] > v12 ) - { - if ( v11 < v12 ) - { - v13 = this - (_DWORD)v10; - if ( this - (_DWORD)v10 == 1 ) - { - *v12 = *v11; - } - else if ( v13 ) - { - v18 = &(*a1)[this]; - memcpy(v12, v11, v13); - v12 = v18; - } - v14 = &v12[Size]; - v15 = &v12[v13]; - v16 = Size - v13; - if ( Size - v13 == 1 ) - { - *v15 = *v14; - } - else if ( v16 ) - { - memcpy(v15, v14, v16); - } - } - else if ( Size == 1 ) - { - *v12 = v11[1]; - } - else if ( Size ) - { - memcpy(v12, &v11[Size], Size); - } - } - else if ( Size == 1 ) - { - *v12 = *v11; - } - else if ( Size ) - { - memcpy(v12, v11, Size); - } - return a1; - } - std::string::_M_mutate(a1, this, 0, Size, v17); - if ( !Size ) - return a1; - v8 = &(*a1)[this]; - if ( Size != 1 ) - { - memcpy(v8, Src, Size); - return a1; - } - *v8 = *Src; - return a1; -} -// 4D1763: variable 'v17' is possibly undefined - -//----- (004D18C0) -------------------------------------------------------- -char **__userpurge std::string::insert@(char **a1@, std::string *this, char **a3, const std::string *a4) -{ - unsigned int v5; // [esp+Ch] [ebp-10h] - - return std::string::insert(a1, (unsigned int)this, *a3, *((_DWORD *)*a3 - 3), v5); -} -// 4D18DB: variable 'v5' is possibly undefined - -//----- (004D18F0) -------------------------------------------------------- -char **__userpurge std::string::insert@( - char **a1@, - std::string *this, - _DWORD *a3, - const std::string *a4, - size_t a5, - unsigned int a6) -{ - size_t v6; // eax - unsigned int v8; // [esp+Ch] [ebp-10h] - - v6 = *(_DWORD *)(*a3 - 12) - (_DWORD)a4; - if ( v6 > a5 ) - v6 = a5; - if ( (unsigned int)a4 > *(_DWORD *)(*a3 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - (size_t)a4, - *(_DWORD *)(*a3 - 12)); - return std::string::insert(a1, (unsigned int)this, (char *)a4 + *a3, v6, v8); -} -// 4D1929: variable 'v8' is possibly undefined - -//----- (004D1960) -------------------------------------------------------- -char **__userpurge std::string::insert@(char **a1@, std::string *this, size_t Size, char a4, char a5) -{ - unsigned int v5; // edx - _BYTE *v7; // edi - unsigned int v9; // [esp+Ch] [ebp-20h] - - v5 = *((_DWORD *)*a1 - 3); - if ( (unsigned int)this > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - (size_t)this, - *((_DWORD *)*a1 - 3)); - if ( Size > 1073741820 - v5 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(a1, (size_t)this, 0, Size, v9); - if ( !Size ) - return a1; - v7 = (char *)this + (_DWORD)*a1; - if ( Size != 1 ) - { - memset(v7, a4, Size); - return a1; - } - *v7 = a4; - return a1; -} -// 4D1998: variable 'v9' is possibly undefined - -//----- (004D1A10) -------------------------------------------------------- -_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, char **this) -{ - char *v3; // eax - char *v5; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v3 = *this; - if ( *((int *)*this - 1) >= 0 ) - { - if ( *((int *)v3 - 1) > 0 ) - std::string::_M_mutate(this, 0, 0, 0, v6); - v5 = *this; - *((_DWORD *)v5 - 1) = -1; - *ecx0 = &v5[*((_DWORD *)v5 - 3)]; - return ecx0; - } - else - { - *ecx0 = &v3[*((_DWORD *)v3 - 3)]; - return ecx0; - } -} -// 4D1A58: variable 'v6' is possibly undefined - -//----- (004D1A80) -------------------------------------------------------- -void __userpurge std::string::resize(int *a1@, std::string *this, unsigned int a3) -{ - unsigned int v3; // edx - char v4; // [esp+8h] [ebp-14h] - unsigned int v5; // [esp+Ch] [ebp-10h] - - v3 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::resize"); - if ( (unsigned int)this > v3 ) - { - std::string::append(a1, (size_t)this - v3, 0, v4); - } - else if ( (unsigned int)this < v3 ) - { - std::string::_M_mutate((char **)a1, (size_t)this, v3 - (_DWORD)this, 0, v5); - } -} -// 4D1AB1: variable 'v5' is possibly undefined -// 4D1ACD: variable 'v4' is possibly undefined - -//----- (004D1AF0) -------------------------------------------------------- -void __userpurge std::string::resize(int *a1@, size_t this, char a3, char a4) -{ - unsigned int v4; // edx - unsigned int v5; // [esp+Ch] [ebp-10h] - - v4 = *(_DWORD *)(*a1 - 12); - if ( this > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::resize"); - if ( this > v4 ) - { - std::string::append(a1, this - v4, a3, a4); - } - else if ( this < v4 ) - { - std::string::_M_mutate((char **)a1, this, v4 - this, 0, v5); - } -} -// 4D1B29: variable 'v5' is possibly undefined - -//----- (004D1B70) -------------------------------------------------------- -size_t __cdecl std::string::_M_copy(std::string *this, char *Src, size_t Size) -{ - size_t result; // eax - - result = Size; - if ( Size == 1 ) - { - result = (unsigned __int8)*Src; - *(_BYTE *)this = result; - } - else if ( Size ) - { - return (size_t)memcpy(this, Src, Size); - } - return result; -} - -//----- (004D1BB0) -------------------------------------------------------- -std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3) -{ - std::string *result; // eax - - result = this; - *a1 = this; - return result; -} - -//----- (004D1BC0) -------------------------------------------------------- -char *__fastcall std::string::_M_leak(char **a1) -{ - char *result; // eax - unsigned int v3; // [esp+Ch] [ebp-10h] - - result = *a1; - if ( *((int *)*a1 - 1) >= 0 ) - { - if ( *((int *)result - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v3); - result = *a1; - *((_DWORD *)*a1 - 1) = -1; - } - return result; -} -// 4D1BF4: variable 'v3' is possibly undefined - -//----- (004D1C10) -------------------------------------------------------- -size_t __cdecl std::string::_M_move(std::string *this, char *Src, size_t Size) -{ - size_t result; // eax - - result = Size; - if ( Size == 1 ) - { - result = (unsigned __int8)*Src; - *(_BYTE *)this = result; - } - else if ( Size ) - { - return (size_t)memmove(this, Src, Size); - } - return result; -} - -//----- (004D1C50) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - int a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); -} - -//----- (004D1C70) -------------------------------------------------------- -char **__thiscall std::string::replace(char **this, int a2, int a3, char *Str) -{ - size_t Size; // eax - unsigned int v7; // [esp+10h] [ebp-Ch] - - Size = strlen(Str); - return std::string::replace(this, a2 - (_DWORD)*this, a3 - a2, Str, Size, v7); -} -// 4D1CA1: variable 'v7' is possibly undefined - -//----- (004D1CC0) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - int a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); -} - -//----- (004D1CE0) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - size_t a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5, a6); -} - -//----- (004D1D00) -------------------------------------------------------- -char **__thiscall std::string::replace(char **this, int a2, int a3, char **a4) -{ - unsigned int v5; // [esp+10h] [ebp-Ch] - - return std::string::replace(this, a2 - (_DWORD)*this, a3 - a2, *a4, *((_DWORD *)*a4 - 3), v5); -} -// 4D1D28: variable 'v5' is possibly undefined - -//----- (004D1D40) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - int a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); -} - -//----- (004D1D60) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - int a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); -} - -//----- (004D1D80) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - size_t a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5, a6); -} - -//----- (004D1DA0) -------------------------------------------------------- -char **__thiscall std::string::replace(char **this, int a2, int a3, size_t Size, char a5) -{ - char *v6; // ecx - size_t v7; // esi - char *v8; // esi - unsigned int v10; // [esp+Ch] [ebp-20h] - - v6 = *this; - v7 = a2 - (_DWORD)v6; - if ( Size > a3 - a2 + 1073741820 - *((_DWORD *)v6 - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(this, v7, a3 - a2, Size, v10); - if ( !Size ) - return this; - v8 = &(*this)[v7]; - if ( Size != 1 ) - { - memset(v8, a5, Size); - return this; - } - *v8 = a5; - return this; -} -// 4D1DD9: variable 'v10' is possibly undefined - -//----- (004D1E30) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *this, - unsigned int a3, - char *Str, - const char *a5) -{ - size_t Size; // eax - unsigned int v8; // [esp+10h] [ebp-Ch] - - Size = strlen(Str); - return std::string::replace(a1, (unsigned int)this, a3, Str, Size, v8); -} -// 4D1E5C: variable 'v8' is possibly undefined - -//----- (004D1E70) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -char **__userpurge std::string::replace@( - char **a1@, - unsigned int this, - unsigned int a3, - char *Src, - size_t Size, - unsigned int a6) -{ - char *v6; // edx - unsigned int v7; // eax - unsigned int v8; // ecx - char *v10; // eax - char *v11; // edx - int v12; // eax - unsigned int v13; // [esp+8h] [ebp-60h] - char *v14; // [esp+10h] [ebp-58h] - char *v15; // [esp+10h] [ebp-58h] - unsigned int v16; // [esp+14h] [ebp-54h] - - v6 = *a1; - v7 = *((_DWORD *)*a1 - 3); - if ( this > v7 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - this, - *((_DWORD *)*a1 - 3)); - v8 = v7 - this; - if ( v7 - this > a3 ) - v8 = a3; - v16 = v8; - if ( Size > v8 - v7 + 1073741820 ) - std::__throw_length_error((std::length_error *)"basic_string::replace"); - if ( v6 > Src || Src > &v6[v7] || *((int *)v6 - 1) > 0 ) - { - std::string::_M_mutate(a1, this, v8, Size, v13); - if ( Size ) - { - if ( Size == 1 ) - (*a1)[this] = *Src; - else - memcpy(&(*a1)[this], Src, Size); - } - return a1; - } - v10 = *a1; - if ( &Src[Size] <= &(*a1)[this] ) - { - v14 = (char *)(Src - v10); -LABEL_15: - std::string::_M_mutate(a1, this, v8, Size, v13); - v11 = &v14[(_DWORD)*a1]; - if ( Size == 1 ) - { - (*a1)[this] = *v11; - } - else if ( Size ) - { - memcpy(&(*a1)[this], v11, Size); - } - return a1; - } - if ( Src >= &v10[this + v8] ) - { - v14 = (char *)(Src - v10 + Size - v8); - goto LABEL_15; - } - LOBYTE(v13) = 0; - v15 = (char *)std::string::_S_construct(Src, (int)&Src[Size]); - std::string::_M_mutate(a1, this, v16, Size, v13); - if ( Size ) - { - if ( Size == 1 ) - (*a1)[this] = *v15; - else - memcpy(&(*a1)[this], v15, Size); - } - if ( _CRT_MT ) - { - v12 = _InterlockedExchangeAdd((volatile signed __int32 *)v15 - 1, 0xFFFFFFFF); - } - else - { - v12 = *((_DWORD *)v15 - 1); - *((_DWORD *)v15 - 1) = v12 - 1; - } - if ( v12 <= 0 ) - operator delete(v15 - 12); - return a1; -} -// 4D2139: positive sp value 4 has been found -// 4D1F06: variable 'v13' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D2150) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *this, - unsigned int a3, - char **a4, - const std::string *a5) -{ - unsigned int v6; // [esp+10h] [ebp-Ch] - - return std::string::replace(a1, (unsigned int)this, a3, *a4, *((_DWORD *)*a4 - 3), v6); -} -// 4D2173: variable 'v6' is possibly undefined - -//----- (004D2190) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *this, - unsigned int a3, - _DWORD *a4, - const std::string *a5, - size_t a6, - unsigned int a7) -{ - size_t Size; // eax - unsigned int v9; // [esp+10h] [ebp-Ch] - - Size = *(_DWORD *)(*a4 - 12) - (_DWORD)a5; - if ( Size > a6 ) - Size = a6; - if ( (unsigned int)a5 > *(_DWORD *)(*a4 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - (size_t)a5, - *(_DWORD *)(*a4 - 12)); - return std::string::replace(a1, (unsigned int)this, a3, (char *)a5 + *a4, Size, v9); -} -// 4D21D1: variable 'v9' is possibly undefined - -//----- (004D2200) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *this, - unsigned int a3, - size_t a4, - char a5, - char a6) -{ - unsigned int v6; // eax - - v6 = *((_DWORD *)*a1 - 3) - (_DWORD)this; - if ( v6 > a3 ) - v6 = a3; - if ( (unsigned int)this > *((_DWORD *)*a1 - 3) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - (size_t)this, - *((_DWORD *)*a1 - 3)); - return std::string::_M_replace_aux(a1, this, v6, a4, a5, a6); -} - -//----- (004D2270) -------------------------------------------------------- -void __userpurge std::string::reserve(int *a1@, std::string *this, unsigned int a3) -{ - int v4; // ecx - std::string *v5; // eax - unsigned int v6; // edx - int v7; // ecx - _DWORD *v8; // esi - int v9; // eax - int v10; // edx - char v11[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v4 = *a1; - v5 = this; - if ( this == *(std::string **)(v4 - 8) ) - { - if ( *(int *)(v4 - 4) <= 0 ) - return; - v4 = *a1; - } - v6 = *(_DWORD *)(v4 - 12); - v7 = v4 - 12; - if ( (unsigned int)this < v6 ) - v5 = (std::string *)v6; - v8 = std::string::_Rep::_M_clone(v7, (int)v11, (int)v5 - v6); - v9 = *a1; - if ( _CRT_MT ) - { - v10 = _InterlockedExchangeAdd((volatile signed __int32 *)(v9 - 4), 0xFFFFFFFF); - } - else - { - v10 = *(_DWORD *)(v9 - 4); - *(_DWORD *)(v9 - 4) = v10 - 1; - } - if ( v10 <= 0 ) - operator delete((void *)(v9 - 12)); - *a1 = (int)v8; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4D2270: using guessed type char var_D[13]; - -//----- (004D2300) -------------------------------------------------------- -void __fastcall std::string::pop_back(char **a1) -{ - unsigned int v1; // eax - unsigned int v2; // [esp+Ch] [ebp-10h] - - v1 = *((_DWORD *)*a1 - 3); - if ( v1 - 1 > v1 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - 0xFFFFFFFF, - 0); - std::string::_M_mutate(a1, v1 - 1, 1u, 0, v2); -} -// 4D2322: variable 'v2' is possibly undefined - -//----- (004D2360) -------------------------------------------------------- -char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size) -{ - char *result; // eax - - result = Val; - if ( Val == (char *)1 ) - { - *(_BYTE *)this = Size; - } - else if ( Val ) - { - return (char *)memset(this, (char)Size, (size_t)Val); - } - return result; -} - -//----- (004D23A0) -------------------------------------------------------- -void __userpurge std::string::_M_mutate( - char **a1@, - size_t this, - unsigned int a3, - unsigned int a4, - unsigned int a5) -{ - int v6; // edi - unsigned int v7; // edx - unsigned int v8; // esi - size_t Size; // edi - _DWORD *v10; // edx - char *v11; // ebp - size_t v12; // ecx - char *Src; // eax - char *v14; // eax - int v15; // edx - char *v16; // eax - char *v17; // edx - char *v18; // ecx - _DWORD *v19; // [esp+18h] [ebp-34h] - - v6 = *((_DWORD *)*a1 - 3); - v7 = *((_DWORD *)*a1 - 2); - v8 = v6 + a4 - a3; - Size = v6 - (this + a3); - if ( v8 > v7 ) - { -LABEL_4: - v10 = std::string::_Rep::_S_create(v8, v7); - v11 = (char *)(v10 + 3); - v12 = this + a3; - if ( this ) - { - Src = *a1; - v11 = (char *)(v10 + 3); - if ( this == 1 ) - { - *((_BYTE *)v10 + 12) = *Src; - v14 = *a1; - if ( !Size ) - goto LABEL_8; - goto LABEL_12; - } - v19 = v10; - memcpy(v11, Src, this); - v12 = this + a3; - v10 = v19; - } - v14 = *a1; - if ( !Size ) - goto LABEL_8; -LABEL_12: - v16 = &v14[v12]; - v17 = (char *)v10 + this + a4 + 12; - if ( Size != 1 ) - { - memcpy(v17, v16, Size); - v14 = *a1; - if ( !_CRT_MT ) - { -LABEL_9: - v15 = *((_DWORD *)v14 - 1); - *((_DWORD *)v14 - 1) = v15 - 1; - if ( v15 > 0 ) - { -LABEL_10: - *a1 = v11; - goto LABEL_11; - } -LABEL_15: - operator delete(v14 - 12); - goto LABEL_10; - } -LABEL_14: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v14 - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_10; - goto LABEL_15; - } - *v17 = *v16; - v14 = *a1; -LABEL_8: - if ( !_CRT_MT ) - goto LABEL_9; - goto LABEL_14; - } - if ( *((int *)*a1 - 1) > 0 ) - { - v7 = *((_DWORD *)*a1 - 2); - goto LABEL_4; - } - v11 = *a1; - if ( Size && a4 != a3 ) - { - v18 = &v11[this + a3]; - if ( Size == 1 ) - v11[this + a4] = *v18; - else - memmove(&v11[this + a4], v18, Size); - v11 = *a1; - } -LABEL_11: - *((_DWORD *)v11 - 1) = 0; - *((_DWORD *)v11 - 3) = v8; - v11[v8] = 0; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D2550) -------------------------------------------------------- -int __userpurge std::string::push_back@(int *a1@, std::string *this, char a3) -{ - int v4; // edi - int result; // eax - unsigned int v6; // [esp+4h] [ebp-28h] - - v4 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)(v4 + 1) > *(_DWORD *)(*a1 - 8) || *(int *)(*a1 - 4) > 0 ) - std::string::reserve(a1, (std::string *)(v4 + 1), v6); - *(_BYTE *)(*a1 + *(_DWORD *)(*a1 - 12)) = (_BYTE)this; - result = *a1; - *(_DWORD *)(result - 4) = 0; - *(_DWORD *)(result - 12) = v4 + 1; - *(_BYTE *)(result + v4 + 1) = 0; - return result; -} -// 4D2576: variable 'v6' is possibly undefined - -//----- (004D25B0) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2) -{ - char *v2; // eax - _BYTE *result; // eax - - *this = *a2; - v2 = (char *)operator new(0xDu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004D25F0) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) -{ - char *v3; // eax - _BYTE *result; // eax - - *this = *a2; - v3 = (char *)operator new(0xDu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004D2630) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, char *Str, int a3) -{ - int v3; // eax - int result; // eax - - v3 = -1; - if ( Str ) - v3 = (int)&Str[strlen(Str)]; - result = std::string::_S_construct(Str, v3); - *this = result; - return result; -} - -//----- (004D2680) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) -{ - int result; // eax - int v6; // ebx - int v7; // edx - int v8; // [esp+1Ch] [ebp-20h] - - if ( &Src[Size] && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - result = (int)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size == 1 ) - { - result = *Src; - *(_BYTE *)(v6 + 12) = result; - } - else if ( Size ) - { - v8 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v7 = v8; - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004D2720) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, int a2) -{ - char *v3; // eax - _BYTE *result; // eax - - v3 = (char *)operator new(0xDu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *this = result; - return result; -} - -//----- (004D2760) -------------------------------------------------------- -_DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3) -{ - _DWORD *result; // eax - char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF - - result = *(_DWORD **)this; - if ( *(int *)(*(_DWORD *)this - 4) < 0 ) - { - result = std::string::_Rep::_M_clone((int)(result - 3), (int)v5, 0); - *a1 = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *a1 = result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4D2760: using guessed type char var_D[13]; - -//----- (004D27D0) -------------------------------------------------------- -_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::string::_Rep::_M_clone((int)(result - 3), a3, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D2840) -------------------------------------------------------- -int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v5; // edx - int result; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); - *this = result; - return result; -} - -//----- (004D28A0) -------------------------------------------------------- -int __userpurge std::string::string@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4, - unsigned int a5) -{ - int v6; // edx - unsigned int v7; // eax - char *v8; // eax - int result; // eax - - v6 = *(_DWORD *)this; - v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; - if ( v7 > a4 ) - v7 = a4; - v8 = (char *)a3 + v7 + v6; - if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - (size_t)a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); - *a1 = result; - return result; -} - -//----- (004D2910) -------------------------------------------------------- -int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5) -{ - int v6; // edx - unsigned int v7; // eax - int v8; // eax - int result; // eax - - v6 = *a2; - v7 = *(_DWORD *)(*a2 - 12) - a3; - if ( v7 > a4 ) - v7 = a4; - v8 = v6 + a3 + v7; - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); - *this = result; - return result; -} - -//----- (004D2980) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) -{ - int result; // eax - int v6; // ebx - int v7; // edx - int v8; // [esp+1Ch] [ebp-20h] - - if ( &Src[Size] && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - result = (int)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size == 1 ) - { - result = *Src; - *(_BYTE *)(v6 + 12) = result; - } - else if ( Size ) - { - v8 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v7 = v8; - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004D2A20) -------------------------------------------------------- -char *__thiscall std::string::string(_DWORD *this, size_t Size, char *a3, int a4) -{ - char *result; // eax - int v6; // ebx - void *v7; // edx - char *v8; // [esp+1Ch] [ebp-20h] - - result = (char *)std::string::_Rep::_S_create(Size, 0); - v6 = (int)result; - v7 = result + 12; - if ( Size ) - { - if ( Size == 1 ) - { - result = a3; - *(_BYTE *)(v6 + 12) = (_BYTE)a3; - } - else - { - v8 = result + 12; - result = (char *)memset(v7, (char)a3, Size); - v7 = v8; - } - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004D2AA0) -------------------------------------------------------- -_BYTE *__fastcall std::string::string(_DWORD *a1) -{ - char *v2; // eax - _BYTE *result; // eax - - v2 = (char *)operator new(0xDu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a1 = result; - return result; -} - -//----- (004D2AE0) -------------------------------------------------------- -int __thiscall std::string::string<__gnu_cxx::__normal_iterator>( - _DWORD *this, - unsigned __int8 *Src, - int a3, - int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004D2B70) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004D2C10) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004D2CB0) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2) -{ - char *v2; // eax - _BYTE *result; // eax - - *this = *a2; - v2 = (char *)operator new(0xDu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004D2CF0) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) -{ - char *v3; // eax - _BYTE *result; // eax - - *this = *a2; - v3 = (char *)operator new(0xDu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004D2D30) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, char *Str, int a3) -{ - int v3; // eax - int result; // eax - - v3 = -1; - if ( Str ) - v3 = (int)&Str[strlen(Str)]; - result = std::string::_S_construct(Str, v3); - *this = result; - return result; -} - -//----- (004D2D80) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) -{ - int result; // eax - int v6; // ebx - int v7; // edx - int v8; // [esp+1Ch] [ebp-20h] - - if ( &Src[Size] && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - result = (int)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size == 1 ) - { - result = *Src; - *(_BYTE *)(v6 + 12) = result; - } - else if ( Size ) - { - v8 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v7 = v8; - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004D2E20) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, int a2) -{ - char *v3; // eax - _BYTE *result; // eax - - v3 = (char *)operator new(0xDu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *this = result; - return result; -} - -//----- (004D2E60) -------------------------------------------------------- -_DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3) -{ - _DWORD *result; // eax - char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF - - result = *(_DWORD **)this; - if ( *(int *)(*(_DWORD *)this - 4) < 0 ) - { - result = std::string::_Rep::_M_clone((int)(result - 3), (int)v5, 0); - *a1 = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *a1 = result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4D2E60: using guessed type char var_D[13]; - -//----- (004D2ED0) -------------------------------------------------------- -_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::string::_Rep::_M_clone((int)(result - 3), a3, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D2F40) -------------------------------------------------------- -int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v5; // edx - int result; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); - *this = result; - return result; -} - -//----- (004D2FA0) -------------------------------------------------------- -int __userpurge std::string::string@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4, - unsigned int a5) -{ - int v6; // edx - unsigned int v7; // eax - char *v8; // eax - int result; // eax - - v6 = *(_DWORD *)this; - v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; - if ( v7 > a4 ) - v7 = a4; - v8 = (char *)a3 + v7 + v6; - if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - (size_t)a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); - *a1 = result; - return result; -} - -//----- (004D3010) -------------------------------------------------------- -int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5) -{ - int v6; // edx - unsigned int v7; // eax - int v8; // eax - int result; // eax - - v6 = *a2; - v7 = *(_DWORD *)(*a2 - 12) - a3; - if ( v7 > a4 ) - v7 = a4; - v8 = v6 + a3 + v7; - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); - *this = result; - return result; -} - -//----- (004D3080) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) -{ - int result; // eax - int v6; // ebx - int v7; // edx - int v8; // [esp+1Ch] [ebp-20h] - - if ( &Src[Size] && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - result = (int)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size == 1 ) - { - result = *Src; - *(_BYTE *)(v6 + 12) = result; - } - else if ( Size ) - { - v8 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v7 = v8; - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004D3120) -------------------------------------------------------- -char *__thiscall std::string::string(_DWORD *this, size_t Size, char *a3, int a4) -{ - char *result; // eax - int v6; // ebx - void *v7; // edx - char *v8; // [esp+1Ch] [ebp-20h] - - result = (char *)std::string::_Rep::_S_create(Size, 0); - v6 = (int)result; - v7 = result + 12; - if ( Size ) - { - if ( Size == 1 ) - { - result = a3; - *(_BYTE *)(v6 + 12) = (_BYTE)a3; - } - else - { - v8 = result + 12; - result = (char *)memset(v7, (char)a3, Size); - v7 = v8; - } - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004D31A0) -------------------------------------------------------- -_BYTE *__fastcall std::string::string(_DWORD *a1) -{ - char *v2; // eax - _BYTE *result; // eax - - v2 = (char *)operator new(0xDu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a1 = result; - return result; -} - -//----- (004D31E0) -------------------------------------------------------- -int __thiscall std::string::string<__gnu_cxx::__normal_iterator>( - _DWORD *this, - unsigned __int8 *Src, - int a3, - int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004D3270) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004D3310) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004D33B0) -------------------------------------------------------- -void __fastcall std::string::~string(int *a1) -{ - int v1; // eax - int v2; // edx - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)(v1 - 12)); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D33F0) -------------------------------------------------------- -void __fastcall std::string::~string(int *a1) -{ - int v1; // eax - int v2; // edx - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)(v1 - 12)); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D3430) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator=(_DWORD *this, int *a2) -{ - _DWORD *result; // eax - int v3; // edx - int v4; // ecx - - result = this; - v3 = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - v4 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *result = v4; - *a2 = v3; - return result; -} - -//----- (004D3470) -------------------------------------------------------- -char **__thiscall std::string::operator=(char **this, std::string *Str) -{ - size_t v3; // eax - unsigned int v5; // [esp+8h] [ebp-14h] - - v3 = strlen((const char *)Str); - return std::string::assign(this, Str, v3, v5); -} -// 4D348C: variable 'v5' is possibly undefined - -//----- (004D34A0) -------------------------------------------------------- -int *__thiscall std::string::operator=(int *this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - int v5; // edx - char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = (_DWORD *)*a2; - if ( *this != *a2 ) - { - if ( (int)*(v3 - 1) < 0 ) - { - v3 = std::string::_Rep::_M_clone((int)(v3 - 3), (int)v7, 0); - v4 = *this; - if ( !_CRT_MT ) - goto LABEL_6; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(v3 - 1, 1u); - else - ++*(v3 - 1); - v4 = *this; - if ( !_CRT_MT ) - { -LABEL_6: - v5 = *(_DWORD *)(v4 - 4); - *(_DWORD *)(v4 - 4) = v5 - 1; - if ( v5 > 0 ) - { -LABEL_7: - *this = (int)v3; - return this; - } -LABEL_11: - operator delete((void *)(v4 - 12)); - *this = (int)v3; - return this; - } - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v4 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - goto LABEL_11; - } - return this; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4D34A0: using guessed type char var_D[13]; - -//----- (004D3550) -------------------------------------------------------- -char **__thiscall std::string::operator=(char **this, std::string *a2, size_t a3) -{ - unsigned int v5; // [esp+8h] [ebp-14h] - - std::string::assign(this, a2, a3, v5); - return this; -} -// 4D3565: variable 'v5' is possibly undefined - -//----- (004D3580) -------------------------------------------------------- -char **__thiscall std::string::operator=(char **this, char a2) -{ - unsigned int v4; // [esp+Ch] [ebp-10h] - - std::string::_M_mutate(this, 0, *((_DWORD *)*this - 3), 1u, v4); - **this = a2; - return this; -} -// 4D35A3: variable 'v4' is possibly undefined - -//----- (004D35C0) -------------------------------------------------------- -char *__thiscall std::string::operator[](char **this, int a2) -{ - char *v2; // eax - char *v5; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v2 = *this; - if ( *((int *)*this - 1) < 0 ) - return &v2[a2]; - if ( *((int *)v2 - 1) > 0 ) - std::string::_M_mutate(this, 0, 0, 0, v6); - v5 = *this; - *((_DWORD *)v5 - 1) = -1; - return &v5[a2]; -} -// 4D3600: variable 'v6' is possibly undefined - -//----- (004D3620) -------------------------------------------------------- -int *__thiscall std::string::operator+=(int *this, std::string *Str) -{ - size_t v3; // eax - unsigned int v5; // [esp+8h] [ebp-14h] - - v3 = strlen((const char *)Str); - return std::string::append(this, Str, v3, v5); -} -// 4D363C: variable 'v5' is possibly undefined - -//----- (004D3670) -------------------------------------------------------- -int *__thiscall std::string::operator+=(int *this, char a2) -{ - int v3; // edi - int v4; // eax - unsigned int v6; // [esp+4h] [ebp-28h] - - v3 = *(_DWORD *)(*this - 12); - if ( (unsigned int)(v3 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::string::reserve(this, (std::string *)(v3 + 1), v6); - *(_BYTE *)(*this + *(_DWORD *)(*this - 12)) = a2; - v4 = *this; - *(_DWORD *)(v4 - 4) = 0; - *(_DWORD *)(v4 - 12) = v3 + 1; - *(_BYTE *)(v4 + v3 + 1) = 0; - return this; -} -// 4D3696: variable 'v6' is possibly undefined - -//----- (004D36D0) -------------------------------------------------------- -int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *a2, char *a3) -{ - int result; // eax - char *v4; // edx - int v5; // edi - _BYTE *v6; // ecx - _BYTE *v7; // esi - int v8; // edx - - result = *((_DWORD *)this + 3); - v4 = (char *)a2 + 1; - *(_BYTE *)a2 = 37; - if ( (result & 0x800) != 0 ) - { - *((_BYTE *)a2 + 1) = 43; - v4 = (char *)a2 + 2; - } - if ( (result & 0x400) != 0 ) - *v4++ = 35; - v5 = result & 0x104; - if ( v5 == 260 ) - { - v6 = v4; - if ( !(_BYTE)a3 ) - goto LABEL_16; -LABEL_12: - *v6++ = (_BYTE)a3; - v7 = v6 + 1; - if ( v5 != 4 ) - goto LABEL_8; -LABEL_13: - *v6 = 102; - *v7 = 0; - return result; - } - v6 = v4 + 2; - *(_WORD *)v4 = 10798; - if ( (_BYTE)a3 ) - goto LABEL_12; - v7 = v4 + 3; - if ( v5 == 4 ) - goto LABEL_13; -LABEL_8: - v8 = result & 0x4000; - if ( v5 == 256 ) - { - result = v8 == 0 ? 101 : 69; - *v6 = result; - *v7 = 0; - return result; - } - if ( v5 != 260 ) - { - result = v8 == 0 ? 103 : 71; - *v6 = result; - *v7 = 0; - return result; - } - v4 = v6; -LABEL_16: - result = (result & 0x4000) == 0 ? 97 : 65; - *v4 = result; - v4[1] = 0; - return result; -} - -//----- (004D37C0) -------------------------------------------------------- -void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_55FE8C; - std::exception::~exception(Block); - operator delete(a1); -} -// 4D37CC: variable 'Block' is possibly undefined -// 55FE8C: using guessed type void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this); - -//----- (004D37F0) -------------------------------------------------------- -void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FE8C; - std::exception::~exception(a1); -} -// 4D37F0: variable 'v1' is possibly undefined -// 55FE8C: using guessed type void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this); - -//----- (004D3800) -------------------------------------------------------- -int __cdecl std::money_base::_S_construct_pattern() -{ - return std::money_base::_S_default_pattern; -} -// 55AF40: using guessed type int std::money_base::_S_default_pattern; - -//----- (004D3810) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // esi - _DWORD *v6; // eax - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x44u); - *v4 = &off_5606D4; - v4[1] = 0; - v4[2] = 0; - v4[3] = 0; - *((_WORD *)v4 + 8) = 0; - *((_BYTE *)v4 + 18) = 0; - v4[5] = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - *((_BYTE *)v4 + 67) = 0; - this[2] = v4; - } - *((_BYTE *)v4 + 17) = 46; - v5 = std::money_base::_S_atoms; - *(_BYTE *)(this[2] + 18) = 44; - v6 = (_DWORD *)this[2]; - v6[2] = &unk_556C0C; - v6[3] = 0; - v6[5] = &unk_556C0C; - v6[6] = 0; - v6[7] = &unk_556C0C; - v6[8] = 0; - v6[9] = &unk_556C0C; - v6[10] = 0; - v6[11] = 0; - v6[12] = std::money_base::_S_default_pattern; - *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; - for ( result = 0; result != 11; ++result ) - *(_BYTE *)(this[2] + result + 56) = v5[result]; - return result; -} -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 55AF40: using guessed type int std::money_base::_S_default_pattern; -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (004D3930) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FEA0; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FEA0: using guessed type int (*off_55FEA0)(); - -//----- (004D39D0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55FEA0; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55FEA0: using guessed type int (*off_55FEA0)(); - -//----- (004D3A70) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FEA0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FEA0: using guessed type int (*off_55FEA0)(); - -//----- (004D3B10) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FEA0; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FEA0: using guessed type int (*off_55FEA0)(); - -//----- (004D3BB0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55FEA0; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55FEA0: using guessed type int (*off_55FEA0)(); - -//----- (004D3C50) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FEA0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FEA0: using guessed type int (*off_55FEA0)(); - -//----- (004D3CF0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - std::moneypunct::~moneypunct(a1); - operator delete(a1); -} - -//----- (004D3D80) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_55FEA0; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) - { - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D3DDF: variable 'lpfctx' is possibly undefined -// 55FEA0: using guessed type int (*off_55FEA0)(); - -//----- (004D3E80) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // esi - _DWORD *v6; // eax - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x44u); - *v4 = &off_5606E4; - v4[1] = 0; - v4[2] = 0; - v4[3] = 0; - *((_WORD *)v4 + 8) = 0; - *((_BYTE *)v4 + 18) = 0; - v4[5] = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - *((_BYTE *)v4 + 67) = 0; - this[2] = v4; - } - *((_BYTE *)v4 + 17) = 46; - v5 = std::money_base::_S_atoms; - *(_BYTE *)(this[2] + 18) = 44; - v6 = (_DWORD *)this[2]; - v6[2] = &unk_556C0C; - v6[3] = 0; - v6[5] = &unk_556C0C; - v6[6] = 0; - v6[7] = &unk_556C0C; - v6[8] = 0; - v6[9] = &unk_556C0C; - v6[10] = 0; - v6[11] = 0; - v6[12] = std::money_base::_S_default_pattern; - *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; - for ( result = 0; result != 11; ++result ) - *(_BYTE *)(this[2] + result + 56) = v5[result]; - return result; -} -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 55AF40: using guessed type int std::money_base::_S_default_pattern; -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (004D3FA0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FED4; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FED4: using guessed type int (*off_55FED4)(); - -//----- (004D4040) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55FED4; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55FED4: using guessed type int (*off_55FED4)(); - -//----- (004D40E0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FED4; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FED4: using guessed type int (*off_55FED4)(); - -//----- (004D4180) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FED4; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FED4: using guessed type int (*off_55FED4)(); - -//----- (004D4220) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55FED4; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55FED4: using guessed type int (*off_55FED4)(); - -//----- (004D42C0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FED4; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FED4: using guessed type int (*off_55FED4)(); - -//----- (004D4360) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - std::moneypunct::~moneypunct(a1); - operator delete(a1); -} - -//----- (004D43F0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_55FED4; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) - { - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D444F: variable 'lpfctx' is possibly undefined -// 55FED4: using guessed type int (*off_55FED4)(); - -//----- (004D44F0) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // ebx - int v6; // ecx - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x54u); - v4[1] = 0; - *v4 = &off_5606F4; - v4[2] = 0; - v4[3] = 0; - *((_BYTE *)v4 + 16) = 0; - *(_DWORD *)((char *)v4 + 18) = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - v4[14] = 0; - *((_BYTE *)v4 + 82) = 0; - this[2] = v4; - } - *(_DWORD *)((char *)v4 + 18) = 2883630; - v4[2] = &unk_556C0C; - v5 = std::money_base::_S_atoms; - v4[13] = std::money_base::_S_default_pattern; - v4[3] = 0; - v4[6] = &unk_556C0E; - v4[7] = 0; - v4[8] = &unk_556C0E; - v4[9] = 0; - v4[10] = &unk_556C0E; - v4[11] = 0; - v4[12] = 0; - *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; - v6 = this[2]; - for ( result = 0; result != 11; ++result ) - *(_WORD *)(v6 + 2 * result + 60) = v5[result]; - return result; -} -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 55AF40: using guessed type int std::money_base::_S_default_pattern; -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (004D4610) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FF08; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FF08: using guessed type int (*off_55FF08)(); - -//----- (004D46B0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55FF08; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55FF08: using guessed type int (*off_55FF08)(); - -//----- (004D4750) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FF08; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FF08: using guessed type int (*off_55FF08)(); - -//----- (004D47F0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FF08; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FF08: using guessed type int (*off_55FF08)(); - -//----- (004D4890) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55FF08; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55FF08: using guessed type int (*off_55FF08)(); - -//----- (004D4930) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FF08; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FF08: using guessed type int (*off_55FF08)(); - -//----- (004D49D0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - std::moneypunct::~moneypunct(a1); - operator delete(a1); -} - -//----- (004D4A60) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_55FF08; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) - { - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D4ABF: variable 'lpfctx' is possibly undefined -// 55FF08: using guessed type int (*off_55FF08)(); - -//----- (004D4B60) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // ebx - int v6; // ecx - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x54u); - v4[1] = 0; - *v4 = &off_560704; - v4[2] = 0; - v4[3] = 0; - *((_BYTE *)v4 + 16) = 0; - *(_DWORD *)((char *)v4 + 18) = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - v4[14] = 0; - *((_BYTE *)v4 + 82) = 0; - this[2] = v4; - } - *(_DWORD *)((char *)v4 + 18) = 2883630; - v4[2] = &unk_556C0C; - v5 = std::money_base::_S_atoms; - v4[13] = std::money_base::_S_default_pattern; - v4[3] = 0; - v4[6] = &unk_556C0E; - v4[7] = 0; - v4[8] = &unk_556C0E; - v4[9] = 0; - v4[10] = &unk_556C0E; - v4[11] = 0; - v4[12] = 0; - *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; - v6 = this[2]; - for ( result = 0; result != 11; ++result ) - *(_WORD *)(v6 + 2 * result + 60) = v5[result]; - return result; -} -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 55AF40: using guessed type int std::money_base::_S_default_pattern; -// 560704: using guessed type int (*off_560704)(); - -//----- (004D4C80) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FF3C; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FF3C: using guessed type int (*off_55FF3C)(); - -//----- (004D4D20) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55FF3C; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55FF3C: using guessed type int (*off_55FF3C)(); - -//----- (004D4DC0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FF3C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FF3C: using guessed type int (*off_55FF3C)(); - -//----- (004D4E60) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FF3C; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FF3C: using guessed type int (*off_55FF3C)(); - -//----- (004D4F00) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55FF3C; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55FF3C: using guessed type int (*off_55FF3C)(); - -//----- (004D4FA0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FF3C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55FF3C: using guessed type int (*off_55FF3C)(); - -//----- (004D5040) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - std::moneypunct::~moneypunct(a1); - operator delete(a1); -} - -//----- (004D50D0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_55FF3C; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) - { - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D512F: variable 'lpfctx' is possibly undefined -// 55FF3C: using guessed type int (*off_55FF3C)(); - -//----- (004D51D0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) -{ - _DWORD *result; // eax - - result = (_DWORD *)this[2]; - if ( !result ) - { - result = operator new(0xC8u); - result[1] = 0; - *result = &off_5605E4; - result[2] = 0; - result[3] = 0; - result[4] = 0; - result[5] = 0; - result[6] = 0; - result[7] = 0; - result[8] = 0; - result[9] = 0; - result[10] = 0; - result[11] = 0; - result[12] = 0; - result[13] = 0; - result[14] = 0; - result[15] = 0; - result[16] = 0; - result[17] = 0; - result[18] = 0; - result[19] = 0; - result[20] = 0; - result[21] = 0; - result[22] = 0; - result[23] = 0; - result[24] = 0; - result[25] = 0; - result[26] = 0; - result[27] = 0; - result[28] = 0; - result[29] = 0; - result[30] = 0; - result[31] = 0; - result[32] = 0; - result[33] = 0; - result[34] = 0; - result[35] = 0; - result[36] = 0; - result[37] = 0; - result[38] = 0; - result[39] = 0; - result[40] = 0; - result[41] = 0; - result[42] = 0; - result[43] = 0; - result[44] = 0; - result[45] = 0; - result[46] = 0; - result[47] = 0; - result[48] = 0; - *((_BYTE *)result + 196) = 0; - this[2] = result; - } - result[2] = "%m/%d/%y"; - result[3] = "%m/%d/%y"; - result[4] = "%H:%M:%S"; - result[5] = "%H:%M:%S"; - result[6] = &off_559FE2; - result[7] = &off_559FE2; - result[8] = 5611491; - result[9] = &unk_559FE6; - result[10] = &off_559FE2; - result[11] = "Sunday"; - result[12] = "Monday"; - result[13] = "Tuesday"; - result[14] = "Wednesday"; - result[15] = "Thursday"; - result[16] = "Friday"; - result[17] = "Saturday"; - result[18] = &off_55A022; - result[19] = &off_55A026; - result[20] = &off_55A02A; - result[21] = &off_55A02E; - result[22] = &off_55A032; - result[23] = &off_55A036; - result[24] = &off_55A03A; - result[25] = "January"; - result[26] = "February"; - result[27] = "March"; - result[28] = "April"; - result[29] = "May"; - result[30] = "June"; - result[31] = "July"; - result[32] = "August"; - result[33] = "September"; - result[34] = "October"; - result[35] = "November"; - result[36] = "December"; - result[37] = &off_55A094; - result[38] = &off_55A098; - result[39] = &off_55A09C; - result[40] = &off_55A0A0; - result[41] = "May"; - result[42] = &off_55A0A4; - result[43] = &off_55A0A8; - result[44] = &off_55A0AC; - result[45] = &off_55A0B0; - result[46] = &off_55A0B4; - result[47] = &off_55A0B8; - result[48] = &off_55A0BC; - return result; -} -// 559FE2: using guessed type void *off_559FE2; -// 55A022: using guessed type void *off_55A022; -// 55A026: using guessed type void *off_55A026; -// 55A02A: using guessed type void *off_55A02A; -// 55A02E: using guessed type void *off_55A02E; -// 55A032: using guessed type void *off_55A032; -// 55A036: using guessed type void *off_55A036; -// 55A03A: using guessed type void *off_55A03A; -// 55A094: using guessed type void *off_55A094; -// 55A098: using guessed type void *off_55A098; -// 55A09C: using guessed type void *off_55A09C; -// 55A0A0: using guessed type void *off_55A0A0; -// 55A0A4: using guessed type void *off_55A0A4; -// 55A0A8: using guessed type void *off_55A0A8; -// 55A0AC: using guessed type void *off_55A0AC; -// 55A0B0: using guessed type void *off_55A0B0; -// 55A0B4: using guessed type void *off_55A0B4; -// 55A0B8: using guessed type void *off_55A0B8; -// 55A0BC: using guessed type void *off_55A0BC; -// 5605E4: using guessed type int (*off_5605E4)(); - -//----- (004D5510) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FF70; - this[2] = a2; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 55FF70: using guessed type int (*off_55FF70)(); - -//----- (004D55B0) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) -{ - unsigned int v4; // [esp+8h] [ebp-50h] - void *Size; // [esp+10h] [ebp-48h] - const char *c_name; // [esp+14h] [ebp-44h] - - this[1] = a4 != 0; - *this = &off_55FF70; - this[2] = 0; - c_name = (const char *)std::locale::facet::_S_get_c_name(); - if ( !strcmp(Str1, c_name) ) - { - this[4] = c_name; - } - else - { - v4 = strlen(Str1) + 1; - Size = (void *)operator new[](v4); - memcpy(Size, Str1, v4); - this[4] = Size; - } - std::__timepunct::_M_initialize_timepunct(this, a2); -} -// 55FF70: using guessed type int (*off_55FF70)(); - -//----- (004D5710) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FF70; - this[2] = 0; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 55FF70: using guessed type int (*off_55FF70)(); - -//----- (004D57B0) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FF70; - this[2] = a2; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 55FF70: using guessed type int (*off_55FF70)(); - -//----- (004D5850) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) -{ - unsigned int v4; // [esp+8h] [ebp-50h] - void *Size; // [esp+10h] [ebp-48h] - const char *c_name; // [esp+14h] [ebp-44h] - - this[1] = a4 != 0; - *this = &off_55FF70; - this[2] = 0; - c_name = (const char *)std::locale::facet::_S_get_c_name(); - if ( !strcmp(Str1, c_name) ) - { - this[4] = c_name; - } - else - { - v4 = strlen(Str1) + 1; - Size = (void *)operator new[](v4); - memcpy(Size, Str1, v4); - this[4] = Size; - } - std::__timepunct::_M_initialize_timepunct(this, a2); -} -// 55FF70: using guessed type int (*off_55FF70)(); - -//----- (004D59B0) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FF70; - this[2] = 0; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 55FF70: using guessed type int (*off_55FF70)(); - -//----- (004D5A50) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *Block) -{ - std::__timepunct::~__timepunct(Block); - operator delete(Block); -} - -//----- (004D5A70) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) -{ - int **v2; // esi - void *v3; // esi - void (__fastcall *v4)(_DWORD *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FF70; - v2 = (int **)a1[4]; - if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) - operator delete[](v2); - v3 = (void *)a1[2]; - if ( v3 ) - { - v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); - if ( v4 == std::__timepunct_cache::~__timepunct_cache ) - { - *(_DWORD *)v3 = &off_5605E4; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(v3); - } - else - { - v4((_DWORD *)a1[2]); - } - } - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); - std::locale::facet::~facet((std::locale::facet *)lpfctxa); -} -// 4D5ACD: variable 'lpfctx' is possibly undefined -// 4D5AEF: variable 'lpfctxa' is possibly undefined -// 55FF70: using guessed type int (*off_55FF70)(); -// 5605E4: using guessed type int (*off_5605E4)(); - -//----- (004D5B10) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) -{ - int **v2; // esi - void *v3; // esi - void (__fastcall *v4)(_DWORD *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FF70; - v2 = (int **)a1[4]; - if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) - operator delete[](v2); - v3 = (void *)a1[2]; - if ( v3 ) - { - v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); - if ( v4 == std::__timepunct_cache::~__timepunct_cache ) - { - *(_DWORD *)v3 = &off_5605E4; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(v3); - } - else - { - v4((_DWORD *)a1[2]); - } - } - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); - std::locale::facet::~facet((std::locale::facet *)lpfctxa); -} -// 4D5B6D: variable 'lpfctx' is possibly undefined -// 4D5B8F: variable 'lpfctxa' is possibly undefined -// 55FF70: using guessed type int (*off_55FF70)(); -// 5605E4: using guessed type int (*off_5605E4)(); - -//----- (004D5BB0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) -{ - _DWORD *result; // eax - - result = (_DWORD *)this[2]; - if ( !result ) - { - result = operator new(0xC8u); - result[1] = 0; - *result = &off_5605F4; - result[2] = 0; - result[3] = 0; - result[4] = 0; - result[5] = 0; - result[6] = 0; - result[7] = 0; - result[8] = 0; - result[9] = 0; - result[10] = 0; - result[11] = 0; - result[12] = 0; - result[13] = 0; - result[14] = 0; - result[15] = 0; - result[16] = 0; - result[17] = 0; - result[18] = 0; - result[19] = 0; - result[20] = 0; - result[21] = 0; - result[22] = 0; - result[23] = 0; - result[24] = 0; - result[25] = 0; - result[26] = 0; - result[27] = 0; - result[28] = 0; - result[29] = 0; - result[30] = 0; - result[31] = 0; - result[32] = 0; - result[33] = 0; - result[34] = 0; - result[35] = 0; - result[36] = 0; - result[37] = 0; - result[38] = 0; - result[39] = 0; - result[40] = 0; - result[41] = 0; - result[42] = 0; - result[43] = 0; - result[44] = 0; - result[45] = 0; - result[46] = 0; - result[47] = 0; - result[48] = 0; - *((_BYTE *)result + 196) = 0; - this[2] = result; - } - result[2] = &off_55A0C0; - result[3] = &off_55A0C0; - result[4] = &off_55A0D2; - result[5] = &off_55A0D2; - result[6] = &unk_55A0E4; - result[7] = &unk_55A0E4; - result[8] = &off_55A0E6; - result[9] = L"PM"; - result[10] = &unk_55A0E4; - result[11] = &off_55A0F2; - result[12] = &off_55A100; - result[13] = &off_55A10E; - result[14] = &off_55A11E; - result[15] = &off_55A132; - result[16] = &off_55A144; - result[17] = &off_55A152; - result[18] = &off_55A164; - result[19] = &off_55A16C; - result[20] = &off_55A174; - result[21] = &off_55A17C; - result[22] = &off_55A184; - result[23] = &off_55A18C; - result[24] = &off_55A194; - result[25] = &off_55A19C; - result[26] = &off_55A1AC; - result[27] = &off_55A1BE; - result[28] = &off_55A1CA; - result[29] = &off_55A1D6; - result[30] = &off_55A1DE; - result[31] = &off_55A1E8; - result[32] = &off_55A1F2; - result[33] = &off_55A200; - result[34] = &off_55A214; - result[35] = &off_55A224; - result[36] = &off_55A236; - result[37] = &off_55A248; - result[38] = &off_55A250; - result[39] = &off_55A258; - result[40] = &off_55A260; - result[41] = &off_55A1D6; - result[42] = &off_55A268; - result[43] = &off_55A270; - result[44] = &off_55A278; - result[45] = &off_55A280; - result[46] = &off_55A288; - result[47] = &off_55A290; - result[48] = &off_55A298; - return result; -} -// 55A0C0: using guessed type void *off_55A0C0; -// 55A0D2: using guessed type void *off_55A0D2; -// 55A0E6: using guessed type void *off_55A0E6; -// 55A0EC: using guessed type wchar_t aPm[3]; -// 55A0F2: using guessed type void *off_55A0F2; -// 55A100: using guessed type void *off_55A100; -// 55A10E: using guessed type void *off_55A10E; -// 55A11E: using guessed type void *off_55A11E; -// 55A132: using guessed type void *off_55A132; -// 55A144: using guessed type void *off_55A144; -// 55A152: using guessed type void *off_55A152; -// 55A164: using guessed type void *off_55A164; -// 55A16C: using guessed type void *off_55A16C; -// 55A174: using guessed type void *off_55A174; -// 55A17C: using guessed type void *off_55A17C; -// 55A184: using guessed type void *off_55A184; -// 55A18C: using guessed type void *off_55A18C; -// 55A194: using guessed type void *off_55A194; -// 55A19C: using guessed type void *off_55A19C; -// 55A1AC: using guessed type void *off_55A1AC; -// 55A1BE: using guessed type void *off_55A1BE; -// 55A1CA: using guessed type void *off_55A1CA; -// 55A1D6: using guessed type void *off_55A1D6; -// 55A1DE: using guessed type void *off_55A1DE; -// 55A1E8: using guessed type void *off_55A1E8; -// 55A1F2: using guessed type void *off_55A1F2; -// 55A200: using guessed type void *off_55A200; -// 55A214: using guessed type void *off_55A214; -// 55A224: using guessed type void *off_55A224; -// 55A236: using guessed type void *off_55A236; -// 55A248: using guessed type void *off_55A248; -// 55A250: using guessed type void *off_55A250; -// 55A258: using guessed type void *off_55A258; -// 55A260: using guessed type void *off_55A260; -// 55A268: using guessed type void *off_55A268; -// 55A270: using guessed type void *off_55A270; -// 55A278: using guessed type void *off_55A278; -// 55A280: using guessed type void *off_55A280; -// 55A288: using guessed type void *off_55A288; -// 55A290: using guessed type void *off_55A290; -// 55A298: using guessed type void *off_55A298; -// 5605F4: using guessed type int (*off_5605F4)(); - -//----- (004D5EF0) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FF80; - this[2] = a2; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 55FF80: using guessed type int (*off_55FF80)(); - -//----- (004D5F90) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) -{ - unsigned int v4; // [esp+8h] [ebp-50h] - void *Size; // [esp+10h] [ebp-48h] - const char *c_name; // [esp+14h] [ebp-44h] - - this[1] = a4 != 0; - *this = &off_55FF80; - this[2] = 0; - c_name = (const char *)std::locale::facet::_S_get_c_name(); - if ( !strcmp(Str1, c_name) ) - { - this[4] = c_name; - } - else - { - v4 = strlen(Str1) + 1; - Size = (void *)operator new[](v4); - memcpy(Size, Str1, v4); - this[4] = Size; - } - std::__timepunct::_M_initialize_timepunct(this, a2); -} -// 55FF80: using guessed type int (*off_55FF80)(); - -//----- (004D60F0) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FF80; - this[2] = 0; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 55FF80: using guessed type int (*off_55FF80)(); - -//----- (004D6190) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FF80; - this[2] = a2; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 55FF80: using guessed type int (*off_55FF80)(); - -//----- (004D6230) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) -{ - unsigned int v4; // [esp+8h] [ebp-50h] - void *Size; // [esp+10h] [ebp-48h] - const char *c_name; // [esp+14h] [ebp-44h] - - this[1] = a4 != 0; - *this = &off_55FF80; - this[2] = 0; - c_name = (const char *)std::locale::facet::_S_get_c_name(); - if ( !strcmp(Str1, c_name) ) - { - this[4] = c_name; - } - else - { - v4 = strlen(Str1) + 1; - Size = (void *)operator new[](v4); - memcpy(Size, Str1, v4); - this[4] = Size; - } - std::__timepunct::_M_initialize_timepunct(this, a2); -} -// 55FF80: using guessed type int (*off_55FF80)(); - -//----- (004D6390) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FF80; - this[2] = 0; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 55FF80: using guessed type int (*off_55FF80)(); - -//----- (004D6430) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *Block) -{ - std::__timepunct::~__timepunct(Block); - operator delete(Block); -} - -//----- (004D6450) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) -{ - int **v2; // esi - void *v3; // esi - void (__fastcall *v4)(_DWORD *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FF80; - v2 = (int **)a1[4]; - if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) - operator delete[](v2); - v3 = (void *)a1[2]; - if ( v3 ) - { - v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); - if ( v4 == std::__timepunct_cache::~__timepunct_cache ) - { - *(_DWORD *)v3 = &off_5605F4; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(v3); - } - else - { - v4((_DWORD *)a1[2]); - } - } - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); - std::locale::facet::~facet((std::locale::facet *)lpfctxa); -} -// 4D64AD: variable 'lpfctx' is possibly undefined -// 4D64CF: variable 'lpfctxa' is possibly undefined -// 55FF80: using guessed type int (*off_55FF80)(); -// 5605F4: using guessed type int (*off_5605F4)(); - -//----- (004D64F0) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) -{ - int **v2; // esi - void *v3; // esi - void (__fastcall *v4)(_DWORD *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FF80; - v2 = (int **)a1[4]; - if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) - operator delete[](v2); - v3 = (void *)a1[2]; - if ( v3 ) - { - v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); - if ( v4 == std::__timepunct_cache::~__timepunct_cache ) - { - *(_DWORD *)v3 = &off_5605F4; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(v3); - } - else - { - v4((_DWORD *)a1[2]); - } - } - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); - std::locale::facet::~facet((std::locale::facet *)lpfctxa); -} -// 4D654D: variable 'lpfctx' is possibly undefined -// 4D656F: variable 'lpfctxa' is possibly undefined -// 55FF80: using guessed type int (*off_55FF80)(); -// 5605F4: using guessed type int (*off_5605F4)(); - -//----- (004D6590) -------------------------------------------------------- -void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const char *a3) -{ - int v3; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_55FF90; - std::string::string((char *)this, (int)&v3); -} -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); - -//----- (004D6620) -------------------------------------------------------- -void __thiscall std::logic_error::logic_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_55FF90; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); -} -// 4D6674: variable 'v2' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); - -//----- (004D66B0) -------------------------------------------------------- -void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::logic_error *a3) -{ - const std::string *v3; // [esp+4h] [ebp-58h] - - *a1 = &off_55FF90; - std::string::string(a1 + 1, (std::logic_error *)((char *)this + 4), v3); -} -// 4D66EE: variable 'v3' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); - -//----- (004D6710) -------------------------------------------------------- -void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_55FF90; - std::string::string(a1 + 1, this, v3); -} -// 4D6758: variable 'v3' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); - -//----- (004D6790) -------------------------------------------------------- -void __fastcall std::logic_error::~logic_error(void *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4D6796: variable 'Block' is possibly undefined - -//----- (004D67B0) -------------------------------------------------------- -void __cdecl std::logic_error::~logic_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_55FF90; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4D67BB: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 4D67B0: using guessed type int var_D[3]; - -//----- (004D6810) -------------------------------------------------------- -int *__thiscall std::logic_error::operator=(int *this, int a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this + 1, (std::string *)(a2 + 4), v4); - return this; -} -// 4D6848: variable 'v4' is possibly undefined - -//----- (004D6870) -------------------------------------------------------- -int *__thiscall std::logic_error::operator=(int *this, int a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this + 1, (std::string *)(a2 + 4), v4); - return this; -} -// 4D68A8: variable 'v4' is possibly undefined - -//----- (004D68D0) -------------------------------------------------------- -void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_5601E8; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_55FFA4; -} -// 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); - -//----- (004D6960) -------------------------------------------------------- -void __thiscall std::range_error::range_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_5601E8; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_55FFA4; -} -// 4D69B4: variable 'v2' is possibly undefined -// 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); - -//----- (004D6A00) -------------------------------------------------------- -void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_5601E8; - std::string::string(a1 + 1, this, v3); - *a1 = &off_55FFA4; -} -// 4D6A48: variable 'v3' is possibly undefined -// 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); - -//----- (004D6A90) -------------------------------------------------------- -void __fastcall std::range_error::~range_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_55FFA4; - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4D6A9C: variable 'Block' is possibly undefined -// 55FFA4: using guessed type void (__cdecl *off_55FFA4)(std::range_error *__hidden this); - -//----- (004D6AB0) -------------------------------------------------------- -void __cdecl std::range_error::~range_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_5601E8; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4D6ABB: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 4D6AB0: using guessed type int var_D[3]; - -//----- (004D6B10) -------------------------------------------------------- -int __usercall std::_Destroy_aux::__destroy *>@( - int a1@, - int a2, - int a3) -{ - volatile signed __int32 **v4; // ecx - - while ( a2 != a3 ) - { - v4 = (volatile signed __int32 **)(a2 + 4); - a2 += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - return a1; -} - -//----- (004D6B30) -------------------------------------------------------- -int __usercall std::_Destroy_aux::__destroy *>@( - int a1@, - int a2, - int a3) -{ - volatile signed __int32 **v4; // ecx - - while ( a2 != a3 ) - { - v4 = (volatile signed __int32 **)(a2 + 4); - a2 += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - return a1; -} - -//----- (004D6B50) -------------------------------------------------------- -int __usercall std::_Destroy_aux::__destroy *>@( - int a1@, - int a2, - int a3) -{ - volatile signed __int32 **v4; // ecx - - while ( a2 != a3 ) - { - v4 = (volatile signed __int32 **)(a2 + 4); - a2 += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - return a1; -} - -//----- (004D6B70) -------------------------------------------------------- -void __cdecl std::_Destroy_aux::__destroy(void **a1, char **a2) -{ - char *v3; // edi - char *i; // esi - volatile signed __int32 **v5; // ecx - - while ( a1 != (void **)a2 ) - { - v3 = (char *)a1[1]; - for ( i = (char *)*a1; v3 != i; i += 8 ) - { - v5 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v5); - } - if ( *a1 ) - operator delete(*a1); - a1 += 3; - } -} - -//----- (004D6BB4) -------------------------------------------------------- -int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3) -{ - void **v4; // ecx - - while ( a2 != a3 ) - { - v4 = a2; - a2 += 16; - night::ns_sourcemap::~ns_sourcemap(v4); - } - return a1; -} - -//----- (004D6BD4) -------------------------------------------------------- -int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3) -{ - void **v4; // ecx - - while ( a2 != a3 ) - { - v4 = a2; - a2 += 6; - std::string::_M_dispose(v4); - } - return a1; -} - -//----- (004D6C00) -------------------------------------------------------- -unsigned __int8 *__usercall std::`anonymous namespace'::utf16_span@( - unsigned __int8 *a1@, - unsigned __int8 *a2@, - unsigned int a3@, - unsigned int a4, - char a5) -{ - unsigned int v6; // ebp - unsigned int v7; // esi - unsigned int v8; // ebx - unsigned int utf8_code; // eax - unsigned __int8 *v11[6]; // [esp+8h] [ebp-18h] BYREF - - v11[0] = a1; - v6 = a4; - v11[1] = a2; - if ( (a5 & 4) != 0 - && (unsigned int)(a2 - a1) > 2 - && *(_WORD *)a1 == std::`anonymous namespace'::utf8_bom - && a1[2] == 0xBF ) - { - v11[0] = a1 + 3; - } - if ( a3 > 1 ) - { - v7 = 0; - v8 = 1; - while ( 1 ) - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v11, a4); - if ( a4 < utf8_code ) - return v11[0]; - if ( utf8_code <= 0xFFFF ) - v8 = v7; - v7 = v8 + 1; - v8 += 2; - if ( v8 >= a3 ) - goto LABEL_10; - } - } - v8 = 1; -LABEL_10: - if ( a3 != v8 ) - return v11[0]; - if ( a4 >= 0xFFFF ) - v6 = 0xFFFF; - std::`anonymous namespace'::read_utf8_code_point(v11, v6); - return v11[0]; -} -// 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (004D6CD0) -------------------------------------------------------- -int __cdecl std::`anonymous namespace'::__x86_rdrand() -{ - bool v0; // cf - int v1; // edx - int v4; // [esp+1Ch] [ebp-10h] - - v0 = 0; - v1 = 100; - while ( 1 ) - { - __asm { rdrand eax } - v4 = _EAX; - if ( v0 ) - _EAX = 1; - if ( _EAX ) - break; - v0 = v1-- == 0; - if ( !v1 ) - std::__throw_runtime_error((std::runtime_error *)"random_device: rdrand failed"); - } - return v4; -} - -//----- (004D6D10) -------------------------------------------------------- -int __cdecl std::`anonymous namespace'::__x86_rdseed(std::_anonymous_namespace_ *this) -{ - bool v1; // cf - int v3; // eax - - v1 = 0; - __asm { rdseed eax } - v3 = 99; - do - { - _mm_pause(); - __asm { rdseed edx } - if ( v1 ) - return _EDX; - v1 = v3-- == 0; - } - while ( v3 ); - if ( !this ) - std::__throw_runtime_error((std::runtime_error *)"random_device: rdseed failed"); - return ((int (__cdecl *)(_DWORD))this)(0); -} - -//----- (004D6D70) -------------------------------------------------------- -int __cdecl std::`anonymous namespace'::__winxp_rand_s() -{ - int v1[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( _rand_s((int)v1) ) - std::__throw_runtime_error((std::runtime_error *)"random_device: rand_s failed"); - return v1[0]; -} -// 53E258: using guessed type int (__cdecl *_rand_s)(int); -// 4D6D70: using guessed type int var_10[4]; - -//----- (004D6DA0) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::read_utf16_bom@(int a1@, int *a2@) -{ - int result; // eax - _WORD *v4; // ebx - - result = *a2; - if ( (*a2 & 4) != 0 ) - { - v4 = *(_WORD **)a1; - if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) > 1 ) - { - if ( *v4 == 0xFFFE ) - { - result &= ~1u; - *(_DWORD *)a1 = v4 + 1; - *a2 = result; - } - else if ( *v4 == 0xFEFF ) - { - result |= 1u; - *(_DWORD *)a1 = v4 + 1; - *a2 = result; - } - } - } - return result; -} - -//----- (004D6DF0) -------------------------------------------------------- -int __cdecl std::`anonymous namespace'::__x86_rdseed_rdrand() -{ - bool v0; // cf - int v2; // eax - - v0 = 0; - __asm { rdseed eax } - v2 = 99; - do - { - _mm_pause(); - __asm { rdseed edx } - if ( v0 ) - return _EDX; - v0 = v2-- == 0; - } - while ( v2 ); - return std::`anonymous namespace'::__x86_rdrand(); -} - -//----- (004D6E30) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::read_utf8_code_point@( - unsigned __int8 **a1@, - unsigned int a2@) -{ - unsigned __int8 *v2; // edx - unsigned int v3; // edi - int v4; // ecx - unsigned int v5; // esi - unsigned __int8 v7; // di - unsigned __int8 v8; // di - unsigned __int8 v10; // [esp+7h] [ebp-11h] - - v2 = *a1; - v3 = a1[1] - *a1; - if ( !v3 ) - return -2; - v4 = *v2; - if ( (v4 & 0x80u) == 0 ) - { - v5 = (unsigned __int8)v4; - *a1 = v2 + 1; - return v5; - } - v5 = -1; - if ( (unsigned __int8)v4 <= 0xC1u ) - return v5; - if ( (unsigned __int8)v4 > 0xDFu ) - { - if ( (unsigned __int8)v4 > 0xEFu ) - { - if ( (unsigned __int8)v4 <= 0xF4u ) - { - v5 = -2; - if ( v3 > 3 ) - { - v8 = v2[1]; - v5 = -1; - if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) - { - if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) - { - v5 = -1; - v10 = v2[2]; - if ( (v10 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) - { - v5 = (v10 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; - if ( v5 <= a2 ) - *a1 = v2 + 4; - } - } - } - } - } - } - else - { - v5 = -2; - if ( v3 > 2 ) - { - v7 = v2[1]; - v5 = -1; - if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) - { - v5 = -1; - if ( (v2[2] & 0xC0) == 0x80 ) - { - v5 = (v7 << 6) + (v4 << 12) + v2[2] - 925824; - if ( a2 >= v5 ) - *a1 = v2 + 3; - } - } - } - } - return v5; - } - if ( v3 != 1 ) - { - if ( (v2[1] & 0xC0) == 0x80 ) - { - v5 = (v4 << 6) + v2[1] - 12416; - if ( a2 >= v5 ) - *a1 = v2 + 2; - } - return v5; - } - return -2; -} - -//----- (004D6FF0) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::read_utf8_code_point@( - unsigned __int8 **a1@, - unsigned int a2@) -{ - unsigned __int8 *v2; // edx - unsigned int v3; // edi - int v4; // ecx - unsigned int v5; // esi - unsigned __int8 v7; // di - unsigned __int8 v8; // di - unsigned __int8 v10; // [esp+7h] [ebp-11h] - - v2 = *a1; - v3 = a1[1] - *a1; - if ( !v3 ) - return -2; - v4 = *v2; - if ( (v4 & 0x80u) == 0 ) - { - v5 = (unsigned __int8)v4; - *a1 = v2 + 1; - return v5; - } - v5 = -1; - if ( (unsigned __int8)v4 <= 0xC1u ) - return v5; - if ( (unsigned __int8)v4 > 0xDFu ) - { - if ( (unsigned __int8)v4 > 0xEFu ) - { - if ( (unsigned __int8)v4 <= 0xF4u ) - { - v5 = -2; - if ( v3 > 3 ) - { - v8 = v2[1]; - v5 = -1; - if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) - { - if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) - { - v5 = -1; - v10 = v2[2]; - if ( (v10 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) - { - v5 = (v10 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; - if ( v5 <= a2 ) - *a1 = v2 + 4; - } - } - } - } - } - } - else - { - v5 = -2; - if ( v3 > 2 ) - { - v7 = v2[1]; - v5 = -1; - if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) - { - v5 = -1; - if ( (v2[2] & 0xC0) == 0x80 ) - { - v5 = (v7 << 6) + (v4 << 12) + v2[2] - 925824; - if ( a2 >= v5 ) - *a1 = v2 + 3; - } - } - } - } - return v5; - } - if ( v3 != 1 ) - { - if ( (v2[1] & 0xC0) == 0x80 ) - { - v5 = (v4 << 6) + v2[1] - 12416; - if ( a2 >= v5 ) - *a1 = v2 + 2; - } - return v5; - } - return -2; -} - -//----- (004D71B0) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@) -{ - _BYTE *v3; // esi - int v4; // ecx - int result; // eax - _BYTE *v6; // ecx - int v7; // esi - _BYTE *v8; // ecx - - if ( a2 > 0x7FF ) - { - if ( a2 > 0xFFFF ) - { - result = 0; - if ( a2 <= 0x10FFFF ) - { - v8 = *(_BYTE **)a1; - if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) > 3 ) - { - *v8 = (a2 >> 18) - 16; - v8[1] = ((a2 >> 12) & 0x3F) + 0x80; - v8[2] = ((a2 >> 6) & 0x3F) + 0x80; - *(_DWORD *)a1 = v8 + 4; - result = 1; - v8[3] = (a2 & 0x3F) + 0x80; - } - } - } - else - { - v6 = *(_BYTE **)a1; - v7 = *(_DWORD *)(a1 + 4); - result = 0; - if ( (unsigned int)(v7 - (_DWORD)v6) > 2 ) - { - *v6 = (a2 >> 12) - 32; - v6[1] = ((a2 >> 6) & 0x3F) + 0x80; - *(_DWORD *)a1 = v6 + 3; - result = 1; - v6[2] = (a2 & 0x3F) + 0x80; - } - } - } - else - { - v3 = *(_BYTE **)a1; - v4 = *(_DWORD *)(a1 + 4); - result = 0; - if ( (unsigned int)(v4 - (_DWORD)v3) > 1 ) - { - *v3 = (a2 >> 6) - 64; - *(_DWORD *)a1 = v3 + 2; - result = 1; - v3[1] = (a2 & 0x3F) + 0x80; - } - } - return result; -} - -//----- (004D7290) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **a1@, unsigned int a2@) -{ - _BYTE *v3; // eax - int result; // eax - _BYTE *v5; // esi - _BYTE *v6; // ebx - _BYTE *v7; // eax - _BYTE *v8; // esi - _BYTE *v9; // ebx - _BYTE *v10; // ebx - _BYTE *v11; // esi - _BYTE *v12; // ebx - - if ( a2 <= 0x7F ) - { - v3 = *a1; - if ( a1[1] == v3 ) - return 0; - *a1 = v3 + 1; - *v3 = a2; - return 1; - } - if ( a2 <= 0x7FF ) - { - v5 = *a1; - v6 = a1[1]; - result = 0; - if ( (unsigned int)(v6 - v5) <= 1 ) - return result; - *a1 = v5 + 1; - *v5 = (a2 >> 6) - 64; -LABEL_8: - v7 = (*a1)++; - *v7 = (a2 & 0x3F) + 0x80; - return 1; - } - if ( a2 <= 0xFFFF ) - { - v11 = *a1; - v12 = a1[1]; - result = 0; - if ( (unsigned int)(v12 - v11) <= 2 ) - return result; - *a1 = v11 + 1; - *v11 = (a2 >> 12) - 32; - goto LABEL_13; - } - result = 0; - if ( a2 <= 0x10FFFF ) - { - v8 = *a1; - if ( (unsigned int)(a1[1] - *a1) > 3 ) - { - *a1 = v8 + 1; - *v8 = (a2 >> 18) - 16; - v9 = (*a1)++; - *v9 = ((a2 >> 12) & 0x3F) + 0x80; -LABEL_13: - v10 = (*a1)++; - *v10 = ((a2 >> 6) & 0x3F) + 0x80; - goto LABEL_8; - } - } - return result; -} - -//----- (004D7380) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::ucs2_in@( - unsigned __int16 **a1@, - int *a2@, - unsigned int a3@, - char a4) -{ - int v7; // eax - unsigned __int16 *v8; // edx - int v9; // ecx - unsigned __int16 v10; // ax - unsigned __int16 v11; // di - int v13; // [esp+0h] [ebp-20h] - int v14; // [esp+4h] [ebp-1Ch] - unsigned __int16 *v15; // [esp+8h] [ebp-18h] - unsigned int v16; // [esp+Ch] [ebp-14h] - - std::`anonymous namespace'::read_utf16_bom((int)a1, (int *)&a4); - v7 = 0xFFFF; - v8 = *a1; - if ( a3 < 0xFFFF ) - v7 = a3; - v16 = v7; - v15 = a1[1]; - if ( !((unsigned int)((char *)v15 - (char *)v8) >> 1) ) - return 0; - v9 = *a2; - v13 = a2[1]; - v14 = a4 & 1; - while ( v13 != v9 ) - { - v10 = *v8; - v11 = __ROL2__(*v8, 8); - if ( !v14 ) - v10 = v11; - if ( (unsigned __int16)(v10 + 10240) <= 0x7FFu || v16 < v10 ) - return 2; - ++v8; - v9 += 2; - *a1 = v8; - *a2 = v9; - *(_WORD *)(v9 - 2) = v10; - if ( !((unsigned int)((char *)v15 - (char *)v8) >> 1) ) - return 0; - } - return 1; -} - -//----- (004D7450) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::ucs2_out@( - unsigned __int16 **a1@, - _DWORD *a2@, - unsigned int a3@, - char a4) -{ - unsigned __int16 *v5; // ebp - unsigned __int16 *v6; // eax - _WORD *v8; // edx - unsigned int v9; // eax - __int16 v10; // cx - __int16 v11; // ax - unsigned __int16 *v12; // eax - - v5 = a1[1]; - v6 = *a1; - if ( v5 == v6 ) - return 0; - v8 = (_WORD *)*a2; - while ( 1 ) - { - if ( !((unsigned int)(a2[1] - (_DWORD)v8) >> 1) ) - return v6 != v5; - v9 = *v6; - v10 = v9; - if ( v9 - 55296 <= 0x3FF || v9 > a3 ) - break; - v11 = __ROL2__(v9, 8); - if ( (a4 & 1) == 0 ) - v10 = v11; - *v8 = v10; - v5 = a1[1]; - v8 = (_WORD *)(*a2 + 2); - v12 = *a1; - *a2 = v8; - v6 = v12 + 1; - *a1 = v6; - if ( v5 == v6 ) - return 0; - } - return 2; -} - -//----- (004D74F0) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::utf16_in@( - unsigned __int8 **a1@, - char **a2@, - unsigned int a3@, - char a4, - int a5) -{ - unsigned __int8 *v8; // edi - char *v9; // edi - __int16 v10; // cx - unsigned int utf8_code; // eax - unsigned __int8 *v12; // ecx - char *v13; // edx - unsigned int v15; // ecx - __int16 v16; // ax - __int16 v17; // cx - unsigned __int8 *v18; // ecx - unsigned __int8 *v19; // [esp+0h] [ebp-1Ch] - unsigned __int8 *v20; // [esp+4h] [ebp-18h] - - v20 = a1[1]; - v8 = *a1; - v19 = *a1; - if ( (a4 & 4) != 0 - && (unsigned int)(v20 - v8) > 2 - && *(_WORD *)v8 == std::`anonymous namespace'::utf8_bom - && v8[2] == 0xBF ) - { - v19 += 3; - *a1 = v19; - } - if ( v19 != v20 ) - { - v9 = a2[1]; - while ( *a2 != v9 ) - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(a1, a3); - if ( utf8_code == -2 ) - return a5 + 1; - if ( a3 < utf8_code ) - return 2; - v9 = a2[1]; - v13 = *a2; - if ( utf8_code <= 0xFFFF ) - { - if ( v13 == v9 ) - goto LABEL_13; - v10 = __ROL2__(utf8_code, 8); - if ( (a4 & 1) == 0 ) - LOWORD(utf8_code) = v10; - *a2 = v13 + 2; - v12 = *a1; - *(_WORD *)v13 = utf8_code; - v19 = v12; - v20 = a1[1]; - if ( v20 == v12 ) - return 0; - } - else - { - if ( (unsigned int)(v9 - v13) <= 2 ) - { -LABEL_13: - *a1 = v19; - a1[1] = v20; - return 1; - } - v15 = utf8_code >> 10; - v16 = (utf8_code & 0x3FF) - 9216; - v17 = v15 - 10304; - if ( (a4 & 1) == 0 ) - { - v17 = __ROL2__(v17, 8); - v16 = __ROL2__(v16, 8); - } - *(_WORD *)v13 = v17; - *a2 = v13 + 4; - v18 = *a1; - *((_WORD *)v13 + 1) = v16; - v19 = v18; - v20 = a1[1]; - if ( v20 == v18 ) - return 0; - } - } - } - return 0; -} -// 55AF54: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (004D7660) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::utf16_out@( - unsigned __int16 **a1@, - _BYTE **a2@, - unsigned int a3@, - int a4) -{ - unsigned __int16 *v5; // edx - unsigned __int16 *v7; // eax - unsigned int v8; // ebp - int v10; // eax - int v11; // ebp - unsigned int v12; // edx - unsigned __int16 *v13; // edx - - v5 = a1[1]; - v7 = *a1; - v8 = (char *)v5 - (char *)v7; - if ( v7 == v5 ) - return 0; - while ( 1 ) - { - v12 = *v7; - if ( v12 - 55296 <= 0x3FF ) - { - if ( a4 == 1 ) - return 2; - if ( v8 <= 2 ) - return 0; - v10 = v7[1]; - if ( (unsigned int)(v10 - 56320) > 0x3FF ) - return 2; - v11 = 2; - v12 = v10 + (v12 << 10) - 56613888; - if ( v12 > a3 ) - return 2; - } - else - { - if ( v12 - 56320 <= 0x3FF ) - return 2; - v11 = 1; - if ( v12 > a3 ) - return 2; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(a2, v12) ) - break; - v13 = a1[1]; - v7 = &(*a1)[v11]; - *a1 = v7; - v8 = (char *)v13 - (char *)v7; - if ( v13 == v7 ) - return 0; - } - return 1; -} - -//----- (004D7720) -------------------------------------------------------- -void __fastcall std::_Vector_base::~_Vector_base(void **a1) -{ - if ( *a1 ) - operator delete(*a1); -} -// 4D7720: could not find valid save-restore pair for ebp - -//----- (004D7740) -------------------------------------------------------- -int __fastcall std::__basic_file::fd(FILE **a1) -{ - return fileno(*a1); -} - -//----- (004D77D0) -------------------------------------------------------- -int __fastcall std::__basic_file::file(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004D77E0) -------------------------------------------------------- -_BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4) -{ - unsigned int v4; // eax - const char *Mode; // eax - FILE *v7; // eax - - v4 = (a3 & 0x3D) - 1; - if ( v4 > 0x3B ) - return 0; - Mode = (&CSWTCH_18)[v4]; - if ( !Mode ) - return 0; - if ( *(_DWORD *)this ) - return 0; - v7 = fopen64(FileName, Mode); - *(_DWORD *)this = v7; - if ( !v7 ) - return 0; - this[4] = 1; - return this; -} - -//----- (004D7840) -------------------------------------------------------- -FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3) -{ - FILE *v4; // ecx - unsigned int v5; // eax - char *v6; // edx - char *v7; // edx - wchar_t *v8; // esi - char v9; // al - FILE *v10; // eax - wchar_t Mode[2]; // [esp+18h] [ebp-14h] BYREF - int v13; // [esp+1Ch] [ebp-10h] - - v4 = 0; - v5 = (a3 & 0x3D) - 1; - if ( v5 > 0x3B ) - return v4; - v6 = (&CSWTCH_18)[v5]; - if ( !v6 ) - return v4; - v4 = *(FILE **)this; - if ( !*(_DWORD *)this ) - { - *(_DWORD *)Mode = 0; - v7 = v6 + 1; - v8 = Mode; - v13 = 0; - v9 = *(v7 - 1); - do - { - while ( 1 ) - { - while ( 1 ) - { - while ( v9 == 98 ) - { - ++v7; - *v8++ = 98; - v9 = *(v7 - 1); - if ( !v9 ) - goto LABEL_10; - } - if ( v9 > 98 ) - break; - if ( v9 == 43 ) - { - ++v7; - *v8++ = 43; - v9 = *(v7 - 1); - if ( !v9 ) - goto LABEL_10; - } - else - { - if ( v9 != 97 ) - return v4; - ++v7; - *v8++ = 97; - v9 = *(v7 - 1); - if ( !v9 ) - goto LABEL_10; - } - } - if ( v9 != 114 ) - break; - ++v7; - *v8++ = 114; - v9 = *(v7 - 1); - if ( !v9 ) - goto LABEL_10; - } - if ( v9 != 119 ) - return v4; - ++v7; - *v8++ = 119; - v9 = *(v7 - 1); - } - while ( v9 ); -LABEL_10: - v10 = __wfopen(FileName, Mode); - *(_DWORD *)this = v10; - v4 = v10; - if ( v10 ) - { - this[4] = 1; - return (FILE *)this; - } - return v4; - } - return 0; -} - -//----- (004D7990) -------------------------------------------------------- -int __fastcall std::__basic_file::sync(FILE **a1) -{ - return fflush(*a1); -} - -//----- (004D79B0) -------------------------------------------------------- -int __fastcall std::__basic_file::close(int a1) -{ - int v3; // eax - - if ( !*(_DWORD *)a1 ) - return 0; - if ( *(_BYTE *)(a1 + 4) ) - { - v3 = fclose(*(FILE **)a1); - *(_DWORD *)a1 = 0; - if ( v3 ) - return 0; - else - return a1; - } - else - { - *(_DWORD *)a1 = 0; - return a1; - } -} - -//----- (004D7A10) -------------------------------------------------------- -int __thiscall std::__basic_file::xsgetn(FILE **this, void *DstBuf, unsigned int MaxCharCount) -{ - int FileHandle; // eax - int v5; // ebp - - do - { - FileHandle = std::__basic_file::fd(this); - v5 = read(FileHandle, DstBuf, MaxCharCount); - } - while ( v5 == -1 && *__errno() == 4 ); - return v5; -} - -//----- (004D7A60) -------------------------------------------------------- -unsigned int __thiscall std::__basic_file::xsputn(FILE **this, char *a2, unsigned int a3) -{ - int FileHandle; // esi - unsigned int MaxCharCount; // ebp - int v6; // eax - - FileHandle = std::__basic_file::fd(this); - MaxCharCount = a3; - while ( 1 ) - { - while ( 1 ) - { - v6 = write(FileHandle, a2, MaxCharCount); - if ( v6 != -1 ) - break; - if ( *__errno() != 4 ) - return a3 - MaxCharCount; - } - MaxCharCount -= v6; - if ( !MaxCharCount ) - break; - a2 += v6; - } - return a3; -} - -//----- (004D7AD0) -------------------------------------------------------- -__int64 __thiscall std::__basic_file::seekoff(FILE **this, __int64 a2, int a3) -{ - int v3; // eax - - v3 = fileno(*this); - return lseek64(v3, a2, a3); -} - -//----- (004D7B75) -------------------------------------------------------- -#error "4D7BA1: call analysis failed (funcsize=14)" - -//----- (004D7BB0) -------------------------------------------------------- -_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3) -{ - int v4; // ebp - _BYTE *result; // eax - - if ( !*(_DWORD *)this && Stream ) - { - v4 = *__errno(); - *__errno() = 0; - do - { - if ( !fflush(Stream) ) - { - *__errno() = v4; - result = this; - *(_DWORD *)this = Stream; - this[4] = 0; - return result; - } - } - while ( *__errno() == 4 ); - *__errno() = v4; - } - return 0; -} - -//----- (004D7C20) -------------------------------------------------------- -FILE **__thiscall std::__basic_file::sys_open(FILE **this, int FileHandle, char a3) -{ - unsigned int v3; // eax - const char *Format; // eax - FILE *v6; // eax - FILE **v7; // [esp+18h] [ebp-44h] - - v7 = this; - v3 = (a3 & 0x3D) - 1; - if ( v3 > 0x3B ) - return 0; - Format = (&CSWTCH_18)[v3]; - if ( !Format ) - return 0; - if ( *this ) - return 0; - v6 = fdopen(FileHandle, Format); - *v7 = v6; - if ( !v6 ) - return 0; - *((_BYTE *)v7 + 4) = 1; - if ( !FileHandle ) - setvbuf(v6, 0, 4, 0); - return v7; -} - -//----- (004D7D10) -------------------------------------------------------- -int __thiscall std::__basic_file::xsputn_2(FILE **this, char *a2, unsigned int a3, char *a4, unsigned int a5) -{ - int FileHandle; // esi - unsigned int MaxCharCount; // ebp - int v9; // eax - unsigned int v11; // ebp - int v12; // eax - - FileHandle = std::__basic_file::fd(this); - if ( a3 ) - { - v11 = a3; - while ( 1 ) - { - while ( 1 ) - { - v12 = write(FileHandle, a2, v11); - if ( v12 != -1 ) - break; - if ( *__errno() != 4 ) - return a3 - v11; - } - v11 -= v12; - if ( !v11 ) - break; - a2 += v12; - } - FileHandle = std::__basic_file::fd(this); - } - MaxCharCount = a5; - do - { - while ( 1 ) - { - v9 = write(FileHandle, a4, MaxCharCount); - if ( v9 == -1 ) - break; - MaxCharCount -= v9; - if ( !MaxCharCount ) - return a3 + a5; - a4 += v9; - } - } - while ( *__errno() == 4 ); - a5 -= MaxCharCount; - return a3 + a5; -} - -//----- (004D7DE0) -------------------------------------------------------- -int __fastcall std::__basic_file::showmanyc(FILE **a1) -{ - int FileHandle; // eax - unsigned int st_size_high; // edi - unsigned int st_size; // esi - int v6; // eax - int v7; // esi - signed __int64 v8; // kr08_8 - struct _stat64 Stat; // [esp+18h] [ebp-54h] BYREF - - FileHandle = std::__basic_file::fd(a1); - if ( __fstat64(FileHandle, &Stat) || (Stat.st_mode & 0xF000) != 0x8000 ) - return 0; - st_size_high = HIDWORD(Stat.st_size); - st_size = Stat.st_size; - v6 = std::__basic_file::fd(a1); - v8 = __PAIR64__(st_size_high, st_size) - lseek64(v6, 0LL, 1); - v7 = v8; - if ( v8 > 0x7FFFFFFF ) - return 0x7FFFFFFF; - return v7; -} - -//----- (004D7E70) -------------------------------------------------------- -void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2) -{ - *(_DWORD *)this = 0; - this[4] = 0; -} - -//----- (004D7E80) -------------------------------------------------------- -FILE *__fastcall std::__basic_file::~__basic_file(int a1) -{ - FILE *result; // eax - - result = *(FILE **)a1; - if ( *(_DWORD *)a1 ) - { - if ( *(_BYTE *)(a1 + 4) ) - return (FILE *)fclose(*(FILE **)a1); - } - return result; -} - -//----- (004D7EA0) -------------------------------------------------------- -void __thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2) -{ - *this = *a2; - *a2 = std::string::_S_construct(0, 0); -} - -//----- (004D7F10) -------------------------------------------------------- -int __userpurge std::__cow_string::__cow_string@( - _DWORD *a1@, - std::__cow_string *this, - size_t a3, - unsigned int a4) -{ - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - return std::string::string(a1, (unsigned __int8 *)this, a3, (int)v5); -} -// 4D7F10: using guessed type int var_D[3]; - -//----- (004D7F40) -------------------------------------------------------- -int __thiscall std::__cow_string::__cow_string(_DWORD *this, int a2) -{ - unsigned int v3; // [esp+8h] [ebp-14h] - - return std::__cow_string::__cow_string(this, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v3); -} -// 4D7F53: variable 'v3' is possibly undefined - -//----- (004D7F70) -------------------------------------------------------- -void __userpurge std::__cow_string::__cow_string( - _DWORD *a1@, - std::__cow_string *this, - const std::__cow_string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-58h] - - std::string::string(a1, this, v3); -} -// 4D7FA4: variable 'v3' is possibly undefined - -//----- (004D7FD0) -------------------------------------------------------- -_DWORD *__fastcall std::__cow_string::__cow_string(_DWORD *a1) -{ - _DWORD *result; // eax - - result = std::string::_S_construct(0, 0); - *a1 = result; - return result; -} - -//----- (004D8000) -------------------------------------------------------- -void __fastcall std::__cow_string::~__cow_string(int *a1) -{ - int v1; // ecx - int v2; // eax - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v1 - 12), (int)v3); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4D8000: using guessed type int var_D[3]; - -//----- (004D8050) -------------------------------------------------------- -int *__thiscall std::__cow_string::operator=(int *this, std::string *a2) -{ - std::string *v4; // [esp+4h] [ebp-18h] - - std::string::swap(this, a2, v4); - return this; -} -// 4D805D: variable 'v4' is possibly undefined - -//----- (004D8070) -------------------------------------------------------- -int *__thiscall std::__cow_string::operator=(int *this, std::string *a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this, a2, v4); - return this; -} -// 4D80A4: variable 'v4' is possibly undefined - -//----- (004D80C0) -------------------------------------------------------- -void __thiscall std::__shared_ptr::__shared_ptr( - _DWORD *this, - _DWORD *a2) -{ - int v2; // eax - - v2 = a2[1]; - *this = *a2; - this[1] = v2; - if ( v2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v2); -} - -//----- (004D80E4) -------------------------------------------------------- -void __thiscall std::__shared_ptr::__shared_ptr( - int *this, - int *a2) -{ - int *v2; // ecx - int v3; // eax - - v2 = this + 1; - v3 = a2[1]; - *(v2 - 1) = *a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v2, v3); -} - -//----- (004D8100) -------------------------------------------------------- -int __thiscall std::__shared_ptr::__shared_ptr( - _DWORD *this, - _DWORD *a2) -{ - int result; // eax - - result = a2[1]; - *this = *a2; - this[1] = result; - if ( result ) - { - if ( _CRT_MT ) - _InterlockedIncrement((volatile signed __int32 *)(result + 4)); - else - ++*(_DWORD *)(result + 4); - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D8130) -------------------------------------------------------- -_DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( (_DWORD *)*result == result + 2 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - this[1] = v3; - *((_BYTE *)a2 + 8) = 0; - return result; -} - -//----- (004D8190) -------------------------------------------------------- -_BYTE *__userpurge std::__sso_string::__sso_string@( - int a1@, - std::__sso_string *this, - size_t Size, - unsigned int a4) -{ - _BYTE *result; // eax - char v6; // dl - unsigned int v7; // esi - size_t v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - result = (_BYTE *)(a1 + 8); - *(_DWORD *)a1 = a1 + 8; - if ( (std::__sso_string *)((char *)this + Size) ) - { - if ( !this ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - v8[0] = Size; - if ( Size > 0xF ) - { - result = std::string::_M_create(v8, 0); - *(_DWORD *)a1 = result; - *(_DWORD *)(a1 + 8) = v8[0]; - } - else - { - if ( Size == 1 ) - { - v6 = *(_BYTE *)this; - *(_DWORD *)(a1 + 4) = 1; - *(_BYTE *)(a1 + 8) = v6; - *(_BYTE *)(a1 + 9) = 0; - return result; - } - if ( !Size ) - { - *(_DWORD *)(a1 + 4) = 0; - *result = 0; - return result; - } - } - memcpy(result, this, Size); - v7 = v8[0]; - result = *(_BYTE **)a1; - *(_DWORD *)(a1 + 4) = v8[0]; - result[v7] = 0; - return result; -} -// 4D8190: using guessed type size_t var_10[4]; - -//----- (004D8250) -------------------------------------------------------- -_BYTE *__thiscall std::__sso_string::__sso_string(char *this, int a2) -{ - _BYTE *result; // eax - char *Src; // edi - size_t Size; // esi - char v6; // dl - unsigned int v7; // esi - unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - result = this + 8; - *(_DWORD *)this = this + 8; - Src = *(char **)a2; - Size = *(_DWORD *)(a2 + 4); - if ( Size + *(_DWORD *)a2 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - v8[0] = *(_DWORD *)(a2 + 4); - if ( Size > 0xF ) - { - result = std::string::_M_create(v8, 0); - *(_DWORD *)this = result; - *((_DWORD *)this + 2) = v8[0]; - } - else - { - if ( Size == 1 ) - { - v6 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v6; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = v8[0]; - result[v7] = 0; - return result; -} -// 4D8250: using guessed type unsigned int var_10[4]; - -//----- (004D8310) -------------------------------------------------------- -void __userpurge std::__sso_string::__sso_string( - _DWORD *a1@, - std::__sso_string *this, - const std::__sso_string *a3) -{ - void *v4; // edx - _BYTE *v5; // edi - size_t v6; // esi - void *v7; // eax - size_t v8[7]; // [esp+5Ch] [ebp+40h] BYREF - - v4 = a1 + 2; - *a1 = a1 + 2; - v5 = *(_BYTE **)this; - v6 = *((_DWORD *)this + 1); - if ( v6 + *(_DWORD *)this && !v5 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v8[0] = *((_DWORD *)this + 1); - if ( v6 > 0xF ) - { - v7 = std::string::_M_create(v8, 0); - *a1 = v7; - v4 = v7; - a1[2] = v8[0]; - goto LABEL_10; - } - if ( v6 != 1 ) - { - if ( !v6 ) - goto LABEL_6; -LABEL_10: - memcpy(v4, v5, v6); - v6 = v8[0]; - v4 = (void *)*a1; - goto LABEL_6; - } - *((_BYTE *)a1 + 8) = *v5; -LABEL_6: - a1[1] = v6; - *((_BYTE *)v4 + v6) = 0; -} -// 4D8310: using guessed type size_t anonymous_0[7]; - -//----- (004D83F0) -------------------------------------------------------- -_BYTE *__userpurge std::__sso_string::__sso_string@(int a1@, std::__sso_string **this, const std::string *a3) -{ - unsigned int v4; // [esp+8h] [ebp-14h] - - return std::__sso_string::__sso_string(a1, *this, *((_DWORD *)*this - 3), v4); -} -// 4D8403: variable 'v4' is possibly undefined - -//----- (004D8420) -------------------------------------------------------- -int __fastcall std::__sso_string::__sso_string(int a1) -{ - int result; // eax - - result = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - return result; -} - -//----- (004D8440) -------------------------------------------------------- -void __fastcall std::__sso_string::~__sso_string(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (004D8470) -------------------------------------------------------- -_DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int a2) -{ - _BYTE *v3; // eax - _BYTE *Src; // ecx - int v5; // edx - int v6; // ebp - - v3 = (_BYTE *)*this; - Src = *(_BYTE **)a2; - v5 = *(_DWORD *)(a2 + 4); - if ( *(_DWORD *)a2 != a2 + 8 ) - { - if ( v3 == (_BYTE *)(this + 2) ) - { - *this = Src; - this[1] = v5; - this[2] = *(_DWORD *)(a2 + 8); - } - else - { - *this = Src; - v6 = this[2]; - this[1] = v5; - this[2] = *(_DWORD *)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v6; - goto LABEL_5; - } - } - *(_DWORD *)a2 = a2 + 8; - v3 = (_BYTE *)(a2 + 8); - goto LABEL_5; - } - if ( v5 ) - { - if ( v5 == 1 ) - *v3 = *(_BYTE *)(a2 + 8); - else - memcpy(v3, Src, *(_DWORD *)(a2 + 4)); - v5 = *(_DWORD *)(a2 + 4); - v3 = (_BYTE *)*this; - } - this[1] = v5; - v3[v5] = 0; - v3 = *(_BYTE **)a2; -LABEL_5: - *(_DWORD *)(a2 + 4) = 0; - *v3 = 0; - return this; -} - -//----- (004D8520) -------------------------------------------------------- -void *__thiscall std::__sso_string::operator=(void *this, int a2) -{ - std::string::_M_assign((int)this, a2); - return this; -} - -//----- (004D8570) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) -{ - std::ctype::ctype(this, 0, 0, a3); - *this = &off_55FFB8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 55FFB8: using guessed type int (*off_55FFB8)(); - -//----- (004D8680) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) -{ - std::ctype_byname::ctype_byname(this, *a2, a3); -} - -//----- (004D8690) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) -{ - std::ctype_byname::ctype_byname(this, *a2, a3); -} - -//----- (004D86A0) -------------------------------------------------------- -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block) -{ - *Block = &off_55FFB8; - std::ctype::~ctype((int)Block); - operator delete(Block); -} -// 55FFB8: using guessed type int (*off_55FFB8)(); - -//----- (004D86C0) -------------------------------------------------------- -void __fastcall std::ctype_byname::~ctype_byname(int a1) -{ - *(_DWORD *)a1 = &off_55FFB8; - std::ctype::~ctype(a1); -} -// 55FFB8: using guessed type int (*off_55FFB8)(); - -//----- (004D86D0) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560A98; - this[2] = std::locale::facet::_S_get_c_locale(); - *((_BYTE *)this + 12) = 0; - std::ctype::_M_initialize_ctype((int)this); - *this = &off_55FFE8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - std::ctype::_M_initialize_ctype((int)this); - } - } -} -// 55FFE8: using guessed type int (*off_55FFE8)(); -// 560A98: using guessed type int (*off_560A98)(); - -//----- (004D8830) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) -{ - std::ctype_byname::ctype_byname(this, *a2, a3); -} - -//----- (004D8840) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) -{ - std::ctype_byname::ctype_byname(this, *a2, a3); -} - -//----- (004D8850) -------------------------------------------------------- -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560A98; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - *Block = &unk_56089C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4D8894: variable 'lpfctx' is possibly undefined -// 560A98: using guessed type int (*off_560A98)(); - -//----- (004D88B0) -------------------------------------------------------- -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560A98; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_56089C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D88F4: variable 'lpfctx' is possibly undefined -// 560A98: using guessed type int (*off_560A98)(); - -//----- (004D8910) -------------------------------------------------------- -void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_55FF90; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_560028; -} -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); - -//----- (004D89A0) -------------------------------------------------------- -void __thiscall std::domain_error::domain_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_55FF90; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_560028; -} -// 4D89F4: variable 'v2' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); - -//----- (004D8A40) -------------------------------------------------------- -void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_55FF90; - std::string::string(a1 + 1, this, v3); - *a1 = &off_560028; -} -// 4D8A88: variable 'v3' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); - -//----- (004D8AD0) -------------------------------------------------------- -void __fastcall std::domain_error::~domain_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_560028; - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4D8ADC: variable 'Block' is possibly undefined -// 560028: using guessed type void (__cdecl *off_560028)(std::domain_error *__hidden this); - -//----- (004D8AF0) -------------------------------------------------------- -void __cdecl std::domain_error::~domain_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_55FF90; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4D8AFB: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 4D8AF0: using guessed type int var_D[3]; - -//----- (004D8B50) -------------------------------------------------------- -void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_55FF90; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_56003C; -} -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); - -//----- (004D8BE0) -------------------------------------------------------- -void __thiscall std::length_error::length_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_55FF90; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_56003C; -} -// 4D8C34: variable 'v2' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); - -//----- (004D8C80) -------------------------------------------------------- -void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_55FF90; - std::string::string(a1 + 1, this, v3); - *a1 = &off_56003C; -} -// 4D8CC8: variable 'v3' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); - -//----- (004D8D10) -------------------------------------------------------- -void __fastcall std::length_error::~length_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_56003C; - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4D8D1C: variable 'Block' is possibly undefined -// 56003C: using guessed type void (__cdecl *off_56003C)(std::length_error *__hidden this); - -//----- (004D8D30) -------------------------------------------------------- -void __cdecl std::length_error::~length_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_55FF90; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4D8D3B: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 4D8D30: using guessed type int var_D[3]; - -//----- (004D8D90) -------------------------------------------------------- -void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_55FF90; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_560050; -} -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); - -//----- (004D8E20) -------------------------------------------------------- -void __thiscall std::out_of_range::out_of_range(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_55FF90; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_560050; -} -// 4D8E74: variable 'v2' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); - -//----- (004D8EC0) -------------------------------------------------------- -void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_55FF90; - std::string::string(a1 + 1, this, v3); - *a1 = &off_560050; -} -// 4D8F08: variable 'v3' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); - -//----- (004D8F50) -------------------------------------------------------- -void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_560050; - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4D8F5C: variable 'Block' is possibly undefined -// 560050: using guessed type void (__cdecl *off_560050)(std::out_of_range *__hidden this); - -//----- (004D8F70) -------------------------------------------------------- -void __cdecl std::out_of_range::~out_of_range(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_55FF90; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4D8F7B: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 4D8F70: using guessed type int var_D[3]; - -//----- (004D8FD0) -------------------------------------------------------- -void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, char *Str) -{ - int (__thiscall *v4)(int, int, int); // eax - unsigned int *v5; // eax - void *v6; // edx - size_t v7; // eax - unsigned int *v8; // eax - void *v9; // edx - void *Block[2]; // [esp+68h] [ebp-50h] BYREF - int v12[4]; // [esp+70h] [ebp-48h] BYREF - void *v13[2]; // [esp+80h] [ebp-38h] BYREF - int v14[4]; // [esp+88h] [ebp-30h] BYREF - void *v15[2]; // [esp+98h] [ebp-20h] BYREF - char v16[24]; // [esp+A0h] [ebp-18h] BYREF - - v4 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)a3 + 16); - if ( v4 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) - { - v15[1] = 0; - v15[0] = v16; - v16[0] = 0; - if ( a2 == 1 ) - std::string::_M_replace((unsigned int *)v15, 0, 0, "iostream error", 0xEu); - else - std::string::_M_replace((unsigned int *)v15, 0, 0, "Unknown error", 0xDu); - } - else - { - ((void (__cdecl *)(int, int))v4)(a3, a2); - } - v5 = std::string::_M_replace((unsigned int *)v15, 0, 0, ": ", 2u); - v13[0] = v14; - if ( (unsigned int *)*v5 == v5 + 2 ) - { - v14[0] = v5[2]; - v14[1] = v5[3]; - v14[2] = v5[4]; - v14[3] = v5[5]; - } - else - { - v13[0] = (void *)*v5; - v14[0] = v5[2]; - } - v6 = (void *)v5[1]; - *((_BYTE *)v5 + 8) = 0; - v13[1] = v6; - *v5 = (unsigned int)(v5 + 2); - v5[1] = 0; - v7 = strlen(Str); - v8 = std::string::_M_replace((unsigned int *)v13, 0, 0, Str, v7); - Block[0] = v12; - if ( (unsigned int *)*v8 == v8 + 2 ) - { - v12[0] = v8[2]; - v12[1] = v8[3]; - v12[2] = v8[4]; - v12[3] = v8[5]; - } - else - { - Block[0] = (void *)*v8; - v12[0] = v8[2]; - } - v9 = (void *)v8[1]; - *((_BYTE *)v8 + 8) = 0; - Block[1] = v9; - *v8 = (unsigned int)(v8 + 2); - v8[1] = 0; - std::runtime_error::runtime_error(this, (int)Block); - if ( Block[0] != v12 ) - operator delete(Block[0]); - if ( v13[0] != v14 ) - operator delete(v13[0]); - if ( v15[0] != v16 ) - operator delete(v15[0]); - *this = &off_560064; - this[2] = a2; - this[3] = a3; -} -// 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); - -//----- (004D9310) -------------------------------------------------------- -void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, int a4) -{ - int (__thiscall *v4)(int, int, int); // eax - int *v5; // eax - unsigned int v6; // ebx - unsigned int v7; // eax - unsigned int v8; // edx - unsigned int *v9; // eax - _BYTE *Src; // [esp+14h] [ebp-B4h] - _BYTE *Size; // [esp+28h] [ebp-A0h] - void *Block[2]; // [esp+68h] [ebp-60h] BYREF - int v14[4]; // [esp+70h] [ebp-58h] BYREF - void *v15; // [esp+80h] [ebp-48h] BYREF - size_t v16; // [esp+84h] [ebp-44h] - int v17[4]; // [esp+88h] [ebp-40h] BYREF - void *v18; // [esp+98h] [ebp-30h] BYREF - size_t v19; // [esp+9Ch] [ebp-2Ch] - int v20[10]; // [esp+A0h] [ebp-28h] BYREF - - v4 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)a3 + 16); - if ( v4 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) - { - LOBYTE(v20[0]) = 0; - v18 = v20; - v19 = 0; - if ( a2 == 1 ) - std::string::_M_replace((unsigned int *)&v18, 0, 0, "iostream error", 0xEu); - else - std::string::_M_replace((unsigned int *)&v18, 0, 0, "Unknown error", 0xDu); - } - else - { - ((void (__cdecl *)(int, int))v4)(a3, a2); - } - v15 = v17; - Size = *(_BYTE **)(a4 + 4); - Src = *(_BYTE **)a4; - if ( &Size[*(_DWORD *)a4] && !*(_DWORD *)a4 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Block[0] = *(void **)(a4 + 4); - if ( (unsigned int)Size > 0xF ) - { - v5 = (int *)std::string::_M_create((unsigned int *)Block, 0); - v15 = v5; - v17[0] = (int)Block[0]; -LABEL_29: - memcpy(v5, Src, (size_t)Size); - Size = Block[0]; - v5 = (int *)v15; - goto LABEL_9; - } - if ( Size == (_BYTE *)1 ) - { - LOBYTE(v17[0]) = *Src; - v5 = v17; - goto LABEL_9; - } - v5 = v17; - if ( Size ) - goto LABEL_29; -LABEL_9: - v16 = (size_t)Size; - Size[(_DWORD)v5] = 0; - if ( v16 == 0x3FFFFFFF || v16 == 1073741822 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v15, ": ", 2u); - v6 = v16 + v19; - v7 = 15; - v8 = 15; - if ( v15 != v17 ) - v8 = v17[0]; - if ( v6 <= v8 ) - goto LABEL_16; - if ( v18 != v20 ) - v7 = v20[0]; - if ( v6 <= v7 ) - v9 = std::string::_M_replace((unsigned int *)&v18, 0, 0, (char *)v15, v16); - else -LABEL_16: - v9 = std::string::_M_append(&v15, v18, v19); - Block[0] = v14; - if ( (unsigned int *)*v9 == v9 + 2 ) - { - v14[0] = v9[2]; - v14[1] = v9[3]; - v14[2] = v9[4]; - v14[3] = v9[5]; - } - else - { - Block[0] = (void *)*v9; - v14[0] = v9[2]; - } - Block[1] = (void *)v9[1]; - *v9 = (unsigned int)(v9 + 2); - *((_BYTE *)v9 + 8) = 0; - v9[1] = 0; - std::runtime_error::runtime_error(this, (int)Block); - if ( Block[0] != v14 ) - operator delete(Block[0]); - if ( v15 != v17 ) - operator delete(v15); - if ( v18 != v20 ) - operator delete(v18); - this[2] = a2; - this[3] = a3; - *this = &off_560064; -} -// 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); - -//----- (004D9780) -------------------------------------------------------- -void __fastcall std::system_error::~system_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_560064; - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4D978C: variable 'Block' is possibly undefined -// 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); - -//----- (004D97A0) -------------------------------------------------------- -void __cdecl std::system_error::~system_error(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560064; - std::runtime_error::~runtime_error(a1); -} -// 4D97A0: variable 'v1' is possibly undefined -// 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); - -//----- (004D97B0) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - char a10) -{ - int result; // eax - - switch ( a10 ) - { - case 'd': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'x': - case 'y': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'm': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 't': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'w': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - } - return result; -} - -//----- (004D9920) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - char a10) -{ - int result; // eax - - switch ( a10 ) - { - case 'd': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'x': - case 'y': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'm': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 't': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'w': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - } - return result; -} - -//----- (004D9A90) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - char a10) -{ - int result; // eax - - switch ( a10 ) - { - case 'd': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'x': - case 'y': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'm': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 't': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'w': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - } - return result; -} - -//----- (004D9C00) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - char a10) -{ - int result; // eax - - switch ( a10 ) - { - case 'd': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'x': - case 'y': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'm': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 't': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'w': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - } - return result; -} - -//----- (004D9D70) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_get( - int a1, - int a2, - __int64 a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - int a9, - _DWORD *a10) -{ - int v11; // ecx - int v12; // eax - void (__cdecl *v13)(_DWORD *); // eax - int v14; // eax - const std::string *v15; // [esp+4h] [ebp-74h] - __int64 lpuexcpt; // [esp+20h] [ebp-58h] - int v17; // [esp+6Bh] [ebp-Dh] BYREF - _DWORD v18[3]; // [esp+6Ch] [ebp-Ch] BYREF - __int64 v19; // [esp+88h] [ebp+10h] - - if ( a9 ) - return ((__int64 (__thiscall *)(int, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, int))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - HIDWORD(a3), - a4, - a5, - a6, - a7, - a8, - a9); - v18[0] = std::string::_S_construct(0, 0); - v19 = ((__int64 (__thiscall *)(int, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, _DWORD *))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - HIDWORD(a3), - a4, - a5, - a6, - a7, - a8, - v18); - if ( *a8 ) - { - v11 = v18[0]; - } - else - { - v13 = (void (__cdecl *)(_DWORD *))a10[6]; - if ( v13 ) - v13(a10); - std::string::string(a10, (std::string *)v18, v15); - v11 = v18[0]; - v14 = *(_DWORD *)(v18[0] - 12); - a10[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a10[1] = v14; - } - lpuexcpt = v19; - if ( _CRT_MT ) - { - v12 = _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF); - } - else - { - v12 = *(_DWORD *)(v11 - 4); - *(_DWORD *)(v11 - 4) = v12 - 1; - } - if ( v12 <= 0 ) - std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)&v17); - return lpuexcpt; -} -// 4D9F09: variable 'v15' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004D9F70) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_get( - int a1, - int *a2, - __int64 a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - int a9, - _DWORD *a10) -{ - int v10; // edx - __int64 (__thiscall *v12)(int *, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, void **); // eax - void (__cdecl *v13)(_DWORD *); // eax - _BYTE *v14; // ebx - unsigned int v15; // ecx - _BYTE *v16; // eax - __int64 Size; // [esp+20h] [ebp-68h] - size_t Sizea; // [esp+20h] [ebp-68h] - unsigned int v19; // [esp+64h] [ebp-24h] BYREF - void *Block; // [esp+68h] [ebp-20h] BYREF - unsigned int v21; // [esp+6Ch] [ebp-1Ch] - char v22[20]; // [esp+70h] [ebp-18h] BYREF - __int64 v23; // [esp+98h] [ebp+10h] - - v10 = *a2; - if ( a9 ) - return ((__int64 (__thiscall *)(int *, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, int))*(_DWORD *)(v10 + 8))( - a2, - a3, - HIDWORD(a3), - a4, - a5, - a6, - a7, - a8, - a9); - Block = v22; - v12 = *(__int64 (__thiscall **)(int *, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, void **))(v10 + 12); - v21 = 0; - v22[0] = 0; - v23 = v12(a2, a3, HIDWORD(a3), a4, a5, a6, a7, a8, &Block); - if ( !*a8 ) - { - v13 = (void (__cdecl *)(_DWORD *))a10[6]; - if ( v13 ) - v13(a10); - v14 = Block; - v15 = v21; - v16 = a10 + 2; - *a10 = a10 + 2; - Sizea = v15; - if ( &v14[v15] && !v14 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v19 = v15; - if ( v15 > 0xF ) - { - v16 = std::string::_M_create(&v19, 0); - *a10 = v16; - a10[2] = v19; - } - else - { - if ( v15 == 1 ) - { - *((_BYTE *)a10 + 8) = *v14; -LABEL_15: - a10[1] = Sizea; - v16[Sizea] = 0; - a10[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - goto LABEL_5; - } - if ( !v15 ) - goto LABEL_15; - } - memcpy(v16, v14, Sizea); - Sizea = v19; - v16 = (_BYTE *)*a10; - goto LABEL_15; - } -LABEL_5: - Size = v23; - if ( Block != v22 ) - operator delete(Block); - return Size; -} - -//----- (004DA1E0) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__money_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - unsigned __int8 a7, - int a8, - _DWORD *a9, - int a10, - _DWORD *a11) -{ - int v12; // ecx - int v13; // eax - void (__cdecl *v14)(_DWORD *); // eax - int v15; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-58h] - int v17; // [esp+7Bh] [ebp-Dh] BYREF - _DWORD v18[2]; // [esp+7Ch] [ebp-Ch] BYREF - - if ( a10 ) - return (struct _Unwind_Exception *)(*(unsigned int (__thiscall **)(int, int, int, int, int, _DWORD, int, _DWORD *, int))(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - a10); - v18[0] = std::wstring::_S_construct(0, 0); - lpuexcpt = (struct _Unwind_Exception *)(*(unsigned int (__thiscall **)(int, int, int, int, int, _DWORD, int, _DWORD *, _DWORD *))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - v18); - if ( *a9 ) - { - v12 = v18[0]; - } - else - { - v14 = (void (__cdecl *)(_DWORD *))a11[6]; - if ( v14 ) - v14(a11); - std::wstring::basic_string(a11, v18); - v12 = v18[0]; - v15 = *(_DWORD *)(v18[0] - 12); - a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a11[1] = v15; - } - if ( _CRT_MT ) - { - v13 = _InterlockedExchangeAdd((volatile signed __int32 *)(v12 - 4), 0xFFFFFFFF); - } - else - { - v13 = *(_DWORD *)(v12 - 4); - *(_DWORD *)(v12 - 4) = v13 - 1; - } - if ( v13 <= 0 ) - std::wstring::_Rep::_M_destroy((void *)(v12 - 12), (int)&v17); - return lpuexcpt; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DA400) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__money_get( - int a1, - int *a2, - int a3, - int a4, - int a5, - int a6, - unsigned __int8 a7, - int a8, - _DWORD *a9, - int a10, - _DWORD *a11) -{ - int v11; // edx - __int64 (__thiscall *v13)(int *, int, int, int, int, _DWORD, int, _DWORD *, void **); // eax - void (__cdecl *v14)(_DWORD *); // eax - int v15; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-68h] - void *Block; // [esp+78h] [ebp-20h] BYREF - int v18; // [esp+7Ch] [ebp-1Ch] - __int16 v19[10]; // [esp+80h] [ebp-18h] BYREF - - v11 = *a2; - if ( a10 ) - return (struct _Unwind_Exception *)(*(unsigned int (__thiscall **)(int *, int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - a10); - Block = v19; - v19[0] = 0; - v13 = *(__int64 (__thiscall **)(int *, int, int, int, int, _DWORD, int, _DWORD *, void **))(v11 + 12); - v18 = 0; - lpuexcpt = (struct _Unwind_Exception *)v13(a2, a3, a4, a5, a6, a7, a8, a9, &Block); - if ( !*a9 ) - { - v14 = (void (__cdecl *)(_DWORD *))a11[6]; - if ( v14 ) - v14(a11); - v15 = v18; - *a11 = a11 + 2; - std::wstring::_M_construct(a11, Block, (int)Block + 2 * v15); - a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - } - if ( Block != v19 ) - operator delete(Block); - return lpuexcpt; -} - -//----- (004DA5D0) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_put( - int a1, - int a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - char a7, - long double a8, - int a9) -{ - int v9; // ecx - int v10; // eax - __int64 lpuexcpt; // [esp+20h] [ebp-58h] - char v14; // [esp+6Bh] [ebp-Dh] BYREF - _DWORD v15[2]; // [esp+6Ch] [ebp-Ch] BYREF - - if ( !a9 ) - return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - LODWORD(a8), - DWORD1(a8), - HIDWORD(a8)); - if ( !*(_DWORD *)(a9 + 24) ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::string::string(v15, *(unsigned __int8 **)a9, *(_DWORD *)(a9 + 4), (int)&v14); - lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD *))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - v15); - v9 = v15[0]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; -LABEL_8: - std::string::_Rep::_M_destroy((void *)(v9 - 12), (int)&v14); - return lpuexcpt; - } - v10 = *(_DWORD *)(v15[0] - 4); - *(_DWORD *)(v15[0] - 4) = v10 - 1; - if ( v10 <= 0 ) - goto LABEL_8; - return lpuexcpt; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DA780) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_put( - int a1, - int a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - char a7, - long double a8, - int a9) -{ - __int64 lpuexcpt; // [esp+20h] [ebp-68h] - void *Block[2]; // [esp+68h] [ebp-20h] BYREF - char v13[20]; // [esp+70h] [ebp-18h] BYREF - - if ( !a9 ) - return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - LODWORD(a8), - DWORD1(a8), - HIDWORD(a8)); - if ( !*(_DWORD *)(a9 + 24) ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - Block[0] = v13; - std::string::_M_construct(Block, *(_BYTE **)a9, *(_DWORD *)a9 + *(_DWORD *)(a9 + 4)); - lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, void **))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - Block); - if ( Block[0] != v13 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (004DA900) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_put( - int a1, - int a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - unsigned __int16 a7, - long double a8, - int a9) -{ - int v9; // ecx - int v10; // eax - __int64 lpuexcpt; // [esp+20h] [ebp-58h] - char v14; // [esp+6Bh] [ebp-Dh] BYREF - _DWORD v15[2]; // [esp+6Ch] [ebp-Ch] BYREF - - if ( !a9 ) - return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - LODWORD(a8), - DWORD1(a8), - HIDWORD(a8)); - if ( !*(_DWORD *)(a9 + 24) ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::wstring::basic_string(v15, *(_WORD **)a9, *(_DWORD *)(a9 + 4), (int)&v14); - lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD *))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - v15); - v9 = v15[0]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; -LABEL_8: - std::wstring::_Rep::_M_destroy((void *)(v9 - 12), (int)&v14); - return lpuexcpt; - } - v10 = *(_DWORD *)(v15[0] - 4); - *(_DWORD *)(v15[0] - 4) = v10 - 1; - if ( v10 <= 0 ) - goto LABEL_8; - return lpuexcpt; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DAAB0) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_put( - int a1, - int a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - unsigned __int16 a7, - long double a8, - int a9) -{ - __int64 lpuexcpt; // [esp+20h] [ebp-68h] - void *Block[2]; // [esp+68h] [ebp-20h] BYREF - char v13[20]; // [esp+70h] [ebp-18h] BYREF - - if ( !a9 ) - return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - LODWORD(a8), - DWORD1(a8), - HIDWORD(a8)); - if ( !*(_DWORD *)(a9 + 24) ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - Block[0] = v13; - std::wstring::_M_construct(Block, *(_WORD **)a9, *(_DWORD *)a9 + 2 * *(_DWORD *)(a9 + 4)); - lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, void **))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - Block); - if ( Block[0] != v13 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (004DAC30) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *Block = &off_55F370; - v3 = (volatile signed __int32 *)Block[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_560BE0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4DAC93: variable 'lpfctx' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F370: using guessed type int (*off_55F370)(); -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (004DACC0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *Block = &off_55F38C; - v3 = (volatile signed __int32 *)Block[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_55FC68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4DAD23: variable 'lpfctx' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F38C: using guessed type int (*off_55F38C)(); -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (004DAD50) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *a1 = &off_55F370; - v3 = (volatile signed __int32 *)a1[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *a1 = &off_560BE0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4DADB3: variable 'lpfctx' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F370: using guessed type int (*off_55F370)(); -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (004DADE0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *a1 = &off_55F38C; - v3 = (volatile signed __int32 *)a1[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *a1 = &off_55FC68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4DAE43: variable 'lpfctx' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F38C: using guessed type int (*off_55F38C)(); -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (004DAE70) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *Block = &off_55F3A8; - v3 = (volatile signed __int32 *)Block[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_560BFC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4DAED3: variable 'lpfctx' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F3A8: using guessed type int (*off_55F3A8)(); -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (004DAF00) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *Block = &off_55F3C4; - v3 = (volatile signed __int32 *)Block[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_55FC84; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4DAF63: variable 'lpfctx' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F3C4: using guessed type int (*off_55F3C4)(); -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (004DAF90) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *a1 = &off_55F3A8; - v3 = (volatile signed __int32 *)a1[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *a1 = &off_560BFC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4DAFF3: variable 'lpfctx' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F3A8: using guessed type int (*off_55F3A8)(); -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (004DB020) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *a1 = &off_55F3C4; - v3 = (volatile signed __int32 *)a1[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *a1 = &off_55FC84; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4DB083: variable 'lpfctx' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F3C4: using guessed type int (*off_55F3C4)(); -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (004DB0B0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *Block = &off_55F3E0; - v3 = (volatile signed __int32 *)Block[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::messages::~messages(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F3E0: using guessed type int (*off_55F3E0)(); - -//----- (004DB100) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *Block = &off_55F3FC; - v3 = (volatile signed __int32 *)Block[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::messages::~messages(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F3FC: using guessed type int (*off_55F3FC)(); - -//----- (004DB150) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *a1 = &off_55F3E0; - v3 = (volatile signed __int32 *)a1[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::messages::~messages(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F3E0: using guessed type int (*off_55F3E0)(); - -//----- (004DB1A0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *a1 = &off_55F3FC; - v3 = (volatile signed __int32 *)a1[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::messages::~messages(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F3FC: using guessed type int (*off_55F3FC)(); - -//----- (004DB1F0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *Block = &off_55F418; - v3 = (volatile signed __int32 *)Block[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::messages::~messages(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F418: using guessed type int (*off_55F418)(); - -//----- (004DB240) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *Block = &off_55F434; - v3 = (volatile signed __int32 *)Block[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::messages::~messages(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F434: using guessed type int (*off_55F434)(); - -//----- (004DB290) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *a1 = &off_55F418; - v3 = (volatile signed __int32 *)a1[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::messages::~messages(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F418: using guessed type int (*off_55F418)(); - -//----- (004DB2E0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *a1 = &off_55F434; - v3 = (volatile signed __int32 *)a1[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::messages::~messages(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F434: using guessed type int (*off_55F434)(); - -//----- (004DB330) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = Block[4]; - *Block = &off_55F450; - v3 = (volatile signed __int32 *)Block[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F450: using guessed type int (*off_55F450)(); - -//----- (004DB390) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = Block[4]; - *Block = &off_55F474; - v3 = (volatile signed __int32 *)Block[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F474: using guessed type int (*off_55F474)(); - -//----- (004DB3F0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = a1[4]; - *a1 = &off_55F450; - v3 = (volatile signed __int32 *)a1[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::numpunct::~numpunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F450: using guessed type int (*off_55F450)(); - -//----- (004DB440) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = a1[4]; - *a1 = &off_55F474; - v3 = (volatile signed __int32 *)a1[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::numpunct::~numpunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F474: using guessed type int (*off_55F474)(); - -//----- (004DB490) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = Block[4]; - *Block = &off_55F498; - v3 = (volatile signed __int32 *)Block[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F498: using guessed type int (*off_55F498)(); - -//----- (004DB4F0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = Block[4]; - *Block = &off_55F4BC; - v3 = (volatile signed __int32 *)Block[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F4BC: using guessed type int (*off_55F4BC)(); - -//----- (004DB550) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = a1[4]; - *a1 = &off_55F498; - v3 = (volatile signed __int32 *)a1[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::numpunct::~numpunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F498: using guessed type int (*off_55F498)(); - -//----- (004DB5A0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = a1[4]; - *a1 = &off_55F4BC; - v3 = (volatile signed __int32 *)a1[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::numpunct::~numpunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F4BC: using guessed type int (*off_55F4BC)(); - -//----- (004DB5F0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F4E0; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_560D94; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DB623: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F4E0: using guessed type int (*off_55F4E0)(); -// 560D94: using guessed type int (*off_560D94)(); - -//----- (004DB650) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F508; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_55FD20; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DB683: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F508: using guessed type int (*off_55F508)(); -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (004DB6B0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F4E0; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_560D94; - std::locale::facet::~facet(a1); -} -// 4DB6B1: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F4E0: using guessed type int (*off_55F4E0)(); -// 560D94: using guessed type int (*off_560D94)(); - -//----- (004DB700) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F508; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_55FD20; - std::locale::facet::~facet(a1); -} -// 4DB701: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F508: using guessed type int (*off_55F508)(); -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (004DB750) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F534; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_560DBC; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DB783: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F534: using guessed type int (*off_55F534)(); -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (004DB7B0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F55C; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_55FD4C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DB7E3: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F55C: using guessed type int (*off_55F55C)(); -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (004DB810) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F534; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_560DBC; - std::locale::facet::~facet(a1); -} -// 4DB811: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F534: using guessed type int (*off_55F534)(); -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (004DB860) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F55C; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_55FD4C; - std::locale::facet::~facet(a1); -} -// 4DB861: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F55C: using guessed type int (*off_55F55C)(); -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (004DB8B0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F588; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_560E54; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DB8E3: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F588: using guessed type int (*off_55F588)(); -// 560E54: using guessed type int (*off_560E54)(); - -//----- (004DB910) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F5A0; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_55FD78; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DB943: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F5A0: using guessed type int (*off_55F5A0)(); -// 55FD78: using guessed type int (*off_55FD78)(); - -//----- (004DB970) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F588; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_560E54; - std::locale::facet::~facet(a1); -} -// 4DB971: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F588: using guessed type int (*off_55F588)(); -// 560E54: using guessed type int (*off_560E54)(); - -//----- (004DB9C0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F5A0; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_55FD78; - std::locale::facet::~facet(a1); -} -// 4DB9C1: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F5A0: using guessed type int (*off_55F5A0)(); -// 55FD78: using guessed type int (*off_55FD78)(); - -//----- (004DBA10) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F5B8; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_560E6C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DBA43: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F5B8: using guessed type int (*off_55F5B8)(); -// 560E6C: using guessed type int (*off_560E6C)(); - -//----- (004DBA70) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F5D0; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_55FD90; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DBAA3: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F5D0: using guessed type int (*off_55F5D0)(); -// 55FD90: using guessed type int (*off_55FD90)(); - -//----- (004DBAD0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( - std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F5B8; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_560E6C; - std::locale::facet::~facet(a1); -} -// 4DBAD1: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F5B8: using guessed type int (*off_55F5B8)(); -// 560E6C: using guessed type int (*off_560E6C)(); - -//----- (004DBB20) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( - std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F5D0; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_55FD90; - std::locale::facet::~facet(a1); -} -// 4DBB21: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F5D0: using guessed type int (*off_55F5D0)(); -// 55FD90: using guessed type int (*off_55FD90)(); - -//----- (004DBB70) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F5E8; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_560E84; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DBBA3: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F5E8: using guessed type int (*off_55F5E8)(); -// 560E84: using guessed type int (*off_560E84)(); - -//----- (004DBBD0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F600; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_55FDA8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DBC03: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F600: using guessed type int (*off_55F600)(); -// 55FDA8: using guessed type int (*off_55FDA8)(); - -//----- (004DBC30) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F5E8; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_560E84; - std::locale::facet::~facet(a1); -} -// 4DBC31: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F5E8: using guessed type int (*off_55F5E8)(); -// 560E84: using guessed type int (*off_560E84)(); - -//----- (004DBC80) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F600; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_55FDA8; - std::locale::facet::~facet(a1); -} -// 4DBC81: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F600: using guessed type int (*off_55F600)(); -// 55FDA8: using guessed type int (*off_55FDA8)(); - -//----- (004DBCD0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F618; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_560E9C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DBD03: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F618: using guessed type int (*off_55F618)(); -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (004DBD30) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_55F630; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_55FDC0; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4DBD63: variable 'Blocka' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F630: using guessed type int (*off_55F630)(); -// 55FDC0: using guessed type int (*off_55FDC0)(); - -//----- (004DBD90) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( - std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F618; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_560E9C; - std::locale::facet::~facet(a1); -} -// 4DBD91: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F618: using guessed type int (*off_55F618)(); -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (004DBDE0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( - std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_55F630; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_55FDC0; - std::locale::facet::~facet(a1); -} -// 4DBDE1: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55F630: using guessed type int (*off_55F630)(); -// 55FDC0: using guessed type int (*off_55FDC0)(); - -//----- (004DBE30) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_55F648; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F648: using guessed type int (*off_55F648)(); - -//----- (004DBEA0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_55F67C; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F67C: using guessed type int (*off_55F67C)(); - -//----- (004DBF10) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_55F648; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F648: using guessed type int (*off_55F648)(); - -//----- (004DBF80) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_55F67C; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F67C: using guessed type int (*off_55F67C)(); - -//----- (004DBFF0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_55F6B0; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F6B0: using guessed type int (*off_55F6B0)(); - -//----- (004DC060) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_55F6E4; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F6E4: using guessed type int (*off_55F6E4)(); - -//----- (004DC0D0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_55F6B0; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F6B0: using guessed type int (*off_55F6B0)(); - -//----- (004DC140) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_55F6E4; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F6E4: using guessed type int (*off_55F6E4)(); - -//----- (004DC1B0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( - _DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_55F718; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F718: using guessed type int (*off_55F718)(); - -//----- (004DC220) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( - _DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_55F74C; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F74C: using guessed type int (*off_55F74C)(); - -//----- (004DC290) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_55F718; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F718: using guessed type int (*off_55F718)(); - -//----- (004DC300) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_55F74C; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F74C: using guessed type int (*off_55F74C)(); - -//----- (004DC370) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( - _DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_55F780; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F780: using guessed type int (*off_55F780)(); - -//----- (004DC3E0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( - _DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_55F7B4; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F7B4: using guessed type int (*off_55F7B4)(); - -//----- (004DC450) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_55F780; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F780: using guessed type int (*off_55F780)(); - -//----- (004DC4C0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_55F7B4; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 53E1E4: using guessed type int _CRT_MT; -// 55F7B4: using guessed type int (*off_55F7B4)(); - -//----- (004DC530) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *a1) -{ - int v1; // ecx - int v2; // eax - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v1 - 12), (int)v3); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4DC530: using guessed type int var_D[3]; - -//----- (004DC580) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block) -{ - if ( *Block != Block + 2 ) - operator delete(*Block); -} - -//----- (004DC5B0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *a1) -{ - int v1; // ecx - int v2; // eax - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - std::wstring::_Rep::_M_destroy((void *)(v1 - 12), (int)v3); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; -// 4DC5B0: using guessed type int var_D[3]; - -//----- (004DC600) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block) -{ - if ( *Block != Block + 2 ) - operator delete(*Block); -} - -//----- (004DC630) -------------------------------------------------------- -void __cdecl std::__facet_shims::__messages_get( - int a1, - int a2, - _DWORD *a3, - std::string *a4, - int a5, - int a6, - unsigned __int8 *a7, - size_t a8) -{ - void (__cdecl *v8)(_DWORD *); // eax - int v9; // ecx - int v10; // eax - int v11; // eax - int v12; // ecx - int v13; // eax - const std::string *v14; // [esp+4h] [ebp-74h] - _WORD v15[3]; // [esp+66h] [ebp-12h] BYREF - int v16[3]; // [esp+6Ch] [ebp-Ch] BYREF - - std::string::string(&v15[1], a7, a8, (int)v15); - (*(void (__thiscall **)(int *, int, std::string *, int, int, _WORD *))(*(_DWORD *)a2 + 12))( - v16, - a2, - a4, - a5, - a6, - &v15[1]); - v8 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v8 ) - v8(a3); - std::string::string(a3, (std::string *)v16, v14); - v9 = v16[0]; - v10 = *(_DWORD *)(v16[0] - 12); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a3[1] = v10; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v9 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_5: - v12 = *(_DWORD *)&v15[1]; - if ( !_CRT_MT ) - goto LABEL_6; - goto LABEL_10; - } - } - else - { - v11 = *(_DWORD *)(v9 - 4); - *(_DWORD *)(v9 - 4) = v11 - 1; - if ( v11 > 0 ) - goto LABEL_5; - } - std::string::_Rep::_M_destroy((void *)(v9 - 12), (int)v15 + 1); - v12 = *(_DWORD *)&v15[1]; - if ( !_CRT_MT ) - { -LABEL_6: - v13 = *(_DWORD *)(v12 - 4); - *(_DWORD *)(v12 - 4) = v13 - 1; - if ( v13 > 0 ) - return; -LABEL_11: - std::string::_Rep::_M_destroy((void *)(v12 - 12), (int)v16); - return; - } -LABEL_10: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v12 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_11; -} -// 4DC6E4: variable 'v14' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DC7F0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__messages_get( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6, - _BYTE *a7, - int a8) -{ - void (__cdecl *v8)(_DWORD *); // eax - _BYTE *v9; // edx - void *v10; // eax - char *v11; // eax - void *Src; // [esp+24h] [ebp-84h] - int Size; // [esp+28h] [ebp-80h] - int v14; // [esp+6Ch] [ebp-3Ch] BYREF - void *v15[2]; // [esp+70h] [ebp-38h] BYREF - char v16[16]; // [esp+78h] [ebp-30h] BYREF - void *Block; // [esp+88h] [ebp-20h] BYREF - unsigned int v18; // [esp+8Ch] [ebp-1Ch] - char v19; // [esp+90h] [ebp-18h] BYREF - - v15[0] = v16; - std::string::_M_construct(v15, a7, (int)&a7[a8]); - (*(void (__thiscall **)(void **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(&Block, a2, a4, a5, a6, v15); - v8 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v8 ) - v8(a3); - v9 = Block; - v10 = a3 + 2; - *a3 = a3 + 2; - Src = v9; - Size = v18; - if ( &v9[v18] && !v9 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v14 = v18; - if ( v18 > 0xF ) - { - v10 = std::string::_M_create((unsigned int *)&v14, 0); - *a3 = v10; - a3[2] = v14; -LABEL_16: - memcpy(v10, Src, Size); - Size = v14; - v10 = (void *)*a3; - goto LABEL_8; - } - if ( v18 == 1 ) - { - *((_BYTE *)a3 + 8) = *v9; - goto LABEL_8; - } - if ( v18 ) - goto LABEL_16; -LABEL_8: - a3[1] = Size; - *((_BYTE *)v10 + Size) = 0; - v11 = (char *)Block; - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - if ( v11 != &v19 ) - operator delete(v11); - if ( v15[0] != v16 ) - operator delete(v15[0]); -} - -//----- (004DCA00) -------------------------------------------------------- -void __cdecl std::__facet_shims::__messages_get( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6, - _WORD *a7, - int a8) -{ - void (__cdecl *v8)(_DWORD *); // eax - int v9; // ecx - int v10; // eax - int v11; // eax - int v12; // ecx - int v13; // eax - _WORD v14[3]; // [esp+66h] [ebp-12h] BYREF - int v15[3]; // [esp+6Ch] [ebp-Ch] BYREF - - std::wstring::basic_string(&v14[1], a7, a8, (int)v14); - (*(void (__thiscall **)(int *, int, int, int, int, _WORD *))(*(_DWORD *)a2 + 12))(v15, a2, a4, a5, a6, &v14[1]); - v8 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v8 ) - v8(a3); - std::wstring::basic_string(a3, v15); - v9 = v15[0]; - v10 = *(_DWORD *)(v15[0] - 12); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a3[1] = v10; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v9 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_5: - v12 = *(_DWORD *)&v14[1]; - if ( !_CRT_MT ) - goto LABEL_6; - goto LABEL_10; - } - } - else - { - v11 = *(_DWORD *)(v9 - 4); - *(_DWORD *)(v9 - 4) = v11 - 1; - if ( v11 > 0 ) - goto LABEL_5; - } - std::wstring::_Rep::_M_destroy((void *)(v9 - 12), (int)v14 + 1); - v12 = *(_DWORD *)&v14[1]; - if ( !_CRT_MT ) - { -LABEL_6: - v13 = *(_DWORD *)(v12 - 4); - *(_DWORD *)(v12 - 4) = v13 - 1; - if ( v13 > 0 ) - return; -LABEL_11: - std::wstring::_Rep::_M_destroy((void *)(v12 - 12), (int)v15); - return; - } -LABEL_10: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v12 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_11; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DCBC0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__messages_get( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6, - _WORD *a7, - int a8) -{ - void (__cdecl *v8)(_DWORD *); // eax - void *v9[2]; // [esp+60h] [ebp-38h] BYREF - char v10[16]; // [esp+68h] [ebp-30h] BYREF - void *Block[2]; // [esp+78h] [ebp-20h] BYREF - char v12; // [esp+80h] [ebp-18h] BYREF - - v9[0] = v10; - std::wstring::_M_construct(v9, a7, (int)&a7[a8]); - (*(void (__thiscall **)(void **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(Block, a2, a4, a5, a6, v9); - v8 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v8 ) - v8(a3); - *a3 = a3 + 2; - std::wstring::_M_construct(a3, (_WORD *)Block[0], (int)Block[0] + 2 * (int)Block[1]); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - if ( Block[0] != &v12 ) - operator delete(Block[0]); - if ( v9[0] != v10 ) - operator delete(v9[0]); -} - -//----- (004DCD20) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open( - int a1, - int a2, - unsigned __int8 *a3, - size_t a4, - int a5) -{ - int v5; // eax - int v6; // ecx - int v7; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - char v10; // [esp+5Bh] [ebp-Dh] BYREF - _DWORD v11[3]; // [esp+5Ch] [ebp-Ch] BYREF - - std::string::string(v11, a3, a4, (int)&v10); - v5 = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v11, a5); - v6 = v11[0]; - lpuexcpt = (struct _Unwind_Exception *)v5; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11[0] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; - } - else - { - v7 = *(_DWORD *)(v11[0] - 4); - *(_DWORD *)(v11[0] - 4) = v7 - 1; - if ( v7 > 0 ) - return lpuexcpt; - } - std::string::_Rep::_M_destroy((void *)(v6 - 12), (int)&v10); - return lpuexcpt; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DCE30) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v8[24]; // [esp+60h] [ebp-18h] BYREF - - Block[0] = v8; - std::string::_M_construct(Block, a3, (int)&a3[a4]); - lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, Block, a5); - if ( Block[0] != v8 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (004DCF00) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open( - int a1, - int a2, - unsigned __int8 *a3, - size_t a4, - int a5) -{ - int v5; // eax - int v6; // ecx - int v7; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - char v10; // [esp+5Bh] [ebp-Dh] BYREF - _DWORD v11[3]; // [esp+5Ch] [ebp-Ch] BYREF - - std::string::string(v11, a3, a4, (int)&v10); - v5 = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v11, a5); - v6 = v11[0]; - lpuexcpt = (struct _Unwind_Exception *)v5; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11[0] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; - } - else - { - v7 = *(_DWORD *)(v11[0] - 4); - *(_DWORD *)(v11[0] - 4) = v7 - 1; - if ( v7 > 0 ) - return lpuexcpt; - } - std::string::_Rep::_M_destroy((void *)(v6 - 12), (int)&v10); - return lpuexcpt; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DD010) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open( - int a1, - int a2, - _BYTE *a3, - int a4, - int a5) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v8[24]; // [esp+60h] [ebp-18h] BYREF - - Block[0] = v8; - std::string::_M_construct(Block, a3, (int)&a3[a4]); - lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, Block, a5); - if ( Block[0] != v8 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (004DD0E0) -------------------------------------------------------- -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) -{ - return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); -} - -//----- (004DD100) -------------------------------------------------------- -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) -{ - return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); -} - -//----- (004DD120) -------------------------------------------------------- -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) -{ - return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); -} - -//----- (004DD140) -------------------------------------------------------- -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) -{ - return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); -} - -//----- (004DD160) -------------------------------------------------------- -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) -{ - return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); -} - -//----- (004DD1A0) -------------------------------------------------------- -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) -{ - return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); -} - -//----- (004DD1E0) -------------------------------------------------------- -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) -{ - return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); -} - -//----- (004DD220) -------------------------------------------------------- -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) -{ - return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); -} - -//----- (004DD260) -------------------------------------------------------- -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, std::string *a4, int a5) -{ - void (__cdecl *v5)(_DWORD *); // eax - int v6; // ecx - int v7; // eax - int v8; // eax - const std::string *v9; // [esp+4h] [ebp-64h] - int v10; // [esp+5Bh] [ebp-Dh] BYREF - _DWORD v11[3]; // [esp+5Ch] [ebp-Ch] BYREF - - (*(void (__thiscall **)(_DWORD *, int, std::string *, int))(*(_DWORD *)a2 + 12))(v11, a2, a4, a5); - v5 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v5 ) - v5(a3); - std::string::string(a3, (std::string *)v11, v9); - v6 = v11[0]; - v7 = *(_DWORD *)(v11[0] - 12); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a3[1] = v7; - if ( !_CRT_MT ) - { - v8 = *(_DWORD *)(v6 - 4); - *(_DWORD *)(v6 - 4) = v8 - 1; - if ( v8 > 0 ) - return; -LABEL_7: - std::string::_Rep::_M_destroy((void *)(v6 - 12), (int)&v10); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v6 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_7; -} -// 4DD2E0: variable 'v9' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DD380) -------------------------------------------------------- -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) -{ - void (__cdecl *v5)(_DWORD *); // eax - _BYTE *v6; // edx - void *v7; // eax - char *v8; // eax - unsigned int v9; // edx - void *Src; // [esp+14h] [ebp-64h] - int Size; // [esp+18h] [ebp-60h] - unsigned int v12; // [esp+54h] [ebp-24h] BYREF - void *Block; // [esp+58h] [ebp-20h] BYREF - unsigned int v14; // [esp+5Ch] [ebp-1Ch] - char v15; // [esp+60h] [ebp-18h] BYREF - - (*(void (__thiscall **)(void **, int, int, int))(*(_DWORD *)a2 + 12))(&Block, a2, a4, a5); - v5 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v5 ) - v5(a3); - v6 = Block; - v7 = a3 + 2; - *a3 = a3 + 2; - Src = v6; - Size = v14; - if ( &v6[v14] && !v6 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v12 = v14; - if ( v14 > 0xF ) - { - v7 = std::string::_M_create(&v12, 0); - v9 = v12; - *a3 = v7; - a3[2] = v9; -LABEL_14: - memcpy(v7, Src, Size); - Size = v12; - v7 = (void *)*a3; - goto LABEL_8; - } - if ( v14 == 1 ) - { - *((_BYTE *)a3 + 8) = *v6; - goto LABEL_8; - } - if ( v14 ) - goto LABEL_14; -LABEL_8: - a3[1] = Size; - *((_BYTE *)v7 + Size) = 0; - v8 = (char *)Block; - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - if ( v8 != &v15 ) - operator delete(v8); -} - -//----- (004DD510) -------------------------------------------------------- -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) -{ - void (__cdecl *v5)(_DWORD *); // eax - int v6; // ecx - int v7; // eax - int v8; // eax - int v9; // [esp+5Bh] [ebp-Dh] BYREF - _DWORD v10[3]; // [esp+5Ch] [ebp-Ch] BYREF - - (*(void (__thiscall **)(_DWORD *, int, int, int))(*(_DWORD *)a2 + 12))(v10, a2, a4, a5); - v5 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v5 ) - v5(a3); - std::wstring::basic_string(a3, v10); - v6 = v10[0]; - v7 = *(_DWORD *)(v10[0] - 12); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a3[1] = v7; - if ( !_CRT_MT ) - { - v8 = *(_DWORD *)(v6 - 4); - *(_DWORD *)(v6 - 4) = v8 - 1; - if ( v8 > 0 ) - return; -LABEL_7: - std::wstring::_Rep::_M_destroy((void *)(v6 - 12), (int)&v9); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v6 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_7; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DD630) -------------------------------------------------------- -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) -{ - void (__cdecl *v5)(_DWORD *); // eax - void *v6; // edx - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v8; // [esp+60h] [ebp-18h] BYREF - - (*(void (__thiscall **)(void **, int, int, int))(*(_DWORD *)a2 + 12))(Block, a2, a4, a5); - v5 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v5 ) - v5(a3); - v6 = Block[1]; - *a3 = a3 + 2; - std::wstring::_M_construct(a3, (_WORD *)Block[0], (int)Block[0] + 2 * (_DWORD)v6); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - if ( Block[0] != &v8 ) - operator delete(Block[0]); -} - -//----- (004DD720) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); -} - -//----- (004DD730) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); -} - -//----- (004DD740) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); -} - -//----- (004DD750) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); -} - -//----- (004DD760) -------------------------------------------------------- -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // edx - int v11; // ecx - int v12; // eax - unsigned int v13; // [esp+Ch] [ebp-5Ch] - unsigned int v14; // [esp+Ch] [ebp-5Ch] - unsigned int v15; // [esp+Ch] [ebp-5Ch] - std::string *v16; // [esp+14h] [ebp-54h] - std::string *v17; // [esp+14h] [ebp-54h] - std::string *v18; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - char v22; // [esp+5Bh] [ebp-Dh] BYREF - _DWORD v23[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 37) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_BYTE *)(a3 + 100) = 1; - (*(void (__thiscall **)(_DWORD *, int *))(v3 + 16))(v23, a2); - lpuexcpt = *(struct _Unwind_Exception **)(v23[0] - 12); - v16 = (std::string *)operator new[]((unsigned int)lpuexcpt + 1); - std::string::copy(v23, v16, (size_t)lpuexcpt, 0, v13); - *((_BYTE *)lpuexcpt + (_DWORD)v16) = 0; - *(_DWORD *)(a3 + 12) = lpuexcpt; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v16; - v5 = v23[0]; - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(v23[0] - 4); - *(_DWORD *)(v23[0] - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v22); -LABEL_3: - (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v23, a2); - lpuexcpta = *(struct _Unwind_Exception **)(v23[0] - 12); - v17 = (std::string *)operator new[]((unsigned int)lpuexcpta + 1); - std::string::copy(v23, v17, (size_t)lpuexcpta, 0, v14); - *((_BYTE *)lpuexcpta + (_DWORD)v17) = 0; - *(_DWORD *)(a3 + 24) = lpuexcpta; - v7 = _CRT_MT; - *(_DWORD *)(a3 + 20) = v17; - v8 = v23[0]; - if ( v7 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_5; - } - else - { - v9 = *(_DWORD *)(v23[0] - 4); - *(_DWORD *)(v23[0] - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_5; - } - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)&v22); -LABEL_5: - (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v23, a2); - lpuexcptb = *(struct _Unwind_Exception **)(v23[0] - 12); - v18 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); - std::string::copy(v23, v18, (size_t)lpuexcptb, 0, v15); - *(_DWORD *)(a3 + 28) = v18; - *(_DWORD *)(a3 + 32) = lpuexcptb; - v10 = _CRT_MT; - *((_BYTE *)lpuexcptb + (_DWORD)v18) = 0; - v11 = v23[0]; - if ( !v10 ) - { - v12 = *(_DWORD *)(v23[0] - 4); - *(_DWORD *)(v23[0] - 4) = v12 - 1; - if ( v12 > 0 ) - return; -LABEL_11: - std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)&v22); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_11; -} -// 4DD819: variable 'v13' is possibly undefined -// 4DD8A7: variable 'v14' is possibly undefined -// 4DD935: variable 'v15' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DDA50) -------------------------------------------------------- -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - char *v5; // eax - char *v6; // eax - _BYTE *v7; // [esp+14h] [ebp-64h] - _BYTE *v8; // [esp+14h] [ebp-64h] - _BYTE *v9; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v14; // [esp+5Ch] [ebp-1Ch] - char v15[24]; // [esp+60h] [ebp-18h] BYREF - - *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 37) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_BYTE *)(a3 + 100) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcpt = v14; - v7 = (_BYTE *)operator new[]((unsigned int)v14 + 1); - std::string::copy(&Block, v7, (size_t)lpuexcpt, 0); - *(_DWORD *)(a3 + 12) = lpuexcpt; - *((_BYTE *)lpuexcpt + (_DWORD)v7) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v7; - if ( v4 != v15 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpta = v14; - v8 = (_BYTE *)operator new[]((unsigned int)v14 + 1); - std::string::copy(&Block, v8, (size_t)lpuexcpta, 0); - *(_DWORD *)(a3 + 24) = lpuexcpta; - *((_BYTE *)lpuexcpta + (_DWORD)v8) = 0; - v5 = (char *)Block; - *(_DWORD *)(a3 + 20) = v8; - if ( v5 != v15 ) - operator delete(v5); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcptb = v14; - v9 = (_BYTE *)operator new[]((unsigned int)v14 + 1); - std::string::copy(&Block, v9, (size_t)lpuexcptb, 0); - *(_DWORD *)(a3 + 32) = lpuexcptb; - *((_BYTE *)lpuexcptb + (_DWORD)v9) = 0; - v6 = (char *)Block; - *(_DWORD *)(a3 + 28) = v9; - if ( v6 != v15 ) - operator delete(v6); -} - -//----- (004DDC80) -------------------------------------------------------- -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - unsigned int v13; // [esp+Ch] [ebp-5Ch] - _WORD *v14; // [esp+10h] [ebp-58h] - _WORD *v15; // [esp+10h] [ebp-58h] - std::string *v16; // [esp+14h] [ebp-54h] - int v17; // [esp+14h] [ebp-54h] - int v18; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - char v22; // [esp+5Bh] [ebp-Dh] BYREF - int v23[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 38) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_BYTE *)(a3 + 164) = 1; - (*(void (__thiscall **)(int *, int *))(v3 + 16))(v23, a2); - lpuexcptb = *(struct _Unwind_Exception **)(v23[0] - 12); - v16 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); - std::string::copy(v23, v16, (size_t)lpuexcptb, 0, v13); - *((_BYTE *)lpuexcptb + (_DWORD)v16) = 0; - *(_DWORD *)(a3 + 12) = lpuexcptb; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v16; - v5 = v23[0]; - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(v23[0] - 4); - *(_DWORD *)(v23[0] - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v22); -LABEL_3: - (*(void (__thiscall **)(int *, int *))(*a2 + 20))(v23, a2); - lpuexcpt = *(struct _Unwind_Exception **)(v23[0] - 12); - v7 = (int)lpuexcpt + 1; - if ( (unsigned int)lpuexcpt + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v17 = v7; - v14 = (_WORD *)operator new[](2 * v7); - std::wstring::copy(v23, v14, (unsigned int)lpuexcpt, 0); - v14[v17 - 1] = 0; - *(_DWORD *)(a3 + 20) = v14; - v8 = v23[0]; - *(_DWORD *)(a3 + 24) = lpuexcpt; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_6; - } - else - { - v9 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_6; - } - std::wstring::_Rep::_M_destroy((void *)(v8 - 12), (int)&v22); -LABEL_6: - (*(void (__thiscall **)(int *, int *))(*a2 + 24))(v23, a2); - lpuexcpta = *(struct _Unwind_Exception **)(v23[0] - 12); - v10 = (int)lpuexcpta + 1; - if ( (unsigned int)lpuexcpta + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v18 = v10; - v15 = (_WORD *)operator new[](2 * v10); - std::wstring::copy(v23, v15, (unsigned int)lpuexcpta, 0); - v15[v18 - 1] = 0; - *(_DWORD *)(a3 + 28) = v15; - v11 = v23[0]; - *(_DWORD *)(a3 + 32) = lpuexcpta; - if ( !_CRT_MT ) - { - v12 = *(_DWORD *)(v11 - 4); - *(_DWORD *)(v11 - 4) = v12 - 1; - if ( v12 > 0 ) - return; -LABEL_13: - std::wstring::_Rep::_M_destroy((void *)(v11 - 12), (int)&v22); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_13; -} -// 4DDD3E: variable 'v13' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DDFC0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - int v5; // eax - int v6; // eax - _WORD *v7; // [esp+10h] [ebp-68h] - _WORD *v8; // [esp+10h] [ebp-68h] - _BYTE *v9; // [esp+14h] [ebp-64h] - int v10; // [esp+14h] [ebp-64h] - int v11; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v16; // [esp+5Ch] [ebp-1Ch] - char v17[24]; // [esp+60h] [ebp-18h] BYREF - - *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 38) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_BYTE *)(a3 + 164) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcptb = v16; - v9 = (_BYTE *)operator new[]((unsigned int)v16 + 1); - std::string::copy(&Block, v9, (size_t)lpuexcptb, 0); - *(_DWORD *)(a3 + 12) = lpuexcptb; - *((_BYTE *)lpuexcptb + (_DWORD)v9) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v9; - if ( v4 != v17 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpt = v16; - v5 = (int)v16 + 1; - if ( (unsigned int)v16 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v10 = v5; - v7 = (_WORD *)operator new[](2 * v5); - std::wstring::copy(&Block, v7, (unsigned int)lpuexcpt, 0); - v7[v10 - 1] = 0; - *(_DWORD *)(a3 + 20) = v7; - *(_DWORD *)(a3 + 24) = lpuexcpt; - if ( Block != v17 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcpta = v16; - v6 = (int)v16 + 1; - if ( (unsigned int)v16 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v11 = v6; - v8 = (_WORD *)operator new[](2 * v6); - std::wstring::copy(&Block, v8, (unsigned int)lpuexcpta, 0); - v8[v11 - 1] = 0; - *(_DWORD *)(a3 + 28) = v8; - *(_DWORD *)(a3 + 32) = lpuexcpta; - if ( Block != v17 ) - operator delete(Block); -} - -//----- (004DE230) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - int v13; // edx - int v14; // ecx - int v15; // eax - unsigned int v16; // [esp+Ch] [ebp-5Ch] - unsigned int v17; // [esp+Ch] [ebp-5Ch] - unsigned int v18; // [esp+Ch] [ebp-5Ch] - unsigned int v19; // [esp+Ch] [ebp-5Ch] - std::string *v20; // [esp+14h] [ebp-54h] - std::string *v21; // [esp+14h] [ebp-54h] - std::string *v22; // [esp+14h] [ebp-54h] - std::string *v23; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] - char v28; // [esp+5Bh] [ebp-Dh] BYREF - _DWORD v29[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_DWORD *)(a3 + 36) = 0; - *(_BYTE *)(a3 + 67) = 1; - (*(void (__thiscall **)(_DWORD *, int *))(v3 + 16))(v29, a2); - lpuexcpt = *(struct _Unwind_Exception **)(v29[0] - 12); - v20 = (std::string *)operator new[]((unsigned int)lpuexcpt + 1); - std::string::copy(v29, v20, (size_t)lpuexcpt, 0, v16); - *((_BYTE *)lpuexcpt + (_DWORD)v20) = 0; - *(_DWORD *)(a3 + 12) = lpuexcpt; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v20; - v5 = v29[0]; - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v28); -LABEL_3: - (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v29, a2); - lpuexcpta = *(struct _Unwind_Exception **)(v29[0] - 12); - v21 = (std::string *)operator new[]((unsigned int)lpuexcpta + 1); - std::string::copy(v29, v21, (size_t)lpuexcpta, 0, v17); - *((_BYTE *)lpuexcpta + (_DWORD)v21) = 0; - *(_DWORD *)(a3 + 24) = lpuexcpta; - v7 = _CRT_MT; - *(_DWORD *)(a3 + 20) = v21; - v8 = v29[0]; - if ( v7 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_5; - } - else - { - v9 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_5; - } - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)&v28); -LABEL_5: - (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v29, a2); - lpuexcptb = *(struct _Unwind_Exception **)(v29[0] - 12); - v22 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); - std::string::copy(v29, v22, (size_t)lpuexcptb, 0, v18); - *((_BYTE *)lpuexcptb + (_DWORD)v22) = 0; - *(_DWORD *)(a3 + 32) = lpuexcptb; - v10 = _CRT_MT; - *(_DWORD *)(a3 + 28) = v22; - v11 = v29[0]; - if ( v10 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - } - else - { - v12 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v12 - 1; - if ( v12 > 0 ) - goto LABEL_7; - } - std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)&v28); -LABEL_7: - (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v29, a2); - lpuexcptc = *(struct _Unwind_Exception **)(v29[0] - 12); - v23 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); - std::string::copy(v29, v23, (size_t)lpuexcptc, 0, v19); - *(_DWORD *)(a3 + 36) = v23; - *(_DWORD *)(a3 + 40) = lpuexcptc; - v13 = _CRT_MT; - *((_BYTE *)lpuexcptc + (_DWORD)v23) = 0; - v14 = v29[0]; - if ( v13 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_9; -LABEL_13: - std::string::_Rep::_M_destroy((void *)(v14 - 12), (int)&v28); - goto LABEL_9; - } - v15 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_13; -LABEL_9: - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} -// 4DE301: variable 'v16' is possibly undefined -// 4DE38F: variable 'v17' is possibly undefined -// 4DE41D: variable 'v18' is possibly undefined -// 4DE4AB: variable 'v19' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DE610) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - char *v5; // eax - char *v6; // eax - char *v7; // eax - _BYTE *v8; // [esp+14h] [ebp-64h] - _BYTE *v9; // [esp+14h] [ebp-64h] - _BYTE *v10; // [esp+14h] [ebp-64h] - _BYTE *v11; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v17; // [esp+5Ch] [ebp-1Ch] - char v18[24]; // [esp+60h] [ebp-18h] BYREF - - *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_DWORD *)(a3 + 36) = 0; - *(_BYTE *)(a3 + 67) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcpt = v17; - v8 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v8, (size_t)lpuexcpt, 0); - *(_DWORD *)(a3 + 12) = lpuexcpt; - *((_BYTE *)lpuexcpt + (_DWORD)v8) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v8; - if ( v4 != v18 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpta = v17; - v9 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v9, (size_t)lpuexcpta, 0); - *(_DWORD *)(a3 + 24) = lpuexcpta; - *((_BYTE *)lpuexcpta + (_DWORD)v9) = 0; - v5 = (char *)Block; - *(_DWORD *)(a3 + 20) = v9; - if ( v5 != v18 ) - operator delete(v5); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcptb = v17; - v10 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v10, (size_t)lpuexcptb, 0); - *(_DWORD *)(a3 + 32) = lpuexcptb; - *((_BYTE *)lpuexcptb + (_DWORD)v10) = 0; - v6 = (char *)Block; - *(_DWORD *)(a3 + 28) = v10; - if ( v6 != v18 ) - operator delete(v6); - (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); - lpuexcptc = v17; - v11 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); - *(_DWORD *)(a3 + 40) = lpuexcptc; - *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; - v7 = (char *)Block; - *(_DWORD *)(a3 + 36) = v11; - if ( v7 != v18 ) - operator delete(v7); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} - -//----- (004DE900) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - int v13; // edx - int v14; // ecx - int v15; // eax - unsigned int v16; // [esp+Ch] [ebp-5Ch] - unsigned int v17; // [esp+Ch] [ebp-5Ch] - unsigned int v18; // [esp+Ch] [ebp-5Ch] - unsigned int v19; // [esp+Ch] [ebp-5Ch] - std::string *v20; // [esp+14h] [ebp-54h] - std::string *v21; // [esp+14h] [ebp-54h] - std::string *v22; // [esp+14h] [ebp-54h] - std::string *v23; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] - char v28; // [esp+5Bh] [ebp-Dh] BYREF - _DWORD v29[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_DWORD *)(a3 + 36) = 0; - *(_BYTE *)(a3 + 67) = 1; - (*(void (__thiscall **)(_DWORD *, int *))(v3 + 16))(v29, a2); - lpuexcpt = *(struct _Unwind_Exception **)(v29[0] - 12); - v20 = (std::string *)operator new[]((unsigned int)lpuexcpt + 1); - std::string::copy(v29, v20, (size_t)lpuexcpt, 0, v16); - *((_BYTE *)lpuexcpt + (_DWORD)v20) = 0; - *(_DWORD *)(a3 + 12) = lpuexcpt; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v20; - v5 = v29[0]; - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v28); -LABEL_3: - (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v29, a2); - lpuexcpta = *(struct _Unwind_Exception **)(v29[0] - 12); - v21 = (std::string *)operator new[]((unsigned int)lpuexcpta + 1); - std::string::copy(v29, v21, (size_t)lpuexcpta, 0, v17); - *((_BYTE *)lpuexcpta + (_DWORD)v21) = 0; - *(_DWORD *)(a3 + 24) = lpuexcpta; - v7 = _CRT_MT; - *(_DWORD *)(a3 + 20) = v21; - v8 = v29[0]; - if ( v7 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_5; - } - else - { - v9 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_5; - } - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)&v28); -LABEL_5: - (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v29, a2); - lpuexcptb = *(struct _Unwind_Exception **)(v29[0] - 12); - v22 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); - std::string::copy(v29, v22, (size_t)lpuexcptb, 0, v18); - *((_BYTE *)lpuexcptb + (_DWORD)v22) = 0; - *(_DWORD *)(a3 + 32) = lpuexcptb; - v10 = _CRT_MT; - *(_DWORD *)(a3 + 28) = v22; - v11 = v29[0]; - if ( v10 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - } - else - { - v12 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v12 - 1; - if ( v12 > 0 ) - goto LABEL_7; - } - std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)&v28); -LABEL_7: - (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v29, a2); - lpuexcptc = *(struct _Unwind_Exception **)(v29[0] - 12); - v23 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); - std::string::copy(v29, v23, (size_t)lpuexcptc, 0, v19); - *(_DWORD *)(a3 + 36) = v23; - *(_DWORD *)(a3 + 40) = lpuexcptc; - v13 = _CRT_MT; - *((_BYTE *)lpuexcptc + (_DWORD)v23) = 0; - v14 = v29[0]; - if ( v13 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_9; -LABEL_13: - std::string::_Rep::_M_destroy((void *)(v14 - 12), (int)&v28); - goto LABEL_9; - } - v15 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_13; -LABEL_9: - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} -// 4DE9D1: variable 'v16' is possibly undefined -// 4DEA5F: variable 'v17' is possibly undefined -// 4DEAED: variable 'v18' is possibly undefined -// 4DEB7B: variable 'v19' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DECE0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - char *v5; // eax - char *v6; // eax - char *v7; // eax - _BYTE *v8; // [esp+14h] [ebp-64h] - _BYTE *v9; // [esp+14h] [ebp-64h] - _BYTE *v10; // [esp+14h] [ebp-64h] - _BYTE *v11; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v17; // [esp+5Ch] [ebp-1Ch] - char v18[24]; // [esp+60h] [ebp-18h] BYREF - - *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_DWORD *)(a3 + 36) = 0; - *(_BYTE *)(a3 + 67) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcpt = v17; - v8 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v8, (size_t)lpuexcpt, 0); - *(_DWORD *)(a3 + 12) = lpuexcpt; - *((_BYTE *)lpuexcpt + (_DWORD)v8) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v8; - if ( v4 != v18 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpta = v17; - v9 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v9, (size_t)lpuexcpta, 0); - *(_DWORD *)(a3 + 24) = lpuexcpta; - *((_BYTE *)lpuexcpta + (_DWORD)v9) = 0; - v5 = (char *)Block; - *(_DWORD *)(a3 + 20) = v9; - if ( v5 != v18 ) - operator delete(v5); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcptb = v17; - v10 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v10, (size_t)lpuexcptb, 0); - *(_DWORD *)(a3 + 32) = lpuexcptb; - *((_BYTE *)lpuexcptb + (_DWORD)v10) = 0; - v6 = (char *)Block; - *(_DWORD *)(a3 + 28) = v10; - if ( v6 != v18 ) - operator delete(v6); - (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); - lpuexcptc = v17; - v11 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); - *(_DWORD *)(a3 + 40) = lpuexcptc; - *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; - v7 = (char *)Block; - *(_DWORD *)(a3 + 36) = v11; - if ( v7 != v18 ) - operator delete(v7); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} - -//----- (004DEFD0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - int v13; // eax - int v14; // ecx - int v15; // eax - unsigned int v16; // [esp+Ch] [ebp-5Ch] - _WORD *v17; // [esp+10h] [ebp-58h] - _WORD *v18; // [esp+10h] [ebp-58h] - _WORD *v19; // [esp+10h] [ebp-58h] - std::string *v20; // [esp+14h] [ebp-54h] - int v21; // [esp+14h] [ebp-54h] - int v22; // [esp+14h] [ebp-54h] - int v23; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - char v28; // [esp+5Bh] [ebp-Dh] BYREF - int v29[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 24) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 32) = 0; - *(_DWORD *)(a3 + 40) = 0; - *(_BYTE *)(a3 + 82) = 1; - (*(void (__thiscall **)(int *, int *))(v3 + 16))(v29, a2); - lpuexcptc = *(struct _Unwind_Exception **)(v29[0] - 12); - v20 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); - std::string::copy(v29, v20, (size_t)lpuexcptc, 0, v16); - *((_BYTE *)lpuexcptc + (_DWORD)v20) = 0; - *(_DWORD *)(a3 + 12) = lpuexcptc; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v20; - v5 = v29[0]; - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v28); -LABEL_3: - (*(void (__thiscall **)(int *, int *))(*a2 + 20))(v29, a2); - lpuexcpt = *(struct _Unwind_Exception **)(v29[0] - 12); - v7 = (int)lpuexcpt + 1; - if ( (unsigned int)lpuexcpt + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v21 = v7; - v17 = (_WORD *)operator new[](2 * v7); - std::wstring::copy(v29, v17, (unsigned int)lpuexcpt, 0); - v17[v21 - 1] = 0; - *(_DWORD *)(a3 + 24) = v17; - v8 = v29[0]; - *(_DWORD *)(a3 + 28) = lpuexcpt; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_6; - } - else - { - v9 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_6; - } - std::wstring::_Rep::_M_destroy((void *)(v8 - 12), (int)&v28); -LABEL_6: - (*(void (__thiscall **)(int *, int *))(*a2 + 24))(v29, a2); - lpuexcpta = *(struct _Unwind_Exception **)(v29[0] - 12); - v10 = (int)lpuexcpta + 1; - if ( (unsigned int)lpuexcpta + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v22 = v10; - v18 = (_WORD *)operator new[](2 * v10); - std::wstring::copy(v29, v18, (unsigned int)lpuexcpta, 0); - v18[v22 - 1] = 0; - *(_DWORD *)(a3 + 32) = v18; - v11 = v29[0]; - *(_DWORD *)(a3 + 36) = lpuexcpta; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_9; - } - else - { - v12 = *(_DWORD *)(v11 - 4); - *(_DWORD *)(v11 - 4) = v12 - 1; - if ( v12 > 0 ) - goto LABEL_9; - } - std::wstring::_Rep::_M_destroy((void *)(v11 - 12), (int)&v28); -LABEL_9: - (*(void (__thiscall **)(int *, int *))(*a2 + 28))(v29, a2); - lpuexcptb = *(struct _Unwind_Exception **)(v29[0] - 12); - v13 = (int)lpuexcptb + 1; - if ( (unsigned int)lpuexcptb + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v23 = v13; - v19 = (_WORD *)operator new[](2 * v13); - std::wstring::copy(v29, v19, (unsigned int)lpuexcptb, 0); - v19[v23 - 1] = 0; - *(_DWORD *)(a3 + 40) = v19; - v14 = v29[0]; - *(_DWORD *)(a3 + 44) = lpuexcptb; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v14 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_12; -LABEL_16: - std::wstring::_Rep::_M_destroy((void *)(v14 - 12), (int)&v28); - goto LABEL_12; - } - v15 = *(_DWORD *)(v14 - 4); - *(_DWORD *)(v14 - 4) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_16; -LABEL_12: - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} -// 4DF0A3: variable 'v16' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DF430) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - _WORD *v8; // [esp+10h] [ebp-68h] - _WORD *v9; // [esp+10h] [ebp-68h] - _WORD *v10; // [esp+10h] [ebp-68h] - _BYTE *v11; // [esp+14h] [ebp-64h] - int v12; // [esp+14h] [ebp-64h] - int v13; // [esp+14h] [ebp-64h] - int v14; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v20; // [esp+5Ch] [ebp-1Ch] - char v21[24]; // [esp+60h] [ebp-18h] BYREF - - *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 24) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 32) = 0; - *(_DWORD *)(a3 + 40) = 0; - *(_BYTE *)(a3 + 82) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcptc = v20; - v11 = (_BYTE *)operator new[]((unsigned int)v20 + 1); - std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); - *(_DWORD *)(a3 + 12) = lpuexcptc; - *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v11; - if ( v4 != v21 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpt = v20; - v5 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v12 = v5; - v8 = (_WORD *)operator new[](2 * v5); - std::wstring::copy(&Block, v8, (unsigned int)lpuexcpt, 0); - v8[v12 - 1] = 0; - *(_DWORD *)(a3 + 24) = v8; - *(_DWORD *)(a3 + 28) = lpuexcpt; - if ( Block != v21 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcpta = v20; - v6 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v13 = v6; - v9 = (_WORD *)operator new[](2 * v6); - std::wstring::copy(&Block, v9, (unsigned int)lpuexcpta, 0); - v9[v13 - 1] = 0; - *(_DWORD *)(a3 + 32) = v9; - *(_DWORD *)(a3 + 36) = lpuexcpta; - if ( Block != v21 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); - lpuexcptb = v20; - v7 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v14 = v7; - v10 = (_WORD *)operator new[](2 * v7); - std::wstring::copy(&Block, v10, (unsigned int)lpuexcptb, 0); - v10[v14 - 1] = 0; - *(_DWORD *)(a3 + 40) = v10; - *(_DWORD *)(a3 + 44) = lpuexcptb; - if ( Block != v21 ) - operator delete(Block); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} - -//----- (004DF790) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - int v13; // eax - int v14; // ecx - int v15; // eax - unsigned int v16; // [esp+Ch] [ebp-5Ch] - _WORD *v17; // [esp+10h] [ebp-58h] - _WORD *v18; // [esp+10h] [ebp-58h] - _WORD *v19; // [esp+10h] [ebp-58h] - std::string *v20; // [esp+14h] [ebp-54h] - int v21; // [esp+14h] [ebp-54h] - int v22; // [esp+14h] [ebp-54h] - int v23; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - char v28; // [esp+5Bh] [ebp-Dh] BYREF - int v29[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 24) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 32) = 0; - *(_DWORD *)(a3 + 40) = 0; - *(_BYTE *)(a3 + 82) = 1; - (*(void (__thiscall **)(int *, int *))(v3 + 16))(v29, a2); - lpuexcptc = *(struct _Unwind_Exception **)(v29[0] - 12); - v20 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); - std::string::copy(v29, v20, (size_t)lpuexcptc, 0, v16); - *((_BYTE *)lpuexcptc + (_DWORD)v20) = 0; - *(_DWORD *)(a3 + 12) = lpuexcptc; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v20; - v5 = v29[0]; - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29[0] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(v29[0] - 4); - *(_DWORD *)(v29[0] - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)&v28); -LABEL_3: - (*(void (__thiscall **)(int *, int *))(*a2 + 20))(v29, a2); - lpuexcpt = *(struct _Unwind_Exception **)(v29[0] - 12); - v7 = (int)lpuexcpt + 1; - if ( (unsigned int)lpuexcpt + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v21 = v7; - v17 = (_WORD *)operator new[](2 * v7); - std::wstring::copy(v29, v17, (unsigned int)lpuexcpt, 0); - v17[v21 - 1] = 0; - *(_DWORD *)(a3 + 24) = v17; - v8 = v29[0]; - *(_DWORD *)(a3 + 28) = lpuexcpt; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_6; - } - else - { - v9 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_6; - } - std::wstring::_Rep::_M_destroy((void *)(v8 - 12), (int)&v28); -LABEL_6: - (*(void (__thiscall **)(int *, int *))(*a2 + 24))(v29, a2); - lpuexcpta = *(struct _Unwind_Exception **)(v29[0] - 12); - v10 = (int)lpuexcpta + 1; - if ( (unsigned int)lpuexcpta + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v22 = v10; - v18 = (_WORD *)operator new[](2 * v10); - std::wstring::copy(v29, v18, (unsigned int)lpuexcpta, 0); - v18[v22 - 1] = 0; - *(_DWORD *)(a3 + 32) = v18; - v11 = v29[0]; - *(_DWORD *)(a3 + 36) = lpuexcpta; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_9; - } - else - { - v12 = *(_DWORD *)(v11 - 4); - *(_DWORD *)(v11 - 4) = v12 - 1; - if ( v12 > 0 ) - goto LABEL_9; - } - std::wstring::_Rep::_M_destroy((void *)(v11 - 12), (int)&v28); -LABEL_9: - (*(void (__thiscall **)(int *, int *))(*a2 + 28))(v29, a2); - lpuexcptb = *(struct _Unwind_Exception **)(v29[0] - 12); - v13 = (int)lpuexcptb + 1; - if ( (unsigned int)lpuexcptb + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v23 = v13; - v19 = (_WORD *)operator new[](2 * v13); - std::wstring::copy(v29, v19, (unsigned int)lpuexcptb, 0); - v19[v23 - 1] = 0; - *(_DWORD *)(a3 + 40) = v19; - v14 = v29[0]; - *(_DWORD *)(a3 + 44) = lpuexcptb; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v14 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_12; -LABEL_16: - std::wstring::_Rep::_M_destroy((void *)(v14 - 12), (int)&v28); - goto LABEL_12; - } - v15 = *(_DWORD *)(v14 - 4); - *(_DWORD *)(v14 - 4) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_16; -LABEL_12: - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} -// 4DF863: variable 'v16' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004DFBF0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - _WORD *v8; // [esp+10h] [ebp-68h] - _WORD *v9; // [esp+10h] [ebp-68h] - _WORD *v10; // [esp+10h] [ebp-68h] - _BYTE *v11; // [esp+14h] [ebp-64h] - int v12; // [esp+14h] [ebp-64h] - int v13; // [esp+14h] [ebp-64h] - int v14; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v20; // [esp+5Ch] [ebp-1Ch] - char v21[24]; // [esp+60h] [ebp-18h] BYREF - - *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 24) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 32) = 0; - *(_DWORD *)(a3 + 40) = 0; - *(_BYTE *)(a3 + 82) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcptc = v20; - v11 = (_BYTE *)operator new[]((unsigned int)v20 + 1); - std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); - *(_DWORD *)(a3 + 12) = lpuexcptc; - *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v11; - if ( v4 != v21 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpt = v20; - v5 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v12 = v5; - v8 = (_WORD *)operator new[](2 * v5); - std::wstring::copy(&Block, v8, (unsigned int)lpuexcpt, 0); - v8[v12 - 1] = 0; - *(_DWORD *)(a3 + 24) = v8; - *(_DWORD *)(a3 + 28) = lpuexcpt; - if ( Block != v21 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcpta = v20; - v6 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v13 = v6; - v9 = (_WORD *)operator new[](2 * v6); - std::wstring::copy(&Block, v9, (unsigned int)lpuexcpta, 0); - v9[v13 - 1] = 0; - *(_DWORD *)(a3 + 32) = v9; - *(_DWORD *)(a3 + 36) = lpuexcpta; - if ( Block != v21 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); - lpuexcptb = v20; - v7 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v14 = v7; - v10 = (_WORD *)operator new[](2 * v7); - std::wstring::copy(&Block, v10, (unsigned int)lpuexcptb, 0); - v10[v14 - 1] = 0; - *(_DWORD *)(a3 + 40) = v10; - *(_DWORD *)(a3 + 44) = lpuexcptb; - if ( Block != v21 ) - operator delete(Block); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} - -//----- (004DFF50) -------------------------------------------------------- -void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4) -{ - void (__cdecl ***v4)(_anonymous_namespace_::system_error_category *__hidden); // eax - char *v5; // eax - - if ( a3 ) - { - v4 = std::_V2::system_category(); - } - else - { - if ( !(_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec - && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) - { - __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); - atexit((_PVFV)__tcf_0_7); - } - a3 = 1; - v4 = &`anonymous namespace'::__io_category_instance(void)::__ec; - } - std::system_error::system_error(a1, a3, (int)v4, (char *)this); - *a1 = &off_560078; - v5 = (char *)std::runtime_error::what((int)a1); - std::__construct_ios_failure(a1 + 4, v5); -} -// 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); -// 560078: using guessed type void (__cdecl *off_560078)(std::__ios_failure *__hidden this); - -//----- (004E0080) -------------------------------------------------------- -void __fastcall std::__ios_failure::~__ios_failure(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560078; - std::__destroy_ios_failure((std::exception *)(a1 + 4)); - *a1 = &off_55FDD8; - std::system_error::~system_error((std::exception *)lpfctx); - operator delete(a1); -} -// 4E00C4: variable 'lpfctx' is possibly undefined -// 55FDD8: using guessed type int (*off_55FDD8)(); -// 560078: using guessed type void (__cdecl *off_560078)(std::__ios_failure *__hidden this); - -//----- (004E00E0) -------------------------------------------------------- -void __fastcall std::__ios_failure::~__ios_failure(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560078; - std::__destroy_ios_failure((std::exception *)(a1 + 4)); - *a1 = &off_55FDD8; - std::system_error::~system_error((std::exception *)lpfctx); -} -// 4E0124: variable 'lpfctx' is possibly undefined -// 55FDD8: using guessed type int (*off_55FDD8)(); -// 560078: using guessed type void (__cdecl *off_560078)(std::__ios_failure *__hidden this); - -//----- (004E0140) -------------------------------------------------------- -void __fastcall std::bad_exception::~bad_exception(void *Block) -{ - operator delete(Block); -} - -//----- (004E0170) -------------------------------------------------------- -unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int a2) -{ - unsigned int v2; // eax - int v3; // ebx - int v4; // edx - unsigned int result; // eax - - v2 = this[12]; - v3 = (v2 >> 3) & 1; - if ( (v2 & 0x10) != 0 ) - LOBYTE(v2) = 1; - v4 = this[16]; - result = v2 & 1; - this[1] = v4; - this[2] = v4; - if ( a2 > 0 && (_BYTE)v3 ) - { - this[3] = a2 + v4; -LABEL_6: - this[5] = 0; - this[4] = 0; - this[6] = 0; - return result; - } - this[3] = v4; - if ( a2 ) - goto LABEL_6; - if ( !(_BYTE)result ) - goto LABEL_6; - result = this[17]; - if ( result <= 1 ) - goto LABEL_6; - result = v4 + result - 1; - this[5] = v4; - this[4] = v4; - this[6] = result; - return result; -} - -//----- (004E01F0) -------------------------------------------------------- -int __thiscall std::filebuf::_M_get_ext_pos(int this, int a2) -{ - if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 88) + 24))(*(_DWORD *)(this + 88)) ) - return *(_DWORD *)(this + 8) - *(_DWORD *)(this + 12); - else - return *(_DWORD *)(this + 92) - + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 88) + 28))( - *(_DWORD *)(this + 88), - a2, - *(_DWORD *)(this + 92), - *(_DWORD *)(this + 100), - *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) - - *(_DWORD *)(this + 104); -} - -//----- (004E0250) -------------------------------------------------------- -int __fastcall std::filebuf::_M_create_pback(int a1) -{ - int v1; // eax - int result; // eax - - if ( !*(_BYTE *)(a1 + 84) ) - { - v1 = *(_DWORD *)(a1 + 8); - *(_BYTE *)(a1 + 84) = 1; - *(_DWORD *)(a1 + 76) = v1; - *(_DWORD *)(a1 + 80) = *(_DWORD *)(a1 + 12); - *(_DWORD *)(a1 + 4) = a1 + 75; - *(_DWORD *)(a1 + 8) = a1 + 75; - result = a1 + 76; - *(_DWORD *)(a1 + 12) = a1 + 76; - } - return result; -} - -//----- (004E0280) -------------------------------------------------------- -int __fastcall std::filebuf::_M_destroy_pback(int a1) -{ - bool v1; // zf - int v2; // ebx - int v3; // edx - int result; // eax - - if ( *(_BYTE *)(a1 + 84) ) - { - v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); - v2 = *(_DWORD *)(a1 + 64); - v3 = *(_DWORD *)(a1 + 80); - *(_BYTE *)(a1 + 84) = 0; - result = *(_DWORD *)(a1 + 76) + !v1; - *(_DWORD *)(a1 + 4) = v2; - *(_DWORD *)(a1 + 76) = result; - *(_DWORD *)(a1 + 8) = result; - *(_DWORD *)(a1 + 12) = v3; - } - return result; -} - -//----- (004E02C0) -------------------------------------------------------- -int __fastcall std::filebuf::_M_terminate_output(int a1) -{ - int v1; // esi - int v3; // eax - int v4; // ecx - _DWORD **v5; // eax - int v6; // ebx - _DWORD **v7; // ebp - unsigned int v8; // eax - unsigned int v9; // esi - unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] - FILE **v12; // [esp+2Ch] [ebp-B4h] - int v13; // [esp+30h] [ebp-B0h] - int v14; // [esp+40h] [ebp-A0h] BYREF - char v15[128]; // [esp+44h] [ebp-9Ch] BYREF - char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF - - v1 = 1; - if ( *(_DWORD *)(a1 + 16) < *(_DWORD *)(a1 + 20) ) - { - v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, -1); - LOBYTE(v3) = v3 != -1; - v1 = v3; - } - if ( *(_BYTE *)(a1 + 74) ) - { - v4 = *(_DWORD *)(a1 + 88); - if ( !v4 ) - std::__throw_bad_cast(); - v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); - if ( !v11 ) - { - if ( (_BYTE)v1 ) - { - v12 = (FILE **)(a1 + 40); - v5 = (_DWORD **)a1; - v6 = a1 + 56; - v7 = v5; - while ( 1 ) - { - v8 = (*(int (__thiscall **)(_DWORD *, int, char *, char *, int *))(*v7[22] + 12))(v7[22], v6, v15, v16, &v14); - v9 = v8; - if ( v8 == 2 ) - break; - if ( v8 <= 1 && v14 - (int)v15 > 0 ) - { - v13 = v14 - (_DWORD)v15; - if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) - return v11; - if ( v9 == 1 ) - continue; - } - return ((int (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, -1) != -1; - } - return v11; - } - } - } - return v1; -} -// 4E02C0: using guessed type char var_1C[28]; - -//----- (004E03D0) -------------------------------------------------------- -bool __thiscall std::filebuf::_M_convert_to_external(int this, char *a2, unsigned int a3) -{ - int v4; // ecx - unsigned int v5; // esi - int v6; // eax - void *v7; // esp - void *v8; // esp - unsigned int v9; // eax - unsigned int v10; // eax - int v12; // esi - char v13; // [esp+20h] [ebp-38h] - int v14; // [esp+38h] [ebp-20h] BYREF - int v15; // [esp+3Ch] [ebp-1Ch] BYREF - char v16[24]; // [esp+40h] [ebp-18h] BYREF - - v4 = *(_DWORD *)(this + 88); - v5 = a3; - if ( !v4 ) - std::__throw_bad_cast(); - if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) - goto LABEL_5; - v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(**(_DWORD **)(this + 88) + 32))(*(_DWORD *)(this + 88)) + 27) >> 4); - v7 = alloca(v6); - v8 = alloca(v6); - v9 = (*(int (__thiscall **)(_DWORD, int, char *, char *))(**(_DWORD **)(this + 88) + 8))( - *(_DWORD *)(this + 88), - this + 56, - a2, - &a2[a3]); - if ( v9 > 1 ) - { - if ( v9 == 3 ) - { -LABEL_5: - v10 = std::__basic_file::xsputn((FILE **)(this + 40), a2, a3); - return v10 == v5; - } -LABEL_11: - std::__throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error"); - } - v13 = v9; - v5 = v14 - (_DWORD)v16; - v10 = std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16); - if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) - return v10 == v5; - if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(**(_DWORD **)(this + 88) + 8))( - *(_DWORD *)(this + 88), - &v15, - v15, - *(_DWORD *)(this + 20), - &v15, - v16, - v14, - &v14) == 2 ) - goto LABEL_11; - v12 = v14 - (_DWORD)v16; - return std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16) == v12; -} - -//----- (004E0540) -------------------------------------------------------- -void __fastcall std::filebuf::_M_destroy_internal_buffer(int a1) -{ - if ( *(_BYTE *)(a1 + 72) ) - { - if ( *(_DWORD *)(a1 + 64) ) - operator delete[](*(void **)(a1 + 64)); - *(_DWORD *)(a1 + 64) = 0; - *(_BYTE *)(a1 + 72) = 0; - } - if ( *(_DWORD *)(a1 + 92) ) - operator delete[](*(void **)(a1 + 92)); - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; -} - -//----- (004E05A0) -------------------------------------------------------- -void __fastcall std::filebuf::_M_allocate_internal_buffer(int a1) -{ - if ( !*(_BYTE *)(a1 + 72) && !*(_DWORD *)(a1 + 64) ) - { - *(_DWORD *)(a1 + 64) = operator new[](*(_DWORD *)(a1 + 68)); - *(_BYTE *)(a1 + 72) = 1; - } -} - -//----- (004E05E0) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3) -{ - _BYTE *v3; // esi - int v5; // eax - int v6; // eax - _DWORD v8[7]; // [esp+20h] [ebp-1Ch] BYREF - - v3 = this + 10; - if ( !std::__basic_file::is_open(this + 10) ) - { - std::__basic_file::open(v3, a2, a3, 436); - if ( std::__basic_file::is_open(v3) ) - { - v5 = this[16]; - if ( !*((_BYTE *)this + 72) && !v5 ) - { - v5 = operator new[](this[17]); - *((_BYTE *)this + 72) = 1; - this[16] = v5; - } - this[1] = v5; - this[2] = v5; - this[3] = v5; - v6 = this[13]; - this[12] = a3; - *(_WORD *)((char *)this + 73) = 0; - this[5] = 0; - this[4] = 0; - this[6] = 0; - this[14] = v6; - this[15] = v6; - if ( (a3 & 2) == 0 ) - return this; - (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v8, this, 0, 0, 2, a3); - if ( (v8[0] & v8[1]) != -1 ) - return this; - std::filebuf::close((struct _Unwind_Exception *)this); - } - } - return 0; -} - -//----- (004E06F0) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::open(_DWORD *this, wchar_t *a2, int a3) -{ - _BYTE *v3; // esi - int v5; // eax - int v6; // eax - _DWORD v8[7]; // [esp+20h] [ebp-1Ch] BYREF - - v3 = this + 10; - if ( !std::__basic_file::is_open(this + 10) ) - { - std::__basic_file::open(v3, a2, a3); - if ( std::__basic_file::is_open(v3) ) - { - v5 = this[16]; - if ( !*((_BYTE *)this + 72) && !v5 ) - { - v5 = operator new[](this[17]); - *((_BYTE *)this + 72) = 1; - this[16] = v5; - } - this[1] = v5; - this[2] = v5; - this[3] = v5; - v6 = this[13]; - this[12] = a3; - *(_WORD *)((char *)this + 73) = 0; - this[5] = 0; - this[4] = 0; - this[6] = 0; - this[14] = v6; - this[15] = v6; - if ( (a3 & 2) == 0 ) - return this; - (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v8, this, 0, 0, 2, a3); - if ( (v8[0] & v8[1]) != -1 ) - return this; - std::filebuf::close((struct _Unwind_Exception *)this); - } - } - return 0; -} - -//----- (004E07F0) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3) -{ - return std::filebuf::open(this, *(char **)a2, a3); -} - -//----- (004E0800) -------------------------------------------------------- -int __thiscall std::filebuf::swap(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - char v15; // dl - int v16; // edx - int v17; // eax - int v18; // edx - int v19; // eax - int v20; // edx - int v21; // eax - int v22; // edx - int v23; // eax - int v24; // edx - int v25; // eax - int v26; // edx - int v27; // eax - int v28; // edx - int v29; // eax - int v30; // edx - int v31; // eax - int v32; // edx - int v33; // eax - int v34; // edx - int v35; // eax - int v36; // edx - int v37; // eax - int v38; // eax - int result; // eax - const std::locale *v40; // [esp+4h] [ebp-48h] - volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] - _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - v41 = (volatile signed __int32 **)(this + 28); - std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); - std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); - std::locale::~locale(v42); - v14 = *(_DWORD *)(this + 40); - *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); - v15 = *(_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 40) = v14; - LOBYTE(v14) = *(_BYTE *)(this + 44); - *(_BYTE *)(this + 44) = v15; - v16 = *(_DWORD *)(a2 + 48); - *(_BYTE *)(a2 + 44) = v14; - v17 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 48) = v16; - v18 = *(_DWORD *)(a2 + 52); - *(_DWORD *)(a2 + 48) = v17; - v19 = *(_DWORD *)(this + 52); - *(_DWORD *)(this + 52) = v18; - v20 = *(_DWORD *)(a2 + 56); - *(_DWORD *)(a2 + 52) = v19; - v21 = *(_DWORD *)(this + 56); - *(_DWORD *)(this + 56) = v20; - v22 = *(_DWORD *)(a2 + 60); - *(_DWORD *)(a2 + 56) = v21; - v23 = *(_DWORD *)(this + 60); - *(_DWORD *)(this + 60) = v22; - v24 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 60) = v23; - v25 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 64) = v24; - v26 = *(_DWORD *)(a2 + 68); - *(_DWORD *)(a2 + 64) = v25; - v27 = *(_DWORD *)(this + 68); - *(_DWORD *)(this + 68) = v26; - *(_DWORD *)(a2 + 68) = v27; - LOBYTE(v27) = *(_BYTE *)(this + 72); - *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); - v28 = *(_DWORD *)(a2 + 92); - *(_BYTE *)(a2 + 72) = v27; - v29 = *(_DWORD *)(this + 92); - *(_DWORD *)(this + 92) = v28; - v30 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 92) = v29; - v31 = *(_DWORD *)(this + 96); - *(_DWORD *)(this + 96) = v30; - v32 = *(_DWORD *)(a2 + 100); - *(_DWORD *)(a2 + 96) = v31; - v33 = *(_DWORD *)(this + 100); - *(_DWORD *)(this + 100) = v32; - v34 = *(_DWORD *)(a2 + 104); - *(_DWORD *)(a2 + 100) = v33; - v35 = *(_DWORD *)(this + 104); - *(_DWORD *)(this + 104) = v34; - LOBYTE(v34) = *(_BYTE *)(a2 + 73); - *(_DWORD *)(a2 + 104) = v35; - LOBYTE(v35) = *(_BYTE *)(this + 73); - *(_BYTE *)(this + 73) = v34; - LOBYTE(v34) = *(_BYTE *)(a2 + 74); - *(_BYTE *)(a2 + 73) = v35; - LOBYTE(v35) = *(_BYTE *)(this + 74); - *(_BYTE *)(this + 74) = v34; - v36 = *(_DWORD *)(a2 + 76); - *(_BYTE *)(a2 + 74) = v35; - v37 = *(_DWORD *)(this + 76); - *(_DWORD *)(this + 76) = v36; - *(_DWORD *)(a2 + 76) = v37; - v38 = *(_DWORD *)(this + 80); - *(_DWORD *)(this + 80) = *(_DWORD *)(a2 + 80); - LOBYTE(v36) = *(_BYTE *)(a2 + 84); - *(_DWORD *)(a2 + 80) = v38; - result = *(unsigned __int8 *)(this + 84); - *(_BYTE *)(this + 84) = v36; - *(_BYTE *)(a2 + 84) = result; - return result; -} -// 4E0868: variable 'v40' is possibly undefined - -//----- (004E0990) -------------------------------------------------------- -int __fastcall std::filebuf::sync(_DWORD *a1) -{ - if ( a1[4] >= a1[5] ) - return 0; - else - return -((*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, -1) == -1); -} - -//----- (004E09D0) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::filebuf::close(struct _Unwind_Exception *a1) -{ - bool v1; // zf - void *v2; // eax - int v3; // edx - int v4; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+1Ch] [ebp-60h] - int v7; // [esp+24h] [ebp-58h] - char v8; // [esp+2Bh] [ebp-51h] - - lpuexcpt = a1; - v7 = (int)a1 + 40; - if ( !std::__basic_file::is_open((_DWORD *)a1 + 10) ) - return 0; - v8 = std::filebuf::_M_terminate_output((int)lpuexcpt) ^ 1; - v1 = *((_BYTE *)lpuexcpt + 72) == 0; - *((_DWORD *)lpuexcpt + 12) = 0; - *((_BYTE *)lpuexcpt + 84) = 0; - if ( !v1 ) - { - v2 = (void *)*((_DWORD *)lpuexcpt + 16); - if ( v2 ) - operator delete[](v2); - *((_DWORD *)lpuexcpt + 16) = 0; - *((_BYTE *)lpuexcpt + 72) = 0; - } - if ( *((_DWORD *)lpuexcpt + 23) ) - operator delete[](*((void **)lpuexcpt + 23)); - *((_DWORD *)lpuexcpt + 23) = 0; - *((_DWORD *)lpuexcpt + 24) = 0; - *((_DWORD *)lpuexcpt + 25) = 0; - *((_DWORD *)lpuexcpt + 26) = 0; - *(_WORD *)((char *)lpuexcpt + 73) = 0; - v3 = *((_DWORD *)lpuexcpt + 16); - *((_DWORD *)lpuexcpt + 5) = 0; - *((_DWORD *)lpuexcpt + 1) = v3; - *((_DWORD *)lpuexcpt + 2) = v3; - *((_DWORD *)lpuexcpt + 3) = v3; - v4 = *((_DWORD *)lpuexcpt + 13); - *((_DWORD *)lpuexcpt + 4) = 0; - *((_DWORD *)lpuexcpt + 6) = 0; - *((_DWORD *)lpuexcpt + 14) = v4; - *((_DWORD *)lpuexcpt + 15) = v4; - if ( !std::__basic_file::close(v7) || v8 ) - return 0; - return lpuexcpt; -} - -//----- (004E0B80) -------------------------------------------------------- -char __thiscall std::filebuf::imbue(void *this, int a2) -{ - void *v3; // esi - int v4; // eax - int v5; // ecx - int v6; // ecx - int v7; // edi - const void *Src; // eax - int v9; // edi - size_t Size; // edi - int v11; // eax - int v12; // eax - int v14; // [esp+30h] [ebp-1Ch] BYREF - int v15; // [esp+34h] [ebp-18h] - - if ( (unsigned __int8)std::has_facet>(a2) ) - v3 = std::use_facet>(a2); - else - v3 = 0; - LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)this + 10); - if ( !(_BYTE)v4 ) - goto LABEL_13; - if ( !*((_BYTE *)this + 73) && !*((_BYTE *)this + 74) ) - { - *((_DWORD *)this + 22) = v3; - return v4; - } - v5 = *((_DWORD *)this + 22); - if ( !v5 ) - goto LABEL_24; - v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); - if ( v4 == -1 ) - goto LABEL_18; - if ( !*((_BYTE *)this + 73) ) - { - if ( !*((_BYTE *)this + 74) ) - goto LABEL_13; - LOBYTE(v4) = std::filebuf::_M_terminate_output((int)this); - if ( (_BYTE)v4 ) - { - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 6) = 0; - goto LABEL_13; - } -LABEL_18: - *((_DWORD *)this + 22) = 0; - return v4; - } - v6 = *((_DWORD *)this + 22); - if ( !v6 ) -LABEL_24: - std::__throw_bad_cast(); - LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); - if ( !(_BYTE)v4 ) - { - v7 = *((_DWORD *)this + 23); - Src = (const void *)(v7 - + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**((_DWORD **)this + 22) + 28))( - *((_DWORD *)this + 22), - (int)this + 60, - v7, - *((_DWORD *)this + 25), - *((_DWORD *)this + 2) - *((_DWORD *)this + 1))); - v9 = *((_DWORD *)this + 26); - *((_DWORD *)this + 25) = Src; - Size = v9 - (_DWORD)Src; - if ( Size ) - memmove(*((void **)this + 23), Src, Size); - v11 = *((_DWORD *)this + 23); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 25) = v11; - *((_DWORD *)this + 26) = Size + v11; - v12 = *((_DWORD *)this + 16); - *((_DWORD *)this + 6) = 0; - *((_DWORD *)this + 1) = v12; - *((_DWORD *)this + 2) = v12; - *((_DWORD *)this + 3) = v12; - v4 = *((_DWORD *)this + 13); - *((_DWORD *)this + 14) = v4; - *((_DWORD *)this + 15) = v4; - goto LABEL_13; - } - if ( !v3 ) - goto LABEL_18; - LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); - if ( !(_BYTE)v4 ) - { - (*(void (__thiscall **)(int *, void *, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( - &v14, - this, - 0, - 0, - 1, - *((_DWORD *)this + 12)); - LOBYTE(v4) = v14 & v15; - if ( (v14 & v15) == -1 ) - goto LABEL_18; - } -LABEL_13: - *((_DWORD *)this + 22) = v3; - return v4; -} - -//----- (004E0D60) -------------------------------------------------------- -int __thiscall std::filebuf::setbuf(int this, __int64 a2) -{ - if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) - return this; - if ( !a2 ) - { - *(_DWORD *)(this + 68) = 1; - return this; - } - if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) - return this; - *(_QWORD *)(this + 64) = a2; - return this; -} - -//----- (004E0DC0) -------------------------------------------------------- -int __thiscall std::filebuf::xsgetn(_DWORD *this, char *a2, signed int a3) -{ - char *v4; // edi - signed int v5; // esi - int v6; // eax - int v7; // ebp - char *v8; // ecx - bool v9; // zf - int v10; // edx - int v11; // ecx - int v12; // eax - int v13; // eax - int v14; // ecx - char v15; // al - int v17; // eax - const void *Src; // eax - size_t Size; // edx - int i; // eax - int v21; // eax - int *v22; // eax - int v23; // [esp+1Ch] [ebp-20h] - int v24; // [esp+1Ch] [ebp-20h] - - v4 = a2; - v5 = a3; - if ( *((_BYTE *)this + 84) ) - { - v6 = this[2]; - v7 = 0; - v8 = (char *)this[1]; - if ( a3 <= 0 || v8 != (char *)v6 ) - goto LABEL_4; - v5 = a3 - 1; - *a2 = *v8; - v6 = this[2] + 1; - v9 = *((_BYTE *)this + 84) == 0; - this[2] = v6; - if ( !v9 ) - { - v8 = (char *)this[1]; - v4 = a2 + 1; - v7 = 1; -LABEL_4: - v9 = v8 == (char *)v6; - v10 = this[16]; - v11 = this[20]; - *((_BYTE *)this + 84) = 0; - v12 = this[19] + !v9; - this[1] = v10; - this[19] = v12; - this[2] = v12; - this[3] = v11; - goto LABEL_5; - } - v4 = a2 + 1; - v7 = 1; - } - else if ( *((_BYTE *)this + 74) ) - { - if ( (*(int (__thiscall **)(_DWORD *, int))(*this + 52))(this, -1) == -1 ) - return 0; - v17 = this[16]; - this[5] = 0; - v7 = 0; - this[4] = 0; - this[1] = v17; - this[2] = v17; - this[3] = v17; - this[6] = 0; - *((_BYTE *)this + 74) = 0; - } - else - { - v7 = 0; - } -LABEL_5: - v13 = 2; - if ( this[17] >= 2u ) - v13 = this[17]; - if ( v5 <= v13 - 1 ) - goto LABEL_11; - v14 = this[22]; - if ( !v14 ) - std::__throw_bad_cast(); - v23 = this[12]; - v15 = (*(int (__fastcall **)(int))(*(_DWORD *)v14 + 24))(v14); - if ( (v23 & 8) != 0 && v15 ) - { - Src = (const void *)this[2]; - Size = this[3] - (_DWORD)Src; - if ( Size ) - { - v24 = this[3] - (_DWORD)Src; - memcpy(v4, Src, Size); - this[2] += v24; - v4 += v24; - v7 += v24; - v5 -= v24; - } - for ( i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5); - ; - i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5) ) - { - if ( i == -1 ) - { - v22 = __errno(); - std::__throw_ios_failure( - (std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", - (std::runtime_error *)*v22); - } - if ( !i ) - break; - v7 += i; - v5 -= i; - if ( !v5 ) - goto LABEL_28; - v4 += i; - } - if ( !v5 ) - { -LABEL_28: - *((_BYTE *)this + 73) = 1; - return v7; - } - v21 = this[16]; - this[5] = 0; - this[4] = 0; - this[1] = v21; - this[2] = v21; - this[3] = v21; - this[6] = 0; - *((_BYTE *)this + 73) = 0; - } - else - { -LABEL_11: - v7 += std::streambuf::xsgetn(this, v4, v5); - } - return v7; -} - -//----- (004E0FE0) -------------------------------------------------------- -int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, signed int a3) -{ - int v4; // eax - int v5; // ecx - char v6; // si - int v7; // edx - int v8; // eax - unsigned int v9; // ecx - signed int v10; // esi - int v11; // eax - int v12; // edx - bool v13; // cc - int result; // eax - int v15; // edx - int v16; // ecx - unsigned int v17; // ecx - - v4 = *(_DWORD *)(this + 48); - v5 = *(_DWORD *)(this + 88); - if ( (v4 & 0x10) != 0 ) - LOBYTE(v4) = 1; - v6 = v4 & 1; - if ( !v5 ) - std::__throw_bad_cast(); - if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) - return std::streambuf::xsputn((_DWORD *)this, a2, a3); - v7 = *(_DWORD *)(this + 20); - v8 = *(_DWORD *)(this + 24) - v7; - if ( !*(_BYTE *)(this + 74) ) - { - v9 = *(_DWORD *)(this + 68); - if ( v9 > 1 ) - v8 = v9 - 1; - } - if ( v8 >= 1024 ) - v8 = 1024; - if ( a3 < v8 ) - return std::streambuf::xsputn((_DWORD *)this, a2, a3); - v10 = v7 - *(_DWORD *)(this + 16); - v11 = std::__basic_file::xsputn_2((FILE **)(this + 40), *(char **)(this + 16), v10, (char *)a2, a3); - if ( v10 + a3 == v11 ) - { - v15 = *(_DWORD *)(this + 64); - v16 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v15; - *(_DWORD *)(this + 8) = v15; - *(_DWORD *)(this + 12) = v15; - if ( ((v16 & 0x10) != 0 || (v16 & 1) != 0) && (v17 = *(_DWORD *)(this + 68), v17 > 1) ) - { - *(_DWORD *)(this + 20) = v15; - *(_DWORD *)(this + 16) = v15; - *(_DWORD *)(this + 24) = v15 + v17 - 1; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - *(_BYTE *)(this + 74) = 1; - } - v12 = v11 - v10; - v13 = v10 < v11; - result = 0; - if ( v13 ) - return v12; - return result; -} - -//----- (004E1110) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) -{ - _DWORD *result; // eax - __int64 v7; // rax - int v8; // ecx - int v9; // ecx - - *this = -1; - this[1] = -1; - this[2] = 0; - if ( !(unsigned __int8)std::filebuf::_M_terminate_output(a2) ) - return this; - v7 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, a4); - if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) - return this; - *this = v7; - result = this; - *(_WORD *)(a2 + 73) = 0; - v8 = *(_DWORD *)(a2 + 92); - *(_DWORD *)(a2 + 20) = 0; - *(_DWORD *)(a2 + 104) = v8; - *(_DWORD *)(a2 + 100) = v8; - v9 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 4) = v9; - *(_DWORD *)(a2 + 8) = v9; - *(_DWORD *)(a2 + 12) = v9; - *(_DWORD *)(a2 + 24) = 0; - *(_DWORD *)(a2 + 56) = a5; - this[2] = a5; - this[1] = HIDWORD(v7); - return result; -} - -//----- (004E11C0) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) -{ - int v6; // ecx - int v7; // eax - int v8; // edx - bool v9; // al - bool v11; // zf - __int64 v12; // rax - __int64 v13; // rax - int v14; // edx - int v15; // ecx - int v16; // eax - unsigned int v17; // esi - unsigned int v18; // edi - __int64 v19; // kr00_8 - __int64 ext_pos; // [esp+28h] [ebp-54h] - bool v21; // [esp+34h] [ebp-48h] - int v22; // [esp+34h] [ebp-48h] - int v23; // [esp+3Ch] [ebp-40h] - int v24; // [esp+4Ch] [ebp-30h] BYREF - int v25[11]; // [esp+50h] [ebp-2Ch] BYREF - - v6 = *(_DWORD *)(a2 + 88); - if ( v6 ) - { - v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); - v8 = 0; - if ( v7 >= 0 ) - v8 = v7; - v9 = v7 <= 0; - v23 = v8; - } - else - { - v23 = 0; - v9 = 1; - } - *this = -1; - this[1] = -1; - this[2] = 0; - v21 = v9 && a3 != 0; - if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v21 ) - return this; - if ( a4 != 1 - || a3 - || *(_BYTE *)(a2 + 74) - && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 88) + 24))(*(_DWORD *)(a2 + 88)) ) - { - if ( *(_BYTE *)(a2 + 84) ) - { - v11 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); - *(_BYTE *)(a2 + 84) = 0; - v14 = *(_DWORD *)(a2 + 80); - v15 = *(_DWORD *)(a2 + 64); - v16 = *(_DWORD *)(a2 + 76) + !v11; - *(_DWORD *)(a2 + 76) = v16; - *(_DWORD *)(a2 + 4) = v15; - *(_DWORD *)(a2 + 8) = v16; - *(_DWORD *)(a2 + 12) = v14; - } - v22 = *(_DWORD *)(a2 + 52); - v24 = v22; - v17 = a3 * v23; - v18 = (unsigned __int64)(a3 * v23) >> 32; - if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) - { - v24 = *(_DWORD *)(a2 + 60); - v19 = std::filebuf::_M_get_ext_pos(a2, (int)&v24) + __PAIR64__(v18, v17); - std::filebuf::_M_seek(v25, a2, v19, 1, v24); - } - else - { - std::filebuf::_M_seek(v25, a2, __SPAIR64__(v18, v17), a4, v22); - } - *this = v25[0]; - this[1] = v25[1]; - this[2] = v25[2]; - return this; - } - v11 = *(_BYTE *)(a2 + 73) == 0; - ext_pos = 0LL; - v24 = *(_DWORD *)(a2 + 52); - if ( !v11 ) - { - v24 = *(_DWORD *)(a2 + 60); - ext_pos = std::filebuf::_M_get_ext_pos(a2, (int)&v24); - } - if ( *(_BYTE *)(a2 + 74) ) - ext_pos = *(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16); - v12 = std::__basic_file::seekoff((FILE **)(a2 + 40), 0LL, 1); - if ( ((unsigned int)v12 & HIDWORD(v12)) == -1 ) - return this; - v13 = ext_pos + v12; - *this = v13; - LODWORD(v13) = v24; - this[1] = HIDWORD(v13); - this[2] = v13; - return this; -} - -//----- (004E1420) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) -{ - bool v7; // zf - int v8; // edx - int v9; // ecx - int v10; // eax - int v11; // ebp - __int64 v12; // rax - int v14; // ecx - int v15; // ecx - - *this = -1; - this[1] = -1; - this[2] = 0; - if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) - { - if ( *(_BYTE *)(a2 + 84) ) - { - v7 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); - *(_BYTE *)(a2 + 84) = 0; - v8 = *(_DWORD *)(a2 + 80); - v9 = *(_DWORD *)(a2 + 64); - v10 = *(_DWORD *)(a2 + 76) + !v7; - *(_DWORD *)(a2 + 76) = v10; - *(_DWORD *)(a2 + 4) = v9; - *(_DWORD *)(a2 + 8) = v10; - *(_DWORD *)(a2 + 12) = v8; - } - v11 = a4; - if ( (unsigned __int8)std::filebuf::_M_terminate_output(a2) ) - { - v12 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, 0); - if ( ((unsigned int)v12 & HIDWORD(v12)) == -1 ) - { - v11 = 0; - } - else - { - *(_DWORD *)(a2 + 20) = 0; - *(_WORD *)(a2 + 73) = 0; - v14 = *(_DWORD *)(a2 + 92); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 104) = v14; - *(_DWORD *)(a2 + 100) = v14; - v15 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 24) = 0; - *(_DWORD *)(a2 + 4) = v15; - *(_DWORD *)(a2 + 8) = v15; - *(_DWORD *)(a2 + 12) = v15; - *(_DWORD *)(a2 + 56) = a4; - } - } - else - { - v11 = 0; - v12 = -1LL; - } - *(_QWORD *)this = v12; - this[2] = v11; - } - return this; -} - -//----- (004E1550) -------------------------------------------------------- -int __thiscall std::filebuf::overflow(int this, int a2) -{ - int v3; // edx - int v4; // eax - int v5; // ecx - int ext_pos; // eax - int v7; // ebp - int v8; // edi - int result; // eax - char *v10; // edx - char *v11; // eax - int v12; // eax - int v13; // edx - __int64 v14; // rax - int v15; // eax - int v16; // eax - unsigned int v17; // eax - unsigned int v18; // edx - int v19; // edx - int v20; // ecx - char v21[29]; // [esp+1Fh] [ebp-1Dh] BYREF - - if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) - return -1; - if ( *(_BYTE *)(this + 73) ) - { - if ( *(_BYTE *)(this + 84) ) - { - v3 = *(_DWORD *)(this + 80); - v4 = *(_DWORD *)(this + 76) + (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); - *(_DWORD *)(this + 76) = v4; - v5 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 8) = v4; - *(_DWORD *)(this + 4) = v5; - *(_DWORD *)(this + 12) = v3; - *(_BYTE *)(this + 84) = 0; - } - ext_pos = std::filebuf::_M_get_ext_pos(this, this + 60); - v7 = *(_DWORD *)(this + 60); - v8 = ext_pos; - if ( (unsigned __int8)std::filebuf::_M_terminate_output(this) ) - { - v14 = std::__basic_file::seekoff((FILE **)(this + 40), v8, 1); - if ( ((unsigned int)v14 & HIDWORD(v14)) != -1 ) - { - *(_DWORD *)(this + 20) = 0; - *(_WORD *)(this + 73) = 0; - v15 = *(_DWORD *)(this + 92); - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 104) = v15; - *(_DWORD *)(this + 100) = v15; - v16 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 24) = 0; - *(_DWORD *)(this + 4) = v16; - *(_DWORD *)(this + 8) = v16; - *(_DWORD *)(this + 12) = v16; - *(_DWORD *)(this + 56) = v7; - goto LABEL_19; - } - } - return -1; - } - v10 = *(char **)(this + 16); - v11 = *(char **)(this + 20); - if ( v10 >= v11 ) - { -LABEL_19: - v17 = *(_DWORD *)(this + 68); - if ( v17 <= 1 ) - { - v21[0] = a2; - if ( a2 == -1 ) - { - *(_BYTE *)(this + 74) = 1; - return 0; - } - if ( std::filebuf::_M_convert_to_external(this, v21, 1u) ) - { - *(_BYTE *)(this + 74) = 1; - return a2; - } - return -1; - } - v19 = *(_DWORD *)(this + 64); - v20 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v19; - *(_DWORD *)(this + 8) = v19; - *(_DWORD *)(this + 12) = v19; - if ( (v20 & 0x10) != 0 || (v20 & 1) != 0 ) - { - *(_DWORD *)(this + 20) = v19; - *(_DWORD *)(this + 16) = v19; - *(_DWORD *)(this + 24) = v19 + v17 - 1; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - *(_BYTE *)(this + 74) = 1; - if ( a2 != -1 ) - { - **(_BYTE **)(this + 20) = a2; - result = a2; - ++*(_DWORD *)(this + 20); - return result; - } - return 0; - } - if ( a2 != -1 ) - { - *v11 = a2; - v10 = *(char **)(this + 16); - v11 = (char *)(*(_DWORD *)(this + 20) + 1); - *(_DWORD *)(this + 20) = v11; - } - if ( !std::filebuf::_M_convert_to_external(this, v10, v11 - v10) ) - return -1; - v12 = *(_DWORD *)(this + 64); - v13 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v12; - *(_DWORD *)(this + 8) = v12; - *(_DWORD *)(this + 12) = v12; - if ( ((v13 & 0x10) != 0 || (v13 & 1) != 0) && (v18 = *(_DWORD *)(this + 68), v18 > 1) ) - { - *(_DWORD *)(this + 20) = v12; - *(_DWORD *)(this + 16) = v12; - *(_DWORD *)(this + 24) = v12 + v18 - 1; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - result = a2; - if ( a2 == -1 ) - return 0; - return result; -} -// 4E1550: using guessed type char var_1D[29]; - -//----- (004E17B0) -------------------------------------------------------- -int __thiscall std::filebuf::pbackfail(char *this, int a2) -{ - char v3; // di - unsigned int v4; // eax - int v5; // edx - int result; // eax - _BYTE *v7; // eax - int v8; // eax - int v9; // eax - int v10[7]; // [esp+24h] [ebp-1Ch] BYREF - - if ( (this[48] & 8) == 0 ) - return -1; - if ( this[74] ) - { - if ( (*(int (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, -1) == -1 ) - return -1; - v9 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - v3 = this[84]; - *((_DWORD *)this + 1) = v9; - *((_DWORD *)this + 2) = v9; - *((_DWORD *)this + 3) = v9; - *((_DWORD *)this + 6) = 0; - this[74] = 0; - } - else - { - v3 = this[84]; - v4 = *((_DWORD *)this + 2); - if ( v4 > *((_DWORD *)this + 1) ) - { - *((_DWORD *)this + 2) = v4 - 1; - v5 = *(unsigned __int8 *)(v4 - 1); - goto LABEL_5; - } - } - (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); - if ( (v10[0] & v10[1]) == -1 ) - return -1; - v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); - if ( v5 == -1 ) - return -1; -LABEL_5: - result = 0; - if ( a2 == -1 ) - return result; - result = v5; - if ( v5 == a2 ) - return result; - if ( v3 ) - return -1; - v7 = (_BYTE *)*((_DWORD *)this + 2); - if ( !this[84] ) - { - *((_DWORD *)this + 19) = v7; - v8 = *((_DWORD *)this + 3); - *((_DWORD *)this + 3) = this + 76; - *((_DWORD *)this + 20) = v8; - v7 = this + 75; - *((_DWORD *)this + 1) = this + 75; - *((_DWORD *)this + 2) = this + 75; - this[84] = 1; - } - this[73] = 1; - *v7 = a2; - return a2; -} - -//----- (004E18E0) -------------------------------------------------------- -int __fastcall std::filebuf::showmanyc(_DWORD *a1) -{ - int v1; // esi - FILE **v2; // ebp - int v4; // ecx - int v5; // esi - int v6; // edi - int v8; // esi - - v1 = a1[12]; - if ( (v1 & 8) == 0 ) - return -1; - v2 = (FILE **)(a1 + 10); - if ( !std::__basic_file::is_open(a1 + 10) ) - return -1; - v4 = a1[22]; - v5 = v1 & 4; - v6 = a1[3] - a1[2]; - if ( !v4 ) - std::__throw_bad_cast(); - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) - return v6; - v8 = std::__basic_file::showmanyc(v2); - return v8 / (*(int (**)(void))(*(_DWORD *)a1[22] + 32))() + v6; -} - -//----- (004E1970) -------------------------------------------------------- -int __fastcall std::filebuf::underflow(int a1) -{ - unsigned __int8 *v2; // eax - int result; // eax - bool v4; // zf - unsigned int v5; // edx - int v6; // ecx - int v7; // edi - int v8; // ecx - int v9; // eax - signed int v10; // esi - int v11; // ecx - const void *v12; // eax - signed int v13; // edi - unsigned int v14; // edx - signed int v15; // ecx - char *v16; // ebp - int v17; // ecx - char *v18; // eax - void *v19; // edx - int v20; // esi - char v21; // di - int v22; // ebp - char v23; // al - int v24; // eax - int v25; // eax - int v26; // eax - _BYTE *Src; // ecx - unsigned int v28; // eax - size_t Size; // esi - int v30; // eax - int *v31; // eax - unsigned __int8 *v32; // edx - int v33; // eax - char *v34; // eax - char *v35; // eax - char *v36; // eax - unsigned int v37; // [esp+48h] [ebp-34h] - unsigned int v38; // [esp+4Ch] [ebp-30h] - unsigned int v39; // [esp+4Ch] [ebp-30h] - unsigned int v40; // [esp+4Ch] [ebp-30h] - unsigned int v41; // [esp+4Ch] [ebp-30h] - unsigned int v42; // [esp+4Ch] [ebp-30h] - void *v43; // [esp+5Ch] [ebp-20h] BYREF - - if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) - return -1; - if ( *(_BYTE *)(a1 + 74) ) - { - result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, -1); - if ( result == -1 ) - return result; - v2 = *(unsigned __int8 **)(a1 + 64); - v4 = *(_BYTE *)(a1 + 84) == 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v2; - *(_DWORD *)(a1 + 8) = v2; - *(_DWORD *)(a1 + 12) = v2; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 74) = 0; - if ( v4 ) - goto LABEL_4; -LABEL_9: - v4 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; - v5 = *(_DWORD *)(a1 + 80); - *(_BYTE *)(a1 + 84) = 0; - v6 = *(_DWORD *)(a1 + 64); - v2 = (unsigned __int8 *)(*(_DWORD *)(a1 + 76) + !v4); - *(_DWORD *)(a1 + 12) = v5; - *(_DWORD *)(a1 + 76) = v2; - *(_DWORD *)(a1 + 4) = v6; - *(_DWORD *)(a1 + 8) = v2; - if ( (unsigned int)v2 < v5 ) - return *v2; - goto LABEL_10; - } - v2 = *(unsigned __int8 **)(a1 + 8); - if ( *(_BYTE *)(a1 + 84) ) - goto LABEL_9; -LABEL_4: - if ( (unsigned int)v2 < *(_DWORD *)(a1 + 12) ) - return *v2; -LABEL_10: - v7 = 2; - if ( *(_DWORD *)(a1 + 68) >= 2u ) - v7 = *(_DWORD *)(a1 + 68); - v8 = *(_DWORD *)(a1 + 88); - v37 = v7 - 1; - if ( !v8 ) - std::__throw_bad_cast(); - if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) ) - { - v9 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 20))(*(_DWORD *)(a1 + 88)); - if ( v9 <= 0 ) - { - v26 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 32))(*(_DWORD *)(a1 + 88)); - v11 = v7 - 1; - v10 = v7 + v26 - 2; - } - else - { - v10 = v37 * v9; - v11 = v37 * v9; - } - v12 = *(const void **)(a1 + 100); - v13 = *(_DWORD *)(a1 + 104) - (_DWORD)v12; - v14 = v11 - v13; - if ( v11 <= v13 ) - v14 = 0; - v15 = *(_DWORD *)(a1 + 96); - if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 4) == *(_DWORD *)(a1 + 12) ) - { - if ( !v13 ) - { - if ( v10 <= v15 ) - { - v16 = *(char **)(a1 + 92); - goto LABEL_22; - } - v42 = v14; - v36 = (char *)operator new[](v10); - v14 = v42; - v16 = v36; -LABEL_61: - if ( *(_DWORD *)(a1 + 92) ) - { - v39 = v14; - operator delete[](*(void **)(a1 + 92)); - v14 = v39; - } - *(_DWORD *)(a1 + 92) = v16; - *(_DWORD *)(a1 + 96) = v10; -LABEL_22: - v17 = *(_DWORD *)(a1 + 56); - v18 = &v16[v13]; - *(_DWORD *)(a1 + 100) = v16; - *(_DWORD *)(a1 + 104) = &v16[v13]; - *(_DWORD *)(a1 + 60) = v17; - if ( v14 ) - { - v20 = 0; - goto LABEL_30; - } - v19 = *(void **)(a1 + 4); - v20 = 0; - v43 = v19; - if ( v18 <= v16 ) - { - while ( 1 ) - { -LABEL_29: - v18 = *(char **)(a1 + 104); - v14 = 1; - v13 = (signed int)&v18[-*(_DWORD *)(a1 + 92)]; -LABEL_30: - if ( (signed int)(v14 + v13) > *(_DWORD *)(a1 + 96) ) - std::__throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid"); - v24 = std::__basic_file::xsgetn((FILE **)(a1 + 40), v18, v14); - if ( v24 ) - { - if ( v24 == -1 ) - goto LABEL_49; - v21 = 0; - } - else - { - v21 = 1; - } - v19 = *(void **)(a1 + 4); - v16 = *(char **)(a1 + 100); - v18 = (char *)(*(_DWORD *)(a1 + 104) + v24); - *(_DWORD *)(a1 + 104) = v18; - v43 = v19; - if ( v18 > v16 ) - break; - if ( v20 == 3 ) - goto LABEL_41; - if ( v21 ) - goto LABEL_37; - } - } - else - { - v21 = 0; - } - v20 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, void *, unsigned int, void **))(**(_DWORD **)(a1 + 88) + 16))( - *(_DWORD *)(a1 + 88), - a1 + 56, - v16, - v18, - a1 + 100, - v19, - (unsigned int)v19 + v37, - &v43); - if ( v20 != 3 ) - { - v22 = (int)v43 - *(_DWORD *)(a1 + 4); - if ( v20 != 2 ) - { - v23 = v21 | (v43 != *(void **)(a1 + 4)); - goto LABEL_28; - } - if ( (int)v43 - *(_DWORD *)(a1 + 4) <= 0 ) - { - if ( !v21 ) - std::__throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file"); - goto LABEL_57; - } - goto LABEL_51; - } - v18 = *(char **)(a1 + 104); - v19 = *(void **)(a1 + 4); -LABEL_41: - Src = *(_BYTE **)(a1 + 92); - v28 = v18 - Src; - v22 = v28; - Size = v28; - if ( v37 < v28 ) - { - Size = v37; - v22 = v37; - } - else if ( !v28 ) - { -LABEL_43: - *(_DWORD *)(a1 + 100) = Src; - v20 = 3; - v23 = v21 | (v22 != 0); -LABEL_28: - if ( !v23 ) - goto LABEL_29; - if ( v22 > 0 ) - goto LABEL_51; - if ( v21 ) - { -LABEL_37: - v25 = *(_DWORD *)(a1 + 64); - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v25; - *(_DWORD *)(a1 + 8) = v25; - *(_DWORD *)(a1 + 12) = v25; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 0; - if ( v20 == 1 ) - std::__throw_ios_failure("basic_filebuf::underflow incomplete character in file"); - return -1; - } -LABEL_49: - v31 = __errno(); - std::__throw_ios_failure( - (std::__ios_failure *)"basic_filebuf::underflow error reading the file", - (std::runtime_error *)*v31); - } - memcpy(v19, Src, Size); - Src = (_BYTE *)(*(_DWORD *)(a1 + 92) + Size); - goto LABEL_43; - } - if ( v10 <= v15 ) - { - v16 = *(char **)(a1 + 92); - v14 = 0; -LABEL_68: - v40 = v14; - memmove(v16, v12, v13); - v16 = *(char **)(a1 + 92); - v14 = v40; - goto LABEL_22; - } - v35 = (char *)operator new[](v10); - v14 = 0; - v16 = v35; - } - else - { - if ( v10 <= v15 ) - { - v16 = *(char **)(a1 + 92); - if ( !v13 ) - goto LABEL_22; - goto LABEL_68; - } - v38 = v14; - v34 = (char *)operator new[](v10); - v14 = v38; - v16 = v34; - if ( !v13 ) - goto LABEL_61; - } - v41 = v14; - memcpy(v16, *(const void **)(a1 + 100), v13); - v14 = v41; - goto LABEL_61; - } - v30 = std::__basic_file::xsgetn((FILE **)(a1 + 40), *(void **)(a1 + 4), v37); - v22 = v30; - if ( !v30 ) - { -LABEL_57: - v33 = *(_DWORD *)(a1 + 64); - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v33; - *(_DWORD *)(a1 + 8) = v33; - *(_DWORD *)(a1 + 12) = v33; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 0; - return -1; - } - if ( v30 <= 0 ) - goto LABEL_49; -LABEL_51: - v32 = *(unsigned __int8 **)(a1 + 64); - v4 = (*(_BYTE *)(a1 + 48) & 8) == 0; - *(_DWORD *)(a1 + 4) = v32; - *(_DWORD *)(a1 + 8) = v32; - if ( v4 ) - *(_DWORD *)(a1 + 12) = v32; - else - *(_DWORD *)(a1 + 12) = &v32[v22]; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 1; - return *v32; -} - -//----- (004E1E10) -------------------------------------------------------- -int __thiscall std::filebuf::basic_filebuf(int this, std::locale *a2) -{ - int v3; // eax - int v4; // edx - int v5; // edi - int v6; // ecx - int v7; // eax - int result; // eax - int v9; // edi - int v10; // edx - int v11; // edx - int v12; // edx - int v13; // edx - int v14; // edx - int v15; // edx - int v16; // edx - const std::locale *v17; // [esp+4h] [ebp-18h] - - std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); - v3 = *((_DWORD *)a2 + 10); - v4 = *((_DWORD *)a2 + 17); - *(_DWORD *)this = off_5600A0; - v5 = *((_DWORD *)a2 + 14); - v6 = *((_DWORD *)a2 + 16); - *(_DWORD *)(this + 32) = 0; - *(_DWORD *)(this + 40) = v3; - LOBYTE(v3) = *((_BYTE *)a2 + 44); - *(_DWORD *)(this + 36) = 0; - *(_BYTE *)(this + 44) = v3; - v7 = *((_DWORD *)a2 + 12); - *((_DWORD *)a2 + 10) = 0; - *((_BYTE *)a2 + 44) = 0; - *(_DWORD *)(this + 68) = v4; - LOWORD(v4) = *((_WORD *)a2 + 36); - *(_DWORD *)(this + 48) = v7; - result = *((_DWORD *)a2 + 13); - *(_WORD *)(this + 72) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 74); - *(_DWORD *)(this + 56) = v5; - v9 = *((_DWORD *)a2 + 15); - *(_BYTE *)(this + 74) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 75); - *(_DWORD *)(this + 64) = v6; - *(_DWORD *)(this + 60) = v9; - *((_DWORD *)a2 + 12) = 0; - *(_DWORD *)(this + 52) = result; - *((_DWORD *)a2 + 16) = 0; - *((_DWORD *)a2 + 17) = 1; - *((_WORD *)a2 + 36) = 0; - *((_BYTE *)a2 + 74) = 0; - *(_BYTE *)(this + 75) = v4; - v10 = *((_DWORD *)a2 + 19); - *((_DWORD *)a2 + 19) = 0; - *(_DWORD *)(this + 76) = v10; - v11 = *((_DWORD *)a2 + 20); - *((_DWORD *)a2 + 1) = 0; - *(_DWORD *)(this + 80) = v11; - LOBYTE(v11) = *((_BYTE *)a2 + 84); - *((_DWORD *)a2 + 20) = 0; - *(_BYTE *)(this + 84) = v11; - v12 = *((_DWORD *)a2 + 22); - *((_BYTE *)a2 + 84) = 0; - *(_DWORD *)(this + 88) = v12; - v13 = *((_DWORD *)a2 + 23); - *((_DWORD *)a2 + 2) = 0; - *(_DWORD *)(this + 92) = v13; - v14 = *((_DWORD *)a2 + 24); - *((_DWORD *)a2 + 23) = 0; - *(_DWORD *)(this + 96) = v14; - v15 = *((_DWORD *)a2 + 25); - *((_DWORD *)a2 + 24) = 0; - *(_DWORD *)(this + 100) = v15; - v16 = *((_DWORD *)a2 + 26); - *((_DWORD *)a2 + 25) = 0; - *(_DWORD *)(this + 104) = v16; - *((_DWORD *)a2 + 26) = 0; - *((_DWORD *)a2 + 3) = 0; - *((_DWORD *)a2 + 5) = 0; - *((_DWORD *)a2 + 4) = 0; - *((_DWORD *)a2 + 6) = 0; - *((_DWORD *)a2 + 14) = result; - *((_DWORD *)a2 + 15) = result; - return result; -} -// 4E1E1F: variable 'v17' is possibly undefined -// 5600A0: using guessed type int (*off_5600A0[2])(); - -//----- (004E1F50) -------------------------------------------------------- -void __fastcall std::filebuf::basic_filebuf(int a1) -{ - int v2; // [esp+20h] [ebp-4Ch] - - *(_DWORD *)a1 = &off_560424; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - v2 = a1 + 28; - std::locale::locale((_DWORD *)(a1 + 28)); - *(_DWORD *)a1 = off_5600A0; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 60) = 0; - *(_DWORD *)(a1 + 64) = 0; - *(_DWORD *)(a1 + 68) = 512; - *(_DWORD *)(a1 + 72) = 0; - *(_DWORD *)(a1 + 76) = 0; - *(_DWORD *)(a1 + 80) = 0; - *(_BYTE *)(a1 + 84) = 0; - *(_DWORD *)(a1 + 88) = 0; - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - if ( (unsigned __int8)std::has_facet>(v2) ) - *(_DWORD *)(a1 + 88) = std::use_facet>(v2); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (004E20E0) -------------------------------------------------------- -int __thiscall std::filebuf::basic_filebuf(int this, std::locale *a2) -{ - int v3; // eax - int v4; // edx - int v5; // edi - int v6; // ecx - int v7; // eax - int result; // eax - int v9; // edi - int v10; // edx - int v11; // edx - int v12; // edx - int v13; // edx - int v14; // edx - int v15; // edx - int v16; // edx - const std::locale *v17; // [esp+4h] [ebp-18h] - - std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); - v3 = *((_DWORD *)a2 + 10); - v4 = *((_DWORD *)a2 + 17); - *(_DWORD *)this = off_5600A0; - v5 = *((_DWORD *)a2 + 14); - v6 = *((_DWORD *)a2 + 16); - *(_DWORD *)(this + 32) = 0; - *(_DWORD *)(this + 40) = v3; - LOBYTE(v3) = *((_BYTE *)a2 + 44); - *(_DWORD *)(this + 36) = 0; - *(_BYTE *)(this + 44) = v3; - v7 = *((_DWORD *)a2 + 12); - *((_DWORD *)a2 + 10) = 0; - *((_BYTE *)a2 + 44) = 0; - *(_DWORD *)(this + 68) = v4; - LOWORD(v4) = *((_WORD *)a2 + 36); - *(_DWORD *)(this + 48) = v7; - result = *((_DWORD *)a2 + 13); - *(_WORD *)(this + 72) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 74); - *(_DWORD *)(this + 56) = v5; - v9 = *((_DWORD *)a2 + 15); - *(_BYTE *)(this + 74) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 75); - *(_DWORD *)(this + 64) = v6; - *(_DWORD *)(this + 60) = v9; - *((_DWORD *)a2 + 12) = 0; - *(_DWORD *)(this + 52) = result; - *((_DWORD *)a2 + 16) = 0; - *((_DWORD *)a2 + 17) = 1; - *((_WORD *)a2 + 36) = 0; - *((_BYTE *)a2 + 74) = 0; - *(_BYTE *)(this + 75) = v4; - v10 = *((_DWORD *)a2 + 19); - *((_DWORD *)a2 + 19) = 0; - *(_DWORD *)(this + 76) = v10; - v11 = *((_DWORD *)a2 + 20); - *((_DWORD *)a2 + 1) = 0; - *(_DWORD *)(this + 80) = v11; - LOBYTE(v11) = *((_BYTE *)a2 + 84); - *((_DWORD *)a2 + 20) = 0; - *(_BYTE *)(this + 84) = v11; - v12 = *((_DWORD *)a2 + 22); - *((_BYTE *)a2 + 84) = 0; - *(_DWORD *)(this + 88) = v12; - v13 = *((_DWORD *)a2 + 23); - *((_DWORD *)a2 + 2) = 0; - *(_DWORD *)(this + 92) = v13; - v14 = *((_DWORD *)a2 + 24); - *((_DWORD *)a2 + 23) = 0; - *(_DWORD *)(this + 96) = v14; - v15 = *((_DWORD *)a2 + 25); - *((_DWORD *)a2 + 24) = 0; - *(_DWORD *)(this + 100) = v15; - v16 = *((_DWORD *)a2 + 26); - *((_DWORD *)a2 + 25) = 0; - *(_DWORD *)(this + 104) = v16; - *((_DWORD *)a2 + 26) = 0; - *((_DWORD *)a2 + 3) = 0; - *((_DWORD *)a2 + 5) = 0; - *((_DWORD *)a2 + 4) = 0; - *((_DWORD *)a2 + 6) = 0; - *((_DWORD *)a2 + 14) = result; - *((_DWORD *)a2 + 15) = result; - return result; -} -// 4E20EF: variable 'v17' is possibly undefined -// 5600A0: using guessed type int (*off_5600A0[2])(); - -//----- (004E2220) -------------------------------------------------------- -void __fastcall std::filebuf::basic_filebuf(int a1) -{ - int v2; // [esp+20h] [ebp-4Ch] - - *(_DWORD *)a1 = &off_560424; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - v2 = a1 + 28; - std::locale::locale((_DWORD *)(a1 + 28)); - *(_DWORD *)a1 = off_5600A0; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 60) = 0; - *(_DWORD *)(a1 + 64) = 0; - *(_DWORD *)(a1 + 68) = 512; - *(_DWORD *)(a1 + 72) = 0; - *(_DWORD *)(a1 + 76) = 0; - *(_DWORD *)(a1 + 80) = 0; - *(_BYTE *)(a1 + 84) = 0; - *(_DWORD *)(a1 + 88) = 0; - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - if ( (unsigned __int8)std::has_facet>(v2) ) - *(_DWORD *)(a1 + 88) = std::use_facet>(v2); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (004E23B0) -------------------------------------------------------- -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600A0; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)a1 + 7); - operator delete(a1); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (004E2460) -------------------------------------------------------- -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600A0; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (004E2500) -------------------------------------------------------- -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600A0; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (004E25A0) -------------------------------------------------------- -int __thiscall std::filebuf::operator=(int this, int a2) -{ - int v3; // eax - char v4; // dl - int v5; // eax - int v6; // eax - int v7; // eax - int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - int v12; // eax - int v13; // eax - int v14; // eax - int v15; // eax - int result; // eax - - std::filebuf::close((struct _Unwind_Exception *)this); - std::streambuf::operator=((volatile signed __int32 **)this, a2); - v3 = *(_DWORD *)(this + 40); - *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); - v4 = *(_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 40) = v3; - LOBYTE(v3) = *(_BYTE *)(this + 44); - *(_BYTE *)(this + 44) = v4; - *(_BYTE *)(a2 + 44) = v3; - v5 = *(_DWORD *)(a2 + 48); - *(_DWORD *)(a2 + 48) = 0; - *(_DWORD *)(this + 48) = v5; - *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); - *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); - *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); - v6 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 64) = 0; - *(_DWORD *)(this + 64) = v6; - v7 = *(_DWORD *)(a2 + 68); - *(_DWORD *)(a2 + 68) = 1; - *(_DWORD *)(this + 68) = v7; - LOBYTE(v7) = *(_BYTE *)(a2 + 72); - *(_BYTE *)(a2 + 72) = 0; - *(_BYTE *)(this + 72) = v7; - v8 = *(_DWORD *)(a2 + 92); - *(_DWORD *)(a2 + 92) = 0; - *(_DWORD *)(this + 92) = v8; - v9 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 96) = 0; - *(_DWORD *)(this + 96) = v9; - v10 = *(_DWORD *)(a2 + 100); - *(_DWORD *)(a2 + 100) = 0; - *(_DWORD *)(this + 100) = v10; - v11 = *(_DWORD *)(a2 + 104); - *(_DWORD *)(a2 + 104) = 0; - *(_DWORD *)(this + 104) = v11; - LOBYTE(v11) = *(_BYTE *)(a2 + 73); - *(_BYTE *)(a2 + 73) = 0; - *(_BYTE *)(this + 73) = v11; - LOBYTE(v11) = *(_BYTE *)(a2 + 74); - *(_BYTE *)(a2 + 74) = 0; - *(_BYTE *)(this + 74) = v11; - v12 = *(_DWORD *)(a2 + 76); - *(_DWORD *)(a2 + 76) = 0; - *(_DWORD *)(this + 76) = v12; - v13 = *(_DWORD *)(a2 + 80); - *(_DWORD *)(a2 + 80) = 0; - *(_DWORD *)(this + 80) = v13; - LOBYTE(v13) = *(_BYTE *)(a2 + 84); - *(_BYTE *)(a2 + 84) = 0; - *(_BYTE *)(this + 84) = v13; - v14 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 20) = 0; - *(_DWORD *)(a2 + 4) = v14; - *(_DWORD *)(a2 + 8) = v14; - *(_DWORD *)(a2 + 12) = v14; - v15 = *(_DWORD *)(a2 + 52); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 56) = v15; - *(_DWORD *)(a2 + 60) = v15; - result = this; - *(_DWORD *)(a2 + 24) = 0; - return result; -} - -//----- (004E26C0) -------------------------------------------------------- -unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int a2) -{ - int v2; // eax - bool v3; // bl - int v4; // edx - unsigned int result; // eax - - v2 = this[12]; - v3 = (v2 & 8) != 0; - if ( (v2 & 0x10) != 0 ) - LOBYTE(v2) = 1; - v4 = this[16]; - result = v2 & 1; - this[1] = v4; - this[2] = v4; - if ( a2 > 0 && v3 ) - { - result = v4 + 2 * a2; - this[3] = result; -LABEL_6: - this[5] = 0; - this[4] = 0; - this[6] = 0; - return result; - } - this[3] = v4; - if ( a2 ) - goto LABEL_6; - if ( !(_BYTE)result ) - goto LABEL_6; - result = this[17]; - if ( result <= 1 ) - goto LABEL_6; - result = v4 + 2 * result - 2; - this[5] = v4; - this[4] = v4; - this[6] = result; - return result; -} - -//----- (004E2740) -------------------------------------------------------- -int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int a2) -{ - if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 92) + 24))(*(_DWORD *)(this + 92)) ) - return (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 12)) >> 1; - else - return *(_DWORD *)(this + 96) - + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 92) + 28))( - *(_DWORD *)(this + 92), - a2, - *(_DWORD *)(this + 96), - *(_DWORD *)(this + 104), - (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1) - - *(_DWORD *)(this + 108); -} - -//----- (004E27B0) -------------------------------------------------------- -int __fastcall std::wfilebuf::_M_create_pback(int a1) -{ - int v1; // eax - int result; // eax - - if ( !*(_BYTE *)(a1 + 88) ) - { - v1 = *(_DWORD *)(a1 + 8); - *(_BYTE *)(a1 + 88) = 1; - *(_DWORD *)(a1 + 80) = v1; - *(_DWORD *)(a1 + 84) = *(_DWORD *)(a1 + 12); - *(_DWORD *)(a1 + 4) = a1 + 76; - *(_DWORD *)(a1 + 8) = a1 + 76; - result = a1 + 78; - *(_DWORD *)(a1 + 12) = a1 + 78; - } - return result; -} - -//----- (004E27E0) -------------------------------------------------------- -int __fastcall std::wfilebuf::_M_destroy_pback(int a1) -{ - bool v1; // zf - int v2; // eax - int v3; // ebx - int result; // eax - int v5; // edx - - if ( *(_BYTE *)(a1 + 88) ) - { - v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); - v2 = *(_DWORD *)(a1 + 80); - v3 = *(_DWORD *)(a1 + 64); - *(_BYTE *)(a1 + 88) = 0; - result = v2 + 2 * !v1; - v5 = *(_DWORD *)(a1 + 84); - *(_DWORD *)(a1 + 4) = v3; - *(_DWORD *)(a1 + 80) = result; - *(_DWORD *)(a1 + 8) = result; - *(_DWORD *)(a1 + 12) = v5; - } - return result; -} - -//----- (004E2820) -------------------------------------------------------- -int __fastcall std::wfilebuf::_M_terminate_output(int a1) -{ - int v1; // esi - int v3; // eax - int v4; // ecx - _DWORD **v5; // eax - int v6; // ebx - _DWORD **v7; // ebp - unsigned int v8; // eax - unsigned int v9; // esi - unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] - FILE **v12; // [esp+2Ch] [ebp-B4h] - int v13; // [esp+30h] [ebp-B0h] - int v14; // [esp+40h] [ebp-A0h] BYREF - char v15[128]; // [esp+44h] [ebp-9Ch] BYREF - char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF - - v1 = 1; - if ( *(_DWORD *)(a1 + 16) < *(_DWORD *)(a1 + 20) ) - { - v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, 0xFFFF); - LOBYTE(v3) = (_WORD)v3 != 0xFFFF; - v1 = v3; - } - if ( *(_BYTE *)(a1 + 74) ) - { - v4 = *(_DWORD *)(a1 + 92); - if ( !v4 ) - std::__throw_bad_cast(); - v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); - if ( !v11 ) - { - if ( (_BYTE)v1 ) - { - v12 = (FILE **)(a1 + 40); - v5 = (_DWORD **)a1; - v6 = a1 + 56; - v7 = v5; - while ( 1 ) - { - v8 = (*(int (__thiscall **)(_DWORD *, int, char *, char *, int *))(*v7[23] + 12))(v7[23], v6, v15, v16, &v14); - v9 = v8; - if ( v8 == 2 ) - break; - if ( v8 <= 1 && v14 - (int)v15 > 0 ) - { - v13 = v14 - (_DWORD)v15; - if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) - return v11; - if ( v9 == 1 ) - continue; - } - return ((unsigned __int16 (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, 0xFFFF) != 0xFFFF; - } - return v11; - } - } - } - return v1; -} -// 4E2820: using guessed type char var_1C[28]; - -//----- (004E2930) -------------------------------------------------------- -bool __thiscall std::wfilebuf::_M_convert_to_external(int this, char *a2, unsigned int a3) -{ - int v4; // ecx - unsigned int v5; // esi - int v6; // eax - void *v7; // esp - void *v8; // esp - unsigned int v9; // eax - unsigned int v10; // eax - int v12; // esi - char v13; // [esp+20h] [ebp-38h] - int v14; // [esp+38h] [ebp-20h] BYREF - int v15; // [esp+3Ch] [ebp-1Ch] BYREF - char v16[24]; // [esp+40h] [ebp-18h] BYREF - - v4 = *(_DWORD *)(this + 92); - v5 = a3; - if ( !v4 ) - std::__throw_bad_cast(); - if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) - goto LABEL_5; - v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(**(_DWORD **)(this + 92) + 32))(*(_DWORD *)(this + 92)) + 27) >> 4); - v7 = alloca(v6); - v8 = alloca(v6); - v9 = (*(int (__thiscall **)(_DWORD, int, char *, char *))(**(_DWORD **)(this + 92) + 8))( - *(_DWORD *)(this + 92), - this + 56, - a2, - &a2[2 * a3]); - if ( v9 > 1 ) - { - if ( v9 == 3 ) - { -LABEL_5: - v10 = std::__basic_file::xsputn((FILE **)(this + 40), a2, a3); - return v10 == v5; - } -LABEL_11: - std::__throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error"); - } - v13 = v9; - v5 = v14 - (_DWORD)v16; - v10 = std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16); - if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) - return v10 == v5; - if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(**(_DWORD **)(this + 92) + 8))( - *(_DWORD *)(this + 92), - &v15, - v15, - *(_DWORD *)(this + 20), - &v15, - v16, - v14, - &v14) == 2 ) - goto LABEL_11; - v12 = v14 - (_DWORD)v16; - return std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16) == v12; -} - -//----- (004E2AA0) -------------------------------------------------------- -void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1) -{ - if ( *(_BYTE *)(a1 + 72) ) - { - if ( *(_DWORD *)(a1 + 64) ) - operator delete[](*(void **)(a1 + 64)); - *(_DWORD *)(a1 + 64) = 0; - *(_BYTE *)(a1 + 72) = 0; - } - if ( *(_DWORD *)(a1 + 96) ) - operator delete[](*(void **)(a1 + 96)); - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - *(_DWORD *)(a1 + 108) = 0; -} - -//----- (004E2B00) -------------------------------------------------------- -void __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1) -{ - unsigned int v1; // eax - - if ( !*(_BYTE *)(a1 + 72) && !*(_DWORD *)(a1 + 64) ) - { - v1 = *(_DWORD *)(a1 + 68); - if ( v1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - *(_DWORD *)(a1 + 64) = operator new[](2 * v1); - *(_BYTE *)(a1 + 72) = 1; - } -} - -//----- (004E2B40) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3) -{ - _BYTE *v3; // esi - int v5; // eax - int v6; // eax - unsigned int v8; // eax - _DWORD v9[7]; // [esp+20h] [ebp-1Ch] BYREF - - v3 = this + 10; - if ( !std::__basic_file::is_open(this + 10) ) - { - std::__basic_file::open(v3, a2, a3, 436); - if ( std::__basic_file::is_open(v3) ) - { - v5 = this[16]; - if ( !*((_BYTE *)this + 72) && !v5 ) - { - v8 = this[17]; - if ( v8 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v5 = operator new[](2 * v8); - *((_BYTE *)this + 72) = 1; - this[16] = v5; - } - this[1] = v5; - this[2] = v5; - this[3] = v5; - v6 = this[13]; - this[12] = a3; - *(_WORD *)((char *)this + 73) = 0; - this[5] = 0; - this[4] = 0; - this[6] = 0; - this[14] = v6; - this[15] = v6; - if ( (a3 & 2) == 0 ) - return this; - (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v9, this, 0, 0, 2, a3); - if ( (v9[0] & v9[1]) != -1 ) - return this; - std::wfilebuf::close((struct _Unwind_Exception *)this); - } - } - return 0; -} - -//----- (004E2C60) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, wchar_t *a2, int a3) -{ - _BYTE *v3; // esi - int v5; // eax - int v6; // eax - unsigned int v8; // eax - _DWORD v9[7]; // [esp+20h] [ebp-1Ch] BYREF - - v3 = this + 10; - if ( !std::__basic_file::is_open(this + 10) ) - { - std::__basic_file::open(v3, a2, a3); - if ( std::__basic_file::is_open(v3) ) - { - v5 = this[16]; - if ( !*((_BYTE *)this + 72) && !v5 ) - { - v8 = this[17]; - if ( v8 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v5 = operator new[](2 * v8); - *((_BYTE *)this + 72) = 1; - this[16] = v5; - } - this[1] = v5; - this[2] = v5; - this[3] = v5; - v6 = this[13]; - this[12] = a3; - *(_WORD *)((char *)this + 73) = 0; - this[5] = 0; - this[4] = 0; - this[6] = 0; - this[14] = v6; - this[15] = v6; - if ( (a3 & 2) == 0 ) - return this; - (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v9, this, 0, 0, 2, a3); - if ( (v9[0] & v9[1]) != -1 ) - return this; - std::wfilebuf::close((struct _Unwind_Exception *)this); - } - } - return 0; -} - -//----- (004E2D70) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3) -{ - return std::wfilebuf::open(this, *(char **)a2, a3); -} - -//----- (004E2D80) -------------------------------------------------------- -int __thiscall std::wfilebuf::swap(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - char v15; // dl - int v16; // edx - int v17; // eax - int v18; // edx - int v19; // eax - int v20; // edx - int v21; // eax - int v22; // edx - int v23; // eax - int v24; // edx - int v25; // eax - int v26; // edx - int v27; // eax - int v28; // edx - int v29; // eax - int v30; // edx - int v31; // eax - int v32; // edx - int v33; // eax - int v34; // edx - int v35; // eax - int v36; // edx - int v37; // eax - int v38; // eax - int result; // eax - const std::locale *v40; // [esp+4h] [ebp-48h] - volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] - _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - v41 = (volatile signed __int32 **)(this + 28); - std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); - std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); - std::locale::~locale(v42); - v14 = *(_DWORD *)(this + 40); - *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); - v15 = *(_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 40) = v14; - LOBYTE(v14) = *(_BYTE *)(this + 44); - *(_BYTE *)(this + 44) = v15; - v16 = *(_DWORD *)(a2 + 48); - *(_BYTE *)(a2 + 44) = v14; - v17 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 48) = v16; - v18 = *(_DWORD *)(a2 + 52); - *(_DWORD *)(a2 + 48) = v17; - v19 = *(_DWORD *)(this + 52); - *(_DWORD *)(this + 52) = v18; - v20 = *(_DWORD *)(a2 + 56); - *(_DWORD *)(a2 + 52) = v19; - v21 = *(_DWORD *)(this + 56); - *(_DWORD *)(this + 56) = v20; - v22 = *(_DWORD *)(a2 + 60); - *(_DWORD *)(a2 + 56) = v21; - v23 = *(_DWORD *)(this + 60); - *(_DWORD *)(this + 60) = v22; - v24 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 60) = v23; - v25 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 64) = v24; - v26 = *(_DWORD *)(a2 + 68); - *(_DWORD *)(a2 + 64) = v25; - v27 = *(_DWORD *)(this + 68); - *(_DWORD *)(this + 68) = v26; - *(_DWORD *)(a2 + 68) = v27; - LOBYTE(v27) = *(_BYTE *)(this + 72); - *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); - v28 = *(_DWORD *)(a2 + 96); - *(_BYTE *)(a2 + 72) = v27; - v29 = *(_DWORD *)(this + 96); - *(_DWORD *)(this + 96) = v28; - v30 = *(_DWORD *)(a2 + 100); - *(_DWORD *)(a2 + 96) = v29; - v31 = *(_DWORD *)(this + 100); - *(_DWORD *)(this + 100) = v30; - v32 = *(_DWORD *)(a2 + 104); - *(_DWORD *)(a2 + 100) = v31; - v33 = *(_DWORD *)(this + 104); - *(_DWORD *)(this + 104) = v32; - v34 = *(_DWORD *)(a2 + 108); - *(_DWORD *)(a2 + 104) = v33; - v35 = *(_DWORD *)(this + 108); - *(_DWORD *)(this + 108) = v34; - LOBYTE(v34) = *(_BYTE *)(a2 + 73); - *(_DWORD *)(a2 + 108) = v35; - LOBYTE(v35) = *(_BYTE *)(this + 73); - *(_BYTE *)(this + 73) = v34; - LOBYTE(v34) = *(_BYTE *)(a2 + 74); - *(_BYTE *)(a2 + 73) = v35; - LOBYTE(v35) = *(_BYTE *)(this + 74); - *(_BYTE *)(this + 74) = v34; - v36 = *(_DWORD *)(a2 + 80); - *(_BYTE *)(a2 + 74) = v35; - v37 = *(_DWORD *)(this + 80); - *(_DWORD *)(this + 80) = v36; - *(_DWORD *)(a2 + 80) = v37; - v38 = *(_DWORD *)(this + 84); - *(_DWORD *)(this + 84) = *(_DWORD *)(a2 + 84); - LOBYTE(v36) = *(_BYTE *)(a2 + 88); - *(_DWORD *)(a2 + 84) = v38; - result = *(unsigned __int8 *)(this + 88); - *(_BYTE *)(this + 88) = v36; - *(_BYTE *)(a2 + 88) = result; - return result; -} -// 4E2DE8: variable 'v40' is possibly undefined - -//----- (004E2F10) -------------------------------------------------------- -int __fastcall std::wfilebuf::sync(_DWORD *a1) -{ - if ( a1[4] >= a1[5] ) - return 0; - else - return -((*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, 0xFFFF) == 0xFFFF); -} - -//----- (004E2F50) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::wfilebuf::close(struct _Unwind_Exception *a1) -{ - bool v1; // zf - void *v2; // eax - int v3; // edx - int v4; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+1Ch] [ebp-60h] - int v7; // [esp+24h] [ebp-58h] - char v8; // [esp+2Bh] [ebp-51h] - - lpuexcpt = a1; - v7 = (int)a1 + 40; - if ( !std::__basic_file::is_open((_DWORD *)a1 + 10) ) - return 0; - v8 = std::wfilebuf::_M_terminate_output((int)lpuexcpt) ^ 1; - v1 = *((_BYTE *)lpuexcpt + 72) == 0; - *((_DWORD *)lpuexcpt + 12) = 0; - *((_BYTE *)lpuexcpt + 88) = 0; - if ( !v1 ) - { - v2 = (void *)*((_DWORD *)lpuexcpt + 16); - if ( v2 ) - operator delete[](v2); - *((_DWORD *)lpuexcpt + 16) = 0; - *((_BYTE *)lpuexcpt + 72) = 0; - } - if ( *((_DWORD *)lpuexcpt + 24) ) - operator delete[](*((void **)lpuexcpt + 24)); - *((_DWORD *)lpuexcpt + 24) = 0; - *((_DWORD *)lpuexcpt + 25) = 0; - *((_DWORD *)lpuexcpt + 26) = 0; - *((_DWORD *)lpuexcpt + 27) = 0; - *(_WORD *)((char *)lpuexcpt + 73) = 0; - v3 = *((_DWORD *)lpuexcpt + 16); - *((_DWORD *)lpuexcpt + 5) = 0; - *((_DWORD *)lpuexcpt + 1) = v3; - *((_DWORD *)lpuexcpt + 2) = v3; - *((_DWORD *)lpuexcpt + 3) = v3; - v4 = *((_DWORD *)lpuexcpt + 13); - *((_DWORD *)lpuexcpt + 4) = 0; - *((_DWORD *)lpuexcpt + 6) = 0; - *((_DWORD *)lpuexcpt + 14) = v4; - *((_DWORD *)lpuexcpt + 15) = v4; - if ( !std::__basic_file::close(v7) || v8 ) - return 0; - return lpuexcpt; -} - -//----- (004E3100) -------------------------------------------------------- -char __thiscall std::wfilebuf::imbue(void *this, int a2) -{ - void *v3; // esi - int v4; // eax - int v5; // ecx - int v6; // ecx - int v7; // edi - const void *Src; // eax - int v9; // edi - size_t Size; // edi - int v11; // eax - int v12; // eax - int v14; // [esp+30h] [ebp-1Ch] BYREF - int v15; // [esp+34h] [ebp-18h] - - if ( (unsigned __int8)std::has_facet>(a2) ) - v3 = std::use_facet>(a2); - else - v3 = 0; - LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)this + 10); - if ( !(_BYTE)v4 ) - goto LABEL_13; - if ( !*((_BYTE *)this + 73) && !*((_BYTE *)this + 74) ) - { - *((_DWORD *)this + 23) = v3; - return v4; - } - v5 = *((_DWORD *)this + 23); - if ( !v5 ) - goto LABEL_24; - v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); - if ( v4 == -1 ) - goto LABEL_18; - if ( !*((_BYTE *)this + 73) ) - { - if ( !*((_BYTE *)this + 74) ) - goto LABEL_13; - LOBYTE(v4) = std::wfilebuf::_M_terminate_output((int)this); - if ( (_BYTE)v4 ) - { - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 6) = 0; - goto LABEL_13; - } -LABEL_18: - *((_DWORD *)this + 23) = 0; - return v4; - } - v6 = *((_DWORD *)this + 23); - if ( !v6 ) -LABEL_24: - std::__throw_bad_cast(); - LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); - if ( !(_BYTE)v4 ) - { - v7 = *((_DWORD *)this + 24); - Src = (const void *)(v7 - + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**((_DWORD **)this + 23) + 28))( - *((_DWORD *)this + 23), - (int)this + 60, - v7, - *((_DWORD *)this + 26), - (*((_DWORD *)this + 2) - *((_DWORD *)this + 1)) >> 1)); - v9 = *((_DWORD *)this + 27); - *((_DWORD *)this + 26) = Src; - Size = v9 - (_DWORD)Src; - if ( Size ) - memmove(*((void **)this + 24), Src, Size); - v11 = *((_DWORD *)this + 24); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 26) = v11; - *((_DWORD *)this + 27) = Size + v11; - v12 = *((_DWORD *)this + 16); - *((_DWORD *)this + 6) = 0; - *((_DWORD *)this + 1) = v12; - *((_DWORD *)this + 2) = v12; - *((_DWORD *)this + 3) = v12; - v4 = *((_DWORD *)this + 13); - *((_DWORD *)this + 14) = v4; - *((_DWORD *)this + 15) = v4; - goto LABEL_13; - } - if ( !v3 ) - goto LABEL_18; - LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); - if ( !(_BYTE)v4 ) - { - (*(void (__thiscall **)(int *, void *, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( - &v14, - this, - 0, - 0, - 1, - *((_DWORD *)this + 12)); - LOBYTE(v4) = v14 & v15; - if ( (v14 & v15) == -1 ) - goto LABEL_18; - } -LABEL_13: - *((_DWORD *)this + 23) = v3; - return v4; -} - -//----- (004E32E0) -------------------------------------------------------- -int __thiscall std::wfilebuf::setbuf(int this, __int64 a2) -{ - if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) - return this; - if ( !a2 ) - { - *(_DWORD *)(this + 68) = 1; - return this; - } - if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) - return this; - *(_QWORD *)(this + 64) = a2; - return this; -} - -//----- (004E3340) -------------------------------------------------------- -int __thiscall std::wfilebuf::xsgetn(_DWORD *this, char *a2, signed int a3) -{ - char *v4; // edi - signed int v5; // esi - _WORD *v6; // ecx - _WORD *v7; // eax - int v8; // ebp - bool v9; // zf - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // ecx - int v14; // eax - int v15; // ecx - char v16; // al - int v18; // eax - _BYTE *v19; // edx - _BYTE *Src; // eax - int i; // eax - int v22; // eax - int *v23; // eax - int v24; // [esp+1Ch] [ebp-20h] - int v25; // [esp+1Ch] [ebp-20h] - - v4 = a2; - v5 = a3; - if ( *((_BYTE *)this + 88) ) - { - v6 = (_WORD *)this[2]; - v7 = (_WORD *)this[1]; - v8 = 0; - if ( a3 > 0 && v7 == v6 ) - { - v6 = v7 + 1; - v5 = a3 - 1; - v4 = a2 + 2; - v8 = 1; - *(_WORD *)a2 = *v7; - } - v9 = v6 == v7; - v10 = this[20]; - v11 = this[16]; - *((_BYTE *)this + 88) = 0; - this[1] = v11; - v12 = v10 + 2 * !v9; - v13 = this[21]; - this[20] = v12; - this[2] = v12; - this[3] = v13; - } - else if ( *((_BYTE *)this + 74) ) - { - if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*this + 52))(this, 0xFFFF) == 0xFFFF ) - return 0; - v18 = this[16]; - this[5] = 0; - v8 = 0; - this[4] = 0; - this[1] = v18; - this[2] = v18; - this[3] = v18; - this[6] = 0; - *((_BYTE *)this + 74) = 0; - } - else - { - v8 = 0; - } - v14 = 2; - if ( this[17] >= 2u ) - v14 = this[17]; - if ( v5 <= v14 - 1 ) - goto LABEL_12; - v15 = this[23]; - if ( !v15 ) - std::__throw_bad_cast(); - v24 = this[12]; - v16 = (*(int (__fastcall **)(int))(*(_DWORD *)v15 + 24))(v15); - if ( (v24 & 8) != 0 && v16 ) - { - v19 = (_BYTE *)this[3]; - Src = (_BYTE *)this[2]; - if ( Src != v19 ) - { - v25 = v19 - Src; - memcpy(v4, Src, v19 - Src); - this[2] += v25; - v4 += v25; - v8 += v25 >> 1; - v5 -= v25 >> 1; - } - for ( i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5); - ; - i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5) ) - { - if ( i == -1 ) - { - v23 = __errno(); - std::__throw_ios_failure( - (std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", - (std::runtime_error *)*v23); - } - if ( !i ) - break; - v8 += i; - v5 -= i; - if ( !v5 ) - goto LABEL_26; - v4 += 2 * i; - } - if ( !v5 ) - { -LABEL_26: - *((_BYTE *)this + 73) = 1; - return v8; - } - v22 = this[16]; - this[5] = 0; - this[4] = 0; - this[1] = v22; - this[2] = v22; - this[3] = v22; - this[6] = 0; - *((_BYTE *)this + 73) = 0; - } - else - { -LABEL_12: - v8 += std::wstreambuf::xsgetn(this, v4, v5); - } - return v8; -} - -//----- (004E3540) -------------------------------------------------------- -int __thiscall std::wfilebuf::xsputn(int this, char *a2, signed int a3) -{ - int v4; // eax - int v5; // ecx - char v6; // si - int v7; // edx - int v8; // eax - unsigned int v9; // ecx - int v10; // esi - int v11; // eax - int v12; // edx - bool v13; // cc - int result; // eax - int v15; // edx - int v16; // ecx - unsigned int v17; // ecx - char *v18; // [esp+0h] [ebp-2Ch] - - v4 = *(_DWORD *)(this + 48); - v5 = *(_DWORD *)(this + 92); - if ( (v4 & 0x10) != 0 ) - LOBYTE(v4) = 1; - v6 = v4 & 1; - if ( !v5 ) - std::__throw_bad_cast(); - if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) - return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); - v7 = *(_DWORD *)(this + 20); - v8 = (*(_DWORD *)(this + 24) - v7) >> 1; - if ( !*(_BYTE *)(this + 74) ) - { - v9 = *(_DWORD *)(this + 68); - if ( v9 > 1 ) - v8 = v9 - 1; - } - if ( v8 >= 1024 ) - v8 = 1024; - if ( a3 < v8 ) - return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); - v18 = *(char **)(this + 16); - v10 = (v7 - (int)v18) >> 1; - v11 = std::__basic_file::xsputn_2((FILE **)(this + 40), v18, v10, a2, a3); - if ( v10 + a3 == v11 ) - { - v15 = *(_DWORD *)(this + 64); - v16 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v15; - *(_DWORD *)(this + 8) = v15; - *(_DWORD *)(this + 12) = v15; - if ( ((v16 & 0x10) != 0 || (v16 & 1) != 0) && (v17 = *(_DWORD *)(this + 68), v17 > 1) ) - { - *(_DWORD *)(this + 20) = v15; - *(_DWORD *)(this + 16) = v15; - *(_DWORD *)(this + 24) = v15 + 2 * v17 - 2; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - *(_BYTE *)(this + 74) = 1; - } - v12 = v11 - v10; - v13 = v10 < v11; - result = 0; - if ( v13 ) - return v12; - return result; -} - -//----- (004E3670) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) -{ - _DWORD *result; // eax - __int64 v7; // rax - int v8; // ecx - int v9; // ecx - - *this = -1; - this[1] = -1; - this[2] = 0; - if ( !(unsigned __int8)std::wfilebuf::_M_terminate_output(a2) ) - return this; - v7 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, a4); - if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) - return this; - *this = v7; - result = this; - *(_WORD *)(a2 + 73) = 0; - v8 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 20) = 0; - *(_DWORD *)(a2 + 108) = v8; - *(_DWORD *)(a2 + 104) = v8; - v9 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 4) = v9; - *(_DWORD *)(a2 + 8) = v9; - *(_DWORD *)(a2 + 12) = v9; - *(_DWORD *)(a2 + 24) = 0; - *(_DWORD *)(a2 + 56) = a5; - this[2] = a5; - this[1] = HIDWORD(v7); - return result; -} - -//----- (004E3720) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) -{ - int v6; // ecx - int v7; // eax - int v8; // edx - bool v9; // al - bool v11; // zf - __int64 v12; // rax - __int64 v13; // rax - int v14; // eax - int v15; // edx - unsigned int v16; // esi - unsigned int v17; // edi - __int64 v18; // kr00_8 - __int64 ext_pos; // [esp+28h] [ebp-54h] - bool v20; // [esp+34h] [ebp-48h] - int v21; // [esp+34h] [ebp-48h] - int v22; // [esp+3Ch] [ebp-40h] - int v23; // [esp+4Ch] [ebp-30h] BYREF - int v24[11]; // [esp+50h] [ebp-2Ch] BYREF - - v6 = *(_DWORD *)(a2 + 92); - if ( v6 ) - { - v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); - v8 = 0; - if ( v7 >= 0 ) - v8 = v7; - v9 = v7 <= 0; - v22 = v8; - } - else - { - v22 = 0; - v9 = 1; - } - *this = -1; - this[1] = -1; - this[2] = 0; - v20 = v9 && a3 != 0; - if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v20 ) - return this; - if ( a4 != 1 - || a3 - || *(_BYTE *)(a2 + 74) - && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 92) + 24))(*(_DWORD *)(a2 + 92)) ) - { - if ( *(_BYTE *)(a2 + 88) ) - { - v11 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); - *(_BYTE *)(a2 + 88) = 0; - v14 = *(_DWORD *)(a2 + 80) + 2 * !v11; - v15 = *(_DWORD *)(a2 + 84); - *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 80) = v14; - *(_DWORD *)(a2 + 8) = v14; - *(_DWORD *)(a2 + 12) = v15; - } - v21 = *(_DWORD *)(a2 + 52); - v23 = v21; - v16 = a3 * v22; - v17 = (unsigned __int64)(a3 * v22) >> 32; - if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) - { - v23 = *(_DWORD *)(a2 + 60); - v18 = std::wfilebuf::_M_get_ext_pos(a2, (int)&v23) + __PAIR64__(v17, v16); - std::wfilebuf::_M_seek(v24, a2, v18, 1, v23); - } - else - { - std::wfilebuf::_M_seek(v24, a2, __SPAIR64__(v17, v16), a4, v21); - } - *this = v24[0]; - this[1] = v24[1]; - this[2] = v24[2]; - return this; - } - v11 = *(_BYTE *)(a2 + 73) == 0; - ext_pos = 0LL; - v23 = *(_DWORD *)(a2 + 52); - if ( !v11 ) - { - v23 = *(_DWORD *)(a2 + 60); - ext_pos = std::wfilebuf::_M_get_ext_pos(a2, (int)&v23); - } - if ( *(_BYTE *)(a2 + 74) ) - ext_pos = (*(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16)) >> 1; - v12 = std::__basic_file::seekoff((FILE **)(a2 + 40), 0LL, 1); - if ( ((unsigned int)v12 & HIDWORD(v12)) == -1 ) - return this; - v13 = ext_pos + v12; - *this = v13; - LODWORD(v13) = v23; - this[1] = HIDWORD(v13); - this[2] = v13; - return this; -} - -//----- (004E3990) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) -{ - bool v7; // zf - int v8; // eax - int v9; // edx - int v10; // ebp - __int64 v11; // rax - int v13; // ecx - int v14; // ecx - - *this = -1; - this[1] = -1; - this[2] = 0; - if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) - { - if ( *(_BYTE *)(a2 + 88) ) - { - v7 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); - *(_BYTE *)(a2 + 88) = 0; - v8 = *(_DWORD *)(a2 + 80) + 2 * !v7; - v9 = *(_DWORD *)(a2 + 84); - *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 80) = v8; - *(_DWORD *)(a2 + 8) = v8; - *(_DWORD *)(a2 + 12) = v9; - } - v10 = a4; - if ( (unsigned __int8)std::wfilebuf::_M_terminate_output(a2) ) - { - v11 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, 0); - if ( ((unsigned int)v11 & HIDWORD(v11)) == -1 ) - { - v10 = 0; - } - else - { - *(_DWORD *)(a2 + 20) = 0; - *(_WORD *)(a2 + 73) = 0; - v13 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 108) = v13; - *(_DWORD *)(a2 + 104) = v13; - v14 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 24) = 0; - *(_DWORD *)(a2 + 4) = v14; - *(_DWORD *)(a2 + 8) = v14; - *(_DWORD *)(a2 + 12) = v14; - *(_DWORD *)(a2 + 56) = a4; - } - } - else - { - v10 = 0; - v11 = -1LL; - } - *(_QWORD *)this = v11; - this[2] = v10; - } - return this; -} - -//----- (004E3AC0) -------------------------------------------------------- -int __thiscall std::wfilebuf::overflow(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // ecx - int ext_pos; // eax - int v7; // ebp - int v8; // edi - int result; // eax - char *v10; // edx - char *v11; // eax - int v12; // eax - int v13; // edx - __int64 v14; // rax - int v15; // eax - int v16; // eax - unsigned int v17; // eax - int v18; // edx - int v19; // ecx - _WORD *v20; // eax - unsigned int v21; // edx - __int16 v22[15]; // [esp+1Eh] [ebp-1Eh] BYREF - - if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) - return -1; - if ( *(_BYTE *)(this + 73) ) - { - if ( *(_BYTE *)(this + 88) ) - { - v3 = *(_DWORD *)(this + 80) + 2 * (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); - v4 = *(_DWORD *)(this + 84); - *(_DWORD *)(this + 80) = v3; - v5 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 8) = v3; - *(_DWORD *)(this + 4) = v5; - *(_DWORD *)(this + 12) = v4; - *(_BYTE *)(this + 88) = 0; - } - ext_pos = std::wfilebuf::_M_get_ext_pos(this, this + 60); - v7 = *(_DWORD *)(this + 60); - v8 = ext_pos; - if ( (unsigned __int8)std::wfilebuf::_M_terminate_output(this) ) - { - v14 = std::__basic_file::seekoff((FILE **)(this + 40), v8, 1); - if ( ((unsigned int)v14 & HIDWORD(v14)) != -1 ) - { - *(_DWORD *)(this + 20) = 0; - *(_WORD *)(this + 73) = 0; - v15 = *(_DWORD *)(this + 96); - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 108) = v15; - *(_DWORD *)(this + 104) = v15; - v16 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 24) = 0; - *(_DWORD *)(this + 4) = v16; - *(_DWORD *)(this + 8) = v16; - *(_DWORD *)(this + 12) = v16; - *(_DWORD *)(this + 56) = v7; - goto LABEL_19; - } - } - return -1; - } - v10 = *(char **)(this + 16); - v11 = *(char **)(this + 20); - if ( v11 <= v10 ) - { -LABEL_19: - v17 = *(_DWORD *)(this + 68); - if ( v17 <= 1 ) - { - v22[0] = a2; - if ( (_WORD)a2 == 0xFFFF ) - { - *(_BYTE *)(this + 74) = 1; - return 0; - } - if ( std::wfilebuf::_M_convert_to_external(this, (char *)v22, 1u) ) - { - *(_BYTE *)(this + 74) = 1; - return a2; - } - return -1; - } - v18 = *(_DWORD *)(this + 64); - v19 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v18; - *(_DWORD *)(this + 8) = v18; - *(_DWORD *)(this + 12) = v18; - if ( (v19 & 0x10) != 0 || (v19 & 1) != 0 ) - { - *(_DWORD *)(this + 20) = v18; - *(_DWORD *)(this + 16) = v18; - *(_DWORD *)(this + 24) = v18 + 2 * v17 - 2; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - *(_BYTE *)(this + 74) = 1; - if ( (_WORD)a2 != 0xFFFF ) - { - v20 = *(_WORD **)(this + 20); - *v20 = a2; - *(_DWORD *)(this + 20) = v20 + 1; - return a2; - } - return 0; - } - if ( (_WORD)a2 != 0xFFFF ) - { - *(_WORD *)v11 = a2; - v11 += 2; - *(_DWORD *)(this + 20) = v11; - } - if ( !std::wfilebuf::_M_convert_to_external(this, v10, (v11 - v10) >> 1) ) - return -1; - v12 = *(_DWORD *)(this + 64); - v13 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v12; - *(_DWORD *)(this + 8) = v12; - *(_DWORD *)(this + 12) = v12; - if ( ((v13 & 0x10) != 0 || (v13 & 1) != 0) && (v21 = *(_DWORD *)(this + 68), v21 > 1) ) - { - *(_DWORD *)(this + 20) = v12; - *(_DWORD *)(this + 16) = v12; - *(_DWORD *)(this + 24) = v12 + 2 * v21 - 2; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - result = a2; - if ( (_WORD)a2 == 0xFFFF ) - return 0; - return result; -} -// 4E3AC0: using guessed type __int16 var_1E[15]; - -//----- (004E3D10) -------------------------------------------------------- -int __thiscall std::wfilebuf::pbackfail(char *this, int a2) -{ - char v3; // di - unsigned int v4; // eax - int v5; // edx - int result; // eax - _WORD *v7; // eax - int v8; // eax - int v9; // eax - int v10[7]; // [esp+24h] [ebp-1Ch] BYREF - - if ( (this[48] & 8) == 0 ) - return -1; - if ( this[74] ) - { - if ( (*(unsigned __int16 (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, 0xFFFF) == 0xFFFF ) - return -1; - v9 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - v3 = this[88]; - *((_DWORD *)this + 1) = v9; - *((_DWORD *)this + 2) = v9; - *((_DWORD *)this + 3) = v9; - *((_DWORD *)this + 6) = 0; - this[74] = 0; - } - else - { - v3 = this[88]; - v4 = *((_DWORD *)this + 2); - if ( v4 > *((_DWORD *)this + 1) ) - { - *((_DWORD *)this + 2) = v4 - 2; - v5 = *(unsigned __int16 *)(v4 - 2); - goto LABEL_5; - } - } - (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); - if ( (v10[0] & v10[1]) == -1 ) - return -1; - v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); - if ( (_WORD)v5 == 0xFFFF ) - return -1; -LABEL_5: - result = 0; - if ( (_WORD)a2 == 0xFFFF ) - return result; - result = v5; - if ( (_WORD)v5 == (_WORD)a2 ) - return result; - if ( v3 ) - return -1; - v7 = (_WORD *)*((_DWORD *)this + 2); - if ( !this[88] ) - { - *((_DWORD *)this + 20) = v7; - v8 = *((_DWORD *)this + 3); - *((_DWORD *)this + 3) = this + 78; - *((_DWORD *)this + 21) = v8; - v7 = this + 76; - *((_DWORD *)this + 1) = this + 76; - *((_DWORD *)this + 2) = this + 76; - this[88] = 1; - } - this[73] = 1; - *v7 = a2; - return a2; -} - -//----- (004E3E40) -------------------------------------------------------- -int __fastcall std::wfilebuf::showmanyc(_DWORD *a1) -{ - int v1; // edi - FILE **v2; // ebp - int v4; // ecx - int v5; // edi - int v6; // esi - int v8; // edi - - v1 = a1[12]; - if ( (v1 & 8) == 0 ) - return -1; - v2 = (FILE **)(a1 + 10); - if ( !std::__basic_file::is_open(a1 + 10) ) - return -1; - v4 = a1[23]; - v5 = v1 & 4; - v6 = (a1[3] - a1[2]) >> 1; - if ( !v4 ) - std::__throw_bad_cast(); - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) - return v6; - v8 = std::__basic_file::showmanyc(v2); - return v8 / (*(int (**)(void))(*(_DWORD *)a1[23] + 32))() + v6; -} - -//----- (004E3ED0) -------------------------------------------------------- -int __fastcall std::wfilebuf::underflow(int a1) -{ - unsigned __int16 *v2; // eax - int v3; // edi - int v4; // ecx - int v5; // eax - signed int v6; // esi - int v7; // ecx - const void *Src; // eax - signed int Size; // edi - unsigned int v10; // edx - signed int v11; // ecx - char *v12; // ebp - int v13; // ecx - char *v14; // eax - void *v15; // edx - int v16; // esi - char v17; // di - int v18; // ebp - char v19; // al - int v20; // eax - int v21; // eax - int result; // eax - bool v23; // zf - int v24; // eax - int v25; // ecx - unsigned int v26; // edx - int v27; // eax - int v28; // eax - unsigned int v29; // ecx - char *v30; // eax - unsigned int v31; // esi - unsigned __int16 *v32; // eax - int v33; // eax - int *v34; // eax - char *v35; // eax - char *v36; // eax - char *v37; // eax - unsigned int v38; // [esp+44h] [ebp-34h] - unsigned int v39; // [esp+48h] [ebp-30h] - unsigned int v40; // [esp+48h] [ebp-30h] - unsigned int v41; // [esp+48h] [ebp-30h] - unsigned int v42; // [esp+48h] [ebp-30h] - unsigned int v43; // [esp+48h] [ebp-30h] - void *v44; // [esp+58h] [ebp-20h] BYREF - - if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) - return -1; - if ( *(_BYTE *)(a1 + 74) ) - { - result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, 0xFFFF); - if ( (_WORD)result == 0xFFFF ) - return result; - v2 = *(unsigned __int16 **)(a1 + 64); - v23 = *(_BYTE *)(a1 + 88) == 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v2; - *(_DWORD *)(a1 + 8) = v2; - *(_DWORD *)(a1 + 12) = v2; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 74) = 0; - if ( v23 ) - { -LABEL_4: - if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v2 ) - goto LABEL_5; - return *v2; - } - } - else - { - v2 = *(unsigned __int16 **)(a1 + 8); - if ( !*(_BYTE *)(a1 + 88) ) - goto LABEL_4; - } - v23 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; - v24 = *(_DWORD *)(a1 + 80); - *(_BYTE *)(a1 + 88) = 0; - v25 = *(_DWORD *)(a1 + 64); - v2 = (unsigned __int16 *)(v24 + 2 * !v23); - v26 = *(_DWORD *)(a1 + 84); - *(_DWORD *)(a1 + 80) = v2; - *(_DWORD *)(a1 + 4) = v25; - *(_DWORD *)(a1 + 8) = v2; - *(_DWORD *)(a1 + 12) = v26; - if ( v26 > (unsigned int)v2 ) - return *v2; -LABEL_5: - v3 = 2; - if ( *(_DWORD *)(a1 + 68) >= 2u ) - v3 = *(_DWORD *)(a1 + 68); - v4 = *(_DWORD *)(a1 + 92); - v38 = v3 - 1; - if ( !v4 ) - std::__throw_bad_cast(); - if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) - { - v5 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 20))(*(_DWORD *)(a1 + 92)); - if ( v5 <= 0 ) - { - v33 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 32))(*(_DWORD *)(a1 + 92)); - v7 = v3 - 1; - v6 = v3 + v33 - 2; - } - else - { - v6 = v38 * v5; - v7 = v38 * v5; - } - Src = *(const void **)(a1 + 104); - Size = *(_DWORD *)(a1 + 108) - (_DWORD)Src; - v10 = v7 - Size; - if ( v7 <= Size ) - v10 = 0; - v11 = *(_DWORD *)(a1 + 100); - if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 4) == *(_DWORD *)(a1 + 12) ) - { - if ( !Size ) - { - if ( v6 <= v11 ) - { - v12 = *(char **)(a1 + 96); - goto LABEL_17; - } - v43 = v10; - v37 = (char *)operator new[](v6); - v10 = v43; - v12 = v37; -LABEL_62: - if ( *(_DWORD *)(a1 + 96) ) - { - v40 = v10; - operator delete[](*(void **)(a1 + 96)); - v10 = v40; - } - *(_DWORD *)(a1 + 96) = v12; - *(_DWORD *)(a1 + 100) = v6; -LABEL_17: - v13 = *(_DWORD *)(a1 + 56); - v14 = &v12[Size]; - *(_DWORD *)(a1 + 104) = v12; - *(_DWORD *)(a1 + 108) = &v12[Size]; - *(_DWORD *)(a1 + 60) = v13; - if ( v10 ) - { - v16 = 0; - goto LABEL_25; - } - v15 = *(void **)(a1 + 4); - v16 = 0; - v44 = v15; - if ( v14 <= v12 ) - { - while ( 1 ) - { -LABEL_24: - v14 = *(char **)(a1 + 108); - v10 = 1; - Size = (signed int)&v14[-*(_DWORD *)(a1 + 96)]; -LABEL_25: - if ( (signed int)(v10 + Size) > *(_DWORD *)(a1 + 100) ) - std::__throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid"); - v20 = std::__basic_file::xsgetn((FILE **)(a1 + 40), v14, v10); - if ( v20 ) - { - if ( v20 == -1 ) - goto LABEL_59; - v17 = 0; - } - else - { - v17 = 1; - } - v15 = *(void **)(a1 + 4); - v12 = *(char **)(a1 + 104); - v14 = (char *)(*(_DWORD *)(a1 + 108) + v20); - *(_DWORD *)(a1 + 108) = v14; - v44 = v15; - if ( v14 > v12 ) - break; - if ( v16 == 3 ) - goto LABEL_44; - if ( v17 ) - goto LABEL_32; - } - } - else - { - v17 = 0; - } - v16 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, void *, unsigned int, void **))(**(_DWORD **)(a1 + 92) + 16))( - *(_DWORD *)(a1 + 92), - a1 + 56, - v12, - v14, - a1 + 104, - v15, - (unsigned int)v15 + 2 * v38, - &v44); - if ( v16 != 3 ) - { - v18 = ((int)v44 - *(_DWORD *)(a1 + 4)) >> 1; - if ( v16 != 2 ) - { - v19 = v17 | (v44 != *(void **)(a1 + 4)); - goto LABEL_23; - } - if ( (int)v44 - *(_DWORD *)(a1 + 4) <= 0 ) - { - if ( !v17 ) - std::__throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file"); - goto LABEL_41; - } - goto LABEL_54; - } - v14 = *(char **)(a1 + 108); - v15 = *(void **)(a1 + 4); -LABEL_44: - v29 = *(_DWORD *)(a1 + 96); - v30 = &v14[-v29]; - v18 = (int)v30; - v31 = (unsigned int)v30; - if ( v38 < (unsigned int)v30 ) - { - v31 = v38; - v18 = v38; - } - else if ( !v30 ) - { -LABEL_46: - *(_DWORD *)(a1 + 104) = v29; - v16 = 3; - v19 = v17 | (v18 != 0); -LABEL_23: - if ( !v19 ) - goto LABEL_24; - if ( v18 > 0 ) - goto LABEL_54; - if ( v17 ) - { -LABEL_32: - v21 = *(_DWORD *)(a1 + 64); - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v21; - *(_DWORD *)(a1 + 8) = v21; - *(_DWORD *)(a1 + 12) = v21; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 0; - if ( v16 == 1 ) - std::__throw_ios_failure("basic_filebuf::underflow incomplete character in file"); - return -1; - } -LABEL_59: - v34 = __errno(); - std::__throw_ios_failure( - (std::__ios_failure *)"basic_filebuf::underflow error reading the file", - (std::runtime_error *)*v34); - } - memcpy(v15, *(const void **)(a1 + 96), 2 * v31); - v29 = v31 + *(_DWORD *)(a1 + 96); - goto LABEL_46; - } - if ( v6 <= v11 ) - { - v12 = *(char **)(a1 + 96); - v10 = 0; -LABEL_73: - v42 = v10; - memmove(v12, Src, Size); - v12 = *(char **)(a1 + 96); - v10 = v42; - goto LABEL_17; - } - v36 = (char *)operator new[](v6); - v10 = 0; - v12 = v36; - } - else - { - if ( v6 <= v11 ) - { - v12 = *(char **)(a1 + 96); - if ( !Size ) - goto LABEL_17; - goto LABEL_73; - } - v39 = v10; - v35 = (char *)operator new[](v6); - v10 = v39; - v12 = v35; - if ( !Size ) - goto LABEL_62; - } - v41 = v10; - memcpy(v12, *(const void **)(a1 + 104), Size); - v10 = v41; - goto LABEL_62; - } - v27 = std::__basic_file::xsgetn((FILE **)(a1 + 40), *(void **)(a1 + 4), v38); - v18 = v27; - if ( !v27 ) - { -LABEL_41: - v28 = *(_DWORD *)(a1 + 64); - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v28; - *(_DWORD *)(a1 + 8) = v28; - *(_DWORD *)(a1 + 12) = v28; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 0; - return -1; - } - if ( v27 <= 0 ) - goto LABEL_59; -LABEL_54: - v32 = *(unsigned __int16 **)(a1 + 64); - v23 = (*(_BYTE *)(a1 + 48) & 8) == 0; - *(_DWORD *)(a1 + 4) = v32; - *(_DWORD *)(a1 + 8) = v32; - if ( v23 ) - *(_DWORD *)(a1 + 12) = v32; - else - *(_DWORD *)(a1 + 12) = &v32[v18]; - *(_DWORD *)(a1 + 20) = 0; - result = *v32; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 1; - return result; -} - -//----- (004E4380) -------------------------------------------------------- -int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *a2) -{ - int v3; // eax - int v4; // edx - int v5; // edi - int v6; // ecx - int v7; // eax - int result; // eax - int v9; // edi - int v10; // edx - int v11; // edx - int v12; // edx - int v13; // edx - int v14; // edx - int v15; // edx - int v16; // edx - const std::locale *v17; // [esp+4h] [ebp-18h] - - std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); - v3 = *((_DWORD *)a2 + 10); - v4 = *((_DWORD *)a2 + 17); - *(_DWORD *)this = off_5600E0; - v5 = *((_DWORD *)a2 + 14); - v6 = *((_DWORD *)a2 + 16); - *(_DWORD *)(this + 32) = 0; - *(_DWORD *)(this + 40) = v3; - LOBYTE(v3) = *((_BYTE *)a2 + 44); - *(_DWORD *)(this + 36) = 0; - *(_BYTE *)(this + 44) = v3; - v7 = *((_DWORD *)a2 + 12); - *((_DWORD *)a2 + 10) = 0; - *((_BYTE *)a2 + 44) = 0; - *(_DWORD *)(this + 68) = v4; - LOWORD(v4) = *((_WORD *)a2 + 36); - *(_DWORD *)(this + 48) = v7; - result = *((_DWORD *)a2 + 13); - *(_WORD *)(this + 72) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 74); - *(_DWORD *)(this + 56) = v5; - v9 = *((_DWORD *)a2 + 15); - *(_BYTE *)(this + 74) = v4; - LOWORD(v4) = *((_WORD *)a2 + 38); - *(_DWORD *)(this + 64) = v6; - *(_DWORD *)(this + 60) = v9; - *((_DWORD *)a2 + 12) = 0; - *(_DWORD *)(this + 52) = result; - *((_DWORD *)a2 + 16) = 0; - *((_DWORD *)a2 + 17) = 1; - *((_WORD *)a2 + 36) = 0; - *((_BYTE *)a2 + 74) = 0; - *(_WORD *)(this + 76) = v4; - v10 = *((_DWORD *)a2 + 20); - *((_DWORD *)a2 + 20) = 0; - *(_DWORD *)(this + 80) = v10; - v11 = *((_DWORD *)a2 + 21); - *((_DWORD *)a2 + 1) = 0; - *(_DWORD *)(this + 84) = v11; - LOBYTE(v11) = *((_BYTE *)a2 + 88); - *((_DWORD *)a2 + 21) = 0; - *(_BYTE *)(this + 88) = v11; - v12 = *((_DWORD *)a2 + 23); - *((_BYTE *)a2 + 88) = 0; - *(_DWORD *)(this + 92) = v12; - v13 = *((_DWORD *)a2 + 24); - *((_DWORD *)a2 + 2) = 0; - *(_DWORD *)(this + 96) = v13; - v14 = *((_DWORD *)a2 + 25); - *((_DWORD *)a2 + 24) = 0; - *(_DWORD *)(this + 100) = v14; - v15 = *((_DWORD *)a2 + 26); - *((_DWORD *)a2 + 25) = 0; - *(_DWORD *)(this + 104) = v15; - v16 = *((_DWORD *)a2 + 27); - *((_DWORD *)a2 + 26) = 0; - *(_DWORD *)(this + 108) = v16; - *((_DWORD *)a2 + 27) = 0; - *((_DWORD *)a2 + 3) = 0; - *((_DWORD *)a2 + 5) = 0; - *((_DWORD *)a2 + 4) = 0; - *((_DWORD *)a2 + 6) = 0; - *((_DWORD *)a2 + 14) = result; - *((_DWORD *)a2 + 15) = result; - return result; -} -// 4E438F: variable 'v17' is possibly undefined -// 5600E0: using guessed type int (*off_5600E0[2])(); - -//----- (004E44C0) -------------------------------------------------------- -void __fastcall std::wfilebuf::basic_filebuf(int a1) -{ - int v2; // [esp+20h] [ebp-4Ch] - - *(_DWORD *)a1 = &off_560464; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - v2 = a1 + 28; - std::locale::locale((_DWORD *)(a1 + 28)); - *(_DWORD *)a1 = off_5600E0; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); - *(_WORD *)(a1 + 72) = 0; - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 60) = 0; - *(_DWORD *)(a1 + 64) = 0; - *(_DWORD *)(a1 + 68) = 512; - *(_BYTE *)(a1 + 74) = 0; - *(_WORD *)(a1 + 76) = 0; - *(_DWORD *)(a1 + 80) = 0; - *(_DWORD *)(a1 + 84) = 0; - *(_BYTE *)(a1 + 88) = 0; - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - *(_DWORD *)(a1 + 108) = 0; - if ( (unsigned __int8)std::has_facet>(v2) ) - *(_DWORD *)(a1 + 92) = std::use_facet>(v2); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (004E4660) -------------------------------------------------------- -int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *a2) -{ - int v3; // eax - int v4; // edx - int v5; // edi - int v6; // ecx - int v7; // eax - int result; // eax - int v9; // edi - int v10; // edx - int v11; // edx - int v12; // edx - int v13; // edx - int v14; // edx - int v15; // edx - int v16; // edx - const std::locale *v17; // [esp+4h] [ebp-18h] - - std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); - v3 = *((_DWORD *)a2 + 10); - v4 = *((_DWORD *)a2 + 17); - *(_DWORD *)this = off_5600E0; - v5 = *((_DWORD *)a2 + 14); - v6 = *((_DWORD *)a2 + 16); - *(_DWORD *)(this + 32) = 0; - *(_DWORD *)(this + 40) = v3; - LOBYTE(v3) = *((_BYTE *)a2 + 44); - *(_DWORD *)(this + 36) = 0; - *(_BYTE *)(this + 44) = v3; - v7 = *((_DWORD *)a2 + 12); - *((_DWORD *)a2 + 10) = 0; - *((_BYTE *)a2 + 44) = 0; - *(_DWORD *)(this + 68) = v4; - LOWORD(v4) = *((_WORD *)a2 + 36); - *(_DWORD *)(this + 48) = v7; - result = *((_DWORD *)a2 + 13); - *(_WORD *)(this + 72) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 74); - *(_DWORD *)(this + 56) = v5; - v9 = *((_DWORD *)a2 + 15); - *(_BYTE *)(this + 74) = v4; - LOWORD(v4) = *((_WORD *)a2 + 38); - *(_DWORD *)(this + 64) = v6; - *(_DWORD *)(this + 60) = v9; - *((_DWORD *)a2 + 12) = 0; - *(_DWORD *)(this + 52) = result; - *((_DWORD *)a2 + 16) = 0; - *((_DWORD *)a2 + 17) = 1; - *((_WORD *)a2 + 36) = 0; - *((_BYTE *)a2 + 74) = 0; - *(_WORD *)(this + 76) = v4; - v10 = *((_DWORD *)a2 + 20); - *((_DWORD *)a2 + 20) = 0; - *(_DWORD *)(this + 80) = v10; - v11 = *((_DWORD *)a2 + 21); - *((_DWORD *)a2 + 1) = 0; - *(_DWORD *)(this + 84) = v11; - LOBYTE(v11) = *((_BYTE *)a2 + 88); - *((_DWORD *)a2 + 21) = 0; - *(_BYTE *)(this + 88) = v11; - v12 = *((_DWORD *)a2 + 23); - *((_BYTE *)a2 + 88) = 0; - *(_DWORD *)(this + 92) = v12; - v13 = *((_DWORD *)a2 + 24); - *((_DWORD *)a2 + 2) = 0; - *(_DWORD *)(this + 96) = v13; - v14 = *((_DWORD *)a2 + 25); - *((_DWORD *)a2 + 24) = 0; - *(_DWORD *)(this + 100) = v14; - v15 = *((_DWORD *)a2 + 26); - *((_DWORD *)a2 + 25) = 0; - *(_DWORD *)(this + 104) = v15; - v16 = *((_DWORD *)a2 + 27); - *((_DWORD *)a2 + 26) = 0; - *(_DWORD *)(this + 108) = v16; - *((_DWORD *)a2 + 27) = 0; - *((_DWORD *)a2 + 3) = 0; - *((_DWORD *)a2 + 5) = 0; - *((_DWORD *)a2 + 4) = 0; - *((_DWORD *)a2 + 6) = 0; - *((_DWORD *)a2 + 14) = result; - *((_DWORD *)a2 + 15) = result; - return result; -} -// 4E466F: variable 'v17' is possibly undefined -// 5600E0: using guessed type int (*off_5600E0[2])(); - -//----- (004E47A0) -------------------------------------------------------- -void __fastcall std::wfilebuf::basic_filebuf(int a1) -{ - int v2; // [esp+20h] [ebp-4Ch] - - *(_DWORD *)a1 = &off_560464; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - v2 = a1 + 28; - std::locale::locale((_DWORD *)(a1 + 28)); - *(_DWORD *)a1 = off_5600E0; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); - *(_WORD *)(a1 + 72) = 0; - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 60) = 0; - *(_DWORD *)(a1 + 64) = 0; - *(_DWORD *)(a1 + 68) = 512; - *(_BYTE *)(a1 + 74) = 0; - *(_WORD *)(a1 + 76) = 0; - *(_DWORD *)(a1 + 80) = 0; - *(_DWORD *)(a1 + 84) = 0; - *(_BYTE *)(a1 + 88) = 0; - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - *(_DWORD *)(a1 + 108) = 0; - if ( (unsigned __int8)std::has_facet>(v2) ) - *(_DWORD *)(a1 + 92) = std::use_facet>(v2); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (004E4940) -------------------------------------------------------- -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600E0; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)a1 + 7); - operator delete(a1); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (004E49F0) -------------------------------------------------------- -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600E0; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (004E4A90) -------------------------------------------------------- -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_5600E0; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (004E4B30) -------------------------------------------------------- -int __thiscall std::wfilebuf::operator=(int this, int a2) -{ - int v3; // eax - char v4; // dl - int v5; // eax - int v6; // eax - int v7; // eax - int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - int v12; // eax - int v13; // eax - int v14; // eax - int v15; // eax - int result; // eax - - std::wfilebuf::close((struct _Unwind_Exception *)this); - std::wstreambuf::operator=((volatile signed __int32 **)this, a2); - v3 = *(_DWORD *)(this + 40); - *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); - v4 = *(_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 40) = v3; - LOBYTE(v3) = *(_BYTE *)(this + 44); - *(_BYTE *)(this + 44) = v4; - *(_BYTE *)(a2 + 44) = v3; - v5 = *(_DWORD *)(a2 + 48); - *(_DWORD *)(a2 + 48) = 0; - *(_DWORD *)(this + 48) = v5; - *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); - *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); - *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); - v6 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 64) = 0; - *(_DWORD *)(this + 64) = v6; - v7 = *(_DWORD *)(a2 + 68); - *(_DWORD *)(a2 + 68) = 1; - *(_DWORD *)(this + 68) = v7; - LOBYTE(v7) = *(_BYTE *)(a2 + 72); - *(_BYTE *)(a2 + 72) = 0; - *(_BYTE *)(this + 72) = v7; - v8 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 96) = 0; - *(_DWORD *)(this + 96) = v8; - v9 = *(_DWORD *)(a2 + 100); - *(_DWORD *)(a2 + 100) = 0; - *(_DWORD *)(this + 100) = v9; - v10 = *(_DWORD *)(a2 + 104); - *(_DWORD *)(a2 + 104) = 0; - *(_DWORD *)(this + 104) = v10; - v11 = *(_DWORD *)(a2 + 108); - *(_DWORD *)(a2 + 108) = 0; - *(_DWORD *)(this + 108) = v11; - LOBYTE(v11) = *(_BYTE *)(a2 + 73); - *(_BYTE *)(a2 + 73) = 0; - *(_BYTE *)(this + 73) = v11; - LOBYTE(v11) = *(_BYTE *)(a2 + 74); - *(_BYTE *)(a2 + 74) = 0; - *(_BYTE *)(this + 74) = v11; - v12 = *(_DWORD *)(a2 + 80); - *(_DWORD *)(a2 + 80) = 0; - *(_DWORD *)(this + 80) = v12; - v13 = *(_DWORD *)(a2 + 84); - *(_DWORD *)(a2 + 84) = 0; - *(_DWORD *)(this + 84) = v13; - LOBYTE(v13) = *(_BYTE *)(a2 + 88); - *(_BYTE *)(a2 + 88) = 0; - *(_BYTE *)(this + 88) = v13; - v14 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 20) = 0; - *(_DWORD *)(a2 + 4) = v14; - *(_DWORD *)(a2 + 8) = v14; - *(_DWORD *)(a2 + 12) = v14; - v15 = *(_DWORD *)(a2 + 52); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 56) = v15; - *(_DWORD *)(a2 + 60) = v15; - result = this; - *(_DWORD *)(a2 + 24) = 0; - return result; -} - -//----- (004E4C50) -------------------------------------------------------- -int __thiscall std::fstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 3, a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004E4CC0) -------------------------------------------------------- -int __thiscall std::fstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 3, a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004E4D30) -------------------------------------------------------- -int __thiscall std::fstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 3, *a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004E4DA0) -------------------------------------------------------- -void __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // edi - std::ios_base *v4; // esi - int v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::filebuf::swap((int)(this + 3), (int)(a2 + 3)); -} -// 4E4DE0: variable 'v9' is possibly undefined - -//----- (004E4E70) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::fstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::filebuf::close((struct _Unwind_Exception *)(a1 + 3)); - if ( !result ) - return (struct _Unwind_Exception *)std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004E4EB0) -------------------------------------------------------- -bool __fastcall std::fstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 52)); -} - -//----- (004E4EC0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+0h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 30; - std::ios_base::ios_base(this + 30); - *((_WORD *)this + 118) = 0; - v2 = a2[1]; - *this = &unk_55B44C; - this[1] = v2; - this[58] = 0; - v3 = *a2; - this[60] = 0; - this[61] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[30] = &unk_55B460; - this[62] = 0; - this[63] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 57)); - this[60] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[58] = v5; - *((_WORD *)this + 118) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; - *this = off_560124; - this[30] = off_56014C; - this[2] = off_560138; - std::filebuf::basic_filebuf((int)(this + 3), (std::locale *)(a2 + 3)); - this[60] = this + 3; -} -// 4E5052: positive sp value 4 has been found -// 4E4F65: variable 'v6' is possibly undefined -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); - -//----- (004E5060) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+24h] [ebp-44h] - - v5 = (int)(this + 30); - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_55B44C; - this[30] = &unk_55B460; - this[1] = 0; - std::ios::init(v5, 0); - this[2] = &unk_55B474; - this[30] = &unk_55B488; - std::ios::init(v5, 0); - *this = off_560124; - this[30] = off_56014C; - this[2] = off_560138; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init(v5, (int)(this + 3)); - v3 = std::filebuf::open(this + 3, a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 4E5215: positive sp value 4 has been found -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); - -//----- (004E5240) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+24h] [ebp-44h] - - v5 = (int)(this + 30); - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_55B44C; - this[30] = &unk_55B460; - this[1] = 0; - std::ios::init(v5, 0); - this[2] = &unk_55B474; - this[30] = &unk_55B488; - std::ios::init(v5, 0); - *this = off_560124; - this[30] = off_56014C; - this[2] = off_560138; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init(v5, (int)(this + 3)); - v3 = std::filebuf::open(this + 3, a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 4E53F5: positive sp value 4 has been found -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); - -//----- (004E5420) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+24h] [ebp-44h] - - v5 = (int)(this + 30); - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_55B44C; - this[30] = &unk_55B460; - this[1] = 0; - std::ios::init(v5, 0); - this[2] = &unk_55B474; - this[30] = &unk_55B488; - std::ios::init(v5, 0); - *this = off_560124; - this[30] = off_56014C; - this[2] = off_560138; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init(v5, (int)(this + 3)); - v3 = std::filebuf::open(this + 3, *a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 4E55DD: positive sp value 4 has been found -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); - -//----- (004E5610) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __fastcall std::fstream::basic_fstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 120; - std::ios_base::ios_base((_DWORD *)(a1 + 120)); - *(_DWORD *)(a1 + 232) = 0; - *(_WORD *)(a1 + 236) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)(a1 + 252) = 0; - *(_DWORD *)a1 = &unk_55B44C; - *(_DWORD *)(a1 + 120) = &unk_55B460; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_55B474; - *(_DWORD *)(a1 + 120) = &unk_55B488; - std::ios::init(v1, 0); - *(_DWORD *)a1 = off_560124; - *(_DWORD *)(a1 + 120) = off_56014C; - *(_DWORD *)(a1 + 8) = off_560138; - std::filebuf::basic_filebuf(a1 + 12); - std::ios::init(v1, a1 + 12); -} -// 4E5779: positive sp value 4 has been found -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); - -//----- (004E57B0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // edx - std::ios_base *v14; // [esp+0h] [ebp-58h] - std::ios_base *v15; // [esp+10h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v15, v14); - std::ios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v15 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v15 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v15 + 58); - v8 = a2[5]; - a3[1] = 0; - v9 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = *a2; - v13 = a2[8]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3), (std::locale *)(a3 + 3)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 3); -} -// 4E58FE: positive sp value 4 has been found -// 4E5816: variable 'v14' is possibly undefined - -//----- (004E5920) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2, char *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::ios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::filebuf::open(this + 3, a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::ios::clear(v16, 0); - else - std::ios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4E5AAE: positive sp value 4 has been found - -//----- (004E5B10) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::ios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::filebuf::open(this + 3, a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::ios::clear(v16, 0); - else - std::ios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4E5C9E: positive sp value 4 has been found - -//----- (004E5D00) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2, char **a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::ios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::filebuf::open(this + 3, *a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::ios::clear(v16, 0); - else - std::ios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4E5E8E: positive sp value 4 has been found - -//----- (004E5EF0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - - v3 = a2[2]; - v4 = a2[3]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[4]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[5]; - std::ios::init((int)v7, 0); - v8 = a2[1]; - v9 = a2[6]; - *this = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[7]; - v10 = a2[8]; - v11 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); -} -// 4E6026: positive sp value 4 has been found - -//----- (004E6080) -------------------------------------------------------- -void __fastcall std::fstream::~fstream(_DWORD *a1) -{ - *a1 = off_560124; - a1[30] = off_56014C; - a1[2] = off_560138; - a1[3] = off_5600A0; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 3)); - std::__basic_file::~__basic_file((int)(a1 + 13)); - a1[3] = &off_560424; - std::locale::~locale((_DWORD **)a1 + 10); - a1[2] = &unk_55B474; - *a1 = &unk_55B44C; - a1[1] = 0; - a1[30] = &off_560E20; - std::ios_base::~ios_base((int)(a1 + 30)); - operator delete(a1); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004E6170) -------------------------------------------------------- -void __fastcall std::fstream::~fstream(int a1) -{ - *(_DWORD *)a1 = off_560124; - *(_DWORD *)(a1 + 120) = off_56014C; - *(_DWORD *)(a1 + 8) = off_560138; - *(_DWORD *)(a1 + 12) = off_5600A0; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 12)); - std::__basic_file::~__basic_file(a1 + 52); - *(_DWORD *)(a1 + 12) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 40)); - *(_DWORD *)(a1 + 8) = &unk_55B474; - *(_DWORD *)a1 = &unk_55B44C; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 120) = &off_560E20; - std::ios_base::~ios_base(a1 + 120); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004E6250) -------------------------------------------------------- -void __thiscall std::fstream::~fstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[8]; - v4 = a2[9]; - this[3] = (int)off_5600A0; - this[2] = v4; - std::filebuf::close((struct _Unwind_Exception *)(this + 3)); - std::__basic_file::~__basic_file((int)(this + 13)); - this[3] = (int)&off_560424; - std::locale::~locale((_DWORD **)this + 10); - v5 = a2[1]; - *this = v5; - *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[6]; - this[2] = a2[7]; - v6 = a2[4]; - this[2] = v6; - *(int *)((char *)this + *(_DWORD *)(v6 - 12) + 8) = a2[5]; - v7 = a2[2]; - *this = v7; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = a2[3]; - this[1] = 0; -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (004E6360) -------------------------------------------------------- -_DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - char v6; // cl - char v7; // cl - int v8; // eax - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::filebuf::operator=((int)(this + 3), (int)(a2 + 3)); - return this; -} -// 4E63A0: variable 'v10' is possibly undefined - -//----- (004E6440) -------------------------------------------------------- -int __thiscall std::wfstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 3, a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004E64B0) -------------------------------------------------------- -int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 3, a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004E6520) -------------------------------------------------------- -int __thiscall std::wfstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 3, *a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004E6590) -------------------------------------------------------- -void __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // edi - std::ios_base *v4; // esi - int v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wfilebuf::swap((int)(this + 3), (int)(a2 + 3)); -} -// 4E65D0: variable 'v8' is possibly undefined - -//----- (004E6660) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::wfstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 3)); - if ( !result ) - return (struct _Unwind_Exception *)std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004E66A0) -------------------------------------------------------- -bool __fastcall std::wfstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 52)); -} - -//----- (004E66B0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+0h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 31; - std::ios_base::ios_base(this + 31); - v2 = a2[1]; - *((_WORD *)this + 120) = 0; - *this = &unk_55B49C; - this[1] = v2; - this[59] = 0; - v3 = *a2; - *((_BYTE *)this + 242) = 0; - this[61] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[62] = 0; - this[63] = 0; - this[64] = 0; - this[31] = &unk_55B4B0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::wios::_M_cache_locale(v8, (int)(this + 58)); - this[61] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[59] = v5; - *((_WORD *)this + 120) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 242) = *((_BYTE *)lpuexcpt + 118); - a2[1] = 0; - *this = off_560160; - this[31] = off_560188; - this[2] = off_560174; - std::wfilebuf::basic_filebuf((int)(this + 3), (std::locale *)(a2 + 3)); - this[61] = this + 3; -} -// 4E6853: positive sp value 4 has been found -// 4E675C: variable 'v6' is possibly undefined -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); - -//----- (004E6860) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+24h] [ebp-44h] - - v5 = (int)(this + 31); - std::ios_base::ios_base(this + 31); - this[59] = 0; - *((_WORD *)this + 120) = 0; - *((_BYTE *)this + 242) = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - this[64] = 0; - *this = &unk_55B49C; - this[31] = &unk_55B4B0; - this[1] = 0; - std::wios::init(v5, 0); - this[2] = &unk_55B500; - this[31] = &unk_55B514; - std::wios::init(v5, 0); - *this = off_560160; - this[31] = off_560188; - this[2] = off_560174; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init(v5, (int)(this + 3)); - v3 = std::wfilebuf::open(this + 3, a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 4E6A25: positive sp value 4 has been found -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); - -//----- (004E6A50) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+24h] [ebp-44h] - - v5 = (int)(this + 31); - std::ios_base::ios_base(this + 31); - this[59] = 0; - *((_WORD *)this + 120) = 0; - *((_BYTE *)this + 242) = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - this[64] = 0; - *this = &unk_55B49C; - this[31] = &unk_55B4B0; - this[1] = 0; - std::wios::init(v5, 0); - this[2] = &unk_55B500; - this[31] = &unk_55B514; - std::wios::init(v5, 0); - *this = off_560160; - this[31] = off_560188; - this[2] = off_560174; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init(v5, (int)(this + 3)); - v3 = std::wfilebuf::open(this + 3, a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 4E6C15: positive sp value 4 has been found -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); - -//----- (004E6C40) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+24h] [ebp-44h] - - v5 = (int)(this + 31); - std::ios_base::ios_base(this + 31); - this[59] = 0; - *((_WORD *)this + 120) = 0; - *((_BYTE *)this + 242) = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - this[64] = 0; - *this = &unk_55B49C; - this[31] = &unk_55B4B0; - this[1] = 0; - std::wios::init(v5, 0); - this[2] = &unk_55B500; - this[31] = &unk_55B514; - std::wios::init(v5, 0); - *this = off_560160; - this[31] = off_560188; - this[2] = off_560174; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init(v5, (int)(this + 3)); - v3 = std::wfilebuf::open(this + 3, *a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 4E6E05: positive sp value 4 has been found -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); - -//----- (004E6E30) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __fastcall std::wfstream::basic_fstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 124; - std::ios_base::ios_base((_DWORD *)(a1 + 124)); - *(_DWORD *)(a1 + 236) = 0; - *(_WORD *)(a1 + 240) = 0; - *(_BYTE *)(a1 + 242) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)(a1 + 252) = 0; - *(_DWORD *)(a1 + 256) = 0; - *(_DWORD *)a1 = &unk_55B49C; - *(_DWORD *)(a1 + 124) = &unk_55B4B0; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_55B500; - *(_DWORD *)(a1 + 124) = &unk_55B514; - std::wios::init(v1, 0); - *(_DWORD *)a1 = off_560160; - *(_DWORD *)(a1 + 124) = off_560188; - *(_DWORD *)(a1 + 8) = off_560174; - std::wfilebuf::basic_filebuf(a1 + 12); - std::wios::init(v1, a1 + 12); -} -// 4E6FA0: positive sp value 4 has been found -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); - -//----- (004E6FD0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // edx - std::ios_base *v14; // [esp+0h] [ebp-58h] - std::ios_base *v15; // [esp+10h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v15, v14); - std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v15 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v15 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v15 + 58); - *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v15 + 118); - a3[1] = 0; - v8 = a2[5]; - v9 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = *a2; - v13 = a2[8]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3), (std::locale *)(a3 + 3)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 3); -} -// 4E7125: positive sp value 4 has been found -// 4E7036: variable 'v14' is possibly undefined - -//----- (004E7140) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::wios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::wfilebuf::open(this + 3, a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::wios::clear(v16, 0); - else - std::wios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4E72CE: positive sp value 4 has been found - -//----- (004E7330) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::wios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::wfilebuf::open(this + 3, a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::wios::clear(v16, 0); - else - std::wios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4E74BE: positive sp value 4 has been found - -//----- (004E7520) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::wios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::wfilebuf::open(this + 3, *a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::wios::clear(v16, 0); - else - std::wios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4E76AE: positive sp value 4 has been found - -//----- (004E7710) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - - v3 = a2[2]; - v4 = a2[3]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[4]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[5]; - std::wios::init((int)v7, 0); - v8 = a2[1]; - v9 = a2[6]; - *this = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[7]; - v10 = a2[8]; - v11 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); -} -// 4E7846: positive sp value 4 has been found - -//----- (004E78A0) -------------------------------------------------------- -void __fastcall std::wfstream::~wfstream(_DWORD *a1) -{ - *a1 = off_560160; - a1[31] = off_560188; - a1[2] = off_560174; - a1[3] = off_5600E0; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 3)); - std::__basic_file::~__basic_file((int)(a1 + 13)); - a1[3] = &off_560464; - std::locale::~locale((_DWORD **)a1 + 10); - a1[2] = &unk_55B500; - *a1 = &unk_55B49C; - a1[1] = 0; - a1[31] = &off_560E30; - std::ios_base::~ios_base((int)(a1 + 31)); - operator delete(a1); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004E7990) -------------------------------------------------------- -void __fastcall std::wfstream::~wfstream(int a1) -{ - *(_DWORD *)a1 = off_560160; - *(_DWORD *)(a1 + 124) = off_560188; - *(_DWORD *)(a1 + 8) = off_560174; - *(_DWORD *)(a1 + 12) = off_5600E0; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 12)); - std::__basic_file::~__basic_file(a1 + 52); - *(_DWORD *)(a1 + 12) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 40)); - *(_DWORD *)(a1 + 8) = &unk_55B500; - *(_DWORD *)a1 = &unk_55B49C; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 124) = &off_560E30; - std::ios_base::~ios_base(a1 + 124); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004E7A70) -------------------------------------------------------- -void __thiscall std::wfstream::~wfstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[8]; - v4 = a2[9]; - this[3] = (int)off_5600E0; - this[2] = v4; - std::wfilebuf::close((struct _Unwind_Exception *)(this + 3)); - std::__basic_file::~__basic_file((int)(this + 13)); - this[3] = (int)&off_560464; - std::locale::~locale((_DWORD **)this + 10); - v5 = a2[1]; - *this = v5; - *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[6]; - this[2] = a2[7]; - v6 = a2[4]; - this[2] = v6; - *(int *)((char *)this + *(_DWORD *)(v6 - 12) + 8) = a2[5]; - v7 = a2[2]; - *this = v7; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = a2[3]; - this[1] = 0; -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (004E7B80) -------------------------------------------------------- -_DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - __int16 v6; // cx - int v7; // eax - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wfilebuf::operator=((int)(this + 3), (int)(a2 + 3)); - return this; -} -// 4E7BC0: variable 'v9' is possibly undefined - -//----- (004E7C60) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 48))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E7C60: using guessed type int var_1C[7]; - -//----- (004E7E20) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 8))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E7E20: using guessed type int var_1C[7]; - -//----- (004E7FE0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 40))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E7FE0: using guessed type int var_1C[7]; - -//----- (004E81A0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 44))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E81A0: using guessed type int var_1C[7]; - -//----- (004E8360) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 36))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E8360: using guessed type int var_1C[7]; - -//----- (004E8520) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 20))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E8520: using guessed type int var_1C[7]; - -//----- (004E86E0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E86E0: using guessed type int var_1C[7]; - -//----- (004E88A0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 24))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E88A0: using guessed type int var_1C[7]; - -//----- (004E8A60) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 16))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E8A60: using guessed type int var_1C[7]; - -//----- (004E8C20) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 28))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E8C20: using guessed type int var_1C[7]; - -//----- (004E8DE0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::_M_extract(_DWORD *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int))(*(_DWORD *)v3 + 32))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - v7, - a2); - if ( v7[0] ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7[0]); - } - return this; -} -// 4E8DE0: using guessed type int var_1C[7]; - -//----- (004E8FA0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3) -{ - int v4; // ecx - __int16 v5; // ax - - v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); - if ( !v4 ) - std::__throw_bad_cast(); - v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); - return std::wistream::get(this, a2, a3, v5); -} - -//----- (004E8FF0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4) -{ - int v4; // ecx - int v6; // eax - __int16 *v7; // eax - __int16 v8; // ax - int v9; // edx - __int16 v10; // dx - __int16 *v11; // eax - __int16 *v12; // eax - int v13; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - char v16[25]; // [esp+6Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v16, this, 1); - if ( !v16[0] ) - { - v4 = this[1]; - goto LABEL_3; - } - lpuexcpt = *(struct _Unwind_Exception **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v7 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v7 >= *((_DWORD *)lpuexcpt + 3) ) - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - else - v8 = *v7; - v4 = this[1]; - v9 = v4 + 1; - if ( a3 <= v4 + 1 ) - { -LABEL_29: - if ( v8 != -1 ) - goto LABEL_3; - goto LABEL_30; - } - if ( v8 == -1 ) - { -LABEL_30: - if ( a3 > 0 ) - *a2 = 0; - v6 = 6; - if ( !v4 ) - { -LABEL_8: - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v6); - return this; - } - goto LABEL_33; - } - if ( a4 == v8 ) - { -LABEL_3: - if ( a3 > 0 ) - *a2 = 0; - if ( !v4 ) - { - v6 = 4; - goto LABEL_8; - } - return this; - } - while ( 1 ) - { - *a2++ = v8; - this[1] = v9; - v12 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v12 < *((_DWORD *)lpuexcpt + 3) ) - { - v10 = *v12; - *((_DWORD *)lpuexcpt + 2) = v12 + 1; - if ( v10 == -1 ) - goto LABEL_23; - } - else if ( (*(unsigned __int16 (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == 0xFFFF ) - { -LABEL_23: - v13 = this[1]; - if ( a3 > 0 ) - { - *a2 = 0; - v6 = 2; - if ( v13 ) - goto LABEL_8; - goto LABEL_25; - } - if ( !v13 ) - { - v6 = 2; - goto LABEL_25; - } -LABEL_33: - v6 = 2; - goto LABEL_8; - } - v11 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v11 >= *((_DWORD *)lpuexcpt + 3) ) - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - else - v8 = *v11; - v4 = this[1]; - v9 = v4 + 1; - if ( v4 + 1 >= a3 ) - goto LABEL_29; - if ( v8 == -1 ) - break; - if ( a4 == v8 ) - { - v6 = 0; - goto LABEL_35; - } - } - v6 = 2; -LABEL_35: - if ( a3 > 0 ) - *a2 = 0; - if ( !v4 ) - { -LABEL_25: - v6 |= 4u; - goto LABEL_8; - } - if ( v6 ) - goto LABEL_8; - return this; -} -// 4E8FF0: using guessed type char var_19[25]; - -//----- (004E9350) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2) -{ - int v3; // ecx - __int16 v4; // ax - - v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); - if ( !v3 ) - std::__throw_bad_cast(); - v4 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 10); - return std::wistream::get(this, a2, v4); -} - -//----- (004E93A0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3) -{ - int v3; // eax - unsigned __int16 *v5; // eax - int v6; // edx - __int16 *v7; // eax - __int16 v8; // dx - _WORD *v9; // eax - _WORD *v10; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - char v13[25]; // [esp+6Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v13, this, 1); - if ( v13[0] ) - { - lpuexcpt = *(struct _Unwind_Exception **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v5 = (unsigned __int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) - v6 = (*(unsigned __int16 (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - else - v6 = *v5; - if ( (_WORD)v6 != 0xFFFF ) - { - if ( a3 == (_WORD)v6 ) - goto LABEL_2; - while ( 1 ) - { - v10 = (_WORD *)a2[5]; - if ( (unsigned int)v10 < a2[6] ) - { - *v10 = v6; - a2[5] = v10 + 1; - } - else if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v6) == 0xFFFF ) - { - goto LABEL_2; - } - ++this[1]; - v7 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v7 >= *((_DWORD *)lpuexcpt + 3) ) - { - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt); - } - else - { - v8 = *v7; - *((_DWORD *)lpuexcpt + 2) = v7 + 1; - } - if ( v8 == -1 ) - break; - v9 = (_WORD *)*((_DWORD *)lpuexcpt + 2); - v6 = (unsigned int)v9 >= *((_DWORD *)lpuexcpt + 3) - ? (*(unsigned __int16 (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt) - : (unsigned __int16)*v9; - if ( (_WORD)v6 == 0xFFFF ) - break; - if ( a3 == (_WORD)v6 ) - goto LABEL_2; - } - } - v3 = this[1] == 0 ? 6 : 2; - goto LABEL_4; - } -LABEL_2: - if ( !this[1] ) - { - v3 = 4; -LABEL_4: - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v3); - } - return this; -} -// 4E93A0: using guessed type char var_19[25]; - -//----- (004E9630) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2) -{ - int v2; // eax - _DWORD *v4; // ecx - __int16 *v5; // eax - __int16 v6; // dx - char v8[25]; // [esp+5Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v8, this, 1); - if ( v8[0] ) - { - v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v5 = (__int16 *)v4[2]; - if ( (unsigned int)v5 >= v4[3] ) - { - v6 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); - } - else - { - v6 = *v5; - v4[2] = v5 + 1; - } - if ( v6 != -1 ) - { - this[1] = 1; - *a2 = v6; - return this; - } - v2 = this[1] == 0 ? 6 : 2; - goto LABEL_4; - } - if ( !this[1] ) - { - v2 = 4; -LABEL_4: - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v2); - } - return this; -} -// 4E9630: using guessed type char var_19[25]; - -//----- (004E97F0) -------------------------------------------------------- -int __fastcall std::wistream::get(_DWORD *a1) -{ - int v1; // eax - _DWORD *v3; // ecx - unsigned __int16 *v4; // eax - unsigned __int16 v5; // dx - unsigned __int16 lpuexcpt; // [esp+14h] [ebp-64h] - char v8[25]; // [esp+5Fh] [ebp-19h] BYREF - - a1[1] = 0; - std::wistream::sentry::sentry(v8, a1, 1); - if ( v8[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v4 = (unsigned __int16 *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - { - lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); - } - else - { - v5 = *v4; - v3[2] = v4 + 1; - lpuexcpt = v5; - } - if ( lpuexcpt != 0xFFFF ) - { - a1[1] = 1; - return lpuexcpt; - } - v1 = a1[1] == 0 ? 6 : 2; - goto LABEL_4; - } - if ( !a1[1] ) - { - v1 = 4; -LABEL_4: - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v1); - } - return (unsigned __int16)-1; -} -// 4E97F0: using guessed type char var_19[25]; - -//----- (004E99C0) -------------------------------------------------------- -int __fastcall std::wistream::peek(_DWORD *a1) -{ - _DWORD *v2; // ecx - unsigned __int16 *v3; // eax - unsigned __int16 lpuexcpt; // [esp+14h] [ebp-64h] - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - a1[1] = 0; - std::wistream::sentry::sentry(v6, a1, 1); - lpuexcpt = -1; - if ( v6[0] ) - { - v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v3 = (unsigned __int16 *)v2[2]; - if ( (unsigned int)v3 >= v2[3] ) - lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); - else - lpuexcpt = *v3; - if ( lpuexcpt == 0xFFFF ) - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); - } - return lpuexcpt; -} -// 4E99C0: using guessed type char var_19[25]; - -//----- (004E9B70) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3) -{ - int v3; // ecx - int v4; // eax - char v7[25]; // [esp+5Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v7, this, 1); - if ( v7[0] ) - { - v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); - v4 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 32))(v3, a2, a3); - this[1] = v4; - if ( a3 != v4 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 6); - } - return this; -} -// 4E9B70: using guessed type char var_19[25]; - -//----- (004E9D00) -------------------------------------------------------- -void __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; -} -// 4E9D3D: variable 'v8' is possibly undefined - -//----- (004E9DC0) -------------------------------------------------------- -int __fastcall std::wistream::sync(_DWORD *a1) -{ - int v1; // ecx - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v5[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::wistream::sentry::sentry(v5, a1, 1); - if ( !v5[0] ) - return -1; - v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - if ( !v1 ) - return -1; - lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1); - if ( lpuexcpt != (struct _Unwind_Exception *)-1 ) - return 0; - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - return (int)lpuexcpt; -} -// 4E9DC0: using guessed type char var_19[25]; - -//----- (004E9F50) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5) -{ - char *v5; // edi - _DWORD *v6; // eax - int v7; // edi - void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax - _DWORD *v10; // [esp+0h] [ebp-B8h] - char v12; // [esp+7Fh] [ebp-39h] BYREF - int v13[14]; // [esp+80h] [ebp-38h] BYREF - - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); - std::wistream::sentry::sentry(&v12, this, 1); - if ( v12 ) - { - v5 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v5[20] & 5) == 0 ) - { - v6 = (_DWORD *)*((_DWORD *)v5 + 30); - v7 = *v6; - v13[6] = a4; - v10 = v6; - v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); - v13[4] = a2; - v13[5] = a3; - v13[7] = a5; - v8(v13, v10, a2, a3, a4, a5, 8); - if ( (v13[0] & v13[1]) == -1 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - } - return this; -} - -//----- (004EA190) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4) -{ - char *v4; // edi - char v7; // [esp+6Fh] [ebp-29h] BYREF - int v8[10]; // [esp+70h] [ebp-28h] BYREF - - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); - std::wistream::sentry::sentry(&v7, this, 1); - if ( v7 ) - { - v4 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v4[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( - v8, - *((_DWORD *)v4 + 30), - a2, - a3, - a4, - 8); - if ( (v8[0] & v8[1]) == -1 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - } - return this; -} - -//----- (004EA360) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2) -{ - char *v2; // esi - char v5; // [esp+6Fh] [ebp-29h] BYREF - int v6[10]; // [esp+70h] [ebp-28h] BYREF - - *this = -1; - this[1] = -1; - this[2] = 0; - std::wistream::sentry::sentry(&v5, a2, 1); - if ( v5 ) - { - v2 = (char *)a2 + *(_DWORD *)(*a2 - 12); - if ( (v2[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v2 + 30) + 16))( - v6, - *((_DWORD *)v2 + 30), - 0, - 0, - 1, - 8); - *this = v6[0]; - this[1] = v6[1]; - this[2] = v6[2]; - } - } - return this; -} - -//----- (004EA510) -------------------------------------------------------- -int *__fastcall std::wistream::unget(int *a1) -{ - int v2; // eax - _DWORD *v3; // ecx - _DWORD *v4; // eax - unsigned int v5; // eax - unsigned int v6; // edx - __int16 v7; // ax - char v10[25]; // [esp+5Fh] [ebp-19h] BYREF - - v2 = *a1; - a1[1] = 0; - std::wios::clear( - (int *)((char *)a1 + *(_DWORD *)(v2 - 12)), - *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); - std::wistream::sentry::sentry(v10, a1, 1); - if ( !v10[0] ) - return a1; - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - if ( !v3 ) - { -LABEL_8: - std::wios::clear(v4, v4[5] | 1); - return a1; - } - v5 = v3[2]; - if ( v3[1] >= v5 ) - { - v7 = (*(int (__thiscall **)(_DWORD *, int))(*v3 + 44))(v3, 0xFFFF); - } - else - { - v6 = v5 - 2; - v7 = *(_WORD *)(v5 - 2); - v3[2] = v6; - } - if ( v7 == -1 ) - { - v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - goto LABEL_8; - } - return a1; -} -// 4EA510: using guessed type char var_19[25]; - -//----- (004EA6E0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2) -{ - __int16 *v3; // eax - __int16 v4; // dx - signed int i; // eax - unsigned int v6; // esi - __int16 *v7; // ecx - int v8; // edx - __int16 *v9; // ecx - __int16 v10; // ax - __int16 *v11; // eax - _DWORD *v12; // [esp+1Ch] [ebp-6Ch] - char v13; // [esp+23h] [ebp-65h] - char lpuexcpt; // [esp+24h] [ebp-64h] - _DWORD *v15; // [esp+28h] [ebp-60h] - char v16[25]; // [esp+6Fh] [ebp-19h] BYREF - - v15 = this; - if ( a2 == 1 ) - return std::wistream::ignore(this); - this[1] = 0; - std::wistream::sentry::sentry(v16, this, 1); - if ( a2 > 0 ) - { - lpuexcpt = v16[0]; - if ( v16[0] ) - { - v12 = *(_DWORD **)((char *)v15 + *(_DWORD *)(*v15 - 12) + 120); - v3 = (__int16 *)v12[2]; - if ( (unsigned int)v3 >= v12[3] ) - v4 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v4 = *v3; - v13 = 0; - for ( i = v15[1]; ; i = 0x80000000 ) - { -LABEL_9: - if ( a2 > i ) - { - while ( v4 != -1 ) - { - v6 = v12[3]; - v7 = (__int16 *)v12[2]; - v8 = (int)(v6 - (_DWORD)v7) >> 1; - if ( v8 > a2 - i ) - v8 = a2 - i; - if ( v8 <= 1 ) - { - v15[1] = i + 1; - if ( (unsigned int)v7 >= v6 ) - { - v10 = (*(int (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - } - else - { - v10 = *v7; - v12[2] = v7 + 1; - } - if ( v10 != -1 ) - { - v11 = (__int16 *)v12[2]; - if ( (unsigned int)v11 < v12[3] ) - { - v4 = *v11; - i = v15[1]; - goto LABEL_9; - } -LABEL_27: - v4 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - i = v15[1]; - goto LABEL_9; - } - break; - } - v9 = &v7[v8]; - i += v8; - v12[2] = v9; - v15[1] = i; - if ( v6 <= (unsigned int)v9 ) - goto LABEL_27; - v4 = *v9; - if ( a2 <= i ) - goto LABEL_16; - } -LABEL_24: - if ( v13 ) - v15[1] = 0x7FFFFFFF; -LABEL_26: - std::wios::clear( - (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), - *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 2); - return v15; - } -LABEL_16: - if ( a2 != 0x7FFFFFFF ) - break; - if ( v4 == -1 ) - goto LABEL_24; - v15[1] = 0x80000000; - v13 = lpuexcpt; - } - if ( v13 ) - v15[1] = 0x7FFFFFFF; - if ( v4 == -1 ) - goto LABEL_26; - } - } - return v15; -} -// 4EA6E0: using guessed type char var_19[25]; - -//----- (004EA9E0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, __int16 a3) -{ - __int16 *v4; // eax - __int16 v5; // ax - signed int i; // ecx - unsigned int v7; // edi - __int16 *v8; // esi - int v9; // ebx - int v10; // edx - int v11; // eax - _WORD *v12; // eax - __int16 *v13; // eax - unsigned int v14; // eax - __int16 v15; // ax - __int16 *v16; // eax - _DWORD *v17; // [esp+28h] [ebp-70h] - char v18; // [esp+2Eh] [ebp-6Ah] - char v19; // [esp+2Fh] [ebp-69h] - _DWORD *v20; // [esp+38h] [ebp-60h] - char v21[25]; // [esp+7Fh] [ebp-19h] BYREF - - v20 = this; - if ( a3 == -1 ) - return std::wistream::ignore(this, a2); - this[1] = 0; - std::wistream::sentry::sentry(v21, this, 1); - if ( a2 > 0 ) - { - v19 = v21[0]; - if ( v21[0] ) - { - v17 = *(_DWORD **)((char *)v20 + *(_DWORD *)(*v20 - 12) + 120); - v4 = (__int16 *)v17[2]; - if ( (unsigned int)v4 >= v17[3] ) - v5 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); - else - v5 = *v4; - v18 = 0; -LABEL_9: - for ( i = v20[1]; a2 <= i; i = 0x80000000 ) - { -LABEL_22: - if ( a2 != 0x7FFFFFFF ) - { - if ( v18 ) - goto LABEL_29; - goto LABEL_30; - } - if ( v5 == -1 ) - goto LABEL_37; - if ( v5 == a3 ) - { - if ( !v18 ) - goto LABEL_33; -LABEL_29: - v20[1] = 0x7FFFFFFF; -LABEL_30: - if ( v5 != -1 ) - { - if ( v5 != a3 ) - return v20; -LABEL_32: - i = v20[1]; -LABEL_33: - if ( i != 0x7FFFFFFF ) -LABEL_34: - v20[1] = i + 1; - v14 = v17[2]; - if ( v14 >= v17[3] ) - (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); - else - v17[2] = v14 + 2; - return v20; - } -LABEL_39: - std::wios::clear( - (_DWORD *)((char *)v20 + *(_DWORD *)(*v20 - 12)), - *(_DWORD *)((char *)v20 + *(_DWORD *)(*v20 - 12) + 20) | 2); - return v20; - } - v20[1] = 0x80000000; - v18 = v19; - } - while ( v5 != -1 ) - { - if ( v5 == a3 ) - { - if ( a2 == 0x7FFFFFFF ) - { - if ( !v18 ) - goto LABEL_34; - } - else if ( !v18 ) - { - goto LABEL_32; - } - goto LABEL_29; - } - v7 = v17[3]; - v8 = (__int16 *)v17[2]; - v9 = a2 - i; - if ( (int)(v7 - (_DWORD)v8) >> 1 <= a2 - i ) - v9 = (v17[3] - (int)v8) >> 1; - if ( v9 <= 1 ) - { - v20[1] = i + 1; - if ( v7 <= (unsigned int)v8 ) - { - v15 = (*(int (__fastcall **)(_DWORD *))(*v17 + 40))(v17); - } - else - { - v15 = *v8; - v17[2] = v8 + 1; - } - if ( v15 != -1 ) - { - v16 = (__int16 *)v17[2]; - if ( (unsigned int)v16 < v17[3] ) - { - v5 = *v16; - i = v20[1]; - goto LABEL_9; - } -LABEL_45: - v5 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); - i = v20[1]; - goto LABEL_9; - } - break; - } - v10 = v9; - v11 = v9; - if ( v8 ) - { - v12 = (_WORD *)v17[2]; - while ( a3 != *v12 ) - { - ++v12; - if ( !--v10 ) - { - v11 = v9; - goto LABEL_20; - } - } - v11 = v12 - v8; - v9 = v11; - } -LABEL_20: - v13 = &v8[v11]; - i += v9; - v17[2] = v13; - v20[1] = i; - if ( v7 <= (unsigned int)v13 ) - goto LABEL_45; - v5 = *v13; - if ( a2 <= i ) - goto LABEL_22; - } -LABEL_37: - if ( v18 ) - v20[1] = 0x7FFFFFFF; - goto LABEL_39; - } - } - return v20; -} -// 4EA9E0: using guessed type char var_19[25]; - -//----- (004EADE0) -------------------------------------------------------- -_DWORD *__fastcall std::wistream::ignore(_DWORD *a1) -{ - _DWORD *v2; // ecx - __int16 *v3; // eax - __int16 v4; // dx - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - a1[1] = 0; - std::wistream::sentry::sentry(v6, a1, 1); - if ( v6[0] ) - { - v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v3 = (__int16 *)v2[2]; - if ( (unsigned int)v3 >= v2[3] ) - { - v4 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); - } - else - { - v4 = *v3; - v2[2] = v3 + 1; - } - if ( v4 == -1 ) - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); - else - a1[1] = 1; - } - return a1; -} -// 4EADE0: using guessed type char var_19[25]; - -//----- (004EAF90) -------------------------------------------------------- -void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) -{ - char *v3; // ecx - int v4; // eax - unsigned __int16 *v5; // eax - unsigned __int16 v6; // ax - __int16 v7; // dx - _WORD *v8; // eax - __int16 *v9; // eax - int v10; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - - *this = 0; - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - v4 = *((_DWORD *)v3 + 5); - if ( v4 ) - goto LABEL_6; - if ( !*((_DWORD *)v3 + 28) ) - { - if ( a3 || (v3[13] & 0x10) == 0 ) - goto LABEL_9; - goto LABEL_10; - } - std::wostream::flush(*((_DWORD **)v3 + 28)); - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - if ( !a3 && (v3[13] & 0x10) != 0 ) - { -LABEL_10: - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v3 + 30); - v5 = (unsigned __int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - else - { - v6 = *v5; - } - v10 = *((_DWORD *)v3 + 31); - if ( !v10 ) - std::__throw_bad_cast(); - if ( v6 == 0xFFFF ) - { -LABEL_24: - v4 = *((_DWORD *)v3 + 5) | 2; - goto LABEL_6; - } - while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v6) ) - { - v9 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v9 < *((_DWORD *)lpuexcpt + 3) ) - { - v7 = *v9; - *((_DWORD *)lpuexcpt + 2) = v9 + 1; - } - else - { - v7 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt); - } - if ( v7 != -1 ) - { - v8 = (_WORD *)*((_DWORD *)lpuexcpt + 2); - v6 = (unsigned int)v8 >= *((_DWORD *)lpuexcpt + 3) - ? (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt) - : *v8; - if ( v6 != 0xFFFF ) - continue; - } - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - goto LABEL_24; - } - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - v4 = *((_DWORD *)v3 + 5); - if ( v4 ) - { -LABEL_6: - std::wios::clear(v3, v4 | 4); - return; - } -LABEL_9: - *this = 1; -} - -//----- (004EB230) -------------------------------------------------------- -void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) -{ - char *v3; // ecx - int v4; // eax - unsigned __int16 *v5; // eax - unsigned __int16 v6; // ax - __int16 v7; // dx - _WORD *v8; // eax - __int16 *v9; // eax - int v10; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - - *this = 0; - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - v4 = *((_DWORD *)v3 + 5); - if ( v4 ) - goto LABEL_6; - if ( !*((_DWORD *)v3 + 28) ) - { - if ( a3 || (v3[13] & 0x10) == 0 ) - goto LABEL_9; - goto LABEL_10; - } - std::wostream::flush(*((_DWORD **)v3 + 28)); - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - if ( !a3 && (v3[13] & 0x10) != 0 ) - { -LABEL_10: - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v3 + 30); - v5 = (unsigned __int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - else - { - v6 = *v5; - } - v10 = *((_DWORD *)v3 + 31); - if ( !v10 ) - std::__throw_bad_cast(); - if ( v6 == 0xFFFF ) - { -LABEL_24: - v4 = *((_DWORD *)v3 + 5) | 2; - goto LABEL_6; - } - while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v6) ) - { - v9 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v9 < *((_DWORD *)lpuexcpt + 3) ) - { - v7 = *v9; - *((_DWORD *)lpuexcpt + 2) = v9 + 1; - } - else - { - v7 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt); - } - if ( v7 != -1 ) - { - v8 = (_WORD *)*((_DWORD *)lpuexcpt + 2); - v6 = (unsigned int)v8 >= *((_DWORD *)lpuexcpt + 3) - ? (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt) - : *v8; - if ( v6 != 0xFFFF ) - continue; - } - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - goto LABEL_24; - } - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - v4 = *((_DWORD *)v3 + 5); - if ( v4 ) - { -LABEL_6: - std::wios::clear(v3, v4 | 4); - return; - } -LABEL_9: - *this = 1; -} - -//----- (004EB4D0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::getline(_DWORD *this, char *a2, int a3) -{ - int v4; // ecx - __int16 v5; // ax - - v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); - if ( !v4 ) - std::__throw_bad_cast(); - v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); - return std::wistream::getline(this, a2, a3, v5); -} - -//----- (004EB520) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::getline(_DWORD *this, char *a2, int a3, __int16 a4) -{ - int v4; // esi - int v5; // edx - __int16 *v7; // eax - __int16 v8; // dx - int v9; // eax - unsigned int v10; // ebx - char *v11; // ecx - int v12; // edi - int v13; // eax - int v14; // edx - int v15; // esi - char *v16; // eax - char *v17; // ecx - unsigned int v18; // eax - __int16 v19; // ax - __int16 *v20; // eax - int v21; // [esp+18h] [ebp-70h] - _DWORD *v22; // [esp+20h] [ebp-68h] - int lpuexcpt; // [esp+24h] [ebp-64h] - char v25[25]; // [esp+6Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v25, this, 1); - if ( !v25[0] ) - { -LABEL_2: - v4 = this[1]; - if ( a3 > 0 ) - goto LABEL_3; -LABEL_27: - if ( !v4 ) - goto LABEL_4; - return this; - } - v22 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v7 = (__int16 *)v22[2]; - if ( (unsigned int)v7 >= v22[3] ) - v8 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - else - v8 = *v7; - v9 = this[1]; - v4 = v9 + 1; - if ( a3 > v9 + 1 ) - { - if ( v8 != -1 ) - { - if ( v8 != a4 ) - { - while ( 1 ) - { - v10 = v22[3]; - v11 = (char *)v22[2]; - v12 = a3 - v9 - 1; - v13 = (int)(v10 - (_DWORD)v11) >> 1; - if ( v12 <= v13 ) - v13 = v12; - lpuexcpt = v13; - if ( v13 <= 1 ) - { - *(_WORD *)a2 = v8; - this[1] = v4; - if ( v10 <= (unsigned int)v11 ) - { - v19 = (*(int (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - } - else - { - v19 = *(_WORD *)v11; - v22[2] = v11 + 2; - } - if ( v19 == -1 ) - { - a2 += 2; - v9 = this[1]; -LABEL_43: - v5 = 2; - if ( a3 > 0 ) - *(_WORD *)a2 = 0; -LABEL_45: - if ( !v9 ) - v5 |= 4u; - goto LABEL_5; - } - v20 = (__int16 *)v22[2]; - if ( (unsigned int)v20 >= v22[3] ) - v8 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - else - v8 = *v20; - a2 += 2; - v9 = this[1]; - } - else - { - v14 = v13; - v15 = v13; - if ( !v11 ) - goto LABEL_19; - v16 = (char *)v22[2]; - while ( *(_WORD *)v16 != a4 ) - { - v16 += 2; - if ( !--v14 ) - goto LABEL_19; - } - v21 = v16 - v11; - lpuexcpt = (v16 - v11) >> 1; - v15 = lpuexcpt; - if ( lpuexcpt ) - { -LABEL_19: - v21 = 2 * v15; - memcpy(a2, v11, 2 * v15); - v11 = (char *)v22[2]; - v10 = v22[3]; - } - a2 += v21; - v17 = &v11[v21]; - v22[2] = v17; - v9 = this[1] + lpuexcpt; - this[1] = v9; - if ( (unsigned int)v17 >= v10 ) - { - v8 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - v9 = this[1]; - } - else - { - v8 = *(_WORD *)v17; - } - } - v4 = v9 + 1; - if ( v9 + 1 >= a3 ) - goto LABEL_38; - if ( v8 == -1 ) - goto LABEL_43; - if ( a4 == v8 ) - goto LABEL_25; - } - } - goto LABEL_25; - } - if ( a3 > 0 ) - { -LABEL_52: - v5 = 2; - *(_WORD *)a2 = 0; - if ( !v9 ) - v5 = 6; - goto LABEL_5; - } -LABEL_56: - v5 = 2; - goto LABEL_45; - } -LABEL_38: - if ( v8 == -1 ) - { - v9 = this[1]; - if ( a3 > 0 ) - goto LABEL_52; - goto LABEL_56; - } - if ( v8 != a4 ) - { - v9 = this[1]; - if ( a3 <= 0 ) - { - v5 = 4; - goto LABEL_45; - } - *(_WORD *)a2 = 0; - v5 = 4; -LABEL_5: - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v5); - return this; - } -LABEL_25: - this[1] = v4; - v18 = v22[2]; - if ( v18 >= v22[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - goto LABEL_2; - } - v22[2] = v18 + 2; - if ( a3 <= 0 ) - goto LABEL_27; -LABEL_3: - *(_WORD *)a2 = 0; - if ( !v4 ) - { -LABEL_4: - v5 = 4; - goto LABEL_5; - } - return this; -} -// 4EB520: using guessed type char var_19[25]; - -//----- (004EB9B0) -------------------------------------------------------- -int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2) -{ - int v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // eax - unsigned int v6; // eax - __int16 v7; // dx - char v10[25]; // [esp+5Fh] [ebp-19h] BYREF - - v3 = *this; - this[1] = 0; - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v3 - 12)), - *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 20) & 0xFFFFFFFD); - std::wistream::sentry::sentry(v10, this, 1); - if ( !v10[0] ) - return this; - v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( !v4 ) - { -LABEL_9: - std::wios::clear(v5, v5[5] | 1); - return this; - } - v6 = v4[2]; - if ( v4[1] < v6 && (v7 = *(_WORD *)(v6 - 2), a2 == v7) ) - v4[2] = v6 - 2; - else - v7 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v4 + 44))(v4, a2); - if ( v7 == -1 ) - { - v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - goto LABEL_9; - } - return this; -} -// 4EB9B0: using guessed type char var_19[25]; - -//----- (004EBB90) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::wistream::readsome(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // ecx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // ecx - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v11[25]; // [esp+5Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v11, this, 1); - if ( !v11[0] ) - return (struct _Unwind_Exception *)this[1]; - v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v5 = v4[3]; - v6 = v4[2]; - if ( v5 == v6 ) - v7 = (*(int (__fastcall **)(_DWORD *))(*v4 + 28))(v4); - else - v7 = (v5 - v6) >> 1; - if ( v7 <= 0 ) - { - if ( v7 == -1 ) - { - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); - return (struct _Unwind_Exception *)this[1]; - } - return (struct _Unwind_Exception *)this[1]; - } - if ( v7 > a3 ) - v7 = a3; - v8 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); - lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v8 + 32))(v8, a2, v7); - this[1] = lpuexcpt; - return lpuexcpt; -} -// 4EBB90: using guessed type char var_19[25]; - -//----- (004EBD80) -------------------------------------------------------- -void __thiscall std::wistream::basic_istream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 2; - std::ios_base::ios_base(this + 2); - v2 = a2[1]; - *((_WORD *)this + 62) = 0; - *((_BYTE *)this + 126) = 0; - this[1] = v2; - this[30] = 0; - v3 = *a2; - *this = &off_56019C; - this[32] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[2] = off_5601B0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::wios::_M_cache_locale(v8, (int)(this + 29)); - this[32] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[30] = v5; - *((_WORD *)this + 62) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 126) = *((_BYTE *)lpuexcpt + 118); - a2[1] = 0; -} -// 4EBE23: variable 'v6' is possibly undefined -// 56019C: using guessed type int (*off_56019C)(); -// 5601B0: using guessed type int (*off_5601B0[2])(); - -//----- (004EBEC0) -------------------------------------------------------- -void __thiscall std::wistream::basic_istream(_DWORD *this, int a2) -{ - int v2; // [esp+14h] [ebp-44h] - - v2 = (int)(this + 2); - std::ios_base::ios_base(this + 2); - this[30] = 0; - *((_WORD *)this + 62) = 0; - *((_BYTE *)this + 126) = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - *this = &off_56019C; - this[2] = off_5601B0; - this[1] = 0; - std::wios::init(v2, a2); -} -// 56019C: using guessed type int (*off_56019C)(); -// 5601B0: using guessed type int (*off_5601B0[2])(); - -//----- (004EBFA0) -------------------------------------------------------- -void __fastcall std::wistream::basic_istream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 8; - std::ios_base::ios_base((_DWORD *)(a1 + 8)); - *(_DWORD *)(a1 + 120) = 0; - *(_WORD *)(a1 + 124) = 0; - *(_BYTE *)(a1 + 126) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)a1 = &off_56019C; - *(_DWORD *)(a1 + 8) = off_5601B0; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); -} -// 56019C: using guessed type int (*off_56019C)(); -// 5601B0: using guessed type int (*off_5601B0[2])(); - -//----- (004EC080) -------------------------------------------------------- -int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // edx - int v5; // ebx - std::ios_base *v6; // esi - int v7; // eax - int result; // eax - std::ios_base *v9; // [esp+4h] [ebp-18h] - - v3 = *a2; - v4 = a2[1]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = v4; - this[1] = a3[1]; - v5 = (int)this + *(_DWORD *)(v3 - 12); - v6 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v5, v6, v9); - std::wios::_M_cache_locale((_DWORD *)v5, v5 + 108); - v7 = *((_DWORD *)v6 + 28); - *(_DWORD *)(v5 + 120) = 0; - *((_DWORD *)v6 + 28) = 0; - *(_DWORD *)(v5 + 112) = v7; - *(_WORD *)(v5 + 116) = *((_WORD *)v6 + 58); - result = *((unsigned __int8 *)v6 + 118); - a3[1] = 0; - *(_BYTE *)(v5 + 118) = result; - return result; -} -// 4EC0B2: variable 'v9' is possibly undefined - -//----- (004EC100) -------------------------------------------------------- -BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3) -{ - int v3; // eax - int v4; // edx - int v5; // ebx - - v3 = *a2; - v4 = a2[1]; - v5 = *(_DWORD *)(*a2 - 12); - *this = *a2; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - return std::wios::init((int)this + *(_DWORD *)(v3 - 12), a3); -} - -//----- (004EC140) -------------------------------------------------------- -BOOL __thiscall std::wistream::basic_istream(int *this, int *a2) -{ - int v2; // eax - int v3; // edx - int v4; // ebx - - v2 = *a2; - v3 = a2[1]; - v4 = *(_DWORD *)(*a2 - 12); - *this = *a2; - *(int *)((char *)this + v4) = v3; - this[1] = 0; - return std::wios::init((int)this + *(_DWORD *)(v2 - 12), 0); -} - -//----- (004EC170) -------------------------------------------------------- -void __fastcall std::wistream::~wistream(char *Block) -{ - _DWORD *v2; // ecx - - v2 = Block + 8; - *(v2 - 2) = &off_56019C; - *(v2 - 1) = 0; - *v2 = &off_560E30; - std::ios_base::~ios_base((int)v2); - operator delete(Block); -} -// 56019C: using guessed type int (*off_56019C)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004EC1A0) -------------------------------------------------------- -void __fastcall std::wistream::~wistream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_56019C; - v1 = a1 + 2; - *(v1 - 1) = 0; - *v1 = &off_560E30; - std::ios_base::~ios_base((int)v1); -} -// 56019C: using guessed type int (*off_56019C)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004EC1C0) -------------------------------------------------------- -int __thiscall std::wistream::~wistream(int *this, int *a2) -{ - int v2; // eax - int result; // eax - - v2 = *a2; - *this = *a2; - result = *(_DWORD *)(v2 - 12); - *(int *)((char *)this + result) = a2[1]; - this[1] = 0; - return result; -} - -//----- (004EC1E0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - return this; -} -// 4EC21D: variable 'v9' is possibly undefined - -//----- (004EC2A0) -------------------------------------------------------- -int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)) -{ - return a2(this); -} - -//----- (004EC2B0) -------------------------------------------------------- -char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004EC2D0) -------------------------------------------------------- -char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004EC2F0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2) -{ - char *v2; // ecx - int v3; // eax - char v6; // [esp+5Eh] [ebp-1Ah] BYREF - char v7[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v2 = (char *)this + *(_DWORD *)(*this - 12); - if ( !a2 ) - { - v3 = 4; - goto LABEL_9; - } - if ( !std::__copy_streambufs_eof>(*((_DWORD **)v2 + 30), a2, v7) ) - { - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = v7[0] == 0 ? 4 : 6; - goto LABEL_9; - } - if ( v7[0] ) - { - v3 = 2; - v2 = (char *)this + *(_DWORD *)(*this - 12); -LABEL_9: - std::wios::clear(v2, *((_DWORD *)v2 + 5) | v3); - } - } - else if ( !a2 ) - { - v3 = 4; - v2 = (char *)this + *(_DWORD *)(*this - 12); - goto LABEL_9; - } - return this; -} -// 4EC2F0: using guessed type char var_19[25]; - -//----- (004EC510) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+67h] [ebp-21h] BYREF - int v7; // [esp+68h] [ebp-20h] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7 = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int *))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - &v7, - v8); - *a2 = v8[0]; - if ( v7 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7); - } - return this; -} -// 4EC510: using guessed type int var_1C[7]; - -//----- (004EC710) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _WORD *a2) -{ - char *v2; // edi - int v3; // ecx - int v4; // eax - char v7; // [esp+67h] [ebp-21h] BYREF - int v8; // [esp+68h] [ebp-20h] BYREF - int v9[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v7, this, 0); - if ( v7 ) - { - v8 = 0; - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, int, int *, int *))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - (int)this + *(_DWORD *)(*this - 12), - &v8, - v9); - v4 = v8; - if ( v9[0] >= -32768 ) - { - if ( v9[0] > 0x7FFF ) - { - v8 |= 4u; - v4 = v8; - *a2 = 0x7FFF; - goto LABEL_9; - } - *a2 = v9[0]; - } - else - { - v4 = v8 | 4; - v8 |= 4u; - *a2 = 0x8000; - } - if ( !v4 ) - return this; -LABEL_9: - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v4); - } - return this; -} -// 4EC823: conditional instruction was optimized away because eax.4>=4u -// 4EC710: using guessed type int var_1C[7]; - -//----- (004EC950) -------------------------------------------------------- -int *__thiscall std::wostream::put(int *this, unsigned __int16 a2) -{ - _DWORD *v2; // ecx - unsigned int v3; // eax - unsigned int v4; // eax - int v5; // ecx - int v7; // [esp+0h] [ebp-78h] - unsigned __int16 lpuexcpt; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+14h] [ebp-64h] - int v11; // [esp+58h] [ebp-20h] BYREF - _DWORD *v12; // [esp+5Ch] [ebp-1Ch] - - lpuexcpt = a2; - std::wostream::sentry::sentry(&v11, this); - if ( (_BYTE)v11 ) - { - v2 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v3 = v2[5]; - if ( v3 >= v2[6] ) - { - lpuexcpt = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v2 + 52))(v2, a2); - } - else - { - v4 = v3 + 2; - *(_WORD *)(v4 - 2) = a2; - v2[5] = v4; - } - if ( lpuexcpt == 0xFFFF ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v7) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), - *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); - } - } - return this; -} -// 4ECA07: variable 'v7' is possibly undefined - -//----- (004ECB60) -------------------------------------------------------- -void __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v2; // ebx - std::ios_base *v3; // esi - int v4; // eax - __int16 v5; // dx - std::ios_base *v6; // [esp+4h] [ebp-58h] - - v2 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v2, v3, v6); - std::wios::_M_cache_locale(v2, (int)v2 + 108); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - v4 = *((_DWORD *)v2 + 28); - *((_DWORD *)v2 + 28) = *((_DWORD *)v3 + 28); - v5 = *((_WORD *)v3 + 58); - *((_DWORD *)v3 + 28) = v4; - LOWORD(v4) = *((_WORD *)v2 + 58); - *((_WORD *)v2 + 58) = v5; - LOBYTE(v5) = *((_BYTE *)v2 + 118); - *((_WORD *)v3 + 58) = v4; - *((_BYTE *)v2 + 118) = *((_BYTE *)v3 + 118); - *((_BYTE *)v3 + 118) = v5; -} -// 4ECB97: variable 'v6' is possibly undefined - -//----- (004ECC10) -------------------------------------------------------- -_DWORD *__fastcall std::wostream::flush(_DWORD *a1) -{ - int v1; // ecx - - v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - if ( v1 && (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1) == -1 ) - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - return a1; -} - -//----- (004ECD60) -------------------------------------------------------- -_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) -{ - char *v5; // edi - _DWORD *v6; // eax - int v7; // edi - void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax - _DWORD *v10; // [esp+0h] [ebp-A8h] - int v12[14]; // [esp+70h] [ebp-38h] BYREF - - v5 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v5[20] & 5) == 0 ) - { - v6 = (_DWORD *)*((_DWORD *)v5 + 30); - v7 = *v6; - v12[6] = a4; - v10 = v6; - v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); - v12[4] = a2; - v12[5] = a3; - v12[7] = a5; - v8(v12, v10, a2, a3, a4, a5, 16); - if ( (v12[0] & v12[1]) == -1 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - return this; -} - -//----- (004ECF20) -------------------------------------------------------- -_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4) -{ - char *v4; // edi - int v7[10]; // [esp+60h] [ebp-28h] BYREF - - v4 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v4[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( - v7, - *((_DWORD *)v4 + 30), - a2, - a3, - a4, - 16); - if ( (v7[0] & v7[1]) == -1 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - return this; -} - -//----- (004ED0B0) -------------------------------------------------------- -_DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2) -{ - int v2; // eax - char *v3; // esi - int v6[10]; // [esp+60h] [ebp-28h] BYREF - - v2 = *a2; - *this = -1; - this[1] = -1; - v3 = (char *)a2 + *(_DWORD *)(v2 - 12); - this[2] = 0; - if ( (v3[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( - v6, - *((_DWORD *)v3 + 30), - 0, - 0, - 1, - 16); - *this = v6[0]; - this[1] = v6[1]; - this[2] = v6[2]; - } - return this; -} - -//----- (004ED230) -------------------------------------------------------- -int *__thiscall std::wostream::write(int *this, int a2, int a3) -{ - int v3; // ecx - int v4; // ecx - int v6; // [esp+0h] [ebp-78h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - int v9; // [esp+58h] [ebp-20h] BYREF - _DWORD *v10; // [esp+5Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v9, this); - if ( (_BYTE)v9 ) - { - v3 = *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120); - if ( a3 != (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 48))(v3, a2, a3) ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v10 + *(_DWORD *)(*v10 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpt + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v6) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), - *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); - } - } - return this; -} -// 4ED2DF: variable 'v6' is possibly undefined - -//----- (004ED400) -------------------------------------------------------- -int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) -{ - int v3; // eax - char *v4; // ecx - int result; // eax - - *(_BYTE *)this = 0; - v3 = *a2; - this[1] = a2; - v4 = (char *)a2 + *(_DWORD *)(v3 - 12); - result = *((_DWORD *)v4 + 5); - if ( *((_DWORD *)v4 + 28) ) - { - if ( result ) - return std::wios::clear(v4, result | 4); - std::wostream::flush(*((_DWORD **)v4 + 28)); - result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); - v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - if ( result ) - return std::wios::clear(v4, result | 4); - *(_BYTE *)this = 1; - return result; -} - -//----- (004ED460) -------------------------------------------------------- -int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) -{ - int v3; // eax - char *v4; // ecx - int result; // eax - - *(_BYTE *)this = 0; - v3 = *a2; - this[1] = a2; - v4 = (char *)a2 + *(_DWORD *)(v3 - 12); - result = *((_DWORD *)v4 + 5); - if ( *((_DWORD *)v4 + 28) ) - { - if ( result ) - return std::wios::clear(v4, result | 4); - std::wostream::flush(*((_DWORD **)v4 + 28)); - result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); - v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - if ( result ) - return std::wios::clear(v4, result | 4); - *(_BYTE *)this = 1; - return result; -} - -//----- (004ED4C0) -------------------------------------------------------- -void __fastcall std::wostream::sentry::~sentry(int a1) -{ - int v2; // ebx - int v3; // ecx - _DWORD *v4; // ecx - - if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) - { - v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); - if ( !std::uncaught_exception() ) - { - v3 = *(_DWORD *)(v2 + 120); - if ( v3 ) - { - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) - { - v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); - std::wios::clear(v4, v4[5] | 1); - } - } - } - } -} - -//----- (004ED550) -------------------------------------------------------- -void __fastcall std::wostream::sentry::~sentry(int a1) -{ - int v2; // ebx - int v3; // ecx - _DWORD *v4; // ecx - - if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) - { - v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); - if ( !std::uncaught_exception() ) - { - v3 = *(_DWORD *)(v2 + 120); - if ( v3 ) - { - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) - { - v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); - std::wios::clear(v4, v4[5] | 1); - } - } - } - } -} - -//----- (004ED5E0) -------------------------------------------------------- -int __thiscall std::wostream::_M_write(_DWORD *this, int a2, int a3) -{ - int v4; // ecx - int result; // eax - - v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); - result = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 48))(v4, a2, a3); - if ( a3 != result ) - return std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - return result; -} - -//----- (004ED630) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-88h] - int v9; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] - int v13; // [esp+68h] [ebp-20h] BYREF - _DWORD *v14; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int))(*(_DWORD *)v9 + 36))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4ED6F8: variable 'v3' is possibly undefined -// 4ED74C: variable 'v8' is possibly undefined - -//----- (004ED8A0) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-98h] - int v9; // [esp+2Ch] [ebp-6Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - int v13; // [esp+78h] [ebp-20h] BYREF - _DWORD *v14; // [esp+7Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, _DWORD))(*(_DWORD *)v9 + 8))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4ED978: variable 'v3' is possibly undefined -// 4ED9CC: variable 'v8' is possibly undefined - -//----- (004EDB20) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, double a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-98h] - int v9; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - int v13; // [esp+78h] [ebp-20h] BYREF - _DWORD *v14; // [esp+7Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - LODWORD(a2), - HIDWORD(a2)); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4EDBEB: variable 'v3' is possibly undefined -// 4EDC3F: variable 'v8' is possibly undefined - -//----- (004EDD90) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, long double a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-88h] - int v10; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] - int v14; // [esp+68h] [ebp-20h] BYREF - _DWORD *v15; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v14, this); - if ( (_BYTE)v14 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v10 = *((_DWORD *)lpuexcpt + 32); - if ( !v10 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 32))( - v10, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - LODWORD(a2), - DWORD1(a2), - HIDWORD(a2)); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v15 + *(_DWORD *)(*v15 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), - *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); - } - } - return this; -} -// 4EDE52: variable 'v3' is possibly undefined -// 4EDEA6: variable 'v8' is possibly undefined - -//----- (004EE000) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-88h] - int v9; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] - int v13; // [esp+68h] [ebp-20h] BYREF - _DWORD *v14; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int))(*(_DWORD *)v9 + 12))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4EE0C8: variable 'v3' is possibly undefined -// 4EE11C: variable 'v8' is possibly undefined - -//----- (004EE270) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-88h] - int v9; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] - int v13; // [esp+68h] [ebp-20h] BYREF - _DWORD *v14; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int))(*(_DWORD *)v9 + 16))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4EE338: variable 'v3' is possibly undefined -// 4EE38C: variable 'v8' is possibly undefined - -//----- (004EE4E0) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) -{ - unsigned __int16 v3; // ax - char v4; // dl - int v5; // ecx - int v7; // ecx - int v8; // edx - int v9; // [esp+0h] [ebp-98h] - int v10; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - int v14; // [esp+78h] [ebp-20h] BYREF - _DWORD *v15; // [esp+7Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v14, this); - if ( (_BYTE)v14 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v10 = *((_DWORD *)lpuexcpt + 32); - if ( !v10 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v3 = *((_WORD *)lpuexcpt + 58); - } - else - { - v7 = *((_DWORD *)lpuexcpt + 31); - if ( !v7 ) - std::__throw_bad_cast(); - v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 40))(v7, 32); - v8 = *this; - *((_WORD *)lpuexcpt + 58) = v3; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v8 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int, int))(*(_DWORD *)v10 + 20))( - v10, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v3, - a2, - a3); - if ( v4 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v15 + *(_DWORD *)(*v15 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v9) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), - *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); - } - } - return this; -} -// 4EE5BC: variable 'v4' is possibly undefined -// 4EE610: variable 'v9' is possibly undefined - -//----- (004EE760) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) -{ - unsigned __int16 v3; // ax - char v4; // dl - int v5; // ecx - int v7; // ecx - int v8; // edx - int v9; // [esp+0h] [ebp-98h] - int v10; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - int v14; // [esp+78h] [ebp-20h] BYREF - _DWORD *v15; // [esp+7Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v14, this); - if ( (_BYTE)v14 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v10 = *((_DWORD *)lpuexcpt + 32); - if ( !v10 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v3 = *((_WORD *)lpuexcpt + 58); - } - else - { - v7 = *((_DWORD *)lpuexcpt + 31); - if ( !v7 ) - std::__throw_bad_cast(); - v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 40))(v7, 32); - v8 = *this; - *((_WORD *)lpuexcpt + 58) = v3; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v8 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int, int))(*(_DWORD *)v10 + 24))( - v10, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v3, - a2, - a3); - if ( v4 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v15 + *(_DWORD *)(*v15 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v9) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), - *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); - } - } - return this; -} -// 4EE83C: variable 'v4' is possibly undefined -// 4EE890: variable 'v9' is possibly undefined - -//----- (004EE9E0) -------------------------------------------------------- -void __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - std::ios_base *v3; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v5; // [esp+14h] [ebp-44h] - - v5 = this + 1; - std::ios_base::ios_base(this + 1); - *((_WORD *)this + 60) = 0; - this[29] = 0; - *((_BYTE *)this + 122) = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_5601C4; - this[1] = off_5601D8; - lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v5, lpuexcpt, v3); - std::wios::_M_cache_locale(v5, (int)(this + 28)); - v2 = *((_DWORD *)lpuexcpt + 28); - this[31] = 0; - *((_DWORD *)lpuexcpt + 28) = 0; - this[29] = v2; - *((_WORD *)this + 60) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 122) = *((_BYTE *)lpuexcpt + 118); -} -// 4EEA76: variable 'v3' is possibly undefined -// 5601C4: using guessed type int (*off_5601C4)(); -// 5601D8: using guessed type int (*off_5601D8[2])(); - -//----- (004EEB00) -------------------------------------------------------- -void __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) -{ - int v2; // [esp+14h] [ebp-44h] - - v2 = (int)(this + 1); - std::ios_base::ios_base(this + 1); - this[29] = 0; - *((_WORD *)this + 60) = 0; - *((_BYTE *)this + 122) = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_5601C4; - this[1] = off_5601D8; - std::wios::init(v2, a2); -} -// 5601C4: using guessed type int (*off_5601C4)(); -// 5601D8: using guessed type int (*off_5601D8[2])(); - -//----- (004EEBE0) -------------------------------------------------------- -int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) -{ - int result; // eax - - std::ios_base::ios_base(this + 1); - result = 0; - *((_BYTE *)this + 122) = 0; - this[29] = 0; - *((_WORD *)this + 60) = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_5601C4; - this[1] = off_5601D8; - return result; -} -// 5601C4: using guessed type int (*off_5601C4)(); -// 5601D8: using guessed type int (*off_5601D8[2])(); - -//----- (004EEC40) -------------------------------------------------------- -void __fastcall std::wostream::basic_ostream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 4; - std::ios_base::ios_base((_DWORD *)(a1 + 4)); - *(_DWORD *)(a1 + 116) = 0; - *(_WORD *)(a1 + 120) = 0; - *(_BYTE *)(a1 + 122) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)a1 = &off_5601C4; - *(_DWORD *)(a1 + 4) = off_5601D8; - std::wios::init(v1, 0); -} -// 5601C4: using guessed type int (*off_5601C4)(); -// 5601D8: using guessed type int (*off_5601D8[2])(); - -//----- (004EED20) -------------------------------------------------------- -int __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // ebx - std::ios_base *v5; // esi - int v6; // eax - int result; // eax - std::ios_base *v8; // [esp+4h] [ebp-18h] - - v3 = a2[1]; - v4 = (int)this + *(_DWORD *)(*a2 - 12); - *this = *a2; - *(_DWORD *)v4 = v3; - v5 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v4, v5, v8); - std::wios::_M_cache_locale((_DWORD *)v4, v4 + 108); - v6 = *((_DWORD *)v5 + 28); - *(_DWORD *)(v4 + 120) = 0; - *((_DWORD *)v5 + 28) = 0; - *(_DWORD *)(v4 + 112) = v6; - *(_WORD *)(v4 + 116) = *((_WORD *)v5 + 58); - result = *((unsigned __int8 *)v5 + 118); - *(_BYTE *)(v4 + 118) = result; - return result; -} -// 4EED45: variable 'v8' is possibly undefined - -//----- (004EED90) -------------------------------------------------------- -BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) -{ - int v3; // edx - int v4; // eax - _DWORD *v5; // ecx - - v3 = *a2; - v4 = a2[1]; - *this = *a2; - v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); - *v5 = v4; - return std::wios::init((int)v5, a3); -} - -//----- (004EEDC0) -------------------------------------------------------- -int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) -{ - int v3; // edx - int result; // eax - - v3 = *a2; - result = a2[1]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = result; - return result; -} - -//----- (004EEDE0) -------------------------------------------------------- -BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2) -{ - int v2; // edx - int v3; // eax - _DWORD *v4; // ecx - - v2 = *a2; - v3 = a2[1]; - *this = *a2; - v4 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v4 = v3; - return std::wios::init((int)v4, 0); -} - -//----- (004EEE00) -------------------------------------------------------- -void __fastcall std::wostream::~wostream(char *Block) -{ - _DWORD *v2; // ecx - - v2 = Block + 4; - *(v2 - 1) = &off_5601C4; - *v2 = &off_560E30; - std::ios_base::~ios_base((int)v2); - operator delete(Block); -} -// 5601C4: using guessed type int (*off_5601C4)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004EEE30) -------------------------------------------------------- -void __fastcall std::wostream::~wostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_5601C4; - v1 = a1 + 1; - *v1 = &off_560E30; - std::ios_base::~ios_base((int)v1); -} -// 5601C4: using guessed type int (*off_5601C4)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004EEE50) -------------------------------------------------------- -int __thiscall std::wostream::~wostream(int *this, int *a2) -{ - int v2; // eax - int result; // eax - - v2 = *a2; - *this = *a2; - result = *(_DWORD *)(v2 - 12); - *(int *)((char *)this + result) = a2[1]; - return result; -} - -//----- (004EEE70) -------------------------------------------------------- -_DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // ebx - std::ios_base *v4; // esi - int v5; // eax - __int16 v6; // dx - std::ios_base *v8; // [esp+4h] [ebp-18h] - - v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - v4 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - std::ios_base::_M_swap(v4, v3, v8); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - v5 = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = *((_DWORD *)v3 + 28); - v6 = *((_WORD *)v3 + 58); - *((_DWORD *)v3 + 28) = v5; - LOWORD(v5) = *((_WORD *)v4 + 58); - *((_WORD *)v4 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v4 + 118); - *((_WORD *)v3 + 58) = v5; - *((_BYTE *)v4 + 118) = *((_BYTE *)v3 + 118); - *((_BYTE *)v3 + 118) = v6; - return this; -} -// 4EEEAA: variable 'v8' is possibly undefined - -//----- (004EEF20) -------------------------------------------------------- -int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)) -{ - return a2(this); -} - -//----- (004EEF30) -------------------------------------------------------- -char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004EEF50) -------------------------------------------------------- -char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004EEF80) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2) -{ - char *v2; // ecx - int v3; // eax - int v4; // ecx - int v6; // [esp+0h] [ebp-78h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v9; // [esp+57h] [ebp-21h] BYREF - int v10; // [esp+58h] [ebp-20h] BYREF - _DWORD *v11; // [esp+5Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v10, this); - if ( (_BYTE)v10 ) - { - v2 = (char *)this + *(_DWORD *)(*this - 12); - if ( !a2 ) - { - v3 = 1; - goto LABEL_13; - } - if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v2 + 30), &v9) ) - { - v3 = 4; - v2 = (char *)this + *(_DWORD *)(*this - 12); -LABEL_13: - std::wios::clear(v2, *((_DWORD *)v2 + 5) | v3); - } - } - else if ( !a2 ) - { - v3 = 1; - v2 = (char *)this + *(_DWORD *)(*this - 12); - goto LABEL_13; - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v11 + *(_DWORD *)(*v11 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpt + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v6) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12)), - *(_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12) + 20) | 1); - } - } - return this; -} -// 4EF05B: variable 'v6' is possibly undefined - -//----- (004EF190) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2) -{ - return std::wostream::_M_insert(this, a2); -} - -//----- (004EF1C0) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, float a2) -{ - return std::wostream::_M_insert(this, a2); -} - -//----- (004EF220) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) -{ - int v2; // eax - - v2 = *(int *)((char *)this + *(_DWORD *)(*this - 12) + 12) & 0x4A; - if ( v2 == 64 || v2 == 8 ) - return std::wostream::_M_insert(this, a2); - else - return std::wostream::_M_insert(this, (__int16)a2); -} - -//----- (004EF260) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) -{ - return std::wostream::_M_insert(this, a2); -} - -//----- (004EF290) -------------------------------------------------------- -void __thiscall std::random_device::_M_init_pretr1(_DWORD *this, unsigned __int8 **a2) -{ - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v4[24]; // [esp+60h] [ebp-18h] BYREF - - if ( !std::string::compare((int)a2, "mt19937") || (unsigned int)**a2 - 48 <= 9 ) - { - Block[0] = v4; - std::string::_M_construct(Block, "default", (int)""); - std::random_device::_M_init(this, (int)Block); - if ( Block[0] != v4 ) - operator delete(Block[0]); - } - else - { - std::random_device::_M_init(this, (int)a2); - } -} - -//----- (004EF3A0) -------------------------------------------------------- -void __userpurge std::random_device::_M_init_pretr1(_DWORD *a1@, std::random_device **this, const std::string *a3) -{ - unsigned int v3; // [esp+8h] [ebp-14h] - - std::random_device::_M_init(a1, *this, *((const char **)*this - 3), v3); -} -// 4EF3B3: variable 'v3' is possibly undefined - -//----- (004EF3E0) -------------------------------------------------------- -int __fastcall std::random_device::_M_fini(int *a1) -{ - int result; // eax - - result = *a1; - if ( *a1 ) - { - result = close(a1[2]); - a1[2] = -1; - *a1 = 0; - } - return result; -} - -//----- (004EF420) -------------------------------------------------------- -void __userpurge std::random_device::_M_init( - _DWORD *a1@, - std::random_device *this, - const char *a3, - unsigned int a4) -{ - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v6[24]; // [esp+60h] [ebp-18h] BYREF - - Block[0] = v6; - std::string::_M_construct(Block, this, (int)this + (_DWORD)a3); - std::random_device::_M_init(a1, (int)Block); - if ( Block[0] != v6 ) - operator delete(Block[0]); -} - -//----- (004EF4E0) -------------------------------------------------------- -void *__thiscall std::random_device::_M_init(_DWORD *this, int a2) -{ - void *result; // eax - unsigned int v5; // kr00_4 - unsigned int v6; // kr04_4 - unsigned int v7; // kr08_4 - unsigned int v17; // kr0C_4 - unsigned int v18; // kr10_4 - unsigned int v19; // kr14_4 - unsigned int v34; // [esp-4h] [ebp-20h] - unsigned int v35; // [esp-4h] [ebp-20h] - - *this = 0; - this[1] = 0; - this[2] = -1; - result = (void *)std::string::compare(a2, "default"); - if ( !result ) - { -LABEL_2: - this[1] = std::`anonymous namespace'::__winxp_rand_s; - return result; - } - if ( std::string::compare(a2, "rdseed") ) - { - if ( std::string::compare(a2, "rdrand") && std::string::compare(a2, "rdrnd") ) - { - result = (void *)std::string::compare(a2, "rand_s"); - if ( result ) - std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&): unsupported token"); - goto LABEL_2; - } - v5 = __readeflags(); - v34 = v5; - v6 = __readeflags(); - __writeeflags(v6 ^ 0x200000); - v7 = __readeflags(); - __writeeflags(v34); - if ( ((v6 ^ v7) & 0x200000) != 0 ) - { - _EAX = 0; - __asm { cpuid } - if ( _EAX ) - { - if ( _EBX == 1970169159 || _EBX == 1752462657 ) - { - _EAX = 1; - __asm { cpuid } - if ( (_ECX & 0x40000000) != 0 ) - { - this[1] = std::`anonymous namespace'::__x86_rdrand; - return result; - } - } - } - } -LABEL_20: - std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&): device not available"); - } - v17 = __readeflags(); - v35 = v17; - v18 = __readeflags(); - __writeeflags(v18 ^ 0x200000); - v19 = __readeflags(); - __writeeflags(v35); - if ( ((v18 ^ v19) & 0x200000) == 0 ) - goto LABEL_20; - __asm { cpuid } - if ( !_EAX || _EBX != 1970169159 && _EBX != 1752462657 ) - goto LABEL_20; - _EAX = 7; - __asm { cpuid } - if ( (_EBX & 0x40000) == 0 ) - goto LABEL_20; - _EAX = 1; - __asm { cpuid } - result = std::`anonymous namespace'::__x86_rdseed; - if ( (_ECX & 0x40000000) != 0 ) - result = std::`anonymous namespace'::__x86_rdseed_rdrand; - this[1] = result; - return result; -} - -//----- (004EF680) -------------------------------------------------------- -void __userpurge std::random_device::_M_init(_DWORD *a1@, std::random_device **this, const std::string *a3) -{ - unsigned int v3; // [esp+8h] [ebp-14h] - - std::random_device::_M_init(a1, *this, *((const char **)*this - 3), v3); -} -// 4EF693: variable 'v3' is possibly undefined - -//----- (004EF6B0) -------------------------------------------------------- -int __fastcall std::random_device::_M_getval(int a1) -{ - int (__cdecl *v1)(_DWORD); // eax - unsigned int MaxCharCount; // ebx - int *DstBuf; // esi - int v6; // eax - int v7; // [esp+1Ch] [ebp-20h] BYREF - - v1 = *(int (__cdecl **)(_DWORD))(a1 + 4); - if ( v1 ) - return v1(0); - MaxCharCount = 4; - DstBuf = &v7; - do - { - while ( 1 ) - { - v6 = read(*(_DWORD *)(a1 + 8), DstBuf, MaxCharCount); - if ( v6 > 0 ) - break; - if ( v6 != -1 || *__errno() != 4 ) - std::__throw_runtime_error((std::runtime_error *)"random_device could not be read"); - } - DstBuf = (int *)((char *)DstBuf + v6); - MaxCharCount -= v6; - } - while ( MaxCharCount ); - return v7; -} - -//----- (004EF730) -------------------------------------------------------- -void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const char *a3) -{ - int v3; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_5601E8; - std::string::string(a1 + 1, (char *)this, (int)&v3); -} -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); - -//----- (004EF7C0) -------------------------------------------------------- -void __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_5601E8; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); -} -// 4EF814: variable 'v2' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); - -//----- (004EF850) -------------------------------------------------------- -void __userpurge std::runtime_error::runtime_error( - _DWORD *a1@, - std::runtime_error *this, - const std::runtime_error *a3) -{ - const std::string *v3; // [esp+4h] [ebp-58h] - - *a1 = &off_5601E8; - std::string::string(a1 + 1, (std::runtime_error *)((char *)this + 4), v3); -} -// 4EF88E: variable 'v3' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); - -//----- (004EF8B0) -------------------------------------------------------- -void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_5601E8; - std::string::string(a1 + 1, this, v3); -} -// 4EF8F8: variable 'v3' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); - -//----- (004EF930) -------------------------------------------------------- -void __fastcall std::runtime_error::~runtime_error(void *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4EF936: variable 'Block' is possibly undefined - -//----- (004EF950) -------------------------------------------------------- -void __cdecl std::runtime_error::~runtime_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_5601E8; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4EF95B: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 4EF950: using guessed type int var_D[3]; - -//----- (004EF9B0) -------------------------------------------------------- -int *__thiscall std::runtime_error::operator=(int *this, int a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this + 1, (std::string *)(a2 + 4), v4); - return this; -} -// 4EF9E8: variable 'v4' is possibly undefined - -//----- (004EFA10) -------------------------------------------------------- -int *__thiscall std::runtime_error::operator=(int *this, int a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this + 1, (std::string *)(a2 + 4), v4); - return this; -} -// 4EFA48: variable 'v4' is possibly undefined - -//----- (004EFA70) -------------------------------------------------------- -int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) -{ - volatile signed __int32 *v1; // ecx - int result; // eax - - v1 = *a1; - if ( v1 ) - return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); - return result; -} - -//----- (004EFA80) -------------------------------------------------------- -int __thiscall std::ifstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 2, a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004EFAF0) -------------------------------------------------------- -int __thiscall std::ifstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 2, a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004EFB60) -------------------------------------------------------- -int __thiscall std::ifstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 2, *a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004EFBD0) -------------------------------------------------------- -void __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // edi - std::ios_base *v4; // esi - int v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::filebuf::swap((int)(this + 2), (int)(a2 + 2)); -} -// 4EFC10: variable 'v9' is possibly undefined - -//----- (004EFCA0) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::ifstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::filebuf::close((struct _Unwind_Exception *)(a1 + 2)); - if ( !result ) - return (struct _Unwind_Exception *)std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004EFCE0) -------------------------------------------------------- -bool __fastcall std::ifstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 48)); -} - -//----- (004EFCF0) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 29; - std::ios_base::ios_base(this + 29); - *((_WORD *)this + 116) = 0; - v2 = a2[1]; - *this = &unk_55B528; - this[1] = v2; - this[57] = 0; - v3 = *a2; - this[59] = 0; - this[60] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[29] = &unk_55B53C; - this[61] = 0; - this[62] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 56)); - this[59] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[57] = v5; - *((_WORD *)this + 116) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; - *this = off_560200; - this[29] = off_560214; - std::filebuf::basic_filebuf((int)(this + 2), (std::locale *)(a2 + 2)); - this[59] = this + 2; -} -// 4EFD95: variable 'v6' is possibly undefined -// 560200: using guessed type int (*off_560200[2])(); -// 560214: using guessed type int (*off_560214[2])(); - -//----- (004EFE80) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 29); - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_55B528; - this[29] = &unk_55B53C; - this[1] = 0; - std::ios::init(v5, 0); - *this = off_560200; - this[29] = off_560214; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init(v5, (int)(this + 2)); - v3 = std::filebuf::open(this + 2, a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 560200: using guessed type int (*off_560200[2])(); -// 560214: using guessed type int (*off_560214[2])(); - -//----- (004F0030) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 29); - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_55B528; - this[29] = &unk_55B53C; - this[1] = 0; - std::ios::init(v5, 0); - *this = off_560200; - this[29] = off_560214; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init(v5, (int)(this + 2)); - v3 = std::filebuf::open(this + 2, a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 560200: using guessed type int (*off_560200[2])(); -// 560214: using guessed type int (*off_560214[2])(); - -//----- (004F01E0) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 29); - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_55B528; - this[29] = &unk_55B53C; - this[1] = 0; - std::ios::init(v5, 0); - *this = off_560200; - this[29] = off_560214; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init(v5, (int)(this + 2)); - v3 = std::filebuf::open(this + 2, *a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 560200: using guessed type int (*off_560200[2])(); -// 560214: using guessed type int (*off_560214[2])(); - -//----- (004F0390) -------------------------------------------------------- -void __fastcall std::ifstream::basic_ifstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 116; - std::ios_base::ios_base((_DWORD *)(a1 + 116)); - *(_DWORD *)(a1 + 228) = 0; - *(_WORD *)(a1 + 232) = 0; - *(_DWORD *)(a1 + 236) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)a1 = &unk_55B528; - *(_DWORD *)(a1 + 116) = &unk_55B53C; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)a1 = off_560200; - *(_DWORD *)(a1 + 116) = off_560214; - std::filebuf::basic_filebuf(a1 + 8); - std::ios::init(v1, a1 + 8); -} -// 560200: using guessed type int (*off_560200[2])(); -// 560214: using guessed type int (*off_560214[2])(); - -//----- (004F04E0) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - std::ios_base *v10; // [esp+4h] [ebp-54h] - std::ios_base *v11; // [esp+10h] [ebp-48h] - int v12; // [esp+14h] [ebp-44h] - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - v12 = (int)this + *(_DWORD *)(v4 - 12); - v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v12, v11, v10); - std::ios::_M_cache_locale((_DWORD *)v12, v12 + 108); - v7 = *((_DWORD *)v11 + 28); - *(_DWORD *)(v12 + 120) = 0; - *((_DWORD *)v11 + 28) = 0; - v8 = a2[3]; - *(_DWORD *)(v12 + 112) = v7; - *(_WORD *)(v12 + 116) = *((_WORD *)v11 + 58); - a3[1] = 0; - v9 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; - std::filebuf::basic_filebuf((int)(this + 2), (std::locale *)(a3 + 2)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 2); -} -// 4F0547: variable 'v10' is possibly undefined - -//----- (004F0620) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::filebuf::open(this + 2, a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::ios::clear(v11, 0); - else - std::ios::clear(v11, v11[5] | 4); -} - -//----- (004F0790) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::filebuf::open(this + 2, a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::ios::clear(v11, 0); - else - std::ios::clear(v11, v11[5] | 4); -} - -//----- (004F0900) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char **a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::filebuf::open(this + 2, *a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::ios::clear(v11, 0); - else - std::ios::clear(v11, v11[5] | 4); -} - -//----- (004F0A70) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - int v7; // edx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); -} - -//----- (004F0B90) -------------------------------------------------------- -void __fastcall std::ifstream::~ifstream(_DWORD *a1) -{ - *a1 = off_560200; - a1[29] = off_560214; - a1[2] = off_5600A0; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 2)); - std::__basic_file::~__basic_file((int)(a1 + 12)); - a1[2] = &off_560424; - std::locale::~locale((_DWORD **)a1 + 9); - *a1 = &unk_55B528; - a1[1] = 0; - a1[29] = &off_560E20; - std::ios_base::~ios_base((int)(a1 + 29)); - operator delete(a1); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560200: using guessed type int (*off_560200[2])(); -// 560214: using guessed type int (*off_560214[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004F0C70) -------------------------------------------------------- -void __fastcall std::ifstream::~ifstream(int a1) -{ - *(_DWORD *)a1 = off_560200; - *(_DWORD *)(a1 + 116) = off_560214; - *(_DWORD *)(a1 + 8) = off_5600A0; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 8)); - std::__basic_file::~__basic_file(a1 + 48); - *(_DWORD *)(a1 + 8) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 36)); - *(_DWORD *)a1 = &unk_55B528; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 116) = &off_560E20; - std::ios_base::~ios_base(a1 + 116); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560200: using guessed type int (*off_560200[2])(); -// 560214: using guessed type int (*off_560214[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004F0D40) -------------------------------------------------------- -void __thiscall std::ifstream::~ifstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - this[2] = (int)off_5600A0; - std::filebuf::close((struct _Unwind_Exception *)(this + 2)); - std::__basic_file::~__basic_file((int)(this + 12)); - this[2] = (int)&off_560424; - std::locale::~locale((_DWORD **)this + 9); - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; - this[1] = 0; -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (004F0E20) -------------------------------------------------------- -_DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - char v6; // cl - char v7; // cl - int v8; // eax - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::filebuf::operator=((int)(this + 2), (int)(a2 + 2)); - return this; -} -// 4F0E60: variable 'v10' is possibly undefined - -//----- (004F0F00) -------------------------------------------------------- -int __thiscall std::wifstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 2, a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004F0F70) -------------------------------------------------------- -int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 2, a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004F0FE0) -------------------------------------------------------- -int __thiscall std::wifstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 2, *a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004F1050) -------------------------------------------------------- -void __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // edi - std::ios_base *v4; // esi - int v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wfilebuf::swap((int)(this + 2), (int)(a2 + 2)); -} -// 4F1090: variable 'v8' is possibly undefined - -//----- (004F1120) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::wifstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 2)); - if ( !result ) - return (struct _Unwind_Exception *)std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004F1160) -------------------------------------------------------- -bool __fastcall std::wifstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 48)); -} - -//----- (004F1170) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 30; - std::ios_base::ios_base(this + 30); - v2 = a2[1]; - *((_WORD *)this + 118) = 0; - *this = &unk_55B550; - this[1] = v2; - this[58] = 0; - v3 = *a2; - *((_BYTE *)this + 238) = 0; - this[60] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[61] = 0; - this[62] = 0; - this[63] = 0; - this[30] = &unk_55B564; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::wios::_M_cache_locale(v8, (int)(this + 57)); - this[60] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[58] = v5; - *((_WORD *)this + 118) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 238) = *((_BYTE *)lpuexcpt + 118); - a2[1] = 0; - *this = off_560228; - this[30] = off_56023C; - std::wfilebuf::basic_filebuf((int)(this + 2), (std::locale *)(a2 + 2)); - this[60] = this + 2; -} -// 4F121C: variable 'v6' is possibly undefined -// 560228: using guessed type int (*off_560228[2])(); -// 56023C: using guessed type int (*off_56023C[2])(); - -//----- (004F1310) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 30); - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - *((_BYTE *)this + 238) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_55B550; - this[30] = &unk_55B564; - this[1] = 0; - std::wios::init(v5, 0); - *this = off_560228; - this[30] = off_56023C; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init(v5, (int)(this + 2)); - v3 = std::wfilebuf::open(this + 2, a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 560228: using guessed type int (*off_560228[2])(); -// 56023C: using guessed type int (*off_56023C[2])(); - -//----- (004F14C0) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 30); - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - *((_BYTE *)this + 238) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_55B550; - this[30] = &unk_55B564; - this[1] = 0; - std::wios::init(v5, 0); - *this = off_560228; - this[30] = off_56023C; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init(v5, (int)(this + 2)); - v3 = std::wfilebuf::open(this + 2, a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 560228: using guessed type int (*off_560228[2])(); -// 56023C: using guessed type int (*off_56023C[2])(); - -//----- (004F1670) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 30); - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - *((_BYTE *)this + 238) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_55B550; - this[30] = &unk_55B564; - this[1] = 0; - std::wios::init(v5, 0); - *this = off_560228; - this[30] = off_56023C; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init(v5, (int)(this + 2)); - v3 = std::wfilebuf::open(this + 2, *a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 560228: using guessed type int (*off_560228[2])(); -// 56023C: using guessed type int (*off_56023C[2])(); - -//----- (004F1820) -------------------------------------------------------- -void __fastcall std::wifstream::basic_ifstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 120; - std::ios_base::ios_base((_DWORD *)(a1 + 120)); - *(_DWORD *)(a1 + 232) = 0; - *(_WORD *)(a1 + 236) = 0; - *(_BYTE *)(a1 + 238) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)(a1 + 252) = 0; - *(_DWORD *)a1 = &unk_55B550; - *(_DWORD *)(a1 + 120) = &unk_55B564; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)a1 = off_560228; - *(_DWORD *)(a1 + 120) = off_56023C; - std::wfilebuf::basic_filebuf(a1 + 8); - std::wios::init(v1, a1 + 8); -} -// 560228: using guessed type int (*off_560228[2])(); -// 56023C: using guessed type int (*off_56023C[2])(); - -//----- (004F1980) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - std::ios_base *v10; // [esp+4h] [ebp-54h] - std::ios_base *v11; // [esp+10h] [ebp-48h] - int v12; // [esp+14h] [ebp-44h] - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - v12 = (int)this + *(_DWORD *)(v4 - 12); - v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v12, v11, v10); - std::wios::_M_cache_locale((_DWORD *)v12, v12 + 108); - v7 = *((_DWORD *)v11 + 28); - *(_DWORD *)(v12 + 120) = 0; - *((_DWORD *)v11 + 28) = 0; - v8 = a2[3]; - *(_DWORD *)(v12 + 112) = v7; - *(_WORD *)(v12 + 116) = *((_WORD *)v11 + 58); - *(_BYTE *)(v12 + 118) = *((_BYTE *)v11 + 118); - a3[1] = 0; - v9 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; - std::wfilebuf::basic_filebuf((int)(this + 2), (std::locale *)(a3 + 2)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 2); -} -// 4F19E7: variable 'v10' is possibly undefined - -//----- (004F1AD0) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::wfilebuf::open(this + 2, a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::wios::clear(v11, 0); - else - std::wios::clear(v11, v11[5] | 4); -} - -//----- (004F1C40) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::wfilebuf::open(this + 2, a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::wios::clear(v11, 0); - else - std::wios::clear(v11, v11[5] | 4); -} - -//----- (004F1DB0) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::wfilebuf::open(this + 2, *a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::wios::clear(v11, 0); - else - std::wios::clear(v11, v11[5] | 4); -} - -//----- (004F1F20) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - int v7; // edx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); -} - -//----- (004F2040) -------------------------------------------------------- -void __fastcall std::wifstream::~wifstream(_DWORD *a1) -{ - *a1 = off_560228; - a1[30] = off_56023C; - a1[2] = off_5600E0; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 2)); - std::__basic_file::~__basic_file((int)(a1 + 12)); - a1[2] = &off_560464; - std::locale::~locale((_DWORD **)a1 + 9); - *a1 = &unk_55B550; - a1[1] = 0; - a1[30] = &off_560E30; - std::ios_base::~ios_base((int)(a1 + 30)); - operator delete(a1); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560228: using guessed type int (*off_560228[2])(); -// 56023C: using guessed type int (*off_56023C[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004F2120) -------------------------------------------------------- -void __fastcall std::wifstream::~wifstream(int a1) -{ - *(_DWORD *)a1 = off_560228; - *(_DWORD *)(a1 + 120) = off_56023C; - *(_DWORD *)(a1 + 8) = off_5600E0; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 8)); - std::__basic_file::~__basic_file(a1 + 48); - *(_DWORD *)(a1 + 8) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 36)); - *(_DWORD *)a1 = &unk_55B550; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 120) = &off_560E30; - std::ios_base::~ios_base(a1 + 120); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560228: using guessed type int (*off_560228[2])(); -// 56023C: using guessed type int (*off_56023C[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004F21F0) -------------------------------------------------------- -void __thiscall std::wifstream::~wifstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - this[2] = (int)off_5600E0; - std::wfilebuf::close((struct _Unwind_Exception *)(this + 2)); - std::__basic_file::~__basic_file((int)(this + 12)); - this[2] = (int)&off_560464; - std::locale::~locale((_DWORD **)this + 9); - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; - this[1] = 0; -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (004F22D0) -------------------------------------------------------- -_DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - __int16 v6; // cx - int v7; // eax - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wfilebuf::operator=((int)(this + 2), (int)(a2 + 2)); - return this; -} -// 4F2310: variable 'v9' is possibly undefined - -//----- (004F23B0) -------------------------------------------------------- -void __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; -} -// 4F23ED: variable 'v8' is possibly undefined - -//----- (004F2470) -------------------------------------------------------- -void __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 3; - std::ios_base::ios_base(this + 3); - v2 = a2[1]; - *((_WORD *)this + 64) = 0; - *this = &unk_55B578; - this[1] = v2; - this[31] = 0; - v3 = *a2; - *((_BYTE *)this + 130) = 0; - this[33] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[3] = &unk_55B58C; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::wios::_M_cache_locale(v8, (int)(this + 30)); - this[33] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[31] = v5; - *((_WORD *)this + 64) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 130) = *((_BYTE *)lpuexcpt + 118); - a2[1] = 0; - *this = &off_560250; - this[3] = off_560278; - this[2] = off_560264; -} -// 4F2519: variable 'v6' is possibly undefined -// 560250: using guessed type int (*off_560250)(); -// 560264: using guessed type int (*off_560264[2])(); -// 560278: using guessed type int (*off_560278[2])(); - -//----- (004F25D0) -------------------------------------------------------- -void __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2) -{ - int v2; // [esp+14h] [ebp-44h] - - v2 = (int)(this + 3); - std::ios_base::ios_base(this + 3); - this[31] = 0; - *((_WORD *)this + 64) = 0; - *((_BYTE *)this + 130) = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - *this = &unk_55B578; - this[3] = &unk_55B58C; - this[1] = 0; - std::wios::init(v2, a2); - this[2] = &unk_55B5A0; - this[3] = &unk_55B5B4; - std::wios::init(v2, a2); - *this = &off_560250; - this[3] = off_560278; - this[2] = off_560264; -} -// 560250: using guessed type int (*off_560250)(); -// 560264: using guessed type int (*off_560264[2])(); -// 560278: using guessed type int (*off_560278[2])(); - -//----- (004F2720) -------------------------------------------------------- -void __fastcall std::wiostream::basic_iostream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 12; - std::ios_base::ios_base((_DWORD *)(a1 + 12)); - *(_DWORD *)(a1 + 124) = 0; - *(_WORD *)(a1 + 128) = 0; - *(_BYTE *)(a1 + 130) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)(a1 + 144) = 0; - *(_DWORD *)a1 = &unk_55B578; - *(_DWORD *)(a1 + 12) = &unk_55B58C; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_55B5A0; - *(_DWORD *)(a1 + 12) = &unk_55B5B4; - std::wios::init(v1, 0); - *(_DWORD *)a1 = &off_560250; - *(_DWORD *)(a1 + 12) = off_560278; - *(_DWORD *)(a1 + 8) = off_560264; -} -// 560250: using guessed type int (*off_560250)(); -// 560264: using guessed type int (*off_560264[2])(); -// 560278: using guessed type int (*off_560278[2])(); - -//----- (004F2870) -------------------------------------------------------- -int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // edi - int v6; // edi - std::ios_base *v7; // ebp - int v8; // eax - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int result; // eax - std::ios_base *v14; // [esp+4h] [ebp-28h] - - v4 = a2[1]; - v5 = a2[2]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - this[1] = a3[1]; - v6 = (int)this + *(_DWORD *)(v4 - 12); - v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v6, v7, v14); - std::wios::_M_cache_locale((_DWORD *)v6, v6 + 108); - v8 = *((_DWORD *)v7 + 28); - *(_DWORD *)(v6 + 120) = 0; - *((_DWORD *)v7 + 28) = 0; - *(_DWORD *)(v6 + 112) = v8; - *(_WORD *)(v6 + 116) = *((_WORD *)v7 + 58); - *(_BYTE *)(v6 + 118) = *((_BYTE *)v7 + 118); - v9 = a2[3]; - a3[1] = 0; - v10 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v10; - v11 = *a2; - v12 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; - result = a2[6]; - this[2] = result; - return result; -} -// 4F28A6: variable 'v14' is possibly undefined - -//----- (004F2920) -------------------------------------------------------- -void __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - _DWORD *v8; // ecx - int v9; // eax - int v10; // edx - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v4 - 12), a3); - v7 = a2[3]; - this[2] = v7; - v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); - *v8 = a2[4]; - std::wios::init((int)v8, a3); - v9 = *a2; - v10 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; - this[2] = a2[6]; -} - -//----- (004F2A20) -------------------------------------------------------- -void __thiscall std::wiostream::basic_iostream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[3]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[4]; - std::wios::init((int)v7, 0); - v8 = *a2; - v9 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[6]; -} - -//----- (004F2B20) -------------------------------------------------------- -void __fastcall std::wiostream::~basic_iostream(char *Block) -{ - _DWORD *v2; // ecx - - v2 = Block + 12; - *(v2 - 1) = &unk_55B5A0; - *(v2 - 3) = &unk_55B578; - *(v2 - 2) = 0; - *v2 = &off_560E30; - std::ios_base::~ios_base((int)v2); - operator delete(Block); -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004F2B60) -------------------------------------------------------- -void __fastcall std::wiostream::~basic_iostream(int a1) -{ - _DWORD *v1; // ecx - - *(_DWORD *)(a1 + 8) = &unk_55B5A0; - v1 = (_DWORD *)(a1 + 12); - *(v1 - 3) = &unk_55B578; - *(v1 - 2) = 0; - *v1 = &off_560E30; - std::ios_base::~ios_base((int)v1); -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004F2B90) -------------------------------------------------------- -int __thiscall std::wiostream::~basic_iostream(int *this, int *a2) -{ - int v2; // edx - int v3; // edx - int v4; // edx - int result; // eax - - v2 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v2 - 12)) = a2[5]; - this[2] = a2[6]; - v3 = a2[3]; - this[2] = v3; - *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 8) = a2[4]; - v4 = a2[1]; - *this = v4; - result = *(_DWORD *)(v4 - 12); - *(int *)((char *)this + result) = a2[2]; - this[1] = 0; - return result; -} - -//----- (004F2BE0) -------------------------------------------------------- -_DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - return this; -} -// 4F2C1D: variable 'v9' is possibly undefined - -//----- (004F2CA0) -------------------------------------------------------- -int __thiscall std::ofstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 1, a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004F2D10) -------------------------------------------------------- -int __thiscall std::ofstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 1, a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004F2D80) -------------------------------------------------------- -int __thiscall std::ofstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 1, *a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004F2DF0) -------------------------------------------------------- -void __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - char v6; // cl - char v7; // cl - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - *((_BYTE *)v4 + 117) = v7; - std::filebuf::swap((int)(this + 1), (int)(a2 + 1)); -} -// 4F2E30: variable 'v8' is possibly undefined - -//----- (004F2EB0) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::ofstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::filebuf::close((struct _Unwind_Exception *)(a1 + 1)); - if ( !result ) - return (struct _Unwind_Exception *)std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004F2EF0) -------------------------------------------------------- -bool __fastcall std::ofstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 44)); -} - -//----- (004F2F00) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - std::ios_base *v3; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v5; // [esp+14h] [ebp-44h] - - v5 = this + 28; - std::ios_base::ios_base(this + 28); - *((_WORD *)this + 114) = 0; - this[56] = 0; - this[58] = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - *this = &unk_55B5C8; - this[28] = &unk_55B5DC; - lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v5, lpuexcpt, v3); - std::ios::_M_cache_locale(v5, (int)(this + 55)); - v2 = *((_DWORD *)lpuexcpt + 28); - *this = off_56028C; - *((_DWORD *)lpuexcpt + 28) = 0; - this[56] = v2; - LOWORD(v2) = *((_WORD *)lpuexcpt + 58); - this[58] = 0; - *((_WORD *)this + 114) = v2; - this[28] = off_5602A0; - std::filebuf::basic_filebuf((int)(this + 1), (std::locale *)(a2 + 1)); - this[58] = this + 1; -} -// 4F2F9B: variable 'v3' is possibly undefined -// 56028C: using guessed type int (*off_56028C[2])(); -// 5602A0: using guessed type int (*off_5602A0[2])(); - -//----- (004F3080) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 28); - std::ios_base::ios_base(this + 28); - this[56] = 0; - *((_WORD *)this + 114) = 0; - this[58] = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - *this = &unk_55B5C8; - this[28] = &unk_55B5DC; - std::ios::init(v5, 0); - *this = off_56028C; - this[28] = off_5602A0; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init(v5, (int)(this + 1)); - v3 = std::filebuf::open(this + 1, a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 56028C: using guessed type int (*off_56028C[2])(); -// 5602A0: using guessed type int (*off_5602A0[2])(); - -//----- (004F3220) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 28); - std::ios_base::ios_base(this + 28); - this[56] = 0; - *((_WORD *)this + 114) = 0; - this[58] = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - *this = &unk_55B5C8; - this[28] = &unk_55B5DC; - std::ios::init(v5, 0); - *this = off_56028C; - this[28] = off_5602A0; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init(v5, (int)(this + 1)); - v3 = std::filebuf::open(this + 1, a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 56028C: using guessed type int (*off_56028C[2])(); -// 5602A0: using guessed type int (*off_5602A0[2])(); - -//----- (004F33C0) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 28); - std::ios_base::ios_base(this + 28); - this[56] = 0; - *((_WORD *)this + 114) = 0; - this[58] = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - *this = &unk_55B5C8; - this[28] = &unk_55B5DC; - std::ios::init(v5, 0); - *this = off_56028C; - this[28] = off_5602A0; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init(v5, (int)(this + 1)); - v3 = std::filebuf::open(this + 1, *a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 56028C: using guessed type int (*off_56028C[2])(); -// 5602A0: using guessed type int (*off_5602A0[2])(); - -//----- (004F3560) -------------------------------------------------------- -void __fastcall std::ofstream::basic_ofstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 112; - std::ios_base::ios_base((_DWORD *)(a1 + 112)); - *(_DWORD *)(a1 + 224) = 0; - *(_WORD *)(a1 + 228) = 0; - *(_DWORD *)(a1 + 232) = 0; - *(_DWORD *)(a1 + 236) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)a1 = &unk_55B5C8; - *(_DWORD *)(a1 + 112) = &unk_55B5DC; - std::ios::init(v1, 0); - *(_DWORD *)a1 = off_56028C; - *(_DWORD *)(a1 + 112) = off_5602A0; - std::filebuf::basic_filebuf(a1 + 4); - std::ios::init(v1, a1 + 4); -} -// 56028C: using guessed type int (*off_56028C[2])(); -// 5602A0: using guessed type int (*off_5602A0[2])(); - -//----- (004F36A0) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // eax - int v5; // edx - int v6; // eax - std::ios_base *v7; // [esp+4h] [ebp-54h] - std::ios_base *v8; // [esp+10h] [ebp-48h] - int v9; // [esp+14h] [ebp-44h] - - v3 = a2[1]; - *this = v3; - v9 = (int)this + *(_DWORD *)(v3 - 12); - *(_DWORD *)v9 = a2[2]; - v8 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v9, v8, v7); - std::ios::_M_cache_locale((_DWORD *)v9, v9 + 108); - v4 = *((_DWORD *)v8 + 28); - *((_DWORD *)v8 + 28) = 0; - *(_DWORD *)(v9 + 120) = 0; - *(_DWORD *)(v9 + 112) = v4; - *(_WORD *)(v9 + 116) = *((_WORD *)v8 + 58); - v5 = a2[3]; - v6 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v5; - std::filebuf::basic_filebuf((int)(this + 1), (std::locale *)(a3 + 1)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 1); -} -// 4F36FE: variable 'v7' is possibly undefined - -//----- (004F37D0) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char *a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::ios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::filebuf::open(this + 1, a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::ios::clear(v9, 0); - else - std::ios::clear(v9, v9[5] | 4); -} - -//----- (004F3920) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::ios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::filebuf::open(this + 1, a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::ios::clear(v9, 0); - else - std::ios::clear(v9, v9[5] | 4); -} - -//----- (004F3A70) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char **a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::ios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::filebuf::open(this + 1, *a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::ios::clear(v9, 0); - else - std::ios::clear(v9, v9[5] | 4); -} - -//----- (004F3BC0) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2) -{ - int v2; // eax - _DWORD *v3; // ecx - int v4; // eax - int v5; // edx - - v2 = a2[1]; - *this = v2; - v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v3 = a2[2]; - std::ios::init((int)v3, 0); - v4 = *a2; - v5 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); -} - -//----- (004F3CC0) -------------------------------------------------------- -void __fastcall std::ofstream::~ofstream(_DWORD *a1) -{ - *a1 = off_56028C; - a1[28] = off_5602A0; - a1[1] = off_5600A0; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 1)); - std::__basic_file::~__basic_file((int)(a1 + 11)); - a1[1] = &off_560424; - std::locale::~locale((_DWORD **)a1 + 8); - *a1 = &unk_55B5C8; - a1[28] = &off_560E20; - std::ios_base::~ios_base((int)(a1 + 28)); - operator delete(a1); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 56028C: using guessed type int (*off_56028C[2])(); -// 5602A0: using guessed type int (*off_5602A0[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004F3DA0) -------------------------------------------------------- -void __fastcall std::ofstream::~ofstream(int a1) -{ - *(_DWORD *)a1 = off_56028C; - *(_DWORD *)(a1 + 112) = off_5602A0; - *(_DWORD *)(a1 + 4) = off_5600A0; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B5C8; - *(_DWORD *)(a1 + 112) = &off_560E20; - std::ios_base::~ios_base(a1 + 112); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 56028C: using guessed type int (*off_56028C[2])(); -// 5602A0: using guessed type int (*off_5602A0[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (004F3E70) -------------------------------------------------------- -void __thiscall std::ofstream::~ofstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - this[1] = (int)off_5600A0; - std::filebuf::close((struct _Unwind_Exception *)(this + 1)); - std::__basic_file::~__basic_file((int)(this + 11)); - this[1] = (int)&off_560424; - std::locale::~locale((_DWORD **)this + 8); - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (004F3F50) -------------------------------------------------------- -_DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - char v6; // cl - char v7; // cl - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - *((_BYTE *)v4 + 117) = v7; - std::filebuf::operator=((int)(this + 1), (int)(a2 + 1)); - return this; -} -// 4F3F90: variable 'v9' is possibly undefined - -//----- (004F4020) -------------------------------------------------------- -int __thiscall std::wofstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 1, a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004F4090) -------------------------------------------------------- -int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 1, a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004F4100) -------------------------------------------------------- -int __thiscall std::wofstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 1, *a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004F4170) -------------------------------------------------------- -void __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - __int16 v6; // cx - std::ios_base *v7; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v7); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - *((_BYTE *)v4 + 118) = v6; - std::wfilebuf::swap((int)(this + 1), (int)(a2 + 1)); -} -// 4F41B0: variable 'v7' is possibly undefined - -//----- (004F4230) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::wofstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 1)); - if ( !result ) - return (struct _Unwind_Exception *)std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004F4270) -------------------------------------------------------- -bool __fastcall std::wofstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 44)); -} - -//----- (004F4280) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - std::ios_base *v3; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v5; // [esp+14h] [ebp-44h] - - v5 = this + 29; - std::ios_base::ios_base(this + 29); - *((_WORD *)this + 116) = 0; - this[57] = 0; - *((_BYTE *)this + 234) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_55B5F0; - this[29] = &unk_55B604; - lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v5, lpuexcpt, v3); - std::wios::_M_cache_locale(v5, (int)(this + 56)); - v2 = *((_DWORD *)lpuexcpt + 28); - *this = off_5602B4; - *((_DWORD *)lpuexcpt + 28) = 0; - this[57] = v2; - LOWORD(v2) = *((_WORD *)lpuexcpt + 58); - this[59] = 0; - *((_WORD *)this + 116) = v2; - LOBYTE(v2) = *((_BYTE *)lpuexcpt + 118); - this[29] = off_5602C8; - *((_BYTE *)this + 234) = v2; - std::wfilebuf::basic_filebuf((int)(this + 1), (std::locale *)(a2 + 1)); - this[59] = this + 1; -} -// 4F4322: variable 'v3' is possibly undefined -// 5602B4: using guessed type int (*off_5602B4[2])(); -// 5602C8: using guessed type int (*off_5602C8[2])(); - -//----- (004F4410) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 29); - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - *((_BYTE *)this + 234) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_55B5F0; - this[29] = &unk_55B604; - std::wios::init(v5, 0); - *this = off_5602B4; - this[29] = off_5602C8; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init(v5, (int)(this + 1)); - v3 = std::wfilebuf::open(this + 1, a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 5602B4: using guessed type int (*off_5602B4[2])(); -// 5602C8: using guessed type int (*off_5602C8[2])(); - -//----- (004F45B0) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 29); - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - *((_BYTE *)this + 234) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_55B5F0; - this[29] = &unk_55B604; - std::wios::init(v5, 0); - *this = off_5602B4; - this[29] = off_5602C8; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init(v5, (int)(this + 1)); - v3 = std::wfilebuf::open(this + 1, a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 5602B4: using guessed type int (*off_5602B4[2])(); -// 5602C8: using guessed type int (*off_5602C8[2])(); - -//----- (004F4750) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // [esp+20h] [ebp-48h] - - v5 = (int)(this + 29); - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - *((_BYTE *)this + 234) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_55B5F0; - this[29] = &unk_55B604; - std::wios::init(v5, 0); - *this = off_5602B4; - this[29] = off_5602C8; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init(v5, (int)(this + 1)); - v3 = std::wfilebuf::open(this + 1, *a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 5602B4: using guessed type int (*off_5602B4[2])(); -// 5602C8: using guessed type int (*off_5602C8[2])(); - -//----- (004F48F0) -------------------------------------------------------- -void __fastcall std::wofstream::basic_ofstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 116; - std::ios_base::ios_base((_DWORD *)(a1 + 116)); - *(_DWORD *)(a1 + 228) = 0; - *(_WORD *)(a1 + 232) = 0; - *(_BYTE *)(a1 + 234) = 0; - *(_DWORD *)(a1 + 236) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)a1 = &unk_55B5F0; - *(_DWORD *)(a1 + 116) = &unk_55B604; - std::wios::init(v1, 0); - *(_DWORD *)a1 = off_5602B4; - *(_DWORD *)(a1 + 116) = off_5602C8; - std::wfilebuf::basic_filebuf(a1 + 4); - std::wios::init(v1, a1 + 4); -} -// 5602B4: using guessed type int (*off_5602B4[2])(); -// 5602C8: using guessed type int (*off_5602C8[2])(); - -//----- (004F4A40) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // eax - int v5; // edx - int v6; // eax - std::ios_base *v7; // [esp+4h] [ebp-54h] - std::ios_base *v8; // [esp+10h] [ebp-48h] - int v9; // [esp+14h] [ebp-44h] - - v3 = a2[1]; - *this = v3; - v9 = (int)this + *(_DWORD *)(v3 - 12); - *(_DWORD *)v9 = a2[2]; - v8 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v9, v8, v7); - std::wios::_M_cache_locale((_DWORD *)v9, v9 + 108); - v4 = *((_DWORD *)v8 + 28); - *((_DWORD *)v8 + 28) = 0; - *(_DWORD *)(v9 + 120) = 0; - *(_DWORD *)(v9 + 112) = v4; - *(_WORD *)(v9 + 116) = *((_WORD *)v8 + 58); - *(_BYTE *)(v9 + 118) = *((_BYTE *)v8 + 118); - v5 = a2[3]; - v6 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v5; - std::wfilebuf::basic_filebuf((int)(this + 1), (std::locale *)(a3 + 1)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 1); -} -// 4F4A9E: variable 'v7' is possibly undefined - -//----- (004F4B70) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::wios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::wfilebuf::open(this + 1, a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::wios::clear(v9, 0); - else - std::wios::clear(v9, v9[5] | 4); -} - -//----- (004F4CC0) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::wios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::wfilebuf::open(this + 1, a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::wios::clear(v9, 0); - else - std::wios::clear(v9, v9[5] | 4); -} - -//----- (004F4E10) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::wios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::wfilebuf::open(this + 1, *a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::wios::clear(v9, 0); - else - std::wios::clear(v9, v9[5] | 4); -} - -//----- (004F4F60) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2) -{ - int v2; // eax - _DWORD *v3; // ecx - int v4; // eax - int v5; // edx - - v2 = a2[1]; - *this = v2; - v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v3 = a2[2]; - std::wios::init((int)v3, 0); - v4 = *a2; - v5 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); -} - -//----- (004F5060) -------------------------------------------------------- -void __fastcall std::wofstream::~wofstream(_DWORD *a1) -{ - *a1 = off_5602B4; - a1[29] = off_5602C8; - a1[1] = off_5600E0; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 1)); - std::__basic_file::~__basic_file((int)(a1 + 11)); - a1[1] = &off_560464; - std::locale::~locale((_DWORD **)a1 + 8); - *a1 = &unk_55B5F0; - a1[29] = &off_560E30; - std::ios_base::~ios_base((int)(a1 + 29)); - operator delete(a1); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 5602B4: using guessed type int (*off_5602B4[2])(); -// 5602C8: using guessed type int (*off_5602C8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004F5140) -------------------------------------------------------- -void __fastcall std::wofstream::~wofstream(int a1) -{ - *(_DWORD *)a1 = off_5602B4; - *(_DWORD *)(a1 + 116) = off_5602C8; - *(_DWORD *)(a1 + 4) = off_5600E0; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B5F0; - *(_DWORD *)(a1 + 116) = &off_560E30; - std::ios_base::~ios_base(a1 + 116); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 5602B4: using guessed type int (*off_5602B4[2])(); -// 5602C8: using guessed type int (*off_5602C8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (004F5210) -------------------------------------------------------- -void __thiscall std::wofstream::~wofstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - this[1] = (int)off_5600E0; - std::wfilebuf::close((struct _Unwind_Exception *)(this + 1)); - std::__basic_file::~__basic_file((int)(this + 11)); - this[1] = (int)&off_560464; - std::locale::~locale((_DWORD **)this + 8); - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (004F52F0) -------------------------------------------------------- -_DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - __int16 v6; // cx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - *((_BYTE *)v4 + 118) = v6; - std::wfilebuf::operator=((int)(this + 1), (int)(a2 + 1)); - return this; -} -// 4F5330: variable 'v8' is possibly undefined - -//----- (004F53C0) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) -{ - std::codecvt::codecvt(this, a3); - *this = &off_5602D8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 5602D8: using guessed type int (*off_5602D8)(); - -//----- (004F54C0) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_5602D8; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 5602D8: using guessed type int (*off_5602D8)(); - -//----- (004F55D0) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_5602D8; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 5602D8: using guessed type int (*off_5602D8)(); - -//----- (004F56E0) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) -{ - std::codecvt::codecvt(this, a3); - *this = &off_5602D8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 5602D8: using guessed type int (*off_5602D8)(); - -//----- (004F57E0) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_5602D8; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 5602D8: using guessed type int (*off_5602D8)(); - -//----- (004F58F0) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_5602D8; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 5602D8: using guessed type int (*off_5602D8)(); - -//----- (004F5A00) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block) -{ - *Block = &off_5602D8; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 5602D8: using guessed type int (*off_5602D8)(); - -//----- (004F5A20) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) -{ - *a1 = &off_5602D8; - std::codecvt::~codecvt(a1); -} -// 5602D8: using guessed type int (*off_5602D8)(); - -//----- (004F5A30) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) -{ - *a1 = &off_5602D8; - std::codecvt::~codecvt(a1); -} -// 5602D8: using guessed type int (*off_5602D8)(); - -//----- (004F5A40) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) -{ - std::codecvt::codecvt(this, a3); - *this = &off_560304; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 560304: using guessed type int (*off_560304)(); - -//----- (004F5B40) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_560304; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 560304: using guessed type int (*off_560304)(); - -//----- (004F5C50) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_560304; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 560304: using guessed type int (*off_560304)(); - -//----- (004F5D60) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) -{ - std::codecvt::codecvt(this, a3); - *this = &off_560304; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 560304: using guessed type int (*off_560304)(); - -//----- (004F5E60) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_560304; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 560304: using guessed type int (*off_560304)(); - -//----- (004F5F70) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_560304; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 560304: using guessed type int (*off_560304)(); - -//----- (004F6080) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block) -{ - *Block = &off_560304; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 560304: using guessed type int (*off_560304)(); - -//----- (004F60A0) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) -{ - *a1 = &off_560304; - std::codecvt::~codecvt(a1); -} -// 560304: using guessed type int (*off_560304)(); - -//----- (004F60B0) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) -{ - *a1 = &off_560304; - std::codecvt::~codecvt(a1); -} -// 560304: using guessed type int (*off_560304)(); - -//----- (004F60C0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560BE0; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_560330; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 560330: using guessed type int (*off_560330)(); -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (004F6200) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_560BE0; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_560330; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 560330: using guessed type int (*off_560330)(); -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (004F6350) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560BE0; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_560330; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 560330: using guessed type int (*off_560330)(); -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (004F6490) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_560BE0; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_560330; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 560330: using guessed type int (*off_560330)(); -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (004F65E0) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560BE0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F661E: variable 'lpfctx' is possibly undefined -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (004F6640) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BE0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F667E: variable 'lpfctx' is possibly undefined -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (004F66A0) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BE0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F66DE: variable 'lpfctx' is possibly undefined -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (004F6700) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560BFC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_56034C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 56034C: using guessed type int (*off_56034C)(); -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (004F6840) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_560BFC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_56034C; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 56034C: using guessed type int (*off_56034C)(); -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (004F6990) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560BFC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_56034C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 56034C: using guessed type int (*off_56034C)(); -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (004F6AD0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_560BFC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_56034C; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 56034C: using guessed type int (*off_56034C)(); -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (004F6C20) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560BFC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F6C5E: variable 'lpfctx' is possibly undefined -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (004F6C80) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BFC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F6CBE: variable 'lpfctx' is possibly undefined -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (004F6CE0) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BFC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F6D1E: variable 'lpfctx' is possibly undefined -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (004F6D40) -------------------------------------------------------- -void __userpurge std::overflow_error::overflow_error(_DWORD *a1@, std::overflow_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_5601E8; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_560368; -} -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); - -//----- (004F6DD0) -------------------------------------------------------- -void __thiscall std::overflow_error::overflow_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_5601E8; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_560368; -} -// 4F6E24: variable 'v2' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); - -//----- (004F6E70) -------------------------------------------------------- -void __userpurge std::overflow_error::overflow_error( - _DWORD *a1@, - std::overflow_error *this, - const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_5601E8; - std::string::string(a1 + 1, this, v3); - *a1 = &off_560368; -} -// 4F6EB8: variable 'v3' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); - -//----- (004F6F00) -------------------------------------------------------- -void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_560368; - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4F6F0C: variable 'Block' is possibly undefined -// 560368: using guessed type void (__cdecl *off_560368)(std::overflow_error *__hidden this); - -//----- (004F6F20) -------------------------------------------------------- -void __cdecl std::overflow_error::~overflow_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_5601E8; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4F6F2B: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 4F6F20: using guessed type int var_D[3]; - -//----- (004F6F80) -------------------------------------------------------- -void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1) -{ - *a1 = 0; - a1[1] = 0; - a1[2] = a1; - a1[3] = a1; - a1[4] = 0; -} - -//----- (004F6F9C) -------------------------------------------------------- -void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1) -{ - *a1 = 0; - a1[1] = 0; - a1[2] = a1; - a1[3] = a1; - a1[4] = 0; -} - -//----- (004F6FB8) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) -{ - operator delete(Block); -} - -//----- (004F6FC8) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - void *v1; // ebx - - v1 = *(void **)(a1 + 12); - if ( v1 ) - { - WXML::DOMLib::WXMLDom::~WXMLDom(*(_DWORD *)(a1 + 12)); - operator delete(v1); - } -} - -//----- (004F6FEC) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004F6FF4) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block) -{ - operator delete(Block); -} - -//----- (004F7008) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) -{ - operator delete(Block); -} - -//----- (004F7018) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1, int a2) -{ - void ***v2; // ebx - - v2 = *(void ****)(a1 + 12); - if ( v2 ) - { - std::vector::~vector(v2 + 6, a2); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)v2); - operator delete(v2); - } -} - -//----- (004F7044) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004F704C) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( - void *Block) -{ - operator delete(Block); -} - -//----- (004F7060) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy( - void *Block) -{ - operator delete(Block); -} - -//----- (004F7070) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - void *v1; // ebx - - v1 = *(void **)(a1 + 12); - if ( v1 ) - { - WXML::EXPRLib::ExprSyntaxTree::~ExprSyntaxTree(*(_DWORD *)(a1 + 12)); - operator delete(v1); - } -} - -//----- (004F7094) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004F709C) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( - void *Block) -{ - operator delete(Block); -} - -//----- (004F70B0) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) -{ - operator delete(Block); -} - -//----- (004F70C0) -------------------------------------------------------- -int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - int v1; // ecx - int result; // eax - - v1 = *(_DWORD *)(a1 + 12); - if ( v1 ) - return (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - return result; -} - -//----- (004F70D0) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004F70D8) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block) -{ - operator delete(Block); -} - -//----- (004F70EC) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) -{ - operator delete(Block); -} - -//----- (004F70FC) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - void *v1; // ebx - - v1 = *(void **)(a1 + 12); - if ( v1 ) - { - std::string::_M_dispose(*(void ***)(a1 + 12)); - operator delete(v1); - } -} - -//----- (004F7120) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004F7128) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block) -{ - operator delete(Block); -} - -//----- (004F713C) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_destroy( - void *Block) -{ - operator delete(Block); -} - -//----- (004F714C) -------------------------------------------------------- -int __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_dispose( - int a1) -{ - int v1; // ecx - int result; // eax - - v1 = *(_DWORD *)(a1 + 12); - if ( v1 ) - return (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - return result; -} - -//----- (004F715C) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::_M_get_deleter( - int a1) -{ - return 0; -} - -//----- (004F7164) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr,std::allocator> *,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr( - void *Block) -{ - operator delete(Block); -} - -//----- (004F7180) -------------------------------------------------------- -_DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx - - result = this; - v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); - if ( v7 == std::streambuf::seekoff ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - } - else - { - v7(this, a2, a3, a4, a5, a6); - return this; - } - return result; -} - -//----- (004F7200) -------------------------------------------------------- -_DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) -{ - _DWORD *result; // eax - _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx - - result = this; - v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); - if ( v8 == std::streambuf::seekpos ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - } - else - { - v8(this, a2, a3, a4, a5, a6, a7); - return this; - } - return result; -} - -//----- (004F72A0) -------------------------------------------------------- -int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] += a2; - return result; -} - -//----- (004F72B0) -------------------------------------------------------- -int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[5] += a2; - return result; -} - -//----- (004F72C0) -------------------------------------------------------- -int __thiscall std::streambuf::setg(_DWORD *this, int a2, int a3, int a4) -{ - int result; // eax - - this[1] = a2; - this[2] = a3; - result = a4; - this[3] = a4; - return result; -} - -//----- (004F72E0) -------------------------------------------------------- -int __thiscall std::streambuf::setp(_DWORD *this, int a2, int a3) -{ - int result; // eax - - this[5] = a2; - this[4] = a2; - result = a3; - this[6] = a3; - return result; -} - -//----- (004F7300) -------------------------------------------------------- -void __thiscall std::streambuf::swap(int this, int a2) -{ - volatile signed __int32 **v2; // esi - int v3; // edx - int v4; // ebx - int v5; // edx - int v6; // ebx - int v7; // edx - int v8; // ebx - int v9; // edx - int v10; // ebx - int v11; // edx - int v12; // ebx - int v13; // edx - const std::locale *v14; // [esp+4h] [ebp-28h] - _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF - - v2 = (volatile signed __int32 **)(this + 28); - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); - std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); - std::locale::~locale(v15); -} -// 4F7361: variable 'v14' is possibly undefined - -//----- (004F73A0) -------------------------------------------------------- -int std::streambuf::sync() -{ - return 0; -} - -//----- (004F73B0) -------------------------------------------------------- -int __thiscall std::streambuf::gbump(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] += a2; - return result; -} - -//----- (004F73D0) -------------------------------------------------------- -int __thiscall std::streambuf::pbump(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[5] += a2; - return result; -} - -//----- (004F73E0) -------------------------------------------------------- -int __fastcall std::streambuf::sgetc(_DWORD *a1) -{ - unsigned __int8 *v1; // eax - int result; // eax - int (*v3)(void); // edx - - v1 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - return *v1; - v3 = *(int (**)(void))(*a1 + 36); - result = -1; - if ( v3 != std::streambuf::underflow ) - return v3(); - return result; -} - -//----- (004F7410) -------------------------------------------------------- -int __fastcall std::streambuf::sgetn(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); -} - -//----- (004F7420) -------------------------------------------------------- -int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8 a2) -{ - unsigned __int8 *v2; // eax - int v3; // ebx - int (__stdcall *v5)(int); // eax - - v2 = (unsigned __int8 *)this[5]; - v3 = a2; - if ( this[6] > (unsigned int)v2 ) - { - *v2 = a2; - ++this[5]; - return v3; - } - v5 = *(int (__stdcall **)(int))(*this + 52); - if ( v5 == std::streambuf::overflow ) - return -1; - return v5(a2); -} - -//----- (004F7460) -------------------------------------------------------- -int __fastcall std::streambuf::sputn(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); -} - -//----- (004F7470) -------------------------------------------------------- -int __fastcall std::streambuf::uflow(_DWORD *a1) -{ - int (*v1)(); // eax - unsigned __int8 *v4; // eax - int v5; // edx - - v1 = *(int (**)())(*a1 + 36); - if ( v1 == std::streambuf::underflow ) - return -1; - if ( v1() == -1 ) - return -1; - v4 = (unsigned __int8 *)a1[2]; - v5 = *v4; - a1[2] = v4 + 1; - return v5; -} - -//----- (004F74C0) -------------------------------------------------------- -int __fastcall std::streambuf::sbumpc(_DWORD *a1) -{ - unsigned __int8 *v1; // eax - int v2; // edx - int (*v4)(void); // edx - int (*v5)(); // eax - unsigned __int8 *v6; // eax - int v7; // edx - - v1 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - { - v2 = *v1; - a1[2] = v1 + 1; - return v2; - } - v4 = *(int (**)(void))(*a1 + 40); - if ( (char *)v4 != (char *)std::streambuf::uflow ) - return v4(); - v5 = *(int (**)())(*a1 + 36); - if ( v5 == std::streambuf::underflow ) - return -1; - if ( v5() == -1 ) - return -1; - v6 = (unsigned __int8 *)a1[2]; - v7 = *v6; - a1[2] = v6 + 1; - return v7; -} - -//----- (004F7540) -------------------------------------------------------- -void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3) -{ - return this; -} - -//----- (004F7550) -------------------------------------------------------- -int __fastcall std::streambuf::snextc(_DWORD *a1) -{ - unsigned int v1; // eax - unsigned int v2; // edx - unsigned __int8 *v3; // eax - int (*v5)(void); // edx - int (*v6)(); // eax - int (*v7)(); // eax - int v8; // eax - _DWORD *v9; // ecx - unsigned __int8 *v10; // eax - unsigned int v11; // edx - - v1 = a1[2]; - v2 = a1[3]; - if ( v1 < v2 ) - { - v3 = (unsigned __int8 *)(v1 + 1); - a1[2] = v3; - if ( (unsigned int)v3 < v2 ) - return *v3; - v7 = *(int (**)())(*a1 + 36); - if ( v7 == std::streambuf::underflow ) - return -1; - return v7(); - } - v5 = *(int (**)(void))(*a1 + 40); - if ( (char *)v5 == (char *)std::streambuf::uflow ) - { - v6 = *(int (**)())(*a1 + 36); - if ( v6 == std::streambuf::underflow || v6() == -1 ) - return -1; - v9 = a1; - v11 = a1[3]; - v10 = (unsigned __int8 *)(a1[2] + 1); - a1[2] = v10; - } - else - { - v8 = v5(); - v9 = a1; - if ( v8 == -1 ) - return -1; - v10 = (unsigned __int8 *)a1[2]; - v11 = a1[3]; - } - if ( (unsigned int)v10 < v11 ) - return *v10; - v7 = *(int (**)())(*v9 + 36); - if ( v7 == std::streambuf::underflow ) - return -1; - return v7(); -} - -//----- (004F7610) -------------------------------------------------------- -int (*__fastcall std::streambuf::stossc(_DWORD *a1))(void) -{ - unsigned int v1; // eax - int (*result)(void); // eax - int (*v3)(void); // edx - - v1 = a1[2]; - if ( v1 >= a1[3] ) - { - v3 = *(int (**)(void))(*a1 + 40); - if ( (char *)v3 == (char *)std::streambuf::uflow ) - { - result = *(int (**)(void))(*a1 + 36); - if ( result != std::streambuf::underflow ) - { - result = (int (*)(void))result(); - if ( result != (int (*)(void))-1 ) - ++a1[2]; - } - } - else - { - return (int (*)(void))v3(); - } - } - else - { - result = (int (*)(void))(v1 + 1); - a1[2] = result; - } - return result; -} - -//----- (004F7670) -------------------------------------------------------- -int __thiscall std::streambuf::xsgetn(_DWORD *this, char *a2, int a3) -{ - int v5; // esi - const void *Src; // ecx - int v7; // eax - size_t Size; // ebx - char *v10; // ebx - int (__fastcall *v11)(_DWORD *); // edx - int (*v12)(); // eax - char *v13; // eax - char v14; // cl - int v15; // eax - char *v16; // [esp+30h] [ebp+4h] - - if ( a3 > 0 ) - { - v5 = 0; - while ( 1 ) - { - Src = (const void *)this[2]; - v7 = this[3] - (_DWORD)Src; - if ( v7 ) - { - Size = a3 - v5; - v16 = a2; - if ( a3 - v5 > v7 ) - Size = this[3] - (_DWORD)Src; - v5 += Size; - memcpy(a2, Src, Size); - this[2] += Size; - if ( a3 <= v5 ) - return v5; - v10 = &v16[Size]; - } - else - { - v10 = a2; - } - v11 = *(int (__fastcall **)(_DWORD *))(*this + 40); - if ( v11 == std::streambuf::uflow ) - { - v12 = *(int (**)())(*this + 36); - if ( v12 == std::streambuf::underflow || ((int (__fastcall *)(_DWORD *))v12)(this) == -1 ) - return v5; - v13 = (char *)this[2]; - v14 = *v13; - this[2] = v13 + 1; - } - else - { - v15 = v11(this); - v14 = v15; - if ( v15 == -1 ) - return v5; - } - ++v5; - *v10 = v14; - a2 = v10 + 1; - if ( a3 <= v5 ) - return v5; - } - } - return 0; -} - -//----- (004F7730) -------------------------------------------------------- -int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3) -{ - int v5; // ebx - void *v6; // edx - int v7; // eax - size_t Size; // ecx - int (__stdcall *v10)(int); // eax - size_t v11; // [esp+1Ch] [ebp-20h] - - if ( a3 > 0 ) - { - v5 = 0; - while ( 1 ) - { - v6 = (void *)this[5]; - v7 = this[6] - (_DWORD)v6; - if ( v7 ) - { - Size = a3 - v5; - if ( a3 - v5 > v7 ) - Size = this[6] - (_DWORD)v6; - v11 = Size; - memcpy(v6, a2, Size); - this[5] += v11; - v5 += v11; - if ( a3 <= v5 ) - return v5; - a2 += v11; - } - v10 = *(int (__stdcall **)(int))(*this + 52); - if ( v10 != std::streambuf::overflow && ((int (__thiscall *)(_DWORD *, _DWORD))v10)(this, *a2) != -1 ) - { - ++v5; - ++a2; - if ( a3 > v5 ) - continue; - } - return v5; - } - } - return 0; -} - -//----- (004F77D0) -------------------------------------------------------- -int __fastcall std::streambuf::pubsync(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); - if ( v1 == std::streambuf::sync ) - return 0; - else - return v1(); -} - -//----- (004F77F0) -------------------------------------------------------- -_DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - - *this = -1; - result = this; - this[1] = -1; - this[2] = 0; - return result; -} - -//----- (004F7810) -------------------------------------------------------- -_DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) -{ - _DWORD *result; // eax - - result = this; - *this = -1; - this[1] = -1; - this[2] = 0; - return result; -} - -//----- (004F7830) -------------------------------------------------------- -int __fastcall std::streambuf::sungetc(_DWORD *a1) -{ - unsigned int v1; // eax - int result; // eax - int (__stdcall *v3)(int); // edx - - v1 = a1[2]; - if ( a1[1] >= v1 ) - { - v3 = *(int (__stdcall **)(int))(*a1 + 44); - result = -1; - if ( v3 != std::streambuf::pbackfail ) - return v3(-1); - } - else - { - a1[2] = v1 - 1; - return *(unsigned __int8 *)(v1 - 1); - } - return result; -} - -//----- (004F7880) -------------------------------------------------------- -int __fastcall std::streambuf::in_avail(_DWORD *a1) -{ - int result; // eax - int (*v2)(void); // edx - - result = a1[3] - a1[2]; - if ( !result ) - { - v2 = *(int (**)(void))(*a1 + 28); - if ( v2 != std::streambuf::showmanyc ) - return v2(); - } - return result; -} - -//----- (004F78B0) -------------------------------------------------------- -int __stdcall std::streambuf::overflow(int a1) -{ - return -1; -} - -//----- (004F78C0) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::streambuf::pubimbue( - volatile signed __int32 **this, - volatile signed __int32 **a2, - volatile signed __int32 **a3) -{ - int (__stdcall *v3)(int); // eax - const std::locale *v5; // [esp+4h] [ebp-54h] - - std::locale::locale(this, a2 + 7, v5); - v3 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); - if ( v3 != std::streambuf::imbue ) - ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v3)(a2, a3); - std::locale::operator=(a2 + 7, a3); - return this; -} -// 4F78FE: variable 'v5' is possibly undefined -// 4F73C0: using guessed type int __stdcall std::streambuf::imbue(int); - -//----- (004F7980) -------------------------------------------------------- -int __stdcall std::streambuf::pbackfail(int a1) -{ - return -1; -} - -//----- (004F7990) -------------------------------------------------------- -int __thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3) -{ - int result; // eax - void *(__thiscall *v4)(void *, int, int); // edx - - result = (int)this; - v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); - if ( v4 != std::streambuf::setbuf ) - return ((int (__stdcall *)(int, int))v4)(a2, a3); - return result; -} - -//----- (004F79B0) -------------------------------------------------------- -int std::streambuf::showmanyc() -{ - return 0; -} - -//----- (004F79C0) -------------------------------------------------------- -int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8 a2) -{ - unsigned int v2; // eax - int result; // eax - - v2 = this[2]; - if ( this[1] < v2 && *(_BYTE *)(v2 - 1) == a2 ) - { - this[2] = v2 - 1; - return *(unsigned __int8 *)(v2 - 1); - } - else - { - result = -1; - if ( *(int (__stdcall **)(int))(*this + 44) != std::streambuf::pbackfail ) - return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, a2); - } - return result; -} - -//----- (004F7A00) -------------------------------------------------------- -int std::streambuf::underflow() -{ - return -1; -} - -//----- (004F7A10) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( - _DWORD *a1@, - std::locale *a2, - const std::locale *a3) -{ - volatile signed __int32 **v3; // ecx - - *a1 = &off_560424; - v3 = (volatile signed __int32 **)(a1 + 7); - *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); - *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); - *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); - *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); - *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); - *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); - return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); -} -// 560424: using guessed type int (*off_560424)(); - -//----- (004F7A50) -------------------------------------------------------- -void __fastcall std::streambuf::basic_streambuf(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_560424; - v1 = a1 + 7; - *(v1 - 6) = 0; - *(v1 - 5) = 0; - *(v1 - 4) = 0; - *(v1 - 3) = 0; - *(v1 - 2) = 0; - *(v1 - 1) = 0; - std::locale::locale(v1); -} -// 560424: using guessed type int (*off_560424)(); - -//----- (004F7A90) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( - _DWORD *a1@, - std::locale *a2, - const std::locale *a3) -{ - volatile signed __int32 **v3; // ecx - - *a1 = &off_560424; - v3 = (volatile signed __int32 **)(a1 + 7); - *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); - *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); - *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); - *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); - *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); - *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); - return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); -} -// 560424: using guessed type int (*off_560424)(); - -//----- (004F7AD0) -------------------------------------------------------- -void __fastcall std::streambuf::basic_streambuf(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_560424; - v1 = a1 + 7; - *(v1 - 6) = 0; - *(v1 - 5) = 0; - *(v1 - 4) = 0; - *(v1 - 3) = 0; - *(v1 - 2) = 0; - *(v1 - 1) = 0; - std::locale::locale(v1); -} -// 560424: using guessed type int (*off_560424)(); - -//----- (004F7B10) -------------------------------------------------------- -void __fastcall std::streambuf::~streambuf(char *Block) -{ - _DWORD **v2; // ecx - - v2 = (_DWORD **)(Block + 28); - *(v2 - 7) = &off_560424; - std::locale::~locale(v2); - operator delete(Block); -} -// 560424: using guessed type int (*off_560424)(); - -//----- (004F7B40) -------------------------------------------------------- -void __fastcall std::streambuf::~streambuf(int a1) -{ - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 560424: using guessed type int (*off_560424)(); - -//----- (004F7B50) -------------------------------------------------------- -void __fastcall std::streambuf::~streambuf(int a1) -{ - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 560424: using guessed type int (*off_560424)(); - -//----- (004F7B60) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int a2) -{ - volatile signed __int32 **v3; // ecx - - v3 = this + 7; - *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); - *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); - *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); - *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); - *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); - *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); - std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); - return this; -} - -//----- (004F7BB0) -------------------------------------------------------- -_DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx - - result = this; - v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); - if ( v7 == std::wstreambuf::seekoff ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - } - else - { - v7(this, a2, a3, a4, a5, a6); - return this; - } - return result; -} - -//----- (004F7C30) -------------------------------------------------------- -_DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) -{ - _DWORD *result; // eax - _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx - - result = this; - v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); - if ( v8 == std::wstreambuf::seekpos ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - } - else - { - v8(this, a2, a3, a4, a5, a6, a7); - return this; - } - return result; -} - -//----- (004F7CD0) -------------------------------------------------------- -int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2) -{ - int result; // eax - - result = 2 * a2; - this[2] += 2 * a2; - return result; -} - -//----- (004F7CE0) -------------------------------------------------------- -int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2) -{ - int result; // eax - - result = 2 * a2; - this[5] += 2 * a2; - return result; -} - -//----- (004F7CF0) -------------------------------------------------------- -int __thiscall std::wstreambuf::setg(_DWORD *this, int a2, int a3, int a4) -{ - int result; // eax - - this[1] = a2; - this[2] = a3; - result = a4; - this[3] = a4; - return result; -} - -//----- (004F7D10) -------------------------------------------------------- -int __thiscall std::wstreambuf::setp(_DWORD *this, int a2, int a3) -{ - int result; // eax - - this[5] = a2; - this[4] = a2; - result = a3; - this[6] = a3; - return result; -} - -//----- (004F7D30) -------------------------------------------------------- -void __thiscall std::wstreambuf::swap(int this, int a2) -{ - volatile signed __int32 **v2; // esi - int v3; // edx - int v4; // ebx - int v5; // edx - int v6; // ebx - int v7; // edx - int v8; // ebx - int v9; // edx - int v10; // ebx - int v11; // edx - int v12; // ebx - int v13; // edx - const std::locale *v14; // [esp+4h] [ebp-28h] - _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF - - v2 = (volatile signed __int32 **)(this + 28); - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); - std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); - std::locale::~locale(v15); -} -// 4F7D91: variable 'v14' is possibly undefined - -//----- (004F7DD0) -------------------------------------------------------- -int std::wstreambuf::sync() -{ - return 0; -} - -//----- (004F7DE0) -------------------------------------------------------- -int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2) -{ - int result; // eax - - result = 2 * a2; - this[2] += 2 * a2; - return result; -} - -//----- (004F7E00) -------------------------------------------------------- -int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2) -{ - int result; // eax - - result = 2 * a2; - this[5] += 2 * a2; - return result; -} - -//----- (004F7E10) -------------------------------------------------------- -int __fastcall std::wstreambuf::sgetc(_DWORD *a1) -{ - unsigned __int16 *v1; // eax - int result; // eax - int (*v3)(void); // edx - - v1 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - return *v1; - v3 = *(int (**)(void))(*a1 + 36); - result = -1; - if ( v3 != std::wstreambuf::underflow ) - return v3(); - return result; -} - -//----- (004F7E40) -------------------------------------------------------- -int __fastcall std::wstreambuf::sgetn(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); -} - -//----- (004F7E50) -------------------------------------------------------- -int __thiscall std::wstreambuf::sputc(_DWORD *this, int a2) -{ - _WORD *v2; // eax - int result; // eax - - v2 = (_WORD *)this[5]; - if ( this[6] <= (unsigned int)v2 ) - { - result = -1; - if ( *(int (__stdcall **)(int))(*this + 52) != std::wstreambuf::overflow ) - return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 52))(this, (unsigned __int16)a2); - } - else - { - *v2 = a2; - this[5] = v2 + 1; - return a2; - } - return result; -} - -//----- (004F7E90) -------------------------------------------------------- -int __fastcall std::wstreambuf::sputn(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); -} - -//----- (004F7EA0) -------------------------------------------------------- -int __fastcall std::wstreambuf::uflow(_DWORD *a1) -{ - int (*v1)(); // eax - unsigned __int16 *v4; // eax - int v5; // edx - - v1 = *(int (**)())(*a1 + 36); - if ( v1 == std::wstreambuf::underflow ) - return -1; - if ( (unsigned __int16)v1() == 0xFFFF ) - return -1; - v4 = (unsigned __int16 *)a1[2]; - v5 = *v4; - a1[2] = v4 + 1; - return v5; -} - -//----- (004F7EF0) -------------------------------------------------------- -int __fastcall std::wstreambuf::sbumpc(_DWORD *a1) -{ - unsigned __int16 *v1; // eax - int v2; // edx - int (*v4)(void); // edx - int (*v5)(); // eax - unsigned __int16 *v6; // eax - int v7; // edx - - v1 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - { - v2 = *v1; - a1[2] = v1 + 1; - return v2; - } - v4 = *(int (**)(void))(*a1 + 40); - if ( (char *)v4 != (char *)std::wstreambuf::uflow ) - return v4(); - v5 = *(int (**)())(*a1 + 36); - if ( v5 == std::wstreambuf::underflow ) - return -1; - if ( (unsigned __int16)v5() == 0xFFFF ) - return -1; - v6 = (unsigned __int16 *)a1[2]; - v7 = *v6; - a1[2] = v6 + 1; - return v7; -} - -//----- (004F7F70) -------------------------------------------------------- -void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3) -{ - return this; -} - -//----- (004F7F80) -------------------------------------------------------- -int __fastcall std::wstreambuf::snextc(_DWORD *a1) -{ - __int16 *v1; // eax - __int16 v2; // dx - unsigned __int16 *v3; // eax - int (*v5)(); // eax - int (*v6)(void); // edx - int (*v7)(); // eax - __int16 v8; // ax - _DWORD *v9; // ecx - __int16 v10; // dx - unsigned __int16 *v11; // eax - __int16 *v12; // eax - - v1 = (__int16 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - { - v2 = *v1; - a1[2] = v1 + 1; - if ( v2 == -1 ) - return -1; - v3 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v3 < a1[3] ) - return *v3; - v5 = *(int (**)())(*a1 + 36); - if ( v5 == std::wstreambuf::underflow ) - return -1; - return v5(); - } - v6 = *(int (**)(void))(*a1 + 40); - if ( (char *)v6 == (char *)std::wstreambuf::uflow ) - { - v7 = *(int (**)())(*a1 + 36); - if ( v7 == std::wstreambuf::underflow || (unsigned __int16)v7() == 0xFFFF ) - return -1; - v9 = a1; - v12 = (__int16 *)a1[2]; - v10 = *v12; - a1[2] = v12 + 1; - } - else - { - v8 = v6(); - v9 = a1; - v10 = v8; - } - if ( v10 == -1 ) - return -1; - v11 = (unsigned __int16 *)v9[2]; - if ( (unsigned int)v11 < v9[3] ) - return *v11; - v5 = *(int (**)())(*v9 + 36); - if ( v5 == std::wstreambuf::underflow ) - return -1; - return v5(); -} - -//----- (004F8040) -------------------------------------------------------- -int (*__fastcall std::wstreambuf::stossc(_DWORD *a1))(void) -{ - unsigned int v1; // eax - int (*result)(void); // eax - int (*v3)(void); // edx - - v1 = a1[2]; - if ( v1 >= a1[3] ) - { - v3 = *(int (**)(void))(*a1 + 40); - if ( (char *)v3 == (char *)std::wstreambuf::uflow ) - { - result = *(int (**)(void))(*a1 + 36); - if ( result != std::wstreambuf::underflow ) - { - result = (int (*)(void))result(); - if ( (_WORD)result != 0xFFFF ) - a1[2] += 2; - } - } - else - { - return (int (*)(void))v3(); - } - } - else - { - result = (int (*)(void))(v1 + 2); - a1[2] = result; - } - return result; -} - -//----- (004F80A0) -------------------------------------------------------- -int __thiscall std::wstreambuf::xsgetn(_DWORD *this, char *a2, int a3) -{ - int v4; // esi - int v5; // edx - _BYTE *v7; // ebx - char *Src; // eax - int v9; // ebx - int v10; // ebp - char *v12; // ebp - int (__fastcall *v13)(_DWORD *); // ebx - int (*v14)(); // eax - __int16 *v15; // ecx - __int16 v16; // ax - char *v17; // [esp+30h] [ebp+4h] - int v18; // [esp+34h] [ebp+8h] - int v19; // [esp+34h] [ebp+8h] - int v20; // [esp+34h] [ebp+8h] - - v4 = 0; - v5 = a3; - if ( a3 > 0 ) - { - while ( 1 ) - { - v7 = (_BYTE *)this[3]; - Src = (char *)this[2]; - if ( v7 == Src ) - { - v12 = a2; - } - else - { - v9 = (v7 - Src) >> 1; - if ( v9 > v5 - v4 ) - v9 = v5 - v4; - v10 = 2 * v9; - if ( v9 ) - { - v18 = v5; - v17 = a2; - memcpy(a2, Src, 2 * v9); - Src = (char *)this[2]; - v5 = v18; - a2 = v17; - } - v4 += v9; - this[2] = &Src[v10]; - if ( v5 <= v4 ) - return v4; - v12 = &a2[v10]; - } - v13 = *(int (__fastcall **)(_DWORD *))(*this + 40); - if ( v13 == std::wstreambuf::uflow ) - { - v14 = *(int (**)())(*this + 36); - if ( v14 == std::wstreambuf::underflow ) - return v4; - v19 = v5; - if ( ((unsigned __int16 (__fastcall *)(_DWORD *))v14)(this) == 0xFFFF ) - return v4; - v15 = (__int16 *)this[2]; - v5 = v19; - v16 = *v15; - this[2] = v15 + 1; - } - else - { - v20 = v5; - v16 = v13(this); - v5 = v20; - } - if ( v16 != -1 ) - { - ++v4; - *(_WORD *)v12 = v16; - a2 = v12 + 2; - if ( v5 > v4 ) - continue; - } - return v4; - } - } - return v4; -} - -//----- (004F8190) -------------------------------------------------------- -int __thiscall std::wstreambuf::xsputn(_DWORD *this, char *a2, int a3) -{ - int v3; // edx - int v6; // esi - _BYTE *v7; // ebx - char *v8; // eax - int v9; // ebx - int v10; // ecx - int (__stdcall *v12)(int); // eax - int v13; // [esp+44h] [ebp+8h] - int v14; // [esp+44h] [ebp+8h] - - v3 = a3; - if ( a3 > 0 ) - { - v6 = 0; - while ( 1 ) - { - v7 = (_BYTE *)this[6]; - v8 = (char *)this[5]; - if ( v7 != v8 ) - { - v9 = (v7 - v8) >> 1; - if ( v9 > v3 - v6 ) - v9 = v3 - v6; - v10 = 2 * v9; - if ( v9 ) - { - v13 = v3; - memcpy(v8, a2, 2 * v9); - v8 = (char *)this[5]; - v3 = v13; - v10 = 2 * v9; - } - v6 += v9; - this[5] = &v8[v10]; - if ( v3 <= v6 ) - return v6; - a2 += v10; - } - v12 = *(int (__stdcall **)(int))(*this + 52); - if ( v12 != std::wstreambuf::overflow ) - { - v14 = v3; - if ( ((unsigned __int16 (__thiscall *)(_DWORD *, _DWORD))v12)(this, *(unsigned __int16 *)a2) != 0xFFFF ) - { - v3 = v14; - ++v6; - a2 += 2; - if ( v14 > v6 ) - continue; - } - } - return v6; - } - } - return 0; -} - -//----- (004F8260) -------------------------------------------------------- -int __fastcall std::wstreambuf::pubsync(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); - if ( v1 == std::wstreambuf::sync ) - return 0; - else - return v1(); -} - -//----- (004F8280) -------------------------------------------------------- -_DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - - *this = -1; - result = this; - this[1] = -1; - this[2] = 0; - return result; -} - -//----- (004F82A0) -------------------------------------------------------- -_DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) -{ - _DWORD *result; // eax - - result = this; - *this = -1; - this[1] = -1; - this[2] = 0; - return result; -} - -//----- (004F82C0) -------------------------------------------------------- -int __fastcall std::wstreambuf::sungetc(_DWORD *a1) -{ - unsigned int v1; // eax - unsigned int v2; // edx - int result; // eax - int (__stdcall *v4)(int); // edx - - v1 = a1[2]; - if ( a1[1] >= v1 ) - { - v4 = *(int (__stdcall **)(int))(*a1 + 44); - result = -1; - if ( v4 != std::wstreambuf::pbackfail ) - return v4(0xFFFF); - } - else - { - v2 = v1 - 2; - result = *(unsigned __int16 *)(v1 - 2); - a1[2] = v2; - } - return result; -} - -//----- (004F8310) -------------------------------------------------------- -int __fastcall std::wstreambuf::in_avail(_DWORD *a1) -{ - int v1; // eax - int v2; // edx - int result; // eax - int (*v4)(void); // edx - - v1 = a1[3]; - v2 = a1[2]; - if ( v1 != v2 ) - return (v1 - v2) >> 1; - v4 = *(int (**)(void))(*a1 + 28); - result = 0; - if ( v4 != std::wstreambuf::showmanyc ) - return v4(); - return result; -} - -//----- (004F8340) -------------------------------------------------------- -int __stdcall std::wstreambuf::overflow(int a1) -{ - return -1; -} - -//----- (004F8350) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::wstreambuf::pubimbue( - volatile signed __int32 **this, - volatile signed __int32 **a2, - volatile signed __int32 **a3) -{ - int (__stdcall *v3)(int); // eax - const std::locale *v5; // [esp+4h] [ebp-54h] - - std::locale::locale(this, a2 + 7, v5); - v3 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); - if ( v3 != std::wstreambuf::imbue ) - ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v3)(a2, a3); - std::locale::operator=(a2 + 7, a3); - return this; -} -// 4F838E: variable 'v5' is possibly undefined -// 4F7DF0: using guessed type int __stdcall std::wstreambuf::imbue(int); - -//----- (004F8410) -------------------------------------------------------- -int __stdcall std::wstreambuf::pbackfail(int a1) -{ - return -1; -} - -//----- (004F8420) -------------------------------------------------------- -int __thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3) -{ - int result; // eax - void *(__thiscall *v4)(void *, int, int); // edx - - result = (int)this; - v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); - if ( v4 != std::wstreambuf::setbuf ) - return ((int (__stdcall *)(int, int))v4)(a2, a3); - return result; -} - -//----- (004F8440) -------------------------------------------------------- -int std::wstreambuf::showmanyc() -{ - return 0; -} - -//----- (004F8450) -------------------------------------------------------- -int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2) -{ - unsigned int v2; // eax - int result; // eax - - v2 = this[2]; - if ( this[1] < v2 && *(_WORD *)(v2 - 2) == (_WORD)a2 ) - { - this[2] = v2 - 2; - return a2; - } - else - { - result = -1; - if ( *(int (__stdcall **)(int))(*this + 44) != std::wstreambuf::pbackfail ) - return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, (unsigned __int16)a2); - } - return result; -} - -//----- (004F8490) -------------------------------------------------------- -int std::wstreambuf::underflow() -{ - return -1; -} - -//----- (004F84A0) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( - _DWORD *a1@, - std::locale *a2, - const std::locale *a3) -{ - volatile signed __int32 **v3; // ecx - - *a1 = &off_560464; - v3 = (volatile signed __int32 **)(a1 + 7); - *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); - *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); - *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); - *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); - *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); - *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); - return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); -} -// 560464: using guessed type int (*off_560464)(); - -//----- (004F84E0) -------------------------------------------------------- -void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_560464; - v1 = a1 + 7; - *(v1 - 6) = 0; - *(v1 - 5) = 0; - *(v1 - 4) = 0; - *(v1 - 3) = 0; - *(v1 - 2) = 0; - *(v1 - 1) = 0; - std::locale::locale(v1); -} -// 560464: using guessed type int (*off_560464)(); - -//----- (004F8520) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( - _DWORD *a1@, - std::locale *a2, - const std::locale *a3) -{ - volatile signed __int32 **v3; // ecx - - *a1 = &off_560464; - v3 = (volatile signed __int32 **)(a1 + 7); - *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); - *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); - *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); - *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); - *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); - *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); - return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); -} -// 560464: using guessed type int (*off_560464)(); - -//----- (004F8560) -------------------------------------------------------- -void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_560464; - v1 = a1 + 7; - *(v1 - 6) = 0; - *(v1 - 5) = 0; - *(v1 - 4) = 0; - *(v1 - 3) = 0; - *(v1 - 2) = 0; - *(v1 - 1) = 0; - std::locale::locale(v1); -} -// 560464: using guessed type int (*off_560464)(); - -//----- (004F85A0) -------------------------------------------------------- -void __fastcall std::wstreambuf::~wstreambuf(char *Block) -{ - _DWORD **v2; // ecx - - v2 = (_DWORD **)(Block + 28); - *(v2 - 7) = &off_560464; - std::locale::~locale(v2); - operator delete(Block); -} -// 560464: using guessed type int (*off_560464)(); - -//----- (004F85D0) -------------------------------------------------------- -void __fastcall std::wstreambuf::~wstreambuf(int a1) -{ - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 560464: using guessed type int (*off_560464)(); - -//----- (004F85E0) -------------------------------------------------------- -void __fastcall std::wstreambuf::~wstreambuf(int a1) -{ - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 560464: using guessed type int (*off_560464)(); - -//----- (004F85F0) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int a2) -{ - volatile signed __int32 **v3; // ecx - - v3 = this + 7; - *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); - *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); - *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); - *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); - *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); - *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); - std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); - return this; -} - -//----- (004F8640) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560D14; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_5604A4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 5604A4: using guessed type int (*off_5604A4)(); -// 560D14: using guessed type int (*off_560D14)(); - -//----- (004F8780) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) -{ - std::messages_byname::messages_byname(this, *a2, a3); -} - -//----- (004F8790) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560D14; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_5604A4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 5604A4: using guessed type int (*off_5604A4)(); -// 560D14: using guessed type int (*off_560D14)(); - -//----- (004F88D0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) -{ - std::messages_byname::messages_byname(this, *a2, a3); -} - -//----- (004F88E0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560D14; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F891E: variable 'lpfctx' is possibly undefined -// 560D14: using guessed type int (*off_560D14)(); - -//----- (004F8940) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560D14; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F897E: variable 'lpfctx' is possibly undefined -// 560D14: using guessed type int (*off_560D14)(); - -//----- (004F89A0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560D14; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F89DE: variable 'lpfctx' is possibly undefined -// 560D14: using guessed type int (*off_560D14)(); - -//----- (004F8A00) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560D30; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_5604C0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 5604C0: using guessed type int (*off_5604C0)(); -// 560D30: using guessed type int (*off_560D30)(); - -//----- (004F8B40) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) -{ - std::messages_byname::messages_byname(this, *a2, a3); -} - -//----- (004F8B50) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560D30; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_5604C0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 5604C0: using guessed type int (*off_5604C0)(); -// 560D30: using guessed type int (*off_560D30)(); - -//----- (004F8C90) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) -{ - std::messages_byname::messages_byname(this, *a2, a3); -} - -//----- (004F8CA0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560D30; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F8CDE: variable 'lpfctx' is possibly undefined -// 560D30: using guessed type int (*off_560D30)(); - -//----- (004F8D00) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560D30; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F8D3E: variable 'lpfctx' is possibly undefined -// 560D30: using guessed type int (*off_560D30)(); - -//----- (004F8D60) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560D30; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F8D9E: variable 'lpfctx' is possibly undefined -// 560D30: using guessed type int (*off_560D30)(); - -//----- (004F8DC0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_560D4C; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_5604DC; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 5604DC: using guessed type int (*off_5604DC)(); -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (004F8F00) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_560D4C; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_5604DC; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 5604DC: using guessed type int (*off_5604DC)(); -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (004F9050) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_560D4C; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_5604DC; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 5604DC: using guessed type int (*off_5604DC)(); -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (004F9190) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_560D4C; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_5604DC; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 5604DC: using guessed type int (*off_5604DC)(); -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (004F92E0) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) -{ - *Block = &off_5604DC; - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 5604DC: using guessed type int (*off_5604DC)(); - -//----- (004F9300) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_5604DC; - std::numpunct::~numpunct(a1); -} -// 5604DC: using guessed type int (*off_5604DC)(); - -//----- (004F9310) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_5604DC; - std::numpunct::~numpunct(a1); -} -// 5604DC: using guessed type int (*off_5604DC)(); - -//----- (004F9320) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_560D70; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_560500; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 560500: using guessed type int (*off_560500)(); -// 560D70: using guessed type int (*off_560D70)(); - -//----- (004F9460) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_560D70; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_560500; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 560500: using guessed type int (*off_560500)(); -// 560D70: using guessed type int (*off_560D70)(); - -//----- (004F95B0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_560D70; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_560500; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 560500: using guessed type int (*off_560500)(); -// 560D70: using guessed type int (*off_560D70)(); - -//----- (004F96F0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_560D70; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_560500; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 560500: using guessed type int (*off_560500)(); -// 560D70: using guessed type int (*off_560D70)(); - -//----- (004F9840) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) -{ - *Block = &off_560500; - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 560500: using guessed type int (*off_560500)(); - -//----- (004F9860) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_560500; - std::numpunct::~numpunct(a1); -} -// 560500: using guessed type int (*off_560500)(); - -//----- (004F9870) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_560500; - std::numpunct::~numpunct(a1); -} -// 560500: using guessed type int (*off_560500)(); - -//----- (004F9880) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560524; - result = a3 != 0; - this[1] = result; - return result; -} -// 560524: using guessed type int (*off_560524)(); - -//----- (004F98A0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560524; - result = a3 != 0; - this[1] = result; - return result; -} -// 560524: using guessed type int (*off_560524)(); - -//----- (004F98C0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560524; - result = a3 != 0; - this[1] = result; - return result; -} -// 560524: using guessed type int (*off_560524)(); - -//----- (004F98E0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560524; - result = a3 != 0; - this[1] = result; - return result; -} -// 560524: using guessed type int (*off_560524)(); - -//----- (004F9900) -------------------------------------------------------- -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560D94; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F990C: variable 'Blocka' is possibly undefined -// 560D94: using guessed type int (*off_560D94)(); - -//----- (004F9920) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560D94; - std::locale::facet::~facet(a1); -} -// 4F9920: variable 'v1' is possibly undefined -// 560D94: using guessed type int (*off_560D94)(); - -//----- (004F9930) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560D94; - std::locale::facet::~facet(a1); -} -// 4F9930: variable 'v1' is possibly undefined -// 560D94: using guessed type int (*off_560D94)(); - -//----- (004F9940) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_56054C; - result = a3 != 0; - this[1] = result; - return result; -} -// 56054C: using guessed type int (*off_56054C)(); - -//----- (004F9960) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_56054C; - result = a3 != 0; - this[1] = result; - return result; -} -// 56054C: using guessed type int (*off_56054C)(); - -//----- (004F9980) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_56054C; - result = a3 != 0; - this[1] = result; - return result; -} -// 56054C: using guessed type int (*off_56054C)(); - -//----- (004F99A0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_56054C; - result = a3 != 0; - this[1] = result; - return result; -} -// 56054C: using guessed type int (*off_56054C)(); - -//----- (004F99C0) -------------------------------------------------------- -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560DBC; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F99CC: variable 'Blocka' is possibly undefined -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (004F99E0) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DBC; - std::locale::facet::~facet(a1); -} -// 4F99E0: variable 'v1' is possibly undefined -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (004F99F0) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DBC; - std::locale::facet::~facet(a1); -} -// 4F99F0: variable 'v1' is possibly undefined -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (004F9A00) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560574; - result = a3 != 0; - this[1] = result; - return result; -} -// 560574: using guessed type int (*off_560574)(); - -//----- (004F9A20) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560574; - result = a3 != 0; - this[1] = result; - return result; -} -// 560574: using guessed type int (*off_560574)(); - -//----- (004F9A40) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560574; - result = a3 != 0; - this[1] = result; - return result; -} -// 560574: using guessed type int (*off_560574)(); - -//----- (004F9A60) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560574; - result = a3 != 0; - this[1] = result; - return result; -} -// 560574: using guessed type int (*off_560574)(); - -//----- (004F9A80) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560574; - result = a3 != 0; - this[1] = result; - return result; -} -// 560574: using guessed type int (*off_560574)(); - -//----- (004F9AA0) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560574; - result = a3 != 0; - this[1] = result; - return result; -} -// 560574: using guessed type int (*off_560574)(); - -//----- (004F9AC0) -------------------------------------------------------- -void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560DE4; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F9ACC: variable 'Blocka' is possibly undefined -// 560DE4: using guessed type int (*off_560DE4)(); - -//----- (004F9AE0) -------------------------------------------------------- -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DE4; - std::locale::facet::~facet(a1); -} -// 4F9AE0: variable 'v1' is possibly undefined -// 560DE4: using guessed type int (*off_560DE4)(); - -//----- (004F9AF0) -------------------------------------------------------- -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DE4; - std::locale::facet::~facet(a1); -} -// 4F9AF0: variable 'v1' is possibly undefined -// 560DE4: using guessed type int (*off_560DE4)(); - -//----- (004F9B00) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560588; - result = a3 != 0; - this[1] = result; - return result; -} -// 560588: using guessed type int (*off_560588)(); - -//----- (004F9B20) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560588; - result = a3 != 0; - this[1] = result; - return result; -} -// 560588: using guessed type int (*off_560588)(); - -//----- (004F9B40) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560588; - result = a3 != 0; - this[1] = result; - return result; -} -// 560588: using guessed type int (*off_560588)(); - -//----- (004F9B60) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560588; - result = a3 != 0; - this[1] = result; - return result; -} -// 560588: using guessed type int (*off_560588)(); - -//----- (004F9B80) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560588; - result = a3 != 0; - this[1] = result; - return result; -} -// 560588: using guessed type int (*off_560588)(); - -//----- (004F9BA0) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_560588; - result = a3 != 0; - this[1] = result; - return result; -} -// 560588: using guessed type int (*off_560588)(); - -//----- (004F9BC0) -------------------------------------------------------- -void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560DF8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F9BCC: variable 'Blocka' is possibly undefined -// 560DF8: using guessed type int (*off_560DF8)(); - -//----- (004F9BE0) -------------------------------------------------------- -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DF8; - std::locale::facet::~facet(a1); -} -// 4F9BE0: variable 'v1' is possibly undefined -// 560DF8: using guessed type int (*off_560DF8)(); - -//----- (004F9BF0) -------------------------------------------------------- -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DF8; - std::locale::facet::~facet(a1); -} -// 4F9BF0: variable 'v1' is possibly undefined -// 560DF8: using guessed type int (*off_560DF8)(); - -//----- (004F9C00) -------------------------------------------------------- -void __userpurge std::underflow_error::underflow_error(_DWORD *a1@, std::underflow_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_5601E8; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_56059C; -} -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); - -//----- (004F9C90) -------------------------------------------------------- -void __thiscall std::underflow_error::underflow_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_5601E8; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_56059C; -} -// 4F9CE4: variable 'v2' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); - -//----- (004F9D30) -------------------------------------------------------- -void __userpurge std::underflow_error::underflow_error( - _DWORD *a1@, - std::underflow_error *this, - const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_5601E8; - std::string::string(a1 + 1, this, v3); - *a1 = &off_56059C; -} -// 4F9D78: variable 'v3' is possibly undefined -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); - -//----- (004F9DC0) -------------------------------------------------------- -void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_56059C; - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4F9DCC: variable 'Block' is possibly undefined -// 56059C: using guessed type void (__cdecl *off_56059C)(std::underflow_error *__hidden this); - -//----- (004F9DE0) -------------------------------------------------------- -void __cdecl std::underflow_error::~underflow_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_5601E8; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4F9DEB: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 5601E8: using guessed type void (__cdecl *off_5601E8)(std::runtime_error *__hidden this); -// 4F9DE0: using guessed type int var_D[3]; - -//----- (004F9E40) -------------------------------------------------------- -int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1) -{ - signed __int32 v1; // eax - int result; // eax - signed __int32 v3; // eax - int v4; // [esp-1Ch] [ebp-1Ch] - int v5; // [esp-18h] [ebp-18h] - int v6; // [esp-14h] [ebp-14h] - volatile signed __int32 *v7; // [esp-10h] [ebp-10h] - int v8; // [esp-Ch] [ebp-Ch] - int v9; // [esp-8h] [ebp-8h] - - if ( _CRT_MT ) - { - v1 = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); - } - else - { - v1 = *((_DWORD *)a1 + 1); - *((_DWORD *)a1 + 1) = v1 - 1; - } - result = v1 - 1; - if ( !result ) - { - (*(void (__stdcall **)(int, int, int, volatile signed __int32 *, int, int))(*a1 + 8))(v4, v5, v6, a1, v8, v9); - if ( _CRT_MT ) - { - v3 = _InterlockedExchangeAdd(v7 + 2, 0xFFFFFFFF); - } - else - { - v3 = *((_DWORD *)v7 + 2); - *((_DWORD *)v7 + 2) = v3 - 1; - } - result = v3 - 1; - if ( !result ) - return (*(int (__fastcall **)(volatile signed __int32 *))(*v7 + 12))(v7); - } - return result; -} -// 4F9E6A: variable 'v4' is possibly undefined -// 4F9E6A: variable 'v5' is possibly undefined -// 4F9E6A: variable 'v6' is possibly undefined -// 4F9E6A: variable 'v8' is possibly undefined -// 4F9E6A: variable 'v9' is possibly undefined -// 4F9E7C: variable 'v7' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004F9E9C) -------------------------------------------------------- -void __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(int a1) -{ - if ( _CRT_MT ) - _InterlockedIncrement((volatile signed __int32 *)(a1 + 4)); - else - ++*(_DWORD *)(a1 + 4); -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (004F9EB0) -------------------------------------------------------- -void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) -{ - _DWORD *(__thiscall *v2)(char *, int); // eax - unsigned int v3; // eax - bool v4; // al - _DWORD *(__thiscall *v5)(int *, int); // eax - unsigned int v6; // eax - _DWORD *(__thiscall *v7)(int *, int); // eax - unsigned int v8; // eax - int (__fastcall *v9)(int); // eax - char v10; // al - int (__fastcall *v11)(int); // eax - char v12; // al - char v13; // al - char *v14; // edx - void (__thiscall *v15)(_BYTE *, char *, char *, int); // eax - char v16; // al - void (__thiscall *v17)(_BYTE *, char *, char *, int); // eax - int v18; // ecx - int v19; // eax - int v20; // ecx - int v21; // eax - int v22; // ecx - int v23; // eax - unsigned int v24; // [esp+Ch] [ebp-7Ch] - unsigned int v25; // [esp+Ch] [ebp-7Ch] - unsigned int v26; // [esp+Ch] [ebp-7Ch] - char *v27; // [esp+1Ch] [ebp-6Ch] - char *v28; // [esp+1Ch] [ebp-6Ch] - std::string *v29; // [esp+24h] [ebp-64h] - std::string *v30; // [esp+28h] [ebp-60h] - std::string *Block; // [esp+2Ch] [ebp-5Ch] - _DWORD *v32; // [esp+34h] [ebp-54h] - _BYTE *v33; // [esp+34h] [ebp-54h] - char v35[7]; // [esp+71h] [ebp-17h] BYREF - int v36; // [esp+78h] [ebp-10h] BYREF - int v37[3]; // [esp+7Ch] [ebp-Ch] BYREF - - v32 = std::use_facet>(a2); - v2 = *(_DWORD *(__thiscall **)(char *, int))(*v32 + 16); - if ( (char *)v2 == (char *)std::numpunct::do_grouping ) - std::string::string(&v35[3], *(char **)(v32[2] + 8), (int)v37); - else - v2(&v35[3], (int)v32); - v3 = *(_DWORD *)(*(_DWORD *)&v35[3] - 12); - *(_DWORD *)(this + 12) = v3; - Block = (std::string *)operator new[](v3); - std::string::copy(&v35[3], Block, *(_DWORD *)(this + 12), 0, v24); - v4 = 0; - if ( *(_DWORD *)(this + 12) ) - v4 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v4; - v5 = *(_DWORD *(__thiscall **)(int *, int))(*v32 + 20); - if ( v5 == std::numpunct::do_truename ) - std::string::string(&v36, *(char **)(v32[2] + 20), (int)&v35[1]); - else - v5(&v36, (int)v32); - v6 = *(_DWORD *)(v36 - 12); - *(_DWORD *)(this + 24) = v6; - v29 = (std::string *)operator new[](v6); - std::string::copy(&v36, v29, *(_DWORD *)(this + 24), 0, v25); - v7 = *(_DWORD *(__thiscall **)(int *, int))(*v32 + 24); - if ( v7 == std::numpunct::do_falsename ) - std::string::string(v37, *(char **)(v32[2] + 28), (int)&v35[2]); - else - v7(v37, (int)v32); - v8 = *(_DWORD *)(v37[0] - 12); - *(_DWORD *)(this + 32) = v8; - v30 = (std::string *)operator new[](v8); - std::string::copy(v37, v30, *(_DWORD *)(this + 32), 0, v26); - v9 = *(int (__fastcall **)(int))(*v32 + 8); - if ( v9 == std::numpunct::do_decimal_point ) - v10 = *(_BYTE *)(v32[2] + 36); - else - v10 = v9((int)v32); - *(_BYTE *)(this + 36) = v10; - v11 = *(int (__fastcall **)(int))(*v32 + 12); - if ( v11 == std::numpunct::do_thousands_sep ) - v12 = *(_BYTE *)(v32[2] + 37); - else - v12 = v11((int)v32); - *(_BYTE *)(this + 37) = v12; - v33 = std::use_facet>(a2); - v13 = v33[28]; - v27 = std::__num_base::_S_atoms_out[0]; - v14 = std::__num_base::_S_atoms_out[0]; - if ( v13 == 1 ) - goto LABEL_17; - if ( !v13 ) - std::ctype::_M_widen_init((int)v33); - v14 = v27; - v15 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v33 + 28); - if ( (char *)v15 == (char *)std::ctype::do_widen ) - { -LABEL_17: - *(_DWORD *)(this + 38) = *(_DWORD *)v14; - *(_DWORD *)(this + 42) = *((_DWORD *)v14 + 1); - *(_DWORD *)(this + 46) = *((_DWORD *)v14 + 2); - *(_DWORD *)(this + 50) = *((_DWORD *)v14 + 3); - *(_DWORD *)(this + 54) = *((_DWORD *)v14 + 4); - *(_DWORD *)(this + 58) = *((_DWORD *)v14 + 5); - *(_DWORD *)(this + 62) = *((_DWORD *)v14 + 6); - *(_DWORD *)(this + 66) = *((_DWORD *)v14 + 7); - *(_DWORD *)(this + 70) = *((_DWORD *)v14 + 8); - } - else - { - v15(v33, v27, v27 + 36, this + 38); - } - v28 = std::__num_base::_S_atoms_in[0]; - v16 = v33[28]; - if ( v16 == 1 ) - goto LABEL_21; - if ( v16 ) - { - v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v33 + 28); - if ( (char *)v17 == (char *)std::ctype::do_widen ) - { -LABEL_21: - *(_DWORD *)(this + 74) = *(_DWORD *)v28; - *(_DWORD *)(this + 78) = *((_DWORD *)v28 + 1); - *(_DWORD *)(this + 82) = *((_DWORD *)v28 + 2); - *(_DWORD *)(this + 86) = *((_DWORD *)v28 + 3); - *(_DWORD *)(this + 90) = *((_DWORD *)v28 + 4); - *(_DWORD *)(this + 94) = *((_DWORD *)v28 + 5); - *(_WORD *)(this + 98) = *((_WORD *)v28 + 12); - goto LABEL_22; - } - } - else - { - std::ctype::_M_widen_init((int)v33); - v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v33 + 28); - if ( (char *)v17 == (char *)std::ctype::do_widen ) - goto LABEL_21; - } - v17(v33, v28, v28 + 26, this + 74); -LABEL_22: - *(_DWORD *)(this + 8) = Block; - *(_DWORD *)(this + 20) = v29; - v18 = v37[0]; - *(_DWORD *)(this + 28) = v30; - *(_BYTE *)(this + 100) = 1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v18 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_24: - v20 = v36; - if ( !_CRT_MT ) - goto LABEL_25; - goto LABEL_31; - } - } - else - { - v19 = *(_DWORD *)(v18 - 4); - *(_DWORD *)(v18 - 4) = v19 - 1; - if ( v19 > 0 ) - goto LABEL_24; - } - std::string::_Rep::_M_destroy((void *)(v18 - 12), (int)&v35[2]); - v20 = v36; - if ( !_CRT_MT ) - { -LABEL_25: - v21 = *(_DWORD *)(v20 - 4); - *(_DWORD *)(v20 - 4) = v21 - 1; - if ( v21 > 0 ) - goto LABEL_26; - goto LABEL_32; - } -LABEL_31: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v20 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_26: - v22 = *(_DWORD *)&v35[3]; - if ( !_CRT_MT ) - goto LABEL_27; - goto LABEL_33; - } -LABEL_32: - std::string::_Rep::_M_destroy((void *)(v20 - 12), (int)v37); - v22 = *(_DWORD *)&v35[3]; - if ( !_CRT_MT ) - { -LABEL_27: - v23 = *(_DWORD *)(v22 - 4); - *(_DWORD *)(v22 - 4) = v23 - 1; - if ( v23 > 0 ) - return; -LABEL_34: - std::string::_Rep::_M_destroy((void *)(v22 - 12), (int)v37); - return; - } -LABEL_33: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v22 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_34; -} -// 4F9F6D: variable 'v24' is possibly undefined -// 4FA00F: variable 'v25' is possibly undefined -// 4FA091: variable 'v26' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; - -//----- (004FA510) -------------------------------------------------------- -int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_5605B0; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 16) = 0; - this[1] = a2 != 0; - result = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - *((_WORD *)this + 18) = 0; - *((_BYTE *)this + 100) = 0; - return result; -} -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (004FA560) -------------------------------------------------------- -int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_5605B0; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 16) = 0; - this[1] = a2 != 0; - result = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - *((_WORD *)this + 18) = 0; - *((_BYTE *)this + 100) = 0; - return result; -} -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (004FA5B0) -------------------------------------------------------- -void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4FA5F0: variable 'lpfctx' is possibly undefined - -//----- (004FA640) -------------------------------------------------------- -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - int v2; // ebx - bool v3; // zf - - v2 = v1; - v3 = *(_BYTE *)(v1 + 100) == 0; - *(_DWORD *)v1 = &off_5605B0; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( *(_DWORD *)(v2 + 20) ) - operator delete[](*(void **)(v2 + 20)); - if ( *(_DWORD *)(v2 + 28) ) - operator delete[](*(void **)(v2 + 28)); - } - std::locale::facet::~facet(a1); -} -// 4FA641: variable 'v1' is possibly undefined -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (004FA690) -------------------------------------------------------- -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - int v2; // ebx - bool v3; // zf - - v2 = v1; - v3 = *(_BYTE *)(v1 + 100) == 0; - *(_DWORD *)v1 = &off_5605B0; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( *(_DWORD *)(v2 + 20) ) - operator delete[](*(void **)(v2 + 20)); - if ( *(_DWORD *)(v2 + 28) ) - operator delete[](*(void **)(v2 + 28)); - } - std::locale::facet::~facet(a1); -} -// 4FA691: variable 'v1' is possibly undefined -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (004FA6E0) -------------------------------------------------------- -void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) -{ - _DWORD *(__thiscall *v2)(char *, int); // eax - unsigned int v3; // eax - bool v4; // al - _DWORD *(__thiscall *v5)(int *, int); // eax - unsigned int v6; // eax - _DWORD *(__thiscall *v7)(int *, int); // eax - unsigned int v8; // eax - int v9; // eax - int (__fastcall *v10)(int); // edx - __int16 v11; // dx - int (__fastcall *v12)(int); // eax - __int16 v13; // ax - int v14; // ecx - int v15; // eax - int v16; // ecx - int v17; // eax - int v18; // ecx - int v19; // eax - unsigned int v20; // [esp+Ch] [ebp-6Ch] - _WORD *v21; // [esp+14h] [ebp-64h] - _WORD *v22; // [esp+18h] [ebp-60h] - std::string *Block; // [esp+1Ch] [ebp-5Ch] - _DWORD *v24; // [esp+24h] [ebp-54h] - void *v25; // [esp+24h] [ebp-54h] - char v27[7]; // [esp+61h] [ebp-17h] BYREF - int v28; // [esp+68h] [ebp-10h] BYREF - int v29[2]; // [esp+6Ch] [ebp-Ch] BYREF - - v24 = std::use_facet>(a2); - v2 = *(_DWORD *(__thiscall **)(char *, int))(*v24 + 16); - if ( (char *)v2 == (char *)std::numpunct::do_grouping ) - std::string::string(&v27[3], *(char **)(v24[2] + 8), (int)v29); - else - v2(&v27[3], (int)v24); - v3 = *(_DWORD *)(*(_DWORD *)&v27[3] - 12); - *(_DWORD *)(this + 12) = v3; - Block = (std::string *)operator new[](v3); - std::string::copy(&v27[3], Block, *(_DWORD *)(this + 12), 0, v20); - v4 = 0; - if ( *(_DWORD *)(this + 12) ) - v4 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v4; - v5 = *(_DWORD *(__thiscall **)(int *, int))(*v24 + 20); - if ( v5 == std::numpunct::do_truename ) - std::wstring::basic_string(&v28, *(wchar_t **)(v24[2] + 20), (int)&v27[1]); - else - v5(&v28, (int)v24); - v6 = *(_DWORD *)(v28 - 12); - *(_DWORD *)(this + 24) = v6; - if ( v6 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v21 = (_WORD *)operator new[](2 * v6); - std::wstring::copy(&v28, v21, *(_DWORD *)(this + 24), 0); - v7 = *(_DWORD *(__thiscall **)(int *, int))(*v24 + 24); - if ( v7 == std::numpunct::do_falsename ) - std::wstring::basic_string(v29, *(wchar_t **)(v24[2] + 28), (int)&v27[2]); - else - v7(v29, (int)v24); - v8 = *(_DWORD *)(v29[0] - 12); - *(_DWORD *)(this + 32) = v8; - if ( v8 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v22 = (_WORD *)operator new[](2 * v8); - std::wstring::copy(v29, v22, *(_DWORD *)(this + 32), 0); - v9 = *v24; - v10 = *(int (__fastcall **)(int))(*v24 + 8); - if ( v10 == std::numpunct::do_decimal_point ) - { - v11 = *(_WORD *)(v24[2] + 36); - } - else - { - v11 = v10((int)v24); - v9 = *v24; - } - v12 = *(int (__fastcall **)(int))(v9 + 12); - *(_WORD *)(this + 36) = v11; - if ( v12 == std::numpunct::do_thousands_sep ) - v13 = *(_WORD *)(v24[2] + 38); - else - v13 = v12((int)v24); - *(_WORD *)(this + 38) = v13; - v25 = std::use_facet>(a2); - (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v25 + 44))( - v25, - std::__num_base::_S_atoms_out[0], - std::__num_base::_S_atoms_out[0] + 36, - this + 40); - (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v25 + 44))( - v25, - std::__num_base::_S_atoms_in[0], - std::__num_base::_S_atoms_in[0] + 26, - this + 112); - v14 = v29[0]; - *(_DWORD *)(this + 8) = Block; - *(_BYTE *)(this + 164) = 1; - *(_DWORD *)(this + 20) = v21; - *(_DWORD *)(this + 28) = v22; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v14 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_17: - v16 = v28; - if ( !_CRT_MT ) - goto LABEL_18; - goto LABEL_24; - } - } - else - { - v15 = *(_DWORD *)(v14 - 4); - *(_DWORD *)(v14 - 4) = v15 - 1; - if ( v15 > 0 ) - goto LABEL_17; - } - std::wstring::_Rep::_M_destroy((void *)(v14 - 12), (int)&v27[2]); - v16 = v28; - if ( !_CRT_MT ) - { -LABEL_18: - v17 = *(_DWORD *)(v16 - 4); - *(_DWORD *)(v16 - 4) = v17 - 1; - if ( v17 > 0 ) - goto LABEL_19; - goto LABEL_25; - } -LABEL_24: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v16 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_19: - v18 = *(_DWORD *)&v27[3]; - if ( !_CRT_MT ) - goto LABEL_20; - goto LABEL_26; - } -LABEL_25: - std::wstring::_Rep::_M_destroy((void *)(v16 - 12), (int)v29); - v18 = *(_DWORD *)&v27[3]; - if ( !_CRT_MT ) - { -LABEL_20: - v19 = *(_DWORD *)(v18 - 4); - *(_DWORD *)(v18 - 4) = v19 - 1; - if ( v19 > 0 ) - return; -LABEL_27: - std::string::_Rep::_M_destroy((void *)(v18 - 12), (int)v29); - return; - } -LABEL_26: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v18 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_27; -} -// 4FA79B: variable 'v20' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; - -//----- (004FAC60) -------------------------------------------------------- -BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_5605C0; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - *((_BYTE *)this + 164) = 0; - return result; -} -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004FACC0) -------------------------------------------------------- -BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_5605C0; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - *((_BYTE *)this + 164) = 0; - return result; -} -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004FAD20) -------------------------------------------------------- -void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4FAD60: variable 'lpfctx' is possibly undefined - -//----- (004FADB0) -------------------------------------------------------- -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - int v2; // ebx - bool v3; // zf - - v2 = v1; - v3 = *(_BYTE *)(v1 + 164) == 0; - *(_DWORD *)v1 = &off_5605C0; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( *(_DWORD *)(v2 + 20) ) - operator delete[](*(void **)(v2 + 20)); - if ( *(_DWORD *)(v2 + 28) ) - operator delete[](*(void **)(v2 + 28)); - } - std::locale::facet::~facet(a1); -} -// 4FADB1: variable 'v1' is possibly undefined -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004FAE00) -------------------------------------------------------- -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - int v2; // ebx - bool v3; // zf - - v2 = v1; - v3 = *(_BYTE *)(v1 + 164) == 0; - *(_DWORD *)v1 = &off_5605C0; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( *(_DWORD *)(v2 + 20) ) - operator delete[](*(void **)(v2 + 20)); - if ( *(_DWORD *)(v2 + 28) ) - operator delete[](*(void **)(v2 + 28)); - } - std::locale::facet::~facet(a1); -} -// 4FAE01: variable 'v1' is possibly undefined -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (004FAE50) -------------------------------------------------------- -void __userpurge std::invalid_argument::invalid_argument(_DWORD *a1@, std::invalid_argument *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_55FF90; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_5605D0; -} -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); - -//----- (004FAEE0) -------------------------------------------------------- -void __thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_55FF90; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_5605D0; -} -// 4FAF34: variable 'v2' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); - -//----- (004FAF80) -------------------------------------------------------- -void __userpurge std::invalid_argument::invalid_argument( - _DWORD *a1@, - std::invalid_argument *this, - const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_55FF90; - std::string::string(a1 + 1, this, v3); - *a1 = &off_5605D0; -} -// 4FAFC8: variable 'v3' is possibly undefined -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); - -//----- (004FB010) -------------------------------------------------------- -void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_5605D0; - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4FB01C: variable 'Block' is possibly undefined -// 5605D0: using guessed type void (__cdecl *off_5605D0)(std::invalid_argument *__hidden this); - -//----- (004FB030) -------------------------------------------------------- -void __cdecl std::invalid_argument::~invalid_argument(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_55FF90; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4FB03B: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55FF90: using guessed type void (__cdecl *off_55FF90)(std::logic_error *__hidden this); -// 4FB030: using guessed type int var_D[3]; - -//----- (004FB090) -------------------------------------------------------- -int *__fastcall std::_Rb_tree_iterator>>::operator++( - int *a1) -{ - *a1 = std::_Rb_tree_increment(*a1); - return a1; -} - -//----- (004FB0B0) -------------------------------------------------------- -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_5605E4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - this[4] = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - this[15] = 0; - this[16] = 0; - this[17] = 0; - this[18] = 0; - this[19] = 0; - this[20] = 0; - this[21] = 0; - this[22] = 0; - this[23] = 0; - this[24] = 0; - this[25] = 0; - this[26] = 0; - this[27] = 0; - this[28] = 0; - this[29] = 0; - this[30] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[37] = 0; - this[38] = 0; - this[39] = 0; - this[40] = 0; - this[41] = 0; - this[42] = 0; - this[43] = 0; - this[44] = 0; - this[45] = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - *((_BYTE *)this + 196) = 0; - return result; -} -// 5605E4: using guessed type int (*off_5605E4)(); - -//----- (004FB250) -------------------------------------------------------- -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_5605E4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - this[4] = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - this[15] = 0; - this[16] = 0; - this[17] = 0; - this[18] = 0; - this[19] = 0; - this[20] = 0; - this[21] = 0; - this[22] = 0; - this[23] = 0; - this[24] = 0; - this[25] = 0; - this[26] = 0; - this[27] = 0; - this[28] = 0; - this[29] = 0; - this[30] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[37] = 0; - this[38] = 0; - this[39] = 0; - this[40] = 0; - this[41] = 0; - this[42] = 0; - this[43] = 0; - this[44] = 0; - this[45] = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - *((_BYTE *)this + 196) = 0; - return result; -} -// 5605E4: using guessed type int (*off_5605E4)(); - -//----- (004FB3F0) -------------------------------------------------------- -void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_5605E4; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4FB3FC: variable 'Blocka' is possibly undefined -// 5605E4: using guessed type int (*off_5605E4)(); - -//----- (004FB410) -------------------------------------------------------- -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_5605E4; - std::locale::facet::~facet(a1); -} -// 4FB410: variable 'v1' is possibly undefined -// 5605E4: using guessed type int (*off_5605E4)(); - -//----- (004FB420) -------------------------------------------------------- -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_5605E4; - std::locale::facet::~facet(a1); -} -// 4FB420: variable 'v1' is possibly undefined -// 5605E4: using guessed type int (*off_5605E4)(); - -//----- (004FB430) -------------------------------------------------------- -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_5605F4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - this[4] = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - this[15] = 0; - this[16] = 0; - this[17] = 0; - this[18] = 0; - this[19] = 0; - this[20] = 0; - this[21] = 0; - this[22] = 0; - this[23] = 0; - this[24] = 0; - this[25] = 0; - this[26] = 0; - this[27] = 0; - this[28] = 0; - this[29] = 0; - this[30] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[37] = 0; - this[38] = 0; - this[39] = 0; - this[40] = 0; - this[41] = 0; - this[42] = 0; - this[43] = 0; - this[44] = 0; - this[45] = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - *((_BYTE *)this + 196) = 0; - return result; -} -// 5605F4: using guessed type int (*off_5605F4)(); - -//----- (004FB5D0) -------------------------------------------------------- -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_5605F4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - this[4] = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - this[15] = 0; - this[16] = 0; - this[17] = 0; - this[18] = 0; - this[19] = 0; - this[20] = 0; - this[21] = 0; - this[22] = 0; - this[23] = 0; - this[24] = 0; - this[25] = 0; - this[26] = 0; - this[27] = 0; - this[28] = 0; - this[29] = 0; - this[30] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[37] = 0; - this[38] = 0; - this[39] = 0; - this[40] = 0; - this[41] = 0; - this[42] = 0; - this[43] = 0; - this[44] = 0; - this[45] = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - *((_BYTE *)this + 196) = 0; - return result; -} -// 5605F4: using guessed type int (*off_5605F4)(); - -//----- (004FB770) -------------------------------------------------------- -void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_5605F4; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4FB77C: variable 'Blocka' is possibly undefined -// 5605F4: using guessed type int (*off_5605F4)(); - -//----- (004FB790) -------------------------------------------------------- -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_5605F4; - std::locale::facet::~facet(a1); -} -// 4FB790: variable 'v1' is possibly undefined -// 5605F4: using guessed type int (*off_5605F4)(); - -//----- (004FB7A0) -------------------------------------------------------- -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_5605F4; - std::locale::facet::~facet(a1); -} -// 4FB7A0: variable 'v1' is possibly undefined -// 5605F4: using guessed type int (*off_5605F4)(); - -//----- (004FB7B0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FEA0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_560604; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FEA0: using guessed type int (*off_55FEA0)(); -// 560604: using guessed type int (*off_560604)(); - -//----- (004FB900) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FEA0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_560604; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FEA0: using guessed type int (*off_55FEA0)(); -// 560604: using guessed type int (*off_560604)(); - -//----- (004FBA60) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FEA0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_560604; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FEA0: using guessed type int (*off_55FEA0)(); -// 560604: using guessed type int (*off_560604)(); - -//----- (004FBBB0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FEA0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_560604; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FEA0: using guessed type int (*off_55FEA0)(); -// 560604: using guessed type int (*off_560604)(); - -//----- (004FBD10) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_560604; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 560604: using guessed type int (*off_560604)(); - -//----- (004FBD30) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_560604; - std::moneypunct::~moneypunct(a1); -} -// 560604: using guessed type int (*off_560604)(); - -//----- (004FBD40) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_560604; - std::moneypunct::~moneypunct(a1); -} -// 560604: using guessed type int (*off_560604)(); - -//----- (004FBD50) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FED4; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_560638; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FED4: using guessed type int (*off_55FED4)(); -// 560638: using guessed type int (*off_560638)(); - -//----- (004FBEA0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FED4; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_560638; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FED4: using guessed type int (*off_55FED4)(); -// 560638: using guessed type int (*off_560638)(); - -//----- (004FC000) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FED4; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_560638; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FED4: using guessed type int (*off_55FED4)(); -// 560638: using guessed type int (*off_560638)(); - -//----- (004FC150) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FED4; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_560638; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FED4: using guessed type int (*off_55FED4)(); -// 560638: using guessed type int (*off_560638)(); - -//----- (004FC2B0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_560638; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 560638: using guessed type int (*off_560638)(); - -//----- (004FC2D0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_560638; - std::moneypunct::~moneypunct(a1); -} -// 560638: using guessed type int (*off_560638)(); - -//----- (004FC2E0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_560638; - std::moneypunct::~moneypunct(a1); -} -// 560638: using guessed type int (*off_560638)(); - -//----- (004FC2F0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FF08; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_56066C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FF08: using guessed type int (*off_55FF08)(); -// 56066C: using guessed type int (*off_56066C)(); - -//----- (004FC440) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FF08; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_56066C; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FF08: using guessed type int (*off_55FF08)(); -// 56066C: using guessed type int (*off_56066C)(); - -//----- (004FC5A0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FF08; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_56066C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FF08: using guessed type int (*off_55FF08)(); -// 56066C: using guessed type int (*off_56066C)(); - -//----- (004FC6F0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FF08; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_56066C; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FF08: using guessed type int (*off_55FF08)(); -// 56066C: using guessed type int (*off_56066C)(); - -//----- (004FC850) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_56066C; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 56066C: using guessed type int (*off_56066C)(); - -//----- (004FC870) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_56066C; - std::moneypunct::~moneypunct(a1); -} -// 56066C: using guessed type int (*off_56066C)(); - -//----- (004FC880) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_56066C; - std::moneypunct::~moneypunct(a1); -} -// 56066C: using guessed type int (*off_56066C)(); - -//----- (004FC890) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FF3C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_5606A0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FF3C: using guessed type int (*off_55FF3C)(); -// 5606A0: using guessed type int (*off_5606A0)(); - -//----- (004FC9E0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FF3C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_5606A0; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FF3C: using guessed type int (*off_55FF3C)(); -// 5606A0: using guessed type int (*off_5606A0)(); - -//----- (004FCB40) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FF3C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_5606A0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FF3C: using guessed type int (*off_55FF3C)(); -// 5606A0: using guessed type int (*off_5606A0)(); - -//----- (004FCC90) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FF3C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_5606A0; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FF3C: using guessed type int (*off_55FF3C)(); -// 5606A0: using guessed type int (*off_5606A0)(); - -//----- (004FCDF0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_5606A0; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 5606A0: using guessed type int (*off_5606A0)(); - -//----- (004FCE10) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_5606A0; - std::moneypunct::~moneypunct(a1); -} -// 5606A0: using guessed type int (*off_5606A0)(); - -//----- (004FCE20) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_5606A0; - std::moneypunct::~moneypunct(a1); -} -// 5606A0: using guessed type int (*off_5606A0)(); - -//----- (004FCE30) -------------------------------------------------------- -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) -{ - int (__fastcall *v2)(int); // eax - char v3; // al - int (__fastcall *v4)(int); // eax - char v5; // al - int v6; // eax - int (__fastcall *v7)(int); // edx - int v8; // edx - _DWORD *(__thiscall *v9)(int *, int); // eax - unsigned int v10; // eax - bool v11; // al - _DWORD *(__thiscall *v12)(int *, int); // eax - unsigned int v13; // eax - _DWORD *(__thiscall *v14)(int *, int); // eax - unsigned int v15; // eax - _DWORD *(__thiscall *v16)(int *, int); // eax - unsigned int v17; // eax - int (__fastcall *v18)(int); // eax - int v19; // eax - int (__fastcall *v20)(int); // eax - int v21; // eax - _BYTE *v22; // eax - int v23; // ecx - char v24; // al - char *v25; // edx - void (__thiscall *v26)(int, char *, char *, int); // eax - int v27; // eax - int v28; // ecx - int v29; // eax - int v30; // ecx - int v31; // eax - int v32; // ecx - int v33; // eax - int v34; // ecx - int v35; // eax - unsigned int v36; // [esp+Ch] [ebp-8Ch] - unsigned int v37; // [esp+Ch] [ebp-8Ch] - unsigned int v38; // [esp+Ch] [ebp-8Ch] - unsigned int v39; // [esp+Ch] [ebp-8Ch] - char *v40; // [esp+18h] [ebp-80h] - std::string *v41; // [esp+20h] [ebp-78h] - std::string *v42; // [esp+24h] [ebp-74h] - std::string *v43; // [esp+28h] [ebp-70h] - std::string *Block; // [esp+2Ch] [ebp-6Ch] - _DWORD *v45; // [esp+34h] [ebp-64h] - int v46; // [esp+34h] [ebp-64h] - int v48; // [esp+7Dh] [ebp-1Bh] BYREF - int v49; // [esp+80h] [ebp-18h] BYREF - int v50; // [esp+84h] [ebp-14h] BYREF - int v51; // [esp+88h] [ebp-10h] BYREF - int v52[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v45 = std::use_facet>(a2); - v2 = *(int (__fastcall **)(int))(*v45 + 8); - if ( v2 == std::moneypunct::do_decimal_point ) - v3 = *(_BYTE *)(v45[2] + 17); - else - v3 = ((int (__fastcall *)(_DWORD *, _DWORD *))v2)(v45, v45); - *(_BYTE *)(this + 17) = v3; - v4 = *(int (__fastcall **)(int))(*v45 + 12); - if ( v4 == std::moneypunct::do_thousands_sep ) - v5 = *(_BYTE *)(v45[2] + 18); - else - v5 = v4((int)v45); - *(_BYTE *)(this + 18) = v5; - v6 = *v45; - v7 = *(int (__fastcall **)(int))(*v45 + 32); - if ( v7 == std::moneypunct::do_frac_digits ) - { - v8 = *(_DWORD *)(v45[2] + 44); - } - else - { - v8 = v7((int)v45); - v6 = *v45; - } - v9 = *(_DWORD *(__thiscall **)(int *, int))(v6 + 16); - *(_DWORD *)(this + 44) = v8; - if ( v9 == std::moneypunct::do_grouping ) - std::string::string(&v49, *(char **)(v45[2] + 8), (int)v52); - else - v9(&v49, (int)v45); - v10 = *(_DWORD *)(v49 - 12); - *(_DWORD *)(this + 12) = v10; - Block = (std::string *)operator new[](v10); - std::string::copy(&v49, Block, *(_DWORD *)(this + 12), 0, v36); - v11 = 0; - if ( *(_DWORD *)(this + 12) ) - v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v11; - v12 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 20); - if ( v12 == std::moneypunct::do_curr_symbol ) - std::string::string(&v50, *(char **)(v45[2] + 20), (int)&v48); - else - v12(&v50, (int)v45); - v13 = *(_DWORD *)(v50 - 12); - *(_DWORD *)(this + 24) = v13; - v41 = (std::string *)operator new[](v13); - std::string::copy(&v50, v41, *(_DWORD *)(this + 24), 0, v37); - v14 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 24); - if ( v14 == std::moneypunct::do_positive_sign ) - std::string::string(&v51, *(char **)(v45[2] + 28), (int)&v48 + 1); - else - v14(&v51, (int)v45); - v15 = *(_DWORD *)(v51 - 12); - *(_DWORD *)(this + 32) = v15; - v42 = (std::string *)operator new[](v15); - std::string::copy(&v51, v42, *(_DWORD *)(this + 32), 0, v38); - v16 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 28); - if ( v16 == std::moneypunct::do_negative_sign ) - std::string::string(v52, *(char **)(v45[2] + 36), (int)&v48 + 2); - else - v16(v52, (int)v45); - v17 = *(_DWORD *)(v52[0] - 12); - *(_DWORD *)(this + 40) = v17; - v43 = (std::string *)operator new[](v17); - std::string::copy(v52, v43, *(_DWORD *)(this + 40), 0, v39); - v18 = *(int (__fastcall **)(int))(*v45 + 36); - if ( v18 == std::moneypunct::do_pos_format ) - v19 = *(_DWORD *)(v45[2] + 48); - else - v19 = v18((int)v45); - *(_DWORD *)(this + 48) = v19; - v20 = *(int (__fastcall **)(int))(*v45 + 40); - if ( v20 == std::moneypunct::do_neg_format ) - v21 = *(_DWORD *)(v45[2] + 52); - else - v21 = v20((int)v45); - *(_DWORD *)(this + 52) = v21; - v22 = std::use_facet>(a2); - v23 = this; - v46 = (int)v22; - v24 = v22[28]; - v25 = std::money_base::_S_atoms; - v40 = std::money_base::_S_atoms; - if ( v24 == 1 ) - { - v27 = *(_DWORD *)std::money_base::_S_atoms; - goto LABEL_25; - } - if ( v24 ) - { - v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); - if ( (char *)v26 == (char *)std::ctype::do_widen ) - { -LABEL_24: - v25 = v40; - v23 = this; - v27 = *(_DWORD *)v40; -LABEL_25: - *(_DWORD *)(v23 + 56) = v27; - *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); - *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); - *(_BYTE *)(this + 66) = v25[10]; - goto LABEL_26; - } - } - else - { - std::ctype::_M_widen_init(v46); - v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); - if ( (char *)v26 == (char *)std::ctype::do_widen ) - goto LABEL_24; - } - v26(v46, v40, v40 + 11, this + 56); -LABEL_26: - v28 = v52[0]; - *(_DWORD *)(this + 8) = Block; - *(_BYTE *)(this + 67) = 1; - *(_DWORD *)(this + 20) = v41; - *(_DWORD *)(this + 28) = v42; - *(_DWORD *)(this + 36) = v43; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v28 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_28: - v30 = v51; - if ( !_CRT_MT ) - goto LABEL_29; - goto LABEL_37; - } - } - else - { - v29 = *(_DWORD *)(v28 - 4); - *(_DWORD *)(v28 - 4) = v29 - 1; - if ( v29 > 0 ) - goto LABEL_28; - } - std::string::_Rep::_M_destroy((void *)(v28 - 12), (int)&v48 + 2); - v30 = v51; - if ( !_CRT_MT ) - { -LABEL_29: - v31 = *(_DWORD *)(v30 - 4); - *(_DWORD *)(v30 - 4) = v31 - 1; - if ( v31 > 0 ) - goto LABEL_30; - goto LABEL_38; - } -LABEL_37: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v30 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_30: - v32 = v50; - if ( !_CRT_MT ) - goto LABEL_31; - goto LABEL_39; - } -LABEL_38: - std::string::_Rep::_M_destroy((void *)(v30 - 12), (int)v52); - v32 = v50; - if ( !_CRT_MT ) - { -LABEL_31: - v33 = *(_DWORD *)(v32 - 4); - *(_DWORD *)(v32 - 4) = v33 - 1; - if ( v33 > 0 ) - goto LABEL_32; - goto LABEL_40; - } -LABEL_39: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v32 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_32: - v34 = v49; - if ( !_CRT_MT ) - goto LABEL_33; - goto LABEL_41; - } -LABEL_40: - std::string::_Rep::_M_destroy((void *)(v32 - 12), (int)v52); - v34 = v49; - if ( !_CRT_MT ) - { -LABEL_33: - v35 = *(_DWORD *)(v34 - 4); - *(_DWORD *)(v34 - 4) = v35 - 1; - if ( v35 > 0 ) - return; -LABEL_42: - std::string::_Rep::_M_destroy((void *)(v34 - 12), (int)v52); - return; - } -LABEL_41: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v34 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_42; -} -// 4FCF4B: variable 'v36' is possibly undefined -// 4FCFED: variable 'v37' is possibly undefined -// 4FD06F: variable 'v38' is possibly undefined -// 4FD0F1: variable 'v39' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F588: using guessed type char *std::money_base::_S_atoms; - -//----- (004FD610) -------------------------------------------------------- -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_5606D4; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 18) = 0; - this[1] = a2 != 0; - result = 0; - *((_WORD *)this + 8) = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - *((_BYTE *)this + 67) = 0; - return result; -} -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (004FD690) -------------------------------------------------------- -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_5606D4; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 18) = 0; - this[1] = a2 != 0; - result = 0; - *((_WORD *)this + 8) = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - *((_BYTE *)this + 67) = 0; - return result; -} -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (004FD710) -------------------------------------------------------- -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4FD750: variable 'lpfctx' is possibly undefined - -//----- (004FD7A0) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 67) == 0; - *(_DWORD *)v1 = &off_5606D4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[5] ) - operator delete[](v2[5]); - if ( v2[7] ) - operator delete[](v2[7]); - if ( v2[9] ) - operator delete[](v2[9]); - } - std::locale::facet::~facet(a1); -} -// 4FD7A1: variable 'v1' is possibly undefined -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (004FD800) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 67) == 0; - *(_DWORD *)v1 = &off_5606D4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[5] ) - operator delete[](v2[5]); - if ( v2[7] ) - operator delete[](v2[7]); - if ( v2[9] ) - operator delete[](v2[9]); - } - std::locale::facet::~facet(a1); -} -// 4FD801: variable 'v1' is possibly undefined -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (004FD860) -------------------------------------------------------- -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) -{ - int (__fastcall *v2)(int); // eax - char v3; // al - int (__fastcall *v4)(int); // eax - char v5; // al - int v6; // eax - int (__fastcall *v7)(int); // edx - int v8; // edx - _DWORD *(__thiscall *v9)(int *, int); // eax - unsigned int v10; // eax - bool v11; // al - _DWORD *(__thiscall *v12)(int *, int); // eax - unsigned int v13; // eax - _DWORD *(__thiscall *v14)(int *, int); // eax - unsigned int v15; // eax - _DWORD *(__thiscall *v16)(int *, int); // eax - unsigned int v17; // eax - int (__fastcall *v18)(int); // eax - int v19; // eax - int (__fastcall *v20)(int); // eax - int v21; // eax - _BYTE *v22; // eax - int v23; // ecx - char v24; // al - char *v25; // edx - void (__thiscall *v26)(int, char *, char *, int); // eax - int v27; // eax - int v28; // ecx - int v29; // eax - int v30; // ecx - int v31; // eax - int v32; // ecx - int v33; // eax - int v34; // ecx - int v35; // eax - unsigned int v36; // [esp+Ch] [ebp-8Ch] - unsigned int v37; // [esp+Ch] [ebp-8Ch] - unsigned int v38; // [esp+Ch] [ebp-8Ch] - unsigned int v39; // [esp+Ch] [ebp-8Ch] - char *v40; // [esp+18h] [ebp-80h] - std::string *v41; // [esp+20h] [ebp-78h] - std::string *v42; // [esp+24h] [ebp-74h] - std::string *v43; // [esp+28h] [ebp-70h] - std::string *Block; // [esp+2Ch] [ebp-6Ch] - _DWORD *v45; // [esp+34h] [ebp-64h] - int v46; // [esp+34h] [ebp-64h] - int v48; // [esp+7Dh] [ebp-1Bh] BYREF - int v49; // [esp+80h] [ebp-18h] BYREF - int v50; // [esp+84h] [ebp-14h] BYREF - int v51; // [esp+88h] [ebp-10h] BYREF - int v52[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v45 = std::use_facet>(a2); - v2 = *(int (__fastcall **)(int))(*v45 + 8); - if ( v2 == std::moneypunct::do_decimal_point ) - v3 = *(_BYTE *)(v45[2] + 17); - else - v3 = ((int (__fastcall *)(_DWORD *, _DWORD *))v2)(v45, v45); - *(_BYTE *)(this + 17) = v3; - v4 = *(int (__fastcall **)(int))(*v45 + 12); - if ( v4 == std::moneypunct::do_thousands_sep ) - v5 = *(_BYTE *)(v45[2] + 18); - else - v5 = v4((int)v45); - *(_BYTE *)(this + 18) = v5; - v6 = *v45; - v7 = *(int (__fastcall **)(int))(*v45 + 32); - if ( v7 == std::moneypunct::do_frac_digits ) - { - v8 = *(_DWORD *)(v45[2] + 44); - } - else - { - v8 = v7((int)v45); - v6 = *v45; - } - v9 = *(_DWORD *(__thiscall **)(int *, int))(v6 + 16); - *(_DWORD *)(this + 44) = v8; - if ( v9 == std::moneypunct::do_grouping ) - std::string::string(&v49, *(char **)(v45[2] + 8), (int)v52); - else - v9(&v49, (int)v45); - v10 = *(_DWORD *)(v49 - 12); - *(_DWORD *)(this + 12) = v10; - Block = (std::string *)operator new[](v10); - std::string::copy(&v49, Block, *(_DWORD *)(this + 12), 0, v36); - v11 = 0; - if ( *(_DWORD *)(this + 12) ) - v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v11; - v12 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 20); - if ( v12 == std::moneypunct::do_curr_symbol ) - std::string::string(&v50, *(char **)(v45[2] + 20), (int)&v48); - else - v12(&v50, (int)v45); - v13 = *(_DWORD *)(v50 - 12); - *(_DWORD *)(this + 24) = v13; - v41 = (std::string *)operator new[](v13); - std::string::copy(&v50, v41, *(_DWORD *)(this + 24), 0, v37); - v14 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 24); - if ( v14 == std::moneypunct::do_positive_sign ) - std::string::string(&v51, *(char **)(v45[2] + 28), (int)&v48 + 1); - else - v14(&v51, (int)v45); - v15 = *(_DWORD *)(v51 - 12); - *(_DWORD *)(this + 32) = v15; - v42 = (std::string *)operator new[](v15); - std::string::copy(&v51, v42, *(_DWORD *)(this + 32), 0, v38); - v16 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 28); - if ( v16 == std::moneypunct::do_negative_sign ) - std::string::string(v52, *(char **)(v45[2] + 36), (int)&v48 + 2); - else - v16(v52, (int)v45); - v17 = *(_DWORD *)(v52[0] - 12); - *(_DWORD *)(this + 40) = v17; - v43 = (std::string *)operator new[](v17); - std::string::copy(v52, v43, *(_DWORD *)(this + 40), 0, v39); - v18 = *(int (__fastcall **)(int))(*v45 + 36); - if ( v18 == std::moneypunct::do_pos_format ) - v19 = *(_DWORD *)(v45[2] + 48); - else - v19 = v18((int)v45); - *(_DWORD *)(this + 48) = v19; - v20 = *(int (__fastcall **)(int))(*v45 + 40); - if ( v20 == std::moneypunct::do_neg_format ) - v21 = *(_DWORD *)(v45[2] + 52); - else - v21 = v20((int)v45); - *(_DWORD *)(this + 52) = v21; - v22 = std::use_facet>(a2); - v23 = this; - v46 = (int)v22; - v24 = v22[28]; - v25 = std::money_base::_S_atoms; - v40 = std::money_base::_S_atoms; - if ( v24 == 1 ) - { - v27 = *(_DWORD *)std::money_base::_S_atoms; - goto LABEL_25; - } - if ( v24 ) - { - v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); - if ( (char *)v26 == (char *)std::ctype::do_widen ) - { -LABEL_24: - v25 = v40; - v23 = this; - v27 = *(_DWORD *)v40; -LABEL_25: - *(_DWORD *)(v23 + 56) = v27; - *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); - *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); - *(_BYTE *)(this + 66) = v25[10]; - goto LABEL_26; - } - } - else - { - std::ctype::_M_widen_init(v46); - v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); - if ( (char *)v26 == (char *)std::ctype::do_widen ) - goto LABEL_24; - } - v26(v46, v40, v40 + 11, this + 56); -LABEL_26: - v28 = v52[0]; - *(_DWORD *)(this + 8) = Block; - *(_BYTE *)(this + 67) = 1; - *(_DWORD *)(this + 20) = v41; - *(_DWORD *)(this + 28) = v42; - *(_DWORD *)(this + 36) = v43; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v28 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_28: - v30 = v51; - if ( !_CRT_MT ) - goto LABEL_29; - goto LABEL_37; - } - } - else - { - v29 = *(_DWORD *)(v28 - 4); - *(_DWORD *)(v28 - 4) = v29 - 1; - if ( v29 > 0 ) - goto LABEL_28; - } - std::string::_Rep::_M_destroy((void *)(v28 - 12), (int)&v48 + 2); - v30 = v51; - if ( !_CRT_MT ) - { -LABEL_29: - v31 = *(_DWORD *)(v30 - 4); - *(_DWORD *)(v30 - 4) = v31 - 1; - if ( v31 > 0 ) - goto LABEL_30; - goto LABEL_38; - } -LABEL_37: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v30 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_30: - v32 = v50; - if ( !_CRT_MT ) - goto LABEL_31; - goto LABEL_39; - } -LABEL_38: - std::string::_Rep::_M_destroy((void *)(v30 - 12), (int)v52); - v32 = v50; - if ( !_CRT_MT ) - { -LABEL_31: - v33 = *(_DWORD *)(v32 - 4); - *(_DWORD *)(v32 - 4) = v33 - 1; - if ( v33 > 0 ) - goto LABEL_32; - goto LABEL_40; - } -LABEL_39: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v32 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_32: - v34 = v49; - if ( !_CRT_MT ) - goto LABEL_33; - goto LABEL_41; - } -LABEL_40: - std::string::_Rep::_M_destroy((void *)(v32 - 12), (int)v52); - v34 = v49; - if ( !_CRT_MT ) - { -LABEL_33: - v35 = *(_DWORD *)(v34 - 4); - *(_DWORD *)(v34 - 4) = v35 - 1; - if ( v35 > 0 ) - return; -LABEL_42: - std::string::_Rep::_M_destroy((void *)(v34 - 12), (int)v52); - return; - } -LABEL_41: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v34 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_42; -} -// 4FD97B: variable 'v36' is possibly undefined -// 4FDA1D: variable 'v37' is possibly undefined -// 4FDA9F: variable 'v38' is possibly undefined -// 4FDB21: variable 'v39' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F588: using guessed type char *std::money_base::_S_atoms; - -//----- (004FE040) -------------------------------------------------------- -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_5606E4; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 18) = 0; - this[1] = a2 != 0; - result = 0; - *((_WORD *)this + 8) = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - *((_BYTE *)this + 67) = 0; - return result; -} -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (004FE0C0) -------------------------------------------------------- -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_5606E4; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 18) = 0; - this[1] = a2 != 0; - result = 0; - *((_WORD *)this + 8) = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - *((_BYTE *)this + 67) = 0; - return result; -} -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (004FE140) -------------------------------------------------------- -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4FE180: variable 'lpfctx' is possibly undefined - -//----- (004FE1D0) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 67) == 0; - *(_DWORD *)v1 = &off_5606E4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[5] ) - operator delete[](v2[5]); - if ( v2[7] ) - operator delete[](v2[7]); - if ( v2[9] ) - operator delete[](v2[9]); - } - std::locale::facet::~facet(a1); -} -// 4FE1D1: variable 'v1' is possibly undefined -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (004FE230) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 67) == 0; - *(_DWORD *)v1 = &off_5606E4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[5] ) - operator delete[](v2[5]); - if ( v2[7] ) - operator delete[](v2[7]); - if ( v2[9] ) - operator delete[](v2[9]); - } - std::locale::facet::~facet(a1); -} -// 4FE231: variable 'v1' is possibly undefined -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (004FE290) -------------------------------------------------------- -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) -{ - _DWORD *v2; // eax - int (__fastcall *v3)(int); // edx - __int16 v4; // dx - int (__fastcall *v5)(int); // edx - __int16 v6; // dx - int (__fastcall *v7)(int); // edx - int v8; // edx - _DWORD *(__thiscall *v9)(int *, int); // eax - unsigned int v10; // eax - bool v11; // al - _DWORD *(__thiscall *v12)(int *, int); // eax - unsigned int v13; // eax - _DWORD *(__thiscall *v14)(int *, int); // eax - unsigned int v15; // eax - _DWORD *(__thiscall *v16)(int *, int); // eax - unsigned int v17; // eax - int (__fastcall *v18)(int); // eax - int v19; // eax - int (__fastcall *v20)(int); // eax - int v21; // eax - void *v22; // eax - int v23; // ecx - int v24; // eax - int v25; // ecx - int v26; // eax - int v27; // ecx - int v28; // eax - int v29; // ecx - int v30; // eax - unsigned int v31; // [esp+Ch] [ebp-7Ch] - _WORD *v32; // [esp+10h] [ebp-78h] - _WORD *v33; // [esp+14h] [ebp-74h] - _WORD *v34; // [esp+18h] [ebp-70h] - std::string *Block; // [esp+1Ch] [ebp-6Ch] - _DWORD *v36; // [esp+24h] [ebp-64h] - int v38; // [esp+6Dh] [ebp-1Bh] BYREF - int v39; // [esp+70h] [ebp-18h] BYREF - int v40; // [esp+74h] [ebp-14h] BYREF - int v41; // [esp+78h] [ebp-10h] BYREF - int v42[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v36 = std::use_facet>(a2); - v2 = (_DWORD *)*v36; - v3 = *(int (__fastcall **)(int))(*v36 + 8); - if ( v3 == std::moneypunct::do_decimal_point ) - { - v4 = *(_WORD *)(v36[2] + 18); - } - else - { - v4 = v3((int)v36); - v2 = (_DWORD *)*v36; - } - *(_WORD *)(this + 18) = v4; - v5 = (int (__fastcall *)(int))v2[3]; - if ( v5 == std::moneypunct::do_thousands_sep ) - { - v6 = *(_WORD *)(v36[2] + 20); - } - else - { - v6 = v5((int)v36); - v2 = (_DWORD *)*v36; - } - *(_WORD *)(this + 20) = v6; - v7 = (int (__fastcall *)(int))v2[8]; - if ( v7 == std::moneypunct::do_frac_digits ) - { - v8 = *(_DWORD *)(v36[2] + 48); - } - else - { - v8 = v7((int)v36); - v2 = (_DWORD *)*v36; - } - v9 = (_DWORD *(__thiscall *)(int *, int))v2[4]; - *(_DWORD *)(this + 48) = v8; - if ( v9 == std::moneypunct::do_grouping ) - std::string::string(&v39, *(char **)(v36[2] + 8), (int)v42); - else - v9(&v39, (int)v36); - v10 = *(_DWORD *)(v39 - 12); - *(_DWORD *)(this + 12) = v10; - Block = (std::string *)operator new[](v10); - std::string::copy(&v39, Block, *(_DWORD *)(this + 12), 0, v31); - v11 = 0; - if ( *(_DWORD *)(this + 12) ) - v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v11; - v12 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 20); - if ( v12 == std::moneypunct::do_curr_symbol ) - std::wstring::basic_string(&v40, *(wchar_t **)(v36[2] + 24), (int)&v38); - else - v12(&v40, (int)v36); - v13 = *(_DWORD *)(v40 - 12); - *(_DWORD *)(this + 28) = v13; - if ( v13 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v32 = (_WORD *)operator new[](2 * v13); - std::wstring::copy(&v40, v32, *(_DWORD *)(this + 28), 0); - v14 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 24); - if ( v14 == std::moneypunct::do_positive_sign ) - std::wstring::basic_string(&v41, *(wchar_t **)(v36[2] + 32), (int)&v38 + 1); - else - v14(&v41, (int)v36); - v15 = *(_DWORD *)(v41 - 12); - *(_DWORD *)(this + 36) = v15; - if ( v15 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v33 = (_WORD *)operator new[](2 * v15); - std::wstring::copy(&v41, v33, *(_DWORD *)(this + 36), 0); - v16 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 28); - if ( v16 == std::moneypunct::do_negative_sign ) - std::wstring::basic_string(v42, *(wchar_t **)(v36[2] + 40), (int)&v38 + 2); - else - v16(v42, (int)v36); - v17 = *(_DWORD *)(v42[0] - 12); - *(_DWORD *)(this + 44) = v17; - if ( v17 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v34 = (_WORD *)operator new[](2 * v17); - std::wstring::copy(v42, v34, *(_DWORD *)(this + 44), 0); - v18 = *(int (__fastcall **)(int))(*v36 + 36); - if ( v18 == std::moneypunct::do_pos_format ) - v19 = *(_DWORD *)(v36[2] + 52); - else - v19 = v18((int)v36); - *(_DWORD *)(this + 52) = v19; - v20 = *(int (__fastcall **)(int))(*v36 + 40); - if ( v20 == std::moneypunct::do_neg_format ) - v21 = *(_DWORD *)(v36[2] + 56); - else - v21 = v20((int)v36); - *(_DWORD *)(this + 56) = v21; - v22 = std::use_facet>(a2); - (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( - v22, - std::money_base::_S_atoms, - std::money_base::_S_atoms + 11, - this + 60); - v23 = v42[0]; - *(_DWORD *)(this + 8) = Block; - *(_DWORD *)(this + 24) = v32; - *(_DWORD *)(this + 32) = v33; - *(_DWORD *)(this + 40) = v34; - *(_BYTE *)(this + 82) = 1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_26: - v25 = v41; - if ( !_CRT_MT ) - goto LABEL_27; - goto LABEL_35; - } - } - else - { - v24 = *(_DWORD *)(v23 - 4); - *(_DWORD *)(v23 - 4) = v24 - 1; - if ( v24 > 0 ) - goto LABEL_26; - } - std::wstring::_Rep::_M_destroy((void *)(v23 - 12), (int)&v38 + 2); - v25 = v41; - if ( !_CRT_MT ) - { -LABEL_27: - v26 = *(_DWORD *)(v25 - 4); - *(_DWORD *)(v25 - 4) = v26 - 1; - if ( v26 > 0 ) - goto LABEL_28; - goto LABEL_36; - } -LABEL_35: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v25 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_28: - v27 = v40; - if ( !_CRT_MT ) - goto LABEL_29; - goto LABEL_37; - } -LABEL_36: - std::wstring::_Rep::_M_destroy((void *)(v25 - 12), (int)v42); - v27 = v40; - if ( !_CRT_MT ) - { -LABEL_29: - v28 = *(_DWORD *)(v27 - 4); - *(_DWORD *)(v27 - 4) = v28 - 1; - if ( v28 > 0 ) - goto LABEL_30; - goto LABEL_38; - } -LABEL_37: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v27 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_30: - v29 = v39; - if ( !_CRT_MT ) - goto LABEL_31; - goto LABEL_39; - } -LABEL_38: - std::wstring::_Rep::_M_destroy((void *)(v27 - 12), (int)v42); - v29 = v39; - if ( !_CRT_MT ) - { -LABEL_31: - v30 = *(_DWORD *)(v29 - 4); - *(_DWORD *)(v29 - 4) = v30 - 1; - if ( v30 > 0 ) - return; -LABEL_40: - std::string::_Rep::_M_destroy((void *)(v29 - 12), (int)v42); - return; - } -LABEL_39: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_40; -} -// 4FE3AC: variable 'v31' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F588: using guessed type char *std::money_base::_S_atoms; - -//----- (004FEA20) -------------------------------------------------------- -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_5606F4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - *(_DWORD *)((char *)this + 18) = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - *((_BYTE *)this + 82) = 0; - return result; -} -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (004FEAA0) -------------------------------------------------------- -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_5606F4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - *(_DWORD *)((char *)this + 18) = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - *((_BYTE *)this + 82) = 0; - return result; -} -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (004FEB20) -------------------------------------------------------- -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4FEB60: variable 'lpfctx' is possibly undefined - -//----- (004FEBB0) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 82) == 0; - *(_DWORD *)v1 = &off_5606F4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[6] ) - operator delete[](v2[6]); - if ( v2[8] ) - operator delete[](v2[8]); - if ( v2[10] ) - operator delete[](v2[10]); - } - std::locale::facet::~facet(a1); -} -// 4FEBB1: variable 'v1' is possibly undefined -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (004FEC10) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 82) == 0; - *(_DWORD *)v1 = &off_5606F4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[6] ) - operator delete[](v2[6]); - if ( v2[8] ) - operator delete[](v2[8]); - if ( v2[10] ) - operator delete[](v2[10]); - } - std::locale::facet::~facet(a1); -} -// 4FEC11: variable 'v1' is possibly undefined -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (004FEC70) -------------------------------------------------------- -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) -{ - _DWORD *v2; // eax - int (__fastcall *v3)(int); // edx - __int16 v4; // dx - int (__fastcall *v5)(int); // edx - __int16 v6; // dx - int (__fastcall *v7)(int); // edx - int v8; // edx - _DWORD *(__thiscall *v9)(int *, int); // eax - unsigned int v10; // eax - bool v11; // al - _DWORD *(__thiscall *v12)(int *, int); // eax - unsigned int v13; // eax - _DWORD *(__thiscall *v14)(int *, int); // eax - unsigned int v15; // eax - _DWORD *(__thiscall *v16)(int *, int); // eax - unsigned int v17; // eax - int (__fastcall *v18)(int); // eax - int v19; // eax - int (__fastcall *v20)(int); // eax - int v21; // eax - void *v22; // eax - int v23; // ecx - int v24; // eax - int v25; // ecx - int v26; // eax - int v27; // ecx - int v28; // eax - int v29; // ecx - int v30; // eax - unsigned int v31; // [esp+Ch] [ebp-7Ch] - _WORD *v32; // [esp+10h] [ebp-78h] - _WORD *v33; // [esp+14h] [ebp-74h] - _WORD *v34; // [esp+18h] [ebp-70h] - std::string *Block; // [esp+1Ch] [ebp-6Ch] - _DWORD *v36; // [esp+24h] [ebp-64h] - int v38; // [esp+6Dh] [ebp-1Bh] BYREF - int v39; // [esp+70h] [ebp-18h] BYREF - int v40; // [esp+74h] [ebp-14h] BYREF - int v41; // [esp+78h] [ebp-10h] BYREF - int v42[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v36 = std::use_facet>(a2); - v2 = (_DWORD *)*v36; - v3 = *(int (__fastcall **)(int))(*v36 + 8); - if ( v3 == std::moneypunct::do_decimal_point ) - { - v4 = *(_WORD *)(v36[2] + 18); - } - else - { - v4 = v3((int)v36); - v2 = (_DWORD *)*v36; - } - *(_WORD *)(this + 18) = v4; - v5 = (int (__fastcall *)(int))v2[3]; - if ( v5 == std::moneypunct::do_thousands_sep ) - { - v6 = *(_WORD *)(v36[2] + 20); - } - else - { - v6 = v5((int)v36); - v2 = (_DWORD *)*v36; - } - *(_WORD *)(this + 20) = v6; - v7 = (int (__fastcall *)(int))v2[8]; - if ( v7 == std::moneypunct::do_frac_digits ) - { - v8 = *(_DWORD *)(v36[2] + 48); - } - else - { - v8 = v7((int)v36); - v2 = (_DWORD *)*v36; - } - v9 = (_DWORD *(__thiscall *)(int *, int))v2[4]; - *(_DWORD *)(this + 48) = v8; - if ( v9 == std::moneypunct::do_grouping ) - std::string::string(&v39, *(char **)(v36[2] + 8), (int)v42); - else - v9(&v39, (int)v36); - v10 = *(_DWORD *)(v39 - 12); - *(_DWORD *)(this + 12) = v10; - Block = (std::string *)operator new[](v10); - std::string::copy(&v39, Block, *(_DWORD *)(this + 12), 0, v31); - v11 = 0; - if ( *(_DWORD *)(this + 12) ) - v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v11; - v12 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 20); - if ( v12 == std::moneypunct::do_curr_symbol ) - std::wstring::basic_string(&v40, *(wchar_t **)(v36[2] + 24), (int)&v38); - else - v12(&v40, (int)v36); - v13 = *(_DWORD *)(v40 - 12); - *(_DWORD *)(this + 28) = v13; - if ( v13 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v32 = (_WORD *)operator new[](2 * v13); - std::wstring::copy(&v40, v32, *(_DWORD *)(this + 28), 0); - v14 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 24); - if ( v14 == std::moneypunct::do_positive_sign ) - std::wstring::basic_string(&v41, *(wchar_t **)(v36[2] + 32), (int)&v38 + 1); - else - v14(&v41, (int)v36); - v15 = *(_DWORD *)(v41 - 12); - *(_DWORD *)(this + 36) = v15; - if ( v15 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v33 = (_WORD *)operator new[](2 * v15); - std::wstring::copy(&v41, v33, *(_DWORD *)(this + 36), 0); - v16 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 28); - if ( v16 == std::moneypunct::do_negative_sign ) - std::wstring::basic_string(v42, *(wchar_t **)(v36[2] + 40), (int)&v38 + 2); - else - v16(v42, (int)v36); - v17 = *(_DWORD *)(v42[0] - 12); - *(_DWORD *)(this + 44) = v17; - if ( v17 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v34 = (_WORD *)operator new[](2 * v17); - std::wstring::copy(v42, v34, *(_DWORD *)(this + 44), 0); - v18 = *(int (__fastcall **)(int))(*v36 + 36); - if ( v18 == std::moneypunct::do_pos_format ) - v19 = *(_DWORD *)(v36[2] + 52); - else - v19 = v18((int)v36); - *(_DWORD *)(this + 52) = v19; - v20 = *(int (__fastcall **)(int))(*v36 + 40); - if ( v20 == std::moneypunct::do_neg_format ) - v21 = *(_DWORD *)(v36[2] + 56); - else - v21 = v20((int)v36); - *(_DWORD *)(this + 56) = v21; - v22 = std::use_facet>(a2); - (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( - v22, - std::money_base::_S_atoms, - std::money_base::_S_atoms + 11, - this + 60); - v23 = v42[0]; - *(_DWORD *)(this + 8) = Block; - *(_DWORD *)(this + 24) = v32; - *(_DWORD *)(this + 32) = v33; - *(_DWORD *)(this + 40) = v34; - *(_BYTE *)(this + 82) = 1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_26: - v25 = v41; - if ( !_CRT_MT ) - goto LABEL_27; - goto LABEL_35; - } - } - else - { - v24 = *(_DWORD *)(v23 - 4); - *(_DWORD *)(v23 - 4) = v24 - 1; - if ( v24 > 0 ) - goto LABEL_26; - } - std::wstring::_Rep::_M_destroy((void *)(v23 - 12), (int)&v38 + 2); - v25 = v41; - if ( !_CRT_MT ) - { -LABEL_27: - v26 = *(_DWORD *)(v25 - 4); - *(_DWORD *)(v25 - 4) = v26 - 1; - if ( v26 > 0 ) - goto LABEL_28; - goto LABEL_36; - } -LABEL_35: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v25 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_28: - v27 = v40; - if ( !_CRT_MT ) - goto LABEL_29; - goto LABEL_37; - } -LABEL_36: - std::wstring::_Rep::_M_destroy((void *)(v25 - 12), (int)v42); - v27 = v40; - if ( !_CRT_MT ) - { -LABEL_29: - v28 = *(_DWORD *)(v27 - 4); - *(_DWORD *)(v27 - 4) = v28 - 1; - if ( v28 > 0 ) - goto LABEL_30; - goto LABEL_38; - } -LABEL_37: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v27 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_30: - v29 = v39; - if ( !_CRT_MT ) - goto LABEL_31; - goto LABEL_39; - } -LABEL_38: - std::wstring::_Rep::_M_destroy((void *)(v27 - 12), (int)v42); - v29 = v39; - if ( !_CRT_MT ) - { -LABEL_31: - v30 = *(_DWORD *)(v29 - 4); - *(_DWORD *)(v29 - 4) = v30 - 1; - if ( v30 > 0 ) - return; -LABEL_40: - std::string::_Rep::_M_destroy((void *)(v29 - 12), (int)v42); - return; - } -LABEL_39: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_40; -} -// 4FED8C: variable 'v31' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F588: using guessed type char *std::money_base::_S_atoms; - -//----- (004FF400) -------------------------------------------------------- -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560704; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - *(_DWORD *)((char *)this + 18) = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - *((_BYTE *)this + 82) = 0; - return result; -} -// 560704: using guessed type int (*off_560704)(); - -//----- (004FF480) -------------------------------------------------------- -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560704; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - *(_DWORD *)((char *)this + 18) = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - *((_BYTE *)this + 82) = 0; - return result; -} -// 560704: using guessed type int (*off_560704)(); - -//----- (004FF500) -------------------------------------------------------- -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4FF540: variable 'lpfctx' is possibly undefined - -//----- (004FF590) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 82) == 0; - *(_DWORD *)v1 = &off_560704; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[6] ) - operator delete[](v2[6]); - if ( v2[8] ) - operator delete[](v2[8]); - if ( v2[10] ) - operator delete[](v2[10]); - } - std::locale::facet::~facet(a1); -} -// 4FF591: variable 'v1' is possibly undefined -// 560704: using guessed type int (*off_560704)(); - -//----- (004FF5F0) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 82) == 0; - *(_DWORD *)v1 = &off_560704; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[6] ) - operator delete[](v2[6]); - if ( v2[8] ) - operator delete[](v2[8]); - if ( v2[10] ) - operator delete[](v2[10]); - } - std::locale::facet::~facet(a1); -} -// 4FF5F1: variable 'v1' is possibly undefined -// 560704: using guessed type int (*off_560704)(); - -//----- (004FF650) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_560908; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4FF65C: variable 'Blocka' is possibly undefined - -//----- (004FF670) -------------------------------------------------------- -void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_560908; - std::locale::facet::~facet(a1); -} -// 4FF670: variable 'v1' is possibly undefined - -//----- (004FF680) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_560960; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4FF68C: variable 'Blocka' is possibly undefined - -//----- (004FF6A0) -------------------------------------------------------- -void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_560960; - std::locale::facet::~facet(a1); -} -// 4FF6A0: variable 'v1' is possibly undefined - -//----- (004FF6B0) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block) -{ - *Block = &off_56076C; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 56076C: using guessed type int (*off_56076C)(); - -//----- (004FF6D0) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) -{ - *a1 = &off_56076C; - std::codecvt::~codecvt(a1); -} -// 56076C: using guessed type int (*off_56076C)(); - -//----- (004FF6E0) -------------------------------------------------------- -void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1) -{ - __cxxabiv1::__si_class_type_info *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_560798; - __cxxabiv1::__si_class_type_info::~__si_class_type_info(Block); - operator delete(a1); -} -// 4FF6EC: variable 'Block' is possibly undefined -// 560798: using guessed type void (__cdecl *off_560798)(std::__iosfail_type_info *__hidden this); - -//----- (004FF700) -------------------------------------------------------- -void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_560798; - __cxxabiv1::__si_class_type_info::~__si_class_type_info(this); -} -// 4FF700: variable 'v1' is possibly undefined -// 560798: using guessed type void (__cdecl *off_560798)(std::__iosfail_type_info *__hidden this); - -//----- (004FF710) -------------------------------------------------------- -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_560908; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4FF71C: variable 'Blocka' is possibly undefined - -//----- (004FF730) -------------------------------------------------------- -void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_560908; - std::locale::facet::~facet(a1); -} -// 4FF730: variable 'v1' is possibly undefined - -//----- (004FF740) -------------------------------------------------------- -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_560960; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4FF74C: variable 'Blocka' is possibly undefined - -//----- (004FF760) -------------------------------------------------------- -void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_560960; - std::locale::facet::~facet(a1); -} -// 4FF760: variable 'v1' is possibly undefined - -//----- (004FF770) -------------------------------------------------------- -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block) -{ - *Block = &off_56081C; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 56081C: using guessed type int (*off_56081C)(); - -//----- (004FF790) -------------------------------------------------------- -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) -{ - *a1 = &off_56081C; - std::codecvt::~codecvt(a1); -} -// 56081C: using guessed type int (*off_56081C)(); - -//----- (004FF7A0) -------------------------------------------------------- -char *__cdecl std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( - int a1, - int a2, - char *a3) -{ - while ( a1 != a2 ) - { - std::string::basic_string(a3, a1); - a3 += 24; - a1 += 24; - } - return a3; -} - -//----- (004FF868) -------------------------------------------------------- -int __cdecl std::__uninitialized_copy::__uninit_copy( - night::ns_sourcemap *a1, - night::ns_sourcemap *a2, - int a3) -{ - const night::ns_sourcemap *v4; // [esp+4h] [ebp-54h] - - while ( a1 != a2 ) - { - night::ns_sourcemap::ns_sourcemap(a3, a1, v4); - a1 = (night::ns_sourcemap *)((char *)a1 + 64); - a3 += 64; - } - return a3; -} -// 4FF8B2: variable 'v4' is possibly undefined - -//----- (004FF930) -------------------------------------------------------- -void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_560848; - std::bad_alloc::~bad_alloc(Block); - operator delete(a1); -} -// 4FF93C: variable 'Block' is possibly undefined -// 560848: using guessed type void (__cdecl *off_560848)(std::bad_array_new_length *__hidden this); - -//----- (004FF960) -------------------------------------------------------- -void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560848; - std::bad_alloc::~bad_alloc(a1); -} -// 4FF960: variable 'v1' is possibly undefined -// 560848: using guessed type void (__cdecl *off_560848)(std::bad_array_new_length *__hidden this); - -//----- (004FF970) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_560908; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4FF97C: variable 'Blocka' is possibly undefined - -//----- (004FF990) -------------------------------------------------------- -void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_560908; - std::locale::facet::~facet(a1); -} -// 4FF990: variable 'v1' is possibly undefined - -//----- (004FF9A0) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_560960; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4FF9AC: variable 'Blocka' is possibly undefined - -//----- (004FF9C0) -------------------------------------------------------- -void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_560960; - std::locale::facet::~facet(a1); -} -// 4FF9C0: variable 'v1' is possibly undefined - -//----- (004FF9D0) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block) -{ - *Block = &off_560A3C; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 560A3C: using guessed type int (*off_560A3C)(); - -//----- (004FF9F0) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) -{ - *a1 = &off_560A3C; - std::codecvt::~codecvt(a1); -} -// 560A3C: using guessed type int (*off_560A3C)(); - -//----- (004FFA00) -------------------------------------------------------- -void __fastcall std::_V2::error_category::~error_category(void *Block) -{ - operator delete(Block); -} - -//----- (004FFA20) -------------------------------------------------------- -void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this) -{ - return `anonymous namespace'::system_category_instance; -} -// 53F0C4: using guessed type void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this); - -//----- (004FFA30) -------------------------------------------------------- -void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this) -{ - return &`anonymous namespace'::generic_category_instance; -} -// 53F0C8: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); - -//----- (004FFA40) -------------------------------------------------------- -char *__thiscall std::map>::operator[](_DWORD *this, int a2) -{ - bool v2; // zf - struct _Unwind_Exception *v3; // eax - struct _Unwind_Exception *v4; // edx - _DWORD *v5; // edx - char v6; // al - int insert_hint_unique_pos; // [esp+14h] [ebp-54h] - _DWORD *v9; // [esp+18h] [ebp-50h] - _DWORD *v10; // [esp+18h] [ebp-50h] - _DWORD *v12; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - void **lpuexcpta; // [esp+24h] [ebp-44h] - _DWORD *Block; // [esp+28h] [ebp-40h] - - v12 = this + 1; - lpuexcpt = (struct _Unwind_Exception *)this[2]; - Block = this + 1; - while ( lpuexcpt ) - { - v2 = (unsigned __int8)std::operator<((int)lpuexcpt + 16, a2) == 0; - v3 = (struct _Unwind_Exception *)Block; - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 3); - if ( v2 ) - { - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 2); - if ( v2 ) - v3 = lpuexcpt; - } - lpuexcpt = v4; - Block = v3; - } - if ( v12 == Block || (unsigned __int8)std::operator<(a2, (int)(Block + 4)) ) - { - v9 = Block; - Block = operator new(0x30u); - lpuexcpta = (void **)(Block + 4); - std::string::basic_string((char *)Block + 16, a2); - Block[10] = 0; - Block[11] = 0; - insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - this, - v9, - (int)(Block + 4)); - v10 = v5; - if ( v5 ) - { - v6 = insert_hint_unique_pos != 0 || v12 == v5; - if ( !v6 ) - v6 = std::operator<((int)lpuexcpta, (int)(v5 + 4)); - std::_Rb_tree_insert_and_rebalance(v6, Block, v10, v12); - ++this[5]; - } - else - { - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)Block + 11); - std::string::_M_dispose(lpuexcpta); - operator delete(Block); - Block = (_DWORD *)insert_hint_unique_pos; - } - } - return (char *)(Block + 10); -} -// 4FFB42: variable 'v5' is possibly undefined - -//----- (004FFC34) -------------------------------------------------------- -_DWORD *__thiscall std::map,std::allocator>>>::operator[]( - _DWORD *this, - _DWORD *a2) -{ - _DWORD *inserted; // esi - _DWORD *v3; // ebx - int insert_hint_unique_pos; // eax - _DWORD *v5; // edx - - inserted = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::lower_bound( - this, - (int)a2); - if ( inserted == this + 1 || (unsigned __int8)std::operator<((int)a2, (int)(inserted + 4)) ) - { - v3 = operator new(0x30u); - std::string::basic_string(v3 + 4, a2); - v3[10] = 0; - v3[11] = 0; - insert_hint_unique_pos = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos( - this, - inserted, - (int)(v3 + 4)); - inserted = (_DWORD *)insert_hint_unique_pos; - if ( v5 ) - { - inserted = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node( - this, - insert_hint_unique_pos, - v5, - v3); - } - else - { - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v3 + 11); - std::string::_M_dispose((void **)v3 + 4); - operator delete(v3); - } - } - return inserted + 10; -} -// 4FFCB0: variable 'v5' is possibly undefined - -//----- (004FFCF4) -------------------------------------------------------- -char *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2) -{ - _DWORD *v3; // ebx - _DWORD *v4; // edx - char v5; // al - _DWORD *v6; // ecx - int insert_hint_unique_pos; // eax - _DWORD *v8; // edx - _DWORD *v9; // edi - char v10; // al - _DWORD *v12; // [esp+18h] [ebp-20h] - _DWORD *v13; // [esp+18h] [ebp-20h] - _DWORD *v14; // [esp+1Ch] [ebp-1Ch] - _DWORD *v15; // [esp+1Ch] [ebp-1Ch] - - v3 = this + 1; - v4 = (_DWORD *)this[2]; - v14 = this + 1; - while ( v4 ) - { - v12 = v4; - v5 = std::operator<((int)(v4 + 4), (int)a2); - v6 = (_DWORD *)v12[3]; - if ( !v5 ) - v6 = (_DWORD *)v12[2]; - if ( !v5 ) - v3 = v12; - v4 = v6; - } - if ( v14 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) - { - v13 = v3; - v3 = operator new(0x98u); - std::string::basic_string(v3 + 4, a2); - v3[18] = v3 + 20; - v3[25] = v3 + 27; - v3[32] = v3 + 34; - v3[10] = 0; - v3[11] = 0; - v3[19] = 0; - *((_BYTE *)v3 + 80) = 0; - v3[26] = 0; - *((_BYTE *)v3 + 108) = 0; - v3[33] = 0; - *((_BYTE *)v3 + 136) = 0; - *((_BYTE *)v3 + 68) = 0; - *((_BYTE *)v3 + 124) = 0; - v3[15] = 0; - v3[12] = 0; - v3[13] = 0; - v3[14] = 0; - v3[24] = -1; - insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - v13, - (int)(v3 + 4)); - v9 = v8; - if ( v8 ) - { - v10 = v14 == v8 || insert_hint_unique_pos != 0; - if ( !v10 ) - v10 = std::operator<((int)(v3 + 4), (int)(v8 + 4)); - std::_Rb_tree_insert_and_rebalance(v10, v3, v9, v14); - ++this[5]; - } - else - { - v15 = (_DWORD *)insert_hint_unique_pos; - WXML::DOMLib::Token::~Token((int)(v3 + 10)); - std::string::_M_dispose((void **)v3 + 4); - operator delete(v3); - v3 = v15; - } - } - return (char *)(v3 + 10); -} -// 4FFE00: variable 'v8' is possibly undefined - -//----- (004FFE78) -------------------------------------------------------- -char *__thiscall std::map::operator[](_DWORD *this, int a2) -{ - _DWORD *v2; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *Blocka; // [esp+28h] [ebp-40h] - char *Block; // [esp+28h] [ebp-40h] - - Blocka = (struct _Unwind_Exception *)(this + 1); - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( - this[2], - (int)(this + 1), - a2); - if ( Blocka == lpuexcpt || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) - { - Block = (char *)operator new(0x98u); - std::string::basic_string(Block + 16, a2); - *((_DWORD *)Block + 10) = 0; - *((_DWORD *)Block + 11) = 0; - *((_DWORD *)Block + 18) = Block + 80; - *((_DWORD *)Block + 19) = 0; - *((_DWORD *)Block + 25) = Block + 108; - Block[80] = 0; - *((_DWORD *)Block + 32) = Block + 136; - *((_DWORD *)Block + 26) = 0; - Block[108] = 0; - *((_DWORD *)Block + 33) = 0; - Block[136] = 0; - Block[68] = 0; - Block[124] = 0; - *((_DWORD *)Block + 15) = 0; - *((_DWORD *)Block + 12) = 0; - *((_DWORD *)Block + 13) = 0; - *((_DWORD *)Block + 14) = 0; - *((_DWORD *)Block + 24) = -1; - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - lpuexcpt, - (int)(Block + 16)); - if ( v2 ) - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - this, - (int)lpuexcpt, - v2, - Block); - else - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)Block); - } - return (char *)lpuexcpt + 40; -} -// 4FFFB8: variable 'v2' is possibly undefined - -//----- (00500050) -------------------------------------------------------- -_DWORD *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2) -{ - _DWORD *inserted; // esi - char *v3; // ebx - int insert_hint_unique_pos; // eax - _DWORD *v5; // edx - - inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::lower_bound( - this, - (int)a2); - if ( inserted == this + 1 || (unsigned __int8)std::operator<((int)a2, (int)(inserted + 4)) ) - { - v3 = (char *)operator new(0x40u); - std::string::basic_string((_DWORD *)v3 + 4, a2); - *((_DWORD *)v3 + 11) = 0; - *((_DWORD *)v3 + 10) = v3 + 48; - v3[48] = 0; - insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - inserted, - (int)(v3 + 16)); - inserted = (_DWORD *)insert_hint_unique_pos; - if ( v5 ) - { - inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - this, - insert_hint_unique_pos, - v5, - v3); - } - else - { - std::string::_M_dispose((void **)v3 + 10); - std::string::_M_dispose((void **)v3 + 4); - operator delete(v3); - } - } - return inserted + 10; -} -// 5000D2: variable 'v5' is possibly undefined - -//----- (00500114) -------------------------------------------------------- -char *__thiscall std::map::operator[](_DWORD *this, int a2) -{ - _DWORD *v2; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - char *Block; // [esp+28h] [ebp-40h] - - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::lower_bound( - this, - a2); - if ( lpuexcpt == (struct _Unwind_Exception *)(this + 1) - || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) - { - Block = (char *)operator new(0x40u); - std::string::basic_string(Block + 16, a2); - *((_DWORD *)Block + 11) = 0; - Block[48] = 0; - *((_DWORD *)Block + 10) = Block + 48; - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - lpuexcpt, - (int)(Block + 16)); - if ( v2 ) - { - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - this, - (int)lpuexcpt, - v2, - Block); - } - else - { - std::string::_M_dispose((void **)Block + 10); - std::string::_M_dispose((void **)Block + 4); - operator delete(Block); - } - } - return (char *)lpuexcpt + 40; -} -// 5001EB: variable 'v2' is possibly undefined - -//----- (00500298) -------------------------------------------------------- -char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) -{ - _DWORD *v3; // ebx - _DWORD *v4; // edx - char v5; // al - _DWORD *v6; // ecx - int insert_hint_unique_pos; // eax - _DWORD *v8; // edx - _DWORD *v9; // edi - char v10; // al - void *v12; // [esp+0h] [ebp-38h] - _DWORD *v13; // [esp+18h] [ebp-20h] - _DWORD *v14; // [esp+18h] [ebp-20h] - _DWORD *v15; // [esp+18h] [ebp-20h] - _DWORD *v16; // [esp+1Ch] [ebp-1Ch] - - v3 = this + 1; - v4 = (_DWORD *)this[2]; - v16 = this + 1; - while ( v4 ) - { - v13 = v4; - v5 = std::operator<((int)(v4 + 4), (int)a2); - v6 = (_DWORD *)v13[3]; - if ( !v5 ) - v6 = (_DWORD *)v13[2]; - if ( !v5 ) - v3 = v13; - v4 = v6; - } - if ( v16 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) - { - v14 = v3; - v3 = operator new(0x34u); - std::string::basic_string(v3 + 4, a2); - v3[10] = 0; - v3[11] = 0; - v3[12] = 0; - insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - this, - v14, - (int)(v3 + 4)); - v9 = (_DWORD *)insert_hint_unique_pos; - if ( v8 ) - { - v10 = insert_hint_unique_pos != 0 || v16 == v8; - if ( v9 == 0 && v16 != v8 ) - { - v15 = v8; - v10 = std::operator<((int)(v3 + 4), (int)(v8 + 4)); - v8 = v15; - } - std::_Rb_tree_insert_and_rebalance(v10, v3, v8, v16); - ++this[5]; - } - else - { - std::_Destroy_aux::__destroy(0, 0); - if ( v3[10] ) - operator delete((void *)v3[10]); - std::string::_M_dispose((void **)v3 + 4); - v12 = v3; - v3 = v9; - operator delete(v12); - } - } - return (char *)(v3 + 10); -} -// 500347: variable 'v8' is possibly undefined - -//----- (005003D4) -------------------------------------------------------- -_DWORD *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) -{ - _DWORD *inserted; // esi - _DWORD *v3; // ebx - int insert_hint_unique_pos; // eax - _DWORD *v5; // edx - - inserted = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::lower_bound( - this, - (int)a2); - if ( inserted == this + 1 || (unsigned __int8)std::operator<((int)a2, (int)(inserted + 4)) ) - { - v3 = operator new(0x34u); - std::string::basic_string(v3 + 4, a2); - v3[10] = 0; - v3[11] = 0; - v3[12] = 0; - insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - this, - inserted, - (int)(v3 + 4)); - inserted = (_DWORD *)insert_hint_unique_pos; - if ( v5 ) - { - inserted = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( - this, - insert_hint_unique_pos, - v5, - v3); - } - else - { - std::vector::~vector((void ***)v3 + 10, 0); - std::string::_M_dispose((void **)v3 + 4); - operator delete(v3); - } - } - return inserted + 10; -} -// 50045B: variable 'v5' is possibly undefined - -//----- (0050049C) -------------------------------------------------------- -char *__thiscall std::map>::operator[](_DWORD *this, int a2) -{ - _DWORD *v2; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - _DWORD *Block; // [esp+28h] [ebp-40h] - - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::lower_bound( - this, - a2); - if ( lpuexcpt == (struct _Unwind_Exception *)(this + 1) - || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) - { - Block = operator new(0x34u); - std::string::basic_string((char *)Block + 16, a2); - Block[10] = 0; - Block[11] = 0; - Block[12] = 0; - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - this, - lpuexcpt, - (int)(Block + 4)); - if ( v2 ) - { - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( - this, - (int)lpuexcpt, - v2, - Block); - } - else - { - std::vector::~vector((void ***)Block + 10, 0); - std::string::_M_dispose((void **)Block + 4); - operator delete(Block); - } - } - return (char *)lpuexcpt + 40; -} -// 50056B: variable 'v2' is possibly undefined - -//----- (0050061C) -------------------------------------------------------- -char *__thiscall std::map::operator[](_DWORD *this, int a2) -{ - bool v2; // zf - struct _Unwind_Exception *v3; // eax - struct _Unwind_Exception *v4; // edx - _DWORD *v5; // edx - struct _Unwind_Exception *v7; // [esp+1Ch] [ebp-4Ch] - struct _Unwind_Exception *Block; // [esp+24h] [ebp-44h] - char *Blocka; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] - - v7 = (struct _Unwind_Exception *)(this + 1); - Block = (struct _Unwind_Exception *)this[2]; - lpuexcpt = (struct _Unwind_Exception *)(this + 1); - while ( Block ) - { - v2 = (unsigned __int8)std::operator<((int)Block + 16, a2) == 0; - v3 = lpuexcpt; - v4 = (struct _Unwind_Exception *)*((_DWORD *)Block + 3); - if ( v2 ) - { - v4 = (struct _Unwind_Exception *)*((_DWORD *)Block + 2); - if ( v2 ) - v3 = Block; - } - Block = v4; - lpuexcpt = v3; - } - if ( v7 == lpuexcpt || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) - { - Blocka = (char *)operator new(0x2Cu); - std::string::basic_string(Blocka + 16, a2); - *((_DWORD *)Blocka + 10) = 0; - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - lpuexcpt, - (int)(Blocka + 16)); - if ( v5 ) - { - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - this, - (int)lpuexcpt, - v5, - Blocka); - } - else - { - std::string::_M_dispose((void **)Blocka + 4); - operator delete(Blocka); - } - } - return (char *)lpuexcpt + 40; -} -// 500714: variable 'v5' is possibly undefined - -//----- (005007B8) -------------------------------------------------------- -void **__thiscall std::map::operator[](void **this, int a2) -{ - bool v2; // zf - struct _Unwind_Exception *v3; // eax - struct _Unwind_Exception *v4; // edx - void **v5; // edx - char v6; // al - int insert_hint_unique_pos; // [esp+14h] [ebp-54h] - void **v9; // [esp+18h] [ebp-50h] - void **v10; // [esp+18h] [ebp-50h] - void **v12; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - void **lpuexcpta; // [esp+24h] [ebp-44h] - void **Block; // [esp+28h] [ebp-40h] - - v12 = this + 1; - lpuexcpt = (struct _Unwind_Exception *)this[2]; - Block = this + 1; - while ( lpuexcpt ) - { - v2 = (unsigned __int8)std::operator<((int)lpuexcpt + 16, a2) == 0; - v3 = (struct _Unwind_Exception *)Block; - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 3); - if ( v2 ) - { - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 2); - if ( v2 ) - v3 = lpuexcpt; - } - lpuexcpt = v4; - Block = (void **)v3; - } - if ( v12 == Block || (unsigned __int8)std::operator<(a2, (int)(Block + 4)) ) - { - v9 = Block; - Block = (void **)operator new(0x2Cu); - lpuexcpta = Block + 4; - std::string::basic_string((char *)Block + 16, a2); - Block[10] = 0; - insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - v9, - (int)(Block + 4)); - v10 = v5; - if ( v5 ) - { - v6 = insert_hint_unique_pos != 0 || v12 == v5; - if ( !v6 ) - v6 = std::operator<((int)lpuexcpta, (int)(v5 + 4)); - std::_Rb_tree_insert_and_rebalance(v6, Block, v10, v12); - this[5] = (char *)this[5] + 1; - } - else - { - std::string::_M_dispose(lpuexcpta); - operator delete(Block); - Block = (void **)insert_hint_unique_pos; - } - } - return Block + 10; -} -// 5008B3: variable 'v5' is possibly undefined - -//----- (00500998) -------------------------------------------------------- -_DWORD *__thiscall std::map>>::operator[]( - _DWORD *this, - _DWORD *a2) -{ - _DWORD *v3; // edi - _DWORD *v4; // ebx - _DWORD *i; // eax - _DWORD *v6; // edx - int *v7; // eax - _DWORD *v8; // edx - bool v9; // al - _DWORD *v11; // [esp+1Ch] [ebp-1Ch] - int insert_hint_unique_pos; // [esp+1Ch] [ebp-1Ch] - - v3 = this + 1; - v4 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v6 = (_DWORD *)i[3]; - if ( i[4] >= *a2 ) - v6 = (_DWORD *)i[2]; - if ( i[4] >= *a2 ) - v4 = i; - } - if ( v3 == v4 || *a2 < v4[4] ) - { - v11 = v4; - v4 = operator new(0x2Cu); - v4[4] = *a2; - std::_Rb_tree_header::_Rb_tree_header(v4 + 6); - insert_hint_unique_pos = std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( - this, - v11, - v7); - if ( v8 ) - { - v9 = insert_hint_unique_pos != 0 || v3 == v8; - if ( !v9 ) - v9 = v4[4] < v8[4]; - std::_Rb_tree_insert_and_rebalance(v9, v4, v8, v3); - ++this[5]; - } - else - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)(v4 + 5)); - operator delete(v4); - v4 = (_DWORD *)insert_hint_unique_pos; - } - } - return v4 + 5; -} -// 500A13: variable 'v7' is possibly undefined -// 500A1F: variable 'v8' is possibly undefined - -//----- (00500A78) -------------------------------------------------------- -_DWORD *__thiscall std::map>>::operator[]( - _DWORD *this, - int *a2) -{ - _DWORD *v3; // edi - _DWORD *v4; // ebx - _DWORD *i; // eax - _DWORD *v6; // edx - int v7; // eax - int insert_hint_unique_pos; // eax - _DWORD *v9; // edx - bool v10; // al - _DWORD *v12; // [esp+18h] [ebp-20h] - _DWORD *v13; // [esp+18h] [ebp-20h] - int v14; // [esp+1Ch] [ebp-1Ch] - - v3 = this + 1; - v4 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v6 = (_DWORD *)i[3]; - if ( i[4] >= *a2 ) - v6 = (_DWORD *)i[2]; - if ( i[4] >= *a2 ) - v4 = i; - } - if ( v3 == v4 || *a2 < v4[4] ) - { - v12 = v4; - v4 = operator new(0x2Cu); - v7 = *a2; - v4[6] = 0; - v4[7] = 0; - v4[4] = v7; - v14 = v7; - v4[8] = v4 + 6; - v4[9] = v4 + 6; - v4[10] = 0; - insert_hint_unique_pos = std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( - this, - v12, - v4 + 4); - v13 = (_DWORD *)insert_hint_unique_pos; - if ( v9 ) - { - v10 = v3 == v9 || insert_hint_unique_pos != 0; - if ( !v10 ) - v10 = v14 < v9[4]; - std::_Rb_tree_insert_and_rebalance(v10, v4, v9, v3); - ++this[5]; - } - else - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(0); - operator delete(v4); - v4 = v13; - } - } - return v4 + 5; -} -// 500B12: variable 'v9' is possibly undefined - -//----- (00500B68) -------------------------------------------------------- -char *__thiscall std::map::operator[](_DWORD *this, unsigned int *a2) -{ - _DWORD *v3; // ebx - _DWORD *i; // eax - _DWORD *v5; // ecx - _DWORD *v6; // edi - unsigned int v7; // eax - _DWORD *v8; // edx - int insert_hint_unique_pos; // edi - bool v10; // al - void *v12; // [esp+0h] [ebp-38h] - unsigned int v13; // [esp+18h] [ebp-20h] - _DWORD *v14; // [esp+1Ch] [ebp-1Ch] - - v3 = this + 1; - v14 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v5 = (_DWORD *)i[3]; - if ( i[4] >= *a2 ) - v5 = (_DWORD *)i[2]; - if ( i[4] >= *a2 ) - v3 = i; - } - if ( v14 == v3 || *a2 < v3[4] ) - { - v6 = v3; - v3 = operator new(0x2Cu); - v7 = *a2; - v3[6] = 0; - *((_BYTE *)v3 + 28) = 0; - v3[4] = v7; - v13 = v7; - v3[5] = v3 + 7; - insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - v6, - v3 + 4); - if ( v8 ) - { - v10 = insert_hint_unique_pos != 0 || v14 == v8; - if ( !v10 ) - v10 = v13 < v8[4]; - std::_Rb_tree_insert_and_rebalance(v10, v3, v8, v14); - ++this[5]; - } - else - { - std::string::_M_dispose((void **)v3 + 5); - v12 = v3; - v3 = (_DWORD *)insert_hint_unique_pos; - operator delete(v12); - } - } - return (char *)(v3 + 5); -} -// 500BF7: variable 'v8' is possibly undefined - -//----- (00500C50) -------------------------------------------------------- -char *__thiscall std::set::insert(_DWORD *this, int a2) -{ - int insert_unique_pos; // eax - _DWORD *v3; // edx - char v5; // [esp+1Fh] [ebp-49h] - _DWORD *v6; // [esp+20h] [ebp-48h] - char *Block; // [esp+28h] [ebp-40h] - - insert_unique_pos = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( - this, - a2); - v6 = v3; - Block = (char *)insert_unique_pos; - if ( v3 ) - { - v5 = 1; - if ( !insert_unique_pos && v3 != this + 1 ) - v5 = std::operator<(a2, (int)(v3 + 4)); - Block = (char *)operator new(0x28u); - std::string::basic_string(Block + 16, a2); - std::_Rb_tree_insert_and_rebalance(v5, Block, v6, this + 1); - ++this[5]; - } - return Block; -} -// 500C8D: variable 'v3' is possibly undefined - -//----- (00500D90) -------------------------------------------------------- -void __thiscall std::pair::swap(_DWORD *this, _DWORD *a2) -{ - int v2; // ebx - _DWORD v3[34]; // [esp+10h] [ebp-88h] BYREF - - v2 = (int)(this + 6); - std::string::swap(this, a2); - WXML::DOMLib::Token::Token(v3, v2); - WXML::DOMLib::Token::operator=(v2, (int)(a2 + 6)); - WXML::DOMLib::Token::operator=((int)(a2 + 6), (int)v3); - WXML::DOMLib::Token::~Token((int)v3); -} -// 500D90: using guessed type _DWORD var_88[34]; - -//----- (00500DE8) -------------------------------------------------------- -_DWORD *__thiscall std::pair::pair(_DWORD *this, _DWORD *a2) -{ - std::string::basic_string(this, a2); - return WXML::DOMLib::Token::Token(this + 6, (int)(a2 + 6)); -} - -//----- (00500E14) -------------------------------------------------------- -void __fastcall std::pair::~pair(void **a1) -{ - WXML::DOMLib::Token::~Token((int)(a1 + 6)); - std::string::_M_dispose(a1); -} - -//----- (00500E30) -------------------------------------------------------- -int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, _BYTE *a4, int a5, int a6) -{ - char *v6; // edi - size_t Size; // ebx - int result; // eax - size_t v9; // ebp - char *v10; // esi - _BYTE *v11; // eax - _BYTE *v12; // ecx - char v13; // al - char v14; // dl - int (__stdcall *v15)(unsigned __int8); // edx - int (__stdcall *v16)(unsigned __int8); // edx - char v17; // dl - int (__stdcall *v18)(unsigned __int8); // eax - char v19; // dl - int (__stdcall *v20)(unsigned __int8); // eax - int (__stdcall *v21)(unsigned __int8); // eax - void *v22; // [esp+14h] [ebp-28h] - _BYTE *v23; // [esp+1Ch] [ebp-20h] - _BYTE *v24; // [esp+1Ch] [ebp-20h] - _BYTE *v25; // [esp+1Ch] [ebp-20h] - _BYTE *v26; // [esp+1Ch] [ebp-20h] - _BYTE *v27; // [esp+1Ch] [ebp-20h] - - v6 = a3; - v22 = a4; - Size = a5 - a6; - result = a1[3] & 0xB0; - if ( result == 32 ) - { - if ( a6 ) - { - result = (int)memcpy(a3, a4, a6); - if ( !Size ) - return result; - } - else if ( !Size ) - { - return result; - } - return (int)memset(&a3[a6], (char)Src, Size); - } - v9 = a6; - if ( result != 16 ) - goto LABEL_3; - v11 = std::use_facet>((int)(a1 + 27)); - v12 = v11; - if ( v11[28] ) - { - result = (unsigned __int8)*a4; - if ( v12[74] == (_BYTE)result ) - goto LABEL_29; - goto LABEL_8; - } - v23 = v11; - std::ctype::_M_widen_init((int)v11); - v12 = v23; - v15 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); - result = 45; - if ( v15 != std::ctype::do_widen ) - { - result = v15(45u); - v12 = v23; - } - if ( *a4 == (_BYTE)result ) - goto LABEL_29; - if ( v12[28] ) - { - result = (unsigned __int8)*a4; -LABEL_8: - if ( v12[72] != (_BYTE)result ) - { -LABEL_9: - if ( v12[77] == (_BYTE)result && a6 > 1 ) - { -LABEL_11: - v13 = a4[1]; - if ( v13 == v12[149] ) - { -LABEL_43: - v6 = a3 + 2; - v9 = a6 - 2; - *a3 = *a4; - result = (unsigned __int8)a4[1]; - v22 = a4 + 2; - a3[1] = result; - goto LABEL_3; - } - goto LABEL_12; - } -LABEL_3: - v10 = &v6[Size]; - if ( !Size ) - { - if ( !v9 ) - return result; - return (int)memcpy(v10, v22, v9); - } - goto LABEL_15; - } -LABEL_29: - *a3 = result; - v9 = a6 - 1; - v6 = a3 + 1; - v22 = a4 + 1; - goto LABEL_3; - } - v24 = v12; - std::ctype::_M_widen_init((int)v12); - v12 = v24; - v16 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); - result = 43; - if ( v16 != std::ctype::do_widen ) - { - result = v16(43u); - v12 = v24; - } - if ( *a4 == (_BYTE)result ) - goto LABEL_29; - if ( v12[28] ) - { - result = (unsigned __int8)*a4; - goto LABEL_9; - } - v25 = v12; - std::ctype::_M_widen_init((int)v12); - v12 = v25; - v17 = 48; - v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v25 + 24); - if ( v18 != std::ctype::do_widen ) - { - v17 = v18(48u); - v12 = v25; - } - result = (int)a4; - if ( *a4 != v17 || a6 <= 1 ) - goto LABEL_3; - if ( v12[28] ) - goto LABEL_11; - v26 = v12; - std::ctype::_M_widen_init((int)v12); - v12 = v26; - v19 = 120; - v20 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v26 + 24); - if ( v20 != std::ctype::do_widen ) - { - v19 = v20(120u); - v12 = v26; - } - v13 = a4[1]; - if ( v13 == v19 ) - goto LABEL_43; - if ( v12[28] ) - { -LABEL_12: - v14 = v12[117]; - goto LABEL_13; - } - v27 = v12; - std::ctype::_M_widen_init((int)v12); - v21 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v27 + 24); - if ( v21 == std::ctype::do_widen ) - v14 = 88; - else - v14 = v21(88u); - v13 = a4[1]; -LABEL_13: - if ( v14 == v13 ) - goto LABEL_43; - v10 = &a3[Size]; - if ( !Size ) - return (int)memcpy(v10, v22, v9); -LABEL_15: - result = (int)memset(v6, (char)Src, Size); - if ( v9 ) - return (int)memcpy(v10, v22, v9); - return result; -} - -//----- (00501170) -------------------------------------------------------- -_WORD *__cdecl std::__pad>::_S_pad( - _DWORD *a1, - void *Src, - _WORD *Size, - _WORD *a4, - int a5, - int a6) -{ - _WORD *v6; // esi - int v7; // ebx - _WORD *result; // eax - int v9; // edx - __int16 v10; // ax - __int16 v11; // ax - __int16 v12; // ax - _WORD *v13; // esi - _WORD *v14; // [esp+20h] [ebp-2Ch] - void *v15; // [esp+28h] [ebp-24h] - - v14 = a4; - v6 = Size; - v7 = a5 - a6; - result = (_WORD *)(a1[3] & 0xB0); - if ( result != (_WORD *)32 ) - { - v9 = a6; - if ( result == (_WORD *)16 ) - { - v15 = std::use_facet>((int)(a1 + 27)); - v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(45); - if ( *a4 == v10 || (v10 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 40))(v15, 43), *a4 == v10) ) - { - *Size = v10; - v9 = a6 - 1; - v6 = Size + 1; - v14 = a4 + 1; - } - else - { - v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(48); - v9 = a6; - if ( *a4 == v11 && a6 > 1 ) - { - if ( a4[1] != (*(unsigned __int16 (__stdcall **)(int))(*(_DWORD *)v15 + 40))(120) ) - { - v12 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 40))(v15, 88); - v9 = a6; - if ( a4[1] != v12 ) - { - result = &Size[v7]; - if ( !v7 ) - return memcpy(result, v14, 2 * v9); - do - { -LABEL_4: - *v6++ = (_WORD)Src; - --v7; - } - while ( v7 ); -LABEL_5: - if ( !v9 ) - return result; - return memcpy(result, v14, 2 * v9); - } - } - v6 = Size + 2; - v9 = a6 - 2; - *Size = *a4; - v14 = a4 + 2; - Size[1] = a4[1]; - } - } - } - result = &v6[v7]; - if ( !v7 ) - goto LABEL_5; - goto LABEL_4; - } - if ( a6 ) - { - result = memcpy(Size, a4, 2 * a6); - v13 = &Size[a6]; - if ( !v7 ) - return result; - } - else - { - v13 = &Size[a6]; - if ( !v7 ) - return result; - } - do - { - *v13++ = (_WORD)Src; - --v7; - } - while ( v7 ); - return result; -} - -//----- (005013A0) -------------------------------------------------------- -void *std::ctype::classic_table() -{ - return &std::ctype::classic_table(void)::_S_classic_table; -} - -//----- (005013B0) -------------------------------------------------------- -int __thiscall std::ctype::ctype(_DWORD *this, void *a2, char a3, int a4) -{ - void *v4; // eax - int result; // eax - - v4 = a2; - *this = &off_560A68; - this[4] = 0; - this[5] = 0; - this[1] = a4 != 0; - *((_BYTE *)this + 12) = a3 & (a2 != 0); - if ( !a2 ) - v4 = &std::ctype::classic_table(void)::_S_classic_table; - *(_DWORD *)((char *)this + 29) = 0; - *(_DWORD *)((char *)this + 281) = 0; - this[6] = v4; - result = 0; - memset( - (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); - *((_BYTE *)this + 28) = 0; - *(_DWORD *)((char *)this + 285) = 0; - *(_DWORD *)((char *)this + 537) = 0; - memset( - (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); - *((_BYTE *)this + 541) = 0; - return result; -} -// 560A68: using guessed type int (*off_560A68)(); - -//----- (00501460) -------------------------------------------------------- -int __thiscall std::ctype::ctype(_DWORD *this, int a2, void *a3, char a4, int a5) -{ - void *v5; // eax - int result; // eax - - v5 = a3; - *this = &off_560A68; - this[4] = 0; - this[5] = 0; - this[1] = a5 != 0; - *((_BYTE *)this + 12) = a4 & (a3 != 0); - if ( !a3 ) - v5 = &std::ctype::classic_table(void)::_S_classic_table; - *(_DWORD *)((char *)this + 29) = 0; - *(_DWORD *)((char *)this + 281) = 0; - this[6] = v5; - result = 0; - memset( - (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); - *((_BYTE *)this + 28) = 0; - *(_DWORD *)((char *)this + 285) = 0; - *(_DWORD *)((char *)this + 537) = 0; - memset( - (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); - *((_BYTE *)this + 541) = 0; - return result; -} -// 560A68: using guessed type int (*off_560A68)(); - -//----- (00501510) -------------------------------------------------------- -void __fastcall std::ctype::~ctype(void **Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560A68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - if ( *((_BYTE *)Block + 12) && Block[6] ) - operator delete[](Block[6]); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 501563: variable 'lpfctx' is possibly undefined -// 560A68: using guessed type int (*off_560A68)(); - -//----- (00501580) -------------------------------------------------------- -void __fastcall std::ctype::~ctype(int a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *(_DWORD *)a1 = &off_560A68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 8)); - if ( *(_BYTE *)(a1 + 12) && *(_DWORD *)(a1 + 24) ) - operator delete[](*(void **)(a1 + 24)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5015D3: variable 'lpfctx' is possibly undefined -// 560A68: using guessed type int (*off_560A68)(); - -//----- (005015F0) -------------------------------------------------------- -int __fastcall std::ctype::_M_initialize_ctype(int a1) -{ - int WCh; // ebx - int v3; // eax - int i; // ebx - int j; // ebx - int result; // eax - - for ( WCh = 0; WCh != 128; ++WCh ) - { - v3 = wctob(WCh); - if ( v3 == -1 ) - { - *(_BYTE *)(a1 + 12) = 0; - goto LABEL_5; - } - *(_BYTE *)(a1 + WCh + 13) = v3; - } - *(_BYTE *)(a1 + 12) = 1; -LABEL_5: - for ( i = 0; i != 256; ++i ) - *(_WORD *)(a1 + 2 * i + 142) = btowc(i); - for ( j = 0; j != 16; ++j ) - { - *(_WORD *)(a1 + 2 * j + 654) = 1 << j; - result = std::ctype::_M_convert_to_wmask(1 << j); - *(_WORD *)(a1 + 2 * j + 686) = result; - } - return result; -} - -//----- (00501690) -------------------------------------------------------- -int __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3) -{ - int v4; // eax - - *this = &off_560A98; - this[1] = a3 != 0; - v4 = std::locale::facet::_S_clone_c_locale(); - *((_BYTE *)this + 12) = 0; - this[2] = v4; - return std::ctype::_M_initialize_ctype((int)this); -} -// 560A98: using guessed type int (*off_560A98)(); - -//----- (005016D0) -------------------------------------------------------- -void __thiscall std::ctype::ctype(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560A98; - this[2] = std::locale::facet::_S_get_c_locale(); - *((_BYTE *)this + 12) = 0; - std::ctype::_M_initialize_ctype((int)this); -} -// 560A98: using guessed type int (*off_560A98)(); - -//----- (00501780) -------------------------------------------------------- -void __fastcall std::ctype::~ctype(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560A98; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - *Block = &unk_56089C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 5017C4: variable 'lpfctx' is possibly undefined -// 560A98: using guessed type int (*off_560A98)(); - -//----- (005017E0) -------------------------------------------------------- -void __fastcall std::ctype::~ctype(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560A98; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_56089C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 501824: variable 'lpfctx' is possibly undefined -// 560A98: using guessed type int (*off_560A98)(); - -//----- (00501840) -------------------------------------------------------- -int __fastcall std::deque>::back(_DWORD *a1) -{ - int v1; // eax - - v1 = a1[6]; - if ( v1 == a1[7] ) - v1 = *(_DWORD *)(a1[9] - 4) + 512; - return v1 - 8; -} - -//----- (00501858) -------------------------------------------------------- -int __fastcall std::deque>::pop_back(_DWORD *a1) -{ - char *v2; // ecx - int v4; // eax - int v5; // ecx - - v2 = (char *)a1[6]; - if ( v2 == (char *)a1[7] ) - { - operator delete(v2); - v4 = a1[9]; - v5 = *(_DWORD *)(v4 - 4); - a1[9] = v4 - 4; - a1[7] = v5; - a1[8] = v5 + 512; - a1[6] = v5 + 504; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); - } - else - { - a1[6] = v2 - 8; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); - } -} - -//----- (005018B0) -------------------------------------------------------- -void __thiscall std::deque>::push_back(int this, _DWORD *a2) -{ - int v3; // eax - int v4; // edi - char *v5; // ecx - int v6; // edi - unsigned int v7; // eax - int v8; // edi - char *v9; // edi - char *v10; // eax - int v11; // ecx - unsigned int v12; // esi - int v13; // ecx - int v14; // eax - int v15; // eax - int v16; // eax - int v17; // esi - int *v18; // edx - int v19; // eax - int v20; // [esp+18h] [ebp-20h] - int v21; // [esp+1Ch] [ebp-1Ch] - char *v22; // [esp+1Ch] [ebp-1Ch] - - v3 = *(_DWORD *)(this + 24); - if ( v3 == *(_DWORD *)(this + 32) - 8 ) - { - v4 = *(_DWORD *)(this + 36); - v5 = *(char **)(this + 20); - v21 = v4; - v20 = v4 - (_DWORD)v5; - v6 = (v4 - (int)v5) >> 2; - if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) - + ((v3 - *(_DWORD *)(this + 28)) >> 3) - + ((v6 - 1) << 6) == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); - v7 = *(_DWORD *)(this + 4); - if ( v7 - ((v21 - *(_DWORD *)this) >> 2) <= 1 ) - { - v8 = v6 + 2; - if ( v7 <= 2 * v8 ) - { - v11 = 1; - if ( v7 ) - v11 = *(_DWORD *)(this + 4); - v12 = v7 + v11 + 2; - if ( v12 > 0x1FFFFFFF ) - std::__throw_bad_alloc(); - v22 = (char *)operator new(4 * v12); - v9 = &v22[4 * ((v12 - v8) >> 1)]; - v13 = *(_DWORD *)(this + 20); - v14 = *(_DWORD *)(this + 36) + 4; - if ( v14 != v13 ) - memmove(v9, *(const void **)(this + 20), v14 - v13); - operator delete(*(void **)this); - *(_DWORD *)(this + 4) = v12; - *(_DWORD *)this = v22; - } - else - { - v9 = (char *)(*(_DWORD *)this + 4 * ((v7 - v8) >> 1)); - v10 = (char *)(v21 + 4); - if ( v5 <= v9 ) - { - if ( v5 != v10 ) - memmove(&v9[v20 - (v21 - (_DWORD)v5)], v5, v21 + 4 - (_DWORD)v5); - } - else if ( v5 != v10 ) - { - memmove(v9, v5, v21 + 4 - (_DWORD)v5); - } - } - v15 = *(_DWORD *)v9; - *(_DWORD *)(this + 20) = v9; - *(_DWORD *)(this + 12) = v15; - *(_DWORD *)(this + 16) = v15 + 512; - v16 = *(_DWORD *)&v9[v20]; - *(_DWORD *)(this + 36) = &v9[v20]; - *(_DWORD *)(this + 28) = v16; - *(_DWORD *)(this + 32) = v16 + 512; - } - v17 = *(_DWORD *)(this + 36); - *(_DWORD *)(v17 + 4) = operator new(0x200u); - std::__shared_ptr::__shared_ptr(*(_DWORD **)(this + 24), a2); - v18 = (int *)(*(_DWORD *)(this + 36) + 4); - v19 = *v18; - *(_DWORD *)(this + 36) = v18; - *(_DWORD *)(this + 28) = v19; - *(_DWORD *)(this + 32) = v19 + 512; - *(_DWORD *)(this + 24) = v19; - } - else - { - std::__shared_ptr::__shared_ptr(*(_DWORD **)(this + 24), a2); - *(_DWORD *)(this + 24) += 8; - } -} - -//----- (00501A70) -------------------------------------------------------- -int __fastcall std::deque>::back(_DWORD *a1) -{ - int v1; // eax - - v1 = a1[6]; - if ( v1 == a1[7] ) - v1 = *(_DWORD *)(a1[9] - 4) + 512; - return v1 - 8; -} - -//----- (00501A88) -------------------------------------------------------- -int __fastcall std::deque>::pop_back(_DWORD *a1) -{ - char *v2; // ecx - int v4; // eax - int v5; // ecx - - v2 = (char *)a1[6]; - if ( v2 == (char *)a1[7] ) - { - operator delete(v2); - v4 = a1[9]; - v5 = *(_DWORD *)(v4 - 4); - a1[9] = v4 - 4; - a1[7] = v5; - a1[8] = v5 + 512; - a1[6] = v5 + 504; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); - } - else - { - a1[6] = v2 - 8; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); - } -} - -//----- (00501AE0) -------------------------------------------------------- -void __thiscall std::deque>::push_back(int this, int *a2) -{ - int v3; // eax - int v4; // edi - char *v5; // ecx - int v6; // edi - unsigned int v7; // eax - int v8; // edi - char *v9; // edi - char *v10; // eax - int v11; // ecx - unsigned int v12; // esi - int v13; // ecx - int v14; // eax - int v15; // eax - int v16; // eax - int v17; // esi - int *v18; // edx - int v19; // eax - int v20; // [esp+18h] [ebp-20h] - int v21; // [esp+1Ch] [ebp-1Ch] - char *v22; // [esp+1Ch] [ebp-1Ch] - - v3 = *(_DWORD *)(this + 24); - if ( v3 == *(_DWORD *)(this + 32) - 8 ) - { - v4 = *(_DWORD *)(this + 36); - v5 = *(char **)(this + 20); - v21 = v4; - v20 = v4 - (_DWORD)v5; - v6 = (v4 - (int)v5) >> 2; - if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) - + ((v3 - *(_DWORD *)(this + 28)) >> 3) - + ((v6 - 1) << 6) == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); - v7 = *(_DWORD *)(this + 4); - if ( v7 - ((v21 - *(_DWORD *)this) >> 2) <= 1 ) - { - v8 = v6 + 2; - if ( v7 <= 2 * v8 ) - { - v11 = 1; - if ( v7 ) - v11 = *(_DWORD *)(this + 4); - v12 = v7 + v11 + 2; - if ( v12 > 0x1FFFFFFF ) - std::__throw_bad_alloc(); - v22 = (char *)operator new(4 * v12); - v9 = &v22[4 * ((v12 - v8) >> 1)]; - v13 = *(_DWORD *)(this + 20); - v14 = *(_DWORD *)(this + 36) + 4; - if ( v14 != v13 ) - memmove(v9, *(const void **)(this + 20), v14 - v13); - operator delete(*(void **)this); - *(_DWORD *)(this + 4) = v12; - *(_DWORD *)this = v22; - } - else - { - v9 = (char *)(*(_DWORD *)this + 4 * ((v7 - v8) >> 1)); - v10 = (char *)(v21 + 4); - if ( v5 <= v9 ) - { - if ( v5 != v10 ) - memmove(&v9[v20 - (v21 - (_DWORD)v5)], v5, v21 + 4 - (_DWORD)v5); - } - else if ( v5 != v10 ) - { - memmove(v9, v5, v21 + 4 - (_DWORD)v5); - } - } - v15 = *(_DWORD *)v9; - *(_DWORD *)(this + 20) = v9; - *(_DWORD *)(this + 12) = v15; - *(_DWORD *)(this + 16) = v15 + 512; - v16 = *(_DWORD *)&v9[v20]; - *(_DWORD *)(this + 36) = &v9[v20]; - *(_DWORD *)(this + 28) = v16; - *(_DWORD *)(this + 32) = v16 + 512; - } - v17 = *(_DWORD *)(this + 36); - *(_DWORD *)(v17 + 4) = operator new(0x200u); - std::__shared_ptr::__shared_ptr(*(int **)(this + 24), a2); - v18 = (int *)(*(_DWORD *)(this + 36) + 4); - v19 = *v18; - *(_DWORD *)(this + 36) = v18; - *(_DWORD *)(this + 28) = v19; - *(_DWORD *)(this + 32) = v19 + 512; - *(_DWORD *)(this + 24) = v19; - } - else - { - std::__shared_ptr::__shared_ptr(*(int **)(this + 24), a2); - *(_DWORD *)(this + 24) += 8; - } -} - -//----- (00501CA0) -------------------------------------------------------- -int __fastcall std::deque>::pop_back(_DWORD *a1) -{ - char *v2; // ecx - int v4; // eax - int v5; // ecx - - v2 = (char *)a1[6]; - if ( v2 == (char *)a1[7] ) - { - operator delete(v2); - v4 = a1[9]; - v5 = *(_DWORD *)(v4 - 4); - a1[9] = v4 - 4; - a1[7] = v5; - a1[8] = v5 + 512; - a1[6] = v5 + 504; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); - } - else - { - a1[6] = v2 - 8; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); - } -} - -//----- (00501CF8) -------------------------------------------------------- -void __thiscall std::deque>::push_back(int this, int *a2) -{ - int *v3; // eax - char *v4; // ecx - int v5; // esi - unsigned int v6; // eax - int v7; // ebx - char *v8; // ebx - char *v9; // eax - int v10; // ecx - unsigned int v11; // esi - char *v12; // eax - const void *v13; // ecx - int v14; // eax - int v15; // eax - char *v16; // ebx - int v17; // eax - int v18; // ebx - int *v19; // ecx - int *v20; // ecx - int v21; // eax - int v22; // [esp+18h] [ebp-20h] - int v23; // [esp+1Ch] [ebp-1Ch] - char *v24; // [esp+1Ch] [ebp-1Ch] - - v3 = *(int **)(this + 24); - if ( v3 == (int *)(*(_DWORD *)(this + 32) - 8) ) - { - v4 = *(char **)(this + 20); - v23 = *(_DWORD *)(this + 36); - v22 = v23 - (_DWORD)v4; - v5 = (v23 - (int)v4) >> 2; - if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) - + (((int)v3 - *(_DWORD *)(this + 28)) >> 3) - + ((v5 - 1) << 6) == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); - v6 = *(_DWORD *)(this + 4); - if ( v6 - ((v23 - *(_DWORD *)this) >> 2) <= 1 ) - { - v7 = v5 + 2; - if ( v6 <= 2 * (v5 + 2) ) - { - v10 = 1; - if ( v6 ) - v10 = *(_DWORD *)(this + 4); - v11 = v6 + v10 + 2; - if ( v11 > 0x1FFFFFFF ) - std::__throw_bad_alloc(); - v12 = (char *)operator new(4 * v11); - v13 = *(const void **)(this + 20); - v24 = v12; - v8 = &v12[4 * ((v11 - v7) >> 1)]; - v14 = *(_DWORD *)(this + 36) + 4; - if ( (const void *)v14 != v13 ) - memmove(v8, v13, v14 - (_DWORD)v13); - operator delete(*(void **)this); - *(_DWORD *)(this + 4) = v11; - *(_DWORD *)this = v24; - } - else - { - v8 = (char *)(*(_DWORD *)this + 4 * ((v6 - v7) >> 1)); - v9 = (char *)(v23 + 4); - if ( v4 <= v8 ) - { - if ( v9 != v4 ) - memmove(v8, v4, v23 + 4 - (_DWORD)v4); - } - else if ( v9 != v4 ) - { - memmove(v8, v4, v23 + 4 - (_DWORD)v4); - } - } - v15 = *(_DWORD *)v8; - *(_DWORD *)(this + 20) = v8; - v16 = &v8[v22]; - *(_DWORD *)(this + 12) = v15; - *(_DWORD *)(this + 16) = v15 + 512; - v17 = *(_DWORD *)v16; - *(_DWORD *)(this + 36) = v16; - *(_DWORD *)(this + 28) = v17; - *(_DWORD *)(this + 32) = v17 + 512; - } - v18 = *(_DWORD *)(this + 36); - *(_DWORD *)(v18 + 4) = operator new(0x200u); - v19 = (int *)(*(_DWORD *)(this + 24) + 4); - *(v19 - 1) = *a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v19, a2[1]); - v20 = (int *)(*(_DWORD *)(this + 36) + 4); - v21 = *v20; - *(_DWORD *)(this + 36) = v20; - *(_DWORD *)(this + 28) = v21; - *(_DWORD *)(this + 32) = v21 + 512; - *(_DWORD *)(this + 24) = v21; - } - else - { - *v3 = *a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v3 + 1, a2[1]); - *(_DWORD *)(this + 24) += 8; - } -} - -//----- (00501ECC) -------------------------------------------------------- -void __thiscall std::deque::_M_push_back_aux(int this, int a2) -{ - int v2; // edi - struct _Unwind_Exception *v3; // ecx - unsigned int v4; // eax - struct _Unwind_Exception *v5; // eax - int v6; // edx - const void *v7; // edx - int v8; // eax - int v9; // eax - int v10; // eax - int *v11; // edx - int v12; // eax - char *v13; // [esp+18h] [ebp-60h] - int v14; // [esp+1Ch] [ebp-5Ch] - unsigned int v15; // [esp+20h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-54h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-54h] - struct _Unwind_Exception *lpuexcptb; // [esp+24h] [ebp-54h] - - v2 = *(_DWORD *)(this + 36); - v3 = *(struct _Unwind_Exception **)(this + 20); - v14 = *(_DWORD *)(this + 36) - (_DWORD)v3; - if ( -1431655765 * ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) - + 21 * ((v14 >> 2) - 1) - - 1431655765 * ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) == 89478485 ) - std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); - v4 = *(_DWORD *)(this + 4); - if ( v4 - ((v2 - *(_DWORD *)this) >> 2) <= 1 ) - { - lpuexcpt = (struct _Unwind_Exception *)((v14 >> 2) + 2); - if ( v4 <= 2 * (int)lpuexcpt ) - { - v6 = 1; - if ( v4 ) - v6 = *(_DWORD *)(this + 4); - v15 = v4 + v6 + 2; - if ( v15 > 0x1FFFFFFF ) - std::__throw_bad_alloc(); - v13 = (char *)operator new(4 * v15); - lpuexcpta = (struct _Unwind_Exception *)&v13[4 * ((v15 - (unsigned int)lpuexcpt) >> 1)]; - v7 = *(const void **)(this + 20); - v8 = *(_DWORD *)(this + 36) + 4; - if ( (const void *)v8 != v7 ) - memmove(lpuexcpta, v7, v8 - (_DWORD)v7); - operator delete(*(void **)this); - *(_DWORD *)this = v13; - *(_DWORD *)(this + 4) = v15; - } - else - { - lpuexcpta = (struct _Unwind_Exception *)(*(_DWORD *)this + 4 * ((v4 - (unsigned int)lpuexcpt) >> 1)); - v5 = (struct _Unwind_Exception *)(v2 + 4); - if ( v3 <= lpuexcpta ) - { - if ( v3 != v5 ) - memmove((char *)lpuexcpta + *(_DWORD *)(this + 36) - v2, v3, v2 + 4 - (_DWORD)v3); - } - else if ( v3 != v5 ) - { - memmove(lpuexcpta, v3, v2 + 4 - (_DWORD)v3); - } - } - *(_DWORD *)(this + 20) = lpuexcpta; - v9 = *(_DWORD *)lpuexcpta; - *(_DWORD *)(this + 12) = *(_DWORD *)lpuexcpta; - *(_DWORD *)(this + 16) = v9 + 504; - *(_DWORD *)(this + 36) = (char *)lpuexcpta + v14; - v10 = *(_DWORD *)((char *)lpuexcpta + v14); - *(_DWORD *)(this + 28) = v10; - *(_DWORD *)(this + 32) = v10 + 504; - } - lpuexcptb = *(struct _Unwind_Exception **)(this + 36); - *((_DWORD *)lpuexcptb + 1) = operator new(0x1F8u); - std::string::basic_string(*(char **)(this + 24), a2); - v11 = (int *)(*(_DWORD *)(this + 36) + 4); - v12 = *v11; - *(_DWORD *)(this + 36) = v11; - *(_DWORD *)(this + 28) = v12; - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(this + 32) = v12 + 504; -} - -//----- (00502170) -------------------------------------------------------- -void __fastcall std::deque::pop_back(_DWORD *a1) -{ - char *v2; // ecx - void **v3; // ecx - int v4; // eax - int v5; // ecx - int v6; // eax - - v2 = (char *)a1[6]; - if ( v2 == (char *)a1[7] ) - { - operator delete(v2); - v4 = a1[9]; - v5 = *(_DWORD *)(v4 - 4); - a1[9] = v4 - 4; - v6 = v5 + 504; - a1[7] = v5; - v3 = (void **)(v5 + 480); - a1[8] = v6; - } - else - { - v3 = (void **)(v2 - 24); - } - a1[6] = v3; - std::string::_M_dispose(v3); -} - -//----- (005021C0) -------------------------------------------------------- -std::locale *std::locale::_S_initialize() -{ - std::locale *result; // eax - std::locale::_Impl *v1; // [esp+4h] [ebp-18h] - std::locale::_Impl *v2; // [esp+4h] [ebp-18h] - - if ( !_CRT_MT ) - { - result = (std::locale *)std::locale::_S_classic; - if ( std::locale::_S_classic ) - return result; -LABEL_5: - std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, (unsigned int)v1); - std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; - std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; - return std::locale::locale( - &`anonymous namespace'::c_locale, - (std::locale *)`anonymous namespace'::c_locale_impl, - v2); - } - __gthr_win32_once((int)&std::locale::_S_once, (void (*)(void))std::locale::_S_initialize_once); - result = (std::locale *)std::locale::_S_classic; - if ( !std::locale::_S_classic ) - goto LABEL_5; - return result; -} -// 502209: variable 'v1' is possibly undefined -// 502231: variable 'v2' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53E49C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; -// 53EEC0: using guessed type _DWORD `anonymous namespace'::c_locale; -// 53F6E8: using guessed type int std::locale::_S_classic; -// 53F704: using guessed type int std::locale::_S_global; - -//----- (00502240) -------------------------------------------------------- -std::locale *std::locale::_S_initialize_once() -{ - unsigned int v1; // [esp+4h] [ebp-18h] - std::locale::_Impl *v2; // [esp+4h] [ebp-18h] - - std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, v1); - std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; - std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; - return std::locale::locale(&`anonymous namespace'::c_locale, (std::locale *)`anonymous namespace'::c_locale_impl, v2); -} -// 50224F: variable 'v1' is possibly undefined -// 502277: variable 'v2' is possibly undefined -// 53E49C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; -// 53EEC0: using guessed type _DWORD `anonymous namespace'::c_locale; -// 53F6E8: using guessed type int std::locale::_S_classic; -// 53F704: using guessed type int std::locale::_S_global; - -//----- (00502290) -------------------------------------------------------- -std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this) -{ - std::locale *result; // eax - - result = this; - if ( this && (((unsigned __int8)this & 0x3F) == 0 || ((unsigned int)this & 0xFFFFFFC0) != 0) ) - { - if ( (unsigned int)this - 1 > 4 ) - std::__throw_runtime_error((std::runtime_error *)"locale::_S_normalize_category category not found"); - return (std::locale *)CSWTCH_112[(_DWORD)this - 1]; - } - return result; -} -// 55ADC4: using guessed type int CSWTCH_112[7]; - -//----- (005022D0) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_init_extra(int a1@, std::locale::_Impl *this, std::locale::facet **a3) -{ - int v3; // edx - int v4; // eax - int v5; // edx - int v6; // eax - int v7; // ecx - int v8; // edx - int v9; // eax - int v10; // ecx - int v11; // eax - int v12; // edx - int v13; // [esp+1Ch] [ebp-5Ch] - int v14; // [esp+20h] [ebp-58h] - int v15; // [esp+24h] [ebp-54h] - int v16; // [esp+24h] [ebp-54h] - int v17; // [esp+24h] [ebp-54h] - int v18; // [esp+24h] [ebp-54h] - int v19; // [esp+24h] [ebp-54h] - int v20; // [esp+24h] [ebp-54h] - int v21; // [esp+24h] [ebp-54h] - int v22; // [esp+24h] [ebp-54h] - int v23; // [esp+24h] [ebp-54h] - int v24; // [esp+24h] [ebp-54h] - int v25; // [esp+28h] [ebp-50h] - int v26; // [esp+2Ch] [ebp-4Ch] - int v27; // [esp+2Ch] [ebp-4Ch] - int v28; // [esp+2Ch] [ebp-4Ch] - int v29; // [esp+2Ch] [ebp-4Ch] - int v30; // [esp+2Ch] [ebp-4Ch] - int v31; // [esp+2Ch] [ebp-4Ch] - int v32; // [esp+2Ch] [ebp-4Ch] - int v33; // [esp+2Ch] [ebp-4Ch] - int v34; // [esp+2Ch] [ebp-4Ch] - int v35; // [esp+30h] [ebp-48h] - int v36; // [esp+34h] [ebp-44h] - int v37; // [esp+34h] [ebp-44h] - int v38; // [esp+34h] [ebp-44h] - int v39; // [esp+34h] [ebp-44h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-40h] - - v3 = *((_DWORD *)this + 1); - v4 = *(_DWORD *)this; - dword_53F5C8 = 1; - std::`anonymous namespace'::numpunct_c = (int)&off_560D4C; - v36 = v3; - v14 = v4; - v5 = *((_DWORD *)this + 2); - dword_53F5CC = v4; - v35 = v5; - std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_c, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F5C8, 1u); - else - ++dword_53F5C8; - v26 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v26 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_c; - dword_53F640 = 1; - std::`anonymous namespace'::collate_c = (int)&off_560BE0; - dword_53F644 = std::locale::facet::_S_get_c_locale(); - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F640, 1u); - else - ++dword_53F640; - v27 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v27 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_c; - dword_53F610 = 1; - std::`anonymous namespace'::moneypunct_cf = (int)&off_55FEA0; - dword_53F614 = v36; - std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_cf, 0, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F610, 1u); - else - ++dword_53F610; - v28 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v28 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_cf; - dword_53F61C = 1; - std::`anonymous namespace'::moneypunct_ct = (int)&off_55FED4; - dword_53F620 = v35; - std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_ct, 0, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F61C, 1u); - else - ++dword_53F61C; - v29 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v29 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_ct; - dword_53F5F0 = 1; - std::`anonymous namespace'::money_get_c = (int)&off_560E54; - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F5F0, 1u); - else - dword_53F5F0 = 2; - v30 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v30 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = &std::`anonymous namespace'::money_get_c; - dword_53F600 = 1; - std::`anonymous namespace'::money_put_c = (int)&off_560E84; - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F600, 1u); - else - dword_53F600 = 2; - v31 = *(_DWORD *)(a1 + 4); - v6 = std::locale::id::_M_id(&std::money_put>::id); - v7 = _CRT_MT; - *(_DWORD *)(v31 + 4 * v6) = &std::`anonymous namespace'::money_put_c; - dword_53F5E0 = 1; - std::`anonymous namespace'::time_get_c = (int)&off_560D94; - if ( v7 ) - _InterlockedAdd(&dword_53F5E0, 1u); - else - dword_53F5E0 = 2; - v32 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v32 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_c; - std::messages::messages(&std::`anonymous namespace'::messages_c, 1); - if ( _CRT_MT ) - _InterlockedAdd(dword_53F5A8, 1u); - else - ++dword_53F5A8[0]; - v33 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v33 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_c; - dword_53F5D4 = 1; - std::`anonymous namespace'::numpunct_w = (int)&off_560D70; - v34 = *((_DWORD *)this + 4); - v13 = *((_DWORD *)this + 3); - v8 = *((_DWORD *)this + 5); - dword_53F5D8 = v13; - v25 = v8; - std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_w, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F5D4, 1u); - else - ++dword_53F5D4; - v15 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v15 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_w; - dword_53F64C = 1; - std::`anonymous namespace'::collate_w = (int)&off_560BFC; - dword_53F650 = std::locale::facet::_S_get_c_locale(); - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F64C, 1u); - else - ++dword_53F64C; - v16 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v16 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_w; - dword_53F628 = 1; - std::`anonymous namespace'::moneypunct_wf = (int)&off_55FF08; - dword_53F62C = v34; - std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wf, 0, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F628, 1u); - else - ++dword_53F628; - v17 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v17 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wf; - dword_53F634 = 1; - std::`anonymous namespace'::moneypunct_wt = (int)&off_55FF3C; - dword_53F638 = v25; - std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wt, 0, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F634, 1u); - else - ++dword_53F634; - v18 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v18 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wt; - dword_53F5F8 = 1; - std::`anonymous namespace'::money_get_w = (int)&off_560E6C; - if ( _CRT_MT ) - _InterlockedAdd(&dword_53F5F8, 1u); - else - dword_53F5F8 = 2; - v19 = *(_DWORD *)(a1 + 4); - v9 = std::locale::id::_M_id(&std::money_get>::id); - v10 = _CRT_MT; - *(_DWORD *)(v19 + 4 * v9) = &std::`anonymous namespace'::money_get_w; - dword_53F608 = 1; - std::`anonymous namespace'::money_put_w = (int)&off_560E9C; - if ( v10 ) - _InterlockedAdd(&dword_53F608, 1u); - else - dword_53F608 = 2; - v20 = *(_DWORD *)(a1 + 4); - v11 = std::locale::id::_M_id(std::money_put>::id); - v12 = _CRT_MT; - *(_DWORD *)(v20 + 4 * v11) = &std::`anonymous namespace'::money_put_w; - dword_53F5E8 = 1; - std::`anonymous namespace'::time_get_w = (int)&off_560DBC; - if ( v12 ) - _InterlockedAdd(&dword_53F5E8, 1u); - else - dword_53F5E8 = 2; - v21 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v21 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_w; - std::messages::messages(&std::`anonymous namespace'::messages_w, 1); - if ( _CRT_MT ) - _InterlockedAdd(dword_53F5B8, 1u); - else - ++dword_53F5B8[0]; - v22 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v22 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_w; - v23 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v23 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v14; - v24 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v24 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v36; - v37 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v37 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v35; - v38 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v38 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v13; - v39 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v39 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v34; - lpuexcpta = *(struct _Unwind_Exception **)(a1 + 12); - *((_DWORD *)lpuexcpta + std::locale::id::_M_id(&std::moneypunct::id)) = v25; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F58C: using guessed type signed __int32 std::moneypunct::id; -// 53F590: using guessed type signed __int32 std::moneypunct::id; -// 53F594: using guessed type signed __int32 std::moneypunct::id; -// 53F598: using guessed type signed __int32 std::moneypunct::id; -// 53F5A4: using guessed type _DWORD std::`anonymous namespace'::messages_c; -// 53F5A8: using guessed type signed __int32 dword_53F5A8[3]; -// 53F5B4: using guessed type _DWORD std::`anonymous namespace'::messages_w; -// 53F5B8: using guessed type signed __int32 dword_53F5B8[3]; -// 53F5C4: using guessed type int std::`anonymous namespace'::numpunct_c; -// 53F5C8: using guessed type int dword_53F5C8; -// 53F5CC: using guessed type int dword_53F5CC; -// 53F5D0: using guessed type int std::`anonymous namespace'::numpunct_w; -// 53F5D4: using guessed type int dword_53F5D4; -// 53F5D8: using guessed type int dword_53F5D8; -// 53F5DC: using guessed type int std::`anonymous namespace'::time_get_c; -// 53F5E0: using guessed type int dword_53F5E0; -// 53F5E4: using guessed type int std::`anonymous namespace'::time_get_w; -// 53F5E8: using guessed type int dword_53F5E8; -// 53F5EC: using guessed type int std::`anonymous namespace'::money_get_c; -// 53F5F0: using guessed type int dword_53F5F0; -// 53F5F4: using guessed type int std::`anonymous namespace'::money_get_w; -// 53F5F8: using guessed type int dword_53F5F8; -// 53F5FC: using guessed type int std::`anonymous namespace'::money_put_c; -// 53F600: using guessed type int dword_53F600; -// 53F604: using guessed type int std::`anonymous namespace'::money_put_w; -// 53F608: using guessed type int dword_53F608; -// 53F60C: using guessed type int std::`anonymous namespace'::moneypunct_cf; -// 53F610: using guessed type int dword_53F610; -// 53F614: using guessed type int dword_53F614; -// 53F618: using guessed type int std::`anonymous namespace'::moneypunct_ct; -// 53F61C: using guessed type int dword_53F61C; -// 53F620: using guessed type int dword_53F620; -// 53F624: using guessed type int std::`anonymous namespace'::moneypunct_wf; -// 53F628: using guessed type int dword_53F628; -// 53F62C: using guessed type int dword_53F62C; -// 53F630: using guessed type int std::`anonymous namespace'::moneypunct_wt; -// 53F634: using guessed type int dword_53F634; -// 53F638: using guessed type int dword_53F638; -// 53F63C: using guessed type int std::`anonymous namespace'::collate_c; -// 53F640: using guessed type int dword_53F640; -// 53F644: using guessed type int dword_53F644; -// 53F648: using guessed type int std::`anonymous namespace'::collate_w; -// 53F64C: using guessed type int dword_53F64C; -// 53F650: using guessed type int dword_53F650; -// 53F760: using guessed type signed __int32 std::collate::id; -// 53F764: using guessed type signed __int32 std::collate::id; -// 53F780: using guessed type signed __int32 std::messages::id; -// 53F784: using guessed type signed __int32 std::messages::id; -// 53F788: using guessed type signed __int32 std::numpunct::id; -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 53F790: using guessed type signed __int32 std::time_get>::id; -// 53F794: using guessed type signed __int32 std::time_get>::id; -// 53F7A0: using guessed type signed __int32 std::money_get>::id; -// 53F7A4: using guessed type signed __int32 std::money_get>::id; -// 53F7A8: using guessed type signed __int32 std::money_put>::id; -// 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; -// 55FEA0: using guessed type int (*off_55FEA0)(); -// 55FED4: using guessed type int (*off_55FED4)(); -// 55FF08: using guessed type int (*off_55FF08)(); -// 55FF3C: using guessed type int (*off_55FF3C)(); -// 560BE0: using guessed type int (*off_560BE0)(); -// 560BFC: using guessed type int (*off_560BFC)(); -// 560D4C: using guessed type int (*off_560D4C)(); -// 560D70: using guessed type int (*off_560D70)(); -// 560D94: using guessed type int (*off_560D94)(); -// 560DBC: using guessed type int (*off_560DBC)(); -// 560E54: using guessed type int (*off_560E54)(); -// 560E6C: using guessed type int (*off_560E6C)(); -// 560E84: using guessed type int (*off_560E84)(); -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (00502AE0) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_init_extra( - int a1@, - std::locale::_Impl *this, - int *a3, - int **a4, - const char *a5, - const char *a6) -{ - int v6; // eax - _DWORD *v7; // edx - int v8; // eax - int v9; // eax - void *v10; // eax - int v11; // ecx - void *v12; // eax - int v13; // edx - void *v14; // eax - int v15; // ecx - int v16; // eax - _DWORD *v17; // edx - int v18; // eax - int v19; // eax - void *v20; // eax - int v21; // ecx - void *v22; // eax - int v23; // edx - void *v24; // eax - int v25; // ecx - int v26; // [esp+14h] [ebp-74h] - int v27; // [esp+14h] [ebp-74h] - int v28; // [esp+14h] [ebp-74h] - volatile signed __int32 *v29; // [esp+14h] [ebp-74h] - int v30; // [esp+18h] [ebp-70h] - int v31; // [esp+18h] [ebp-70h] - int v32; // [esp+18h] [ebp-70h] - volatile signed __int32 *v33; // [esp+18h] [ebp-70h] - _DWORD *Block; // [esp+1Ch] [ebp-6Ch] - int v35; // [esp+20h] [ebp-68h] - _DWORD *v36; // [esp+20h] [ebp-68h] - _DWORD *v37; // [esp+24h] [ebp-64h] - _DWORD *v38; // [esp+28h] [ebp-60h] - int v39; // [esp+2Ch] [ebp-5Ch] - _DWORD *v40; // [esp+2Ch] [ebp-5Ch] - _DWORD *v41; // [esp+30h] [ebp-58h] - int v42; // [esp+34h] [ebp-54h] - _DWORD *v43; // [esp+34h] [ebp-54h] - int v44; // [esp+34h] [ebp-54h] - int v45; // [esp+34h] [ebp-54h] - int v46; // [esp+34h] [ebp-54h] - int v47; // [esp+34h] [ebp-54h] - _DWORD *v48; // [esp+34h] [ebp-54h] - int v49; // [esp+34h] [ebp-54h] - int v50; // [esp+34h] [ebp-54h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-50h] - - v41 = operator new(0xCu); - v41[1] = 0; - v6 = *(_DWORD *)this; - *v41 = &off_560D4C; - v41[2] = 0; - std::numpunct::_M_initialize_numpunct(v41, v6); - if ( _CRT_MT ) - _InterlockedAdd(v41 + 1, 1u); - else - ++v41[1]; - v42 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v42 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v41; - v7 = operator new(0xCu); - v7[1] = 0; - *v7 = &off_560BE0; - v43 = v7; - v7[2] = std::locale::facet::_S_clone_c_locale(); - if ( _CRT_MT ) - _InterlockedAdd(v43 + 1, 1u); - else - ++v43[1]; - v39 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v39 + 4 * std::locale::id::_M_id(&std::collate::id)) = v43; - v40 = operator new(0xCu); - v40[1] = 0; - v8 = *(_DWORD *)this; - *v40 = &off_55FEA0; - v40[2] = 0; - std::moneypunct::_M_initialize_moneypunct(v40, v8, 0); - if ( _CRT_MT ) - _InterlockedAdd(v40 + 1, 1u); - else - ++v40[1]; - v44 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v44 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v40; - v38 = operator new(0xCu); - v38[1] = 0; - v9 = *(_DWORD *)this; - *v38 = &off_55FED4; - v38[2] = 0; - std::moneypunct::_M_initialize_moneypunct(v38, v9, 0); - if ( _CRT_MT ) - _InterlockedAdd(v38 + 1, 1u); - else - ++v38[1]; - v45 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v45 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v38; - v10 = operator new(8u); - v11 = _CRT_MT; - *((_DWORD *)v10 + 1) = 0; - *(_DWORD *)v10 = &off_560E54; - if ( v11 ) - _InterlockedAdd((volatile signed __int32 *)v10 + 1, 1u); - else - *((_DWORD *)v10 + 1) = 1; - v30 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v30 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v10; - v12 = operator new(8u); - v13 = _CRT_MT; - *((_DWORD *)v12 + 1) = 0; - *(_DWORD *)v12 = &off_560E84; - if ( v13 ) - _InterlockedAdd((volatile signed __int32 *)v12 + 1, 1u); - else - *((_DWORD *)v12 + 1) = 1; - v31 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v31 + 4 * std::locale::id::_M_id(&std::money_put>::id)) = v12; - v14 = operator new(8u); - v15 = _CRT_MT; - *((_DWORD *)v14 + 1) = 0; - *(_DWORD *)v14 = &off_560D94; - if ( v15 ) - _InterlockedAdd((volatile signed __int32 *)v14 + 1, 1u); - else - *((_DWORD *)v14 + 1) = 1; - v32 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v32 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v14; - v33 = (volatile signed __int32 *)operator new(0x10u); - std::messages::messages(v33, *(_DWORD *)this, (int)a4, 0); - if ( _CRT_MT ) - _InterlockedAdd(v33 + 1, 1u); - else - ++*((_DWORD *)v33 + 1); - v46 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v46 + 4 * std::locale::id::_M_id(&std::messages::id)) = v33; - v37 = operator new(0xCu); - v37[1] = 0; - v16 = *(_DWORD *)this; - *v37 = &off_560D70; - v37[2] = 0; - std::numpunct::_M_initialize_numpunct(v37, v16); - if ( _CRT_MT ) - _InterlockedAdd(v37 + 1, 1u); - else - ++v37[1]; - v47 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v47 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v37; - v17 = operator new(0xCu); - v17[1] = 0; - *v17 = &off_560BFC; - v48 = v17; - v17[2] = std::locale::facet::_S_clone_c_locale(); - if ( _CRT_MT ) - _InterlockedAdd(v48 + 1, 1u); - else - ++v48[1]; - v35 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v35 + 4 * std::locale::id::_M_id(&std::collate::id)) = v48; - v36 = operator new(0xCu); - v36[1] = 0; - v18 = *a3; - *v36 = &off_55FF08; - v36[2] = 0; - std::moneypunct::_M_initialize_moneypunct(v36, v18, (int)a5); - if ( _CRT_MT ) - _InterlockedAdd(v36 + 1, 1u); - else - ++v36[1]; - v49 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v49 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v36; - Block = operator new(0xCu); - Block[1] = 0; - v19 = *a3; - *Block = &off_55FF3C; - Block[2] = 0; - std::moneypunct::_M_initialize_moneypunct(Block, v19, (int)a5); - if ( _CRT_MT ) - _InterlockedAdd(Block + 1, 1u); - else - ++Block[1]; - v50 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v50 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = Block; - v20 = operator new(8u); - v21 = _CRT_MT; - *((_DWORD *)v20 + 1) = 0; - *(_DWORD *)v20 = &off_560E6C; - if ( v21 ) - _InterlockedAdd((volatile signed __int32 *)v20 + 1, 1u); - else - *((_DWORD *)v20 + 1) = 1; - v26 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v26 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v20; - v22 = operator new(8u); - v23 = _CRT_MT; - *((_DWORD *)v22 + 1) = 0; - *(_DWORD *)v22 = &off_560E9C; - if ( v23 ) - _InterlockedAdd((volatile signed __int32 *)v22 + 1, 1u); - else - *((_DWORD *)v22 + 1) = 1; - v27 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v27 + 4 * std::locale::id::_M_id(std::money_put>::id)) = v22; - v24 = operator new(8u); - v25 = _CRT_MT; - *((_DWORD *)v24 + 1) = 0; - *(_DWORD *)v24 = &off_560DBC; - if ( v25 ) - _InterlockedAdd((volatile signed __int32 *)v24 + 1, 1u); - else - *((_DWORD *)v24 + 1) = 1; - v28 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v28 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v24; - v29 = (volatile signed __int32 *)operator new(0x10u); - std::messages::messages(v29, *(_DWORD *)this, (int)a4, 0); - if ( _CRT_MT ) - _InterlockedAdd(v29 + 1, 1u); - else - ++*((_DWORD *)v29 + 1); - lpuexcpta = *(struct _Unwind_Exception **)(a1 + 4); - *((_DWORD *)lpuexcpta + std::locale::id::_M_id(&std::messages::id)) = v29; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F58C: using guessed type signed __int32 std::moneypunct::id; -// 53F590: using guessed type signed __int32 std::moneypunct::id; -// 53F594: using guessed type signed __int32 std::moneypunct::id; -// 53F598: using guessed type signed __int32 std::moneypunct::id; -// 53F760: using guessed type signed __int32 std::collate::id; -// 53F764: using guessed type signed __int32 std::collate::id; -// 53F780: using guessed type signed __int32 std::messages::id; -// 53F784: using guessed type signed __int32 std::messages::id; -// 53F788: using guessed type signed __int32 std::numpunct::id; -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 53F790: using guessed type signed __int32 std::time_get>::id; -// 53F794: using guessed type signed __int32 std::time_get>::id; -// 53F7A0: using guessed type signed __int32 std::money_get>::id; -// 53F7A4: using guessed type signed __int32 std::money_get>::id; -// 53F7A8: using guessed type signed __int32 std::money_put>::id; -// 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; -// 55FEA0: using guessed type int (*off_55FEA0)(); -// 55FED4: using guessed type int (*off_55FED4)(); -// 55FF08: using guessed type int (*off_55FF08)(); -// 55FF3C: using guessed type int (*off_55FF3C)(); -// 560BE0: using guessed type int (*off_560BE0)(); -// 560BFC: using guessed type int (*off_560BFC)(); -// 560D4C: using guessed type int (*off_560D4C)(); -// 560D70: using guessed type int (*off_560D70)(); -// 560D94: using guessed type int (*off_560D94)(); -// 560DBC: using guessed type int (*off_560DBC)(); -// 560E54: using guessed type int (*off_560E54)(); -// 560E6C: using guessed type int (*off_560E6C)(); -// 560E84: using guessed type int (*off_560E84)(); -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (00503350) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_install_cache( - int a1@, - std::locale::_Impl *this, - const std::locale::facet *a3, - unsigned int a4) -{ - int *v4; // edx - int **v5; // ecx - int v6; // esi - volatile signed __int32 *v7; // ebx - int v8; // eax - int v9; // edx - int v10; // edx - volatile signed __int32 *v11; // edx - int v12; // eax - int v13; // esi - _DWORD *v14; // ebx - void (__fastcall *v15)(void *); // eax - int v16; // ebx - _DWORD *exception; // eax - _DWORD *v18; // eax - volatile signed __int32 *v19; // eax - - if ( !(_BYTE)`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex - && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) - { - if ( _CRT_MT ) - __gthr_win32_mutex_init_function(`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); - __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); - atexit(__tcf_0_5); - } - if ( _CRT_MT && __gthr_win32_mutex_lock((int)`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_55F348; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); - } - v4 = std::locale::_S_twinned_facets; - if ( !std::locale::_S_twinned_facets ) - { -LABEL_24: - v10 = -1; - goto LABEL_25; - } - v5 = &std::locale::_S_twinned_facets; - while ( 1 ) - { - v6 = *v4; - if ( *v4 ) - goto LABEL_6; - if ( !_CRT_MT ) - { - v6 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v6; - *v4 = v6; -LABEL_6: - v7 = v5[1]; - v8 = *v7; - if ( a3 == (const std::locale::facet *)(v6 - 1) ) - goto LABEL_15; - goto LABEL_7; - } - _InterlockedCompareExchange(v4, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v7 = v5[1]; - v8 = *v7; - if ( a3 == (const std::locale::facet *)(*v4 - 1) ) - { -LABEL_15: - v9 = v8; - if ( !v8 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(v7, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v9 = *v7; - } - else - { - v9 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v9; - *v7 = v9; - } - } - v10 = v9 - 1; - goto LABEL_25; - } -LABEL_7: - if ( v8 ) - goto LABEL_10; - if ( _CRT_MT ) - break; - v8 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v8; - *v7 = v8; -LABEL_10: - if ( a3 == (const std::locale::facet *)(v8 - 1) ) - goto LABEL_20; -LABEL_11: - v4 = v5[2]; - v5 += 2; - if ( !v4 ) - goto LABEL_24; - } - _InterlockedCompareExchange(v7, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - if ( a3 != (const std::locale::facet *)(*v7 - 1) ) - goto LABEL_11; -LABEL_20: - v11 = *v5; - v12 = **v5; - if ( !v12 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(v11, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v12 = *v11; - } - else - { - v12 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v12; - *v11 = v12; - } - } - v10 = (int)a3; - a3 = (const std::locale::facet *)(v12 - 1); -LABEL_25: - v13 = *(_DWORD *)(a1 + 12); - v14 = (_DWORD *)(v13 + 4 * (_DWORD)a3); - if ( !*v14 ) - { - v19 = (volatile signed __int32 *)((char *)this + 4); - if ( _CRT_MT ) - { - _InterlockedAdd(v19, 1u); - v16 = _CRT_MT; - v13 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v13 + 4 * (_DWORD)a3) = this; - if ( v10 == -1 ) - goto LABEL_30; - if ( v16 ) - { - _InterlockedAdd(v19, 1u); - v16 = _CRT_MT; - *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * v10) = this; - goto LABEL_30; - } - } - else - { - ++*((_DWORD *)this + 1); - *v14 = this; - if ( v10 == -1 ) - return; - } - ++*((_DWORD *)this + 1); - *(_DWORD *)(v13 + 4 * v10) = this; - return; - } - if ( this ) - { - v15 = *(void (__fastcall **)(void *))(*(_DWORD *)this + 4); - if ( v15 == std::locale::facet::~facet ) - operator delete(this); - else - ((void (__fastcall *)(std::locale::_Impl *, int))v15)(this, v10); - } - v16 = _CRT_MT; -LABEL_30: - if ( v16 ) - { - if ( __gthr_win32_mutex_unlock((int)`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) - { - v18 = __cxa_allocate_exception(4u); - *v18 = &off_55F35C; - __cxa_throw( - v18, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - } -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F6EC: using guessed type int std::locale::id::_S_refcount; -// 53FCD4: using guessed type _DWORD `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex[2]; -// 55AF80: using guessed type int *std::locale::_S_twinned_facets; -// 55B6E8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; -// 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); -// 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (005037C0) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_install_facet( - _DWORD *a1@, - std::locale::_Impl *this, - const std::locale::id *a3, - const std::locale::facet *a4) -{ - void *v4; // esi - unsigned int v5; // eax - unsigned int v6; // ecx - int v7; // ebx - int i; // eax - unsigned int v9; // ecx - int v10; // ebx - int j; // eax - volatile signed __int32 *v12; // ecx - int *v13; // ebx - std::locale::facet **v14; // ecx - int v15; // edx - volatile signed __int32 *v16; // ebx - int v17; // eax - volatile signed __int32 v18; // edx - int v19; // edx - _DWORD *v20; // eax - _DWORD *v21; // ecx - signed __int32 v22; // eax - int v23; // eax - int v24; // eax - volatile signed __int32 *v25; // ecx - signed __int32 v26; // eax - void (*v27)(void); // eax - volatile signed __int32 *v28; // edx - int v29; // ebx - int v30; // eax - _DWORD *v31; // eax - _DWORD *v32; // ecx - signed __int32 v33; // eax - void (*v34)(void); // eax - void (*v35)(void); // eax - void (*v36)(void); // eax - const std::locale::id *Val; // [esp+4h] [ebp-98h] - unsigned int v38; // [esp+10h] [ebp-8Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+1Ch] [ebp-80h] - int v41; // [esp+20h] [ebp-7Ch] - int v42; // [esp+24h] [ebp-78h] - volatile signed __int32 **v43; // [esp+24h] [ebp-78h] - _DWORD *v44; // [esp+28h] [ebp-74h] - int v45; // [esp+2Ch] [ebp-70h] - unsigned int v46; // [esp+34h] [ebp-68h] - void *v47; // [esp+38h] [ebp-64h] - int v48; // [esp+3Ch] [ebp-60h] - int v49; // [esp+40h] [ebp-5Ch] - _DWORD *v50; // [esp+44h] [ebp-58h] - _DWORD *v51; // [esp+48h] [ebp-54h] - - if ( !a3 ) - return; - v41 = *(_DWORD *)this; - if ( !*(_DWORD *)this ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange( - (volatile signed __int32 *)this, - _InterlockedIncrement(&std::locale::id::_S_refcount), - 0); - v41 = *(_DWORD *)this; - } - else - { - v41 = ++std::locale::id::_S_refcount; - *(_DWORD *)this = std::locale::id::_S_refcount; - } - } - v45 = v41 - 1; - if ( a1[2] - 1 < (unsigned int)(v41 - 1) ) - { - lpuexcpt = (struct _Unwind_Exception *)(v41 + 3); - v5 = -1; - if ( (unsigned int)(v41 + 3) < 0x20000000 ) - v5 = 4 * (v41 + 3); - v4 = (void *)a1[1]; - v46 = v5; - v44 = (_DWORD *)operator new[](v5); - v6 = a1[2]; - if ( v6 ) - { - v7 = a1[1]; - for ( i = 0; i != v6; ++i ) - v44[i] = *(_DWORD *)(v7 + 4 * i); - } - if ( (unsigned int)lpuexcpt > v6 ) - memset(&v44[v6], 0, 4 * ((_DWORD)lpuexcpt - v6)); - v47 = (void *)a1[3]; - v42 = operator new[](v46); - v9 = a1[2]; - if ( v9 ) - { - v10 = a1[3]; - for ( j = 0; j != v9; ++j ) - *(_DWORD *)(v42 + 4 * j) = *(_DWORD *)(v10 + 4 * j); - } - if ( (unsigned int)lpuexcpt > v9 ) - memset((void *)(v42 + 4 * v9), 0, 4 * ((_DWORD)lpuexcpt - v9)); - a1[2] = lpuexcpt; - a1[1] = v44; - a1[3] = v42; - if ( v4 ) - operator delete[](v4); - if ( v47 ) - operator delete[](v47); - } - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)a3 + 1, 1u); - else - ++*((_DWORD *)a3 + 1); - v12 = *(volatile signed __int32 **)(a1[1] + 4 * v45); - v43 = (volatile signed __int32 **)(a1[1] + 4 * v45); - if ( !v12 ) - { - *v43 = (volatile signed __int32 *)a3; - goto LABEL_49; - } - v13 = std::locale::_S_twinned_facets; - if ( !std::locale::_S_twinned_facets ) - goto LABEL_46; - v14 = (std::locale::facet **)&std::locale::_S_twinned_facets; - while ( 1 ) - { - v15 = *v13; - if ( *v13 ) - goto LABEL_28; - if ( !_CRT_MT ) - { - v15 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v15; - *v13 = v15; -LABEL_28: - v16 = (volatile signed __int32 *)v14[1]; - v17 = *v16; - if ( v41 == v15 ) - goto LABEL_37; - goto LABEL_29; - } - _InterlockedCompareExchange(v13, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v18 = *v13; - v16 = (volatile signed __int32 *)v14[1]; - v17 = *v16; - if ( v41 == v18 ) - { -LABEL_37: - v19 = a1[1]; - if ( !v17 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(v16, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v17 = *v16; - } - else - { - v17 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v17; - *v16 = v17; - } - } - v48 = v19 + 4 * v17 - 4; - if ( *(_DWORD *)v48 ) - { - v20 = std::locale::facet::_M_sso_shim((volatile signed __int32 *)a3, v14[1], Val); - v51 = v20; - if ( _CRT_MT ) - { - _InterlockedAdd(v20 + 1, 1u); - v21 = *(_DWORD **)v48; - if ( _CRT_MT ) - { - v22 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v48 + 4), 0xFFFFFFFF); - goto LABEL_44; - } - } - else - { - ++v20[1]; - v21 = *(_DWORD **)v48; - } - v22 = v21[1]; - v21[1] = v22 - 1; -LABEL_44: - if ( v22 == 1 ) - { - v35 = *(void (**)(void))(*v21 + 4); - if ( (char *)v35 == (char *)std::locale::facet::~facet ) - operator delete(v21); - else - v35(); - } - *(_DWORD *)v48 = v51; - v12 = *v43; - goto LABEL_46; - } - goto LABEL_71; - } -LABEL_29: - if ( v17 ) - goto LABEL_32; - if ( !_CRT_MT ) - { - v17 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v17; - *v16 = v17; -LABEL_32: - if ( v41 == v17 ) - break; - goto LABEL_33; - } - _InterlockedCompareExchange(v16, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - if ( v41 == *v16 ) - break; -LABEL_33: - v13 = (int *)v14[2]; - v14 += 2; - if ( !v13 ) - goto LABEL_71; - } - v28 = (volatile signed __int32 *)*v14; - v29 = a1[1]; - v30 = *(_DWORD *)*v14; - if ( !v30 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(v28, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v30 = *v28; - } - else - { - v30 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v30; - *v28 = v30; - } - } - v49 = v29 + 4 * v30 - 4; - if ( !*(_DWORD *)v49 ) - { -LABEL_71: - v12 = *v43; - if ( !_CRT_MT ) - goto LABEL_47; - goto LABEL_72; - } - v31 = std::locale::facet::_M_cow_shim((volatile signed __int32 *)a3, *v14, Val); - v50 = v31; - if ( !_CRT_MT ) - { - ++v31[1]; - v32 = *(_DWORD **)v49; - goto LABEL_67; - } - _InterlockedAdd(v31 + 1, 1u); - v32 = *(_DWORD **)v49; - if ( _CRT_MT ) - { - v33 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v49 + 4), 0xFFFFFFFF); - } - else - { -LABEL_67: - v33 = v32[1]; - v32[1] = v33 - 1; - } - if ( v33 == 1 ) - { - v36 = *(void (**)(void))(*v32 + 4); - if ( (char *)v36 == (char *)std::locale::facet::~facet ) - operator delete(v32); - else - v36(); - } - *(_DWORD *)v49 = v50; - v12 = *v43; -LABEL_46: - if ( _CRT_MT ) - { -LABEL_72: - if ( _InterlockedExchangeAdd(v12 + 1, 0xFFFFFFFF) == 1 ) - goto LABEL_73; - goto LABEL_48; - } -LABEL_47: - v23 = *((_DWORD *)v12 + 1); - *((_DWORD *)v12 + 1) = v23 - 1; - if ( v23 != 1 ) - goto LABEL_48; -LABEL_73: - v34 = *(void (**)(void))(*v12 + 4); - if ( (char *)v34 == (char *)std::locale::facet::~facet ) - operator delete((void *)v12); - else - v34(); -LABEL_48: - *v43 = (volatile signed __int32 *)a3; -LABEL_49: - if ( a1[2] ) - { - v38 = 0; - v24 = a1[3]; - do - { - v25 = *(volatile signed __int32 **)(v24 + 4 * v38); - if ( v25 ) - { - if ( _CRT_MT ) - { - v26 = _InterlockedExchangeAdd(v25 + 1, 0xFFFFFFFF); - } - else - { - v26 = *((_DWORD *)v25 + 1); - *((_DWORD *)v25 + 1) = v26 - 1; - } - if ( v26 == 1 ) - { - v27 = *(void (**)(void))(*v25 + 4); - if ( (char *)v27 == (char *)std::locale::facet::~facet ) - operator delete((void *)v25); - else - v27(); - } - v24 = a1[3]; - *(_DWORD *)(v24 + 4 * v38) = 0; - } - ++v38; - } - while ( a1[2] > v38 ); - } -} -// 503ACF: variable 'Val' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F6EC: using guessed type int std::locale::id::_S_refcount; -// 55AF80: using guessed type int *std::locale::_S_twinned_facets; - -//----- (00503F60) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_replace_facet( - _DWORD *a1@, - std::locale::_Impl *this, - const std::locale::_Impl *a3, - const std::locale::id *a4) -{ - int v4; // eax - unsigned int v5; // eax - const std::locale::id *v6; // eax - - v4 = *(_DWORD *)a3; - if ( !*(_DWORD *)a3 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange( - (volatile signed __int32 *)a3, - _InterlockedIncrement(&std::locale::id::_S_refcount), - 0); - v4 = *(_DWORD *)a3; - } - else - { - v4 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v4; - *(_DWORD *)a3 = v4; - } - } - v5 = v4 - 1; - if ( *((_DWORD *)this + 2) - 1 < v5 || (v6 = *(const std::locale::id **)(*((_DWORD *)this + 1) + 4 * v5)) == 0 ) - std::__throw_runtime_error((std::runtime_error *)"locale::_Impl::_M_replace_facet"); - std::locale::_Impl::_M_install_facet(a1, a3, v6, a4); -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F6EC: using guessed type int std::locale::id::_S_refcount; - -//----- (00503FE0) -------------------------------------------------------- -int __userpurge std::locale::_Impl::_M_replace_category@( - int result@, - _DWORD *a2@, - std::locale::_Impl *this, - volatile signed __int32 **a4, - const std::locale::id *const *a5) -{ - volatile signed __int32 **v5; // ebx - volatile signed __int32 *i; // edx - int v8; // eax - unsigned int v9; // eax - const std::locale::id *v10; // eax - const std::locale::facet *v11; // [esp+8h] [ebp-14h] - - v5 = a4; - for ( i = *a4; *v5; i = *v5 ) - { - v8 = *i; - if ( !*i ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(i, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v8 = *i; - } - else - { - v8 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v8; - *i = v8; - } - } - v9 = v8 - 1; - if ( *((_DWORD *)this + 2) - 1 < v9 || (v10 = *(const std::locale::id **)(*((_DWORD *)this + 1) + 4 * v9)) == 0 ) - std::__throw_runtime_error((std::runtime_error *)"locale::_Impl::_M_replace_facet"); - ++v5; - std::locale::_Impl::_M_install_facet(a2, (std::locale::_Impl *)i, v10, v11); - } - return result; -} -// 504032: variable 'v11' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F6EC: using guessed type int std::locale::id::_S_refcount; - -//----- (00504090) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_Impl( - _DWORD *a1@, - std::locale::_Impl *this, - const std::locale::_Impl *a3, - unsigned int a4) -{ - unsigned int v4; // edx - unsigned int v5; // eax - int v6; // ecx - unsigned int v7; // ebx - unsigned int v8; // eax - int v9; // eax - int v10; // edx - int v11; // ecx - int v12; // ebx - int v13; // eax - int v14; // edx - _DWORD *v15; // eax - unsigned int v16; // edx - unsigned int v17; // ecx - unsigned int v18; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-4Ch] - _DWORD *v21; // [esp+24h] [ebp-48h] - unsigned int Size; // [esp+28h] [ebp-44h] - - a1[1] = 0; - *a1 = a3; - a1[3] = 0; - v4 = *((_DWORD *)this + 2); - a1[4] = 0; - a1[2] = v4; - v5 = 4 * v4; - if ( v4 >= 0x20000000 ) - v5 = -1; - v6 = operator new[](v5); - v7 = a1[2]; - a1[1] = v6; - v8 = v7; - if ( v7 ) - { - v9 = 0; - while ( 1 ) - { - v10 = *(_DWORD *)(*((_DWORD *)this + 1) + 4 * v9); - *(_DWORD *)(v6 + 4 * v9) = v10; - if ( v10 ) - { - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(v10 + 4), 1u); - else - ++*(_DWORD *)(v10 + 4); - v7 = a1[2]; - } - if ( v7 <= ++v9 ) - break; - v6 = a1[1]; - } - v8 = 4 * v7; - if ( v7 >= 0x20000000 ) - v8 = -1; - } - v11 = operator new[](v8); - v12 = a1[2]; - a1[3] = v11; - if ( v12 ) - { - v13 = 0; - while ( 1 ) - { - v14 = *(_DWORD *)(*((_DWORD *)this + 3) + 4 * v13); - *(_DWORD *)(v11 + 4 * v13) = v14; - if ( v14 ) - { - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(v14 + 4), 1u); - else - ++*(_DWORD *)(v14 + 4); - } - if ( a1[2] <= (unsigned int)++v13 ) - break; - v11 = a1[3]; - } - } - v15 = (_DWORD *)operator new[](0x18u); - v16 = 0; - v17 = (unsigned int)(v15 + 1) & 0xFFFFFFFC; - a1[4] = v15; - *v15 = 0; - v15[5] = 0; - v18 = ((unsigned int)v15 - v17 + 24) & 0xFFFFFFFC; - do - { - *(_DWORD *)(v17 + v16) = 0; - v16 += 4; - } - while ( v16 < v18 ); - for ( lpuexcpt = 0; - lpuexcpt != (struct _Unwind_Exception *)24; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 4) ) - { - if ( !*(_DWORD *)((char *)lpuexcpt + *((_DWORD *)this + 4)) ) - break; - Size = strlen(*(const char **)((char *)lpuexcpt + *((_DWORD *)this + 4))) + 1; - v21 = (_DWORD *)((char *)lpuexcpt + a1[4]); - *v21 = operator new[](Size); - memcpy(*(void **)((char *)lpuexcpt + a1[4]), *(const void **)((char *)lpuexcpt + *((_DWORD *)this + 4)), Size); - } -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00504350) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_Impl(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3) -{ - std::locale::facet **v4; // [esp+4h] [ebp-74h] - const std::locale::facet *v5; // [esp+8h] [ebp-70h] - const std::locale::facet *v6; // [esp+8h] [ebp-70h] - const std::locale::facet *v7; // [esp+8h] [ebp-70h] - const std::locale::facet *v8; // [esp+8h] [ebp-70h] - const std::locale::facet *v9; // [esp+8h] [ebp-70h] - const std::locale::facet *v10; // [esp+8h] [ebp-70h] - const std::locale::facet *v11; // [esp+8h] [ebp-70h] - const std::locale::facet *v12; // [esp+8h] [ebp-70h] - const std::locale::facet *v13; // [esp+8h] [ebp-70h] - const std::locale::facet *v14; // [esp+8h] [ebp-70h] - const std::locale::facet *v15; // [esp+8h] [ebp-70h] - const std::locale::facet *v16; // [esp+8h] [ebp-70h] - const std::locale::facet *v17; // [esp+8h] [ebp-70h] - const std::locale::facet *v18; // [esp+8h] [ebp-70h] - const std::locale::facet *v19; // [esp+8h] [ebp-70h] - const std::locale::facet *v20; // [esp+8h] [ebp-70h] - const std::locale::facet *v21; // [esp+8h] [ebp-70h] - const std::locale::facet *v22; // [esp+8h] [ebp-70h] - const std::locale::facet *v23; // [esp+8h] [ebp-70h] - const std::locale::facet *v24; // [esp+8h] [ebp-70h] - const std::locale::facet *v25; // [esp+8h] [ebp-70h] - const std::locale::facet *v26; // [esp+8h] [ebp-70h] - const std::locale::facet *v27; // [esp+8h] [ebp-70h] - const std::locale::facet *v28; // [esp+8h] [ebp-70h] - const std::locale::facet *v29; // [esp+8h] [ebp-70h] - const std::locale::facet *v30; // [esp+8h] [ebp-70h] - const std::locale::facet *v31; // [esp+8h] [ebp-70h] - const std::locale::facet *v32; // [esp+8h] [ebp-70h] - const std::locale::facet *v33; // [esp+8h] [ebp-70h] - const std::locale::facet *v34; // [esp+8h] [ebp-70h] - const std::locale::facet *v35; // [esp+8h] [ebp-70h] - const std::locale::facet *v36; // [esp+8h] [ebp-70h] - int v37; // [esp+14h] [ebp-64h] - int v38; // [esp+14h] [ebp-64h] - int v39; // [esp+14h] [ebp-64h] - int v40; // [esp+14h] [ebp-64h] - int v41; // [esp+14h] [ebp-64h] - int v42; // [esp+14h] [ebp-64h] - int v43; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - int v45[8]; // [esp+58h] [ebp-20h] BYREF - - dword_53EEC8 = 0; - *a1 = this; - memset(&`anonymous namespace'::facet_vec, 0, 0xC0u); - a1[1] = &`anonymous namespace'::facet_vec; - a1[2] = 48; - memset(&`anonymous namespace'::cache_vec, 0, 0xC0u); - a1[3] = &`anonymous namespace'::cache_vec; - a1[4] = &`anonymous namespace'::name_vec; - dword_53EECC = 0; - dword_53EED0 = 0; - dword_53EED4 = 0; - dword_53EED8 = 0; - `anonymous namespace'::name_vec = (int)&`anonymous namespace'::name_c; - `anonymous namespace'::name_c = *(_WORD *)std::locale::facet::_S_get_c_name(); - std::ctype::ctype(`anonymous namespace'::ctype_c, 0, 0, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::ctype::id, - (const std::locale::id *)`anonymous namespace'::ctype_c, - v5); - std::codecvt::codecvt(`anonymous namespace'::codecvt_c, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)`anonymous namespace'::codecvt_c, - v6); - dword_53E524 = 1; - word_53E544 = 0; - `anonymous namespace'::numpunct_cache_c = (int)&off_5605B0; - dword_53E528 = 0; - dword_53E52C = 0; - byte_53E530 = 0; - dword_53E534 = 0; - dword_53E538 = 0; - dword_53E53C = 0; - dword_53E540 = 0; - byte_53E584 = 0; - dword_53E40C = 1; - `anonymous namespace'::numpunct_c = &off_55FCD8; - dword_53E410 = (int)&`anonymous namespace'::numpunct_cache_c; - std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_c, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::numpunct::id, - (const std::locale::id *)&`anonymous namespace'::numpunct_c, - v7); - dword_53F0A4 = 1; - `anonymous namespace'::num_get_c = &off_560C18; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::num_get>::id, - (const std::locale::id *)&`anonymous namespace'::num_get_c, - v8); - dword_53F0B4 = 1; - `anonymous namespace'::num_put_c = &off_560C90; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::num_put>::id, - (const std::locale::id *)&`anonymous namespace'::num_put_c, - v9); - dword_53EFBC = 1; - `anonymous namespace'::collate_c = &off_55FC68; - dword_53EFC0 = std::locale::facet::_S_get_c_locale(); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::collate::id, - (const std::locale::id *)&`anonymous namespace'::collate_c, - v10); - dword_53E824 = 1; - `anonymous namespace'::moneypunct_cache_cf = (int)&off_5606D4; - dword_53E828 = 0; - dword_53E82C = 0; - word_53E830 = 0; - byte_53E832 = 0; - dword_53E834 = 0; - dword_53E838 = 0; - dword_53E83C = 0; - dword_53E840 = 0; - dword_53E844 = 0; - dword_53E848 = 0; - dword_53E84C = 0; - dword_53E850 = 0; - dword_53E854 = 0; - byte_53E863 = 0; - dword_53E4B4 = 1; - `anonymous namespace'::moneypunct_cf = &off_55F820; - dword_53E4B8 = (int)&`anonymous namespace'::moneypunct_cache_cf; - std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_cf, 0, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::moneypunct::id, - (const std::locale::id *)&`anonymous namespace'::moneypunct_cf, - v11); - dword_53E884 = 1; - `anonymous namespace'::moneypunct_cache_ct = (int)&off_5606E4; - dword_53E888 = 0; - dword_53E88C = 0; - word_53E890 = 0; - byte_53E892 = 0; - dword_53E894 = 0; - dword_53E898 = 0; - dword_53E89C = 0; - dword_53E8A0 = 0; - dword_53E8A4 = 0; - dword_53E8A8 = 0; - dword_53E8AC = 0; - dword_53E8B0 = 0; - dword_53E8B4 = 0; - byte_53E8C3 = 0; - dword_53E4C0 = 1; - `anonymous namespace'::moneypunct_ct = &off_55F854; - dword_53E4C4 = (int)&`anonymous namespace'::moneypunct_cache_ct; - std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_ct, 0, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::moneypunct::id, - (const std::locale::id *)&`anonymous namespace'::moneypunct_ct, - v12); - dword_53E454 = 1; - `anonymous namespace'::money_get_c = &off_55FD78; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::money_get>::id, - (const std::locale::id *)&`anonymous namespace'::money_get_c, - v13); - dword_53E464 = 1; - `anonymous namespace'::money_put_c = &off_55FDA8; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::money_put>::id, - (const std::locale::id *)&`anonymous namespace'::money_put_c, - v14); - dword_53E664 = 1; - `anonymous namespace'::timepunct_cache_c = (int)&off_5605E4; - dword_53E668 = 0; - dword_53E66C = 0; - dword_53E670 = 0; - dword_53E674 = 0; - dword_53E678 = 0; - dword_53E67C = 0; - dword_53E680 = 0; - dword_53E684 = 0; - dword_53E688 = 0; - dword_53E68C = 0; - dword_53E690 = 0; - dword_53E694 = 0; - dword_53E698 = 0; - dword_53E69C = 0; - dword_53E6A0 = 0; - dword_53E6A4 = 0; - dword_53E6A8 = 0; - dword_53E6AC = 0; - dword_53E6B0 = 0; - dword_53E6B4 = 0; - dword_53E6B8 = 0; - dword_53E6BC = 0; - dword_53E6C0 = 0; - dword_53E6C4 = 0; - dword_53E6C8 = 0; - dword_53E6CC = 0; - dword_53E6D0 = 0; - dword_53E6D4 = 0; - dword_53E6D8 = 0; - dword_53E6DC = 0; - dword_53E6E0 = 0; - dword_53E6E4 = 0; - dword_53E6E8 = 0; - dword_53E6EC = 0; - dword_53E6F0 = 0; - dword_53E6F4 = 0; - dword_53E6F8 = 0; - dword_53E6FC = 0; - dword_53E700 = 0; - dword_53E704 = 0; - dword_53E708 = 0; - dword_53E70C = 0; - dword_53E710 = 0; - dword_53E714 = 0; - dword_53E718 = 0; - dword_53E71C = 0; - dword_53E720 = 0; - byte_53E724 = 0; - std::__timepunct::__timepunct( - `anonymous namespace'::timepunct_c, - (int)&`anonymous namespace'::timepunct_cache_c, - 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::__timepunct::id, - (const std::locale::id *)`anonymous namespace'::timepunct_c, - v15); - dword_53E424 = 1; - `anonymous namespace'::time_get_c = &off_55FD20; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::time_get>::id, - (const std::locale::id *)&`anonymous namespace'::time_get_c, - v16); - dword_53E434 = 1; - `anonymous namespace'::time_put_c = &off_560DE4; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::time_put>::id, - (const std::locale::id *)&`anonymous namespace'::time_put_c, - v17); - std::messages::messages(`anonymous namespace'::messages_c, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::messages::id, - (const std::locale::id *)`anonymous namespace'::messages_c, - v18); - std::ctype::ctype(`anonymous namespace'::ctype_w, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::ctype::id, - (const std::locale::id *)`anonymous namespace'::ctype_w, - v19); - std::codecvt::codecvt(`anonymous namespace'::codecvt_w, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)`anonymous namespace'::codecvt_w, - v20); - dword_53E5A4 = 1; - `anonymous namespace'::numpunct_cache_w = (int)&off_5605C0; - dword_53E5A8 = 0; - dword_53E5AC = 0; - byte_53E5B0 = 0; - dword_53E5B4 = 0; - dword_53E5B8 = 0; - dword_53E5BC = 0; - dword_53E5C0 = 0; - dword_53E5C4 = 0; - byte_53E644 = 0; - dword_53E418 = 1; - `anonymous namespace'::numpunct_w = &off_55FCFC; - dword_53E41C = (int)&`anonymous namespace'::numpunct_cache_w; - std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_w, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::numpunct::id, - (const std::locale::id *)&`anonymous namespace'::numpunct_w, - v21); - dword_53F0AC = 1; - `anonymous namespace'::num_get_w = &off_560C54; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::num_get>::id, - (const std::locale::id *)&`anonymous namespace'::num_get_w, - v22); - dword_53F0BC = 1; - `anonymous namespace'::num_put_w = &off_560CC0; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::num_put>::id, - (const std::locale::id *)&`anonymous namespace'::num_put_w, - v23); - dword_53EFC8 = 1; - `anonymous namespace'::collate_w = &off_55FC84; - dword_53EFCC = std::locale::facet::_S_get_c_locale(); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::collate::id, - (const std::locale::id *)&`anonymous namespace'::collate_w, - v24); - dword_53E8E4 = 1; - `anonymous namespace'::moneypunct_cache_wf = (int)&off_5606F4; - dword_53E8E8 = 0; - dword_53E8EC = 0; - byte_53E8F0 = 0; - dword_53E8F2 = 0; - dword_53E8F8 = 0; - dword_53E8FC = 0; - dword_53E900 = 0; - dword_53E904 = 0; - dword_53E908 = 0; - dword_53E90C = 0; - dword_53E910 = 0; - dword_53E914 = 0; - dword_53E918 = 0; - byte_53E932 = 0; - dword_53E4CC = 1; - `anonymous namespace'::moneypunct_wf = &off_55F888; - dword_53E4D0 = (int)&`anonymous namespace'::moneypunct_cache_wf; - std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wf, 0, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::moneypunct::id, - (const std::locale::id *)&`anonymous namespace'::moneypunct_wf, - v25); - dword_53E944 = 1; - `anonymous namespace'::moneypunct_cache_wt = (int)&off_560704; - dword_53E948 = 0; - dword_53E94C = 0; - byte_53E950 = 0; - dword_53E952 = 0; - dword_53E958 = 0; - dword_53E95C = 0; - dword_53E960 = 0; - dword_53E964 = 0; - dword_53E968 = 0; - dword_53E96C = 0; - dword_53E970 = 0; - dword_53E974 = 0; - dword_53E978 = 0; - byte_53E992 = 0; - dword_53E4D8 = 1; - `anonymous namespace'::moneypunct_wt = &off_55F8BC; - dword_53E4DC = (int)&`anonymous namespace'::moneypunct_cache_wt; - std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wt, 0, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::moneypunct::id, - (const std::locale::id *)&`anonymous namespace'::moneypunct_wt, - v26); - dword_53E45C = 1; - `anonymous namespace'::money_get_w = &off_55FD90; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::money_get>::id, - (const std::locale::id *)&`anonymous namespace'::money_get_w, - v27); - dword_53E46C = 1; - `anonymous namespace'::money_put_w = &off_55FDC0; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::money_put>::id, - (const std::locale::id *)&`anonymous namespace'::money_put_w, - v28); - dword_53E744 = 1; - `anonymous namespace'::timepunct_cache_w = (int)&off_5605F4; - dword_53E748 = 0; - dword_53E74C = 0; - dword_53E750 = 0; - dword_53E754 = 0; - dword_53E758 = 0; - dword_53E75C = 0; - dword_53E760 = 0; - dword_53E764 = 0; - dword_53E768 = 0; - dword_53E76C = 0; - dword_53E770 = 0; - dword_53E774 = 0; - dword_53E778 = 0; - dword_53E77C = 0; - dword_53E780 = 0; - dword_53E784 = 0; - dword_53E788 = 0; - dword_53E78C = 0; - dword_53E790 = 0; - dword_53E794 = 0; - dword_53E798 = 0; - dword_53E79C = 0; - dword_53E7A0 = 0; - dword_53E7A4 = 0; - dword_53E7A8 = 0; - dword_53E7AC = 0; - dword_53E7B0 = 0; - dword_53E7B4 = 0; - dword_53E7B8 = 0; - dword_53E7BC = 0; - dword_53E7C0 = 0; - dword_53E7C4 = 0; - dword_53E7C8 = 0; - dword_53E7CC = 0; - dword_53E7D0 = 0; - dword_53E7D4 = 0; - dword_53E7D8 = 0; - dword_53E7DC = 0; - dword_53E7E0 = 0; - dword_53E7E4 = 0; - dword_53E7E8 = 0; - dword_53E7EC = 0; - dword_53E7F0 = 0; - dword_53E7F4 = 0; - dword_53E7F8 = 0; - dword_53E7FC = 0; - dword_53E800 = 0; - byte_53E804 = 0; - std::__timepunct::__timepunct( - `anonymous namespace'::timepunct_w, - (int)&`anonymous namespace'::timepunct_cache_w, - 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::__timepunct::id, - (const std::locale::id *)`anonymous namespace'::timepunct_w, - v29); - dword_53E42C = 1; - `anonymous namespace'::time_get_w = &off_55FD4C; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::time_get>::id, - (const std::locale::id *)&`anonymous namespace'::time_get_w, - v30); - dword_53E43C = 1; - `anonymous namespace'::time_put_w = &off_560DF8; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::time_put>::id, - (const std::locale::id *)&`anonymous namespace'::time_put_w, - v31); - std::messages::messages(`anonymous namespace'::messages_w, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::messages::id, - (const std::locale::id *)`anonymous namespace'::messages_w, - v32); - dword_53E444 = 1; - `anonymous namespace'::codecvt_c16 = &off_560B5C; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)&`anonymous namespace'::codecvt_c16, - v33); - dword_53E44C = 1; - `anonymous namespace'::codecvt_c32 = &off_560B04; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)&`anonymous namespace'::codecvt_c32, - v34); - dword_53E4E4 = 1; - `anonymous namespace'::codecvt_c16_c8 = &off_560B30; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)&`anonymous namespace'::codecvt_c16_c8, - v35); - dword_53E4EC = 1; - `anonymous namespace'::codecvt_c32_c8 = &off_560AD8; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)&`anonymous namespace'::codecvt_c32_c8, - v36); - v45[0] = (int)&`anonymous namespace'::numpunct_cache_c; - v45[1] = (int)&`anonymous namespace'::moneypunct_cache_cf; - v45[2] = (int)&`anonymous namespace'::moneypunct_cache_ct; - v45[3] = (int)&`anonymous namespace'::numpunct_cache_w; - v45[4] = (int)&`anonymous namespace'::moneypunct_cache_wf; - v45[5] = (int)&`anonymous namespace'::moneypunct_cache_wt; - std::locale::_Impl::_M_init_extra((int)a1, (std::locale::_Impl *)v45, v4); - v37 = a1[3]; - *(_DWORD *)(v37 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_c; - v38 = a1[3]; - *(_DWORD *)(v38 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_cf; - v39 = a1[3]; - *(_DWORD *)(v39 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_ct; - v40 = a1[3]; - *(_DWORD *)(v40 + 4 * std::locale::id::_M_id(&std::__timepunct::id)) = &`anonymous namespace'::timepunct_cache_c; - v41 = a1[3]; - *(_DWORD *)(v41 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_w; - v42 = a1[3]; - *(_DWORD *)(v42 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_wf; - v43 = a1[3]; - *(_DWORD *)(v43 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_wt; - lpuexcpt = (struct _Unwind_Exception *)a1[3]; - *((_DWORD *)lpuexcpt + std::locale::id::_M_id(&std::__timepunct::id)) = &`anonymous namespace'::timepunct_cache_w; -} -// 504442: variable 'v5' is possibly undefined -// 504470: variable 'v6' is possibly undefined -// 504531: variable 'v7' is possibly undefined -// 50455F: variable 'v8' is possibly undefined -// 50458D: variable 'v9' is possibly undefined -// 5045D3: variable 'v10' is possibly undefined -// 5046CE: variable 'v11' is possibly undefined -// 5047C8: variable 'v12' is possibly undefined -// 5047F6: variable 'v13' is possibly undefined -// 504824: variable 'v14' is possibly undefined -// 504A4B: variable 'v15' is possibly undefined -// 504A79: variable 'v16' is possibly undefined -// 504AA7: variable 'v17' is possibly undefined -// 504AD5: variable 'v18' is possibly undefined -// 504B03: variable 'v19' is possibly undefined -// 504B31: variable 'v20' is possibly undefined -// 504BF3: variable 'v21' is possibly undefined -// 504C21: variable 'v22' is possibly undefined -// 504C4F: variable 'v23' is possibly undefined -// 504C95: variable 'v24' is possibly undefined -// 504D91: variable 'v25' is possibly undefined -// 504E8D: variable 'v26' is possibly undefined -// 504EBB: variable 'v27' is possibly undefined -// 504EE9: variable 'v28' is possibly undefined -// 505110: variable 'v29' is possibly undefined -// 50513E: variable 'v30' is possibly undefined -// 50516C: variable 'v31' is possibly undefined -// 50519A: variable 'v32' is possibly undefined -// 5051C8: variable 'v33' is possibly undefined -// 5051F6: variable 'v34' is possibly undefined -// 505224: variable 'v35' is possibly undefined -// 505252: variable 'v36' is possibly undefined -// 50528D: variable 'v4' is possibly undefined -// 53E3E8: using guessed type _DWORD `anonymous namespace'::messages_c[4]; -// 53E3F8: using guessed type _DWORD `anonymous namespace'::messages_w[4]; -// 53E40C: using guessed type int dword_53E40C; -// 53E410: using guessed type int dword_53E410; -// 53E418: using guessed type int dword_53E418; -// 53E41C: using guessed type int dword_53E41C; -// 53E424: using guessed type int dword_53E424; -// 53E42C: using guessed type int dword_53E42C; -// 53E434: using guessed type int dword_53E434; -// 53E43C: using guessed type int dword_53E43C; -// 53E444: using guessed type int dword_53E444; -// 53E44C: using guessed type int dword_53E44C; -// 53E454: using guessed type int dword_53E454; -// 53E45C: using guessed type int dword_53E45C; -// 53E464: using guessed type int dword_53E464; -// 53E46C: using guessed type int dword_53E46C; -// 53E470: using guessed type _DWORD `anonymous namespace'::timepunct_c[5]; -// 53E484: using guessed type _DWORD `anonymous namespace'::timepunct_w[5]; -// 53E4B4: using guessed type int dword_53E4B4; -// 53E4B8: using guessed type int dword_53E4B8; -// 53E4C0: using guessed type int dword_53E4C0; -// 53E4C4: using guessed type int dword_53E4C4; -// 53E4CC: using guessed type int dword_53E4CC; -// 53E4D0: using guessed type int dword_53E4D0; -// 53E4D8: using guessed type int dword_53E4D8; -// 53E4DC: using guessed type int dword_53E4DC; -// 53E4E4: using guessed type int dword_53E4E4; -// 53E4EC: using guessed type int dword_53E4EC; -// 53E520: using guessed type int `anonymous namespace'::numpunct_cache_c; -// 53E524: using guessed type int dword_53E524; -// 53E528: using guessed type int dword_53E528; -// 53E52C: using guessed type int dword_53E52C; -// 53E530: using guessed type char byte_53E530; -// 53E534: using guessed type int dword_53E534; -// 53E538: using guessed type int dword_53E538; -// 53E53C: using guessed type int dword_53E53C; -// 53E540: using guessed type int dword_53E540; -// 53E544: using guessed type __int16 word_53E544; -// 53E584: using guessed type char byte_53E584; -// 53E5A0: using guessed type int `anonymous namespace'::numpunct_cache_w; -// 53E5A4: using guessed type int dword_53E5A4; -// 53E5A8: using guessed type int dword_53E5A8; -// 53E5AC: using guessed type int dword_53E5AC; -// 53E5B0: using guessed type char byte_53E5B0; -// 53E5B4: using guessed type int dword_53E5B4; -// 53E5B8: using guessed type int dword_53E5B8; -// 53E5BC: using guessed type int dword_53E5BC; -// 53E5C0: using guessed type int dword_53E5C0; -// 53E5C4: using guessed type int dword_53E5C4; -// 53E644: using guessed type char byte_53E644; -// 53E660: using guessed type int `anonymous namespace'::timepunct_cache_c; -// 53E664: using guessed type int dword_53E664; -// 53E668: using guessed type int dword_53E668; -// 53E66C: using guessed type int dword_53E66C; -// 53E670: using guessed type int dword_53E670; -// 53E674: using guessed type int dword_53E674; -// 53E678: using guessed type int dword_53E678; -// 53E67C: using guessed type int dword_53E67C; -// 53E680: using guessed type int dword_53E680; -// 53E684: using guessed type int dword_53E684; -// 53E688: using guessed type int dword_53E688; -// 53E68C: using guessed type int dword_53E68C; -// 53E690: using guessed type int dword_53E690; -// 53E694: using guessed type int dword_53E694; -// 53E698: using guessed type int dword_53E698; -// 53E69C: using guessed type int dword_53E69C; -// 53E6A0: using guessed type int dword_53E6A0; -// 53E6A4: using guessed type int dword_53E6A4; -// 53E6A8: using guessed type int dword_53E6A8; -// 53E6AC: using guessed type int dword_53E6AC; -// 53E6B0: using guessed type int dword_53E6B0; -// 53E6B4: using guessed type int dword_53E6B4; -// 53E6B8: using guessed type int dword_53E6B8; -// 53E6BC: using guessed type int dword_53E6BC; -// 53E6C0: using guessed type int dword_53E6C0; -// 53E6C4: using guessed type int dword_53E6C4; -// 53E6C8: using guessed type int dword_53E6C8; -// 53E6CC: using guessed type int dword_53E6CC; -// 53E6D0: using guessed type int dword_53E6D0; -// 53E6D4: using guessed type int dword_53E6D4; -// 53E6D8: using guessed type int dword_53E6D8; -// 53E6DC: using guessed type int dword_53E6DC; -// 53E6E0: using guessed type int dword_53E6E0; -// 53E6E4: using guessed type int dword_53E6E4; -// 53E6E8: using guessed type int dword_53E6E8; -// 53E6EC: using guessed type int dword_53E6EC; -// 53E6F0: using guessed type int dword_53E6F0; -// 53E6F4: using guessed type int dword_53E6F4; -// 53E6F8: using guessed type int dword_53E6F8; -// 53E6FC: using guessed type int dword_53E6FC; -// 53E700: using guessed type int dword_53E700; -// 53E704: using guessed type int dword_53E704; -// 53E708: using guessed type int dword_53E708; -// 53E70C: using guessed type int dword_53E70C; -// 53E710: using guessed type int dword_53E710; -// 53E714: using guessed type int dword_53E714; -// 53E718: using guessed type int dword_53E718; -// 53E71C: using guessed type int dword_53E71C; -// 53E720: using guessed type int dword_53E720; -// 53E724: using guessed type char byte_53E724; -// 53E740: using guessed type int `anonymous namespace'::timepunct_cache_w; -// 53E744: using guessed type int dword_53E744; -// 53E748: using guessed type int dword_53E748; -// 53E74C: using guessed type int dword_53E74C; -// 53E750: using guessed type int dword_53E750; -// 53E754: using guessed type int dword_53E754; -// 53E758: using guessed type int dword_53E758; -// 53E75C: using guessed type int dword_53E75C; -// 53E760: using guessed type int dword_53E760; -// 53E764: using guessed type int dword_53E764; -// 53E768: using guessed type int dword_53E768; -// 53E76C: using guessed type int dword_53E76C; -// 53E770: using guessed type int dword_53E770; -// 53E774: using guessed type int dword_53E774; -// 53E778: using guessed type int dword_53E778; -// 53E77C: using guessed type int dword_53E77C; -// 53E780: using guessed type int dword_53E780; -// 53E784: using guessed type int dword_53E784; -// 53E788: using guessed type int dword_53E788; -// 53E78C: using guessed type int dword_53E78C; -// 53E790: using guessed type int dword_53E790; -// 53E794: using guessed type int dword_53E794; -// 53E798: using guessed type int dword_53E798; -// 53E79C: using guessed type int dword_53E79C; -// 53E7A0: using guessed type int dword_53E7A0; -// 53E7A4: using guessed type int dword_53E7A4; -// 53E7A8: using guessed type int dword_53E7A8; -// 53E7AC: using guessed type int dword_53E7AC; -// 53E7B0: using guessed type int dword_53E7B0; -// 53E7B4: using guessed type int dword_53E7B4; -// 53E7B8: using guessed type int dword_53E7B8; -// 53E7BC: using guessed type int dword_53E7BC; -// 53E7C0: using guessed type int dword_53E7C0; -// 53E7C4: using guessed type int dword_53E7C4; -// 53E7C8: using guessed type int dword_53E7C8; -// 53E7CC: using guessed type int dword_53E7CC; -// 53E7D0: using guessed type int dword_53E7D0; -// 53E7D4: using guessed type int dword_53E7D4; -// 53E7D8: using guessed type int dword_53E7D8; -// 53E7DC: using guessed type int dword_53E7DC; -// 53E7E0: using guessed type int dword_53E7E0; -// 53E7E4: using guessed type int dword_53E7E4; -// 53E7E8: using guessed type int dword_53E7E8; -// 53E7EC: using guessed type int dword_53E7EC; -// 53E7F0: using guessed type int dword_53E7F0; -// 53E7F4: using guessed type int dword_53E7F4; -// 53E7F8: using guessed type int dword_53E7F8; -// 53E7FC: using guessed type int dword_53E7FC; -// 53E800: using guessed type int dword_53E800; -// 53E804: using guessed type char byte_53E804; -// 53E820: using guessed type int `anonymous namespace'::moneypunct_cache_cf; -// 53E824: using guessed type int dword_53E824; -// 53E828: using guessed type int dword_53E828; -// 53E82C: using guessed type int dword_53E82C; -// 53E830: using guessed type __int16 word_53E830; -// 53E832: using guessed type char byte_53E832; -// 53E834: using guessed type int dword_53E834; -// 53E838: using guessed type int dword_53E838; -// 53E83C: using guessed type int dword_53E83C; -// 53E840: using guessed type int dword_53E840; -// 53E844: using guessed type int dword_53E844; -// 53E848: using guessed type int dword_53E848; -// 53E84C: using guessed type int dword_53E84C; -// 53E850: using guessed type int dword_53E850; -// 53E854: using guessed type int dword_53E854; -// 53E863: using guessed type char byte_53E863; -// 53E880: using guessed type int `anonymous namespace'::moneypunct_cache_ct; -// 53E884: using guessed type int dword_53E884; -// 53E888: using guessed type int dword_53E888; -// 53E88C: using guessed type int dword_53E88C; -// 53E890: using guessed type __int16 word_53E890; -// 53E892: using guessed type char byte_53E892; -// 53E894: using guessed type int dword_53E894; -// 53E898: using guessed type int dword_53E898; -// 53E89C: using guessed type int dword_53E89C; -// 53E8A0: using guessed type int dword_53E8A0; -// 53E8A4: using guessed type int dword_53E8A4; -// 53E8A8: using guessed type int dword_53E8A8; -// 53E8AC: using guessed type int dword_53E8AC; -// 53E8B0: using guessed type int dword_53E8B0; -// 53E8B4: using guessed type int dword_53E8B4; -// 53E8C3: using guessed type char byte_53E8C3; -// 53E8E0: using guessed type int `anonymous namespace'::moneypunct_cache_wf; -// 53E8E4: using guessed type int dword_53E8E4; -// 53E8E8: using guessed type int dword_53E8E8; -// 53E8EC: using guessed type int dword_53E8EC; -// 53E8F0: using guessed type char byte_53E8F0; -// 53E8F2: using guessed type int dword_53E8F2; -// 53E8F8: using guessed type int dword_53E8F8; -// 53E8FC: using guessed type int dword_53E8FC; -// 53E900: using guessed type int dword_53E900; -// 53E904: using guessed type int dword_53E904; -// 53E908: using guessed type int dword_53E908; -// 53E90C: using guessed type int dword_53E90C; -// 53E910: using guessed type int dword_53E910; -// 53E914: using guessed type int dword_53E914; -// 53E918: using guessed type int dword_53E918; -// 53E932: using guessed type char byte_53E932; -// 53E940: using guessed type int `anonymous namespace'::moneypunct_cache_wt; -// 53E944: using guessed type int dword_53E944; -// 53E948: using guessed type int dword_53E948; -// 53E94C: using guessed type int dword_53E94C; -// 53E950: using guessed type char byte_53E950; -// 53E952: using guessed type int dword_53E952; -// 53E958: using guessed type int dword_53E958; -// 53E95C: using guessed type int dword_53E95C; -// 53E960: using guessed type int dword_53E960; -// 53E964: using guessed type int dword_53E964; -// 53E968: using guessed type int dword_53E968; -// 53E96C: using guessed type int dword_53E96C; -// 53E970: using guessed type int dword_53E970; -// 53E974: using guessed type int dword_53E974; -// 53E978: using guessed type int dword_53E978; -// 53E992: using guessed type char byte_53E992; -// 53E9A0: using guessed type __int16 `anonymous namespace'::name_c; -// 53E9C0: using guessed type _DWORD `anonymous namespace'::ctype_c[136]; -// 53EBE0: using guessed type _DWORD `anonymous namespace'::ctype_w[184]; -// 53EEC4: using guessed type int `anonymous namespace'::name_vec; -// 53EEC8: using guessed type int dword_53EEC8; -// 53EECC: using guessed type int dword_53EECC; -// 53EED0: using guessed type int dword_53EED0; -// 53EED4: using guessed type int dword_53EED4; -// 53EED8: using guessed type int dword_53EED8; -// 53EFA0: using guessed type _DWORD `anonymous namespace'::codecvt_c[3]; -// 53EFAC: using guessed type _DWORD `anonymous namespace'::codecvt_w[3]; -// 53EFBC: using guessed type int dword_53EFBC; -// 53EFC0: using guessed type int dword_53EFC0; -// 53EFC8: using guessed type int dword_53EFC8; -// 53EFCC: using guessed type int dword_53EFCC; -// 53F0A4: using guessed type int dword_53F0A4; -// 53F0AC: using guessed type int dword_53F0AC; -// 53F0B4: using guessed type int dword_53F0B4; -// 53F0BC: using guessed type int dword_53F0BC; -// 53F59C: using guessed type signed __int32 std::__timepunct::id; -// 53F5A0: using guessed type signed __int32 std::__timepunct::id; -// 53F708: using guessed type signed __int32 std::moneypunct::id; -// 53F70C: using guessed type signed __int32 std::moneypunct::id; -// 53F710: using guessed type signed __int32 std::moneypunct::id; -// 53F714: using guessed type signed __int32 std::moneypunct::id; -// 53F728: using guessed type signed __int32 std::numpunct::id; -// 53F72C: using guessed type signed __int32 std::numpunct::id; -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FC68: using guessed type int (*off_55FC68)(); -// 55FC84: using guessed type int (*off_55FC84)(); -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FD20: using guessed type int (*off_55FD20)(); -// 55FD4C: using guessed type int (*off_55FD4C)(); -// 55FD78: using guessed type int (*off_55FD78)(); -// 55FD90: using guessed type int (*off_55FD90)(); -// 55FDA8: using guessed type int (*off_55FDA8)(); -// 55FDC0: using guessed type int (*off_55FDC0)(); -// 5605B0: using guessed type int (*off_5605B0)(); -// 5605C0: using guessed type int (*off_5605C0)(); -// 5605E4: using guessed type int (*off_5605E4)(); -// 5605F4: using guessed type int (*off_5605F4)(); -// 5606D4: using guessed type int (*off_5606D4)(); -// 5606E4: using guessed type int (*off_5606E4)(); -// 5606F4: using guessed type int (*off_5606F4)(); -// 560704: using guessed type int (*off_560704)(); -// 560AD8: using guessed type int (*off_560AD8)(); -// 560B04: using guessed type int (*off_560B04)(); -// 560B30: using guessed type int (*off_560B30)(); -// 560B5C: using guessed type int (*off_560B5C)(); -// 560C18: using guessed type int (*off_560C18)(); -// 560C54: using guessed type int (*off_560C54)(); -// 560C90: using guessed type int (*off_560C90)(); -// 560CC0: using guessed type int (*off_560CC0)(); -// 560DE4: using guessed type int (*off_560DE4)(); -// 560DF8: using guessed type int (*off_560DF8)(); - -//----- (00505430) -------------------------------------------------------- -void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1) -{ - _DWORD *v1; // eax - volatile signed __int32 *v2; // ecx - signed __int32 v3; // eax - void (*v4)(void); // eax - _DWORD *v5; // eax - volatile signed __int32 *v6; // ecx - signed __int32 v7; // eax - void (*v8)(void); // eax - char *v9; // edx - unsigned int v11; // [esp+14h] [ebp-58h] - int v12; // [esp+14h] [ebp-58h] - unsigned int v13; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)a1[1]; - if ( v1 ) - { - if ( !a1[2] ) - goto LABEL_13; - v11 = 0; - do - { - v2 = (volatile signed __int32 *)v1[v11]; - if ( v2 ) - { - if ( _CRT_MT ) - { - v3 = _InterlockedExchangeAdd(v2 + 1, 0xFFFFFFFF); - } - else - { - v3 = *((_DWORD *)v2 + 1); - *((_DWORD *)v2 + 1) = v3 - 1; - } - if ( v3 == 1 ) - { - v4 = *(void (**)(void))(*v2 + 4); - if ( (char *)v4 == (char *)std::locale::facet::~facet ) - operator delete((void *)v2); - else - v4(); - } - v1 = (_DWORD *)a1[1]; - } - ++v11; - } - while ( a1[2] > v11 ); - if ( v1 ) -LABEL_13: - operator delete[](v1); - } - v5 = (_DWORD *)a1[3]; - if ( v5 ) - { - if ( !a1[2] ) - goto LABEL_26; - v13 = 0; - do - { - v6 = (volatile signed __int32 *)v5[v13]; - if ( v6 ) - { - if ( _CRT_MT ) - { - v7 = _InterlockedExchangeAdd(v6 + 1, 0xFFFFFFFF); - } - else - { - v7 = *((_DWORD *)v6 + 1); - *((_DWORD *)v6 + 1) = v7 - 1; - } - if ( v7 == 1 ) - { - v8 = *(void (**)(void))(*v6 + 4); - if ( (char *)v8 == (char *)std::locale::facet::~facet ) - operator delete((void *)v6); - else - v8(); - } - v5 = (_DWORD *)a1[3]; - } - ++v13; - } - while ( a1[2] > v13 ); - if ( v5 ) -LABEL_26: - operator delete[](v5); - } - v12 = 0; - v9 = (char *)a1[4]; - if ( v9 ) - { - do - { - if ( *(_DWORD *)&v9[v12] ) - { - operator delete[](*(void **)&v9[v12]); - v9 = (char *)a1[4]; - } - v12 += 4; - } - while ( v12 != 24 ); - if ( v9 ) - operator delete[](v9); - } -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (005056A0) -------------------------------------------------------- -int *const *std::locale::facet::_S_get_c_name() -{ - return &std::locale::facet::_S_c_name; -} - -//----- (005056B0) -------------------------------------------------------- -int std::locale::facet::_S_get_c_locale() -{ - int result; // eax - - if ( _CRT_MT ) - { - __gthr_win32_once((int)&std::locale::facet::_S_once, (void (*)(void))std::locale::facet::_S_initialize_once); - return std::locale::facet::_S_c_locale; - } - else - { - result = std::locale::facet::_S_c_locale; - if ( !std::locale::facet::_S_c_locale ) - { - std::locale::facet::_S_create_c_locale( - (std::locale::facet *)&std::locale::facet::_S_c_locale, - (int **)&std::locale::facet::_S_c_name); - return std::locale::facet::_S_c_locale; - } - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F6F0: using guessed type int std::locale::facet::_S_c_locale; - -//----- (00505720) -------------------------------------------------------- -int __cdecl std::locale::facet::_S_clone_c_locale() -{ - return 0; -} - -//----- (00505730) -------------------------------------------------------- -int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **a2) -{ - int **result; // eax - - result = a2; - *(_DWORD *)this = 0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - std::__throw_runtime_error((std::runtime_error *)"locale::facet::_S_create_c_locale name not valid"); - return result; -} - -//----- (00505770) -------------------------------------------------------- -int **std::locale::facet::_S_initialize_once() -{ - return std::locale::facet::_S_create_c_locale( - (std::locale::facet *)&std::locale::facet::_S_c_locale, - (int **)&std::locale::facet::_S_c_name); -} -// 53F6F0: using guessed type int std::locale::facet::_S_c_locale; - -//----- (005057A0) -------------------------------------------------------- -std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this) -{ - std::locale::facet *result; // eax - - result = this; - *(_DWORD *)this = 0; - return result; -} - -//----- (005057B0) -------------------------------------------------------- -int __cdecl std::locale::facet::_S_lc_ctype_c_locale() -{ - return 0; -} - -//----- (005057C0) -------------------------------------------------------- -void __fastcall std::locale::facet::~facet(void *Block) -{ - operator delete(Block); -} - -//----- (005057E0) -------------------------------------------------------- -std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2) -{ - _DWORD *locale_mutex; // eax - volatile signed __int32 *v3; // edx - int v4; // eax - _DWORD *exception; // eax - std::locale::_Impl *v7; // [esp+4h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - int v9; // [esp+54h] [ebp-24h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v11; // [esp+60h] [ebp-18h] BYREF - - std::locale::_S_initialize(); - locale_mutex = `anonymous namespace'::get_locale_mutex(); - v9 = (int)locale_mutex; - if ( !_CRT_MT ) - { - lpuexcpt = (struct _Unwind_Exception *)std::locale::_S_global; - v3 = *a2; - v4 = std::locale::_S_classic; - if ( *a2 == (volatile signed __int32 *)std::locale::_S_classic ) - goto LABEL_4; - goto LABEL_3; - } - if ( __gthr_win32_mutex_lock((int)locale_mutex) ) - __gnu_cxx::__throw_concurrence_lock_error(); - lpuexcpt = (struct _Unwind_Exception *)std::locale::_S_global; - v3 = *a2; - v4 = std::locale::_S_classic; - if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) - { - if ( !_CRT_MT ) - { -LABEL_3: - ++*v3; - v4 = (int)v3; - goto LABEL_4; - } - _InterlockedAdd(v3, 1u); - v4 = (int)*a2; - } -LABEL_4: - std::locale::_S_global = v4; - std::locale::name[abi:cxx11]((int)Block, (int)a2); - if ( std::string::compare((int)Block, "*") ) - setlocale(0, (const char *)Block[0]); - if ( Block[0] != &v11 ) - operator delete(Block[0]); - if ( _CRT_MT && __gthr_win32_mutex_unlock(v9) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_55F35C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - std::locale::locale(this, lpuexcpt, v7); - return this; -} -// 5058A4: variable 'v7' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53F6E8: using guessed type int std::locale::_S_classic; -// 53F704: using guessed type int std::locale::_S_global; -// 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (005059C0) -------------------------------------------------------- -_DWORD *std::locale::classic() -{ - std::locale::_Impl *v1; // [esp+4h] [ebp-18h] - std::locale::_Impl *v2; // [esp+4h] [ebp-18h] - - if ( _CRT_MT ) - { - __gthr_win32_once((int)&std::locale::_S_once, (void (*)(void))std::locale::_S_initialize_once); - if ( std::locale::_S_classic ) - return &`anonymous namespace'::c_locale; - } - else if ( std::locale::_S_classic ) - { - return &`anonymous namespace'::c_locale; - } - std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, (unsigned int)v1); - std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; - std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; - std::locale::locale(&`anonymous namespace'::c_locale, (std::locale *)`anonymous namespace'::c_locale_impl, v2); - return &`anonymous namespace'::c_locale; -} -// 505A09: variable 'v1' is possibly undefined -// 505A31: variable 'v2' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 53E49C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; -// 53EEC0: using guessed type _DWORD `anonymous namespace'::c_locale; -// 53F6E8: using guessed type int std::locale::_S_classic; -// 53F704: using guessed type int std::locale::_S_global; - -//----- (00505A50) -------------------------------------------------------- -std::locale *__userpurge std::locale::locale@(_DWORD *a1@, std::locale *this, std::locale::_Impl *a3) -{ - std::locale *result; // eax - - result = this; - *a1 = this; - return result; -} - -//----- (00505A60) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::locale::locale@( - volatile signed __int32 **a1@, - volatile signed __int32 **this, - const std::locale *a3) -{ - volatile signed __int32 *result; // eax - - result = *this; - *a1 = *this; - if ( result != (volatile signed __int32 *)std::locale::_S_classic ) - { - if ( _CRT_MT ) - _InterlockedAdd(result, 1u); - else - ++*result; - } - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F6E8: using guessed type int std::locale::_S_classic; - -//----- (00505A90) -------------------------------------------------------- -void __fastcall std::locale::locale(_DWORD *a1) -{ - int v1; // eax - _DWORD *v2; // eax - _DWORD *exception; // eax - _DWORD *locale_mutex; // [esp+18h] [ebp-44h] - - *a1 = 0; - std::locale::_S_initialize(); - v1 = std::locale::_S_global; - *a1 = std::locale::_S_global; - if ( v1 != std::locale::_S_classic ) - { - locale_mutex = `anonymous namespace'::get_locale_mutex(); - v2 = (_DWORD *)std::locale::_S_global; - if ( !_CRT_MT ) - goto LABEL_3; - if ( __gthr_win32_mutex_lock((int)locale_mutex) ) - __gnu_cxx::__throw_concurrence_lock_error(); - v2 = (_DWORD *)std::locale::_S_global; - if ( _CRT_MT ) - { - _InterlockedAdd((volatile signed __int32 *)std::locale::_S_global, 1u); - v2 = (_DWORD *)std::locale::_S_global; - } - else - { -LABEL_3: - ++*v2; - } - *a1 = v2; - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_unlock((int)locale_mutex) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_55F35C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - } - } -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F6E8: using guessed type int std::locale::_S_classic; -// 53F704: using guessed type int std::locale::_S_global; -// 55B6F4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 55F35C: using guessed type void (__cdecl *off_55F35C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00505BE0) -------------------------------------------------------- -void __fastcall std::locale::~locale(_DWORD **a1) -{ - _DWORD *Block; // ebx - int v2; // eax - - Block = *a1; - if ( *a1 != (_DWORD *)std::locale::_S_classic ) - { - if ( !_CRT_MT ) - { - v2 = (*Block)--; - if ( v2 != 1 ) - return; -LABEL_6: - std::locale::_Impl::~_Impl(Block); - operator delete(Block); - return; - } - if ( _InterlockedExchangeAdd(Block, 0xFFFFFFFF) == 1 ) - goto LABEL_6; - } -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F6E8: using guessed type int std::locale::_S_classic; - -//----- (00505C40) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::locale::operator=( - volatile signed __int32 **this, - volatile signed __int32 **a2) -{ - volatile signed __int32 **result; // eax - int v3; // edx - volatile signed __int32 *v4; // ecx - volatile signed __int32 *Block; // ebx - volatile signed __int32 v6; // edx - volatile signed __int32 **v7; // [esp+1Ch] [ebp-10h] - - result = this; - v3 = std::locale::_S_classic; - v4 = *a2; - if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) - { - if ( _CRT_MT ) - { - _InterlockedAdd(v4, 1u); - v3 = std::locale::_S_classic; - } - else - { - ++*v4; - } - } - Block = *result; - if ( *result == (volatile signed __int32 *)v3 ) - goto LABEL_7; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(Block, 0xFFFFFFFF) != 1 ) - goto LABEL_7; - } - else - { - v6 = (*Block)--; - if ( v6 != 1 ) - { -LABEL_7: - *result = *a2; - return result; - } - } - v7 = result; - std::locale::_Impl::~_Impl(Block); - operator delete((void *)Block); - result = v7; - *v7 = *a2; - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F6E8: using guessed type int std::locale::_S_classic; - -//----- (00505CE0) -------------------------------------------------------- -char *__thiscall std::vector>::_M_realloc_insert const&>( - _DWORD *this, - char *a2, - _DWORD *a3) -{ - int v3; // edx - int v4; // eax - unsigned int v5; // ebx - _DWORD *v6; // edi - char *i; // esi - volatile signed __int32 **v8; // ecx - _DWORD *v9; // ecx - volatile signed __int32 **v10; // ecx - char *result; // eax - char *v12; // [esp+10h] [ebp-28h] - char *Block; // [esp+18h] [ebp-20h] - char *v15; // [esp+1Ch] [ebp-1Ch] - - v12 = (char *)this[1]; - Block = (char *)*this; - v3 = (int)&v12[-*this] >> 3; - if ( v3 == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = (int)&v12[-*this] >> 3; - v5 = v3 + v4; - if ( __CFADD__(v3, v4) ) - { - v5 = 0xFFFFFFF; -LABEL_11: - v15 = (char *)operator new(8 * v5); - goto LABEL_12; - } - v15 = 0; - if ( v5 ) - { - if ( v5 > 0xFFFFFFF ) - v5 = 0xFFFFFFF; - goto LABEL_11; - } -LABEL_12: - std::__shared_ptr::__shared_ptr(&v15[a2 - Block], a3); - v6 = v15; - for ( i = Block; ; i += 8 ) - { - v6 += 2; - if ( a2 == i ) - break; - std::__shared_ptr::__shared_ptr(v6 - 2, i); - v8 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); - } - while ( i != v12 ) - { - v9 = v6; - v6 += 2; - std::__shared_ptr::__shared_ptr(v9, i); - v10 = (volatile signed __int32 **)(i + 4); - i += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); - } - if ( Block ) - operator delete(Block); - this[1] = v6; - *this = v15; - result = &v15[8 * v5]; - this[2] = result; - return result; -} - -//----- (00505DEC) -------------------------------------------------------- -int __thiscall std::vector>::_M_erase(_DWORD *this, int a2) -{ - int v3; // ebx - int v4; // esi - int v5; // ebx - int v6; // edx - volatile signed __int32 **v7; // ecx - int v8; // ecx - - v3 = this[1]; - if ( a2 + 8 != v3 ) - { - v4 = a2 + 4; - v5 = (v3 - (a2 + 8)) >> 3; - while ( v5 > 0 ) - { - v6 = *(_DWORD *)(v4 + 4); - v7 = (volatile signed __int32 **)v4; - --v5; - v4 += 8; - *(_DWORD *)(v4 - 12) = v6; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v7, *(volatile signed __int32 **)v4); - } - } - v8 = this[1]; - this[1] = v8 - 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v8 - 4)); - return a2; -} - -//----- (00505E48) -------------------------------------------------------- -void __thiscall std::vector>::push_back(_DWORD *this, _DWORD *a2) -{ - char *v3; // ecx - - v3 = (char *)this[1]; - if ( v3 == (char *)this[2] ) - { - std::vector>::_M_realloc_insert const&>( - this, - v3, - a2); - } - else - { - std::__shared_ptr::__shared_ptr(v3, a2); - this[1] += 8; - } -} - -//----- (00505E84) -------------------------------------------------------- -char *__thiscall std::vector>::_M_realloc_insert const&>( - int **this, - int *a2, - int *a3) -{ - int v3; // edx - int v4; // eax - unsigned int v5; // ebx - int *v6; // edi - int *i; // esi - volatile signed __int32 **v8; // ecx - int *v9; // ecx - volatile signed __int32 **v10; // ecx - char *result; // eax - int *v12; // [esp+10h] [ebp-28h] - int *Block; // [esp+18h] [ebp-20h] - int *v15; // [esp+1Ch] [ebp-1Ch] - - v12 = this[1]; - Block = *this; - v3 = ((char *)v12 - (char *)*this) >> 3; - if ( v3 == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = ((char *)v12 - (char *)*this) >> 3; - v5 = v3 + v4; - if ( __CFADD__(v3, v4) ) - { - v5 = 0xFFFFFFF; -LABEL_11: - v15 = (int *)operator new(8 * v5); - goto LABEL_12; - } - v15 = 0; - if ( v5 ) - { - if ( v5 > 0xFFFFFFF ) - v5 = 0xFFFFFFF; - goto LABEL_11; - } -LABEL_12: - std::__shared_ptr::__shared_ptr( - (int *)((char *)v15 + (char *)a2 - (char *)Block), - a3); - v6 = v15; - for ( i = Block; ; i += 2 ) - { - v6 += 2; - if ( a2 == i ) - break; - std::__shared_ptr::__shared_ptr(v6 - 2, i); - v8 = (volatile signed __int32 **)(i + 1); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); - } - while ( i != v12 ) - { - v9 = v6; - v6 += 2; - std::__shared_ptr::__shared_ptr(v9, i); - v10 = (volatile signed __int32 **)(i + 1); - i += 2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); - } - if ( Block ) - operator delete(Block); - this[1] = v6; - *this = v15; - result = (char *)&v15[2 * v5]; - this[2] = (int *)result; - return result; -} - -//----- (00505F90) -------------------------------------------------------- -void __thiscall std::vector>::push_back(int **this, int *a2) -{ - int *v3; // ecx - - v3 = this[1]; - if ( v3 == this[2] ) - { - std::vector>::_M_realloc_insert const&>( - this, - v3, - a2); - } - else - { - std::__shared_ptr::__shared_ptr(v3, a2); - this[1] += 2; - } -} - -//----- (00505FCC) -------------------------------------------------------- -char *__thiscall std::vector>::_M_realloc_insert const&>( - _DWORD *this, - char *a2, - _DWORD *a3) -{ - int v3; // edx - int v4; // eax - unsigned int v5; // ebx - _DWORD *v6; // edi - char *i; // esi - volatile signed __int32 **v8; // ecx - _DWORD *v9; // ecx - volatile signed __int32 **v10; // ecx - char *result; // eax - char *v12; // [esp+10h] [ebp-28h] - char *Block; // [esp+18h] [ebp-20h] - char *v15; // [esp+1Ch] [ebp-1Ch] - - v12 = (char *)this[1]; - Block = (char *)*this; - v3 = (int)&v12[-*this] >> 3; - if ( v3 == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = (int)&v12[-*this] >> 3; - v5 = v3 + v4; - if ( __CFADD__(v3, v4) ) - { - v5 = 0xFFFFFFF; -LABEL_11: - v15 = (char *)operator new(8 * v5); - goto LABEL_12; - } - v15 = 0; - if ( v5 ) - { - if ( v5 > 0xFFFFFFF ) - v5 = 0xFFFFFFF; - goto LABEL_11; - } -LABEL_12: - std::__shared_ptr::__shared_ptr(&v15[a2 - Block], a3); - v6 = v15; - for ( i = Block; ; i += 8 ) - { - v6 += 2; - if ( a2 == i ) - break; - std::__shared_ptr::__shared_ptr(v6 - 2, i); - v8 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); - } - while ( i != v12 ) - { - v9 = v6; - v6 += 2; - std::__shared_ptr::__shared_ptr(v9, i); - v10 = (volatile signed __int32 **)(i + 4); - i += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); - } - if ( Block ) - operator delete(Block); - this[1] = v6; - *this = v15; - result = &v15[8 * v5]; - this[2] = result; - return result; -} - -//----- (005060D8) -------------------------------------------------------- -char *__thiscall std::vector>::push_back(_DWORD *this, _DWORD *a2) -{ - char *v3; // ecx - char *result; // eax - - v3 = (char *)this[1]; - if ( v3 == (char *)this[2] ) - return std::vector>::_M_realloc_insert const&>( - this, - v3, - a2); - result = (char *)std::__shared_ptr::__shared_ptr(v3, a2); - this[1] += 8; - return result; -} - -//----- (00506114) -------------------------------------------------------- -void __thiscall std::vector>::vector(_DWORD *this, _DWORD *a2) -{ - size_t v3; // esi - _DWORD *v4; // ecx - _DWORD *v5; // esi - _DWORD *i; // edi - int v7; // ecx - _DWORD *v8; // [esp+0h] [ebp-28h] - - v3 = a2[1] - *a2; - *this = 0; - this[1] = 0; - this[2] = 0; - if ( v3 ) - { - if ( v3 > 0x7FFFFFF8 ) - std::__throw_bad_alloc(); - v4 = operator new(v3); - } - else - { - v4 = 0; - } - *this = v4; - this[1] = v4; - this[2] = (char *)v4 + v3; - v5 = (_DWORD *)a2[1]; - for ( i = (_DWORD *)*a2; i != v5; i += 2 ) - { - v8 = i; - std::__shared_ptr::__shared_ptr(v4, v8); - v4 = (_DWORD *)(v7 + 8); - } - this[1] = v4; -} -// 506176: variable 'v7' is possibly undefined - -//----- (0050618C) -------------------------------------------------------- -void __fastcall std::vector>::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - volatile signed __int32 **v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 8 ) - { - v4 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (005061C4) -------------------------------------------------------- -void __thiscall std::vector::_M_realloc_insert( - char **this, - char *a2, - _DWORD *a3) -{ - int v3; // eax - int v4; // edx - int v5; // eax - char *v6; // eax - void **v7; // [esp+1Ch] [ebp-5Ch] - char *Block; // [esp+28h] [ebp-50h] - void **v10; // [esp+2Ch] [ebp-4Ch] - void **v11; // [esp+30h] [ebp-48h] - unsigned int lpuexcpt; // [esp+34h] [ebp-44h] - void **i; // [esp+38h] [ebp-40h] - - v7 = (void **)this[1]; - Block = *this; - v3 = -1227133513 * (((char *)v7 - *this) >> 2); - if ( v3 == 76695844 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -1227133513 * (((char *)v7 - Block) >> 2); - lpuexcpt = v4 - 1227133513 * (((char *)v7 - Block) >> 2); - if ( __CFADD__(v4, v3) ) - { - lpuexcpt = 76695844; -LABEL_11: - v11 = (void **)operator new(28 * lpuexcpt); - goto LABEL_12; - } - v11 = 0; - if ( lpuexcpt ) - { - v5 = 76695844; - if ( lpuexcpt <= 0x4924924 ) - v5 = v4 - 1227133513 * (((char *)v7 - Block) >> 2); - lpuexcpt = v5; - goto LABEL_11; - } -LABEL_12: - v6 = (char *)v11 + a2 - Block + 4; - *((_DWORD *)v6 - 1) = *a3; - std::string::basic_string(v6, (int)(a3 + 1)); - v10 = v11; - for ( i = (void **)Block; ; i += 7 ) - { - v10 += 7; - if ( a2 == (char *)i ) - break; - *(v10 - 7) = *i; - std::string::basic_string(v10 - 6, i + 1); - std::string::_M_dispose(i + 1); - } - while ( v7 != i ) - { - *v10 = *i; - std::string::basic_string(v10 + 1, i + 1); - std::string::_M_dispose(i + 1); - i += 7; - v10 += 7; - } - if ( Block ) - operator delete(Block); - *this = (char *)v11; - this[1] = (char *)v10; - this[2] = (char *)&v11[7 * lpuexcpt]; -} - -//----- (005063D8) -------------------------------------------------------- -void __thiscall std::vector::push_back(char **this, _DWORD *a2) -{ - char *v3; // ecx - char *v4; // ecx - - v3 = this[1]; - if ( v3 == this[2] ) - { - std::vector::_M_realloc_insert(this, v3, a2); - } - else - { - v4 = v3 + 4; - *((_DWORD *)v4 - 1) = *a2; - std::string::basic_string(v4, (int)(a2 + 1)); - this[1] += 28; - } -} - -//----- (00506420) -------------------------------------------------------- -void __fastcall std::vector::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - void **v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 28 ) - { - v4 = (void **)(i + 4); - std::string::_M_dispose(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (00506458) -------------------------------------------------------- -void __thiscall std::vector::_M_realloc_insert( - void **this, - int a2, - WXML::DOMLib::Token *a3) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // eax - const WXML::DOMLib::Token *v7; // [esp+4h] [ebp-64h] - int v8; // [esp+14h] [ebp-54h] - int v9; // [esp+18h] [ebp-50h] - void *Block; // [esp+20h] [ebp-48h] - unsigned int lpuexcpt; // [esp+24h] [ebp-44h] - char *v13; // [esp+28h] [ebp-40h] - - v8 = (int)this[1]; - Block = *this; - v3 = -1227133513 * ((v8 - (int)*this) >> 4); - if ( v3 == 19173961 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -1227133513 * ((v8 - (int)Block) >> 4); - lpuexcpt = v4 - 1227133513 * ((v8 - (int)Block) >> 4); - if ( __CFADD__(v4, v3) ) - { - lpuexcpt = 19173961; - } - else - { - v13 = 0; - if ( !lpuexcpt ) - goto LABEL_12; - v5 = 19173961; - if ( lpuexcpt <= 0x1249249 ) - v5 = v4 - 1227133513 * ((v8 - (int)Block) >> 4); - lpuexcpt = v5; - } - v13 = (char *)operator new(112 * lpuexcpt); -LABEL_12: - WXML::DOMLib::Token::Token((int)&v13[a2 - (_DWORD)Block], a3, v7); - v6 = std::__relocate_a_1>( - (int)Block, - a2, - (int)v13); - v9 = std::__relocate_a_1>( - a2, - v8, - v6 + 112); - if ( Block ) - operator delete(Block); - *this = v13; - this[1] = (void *)v9; - this[2] = &v13[112 * lpuexcpt]; -} -// 50653B: variable 'v7' is possibly undefined - -//----- (00506600) -------------------------------------------------------- -void __thiscall std::vector::push_back(int this, WXML::DOMLib::Token *a2) -{ - int v3; // ecx - const WXML::DOMLib::Token *v4; // [esp+4h] [ebp-14h] - - v3 = *(_DWORD *)(this + 4); - if ( v3 == *(_DWORD *)(this + 8) ) - { - std::vector::_M_realloc_insert((void **)this, v3, a2); - } - else - { - WXML::DOMLib::Token::Token(v3, a2, v4); - *(_DWORD *)(this + 4) += 112; - } -} -// 506617: variable 'v4' is possibly undefined - -//----- (0050663C) -------------------------------------------------------- -void __fastcall std::vector::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - int v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 112 ) - { - v4 = (int)i; - WXML::DOMLib::Token::~Token(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (00506674) -------------------------------------------------------- -void __thiscall std::vector::_M_realloc_insert( - struct _Unwind_Exception **this, - void **a2, - _DWORD *a3) -{ - int v3; // eax - int v4; // edx - int v5; // eax - struct _Unwind_Exception *v6; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *Block; // [esp+18h] [ebp-50h] - unsigned int v9; // [esp+1Ch] [ebp-4Ch] - struct _Unwind_Exception *v10; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - void **i; // [esp+28h] [ebp-40h] - - v6 = this[1]; - Block = *this; - v3 = -1431655765 * ((v6 - *this) >> 2); - if ( v3 == 178956970 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -1431655765 * ((v6 - Block) >> 2); - v9 = v4 - 1431655765 * ((v6 - Block) >> 2); - if ( __CFADD__(v4, v3) ) - { - v9 = 178956970; -LABEL_11: - v10 = (struct _Unwind_Exception *)operator new(12 * v9); - goto LABEL_12; - } - v10 = 0; - if ( v9 ) - { - v5 = 178956970; - if ( v9 <= 0xAAAAAAA ) - v5 = v4 - 1431655765 * ((v6 - Block) >> 2); - v9 = v5; - goto LABEL_11; - } -LABEL_12: - std::vector>::vector( - (struct _Unwind_Exception *)((char *)v10 + (char *)a2 - (char *)Block), - a3); - lpuexcpt = v10; - for ( i = (void **)Block; ; i += 3 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 12); - if ( a2 == i ) - break; - *((_DWORD *)lpuexcpt - 3) = *i; - *((_DWORD *)lpuexcpt - 2) = i[1]; - *((_DWORD *)lpuexcpt - 1) = i[2]; - i[2] = 0; - i[1] = 0; - *i = 0; - std::vector>::~vector(i); - } - while ( v6 != (struct _Unwind_Exception *)i ) - { - *(_DWORD *)lpuexcpt = *i; - *((_DWORD *)lpuexcpt + 1) = i[1]; - *((_DWORD *)lpuexcpt + 2) = i[2]; - i[2] = 0; - i[1] = 0; - *i = 0; - std::vector>::~vector(i); - i += 3; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 12); - } - if ( Block ) - operator delete(Block); - *this = v10; - this[1] = lpuexcpt; - this[2] = (struct _Unwind_Exception *)((char *)v10 + 12 * v9); -} - -//----- (00506898) -------------------------------------------------------- -void __thiscall std::vector::push_back(int this, _DWORD *a2) -{ - void **v3; // ecx - - v3 = *(void ***)(this + 4); - if ( v3 == *(void ***)(this + 8) ) - { - std::vector::_M_realloc_insert( - (struct _Unwind_Exception **)this, - v3, - a2); - } - else - { - std::vector>::vector(v3, a2); - *(_DWORD *)(this + 4) += 12; - } -} - -//----- (005068D4) -------------------------------------------------------- -void __fastcall std::vector::~vector(void ***a1) -{ - void **v2; // edi - void **i; // esi - void **v4; // ecx - - v2 = a1[1]; - for ( i = *a1; v2 != i; i += 3 ) - { - v4 = i; - std::vector>::~vector(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (0050690C) -------------------------------------------------------- -_DWORD *__thiscall std::vector::_M_realloc_insert( - _DWORD *this, - char *a2, - WXML::EXPRLib::Token *a3) -{ - int v3; // eax - int v4; // ebx - bool v5; // cf - unsigned int v6; // ebx - char *v7; // esi - char *v8; // edi - int v9; // edx - volatile signed __int32 **v10; // ecx - int *v11; // ecx - int v12; // edx - volatile signed __int32 **v13; // ecx - _DWORD *result; // eax - const WXML::EXPRLib::Token *v15; // [esp+4h] [ebp-34h] - char *v16; // [esp+10h] [ebp-28h] - char *Block; // [esp+18h] [ebp-20h] - char *v19; // [esp+1Ch] [ebp-1Ch] - - v16 = (char *)this[1]; - Block = (char *)*this; - v3 = -1227133513 * ((int)&v16[-*this] >> 2); - if ( v3 == 76695844 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -1227133513 * ((int)&v16[-*this] >> 2); - v5 = __CFADD__(v3, v4); - v6 = v3 + v4; - if ( v5 ) - { - v6 = 76695844; -LABEL_11: - v19 = (char *)operator new(28 * v6); - goto LABEL_12; - } - v19 = 0; - if ( v6 ) - { - if ( v6 > 0x4924924 ) - v6 = 76695844; - goto LABEL_11; - } -LABEL_12: - WXML::EXPRLib::Token::Token((int *)&v19[a2 - Block], a3, v15); - v7 = v19; - v8 = Block; - while ( 1 ) - { - v7 += 28; - if ( a2 == v8 ) - break; - *((_DWORD *)v7 - 7) = *(_DWORD *)v8; - v9 = *((_DWORD *)v8 + 2); - *((_DWORD *)v7 - 6) = *((_DWORD *)v8 + 1); - *((_DWORD *)v7 - 5) = v9; - *((_DWORD *)v7 - 4) = *((_DWORD *)v8 + 3); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count((int *)v7 - 3, *((_DWORD *)v8 + 4)); - v10 = (volatile signed __int32 **)(v8 + 16); - v8 += 28; - *((_DWORD *)v7 - 2) = *((_DWORD *)v8 - 2); - *((_DWORD *)v7 - 1) = *((_DWORD *)v8 - 1); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); - } - while ( v8 != v16 ) - { - v11 = (int *)(v7 + 16); - v7 += 28; - *((_DWORD *)v7 - 7) = *(_DWORD *)v8; - v12 = *((_DWORD *)v8 + 2); - *((_DWORD *)v7 - 6) = *((_DWORD *)v8 + 1); - *((_DWORD *)v7 - 5) = v12; - *((_DWORD *)v7 - 4) = *((_DWORD *)v8 + 3); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v11, *((_DWORD *)v8 + 4)); - v13 = (volatile signed __int32 **)(v8 + 16); - v8 += 28; - *((_DWORD *)v7 - 2) = *((_DWORD *)v8 - 2); - *((_DWORD *)v7 - 1) = *((_DWORD *)v8 - 1); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); - } - if ( Block ) - operator delete(Block); - result = this; - *this = v19; - this[1] = v7; - this[2] = &v19[28 * v6]; - return result; -} -// 50699B: variable 'v15' is possibly undefined - -//----- (00506A64) -------------------------------------------------------- -void __fastcall std::vector::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - volatile signed __int32 **v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 28 ) - { - v4 = (volatile signed __int32 **)(i + 16); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (00506A9C) -------------------------------------------------------- -void __thiscall std::vector::_M_realloc_insert( - night::ns_sourcemap **this, - night::ns_sourcemap *a2, - night::ns_sourcemap *a3) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // eax - int v7; // edx - const night::ns_sourcemap *v8; // [esp+4h] [ebp-64h] - night::ns_sourcemap *v9; // [esp+14h] [ebp-54h] - int v11; // [esp+1Ch] [ebp-4Ch] - night::ns_sourcemap *Block; // [esp+20h] [ebp-48h] - unsigned int lpuexcpt; // [esp+24h] [ebp-44h] - night::ns_sourcemap *v14; // [esp+28h] [ebp-40h] - - v9 = this[1]; - Block = *this; - v3 = (v9 - *this) >> 6; - if ( v3 == 0x1FFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = (v9 - Block) >> 6; - lpuexcpt = v4 + v3; - if ( __CFADD__(v4, v3) ) - { - lpuexcpt = 0x1FFFFFF; - } - else - { - v14 = 0; - if ( !lpuexcpt ) - goto LABEL_12; - v5 = 0x1FFFFFF; - if ( lpuexcpt <= 0x1FFFFFF ) - v5 = lpuexcpt; - lpuexcpt = v5; - } - v14 = (night::ns_sourcemap *)operator new(lpuexcpt << 6); -LABEL_12: - night::ns_sourcemap::ns_sourcemap((int)v14 + a2 - Block, a3, v8); - v6 = std::__uninitialized_copy::__uninit_copy( - Block, - a2, - (int)v14); - v11 = std::__uninitialized_copy::__uninit_copy( - a2, - v9, - v6 + 64); - std::_Destroy_aux::__destroy(v7, (void **)Block, (void **)v9); - if ( Block ) - operator delete(Block); - *this = v14; - this[1] = (night::ns_sourcemap *)v11; - this[2] = (night::ns_sourcemap *)((char *)v14 + 64 * lpuexcpt); -} -// 506B7B: variable 'v8' is possibly undefined -// 506BD4: variable 'v7' is possibly undefined - -//----- (00506CB0) -------------------------------------------------------- -int __thiscall std::vector::at(int *this, unsigned int a2) -{ - int v3; // ecx - unsigned int v4; // eax - - v3 = *this; - v4 = (this[1] - v3) >> 6; - if ( a2 >= v4 ) - std::__throw_out_of_range_fmt("vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", a2, v4); - return v3 + (a2 << 6); -} - -//----- (00506CE8) -------------------------------------------------------- -void __thiscall std::vector::push_back(night::ns_sourcemap **this, night::ns_sourcemap *a2) -{ - night::ns_sourcemap *v3; // ecx - const night::ns_sourcemap *v4; // [esp+4h] [ebp-14h] - - v3 = this[1]; - if ( v3 == this[2] ) - { - std::vector::_M_realloc_insert(this, v3, a2); - } - else - { - night::ns_sourcemap::ns_sourcemap((int)v3, a2, v4); - this[1] = (night::ns_sourcemap *)((char *)this[1] + 64); - } -} -// 506CFF: variable 'v4' is possibly undefined - -//----- (00506D24) -------------------------------------------------------- -void __fastcall std::vector::~vector(void ***a1, int a2) -{ - std::_Destroy_aux::__destroy(a2, *a1, a1[1]); - if ( *a1 ) - operator delete(*a1); -} - -//----- (00506D54) -------------------------------------------------------- -_DWORD *__thiscall std::vector::emplace_back(void **this, _DWORD *a2) -{ - char *v3; // eax - _DWORD *result; // eax - int v5; // esi - _DWORD *v6; // ecx - void **i; // edi - _DWORD *v8; // esi - void **v9; // ecx - _DWORD *v10; // ecx - void **v11; // ecx - void **v12; // [esp+1Ch] [ebp-2Ch] - unsigned int v13; // [esp+20h] [ebp-28h] - _DWORD *v14; // [esp+24h] [ebp-24h] - void **Block; // [esp+28h] [ebp-20h] - char *v16; // [esp+2Ch] [ebp-1Ch] - - v3 = (char *)this[1]; - v16 = v3; - if ( v3 == this[2] ) - { - v13 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); - Block = (void **)*this; - v5 = v16 - (_BYTE *)*this; - v12 = (void **)this[1]; - v14 = std::_Vector_base::_M_allocate(v13); - std::string::basic_string((_DWORD *)((char *)v14 + v5), a2); - v6 = v14; - for ( i = Block; ; i += 6 ) - { - v8 = v6 + 6; - if ( v16 == (char *)i ) - break; - std::string::basic_string(v6, i); - v9 = i; - std::string::_M_dispose(v9); - v6 = v8; - } - while ( v12 != i ) - { - v10 = v8; - v8 += 6; - std::string::basic_string(v10, i); - v11 = i; - i += 6; - std::string::_M_dispose(v11); - } - if ( Block ) - operator delete(Block); - this[1] = v8; - *this = v14; - result = &v14[6 * v13]; - this[2] = result; - } - else - { - result = std::string::basic_string(v3, a2); - this[1] = (char *)this[1] + 24; - } - return result; -} - -//----- (00506E34) -------------------------------------------------------- -void __thiscall std::vector::_M_realloc_insert(void **this, char *a2, int a3) -{ - char *v3; // ecx - void **v4; // [esp+10h] [ebp-58h] - unsigned int v5; // [esp+14h] [ebp-54h] - char *v6; // [esp+18h] [ebp-50h] - void **Block; // [esp+1Ch] [ebp-4Ch] - int v9; // [esp+24h] [ebp-44h] - void **i; // [esp+24h] [ebp-44h] - char *v11; // [esp+28h] [ebp-40h] - - v5 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); - Block = (void **)*this; - v4 = (void **)this[1]; - v9 = a2 - (_BYTE *)*this; - v11 = (char *)std::_Vector_base::_M_allocate(v5); - std::string::basic_string(&v11[v9], a3); - v3 = v11; - for ( i = Block; ; i += 6 ) - { - v6 = v3 + 24; - if ( a2 == (char *)i ) - break; - std::string::basic_string(v3, i); - std::string::_M_dispose(i); - v3 = v6; - } - while ( v4 != i ) - { - std::string::basic_string(v6, i); - std::string::_M_dispose(i); - i += 6; - v6 += 24; - } - if ( Block ) - operator delete(Block); - *this = v11; - this[1] = v6; - this[2] = &v11[24 * v5]; -} - -//----- (00506FD0) -------------------------------------------------------- -int __thiscall std::vector::_M_realloc_insert(void **this, char *a2, _DWORD *a3) -{ - int v4; // edi - _DWORD *v5; // ebx - void **v6; // edi - _DWORD *i; // ecx - void **v8; // ecx - void **v9; // ecx - int result; // eax - void **v11; // [esp+10h] [ebp-28h] - _DWORD *v12; // [esp+14h] [ebp-24h] - void **Block; // [esp+18h] [ebp-20h] - unsigned int v14; // [esp+1Ch] [ebp-1Ch] - - v14 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); - Block = (void **)*this; - v4 = a2 - (_BYTE *)*this; - v11 = (void **)this[1]; - if ( v14 ) - { - if ( v14 > 0x5555555 ) - std::__throw_bad_alloc(); - v5 = operator new(24 * v14); - } - else - { - v5 = 0; - } - std::string::basic_string((_DWORD *)((char *)v5 + v4), a3); - v6 = Block; - for ( i = v5; ; i = v12 ) - { - v12 = i + 6; - if ( a2 == (char *)v6 ) - break; - std::string::basic_string(i, v6); - v8 = v6; - v6 += 6; - std::string::_M_dispose(v8); - } - while ( v11 != v6 ) - { - std::string::basic_string(v12, v6); - v9 = v6; - v6 += 6; - std::string::_M_dispose(v9); - v12 += 6; - } - if ( Block ) - operator delete(Block); - *this = v5; - this[1] = v12; - result = 24 * v14; - this[2] = &v5[6 * v14]; - return result; -} - -//----- (005070B0) -------------------------------------------------------- -void __thiscall std::vector::push_back(int this, int a2) -{ - char *v3; // ecx - - v3 = *(char **)(this + 4); - if ( v3 == *(char **)(this + 8) ) - { - std::vector::_M_realloc_insert((void **)this, v3, a2); - } - else - { - std::string::basic_string(v3, a2); - *(_DWORD *)(this + 4) += 24; - } -} - -//----- (005070EC) -------------------------------------------------------- -void __fastcall std::vector::~vector(void ***a1, int a2) -{ - std::_Destroy_aux::__destroy(a2, *a1, a1[1]); - if ( *a1 ) - operator delete(*a1); -} - -//----- (0050711C) -------------------------------------------------------- -char *__thiscall std::vector::_M_realloc_insert( - void **this, - _BYTE *a2, - _DWORD *a3) -{ - int v3; // eax - int v4; // edx - bool v5; // cf - unsigned int v6; // eax - signed int v7; // edi - char *v8; // ebx - bool v9; // cc - int v10; // eax - char *v11; // edx - unsigned int v12; // eax - char *v13; // esi - char *result; // eax - _BYTE *v15; // [esp+10h] [ebp-28h] - _BYTE *Src; // [esp+18h] [ebp-20h] - int v18; // [esp+1Ch] [ebp-1Ch] - - v15 = this[1]; - Src = *this; - v3 = (v15 - (_BYTE *)*this) >> 2; - if ( v3 == 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = (v15 - (_BYTE *)*this) >> 2; - v5 = __CFADD__(v4, v3); - v6 = v4 + v3; - v18 = v6; - v7 = a2 - Src; - if ( v5 ) - { - v18 = 0x1FFFFFFF; - } - else - { - v8 = 0; - if ( !v6 ) - goto LABEL_12; - v9 = v6 <= 0x1FFFFFFF; - v10 = 0x1FFFFFFF; - if ( v9 ) - v10 = v18; - v18 = v10; - } - v8 = (char *)operator new(4 * v18); -LABEL_12: - *(_DWORD *)&v8[v7] = *a3; - if ( v7 > 0 ) - memmove(v8, Src, v7); - v11 = &v8[v7 + 4]; - v12 = v15 - a2; - if ( v15 - a2 > 0 ) - qmemcpy(v11, a2, v12); - v13 = &v11[v12]; - if ( Src ) - operator delete(Src); - *this = v8; - this[1] = v13; - result = &v8[4 * v18]; - this[2] = result; - return result; -} - -//----- (00507204) -------------------------------------------------------- -char *__thiscall std::vector::push_back(int this, _DWORD *a2) -{ - int v2; // eax - char *result; // eax - - v2 = *(_DWORD *)(this + 4); - if ( v2 == *(_DWORD *)(this + 8) ) - return std::vector::_M_realloc_insert( - (void **)this, - *(_BYTE **)(this + 4), - a2); - result = (char *)(v2 + 4); - *((_DWORD *)result - 1) = *a2; - *(_DWORD *)(this + 4) = result; - return result; -} - -//----- (00507234) -------------------------------------------------------- -char *__thiscall std::vector::emplace_back(void **this, char **a2) -{ - char *v3; // edx - _DWORD *v4; // edx - char *result; // eax - void *v6; // edx - signed int v7; // edi - char *v8; // eax - char *v9; // esi - char *v10; // ecx - int v11; // edi - char *v12; // edi - size_t v13; // [esp+8h] [ebp-30h] - void *v14; // [esp+10h] [ebp-28h] - void *v15; // [esp+10h] [ebp-28h] - _BYTE *v16; // [esp+14h] [ebp-24h] - char *v17; // [esp+14h] [ebp-24h] - void *Src; // [esp+18h] [ebp-20h] - unsigned int v19; // [esp+1Ch] [ebp-1Ch] - - v3 = (char *)this[1]; - if ( v3 == this[2] ) - { - v14 = this[1]; - v19 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); - v6 = v14; - Src = *this; - v7 = (_BYTE *)v14 - (_BYTE *)*this; - v16 = this[1]; - if ( v19 ) - { - if ( v19 > 0x1FFFFFFF ) - std::__throw_bad_alloc(); - v8 = (char *)operator new(4 * v19); - v6 = v14; - v9 = v8; - } - else - { - v9 = 0; - } - *(_DWORD *)&v9[v7] = *a2; - if ( v7 > 0 ) - { - v15 = v6; - memmove(v9, Src, v7); - v6 = v15; - } - v10 = &v9[v7 + 4]; - v11 = v16 - (_BYTE *)v6; - if ( v16 - (_BYTE *)v6 > 0 ) - { - v13 = v16 - (_BYTE *)v6; - v17 = v10; - memmove(v10, v6, v13); - v10 = v17; - } - v12 = &v10[v11]; - if ( Src ) - operator delete(Src); - *this = v9; - this[1] = v12; - result = &v9[4 * v19]; - this[2] = result; - } - else - { - v4 = v3 + 4; - result = *a2; - *(v4 - 1) = *a2; - this[1] = v4; - } - return result; -} - -//----- (0050732C) -------------------------------------------------------- -int __thiscall std::vector::at(_DWORD *this, unsigned int a2) -{ - if ( a2 >= (this[1] - *this) >> 2 ) - std::__throw_out_of_range_fmt( - "vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", - a2, - (this[1] - *this) >> 2); - return *this + 4 * a2; -} - -//----- (00507364) -------------------------------------------------------- -char *__thiscall std::vector::push_back(void **this, char **a2) -{ - char *v3; // edx - _DWORD *v4; // edx - char *result; // eax - void *v6; // edx - signed int v7; // edi - char *v8; // eax - char *v9; // esi - char *v10; // ecx - int v11; // edi - char *v12; // edi - size_t v13; // [esp+8h] [ebp-30h] - void *v14; // [esp+10h] [ebp-28h] - void *v15; // [esp+10h] [ebp-28h] - _BYTE *v16; // [esp+14h] [ebp-24h] - char *v17; // [esp+14h] [ebp-24h] - void *Src; // [esp+18h] [ebp-20h] - unsigned int v19; // [esp+1Ch] [ebp-1Ch] - - v3 = (char *)this[1]; - if ( v3 == this[2] ) - { - v14 = this[1]; - v19 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); - v6 = v14; - Src = *this; - v7 = (_BYTE *)v14 - (_BYTE *)*this; - v16 = this[1]; - if ( v19 ) - { - if ( v19 > 0x1FFFFFFF ) - std::__throw_bad_alloc(); - v8 = (char *)operator new(4 * v19); - v6 = v14; - v9 = v8; - } - else - { - v9 = 0; - } - *(_DWORD *)&v9[v7] = *a2; - if ( v7 > 0 ) - { - v15 = v6; - memmove(v9, Src, v7); - v6 = v15; - } - v10 = &v9[v7 + 4]; - v11 = v16 - (_BYTE *)v6; - if ( v16 - (_BYTE *)v6 > 0 ) - { - v13 = v16 - (_BYTE *)v6; - v17 = v10; - memmove(v10, v6, v13); - v10 = v17; - } - v12 = &v10[v11]; - if ( Src ) - operator delete(Src); - *this = v9; - this[1] = v12; - result = &v9[4 * v19]; - this[2] = result; - } - else - { - v4 = v3 + 4; - result = *a2; - *(v4 - 1) = *a2; - this[1] = v4; - } - return result; -} - -//----- (0050745C) -------------------------------------------------------- -char *__thiscall std::vector>>::_M_realloc_insert> const&>( - void **this, - _BYTE *a2, - _DWORD *a3) -{ - int v3; // eax - int v4; // edx - bool v5; // cf - unsigned int v6; // eax - signed int v7; // edi - char *v8; // ebx - bool v9; // cc - int v10; // eax - char *v11; // edx - unsigned int v12; // eax - char *v13; // esi - char *result; // eax - _BYTE *v15; // [esp+10h] [ebp-28h] - _BYTE *Src; // [esp+18h] [ebp-20h] - int v18; // [esp+1Ch] [ebp-1Ch] - - v15 = this[1]; - Src = *this; - v3 = (v15 - (_BYTE *)*this) >> 2; - if ( v3 == 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = (v15 - (_BYTE *)*this) >> 2; - v5 = __CFADD__(v4, v3); - v6 = v4 + v3; - v18 = v6; - v7 = a2 - Src; - if ( v5 ) - { - v18 = 0x1FFFFFFF; - } - else - { - v8 = 0; - if ( !v6 ) - goto LABEL_12; - v9 = v6 <= 0x1FFFFFFF; - v10 = 0x1FFFFFFF; - if ( v9 ) - v10 = v18; - v18 = v10; - } - v8 = (char *)operator new(4 * v18); -LABEL_12: - *(_DWORD *)&v8[v7] = *a3; - if ( v7 > 0 ) - memmove(v8, Src, v7); - v11 = &v8[v7 + 4]; - v12 = v15 - a2; - if ( v15 - a2 > 0 ) - qmemcpy(v11, a2, v12); - v13 = &v11[v12]; - if ( Src ) - operator delete(Src); - *this = v8; - this[1] = v13; - result = &v8[4 * v18]; - this[2] = result; - return result; -} - -//----- (00507544) -------------------------------------------------------- -int __thiscall std::vector>>::at( - _DWORD *this, - unsigned int a2) -{ - if ( a2 >= (this[1] - *this) >> 2 ) - std::__throw_out_of_range_fmt( - "vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", - a2, - (this[1] - *this) >> 2); - return *this + 4 * a2; -} - -//----- (0050757C) -------------------------------------------------------- -char *__thiscall std::vector>>::push_back( - int this, - _DWORD *a2) -{ - int v2; // eax - char *result; // eax - - v2 = *(_DWORD *)(this + 4); - if ( v2 == *(_DWORD *)(this + 8) ) - return std::vector>>::_M_realloc_insert> const&>( - (void **)this, - *(_BYTE **)(this + 4), - a2); - result = (char *)(v2 + 4); - *((_DWORD *)result - 1) = *a2; - *(_DWORD *)(this + 4) = result; - return result; -} - -//----- (005075AC) -------------------------------------------------------- -char **__thiscall std::vector>::_M_realloc_insert>( - char **this, - char *a2, - _DWORD *a3) -{ - int v3; // ebx - int v4; // eax - bool v5; // cf - unsigned int v6; // ebx - char *v7; // esi - int v8; // edx - _DWORD *v9; // edi - void **v10; // esi - void **v11; // ecx - int v12; // edx - _DWORD *v13; // ecx - void **v14; // ecx - int v15; // edx - char **result; // eax - void **v17; // [esp+10h] [ebp-28h] - char *Block; // [esp+18h] [ebp-20h] - char *v20; // [esp+1Ch] [ebp-1Ch] - - v17 = (void **)this[1]; - Block = *this; - v3 = ((char *)v17 - *this) >> 5; - if ( v3 == 0x3FFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = ((char *)v17 - *this) >> 5; - v5 = __CFADD__(v4, v3); - v6 = v4 + v3; - if ( v5 ) - { - v6 = 0x3FFFFFF; -LABEL_11: - v20 = (char *)operator new(32 * v6); - goto LABEL_12; - } - v20 = 0; - if ( v6 ) - { - if ( v6 > 0x3FFFFFF ) - v6 = 0x3FFFFFF; - goto LABEL_11; - } -LABEL_12: - v7 = &v20[a2 - Block]; - std::string::basic_string(v7, a3); - v8 = a3[7]; - v9 = v20; - *((_DWORD *)v7 + 6) = a3[6]; - *((_DWORD *)v7 + 7) = v8; - v10 = (void **)Block; - while ( 1 ) - { - v9 += 8; - if ( a2 == (char *)v10 ) - break; - std::string::basic_string(v9 - 8, v10); - v11 = v10; - v10 += 8; - v12 = (int)*(v10 - 1); - *(v9 - 2) = *(v10 - 2); - *(v9 - 1) = v12; - std::string::_M_dispose(v11); - } - while ( v10 != v17 ) - { - v13 = v9; - v9 += 8; - std::string::basic_string(v13, v10); - v14 = v10; - v10 += 8; - v15 = (int)*(v10 - 1); - *(v9 - 2) = *(v10 - 2); - *(v9 - 1) = v15; - std::string::_M_dispose(v14); - } - if ( Block ) - operator delete(Block); - result = this; - *this = v20; - this[1] = (char *)v9; - this[2] = &v20[32 * v6]; - return result; -} - -//----- (005076D4) -------------------------------------------------------- -void __fastcall std::vector>::~vector(void ***a1) -{ - void **v2; // edi - void **i; // esi - void **v4; // ecx - - v2 = a1[1]; - for ( i = *a1; v2 != i; i += 8 ) - { - v4 = i; - std::string::_M_dispose(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (0050770C) -------------------------------------------------------- -_DWORD *__thiscall std::vector>::emplace_back>( - _DWORD *this, - _DWORD *a2) -{ - char *v3; // ecx - _DWORD *result; // eax - - v3 = (char *)this[1]; - if ( v3 == (char *)this[2] ) - return std::vector>::_M_realloc_insert>( - this, - v3, - a2); - result = std::pair::pair(v3, a2); - this[1] += 136; - return result; -} - -//----- (0050774C) -------------------------------------------------------- -_DWORD *__thiscall std::vector>::_M_realloc_insert>( - _DWORD *this, - char *a2, - _DWORD *a3) -{ - int v3; // eax - int v4; // ebx - bool v6; // cf - unsigned int v7; // ebx - void **v8; // edi - _DWORD *i; // ecx - void **v10; // ecx - void **v11; // ecx - _DWORD *result; // eax - char *v13; // [esp+10h] [ebp-28h] - _DWORD *v14; // [esp+14h] [ebp-24h] - char *Block; // [esp+18h] [ebp-20h] - _DWORD *v16; // [esp+1Ch] [ebp-1Ch] - - v13 = (char *)this[1]; - Block = (char *)*this; - v3 = -252645135 * ((int)&v13[-*this] >> 3); - if ( v3 == 15790320 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -252645135 * ((v13 - Block) >> 3); - v6 = __CFADD__(v3, v4); - v7 = v3 + v4; - if ( v6 ) - { - v7 = 15790320; -LABEL_11: - v16 = operator new(136 * v7); - goto LABEL_12; - } - v16 = 0; - if ( v7 ) - { - if ( v7 > 0xF0F0F0 ) - v7 = 15790320; - goto LABEL_11; - } -LABEL_12: - std::pair::pair((_DWORD *)((char *)v16 + a2 - Block), a3); - v8 = (void **)Block; - for ( i = v16; ; i = v14 ) - { - v14 = i + 34; - if ( a2 == (char *)v8 ) - break; - std::pair::pair(i, v8); - v10 = v8; - v8 += 34; - std::pair::~pair(v10); - } - while ( v8 != (void **)v13 ) - { - std::pair::pair(v14, v8); - v11 = v8; - v8 += 34; - std::pair::~pair(v11); - v14 += 34; - } - if ( Block ) - operator delete(Block); - this[2] = &v16[34 * v7]; - *this = v16; - result = v14; - this[1] = v14; - return result; -} - -//----- (0050786C) -------------------------------------------------------- -void __fastcall std::vector>::~vector(void ***a1) -{ - void **v2; // edi - void **i; // esi - void **v4; // ecx - - v2 = a1[1]; - for ( i = *a1; v2 != i; i += 34 ) - { - v4 = i; - std::pair::~pair(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (005078A8) -------------------------------------------------------- -char **__thiscall std::vector>::emplace_back>( - int this, - _DWORD *a2) -{ - int v3; // esi - char **result; // eax - - v3 = *(_DWORD *)(this + 4); - if ( v3 == *(_DWORD *)(this + 8) ) - return std::vector>::_M_realloc_insert>( - (char **)this, - (char *)v3, - a2); - std::string::basic_string((_DWORD *)v3, a2); - result = (char **)a2[6]; - *(_DWORD *)(v3 + 24) = result; - *(_DWORD *)(this + 4) += 28; - return result; -} - -//----- (005078F0) -------------------------------------------------------- -char **__thiscall std::vector>::_M_realloc_insert>( - char **this, - char *a2, - _DWORD *a3) -{ - int v3; // ebx - int v4; // eax - bool v5; // cf - unsigned int v6; // ebx - char *v7; // esi - _DWORD *v8; // edi - void **v9; // esi - void **v10; // ecx - _DWORD *v11; // ecx - void **v12; // ecx - char **result; // eax - void **v14; // [esp+10h] [ebp-28h] - char *Block; // [esp+18h] [ebp-20h] - char *v17; // [esp+1Ch] [ebp-1Ch] - - v14 = (void **)this[1]; - Block = *this; - v3 = -1227133513 * (((char *)v14 - *this) >> 2); - if ( v3 == 76695844 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -1227133513 * (((char *)v14 - *this) >> 2); - v5 = __CFADD__(v4, v3); - v6 = v4 - 1227133513 * (((char *)v14 - *this) >> 2); - if ( v5 ) - { - v6 = 76695844; -LABEL_11: - v17 = (char *)operator new(28 * v6); - goto LABEL_12; - } - v17 = 0; - if ( v6 ) - { - if ( v6 > 0x4924924 ) - v6 = 76695844; - goto LABEL_11; - } -LABEL_12: - v7 = &v17[a2 - Block]; - std::string::basic_string(v7, a3); - v8 = v17; - *((_DWORD *)v7 + 6) = a3[6]; - v9 = (void **)Block; - while ( 1 ) - { - v8 += 7; - if ( a2 == (char *)v9 ) - break; - std::string::basic_string(v8 - 7, v9); - v10 = v9; - v9 += 7; - *(v8 - 1) = *(v9 - 1); - std::string::_M_dispose(v10); - } - while ( v9 != v14 ) - { - v11 = v8; - v8 += 7; - std::string::basic_string(v11, v9); - v12 = v9; - v9 += 7; - *(v8 - 1) = *(v9 - 1); - std::string::_M_dispose(v12); - } - if ( Block ) - operator delete(Block); - result = this; - *this = v17; - this[1] = (char *)v8; - this[2] = &v17[28 * v6]; - return result; -} - -//----- (00507A0C) -------------------------------------------------------- -void __fastcall std::vector>::~vector(void ***a1) -{ - void **v2; // edi - void **i; // esi - void **v4; // ecx - - v2 = a1[1]; - for ( i = *a1; v2 != i; i += 7 ) - { - v4 = i; - std::string::_M_dispose(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (00507A44) -------------------------------------------------------- -char *__thiscall std::vector>::_M_realloc_insert>( - _DWORD *this, - char *a2, - _DWORD *a3) -{ - int v3; // ebx - int v4; // eax - bool v6; // cf - unsigned int v7; // ebx - char *v8; // eax - char *v9; // esi - char *result; // eax - void **v11; // edx - void **v12; // edx - char *v13; // [esp+1Ch] [ebp-2Ch] - char *v14; // [esp+1Ch] [ebp-2Ch] - int v15; // [esp+20h] [ebp-28h] - void **v16; // [esp+20h] [ebp-28h] - void **v17; // [esp+20h] [ebp-28h] - char *v18; // [esp+24h] [ebp-24h] - char *v19; // [esp+24h] [ebp-24h] - char *Block; // [esp+28h] [ebp-20h] - char *v21; // [esp+2Ch] [ebp-1Ch] - - v18 = (char *)this[1]; - Block = (char *)*this; - v3 = -1227133513 * ((int)&v18[-*this] >> 2); - if ( v3 == 76695844 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -1227133513 * ((int)&v18[-*this] >> 2); - v6 = __CFADD__(v4, v3); - v7 = v4 - 1227133513 * ((int)&v18[-*this] >> 2); - v15 = a2 - Block; - if ( v6 ) - { - v7 = 76695844; -LABEL_11: - v21 = (char *)operator new(28 * v7); - goto LABEL_12; - } - v21 = 0; - if ( v7 ) - { - if ( v7 > 0x4924924 ) - v7 = 76695844; - goto LABEL_11; - } -LABEL_12: - *(_DWORD *)&v21[v15] = *a3; - std::string::basic_string(&v21[v15 + 4], a3 + 1); - v8 = v21; - v9 = Block; - while ( 1 ) - { - result = v8 + 28; - if ( a2 == v9 ) - break; - v13 = result; - *((_DWORD *)result - 7) = *(_DWORD *)v9; - v11 = (void **)(v9 + 4); - v9 += 28; - v16 = v11; - std::string::basic_string((_DWORD *)result - 6, v11); - std::string::_M_dispose(v16); - v8 = v13; - } - while ( v9 != v18 ) - { - v14 = result; - *(_DWORD *)result = *(_DWORD *)v9; - v12 = (void **)(v9 + 4); - v9 += 28; - v17 = v12; - std::string::basic_string((_DWORD *)result + 1, v12); - std::string::_M_dispose(v17); - result = v14 + 28; - } - if ( Block ) - { - v19 = result; - operator delete(Block); - result = v19; - } - this[1] = result; - *this = v21; - this[2] = &v21[28 * v7]; - return result; -} - -//----- (00507B84) -------------------------------------------------------- -void __fastcall std::vector>::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - void **v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 28 ) - { - v4 = (void **)(i + 4); - std::string::_M_dispose(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (00507BC0) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // esi - _DWORD *v6; // eax - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x44u); - *v4 = &off_5606D4; - v4[1] = 0; - v4[2] = 0; - v4[3] = 0; - *((_WORD *)v4 + 8) = 0; - *((_BYTE *)v4 + 18) = 0; - v4[5] = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - *((_BYTE *)v4 + 67) = 0; - this[2] = v4; - } - *((_BYTE *)v4 + 17) = 46; - v5 = std::money_base::_S_atoms; - *(_BYTE *)(this[2] + 18) = 44; - v6 = (_DWORD *)this[2]; - v6[2] = &unk_556C08; - v6[3] = 0; - v6[5] = &unk_556C08; - v6[6] = 0; - v6[7] = &unk_556C08; - v6[8] = 0; - v6[9] = &unk_556C08; - v6[10] = 0; - v6[11] = 0; - v6[12] = std::money_base::_S_default_pattern; - *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; - for ( result = 0; result != 11; ++result ) - *(_BYTE *)(this[2] + result + 56) = v5[result]; - return result; -} -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 55AF40: using guessed type int std::money_base::_S_default_pattern; -// 5606D4: using guessed type int (*off_5606D4)(); - -//----- (00507CE0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55F820; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00507D80) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55F820; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00507E20) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55F820; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00507EC0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55F820; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00507F60) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55F820; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508000) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55F820; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005080A0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55F820; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 508100: variable 'lpfctx' is possibly undefined -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508170) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55F820; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5081D0: variable 'lpfctx' is possibly undefined -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508220) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // esi - _DWORD *v6; // eax - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x44u); - *v4 = &off_5606E4; - v4[1] = 0; - v4[2] = 0; - v4[3] = 0; - *((_WORD *)v4 + 8) = 0; - *((_BYTE *)v4 + 18) = 0; - v4[5] = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - *((_BYTE *)v4 + 67) = 0; - this[2] = v4; - } - *((_BYTE *)v4 + 17) = 46; - v5 = std::money_base::_S_atoms; - *(_BYTE *)(this[2] + 18) = 44; - v6 = (_DWORD *)this[2]; - v6[2] = &unk_556C08; - v6[3] = 0; - v6[5] = &unk_556C08; - v6[6] = 0; - v6[7] = &unk_556C08; - v6[8] = 0; - v6[9] = &unk_556C08; - v6[10] = 0; - v6[11] = 0; - v6[12] = std::money_base::_S_default_pattern; - *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; - for ( result = 0; result != 11; ++result ) - *(_BYTE *)(this[2] + result + 56) = v5[result]; - return result; -} -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 55AF40: using guessed type int std::money_base::_S_default_pattern; -// 5606E4: using guessed type int (*off_5606E4)(); - -//----- (00508340) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55F854; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005083E0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55F854; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508480) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55F854; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508520) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55F854; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005085C0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55F854; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508660) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55F854; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508700) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55F854; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 508760: variable 'lpfctx' is possibly undefined -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005087D0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55F854; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 508830: variable 'lpfctx' is possibly undefined -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508880) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // ebx - int v6; // ecx - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x54u); - v4[1] = 0; - *v4 = &off_5606F4; - v4[2] = 0; - v4[3] = 0; - *((_BYTE *)v4 + 16) = 0; - *(_DWORD *)((char *)v4 + 18) = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - v4[14] = 0; - *((_BYTE *)v4 + 82) = 0; - this[2] = v4; - } - *(_DWORD *)((char *)v4 + 18) = 2883630; - v4[2] = &unk_556C08; - v5 = std::money_base::_S_atoms; - v4[13] = std::money_base::_S_default_pattern; - v4[3] = 0; - v4[6] = &unk_556C0A; - v4[7] = 0; - v4[8] = &unk_556C0A; - v4[9] = 0; - v4[10] = &unk_556C0A; - v4[11] = 0; - v4[12] = 0; - *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; - v6 = this[2]; - for ( result = 0; result != 11; ++result ) - *(_WORD *)(v6 + 2 * result + 60) = v5[result]; - return result; -} -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 55AF40: using guessed type int std::money_base::_S_default_pattern; -// 5606F4: using guessed type int (*off_5606F4)(); - -//----- (005089A0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55F888; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508A40) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55F888; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508AE0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55F888; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508B80) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55F888; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508C20) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55F888; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508CC0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55F888; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508D60) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55F888; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 508DC0: variable 'lpfctx' is possibly undefined -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508E30) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55F888; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 508E90: variable 'lpfctx' is possibly undefined -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00508EE0) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // ebx - int v6; // ecx - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x54u); - v4[1] = 0; - *v4 = &off_560704; - v4[2] = 0; - v4[3] = 0; - *((_BYTE *)v4 + 16) = 0; - *(_DWORD *)((char *)v4 + 18) = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - v4[14] = 0; - *((_BYTE *)v4 + 82) = 0; - this[2] = v4; - } - *(_DWORD *)((char *)v4 + 18) = 2883630; - v4[2] = &unk_556C08; - v5 = std::money_base::_S_atoms; - v4[13] = std::money_base::_S_default_pattern; - v4[3] = 0; - v4[6] = &unk_556C0A; - v4[7] = 0; - v4[8] = &unk_556C0A; - v4[9] = 0; - v4[10] = &unk_556C0A; - v4[11] = 0; - v4[12] = 0; - *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; - v6 = this[2]; - for ( result = 0; result != 11; ++result ) - *(_WORD *)(v6 + 2 * result + 60) = v5[result]; - return result; -} -// 53F588: using guessed type char *std::money_base::_S_atoms; -// 55AF40: using guessed type int std::money_base::_S_default_pattern; -// 560704: using guessed type int (*off_560704)(); - -//----- (00509000) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55F8BC; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005090A0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55F8BC; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00509140) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55F8BC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005091E0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55F8BC; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00509280) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_55F8BC; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00509320) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55F8BC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005093C0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55F8BC; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 509420: variable 'lpfctx' is possibly undefined -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00509490) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55F8BC; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5094F0: variable 'lpfctx' is possibly undefined -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00509540) -------------------------------------------------------- -void __thiscall std::string::_M_destroy(void **this, int a2) -{ - operator delete(*this); -} - -//----- (00509560) -------------------------------------------------------- -void __fastcall std::string::_M_dispose(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (00509590) -------------------------------------------------------- -unsigned int *__thiscall std::string::_M_replace(unsigned int *this, size_t a2, size_t a3, char *Src, size_t a5) -{ - unsigned int v5; // eax - unsigned int v7; // edi - unsigned int v8; // ecx - bool v9; // cl - unsigned int v10; // eax - unsigned int v12; // eax - size_t v13; // eax - size_t v14; // ebp - size_t v15; // edx - _BYTE *v16; // esi - unsigned int v17; // [esp+1Ch] [ebp-30h] - _BYTE *v18; // [esp+20h] [ebp-2Ch] - bool v19; // [esp+27h] [ebp-25h] - size_t Size; // [esp+28h] [ebp-24h] - size_t v21; // [esp+2Ch] [ebp-20h] - - v5 = this[1]; - if ( a5 > a3 + 0x3FFFFFFF - v5 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); - v21 = a5 - a3; - v7 = v5 + a5 - a3; - v17 = *this; - if ( (unsigned int *)*this == this + 2 ) - v8 = 15; - else - v8 = this[2]; - if ( v8 < v7 ) - { - std::string::_M_mutate((int)this, a2, a3, Src, a5); - goto LABEL_12; - } - v18 = (_BYTE *)(a2 + v17); - v19 = v5 != a3 + a2; - Size = v5 - (a3 + a2); - v9 = v19 && a3 != a5; - if ( v17 <= (unsigned int)Src && (unsigned int)Src <= v17 + v5 ) - { - if ( a5 && a3 >= a5 ) - { - if ( a5 != 1 ) - { - memmove(v18, Src, a5); - if ( !v19 || a3 == a5 ) - goto LABEL_12; -LABEL_18: - if ( Size == 1 ) - v18[a5] = v18[a3]; - else - memmove(&v18[a5], &v18[a3], Size); -LABEL_20: - if ( a3 >= a5 ) - goto LABEL_12; - v12 = (unsigned int)&v18[a3]; - if ( &v18[a3] < &Src[a5] ) - { - if ( v12 > (unsigned int)Src ) - { - v13 = v12 - (_DWORD)Src; - v14 = v13; - if ( v13 == 1 ) - { - *v18 = *Src; - } - else if ( v13 ) - { - memmove(v18, Src, v13); - } - v15 = a5 - v14; - v16 = &v18[a5]; - if ( a5 - v14 == 1 ) - { - v18[v14] = *v16; - } - else if ( v15 ) - { - memcpy(&v18[v14], v16, v15); - } - } - else if ( a5 == 1 ) - { - *v18 = Src[v21]; - } - else if ( a5 ) - { - memcpy(v18, &Src[v21], a5); - } - goto LABEL_12; - } - if ( a5 != 1 ) - { - if ( a5 ) - memmove(v18, Src, a5); - goto LABEL_12; - } -LABEL_27: - *v18 = *Src; - goto LABEL_12; - } - *v18 = *Src; - } - if ( !v9 ) - goto LABEL_20; - goto LABEL_18; - } - if ( v9 ) - { - if ( Size == 1 ) - v18[a5] = v18[a3]; - else - memmove(&v18[a5], &v18[a3], Size); - } - if ( a5 ) - { - if ( a5 != 1 ) - { - memcpy(v18, Src, a5); - goto LABEL_12; - } - goto LABEL_27; - } -LABEL_12: - v10 = *this; - this[1] = v7; - *(_BYTE *)(v10 + v7) = 0; - return this; -} - -//----- (005098A0) -------------------------------------------------------- -int __cdecl std::string::_S_compare(int a1, int a2) -{ - return a1 - a2; -} - -//----- (005098B0) -------------------------------------------------------- -int __thiscall std::string::_M_capacity(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] = a2; - return result; -} - -//----- (005098C0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (005098D0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (005098E0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (005098F0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (00509900) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t Size, char a3) -{ - _BYTE *result; // eax - int Val; // edi - - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - Val = a3; - goto LABEL_6; - } - result = (_BYTE *)*this; - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - if ( Size != 1 ) - { - Val = a3; -LABEL_6: - memset(result, Val, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; - } - *result = a3; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; -} - -//----- (005099A0) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _BYTE *Src, - int a3, - int a4) -{ - size_t Size; // ebx - _BYTE *result; // eax - - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; -} - -//----- (00509A40) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _BYTE *Src, - int a3, - int a4) -{ - size_t Size; // ebx - _BYTE *result; // eax - - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; -} - -//----- (00509AE0) -------------------------------------------------------- -unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size) -{ - unsigned int result; // eax - _BYTE *v5; // edx - unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - if ( !Src && Size ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = Size - (_DWORD)Src; - if ( Size - (unsigned int)Src > 0xF ) - { - *this = std::string::_M_create(v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, Src, Size); - result = v6[0]; - v5 = *this; - this[1] = (void *)v6[0]; - v5[result] = 0; - return result; -} -// 509AE0: using guessed type unsigned int var_1C[7]; - -//----- (00509B60) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4) -{ - size_t Size; // ebx - _BYTE *result; // eax - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; -} - -//----- (00509C10) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) -{ - size_t Size; // ebx - _BYTE *result; // eax - unsigned int v6; // ebx - unsigned int v7; // ebx - unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( a3 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - Size = a3 - (_DWORD)Src; - v8[0] = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - result = std::string::_M_create(v8, 0); - *this = result; - this[2] = v8[0]; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - v6 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v6] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v7] = 0; - return result; -} -// 509C10: using guessed type unsigned int var_10[4]; - -//----- (00509CD0) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) -{ - size_t Size; // ebx - _BYTE *result; // eax - unsigned int v6; // ebx - unsigned int v7; // ebx - unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( a3 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - Size = a3 - (_DWORD)Src; - v8[0] = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - result = std::string::_M_create(v8, 0); - *this = result; - this[2] = v8[0]; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - v6 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v6] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v7] = 0; - return result; -} -// 509CD0: using guessed type unsigned int var_10[4]; - -//----- (00509D90) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) -{ - size_t Size; // ebx - _BYTE *result; // eax - unsigned int v6; // ebx - unsigned int v7; // ebx - unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( a3 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - Size = a3 - (_DWORD)Src; - v8[0] = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - result = std::string::_M_create(v8, 0); - *this = result; - this[2] = v8[0]; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - v6 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v6] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v7] = 0; - return result; -} -// 509D90: using guessed type unsigned int var_10[4]; - -//----- (00509E50) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) -{ - size_t Size; // ebx - _BYTE *result; // eax - unsigned int v6; // ebx - unsigned int v7; // ebx - unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( a3 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - Size = a3 - (_DWORD)Src; - v8[0] = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - result = std::string::_M_create(v8, 0); - *this = result; - this[2] = v8[0]; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - v6 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v6] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v7] = 0; - return result; -} -// 509E50: using guessed type unsigned int var_10[4]; - -//----- (00509F10) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4) -{ - size_t Size; // ebx - _BYTE *result; // eax - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; -} - -//----- (00509FC0) -------------------------------------------------------- -int __fastcall std::string::_M_local_data(int a1) -{ - return a1 + 8; -} - -//----- (00509FD0) -------------------------------------------------------- -int __thiscall std::string::_M_set_length(int *this, int a2) -{ - int result; // eax - int v3; // edx - - result = a2; - v3 = *this; - this[1] = a2; - *(_BYTE *)(v3 + a2) = 0; - return result; -} - -//----- (00509FE0) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (0050A020) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (0050A060) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (0050A0A0) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (0050A0E0) -------------------------------------------------------- -void __fastcall std::string::shrink_to_fit(_DWORD *a1) -{ - unsigned int v1; // eax - - if ( (_DWORD *)*a1 == a1 + 2 ) - v1 = 15; - else - v1 = a1[2]; - if ( a1[1] < v1 ) - std::string::reserve(a1, 0); -} - -//----- (0050A180) -------------------------------------------------------- -_DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t a2, int a3, size_t a4, char a5) -{ - int v6; // edx - _DWORD *v7; // eax - unsigned int v8; // esi - unsigned int v9; // ebp - size_t Size; // edx - size_t v11; // eax - _BYTE *Src; // ecx - _BYTE *v13; // eax - _BYTE *v14; // eax - - v6 = this[1]; - if ( a4 > a3 + 0x3FFFFFFF - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - v7 = (_DWORD *)*this; - v8 = v6 + a4 - a3; - if ( (_DWORD *)*this == this + 2 ) - v9 = 15; - else - v9 = this[2]; - if ( v9 < v8 ) - { - std::string::_M_mutate((int)this, a2, a3, 0, a4); - v7 = (_DWORD *)*this; - if ( !a4 ) - goto LABEL_13; - } - else - { - Size = v6 - (a3 + a2); - if ( !Size || a3 == a4 ) - { -LABEL_9: - if ( !a4 ) - goto LABEL_13; - goto LABEL_10; - } - v11 = (size_t)v7 + a2; - Src = (_BYTE *)(v11 + a3); - v13 = (_BYTE *)(a4 + v11); - if ( Size != 1 ) - { - memmove(v13, Src, Size); - v7 = (_DWORD *)*this; - goto LABEL_9; - } - *v13 = *Src; - v7 = (_DWORD *)*this; - if ( !a4 ) - goto LABEL_13; - } -LABEL_10: - v14 = (char *)v7 + a2; - if ( a4 == 1 ) - *v14 = a5; - else - memset(v14, a5, a4); - v7 = (_DWORD *)*this; -LABEL_13: - this[1] = v8; - *((_BYTE *)v7 + v8) = 0; - return this; -} - -//----- (0050A2A0) -------------------------------------------------------- -int __fastcall std::string::_M_get_allocator(int a1) -{ - return a1; -} - -//----- (0050A2B0) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t Size, char a3) -{ - _BYTE *result; // eax - - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; -LABEL_6: - memset(result, a3, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; - } - result = (_BYTE *)*this; - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - if ( Size != 1 ) - goto LABEL_6; - *result = a3; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; -} - -//----- (0050A350) -------------------------------------------------------- -unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) -{ - if ( a2 >= this[1] ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); - return *this + a2; -} - -//----- (0050A380) -------------------------------------------------------- -int __fastcall std::string::end(_DWORD *a1) -{ - return a1[1] + *a1; -} - -//----- (0050A390) -------------------------------------------------------- -int __fastcall std::string::back(_DWORD *a1) -{ - return *a1 + a1[1] - 1; -} - -//----- (0050A3A0) -------------------------------------------------------- -_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (0050A3B0) -------------------------------------------------------- -_BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *a2) -{ - _BYTE *result; // eax - _BYTE *v3; // edi - _BYTE *v4; // esi - _BYTE *v5; // edx - int v6; // ebp - int v7; // edx - int v8; // esi - int v9; // edx - int v10; // edi - int v11; // ebp - int v12; // edi - int v13; // [esp+0h] [ebp-28h] - int v14; // [esp+4h] [ebp-24h] - - result = a2; - if ( this != a2 ) - { - v3 = (_BYTE *)*this; - v4 = (_BYTE *)*a2; - v5 = a2 + 2; - if ( this + 2 == (_DWORD *)*this ) - { - if ( v5 == v4 ) - { - v8 = a2[1]; - if ( this[1] ) - { - if ( !v8 ) - { - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - a2[1] = this[1]; - result = (_BYTE *)*this; - this[1] = 0; - *result = 0; - return result; - } - v11 = a2[2]; - v12 = a2[3]; - v13 = a2[4]; - v14 = a2[5]; - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - v9 = this[1]; - this[3] = v12; - this[2] = v11; - this[4] = v13; - this[5] = v14; - v8 = a2[1]; - } - else - { - if ( v8 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - this[1] = a2[1]; - a2[1] = 0; - result = (_BYTE *)*a2; - *(_BYTE *)*a2 = 0; - return result; - } - v9 = 0; - } - } - else - { - v10 = a2[2]; - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - *this = v4; - *a2 = v5; - v9 = this[1]; - this[2] = v10; - v8 = a2[1]; - } - } - else - { - v6 = this[2]; - if ( v5 == v4 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - *a2 = v3; - *this = this + 2; - } - else - { - *this = v4; - v7 = a2[2]; - *a2 = v3; - this[2] = v7; - } - a2[2] = v6; - v8 = a2[1]; - v9 = this[1]; - } - this[1] = v8; - a2[1] = v9; - } - return result; -} - -//----- (0050A520) -------------------------------------------------------- -int __fastcall std::string::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0050A530) -------------------------------------------------------- -_BYTE *__fastcall std::string::clear(int a1) -{ - _BYTE *result; // eax - - result = *(_BYTE **)a1; - *(_DWORD *)(a1 + 4) = 0; - *result = 0; - return result; -} - -//----- (0050A540) -------------------------------------------------------- -char *__thiscall std::string::erase(int *this, char *a2) -{ - int v3; // edx - int v4; // eax - char *v5; // esi - size_t Size; // edi - - v3 = *this; - v4 = this[1] - 1; - v5 = &a2[-*this]; - Size = v4 - (_DWORD)v5; - if ( (char *)v4 != v5 ) - { - if ( Size == 1 ) - *a2 = a2[1]; - else - memmove(a2, a2 + 1, Size); - v3 = *this; - v4 = this[1] - 1; - } - this[1] = v4; - *(_BYTE *)(v3 + v4) = 0; - return &v5[*this]; -} - -//----- (0050A5B0) -------------------------------------------------------- -int __thiscall std::string::erase(int *this, _BYTE *a2, int a3) -{ - int v4; // esi - - v4 = (int)&a2[-*this]; - if ( a3 == this[1] + *this ) - { - this[1] = v4; - *a2 = 0; - } - else - { - std::string::_M_erase(this, v4, a3 - (_DWORD)a2); - } - return v4 + *this; -} - -//----- (0050A610) -------------------------------------------------------- -int __thiscall std::string::erase(int *this, int a2) -{ - int v3; // ebx - - v3 = a2 - *this; - std::string::_M_erase(this, v3, 1); - return v3 + *this; -} - -//----- (0050A640) -------------------------------------------------------- -int __thiscall std::string::erase(int *this, _BYTE *a2, int a3) -{ - int v4; // esi - - v4 = (int)&a2[-*this]; - if ( a3 == this[1] + *this ) - { - this[1] = v4; - *a2 = 0; - } - else - { - std::string::_M_erase(this, v4, a3 - (_DWORD)a2); - } - return v4 + *this; -} - -//----- (0050A6A0) -------------------------------------------------------- -int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3) -{ - int *result; // eax - unsigned int v4; // edx - unsigned int v5; // edx - int v6; // edx - - result = this; - v4 = this[1]; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - a2, - v4); - if ( a3 == -1 ) - { - v6 = *this; - this[1] = a2; - *(_BYTE *)(v6 + a2) = 0; - } - else if ( a3 ) - { - v5 = v4 - a2; - if ( v5 > a3 ) - v5 = a3; - std::string::_M_erase(this, a2, v5); - return this; - } - return result; -} - -//----- (0050A720) -------------------------------------------------------- -int __fastcall std::string::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0050A730) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, char *Str) -{ - unsigned int Size; // eax - size_t v4; // ebp - _DWORD *v5; // edx - unsigned int v6; // edi - unsigned int v7; // ecx - _BYTE *v8; // edx - _DWORD *result; // eax - - Size = strlen(Str); - v4 = this[1]; - if ( 0x3FFFFFFF - v4 < Size ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = v4 + Size; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Str, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Str; - else - memcpy(v8, Str, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - result = this; - *((_BYTE *)v5 + v6) = 0; - return result; -} - -//----- (0050A7F0) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size) -{ - size_t v4; // edi - _DWORD *v5; // eax - unsigned int v6; // esi - unsigned int v7; // ecx - _BYTE *v8; // eax - - v4 = this[1]; - if ( Size > 0x3FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = Size + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Src; - else - memcpy(v8, Src, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - *((_BYTE *)v5 + v6) = 0; - return this; -} - -//----- (0050A8B0) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, int a2) -{ - _DWORD *v3; // edi - size_t v4; // ecx - size_t v5; // edx - _BYTE *Src; // ebp - _DWORD *v7; // eax - unsigned int v8; // esi - unsigned int v9; // edi - _BYTE *v10; // eax - - v3 = this + 2; - v4 = this[1]; - v5 = *(_DWORD *)(a2 + 4); - Src = *(_BYTE **)a2; - v7 = (_DWORD *)*this; - v8 = v5 + v4; - if ( (_DWORD *)*this == v3 ) - v9 = 15; - else - v9 = this[2]; - if ( v8 > v9 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, v5); - v7 = (_DWORD *)*this; - } - else if ( v5 ) - { - v10 = (char *)v7 + v4; - if ( v5 == 1 ) - *v10 = *Src; - else - memcpy(v10, Src, *(_DWORD *)(a2 + 4)); - v7 = (_DWORD *)*this; - } - this[1] = v8; - *((_BYTE *)v7 + v8) = 0; - return this; -} - -//----- (0050A950) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - size_t Size; // eax - _BYTE *Src; // edi - int v7; // ecx - _DWORD *v8; // edx - unsigned int v9; // esi - unsigned int v10; // ebp - _BYTE *v11; // edx - _DWORD *result; // eax - - Size = a4; - if ( a2[1] - a3 <= a4 ) - Size = a2[1] - a3; - if ( a3 > a2[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::append", - a3, - a2[1]); - Src = (_BYTE *)(*a2 + a3); - v7 = this[1]; - v8 = (_DWORD *)*this; - v9 = Size + v7; - if ( (_DWORD *)*this == this + 2 ) - v10 = 15; - else - v10 = this[2]; - if ( v9 > v10 ) - { - std::string::_M_mutate((int)this, this[1], 0, Src, Size); - v8 = (_DWORD *)*this; - } - else if ( Size ) - { - v11 = (char *)v8 + v7; - if ( Size == 1 ) - *v11 = *Src; - else - memcpy(v11, Src, Size); - v8 = (_DWORD *)*this; - } - this[1] = v9; - result = this; - *((_BYTE *)v8 + v9) = 0; - return result; -} - -//----- (0050AA30) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size) -{ - size_t v4; // edi - _DWORD *v5; // eax - unsigned int v6; // esi - unsigned int v7; // ecx - _BYTE *v8; // eax - - v4 = this[1]; - if ( Size > 0x3FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = Size + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Src; - else - memcpy(v8, Src, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - *((_BYTE *)v5 + v6) = 0; - return this; -} - -//----- (0050AAF0) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3) -{ - return std::string::_M_replace_aux(this, this[1], 0, a2, a3); -} - -//----- (0050AB20) -------------------------------------------------------- -_DWORD *__thiscall std::string::assign(_DWORD *this, int a2) -{ - _BYTE *v3; // eax - _BYTE *Src; // ecx - int v5; // edx - int v6; // ebp - - v3 = (_BYTE *)*this; - Src = *(_BYTE **)a2; - v5 = *(_DWORD *)(a2 + 4); - if ( *(_DWORD *)a2 != a2 + 8 ) - { - if ( v3 == (_BYTE *)(this + 2) ) - { - *this = Src; - this[1] = v5; - this[2] = *(_DWORD *)(a2 + 8); - } - else - { - *this = Src; - v6 = this[2]; - this[1] = v5; - this[2] = *(_DWORD *)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v6; - goto LABEL_5; - } - } - *(_DWORD *)a2 = a2 + 8; - v3 = (_BYTE *)(a2 + 8); - goto LABEL_5; - } - if ( v5 ) - { - if ( v5 == 1 ) - *v3 = *(_BYTE *)(a2 + 8); - else - memcpy(v3, Src, *(_DWORD *)(a2 + 4)); - v5 = *(_DWORD *)(a2 + 4); - v3 = (_BYTE *)*this; - } - this[1] = v5; - v3[v5] = 0; - v3 = *(_BYTE **)a2; -LABEL_5: - *(_DWORD *)(a2 + 4) = 0; - *v3 = 0; - return this; -} - -//----- (0050ABD0) -------------------------------------------------------- -unsigned int *__thiscall std::string::assign(unsigned int *this, char *Str) -{ - size_t v3; // eax - - v3 = strlen(Str); - return std::string::_M_replace(this, 0, this[1], Str, v3); -} - -//----- (0050AC10) -------------------------------------------------------- -unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3) -{ - return std::string::_M_replace(this, 0, this[1], a2, a3); -} - -//----- (0050AC40) -------------------------------------------------------- -void *__thiscall std::string::assign(void *this, int a2) -{ - std::string::_M_assign((int)this, a2); - return this; -} - -//----- (0050AC60) -------------------------------------------------------- -unsigned int *__thiscall std::string::assign(unsigned int *this, _DWORD *a2, unsigned int a3, size_t a4) -{ - size_t v4; // eax - - v4 = a2[1] - a3; - if ( v4 > a4 ) - v4 = a4; - if ( a3 > a2[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::assign", - a3, - a2[1]); - return std::string::_M_replace(this, 0, this[1], (char *)(*a2 + a3), v4); -} - -//----- (0050ACD0) -------------------------------------------------------- -unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3) -{ - return std::string::_M_replace(this, 0, this[1], a2, a3); -} - -//----- (0050AD00) -------------------------------------------------------- -_DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3) -{ - return std::string::_M_replace_aux(this, 0, this[1], a2, a3); -} - -//----- (0050AD30) -------------------------------------------------------- -size_t __thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4) -{ - size_t v5; // eax - size_t v6; // ebx - - v5 = this[1]; - v6 = a2 - *this; - if ( v6 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - v5); - std::string::_M_replace(this, v6, 0, a3, a4); - return v6 + *this; -} - -//----- (0050ADA0) -------------------------------------------------------- -size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) -{ - size_t v4; // ebx - - v4 = a2 - *this; - std::string::_M_replace_aux(this, v4, 0, 1u, a3); - return v4 + *this; -} - -//----- (0050ADE0) -------------------------------------------------------- -size_t __thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) -{ - size_t v5; // ebx - - v5 = a2 - *this; - std::string::_M_replace_aux(this, v5, 0, a3, a4); - return v5 + *this; -} - -//----- (0050AE20) -------------------------------------------------------- -unsigned int *__thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4) -{ - size_t v4; // eax - - v4 = a2 - *this; - if ( v4 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - this[1]); - return std::string::_M_replace(this, v4, 0, a3, a4); -} - -//----- (0050AE80) -------------------------------------------------------- -size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) -{ - size_t v4; // ebx - - v4 = a2 - *this; - std::string::_M_replace_aux(this, v4, 0, 1u, a3); - return v4 + *this; -} - -//----- (0050AEC0) -------------------------------------------------------- -_DWORD *__thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) -{ - return std::string::_M_replace_aux(this, a2 - *this, 0, a3, a4); -} - -//----- (0050AF00) -------------------------------------------------------- -unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *Str) -{ - size_t v4; // eax - - v4 = strlen(Str); - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace(this, a2, 0, Str, v4); -} - -//----- (0050AF70) -------------------------------------------------------- -unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *a3, size_t a4) -{ - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace(this, a2, 0, a3, a4); -} - -//----- (0050AFD0) -------------------------------------------------------- -unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, int a3) -{ - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace(this, a2, 0, *(char **)a3, *(_DWORD *)(a3 + 4)); -} - -//----- (0050B030) -------------------------------------------------------- -unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, _DWORD *a3, char *a4, size_t a5) -{ - size_t v5; // eax - - v5 = a5; - if ( a3[1] - (int)a4 <= a5 ) - v5 = a3[1] - (_DWORD)a4; - if ( (unsigned int)a4 > a3[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - (size_t)a4, - a3[1]); - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace(this, a2, 0, &a4[*a3], v5); -} - -//----- (0050B0C0) -------------------------------------------------------- -_DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int a2, size_t a3, char a4) -{ - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a2, - this[1]); - return std::string::_M_replace_aux(this, a2, 0, a3, a4); -} - -//----- (0050B120) -------------------------------------------------------- -unsigned int *__thiscall std::string::insert<__gnu_cxx::__normal_iterator>( - unsigned int *this, - int a2, - char *a3, - int a4) -{ - size_t v4; // eax - - v4 = a2 - *this; - if ( v4 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - this[1]); - return std::string::_M_replace(this, v4, 0, a3, a4 - (_DWORD)a3); -} - -//----- (0050B180) -------------------------------------------------------- -_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + a2[1]; - return result; -} - -//----- (0050B190) -------------------------------------------------------- -_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2) -{ - size_t v2; // edx - _DWORD *result; // eax - int v4; // edx - - v2 = this[1]; - result = a2; - if ( (unsigned int)a2 > v2 ) - return std::string::_M_replace_aux(this, v2, 0, (size_t)a2 - v2, 0); - if ( (unsigned int)a2 < v2 ) - { - v4 = *this; - this[1] = (int)a2; - *((_BYTE *)a2 + v4) = 0; - } - return result; -} - -//----- (0050B1E0) -------------------------------------------------------- -_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2, char a3) -{ - size_t v3; // edx - _DWORD *result; // eax - int v5; // edx - - v3 = this[1]; - result = a2; - if ( v3 < (unsigned int)a2 ) - return std::string::_M_replace_aux(this, v3, 0, (size_t)a2 - v3, a3); - if ( v3 > (unsigned int)a2 ) - { - v5 = *this; - this[1] = (int)a2; - *((_BYTE *)a2 + v5) = 0; - } - return result; -} - -//----- (0050B230) -------------------------------------------------------- -int __thiscall std::string::_M_data(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (0050B240) -------------------------------------------------------- -int __cdecl std::string::_S_copy(_BYTE *a1, unsigned __int8 *Src, int Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memcpy(a1, Src, Size); - } - return result; -} - -//----- (0050B280) -------------------------------------------------------- -int __cdecl std::string::_S_move(_BYTE *a1, unsigned __int8 *Src, int Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memmove(a1, Src, Size); - } - return result; -} - -//----- (0050B2C0) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (0050B330) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (0050B3A0) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) -{ - size_t v4; // edx - size_t v5; // eax - - v4 = a2 - *this; - v5 = a3 - a2; - if ( a3 - a2 > this[1] - v4 ) - v5 = this[1] - v4; - if ( v4 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - this[1]); - return std::string::_M_replace(this, v4, v5, *(char **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (0050B410) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) -{ - size_t v5; // eax - size_t v6; // edx - size_t v7; // ecx - size_t v8; // eax - - v5 = strlen(Str); - v6 = a2 - *this; - v7 = v5; - v8 = a3 - a2; - if ( a3 - a2 > this[1] - v6 ) - v8 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v8, Str, v7); -} - -//----- (0050B490) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (0050B500) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5); -} - -//----- (0050B570) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (0050B5E0) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5); -} - -//----- (0050B650) -------------------------------------------------------- -_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) -{ - return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); -} - -//----- (0050B670) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (0050B6E0) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) -{ - size_t v5; // eax - size_t v6; // edx - size_t v7; // ecx - size_t v8; // eax - - v5 = strlen(Str); - v6 = a2 - *this; - v7 = v5; - v8 = a3 - a2; - if ( a3 - a2 > this[1] - v6 ) - v8 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v8, Str, v7); -} - -//----- (0050B760) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (0050B7D0) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5); -} - -//----- (0050B840) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) -{ - size_t v4; // edx - size_t v5; // eax - - v4 = a2 - *this; - v5 = a3 - a2; - if ( a3 - a2 > this[1] - v4 ) - v5 = this[1] - v4; - if ( v4 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - this[1]); - return std::string::_M_replace(this, v4, v5, *(char **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (0050B8B0) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (0050B920) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - *this; - if ( a3 - a2 > this[1] - v6 ) - v5 = this[1] - v6; - if ( v6 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (0050B990) -------------------------------------------------------- -_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) -{ - return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); -} - -//----- (0050B9B0) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *Str) -{ - size_t v5; // edx - size_t v6; // eax - - v5 = strlen(Str); - v6 = this[1] - a2; - if ( v6 > a3 ) - v6 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace(this, a2, v6, Str, v5); -} - -//----- (0050BA20) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace( - unsigned int *this, - unsigned int a2, - unsigned int a3, - char *a4, - size_t a5) -{ - size_t v5; // eax - - v5 = this[1] - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace(this, a2, v5, a4, a5); -} - -//----- (0050BA80) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, int a4) -{ - size_t v4; // eax - - v4 = this[1] - a2; - if ( v4 > a3 ) - v4 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace(this, a2, v4, *(char **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (0050BAF0) -------------------------------------------------------- -unsigned int *__thiscall std::string::replace( - unsigned int *this, - unsigned int a2, - unsigned int a3, - _DWORD *a4, - unsigned int a5, - unsigned int a6) -{ - size_t v6; // eax - size_t v7; // esi - - v6 = a6; - if ( a4[1] - a5 <= a6 ) - v6 = a4[1] - a5; - if ( a5 > a4[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a5, - a4[1]); - v7 = this[1] - a2; - if ( v7 > a3 ) - v7 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace(this, a2, v7, (char *)(*a4 + a5), v6); -} - -//----- (0050BB90) -------------------------------------------------------- -_DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5) -{ - unsigned int v5; // eax - - v5 = this[1] - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace_aux(this, a2, v5, a4, a5); -} - -//----- (0050BBF0) -------------------------------------------------------- -void __thiscall std::string::reserve(_DWORD *this, unsigned int a2) -{ - unsigned int v3; // ecx - unsigned int v4; // eax - _BYTE *Block; // edi - _BYTE *v6; // esi - unsigned int v7; // edx - unsigned int v8; // ebp - _BYTE *v9; // eax - _BYTE *Src; // ebp - _BYTE *v11; // edi - int v12; // eax - unsigned int v13; // eax - - v3 = this[1]; - v4 = a2; - if ( a2 < v3 ) - { - a2 = v3; - v4 = v3; - } - Block = (_BYTE *)*this; - v6 = this + 2; - if ( this + 2 == (_DWORD *)*this ) - v7 = 15; - else - v7 = this[2]; - if ( v7 != v4 ) - { - v8 = 15; - if ( v7 <= 0xF ) - v8 = v7; - if ( v8 >= v4 ) - { - if ( v6 != Block ) - { - if ( v3 ) - { - if ( v3 != -1 ) - memcpy(this + 2, Block, v3 + 1); - } - else - { - *((_BYTE *)this + 8) = *Block; - } - operator delete(Block); - *this = v6; - } - } - else - { - v9 = std::string::_M_create(&a2, v7); - Src = (_BYTE *)*this; - v11 = v9; - v12 = this[1]; - if ( v12 ) - { - if ( v12 != -1 ) - memcpy(v11, Src, v12 + 1); - } - else - { - *v11 = *Src; - } - if ( Src != v6 ) - operator delete(Src); - v13 = a2; - *this = v11; - this[2] = v13; - } - } -} - -//----- (0050BD00) -------------------------------------------------------- -int __thiscall std::string::_M_erase(int *this, int a2, int a3) -{ - int v4; // eax - int v5; // ecx - _BYTE *Src; // edx - _BYTE *v7; // ecx - int result; // eax - - v4 = this[1]; - v5 = *this; - if ( v4 != a3 + a2 && a3 ) - { - Src = (_BYTE *)(v5 + a3 + a2); - v7 = (_BYTE *)(a2 + v5); - if ( v4 - (a3 + a2) == 1 ) - *v7 = *Src; - else - memmove(v7, Src, v4 - (a3 + a2)); - v5 = *this; - v4 = this[1]; - } - result = v4 - a3; - this[1] = result; - *(_BYTE *)(v5 + result) = 0; - return result; -} - -//----- (0050BD70) -------------------------------------------------------- -int __fastcall std::string::pop_back(_DWORD *a1) -{ - int result; // eax - - result = a1[1]; - a1[1] = result - 1; - *(_BYTE *)(*a1 + result - 1) = 0; - return result; -} - -//----- (0050BD90) -------------------------------------------------------- -_DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size) -{ - _DWORD *v4; // edi - size_t v5; // ecx - _DWORD *v6; // eax - unsigned int v7; // esi - unsigned int v8; // edi - _BYTE *v9; // eax - - v4 = this + 2; - v5 = this[1]; - v6 = (_DWORD *)*this; - v7 = v5 + Size; - if ( (_DWORD *)*this == v4 ) - v8 = 15; - else - v8 = this[2]; - if ( v7 > v8 ) - { - std::string::_M_mutate((int)this, v5, 0, Src, Size); - v6 = (_DWORD *)*this; - } - else if ( Size ) - { - v9 = (char *)v6 + v5; - if ( Size == 1 ) - *v9 = *Src; - else - memcpy(v9, Src, Size); - v6 = (_DWORD *)*this; - } - this[1] = v7; - *((_BYTE *)v6 + v7) = 0; - return this; -} - -//----- (0050BE30) -------------------------------------------------------- -void __thiscall std::string::_M_assign(int this, int a2) -{ - _BYTE *v2; // esi - size_t Size; // edi - unsigned int v5; // eax - _BYTE *Src; // eax - unsigned int v7; // eax - int v8; // [esp+1Ch] [ebp-30h] - unsigned int v9[8]; // [esp+2Ch] [ebp-20h] BYREF - - if ( this != a2 ) - { - v2 = *(_BYTE **)this; - Size = *(_DWORD *)(a2 + 4); - if ( this + 8 == *(_DWORD *)this ) - v5 = 15; - else - v5 = *(_DWORD *)(this + 8); - if ( v5 < Size ) - { - v8 = this + 8; - v9[0] = *(_DWORD *)(a2 + 4); - v2 = std::string::_M_create(v9, v5); - if ( v8 != *(_DWORD *)this ) - operator delete(*(void **)this); - v7 = v9[0]; - *(_DWORD *)this = v2; - *(_DWORD *)(this + 8) = v7; - if ( !Size ) - goto LABEL_9; - } - else if ( !Size ) - { -LABEL_9: - *(_DWORD *)(this + 4) = Size; - v2[Size] = 0; - return; - } - Src = *(_BYTE **)a2; - if ( Size == 1 ) - *v2 = *Src; - else - memcpy(v2, Src, Size); - v2 = *(_BYTE **)this; - goto LABEL_9; - } -} -// 50BE30: using guessed type unsigned int var_20[8]; - -//----- (0050BEF0) -------------------------------------------------------- -void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2) -{ - unsigned int v2; // eax - unsigned int v3; // edx - - v2 = *a1; - if ( *a1 > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( v2 > a2 ) - { - v3 = 2 * a2; - if ( v2 < 2 * a2 ) - { - if ( v3 > 0x3FFFFFFF ) - { - *a1 = 0x3FFFFFFF; - return operator new(0x40000000u); - } - *a1 = v3; - v2 = 2 * a2; - } - } - return operator new(v2 + 1); -} - -//----- (0050BF60) -------------------------------------------------------- -int __thiscall std::string::_M_length(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[1] = a2; - return result; -} - -//----- (0050BF70) -------------------------------------------------------- -size_t __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5) -{ - _BYTE *v6; // edi - unsigned int v7; // eax - _BYTE *v8; // eax - _BYTE *Block; // ecx - _BYTE *v10; // ebp - _BYTE *v11; // esi - size_t result; // eax - _BYTE *Src; // [esp+4h] [ebp-48h] - size_t v14; // [esp+14h] [ebp-38h] - size_t v15; // [esp+18h] [ebp-34h] - _BYTE *v16; // [esp+18h] [ebp-34h] - _BYTE *v17; // [esp+1Ch] [ebp-30h] - _BYTE *v18; // [esp+1Ch] [ebp-30h] - size_t v19[8]; // [esp+2Ch] [ebp-20h] BYREF - - v15 = Size + a3; - v14 = *(_DWORD *)(this + 4) - (Size + a3); - v6 = (_BYTE *)(this + 8); - v19[0] = *(_DWORD *)(this + 4) + a5 - a3; - if ( this + 8 == *(_DWORD *)this ) - v7 = 15; - else - v7 = *(_DWORD *)(this + 8); - v8 = std::string::_M_create(v19, v7); - Block = *(_BYTE **)this; - v10 = v8; - if ( Size ) - { - if ( Size == 1 ) - { - *v8 = *Block; - } - else - { - v17 = *(_BYTE **)this; - memcpy(v8, *(const void **)this, Size); - Block = v17; - } - } - if ( a4 && a5 ) - { - if ( a5 == 1 ) - { - v10[Size] = *a4; - } - else - { - v18 = Block; - memcpy(&v10[Size], a4, a5); - Block = v18; - } - } - if ( v14 ) - { - v11 = &v10[a5 + Size]; - if ( v14 == 1 ) - { - *v11 = Block[v15]; - } - else - { - Src = &Block[v15]; - v16 = Block; - memcpy(v11, Src, v14); - Block = v16; - } - } - if ( v6 != Block ) - operator delete(Block); - result = v19[0]; - *(_DWORD *)this = v10; - *(_DWORD *)(this + 8) = result; - return result; -} -// 50BF70: using guessed type size_t var_20[8]; - -//----- (0050C0C0) -------------------------------------------------------- -void *__cdecl std::string::_S_assign(_BYTE *a1, void *Val, size_t Size) -{ - void *result; // eax - - result = Val; - if ( Val == (void *)1 ) - { - *a1 = Size; - } - else if ( Val ) - { - return memset(a1, (char)Size, (size_t)Val); - } - return result; -} - -//----- (0050C100) -------------------------------------------------------- -_DWORD *__thiscall std::string::push_back(_DWORD *this, char a2) -{ - size_t v3; // esi - _DWORD *v4; // eax - unsigned int v5; // edi - unsigned int v6; // edx - _DWORD *result; // eax - - v3 = this[1]; - v4 = (_DWORD *)*this; - v5 = v3 + 1; - if ( (_DWORD *)*this == this + 2 ) - v6 = 15; - else - v6 = this[2]; - if ( v5 > v6 ) - { - std::string::_M_mutate((int)this, v3, 0, 0, 1u); - v4 = (_DWORD *)*this; - } - *((_BYTE *)v4 + v3) = a2; - result = (_DWORD *)*this; - this[1] = v5; - *((_BYTE *)result + v3 + 1) = 0; - return result; -} - -//----- (0050C180) -------------------------------------------------------- -_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( result + 2 == (_DWORD *)*result ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - *((_BYTE *)a2 + 8) = 0; - this[1] = v3; - return result; -} - -//----- (0050C1E0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) -{ - _BYTE *result; // eax - int v4; // ebx - int v5; // ebx - int v6; // edx - - result = (_BYTE *)a2; - *this = this + 2; - if ( result + 8 == *(_BYTE **)result ) - { - this[2] = *(_DWORD *)(a2 + 8); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - v6 = *(_DWORD *)(a2 + 4); - *(_DWORD *)(a2 + 4) = 0; - result = *(_BYTE **)a2; - this[1] = v6; - *result = 0; - } - else - { - *this = *(_DWORD *)a2; - v4 = *(_DWORD *)(a2 + 4); - *(_DWORD *)a2 = a2 + 8; - this[1] = v4; - v5 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = 0; - *(_BYTE *)(a2 + 8) = 0; - this[2] = v5; - } - return result; -} - -//----- (0050C250) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3) -{ - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - *this = this + 2; - v4 = -1; - if ( Str ) - v4 = (int)&Str[strlen(Str)]; - LOBYTE(v6) = 0; - return std::string::_M_construct(this, Str, v4, v6); -} -// 50C281: variable 'v6' is possibly undefined - -//----- (0050C2A0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - *this = this + 2; - LOBYTE(a4) = 0; - return std::string::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (0050C2C0) -------------------------------------------------------- -char *__thiscall std::string::basic_string(_DWORD *this, int a2) -{ - char *result; // eax - - result = (char *)(this + 2); - this[1] = 0; - *this = this + 2; - *((_BYTE *)this + 8) = 0; - return result; -} - -//----- (0050C2E0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, int a2) -{ - _BYTE *result; // eax - char *Src; // edi - size_t Size; // esi - char v6; // dl - - result = this + 8; - *(_DWORD *)this = this + 8; - Src = *(char **)a2; - Size = *(_DWORD *)(a2 + 4); - if ( Size + *(_DWORD *)a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - v6 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v6; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (0050C390) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3) -{ - _BYTE *result; // eax - size_t Size; // esi - char *Src; // edi - - result = this + 8; - *(_DWORD *)this = this + 8; - Size = *(_DWORD *)(a2 + 4); - Src = *(char **)a2; - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - this[8] = *Src; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (0050C430) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - *this = this + 2; - v4 = a2[1]; - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - LOBYTE(a4) = 0; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), *a2 + v4, a4); -} - -//----- (0050C480) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // edi - unsigned int v5; // eax - unsigned int v6; // eax - - *this = this + 2; - v4 = a4; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - v5); - v6 = v5 - a3; - LOBYTE(a4) = 0; - if ( v6 > v4 ) - v6 = v4; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, a4); -} - -//----- (0050C4E0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - *this = this + 2; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, v5); - v6 = v5 - a3; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, v8); -} -// 50C517: variable 'v8' is possibly undefined - -//----- (0050C550) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - *this = this + 2; - LOBYTE(a4) = 0; - return std::string::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (0050C570) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4) -{ - _BYTE *result; // eax - - result = this + 8; - *(_DWORD *)this = this + 8; - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; -LABEL_6: - memset(result, a3, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - if ( Size != 1 ) - goto LABEL_6; - this[8] = a3; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; -} - -//----- (0050C610) -------------------------------------------------------- -int __fastcall std::string::basic_string(int a1) -{ - int result; // eax - - result = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - return result; -} - -//----- (0050C630) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( - char *this, - char *Src, - int a3, - int a4) -{ - _BYTE *result; // eax - size_t Size; // ebx - - result = this + 8; - *(_DWORD *)this = this + 8; - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - this[8] = *Src; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (0050C6D0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::string::_M_construct(this, a2, a3, a4); -} - -//----- (0050C6E0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, char *Src, int a3, int a4) -{ - _BYTE *result; // eax - size_t Size; // ebx - char v7; // dl - - result = this + 8; - *(_DWORD *)this = this + 8; - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - v7 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v7; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (0050C790) -------------------------------------------------------- -_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( result + 2 == (_DWORD *)*result ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - *((_BYTE *)a2 + 8) = 0; - this[1] = v3; - return result; -} - -//----- (0050C7F0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) -{ - _BYTE *result; // eax - int v4; // ebx - int v5; // ebx - int v6; // edx - - result = (_BYTE *)a2; - *this = this + 2; - if ( result + 8 == *(_BYTE **)result ) - { - this[2] = *(_DWORD *)(a2 + 8); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - v6 = *(_DWORD *)(a2 + 4); - *(_DWORD *)(a2 + 4) = 0; - result = *(_BYTE **)a2; - this[1] = v6; - *result = 0; - } - else - { - *this = *(_DWORD *)a2; - v4 = *(_DWORD *)(a2 + 4); - *(_DWORD *)a2 = a2 + 8; - this[1] = v4; - v5 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = 0; - *(_BYTE *)(a2 + 8) = 0; - this[2] = v5; - } - return result; -} - -//----- (0050C860) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3) -{ - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - *this = this + 2; - v4 = -1; - if ( Str ) - v4 = (int)&Str[strlen(Str)]; - LOBYTE(v6) = 0; - return std::string::_M_construct(this, Str, v4, v6); -} -// 50C891: variable 'v6' is possibly undefined - -//----- (0050C8B0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - *this = this + 2; - LOBYTE(a4) = 0; - return std::string::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (0050C8D0) -------------------------------------------------------- -char *__thiscall std::string::basic_string(_DWORD *this, int a2) -{ - char *result; // eax - - result = (char *)(this + 2); - this[1] = 0; - *this = this + 2; - *((_BYTE *)this + 8) = 0; - return result; -} - -//----- (0050C8F0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, int a2) -{ - _BYTE *result; // eax - char *Src; // edi - size_t Size; // esi - char v6; // dl - - result = this + 8; - *(_DWORD *)this = this + 8; - Src = *(char **)a2; - Size = *(_DWORD *)(a2 + 4); - if ( Size + *(_DWORD *)a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - v6 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v6; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (0050C9A0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3) -{ - _BYTE *result; // eax - size_t Size; // esi - char *Src; // edi - - result = this + 8; - *(_DWORD *)this = this + 8; - Size = *(_DWORD *)(a2 + 4); - Src = *(char **)a2; - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - this[8] = *Src; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (0050CA40) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - *this = this + 2; - v4 = a2[1]; - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - LOBYTE(a4) = 0; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), *a2 + v4, a4); -} - -//----- (0050CA90) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // edi - unsigned int v5; // eax - unsigned int v6; // eax - - *this = this + 2; - v4 = a4; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - v5); - v6 = v5 - a3; - LOBYTE(a4) = 0; - if ( v6 > v4 ) - v6 = v4; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, a4); -} - -//----- (0050CAF0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - *this = this + 2; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, v5); - v6 = v5 - a3; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, v8); -} -// 50CB27: variable 'v8' is possibly undefined - -//----- (0050CB60) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - *this = this + 2; - LOBYTE(a4) = 0; - return std::string::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (0050CB80) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4) -{ - _BYTE *result; // eax - - result = this + 8; - *(_DWORD *)this = this + 8; - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; -LABEL_6: - memset(result, a3, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - if ( Size != 1 ) - goto LABEL_6; - this[8] = a3; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; -} - -//----- (0050CC20) -------------------------------------------------------- -int __fastcall std::string::basic_string(int a1) -{ - int result; // eax - - result = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - return result; -} - -//----- (0050CC40) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( - char *this, - char *Src, - int a3, - int a4) -{ - _BYTE *result; // eax - size_t Size; // ebx - - result = this + 8; - *(_DWORD *)this = this + 8; - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - this[8] = *Src; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (0050CCE0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::string::_M_construct(this, a2, a3, a4); -} - -//----- (0050CCF0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, char *Src, int a3, int a4) -{ - _BYTE *result; // eax - size_t Size; // ebx - char v7; // dl - - result = this + 8; - *(_DWORD *)this = this + 8; - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - v7 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v7; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (0050CDA0) -------------------------------------------------------- -void __fastcall std::string::~string(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (0050CDD0) -------------------------------------------------------- -void __fastcall std::string::~string(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (0050CE00) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *a2) -{ - _BYTE *v3; // eax - _DWORD *v4; // ecx - int v5; // edx - int v6; // ebp - - v3 = (_BYTE *)*this; - v4 = (_DWORD *)*a2; - v5 = a2[1]; - if ( a2 + 2 != (_DWORD *)*a2 ) - { - if ( v3 == (_BYTE *)(this + 2) ) - { - *this = v4; - this[1] = v5; - this[2] = a2[2]; - } - else - { - *this = v4; - v6 = this[2]; - this[1] = v5; - this[2] = a2[2]; - if ( v3 ) - { - *a2 = v3; - a2[2] = v6; - goto LABEL_5; - } - } - *a2 = a2 + 2; - v3 = a2 + 2; - goto LABEL_5; - } - if ( v5 ) - { - if ( v5 == 1 ) - *v3 = *((_BYTE *)a2 + 8); - else - memcpy(v3, a2 + 2, a2[1]); - v3 = (_BYTE *)*this; - v5 = a2[1]; - } - this[1] = v5; - v3[v5] = 0; - v3 = (_BYTE *)*a2; -LABEL_5: - a2[1] = 0; - *v3 = 0; - return this; -} - -//----- (0050CEB0) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) -{ - size_t v3; // eax - - v3 = strlen(Str); - return std::string::_M_replace(this, 0, this[1], Str, v3); -} - -//----- (0050CEF0) -------------------------------------------------------- -void *__thiscall std::string::operator=(void *this, int a2) -{ - std::string::_M_assign((int)this, a2); - return this; -} - -//----- (0050CF10) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator=(unsigned int *this, char *a2, size_t a3) -{ - std::string::_M_replace(this, 0, this[1], a2, a3); - return this; -} - -//----- (0050CF50) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator=(_DWORD *this, char a2) -{ - std::string::_M_replace_aux(this, 0, this[1], 1u, a2); - return this; -} - -//----- (0050CF90) -------------------------------------------------------- -int __thiscall std::string::operator[](_DWORD *this, int a2) -{ - return a2 + *this; -} - -//----- (0050CFA0) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str) -{ - unsigned int Size; // eax - size_t v4; // ebp - _DWORD *v5; // edx - unsigned int v6; // edi - unsigned int v7; // ecx - _BYTE *v8; // edx - _DWORD *result; // eax - - Size = strlen(Str); - v4 = this[1]; - if ( Size > 0x3FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = Size + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Str, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Str; - else - memcpy(v8, Str, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - result = this; - *((_BYTE *)v5 + v6) = 0; - return result; -} - -//----- (0050D060) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) -{ - _DWORD *v3; // edi - size_t v4; // ecx - size_t v5; // edx - _BYTE *Src; // ebp - _DWORD *v7; // eax - unsigned int v8; // esi - unsigned int v9; // edi - _BYTE *v10; // eax - - v3 = this + 2; - v4 = this[1]; - v5 = *(_DWORD *)(a2 + 4); - Src = *(_BYTE **)a2; - v7 = (_DWORD *)*this; - v8 = v5 + v4; - if ( (_DWORD *)*this == v3 ) - v9 = 15; - else - v9 = this[2]; - if ( v8 > v9 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, v5); - v7 = (_DWORD *)*this; - } - else if ( v5 ) - { - v10 = (char *)v7 + v4; - if ( v5 == 1 ) - *v10 = *Src; - else - memcpy(v10, Src, *(_DWORD *)(a2 + 4)); - v7 = (_DWORD *)*this; - } - this[1] = v8; - *((_BYTE *)v7 + v8) = 0; - return this; -} - -//----- (0050D100) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *Src, size_t Size) -{ - size_t v4; // edi - _DWORD *v5; // eax - unsigned int v6; // esi - unsigned int v7; // ecx - _BYTE *v8; // eax - - v4 = this[1]; - if ( Size > 0x3FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = Size + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Src; - else - memcpy(v8, Src, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - *((_BYTE *)v5 + v6) = 0; - return this; -} - -//----- (0050D1C0) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char a2) -{ - _DWORD *result; // eax - char *v3; // ecx - size_t v4; // ebx - char *v5; // edx - unsigned int v6; // esi - unsigned int v7; // ecx - int v8; // edx - _DWORD *v9; // [esp+1Ch] [ebp-10h] - - result = this; - v3 = (char *)(this + 2); - v4 = *((_DWORD *)v3 - 1); - v5 = (char *)*((_DWORD *)v3 - 2); - v6 = v4 + 1; - if ( v5 == v3 ) - v7 = 15; - else - v7 = result[2]; - if ( v6 > v7 ) - { - v9 = result; - std::string::_M_mutate((int)result, v4, 0, 0, 1u); - result = v9; - v5 = (char *)*v9; - } - v5[v4] = a2; - v8 = *result; - result[1] = v6; - *(_BYTE *)(v8 + v4 + 1) = 0; - return result; -} - -//----- (0050D240) -------------------------------------------------------- -void __thiscall std::wstring::_M_destroy(void **this, int a2) -{ - operator delete(*this); -} - -//----- (0050D260) -------------------------------------------------------- -void __fastcall std::wstring::_M_dispose(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (0050D290) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::_M_replace( - unsigned int *this, - int a2, - unsigned int a3, - _WORD *Src, - unsigned int a5) -{ - unsigned int v5; // eax - unsigned int v7; // edi - unsigned int v8; // ecx - bool v9; // cl - unsigned int v10; // eax - int v12; // ecx - unsigned int v13; // eax - signed int Size; // eax - signed int v15; // edx - unsigned int v16; // esi - unsigned int v17; // [esp+1Ch] [ebp-30h] - int v18; // [esp+1Ch] [ebp-30h] - int v19; // [esp+1Ch] [ebp-30h] - _WORD *v20; // [esp+20h] [ebp-2Ch] - bool v21; // [esp+24h] [ebp-28h] - signed int v22; // [esp+24h] [ebp-28h] - unsigned int v23; // [esp+28h] [ebp-24h] - unsigned int v24; // [esp+2Ch] [ebp-20h] - - v5 = this[1]; - if ( a5 > a3 + 0x1FFFFFFF - v5 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); - v24 = a5 - a3; - v7 = v5 + a5 - a3; - v17 = *this; - if ( (unsigned int *)*this == this + 2 ) - v8 = 7; - else - v8 = this[2]; - if ( v8 < v7 ) - { - std::wstring::_M_mutate((int)this, a2, a3, Src, a5); - goto LABEL_12; - } - v20 = (_WORD *)(v17 + 2 * a2); - v23 = v5 - (a3 + a2); - v9 = a3 != a5 && v5 != a3 + a2; - if ( v17 <= (unsigned int)Src && (unsigned int)Src <= v17 + 2 * v5 ) - { - if ( a5 && a3 >= a5 ) - { - if ( a5 != 1 ) - { - v21 = a3 != a5 && v5 != a3 + a2; - v18 = a5; - memmove(v20, Src, 2 * a5); - if ( !v21 ) - goto LABEL_12; - goto LABEL_18; - } - *v20 = *Src; - } - if ( !v9 ) - goto LABEL_20; - v18 = a5; -LABEL_18: - if ( v23 == 1 ) - v20[v18] = v20[a3]; - else - memmove(&v20[v18], &v20[a3], 2 * v23); -LABEL_20: - if ( a3 >= a5 ) - goto LABEL_12; - v12 = a5; - v13 = (unsigned int)&v20[a3]; - if ( v13 < (unsigned int)&Src[a5] ) - { - if ( v13 > (unsigned int)Src ) - { - Size = v13 - (_DWORD)Src; - v15 = Size; - v19 = Size >> 1; - if ( Size >> 1 == 1 ) - { - *v20 = *Src; - } - else if ( v19 ) - { - v22 = Size; - memmove(v20, Src, Size); - v12 = a5; - v15 = v22; - } - v16 = a5 - v19; - if ( a5 - v19 == 1 ) - { - *(_WORD *)((char *)v20 + v15) = v20[v12]; - } - else if ( v16 ) - { - memcpy((char *)v20 + v15, &v20[v12], 2 * v16); - } - } - else if ( a5 == 1 ) - { - *v20 = Src[v24]; - } - else if ( a5 ) - { - memcpy(v20, &Src[v24], 2 * a5); - } - goto LABEL_12; - } - if ( a5 != 1 ) - { - if ( a5 ) - memmove(v20, Src, 2 * a5); - goto LABEL_12; - } -LABEL_27: - *v20 = *Src; - goto LABEL_12; - } - if ( v9 ) - { - if ( v23 == 1 ) - v20[a5] = v20[a3]; - else - memmove(&v20[a5], &v20[a3], 2 * v23); - } - if ( a5 ) - { - if ( a5 != 1 ) - { - memcpy(v20, Src, 2 * a5); - goto LABEL_12; - } - goto LABEL_27; - } -LABEL_12: - v10 = *this; - this[1] = v7; - *(_WORD *)(v10 + 2 * v7) = 0; - return this; -} - -//----- (0050D5E0) -------------------------------------------------------- -int __cdecl std::wstring::_S_compare(int a1, int a2) -{ - return a1 - a2; -} - -//----- (0050D5F0) -------------------------------------------------------- -int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] = a2; - return result; -} - -//----- (0050D600) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (0050D610) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (0050D620) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (0050D630) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (0050D640) -------------------------------------------------------- -int __thiscall std::wstring::_M_construct(_DWORD *this, unsigned int a2, __int16 a3) -{ - _WORD *v4; // ecx - int result; // eax - _WORD *v6; // eax - _WORD *v7; // edx - unsigned int v8; // eax - - if ( a2 > 7 ) - { - if ( a2 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - v6 = operator new(2 * a2 + 2); - this[2] = a2; - *this = v6; - v4 = v6; - } - else - { - v4 = (_WORD *)*this; - if ( !a2 ) - goto LABEL_3; - if ( a2 == 1 ) - { - *v4 = a3; - goto LABEL_3; - } - } - v7 = v4; - v8 = a2; - do - { - *v7++ = a3; - --v8; - } - while ( v8 ); -LABEL_3: - result = 0; - this[1] = a2; - v4[a2] = 0; - return result; -} - -//----- (0050D6C0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - size_t Size; // ebx - int v6; // edi - _WORD *result; // eax - - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v6; - *this = result; - } - else - { - result = (_WORD *)*this; - } - if ( v6 == 1 ) - { - *result = *Src; - } - else if ( v6 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v6; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (0050D760) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - size_t Size; // ebx - int v6; // edi - _WORD *result; // eax - - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v6; - *this = result; - } - else - { - result = (_WORD *)*this; - } - if ( v6 == 1 ) - { - *result = *Src; - } - else if ( v6 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v6; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (0050D800) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // ebx - int v6; // ebp - _WORD *result; // eax - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v6; - *this = result; - } - else - { - result = (_WORD *)*this; - } - if ( v6 == 1 ) - { - *result = *Src; - } - else if ( v6 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v6; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (0050D8C0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3) -{ - int v4; // ebp - _WORD *result; // eax - unsigned int v6; // edx - unsigned int v7[8]; // [esp+1Ch] [ebp-20h] BYREF - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v4 = (a3 - (int)Src) >> 1; - v7[0] = v4; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - result = std::wstring::_M_create(v7, 0); - *this = result; - this[2] = v7[0]; - } - else - { - result = (_WORD *)*this; - } - if ( v4 == 1 ) - { - *result = *Src; - } - else if ( v4 ) - { - memcpy(result, Src, a3 - (_DWORD)Src); - result = (_WORD *)*this; - } - v6 = v7[0]; - this[1] = v7[0]; - result[v6] = 0; - return result; -} -// 50D8C0: using guessed type unsigned int var_20[8]; - -//----- (0050D960) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3) -{ - int v4; // ebp - _WORD *result; // eax - unsigned int v6; // edx - unsigned int v7[8]; // [esp+1Ch] [ebp-20h] BYREF - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v4 = (a3 - (int)Src) >> 1; - v7[0] = v4; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - result = std::wstring::_M_create(v7, 0); - *this = result; - this[2] = v7[0]; - } - else - { - result = (_WORD *)*this; - } - if ( v4 == 1 ) - { - *result = *Src; - } - else if ( v4 ) - { - memcpy(result, Src, a3 - (_DWORD)Src); - result = (_WORD *)*this; - } - v6 = v7[0]; - this[1] = v7[0]; - result[v6] = 0; - return result; -} -// 50D960: using guessed type unsigned int var_20[8]; - -//----- (0050DA00) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // ebx - int v6; // ebp - _WORD *result; // eax - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v6; - *this = result; - } - else - { - result = (_WORD *)*this; - } - if ( v6 == 1 ) - { - *result = *Src; - } - else if ( v6 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v6; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (0050DAC0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3) -{ - int v4; // ebp - _WORD *result; // eax - unsigned int v6; // edx - unsigned int v7[8]; // [esp+1Ch] [ebp-20h] BYREF - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v4 = (a3 - (int)Src) >> 1; - v7[0] = v4; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - result = std::wstring::_M_create(v7, 0); - *this = result; - this[2] = v7[0]; - } - else - { - result = (_WORD *)*this; - } - if ( v4 == 1 ) - { - *result = *Src; - } - else if ( v4 ) - { - memcpy(result, Src, a3 - (_DWORD)Src); - result = (_WORD *)*this; - } - v6 = v7[0]; - this[1] = v7[0]; - result[v6] = 0; - return result; -} -// 50DAC0: using guessed type unsigned int var_20[8]; - -//----- (0050DB60) -------------------------------------------------------- -int __fastcall std::wstring::_M_local_data(int a1) -{ - return a1 + 8; -} - -//----- (0050DB70) -------------------------------------------------------- -int __thiscall std::wstring::_M_set_length(int *this, int a2) -{ - int result; // eax - int v3; // edx - - result = a2; - v3 = *this; - this[1] = a2; - *(_WORD *)(v3 + 2 * a2) = 0; - return result; -} - -//----- (0050DB90) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (0050DBD0) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (0050DC10) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (0050DC50) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (0050DC90) -------------------------------------------------------- -void __fastcall std::wstring::shrink_to_fit(_DWORD *a1) -{ - unsigned int v1; // eax - - if ( (_DWORD *)*a1 == a1 + 2 ) - v1 = 7; - else - v1 = a1[2]; - if ( a1[1] < v1 ) - std::wstring::reserve((int)a1, 0); -} - -//----- (0050DD30) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::_M_replace_aux(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5) -{ - int v6; // edx - unsigned int v7; // ebx - _DWORD *v8; // ecx - unsigned int v9; // edi - unsigned int v10; // ebp - int v11; // edx - char *v12; // ebp - char *Src; // eax - char *v14; // ebp - _WORD *v15; // eax - - v6 = this[1]; - v7 = a4; - if ( a4 > a3 + 0x1FFFFFFF - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - v8 = (_DWORD *)*this; - v9 = v6 + a4 - a3; - if ( (_DWORD *)*this == this + 2 ) - v10 = 7; - else - v10 = this[2]; - if ( v10 < v9 ) - { - std::wstring::_M_mutate((int)this, a2, a3, 0, a4); - v8 = (_DWORD *)*this; - if ( !a4 ) - goto LABEL_12; - } - else - { - v11 = v6 - (a3 + a2); - if ( !v11 || a3 == a4 ) - { -LABEL_9: - if ( !a4 ) - goto LABEL_12; - goto LABEL_10; - } - v12 = (char *)v8 + 2 * a2; - Src = &v12[2 * a3]; - v14 = &v12[2 * a4]; - if ( v11 != 1 ) - { - memmove(v14, Src, 2 * v11); - v8 = (_DWORD *)*this; - goto LABEL_9; - } - *(_WORD *)v14 = *(_WORD *)Src; - if ( !a4 ) - goto LABEL_12; - } -LABEL_10: - v15 = (_WORD *)v8 + a2; - if ( a4 == 1 ) - { - *v15 = a5; - } - else - { - do - { - *v15++ = a5; - --v7; - } - while ( v7 ); - } -LABEL_12: - this[1] = v9; - *((_WORD *)v8 + v9) = 0; - return this; -} - -//----- (0050DE60) -------------------------------------------------------- -int __fastcall std::wstring::_M_get_allocator(int a1) -{ - return a1; -} - -//----- (0050DE70) -------------------------------------------------------- -int __thiscall std::wstring::_M_construct_aux_2(_DWORD *this, unsigned int a2, __int16 a3) -{ - _WORD *v4; // ecx - int result; // eax - _WORD *v6; // eax - _WORD *v7; // edx - unsigned int v8; // eax - - if ( a2 > 7 ) - { - if ( a2 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - v6 = operator new(2 * a2 + 2); - this[2] = a2; - *this = v6; - v4 = v6; - } - else - { - v4 = (_WORD *)*this; - if ( !a2 ) - goto LABEL_3; - if ( a2 == 1 ) - { - *v4 = a3; - goto LABEL_3; - } - } - v7 = v4; - v8 = a2; - do - { - *v7++ = a3; - --v8; - } - while ( v8 ); -LABEL_3: - result = 0; - this[1] = a2; - v4[a2] = 0; - return result; -} - -//----- (0050DEF0) -------------------------------------------------------- -int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) -{ - if ( a2 >= this[1] ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); - return *this + 2 * a2; -} - -//----- (0050DF20) -------------------------------------------------------- -int __fastcall std::wstring::end(_DWORD *a1) -{ - return *a1 + 2 * a1[1]; -} - -//----- (0050DF30) -------------------------------------------------------- -int __fastcall std::wstring::back(_DWORD *a1) -{ - return *a1 + 2 * a1[1] - 2; -} - -//----- (0050DF40) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (0050DF50) -------------------------------------------------------- -_WORD *__thiscall std::wstring::swap(_DWORD *this, _DWORD *a2) -{ - _WORD *result; // eax - _WORD *v3; // edi - _WORD *v4; // esi - _WORD *v5; // edx - int v6; // ebp - int v7; // edx - int v8; // edi - int v9; // edx - int v10; // ebp - int v11; // edi - int v12; // [esp+0h] [ebp-28h] - int v13; // [esp+0h] [ebp-28h] - int v14; // [esp+4h] [ebp-24h] - - result = a2; - if ( this != a2 ) - { - v3 = (_WORD *)*this; - v4 = (_WORD *)*a2; - v5 = a2 + 2; - if ( this + 2 == (_DWORD *)*this ) - { - v8 = a2[1]; - if ( v5 == v4 ) - { - if ( this[1] ) - { - if ( !v8 ) - { - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - a2[1] = this[1]; - result = (_WORD *)*this; - this[1] = 0; - *result = 0; - return result; - } - v10 = a2[2]; - v11 = a2[3]; - v13 = a2[4]; - v14 = a2[5]; - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - this[2] = v10; - this[4] = v13; - this[3] = v11; - this[5] = v14; - v8 = a2[1]; - v9 = this[1]; - } - else - { - if ( v8 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - this[1] = a2[1]; - a2[1] = 0; - result = (_WORD *)*a2; - *(_WORD *)*a2 = 0; - return result; - } - v9 = 0; - } - } - else - { - v12 = a2[2]; - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - *this = v4; - *a2 = v5; - v9 = this[1]; - this[2] = v12; - } - } - else - { - v6 = this[2]; - if ( v5 == v4 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - *a2 = v3; - *this = this + 2; - } - else - { - v7 = a2[2]; - *this = v4; - *a2 = v3; - this[2] = v7; - } - v8 = a2[1]; - v9 = this[1]; - a2[2] = v6; - } - this[1] = v8; - a2[1] = v9; - } - return result; -} - -//----- (0050E0D0) -------------------------------------------------------- -int __fastcall std::wstring::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0050E0E0) -------------------------------------------------------- -_WORD *__fastcall std::wstring::clear(int a1) -{ - _WORD *result; // eax - - result = *(_WORD **)a1; - *(_DWORD *)(a1 + 4) = 0; - *result = 0; - return result; -} - -//----- (0050E0F0) -------------------------------------------------------- -char *__thiscall std::wstring::erase(int *this, char *a2) -{ - int v3; // edx - int v4; // eax - char *v5; // ecx - int v6; // eax - char *v7; // edi - int v8; // esi - int v9; // ebp - - v3 = *this; - v4 = this[1]; - v5 = a2; - v6 = v4 - 1; - v7 = &a2[-v3]; - v8 = (int)&a2[-v3] >> 1; - v9 = v6 - v8; - if ( v6 != v8 ) - { - if ( v9 == 1 ) - { - *(_WORD *)a2 = *((_WORD *)a2 + 1); - } - else - { - memmove(a2, a2 + 2, 2 * v9); - v3 = *this; - v6 = this[1] - 1; - v5 = &v7[*this]; - } - } - this[1] = v6; - *(_WORD *)(v3 + 2 * v6) = 0; - return v5; -} - -//----- (0050E160) -------------------------------------------------------- -_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) -{ - int v4; // esi - int v5; // edi - int v6; // ecx - - v4 = (int)a2 - *this; - v5 = *this + 2 * this[1]; - v6 = v4 >> 1; - if ( a3 == v5 ) - { - this[1] = v6; - *a2 = 0; - return a2; - } - else - { - std::wstring::_M_erase(this, v6, (a3 - (int)a2) >> 1); - return (_WORD *)(v4 + *this); - } -} - -//----- (0050E1D0) -------------------------------------------------------- -int __thiscall std::wstring::erase(int *this, int a2) -{ - int v3; // ebx - - v3 = a2 - *this; - std::wstring::_M_erase(this, v3 >> 1, 1); - return v3 + *this; -} - -//----- (0050E200) -------------------------------------------------------- -_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) -{ - int v4; // esi - int v5; // edi - int v6; // ecx - - v4 = (int)a2 - *this; - v5 = *this + 2 * this[1]; - v6 = v4 >> 1; - if ( a3 == v5 ) - { - this[1] = v6; - *a2 = 0; - return a2; - } - else - { - std::wstring::_M_erase(this, v6, (a3 - (int)a2) >> 1); - return (_WORD *)(v4 + *this); - } -} - -//----- (0050E270) -------------------------------------------------------- -int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3) -{ - int *result; // eax - unsigned int v4; // edx - unsigned int v5; // edx - int v6; // edx - - result = this; - v4 = this[1]; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - a2, - v4); - if ( a3 == -1 ) - { - v6 = *this; - this[1] = a2; - *(_WORD *)(v6 + 2 * a2) = 0; - } - else if ( a3 ) - { - v5 = v4 - a2; - if ( v5 > a3 ) - v5 = a3; - std::wstring::_M_erase(this, a2, v5); - return this; - } - return result; -} - -//----- (0050E2F0) -------------------------------------------------------- -int __fastcall std::wstring::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0050E300) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, wchar_t *String) -{ - unsigned int v3; // eax - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // edi - unsigned int v7; // ebp - _WORD *v8; // ecx - - v3 = wcslen(String); - v4 = this[1]; - if ( v3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = v4 + v3; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, this[1], 0, String, v3); - v5 = (_DWORD *)*this; - } - else if ( v3 ) - { - v8 = (_WORD *)v5 + v4; - if ( v3 == 1 ) - { - *v8 = *String; - } - else - { - memcpy(v8, String, 2 * v3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (0050E3C0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3) -{ - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // esi - unsigned int v7; // edi - _WORD *v8; // ecx - - v4 = this[1]; - if ( a3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = a3 + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, v4, 0, Src, a3); - v5 = (_DWORD *)*this; - } - else if ( a3 ) - { - v8 = (_WORD *)v5 + v4; - if ( a3 == 1 ) - { - *v8 = *Src; - } - else - { - memcpy(v8, Src, 2 * a3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (0050E480) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, int a2) -{ - _DWORD *v3; // edi - int v4; // ecx - int v5; // eax - _WORD *v6; // ebp - _DWORD *v7; // edx - unsigned int v8; // esi - unsigned int v9; // edi - _WORD *v10; // ecx - - v3 = this + 2; - v4 = this[1]; - v5 = *(_DWORD *)(a2 + 4); - v6 = *(_WORD **)a2; - v7 = (_DWORD *)*this; - v8 = v5 + v4; - if ( (_DWORD *)*this == v3 ) - v9 = 7; - else - v9 = this[2]; - if ( v8 > v9 ) - { - std::wstring::_M_mutate((int)this, v4, 0, v6, v5); - v7 = (_DWORD *)*this; - } - else if ( v5 ) - { - v10 = (_WORD *)v7 + v4; - if ( v5 == 1 ) - { - *v10 = *v6; - } - else - { - memcpy(v10, *(const void **)a2, 2 * v5); - v7 = (_DWORD *)*this; - } - } - this[1] = v8; - *((_WORD *)v7 + v8) = 0; - return this; -} - -//----- (0050E520) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - int v5; // eax - _WORD *Src; // ebp - int v7; // ecx - _DWORD *v8; // edx - unsigned int v9; // esi - unsigned int v10; // edi - _WORD *v11; // ecx - - v5 = a4; - if ( a2[1] - a3 <= a4 ) - v5 = a2[1] - a3; - if ( a3 > a2[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::append", - a3, - a2[1]); - Src = (_WORD *)(*a2 + 2 * a3); - v7 = this[1]; - v8 = (_DWORD *)*this; - v9 = v5 + v7; - if ( (_DWORD *)*this == this + 2 ) - v10 = 7; - else - v10 = this[2]; - if ( v9 > v10 ) - { - std::wstring::_M_mutate((int)this, this[1], 0, Src, v5); - v8 = (_DWORD *)*this; - } - else if ( v5 ) - { - v11 = (_WORD *)v8 + v7; - if ( v5 == 1 ) - { - *v11 = *Src; - } - else - { - memcpy(v11, Src, 2 * v5); - v8 = (_DWORD *)*this; - } - } - this[1] = v9; - *((_WORD *)v8 + v9) = 0; - return this; -} - -//----- (0050E600) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3) -{ - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // esi - unsigned int v7; // ebp - _WORD *v8; // ecx - - v4 = this[1]; - if ( a3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = a3 + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, v4, 0, Src, a3); - v5 = (_DWORD *)*this; - } - else if ( a3 ) - { - v8 = (_WORD *)v5 + v4; - if ( a3 == 1 ) - { - *v8 = *Src; - } - else - { - memcpy(v8, Src, 2 * a3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (0050E6C0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, unsigned int a2, __int16 a3) -{ - return std::wstring::_M_replace_aux(this, this[1], 0, a2, a3); -} - -//----- (0050E6F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::assign(_DWORD *this, _DWORD *a2) -{ - _WORD *v3; // eax - _DWORD *v4; // edi - _WORD *v5; // ecx - int v6; // edx - int v7; // ebp - int v9; // edi - int v10; // [esp+1Ch] [ebp-20h] - - v3 = (_WORD *)*this; - v4 = (_DWORD *)*a2; - v5 = a2 + 2; - v6 = a2[1]; - if ( (_DWORD *)*a2 != a2 + 2 ) - { - v10 = a2[2]; - if ( v3 == (_WORD *)(this + 2) ) - { - *this = v4; - this[1] = v6; - this[2] = v10; - } - else - { - this[1] = v6; - v7 = this[2]; - *this = v4; - this[2] = v10; - if ( v3 ) - { - *a2 = v3; - a2[2] = v7; - goto LABEL_5; - } - } - *a2 = v5; - v3 = a2 + 2; - goto LABEL_5; - } - v9 = v6; - if ( v6 ) - { - if ( v6 == 1 ) - { - *v3 = *((_WORD *)a2 + 4); - v9 = 1; - } - else - { - memcpy(v3, a2 + 2, 2 * v6); - v6 = a2[1]; - v3 = (_WORD *)*this; - v5 = (_WORD *)*a2; - v9 = v6; - } - } - this[1] = v6; - v3[v9] = 0; - v3 = v5; -LABEL_5: - a2[1] = 0; - *v3 = 0; - return this; -} - -//----- (0050E7B0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::assign(unsigned int *this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::_M_replace(this, 0, this[1], String, v3); -} - -//----- (0050E7F0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::assign(unsigned int *this, _WORD *a2, int a3) -{ - return std::wstring::_M_replace(this, 0, this[1], a2, a3); -} - -//----- (0050E820) -------------------------------------------------------- -void *__thiscall std::wstring::assign(void *this, int a2) -{ - std::wstring::_M_assign((int)this, a2); - return this; -} - -//----- (0050E840) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::assign(unsigned int *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // eax - - v4 = a2[1] - a3; - if ( v4 > a4 ) - v4 = a4; - if ( a3 > a2[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::assign", - a3, - a2[1]); - return std::wstring::_M_replace(this, 0, this[1], (_WORD *)(*a2 + 2 * a3), v4); -} - -//----- (0050E8B0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::assign(unsigned int *this, _WORD *a2, int a3) -{ - return std::wstring::_M_replace(this, 0, this[1], a2, a3); -} - -//----- (0050E8E0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::assign(_DWORD *this, unsigned int a2, __int16 a3) -{ - return std::wstring::_M_replace_aux(this, 0, this[1], a2, a3); -} - -//----- (0050E910) -------------------------------------------------------- -unsigned int __thiscall std::wstring::insert(unsigned int *this, int a2, _WORD *a3, int a4) -{ - int v5; // esi - unsigned int v6; // ecx - - v5 = a2 - *this; - v6 = this[1]; - if ( v5 >> 1 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5 >> 1, - v6); - std::wstring::_M_replace(this, v5 >> 1, 0, a3, (2 * a4) >> 1); - return v5 + *this; -} - -//----- (0050E980) -------------------------------------------------------- -int __thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4) -{ - int v5; // ebx - - v5 = a2 - *this; - std::wstring::_M_replace_aux(this, v5 >> 1, 0, a3, a4); - return v5 + *this; -} - -//----- (0050E9D0) -------------------------------------------------------- -int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3) -{ - int v4; // ebx - - v4 = a2 - *this; - std::wstring::_M_replace_aux(this, v4 >> 1, 0, 1u, a3); - return v4 + *this; -} - -//----- (0050EA20) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::insert(unsigned int *this, int a2, _WORD *a3, int a4) -{ - unsigned int v4; // eax - - v4 = (int)(a2 - *this) >> 1; - if ( v4 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - this[1]); - return std::wstring::_M_replace(this, v4, 0, a3, a4); -} - -//----- (0050EA80) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4) -{ - return std::wstring::_M_replace_aux(this, (a2 - *this) >> 1, 0, a3, a4); -} - -//----- (0050EAC0) -------------------------------------------------------- -int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3) -{ - int v4; // ebx - - v4 = a2 - *this; - std::wstring::_M_replace_aux(this, v4 >> 1, 0, 1u, a3); - return v4 + *this; -} - -//----- (0050EB10) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, wchar_t *String) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace(this, a2, 0, String, v4); -} - -//----- (0050EB80) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, _WORD *a3, int a4) -{ - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace(this, a2, 0, a3, a4); -} - -//----- (0050EBE0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::insert(unsigned int *this, unsigned int a2, int a3) -{ - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace(this, a2, 0, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); -} - -//----- (0050EC40) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::insert( - unsigned int *this, - unsigned int a2, - _DWORD *a3, - unsigned int a4, - unsigned int a5) -{ - unsigned int v5; // eax - - v5 = a5; - if ( a3[1] - a4 <= a5 ) - v5 = a3[1] - a4; - if ( a4 > a3[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a4, - a3[1]); - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace(this, a2, 0, (_WORD *)(*a3 + 2 * a4), v5); -} - -//----- (0050ECD0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::insert(_DWORD *this, unsigned int a2, unsigned int a3, __int16 a4) -{ - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a2, - this[1]); - return std::wstring::_M_replace_aux(this, a2, 0, a3, a4); -} - -//----- (0050ED30) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>( - unsigned int *this, - int a2, - _WORD *a3, - int a4) -{ - unsigned int v4; // eax - - v4 = (int)(a2 - *this) >> 1; - if ( v4 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - this[1]); - return std::wstring::_M_replace(this, v4, 0, a3, (a4 - (int)a3) >> 1); -} - -//----- (0050EDA0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * a2[1]; - return result; -} - -//----- (0050EDC0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2) -{ - unsigned int v2; // edx - _DWORD *result; // eax - int v4; // edx - - v2 = this[1]; - result = (_DWORD *)a2; - if ( a2 > v2 ) - return std::wstring::_M_replace_aux(this, v2, 0, a2 - v2, 0); - if ( a2 < v2 ) - { - v4 = *this; - this[1] = a2; - *(_WORD *)(v4 + 2 * a2) = 0; - } - return result; -} - -//----- (0050EE10) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3) -{ - unsigned int v3; // edx - _DWORD *result; // eax - int v5; // edx - - v3 = this[1]; - result = (_DWORD *)a2; - if ( v3 < a2 ) - return std::wstring::_M_replace_aux(this, v3, 0, a2 - v3, a3); - if ( v3 > a2 ) - { - v5 = *this; - this[1] = a2; - *(_WORD *)(v5 + 2 * a2) = 0; - } - return result; -} - -//----- (0050EE70) -------------------------------------------------------- -int __thiscall std::wstring::_M_data(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (0050EE80) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memcpy(a1, Src, 2 * Size); - } - return result; -} - -//----- (0050EEC0) -------------------------------------------------------- -int __cdecl std::wstring::_S_move(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memmove(a1, Src, 2 * Size); - } - return result; -} - -//----- (0050EF00) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (0050EF70) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (0050EFE0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, int a4) -{ - unsigned int v4; // edx - unsigned int v5; // eax - - v4 = (int)(a2 - *this) >> 1; - v5 = (a3 - a2) >> 1; - if ( v5 > this[1] - v4 ) - v5 = this[1] - v4; - if ( v4 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - this[1]); - return std::wstring::_M_replace(this, v4, v5, *(_WORD **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (0050F050) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, wchar_t *String) -{ - unsigned int v5; // ebp - unsigned int v6; // ecx - unsigned int v7; // edx - unsigned int v8; // eax - - v5 = this[1]; - v6 = wcslen(String); - v7 = (int)(a2 - *this) >> 1; - v8 = (a3 - a2) >> 1; - if ( v8 > this[1] - v7 ) - v8 = this[1] - v7; - if ( v7 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v7, - this[1]); - return std::wstring::_M_replace(this, v7, v8, String, v6); -} - -//----- (0050F0D0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (0050F140) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, a5); -} - -//----- (0050F1B0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (0050F220) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, a5); -} - -//----- (0050F290) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5) -{ - return std::wstring::_M_replace_aux(this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); -} - -//----- (0050F2C0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (0050F330) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, wchar_t *String) -{ - unsigned int v5; // ebp - unsigned int v6; // ecx - unsigned int v7; // edx - unsigned int v8; // eax - - v5 = this[1]; - v6 = wcslen(String); - v7 = (int)(a2 - *this) >> 1; - v8 = (a3 - a2) >> 1; - if ( v8 > this[1] - v7 ) - v8 = this[1] - v7; - if ( v7 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v7, - this[1]); - return std::wstring::_M_replace(this, v7, v8, String, v6); -} - -//----- (0050F3B0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (0050F420) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, a5); -} - -//----- (0050F490) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, int a4) -{ - unsigned int v4; // edx - unsigned int v5; // eax - - v4 = (int)(a2 - *this) >> 1; - v5 = (a3 - a2) >> 1; - if ( v5 > this[1] - v4 ) - v5 = this[1] - v4; - if ( v4 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - this[1]); - return std::wstring::_M_replace(this, v4, v5, *(_WORD **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (0050F500) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (0050F570) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, int a2, int a3, _WORD *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (int)(a2 - *this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > this[1] - v5 ) - v6 = this[1] - v5; - if ( v5 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (0050F5E0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5) -{ - return std::wstring::_M_replace_aux(this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); -} - -//----- (0050F610) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, wchar_t *String) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = wcslen(String); - v6 = this[1] - a2; - if ( v6 > a3 ) - v6 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace(this, a2, v6, String, v5); -} - -//----- (0050F680) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, _WORD *a4, int a5) -{ - unsigned int v5; // eax - - v5 = this[1] - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace(this, a2, v5, a4, a5); -} - -//----- (0050F6E0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace(unsigned int *this, unsigned int a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - v4 = this[1] - a2; - if ( v4 > a3 ) - v4 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace(this, a2, v4, *(_WORD **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (0050F750) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::replace( - unsigned int *this, - unsigned int a2, - unsigned int a3, - _DWORD *a4, - unsigned int a5, - unsigned int a6) -{ - unsigned int v6; // eax - unsigned int v7; // edx - - v6 = a6; - if ( a4[1] - a5 <= a6 ) - v6 = a4[1] - a5; - if ( a5 > a4[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a5, - a4[1]); - v7 = this[1] - a2; - if ( v7 > a3 ) - v7 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace(this, a2, v7, (_WORD *)(*a4 + 2 * a5), v6); -} - -//----- (0050F7F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 a5) -{ - unsigned int v5; // eax - - v5 = this[1] - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace_aux(this, a2, v5, a4, a5); -} - -//----- (0050F850) -------------------------------------------------------- -void __thiscall std::wstring::reserve(int this, unsigned int a2) -{ - unsigned int v3; // ecx - unsigned int v4; // eax - _WORD *v5; // edi - _WORD *v6; // esi - unsigned int v7; // edx - unsigned int v8; // ebp - _WORD *v9; // eax - _WORD *Block; // ebp - _WORD *v11; // edi - int v12; // eax - unsigned int v13; // eax - - v3 = *(_DWORD *)(this + 4); - v4 = a2; - if ( a2 < v3 ) - { - a2 = v3; - v4 = v3; - } - v5 = *(_WORD **)this; - v6 = (_WORD *)(this + 8); - if ( this + 8 == *(_DWORD *)this ) - v7 = 7; - else - v7 = *(_DWORD *)(this + 8); - if ( v7 != v4 ) - { - v8 = 7; - if ( v7 <= 7 ) - v8 = v7; - if ( v4 <= v8 ) - { - if ( v6 != v5 ) - { - if ( v3 ) - { - if ( v3 != -1 ) - memcpy((void *)(this + 8), *(const void **)this, 2 * (v3 + 1)); - } - else - { - *(_WORD *)(this + 8) = *v5; - } - operator delete(v5); - *(_DWORD *)this = v6; - } - } - else - { - v9 = std::wstring::_M_create(&a2, v7); - Block = *(_WORD **)this; - v11 = v9; - v12 = *(_DWORD *)(this + 4); - if ( v12 ) - { - if ( v12 != -1 ) - memcpy(v11, *(const void **)this, 2 * (v12 + 1)); - } - else - { - *v11 = *Block; - } - if ( Block != v6 ) - operator delete(Block); - v13 = a2; - *(_DWORD *)this = v11; - *(_DWORD *)(this + 8) = v13; - } - } -} - -//----- (0050F960) -------------------------------------------------------- -int __thiscall std::wstring::_M_erase(int *this, int a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // ebp - _WORD *v7; // edi - int result; // eax - - v4 = this[1]; - v5 = *this; - v6 = v4 - (a2 + a3); - if ( v4 != a2 + a3 && a3 ) - { - v7 = (_WORD *)(v5 + 2 * a2); - if ( v6 == 1 ) - { - *v7 = *(_WORD *)(v5 + 2 * (a2 + a3)); - } - else - { - memmove(v7, (const void *)(v5 + 2 * (a2 + a3)), 2 * v6); - v5 = *this; - v4 = this[1]; - } - } - result = v4 - a3; - this[1] = result; - *(_WORD *)(v5 + 2 * result) = 0; - return result; -} - -//----- (0050F9D0) -------------------------------------------------------- -int __fastcall std::wstring::pop_back(int *a1) -{ - int v1; // edx - int result; // eax - - v1 = *a1; - result = a1[1] - 1; - a1[1] = result; - *(_WORD *)(v1 + 2 * result) = 0; - return result; -} - -//----- (0050F9F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::_M_append(_DWORD *this, _WORD *Src, int a3) -{ - _DWORD *v4; // edi - int v5; // ecx - _DWORD *v6; // edx - unsigned int v7; // esi - unsigned int v8; // edi - _WORD *v9; // ecx - - v4 = this + 2; - v5 = this[1]; - v6 = (_DWORD *)*this; - v7 = v5 + a3; - if ( (_DWORD *)*this == v4 ) - v8 = 7; - else - v8 = this[2]; - if ( v7 > v8 ) - { - std::wstring::_M_mutate((int)this, v5, 0, Src, a3); - v6 = (_DWORD *)*this; - } - else if ( a3 ) - { - v9 = (_WORD *)v6 + v5; - if ( a3 == 1 ) - { - *v9 = *Src; - } - else - { - memcpy(v9, Src, 2 * a3); - v6 = (_DWORD *)*this; - } - } - this[1] = v7; - *((_WORD *)v6 + v7) = 0; - return this; -} - -//----- (0050FA90) -------------------------------------------------------- -void __thiscall std::wstring::_M_assign(int this, int a2) -{ - _WORD *v2; // esi - unsigned int v3; // edi - unsigned int v5; // eax - size_t Size; // eax - _WORD *Src; // edx - unsigned int v8; // eax - int v9; // [esp+1Ch] [ebp-30h] - unsigned int v10[8]; // [esp+2Ch] [ebp-20h] BYREF - - if ( this != a2 ) - { - v2 = *(_WORD **)this; - v3 = *(_DWORD *)(a2 + 4); - if ( this + 8 == *(_DWORD *)this ) - v5 = 7; - else - v5 = *(_DWORD *)(this + 8); - if ( v5 < v3 ) - { - v9 = this + 8; - v10[0] = *(_DWORD *)(a2 + 4); - v2 = std::wstring::_M_create(v10, v5); - if ( v9 != *(_DWORD *)this ) - operator delete(*(void **)this); - v8 = v10[0]; - *(_DWORD *)this = v2; - *(_DWORD *)(this + 8) = v8; - Size = 2 * v3; - if ( !v3 ) - goto LABEL_8; - } - else - { - Size = 2 * v3; - if ( !v3 ) - { -LABEL_8: - *(_DWORD *)(this + 4) = v3; - v2[v3] = 0; - return; - } - } - Src = *(_WORD **)a2; - if ( v3 == 1 ) - { - *v2 = *Src; - } - else - { - memcpy(v2, Src, Size); - v2 = *(_WORD **)this; - } - goto LABEL_8; - } -} -// 50FA90: using guessed type unsigned int var_20[8]; - -//----- (0050FB50) -------------------------------------------------------- -void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2) -{ - unsigned int v2; // eax - unsigned int v3; // edx - - v2 = *a1; - if ( *a1 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( v2 > a2 ) - { - v3 = 2 * a2; - if ( v2 < 2 * a2 ) - { - if ( v3 > 0x1FFFFFFF ) - { - *a1 = 0x1FFFFFFF; - return operator new(0x40000000u); - } - *a1 = v3; - v2 = 2 * a2; - } - } - return operator new(2 * v2 + 2); -} - -//----- (0050FBC0) -------------------------------------------------------- -int __thiscall std::wstring::_M_length(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[1] = a2; - return result; -} - -//----- (0050FBD0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_mutate(int this, int a2, int a3, _WORD *a4, int a5) -{ - _WORD *v5; // ebp - unsigned int v7; // eax - _WORD *v8; // eax - _WORD *Block; // edx - _WORD *v10; // edi - _WORD *v11; // ecx - unsigned int result; // eax - _WORD *Src; // [esp+4h] [ebp-48h] - int v14; // [esp+14h] [ebp-38h] - int v15; // [esp+18h] [ebp-34h] - _WORD *v16; // [esp+18h] [ebp-34h] - _WORD *v17; // [esp+1Ch] [ebp-30h] - _WORD *v18; // [esp+1Ch] [ebp-30h] - unsigned int v19[8]; // [esp+2Ch] [ebp-20h] BYREF - - v5 = (_WORD *)(this + 8); - v15 = a2 + a3; - v14 = *(_DWORD *)(this + 4) - (a2 + a3); - v19[0] = *(_DWORD *)(this + 4) + a5 - a3; - if ( this + 8 == *(_DWORD *)this ) - v7 = 7; - else - v7 = *(_DWORD *)(this + 8); - v8 = std::wstring::_M_create(v19, v7); - Block = *(_WORD **)this; - v10 = v8; - if ( a2 ) - { - if ( a2 == 1 ) - { - *v8 = *Block; - } - else - { - v17 = *(_WORD **)this; - memcpy(v8, *(const void **)this, 2 * a2); - Block = v17; - } - } - if ( a4 && a5 ) - { - if ( a5 == 1 ) - { - v10[a2] = *a4; - } - else - { - v18 = Block; - memcpy(&v10[a2], a4, 2 * a5); - Block = v18; - } - } - if ( v14 ) - { - v11 = &v10[a5 + a2]; - if ( v14 == 1 ) - { - *v11 = Block[v15]; - } - else - { - Src = &Block[v15]; - v16 = Block; - memcpy(v11, Src, 2 * v14); - Block = v16; - } - } - if ( v5 != Block ) - operator delete(Block); - result = v19[0]; - *(_DWORD *)this = v10; - *(_DWORD *)(this + 8) = result; - return result; -} -// 50FBD0: using guessed type unsigned int var_20[8]; - -//----- (0050FD30) -------------------------------------------------------- -int __cdecl std::wstring::_S_assign(_WORD *a1, int a2, __int16 a3) -{ - int result; // eax - _WORD *v4; // edx - - result = a2; - v4 = a1; - if ( a2 == 1 ) - { - *a1 = a3; - } - else if ( a2 ) - { - do - { - *v4++ = a3; - --result; - } - while ( result ); - } - return result; -} - -//----- (0050FD70) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::push_back(_DWORD *this, __int16 a2) -{ - int v3; // esi - _DWORD *result; // eax - unsigned int v5; // edi - unsigned int v6; // edx - - v3 = this[1]; - result = (_DWORD *)*this; - v5 = v3 + 1; - if ( (_DWORD *)*this == this + 2 ) - v6 = 7; - else - v6 = this[2]; - if ( v5 > v6 ) - { - std::wstring::_M_mutate((int)this, v3, 0, 0, 1); - result = (_DWORD *)*this; - } - *((_WORD *)result + v3) = a2; - this[1] = v5; - *((_WORD *)result + v3 + 1) = 0; - return result; -} - -//----- (0050FDF0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( result + 2 == (_DWORD *)*result ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - *((_WORD *)a2 + 4) = 0; - this[1] = v3; - return result; -} - -//----- (0050FE50) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) -{ - _WORD *result; // eax - int v4; // ebx - int v5; // ebx - int v6; // edx - - result = (_WORD *)a2; - *this = this + 2; - if ( result + 4 == *(_WORD **)result ) - { - this[2] = *(_DWORD *)(a2 + 8); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - v6 = *(_DWORD *)(a2 + 4); - *(_DWORD *)(a2 + 4) = 0; - result = *(_WORD **)a2; - this[1] = v6; - *result = 0; - } - else - { - *this = *(_DWORD *)a2; - v4 = *(_DWORD *)(a2 + 4); - *(_DWORD *)a2 = a2 + 8; - this[1] = v4; - v5 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = 0; - this[2] = v5; - *(_WORD *)(a2 + 8) = 0; - } - return result; -} - -//----- (0050FED0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) -{ - int v3; // eax - size_t v4; // eax - int v6; // [esp+8h] [ebp-24h] - _DWORD *v7; // [esp+1Ch] [ebp-10h] - - *this = this + 2; - v3 = -2; - if ( String ) - { - v7 = this; - v4 = wcslen(String); - this = v7; - v3 = (int)&String[v4]; - } - LOBYTE(v6) = 0; - return std::wstring::_M_construct(this, String, v3, v6); -} -// 50FF05: variable 'v6' is possibly undefined - -//----- (0050FF20) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (0050FF40) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - int result; // eax - - this[1] = 0; - *this = this + 2; - result = 0; - *((_WORD *)this + 4) = 0; - return result; -} - -//----- (0050FF60) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - int v3; // [esp+8h] [ebp-14h] - - *this = this + 2; - LOBYTE(v3) = 0; - return std::wstring::_M_construct(this, *(_WORD **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); -} -// 50FF80: variable 'v3' is possibly undefined - -//----- (0050FF90) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) -{ - _WORD *result; // eax - _WORD *Src; // ebp - int v6; // edx - size_t Size; // edi - int v8; // esi - int v9; // [esp+1Ch] [ebp-20h] - int v10; // [esp+1Ch] [ebp-20h] - - result = this + 2; - *this = this + 2; - Src = *(_WORD **)a2; - v6 = *(_DWORD *)(a2 + 4); - Size = 2 * v6; - v8 = (2 * v6) >> 1; - if ( (unsigned int)(2 * v6) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v8 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - v10 = *(_DWORD *)(a2 + 4); - result = operator new(Size + 2); - this[2] = v8; - v6 = v10; - *this = result; - } - if ( v8 == 1 ) - { - *result = *Src; - } - else if ( v8 ) - { - v9 = v6; - memcpy(result, Src, Size); - result = (_WORD *)*this; - v6 = v9; - } - this[1] = v8; - result[v6] = 0; - return result; -} - -//----- (00510040) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - *this = this + 2; - v4 = a2[1]; - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - LOBYTE(a4) = 0; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * (v4 - a3), a4); -} - -//----- (005100A0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // esi - unsigned int v5; // eax - unsigned int v6; // eax - - *this = this + 2; - v4 = a4; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - v6 = v5 - a3; - LOBYTE(a4) = 0; - if ( v6 > v4 ) - v6 = v4; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, a4); -} - -//----- (00510110) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - *this = this + 2; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); - v6 = v5 - a3; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); -} -// 510149: variable 'v8' is possibly undefined - -//----- (00510180) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (005101A0) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) -{ - _WORD *v5; // ecx - int result; // eax - _WORD *v7; // eax - _WORD *v8; // edx - unsigned int v9; // eax - - v5 = this + 2; - *this = v5; - if ( a2 > 7 ) - { - if ( a2 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - v7 = operator new(2 * a2 + 2); - this[2] = a2; - *this = v7; - v5 = v7; - } - else - { - if ( !a2 ) - goto LABEL_3; - if ( a2 == 1 ) - { - *((_WORD *)this + 4) = a3; - goto LABEL_3; - } - } - v8 = v5; - v9 = a2; - do - { - *v8++ = a3; - --v9; - } - while ( v9 ); -LABEL_3: - result = 0; - this[1] = a2; - v5[a2] = 0; - return result; -} - -//----- (00510230) -------------------------------------------------------- -int __fastcall std::wstring::basic_string(int a1) -{ - int result; // eax - - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - result = 0; - *(_WORD *)(a1 + 8) = 0; - return result; -} - -//----- (00510250) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - _WORD *result; // eax - size_t Size; // ebx - int v7; // edi - - result = this + 2; - *this = this + 2; - Size = a3 - (_DWORD)Src; - v7 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v7 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v7; - *this = result; - } - if ( v7 == 1 ) - { - *result = *Src; - } - else if ( v7 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v7; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (005102F0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, a3, a4); -} - -//----- (00510300) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, a3, a4); -} - -//----- (00510310) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( result + 2 == (_DWORD *)*result ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - *((_WORD *)a2 + 4) = 0; - this[1] = v3; - return result; -} - -//----- (00510370) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) -{ - _WORD *result; // eax - int v4; // ebx - int v5; // ebx - int v6; // edx - - result = (_WORD *)a2; - *this = this + 2; - if ( result + 4 == *(_WORD **)result ) - { - this[2] = *(_DWORD *)(a2 + 8); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - v6 = *(_DWORD *)(a2 + 4); - *(_DWORD *)(a2 + 4) = 0; - result = *(_WORD **)a2; - this[1] = v6; - *result = 0; - } - else - { - *this = *(_DWORD *)a2; - v4 = *(_DWORD *)(a2 + 4); - *(_DWORD *)a2 = a2 + 8; - this[1] = v4; - v5 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = 0; - this[2] = v5; - *(_WORD *)(a2 + 8) = 0; - } - return result; -} - -//----- (005103F0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) -{ - int v3; // eax - size_t v4; // eax - int v6; // [esp+8h] [ebp-24h] - _DWORD *v7; // [esp+1Ch] [ebp-10h] - - *this = this + 2; - v3 = -2; - if ( String ) - { - v7 = this; - v4 = wcslen(String); - this = v7; - v3 = (int)&String[v4]; - } - LOBYTE(v6) = 0; - return std::wstring::_M_construct(this, String, v3, v6); -} -// 510425: variable 'v6' is possibly undefined - -//----- (00510440) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (00510460) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - int result; // eax - - this[1] = 0; - *this = this + 2; - result = 0; - *((_WORD *)this + 4) = 0; - return result; -} - -//----- (00510480) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - int v3; // [esp+8h] [ebp-14h] - - *this = this + 2; - LOBYTE(v3) = 0; - return std::wstring::_M_construct(this, *(_WORD **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); -} -// 5104A0: variable 'v3' is possibly undefined - -//----- (005104B0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) -{ - _WORD *result; // eax - _WORD *Src; // ebp - int v6; // edx - size_t Size; // edi - int v8; // esi - int v9; // [esp+1Ch] [ebp-20h] - int v10; // [esp+1Ch] [ebp-20h] - - result = this + 2; - *this = this + 2; - Src = *(_WORD **)a2; - v6 = *(_DWORD *)(a2 + 4); - Size = 2 * v6; - v8 = (2 * v6) >> 1; - if ( (unsigned int)(2 * v6) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v8 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - v10 = *(_DWORD *)(a2 + 4); - result = operator new(Size + 2); - this[2] = v8; - v6 = v10; - *this = result; - } - if ( v8 == 1 ) - { - *result = *Src; - } - else if ( v8 ) - { - v9 = v6; - memcpy(result, Src, Size); - result = (_WORD *)*this; - v6 = v9; - } - this[1] = v8; - result[v6] = 0; - return result; -} - -//----- (00510560) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - *this = this + 2; - v4 = a2[1]; - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - LOBYTE(a4) = 0; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * (v4 - a3), a4); -} - -//----- (005105C0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // esi - unsigned int v5; // eax - unsigned int v6; // eax - - *this = this + 2; - v4 = a4; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - v6 = v5 - a3; - LOBYTE(a4) = 0; - if ( v6 > v4 ) - v6 = v4; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, a4); -} - -//----- (00510630) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - *this = this + 2; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); - v6 = v5 - a3; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); -} -// 510669: variable 'v8' is possibly undefined - -//----- (005106A0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (005106C0) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) -{ - _WORD *v5; // ecx - int result; // eax - _WORD *v7; // eax - _WORD *v8; // edx - unsigned int v9; // eax - - v5 = this + 2; - *this = v5; - if ( a2 > 7 ) - { - if ( a2 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - v7 = operator new(2 * a2 + 2); - this[2] = a2; - *this = v7; - v5 = v7; - } - else - { - if ( !a2 ) - goto LABEL_3; - if ( a2 == 1 ) - { - *((_WORD *)this + 4) = a3; - goto LABEL_3; - } - } - v8 = v5; - v9 = a2; - do - { - *v8++ = a3; - --v9; - } - while ( v9 ); -LABEL_3: - result = 0; - this[1] = a2; - v5[a2] = 0; - return result; -} - -//----- (00510750) -------------------------------------------------------- -int __fastcall std::wstring::basic_string(int a1) -{ - int result; // eax - - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - result = 0; - *(_WORD *)(a1 + 8) = 0; - return result; -} - -//----- (00510770) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - _WORD *result; // eax - size_t Size; // ebx - int v7; // edi - - result = this + 2; - *this = this + 2; - Size = a3 - (_DWORD)Src; - v7 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v7 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v7; - *this = result; - } - if ( v7 == 1 ) - { - *result = *Src; - } - else if ( v7 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v7; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (00510810) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, a3, a4); -} - -//----- (00510820) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, a3, a4); -} - -//----- (00510830) -------------------------------------------------------- -void __fastcall std::wstring::~wstring(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (00510860) -------------------------------------------------------- -void __fastcall std::wstring::~wstring(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (00510890) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, int a2) -{ - _WORD *v3; // eax - _WORD *Src; // edx - int v5; // ecx - int v6; // ebp - int v8; // edi - int v9; // [esp+1Ch] [ebp-20h] - - v3 = (_WORD *)*this; - Src = *(_WORD **)a2; - v5 = *(_DWORD *)(a2 + 4); - if ( a2 + 8 != *(_DWORD *)a2 ) - { - v9 = *(_DWORD *)(a2 + 8); - if ( v3 == (_WORD *)(this + 2) ) - { - *this = Src; - this[1] = v5; - this[2] = v9; - } - else - { - *this = Src; - v6 = this[2]; - this[1] = v5; - this[2] = v9; - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v6; - goto LABEL_5; - } - } - *(_DWORD *)a2 = a2 + 8; - v3 = (_WORD *)(a2 + 8); - goto LABEL_5; - } - v8 = v5; - if ( v5 ) - { - if ( v5 == 1 ) - { - *v3 = *Src; - v8 = 1; - } - else - { - memcpy(v3, Src, 2 * v5); - v5 = *(_DWORD *)(a2 + 4); - v3 = (_WORD *)*this; - Src = *(_WORD **)a2; - v8 = v5; - } - } - this[1] = v5; - v3[v8] = 0; - v3 = Src; -LABEL_5: - *(_DWORD *)(a2 + 4) = 0; - *v3 = 0; - return this; -} - -//----- (00510950) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::operator=(unsigned int *this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::_M_replace(this, 0, this[1], String, v3); -} - -//----- (00510990) -------------------------------------------------------- -void *__thiscall std::wstring::operator=(void *this, int a2) -{ - std::wstring::_M_assign((int)this, a2); - return this; -} - -//----- (005109B0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::operator=(unsigned int *this, _WORD *a2, int a3) -{ - std::wstring::_M_replace(this, 0, this[1], a2, a3); - return this; -} - -//----- (005109F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, __int16 a2) -{ - std::wstring::_M_replace_aux(this, 0, this[1], 1u, a2); - return this; -} - -//----- (00510A30) -------------------------------------------------------- -int __thiscall std::wstring::operator[](_DWORD *this, int a2) -{ - return *this + 2 * a2; -} - -//----- (00510A40) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String) -{ - unsigned int v3; // eax - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // edi - unsigned int v7; // ebp - _WORD *v8; // ecx - - v3 = wcslen(String); - v4 = this[1]; - if ( v3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = v3 + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, this[1], 0, String, v3); - v5 = (_DWORD *)*this; - } - else if ( v3 ) - { - v8 = (_WORD *)v5 + v4; - if ( v3 == 1 ) - { - *v8 = *String; - } - else - { - memcpy(v8, String, 2 * v3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (00510B00) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, int a2) -{ - _DWORD *v3; // edi - int v4; // ecx - int v5; // eax - _WORD *v6; // ebp - _DWORD *v7; // edx - unsigned int v8; // esi - unsigned int v9; // edi - _WORD *v10; // ecx - - v3 = this + 2; - v4 = this[1]; - v5 = *(_DWORD *)(a2 + 4); - v6 = *(_WORD **)a2; - v7 = (_DWORD *)*this; - v8 = v5 + v4; - if ( (_DWORD *)*this == v3 ) - v9 = 7; - else - v9 = this[2]; - if ( v8 > v9 ) - { - std::wstring::_M_mutate((int)this, v4, 0, v6, v5); - v7 = (_DWORD *)*this; - } - else if ( v5 ) - { - v10 = (_WORD *)v7 + v4; - if ( v5 == 1 ) - { - *v10 = *v6; - } - else - { - memcpy(v10, *(const void **)a2, 2 * v5); - v7 = (_DWORD *)*this; - } - } - this[1] = v8; - *((_WORD *)v7 + v8) = 0; - return this; -} - -//----- (00510BA0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, _WORD *Src, unsigned int a3) -{ - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // esi - unsigned int v7; // ebp - _WORD *v8; // ecx - - v4 = this[1]; - if ( a3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = a3 + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, v4, 0, Src, a3); - v5 = (_DWORD *)*this; - } - else if ( a3 ) - { - v8 = (_WORD *)v5 + v4; - if ( a3 == 1 ) - { - *v8 = *Src; - } - else - { - memcpy(v8, Src, 2 * a3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (00510C60) -------------------------------------------------------- -int __thiscall std::wstring::operator+=(char *this, __int16 a2) -{ - int result; // eax - char *v3; // ecx - int v4; // ebx - char *v5; // edx - unsigned int v6; // esi - unsigned int v7; // ecx - char **v8; // [esp+1Ch] [ebp-10h] - - result = (int)this; - v3 = this + 8; - v4 = *((_DWORD *)v3 - 1); - v5 = (char *)*((_DWORD *)v3 - 2); - v6 = v4 + 1; - if ( v5 == v3 ) - v7 = 7; - else - v7 = *(_DWORD *)(result + 8); - if ( v6 > v7 ) - { - v8 = (char **)result; - std::wstring::_M_mutate(result, v4, 0, 0, 1); - result = (int)v8; - v5 = *v8; - } - *(_WORD *)&v5[2 * v4] = a2; - *(_DWORD *)(result + 4) = v6; - *(_WORD *)&v5[2 * v4 + 2] = 0; - return result; -} - -//----- (00510CE0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FC68; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F8F0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 55F8F0: using guessed type int (*off_55F8F0)(); -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00510E20) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_55FC68; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F8F0; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 55F8F0: using guessed type int (*off_55F8F0)(); -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00510F70) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FC68; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F8F0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 55F8F0: using guessed type int (*off_55F8F0)(); -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (005110B0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_55FC68; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F8F0; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 55F8F0: using guessed type int (*off_55F8F0)(); -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00511200) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_55FC68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 51123E: variable 'lpfctx' is possibly undefined -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00511260) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FC68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 51129E: variable 'lpfctx' is possibly undefined -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (005112C0) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FC68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5112FE: variable 'lpfctx' is possibly undefined -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00511320) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FC84; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F90C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 55F90C: using guessed type int (*off_55F90C)(); -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00511460) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_55FC84; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F90C; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 55F90C: using guessed type int (*off_55F90C)(); -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (005115B0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FC84; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F90C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 55F90C: using guessed type int (*off_55F90C)(); -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (005116F0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_55FC84; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F90C; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 55F90C: using guessed type int (*off_55F90C)(); -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00511840) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_55FC84; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 51187E: variable 'lpfctx' is possibly undefined -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (005118A0) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FC84; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5118DE: variable 'lpfctx' is possibly undefined -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00511900) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FC84; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 51193E: variable 'lpfctx' is possibly undefined -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00511960) -------------------------------------------------------- -unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) -{ - int v3; // ebx - unsigned int result; // eax - int v5; // esi - unsigned int v6; // edi - int v7; // ebp - int v8; // esi - - this[2] = -1; - this[3] = -1; - v3 = a2[9]; - *this = a3; - result = a2[1]; - this[4] = -1; - v5 = a2[4]; - this[5] = -1; - this[6] = -1; - this[7] = -1; - this[8] = -1; - this[9] = -1; - this[10] = -1; - this[11] = -1; - this[12] = -1; - this[13] = -1; - if ( !result ) - { - if ( !v5 ) - return result; - goto LABEL_3; - } - *((_QWORD *)this + 1) = (int)(result - v3); - *((_QWORD *)this + 2) = a2[2] - v3; - result = a2[3]; - *((_QWORD *)this + 3) = (int)(result - v3); - if ( v5 ) - { -LABEL_3: - *((_QWORD *)this + 4) = v5 - v3; - v6 = a2[5]; - v7 = v6 - v5; - v8 = a2[6]; - *((_QWORD *)this + 5) = v7; - *((_QWORD *)this + 6) = v8 - v3; - if ( result < v6 ) - result = v6; - } - if ( result ) - { - result -= v3; - a2[10] = result; - } - return result; -} - -//----- (00511A50) -------------------------------------------------------- -unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) -{ - int v3; // ebx - unsigned int result; // eax - int v5; // esi - unsigned int v6; // edi - int v7; // ebp - int v8; // esi - - this[2] = -1; - this[3] = -1; - v3 = a2[9]; - *this = a3; - result = a2[1]; - this[4] = -1; - v5 = a2[4]; - this[5] = -1; - this[6] = -1; - this[7] = -1; - this[8] = -1; - this[9] = -1; - this[10] = -1; - this[11] = -1; - this[12] = -1; - this[13] = -1; - if ( !result ) - { - if ( !v5 ) - return result; - goto LABEL_3; - } - *((_QWORD *)this + 1) = (int)(result - v3); - *((_QWORD *)this + 2) = a2[2] - v3; - result = a2[3]; - *((_QWORD *)this + 3) = (int)(result - v3); - if ( v5 ) - { -LABEL_3: - *((_QWORD *)this + 4) = v5 - v3; - v6 = a2[5]; - v7 = v6 - v5; - v8 = a2[6]; - *((_QWORD *)this + 5) = v7; - *((_QWORD *)this + 6) = v8 - v3; - if ( result < v6 ) - result = v6; - } - if ( result ) - { - result -= v3; - a2[10] = result; - } - return result; -} - -//----- (00511B40) -------------------------------------------------------- -int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) -{ - int v1; // eax - _DWORD *v2; // esi - int v3; // ebx - int v4; // edx - int v5; // edi - int v6; // edi - int result; // eax - __int64 v8; // rax - int v9; // ebp - int v10; // ebx - int v11; // ecx - - v1 = *(_DWORD *)(a1 + 8); - v2 = *(_DWORD **)a1; - v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); - if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) - { - v4 = *(_DWORD *)(a1 + 24); - v5 = *(_DWORD *)(a1 + 16); - v2[1] = v3 + v1; - v2[2] = v3 + v5; - v2[3] = v3 + v4; - } - v6 = *(_DWORD *)(a1 + 32); - result = v6 & *(_DWORD *)(a1 + 36); - if ( result != -1 ) - { - v8 = *(_QWORD *)(a1 + 40); - v9 = v3 + *(_DWORD *)(a1 + 48); - v10 = v6 + v3; - v2[4] = v10; - v2[6] = v9; - if ( v8 > 0x7FFFFFFF ) - { - v11 = v10 + 0x7FFFFFFF; - do - { - v10 = v11; - v8 -= 0x7FFFFFFFLL; - v11 += 0x7FFFFFFF; - } - while ( v8 > 0x7FFFFFFF ); - } - result = v10 + v8; - v2[5] = result; - } - return result; -} - -//----- (00511BD0) -------------------------------------------------------- -int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) -{ - int v1; // eax - _DWORD *v2; // esi - int v3; // ebx - int v4; // edx - int v5; // edi - int v6; // edi - int result; // eax - __int64 v8; // rax - int v9; // ebp - int v10; // ebx - int v11; // ecx - - v1 = *(_DWORD *)(a1 + 8); - v2 = *(_DWORD **)a1; - v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); - if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) - { - v4 = *(_DWORD *)(a1 + 24); - v5 = *(_DWORD *)(a1 + 16); - v2[1] = v3 + v1; - v2[2] = v3 + v5; - v2[3] = v3 + v4; - } - v6 = *(_DWORD *)(a1 + 32); - result = v6 & *(_DWORD *)(a1 + 36); - if ( result != -1 ) - { - v8 = *(_QWORD *)(a1 + 40); - v9 = v3 + *(_DWORD *)(a1 + 48); - v10 = v6 + v3; - v2[4] = v10; - v2[6] = v9; - if ( v8 > 0x7FFFFFFF ) - { - v11 = v10 + 0x7FFFFFFF; - do - { - v10 = v11; - v8 -= 0x7FFFFFFFLL; - v11 += 0x7FFFFFFF; - } - while ( v8 > 0x7FFFFFFF ); - } - result = v10 + v8; - v2[5] = result; - } - return result; -} - -//----- (00511C60) -------------------------------------------------------- -unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1) -{ - unsigned int result; // eax - - result = *(_DWORD *)(a1 + 20); - if ( result && *(_DWORD *)(a1 + 12) < result ) - { - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - { - *(_DWORD *)(a1 + 4) = result; - *(_DWORD *)(a1 + 8) = result; - } - *(_DWORD *)(a1 + 12) = result; - } - return result; -} - -//----- (00511C90) -------------------------------------------------------- -_DWORD *__thiscall std::stringbuf::_M_stringbuf_init(_DWORD *this, int a2) -{ - int v2; // esi - int v3; // edx - _DWORD *result; // eax - char *v5; // edx - int v6; // edi - int v7; // [esp+0h] [ebp-2Ch] - - v2 = 0; - v3 = this[10]; - result = (_DWORD *)this[9]; - this[8] = a2; - if ( (a2 & 3) != 0 ) - v2 = v3; - v5 = (char *)result + v3; - if ( result == this + 11 ) - v6 = 15; - else - v6 = this[11]; - if ( (a2 & 8) != 0 ) - { - this[1] = result; - this[2] = result; - this[3] = v5; - } - if ( (a2 & 0x10) != 0 ) - { - this[6] = (char *)result + v6; - this[4] = result; - if ( (unsigned int)v2 > 0x7FFFFFFFuLL ) - { - v7 = v2 - 0x7FFFFFFF; - if ( (((unsigned __int64)(unsigned int)v2 - 0x7FFFFFFF) >> 32) | (unsigned int)(v2 + 1) ) - { - result = (_DWORD *)((char *)result + 0x7FFFFFFF); - } - else - { - v7 = 1; - result = (_DWORD *)((char *)result - 2); - } - v2 = v7; - } - result = (_DWORD *)((char *)result + v2); - this[5] = result; - if ( (a2 & 8) == 0 ) - { - this[1] = v5; - this[2] = v5; - this[3] = v5; - } - } - return result; -} - -//----- (00511D90) -------------------------------------------------------- -int __thiscall std::stringbuf::str(int this, int a2) -{ - unsigned int v3; // eax - - std::string::_M_replace((unsigned int *)(this + 36), 0, *(_DWORD *)(this + 40), *(char **)a2, *(_DWORD *)(a2 + 4)); - v3 = 0; - if ( (*(_BYTE *)(this + 32) & 3) != 0 ) - v3 = *(_DWORD *)(this + 40); - return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); -} - -//----- (00511DF0) -------------------------------------------------------- -void __thiscall std::stringbuf::swap(_DWORD *this, int a2) -{ - int v2; // edx - int v3; // esi - int v4; // ebx - unsigned int v5; // eax - unsigned int v6; // ecx - int v7; // ebx - int v8; // esi - int v9; // ebx - int v10; // ecx - unsigned int v11; // eax - unsigned int v12; // edi - int v13; // eax - int v14; // edx - int v15; // eax - int v16; // edx - int v17; // eax - int v18; // edx - int v19; // eax - int v20; // edx - int v21; // eax - int v22; // eax - _DWORD *v23; // ebx - int v24; // esi - int v25; // edx - int v26; // ecx - int v27; // edi - __int64 v28; // rax - int v29; // ecx - _DWORD *v30; // ebx - int v31; // esi - int v32; // eax - int v33; // ecx - __int64 v34; // rax - int v35; // ecx - int v36; // esi - struct _Unwind_Exception *v37; // edi - struct _Unwind_Exception *v38; // ecx - const std::locale *v39; // [esp+4h] [ebp-E4h] - const std::locale *v40; // [esp+4h] [ebp-E4h] - const std::locale *v41; // [esp+4h] [ebp-E4h] - const std::locale *v42; // [esp+4h] [ebp-E4h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-D0h] - _DWORD *v45; // [esp+54h] [ebp-94h] BYREF - _DWORD *v46; // [esp+58h] [ebp-90h] BYREF - _DWORD *v47; // [esp+5Ch] [ebp-8Ch] BYREF - _DWORD *v48; // [esp+60h] [ebp-88h] - __int64 v49; // [esp+68h] [ebp-80h] - __int64 v50; // [esp+70h] [ebp-78h] - __int64 v51; // [esp+78h] [ebp-70h] - __int64 v52; // [esp+80h] [ebp-68h] - __int64 v53; // [esp+88h] [ebp-60h] - __int64 v54; // [esp+90h] [ebp-58h] - _DWORD *v55; // [esp+98h] [ebp-50h] - __int64 v56; // [esp+A0h] [ebp-48h] - __int64 v57; // [esp+A8h] [ebp-40h] - __int64 v58; // [esp+B0h] [ebp-38h] - __int64 v59; // [esp+B8h] [ebp-30h] - __int64 v60; // [esp+C0h] [ebp-28h] - __int64 v61; // [esp+C8h] [ebp-20h] - - v49 = -1LL; - v48 = (_DWORD *)a2; - v2 = this[1]; - v50 = -1LL; - v3 = this[9]; - v4 = this[4]; - v51 = -1LL; - v52 = -1LL; - v53 = -1LL; - v54 = -1LL; - if ( !v2 ) - { - v5 = 0; - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v49 = v2 - v3; - v50 = this[2] - v3; - v5 = this[3]; - v51 = (int)(v5 - v3); - if ( v4 ) - { -LABEL_3: - v52 = v4 - v3; - v6 = this[5]; - LODWORD(v53) = this[5] - v4; - v7 = this[6]; - v53 = (int)v53; - v54 = v7 - v3; - if ( v5 < v6 ) - v5 = v6; - } - if ( v5 ) - this[10] = v5 - v3; -LABEL_7: - v56 = -1LL; - v55 = this; - v57 = -1LL; - v8 = *(_DWORD *)(a2 + 4); - v58 = -1LL; - v9 = *(_DWORD *)(a2 + 36); - v10 = *(_DWORD *)(a2 + 16); - v59 = -1LL; - v60 = -1LL; - v61 = -1LL; - if ( !v8 ) - { - v11 = 0; - if ( !v10 ) - goto LABEL_13; - goto LABEL_9; - } - v56 = v8 - v9; - v57 = *(_DWORD *)(a2 + 8) - v9; - v11 = *(_DWORD *)(a2 + 12); - v58 = (int)(v11 - v9); - if ( v10 ) - { -LABEL_9: - v59 = v10 - v9; - v12 = *(_DWORD *)(a2 + 20); - v60 = (int)(v12 - v10); - v61 = *(_DWORD *)(a2 + 24) - v9; - if ( v11 < v12 ) - v11 = v12; - } - if ( v11 ) - *(_DWORD *)(a2 + 40) = v11 - v9; -LABEL_13: - this[1] = v8; - *(_DWORD *)(a2 + 4) = v2; - v13 = this[2]; - this[2] = *(_DWORD *)(a2 + 8); - v14 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v13; - v15 = this[3]; - this[3] = v14; - v16 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v15; - v17 = this[4]; - this[4] = v16; - v18 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v17; - v19 = this[5]; - this[5] = v18; - v20 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v19; - v21 = this[6]; - this[6] = v20; - *(_DWORD *)(a2 + 24) = v21; - std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)this + 7, v39); - std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v47); - std::locale::~locale(&v47); - std::locale::locale((volatile signed __int32 **)&v45, (volatile signed __int32 **)(a2 + 28), v40); - std::locale::locale((volatile signed __int32 **)&v46, (volatile signed __int32 **)this + 7, v41); - (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v45); - std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v45); - std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)(a2 + 28), v42); - (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v46); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v46); - std::locale::~locale(&v47); - std::locale::~locale(&v46); - std::locale::~locale(&v45); - v22 = this[8]; - this[8] = *(_DWORD *)(a2 + 32); - *(_DWORD *)(a2 + 32) = v22; - std::string::swap(this + 9, (_DWORD *)(a2 + 36)); - v23 = v55; - v24 = v55[9]; - if ( ((unsigned int)v56 & HIDWORD(v56)) != -1 ) - { - v25 = v58; - v26 = v57; - v55[1] = v24 + v56; - v23[2] = v24 + v26; - v23[3] = v24 + v25; - } - if ( ((unsigned int)v59 & HIDWORD(v59)) != -1 ) - { - v27 = v61; - v28 = v60; - v29 = v24 + v59; - v23[4] = v24 + v59; - for ( v23[6] = v24 + v27; v28 > 0x7FFFFFFF; v28 -= 0x7FFFFFFFLL ) - v29 += 0x7FFFFFFF; - v23[5] = v29 + v28; - } - v30 = v48; - v31 = v48[9]; - if ( ((unsigned int)v49 & HIDWORD(v49)) != -1 ) - { - v32 = v51; - v33 = v50; - v48[1] = v31 + v49; - v30[2] = v31 + v33; - v30[3] = v31 + v32; - } - if ( ((unsigned int)v52 & HIDWORD(v52)) != -1 ) - { - v34 = v53; - v35 = v31 + v52; - v36 = v31 + v54; - v30[4] = v35; - v37 = (struct _Unwind_Exception *)v35; - v30[6] = v36; - if ( v34 > 0x7FFFFFFF ) - { - v38 = (struct _Unwind_Exception *)(v35 + 0x7FFFFFFF); - do - { - lpuexcpta = v38; - v34 -= 0x7FFFFFFFLL; - v38 = (struct _Unwind_Exception *)((char *)v38 + 0x7FFFFFFF); - } - while ( v34 > 0x7FFFFFFF ); - v37 = lpuexcpta; - } - v30[5] = (char *)v37 + v34; - } -} -// 5120BA: variable 'v39' is possibly undefined -// 512102: variable 'v40' is possibly undefined -// 512115: variable 'v41' is possibly undefined -// 51215E: variable 'v42' is possibly undefined - -//----- (005123C0) -------------------------------------------------------- -_DWORD *__thiscall std::stringbuf::setbuf(int this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - int v4; // ebx - _DWORD *v5; // esi - int v6; // edi - int v7; // ecx - int v8; // ebp - int v9; // ebp - int v10; // [esp+0h] [ebp-14h] - - result = (_DWORD *)this; - if ( a2 && a3 >= 0 ) - { - *(_DWORD *)(this + 40) = 0; - v4 = a3; - **(_BYTE **)(this + 36) = 0; - v5 = *(_DWORD **)(this + 36); - v10 = *(_DWORD *)(this + 32) & 0x10; - v6 = *(_DWORD *)(this + 32) & 8; - v7 = (int)a2 + *(_DWORD *)(this + 40); - if ( v5 == result + 11 ) - v8 = 15; - else - v8 = result[11]; - v9 = (int)a2 + v8; - if ( a2 != v5 ) - { - v7 += a3; - v4 = 0; - v9 = v7; - } - if ( v6 ) - { - result[1] = a2; - result[2] = (char *)a2 + v4; - result[3] = v7; - if ( v10 ) - { - result[5] = a2; - result[4] = a2; - result[6] = v9; - } - } - else if ( v10 ) - { - result[5] = a2; - result[4] = a2; - result[6] = v9; - result[1] = v7; - result[2] = v7; - result[3] = v7; - } - } - return result; -} - -//----- (00512480) -------------------------------------------------------- -int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) -{ - _DWORD *v4; // edi - int result; // eax - int v6; // esi - int v7; // ebx - int v8; // ebp - int v9; // edx - int v10; // ebp - __int64 v11; // rax - int v12; // [esp+4h] [ebp-18h] - - v4 = (_DWORD *)this[9]; - result = (int)a2 + this[10]; - v12 = result; - v6 = this[8] & 0x10; - v7 = this[8] & 8; - if ( v4 == this + 11 ) - v8 = 15; - else - v8 = this[11]; - if ( a2 == v4 ) - { - v10 = (int)a2 + v8; - } - else - { - v9 = a3; - a3 = 0; - v12 = v9 + result; - result = v12; - v10 = v12; - } - if ( v7 ) - { - this[1] = a2; - this[2] = (char *)a2 + a3; - result = v12; - this[3] = v12; - } - if ( v6 ) - { - this[6] = v10; - this[4] = a2; - if ( a4 > 0x7FFFFFFFuLL ) - { - v11 = a4 - 0x7FFFFFFFLL; - if ( (a4 + 1) | HIDWORD(v11) ) - { - a2 = (_DWORD *)((char *)a2 + 0x7FFFFFFF); - } - else - { - a2 = (_DWORD *)((char *)a2 - 2); - LODWORD(v11) = 1; - } - a4 = v11; - } - result = (int)a2 + a4; - this[5] = (char *)a2 + a4; - if ( !v7 ) - { - result = v12; - this[1] = v12; - this[2] = v12; - this[3] = v12; - } - } - return result; -} - -//----- (00512590) -------------------------------------------------------- -_DWORD *__thiscall std::stringbuf::seekoff(_DWORD *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5) -{ - unsigned int v5; // edx - unsigned __int8 v6; // bp - unsigned __int8 v7; // di - unsigned int v9; // eax - _DWORD *v10; // ebx - int v11; // esi - int v12; // edi - __int64 v13; // [esp+0h] [ebp-34h] - unsigned __int8 v14; // [esp+8h] [ebp-2Ch] - __int64 v15; // [esp+8h] [ebp-2Ch] - int v16; // [esp+18h] [ebp-1Ch] - char v17; // [esp+1Fh] [ebp-15h] - - *this = -1; - this[1] = -1; - this[2] = 0; - v13 = a3; - v5 = (a5 & a2[8]) >> 4; - v6 = (a4 != 1) & v5 & (((unsigned __int8)a5 & a2[8] & 8) != 0); - v14 = ((a5 >> 3) ^ 1) & 1 & v5; - v7 = (((unsigned __int8)a5 & a2[8] & 8) != 0) & ((a5 >> 4) ^ 1); - if ( v7 ) - { - v16 = a2[1]; - if ( !v16 && a3 ) - return this; - v17 = v6 | v14; - } - else - { - v16 = a2[4]; - if ( !v16 && a3 ) - return this; - v17 = v14 | v6; - if ( !(v14 | v6) ) - return this; - } - v9 = a2[5]; - if ( v9 ) - { - v10 = a2; - if ( v9 > a2[3] ) - { - if ( (a2[8] & 8) == 0 ) - { - a2[1] = v9; - v10 = a2; - a2[2] = v9; - } - v10[3] = v9; - } - } - if ( a4 == 1 ) - { - v15 = a3 + (int)(v9 - v16); - v13 = a2[2] - v16 + a3; - } - else - { - v15 = a3; - if ( a4 == 2 ) - { - v13 = a2[3] - v16 + a3; - v15 = v13; - } - } - if ( v6 | v7 && v13 >= 0 && a2[3] - v16 >= v13 ) - { - *(_QWORD *)this = v13; - v12 = a2[1] + v13; - this[2] = 0; - a2[2] = v12; - } - if ( v15 >= 0 && v17 && a2[3] - v16 >= v15 ) - { - *(_QWORD *)this = v15; - v11 = a2[4] + v15; - this[2] = 0; - a2[5] = v11; - } - return this; -} - -//----- (00512800) -------------------------------------------------------- -_DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - int v7; // ecx - int v8; // ebx - unsigned int v9; // ebp - int v10; // [esp+0h] [ebp-2Ch] - - result = this; - *this = -1; - this[1] = -1; - this[2] = 0; - v7 = a2[8] & 8; - v10 = a6 & a2[8]; - if ( (a6 & v7) != 0 ) - v8 = a2[1]; - else - v8 = a2[4]; - if ( (!a3 || v8) && (v10 & 0x18) != 0 ) - { - v9 = a2[5]; - if ( v9 && v9 > a2[3] ) - { - if ( !v7 ) - { - a2[1] = v9; - a2[2] = v9; - } - a2[3] = v9; - } - if ( a3 >= 0 && a2[3] - v8 >= a3 ) - { - if ( (a6 & v7) != 0 ) - a2[2] = a3 + a2[1]; - if ( (v10 & 0x10) != 0 ) - a2[5] = a2[4] + a3; - *(_QWORD *)result = a3; - result[2] = a4; - } - } - return result; -} - -//----- (005128F0) -------------------------------------------------------- -int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) -{ - __int64 v5; // rax - int v6; // ecx - int result; // eax - - v5 = a4; - this[6] = a3; - v6 = a2; - for ( this[4] = a2; v5 > 0x7FFFFFFF; v5 -= 0x7FFFFFFFLL ) - v6 += 0x7FFFFFFF; - result = v6 + v5; - this[5] = result; - return result; -} - -//----- (00512950) -------------------------------------------------------- -int __thiscall std::stringbuf::overflow(_DWORD *this, int a2) -{ - int v2; // esi - _DWORD *v3; // ecx - unsigned int v4; // eax - unsigned int v5; // ebx - int v6; // edi - unsigned int v7; // eax - char *v8; // eax - _BYTE *v9; // edx - unsigned int v10; // eax - _BYTE *v12; // edx - int v13; // eax - int v14; // ebx - int v15; // eax - _BYTE *v16; // [esp+14h] [ebp-74h] - int v17; // [esp+14h] [ebp-74h] - size_t v18; // [esp+14h] [ebp-74h] - void *Block; // [esp+58h] [ebp-30h] BYREF - int v22; // [esp+5Ch] [ebp-2Ch] - int v23[10]; // [esp+60h] [ebp-28h] BYREF - - v2 = this[8]; - if ( (v2 & 0x10) == 0 ) - return -1; - if ( a2 == -1 ) - return 0; - v3 = (_DWORD *)this[9]; - if ( v3 == this + 11 ) - v4 = 15; - else - v4 = this[11]; - v5 = this[6]; - v6 = this[4]; - v16 = (_BYTE *)this[5]; - if ( v5 - v6 >= v4 ) - { - if ( v5 > (unsigned int)v16 ) - goto LABEL_21; - if ( v4 != 0x3FFFFFFF ) - { - if ( v5 <= (unsigned int)v16 ) - { - v7 = 2 * v4; - LOBYTE(v23[0]) = 0; - Block = v23; - if ( v7 > 0x3FFFFFFF ) - v7 = 0x3FFFFFFF; - v22 = 0; - if ( v7 < 0x200 ) - v7 = 512; - std::string::reserve(&Block, v7); - v8 = (char *)this[4]; - v17 = v22; - if ( v8 ) - { - std::string::_M_replace((unsigned int *)&Block, 0, v22, v8, this[6] - (_DWORD)v8); - v17 = v22; - } - v9 = Block; - v10 = 15; - if ( Block != v23 ) - v10 = v23[0]; - if ( v17 + 1 > v10 ) - { - std::string::_M_mutate((int)&Block, v17, 0, 0, 1u); - v9 = Block; - } - v9[v17] = a2; - v22 = v17 + 1; - *((_BYTE *)Block + v17 + 1) = 0; - std::string::swap(this + 9, &Block); - std::stringbuf::_M_sync(this, (_DWORD *)this[9], this[2] - this[1], this[5] - this[4]); - if ( Block != v23 ) - operator delete(Block); - goto LABEL_22; - } -LABEL_21: - *v16 = a2; -LABEL_22: - ++this[5]; - return a2; - } - return -1; - } - this[4] = v3; - v12 = &v16[(_DWORD)v3 - v6]; - this[6] = (char *)v3 + v4; - this[5] = v12; - if ( (v2 & 8) != 0 ) - { - v18 = this[1]; - v13 = this[3]; - this[1] = v3; - v14 = (int)v3 + v13 - v18 + 1; - v15 = this[2]; - this[3] = v14; - this[2] = (char *)v3 + v15 - v18; - } - *v12 = a2; - ++this[5]; - return a2; -} - -//----- (00512C10) -------------------------------------------------------- -int __thiscall std::stringbuf::pbackfail(int this, int a2) -{ - unsigned int v2; // edx - int result; // eax - char v4; // bl - - v2 = *(_DWORD *)(this + 8); - result = a2; - if ( v2 <= *(_DWORD *)(this + 4) ) - return -1; - if ( a2 == -1 ) - { - result = 0; - *(_DWORD *)(this + 8) = v2 - 1; - return result; - } - v4 = *(_BYTE *)(v2 - 1); - if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && v4 != (_BYTE)a2 ) - return -1; - *(_DWORD *)(this + 8) = v2 - 1; - if ( v4 != (_BYTE)a2 ) - *(_BYTE *)(v2 - 1) = a2; - return result; -} - -//----- (00512C60) -------------------------------------------------------- -int __fastcall std::stringbuf::showmanyc(int a1) -{ - unsigned int v1; // edx - unsigned int v2; // eax - - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - return -1; - v1 = *(_DWORD *)(a1 + 20); - v2 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - if ( v1 > v2 ) - { - *(_DWORD *)(a1 + 12) = v1; - v2 = v1; - } - } - return v2 - *(_DWORD *)(a1 + 8); -} - -//----- (00512C90) -------------------------------------------------------- -int __fastcall std::stringbuf::underflow(int a1) -{ - unsigned int v1; // eax - unsigned int v2; // edx - unsigned __int8 *v3; // eax - - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - return -1; - v1 = *(_DWORD *)(a1 + 20); - v2 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - if ( v1 > v2 ) - { - *(_DWORD *)(a1 + 12) = v1; - v2 = v1; - } - } - v3 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v3 < v2 ) - return *v3; - else - return -1; -} - -//----- (00512CD0) -------------------------------------------------------- -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) -{ - int v2; // edx - unsigned int v3; // eax - int v4; // ecx - int v5; // eax - std::locale *v6; // eax - int v7; // ebx - int v8; // ecx - int v9; // ebx - char *v10; // eax - int v11; // edx - int v12; // ecx - char *v13; // ecx - const std::locale *v14; // [esp+4h] [ebp-A4h] - char *v15; // [esp+14h] [ebp-94h] - __int64 v18; // [esp+60h] [ebp-48h] - int v19; // [esp+68h] [ebp-40h] - __int64 v20; // [esp+70h] [ebp-38h] - __int64 v21; // [esp+78h] [ebp-30h] - int v22; // [esp+80h] [ebp-28h] - int v23; // [esp+88h] [ebp-20h] - - v18 = -1LL; - v19 = -1; - v2 = *((_DWORD *)a2 + 9); - v3 = *((_DWORD *)a2 + 1); - LODWORD(v20) = -1; - v21 = -1LL; - v22 = -1; - v23 = -1; - if ( !v3 ) - { - v4 = *((_DWORD *)a2 + 4); - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v18 = (int)(v3 - v2); - v19 = *((_DWORD *)a2 + 2) - v2; - v3 = *((_DWORD *)a2 + 3); - v20 = (int)(v3 - v2); - v4 = *((_DWORD *)a2 + 4); - if ( v4 ) - { -LABEL_3: - v21 = v4 - v2; - v22 = *((_DWORD *)a2 + 5) - v4; - v23 = *((_DWORD *)a2 + 6) - v2; - if ( v3 < *((_DWORD *)a2 + 5) ) - v3 = *((_DWORD *)a2 + 5); - } - if ( v3 ) - *((_DWORD *)a2 + 10) = v3 - v2; -LABEL_7: - std::streambuf::basic_streambuf(this, a2, v14); - v5 = *((_DWORD *)a2 + 8); - *this = &off_55F928; - this[9] = this + 11; - this[8] = v5; - v15 = (char *)a2 + 44; - v6 = (std::locale *)*((_DWORD *)a2 + 9); - if ( v6 == (std::locale *)((char *)a2 + 44) ) - { - this[11] = *((_DWORD *)a2 + 11); - this[12] = *((_DWORD *)a2 + 12); - this[13] = *((_DWORD *)a2 + 13); - this[14] = *((_DWORD *)a2 + 14); - } - else - { - this[9] = v6; - this[11] = *((_DWORD *)a2 + 11); - } - this[10] = *((_DWORD *)a2 + 10); - *((_BYTE *)a2 + 44) = 0; - *((_DWORD *)a2 + 9) = v15; - *((_DWORD *)a2 + 10) = 0; - v7 = this[9]; - if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) - { - this[1] = v7 + v18; - this[2] = v7 + v19; - this[3] = v7 + v20; - } - if ( ((unsigned int)v21 & HIDWORD(v21)) != -1 ) - { - v8 = v7 + v23; - v9 = v21 + v7; - this[6] = v8; - this[4] = v9; - this[5] = v9 + v22; - } - v10 = (char *)*((_DWORD *)a2 + 9); - v11 = *((_DWORD *)a2 + 8) & 0x10; - if ( v10 == v15 ) - v12 = 15; - else - v12 = *((_DWORD *)a2 + 11); - v13 = &v10[v12]; - if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) - { - *((_DWORD *)a2 + 1) = v10; - *((_DWORD *)a2 + 2) = v10; - *((_DWORD *)a2 + 3) = v10; - if ( v11 ) - { - *((_DWORD *)a2 + 5) = v10; - *((_DWORD *)a2 + 4) = v10; - *((_DWORD *)a2 + 6) = v13; - } - } - else if ( v11 ) - { - *((_DWORD *)a2 + 5) = v10; - *((_DWORD *)a2 + 4) = v10; - *((_DWORD *)a2 + 6) = v13; - *((_DWORD *)a2 + 1) = v10; - *((_DWORD *)a2 + 2) = v10; - *((_DWORD *)a2 + 3) = v10; - } -} -// 512EE3: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 512E18: variable 'v14' is possibly undefined -// 55F928: using guessed type int (*off_55F928)(); - -//----- (00513000) -------------------------------------------------------- -std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) -{ - std::locale *v4; // eax - std::locale *v5; // edx - std::locale *result; // eax - std::locale *v7; // edx - const std::locale *v8; // [esp+4h] [ebp-18h] - - std::streambuf::basic_streambuf(this, (std::locale *)a2, v8); - v4 = a2[8]; - *this = &off_55F928; - this[9] = this + 11; - v5 = a2[9]; - this[8] = v4; - result = (std::locale *)(a2 + 11); - if ( v5 == (std::locale *)(a2 + 11) ) - { - this[11] = a2[11]; - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - } - else - { - this[9] = v5; - this[11] = a2[11]; - } - v7 = a2[10]; - a2[9] = result; - a2[10] = 0; - this[10] = v7; - *((_BYTE *)a2 + 44) = 0; - return result; -} -// 51300E: variable 'v8' is possibly undefined -// 55F928: using guessed type int (*off_55F928)(); - -//----- (00513080) -------------------------------------------------------- -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - - *this = &off_560424; - this[1] = 0; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - std::locale::locale(this + 7); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - *this = &off_55F928; - this[8] = 0; - this[9] = this + 11; - std::string::_M_construct(this + 9, v4, (int)&v4[v3]); - this[8] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[10]; - std::stringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (005131A0) -------------------------------------------------------- -char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - char *result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_560424; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_55F928; - this[10] = 0; - this[8] = a2; - result = (char *)(this + 11); - this[9] = this + 11; - *((_BYTE *)this + 44) = 0; - return result; -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00513210) -------------------------------------------------------- -int __fastcall std::stringbuf::basic_stringbuf(int a1) -{ - _DWORD *v2; // ecx - int result; // eax - - v2 = (_DWORD *)(a1 + 28); - *(v2 - 7) = &off_560424; - *(v2 - 6) = 0; - *(v2 - 5) = 0; - *(v2 - 4) = 0; - *(v2 - 3) = 0; - *(v2 - 2) = 0; - *(v2 - 1) = 0; - std::locale::locale(v2); - result = a1 + 44; - *(_BYTE *)(a1 + 44) = 0; - *(_DWORD *)a1 = &off_55F928; - *(_DWORD *)(a1 + 32) = 24; - *(_DWORD *)(a1 + 36) = a1 + 44; - *(_DWORD *)(a1 + 40) = 0; - return result; -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00513280) -------------------------------------------------------- -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) -{ - int v2; // edx - unsigned int v3; // eax - int v4; // ecx - int v5; // eax - std::locale *v6; // eax - int v7; // ebx - int v8; // ecx - int v9; // ebx - char *v10; // eax - int v11; // edx - int v12; // ecx - char *v13; // ecx - const std::locale *v14; // [esp+4h] [ebp-A4h] - char *v15; // [esp+14h] [ebp-94h] - __int64 v18; // [esp+60h] [ebp-48h] - int v19; // [esp+68h] [ebp-40h] - __int64 v20; // [esp+70h] [ebp-38h] - __int64 v21; // [esp+78h] [ebp-30h] - int v22; // [esp+80h] [ebp-28h] - int v23; // [esp+88h] [ebp-20h] - - v18 = -1LL; - v19 = -1; - v2 = *((_DWORD *)a2 + 9); - v3 = *((_DWORD *)a2 + 1); - LODWORD(v20) = -1; - v21 = -1LL; - v22 = -1; - v23 = -1; - if ( !v3 ) - { - v4 = *((_DWORD *)a2 + 4); - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v18 = (int)(v3 - v2); - v19 = *((_DWORD *)a2 + 2) - v2; - v3 = *((_DWORD *)a2 + 3); - v20 = (int)(v3 - v2); - v4 = *((_DWORD *)a2 + 4); - if ( v4 ) - { -LABEL_3: - v21 = v4 - v2; - v22 = *((_DWORD *)a2 + 5) - v4; - v23 = *((_DWORD *)a2 + 6) - v2; - if ( v3 < *((_DWORD *)a2 + 5) ) - v3 = *((_DWORD *)a2 + 5); - } - if ( v3 ) - *((_DWORD *)a2 + 10) = v3 - v2; -LABEL_7: - std::streambuf::basic_streambuf(this, a2, v14); - v5 = *((_DWORD *)a2 + 8); - *this = &off_55F928; - this[9] = this + 11; - this[8] = v5; - v15 = (char *)a2 + 44; - v6 = (std::locale *)*((_DWORD *)a2 + 9); - if ( v6 == (std::locale *)((char *)a2 + 44) ) - { - this[11] = *((_DWORD *)a2 + 11); - this[12] = *((_DWORD *)a2 + 12); - this[13] = *((_DWORD *)a2 + 13); - this[14] = *((_DWORD *)a2 + 14); - } - else - { - this[9] = v6; - this[11] = *((_DWORD *)a2 + 11); - } - this[10] = *((_DWORD *)a2 + 10); - *((_BYTE *)a2 + 44) = 0; - *((_DWORD *)a2 + 9) = v15; - *((_DWORD *)a2 + 10) = 0; - v7 = this[9]; - if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) - { - this[1] = v7 + v18; - this[2] = v7 + v19; - this[3] = v7 + v20; - } - if ( ((unsigned int)v21 & HIDWORD(v21)) != -1 ) - { - v8 = v7 + v23; - v9 = v21 + v7; - this[6] = v8; - this[4] = v9; - this[5] = v9 + v22; - } - v10 = (char *)*((_DWORD *)a2 + 9); - v11 = *((_DWORD *)a2 + 8) & 0x10; - if ( v10 == v15 ) - v12 = 15; - else - v12 = *((_DWORD *)a2 + 11); - v13 = &v10[v12]; - if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) - { - *((_DWORD *)a2 + 1) = v10; - *((_DWORD *)a2 + 2) = v10; - *((_DWORD *)a2 + 3) = v10; - if ( v11 ) - { - *((_DWORD *)a2 + 5) = v10; - *((_DWORD *)a2 + 4) = v10; - *((_DWORD *)a2 + 6) = v13; - } - } - else if ( v11 ) - { - *((_DWORD *)a2 + 5) = v10; - *((_DWORD *)a2 + 4) = v10; - *((_DWORD *)a2 + 6) = v13; - *((_DWORD *)a2 + 1) = v10; - *((_DWORD *)a2 + 2) = v10; - *((_DWORD *)a2 + 3) = v10; - } -} -// 513493: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 5133C8: variable 'v14' is possibly undefined -// 55F928: using guessed type int (*off_55F928)(); - -//----- (005135B0) -------------------------------------------------------- -std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) -{ - std::locale *v4; // eax - std::locale *v5; // edx - std::locale *result; // eax - std::locale *v7; // edx - const std::locale *v8; // [esp+4h] [ebp-18h] - - std::streambuf::basic_streambuf(this, (std::locale *)a2, v8); - v4 = a2[8]; - *this = &off_55F928; - this[9] = this + 11; - v5 = a2[9]; - this[8] = v4; - result = (std::locale *)(a2 + 11); - if ( v5 == (std::locale *)(a2 + 11) ) - { - this[11] = a2[11]; - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - } - else - { - this[9] = v5; - this[11] = a2[11]; - } - v7 = a2[10]; - a2[9] = result; - a2[10] = 0; - this[10] = v7; - *((_BYTE *)a2 + 44) = 0; - return result; -} -// 5135BE: variable 'v8' is possibly undefined -// 55F928: using guessed type int (*off_55F928)(); - -//----- (00513630) -------------------------------------------------------- -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - - *this = &off_560424; - this[1] = 0; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - std::locale::locale(this + 7); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - *this = &off_55F928; - this[8] = 0; - this[9] = this + 11; - std::string::_M_construct(this + 9, v4, (int)&v4[v3]); - this[8] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[10]; - std::stringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00513750) -------------------------------------------------------- -char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - char *result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_560424; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_55F928; - this[10] = 0; - this[8] = a2; - result = (char *)(this + 11); - this[9] = this + 11; - *((_BYTE *)this + 44) = 0; - return result; -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (005137C0) -------------------------------------------------------- -int __fastcall std::stringbuf::basic_stringbuf(int a1) -{ - _DWORD *v2; // ecx - int result; // eax - - v2 = (_DWORD *)(a1 + 28); - *(v2 - 7) = &off_560424; - *(v2 - 6) = 0; - *(v2 - 5) = 0; - *(v2 - 4) = 0; - *(v2 - 3) = 0; - *(v2 - 2) = 0; - *(v2 - 1) = 0; - std::locale::locale(v2); - result = a1 + 44; - *(_BYTE *)(a1 + 44) = 0; - *(_DWORD *)a1 = &off_55F928; - *(_DWORD *)(a1 + 32) = 24; - *(_DWORD *)(a1 + 36) = a1 + 44; - *(_DWORD *)(a1 + 40) = 0; - return result; -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00513830) -------------------------------------------------------- -void __fastcall std::stringbuf::~stringbuf(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[9]; - *Block = &off_55F928; - if ( v2 != Block + 11 ) - operator delete(v2); - *Block = &off_560424; - std::locale::~locale((_DWORD **)Block + 7); - operator delete(Block); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00513870) -------------------------------------------------------- -void __fastcall std::stringbuf::~stringbuf(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 36); - *(_DWORD *)a1 = &off_55F928; - if ( Block != (void *)(a1 + 44) ) - operator delete(Block); - *(_DWORD *)a1 = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (005138A0) -------------------------------------------------------- -int __thiscall std::stringbuf::operator=(int this, int a2) -{ - int v2; // ecx - int v3; // ebx - unsigned int v4; // eax - unsigned int v5; // edx - int v6; // edx - _BYTE *v7; // eax - int v8; // ecx - int v9; // ebx - char *v10; // eax - char *v11; // ebx - int v12; // edx - int v13; // ecx - char *v14; // ecx - _DWORD *v15; // esi - int v16; // ecx - int v17; // edx - int v18; // ebx - int v19; // edi - __int64 v20; // rax - int v21; // ebx - int v22; // ecx - int v24; // edx - const std::locale *v25; // [esp+4h] [ebp-A4h] - const std::locale *v26; // [esp+4h] [ebp-A4h] - char *Src; // [esp+14h] [ebp-94h] - _DWORD *v29; // [esp+50h] [ebp-58h] BYREF - _DWORD *v30; // [esp+54h] [ebp-54h] BYREF - _DWORD *v31; // [esp+58h] [ebp-50h] - __int64 v32; // [esp+60h] [ebp-48h] - __int64 v33; // [esp+68h] [ebp-40h] - __int64 v34; // [esp+70h] [ebp-38h] - __int64 v35; // [esp+78h] [ebp-30h] - __int64 v36; // [esp+80h] [ebp-28h] - int v37; // [esp+88h] [ebp-20h] - int v38; // [esp+8Ch] [ebp-1Ch] - - v32 = -1LL; - v31 = (_DWORD *)this; - v33 = -1LL; - v2 = *(_DWORD *)(a2 + 16); - v3 = *(_DWORD *)(a2 + 36); - v4 = *(_DWORD *)(a2 + 4); - v34 = -1LL; - v35 = -1LL; - v36 = -1LL; - v37 = -1; - v38 = -1; - if ( !v4 ) - { - if ( !v2 ) - goto LABEL_7; - goto LABEL_3; - } - v32 = (int)(v4 - v3); - v33 = *(_DWORD *)(a2 + 8) - v3; - v4 = *(_DWORD *)(a2 + 12); - v34 = (int)(v4 - v3); - if ( v2 ) - { -LABEL_3: - v35 = v2 - v3; - v5 = *(_DWORD *)(a2 + 20); - v36 = (int)(v5 - v2); - v37 = *(_DWORD *)(a2 + 24) - v3; - v38 = v37 >> 31; - if ( v4 < v5 ) - v4 = v5; - } - if ( v4 ) - *(_DWORD *)(a2 + 40) = v4 - v3; -LABEL_7: - std::streambuf::operator=((volatile signed __int32 **)this, a2); - std::locale::locale((volatile signed __int32 **)&v29, (volatile signed __int32 **)(a2 + 28), v25); - std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)(this + 28), v26); - (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v29); - std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v29); - std::locale::~locale(&v30); - std::locale::~locale(&v29); - v6 = *(_DWORD *)(a2 + 36); - *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); - v7 = *(_BYTE **)(this + 36); - Src = (char *)(a2 + 44); - if ( v6 == a2 + 44 ) - { - v24 = *(_DWORD *)(a2 + 40); - if ( v24 ) - { - if ( v24 == 1 ) - *v7 = *(_BYTE *)(a2 + 44); - else - memcpy(v7, Src, *(_DWORD *)(a2 + 40)); - v24 = *(_DWORD *)(a2 + 40); - v7 = *(_BYTE **)(this + 36); - } - *(_DWORD *)(this + 40) = v24; - v7[v24] = 0; - v7 = *(_BYTE **)(a2 + 36); - } - else - { - v8 = *(_DWORD *)(a2 + 40); - if ( v7 == (_BYTE *)(this + 44) ) - { - *(_DWORD *)(this + 36) = v6; - *(_DWORD *)(this + 40) = v8; - *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); - } - else - { - *(_DWORD *)(this + 36) = v6; - *(_DWORD *)(this + 40) = v8; - v9 = *(_DWORD *)(this + 44); - *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); - if ( v7 ) - { - *(_DWORD *)(a2 + 36) = v7; - *(_DWORD *)(a2 + 44) = v9; - goto LABEL_11; - } - } - v7 = (_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 36) = Src; - } -LABEL_11: - *(_DWORD *)(a2 + 40) = 0; - *v7 = 0; - v10 = *(char **)(a2 + 36); - v11 = &v10[*(_DWORD *)(a2 + 40)]; - v12 = *(_DWORD *)(a2 + 32) & 0x10; - if ( v10 == Src ) - v13 = 15; - else - v13 = *(_DWORD *)(a2 + 44); - v14 = &v10[v13]; - if ( (*(_DWORD *)(a2 + 32) & 8) != 0 ) - { - *(_DWORD *)(a2 + 4) = v10; - *(_DWORD *)(a2 + 8) = v10; - *(_DWORD *)(a2 + 12) = v11; - if ( v12 ) - { - *(_DWORD *)(a2 + 20) = v10; - *(_DWORD *)(a2 + 16) = v10; - *(_DWORD *)(a2 + 24) = v14; - } - } - else if ( v12 ) - { - *(_DWORD *)(a2 + 20) = v10; - *(_DWORD *)(a2 + 16) = v10; - *(_DWORD *)(a2 + 24) = v14; - *(_DWORD *)(a2 + 4) = v11; - *(_DWORD *)(a2 + 8) = v11; - *(_DWORD *)(a2 + 12) = v11; - } - v15 = v31; - v16 = v31[9]; - if ( ((unsigned int)v32 & HIDWORD(v32)) != -1 ) - { - v17 = v34; - v18 = v33; - v31[1] = v16 + v32; - v15[2] = v16 + v18; - v15[3] = v16 + v17; - } - if ( ((unsigned int)v35 & HIDWORD(v35)) != -1 ) - { - v19 = v37; - v20 = v36; - v21 = v16 + v35; - v15[4] = v16 + v35; - v15[6] = v16 + v19; - if ( v20 > 0x7FFFFFFF ) - { - v22 = v21 + 0x7FFFFFFF; - do - { - v21 = v22; - v20 -= 0x7FFFFFFFLL; - v22 += 0x7FFFFFFF; - } - while ( v20 > 0x7FFFFFFF ); - } - v15[5] = v21 + v20; - } - return this; -} -// 5139FB: variable 'v25' is possibly undefined -// 513A17: variable 'v26' is possibly undefined - -//----- (00513D00) -------------------------------------------------------- -unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) -{ - int v3; // ebx - unsigned int result; // eax - int v5; // esi - unsigned int v6; // edi - - this[2] = -1; - this[3] = -1; - v3 = a2[9]; - *this = a3; - result = a2[1]; - this[4] = -1; - v5 = a2[4]; - this[5] = -1; - this[6] = -1; - this[7] = -1; - this[8] = -1; - this[9] = -1; - this[10] = -1; - this[11] = -1; - this[12] = -1; - this[13] = -1; - if ( !result ) - { - if ( !v5 ) - return result; - goto LABEL_3; - } - *((_QWORD *)this + 1) = (int)(result - v3) >> 1; - *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; - result = a2[3]; - *((_QWORD *)this + 3) = (int)(result - v3) >> 1; - if ( v5 ) - { -LABEL_3: - *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); - v6 = a2[5]; - *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; - *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; - if ( result < v6 ) - result = v6; - } - if ( result ) - { - result = (int)(result - v3) >> 1; - a2[10] = result; - } - return result; -} - -//----- (00513E00) -------------------------------------------------------- -unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) -{ - int v3; // ebx - unsigned int result; // eax - int v5; // esi - unsigned int v6; // edi - - this[2] = -1; - this[3] = -1; - v3 = a2[9]; - *this = a3; - result = a2[1]; - this[4] = -1; - v5 = a2[4]; - this[5] = -1; - this[6] = -1; - this[7] = -1; - this[8] = -1; - this[9] = -1; - this[10] = -1; - this[11] = -1; - this[12] = -1; - this[13] = -1; - if ( !result ) - { - if ( !v5 ) - return result; - goto LABEL_3; - } - *((_QWORD *)this + 1) = (int)(result - v3) >> 1; - *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; - result = a2[3]; - *((_QWORD *)this + 3) = (int)(result - v3) >> 1; - if ( v5 ) - { -LABEL_3: - *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); - v6 = a2[5]; - *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; - *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; - if ( result < v6 ) - result = v6; - } - if ( result ) - { - result = (int)(result - v3) >> 1; - a2[10] = result; - } - return result; -} - -//----- (00513F00) -------------------------------------------------------- -int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) -{ - int v1; // eax - _DWORD *v2; // esi - int v3; // ebx - int v4; // edx - int v5; // edi - int v6; // edi - int result; // eax - __int64 v8; // rax - int v9; // ecx - int v10; // ebx - int v11; // ecx - - v1 = *(_DWORD *)(a1 + 8); - v2 = *(_DWORD **)a1; - v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); - if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) - { - v4 = *(_DWORD *)(a1 + 24); - v5 = *(_DWORD *)(a1 + 16); - v2[1] = v3 + 2 * v1; - v2[2] = v3 + 2 * v5; - v2[3] = v3 + 2 * v4; - } - v6 = *(_DWORD *)(a1 + 32); - result = v6 & *(_DWORD *)(a1 + 36); - if ( result != -1 ) - { - v8 = *(_QWORD *)(a1 + 40); - v9 = v3 + 2 * *(_DWORD *)(a1 + 48); - v10 = v3 + 2 * v6; - v2[6] = v9; - v2[4] = v10; - if ( v8 > 0x7FFFFFFF ) - { - v11 = v10 - 2; - do - { - v10 = v11; - v8 -= 0x7FFFFFFFLL; - v11 -= 2; - } - while ( v8 > 0x7FFFFFFF ); - } - result = v10 + 2 * v8; - v2[5] = result; - } - return result; -} - -//----- (00513F90) -------------------------------------------------------- -int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) -{ - int v1; // eax - _DWORD *v2; // esi - int v3; // ebx - int v4; // edx - int v5; // edi - int v6; // edi - int result; // eax - __int64 v8; // rax - int v9; // ecx - int v10; // ebx - int v11; // ecx - - v1 = *(_DWORD *)(a1 + 8); - v2 = *(_DWORD **)a1; - v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); - if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) - { - v4 = *(_DWORD *)(a1 + 24); - v5 = *(_DWORD *)(a1 + 16); - v2[1] = v3 + 2 * v1; - v2[2] = v3 + 2 * v5; - v2[3] = v3 + 2 * v4; - } - v6 = *(_DWORD *)(a1 + 32); - result = v6 & *(_DWORD *)(a1 + 36); - if ( result != -1 ) - { - v8 = *(_QWORD *)(a1 + 40); - v9 = v3 + 2 * *(_DWORD *)(a1 + 48); - v10 = v3 + 2 * v6; - v2[6] = v9; - v2[4] = v10; - if ( v8 > 0x7FFFFFFF ) - { - v11 = v10 - 2; - do - { - v10 = v11; - v8 -= 0x7FFFFFFFLL; - v11 -= 2; - } - while ( v8 > 0x7FFFFFFF ); - } - result = v10 + 2 * v8; - v2[5] = result; - } - return result; -} - -//----- (00514020) -------------------------------------------------------- -unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1) -{ - unsigned int result; // eax - - result = *(_DWORD *)(a1 + 20); - if ( result && *(_DWORD *)(a1 + 12) < result ) - { - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - { - *(_DWORD *)(a1 + 4) = result; - *(_DWORD *)(a1 + 8) = result; - } - *(_DWORD *)(a1 + 12) = result; - } - return result; -} - -//----- (00514050) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::_M_stringbuf_init(_DWORD *this, int a2) -{ - int v2; // ebx - int v3; // edi - _DWORD *result; // eax - int v5; // edi - _DWORD *v6; // [esp+8h] [ebp-1Ch] - - v2 = 0; - v3 = this[10]; - result = (_DWORD *)this[9]; - this[8] = a2; - if ( (a2 & 3) != 0 ) - v2 = v3; - v6 = (_DWORD *)((char *)result + 2 * v3); - if ( result == this + 11 ) - v5 = 14; - else - v5 = 2 * this[11]; - if ( (a2 & 8) != 0 ) - { - this[1] = result; - this[2] = result; - this[3] = v6; - } - if ( (a2 & 0x10) != 0 ) - { - this[6] = (char *)result + v5; - this[4] = result; - if ( (unsigned int)v2 > 0x7FFFFFFFuLL ) - { - if ( (((unsigned __int64)(unsigned int)v2 - 0x7FFFFFFF) >> 32) | (unsigned int)(v2 + 1) ) - { - result = (_DWORD *)((char *)result - 2); - v2 -= 0x7FFFFFFF; - } - else - { - --result; - v2 = 1; - } - } - result = (_DWORD *)((char *)result + 2 * v2); - this[5] = result; - if ( (a2 & 8) == 0 ) - { - result = v6; - this[1] = v6; - this[2] = v6; - this[3] = v6; - } - } - return result; -} - -//----- (00514140) -------------------------------------------------------- -int __thiscall std::wstringbuf::str(int this, int a2) -{ - unsigned int v3; // eax - - std::wstring::_M_replace((unsigned int *)(this + 36), 0, *(_DWORD *)(this + 40), *(_WORD **)a2, *(_DWORD *)(a2 + 4)); - v3 = 0; - if ( (*(_BYTE *)(this + 32) & 3) != 0 ) - v3 = *(_DWORD *)(this + 40); - return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); -} - -//----- (005141A0) -------------------------------------------------------- -void __thiscall std::wstringbuf::swap(_DWORD *this, int a2) -{ - std::locale *v2; // esi - int v3; // ecx - int v4; // ebx - unsigned int v5; // eax - unsigned int v6; // esi - int v7; // esi - int v8; // ecx - int v9; // ebx - unsigned int v10; // eax - unsigned int v11; // edi - int v12; // eax - int v13; // edx - int v14; // eax - int v15; // edx - int v16; // eax - int v17; // edx - int v18; // eax - int v19; // edx - int v20; // eax - int v21; // eax - _DWORD *v22; // ebx - int v23; // ecx - int v24; // edx - int v25; // esi - __int64 v26; // rax - int v27; // edi - int v28; // ecx - bool v29; // cf - _DWORD *v30; // esi - int v31; // ecx - int v32; // edx - int v33; // ebx - int v34; // edi - __int64 v35; // rax - int v36; // ebx - int v37; // ecx - const std::locale *v38; // [esp+4h] [ebp-E4h] - const std::locale *v39; // [esp+4h] [ebp-E4h] - const std::locale *v40; // [esp+4h] [ebp-E4h] - const std::locale *v41; // [esp+4h] [ebp-E4h] - std::locale *v42; // [esp+10h] [ebp-D8h] - std::locale *v43; // [esp+10h] [ebp-D8h] - std::locale *v44; // [esp+10h] [ebp-D8h] - std::locale *v45; // [esp+10h] [ebp-D8h] - std::locale *v46; // [esp+14h] [ebp-D4h] - _DWORD *v48; // [esp+54h] [ebp-94h] BYREF - _DWORD *v49; // [esp+58h] [ebp-90h] BYREF - _DWORD *v50; // [esp+5Ch] [ebp-8Ch] BYREF - _DWORD *v51; // [esp+60h] [ebp-88h] - int v52; // [esp+68h] [ebp-80h] - int v53; // [esp+6Ch] [ebp-7Ch] - int v54; // [esp+70h] [ebp-78h] - int v55; // [esp+74h] [ebp-74h] - __int64 v56; // [esp+78h] [ebp-70h] - int v57; // [esp+80h] [ebp-68h] - int v58; // [esp+84h] [ebp-64h] - __int64 v59; // [esp+88h] [ebp-60h] - int v60; // [esp+90h] [ebp-58h] - int v61; // [esp+94h] [ebp-54h] - _DWORD *v62; // [esp+98h] [ebp-50h] - int v63; // [esp+A0h] [ebp-48h] - int v64; // [esp+A4h] [ebp-44h] - int v65; // [esp+A8h] [ebp-40h] - int v66; // [esp+ACh] [ebp-3Ch] - __int64 v67; // [esp+B0h] [ebp-38h] - int v68; // [esp+B8h] [ebp-30h] - int v69; // [esp+BCh] [ebp-2Ch] - __int64 v70; // [esp+C0h] [ebp-28h] - int v71; // [esp+C8h] [ebp-20h] - int v72; // [esp+CCh] [ebp-1Ch] - - v52 = -1; - v53 = -1; - v2 = (std::locale *)this[1]; - v51 = (_DWORD *)a2; - v54 = -1; - v3 = this[9]; - v55 = -1; - v4 = this[4]; - v56 = -1LL; - v57 = -1; - v58 = -1; - v59 = -1LL; - v60 = -1; - v61 = -1; - v46 = v2; - if ( !v2 ) - { - v5 = 0; - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v52 = ((int)v2 - v3) >> 1; - v53 = ((int)v2 - v3) >> 31; - v42 = (std::locale *)this[2]; - v54 = ((int)v42 - v3) >> 1; - v55 = ((int)v42 - v3) >> 31; - v5 = this[3]; - v56 = (int)(v5 - v3) >> 1; - if ( v4 ) - { -LABEL_3: - v57 = (v4 - v3) >> 1; - v58 = (v4 - v3) >> 31; - v6 = this[5]; - v43 = (std::locale *)this[6]; - v59 = (int)(v6 - v4) >> 1; - v60 = ((int)v43 - v3) >> 1; - v61 = ((int)v43 - v3) >> 31; - if ( v5 < v6 ) - v5 = v6; - } - if ( v5 ) - this[10] = (int)(v5 - v3) >> 1; -LABEL_7: - v63 = -1; - v64 = -1; - v62 = this; - v65 = -1; - v7 = *(_DWORD *)(a2 + 4); - v66 = -1; - v67 = -1LL; - v8 = *(_DWORD *)(a2 + 36); - v9 = *(_DWORD *)(a2 + 16); - v68 = -1; - v69 = -1; - v70 = -1LL; - v71 = -1; - v72 = -1; - if ( !v7 ) - { - v10 = 0; - if ( !v9 ) - goto LABEL_13; - goto LABEL_9; - } - v63 = (v7 - v8) >> 1; - v64 = (v7 - v8) >> 31; - v44 = *(std::locale **)(a2 + 8); - v65 = ((int)v44 - v8) >> 1; - v66 = ((int)v44 - v8) >> 31; - v10 = *(_DWORD *)(a2 + 12); - v67 = (int)(v10 - v8) >> 1; - if ( v9 ) - { -LABEL_9: - v68 = (v9 - v8) >> 1; - v69 = (v9 - v8) >> 31; - v11 = *(_DWORD *)(a2 + 20); - v70 = (int)(v11 - v9) >> 1; - v45 = *(std::locale **)(a2 + 24); - v71 = ((int)v45 - v8) >> 1; - v72 = ((int)v45 - v8) >> 31; - if ( v10 < v11 ) - v10 = v11; - } - if ( v10 ) - *(_DWORD *)(a2 + 40) = (int)(v10 - v8) >> 1; -LABEL_13: - this[1] = v7; - *(_DWORD *)(a2 + 4) = v46; - v12 = this[2]; - this[2] = *(_DWORD *)(a2 + 8); - v13 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v12; - v14 = this[3]; - this[3] = v13; - v15 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v14; - v16 = this[4]; - this[4] = v15; - v17 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v16; - v18 = this[5]; - this[5] = v17; - v19 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v18; - v20 = this[6]; - this[6] = v19; - *(_DWORD *)(a2 + 24) = v20; - std::locale::locale((volatile signed __int32 **)&v50, (volatile signed __int32 **)this + 7, v38); - std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v50); - std::locale::~locale(&v50); - std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)(a2 + 28), v39); - std::locale::locale((volatile signed __int32 **)&v49, (volatile signed __int32 **)this + 7, v40); - (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v48); - std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v48); - std::locale::locale((volatile signed __int32 **)&v50, (volatile signed __int32 **)(a2 + 28), v41); - (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v49); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v49); - std::locale::~locale(&v50); - std::locale::~locale(&v49); - std::locale::~locale(&v48); - v21 = this[8]; - this[8] = *(_DWORD *)(a2 + 32); - *(_DWORD *)(a2 + 32) = v21; - std::wstring::swap(this + 9, (_DWORD *)(a2 + 36)); - v22 = v62; - v23 = v62[9]; - if ( (v63 & v64) != -1 ) - { - v24 = v67; - v25 = v65; - v62[1] = v23 + 2 * v63; - v22[2] = v23 + 2 * v25; - v22[3] = v23 + 2 * v24; - } - if ( (v68 & v69) != -1 ) - { - v26 = v70; - v27 = v23 + 2 * v71; - v28 = v23 + 2 * v68; - v29 = (unsigned int)v70 > 0x7FFFFFFF; - v22[4] = v28; - v22[6] = v27; - if ( v29 + HIDWORD(v26) > 0 ) - { - do - { - v28 -= 2; - v26 -= 0x7FFFFFFFLL; - } - while ( v26 > 0x7FFFFFFF ); - } - v22[5] = v28 + 2 * v26; - } - v30 = v51; - v31 = v51[9]; - if ( (v52 & v53) != -1 ) - { - v32 = v56; - v33 = v54; - v51[1] = v31 + 2 * v52; - v30[2] = v31 + 2 * v33; - v30[3] = v31 + 2 * v32; - } - if ( (v57 & v58) != -1 ) - { - v34 = v60; - v35 = v59; - v36 = v31 + 2 * v57; - v30[4] = v36; - v30[6] = v31 + 2 * v34; - if ( v35 > 0x7FFFFFFF ) - { - v37 = v36 - 2; - do - { - v36 = v37; - v35 -= 0x7FFFFFFFLL; - v37 -= 2; - } - while ( v35 > 0x7FFFFFFF ); - } - v30[5] = v36 + 2 * v35; - } -} -// 514481: variable 'v38' is possibly undefined -// 5144C9: variable 'v39' is possibly undefined -// 5144DC: variable 'v40' is possibly undefined -// 514527: variable 'v41' is possibly undefined - -//----- (00514780) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3) -{ - _WORD *v4; // eax - int v5; // ecx - - if ( !a2 || a3 < 0 ) - return this; - v4 = (_WORD *)this[9]; - this[10] = 0; - *v4 = 0; - std::wstringbuf::_M_sync(this, a2, a3, 0); - return (_DWORD *)v5; -} -// 5147C7: variable 'v5' is possibly undefined - -//----- (005147E0) -------------------------------------------------------- -int __thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) -{ - int result; // eax - _DWORD *v5; // esi - int v6; // ebx - int v7; // edx - int v8; // edi - int v9; // edi - int v10; // esi - int v11; // edi - int v12; // [esp+0h] [ebp-1Ch] - - result = (int)a2; - v5 = (_DWORD *)this[9]; - v6 = this[8] & 0x10; - v7 = (int)a2 + 2 * this[10]; - v12 = this[8] & 8; - if ( v5 == this + 11 ) - v8 = 14; - else - v8 = 2 * this[11]; - v9 = (int)a2 + v8; - if ( a2 != v5 ) - { - v10 = a3; - a3 = 0; - v7 += 2 * v10; - v9 = v7; - } - if ( v12 ) - { - this[1] = a2; - this[3] = v7; - this[2] = (char *)a2 + 2 * a3; - } - if ( v6 ) - { - this[6] = v9; - this[4] = a2; - if ( a4 > 0x7FFFFFFF ) - { - v11 = a4 - 0x7FFFFFFF; - if ( (((unsigned __int64)a4 - 0x7FFFFFFF) >> 32) | (a4 + 1) ) - { - result = (int)a2 - 2; - } - else - { - result = (int)(a2 - 1); - v11 = 1; - } - a4 = v11; - } - this[5] = result + 2 * a4; - result = v12; - if ( !v12 ) - { - this[1] = v7; - this[2] = v7; - this[3] = v7; - } - } - return result; -} - -//----- (005148D0) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, unsigned int a5) -{ - bool v5; // bl - int v6; // ebx - unsigned int v8; // eax - int v9; // edx - int v10; // edx - __int64 v11; // [esp+0h] [ebp-34h] - unsigned int v12; // [esp+8h] [ebp-2Ch] - unsigned __int8 v13; // [esp+8h] [ebp-2Ch] - __int64 v14; // [esp+8h] [ebp-2Ch] - __int16 v15; // [esp+1Dh] [ebp-17h] - char v16; // [esp+1Fh] [ebp-15h] - - *this = -1; - this[1] = -1; - this[2] = 0; - v11 = a3; - v5 = ((unsigned __int8)a5 & *(_BYTE *)(a2 + 32) & 8) != 0; - v12 = (a5 & *(_DWORD *)(a2 + 32)) >> 4; - LOBYTE(v15) = (a4 != 1) & v12 & v5; - v13 = v12 & ((a5 >> 3) ^ 1) & 1; - HIBYTE(v15) = v5 & ((a5 >> 4) ^ 1); - if ( HIBYTE(v15) ) - { - v6 = *(_DWORD *)(a2 + 4); - if ( !v6 && a3 ) - return this; - v16 = v15 | v13; - } - else - { - v6 = *(_DWORD *)(a2 + 16); - if ( !v6 && a3 ) - return this; - v16 = v13 | v15; - if ( !(v13 | (unsigned __int8)v15) ) - return this; - } - v8 = *(_DWORD *)(a2 + 20); - if ( v8 && v8 > *(_DWORD *)(a2 + 12) ) - { - if ( (*(_DWORD *)(a2 + 32) & 8) == 0 ) - { - *(_DWORD *)(a2 + 4) = v8; - *(_DWORD *)(a2 + 8) = v8; - } - *(_DWORD *)(a2 + 12) = v8; - } - if ( a4 == 1 ) - { - v14 = a3 + ((int)(v8 - v6) >> 1); - v11 = ((*(_DWORD *)(a2 + 8) - v6) >> 1) + a3; - } - else - { - v14 = a3; - if ( a4 == 2 ) - { - v11 = ((*(_DWORD *)(a2 + 12) - v6) >> 1) + a3; - v14 = v11; - } - } - if ( v15 && v11 >= 0 && (*(_DWORD *)(a2 + 12) - v6) >> 1 >= v11 ) - { - v10 = *(_DWORD *)(a2 + 4); - *(_QWORD *)this = v11; - this[2] = 0; - *(_DWORD *)(a2 + 8) = v10 + 2 * v11; - } - if ( v14 >= 0 && v16 && (*(_DWORD *)(a2 + 12) - v6) >> 1 >= v14 ) - { - v9 = *(_DWORD *)(a2 + 16); - *(_QWORD *)this = v14; - this[2] = 0; - *(_DWORD *)(a2 + 20) = v9 + 2 * v14; - } - return this; -} - -//----- (00514B10) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - int v7; // ecx - int v8; // ebx - unsigned int v9; // ebp - int v10; // [esp+0h] [ebp-2Ch] - - result = this; - *this = -1; - this[1] = -1; - this[2] = 0; - v7 = a2[8] & 8; - v10 = a6 & a2[8]; - if ( (a6 & v7) != 0 ) - v8 = a2[1]; - else - v8 = a2[4]; - if ( (!a3 || v8) && (v10 & 0x18) != 0 ) - { - v9 = a2[5]; - if ( v9 && v9 > a2[3] ) - { - if ( !v7 ) - { - a2[1] = v9; - a2[2] = v9; - } - a2[3] = v9; - } - if ( a3 >= 0 && __SPAIR64__((a2[3] - v8) >> 31, (a2[3] - v8) >> 1) >= a3 ) - { - if ( (a6 & v7) != 0 ) - a2[2] = a2[1] + 2 * a3; - if ( (v10 & 0x10) != 0 ) - a2[5] = a2[4] + 2 * a3; - *(_QWORD *)result = a3; - result[2] = a4; - } - } - return result; -} - -//----- (00514C00) -------------------------------------------------------- -int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) -{ - __int64 v5; // rax - int v6; // ecx - int result; // eax - - v5 = a4; - this[6] = a3; - v6 = a2; - for ( this[4] = a2; v5 > 0x7FFFFFFF; v5 -= 0x7FFFFFFFLL ) - v6 -= 2; - result = v6 + 2 * v5; - this[5] = result; - return result; -} - -//----- (00514C60) -------------------------------------------------------- -int __thiscall std::wstringbuf::overflow(_DWORD *this, unsigned __int16 a2) -{ - _DWORD *v2; // ebx - unsigned int v3; // edx - unsigned int v4; // esi - unsigned __int16 *v5; // eax - unsigned int v6; // eax - _WORD *v7; // edx - _WORD *v8; // eax - unsigned int v9; // edx - char *v11; // eax - int v12; // edx - int v13; // ecx - int v14; // edx - _DWORD *v15; // edi - char *v16; // eax - int v17; // [esp+1Ch] [ebp-7Ch] - int v18; // [esp+20h] [ebp-78h] - int v19; // [esp+20h] [ebp-78h] - int v20; // [esp+20h] [ebp-78h] - unsigned __int16 lpuexcpta; // [esp+28h] [ebp-70h] - void *Block; // [esp+68h] [ebp-30h] BYREF - int v24; // [esp+6Ch] [ebp-2Ch] - int v25[10]; // [esp+70h] [ebp-28h] BYREF - - v18 = this[8]; - if ( (v18 & 0x10) == 0 ) - return (unsigned __int16)-1; - if ( a2 == 0xFFFF ) - return 0; - v2 = (_DWORD *)this[9]; - if ( v2 == this + 11 ) - v3 = 7; - else - v3 = this[11]; - v4 = this[6]; - v5 = (unsigned __int16 *)this[5]; - v17 = this[4]; - if ( (int)(v4 - v17) >> 1 >= v3 ) - { - if ( v4 > (unsigned int)v5 ) - goto LABEL_22; - if ( v3 != 0x1FFFFFFF ) - { - if ( v4 <= (unsigned int)v5 ) - { - v24 = 0; - Block = v25; - v6 = 2 * v3; - LOWORD(v25[0]) = 0; - if ( 2 * v3 > 0x1FFFFFFF ) - v6 = 0x1FFFFFFF; - if ( v6 < 0x200 ) - v6 = 512; - std::wstring::reserve((int)&Block, v6); - v7 = (_WORD *)this[4]; - v19 = v24; - if ( v7 ) - { - std::wstring::_M_replace((unsigned int *)&Block, 0, v24, v7, (this[6] - (int)v7) >> 1); - v19 = v24; - } - v8 = Block; - v9 = 7; - if ( Block != v25 ) - v9 = v25[0]; - if ( v19 + 1 > v9 ) - { - std::wstring::_M_mutate((int)&Block, v19, 0, 0, 1); - v8 = Block; - } - v8[v19] = a2; - v24 = v19 + 1; - v8[v19 + 1] = 0; - std::wstring::swap(this + 9, &Block); - std::wstringbuf::_M_sync(this, (_DWORD *)this[9], (this[2] - this[1]) >> 1, (this[5] - this[4]) >> 1); - if ( Block != v25 ) - operator delete(Block); - v5 = (unsigned __int16 *)this[5]; - goto LABEL_23; - } -LABEL_22: - *v5 = a2; -LABEL_23: - this[5] = v5 + 1; - return a2; - } - return (unsigned __int16)-1; - } - v11 = (char *)v5 + (_DWORD)v2 - v17; - this[4] = v2; - this[6] = (char *)v2 + 2 * v3; - this[5] = v11; - if ( (v18 & 8) != 0 ) - { - v12 = this[1]; - this[1] = v2; - v20 = v12; - v13 = (int)v2 + this[3] - v12 + 2; - v14 = this[2]; - this[3] = v13; - this[2] = (char *)v2 + v14 - v20; - } - v15 = this; - v16 = v11 + 2; - *((_WORD *)v16 - 1) = a2; - lpuexcpta = a2; - v15[5] = v16; - return lpuexcpta; -} - -//----- (00514F50) -------------------------------------------------------- -int __thiscall std::wstringbuf::pbackfail(int this, int a2) -{ - unsigned int v2; // eax - int v3; // edx - int v4; // esi - - v2 = *(_DWORD *)(this + 8); - v3 = -1; - if ( v2 <= *(_DWORD *)(this + 4) ) - return v3; - if ( (_WORD)a2 == 0xFFFF ) - { - *(_DWORD *)(this + 8) = v2 - 2; - return 0; - } - v4 = *(unsigned __int16 *)(v2 - 2); - if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && (_WORD)v4 != (_WORD)a2 ) - return v3; - *(_DWORD *)(this + 8) = v2 - 2; - v3 = v4; - if ( (_WORD)v4 == (_WORD)a2 ) - return v3; - *(_WORD *)(v2 - 2) = a2; - return a2; -} - -//----- (00514FB0) -------------------------------------------------------- -int __fastcall std::wstringbuf::showmanyc(int a1) -{ - unsigned int v1; // edx - unsigned int v2; // eax - - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - return -1; - v1 = *(_DWORD *)(a1 + 20); - v2 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - if ( v1 > v2 ) - { - *(_DWORD *)(a1 + 12) = v1; - v2 = v1; - } - } - return (int)(v2 - *(_DWORD *)(a1 + 8)) >> 1; -} - -//----- (00514FE0) -------------------------------------------------------- -int __fastcall std::wstringbuf::underflow(int a1) -{ - unsigned int v2; // eax - unsigned int v3; // edx - unsigned __int16 *v4; // eax - - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - return -1; - v2 = *(_DWORD *)(a1 + 20); - v3 = *(_DWORD *)(a1 + 12); - if ( v2 ) - { - if ( v2 > v3 ) - { - *(_DWORD *)(a1 + 12) = v2; - v3 = v2; - } - } - v4 = *(unsigned __int16 **)(a1 + 8); - if ( (unsigned int)v4 < v3 ) - return *v4; - else - return -1; -} - -//----- (00515020) -------------------------------------------------------- -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) -{ - int v2; // edx - unsigned int v3; // eax - int v4; // ecx - int v5; // eax - char *v6; // esi - std::locale *v7; // eax - int v8; // ecx - int v9; // ebx - char *v10; // ecx - int v11; // edx - const std::locale *v12; // [esp+4h] [ebp-A4h] - int v15; // [esp+60h] [ebp-48h] - int v16; // [esp+64h] [ebp-44h] - int v17; // [esp+68h] [ebp-40h] - __int64 v18; // [esp+70h] [ebp-38h] - int v19; // [esp+78h] [ebp-30h] - int v20; // [esp+7Ch] [ebp-2Ch] - int v21; // [esp+80h] [ebp-28h] - int v22; // [esp+88h] [ebp-20h] - - v15 = -1; - v16 = -1; - v17 = -1; - v2 = *((_DWORD *)a2 + 9); - v3 = *((_DWORD *)a2 + 1); - LODWORD(v18) = -1; - v19 = -1; - v20 = -1; - v21 = -1; - v22 = -1; - if ( !v3 ) - { - v4 = *((_DWORD *)a2 + 4); - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v15 = (int)(v3 - v2) >> 1; - v16 = (int)(v3 - v2) >> 31; - v17 = (*((_DWORD *)a2 + 2) - v2) >> 1; - v3 = *((_DWORD *)a2 + 3); - v18 = (int)(v3 - v2) >> 1; - v4 = *((_DWORD *)a2 + 4); - if ( v4 ) - { -LABEL_3: - v19 = (v4 - v2) >> 1; - v20 = (v4 - v2) >> 31; - v21 = (*((_DWORD *)a2 + 5) - v4) >> 1; - v22 = (*((_DWORD *)a2 + 6) - v2) >> 1; - if ( v3 < *((_DWORD *)a2 + 5) ) - v3 = *((_DWORD *)a2 + 5); - } - if ( v3 ) - *((_DWORD *)a2 + 10) = (int)(v3 - v2) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(this, a2, v12); - v5 = *((_DWORD *)a2 + 8); - *this = &off_55F968; - this[9] = this + 11; - this[8] = v5; - v6 = (char *)a2 + 44; - v7 = (std::locale *)*((_DWORD *)a2 + 9); - if ( v7 == (std::locale *)((char *)a2 + 44) ) - { - this[11] = *((_DWORD *)a2 + 11); - this[12] = *((_DWORD *)a2 + 12); - this[13] = *((_DWORD *)a2 + 13); - this[14] = *((_DWORD *)a2 + 14); - } - else - { - this[9] = v7; - this[11] = *((_DWORD *)a2 + 11); - } - this[10] = *((_DWORD *)a2 + 10); - *((_DWORD *)a2 + 9) = v6; - *((_WORD *)a2 + 22) = 0; - v8 = this[9]; - *((_DWORD *)a2 + 10) = 0; - if ( (v15 & v16) != -1 ) - { - this[1] = v8 + 2 * v15; - this[2] = v8 + 2 * v17; - this[3] = v8 + 2 * v18; - } - if ( (v19 & v20) != -1 ) - { - v9 = v8 + 2 * v19; - this[6] = v8 + 2 * v22; - this[4] = v9; - this[5] = v9 + 2 * v21; - } - v10 = (char *)a2 + 58; - v11 = *((_DWORD *)a2 + 8) & 0x10; - if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) - { - *((_DWORD *)a2 + 1) = v6; - *((_DWORD *)a2 + 2) = v6; - *((_DWORD *)a2 + 3) = v6; - if ( v11 ) - { - *((_DWORD *)a2 + 5) = v6; - *((_DWORD *)a2 + 4) = v6; - *((_DWORD *)a2 + 6) = v10; - } - } - else if ( v11 ) - { - *((_DWORD *)a2 + 5) = v6; - *((_DWORD *)a2 + 4) = v6; - *((_DWORD *)a2 + 6) = v10; - *((_DWORD *)a2 + 1) = v6; - *((_DWORD *)a2 + 2) = v6; - *((_DWORD *)a2 + 3) = v6; - } -} -// 51524C: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 515178: variable 'v12' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); - -//----- (00515350) -------------------------------------------------------- -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) -{ - std::locale *v4; // eax - std::locale *v5; // edx - std::locale *v6; // edx - int result; // eax - const std::locale *v8; // [esp+4h] [ebp-18h] - - std::wstreambuf::basic_streambuf(this, (std::locale *)a2, v8); - v4 = a2[8]; - *this = &off_55F968; - this[9] = this + 11; - v5 = a2[9]; - this[8] = v4; - if ( v5 == (std::locale *)(a2 + 11) ) - { - this[11] = a2[11]; - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - } - else - { - this[9] = v5; - this[11] = a2[11]; - } - v6 = a2[10]; - a2[9] = (std::locale *)(a2 + 11); - result = 0; - a2[10] = 0; - this[10] = v6; - *((_WORD *)a2 + 22) = 0; - return result; -} -// 51535E: variable 'v8' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); - -//----- (005153D0) -------------------------------------------------------- -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - - *this = &off_560464; - this[1] = 0; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - std::locale::locale(this + 7); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - *this = &off_55F968; - this[8] = 0; - this[9] = this + 11; - std::wstring::_M_construct(this + 9, v4, (int)&v4[v3]); - this[8] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[10]; - std::wstringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (005154F0) -------------------------------------------------------- -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_560464; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_55F968; - this[10] = 0; - this[8] = a2; - this[9] = this + 11; - result = 0; - *((_WORD *)this + 22) = 0; - return result; -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00515560) -------------------------------------------------------- -int __fastcall std::wstringbuf::basic_stringbuf(int a1) -{ - _DWORD *v2; // ecx - int result; // eax - - v2 = (_DWORD *)(a1 + 28); - *(v2 - 7) = &off_560464; - *(v2 - 6) = 0; - *(v2 - 5) = 0; - *(v2 - 4) = 0; - *(v2 - 3) = 0; - *(v2 - 2) = 0; - *(v2 - 1) = 0; - std::locale::locale(v2); - *(_DWORD *)a1 = &off_55F968; - *(_DWORD *)(a1 + 36) = a1 + 44; - result = 0; - *(_DWORD *)(a1 + 32) = 24; - *(_DWORD *)(a1 + 40) = 0; - *(_WORD *)(a1 + 44) = 0; - return result; -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (005155D0) -------------------------------------------------------- -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) -{ - int v2; // edx - unsigned int v3; // eax - int v4; // ecx - int v5; // eax - char *v6; // esi - std::locale *v7; // eax - int v8; // ecx - int v9; // ebx - char *v10; // ecx - int v11; // edx - const std::locale *v12; // [esp+4h] [ebp-A4h] - int v15; // [esp+60h] [ebp-48h] - int v16; // [esp+64h] [ebp-44h] - int v17; // [esp+68h] [ebp-40h] - __int64 v18; // [esp+70h] [ebp-38h] - int v19; // [esp+78h] [ebp-30h] - int v20; // [esp+7Ch] [ebp-2Ch] - int v21; // [esp+80h] [ebp-28h] - int v22; // [esp+88h] [ebp-20h] - - v15 = -1; - v16 = -1; - v17 = -1; - v2 = *((_DWORD *)a2 + 9); - v3 = *((_DWORD *)a2 + 1); - LODWORD(v18) = -1; - v19 = -1; - v20 = -1; - v21 = -1; - v22 = -1; - if ( !v3 ) - { - v4 = *((_DWORD *)a2 + 4); - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v15 = (int)(v3 - v2) >> 1; - v16 = (int)(v3 - v2) >> 31; - v17 = (*((_DWORD *)a2 + 2) - v2) >> 1; - v3 = *((_DWORD *)a2 + 3); - v18 = (int)(v3 - v2) >> 1; - v4 = *((_DWORD *)a2 + 4); - if ( v4 ) - { -LABEL_3: - v19 = (v4 - v2) >> 1; - v20 = (v4 - v2) >> 31; - v21 = (*((_DWORD *)a2 + 5) - v4) >> 1; - v22 = (*((_DWORD *)a2 + 6) - v2) >> 1; - if ( v3 < *((_DWORD *)a2 + 5) ) - v3 = *((_DWORD *)a2 + 5); - } - if ( v3 ) - *((_DWORD *)a2 + 10) = (int)(v3 - v2) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(this, a2, v12); - v5 = *((_DWORD *)a2 + 8); - *this = &off_55F968; - this[9] = this + 11; - this[8] = v5; - v6 = (char *)a2 + 44; - v7 = (std::locale *)*((_DWORD *)a2 + 9); - if ( v7 == (std::locale *)((char *)a2 + 44) ) - { - this[11] = *((_DWORD *)a2 + 11); - this[12] = *((_DWORD *)a2 + 12); - this[13] = *((_DWORD *)a2 + 13); - this[14] = *((_DWORD *)a2 + 14); - } - else - { - this[9] = v7; - this[11] = *((_DWORD *)a2 + 11); - } - this[10] = *((_DWORD *)a2 + 10); - *((_DWORD *)a2 + 9) = v6; - *((_WORD *)a2 + 22) = 0; - v8 = this[9]; - *((_DWORD *)a2 + 10) = 0; - if ( (v15 & v16) != -1 ) - { - this[1] = v8 + 2 * v15; - this[2] = v8 + 2 * v17; - this[3] = v8 + 2 * v18; - } - if ( (v19 & v20) != -1 ) - { - v9 = v8 + 2 * v19; - this[6] = v8 + 2 * v22; - this[4] = v9; - this[5] = v9 + 2 * v21; - } - v10 = (char *)a2 + 58; - v11 = *((_DWORD *)a2 + 8) & 0x10; - if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) - { - *((_DWORD *)a2 + 1) = v6; - *((_DWORD *)a2 + 2) = v6; - *((_DWORD *)a2 + 3) = v6; - if ( v11 ) - { - *((_DWORD *)a2 + 5) = v6; - *((_DWORD *)a2 + 4) = v6; - *((_DWORD *)a2 + 6) = v10; - } - } - else if ( v11 ) - { - *((_DWORD *)a2 + 5) = v6; - *((_DWORD *)a2 + 4) = v6; - *((_DWORD *)a2 + 6) = v10; - *((_DWORD *)a2 + 1) = v6; - *((_DWORD *)a2 + 2) = v6; - *((_DWORD *)a2 + 3) = v6; - } -} -// 5157FC: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 515728: variable 'v12' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); - -//----- (00515900) -------------------------------------------------------- -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) -{ - std::locale *v4; // eax - std::locale *v5; // edx - std::locale *v6; // edx - int result; // eax - const std::locale *v8; // [esp+4h] [ebp-18h] - - std::wstreambuf::basic_streambuf(this, (std::locale *)a2, v8); - v4 = a2[8]; - *this = &off_55F968; - this[9] = this + 11; - v5 = a2[9]; - this[8] = v4; - if ( v5 == (std::locale *)(a2 + 11) ) - { - this[11] = a2[11]; - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - } - else - { - this[9] = v5; - this[11] = a2[11]; - } - v6 = a2[10]; - a2[9] = (std::locale *)(a2 + 11); - result = 0; - a2[10] = 0; - this[10] = v6; - *((_WORD *)a2 + 22) = 0; - return result; -} -// 51590E: variable 'v8' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); - -//----- (00515980) -------------------------------------------------------- -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - - *this = &off_560464; - this[1] = 0; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - std::locale::locale(this + 7); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - *this = &off_55F968; - this[8] = 0; - this[9] = this + 11; - std::wstring::_M_construct(this + 9, v4, (int)&v4[v3]); - this[8] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[10]; - std::wstringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00515AA0) -------------------------------------------------------- -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_560464; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_55F968; - this[10] = 0; - this[8] = a2; - this[9] = this + 11; - result = 0; - *((_WORD *)this + 22) = 0; - return result; -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00515B10) -------------------------------------------------------- -int __fastcall std::wstringbuf::basic_stringbuf(int a1) -{ - _DWORD *v2; // ecx - int result; // eax - - v2 = (_DWORD *)(a1 + 28); - *(v2 - 7) = &off_560464; - *(v2 - 6) = 0; - *(v2 - 5) = 0; - *(v2 - 4) = 0; - *(v2 - 3) = 0; - *(v2 - 2) = 0; - *(v2 - 1) = 0; - std::locale::locale(v2); - *(_DWORD *)a1 = &off_55F968; - *(_DWORD *)(a1 + 36) = a1 + 44; - result = 0; - *(_DWORD *)(a1 + 32) = 24; - *(_DWORD *)(a1 + 40) = 0; - *(_WORD *)(a1 + 44) = 0; - return result; -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00515B80) -------------------------------------------------------- -void __fastcall std::wstringbuf::~wstringbuf(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[9]; - *Block = &off_55F968; - if ( v2 != Block + 11 ) - operator delete(v2); - *Block = &off_560464; - std::locale::~locale((_DWORD **)Block + 7); - operator delete(Block); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00515BC0) -------------------------------------------------------- -void __fastcall std::wstringbuf::~wstringbuf(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 36); - *(_DWORD *)a1 = &off_55F968; - if ( Block != (void *)(a1 + 44) ) - operator delete(Block); - *(_DWORD *)a1 = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00515BF0) -------------------------------------------------------- -int __thiscall std::wstringbuf::operator=(int this, int a2) -{ - int v2; // ecx - int v3; // edx - unsigned int v4; // eax - unsigned int v5; // ebx - int v6; // edi - _WORD *v7; // eax - int v8; // edx - int v9; // ecx - int v10; // ebx - int v11; // esi - int v12; // edx - int v13; // ebx - int v14; // ecx - int v15; // edx - _WORD *v16; // edx - _DWORD *v17; // esi - int v18; // ecx - int v19; // edx - int v20; // ebx - int v21; // edi - __int64 v22; // rax - int v23; // ebx - int v24; // ecx - _WORD *v26; // ebx - int v27; // edx - int v28; // ecx - const std::locale *v29; // [esp+4h] [ebp-A4h] - const std::locale *v30; // [esp+4h] [ebp-A4h] - void *Srca; // [esp+14h] [ebp-94h] - _WORD *Src; // [esp+14h] [ebp-94h] - _DWORD *v34; // [esp+50h] [ebp-58h] BYREF - _DWORD *v35; // [esp+54h] [ebp-54h] BYREF - _DWORD *v36; // [esp+58h] [ebp-50h] - int v37; // [esp+60h] [ebp-48h] - int v38; // [esp+64h] [ebp-44h] - int v39; // [esp+68h] [ebp-40h] - int v40; // [esp+6Ch] [ebp-3Ch] - __int64 v41; // [esp+70h] [ebp-38h] - int v42; // [esp+78h] [ebp-30h] - int v43; // [esp+7Ch] [ebp-2Ch] - __int64 v44; // [esp+80h] [ebp-28h] - int v45; // [esp+88h] [ebp-20h] - int v46; // [esp+8Ch] [ebp-1Ch] - - v37 = -1; - v38 = -1; - v36 = (_DWORD *)this; - v39 = -1; - v2 = *(_DWORD *)(a2 + 16); - v3 = *(_DWORD *)(a2 + 36); - v4 = *(_DWORD *)(a2 + 4); - v40 = -1; - v41 = -1LL; - v42 = -1; - v43 = -1; - v44 = -1LL; - v45 = -1; - v46 = -1; - if ( !v4 ) - { - if ( !v2 ) - goto LABEL_7; - goto LABEL_3; - } - v37 = (int)(v4 - v3) >> 1; - v38 = (int)(v4 - v3) >> 31; - Srca = *(void **)(a2 + 8); - v39 = ((int)Srca - v3) >> 1; - v40 = ((int)Srca - v3) >> 31; - v4 = *(_DWORD *)(a2 + 12); - v41 = (int)(v4 - v3) >> 1; - if ( v2 ) - { -LABEL_3: - v42 = (v2 - v3) >> 1; - v43 = (v2 - v3) >> 31; - v5 = *(_DWORD *)(a2 + 20); - LODWORD(v44) = (int)(v5 - v2) >> 1; - v6 = *(_DWORD *)(a2 + 24); - v44 = (int)v44; - v45 = (v6 - v3) >> 1; - v46 = (v6 - v3) >> 31; - if ( v4 < v5 ) - v4 = v5; - } - if ( v4 ) - *(_DWORD *)(a2 + 40) = (int)(v4 - v3) >> 1; -LABEL_7: - std::wstreambuf::operator=((volatile signed __int32 **)this, a2); - std::locale::locale((volatile signed __int32 **)&v34, (volatile signed __int32 **)(a2 + 28), v29); - std::locale::locale((volatile signed __int32 **)&v35, (volatile signed __int32 **)(this + 28), v30); - (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v34); - std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v34); - std::locale::~locale(&v35); - std::locale::~locale(&v34); - *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); - v7 = *(_WORD **)(this + 36); - v8 = *(_DWORD *)(a2 + 36); - Src = (_WORD *)(a2 + 44); - if ( v8 != a2 + 44 ) - { - v9 = *(_DWORD *)(a2 + 44); - v10 = *(_DWORD *)(a2 + 40); - if ( v7 == (_WORD *)(this + 44) ) - { - *(_DWORD *)(this + 36) = v8; - *(_DWORD *)(this + 40) = v10; - *(_DWORD *)(this + 44) = v9; - } - else - { - v11 = *(_DWORD *)(this + 44); - *(_DWORD *)(this + 36) = v8; - *(_DWORD *)(this + 40) = v10; - *(_DWORD *)(this + 44) = v9; - if ( v7 ) - { - *(_DWORD *)(a2 + 36) = v7; - *(_DWORD *)(a2 + 44) = v11; - goto LABEL_11; - } - } - v7 = (_WORD *)(a2 + 44); - *(_WORD *)(a2 + 44) = 0; - *(_DWORD *)(a2 + 36) = Src; - *(_DWORD *)(a2 + 40) = 0; - v14 = *(_DWORD *)(a2 + 32) & 0x10; - v16 = (_WORD *)(a2 + 58); - if ( (*(_DWORD *)(a2 + 32) & 8) != 0 ) - goto LABEL_14; - goto LABEL_26; - } - v26 = (_WORD *)(a2 + 44); - v27 = *(_DWORD *)(a2 + 40); - v28 = v27; - if ( v27 ) - { - if ( v27 == 1 ) - { - *v7 = *(_WORD *)(a2 + 44); - v28 = 1; - } - else - { - memcpy(v7, Src, 2 * v27); - v27 = *(_DWORD *)(a2 + 40); - v26 = *(_WORD **)(a2 + 36); - v7 = *(_WORD **)(this + 36); - v28 = v27; - } - } - *(_DWORD *)(this + 40) = v27; - v7[v28] = 0; - v7 = v26; -LABEL_11: - *(_DWORD *)(a2 + 40) = 0; - v12 = *(_DWORD *)(a2 + 32); - *v7 = 0; - v13 = v12 & 8; - v14 = v12 & 0x10; - if ( v7 == Src ) - v15 = 7; - else - v15 = *(_DWORD *)(a2 + 44); - v16 = &v7[v15]; - if ( v13 ) - { -LABEL_14: - *(_DWORD *)(a2 + 4) = v7; - *(_DWORD *)(a2 + 8) = v7; - *(_DWORD *)(a2 + 12) = v7; - if ( v14 ) - { - *(_DWORD *)(a2 + 20) = v7; - *(_DWORD *)(a2 + 16) = v7; - *(_DWORD *)(a2 + 24) = v16; - } - goto LABEL_16; - } -LABEL_26: - if ( v14 ) - { - *(_DWORD *)(a2 + 20) = v7; - *(_DWORD *)(a2 + 16) = v7; - *(_DWORD *)(a2 + 24) = v16; - *(_DWORD *)(a2 + 4) = v7; - *(_DWORD *)(a2 + 8) = v7; - *(_DWORD *)(a2 + 12) = v7; - } -LABEL_16: - v17 = v36; - v18 = v36[9]; - if ( (v37 & v38) != -1 ) - { - v19 = v41; - v20 = v39; - v36[1] = v18 + 2 * v37; - v17[2] = v18 + 2 * v20; - v17[3] = v18 + 2 * v19; - } - if ( (v42 & v43) != -1 ) - { - v21 = v45; - v22 = v44; - v23 = v18 + 2 * v42; - v17[4] = v23; - v17[6] = v18 + 2 * v21; - if ( v22 > 0x7FFFFFFF ) - { - v24 = v23 - 2; - do - { - v23 = v24; - v22 -= 0x7FFFFFFFLL; - v24 -= 2; - } - while ( v22 > 0x7FFFFFFF ); - } - v17[5] = v23 + 2 * v22; - } - return this; -} -// 515D58: variable 'v29' is possibly undefined -// 515D77: variable 'v30' is possibly undefined - -//----- (00516080) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FCA0; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F9A8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 55F9A8: using guessed type int (*off_55F9A8)(); -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (005161C0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - std::messages_byname::messages_byname(this, (int **)*a2, a3); -} - -//----- (005161D0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FCA0; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F9A8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 55F9A8: using guessed type int (*off_55F9A8)(); -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (00516310) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - std::messages_byname::messages_byname(this, (int **)*a2, a3); -} - -//----- (00516320) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_55FCA0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 51635E: variable 'lpfctx' is possibly undefined -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (00516380) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FCA0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5163BE: variable 'lpfctx' is possibly undefined -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (005163E0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FCA0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 51641E: variable 'lpfctx' is possibly undefined -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (00516440) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FCBC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F9C4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 55F9C4: using guessed type int (*off_55F9C4)(); -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (00516580) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - std::messages_byname::messages_byname(this, (int **)*a2, a3); -} - -//----- (00516590) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FCBC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_55F9C4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 55F9C4: using guessed type int (*off_55F9C4)(); -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (005166D0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - std::messages_byname::messages_byname(this, (int **)*a2, a3); -} - -//----- (005166E0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_55FCBC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 51671E: variable 'lpfctx' is possibly undefined -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (00516740) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FCBC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 51677E: variable 'lpfctx' is possibly undefined -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (005167A0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FCBC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5167DE: variable 'lpfctx' is possibly undefined -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (00516800) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FCD8; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_55F9E0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F9E0: using guessed type int (*off_55F9E0)(); -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00516940) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FCD8; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_55F9E0; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F9E0: using guessed type int (*off_55F9E0)(); -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00516A90) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FCD8; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_55F9E0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F9E0: using guessed type int (*off_55F9E0)(); -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00516BD0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FCD8; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_55F9E0; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F9E0: using guessed type int (*off_55F9E0)(); -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00516D20) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) -{ - *Block = &off_55F9E0; - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 55F9E0: using guessed type int (*off_55F9E0)(); - -//----- (00516D40) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_55F9E0; - std::numpunct::~numpunct(a1); -} -// 55F9E0: using guessed type int (*off_55F9E0)(); - -//----- (00516D50) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_55F9E0; - std::numpunct::~numpunct(a1); -} -// 55F9E0: using guessed type int (*off_55F9E0)(); - -//----- (00516D60) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FCFC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_55FA04; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FA04: using guessed type int (*off_55FA04)(); -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00516EA0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FCFC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_55FA04; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FA04: using guessed type int (*off_55FA04)(); -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00516FF0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55FCFC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_55FA04; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55FA04: using guessed type int (*off_55FA04)(); -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00517130) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55FCFC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_55FA04; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55FA04: using guessed type int (*off_55FA04)(); -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00517280) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) -{ - *Block = &off_55FA04; - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 55FA04: using guessed type int (*off_55FA04)(); - -//----- (005172A0) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_55FA04; - std::numpunct::~numpunct(a1); -} -// 55FA04: using guessed type int (*off_55FA04)(); - -//----- (005172B0) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_55FA04; - std::numpunct::~numpunct(a1); -} -// 55FA04: using guessed type int (*off_55FA04)(); - -//----- (005172C0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_55FA28; - result = a3 != 0; - this[1] = result; - return result; -} -// 55FA28: using guessed type int (*off_55FA28)(); - -//----- (005172E0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_55FA28; - result = a3 != 0; - this[1] = result; - return result; -} -// 55FA28: using guessed type int (*off_55FA28)(); - -//----- (00517300) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_55FA28; - result = a3 != 0; - this[1] = result; - return result; -} -// 55FA28: using guessed type int (*off_55FA28)(); - -//----- (00517320) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_55FA28; - result = a3 != 0; - this[1] = result; - return result; -} -// 55FA28: using guessed type int (*off_55FA28)(); - -//----- (00517340) -------------------------------------------------------- -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_55FD20; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 51734C: variable 'Blocka' is possibly undefined -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (00517360) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD20; - std::locale::facet::~facet(a1); -} -// 517360: variable 'v1' is possibly undefined -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (00517370) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD20; - std::locale::facet::~facet(a1); -} -// 517370: variable 'v1' is possibly undefined -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (00517380) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_55FA54; - result = a3 != 0; - this[1] = result; - return result; -} -// 55FA54: using guessed type int (*off_55FA54)(); - -//----- (005173A0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_55FA54; - result = a3 != 0; - this[1] = result; - return result; -} -// 55FA54: using guessed type int (*off_55FA54)(); - -//----- (005173C0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_55FA54; - result = a3 != 0; - this[1] = result; - return result; -} -// 55FA54: using guessed type int (*off_55FA54)(); - -//----- (005173E0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_55FA54; - result = a3 != 0; - this[1] = result; - return result; -} -// 55FA54: using guessed type int (*off_55FA54)(); - -//----- (00517400) -------------------------------------------------------- -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_55FD4C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 51740C: variable 'Blocka' is possibly undefined -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (00517420) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD4C; - std::locale::facet::~facet(a1); -} -// 517420: variable 'v1' is possibly undefined -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (00517430) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD4C; - std::locale::facet::~facet(a1); -} -// 517430: variable 'v1' is possibly undefined -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (00517440) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55F820; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FA80; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FA80: using guessed type int (*off_55FA80)(); - -//----- (00517590) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55F820; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FA80; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FA80: using guessed type int (*off_55FA80)(); - -//----- (005176F0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55F820; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FA80; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FA80: using guessed type int (*off_55FA80)(); - -//----- (00517840) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55F820; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FA80; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F820: using guessed type int (__cdecl *off_55F820)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FA80: using guessed type int (*off_55FA80)(); - -//----- (005179A0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_55FA80; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 55FA80: using guessed type int (*off_55FA80)(); - -//----- (005179C0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_55FA80; - std::moneypunct::~moneypunct(a1); -} -// 55FA80: using guessed type int (*off_55FA80)(); - -//----- (005179D0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_55FA80; - std::moneypunct::~moneypunct(a1); -} -// 55FA80: using guessed type int (*off_55FA80)(); - -//----- (005179E0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55F854; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FAB4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FAB4: using guessed type int (*off_55FAB4)(); - -//----- (00517B30) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55F854; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FAB4; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FAB4: using guessed type int (*off_55FAB4)(); - -//----- (00517C90) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55F854; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FAB4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FAB4: using guessed type int (*off_55FAB4)(); - -//----- (00517DE0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55F854; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FAB4; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F854: using guessed type int (__cdecl *off_55F854)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FAB4: using guessed type int (*off_55FAB4)(); - -//----- (00517F40) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_55FAB4; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 55FAB4: using guessed type int (*off_55FAB4)(); - -//----- (00517F60) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_55FAB4; - std::moneypunct::~moneypunct(a1); -} -// 55FAB4: using guessed type int (*off_55FAB4)(); - -//----- (00517F70) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_55FAB4; - std::moneypunct::~moneypunct(a1); -} -// 55FAB4: using guessed type int (*off_55FAB4)(); - -//----- (00517F80) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55F888; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FAE8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FAE8: using guessed type int (*off_55FAE8)(); - -//----- (005180D0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55F888; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FAE8; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FAE8: using guessed type int (*off_55FAE8)(); - -//----- (00518230) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55F888; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FAE8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FAE8: using guessed type int (*off_55FAE8)(); - -//----- (00518380) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55F888; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FAE8; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F888: using guessed type int (__cdecl *off_55F888)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FAE8: using guessed type int (*off_55FAE8)(); - -//----- (005184E0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_55FAE8; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 55FAE8: using guessed type int (*off_55FAE8)(); - -//----- (00518500) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_55FAE8; - std::moneypunct::~moneypunct(a1); -} -// 55FAE8: using guessed type int (*off_55FAE8)(); - -//----- (00518510) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_55FAE8; - std::moneypunct::~moneypunct(a1); -} -// 55FAE8: using guessed type int (*off_55FAE8)(); - -//----- (00518520) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55F8BC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FB1C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FB1C: using guessed type int (*off_55FB1C)(); - -//----- (00518670) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55F8BC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FB1C; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FB1C: using guessed type int (*off_55FB1C)(); - -//----- (005187D0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_55F8BC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FB1C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FB1C: using guessed type int (*off_55FB1C)(); - -//----- (00518920) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_55F8BC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_55FB1C; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 55F8BC: using guessed type int (__cdecl *off_55F8BC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 55FB1C: using guessed type int (*off_55FB1C)(); - -//----- (00518A80) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_55FB1C; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 55FB1C: using guessed type int (*off_55FB1C)(); - -//----- (00518AA0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_55FB1C; - std::moneypunct::~moneypunct(a1); -} -// 55FB1C: using guessed type int (*off_55FB1C)(); - -//----- (00518AB0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_55FB1C; - std::moneypunct::~moneypunct(a1); -} -// 55FB1C: using guessed type int (*off_55FB1C)(); - -//----- (00518AC0) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 12); - std::string::_M_replace((unsigned int *)(this + 48), 0, *(_DWORD *)(this + 52), *(char **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 44) & 3) != 0 ) - v4 = *(_DWORD *)(this + 52); - return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); -} - -//----- (00518B30) -------------------------------------------------------- -void __thiscall std::basic_stringstream,std::allocator>::swap( - _DWORD *this, - _DWORD *a2) -{ - std::ios_base *v3; // edi - std::ios_base *v4; // esi - int v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::stringbuf::swap(this + 3, (int)(a2 + 3)); -} -// 518B70: variable 'v9' is possibly undefined - -//----- (00518C00) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+0h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 18; - std::ios_base::ios_base(this + 18); - *((_WORD *)this + 94) = 0; - v2 = a2[1]; - *this = &unk_55B244; - this[1] = v2; - this[46] = 0; - v3 = *a2; - this[48] = 0; - this[49] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[18] = &unk_55B258; - this[50] = 0; - this[51] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 45)); - this[48] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[46] = v5; - *((_WORD *)this + 94) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; - *this = &off_55FB54; - this[18] = off_55FB7C; - this[2] = off_55FB68; - std::stringbuf::basic_stringbuf(this + 3, (std::locale *)(a2 + 3)); - this[48] = this + 3; -} -// 518D92: positive sp value 4 has been found -// 518CA5: variable 'v6' is possibly undefined -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); - -//----- (00518DA0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int a2, - int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - _DWORD *v6; // [esp+20h] [ebp-48h] - int v7; // [esp+24h] [ebp-44h] - - v7 = (int)(this + 18); - std::ios_base::ios_base(this + 18); - this[46] = 0; - *((_WORD *)this + 94) = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - *this = &unk_55B244; - this[18] = &unk_55B258; - this[1] = 0; - std::ios::init(v7, 0); - this[2] = &unk_55B26C; - this[18] = &unk_55B280; - std::ios::init(v7, 0); - *this = &off_55FB54; - this[18] = off_55FB7C; - this[2] = off_55FB68; - this[3] = &off_560424; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - v6 = this + 3; - std::locale::locale(this + 10); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - this[3] = &off_55F928; - this[11] = 0; - this[12] = this + 14; - std::string::_M_construct(this + 12, v4, (int)&v4[v3]); - this[11] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[13]; - std::stringbuf::_M_sync(v6, (_DWORD *)this[12], 0, v5); - std::ios::init(v7, (int)v6); -} -// 518FBE: positive sp value 4 has been found -// 55F928: using guessed type int (*off_55F928)(); -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00519000) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int a2) -{ - int v2; // [esp+24h] [ebp-44h] - - v2 = (int)(this + 18); - std::ios_base::ios_base(this + 18); - this[46] = 0; - *((_WORD *)this + 94) = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - *this = &unk_55B244; - this[18] = &unk_55B258; - this[1] = 0; - std::ios::init(v2, 0); - this[2] = &unk_55B26C; - this[18] = &unk_55B280; - std::ios::init(v2, 0); - *this = &off_55FB54; - this[18] = off_55FB7C; - this[2] = off_55FB68; - this[3] = &off_560424; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[11] = a2; - this[3] = &off_55F928; - this[12] = this + 14; - this[13] = 0; - *((_BYTE *)this + 56) = 0; - std::ios::init(v2, (int)(this + 3)); -} -// 5191BD: positive sp value 4 has been found -// 55F928: using guessed type int (*off_55F928)(); -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (005191E0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 72; - std::ios_base::ios_base((_DWORD *)(a1 + 72)); - *(_DWORD *)(a1 + 184) = 0; - *(_WORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)(a1 + 200) = 0; - *(_DWORD *)(a1 + 204) = 0; - *(_DWORD *)a1 = &unk_55B244; - *(_DWORD *)(a1 + 72) = &unk_55B258; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_55B26C; - *(_DWORD *)(a1 + 72) = &unk_55B280; - std::ios::init(v1, 0); - *(_DWORD *)a1 = &off_55FB54; - *(_DWORD *)(a1 + 72) = off_55FB7C; - *(_DWORD *)(a1 + 8) = off_55FB68; - *(_DWORD *)(a1 + 12) = &off_560424; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::locale::locale((_DWORD *)(a1 + 40)); - *(_DWORD *)(a1 + 12) = &off_55F928; - *(_DWORD *)(a1 + 44) = 24; - *(_DWORD *)(a1 + 48) = a1 + 56; - *(_DWORD *)(a1 + 52) = 0; - *(_BYTE *)(a1 + 56) = 0; - std::ios::init(v1, a1 + 12); -} -// 51939C: positive sp value 4 has been found -// 55F928: using guessed type int (*off_55F928)(); -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (005193C0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // edx - std::ios_base *v14; // [esp+0h] [ebp-58h] - std::ios_base *v15; // [esp+10h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v15, v14); - std::ios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v15 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v15 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v15 + 58); - v8 = a2[5]; - a3[1] = 0; - v9 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = *a2; - v13 = a2[8]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; - this[2] = a2[9]; - std::stringbuf::basic_stringbuf(this + 3, (std::locale *)(a3 + 3)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 3); -} -// 51950E: positive sp value 4 has been found -// 519426: variable 'v14' is possibly undefined - -//----- (00519530) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - int a3, - int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - int v14; // eax - int v15; // eax - _BYTE *v16; // edx - unsigned int v17; // eax - _DWORD *v18; // [esp+24h] [ebp-44h] - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::ios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - v14 = a2[9]; - this[3] = (int)&off_560424; - this[2] = v14; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - v18 = this + 3; - std::locale::locale(this + 10); - v15 = *(_DWORD *)(a3 + 4); - v16 = *(_BYTE **)a3; - this[3] = (int)&off_55F928; - this[11] = 0; - this[12] = (int)(this + 14); - std::string::_M_construct(this + 12, v16, (int)&v16[v15]); - this[11] = a4; - v17 = 0; - if ( (a4 & 3) != 0 ) - v17 = this[13]; - std::stringbuf::_M_sync(v18, (_DWORD *)this[12], 0, v17); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)v18); -} -// 519717: positive sp value 4 has been found -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00519780) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - _DWORD *v8; // ecx - int v9; // eax - int v10; // edx - int v11; // edx - int v12; // eax - int v13; // eax - int v14; // eax - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); - v7 = a2[4]; - this[2] = v7; - v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); - *v8 = a2[5]; - std::ios::init((int)v8, 0); - v9 = a2[1]; - v10 = a2[6]; - *this = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; - this[2] = a2[7]; - v11 = a2[8]; - v12 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v11; - v13 = a2[9]; - this[3] = (int)&off_560424; - this[4] = 0; - this[2] = v13; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[11] = a3; - this[12] = (int)(this + 14); - v14 = *this; - this[3] = (int)&off_55F928; - this[13] = 0; - *((_BYTE *)this + 56) = 0; - std::ios::init((int)this + *(_DWORD *)(v14 - 12), (int)(this + 3)); -} -// 51990A: positive sp value 4 has been found -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00519960) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - int v12; // eax - int v13; // eax - - v3 = a2[2]; - v4 = a2[3]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[4]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[5]; - std::ios::init((int)v7, 0); - v8 = a2[1]; - v9 = a2[6]; - *this = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[7]; - v10 = a2[8]; - v11 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; - v12 = a2[9]; - this[3] = (int)&off_560424; - this[4] = 0; - this[2] = v12; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[3] = (int)&off_55F928; - this[12] = (int)(this + 14); - v13 = *this; - this[11] = 24; - this[13] = 0; - *((_BYTE *)this + 56) = 0; - std::ios::init((int)this + *(_DWORD *)(v13 - 12), (int)(this + 3)); -} -// 519AEB: positive sp value 4 has been found -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00519B40) -------------------------------------------------------- -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[12]; - *Block = &off_55FB54; - Block[18] = off_55FB7C; - Block[2] = off_55FB68; - Block[3] = &off_55F928; - if ( v2 != Block + 14 ) - operator delete(v2); - Block[3] = &off_560424; - std::locale::~locale((_DWORD **)Block + 10); - Block[2] = &unk_55B26C; - *Block = &unk_55B244; - Block[1] = 0; - Block[18] = &off_560E20; - std::ios_base::~ios_base((int)(Block + 18)); - operator delete(Block); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00519BC0) -------------------------------------------------------- -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 48); - *(_DWORD *)a1 = &off_55FB54; - *(_DWORD *)(a1 + 72) = off_55FB7C; - *(_DWORD *)(a1 + 8) = off_55FB68; - *(_DWORD *)(a1 + 12) = &off_55F928; - if ( Block != (void *)(a1 + 56) ) - operator delete(Block); - *(_DWORD *)(a1 + 12) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 40)); - *(_DWORD *)(a1 + 8) = &unk_55B26C; - *(_DWORD *)a1 = &unk_55B244; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 72) = &off_560E20; - std::ios_base::~ios_base(a1 + 72); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00519C30) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( - char *this, - int *a2) -{ - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - int result; // eax - - v3 = *a2; - *(_DWORD *)this = *a2; - *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; - v4 = a2[9]; - *((_DWORD *)this + 3) = &off_55F928; - *((_DWORD *)this + 2) = v4; - if ( *((char **)this + 12) != this + 56 ) - operator delete(*((void **)this + 12)); - *((_DWORD *)this + 3) = &off_560424; - std::locale::~locale((_DWORD **)this + 10); - v5 = a2[1]; - *(_DWORD *)this = v5; - *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; - *((_DWORD *)this + 2) = a2[7]; - v6 = a2[4]; - *((_DWORD *)this + 2) = v6; - *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; - v7 = a2[2]; - *(_DWORD *)this = v7; - result = *(_DWORD *)(v7 - 12); - *(_DWORD *)&this[result] = a2[3]; - *((_DWORD *)this + 1) = 0; - return result; -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (00519CC0) -------------------------------------------------------- -_DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=( - _DWORD *this, - _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - char v6; // cl - char v7; // cl - int v8; // eax - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::stringbuf::operator=((int)(this + 3), (int)(a2 + 3)); - return this; -} -// 519D00: variable 'v10' is possibly undefined - -//----- (00519DA0) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::str( - int this, - int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 12); - std::wstring::_M_replace((unsigned int *)(this + 48), 0, *(_DWORD *)(this + 52), *(_WORD **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 44) & 3) != 0 ) - v4 = *(_DWORD *)(this + 52); - return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); -} - -//----- (00519E10) -------------------------------------------------------- -void __thiscall std::basic_stringstream,std::allocator>::swap( - _DWORD *this, - _DWORD *a2) -{ - std::ios_base *v3; // edi - std::ios_base *v4; // esi - int v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wstringbuf::swap(this + 3, (int)(a2 + 3)); -} -// 519E50: variable 'v8' is possibly undefined - -//----- (00519EF0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - _DWORD *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // edx - int v5; // eax - int v6; // edx - unsigned int v7; // eax - int v8; // ecx - int v9; // eax - _DWORD *v10; // esi - _DWORD *v11; // eax - int v12; // ecx - int v13; // ebx - char *v14; // ecx - int v15; // edx - std::ios_base *v16; // [esp+0h] [ebp-B8h] - const std::locale *v17; // [esp+0h] [ebp-B8h] - struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v20; // [esp+24h] [ebp-94h] - int v22; // [esp+70h] [ebp-48h] - int v23; // [esp+74h] [ebp-44h] - int v24; // [esp+78h] [ebp-40h] - __int64 v25; // [esp+80h] [ebp-38h] - int v26; // [esp+88h] [ebp-30h] - int v27; // [esp+8Ch] [ebp-2Ch] - int v28; // [esp+90h] [ebp-28h] - int v29; // [esp+98h] [ebp-20h] - - v20 = this + 18; - std::ios_base::ios_base(this + 18); - v2 = a2[1]; - this[46] = 0; - this[1] = v2; - *((_WORD *)this + 94) = 0; - v3 = *a2; - *this = &unk_55B294; - *((_BYTE *)this + 190) = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - this[18] = &unk_55B2A8; - lpuexcpta = v4; - std::ios_base::_M_move((int)v20, v4, v16); - std::wios::_M_cache_locale(v20, (int)(this + 45)); - v22 = -1; - v23 = -1; - v5 = *((_DWORD *)lpuexcpta + 28); - *((_DWORD *)lpuexcpta + 28) = 0; - this[48] = 0; - this[46] = v5; - v24 = -1; - *((_WORD *)this + 94) = *((_WORD *)lpuexcpta + 58); - v6 = a2[12]; - *((_BYTE *)this + 190) = *((_BYTE *)lpuexcpta + 118); - LODWORD(v25) = -1; - a2[1] = 0; - lpuexcpt = (struct _Unwind_Exception *)(this + 3); - v7 = a2[4]; - *this = &off_55FB90; - this[18] = off_55FBB8; - this[2] = off_55FBA4; - v26 = -1; - v27 = -1; - v28 = -1; - v29 = -1; - if ( !v7 ) - { - v8 = a2[7]; - if ( !v8 ) - goto LABEL_7; - goto LABEL_3; - } - v22 = (int)(v7 - v6) >> 1; - v23 = (int)(v7 - v6) >> 31; - v24 = (a2[5] - v6) >> 1; - v7 = a2[6]; - v25 = (int)(v7 - v6) >> 1; - v8 = a2[7]; - if ( v8 ) - { -LABEL_3: - v26 = (v8 - v6) >> 1; - v27 = (v8 - v6) >> 31; - v28 = (a2[8] - v8) >> 1; - v29 = (a2[9] - v6) >> 1; - if ( v7 < a2[8] ) - v7 = a2[8]; - } - if ( v7 ) - a2[13] = (int)(v7 - v6) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 3), v17); - v9 = a2[11]; - this[3] = &off_55F968; - this[12] = this + 14; - v10 = a2 + 14; - this[11] = v9; - v11 = (_DWORD *)a2[12]; - if ( v11 == a2 + 14 ) - { - this[14] = a2[14]; - this[15] = a2[15]; - this[16] = a2[16]; - this[17] = a2[17]; - } - else - { - this[12] = v11; - this[14] = a2[14]; - } - this[13] = a2[13]; - a2[12] = v10; - *((_WORD *)a2 + 28) = 0; - v12 = this[12]; - a2[13] = 0; - if ( (v22 & v23) != -1 ) - { - this[4] = v12 + 2 * v22; - this[5] = v12 + 2 * v24; - this[6] = v12 + 2 * v25; - } - if ( (v26 & v27) != -1 ) - { - v13 = v12 + 2 * v26; - this[9] = v12 + 2 * v29; - this[7] = v13; - this[8] = v13 + 2 * v28; - } - v14 = (char *)a2 + 70; - v15 = a2[11] & 0x10; - if ( (a2[11] & 8) != 0 ) - { - a2[4] = v10; - a2[5] = v10; - a2[6] = v10; - if ( v15 ) - { - a2[8] = v10; - a2[7] = v10; - a2[9] = v14; - } - } - else if ( v15 ) - { - a2[8] = v10; - a2[7] = v10; - a2[9] = v14; - a2[4] = v10; - a2[5] = v10; - a2[6] = v10; - } - this[48] = lpuexcpt; -} -// 51A375: positive sp value 4 has been found -// 51A234: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 519FB9: variable 'v16' is possibly undefined -// 51A15F: variable 'v17' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); - -//----- (0051A380) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int a2, - int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - _DWORD *v6; // [esp+20h] [ebp-48h] - int v7; // [esp+24h] [ebp-44h] - - v7 = (int)(this + 18); - std::ios_base::ios_base(this + 18); - this[46] = 0; - *((_WORD *)this + 94) = 0; - *((_BYTE *)this + 190) = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - *this = &unk_55B294; - this[18] = &unk_55B2A8; - this[1] = 0; - std::wios::init(v7, 0); - this[2] = &unk_55B2F8; - this[18] = &unk_55B30C; - std::wios::init(v7, 0); - *this = &off_55FB90; - this[18] = off_55FBB8; - this[2] = off_55FBA4; - this[3] = &off_560464; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - v6 = this + 3; - std::locale::locale(this + 10); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - this[3] = &off_55F968; - this[11] = 0; - this[12] = this + 14; - std::wstring::_M_construct(this + 12, v4, (int)&v4[v3]); - this[11] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[13]; - std::wstringbuf::_M_sync(v6, (_DWORD *)this[12], 0, v5); - std::wios::init(v7, (int)v6); -} -// 51A5A3: positive sp value 4 has been found -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051A5E0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int a2) -{ - int v2; // [esp+24h] [ebp-44h] - - v2 = (int)(this + 18); - std::ios_base::ios_base(this + 18); - this[46] = 0; - *((_WORD *)this + 94) = 0; - *((_BYTE *)this + 190) = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - *this = &unk_55B294; - this[18] = &unk_55B2A8; - this[1] = 0; - std::wios::init(v2, 0); - this[2] = &unk_55B2F8; - this[18] = &unk_55B30C; - std::wios::init(v2, 0); - *this = &off_55FB90; - this[18] = off_55FBB8; - this[2] = off_55FBA4; - this[3] = &off_560464; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[11] = a2; - *((_WORD *)this + 28) = 0; - this[3] = &off_55F968; - this[12] = this + 14; - this[13] = 0; - std::wios::init(v2, (int)(this + 3)); -} -// 51A7A6: positive sp value 4 has been found -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051A7D0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream( - int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 72; - std::ios_base::ios_base((_DWORD *)(a1 + 72)); - *(_DWORD *)(a1 + 184) = 0; - *(_WORD *)(a1 + 188) = 0; - *(_BYTE *)(a1 + 190) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)(a1 + 200) = 0; - *(_DWORD *)(a1 + 204) = 0; - *(_DWORD *)a1 = &unk_55B294; - *(_DWORD *)(a1 + 72) = &unk_55B2A8; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_55B2F8; - *(_DWORD *)(a1 + 72) = &unk_55B30C; - std::wios::init(v1, 0); - *(_DWORD *)a1 = &off_55FB90; - *(_DWORD *)(a1 + 72) = off_55FBB8; - *(_DWORD *)(a1 + 8) = off_55FBA4; - *(_DWORD *)(a1 + 12) = &off_560464; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::locale::locale((_DWORD *)(a1 + 40)); - *(_WORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 12) = &off_55F968; - *(_DWORD *)(a1 + 44) = 24; - *(_DWORD *)(a1 + 48) = a1 + 56; - *(_DWORD *)(a1 + 52) = 0; - std::wios::init(v1, a1 + 12); -} -// 51A995: positive sp value 4 has been found -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051A9C0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // edx - int v14; // edx - unsigned int v15; // eax - int v16; // ecx - int v17; // eax - _DWORD *v18; // esi - _DWORD *v19; // eax - int v20; // ecx - int v21; // ebx - char *v22; // ecx - int v23; // edx - std::ios_base *v24; // [esp+0h] [ebp-A8h] - const std::locale *v25; // [esp+0h] [ebp-A8h] - std::ios_base *v26; // [esp+10h] [ebp-98h] - _DWORD *v27; // [esp+10h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] - int v30; // [esp+60h] [ebp-48h] - int v31; // [esp+64h] [ebp-44h] - int v32; // [esp+68h] [ebp-40h] - __int64 v33; // [esp+70h] [ebp-38h] - int v34; // [esp+78h] [ebp-30h] - int v35; // [esp+7Ch] [ebp-2Ch] - int v36; // [esp+80h] [ebp-28h] - int v37; // [esp+88h] [ebp-20h] - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v26 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v26, v24); - std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v26 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v26 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v26 + 58); - *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v26 + 118); - a3[1] = 0; - v8 = a2[5]; - v9 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = *a2; - v13 = a2[8]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; - v30 = -1; - this[2] = a2[9]; - v27 = this + 3; - v31 = -1; - v14 = a3[12]; - v15 = a3[4]; - v32 = -1; - LODWORD(v33) = -1; - v34 = -1; - v35 = -1; - v36 = -1; - v37 = -1; - if ( !v15 ) - { - v16 = a3[7]; - if ( !v16 ) - goto LABEL_7; - goto LABEL_3; - } - v30 = (int)(v15 - v14) >> 1; - v31 = (int)(v15 - v14) >> 31; - v32 = (a3[5] - v14) >> 1; - v15 = a3[6]; - v33 = (int)(v15 - v14) >> 1; - v16 = a3[7]; - if ( v16 ) - { -LABEL_3: - v34 = (v16 - v14) >> 1; - v35 = (v16 - v14) >> 31; - v36 = (a3[8] - v16) >> 1; - v37 = (a3[9] - v14) >> 1; - if ( v15 < a3[8] ) - v15 = a3[8]; - } - if ( v15 ) - a3[13] = (int)(v15 - v14) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(v27, (std::locale *)(a3 + 3), v25); - v17 = a3[11]; - this[3] = (int)&off_55F968; - this[12] = (int)(this + 14); - v18 = a3 + 14; - this[11] = v17; - v19 = (_DWORD *)a3[12]; - if ( v19 == a3 + 14 ) - { - this[14] = a3[14]; - this[15] = a3[15]; - this[16] = a3[16]; - this[17] = a3[17]; - } - else - { - this[12] = (int)v19; - this[14] = a3[14]; - } - this[13] = a3[13]; - a3[12] = v18; - *((_WORD *)a3 + 28) = 0; - v20 = this[12]; - a3[13] = 0; - if ( (v30 & v31) != -1 ) - { - this[4] = v20 + 2 * v30; - this[5] = v20 + 2 * v32; - this[6] = v20 + 2 * v33; - } - if ( (v34 & v35) != -1 ) - { - v21 = v20 + 2 * v34; - this[9] = v20 + 2 * v37; - this[7] = v21; - this[8] = v21 + 2 * v36; - } - v22 = (char *)a3 + 70; - v23 = a3[11] & 0x10; - if ( (a3[11] & 8) != 0 ) - { - a3[4] = v18; - a3[5] = v18; - a3[6] = v18; - if ( v23 ) - { - a3[8] = v18; - a3[7] = v18; - a3[9] = v22; - } - } - else if ( v23 ) - { - a3[8] = v18; - a3[7] = v18; - a3[9] = v22; - a3[4] = v18; - a3[5] = v18; - a3[6] = v18; - } - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v27; -} -// 51ADE8: positive sp value 4 has been found -// 51ACD5: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 51AA3B: variable 'v24' is possibly undefined -// 51AC00: variable 'v25' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); - -//----- (0051AE10) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - int a3, - int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - int v14; // eax - int v15; // edx - _WORD *v16; // eax - unsigned int v17; // eax - _DWORD *v18; // [esp+24h] [ebp-44h] - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::wios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - v14 = a2[9]; - this[3] = (int)&off_560464; - this[2] = v14; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - v18 = this + 3; - std::locale::locale(this + 10); - v15 = *(_DWORD *)(a3 + 4); - v16 = *(_WORD **)a3; - this[3] = (int)&off_55F968; - this[11] = 0; - this[12] = (int)(this + 14); - std::wstring::_M_construct(this + 12, v16, (int)&v16[v15]); - this[11] = a4; - v17 = 0; - if ( (a4 & 3) != 0 ) - v17 = this[13]; - std::wstringbuf::_M_sync(v18, (_DWORD *)this[12], 0, v17); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)v18); -} -// 51AFF3: positive sp value 4 has been found -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051B060) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - _DWORD *v8; // ecx - int v9; // eax - int v10; // edx - int v11; // edx - int v12; // eax - int v13; // eax - int v14; // eax - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); - v7 = a2[4]; - this[2] = v7; - v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); - *v8 = a2[5]; - std::wios::init((int)v8, 0); - v9 = a2[1]; - v10 = a2[6]; - *this = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; - this[2] = a2[7]; - v11 = a2[8]; - v12 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v11; - v13 = a2[9]; - this[3] = (int)&off_560464; - this[4] = 0; - this[2] = v13; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[11] = a3; - this[12] = (int)(this + 14); - v14 = *this; - *((_WORD *)this + 28) = 0; - this[3] = (int)&off_55F968; - this[13] = 0; - std::wios::init((int)this + *(_DWORD *)(v14 - 12), (int)(this + 3)); -} -// 51B1EC: positive sp value 4 has been found -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051B240) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - int v12; // eax - int v13; // eax - - v3 = a2[2]; - v4 = a2[3]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[4]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[5]; - std::wios::init((int)v7, 0); - v8 = a2[1]; - v9 = a2[6]; - *this = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[7]; - v10 = a2[8]; - v11 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; - v12 = a2[9]; - this[3] = (int)&off_560464; - this[4] = 0; - this[2] = v12; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - *((_WORD *)this + 28) = 0; - this[12] = (int)(this + 14); - v13 = *this; - this[3] = (int)&off_55F968; - this[11] = 24; - this[13] = 0; - std::wios::init((int)this + *(_DWORD *)(v13 - 12), (int)(this + 3)); -} -// 51B3CD: positive sp value 4 has been found -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051B420) -------------------------------------------------------- -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[12]; - *Block = &off_55FB90; - Block[18] = off_55FBB8; - Block[2] = off_55FBA4; - Block[3] = &off_55F968; - if ( v2 != Block + 14 ) - operator delete(v2); - Block[3] = &off_560464; - std::locale::~locale((_DWORD **)Block + 10); - Block[2] = &unk_55B2F8; - *Block = &unk_55B294; - Block[1] = 0; - Block[18] = &off_560E30; - std::ios_base::~ios_base((int)(Block + 18)); - operator delete(Block); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (0051B4A0) -------------------------------------------------------- -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 48); - *(_DWORD *)a1 = &off_55FB90; - *(_DWORD *)(a1 + 72) = off_55FBB8; - *(_DWORD *)(a1 + 8) = off_55FBA4; - *(_DWORD *)(a1 + 12) = &off_55F968; - if ( Block != (void *)(a1 + 56) ) - operator delete(Block); - *(_DWORD *)(a1 + 12) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 40)); - *(_DWORD *)(a1 + 8) = &unk_55B2F8; - *(_DWORD *)a1 = &unk_55B294; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 72) = &off_560E30; - std::ios_base::~ios_base(a1 + 72); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (0051B510) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( - char *this, - int *a2) -{ - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - int result; // eax - - v3 = *a2; - *(_DWORD *)this = *a2; - *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; - v4 = a2[9]; - *((_DWORD *)this + 3) = &off_55F968; - *((_DWORD *)this + 2) = v4; - if ( *((char **)this + 12) != this + 56 ) - operator delete(*((void **)this + 12)); - *((_DWORD *)this + 3) = &off_560464; - std::locale::~locale((_DWORD **)this + 10); - v5 = a2[1]; - *(_DWORD *)this = v5; - *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; - *((_DWORD *)this + 2) = a2[7]; - v6 = a2[4]; - *((_DWORD *)this + 2) = v6; - *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; - v7 = a2[2]; - *(_DWORD *)this = v7; - result = *(_DWORD *)(v7 - 12); - *(_DWORD *)&this[result] = a2[3]; - *((_DWORD *)this + 1) = 0; - return result; -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051B5A0) -------------------------------------------------------- -_DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=( - _DWORD *this, - _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - __int16 v6; // cx - int v7; // eax - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wstringbuf::operator=((int)(this + 3), (int)(a2 + 3)); - return this; -} -// 51B5E0: variable 'v9' is possibly undefined - -//----- (0051B680) -------------------------------------------------------- -int __thiscall std::istringstream::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 8); - std::string::_M_replace((unsigned int *)(this + 44), 0, *(_DWORD *)(this + 48), *(char **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 40) & 3) != 0 ) - v4 = *(_DWORD *)(this + 48); - return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); -} - -//----- (0051B6F0) -------------------------------------------------------- -void __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // edi - std::ios_base *v4; // esi - int v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::stringbuf::swap(this + 2, (int)(a2 + 2)); -} -// 51B730: variable 'v9' is possibly undefined - -//----- (0051B7C0) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // esi - int v5; // eax - int v6; // edx - unsigned int v7; // eax - int v8; // ecx - int v9; // eax - _DWORD *v10; // eax - int v11; // ebx - int v12; // ecx - int v13; // ebx - _DWORD *v14; // eax - int v15; // edx - int v16; // ecx - int v17; // ecx - std::ios_base *v18; // [esp+4h] [ebp-B4h] - const std::locale *v19; // [esp+4h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v21; // [esp+24h] [ebp-94h] - _DWORD *v22; // [esp+24h] [ebp-94h] - __int64 v24; // [esp+70h] [ebp-48h] - int v25; // [esp+78h] [ebp-40h] - __int64 v26; // [esp+80h] [ebp-38h] - __int64 v27; // [esp+88h] [ebp-30h] - int v28; // [esp+90h] [ebp-28h] - int v29; // [esp+98h] [ebp-20h] - - v21 = this + 17; - std::ios_base::ios_base(this + 17); - *((_WORD *)this + 92) = 0; - v2 = a2[1]; - this[45] = 0; - this[1] = v2; - this[47] = 0; - v3 = *a2; - *this = &unk_55B320; - this[48] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[17] = &unk_55B334; - this[49] = 0; - this[50] = 0; - std::ios_base::_M_move((int)v21, v4, v18); - std::ios::_M_cache_locale(v21, (int)(this + 44)); - v24 = -1LL; - v5 = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = 0; - this[47] = 0; - this[45] = v5; - v25 = -1; - *((_WORD *)this + 92) = *((_WORD *)v4 + 58); - a2[1] = 0; - lpuexcpt = (struct _Unwind_Exception *)(this + 2); - v6 = a2[11]; - v7 = a2[3]; - *this = &off_55FBCC; - this[17] = off_55FBE0; - LODWORD(v26) = -1; - v27 = -1LL; - v28 = -1; - v29 = -1; - if ( !v7 ) - { - v8 = a2[6]; - if ( !v8 ) - goto LABEL_7; - goto LABEL_3; - } - v24 = (int)(v7 - v6); - v25 = a2[4] - v6; - v7 = a2[5]; - v26 = (int)(v7 - v6); - v8 = a2[6]; - if ( v8 ) - { -LABEL_3: - v27 = v8 - v6; - v28 = a2[7] - v8; - v29 = a2[8] - v6; - if ( v7 < a2[7] ) - v7 = a2[7]; - } - if ( v7 ) - a2[12] = v7 - v6; -LABEL_7: - std::streambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 2), v19); - v9 = a2[10]; - this[2] = &off_55F928; - this[11] = this + 13; - this[10] = v9; - v22 = a2 + 13; - v10 = (_DWORD *)a2[11]; - if ( v10 == a2 + 13 ) - { - this[13] = a2[13]; - this[14] = a2[14]; - this[15] = a2[15]; - this[16] = a2[16]; - } - else - { - this[11] = v10; - this[13] = a2[13]; - } - this[12] = a2[12]; - *((_BYTE *)a2 + 52) = 0; - a2[11] = v22; - a2[12] = 0; - v11 = this[11]; - if ( ((unsigned int)v24 & HIDWORD(v24)) != -1 ) - { - this[3] = v11 + v24; - this[4] = v11 + v25; - this[5] = v11 + v26; - } - if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) - { - v12 = v11 + v29; - v13 = v27 + v11; - this[8] = v12; - this[6] = v13; - this[7] = v13 + v28; - } - v14 = (_DWORD *)a2[11]; - v15 = a2[10] & 0x10; - if ( v14 == v22 ) - v16 = 15; - else - v16 = a2[13]; - v17 = (int)v14 + v16; - if ( (a2[10] & 8) != 0 ) - { - a2[3] = v14; - a2[4] = v14; - a2[5] = v14; - if ( v15 ) - { - a2[7] = v14; - a2[6] = v14; - a2[8] = v17; - } - } - else if ( v15 ) - { - a2[7] = v14; - a2[6] = v14; - a2[8] = v17; - a2[3] = v14; - a2[4] = v14; - a2[5] = v14; - } - this[47] = lpuexcpt; -} -// 51BAD5: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 51B882: variable 'v18' is possibly undefined -// 51BA09: variable 'v19' is possibly undefined -// 55F928: using guessed type int (*off_55F928)(); -// 55FBCC: using guessed type int (*off_55FBCC)(); -// 55FBE0: using guessed type int (*off_55FBE0[2])(); - -//----- (0051BC50) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2, int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - int v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v6 = (int)(this + 17); - std::ios_base::ios_base(this + 17); - this[45] = 0; - *((_WORD *)this + 92) = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - *this = &unk_55B320; - this[17] = &unk_55B334; - this[1] = 0; - std::ios::init(v6, 0); - *this = &off_55FBCC; - this[17] = off_55FBE0; - this[2] = &off_560424; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - v7 = this + 2; - std::locale::locale(this + 9); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - this[2] = &off_55F928; - this[10] = 0; - this[11] = this + 13; - std::string::_M_construct(this + 11, v4, (int)&v4[v3]); - v5 = 0; - this[10] = a3 | 8; - if ( (a3 & 3) != 0 ) - v5 = this[12]; - std::stringbuf::_M_sync(v7, (_DWORD *)this[11], 0, v5); - std::ios::init(v6, (int)v7); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FBCC: using guessed type int (*off_55FBCC)(); -// 55FBE0: using guessed type int (*off_55FBE0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051BE70) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2) -{ - int v2; // [esp+24h] [ebp-44h] - - v2 = (int)(this + 17); - std::ios_base::ios_base(this + 17); - this[45] = 0; - *((_WORD *)this + 92) = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - *this = &unk_55B320; - this[17] = &unk_55B334; - this[1] = 0; - std::ios::init(v2, 0); - *this = &off_55FBCC; - this[17] = off_55FBE0; - this[2] = &off_560424; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[2] = &off_55F928; - this[10] = a2 | 8; - this[11] = this + 13; - this[12] = 0; - *((_BYTE *)this + 52) = 0; - std::ios::init(v2, (int)(this + 2)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FBCC: using guessed type int (*off_55FBCC)(); -// 55FBE0: using guessed type int (*off_55FBE0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051C010) -------------------------------------------------------- -void __fastcall std::istringstream::basic_istringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 68; - std::ios_base::ios_base((_DWORD *)(a1 + 68)); - *(_DWORD *)(a1 + 180) = 0; - *(_WORD *)(a1 + 184) = 0; - *(_DWORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)(a1 + 200) = 0; - *(_DWORD *)a1 = &unk_55B320; - *(_DWORD *)(a1 + 68) = &unk_55B334; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)a1 = &off_55FBCC; - *(_DWORD *)(a1 + 68) = off_55FBE0; - *(_DWORD *)(a1 + 8) = &off_560424; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - std::locale::locale((_DWORD *)(a1 + 36)); - *(_DWORD *)(a1 + 8) = &off_55F928; - *(_DWORD *)(a1 + 40) = 8; - *(_DWORD *)(a1 + 44) = a1 + 52; - *(_DWORD *)(a1 + 48) = 0; - *(_BYTE *)(a1 + 52) = 0; - std::ios::init(v1, a1 + 8); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FBCC: using guessed type int (*off_55FBCC)(); -// 55FBE0: using guessed type int (*off_55FBE0[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051C1A0) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - std::ios_base *v10; // [esp+4h] [ebp-54h] - std::ios_base *v11; // [esp+10h] [ebp-48h] - int v12; // [esp+14h] [ebp-44h] - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - v12 = (int)this + *(_DWORD *)(v4 - 12); - v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move(v12, v11, v10); - std::ios::_M_cache_locale((_DWORD *)v12, v12 + 108); - v7 = *((_DWORD *)v11 + 28); - *(_DWORD *)(v12 + 120) = 0; - *((_DWORD *)v11 + 28) = 0; - v8 = a2[3]; - *(_DWORD *)(v12 + 112) = v7; - *(_WORD *)(v12 + 116) = *((_WORD *)v11 + 58); - a3[1] = 0; - v9 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; - std::stringbuf::basic_stringbuf(this + 2, (std::locale *)(a3 + 2)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 2); -} -// 51C207: variable 'v10' is possibly undefined - -//----- (0051C2E0) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _BYTE *v10; // edx - int v11; // eax - unsigned int v12; // eax - _DWORD *v13; // [esp+24h] [ebp-44h] - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - v13 = this + 2; - this[2] = (int)&off_560424; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - v10 = *(_BYTE **)a3; - v11 = *(_DWORD *)(a3 + 4); - this[2] = (int)&off_55F928; - this[10] = 0; - this[11] = (int)(this + 13); - std::string::_M_construct(this + 11, v10, (int)&v10[v11]); - v12 = 0; - this[10] = a4 | 8; - if ( (a4 & 3) != 0 ) - v12 = this[12]; - std::stringbuf::_M_sync(v13, (_DWORD *)this[11], 0, v12); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)v13); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051C4C0) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); - v7 = *a2; - v8 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; - this[2] = (int)&off_560424; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[12] = 0; - this[10] = a3 | 8; - this[11] = (int)(this + 13); - v9 = *this; - *((_BYTE *)this + 52) = 0; - this[2] = (int)&off_55F928; - std::ios::init((int)this + *(_DWORD *)(v9 - 12), (int)(this + 2)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051C610) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - int v7; // edx - int v8; // eax - int v9; // ecx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - this[2] = (int)&off_560424; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[12] = 0; - this[11] = (int)(this + 13); - v8 = *this; - *((_BYTE *)this + 52) = 0; - this[2] = (int)&off_55F928; - v9 = *(_DWORD *)(v8 - 12); - this[10] = 8; - std::ios::init((int)this + v9, (int)(this + 2)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051C760) -------------------------------------------------------- -void __fastcall std::istringstream::~istringstream(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[11]; - *Block = &off_55FBCC; - Block[17] = off_55FBE0; - Block[2] = &off_55F928; - if ( v2 != Block + 13 ) - operator delete(v2); - Block[2] = &off_560424; - std::locale::~locale((_DWORD **)Block + 9); - *Block = &unk_55B320; - Block[1] = 0; - Block[17] = &off_560E20; - std::ios_base::~ios_base((int)(Block + 17)); - operator delete(Block); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FBCC: using guessed type int (*off_55FBCC)(); -// 55FBE0: using guessed type int (*off_55FBE0[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (0051C7D0) -------------------------------------------------------- -void __fastcall std::istringstream::~istringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 44); - *(_DWORD *)a1 = &off_55FBCC; - *(_DWORD *)(a1 + 68) = off_55FBE0; - *(_DWORD *)(a1 + 8) = &off_55F928; - if ( Block != (void *)(a1 + 52) ) - operator delete(Block); - *(_DWORD *)(a1 + 8) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 36)); - *(_DWORD *)a1 = &unk_55B320; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 68) = &off_560E20; - std::ios_base::~ios_base(a1 + 68); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FBCC: using guessed type int (*off_55FBCC)(); -// 55FBE0: using guessed type int (*off_55FBE0[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (0051C830) -------------------------------------------------------- -int __thiscall std::istringstream::~istringstream(int *this, int *a2) -{ - int v3; // eax - char *Block; // eax - int v5; // eax - int result; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - Block = (char *)this[11]; - this[2] = (int)&off_55F928; - if ( Block != (char *)(this + 13) ) - operator delete(Block); - this[2] = (int)&off_560424; - std::locale::~locale((_DWORD **)this + 9); - v5 = a2[1]; - *this = v5; - result = *(_DWORD *)(v5 - 12); - *(int *)((char *)this + result) = a2[2]; - this[1] = 0; - return result; -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051C890) -------------------------------------------------------- -_DWORD *__thiscall std::istringstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - char v6; // cl - char v7; // cl - int v8; // eax - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::stringbuf::operator=((int)(this + 2), (int)(a2 + 2)); - return this; -} -// 51C8D0: variable 'v10' is possibly undefined - -//----- (0051C970) -------------------------------------------------------- -int __thiscall std::wistringstream::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 8); - std::wstring::_M_replace((unsigned int *)(this + 44), 0, *(_DWORD *)(this + 48), *(_WORD **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 40) & 3) != 0 ) - v4 = *(_DWORD *)(this + 48); - return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); -} - -//----- (0051C9E0) -------------------------------------------------------- -void __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // edi - std::ios_base *v4; // esi - int v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wstringbuf::swap(this + 2, (int)(a2 + 2)); -} -// 51CA20: variable 'v8' is possibly undefined - -//----- (0051CAC0) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // edx - int v5; // eax - int v6; // edx - unsigned int v7; // eax - int v8; // ecx - int v9; // eax - _DWORD *v10; // esi - _DWORD *v11; // eax - int v12; // ecx - int v13; // ebx - char *v14; // ecx - int v15; // edx - std::ios_base *v16; // [esp+4h] [ebp-B4h] - const std::locale *v17; // [esp+4h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v20; // [esp+24h] [ebp-94h] - int v22; // [esp+70h] [ebp-48h] - int v23; // [esp+74h] [ebp-44h] - int v24; // [esp+78h] [ebp-40h] - __int64 v25; // [esp+80h] [ebp-38h] - int v26; // [esp+88h] [ebp-30h] - int v27; // [esp+8Ch] [ebp-2Ch] - int v28; // [esp+90h] [ebp-28h] - int v29; // [esp+98h] [ebp-20h] - - v20 = this + 17; - std::ios_base::ios_base(this + 17); - v2 = a2[1]; - this[45] = 0; - this[1] = v2; - *((_WORD *)this + 92) = 0; - v3 = *a2; - *this = &unk_55B348; - *((_BYTE *)this + 186) = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[17] = &unk_55B35C; - lpuexcpta = v4; - std::ios_base::_M_move((int)v20, v4, v16); - std::wios::_M_cache_locale(v20, (int)(this + 44)); - v22 = -1; - v23 = -1; - v5 = *((_DWORD *)lpuexcpta + 28); - *((_DWORD *)lpuexcpta + 28) = 0; - this[47] = 0; - this[45] = v5; - v24 = -1; - *((_WORD *)this + 92) = *((_WORD *)lpuexcpta + 58); - v6 = a2[11]; - *((_BYTE *)this + 186) = *((_BYTE *)lpuexcpta + 118); - LODWORD(v25) = -1; - a2[1] = 0; - lpuexcpt = (struct _Unwind_Exception *)(this + 2); - v7 = a2[3]; - *this = &off_55FBF4; - this[17] = off_55FC08; - v26 = -1; - v27 = -1; - v28 = -1; - v29 = -1; - if ( !v7 ) - { - v8 = a2[6]; - if ( !v8 ) - goto LABEL_7; - goto LABEL_3; - } - v22 = (int)(v7 - v6) >> 1; - v23 = (int)(v7 - v6) >> 31; - v24 = (a2[4] - v6) >> 1; - v7 = a2[5]; - v25 = (int)(v7 - v6) >> 1; - v8 = a2[6]; - if ( v8 ) - { -LABEL_3: - v26 = (v8 - v6) >> 1; - v27 = (v8 - v6) >> 31; - v28 = (a2[7] - v8) >> 1; - v29 = (a2[8] - v6) >> 1; - if ( v7 < a2[7] ) - v7 = a2[7]; - } - if ( v7 ) - a2[12] = (int)(v7 - v6) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 2), v17); - v9 = a2[10]; - this[2] = &off_55F968; - this[11] = this + 13; - v10 = a2 + 13; - this[10] = v9; - v11 = (_DWORD *)a2[11]; - if ( v11 == a2 + 13 ) - { - this[13] = a2[13]; - this[14] = a2[14]; - this[15] = a2[15]; - this[16] = a2[16]; - } - else - { - this[11] = v11; - this[13] = a2[13]; - } - this[12] = a2[12]; - a2[11] = v10; - *((_WORD *)a2 + 26) = 0; - v12 = this[11]; - a2[12] = 0; - if ( (v22 & v23) != -1 ) - { - this[3] = v12 + 2 * v22; - this[4] = v12 + 2 * v24; - this[5] = v12 + 2 * v25; - } - if ( (v26 & v27) != -1 ) - { - v13 = v12 + 2 * v26; - this[8] = v12 + 2 * v29; - this[6] = v13; - this[7] = v13 + 2 * v28; - } - v14 = (char *)a2 + 66; - v15 = a2[10] & 0x10; - if ( (a2[10] & 8) != 0 ) - { - a2[3] = v10; - a2[4] = v10; - a2[5] = v10; - if ( v15 ) - { - a2[7] = v10; - a2[6] = v10; - a2[8] = v14; - } - } - else if ( v15 ) - { - a2[7] = v10; - a2[6] = v10; - a2[8] = v14; - a2[3] = v10; - a2[4] = v10; - a2[5] = v10; - } - this[47] = lpuexcpt; -} -// 51CDFD: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 51CB89: variable 'v16' is possibly undefined -// 51CD28: variable 'v17' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); -// 55FBF4: using guessed type int (*off_55FBF4)(); -// 55FC08: using guessed type int (*off_55FC08[2])(); - -//----- (0051CF50) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2, int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - int v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v6 = (int)(this + 17); - std::ios_base::ios_base(this + 17); - this[45] = 0; - *((_WORD *)this + 92) = 0; - *((_BYTE *)this + 186) = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - *this = &unk_55B348; - this[17] = &unk_55B35C; - this[1] = 0; - std::wios::init(v6, 0); - *this = &off_55FBF4; - this[17] = off_55FC08; - this[2] = &off_560464; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - v7 = this + 2; - std::locale::locale(this + 9); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - this[2] = &off_55F968; - this[10] = 0; - this[11] = this + 13; - std::wstring::_M_construct(this + 11, v4, (int)&v4[v3]); - v5 = 0; - this[10] = a3 | 8; - if ( (a3 & 3) != 0 ) - v5 = this[12]; - std::wstringbuf::_M_sync(v7, (_DWORD *)this[11], 0, v5); - std::wios::init(v6, (int)v7); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FBF4: using guessed type int (*off_55FBF4)(); -// 55FC08: using guessed type int (*off_55FC08[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051D170) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2) -{ - int v2; // [esp+24h] [ebp-44h] - - v2 = (int)(this + 17); - std::ios_base::ios_base(this + 17); - this[45] = 0; - *((_WORD *)this + 92) = 0; - *((_BYTE *)this + 186) = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - *this = &unk_55B348; - this[17] = &unk_55B35C; - this[1] = 0; - std::wios::init(v2, 0); - *this = &off_55FBF4; - this[17] = off_55FC08; - this[2] = &off_560464; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[2] = &off_55F968; - this[10] = a2 | 8; - this[11] = this + 13; - this[12] = 0; - *((_WORD *)this + 26) = 0; - std::wios::init(v2, (int)(this + 2)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FBF4: using guessed type int (*off_55FBF4)(); -// 55FC08: using guessed type int (*off_55FC08[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051D310) -------------------------------------------------------- -void __fastcall std::wistringstream::basic_istringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 68; - std::ios_base::ios_base((_DWORD *)(a1 + 68)); - *(_DWORD *)(a1 + 180) = 0; - *(_WORD *)(a1 + 184) = 0; - *(_BYTE *)(a1 + 186) = 0; - *(_DWORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)(a1 + 200) = 0; - *(_DWORD *)a1 = &unk_55B348; - *(_DWORD *)(a1 + 68) = &unk_55B35C; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)a1 = &off_55FBF4; - *(_DWORD *)(a1 + 68) = off_55FC08; - *(_DWORD *)(a1 + 8) = &off_560464; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - std::locale::locale((_DWORD *)(a1 + 36)); - *(_DWORD *)(a1 + 8) = &off_55F968; - *(_DWORD *)(a1 + 44) = a1 + 52; - *(_DWORD *)(a1 + 40) = 8; - *(_DWORD *)(a1 + 48) = 0; - *(_WORD *)(a1 + 52) = 0; - std::wios::init(v1, a1 + 8); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FBF4: using guessed type int (*off_55FBF4)(); -// 55FC08: using guessed type int (*off_55FC08[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051D4B0) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - unsigned int v11; // eax - int v12; // ecx - int v13; // eax - _DWORD *v14; // esi - _DWORD *v15; // eax - int v16; // ecx - int v17; // ebx - char *v18; // ecx - int v19; // edx - std::ios_base *v20; // [esp+4h] [ebp-A4h] - const std::locale *v21; // [esp+4h] [ebp-A4h] - std::ios_base *v22; // [esp+10h] [ebp-98h] - _DWORD *v23; // [esp+10h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] - int v26; // [esp+60h] [ebp-48h] - int v27; // [esp+64h] [ebp-44h] - int v28; // [esp+68h] [ebp-40h] - __int64 v29; // [esp+70h] [ebp-38h] - int v30; // [esp+78h] [ebp-30h] - int v31; // [esp+7Ch] [ebp-2Ch] - int v32; // [esp+80h] [ebp-28h] - int v33; // [esp+88h] [ebp-20h] - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v22 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v22, v20); - std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v22 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v22 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v22 + 58); - *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v22 + 118); - a3[1] = 0; - v8 = a2[3]; - v9 = *a2; - *this = *a2; - v26 = -1; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; - v23 = this + 2; - v27 = -1; - v28 = -1; - LODWORD(v29) = -1; - v30 = -1; - v31 = -1; - v32 = -1; - v33 = -1; - v10 = a3[11]; - v11 = a3[3]; - if ( !v11 ) - { - v12 = a3[6]; - if ( !v12 ) - goto LABEL_7; - goto LABEL_3; - } - v26 = (int)(v11 - v10) >> 1; - v27 = (int)(v11 - v10) >> 31; - v28 = (a3[4] - v10) >> 1; - v11 = a3[5]; - v29 = (int)(v11 - v10) >> 1; - v12 = a3[6]; - if ( v12 ) - { -LABEL_3: - v30 = (v12 - v10) >> 1; - v31 = (v12 - v10) >> 31; - v32 = (a3[7] - v12) >> 1; - v33 = (a3[8] - v10) >> 1; - if ( v11 < a3[7] ) - v11 = a3[7]; - } - if ( v11 ) - a3[12] = (int)(v11 - v10) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(v23, (std::locale *)(a3 + 2), v21); - v13 = a3[10]; - this[2] = (int)&off_55F968; - this[11] = (int)(this + 13); - v14 = a3 + 13; - this[10] = v13; - v15 = (_DWORD *)a3[11]; - if ( v15 == a3 + 13 ) - { - this[13] = a3[13]; - this[14] = a3[14]; - this[15] = a3[15]; - this[16] = a3[16]; - } - else - { - this[11] = (int)v15; - this[13] = a3[13]; - } - this[12] = a3[12]; - a3[11] = v14; - *((_WORD *)a3 + 26) = 0; - v16 = this[11]; - a3[12] = 0; - if ( (v26 & v27) != -1 ) - { - this[3] = v16 + 2 * v26; - this[4] = v16 + 2 * v28; - this[5] = v16 + 2 * v29; - } - if ( (v30 & v31) != -1 ) - { - v17 = v16 + 2 * v30; - this[8] = v16 + 2 * v33; - this[6] = v17; - this[7] = v17 + 2 * v32; - } - v18 = (char *)a3 + 66; - v19 = a3[10] & 0x10; - if ( (a3[10] & 8) != 0 ) - { - a3[3] = v14; - a3[4] = v14; - a3[5] = v14; - if ( v19 ) - { - a3[7] = v14; - a3[6] = v14; - a3[8] = v18; - } - } - else if ( v19 ) - { - a3[7] = v14; - a3[6] = v14; - a3[8] = v18; - a3[3] = v14; - a3[4] = v14; - a3[5] = v14; - } - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v23; -} -// 51D79B: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 51D52B: variable 'v20' is possibly undefined -// 51D6C6: variable 'v21' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); - -//----- (0051D8D0) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - int v10; // edx - _WORD *v11; // eax - unsigned int v12; // eax - _DWORD *v13; // [esp+24h] [ebp-44h] - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - v13 = this + 2; - this[2] = (int)&off_560464; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - v10 = *(_DWORD *)(a3 + 4); - v11 = *(_WORD **)a3; - this[2] = (int)&off_55F968; - this[10] = 0; - this[11] = (int)(this + 13); - std::wstring::_M_construct(this + 11, v11, (int)&v11[v10]); - v12 = 0; - this[10] = a4 | 8; - if ( (a4 & 3) != 0 ) - v12 = this[12]; - std::wstringbuf::_M_sync(v13, (_DWORD *)this[11], 0, v12); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)v13); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051DAA0) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); - v7 = *a2; - v8 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; - this[2] = (int)&off_560464; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[12] = 0; - this[10] = a3 | 8; - this[11] = (int)(this + 13); - *((_WORD *)this + 26) = 0; - v9 = *this; - this[2] = (int)&off_55F968; - std::wios::init((int)this + *(_DWORD *)(v9 - 12), (int)(this + 2)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051DC00) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - int v7; // edx - int v8; // eax - int v9; // ecx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - this[2] = (int)&off_560464; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[12] = 0; - this[11] = (int)(this + 13); - *((_WORD *)this + 26) = 0; - v8 = *this; - this[2] = (int)&off_55F968; - v9 = *(_DWORD *)(v8 - 12); - this[10] = 8; - std::wios::init((int)this + v9, (int)(this + 2)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051DD50) -------------------------------------------------------- -void __fastcall std::wistringstream::~wistringstream(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[11]; - *Block = &off_55FBF4; - Block[17] = off_55FC08; - Block[2] = &off_55F968; - if ( v2 != Block + 13 ) - operator delete(v2); - Block[2] = &off_560464; - std::locale::~locale((_DWORD **)Block + 9); - *Block = &unk_55B348; - Block[1] = 0; - Block[17] = &off_560E30; - std::ios_base::~ios_base((int)(Block + 17)); - operator delete(Block); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FBF4: using guessed type int (*off_55FBF4)(); -// 55FC08: using guessed type int (*off_55FC08[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (0051DDC0) -------------------------------------------------------- -void __fastcall std::wistringstream::~wistringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 44); - *(_DWORD *)a1 = &off_55FBF4; - *(_DWORD *)(a1 + 68) = off_55FC08; - *(_DWORD *)(a1 + 8) = &off_55F968; - if ( Block != (void *)(a1 + 52) ) - operator delete(Block); - *(_DWORD *)(a1 + 8) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 36)); - *(_DWORD *)a1 = &unk_55B348; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 68) = &off_560E30; - std::ios_base::~ios_base(a1 + 68); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FBF4: using guessed type int (*off_55FBF4)(); -// 55FC08: using guessed type int (*off_55FC08[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (0051DE20) -------------------------------------------------------- -int __thiscall std::wistringstream::~wistringstream(int *this, int *a2) -{ - int v3; // eax - char *Block; // eax - int v5; // eax - int result; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - Block = (char *)this[11]; - this[2] = (int)&off_55F968; - if ( Block != (char *)(this + 13) ) - operator delete(Block); - this[2] = (int)&off_560464; - std::locale::~locale((_DWORD **)this + 9); - v5 = a2[1]; - *this = v5; - result = *(_DWORD *)(v5 - 12); - *(int *)((char *)this + result) = a2[2]; - this[1] = 0; - return result; -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051DE80) -------------------------------------------------------- -_DWORD *__thiscall std::wistringstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - __int16 v6; // cx - int v7; // eax - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wstringbuf::operator=((int)(this + 2), (int)(a2 + 2)); - return this; -} -// 51DEC0: variable 'v9' is possibly undefined - -//----- (0051DF60) -------------------------------------------------------- -int __thiscall std::ostringstream::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 4); - std::string::_M_replace((unsigned int *)(this + 40), 0, *(_DWORD *)(this + 44), *(char **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 36) & 3) != 0 ) - v4 = *(_DWORD *)(this + 44); - return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); -} - -//----- (0051DFD0) -------------------------------------------------------- -void __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - char v6; // cl - char v7; // cl - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - *((_BYTE *)v4 + 117) = v7; - std::stringbuf::swap(this + 1, (int)(a2 + 1)); -} -// 51E010: variable 'v8' is possibly undefined - -//----- (0051E0A0) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - int v3; // edx - unsigned int v4; // eax - int v5; // ecx - int v6; // eax - _DWORD *v7; // eax - int v8; // ebx - int v9; // ecx - int v10; // ebx - _DWORD *v11; // eax - int v12; // edx - int v13; // ecx - int v14; // ecx - std::ios_base *v15; // [esp+4h] [ebp-B4h] - const std::locale *v16; // [esp+4h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v19; // [esp+24h] [ebp-94h] - _DWORD *v20; // [esp+24h] [ebp-94h] - __int64 v22; // [esp+70h] [ebp-48h] - int v23; // [esp+78h] [ebp-40h] - __int64 v24; // [esp+80h] [ebp-38h] - __int64 v25; // [esp+88h] [ebp-30h] - int v26; // [esp+90h] [ebp-28h] - int v27; // [esp+98h] [ebp-20h] - - v19 = this + 16; - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_55B370; - this[16] = &unk_55B384; - lpuexcpta = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v19, lpuexcpta, v15); - std::ios::_M_cache_locale(v19, (int)(this + 43)); - v22 = -1LL; - v2 = *((_DWORD *)lpuexcpta + 28); - *this = &off_55FC1C; - *((_DWORD *)lpuexcpta + 28) = 0; - this[44] = v2; - LOWORD(v2) = *((_WORD *)lpuexcpta + 58); - this[46] = 0; - *((_WORD *)this + 90) = v2; - lpuexcpt = (struct _Unwind_Exception *)(this + 1); - v3 = a2[10]; - v4 = a2[2]; - this[16] = off_55FC30; - v23 = -1; - LODWORD(v24) = -1; - v25 = -1LL; - v26 = -1; - v27 = -1; - if ( !v4 ) - { - v5 = a2[5]; - if ( !v5 ) - goto LABEL_7; - goto LABEL_3; - } - v22 = (int)(v4 - v3); - v23 = a2[3] - v3; - v4 = a2[4]; - v24 = (int)(v4 - v3); - v5 = a2[5]; - if ( v5 ) - { -LABEL_3: - v25 = v5 - v3; - v26 = a2[6] - v5; - v27 = a2[7] - v3; - if ( v4 < a2[6] ) - v4 = a2[6]; - } - if ( v4 ) - a2[11] = v4 - v3; -LABEL_7: - std::streambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 1), v16); - v6 = a2[9]; - this[1] = &off_55F928; - this[10] = this + 12; - this[9] = v6; - v20 = a2 + 12; - v7 = (_DWORD *)a2[10]; - if ( v7 == a2 + 12 ) - { - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - this[15] = a2[15]; - } - else - { - this[10] = v7; - this[12] = a2[12]; - } - this[11] = a2[11]; - *((_BYTE *)a2 + 48) = 0; - a2[10] = v20; - a2[11] = 0; - v8 = this[10]; - if ( ((unsigned int)v22 & HIDWORD(v22)) != -1 ) - { - this[2] = v8 + v22; - this[3] = v8 + v23; - this[4] = v8 + v24; - } - if ( ((unsigned int)v25 & HIDWORD(v25)) != -1 ) - { - v9 = v8 + v27; - v10 = v25 + v8; - this[7] = v9; - this[5] = v10; - this[6] = v10 + v26; - } - v11 = (_DWORD *)a2[10]; - v12 = a2[9] & 0x10; - if ( v11 == v20 ) - v13 = 15; - else - v13 = a2[12]; - v14 = (int)v11 + v13; - if ( (a2[9] & 8) != 0 ) - { - a2[2] = v11; - a2[3] = v11; - a2[4] = v11; - if ( v12 ) - { - a2[6] = v11; - a2[5] = v11; - a2[7] = v14; - } - } - else if ( v12 ) - { - a2[6] = v11; - a2[5] = v11; - a2[7] = v14; - a2[2] = v11; - a2[3] = v11; - a2[4] = v11; - } - this[46] = lpuexcpt; -} -// 51E39F: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 51E156: variable 'v15' is possibly undefined -// 51E2D3: variable 'v16' is possibly undefined -// 55F928: using guessed type int (*off_55F928)(); -// 55FC1C: using guessed type int (*off_55FC1C)(); -// 55FC30: using guessed type int (*off_55FC30[2])(); - -//----- (0051E520) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2, int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - int v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v6 = (int)(this + 16); - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_55B370; - this[16] = &unk_55B384; - std::ios::init(v6, 0); - *this = &off_55FC1C; - this[16] = off_55FC30; - this[1] = &off_560424; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - v7 = this + 1; - std::locale::locale(this + 8); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - this[1] = &off_55F928; - this[9] = 0; - this[10] = this + 12; - std::string::_M_construct(this + 10, v4, (int)&v4[v3]); - v5 = 0; - this[9] = a3 | 0x10; - if ( (a3 & 3) != 0 ) - v5 = this[11]; - std::stringbuf::_M_sync(v7, (_DWORD *)this[10], 0, v5); - std::ios::init(v6, (int)v7); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FC1C: using guessed type int (*off_55FC1C)(); -// 55FC30: using guessed type int (*off_55FC30[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051E730) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2) -{ - int v2; // [esp+24h] [ebp-44h] - - v2 = (int)(this + 16); - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_55B370; - this[16] = &unk_55B384; - std::ios::init(v2, 0); - *this = &off_55FC1C; - this[16] = off_55FC30; - this[1] = &off_560424; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[1] = &off_55F928; - this[9] = a2 | 0x10; - this[10] = this + 12; - this[11] = 0; - *((_BYTE *)this + 48) = 0; - std::ios::init(v2, (int)(this + 1)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FC1C: using guessed type int (*off_55FC1C)(); -// 55FC30: using guessed type int (*off_55FC30[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051E8C0) -------------------------------------------------------- -void __fastcall std::ostringstream::basic_ostringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 64; - std::ios_base::ios_base((_DWORD *)(a1 + 64)); - *(_DWORD *)(a1 + 176) = 0; - *(_WORD *)(a1 + 180) = 0; - *(_DWORD *)(a1 + 184) = 0; - *(_DWORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)a1 = &unk_55B370; - *(_DWORD *)(a1 + 64) = &unk_55B384; - std::ios::init(v1, 0); - *(_DWORD *)a1 = &off_55FC1C; - *(_DWORD *)(a1 + 64) = off_55FC30; - *(_DWORD *)(a1 + 4) = &off_560424; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - std::locale::locale((_DWORD *)(a1 + 32)); - *(_DWORD *)(a1 + 4) = &off_55F928; - *(_DWORD *)(a1 + 36) = 16; - *(_DWORD *)(a1 + 40) = a1 + 48; - *(_DWORD *)(a1 + 44) = 0; - *(_BYTE *)(a1 + 48) = 0; - std::ios::init(v1, a1 + 4); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FC1C: using guessed type int (*off_55FC1C)(); -// 55FC30: using guessed type int (*off_55FC30[2])(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051EA50) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // edx - int v8; // edx - unsigned int v9; // eax - int v10; // ecx - int v11; // eax - _DWORD *v12; // eax - int v13; // ebx - int v14; // ecx - int v15; // ebx - struct _Unwind_Exception *v16; // eax - int v17; // edx - int v18; // ecx - char *v19; // ecx - std::ios_base *v20; // [esp+4h] [ebp-A4h] - const std::locale *v21; // [esp+4h] [ebp-A4h] - std::ios_base *v22; // [esp+10h] [ebp-98h] - _DWORD *v23; // [esp+10h] [ebp-98h] - struct _Unwind_Exception *lpuexcpta; // [esp+14h] [ebp-94h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] - __int64 v27; // [esp+60h] [ebp-48h] - int v28; // [esp+68h] [ebp-40h] - __int64 v29; // [esp+70h] [ebp-38h] - __int64 v30; // [esp+78h] [ebp-30h] - int v31; // [esp+80h] [ebp-28h] - int v32; // [esp+88h] [ebp-20h] - - v4 = a2[1]; - *this = v4; - lpuexcpta = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - *(_DWORD *)lpuexcpta = a2[2]; - v22 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpta, v22, v20); - std::ios::_M_cache_locale(lpuexcpta, (int)lpuexcpta + 108); - v5 = *((_DWORD *)v22 + 28); - *((_DWORD *)lpuexcpta + 30) = 0; - *((_DWORD *)v22 + 28) = 0; - *((_DWORD *)lpuexcpta + 28) = v5; - *((_WORD *)lpuexcpta + 58) = *((_WORD *)v22 + 58); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - v27 = -1LL; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - v23 = this + 1; - v28 = -1; - LODWORD(v29) = -1; - v30 = -1LL; - v31 = -1; - v32 = -1; - v8 = a3[10]; - v9 = a3[2]; - if ( !v9 ) - { - v10 = a3[5]; - if ( !v10 ) - goto LABEL_7; - goto LABEL_3; - } - v27 = (int)(v9 - v8); - v28 = a3[3] - v8; - v9 = a3[4]; - v29 = (int)(v9 - v8); - v10 = a3[5]; - if ( v10 ) - { -LABEL_3: - v30 = v10 - v8; - v31 = a3[6] - v10; - v32 = a3[7] - v8; - if ( v9 < a3[6] ) - v9 = a3[6]; - } - if ( v9 ) - a3[11] = v9 - v8; -LABEL_7: - std::streambuf::basic_streambuf(v23, (std::locale *)(a3 + 1), v21); - v11 = a3[9]; - this[1] = (int)&off_55F928; - this[10] = (int)(this + 12); - this[9] = v11; - lpuexcpt = (struct _Unwind_Exception *)(a3 + 12); - v12 = (_DWORD *)a3[10]; - if ( v12 == a3 + 12 ) - { - this[12] = a3[12]; - this[13] = a3[13]; - this[14] = a3[14]; - this[15] = a3[15]; - } - else - { - this[10] = (int)v12; - this[12] = a3[12]; - } - this[11] = a3[11]; - a3[10] = lpuexcpt; - *((_BYTE *)a3 + 48) = 0; - v13 = this[10]; - a3[11] = 0; - if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) - { - this[2] = v13 + v27; - this[3] = v13 + v28; - this[4] = v13 + v29; - } - if ( ((unsigned int)v30 & HIDWORD(v30)) != -1 ) - { - v14 = v13 + v32; - v15 = v30 + v13; - this[7] = v14; - this[5] = v15; - this[6] = v15 + v31; - } - v16 = (struct _Unwind_Exception *)a3[10]; - v17 = a3[9] & 0x10; - if ( v16 == lpuexcpt ) - v18 = 15; - else - v18 = a3[12]; - v19 = (char *)v16 + v18; - if ( (a3[9] & 8) != 0 ) - { - a3[2] = v16; - a3[3] = v16; - a3[4] = v16; - if ( v17 ) - { - a3[6] = v16; - a3[5] = v16; - a3[7] = v19; - } - } - else if ( v17 ) - { - a3[6] = v16; - a3[5] = v16; - a3[7] = v19; - a3[2] = v16; - a3[3] = v16; - a3[4] = v16; - } - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v23; -} -// 51ED0A: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 51EAC2: variable 'v20' is possibly undefined -// 51EC3E: variable 'v21' is possibly undefined -// 55F928: using guessed type int (*off_55F928)(); - -//----- (0051EE60) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4) -{ - int v5; // eax - _DWORD *v6; // ecx - int v7; // eax - int v8; // edx - _BYTE *v9; // edx - int v10; // eax - unsigned int v11; // eax - _DWORD *v12; // [esp+24h] [ebp-44h] - - v5 = a2[1]; - *this = v5; - v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); - *v6 = a2[2]; - std::ios::init((int)v6, 0); - v7 = *a2; - v8 = a2[3]; - *this = *a2; - v12 = this + 1; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; - this[1] = (int)&off_560424; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - v9 = *(_BYTE **)a3; - v10 = *(_DWORD *)(a3 + 4); - this[1] = (int)&off_55F928; - this[9] = 0; - this[10] = (int)(this + 12); - std::string::_M_construct(this + 10, v9, (int)&v9[v10]); - v11 = 0; - this[9] = a4 | 0x10; - if ( (a4 & 3) != 0 ) - v11 = this[11]; - std::stringbuf::_M_sync(v12, (_DWORD *)this[10], 0, v11); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)v12); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051F020) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3) -{ - int v3; // eax - _DWORD *v4; // ecx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // ecx - - v3 = a2[1]; - *this = v3; - v4 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); - *v4 = a2[2]; - std::ios::init((int)v4, 0); - v5 = *a2; - v6 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; - this[1] = (int)&off_560424; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[11] = 0; - this[9] = a3 | 0x10; - this[10] = (int)(this + 12); - v7 = *this; - *((_BYTE *)this + 48) = 0; - v8 = *(_DWORD *)(v7 - 12); - this[1] = (int)&off_55F928; - std::ios::init((int)this + v8, (int)(this + 1)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051F160) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2) -{ - int v2; // eax - _DWORD *v3; // ecx - int v4; // eax - int v5; // edx - int v6; // eax - - v2 = a2[1]; - *this = v2; - v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v3 = a2[2]; - std::ios::init((int)v3, 0); - v4 = *a2; - v5 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - this[1] = (int)&off_560424; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[1] = (int)&off_55F928; - this[10] = (int)(this + 12); - v6 = *this; - this[9] = 16; - this[11] = 0; - *((_BYTE *)this + 48) = 0; - std::ios::init((int)this + *(_DWORD *)(v6 - 12), (int)(this + 1)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051F290) -------------------------------------------------------- -void __fastcall std::ostringstream::~ostringstream(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[10]; - *Block = &off_55FC1C; - Block[16] = off_55FC30; - Block[1] = &off_55F928; - if ( v2 != Block + 12 ) - operator delete(v2); - Block[1] = &off_560424; - std::locale::~locale((_DWORD **)Block + 8); - *Block = &unk_55B370; - Block[16] = &off_560E20; - std::ios_base::~ios_base((int)(Block + 16)); - operator delete(Block); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FC1C: using guessed type int (*off_55FC1C)(); -// 55FC30: using guessed type int (*off_55FC30[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (0051F2F0) -------------------------------------------------------- -void __fastcall std::ostringstream::~ostringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 40); - *(_DWORD *)a1 = &off_55FC1C; - *(_DWORD *)(a1 + 64) = off_55FC30; - *(_DWORD *)(a1 + 4) = &off_55F928; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B370; - *(_DWORD *)(a1 + 64) = &off_560E20; - std::ios_base::~ios_base(a1 + 64); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FC1C: using guessed type int (*off_55FC1C)(); -// 55FC30: using guessed type int (*off_55FC30[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (0051F350) -------------------------------------------------------- -int __thiscall std::ostringstream::~ostringstream(int *this, int *a2) -{ - int v3; // eax - char *Block; // eax - int v5; // eax - int result; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - Block = (char *)this[10]; - this[1] = (int)&off_55F928; - if ( Block != (char *)(this + 12) ) - operator delete(Block); - this[1] = (int)&off_560424; - std::locale::~locale((_DWORD **)this + 8); - v5 = a2[1]; - *this = v5; - result = *(_DWORD *)(v5 - 12); - *(int *)((char *)this + result) = a2[2]; - return result; -} -// 55F928: using guessed type int (*off_55F928)(); -// 560424: using guessed type int (*off_560424)(); - -//----- (0051F3B0) -------------------------------------------------------- -_DWORD *__thiscall std::ostringstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - char v6; // cl - char v7; // cl - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = v5; - *((_BYTE *)v4 + 117) = v7; - std::stringbuf::operator=((int)(this + 1), (int)(a2 + 1)); - return this; -} -// 51F3F0: variable 'v9' is possibly undefined - -//----- (0051F480) -------------------------------------------------------- -int __thiscall std::wostringstream::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 4); - std::wstring::_M_replace((unsigned int *)(this + 40), 0, *(_DWORD *)(this + 44), *(_WORD **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 36) & 3) != 0 ) - v4 = *(_DWORD *)(this + 44); - return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); -} - -//----- (0051F4F0) -------------------------------------------------------- -void __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // edx - __int16 v6; // cx - std::ios_base *v7; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v7); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - *((_BYTE *)v4 + 118) = v6; - std::wstringbuf::swap(this + 1, (int)(a2 + 1)); -} -// 51F530: variable 'v7' is possibly undefined - -//----- (0051F5C0) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - int v3; // edx - unsigned int v4; // eax - int v5; // ecx - int v6; // eax - _DWORD *v7; // esi - _DWORD *v8; // eax - int v9; // ecx - int v10; // ebx - char *v11; // ecx - int v12; // edx - std::ios_base *v13; // [esp+4h] [ebp-B4h] - const std::locale *v14; // [esp+4h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v17; // [esp+24h] [ebp-94h] - int v19; // [esp+70h] [ebp-48h] - int v20; // [esp+74h] [ebp-44h] - int v21; // [esp+78h] [ebp-40h] - __int64 v22; // [esp+80h] [ebp-38h] - int v23; // [esp+88h] [ebp-30h] - int v24; // [esp+8Ch] [ebp-2Ch] - int v25; // [esp+90h] [ebp-28h] - int v26; // [esp+98h] [ebp-20h] - - v17 = this + 16; - std::ios_base::ios_base(this + 16); - *((_WORD *)this + 90) = 0; - this[44] = 0; - *((_BYTE *)this + 182) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_55B398; - this[16] = &unk_55B3AC; - lpuexcpta = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v17, lpuexcpta, v13); - std::wios::_M_cache_locale(v17, (int)(this + 43)); - v19 = -1; - v20 = -1; - v2 = *((_DWORD *)lpuexcpta + 28); - *this = &off_55FC44; - *((_DWORD *)lpuexcpta + 28) = 0; - this[44] = v2; - LOWORD(v2) = *((_WORD *)lpuexcpta + 58); - this[46] = 0; - *((_WORD *)this + 90) = v2; - LOBYTE(v2) = *((_BYTE *)lpuexcpta + 118); - this[16] = off_55FC58; - v3 = a2[10]; - *((_BYTE *)this + 182) = v2; - lpuexcpt = (struct _Unwind_Exception *)(this + 1); - v4 = a2[2]; - v21 = -1; - LODWORD(v22) = -1; - v23 = -1; - v24 = -1; - v25 = -1; - v26 = -1; - if ( !v4 ) - { - v5 = a2[5]; - if ( !v5 ) - goto LABEL_7; - goto LABEL_3; - } - v19 = (int)(v4 - v3) >> 1; - v20 = (int)(v4 - v3) >> 31; - v21 = (a2[3] - v3) >> 1; - v4 = a2[4]; - v22 = (int)(v4 - v3) >> 1; - v5 = a2[5]; - if ( v5 ) - { -LABEL_3: - v23 = (v5 - v3) >> 1; - v24 = (v5 - v3) >> 31; - v25 = (a2[6] - v5) >> 1; - v26 = (a2[7] - v3) >> 1; - if ( v4 < a2[6] ) - v4 = a2[6]; - } - if ( v4 ) - a2[11] = (int)(v4 - v3) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 1), v14); - v6 = a2[9]; - this[1] = &off_55F968; - this[10] = this + 12; - v7 = a2 + 12; - this[9] = v6; - v8 = (_DWORD *)a2[10]; - if ( v8 == a2 + 12 ) - { - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - this[15] = a2[15]; - } - else - { - this[10] = v8; - this[12] = a2[12]; - } - this[11] = a2[11]; - a2[10] = v7; - *((_WORD *)a2 + 24) = 0; - v9 = this[10]; - a2[11] = 0; - if ( (v19 & v20) != -1 ) - { - this[2] = v9 + 2 * v19; - this[3] = v9 + 2 * v21; - this[4] = v9 + 2 * v22; - } - if ( (v23 & v24) != -1 ) - { - v10 = v9 + 2 * v23; - this[7] = v9 + 2 * v26; - this[5] = v10; - this[6] = v10 + 2 * v25; - } - v11 = (char *)a2 + 62; - v12 = a2[9] & 0x10; - if ( (a2[9] & 8) != 0 ) - { - a2[2] = v7; - a2[3] = v7; - a2[4] = v7; - if ( v12 ) - { - a2[6] = v7; - a2[5] = v7; - a2[7] = v11; - } - } - else if ( v12 ) - { - a2[6] = v7; - a2[5] = v7; - a2[7] = v11; - a2[2] = v7; - a2[3] = v7; - a2[4] = v7; - } - this[46] = lpuexcpt; -} -// 51F8E9: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 51F67F: variable 'v13' is possibly undefined -// 51F814: variable 'v14' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); -// 55FC44: using guessed type int (*off_55FC44)(); -// 55FC58: using guessed type int (*off_55FC58[2])(); - -//----- (0051FA30) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2, int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - int v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v6 = (int)(this + 16); - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - *((_BYTE *)this + 182) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_55B398; - this[16] = &unk_55B3AC; - std::wios::init(v6, 0); - *this = &off_55FC44; - this[16] = off_55FC58; - this[1] = &off_560464; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - v7 = this + 1; - std::locale::locale(this + 8); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - this[1] = &off_55F968; - this[9] = 0; - this[10] = this + 12; - std::wstring::_M_construct(this + 10, v4, (int)&v4[v3]); - v5 = 0; - this[9] = a3 | 0x10; - if ( (a3 & 3) != 0 ) - v5 = this[11]; - std::wstringbuf::_M_sync(v7, (_DWORD *)this[10], 0, v5); - std::wios::init(v6, (int)v7); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FC44: using guessed type int (*off_55FC44)(); -// 55FC58: using guessed type int (*off_55FC58[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051FC40) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2) -{ - int v2; // [esp+24h] [ebp-44h] - - v2 = (int)(this + 16); - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - *((_BYTE *)this + 182) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_55B398; - this[16] = &unk_55B3AC; - std::wios::init(v2, 0); - *this = &off_55FC44; - this[16] = off_55FC58; - this[1] = &off_560464; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[1] = &off_55F968; - this[9] = a2 | 0x10; - this[10] = this + 12; - this[11] = 0; - *((_WORD *)this + 24) = 0; - std::wios::init(v2, (int)(this + 1)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FC44: using guessed type int (*off_55FC44)(); -// 55FC58: using guessed type int (*off_55FC58[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051FDD0) -------------------------------------------------------- -void __fastcall std::wostringstream::basic_ostringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 64; - std::ios_base::ios_base((_DWORD *)(a1 + 64)); - *(_DWORD *)(a1 + 176) = 0; - *(_WORD *)(a1 + 180) = 0; - *(_BYTE *)(a1 + 182) = 0; - *(_DWORD *)(a1 + 184) = 0; - *(_DWORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)a1 = &unk_55B398; - *(_DWORD *)(a1 + 64) = &unk_55B3AC; - std::wios::init(v1, 0); - *(_DWORD *)a1 = &off_55FC44; - *(_DWORD *)(a1 + 64) = off_55FC58; - *(_DWORD *)(a1 + 4) = &off_560464; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - std::locale::locale((_DWORD *)(a1 + 32)); - *(_DWORD *)(a1 + 4) = &off_55F968; - *(_DWORD *)(a1 + 40) = a1 + 48; - *(_DWORD *)(a1 + 36) = 16; - *(_DWORD *)(a1 + 44) = 0; - *(_WORD *)(a1 + 48) = 0; - std::wios::init(v1, a1 + 4); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FC44: using guessed type int (*off_55FC44)(); -// 55FC58: using guessed type int (*off_55FC58[2])(); -// 560464: using guessed type int (*off_560464)(); - -//----- (0051FF60) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // edx - unsigned int v8; // eax - int v9; // edx - int v10; // ecx - int v11; // eax - _DWORD *v12; // esi - _DWORD *v13; // eax - int v14; // ecx - int v15; // ebx - char *v16; // ecx - int v17; // edx - std::ios_base *v18; // [esp+4h] [ebp-A4h] - const std::locale *v19; // [esp+4h] [ebp-A4h] - std::ios_base *v20; // [esp+10h] [ebp-98h] - _DWORD *v21; // [esp+10h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] - int v24; // [esp+60h] [ebp-48h] - int v25; // [esp+64h] [ebp-44h] - int v26; // [esp+68h] [ebp-40h] - __int64 v27; // [esp+70h] [ebp-38h] - int v28; // [esp+78h] [ebp-30h] - int v29; // [esp+7Ch] [ebp-2Ch] - int v30; // [esp+80h] [ebp-28h] - int v31; // [esp+88h] [ebp-20h] - - v4 = a2[1]; - *this = v4; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - *(_DWORD *)lpuexcpt = a2[2]; - v20 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v20, v18); - std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v5 = *((_DWORD *)v20 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v20 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v5; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v20 + 58); - *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v20 + 118); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - v24 = -1; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - v21 = this + 1; - v25 = -1; - v26 = -1; - LODWORD(v27) = -1; - v28 = -1; - v29 = -1; - v30 = -1; - v31 = -1; - v8 = a3[2]; - v9 = a3[10]; - if ( !v8 ) - { - v10 = a3[5]; - if ( !v10 ) - goto LABEL_7; - goto LABEL_3; - } - v24 = (int)(v8 - v9) >> 1; - v25 = (int)(v8 - v9) >> 31; - v26 = (a3[3] - v9) >> 1; - v8 = a3[4]; - v27 = (int)(v8 - v9) >> 1; - v10 = a3[5]; - if ( v10 ) - { -LABEL_3: - v28 = (v10 - v9) >> 1; - v29 = (v10 - v9) >> 31; - v30 = (a3[6] - v10) >> 1; - v31 = (a3[7] - v9) >> 1; - if ( v8 < a3[6] ) - v8 = a3[6]; - } - if ( v8 ) - a3[11] = (int)(v8 - v9) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(v21, (std::locale *)(a3 + 1), v19); - v11 = a3[9]; - this[1] = (int)&off_55F968; - v12 = a3 + 12; - this[9] = v11; - this[10] = (int)(this + 12); - v13 = (_DWORD *)a3[10]; - if ( v13 == a3 + 12 ) - { - this[12] = a3[12]; - this[13] = a3[13]; - this[14] = a3[14]; - this[15] = a3[15]; - } - else - { - this[10] = (int)v13; - this[12] = a3[12]; - } - this[11] = a3[11]; - a3[10] = v12; - *((_WORD *)a3 + 24) = 0; - v14 = this[10]; - a3[11] = 0; - if ( (v24 & v25) != -1 ) - { - this[2] = v14 + 2 * v24; - this[3] = v14 + 2 * v26; - this[4] = v14 + 2 * v27; - } - if ( (v28 & v29) != -1 ) - { - v15 = v14 + 2 * v28; - this[7] = v14 + 2 * v31; - this[5] = v15; - this[6] = v15 + 2 * v30; - } - v16 = (char *)a3 + 62; - v17 = a3[9] & 0x10; - if ( (a3[9] & 8) != 0 ) - { - a3[2] = v12; - a3[3] = v12; - a3[4] = v12; - if ( v17 ) - { - a3[6] = v12; - a3[5] = v12; - a3[7] = v16; - } - } - else if ( v17 ) - { - a3[6] = v12; - a3[5] = v12; - a3[7] = v16; - a3[2] = v12; - a3[3] = v12; - a3[4] = v12; - } - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v21; -} -// 520237: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 51FFD2: variable 'v18' is possibly undefined -// 520160: variable 'v19' is possibly undefined -// 55F968: using guessed type int (*off_55F968)(); - -//----- (00520370) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4) -{ - int v5; // eax - _DWORD *v6; // ecx - int v7; // eax - int v8; // edx - int v9; // edx - _WORD *v10; // eax - unsigned int v11; // eax - _DWORD *v12; // [esp+24h] [ebp-44h] - - v5 = a2[1]; - *this = v5; - v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); - *v6 = a2[2]; - std::wios::init((int)v6, 0); - v7 = *a2; - v8 = a2[3]; - *this = *a2; - v12 = this + 1; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; - this[1] = (int)&off_560464; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - v9 = *(_DWORD *)(a3 + 4); - v10 = *(_WORD **)a3; - this[1] = (int)&off_55F968; - this[9] = 0; - this[10] = (int)(this + 12); - std::wstring::_M_construct(this + 10, v10, (int)&v10[v9]); - v11 = 0; - this[9] = a4 | 0x10; - if ( (a4 & 3) != 0 ) - v11 = this[11]; - std::wstringbuf::_M_sync(v12, (_DWORD *)this[10], 0, v11); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)v12); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00520530) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3) -{ - int v3; // eax - _DWORD *v4; // ecx - int v5; // eax - int v6; // edx - int v7; // eax - - v3 = a2[1]; - *this = v3; - v4 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); - *v4 = a2[2]; - std::wios::init((int)v4, 0); - v5 = *a2; - v6 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; - this[1] = (int)&off_560464; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[11] = 0; - this[9] = a3 | 0x10; - this[10] = (int)(this + 12); - *((_WORD *)this + 24) = 0; - v7 = *this; - this[1] = (int)&off_55F968; - std::wios::init((int)this + *(_DWORD *)(v7 - 12), (int)(this + 1)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00520670) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2) -{ - int v2; // eax - _DWORD *v3; // ecx - int v4; // eax - int v5; // edx - int v6; // eax - - v2 = a2[1]; - *this = v2; - v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v3 = a2[2]; - std::wios::init((int)v3, 0); - v4 = *a2; - v5 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - this[1] = (int)&off_560464; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[1] = (int)&off_55F968; - this[10] = (int)(this + 12); - *((_WORD *)this + 24) = 0; - v6 = *this; - this[9] = 16; - this[11] = 0; - std::wios::init((int)this + *(_DWORD *)(v6 - 12), (int)(this + 1)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (005207B0) -------------------------------------------------------- -void __fastcall std::wostringstream::~wostringstream(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[10]; - *Block = &off_55FC44; - Block[16] = off_55FC58; - Block[1] = &off_55F968; - if ( v2 != Block + 12 ) - operator delete(v2); - Block[1] = &off_560464; - std::locale::~locale((_DWORD **)Block + 8); - *Block = &unk_55B398; - Block[16] = &off_560E30; - std::ios_base::~ios_base((int)(Block + 16)); - operator delete(Block); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FC44: using guessed type int (*off_55FC44)(); -// 55FC58: using guessed type int (*off_55FC58[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00520810) -------------------------------------------------------- -void __fastcall std::wostringstream::~wostringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 40); - *(_DWORD *)a1 = &off_55FC44; - *(_DWORD *)(a1 + 64) = off_55FC58; - *(_DWORD *)(a1 + 4) = &off_55F968; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B398; - *(_DWORD *)(a1 + 64) = &off_560E30; - std::ios_base::~ios_base(a1 + 64); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FC44: using guessed type int (*off_55FC44)(); -// 55FC58: using guessed type int (*off_55FC58[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00520870) -------------------------------------------------------- -int __thiscall std::wostringstream::~wostringstream(int *this, int *a2) -{ - int v3; // eax - char *Block; // eax - int v5; // eax - int result; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - Block = (char *)this[10]; - this[1] = (int)&off_55F968; - if ( Block != (char *)(this + 12) ) - operator delete(Block); - this[1] = (int)&off_560464; - std::locale::~locale((_DWORD **)this + 8); - v5 = a2[1]; - *this = v5; - result = *(_DWORD *)(v5 - 12); - *(int *)((char *)this + result) = a2[2]; - return result; -} -// 55F968: using guessed type int (*off_55F968)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (005208D0) -------------------------------------------------------- -_DWORD *__thiscall std::wostringstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // esi - std::ios_base *v4; // ebx - int v5; // eax - __int16 v6; // cx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base *)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = *((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = *((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - *((_BYTE *)v4 + 118) = v6; - std::wstringbuf::operator=((int)(this + 1), (int)(a2 + 1)); - return this; -} -// 520910: variable 'v8' is possibly undefined - -//----- (005209A0) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_55FC68; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (005209D0) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FC68; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00520A70) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_55FC68; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00520AA0) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FC68; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00520B40) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_55FC68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 520B7E: variable 'lpfctx' is possibly undefined -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00520BA0) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FC68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 520BDE: variable 'lpfctx' is possibly undefined -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00520C00) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FC68; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 520C3E: variable 'lpfctx' is possibly undefined -// 55FC68: using guessed type int (*off_55FC68)(); - -//----- (00520C60) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_55FC84; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00520C90) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FC84; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00520D30) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_55FC84; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00520D60) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FC84; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00520E00) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_55FC84; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 520E3E: variable 'lpfctx' is possibly undefined -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00520E60) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FC84; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 520E9E: variable 'lpfctx' is possibly undefined -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00520EC0) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FC84; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 520EFE: variable 'lpfctx' is possibly undefined -// 55FC84: using guessed type int (*off_55FC84)(); - -//----- (00520F20) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_55FCA0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (00520FC0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FCA0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (00521060) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_55FCA0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (00521100) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FCA0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (005211A0) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_55FCA0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 5211DE: variable 'lpfctx' is possibly undefined -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (00521200) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FCA0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 52123E: variable 'lpfctx' is possibly undefined -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (00521260) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FCA0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 52129E: variable 'lpfctx' is possibly undefined -// 55FCA0: using guessed type int (*off_55FCA0)(); - -//----- (005212C0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_55FCBC; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (00521360) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FCBC; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (00521400) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_55FCBC; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (005214A0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FCBC; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (00521540) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_55FCBC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 52157E: variable 'lpfctx' is possibly undefined -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (005215A0) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FCBC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5215DE: variable 'lpfctx' is possibly undefined -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (00521600) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_55FCBC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 52163E: variable 'lpfctx' is possibly undefined -// 55FCBC: using guessed type int (*off_55FCBC)(); - -//----- (00521660) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) -{ - _DWORD *v2; // eax - char *v3; // esi - int i; // eax - char *v5; // esi - int j; // eax - _DWORD *result; // eax - _DWORD *v8; // [esp+1Ch] [ebp-10h] - - v2 = (_DWORD *)this[2]; - if ( !v2 ) - { - v8 = this; - v2 = operator new(0x68u); - this = v8; - v2[1] = 0; - *v2 = &off_5605B0; - v2[2] = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[5] = 0; - v2[6] = 0; - v2[7] = 0; - v2[8] = 0; - *((_WORD *)v2 + 18) = 0; - *((_BYTE *)v2 + 100) = 0; - v8[2] = v2; - } - v2[2] = &unk_556C10; - v3 = std::__num_base::_S_atoms_out[0]; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - *((_BYTE *)v2 + 36) = 46; - *(_BYTE *)(this[2] + 37) = 44; - for ( i = 0; i != 36; ++i ) - *(_BYTE *)(this[2] + i + 38) = v3[i]; - v5 = std::__num_base::_S_atoms_in[0]; - for ( j = 0; j != 26; ++j ) - *(_BYTE *)(this[2] + j + 74) = v5[j]; - result = (_DWORD *)this[2]; - result[5] = "true"; - result[6] = 4; - result[7] = "false"; - result[8] = 5; - return result; -} -// 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (00521760) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FCD8; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521800) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_55FCD8; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521890) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FCD8; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521930) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FCD8; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005219D0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_55FCD8; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521A60) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FCD8; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521B00) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55FCD8; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 521B60: variable 'lpfctx' is possibly undefined -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521BD0) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55FCD8; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 521C30: variable 'lpfctx' is possibly undefined -// 55FCD8: using guessed type int (__cdecl *off_55FCD8)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521C80) -------------------------------------------------------- -int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) -{ - _DWORD *v2; // edx - char *v3; // ebx - int v4; // eax - char *v5; // ebx - int result; // eax - _DWORD *v7; // eax - - v2 = (_DWORD *)this[2]; - if ( !v2 ) - { - v7 = operator new(0xA8u); - v7[1] = 0; - v2 = v7; - *v7 = &off_5605C0; - v7[2] = 0; - v7[3] = 0; - *((_BYTE *)v7 + 16) = 0; - v7[5] = 0; - v7[6] = 0; - v7[7] = 0; - v7[8] = 0; - v7[9] = 0; - *((_BYTE *)v7 + 164) = 0; - this[2] = v7; - } - v2[2] = &unk_556C10; - v3 = std::__num_base::_S_atoms_out[0]; - v4 = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[9] = 2883630; - do - { - *((_WORD *)v2 + v4 + 20) = v3[v4]; - ++v4; - } - while ( v4 != 36 ); - v5 = std::__num_base::_S_atoms_in[0]; - for ( result = 0; result != 26; ++result ) - *((_WORD *)v2 + result + 56) = v5[result]; - v2[5] = &off_556C1C; - v2[6] = 4; - v2[7] = &off_556C26; - v2[8] = 5; - return result; -} -// 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; -// 556C1C: using guessed type void *off_556C1C; -// 556C26: using guessed type void *off_556C26; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (00521D70) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FCFC; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521E10) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_55FCFC; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521EA0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FCFC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521F40) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_55FCFC; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00521FE0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_55FCFC; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00522070) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_55FCFC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00522110) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55FCFC; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 522170: variable 'lpfctx' is possibly undefined -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005221E0) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_55FCFC; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 522240: variable 'lpfctx' is possibly undefined -// 55FCFC: using guessed type int (__cdecl *off_55FCFC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00522290) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FD20; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (005222B0) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FD20; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (005222D0) -------------------------------------------------------- -void __fastcall std::time_get>::~time_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_55FD20; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 5222DC: variable 'Blocka' is possibly undefined -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (005222F0) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD20; - std::locale::facet::~facet(a1); -} -// 5222F0: variable 'v1' is possibly undefined -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (00522300) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD20; - std::locale::facet::~facet(a1); -} -// 522300: variable 'v1' is possibly undefined -// 55FD20: using guessed type int (*off_55FD20)(); - -//----- (00522310) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FD4C; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (00522330) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FD4C; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (00522350) -------------------------------------------------------- -void __fastcall std::time_get>::~time_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_55FD4C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52235C: variable 'Blocka' is possibly undefined -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (00522370) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD4C; - std::locale::facet::~facet(a1); -} -// 522370: variable 'v1' is possibly undefined -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (00522380) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD4C; - std::locale::facet::~facet(a1); -} -// 522380: variable 'v1' is possibly undefined -// 55FD4C: using guessed type int (*off_55FD4C)(); - -//----- (00522390) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FD78; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FD78: using guessed type int (*off_55FD78)(); - -//----- (005223B0) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FD78; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FD78: using guessed type int (*off_55FD78)(); - -//----- (005223D0) -------------------------------------------------------- -void __fastcall std::money_get>::~money_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_55FD78; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 5223DC: variable 'Blocka' is possibly undefined -// 55FD78: using guessed type int (*off_55FD78)(); - -//----- (005223F0) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD78; - std::locale::facet::~facet(a1); -} -// 5223F0: variable 'v1' is possibly undefined -// 55FD78: using guessed type int (*off_55FD78)(); - -//----- (00522400) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD78; - std::locale::facet::~facet(a1); -} -// 522400: variable 'v1' is possibly undefined -// 55FD78: using guessed type int (*off_55FD78)(); - -//----- (00522410) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FD90; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FD90: using guessed type int (*off_55FD90)(); - -//----- (00522430) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FD90; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FD90: using guessed type int (*off_55FD90)(); - -//----- (00522450) -------------------------------------------------------- -void __fastcall std::money_get>::~money_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_55FD90; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52245C: variable 'Blocka' is possibly undefined -// 55FD90: using guessed type int (*off_55FD90)(); - -//----- (00522470) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD90; - std::locale::facet::~facet(a1); -} -// 522470: variable 'v1' is possibly undefined -// 55FD90: using guessed type int (*off_55FD90)(); - -//----- (00522480) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FD90; - std::locale::facet::~facet(a1); -} -// 522480: variable 'v1' is possibly undefined -// 55FD90: using guessed type int (*off_55FD90)(); - -//----- (00522490) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FDA8; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FDA8: using guessed type int (*off_55FDA8)(); - -//----- (005224B0) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FDA8; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FDA8: using guessed type int (*off_55FDA8)(); - -//----- (005224D0) -------------------------------------------------------- -void __fastcall std::money_put>::~money_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_55FDA8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 5224DC: variable 'Blocka' is possibly undefined -// 55FDA8: using guessed type int (*off_55FDA8)(); - -//----- (005224F0) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FDA8; - std::locale::facet::~facet(a1); -} -// 5224F0: variable 'v1' is possibly undefined -// 55FDA8: using guessed type int (*off_55FDA8)(); - -//----- (00522500) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FDA8; - std::locale::facet::~facet(a1); -} -// 522500: variable 'v1' is possibly undefined -// 55FDA8: using guessed type int (*off_55FDA8)(); - -//----- (00522510) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FDC0; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FDC0: using guessed type int (*off_55FDC0)(); - -//----- (00522530) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_55FDC0; - result = a2 != 0; - this[1] = result; - return result; -} -// 55FDC0: using guessed type int (*off_55FDC0)(); - -//----- (00522550) -------------------------------------------------------- -void __fastcall std::money_put>::~money_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_55FDC0; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52255C: variable 'Blocka' is possibly undefined -// 55FDC0: using guessed type int (*off_55FDC0)(); - -//----- (00522570) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FDC0; - std::locale::facet::~facet(a1); -} -// 522570: variable 'v1' is possibly undefined -// 55FDC0: using guessed type int (*off_55FDC0)(); - -//----- (00522580) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FDC0; - std::locale::facet::~facet(a1); -} -// 522580: variable 'v1' is possibly undefined -// 55FDC0: using guessed type int (*off_55FDC0)(); - -//----- (00522590) -------------------------------------------------------- -std::__cxx11 *__cdecl std::to_string(std::__cxx11 *this, unsigned int a2) -{ - int v2; // esi - unsigned int v3; // ebx - unsigned int i; // eax - _BYTE *v5; // ecx - _BYTE *j; // esi - unsigned int v7; // edx - int v8; // ebx - - v2 = 1; - v3 = abs32(a2); - for ( i = v3; i > 9; i /= 0x2710u ) - { - if ( i <= 0x63 ) - { - ++v2; - break; - } - if ( i <= 0x3E7 ) - { - v2 += 2; - break; - } - if ( i <= 0x270F ) - { - v2 += 3; - break; - } - v2 += 4; - } - *(_DWORD *)this = (char *)this + 8; - std::string::_M_construct(this, (a2 >> 31) + v2, 45); - v5 = (_BYTE *)(*(_DWORD *)this + ((a2 & 0x80000000) != 0)); - for ( j = &v5[v2]; ; *j = std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[v7] ) - { - j -= 2; - if ( v3 <= 0x63 ) - break; - v7 = 2 * (v3 % 0x64); - v3 /= 0x64u; - j[1] = byte_5610E1[v7]; - } - if ( v3 <= 9 ) - { - *v5 = v3 + 48; - } - else - { - v8 = 2 * v3; - v5[1] = byte_5610E1[v8]; - *v5 = std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[v8]; - } - return this; -} - -//----- (00522668) -------------------------------------------------------- -std::__cxx11 *__cdecl std::to_string(std::__cxx11 *this, unsigned int a2) -{ - size_t v2; // ecx - unsigned int v3; // ebx - unsigned int i; // eax - _BYTE *v5; // ecx - _BYTE *j; // edi - unsigned int v7; // edx - int v8; // ebx - - v2 = 1; - v3 = a2; - for ( i = a2; i > 9; i /= 0x2710u ) - { - if ( i <= 0x63 ) - { - ++v2; - break; - } - if ( i <= 0x3E7 ) - { - v2 += 2; - break; - } - if ( i <= 0x270F ) - { - v2 += 3; - break; - } - v2 += 4; - } - *(_DWORD *)this = (char *)this + 8; - std::string::_M_construct(this, v2, 0); - v5 = *(_BYTE **)this; - for ( j = (_BYTE *)(*(_DWORD *)this + *((_DWORD *)this + 1)); - ; - *j = std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[v7] ) - { - j -= 2; - if ( v3 <= 0x63 ) - break; - v7 = 2 * (v3 % 0x64); - v3 /= 0x64u; - j[1] = byte_5610E1[v7]; - } - if ( v3 <= 9 ) - { - *v5 = v3 + 48; - } - else - { - v8 = 2 * v3; - v5[1] = byte_5610E1[v8]; - *v5 = std::__detail::__to_chars_10_impl(char *,unsigned int,unsigned int)::__digits[v8]; - } - return this; -} - -//----- (00522730) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_5608DC; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52273C: variable 'Blocka' is possibly undefined - -//----- (00522750) -------------------------------------------------------- -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_5608DC; - std::locale::facet::~facet(a1); -} -// 522750: variable 'v1' is possibly undefined - -//----- (00522760) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_560908; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52276C: variable 'Blocka' is possibly undefined - -//----- (00522780) -------------------------------------------------------- -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_560908; - std::locale::facet::~facet(a1); -} -// 522780: variable 'v1' is possibly undefined - -//----- (00522790) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_560934; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52279C: variable 'Blocka' is possibly undefined - -//----- (005227B0) -------------------------------------------------------- -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_560934; - std::locale::facet::~facet(a1); -} -// 5227B0: variable 'v1' is possibly undefined - -//----- (005227C0) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_560960; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 5227CC: variable 'Blocka' is possibly undefined - -//----- (005227E0) -------------------------------------------------------- -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_560960; - std::locale::facet::~facet(a1); -} -// 5227E0: variable 'v1' is possibly undefined - -//----- (005227F0) -------------------------------------------------------- -int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_560B88; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 560B88: using guessed type int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00522820) -------------------------------------------------------- -void __thiscall std::codecvt::codecvt(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560B88; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560B88: using guessed type int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005228D0) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560B88; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_56098C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 522935: variable 'lpfctx' is possibly undefined -// 560B88: using guessed type int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (005229B0) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560B88; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_56098C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 522A15: variable 'lpfctx' is possibly undefined -// 560B88: using guessed type int (__cdecl *off_560B88)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00522A60) -------------------------------------------------------- -int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_560BB4; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 560BB4: using guessed type int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00522A90) -------------------------------------------------------- -void __thiscall std::codecvt::codecvt(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560BB4; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560BB4: using guessed type int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00522B40) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BB4; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_5609B8; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 522BA5: variable 'lpfctx' is possibly undefined -// 560BB4: using guessed type int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00522C20) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BB4; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_5609B8; - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 522C85: variable 'lpfctx' is possibly undefined -// 560BB4: using guessed type int (__cdecl *off_560BB4)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (00522CD0) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_560BE0; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (00522D00) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560BE0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (00522DA0) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_560BE0; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (00522DD0) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560BE0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (00522E70) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560BE0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 522EAE: variable 'lpfctx' is possibly undefined -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (00522ED0) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BE0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 522F0E: variable 'lpfctx' is possibly undefined -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (00522F30) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BE0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 522F6E: variable 'lpfctx' is possibly undefined -// 560BE0: using guessed type int (*off_560BE0)(); - -//----- (00522F90) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_560BFC; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (00522FC0) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560BFC; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (00523060) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_560BFC; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (00523090) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560BFC; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (00523130) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560BFC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 52316E: variable 'lpfctx' is possibly undefined -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (00523190) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BFC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5231CE: variable 'lpfctx' is possibly undefined -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (005231F0) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560BFC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 52322E: variable 'lpfctx' is possibly undefined -// 560BFC: using guessed type int (*off_560BFC)(); - -//----- (00523250) -------------------------------------------------------- -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560C18; - result = a2 != 0; - this[1] = result; - return result; -} -// 560C18: using guessed type int (*off_560C18)(); - -//----- (00523270) -------------------------------------------------------- -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560C18; - result = a2 != 0; - this[1] = result; - return result; -} -// 560C18: using guessed type int (*off_560C18)(); - -//----- (00523290) -------------------------------------------------------- -void __fastcall std::num_get>::~num_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560C18; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52329C: variable 'Blocka' is possibly undefined -// 560C18: using guessed type int (*off_560C18)(); - -//----- (005232B0) -------------------------------------------------------- -void __cdecl std::num_get>::~num_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560C18; - std::locale::facet::~facet(a1); -} -// 5232B0: variable 'v1' is possibly undefined -// 560C18: using guessed type int (*off_560C18)(); - -//----- (005232C0) -------------------------------------------------------- -void __cdecl std::num_get>::~num_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560C18; - std::locale::facet::~facet(a1); -} -// 5232C0: variable 'v1' is possibly undefined -// 560C18: using guessed type int (*off_560C18)(); - -//----- (005232D0) -------------------------------------------------------- -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560C54; - result = a2 != 0; - this[1] = result; - return result; -} -// 560C54: using guessed type int (*off_560C54)(); - -//----- (005232F0) -------------------------------------------------------- -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560C54; - result = a2 != 0; - this[1] = result; - return result; -} -// 560C54: using guessed type int (*off_560C54)(); - -//----- (00523310) -------------------------------------------------------- -void __fastcall std::num_get>::~num_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560C54; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52331C: variable 'Blocka' is possibly undefined -// 560C54: using guessed type int (*off_560C54)(); - -//----- (00523330) -------------------------------------------------------- -void __cdecl std::num_get>::~num_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560C54; - std::locale::facet::~facet(a1); -} -// 523330: variable 'v1' is possibly undefined -// 560C54: using guessed type int (*off_560C54)(); - -//----- (00523340) -------------------------------------------------------- -void __cdecl std::num_get>::~num_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560C54; - std::locale::facet::~facet(a1); -} -// 523340: variable 'v1' is possibly undefined -// 560C54: using guessed type int (*off_560C54)(); - -//----- (00523350) -------------------------------------------------------- -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560C90; - result = a2 != 0; - this[1] = result; - return result; -} -// 560C90: using guessed type int (*off_560C90)(); - -//----- (00523370) -------------------------------------------------------- -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560C90; - result = a2 != 0; - this[1] = result; - return result; -} -// 560C90: using guessed type int (*off_560C90)(); - -//----- (00523390) -------------------------------------------------------- -void __fastcall std::num_put>::~num_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560C90; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52339C: variable 'Blocka' is possibly undefined -// 560C90: using guessed type int (*off_560C90)(); - -//----- (005233B0) -------------------------------------------------------- -void __cdecl std::num_put>::~num_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560C90; - std::locale::facet::~facet(a1); -} -// 5233B0: variable 'v1' is possibly undefined -// 560C90: using guessed type int (*off_560C90)(); - -//----- (005233C0) -------------------------------------------------------- -void __cdecl std::num_put>::~num_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560C90; - std::locale::facet::~facet(a1); -} -// 5233C0: variable 'v1' is possibly undefined -// 560C90: using guessed type int (*off_560C90)(); - -//----- (005233D0) -------------------------------------------------------- -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560CC0; - result = a2 != 0; - this[1] = result; - return result; -} -// 560CC0: using guessed type int (*off_560CC0)(); - -//----- (005233F0) -------------------------------------------------------- -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560CC0; - result = a2 != 0; - this[1] = result; - return result; -} -// 560CC0: using guessed type int (*off_560CC0)(); - -//----- (00523410) -------------------------------------------------------- -void __fastcall std::num_put>::~num_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560CC0; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52341C: variable 'Blocka' is possibly undefined -// 560CC0: using guessed type int (*off_560CC0)(); - -//----- (00523430) -------------------------------------------------------- -void __cdecl std::num_put>::~num_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560CC0; - std::locale::facet::~facet(a1); -} -// 523430: variable 'v1' is possibly undefined -// 560CC0: using guessed type int (*off_560CC0)(); - -//----- (00523440) -------------------------------------------------------- -void __cdecl std::num_put>::~num_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560CC0; - std::locale::facet::~facet(a1); -} -// 523440: variable 'v1' is possibly undefined -// 560CC0: using guessed type int (*off_560CC0)(); - -//----- (00523450) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( - _DWORD *this, - _DWORD *a2) -{ - int result; // eax - _DWORD *v4; // edx - _DWORD *v5; // edi - _DWORD *v6; // ebx - char v7; // [esp+1Fh] [ebp-19h] - - result = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( - this, - (int)a2); - if ( v4 ) - { - v7 = 1; - v5 = v4; - if ( !result && v4 != this + 1 ) - v7 = std::operator<((int)a2, (int)(v4 + 4)); - v6 = operator new(0x28u); - std::string::basic_string(v6 + 4, a2); - std::_Rb_tree_insert_and_rebalance(v7, v6, v5, this + 1); - ++this[5]; - return (int)v6; - } - return result; -} -// 523469: variable 'v4' is possibly undefined - -//----- (005234E4) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 523555: conditional instruction was optimized away because zf.1==0 - -//----- (00523564) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - int result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return v6; - } - return std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (00523660) -------------------------------------------------------- -void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree( - int a1) -{ - std::_Rb_tree,std::less,std::allocator>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (00523668) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 5236D9: conditional instruction was optimized away because zf.1==0 - -//----- (005236E8) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - int result; // eax - _DWORD *v5; // edx - int *v6; // eax - int v7; // [esp+1Ch] [ebp-2Ch] - int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return (int)a2; - v5 = (_DWORD *)this[4]; - v8[0] = (int)a2; - if ( v5 == a2 ) - return 0; - v6 = std::_Rb_tree_iterator>>::operator++(v8); - if ( (unsigned __int8)std::operator<(a3, *v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return v8[0]; - } - return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v7 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v7 + 16, a3) ) - return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v7 + 12) ) - return 0; - return result; -} -// 5236E8: using guessed type int var_1C[7]; - -//----- (005237E0) -------------------------------------------------------- -void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (005237E8) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::lower_bound( - _DWORD *this, - int a2) -{ - _DWORD *v2; // esi - _DWORD *i; // ebx - char v4; // al - _DWORD *v5; // edx - - v2 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v4 = std::operator<((int)(i + 4), a2); - v5 = (_DWORD *)i[3]; - if ( !v4 ) - v5 = (_DWORD *)i[2]; - if ( !v4 ) - v2 = i; - } - return v2; -} - -//----- (00523828) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node( - _DWORD *this, - int a2, - _DWORD *a3, - _DWORD *a4) -{ - char v4; // al - _DWORD *v6; // ebx - _DWORD *result; // eax - - v4 = 1; - v6 = this + 1; - if ( !a2 && a3 != v6 ) - v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); - std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); - result = a4; - ++this[5]; - return result; -} - -//----- (00523884) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 5238F5: conditional instruction was optimized away because zf.1==0 - -//----- (00523904) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - int result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return v6; - } - return std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (00523A00) -------------------------------------------------------- -char *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( - _DWORD *this, - int a2) -{ - int v2; // edx - char v3; // al - struct _Unwind_Exception *v4; // edx - int v5; // eax - char v6; // al - struct _Unwind_Exception *v8; // [esp+14h] [ebp-54h] - void **v10; // [esp+1Ch] [ebp-4Ch] - char *Block; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *v12; // [esp+24h] [ebp-44h] - int v13; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] - - Block = (char *)operator new(0x30u); // 0x30的空间 - v10 = (void **)(Block + 16); // Block.offset_64 - std::string::basic_string(Block + 16, a2); - v2 = *(_DWORD *)(a2 + 28); - *((_DWORD *)Block + 10) = *(_DWORD *)(a2 + 24); - *((_DWORD *)Block + 11) = v2; - v12 = (struct _Unwind_Exception *)this[2]; - v8 = (struct _Unwind_Exception *)(this + 1); - lpuexcpt = (struct _Unwind_Exception *)(this + 1); - v3 = 1; - while ( v12 ) - { - v3 = std::operator<((int)v10, (int)v12 + 16); - v4 = (struct _Unwind_Exception *)*((_DWORD *)v12 + 3); - if ( v3 ) - v4 = (struct _Unwind_Exception *)*((_DWORD *)v12 + 2); - lpuexcpt = v12; - v12 = v4; - } - if ( v3 ) - { - if ( (struct _Unwind_Exception *)this[3] == lpuexcpt ) - goto LABEL_12; - v5 = std::_Rb_tree_decrement(lpuexcpt); - } - else - { - v5 = (int)lpuexcpt; - } - v13 = v5; - if ( !(unsigned __int8)std::operator<(v5 + 16, (int)v10) ) - { - std::string::_M_dispose(v10); - operator delete(Block); - return (char *)v13; - } -LABEL_12: - v6 = 1; - if ( v8 != lpuexcpt ) - v6 = std::operator<((int)v10, (int)lpuexcpt + 16); - std::_Rb_tree_insert_and_rebalance(v6, Block, lpuexcpt, v8); - ++this[5]; - return Block; -} - -//----- (00523BD0) -------------------------------------------------------- -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (00523BD8) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::equal_range( - _DWORD *this, - int a2) -{ - _DWORD *v2; // ebx - int i; // esi - int v4; // edi - char v5; // al - int j; // ecx - bool v7; // zf - int v8; // eax - int v10; // [esp+1Ch] [ebp-1Ch] - - v2 = this + 1; - for ( i = this[2]; ; i = v4 ) - { - if ( !i ) - return (int)v2; - if ( (unsigned __int8)std::operator<(i + 16, a2) ) - { - v4 = *(_DWORD *)(i + 12); - i = (int)v2; - goto LABEL_5; - } - v5 = std::operator<(a2, i + 16); - v4 = *(_DWORD *)(i + 8); - if ( !v5 ) - break; -LABEL_5: - v2 = (_DWORD *)i; - } - for ( j = *(_DWORD *)(i + 12); j; j = v8 ) - { - v10 = j; - v7 = (unsigned __int8)std::operator<(a2, j + 16) == 0; - v8 = *(_DWORD *)(v10 + 8); - if ( v7 ) - v8 = *(_DWORD *)(v10 + 12); - } - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( - v4, - i, - a2); -} - -//----- (00523C70) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - _DWORD *this, - int a2, - _DWORD *a3, - _DWORD *a4) -{ - char v4; // al - _DWORD *v6; // ebx - _DWORD *result; // eax - - v4 = 1; - v6 = this + 1; - if ( !a2 && a3 != v6 ) - v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); - std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); - result = a4; - ++this[5]; - return result; -} - -//----- (00523CCC) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( - _DWORD *this, - char **a2) -{ - _DWORD *v2; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] - void **Block; // [esp+18h] [ebp-40h] - - Block = (void **)operator new(0x98u); - std::string::basic_string(Block + 4, *a2); - WXML::DOMLib::Token::Token(Block + 10, (int)(a2 + 1)); - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - (int)(Block + 4)); - if ( v2 ) - return (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - this, - (int)lpuexcpt, - v2, - Block); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node(Block); - return lpuexcpt; -} -// 523D58: variable 'v2' is possibly undefined - -//----- (00523E00) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 523E71: conditional instruction was optimized away because zf.1==0 - -//----- (00523E80) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - int result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return v6; - } - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (00523F7C) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - _DWORD *this, - int a2) -{ - _DWORD *v2; // esi - _DWORD *v3; // ebx - _DWORD *i; // edi - char v5; // al - _DWORD *v6; // edx - - v2 = this + 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v5 = std::operator<((int)(i + 4), a2); - v6 = (_DWORD *)i[3]; - if ( !v5 ) - v6 = (_DWORD *)i[2]; - if ( !v5 ) - v3 = i; - } - if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) - return v2; - return v3; -} - -//----- (00523FDC) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::lower_bound( - _DWORD *this, - int a2) -{ - _DWORD *v2; // esi - _DWORD *i; // ebx - char v4; // al - _DWORD *v5; // edx - - v2 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v4 = std::operator<((int)(i + 4), a2); - v5 = (_DWORD *)i[3]; - if ( !v4 ) - v5 = (_DWORD *)i[2]; - if ( !v4 ) - v2 = i; - } - return v2; -} - -//----- (0052401C) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - _DWORD *this, - int a2, - _DWORD *a3, - _DWORD *a4) -{ - char v4; // al - _DWORD *v6; // ebx - _DWORD *result; // eax - - v4 = 1; - v6 = this + 1; - if ( !a2 && a3 != v6 ) - v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); - std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); - result = a4; - ++this[5]; - return result; -} - -//----- (00524078) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 5240E9: conditional instruction was optimized away because zf.1==0 - -//----- (005240F8) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - int result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return v6; - } - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (005241F4) -------------------------------------------------------- -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (005241FC) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 52426D: conditional instruction was optimized away because zf.1==0 - -//----- (0052427C) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - int result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return v6; - } - return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (00524378) -------------------------------------------------------- -void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (00524380) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::lower_bound( - _DWORD *this, - int a2) -{ - _DWORD *v2; // esi - _DWORD *i; // ebx - char v4; // al - _DWORD *v5; // edx - - v2 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v4 = std::operator<((int)(i + 4), a2); - v5 = (_DWORD *)i[3]; - if ( !v4 ) - v5 = (_DWORD *)i[2]; - if ( !v4 ) - v2 = i; - } - return v2; -} - -//----- (005243C0) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( - _DWORD *this, - int a2, - _DWORD *a3, - _DWORD *a4) -{ - char v4; // al - _DWORD *v6; // ebx - _DWORD *result; // eax - - v4 = 1; - v6 = this + 1; - if ( !a2 && a3 != v6 ) - v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); - std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); - result = a4; - ++this[5]; - return result; -} - -//----- (0052441C) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 52448D: conditional instruction was optimized away because zf.1==0 - -//----- (0052449C) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - int result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return v6; - } - return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (00524598) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree( - _DWORD *this, - int a2) -{ - int result; // eax - int v4; // edx - int v5; // ecx - int v6; // edx - int v7; // ecx - int v8; // edx - - this[2] = 0; - result = *(_DWORD *)(a2 + 8); - this[1] = 0; - this[3] = this + 1; - this[4] = this + 1; - this[5] = 0; - if ( result ) - { - result = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( - result, - (int)(this + 1)); - v4 = result; - do - { - v5 = v4; - v4 = *(_DWORD *)(v4 + 8); - } - while ( v4 ); - this[3] = v5; - v6 = result; - do - { - v7 = v6; - v6 = *(_DWORD *)(v6 + 12); - } - while ( v6 ); - v8 = *(_DWORD *)(a2 + 20); - this[4] = v7; - this[2] = result; - this[5] = v8; - } - return result; -} - -//----- (005245F8) -------------------------------------------------------- -void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (00524600) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - _DWORD *this, - int a2, - _DWORD *a3, - _DWORD *a4) -{ - char v4; // al - _DWORD *v6; // ebx - _DWORD *result; // eax - - v4 = 1; - v6 = this + 1; - if ( !a2 && a3 != v6 ) - v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); - std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); - result = a4; - ++this[5]; - return result; -} - -//----- (0052465C) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 5246CD: conditional instruction was optimized away because zf.1==0 - -//----- (005246DC) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - int result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return v6; - } - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (005247D8) -------------------------------------------------------- -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (005247E0) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 524851: conditional instruction was optimized away because zf.1==0 - -//----- (00524860) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - int result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return v6; - } - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (0052495C) -------------------------------------------------------- -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (00524964) -------------------------------------------------------- -int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( - _DWORD *this, - _DWORD *a2) -{ - bool v2; // dl - _DWORD *v3; // ebx - _DWORD *i; // eax - _DWORD *v5; // edi - int result; // eax - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v5 = (_DWORD *)i[3]; - if ( i[4] > *a2 ) - v5 = (_DWORD *)i[2]; - v2 = i[4] > *a2; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - result = std::_Rb_tree_decrement(v3); - } - else - { - result = (int)v3; - } - if ( *(_DWORD *)(result + 16) < *a2 ) - return 0; - return result; -} - -//----- (005249C4) -------------------------------------------------------- -int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int *a3) -{ - int v3; // edi - int result; // eax - int v5; // eax - int v6; // edx - _DWORD *v7; // [esp+1Ch] [ebp-1Ch] - _DWORD *v8; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && *a3 > *(_DWORD *)(this[4] + 16) ) - return 0; - return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( - this, - a3); - } - v3 = *a3; - if ( a2[4] <= *a3 ) - { - if ( a2[4] >= *a3 ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v8 = this; - result = std::_Rb_tree_increment((int)a2); - this = v8; - if ( v3 < *(_DWORD *)(result + 16) ) - { - if ( !a2[3] ) - return 0; - return result; - } - return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v7 = this; - v5 = std::_Rb_tree_decrement(a2); - this = v7; - v6 = v5; - if ( *(_DWORD *)(v5 + 16) >= v3 ) - return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v6 + 12) ) - return 0; - return result; -} - -//----- (00524A64) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - _DWORD *this, - unsigned int *a2) -{ - bool v2; // dl - _DWORD *v3; // ebx - _DWORD *i; // eax - unsigned int v5; // ebx - _DWORD *v6; // edi - bool v7; // cc - int result; // eax - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v5 = i[4]; - v6 = (_DWORD *)i[3]; - v2 = *a2 < v5; - v7 = v5 <= *a2; - v3 = i; - if ( !v7 ) - v6 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - result = std::_Rb_tree_decrement(v3); - } - else - { - result = (int)v3; - } - if ( *(_DWORD *)(result + 16) < *a2 ) - return 0; - return result; -} - -//----- (00524AC8) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - unsigned int *a3) -{ - unsigned int v3; // edi - int result; // eax - int v5; // eax - int v6; // edx - _DWORD *v7; // [esp+1Ch] [ebp-1Ch] - _DWORD *v8; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && *a3 > *(_DWORD *)(this[4] + 16) ) - return 0; - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - v3 = *a3; - if ( a2[4] <= *a3 ) - { - if ( a2[4] >= *a3 ) - return (int)a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v8 = this; - result = std::_Rb_tree_increment((int)a2); - this = v8; - if ( v3 < *(_DWORD *)(result + 16) ) - { - if ( !a2[3] ) - return 0; - return result; - } - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - result = this[3]; - if ( (_DWORD *)result == a2 ) - return result; - v7 = this; - v5 = std::_Rb_tree_decrement(a2); - this = v7; - v6 = v5; - if ( *(_DWORD *)(v5 + 16) >= v3 ) - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - result = (int)a2; - if ( !*(_DWORD *)(v6 + 12) ) - return 0; - return result; -} - -//----- (00524B68) -------------------------------------------------------- -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (00524B70) -------------------------------------------------------- -void __fastcall std::bad_cast::~bad_cast(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_560CF0; - std::exception::~exception(Block); - operator delete(a1); -} -// 524B7C: variable 'Block' is possibly undefined -// 560CF0: using guessed type void (__cdecl *off_560CF0)(std::bad_cast *__hidden this); - -//----- (00524BA0) -------------------------------------------------------- -void __cdecl std::bad_cast::~bad_cast(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560CF0; - std::exception::~exception(a1); -} -// 524BA0: variable 'v1' is possibly undefined -// 560CF0: using guessed type void (__cdecl *off_560CF0)(std::bad_cast *__hidden this); - -//----- (00524BB0) -------------------------------------------------------- -int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, int this, char a3, bool a4) -{ - char *v4; // eax - _DWORD *v5; // eax - int v6; // edx - int v7; // esi - int *v8; // ebx - int *v9; // eax - int v10; // edi - int v11; // ebp - char *v12; // edx - int v13; // eax - int *v17; // [esp+1Ch] [ebp-60h] - int v18; // [esp+20h] [ebp-5Ch] - int v19; // [esp+24h] [ebp-58h] - int v20; // [esp+28h] [ebp-54h] - - if ( (unsigned int)this > 0x7FFFFFFE ) - { - v12 = "ios_base::_M_grow_words is not valid"; - } - else - { - v17 = a1 + 9; - if ( this <= 7 ) - { - v18 = 8; -LABEL_21: - a1[26] = v17; - a1[25] = v18; - return &v17[2 * this]; - } - v4 = (char *)(this + 1); - v18 = this + 1; - if ( this + 1 > 0xFFFFFFF ) - __cxa_throw_bad_array_new_length(); - v20 = 8 * (_DWORD)v4; - v19 = operator new[](8 * (_DWORD)v4); - if ( v19 ) - { - v5 = (_DWORD *)v19; - v6 = v19; - do - { - *v5 = 0; - v5 += 2; - *(v5 - 1) = 0; - } - while ( (_DWORD *)(v19 + v20) != v5 ); - v7 = a1[25]; - v8 = (int *)a1[26]; - v9 = v8; - if ( v7 > 0 ) - { - do - { - v10 = *v9; - v11 = v9[1]; - v9 += 2; - v6 += 8; - *(_DWORD *)(v6 - 8) = v10; - *(_DWORD *)(v6 - 4) = v11; - } - while ( &v8[2 * v7] != v9 ); - } - if ( v17 != v8 && v8 ) - operator delete[](v8); - v17 = (int *)v19; - goto LABEL_21; - } - v12 = "ios_base::_M_grow_words allocation failed"; - } - v13 = a1[5] | 1; - a1[5] = v13; - if ( (a1[4] & v13) != 0 ) - std::__throw_ios_failure(v12); - if ( a3 ) - a1[8] = 0; - else - a1[7] = 0; - return a1 + 7; -} - -//----- (00524DB0) -------------------------------------------------------- -int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this) -{ - FILE *v3; // eax - FILE *v4; // eax - FILE *v5; // eax - FILE *v6; // eax - FILE *v7; // eax - FILE *v8; // eax - FILE *(__cdecl *v9)(unsigned int); // [esp+14h] [ebp-54h] - unsigned __int8 lpuexcpt; // [esp+18h] [ebp-50h] - - lpuexcpt = std::ios_base::Init::_S_synced_with_stdio; - if ( (_BYTE)this != 1 && std::ios_base::Init::_S_synced_with_stdio ) - { - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 1u) ) - goto LABEL_6; - } - else if ( std::ios_base::Init::_S_refcount++ ) - { -LABEL_6: - std::ios_base::Init::_S_synced_with_stdio = 0; - __gnu_internal::buf_cout_sync = &off_560424; - std::locale::~locale((_DWORD **)&dword_53F17C); - __gnu_internal::buf_cin_sync = &off_560424; - std::locale::~locale((_DWORD **)&dword_53F0FC); - __gnu_internal::buf_cerr_sync = &off_560424; - std::locale::~locale((_DWORD **)&dword_53F13C); - __gnu_internal::buf_wcout_sync = &off_560464; - std::locale::~locale((_DWORD **)&dword_53F23C); - __gnu_internal::buf_wcin_sync = &off_560464; - std::locale::~locale((_DWORD **)&dword_53F1BC); - __gnu_internal::buf_wcerr_sync = &off_560464; - std::locale::~locale((_DWORD **)&dword_53F1FC); - v9 = ___acrt_iob_func; - v3 = ___acrt_iob_func(1u); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cout, v3, 16, 512); - v4 = v9(0); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cin, v4, 8, 512); - v5 = v9(2u); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cerr, v5, 16, 512); - std::ios::rdbuf(dword_53F9A4, (int)__gnu_internal::buf_cout); - std::ios::rdbuf(dword_53F7C8, (int)__gnu_internal::buf_cin); - std::ios::rdbuf(&dword_53F864, (int)__gnu_internal::buf_cerr); - std::ios::rdbuf(dword_53F904, (int)__gnu_internal::buf_cerr); - v6 = v9(1u); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcout, v6, 16, 512); - v7 = v9(0); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcin, v7, 8, 512); - v8 = v9(2u); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcerr, v8, 16, 512); - std::wios::rdbuf(dword_53FC24, (int)__gnu_internal::buf_wcout); - std::wios::rdbuf(dword_53FA48, (int)__gnu_internal::buf_wcin); - std::wios::rdbuf(&dword_53FAE4, (int)__gnu_internal::buf_wcerr); - std::wios::rdbuf(dword_53FB84, (int)__gnu_internal::buf_wcerr); - std::ios_base::Init::~Init(); - return lpuexcpt; - } - std::ios_base::Init::Init(); - goto LABEL_6; - } - return lpuexcpt; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F0FC: using guessed type _DWORD dword_53F0FC; -// 53F13C: using guessed type _DWORD dword_53F13C; -// 53F17C: using guessed type _DWORD dword_53F17C; -// 53F1BC: using guessed type _DWORD dword_53F1BC; -// 53F1FC: using guessed type _DWORD dword_53F1FC; -// 53F23C: using guessed type _DWORD dword_53F23C; -// 53F778: using guessed type int std::ios_base::Init::_S_refcount; -// 53F77C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; -// 53F7C8: using guessed type int dword_53F7C8[28]; -// 53F864: using guessed type int dword_53F864; -// 53F904: using guessed type int dword_53F904[28]; -// 53F9A4: using guessed type int dword_53F9A4[28]; -// 53FA48: using guessed type int dword_53FA48[28]; -// 53FAE4: using guessed type int dword_53FAE4; -// 53FB84: using guessed type int dword_53FB84[28]; -// 53FC24: using guessed type int dword_53FC24[28]; -// 560424: using guessed type int (*off_560424)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (005250D0) -------------------------------------------------------- -void __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2) -{ - int **i; // [esp+14h] [ebp-58h] - - for ( i = (int **)this[6]; i; i = (int **)*i ) - ((void (__cdecl *)(int, _DWORD *, int *))i[1])(a2, this, i[2]); -} - -//----- (005251C0) -------------------------------------------------------- -_DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3) -{ - _DWORD *result; // eax - int v5; // edx - - result = operator new(0x10u); - v5 = this[6]; - result[3] = 0; - *result = v5; - this[6] = result; - result[1] = a2; - result[2] = a3; - return result; -} - -//----- (00525200) -------------------------------------------------------- -void __fastcall std::ios_base::_M_dispose_callbacks(int a1) -{ - volatile signed __int32 *Block; // eax - int v3; // edx - volatile signed __int32 *v4; // esi - - Block = *(volatile signed __int32 **)(a1 + 24); - if ( Block ) - { - while ( 1 ) - { - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(Block + 3, 0xFFFFFFFF) ) - break; - } - else - { - v3 = *((_DWORD *)Block + 3); - *((_DWORD *)Block + 3) = v3 - 1; - if ( v3 ) - break; - } - v4 = (volatile signed __int32 *)*Block; - operator delete((void *)Block); - if ( !v4 ) - break; - Block = v4; - } - } - *(_DWORD *)(a1 + 24) = 0; -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00525260) -------------------------------------------------------- -void std::ios_base::Init::Init() -{ - if ( !_CRT_MT ) - { - if ( std::ios_base::Init::_S_refcount++ ) - return; -LABEL_5: - std::ios_base::Init::Init(); - return; - } - if ( !_InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 1u) ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F778: using guessed type int std::ios_base::Init::_S_refcount; - -//----- (005252A0) -------------------------------------------------------- -void std::ios_base::Init::Init() -{ - FILE *v0; // eax - int v1; // eax - int v2; // eax - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // [esp+14h] [ebp-44h] - int v7; // [esp+14h] [ebp-44h] - int v8; // [esp+14h] [ebp-44h] - int v9; // [esp+14h] [ebp-44h] - int v10; // [esp+14h] [ebp-44h] - FILE *(__cdecl *lpuexcpt)(unsigned int); // [esp+18h] [ebp-40h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-40h] - - std::ios_base::Init::_S_synced_with_stdio = 1; - lpuexcpt = ___acrt_iob_func; - v0 = ___acrt_iob_func(1u); - __gnu_internal::buf_cout_sync = &off_560424; - v6 = (int)v0; - dword_53F164 = 0; - dword_53F168 = 0; - dword_53F16C = 0; - dword_53F170 = 0; - dword_53F174 = 0; - dword_53F178 = 0; - std::locale::locale(&dword_53F17C); - __gnu_internal::buf_cout_sync = &off_55F2B4; - dword_53F180 = v6; - dword_53F184 = -1; - v1 = (int)lpuexcpt(0); - __gnu_internal::buf_cin_sync = &off_560424; - v7 = v1; - dword_53F0E4 = 0; - dword_53F0E8 = 0; - dword_53F0EC = 0; - dword_53F0F0 = 0; - dword_53F0F4 = 0; - dword_53F0F8 = 0; - std::locale::locale(&dword_53F0FC); - __gnu_internal::buf_cin_sync = &off_55F2B4; - dword_53F100 = v7; - dword_53F104 = -1; - v2 = (int)lpuexcpt(2u); - __gnu_internal::buf_cerr_sync = &off_560424; - v8 = v2; - dword_53F124 = 0; - dword_53F128 = 0; - dword_53F12C = 0; - dword_53F130 = 0; - dword_53F134 = 0; - dword_53F138 = 0; - std::locale::locale(&dword_53F13C); - __gnu_internal::buf_cerr_sync = &off_55F2B4; - dword_53F144 = -1; - dword_53F140 = v8; - std::ios_base::ios_base(dword_53F9A4); - dword_53FA14 = 0; - word_53FA18 = 0; - dword_53FA1C = 0; - dword_53FA20 = 0; - dword_53FA24 = 0; - dword_53FA28 = 0; - std::cout = (int)&off_55FE68; - dword_53F9A4[0] = (int)off_55FE7C; - std::ios::init((int)dword_53F9A4, (int)&__gnu_internal::buf_cout_sync); - std::ios_base::ios_base(dword_53F7C8); - dword_53F838 = 0; - word_53F83C = 0; - dword_53F840 = 0; - dword_53F844 = 0; - dword_53F848 = 0; - dword_53F84C = 0; - std::cin = (int)&off_55FE40; - dword_53F7C8[0] = (int)off_55FE54; - dword_53F7C4 = 0; - std::ios::init((int)dword_53F7C8, (int)&__gnu_internal::buf_cin_sync); - std::ios_base::ios_base(&dword_53F864); - word_53F8D8 = 0; - dword_53F8D4 = 0; - dword_53F8DC = 0; - dword_53F8E0 = 0; - dword_53F8E4 = 0; - dword_53F8E8 = 0; - std::cerr = (int)&off_55FE68; - dword_53F864 = (int)off_55FE7C; - std::ios::init((int)&dword_53F864, (int)&__gnu_internal::buf_cerr_sync); - std::ios_base::ios_base(dword_53F904); - dword_53F974 = 0; - word_53F978 = 0; - dword_53F97C = 0; - dword_53F980 = 0; - dword_53F984 = 0; - dword_53F988 = 0; - std::clog = (int)&off_55FE68; - dword_53F904[0] = (int)off_55FE7C; - std::ios::init((int)dword_53F904, (int)&__gnu_internal::buf_cerr_sync); - dword_53F870 |= 0x2000u; - dword_53F838 = (int)&std::cout; - dword_53F8D4 = (int)&std::cout; - v3 = (int)lpuexcpt(1u); - __gnu_internal::buf_wcout_sync = &off_560464; - v9 = v3; - dword_53F224 = 0; - dword_53F228 = 0; - dword_53F22C = 0; - dword_53F230 = 0; - dword_53F234 = 0; - dword_53F238 = 0; - std::locale::locale(&dword_53F23C); - __gnu_internal::buf_wcout_sync = &off_55F2F4; - word_53F244 = -1; - dword_53F240 = v9; - v4 = (int)lpuexcpt(0); - __gnu_internal::buf_wcin_sync = &off_560464; - v10 = v4; - dword_53F1A4 = 0; - dword_53F1A8 = 0; - dword_53F1AC = 0; - dword_53F1B0 = 0; - dword_53F1B4 = 0; - dword_53F1B8 = 0; - std::locale::locale(&dword_53F1BC); - __gnu_internal::buf_wcin_sync = &off_55F2F4; - word_53F1C4 = -1; - dword_53F1C0 = v10; - v5 = (int)lpuexcpt(2u); - __gnu_internal::buf_wcerr_sync = &off_560464; - lpuexcpta = (struct _Unwind_Exception *)v5; - dword_53F1E4 = 0; - dword_53F1E8 = 0; - dword_53F1EC = 0; - dword_53F1F0 = 0; - dword_53F1F4 = 0; - dword_53F1F8 = 0; - std::locale::locale(&dword_53F1FC); - __gnu_internal::buf_wcerr_sync = &off_55F2F4; - dword_53F200 = (int)lpuexcpta; - word_53F204 = -1; - std::ios_base::ios_base(dword_53FC24); - dword_53FC94 = 0; - word_53FC98 = 0; - byte_53FC9A = 0; - dword_53FC9C = 0; - dword_53FCA0 = 0; - dword_53FCA4 = 0; - dword_53FCA8 = 0; - std::wcout = (int)&off_5601C4; - dword_53FC24[0] = (int)off_5601D8; - std::wios::init((int)dword_53FC24, (int)&__gnu_internal::buf_wcout_sync); - std::ios_base::ios_base(dword_53FA48); - dword_53FAB8 = 0; - word_53FABC = 0; - byte_53FABE = 0; - dword_53FAC0 = 0; - dword_53FAC4 = 0; - dword_53FAC8 = 0; - dword_53FACC = 0; - std::wcin = (int)&off_56019C; - dword_53FA48[0] = (int)off_5601B0; - dword_53FA44 = 0; - std::wios::init((int)dword_53FA48, (int)&__gnu_internal::buf_wcin_sync); - std::ios_base::ios_base(&dword_53FAE4); - word_53FB58 = 0; - dword_53FB54 = 0; - byte_53FB5A = 0; - dword_53FB5C = 0; - dword_53FB60 = 0; - dword_53FB64 = 0; - dword_53FB68 = 0; - std::wcerr = (int)&off_5601C4; - dword_53FAE4 = (int)off_5601D8; - std::wios::init((int)&dword_53FAE4, (int)&__gnu_internal::buf_wcerr_sync); - std::ios_base::ios_base(dword_53FB84); - dword_53FBF4 = 0; - word_53FBF8 = 0; - byte_53FBFA = 0; - dword_53FBFC = 0; - dword_53FC00 = 0; - dword_53FC04 = 0; - dword_53FC08 = 0; - std::wclog = (int)&off_5601C4; - dword_53FB84[0] = (int)off_5601D8; - std::wios::init((int)dword_53FB84, (int)&__gnu_internal::buf_wcerr_sync); - dword_53FAF0 |= 0x2000u; - dword_53FAB8 = (int)&std::wcout; - dword_53FB54 = (int)&std::wcout; - if ( _CRT_MT ) - _InterlockedAdd(&std::ios_base::Init::_S_refcount, 1u); - else - ++std::ios_base::Init::_S_refcount; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F0E4: using guessed type int dword_53F0E4; -// 53F0E8: using guessed type int dword_53F0E8; -// 53F0EC: using guessed type int dword_53F0EC; -// 53F0F0: using guessed type int dword_53F0F0; -// 53F0F4: using guessed type int dword_53F0F4; -// 53F0F8: using guessed type int dword_53F0F8; -// 53F0FC: using guessed type _DWORD dword_53F0FC; -// 53F100: using guessed type int dword_53F100; -// 53F104: using guessed type int dword_53F104; -// 53F124: using guessed type int dword_53F124; -// 53F128: using guessed type int dword_53F128; -// 53F12C: using guessed type int dword_53F12C; -// 53F130: using guessed type int dword_53F130; -// 53F134: using guessed type int dword_53F134; -// 53F138: using guessed type int dword_53F138; -// 53F13C: using guessed type _DWORD dword_53F13C; -// 53F140: using guessed type int dword_53F140; -// 53F144: using guessed type int dword_53F144; -// 53F164: using guessed type int dword_53F164; -// 53F168: using guessed type int dword_53F168; -// 53F16C: using guessed type int dword_53F16C; -// 53F170: using guessed type int dword_53F170; -// 53F174: using guessed type int dword_53F174; -// 53F178: using guessed type int dword_53F178; -// 53F17C: using guessed type _DWORD dword_53F17C; -// 53F180: using guessed type int dword_53F180; -// 53F184: using guessed type int dword_53F184; -// 53F1A4: using guessed type int dword_53F1A4; -// 53F1A8: using guessed type int dword_53F1A8; -// 53F1AC: using guessed type int dword_53F1AC; -// 53F1B0: using guessed type int dword_53F1B0; -// 53F1B4: using guessed type int dword_53F1B4; -// 53F1B8: using guessed type int dword_53F1B8; -// 53F1BC: using guessed type _DWORD dword_53F1BC; -// 53F1C0: using guessed type int dword_53F1C0; -// 53F1C4: using guessed type __int16 word_53F1C4; -// 53F1E4: using guessed type int dword_53F1E4; -// 53F1E8: using guessed type int dword_53F1E8; -// 53F1EC: using guessed type int dword_53F1EC; -// 53F1F0: using guessed type int dword_53F1F0; -// 53F1F4: using guessed type int dword_53F1F4; -// 53F1F8: using guessed type int dword_53F1F8; -// 53F1FC: using guessed type _DWORD dword_53F1FC; -// 53F200: using guessed type int dword_53F200; -// 53F204: using guessed type __int16 word_53F204; -// 53F224: using guessed type int dword_53F224; -// 53F228: using guessed type int dword_53F228; -// 53F22C: using guessed type int dword_53F22C; -// 53F230: using guessed type int dword_53F230; -// 53F234: using guessed type int dword_53F234; -// 53F238: using guessed type int dword_53F238; -// 53F23C: using guessed type _DWORD dword_53F23C; -// 53F240: using guessed type int dword_53F240; -// 53F244: using guessed type __int16 word_53F244; -// 53F778: using guessed type int std::ios_base::Init::_S_refcount; -// 53F77C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; -// 53F7C0: using guessed type int std::cin; -// 53F7C4: using guessed type int dword_53F7C4; -// 53F7C8: using guessed type int dword_53F7C8[28]; -// 53F838: using guessed type int dword_53F838; -// 53F83C: using guessed type __int16 word_53F83C; -// 53F840: using guessed type int dword_53F840; -// 53F844: using guessed type int dword_53F844; -// 53F848: using guessed type int dword_53F848; -// 53F84C: using guessed type int dword_53F84C; -// 53F860: using guessed type int std::cerr; -// 53F864: using guessed type int dword_53F864; -// 53F870: using guessed type int dword_53F870; -// 53F8D4: using guessed type int dword_53F8D4; -// 53F8D8: using guessed type __int16 word_53F8D8; -// 53F8DC: using guessed type int dword_53F8DC; -// 53F8E0: using guessed type int dword_53F8E0; -// 53F8E4: using guessed type int dword_53F8E4; -// 53F8E8: using guessed type int dword_53F8E8; -// 53F900: using guessed type int std::clog; -// 53F904: using guessed type int dword_53F904[28]; -// 53F974: using guessed type int dword_53F974; -// 53F978: using guessed type __int16 word_53F978; -// 53F97C: using guessed type int dword_53F97C; -// 53F980: using guessed type int dword_53F980; -// 53F984: using guessed type int dword_53F984; -// 53F988: using guessed type int dword_53F988; -// 53F9A0: using guessed type int std::cout; -// 53F9A4: using guessed type int dword_53F9A4[28]; -// 53FA14: using guessed type int dword_53FA14; -// 53FA18: using guessed type __int16 word_53FA18; -// 53FA1C: using guessed type int dword_53FA1C; -// 53FA20: using guessed type int dword_53FA20; -// 53FA24: using guessed type int dword_53FA24; -// 53FA28: using guessed type int dword_53FA28; -// 53FA40: using guessed type int std::wcin; -// 53FA44: using guessed type int dword_53FA44; -// 53FA48: using guessed type int dword_53FA48[28]; -// 53FAB8: using guessed type int dword_53FAB8; -// 53FABC: using guessed type __int16 word_53FABC; -// 53FABE: using guessed type char byte_53FABE; -// 53FAC0: using guessed type int dword_53FAC0; -// 53FAC4: using guessed type int dword_53FAC4; -// 53FAC8: using guessed type int dword_53FAC8; -// 53FACC: using guessed type int dword_53FACC; -// 53FAE0: using guessed type int std::wcerr; -// 53FAE4: using guessed type int dword_53FAE4; -// 53FAF0: using guessed type int dword_53FAF0; -// 53FB54: using guessed type int dword_53FB54; -// 53FB58: using guessed type __int16 word_53FB58; -// 53FB5A: using guessed type char byte_53FB5A; -// 53FB5C: using guessed type int dword_53FB5C; -// 53FB60: using guessed type int dword_53FB60; -// 53FB64: using guessed type int dword_53FB64; -// 53FB68: using guessed type int dword_53FB68; -// 53FB80: using guessed type int std::wclog; -// 53FB84: using guessed type int dword_53FB84[28]; -// 53FBF4: using guessed type int dword_53FBF4; -// 53FBF8: using guessed type __int16 word_53FBF8; -// 53FBFA: using guessed type char byte_53FBFA; -// 53FBFC: using guessed type int dword_53FBFC; -// 53FC00: using guessed type int dword_53FC00; -// 53FC04: using guessed type int dword_53FC04; -// 53FC08: using guessed type int dword_53FC08; -// 53FC20: using guessed type int std::wcout; -// 53FC24: using guessed type int dword_53FC24[28]; -// 53FC94: using guessed type int dword_53FC94; -// 53FC98: using guessed type __int16 word_53FC98; -// 53FC9A: using guessed type char byte_53FC9A; -// 53FC9C: using guessed type int dword_53FC9C; -// 53FCA0: using guessed type int dword_53FCA0; -// 53FCA4: using guessed type int dword_53FCA4; -// 53FCA8: using guessed type int dword_53FCA8; -// 55F2B4: using guessed type int (*off_55F2B4)(); -// 55F2F4: using guessed type int (*off_55F2F4)(); -// 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); -// 55FE54: using guessed type void (__cdecl *off_55FE54[2])(std::istream *__hidden this); -// 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); -// 55FE7C: using guessed type void (__cdecl *off_55FE7C[2])(std::ostream *__hidden this); -// 56019C: using guessed type int (*off_56019C)(); -// 5601B0: using guessed type int (*off_5601B0[2])(); -// 5601C4: using guessed type int (*off_5601C4)(); -// 5601D8: using guessed type int (*off_5601D8[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560464: using guessed type int (*off_560464)(); - -//----- (00525B90) -------------------------------------------------------- -void __cdecl std::ios_base::Init::~Init() -{ - int v0; // eax - - if ( !_CRT_MT ) - { - v0 = std::ios_base::Init::_S_refcount--; - if ( v0 != 2 ) - return; -LABEL_5: - std::ostream::flush(&std::cout); - std::ostream::flush(&std::cerr); - std::ostream::flush(&std::clog); - std::wostream::flush(&std::wcout); - std::wostream::flush(&std::wcerr); - std::wostream::flush(&std::wclog); - return; - } - if ( _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 0xFFFFFFFF) == 2 ) - goto LABEL_5; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F778: using guessed type int std::ios_base::Init::_S_refcount; -// 53F860: using guessed type int std::cerr; -// 53F900: using guessed type int std::clog; -// 53F9A0: using guessed type int std::cout; -// 53FAE0: using guessed type int std::wcerr; -// 53FB80: using guessed type int std::wclog; -// 53FC20: using guessed type int std::wcout; - -//----- (00525C70) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::ios_base::imbue( - volatile signed __int32 **ecx0, - volatile signed __int32 **this, - volatile signed __int32 **a3) -{ - const std::locale *v5; // [esp+4h] [ebp-18h] - - std::locale::locale(ecx0, this + 27, v5); - std::locale::operator=(this + 27, a3); - std::ios_base::_M_call_callbacks(this, 1); - return ecx0; -} -// 525C82: variable 'v5' is possibly undefined - -//----- (00525CC0) -------------------------------------------------------- -int std::ios_base::xalloc() -{ - int result; // eax - - if ( _CRT_MT ) - return _InterlockedExchangeAdd(&std::ios_base::xalloc(void)::_S_top, 1u) + 4; - result = std::ios_base::xalloc(void)::_S_top + 4; - ++std::ios_base::xalloc(void)::_S_top; - return result; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53FCFC: using guessed type int std::ios_base::xalloc(void)::_S_top; - -//----- (00525D00) -------------------------------------------------------- -void __fastcall std::ios_base::_M_init(int a1) -{ - _DWORD *v2[4]; // [esp+1Ch] [ebp-10h] BYREF - - *(_DWORD *)(a1 + 4) = 6; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 4098; - std::locale::locale(v2); - std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)v2); - std::locale::~locale(v2); -} - -//----- (00525D50) -------------------------------------------------------- -volatile signed __int32 **__userpurge std::ios_base::_M_move@( - int a1@, - std::ios_base *this, - std::ios_base *a3) -{ - int v3; // edi - int v5; // eax - int v6; // eax - std::ios_base *v7; // eax - int v8; // eax - int v10; // edx - _DWORD *v11; // eax - int *v12; // ecx - int v13; // ebp - int v14; // edi - - v3 = a1 + 36; - *(_DWORD *)(a1 + 4) = *((_DWORD *)this + 1); - *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); - *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); - *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); - *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); - v5 = *((_DWORD *)this + 6); - *((_DWORD *)this + 6) = 0; - *(_DWORD *)(a1 + 24) = v5; - v6 = *(_DWORD *)(a1 + 104); - if ( v6 != a1 + 36 && v6 ) - operator delete[](*(void **)(a1 + 104)); - v7 = (std::ios_base *)*((_DWORD *)this + 26); - if ( v7 == (std::ios_base *)((char *)this + 36) ) - { - *(_DWORD *)(a1 + 104) = v3; - v10 = 0; - *(_DWORD *)(a1 + 100) = 8; - while ( 1 ) - { - v11 = (_DWORD *)(v3 + v10); - v12 = (int *)(v10 + *((_DWORD *)this + 26)); - v10 += 8; - v13 = *v12; - v14 = v12[1]; - *v12 = 0; - v12[1] = 0; - *v11 = v13; - v11[1] = v14; - if ( v10 == 64 ) - break; - v3 = *(_DWORD *)(a1 + 104); - } - } - else - { - *((_DWORD *)this + 26) = (char *)this + 36; - *(_DWORD *)(a1 + 104) = v7; - v8 = *((_DWORD *)this + 25); - *((_DWORD *)this + 25) = 8; - *(_DWORD *)(a1 + 100) = v8; - } - return std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)this + 27); -} - -//----- (00525E20) -------------------------------------------------------- -void __userpurge std::ios_base::_M_swap(std::ios_base *a1@, std::ios_base *this, std::ios_base *a3) -{ - char *v3; // ebp - std::ios_base *v4; // ebx - int v5; // eax - char *v6; // edi - int v7; // edx - int v8; // eax - int v9; // edx - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // edx - int v14; // eax - int v15; // edx - int v16; // eax - char *v17; // edx - char *v18; // eax - std::ios_base *v19; // edx - int v20; // eax - volatile signed __int32 **v21; // ebx - int i; // ecx - int v23; // ebp - int v24; // edi - int v25; // edx - const std::locale *Src; // [esp+4h] [ebp-48h] - std::ios_base *v27; // [esp+18h] [ebp-34h] - std::ios_base *v28; // [esp+1Ch] [ebp-30h] - _DWORD *v29[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = (char *)a1 + 36; - v4 = a1; - v5 = *((_DWORD *)a1 + 1); - v6 = (char *)*((_DWORD *)a1 + 26); - *((_DWORD *)a1 + 1) = *((_DWORD *)this + 1); - v7 = *((_DWORD *)this + 2); - *((_DWORD *)this + 1) = v5; - v8 = *((_DWORD *)a1 + 2); - *((_DWORD *)a1 + 2) = v7; - v9 = *((_DWORD *)this + 3); - *((_DWORD *)this + 2) = v8; - v10 = *((_DWORD *)a1 + 3); - *((_DWORD *)a1 + 3) = v9; - v11 = *((_DWORD *)this + 4); - *((_DWORD *)this + 3) = v10; - v12 = *((_DWORD *)a1 + 4); - *((_DWORD *)a1 + 4) = v11; - v13 = *((_DWORD *)this + 5); - *((_DWORD *)this + 4) = v12; - v14 = *((_DWORD *)a1 + 5); - *((_DWORD *)a1 + 5) = v13; - v15 = *((_DWORD *)this + 6); - *((_DWORD *)this + 5) = v14; - v16 = *((_DWORD *)a1 + 6); - *((_DWORD *)a1 + 6) = v15; - v17 = (char *)this + 36; - *((_DWORD *)this + 6) = v16; - v18 = (char *)*((_DWORD *)this + 26); - if ( v6 != (char *)a1 + 36 ) - { -LABEL_6: - if ( v18 != v17 ) - { - *((_DWORD *)a1 + 26) = v18; - *((_DWORD *)this + 26) = v6; - goto LABEL_8; - } - if ( v6 != v3 ) - { - v19 = a1; - a1 = this; - goto LABEL_5; - } -LABEL_4: - v3 = (char *)this + 36; - v6 = (char *)*((_DWORD *)this + 26); - v19 = this; -LABEL_5: - v28 = a1; - v27 = v19; - memmove((char *)v19 + 36, (char *)a1 + 36, 0x40u); - *((_DWORD *)v28 + 26) = v6; - *((_DWORD *)v27 + 26) = v3; -LABEL_8: - v20 = *((_DWORD *)v4 + 25); - *((_DWORD *)v4 + 25) = *((_DWORD *)this + 25); - *((_DWORD *)this + 25) = v20; - goto LABEL_9; - } - if ( v18 != v17 ) - { - if ( v6 == v3 ) - goto LABEL_4; - goto LABEL_6; - } - for ( i = 0; i != 8; ++i ) - { - v23 = *((_DWORD *)v4 + 2 * i + 9); - v24 = *((_DWORD *)v4 + 2 * i + 10); - v25 = *((_DWORD *)this + 2 * i + 10); - *((_DWORD *)v4 + 2 * i + 9) = *((_DWORD *)this + 2 * i + 9); - *((_DWORD *)v4 + 2 * i + 10) = v25; - *((_DWORD *)this + 2 * i + 9) = v23; - *((_DWORD *)this + 2 * i + 10) = v24; - } -LABEL_9: - v21 = (volatile signed __int32 **)((char *)v4 + 108); - std::locale::locale((volatile signed __int32 **)v29, v21, Src); - std::locale::operator=(v21, (volatile signed __int32 **)this + 27); - std::locale::operator=((volatile signed __int32 **)this + 27, (volatile signed __int32 **)v29); - std::locale::~locale(v29); -} -// 525EF9: variable 'Src' is possibly undefined - -//----- (00525F80) -------------------------------------------------------- -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *a2, int *a3) -{ - std::system_error::system_error(this, *a3, a3[1], a2); - *this = &off_55FDD8; -} -// 55FDD8: using guessed type int (*off_55FDD8)(); - -//----- (00525FC0) -------------------------------------------------------- -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2) -{ - if ( !(_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec - && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) - { - __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); - atexit((_PVFV)__tcf_0_7); - } - std::system_error::system_error(this, 1, (int)&`anonymous namespace'::__io_category_instance(void)::__ec, a2); - *this = &off_55FDD8; -} -// 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); -// 55FDD8: using guessed type int (*off_55FDD8)(); - -//----- (00526030) -------------------------------------------------------- -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3) -{ - std::system_error::system_error(this, *a3, a3[1], a2); - *this = &off_55FDD8; -} -// 55FDD8: using guessed type int (*off_55FDD8)(); - -//----- (00526070) -------------------------------------------------------- -void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *Block) -{ - std::exception *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_55FDD8; - std::system_error::~system_error(Blocka); - operator delete(Block); -} -// 52607C: variable 'Blocka' is possibly undefined -// 55FDD8: using guessed type int (*off_55FDD8)(); - -//----- (00526090) -------------------------------------------------------- -void __cdecl std::ios_base::failure[abi:cxx11]::~failure(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_55FDD8; - std::system_error::~system_error(a1); -} -// 526090: variable 'v1' is possibly undefined -// 55FDD8: using guessed type int (*off_55FDD8)(); - -//----- (005260A0) -------------------------------------------------------- -void __userpurge std::ios_base::failure::failure(_DWORD *a1@, std::ios_base::failure *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_55FDEC; - std::string::string(a1 + 1, this, v3); -} -// 5260E8: variable 'v3' is possibly undefined -// 55FDEC: using guessed type void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this); - -//----- (00526130) -------------------------------------------------------- -void __fastcall std::ios_base::failure::~failure(_DWORD *a1) -{ - int v2; // eax - int v3; // ecx - int v4; // eax - std::exception *Block; // [esp+0h] [ebp-2Ch] - int v6[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *a1 = &off_55FDEC; - v3 = a1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v6); - goto LABEL_3; - } - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 <= 0 ) - goto LABEL_5; -LABEL_3: - std::exception::~exception(Block); - operator delete(a1); -} -// 526157: variable 'Block' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55FDEC: using guessed type void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this); -// 526130: using guessed type int var_D[3]; - -//----- (005261A0) -------------------------------------------------------- -void __cdecl std::ios_base::failure::~failure(std::ios_base::failure *this) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_55FDEC; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(this); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(this); -} -// 5261AB: variable 'v1' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; -// 55FDEC: using guessed type void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this); -// 5261A0: using guessed type int var_D[3]; - -//----- (00526200) -------------------------------------------------------- -void __fastcall std::ios_base::ios_base(_DWORD *a1) -{ - _DWORD *v1; // ebx - _DWORD *v2; // eax - _DWORD *v3; // ecx - - v1 = a1 + 9; - *a1 = &off_560D04; - v2 = a1 + 9; - a1[1] = 0; - a1[2] = 0; - a1[3] = 0; - a1[4] = 0; - a1[5] = 0; - a1[6] = 0; - a1[7] = 0; - a1[8] = 0; - do - { - *v2 = 0; - v2 += 2; - *(v2 - 1) = 0; - } - while ( a1 + 25 != v2 ); - a1[25] = 8; - v3 = a1 + 27; - *(v3 - 1) = v1; - std::locale::locale(v3); -} -// 560D04: using guessed type void (__cdecl *off_560D04)(std::ios_base *__hidden this); - -//----- (00526280) -------------------------------------------------------- -void __fastcall std::ios_base::~ios_base(int a1) -{ - void *Block; // eax - - *(_DWORD *)a1 = &off_560D04; - std::ios_base::_M_call_callbacks((_DWORD *)a1, 0); - std::ios_base::_M_dispose_callbacks(a1); - Block = *(void **)(a1 + 104); - if ( Block != (void *)(a1 + 36) ) - { - if ( Block ) - operator delete[](Block); - *(_DWORD *)(a1 + 104) = 0; - } - std::locale::~locale((_DWORD **)(a1 + 108)); - operator delete((void *)a1); -} -// 560D04: using guessed type void (__cdecl *off_560D04)(std::ios_base *__hidden this); - -//----- (005262E0) -------------------------------------------------------- -void __fastcall std::ios_base::~ios_base(int a1) -{ - void *Block; // eax - - *(_DWORD *)a1 = &off_560D04; - std::ios_base::_M_call_callbacks((_DWORD *)a1, 0); - std::ios_base::_M_dispose_callbacks(a1); - Block = *(void **)(a1 + 104); - if ( Block != (void *)(a1 + 36) ) - { - if ( Block ) - operator delete[](Block); - *(_DWORD *)(a1 + 104) = 0; - } - std::locale::~locale((_DWORD **)(a1 + 108)); -} -// 560D04: using guessed type void (__cdecl *off_560D04)(std::ios_base *__hidden this); - -//----- (00526330) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_560D14; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560D14: using guessed type int (*off_560D14)(); - -//----- (005263D0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560D14; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560D14: using guessed type int (*off_560D14)(); - -//----- (00526470) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_560D14; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560D14: using guessed type int (*off_560D14)(); - -//----- (00526510) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560D14; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560D14: using guessed type int (*off_560D14)(); - -//----- (005265B0) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560D14; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 5265EE: variable 'lpfctx' is possibly undefined -// 560D14: using guessed type int (*off_560D14)(); - -//----- (00526610) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560D14; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 52664E: variable 'lpfctx' is possibly undefined -// 560D14: using guessed type int (*off_560D14)(); - -//----- (00526670) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560D14; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5266AE: variable 'lpfctx' is possibly undefined -// 560D14: using guessed type int (*off_560D14)(); - -//----- (005266D0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_560D30; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560D30: using guessed type int (*off_560D30)(); - -//----- (00526770) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560D30; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560D30: using guessed type int (*off_560D30)(); - -//----- (00526810) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_560D30; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560D30: using guessed type int (*off_560D30)(); - -//----- (005268B0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560D30; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 560D30: using guessed type int (*off_560D30)(); - -//----- (00526950) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_560D30; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 52698E: variable 'lpfctx' is possibly undefined -// 560D30: using guessed type int (*off_560D30)(); - -//----- (005269B0) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560D30; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 5269EE: variable 'lpfctx' is possibly undefined -// 560D30: using guessed type int (*off_560D30)(); - -//----- (00526A10) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_560D30; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 526A4E: variable 'lpfctx' is possibly undefined -// 560D30: using guessed type int (*off_560D30)(); - -//----- (00526A70) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) -{ - _DWORD *v2; // eax - char *v3; // esi - int i; // eax - char *v5; // esi - int j; // eax - _DWORD *result; // eax - _DWORD *v8; // [esp+1Ch] [ebp-10h] - - v2 = (_DWORD *)this[2]; - if ( !v2 ) - { - v8 = this; - v2 = operator new(0x68u); - this = v8; - v2[1] = 0; - *v2 = &off_5605B0; - v2[2] = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[5] = 0; - v2[6] = 0; - v2[7] = 0; - v2[8] = 0; - *((_WORD *)v2 + 18) = 0; - *((_BYTE *)v2 + 100) = 0; - v8[2] = v2; - } - v2[2] = &unk_556C34; - v3 = std::__num_base::_S_atoms_out[0]; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - *((_BYTE *)v2 + 36) = 46; - *(_BYTE *)(this[2] + 37) = 44; - for ( i = 0; i != 36; ++i ) - *(_BYTE *)(this[2] + i + 38) = v3[i]; - v5 = std::__num_base::_S_atoms_in[0]; - for ( j = 0; j != 26; ++j ) - *(_BYTE *)(this[2] + j + 74) = v5[j]; - result = (_DWORD *)this[2]; - result[5] = "true"; - result[6] = 4; - result[7] = "false"; - result[8] = 5; - return result; -} -// 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; -// 5605B0: using guessed type int (*off_5605B0)(); - -//----- (00526B70) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560D4C; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (00526C10) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_560D4C; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (00526CA0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560D4C; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (00526D40) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560D4C; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (00526DE0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_560D4C; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (00526E70) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560D4C; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (00526F10) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - std::numpunct::~numpunct(a1); - operator delete(a1); -} - -//----- (00526FA0) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_560D4C; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__numpunct_cache::~__numpunct_cache ) - { - std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 526FFF: variable 'lpfctx' is possibly undefined -// 560D4C: using guessed type int (*off_560D4C)(); - -//----- (005270A0) -------------------------------------------------------- -int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) -{ - _DWORD *v2; // edx - char *v3; // ebx - int v4; // eax - char *v5; // ebx - int result; // eax - _DWORD *v7; // eax - - v2 = (_DWORD *)this[2]; - if ( !v2 ) - { - v7 = operator new(0xA8u); - v7[1] = 0; - v2 = v7; - *v7 = &off_5605C0; - v7[2] = 0; - v7[3] = 0; - *((_BYTE *)v7 + 16) = 0; - v7[5] = 0; - v7[6] = 0; - v7[7] = 0; - v7[8] = 0; - v7[9] = 0; - *((_BYTE *)v7 + 164) = 0; - this[2] = v7; - } - v2[2] = &unk_556C34; - v3 = std::__num_base::_S_atoms_out[0]; - v4 = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[9] = 2883630; - do - { - *((_WORD *)v2 + v4 + 20) = v3[v4]; - ++v4; - } - while ( v4 != 36 ); - v5 = std::__num_base::_S_atoms_in[0]; - for ( result = 0; result != 26; ++result ) - *((_WORD *)v2 + result + 56) = v5[result]; - v2[5] = &off_556C40; - v2[6] = 4; - v2[7] = &off_556C4A; - v2[8] = 5; - return result; -} -// 53F580: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 53F584: using guessed type char *std::__num_base::_S_atoms_out[2]; -// 556C40: using guessed type void *off_556C40; -// 556C4A: using guessed type void *off_556C4A; -// 5605C0: using guessed type int (*off_5605C0)(); - -//----- (00527190) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560D70; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 560D70: using guessed type int (*off_560D70)(); - -//----- (00527230) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_560D70; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 560D70: using guessed type int (*off_560D70)(); - -//----- (005272C0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560D70; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 560D70: using guessed type int (*off_560D70)(); - -//----- (00527360) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_560D70; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 560D70: using guessed type int (*off_560D70)(); - -//----- (00527400) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_560D70; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 560D70: using guessed type int (*off_560D70)(); - -//----- (00527490) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_560D70; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 560D70: using guessed type int (*off_560D70)(); - -//----- (00527530) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - std::numpunct::~numpunct(a1); - operator delete(a1); -} - -//----- (005275C0) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_560D70; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__numpunct_cache::~__numpunct_cache ) - { - std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 52761F: variable 'lpfctx' is possibly undefined -// 560D70: using guessed type int (*off_560D70)(); - -//----- (005276C0) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560D94; - result = a2 != 0; - this[1] = result; - return result; -} -// 560D94: using guessed type int (*off_560D94)(); - -//----- (005276E0) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560D94; - result = a2 != 0; - this[1] = result; - return result; -} -// 560D94: using guessed type int (*off_560D94)(); - -//----- (00527700) -------------------------------------------------------- -void __fastcall std::time_get>::~time_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560D94; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52770C: variable 'Blocka' is possibly undefined -// 560D94: using guessed type int (*off_560D94)(); - -//----- (00527720) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560D94; - std::locale::facet::~facet(a1); -} -// 527720: variable 'v1' is possibly undefined -// 560D94: using guessed type int (*off_560D94)(); - -//----- (00527730) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560D94; - std::locale::facet::~facet(a1); -} -// 527730: variable 'v1' is possibly undefined -// 560D94: using guessed type int (*off_560D94)(); - -//----- (00527740) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560DBC; - result = a2 != 0; - this[1] = result; - return result; -} -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (00527760) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560DBC; - result = a2 != 0; - this[1] = result; - return result; -} -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (00527780) -------------------------------------------------------- -void __fastcall std::time_get>::~time_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560DBC; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52778C: variable 'Blocka' is possibly undefined -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (005277A0) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DBC; - std::locale::facet::~facet(a1); -} -// 5277A0: variable 'v1' is possibly undefined -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (005277B0) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DBC; - std::locale::facet::~facet(a1); -} -// 5277B0: variable 'v1' is possibly undefined -// 560DBC: using guessed type int (*off_560DBC)(); - -//----- (005277C0) -------------------------------------------------------- -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560DE4; - result = a2 != 0; - this[1] = result; - return result; -} -// 560DE4: using guessed type int (*off_560DE4)(); - -//----- (005277E0) -------------------------------------------------------- -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560DE4; - result = a2 != 0; - this[1] = result; - return result; -} -// 560DE4: using guessed type int (*off_560DE4)(); - -//----- (00527800) -------------------------------------------------------- -void __fastcall std::time_put>::~time_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560DE4; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52780C: variable 'Blocka' is possibly undefined -// 560DE4: using guessed type int (*off_560DE4)(); - -//----- (00527820) -------------------------------------------------------- -void __cdecl std::time_put>::~time_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DE4; - std::locale::facet::~facet(a1); -} -// 527820: variable 'v1' is possibly undefined -// 560DE4: using guessed type int (*off_560DE4)(); - -//----- (00527830) -------------------------------------------------------- -void __cdecl std::time_put>::~time_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DE4; - std::locale::facet::~facet(a1); -} -// 527830: variable 'v1' is possibly undefined -// 560DE4: using guessed type int (*off_560DE4)(); - -//----- (00527840) -------------------------------------------------------- -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560DF8; - result = a2 != 0; - this[1] = result; - return result; -} -// 560DF8: using guessed type int (*off_560DF8)(); - -//----- (00527860) -------------------------------------------------------- -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560DF8; - result = a2 != 0; - this[1] = result; - return result; -} -// 560DF8: using guessed type int (*off_560DF8)(); - -//----- (00527880) -------------------------------------------------------- -void __fastcall std::time_put>::~time_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560DF8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 52788C: variable 'Blocka' is possibly undefined -// 560DF8: using guessed type int (*off_560DF8)(); - -//----- (005278A0) -------------------------------------------------------- -void __cdecl std::time_put>::~time_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DF8; - std::locale::facet::~facet(a1); -} -// 5278A0: variable 'v1' is possibly undefined -// 560DF8: using guessed type int (*off_560DF8)(); - -//----- (005278B0) -------------------------------------------------------- -void __cdecl std::time_put>::~time_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560DF8; - std::locale::facet::~facet(a1); -} -// 5278B0: variable 'v1' is possibly undefined -// 560DF8: using guessed type int (*off_560DF8)(); - -//----- (005278C0) -------------------------------------------------------- -void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_560E0C; - std::exception::~exception(Block); - operator delete(a1); -} -// 5278CC: variable 'Block' is possibly undefined -// 560E0C: using guessed type void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this); - -//----- (005278F0) -------------------------------------------------------- -void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560E0C; - std::exception::~exception(a1); -} -// 5278F0: variable 'v1' is possibly undefined -// 560E0C: using guessed type void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this); - -//----- (00527900) -------------------------------------------------------- -int __thiscall std::ios::exceptions(_DWORD *this, int a2) -{ - bool v2; // zf - int v3; // edx - int result; // eax - - v2 = this[30] == 0; - v3 = this[5]; - result = a2; - this[4] = a2; - if ( v2 ) - { - v3 |= 1u; - this[5] = v3; - } - if ( (v3 & a2) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (00527940) -------------------------------------------------------- -int __thiscall std::ios::_M_setstate(_DWORD *this, int a2) -{ - int result; // eax - - this[5] |= a2; - result = this[4] & a2; - if ( result ) - __cxa_rethrow(); - return result; -} - -//----- (00527960) -------------------------------------------------------- -void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int a2) -{ - void *result; // eax - - if ( (unsigned __int8)std::has_facet>(a2) ) - { - this[31] = std::use_facet>(a2); - if ( (unsigned __int8)std::has_facet>>(a2) ) - goto LABEL_3; -LABEL_6: - this[32] = 0; - result = (void *)std::has_facet>>(a2); - if ( (_BYTE)result ) - goto LABEL_4; - goto LABEL_7; - } - this[31] = 0; - if ( !(unsigned __int8)std::has_facet>>(a2) ) - goto LABEL_6; -LABEL_3: - this[32] = std::use_facet>>(a2); - result = (void *)std::has_facet>>(a2); - if ( (_BYTE)result ) - { -LABEL_4: - result = std::use_facet>>(a2); - this[33] = result; - return result; - } -LABEL_7: - this[33] = 0; - return result; -} - -//----- (00527A00) -------------------------------------------------------- -int __thiscall std::ios::tie(_DWORD *this, int a2) -{ - int result; // eax - - result = this[28]; - this[28] = a2; - return result; -} - -//----- (00527A10) -------------------------------------------------------- -int __thiscall std::ios::fill(int this, char a2) -{ - int result; // eax - _BYTE *v4; // edi - int (__stdcall *v5)(unsigned __int8); // edx - - if ( *(_BYTE *)(this + 117) ) - { - result = *(unsigned __int8 *)(this + 116); - *(_BYTE *)(this + 116) = a2; - } - else - { - v4 = *(_BYTE **)(this + 124); - if ( !v4 ) - std::__throw_bad_cast(); - if ( v4[28] ) - { - result = (unsigned __int8)v4[61]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); - v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); - result = 32; - if ( v5 != std::ctype::do_widen ) - result = ((int (__thiscall *)(_BYTE *, int))v5)(v4, 32); - } - *(_BYTE *)(this + 117) = 1; - *(_BYTE *)(this + 116) = a2; - } - return result; -} - -//----- (00527A90) -------------------------------------------------------- -BOOL __thiscall std::ios::init(int this, int a2) -{ - BOOL result; // eax - - std::ios_base::_M_init(this); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - *(_DWORD *)(this + 120) = a2; - *(_WORD *)(this + 116) = 0; - result = a2 == 0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = result; - return result; -} - -//----- (00527AE0) -------------------------------------------------------- -int __thiscall std::ios::move(int this, std::ios_base *a2) -{ - int v3; // eax - int result; // eax - std::ios_base *v5; // [esp+4h] [ebp-18h] - - std::ios_base::_M_move(this, a2, v5); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - v3 = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = 0; - *(_DWORD *)(this + 112) = v3; - *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); - result = *((unsigned __int8 *)a2 + 117); - *(_DWORD *)(this + 120) = 0; - *(_BYTE *)(this + 117) = result; - return result; -} -// 527AEE: variable 'v5' is possibly undefined - -//----- (00527B30) -------------------------------------------------------- -int __thiscall std::ios::move(int this, std::ios_base *a2) -{ - int v3; // eax - int result; // eax - std::ios_base *v5; // [esp+4h] [ebp-18h] - - std::ios_base::_M_move(this, a2, v5); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - v3 = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = 0; - *(_DWORD *)(this + 112) = v3; - *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); - result = *((unsigned __int8 *)a2 + 117); - *(_DWORD *)(this + 120) = 0; - *(_BYTE *)(this + 117) = result; - return result; -} -// 527B3E: variable 'v5' is possibly undefined - -//----- (00527B80) -------------------------------------------------------- -void __thiscall std::ios::swap(int this, std::ios_base *a2) -{ - int v3; // eax - char v4; // dl - char v5; // dl - std::ios_base *v6; // [esp+4h] [ebp-58h] - - std::ios_base::_M_swap((std::ios_base *)this, a2, v6); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - std::ios::_M_cache_locale(a2, (int)a2 + 108); - v3 = *(_DWORD *)(this + 112); - *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = v3; - v4 = *(_BYTE *)(this + 116); - *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); - LOBYTE(v3) = *((_BYTE *)a2 + 117); - *((_BYTE *)a2 + 116) = v4; - v5 = *(_BYTE *)(this + 117); - *(_BYTE *)(this + 117) = v3; - *((_BYTE *)a2 + 117) = v5; -} -// 527BAD: variable 'v6' is possibly undefined - -//----- (00527C20) -------------------------------------------------------- -int __thiscall std::ios::clear(_DWORD *this, int a2) -{ - int v2; // eax - int result; // eax - - v2 = a2; - if ( !this[30] ) - v2 = a2 | 1; - this[5] = v2; - result = this[4] & v2; - if ( result ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (00527C60) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::ios::imbue( - volatile signed __int32 **this, - volatile signed __int32 **a2, - volatile signed __int32 **a3) -{ - volatile signed __int32 *v3; // edx - const std::locale *v5; // [esp+4h] [ebp-64h] - const std::locale *v6; // [esp+4h] [ebp-64h] - volatile signed __int32 **v7; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - _DWORD *v10[3]; // [esp+5Ch] [ebp-Ch] BYREF - - std::locale::locale(this, a2 + 27, v5); - std::ios_base::imbue((volatile signed __int32 **)v10, a2, a3); - std::locale::~locale(v10); - std::ios::_M_cache_locale(a2, (int)a3); - v3 = a2[30]; - if ( v3 ) - { - lpuexcpt = (struct _Unwind_Exception *)a2[30]; - v7 = (volatile signed __int32 **)(v3 + 7); - std::locale::locale((volatile signed __int32 **)v10, (volatile signed __int32 **)v3 + 7, v6); - (*(void (__thiscall **)(struct _Unwind_Exception *, volatile signed __int32 **))(*(_DWORD *)lpuexcpt + 8))( - lpuexcpt, - a3); - std::locale::operator=(v7, a3); - std::locale::~locale(v10); - } - return this; -} -// 527C9B: variable 'v5' is possibly undefined -// 527CF4: variable 'v6' is possibly undefined - -//----- (00527D80) -------------------------------------------------------- -int __thiscall std::ios::rdbuf(_DWORD *this, int a2) -{ - int v2; // edx - - v2 = this[30]; - this[30] = a2; - this[5] = a2 == 0; - if ( (this[4] & (a2 == 0)) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return v2; -} - -//----- (00527DC0) -------------------------------------------------------- -int __thiscall std::ios::copyfmt(int this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - _DWORD *v5; // edx - void *v6; // ebp - int v7; // edi - void *Block; // eax - _DWORD *v9; // edx - int v10; // ebp - int v11; // ecx - int v12; // eax - int v13; // esi - int v14; // eax - bool v15; // zf - char v16; // dl - int v17; // eax - int v18; // ecx - int v19; // edx - _DWORD *v21; // eax - int v22; // ecx - _BYTE *v24; // edi - _BYTE *v25; // edi - int (__stdcall *v26)(unsigned __int8); // eax - int (__stdcall *v27)(unsigned __int8); // eax - const std::locale *v28; // [esp+4h] [ebp-48h] - _DWORD *v29; // [esp+1Ch] [ebp-30h] - _DWORD *v30; // [esp+1Ch] [ebp-30h] - unsigned __int8 v31; // [esp+1Ch] [ebp-30h] - _DWORD *v32[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = a2; - if ( (_DWORD *)this == a2 ) - return this; - v4 = a2[25]; - if ( v4 > 8 ) - { - if ( v4 > 0xFFFFFFF ) - __cxa_throw_bad_array_new_length(); - v6 = (void *)(this + 36); - v21 = (_DWORD *)operator new[](8 * v4); - v5 = v21; - v22 = a2[25] - 1; - if ( v22 >= 0 ) - { - do - { - *v21 = 0; - v21 += 2; - *(v21 - 1) = 0; - } - while ( v22-- != 0 ); - } - } - else - { - v5 = (_DWORD *)(this + 36); - v6 = (void *)(this + 36); - } - v7 = a2[6]; - if ( v7 ) - { - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); - else - ++*(_DWORD *)(v7 + 12); - } - v29 = v5; - std::ios_base::_M_call_callbacks((_DWORD *)this, 0); - Block = *(void **)(this + 104); - v9 = v29; - if ( Block != v6 ) - { - if ( Block ) - { - operator delete[](Block); - v9 = v29; - } - *(_DWORD *)(this + 104) = 0; - } - v30 = v9; - std::ios_base::_M_dispose_callbacks(this); - v10 = a2[25]; - *(_DWORD *)(this + 24) = v7; - if ( v10 > 0 ) - { - v11 = a2[26]; - v12 = 0; - do - { - v13 = *(_DWORD *)(v11 + v12 * 4 + 4); - v30[v12] = *(_DWORD *)(v11 + v12 * 4); - v30[v12 + 1] = v13; - v12 += 2; - } - while ( v12 != 2 * v10 ); - v3 = a2; - } - v14 = v3[3]; - v15 = *((_BYTE *)v3 + 117) == 0; - *(_DWORD *)(this + 104) = v30; - *(_DWORD *)(this + 100) = v10; - *(_DWORD *)(this + 12) = v14; - *(_DWORD *)(this + 8) = v3[2]; - *(_DWORD *)(this + 4) = v3[1]; - *(_DWORD *)(this + 112) = v3[28]; - if ( v15 ) - { - v24 = (_BYTE *)v3[31]; - if ( !v24 ) - goto LABEL_38; - if ( v24[28] ) - { - v16 = v24[61]; - } - else - { - std::ctype::_M_widen_init(v3[31]); - v16 = 32; - v27 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); - if ( v27 != std::ctype::do_widen ) - v16 = ((int (__fastcall *)(_BYTE *, int, int))v27)(v24, 32, 32); - } - *((_BYTE *)v3 + 116) = v16; - *((_BYTE *)v3 + 117) = 1; - if ( *(_BYTE *)(this + 117) ) - goto LABEL_17; -LABEL_29: - v25 = *(_BYTE **)(this + 124); - if ( v25 ) - { - if ( !v25[28] ) - { - v31 = v16; - std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); - v16 = v31; - v26 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v25 + 24); - if ( v26 != std::ctype::do_widen ) - { - ((void (__fastcall *)(_BYTE *, _DWORD, int))v26)(v25, v31, 32); - v16 = v31; - } - } - *(_BYTE *)(this + 117) = 1; - goto LABEL_17; - } -LABEL_38: - std::__throw_bad_cast(); - } - v16 = *((_BYTE *)v3 + 116); - if ( !*(_BYTE *)(this + 117) ) - goto LABEL_29; -LABEL_17: - *(_BYTE *)(this + 116) = v16; - std::locale::locale((volatile signed __int32 **)v32, (volatile signed __int32 **)v3 + 27, v28); - std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v32); - std::locale::~locale(v32); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - std::ios_base::_M_call_callbacks((_DWORD *)this, 2); - v17 = v3[4]; - v18 = *(_DWORD *)(this + 120); - v19 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 16) = v17; - if ( !v18 ) - { - v19 |= 1u; - *(_DWORD *)(this + 20) = v19; - } - if ( (v17 & v19) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return this; -} -// 527ECD: variable 'v28' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00528060) -------------------------------------------------------- -int __thiscall std::ios::setstate(_DWORD *this, int a2) -{ - int v2; // eax - int result; // eax - - v2 = this[5] | a2; - if ( !this[30] ) - v2 |= 1u; - this[5] = v2; - result = this[4] & v2; - if ( result ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (005280A0) -------------------------------------------------------- -int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[30] = a2; - return result; -} - -//----- (005280B0) -------------------------------------------------------- -void __thiscall std::ios::basic_ios(int this, int a2) -{ - std::ios_base::ios_base((_DWORD *)this); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)this = &off_560E20; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 120) = 0; - *(_DWORD *)(this + 124) = 0; - *(_DWORD *)(this + 128) = 0; - *(_DWORD *)(this + 132) = 0; - std::ios_base::_M_init(this); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 120) = a2; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = a2 == 0; -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005281A0) -------------------------------------------------------- -int __fastcall std::ios::basic_ios(int a1) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)a1); - result = 0; - *(_DWORD *)a1 = &off_560E20; - *(_DWORD *)(a1 + 112) = 0; - *(_WORD *)(a1 + 116) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - return result; -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005281F0) -------------------------------------------------------- -void __thiscall std::ios::basic_ios(int this, int a2) -{ - std::ios_base::ios_base((_DWORD *)this); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)this = &off_560E20; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 120) = 0; - *(_DWORD *)(this + 124) = 0; - *(_DWORD *)(this + 128) = 0; - *(_DWORD *)(this + 132) = 0; - std::ios_base::_M_init(this); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 120) = a2; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = a2 == 0; -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005282E0) -------------------------------------------------------- -int __fastcall std::ios::basic_ios(int a1) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)a1); - result = 0; - *(_DWORD *)a1 = &off_560E20; - *(_DWORD *)(a1 + 112) = 0; - *(_WORD *)(a1 + 116) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - return result; -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00528330) -------------------------------------------------------- -void __fastcall std::ios::~ios(_DWORD *Block) -{ - *Block = &off_560E20; - std::ios_base::~ios_base((int)Block); - operator delete(Block); -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00528350) -------------------------------------------------------- -void __fastcall std::ios::~ios(int a1) -{ - *(_DWORD *)a1 = &off_560E20; - std::ios_base::~ios_base(a1); -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00528360) -------------------------------------------------------- -void __fastcall std::ios::~ios(int a1) -{ - *(_DWORD *)a1 = &off_560E20; - std::ios_base::~ios_base(a1); -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00528370) -------------------------------------------------------- -int __thiscall std::wios::exceptions(_DWORD *this, int a2) -{ - bool v2; // zf - int v3; // edx - int result; // eax - - v2 = this[30] == 0; - v3 = this[5]; - result = a2; - this[4] = a2; - if ( v2 ) - { - v3 |= 1u; - this[5] = v3; - } - if ( (v3 & a2) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (005283B0) -------------------------------------------------------- -int __thiscall std::wios::_M_setstate(_DWORD *this, int a2) -{ - int result; // eax - - this[5] |= a2; - result = this[4] & a2; - if ( result ) - __cxa_rethrow(); - return result; -} - -//----- (005283D0) -------------------------------------------------------- -void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int a2) -{ - void *result; // eax - - if ( (unsigned __int8)std::has_facet>(a2) ) - { - this[31] = std::use_facet>(a2); - if ( (unsigned __int8)std::has_facet>>(a2) ) - goto LABEL_3; -LABEL_6: - this[32] = 0; - result = (void *)std::has_facet>>(a2); - if ( (_BYTE)result ) - goto LABEL_4; - goto LABEL_7; - } - this[31] = 0; - if ( !(unsigned __int8)std::has_facet>>(a2) ) - goto LABEL_6; -LABEL_3: - this[32] = std::use_facet>>(a2); - result = (void *)std::has_facet>>(a2); - if ( (_BYTE)result ) - { -LABEL_4: - result = std::use_facet>>(a2); - this[33] = result; - return result; - } -LABEL_7: - this[33] = 0; - return result; -} - -//----- (00528470) -------------------------------------------------------- -int __thiscall std::wios::tie(_DWORD *this, int a2) -{ - int result; // eax - - result = this[28]; - this[28] = a2; - return result; -} - -//----- (00528480) -------------------------------------------------------- -int __thiscall std::wios::fill(int this, __int16 a2) -{ - int result; // eax - int v4; // ecx - - if ( *(_BYTE *)(this + 118) ) - { - result = *(unsigned __int16 *)(this + 116); - *(_WORD *)(this + 116) = a2; - } - else - { - v4 = *(_DWORD *)(this + 124); - if ( !v4 ) - std::__throw_bad_cast(); - result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); - *(_WORD *)(this + 116) = a2; - *(_BYTE *)(this + 118) = 1; - } - return result; -} - -//----- (005284E0) -------------------------------------------------------- -BOOL __thiscall std::wios::init(int this, int a2) -{ - BOOL result; // eax - - std::ios_base::_M_init(this); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - *(_DWORD *)(this + 120) = a2; - *(_WORD *)(this + 116) = 0; - result = a2 == 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = result; - return result; -} - -//----- (00528530) -------------------------------------------------------- -int __thiscall std::wios::move(int this, std::ios_base *a2) -{ - int v3; // eax - int result; // eax - std::ios_base *v5; // [esp+4h] [ebp-18h] - - std::ios_base::_M_move(this, a2, v5); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - v3 = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = 0; - *(_DWORD *)(this + 112) = v3; - *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); - result = *((unsigned __int8 *)a2 + 118); - *(_DWORD *)(this + 120) = 0; - *(_BYTE *)(this + 118) = result; - return result; -} -// 52853E: variable 'v5' is possibly undefined - -//----- (00528590) -------------------------------------------------------- -int __thiscall std::wios::move(int this, std::ios_base *a2) -{ - int v3; // eax - int result; // eax - std::ios_base *v5; // [esp+4h] [ebp-18h] - - std::ios_base::_M_move(this, a2, v5); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - v3 = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = 0; - *(_DWORD *)(this + 112) = v3; - *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); - result = *((unsigned __int8 *)a2 + 118); - *(_DWORD *)(this + 120) = 0; - *(_BYTE *)(this + 118) = result; - return result; -} -// 52859E: variable 'v5' is possibly undefined - -//----- (005285F0) -------------------------------------------------------- -void __thiscall std::wios::swap(int this, std::ios_base *a2) -{ - int v3; // eax - __int16 v4; // dx - std::ios_base *v5; // [esp+4h] [ebp-58h] - - std::ios_base::_M_swap((std::ios_base *)this, a2, v5); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - std::wios::_M_cache_locale(a2, (int)a2 + 108); - v3 = *(_DWORD *)(this + 112); - *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); - v4 = *((_WORD *)a2 + 58); - *((_DWORD *)a2 + 28) = v3; - LOWORD(v3) = *(_WORD *)(this + 116); - *(_WORD *)(this + 116) = v4; - LOBYTE(v4) = *(_BYTE *)(this + 118); - *((_WORD *)a2 + 58) = v3; - *(_BYTE *)(this + 118) = *((_BYTE *)a2 + 118); - *((_BYTE *)a2 + 118) = v4; -} -// 52861D: variable 'v5' is possibly undefined - -//----- (00528690) -------------------------------------------------------- -int __thiscall std::wios::clear(_DWORD *this, int a2) -{ - int v2; // eax - int result; // eax - - v2 = a2; - if ( !this[30] ) - v2 = a2 | 1; - this[5] = v2; - result = this[4] & v2; - if ( result ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (005286D0) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::wios::imbue( - volatile signed __int32 **this, - volatile signed __int32 **a2, - volatile signed __int32 **a3) -{ - volatile signed __int32 *v3; // edx - const std::locale *v5; // [esp+4h] [ebp-64h] - const std::locale *v6; // [esp+4h] [ebp-64h] - volatile signed __int32 **v7; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - _DWORD *v10[3]; // [esp+5Ch] [ebp-Ch] BYREF - - std::locale::locale(this, a2 + 27, v5); - std::ios_base::imbue((volatile signed __int32 **)v10, a2, a3); - std::locale::~locale(v10); - std::wios::_M_cache_locale(a2, (int)a3); - v3 = a2[30]; - if ( v3 ) - { - lpuexcpt = (struct _Unwind_Exception *)a2[30]; - v7 = (volatile signed __int32 **)(v3 + 7); - std::locale::locale((volatile signed __int32 **)v10, (volatile signed __int32 **)v3 + 7, v6); - (*(void (__thiscall **)(struct _Unwind_Exception *, volatile signed __int32 **))(*(_DWORD *)lpuexcpt + 8))( - lpuexcpt, - a3); - std::locale::operator=(v7, a3); - std::locale::~locale(v10); - } - return this; -} -// 52870B: variable 'v5' is possibly undefined -// 528764: variable 'v6' is possibly undefined - -//----- (005287F0) -------------------------------------------------------- -int __thiscall std::wios::rdbuf(_DWORD *this, int a2) -{ - int v2; // edx - - v2 = this[30]; - this[30] = a2; - this[5] = a2 == 0; - if ( (this[4] & (a2 == 0)) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return v2; -} - -//----- (00528830) -------------------------------------------------------- -int __thiscall std::wios::copyfmt(int this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - _DWORD *v5; // edx - void *v6; // ebp - int v7; // edi - void *Block; // eax - _DWORD *v9; // edx - int v10; // ebp - int v11; // ecx - int v12; // eax - int v13; // esi - int v14; // eax - bool v15; // zf - __int16 v16; // di - int v17; // eax - int v18; // ecx - int v19; // edx - _DWORD *v21; // eax - int v22; // ecx - int v23; // ecx - __int16 v24; // ax - int v25; // ecx - const std::locale *v26; // [esp+8h] [ebp-48h] - _DWORD *v27; // [esp+20h] [ebp-30h] - _DWORD *v28; // [esp+20h] [ebp-30h] - _DWORD *v29[8]; // [esp+30h] [ebp-20h] BYREF - - v3 = a2; - if ( (_DWORD *)this == a2 ) - return this; - v4 = a2[25]; - if ( v4 > 8 ) - { - if ( v4 > 0xFFFFFFF ) - __cxa_throw_bad_array_new_length(); - v6 = (void *)(this + 36); - v21 = (_DWORD *)operator new[](8 * v4); - v5 = v21; - v22 = a2[25] - 1; - if ( v22 >= 0 ) - { - do - { - --v22; - *v21 = 0; - v21 += 2; - *(v21 - 1) = 0; - } - while ( v22 != -1 ); - } - } - else - { - v5 = (_DWORD *)(this + 36); - v6 = (void *)(this + 36); - } - v7 = a2[6]; - if ( v7 ) - { - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); - else - ++*(_DWORD *)(v7 + 12); - } - v27 = v5; - std::ios_base::_M_call_callbacks((_DWORD *)this, 0); - Block = *(void **)(this + 104); - v9 = v27; - if ( Block != v6 ) - { - if ( Block ) - { - operator delete[](Block); - v9 = v27; - } - *(_DWORD *)(this + 104) = 0; - } - v28 = v9; - std::ios_base::_M_dispose_callbacks(this); - v10 = a2[25]; - *(_DWORD *)(this + 24) = v7; - if ( v10 > 0 ) - { - v11 = a2[26]; - v12 = 0; - do - { - v13 = *(_DWORD *)(v11 + v12 * 4 + 4); - v28[v12] = *(_DWORD *)(v11 + v12 * 4); - v28[v12 + 1] = v13; - v12 += 2; - } - while ( v12 != 2 * v10 ); - v3 = a2; - } - v14 = v3[3]; - v15 = *((_BYTE *)v3 + 118) == 0; - *(_DWORD *)(this + 104) = v28; - *(_DWORD *)(this + 100) = v10; - *(_DWORD *)(this + 12) = v14; - *(_DWORD *)(this + 8) = v3[2]; - *(_DWORD *)(this + 4) = v3[1]; - *(_DWORD *)(this + 112) = v3[28]; - if ( v15 ) - { - v23 = v3[31]; - if ( !v23 ) - goto LABEL_30; - v24 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v23 + 40))(v23, 32); - *((_BYTE *)v3 + 118) = 1; - v15 = *(_BYTE *)(this + 118) == 0; - *((_WORD *)v3 + 58) = v24; - v16 = v24; - if ( !v15 ) - goto LABEL_17; -LABEL_27: - v25 = *(_DWORD *)(this + 124); - if ( v25 ) - { - (*(void (__thiscall **)(int, int))(*(_DWORD *)v25 + 40))(v25, 32); - *(_BYTE *)(this + 118) = 1; - goto LABEL_17; - } -LABEL_30: - std::__throw_bad_cast(); - } - v16 = *((_WORD *)v3 + 58); - if ( !*(_BYTE *)(this + 118) ) - goto LABEL_27; -LABEL_17: - *(_WORD *)(this + 116) = v16; - std::locale::locale((volatile signed __int32 **)v29, (volatile signed __int32 **)v3 + 27, v26); - std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v29); - std::locale::~locale(v29); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - std::ios_base::_M_call_callbacks((_DWORD *)this, 2); - v17 = v3[4]; - v18 = *(_DWORD *)(this + 120); - v19 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 16) = v17; - if ( !v18 ) - { - v19 |= 1u; - *(_DWORD *)(this + 20) = v19; - } - if ( (v19 & v17) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return this; -} -// 52893E: variable 'v26' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00528A70) -------------------------------------------------------- -int __thiscall std::wios::setstate(_DWORD *this, int a2) -{ - int v2; // eax - int result; // eax - - v2 = this[5] | a2; - if ( !this[30] ) - v2 |= 1u; - this[5] = v2; - result = this[4] & v2; - if ( result ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (00528AB0) -------------------------------------------------------- -int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[30] = a2; - return result; -} - -//----- (00528AC0) -------------------------------------------------------- -void __thiscall std::wios::basic_ios(int this, int a2) -{ - std::ios_base::ios_base((_DWORD *)this); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)this = &off_560E30; - *(_DWORD *)(this + 112) = 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 120) = 0; - *(_DWORD *)(this + 124) = 0; - *(_DWORD *)(this + 128) = 0; - *(_DWORD *)(this + 132) = 0; - std::ios_base::_M_init(this); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - *(_WORD *)(this + 116) = 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 120) = a2; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = a2 == 0; -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00528BB0) -------------------------------------------------------- -int __fastcall std::wios::basic_ios(int a1) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)a1); - result = 0; - *(_DWORD *)a1 = &off_560E30; - *(_DWORD *)(a1 + 112) = 0; - *(_WORD *)(a1 + 116) = 0; - *(_BYTE *)(a1 + 118) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - return result; -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00528C00) -------------------------------------------------------- -void __thiscall std::wios::basic_ios(int this, int a2) -{ - std::ios_base::ios_base((_DWORD *)this); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)this = &off_560E30; - *(_DWORD *)(this + 112) = 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 120) = 0; - *(_DWORD *)(this + 124) = 0; - *(_DWORD *)(this + 128) = 0; - *(_DWORD *)(this + 132) = 0; - std::ios_base::_M_init(this); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - *(_WORD *)(this + 116) = 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 120) = a2; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = a2 == 0; -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00528CF0) -------------------------------------------------------- -int __fastcall std::wios::basic_ios(int a1) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)a1); - result = 0; - *(_DWORD *)a1 = &off_560E30; - *(_DWORD *)(a1 + 112) = 0; - *(_WORD *)(a1 + 116) = 0; - *(_BYTE *)(a1 + 118) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - return result; -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00528D40) -------------------------------------------------------- -void __fastcall std::wios::~wios(_DWORD *Block) -{ - *Block = &off_560E30; - std::ios_base::~ios_base((int)Block); - operator delete(Block); -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00528D60) -------------------------------------------------------- -void __fastcall std::wios::~wios(int a1) -{ - *(_DWORD *)a1 = &off_560E30; - std::ios_base::~ios_base(a1); -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00528D70) -------------------------------------------------------- -void __fastcall std::wios::~wios(int a1) -{ - *(_DWORD *)a1 = &off_560E30; - std::ios_base::~ios_base(a1); -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00528D80) -------------------------------------------------------- -void __fastcall std::exception::~exception(void *Block) -{ - operator delete(Block); -} - -//----- (00528DB0) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560E54; - result = a2 != 0; - this[1] = result; - return result; -} -// 560E54: using guessed type int (*off_560E54)(); - -//----- (00528DD0) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560E54; - result = a2 != 0; - this[1] = result; - return result; -} -// 560E54: using guessed type int (*off_560E54)(); - -//----- (00528DF0) -------------------------------------------------------- -void __fastcall std::money_get>::~money_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560E54; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 528DFC: variable 'Blocka' is possibly undefined -// 560E54: using guessed type int (*off_560E54)(); - -//----- (00528E10) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560E54; - std::locale::facet::~facet(a1); -} -// 528E10: variable 'v1' is possibly undefined -// 560E54: using guessed type int (*off_560E54)(); - -//----- (00528E20) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560E54; - std::locale::facet::~facet(a1); -} -// 528E20: variable 'v1' is possibly undefined -// 560E54: using guessed type int (*off_560E54)(); - -//----- (00528E30) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560E6C; - result = a2 != 0; - this[1] = result; - return result; -} -// 560E6C: using guessed type int (*off_560E6C)(); - -//----- (00528E50) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560E6C; - result = a2 != 0; - this[1] = result; - return result; -} -// 560E6C: using guessed type int (*off_560E6C)(); - -//----- (00528E70) -------------------------------------------------------- -void __fastcall std::money_get>::~money_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560E6C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 528E7C: variable 'Blocka' is possibly undefined -// 560E6C: using guessed type int (*off_560E6C)(); - -//----- (00528E90) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560E6C; - std::locale::facet::~facet(a1); -} -// 528E90: variable 'v1' is possibly undefined -// 560E6C: using guessed type int (*off_560E6C)(); - -//----- (00528EA0) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560E6C; - std::locale::facet::~facet(a1); -} -// 528EA0: variable 'v1' is possibly undefined -// 560E6C: using guessed type int (*off_560E6C)(); - -//----- (00528EB0) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560E84; - result = a2 != 0; - this[1] = result; - return result; -} -// 560E84: using guessed type int (*off_560E84)(); - -//----- (00528ED0) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560E84; - result = a2 != 0; - this[1] = result; - return result; -} -// 560E84: using guessed type int (*off_560E84)(); - -//----- (00528EF0) -------------------------------------------------------- -void __fastcall std::money_put>::~money_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560E84; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 528EFC: variable 'Blocka' is possibly undefined -// 560E84: using guessed type int (*off_560E84)(); - -//----- (00528F10) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560E84; - std::locale::facet::~facet(a1); -} -// 528F10: variable 'v1' is possibly undefined -// 560E84: using guessed type int (*off_560E84)(); - -//----- (00528F20) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560E84; - std::locale::facet::~facet(a1); -} -// 528F20: variable 'v1' is possibly undefined -// 560E84: using guessed type int (*off_560E84)(); - -//----- (00528F30) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560E9C; - result = a2 != 0; - this[1] = result; - return result; -} -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (00528F50) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_560E9C; - result = a2 != 0; - this[1] = result; - return result; -} -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (00528F70) -------------------------------------------------------- -void __fastcall std::money_put>::~money_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_560E9C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 528F7C: variable 'Blocka' is possibly undefined -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (00528F90) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560E9C; - std::locale::facet::~facet(a1); -} -// 528F90: variable 'v1' is possibly undefined -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (00528FA0) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_560E9C; - std::locale::facet::~facet(a1); -} -// 528FA0: variable 'v1' is possibly undefined -// 560E9C: using guessed type int (*off_560E9C)(); - -//----- (00528FB0) -------------------------------------------------------- -void __fastcall std::type_info::~type_info(void *Block) -{ - operator delete(Block); -} - -//----- (00528FE0) -------------------------------------------------------- -void __cdecl std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - int a1, - int a2, - unsigned __int8 **a3, - int (__cdecl **a4)(int, int)) -{ - void *v4[34]; // [esp+60h] [ebp-118h] BYREF - void *v5[36]; // [esp+E8h] [ebp-90h] BYREF - - std::pair::pair(v4, a3); - std::pair::operator=(a3, a1); - std::pair::pair(v5, v4); - std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - a1, - 0, - -252645135 * ((a2 - a1) >> 3), - v5, - *a4); - std::pair::~pair(v5); - std::pair::~pair(v4); -} - -//----- (00529100) -------------------------------------------------------- -void __noreturn std::unexpected(void) -{ - __cxxabiv1::__unexpected(__cxxabiv1::__unexpected_handler); -} - -//----- (00529110) -------------------------------------------------------- -void __cdecl std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - int a1, - int a2, - int (__cdecl **a3)(int, int)) -{ - int v3; // [esp+24h] [ebp-154h] - int lpuexcpt; // [esp+28h] [ebp-150h] - void *v5[34]; // [esp+60h] [ebp-118h] BYREF - void *v6[36]; // [esp+E8h] [ebp-90h] BYREF - - if ( a2 - a1 > 136 ) - { - v3 = -252645135 * ((a2 - a1) >> 3); - for ( lpuexcpt = (v3 - 2) / 2; ; --lpuexcpt ) - { - std::pair::pair(v5, (_DWORD *)(a1 + 136 * lpuexcpt)); - std::pair::pair(v6, v5); - std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - a1, - lpuexcpt, - v3, - v6, - *a3); - std::pair::~pair(v6); - if ( !lpuexcpt ) - break; - std::pair::~pair(v5); - } - std::pair::~pair(v5); - } -} - -//----- (00529270) -------------------------------------------------------- -void __cdecl std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - int a1, - int a2, - int a3, - _DWORD *a4, - int (__cdecl *a5)(int, int)) -{ - int i; // eax - bool v6; // zf - int v7; // eax - int v8; // eax - int v9; // [esp+24h] [ebp-D4h] - int v10; // [esp+24h] [ebp-D4h] - int v11; // [esp+24h] [ebp-D4h] - int lpuexcpt; // [esp+28h] [ebp-D0h] - void *v13[36]; // [esp+68h] [ebp-90h] BYREF - - for ( i = a2; ; i = v10 ) - { - lpuexcpt = i; - if ( (a3 - 1) / 2 <= i ) - break; - v9 = 2 * (i + 1); - v6 = (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( - a5, - a1 + 272 * (i + 1), - a1 + 136 * (v9 - 1)) == 0; - v7 = v9 - 1; - if ( v6 ) - v7 = v9; - v10 = v7; - std::pair::operator=((unsigned __int8 **)(a1 + 136 * lpuexcpt), a1 + 136 * v7); - } - if ( (a3 & 1) == 0 && (a3 - 2) / 2 == i ) - { - std::pair::operator=((unsigned __int8 **)(a1 + 136 * i), a1 + 136 * (2 * i + 1)); - lpuexcpt = 2 * lpuexcpt + 1; - } - std::pair::pair(v13, a4); - v8 = lpuexcpt - 1; - while ( 1 ) - { - v11 = v8 / 2; - if ( a2 >= lpuexcpt || !((unsigned __int8 (__fastcall *)(int, int, int, void **))a5)(2, v8 % 2, a1 + 136 * v11, v13) ) - break; - std::pair::operator=((unsigned __int8 **)(a1 + 136 * lpuexcpt), a1 + 136 * v11); - v8 = v11 - 1; - lpuexcpt = v11; - } - std::pair::operator=((unsigned __int8 **)(a1 + 136 * lpuexcpt), (int)v13); - std::pair::~pair(v13); -} - -//----- (005294C0) -------------------------------------------------------- -int __cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5) -{ - _BYTE *v6; // ebx - unsigned int v7; // eax - int v9; // eax - int v10; // eax - - if ( a5 ) - { - v6 = a1; - do - { - *--v6 = *(_BYTE *)(a3 + a2 % 0xA + 4); - v7 = a2; - a2 /= 0xAu; - } - while ( v7 > 9 ); - } - else if ( (a4 & 0x4A) == 64 ) - { - v6 = a1; - do - { - --v6; - v10 = a2 & 7; - a2 >>= 3; - *v6 = *(_BYTE *)(a3 + v10 + 4); - } - while ( a2 ); - } - else - { - v6 = a1; - do - { - --v6; - v9 = a2 & 0xF; - a2 >>= 4; - *v6 = *(_BYTE *)(a3 + ((a4 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + v9); - } - while ( a2 ); - } - return a1 - v6; -} - -//----- (00529570) -------------------------------------------------------- -int __cdecl std::__int_to_char( - _BYTE *a1, - unsigned int a2, - unsigned int a3, - int a4, - __int16 a5, - char a6) -{ - unsigned __int64 v6; // rdi - _BYTE *v7; // ebx - unsigned __int64 v8; // kr00_8 - char v10; // al - char v11; // al - unsigned __int64 v12; // [esp+18h] [ebp-24h] - - v6 = __PAIR64__(a2, a3); - if ( a6 ) - { - v7 = a1; - do - { - --v7; - v12 = __PAIR64__(v6, HIDWORD(v6)); - *v7 = *(_BYTE *)(a4 + __PAIR64__(v6, HIDWORD(v6)) % 0xA + 4); - v8 = __PAIR64__(v6, HIDWORD(v6)) / 0xA; - LODWORD(v6) = (__PAIR64__(v6, HIDWORD(v6)) / 0xA) >> 32; - HIDWORD(v6) = v8; - } - while ( v12 > 9 ); - } - else if ( (a5 & 0x4A) == 64 ) - { - v7 = a1; - do - { - v11 = BYTE4(v6); - HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 3; - --v7; - LODWORD(v6) = (unsigned int)v6 >> 3; - *v7 = *(_BYTE *)(a4 + (v11 & 7) + 4); - } - while ( v6 ); - } - else - { - v7 = a1; - do - { - v10 = BYTE4(v6); - HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 4; - --v7; - LODWORD(v6) = (unsigned int)v6 >> 4; - *v7 = *(_BYTE *)(a4 + ((a5 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + (v10 & 0xF)); - } - while ( v6 ); - } - return a1 - v7; -} - -//----- (00529670) -------------------------------------------------------- -int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, int a3, __int16 a4, char a5) -{ - _WORD *v6; // ebx - unsigned int v7; // eax - int v9; // eax - int v10; // eax - - if ( a5 ) - { - v6 = a1; - do - { - *--v6 = *(_WORD *)(a3 + 2 * (a2 % 0xA) + 8); - v7 = a2; - a2 /= 0xAu; - } - while ( v7 > 9 ); - } - else if ( (a4 & 0x4A) == 64 ) - { - v6 = a1; - do - { - --v6; - v10 = a2 & 7; - a2 >>= 3; - *v6 = *(_WORD *)(a3 + 2 * v10 + 8); - } - while ( a2 ); - } - else - { - v6 = a1; - do - { - --v6; - v9 = ((a4 & 0x4000) == 0 ? 4 : 20) + (a2 & 0xF); - a2 >>= 4; - *v6 = *(_WORD *)(a3 + 2 * v9); - } - while ( a2 ); - } - return a1 - v6; -} - -//----- (00529730) -------------------------------------------------------- -int __cdecl std::__int_to_char( - _WORD *a1, - unsigned int a2, - unsigned int a3, - int a4, - __int16 a5, - char a6) -{ - unsigned __int64 v6; // rdi - _WORD *v7; // ebx - unsigned __int64 v8; // kr00_8 - char v10; // al - char v11; // al - unsigned __int64 v12; // [esp+18h] [ebp-24h] - - v6 = __PAIR64__(a2, a3); - if ( a6 ) - { - v7 = a1; - do - { - --v7; - v12 = __PAIR64__(v6, HIDWORD(v6)); - *v7 = *(_WORD *)(a4 + 2 * (__PAIR64__(v6, HIDWORD(v6)) % 0xA) + 8); - v8 = __PAIR64__(v6, HIDWORD(v6)) / 0xA; - LODWORD(v6) = (__PAIR64__(v6, HIDWORD(v6)) / 0xA) >> 32; - HIDWORD(v6) = v8; - } - while ( v12 > 9 ); - } - else if ( (a5 & 0x4A) == 64 ) - { - v7 = a1; - do - { - v11 = BYTE4(v6); - HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 3; - --v7; - LODWORD(v6) = (unsigned int)v6 >> 3; - *v7 = *(_WORD *)(a4 + 2 * (v11 & 7) + 8); - } - while ( v6 ); - } - else - { - v7 = a1; - do - { - v10 = BYTE4(v6); - HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 4; - --v7; - LODWORD(v6) = (unsigned int)v6 >> 4; - *v7 = *(_WORD *)(a4 + 2 * (((a5 & 0x4000) == 0 ? 4 : 20) + (v10 & 0xF))); - } - while ( v6 ); - } - return a1 - v7; -} - -//----- (00529840) -------------------------------------------------------- -void (*std::get_terminate(void))(void) -{ - return __cxxabiv1::__terminate_handler; -} - -//----- (00529850) -------------------------------------------------------- -__int32 __cdecl std::set_terminate(void (__noreturn *a1)(void)) -{ - void (__noreturn *v1)(void); // eax - - v1 = a1; - if ( !a1 ) - v1 = __gnu_cxx::__verbose_terminate_handler; - return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__terminate_handler, (__int32)v1); -} - -//----- (00529870) -------------------------------------------------------- -_BYTE *__cdecl std::__add_grouping(_BYTE *a1, char a2, char *a3, int a4, _BYTE *a5, _BYTE *a6) -{ - _BYTE *v6; // edi - _BYTE *v7; // esi - _BYTE *v8; // edx - int v9; // ecx - unsigned int v10; // ebx - char *v11; // edi - int v12; // ebx - int v13; // ebp - _BYTE *result; // eax - _BYTE *v15; // edi - int v16; // ecx - _BYTE *v17; // esi - bool v18; // cf - _BYTE *v19; // edi - int v20; // ecx - _BYTE *v21; // esi - char *v22; // [esp+0h] [ebp-20h] - int v23; // [esp+8h] [ebp-18h] - unsigned int v24; // [esp+Ch] [ebp-14h] - _BYTE *v25; // [esp+38h] [ebp+18h] - - v6 = a1; - v7 = a5; - v8 = a6; - v9 = *a3; - if ( (unsigned __int8)(v9 - 1) > 0x7Du || a6 - a5 <= v9 ) - { - if ( a6 == a5 ) - return a1; - v12 = -1; - v13 = -1; - v23 = 0; - v24 = 0; - v22 = a3; - goto LABEL_10; - } - v23 = 0; - v10 = 0; - do - { - v8 -= v9; - if ( a4 - 1 > v10 ) - ++v10; - else - ++v23; - v11 = &a3[v10]; - v9 = a3[v10]; - } - while ( v8 - a5 > v9 && (unsigned __int8)(v9 - 1) <= 0x7Du ); - v24 = v10; - v12 = v10 - 1; - v22 = v11; - v6 = a1; - v13 = v23 - 1; - if ( a5 != v8 ) - { -LABEL_10: - result = &v6[v8 - a5]; - do - *v6++ = *v7++; - while ( v6 != result ); - goto LABEL_12; - } - result = a1; -LABEL_12: - if ( v23 ) - { - do - { - v15 = result + 1; - *result = a2; - v16 = (unsigned __int8)*v22; - if ( (char)v16 <= 0 ) - { - ++result; - } - else - { - result += (unsigned __int8)(v16 + 1); - v17 = v8; - do - *v15++ = *v17++; - while ( v15 != result ); - v8 += v16; - } - v18 = v13-- == 0; - } - while ( !v18 ); - } - if ( v24 ) - { - v25 = v8; - do - { - v19 = result + 1; - *result = a2; - v20 = (unsigned __int8)a3[v12]; - if ( (char)v20 <= 0 ) - { - ++result; - } - else - { - result += (unsigned __int8)(v20 + 1); - v21 = v25; - do - *v19++ = *v21++; - while ( v19 != result ); - v25 += v20; - } - v18 = v12-- == 0; - } - while ( !v18 ); - } - return result; -} - -//----- (00529A20) -------------------------------------------------------- -_WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, char *a5, char *a6) -{ - char *v6; // edx - char *v7; // esi - _WORD *v8; // edi - int v9; // eax - unsigned int v10; // edi - unsigned int v11; // eax - int v12; // ebp - int v13; // ebx - _WORD *result; // eax - _WORD *v15; // edi - int v16; // ecx - char *v17; // esi - bool v18; // cf - _WORD *v19; // edi - int v20; // ecx - char *v21; // esi - char *v22; // [esp+0h] [ebp-20h] - int v23; // [esp+8h] [ebp-18h] - unsigned int v24; // [esp+Ch] [ebp-14h] - char *v25; // [esp+38h] [ebp+18h] - - v6 = a6; - v7 = a5; - v8 = a1; - v9 = *a3; - if ( (a6 - a5) >> 1 <= v9 || (unsigned __int8)(v9 - 1) > 0x7Du ) - { - if ( a6 == a5 ) - return a1; - v13 = -1; - v12 = -1; - v23 = 0; - v24 = 0; - v22 = a3; - goto LABEL_10; - } - v23 = 0; - v10 = 0; - do - { - v6 -= 2 * v9; - if ( a4 - 1 > v10 ) - ++v10; - else - ++v23; - v9 = a3[v10]; - } - while ( (v6 - a5) >> 1 > v9 && (unsigned __int8)(v9 - 1) <= 0x7Du ); - v11 = v10; - v24 = v10; - v22 = &a3[v10]; - v8 = a1; - v12 = v23 - 1; - v13 = v11 - 1; - if ( a5 != v6 ) - { -LABEL_10: - result = (_WORD *)((char *)v8 + v6 - a5); - do - { - *v8 = *(_WORD *)v7; - v7 += 2; - ++v8; - } - while ( v8 != result ); - goto LABEL_12; - } - result = a1; -LABEL_12: - if ( v23 ) - { - do - { - v15 = result + 1; - *result = a2; - v16 = (unsigned __int8)*v22; - if ( (char)v16 <= 0 ) - { - ++result; - } - else - { - result += (unsigned __int8)(v16 + 1); - v17 = v6; - do - { - *v15 = *(_WORD *)v17; - v17 += 2; - ++v15; - } - while ( v15 != result ); - v6 += 2 * v16; - } - v18 = v12-- == 0; - } - while ( !v18 ); - } - if ( v24 ) - { - v25 = v6; - do - { - v19 = result + 1; - *result = a2; - v20 = (unsigned __int8)a3[v13]; - if ( (char)v20 <= 0 ) - { - ++result; - } - else - { - result += (unsigned __int8)(v20 + 1); - v21 = v25; - do - { - *v19 = *(_WORD *)v21; - v21 += 2; - ++v19; - } - while ( v19 != result ); - v25 += 2 * v20; - } - v18 = v13-- == 0; - } - while ( !v18 ); - } - return result; -} - -//----- (00529BE0) -------------------------------------------------------- -void __cdecl std::__convert_to_v(unsigned __int8 *a1, double *a2, _DWORD *a3) -{ - long double v3; // fst7 - char *Locale; // [esp+10h] [ebp-5Ch] - char *Src; // [esp+14h] [ebp-58h] - unsigned int Size; // [esp+18h] [ebp-54h] - unsigned __int8 *v7; // [esp+5Ch] [ebp-10h] BYREF - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - Locale = (char *)operator new[](Size); - memcpy(Locale, Src, Size); - setlocale(0, "C"); - v3 = __mingw_strtod(a1, &v7); - *a2 = v3; - if ( v7 == a1 || *v7 ) - { - *a2 = 0.0; - *a3 = 4; - } - else if ( v3 < -1.797693134862316e308 || v3 > 1.797693134862316e308 ) - { - if ( v3 <= 0.0 ) - *a2 = -1.797693134862316e308; - else - *a2 = 1.797693134862316e308; - *a3 = 4; - } - setlocale(0, Locale); - operator delete[](Locale); -} - -//----- (00529D90) -------------------------------------------------------- -void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3) -{ - long double v3; // fst7 - long double v4; // fst7 - char *Locale; // [esp+10h] [ebp-5Ch] - char *Src; // [esp+14h] [ebp-58h] - unsigned int Size; // [esp+18h] [ebp-54h] - char *EndPtr; // [esp+5Ch] [ebp-10h] BYREF - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - Locale = (char *)operator new[](Size); - memcpy(Locale, Src, Size); - setlocale(0, "C"); - v3 = strtold(String, &EndPtr); - *a2 = v3; - if ( EndPtr == String || *EndPtr ) - { - *a2 = 0.0; - *a3 = 4; - } - else if ( v3 < -1.189731495357231765e4932 || v3 > 1.189731495357231765e4932 ) - { - if ( v3 <= 0.0 ) - v4 = -1.189731495357231765e4932; - else - v4 = 1.189731495357231765e4932; - *a2 = v4; - *a3 = 4; - } - setlocale(0, Locale); - operator delete[](Locale); -} - -//----- (00529F20) -------------------------------------------------------- -void __cdecl std::__convert_to_v(unsigned __int8 *a1, float *a2, _DWORD *a3) -{ - long double v3; // fst7 - int v4; // eax - char *Locale; // [esp+10h] [ebp-5Ch] - char *Src; // [esp+14h] [ebp-58h] - unsigned int Size; // [esp+18h] [ebp-54h] - unsigned __int8 *v8; // [esp+5Ch] [ebp-10h] BYREF - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - Locale = (char *)operator new[](Size); - memcpy(Locale, Src, Size); - setlocale(0, "C"); - v3 = __mingw_strtof(a1, &v8); - *a2 = v3; - if ( v8 == a1 || *v8 ) - { - *a2 = 0.0; - *a3 = 4; - } - else if ( v3 < -3.4028235e38 || v3 > 3.4028235e38 ) - { - v4 = -8388609; - if ( v3 > 0.0 ) - v4 = 2139095039; - *(_DWORD *)a2 = v4; - *a3 = 4; - } - setlocale(0, Locale); - operator delete[](Locale); -} - -//----- (0052A0B0) -------------------------------------------------------- -void (*std::get_unexpected(void))(void) -{ - return __cxxabiv1::__unexpected_handler; -} - -//----- (0052A0C0) -------------------------------------------------------- -__int32 __cdecl std::set_unexpected(void (__noreturn *a1)(void)) -{ - void (__noreturn *v1)(void); // eax - - v1 = a1; - if ( !a1 ) - v1 = std::terminate; - return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__unexpected_handler, (__int32)v1); -} - -//----- (0052A0E0) -------------------------------------------------------- -int std::get_new_handler(void) -{ - return `anonymous namespace'::__new_handler; -} -// 53E498: using guessed type int `anonymous namespace'::__new_handler; - -//----- (0052A0F0) -------------------------------------------------------- -__int32 __cdecl std::set_new_handler(void (*a1)(void)) -{ - return _InterlockedExchange(&`anonymous namespace'::__new_handler, (__int32)a1); -} -// 53E498: using guessed type int `anonymous namespace'::__new_handler; - -//----- (0052A100) -------------------------------------------------------- -int std::__convert_from_v(int *const *a1, char *a2, int a3, char *a4, ...) -{ - char *v4; // ebx - unsigned int Size; // edi - void *Locale; // esi - int v8; // ebx - va_list va; // [esp+30h] [ebp+14h] BYREF - - va_start(va, a4); - v4 = setlocale(4, 0); - if ( *v4 == 67 && !v4[1] ) - return __mingw_vsnprintf((FILE *)a2, a3, a4, (int *)va); - Size = strlen(v4) + 1; - Locale = (void *)operator new[](Size); - memcpy(Locale, v4, Size); - setlocale(4, "C"); - v8 = __mingw_vsnprintf((FILE *)a2, a3, a4, (int *)va); - setlocale(4, (const char *)Locale); - operator delete[](Locale); - return v8; -} - -//----- (0052A1E0) -------------------------------------------------------- -void __cdecl std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - unsigned __int8 **a1, - char *a2, - int (__cdecl *a3)(void **, struct _Unwind_Exception *)) -{ - char *i; // edi - char *v4; // esi - unsigned __int8 **v5; // eax - int v6; // edi - unsigned __int8 **v7; // [esp+1Ch] [ebp-ACh] - void *v8[40]; // [esp+28h] [ebp-A0h] BYREF - - if ( a2 != (char *)a1 ) - { - for ( i = (char *)(a1 + 34); i != a2; i = v4 ) - { - v4 = i + 136; - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( - (int (__cdecl *)(int, int))a3, - (int)i, - (int)a1) ) - { - std::pair::pair(v8, i); - v5 = (unsigned __int8 **)(i + 136); - v6 = -252645135 * ((i - (char *)a1) >> 3); - while ( v6 > 0 ) - { - --v6; - v7 = v5 - 34; - std::pair::operator=(v5 - 34, (int)(v5 - 68)); - v5 = v7; - } - std::pair::operator=(a1, (int)v8); - std::pair::~pair(v8); - } - else - { - std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>( - i, - a3); - } - } - } -} - -//----- (0052A29C) -------------------------------------------------------- -int __cdecl std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - _DWORD *a1, - int a2, - int a3, - int (__cdecl *a4)(int, int)) -{ - int result; // eax - unsigned __int8 **i; // ebx - unsigned __int8 **v6; // eax - _DWORD *v7; // ebx - _DWORD *v8; // edi - char v9; // al - int v10; // ecx - _DWORD *v11; // edi - int v12; // ecx - char v13; // al - _DWORD *v14; // [esp+18h] [ebp-30h] - int v15; // [esp+18h] [ebp-30h] - int (__cdecl *v17)(int, int); // [esp+28h] [ebp-20h] BYREF - int (__cdecl *v18)(int, int); // [esp+2Ch] [ebp-1Ch] BYREF - - while ( 1 ) - { - result = a2 - (_DWORD)a1; - if ( a2 - (int)a1 <= 2176 ) - return result; - if ( !a3 ) - { - v17 = a4; - v18 = a4; - std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - (int)a1, - a2, - &v18); - for ( i = (unsigned __int8 **)a2; - ; - std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - (int)a1, - (int)i, - i, - &v17) ) - { - v6 = i; - i -= 34; - result = (char *)v6 - (char *)a1; - if ( result <= 136 ) - break; - } - return result; - } - v7 = a1 + 34; - --a3; - v14 = &a1[34 * ((-252645135 * (result >> 3)) >> 1)]; - v8 = (_DWORD *)(a2 - 136); - v9 = __gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( - a4, - (int)(a1 + 34), - (int)v14); - v10 = a2 - 136; - if ( v9 ) - { - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( - a4, - (int)v14, - v10) ) - goto LABEL_14; - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( - a4, - (int)(a1 + 34), - (int)v8) ) - goto LABEL_13; - } - else if ( !(unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( - a4, - (int)(a1 + 34), - v10) ) - { - if ( !(unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( - a4, - (int)v14, - (int)v8) ) - { -LABEL_14: - std::pair::swap(a1, v14); - goto LABEL_15; - } -LABEL_13: - std::pair::swap(a1, v8); - goto LABEL_15; - } - std::pair::swap(a1, a1 + 34); -LABEL_15: - v11 = (_DWORD *)a2; - while ( 1 ) - { - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( - a4, - (int)v7, - (int)a1) ) - goto LABEL_17; - v12 = (int)(v11 - 34); - do - { - v15 = v12; - v11 = (_DWORD *)v12; - v13 = __gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>::operator()<__gnu_cxx::__normal_iterator*,std::vector>>,__gnu_cxx::__normal_iterator*,std::vector>>>( - a4, - (int)a1, - v12); - v12 = v15 - 136; - } - while ( v13 ); - if ( v7 >= v11 ) - break; - std::pair::swap(v7, v11); -LABEL_17: - v7 += 34; - } - std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - v7, - a2, - a3, - a4); - a2 = (int)v7; - } -} - -//----- (0052A430) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::__ostream_insert>( - std::ostream::sentry *a1, - int a2, - int a3) -{ - int v3; // eax - char *v4; // edi - int v5; // ebx - bool v6; // zf - _DWORD *v7; // ecx - unsigned __int8 *v8; // eax - int v9; // ecx - int v11; // eax - int v12; // edx - int v13; // eax - _DWORD *v14; // ecx - unsigned __int8 *v15; // eax - int (__stdcall *v16)(unsigned __int8); // eax - int (__stdcall *v17)(unsigned __int8); // eax - int v18; // [esp+0h] [ebp-88h] - std::ostream *v19; // [esp+4h] [ebp-84h] - _BYTE *v20; // [esp+14h] [ebp-74h] - int v21; // [esp+18h] [ebp-70h] - _BYTE *v22; // [esp+1Ch] [ebp-6Ch] - int v23; // [esp+20h] [ebp-68h] - int v24; // [esp+20h] [ebp-68h] - unsigned __int8 v25; // [esp+24h] [ebp-64h] - unsigned __int8 v26; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] - char v29[4]; // [esp+68h] [ebp-20h] BYREF - _DWORD *v30; // [esp+6Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v29, a1, v19); - if ( v29[0] ) - { - v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v4 = (char *)a1 + v3; - v5 = *(_DWORD *)((char *)a1 + v3 + 8); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v3); - if ( a3 >= v5 ) - { - v11 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)lpuexcpt + 30) + 48))( - *((_DWORD *)lpuexcpt + 30), - a2, - a3); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - if ( a3 != v11 ) - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - goto LABEL_12; - } - goto LABEL_11; - } - v21 = *((_DWORD *)v4 + 3) & 0xB0; - if ( v21 == 32 ) - { - if ( *((_DWORD *)lpuexcpt + 5) ) - { -LABEL_11: - *((_DWORD *)lpuexcpt + 2) = 0; - goto LABEL_12; - } - } - else - { - v23 = v5 - a3; - if ( v4[117] ) - { - v25 = v4[116]; - } - else - { - v20 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v20 ) - std::__throw_bad_cast(); - if ( v20[28] ) - { - v25 = v20[61]; - } - else - { - std::ctype::_M_widen_init((int)v20); - v25 = 32; - v16 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v20 + 24); - if ( v16 != std::ctype::do_widen ) - v25 = ((int (__thiscall *)(_BYTE *, int))v16)(v20, 32); - } - *((_BYTE *)lpuexcpt + 116) = v25; - *((_BYTE *)lpuexcpt + 117) = 1; - v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); - } - do - { - v7 = *(_DWORD **)((char *)a1 + v3 + 120); - v8 = (unsigned __int8 *)v7[5]; - if ( (unsigned int)v8 < v7[6] ) - { - *v8 = v25; - ++v7[5]; - } - else if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v7 + 52))(v7, v25) == -1 ) - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - if ( !*((_DWORD *)lpuexcpt + 5) ) - goto LABEL_21; - goto LABEL_11; - } - v6 = v23-- == 1; - v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); - } - while ( !v6 ); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v3); - if ( *(_DWORD *)((char *)a1 + v3 + 20) ) - goto LABEL_11; - } -LABEL_21: - v12 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)lpuexcpt + 30) + 48))( - *((_DWORD *)lpuexcpt + 30), - a2, - a3); - v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v13); - if ( a3 != v12 ) - { - std::ios::clear((std::ostream::sentry *)((char *)a1 + v13), *(_DWORD *)((char *)a1 + v13 + 20) | 1); - v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v13); - } - if ( v21 == 32 && !*((_DWORD *)lpuexcpt + 5) ) - { - v24 = v5 - a3; - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v26 = *((_BYTE *)lpuexcpt + 116); - } - else - { - v22 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v22 ) - std::__throw_bad_cast(); - if ( v22[28] ) - { - v26 = v22[61]; - } - else - { - std::ctype::_M_widen_init((int)v22); - v26 = 32; - v17 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v22 + 24); - if ( v17 != std::ctype::do_widen ) - v26 = ((int (__thiscall *)(_BYTE *, int))v17)(v22, 32); - } - *((_BYTE *)lpuexcpt + 116) = v26; - *((_BYTE *)lpuexcpt + 117) = 1; - v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); - } - do - { - v14 = *(_DWORD **)((char *)a1 + v13 + 120); - v15 = (unsigned __int8 *)v14[5]; - if ( (unsigned int)v15 < v14[6] ) - { - *v15 = v26; - ++v14[5]; - } - else if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v14 + 52))(v14, v26) == -1 ) - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - goto LABEL_11; - } - v6 = v24-- == 1; - v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); - } - while ( !v6 ); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v13); - } - goto LABEL_11; - } -LABEL_12: - lpuexcpta = (struct _Unwind_Exception *)((char *)v30 + *(_DWORD *)(*v30 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v9 = *((_DWORD *)lpuexcpta + 30); - if ( v9 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 24))(v9, v18) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12)), - *(_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12) + 20) | 1); - } - } - return a1; -} -// 52A46F: variable 'v19' is possibly undefined -// 52A59A: variable 'v18' is possibly undefined -// 52A430: using guessed type char var_20[4]; - -//----- (0052A970) -------------------------------------------------------- -int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3) -{ - char *v3; // esi - int v4; // edi - struct _Unwind_Exception *v5; // edx - unsigned int v6; // eax - _DWORD *v7; // ecx - unsigned int v8; // eax - __int16 v9; // ax - int v10; // ecx - int v12; // eax - int v13; // eax - unsigned int v14; // eax - unsigned __int16 v15; // ax - _DWORD *v16; // ecx - unsigned int v17; // eax - int v18; // ecx - int v19; // ecx - int v20; // [esp+0h] [ebp-88h] - int v21; // [esp+18h] [ebp-70h] - int v22; // [esp+20h] [ebp-68h] - int v23; // [esp+20h] [ebp-68h] - unsigned __int16 v24; // [esp+24h] [ebp-64h] - unsigned __int16 v25; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-60h] - int v29; // [esp+68h] [ebp-20h] BYREF - _DWORD *v30; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v29, a1); - if ( (_BYTE)v29 ) - { - v3 = (char *)a1 + *(_DWORD *)(*a1 - 12); - v4 = *((_DWORD *)v3 + 2); - lpuexcpt = (struct _Unwind_Exception *)v3; - v5 = (struct _Unwind_Exception *)v3; - if ( a3 >= v4 ) - { - v12 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v3 + 30) + 48))(*((_DWORD *)v3 + 30), a2, a3); - v5 = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - if ( a3 != v12 ) - { - std::wios::clear( - (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); -LABEL_20: - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; - goto LABEL_12; - } - goto LABEL_11; - } - v21 = *((_DWORD *)v3 + 3) & 0xB0; - if ( v21 == 32 ) - { - if ( *((_DWORD *)v3 + 5) ) - { -LABEL_11: - *((_DWORD *)v5 + 2) = 0; - goto LABEL_12; - } - } - else - { - v22 = v4 - a3; - if ( v3[118] ) - { - v24 = *((_WORD *)v3 + 58); - } - else - { - v18 = *((_DWORD *)v3 + 31); - if ( !v18 ) - std::__throw_bad_cast(); - v24 = (*(int (__fastcall **)(int, char *, int))(*(_DWORD *)v18 + 40))(v18, v3, 32); - *((_WORD *)v3 + 58) = v24; - v3[118] = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - } - do - { - v7 = (_DWORD *)*((_DWORD *)lpuexcpt + 30); - v5 = lpuexcpt; - v8 = v7[5]; - if ( v8 < v7[6] ) - { - v6 = v8 + 2; - *(_WORD *)(v6 - 2) = v24; - v7[5] = v6; - if ( v24 == 0xFFFF ) - goto LABEL_10; - } - else - { - v9 = (*(int (__fastcall **)(_DWORD *, struct _Unwind_Exception *, _DWORD))(*v7 + 52))(v7, lpuexcpt, v24); - lpuexcpt = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = lpuexcpt; - if ( v9 == -1 ) - { -LABEL_10: - std::wios::clear(lpuexcpt, *((_DWORD *)lpuexcpt + 5) | 1); - v5 = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - if ( !*((_DWORD *)v5 + 5) ) - goto LABEL_22; - goto LABEL_11; - } - } - --v22; - } - while ( v22 ); - if ( *((_DWORD *)lpuexcpt + 5) ) - goto LABEL_11; - } -LABEL_22: - v13 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v5 + 30) + 48))(*((_DWORD *)v5 + 30), a2, a3); - lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = lpuexcptb; - if ( a3 != v13 ) - { - std::wios::clear( - (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = lpuexcptb; - } - if ( v21 == 32 && !*((_DWORD *)lpuexcptb + 5) ) - { - v23 = v4 - a3; - if ( *((_BYTE *)lpuexcptb + 118) ) - { - v25 = *((_WORD *)lpuexcptb + 58); - } - else - { - v19 = *((_DWORD *)lpuexcptb + 31); - if ( !v19 ) - std::__throw_bad_cast(); - v25 = (*(int (__fastcall **)(int, struct _Unwind_Exception *, int))(*(_DWORD *)v19 + 40))(v19, v5, 32); - *((_WORD *)lpuexcptb + 58) = v25; - *((_BYTE *)lpuexcptb + 118) = 1; - lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - } - while ( 1 ) - { - v16 = (_DWORD *)*((_DWORD *)lpuexcptb + 30); - v5 = lpuexcptb; - v17 = v16[5]; - if ( v17 < v16[6] ) - { - v14 = v17 + 2; - *(_WORD *)(v14 - 2) = v25; - v16[5] = v14; - v15 = v25; - } - else - { - v15 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v16 + 52))(v16, v25); - lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = lpuexcptb; - } - if ( v15 == 0xFFFF ) - break; - if ( !--v23 ) - goto LABEL_11; - } - std::wios::clear(lpuexcptb, *((_DWORD *)lpuexcptb + 5) | 1); - goto LABEL_20; - } - goto LABEL_11; - } -LABEL_12: - lpuexcpta = (struct _Unwind_Exception *)((char *)v30 + *(_DWORD *)(*v30 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v10 = *((_DWORD *)lpuexcpta + 30); - if ( v10 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 24))(v10, v20) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12)), - *(_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12) + 20) | 1); - } - } - return a1; -} -// 52AAEF: variable 'v20' is possibly undefined - -//----- (0052AE50) -------------------------------------------------------- -int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) -{ - char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF - - return std::__copy_streambufs_eof>(a1, a2, v3); -} -// 52AE50: using guessed type char var_D[13]; - -//----- (0052AE80) -------------------------------------------------------- -int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) -{ - char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF - - return std::__copy_streambufs_eof>(a1, a2, v3); -} -// 52AE80: using guessed type char var_D[13]; - -//----- (0052AEB0) -------------------------------------------------------- -int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3) -{ - return (unsigned __int8)std::__verify_grouping_impl(a1, a2, *(const char **)a3, *(_DWORD *)(a3 + 4)); -} - -//----- (0052AF50) -------------------------------------------------------- -int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3) -{ - return std::__verify_grouping_impl(a1, a2, *a3, *((_DWORD *)*a3 - 3)); -} - -//----- (0052AF80) -------------------------------------------------------- -void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden this) -{ - if ( (_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec ) - return &`anonymous namespace'::__io_category_instance(void)::__ec; - if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) - { - __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); - atexit((_PVFV)__tcf_0_7); - } - return &`anonymous namespace'::__io_category_instance(void)::__ec; -} -// 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); - -//----- (0052AFE0) -------------------------------------------------------- -int __cdecl std::_Rb_tree_decrement(_DWORD *a1) -{ - int v1; // eax - int v2; // edx - int v4; // eax - - if ( !*a1 && a1 == *(_DWORD **)(a1[1] + 4) ) - return a1[3]; - v1 = a1[2]; - if ( v1 ) - { - do - { - v2 = v1; - v1 = *(_DWORD *)(v1 + 12); - } - while ( v1 ); - return v2; - } - v2 = a1[1]; - if ( a1 != *(_DWORD **)(v2 + 8) ) - return v2; - do - { - v4 = v2; - v2 = *(_DWORD *)(v2 + 4); - } - while ( v4 == *(_DWORD *)(v2 + 8) ); - return v2; -} - -//----- (0052B040) -------------------------------------------------------- -int __cdecl std::_Rb_tree_decrement(_DWORD *a1) -{ - int v1; // eax - int v2; // edx - int v4; // eax - - if ( !*a1 && a1 == *(_DWORD **)(a1[1] + 4) ) - return a1[3]; - v1 = a1[2]; - if ( v1 ) - { - do - { - v2 = v1; - v1 = *(_DWORD *)(v1 + 12); - } - while ( v1 ); - return v2; - } - v2 = a1[1]; - if ( a1 != *(_DWORD **)(v2 + 8) ) - return v2; - do - { - v4 = v2; - v2 = *(_DWORD *)(v2 + 4); - } - while ( *(_DWORD *)(v2 + 8) == v4 ); - return v2; -} - -//----- (0052B0A0) -------------------------------------------------------- -int __cdecl std::_Rb_tree_increment(int a1) -{ - int v1; // eax - int v2; // edx - int v4; // eax - int v5; // edx - - v1 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - do - { - v2 = v1; - v1 = *(_DWORD *)(v1 + 8); - } - while ( v1 ); - return v2; - } - v4 = *(_DWORD *)(a1 + 4); - if ( a1 != *(_DWORD *)(v4 + 12) ) - return *(_DWORD *)(a1 + 4); - do - { - v5 = v4; - v4 = *(_DWORD *)(v4 + 4); - } - while ( *(_DWORD *)(v4 + 12) == v5 ); - if ( v4 != *(_DWORD *)(v5 + 12) ) - return v4; - return v5; -} - -//----- (0052B0F0) -------------------------------------------------------- -int __cdecl std::_Rb_tree_increment(int a1) -{ - int v1; // eax - int v2; // edx - int v4; // eax - int v5; // edx - - v1 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - do - { - v2 = v1; - v1 = *(_DWORD *)(v1 + 8); - } - while ( v1 ); - return v2; - } - v4 = *(_DWORD *)(a1 + 4); - if ( a1 != *(_DWORD *)(v4 + 12) ) - return *(_DWORD *)(a1 + 4); - do - { - v5 = v4; - v4 = *(_DWORD *)(v4 + 4); - } - while ( *(_DWORD *)(v4 + 12) == v5 ); - if ( v4 != *(_DWORD *)(v5 + 12) ) - return v4; - return v5; -} - -//----- (0052B140) -------------------------------------------------------- -bool std::uncaught_exception(void) -{ - return __cxa_get_globals()[1] != 0; -} - -//----- (0052B160) -------------------------------------------------------- -int std::uncaught_exceptions(void) -{ - return __cxa_get_globals()[1]; -} - -//----- (0052B170) -------------------------------------------------------- -int __cdecl std::_Rb_tree_black_count(_DWORD *a1, _DWORD *a2) -{ - _DWORD *v2; // eax - int v3; // edx - - v2 = a1; - v3 = 0; - if ( a1 ) - { - while ( 1 ) - { - v3 += *v2 == 1; - if ( v2 == a2 ) - break; - v2 = (_DWORD *)v2[1]; - } - } - return v3; -} - -//----- (0052B1A0) -------------------------------------------------------- -int __cdecl std::_Rb_tree_rotate_left(int a1, _DWORD *a2) -{ - int result; // eax - int v3; // edx - int v4; // ecx - int v5; // ecx - - result = a1; - v3 = *(_DWORD *)(a1 + 12); - v4 = *(_DWORD *)(v3 + 8); - *(_DWORD *)(a1 + 12) = v4; - if ( v4 ) - *(_DWORD *)(v4 + 4) = a1; - v5 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v3 + 4) = v5; - if ( a1 == *a2 ) - { - *a2 = v3; - *(_DWORD *)(v3 + 8) = a1; - *(_DWORD *)(a1 + 4) = v3; - } - else - { - if ( a1 == *(_DWORD *)(v5 + 8) ) - *(_DWORD *)(v5 + 8) = v3; - else - *(_DWORD *)(v5 + 12) = v3; - *(_DWORD *)(v3 + 8) = a1; - *(_DWORD *)(a1 + 4) = v3; - } - return result; -} - -//----- (0052B200) -------------------------------------------------------- -int __cdecl std::_Rb_tree_rotate_right(int a1, _DWORD *a2) -{ - int result; // eax - int v3; // edx - int v4; // ecx - int v5; // ecx - - result = a1; - v3 = *(_DWORD *)(a1 + 8); - v4 = *(_DWORD *)(v3 + 12); - *(_DWORD *)(a1 + 8) = v4; - if ( v4 ) - *(_DWORD *)(v4 + 4) = a1; - v5 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v3 + 4) = v5; - if ( a1 == *a2 ) - { - *a2 = v3; - *(_DWORD *)(v3 + 12) = a1; - *(_DWORD *)(a1 + 4) = v3; - } - else - { - if ( a1 == *(_DWORD *)(v5 + 12) ) - *(_DWORD *)(v5 + 12) = v3; - else - *(_DWORD *)(v5 + 8) = v3; - *(_DWORD *)(v3 + 12) = a1; - *(_DWORD *)(a1 + 4) = v3; - } - return result; -} - -//----- (0052B260) -------------------------------------------------------- -int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) -{ - _BYTE *v3; // ecx - unsigned int v4; // ebx - int v5; // eax - int v6; // edi - int v7; // ebx - int v8; // eax - _BYTE *v9; // ecx - unsigned int v10; // ecx - - v3 = (_BYTE *)a1[2]; - v4 = a1[3]; - *a3 = 1; - if ( (unsigned int)v3 >= v4 ) - { - v6 = 0; - v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v5 == -1 ) - return v6; - v4 = a1[3]; - v3 = (_BYTE *)a1[2]; - } - else - { - LOBYTE(v5) = *v3; - } - v6 = 0; - while ( 1 ) - { - v7 = v4 - (_DWORD)v3; - if ( v7 > 1 ) - break; - while ( 1 ) - { - v9 = (_BYTE *)a2[5]; - if ( (unsigned int)v9 >= a2[6] ) - { - if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, (unsigned __int8)v5) == -1 ) - goto LABEL_15; - } - else - { - *v9 = v5; - ++a2[5]; - } - v10 = a1[2]; - v4 = a1[3]; - ++v6; - if ( v10 >= v4 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1) == -1 ) - return v6; - v3 = (_BYTE *)a1[2]; - v4 = a1[3]; - } - else - { - v3 = (_BYTE *)(v10 + 1); - a1[2] = v3; - } - if ( v4 > (unsigned int)v3 ) - break; -LABEL_6: - v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v5 == -1 ) - return v6; - v3 = (_BYTE *)a1[2]; - v7 = a1[3] - (_DWORD)v3; - if ( v7 > 1 ) - goto LABEL_5; - } - LOBYTE(v5) = *v3; - } -LABEL_5: - v8 = (*(int (__thiscall **)(_DWORD *, _BYTE *, int))(*a2 + 48))(a2, v3, v7); - a1[2] += v8; - v6 += v8; - if ( v8 >= v7 ) - goto LABEL_6; -LABEL_15: - *a3 = 0; - return v6; -} - -//----- (0052B360) -------------------------------------------------------- -int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) -{ - unsigned __int16 *v3; // eax - int v4; // ecx - int v5; // edi - int v6; // esi - int v7; // eax - unsigned int v8; // edx - __int16 *v9; // eax - _WORD *v10; // esi - __int16 v11; // dx - unsigned __int16 *v12; // eax - - *a3 = 1; - v3 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v3 >= a1[3] ) - v4 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v4 = *v3; - v5 = 0; - while ( (_WORD)v4 != 0xFFFF ) - { - v8 = a1[3]; - v9 = (__int16 *)a1[2]; - if ( (int)(v8 - (_DWORD)v9) > 2 ) - { - v6 = (int)(v8 - (_DWORD)v9) >> 1; - v7 = (*(int (__thiscall **)(_DWORD *, _DWORD, int))(*a2 + 48))(a2, a1[2], v6); - a1[2] += 2 * v7; - v5 += v7; - if ( v7 < v6 ) - goto LABEL_15; - goto LABEL_6; - } - v10 = (_WORD *)a2[5]; - if ( (unsigned int)v10 >= a2[6] ) - { - if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v4) == 0xFFFF ) - { -LABEL_15: - *a3 = 0; - return v5; - } - v9 = (__int16 *)a1[2]; - ++v5; - if ( (unsigned int)v9 < a1[3] ) - { -LABEL_11: - v11 = *v9; - a1[2] = v9 + 1; - goto LABEL_12; - } - } - else - { - *v10 = v4; - ++v5; - a2[5] = v10 + 1; - if ( (unsigned int)v9 < v8 ) - goto LABEL_11; - } - v11 = (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_12: - if ( v11 == -1 ) - return v5; - v12 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v12 < a1[3] ) - { - v4 = *v12; - continue; - } -LABEL_6: - v4 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - } - return v5; -} - -//----- (0052B470) -------------------------------------------------------- -void __cdecl std::__destroy_ios_failure(std::exception *a1) -{ - void (__cdecl *v1)(std::ios_base::failure *__hidden); // eax - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v1 = **(void (__cdecl ***)(std::ios_base::failure *__hidden))a1; - if ( v1 == std::ios_base::failure::~failure ) - { - v2 = _CRT_MT; - v3 = *((_DWORD *)a1 + 1); - *(_DWORD *)a1 = &off_55FDEC; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_4; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_4: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); - } - else - { - ((void (__fastcall *)(std::exception *))v1)(a1); - } -} -// 53E1E4: using guessed type int _CRT_MT; -// 55FDEC: using guessed type void (__cdecl *off_55FDEC)(std::ios_base::failure *__hidden this); -// 52B470: using guessed type int var_D[3]; - -//----- (0052B4F0) -------------------------------------------------------- -int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4) -{ - const char *v4; // ecx - int v5; // eax - unsigned int v6; // ebp - unsigned int v7; // edx - char v8; // bl - char v9; // cl - bool v10; // cl - bool v11; // di - char v12; // bl - char v13; // dl - char v15; // [esp+3h] [ebp-11h] - unsigned __int8 v16; // [esp+3h] [ebp-11h] - - v4 = a3; - v5 = a4 - 1; - v6 = a2 - 1; - if ( a2 - 1 > a4 - 1 ) - v6 = a4 - 1; - if ( v6 ) - { - v7 = 0; - do - { - v8 = a3[v5--]; - v9 = a1[v7++]; - v15 = v9; - v10 = v8 != v9; - v11 = v10; - } - while ( v7 < v6 && !v10 ); - v4 = a3; - v16 = v8 == v15; - } - else - { - v16 = 1; - v11 = 0; - } - v12 = a1[v6]; - if ( v5 && !v11 ) - { - do - v13 = v4[v5--]; - while ( v5 && v13 == v12 ); - v16 = v13 == v12; - } - if ( (unsigned __int8)(v12 - 1) <= 0x7Du ) - v16 &= *v4 <= (unsigned __int8)v12; - return v16; -} - -//----- (0052B5C0) -------------------------------------------------------- -void __cdecl std::__construct_ios_failure(_DWORD *a1, char *a2) -{ - int v2; // ecx - int v3; // eax - const std::string *v4; // [esp+4h] [ebp-28h] - int v5; // [esp+1Ah] [ebp-12h] BYREF - _DWORD v6[4]; // [esp+1Ch] [ebp-10h] BYREF - - std::string::string(v6, a2, (int)&v5); - std::ios_base::failure::failure(a1, (std::ios_base::failure *)v6, v4); - v2 = v6[0]; - if ( !_CRT_MT ) - { - v3 = *(_DWORD *)(v6[0] - 4); - *(_DWORD *)(v6[0] - 4) = v3 - 1; - if ( v3 > 0 ) - return; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v2 - 12), (int)&v5 + 1); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v6[0] - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 52B5E8: variable 'v4' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (0052B640) -------------------------------------------------------- -bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *a1) -{ - return std::type_info::operator==(a1, (int)&`typeinfo for'std::ios_base::failure); -} -// 55BD7C: using guessed type int *`typeinfo for'std::ios_base::failure; - -//----- (0052B660) -------------------------------------------------------- -void __noreturn std::__throw_out_of_range_fmt(char *Str, ...) -{ - size_t v1; // eax - unsigned int v2; // edx - int v3; // eax - void *v4; // esp - void *v5; // esp - std::out_of_range *exception; // eax - std::out_of_range *v7; // ecx - const char *v8; // [esp+4h] [ebp-54h] - char v9[4]; // [esp+10h] [ebp-48h] BYREF - std::out_of_range *v10; // [esp+18h] [ebp-40h] - va_list va; // [esp+64h] [ebp+Ch] BYREF - - va_start(va, Str); - v1 = strlen(Str); - v2 = v1 + 512; - v3 = 16 * ((v1 + 539) >> 4); - v4 = alloca(v3); - v5 = alloca(v3); - v10 = (std::out_of_range *)v9; - __gnu_cxx::__snprintf_lite(v9, v2, Str, va); - exception = (std::out_of_range *)__cxa_allocate_exception(8u); - v7 = v10; - v10 = exception; - std::out_of_range::out_of_range(exception, v7, v8); - __cxa_throw( - v10, - (struct type_info *)&`typeinfo for'std::out_of_range, - (void (__cdecl *)(void *))std::out_of_range::~out_of_range); -} -// 52B6FD: variable 'v8' is possibly undefined -// 55BEE4: using guessed type int *`typeinfo for'std::out_of_range; -// 52B660: using guessed type char anonymous_0[4]; - -//----- (0052B750) -------------------------------------------------------- -void __cdecl std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>( - _DWORD *a1, - int (__cdecl *a2)(void **, struct _Unwind_Exception *)) -{ - char v2; // al - int v3; // [esp+10h] [ebp-D8h] - unsigned __int8 **v4; // [esp+14h] [ebp-D4h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-D0h] - void *v6[36]; // [esp+58h] [ebp-90h] BYREF - - std::pair::pair(v6, a1); - lpuexcpt = (struct _Unwind_Exception *)(a1 - 34); - while ( 1 ) - { - v4 = (unsigned __int8 **)((char *)lpuexcpt + 136); - v3 = (int)lpuexcpt; - v2 = a2(v6, lpuexcpt); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt - 136); - if ( !v2 ) - break; - std::pair::operator=(v4, v3); - } - std::pair::operator=(v4, (int)v6); - std::pair::~pair(v6); -} - -//----- (0052B870) -------------------------------------------------------- -int *__cdecl std::_Rb_tree_rebalance_for_erase(int *a1, _DWORD *a2) -{ - int *v2; // ebp - int *v3; // edi - int *v4; // eax - int *v5; // ecx - int *v6; // edx - int *v7; // eax - int *v8; // ebp - int v9; // edi - int v10; // edi - int *v11; // ebp - _DWORD *v12; // edi - int *v13; // ecx - int *v14; // ebp - _DWORD *v15; // edi - int *v16; // ebp - int v17; // ecx - int v18; // ecx - int v20; // ecx - int *v21; // ecx - int *v22; // ebp - int v23; // edi - int *v24; // edi - int v25; // edi - int *v26; // edi - int *v27; // ecx - int *v28; // edi - _DWORD *v29; // edi - int v30; // edi - int v31; // edi - int *v32; // ebp - _DWORD *v33; // edi - int v34; // ecx - int v35; // ecx - _DWORD *v36; // edi - int v37; // edi - int v38; // edi - _DWORD *v39; // edi - _DWORD *v40; // [esp+0h] [ebp-14h] - _DWORD *v41; // [esp+0h] [ebp-14h] - - v2 = (int *)a1[2]; - v3 = (int *)a1[3]; - if ( !v2 ) - goto LABEL_76; - if ( !v3 ) - { - v7 = (int *)a1[1]; - goto LABEL_44; - } - v4 = (int *)a1[3]; - do - { - v5 = v4; - v4 = (int *)v4[2]; - } - while ( v4 ); - v6 = (int *)v5[3]; - if ( v5 == a1 ) - { - v3 = (int *)v5[3]; -LABEL_76: - v7 = (int *)a1[1]; - if ( !v3 ) - { - v6 = 0; - goto LABEL_45; - } - v2 = v3; -LABEL_44: - v2[1] = (int)v7; - v6 = v2; -LABEL_45: - if ( (int *)a2[1] == a1 ) - { - a2[1] = v6; - } - else - { - v20 = a1[1]; - if ( *(int **)(v20 + 8) == a1 ) - *(_DWORD *)(v20 + 8) = v6; - else - *(_DWORD *)(v20 + 12) = v6; - } - if ( (int *)a2[2] == a1 ) - { - v27 = v6; - if ( a1[3] ) - { - do - { - v28 = v27; - v27 = (int *)v27[2]; - } - while ( v27 ); - a2[2] = v28; - } - else - { - a2[2] = a1[1]; - } - } - v10 = *a1; - if ( (int *)a2[3] == a1 ) - { - v21 = v6; - if ( a1[2] ) - { - do - { - v22 = v21; - v21 = (int *)v21[3]; - } - while ( v21 ); - a2[3] = v22; - } - else - { - a2[3] = a1[1]; - } - } - goto LABEL_14; - } - v2[1] = (int)v5; - v7 = v3; - v5[2] = (int)v2; - if ( v5 != v3 ) - { - v7 = (int *)v5[1]; - v8 = v7; - if ( v6 ) - { - v6[1] = (int)v7; - v8 = (int *)v5[1]; - } - v8[2] = (int)v6; - v5[3] = (int)v3; - *(_DWORD *)(a1[3] + 4) = v5; - } - if ( (int *)a2[1] == a1 ) - { - a2[1] = v5; - v9 = a1[1]; - } - else - { - v9 = a1[1]; - if ( *(int **)(v9 + 8) == a1 ) - *(_DWORD *)(v9 + 8) = v5; - else - *(_DWORD *)(v9 + 12) = v5; - } - v5[1] = v9; - v10 = *v5; - *v5 = *a1; - *a1 = v10; -LABEL_14: - if ( !v10 ) - return a1; - if ( (int *)a2[1] == v6 ) - { -LABEL_41: - if ( v6 ) - goto LABEL_67; - return a1; - } - while ( 1 ) - { - if ( v6 && *v6 != 1 ) - goto LABEL_67; - v13 = (int *)v7[2]; - if ( v13 != v6 ) - break; - v13 = (int *)v7[3]; - v14 = (int *)v13[2]; - if ( !*v13 ) - { - *v13 = 1; - *v7 = 0; - v7[3] = (int)v14; - if ( v14 ) - v14[1] = (int)v7; - v25 = v7[1]; - v13[1] = v25; - if ( v7 == (int *)a2[1] ) - { - a2[1] = v13; - v26 = (int *)v7[3]; - } - else if ( v7 == *(int **)(v25 + 8) ) - { - *(_DWORD *)(v25 + 8) = v13; - v26 = v14; - } - else - { - *(_DWORD *)(v25 + 12) = v13; - v26 = (int *)v7[3]; - } - v13[2] = (int)v7; - v14 = (int *)v26[2]; - v7[1] = (int)v13; - v13 = v26; - } - if ( v14 && *v14 != 1 ) - { - v36 = (_DWORD *)v13[3]; - v40 = v36; - if ( !v36 || *v36 == 1 ) - { - v37 = v14[3]; - *v14 = 1; - *v13 = 0; - v13[2] = v37; - if ( v37 ) - *(_DWORD *)(v37 + 4) = v13; - v38 = v13[1]; - v14[1] = v38; - if ( v13 == (int *)a2[1] ) - { - a2[1] = v14; - } - else if ( v13 == *(int **)(v38 + 12) ) - { - *(_DWORD *)(v38 + 12) = v14; - } - else - { - *(_DWORD *)(v38 + 8) = v14; - } - v14[3] = (int)v13; - v13[1] = (int)v14; - v16 = (int *)v7[3]; - v39 = (_DWORD *)v16[3]; - *v16 = *v7; - v40 = v39; - *v7 = 1; - if ( !v39 ) - goto LABEL_35; - goto LABEL_34; - } -LABEL_33: - v16 = (int *)v7[3]; - *v13 = *v7; - *v7 = 1; -LABEL_34: - *v40 = 1; -LABEL_35: - v17 = v16[2]; - v7[3] = v17; - if ( v17 ) - *(_DWORD *)(v17 + 4) = v7; - v18 = v7[1]; - v16[1] = v18; - if ( v7 == (int *)a2[1] ) - { - a2[1] = v16; - } - else if ( v7 == *(int **)(v18 + 8) ) - { - *(_DWORD *)(v18 + 8) = v16; - } - else - { - *(_DWORD *)(v18 + 12) = v16; - } - v16[2] = (int)v7; - v7[1] = (int)v16; - goto LABEL_41; - } - v15 = (_DWORD *)v13[3]; - if ( v15 && *v15 != 1 ) - { - v40 = (_DWORD *)v13[3]; - goto LABEL_33; - } -LABEL_22: - *v13 = 0; - v6 = v7; - if ( (int *)a2[1] == v7 ) - goto LABEL_68; - v7 = (int *)v7[1]; - } - v11 = (int *)v13[3]; - if ( !*v13 ) - { - *v13 = 1; - *v7 = 0; - v7[2] = (int)v11; - if ( v11 ) - v11[1] = (int)v7; - v23 = v7[1]; - v13[1] = v23; - if ( v7 == (int *)a2[1] ) - { - a2[1] = v13; - v24 = (int *)v7[2]; - } - else if ( v7 == *(int **)(v23 + 12) ) - { - *(_DWORD *)(v23 + 12) = v13; - v24 = v11; - } - else - { - *(_DWORD *)(v23 + 8) = v13; - v24 = (int *)v7[2]; - } - v13[3] = (int)v7; - v11 = (int *)v24[3]; - v7[1] = (int)v13; - v13 = v24; - } - if ( !v11 || *v11 == 1 ) - { - v12 = (_DWORD *)v13[2]; - if ( !v12 || *v12 == 1 ) - goto LABEL_22; - v41 = (_DWORD *)v13[2]; -LABEL_91: - v32 = (int *)v7[2]; - *v13 = *v7; - *v7 = 1; - goto LABEL_92; - } - v29 = (_DWORD *)v13[2]; - v41 = v29; - if ( v29 && *v29 != 1 ) - goto LABEL_91; - v30 = v11[2]; - *v11 = 1; - *v13 = 0; - v13[3] = v30; - if ( v30 ) - *(_DWORD *)(v30 + 4) = v13; - v31 = v13[1]; - v11[1] = v31; - if ( v13 == (int *)a2[1] ) - { - a2[1] = v11; - } - else if ( v13 == *(int **)(v31 + 8) ) - { - *(_DWORD *)(v31 + 8) = v11; - } - else - { - *(_DWORD *)(v31 + 12) = v11; - } - v11[2] = (int)v13; - v13[1] = (int)v11; - v32 = (int *)v7[2]; - v33 = (_DWORD *)v32[2]; - *v32 = *v7; - v41 = v33; - *v7 = 1; - if ( v33 ) -LABEL_92: - *v41 = 1; - v34 = v32[3]; - v7[2] = v34; - if ( v34 ) - *(_DWORD *)(v34 + 4) = v7; - v35 = v7[1]; - v32[1] = v35; - if ( v7 == (int *)a2[1] ) - { - a2[1] = v32; - } - else if ( v7 == *(int **)(v35 + 12) ) - { - *(_DWORD *)(v35 + 12) = v32; - } - else - { - *(_DWORD *)(v35 + 8) = v32; - } - v32[3] = (int)v7; - v7[1] = (int)v32; - if ( !v6 ) - return a1; -LABEL_67: - v7 = v6; -LABEL_68: - *v7 = 1; - return a1; -} - -//----- (0052BD00) -------------------------------------------------------- -_DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4) -{ - _DWORD *v4; // ecx - _DWORD *v5; // esi - _DWORD *result; // eax - _DWORD *v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ebx - _DWORD *v10; // ebp - int v11; // edx - int v12; // ebx - int v13; // ebx - int v14; // edx - int v15; // edx - int v16; // esi - int v17; // ebx - _DWORD *v18; // ebx - int v19; // ebx - _DWORD *v20; // ebx - _DWORD *v21; // esi - - v4 = a2; - a2[1] = a3; - a2[2] = 0; - a2[3] = 0; - *a2 = 0; - if ( !a1 ) - { - a3[3] = a2; - if ( (_DWORD *)a4[3] == a3 ) - { - v5 = (_DWORD *)a4[1]; - a4[3] = a2; - result = v5; -LABEL_6: - if ( a2 == v5 ) - { -LABEL_17: - *result = 1; - return result; - } - while ( 1 ) - { - while ( 1 ) - { - v7 = (_DWORD *)v4[1]; - if ( *v7 ) - goto LABEL_17; - v8 = (_DWORD *)v7[1]; - v9 = (_DWORD *)v8[2]; - if ( v7 != v9 ) - { - if ( !v9 || *v9 ) - { - if ( (_DWORD *)v7[2] == v4 ) - { - v16 = v4[3]; - v17 = v7[1]; - v7[2] = v16; - if ( v16 ) - { - *(_DWORD *)(v16 + 4) = v7; - v17 = v7[1]; - } - v4[1] = v17; - if ( v7 == (_DWORD *)a4[1] ) - { - a4[1] = v4; - } - else if ( v7 == *(_DWORD **)(v17 + 12) ) - { - *(_DWORD *)(v17 + 12) = v4; - } - else - { - *(_DWORD *)(v17 + 8) = v4; - } - v18 = v4; - v4[3] = v7; - v7[1] = v4; - v4 = v7; - v7 = v18; - } - *v7 = 1; - v11 = v8[3]; - *v8 = 0; - v12 = *(_DWORD *)(v11 + 8); - v8[3] = v12; - if ( v12 ) - *(_DWORD *)(v12 + 4) = v8; - v13 = v8[1]; - *(_DWORD *)(v11 + 4) = v13; - if ( v8 == (_DWORD *)a4[1] ) - { - a4[1] = v11; - } - else if ( v8 == *(_DWORD **)(v13 + 8) ) - { - *(_DWORD *)(v13 + 8) = v11; - } - else - { - *(_DWORD *)(v13 + 12) = v11; - } - *(_DWORD *)(v11 + 8) = v8; - v8[1] = v11; - v5 = (_DWORD *)a4[1]; - } - else - { - *v7 = 1; - v4 = v8; - *v9 = 1; - *v8 = 0; - } - goto LABEL_11; - } - v10 = (_DWORD *)v8[3]; - if ( !v10 || *v10 ) - break; - v4 = (_DWORD *)v7[1]; - *v7 = 1; - *v10 = 1; - *v8 = 0; - result = v5; - if ( v5 == v4 ) - goto LABEL_17; - } - if ( (_DWORD *)v7[3] == v4 ) - break; -LABEL_28: - *v7 = 1; - v14 = v9[3]; - *v8 = 0; - v8[2] = v14; - if ( v14 ) - *(_DWORD *)(v14 + 4) = v8; - v15 = v8[1]; - v9[1] = v15; - if ( v8 == (_DWORD *)a4[1] ) - { - a4[1] = v9; - } - else if ( v8 == *(_DWORD **)(v15 + 12) ) - { - *(_DWORD *)(v15 + 12) = v9; - } - else - { - *(_DWORD *)(v15 + 8) = v9; - } - v9[3] = v8; - v8[1] = v9; - v5 = (_DWORD *)a4[1]; -LABEL_11: - result = v5; - if ( v5 == v4 ) - goto LABEL_17; - } - v19 = v4[2]; - v7[3] = v19; - if ( v19 ) - { - *(_DWORD *)(v19 + 4) = v7; - v20 = (_DWORD *)v7[1]; - v4[1] = v20; - if ( v7 != (_DWORD *)a4[1] ) - { - if ( v7 != (_DWORD *)v20[2] ) - { - v20[3] = v4; -LABEL_48: - v21 = v4; - v4[2] = v7; - v9 = (_DWORD *)v8[2]; - v7[1] = v4; - v4 = v7; - v7 = v21; - goto LABEL_28; - } -LABEL_52: - v20[2] = v4; - goto LABEL_48; - } - } - else - { - v4[1] = v8; - v20 = v8; - if ( v7 != (_DWORD *)a4[1] ) - goto LABEL_52; - } - a4[1] = v4; - goto LABEL_48; - } -LABEL_5: - v5 = (_DWORD *)a4[1]; - result = v5; - goto LABEL_6; - } - a3[2] = a2; - if ( a4 != a3 ) - { - if ( (_DWORD *)a4[2] == a3 ) - a4[2] = a2; - goto LABEL_5; - } - result = a2; - a4[1] = a2; - a4[3] = a2; - *a2 = 1; - return result; -} - -//----- (0052BF60) -------------------------------------------------------- -_DWORD *__cdecl std::ws>(_DWORD *a1) -{ - _BYTE *v1; // eax - unsigned int v2; // eax - unsigned int v3; // edx - const std::locale *v5; // [esp+4h] [ebp-68h] - _DWORD *v6; // [esp+14h] [ebp-58h] - _DWORD *v7; // [esp+18h] [ebp-54h] - _DWORD *v8[4]; // [esp+5Ch] [ebp-10h] BYREF - - std::locale::locale( - (volatile signed __int32 **)v8, - (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), - v5); - v7 = std::use_facet>((int)v8); - std::locale::~locale(v8); - v6 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v1 = (_BYTE *)v6[2]; - if ( (unsigned int)v1 < v6[3] ) - goto LABEL_5; -LABEL_11: - v1 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); - if ( v1 == (_BYTE *)-1 ) - { -LABEL_9: - std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); - } - else - { - while ( (*(_BYTE *)(v7[6] + 2 * (unsigned __int8)v1) & 0x20) != 0 ) - { - v2 = v6[2]; - v3 = v6[3]; - if ( v2 < v3 ) - { - v1 = (_BYTE *)(v2 + 1); - v6[2] = v1; - } - else - { - if ( (*(int (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == -1 ) - goto LABEL_9; - v1 = (_BYTE *)v6[2]; - v3 = v6[3]; - } - if ( (unsigned int)v1 >= v3 ) - goto LABEL_11; -LABEL_5: - LOBYTE(v1) = *v1; - } - } - return a1; -} -// 52BFA9: variable 'v5' is possibly undefined - -//----- (0052C0E0) -------------------------------------------------------- -_DWORD *__cdecl std::ws>(_DWORD *a1) -{ - unsigned __int16 *v1; // eax - __int16 v2; // dx - unsigned __int16 i; // ax - __int16 *v4; // eax - const std::locale *v6; // [esp+Ch] [ebp-68h] - _DWORD *v7; // [esp+1Ch] [ebp-58h] - void *v8; // [esp+20h] [ebp-54h] - _DWORD *v9[4]; // [esp+64h] [ebp-10h] BYREF - - std::locale::locale( - (volatile signed __int32 **)v9, - (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), - v6); - v8 = std::use_facet>((int)v9); - std::locale::~locale(v9); - v7 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v1 = (unsigned __int16 *)v7[2]; - if ( (unsigned int)v1 < v7[3] ) - goto LABEL_5; -LABEL_12: - for ( i = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); i != 0xFFFF; i = *v1 ) - { - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v8 + 8))(v8, 32, i) ) - return a1; - v4 = (__int16 *)v7[2]; - if ( (unsigned int)v4 < v7[3] ) - { - v2 = *v4; - v7[2] = v4 + 1; - if ( v2 == -1 ) - break; - } - else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == 0xFFFF ) - { - break; - } - v1 = (unsigned __int16 *)v7[2]; - if ( (unsigned int)v1 >= v7[3] ) - goto LABEL_12; -LABEL_5: - ; - } - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); - return a1; -} -// 52C129: variable 'v6' is possibly undefined - -//----- (0052C270) -------------------------------------------------------- -std::ios_base *__cdecl std::hex(std::ios_base *a1) -{ - *((_DWORD *)a1 + 3) = *((_DWORD *)a1 + 3) & 0xFFFFFFB5 | 8; - return a1; -} - -//----- (0052C290) -------------------------------------------------------- -_DWORD *__cdecl std::endl>(std::ostream::sentry *a1) -{ - int v1; // eax - _BYTE *v2; // ebx - int v3; // eax - std::ostream::sentry *v4; // eax - int (__stdcall *v6)(unsigned __int8); // edx - char v7; // [esp+4h] [ebp-18h] - - v1 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v2 = *(_BYTE **)((char *)a1 + v1 + 124); - if ( !v2 ) - std::__throw_bad_cast(); - if ( v2[28] ) - { - v3 = (char)v2[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v1 + 124)); - v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); - v3 = 10; - if ( v6 != std::ctype::do_widen ) - v3 = ((char (__thiscall *)(_BYTE *, int))v6)(v2, 10); - } - v4 = std::ostream::put(a1, (std::ostream *)v3, v7); - return std::ostream::flush(v4); -} -// 52C2B5: variable 'v7' is possibly undefined - -//----- (0052C310) -------------------------------------------------------- -_DWORD *__cdecl std::endl>(int *a1) -{ - int v1; // ecx - unsigned __int16 v2; // ax - int *v3; // eax - - v1 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); - if ( !v1 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 40))(v1, 10); - v3 = std::wostream::put(a1, v2); - return std::wostream::flush(v3); -} - -//----- (0052C360) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1) -{ - char v2; // [esp+4h] [ebp-18h] - - return std::ostream::put(a1, 0, v2); -} -// 52C36E: variable 'v2' is possibly undefined - -//----- (0052C380) -------------------------------------------------------- -int *__cdecl std::ends>(int *a1) -{ - return std::wostream::put(a1, 0); -} - -//----- (0052C3A0) -------------------------------------------------------- -int __cdecl std::find<__gnu_cxx::__normal_iterator>,std::string>( - int a1, - int a2, - int a3) -{ - int v3; // esi - int i; // edi - int v5; // ebx - int v6; // eax - - v3 = a1; - for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) - { - v5 = v3; - if ( i <= 0 ) - break; - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v3) ) - return v5; - v5 = v3 + 24; - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v3 + 24) ) - return v5; - v5 = v3 + 48; - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v3 + 48) ) - return v5; - v5 = v3 + 72; - v3 += 96; - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v5) ) - return v5; - } - v6 = a2 - v3; - if ( a2 - v3 == 48 ) - { -LABEL_14: - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v5) ) - return v5; - v5 += 24; - goto LABEL_16; - } - if ( v6 == 72 ) - { - if ( (unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v3) ) - return v5; - v5 = v3 + 24; - goto LABEL_14; - } - if ( v6 != 24 ) - return a2; -LABEL_16: - if ( !(unsigned __int8)__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v5) ) - return a2; - return v5; -} - -//----- (0052C464) -------------------------------------------------------- -int __cdecl std::find<__gnu_cxx::__normal_iterator>,char const*>( - int a1, - int a2, - char **a3) -{ - int v3; // esi - int i; // edi - int v5; // ebx - int v6; // eax - - v3 = a1; - for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) - { - v5 = v3; - if ( i <= 0 ) - break; - if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v3) ) - { - return v5; - } - v5 = v3 + 24; - if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v3 + 24) ) - { - return v5; - } - v5 = v3 + 48; - if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v3 + 48) ) - { - return v5; - } - v5 = v3 + 72; - v3 += 96; - if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v5) ) - { - return v5; - } - } - v6 = a2 - v3; - if ( a2 - v3 == 48 ) - { -LABEL_14: - if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v5) ) - { - return v5; - } - v5 += 24; - goto LABEL_16; - } - if ( v6 == 72 ) - { - if ( __gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v3) ) - { - return v5; - } - v5 = v3 + 24; - goto LABEL_14; - } - if ( v6 != 24 ) - return a2; -LABEL_16: - if ( !__gnu_cxx::__ops::_Iter_equals_val::operator()<__gnu_cxx::__normal_iterator>>( - a3, - v5) ) - return a2; - return v5; -} - -//----- (0052C528) -------------------------------------------------------- -int __cdecl std::find<__gnu_cxx::__normal_iterator>,std::string>( - int a1, - int a2, - int a3) -{ - int v3; // ebx - int v4; // esi - int v5; // eax - int i; // [esp+1Ch] [ebp-1Ch] - - v3 = a1; - for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) - { - v4 = v3; - if ( i <= 0 ) - break; - if ( std::operator==(v3, a3) ) - return v4; - v4 = v3 + 24; - if ( std::operator==(v3 + 24, a3) ) - return v4; - v4 = v3 + 48; - if ( std::operator==(v3 + 48, a3) ) - return v4; - v4 = v3 + 72; - v3 += 96; - if ( std::operator==(v4, a3) ) - return v4; - } - v5 = a2 - v3; - if ( a2 - v3 == 48 ) - { -LABEL_14: - if ( std::operator==(v4, a3) ) - return v4; - v4 += 24; - goto LABEL_16; - } - if ( v5 == 72 ) - { - if ( std::operator==(v3, a3) ) - return v4; - v4 = v3 + 24; - goto LABEL_14; - } - if ( v5 != 24 ) - return a2; -LABEL_16: - if ( !std::operator==(v4, a3) ) - return a2; - return v4; -} - -//----- (0052C604) -------------------------------------------------------- -void __cdecl std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>( - char *a1, - char *a2, - int (__cdecl *a3)(int, int)) -{ - unsigned int v3; // eax - char *v4; // ebx - char *v5; // [esp+0h] [ebp-38h] - - if ( a1 != a2 ) - { - _BitScanReverse(&v3, -252645135 * ((a2 - a1) >> 3)); - std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - a1, - (int)a2, - 2 * (31 - (v3 ^ 0x1F)), - a3); - if ( a2 - a1 <= 2176 ) - { - std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - (unsigned __int8 **)a1, - a2, - (int (__cdecl *)(void **, struct _Unwind_Exception *))a3); - } - else - { - v4 = a1 + 2176; - std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( - (unsigned __int8 **)a1, - a1 + 2176, - (int (__cdecl *)(void **, struct _Unwind_Exception *))a3); - while ( v4 != a2 ) - { - v5 = v4; - v4 += 136; - std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>( - v5, - (int (__cdecl *)(void **, struct _Unwind_Exception *))a3); - } - } - } -} - -//----- (0052C6B0) -------------------------------------------------------- -_DWORD *__cdecl std::flush>(_DWORD *a1) -{ - return std::ostream::flush(a1); -} - -//----- (0052C6C0) -------------------------------------------------------- -_DWORD *__cdecl std::flush>(_DWORD *a1) -{ - return std::wostream::flush(a1); -} - -//----- (0052C6D0) -------------------------------------------------------- -std::istream::sentry *__cdecl std::getline,std::allocator>( - std::istream::sentry *a1, - _DWORD *a2) -{ - int v2; // eax - _BYTE *v3; // ebx - unsigned __int8 v4; // al - int (__stdcall *v6)(unsigned __int8); // edx - - v2 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v3 = *(_BYTE **)((char *)a1 + v2 + 124); - if ( !v3 ) - std::__throw_bad_cast(); - if ( v3[28] ) - { - v4 = v3[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v2 + 124)); - v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); - v4 = 10; - if ( v6 != std::ctype::do_widen ) - v4 = ((int (__thiscall *)(_BYTE *, int))v6)(v3, 10); - } - return std::getline,std::allocator>(a1, a2, v4); -} - -//----- (0052C750) -------------------------------------------------------- -std::istream::sentry *__cdecl std::getline,std::allocator>( - std::istream::sentry *a1, - _DWORD *a2, - unsigned __int8 a3) -{ - int v3; // eax - unsigned __int8 *v5; // eax - int v6; // edx - _BYTE *v7; // eax - size_t v8; // edx - unsigned __int8 *v9; // eax - unsigned int v10; // eax - signed int v11; // eax - _BYTE *v12; // eax - unsigned int v13; // edx - unsigned int v14; // eax - unsigned int v15; // edx - bool v16; // [esp+8h] [ebp-90h] - _DWORD *v17; // [esp+28h] [ebp-70h] - size_t v18; // [esp+2Ch] [ebp-6Ch] - size_t MaxCount; // [esp+30h] [ebp-68h] - size_t MaxCounta; // [esp+30h] [ebp-68h] - char MaxCountb; // [esp+30h] [ebp-68h] - unsigned int v22; // [esp+34h] [ebp-64h] - unsigned int v23; // [esp+34h] [ebp-64h] - char *Buf; // [esp+38h] [ebp-60h] - void *Bufa; // [esp+38h] [ebp-60h] - char v26[25]; // [esp+7Fh] [ebp-19h] BYREF - - std::istream::sentry::sentry(v26, a1, (std::istream *)1, v16); - if ( !v26[0] ) - { -LABEL_2: - v3 = 4; -LABEL_3: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v3); - return a1; - } - a2[1] = 0; - *(_BYTE *)*a2 = 0; - v17 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v5 = (unsigned __int8 *)v17[2]; - if ( (unsigned int)v5 >= v17[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); - else - v6 = *v5; - v22 = 0; - do - { - while ( 1 ) - { - if ( v6 == -1 ) - { - if ( !v22 ) - { - v3 = 6; - goto LABEL_3; - } -LABEL_34: - v3 = 2; - goto LABEL_3; - } - v10 = v17[3]; - Buf = (char *)v17[2]; - if ( a3 == v6 ) - goto LABEL_29; - v11 = v10 - v17[2]; - if ( (int)(0x3FFFFFFF - v22) <= v11 ) - v11 = 0x3FFFFFFF - v22; - MaxCounta = v11; - v18 = a2[1]; - if ( v11 <= 1 ) - break; - v7 = memchr(Buf, (char)a3, v11); - v8 = v7 - Buf; - if ( !v7 ) - v8 = MaxCounta; - MaxCount = v8; - if ( v8 > 0x3FFFFFFF - v18 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(a2, Buf, v8); - v22 += MaxCount; - v9 = (unsigned __int8 *)(MaxCount + v17[2]); - v17[2] = v9; - if ( (unsigned int)v9 >= v17[3] ) - goto LABEL_25; -LABEL_12: - v6 = *v9; - if ( v22 > 0x3FFFFFFE ) - goto LABEL_26; - } - MaxCountb = v6; - Bufa = (void *)(v18 + 1); - v12 = (_BYTE *)*a2; - if ( (_DWORD *)*a2 == a2 + 2 ) - v13 = 15; - else - v13 = a2[2]; - if ( (unsigned int)Bufa > v13 ) - { - std::string::_M_mutate((int)a2, v18, 0, 0, 1u); - v12 = (_BYTE *)*a2; - } - v12[v18] = MaxCountb; - ++v22; - a2[1] = Bufa; - *(_BYTE *)(*a2 + v18 + 1) = 0; - v14 = v17[2]; - v15 = v17[3]; - if ( v14 >= v15 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v17 + 40))(v17) == -1 ) - goto LABEL_34; - v9 = (unsigned __int8 *)v17[2]; - v15 = v17[3]; - } - else - { - v9 = (unsigned __int8 *)(v14 + 1); - v17[2] = v9; - } - if ( v15 > (unsigned int)v9 ) - goto LABEL_12; -LABEL_25: - v6 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); - } - while ( v22 <= 0x3FFFFFFE ); -LABEL_26: - if ( v6 == -1 ) - goto LABEL_34; - v3 = 4; - if ( v6 != a3 ) - goto LABEL_3; - v10 = v17[3]; - Buf = (char *)v17[2]; -LABEL_29: - v23 = v22 + 1; - if ( v10 <= (unsigned int)Buf ) - { - (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); - if ( v23 ) - return a1; - goto LABEL_2; - } - v17[2] = Buf + 1; - if ( !v23 ) - goto LABEL_2; - return a1; -} -// 52C7A3: variable 'v16' is possibly undefined -// 52C750: using guessed type char var_19[25]; - -//----- (0052CBA0) -------------------------------------------------------- -_DWORD *__cdecl std::getline,std::allocator>( - _DWORD *a1, - _DWORD *a2, - __int16 a3) -{ - int v3; // eax - __int16 *v5; // eax - unsigned int v6; // ebx - __int16 *v7; // ecx - int v8; // eax - int v9; // edx - _WORD *v10; // eax - __int16 *v11; // eax - __int16 v12; // ax - _WORD *v13; // eax - unsigned int v14; // edx - __int16 v15; // ax - unsigned int v16; // [esp+24h] [ebp-74h] - int v17; // [esp+2Ch] [ebp-6Ch] - _DWORD *v18; // [esp+30h] [ebp-68h] - unsigned int v19; // [esp+34h] [ebp-64h] - unsigned int v20; // [esp+34h] [ebp-64h] - __int16 lpuexcpt; // [esp+38h] [ebp-60h] - unsigned int lpuexcpta; // [esp+38h] [ebp-60h] - char v23[25]; // [esp+7Fh] [ebp-19h] BYREF - - std::wistream::sentry::sentry(v23, a1, 1); - if ( !v23[0] ) - { -LABEL_2: - v3 = 4; -LABEL_3: - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v3); - return a1; - } - a2[1] = 0; - *(_WORD *)*a2 = 0; - v18 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v5 = (__int16 *)v18[2]; - if ( (unsigned int)v5 >= v18[3] ) - lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); - else - lpuexcpt = *v5; - v19 = 0; - do - { - if ( lpuexcpt == -1 ) - { - if ( !v19 ) - { - v3 = 6; - goto LABEL_3; - } -LABEL_39: - v3 = 2; - goto LABEL_3; - } - v6 = v18[3]; - v7 = (__int16 *)v18[2]; - if ( a3 == lpuexcpt ) - goto LABEL_24; - v8 = (int)(v6 - (_DWORD)v7) >> 1; - if ( v8 > (int)(0x1FFFFFFF - v19) ) - v8 = 0x1FFFFFFF - v19; - v17 = a2[1]; - if ( v8 <= 1 ) - { - v16 = v17 + 1; - v13 = (_WORD *)*a2; - if ( (_DWORD *)*a2 == a2 + 2 ) - v14 = 7; - else - v14 = a2[2]; - if ( v16 > v14 ) - { - std::wstring::_M_mutate((int)a2, v17, 0, 0, 1); - v7 = (__int16 *)v18[2]; - v13 = (_WORD *)*a2; - v6 = v18[3]; - } - ++v19; - v13[v17] = lpuexcpt; - a2[1] = v16; - v13[v17 + 1] = 0; - if ( v6 <= (unsigned int)v7 ) - { - v15 = (*(int (__fastcall **)(_DWORD *))(*v18 + 40))(v18); - } - else - { - v15 = *v7; - v18[2] = v7 + 1; - } - if ( v15 == -1 ) - goto LABEL_39; - v11 = (__int16 *)v18[2]; - if ( (unsigned int)v11 < v18[3] ) - { -LABEL_19: - v12 = *v11; - goto LABEL_20; - } - } - else - { - lpuexcpta = v8; - v9 = v8; - if ( v7 ) - { - v10 = (_WORD *)v18[2]; - while ( *v10 != a3 ) - { - ++v10; - if ( !--v9 ) - goto LABEL_17; - } - lpuexcpta = v10 - v7; - } -LABEL_17: - if ( lpuexcpta > 0x1FFFFFFF - v17 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(a2, v7, lpuexcpta); - v19 += lpuexcpta; - v11 = (__int16 *)(v18[2] + 2 * lpuexcpta); - v18[2] = v11; - if ( (unsigned int)v11 < v18[3] ) - goto LABEL_19; - } - v12 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); -LABEL_20: - lpuexcpt = v12; - } - while ( v19 <= 0x1FFFFFFE ); - if ( v12 == -1 ) - goto LABEL_39; - v3 = 4; - if ( lpuexcpt != a3 ) - goto LABEL_3; - v7 = (__int16 *)v18[2]; - v6 = v18[3]; -LABEL_24: - v20 = v19 + 1; - if ( (unsigned int)v7 >= v6 ) - { - (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); - if ( v20 ) - return a1; - goto LABEL_2; - } - v18[2] = v7 + 1; - if ( !v20 ) - goto LABEL_2; - return a1; -} -// 52CBA0: using guessed type char var_19[25]; - -//----- (0052CFE0) -------------------------------------------------------- -int __cdecl std::setfill(unsigned __int8 a1) -{ - return a1; -} - -//----- (0052CFF0) -------------------------------------------------------- -int __cdecl std::setfill(unsigned __int16 a1) -{ - return a1; -} - -//----- (0052D000) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0) != 0; - } - return v2; -} -// 52D049: variable 'v2' is possibly undefined -// 53F708: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BB18: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052D050) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0) != 0; - } - return v2; -} -// 52D099: variable 'v2' is possibly undefined -// 53F710: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BB58: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052D0A0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0) != 0; - } - return v2; -} -// 52D0E9: variable 'v2' is possibly undefined -// 53F718: using guessed type signed __int32 std::collate::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BC90: using guessed type int *`typeinfo for'std::collate; - -//----- (0052D0F0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0) != 0; - } - return v2; -} -// 52D139: variable 'v2' is possibly undefined -// 53F71C: using guessed type signed __int32 std::collate::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BC9C: using guessed type int *`typeinfo for'std::collate; - -//----- (0052D140) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0) != 0; - } - return v2; -} -// 52D189: variable 'v2' is possibly undefined -// 53F720: using guessed type signed __int32 std::messages::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BCA8: using guessed type int *`typeinfo for'std::messages; - -//----- (0052D190) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0) != 0; - } - return v2; -} -// 52D1D9: variable 'v2' is possibly undefined -// 53F724: using guessed type signed __int32 std::messages::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BCC8: using guessed type int *`typeinfo for'std::messages; - -//----- (0052D1E0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0) != 0; - } - return v2; -} -// 52D229: variable 'v2' is possibly undefined -// 53F728: using guessed type signed __int32 std::numpunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BCE8: using guessed type int *`typeinfo for'std::numpunct; - -//----- (0052D230) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0) != 0; - } - return v2; -} -// 52D279: variable 'v2' is possibly undefined -// 53F72C: using guessed type signed __int32 std::numpunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BCF4: using guessed type int *`typeinfo for'std::numpunct; - -//----- (0052D280) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0) != 0; - } - return v2; -} -// 52D2C9: variable 'v2' is possibly undefined -// 53F730: using guessed type signed __int32 std::time_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD00: using guessed type int *`typeinfo for'std::time_get>; - -//----- (0052D2D0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0) != 0; - } - return v2; -} -// 52D319: variable 'v2' is possibly undefined -// 53F734: using guessed type signed __int32 std::time_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD20: using guessed type int *`typeinfo for'std::time_get>; - -//----- (0052D320) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0) != 0; - } - return v2; -} -// 52D369: variable 'v2' is possibly undefined -// 53F738: using guessed type signed __int32 std::money_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD40: using guessed type int *`typeinfo for'std::money_get>; - -//----- (0052D370) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0) != 0; - } - return v2; -} -// 52D3B9: variable 'v2' is possibly undefined -// 53F73C: using guessed type signed __int32 std::money_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD4C: using guessed type int *`typeinfo for'std::money_get>; - -//----- (0052D3C0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0) != 0; - } - return v2; -} -// 52D409: variable 'v2' is possibly undefined -// 53F740: using guessed type signed __int32 std::money_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD58: using guessed type int *`typeinfo for'std::money_put>; - -//----- (0052D410) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0) != 0; - } - return v2; -} -// 52D459: variable 'v2' is possibly undefined -// 53F744: using guessed type signed __int32 std::money_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD64: using guessed type int *`typeinfo for'std::money_put>; - -//----- (0052D460) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0) != 0; - } - return v2; -} -// 52D4A9: variable 'v2' is possibly undefined -// 53F58C: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BDF4: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052D4B0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0) != 0; - } - return v2; -} -// 52D4F9: variable 'v2' is possibly undefined -// 53F594: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BE34: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052D500) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::__timepunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::__timepunct, - 0) != 0; - } - return v2; -} -// 52D549: variable 'v2' is possibly undefined -// 53F59C: using guessed type signed __int32 std::__timepunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BE7C: using guessed type int *`typeinfo for'std::__timepunct; - -//----- (0052D550) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::__timepunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::__timepunct, - 0) != 0; - } - return v2; -} -// 52D599: variable 'v2' is possibly undefined -// 53F5A0: using guessed type signed __int32 std::__timepunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BE88: using guessed type int *`typeinfo for'std::__timepunct; - -//----- (0052D5A0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::ctype::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::ctype, - 0) != 0; - } - return v2; -} -// 52D5E9: variable 'v2' is possibly undefined -// 53F6E0: using guessed type signed __int32 std::ctype::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C310: using guessed type int *`typeinfo for'std::ctype; - -//----- (0052D5F0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::ctype::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::ctype, - 0) != 0; - } - return v2; -} -// 52D639: variable 'v2' is possibly undefined -// 53F6E4: using guessed type signed __int32 std::ctype::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C330: using guessed type int *`typeinfo for'std::ctype; - -//----- (0052D640) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::codecvt::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::codecvt, - 0) != 0; - } - return v2; -} -// 52D689: variable 'v2' is possibly undefined -// 53F758: using guessed type signed __int32 std::codecvt::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C36C: using guessed type int *`typeinfo for'std::codecvt; - -//----- (0052D690) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::codecvt::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::codecvt, - 0) != 0; - } - return v2; -} -// 52D6D9: variable 'v2' is possibly undefined -// 53F75C: using guessed type signed __int32 std::codecvt::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C378: using guessed type int *`typeinfo for'std::codecvt; - -//----- (0052D6E0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0) != 0; - } - return v2; -} -// 52D729: variable 'v2' is possibly undefined -// 53F760: using guessed type signed __int32 std::collate::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C384: using guessed type int *`typeinfo for'std::collate; - -//----- (0052D730) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0) != 0; - } - return v2; -} -// 52D779: variable 'v2' is possibly undefined -// 53F764: using guessed type signed __int32 std::collate::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C390: using guessed type int *`typeinfo for'std::collate; - -//----- (0052D780) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::num_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_get>, - 0) != 0; - } - return v2; -} -// 52D7C9: variable 'v2' is possibly undefined -// 53F768: using guessed type signed __int32 std::num_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C39C: using guessed type int *`typeinfo for'std::num_get>; - -//----- (0052D7D0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::num_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_get>, - 0) != 0; - } - return v2; -} -// 52D819: variable 'v2' is possibly undefined -// 53F76C: using guessed type signed __int32 std::num_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C3A8: using guessed type int *`typeinfo for'std::num_get>; - -//----- (0052D820) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::num_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_put>, - 0) != 0; - } - return v2; -} -// 52D869: variable 'v2' is possibly undefined -// 53F770: using guessed type signed __int32 std::num_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C3B4: using guessed type int *`typeinfo for'std::num_put>; - -//----- (0052D870) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::num_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_put>, - 0) != 0; - } - return v2; -} -// 52D8B9: variable 'v2' is possibly undefined -// 53F774: using guessed type signed __int32 std::num_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C3C0: using guessed type int *`typeinfo for'std::num_put>; - -//----- (0052D8C0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0) != 0; - } - return v2; -} -// 52D909: variable 'v2' is possibly undefined -// 53F780: using guessed type signed __int32 std::messages::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C3E0: using guessed type int *`typeinfo for'std::messages; - -//----- (0052D910) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0) != 0; - } - return v2; -} -// 52D959: variable 'v2' is possibly undefined -// 53F784: using guessed type signed __int32 std::messages::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C400: using guessed type int *`typeinfo for'std::messages; - -//----- (0052D960) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0) != 0; - } - return v2; -} -// 52D9A9: variable 'v2' is possibly undefined -// 53F788: using guessed type signed __int32 std::numpunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C420: using guessed type int *`typeinfo for'std::numpunct; - -//----- (0052D9B0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0) != 0; - } - return v2; -} -// 52D9F9: variable 'v2' is possibly undefined -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C42C: using guessed type int *`typeinfo for'std::numpunct; - -//----- (0052DA00) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0) != 0; - } - return v2; -} -// 52DA49: variable 'v2' is possibly undefined -// 53F790: using guessed type signed __int32 std::time_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C438: using guessed type int *`typeinfo for'std::time_get>; - -//----- (0052DA50) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0) != 0; - } - return v2; -} -// 52DA99: variable 'v2' is possibly undefined -// 53F794: using guessed type signed __int32 std::time_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C458: using guessed type int *`typeinfo for'std::time_get>; - -//----- (0052DAA0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_put>, - 0) != 0; - } - return v2; -} -// 52DAE9: variable 'v2' is possibly undefined -// 53F798: using guessed type signed __int32 std::time_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C478: using guessed type int *`typeinfo for'std::time_put>; - -//----- (0052DAF0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_put>, - 0) != 0; - } - return v2; -} -// 52DB39: variable 'v2' is possibly undefined -// 53F79C: using guessed type signed __int32 std::time_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C484: using guessed type int *`typeinfo for'std::time_put>; - -//----- (0052DB40) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0) != 0; - } - return v2; -} -// 52DB89: variable 'v2' is possibly undefined -// 53F7A0: using guessed type signed __int32 std::money_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C4BC: using guessed type int *`typeinfo for'std::money_get>; - -//----- (0052DB90) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0) != 0; - } - return v2; -} -// 52DBD9: variable 'v2' is possibly undefined -// 53F7A4: using guessed type signed __int32 std::money_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C4C8: using guessed type int *`typeinfo for'std::money_get>; - -//----- (0052DBE0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0) != 0; - } - return v2; -} -// 52DC29: variable 'v2' is possibly undefined -// 53F7A8: using guessed type signed __int32 std::money_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C4D4: using guessed type int *`typeinfo for'std::money_put>; - -//----- (0052DC30) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(std::money_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0) != 0; - } - return v2; -} -// 52DC79: variable 'v2' is possibly undefined -// 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C4E0: using guessed type int *`typeinfo for'std::money_put>; - -//----- (0052DC80) -------------------------------------------------------- -void __noreturn std::terminate(void) -{ - __cxxabiv1::__terminate(__cxxabiv1::__terminate_handler); -} - -//----- (0052DC90) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F708: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BB18: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052DCF0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F70C: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BB38: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052DD50) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F710: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BB58: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052DDB0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F714: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BB78: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052DE10) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F718: using guessed type signed __int32 std::collate::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BC90: using guessed type int *`typeinfo for'std::collate; - -//----- (0052DE70) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F71C: using guessed type signed __int32 std::collate::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BC9C: using guessed type int *`typeinfo for'std::collate; - -//----- (0052DED0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F720: using guessed type signed __int32 std::messages::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BCA8: using guessed type int *`typeinfo for'std::messages; - -//----- (0052DF30) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F724: using guessed type signed __int32 std::messages::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BCC8: using guessed type int *`typeinfo for'std::messages; - -//----- (0052DF90) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F728: using guessed type signed __int32 std::numpunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BCE8: using guessed type int *`typeinfo for'std::numpunct; - -//----- (0052DFF0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F72C: using guessed type signed __int32 std::numpunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BCF4: using guessed type int *`typeinfo for'std::numpunct; - -//----- (0052E050) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F730: using guessed type signed __int32 std::time_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD00: using guessed type int *`typeinfo for'std::time_get>; - -//----- (0052E0B0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F734: using guessed type signed __int32 std::time_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD20: using guessed type int *`typeinfo for'std::time_get>; - -//----- (0052E110) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F738: using guessed type signed __int32 std::money_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD40: using guessed type int *`typeinfo for'std::money_get>; - -//----- (0052E170) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F73C: using guessed type signed __int32 std::money_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD4C: using guessed type int *`typeinfo for'std::money_get>; - -//----- (0052E1D0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F740: using guessed type signed __int32 std::money_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD58: using guessed type int *`typeinfo for'std::money_put>; - -//----- (0052E230) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F744: using guessed type signed __int32 std::money_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BD64: using guessed type int *`typeinfo for'std::money_put>; - -//----- (0052E290) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F58C: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BDF4: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052E2F0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F590: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BE14: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052E350) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F594: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BE34: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052E3B0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F598: using guessed type signed __int32 std::moneypunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BE54: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (0052E410) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::__timepunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::__timepunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F59C: using guessed type signed __int32 std::__timepunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BE7C: using guessed type int *`typeinfo for'std::__timepunct; - -//----- (0052E470) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::__timepunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::__timepunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F5A0: using guessed type signed __int32 std::__timepunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55BE88: using guessed type int *`typeinfo for'std::__timepunct; - -//----- (0052E4D0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::ctype::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::ctype, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F6E0: using guessed type signed __int32 std::ctype::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C310: using guessed type int *`typeinfo for'std::ctype; - -//----- (0052E530) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::ctype::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::ctype, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F6E4: using guessed type signed __int32 std::ctype::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C330: using guessed type int *`typeinfo for'std::ctype; - -//----- (0052E590) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::codecvt::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::codecvt, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F758: using guessed type signed __int32 std::codecvt::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C36C: using guessed type int *`typeinfo for'std::codecvt; - -//----- (0052E5F0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::codecvt::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::codecvt, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F75C: using guessed type signed __int32 std::codecvt::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C378: using guessed type int *`typeinfo for'std::codecvt; - -//----- (0052E650) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F760: using guessed type signed __int32 std::collate::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C384: using guessed type int *`typeinfo for'std::collate; - -//----- (0052E6B0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F764: using guessed type signed __int32 std::collate::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C390: using guessed type int *`typeinfo for'std::collate; - -//----- (0052E710) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::num_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F768: using guessed type signed __int32 std::num_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C39C: using guessed type int *`typeinfo for'std::num_get>; - -//----- (0052E770) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::num_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F76C: using guessed type signed __int32 std::num_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C3A8: using guessed type int *`typeinfo for'std::num_get>; - -//----- (0052E7D0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::num_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F770: using guessed type signed __int32 std::num_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C3B4: using guessed type int *`typeinfo for'std::num_put>; - -//----- (0052E830) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::num_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F774: using guessed type signed __int32 std::num_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C3C0: using guessed type int *`typeinfo for'std::num_put>; - -//----- (0052E890) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F780: using guessed type signed __int32 std::messages::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C3E0: using guessed type int *`typeinfo for'std::messages; - -//----- (0052E8F0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F784: using guessed type signed __int32 std::messages::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C400: using guessed type int *`typeinfo for'std::messages; - -//----- (0052E950) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F788: using guessed type signed __int32 std::numpunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C420: using guessed type int *`typeinfo for'std::numpunct; - -//----- (0052E9B0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F78C: using guessed type signed __int32 std::numpunct::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C42C: using guessed type int *`typeinfo for'std::numpunct; - -//----- (0052EA10) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F790: using guessed type signed __int32 std::time_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C438: using guessed type int *`typeinfo for'std::time_get>; - -//----- (0052EA70) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F794: using guessed type signed __int32 std::time_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C458: using guessed type int *`typeinfo for'std::time_get>; - -//----- (0052EAD0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F798: using guessed type signed __int32 std::time_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C478: using guessed type int *`typeinfo for'std::time_put>; - -//----- (0052EB30) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F79C: using guessed type signed __int32 std::time_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C484: using guessed type int *`typeinfo for'std::time_put>; - -//----- (0052EB90) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F7A0: using guessed type signed __int32 std::money_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C4BC: using guessed type int *`typeinfo for'std::money_get>; - -//----- (0052EBF0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F7A4: using guessed type signed __int32 std::money_get>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C4C8: using guessed type int *`typeinfo for'std::money_get>; - -//----- (0052EC50) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F7A8: using guessed type signed __int32 std::money_put>::id; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C4D4: using guessed type int *`typeinfo for'std::money_put>; - -//----- (0052ECB0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(std::money_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 53F7AC: using guessed type signed __int32 std::money_put>::id[5]; -// 55BB10: using guessed type int *`typeinfo for'std::locale::facet; -// 55C4E0: using guessed type int *`typeinfo for'std::money_put>; - -//----- (0052ED10) -------------------------------------------------------- -bool __cdecl std::operator==(int a1, int a2) -{ - bool result; // al - int v3; // edx - - result = 0; - v3 = *(_DWORD *)(a1 + 4); - if ( v3 == *(_DWORD *)(a2 + 4) ) - { - result = 1; - if ( v3 ) - return memcmp(*(const void **)a1, *(const void **)a2, *(_DWORD *)(a1 + 4)) == 0; - } - return result; -} - -//----- (0052ED4C) -------------------------------------------------------- -bool __cdecl std::operator==(char *a1, int a2) -{ - return std::string::compare(a2, a1) == 0; -} - -//----- (0052ED68) -------------------------------------------------------- -bool __cdecl std::operator==(int a1, char *a2) -{ - return std::string::compare(a1, a2) == 0; -} - -//----- (0052ED90) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) -{ - int v2; // eax - - if ( Str ) - { - v2 = strlen(Str); - std::__ostream_insert>(a1, (int)Str, v2); - } - else - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (0052EDF0) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) -{ - int v2; // eax - - if ( Str ) - { - v2 = strlen(Str); - std::__ostream_insert>(a1, (int)Str, v2); - } - else - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (0052EE50) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) -{ - int v2; // eax - - if ( Str ) - { - v2 = strlen(Str); - std::__ostream_insert>(a1, (int)Str, v2); - } - else - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (0052EEB0) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) -{ - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - LOBYTE(v3[0]) = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 52EEB0: using guessed type int var_D[3]; - -//----- (0052EEE0) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) -{ - int v3[4]; // [esp+1Ch] [ebp-10h] BYREF - - LOBYTE(v3[0]) = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 52EEE0: using guessed type int var_10[4]; - -//----- (0052EF10) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) -{ - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - LOBYTE(v3[0]) = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 52EF10: using guessed type int var_D[3]; - -//----- (0052EF40) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; - return result; -} - -//----- (0052EF60) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; - return result; -} - -//----- (0052EF80) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; - return result; -} - -//----- (0052EFA0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; - return result; -} - -//----- (0052EFC0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - int v2; // ecx - - v2 = 64; - if ( a2 != 8 ) - { - v2 = 2; - if ( a2 != 10 ) - v2 = 8 * (a2 == 16); - } - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; - return a1; -} - -//----- (0052F000) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, char a2) -{ - char *v2; // esi - _BYTE *v4; // edi - int (__stdcall *v5)(unsigned __int8); // eax - - v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( !v2[117] ) - { - v4 = (_BYTE *)*((_DWORD *)v2 + 31); - if ( !v4 ) - std::__throw_bad_cast(); - if ( !v4[28] ) - { - std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); - v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); - if ( v5 != std::ctype::do_widen ) - ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); - } - v2[117] = 1; - } - v2[116] = a2; - return a1; -} - -//----- (0052F070) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2) -{ - return std::__ostream_insert>(a1, *a2, a2[1]); -} - -//----- (0052F0A0) -------------------------------------------------------- -int *__cdecl std::operator<<>(int *a1, wchar_t *String) -{ - int v2; // eax - - if ( String ) - { - v2 = wcslen(String); - std::__ostream_insert>(a1, (int)String, v2); - } - else - { - std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (0052F100) -------------------------------------------------------- -int *__cdecl std::operator<<>(int *a1, char *Str) -{ - size_t v2; // eax - int v3; // ecx - __int16 v4; // ax - int v6; // [esp+18h] [ebp-60h] - _WORD *Block; // [esp+1Ch] [ebp-5Ch] - _WORD *v8; // [esp+24h] [ebp-54h] - char *lpuexcpt; // [esp+28h] [ebp-50h] - - if ( Str ) - { - v2 = strlen(Str); - if ( v2 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v6 = v2; - Block = (_WORD *)operator new[](2 * v2); - v8 = Block; - lpuexcpt = Str; - if ( v6 ) - { - do - { - v3 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); - if ( !v3 ) - std::__throw_bad_cast(); - v4 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 40))(v3, *lpuexcpt++); - *v8++ = v4; - } - while ( &Str[v6] != lpuexcpt ); - } - std::__ostream_insert>(a1, (int)Block, v6); - operator delete[](Block); - } - else - { - std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (0052F330) -------------------------------------------------------- -int *__cdecl std::operator<<>(int *a1, __int16 a2) -{ - __int16 v3[8]; // [esp+1Ch] [ebp-10h] BYREF - - v3[0] = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 52F330: using guessed type __int16 var_10[8]; - -//----- (0052F360) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; - return result; -} - -//----- (0052F380) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; - return result; -} - -//----- (0052F3A0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; - return result; -} - -//----- (0052F3C0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; - return result; -} - -//----- (0052F3E0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - int v2; // ecx - - v2 = 64; - if ( a2 != 8 ) - { - v2 = 2; - if ( a2 != 10 ) - v2 = 8 * (a2 == 16); - } - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; - return a1; -} - -//----- (0052F420) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, __int16 a2) -{ - char *v2; // esi - int v4; // ecx - - v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( !v2[118] ) - { - v4 = *((_DWORD *)v2 + 31); - if ( !v4 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); - v2[118] = 1; - } - *((_WORD *)v2 + 58) = a2; - return a1; -} - -//----- (0052F480) -------------------------------------------------------- -int *__cdecl std::operator<<>(int *a1, char a2) -{ - int v2; // ecx - __int16 v4[7]; // [esp+22h] [ebp-Eh] BYREF - - v2 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); - if ( !v2 ) - std::__throw_bad_cast(); - v4[0] = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); - return std::__ostream_insert>(a1, (int)v4, 1); -} -// 52F480: using guessed type __int16 var_E[7]; - -//----- (0052F4D0) -------------------------------------------------------- -unsigned int __cdecl std::operator<(int a1, int a2) -{ - return (unsigned int)std::string::compare(a1, a2) >> 31; -} - -//----- (0052F4EC) -------------------------------------------------------- -int __cdecl std::operator!=(char *a1, int a2) -{ - int v2; // eax - - LOBYTE(v2) = std::operator==(a1, a2); - return v2 ^ 1; -} -// 52F505: variable 'v2' is possibly undefined - -//----- (0052F50C) -------------------------------------------------------- -int __cdecl std::operator!=(int a1, char *a2) -{ - int v2; // eax - - LOBYTE(v2) = std::operator==(a1, a2); - return v2 ^ 1; -} -// 52F525: variable 'v2' is possibly undefined - -//----- (0052F52C) -------------------------------------------------------- -int __cdecl std::operator!=(int a1, int a2) -{ - int v2; // eax - - LOBYTE(v2) = std::operator==(a1, a2); - return v2 ^ 1; -} -// 52F545: variable 'v2' is possibly undefined - -//----- (0052F54C) -------------------------------------------------------- -_DWORD *__cdecl std::operator+(_DWORD *a1, _DWORD *a2, unsigned int *a3) -{ - unsigned int v3; // ebx - unsigned int v4; // edx - unsigned int v5; // ebx - _DWORD *v6; // eax - - v3 = 15; - v4 = a2[1] + a3[1]; - if ( (_DWORD *)*a2 != a2 + 2 ) - v3 = a2[2]; - if ( v4 <= v3 ) - goto LABEL_8; - v5 = 15; - if ( (unsigned int *)*a3 != a3 + 2 ) - v5 = a3[2]; - if ( v4 > v5 ) -LABEL_8: - v6 = std::string::append(a2, (int)a3); - else - v6 = std::string::insert(a3, 0, (int)a2); - std::string::basic_string(a1, v6); - return a1; -} - -//----- (0052F5BC) -------------------------------------------------------- -_DWORD *__cdecl std::operator+(_DWORD *a1, char *a2, unsigned int *a3) -{ - unsigned int *v3; // eax - - v3 = std::string::insert(a3, 0, a2); - std::string::basic_string(a1, v3); - return a1; -} - -//----- (0052F5EC) -------------------------------------------------------- -int __cdecl std::operator+(int a1, char *Str, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-40h] - - lpuexcpt = (struct _Unwind_Exception *)strlen(Str); - *(_DWORD *)(a1 + 4) = 0; - *(_BYTE *)(a1 + 8) = 0; - *(_DWORD *)a1 = a1 + 8; - std::string::reserve((_DWORD *)a1, (unsigned int)lpuexcpt + *(_DWORD *)(a3 + 4)); - if ( (unsigned int)lpuexcpt > 0x3FFFFFFF - *(_DWORD *)(a1 + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append((_DWORD *)a1, Str, (size_t)lpuexcpt); - std::string::append((_DWORD *)a1, a3); - return a1; -} - -//----- (0052F6D4) -------------------------------------------------------- -char *__cdecl std::operator+(char *a1, int a2, char *a3) -{ - std::string::basic_string(a1, a2); - std::string::append(a1, a3); - return a1; -} - -//----- (0052F75C) -------------------------------------------------------- -char *__cdecl std::operator+(char *a1, int a2, int a3) -{ - std::string::basic_string(a1, a2); - std::string::append(a1, a3); - return a1; -} - -//----- (0052F7E4) -------------------------------------------------------- -int __cdecl std::operator+(int a1, char a2, int a3) -{ - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - std::string::reserve((_DWORD *)a1, *(_DWORD *)(a3 + 4) + 1); - std::string::_M_replace_aux((_DWORD *)a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); - std::string::append((_DWORD *)a1, a3); - return a1; -} - -//----- (0052F8C0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, char *Str, std::string *a3) -{ - _DWORD *v3; // eax - unsigned int v5; // [esp+0h] [ebp-68h] - const std::string *v6; // [esp+0h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - unsigned int v8; // [esp+5Fh] [ebp-9h] BYREF - - lpuexcpt = (struct _Unwind_Exception *)strlen(Str); - v3 = std::string::_Rep::_S_create(0, 0); - v3[2] = 0; - v3 += 3; - *(v3 - 3) = 0; - *(_BYTE *)v3 = 0; - *a1 = (int)v3; - std::string::reserve(a1, (struct _Unwind_Exception *)((char *)lpuexcpt + *(_DWORD *)(*(_DWORD *)a3 - 12)), v5); - std::string::append(a1, (std::string *)Str, (size_t)lpuexcpt, (unsigned int)&v8); - std::string::append(a1, a3, v6); - return a1; -} -// 52F9A7: positive sp value 4 has been found -// 52F94D: variable 'v5' is possibly undefined -// 52F976: variable 'v6' is possibly undefined - -//----- (0052F9C0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, _DWORD *a2, std::string *a3) -{ - _DWORD *v3; // eax - const std::string *v5; // [esp+0h] [ebp-68h] - int v6; // [esp+5Fh] [ebp-9h] BYREF - - v3 = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - v3 = std::string::_Rep::_M_clone((int)(v3 - 3), (int)&v6, 0); - } - else if ( _CRT_MT ) - { - _InterlockedAdd(v3 - 1, 1u); - } - else - { - ++*(v3 - 1); - } - *a1 = (int)v3; - std::string::append(a1, a3, v5); - return a1; -} -// 52FA8A: positive sp value 4 has been found -// 52FA1B: variable 'v5' is possibly undefined -// 53E1E4: using guessed type int _CRT_MT; - -//----- (0052FAA0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, char a2, std::string *a3) -{ - _DWORD *v3; // eax - unsigned int v5; // [esp+0h] [ebp-68h] - const std::string *v6; // [esp+0h] [ebp-68h] - char v7[4]; // [esp+5Fh] [ebp-9h] BYREF - - v3 = std::string::_Rep::_S_create(0, 0); - v3[2] = 0; - v3 += 3; - *(v3 - 3) = 0; - *(_BYTE *)v3 = 0; - *a1 = (int)v3; - std::string::reserve(a1, (std::string *)(*(_DWORD *)(*(_DWORD *)a3 - 12) + 1), v5); - std::string::append(a1, 1u, a2, (char)v7); - std::string::append(a1, a3, v6); - return a1; -} -// 52FB7E: positive sp value 4 has been found -// 52FB22: variable 'v5' is possibly undefined -// 52FB4D: variable 'v6' is possibly undefined - -//----- (0052FBA0) -------------------------------------------------------- -int __cdecl std::operator+(int a1, wchar_t *String, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-40h] - - lpuexcpt = (struct _Unwind_Exception *)wcslen(String); - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_WORD *)(a1 + 8) = 0; - std::wstring::reserve(a1, (unsigned int)lpuexcpt + *(_DWORD *)(a3 + 4)); - if ( (unsigned int)lpuexcpt > 0x1FFFFFFF - *(_DWORD *)(a1 + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append((_DWORD *)a1, String, (int)lpuexcpt); - std::wstring::_M_append((_DWORD *)a1, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); - return a1; -} - -//----- (0052FCA0) -------------------------------------------------------- -_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3) -{ - int v4; // [esp+8h] [ebp-50h] - - *a1 = a1 + 2; - LOBYTE(v4) = 0; - std::wstring::_M_construct(a1, *(_WORD **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v4); - std::wstring::_M_append(a1, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); - return a1; -} -// 52FCFB: variable 'v4' is possibly undefined - -//----- (0052FD70) -------------------------------------------------------- -int __cdecl std::operator+(int a1, __int16 a2, int a3) -{ - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_WORD *)(a1 + 8) = 0; - std::wstring::reserve(a1, *(_DWORD *)(a3 + 4) + 1); - std::wstring::_M_replace_aux((_DWORD *)a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); - std::wstring::_M_append((_DWORD *)a1, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); - return a1; -} - -//----- (0052FE60) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, wchar_t *String, _DWORD *a3) -{ - _DWORD *v3; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - - lpuexcpt = (struct _Unwind_Exception *)wcslen(String); - v3 = std::wstring::_Rep::_S_create(0, 0); - *((_WORD *)v3 + 6) = 0; - v3 += 3; - *(v3 - 1) = 0; - *(v3 - 3) = 0; - *a1 = (int)v3; - std::wstring::reserve(a1, (unsigned int)lpuexcpt + *(_DWORD *)(*a3 - 12)); - std::wstring::append(a1, (char *)String, (unsigned int)lpuexcpt); - std::wstring::append(a1, a3); - return a1; -} -// 52FF4A: positive sp value 4 has been found - -//----- (0052FF60) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, _DWORD *a2, _DWORD *a3) -{ - _DWORD *v3; // eax - int v5; // [esp+5Fh] [ebp-9h] BYREF - - v3 = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - v3 = std::wstring::_Rep::_M_clone(v3 - 3, (int)&v5, 0); - } - else if ( _CRT_MT ) - { - _InterlockedAdd(v3 - 1, 1u); - } - else - { - ++*(v3 - 1); - } - *a1 = (int)v3; - std::wstring::append(a1, a3); - return a1; -} -// 53002A: positive sp value 4 has been found -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00530040) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, __int16 a2, _DWORD *a3) -{ - _DWORD *v3; // eax - - v3 = std::wstring::_Rep::_S_create(0, 0); - *((_WORD *)v3 + 6) = 0; - v3 += 3; - *(v3 - 1) = 0; - *(v3 - 3) = 0; - *a1 = (int)v3; - std::wstring::reserve(a1, *(_DWORD *)(*a3 - 12) + 1); - std::wstring::append(a1, 1u, a2); - std::wstring::append(a1, a3); - return a1; -} -// 530121: positive sp value 4 has been found - -//----- (00530180) -------------------------------------------------------- -std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2) -{ - int v2; // edx - char *v3; // eax - _BYTE *v4; // eax - int v5; // ecx - unsigned int v6; // esi - char *v7; // ebx - int v8; // edx - unsigned int v9; // edx - int v11; // edx - int v12; // eax - unsigned int v13; // eax - unsigned int v14; // edx - const std::locale *v15; // [esp+4h] [ebp-84h] - bool v16; // [esp+8h] [ebp-80h] - int v17; // [esp+10h] [ebp-78h] - _DWORD *v18; // [esp+14h] [ebp-74h] - int v19; // [esp+18h] [ebp-70h] - int v20; // [esp+1Ch] [ebp-6Ch] - _BYTE *Sizea; // [esp+20h] [ebp-68h] - size_t Size; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - int v24; // [esp+28h] [ebp-60h] - char v25; // [esp+6Bh] [ebp-1Dh] BYREF - _DWORD *v26[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v25, a1, 0, v16); - if ( !v25 ) - { - v11 = *(_DWORD *)a1; - v12 = 4; - goto LABEL_23; - } - v2 = 0x7FFFFFFF; - v3 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); - if ( *((int *)v3 + 2) > 0 ) - v2 = *((_DWORD *)v3 + 2); - v19 = v2; - std::locale::locale((volatile signed __int32 **)v26, (volatile signed __int32 **)v3 + 27, v15); - v18 = std::use_facet>((int)v26); - std::locale::~locale(v26); - lpuexcpt = *(struct _Unwind_Exception **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v4 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v4 >= *((_DWORD *)lpuexcpt + 3) ) - { - v4 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v17 = v19 - 1; - if ( v19 == 1 ) - { - if ( v4 != (_BYTE *)-1 ) - goto LABEL_43; - } - else if ( v4 != (_BYTE *)-1 ) - { - goto LABEL_6; - } - *a2 = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v12 = 6; - goto LABEL_23; - } - LOBYTE(v4) = *v4; - v17 = v19 - 1; - if ( v19 == 1 ) - { -LABEL_43: - *a2 = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v12 = 4; - goto LABEL_23; - } -LABEL_6: - v24 = 0; - while ( 1 ) - { - v5 = v18[6]; - if ( (*(_BYTE *)(v5 + 2 * (unsigned __int8)v4) & 0x20) != 0 ) - break; - v6 = *((_DWORD *)lpuexcpt + 3); - v7 = (char *)*((_DWORD *)lpuexcpt + 2); - v8 = v19 - v24 - 1; - if ( v8 > (int)(v6 - (_DWORD)v7) ) - v8 = *((_DWORD *)lpuexcpt + 3) - (_DWORD)v7; - if ( v8 <= 1 ) - { - ++v24; - *a2 = (char)v4; - Sizea = a2 + 1; - v13 = *((_DWORD *)lpuexcpt + 2); - v14 = *((_DWORD *)lpuexcpt + 3); - if ( v13 >= v14 ) - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_35; - v4 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); - v14 = *((_DWORD *)lpuexcpt + 3); - } - else - { - v4 = (_BYTE *)(v13 + 1); - *((_DWORD *)lpuexcpt + 2) = v4; - } - if ( (unsigned int)v4 < v14 ) - { - LOBYTE(v4) = *v4; - ++a2; - goto LABEL_19; - } - v4 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - ++a2; -LABEL_31: - if ( v24 >= v17 ) - { - if ( v4 != (_BYTE *)-1 ) - { -LABEL_20: - *a2 = 0; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - return a1; - } - *a2 = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v12 = 2; - goto LABEL_23; - } - if ( v4 == (_BYTE *)-1 ) - { - Sizea = a2; -LABEL_35: - *Sizea = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v12 = v24 == 0 ? 6 : 2; - goto LABEL_23; - } - } - else - { - v9 = (unsigned int)&v7[v8]; - v4 = v7 + 1; - if ( v9 <= (unsigned int)(v7 + 1) ) - { - v20 = 1; - Size = 1; -LABEL_28: - memcpy(a2, v7, Size); - v6 = *((_DWORD *)lpuexcpt + 3); - v4 = (_BYTE *)(*((_DWORD *)lpuexcpt + 2) + Size); - goto LABEL_17; - } - do - { - if ( (*(_BYTE *)(v5 + 2 * (unsigned __int8)*v4) & 0x20) != 0 ) - { - v20 = v4 - v7; - Size = v4 - v7; - goto LABEL_16; - } - ++v4; - } - while ( v9 > (unsigned int)v4 ); - v20 = v4 - v7; - Size = v4 - v7; -LABEL_16: - if ( v20 ) - goto LABEL_28; -LABEL_17: - a2 += Size; - *((_DWORD *)lpuexcpt + 2) = v4; - v24 += v20; - if ( (unsigned int)v4 >= v6 ) - { - v4 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - goto LABEL_31; - } - LOBYTE(v4) = *v4; -LABEL_19: - if ( v24 >= v17 ) - goto LABEL_20; - } - } - *a2 = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - if ( v24 ) - return a1; - v12 = 4; -LABEL_23: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v11 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(v11 - 12) + 20) | v12); - return a1; -} -// 5301C7: variable 'v16' is possibly undefined -// 5301FF: variable 'v15' is possibly undefined - -//----- (00530650) -------------------------------------------------------- -std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2) -{ - _DWORD *v3; // ecx - char *v4; // eax - char v5; // dl - int v6; // eax - bool v7; // [esp+8h] [ebp-70h] - char v8[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::istream::sentry::sentry(v8, a1, 0, v7); - if ( v8[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v4 = (char *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - { - v6 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); - if ( v6 == -1 ) - { - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); - return a1; - } - v5 = v6; - } - else - { - v5 = *v4; - v3[2] = v4 + 1; - } - *a2 = v5; - } - return a1; -} -// 530697: variable 'v7' is possibly undefined -// 530650: using guessed type char var_19[25]; - -//----- (005307F0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; - return result; -} - -//----- (00530810) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; - return result; -} - -//----- (00530830) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; - return result; -} - -//----- (00530850) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; - return result; -} - -//----- (00530870) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - int v2; // ecx - - v2 = 64; - if ( a2 != 8 ) - { - v2 = 2; - if ( a2 != 10 ) - v2 = 8 * (a2 == 16); - } - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; - return a1; -} - -//----- (005308B0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, char a2) -{ - char *v2; // esi - _BYTE *v4; // edi - int (__stdcall *v5)(unsigned __int8); // eax - - v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( !v2[117] ) - { - v4 = (_BYTE *)*((_DWORD *)v2 + 31); - if ( !v4 ) - std::__throw_bad_cast(); - if ( !v4[28] ) - { - std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); - v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); - if ( v5 != std::ctype::do_widen ) - ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); - } - v2[117] = 1; - } - v2[116] = a2; - return a1; -} - -//----- (00530920) -------------------------------------------------------- -std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2) -{ - int v2; // edx - int v3; // eax - int v5; // edx - char *v6; // eax - unsigned __int8 *v7; // eax - int v8; // ebx - _BYTE *v9; // esi - int v10; // edx - unsigned int v11; // edx - unsigned __int8 *v12; // eax - unsigned __int8 *v13; // eax - int v14; // eax - _BYTE *v15; // eax - unsigned int v16; // edx - unsigned int v17; // eax - unsigned int v18; // edx - const std::locale *v19; // [esp+4h] [ebp-94h] - bool v20; // [esp+8h] [ebp-90h] - _DWORD *v21; // [esp+20h] [ebp-78h] - char *v22; // [esp+24h] [ebp-74h] - unsigned int v23; // [esp+28h] [ebp-70h] - _DWORD *v24; // [esp+2Ch] [ebp-6Ch] - size_t v25; // [esp+30h] [ebp-68h] - unsigned int v26; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - unsigned int v28; // [esp+38h] [ebp-60h] - char v29; // [esp+7Bh] [ebp-1Dh] BYREF - _DWORD *v30[7]; // [esp+7Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v29, a1, 0, v20); - if ( !v29 ) - { - v2 = *(_DWORD *)a1; - v3 = 4; - goto LABEL_3; - } - v5 = 0x3FFFFFFF; - a2[1] = 0; - *(_BYTE *)*a2 = 0; - v6 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); - if ( *((int *)v6 + 2) > 0 ) - v5 = *((_DWORD *)v6 + 2); - v23 = v5; - std::locale::locale((volatile signed __int32 **)v30, (volatile signed __int32 **)v6 + 27, v19); - v21 = std::use_facet>((int)v30); - std::locale::~locale(v30); - v24 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v7 = (unsigned __int8 *)v24[2]; - if ( (unsigned int)v7 >= v24[3] ) - v25 = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); - else - v25 = *v7; - v28 = 0; - while ( 1 ) - { - if ( v25 == -1 ) - { - v2 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v3 = v28 == 0 ? 6 : 2; - goto LABEL_3; - } - v8 = v21[6]; - if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v25) & 0x20) != 0 ) - break; - v9 = (_BYTE *)v24[2]; - v10 = v24[3] - (_DWORD)v9; - if ( v10 > (int)(v23 - v28) ) - v10 = v23 - v28; - lpuexcpt = (struct _Unwind_Exception *)a2[1]; - if ( v10 <= 1 ) - { - v22 = (char *)lpuexcpt + 1; - v15 = (_BYTE *)*a2; - if ( (_DWORD *)*a2 == a2 + 2 ) - v16 = 15; - else - v16 = a2[2]; - if ( (unsigned int)v22 > v16 ) - { - std::string::_M_mutate((int)a2, (size_t)lpuexcpt, 0, 0, 1u); - v15 = (_BYTE *)*a2; - } - *((_BYTE *)lpuexcpt + (_DWORD)v15) = v25; - ++v28; - a2[1] = v22; - *((_BYTE *)lpuexcpt + *a2 + 1) = 0; - v17 = v24[2]; - v18 = v24[3]; - if ( v17 >= v18 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v24 + 40))(v24) == -1 ) - { - v2 = *(_DWORD *)a1; -LABEL_37: - *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 8) = 0; - v3 = 2; - goto LABEL_3; - } - v13 = (unsigned __int8 *)v24[2]; - v18 = v24[3]; - } - else - { - v13 = (unsigned __int8 *)(v17 + 1); - v24[2] = v13; - } - if ( (unsigned int)v13 >= v18 ) - { -LABEL_33: - v14 = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); - goto LABEL_23; - } - } - else - { - v11 = (unsigned int)&v9[v10]; - v12 = v9 + 1; - if ( v11 > (unsigned int)(v9 + 1) ) - { - do - { - if ( (*(_BYTE *)(v8 + 2 * *v12) & 0x20) != 0 ) - break; - ++v12; - } - while ( v11 > (unsigned int)v12 ); - v26 = v12 - v9; - } - else - { - v26 = 1; - } - if ( 0x3FFFFFFF - (int)lpuexcpt < v26 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(a2, v9, v26); - v28 += v26; - v13 = (unsigned __int8 *)(v26 + v24[2]); - v24[2] = v13; - if ( (unsigned int)v13 >= v24[3] ) - goto LABEL_33; - } - v14 = *v13; -LABEL_23: - v25 = v14; - if ( v23 <= v28 ) - { - v2 = *(_DWORD *)a1; - if ( v14 != -1 ) - { - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - return a1; - } - goto LABEL_37; - } - } - v2 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - if ( v28 ) - return a1; - v3 = 4; -LABEL_3: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) | v3); - return a1; -} -// 53096A: variable 'v20' is possibly undefined -// 5309ED: variable 'v19' is possibly undefined - -//----- (00530DC0) -------------------------------------------------------- -int *__cdecl std::operator>>>(int *a1, _WORD *a2) -{ - int v2; // eax - int v3; // esi - volatile signed __int32 **v4; // eax - int v5; // edx - unsigned __int16 *v6; // eax - unsigned __int16 v7; // ax - __int16 v8; // dx - unsigned __int16 *v9; // eax - __int16 *v10; // eax - int v11; // edx - char *v12; // edx - char *v14; // edx - char *v15; // edx - const std::locale *v16; // [esp+4h] [ebp-84h] - int v17; // [esp+18h] [ebp-70h] - int v18; // [esp+18h] [ebp-70h] - void *v19; // [esp+1Ch] [ebp-6Ch] - int v20; // [esp+20h] [ebp-68h] - _DWORD *v21; // [esp+24h] [ebp-64h] - unsigned __int16 lpuexcpt; // [esp+28h] [ebp-60h] - char v23; // [esp+6Bh] [ebp-1Dh] BYREF - _DWORD *v24[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v23, a1, 0); - v2 = *a1; - if ( !v23 ) - { -LABEL_18: - v11 = 4; - goto LABEL_19; - } - v3 = *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 8); - v4 = (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(v2 - 12)); - v5 = 0x7FFFFFFF; - if ( v3 > 0 ) - v5 = v3; - v17 = v5; - std::locale::locale((volatile signed __int32 **)v24, v4 + 27, v16); - v19 = std::use_facet>((int)v24); - std::locale::~locale(v24); - v21 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v6 = (unsigned __int16 *)v21[2]; - if ( (unsigned int)v6 >= v21[3] ) - v7 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); - else - v7 = *v6; - lpuexcpt = v7; - if ( v17 == 1 ) - { - v2 = *a1; - v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); - *a2 = 0; - *((_DWORD *)v15 + 2) = 0; - if ( lpuexcpt == 0xFFFF ) - { - v11 = 6; - goto LABEL_19; - } - goto LABEL_18; - } - if ( v7 == 0xFFFF ) - { - *a2 = 0; - v2 = *a1; - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; - v11 = 6; - goto LABEL_19; - } - v20 = 0; - v18 = (int)&a2[v17 - 1]; - while ( 1 ) - { - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v19 + 8))(v19, 32, lpuexcpt) ) - { - v2 = *a1; - v12 = (char *)a1 + *(_DWORD *)(*a1 - 12); - *a2 = 0; - *((_DWORD *)v12 + 2) = 0; - if ( v20 ) - return a1; - goto LABEL_18; - } - ++a2; - ++v20; - *(a2 - 1) = lpuexcpt; - v10 = (__int16 *)v21[2]; - if ( (unsigned int)v10 < v21[3] ) - { - v8 = *v10; - v21[2] = v10 + 1; - if ( v8 == -1 ) - goto LABEL_16; - } - else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v21 + 40))(v21) == 0xFFFF ) - { -LABEL_16: - *a2 = 0; - v2 = *a1; - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; - v11 = 2; - goto LABEL_19; - } - v9 = (unsigned __int16 *)v21[2]; - if ( (unsigned int)v9 < v21[3] ) - { - lpuexcpt = *v9; - if ( a2 == (_WORD *)v18 ) - break; - goto LABEL_12; - } - lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); - if ( a2 == (_WORD *)v18 ) - break; -LABEL_12: - if ( lpuexcpt == 0xFFFF ) - goto LABEL_16; - } - v2 = *a1; - v14 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( lpuexcpt != 0xFFFF ) - { - *a2 = 0; - *((_DWORD *)v14 + 2) = 0; - return a1; - } - *a2 = 0; - *((_DWORD *)v14 + 2) = 0; - v11 = 2; -LABEL_19: - std::wios::clear((int *)((char *)a1 + *(_DWORD *)(v2 - 12)), *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) | v11); - return a1; -} -// 530E3F: variable 'v16' is possibly undefined - -//----- (005311C0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2) -{ - _DWORD *v3; // ecx - __int16 *v4; // eax - __int16 v5; // dx - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::wistream::sentry::sentry(v6, a1, 0); - if ( v6[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v4 = (__int16 *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - { - v5 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); - } - else - { - v5 = *v4; - v3[2] = v4 + 1; - } - if ( v5 == -1 ) - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 6); - else - *a2 = v5; - } - return a1; -} -// 5311C0: using guessed type char var_19[25]; - -//----- (00531360) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; - return result; -} - -//----- (00531380) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; - return result; -} - -//----- (005313A0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; - return result; -} - -//----- (005313C0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; - return result; -} - -//----- (005313E0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - int v2; // ecx - - v2 = 64; - if ( a2 != 8 ) - { - v2 = 2; - if ( a2 != 10 ) - v2 = 8 * (a2 == 16); - } - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; - return a1; -} - -//----- (00531420) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, __int16 a2) -{ - char *v2; // esi - int v4; // ecx - - v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( !v2[118] ) - { - v4 = *((_DWORD *)v2 + 31); - if ( !v4 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); - v2[118] = 1; - } - *((_WORD *)v2 + 58) = a2; - return a1; -} - -//----- (00531480) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1) -{ - _DWORD *v2; // ecx - - v2 = (_DWORD *)(a1 + 4); - *(v2 - 1) = &unk_55B3E8; - *(v2 - 3) = &unk_55B3C0; - *(v2 - 2) = 0; - *v2 = &off_560E20; - std::ios_base::~ios_base((int)v2); - operator delete((void *)(a1 - 8)); -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005314C0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &unk_55B3E8; - v1 = a1 + 1; - *(v1 - 3) = &unk_55B3C0; - *(v1 - 2) = 0; - *v1 = &off_560E20; - std::ios_base::~ios_base((int)v1); -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005314F0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) -{ - void *Block; // [esp+18h] [ebp-54h] - - *(_DWORD *)(a1 - 8) = off_560124; - *(_DWORD *)(a1 + 112) = off_56014C; - *(_DWORD *)a1 = off_560138; - *(_DWORD *)(a1 + 4) = off_5600A0; - Block = (void *)(a1 - 8); - std::filebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B474; - *(_DWORD *)(a1 - 8) = &unk_55B44C; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 112) = &off_560E20; - std::ios_base::~ios_base(a1 + 112); - operator delete(Block); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005315F0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) -{ - *(_DWORD *)(a1 - 8) = off_560124; - *(_DWORD *)(a1 + 112) = off_56014C; - *(_DWORD *)a1 = off_560138; - *(_DWORD *)(a1 + 4) = off_5600A0; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B474; - *(_DWORD *)(a1 - 8) = &unk_55B44C; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 112) = &off_560E20; - std::ios_base::~ios_base(a1 + 112); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005316D0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) -{ - void *Block; // [esp+18h] [ebp-54h] - - *(_DWORD *)(a1 - 8) = off_560160; - *(_DWORD *)(a1 + 116) = off_560188; - *(_DWORD *)a1 = off_560174; - *(_DWORD *)(a1 + 4) = off_5600E0; - Block = (void *)(a1 - 8); - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B500; - *(_DWORD *)(a1 - 8) = &unk_55B49C; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 116) = &off_560E30; - std::ios_base::~ios_base(a1 + 116); - operator delete(Block); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (005317D0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) -{ - *(_DWORD *)(a1 - 8) = off_560160; - *(_DWORD *)(a1 + 116) = off_560188; - *(_DWORD *)a1 = off_560174; - *(_DWORD *)(a1 + 4) = off_5600E0; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B500; - *(_DWORD *)(a1 - 8) = &unk_55B49C; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 116) = &off_560E30; - std::ios_base::~ios_base(a1 + 116); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (005318B0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1) -{ - _DWORD *v2; // ecx - - v2 = (_DWORD *)(a1 + 4); - *(v2 - 1) = &unk_55B5A0; - *(v2 - 3) = &unk_55B578; - *(v2 - 2) = 0; - *v2 = &off_560E30; - std::ios_base::~ios_base((int)v2); - operator delete((void *)(a1 - 8)); -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (005318F0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &unk_55B5A0; - v1 = a1 + 1; - *(v1 - 3) = &unk_55B578; - *(v1 - 2) = 0; - *v1 = &off_560E30; - std::ios_base::~ios_base((int)v1); -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00531920) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *v1; // esi - void *Block; // eax - - v1 = (void *)(a1 - 8); - Block = *(void **)(a1 + 40); - *(_DWORD *)(a1 - 8) = &off_55FB54; - *(_DWORD *)(a1 + 64) = off_55FB7C; - *(_DWORD *)a1 = off_55FB68; - *(_DWORD *)(a1 + 4) = &off_55F928; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B26C; - *(_DWORD *)(a1 - 8) = &unk_55B244; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 64) = &off_560E20; - std::ios_base::~ios_base(a1 + 64); - operator delete(v1); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005319A0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 40); - *(_DWORD *)(a1 - 8) = &off_55FB54; - *(_DWORD *)(a1 + 64) = off_55FB7C; - *(_DWORD *)a1 = off_55FB68; - *(_DWORD *)(a1 + 4) = &off_55F928; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_560424; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B26C; - *(_DWORD *)(a1 - 8) = &unk_55B244; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 64) = &off_560E20; - std::ios_base::~ios_base(a1 + 64); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00531A10) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *v1; // esi - void *Block; // eax - - v1 = (void *)(a1 - 8); - Block = *(void **)(a1 + 40); - *(_DWORD *)(a1 - 8) = &off_55FB90; - *(_DWORD *)(a1 + 64) = off_55FBB8; - *(_DWORD *)a1 = off_55FBA4; - *(_DWORD *)(a1 + 4) = &off_55F968; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B2F8; - *(_DWORD *)(a1 - 8) = &unk_55B294; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 64) = &off_560E30; - std::ios_base::~ios_base(a1 + 64); - operator delete(v1); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00531A90) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 40); - *(_DWORD *)(a1 - 8) = &off_55FB90; - *(_DWORD *)(a1 + 64) = off_55FBB8; - *(_DWORD *)a1 = off_55FBA4; - *(_DWORD *)(a1 + 4) = &off_55F968; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_560464; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_55B2F8; - *(_DWORD *)(a1 - 8) = &unk_55B294; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 64) = &off_560E30; - std::ios_base::~ios_base(a1 + 64); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00531B00) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - Block[2] = &unk_55B3E8; - *Block = &unk_55B3C0; - Block[1] = 0; - Block[3] = &off_560E20; - std::ios_base::~ios_base((int)(Block + 3)); - operator delete(Block); -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00531B40) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v1[2] = &unk_55B3E8; - v1 += 3; - *(v1 - 3) = &unk_55B3C0; - *(v1 - 2) = 0; - *v1 = &off_560E20; - std::ios_base::~ios_base((int)v1); -} -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00531B70) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *Block = &off_55FE40; - Block[1] = 0; - Block[2] = &off_560E20; - std::ios_base::~ios_base((int)(Block + 2)); - operator delete(Block); -} -// 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00531BB0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = &off_55FE40; - v1 += 2; - *(v1 - 1) = 0; - *v1 = &off_560E20; - std::ios_base::~ios_base((int)v1); -} -// 55FE40: using guessed type void (__cdecl *off_55FE40)(std::istream *__hidden this); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00531BD0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *Block = &off_55FE68; - Block[1] = &off_560E20; - std::ios_base::~ios_base((int)(Block + 1)); - operator delete(Block); -} -// 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00531C00) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1++ = &off_55FE68; - *v1 = &off_560E20; - std::ios_base::~ios_base((int)v1); -} -// 55FE68: using guessed type void (__cdecl *off_55FE68)(std::ostream *__hidden this); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00531C20) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_560124; - v1[30] = off_56014C; - v1[2] = off_560138; - v1[3] = off_5600A0; - Block = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 3)); - std::__basic_file::~__basic_file((int)(Block + 13)); - Block[3] = &off_560424; - std::locale::~locale((_DWORD **)Block + 10); - Block[2] = &unk_55B474; - *Block = &unk_55B44C; - Block[1] = 0; - Block[30] = &off_560E20; - std::ios_base::~ios_base((int)(Block + 30)); - operator delete(Block); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00531D20) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_560124; - v1[30] = off_56014C; - v1[2] = off_560138; - v1[3] = off_5600A0; - v2 = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 3)); - std::__basic_file::~__basic_file((int)(v2 + 13)); - v2[3] = &off_560424; - std::locale::~locale((_DWORD **)v2 + 10); - v2[2] = &unk_55B474; - *v2 = &unk_55B44C; - v2[1] = 0; - v2[30] = &off_560E20; - std::ios_base::~ios_base((int)(v2 + 30)); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560124: using guessed type int (*off_560124[2])(); -// 560138: using guessed type int (*off_560138[2])(); -// 56014C: using guessed type int (*off_56014C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00531E10) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_560160; - v1[31] = off_560188; - v1[2] = off_560174; - v1[3] = off_5600E0; - Block = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 3)); - std::__basic_file::~__basic_file((int)(Block + 13)); - Block[3] = &off_560464; - std::locale::~locale((_DWORD **)Block + 10); - Block[2] = &unk_55B500; - *Block = &unk_55B49C; - Block[1] = 0; - Block[31] = &off_560E30; - std::ios_base::~ios_base((int)(Block + 31)); - operator delete(Block); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00531F10) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_560160; - v1[31] = off_560188; - v1[2] = off_560174; - v1[3] = off_5600E0; - v2 = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 3)); - std::__basic_file::~__basic_file((int)(v2 + 13)); - v2[3] = &off_560464; - std::locale::~locale((_DWORD **)v2 + 10); - v2[2] = &unk_55B500; - *v2 = &unk_55B49C; - v2[1] = 0; - v2[31] = &off_560E30; - std::ios_base::~ios_base((int)(v2 + 31)); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560160: using guessed type int (*off_560160[2])(); -// 560174: using guessed type int (*off_560174[2])(); -// 560188: using guessed type int (*off_560188[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532000) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *Block = &off_56019C; - Block[1] = 0; - Block[2] = &off_560E30; - std::ios_base::~ios_base((int)(Block + 2)); - operator delete(Block); -} -// 56019C: using guessed type int (*off_56019C)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532040) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = &off_56019C; - v1 += 2; - *(v1 - 1) = 0; - *v1 = &off_560E30; - std::ios_base::~ios_base((int)v1); -} -// 56019C: using guessed type int (*off_56019C)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532060) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *Block = &off_5601C4; - Block[1] = &off_560E30; - std::ios_base::~ios_base((int)(Block + 1)); - operator delete(Block); -} -// 5601C4: using guessed type int (*off_5601C4)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532090) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1++ = &off_5601C4; - *v1 = &off_560E30; - std::ios_base::~ios_base((int)v1); -} -// 5601C4: using guessed type int (*off_5601C4)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (005320B0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_560200; - v1[29] = off_560214; - v1[2] = off_5600A0; - Block = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 2)); - std::__basic_file::~__basic_file((int)(Block + 12)); - Block[2] = &off_560424; - std::locale::~locale((_DWORD **)Block + 9); - *Block = &unk_55B528; - Block[1] = 0; - Block[29] = &off_560E20; - std::ios_base::~ios_base((int)(Block + 29)); - operator delete(Block); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560200: using guessed type int (*off_560200[2])(); -// 560214: using guessed type int (*off_560214[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005321A0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_560200; - v1[29] = off_560214; - v1[2] = off_5600A0; - v2 = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 2)); - std::__basic_file::~__basic_file((int)(v2 + 12)); - v2[2] = &off_560424; - std::locale::~locale((_DWORD **)v2 + 9); - *v2 = &unk_55B528; - v2[1] = 0; - v2[29] = &off_560E20; - std::ios_base::~ios_base((int)(v2 + 29)); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 560200: using guessed type int (*off_560200[2])(); -// 560214: using guessed type int (*off_560214[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00532280) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_560228; - v1[30] = off_56023C; - v1[2] = off_5600E0; - Block = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 2)); - std::__basic_file::~__basic_file((int)(Block + 12)); - Block[2] = &off_560464; - std::locale::~locale((_DWORD **)Block + 9); - *Block = &unk_55B550; - Block[1] = 0; - Block[30] = &off_560E30; - std::ios_base::~ios_base((int)(Block + 30)); - operator delete(Block); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560228: using guessed type int (*off_560228[2])(); -// 56023C: using guessed type int (*off_56023C[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532370) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_560228; - v1[30] = off_56023C; - v1[2] = off_5600E0; - v2 = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 2)); - std::__basic_file::~__basic_file((int)(v2 + 12)); - v2[2] = &off_560464; - std::locale::~locale((_DWORD **)v2 + 9); - *v2 = &unk_55B550; - v2[1] = 0; - v2[30] = &off_560E30; - std::ios_base::~ios_base((int)(v2 + 30)); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 560228: using guessed type int (*off_560228[2])(); -// 56023C: using guessed type int (*off_56023C[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532450) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - Block[2] = &unk_55B5A0; - *Block = &unk_55B578; - Block[1] = 0; - Block[3] = &off_560E30; - std::ios_base::~ios_base((int)(Block + 3)); - operator delete(Block); -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532490) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v1[2] = &unk_55B5A0; - v1 += 3; - *(v1 - 3) = &unk_55B578; - *(v1 - 2) = 0; - *v1 = &off_560E30; - std::ios_base::~ios_base((int)v1); -} -// 560E30: using guessed type int (*off_560E30)(); - -//----- (005324C0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_56028C; - v1[28] = off_5602A0; - v1[1] = off_5600A0; - Block = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 1)); - std::__basic_file::~__basic_file((int)(Block + 11)); - Block[1] = &off_560424; - std::locale::~locale((_DWORD **)Block + 8); - *Block = &unk_55B5C8; - Block[28] = &off_560E20; - std::ios_base::~ios_base((int)(Block + 28)); - operator delete(Block); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 56028C: using guessed type int (*off_56028C[2])(); -// 5602A0: using guessed type int (*off_5602A0[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005325A0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_56028C; - v1[28] = off_5602A0; - v1[1] = off_5600A0; - v2 = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 1)); - std::__basic_file::~__basic_file((int)(v2 + 11)); - v2[1] = &off_560424; - std::locale::~locale((_DWORD **)v2 + 8); - *v2 = &unk_55B5C8; - v2[28] = &off_560E20; - std::ios_base::~ios_base((int)(v2 + 28)); -} -// 5600A0: using guessed type int (*off_5600A0[2])(); -// 56028C: using guessed type int (*off_56028C[2])(); -// 5602A0: using guessed type int (*off_5602A0[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00532670) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_5602B4; - v1[29] = off_5602C8; - v1[1] = off_5600E0; - Block = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 1)); - std::__basic_file::~__basic_file((int)(Block + 11)); - Block[1] = &off_560464; - std::locale::~locale((_DWORD **)Block + 8); - *Block = &unk_55B5F0; - Block[29] = &off_560E30; - std::ios_base::~ios_base((int)(Block + 29)); - operator delete(Block); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 5602B4: using guessed type int (*off_5602B4[2])(); -// 5602C8: using guessed type int (*off_5602C8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532750) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_5602B4; - v1[29] = off_5602C8; - v1[1] = off_5600E0; - v2 = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 1)); - std::__basic_file::~__basic_file((int)(v2 + 11)); - v2[1] = &off_560464; - std::locale::~locale((_DWORD **)v2 + 8); - *v2 = &unk_55B5F0; - v2[29] = &off_560E30; - std::ios_base::~ios_base((int)(v2 + 29)); -} -// 5600E0: using guessed type int (*off_5600E0[2])(); -// 5602B4: using guessed type int (*off_5602B4[2])(); -// 5602C8: using guessed type int (*off_5602C8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532820) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 12); - *(_DWORD *)v1 = &off_55FB54; - *((_DWORD *)v1 + 18) = off_55FB7C; - *((_DWORD *)v1 + 2) = off_55FB68; - *((_DWORD *)v1 + 3) = &off_55F928; - if ( Block != v1 + 56 ) - operator delete(Block); - *((_DWORD *)v1 + 3) = &off_560424; - std::locale::~locale((_DWORD **)v1 + 10); - *((_DWORD *)v1 + 2) = &unk_55B26C; - *(_DWORD *)v1 = &unk_55B244; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 18) = &off_560E20; - std::ios_base::~ios_base((int)(v1 + 72)); - operator delete(v1); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (005328A0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 12); - *(_DWORD *)v1 = &off_55FB54; - *((_DWORD *)v1 + 18) = off_55FB7C; - *((_DWORD *)v1 + 2) = off_55FB68; - *((_DWORD *)v1 + 3) = &off_55F928; - if ( Block != v1 + 56 ) - operator delete(Block); - *((_DWORD *)v1 + 3) = &off_560424; - std::locale::~locale((_DWORD **)v1 + 10); - *((_DWORD *)v1 + 2) = &unk_55B26C; - *(_DWORD *)v1 = &unk_55B244; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 18) = &off_560E20; - std::ios_base::~ios_base((int)(v1 + 72)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FB54: using guessed type int (*off_55FB54)(); -// 55FB68: using guessed type int (*off_55FB68[2])(); -// 55FB7C: using guessed type int (*off_55FB7C[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00532910) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 12); - *(_DWORD *)v1 = &off_55FB90; - *((_DWORD *)v1 + 18) = off_55FBB8; - *((_DWORD *)v1 + 2) = off_55FBA4; - *((_DWORD *)v1 + 3) = &off_55F968; - if ( Block != v1 + 56 ) - operator delete(Block); - *((_DWORD *)v1 + 3) = &off_560464; - std::locale::~locale((_DWORD **)v1 + 10); - *((_DWORD *)v1 + 2) = &unk_55B2F8; - *(_DWORD *)v1 = &unk_55B294; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 18) = &off_560E30; - std::ios_base::~ios_base((int)(v1 + 72)); - operator delete(v1); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532990) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 12); - *(_DWORD *)v1 = &off_55FB90; - *((_DWORD *)v1 + 18) = off_55FBB8; - *((_DWORD *)v1 + 2) = off_55FBA4; - *((_DWORD *)v1 + 3) = &off_55F968; - if ( Block != v1 + 56 ) - operator delete(Block); - *((_DWORD *)v1 + 3) = &off_560464; - std::locale::~locale((_DWORD **)v1 + 10); - *((_DWORD *)v1 + 2) = &unk_55B2F8; - *(_DWORD *)v1 = &unk_55B294; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 18) = &off_560E30; - std::ios_base::~ios_base((int)(v1 + 72)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FB90: using guessed type int (*off_55FB90)(); -// 55FBA4: using guessed type int (*off_55FBA4[2])(); -// 55FBB8: using guessed type int (*off_55FBB8[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532A00) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 11); - *(_DWORD *)v1 = &off_55FBCC; - *((_DWORD *)v1 + 17) = off_55FBE0; - *((_DWORD *)v1 + 2) = &off_55F928; - if ( Block != v1 + 52 ) - operator delete(Block); - *((_DWORD *)v1 + 2) = &off_560424; - std::locale::~locale((_DWORD **)v1 + 9); - *(_DWORD *)v1 = &unk_55B320; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 17) = &off_560E20; - std::ios_base::~ios_base((int)(v1 + 68)); - operator delete(v1); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FBCC: using guessed type int (*off_55FBCC)(); -// 55FBE0: using guessed type int (*off_55FBE0[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00532A70) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 11); - *(_DWORD *)v1 = &off_55FBCC; - *((_DWORD *)v1 + 17) = off_55FBE0; - *((_DWORD *)v1 + 2) = &off_55F928; - if ( Block != v1 + 52 ) - operator delete(Block); - *((_DWORD *)v1 + 2) = &off_560424; - std::locale::~locale((_DWORD **)v1 + 9); - *(_DWORD *)v1 = &unk_55B320; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 17) = &off_560E20; - std::ios_base::~ios_base((int)(v1 + 68)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FBCC: using guessed type int (*off_55FBCC)(); -// 55FBE0: using guessed type int (*off_55FBE0[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00532AD0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 11); - *(_DWORD *)v1 = &off_55FBF4; - *((_DWORD *)v1 + 17) = off_55FC08; - *((_DWORD *)v1 + 2) = &off_55F968; - if ( Block != v1 + 52 ) - operator delete(Block); - *((_DWORD *)v1 + 2) = &off_560464; - std::locale::~locale((_DWORD **)v1 + 9); - *(_DWORD *)v1 = &unk_55B348; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 17) = &off_560E30; - std::ios_base::~ios_base((int)(v1 + 68)); - operator delete(v1); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FBF4: using guessed type int (*off_55FBF4)(); -// 55FC08: using guessed type int (*off_55FC08[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532B40) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 11); - *(_DWORD *)v1 = &off_55FBF4; - *((_DWORD *)v1 + 17) = off_55FC08; - *((_DWORD *)v1 + 2) = &off_55F968; - if ( Block != v1 + 52 ) - operator delete(Block); - *((_DWORD *)v1 + 2) = &off_560464; - std::locale::~locale((_DWORD **)v1 + 9); - *(_DWORD *)v1 = &unk_55B348; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 17) = &off_560E30; - std::ios_base::~ios_base((int)(v1 + 68)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FBF4: using guessed type int (*off_55FBF4)(); -// 55FC08: using guessed type int (*off_55FC08[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532BA0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 10); - *(_DWORD *)v1 = &off_55FC1C; - *((_DWORD *)v1 + 16) = off_55FC30; - *((_DWORD *)v1 + 1) = &off_55F928; - if ( Block != v1 + 48 ) - operator delete(Block); - *((_DWORD *)v1 + 1) = &off_560424; - std::locale::~locale((_DWORD **)v1 + 8); - *(_DWORD *)v1 = &unk_55B370; - *((_DWORD *)v1 + 16) = &off_560E20; - std::ios_base::~ios_base((int)(v1 + 64)); - operator delete(v1); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FC1C: using guessed type int (*off_55FC1C)(); -// 55FC30: using guessed type int (*off_55FC30[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00532C10) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 10); - *(_DWORD *)v1 = &off_55FC1C; - *((_DWORD *)v1 + 16) = off_55FC30; - *((_DWORD *)v1 + 1) = &off_55F928; - if ( Block != v1 + 48 ) - operator delete(Block); - *((_DWORD *)v1 + 1) = &off_560424; - std::locale::~locale((_DWORD **)v1 + 8); - *(_DWORD *)v1 = &unk_55B370; - *((_DWORD *)v1 + 16) = &off_560E20; - std::ios_base::~ios_base((int)(v1 + 64)); -} -// 55F928: using guessed type int (*off_55F928)(); -// 55FC1C: using guessed type int (*off_55FC1C)(); -// 55FC30: using guessed type int (*off_55FC30[2])(); -// 560424: using guessed type int (*off_560424)(); -// 560E20: using guessed type int (*off_560E20)(); - -//----- (00532C70) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 10); - *(_DWORD *)v1 = &off_55FC44; - *((_DWORD *)v1 + 16) = off_55FC58; - *((_DWORD *)v1 + 1) = &off_55F968; - if ( Block != v1 + 48 ) - operator delete(Block); - *((_DWORD *)v1 + 1) = &off_560464; - std::locale::~locale((_DWORD **)v1 + 8); - *(_DWORD *)v1 = &unk_55B398; - *((_DWORD *)v1 + 16) = &off_560E30; - std::ios_base::~ios_base((int)(v1 + 64)); - operator delete(v1); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FC44: using guessed type int (*off_55FC44)(); -// 55FC58: using guessed type int (*off_55FC58[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532CE0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 10); - *(_DWORD *)v1 = &off_55FC44; - *((_DWORD *)v1 + 16) = off_55FC58; - *((_DWORD *)v1 + 1) = &off_55F968; - if ( Block != v1 + 48 ) - operator delete(Block); - *((_DWORD *)v1 + 1) = &off_560464; - std::locale::~locale((_DWORD **)v1 + 8); - *(_DWORD *)v1 = &unk_55B398; - *((_DWORD *)v1 + 16) = &off_560E30; - std::ios_base::~ios_base((int)(v1 + 64)); -} -// 55F968: using guessed type int (*off_55F968)(); -// 55FC44: using guessed type int (*off_55FC44)(); -// 55FC58: using guessed type int (*off_55FC58[2])(); -// 560464: using guessed type int (*off_560464)(); -// 560E30: using guessed type int (*off_560E30)(); - -//----- (00532D40) -------------------------------------------------------- -int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1) -{ - int v2; // ebx - bool v3; // zf - int result; // eax - int v5; // edx - int v6; // edx - - v2 = *a1; - v3 = *(_BYTE *)(*a1 + 72) == 0; - *(_DWORD *)(v2 + 48) = 0; - *(_BYTE *)(v2 + 84) = 0; - if ( !v3 ) - { - if ( *(_DWORD *)(v2 + 64) ) - operator delete[](*(void **)(v2 + 64)); - *(_DWORD *)(v2 + 64) = 0; - *(_BYTE *)(v2 + 72) = 0; - } - if ( *(_DWORD *)(v2 + 92) ) - operator delete[](*(void **)(v2 + 92)); - result = *a1; - *(_DWORD *)(v2 + 92) = 0; - *(_DWORD *)(v2 + 96) = 0; - *(_DWORD *)(v2 + 100) = 0; - *(_DWORD *)(v2 + 104) = 0; - *(_WORD *)(result + 73) = 0; - v5 = *(_DWORD *)(result + 64); - *(_DWORD *)(result + 20) = 0; - *(_DWORD *)(result + 4) = v5; - *(_DWORD *)(result + 8) = v5; - *(_DWORD *)(result + 12) = v5; - v6 = *(_DWORD *)(result + 52); - *(_DWORD *)(result + 16) = 0; - *(_DWORD *)(result + 24) = 0; - *(_DWORD *)(result + 56) = v6; - *(_DWORD *)(result + 60) = v6; - return result; -} - -//----- (00532DE0) -------------------------------------------------------- -int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1) -{ - int v2; // ebx - bool v3; // zf - int result; // eax - int v5; // edx - int v6; // edx - - v2 = *a1; - v3 = *(_BYTE *)(*a1 + 72) == 0; - *(_DWORD *)(v2 + 48) = 0; - *(_BYTE *)(v2 + 88) = 0; - if ( !v3 ) - { - if ( *(_DWORD *)(v2 + 64) ) - operator delete[](*(void **)(v2 + 64)); - *(_DWORD *)(v2 + 64) = 0; - *(_BYTE *)(v2 + 72) = 0; - } - if ( *(_DWORD *)(v2 + 96) ) - operator delete[](*(void **)(v2 + 96)); - result = *a1; - *(_DWORD *)(v2 + 96) = 0; - *(_DWORD *)(v2 + 100) = 0; - *(_DWORD *)(v2 + 104) = 0; - *(_DWORD *)(v2 + 108) = 0; - *(_WORD *)(result + 73) = 0; - v5 = *(_DWORD *)(result + 64); - *(_DWORD *)(result + 20) = 0; - *(_DWORD *)(result + 4) = v5; - *(_DWORD *)(result + 8) = v5; - *(_DWORD *)(result + 12) = v5; - v6 = *(_DWORD *)(result + 52); - *(_DWORD *)(result + 16) = 0; - *(_DWORD *)(result + 24) = 0; - *(_DWORD *)(result + 56) = v6; - *(_DWORD *)(result + 60) = v6; - return result; -} - -//----- (00532EC0) -------------------------------------------------------- -int __cdecl operator new[](unsigned int a1) -{ - return operator new[](a1); -} - -//----- (00532F50) -------------------------------------------------------- -void *__cdecl operator new(size_t a1) -{ - size_t Size; // ebx - void *result; // eax - void (*new_handler)(void); // eax - _DWORD *exception; // eax - - Size = 1; - if ( a1 ) - Size = a1; - while ( 1 ) - { - result = malloc(Size); - if ( result ) - break; - new_handler = (void (*)(void))std::get_new_handler(); - if ( !new_handler ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_560E0C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_alloc, - (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); - } - new_handler(); - } - return result; -} -// 55C490: using guessed type int *`typeinfo for'std::bad_alloc; -// 560E0C: using guessed type void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this); - -//----- (00532FB0) -------------------------------------------------------- -int __cxa_allocate_dependent_exception() -{ - void *v0; // eax - int v1; // ebx - - v0 = malloc(0x50u); - if ( v0 ) - { - v1 = (int)v0; - } - else - { - `anonymous namespace'::pool::allocate(); - v1 = 80; - } - *(_DWORD *)v1 = 0; - *(_DWORD *)(v1 + 76) = 0; - memset((void *)((v1 + 4) & 0xFFFFFFFC), 0, 4 * ((v1 - ((v1 + 4) & 0xFFFFFFFC) + 80) >> 2)); - return v1; -} - -//----- (00533040) -------------------------------------------------------- -void *__cdecl __cxa_allocate_exception(size_t thrown_size) -{ - _DWORD *v1; // eax - _DWORD *v2; // edx - - v1 = malloc(thrown_size + 96); - if ( v1 ) - { - v2 = v1; - } - else - { - `anonymous namespace'::pool::allocate(); - v2 = (_DWORD *)(thrown_size + 96); - if ( thrown_size == -96 ) - std::terminate(); - } - *v2 = 0; - v2[23] = 0; - memset( - (void *)((unsigned int)(v2 + 1) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)v2 - ((unsigned int)(v2 + 1) & 0xFFFFFFFC) + 96) >> 2)); - return v2 + 24; -} - -//----- (005330D0) -------------------------------------------------------- -void *__cdecl __cxa_begin_catch(void *a1) -{ - char **globals; // eax - char *v2; // edx - char *v3; // ebp - int v5; // ecx - int v6; // edi - - globals = (char **)__cxa_get_globals(); - v2 = *globals; - v3 = (char *)a1 - 48; - if ( (unsigned __int64)(*(_QWORD *)a1 - 0x474E5543432B2B00LL) <= 1 ) - { - v5 = *((_DWORD *)a1 - 7); - v6 = 1 - v5; - if ( v5 >= 0 ) - v6 = v5 + 1; - *((_DWORD *)a1 - 7) = v6; - --globals[1]; - if ( v2 != v3 ) - { - *((_DWORD *)a1 - 8) = v2; - *globals = v3; - } - return (void *)*((_DWORD *)a1 - 2); - } - else - { - if ( v2 ) - std::terminate(); - *globals = v3; - return 0; - } -} - -//----- (00533160) -------------------------------------------------------- -void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *a1) -{ - if ( a1 ) - { - __cxa_begin_catch(a1); - if ( !(((unsigned int)(*(_DWORD *)a1 - 1126902528) > 1) - + ((unsigned __int64)(*(_QWORD *)a1 - 0x474E5543432B2B00LL) >> 32)) ) - __cxxabiv1::__terminate(*((void (**)(void))a1 - 9)); - } - std::terminate(); -} - -//----- (005331B0) -------------------------------------------------------- -void __cdecl __noreturn __cxa_call_unexpected(void *a1) -{ - __cxa_begin_catch(a1); - __cxxabiv1::__unexpected(*((void (**)(void))a1 - 10)); -} - -//----- (00533350) -------------------------------------------------------- -struct type_info *__cxa_current_exception_type(void) -{ - struct type_info *result; // eax - int v1; // edx - - result = (struct type_info *)*__cxa_get_globals(); - if ( result ) - { - v1 = *((_DWORD *)result + 12); - result = *(struct type_info **)result; - if ( (v1 & 1) != 0 ) - return (struct type_info *)*((_DWORD *)result - 20); - } - return result; -} - -//----- (00533370) -------------------------------------------------------- -void __noreturn __cxa_deleted_virtual(void) -{ - write(2, "deleted virtual method called\n", 0x1Eu); - std::terminate(); -} - -//----- (005333A0) -------------------------------------------------------- -void __cxa_end_catch(void) -{ - _DWORD *globals_fast; // edx - _DWORD *v1; // eax - int v2; // ecx - int v3; // ecx - - globals_fast = __cxa_get_globals_fast(); - v1 = (_DWORD *)*globals_fast; - if ( *globals_fast ) - { - if ( ((unsigned int)(v1[12] - 1126902528) > 1) - + ((unsigned __int64)(*((_QWORD *)v1 + 6) - 0x474E5543432B2B00LL) >> 32) ) - { - *globals_fast = 0; - _Unwind_DeleteException((struct _Unwind_Exception *)(v1 + 12)); - return; - } - v2 = v1[5]; - if ( v2 < 0 ) - { - v3 = v2 + 1; - if ( !v3 ) - *globals_fast = v1[4]; - } - else - { - v3 = v2 - 1; - if ( !v3 ) - { - *globals_fast = v1[4]; - _Unwind_DeleteException((struct _Unwind_Exception *)(v1 + 12)); - return; - } - if ( v3 == -1 ) - std::terminate(); - } - v1[5] = v3; - } -} - -//----- (00533440) -------------------------------------------------------- -void __cdecl __cxa_free_dependent_exception(char *Block) -{ - if ( Block > ::Block && Block < (char *)::Block + dword_53E500 ) - `anonymous namespace'::pool::free((int)Block); - else - free(Block); -} -// 53E500: using guessed type int dword_53E500; - -//----- (005334B0) -------------------------------------------------------- -void __cdecl __cxa_free_exception(void *a1) -{ - char *v1; // eax - - v1 = (char *)a1 - 96; - if ( (char *)a1 - 96 > Block && v1 < (char *)Block + dword_53E500 ) - `anonymous namespace'::pool::free((int)v1); - else - free((char *)a1 - 96); -} -// 53E500: using guessed type int dword_53E500; - -//----- (00533520) -------------------------------------------------------- -void *__cdecl __cxa_get_exception_ptr(void *a1) -{ - return (void *)*((_DWORD *)a1 - 2); -} - -//----- (00533530) -------------------------------------------------------- -_DWORD *__cxa_get_globals() -{ - return __emutls_get_address(__emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global); -} -// 53FD00: using guessed type size_t __emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global[4]; - -//----- (00533550) -------------------------------------------------------- -_DWORD *__cxa_get_globals_fast() -{ - return __emutls_get_address(__emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global); -} -// 53FD00: using guessed type size_t __emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global[4]; - -//----- (00533570) -------------------------------------------------------- -void __cdecl __cxa_guard_abort(__guard *a1) -{ - *((_BYTE *)a1 + 1) = 0; - if ( _CRT_MT ) - { - if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) - __gnu_cxx::__throw_concurrence_unlock_error(); - } -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F0C0: using guessed type int `anonymous namespace'::static_mutex; - -//----- (00533610) -------------------------------------------------------- -int __cdecl __cxa_guard_acquire(__guard *a1) -{ - _DWORD *exception; // eax - int lpuexcpt; // [esp+18h] [ebp-44h] - - if ( *(_BYTE *)a1 ) - return 0; - lpuexcpt = _CRT_MT; - if ( _CRT_MT ) - { - __gthr_win32_once( - (int)&`anonymous namespace'::get_static_mutex(void)::once, - (void (*)(void))`anonymous namespace'::init); - if ( _CRT_MT ) - { - if ( __gthr_win32_recursive_mutex_lock(`anonymous namespace'::static_mutex) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_55F348; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); - } - if ( !*(_BYTE *)a1 ) - goto LABEL_9; - if ( _CRT_MT && __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) - __gnu_cxx::__throw_concurrence_unlock_error(); - } - else if ( !*(_BYTE *)a1 ) - { -LABEL_9: - if ( *((_BYTE *)a1 + 1) ) - __cxxabiv1::throw_recursive_init_exception(); - goto LABEL_5; - } - return 0; - } - if ( !*(_BYTE *)a1 ) - { - if ( *((_BYTE *)a1 + 1) ) - __cxxabiv1::throw_recursive_init_exception(); -LABEL_5: - lpuexcpt = 1; - *((_BYTE *)a1 + 1) = 1; - } - return lpuexcpt; -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F0C0: using guessed type int `anonymous namespace'::static_mutex; -// 55B6E8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; -// 55F348: using guessed type void (__cdecl *off_55F348)(__gnu_cxx::__concurrence_lock_error *__hidden this); - -//----- (005337B0) -------------------------------------------------------- -void __cdecl __cxa_guard_release(__guard *a1) -{ - *((_BYTE *)a1 + 1) = 0; - *(_BYTE *)a1 = 1; - if ( _CRT_MT ) - { - if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) - __gnu_cxx::__throw_concurrence_unlock_error(); - } -} -// 53E1E4: using guessed type int _CRT_MT; -// 53F0C0: using guessed type int `anonymous namespace'::static_mutex; - -//----- (00533850) -------------------------------------------------------- -int __cdecl __cxa_init_primary_exception(int a1, int a2, int a3) -{ - void (*terminate)(void); // eax - int result; // eax - - *(_DWORD *)(a1 - 80) = a2; - *(_DWORD *)(a1 - 96) = 0; - *(_DWORD *)(a1 - 76) = a3; - *(_DWORD *)(a1 - 72) = std::get_unexpected(); - terminate = std::get_terminate(); - *(_DWORD *)(a1 - 32) = 1126902528; - *(_DWORD *)(a1 - 68) = terminate; - result = a1 - 96; - *(_DWORD *)(a1 - 28) = 1196315971; - *(_DWORD *)(a1 - 24) = __gxx_exception_cleanup; - return result; -} - -//----- (005338A0) -------------------------------------------------------- -void __noreturn __cxa_pure_virtual(void) -{ - write(2, "pure virtual method called\n", 0x1Bu); - std::terminate(); -} - -//----- (005338D0) -------------------------------------------------------- -void __noreturn __cxa_rethrow(void) -{ - int *globals; // eax - int v1; // edx - - globals = __cxa_get_globals(); - v1 = *globals; - ++globals[1]; - if ( v1 ) - { - if ( ((unsigned int)(*(_DWORD *)(v1 + 48) - 1126902528) > 1) - + ((unsigned __int64)(*(_QWORD *)(v1 + 48) - 0x474E5543432B2B00LL) >> 32) ) - { - *globals = 0; - } - else - { - *(_DWORD *)(v1 + 20) = -*(_DWORD *)(v1 + 20); - } - _Unwind_SjLj_Resume_or_Rethrow((struct _Unwind_Exception *)(v1 + 48)); - } - std::terminate(); -} - -//----- (00533930) -------------------------------------------------------- -void __cdecl __noreturn __cxa_throw(void *a1, struct type_info *lptinfo, void (__cdecl *a3)(void *)) -{ - _DWORD *globals; // eax - _DWORD *inited; // eax - void *v5; // ebx - - globals = __cxa_get_globals(); - ++globals[1]; - inited = (_DWORD *)__cxa_init_primary_exception((int)a1, (int)lptinfo, (int)a3); - v5 = inited + 16; - *inited = 1; - _Unwind_SjLj_RaiseException((struct _Unwind_Exception *)(inited + 16)); - __cxa_begin_catch(v5); - std::terminate(); -} - -//----- (00533980) -------------------------------------------------------- -void *__cdecl __dynamic_cast( - const void *lpsrc, - const struct __class_type_info *lpstype, - const struct __class_type_info *lpdtype, - ptrdiff_t s2d) -{ - int v4; // edx - int v5; // ecx - int *v6; // edx - int v7; // eax - void *result; // eax - char *v9; // [esp+48h] [ebp-20h] BYREF - int v10; // [esp+4Ch] [ebp-1Ch] - int v11; // [esp+50h] [ebp-18h] - int v12; // [esp+54h] [ebp-14h] - int v13; // [esp+58h] [ebp-10h] - - v4 = *(_DWORD *)(*(_DWORD *)lpsrc - 8); - v5 = *(_DWORD *)(*(_DWORD *)lpsrc - 4); - v9 = 0; - v10 = 0; - v6 = (int *)((char *)lpsrc + v4); - v11 = 0; - v7 = *v6; - v12 = 0; - v13 = 16; - if ( *(_DWORD *)(v7 - 4) != v5 ) - return 0; - (*(void (__thiscall **)(int, ptrdiff_t, int, const struct __class_type_info *, int *, const struct __class_type_info *, const void *, char **))(*(_DWORD *)v5 + 28))( - v5, - s2d, - 6, - lpdtype, - v6, - lpstype, - lpsrc, - &v9); - result = v9; - if ( !v9 ) - return 0; - if ( (v12 & 6) != 6 && ((unsigned __int8)v11 & (unsigned __int8)v10 & 6) != 6 ) - { - if ( (v11 & 5) != 4 && !v12 ) - { - if ( s2d < 0 ) - { - if ( s2d != -2 - && ((*(int (__thiscall **)(const struct __class_type_info *, ptrdiff_t, char *, const struct __class_type_info *, const void *))(*(_DWORD *)lpdtype + 32))( - lpdtype, - s2d, - v9, - lpstype, - lpsrc) & 6) == 6 ) - { - return v9; - } - } - else if ( lpsrc == &v9[s2d] ) - { - return v9; - } - } - return 0; - } - return result; -} - -//----- (00533AA0) -------------------------------------------------------- -int __cdecl __gxx_personality_sj0(int a1, int a2, __int64 a3, _Unwind_Exception *v, struct _Unwind_Context *lpuctx) -{ - int IPInfo; // eax - int v7; // ebp - char *v8; // eax - int v9; // edi - int v10; // ecx - char v11; // bl - int v12; // edx - int v13; // esi - int v14; // ecx - char v15; // bl - int v16; // edx - int v17; // edx - unsigned int v18; // ecx - char *v19; // esi - char v20; // bl - int v21; // eax - char *v22; // ebx - int v23; // esi - unsigned int v24; // ecx - int v25; // edi - char v26; // dl - int v27; // eax - int v28; // esi - char *v29; // edx - int v30; // ecx - char v31; // bl - int v32; // eax - int v33; // edx - unsigned __int8 v34; // al - int v35; // ecx - int *v36; // eax - bool v37; // [esp+18h] [ebp-B4h] - int v38; // [esp+18h] [ebp-B4h] - int v39; // [esp+20h] [ebp-ACh] - char *v40; // [esp+20h] [ebp-ACh] - int v41; // [esp+24h] [ebp-A8h] - char *v42; // [esp+24h] [ebp-A8h] - int v43; // [esp+28h] [ebp-A4h] - int v44; // [esp+2Ch] [ebp-A0h] - unsigned __int64 v45; // [esp+30h] [ebp-9Ch] - char v46; // [esp+3Bh] [ebp-91h] - char *LanguageSpecificData; // [esp+3Ch] [ebp-90h] - int **v48; // [esp+40h] [ebp-8Ch] - int v49; // [esp+48h] [ebp-84h] - int *v50; // [esp+8Ch] [ebp-40h] BYREF - unsigned int v51; // [esp+90h] [ebp-3Ch] BYREF - unsigned __int8 v52[4]; // [esp+94h] [ebp-38h] BYREF - char v53[8]; // [esp+98h] [ebp-34h] BYREF - int *v54; // [esp+A0h] [ebp-2Ch] - int v55; // [esp+A4h] [ebp-28h] - int v56; // [esp+A8h] [ebp-24h] - char v57; // [esp+ACh] [ebp-20h] - - v50 = 0; - v51 = 0; - if ( a1 != 1 ) - return 3; - v45 = a3 - 0x474E5543432B2B00LL; - v37 = (unsigned __int64)(a3 - 0x474E5543432B2B00LL) <= 1; - v46 = v37 && a2 == 6; - if ( v46 ) - { - v39 = *((_DWORD *)v - 3); - if ( v39 ) - { - v41 = *((_DWORD *)v - 6); - LanguageSpecificData = (char *)*((_DWORD *)v - 4); - goto LABEL_5; - } - goto LABEL_44; - } - LanguageSpecificData = (char *)_Unwind_GetLanguageSpecificData((int)lpuctx); - if ( !LanguageSpecificData ) - return 8; - v42 = parse_lsda_header((int)lpuctx, LanguageSpecificData, (int)v53); - v54 = (int *)base_of_encoded_value(v57); - IPInfo = _Unwind_GetIPInfo((int)lpuctx, &v51); - v7 = (__PAIR64__(IPInfo, v51) - 1) >> 32; - v39 = v7; - if ( v7 < 0 ) - return 8; - if ( !v7 ) - { - v41 = 0; - v33 = 1; - v44 = 0; - goto LABEL_49; - } - v8 = v42; - do - { - v9 = 0; - v10 = 0; - do - { - v11 = *v8++; - v12 = (v11 & 0x7F) << v10; - v10 += 7; - v9 |= v12; - } - while ( v11 < 0 ); - v13 = 0; - v14 = 0; - do - { - v15 = *v8++; - v16 = (v15 & 0x7F) << v14; - v14 += 7; - v13 |= v16; - } - while ( v15 < 0 ); - --v7; - } - while ( v7 ); - v49 = v9 + 1; - if ( !v13 ) - { - if ( v9 == -1 ) - return 8; - goto LABEL_46; - } - if ( v9 == -1 ) - return 8; - v44 = v56 + v13 - 1; - if ( v56 + v13 == 1 ) - goto LABEL_46; - v48 = &`typeinfo for'__cxxabiv1::__forced_unwind; - if ( (a2 & 8) == 0 ) - { - v48 = &`typeinfo for'__cxxabiv1::__foreign_exception; - if ( v45 <= 1 ) - { - v36 = (int *)((char *)v + 32); - if ( (*(_BYTE *)v & 1) != 0 ) - v36 = (int *)*((_DWORD *)v - 12); - v50 = v36; - v48 = (int **)*(v36 - 20); - } - } - while ( 1 ) - { - v17 = 0; - v18 = 0; - v19 = (char *)v44; - do - { - v20 = *v19++; - v21 = (v20 & 0x7F) << v18; - v18 += 7; - v17 |= v21; - } - while ( v20 < 0 ); - v40 = v19; - if ( v18 <= 0x1F && (v20 & 0x40) != 0 ) - v17 |= -(1 << v18); - v41 = v17; - v22 = v19; - v23 = 0; - v24 = 0; - v25 = v17; - do - { - v26 = *v22++; - v27 = (v26 & 0x7F) << v24; - v24 += 7; - v23 |= v27; - } - while ( v26 < 0 ); - v43 = v23; - if ( v24 <= 0x1F && (v26 & 0x40) != 0 ) - v43 = -(1 << v24) | v23; - if ( !v25 ) - { - v46 = 1; - goto LABEL_41; - } - if ( v25 > 0 ) - break; - if ( (a2 & 8) == 0 && v37 && v48 ) - { - if ( !(unsigned __int8)check_exception_spec((int)v53, (int)v48, v50, v25) ) - { - if ( (a2 & 1) != 0 ) - { - v39 = v49; - goto LABEL_56; - } - v39 = v49; - if ( (a2 & 8) == 0 ) - { - v33 = 3; -LABEL_51: - if ( v45 <= 1 ) - { - if ( v33 != 1 ) - { -LABEL_5: - if ( v41 < 0 ) - { - parse_lsda_header((int)lpuctx, LanguageSpecificData, (int)v53); - v54 = (int *)base_of_encoded_value(v57); - *((_DWORD *)v - 3) = base_of_encoded_value(v57); - } -LABEL_7: - _Unwind_SetGR(lpuctx, 0, (_Unwind_Word)v); - _Unwind_SetGR(lpuctx, 1, v41); - _Unwind_SetIP((int)lpuctx, v39); - return 7; - } -LABEL_44: - __cxa_call_terminate(v); - } -LABEL_52: - if ( v33 == 1 ) - std::terminate(); - } - if ( v41 < 0 ) - std::unexpected(); - goto LABEL_7; - } - } - else - { - v28 = 0; - v29 = (char *)(v55 + ~v25); - v30 = 0; - do - { - v31 = *v29++; - v32 = (v31 & 0x7F) << v30; - v30 += 7; - v28 |= v32; - } - while ( v31 < 0 ); - if ( !v28 ) - goto LABEL_67; - } -LABEL_41: - if ( !v43 ) - { - if ( !v46 ) - return 8; -LABEL_46: - if ( (a2 & 1) == 0 ) - { - v41 = a2 & 8; - v39 = v49; - if ( (a2 & 8) != 0 ) - v41 = 0; - goto LABEL_7; - } - return 8; - } - v44 = (int)&v40[v43]; - } - if ( v57 == -1 ) - { - v35 = 0; - goto LABEL_64; - } - v34 = v57 & 7; - if ( (v57 & 7) == 2 ) - { - v35 = -2 * v25; - goto LABEL_64; - } - if ( v34 <= 2u ) - { - if ( v34 ) -LABEL_85: - abort(); - goto LABEL_69; - } - if ( v34 == 3 ) - { -LABEL_69: - v35 = -4 * v25; - goto LABEL_64; - } - if ( v34 != 4 ) - goto LABEL_85; - v35 = -8 * v25; -LABEL_64: - read_encoded_value_with_base(v57, v54, (int *)(v55 + v35), (int *)v52); - if ( *(_DWORD *)v52 && (!v48 || !(unsigned __int8)get_adjusted_ptr(*(int *)v52, (int)v48, &v50)) ) - goto LABEL_41; -LABEL_67: - v33 = 3; - v39 = v49; -LABEL_49: - if ( (a2 & 1) == 0 ) - { - if ( (a2 & 8) == 0 ) - goto LABEL_51; - goto LABEL_52; - } - v38 = 6; - if ( v45 <= 1 ) - { -LABEL_56: - v38 = 6; - *((_DWORD *)v - 6) = v41; - *((_DWORD *)v - 5) = v44; - *((_DWORD *)v - 4) = LanguageSpecificData; - *((_DWORD *)v - 2) = v50; - *((_DWORD *)v - 3) = v39; - } - return v38; -} -// 55B60C: using guessed type int *`typeinfo for'__cxxabiv1::__forced_unwind; -// 55B620: using guessed type int *`typeinfo for'__cxxabiv1::__foreign_exception; - -//----- (005341E0) -------------------------------------------------------- -void __tcf_0_4(void) -{ - if ( _CRT_MT ) - __gthr_win32_mutex_destroy((int)&`anonymous namespace'::emergency_pool); -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00534250) -------------------------------------------------------- -void __tcf_0_5(void) -{ - if ( _CRT_MT ) - __gthr_win32_mutex_destroy((int)&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (00534280) -------------------------------------------------------- -void __tcf_0_6(void) -{ - if ( _CRT_MT ) - __gthr_win32_mutex_destroy((int)&`anonymous namespace'::get_locale_mutex(void)::locale_mutex); -} -// 53E1E4: using guessed type int _CRT_MT; - -//----- (005342F0) -------------------------------------------------------- -void __cdecl __tcf_0_7(std::_V2::error_category *a1) -{ - `anonymous namespace'::__io_category_instance(void)::__ec = &off_55F16C; - std::_V2::error_category::~error_category(a1); -} -// 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); -// 55F16C: using guessed type void (__cdecl *off_55F16C)(_anonymous_namespace_::io_error_category *__hidden this); - -//----- (00534330) -------------------------------------------------------- -int main(int argc, const char **argv, const char **envp) -{ - int *v3; // edi - _DWORD *v4; // eax - _BYTE *v5; // edx - char v6; // al - char v7; // al - FILE *v8; // eax - int v9; // edx - char *v10; // eax - _DWORD *v11; // eax - _DWORD *v12; // eax - char v13; // al - FILE *v14; // eax - void **v15; // ebx - char *v16; // ecx - int v17; // edx - int v18; // edx - char *v19; // eax - char *v20; // eax - char *v21; // eax - _DWORD *v22; // edx - int v23; // edx - _DWORD *v24; // eax - int v25; // edx - FILE *v26; // eax - bool v27; // zf - int *v28; // eax - std::ostream::sentry *v29; // edx - int *v30; // eax - _DWORD *v31; // eax - unsigned __int8 **v32; // eax - unsigned __int8 **v33; // eax - int *j; // eax - std::ostream::sentry *v35; // eax - std::ostream::sentry *v36; // eax - _DWORD *v37; // eax - FILE *v38; // eax - int v39; // edx - int v40; // edx - int v41; // edx - char v43; // [esp+1h] [ebp-38Bh] - char v44; // [esp+2h] [ebp-38Ah] - char v45; // [esp+3h] [ebp-389h] - const char **v46; // [esp+4h] [ebp-388h] - int v47; // [esp+8h] [ebp-384h] - FILE *v48; // [esp+Ch] [ebp-380h] - int v49; // [esp+Ch] [ebp-380h] - int v50; // [esp+Ch] [ebp-380h] - bool v51; // [esp+10h] [ebp-37Ch] - int v52; // [esp+10h] [ebp-37Ch] - char v53; // [esp+14h] [ebp-378h] - int *flag; // [esp+14h] [ebp-378h] - int v55; // [esp+18h] [ebp-374h] - std::ostream::sentry *i; // [esp+18h] [ebp-374h] - std::ostream::sentry *v57; // [esp+18h] [ebp-374h] - _DWORD *Block; // [esp+1Ch] [ebp-370h] - bool v59; // [esp+20h] [ebp-36Ch] - int v60; // [esp+20h] [ebp-36Ch] - std::ostream::sentry *v61; // [esp+20h] [ebp-36Ch] - std::ostream::sentry *v62; // [esp+20h] [ebp-36Ch] - int *k; // [esp+20h] [ebp-36Ch] - char *FileName; // [esp+24h] [ebp-368h] - char *FileNamea; // [esp+24h] [ebp-368h] - int v66; // [esp+28h] [ebp-364h] - int v67; // [esp+28h] [ebp-364h] - int v68; // [esp+28h] [ebp-364h] - int v69; // [esp+28h] [ebp-364h] - int v70; // [esp+28h] [ebp-364h] - int Stream; // [esp+2Ch] [ebp-360h] - FILE *Streama; // [esp+2Ch] [ebp-360h] - FILE *Streamk; // [esp+2Ch] [ebp-360h] - FILE *Streamb; // [esp+2Ch] [ebp-360h] - FILE *Streamc; // [esp+2Ch] [ebp-360h] - FILE *Streamd; // [esp+2Ch] [ebp-360h] - FILE *Streame; // [esp+2Ch] [ebp-360h] - FILE *Streaml; // [esp+2Ch] [ebp-360h] - FILE *Streamf; // [esp+2Ch] [ebp-360h] - FILE *Streamg; // [esp+2Ch] [ebp-360h] - int *Streamh; // [esp+2Ch] [ebp-360h] - FILE *Streamm; // [esp+2Ch] [ebp-360h] - FILE *Streami; // [esp+2Ch] [ebp-360h] - FILE *Streamn; // [esp+2Ch] [ebp-360h] - FILE *Streamj; // [esp+2Ch] [ebp-360h] - void **v86; // [esp+68h] [ebp-324h] BYREF - void **v87; // [esp+6Ch] [ebp-320h] - int v88; // [esp+70h] [ebp-31Ch] - _DWORD *v89; // [esp+74h] [ebp-318h] BYREF - int v90; // [esp+78h] [ebp-314h] - int v91; // [esp+7Ch] [ebp-310h] - void **v92; // [esp+80h] [ebp-30Ch] BYREF - int v93; // [esp+84h] [ebp-308h] - int v94; // [esp+88h] [ebp-304h] - char *v95; // [esp+8Ch] [ebp-300h] BYREF - int v96; // [esp+90h] [ebp-2FCh] - char v97; // [esp+94h] [ebp-2F8h] BYREF - char *v98; // [esp+A4h] [ebp-2E8h] BYREF - int v99; // [esp+A8h] [ebp-2E4h] - char v100; // [esp+ACh] [ebp-2E0h] BYREF - int v101; // [esp+BCh] [ebp-2D0h] BYREF - int v102[5]; // [esp+C0h] [ebp-2CCh] BYREF - void *v103[6]; // [esp+D4h] [ebp-2B8h] BYREF - void *v104[6]; // [esp+ECh] [ebp-2A0h] BYREF - int v105; // [esp+104h] [ebp-288h] BYREF - int v106[5]; // [esp+108h] [ebp-284h] BYREF - int v107; // [esp+11Ch] [ebp-270h] BYREF - int v108[5]; // [esp+120h] [ebp-26Ch] BYREF - int v109; // [esp+134h] [ebp-258h] BYREF - int v110[5]; // [esp+138h] [ebp-254h] BYREF - void *v111[2]; // [esp+14Ch] [ebp-240h] BYREF - char v112; // [esp+154h] [ebp-238h] BYREF - void *v113[2]; // [esp+164h] [ebp-228h] BYREF - char v114; // [esp+16Ch] [ebp-220h] BYREF - int v115; // [esp+17Ch] [ebp-210h] BYREF - int v116; // [esp+180h] [ebp-20Ch] BYREF - std::ostream::sentry *v117; // [esp+184h] [ebp-208h] - int *v118; // [esp+188h] [ebp-204h] - int *v119; // [esp+18Ch] [ebp-200h] - int v120; // [esp+190h] [ebp-1FCh] - int v121; // [esp+194h] [ebp-1F8h] BYREF - int v122[2]; // [esp+198h] [ebp-1F4h] BYREF - int *v123; // [esp+1A0h] [ebp-1ECh] - int *v124; // [esp+1A4h] [ebp-1E8h] - int v125; // [esp+1A8h] [ebp-1E4h] - _DWORD v126[6]; // [esp+1ACh] [ebp-1E0h] BYREF - void *v127[6]; // [esp+1C4h] [ebp-1C8h] BYREF - void *v128[6]; // [esp+1DCh] [ebp-1B0h] BYREF - void *v129[6]; // [esp+1F4h] [ebp-198h] BYREF - void *v130[6]; // [esp+20Ch] [ebp-180h] BYREF - int v131; // [esp+224h] [ebp-168h] BYREF - int v132; // [esp+228h] [ebp-164h] - int v133; // [esp+22Ch] [ebp-160h] - char *String[6]; // [esp+23Ch] [ebp-150h] BYREF - void *v135[6]; // [esp+254h] [ebp-138h] BYREF - char *v136[6]; // [esp+26Ch] [ebp-120h] BYREF - int v137; // [esp+284h] [ebp-108h] BYREF - int v138; // [esp+288h] [ebp-104h] - char v139; // [esp+28Ch] [ebp-100h] BYREF - char *v140; // [esp+29Ch] [ebp-F0h] BYREF - int v141; // [esp+2A0h] [ebp-ECh] - int v142[4]; // [esp+2A4h] [ebp-E8h] BYREF - int v143; // [esp+2B4h] [ebp-D8h] BYREF - int v144; // [esp+2B8h] [ebp-D4h] - char v145[4]; // [esp+2BCh] [ebp-D0h] BYREF - char v146[196]; // [esp+2C0h] [ebp-CCh] BYREF - int *p_argc; // [esp+384h] [ebp-8h] - - p_argc = &argc; - v47 = argc; - v46 = argv; - __main(); - v95 = &v97; - v98 = &v100; - v86 = 0; - v87 = 0; - v88 = 0; - v96 = 0; - v97 = 0; - v99 = 0; - v100 = 0; - v89 = 0; - v90 = 0; - v91 = 0; - v92 = 0; - v93 = 0; - v94 = 0; - v102[0] = 0; - v102[1] = 0; - v102[2] = (int)v102; - v102[3] = (int)v102; - v102[4] = 0; - // main - 0 - std::string::basic_string(v103, "$gwx"); - std::string::basic_string(v104, " "); - v106[0] = 0; - v106[1] = 0; - v106[2] = (int)v106; - v106[3] = (int)v106; - v106[4] = 0; - // main - 5 - for ( Stream = 1; Stream < v47; ++Stream ) - { - std::string::basic_string((void **)&v143, "--config-path"); - v66 = Stream; - FileName = (char *)&v46[Stream]; - v59 = 0; - if ( !std::string::compare((int)&v143, *(char **)FileName) ) - v59 = Stream + 1 < v47; - std::string::_M_dispose((void **)&v143); - if ( v59 ) - { - ++Stream; - std::string::operator=((unsigned int *)&v98, (char *)v46[v66 + 1]); - } - else - { - std::string::basic_string((void **)&v143, *(char **)FileName); - std::vector::emplace_back((void **)&v89, &v143); - std::string::_M_dispose((void **)&v143); - } - } - - // main - 10 - if ( v99 ) - { - v138 = 0; - v137 = (int)&v139; - v139 = 0; - ReadFile(v98, (unsigned int *)&v137); - while ( v138 ) - { - std::string::basic_string((void **)&v140, "\n"); - GetNextArg((int)&v143, &v137, (int)&v140); - std::vector::emplace_back((void **)&v89, &v143); - std::string::_M_dispose((void **)&v143); - std::string::_M_dispose((void **)&v140); - } - std::string::_M_dispose((void **)&v137); - } - // main - 15 - Streama = 0; - v43 = 0; - v44 = 0; - v60 = 0; - v53 = 0; - v55 = -1431655765 * ((v90 - (int)v89) >> 3); - v45 = 0; - FileNamea = 0; - // main - 20 - while ( (int)Streama < v55 ) - { - v67 = 6 * (_DWORD)Streama; - v4 = &v89[6 * (_DWORD)Streama]; - v5 = (_BYTE *)*v4; - if ( *(_BYTE *)*v4 != 45 ) - { - std::vector::push_back((int)&v86, (int)v4); - goto LABEL_84; - } - v6 = v5[1]; - switch ( v6 ) - { - case 'd': - v7 = v5[2]; - if ( !v7 ) - { - v60 |= 2u; - goto LABEL_84; - } - if ( v7 == 115 ) - { - v60 |= 4u; - goto LABEL_84; - } - break; - case 's': - if ( v5[2] == 116 ) - { - v60 |= 8u; - goto LABEL_84; - } - if ( (int)&Streama->_ptr + 1 < v55 ) - { - std::vector::push_back((int)&v86, (int)&v89[v67 + 6]); - v45 = 1; - goto LABEL_84; - } - break; - case 'v': - if ( v5[2] == 'b'/*98*/ ) - v60 |= 0x10u; - else - v44 = 1; - goto LABEL_84; - case 'x': - if ( v5[2] == 99 && (int)&Streama->_ptr + 1 < v55 ) - { - v53 = 1; - if ( *(_BYTE *)v89[v67 + 6] != 45 ) - { - std::string::_M_assign((int)&v95, (int)&v89[v67 + 6]); - v53 = 1; - Streama = (FILE *)((char *)Streama + 1); - } - goto LABEL_84; - } - break; - case 'c': - if ( v5[2] == 99 && (int)&Streama->_ptr + 1 < v55 ) - { - v53 = 0; - if ( *(_BYTE *)v89[v67 + 6] != 45 ) - { - std::string::_M_assign((int)&v95, (int)&v89[v67 + 6]); - v53 = 0; - Streama = (FILE *)((char *)Streama + 1); - } - goto LABEL_84; - } - break; - case 'o': - v8 = (FILE *)((char *)&Streama->_ptr + 1); - if ( (int)&Streama->_ptr + 1 < v55 ) - { - FileNamea = (char *)v89[v67 + 6]; - LABEL_72: - Streama = v8; - goto LABEL_84; - } - break; - case 'g': - if ( v5[2] == 110 && (int)&Streama->_ptr + 1 < v55 ) - { - std::string::_M_assign((int)v103, (int)&v89[v67 + 6]); - v8 = (FILE *)((char *)&Streama->_ptr + 1); - goto LABEL_72; - } - break; - case 'p': - v60 |= 0x20u; - goto LABEL_84; - case 't': - v60 |= 1u; - goto LABEL_84; - case 'i': - v60 |= 0x40u; - goto LABEL_84; // continue; - } - std::string::basic_string((void **)&v143, "--split"); - v51 = std::operator==((int)&v89[v67], (int)&v143); - if ( v51 ) - v51 = (int)&Streama->_ptr + 1 < v55; - std::string::_M_dispose((void **)&v143); - if ( v51 ) - { - Streama = (FILE *)((char *)Streama + 1); - std::string::_M_assign((int)v104, (int)&v89[v67 + 6]); - goto LABEL_84; - } - v9 = v89[6 * (_DWORD)Streama]; - if ( *(_BYTE *)(v9 + 1) == 99 && *(_BYTE *)(v9 + 2) == 98 ) - { - LOBYTE(v142[0]) = 0; - v140 = (char *)v142; - v10 = (char *)v89[v67 + 6]; - Streama = (FILE *)((char *)Streama + 1); - v60 |= 0x80u; - v141 = 0; - ReadFile(v10, (unsigned int *)&v140); - if ( v141 ) - { - std::string::basic_string((void **)&v143, "life_cycle_callback_content"); - v11 = std::map::operator[](&v105, &v143); - std::string::_M_assign((int)v11, (int)&v140); - std::string::_M_dispose((void **)&v143); - } - std::string::_M_dispose((void **)&v140); - } - else - { - if ( !std::string::compare((int)&v89[v67], "--pm") ) - { - v48 = (FILE *)((char *)&Streama->_ptr + 1); - if ( (int)&Streama->_ptr + 1 < v55 ) - { - Streamk = (FILE *)&v89[v67 + 6]; - std::string::basic_string((void **)&v143, "plain_text_marker"); - v12 = std::map::operator[](&v105, &v143); - std::string::_M_assign((int)v12, (int)Streamk); - std::string::_M_dispose((void **)&v143); - v8 = v48; - goto LABEL_72; - } - } - v49 = v89[6 * (_DWORD)Streama]; - if ( *(_BYTE *)(v49 + 1) == 108 && *(_BYTE *)(v49 + 2) == 108 ) - { - v13 = *(_BYTE *)(v49 + 3); - if ( v13 != 119 ) - { - if ( v13 != 97 ) - { - v14 = ___acrt_iob_func(2u); - fprintf(v14, "Error: expected -llw or -lla, but got %s", (const char *)v49); - v68 = -1; - goto LABEL_153; // 销毁数据,返回 - } - v51 = 1; - } - if ( !std::string::compare((int)v104, " ") ) - std::string::basic_string((void **)&v143, ","); - else - std::string::basic_string((char *)&v143, (int)v104); - Streama = (FILE *)((char *)Streama + 1); - Split((int)&v131, &v89[v67 + 6], (int)&v143); - v15 = (void **)v131; - v16 = (char *)v92; - v131 = 0; - v17 = v93; - v92 = v15; - v140 = v16; - v93 = v132; - v142[0] = v94; - v141 = v17; - v94 = v133; - v132 = 0; - v133 = 0; - std::vector::~vector((void ***)&v140, v17); - std::vector::~vector((void ***)&v131, v18); - std::string::_M_dispose((void **)&v143); - v43 = 1; - v53 = v51; - } - } - LABEL_84: - Streama = (FILE *)((char *)Streama + 1); - } - // main - 25 - if ( v44 ) - { - std::string::basic_string((void **)&v143, "global"); - WXML::Compiler::GetVersionInfo((int)&v140, &v143); - std::string::_M_dispose((void **)&v143); - Streamb = ___acrt_iob_func(1u); - if ( FileNamea && *FileNamea ) - Streamb = fopen(FileNamea, "w"); - fprintf(Streamb, "%s\n", v140); - fclose(Streamb); - std::string::_M_dispose((void **)&v140); - } - // main - 30 - if ( v86 == v87 ) - { - v68 = Usage(v47, v46); - // 直接销毁,返回 - } - else - { - v108[0] = 0; - v108[2] = (int)v108; - v108[3] = (int)v108; - v108[1] = 0; - v108[4] = 0; - v110[0] = 0; - v110[1] = 0; - v110[2] = (int)v110; - v110[3] = (int)v110; - v110[4] = 0; - Streamc = 0; - // main - 35 - // isReadFromStdin - if ( v45 ) - { - v143 = (int)v145; - v144 = 0; - v145[0] = 0; - ReadFile(0, (unsigned int *)&v143); - v19 = std::map::operator[](&v107, (int)v86); - std::string::_M_assign((int)v19, (int)&v143); - std::string::_M_dispose((void **)&v143); - } - else - { - while ( -1431655765 * (((char *)v87 - (char *)v86) >> 3) > (unsigned int)Streamc ) - { - v145[0] = 0; - v143 = (int)v145; - v20 = (char *)v86[6 * (_DWORD)Streamc]; - v144 = 0; - ReadFile(v20, (unsigned int *)&v143); - v21 = std::map::operator[](&v107, (int)&v86[6 * (_DWORD)Streamc]); - std::string::_M_assign((int)v21, (int)&v143); - std::string::_M_dispose((void **)&v143); - Streamc = (FILE *)((char *)Streamc + 1); - } - } - // main - 40 - if ( v96 ) //if (!xc_Or_completeCode_Param.empty()) - { - GetNextArg((int)String, (int *)&v95, (int)v104); - v52 = strtoull(String[0], 0, 10); - std::string::_M_dispose((void **)String); - v131 = 0; - v132 = 0; - v133 = 0; - for ( i = 0; (int)i < v52; i = (std::ostream::sentry *)((char *)i + 1) ) - { - v141 = 0; - v140 = (char *)v142; - LOBYTE(v142[0]) = 0; - memset(String, 0, 12); - GetNextArg((int)v135, (int *)&v95, (int)v104); - // v95 xc_Or_completeCode_Param, v104 splitMarkStr - // v135 = GetNextArg(v95, v104) - std::string::operator=((unsigned __int8 **)&v140, (int)v135); - // v140 = v135 = GetNextArg(v95, v104) - std::string::_M_dispose(v135); - GetNextArg((int)v136, (int *)&v95, (int)v104); - v50 = strtoull(v136[0], 0, 10); - std::string::_M_dispose((void **)v136); - for ( Streamd = 0; (int)Streamd < v50; Streamd = (FILE *)((char *)Streamd + 1) ) - { - v144 = 0; - v143 = (int)v145; - v145[0] = 0; - GetNextArg((int)&v137, (int *)&v95, (int)v104); - // v137 = GetNextArg(v95, v104) - std::string::operator=((unsigned __int8 **)&v143, (int)&v137); - std::string::_M_dispose((void **)&v137); - std::vector::push_back((int)String, (int)&v143); - v69 = v132; - if ( v69 == std::find<__gnu_cxx::__normal_iterator>,std::string>( - v131, - v132, - (int)&v143) ) - // v143 arg2 - std::vector::push_back((int)&v131, (int)&v143); - std::string::_M_dispose((void **)&v143); - } - Streame = (FILE *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>> - ::lower_bound( - &v109, - (int)&v140); - // Streame = v109.lower_bound(v140) - // v109 vecFileContentMap - if ( Streame == (FILE *)v110 || (unsigned __int8)std::operator<((int)&v140, (int)&Streame->_file) ) - { - Block = operator new(0x34u); // 34 -> 4 - std::string::basic_string((char *)Block + 16, (int)&v140); - Block[10] = 0; - Block[11] = 0; - Block[12] = 0; - Streame = (FILE *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>> - ::_M_get_insert_hint_unique_pos( - &v109, - Streame, - (int)(Block + 4)); - // v109._M_get_insert_hint_unique_pos() - if ( v22 ) - { - Streame = (FILE *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>> - ::_M_insert_node( - &v109, - (int)Streame, - v22, - Block); - } - else - { - std::vector::~vector((void ***)Block + 10, 0); - std::string::_M_dispose((void **)Block + 4); - operator delete(Block); - } - } - std::vector::operator=((int)&Streame[1]._base, (int *)String); - std::vector::~vector((void ***)String, v23); - std::string::_M_dispose((void **)&v140); - } - std::string::basic_string((void **)&v143, "ALL"); - v24 = std::map>::operator[](&v109, &v143); - std::vector::operator=((int)v24, &v131); - std::string::_M_dispose((void **)&v143); - std::vector::~vector((void ***)&v131, v25); - } - // main - 45 - v111[1] = 0; - v111[0] = &v112; - v113[0] = &v114; - v112 = 0; - v113[1] = 0; - v114 = 0; - v116 = 0; - v117 = 0; - v118 = &v116; - v119 = &v116; - v120 = 0; - if ( v43 ) // hasLL - { - v70 = v93; - for ( Streamg = (FILE *)v92; Streamg != (FILE *)v70; Streamg = (FILE *)((char *)Streamg + 24) ) - { - if ( *Streamg->_ptr == 46 && Streamg->_ptr[1] == 47 ) - { - std::string::substr(&v143, Streamg, 2u, 0xFFFFFFFF); - std::string::operator=((unsigned __int8 **)Streamg, (int)&v143); - std::string::_M_dispose((void **)&v143); - } - } - v122[0] = 0; - v122[1] = 0; - v123 = v122; - v124 = v122; - v125 = 0; - std::string::basic_string((void **)&v143, "l_"); - std::string::basic_string((void **)&v140, "f_"); - std::string::basic_string((void **)&v137, "$gdwx"); - std::string::basic_string((void **)v136, "boxofchocolate"); - std::string::basic_string(v135, (char *)&byte_5402D0); - std::string::basic_string((void **)String, "p_"); - std::string::basic_string((void **)&v131, "d_"); - std::string::basic_string(v130, "e_"); - std::string::basic_string(v129, "gg"); - std::string::basic_string(v128, (char *)off_5403C3); - std::string::basic_string(v127, (char *)&off_5403C3[2]); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree( - v126, - (int)&v109); - v68 = (int)WXML::Compiler::CompileLazy( - &v107, // fileContentMap - (int *)v111, // errorMessage - &v115, // outputContentMap - &v101, // outputFuncMap - &v121, // dependencyListMap - v126, // componentListMap - (int *)&v92, // splitedData - &v105, // mapData1 - v53, // isLLA - (int)v103,// gwxMark - v60, // mark - 10, // '\n' - (int *)v127, // 'e' - (int *)v128,// const char off_5403C3[] = {'s','\0','e','\0'} - (int *)v129,// "gg" - (int *)v130,// "e_" - &v131, // "d_" - (int *)String, // "p_" - (int)v135, // '\0' - (int)v136, // "boxofchocolate" - (int)&v137, // "$gdwx" - (int *)&v140); // "f_" - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)v126); - std::string::_M_dispose(v127); - std::string::_M_dispose(v128); - std::string::_M_dispose(v129); - std::string::_M_dispose(v130); - std::string::_M_dispose((void **)&v131); - std::string::_M_dispose((void **)String); - std::string::_M_dispose(v135); - std::string::_M_dispose((void **)v136); - std::string::_M_dispose((void **)&v137); - std::string::_M_dispose((void **)&v140); - std::string::_M_dispose((void **)&v143); - std::string::basic_string((void **)&v140, "__COMMON__"); - // int v115 -> outputContentMap - v61 = v117; // 根节点 - Streamh = &v116; // 0 - // 查找outputContentMap有没有名为__COMMON__的key - while ( v61 ) - { - v27 = (unsigned __int8)std::operator<((int)v61 + 16, (int)&v140) == 0; - v28 = Streamh; - v29 = (std::ostream::sentry *)*((_DWORD *)v61 + 3); - if ( v27 ) - { - v29 = (std::ostream::sentry *)*((_DWORD *)v61 + 2); - if ( v27 ) - v28 = (int *)v61; - } - v61 = v29; - Streamh = v28; - } - if ( Streamh != &v116 ) - { - v27 = (unsigned __int8)std::operator<((int)&v140, (int)(Streamh + 4)) == 0; - v30 = &v116; - if ( v27 ) - v30 = Streamh; - Streamh = v30; - } - std::string::_M_dispose((void **)&v140); - if ( Streamh == &v116 ) - { - WXML::Compiler::WXMLHelperCode[abi:cxx11]((void **)&v140); - std::string::basic_string( - (void **)&v137, - "var __wxAppData=__wxAppData||{};var __wxAppCode__=__wxAppCode__||{};var global=global||{};var __WXML_GLOBAL__=" - "__WXML_GLOBAL__||{entrys:{},defines:{},modules:{},ops:[],wxs_nf_init:undefined,total_ops:0};var Component=Comp" - "onent||function(){};var definePlugin=definePlugin||function(){};var requirePlugin=requirePlugin||function(){};" - "var Behavior=Behavior||function(){};var __vd_version_info__=__vd_version_info__||{};var __GWX_GLOBAL__=__GWX_G" - "LOBAL__||{};var __globalThis=(typeof __vd_version_info__!=='undefined'&&typeof __vd_version_info__.globalThis!" - "=='undefined')?__vd_version_info__.globalThis:(typeof window!=='undefined'?window:globalThis);"); - std::operator+(&v143, &v137, (unsigned int *)&v140); - std::string::basic_string((void **)v136, "__COMMON__"); - // v115["__COMMON__"] = v137 + v140 - v33 = (unsigned __int8 **)std::map::operator[](&v115, v136); - std::string::operator=(v33, (int)&v143); - std::string::_M_dispose((void **)v136); - std::string::_M_dispose((void **)&v143); - std::string::_M_dispose((void **)&v137); - } - else - { - std::string::basic_string((void **)&v140, "__COMMON__"); - // int v115 -> outputContentMap - Streamm = (FILE *)std::map::operator[](&v115, &v140); - // v115["__COMMON__"] - WXML::Compiler::WXMLHelperCode[abi:cxx11]((void **)v136); - std::string::basic_string( - v135, - "var __wxAppData=__wxAppData||{};var __wxAppCode__=__wxAppCode__||{};var global=global||{};var __WXML_GLOBAL__=" - "__WXML_GLOBAL__||{entrys:{},defines:{},modules:{},ops:[],wxs_nf_init:undefined,total_ops:0};var Component=Comp" - "onent||function(){};var definePlugin=definePlugin||function(){};var requirePlugin=requirePlugin||function(){};" - "var Behavior=Behavior||function(){};var __vd_version_info__=__vd_version_info__||{};var __GWX_GLOBAL__=__GWX_G" - "LOBAL__||{};var __globalThis=(typeof __vd_version_info__!=='undefined'&&typeof __vd_version_info__.globalThis!" - "=='undefined')?__vd_version_info__.globalThis:(typeof window!=='undefined'?window:globalThis);"); - std::operator+(&v137, v135, (unsigned int *)v136); - // v137 = v135 + v136 - v31 = std::string::append(&v137, (int)Streamm); - // v137.append(Streamm) - std::string::basic_string(&v143, v31); - std::string::basic_string((void **)String, "__COMMON__"); - v32 = (unsigned __int8 **)std::map::operator[](&v115, String); - // v115["__COMMON__"] = v143 - std::string::operator=(v32, (int)&v143); - std::string::_M_dispose((void **)String); - std::string::_M_dispose((void **)&v143); - std::string::_M_dispose((void **)&v137); - std::string::_M_dispose(v135); - std::string::_M_dispose((void **)v136); - } - std::string::_M_dispose((void **)&v140); - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v143); - std::operator<<>((std::ostream::sentry *)v145, ";var __WXML_DEP__=__WXML_DEP__||{};"); - // int *j - for ( j = v123; ; j = (int *)std::_Rb_tree_increment((int)Streami) ) - { - Streami = (FILE *)j; - if ( j == v122 ) // end - break; - if ( j[11] != j[10] ) - { - v62 = std::operator<<>((std::ostream::sentry *)v145, "__WXML_DEP__[\""); - // key - WXML::Rewrite::ToStringCode((int)&v140, &Streami->_file); - v35 = std::operator<<(v62, (int *)&v140); - std::operator<<>(v35, "\"]=["); - std::string::_M_dispose((void **)&v140); - flag = (int *)Streami[1]._flag; - // value - 引用列表 - for ( k = (int *)Streami[1]._base; flag != k; k += 6 ) - { - v57 = std::operator<<>((std::ostream::sentry *)v145, "\""); - WXML::Rewrite::ToStringCode((int)&v140, k); - v36 = std::operator<<(v57, (int *)&v140); - std::operator<<>(v36, "\","); - std::string::_M_dispose((void **)&v140); - } - std::operator<<>((std::ostream::sentry *)v145, "];"); - } - } - std::stringbuf::str((int)&v140, (int)v146); - std::string::basic_string((void **)&v137, "__COMMON__"); - // int v115 -> outputContentMap - v37 = std::map::operator[](&v115, &v137); - // v37 = v115["__COMMON__"] - std::string::append(v37, (int)&v140); - std::string::_M_dispose((void **)&v137); - std::string::_M_dispose((void **)&v140); - if ( v68 ) - { - Streamn = (FILE *)v111[0]; - v38 = ___acrt_iob_func(2u); // stderr - fprintf(v38, "Error %d: %s\n", v68, (const char *)Streamn); - } - else - { - Streamj = ___acrt_iob_func(1u); - if ( FileNamea && *FileNamea ) - Streamj = fopen(FileNamea, "w"); - DictToJsonString((int)v136, (int)&v115); - DictToJsonString((int)&v137, (int)&v101); - std::string::basic_string((void **)&v140, " {\"generateFunctionContent\":%s,\"generateFunctionName\":%s} "); - fprintf(Streamj, v140, v136[0], v137); - fclose(Streamj); - std::string::_M_dispose((void **)&v140); - std::string::_M_dispose((void **)&v137); - std::string::_M_dispose((void **)v136); - } - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v143); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v121); - } - // main - 50 - else - { - std::string::basic_string((void **)&v143, "l_"); - std::string::basic_string((void **)&v140, "f_"); - std::string::basic_string((void **)&v137, "$gdwx"); - std::string::basic_string((void **)v136, "boxofchocolate"); - std::string::basic_string(v135, (char *)&byte_5402D0); - std::string::basic_string((void **)String, "p_"); - std::string::basic_string((void **)&v131, "d_"); - std::string::basic_string(v130, "e_"); - std::string::basic_string(v129, "gg"); - std::string::basic_string(v128, (char *)off_5403C3); - std::string::basic_string(v127, (char *)&off_5403C3[2]); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree( - v126, - (int)&v109); - v68 = (int)WXML::Compiler::Compile( - v3, - &v107, - (int *)v111, // errpr - (unsigned __int8 **)v113, // result - v126, - &v105, - v53, - (int *)v103, // gwxMark - v60, // mark - 10, // '\n' - (int *)v127, // off_5403C3[2] - (int *)v128, // off_5403C3 - (int *)v129, // "gg" - (int *)v130, // "e_" - &v131, // "d_" - (int *)String, // "p_" - (int)v135, // '\0' - (int)v136, // "boxofchocolate" - (int)&v137, // "$gdwx" - (int *)&v140); // "f_" - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)v126); - std::string::_M_dispose(v127); - std::string::_M_dispose(v128); - std::string::_M_dispose(v129); - std::string::_M_dispose(v130); - std::string::_M_dispose((void **)&v131); - std::string::_M_dispose((void **)String); - std::string::_M_dispose(v135); - std::string::_M_dispose((void **)v136); - std::string::_M_dispose((void **)&v137); - std::string::_M_dispose((void **)&v140); - std::string::_M_dispose((void **)&v143); - if ( v68 ) - { - Streaml = (FILE *)v111[0]; - v26 = ___acrt_iob_func(2u); // stderr - fprintf(v26, "%s\n", (const char *)Streaml); - } - else - { - Streamf = ___acrt_iob_func(1u); // stdout - if ( FileNamea && *FileNamea ) - Streamf = fopen(FileNamea, "w"); // specify file - fprintf(Streamf, "%s\n", (const char *)v113[0]); - fclose(Streamf); - } - } - // main - 55 - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v115); - std::string::_M_dispose(v113); - std::string::_M_dispose(v111); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v109); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v107); - } -LABEL_153: - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v105); - std::string::_M_dispose(v104); - std::string::_M_dispose(v103); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v101); - std::vector::~vector(&v92, v39); - std::vector::~vector((void ***)&v89, v40); - std::string::_M_dispose((void **)&v98); - std::string::_M_dispose((void **)&v95); - std::vector::~vector(&v86, v41); - return v68; -} -// 534D34: variable 'v18' is possibly undefined -// 535379: variable 'v22' is possibly undefined -// 5353F7: variable 'v23' is possibly undefined -// 535470: variable 'v25' is possibly undefined -// 535726: variable 'v3' is possibly undefined -// 5366AE: variable 'v39' is possibly undefined -// 5366B9: variable 'v40' is possibly undefined -// 5366DA: variable 'v41' is possibly undefined -// 534330: using guessed type char var_D0[4]; -// 534330: using guessed type _DWORD var_1E0[6]; -// 534330: using guessed type char var_CC[196]; - -//----- (005366FD) -------------------------------------------------------- -int _GLOBAL__sub_I__Z5UsageiPPKc() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_1); -} - -//----- (0053671C) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXML8Compiler9GetFuncIdERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS7_ESaISt4pairIKS7_iEEERSB_() -{ - std::ios_base::Init::Init(); - atexit(__tcf_2); - std::string::basic_string((void **)&night::nsv_, (char *)off_551C90); - atexit(__tcf_3); - std::string::basic_string((void **)&night::nst_, (char *)off_551C94); - atexit(__tcf_4); - std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); - atexit(__tcf_5); - std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); - atexit(__tcf_6); - std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)off_551CA2); - atexit(__tcf_7); - std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)off_551CA6); - atexit(__tcf_8); - std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)off_551CAA); - atexit(__tcf_9); - std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); - atexit(__tcf_10); - std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); - atexit(__tcf_11); - std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); - atexit(__tcf_12); - std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); - atexit(__tcf_13); - std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); - atexit(__tcf_14); - std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); - atexit(__tcf_15); - std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); - atexit(__tcf_16); - std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); - atexit(__tcf_17); - std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)off_551CE4); - atexit(__tcf_18); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); - atexit(__tcf_19); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); - atexit(__tcf_20); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); - atexit(__tcf_21); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); - atexit(__tcf_22); - std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); - atexit(__tcf_23); - std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); - atexit(__tcf_24); - std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); - atexit(__tcf_25); - std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)off_551D24); - atexit(__tcf_26); - std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); - atexit(__tcf_27); - std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); - atexit(__tcf_28); - std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); - atexit(__tcf_29); - std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); - atexit(__tcf_30); - std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); - atexit(__tcf_31); - std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); - atexit(__tcf_32); - std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); - atexit(__tcf_33); - std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); - atexit(__tcf_34); - std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); - atexit(__tcf_35); - std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); - atexit(__tcf_36); - std::string::basic_string( - (void **)&night::NS_BUILTIN_ALL_OP, - " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); - atexit(__tcf_37); - std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); - atexit(__tcf_38); - std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); - atexit(__tcf_39); - std::string::basic_string( - (void **)&night::NS_BUILTIN_KW, - " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" - "ile do break continue switch case default "); - atexit(__tcf_40); - std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); - return atexit(__tcf_41); -} - -//----- (00536BCC) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN5night8NSStreamC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j() -{ - std::string::basic_string(&night::nsv_, (char *)off_552FC0); - atexit(__tcf_1_0); - std::string::basic_string((void **)&night::nst_, (char *)off_552FC4); - atexit(__tcf_2_0); - std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); - atexit(__tcf_3_0); - std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); - atexit(__tcf_4_0); - std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)off_551FFE); - atexit(__tcf_5_0); - std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)off_552086); - atexit(__tcf_6_0); - std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)off_551FEA); - atexit(__tcf_7_0); - std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); - atexit(__tcf_8_0); - std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); - atexit(__tcf_9_0); - std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); - atexit(__tcf_10_0); - std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); - atexit(__tcf_11_0); - std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); - atexit(__tcf_12_0); - std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); - atexit(__tcf_13_0); - std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); - atexit(__tcf_14_0); - std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); - atexit(__tcf_15_0); - std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)off_5520BF); - atexit(__tcf_16_0); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); - atexit(__tcf_17_0); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); - atexit(__tcf_18_0); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); - atexit(__tcf_19_0); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); - atexit(__tcf_20_0); - std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); - atexit(__tcf_21_0); - std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); - atexit(__tcf_22_0); - std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); - atexit(__tcf_23_0); - std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)off_552210); - atexit(__tcf_24_0); - std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); - atexit(__tcf_25_0); - std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); - atexit(__tcf_26_0); - std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); - atexit(__tcf_27_0); - std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); - atexit(__tcf_28_0); - std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); - atexit(__tcf_29_0); - std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); - atexit(__tcf_30_0); - std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); - atexit(__tcf_31_0); - std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); - atexit(__tcf_32_0); - std::string::basic_string((void **)night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); - atexit(__tcf_33_0); - std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); - atexit(__tcf_34_0); - std::string::basic_string( - (void **)night::NS_BUILTIN_ALL_OP, - " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); - atexit(__tcf_35_0); - std::string::basic_string((void **)night::NS_BUILTIN_PUNC, ".,;(){}[]:"); - atexit(__tcf_36_0); - std::string::basic_string((void **)night::NS_BUILTIN_SPACE, " \t\r\n"); - atexit(__tcf_37_0); - std::string::basic_string( - (void **)night::NS_BUILTIN_KW, - " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" - "ile do break continue switch case default "); - atexit(__tcf_38_0); - std::string::basic_string((void **)night::NS_BUILTIN_TYPE, " Number Math Date "); - atexit(__tcf_39_0); - std::string::basic_string((void **)&night::std_v_n, "new std::vector"); - atexit(__tcf_40_0); - std::string::basic_string((void **)&night::std_v_v_n, "new std::vector*>"); - return atexit(__tcf_41_0); -} -// 565A60: using guessed type int night::NS_BUILTIN_TYPE[6]; -// 565A78: using guessed type int night::NS_BUILTIN_KW[6]; -// 565A90: using guessed type int night::NS_BUILTIN_SPACE[6]; -// 565AA8: using guessed type int night::NS_BUILTIN_PUNC[6]; -// 565AC0: using guessed type int night::NS_BUILTIN_ALL_OP[6]; -// 565AF0: using guessed type int night::NS_BUILTIN_OP[6]; -// 565DF0: using guessed type void *night::nsv_; - -//----- (005370A4) -------------------------------------------------------- -size_t __thiscall std::string::basic_string(void **this, char *Str) -{ - char *v3; // edi - size_t result; // eax - _BYTE *v5; // edx - size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = strlen(Str); - v3 = &Str[v6[0]]; - if ( v6[0] > 0xF ) - { - *this = std::string::_M_create(v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); - result = v6[0]; - v5 = *this; - this[1] = (void *)v6[0]; - v5[result] = 0; - return result; -} -// 5370A4: using guessed type size_t var_1C[7]; - -//----- (00537121) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN5night9sourcemap21gen_sourcemap_contentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapIS6_jSt4lessIS6_ESaISt4pairIS7_jEEES9_IjS6_SA_IjESaISC_IKjS6_EEERSt6vectorINS_12ns_sourcemapESaISM_EEiRS6_PS6_() -{ - std::string::basic_string((void **)&night::nsv_, (char *)off_55325C); - atexit(__tcf_0); - std::string::basic_string((void **)&night::nst_, (char *)off_553260); - atexit(__tcf_1_1); - std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); - atexit(__tcf_2_1); - std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); - atexit(__tcf_3_1); - std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)off_55326E); - atexit(__tcf_4_1); - std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)off_553272); - atexit(__tcf_5_1); - std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)off_553276); - atexit(__tcf_6_1); - std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); - atexit(__tcf_7_1); - std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); - atexit(__tcf_8_1); - std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); - atexit(__tcf_9_1); - std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); - atexit(__tcf_10_1); - std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); - atexit(__tcf_11_1); - std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); - atexit(__tcf_12_1); - std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); - atexit(__tcf_13_1); - std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); - atexit(__tcf_14_1); - std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)off_5532B0); - atexit(__tcf_15_1); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); - atexit(__tcf_16_1); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); - atexit(__tcf_17_1); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); - atexit(__tcf_18_1); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); - atexit(__tcf_19_1); - std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); - atexit(__tcf_20_1); - std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); - atexit(__tcf_21_1); - std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); - atexit(__tcf_22_1); - std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)off_5532F0); - atexit(__tcf_23_1); - std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); - atexit(__tcf_24_1); - std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); - atexit(__tcf_25_1); - std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); - atexit(__tcf_26_1); - std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); - atexit(__tcf_27_1); - std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); - atexit(__tcf_28_1); - std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); - atexit(__tcf_29_1); - std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); - atexit(__tcf_30_1); - std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); - atexit(__tcf_31_1); - std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); - atexit(__tcf_32_1); - std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); - atexit(__tcf_33_1); - std::string::basic_string( - (void **)&night::NS_BUILTIN_ALL_OP, - " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); - atexit(__tcf_34_1); - std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); - atexit(__tcf_35_1); - std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); - atexit(__tcf_36_1); - std::string::basic_string( - (void **)&night::NS_BUILTIN_KW, - " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" - "ile do break continue switch case default "); - atexit(__tcf_37_1); - std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); - return atexit(__tcf_38_1); -} - -//----- (005375BC) -------------------------------------------------------- -size_t __thiscall std::string::basic_string(void **this, char *Str) -{ - char *v3; // edi - size_t result; // eax - _BYTE *v5; // edx - size_t v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = strlen(Str); - v3 = &Str[v6[0]]; - if ( v6[0] > 0xF ) - { - *this = std::string::_M_create(v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); - result = v6[0]; - v5 = *this; - this[1] = (void *)v6[0]; - v5[result] = 0; - return result; -} -// 5375BC: using guessed type size_t var_1C[7]; - -//----- (00537639) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN5night3str12path_combineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_RS6_() -{ - std::string::basic_string((void **)&night::nsv_, (char *)off_55350E); - atexit(__tcf_1_2); - std::string::basic_string((void **)&night::nst_, (char *)off_553512); - atexit(__tcf_2_2); - std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); - atexit(__tcf_3_2); - std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); - atexit(__tcf_4_2); - std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)off_553520); - atexit(__tcf_5_2); - std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)off_553524); - atexit(__tcf_6_2); - std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)off_553528); - atexit(__tcf_7_2); - std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); - atexit(__tcf_8_2); - std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); - atexit(__tcf_9_2); - std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); - atexit(__tcf_10_2); - std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); - atexit(__tcf_11_2); - std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); - atexit(__tcf_12_2); - std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); - atexit(__tcf_13_2); - std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); - atexit(__tcf_14_2); - std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); - atexit(__tcf_15_2); - std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)off_553562); - atexit(__tcf_16_2); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); - atexit(__tcf_17_2); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); - atexit(__tcf_18_2); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); - atexit(__tcf_19_2); - std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); - atexit(__tcf_20_2); - std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); - atexit(__tcf_21_2); - std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); - atexit(__tcf_22_2); - std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); - atexit(__tcf_23_2); - std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)off_5535A2); - atexit(__tcf_24_2); - std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); - atexit(__tcf_25_2); - std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); - atexit(__tcf_26_2); - std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); - atexit(__tcf_27_2); - std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); - atexit(__tcf_28_2); - std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); - atexit(__tcf_29_2); - std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); - atexit(__tcf_30_2); - std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); - atexit(__tcf_31_2); - std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); - atexit(__tcf_32_2); - std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); - atexit(__tcf_33_2); - std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); - atexit(__tcf_34_2); - std::string::basic_string( - (void **)&night::NS_BUILTIN_ALL_OP, - " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); - atexit(__tcf_35_2); - std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); - atexit(__tcf_36_2); - std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); - atexit(__tcf_37_2); - std::string::basic_string( - (void **)&night::NS_BUILTIN_KW, - " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" - "ile do break continue switch case default "); - atexit(__tcf_38_2); - std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); - return atexit(__tcf_39_1); -} - -//----- (00537AD4) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXML6DOMLib7WXMLDom12componentCntE() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_1_3); -} - -//----- (00537AF4) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXML6DOMLib7Machine5ResetEv() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_0_0); -} - -//----- (00537B14) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXML7EXPRLib7OPShort5CONSTE() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_1_4); -} - -//----- (00537B34) -------------------------------------------------------- -int _GLOBAL__sub_I__ZNK4WXML7EXPRLib5Token12GetTokenNameEv() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_0_2); -} - -//----- (00537B54) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXML7EXPRLib12TransitTable13GetExprNTTypeEv() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_1_5); -} - -//----- (00537B74) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXML16StringTemplating4DealEPKcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorINS0_5TokenESaISB_EERb() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_0_3); -} - -//----- (00537BA0) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv() -{ - _DWORD *v0; // eax - - if ( _CRT_MT ) - __gthr_win32_mutex_init_function(`anonymous namespace'::emergency_pool); - dword_53E500 = 18944; - v0 = malloc(0x4A00u); - Block = v0; - if ( v0 ) - { - dword_53E4F8 = (int)v0; - *v0 = 18944; - v0[1] = 0; - } - else - { - dword_53E500 = 0; - dword_53E4F8 = 0; - } - return atexit(__tcf_0_4); -} -// 53E1E4: using guessed type int _CRT_MT; -// 53E4F0: using guessed type _DWORD `anonymous namespace'::emergency_pool[2]; -// 53E4F8: using guessed type int dword_53E4F8; -// 53E500: using guessed type int dword_53E500; - -//----- (00537C20) -------------------------------------------------------- -void __noreturn __cxxabiv1::throw_recursive_init_exception(void) -{ - _DWORD *exception; // ebx - - exception = __cxa_allocate_exception(4u); - __gnu_cxx::recursive_init_error::recursive_init_error(exception); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::recursive_init_error, - (void (__cdecl *)(void *))__gnu_cxx::recursive_init_error::~recursive_init_error); -} -// 55B6DC: using guessed type int *`typeinfo for'__gnu_cxx::recursive_init_error; - -//----- (00537C60) -------------------------------------------------------- -void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() -{ - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::money_get>::id ) - `guard variable for'std::money_get>::id = 1; - if ( !`guard variable for'std::money_put>::id ) - `guard variable for'std::money_put>::id = 1; - if ( !`guard variable for'std::numpunct::id ) - `guard variable for'std::numpunct::id = 1; - if ( !`guard variable for'std::time_get>::id ) - `guard variable for'std::time_get>::id = 1; - if ( !`guard variable for'std::messages::id ) - `guard variable for'std::messages::id = 1; - if ( !`guard variable for'std::collate::id ) - `guard variable for'std::collate::id = 1; -} -// 53E2A0: using guessed type char `guard variable for'std::moneypunct::id; -// 53E2A8: using guessed type char `guard variable for'std::moneypunct::id; -// 53E2C0: using guessed type char `guard variable for'std::collate::id; -// 53E2D0: using guessed type char `guard variable for'std::messages::id; -// 53E2E0: using guessed type char `guard variable for'std::numpunct::id; -// 53E2F0: using guessed type char `guard variable for'std::time_get>::id; -// 53E300: using guessed type char `guard variable for'std::money_get>::id; -// 53E310: using guessed type char `guard variable for'std::money_put>::id; - -//----- (00537CF0) -------------------------------------------------------- -void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() -{ - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::money_get>::id ) - `guard variable for'std::money_get>::id = 1; - if ( !`guard variable for'std::money_put>::id ) - `guard variable for'std::money_put>::id = 1; - if ( !`guard variable for'std::numpunct::id ) - `guard variable for'std::numpunct::id = 1; - if ( !`guard variable for'std::time_get>::id ) - `guard variable for'std::time_get>::id = 1; - if ( !`guard variable for'std::messages::id ) - `guard variable for'std::messages::id = 1; - if ( !`guard variable for'std::collate::id ) - `guard variable for'std::collate::id = 1; -} -// 53E2B0: using guessed type char `guard variable for'std::moneypunct::id; -// 53E2B8: using guessed type char `guard variable for'std::moneypunct::id; -// 53E2C8: using guessed type char `guard variable for'std::collate::id; -// 53E2D8: using guessed type char `guard variable for'std::messages::id; -// 53E2E8: using guessed type char `guard variable for'std::numpunct::id; -// 53E2F8: using guessed type char `guard variable for'std::time_get>::id; -// 53E308: using guessed type char `guard variable for'std::money_get>::id; -// 53E318: using guessed type char `guard variable for'std::money_put>::id; - -//----- (00537D80) -------------------------------------------------------- -void __noreturn std::__throw_bad_exception(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_56008C; - __cxa_throw(exception, (struct type_info *)&`typeinfo for'std::bad_exception, std::bad_exception::~bad_exception); -} -// 55BF08: using guessed type int *`typeinfo for'std::bad_exception; -// 56008C: using guessed type void (__cdecl *off_56008C)(std::bad_exception *__hidden this); - -//----- (00537DB0) -------------------------------------------------------- -void __noreturn std::__throw_bad_alloc(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_560E0C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_alloc, - (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); -} -// 55C490: using guessed type int *`typeinfo for'std::bad_alloc; -// 560E0C: using guessed type void (__cdecl *off_560E0C)(std::bad_alloc *__hidden this); - -//----- (00537DE0) -------------------------------------------------------- -void __noreturn std::__throw_bad_cast(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_560CF0; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_cast, - (void (__cdecl *)(void *))std::bad_cast::~bad_cast); -} -// 55C3CC: using guessed type int *`typeinfo for'std::bad_cast; -// 560CF0: using guessed type void (__cdecl *off_560CF0)(std::bad_cast *__hidden this); - -//----- (00537E10) -------------------------------------------------------- -void __noreturn std::__throw_bad_typeid(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_55FE8C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_typeid, - (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); -} -// 55BDD8: using guessed type int `typeinfo for'std::bad_typeid; -// 55FE8C: using guessed type void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this); - -//----- (00537E40) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_logic_error(std::logic_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::logic_error::logic_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::logic_error, - (void (__cdecl *)(void *))std::logic_error::~logic_error); -} -// 537E8B: variable 'v1' is possibly undefined -// 55BE94: using guessed type int *`typeinfo for'std::logic_error; - -//----- (00537ED8) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_domain_error(std::domain_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::domain_error::domain_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::domain_error, - (void (__cdecl *)(void *))std::domain_error::~domain_error); -} -// 537F23: variable 'v1' is possibly undefined -// 55BECC: using guessed type int *`typeinfo for'std::domain_error; - -//----- (00537F70) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::invalid_argument::invalid_argument(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::invalid_argument, - (void (__cdecl *)(void *))std::invalid_argument::~invalid_argument); -} -// 537FBB: variable 'v1' is possibly undefined -// 55C0FC: using guessed type int *`typeinfo for'std::invalid_argument; - -//----- (00538008) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_length_error(std::length_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::length_error::length_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::length_error, - (void (__cdecl *)(void *))std::length_error::~length_error); -} -// 538053: variable 'v1' is possibly undefined -// 55BED8: using guessed type int *`typeinfo for'std::length_error; - -//----- (005380A0) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::out_of_range::out_of_range(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::out_of_range, - (void (__cdecl *)(void *))std::out_of_range::~out_of_range); -} -// 5380EB: variable 'v1' is possibly undefined -// 55BEE4: using guessed type int *`typeinfo for'std::out_of_range; - -//----- (00538138) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::runtime_error::runtime_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::runtime_error, - (void (__cdecl *)(void *))std::runtime_error::~runtime_error); -} -// 538183: variable 'v1' is possibly undefined -// 55BF7C: using guessed type int *`typeinfo for'std::runtime_error; - -//----- (005381D0) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_range_error(std::range_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::range_error::range_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::range_error, - (void (__cdecl *)(void *))std::range_error::~range_error); -} -// 53821B: variable 'v1' is possibly undefined -// 55BEA0: using guessed type int *`typeinfo for'std::range_error; - -//----- (00538268) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::overflow_error::overflow_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::overflow_error, - (void (__cdecl *)(void *))std::overflow_error::~overflow_error); -} -// 5382B3: variable 'v1' is possibly undefined -// 55C008: using guessed type int *`typeinfo for'std::overflow_error; - -//----- (00538300) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::underflow_error::underflow_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::underflow_error, - (void (__cdecl *)(void *))std::underflow_error::~underflow_error); -} -// 53834B: variable 'v1' is possibly undefined -// 55C0CC: using guessed type int *`typeinfo for'std::underflow_error; - -//----- (005383A0) -------------------------------------------------------- -void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj() -{ - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::money_get>::id ) - `guard variable for'std::money_get>::id = 1; - if ( !`guard variable for'std::money_put>::id ) - `guard variable for'std::money_put>::id = 1; - if ( !`guard variable for'std::numpunct::id ) - `guard variable for'std::numpunct::id = 1; - if ( !`guard variable for'std::num_get>::id ) - `guard variable for'std::num_get>::id = 1; - if ( !`guard variable for'std::num_put>::id ) - `guard variable for'std::num_put>::id = 1; - if ( !`guard variable for'std::__timepunct::id ) - `guard variable for'std::__timepunct::id = 1; - if ( !`guard variable for'std::time_put>::id ) - `guard variable for'std::time_put>::id = 1; - if ( !`guard variable for'std::time_get>::id ) - `guard variable for'std::time_get>::id = 1; - if ( !`guard variable for'std::messages::id ) - `guard variable for'std::messages::id = 1; - if ( !`guard variable for'std::collate::id ) - `guard variable for'std::collate::id = 1; -} -// 53E270: using guessed type char `guard variable for'std::moneypunct::id; -// 53E278: using guessed type char `guard variable for'std::moneypunct::id; -// 53E290: using guessed type char `guard variable for'std::__timepunct::id; -// 53E320: using guessed type char `guard variable for'std::collate::id; -// 53E330: using guessed type char `guard variable for'std::num_get>::id; -// 53E340: using guessed type char `guard variable for'std::num_put>::id; -// 53E350: using guessed type char `guard variable for'std::messages::id; -// 53E360: using guessed type char `guard variable for'std::numpunct::id; -// 53E370: using guessed type char `guard variable for'std::time_get>::id; -// 53E380: using guessed type char `guard variable for'std::time_put>::id; -// 53E390: using guessed type char `guard variable for'std::money_get>::id; -// 53E3A0: using guessed type char `guard variable for'std::money_put>::id; - -//----- (00538470) -------------------------------------------------------- -void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj() -{ - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::money_get>::id ) - `guard variable for'std::money_get>::id = 1; - if ( !`guard variable for'std::money_put>::id ) - `guard variable for'std::money_put>::id = 1; - if ( !`guard variable for'std::numpunct::id ) - `guard variable for'std::numpunct::id = 1; - if ( !`guard variable for'std::num_get>::id ) - `guard variable for'std::num_get>::id = 1; - if ( !`guard variable for'std::num_put>::id ) - `guard variable for'std::num_put>::id = 1; - if ( !`guard variable for'std::__timepunct::id ) - `guard variable for'std::__timepunct::id = 1; - if ( !`guard variable for'std::time_put>::id ) - `guard variable for'std::time_put>::id = 1; - if ( !`guard variable for'std::time_get>::id ) - `guard variable for'std::time_get>::id = 1; - if ( !`guard variable for'std::messages::id ) - `guard variable for'std::messages::id = 1; - if ( !`guard variable for'std::collate::id ) - `guard variable for'std::collate::id = 1; -} -// 53E280: using guessed type char `guard variable for'std::moneypunct::id; -// 53E288: using guessed type char `guard variable for'std::moneypunct::id; -// 53E298: using guessed type char `guard variable for'std::__timepunct::id; -// 53E328: using guessed type char `guard variable for'std::collate::id; -// 53E338: using guessed type char `guard variable for'std::num_get>::id; -// 53E348: using guessed type char `guard variable for'std::num_put>::id; -// 53E358: using guessed type char `guard variable for'std::messages::id; -// 53E368: using guessed type char `guard variable for'std::numpunct::id; -// 53E378: using guessed type char `guard variable for'std::time_get>::id; -// 53E388: using guessed type char `guard variable for'std::time_put>::id; -// 53E398: using guessed type char `guard variable for'std::money_get>::id; -// 53E3A8: using guessed type char `guard variable for'std::money_put>::id; - -//----- (00538540) -------------------------------------------------------- -void __cdecl __noreturn d_type_cold( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - int a10, - int a11) -{ - BUG(); -} - -//----- (005385D4) -------------------------------------------------------- -void __noreturn __cxa_bad_cast(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_560CF0; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_cast, - (void (__cdecl *)(void *))std::bad_cast::~bad_cast); -} -// 55C3CC: using guessed type int *`typeinfo for'std::bad_cast; -// 560CF0: using guessed type void (__cdecl *off_560CF0)(std::bad_cast *__hidden this); - -//----- (00538604) -------------------------------------------------------- -void __noreturn __cxa_bad_typeid(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_55FE8C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_typeid, - (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); -} -// 55BDD8: using guessed type int `typeinfo for'std::bad_typeid; -// 55FE8C: using guessed type void (__cdecl *off_55FE8C)(std::bad_typeid *__hidden this); - -//----- (00538634) -------------------------------------------------------- -void __noreturn __cxa_throw_bad_array_new_length(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_560848; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_array_new_length, - (void (__cdecl *)(void *))std::bad_array_new_length::~bad_array_new_length); -} -// 55C1E0: using guessed type int *`typeinfo for'std::bad_array_new_length; -// 560848: using guessed type void (__cdecl *off_560848)(std::bad_array_new_length *__hidden this); - -//----- (00538664) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_ios_failure(char *a1) -{ - char *v1; // eax - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(0x18u); - if ( !(_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec ) - { - if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) - { - __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); - atexit((_PVFV)__tcf_0_7); - } - } - std::system_error::system_error(exception, 1, (int)&`anonymous namespace'::__io_category_instance(void)::__ec, a1); - *exception = &off_560078; - v1 = (char *)std::runtime_error::what((int)exception); - std::__construct_ios_failure(exception + 4, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::__ios_failure, - (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); -} -// 53FCD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); -// 55BEFC: using guessed type int *`typeinfo for'std::__ios_failure; -// 560078: using guessed type void (__cdecl *off_560078)(std::__ios_failure *__hidden this); - -//----- (00538784) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1, std::runtime_error *a2) -{ - int v2; // [esp+8h] [ebp-50h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(0x18u); - std::__ios_failure::__ios_failure(exception, a1, (int)a2, v2); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::__ios_failure, - (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); -} -// 5387D6: variable 'v2' is possibly undefined -// 55BEFC: using guessed type int *`typeinfo for'std::__ios_failure; - -//----- (00538824) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_system_error(int a1) -{ - _DWORD *exception; // [esp+18h] [ebp-60h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v3; // [esp+60h] [ebp-18h] BYREF - - exception = __cxa_allocate_exception(0x10u); - `anonymous namespace'::system_error_category::message[abi:cxx11]( - Block, - (int)&`anonymous namespace'::generic_category_instance, - a1); - std::runtime_error::runtime_error(exception, (int)Block); - if ( Block[0] != &v3 ) - operator delete(Block[0]); - *exception = &off_560064; - exception[2] = a1; - exception[3] = &`anonymous namespace'::generic_category_instance; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::system_error, - (void (__cdecl *)(void *))std::system_error::~system_error); -} -// 53F0C8: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); -// 55BEF0: using guessed type int *`typeinfo for'std::system_error; -// 560064: using guessed type void (__cdecl *off_560064)(std::system_error *__hidden this); - -//----- (00538920) -------------------------------------------------------- -int _GLOBAL__sub_I__ZSt20__throw_system_errori() -{ - atexit(__tcf_0_8); - return atexit(__tcf_1_6); -} - -// nfuncs=4679 queued=4486 decompiled=4486 lumina nreq=0 worse=0 better=0 -#error "There were 9 decompilation failure(s) on 4486 function(s)" +/* This file was generated by the Hex-Rays decompiler version 8.3.0.230608. + Copyright (c) 2007-2021 Hex-Rays + + Detected compiler: GNU C++ +*/ + +#include +#include + +#include + + +//------------------------------------------------------------------------- +// Function declarations + +#define __thiscall __cdecl // Test compile in C mode + +LONG __stdcall TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo); // idb +// void __usercall __noreturn sub_4011A0(__int32 a1@); +int _mingw32_init_mainargs(); +// void __usercall __noreturn mainCRTStartup(__int32 a1@); +// void __usercall __noreturn WinMainCRTStartup(__int32 a1@); +// int __cdecl atexit(void (__cdecl *)()); +int __gcc_register_frame(); +void __cdecl __gcc_deregister_frame(); // idb +void __cdecl __tcf_3(); // idb +void __cdecl __tcf_4(); // idb +void __cdecl __tcf_5(); // idb +void __cdecl __tcf_6(); // idb +void __cdecl __tcf_7(); // idb +void __cdecl __tcf_8(); // idb +void __cdecl __tcf_9(); // idb +void __cdecl __tcf_10(); // idb +void __cdecl __tcf_11(); // idb +void __cdecl __tcf_12(); // idb +void __cdecl __tcf_13(); // idb +void __cdecl __tcf_14(); // idb +void __cdecl __tcf_15(); // idb +void __cdecl __tcf_16(); // idb +void __cdecl __tcf_17(); // idb +void __cdecl __tcf_18(); // idb +void __cdecl __tcf_19(); // idb +void __cdecl __tcf_20(); // idb +void __cdecl __tcf_21(); // idb +void __cdecl __tcf_22(); // idb +void __cdecl __tcf_23(); // idb +void __cdecl __tcf_24(); // idb +void __cdecl __tcf_25(); // idb +void __cdecl __tcf_26(); // idb +void __cdecl __tcf_27(); // idb +void __cdecl __tcf_28(); // idb +void __cdecl __tcf_29(); // idb +void __cdecl __tcf_30(); // idb +void __cdecl __tcf_31(); // idb +void __cdecl __tcf_32(); // idb +void __cdecl __tcf_33(); // idb +void __cdecl __tcf_34(); // idb +void __cdecl __tcf_35(); // idb +void __cdecl __tcf_36(); // idb +void __cdecl __tcf_37(); // idb +void __cdecl __tcf_38(); // idb +void __cdecl __tcf_39(); // idb +void __cdecl __tcf_40(); // idb +void __cdecl __tcf_41(); // idb +void __cdecl __tcf_42(); // idb +void __cdecl __tcf_43(); // idb +void __cdecl __tcf_44(); // idb +void __cdecl __tcf_45(); // idb +int snprintf(char *const Buffer, const size_t BufferCount, const char *const Format, ...); +void __cdecl __tcf_2(); // idb +// int __usercall main::{lambda(std::string const&)#1}::operator()@(const char **a1@, const char **a2@); +// void __usercall std::_Vector_base::_M_deallocate(void *a1@); +void __fastcall std::pair::~pair(void **a1); +// void *__usercall __gnu_cxx::new_allocator::allocate@(unsigned int a1@); +// _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +int __cdecl Usage(int a1, const char **a2); +int __cdecl ReadFile(char *FileName, unsigned int *a2); +_DWORD *__cdecl Trim(_DWORD *a1, int a2); +_DWORD *__cdecl GetNextArg(_DWORD *a1, int *a2, int a3); +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); +// int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@(int a1@, int a2@, int a3@); +void __fastcall std::vector::~vector(void ***a1, int a2); +int __cdecl Split(int a1, int *a2, int a3); +void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); +// _DWORD *__usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>@(int *a1@); +void __fastcall std::vector>::~vector(void **a1); +int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*a2)[266], bool *a3, int *a4); +int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *a2); +int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *a2); +int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *a2); +int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *a2, int *a3); +void __cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3); +void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2); +int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3); +int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2); +int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3); +int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2); +void __cdecl WXML::Rewrite::ToStringCode(int *a1, _DWORD *a2); +int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2); +int __cdecl WXML::Rewrite::GetToken(int a1, int a2); +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *a4); +int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5); +void __cdecl __tcf_1(); // idb +void __cdecl __tcf_2_0(); // idb +void __cdecl __tcf_3_0(); // idb +void __cdecl __tcf_4_0(); // idb +void __cdecl __tcf_5_0(); // idb +void __cdecl __tcf_6_0(); // idb +void __cdecl __tcf_7_0(); // idb +void __cdecl __tcf_8_0(); // idb +void __cdecl __tcf_9_0(); // idb +void __cdecl __tcf_10_0(); // idb +void __cdecl __tcf_11_0(); // idb +void __cdecl __tcf_12_0(); // idb +void __cdecl __tcf_13_0(); // idb +void __cdecl __tcf_14_0(); // idb +void __cdecl __tcf_15_0(); // idb +void __cdecl __tcf_16_0(); // idb +void __cdecl __tcf_17_0(); // idb +void __cdecl __tcf_18_0(); // idb +void __cdecl __tcf_19_0(); // idb +void __cdecl __tcf_20_0(); // idb +void __cdecl __tcf_21_0(); // idb +void __cdecl __tcf_22_0(); // idb +void __cdecl __tcf_23_0(); // idb +void __cdecl __tcf_24_0(); // idb +void __cdecl __tcf_25_0(); // idb +void __cdecl __tcf_26_0(); // idb +void __cdecl __tcf_27_0(); // idb +void __cdecl __tcf_28_0(); // idb +void __cdecl __tcf_29_0(); // idb +void __cdecl __tcf_30_0(); // idb +void __cdecl __tcf_31_0(); // idb +void __cdecl __tcf_32_0(); // idb +void __cdecl __tcf_33_0(); // idb +void __cdecl __tcf_34_0(); // idb +void __cdecl __tcf_35_0(); // idb +void __cdecl __tcf_36_0(); // idb +void __cdecl __tcf_37_0(); // idb +void __cdecl __tcf_38_0(); // idb +void __cdecl __tcf_39_0(); // idb +void __cdecl __tcf_40_0(); // idb +void __cdecl __tcf_41_0(); // idb +int __cdecl vsnprintf(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList); +// void __usercall std::_Vector_base::_M_deallocate(void *a1@); +// void __usercall std::_Vector_base::_M_deallocate(void *a1@); +void __fastcall night::ns_sourcemap::~ns_sourcemap(void **a1); +void __fastcall night::NSASTParse::~NSASTParse(void **a1); +void __fastcall night::NSStream::~NSStream(void **a1); +void __fastcall std::vector::~vector(void ***a1); +// int __usercall std::__relocate_a_1@(void *a1@, const void *a2@, int a3@); +int snprintf_constprop_0(char *Buffer, int a2, char *Format, ...); +int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); // weak +int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); // weak +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +void __fastcall std::_Vector_base::~_Vector_base(void **a1); +int __thiscall night::NSStream::NSStream(_DWORD *this, int a2, int a3, int a4); +_DWORD *__thiscall night::NSStream::next(_DWORD *ecx0, night::NSStream *this); +_DWORD *__thiscall night::NSStream::peek(_DWORD *ecx0, night::NSStream *this); +_DWORD *__thiscall night::NSStream::peek_2(_DWORD *ecx0, night::NSStream *this); +bool __fastcall night::NSStream::eof(night::NSStream *a1); +bool __fastcall night::NSStream::eof_2(night::NSStream *a1); +int __thiscall night::NSToken::read_while[abi:cxx11](int this, int a2, unsigned __int8 (__cdecl *a3)(_DWORD, int), int a4); +void __fastcall night::NSToken::read_comment_method_1(int a1); +_DWORD *__fastcall night::NSToken::read_comment_method_2(int a1); +unsigned __int8 __thiscall night::NSToken::skip_comment(night::NSStream **this, _DWORD *a2); +void __thiscall __noreturn night::NSStream::err(_DWORD *this, int a2, unsigned int a3, unsigned int a4, char a5); +void __thiscall __noreturn night::NSToken::err(_DWORD **this, int a2, unsigned int a3, unsigned int a4, char a5); +bool __stdcall night::NSASTParse::is_save_for_division(int a1); +bool __stdcall night::NSASTParse::is_exp(int a1); +unsigned int __fastcall night::NSGod::hamlet(_DWORD *a1); +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); +void __fastcall night::NSToken::~NSToken(int a1); +_DWORD *__thiscall night::NSGod::gen_son(void *this, int a2); +_DWORD *__thiscall night::NSToken::read_string(night::NSStream **this, char a2, int a3); +_DWORD *__thiscall night::NSToken::read_number(night::NSStream **this, int a2); +int __thiscall night::NSGod::gen_girl(void *this, int a2); +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); +void __thiscall night::NSToken::push(int this, int a2); +_DWORD *__thiscall night::NSToken::read_var(int this, int a2); +_DWORD *__fastcall night::NSToken::read_next(int a1); +_DWORD *__fastcall night::NSToken::peek(int a1); +bool __fastcall night::NSToken::eof(int a1); +_DWORD *__thiscall night::NSASTParse::is_punctuation(int *this, int a2); +_DWORD *__thiscall night::NSASTParse::is_buildin_keywords(int *this, int a2); +_DWORD *__thiscall night::NSASTParse::is_op(int *this, int a2); +_DWORD *__thiscall night::NSASTParse::is_op_or_comma(int *this, int a2); +int __fastcall night::NSASTParse::end_line(int a1); +// int __userpurge night::NSASTParse::is_op_self@(int a1@, night::NSASTParse *this, bool a3); +// bool __userpurge night::NSASTParse::is_obj_op_self@(int *a1@, night::NSASTParse *this, bool a3); +_DWORD *__fastcall night::NSToken::next(int a1); +unsigned __int8 __thiscall night::NSASTParse::ignore_punc_pass_sem(int *this, int a2); +_DWORD *__thiscall night::NSASTParse::ignore_punc(int *this, int a2); +_DWORD *__thiscall night::NSASTParse::ignore_buildin_kw(int *this, int a2); +_DWORD *__thiscall night::NSASTParse::ignore_op(int *this, int a2); +_DWORD *__fastcall night::NSASTParse::ast_trans_kw(int *a1); +// _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, night::NSASTParse *this, bool a3); +_DWORD *__fastcall night::NSASTParse::ast_op_self(int a1); +int __thiscall night::NSASTParse::make_binary_or_just_value(_DWORD *this, int a2, unsigned __int8 a3); +_DWORD *__fastcall night::NSASTParse::ast_expression_no_comma(int *a1); +int __fastcall night::NSASTParse::ast_varname(int a1); +_DWORD *__thiscall night::NSASTParse::ast_obj_op_self(_DWORD *this, int a2); +_DWORD *__thiscall night::NSASTParse::ast_obj_dot(int *this, int a2); +unsigned int *__fastcall night::NSASTParse::ast_if(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_ternary_expression(int *a1); +void **__thiscall night::NSASTParse::make_list_by_parser(int *this, int a2, int a3, int a4, int a5, char a6, int a7, int a8); +_DWORD *__thiscall night::NSASTParse::ast_call(int *this, int a2); +_DWORD *__thiscall night::NSASTParse::make_call_or_just_expression(int *this, int a2); +_DWORD *__fastcall night::NSASTParse::ast_expression(int *a1); +_DWORD *__thiscall night::NSASTParse::ast_obj_op(int *this, int a2); +_DWORD *__fastcall night::NSASTParse::ast_while(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_do_while(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_switch(int *a1); +_DWORD *__fastcall night::NSASTParse::top_down(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_require(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_code_block(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_function(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_new_array(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_for(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_obj_block(int *a1); +_DWORD *__fastcall night::NSASTParse::ast_var(_DWORD *a1); +_DWORD *__fastcall night::NSASTParse::ast_expression_no_binary(int *a1); +void __fastcall std::vector::~vector(void ***a1, int a2); +void __fastcall night::NSCompileJs::~NSCompileJs(int a1, int a2); +_DWORD *__thiscall night::NSCompileJs::compile_var[abi:cxx11](_DWORD *this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_function[abi:cxx11](int this, int a2, _DWORD *a3); +void **__thiscall night::NSCompileJs::compile[abi:cxx11](void **this, int a2, _DWORD *a3); +int __thiscall night::NSCompileJs::compile_k_v[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_if[abi:cxx11](int this, int a2, _DWORD *a3); +_DWORD *__thiscall night::NSCompileJs::compile_for[abi:cxx11](_DWORD *this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_while[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_do_while[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_switch[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_obj_self_op[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_obj_dot[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_op_self[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_ternary[abi:cxx11](int this, int a2, int a3); +_DWORD *__thiscall night::NSCompileJs::compile_binary[abi:cxx11](_DWORD *this, int a2, int a3); +_DWORD *__thiscall night::NSCompileJs::compile_assign[abi:cxx11](_DWORD *this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_call[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_prog[abi:cxx11](int this, int a2, int a3); +int __thiscall night::NSCompileJs::compile_prog_no_sem[abi:cxx11](int this, int a2, int a3); +_DWORD *__thiscall night::NSCompileJs::compile_once(_DWORD *this, int a2, unsigned int *a3, int a4, char a5); +int __cdecl night::compile_ns_no_wrapper(int a1, int a2, int a3, unsigned int *a4, char a5); +int __cdecl night::compile_ns(int a1, int a2, int a3, int a4, unsigned int *a5, char a6); +int __cdecl night::compile_ns_with_sourcemap(int *a1, int a2, int a3, int a4, int a5, unsigned int *a6, int a7); +void __cdecl __tcf_0(); // idb +void __cdecl __tcf_1_0(); // idb +void __cdecl __tcf_2_1(); // idb +void __cdecl __tcf_3_1(); // idb +void __cdecl __tcf_4_1(); // idb +void __cdecl __tcf_5_1(); // idb +void __cdecl __tcf_6_1(); // idb +void __cdecl __tcf_7_1(); // idb +void __cdecl __tcf_8_1(); // idb +void __cdecl __tcf_9_1(); // idb +void __cdecl __tcf_10_1(); // idb +void __cdecl __tcf_11_1(); // idb +void __cdecl __tcf_12_1(); // idb +void __cdecl __tcf_13_1(); // idb +void __cdecl __tcf_14_1(); // idb +void __cdecl __tcf_15_1(); // idb +void __cdecl __tcf_16_1(); // idb +void __cdecl __tcf_17_1(); // idb +void __cdecl __tcf_18_1(); // idb +void __cdecl __tcf_19_1(); // idb +void __cdecl __tcf_20_1(); // idb +void __cdecl __tcf_21_1(); // idb +void __cdecl __tcf_22_1(); // idb +void __cdecl __tcf_23_1(); // idb +void __cdecl __tcf_24_1(); // idb +void __cdecl __tcf_25_1(); // idb +void __cdecl __tcf_26_1(); // idb +void __cdecl __tcf_27_1(); // idb +void __cdecl __tcf_28_1(); // idb +void __cdecl __tcf_29_1(); // idb +void __cdecl __tcf_30_1(); // idb +void __cdecl __tcf_31_1(); // idb +void __cdecl __tcf_32_1(); // idb +void __cdecl __tcf_33_1(); // idb +void __cdecl __tcf_34_1(); // idb +void __cdecl __tcf_35_1(); // idb +void __cdecl __tcf_36_1(); // idb +void __cdecl __tcf_37_1(); // idb +void __cdecl __tcf_38_1(); // idb +int __cdecl night::sourcemap::int2vlq[abi:cxx11](int a1, int a2); +int __cdecl night::sourcemap::gen_sourcemap_content(int *a1, _DWORD *a2, _DWORD *a3, _DWORD *a4, int a5, int a6); +void __cdecl __tcf_1_1(); // idb +void __cdecl __tcf_2_2(); // idb +void __cdecl __tcf_3_2(); // idb +void __cdecl __tcf_4_2(); // idb +void __cdecl __tcf_5_2(); // idb +void __cdecl __tcf_6_2(); // idb +void __cdecl __tcf_7_2(); // idb +void __cdecl __tcf_8_2(); // idb +void __cdecl __tcf_9_2(); // idb +void __cdecl __tcf_10_2(); // idb +void __cdecl __tcf_11_2(); // idb +void __cdecl __tcf_12_2(); // idb +void __cdecl __tcf_13_2(); // idb +void __cdecl __tcf_14_2(); // idb +void __cdecl __tcf_15_2(); // idb +void __cdecl __tcf_16_2(); // idb +void __cdecl __tcf_17_2(); // idb +void __cdecl __tcf_18_2(); // idb +void __cdecl __tcf_19_2(); // idb +void __cdecl __tcf_20_2(); // idb +void __cdecl __tcf_21_2(); // idb +void __cdecl __tcf_22_2(); // idb +void __cdecl __tcf_23_2(); // idb +void __cdecl __tcf_24_2(); // idb +void __cdecl __tcf_25_2(); // idb +void __cdecl __tcf_26_2(); // idb +void __cdecl __tcf_27_2(); // idb +void __cdecl __tcf_28_2(); // idb +void __cdecl __tcf_29_2(); // idb +void __cdecl __tcf_30_2(); // idb +void __cdecl __tcf_31_2(); // idb +void __cdecl __tcf_32_2(); // idb +void __cdecl __tcf_33_2(); // idb +void __cdecl __tcf_34_2(); // idb +void __cdecl __tcf_35_2(); // idb +void __cdecl __tcf_36_2(); // idb +void __cdecl __tcf_37_2(); // idb +void __cdecl __tcf_38_2(); // idb +void __cdecl __tcf_39_1(); // idb +int __cdecl night::str::path_combine(_DWORD *a1, _DWORD *a2, _DWORD *a3); +int __cdecl night::str::get_token(int a1, _DWORD *a2, unsigned int a3); +int __cdecl night::readfile(char *FileName, unsigned int *a2); +int __cdecl night::writefile(char *FileName, int a2); // idb +void __cdecl __tcf_3_3(); // idb +void __cdecl __tcf_4_3(); // idb +void __cdecl __tcf_5_3(); // idb +void __cdecl __tcf_6_3(); // idb +void __cdecl __tcf_7_3(); // idb +void __cdecl __tcf_8_3(); // idb +void __cdecl __tcf_9_3(); // idb +void __cdecl __tcf_10_3(); // idb +void __cdecl __tcf_11_3(); // idb +void __cdecl __tcf_12_3(); // idb +void __cdecl __tcf_13_3(); // idb +void __cdecl __tcf_14_3(); // idb +void __cdecl __tcf_15_3(); // idb +void __cdecl __tcf_16_3(); // idb +void __cdecl __tcf_17_3(); // idb +void __cdecl __tcf_18_3(); // idb +void __cdecl __tcf_19_3(); // idb +void __cdecl __tcf_20_3(); // idb +void __cdecl __tcf_21_3(); // idb +void __cdecl __tcf_22_3(); // idb +void __cdecl __tcf_23_3(); // idb +void __cdecl __tcf_24_3(); // idb +void __cdecl __tcf_25_3(); // idb +void __cdecl __tcf_26_3(); // idb +void __cdecl __tcf_27_3(); // idb +void __cdecl __tcf_28_3(); // idb +void __cdecl __tcf_29_3(); // idb +void __cdecl __tcf_30_3(); // idb +void __cdecl __tcf_31_3(); // idb +void __cdecl __tcf_32_3(); // idb +void __cdecl __tcf_33_3(); // idb +void __cdecl __tcf_34_3(); // idb +void __cdecl __tcf_35_3(); // idb +void __cdecl __tcf_36_3(); // idb +void __cdecl __tcf_37_3(); // idb +void __cdecl __tcf_38_3(); // idb +void __cdecl __tcf_39_2(); // idb +void __cdecl __tcf_40_1(); // idb +void __cdecl __tcf_41_1(); // idb +int __cdecl vsnprintf_0(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList); +void __cdecl __tcf_2_3(); // idb +int __fastcall std::_Rb_tree_iterator>>::operator++(int *a1); +// void __usercall std::_Vector_base::_M_deallocate(void *a1@); +void __fastcall WXML::NameAllocator::~NameAllocator(int a1); +// void *__usercall __gnu_cxx::new_allocator::allocate@(unsigned int a1@); +int snprintf_constprop_0_0(char *Buffer, int a2, int a3, ...); +BOOL __fastcall std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>(_DWORD *a1); +int __cdecl WXML::Compiler::GetVersionInfo(int a1, int *a2); +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +int __fastcall WXML::DOMLib::Token::~Token(int a1); +void __fastcall std::vector::~vector(void **a1); +_DWORD *__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(_DWORD *this, int a2); +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); +void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(int a1); +// int __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_lower_bound@(int a1@, int a2@, int a3@); +// int __usercall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound@(int a1@, int a2@, int a3@); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2); +void **__cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](void **a1); +void **__cdecl WXML::Compiler::GetFuncId(void **a1, _DWORD *a2, int a3); +void __fastcall std::vector::~vector(void ***a1, int a2); +void __thiscall std::vector::_M_move_assign(void *this, int *a2); +void __fastcall std::deque::~deque(int a1); +int __fastcall WXML::DOMLib::Parser::~Parser(int a1); +unsigned int __cdecl WXML::Compiler::ParseWxmlSource(int a1, int *a2, unsigned int *a3, _DWORD *a4, _DWORD *a5); +unsigned int __cdecl WXML::Compiler::DealWxsTag(int a1, int **a2, _DWORD *a3, int a4, int *a5, _DWORD *a6, unsigned int *a7); +int __cdecl WXML::Compiler::RenderDefine(unsigned int **a1, int *a2, _DWORD *a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, char a9, int *a10, int *a11, int *a12, int a13, int *a14, int *a15, int *a16, int a17, int a18, int a19, int *a20); +int __cdecl WXML::Compiler::ProcessWxsInline(int *a1, int *a2, char a3, int a4, int *a5, _DWORD *a6, unsigned int *a7, _DWORD *a8, _DWORD *a9, int a10, char a11); +int __cdecl WXML::Compiler::ProcessWxsFile(int *a1, int a2, char a3, int a4, _DWORD *a5, _DWORD *a6); +unsigned int __cdecl WXML::Compiler::Compile(_DWORD *a1, unsigned int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5, char a6, int *a7, int a8, char a9, int *a10, int *a11, int *a12, int *a13, int *a14, int *a15, int a16, int a17, int a18, int *a19); +unsigned int __cdecl WXML::Compiler::ParseAndResolveWxmlDependencies(int a1, unsigned int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5); +_DWORD std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(); // weak +int __cdecl WXML::Compiler::CompileLazyWithParsed(_DWORD *a1, _DWORD *a2, int a3, int a4, unsigned int *a5, _DWORD *a6, _DWORD *a7, int a8, _DWORD *a9, std::_Rb_tree_header *a10, char a11, char a12, _DWORD *a13, int a14, _DWORD *a15, char a16, int a17, int a18, char a19, int *a20, int *a21, int *a22, int *a23, int *a24, int *a25, int a26, int a27, int a28, int *a29); +int __cdecl WXML::Compiler::CompileLazy(std::_Rb_tree_header *a1, unsigned int *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5, int a6, int a7, std::_Rb_tree_header *a8, char a9, _DWORD *a10, int a11, _DWORD *a12, char a13, int a14, int a15, char a16, int *a17, int *a18, int *a19, int *a20, int *a21, int *a22, int a23, int a24, int a25, int *a26); +void __thiscall WXML::NameAllocator::NameAllocator(_DWORD *this, int a2, int a3); +void __thiscall WXML::NameAllocator::GetNextName(int *this, _DWORD *a2); +// void __usercall std::_Vector_base::_M_deallocate(void *a1@); +// _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); +void __fastcall std::vector::~vector(void ***a1); +void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void ***a2); +int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3); +int __cdecl MMBizWxaAppComm::PathCombine(int a1, _DWORD *a2, _DWORD *a3); +bool __cdecl WXML::DOMLib::AttrsCompartor(int a1, int a2); +void __cdecl __tcf_1_2(); // idb +// void __usercall std::_Vector_base::_M_deallocate(void *a1@); +// _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); +// volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); +void __fastcall std::vector::~vector(void ***a1); +void __fastcall std::vector>::~vector(void ***a1); +void __fastcall std::vector>::~vector(void ***a1); +void __fastcall std::vector::~vector(void **a1); +// int __userpurge WXML::DOMLib::WXMLDom::GenRawId@(_DWORD *a1@, WXML::DOMLib::WXMLDom *this, unsigned __int64 *a3); +_DWORD *__thiscall WXML::DOMLib::Parser::GetParsed(_DWORD *ecx0, WXML::DOMLib::Parser *this); +void __fastcall WXML::DOMLib::Parser::Match(int a1); +bool __stdcall WXML::DOMLib::Parser::IsValidTag(const char **a1); +_DWORD *__fastcall WXML::DOMLib::Parser::Peek(_DWORD *a1); +int __cdecl WXML::DOMLib::WXMLDom::Error(int a1, int *a2, int a3, int *a4, int *a5); +int __cdecl WXML::DOMLib::joinString(int a1, _DWORD *a2, char a3); +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +int __fastcall WXML::DOMLib::Token::~Token(int a1); +// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node(void **a1@); +void __fastcall std::pair::~pair(void **a1); +void __fastcall std::vector>::~vector(void ***a1); +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); +_DWORD *__thiscall WXML::DOMLib::Parser::Error(_DWORD *ecx0, WXML::DOMLib::Parser *this, char *a3, WXML::DOMLib::Token *a4); +void __fastcall WXML::DOMLib::WXMLDom::~WXMLDom(int a1); +// int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@(int a1@, int a2@, int a3@); +int __cdecl WXML::DOMLib::splitString(int a1, int *a2, char a3); +int __cdecl WXML::DOMLib::resolvePath(int a1, int *a2, int *a3); +int __fastcall WXML::DOMLib::Parser::ATTR(WXML::DOMLib::Parser *a1); +int __fastcall WXML::DOMLib::Parser::ATTR_LIST(WXML::DOMLib::Parser *a1); +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +void **__cdecl WXML::DOMLib::removern(void **a1, _DWORD *a2); +int __thiscall WXML::DOMLib::WXMLDom::AddTestAttr(_DWORD *this, int *a2, int a3, char a4); +// int __usercall WXML::DOMLib::WXMLDom::RewriteTree@(int a1@, const char **a2@); +int __fastcall WXML::DOMLib::Parser::DOM(WXML::DOMLib::Parser *a1); +int __fastcall WXML::DOMLib::Parser::DOMS(WXML::DOMLib::Parser *a1); +unsigned int __thiscall WXML::DOMLib::Parser::Parse(WXML::DOMLib::Parser *this, int a2, unsigned int *a3, int a4, _DWORD *a5); +unsigned int __cdecl WXML::DOMLib::recurseDependencies(int *a1, int *a2, _DWORD *a3); +int __fastcall WXML::DOMLib::WXMLDom::RecordAllPath(int a1); +void __fastcall std::deque>::~deque(int a1); +void __fastcall WXML::EXPRLib::Parser::~Parser(int a1); +int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps(int *a1, unsigned int *a2, int a3, _DWORD *a4, _DWORD *a5, char a6, int a7, char a8, int *a9, char a10, int a11); +int __thiscall WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord(_DWORD *this, int *a2, unsigned int *a3, int a4, _DWORD *a5, int *a6, unsigned __int8 a7, int a8); +int __thiscall WXML::DOMLib::WXMLDom::RenderNonDefine(int this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, char a12, unsigned __int8 a13, int a14, int a15); +int __thiscall WXML::DOMLib::WXMLDom::RenderChildren(_DWORD *this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, char a12, unsigned __int8 a13, int a14, int a15); +int __thiscall WXML::DOMLib::WXMLDom::RenderMeAsFunction(_DWORD *this, int *a2, int *a3, int a4, int *a5, int a6, int *a7, int *a8, int *a9, int *a10, int *a11, int *a12, char a13, int *a14, char a15, unsigned __int8 a16, int a17, int *a18); +void __cdecl __tcf_0_0(); // idb +// volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); +int __fastcall WXML::DOMLib::Machine::Reset(_DWORD *a1); +void WXML::DOMLib::Machine::InitTransitTable(); +void __thiscall WXML::DOMLib::Machine::Machine(int this, int a2); +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +int __fastcall WXML::DOMLib::Token::~Token(int a1); +// int __usercall std::__relocate_a_1>@(int a1@, int a2@, int a3@); +int __thiscall WXML::DOMLib::Machine::Feed(int *this, unsigned __int8 a2, int a3, _DWORD *a4, int a5, int a6); +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); +_DWORD __stdcall WXML::DOMLib::Tokenizer::Tokenizer(_DWORD, _DWORD); // weak +unsigned int __thiscall WXML::DOMLib::Tokenizer::GetTokens(char *this, _DWORD *a2, unsigned int *a3, _DWORD *a4); +int __cdecl vsnprintf_1(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList); +void __cdecl __tcf_0_1(); // idb +int (__stdcall *__fastcall std::_Function_base::~_Function_base(int a1))(int, int, int, int, int, int); +int __cdecl std::_Function_base::_Base_manager const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_manager(void **a1, const void **a2, unsigned int a3); +void __fastcall std::vector>::~vector(void ***a1); +unsigned int __cdecl std::_Function_handler const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_invoke(int *a1, _DWORD *a2, int *a3); +void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(int a1); +void __fastcall std::vector>::~vector(void **a1); +void __cdecl WXML::Compiler::CalculateOutputChunkKeys(_DWORD *a1, int a2, int a3, int a4, _DWORD *a5); +void __cdecl __tcf_1_3(); // idb +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +// volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); +std::ostream::sentry *__cdecl WXML::EXPRLib::OutputAsStringOrKeyWord(int a1, int *a2, int a3, _BYTE *a4); +int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(int *this, int a2, int a3, _BYTE *a4); +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +void __fastcall std::vector::~vector(void **a1); +void __fastcall std::vector>::~vector(void **a1); +// _DWORD *__usercall std::__relocate_a_1>@(_DWORD *a1@, _DWORD *a2@, _DWORD *a3@); +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); +int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderCode(int *this, WXML::EXPRLib::Token *a2, int *a3, int *a4, int *a5, int *a6, int *a7, char a8, int a9); +// int __userpurge WXML::EXPRLib::Parser::Parse@(int a1@, void (__cdecl *a2)(void *)@, char **a3, int a4, int a5, int a6, unsigned int *a7, char a8); +void __cdecl __tcf_0_2(); // idb +void __cdecl __tcf_0_3(); // idb +const char *__fastcall WXML::EXPRLib::Token::GetTokenName(const char **a1); +const char *__fastcall WXML::EXPRLib::Token::GetLiteral(_DWORD *a1); +void WXML::EXPRLib::Tokenizer::InitTransitTable(); +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +// _DWORD *__usercall std::__relocate_a_1>@(_DWORD *a1@, _DWORD *a2@, _DWORD *a3@); +unsigned int __thiscall WXML::EXPRLib::Tokenizer::Tokenizer(void **this, char *a2, int a3, int a4, int a5); +int __thiscall WXML::EXPRLib::Tokenizer::GetTokens(int *this, int a2, unsigned int *a3); +void __cdecl __tcf_1_4(); // idb +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +// volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); +void __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +void __fastcall std::vector>::~vector(void **a1); +void __fastcall std::vector::~vector(void ***a1); +void __thiscall std::vector::_M_move_assign(void *this, int *a2); +int WXML::EXPRLib::TransitTable::GetExprNTType(); +int WXML::EXPRLib::TransitTable::GetAttrListNTType(); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_move_assign(int this, _DWORD *a2); +void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); +_DWORD WXML::EXPRLib::TransitTable::Init(WXML::EXPRLib::TransitTable *__hidden this); // idb +void __cdecl __tcf_0_4(); // idb +int __cdecl WXML::StringTemplating::Deal(const char *a1, int a2, _DWORD *a3, _BYTE *a4); +// LPTOP_LEVEL_EXCEPTION_FILTER __stdcall SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); +// HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName); +// FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName); +// HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName); +// BOOL __stdcall FreeLibrary(HMODULE hLibModule); +// void __stdcall __noreturn ExitProcess(UINT uExitCode); +// _DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4); +// _DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@); +// _DWORD *__usercall d_count_templates_scopes@(_DWORD *result@, _DWORD *a2@, int a3@); +// int __usercall d_append_buffer@(int result@, char *a2@, int a3@); +// int __usercall d_number_isra_0@(char **a1@); +// _DWORD *__usercall d_number_component@(int a1@); +// int __usercall d_compact_number@(int a1@); +// _DWORD *__usercall d_template_param@(_DWORD *a1@); +// _DWORD *__usercall d_source_name@(int a1@); +// _DWORD *__usercall d_abi_tags@(_DWORD *a1@, _DWORD *comp@); +// _DWORD *__usercall d_substitution@(_DWORD *a1@, char a2@
); +// int __usercall d_call_offset@(int a1@, int a2@); +// BOOL __usercall next_is_type_qual_isra_0@(char *a1@); +// int __usercall d_discriminator@(int a1@); +_BYTE *__cdecl d_growable_string_callback_adapter(void *Src, size_t Size, unsigned int *a3); +// _DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@); +// _DWORD *__usercall d_lookup_template_argument_isra_0@(int a1@, int *a2@); +// _DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@); +// _DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
); +// _DWORD *__usercall d_expression_1@(_DWORD *a1@); +// int *__usercall d_template_arg@(_DWORD *a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12); +// _DWORD *__usercall d_template_args_1@(_DWORD *a1@); +// _DWORD *__usercall d_template_args@(_DWORD *a1@); +// unsigned int *__usercall d_encoding@(int a1@, int a2@, int a3@); +// int *__usercall d_name@(_DWORD *a1@, int a2@); +// int *__usercall d_type@(int a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12); +// _DWORD *__usercall d_operator_name@(_DWORD *a1@); +// int __usercall d_parmlist@(_DWORD *a1@); +// int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@); +// _DWORD *__usercall d_bare_function_type@(_DWORD *a1@, int a2@); +// _DWORD *__usercall d_function_type@(int a1@); +// _DWORD *__usercall d_unqualified_name@(_DWORD *a1@); +// _DWORD *__usercall d_expr_primary@(_DWORD *a1@); +// int __usercall d_print_comp@(int result@, int a2@, int *a3@); +// int __usercall d_print_mod@(int a1@, int a2@, _DWORD *a3@); +// int __usercall d_print_function_type_isra_0@(int a1@, int a2@, int *a3@, int **a4); +// int __usercall d_print_mod_list@(int result@, int a2@, int **a3@, int a4); +// int __usercall d_print_array_type_isra_0@(int a1@, int a2@, int *a3@, int **a4); +// int __usercall d_print_expr_op@(int a1@, int a2@, _DWORD *a3@); +// int __usercall d_print_subexpr@(int a1@, int a2@, _DWORD *a3@); +// int __usercall d_maybe_print_fold_expression_isra_0@(int a1@, int a2@, int a3@, int a4); +// BOOL __usercall d_demangle_callback_constprop_0@(char *a1@, int a2@, int a3@); +char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus); +unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, int a2, int a3); +char **_setargv(); +// unsigned int __usercall __cpu_features_init@(__int32 a1@); +void __cdecl __do_global_dtors(); // idb +int __do_global_ctors(); +int __main(); +int __stdcall TlsCallback_1(int a1, int a2, int a3); +int __stdcall __dyn_tls_init(int a1, int a2, int a3); +int __tlregdtor(); +void sub_44DE90(); +int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2); +int __cdecl ___w64_mingwthr_remove_key_dtor(int a1); +int __cdecl __mingw_TLScallback(int a1, int a2); +void __noreturn sub_44E0C0(char *Format, ...); +// DWORD __usercall sub_44E110@(const void *lpAddress@, int a2@, DWORD a3@); +int _pei386_runtime_relocator(); +int __cdecl fesetenv(const fenv_t *Env); +long double __cdecl strtold(const char *String, char **EndPtr); +int *__cdecl __increment_D2A(int *a1); +// int __usercall sub_44E5C0@(int *a1@, int *a2@, _DWORD *a3@, double a4, int a5, int a6, _DWORD *a7); +_DWORD *__cdecl __decrement_D2A(int a1); +int *__cdecl __set_ones_D2A(unsigned int a1, int a2); +int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, int *a5); +int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3); +// void __usercall sub_450AB0(int a1@); +void __cdecl sub_450B80(); // idb +int *__cdecl __Balloc_D2A(int a1); +void __cdecl __Bfree_D2A(unsigned int a1); +int *__cdecl __multadd_D2A(int *a1, int a2, int a3); +int *__cdecl __i2b_D2A(int a1); +int *__cdecl __mult_D2A(int a1, int a2); +int __cdecl __pow5mult_D2A(int *a1, int a2); +int *__cdecl __lshift_D2A(_DWORD *a1, int a2); +int __cdecl __cmp_D2A(int a1, int a2); +int *__cdecl __diff_D2A(int a1, int a2); +long double __cdecl __b2d_D2A(int a1, _DWORD *a2); +int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3); +int __cdecl __strcp_D2A(__int64 a1); +float __cdecl strtof(const char *String, char **EndPtr); +unsigned __int64 __cdecl strtoull(const char *String, char **EndPtr, int Radix); +wint_t __cdecl btowc(int Ch); +int __cdecl vsnprintf_2(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList); +void *__cdecl __mingw_realloc(unsigned int a1, size_t a2); +int __cdecl __mingw_free(unsigned int a1); +// char *__usercall sub_451D30@(char *a1@, int a2@, __int16 a3@); +// int __usercall sub_452060@(char *a1@, _BYTE *a2@, int a3@); +// int __usercall sub_452290@(char *a1@, unsigned int a2@); +// int __usercall sub_452330@(int a1@, _DWORD *a2@); +// int __usercall sub_452390@(_DWORD *a1@, _DWORD *a2@, int a3@); +// int __usercall sub_4523E0@(_DWORD *a1@); +// int __usercall sub_452430@(char *a1@, unsigned int a2@, int a3@, _DWORD *a4); +int *__cdecl __mingw_glob(char *Str, int a2, int a3, char **a4); +int __cdecl __mingw_globfree(int a1); +char *__cdecl __mingw_dirname(char *Source); +// HANDLE __usercall sub_453250@(const CHAR *lpFileName@, int a2@); +// BOOL __usercall sub_453340@(void *hFindFile@, int a2@); +int __cdecl __mingw_opendir(char *Path); // idb +int __cdecl __mingw_readdir(int a1); +int __cdecl __mingw_closedir(unsigned int a1); +_DWORD *__cdecl __mingw_rewinddir(int a1); +int __cdecl __mingw_telldir(int a1); +int *__cdecl __mingw_seekdir(int a1, int a2); +int __mingw_mbrtowc_codeset_init(); +UINT __cdecl __mingw_mbrlen_cur_max_init(UINT a1); +int __mingw_mbrlen_cur_max(); +int __cdecl __mingw_mbtowc_convert(LPCCH lpMultiByteStr, int a2, LPWSTR lpWideCharStr, int cchWideChar); // idb +int __cdecl __mingw_mbrscan_begin(_WORD **a1, int *a2, int *a3, unsigned int *a4); +int __cdecl __mingw_mbtowc_copy(LPWSTR a1, LPCCH a2, unsigned int a3); +size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State); +size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State); +int __cdecl wctob(wint_t WCh); +wctype_t __cdecl wctype(const char *name); +wchar_t *__cdecl wmemchr(const wchar_t *S, wchar_t C, size_t N); +int __cdecl wmemcmp(const wchar_t *S1, const wchar_t *S2, size_t N); +wchar_t *__cdecl wmemcpy(wchar_t *S1, const wchar_t *S2, size_t N); +wchar_t *__cdecl wmemmove(wchar_t *S1, const wchar_t *S2, size_t N); +wchar_t *__cdecl wmemset(wchar_t *S, wchar_t C, size_t N); +int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5); +int __cdecl __rshift_D2A(int a1, int a2); +int __cdecl __trailz_D2A(int a1); +int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5); +long double __cdecl __ratio_D2A(int a1, int a2); +int __cdecl __match_D2A(char **a1, char *a2); +_DWORD *__cdecl __copybits_D2A(_DWORD *a1, int a2, int a3); +int __cdecl __any_on_D2A(int a1, int a2); +int *__cdecl __sum_D2A(int *a1, int *a2); +int hexdig_init_D2A(); +// int __usercall sub_455040@(int *a1@); +// int *__usercall sub_455100@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7); +// int __usercall sub_455200@(int result@, int a2@); +// int __usercall sub_455260@(int a1@, int a2@, int a3@); +// int __usercall sub_455390@(char *a1@, int a2@, int a3@); +// int __usercall sub_455460@(int a1@, int a2@, int a3@); +// int __usercall sub_455500@(wchar_t a1@, int a2@, int a3@); +// int __usercall sub_455580@(int a1@); +// int __usercall sub_455660@(_DWORD *a1@); +// int __usercall sub_4556E0@(int *a1@); +// int __usercall sub_455710@(unsigned __int8 *a1@); +// int __usercall sub_455790@(int a1@); +// int __usercall sub_455840@(int a1@, int a2@); +// int __usercall sub_455880@(unsigned int a1@, unsigned int a2@, int a3@); +// int __usercall sub_455C50@(int a1@, _BYTE *a2@, int a3@, int a4); +// int __usercall sub_455FC0@(int a1@, _BYTE *a2@, int a3@, _DWORD *a4); +// void __usercall sub_456090(_DWORD *a1@, long double a2); +// void __usercall sub_456140(int a1@, long double a2); +// void __usercall sub_456210(_DWORD *a1@, long double a2); +// int __usercall sub_4563A0@(_DWORD *a1@, long double a2); +// int __usercall sub_456950@(int a1@, int a2@, int a3@, int a4); +int __cdecl __mingw_pformat(__int16 a1, int a2, int a3, char *a4, double *a5); +unsigned int __cdecl __mingw_memalign_base(unsigned int a1, unsigned int *a2); +void *__cdecl __mingw_memalign_realloc(int a1, int *a2, size_t a3); +int __mb_codeset_for_locale(); +UINT __cdecl __mb_cur_max_for_codeset(UINT CodePage); +int __cdecl __mingw_mbrtowc_handler(_WORD *a1, int a2, unsigned int a3, _DWORD *a4); +int __mingw_wctomb_codeset_init(); +UINT __cdecl __mingw_wctomb_cur_max_init(UINT a1); +int __mingw_wctomb_cur_max(); +UINT __cdecl __mingw_wctomb_convert(LPSTR lpMultiByteStr, int cbMultiByte, WCHAR *lpWideCharStr, int cchWideChar); +int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8); +int *__cdecl __rv_alloc_D2A(unsigned int a1); +int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, unsigned int a3); +void __cdecl __freedtoa(_DWORD *a1); +unsigned int __cdecl __quorem_D2A(int a1, int a2); +int __cdecl __gthr_win32_once(__gthread_once_t *once, void (*func)(void)); +int __cdecl __gthr_win32_key_create(__gthread_key_t *key, void (*dtor)(void *)); +int __cdecl __gthr_win32_key_delete(__gthread_key_t key); +void *__cdecl __gthr_win32_getspecific(__gthread_key_t key); +int __cdecl __gthr_win32_setspecific(__gthread_key_t key, const void *ptr); +void __cdecl __gthr_win32_mutex_init_function(__gthread_mutex_t *mutex); +void __cdecl __gthr_win32_mutex_destroy(__gthread_mutex_t *mutex); +int __cdecl __gthr_win32_mutex_lock(__gthread_mutex_t *mutex); +int __cdecl __gthr_win32_mutex_trylock(__gthread_mutex_t *mutex); +int __cdecl __gthr_win32_mutex_unlock(__gthread_mutex_t *mutex); +void __cdecl __gthr_win32_recursive_mutex_init_function(__gthread_recursive_mutex_t *mutex); +int __cdecl __gthr_win32_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex); +int __cdecl __gthr_win32_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex); +int __cdecl __gthr_win32_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex); +int __cdecl __gthr_win32_recursive_mutex_destroy(__gthread_recursive_mutex_t *mutex); +// char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4); +// int __usercall base_of_encoded_value@(char a1@, _DWORD *a2@); +// unsigned int __usercall execute_cfa_program@(int *a1@, unsigned int a2@, _DWORD *a3@, unsigned int a4); +void init_dwarf_reg_size_table(); // idb +// int __usercall uw_frame_state_for@(dwarf_eh_bases *a1@, _DWORD *a2@); +// int __usercall uw_install_context_1@(int a1@, int a2@); +// int __usercall execute_stack_op@(char *a1@, unsigned int a2@, int a3@, int a4); +// unsigned int __usercall uw_update_context_1@(int a1@, int a2@); +// unsigned int __usercall uw_init_context_1@(int a1@, int a2@, int a3@); +// int __usercall uw_update_context@(int a1@, int a2@); +// int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, dwarf_eh_bases *a2@, int *a3@); +// int __usercall _Unwind_ForcedUnwind_Phase2@(_Unwind_Exception *exc@, dwarf_eh_bases *context@, unsigned int *frames_p@); +int __cdecl _Unwind_GetGR(int a1, int a2); +_Unwind_Word __cdecl _Unwind_GetCFA(_Unwind_Context *context); +_DWORD *__cdecl _Unwind_SetGR(int a1, int a2, int a3); +_Unwind_Ptr __cdecl _Unwind_GetIP(_Unwind_Context *context); +_Unwind_Ptr __cdecl _Unwind_GetIPInfo(_Unwind_Context *context, int *ip_before_insn); +void __cdecl _Unwind_SetIP(_Unwind_Context *context, _Unwind_Ptr val); +void *__cdecl _Unwind_GetLanguageSpecificData(_Unwind_Context *context); +_Unwind_Ptr __cdecl _Unwind_GetRegionStart(_Unwind_Context *context); +void *__cdecl _Unwind_FindEnclosingFunction(void *pc); +_Unwind_Ptr __cdecl _Unwind_GetDataRelBase(_Unwind_Context *context); +_Unwind_Ptr __cdecl _Unwind_GetTextRelBase(_Unwind_Context *context); +frame_state *__cdecl __frame_state_for(void *pc_target, frame_state *state_in); +void __cdecl _Unwind_DebugHook(void *cfa, void *handler); +_Unwind_Reason_Code __cdecl _Unwind_RaiseException(_Unwind_Exception *exc); +_Unwind_Reason_Code __cdecl _Unwind_ForcedUnwind(_Unwind_Exception *exc, _Unwind_Stop_Fn stop, void *stop_argument); +// void __usercall __noreturn _Unwind_Resume(int a1@, int a2@, _Unwind_Exception *exc); +// void __usercall __noreturn _Unwind_Resume_or_Rethrow(int a1@, int a2@, _Unwind_Exception *exc); +void __cdecl _Unwind_DeleteException(_Unwind_Exception *exc); +_Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn trace, void *trace_argument); +int __cdecl fde_unencoded_compare(object *ob, const fde *x, const fde *y); +// void __usercall frame_downheap(object *ob@, fde_compare_t fde_compare@, const fde **a@, int lo, int hi); idb +// void __usercall frame_heapsort(object *ob@, fde_compare_t fde_compare@, fde_vector *erratic@); idb +void init_object_mutex(); // idb +// int __usercall size_of_encoded_value@(char a1@); +// int __usercall base_from_object@(char a1@, int a2@); +// char *__usercall read_encoded_value_with_base_0@(char a1@, int *a2@, int *a3@, int *a4); +int __cdecl fde_single_encoding_compare(object *ob, const fde *x, const fde *y); +// int __usercall get_cie_encoding@(const dwarf_cie *cie@); idb +// size_t __usercall classify_object_over_fdes@(object *ob@, const fde *this_fde@); idb +// void __usercall add_fdes(object *ob@, fde_accumulator *accu@, const fde *this_fde@); idb +// const fde *__usercall linear_search_fdes@(object *ob@, const fde *this_fde@, char *pc@); +int __cdecl fde_mixed_encoding_compare(object *ob, const fde *x, const fde *y); +// const fde *__usercall search_object@(int a1@, char *a2@); +// void __usercall __register_frame_info_bases_part_0(const void *begin@, object *ob@, void *tbase@, void *dbase); idb +void __cdecl __register_frame_info_bases(const void *begin, object *ob, void *tbase, void *dbase); +void __cdecl __register_frame_info(const void *begin, object *ob); +void __cdecl __register_frame(void *begin); +void __cdecl __register_frame_info_table_bases(void *begin, object *ob, void *tbase, void *dbase); +void __cdecl __register_frame_info_table(void *begin, object *ob); +void __cdecl __register_frame_table(void *begin); +void *__cdecl __deregister_frame_info_bases(const void *begin); +void *__cdecl __deregister_frame_info(const void *begin); +void __cdecl __deregister_frame(void *begin); +const fde *__cdecl _Unwind_Find_FDE(void *pc, dwarf_eh_bases *bases); +void __cdecl emutls_destroy(void *ptr); +// _DWORD *__usercall emutls_alloc@(size_t *a1@); +DWORD emutls_init(); +_DWORD *__cdecl __emutls_get_address(size_t *a1); +void __cdecl __emutls_register_common(__emutls_object *obj, word size, word align, void *templ); +// int __cdecl write(int FileHandle, const void *Buf, unsigned int MaxCharCount); +// int __cdecl stricoll(const char *String1, const char *String2); +// char *__cdecl strdup(const char *String); +// int __cdecl read(int FileHandle, void *DstBuf, unsigned int MaxCharCount); +// int __cdecl lseek(int FileHandle, int Offset, int Origin); +// int __cdecl fstat(const int FileHandle, struct _stat32 *const Stat); +// FILE *__cdecl fdopen(int FileHandle, const char *Format); +// size_t __cdecl wcsxfrm(wchar_t *Destination, const wchar_t *Source, size_t MaxCount); +// size_t __cdecl wcstombs(char *Dest, const wchar_t *Source, size_t MaxCount); +// size_t __cdecl wcslen(const wchar_t *String); +// size_t __cdecl wcsftime(wchar_t *Buffer, size_t SizeInWords, const wchar_t *Format, const struct tm *Tm); +// int __cdecl wcscoll(const wchar_t *String1, const wchar_t *String2); +// int __cdecl vfprintf(FILE *const Stream, const char *const Format, va_list ArgList); +// wint_t __cdecl ungetwc(wint_t Character, FILE *Stream); +// int __cdecl ungetc(int Character, FILE *Stream); +// wint_t __cdecl towupper(wint_t C); +// wint_t __cdecl towlower(wint_t C); +// int __cdecl tolower(int C); +// size_t __cdecl strxfrm(char *Destination, const char *Source, size_t MaxCount); +// unsigned int __cdecl strtoul(const char *String, char **EndPtr, int Radix); +// double __cdecl strtod(const char *String, char **EndPtr); +// int __cdecl strncmp(const char *Str1, const char *Str2, size_t MaxCount); +// size_t __cdecl strlen(const char *Str); +// size_t __cdecl strftime(char *Buffer, size_t SizeInBytes, const char *Format, const struct tm *Tm); +// char *__cdecl strerror(int ErrorMessage); +// int __cdecl strcoll(const char *String1, const char *String2); +// int __cdecl strcmp(const char *Str1, const char *Str2); +// char *__cdecl strchr(const char *Str, int Val); +// int sprintf(char *const Buffer, const char *const Format, ...); +// _crt_signal_t __cdecl signal(int Signal, _crt_signal_t Function); +// int __cdecl setvbuf(FILE *Stream, char *Buffer, int Mode, size_t Size); +// char *__cdecl setlocale(int Category, const char *Locale); +// wint_t __cdecl putwc(wchar_t Character, FILE *Stream); +// int __cdecl puts(const char *Buffer); +// int __cdecl putchar(int Character); +// int printf(const char *const Format, ...); +// void *__cdecl memset(void *, int Val, size_t Size); +// void *__cdecl memmove(void *, const void *Src, size_t Size); +// void *__cdecl memcpy(void *, const void *Src, size_t Size); +// int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size); +// void *__cdecl memchr(const void *Buf, int Val, size_t MaxCount); +// size_t __cdecl mbstowcs(wchar_t *Dest, const char *Source, size_t MaxCount); +// void *__cdecl malloc(size_t Size); +// struct lconv *__cdecl localeconv(); +// int __cdecl iswctype(wint_t C, wctype_t Type); +// wint_t __cdecl getwc(FILE *Stream); +// char *__cdecl getenv(const char *VarName); +// size_t __cdecl fwrite(const void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); +// int __cdecl ftell(FILE *Stream); +// int __cdecl fseek(FILE *Stream, int Offset, int Origin); +// size_t __cdecl fread(void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); +// int __cdecl fputs(const char *Buffer, FILE *Stream); +// int __cdecl fputc(int Character, FILE *Stream); +// int fprintf(FILE *const Stream, const char *const Format, ...); +// FILE *__cdecl fopen(const char *FileName, const char *Mode); +// char *__cdecl fgets(char *Buffer, int MaxCount, FILE *Stream); +// int __cdecl fflush(FILE *Stream); +// int __cdecl fclose(FILE *Stream); +// void *__cdecl calloc(size_t Count, size_t Size); +// int __cdecl atoi(const char *String); +// void __cdecl __noreturn abort(); +// FILE *__cdecl _wfopen(const wchar_t *FileName, const wchar_t *Mode); +// int __cdecl _stricmp(const char *String1, const char *String2); +// int __cdecl _setmode(int FileHandle, int Mode); +// size_t __cdecl _msize(void *Block); +// int __cdecl _isctype(int C, int Type); +// char *__cdecl _fullpath(char *Buffer, const char *Path, size_t BufferCount); +// int __cdecl _flsbuf(int Ch, FILE *File); +// int __cdecl _filbuf(FILE *File); +// int *__cdecl _errno(); +// void __cdecl _cexit(); +// int *__cdecl __p__fmode(); +// char ***__cdecl __p__environ(); +// int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak +// int __stdcall WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar); +// DWORD __stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); +// SIZE_T __stdcall VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); +// BOOL __stdcall VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); +// BOOL __stdcall TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue); +// LPVOID __stdcall TlsGetValue(DWORD dwTlsIndex); +// BOOL __stdcall TlsFree(DWORD dwTlsIndex); +// DWORD __stdcall TlsAlloc(); +// void __stdcall Sleep(DWORD dwMilliseconds); +// void __stdcall SetLastError(DWORD dwErrCode); +// BOOL __stdcall ReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); +// int __stdcall MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); +// void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection); +// LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend); +// LONG __stdcall InterlockedExchange(volatile LONG *Target, LONG Value); +// LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend); +// void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); +// DWORD __stdcall GetLastError(); +// DWORD __stdcall GetCurrentThreadId(); +// LPSTR __stdcall GetCommandLineA(); +// BOOL __stdcall GetCPInfo(UINT CodePage, LPCPINFO lpCPInfo); +// BOOL __stdcall FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData); +// HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData); +// BOOL __stdcall FindClose(HANDLE hFindFile); +// void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection); +// void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); +// HANDLE __stdcall CreateSemaphoreW(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName); +BOOL __stdcall CloseHandle(HANDLE hObject); +int __cdecl __mingwthr_key_dtor(int a1, int a2); +int __cdecl GetUnicode[abi:cxx11](int a1, unsigned int a2); +int __cdecl GetJsonDict(int *a1, int a2); +int __cdecl GetJsonString(int *a1, int *a2, _DWORD *a3); +int __cdecl GetUnicodeNum(int *a1, int a2); +int __cdecl DictToJsonString(int a1, int a2); +int __cdecl EscapeToJsonString(int a1, int a2); +int __cdecl _txnal_cow_string_D1(); +void __cdecl __noreturn _txnal_cow_string_c_str(); +void __cdecl __noreturn _txnal_sso_string_c_str(); +char *__cdecl _txnal_logic_error_get_msg(char *a1); +void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *a1); +char *__cdecl _txnal_runtime_error_get_msg(char *a1); +_DWORD *__cdecl _txnal_cow_string_C1_for_exceptions(_DWORD *a1); +int __cdecl HexDigit(char a1, char a2); +void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1); +void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1); +void __cdecl _ZGTtNSt11logic_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1); +int _ZGTtNSt11logic_errorD2Ev(); +void __cdecl _ZGTtNSt11range_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1); +int _ZGTtNSt11range_errorD2Ev(); +void __cdecl _ZGTtNSt12domain_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1); +int _ZGTtNSt12domain_errorD2Ev(); +void __cdecl _ZGTtNSt12length_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1); +int _ZGTtNSt12length_errorD2Ev(); +void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1); +int _ZGTtNSt12out_of_rangeD2Ev(); +void __cdecl _ZGTtNSt13runtime_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1); +int _ZGTtNSt13runtime_errorD2Ev(); +void __cdecl _ZGTtNSt14overflow_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1); +int _ZGTtNSt14overflow_errorD2Ev(); +void __cdecl _ZGTtNSt15underflow_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1); +int _ZGTtNSt15underflow_errorD2Ev(); +void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1); +int _ZGTtNSt16invalid_argumentD2Ev(); +void __cdecl eh_globals_dtor(int *a1); +// int __usercall get_ttype_entry@(int a1@, int a2@); +// int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@); +// char *__usercall parse_lsda_header@(_Unwind_Context *a1@, char *a2@, int a3@); +// int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4); +// _Unwind_Ptr __usercall base_of_encoded_value@(char a1@, _Unwind_Context *context@); +void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, _Unwind_Exception *a2); +// char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4); +void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)); // idb +void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)); // idb +void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *a1); +void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1); +void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this); // idb +void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *a1); +void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1); +void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this); // idb +void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1); +void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this); // idb +__gthread_mutex_t *`anonymous namespace'::get_locale_mutex(); +void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1); +void __cdecl `anonymous namespace'::io_error_category::~io_error_category(_anonymous_namespace_::io_error_category *this); // idb +void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *a1); +void (__cdecl ***`anonymous namespace'::__io_category_instance())(_anonymous_namespace_::io_error_category *__hidden this); +void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *a1); +// _DWORD *__usercall `anonymous namespace'::pool::free@(int a1@, struct type_info *a2, void (__cdecl *a3)(void *)); +// unsigned int *__usercall `anonymous namespace'::pool::allocate@(int a1@); +void `anonymous namespace'::init(void); // idb +// unsigned int __usercall `anonymous namespace'::xwrite@(int a1@, char *a2@, unsigned int a3@); +_DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // weak +_DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // weak +_DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // weak +int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); +void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); +void __cdecl WXML::DOMLib::ParseException::~ParseException(void *); // idb +void __cdecl WXML::DOMLib::RenderException::~RenderException(void *); // idb +int __fastcall WXML::DOMLib::Token::ToAttrContent[abi:cxx11](int a1); +int __cdecl WXML::DOMLib::Token::GetTemplateContent(int *a1, _DWORD *a2); +char __cdecl WXML::DOMLib::Token::IsValidVariableName(char **a1); +// bool __userpurge WXML::DOMLib::Token::IsMatch@(int a1@, WXML::DOMLib::Token *this, const char *a3); +_DWORD *__fastcall WXML::DOMLib::Token::ToString[abi:cxx11](int a1); +_DWORD *__thiscall WXML::DOMLib::Token::Token(_DWORD *this, int a2); +// _BYTE *__userpurge WXML::DOMLib::Token::Token@(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3); +// _BYTE *__userpurge WXML::DOMLib::Token::Token@(int a1@, WXML::DOMLib::Token *this, const WXML::DOMLib::Token *a3); +int __thiscall WXML::DOMLib::Token::operator=(int this, int a2); +int __thiscall WXML::DOMLib::Token::operator=(int this, int a2); +int __fastcall WXML::DOMLib::Parser::Parser(int a1); +char __thiscall WXML::DOMLib::WXMLDom::IfHasItsElse(_DWORD *this, signed int a2, int *a3); +int __cdecl WXML::DOMLib::WXMLDom::ToCamelStyle(int a1, int a2); +char __fastcall WXML::DOMLib::WXMLDom::HasSpAttrPrefix(int a1); +int __thiscall WXML::DOMLib::WXMLDom::MarkIfHasDescendant(int this, int *a2); +void __thiscall WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(_DWORD *this, int *a2); +unsigned int __thiscall WXML::DOMLib::WXMLDom::Print(_DWORD *this, int a2, char *a3, char *a4); +void __thiscall WXML::DOMLib::WXMLDom::PrintMe(int this, int a2, char *a3, char *a4); +int __fastcall WXML::DOMLib::WXMLDom::WXMLDom(int a1); +std::ostream::sentry *__thiscall WXML::DOMLib::StrCache::RenderPathDefine(_DWORD *this, int a2); +_BYTE *__thiscall WXML::DOMLib::StrCache::Insert(_DWORD *this, int a2); +int __thiscall WXML::DOMLib::StrCache::GetStrID(_DWORD *this, int a2); +void __fastcall WXML::EXPRLib::NonTerminal::~NonTerminal(void *a1); +void __fastcall WXML::EXPRLib::EPS::~EPS(void *a1); +// int __userpurge WXML::EXPRLib::Token::Token@(int a1@, _DWORD *a2@, WXML::EXPRLib::Token *this, const WXML::EXPRLib::Token *a4); +// int __userpurge WXML::EXPRLib::Token::Token@(_DWORD *a1@, WXML::EXPRLib::Token *this, const WXML::EXPRLib::Token *a3); +int __fastcall WXML::EXPRLib::Token::Token(_DWORD *a1); +int __fastcall WXML::EXPRLib::Action::Action(int a1); +void __fastcall WXML::EXPRLib::Action::~Action(void **a1); +void __fastcall WXML::EXPRLib::Action::~Action(void **a1); +void __thiscall WXML::EXPRLib::Action::~Action(void **ecx0, WXML::EXPRLib::Action *this); +int __fastcall WXML::EXPRLib::Terminal::Terminal(int a1); +void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1); +void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1); +void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this); +void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this); +unsigned int *__thiscall night::NSASTParse::NSASTParse(int this, int a2, int a3, int a4); +int __thiscall night::ns_sourcemap::ns_sourcemap(_DWORD *this, _DWORD *a2); +bool __cdecl night::NSToken::rw_cb_number(night::NSToken *this, _BYTE *a2); +char __cdecl night::NSToken::tk_is_comment2(night::NSToken *this, night::NSStream *a2); +int __cdecl night::NSToken::tk_is_var_start(unsigned int this); +bool __cdecl night::NSToken::tk_is_whitespace(night::NSToken *this); +char __cdecl night::NSToken::tk_is_valid_op_str(night::NSToken *this, int a2); +bool __cdecl night::NSToken::tk_is_not_line_break(night::NSToken *this); +_DWORD *__thiscall night::NSToken::get_tokens_for_sourcemap(_DWORD *this, _DWORD *a2, _DWORD *a3); +int __cdecl night::NSToken::tk_is_var(night::NSToken *this); +void **__thiscall night::ns_node::debug_no_space[abi:cxx11](void **this, const char **a2); +void **__gnu_cxx::__to_xstring(void **a1, int (__cdecl *a2)(unsigned __int8 *, int, int, char *), int a3, int a4, ...); +void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(__gthread_mutex_t **a1); +int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); +int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); +int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); +int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); +int __cdecl __gnu_cxx::__concat_size_t(char *a1, unsigned int a2, unsigned int a3); +int __cdecl __gnu_cxx::__snprintf_lite(char *a1, unsigned int a2, const char *a3, char *a4); +int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2); +int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1); +int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount); +size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount); +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, int Offset, int a4, int a5, int a6); +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, int Offset, int a4, int a5, int a6, int a7); +int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2); +int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1); +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2); +int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2); +int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1); +wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int a2, int a3); +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int a2, int a3); +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, int Offset, int a4, int a5, int a6); +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, int Offset, int a4, int a5, int a6, int a7); +__int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character); +int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character); +wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1); +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2); +void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1); +void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1); +void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1); +void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1); +void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1); +void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1); +void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1); +void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *a2); // idb +void __cdecl __noreturn __gnu_cxx::__verbose_terminate_handler(size_t a1, size_t a2, FILE *a3); +void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void); // idb +void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void); // idb +int __gnu_cxx::__freeres(void); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +// char __userpurge __cxxabiv1::__class_type_info::__do_catch@(_DWORD *a1@, __cxxabiv1::__class_type_info *this, const std::type_info *a3, void **a4, unsigned int a5); +bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int a2, int a3, _DWORD *a4); +// int __userpurge __cxxabiv1::__class_type_info::__do_upcast@(int *a1@, __cxxabiv1::__class_type_info *this, const __class_type_info *a3, void **a4); +int __thiscall __cxxabiv1::__class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8); +int __stdcall __cxxabiv1::__class_type_info::__do_find_public_src(__cxxabiv1::__class_type_info *this, const __cxxabiv1::__class_type_info *a2, const void *a3, const __cxxabiv1::__class_type_info *a4, const void *a5); +char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int a2, int a3, _DWORD *a4); +int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8); +// int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@(int a1@, __cxxabiv1::__si_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6); +int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); +int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, _DWORD *a7, int *a8); +// int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@(_DWORD *a1@, __cxxabiv1::__vmi_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6); +const char *`anonymous namespace'::io_error_category::name(); +int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3); +_anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition(_anonymous_namespace_::system_error_category *this, int a2); +const char *`anonymous namespace'::system_error_category::name(); +const char *`anonymous namespace'::generic_error_category::name(); +void **__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11](void **this, int a2, int ErrorMessage); +int WXML::EXPRLib::NonTerminal::GetClass(); +int WXML::EXPRLib::EPS::GetClass(); +int WXML::EXPRLib::Action::GetClass(); +int WXML::EXPRLib::Terminal::GetClass(); +const char *__gnu_cxx::__concurrence_lock_error::what(); +const char *__gnu_cxx::__concurrence_unlock_error::what(); +int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2); +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3); +void *__thiscall std::wstring::get_allocator(void *this, int a2); +unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3); +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3); +int __thiscall std::wstring::at(int *this, unsigned int a2); +int __fastcall std::wstring::end(_DWORD *a1); +int __fastcall std::wstring::_Rep::_M_is_leaked(int a1); +bool __fastcall std::wstring::_Rep::_M_is_shared(int a1); +int __fastcall std::wstring::back(_DWORD *a1); +int __fastcall std::wstring::cend(_DWORD *a1); +size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4); +int __fastcall std::wstring::data(int a1); +int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3); +int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4); +int __thiscall std::wstring::find(int *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3); +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); +int __fastcall std::wstring::size(_DWORD *a1); +int __fastcall std::wstring::begin(int a1); +int __fastcall std::wstring::c_str(int a1); +_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2); +bool __fastcall std::wstring::empty(_DWORD *a1); +int __fastcall std::wstring::front(int a1); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t **a2, int a3); +int __thiscall std::wstring::rfind(_DWORD *this, __int16 a2, unsigned int a3); +int __fastcall std::wstring::_M_rep(_DWORD *a1); +int __fastcall std::wstring::cbegin(int a1); +int __fastcall std::wstring::length(_DWORD *a1); +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::substr(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); +int __fastcall std::wstring::_M_data(int a1); +int __fastcall std::wstring::_M_iend(_DWORD *a1); +int __thiscall std::wstring::compare(const wchar_t **this, wchar_t *String); +int __thiscall std::wstring::compare(const wchar_t **this, const wchar_t **a2); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); +int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5); +int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, const wchar_t **a4); +int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2); +unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3); +unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3); +int __fastcall std::wstring::capacity(_DWORD *a1); +int std::wstring::max_size(); +int __fastcall std::wstring::_M_ibegin(int a1); +int __thiscall std::wstring::operator[](_DWORD *this, int a2); +int __fastcall std::istream::gcount(int a1); +int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1); +int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1); +// int __userpurge std::string::_M_disjunct@(_DWORD *a1@, std::string *this, const char *a3); +// int __userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::find_last_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); +// int __userpurge std::string::find_last_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// int __userpurge std::string::find_last_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); +// int __userpurge std::string::find_first_of@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::find_first_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); +// int __userpurge std::string::find_first_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); +void *__thiscall std::string::get_allocator(void *ecx0, std::string *this); +// char *__userpurge std::string::_M_check_length@(_DWORD *a1@, std::string *this, unsigned int a3, std::length_error *a4, const char *a5); +// int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const char *a3, unsigned int MaxCount, unsigned int a5); +// int __userpurge std::string::find_last_not_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); +// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); +// int __userpurge std::string::find_first_not_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); +// char *__userpurge std::string::at@(int *a1@, std::string *this, unsigned int a3); +int __fastcall std::string::end(_DWORD *a1); +int __fastcall std::string::_Rep::_M_is_leaked(int a1); +bool __fastcall std::string::_Rep::_M_is_shared(int a1); +int __fastcall std::string::back(_DWORD *a1); +int __fastcall std::string::cend(_DWORD *a1); +// int __userpurge std::string::copy@(_DWORD *a1@, std::string *this, char *a3, unsigned int a4, unsigned int a5); +int __fastcall std::string::data(int a1); +// unsigned int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4); +// unsigned int __userpurge std::string::find@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5); +// unsigned int __userpurge std::string::find@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); +_DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this); +int __fastcall std::string::size(_DWORD *a1); +int __fastcall std::string::begin(int a1); +int __fastcall std::string::c_str(int a1); +_DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this); +bool __fastcall std::string::empty(_DWORD *a1); +int __fastcall std::string::front(int a1); +// int __userpurge std::string::rfind@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::rfind@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5); +// int __userpurge std::string::rfind@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// int __userpurge std::string::rfind@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); +int __fastcall std::string::_M_rep(_DWORD *a1); +int __fastcall std::string::cbegin(int a1); +int __fastcall std::string::length(_DWORD *a1); +_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this); +_DWORD *__thiscall std::string::substr(_DWORD *ecx0, std::string *this, std::string *a3, unsigned int a4); +int __fastcall std::string::_M_data(int a1); +int __fastcall std::string::_M_iend(_DWORD *a1); +// int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3); +// int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3); +// int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, char *Str, const char *a5); +// int __userpurge std::string::compare@(int *a1@, std::string *this, const char *a3, void *Buf2, const char *a5, unsigned int a6); +// int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, const void **a4, const std::string *a5); +// int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, size_t a6, unsigned int a7); +_DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this); +// std::string *__userpurge std::string::_M_check@(_DWORD *a1@, std::string *this, const char *a3, const char *a4); +// unsigned int __userpurge std::string::_M_limit@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); +int __fastcall std::string::capacity(_DWORD *a1); +int std::string::max_size(); +int __fastcall std::string::_M_ibegin(int a1); +int __thiscall std::string::operator[](_DWORD *this, int a2); +const char *std::bad_typeid::what(); +int __fastcall std::error_code::default_error_condition(int a1); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2); +void __thiscall std::__timepunct::_M_put(const char **this, char *Buffer, size_t SizeInBytes, char *Format, struct tm *Tm); +_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2); +void __thiscall std::__timepunct::_M_put(const char **this, wchar_t *Buffer, size_t SizeInWords, wchar_t *Format, struct tm *Tm); +_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2); +int __stdcall std::__use_cache>::operator()(int *a1); +int __stdcall std::__use_cache>::operator()(int *a1); +int __fastcall std::logic_error::what(int a1); +bool __fastcall std::__basic_file::is_open(_DWORD *a1); +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); +void **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(void **this, int a2, std::string *a3, int a4); +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); +wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(wchar_t **this, int a2, int a3, int a4); +void **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(void **this, int a2, std::string *a3, int a4, int a5, int a6); +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 **a6); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, unsigned __int8 **a2, int a3); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); +wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(wchar_t **this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, wchar_t **a6); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, unsigned __int8 **a2, int a3); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, std::string *a3, int a4, int a5, unsigned __int8 a6, int a7, int *a8, int a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, std::string *a3, int a4, int a5, unsigned __int8 a6, int a7, int *a8, long double *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(_DWORD *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, int a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, unsigned int **a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(_DWORD *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, int a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, _DWORD *a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7); +const char *_ZGTtNKSt13bad_exception4whatEv(); +bool __fastcall std::filebuf::is_open(int a1); +bool __fastcall std::wfilebuf::is_open(int a1); +int __fastcall std::fstream::rdbuf(int a1); +bool __fastcall std::fstream::is_open(int a1); +int __fastcall std::wfstream::rdbuf(int a1); +bool __fastcall std::wfstream::is_open(int a1); +int __fastcall std::wistream::gcount(int a1); +int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1); +int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1); +int __fastcall std::runtime_error::what(int a1); +int __fastcall std::ifstream::rdbuf(int a1); +bool __fastcall std::ifstream::is_open(int a1); +int __fastcall std::wifstream::rdbuf(int a1); +bool __fastcall std::wifstream::is_open(int a1); +int __fastcall std::ofstream::rdbuf(int a1); +bool __fastcall std::ofstream::is_open(int a1); +int __fastcall std::wofstream::rdbuf(int a1); +bool __fastcall std::wofstream::is_open(int a1); +int __fastcall std::streambuf::gptr(int a1); +int __fastcall std::streambuf::pptr(int a1); +int __fastcall std::streambuf::eback(int a1); +int __fastcall std::streambuf::egptr(int a1); +int __fastcall std::streambuf::epptr(int a1); +int __fastcall std::streambuf::pbase(int a1); +volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2); +int __fastcall std::wstreambuf::gptr(int a1); +int __fastcall std::wstreambuf::pptr(int a1); +int __fastcall std::wstreambuf::eback(int a1); +int __fastcall std::wstreambuf::egptr(int a1); +int __fastcall std::wstreambuf::epptr(int a1); +int __fastcall std::wstreambuf::pbase(int a1); +volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2); +const char *std::bad_function_call::what(); +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_base::do_in(unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_out(int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8); +unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5); +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, int a5); +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, int a5); +// char __userpurge std::__iosfail_type_info::__do_upcast@(int *a1@, std::__iosfail_type_info *this, const __cxxabiv1::__class_type_info *a3, void **a4); +bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int a2); +// int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@); +bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2); +// int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@); +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf16_base::do_in(_DWORD *this, int a2, int a3, int a4, int *a5, unsigned int *a6, unsigned int *a7, unsigned int **a8); +int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, int *a8); +int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, int *a8); +int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); +const char *std::bad_array_new_length::what(); +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, unsigned int *a6, unsigned int *a7, unsigned int **a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5); +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_utf16_base::do_in(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_out(unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5); +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5); +_DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3); +void **__thiscall std::_V2::error_category::_M_message(void **ecx0, std::_V2::error_category *this, int a3); +// bool __userpurge std::_V2::error_category::equivalent@(int a1@, std::_V2::error_category *this, const std::error_code *a3, int a4); +int __thiscall std::_V2::error_category::equivalent(void *this, int a2, _DWORD *a3); +std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition(std::_V2::error_category *this, int a2); +BOOL __thiscall std::map::count(_DWORD *this, int a2); +_DWORD *__thiscall std::map>::at(_DWORD *this, int a2); +BOOL __thiscall std::map::count(_DWORD *this, int a2); +char *__thiscall std::ctype::do_tolower(_DWORD *this, char *a2, char *a3); +int __thiscall std::ctype::do_tolower(_DWORD *this, int a2); +char *__thiscall std::ctype::do_toupper(_DWORD *this, char *a2, char *a3); +int __thiscall std::ctype::do_toupper(_DWORD *this, int a2); +int __fastcall std::ctype::_M_widen_init(int a1); +int __fastcall std::ctype::_M_narrow_init(int a1); +_BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *a3, void *a4); +_BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3); +int __stdcall std::ctype::do_widen(unsigned __int8 a1); +_BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4); +int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2); +unsigned __int16 *__thiscall std::ctype::do_scan_is(void *this, unsigned __int16 a2, unsigned __int16 *a3, unsigned int a4); +unsigned int __stdcall std::ctype::do_tolower(wint_t *a1, unsigned int a2); +wint_t __stdcall std::ctype::do_tolower(wint_t C); +unsigned int __stdcall std::ctype::do_toupper(wint_t *a1, unsigned int a2); +wint_t __stdcall std::ctype::do_toupper(wint_t C); +unsigned __int16 *__thiscall std::ctype::do_scan_not(void *this, unsigned __int16 a2, unsigned __int16 *a3, unsigned int a4); +wctype_t __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1); +unsigned int __thiscall std::ctype::do_is(char *this, wint_t *a2, unsigned int a3, _WORD *a4); +int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16 a2, wint_t C); +unsigned __int8 *__thiscall std::ctype::do_widen(_WORD *this, unsigned __int8 *a2, unsigned __int8 *a3, int a4); +int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2); +unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, char *a5); +int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3); +int __fastcall std::locale::id::_M_id(int *a1); +int __thiscall std::locale::name[abi:cxx11](int this, int *a2); +unsigned int **__thiscall std::locale::name(unsigned int **ecx0, std::locale *this); +// _DWORD *__userpurge std::locale::facet::_M_cow_shim@(volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3); +// _DWORD *__userpurge std::locale::facet::_M_sso_shim@(volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3); +int __fastcall std::locale::facet::_M_remove_reference(volatile signed __int32 *a1); +bool __thiscall std::locale::operator==(int *this, int *a2); +int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3); +int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2); +void **__thiscall std::moneypunct::do_grouping(void **this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2); +void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2); +void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2); +void **__thiscall std::moneypunct::do_grouping(void **this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2); +void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2); +void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2); +void **__thiscall std::moneypunct::do_grouping(void **this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2); +wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2); +wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2); +void **__thiscall std::moneypunct::do_grouping(void **this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2); +wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2); +wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); +int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int a2); +bool __fastcall std::string::_M_is_local(_DWORD *a1); +unsigned int __thiscall std::string::find_last_of(int *this, char *Str, int a3); +unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); +unsigned int __thiscall std::string::find_last_of(int *this, int a2, int a3); +int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3); +int __fastcall std::string::_M_local_data(int a1); +unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, int a3); +unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount); +unsigned int __thiscall std::string::find_first_of(_DWORD *this, int a2, int a3); +char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3); +void *__thiscall std::string::get_allocator(void *this, int a2); +unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); +int __fastcall std::string::_M_get_allocator(int a1); +unsigned int __thiscall std::string::find_last_not_of(int *this, char *Str, int a3); +unsigned int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); +unsigned int __thiscall std::string::find_last_not_of(int *this, int a2, int a3); +int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3); +unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, int a3); +unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); +unsigned int __thiscall std::string::find_first_not_of(int *this, int a2, int a3); +int __thiscall std::string::find_first_not_of(int *this, char a2, unsigned int a3); +unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2); +int __fastcall std::string::end(_DWORD *a1); +int __fastcall std::string::back(_DWORD *a1); +int __fastcall std::string::cend(_DWORD *a1); +size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, unsigned int a3, unsigned int a4); +int __fastcall std::string::data(int a1); +int __thiscall std::string::find(int *this, char *Str, int a3); +int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size); +int __thiscall std::string::find(int *this, int a2, int a3); +char *__thiscall std::string::find(int *this, char a2, unsigned int a3); +_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2); +int __fastcall std::string::size(int a1); +int __fastcall std::string::begin(int a1); +int __fastcall std::string::c_str(int a1); +_DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2); +bool __fastcall std::string::empty(int a1); +int __fastcall std::string::front(int a1); +unsigned int __thiscall std::string::rfind(int *this, char *Str, int a3); +unsigned int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size); +unsigned int __thiscall std::string::rfind(int *this, int a2, int a3); +int __thiscall std::string::rfind(int *this, char a2, unsigned int a3); +int __fastcall std::string::cbegin(int a1); +int __fastcall std::string::length(int a1); +_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2); +void **__thiscall std::string::substr(void **this, _DWORD *a2, unsigned int a3, unsigned int a4); +int __fastcall std::string::_M_data(int a1); +int __thiscall std::string::compare(int this, char *Str); +int __thiscall std::string::compare(int this, int a2); +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, char *Str); +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, void *Buf2, unsigned int a5); +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, int a4); +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +_DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2); +unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int a2, const char *a3); +unsigned int __thiscall std::string::_M_limit(_DWORD *this, int a2, unsigned int a3); +int __fastcall std::string::capacity(_DWORD *a1); +int std::string::max_size(); +int __thiscall std::string::operator[](_DWORD *this, int a2); +bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2); +bool __fastcall std::wstring::_M_is_local(_DWORD *a1); +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3); +int __fastcall std::wstring::_M_local_data(int a1); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3); +void *__thiscall std::wstring::get_allocator(void *this, int a2); +unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); +int __fastcall std::wstring::_M_get_allocator(int a1); +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *S, unsigned int a3, int N); +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3); +int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3); +int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +int __thiscall std::wstring::find_first_not_of(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3); +int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); +int __fastcall std::wstring::end(_DWORD *a1); +int __fastcall std::wstring::back(_DWORD *a1); +int __fastcall std::wstring::cend(_DWORD *a1); +size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4); +int __fastcall std::wstring::data(int a1); +int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3); +int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4); +int __thiscall std::wstring::find(int *this, int a2, int a3); +int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3); +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); +int __fastcall std::wstring::size(int a1); +int __fastcall std::wstring::begin(int a1); +int __fastcall std::wstring::c_str(int a1); +_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2); +bool __fastcall std::wstring::empty(int a1); +int __fastcall std::wstring::front(int a1); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::rfind(int *this, int a2, int a3); +int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3); +int __fastcall std::wstring::cbegin(int a1); +int __fastcall std::wstring::length(int a1); +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); +wchar_t **__thiscall std::wstring::substr(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4); +int __fastcall std::wstring::_M_data(int a1); +int __thiscall std::wstring::compare(int this, wchar_t *String); +int __thiscall std::wstring::compare(int this, int a2); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, int a4); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2); +unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3); +unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3); +int __fastcall std::wstring::capacity(_DWORD *a1); +int std::wstring::max_size(); +int __thiscall std::wstring::operator[](_DWORD *this, int a2); +int __thiscall std::stringbuf::str(int this, _DWORD *a2); +_WORD *__thiscall std::wstringbuf::str(_WORD *this, _DWORD *a2); +int __thiscall std::basic_stringstream,std::allocator>::str(int this, _DWORD *a2); +int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); +_WORD *__thiscall std::basic_stringstream,std::allocator>::str(_WORD *this, _DWORD *a2); +int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); +int __thiscall std::istringstream::str(int this, _DWORD *a2); +int __fastcall std::istringstream::rdbuf(int a1); +_WORD *__thiscall std::wistringstream::str(_WORD *this, _DWORD *a2); +int __fastcall std::wistringstream::rdbuf(int a1); +int __thiscall std::ostringstream::str(int this, _DWORD *a2); +int __fastcall std::ostringstream::rdbuf(int a1); +_WORD *__thiscall std::wostringstream::str(_WORD *this, _DWORD *a2); +int __fastcall std::wostringstream::rdbuf(int a1); +int __stdcall std::collate::_M_compare(char *String1, char *String2); // idb +int __stdcall std::collate::do_compare(unsigned __int8 *a1, size_t Size, unsigned __int8 *a3, size_t a4); +size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); +int __thiscall std::collate::do_transform(int this, int a2, unsigned __int8 *a3, size_t Size); +int __thiscall std::collate::hash(void *this, char *a1, char *a2); +int __fastcall std::collate::compare(int a1); +int __stdcall std::collate::do_hash(char *a1, char *a2); +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); +int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2); // idb +int __stdcall std::collate::do_compare(wchar_t *a1, int a2, wchar_t *a3, int a4); +size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); +int __thiscall std::collate::do_transform(int this, int a2, wchar_t *a3, int a4); +int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2); +int __fastcall std::collate::compare(int a1); +int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2); +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); +int __stdcall std::messages::_M_convert_to_char(int a1); +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); +int __thiscall std::messages::open(void *this, int a2, int a3); +int __thiscall std::messages::open(void *this, int a2, int a3, int a4); +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); +_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +int __stdcall std::messages::do_open(int a1, int a2); +int __stdcall std::messages::do_close(int); // weak +int __stdcall std::messages::_M_convert_to_char(int a1); +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); +int __thiscall std::messages::open(void *this, int a2, int a3); +int __thiscall std::messages::open(void *this, int a2, int a3, int a4); +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); +wchar_t **__thiscall std::messages::do_get(wchar_t **this, int a2, int a3, int a4, int a5, int a6); +int __stdcall std::messages::do_open(int a1, int a2); +int __stdcall std::messages::do_close(int); // weak +void **__thiscall std::numpunct::do_grouping(void **this, int a2); +void **__thiscall std::numpunct::do_truename(void **this, int a2); +void **__thiscall std::numpunct::do_falsename(void **this, int a2); +int __fastcall std::numpunct::decimal_point(_DWORD *a1); +int __fastcall std::numpunct::thousands_sep(_DWORD *a1); +int __fastcall std::numpunct::do_decimal_point(int a1); +int __fastcall std::numpunct::do_thousands_sep(int a1); +void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2); +void **__thiscall std::numpunct::truename(void **this, _DWORD *a2); +void **__thiscall std::numpunct::falsename(void **this, _DWORD *a2); +void **__thiscall std::numpunct::do_grouping(void **this, int a2); +wchar_t **__thiscall std::numpunct::do_truename(wchar_t **this, int a2); +wchar_t **__thiscall std::numpunct::do_falsename(wchar_t **this, int a2); +int __fastcall std::numpunct::decimal_point(_DWORD *a1); +int __fastcall std::numpunct::thousands_sep(_DWORD *a1); +int __fastcall std::numpunct::do_decimal_point(int a1); +int __fastcall std::numpunct::do_thousands_sep(int a1); +void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2); +wchar_t **__thiscall std::numpunct::truename(wchar_t **this, _DWORD *a2); +wchar_t **__thiscall std::numpunct::falsename(wchar_t **this, _DWORD *a2); +int __fastcall std::time_get>::date_order(int a1); +_DWORD *__stdcall std::time_get>::do_get_date(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +_DWORD *__stdcall std::time_get>::do_get_time(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +int __fastcall std::time_get>::get_weekday(int a1); +int std::time_get>::do_date_order(); +int __fastcall std::time_get>::get_monthname(int a1); +_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); +_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +int __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, int a7, _DWORD *a8); +_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +_DWORD *__stdcall std::time_get>::_M_extract_via_format(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char *a8); +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, int a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); +int __thiscall std::time_get>::get(void *this, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int8 *a9, unsigned __int8 *a10); +int __thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); +_DWORD *__stdcall std::time_get>::do_get(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9); +int __fastcall std::time_get>::get_date(int a1); +int __fastcall std::time_get>::get_time(int a1); +int __fastcall std::time_get>::get_year(int a1); +int __fastcall std::time_get>::date_order(int a1); +_DWORD *__stdcall std::time_get>::do_get_date(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7); +_DWORD *__stdcall std::time_get>::do_get_time(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7); +_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +int __fastcall std::time_get>::get_weekday(int a1); +int std::time_get>::do_date_order(); +int __fastcall std::time_get>::get_monthname(int a1); +_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); +_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +_DWORD *__stdcall std::time_get>::_M_extract_name(_DWORD *a1, int a2, _DWORD *a3, int *a4, _DWORD *a5, int a6, int a7, int a8, _DWORD *a9); +_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +_DWORD *__stdcall std::time_get>::_M_extract_via_format(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7, wchar_t *String); +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, _DWORD *a5, int a6, unsigned int a7, int a8, _DWORD *a9); +int __thiscall std::time_get>::get(void *this, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10); +int __thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int *a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); +_DWORD *__stdcall std::time_get>::do_get(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9); +int __fastcall std::time_get>::get_date(int a1); +int __fastcall std::time_get>::get_time(int a1); +int __fastcall std::time_get>::get_year(int a1); +unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, int a2, unsigned int a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, int a2, unsigned int a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +unsigned int __stdcall std::money_get>::do_get(unsigned int a1, int a2, unsigned int a3, int a4, char a5, int a6, _DWORD *a7, int *a8); +unsigned int __stdcall std::money_get>::do_get(std::locale::facet *a1, int a2, unsigned int a3, int a4, char a5, int a6, _DWORD *a7, long double *a8); +unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); +unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +unsigned int __stdcall std::money_get>::do_get(unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, char a5, int a6, _DWORD *a7, int *a8); +unsigned int __stdcall std::money_get>::do_get(std::locale::facet *a1, __int16 a2, unsigned int a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); +int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, char a5, int a6); +int __thiscall std::money_put>::do_put(void *this, int a2, char a3, int a4, int a5, int a6, long double a7); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, int a5); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, int a5); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); +int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, wchar_t a5, int a6); +int __thiscall std::money_put>::do_put(void *this, int a2, int a3, int a4, int a5, int a6, long double a7); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, wchar_t a4, int a5); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, wchar_t a4, int a5); +int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, int a3, unsigned __int8 **a4, int a5, int a6, _DWORD *a7); +int __stdcall std::codecvt::do_out(int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, int a5, int a6, int *a7); +unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4); +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); +int __stdcall std::codecvt::do_out(int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); +unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4); +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); +int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, int a5, int a6, int *a7); +int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, int a5, int a6, int *a7); +unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned int a4); +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); +int std::codecvt::do_encoding(); +int std::codecvt::do_max_length(); +int std::codecvt::do_always_noconv(); +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); +int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, _BYTE *a5, _BYTE *a6, _BYTE **a7); +int __stdcall std::codecvt::do_length(int a1, int a2, unsigned __int8 *a3, unsigned int a4); +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); +int std::codecvt::do_max_length(); +int std::codecvt::do_always_noconv(); +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); +unsigned int __stdcall std::codecvt::do_length(int a1, int a2, int a3, unsigned int a4); +BOOL std::codecvt::do_encoding(); +int std::codecvt::do_max_length(); +int std::codecvt::do_always_noconv(); +int __stdcall std::codecvt::do_in(unsigned int *a1, char *a2, unsigned int a3, char **a4, wchar_t *a5, unsigned int a6, wchar_t **a7); +int __stdcall std::codecvt::do_out(unsigned int *a1, wchar_t *a2, unsigned int a3, wchar_t **a4, char *a5, unsigned int a6, char **a7); +int __stdcall std::codecvt::do_length(unsigned int *a1, char *a2, unsigned int a3, int a4); +int __stdcall std::collate::_M_compare(char *String1, char *String2); // idb +int __stdcall std::collate::do_compare(int a1, _BYTE *a2, int a3, int a4); +size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); +unsigned int **__thiscall std::collate::do_transform(unsigned int **this, int a2, _BYTE *a3, int a4); +int __thiscall std::collate::hash(void *this, char *a1, char *a2); +int __fastcall std::collate::compare(int a1); +int __stdcall std::collate::do_hash(char *a1, char *a2); +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); +int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2); // idb +int __stdcall std::collate::do_compare(int a1, const wchar_t *a2, int a3, int a4); +size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); +void **__thiscall std::collate::do_transform(void **this, int a2, const wchar_t *a3, int a4); +int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2); +int __fastcall std::collate::compare(int a1); +int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2); +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned int *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned int *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned __int16 *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_float(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int **a6); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); +unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, int *a5, _BYTE *a6); +int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, double *a6); +int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, long double *a6); +int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, float *a6); +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned int *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned int *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned __int16 *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned __int16 *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); +__int64 __stdcall std::num_get>::_M_extract_float(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int **a6); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); +int __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); +int __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, int *a5, _BYTE *a6); +_DWORD *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, double *a6); +_DWORD *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, long double *a6); +_DWORD *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, float *a6); +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +_BYTE *__stdcall std::num_put>::_M_group_int(char *a1, int a2, char a3, int a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, UDItype a5); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5, int a6); +_BYTE *__stdcall std::num_put>::_M_group_float(char *a1, int a2, char a3, char *Src, int a5, _BYTE *a6, _DWORD *a7); +int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, _DWORD *a4, int a5, int a6, double a7); +int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, std::__num_base *a4, int a5, int a6, long double a7); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5, unsigned __int8 a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, UDItype a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6, int a7); +int __stdcall std::num_put>::_M_pad(char a1, int a2, _DWORD *a3, char *a4, _BYTE *a5, int *a6); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); +int *__stdcall std::num_put>::do_put(int *a1, int a2, _DWORD *a3, int a4, int a5); +int __thiscall std::num_put>::do_put(void *this, int a2, int a3, _DWORD *a4, char a5, double a6); +int __thiscall std::num_put>::do_put(void *this, int a2, int a3, std::__num_base *a4, char a5, long double a6); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, UDItype a5); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5, int a6); +int __stdcall std::num_put>::_M_group_int(char *a1, int a2, __int16 a3, int a4, _WORD *a5, _WORD *a6, int *a7); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, int a5); // idb +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, int a5); // idb +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, UDItype a5); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, int a5, int a6); // idb +int __stdcall std::num_put>::_M_group_float(char *a1, int a2, __int16 a3, wchar_t *S2, _WORD *a5, _WORD *a6, _DWORD *a7); +int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, wchar_t *S1, int a5, int a6, double a7); +int __fastcall std::num_put>::_M_insert_float(int a1, int a2, int a3, int a4, wchar_t *S1, int a6, int a7, long double a8); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5, unsigned __int8 a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, UDItype a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6, int a7); +int __stdcall std::num_put>::_M_pad(unsigned __int16 a1, int a2, wchar_t *S1, wchar_t *a4, wchar_t *a5, int *a6); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *S1, unsigned __int16 a4, int a5); +int *__stdcall std::num_put>::do_put(int *a1, int a2, wchar_t *S1, int a4, int a5); +int __thiscall std::num_put>::do_put(void *this, int a2, int a3, wchar_t *S1, unsigned __int16 a5, double a6); +int __thiscall std::num_put>::do_put(void *this, int a2, int a3, wchar_t *S1, unsigned __int16 a5, long double a6); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, UDItype a5); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5, int a6); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); +const char *std::bad_cast::what(); +int __thiscall std::function::operator()(int this, char a2, char a3); +int __fastcall std::ios_base::failure::what(int a1); +int __stdcall std::messages::_M_convert_to_char(int a1); +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); +int __thiscall std::messages::open(void *this, int a2, int a3); +int __thiscall std::messages::open(void *this, int a2, int a3, int a4); +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); +unsigned int **__thiscall std::messages::do_get(unsigned int **this, int a2, int a3, int a4, int a5, unsigned int **a6); +int __stdcall std::messages::do_open(int a1, int a2); +int __stdcall std::messages::do_close(int); // weak +int __stdcall std::messages::_M_convert_to_char(int a1); +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); +int __thiscall std::messages::open(void *this, int a2, int a3); +int __thiscall std::messages::open(void *this, int a2, int a3, int a4); +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); +_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _DWORD *a6); +int __stdcall std::messages::do_open(int a1, int a2); +int __stdcall std::messages::do_close(int); // weak +_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); +int __fastcall std::numpunct::decimal_point(_DWORD *a1); +int __fastcall std::numpunct::thousands_sep(_DWORD *a1); +int __fastcall std::numpunct::do_decimal_point(int a1); +int __fastcall std::numpunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); +int __fastcall std::numpunct::decimal_point(_DWORD *a1); +int __fastcall std::numpunct::thousands_sep(_DWORD *a1); +int __fastcall std::numpunct::do_decimal_point(int a1); +int __fastcall std::numpunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); +int __fastcall std::time_get>::date_order(int a1); +int __stdcall std::time_get>::do_get_date(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); +int __stdcall std::time_get>::do_get_time(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); +_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +int __fastcall std::time_get>::get_weekday(int a1); +int std::time_get>::do_date_order(); +int __fastcall std::time_get>::get_monthname(int a1); +_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); +_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +int __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, int a7, _DWORD *a8); +_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +unsigned __int64 __stdcall std::time_get>::_M_extract_via_format(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char *a7); +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, int a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); +int __stdcall std::time_get>::get(int a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, unsigned __int8 *a8, unsigned __int8 *a9); +int __stdcall std::time_get>::get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); +int __stdcall std::time_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); +int __fastcall std::time_get>::get_date(int a1); +int __fastcall std::time_get>::get_time(int a1); +int __fastcall std::time_get>::get_year(int a1); +int __fastcall std::time_get>::date_order(int a1); +_DWORD *__stdcall std::time_get>::do_get_date(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6); +_DWORD *__stdcall std::time_get>::do_get_time(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6); +_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +int __fastcall std::time_get>::get_weekday(int a1); +int std::time_get>::do_date_order(); +int __fastcall std::time_get>::get_monthname(int a1); +_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); +_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +_DWORD *__stdcall std::time_get>::_M_extract_name(_DWORD *a1, int a2, _DWORD *a3, int *a4, _DWORD *a5, int a6, int a7, int a8, _DWORD *a9); +_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +__int64 __stdcall std::time_get>::_M_extract_via_format(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, wchar_t *a7); +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, _DWORD *a5, int a6, unsigned int a7, int a8, _DWORD *a9); +int __thiscall std::time_get>::get(void *this, int a2, int a3, _DWORD *a4, int a5, _DWORD *a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10); +int __stdcall std::time_get>::get(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); +_DWORD *__stdcall std::time_get>::do_get(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); +int __fastcall std::time_get>::get_date(int a1); +int __fastcall std::time_get>::get_time(int a1); +int __fastcall std::time_get>::get_year(int a1); +__int64 __thiscall std::time_put>::put(void *this, __int64 a2, int a3, char a4, int a5, unsigned __int8 *a6, unsigned __int8 *a7); +int __thiscall std::time_put>::put(void *this, int a2, int a3, int a4, char a5, int a6, char a7, char a8); +int __stdcall std::time_put>::do_put(int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7); +_DWORD *__thiscall std::time_put>::put(void *this, _DWORD *a2, int a3, int a4, unsigned __int16 a5, int a6, unsigned __int16 *a7, unsigned __int16 *a8); +int __thiscall std::time_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5, int a6, char a7, char a8); +int __stdcall std::time_put>::do_put(int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7); +const char *std::bad_alloc::what(); +int __fastcall std::ios::exceptions(int a1); +int __fastcall std::ios::bad(int a1); +int __fastcall std::ios::eof(int a1); +int __fastcall std::ios::tie(int a1); +bool __fastcall std::ios::fail(int a1); +int __fastcall std::ios::fill(int a1); +bool __fastcall std::ios::good(int a1); +int __fastcall std::ios::rdbuf(int a1); +int __thiscall std::ios::widen(int *this, int a2); +int __thiscall std::ios::narrow(_DWORD *this, int a2, int a3); +int __fastcall std::ios::rdstate(int a1); +int __fastcall std::ios::operator void *(int a1); +bool __fastcall std::ios::operator bool(int a1); +bool __fastcall std::ios::operator!(int a1); +int __fastcall std::wios::exceptions(int a1); +int __fastcall std::wios::bad(int a1); +int __fastcall std::wios::eof(int a1); +int __fastcall std::wios::tie(int a1); +bool __fastcall std::wios::fail(int a1); +int __fastcall std::wios::fill(int a1); +bool __fastcall std::wios::good(int a1); +int __fastcall std::wios::rdbuf(int a1); +int __thiscall std::wios::widen(_DWORD *this, char a2); +int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16 a2, char a3); +int __fastcall std::wios::rdstate(int a1); +int __fastcall std::wios::operator void *(int a1); +bool __fastcall std::wios::operator bool(int a1); +bool __fastcall std::wios::operator!(int a1); +const char *_ZGTtNKSt9exception4whatEv(); +int __stdcall std::money_get>::_M_extract(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __stdcall std::money_get>::_M_extract(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, unsigned int **a7); +int __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7); +_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); +_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +_DWORD *__stdcall std::money_get>::do_get(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, void **a8); +_DWORD *__stdcall std::money_get>::do_get(std::locale::facet *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); +int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, char a5, std::string **a6); +int __thiscall std::money_put>::do_put(void *this, std::locale *a2, char a3, int a4, int a5, int a6, long double a7); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, std::string **a5); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, std::string **a5); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); +int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, __int16 a5, wchar_t **a6); +int __thiscall std::money_put>::do_put(void *this, std::locale *a2, char a3, int a4, int a5, int a6, long double a7); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, __int16 a4, wchar_t **a5); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, wchar_t a4, wchar_t **a5); +// bool __userpurge std::type_info::__do_catch@(_DWORD *a1@, std::type_info *this, const std::type_info *a3, void **a4, unsigned int a5); +int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3); +int std::type_info::__is_function_p(); +bool __thiscall std::type_info::operator==(_DWORD *this, int a2); +int __cdecl std::wstring::_S_compare(int a1, int a2); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +const wchar_t *__fastcall std::wstring::_M_leak_hard(const wchar_t **a1); +_DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, wchar_t a2); +// _DWORD *__usercall std::wstring::_S_construct@(unsigned int a1@, wchar_t a2@); +wchar_t *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(wchar_t *S2, wchar_t *a2); +_DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2); +_DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2); +// _DWORD *__usercall std::wstring::_S_construct@(const wchar_t *a1@, int a2@); +void *std::wstring::_S_empty_rep(); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +char *__fastcall std::wstring::shrink_to_fit(void **a1); +const wchar_t **__thiscall std::wstring::_M_replace_aux(const wchar_t **this, size_t a2, int a3, size_t N, wchar_t C); +const wchar_t **__thiscall std::wstring::_M_replace_safe(const wchar_t **this, size_t a2, int a3, wchar_t *S2, size_t N); +_DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, wchar_t a2); +const wchar_t *__thiscall std::wstring::at(const wchar_t **this, unsigned int a2); +int __fastcall std::wstring::end(const wchar_t **a1); +void __thiscall std::wstring::_Rep::_M_destroy(void *this, int a2); +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void __fastcall std::wstring::_Rep::_M_dispose(volatile signed __int32 *a1); +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +int __fastcall std::wstring::_Rep::_M_refcopy(int a1); +int __fastcall std::wstring::_Rep::_M_refdata(int a1); +void *std::wstring::_Rep::_S_empty_rep(); +void __fastcall std::wstring::_Rep::_M_set_leaked(int a1); +void __fastcall std::wstring::_Rep::_M_set_sharable(int a1); +int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(int this, int a2); +_DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3); +_DWORD *__thiscall std::wstring::_Rep::_M_clone(int this, int a2, int a3); +_DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2); +const wchar_t *__fastcall std::wstring::back(const wchar_t **a1); +const wchar_t **__thiscall std::wstring::rend(const wchar_t **this, const wchar_t **a2); +int __thiscall std::wstring::swap(int *this, int *a2); +const wchar_t *__fastcall std::wstring::begin(const wchar_t **a1); +void __fastcall std::wstring::clear(void **a1); +char *__thiscall std::wstring::erase(const wchar_t **this, int a2); +char *__thiscall std::wstring::erase(const wchar_t **this, char *a2, int a3); +const wchar_t **__thiscall std::wstring::erase(const wchar_t **this, size_t a2, unsigned int a3); +const wchar_t *__fastcall std::wstring::front(const wchar_t **a1); +void **__thiscall std::wstring::append(void **this, wchar_t *String); +void **__thiscall std::wstring::append(void **this, wchar_t *a2, size_t N); +void **__thiscall std::wstring::append(void **this, const wchar_t **a2); +void **__thiscall std::wstring::append(void **this, _DWORD *a2, unsigned int a3, size_t a4); +void **__thiscall std::wstring::append(void **this, size_t N, wchar_t C); +int __thiscall std::wstring::assign(int *this, int *a2); +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *String); +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *S2, size_t N); +void **__thiscall std::wstring::assign(void **this, _DWORD *a2); +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, _DWORD *a2, unsigned int a3, size_t a4); +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, size_t a2, __int16 a3); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *a3, size_t a4); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, size_t a3, __int16 a4); +char *__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t a3); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *String); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, wchar_t *a3, size_t N); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t **a3); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, _DWORD *a3, unsigned int a4, size_t a5); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, size_t a3, __int16 a4); +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, const wchar_t **a2); +void __thiscall std::wstring::resize(void **this, size_t a2); +void __thiscall std::wstring::resize(void **this, size_t a2, wchar_t a3); +size_t __cdecl std::wstring::_M_copy(wchar_t *S1, const wchar_t *S2, size_t N); +int __thiscall std::wstring::_M_data(_DWORD *this, int a2); +const wchar_t *__fastcall std::wstring::_M_leak(const wchar_t **a1); +size_t __cdecl std::wstring::_M_move(wchar_t *S1, const wchar_t *S2, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t a5); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, size_t a4, wchar_t a5); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, _DWORD *a4, unsigned int a5, size_t a6); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5); +char *__thiscall std::wstring::reserve(void **this, char *a2); +void __fastcall std::wstring::pop_back(const wchar_t **a1); +wchar_t *__cdecl std::wstring::_M_assign(wchar_t *a1, size_t C, size_t N); +void __thiscall std::wstring::_M_mutate(const wchar_t **this, size_t a2, int a3, int a4); +_WORD *__thiscall std::wstring::push_back(void **this, __int16 a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +void __thiscall std::wstring::basic_string(_DWORD *this, int a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4); +void __fastcall std::wstring::basic_string(_DWORD *a1); +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *a2, wchar_t *a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +void __thiscall std::wstring::basic_string(_DWORD *this, int a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4); +void __fastcall std::wstring::basic_string(_DWORD *a1); +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *a2, wchar_t *a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +void __fastcall std::wstring::~wstring(volatile signed __int32 **a1); +void __fastcall std::wstring::~wstring(volatile signed __int32 **a1); +int __thiscall std::wstring::operator=(int *this, int *a2); +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *String); +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *a2, size_t a3); +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t a2); +const wchar_t *__thiscall std::wstring::operator[](const wchar_t **this, int a2); +void **__thiscall std::wstring::operator+=(void **this, wchar_t *String); +void **__thiscall std::wstring::operator+=(void **this, __int16 a2); +// int __userpurge std::iostream::swap@(_DWORD *a1@, std::iostream *this, std::iostream *a3); +int __thiscall std::iostream::iostream(_DWORD *this, int *a2); +BOOL __thiscall std::iostream::iostream(_DWORD *this, int a2); +BOOL __fastcall std::iostream::iostream(int a1); +int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3); +int __thiscall std::iostream::iostream(int *this, int *a2, int a3); +int __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this); +void __fastcall std::iostream::~iostream(_DWORD *a1); +void __fastcall std::iostream::~iostream(int a1); +void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this); +_DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); +// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5); +std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2); +std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3); +// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3); +int __fastcall std::istream::get(std::istream::sentry *a1); +int __fastcall std::istream::peek(std::istream::sentry *a1); +// std::istream::sentry *__userpurge std::istream::read@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); +// int __userpurge std::istream::swap@(_DWORD *a1@, std::istream *this, std::istream *a3); +int __fastcall std::istream::sync(std::istream::sentry *a1); +std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5); +std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4); +_DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this); +std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *a1); +// std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *a1@, std::istream *this, int a3); +// std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *a1@, std::istream *this, int a3, int a4); +std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1); +// int __userpurge std::istream::sentry::sentry@(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4); +// int __userpurge std::istream::sentry::sentry@(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4); +// std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); +// std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5); +// std::istream::sentry *__userpurge std::istream::putback@(std::istream::sentry *a1@, std::istream *this, char a3); +// int __userpurge std::istream::readsome@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); +int __thiscall std::istream::istream(_DWORD *this, int *a2); +BOOL __thiscall std::istream::istream(_DWORD *this, int a2); +BOOL __fastcall std::istream::istream(int a1); +int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::istream::istream(int *this, int *a2, int a3); +BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this); +void __fastcall std::istream::~istream(_DWORD *a1); +void __fastcall std::istream::~istream(_DWORD *a1); +void __thiscall std::istream::~istream(_DWORD *ecx0, std::istream *this); +_DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)); +char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)); +char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)); +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2); +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2); +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2); +// std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3); +// int __userpurge std::ostream::swap@(_DWORD *a1@, std::ostream *this, std::ostream *a3); +_DWORD *__fastcall std::ostream::flush(_DWORD *a1); +_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4); +_DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this); +// std::ostream::sentry *__userpurge std::ostream::write@(std::ostream::sentry *a1@, std::ostream *this, const char *a3, int a4); +// int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3); +// int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3); +void __fastcall std::ostream::sentry::~sentry(int a1); +void __fastcall std::ostream::sentry::~sentry(int a1); +// const char *__userpurge std::ostream::_M_write@(_DWORD *a1@, std::ostream *this, const char *a3, int a4); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3); +int __thiscall std::ostream::ostream(_DWORD *this, int *a2); +BOOL __thiscall std::ostream::ostream(_DWORD *this, int a2); +// int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3); +BOOL __fastcall std::ostream::ostream(int a1); +int __thiscall std::ostream::ostream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::ostream::ostream(int *this, int *a2, int a3); +int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3); +BOOL __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this); +void __fastcall std::ostream::~ostream(_DWORD *a1); +void __fastcall std::ostream::~ostream(_DWORD *a1); +void __thiscall std::ostream::~ostream(_DWORD *ecx0, std::ostream *this); +_DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)); +char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)); +char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)); +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2); +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2); +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2); +_DWORD __stdcall std::ostream::operator<<(_DWORD); // weak +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2); +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2); +char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +volatile signed __int32 *__fastcall std::string::_M_leak_hard(volatile signed __int32 **a1); +unsigned int *__cdecl std::string::_S_construct(unsigned int a1, char a2); +// unsigned int *__usercall std::string::_S_construct@(unsigned int a1@, char a2@
); +void *__cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, _BYTE *a2); +_DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2); +_DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2); +// _DWORD *__usercall std::string::_S_construct@(_BYTE *a1@, int a2@); +unsigned int *std::string::_S_empty_rep(); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size); +size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size); +unsigned int *__fastcall std::string::shrink_to_fit(unsigned int **a1); +// volatile signed __int32 **__userpurge std::string::_M_replace_aux@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, size_t Size, char a5, char a6); +// volatile signed __int32 **__userpurge std::string::_M_replace_safe@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, _BYTE *Src, size_t Size, unsigned int a6); +unsigned int *__cdecl std::string::_S_construct_aux_2(unsigned int a1, char a2); +// char *__userpurge std::string::at@(volatile signed __int32 **a1@, std::string *this, unsigned int a3); +int __fastcall std::string::end(volatile signed __int32 **a1); +void __thiscall std::string::_Rep::_M_destroy(void *this, int a2); +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void __fastcall std::string::_Rep::_M_dispose(volatile signed __int32 *a1); +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +int __fastcall std::string::_Rep::_M_refcopy(int a1); +int __fastcall std::string::_Rep::_M_refdata(int a1); +unsigned int *std::string::_Rep::_S_empty_rep(); +void __fastcall std::string::_Rep::_M_set_leaked(int a1); +void __fastcall std::string::_Rep::_M_set_sharable(int a1); +// std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@(unsigned int *a1@, std::string::_Rep *this, unsigned int a3); +unsigned int *__thiscall std::string::_Rep::_M_grab(int this, int a2, int a3); +unsigned int *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3); +_DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2); +char *__fastcall std::string::back(volatile signed __int32 **a1); +volatile signed __int32 **__thiscall std::string::rend(volatile signed __int32 **ecx0, volatile signed __int32 **this); +// int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3); +volatile signed __int32 *__fastcall std::string::begin(volatile signed __int32 **a1); +void __fastcall std::string::clear(void **a1); +char *__thiscall std::string::erase(volatile signed __int32 **this, int a2); +char *__thiscall std::string::erase(volatile signed __int32 **this, char *a2, char *a3); +// volatile signed __int32 **__userpurge std::string::erase@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, unsigned int a4); +volatile signed __int32 *__fastcall std::string::front(volatile signed __int32 **a1); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const char *a3); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, size_t Size, unsigned int a4); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const std::string *a3); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, char a3, char a4); +unsigned int *__thiscall std::string::append(unsigned int **this, size_t Size, char a3); +int __stdcall std::string::assign(std::string *); // idb +// volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, std::string *this, const char *a3); +// volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, std::string *this, size_t Size, unsigned int a4); +// unsigned int **__userpurge std::string::assign@(unsigned int **a1@, unsigned int **this, const std::string *a3); +// volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); +// volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, size_t this, char a3, char a4); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *a2, volatile signed __int32 *a3, size_t a4, unsigned int a5); +char *__thiscall std::string::insert(volatile signed __int32 **this, int a2, char a3); +volatile signed __int32 **__thiscall std::string::insert(volatile signed __int32 **this, int a2, size_t a3, char a4); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, char *Str, const char *a4); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, volatile signed __int32 *a3, size_t Size, unsigned int a5); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, volatile signed __int32 **a3, const std::string *a4); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, _DWORD *a3, const std::string *a4, unsigned int a5, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, size_t a3, char a4, char a5); +_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, volatile signed __int32 **this); +// void __userpurge std::string::resize(unsigned int **a1@, std::string *this, unsigned int a3); +// void __userpurge std::string::resize(unsigned int **a1@, size_t this, char a3, char a4); +size_t __cdecl std::string::_M_copy(void *this, const void *Src, size_t Size); +// std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3); +volatile signed __int32 *__fastcall std::string::_M_leak(volatile signed __int32 **a1); +size_t __cdecl std::string::_M_move(void *this, const void *Src, size_t Size); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +volatile signed __int32 **__thiscall std::string::replace(volatile signed __int32 **this, int a2, int a3, char *Str); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t a5, unsigned int a6); +volatile signed __int32 **__thiscall std::string::replace(volatile signed __int32 **this, int a2, int a3, volatile signed __int32 **a4); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t a5, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, size_t a4, char a5, char a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, char *Str, const char *a5); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, volatile signed __int32 **a4, const std::string *a5); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, unsigned int a6, unsigned int a7); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, size_t a4, char a5, char a6); +// unsigned int *__userpurge std::string::reserve@(unsigned int **a1@, std::string *this, unsigned int a3); +void __fastcall std::string::pop_back(volatile signed __int32 **a1); +char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size); +// void __userpurge std::string::_M_mutate(volatile signed __int32 **a1@, size_t this, unsigned int a3, unsigned int a4, unsigned int a5); +// unsigned int *__userpurge std::string::push_back@(unsigned int **a1@, std::string *this, char a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +void __thiscall std::string::string(_DWORD *this, int a2); +// unsigned int *__userpurge std::string::string@(unsigned int **a1@, unsigned int **this, const std::string *a3); +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); +// _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); +_DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4); +void __fastcall std::string::string(_DWORD *a1); +void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *a2, _BYTE *a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +void __thiscall std::string::string(_DWORD *this, int a2); +// unsigned int *__userpurge std::string::string@(unsigned int **a1@, unsigned int **this, const std::string *a3); +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); +// _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); +_DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4); +void __fastcall std::string::string(_DWORD *a1); +void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *a2, _BYTE *a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +void __fastcall std::string::~string(volatile signed __int32 **a1); +void __fastcall std::string::~string(volatile signed __int32 **a1); +int __stdcall std::string::operator=(std::string *); // idb +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *Str); +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *a2, size_t a3); +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, char a2); +char *__thiscall std::string::operator[](volatile signed __int32 **this, int a2); +unsigned int **__thiscall std::string::operator+=(unsigned int **this, std::string *Str); +unsigned int **__thiscall std::string::operator+=(unsigned int **this, char a2); +int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *a2, char *a3); +void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1); +void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1); +int __cdecl std::money_base::_S_construct_pattern(); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); +int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); +int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); +void __fastcall std::__timepunct::~__timepunct(void *a1); +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); +_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); +int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); +int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); +void __fastcall std::__timepunct::~__timepunct(void *a1); +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); +int __thiscall std::logic_error::logic_error(_DWORD *this, int a2); +// _DWORD *__userpurge std::logic_error::logic_error@(int a1@, std::logic_error *this, const char *a3); +_DWORD *__thiscall std::logic_error::logic_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::logic_error::logic_error@(int a1@, unsigned int **this, const std::logic_error *a3); +// unsigned int *__userpurge std::logic_error::logic_error@(int a1@, unsigned int **this, const std::string *a3); +void __fastcall std::logic_error::~logic_error(_DWORD *a1); +void __fastcall std::logic_error::~logic_error(_DWORD *a1); +int *__thiscall std::logic_error::operator=(int *this, int a2); +unsigned int **__thiscall std::logic_error::operator=(unsigned int **this, int a2); +// _DWORD *__userpurge std::range_error::range_error@(_DWORD *a1@, std::range_error *this, const char *a3); +_DWORD *__thiscall std::range_error::range_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::range_error::range_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::range_error::~range_error(_DWORD *a1); +void __fastcall std::range_error::~range_error(_DWORD *a1); +// int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); +// int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); +// int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); +void __cdecl std::_Destroy_aux::__destroy(void **a1, char **a2); +// int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3); +// int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3); +void __fastcall __spoils std::`anonymous namespace'::utf16_span(unsigned int a1, unsigned __int8 *a2, unsigned int a3, char a4); +// int __usercall std::`anonymous namespace'::read_utf16_bom@(int result@, _DWORD *a2@); +// int __usercall std::`anonymous namespace'::write_utf8_bom@(int *a1@); +// int __usercall std::`anonymous namespace'::write_utf16_bom@(int a1@, char a2@
); +// int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **a1@, unsigned int a2@); +// int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **a1@, unsigned int a2@); +// unsigned int __usercall std::`anonymous namespace'::read_utf16_code_point@(unsigned int result@, unsigned int a2@, char a3@); +// int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@); +// int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **a1@, unsigned int a2@); +// int __usercall std::`anonymous namespace'::write_utf16_code_point@(int a1@, unsigned int a2@, char a3@); +// int __usercall std::`anonymous namespace'::ucs2_in@(_DWORD *a1@, int *a2@, unsigned int a3@, char a4); +// int __usercall std::`anonymous namespace'::ucs4_in@(int *a1@, int *a2@, unsigned int a3@, char a4); +// int __usercall std::`anonymous namespace'::read_bom@(int a1@, _WORD *a2@); +// int __usercall std::`anonymous namespace'::read_bom@(int *a1@); +// int __usercall std::`anonymous namespace'::read_bom@(int *a1@); +// int __usercall std::`anonymous namespace'::ucs2_out@(unsigned __int16 **a1@, _DWORD *a2@, unsigned int a3@, char a4); +// int __usercall std::`anonymous namespace'::utf16_in@(int *a1@, _DWORD *a2@, unsigned int a3@, char a4, int a5); +// int __usercall std::`anonymous namespace'::ucs2_span@(unsigned int a1@, int a2@, unsigned int a3@, char a4); +void __fastcall __spoils std::`anonymous namespace'::ucs2_span(int a1, unsigned __int8 *a2, unsigned int a3, char a4); +// int __usercall std::`anonymous namespace'::utf16_out@(unsigned __int16 **a1@, int *a2@, unsigned int a3@, char a4, int a5); +// int __usercall std::`anonymous namespace'::utf16_out@(unsigned __int16 **a1@, _BYTE **a2@, unsigned int a3@, int a4); +char *__thiscall std::_Vector_base::_M_create_storage(_DWORD *this, unsigned int a2); +int __fastcall std::__basic_file::fd(int a1); +int __fastcall std::__basic_file::file(int a1); +_BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4); +FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3); +int __fastcall std::__basic_file::sync(FILE **a1); +int __fastcall std::__basic_file::close(int a1); +int __thiscall std::__basic_file::xsgetn(void *this, void *DstBuf, unsigned int MaxCharCount); +unsigned int __thiscall std::__basic_file::xsputn(void *this, char *a2, unsigned int a3); +__int64 __thiscall std::__basic_file::seekoff(void *this, __int64 Offset, int Origin); +_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3); +_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, int FileHandle, char a3); +unsigned int __thiscall std::__basic_file::xsputn_2(void *this, char *a2, unsigned int a3, char *a4, unsigned int a5); +int __fastcall std::__basic_file::showmanyc(int a1); +void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2); +int __fastcall std::__basic_file::~__basic_file(_DWORD); // weak +_DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2); +// _DWORD *__userpurge std::__cow_string::__cow_string@(_DWORD *a1@, std::__cow_string *this, const char *a3, unsigned int a4); +_DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, int a2); +// unsigned int *__userpurge std::__cow_string::__cow_string@(unsigned int **a1@, unsigned int **this, const std::__cow_string *a3); +void __fastcall std::__cow_string::__cow_string(_DWORD *a1); +void __fastcall std::__cow_string::~__cow_string(volatile signed __int32 **a1); +int *__thiscall std::__cow_string::operator=(int *this, std::string *a2); +unsigned int **__thiscall std::__cow_string::operator=(unsigned int **this, unsigned int **a2); +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__shared_ptr::operator=(_DWORD *this, _DWORD *a2); +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); +volatile signed __int32 **__thiscall std::__shared_ptr::operator=(volatile signed __int32 **this, volatile signed __int32 **a2); +_DWORD *__thiscall std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=(_DWORD *this, int *a2); +_DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2); +// unsigned int __userpurge std::__sso_string::__sso_string@(void **a1@, std::__sso_string *this, const char *a3, unsigned int a4); +_BYTE *__thiscall std::__sso_string::__sso_string(_DWORD *this, int a2); +// _BYTE *__userpurge std::__sso_string::__sso_string@(_DWORD *a1@, std::__sso_string *this, const std::__sso_string *a3); +// unsigned int __userpurge std::__sso_string::__sso_string@(void **a1@, std::__sso_string **this, const std::string *a3); +int __fastcall std::__sso_string::__sso_string(int a1); +void __fastcall std::__sso_string::~__sso_string(void **a1); +_DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int a2); +void *__thiscall std::__sso_string::operator=(void *this, int a2); +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1); +void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1); +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1); +void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1); +// _DWORD *__userpurge std::domain_error::domain_error@(_DWORD *a1@, std::domain_error *this, const char *a3); +_DWORD *__thiscall std::domain_error::domain_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::domain_error::domain_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::domain_error::~domain_error(_DWORD *a1); +void __fastcall std::domain_error::~domain_error(_DWORD *a1); +// _DWORD *__userpurge std::length_error::length_error@(_DWORD *a1@, std::length_error *this, const char *a3); +_DWORD *__thiscall std::length_error::length_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::length_error::length_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::length_error::~length_error(_DWORD *a1); +void __fastcall std::length_error::~length_error(_DWORD *a1); +// _DWORD *__userpurge std::out_of_range::out_of_range@(_DWORD *a1@, std::out_of_range *this, const char *a3); +_DWORD *__thiscall std::out_of_range::out_of_range(_DWORD *this, int a2); +// unsigned int *__userpurge std::out_of_range::out_of_range@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::out_of_range::~out_of_range(_DWORD *a1); +void __fastcall std::out_of_range::~out_of_range(_DWORD *a1); +void __fastcall std::system_error::~system_error(_DWORD *a1); +void __fastcall std::system_error::~system_error(_DWORD *a1); +void *__fastcall std::_Bvector_base>::_M_deallocate(int a1); +int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); +int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); +int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); +int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); +int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, std::string *a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, int a11); +int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11); +int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11); +int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, int a11); +int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9); +int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9); +int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9); +int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9); +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1); +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1); +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1); +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1); +void __cdecl std::__facet_shims::__messages_get(int a1, int a2, int a3, std::string *a4, int a5, int a6, _BYTE *a7, int a8); +void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, unsigned __int8 *a7, int a8); +void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, const wchar_t *a7, int a8); +void __cdecl std::__facet_shims::__messages_get(int a1, int a2, int a3, int a4, int a5, int a6, wchar_t *a7, int a8); +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5); +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5); +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5); +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5); +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, std::string *a4, int a5); +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5); +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5); +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, int a4, int a5); +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +// void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, const char *a3); +// void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4); +void __fastcall std::__ios_failure::~__ios_failure(int a1); +void __fastcall std::__ios_failure::~__ios_failure(int a1); +void __fastcall std::bad_exception::~bad_exception(void *a1); +void __cdecl std::bad_exception::~bad_exception(void *); // idb +unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int a2); +int __thiscall std::filebuf::_M_get_ext_pos(int this, int a2); +int __fastcall std::filebuf::_M_create_pback(int a1); +int __fastcall std::filebuf::_M_destroy_pback(int a1); +int __fastcall std::filebuf::_M_terminate_output(_DWORD *a1); +bool __thiscall std::filebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3); +void __fastcall std::filebuf::_M_destroy_internal_buffer(int a1); +void __fastcall std::filebuf::_M_allocate_internal_buffer(int a1); +char *__thiscall std::filebuf::open(char *this, char *a2, int a3); +char *__thiscall std::filebuf::open(char *this, int a2); +char *__thiscall std::filebuf::open(char *this, wchar_t *a2, int a3); +char *__thiscall std::filebuf::open(char *this, char *a2, int a3); +int __thiscall std::filebuf::swap(int this, int a2); +int __fastcall std::filebuf::sync(_DWORD *a1); +int __fastcall std::filebuf::close(int a1); +char __thiscall std::filebuf::imbue(int this, int a2); +int __thiscall std::filebuf::setbuf(int this, __int64 a2); +int __thiscall std::filebuf::xsgetn(_DWORD *this, char *a2, signed int a3); +int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, int a3); +_DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5); +_DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5); +_DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6); +int __thiscall std::filebuf::overflow(int this, int a2); +int __thiscall std::filebuf::pbackfail(char *this, int a2); +int __fastcall std::filebuf::showmanyc(_DWORD *a1); +int __fastcall std::filebuf::underflow(int a1); +int __thiscall std::filebuf::basic_filebuf(int this, int a2); +void *__fastcall std::filebuf::basic_filebuf(int a1); +int __thiscall std::filebuf::basic_filebuf(int this, int a2); +void *__fastcall std::filebuf::basic_filebuf(int a1); +void __fastcall std::filebuf::~filebuf(_DWORD **a1); +void __fastcall std::filebuf::~filebuf(int a1); +void __fastcall std::filebuf::~filebuf(int a1); +int __thiscall std::filebuf::operator=(int this, int a2); +unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int a2); +int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int a2); +int __fastcall std::wfilebuf::_M_create_pback(int a1); +int __fastcall std::wfilebuf::_M_destroy_pback(int a1); +int __fastcall std::wfilebuf::_M_terminate_output(_DWORD *a1); +bool __thiscall std::wfilebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3); +void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1); +int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1); +int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1); +char *__thiscall std::wfilebuf::open(int this, char *a2, int a3); +char *__thiscall std::wfilebuf::open(char *this, int a2); +char *__thiscall std::wfilebuf::open(int this, wchar_t *a2, int a3); +char *__thiscall std::wfilebuf::open(void *this, char *a2, int a3); +int __thiscall std::wfilebuf::swap(int this, int a2); +int __fastcall std::wfilebuf::sync(_DWORD *a1); +int __fastcall std::wfilebuf::close(int a1); +char __thiscall std::wfilebuf::imbue(int this, int a2); +int __thiscall std::wfilebuf::setbuf(int this, __int64 a2); +int __thiscall std::wfilebuf::xsgetn(_DWORD *this, wchar_t *a2, signed int a3); +int __thiscall std::wfilebuf::xsputn(int this, wchar_t *a2, int a3); +_DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5); +_DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5); +_DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6); +int __thiscall std::wfilebuf::overflow(int this, int a2); +int __thiscall std::wfilebuf::pbackfail(char *this, int a2); +int __fastcall std::wfilebuf::showmanyc(_DWORD *a1); +int __fastcall std::wfilebuf::underflow(int a1); +int __thiscall std::wfilebuf::basic_filebuf(int this, int a2); +void *__fastcall std::wfilebuf::basic_filebuf(int a1); +int __thiscall std::wfilebuf::basic_filebuf(int this, int a2); +void *__fastcall std::wfilebuf::basic_filebuf(int a1); +void __fastcall std::wfilebuf::~wfilebuf(_DWORD **a1); +void __fastcall std::wfilebuf::~wfilebuf(int a1); +void __fastcall std::wfilebuf::~wfilebuf(int a1); +int __thiscall std::wfilebuf::operator=(int this, int a2); +int __thiscall std::fstream::open(char *this, char *a2, int a3); +int __thiscall std::fstream::open(char *this, wchar_t *a2, int a3); +int __thiscall std::fstream::open(char *this, char **a2, int a3); +int __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::fstream::close(_DWORD *a1); +bool __fastcall std::fstream::is_open(int a1); +int __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2); +int __thiscall std::fstream::basic_fstream(char *this, char *a2, int a3); +int __thiscall std::fstream::basic_fstream(char *this, wchar_t *a2, int a3); +int __thiscall std::fstream::basic_fstream(char *this, char **a2, int a3); +BOOL __fastcall std::fstream::basic_fstream(int a1); +int __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3); +int __thiscall std::fstream::basic_fstream(char *this, int *a2, char *a3, int a4); +int __thiscall std::fstream::basic_fstream(char *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::fstream::basic_fstream(char *this, int *a2, char **a3, int a4); +BOOL __thiscall std::fstream::basic_fstream(int *this, int *a2); +void __fastcall std::fstream::~fstream(_DWORD *a1); +void __fastcall std::fstream::~fstream(int a1); +int __thiscall std::fstream::~fstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wfstream::open(int *this, char *a2, int a3); +int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3); +int __thiscall std::wfstream::open(int *this, char **a2, int a3); +int __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::wfstream::close(_DWORD *a1); +bool __fastcall std::wfstream::is_open(int a1); +int __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2); +int __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3); +int __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3); +int __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3); +BOOL __fastcall std::wfstream::basic_fstream(int a1); +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3); +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4); +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4); +BOOL __thiscall std::wfstream::basic_fstream(int *this, int *a2); +void __fastcall std::wfstream::~wfstream(_DWORD *a1); +void __fastcall std::wfstream::~wfstream(int a1); +int __thiscall std::wfstream::~wfstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2); +int __fastcall std::wistream::get(_DWORD *a1); +int __fastcall std::wistream::peek(_DWORD *a1); +_DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3); +int __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::wistream::sync(_DWORD *a1); +_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4); +_DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2); +int *__fastcall std::wistream::unget(int *a1); +_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2); +_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, wchar_t C); +_DWORD *__fastcall std::wistream::ignore(_DWORD *a1); +int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); +int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); +_DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3); +_DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3, wchar_t C); +int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2); +int __thiscall std::wistream::readsome(_DWORD *this, int a2, int a3); +int __thiscall std::wistream::basic_istream(_DWORD *this, int *a2); +BOOL __thiscall std::wistream::basic_istream(_DWORD *this, int a2); +BOOL __fastcall std::wistream::basic_istream(int a1); +int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3); +BOOL __thiscall std::wistream::basic_istream(int *this, int *a2); +void __fastcall std::wistream::~wistream(char *a1); +void __fastcall std::wistream::~wistream(_DWORD *a1); +int __thiscall std::wistream::~wistream(int *this, int *a2); +_DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)); +char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)); +char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)); +_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2); +int *__thiscall std::wistream::operator>>(int *this, _DWORD *a2); +int *__thiscall std::wistream::operator>>(int *this, _WORD *a2); +int *__thiscall std::wostream::put(int *this, unsigned __int16 a2); +int __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2); +_DWORD *__fastcall std::wostream::flush(_DWORD *a1); +_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4); +_DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2); +int *__thiscall std::wostream::write(int *this, int a2, int a3); +int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2); +int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2); +char __fastcall std::wostream::sentry::~sentry(int a1); +char __fastcall std::wostream::sentry::~sentry(int a1); +int __thiscall std::wostream::_M_write(_DWORD *this, int a2, int a3); +int *__thiscall std::wostream::_M_insert(int *this, int a2); +int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2); +int *__thiscall std::wostream::_M_insert(int *this, double a2); +int *__thiscall std::wostream::_M_insert(int *this, long double a2); +int *__thiscall std::wostream::_M_insert(int *this, int a2); +int *__thiscall std::wostream::_M_insert(int *this, int a2); +int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3); +int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3); +int __thiscall std::wostream::basic_ostream(_DWORD *this, int *a2); +BOOL __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); +int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); +BOOL __fastcall std::wostream::basic_ostream(int a1); +int __thiscall std::wostream::basic_ostream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3); +int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3); +BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2); +void __fastcall std::wostream::~wostream(char *a1); +void __fastcall std::wostream::~wostream(_DWORD *a1); +int __thiscall std::wostream::~wostream(int *this, int *a2); +_DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)); +char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)); +char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)); +int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2); +int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2); +int *__thiscall std::wostream::operator<<(int *this, float a2); +int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2); +int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2); +// unsigned int __userpurge std::random_device::_M_init_pretr1@(unsigned int *a1@, const void **this, const std::string *a3); +// FILE *__userpurge std::random_device::_M_init@(FILE **a1@, const void **this, const std::string *a3); +int __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2); +// _DWORD *__userpurge std::runtime_error::runtime_error@(int a1@, std::runtime_error *this, const char *a3); +_DWORD *__thiscall std::runtime_error::runtime_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::runtime_error::runtime_error@(int a1@, unsigned int **this, const std::runtime_error *a3); +// unsigned int *__userpurge std::runtime_error::runtime_error@(int a1@, unsigned int **this, const std::string *a3); +void __fastcall std::runtime_error::~runtime_error(_DWORD *a1); +void __fastcall std::runtime_error::~runtime_error(_DWORD *a1); +int *__thiscall std::runtime_error::operator=(int *this, int a2); +unsigned int **__thiscall std::runtime_error::operator=(unsigned int **this, int a2); +int __thiscall std::ifstream::open(char *this, char *a2, int a3); +int __thiscall std::ifstream::open(char *this, wchar_t *a2, int a3); +int __thiscall std::ifstream::open(char *this, char **a2, int a3); +int __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::ifstream::close(_DWORD *a1); +bool __fastcall std::ifstream::is_open(int a1); +int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2); +int __thiscall std::ifstream::basic_ifstream(char *this, char *a2, int a3); +int __thiscall std::ifstream::basic_ifstream(char *this, wchar_t *a2, int a3); +int __thiscall std::ifstream::basic_ifstream(char *this, char **a2, int a3); +BOOL __fastcall std::ifstream::basic_ifstream(int a1); +int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3); +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char *a3, int a4); +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char **a3, int a4); +BOOL __thiscall std::ifstream::basic_ifstream(int *this, int *a2); +void __fastcall std::ifstream::~ifstream(_DWORD *a1); +void __fastcall std::ifstream::~ifstream(int a1); +int __thiscall std::ifstream::~ifstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wifstream::open(int *this, char *a2, int a3); +int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3); +int __thiscall std::wifstream::open(int *this, char **a2, int a3); +int __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::wifstream::close(_DWORD *a1); +bool __fastcall std::wifstream::is_open(int a1); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3); +BOOL __fastcall std::wifstream::basic_ifstream(int a1); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3); +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4); +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4); +BOOL __thiscall std::wifstream::basic_ifstream(int *this, int *a2); +void __fastcall std::wifstream::~wifstream(_DWORD *a1); +void __fastcall std::wifstream::~wifstream(int a1); +int __thiscall std::wifstream::~wifstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2); +int __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2); +BOOL __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2); +BOOL __fastcall std::wiostream::basic_iostream(int a1); +int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3); +int __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3); +int __thiscall std::wiostream::basic_iostream(int *this, int *a2); +void __fastcall std::wiostream::~basic_iostream(char *a1); +void __fastcall std::wiostream::~basic_iostream(int a1); +int __thiscall std::wiostream::~basic_iostream(int *this, int *a2); +_DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::ofstream::open(char *this, char *a2, int a3); +int __thiscall std::ofstream::open(char *this, wchar_t *a2, int a3); +int __thiscall std::ofstream::open(char *this, char **a2, int a3); +int __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::ofstream::close(_DWORD *a1); +bool __fastcall std::ofstream::is_open(int a1); +int __thiscall std::ofstream::basic_ofstream(_DWORD *this, int *a2); +int __thiscall std::ofstream::basic_ofstream(char *this, char *a2, int a3); +int __thiscall std::ofstream::basic_ofstream(char *this, wchar_t *a2, int a3); +int __thiscall std::ofstream::basic_ofstream(char *this, char **a2, int a3); +BOOL __fastcall std::ofstream::basic_ofstream(int a1); +int __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char *a3, int a4); +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char **a3, int a4); +BOOL __thiscall std::ofstream::basic_ofstream(int *this, int *a2); +void __fastcall std::ofstream::~ofstream(_DWORD *a1); +void __fastcall std::ofstream::~ofstream(int a1); +int __thiscall std::ofstream::~ofstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wofstream::open(int *this, char *a2, int a3); +int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3); +int __thiscall std::wofstream::open(int *this, char **a2, int a3); +int __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::wofstream::close(_DWORD *a1); +bool __fastcall std::wofstream::is_open(int a1); +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, int *a2); +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3); +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3); +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3); +BOOL __fastcall std::wofstream::basic_ofstream(int a1); +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4); +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4); +BOOL __thiscall std::wofstream::basic_ofstream(int *this, int *a2); +void __fastcall std::wofstream::~wofstream(_DWORD *a1); +void __fastcall std::wofstream::~wofstream(int a1); +int __thiscall std::wofstream::~wofstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +// _DWORD *__userpurge std::overflow_error::overflow_error@(_DWORD *a1@, std::overflow_error *this, const char *a3); +_DWORD *__thiscall std::overflow_error::overflow_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::overflow_error::overflow_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::overflow_error::~overflow_error(_DWORD *a1); +void __fastcall std::overflow_error::~overflow_error(_DWORD *a1); +void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1); +void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1); +void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1, int a2); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +_DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); +int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2); +int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2); +int __thiscall std::streambuf::setg(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::streambuf::setp(_DWORD *this, int a2, int a3); +void __thiscall std::streambuf::swap(int this, int a2); +int std::streambuf::sync(); +int __thiscall std::streambuf::gbump(_DWORD *this, int a2); +int __stdcall std::streambuf::imbue(int); // weak +int __thiscall std::streambuf::pbump(_DWORD *this, int a2); +int __fastcall std::streambuf::sgetc(_DWORD *a1); +int __fastcall std::streambuf::sgetn(int a1); +int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8 a2); +int __fastcall std::streambuf::sputn(int a1); +int __fastcall std::streambuf::uflow(_DWORD *a1); +int __fastcall std::streambuf::sbumpc(_DWORD *a1); +int __fastcall std::streambuf::sbumpc(int a1); +void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3); +int __fastcall std::streambuf::snextc(_DWORD *a1); +int (*__fastcall std::streambuf::stossc(_DWORD *a1))(void); +int __thiscall std::streambuf::xsgetn(_DWORD *this, char *a2, int a3); +int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3); +int __fastcall std::streambuf::pubsync(int a1); +_DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); +int __fastcall std::streambuf::sungetc(_DWORD *a1); +int __fastcall std::streambuf::in_avail(_DWORD *a1); +int __stdcall std::streambuf::overflow(int a1); +volatile signed __int32 **__thiscall std::streambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); +int __stdcall std::streambuf::pbackfail(int a1); +int __thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3); +int std::streambuf::showmanyc(); +int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8 a2); +int std::streambuf::underflow(); +// volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); +int __fastcall std::streambuf::basic_streambuf(_DWORD *a1); +// volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); +int __fastcall std::streambuf::basic_streambuf(_DWORD *a1); +void __fastcall std::streambuf::~streambuf(char *a1); +void __fastcall std::streambuf::~streambuf(int a1); +void __fastcall std::streambuf::~streambuf(int a1); +volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int a2); +_DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); +int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2); +int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2); +int __thiscall std::wstreambuf::setg(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::wstreambuf::setp(_DWORD *this, int a2, int a3); +void __thiscall std::wstreambuf::swap(int this, int a2); +int std::wstreambuf::sync(); +int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2); +int __stdcall std::wstreambuf::imbue(int); // weak +int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2); +int __fastcall std::wstreambuf::sgetc(_DWORD *a1); +int __fastcall std::wstreambuf::sgetn(int a1); +int __thiscall std::wstreambuf::sputc(_DWORD *this, int a2); +int __fastcall std::wstreambuf::sputn(int a1); +int __fastcall std::wstreambuf::uflow(_DWORD *a1); +int __fastcall std::wstreambuf::sbumpc(_DWORD *a1); +int __fastcall std::wstreambuf::sbumpc(int a1); +void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3); +int __fastcall std::wstreambuf::snextc(_DWORD *a1); +int (*__fastcall std::wstreambuf::stossc(_DWORD *a1))(void); +int __thiscall std::wstreambuf::xsgetn(_DWORD *this, wchar_t *a2, int a3); +int __thiscall std::wstreambuf::xsputn(_DWORD *this, wchar_t *a2, int a3); +int __fastcall std::wstreambuf::pubsync(int a1); +_DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); +int __fastcall std::wstreambuf::sungetc(_DWORD *a1); +int __fastcall std::wstreambuf::in_avail(_DWORD *a1); +int __stdcall std::wstreambuf::overflow(int a1); +volatile signed __int32 **__thiscall std::wstreambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); +int __stdcall std::wstreambuf::pbackfail(int a1); +int __thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3); +int std::wstreambuf::showmanyc(); +int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2); +int std::wstreambuf::underflow(); +// volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); +int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); +// volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); +int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); +void __fastcall std::wstreambuf::~wstreambuf(char *a1); +void __fastcall std::wstreambuf::~wstreambuf(int a1); +void __fastcall std::wstreambuf::~wstreambuf(int a1); +volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int a2); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1); +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1); +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); +// _DWORD *__userpurge std::underflow_error::underflow_error@(_DWORD *a1@, std::underflow_error *this, const char *a3); +_DWORD *__thiscall std::underflow_error::underflow_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::underflow_error::underflow_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::underflow_error::~underflow_error(_DWORD *a1); +void __fastcall std::underflow_error::~underflow_error(_DWORD *a1); +int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1); +void __thiscall std::__numpunct_cache::_M_cache(int this, int a2); +int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); +int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); +void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1); +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); +void __thiscall std::__numpunct_cache::_M_cache(int this, int a2); +BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); +void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1); +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); +// _DWORD *__userpurge std::invalid_argument::invalid_argument@(_DWORD *a1@, std::invalid_argument *this, const char *a3); +_DWORD *__thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2); +// unsigned int *__userpurge std::invalid_argument::invalid_argument@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1); +void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1); +int *__fastcall std::_Rb_tree_iterator>>::operator++(int *a1); +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); +void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1); +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); +void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1); +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); +void __fastcall std::bad_function_call::~bad_function_call(_DWORD *a1); +void __cdecl std::bad_function_call::~bad_function_call(std::exception *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); +void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1); +void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this); // idb +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); +_DWORD *__cdecl std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>(int a1, int a2, _DWORD *a3); +_DWORD *__cdecl std::__uninitialized_copy::__uninit_copy(_DWORD *a1, _DWORD *a2, _DWORD *a3); +void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1); +void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1); +void __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_destroy(void *a1); +int __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_dispose(int a1); +char *__thiscall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_get_deleter(char *this, _DWORD *a2); +void __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace(void *a1); +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); +void __fastcall std::_V2::error_category::~error_category(void *a1); +void __cdecl std::_V2::error_category::~error_category(std::_V2::error_category *__hidden this); // idb +void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this); +void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this); +int __thiscall std::map::erase(_DWORD *this, int a2); +char *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::map,std::allocator>>>::operator[](_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::map,std::allocator>>>::operator[](_DWORD *this, int a2); +char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::map>::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::map>>::operator[](_DWORD *this, _DWORD *a2); +char *__thiscall std::map>>::operator[](_DWORD *this, int *a2); +char *__thiscall std::map::operator[](_DWORD *this, int *a2); +_DWORD *__thiscall std::set::insert(_DWORD *this, int a2); +int __thiscall std::pair::swap(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::pair::pair(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::pair::operator=(_DWORD *this, _DWORD *a2); +int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, _BYTE *a4, int a5, int a6); +int __cdecl std::__pad>::_S_pad(wchar_t *S1, wchar_t *S2, wchar_t *a3, wchar_t *a4, int a5, int a6); +void *std::ctype::classic_table(); +int __thiscall std::ctype::ctype(_DWORD *this, void *a2, char a3, int a4); +int __thiscall std::ctype::ctype(_DWORD *this, int a2, void *a3, char a4, int a5); +void __fastcall std::ctype::~ctype(void *a1); +void __cdecl std::ctype::~ctype(std::locale::facet *a1); +wctype_t __fastcall std::ctype::_M_initialize_ctype(int a1); +wctype_t __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3); +wctype_t __thiscall std::ctype::ctype(_DWORD *this, int a2); +void __fastcall std::ctype::~ctype(_DWORD *a1); +void __cdecl std::ctype::~ctype(std::locale::facet *a1); +int __thiscall std::deque>::_M_push_back_aux const&>(int this, _DWORD *a2); +int __fastcall std::deque>::back(_DWORD *a1); +int __fastcall std::deque>::pop_back(_DWORD *a1); +volatile signed __int32 *__thiscall std::deque>::push_back(_DWORD *this, _DWORD *a2); +int __thiscall std::deque>::_M_push_back_aux const&>(int this, _DWORD *a2); +int __fastcall std::deque>::back(_DWORD *a1); +int __fastcall std::deque>::pop_back(_DWORD *a1); +volatile signed __int32 *__thiscall std::deque>::push_back(_DWORD *this, _DWORD *a2); +int __thiscall std::deque>::_M_push_back_aux const&>(int this, _DWORD *a2); +int __fastcall std::deque>::pop_back(_DWORD *a1); +volatile signed __int32 *__thiscall std::deque>::push_back(_DWORD *this, _DWORD *a2); +_DWORD __stdcall std::deque::_M_push_back_aux(_DWORD); // weak +void __fastcall std::deque::pop_back(_DWORD *a1); +int std::locale::_S_initialize(); +void std::locale::_S_initialize_once(void); // idb +std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this); +// int __userpurge std::locale::_Impl::_M_init_extra@(int a1@, std::locale::_Impl *this, std::locale::facet **a3); +// int __userpurge std::locale::_Impl::_M_init_extra@(int a1@, std::locale::_Impl *this, int *a3, int **a4, const char *a5, const char *a6); +// void __userpurge std::locale::_Impl::_M_install_cache(int a1@, std::locale::_Impl *this, const std::locale::facet *a3, unsigned int a4); +// const std::locale::id *__userpurge std::locale::_Impl::_M_install_facet@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::id *a3, const std::locale::facet *a4); +// const std::locale::id *__userpurge std::locale::_Impl::_M_replace_facet@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, const std::locale::id *a4); +// const std::locale::_Impl *__userpurge std::locale::_Impl::_M_replace_category@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl **a3, const std::locale::id *const *a4); +// void *__userpurge std::locale::_Impl::_Impl@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, unsigned int a4); +// int __userpurge std::locale::_Impl::_Impl@(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3); +void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1); +int *const *std::locale::facet::_S_get_c_name(); +int std::locale::facet::_S_get_c_locale(); +int __cdecl std::locale::facet::_S_clone_c_locale(); +int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **a2); +void std::locale::facet::_S_initialize_once(void); // idb +std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this); +int __cdecl std::locale::facet::_S_lc_ctype_c_locale(); +void __fastcall std::locale::facet::~facet(void *a1); +void __cdecl std::locale::facet::~facet(std::locale::facet *__hidden this); // idb +std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2); +_DWORD *std::locale::classic(); +// std::locale *__userpurge std::locale::locale@(_DWORD *a1@, std::locale *this, std::locale::_Impl *a3); +// volatile signed __int32 *__userpurge std::locale::locale@(volatile signed __int32 **a1@, volatile signed __int32 **this, const std::locale *a3); +int __fastcall std::locale::locale(_DWORD *a1); +void __fastcall std::locale::~locale(_DWORD **a1); +volatile signed __int32 **__thiscall std::locale::operator=(volatile signed __int32 **this, volatile signed __int32 **a2); +char *__thiscall std::vector>::_M_realloc_insert const&>(char **this, char *a2, _DWORD *a3); +_DWORD *__thiscall std::vector>::_M_erase(_DWORD *this, _DWORD *a2); +char *__thiscall std::vector>::push_back(char **this, _DWORD *a2); +char *__thiscall std::vector>::_M_realloc_insert const&>(char **this, char *a2, _DWORD *a3); +char *__thiscall std::vector>::push_back(char **this, _DWORD *a2); +char *__thiscall std::vector>::_M_realloc_insert const&>(char **this, char *a2, _DWORD *a3); +char *__thiscall std::vector>::push_back(int this, _DWORD *a2); +volatile signed __int32 *__thiscall std::vector>::vector(volatile signed __int32 **this, volatile signed __int32 **a2); +int __thiscall std::vector::_M_realloc_insert(_DWORD *this, char *a2, _DWORD *a3); +_BYTE *__thiscall std::vector::push_back(_DWORD *this, _DWORD *a2); +void *__thiscall std::vector::_M_realloc_insert(void **this, int a2, WXML::DOMLib::Token *a3); +_BYTE *__thiscall std::vector::push_back(int this, WXML::DOMLib::Token *a2); +int __thiscall std::vector::_M_realloc_insert(void ***this, char *a2, volatile signed __int32 **a3); +volatile signed __int32 *__thiscall std::vector::push_back(int this, volatile signed __int32 **a2); +_DWORD *__thiscall std::vector::_M_realloc_insert(char **this, char *a2, WXML::EXPRLib::Token *a3); +unsigned int __thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3); +int __thiscall std::vector::at(_DWORD *this, unsigned int a2); +int __thiscall std::vector::push_back(char **this, _DWORD *a2); +void __thiscall std::vector::emplace_back(void ***this, _DWORD *a2); +_DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); // weak +char *__thiscall std::vector::_M_realloc_insert(_DWORD *this, char *a2, _DWORD *a3); +_BYTE *__thiscall std::vector::push_back(_DWORD *this, int a2); +int __thiscall std::vector::operator=(int this, int *a2); +char *__thiscall std::vector::_M_realloc_insert(void **this, _BYTE *a2, _DWORD *a3); +char *__thiscall std::vector::push_back(int this, _DWORD *a2); +char *__thiscall std::vector::emplace_back(void **this, _DWORD *a2); +int __thiscall std::vector::at(_DWORD *this, unsigned int a2); +char *__thiscall std::vector::push_back(void **this, _DWORD *a2); +char *__thiscall std::vector>>::_M_realloc_insert> const&>(void **this, _BYTE *a2, _DWORD *a3); +int __thiscall std::vector>>::at(_DWORD *this, unsigned int a2); +char *__thiscall std::vector>>::push_back(int this, _DWORD *a2); +char **__thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); +char *__thiscall std::vector>::emplace_back>(_DWORD *this, _DWORD *a2); +char *__thiscall std::vector>::_M_realloc_insert>(_DWORD *this, char *a2, _DWORD *a3); +int __thiscall std::vector>::emplace_back>(int this, _DWORD *a2); +int __thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); +int __thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); +char *__thiscall std::vector::_M_realloc_insert(void **this, _BYTE *a2, _DWORD *a3); +char *__thiscall std::vector::push_back(int this, _DWORD *a2); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +void __thiscall std::string::_M_destroy(void **this, int a2); +void __fastcall std::string::_M_dispose(void **a1); +unsigned int *__thiscall std::string::_M_replace(unsigned int *this, size_t a2, size_t a3, char *Src, size_t a5); +int __cdecl std::string::_S_compare(int a1, int a2); +int __thiscall std::string::_M_capacity(_DWORD *this, int a2); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +_BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t a2, char a3); +_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int a3, int a4); +_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int a3, int a4); +unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *a2, size_t Size, int a4); +_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4); +int __fastcall std::string::_M_local_data(int a1); +int __thiscall std::string::_M_set_length(int *this, int a2); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +void __fastcall std::string::shrink_to_fit(_DWORD *a1); +_DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t a2, int a3, size_t a4, char a5); +int __fastcall std::string::_M_get_allocator(int a1); +_BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t a2, char a3); +unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2); +int __fastcall std::string::end(_DWORD *a1); +int __fastcall std::string::back(_DWORD *a1); +_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2); +_BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::string::begin(int a1); +_BYTE *__fastcall std::string::clear(int a1); +int __thiscall std::string::erase(int *this, int a2); +int __thiscall std::string::erase(int *this, _BYTE *a2, int a3); +int __thiscall std::string::erase(int *this, int a2); +int __thiscall std::string::erase(int *this, _BYTE *a2, int a3); +int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3); +int __fastcall std::string::front(int a1); +_DWORD *__thiscall std::string::append(_DWORD *this, char *Str); +_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3); +_DWORD *__thiscall std::string::append(_DWORD *this, int a2); +_DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, size_t a4); +_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3); +_DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3); +_DWORD *__thiscall std::string::assign(_DWORD *this, int a2); +unsigned int *__thiscall std::string::assign(unsigned int *this, char *Str); +unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3); +void *__thiscall std::string::assign(void *this, int a2); +unsigned int *__thiscall std::string::assign(unsigned int *this, _DWORD *a2, unsigned int a3, size_t a4); +unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3); +_DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3); +size_t __thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4); +size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3); +size_t __thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4); +unsigned int *__thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4); +size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3); +_DWORD *__thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4); +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *Str); +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *a3, size_t a4); +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, int a3); +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, _DWORD *a3, char *a4, size_t a5); +_DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int a2, size_t a3, char a4); +unsigned int *__thiscall std::string::insert<__gnu_cxx::__normal_iterator>(unsigned int *this, int a2, char *a3, int a4); +_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2); +_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2, char a3); +int __thiscall std::string::_M_data(_DWORD *this, int a2); +size_t __cdecl std::string::_S_copy(void *a1, const void *Src, size_t Size); +size_t __cdecl std::string::_S_move(void *a1, const void *Src, size_t Size); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *Str); +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, size_t a3, int a4); +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +_DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5); +void __thiscall std::string::reserve(_DWORD *this, unsigned int a2); +int __thiscall std::string::_M_erase(int *this, int a2, int a3); +int __fastcall std::string::pop_back(int *a1); +_DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size); +void __thiscall std::string::_M_assign(int this, int a2); +void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2); +int __thiscall std::string::_M_length(_DWORD *this, int a2); +size_t __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5); +void *__cdecl std::string::_S_assign(_BYTE *a1, void *Val, size_t Size); +_DWORD *__thiscall std::string::push_back(_DWORD *this, char a2); +_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); +unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); +char *__thiscall std::string::basic_string(_DWORD *this, int a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4); +int __fastcall std::string::basic_string(int a1); +_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _BYTE *a2, int a3, int a4); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, size_t a3, int a4); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); +_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); +unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); +char *__thiscall std::string::basic_string(_DWORD *this, int a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4); +int __fastcall std::string::basic_string(int a1); +_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _BYTE *a2, int a3, int a4); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, size_t a3, int a4); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); +void __fastcall std::string::~string(void **a1); +void __fastcall std::string::~string(void **a1); +_DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *a2); +unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); +void *__thiscall std::string::operator=(void *this, int a2); +unsigned int *__thiscall std::string::operator=(unsigned int *this, char *a2, size_t a3); +_DWORD *__thiscall std::string::operator=(_DWORD *this, char a2); +int __thiscall std::string::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str); +_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2); +_DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *a2, size_t a3); +_DWORD *__thiscall std::string::operator+=(_DWORD *this, char a2); +void __thiscall std::wstring::_M_destroy(void **this, int a2); +void __fastcall std::wstring::_M_dispose(void **a1); +int __thiscall std::wstring::_M_replace(int this, size_t a2, size_t a3, wchar_t *a4, size_t a5); +int __cdecl std::wstring::_S_compare(int a1, int a2); +int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, size_t a2, wchar_t a3); +wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *S2, int a3, int a4); +wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *S2, int a3, int a4); +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4); +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4); +int __fastcall std::wstring::_M_local_data(int a1); +int __thiscall std::wstring::_M_set_length(int *this, int a2); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +void __fastcall std::wstring::shrink_to_fit(_DWORD *a1); +int __thiscall std::wstring::_M_replace_aux(int this, size_t a2, int a3, size_t a4, wchar_t a5); +int __fastcall std::wstring::_M_get_allocator(int a1); +wchar_t *__thiscall std::wstring::_M_construct_aux_2(wchar_t **this, size_t a2, wchar_t a3); +int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); +int __fastcall std::wstring::end(_DWORD *a1); +int __fastcall std::wstring::back(_DWORD *a1); +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); +void __thiscall std::wstring::swap(wchar_t **this, int a2); +int __fastcall std::wstring::begin(int a1); +_WORD *__fastcall std::wstring::clear(int a1); +int __thiscall std::wstring::erase(int *this, int a2); +_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3); +int __thiscall std::wstring::erase(int *this, int a2); +_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3); +int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3); +int __fastcall std::wstring::front(int a1); +int __thiscall std::wstring::append(_DWORD *this, wchar_t *String); +int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3); +int __thiscall std::wstring::append(void *this, int a2); +int __thiscall std::wstring::append(void *this, _DWORD *a2, unsigned int a3, size_t a4); +int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3); +int __thiscall std::wstring::append(size_t *this, size_t a2, __int16 a3); +wchar_t **__thiscall std::wstring::assign(wchar_t **this, int a2); +int __thiscall std::wstring::assign(size_t *this, wchar_t *String); +int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3); +void *__thiscall std::wstring::assign(void *this, int a2); +int __thiscall std::wstring::assign(size_t *this, _DWORD *a2, unsigned int a3, size_t a4); +int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3); +int __thiscall std::wstring::assign(int *this, size_t a2, __int16 a3); +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, int a4); +int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4); +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3); +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, size_t a4); +int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4); +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *String); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *a3, size_t a4); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, int a3); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, _DWORD *a3, unsigned int a4, size_t a5); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, size_t a3, __int16 a4); +int __thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>(_DWORD *this, int a2, wchar_t *a3, int a4); +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); +int __thiscall std::wstring::resize(int *this, unsigned int a2); +int __thiscall std::wstring::resize(int *this, unsigned int a2, wchar_t a3); +int __thiscall std::wstring::_M_data(_DWORD *this, int a2); +size_t __cdecl std::wstring::_S_copy(wchar_t *S1, const wchar_t *S2, size_t N); +size_t __cdecl std::wstring::_S_move(wchar_t *S1, const wchar_t *S2, size_t N); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, int a4); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5); +void __thiscall std::wstring::reserve(int this, unsigned int a2); +int __thiscall std::wstring::_M_erase(int *this, int a2, int a3); +int __fastcall std::wstring::pop_back(int *a1); +int __thiscall std::wstring::_M_append(int this, wchar_t *S2, size_t N); +void __thiscall std::wstring::_M_assign(int this, int a2); +void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2); +int __thiscall std::wstring::_M_length(_DWORD *this, int a2); +const wchar_t *__thiscall std::wstring::_M_mutate(const wchar_t **this, size_t N, int a3, wchar_t *a4, size_t a5); +wchar_t *__cdecl std::wstring::_S_assign(wchar_t *a1, size_t C, size_t N); +const wchar_t *__thiscall std::wstring::push_back(int this, wchar_t a2); +int __thiscall std::wstring::basic_string(wchar_t *this, int a2); +_WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +int __thiscall std::wstring::basic_string(_DWORD *this, int a2); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4); +int __fastcall std::wstring::basic_string(int a1); +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +int __thiscall std::wstring::basic_string(wchar_t *this, int a2); +_WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +int __thiscall std::wstring::basic_string(_DWORD *this, int a2); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4); +int __fastcall std::wstring::basic_string(int a1); +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +void __fastcall std::wstring::~wstring(void **a1); +void __fastcall std::wstring::~wstring(void **a1); +wchar_t **__thiscall std::wstring::operator=(wchar_t **this, int a2); +int __thiscall std::wstring::operator=(size_t *this, wchar_t *String); +void *__thiscall std::wstring::operator=(void *this, int a2); +size_t *__thiscall std::wstring::operator=(size_t *this, wchar_t *a2, size_t a3); +int *__thiscall std::wstring::operator=(int *this, wchar_t a2); +int __thiscall std::wstring::operator[](_DWORD *this, int a2); +int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String); +int __thiscall std::wstring::operator+=(void *this, int a2); +int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *a2, size_t a3); +_DWORD *__thiscall std::wstring::operator+=(char *this, __int16 a2); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); +unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); +int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); +int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); +unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1); +int __thiscall std::stringbuf::_M_stringbuf_init(int this, int a2); +int __thiscall std::stringbuf::str(int this, int a2); +int __thiscall std::stringbuf::swap(_DWORD *this, int a2); +_DWORD *__thiscall std::stringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3); +int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); +unsigned int *__thiscall std::stringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5); +_DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6); +int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4); +int __thiscall std::stringbuf::overflow(int this, int a2); +int __thiscall std::stringbuf::pbackfail(int this, int a2); +int __fastcall std::stringbuf::showmanyc(int a1); +int __fastcall std::stringbuf::underflow(int a1); +int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3); +int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3); +char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2); +int __fastcall std::stringbuf::basic_stringbuf(int a1); +int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3); +int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3); +char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2); +int __fastcall std::stringbuf::basic_stringbuf(int a1); +void __fastcall std::stringbuf::~stringbuf(_DWORD *a1); +void __fastcall std::stringbuf::~stringbuf(int a1); +int __thiscall std::stringbuf::operator=(int this, int a2); +unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); +unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); +int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); +int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); +unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1); +int __thiscall std::wstringbuf::_M_stringbuf_init(int this, int a2); +int __thiscall std::wstringbuf::str(int this, int a2); +int __thiscall std::wstringbuf::swap(_DWORD *this, int a2); +_DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3); +int __thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); +unsigned int *__thiscall std::wstringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5); +_DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6); +int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4); +int __thiscall std::wstringbuf::overflow(int this, int a2); +int __thiscall std::wstringbuf::pbackfail(int this, int a2); +int __fastcall std::wstringbuf::showmanyc(int a1); +int __fastcall std::wstringbuf::underflow(int a1); +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2); +int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3); +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3); +int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2); +int __fastcall std::wstringbuf::basic_stringbuf(int a1); +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2); +int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3); +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3); +int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2); +int __fastcall std::wstringbuf::basic_stringbuf(int a1); +void __fastcall std::wstringbuf::~wstringbuf(_DWORD *a1); +void __fastcall std::wstringbuf::~wstringbuf(int a1); +int __thiscall std::wstringbuf::operator=(int this, int a2); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); +int __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, _DWORD *a2); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int a2, int a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); +BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); +int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); +char *__thiscall std::basic_stringstream,std::allocator>::operator=(char *this, int a2); +int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); +int __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int a2, int a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); +BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); +int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2, _DWORD *a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); +char *__thiscall std::basic_stringstream,std::allocator>::operator=(char *this, int a2); +int __thiscall std::istringstream::str(int this, int a2); +int __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2); +BOOL __thiscall std::istringstream::basic_istringstream(char *this, int a2, int a3); +BOOL __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2); +BOOL __fastcall std::istringstream::basic_istringstream(int a1); +int __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::istringstream::basic_istringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3); +BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2); +void __fastcall std::istringstream::~istringstream(_DWORD *a1); +void __fastcall std::istringstream::~istringstream(int a1); +int __thiscall std::istringstream::~istringstream(int *this, int *a2); +char *__thiscall std::istringstream::operator=(char *this, int a2); +int __thiscall std::wistringstream::str(int this, int a2); +int __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::wistringstream::basic_istringstream(char *this, int *a2); +BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int a2, int a3); +BOOL __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2); +BOOL __fastcall std::wistringstream::basic_istringstream(int a1); +int __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3); +BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3); +BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2); +void __fastcall std::wistringstream::~wistringstream(_DWORD *a1); +void __fastcall std::wistringstream::~wistringstream(int a1); +int __thiscall std::wistringstream::~wistringstream(int *this, int *a2); +char *__thiscall std::wistringstream::operator=(char *this, int a2); +int __thiscall std::ostringstream::str(int this, int a2); +int __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2); +BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int a2, int a3); +BOOL __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2); +BOOL __fastcall std::ostringstream::basic_ostringstream(int a1); +int __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3); +BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2); +void __fastcall std::ostringstream::~ostringstream(_DWORD *a1); +void __fastcall std::ostringstream::~ostringstream(int a1); +int __thiscall std::ostringstream::~ostringstream(int *this, int *a2); +volatile signed __int32 **__thiscall std::ostringstream::operator=(volatile signed __int32 **this, int a2); +int __thiscall std::wostringstream::str(int this, int a2); +int __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::wostringstream::basic_ostringstream(char *this, int *a2); +BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int a2, int a3); +BOOL __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2); +BOOL __fastcall std::wostringstream::basic_ostringstream(int a1); +int __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3); +BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3); +BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2); +void __fastcall std::wostringstream::~wostringstream(_DWORD *a1); +void __fastcall std::wostringstream::~wostringstream(int a1); +int __thiscall std::wostringstream::~wostringstream(int *this, int *a2); +char *__thiscall std::wostringstream::operator=(char *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +void __fastcall std::collate::~collate(_DWORD *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +void __fastcall std::collate::~collate(_DWORD *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +void __fastcall std::messages::~messages(_DWORD *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +void __fastcall std::messages::~messages(_DWORD *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); +void __fastcall std::numpunct::~numpunct(void *a1); +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); +int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); +void __fastcall std::numpunct::~numpunct(void *a1); +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +void __fastcall std::time_get>::~time_get(_DWORD *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +void __fastcall std::time_get>::~time_get(_DWORD *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +void __fastcall std::money_get>::~money_get(_DWORD *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +void __fastcall std::money_get>::~money_get(_DWORD *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +void __fastcall std::money_put>::~money_put(_DWORD *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +void __fastcall std::money_put>::~money_put(_DWORD *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void **__cdecl std::to_string(void **this, unsigned int a2); +void __fastcall std::codecvt::~codecvt(_DWORD *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +void __fastcall std::codecvt::~codecvt(_DWORD *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +void __fastcall std::codecvt::~codecvt(_DWORD *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +void __fastcall std::codecvt::~codecvt(_DWORD *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); +int __thiscall std::codecvt::codecvt(_DWORD *this, int a2); +void __fastcall std::codecvt::~codecvt(void *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); +int __thiscall std::codecvt::codecvt(_DWORD *this, int a2); +void __fastcall std::codecvt::~codecvt(void *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +void __fastcall std::collate::~collate(_DWORD *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +void __fastcall std::collate::~collate(_DWORD *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); +void __fastcall std::num_get>::~num_get(_DWORD *a1); +void __cdecl std::num_get>::~num_get(std::locale::facet *a1); +void __cdecl std::num_get>::~num_get(std::locale::facet *a1); +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); +void __fastcall std::num_get>::~num_get(_DWORD *a1); +void __cdecl std::num_get>::~num_get(std::locale::facet *a1); +void __cdecl std::num_get>::~num_get(std::locale::facet *a1); +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); +void __fastcall std::num_put>::~num_put(_DWORD *a1); +void __cdecl std::num_put>::~num_put(std::locale::facet *a1); +void __cdecl std::num_put>::~num_put(std::locale::facet *a1); +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); +void __fastcall std::num_put>::~num_put(_DWORD *a1); +void __cdecl std::num_put>::~num_put(std::locale::facet *a1); +void __cdecl std::num_put>::~num_put(std::locale::facet *a1); +int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree,std::less,std::allocator>::_M_erase(void **a1); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void *a1); +void __stdcall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(void *a1); +void **__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>(_DWORD *this, int a2); +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::equal_range(_DWORD *this, int a2); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>(_DWORD *this, char **a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); +int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int a1); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void *a1); +_DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); +int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(void *a1); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void *a1); +_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(int *a1, int a2, int a3); +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void *a1); +int *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree(_DWORD *this, int a2); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); +int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(int a1, int a2, int a3); +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); +void **__thiscall std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_emplace_unique,std::string>>(_DWORD *this, _DWORD *a2); +void __stdcall std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos(_DWORD *this, _DWORD *a2); +int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int *a3); +void __stdcall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, _DWORD *a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, unsigned int *a3); +int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(int a1, int a2, int a3); +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique(_DWORD *this, _DWORD *a2); +_DWORD *__stdcall std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>(int *a1, int a2, int a3); +void __stdcall std::_Rb_tree,std::less,std::allocator>::_M_erase(void **a1); +void __fastcall std::bad_cast::~bad_cast(_DWORD *a1); +void __cdecl std::bad_cast::~bad_cast(std::exception *a1); +// int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, int this, char a3, bool a4); +int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this); +int __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2); +_DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3); +void __fastcall std::ios_base::_M_dispose_callbacks(int a1); +int std::ios_base::Init::Init(); +void __cdecl std::ios_base::Init::~Init(); +volatile signed __int32 **__thiscall std::ios_base::imbue(volatile signed __int32 **ecx0, volatile signed __int32 **this, volatile signed __int32 **a3); +int std::ios_base::xalloc(); +void __fastcall std::ios_base::_M_init(int a1); +// volatile signed __int32 **__userpurge std::ios_base::_M_move@(int a1@, std::ios_base *this, std::ios_base *a3); +// void __userpurge std::ios_base::_M_swap(int a1@, std::ios_base *this, std::ios_base *a3); +int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *Str, int *a3); +void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2); +int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3); +void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1); +void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1); +// unsigned int *__userpurge std::ios_base::failure::failure@(int a1@, unsigned int **this, const std::string *a3); +void __fastcall std::ios_base::failure::~failure(_DWORD *a1); +void __fastcall std::ios_base::failure::~failure(_DWORD *a1); +int __fastcall std::ios_base::ios_base(_DWORD *a1); +void __fastcall std::ios_base::~ios_base(void *a1); +void __fastcall std::ios_base::~ios_base(int a1); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +void __fastcall std::messages::~messages(_DWORD *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +void __fastcall std::messages::~messages(_DWORD *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); +void __fastcall std::numpunct::~numpunct(void *a1); +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); +int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); +void __fastcall std::numpunct::~numpunct(void *a1); +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +void __fastcall std::time_get>::~time_get(_DWORD *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +void __fastcall std::time_get>::~time_get(_DWORD *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); +void __fastcall std::time_put>::~time_put(_DWORD *a1); +void __cdecl std::time_put>::~time_put(std::locale::facet *a1); +void __cdecl std::time_put>::~time_put(std::locale::facet *a1); +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); +void __fastcall std::time_put>::~time_put(_DWORD *a1); +void __cdecl std::time_put>::~time_put(std::locale::facet *a1); +void __cdecl std::time_put>::~time_put(std::locale::facet *a1); +void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1); +void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1); +int __thiscall std::ios::exceptions(_DWORD *this, int a2); +int __thiscall std::ios::_M_setstate(_DWORD *this, int a2); +void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int a2); +int __thiscall std::ios::tie(_DWORD *this, int a2); +int __thiscall std::ios::fill(int this, char a2); +BOOL __thiscall std::ios::init(int this, int a2); +int __thiscall std::ios::move(int this, std::ios_base *a2); +int __thiscall std::ios::move(int this, std::ios_base *a2); +int __thiscall std::ios::swap(int this, std::ios_base *a2); +int __thiscall std::ios::clear(_DWORD *this, int a2); +volatile signed __int32 **__thiscall std::ios::imbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); +int __thiscall std::ios::rdbuf(_DWORD *this, int a2); +int __thiscall std::ios::copyfmt(int this, _DWORD *a2); +int __thiscall std::ios::setstate(_DWORD *this, int a2); +int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2); +BOOL __thiscall std::ios::basic_ios(int this, int a2); +int __fastcall std::ios::basic_ios(int a1); +BOOL __thiscall std::ios::basic_ios(int this, int a2); +int __fastcall std::ios::basic_ios(int a1); +void __fastcall std::ios::~ios(_DWORD *a1); +void __fastcall std::ios::~ios(int a1); +void __fastcall std::ios::~ios(int a1); +int __thiscall std::wios::exceptions(_DWORD *this, int a2); +int __thiscall std::wios::_M_setstate(_DWORD *this, int a2); +void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int a2); +int __thiscall std::wios::tie(_DWORD *this, int a2); +int __thiscall std::wios::fill(int this, __int16 a2); +BOOL __thiscall std::wios::init(int this, int a2); +int __thiscall std::wios::move(int this, std::ios_base *a2); +int __thiscall std::wios::move(int this, std::ios_base *a2); +int __thiscall std::wios::swap(int this, std::ios_base *a2); +int __thiscall std::wios::clear(_DWORD *this, int a2); +volatile signed __int32 **__thiscall std::wios::imbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); +int __thiscall std::wios::rdbuf(_DWORD *this, int a2); +int __thiscall std::wios::copyfmt(int this, _DWORD *a2); +int __thiscall std::wios::setstate(_DWORD *this, int a2); +int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2); +BOOL __thiscall std::wios::basic_ios(int this, int a2); +int __fastcall std::wios::basic_ios(int a1); +BOOL __thiscall std::wios::basic_ios(int this, int a2); +int __fastcall std::wios::basic_ios(int a1); +void __fastcall std::wios::~wios(_DWORD *a1); +void __fastcall std::wios::~wios(int a1); +void __fastcall std::wios::~wios(int a1); +void __fastcall std::exception::~exception(void *a1); +void __cdecl std::exception::~exception(std::exception *__hidden this); // idb +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +void __fastcall std::money_get>::~money_get(_DWORD *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +void __fastcall std::money_get>::~money_get(_DWORD *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +void __fastcall std::money_put>::~money_put(_DWORD *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +void __fastcall std::money_put>::~money_put(_DWORD *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __fastcall std::type_info::~type_info(void *a1); +void __cdecl std::type_info::~type_info(std::type_info *__hidden this); // idb +void __cdecl std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(_DWORD *a1, int a2, _DWORD *a3, unsigned __int8 (__cdecl **a4)(int, int)); +void __noreturn std::unexpected(void); // idb +void __cdecl std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(int a1, int a2, unsigned __int8 (__cdecl **a3)(int, int)); +void __cdecl std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(int a1, int a2, int a3, _DWORD *a4, unsigned __int8 (__cdecl *a5)(int, int)); +int __cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5); +int __cdecl std::__int_to_char(_BYTE *a1, UDItype n, int a3, __int16 a4, char a5); +int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, int a3, __int16 a4, char a5); +int __cdecl std::__int_to_char(_WORD *a1, UDItype n, int a3, __int16 a4, char a5); +void (*std::get_terminate(void))(void); +__int32 __cdecl std::set_terminate(void (*a1)(void)); +_BYTE *__cdecl std::__add_grouping(_BYTE *a1, char a2, char *a3, int a4, _BYTE *a5, _BYTE *a6); +_WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, _WORD *a5, _WORD *a6); +void __cdecl std::__convert_to_v(char *String, double *a2, _DWORD *a3); +void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3); +void __cdecl std::__convert_to_v(char *String, float *a2, _DWORD *a3); +void (*std::get_unexpected(void))(void); +__int32 __cdecl std::set_unexpected(void (*a1)(void)); +int std::get_new_handler(void); +__int32 __cdecl std::set_new_handler(void (*a1)(void)); +int std::__convert_from_v(int *const *a1, char *Buffer, size_t BufferCount, char *Format, ...); +void __cdecl std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(char *a1, char *a2, int (__cdecl *a3)(void **, char *)); +int __cdecl std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>(_DWORD *a1, int a2, int a3, unsigned __int8 (__cdecl *a4)(int, int)); +std::ostream::sentry *__cdecl std::__ostream_insert>(std::ostream::sentry *a1, int a2, int a3); +int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3); +int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2); +int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2); +int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3); // idb +int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3); +void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden this); +int __cdecl std::_Rb_tree_decrement(_DWORD *a1); +int __cdecl std::_Rb_tree_decrement(_DWORD *a1); +int __cdecl std::_Rb_tree_increment(_DWORD); // weak +int __cdecl std::_Rb_tree_increment(int a1); +bool std::uncaught_exception(void); +int std::uncaught_exceptions(void); +int __cdecl std::_Rb_tree_black_count(_DWORD *a1, _DWORD *a2); +int __cdecl std::_Rb_tree_rotate_left(int a1, _DWORD *a2); +int __cdecl std::_Rb_tree_rotate_right(int a1, _DWORD *a2); +int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3); +int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3); +int __cdecl std::__destroy_ios_failure(int (__fastcall ***a1)(_DWORD)); +int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4); +void __cdecl std::__construct_ios_failure(void *a1, char *a2); +bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *a1); +void __noreturn std::__throw_out_of_range_fmt(char *Str, ...); +void __cdecl std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>(_DWORD *a1, int (__cdecl *a2)(void **, _DWORD *)); +int *__cdecl std::_Rb_tree_rebalance_for_erase(int *a1, _DWORD *a2); +_DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4); +_DWORD *__cdecl std::ws>(_DWORD *a1); +_DWORD *__cdecl std::ws>(_DWORD *a1); +std::ios_base *__cdecl std::hex(std::ios_base *a1); +_DWORD *__cdecl std::endl>(std::ostream::sentry *a1); +_DWORD *__cdecl std::endl>(int *a1); +std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1); +int *__cdecl std::ends>(int *a1); +void __cdecl std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>(char *a1, char *a2, unsigned __int8 (__cdecl *a3)(int, int)); +_DWORD *__cdecl std::flush>(_DWORD *a1); +_DWORD *__cdecl std::flush>(_DWORD *a1); +std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *a1, _DWORD *a2); +std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *a1, _DWORD *a2, unsigned __int8 a3); +_DWORD *__cdecl std::getline,std::allocator>(_DWORD *a1, int a2, wchar_t a3); +int __cdecl std::setfill(unsigned __int8 a1); +int __cdecl std::setfill(unsigned __int16 a1); +int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>(int a1, int a2, int a3); +int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>(int a1, int a2, char **a3); +int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>(int a1, int a2, int a3); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +void __noreturn std::terminate(void); // idb +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +// int __usercall std::local_Rb_tree_decrement@(_DWORD *a1@); +bool __cdecl std::operator==(int a1, int a2); +bool __cdecl std::operator==(char *a1, int a2); +bool __cdecl std::operator==(int a1, char *a2); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, char a2); +std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2); +int *__cdecl std::operator<<>(int *a1, wchar_t *String); +int *__cdecl std::operator<<>(int *a1, char *Str); +int *__cdecl std::operator<<>(int *a1, __int16 a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, __int16 a2); +int *__cdecl std::operator<<>(int *a1, char a2); +unsigned int __cdecl std::operator<(int a1, int a2); +bool __cdecl std::operator<(int a1, int a2); +int __cdecl std::operator!=(char *a1, int a2); // idb +int __cdecl std::operator!=(int a1, char *a2); // idb +int __cdecl std::operator!=(int a1, int a2); +_DWORD *__cdecl std::operator+(_DWORD *a1, _DWORD *a2, unsigned int *a3); +_DWORD *__cdecl std::operator+(_DWORD *a1, char *a2, unsigned int *a3); +int __cdecl std::operator+(int a1, char *a2, int a3); +_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, char *a3); +_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3); +int __cdecl std::operator+(int a1, char a2, int a3); +unsigned int **__cdecl std::operator+(unsigned int **a1, char *Str, std::string *a3); +unsigned int **__cdecl std::operator+(unsigned int **a1, unsigned int **a2, std::string *a3); +unsigned int **__cdecl std::operator+(unsigned int **a1, char a2, std::string *a3); +int __cdecl std::operator+(int a1, wchar_t *String, int a3); // idb +wchar_t **__cdecl std::operator+(wchar_t **a1, int a2, int a3); +int __cdecl std::operator+(int a1, wchar_t a2, int a3); +void **__cdecl std::operator+(void **a1, wchar_t *String, const wchar_t **a3); +void **__cdecl std::operator+(void **a1, _DWORD *a2, const wchar_t **a3); +void **__cdecl std::operator+(void **a1, wchar_t a2, const wchar_t **a3); +std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2); +std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, char a2); +std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2); +int *__cdecl std::operator>>>(int *a1, _WORD *a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, __int16 a2); +void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1); +void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1); +void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1); +void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1); +void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1); +void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1); +void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1); +void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1); +void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1); +int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1); +int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1); +void __cdecl operator delete[](void *); // idb +void __cdecl operator delete(void *); // idb +void __cdecl operator delete(void *, unsigned int); // idb +_DWORD __cdecl operator new[](unsigned int); // idb +int __cdecl operator new[](unsigned int a1); +void *__cdecl operator new(struct type_info *a1, void (__cdecl *a2)(void *)); +unsigned int *__cxa_allocate_dependent_exception(); +void *__cdecl __cxa_allocate_exception(size_t thrown_size); +void *__cdecl __cxa_begin_catch(void *); +void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *); +void __cdecl __noreturn __cxa_call_unexpected(void *); +struct type_info *__cxa_current_exception_type(void); +void __noreturn __cxa_deleted_virtual(void); +void __cxa_end_catch(void); +_DWORD *__cdecl __cxa_free_dependent_exception(unsigned int a1); +void __cdecl __cxa_free_exception(void *); +void *__cdecl __cxa_get_exception_ptr(void *); +_DWORD *__cxa_get_globals(); +void *__cxa_get_globals_fast(); +void __cdecl __cxa_guard_abort(__guard *); +int __cdecl __cxa_guard_acquire(__guard *); +void __cdecl __cxa_guard_release(__guard *); +int __cdecl __cxa_init_primary_exception(int a1, int a2, int a3); +void __noreturn __cxa_pure_virtual(void); +void __noreturn __cxa_rethrow(void); +void __cdecl __noreturn __cxa_throw(void *, struct type_info *lptinfo, void (__cdecl *)(void *)); +void *__cdecl __dynamic_cast(const void *lpsrc, const struct __class_type_info *lpstype, const struct __class_type_info *lpdtype, ptrdiff_t s2d); +int __cdecl __gxx_personality_v0(int a1, int a2, __int64 a3, _Unwind_Exception *a4, _Unwind_Context *context); +void __cdecl __tcf_0_5(); // idb +void __cdecl __tcf_0_6(); // idb +void __cdecl __tcf_0_7(); // idb +void __cdecl __tcf_0_8(); // idb +void __cdecl __tcf_0_9(std::_V2::error_category *a1); +void __cdecl __tcf_0_10(); // idb +void __cdecl __tcf_1_5(); // idb +int __cdecl main(int argc, const char **argv, const char **envp); +int _GLOBAL__sub_I_sCliVersion(); +int _GLOBAL__sub_I__ZN5night8NSStreamC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_j(); +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +int _GLOBAL__sub_I__ZN5night9sourcemap21gen_sourcemap_contentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapIS6_jSt4lessIS6_ESaISt4pairIS7_jEEES9_IjS6_SA_IjESaISC_IKjS6_EEERSt6vectorINS_12ns_sourcemapESaISM_EEiRS6_PS6_(); +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +int _GLOBAL__sub_I__ZN5night3str12path_combineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_RS6_(); +int _GLOBAL__sub_I__ZN4WXML8Compiler9GetFuncIdERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS7_ESaISt4pairIKS7_iEEERSB_(); +int _GLOBAL__sub_I__ZN4WXML6DOMLib7WXMLDom12componentCntE(); +int _GLOBAL__sub_I__ZN4WXML6DOMLib7Machine5ResetEv(); +int _GLOBAL__sub_I__ZN4WXML8Compiler24CalculateOutputChunkKeysERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKS7_RKSt3mapIS7_S9_St4lessIS7_ESaISt4pairISC_S9_EEESM_RSK_(); +int _GLOBAL__sub_I__ZN4WXML7EXPRLib7OPShort5CONSTE(); +int _GLOBAL__sub_I__ZNK4WXML7EXPRLib5Token12GetTokenNameEv(); +int _GLOBAL__sub_I__ZN4WXML7EXPRLib12TransitTable13GetExprNTTypeEv(); +int _GLOBAL__sub_I__ZN4WXML16StringTemplating4DealEPKcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorINS0_5TokenESaISB_EERb(); +void __cdecl __noreturn `anonymous namespace'::pool::free(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +void __cdecl __noreturn `anonymous namespace'::pool::allocate(); +int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv(); +int _GLOBAL__sub_I___cxa_get_globals_fast(); +void __cdecl __noreturn get_ttype_entry(); +void __cdecl __noreturn base_of_encoded_value(); +void __noreturn __gxx_personality_v0_cold(void); // weak +void __noreturn __cxa_call_unexpected_cold(void); // weak +void __noreturn __cxxabiv1::__terminate(void); // weak +void __noreturn __cxxabiv1::throw_recursive_init_exception(void); // idb +void __cdecl __noreturn __cxa_guard_acquire_cold(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +void __noreturn __cxa_guard_abort_cold(void); // weak +void __noreturn __cxa_guard_release_cold(void); // weak +void __cdecl __noreturn operator new(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +// void __usercall std::ios_base::Init::~Init(void *a1@); +int std::locale::_Impl::~_Impl(void); // weak +void __stdcall __noreturn std::locale::_Impl::_Impl(_DWORD, _DWORD); // weak +void __stdcall __noreturn std::locale::_Impl::_M_install_facet(_DWORD, _DWORD); // weak +void __cdecl __noreturn std::locale::_Impl::_M_install_cache(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +void __cdecl __noreturn std::locale::global(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +// void __usercall __noreturn std::locale::name(int a1@, void **a2@, int a3@, _Unwind_Exception *a4@); +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); +void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); +void __noreturn std::wfilebuf::_M_allocate_internal_buffer(void); +void __noreturn std::__throw_bad_exception(void); // idb +void __noreturn std::__throw_bad_alloc(void); // idb +void __noreturn std::__throw_bad_cast(void); // idb +void __noreturn std::__throw_bad_typeid(void); // idb +void __cdecl __noreturn std::__throw_logic_error(std::logic_error *a1); // idb +void __cdecl __noreturn std::__throw_domain_error(std::domain_error *a1); // idb +void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *a1); // idb +void __cdecl __noreturn std::__throw_length_error(std::length_error *a1); // idb +void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *a1); // idb +void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *a1); // idb +void __cdecl __noreturn std::__throw_range_error(std::range_error *a1); // idb +void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *a1); // idb +void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *a1); // idb +void __noreturn std::__throw_bad_function_call(void); // idb +void __noreturn std::ios_base::_M_grow_words(void); +int __stdcall std::ios_base::_M_call_callbacks(_DWORD); // weak +void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj(); +void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj(); +void __noreturn __cxa_bad_cast(void); +void __noreturn __cxa_bad_typeid(void); +void __noreturn __cxa_throw_bad_array_new_length(void); +int operator new[](void); // weak +void __cdecl __noreturn __gnu_cxx::__verbose_terminate_handler(size_t ElementSize, size_t ElementCount, FILE *Stream); // idb +int std::getline,std::allocator>(void); // weak +int std::getline,std::allocator>(void); // weak +int __stdcall std::istream::getline(_DWORD, _DWORD, _DWORD); // weak +int __stdcall std::istream::ignore(_DWORD, _DWORD); // weak +int std::operator>>>(void); // weak +int __stdcall std::wistream::getline(_DWORD, _DWORD, _DWORD); // weak +int __stdcall std::wistream::ignore(_DWORD, _DWORD); // weak +// void __usercall __noreturn std::_V2::error_category::_M_message(int a1@, _Unwind_Exception *a2@, int a3@); +void __noreturn _txnal_cow_string_C1_for_exceptions(void); // weak +void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1); // idb +void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1, char *a2); // idb +void __cdecl __noreturn std::__throw_system_error(int a1); // idb +int _GLOBAL__sub_I__ZSt20__throw_system_errori(); +int __stdcall std::istream::ignore(_DWORD); // weak +int __stdcall std::wistream::ignore(_DWORD); // weak +void __cdecl __noreturn d_type_cold(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11); +void __cdecl __noreturn base_of_encoded_value_cold(); +void __cdecl __noreturn uw_frame_state_for_cold(); +void __cdecl __noreturn uw_install_context_1_cold(); +void __cdecl __noreturn uw_update_context_1_cold(); +void __cdecl __noreturn uw_init_context_1_cold(); +void __cdecl __noreturn uw_update_context_cold(); +void __cdecl __noreturn _Unwind_RaiseException_Phase2_cold(); +void __cdecl __noreturn _Unwind_GetGR_cold(); +void __cdecl __noreturn _Unwind_SetGR_cold(); +void __cdecl __noreturn _Unwind_Resume_cold(); +void __cdecl __noreturn _Unwind_Resume_or_Rethrow_cold(); +void __cdecl __noreturn size_of_encoded_value_cold(); +void __cdecl __noreturn base_from_object_cold(); +void __cdecl __noreturn search_object_cold(); +void __cdecl __noreturn emutls_alloc_cold(); +void __cdecl __noreturn emutls_init_cold(); +void __cdecl __noreturn __emutls_get_address_cold(); +// int __cdecl ___msvcrt_free(_DWORD); weak +// int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); weak + +//------------------------------------------------------------------------- +// Data declarations + +_UNKNOWN loc_460000; // weak +_UNKNOWN loc_49FFFE; // weak +char byte_50001F = '\x90'; // weak +func_ptr __CTOR_LIST__[] = { (func_ptr)0xFFFFFFFF }; // idb +int (__cdecl *_data_start__)(_DWORD) = NULL; // weak +char *sCliVersion = "20230804"; // weak +int WXML::RPX::acceptNum(char const*,int &)::canAccept[266] = +{ + 65536, + 1, + 0, + 16777472, + 5359489, + 5430432, + 5433510, + 5433513, + 5433516, + 5433519, + 5433521, + 5433523, + 5433525, + 5433527, + 5433529, + 5433531, + 5433533, + 5433535, + 2, + -3, + 16384, + 5270508, + -1, + 64, + -16445, + 16320, + 1, + 0, + 7907904, + 24, + -149, + 104, + 1, + 0, + 4, + 4, + 0, + 0, + 4, + 4, + 0, + 0, + 64, + -16445, + 16320, + 1, + 0, + 4, + 4, + 0, + 0, + 4, + 4, + 0, + 0, + 0, + -1, + 0, + -1, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4611792, + 5226384, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // idb +int WXML::RPX::acceptStr(char const*,int &)::canAccept[266] = +{ + 0, + 16777472, + 5359489, + 5430432, + 5433510, + 5433513, + 5433516, + 5433519, + 5433521, + 5433523, + 5433525, + 5433527, + 5433529, + 5433531, + 5433533, + 5433535, + 2, + -3, + 16384, + 5270508, + -1, + 64, + -16445, + 16320, + 1, + 0, + 7907904, + 24, + -149, + 104, + 1, + 0, + 4, + 4, + 0, + 0, + 4, + 4, + 0, + 0, + 64, + -16445, + 16320, + 1, + 0, + 4, + 4, + 0, + 0, + 4, + 4, + 0, + 0, + 0, + -1, + 0, + -1, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 4611792, + 5226384, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // idb +int WXML::RPX::acceptID(char const*,int &)::canAccept[266] = +{ + -947846912, + -593493935, + -391774126, + -391577518, + -391380910, + -391184302, + -391053230, + -390922158, + -390791086, + -390660014, + -390528942, + -390397870, + -390266798, + -390135726, + 131154, + -196608, + 1073807359, + 1810628608, + -65456, + 4259839, + -1077739520, + 1069613055, + 65536, + 0, + -1438646272, + 1572984, + -9764864, + 6881279, + 65536, + 0, + 262144, + 262144, + 0, + 0, + 262144, + 262144, + 0, + 0, + 4194304, + -1077739520, + 1069613055, + 65536, + 0, + 262144, + 262144, + 0, + 0, + 262144, + 262144, + 0, + 0, + 0, + -65536, + 65535, + -65536, + 65535, + -65536, + 65535, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1590689792, + -1081081786, + 79, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // idb +char *night::sourcemap::g_sVLQ[14] = +{ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", + "12", + "11", + "10", + "9", + "8", + "7", + "6", + "5", + "4", + "3", + "2", + "1" +}; // weak +char *WXML::NameAllocator::ALPAHBET[13] = +{ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", + "12", + "11", + "10", + "9", + "8", + "7", + "6", + "5", + "4", + "3", + "2", + "1" +}; // weak +char *WXML::EXPRLib::OPShort::DO_FUNC = "12"; // idb +char *WXML::EXPRLib::OPShort::CS_GLOBAL[11] = { "11", "10", "9", "8", "7", "6", "5", "4", "3", "2", "1" }; // weak +char *WXML::EXPRLib::OPShort::EX_DICT = "10"; // idb +char *WXML::EXPRLib::OPShort::UNION_KV = "9"; // idb +char *WXML::EXPRLib::OPShort::MAKE_KV = "8"; // idb +char *WXML::EXPRLib::OPShort::GET_FROM_ENV = "7"; // idb +char *WXML::EXPRLib::OPShort::GET_NAME = "6"; // idb +char *WXML::EXPRLib::OPShort::CON_LIST = "5"; // idb +char *WXML::EXPRLib::OPShort::MAKE_LIST = "4"; // idb +char *WXML::EXPRLib::OPShort::NAME = "3"; // idb +char *WXML::EXPRLib::OPShort::AOP = "2"; // idb +char *WXML::EXPRLib::OPShort::CONST = "1"; // idb +int _CRT_glob = 2; // weak +fenv_t *_CRT_fenv = (fenv_t *)0xFFFFFFFD; // idb +int _fmode = 16384; +int *off_51505C = &dword_506BEC; // weak +int dword_515060 = -1; // weak +int dword_515064[5] = { 64, -16445, 16320, 1, 0 }; // weak +void *off_515078 = &unk_78AA40; // weak +int dword_51507C[5] = { 24, -149, 104, 1, 0 }; // weak +size_t dword_515090[4] = { 4u, 4u, 0u, 0u }; // weak +size_t dword_5150A0[4] = { 4u, 4u, 0u, 0u }; // weak +int dword_5150B0[5] = { 64, -16445, 16320, 1, 0 }; // weak +size_t dword_5150C4[4] = { 4u, 4u, 0u, 0u }; // weak +size_t dword_5150D4[4] = { 4u, 4u, 0u, 0u }; // weak +int once_regsizes_22907 = 0; // weak +LONG Addend = -1; // idb +int once_22341 = 0; // weak +LONG dword_5150F0 = -1; // idb +int once_21263 = 0; // weak +LONG dword_5150F8 = -1; // idb +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::__timepunct::id = '\0'; // weak +char `guard variable for'std::__timepunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::collate::id = '\0'; // weak +char `guard variable for'std::collate::id = '\0'; // weak +char `guard variable for'std::messages::id = '\0'; // weak +char `guard variable for'std::messages::id = '\0'; // weak +char `guard variable for'std::numpunct::id = '\0'; // weak +char `guard variable for'std::numpunct::id = '\0'; // weak +char `guard variable for'std::time_get>::id = '\0'; // weak +char `guard variable for'std::time_get>::id = '\0'; // weak +char `guard variable for'std::money_get>::id = '\0'; // weak +char `guard variable for'std::money_get>::id = '\0'; // weak +char `guard variable for'std::money_put>::id = '\0'; // weak +char `guard variable for'std::money_put>::id = '\0'; // weak +char `guard variable for'std::collate::id = '\0'; // weak +char `guard variable for'std::collate::id = '\0'; // weak +char `guard variable for'std::num_get>::id = '\0'; // weak +char `guard variable for'std::num_get>::id = '\0'; // weak +char `guard variable for'std::num_put>::id = '\0'; // weak +char `guard variable for'std::num_put>::id = '\0'; // weak +char `guard variable for'std::messages::id = '\0'; // weak +char `guard variable for'std::messages::id = '\0'; // weak +char `guard variable for'std::numpunct::id = '\0'; // weak +char `guard variable for'std::numpunct::id = '\0'; // weak +char `guard variable for'std::time_get>::id = '\0'; // weak +char `guard variable for'std::time_get>::id = '\0'; // weak +char `guard variable for'std::time_put>::id = '\0'; // weak +char `guard variable for'std::time_put>::id = '\0'; // weak +char `guard variable for'std::money_get>::id = '\0'; // weak +char `guard variable for'std::money_get>::id = '\0'; // weak +char `guard variable for'std::money_put>::id = '\0'; // weak +char `guard variable for'std::money_put>::id = '\0'; // weak +__guard `guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex = 0; // idb +__guard `guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec = 0; // idb +__guard `guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex = 0; // idb +__guard `guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret = 0; // idb +_UNKNOWN eh_globals; // weak +__gthread_key_t init = 0u; // idb +char byte_51526C = '\0'; // weak +void (*__cxxabiv1::__terminate_handler)(void) = &__gnu_cxx::__verbose_terminate_handler; // idb +void (*__cxxabiv1::__unexpected_handler)(void) = &std::terminate; // idb +__gthread_recursive_mutex_t `anonymous namespace'::fake_mutex = { 0, 0, 0u, NULL }; // idb +_DWORD `anonymous namespace'::messages_c[4] = { 0, 0, 0, 0 }; // weak +_DWORD `anonymous namespace'::messages_w[4] = { 0, 0, 0, 0 }; // weak +_UNKNOWN `anonymous namespace'::numpunct_c; // weak +int dword_5152AC = 0; // weak +int dword_5152B0 = 0; // weak +_UNKNOWN `anonymous namespace'::numpunct_w; // weak +int dword_5152B8 = 0; // weak +int dword_5152BC = 0; // weak +_UNKNOWN `anonymous namespace'::time_get_c; // weak +int dword_5152C4 = 0; // weak +_UNKNOWN `anonymous namespace'::time_get_w; // weak +int dword_5152CC = 0; // weak +_UNKNOWN `anonymous namespace'::time_put_c; // weak +int dword_5152D4 = 0; // weak +_UNKNOWN `anonymous namespace'::time_put_w; // weak +int dword_5152DC = 0; // weak +_UNKNOWN `anonymous namespace'::codecvt_c16; // weak +int dword_5152E4 = 0; // weak +_UNKNOWN `anonymous namespace'::codecvt_c32; // weak +int dword_5152EC = 0; // weak +_UNKNOWN `anonymous namespace'::money_get_c; // weak +int dword_5152F4 = 0; // weak +_UNKNOWN `anonymous namespace'::money_get_w; // weak +int dword_5152FC = 0; // weak +_UNKNOWN `anonymous namespace'::money_put_c; // weak +int dword_515304 = 0; // weak +_UNKNOWN `anonymous namespace'::money_put_w; // weak +int dword_51530C = 0; // weak +_DWORD `anonymous namespace'::timepunct_c[5] = { 0, 0, 0, 0, 0 }; // weak +_DWORD `anonymous namespace'::timepunct_w[5] = { 0, 0, 0, 0, 0 }; // weak +int `anonymous namespace'::__new_handler = 0; // weak +_DWORD `anonymous namespace'::c_locale_impl[5] = { 0, 0, 0, 0, 0 }; // weak +_UNKNOWN `anonymous namespace'::moneypunct_cf; // weak +int dword_515354 = 0; // weak +int dword_515358 = 0; // weak +_UNKNOWN `anonymous namespace'::moneypunct_ct; // weak +int dword_515360 = 0; // weak +int dword_515364 = 0; // weak +_UNKNOWN `anonymous namespace'::moneypunct_wf; // weak +int dword_51536C = 0; // weak +int dword_515370 = 0; // weak +_UNKNOWN `anonymous namespace'::moneypunct_wt; // weak +int dword_515378 = 0; // weak +int dword_51537C = 0; // weak +_UNKNOWN `anonymous namespace'::codecvt_c16_c8; // weak +int dword_515384 = 0; // weak +_UNKNOWN `anonymous namespace'::codecvt_c32_c8; // weak +int dword_51538C = 0; // weak +__gthread_mutex_t `anonymous namespace'::emergency_pool = { 0, NULL }; // idb +int dword_515398 = 0; // weak +int dword_51539C = 0; // weak +int dword_5153A0 = 0; // weak +int `anonymous namespace'::numpunct_cache_c = 0; // weak +int dword_5153C4 = 0; // weak +int dword_5153C8 = 0; // weak +int dword_5153CC = 0; // weak +char byte_5153D0 = '\0'; // weak +int dword_5153D4 = 0; // weak +int dword_5153D8 = 0; // weak +int dword_5153DC = 0; // weak +int dword_5153E0 = 0; // weak +__int16 word_5153E4 = 0; // weak +char byte_515424 = '\0'; // weak +int `anonymous namespace'::numpunct_cache_w = 0; // weak +int dword_515444 = 0; // weak +int dword_515448 = 0; // weak +int dword_51544C = 0; // weak +char byte_515450 = '\0'; // weak +int dword_515454 = 0; // weak +int dword_515458 = 0; // weak +int dword_51545C = 0; // weak +int dword_515460 = 0; // weak +int dword_515464 = 0; // weak +char byte_5154E4 = '\0'; // weak +int `anonymous namespace'::timepunct_cache_c = 0; // weak +int dword_515504 = 0; // weak +int dword_515508 = 0; // weak +int dword_51550C = 0; // weak +int dword_515510 = 0; // weak +int dword_515514 = 0; // weak +int dword_515518 = 0; // weak +int dword_51551C = 0; // weak +int dword_515520 = 0; // weak +int dword_515524 = 0; // weak +int dword_515528 = 0; // weak +int dword_51552C = 0; // weak +int dword_515530 = 0; // weak +int dword_515534 = 0; // weak +int dword_515538 = 0; // weak +int dword_51553C = 0; // weak +int dword_515540 = 0; // weak +int dword_515544 = 0; // weak +int dword_515548 = 0; // weak +int dword_51554C = 0; // weak +int dword_515550 = 0; // weak +int dword_515554 = 0; // weak +int dword_515558 = 0; // weak +int dword_51555C = 0; // weak +int dword_515560 = 0; // weak +int dword_515564 = 0; // weak +int dword_515568 = 0; // weak +int dword_51556C = 0; // weak +int dword_515570 = 0; // weak +int dword_515574 = 0; // weak +int dword_515578 = 0; // weak +int dword_51557C = 0; // weak +int dword_515580 = 0; // weak +int dword_515584 = 0; // weak +int dword_515588 = 0; // weak +int dword_51558C = 0; // weak +int dword_515590 = 0; // weak +int dword_515594 = 0; // weak +int dword_515598 = 0; // weak +int dword_51559C = 0; // weak +int dword_5155A0 = 0; // weak +int dword_5155A4 = 0; // weak +int dword_5155A8 = 0; // weak +int dword_5155AC = 0; // weak +int dword_5155B0 = 0; // weak +int dword_5155B4 = 0; // weak +int dword_5155B8 = 0; // weak +int dword_5155BC = 0; // weak +int dword_5155C0 = 0; // weak +char byte_5155C4 = '\0'; // weak +int `anonymous namespace'::timepunct_cache_w = 0; // weak +int dword_5155E4 = 0; // weak +int dword_5155E8 = 0; // weak +int dword_5155EC = 0; // weak +int dword_5155F0 = 0; // weak +int dword_5155F4 = 0; // weak +int dword_5155F8 = 0; // weak +int dword_5155FC = 0; // weak +int dword_515600 = 0; // weak +int dword_515604 = 0; // weak +int dword_515608 = 0; // weak +int dword_51560C = 0; // weak +int dword_515610 = 0; // weak +int dword_515614 = 0; // weak +int dword_515618 = 0; // weak +int dword_51561C = 0; // weak +int dword_515620 = 0; // weak +int dword_515624 = 0; // weak +int dword_515628 = 0; // weak +int dword_51562C = 0; // weak +int dword_515630 = 0; // weak +int dword_515634 = 0; // weak +int dword_515638 = 0; // weak +int dword_51563C = 0; // weak +int dword_515640 = 0; // weak +int dword_515644 = 0; // weak +int dword_515648 = 0; // weak +int dword_51564C = 0; // weak +int dword_515650 = 0; // weak +int dword_515654 = 0; // weak +int dword_515658 = 0; // weak +int dword_51565C = 0; // weak +int dword_515660 = 0; // weak +int dword_515664 = 0; // weak +int dword_515668 = 0; // weak +int dword_51566C = 0; // weak +int dword_515670 = 0; // weak +int dword_515674 = 0; // weak +int dword_515678 = 0; // weak +int dword_51567C = 0; // weak +int dword_515680 = 0; // weak +int dword_515684 = 0; // weak +int dword_515688 = 0; // weak +int dword_51568C = 0; // weak +int dword_515690 = 0; // weak +int dword_515694 = 0; // weak +int dword_515698 = 0; // weak +int dword_51569C = 0; // weak +int dword_5156A0 = 0; // weak +char byte_5156A4 = '\0'; // weak +int `anonymous namespace'::moneypunct_cache_cf = 0; // weak +int dword_5156C4 = 0; // weak +int dword_5156C8 = 0; // weak +int dword_5156CC = 0; // weak +__int16 word_5156D0 = 0; // weak +char byte_5156D2 = '\0'; // weak +int dword_5156D4 = 0; // weak +int dword_5156D8 = 0; // weak +int dword_5156DC = 0; // weak +int dword_5156E0 = 0; // weak +int dword_5156E4 = 0; // weak +int dword_5156E8 = 0; // weak +int dword_5156EC = 0; // weak +int dword_5156F0 = 0; // weak +int dword_5156F4 = 0; // weak +char byte_515703 = '\0'; // weak +int `anonymous namespace'::moneypunct_cache_ct = 0; // weak +int dword_515724 = 0; // weak +int dword_515728 = 0; // weak +int dword_51572C = 0; // weak +__int16 word_515730 = 0; // weak +char byte_515732 = '\0'; // weak +int dword_515734 = 0; // weak +int dword_515738 = 0; // weak +int dword_51573C = 0; // weak +int dword_515740 = 0; // weak +int dword_515744 = 0; // weak +int dword_515748 = 0; // weak +int dword_51574C = 0; // weak +int dword_515750 = 0; // weak +int dword_515754 = 0; // weak +char byte_515763 = '\0'; // weak +int `anonymous namespace'::moneypunct_cache_wf = 0; // weak +int dword_515784 = 0; // weak +int dword_515788 = 0; // weak +int dword_51578C = 0; // weak +char byte_515790 = '\0'; // weak +int dword_515792 = 0; // weak +int dword_515798 = 0; // weak +int dword_51579C = 0; // weak +int dword_5157A0 = 0; // weak +int dword_5157A4 = 0; // weak +int dword_5157A8 = 0; // weak +int dword_5157AC = 0; // weak +int dword_5157B0 = 0; // weak +int dword_5157B4 = 0; // weak +int dword_5157B8 = 0; // weak +char byte_5157D2 = '\0'; // weak +int `anonymous namespace'::moneypunct_cache_wt = 0; // weak +int dword_5157E4 = 0; // weak +int dword_5157E8 = 0; // weak +int dword_5157EC = 0; // weak +char byte_5157F0 = '\0'; // weak +int dword_5157F2 = 0; // weak +int dword_5157F8 = 0; // weak +int dword_5157FC = 0; // weak +int dword_515800 = 0; // weak +int dword_515804 = 0; // weak +int dword_515808 = 0; // weak +int dword_51580C = 0; // weak +int dword_515810 = 0; // weak +int dword_515814 = 0; // weak +int dword_515818 = 0; // weak +char byte_515832 = '\0'; // weak +__int16 `anonymous namespace'::name_c = 0; // weak +_DWORD `anonymous namespace'::ctype_c[136] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +_DWORD `anonymous namespace'::ctype_w[184] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +_DWORD `anonymous namespace'::c_locale = 0; // weak +int `anonymous namespace'::name_vec = 0; // weak +_UNKNOWN unk_515D7C; // weak +_UNKNOWN `anonymous namespace'::cache_vec; // weak +_DWORD `anonymous namespace'::codecvt_c[3] = { 0, 0, 0 }; // weak +_DWORD `anonymous namespace'::codecvt_w[3] = { 0, 0, 0 }; // weak +_UNKNOWN `anonymous namespace'::collate_c; // weak +int dword_515E5C = 0; // weak +int dword_515E60 = 0; // weak +_UNKNOWN `anonymous namespace'::collate_w; // weak +int dword_515E68 = 0; // weak +int dword_515E6C = 0; // weak +_UNKNOWN `anonymous namespace'::facet_vec; // weak +_UNKNOWN `anonymous namespace'::num_get_c; // weak +int dword_515F44 = 0; // weak +_UNKNOWN `anonymous namespace'::num_get_w; // weak +int dword_515F4C = 0; // weak +_UNKNOWN `anonymous namespace'::num_put_c; // weak +int dword_515F54 = 0; // weak +_UNKNOWN `anonymous namespace'::num_put_w; // weak +int dword_515F5C = 0; // weak +__gthread_recursive_mutex_t *`anonymous namespace'::static_mutex = NULL; // idb +void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this) = { &off_5377D4, &off_5377FC }; // weak +void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this) = &off_5377FC; // weak +_UNKNOWN __gnu_internal::buf_cin_sync; // weak +int dword_515F84 = 0; // weak +int dword_515F88 = 0; // weak +int dword_515F8C = 0; // weak +int dword_515F90 = 0; // weak +int dword_515F94 = 0; // weak +int dword_515F98 = 0; // weak +_DWORD dword_515F9C = 0; // weak +int dword_515FA0 = 0; // weak +int dword_515FA4 = 0; // weak +_UNKNOWN __gnu_internal::buf_cerr_sync; // weak +int dword_515FC4 = 0; // weak +int dword_515FC8 = 0; // weak +int dword_515FCC = 0; // weak +int dword_515FD0 = 0; // weak +int dword_515FD4 = 0; // weak +int dword_515FD8 = 0; // weak +_DWORD dword_515FDC = 0; // weak +int dword_515FE0 = 0; // weak +int dword_515FE4 = 0; // weak +_UNKNOWN __gnu_internal::buf_cout_sync; // weak +int dword_516004 = 0; // weak +int dword_516008 = 0; // weak +int dword_51600C = 0; // weak +int dword_516010 = 0; // weak +int dword_516014 = 0; // weak +int dword_516018 = 0; // weak +_DWORD dword_51601C = 0; // weak +int dword_516020 = 0; // weak +int dword_516024 = 0; // weak +_UNKNOWN __gnu_internal::buf_wcin_sync; // weak +int dword_516044 = 0; // weak +int dword_516048 = 0; // weak +int dword_51604C = 0; // weak +int dword_516050 = 0; // weak +int dword_516054 = 0; // weak +int dword_516058 = 0; // weak +_DWORD dword_51605C = 0; // weak +int dword_516060 = 0; // weak +__int16 word_516064 = 0; // weak +_UNKNOWN __gnu_internal::buf_wcerr_sync; // weak +int dword_516084 = 0; // weak +int dword_516088 = 0; // weak +int dword_51608C = 0; // weak +int dword_516090 = 0; // weak +int dword_516094 = 0; // weak +int dword_516098 = 0; // weak +_DWORD dword_51609C = 0; // weak +int dword_5160A0 = 0; // weak +__int16 word_5160A4 = 0; // weak +_UNKNOWN __gnu_internal::buf_wcout_sync; // weak +int dword_5160C4 = 0; // weak +int dword_5160C8 = 0; // weak +int dword_5160CC = 0; // weak +int dword_5160D0 = 0; // weak +int dword_5160D4 = 0; // weak +int dword_5160D8 = 0; // weak +_DWORD dword_5160DC = 0; // weak +int dword_5160E0 = 0; // weak +__int16 word_5160E4 = 0; // weak +char __gnu_internal::buf_cin[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_cerr[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_cout[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_wcin[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_wcerr[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_wcout[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +_UNKNOWN std::wstring::_Rep::_S_empty_rep_storage; // weak +_UNKNOWN unk_51640C; // weak +unsigned int std::string::_Rep::_S_empty_rep_storage = 0u; // idb +_UNKNOWN unk_51641C; // weak +char *std::__num_base::_S_atoms_in[3] = +{ + "-+xX0123456789abcdefABCDEF", + "-+xX0123456789abcdef0123456789ABCDEF", + "-0123456789" +}; // weak +char *std::__num_base::_S_atoms_out[2] = { "-+xX0123456789abcdef0123456789ABCDEF", "-0123456789" }; // weak +char *std::money_base::_S_atoms = "-0123456789"; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::__timepunct::id = 0; // weak +int std::__timepunct::id = 0; // weak +_DWORD std::`anonymous namespace'::messages_c = 0; // weak +signed __int32 dword_516448[3] = { 0, 0, 0 }; // weak +_DWORD std::`anonymous namespace'::messages_w = 0; // weak +signed __int32 dword_516458[3] = { 0, 0, 0 }; // weak +int std::`anonymous namespace'::numpunct_c = 0; // weak +int dword_516468 = 0; // weak +int dword_51646C = 0; // weak +int std::`anonymous namespace'::numpunct_w = 0; // weak +int dword_516474 = 0; // weak +int dword_516478 = 0; // weak +int std::`anonymous namespace'::time_get_c = 0; // weak +int dword_516480 = 0; // weak +int std::`anonymous namespace'::time_get_w = 0; // weak +int dword_516488 = 0; // weak +int std::`anonymous namespace'::money_get_c = 0; // weak +int dword_516490 = 0; // weak +int std::`anonymous namespace'::money_get_w = 0; // weak +int dword_516498 = 0; // weak +int std::`anonymous namespace'::money_put_c = 0; // weak +int dword_5164A0 = 0; // weak +int std::`anonymous namespace'::money_put_w = 0; // weak +int dword_5164A8 = 0; // weak +int std::`anonymous namespace'::moneypunct_cf = 0; // weak +int dword_5164B0 = 0; // weak +int dword_5164B4 = 0; // weak +int std::`anonymous namespace'::moneypunct_ct = 0; // weak +int dword_5164BC = 0; // weak +int dword_5164C0 = 0; // weak +int std::`anonymous namespace'::moneypunct_wf = 0; // weak +int dword_5164C8 = 0; // weak +int dword_5164CC = 0; // weak +int std::`anonymous namespace'::moneypunct_wt = 0; // weak +int dword_5164D4 = 0; // weak +int dword_5164D8 = 0; // weak +int std::`anonymous namespace'::collate_c = 0; // weak +int dword_5164E0 = 0; // weak +int dword_5164E4 = 0; // weak +int std::`anonymous namespace'::collate_w = 0; // weak +int dword_5164EC = 0; // weak +int dword_5164F0 = 0; // weak +void *std::__timepunct_cache::_S_timezones[2] = { &off_53079E, &off_5307A2 }; // weak +void *std::__timepunct_cache::_S_timezones[2] = { &off_530734, &off_53073C }; // weak +int std::ctype::id = 0; // weak +int std::ctype::id = 0; // weak +int std::locale::_S_classic = 0; // weak +int std::locale::id::_S_refcount = 0; // weak +int std::locale::facet::_S_c_locale = 0; // weak +__gthread_once_t std::locale::facet::_S_once = { 0, -1 }; // idb +__gthread_once_t std::locale::_S_once = { 0, -1 }; // idb +int std::locale::_S_global = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::collate::id = 0; // weak +int std::collate::id = 0; // weak +int std::messages::id = 0; // weak +int std::messages::id = 0; // weak +int std::numpunct::id = 0; // weak +int std::numpunct::id = 0; // weak +int std::time_get>::id = 0; // weak +int std::time_get>::id = 0; // weak +int std::money_get>::id = 0; // weak +int std::money_get>::id = 0; // weak +int std::money_put>::id = 0; // weak +int std::money_put>::id = 0; // weak +_UNKNOWN std::codecvt::id; // weak +_UNKNOWN std::codecvt::id; // weak +_UNKNOWN std::codecvt::id; // weak +_UNKNOWN std::codecvt::id; // weak +int std::codecvt::id = 0; // weak +int std::codecvt::id = 0; // weak +int std::collate::id = 0; // weak +int std::collate::id = 0; // weak +int std::num_get>::id = 0; // weak +int std::num_get>::id = 0; // weak +int std::num_put>::id = 0; // weak +int std::num_put>::id = 0; // weak +int std::ios_base::Init::_S_refcount = 0; // weak +char std::ios_base::Init::_S_synced_with_stdio = '\x01'; // weak +int std::messages::id = 0; // weak +int std::messages::id = 0; // weak +int std::numpunct::id = 0; // weak +int std::numpunct::id = 0; // weak +int std::time_get>::id = 0; // weak +int std::time_get>::id = 0; // weak +int std::time_put>::id = 0; // weak +int std::time_put>::id = 0; // weak +int std::money_get>::id = 0; // weak +int std::money_get>::id = 0; // weak +int std::money_put>::id = 0; // weak +int std::money_put>::id[5] = { 0, 0, 0, 0, 0 }; // weak +int std::cin = 0; // weak +int dword_516664 = 0; // weak +int dword_516668[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_5166D8 = 0; // weak +__int16 word_5166DC = 0; // weak +int dword_5166E0 = 0; // weak +int dword_5166E4 = 0; // weak +int dword_5166E8 = 0; // weak +int dword_5166EC = 0; // weak +int std::cerr = 0; // weak +int dword_516704 = 0; // weak +int dword_516710 = 0; // weak +int dword_516774 = 0; // weak +__int16 word_516778 = 0; // weak +int dword_51677C = 0; // weak +int dword_516780 = 0; // weak +int dword_516784 = 0; // weak +int dword_516788 = 0; // weak +int std::clog = 0; // weak +int dword_5167A4[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_516814 = 0; // weak +__int16 word_516818 = 0; // weak +int dword_51681C = 0; // weak +int dword_516820 = 0; // weak +int dword_516824 = 0; // weak +int dword_516828 = 0; // weak +int std::cout = 0; // weak +int dword_516844[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_5168B4 = 0; // weak +__int16 word_5168B8 = 0; // weak +int dword_5168BC = 0; // weak +int dword_5168C0 = 0; // weak +int dword_5168C4 = 0; // weak +int dword_5168C8 = 0; // weak +int std::wcin = 0; // weak +int dword_5168E4 = 0; // weak +int dword_5168E8[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_516958 = 0; // weak +__int16 word_51695C = 0; // weak +char byte_51695E = '\0'; // weak +int dword_516960 = 0; // weak +int dword_516964 = 0; // weak +int dword_516968 = 0; // weak +int dword_51696C = 0; // weak +int std::wcerr = 0; // weak +int dword_516984 = 0; // weak +int dword_516990 = 0; // weak +int dword_5169F4 = 0; // weak +__int16 word_5169F8 = 0; // weak +char byte_5169FA = '\0'; // weak +int dword_5169FC = 0; // weak +int dword_516A00 = 0; // weak +int dword_516A04 = 0; // weak +int dword_516A08 = 0; // weak +int std::wclog = 0; // weak +int dword_516A24[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_516A94 = 0; // weak +__int16 word_516A98 = 0; // weak +char byte_516A9A = '\0'; // weak +int dword_516A9C = 0; // weak +int dword_516AA0 = 0; // weak +int dword_516AA4 = 0; // weak +int dword_516AA8 = 0; // weak +int std::wcout = 0; // weak +int dword_516AC4[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_516B34 = 0; // weak +__int16 word_516B38 = 0; // weak +char byte_516B3A = '\0'; // weak +int dword_516B3C = 0; // weak +int dword_516B40 = 0; // weak +int dword_516B44 = 0; // weak +int dword_516B48 = 0; // weak +__gthread_mutex_t `anonymous namespace'::get_locale_mutex(void)::locale_mutex = { 0, NULL }; // idb +__gthread_once_t `anonymous namespace'::get_static_mutex(void)::once = { 0, -1 }; // idb +void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this) = &off_5377AC; // weak +__gthread_mutex_t `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex = { 0, NULL }; // idb +_DWORD WXML::EXPRLib::TransitTable::GetInstance(void)::ret = 0; // weak +int dword_516B80 = 0; // weak +void *dword_516B84 = NULL; // idb +int dword_516B88 = 0; // weak +int dword_516B8C = 0; // weak +int dword_516B90 = 0; // weak +char byte_516B94 = '\0'; // weak +char __gnu_cxx::__verbose_terminate_handler(void)::terminating = '\0'; // weak +int std::ios_base::xalloc(void)::_S_top = 0; // weak +const char byte_5173B0 = '\0'; // idb +void *off_517814 = &unk_5F766E; // weak +void *off_517818 = &unk_5F746E; // weak +void *off_517826 = &unk_726176; // weak +void *off_51782A = &unk_727473; // weak +void *off_51782E = &unk_6D756E; // weak +void *off_517868 = &unk_762D6B; // weak +void *off_5178A8 = &unk_726F66; // weak +char aUndefinedTypeo[14691] = "\"undefined\"!=typeof __WXML_GLOBAL__&&void 0!==__WXML_GLOBAL__.wxs_nf_init||(Object.defineProperty(Object.prototype,\"nv_constructor\",{writable:!0,value:\"Object\"}),Object.defineProperty(Object.prototype,\"nv_toString\",{writable:!0,value:function(){return\"[object Object]\"}}),Object.defineProperty(Function.prototype,\"nv_constructor\",{writable:!0,value:\"Function\"}),Object.defineProperty(Function.prototype,\"nv_length\",{get:function(){return this.length},set:function(){}}),Object.defineProperty(Function.prototype,\"nv_toString\",{writable:!0,value:function(){return\"[function Function]\"}}),Object.defineProperty(Array.prototype,\"nv_toString\",{writable:!0,value:function(){return this.nv_join()}}),Object.defineProperty(Array.prototype,\"nv_join\",{writable:!0,value:function(e){e=null==e?\",\":e;for(var t=\"\",r=0;r=16e3){throw\"Dom limit exceeded, please check if there's any mistake you've made.\"}return{tag:\"wx-\"+e,attr:{},children:[],n:[],raw:{},generics:{}}}function e(e,t){t&&e.properities.push(t)}function t(e,t,r){return typeof e[r]!=\"undefined\"?e[r]:t[r]}function u(e){console.warn(\"WXMLRT_\"+g+\":\"+e)}function r(e,t){u(t+\":-1:-1:-1: Template `\"+e+\"` is being called recursively, will be stop.\")}var s=console.warn;var n=console.log;function o(){function e(){}e.prototype={hn:function(e,t){if(typeof e==\"object\"){var r=0;var n=false,o=false;for(var a in e){n=n|a===\"__value__\";o=o|a===\"__wxspec__\";r++;if(r>2)break}return r==2&&n&&o&&(t||e.__wxspec__!==\"m\"||this.hn(e.__value__)===\"h\")?\"h\":\"n\"}return\"n\"},nh:function(e,t){return{__value__:e,__wxspec__:t?t:true}},rv:function(e){return this.hn(e,true)===\"n\"?e:this.rv(e.__value__)},hm:function(e){if(typeof e==\"object\"){var t=0;var r=false,n=false;for(var o in e){r=r|o===\"__value__\";n=n|o===\"__wxspec__\";t++;if(t>2)break}return t==2&&r&&n&&(e.__wxspec__===\"m\"||this.hm(e.__value__))}return false}};return new e}var A=o();function T(e){var t=e.split(\"\\n \"+\" \"+\" \"+\" \");for(var r=0;r=\":case\"<=\":case\">\":case\"<\":case\"<<\":case\">>\":p=x(e[1],t,r,n,o,a);u=x(e[2],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");switch(i){case\"+\":f=A.rv(p)+A.rv(u);break;case\"*\":f=A.rv(p)*A.rv(u);break;case\"/\":f=A.rv(p)/A.rv(u);break;case\"%\":f=A.rv(p)%A.rv(u);break;case\"|\":f=A.rv(p)|A.rv(u);break;case\"^\":f=A.rv(p)^A.rv(u);break;case\"&\":f=A.rv(p)&A.rv(u);break;case\"===\":f=A.rv(p)===A.rv(u);break;case\"==\":f=A.rv(p)==A.rv(u);break;case\"!=\":f=A.rv(p)!=A.rv(u);break;case\"!==\":f=A.rv(p)!==A.rv(u);break;case\">=\":f=A.rv(p)>=A.rv(u);break;case\"<=\":f=A.rv(p)<=A.rv(u);break;case\">\":f=A.rv(p)>A.rv(u);break;case\"<\":f=A.rv(p)>\":f=A.rv(p)>>A.rv(u);break;default:break}return l?A.nh(f,\"c\"):f;break;case\"-\":p=e.length===3?x(e[1],t,r,n,o,a):0;u=e.length===3?x(e[2],t,r,n,o,a):x(e[1],t,r,n,o,a);l=M&&(A.hn(p)===\"h\"||A.hn(u)===\"h\");f=l?A.rv(p)-A.rv(u):p-u;return l?A.nh(f,\"c\"):f;break;case\"!\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=!A.rv(p);return l?A.nh(f,\"c\"):f;case\"~\":p=x(e[1],t,r,n,o,a);l=M&&A.hn(p)==\"h\";f=~A.rv(p);return l?A.nh(f,\"c\"):f;default:s(\"unrecognized op\"+i)}}function x(e,t,r,n,o,a){var i=e[0];var p=false;if(typeof a!==\"undefined\")o.ap=a;if(typeof i===\"object\"){var u=i[0];var l,f,v,c,s,y,b,d,h,_,g;switch(u){case 2:return m(e,t,r,n,o);break;case 4:return x(e[1],t,r,n,o,p);break;case 5:switch(e.length){case 2:l=x(e[1],t,r,n,o,p);return M?[l]:[A.rv(l)];return[l];break;case 1:return[];break;default:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);l.push(M?v:A.rv(v));return l;break}break;case 6:l=x(e[1],t,r,n,o);var w=o.ap;h=A.hn(l)===\"h\";f=h?A.rv(l):l;o.is_affected|=h;if(M){if(f===null||typeof f===\"undefined\"){return h?A.nh(undefined,\"e\"):undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return h||_?A.nh(undefined,\"e\"):undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return h||_?g?y:A.nh(y,\"e\"):y}else{if(f===null||typeof f===\"undefined\"){return undefined}v=x(e[2],t,r,n,o,p);_=A.hn(v)===\"h\";c=_?A.rv(v):v;o.ap=w;o.is_affected|=_;if(c===null||typeof c===\"undefined\"||c===\"__proto__\"||c===\"prototype\"||c===\"caller\"){return undefined}y=f[c];if(typeof y===\"function\"&&!w)y=undefined;g=A.hn(y)===\"h\";o.is_affected|=g;return g?A.rv(y):y}case 7:switch(e[1][0]){case 11:o.is_affected|=A.hn(n)===\"h\";return n;case 3:b=A.rv(r);d=A.rv(t);v=e[1][1];if(n&&n.f&&n.f.hasOwnProperty(v)){l=n.f;o.ap=true}else{l=b&&b.hasOwnProperty(v)?r:d&&d.hasOwnProperty(v)?t:undefined}if(M){if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;y=h&&!g?A.nh(y,\"e\"):y;return y}}else{if(l){h=A.hn(l)===\"h\";f=h?A.rv(l):l;y=f[v];g=A.hn(y)===\"h\";o.is_affected|=h||g;return A.rv(y)}}return undefined}break;case 8:l={};l[e[1]]=x(e[2],t,r,n,o,p);return l;break;case 9:l=x(e[1],t,r,n,o,p);v=x(e[2],t,r,n,o,p);function O(e,t,r){var n,o;h=A.hn(e)===\"h\";_=A.hn(t)===\"h\";f=A.rv(e);c=A.rv(t);for(var a in c){if(r||!f.hasOwnProperty(a)){f[a]=M?_?A.nh(c[a],\"e\"):c[a]:A.rv(c[a])}}return e}var s=l;var j=true;if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){l=v;v=s;j=false}if(typeof e[1][0]===\"object\"&&e[1][0][0]===10){var P={};return O(O(P,l,j),v,j)}else return O(l,v,j);break;case 10:l=x(e[1],t,r,n,o,p);l=M?l:A.rv(l);return l;break;case 12:var P;l=x(e[1],t,r,n,o);if(!o.ap){return M&&A.hn(l)===\"h\"?A.nh(P,\"f\"):P}var w=o.ap;v=x(e[2],t,r,n,o,p);o.ap=w;h=A.hn(l)===\"h\";_=N(v);f=A.rv(l);c=A.rv(v);snap_bb=K(c,\"nv_\");try{P=typeof f===\"function\"?K(f.apply(null,snap_bb)):undefined}catch(t){t.message=t.message.replace(/nv_/g,\"\");t.stack=t.stack.substring(0,t.stack.indexOf(\"\\n\",t.stack.lastIndexOf(\"at nv_\")));t.stack=t.stack.replace(/\\snv_/g,\" \");t.stack=T(t.stack);if(n.debugInfo){t.stack+=\"\\n \"+\" \"+\" \"+\" at \"+n.debugInfo[0]+\":\"+n.debugInfo[1]+\":\"+n.debugInfo[2];console.error(t)}P=undefined}return M&&(_||h)?A.nh(P,\"f\"):P}}else{if(i===3||i===1)return e[1];else if(i===11){var l=\"\";for(var D=1;D=0;o--){if(r[e].i[o]&&n[r[e].i[o]][t])return n[r[e].i[o]][t]}for(var o=r[e].ti.length-1;o>=0;o--){var a=ne(r[e].ti[o],r,e);if(a&&n[a][t])return n[a][t]}var i=ae(r,e);for(var o=0;o=0;p--)if(r[e].j[p]){for(var a=r[r[e].j[p]].ti.length-1;a>=0;a--){var u=ne(r[r[e].j[p]].ti[a],r,e);if(u&&n[u][t]){return n[u][t]}}}}function ae(e,t){if(!t)return[];if($gaic[t]){return $gaic[t]}var r=[],n=[],o=0,a=0,i={},p={};n.push(t);p[t]=true;a++;while(o2)break;\n}\nreturn cnt == 2 && any1 && any2 && (obj.__wxspec__ === 'm' || this.hm(obj.__value__) );\n}\nreturn false;\n}\n}\nreturn new x;\n}\nwh=$gwh();\nfunction $gstack(s){\nvar tmp=s.split('\\n '+' '+' '+' ');\nfor(var i=0;i=':\ncase '<=':\ncase '>':\ncase '<':\ncase '<<':\ncase '>>':\n_a = rev( ops[1], e, s, g, o, _f );\n_b = rev( ops[2], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) === 'h' || wh.hn( _b ) === 'h');\nswitch( rop )\n{\ncase '+':\n_d = wh.rv( _a ) + wh.rv( _b );\nbreak;\ncase '*':\n_d = wh.rv( _a ) * wh.rv( _b );\nbreak;\ncase '/':\n_d = wh.rv( _a ) / wh.rv( _b );\nbreak;\ncase '%':\n_d = wh.rv( _a ) % wh.rv( _b );\nbreak;\ncase '|':\n_d = wh.rv( _a ) | wh.rv( _b );\nbreak;\ncase '^':\n_d = wh.rv( _a ) ^ wh.rv( _b );\nbreak;\ncase '&':\n_d = wh.rv( _a ) & wh.rv( _b );\nbreak;\ncase '===':\n_d = wh.rv( _a ) === wh.rv( _b );\nbreak;\ncase '==':\n_d = wh.rv( _a ) == wh.rv( _b );\nbreak;\ncase '!=':\n_d = wh.rv( _a ) != wh.rv( _b );\nbreak;\ncase '!==':\n_d = wh.rv( _a ) !== wh.rv( _b );\nbreak;\ncase '>=':\n_d = wh.rv( _a ) >= wh.rv( _b );\nbreak;\ncase '<=':\n_d = wh.rv( _a ) <= wh.rv( _b );\nbreak;\ncase '>':\n_d = wh.rv( _a ) > wh.rv( _b );\nbreak;\ncase '<':\n_d = wh.rv( _a ) < wh.rv( _b );\nbreak;\ncase '<<':\n_d = wh.rv( _a ) << wh.rv( _b );\nbreak;\ncase '>>':\n_d = wh.rv( _a ) >> wh.rv( _b );\nbreak;\ndefault:\nbreak;\n}\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\nbreak;\ncase '-':\n_a = ops.length === 3 ? rev( ops[1], e, s, g, o, _f ) : 0;\n_b = ops.length === 3 ? rev( ops[2], e, s, g, o, _f ) : rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) === 'h' || wh.hn( _b ) === 'h');\n_d = _c ? wh.rv( _a ) - wh.rv( _b ) : _a - _b;\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\nbreak;\ncase '!':\n_a = rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) == 'h');\n_d = !wh.rv(_a);\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\ncase '~':\n_a = rev( ops[1], e, s, g, o, _f );\n_c = should_pass_type_info && (wh.hn( _a ) == 'h');\n_d = ~wh.rv(_a);\nreturn _c ? wh.nh( _d, \"c\" ) : _d;\ndefault:\n$gwn('unrecognized op' + rop );\n}\n}\nfunction rev( ops, e, s, g, o, newap )\n{\nvar op = ops[0];\nvar _f = false;\nif ( typeof newap !== \"undefined\" ) o.ap = newap;\nif( typeof(op)==='object' )\n{\nvar vop=op[0];\nvar _a, _aa, _b, _bb, _c, _d, _s, _e, _ta, _tb, _td;\nswitch(vop)\n{\ncase 2:\nreturn ArithmeticEv(ops,e,s,g,o);\nbreak;\ncase 4: \nreturn rev( ops[1], e, s, g, o, _f );\nbreak;\ncase 5: \nswitch( ops.length )\n{\ncase 2: \n_a = rev( ops[1],e,s,g,o,_f );\nreturn should_pass_type_info?[_a]:[wh.rv(_a)];\nreturn [_a];\nbreak;\ncase 1: \nreturn [];\nbreak;\ndefault:\n_a = rev( ops[1],e,s,g,o,_f );\n_b = rev( ops[2],e,s,g,o,_f );\n_a.push( \nshould_pass_type_info ?\n_b :\nwh.rv( _b )\n);\nreturn _a;\nbreak;\n}\nbreak;\ncase 6:\n_a = rev(ops[1],e,s,g,o);\nvar ap = o.ap;\n_ta = wh.hn(_a)==='h';\n_aa = _ta ? wh.rv(_a) : _a;\no.is_affected |= _ta;\nif( should_pass_type_info )\n{\nif( _aa===null || typeof(_aa) === 'undefined' )\n{\nreturn _ta ? wh.nh(undefined, 'e') : undefined;\n}\n_b = rev(ops[2],e,s,g,o,_f);\n_tb = wh.hn(_b) === 'h';\n_bb = _tb ? wh.rv(_b) : _b;\no.ap = ap;\no.is_affected |= _tb;\nif( _bb===null || typeof(_bb) === 'undefined' || \n_bb === \"__proto__\" || _bb === \"prototype\" || _bb === \"caller\" ) \n{\nreturn (_ta || _tb) ? wh.nh(undefined, 'e') : undefined;\n}\n_d = _aa[_bb];\nif ( typeof _d === 'function' && !ap ) _d = undefined;\n_td = wh.hn(_d)==='h';\no.is_affected |= _td;\nreturn (_ta || _tb) ? (_td ? _d : wh.nh(_d, 'e')) : _d;\n}\nelse\n{\nif( _aa===null || typeof(_aa) === 'undefined' )\n{\nreturn undefined;\n}\n_b = rev(ops[2],e,s,g,o,_f);\n_tb = wh.hn(_b) === 'h';\n_bb = _tb ? wh.rv(_b) : _b;\no.ap = ap;\no.is_affected |= _tb;\nif( _bb===null || typeof(_bb) === 'undefined' || \n_bb === \"__proto__\" || _bb === \"prototype\" || _bb === \"caller\" ) \n{\nreturn undefined;\n}\n_d = _aa[_bb];\nif ( typeof _d === 'function' && !ap ) _d = undefined;\n_td = wh.hn(_d)==='h';\no.is_affected |= _td;\nreturn _td ? wh.rv(_d) : _d;\n}\ncase 7: \nswitch(ops[1][0])\n{\ncase 11:\no.is_affected |= wh.hn(g)==='h';\nreturn g;\ncase 3:\n_s = wh.rv( s );\n_e = wh.rv( e );\n_b = ops[1][1];\nif (g && g.f && g.f.hasOwnProperty(_b) )\n{\n_a = g.f;\no.ap = true;\n}\nelse\n{\n_a = _s && _s.hasOwnProperty(_b) ? \ns : (_e && _e.hasOwnProperty(_b) ? e : undefined );\n}\nif( should_pass_type_info )\n{\nif( _a )\n{\n_ta = wh.hn(_a) === 'h';\n_aa = _ta ? wh.rv( _a ) : _a;\n_d = _aa[_b];\n_td = wh.hn(_d) === 'h';\no.is_affected |= _ta || _td;\n_d = _ta && !_td ? wh.nh(_d,'e') : _d;\nreturn _d;\n}\n}\nelse\n{\nif( _a )\n{\n_ta = wh.hn(_a) === 'h';\n_aa = _ta ? wh.rv( _a ) : _a;\n_d = _aa[_b];\n_td = wh.hn(_d) === 'h';\no.is_affected |= _ta || _td;\nreturn wh.rv(_d);\n}\n}\nreturn undefined;\n}\nbreak;\ncase 8: \n_a = {};\n_a[ops[1]] = rev(ops[2],e,s,g,o,_f);\nreturn _a;\nbreak;\ncase 9: \n_a = rev(ops[1],e,s,g,o,_f);\n_b = rev(ops[2],e,s,g,o,_f);\nfunction merge( _a, _b, _ow )\n{\nvar ka, _bbk;\n_ta = wh.hn(_a)==='h';\n_tb = wh.hn(_b)==='h';\n_aa = wh.rv(_a);\n_bb = wh.rv(_b);\nfor(var k in _bb)\n{\nif ( _ow || !_aa.hasOwnProperty(k) )\n{\n_aa[k] = should_pass_type_info ? (_tb ? wh.nh(_bb[k],'e') : _bb[k]) : wh.rv(_bb[k]);\n}\n}\nreturn _a;\n}\nvar _c = _a\nvar _ow = true\nif ( typeof(ops[1][0]) === \"object\" && ops[1][0][0] === 10 ) {\n_a = _b\n_b = _c\n_ow = false\n}\nif ( typeof(ops[1][0]) === \"object\" && ops[1][0][0] === 10 ) {\nvar _r = {}\nreturn merge( merge( _r, _a, _ow ), _b, _ow );\n}\nelse\nreturn merge( _a, _b, _ow );\nbreak;\ncase 10:\n_a = rev(ops[1],e,s,g,o,_f);\n_a = should_pass_type_info ? _a : wh.rv( _a );\nreturn _a ;\nbreak;\ncase 12:\nvar _r;\n_a = rev(ops[1],e,s,g,o);\nif ( !o.ap )\n{\nreturn should_pass_type_info && wh.hn(_a)==='h' ? wh.nh( _r, 'f' ) : _r;\n}\nvar ap = o.ap;\n_b = rev(ops[2],e,s,g,o,_f);\no.ap = ap;\n_ta = wh.hn(_a)==='h';\n_tb = _ca(_b);\n_aa = wh.rv(_a);\t\n_bb = wh.rv(_b); snap_bb=$gdc(_bb,\"nv_\");\ntry{\n_r = typeof _aa === \"function\" ? $gdc(_aa.apply(null, snap_bb)) : undefined;\n} catch (e){\ne.message = e.message.replace(/nv_/g,\"\");\ne.stack = e.stack.substring(0,e.stack.indexOf(\"\\n\", e.stack.lastIndexOf(\"at nv_\")));\ne.stack = e.stack.replace(/\\snv_/g,\" \"); \ne.stack = $gstack(e.stack);\t\nif(g.debugInfo)\n{\ne.stack += \"\\n \"+\" \"+\" \"+\" at \"+g.debugInfo[0]+\":\"+g.debugInfo[1]+\":\"+g.debugInfo[2];\nconsole.error(e);\n}\n_r = undefined;\n}\nreturn should_pass_type_info && (_tb || _ta) ? wh.nh( _r, 'f' ) : _r;\n}\n}\nelse\n{\nif( op === 3 || op === 1) return ops[1];\nelse if( op === 11 ) \n{\nvar _a='';\nfor( var i = 1 ; i < ops.length ; i++ )\n{\nvar xp = wh.rv(rev(ops[i],e,s,g,o,_f));\n_a += typeof(xp) === 'undefined' ? '' : xp;\n}\nreturn _a;\n}\n}\n}\nfunction wrapper( ops, e, s, g, o, newap )\n{\nif( ops[0] == '11182016' )\n{\ng.debugInfo = ops[2];\nreturn rev( ops[1], e, s, g, o, newap );\n}\nelse\n{\ng.debugInfo = null;\nreturn rev( ops, e, s, g, o, newap );\n}\n}\nreturn wrapper;\n}\ngra=$gwrt(true); \ngrb=$gwrt(false); \nfunction TestTest( expr, ops, e,s,g, expect_a, expect_b, expect_affected )\n{\n{\nvar o = {is_affected:false};\nvar a = gra( ops, e,s,g, o );\nif( JSON.stringify(a) != JSON.stringify( expect_a )\n|| o.is_affected != expect_affected )\n{\nconsole.warn( \"A. \" + expr + \" get result \" + JSON.stringify(a) + \", \" + o.is_affected + \", but \" + JSON.stringify( expect_a ) + \", \" + expect_affected + \" is expected\" );\n}\n}\n{\nvar o = {is_affected:false};\nvar a = grb( ops, e,s,g, o );\nif( JSON.stringify(a) != JSON.stringify( expect_b )\n|| o.is_affected != expect_affected )\n{\nconsole.warn( \"B. \" + expr + \" get result \" + JSON.stringify(a) + \", \" + o.is_affected + \", but \" + JSON.stringify( expect_b ) + \", \" + expect_affected + \" is expected\" );\n}\n}\n}\n"; // idb +const char aVarNfInitFunct[] = "var nf_init=function(){\nif(typeof __WXML_GLOBAL__===\"undefined\"||undefined===__WXML_GLOBAL__.wxs_nf_init){\nnf_init_Object();nf_init_Function();nf_init_Array();nf_init_String();nf_init_Boolean();nf_init_Number();nf_init_Math();nf_init_Date();nf_init_RegExp();\n}\nif(typeof __WXML_GLOBAL__!==\"undefined\") __WXML_GLOBAL__.wxs_nf_init=true;\n};\nvar nf_init_Object=function(){\nObject.defineProperty(Object.prototype,\"nv_constructor\",{writable:true,value:\"Object\"})\nObject.defineProperty(Object.prototype,\"nv_toString\",{writable:true,value:function(){return \"[object Object]\"}})\n}\nvar nf_init_Function=function(){\nObject.defineProperty(Function.prototype,\"nv_constructor\",{writable:true,value:\"Function\"})\nObject.defineProperty(Function.prototype,\"nv_length\",{get:function(){return this.length;},set:function(){}});\nObject.defineProperty(Function.prototype,\"nv_toString\",{writable:true,value:function(){return \"[function Function]\"}})\n}\nvar nf_init_Array=function(){\nObject.defineProperty(Array.prototype,\"nv_toString\",{writable:true,value:function(){return this.nv_join();}})\nObject.defineProperty(Array.prototype,\"nv_join\",{writable:true,value:function(s){\ns=undefined==s?',':s;\nvar r=\"\";\nfor(var i=0;i const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1} = &off_537714; // weak +const char off_52E6CD[] = { '\'', '\0', '[', '\0' }; // idb +const char off_52E79F[] = { '=', '[', ']', '\0' }; // idb +_UNKNOWN unk_52E8FC; // weak +char *WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS[4] = { "true", "false", "undefined", "null" }; // weak +_UNKNOWN unk_52F13C; // weak +_UNKNOWN unk_52F13E; // weak +_UNKNOWN unk_52F140; // weak +_UNKNOWN unk_52F142; // weak +_UNKNOWN unk_52F144; // weak +void *off_52F150 = &unk_720074; // weak +void *off_52F15A = &unk_610066; // weak +_UNKNOWN unk_52F168; // weak +void *off_52F174 = &unk_720074; // weak +void *off_52F17E = &unk_610066; // weak +_UNKNOWN unk_52F882; // weak +_UNKNOWN unk_52FB3E; // weak +_BYTE byte_52FE7E[2] = { 0, 0 }; // weak +_UNKNOWN unk_52FF8C; // weak +char byte_52FFF5[] = { '0' }; // weak +_UNKNOWN unk_530262; // weak +void *off_530836 = (void *)0x4D4100; // weak +_UNKNOWN unk_53083A; // weak +void *off_530876 = &unk_6E7553; // weak +void *off_53087A = &unk_6E6F4D; // weak +void *off_53087E = &unk_657554; // weak +void *off_530882 = &unk_646557; // weak +void *off_530886 = &unk_756854; // weak +void *off_53088A = &unk_697246; // weak +void *off_53088E = &unk_746153; // weak +void *off_5308E8 = &unk_6E614A; // weak +void *off_5308EC = &unk_626546; // weak +void *off_5308F0 = &unk_72614D; // weak +void *off_5308F4 = &unk_727041; // weak +void *off_5308F8 = &unk_6E754A; // weak +void *off_5308FC = &unk_6C754A; // weak +void *off_530900 = &unk_677541; // weak +void *off_530904 = &unk_706553; // weak +void *off_530908 = &unk_74634F; // weak +void *off_53090C = &unk_766F4E; // weak +void *off_530910 = &unk_636544; // weak +void *off_530914 = &unk_6D0025; // weak +_UNKNOWN unk_530938; // weak +void *off_53093A = (void *)0x4D0041; // weak +int (*off_530940)() = &std::wstreambuf::underflow; // weak +void *off_530946 = &unk_750053; // weak +void *off_530954 = &unk_6F004D; // weak +void *off_530962 = &unk_750054; // weak +void *off_530972 = &unk_650057; // weak +void *off_530986 = &unk_680054; // weak +void *off_530998 = &unk_720046; // weak +void *off_5309A6 = &unk_610053; // weak +void *off_5309B8 = &unk_750053; // weak +void *off_5309C0 = &unk_6F004D; // weak +void *off_5309C8 = &unk_750054; // weak +void *off_5309D0 = &unk_650057; // weak +void *off_5309D8 = &unk_680054; // weak +void *off_5309E0 = &unk_720046; // weak +void *off_5309E8 = &unk_610053; // weak +void *off_5309F0 = &unk_61004A; // weak +void *off_530A00 = &unk_650046; // weak +void *off_530A12 = &unk_61004D; // weak +void *off_530A1E = &unk_700041; // weak +void *off_530A2A = &unk_61004D; // weak +void *off_530A32 = &unk_75004A; // weak +void *off_530A3C = &unk_75004A; // weak +void *off_530A46 = &unk_750041; // weak +void *off_530A54 = &unk_650053; // weak +void *off_530A68 = &unk_63004F; // weak +void *off_530A78 = &unk_6F004E; // weak +void *off_530A8A = &unk_650044; // weak +void *off_530A9C = &unk_61004A; // weak +void *off_530AA4 = &unk_650046; // weak +void *off_530AAC = &unk_61004D; // weak +void *off_530AB4 = &unk_700041; // weak +void *off_530ABC = &unk_75004A; // weak +void *off_530AC4 = &unk_75004A; // weak +void *off_530ACC = &unk_750041; // weak +void *off_530AD4 = &unk_650053; // weak +void *off_530ADC = &unk_63004F; // weak +void *off_530AE4 = &unk_6F004E; // weak +void *off_530AEC = &unk_650044; // weak +_UNKNOWN unk_530AF4; // weak +void *off_5310E3 = &unk_647473; // weak +void *off_5314FE = &unk_6C6C75; // weak +_UNKNOWN unk_5318D8; // weak +_UNKNOWN unk_5318DA; // weak +_UNKNOWN unk_531B44; // weak +void *cplus_demangle_operators = &unk_531B44; // weak +void **off_532320 = &off_532195; // weak +char *off_532488 = "decimal32"; // weak +char *off_53249C = "decimal64"; // weak +char *off_5324B0 = "decimal128"; // weak +char *off_5324C4 = "half"; // weak +char *off_5324D8 = "char8_t"; // weak +char *off_5324EC = "char16_t"; // weak +char *off_532500 = "char32_t"; // weak +char *off_532514 = "decltype(nullptr)"; // weak +int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD) = &__dyn_tls_init; // weak +int dword_532800[22] = +{ + 0, + 3, + 5, + 7, + 10, + 12, + 14, + 17, + 19, + 21, + 24, + 26, + 28, + 31, + 33, + 35, + 38, + 40, + 42, + 45, + 47, + 49 +}; // weak +double dbl_532858[] = { 0.00781250000000009 }; // weak +int dword_53287C[7] = { 0, 5, 25, 125, 0, 0, 0 }; // weak +double dbl_532898[] = { 0.0 }; // weak +double __tens_D2A[24] = +{ + 1.0, + 10.0, + 100.0, + 1000.0, + 10000.0, + 100000.0, + 1000000.0, + 1.0e7, + 1.0e8, + 1.0e9, + 1.0e10, + 1.0e11, + 1.0e12, + 1.0e13, + 1.0e14, + 1.0e15, + 1.0e16, + 1.0e17, + 1.0e18, + 1.0e19, + 1.0e20, + 1.0e21, + 1.0e22, + 0.0 +}; // weak +double __tinytens_D2A[4] = { 1.0e-16, 1.0e-32, 1.0e-64, 1.0e-128 }; // weak +double __bigtens_D2A[4] = { 1.0e16, 1.0e32, 1.0e64, 1.0e128 }; // weak +const char Locale[2] = { '\0', '\0' }; // idb +_UNKNOWN unk_532A14; // weak +char *off_532A80 = "alnum"; // weak +__int16 word_532A84[] = { 263 }; // weak +void *off_532BD9 = (void *)0x4E614E; // weak +void *off_532BDD = &unk_666E49; // weak +void *off_532BE2 = &unk_6E0028; // weak +const char byte_532D84 = '\0'; // idb +void *off_532DA9 = (void *)0x4E614E; // weak +_UNKNOWN terminator_22562; // weak +int CSWTCH_107[6] = { 4, 1, 16, 2, 8, 0 }; // weak +char *const CSWTCH_20 = "a"; // idb +int std::money_base::_S_default_pattern = 67109634; // weak +_WORD std::`anonymous namespace'::utf16le_bom[2] = { -257, 0 }; // weak +__int16 std::`anonymous namespace'::utf8_bom = -17425; // weak +_WORD std::`anonymous namespace'::utf16_bom[2] = { -2, 0 }; // weak +char **std::locale::_S_categories = &__gnu_cxx::category_names; // weak +int *std::locale::_S_twinned_facets = &std::numpunct::id; // weak +int *const std::locale::facet::_S_c_name = (int *const)0x43; // idb +_UNKNOWN unk_533844; // weak +_UNKNOWN unk_533858; // weak +_UNKNOWN unk_53386C; // weak +_UNKNOWN unk_533880; // weak +_UNKNOWN unk_533894; // weak +_UNKNOWN unk_5338A8; // weak +_UNKNOWN unk_5338F8; // weak +_UNKNOWN unk_53390C; // weak +_UNKNOWN unk_533920; // weak +_UNKNOWN unk_533934; // weak +_UNKNOWN unk_533948; // weak +_UNKNOWN unk_53395C; // weak +_UNKNOWN unk_533970; // weak +_UNKNOWN unk_533984; // weak +_UNKNOWN unk_533998; // weak +_UNKNOWN unk_5339AC; // weak +_UNKNOWN unk_5339C0; // weak +_UNKNOWN unk_5339D4; // weak +_UNKNOWN unk_5339E8; // weak +_UNKNOWN unk_5339FC; // weak +_UNKNOWN unk_533A4C; // weak +_UNKNOWN unk_533A60; // weak +_UNKNOWN unk_533A74; // weak +_UNKNOWN unk_533A88; // weak +_UNKNOWN unk_533A9C; // weak +_UNKNOWN unk_533AB0; // weak +_UNKNOWN unk_533B00; // weak +_UNKNOWN unk_533B14; // weak +_UNKNOWN unk_533B28; // weak +_UNKNOWN unk_533B3C; // weak +_UNKNOWN unk_533B50; // weak +_UNKNOWN unk_533B64; // weak +_UNKNOWN unk_533B78; // weak +_UNKNOWN unk_533B8C; // weak +_UNKNOWN unk_533BA0; // weak +_UNKNOWN unk_533BB4; // weak +_UNKNOWN unk_533BC8; // weak +_UNKNOWN unk_533BDC; // weak +_UNKNOWN unk_533BF0; // weak +_UNKNOWN unk_533C04; // weak +int *`typeinfo for'__cxxabiv1::__forced_unwind = &off_537714; // weak +int *`typeinfo for'__cxxabiv1::__foreign_exception = &off_537714; // weak +int *`typeinfo for'WXML::DOMLib::ParseException = &off_537714; // weak +int *`typeinfo for'WXML::DOMLib::RenderException = &off_537714; // weak +int *`typeinfo for'__gnu_cxx::recursive_init_error = &off_537754; // weak +int *`typeinfo for'__gnu_cxx::__concurrence_lock_error = &off_537754; // weak +int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error = &off_537754; // weak +int *`typeinfo for'std::locale::facet::__shim = &off_537714; // weak +int *`typeinfo for'std::locale::facet = &off_537714; // weak +int *`typeinfo for'std::moneypunct = &off_537780; // weak +int *`typeinfo for'std::moneypunct = &off_537780; // weak +int *`typeinfo for'std::moneypunct = &off_537780; // weak +int *`typeinfo for'std::moneypunct = &off_537780; // weak +int *`typeinfo for'std::string = &off_537714; // weak +int *`typeinfo for'std::collate = &off_537754; // weak +int *`typeinfo for'std::collate = &off_537754; // weak +int *`typeinfo for'std::messages = &off_537780; // weak +int *`typeinfo for'std::messages = &off_537780; // weak +int *`typeinfo for'std::numpunct = &off_537754; // weak +int *`typeinfo for'std::numpunct = &off_537754; // weak +int *`typeinfo for'std::time_get> = &off_537780; // weak +int *`typeinfo for'std::time_get> = &off_537780; // weak +int *`typeinfo for'std::money_get> = &off_537754; // weak +int *`typeinfo for'std::money_get> = &off_537754; // weak +int *`typeinfo for'std::money_put> = &off_537754; // weak +int *`typeinfo for'std::money_put> = &off_537754; // weak +int *`typeinfo for'std::ios_base::failure = &off_537754; // weak +int `typeinfo for'std::bad_typeid = 5470036; // weak +int *`typeinfo for'std::moneypunct = &off_537780; // weak +int *`typeinfo for'std::moneypunct = &off_537780; // weak +int *`typeinfo for'std::moneypunct = &off_537780; // weak +int *`typeinfo for'std::moneypunct = &off_537780; // weak +int *`typeinfo for'std::__timepunct = &off_537754; // weak +int *`typeinfo for'std::__timepunct = &off_537754; // weak +int *`typeinfo for'std::logic_error = &off_537754; // weak +int *`typeinfo for'std::range_error = &off_537754; // weak +int *`typeinfo for'std::domain_error = &off_537754; // weak +int *`typeinfo for'std::length_error = &off_537754; // weak +int *`typeinfo for'std::out_of_range = &off_537754; // weak +int *`typeinfo for'std::system_error = &off_537754; // weak +int *`typeinfo for'std::__ios_failure = &off_538DD0; // weak +int *`typeinfo for'std::bad_exception = &off_537754; // weak +int *`typeinfo for'std::runtime_error = &off_537754; // weak +int *`typeinfo for'std::overflow_error = &off_537754; // weak +int *`typeinfo for'std::underflow_error = &off_537754; // weak +int *`typeinfo for'std::invalid_argument = &off_537754; // weak +int *`typeinfo for'std::bad_function_call = &off_537754; // weak +int *`typeinfo for'std::_Sp_make_shared_tag = &off_537714; // weak +int *`typeinfo for'std::bad_array_new_length = &off_537754; // weak +int *`typeinfo for'std::ctype = &off_537780; // weak +int *`typeinfo for'std::ctype = &off_537754; // weak +int *`typeinfo for'std::codecvt = &off_537754; // weak +int *`typeinfo for'std::codecvt = &off_537754; // weak +int *`typeinfo for'std::collate = &off_537754; // weak +int *`typeinfo for'std::collate = &off_537754; // weak +int *`typeinfo for'std::num_get> = &off_537754; // weak +int *`typeinfo for'std::num_get> = &off_537754; // weak +int *`typeinfo for'std::num_put> = &off_537754; // weak +int *`typeinfo for'std::num_put> = &off_537754; // weak +int *`typeinfo for'std::bad_cast = &off_537754; // weak +int *`typeinfo for'std::messages = &off_537780; // weak +int *`typeinfo for'std::messages = &off_537780; // weak +int *`typeinfo for'std::numpunct = &off_537754; // weak +int *`typeinfo for'std::numpunct = &off_537754; // weak +int *`typeinfo for'std::time_get> = &off_537780; // weak +int *`typeinfo for'std::time_get> = &off_537780; // weak +int *`typeinfo for'std::time_put> = &off_537754; // weak +int *`typeinfo for'std::time_put> = &off_537754; // weak +int *`typeinfo for'std::bad_alloc = &off_537754; // weak +int *`typeinfo for'std::money_get> = &off_537754; // weak +int *`typeinfo for'std::money_get> = &off_537754; // weak +int *`typeinfo for'std::money_put> = &off_537754; // weak +int *`typeinfo for'std::money_put> = &off_537754; // weak +void (__cdecl *off_537714)(__cxxabiv1::__class_type_info *__hidden this) = &__cxxabiv1::__class_type_info::~__class_type_info; // weak +void (__cdecl *off_537754)(__cxxabiv1::__si_class_type_info *__hidden this) = &__cxxabiv1::__si_class_type_info::~__si_class_type_info; // weak +void (__cdecl *off_537780)(__cxxabiv1::__vmi_class_type_info *__hidden this) = &__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info; // weak +void (__cdecl *off_5377AC)(_anonymous_namespace_::io_error_category *__hidden this) = &`anonymous namespace'::io_error_category::~io_error_category; // weak +void (__cdecl *off_537824)(WXML::EXPRLib::NonTerminal *__hidden this) = &WXML::EXPRLib::NonTerminal::~NonTerminal; // weak +void (__cdecl *off_53784C)(WXML::EXPRLib::Action *__hidden this) = &WXML::EXPRLib::Action::~Action; // weak +void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this) = &WXML::EXPRLib::Terminal::~Terminal; // weak +int (*off_537874)() = &__gnu_cxx::stdio_filebuf::~stdio_filebuf; // weak +int (*off_5378B4)() = &__gnu_cxx::stdio_filebuf::~stdio_filebuf; // weak +int (*off_5378F4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak +int (*off_537934)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak +void (__cdecl *off_537974)(__gnu_cxx::recursive_init_error *__hidden this) = &__gnu_cxx::recursive_init_error::~recursive_init_error; // weak +void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this) = &__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error; // weak +void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this) = &__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error; // weak +int (*off_5379B0)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak +int (*off_5379CC)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak +int (*off_5379E8)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak +int (*off_537A04)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak +int (*off_537A20)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak +int (*off_537A3C)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak +int (*off_537A58)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak +int (*off_537A74)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak +int (*off_537A90)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak +int (*off_537AB4)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak +int (*off_537AD8)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak +int (*off_537AFC)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak +int (*off_537B20)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak +int (*off_537B48)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak +int (*off_537B74)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak +int (*off_537B9C)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak +int (*off_537BC8)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak +int (*off_537BE0)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak +int (*off_537BF8)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak +int (*off_537C10)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak +int (*off_537C28)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak +int (*off_537C40)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak +int (*off_537C58)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak +int (*off_537C70)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak +int (*off_537C88)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_537CBC)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_537CF0)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_537D24)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_537D58)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_537D8C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_537DC0)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_537DF4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_537E60)() = &std::moneypunct::~moneypunct; // weak +int (*off_537E94)() = &std::moneypunct::~moneypunct; // weak +int (*off_537EC8)() = &std::moneypunct::~moneypunct; // weak +int (*off_537EFC)() = &std::moneypunct::~moneypunct; // weak +int (*off_537F30)() = &std::collate_byname::~collate_byname; // weak +int (*off_537F4C)() = &std::collate_byname::~collate_byname; // weak +int (*off_537F68)() = &std::stringbuf::~stringbuf; // weak +int (*off_537FA8)() = &std::wstringbuf::~wstringbuf; // weak +int (*off_537FE8)() = &std::messages_byname::~messages_byname; // weak +int (*off_538004)() = &std::messages_byname::~messages_byname; // weak +int (*off_538020)() = &std::numpunct_byname::~numpunct_byname; // weak +int (*off_538044)() = &std::numpunct_byname::~numpunct_byname; // weak +int (*off_538068)() = &std::time_get_byname>::~time_get_byname; // weak +int (*off_538094)() = &std::time_get_byname>::~time_get_byname; // weak +int (*off_5380C0)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_5380F4)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_538128)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_53815C)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_538194)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak +int (*off_5381A8[2])() = +{ + &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, + &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream +}; // weak +int (*off_5381BC[2])() = +{ + &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, + &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream +}; // weak +int (*off_5381D0)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak +int (*off_5381E4[2])() = +{ + &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, + &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream +}; // weak +int (*off_5381F8[2])() = +{ + &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, + &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream +}; // weak +int (*off_53820C)() = &std::istringstream::~istringstream; // weak +int (*off_538220[2])() = +{ + &`virtual thunk to'std::istringstream::~istringstream, + &`virtual thunk to'std::istringstream::~istringstream +}; // weak +int (*off_538234)() = &std::wistringstream::~wistringstream; // weak +int (*off_538248[2])() = +{ + &`virtual thunk to'std::wistringstream::~wistringstream, + &`virtual thunk to'std::wistringstream::~wistringstream +}; // weak +int (*off_53825C)() = &std::ostringstream::~ostringstream; // weak +int (*off_538270[2])() = +{ + &`virtual thunk to'std::ostringstream::~ostringstream, + &`virtual thunk to'std::ostringstream::~ostringstream +}; // weak +int (*off_538284)() = &std::wostringstream::~wostringstream; // weak +int (*off_538298[2])() = +{ + &`virtual thunk to'std::wostringstream::~wostringstream, + &`virtual thunk to'std::wostringstream::~wostringstream +}; // weak +int (*off_5382A8)() = &std::collate::~collate; // weak +int (*off_5382C4)() = &std::collate::~collate; // weak +int (*off_5382E0)() = &std::messages::~messages; // weak +int (*off_5382FC)() = &std::messages::~messages; // weak +int (*off_538318)() = &std::numpunct::~numpunct; // weak +int (*off_53833C)() = &std::numpunct::~numpunct; // weak +int (*off_538360)() = &std::time_get>::~time_get; // weak +int (*off_53838C)() = &std::time_get>::~time_get; // weak +int (*off_5383B8)() = &std::money_get>::~money_get; // weak +int (*off_5383D0)() = &std::money_get>::~money_get; // weak +int (*off_5383E8)() = &std::money_put>::~money_put; // weak +int (*off_538400)() = &std::money_put>::~money_put; // weak +int (*off_538418)() = &std::ios_base::failure[abi:cxx11]::~failure; // weak +void (__cdecl *off_53842C)(std::ios_base::failure *__hidden this) = &std::ios_base::failure::~failure; // weak +void (__cdecl *off_538444)(std::iostream *__hidden this) = &std::iostream::~iostream; // weak +void (__cdecl *off_538458[2])(std::iostream *__hidden this) = +{ + &`non-virtual thunk to'std::iostream::~iostream, + &`non-virtual thunk to'std::iostream::~iostream +}; // weak +void (__cdecl *off_53846C[2])(std::iostream *__hidden this) = +{ + &`virtual thunk to'std::iostream::~iostream, + &`virtual thunk to'std::iostream::~iostream +}; // weak +void (__cdecl *off_538480)(std::istream *__hidden this) = &std::istream::~istream; // weak +void (__cdecl *off_538494[2])(std::istream *__hidden this) = +{ + &`virtual thunk to'std::istream::~istream, + &`virtual thunk to'std::istream::~istream +}; // weak +void (__cdecl *off_5384A8)(std::ostream *__hidden this) = &std::ostream::~ostream; // weak +void (__cdecl *off_5384BC[2])(std::ostream *__hidden this) = +{ + &`virtual thunk to'std::ostream::~ostream, + &`virtual thunk to'std::ostream::~ostream +}; // weak +void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this) = &std::bad_typeid::~bad_typeid; // weak +int (*off_5384E0)() = &std::moneypunct::~moneypunct; // weak +int (*off_538514)() = &std::moneypunct::~moneypunct; // weak +int (*off_538548)() = &std::moneypunct::~moneypunct; // weak +int (*off_53857C)() = &std::moneypunct::~moneypunct; // weak +int (*off_5385B0)() = &std::__timepunct::~__timepunct; // weak +int (*off_5385C0)() = &std::__timepunct::~__timepunct; // weak +void (__cdecl *off_5385D0)(std::logic_error *__hidden this) = &std::logic_error::~logic_error; // weak +void (__cdecl *off_5385E4)(std::range_error *__hidden this) = &std::range_error::~range_error; // weak +int (*off_5385F8)() = &std::ctype_byname::~ctype_byname; // weak +int (*off_538628)() = &std::ctype_byname::~ctype_byname; // weak +void (__cdecl *off_538668)(std::domain_error *__hidden this) = &std::domain_error::~domain_error; // weak +void (__cdecl *off_53867C)(std::length_error *__hidden this) = &std::length_error::~length_error; // weak +void (__cdecl *off_538690)(std::out_of_range *__hidden this) = &std::out_of_range::~out_of_range; // weak +void (__cdecl *off_5386A4)(std::system_error *__hidden this) = &std::system_error::~system_error; // weak +void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this) = &std::__ios_failure::~__ios_failure; // weak +void (__cdecl *off_5386CC)(std::bad_exception *__hidden this) = &std::bad_exception::~bad_exception; // weak +int (*off_5386E0)() = &std::filebuf::~filebuf; // weak +int (*off_538720)() = &std::wfilebuf::~wfilebuf; // weak +int (*off_538764)() = &std::fstream::~fstream; // weak +int (*off_538778[2])() = +{ + &`non-virtual thunk to'std::fstream::~fstream, + &`non-virtual thunk to'std::fstream::~fstream +}; // weak +int (*off_53878C[2])() = +{ + &`virtual thunk to'std::fstream::~fstream, + &`virtual thunk to'std::fstream::~fstream +}; // weak +int (*off_5387A0)() = &std::wfstream::~wfstream; // weak +int (*off_5387B4[2])() = +{ + &`non-virtual thunk to'std::wfstream::~wfstream, + &`non-virtual thunk to'std::wfstream::~wfstream +}; // weak +int (*off_5387C8[2])() = +{ + &`virtual thunk to'std::wfstream::~wfstream, + &`virtual thunk to'std::wfstream::~wfstream +}; // weak +int (*off_5387DC)() = &std::wistream::~wistream; // weak +int (*off_5387F0[2])() = +{ + &`virtual thunk to'std::wistream::~wistream, + &`virtual thunk to'std::wistream::~wistream +}; // weak +int (*off_538804)() = &std::wostream::~wostream; // weak +int (*off_538818[2])() = +{ + &`virtual thunk to'std::wostream::~wostream, + &`virtual thunk to'std::wostream::~wostream +}; // weak +void (__cdecl *off_538828)(std::runtime_error *__hidden this) = &std::runtime_error::~runtime_error; // weak +int (*off_538840)() = &std::ifstream::~ifstream; // weak +int (*off_538854[2])() = +{ + &`virtual thunk to'std::ifstream::~ifstream, + &`virtual thunk to'std::ifstream::~ifstream +}; // weak +int (*off_538868)() = &std::wifstream::~wifstream; // weak +int (*off_53887C[2])() = +{ + &`virtual thunk to'std::wifstream::~wifstream, + &`virtual thunk to'std::wifstream::~wifstream +}; // weak +int (*off_538890)() = &std::wiostream::~basic_iostream; // weak +int (*off_5388A4[2])() = +{ + &`non-virtual thunk to'std::wiostream::~basic_iostream, + &`non-virtual thunk to'std::wiostream::~basic_iostream +}; // weak +int (*off_5388B8[2])() = +{ + &`virtual thunk to'std::wiostream::~basic_iostream, + &`virtual thunk to'std::wiostream::~basic_iostream +}; // weak +int (*off_5388CC)() = &std::ofstream::~ofstream; // weak +int (*off_5388E0[2])() = +{ + &`virtual thunk to'std::ofstream::~ofstream, + &`virtual thunk to'std::ofstream::~ofstream +}; // weak +int (*off_5388F4)() = &std::wofstream::~wofstream; // weak +int (*off_538908[2])() = +{ + &`virtual thunk to'std::wofstream::~wofstream, + &`virtual thunk to'std::wofstream::~wofstream +}; // weak +int (*off_538918)() = &std::codecvt_byname::~codecvt_byname; // weak +int (*off_538944)() = &std::codecvt_byname::~codecvt_byname; // weak +int (*off_538970)() = &std::collate_byname::~collate_byname; // weak +int (*off_53898C)() = &std::collate_byname::~collate_byname; // weak +void (__cdecl *off_5389A8)(std::overflow_error *__hidden this) = &std::overflow_error::~overflow_error; // weak +int (*off_538A10)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak +int (*off_538A2C)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak +int (*off_538A48)() = &std::streambuf::~streambuf; // weak +int (*off_538A88)() = &std::wstreambuf::~wstreambuf; // weak +int (*off_538AC8)() = &std::messages_byname::~messages_byname; // weak +int (*off_538AE4)() = &std::messages_byname::~messages_byname; // weak +int (*off_538B00)() = &std::numpunct_byname::~numpunct_byname; // weak +int (*off_538B24)() = &std::numpunct_byname::~numpunct_byname; // weak +int (*off_538B48)() = &std::time_get_byname>::~time_get_byname; // weak +int (*off_538B70)() = &std::time_get_byname>::~time_get_byname; // weak +int (*off_538B98)() = &std::time_put_byname>::~time_put_byname; // weak +int (*off_538BAC)() = &std::time_put_byname>::~time_put_byname; // weak +void (__cdecl *off_538BC0)(std::underflow_error *__hidden this) = &std::underflow_error::~underflow_error; // weak +int (*off_538BD4)() = &std::__numpunct_cache::~__numpunct_cache; // weak +int (*off_538BE4)() = &std::__numpunct_cache::~__numpunct_cache; // weak +void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this) = &std::invalid_argument::~invalid_argument; // weak +int (*off_538C08)() = &std::__timepunct_cache::~__timepunct_cache; // weak +int (*off_538C18)() = &std::__timepunct_cache::~__timepunct_cache; // weak +void (__cdecl *off_538C28)(std::bad_function_call *__hidden this) = &std::bad_function_call::~bad_function_call; // weak +int (*off_538C3C)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_538C70)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_538CA4)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_538CD8)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_538D0C)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak +int (*off_538D1C)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak +int (*off_538D2C)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak +int (*off_538D3C)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak +int (*off_538DA4)() = &std::__codecvt_utf8_base::~__codecvt_utf8_base; // weak +void (__cdecl *off_538DD0)(std::__iosfail_type_info *__hidden this) = &std::__iosfail_type_info::~__iosfail_type_info; // weak +int (*off_538E54)() = &std::__codecvt_utf16_base::~__codecvt_utf16_base; // weak +void (__cdecl *off_538E80)(std::bad_array_new_length *__hidden this) = &std::bad_array_new_length::~bad_array_new_length; // weak +_UNKNOWN unk_538ED4; // weak +int (*off_538F14)() = &std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace; // weak +_UNKNOWN unk_538F30; // weak +_UNKNOWN unk_538F5C; // weak +_UNKNOWN unk_538F88; // weak +_UNKNOWN unk_538FB4; // weak +_UNKNOWN unk_538FE0; // weak +_UNKNOWN unk_53900C; // weak +int (*off_539090)() = &std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base; // weak +int (*off_5390BC)() = &std::ctype::~ctype; // weak +int (*off_5390EC)() = &std::ctype::~ctype; // weak +int (*off_53912C)() = &std::codecvt::~codecvt; // weak +int (*off_539158)() = &std::codecvt::~codecvt; // weak +int (*off_539184)() = &std::codecvt::~codecvt; // weak +int (*off_5391B0)() = &std::codecvt::~codecvt; // weak +int (*off_5391DC)() = &std::codecvt::~codecvt; // weak +int (*off_539208)() = &std::codecvt::~codecvt; // weak +int (*off_539234)() = &std::collate::~collate; // weak +int (*off_539250)() = &std::collate::~collate; // weak +int (*off_53926C)() = &std::num_get>::~num_get; // weak +int (*off_5392A8)() = &std::num_get>::~num_get; // weak +int (*off_5392E4)() = &std::num_put>::~num_put; // weak +int (*off_539314)() = &std::num_put>::~num_put; // weak +void (__cdecl *off_539344)(std::bad_cast *__hidden this) = &std::bad_cast::~bad_cast; // weak +void (__cdecl *off_539358)(std::ios_base *__hidden this) = &std::ios_base::~ios_base; // weak +int (*off_539368)() = &std::messages::~messages; // weak +int (*off_539384)() = &std::messages::~messages; // weak +int (*off_5393A0)() = &std::numpunct::~numpunct; // weak +int (*off_5393C4)() = &std::numpunct::~numpunct; // weak +int (*off_5393E8)() = &std::time_get>::~time_get; // weak +int (*off_539410)() = &std::time_get>::~time_get; // weak +int (*off_539438)() = &std::time_put>::~time_put; // weak +int (*off_53944C)() = &std::time_put>::~time_put; // weak +void (__cdecl *off_539460)(std::bad_alloc *__hidden this) = &std::bad_alloc::~bad_alloc; // weak +int (*off_539474)() = &std::ios::~ios; // weak +int (*off_539484)() = &std::wios::~wios; // weak +int (*off_5394A8)() = &std::money_get>::~money_get; // weak +int (*off_5394C0)() = &std::money_get>::~money_get; // weak +int (*off_5394D8)() = &std::money_put>::~money_put; // weak +int (*off_5394F0)() = &std::money_put>::~money_put; // weak +_UNKNOWN std::_Sp_make_shared_tag::_S_ti(void)::__tag; // weak +_UNKNOWN std::ctype::classic_table(void)::_S_classic_table; // weak +_UNKNOWN __EH_FRAME_BEGIN__; // weak +char **_bss_start__; // idb +int _argc; // idb +_UNKNOWN obj; // weak +_UNKNOWN WXML::GlassEaselWxs::sWxsEnvInit; // weak +_UNKNOWN WXML::GlassEaselWxs::sGenFuncDeepCopy; // weak +char *WXML::GlassEaselWxs::sWrapper; // idb +_UNKNOWN WXML::GlassEaselWxs::sGitHash; // weak +_UNKNOWN night::NS_BUILTIN_TYPE; // weak +_UNKNOWN night::NS_BUILTIN_KW; // weak +_UNKNOWN night::NS_BUILTIN_SPACE; // weak +_UNKNOWN night::NS_BUILTIN_PUNC; // weak +_UNKNOWN night::NS_BUILTIN_ALL_OP; // weak +_UNKNOWN night::NS_BUILTIN_OP_SELF; // weak +_UNKNOWN night::NS_BUILTIN_OP; // weak +_UNKNOWN night::NS_TYPE_CALL; // weak +_UNKNOWN night::NS_TYPE_FUNC; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak +_UNKNOWN night::NS_TYPE_PROG; // weak +_UNKNOWN night::NS_TYPE_SWITCH; // weak +_UNKNOWN night::NS_TYPE_DO_WHILE; // weak +_UNKNOWN night::NS_TYPE_WHILE; // weak +_UNKNOWN night::NS_TYPE_FOR; // weak +_UNKNOWN night::NS_TYPE_IF; // weak +_UNKNOWN night::NS_TYPE_BRACKET; // weak +_UNKNOWN night::NS_TYPE_ARRAY; // weak +_UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak +_UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak +_UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak +_UNKNOWN night::NS_TYPE_OBJ_DOT; // weak +_UNKNOWN night::NS_TYPE_K_V; // weak +_UNKNOWN night::NS_TYPE_TERNARY; // weak +_UNKNOWN night::NS_TYPE_ASSIGN; // weak +_UNKNOWN night::NS_TYPE_BINARY; // weak +_UNKNOWN night::NS_TYPE_OP_SELF; // weak +_UNKNOWN night::NS_TYPE_OP; // weak +_UNKNOWN night::NS_TYPE_PUNC; // weak +_UNKNOWN night::NS_TYPE_KW; // weak +_UNKNOWN night::NS_TYPE_B_TYPE; // weak +_UNKNOWN night::NS_TYPE_NUM; // weak +_UNKNOWN night::NS_TYPE_STR; // weak +_UNKNOWN night::NS_TYPE_VAR; // weak +_UNKNOWN night::NS_TYPE_BOOL; // weak +_UNKNOWN night::NS_TYPE_SKIP; // weak +_UNKNOWN night::nst_; // weak +_UNKNOWN night::nsv_; // weak +_UNKNOWN WXML::RPX::acceptNum(char const*,int &)::nextPos; // weak +int dword_5834EC; // weak +int dword_5834F4; // weak +int dword_5834F8; // weak +int dword_583500[264]; // weak +int dword_583920; // weak +int dword_583928[264]; // weak +int dword_583D48; // weak +int dword_583D50[266]; // weak +int dword_584178[266]; // weak +int dword_5845A0[218]; // weak +char WXML::RPX::acceptNum(char const*,int &)::inited; // weak +_UNKNOWN WXML::RPX::acceptStr(char const*,int &)::nextPos; // weak +int dword_5849A8; // weak +int dword_5849BC; // weak +int dword_584D48[34]; // weak +int dword_584DD0; // weak +int dword_584EB8; // weak +int dword_585170[39]; // weak +int dword_58520C; // weak +int dword_5852E0; // weak +int dword_585598[266]; // weak +int dword_5859C0[532]; // weak +char WXML::RPX::acceptStr(char const*,int &)::inited; // weak +_UNKNOWN WXML::RPX::acceptID(char const*,int &)::nextPos; // weak +int dword_586324[30]; // weak +int dword_58639C; // weak +int dword_5863A4[217]; // weak +int dword_586708; // weak +int dword_58670C; // weak +int dword_586710; // weak +int dword_586714; // weak +int dword_586718; // weak +int dword_58671C; // weak +int dword_586720; // weak +int dword_586724; // weak +int dword_586728; // weak +int dword_58672C; // weak +int dword_58674C[30]; // weak +int dword_5867C4; // weak +int dword_5867CC[169]; // weak +char WXML::RPX::acceptID(char const*,int &)::inited; // weak +_UNKNOWN night::std_v_v_n; // weak +_UNKNOWN night::std_v_n; // weak +int night::NS_BUILTIN_TYPE[6]; // weak +int night::NS_BUILTIN_KW[6]; // weak +int night::NS_BUILTIN_SPACE[6]; // weak +int night::NS_BUILTIN_PUNC[6]; // weak +int night::NS_BUILTIN_ALL_OP[6]; // weak +_UNKNOWN night::NS_BUILTIN_OP_SELF; // weak +int night::NS_BUILTIN_OP[6]; // weak +_UNKNOWN night::NS_TYPE_CALL; // weak +_UNKNOWN night::NS_TYPE_FUNC; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak +_UNKNOWN night::NS_TYPE_PROG; // weak +_UNKNOWN night::NS_TYPE_SWITCH; // weak +_UNKNOWN night::NS_TYPE_DO_WHILE; // weak +_UNKNOWN night::NS_TYPE_WHILE; // weak +_UNKNOWN night::NS_TYPE_FOR; // weak +_UNKNOWN night::NS_TYPE_IF; // weak +_UNKNOWN night::NS_TYPE_BRACKET; // weak +_UNKNOWN night::NS_TYPE_ARRAY; // weak +_UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak +_UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak +_UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak +_UNKNOWN night::NS_TYPE_OBJ_DOT; // weak +_UNKNOWN night::NS_TYPE_K_V; // weak +_UNKNOWN night::NS_TYPE_TERNARY; // weak +_UNKNOWN night::NS_TYPE_ASSIGN; // weak +_UNKNOWN night::NS_TYPE_BINARY; // weak +_UNKNOWN night::NS_TYPE_OP_SELF; // weak +_UNKNOWN night::NS_TYPE_OP; // weak +_UNKNOWN night::NS_TYPE_PUNC; // weak +_UNKNOWN night::NS_TYPE_KW; // weak +_UNKNOWN night::NS_TYPE_B_TYPE; // weak +_UNKNOWN night::NS_TYPE_NUM; // weak +_UNKNOWN night::NS_TYPE_STR; // weak +_UNKNOWN night::NS_TYPE_VAR; // weak +_UNKNOWN night::NS_TYPE_BOOL; // weak +_UNKNOWN night::NS_TYPE_SKIP; // weak +_UNKNOWN night::nst_; // weak +void *night::nsv_; // weak +int dword_586E44; // weak +_UNKNOWN night::NS_BUILTIN_TYPE; // weak +_UNKNOWN night::NS_BUILTIN_KW; // weak +_UNKNOWN night::NS_BUILTIN_SPACE; // weak +_UNKNOWN night::NS_BUILTIN_PUNC; // weak +_UNKNOWN night::NS_BUILTIN_ALL_OP; // weak +_UNKNOWN night::NS_BUILTIN_OP_SELF; // weak +_UNKNOWN night::NS_BUILTIN_OP; // weak +_UNKNOWN night::NS_TYPE_CALL; // weak +_UNKNOWN night::NS_TYPE_FUNC; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak +_UNKNOWN night::NS_TYPE_PROG; // weak +_UNKNOWN night::NS_TYPE_SWITCH; // weak +_UNKNOWN night::NS_TYPE_DO_WHILE; // weak +_UNKNOWN night::NS_TYPE_WHILE; // weak +_UNKNOWN night::NS_TYPE_FOR; // weak +_UNKNOWN night::NS_TYPE_IF; // weak +_UNKNOWN night::NS_TYPE_BRACKET; // weak +_UNKNOWN night::NS_TYPE_ARRAY; // weak +_UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak +_UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak +_UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak +_UNKNOWN night::NS_TYPE_OBJ_DOT; // weak +_UNKNOWN night::NS_TYPE_K_V; // weak +_UNKNOWN night::NS_TYPE_TERNARY; // weak +_UNKNOWN night::NS_TYPE_ASSIGN; // weak +_UNKNOWN night::NS_TYPE_BINARY; // weak +_UNKNOWN night::NS_TYPE_OP_SELF; // weak +_UNKNOWN night::NS_TYPE_OP; // weak +_UNKNOWN night::NS_TYPE_PUNC; // weak +_UNKNOWN night::NS_TYPE_KW; // weak +_UNKNOWN night::NS_TYPE_B_TYPE; // weak +_UNKNOWN night::NS_TYPE_NUM; // weak +_UNKNOWN night::NS_TYPE_STR; // weak +_UNKNOWN night::NS_TYPE_VAR; // weak +_UNKNOWN night::NS_TYPE_BOOL; // weak +_UNKNOWN night::NS_TYPE_SKIP; // weak +_UNKNOWN night::nst_; // weak +_UNKNOWN night::nsv_; // weak +_UNKNOWN night::NS_BUILTIN_TYPE; // weak +_UNKNOWN night::NS_BUILTIN_KW; // weak +_UNKNOWN night::NS_BUILTIN_SPACE; // weak +_UNKNOWN night::NS_BUILTIN_PUNC; // weak +_UNKNOWN night::NS_BUILTIN_ALL_OP; // weak +_UNKNOWN night::NS_BUILTIN_OP_SELF; // weak +_UNKNOWN night::NS_BUILTIN_OP; // weak +_UNKNOWN night::NS_TYPE_CALL; // weak +_UNKNOWN night::NS_TYPE_FUNC; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak +_UNKNOWN night::NS_TYPE_PROG; // weak +_UNKNOWN night::NS_TYPE_SWITCH; // weak +_UNKNOWN night::NS_TYPE_DO_WHILE; // weak +_UNKNOWN night::NS_TYPE_WHILE; // weak +_UNKNOWN night::NS_TYPE_FOR; // weak +_UNKNOWN night::NS_TYPE_IF; // weak +_UNKNOWN night::NS_TYPE_BRACKET; // weak +_UNKNOWN night::NS_TYPE_ARRAY; // weak +_UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak +_UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak +_UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak +_UNKNOWN night::NS_TYPE_OBJ_DOT; // weak +_UNKNOWN night::NS_TYPE_K_V; // weak +_UNKNOWN night::NS_TYPE_TERNARY; // weak +_UNKNOWN night::NS_TYPE_ASSIGN; // weak +_UNKNOWN night::NS_TYPE_BINARY; // weak +_UNKNOWN night::NS_TYPE_OP_SELF; // weak +_UNKNOWN night::NS_TYPE_OP; // weak +_UNKNOWN night::NS_TYPE_PUNC; // weak +_UNKNOWN night::NS_TYPE_KW; // weak +_UNKNOWN night::NS_TYPE_B_TYPE; // weak +_UNKNOWN night::NS_TYPE_NUM; // weak +_UNKNOWN night::NS_TYPE_STR; // weak +_UNKNOWN night::NS_TYPE_VAR; // weak +_UNKNOWN night::NS_TYPE_BOOL; // weak +_UNKNOWN night::NS_TYPE_SKIP; // weak +_UNKNOWN night::nst_; // weak +_UNKNOWN night::nsv_; // weak +_UNKNOWN night::NS_BUILTIN_TYPE; // weak +_UNKNOWN night::NS_BUILTIN_KW; // weak +_UNKNOWN night::NS_BUILTIN_SPACE; // weak +_UNKNOWN night::NS_BUILTIN_PUNC; // weak +_UNKNOWN night::NS_BUILTIN_ALL_OP; // weak +_UNKNOWN night::NS_BUILTIN_OP_SELF; // weak +_UNKNOWN night::NS_BUILTIN_OP; // weak +_UNKNOWN night::NS_TYPE_CALL; // weak +_UNKNOWN night::NS_TYPE_FUNC; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM_REQUIRE; // weak +_UNKNOWN night::NS_TYPE_PROG_NO_SEM; // weak +_UNKNOWN night::NS_TYPE_PROG; // weak +_UNKNOWN night::NS_TYPE_SWITCH; // weak +_UNKNOWN night::NS_TYPE_DO_WHILE; // weak +_UNKNOWN night::NS_TYPE_WHILE; // weak +_UNKNOWN night::NS_TYPE_FOR; // weak +_UNKNOWN night::NS_TYPE_IF; // weak +_UNKNOWN night::NS_TYPE_BRACKET; // weak +_UNKNOWN night::NS_TYPE_ARRAY; // weak +_UNKNOWN night::NS_TYPE_OBJ_BLOCK; // weak +_UNKNOWN night::NS_TYPE_OBJ_SELF_OP; // weak +_UNKNOWN night::NS_TYPE_OBJ_PROPERTY; // weak +_UNKNOWN night::NS_TYPE_OBJ_DOT; // weak +_UNKNOWN night::NS_TYPE_K_V; // weak +_UNKNOWN night::NS_TYPE_TERNARY; // weak +_UNKNOWN night::NS_TYPE_ASSIGN; // weak +_UNKNOWN night::NS_TYPE_BINARY; // weak +_UNKNOWN night::NS_TYPE_OP_SELF; // weak +_UNKNOWN night::NS_TYPE_OP; // weak +_UNKNOWN night::NS_TYPE_PUNC; // weak +_UNKNOWN night::NS_TYPE_KW; // weak +_UNKNOWN night::NS_TYPE_B_TYPE; // weak +_UNKNOWN night::NS_TYPE_NUM; // weak +_UNKNOWN night::NS_TYPE_STR; // weak +_UNKNOWN night::NS_TYPE_VAR; // weak +_UNKNOWN night::NS_TYPE_BOOL; // weak +_UNKNOWN night::NS_TYPE_SKIP; // weak +_UNKNOWN night::nst_; // weak +_UNKNOWN night::nsv_; // weak +int WXML::NameAllocator::ALPAHBETLEN; // weak +int WXML::DOMLib::WXMLDom::componentCnt; // weak +int WXML::DOMLib::Machine::STT[]; // weak +int dword_587964; // weak +int dword_587974; // weak +int dword_587984; // weak +int dword_5879DC; // weak +int dword_5879E0; // weak +int WXML::DOMLib::Machine::TT[]; // weak +int dword_588D60[]; // weak +int dword_588D64; // weak +int dword_588E54; // weak +int dword_588F50; // weak +int dword_589164; // weak +int dword_589168[33]; // weak +int dword_5891EC; // weak +int dword_589224; // weak +int dword_589344; // weak +int dword_589568; // weak +int dword_58956C[34]; // weak +int dword_5895F4; // weak +int dword_589608; // weak +int dword_589628; // weak +int dword_58965C; // weak +int dword_589660; // weak +int dword_589664; // weak +int dword_58996C; // weak +int dword_589970[34]; // weak +int dword_5899F8; // weak +int dword_589A2C; // weak +int dword_589A64; // weak +int dword_589A68; // weak +int dword_589D70; // weak +int dword_589D74; // weak +int dword_589D9C; // weak +int dword_589DFC; // weak +int dword_589EE4; // weak +int dword_58A174; // weak +int dword_58A178[]; // weak +int dword_58A200; // weak +int dword_58A214; // weak +int dword_58A578; // weak +int dword_58A5A4; // weak +int dword_58A97C; // weak +int dword_58AD84; // weak +int dword_58ADAC; // weak +int dword_58AE20; // weak +int dword_58AEF4; // weak +int dword_58B184; // weak +int dword_58B1B0; // weak +int dword_58B588; // weak +int dword_58B58C; // weak +int dword_58B614; // weak +int dword_58B6FC; // weak +int dword_58B98C; // weak +int dword_58BD90; // weak +int dword_58BD94; // weak +int dword_58BE30; // weak +int dword_58BF04; // weak +int dword_58C194; // weak +int dword_58C598; // weak +int dword_58C788; // weak +int dword_58C99C; // weak +int dword_58C9A0; // weak +int dword_58CA28; // weak +int dword_58CA3C; // weak +int dword_58CB94; // weak +int dword_58CDA0; // weak +int dword_58CF98; // weak +int dword_58D1A4; // weak +int dword_58D1A8[62]; // weak +int dword_58D2A0; // weak +int dword_58D5A8; // weak +int dword_58D660; // weak +int dword_58D9AC; // weak +int dword_58DA64; // weak +int dword_58DDB0; // weak +int dword_58DE68; // weak +int dword_58DEAC; // weak +int dword_58E1B4; // weak +int dword_58E398; // weak +int dword_58E5B8; // weak +int dword_58E788; // weak +int dword_58E9BC; // weak +int dword_58E9C0[62]; // weak +int dword_58EAB8; // weak +int dword_58EDC0; // weak +int dword_58EE80; // weak +int dword_58EEBC; // weak +int dword_58F1C4; // weak +int dword_58F284; // weak +int dword_58F5C8; // weak +int dword_58F7A8; // weak +int dword_58F9CC; // weak +int dword_58FBB0; // weak +int dword_58FDD0; // weak +int dword_58FFA0; // weak +int dword_5901D4; // weak +int dword_5901D8[62]; // weak +int dword_5902D0; // weak +int dword_5905D8; // weak +int dword_5906CC; // weak +int dword_5909DC; // weak +int dword_590AD8; // weak +int dword_590DE0; // weak +int dword_590E98; // weak +int dword_5911E4; // weak +int dword_59129C; // weak +int dword_5915E8; // weak +int dword_5A1AEC; // weak +_UNKNOWN unk_620001; // weak +char WXML::DOMLib::Machine::InitTransitTable(void)::bInited; // weak +int WXML::EXPRLib::Tokenizer::TT[]; // weak +int dword_689DA0[]; // weak +int dword_689DA4[33]; // weak +int dword_689E28; // weak +int dword_689E2C; // weak +int dword_689E3C; // weak +int dword_689E40; // weak +int dword_689E5C; // weak +int dword_689E60; // weak +int dword_689E94; // weak +int dword_689E98; // weak +int dword_689E9C; // weak +int dword_689F94; // weak +int dword_68A1A4; // weak +int dword_68A29C; // weak +int dword_68A5A8; // weak +int dword_68A5AC[46]; // weak +int dword_68A664; // weak +int dword_68A9AC; // weak +int dword_68AA68; // weak +int dword_68ADB0; // weak +int dword_68B1E0; // weak +int dword_68B240; // weak +int dword_68B328; // weak +int dword_68B5B8; // weak +int dword_68B5E4; // weak +int dword_68B9BC; // weak +int dword_68B9E8; // weak +int dword_68BA5C; // weak +int dword_68BB30; // weak +int dword_68BDC0; // weak +int dword_68BDEC; // weak +int dword_68C1C4; // weak +int dword_68C1C8[46]; // weak +int dword_68C280; // weak +int dword_68C5C8; // weak +int dword_68C5CC[256]; // weak +int dword_68C9CC; // weak +int dword_68CAC4; // weak +int dword_68CDD0; // weak +int dword_68CDD4[256]; // weak +int dword_68D1D4; // weak +int dword_68D270; // weak +int dword_68D5D8; // weak +int dword_68D7CC; // weak +int dword_68D9DC; // weak +int dword_68DAD0; // weak +int dword_68DAD4; // weak +int dword_68DDE0; // weak +int dword_68DED8; // weak +int dword_68DEDC; // weak +int dword_68E1E4; // weak +int dword_68E2DC; // weak +int dword_68E5E8; // weak +int dword_68E6E0; // weak +int dword_68E9EC; // weak +int dword_68EAE4; // weak +int dword_68EDF0; // weak +int dword_68EE9C; // weak +int dword_68F1F4; // weak +int dword_68F2A0; // weak +int dword_68F5F8; // weak +int dword_68F6A4; // weak +int dword_68F6B8; // weak +int dword_68F9FC; // weak +char WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited; // weak +int _CRT_fmode; // idb +int __cpu_features; // weak +int dword_78A9D0; // weak +int _CRT_MT; // weak +int dword_78A9E8; // weak +int dword_78A9EC; // weak +struct _RTL_CRITICAL_SECTION CriticalSection; // idb +int dword_78AA08; // weak +int dword_78AA20; // weak +_UNKNOWN unk_78AA40; // weak +int dword_78B340[10]; // weak +LONG Target; // idb +struct _RTL_CRITICAL_SECTION stru_78B380; // idb +struct _RTL_CRITICAL_SECTION stru_78B398; // idb +int dword_78B3C0; // weak +_UNKNOWN unk_78B3C4; // weak +_UNKNOWN unk_78B3C8; // weak +_UNKNOWN __mingw_output_format_flags; // weak +char byte_78B3CD; // weak +int __mingw_memalign_lwm; // weak +unsigned __int8 dwarf_reg_size_table[18]; // idb +_UNKNOWN marker_22456; // weak +__gthread_mutex_t object_mutex; // idb +object *seen_objects; // idb +object *unseen_objects; // idb +pointer emutls_size; // idb +__gthread_key_t emutls_key; // idb +__gthread_mutex_t emutls_mutex; // idb +HMODULE hmod_libgcc; // idb +char __hexdig_D2A[48]; // weak +char byte_78B450; // weak +// extern int ___mb_cur_max; +// extern void (__cdecl *___set_app_type)(_crt_app_type Type); +// extern void (__cdecl *__fpreset)(); +// extern FILE __iob[]; +// extern const unsigned __int16 *__pctype; + + +//----- (00401000) -------------------------------------------------------- +LONG __stdcall TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo) +{ + DWORD ExceptionCode; // eax + int v2; // edx + _crt_signal_t v3; // eax + _crt_signal_t v5; // eax + _crt_signal_t v6; // eax + + ExceptionCode = ExceptionInfo->ExceptionRecord->ExceptionCode; + if ( ExceptionCode == -1073741677 ) + { +LABEL_6: + v3 = signal(8, 0); + if ( v3 == (_crt_signal_t)1 ) + { + signal(8, (_crt_signal_t)1); + fesetenv(0); + return -1; + } +LABEL_7: + if ( v3 ) + { + v3(8); + return -1; + } + return 0; + } + if ( ExceptionCode > 0xC0000093 ) + { + if ( ExceptionCode == -1073741676 ) + { + v3 = signal(8, 0); + if ( v3 == (_crt_signal_t)1 ) + { + signal(8, (_crt_signal_t)1); + return -1; + } + goto LABEL_7; + } + if ( ExceptionCode != -1073741674 ) + return 0; +LABEL_18: + v6 = signal(4, 0); + if ( v6 == (_crt_signal_t)1 ) + { + signal(4, (_crt_signal_t)1); + return -1; + } + if ( v6 ) + { + v6(4); + return -1; + } + return 0; + } + if ( ExceptionCode == -1073741795 ) + goto LABEL_18; + if ( ExceptionCode <= 0xC000001D ) + { + if ( ExceptionCode == -1073741819 ) + { + v5 = signal(11, 0); + if ( v5 == (_crt_signal_t)1 ) + { + signal(11, (_crt_signal_t)1); + return -1; + } + if ( v5 ) + { + v5(11); + return -1; + } + } + return 0; + } + v2 = 0; + if ( ExceptionCode + 1073741683 <= 4 ) + goto LABEL_6; + return v2; +} + +//----- (004011A0) -------------------------------------------------------- +void __usercall __noreturn sub_4011A0(__int32 a1@) +{ + char ***v1; // eax + int v2; // ebx + + if ( __dyn_tls_init_callback ) + __dyn_tls_init_callback(0, 2, 0); + SetUnhandledExceptionFilter(TopLevelExceptionFilter); + __cpu_features_init(a1); + fesetenv(_CRT_fenv); + _setargv(); + if ( _CRT_fmode ) + { + _fmode = _CRT_fmode; + _setmode(__iob[0]._file, _CRT_fmode); + _setmode(__iob[1]._file, _CRT_fmode); + _setmode(__iob[2]._file, _CRT_fmode); + } + *__p__fmode() = _fmode; + _pei386_runtime_relocator(); + __main(); + v1 = __p__environ(); + v2 = main(_argc, (const char **)_bss_start__, (const char **)*v1); + _cexit(); + ExitProcess(v2); +} +// 53264C: using guessed type int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD); + +//----- (00401290) -------------------------------------------------------- +int _mingw32_init_mainargs() +{ + char v1[4]; // [esp+28h] [ebp-14h] BYREF + int v2[4]; // [esp+2Ch] [ebp-10h] BYREF + + v2[0] = 0; + return __getmainargs(&_argc, &_bss_start__, v1, _CRT_glob & 1, v2); +} +// 45E898: using guessed type int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); +// 515050: using guessed type int _CRT_glob; +// 401290: using guessed type int var_10[4]; +// 401290: using guessed type char var_14[4]; + +//----- (004012D0) -------------------------------------------------------- +void __usercall __noreturn mainCRTStartup(__int32 a1@) +{ + ___set_app_type(_crt_console_app); + sub_4011A0(a1); +} + +//----- (004012F0) -------------------------------------------------------- +void __usercall __noreturn WinMainCRTStartup(__int32 a1@) +{ + ___set_app_type(_crt_gui_app); + sub_4011A0(a1); +} + +//----- (00401330) -------------------------------------------------------- +int __gcc_register_frame() +{ + HMODULE ModuleHandleA; // eax + HMODULE v1; // ebx + void (__cdecl *__register_frame_info)(void *, void *); // esi + + ModuleHandleA = GetModuleHandleA("libgcc_s_dw2-1.dll"); + if ( ModuleHandleA ) + { + v1 = ModuleHandleA; + hmod_libgcc = LoadLibraryA("libgcc_s_dw2-1.dll"); + __register_frame_info = (void (__cdecl *)(void *, void *))GetProcAddress(v1, "__register_frame_info"); + _data_start__ = (int (__cdecl *)(_DWORD))GetProcAddress(v1, "__deregister_frame_info"); + } + else + { + _data_start__ = (int (__cdecl *)(_DWORD))__deregister_frame_info; + __register_frame_info = (void (__cdecl *)(void *, void *))::__register_frame_info; + } + if ( __register_frame_info ) + __register_frame_info(&__EH_FRAME_BEGIN__, &obj); + return atexit(__gcc_deregister_frame); +} +// 515000: using guessed type int (__cdecl *_data_start__)(_DWORD); + +//----- (004013E0) -------------------------------------------------------- +void __cdecl __gcc_deregister_frame() +{ + if ( _data_start__ ) + _data_start__(&__EH_FRAME_BEGIN__); + if ( hmod_libgcc ) + FreeLibrary(hmod_libgcc); +} +// 515000: using guessed type int (__cdecl *_data_start__)(_DWORD); + +//----- (00401410) -------------------------------------------------------- +void __cdecl __tcf_3() +{ + std::string::_M_dispose((void **)&night::nsv_); +} + +//----- (0040141A) -------------------------------------------------------- +void __cdecl __tcf_4() +{ + std::string::_M_dispose((void **)&night::nst_); +} + +//----- (00401424) -------------------------------------------------------- +void __cdecl __tcf_5() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); +} + +//----- (0040142E) -------------------------------------------------------- +void __cdecl __tcf_6() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); +} + +//----- (00401438) -------------------------------------------------------- +void __cdecl __tcf_7() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_VAR); +} + +//----- (00401442) -------------------------------------------------------- +void __cdecl __tcf_8() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_STR); +} + +//----- (0040144C) -------------------------------------------------------- +void __cdecl __tcf_9() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_NUM); +} + +//----- (00401456) -------------------------------------------------------- +void __cdecl __tcf_10() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); +} + +//----- (00401460) -------------------------------------------------------- +void __cdecl __tcf_11() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_KW); +} + +//----- (0040146A) -------------------------------------------------------- +void __cdecl __tcf_12() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); +} + +//----- (00401474) -------------------------------------------------------- +void __cdecl __tcf_13() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP); +} + +//----- (0040147E) -------------------------------------------------------- +void __cdecl __tcf_14() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); +} + +//----- (00401488) -------------------------------------------------------- +void __cdecl __tcf_15() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); +} + +//----- (00401492) -------------------------------------------------------- +void __cdecl __tcf_16() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); +} + +//----- (0040149C) -------------------------------------------------------- +void __cdecl __tcf_17() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); +} + +//----- (004014A6) -------------------------------------------------------- +void __cdecl __tcf_18() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_K_V); +} + +//----- (004014B0) -------------------------------------------------------- +void __cdecl __tcf_19() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); +} + +//----- (004014BA) -------------------------------------------------------- +void __cdecl __tcf_20() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); +} + +//----- (004014C4) -------------------------------------------------------- +void __cdecl __tcf_21() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); +} + +//----- (004014CE) -------------------------------------------------------- +void __cdecl __tcf_22() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); +} + +//----- (004014D8) -------------------------------------------------------- +void __cdecl __tcf_23() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); +} + +//----- (004014E2) -------------------------------------------------------- +void __cdecl __tcf_24() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); +} + +//----- (004014EC) -------------------------------------------------------- +void __cdecl __tcf_25() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_IF); +} + +//----- (004014F6) -------------------------------------------------------- +void __cdecl __tcf_26() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FOR); +} + +//----- (00401500) -------------------------------------------------------- +void __cdecl __tcf_27() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); +} + +//----- (0040150A) -------------------------------------------------------- +void __cdecl __tcf_28() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); +} + +//----- (00401514) -------------------------------------------------------- +void __cdecl __tcf_29() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); +} + +//----- (0040151E) -------------------------------------------------------- +void __cdecl __tcf_30() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG); +} + +//----- (00401528) -------------------------------------------------------- +void __cdecl __tcf_31() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); +} + +//----- (00401532) -------------------------------------------------------- +void __cdecl __tcf_32() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); +} + +//----- (0040153C) -------------------------------------------------------- +void __cdecl __tcf_33() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); +} + +//----- (00401546) -------------------------------------------------------- +void __cdecl __tcf_34() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_CALL); +} + +//----- (00401550) -------------------------------------------------------- +void __cdecl __tcf_35() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); +} + +//----- (0040155A) -------------------------------------------------------- +void __cdecl __tcf_36() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); +} + +//----- (00401564) -------------------------------------------------------- +void __cdecl __tcf_37() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); +} + +//----- (0040156E) -------------------------------------------------------- +void __cdecl __tcf_38() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); +} + +//----- (00401578) -------------------------------------------------------- +void __cdecl __tcf_39() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); +} + +//----- (00401582) -------------------------------------------------------- +void __cdecl __tcf_40() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); +} + +//----- (0040158C) -------------------------------------------------------- +void __cdecl __tcf_41() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); +} + +//----- (00401596) -------------------------------------------------------- +void __cdecl __tcf_42() +{ + std::string::_M_dispose((void **)&WXML::GlassEaselWxs::sGitHash); +} + +//----- (004015A0) -------------------------------------------------------- +void __cdecl __tcf_43() +{ + std::string::_M_dispose((void **)&WXML::GlassEaselWxs::sWrapper); +} + +//----- (004015AA) -------------------------------------------------------- +void __cdecl __tcf_44() +{ + std::string::_M_dispose((void **)&WXML::GlassEaselWxs::sGenFuncDeepCopy); +} + +//----- (004015B4) -------------------------------------------------------- +void __cdecl __tcf_45() +{ + std::string::_M_dispose((void **)&WXML::GlassEaselWxs::sWxsEnvInit); +} + +//----- (004015BE) -------------------------------------------------------- +int snprintf(char *const Buffer, const size_t BufferCount, const char *const Format, ...) +{ + va_list ArgList; // [esp+2Ch] [ebp+14h] BYREF + + va_start(ArgList, Format); + return vsnprintf_2(Buffer, BufferCount, Format, ArgList); +} + +//----- (004015E6) -------------------------------------------------------- +void __cdecl __tcf_2() +{ + std::ios_base::Init::~Init(); +} + +//----- (004015F0) -------------------------------------------------------- +int __usercall main::{lambda(std::string const&)#1}::operator()@(const char **a1@, const char **a2@) +{ + const char *v3; // eax + FILE *v4; // ebx + int result; // eax + + v3 = *a1; + v4 = &__iob[1]; + if ( v3 && *v3 ) + v4 = fopen(v3, "w"); + result = fprintf(v4, "%s\n", *a2); + if ( v4 != &__iob[1] ) + return fclose(v4); + return result; +} + +//----- (0040164E) -------------------------------------------------------- +void __usercall std::_Vector_base::_M_deallocate(void *a1@) +{ + if ( a1 ) + operator delete(a1); +} +// 40164E: could not find valid save-restore pair for ebp + +//----- (00401664) -------------------------------------------------------- +void __fastcall std::pair::~pair(void **a1) +{ + std::string::_M_dispose(a1 + 6); + std::string::_M_dispose(a1); +} + +//----- (0040167E) -------------------------------------------------------- +void *__usercall __gnu_cxx::new_allocator::allocate@(unsigned int a1@) +{ + void (__cdecl *v2)(void *); // [esp+4h] [ebp-14h] + + if ( a1 > 0x5555555 ) + std::__throw_bad_alloc(); + return operator new((struct type_info *)(24 * a1), v2); +} +// 401696: variable 'v2' is possibly undefined + +//----- (0040169D) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + void **a1@, + void **a2@, + _DWORD *a3@) +{ + _DWORD *v4; // eax + void **i; // ebx + void **v7; // ecx + _DWORD *v9; // [esp+18h] [ebp-20h] + + v4 = a3; + for ( i = a1; i != a2; i += 6 ) + { + v9 = v4; + std::string::basic_string(v4, i); + v7 = i; + std::string::_M_dispose(v7); + v4 = v9 + 6; + } + return &a3[6 * ((178956971 * ((unsigned int)((char *)i - (char *)a1) >> 3)) & 0x1FFFFFFF)]; +} + +//----- (004016F6) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + if ( !a2 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 4016F6: using guessed type unsigned int var_1C[7]; + +//----- (00401777) -------------------------------------------------------- +int __cdecl Usage(int a1, const char **a2) +{ + printf("Wechat WXML Compiler, core version %s, cli version %s\n", "v0.5vv_20211229_syb_scopedata", sCliVersion); + printf( + "Usage: %s [-d] [-o OUTPUT] [-xc XComponentDefine] [-om XComponentDefine] [-cb [callback.js...]] [-llcommon] [-llw/-l" + "la XCPath] [--wxs ContentMapFile] \n", + *a2); + puts(" Options:"); + puts(" -d: output code for debug"); + puts(" -o: output destination (default stdout)"); + puts(" -xc: output simplified code for custom component"); + puts(" -cc: output compelete code for custom component"); + puts(" -s: read from stdin"); + puts(" -ds: insert debug wxs info"); + puts(" -cb: add life cycle callback"); + puts(" -llw: compile in lazy load mode (webiew)"); + puts(" -lla: compile in lazy load mode (app service)"); + puts(" args XCPath: custom component paths connected by comma or --split (./page/index,./comp/comp)"); + puts(" --wxs: compile wxs scripts for glass-easel"); + puts(" --gdc: gdc function for glass-easel"); + puts(" --wxs-env: wxs env for glass-easel"); + return 1; +} +// 515004: using guessed type char *sCliVersion; + +//----- (0040185E) -------------------------------------------------------- +int __cdecl ReadFile(char *FileName, unsigned int *a2) +{ + int v2; // edi + FILE *ptr; // ebx + char Buffer[4]; // [esp+10h] [ebp-418h] BYREF + char v6[1020]; // [esp+14h] [ebp-414h] BYREF + + std::string::operator=(a2, (char *)&byte_5173B0); + if ( FileName ) + { + v2 = -1; + ptr = fopen(FileName, "r"); + if ( !ptr ) + return v2; + } + else + { + ptr = (FILE *)__iob[0]._ptr; + } + *(_DWORD *)Buffer = 0; + memset(v6, 0, sizeof(v6)); + while ( fgets(Buffer, 1024, ptr) ) + std::string::operator+=(a2, Buffer); + v2 = 0; + if ( FileName ) + fclose(ptr); + return v2; +} + +//----- (004018FF) -------------------------------------------------------- +_DWORD *__cdecl Trim(_DWORD *a1, int a2) +{ + unsigned int v2; // eax + void *v4[6]; // [esp+10h] [ebp-38h] BYREF + void *v5[8]; // [esp+28h] [ebp-20h] BYREF + + std::string::basic_string(a1, a2); + while ( a1[1] > 1u && *(_BYTE *)*a1 == 32 ) + { + std::string::substr(v4, a1, 1u, 0xFFFFFFFF); + std::string::operator=(a1, v4); + std::string::_M_dispose(v4); + } + while ( 1 ) + { + v2 = a1[1]; + if ( v2 <= 1 || *(_BYTE *)(*a1 + v2 - 1) != 32 ) + break; + std::string::substr(v5, a1, 0, v2 - 1); + std::string::operator=(a1, v5); + std::string::_M_dispose(v5); + } + return a1; +} + +//----- (004019B7) -------------------------------------------------------- +_DWORD *__cdecl GetNextArg(_DWORD *a1, int *a2, int a3) +{ + int v3; // eax + int v4; // ebx + void *v6[2]; // [esp+18h] [ebp-60h] BYREF + char v7; // [esp+20h] [ebp-58h] BYREF + void *v8[6]; // [esp+30h] [ebp-48h] BYREF + void *v9[12]; // [esp+48h] [ebp-30h] BYREF + + v3 = std::string::find(a2, *(char **)a3, 0); + v6[1] = 0; + v4 = v3; + v6[0] = &v7; + v7 = 0; + if ( v3 == -1 ) + { + std::string::_M_assign((int)v6, (int)a2); + std::string::operator=((unsigned int *)a2, (char *)&byte_5173B0); + } + else + { + std::string::substr(v8, a2, 0, v3); + std::string::operator=(v6, v8); + std::string::_M_dispose(v8); + std::string::substr(v9, a2, *(_DWORD *)(a3 + 4) + v4, 0xFFFFFFFF); + std::string::operator=(a2, v9); + std::string::_M_dispose(v9); + } + Trim(a1, (int)v6); + std::string::_M_dispose(v6); + return a1; +} + +//----- (00401ABA) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (00401ACE) -------------------------------------------------------- +int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@( + int a1@, + int a2@, + int a3@) +{ + while ( a1 ) + { + if ( (unsigned __int8)std::operator<(a1 + 16, a3) ) + { + a1 = *(_DWORD *)(a1 + 12); + } + else + { + a2 = a1; + a1 = *(_DWORD *)(a1 + 8); + } + } + return a2; +} + +//----- (00401B0A) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1, int a2) +{ + std::_Destroy_aux::__destroy(a2, *a1, a1[1]); + std::_Vector_base::_M_deallocate(*a1); +} + +//----- (00401B30) -------------------------------------------------------- +int __cdecl Split(int a1, int *a2, int a3) +{ + unsigned int v3; // edi + int v4; // ebx + void *v6[6]; // [esp+10h] [ebp-48h] BYREF + void *v7[12]; // [esp+28h] [ebp-30h] BYREF + + v3 = 0; + *(_DWORD *)a1 = 0; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + while ( 1 ) + { + v4 = std::string::find(a2, a3, v3); + std::string::substr(v6, a2, v3, v4 - v3); + Trim(v7, (int)v6); + std::vector::emplace_back((void ***)a1, v7); + std::string::_M_dispose(v7); + std::string::_M_dispose(v6); + if ( v4 == -1 ) + break; + v3 = v4 + *(_DWORD *)(a3 + 4); + } + return a1; +} + +//----- (00401BF0) -------------------------------------------------------- +void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(void **)(a1 + 8)); +} + +//----- (00401C04) -------------------------------------------------------- +_DWORD *__usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>@( + int *a1@) +{ + _DWORD *v2; // ebx + int v3; // edi + unsigned int v4; // eax + _DWORD *v5; // eax + int v6; // ecx + int v7; // edx + int v8; // eax + _DWORD *result; // eax + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + + v2 = operator new((struct type_info *)0x34, v10); + std::string::basic_string(v2 + 4, (int)(a1 + 4)); + v3 = a1[11] - a1[10]; + v2[10] = 0; + v2[11] = 0; + v2[12] = 0; + v4 = -1431655765 * (v3 >> 3); + if ( v4 ) + v5 = __gnu_cxx::new_allocator::allocate(v4); + else + v5 = 0; + v6 = a1[11]; + v7 = a1[10]; + v2[10] = v5; + v2[11] = v5; + v2[12] = (char *)v5 + v3; + v2[11] = std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( + v7, + v6, + v5); + v8 = *a1; + v2[2] = 0; + *v2 = v8; + result = v2; + v2[3] = 0; + return result; +} +// 401C16: variable 'v10' is possibly undefined + +//----- (00401CE4) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + void **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 28 ) + { + v4 = (void **)(i + 4); + std::string::_M_dispose(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00401D1B) -------------------------------------------------------- +int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*a2)[266], bool *a3, int *a4) +{ + int v4; // eax + int i; // edx + int v7; // esi + int result; // eax + + v4 = 0; + for ( i = *(_DWORD *)a3; ; --i ) + { + v7 = v4; + if ( i <= 0 ) + break; + v4 = *((_DWORD *)this + 266 * v4 + *(unsigned __int8 *)a4); + if ( v4 == -1 ) + break; + a4 = (int *)((char *)a4 + 1); + } + result = -1; + if ( *((_BYTE *)*a2 + v7) ) + { + *(_DWORD *)a3 = i; + return 0; + } + return result; +} + +//----- (00401D5E) -------------------------------------------------------- +int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *a2) +{ + int v2; // eax + + if ( !WXML::RPX::acceptID(char const*,int &)::inited ) + { + memset(&WXML::RPX::acceptID(char const*,int &)::nextPos, 255, 0x850u); + v2 = 0; + dword_58639C = 1; + dword_5867C4 = 1; + do + { + dword_5863A4[v2] = 1; + dword_586324[v2] = 1; + dword_5867CC[v2] = 1; + dword_58674C[v2++] = 1; + } + while ( v2 != 26 ); + dword_586708 = 1; + dword_58670C = 1; + dword_586710 = 1; + dword_586714 = 1; + dword_586718 = 1; + dword_58671C = 1; + dword_586720 = 1; + dword_586724 = 1; + dword_586728 = 1; + dword_58672C = 1; + WXML::RPX::acceptID(char const*,int &)::inited = 1; + } + return WXML::RPX::accept( + (WXML::RPX *)&WXML::RPX::acceptID(char const*,int &)::nextPos, + (int (*)[266])WXML::RPX::acceptID(char const*,int &)::canAccept, + a2, + (int *)this); +} +// 586324: using guessed type int dword_586324[30]; +// 58639C: using guessed type int dword_58639C; +// 5863A4: using guessed type int dword_5863A4[217]; +// 586708: using guessed type int dword_586708; +// 58670C: using guessed type int dword_58670C; +// 586710: using guessed type int dword_586710; +// 586714: using guessed type int dword_586714; +// 586718: using guessed type int dword_586718; +// 58671C: using guessed type int dword_58671C; +// 586720: using guessed type int dword_586720; +// 586724: using guessed type int dword_586724; +// 586728: using guessed type int dword_586728; +// 58672C: using guessed type int dword_58672C; +// 58674C: using guessed type int dword_58674C[30]; +// 5867C4: using guessed type int dword_5867C4; +// 5867CC: using guessed type int dword_5867CC[169]; +// 586A70: using guessed type char WXML::RPX::acceptID(char const*,int &)::inited; + +//----- (00401E5D) -------------------------------------------------------- +int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *a2) +{ + int i; // eax + + if ( !WXML::RPX::acceptStr(char const*,int &)::inited ) + { + memset(&WXML::RPX::acceptStr(char const*,int &)::nextPos, 255, 0x18F0u); + for ( i = 0; i != 256; ++i ) + { + dword_584D48[i] = 1; + dword_585170[i] = 2; + dword_585598[i] = 1; + dword_5859C0[i] = 2; + } + dword_5849A8 = 1; + dword_5849BC = 2; + dword_584EB8 = 3; + dword_5852E0 = 4; + dword_584DD0 = 5; + dword_58520C = 5; + WXML::RPX::acceptStr(char const*,int &)::inited = 1; + } + return WXML::RPX::accept( + (WXML::RPX *)&WXML::RPX::acceptStr(char const*,int &)::nextPos, + (int (*)[266])WXML::RPX::acceptStr(char const*,int &)::canAccept, + a2, + (int *)this); +} +// 5849A8: using guessed type int dword_5849A8; +// 5849BC: using guessed type int dword_5849BC; +// 584D48: using guessed type int dword_584D48[34]; +// 584DD0: using guessed type int dword_584DD0; +// 584EB8: using guessed type int dword_584EB8; +// 585170: using guessed type int dword_585170[39]; +// 58520C: using guessed type int dword_58520C; +// 5852E0: using guessed type int dword_5852E0; +// 585598: using guessed type int dword_585598[266]; +// 5859C0: using guessed type int dword_5859C0[532]; +// 586210: using guessed type char WXML::RPX::acceptStr(char const*,int &)::inited; + +//----- (00401F22) -------------------------------------------------------- +int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *a2) +{ + int v2; // eax + + if ( !WXML::RPX::acceptNum(char const*,int &)::inited ) + { + memset(&WXML::RPX::acceptNum(char const*,int &)::nextPos, 255, 0x14C8u); + v2 = 0; + dword_5834EC = 1; + dword_5834F4 = 1; + dword_5834F8 = 3; + dword_583920 = 3; + dword_583D48 = 4; + do + { + dword_583500[v2] = 2; + dword_583928[v2] = 2; + dword_583D50[v2] = 2; + dword_584178[v2] = 4; + dword_5845A0[v2++] = 4; + } + while ( v2 != 10 ); + WXML::RPX::acceptNum(char const*,int &)::inited = 1; + } + return WXML::RPX::accept( + (WXML::RPX *)&WXML::RPX::acceptNum(char const*,int &)::nextPos, + (int (*)[266])WXML::RPX::acceptNum(char const*,int &)::canAccept, + a2, + (int *)this); +} +// 5834EC: using guessed type int dword_5834EC; +// 5834F4: using guessed type int dword_5834F4; +// 5834F8: using guessed type int dword_5834F8; +// 583500: using guessed type int dword_583500[264]; +// 583920: using guessed type int dword_583920; +// 583928: using guessed type int dword_583928[264]; +// 583D48: using guessed type int dword_583D48; +// 583D50: using guessed type int dword_583D50[266]; +// 584178: using guessed type int dword_584178[266]; +// 5845A0: using guessed type int dword_5845A0[218]; +// 584908: using guessed type char WXML::RPX::acceptNum(char const*,int &)::inited; + +//----- (00401FE6) -------------------------------------------------------- +int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *a2, int *a3) +{ + WXML::RPX *v3; // ebx + int v4; // edi + int v5; // esi + + v3 = this; + v4 = *(_DWORD *)a2; + v5 = *(_DWORD *)a2 - 1; + *(_DWORD *)a2 = v5; + switch ( *((_BYTE *)this + 1) ) + { + case '(': + *a3 = 3; + break; + case ')': + *a3 = 4; + break; + case '+': + *a3 = 1; + break; + case ',': + *a3 = 6; + break; + case '-': + *a3 = 2; + break; + case '.': + *a3 = 5; + break; + default: + *(_DWORD *)a2 = v4; + if ( *(_BYTE *)this == 32 || *(_BYTE *)this == 9 ) + { + while ( *(int *)a2 > 0 && (*(_BYTE *)v3 == 32 || *(_BYTE *)v3 == 9) ) + { + v3 = (WXML::RPX *)((char *)v3 + 1); + --*(_DWORD *)a2; + } + *a3 = 7; + } + else + { + *(_DWORD *)a2 = v5; + *a3 = 0; + } + break; + } + return 0; +} + +//----- (0040207E) -------------------------------------------------------- +void __cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3) +{ + int i; // ebx + int v4; // eax + unsigned int v5; // ecx + int v6; // eax + + for ( i = 0; i < a2; ++i ) + { + v4 = *(char *)(a1 + i); + if ( (_BYTE)v4 == 39 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x27"); + continue; + } + if ( (char)v4 > 39 ) + { + if ( (_BYTE)v4 == 62 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3e"); + continue; + } + if ( (char)v4 <= 62 ) + { + if ( (_BYTE)v4 == 60 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3c"); + continue; + } + if ( (_BYTE)v4 == 61 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3d"); + continue; + } +LABEL_32: + std::operator<<>((std::ostream::sentry *)(a3 + 8), *(_BYTE *)(a1 + i)); + continue; + } + if ( (_BYTE)v4 != 92 ) + goto LABEL_32; + LOBYTE(v4) = *(_BYTE *)(a1 + i + 1); + v5 = v4 - 92; + if ( (unsigned __int8)(v4 - 92) <= 0x18u ) + { + v6 = 21233665; + if ( _bittest(&v6, v5) ) + goto LABEL_30; + } + else if ( (_BYTE)v4 == 39 || (_BYTE)v4 == 34 ) + { +LABEL_30: + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\"); + continue; + } + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x5c"); + } + else + { + if ( (_BYTE)v4 != 34 ) + { + if ( (char)v4 > 34 ) + { + if ( (_BYTE)v4 == 38 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x26"); + continue; + } + } + else + { + if ( (_BYTE)v4 == 10 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\n"); + continue; + } + if ( (_BYTE)v4 == 13 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\r"); + continue; + } + } + goto LABEL_32; + } + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x22"); + } + } +} + +//----- (00402177) -------------------------------------------------------- +void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) +{ + WXML::Rewrite::ToStringCode(*a1, a1[1], a2); +} + +//----- (0040219A) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3) +{ + int v3; // ebx + char v4; // al + char v6[8]; // [esp+10h] [ebp-D8h] BYREF + char v7[4]; // [esp+18h] [ebp-D0h] BYREF + int v8[50]; // [esp+1Ch] [ebp-CCh] BYREF + + v3 = 0; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v6); + while ( v3 < a3 ) + { + v4 = *(_BYTE *)(a2 + v3); + if ( v4 == 61 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3d"); + } + else + { + if ( v4 > 61 ) + { + if ( v4 == 62 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3e"); + goto LABEL_11; + } + } + else + { + if ( v4 == 38 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x26"); + goto LABEL_11; + } + if ( v4 == 60 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3c"); + goto LABEL_11; + } + } + std::operator<<>((std::ostream::sentry *)v7, *(_BYTE *)(a2 + v3)); + } +LABEL_11: + ++v3; + } + std::stringbuf::str(a1, v8); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v6); + return a1; +} +// 40219A: using guessed type char var_D0[4]; +// 40219A: using guessed type int var_CC[50]; + +//----- (0040224E) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2) +{ + WXML::Rewrite::ToStringCode3[abi:cxx11](a1, *a2, a2[1]); + return a1; +} + +//----- (00402274) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3) +{ + int v3; // ebx + char v4; // al + char v6[8]; // [esp+10h] [ebp-D8h] BYREF + char v7[4]; // [esp+18h] [ebp-D0h] BYREF + int v8[50]; // [esp+1Ch] [ebp-CCh] BYREF + + v3 = 0; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v6); + while ( v3 < a3 ) + { + v4 = *(_BYTE *)(a2 + v3); + if ( v4 == 39 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x27"); + goto LABEL_19; + } + if ( v4 > 39 ) + { + if ( v4 == 62 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3e"); + goto LABEL_19; + } + if ( v4 > 62 ) + { + if ( v4 == 92 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\\\"); + goto LABEL_19; + } + } + else + { + if ( v4 == 60 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3c"); + goto LABEL_19; + } + if ( v4 == 61 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3d"); + goto LABEL_19; + } + } + } + else + { + if ( v4 == 34 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x22"); + goto LABEL_19; + } + if ( v4 > 34 ) + { + if ( v4 == 38 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x26"); + goto LABEL_19; + } + } + else + { + if ( v4 == 10 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\n"); + goto LABEL_19; + } + if ( v4 == 13 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\r"); + goto LABEL_19; + } + } + } + std::operator<<>((std::ostream::sentry *)v7, *(_BYTE *)(a2 + v3)); +LABEL_19: + ++v3; + } + std::stringbuf::str(a1, v8); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v6); + return a1; +} +// 402274: using guessed type char var_D0[4]; +// 402274: using guessed type int var_CC[50]; + +//----- (00402376) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2) +{ + WXML::Rewrite::ToStringCode2[abi:cxx11](a1, *a2, a2[1]); + return a1; +} + +//----- (0040239C) -------------------------------------------------------- +void __cdecl WXML::Rewrite::ToStringCode(int *a1, _DWORD *a2) +{ + void *v2[6]; // [esp+18h] [ebp-F0h] BYREF + char v3[12]; // [esp+30h] [ebp-D8h] BYREF + int v4[51]; // [esp+3Ch] [ebp-CCh] BYREF + + std::basic_stringstream,std::allocator>::basic_stringstream((int)v3); + WXML::Rewrite::ToStringCode(*a1, a1[1], (int)v3); + std::stringbuf::str((int)v2, v4); + std::string::operator=(a2, v2); + std::string::_M_dispose(v2); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v3); +} +// 40239C: using guessed type int var_CC[51]; + +//----- (00402415) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2) +{ + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + WXML::Rewrite::ToStringCode(a2, (_DWORD *)a1); + return a1; +} + +//----- (00402459) -------------------------------------------------------- +int __cdecl WXML::Rewrite::GetToken(int a1, int a2) +{ + int result; // eax + WXML::RPX *v3; // ebx + int i; // esi + int v5; // eax + int v6; // edx + int v7; // edx + int v8; // edx + int v9; // ecx + _DWORD *v10; // ecx + int v11; // [esp+8h] [ebp-70h] + int v12; // [esp+1Ch] [ebp-5Ch] + int v13; // [esp+24h] [ebp-54h] BYREF + bool v14[4]; // [esp+28h] [ebp-50h] BYREF + void *v15[2]; // [esp+2Ch] [ebp-4Ch] BYREF + char v16; // [esp+34h] [ebp-44h] BYREF + int v17; // [esp+44h] [ebp-34h] BYREF + void *v18[12]; // [esp+48h] [ebp-30h] BYREF + + result = a1; + v3 = *(WXML::RPX **)a1; + for ( i = *(_DWORD *)(a1 + 4); i > 0; i = *(_DWORD *)v14 ) + { + v13 = -1; + *(_DWORD *)v14 = i; + v5 = WXML::RPX::acceptID(v3, v14); + if ( v5 ) + { + v6 = WXML::RPX::acceptNum(v3, v14); + v5 = 1; + if ( v6 ) + { + v7 = WXML::RPX::acceptStr(v3, v14); + v5 = 2; + if ( v7 ) + { + v8 = WXML::RPX::acceptSymbol(v3, (char *)v14, &v13); + v5 = 3; + if ( !v8 ) + v5 = (v13 == 7) + 3; + } + } + } + LOBYTE(v11) = 0; + v15[0] = &v16; + v12 = v5; + std::string::_M_construct(v15, (unsigned __int8 *)v3, (size_t)v3 + i - *(_DWORD *)v14, v11); + v17 = v12; + std::string::basic_string(v18, v15); + v9 = *(_DWORD *)(a2 + 4); + if ( v9 == *(_DWORD *)(a2 + 8) ) + { + std::vector>::_M_realloc_insert>( + (char **)a2, + *(char **)(a2 + 4), + &v17); + } + else + { + v10 = (_DWORD *)(v9 + 4); + *(v10 - 1) = v17; + std::string::basic_string(v10, v18); + *(_DWORD *)(a2 + 4) += 28; + } + std::string::_M_dispose(v18); + std::string::_M_dispose(v15); + result = *(_DWORD *)v14; + v3 = (WXML::RPX *)((char *)v3 + i - *(_DWORD *)v14); + } + return result; +} +// 402509: variable 'v11' is possibly undefined + +//----- (0040259E) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + size_t v3; // eax + int v5; // [esp+8h] [ebp-10h] + + *this = this + 2; + v3 = -1; + if ( a2 ) + v3 = (size_t)&a2[strlen(a2)]; + LOBYTE(v5) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)a2, v3, v5); +} +// 4025D4: variable 'v5' is possibly undefined + +//----- (004025E5) -------------------------------------------------------- +BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *a4) +{ + unsigned int i; // edi + int v5; // ebx + char *v6; // ecx + char *v7; // edx + char *v8; // ebx + _DWORD *v9; // eax + _DWORD *v10; // eax + char *v11; // eax + unsigned int v12; // edx + unsigned int v13; // edx + _DWORD *v14; // eax + unsigned int v15; // edx + BOOL v16; // eax + int v18; // [esp+18h] [ebp-B0h] + char v19; // [esp+1Ch] [ebp-ACh] + BOOL v20; // [esp+1Ch] [ebp-ACh] + char *v21; // [esp+2Ch] [ebp-9Ch] BYREF + char *v22; // [esp+30h] [ebp-98h] + int v23; // [esp+34h] [ebp-94h] + void *v24[6]; // [esp+38h] [ebp-90h] BYREF + void *v25[6]; // [esp+50h] [ebp-78h] BYREF + void *v26[2]; // [esp+68h] [ebp-60h] BYREF + unsigned int v27; // [esp+70h] [ebp-58h] BYREF + void *v28[2]; // [esp+80h] [ebp-48h] BYREF + unsigned int v29; // [esp+88h] [ebp-40h] BYREF + void *v30[12]; // [esp+98h] [ebp-30h] BYREF + + v21 = 0; + v22 = 0; + v23 = 0; + WXML::Rewrite::GetToken(a1, (int)&v21); + std::string::operator=(a2, (char *)&byte_51B99E); + v19 = 1; + for ( i = 1; i < -1227133513 * ((v22 - v21) >> 2); ++i ) + { + v5 = 28 * (i - 1); + if ( *(_DWORD *)&v21[v5] == 1 + && (v6 = &v21[v5 + 28], !*(_DWORD *)v6) + && !std::string::compare((int)(v6 + 4), (char *)off_51B99F) ) + { + std::string::basic_string(v28, a4); + v7 = &v21[v5 + 32]; + v8 = &v21[v5 + 4]; + v18 = (int)v7; + std::string::basic_string(v24, a3); + v9 = std::string::append(v24, (int)v8); + std::string::basic_string(v25, v9); + v10 = std::string::append(v25, v18); + std::string::basic_string(v26, v10); + v11 = (char *)v26[1] + (unsigned int)v28[1]; + v12 = 15; + if ( v26[0] != &v27 ) + v12 = v27; + if ( (unsigned int)v11 <= v12 ) + goto LABEL_15; + v13 = 15; + if ( v28[0] != &v29 ) + v13 = v29; + if ( (unsigned int)v11 > v13 ) +LABEL_15: + v14 = std::string::append(v26, (int)v28); + else + v14 = std::string::insert((unsigned int *)v28, 0, (int)v26); + std::string::basic_string(v30, v14); + std::string::operator+=(a2, (int)v30); + ++i; + std::string::_M_dispose(v30); + std::string::_M_dispose(v26); + std::string::_M_dispose(v25); + std::string::_M_dispose(v24); + std::string::_M_dispose(v28); + if ( i == -1227133513 * ((v22 - v21) >> 2) ) + v19 = 0; + } + else + { + std::string::operator+=(a2, (int)&v21[v5 + 4]); + } + } + if ( v21 != v22 && v19 ) + std::string::operator+=(a2, (int)(v22 - 24)); + v15 = a2[1]; + if ( v15 == *(_DWORD *)(a1 + 4) ) + { + v16 = 0; + if ( v15 ) + v16 = memcmp((const void *)*a2, *(const void **)a1, a2[1]) != 0; + } + else + { + v16 = 1; + } + v20 = v16; + std::vector>::~vector((void **)&v21); + return v20; +} + +//----- (004028A8) -------------------------------------------------------- +int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5) +{ + unsigned int v5; // edi + int v6; // ebx + char *v7; // eax + int v8; // ecx + int v9; // ebx + int v10; // esi + char *i; // ebx + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + std::ostream::sentry *v14; // eax + std::ostream::sentry *v15; // eax + std::ostream::sentry *v16; // eax + _DWORD *v17; // eax + char v19; // [esp+1Bh] [ebp-12Dh] + unsigned __int8 v20; // [esp+1Ch] [ebp-12Ch] + std::ostream::sentry *v21; // [esp+1Ch] [ebp-12Ch] + char *v22; // [esp+24h] [ebp-124h] BYREF + _BYTE *v23; // [esp+28h] [ebp-120h] + int v24; // [esp+2Ch] [ebp-11Ch] + char *Str1; // [esp+30h] [ebp-118h] BYREF + int v26; // [esp+34h] [ebp-114h] + int v27[2]; // [esp+48h] [ebp-100h] BYREF + char v28; // [esp+50h] [ebp-F8h] BYREF + void *v29[2]; // [esp+60h] [ebp-E8h] BYREF + char v30[4]; // [esp+68h] [ebp-E0h] BYREF + int v31[55]; // [esp+6Ch] [ebp-DCh] BYREF + + v22 = 0; + v23 = 0; + v24 = 0; + WXML::Rewrite::GetToken(a1, (int)&v22); + std::string::operator=(a2, (char *)&byte_51B99E); + v19 = 1; + v5 = 1; + v20 = 0; + while ( v5 < -1227133513 * ((v23 - v22) >> 2) ) + { + v6 = 28 * (v5 - 1); + if ( !std::string::compare((int)&v22[v6 + 4], (char *)off_51B9A3) && !std::string::compare((int)&v22[v6 + 32], "(") ) + { + std::string::basic_string((void **)&Str1, (char *)&byte_51B99E); + while ( -1227133513 * ((v23 - v22) >> 2) > ++v5 ) + { + v9 = 28 * v5; + if ( !std::string::compare((int)&v22[28 * v5 + 4], ")") ) + { + v10 = v26; + for ( i = Str1; &Str1[v26] - i > 0 && (*i == 32 || *i == 9); ++i ) + ; + if ( !strncmp(i, "http://", 7u) + || !strncmp(i, "https://", 8u) + || !strncmp(i, "//", 2u) + || !strncmp(i, "data:", 5u) ) + { + v27[1] = 0; + v27[0] = (int)&v28; + v28 = 0; + std::string::reserve(v27, v10 + 4); + std::string::append(v27, "url(", 4u); + std::string::append(v27, (int)&Str1); + v17 = std::string::append(v27, ")"); + std::string::basic_string(v29, v17); + std::string::operator+=(a2, (int)v29); + std::string::_M_dispose(v29); + std::string::_M_dispose((void **)v27); + } + else + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)v29); + v21 = std::operator<<>((std::ostream::sentry *)v30, "url("); + std::string::basic_string((void **)v27, i); + v12 = std::operator<<(v21, v27); + v13 = std::operator<<>(v12, "-do-not-use-local-path-"); + v14 = std::operator<<(v13, a3); + std::operator<<>(v14, "&"); + v15 = (std::ostream::sentry *)std::ostream::operator<<(a4); + std::operator<<>(v15, "&"); + v16 = (std::ostream::sentry *)std::ostream::operator<<(a5); + std::operator<<>(v16, ")"); + std::string::_M_dispose((void **)v27); + std::stringbuf::str((int)v27, v31); + std::string::operator+=(a2, (int)v27); + std::string::_M_dispose((void **)v27); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v29); + v20 = 1; + } + if ( ++v5 == -1227133513 * ((v23 - v22) >> 2) ) + v19 = 0; + break; + } + v7 = &v22[v9]; + v8 = *(_DWORD *)&v22[v9]; + if ( v8 != 4 ) + { + if ( v8 == 2 ) + { + std::string::substr(v29, (_DWORD *)v7 + 1, 1u, *((_DWORD *)v7 + 2) - 2); + std::string::operator+=(&Str1, (int)v29); + std::string::_M_dispose(v29); + } + else + { + std::string::operator+=(&Str1, (int)(v7 + 4)); + } + } + } + std::string::_M_dispose((void **)&Str1); + } + else + { + std::string::operator+=(a2, (int)&v22[v6 + 4]); + } + ++v5; + } + if ( v23 != v22 && v19 ) + std::string::operator+=(a2, (int)(v23 - 24)); + std::vector>::~vector((void **)&v22); + return v20; +} +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 4028A8: using guessed type char var_E0[4]; +// 4028A8: using guessed type int var_DC[55]; + +//----- (00402D58) -------------------------------------------------------- +void __cdecl __tcf_1() +{ + std::string::_M_dispose(&night::nsv_); +} +// 586E40: using guessed type void *night::nsv_; + +//----- (00402D62) -------------------------------------------------------- +void __cdecl __tcf_2_0() +{ + std::string::_M_dispose((void **)&night::nst_); +} + +//----- (00402D6C) -------------------------------------------------------- +void __cdecl __tcf_3_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); +} + +//----- (00402D76) -------------------------------------------------------- +void __cdecl __tcf_4_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); +} + +//----- (00402D80) -------------------------------------------------------- +void __cdecl __tcf_5_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_VAR); +} + +//----- (00402D8A) -------------------------------------------------------- +void __cdecl __tcf_6_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_STR); +} + +//----- (00402D94) -------------------------------------------------------- +void __cdecl __tcf_7_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_NUM); +} + +//----- (00402D9E) -------------------------------------------------------- +void __cdecl __tcf_8_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); +} + +//----- (00402DA8) -------------------------------------------------------- +void __cdecl __tcf_9_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_KW); +} + +//----- (00402DB2) -------------------------------------------------------- +void __cdecl __tcf_10_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); +} + +//----- (00402DBC) -------------------------------------------------------- +void __cdecl __tcf_11_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP); +} + +//----- (00402DC6) -------------------------------------------------------- +void __cdecl __tcf_12_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); +} + +//----- (00402DD0) -------------------------------------------------------- +void __cdecl __tcf_13_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); +} + +//----- (00402DDA) -------------------------------------------------------- +void __cdecl __tcf_14_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); +} + +//----- (00402DE4) -------------------------------------------------------- +void __cdecl __tcf_15_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); +} + +//----- (00402DEE) -------------------------------------------------------- +void __cdecl __tcf_16_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_K_V); +} + +//----- (00402DF8) -------------------------------------------------------- +void __cdecl __tcf_17_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); +} + +//----- (00402E02) -------------------------------------------------------- +void __cdecl __tcf_18_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); +} + +//----- (00402E0C) -------------------------------------------------------- +void __cdecl __tcf_19_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); +} + +//----- (00402E16) -------------------------------------------------------- +void __cdecl __tcf_20_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); +} + +//----- (00402E20) -------------------------------------------------------- +void __cdecl __tcf_21_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); +} + +//----- (00402E2A) -------------------------------------------------------- +void __cdecl __tcf_22_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); +} + +//----- (00402E34) -------------------------------------------------------- +void __cdecl __tcf_23_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_IF); +} + +//----- (00402E3E) -------------------------------------------------------- +void __cdecl __tcf_24_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FOR); +} + +//----- (00402E48) -------------------------------------------------------- +void __cdecl __tcf_25_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); +} + +//----- (00402E52) -------------------------------------------------------- +void __cdecl __tcf_26_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); +} + +//----- (00402E5C) -------------------------------------------------------- +void __cdecl __tcf_27_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); +} + +//----- (00402E66) -------------------------------------------------------- +void __cdecl __tcf_28_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG); +} + +//----- (00402E70) -------------------------------------------------------- +void __cdecl __tcf_29_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); +} + +//----- (00402E7A) -------------------------------------------------------- +void __cdecl __tcf_30_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); +} + +//----- (00402E84) -------------------------------------------------------- +void __cdecl __tcf_31_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); +} + +//----- (00402E8E) -------------------------------------------------------- +void __cdecl __tcf_32_0() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_CALL); +} + +//----- (00402E98) -------------------------------------------------------- +void __cdecl __tcf_33_0() +{ + std::string::_M_dispose((void **)night::NS_BUILTIN_OP); +} +// 586B40: using guessed type int night::NS_BUILTIN_OP[6]; + +//----- (00402EA2) -------------------------------------------------------- +void __cdecl __tcf_34_0() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); +} + +//----- (00402EAC) -------------------------------------------------------- +void __cdecl __tcf_35_0() +{ + std::string::_M_dispose((void **)night::NS_BUILTIN_ALL_OP); +} +// 586B10: using guessed type int night::NS_BUILTIN_ALL_OP[6]; + +//----- (00402EB6) -------------------------------------------------------- +void __cdecl __tcf_36_0() +{ + std::string::_M_dispose((void **)night::NS_BUILTIN_PUNC); +} +// 586AF8: using guessed type int night::NS_BUILTIN_PUNC[6]; + +//----- (00402EC0) -------------------------------------------------------- +void __cdecl __tcf_37_0() +{ + std::string::_M_dispose((void **)night::NS_BUILTIN_SPACE); +} +// 586AE0: using guessed type int night::NS_BUILTIN_SPACE[6]; + +//----- (00402ECA) -------------------------------------------------------- +void __cdecl __tcf_38_0() +{ + std::string::_M_dispose((void **)night::NS_BUILTIN_KW); +} +// 586AC8: using guessed type int night::NS_BUILTIN_KW[6]; + +//----- (00402ED4) -------------------------------------------------------- +void __cdecl __tcf_39_0() +{ + std::string::_M_dispose((void **)night::NS_BUILTIN_TYPE); +} +// 586AB0: using guessed type int night::NS_BUILTIN_TYPE[6]; + +//----- (00402EDE) -------------------------------------------------------- +void __cdecl __tcf_40_0() +{ + std::string::_M_dispose((void **)&night::std_v_n); +} + +//----- (00402EE8) -------------------------------------------------------- +void __cdecl __tcf_41_0() +{ + std::string::_M_dispose((void **)&night::std_v_v_n); +} + +//----- (00402EF8) -------------------------------------------------------- +void __usercall std::_Vector_base::_M_deallocate(void *a1@) +{ + if ( a1 ) + operator delete(a1); +} +// 402EF8: could not find valid save-restore pair for ebp + +//----- (00402F0E) -------------------------------------------------------- +void __usercall std::_Vector_base::_M_deallocate(void *a1@) +{ + if ( a1 ) + operator delete(a1); +} +// 402F0E: could not find valid save-restore pair for ebp + +//----- (00402F24) -------------------------------------------------------- +void __fastcall night::ns_sourcemap::~ns_sourcemap(void **a1) +{ + std::string::_M_dispose(a1 + 8); + std::string::_M_dispose(a1); +} + +//----- (00402F3E) -------------------------------------------------------- +void __fastcall night::NSASTParse::~NSASTParse(void **a1) +{ + std::string::_M_dispose(a1 + 11); + std::string::_M_dispose(a1); +} + +//----- (00402F58) -------------------------------------------------------- +void __fastcall night::NSStream::~NSStream(void **a1) +{ + std::string::_M_dispose(a1 + 6); + std::string::_M_dispose(a1); +} + +//----- (00402F72) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 6 ) + { + v4 = i; + std::string::_M_dispose(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00402FA8) -------------------------------------------------------- +int __usercall std::__relocate_a_1@( + void *a1@, + const void *a2@, + int a3@) +{ + signed int v3; // edx + signed int v4; // esi + + v3 = a3 - (_DWORD)a2; + v4 = v3; + if ( v3 > 0 ) + memmove(a1, a2, v3); + return (int)a1 + v4; +} + +//----- (00402FD6) -------------------------------------------------------- +int snprintf_constprop_0(char *Buffer, int a2, char *Format, ...) +{ + va_list va; // [esp+2Ch] [ebp+14h] BYREF + + va_start(va, Format); + return vsnprintf_2(Buffer, 0x400u, Format, va); +} + +//----- (00403000) -------------------------------------------------------- +#error "40304B: call analysis failed (funcsize=31)" + +//----- (0040306C) -------------------------------------------------------- +#error "4030B7: call analysis failed (funcsize=31)" + +//----- (004030D8) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 4030D8: using guessed type unsigned int var_1C[7]; + +//----- (0040314A) -------------------------------------------------------- +void __fastcall std::_Vector_base::~_Vector_base(void **a1) +{ + if ( *a1 ) + operator delete(*a1); +} +// 40314A: could not find valid save-restore pair for ebp + +//----- (00403162) -------------------------------------------------------- +int __thiscall night::NSStream::NSStream(_DWORD *this, int a2, int a3, int a4) +{ + int v4; // edi + int result; // eax + + v4 = (int)(this + 6); + *this = this + 2; + this[6] = this + 8; + this[1] = 0; + *((_BYTE *)this + 8) = 0; + this[7] = 0; + *((_BYTE *)this + 32) = 0; + std::string::_M_assign((int)this, a2); + std::string::_M_assign(v4, a3); + result = a4; + this[12] = 0; + this[13] = a4; + this[14] = 1; + return result; +} + +//----- (004031E2) -------------------------------------------------------- +_DWORD *__thiscall night::NSStream::next(_DWORD *ecx0, night::NSStream *this) +{ + unsigned int v3; // eax + int v5; // [esp+10h] [ebp-18h] + int v6; // [esp+14h] [ebp-14h] + char v7; // [esp+1Fh] [ebp-9h] + + v3 = *((_DWORD *)this + 12); + if ( v3 < *((_DWORD *)this + 7) ) + { + *((_DWORD *)this + 12) = v3 + 1; + v7 = *(_BYTE *)std::string::at((_DWORD *)this + 6, v3); + v6 = *((_DWORD *)this + 14); + v5 = *((_DWORD *)this + 13); + if ( v7 == 10 ) + { + *((_DWORD *)this + 14) = 1; + *((_DWORD *)this + 13) = v5 + 1; + } + else + { + ++*((_DWORD *)this + 14); + } + *(_BYTE *)ecx0 = v7; + ecx0[2] = v6; + ecx0[1] = v5; + } + else + { + *(_BYTE *)ecx0 = 0; + ecx0[1] = 0; + ecx0[2] = 0; + } + return ecx0; +} + +//----- (00403266) -------------------------------------------------------- +_DWORD *__thiscall night::NSStream::peek(_DWORD *ecx0, night::NSStream *this) +{ + char *v3; // eax + int v4; // edx + char v5; // cl + + if ( *((_DWORD *)this + 12) < *((_DWORD *)this + 7) ) + { + v3 = (char *)std::string::at((_DWORD *)this + 6, *((_DWORD *)this + 12)); + v4 = *((_DWORD *)this + 14); + v5 = *v3; + ecx0[1] = *((_DWORD *)this + 13); + *(_BYTE *)ecx0 = v5; + ecx0[2] = v4; + } + else + { + *(_BYTE *)ecx0 = 0; + ecx0[1] = 0; + ecx0[2] = 0; + } + return ecx0; +} + +//----- (004032B8) -------------------------------------------------------- +_DWORD *__thiscall night::NSStream::peek_2(_DWORD *ecx0, night::NSStream *this) +{ + char v3; // dl + int v4; // ecx + int v5; // eax + + if ( (unsigned int)(*((_DWORD *)this + 12) + 1) < *((_DWORD *)this + 7) ) + { + v3 = *(_BYTE *)std::string::at((_DWORD *)this + 6, *((_DWORD *)this + 12) + 1); + v4 = *((_DWORD *)this + 13); + v5 = *((_DWORD *)this + 14) + 1; + if ( v3 == 10 ) + { + ++v4; + v5 = 1; + } + *(_BYTE *)ecx0 = v3; + ecx0[1] = v4; + ecx0[2] = v5; + } + else + { + *(_BYTE *)ecx0 = 0; + ecx0[1] = 0; + ecx0[2] = 0; + } + return ecx0; +} + +//----- (00403314) -------------------------------------------------------- +bool __fastcall night::NSStream::eof(night::NSStream *a1) +{ + int v2[5]; // [esp+14h] [ebp-14h] BYREF + + night::NSStream::peek(v2, a1); + return LOBYTE(v2[0]) == 0; +} +// 403314: using guessed type int var_14[5]; + +//----- (00403330) -------------------------------------------------------- +bool __fastcall night::NSStream::eof_2(night::NSStream *a1) +{ + int v2[5]; // [esp+14h] [ebp-14h] BYREF + + night::NSStream::peek_2(v2, a1); + return LOBYTE(v2[0]) == 0; +} +// 403330: using guessed type int var_14[5]; + +//----- (0040334C) -------------------------------------------------------- +int __thiscall night::NSToken::read_while[abi:cxx11]( + int this, + int a2, + unsigned __int8 (__cdecl *a3)(_DWORD, int), + int a4) +{ + _DWORD v6[5]; // [esp+14h] [ebp-14h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + while ( !night::NSStream::eof(*(night::NSStream **)(a2 + 4)) ) + { + night::NSStream::peek(v6, *(night::NSStream **)(a2 + 4)); + if ( !a3(SLOBYTE(v6[0]), a4) ) + break; + night::NSStream::next(v6, *(night::NSStream **)(a2 + 4)); + std::string::push_back((_DWORD *)this, v6[0]); + } + return this; +} + +//----- (004033D6) -------------------------------------------------------- +void __fastcall night::NSToken::read_comment_method_1(int a1) +{ + void *v1[8]; // [esp+18h] [ebp-20h] BYREF + + night::NSToken::read_while[abi:cxx11]( + (int)v1, + a1, + (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_not_line_break, + 0); + std::string::_M_dispose(v1); +} + +//----- (00403404) -------------------------------------------------------- +_DWORD *__fastcall night::NSToken::read_comment_method_2(int a1) +{ + void *v3[7]; // [esp+18h] [ebp-20h] BYREF + + night::NSToken::read_while[abi:cxx11]( + (int)v3, + a1, + (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_comment2, + *(_DWORD *)(a1 + 4)); + std::string::_M_dispose(v3); + return night::NSStream::next(v3, *(night::NSStream **)(a1 + 4)); +} + +//----- (00403446) -------------------------------------------------------- +unsigned __int8 __thiscall night::NSToken::skip_comment(night::NSStream **this, _DWORD *a2) +{ + unsigned __int8 result; // al + night::NSStream *v4; // [esp+0h] [ebp-38h] + void *v5[7]; // [esp+18h] [ebp-20h] BYREF + + while ( 1 ) + { + result = night::NSStream::eof(this[1]); + if ( result ) + break; + result = (unsigned __int8)night::NSStream::peek(v5, this[1]); + if ( LOBYTE(v5[0]) != 47 ) + break; + result = night::NSStream::eof_2(this[1]); + if ( result ) + break; + night::NSStream::peek_2(v5, this[1]); + v4 = this[1]; + if ( LOBYTE(v5[0]) == 47 ) + { + night::NSStream::next(v5, v4); + night::NSStream::next(v5, this[1]); + night::NSToken::read_comment_method_1((int)this); + } + else + { + result = (unsigned __int8)night::NSStream::peek_2(v5, v4); + if ( LOBYTE(v5[0]) != 42 ) + return result; + night::NSStream::next(v5, this[1]); + night::NSStream::next(v5, this[1]); + night::NSToken::read_comment_method_2((int)this); + } + night::NSToken::read_while[abi:cxx11]( + (int)v5, + (int)this, + (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_whitespace, + 0); + std::string::operator=(a2, v5); + std::string::_M_dispose(v5); + } + return result; +} + +//----- (00403536) -------------------------------------------------------- +void __thiscall __noreturn night::NSStream::err(_DWORD *this, int a2, unsigned int a3, unsigned int a4, char a5) +{ + _DWORD *v6; // eax + _DWORD *v7; // eax + _DWORD *v8; // eax + _DWORD *exception; // ebx + int v10[2]; // [esp+18h] [ebp-60h] BYREF + char v11; // [esp+20h] [ebp-58h] BYREF + void *v12[6]; // [esp+30h] [ebp-48h] BYREF + void *v13[12]; // [esp+48h] [ebp-30h] BYREF + + v10[0] = (int)&v11; + v10[1] = 0; + v11 = 0; + std::string::basic_string(v13, (int)this); + std::string::append(v13, ":"); + std::string::operator+=(v10, (int)v13); + std::string::_M_dispose(v13); + if ( a5 ) + { + std::to_string(v12, a3); + v6 = std::string::append(v12, ":"); + std::string::basic_string(v13, v6); + std::string::operator+=(v10, (int)v13); + std::string::_M_dispose(v13); + std::string::_M_dispose(v12); + std::to_string(v12, a4); + } + else + { + std::to_string(v12, this[13] + a3); + v8 = std::string::append(v12, ":"); + std::string::basic_string(v13, v8); + std::string::operator+=(v10, (int)v13); + std::string::_M_dispose(v13); + std::string::_M_dispose(v12); + std::to_string(v12, this[14] + a4); + } + v7 = std::string::append(v12, ":"); + std::string::basic_string(v13, v7); + std::string::operator+=(v10, (int)v13); + std::string::_M_dispose(v13); + std::string::_M_dispose(v12); + std::string::operator+=(v10, a2); + exception = __cxa_allocate_exception(0x18u); + std::string::basic_string(exception, v10); + __cxa_throw(exception, (struct type_info *)&`typeinfo for'std::string, (void (__cdecl *)(void *))std::string::~string); +} +// 534198: using guessed type int *`typeinfo for'std::string; + +//----- (00403746) -------------------------------------------------------- +void __thiscall __noreturn night::NSToken::err(_DWORD **this, int a2, unsigned int a3, unsigned int a4, char a5) +{ + night::NSStream::err(this[1], a2, a3, a4, a5); +} + +//----- (00403770) -------------------------------------------------------- +bool __stdcall night::NSASTParse::is_save_for_division(int a1) +{ + bool result; // al + bool v2; // al + int v3; // esi + bool v4; // [esp+1Fh] [ebp-29h] + void *v5[8]; // [esp+28h] [ebp-20h] BYREF + + result = 0; + if ( a1 ) + { + std::string::basic_string(v5, a1); + if ( !std::operator==((int)v5, (int)&night::NS_TYPE_BOOL) + && !std::operator==((int)v5, (int)&night::NS_TYPE_VAR) + && !std::operator==((int)v5, (int)&night::NS_TYPE_NUM) + && !std::operator==((int)v5, (int)&night::NS_TYPE_B_TYPE) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OP_SELF) + && !std::operator==((int)v5, (int)&night::NS_TYPE_BINARY) + && !std::operator==((int)v5, (int)&night::NS_TYPE_ASSIGN) + && !std::operator==((int)v5, (int)&night::NS_TYPE_TERNARY) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_DOT) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_PROPERTY) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_SELF_OP) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_BLOCK) + && !std::operator==((int)v5, (int)&night::NS_TYPE_BRACKET) + && !std::operator==((int)v5, (int)&night::NS_TYPE_CALL) ) + { + v2 = std::operator==((int)v5, (int)&night::NS_TYPE_KW); + if ( !v2 ) + goto LABEL_22; + v3 = a1 + 60; + if ( !std::operator==("null", a1 + 60) + && !std::operator==("undefined", v3) + && !std::operator==((char *)off_51BF34, v3) ) + { + v2 = std::operator==("Infinity", v3); + goto LABEL_22; + } + } + v2 = 1; +LABEL_22: + v4 = v2; + std::string::_M_dispose(v5); + return v4; + } + return result; +} + +//----- (00403954) -------------------------------------------------------- +bool __stdcall night::NSASTParse::is_exp(int a1) +{ + bool result; // al + bool v2; // al + int v3; // esi + bool v4; // [esp+1Fh] [ebp-29h] + void *v5[8]; // [esp+28h] [ebp-20h] BYREF + + result = 0; + if ( a1 ) + { + std::string::basic_string(v5, a1); + if ( !std::operator==((int)v5, (int)&night::NS_TYPE_BOOL) + && !std::operator==((int)v5, (int)&night::NS_TYPE_VAR) + && !std::operator==((int)v5, (int)&night::NS_TYPE_STR) + && !std::operator==((int)v5, (int)&night::NS_TYPE_NUM) + && !std::operator==((int)v5, (int)&night::NS_TYPE_B_TYPE) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OP_SELF) + && !std::operator==((int)v5, (int)&night::NS_TYPE_BINARY) + && !std::operator==((int)v5, (int)&night::NS_TYPE_ASSIGN) + && !std::operator==((int)v5, (int)&night::NS_TYPE_TERNARY) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_DOT) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_PROPERTY) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_SELF_OP) + && !std::operator==((int)v5, (int)&night::NS_TYPE_OBJ_BLOCK) + && !std::operator==((int)v5, (int)&night::NS_TYPE_ARRAY) + && !std::operator==((int)v5, (int)&night::NS_TYPE_BRACKET) + && !std::operator==((int)v5, (int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE) + && !std::operator==((int)v5, (int)&night::NS_TYPE_FUNC) + && !std::operator==((int)v5, (int)&night::NS_TYPE_CALL) ) + { + v2 = std::operator==((int)v5, (int)&night::NS_TYPE_KW); + if ( !v2 ) + goto LABEL_26; + v3 = a1 + 60; + if ( !std::operator==("null", a1 + 60) + && !std::operator==("undefined", v3) + && !std::operator==((char *)off_51BF34, v3) ) + { + v2 = std::operator==("Infinity", v3); + goto LABEL_26; + } + } + v2 = 1; +LABEL_26: + v4 = v2; + std::string::_M_dispose(v5); + return v4; + } + return result; +} + +//----- (00403B98) -------------------------------------------------------- +unsigned int __fastcall night::NSGod::hamlet(_DWORD *a1) +{ + unsigned int result; // eax + int v3; // esi + void **v4; // ebx + bool v5; // al + unsigned int i; // [esp+1Ch] [ebp-3Ch] + void *v7[12]; // [esp+28h] [ebp-30h] BYREF + + for ( i = 0; ; ++i ) + { + result = (a1[1] - *a1) >> 2; + if ( i >= result ) + break; + v3 = *(_DWORD *)(*a1 + 4 * i); + std::string::basic_string(v7, v3); + if ( std::operator==((int)v7, (int)&night::std_v_n) ) + { + v4 = *(void ***)(v3 + 24); + if ( !v4 ) + goto LABEL_13; + std::_Vector_base::_M_deallocate(*v4); + } + else + { + v5 = std::operator==((int)v7, (int)&night::std_v_v_n); + v4 = *(void ***)(v3 + 24); + if ( v5 ) + { + if ( !v4 ) + goto LABEL_13; + if ( *v4 ) + operator delete(*v4); + } + else + { + if ( !v4 ) + goto LABEL_13; + std::string::_M_dispose(v4 + 39); + std::string::_M_dispose(v4 + 33); + std::string::_M_dispose(v4 + 27); + std::string::_M_dispose(v4 + 21); + std::string::_M_dispose(v4 + 15); + std::string::_M_dispose(v4 + 6); + std::string::_M_dispose(v4); + } + } + operator delete(v4); +LABEL_13: + std::string::_M_dispose((void **)v3); + operator delete((void *)v3); + std::string::_M_dispose(v7); + } + return result; +} + +//----- (00403C98) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (00403CAC) -------------------------------------------------------- +void __fastcall night::NSToken::~NSToken(int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(a1 + 24); + std::_Vector_base::_M_deallocate(*(void **)(a1 + 12)); +} + +//----- (00403CC6) -------------------------------------------------------- +_DWORD *__thiscall night::NSGod::gen_son(void *this, int a2) +{ + _DWORD *v3; // eax + _DWORD *v4; // ebx + void (__cdecl *v6)(void *); // [esp+4h] [ebp-34h] + void (__cdecl *v7)(void *); // [esp+4h] [ebp-34h] + int v8[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + v3 = operator new((struct type_info *)0x1C, v6); + *v3 = v3 + 2; + v3[1] = 0; + *((_BYTE *)v3 + 8) = 0; + v8[0] = (int)v3; + std::string::_M_assign((int)v3, a2); + v4 = operator new((struct type_info *)0xF8, v7); + *v4 = v4 + 2; + v4[6] = v4 + 8; + v4[15] = v4 + 17; + v4[21] = v4 + 23; + v4[27] = v4 + 29; + v4[33] = v4 + 35; + v4[39] = v4 + 41; + v4[1] = 0; + *((_BYTE *)v4 + 8) = 0; + v4[7] = 0; + *((_BYTE *)v4 + 32) = 0; + v4[16] = 0; + *((_BYTE *)v4 + 68) = 0; + v4[22] = 0; + *((_BYTE *)v4 + 92) = 0; + v4[28] = 0; + *((_BYTE *)v4 + 116) = 0; + v4[34] = 0; + *((_BYTE *)v4 + 140) = 0; + v4[40] = 0; + *((_BYTE *)v4 + 164) = 0; + v4[13] = 0; + v4[12] = 0; + *((_BYTE *)v4 + 200) = 0; + *((_BYTE *)v4 + 56) = 0; + v4[55] = 0; + v4[54] = 0; + v4[53] = 0; + v4[52] = 0; + v4[51] = 0; + v4[48] = 0; + v4[47] = 0; + v4[46] = 0; + v4[45] = 0; + v4[61] = 0; + v4[60] = 0; + v4[58] = 0; + v4[57] = 0; + v4[49] = 0; + v4[59] = 0; + v4[56] = 0; + std::string::_M_assign((int)v4, a2); + *(_DWORD *)(v8[0] + 24) = v4; + std::vector::push_back((int)this, v8); + return v4; +} +// 403CDB: variable 'v6' is possibly undefined +// 403D05: variable 'v7' is possibly undefined +// 403CC6: using guessed type int var_1C[7]; + +//----- (00403E7E) -------------------------------------------------------- +_DWORD *__thiscall night::NSToken::read_string(night::NSStream **this, char a2, int a3) +{ + bool v3; // di + bool v5; // si + night::NSStream *v6; // ebx + _DWORD *v7; // ebx + int v9[3]; // [esp+24h] [ebp-54h] BYREF + void *v10[2]; // [esp+30h] [ebp-48h] BYREF + char v11; // [esp+38h] [ebp-40h] BYREF + void *v12[12]; // [esp+48h] [ebp-30h] BYREF + + v3 = 0; + night::NSStream::next(v12, this[1]); + v10[1] = 0; + v10[0] = &v11; + v11 = 0; + while ( 1 ) + { + v5 = night::NSStream::eof(this[1]); + if ( v5 ) + break; + night::NSStream::next(v9, this[1]); + if ( LOBYTE(v9[0]) == 10 ) + { + if ( !v3 ) + { + std::string::basic_string(v12, "Unexpected `\\n`"); + night::NSStream::err(this[1], (int)v12, 0, 0, 0); + } + std::string::push_back(v10, 10); + } + else + { + if ( !v3 ) + { + if ( LOBYTE(v9[0]) == 92 ) + { + std::string::push_back(v10, 92); + v5 = 1; + goto LABEL_10; + } + if ( LOBYTE(v9[0]) == a2 ) + break; + } + std::string::push_back(v10, v9[0]); + } +LABEL_10: + v3 = v5; + } + v6 = *this; + std::string::basic_string(v12, (int)&night::NS_TYPE_STR); + v7 = night::NSGod::gen_son(v6, (int)v12); + std::string::_M_dispose(v12); + WXML::Rewrite::ToStringCode((int)v12, (int *)v10); + std::string::operator=(v7 + 15, v12); + std::string::_M_dispose(v12); + std::string::operator=(v7 + 27, a2); + std::string::_M_assign((int)(v7 + 21), a3); + std::string::_M_dispose(v10); + return v7; +} +// 403E7E: using guessed type int var_54[3]; + +//----- (00403FF6) -------------------------------------------------------- +_DWORD *__thiscall night::NSToken::read_number(night::NSStream **this, int a2) +{ + char v3; // di + _DWORD *v4; // eax + night::NSStream *v5; // ebx + _DWORD *v6; // ebx + char v8; // [esp+1Fh] [ebp-79h] BYREF + void *v9[6]; // [esp+20h] [ebp-78h] BYREF + _DWORD v10[6]; // [esp+38h] [ebp-60h] BYREF + int v11[2]; // [esp+50h] [ebp-48h] BYREF + char v12; // [esp+58h] [ebp-40h] BYREF + int v13[12]; // [esp+68h] [ebp-30h] BYREF + + v8 = 0; + night::NSToken::read_while[abi:cxx11]( + (int)v9, + (int)this, + (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::rw_cb_number, + (int)&v8); + night::NSStream::peek(v13, this[1]); + v3 = v13[0]; + if ( (unsigned __int8)night::NSToken::tk_is_var_start(SLOBYTE(v13[0])) ) + { + v11[0] = (int)&v12; + std::string::_M_construct(v11, 1u, v3); + std::operator+(v13, "Unexpected token `", (unsigned int *)v11); + v4 = std::string::append(v13, "`"); + std::string::basic_string(v10, v4); + std::string::_M_dispose((void **)v13); + std::string::_M_dispose((void **)v11); + night::NSStream::err(this[1], (int)v10, 0, 0, 0); + } + v5 = *this; + std::string::basic_string(v13, (int)&night::NS_TYPE_NUM); + v6 = night::NSGod::gen_son(v5, (int)v13); + std::string::_M_dispose((void **)v13); + std::string::_M_assign((int)(v6 + 15), (int)v9); + std::string::_M_assign((int)(v6 + 21), a2); + std::string::_M_dispose(v9); + return v6; +} +// 403FF6: using guessed type _DWORD var_60[6]; + +//----- (00404166) -------------------------------------------------------- +int __thiscall night::NSGod::gen_girl(void *this, int a2) +{ + _DWORD *v3; // eax + _DWORD *v4; // eax + int v5; // edx + _DWORD *v6; // eax + int v7; // edx + void (__cdecl *v9)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v10)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v11)(void *); // [esp+4h] [ebp-24h] + _DWORD *v12; // [esp+1Ch] [ebp-Ch] BYREF + + v3 = operator new((struct type_info *)0x1C, v9); + *v3 = v3 + 2; + v3[1] = 0; + *((_BYTE *)v3 + 8) = 0; + v12 = v3; + std::string::_M_assign((int)v3, a2); + if ( std::operator==((int)&night::std_v_n, a2) ) + { + v4 = operator new((struct type_info *)0xC, v10); + v5 = (int)v12; + *v4 = 0; + v4[1] = 0; + v4[2] = 0; + *(_DWORD *)(v5 + 24) = v4; + } + if ( std::operator==((int)&night::std_v_v_n, a2) ) + { + v6 = operator new((struct type_info *)0xC, v11); + v7 = (int)v12; + *v6 = 0; + v6[1] = 0; + v6[2] = 0; + *(_DWORD *)(v7 + 24) = v6; + } + std::vector::push_back((int)this, &v12); + return v12[6]; +} +// 40417A: variable 'v9' is possibly undefined +// 4041B8: variable 'v10' is possibly undefined +// 4041F2: variable 'v11' is possibly undefined + +//----- (0040422E) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (00404242) -------------------------------------------------------- +void __thiscall night::NSToken::push(int this, int a2) +{ + if ( *(_DWORD *)(this + 8) ) + { + std::vector::push_back((void **)(this + 12), (_DWORD *)(this + 8)); + *(_DWORD *)(this + 8) = 0; + } + if ( a2 ) + std::vector::push_back((void **)(this + 12), &a2); +} + +//----- (00404284) -------------------------------------------------------- +_DWORD *__thiscall night::NSToken::read_var(int this, int a2) +{ + _DWORD *v3; // eax + int v4; // edi + night::NSStream *v5; // ebx + _DWORD *v6; // ebx + _DWORD *v7; // eax + int v8; // edi + night::NSStream *v9; // ebx + void *v10; // eax + _DWORD v12[3]; // [esp+24h] [ebp-84h] BYREF + void *v13[6]; // [esp+30h] [ebp-78h] BYREF + void *v14[6]; // [esp+48h] [ebp-60h] BYREF + void *v15[6]; // [esp+60h] [ebp-48h] BYREF + void *v16[12]; // [esp+78h] [ebp-30h] BYREF + + night::NSStream::peek(v12, *(night::NSStream **)(this + 4)); + night::NSToken::read_while[abi:cxx11]( + (int)v13, + this, + (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_var, + 0); + std::string::basic_string(v14, (int)v13); + std::operator+((int)v15, (char *)asc_51BF80, (int)v14); + v3 = std::string::append(v15, (char *)asc_51BF80); + std::string::basic_string(v16, v3); + v4 = std::string::find(night::NS_BUILTIN_TYPE, (int)v16, 0); + std::string::_M_dispose(v16); + std::string::_M_dispose(v15); + std::string::_M_dispose(v14); + if ( v4 == -1 ) + { + std::string::basic_string(v14, (int)v13); + std::operator+((int)v15, (char *)asc_51BF80, (int)v14); + v7 = std::string::append(v15, (char *)asc_51BF80); + std::string::basic_string(v16, v7); + v8 = std::string::find(night::NS_BUILTIN_KW, (int)v16, 0); + std::string::_M_dispose(v16); + std::string::_M_dispose(v15); + std::string::_M_dispose(v14); + v9 = *(night::NSStream **)this; + v10 = &night::NS_TYPE_KW; + if ( v8 == -1 ) + v10 = &night::NS_TYPE_VAR; + std::string::basic_string(v16, (int)v10); + v6 = night::NSGod::gen_son(v9, (int)v16); + std::string::_M_dispose(v16); + if ( v8 == -1 ) + std::operator+(v16, (int)&night::nsv_, (int)v13); + else + std::string::basic_string(v16, (int)v13); + std::string::operator=(v6 + 15, v16); + std::string::_M_dispose(v16); + std::string::_M_assign((int)(v6 + 6), (int)v13); + std::string::_M_assign((int)(v6 + 21), a2); + v6[12] = v12[1]; + v6[13] = v12[2]; + if ( !*std::map::operator[]((_DWORD *)(this + 24), (int)v13) ) + *std::map::operator[]((_DWORD *)(this + 24), (int)v13) = *(_DWORD *)(this + 44); + } + else + { + v5 = *(night::NSStream **)this; + std::string::basic_string(v16, (int)&night::NS_TYPE_B_TYPE); + v6 = night::NSGod::gen_son(v5, (int)v16); + std::string::_M_dispose(v16); + std::string::_M_assign((int)(v6 + 15), (int)v13); + std::string::_M_assign((int)(v6 + 21), a2); + } + std::string::_M_dispose(v13); + return v6; +} +// 586AB0: using guessed type int night::NS_BUILTIN_TYPE[6]; +// 586AC8: using guessed type int night::NS_BUILTIN_KW[6]; + +//----- (00404532) -------------------------------------------------------- +_DWORD *__fastcall night::NSToken::read_next(int a1) +{ + int v2; // eax + _DWORD *v3; // ebx + char v4; // bl + _DWORD *string; // eax + night::NSStream *v6; // ebx + night::NSStream *v7; // ebx + _DWORD *v8; // eax + int v10; // [esp+1Ch] [ebp-8Ch] + int v11; // [esp+1Ch] [ebp-8Ch] + _DWORD *v12; // [esp+1Ch] [ebp-8Ch] + int v13[3]; // [esp+24h] [ebp-84h] BYREF + void *v14[6]; // [esp+30h] [ebp-78h] BYREF + int v15[2]; // [esp+48h] [ebp-60h] BYREF + char v16[16]; // [esp+50h] [ebp-58h] BYREF + int v17[6]; // [esp+60h] [ebp-48h] BYREF + void *v18[2]; // [esp+78h] [ebp-30h] BYREF + char v19[40]; // [esp+80h] [ebp-28h] BYREF + + v2 = *(_DWORD *)(a1 + 16); + if ( v2 == *(_DWORD *)(a1 + 12) ) + { + night::NSToken::read_while[abi:cxx11]( + (int)v14, + a1, + (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_whitespace, + 0); + if ( night::NSStream::eof(*(night::NSStream **)(a1 + 4)) + || (night::NSToken::skip_comment((night::NSStream **)a1, v14), night::NSStream::eof(*(night::NSStream **)(a1 + 4))) ) + { + v3 = 0; + } + else + { + night::NSStream::peek(v13, *(night::NSStream **)(a1 + 4)); + v4 = v13[0]; + if ( LOBYTE(v13[0]) == 34 || LOBYTE(v13[0]) == 39 ) + { + string = night::NSToken::read_string((night::NSStream **)a1, v13[0], (int)v14); + } + else if ( (unsigned __int8)(LOBYTE(v13[0]) - 48) > 9u ) + { + if ( !(unsigned __int8)night::NSToken::tk_is_var_start(SLOBYTE(v13[0])) ) + { + v18[0] = v19; + std::string::_M_construct(v18, 1u, v4); + v10 = std::string::find(night::NS_BUILTIN_PUNC, (int)v18, 0); + std::string::_M_dispose(v18); + if ( v10 == -1 ) + { + v18[0] = v19; + std::string::_M_construct(v18, 1u, v4); + v11 = std::string::find(night::NS_BUILTIN_OP, (int)v18, 0); + std::string::_M_dispose(v18); + if ( v11 == -1 ) + { + v12 = *(_DWORD **)(a1 + 4); + v15[0] = (int)v16; + std::string::_M_construct(v15, 1u, v4); + std::operator+(v17, "Unexpected token `", (unsigned int *)v15); + v8 = std::string::append(v17, "`"); + std::string::basic_string(v18, v8); + night::NSStream::err(v12, (int)v18, 0, 0, 0); + } + v15[0] = (int)v16; + v15[1] = 0; + v16[0] = 0; + night::NSToken::read_while[abi:cxx11]( + (int)v17, + a1, + (unsigned __int8 (__cdecl *)(_DWORD, int))night::NSToken::tk_is_valid_op_str, + (int)v15); + v7 = *(night::NSStream **)a1; + std::string::basic_string(v18, (int)&night::NS_TYPE_OP); + v3 = night::NSGod::gen_son(v7, (int)v18); + std::string::_M_dispose(v18); + std::string::_M_assign((int)(v3 + 15), (int)v17); + std::string::_M_assign((int)(v3 + 21), (int)v14); + std::string::_M_dispose((void **)v17); + std::string::_M_dispose((void **)v15); + } + else + { + v6 = *(night::NSStream **)a1; + std::string::basic_string(v18, (int)&night::NS_TYPE_PUNC); + v3 = night::NSGod::gen_son(v6, (int)v18); + std::string::_M_dispose(v18); + night::NSStream::next(v17, *(night::NSStream **)(a1 + 4)); + v18[0] = v19; + std::string::_M_construct(v18, 1u, v17[0]); + std::string::operator=(v3 + 15, v18); + std::string::_M_dispose(v18); + std::string::_M_assign((int)(v3 + 21), (int)v14); + } + goto LABEL_19; + } + string = night::NSToken::read_var(a1, (int)v14); + } + else + { + string = night::NSToken::read_number((night::NSStream **)a1, (int)v14); + } + v3 = string; + } +LABEL_19: + std::string::_M_dispose(v14); + return v3; + } + v3 = *(_DWORD **)(v2 - 4); + *(_DWORD *)(a1 + 16) = v2 - 4; + return v3; +} +// 586AF8: using guessed type int night::NS_BUILTIN_PUNC[6]; +// 586B40: using guessed type int night::NS_BUILTIN_OP[6]; +// 404532: using guessed type int var_84[3]; + +//----- (004048A6) -------------------------------------------------------- +_DWORD *__fastcall night::NSToken::peek(int a1) +{ + _DWORD *result; // eax + + result = *(_DWORD **)(a1 + 8); + if ( !result ) + { + result = night::NSToken::read_next(a1); + *(_DWORD *)(a1 + 8) = result; + } + return result; +} + +//----- (004048C2) -------------------------------------------------------- +bool __fastcall night::NSToken::eof(int a1) +{ + return night::NSToken::peek(a1) == 0; +} + +//----- (004048D4) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::is_punctuation(int *this, int a2) +{ + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v2 = night::NSToken::peek(this[7]); + v3 = v2; + if ( v2 && (!std::operator==((int)&night::NS_TYPE_PUNC, (int)v2) || !std::operator==(a2, (int)(v3 + 15))) ) + return 0; + return v3; +} + +//----- (00404920) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::is_buildin_keywords(int *this, int a2) +{ + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v2 = night::NSToken::peek(this[7]); + v3 = v2; + if ( v2 && (!std::operator==((int)&night::NS_TYPE_KW, (int)v2) || !std::operator==(a2, (int)(v3 + 15))) ) + return 0; + return v3; +} + +//----- (0040496C) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::is_op(int *this, int a2) +{ + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v2 = night::NSToken::peek(this[7]); + v3 = v2; + if ( v2 + && (!std::operator==((int)&night::NS_TYPE_OP, (int)v2) + || *(_DWORD *)(a2 + 4) && !std::operator==(a2, (int)(v3 + 15))) ) + { + return 0; + } + return v3; +} + +//----- (004049C0) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::is_op_or_comma(int *this, int a2) +{ + _DWORD *v4; // [esp+1Ch] [ebp-2Ch] + void *v5[8]; // [esp+28h] [ebp-20h] BYREF + + std::string::basic_string(v5, ","); + v4 = night::NSASTParse::is_punctuation(this, (int)v5); + std::string::_M_dispose(v5); + if ( !v4 ) + return night::NSASTParse::is_op(this, a2); + std::string::_M_assign((int)v4, (int)&night::NS_TYPE_OP); + return v4; +} + +//----- (00404A36) -------------------------------------------------------- +int __fastcall night::NSASTParse::end_line(int a1) +{ + _DWORD *v1; // eax + int v2; // edx + + v1 = night::NSToken::peek(*(_DWORD *)(a1 + 28)); + LOBYTE(v2) = 1; + if ( v1 ) + LOBYTE(v2) = std::string::find(v1 + 21, 10, 0) + 1 != 0; + return v2; +} +// 404A68: variable 'v2' is possibly undefined + +//----- (00404A6C) -------------------------------------------------------- +int __userpurge night::NSASTParse::is_op_self@(int a1@, night::NSASTParse *this, bool a3) +{ + _DWORD *v3; // eax + int v4; // ebx + int v5; // edi + int v6; // eax + int v7; // eax + + v3 = night::NSToken::peek(*(_DWORD *)(a1 + 28)); + if ( !v3 ) + return 0; + v5 = (int)v3; + LOBYTE(v6) = std::operator==((int)&night::NS_TYPE_OP, (int)v3); + v4 = v6; + if ( !(_BYTE)v6 ) + return 0; + if ( std::string::find_first_not_of((int *)(v5 + 60), (int)&night::NS_BUILTIN_OP_SELF, 0) == -1 ) + return v4; + if ( !(_BYTE)this || !std::operator==((int)&night::NS_TYPE_OP, v5) ) + return 0; + if ( !std::operator==((char *)&asc_51BF80[2], v5 + 60) ) + { + LOBYTE(v7) = std::operator==((char *)&asc_51BF80[4], v5 + 60); + return v7; + } + return v4; +} +// 404A9D: variable 'v6' is possibly undefined +// 404AFF: variable 'v7' is possibly undefined + +//----- (00404B0E) -------------------------------------------------------- +bool __userpurge night::NSASTParse::is_obj_op_self@(int *a1@, night::NSASTParse *this, bool a3) +{ + _DWORD *v4; // eax + bool v6; // [esp+1Fh] [ebp-49h] + void *v7[6]; // [esp+20h] [ebp-48h] BYREF + void *v8[12]; // [esp+38h] [ebp-30h] BYREF + + if ( (_BYTE)this ) + { + v4 = night::NSToken::peek(a1[7]); + if ( v4 ) + { + if ( std::string::find(v4 + 21, 10, 0) != (char *)-1 ) + return 0; + } + } + std::string::basic_string(v7, "++"); + v6 = 1; + if ( !night::NSASTParse::is_op(a1, (int)v7) ) + { + std::string::basic_string(v8, "--"); + v6 = night::NSASTParse::is_op(a1, (int)v8) != 0; + std::string::_M_dispose(v8); + } + std::string::_M_dispose(v7); + return v6; +} + +//----- (00404BDE) -------------------------------------------------------- +_DWORD *__fastcall night::NSToken::next(int a1) +{ + _DWORD *result; // eax + + result = *(_DWORD **)(a1 + 8); + *(_DWORD *)(a1 + 8) = 0; + if ( !result ) + return night::NSToken::read_next(a1); + return result; +} + +//----- (00404BF4) -------------------------------------------------------- +unsigned __int8 __thiscall night::NSASTParse::ignore_punc_pass_sem(int *this, int a2) +{ + unsigned __int8 result; // al + _DWORD *v4; // esi + unsigned int v5; // esi + _DWORD *v6; // eax + _DWORD *v7; // [esp+1Ch] [ebp-6Ch] + bool v8; // [esp+1Ch] [ebp-6Ch] + _DWORD **v9; // [esp+1Ch] [ebp-6Ch] + void *v10[6]; // [esp+28h] [ebp-60h] BYREF + _DWORD v11[6]; // [esp+40h] [ebp-48h] BYREF + void *v12[12]; // [esp+58h] [ebp-30h] BYREF + + if ( night::NSASTParse::is_punctuation(this, a2) ) + return (unsigned __int8)night::NSToken::next(this[7]); + result = std::operator==(";", a2); + if ( !result ) + { + v7 = night::NSToken::peek(this[7]); + std::string::basic_string(v10, (char *)asc_51BF80); + if ( v7 ) + { + v4 = v7 + 15; + if ( v7[16] > 3u + && (std::string::substr(v12, v7 + 15, 0, 3u), + v8 = std::operator==((int)v12, (int)&night::nsv_), + std::string::_M_dispose(v12), + v8) ) + { + std::string::substr(v12, v4, 3u, 0xFFFFFFFF); + std::string::operator=(v10, v12); + std::string::_M_dispose(v12); + } + else + { + std::string::_M_assign((int)v10, (int)v4); + } + v5 = -(int)v10[1]; + } + else + { + v5 = 0; + } + v9 = (_DWORD **)this[7]; + std::operator+((int)v11, "Unexpected identifier `", (int)v10); + v6 = std::string::append(v11, "`"); + std::string::basic_string(v12, v6); + night::NSToken::err(v9, (int)v12, 0, v5, 0); + } + return result; +} +// 404BF4: using guessed type _DWORD var_48[6]; + +//----- (00404D80) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::ignore_punc(int *this, int a2) +{ + _DWORD *v3; // eax + int v4; // ecx + _DWORD *v6; // esi + unsigned int v7; // esi + _DWORD *v8; // eax + _DWORD *v9; // [esp+1Ch] [ebp-6Ch] + bool v10; // [esp+1Ch] [ebp-6Ch] + _DWORD **v11; // [esp+1Ch] [ebp-6Ch] + void *v12[6]; // [esp+28h] [ebp-60h] BYREF + _DWORD v13[6]; // [esp+40h] [ebp-48h] BYREF + void *v14[12]; // [esp+58h] [ebp-30h] BYREF + + v3 = night::NSASTParse::is_punctuation(this, a2); + v4 = this[7]; + if ( !v3 ) + { + v9 = night::NSToken::peek(v4); + std::string::basic_string(v12, (char *)asc_51BF80); + if ( v9 ) + { + v6 = v9 + 15; + if ( v9[16] > 3u + && (std::string::substr(v14, v9 + 15, 0, 3u), + v10 = std::operator==((int)v14, (int)&night::nsv_), + std::string::_M_dispose(v14), + v10) ) + { + std::string::substr(v14, v6, 3u, 0xFFFFFFFF); + std::string::operator=(v12, v14); + std::string::_M_dispose(v14); + } + else + { + std::string::_M_assign((int)v12, (int)v6); + } + v7 = -(int)v12[1]; + } + else + { + v7 = 0; + } + v11 = (_DWORD **)this[7]; + std::operator+((int)v13, "Unexpected identifier `", (int)v12); + v8 = std::string::append(v13, "`"); + std::string::basic_string(v14, v8); + night::NSToken::err(v11, (int)v14, 0, v7, 0); + } + return night::NSToken::next(v4); +} +// 404D80: using guessed type _DWORD var_48[6]; + +//----- (00404EEC) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::ignore_buildin_kw(int *this, int a2) +{ + _DWORD *v3; // eax + _DWORD **v4; // ebx + _DWORD *v6; // eax + _DWORD v7[6]; // [esp+10h] [ebp-48h] BYREF + _DWORD v8[12]; // [esp+28h] [ebp-30h] BYREF + + v3 = night::NSASTParse::is_buildin_keywords(this, a2); + v4 = (_DWORD **)this[7]; + if ( !v3 ) + { + std::operator+((int)v7, "Expected `", a2); + v6 = std::string::append(v7, "`"); + std::string::basic_string(v8, v6); + night::NSToken::err(v4, (int)v8, 0, 0, 0); + } + return night::NSToken::next((int)v4); +} +// 404EEC: using guessed type _DWORD var_48[6]; +// 404EEC: using guessed type _DWORD var_30[12]; + +//----- (00404F8E) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::ignore_op(int *this, int a2) +{ + _DWORD *v3; // eax + _DWORD **v4; // ebx + _DWORD *v6; // eax + _DWORD v7[6]; // [esp+10h] [ebp-48h] BYREF + _DWORD v8[12]; // [esp+28h] [ebp-30h] BYREF + + v3 = night::NSASTParse::is_op(this, a2); + v4 = (_DWORD **)this[7]; + if ( !v3 ) + { + std::operator+((int)v7, "Expected operator `", a2); + v6 = std::string::append(v7, "`"); + std::string::basic_string(v8, v6); + night::NSToken::err(v4, (int)v8, 0, 0, 0); + } + return night::NSToken::next((int)v4); +} +// 404F8E: using guessed type _DWORD var_48[6]; +// 404F8E: using guessed type _DWORD var_30[12]; + +//----- (00405030) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_trans_kw(int *a1) +{ + int v2; // ecx + int v3; // eax + _DWORD *v4; // esi + void *v5; // ebx + _DWORD *v6; // eax + _DWORD **v7; // edi + _DWORD *v8; // eax + void *v9; // ebx + void *v10; // ebx + _DWORD *v11; // ebx + int v12; // ecx + _DWORD *v13; // eax + void *v14; // esi + void *v15; // eax + void *v16; // esi + night::NSASTParse *v17; // edx + void **v18; // esi + void *v19; // ebx + _DWORD *v20; // eax + _DWORD **v21; // edi + _DWORD *v22; // eax + _DWORD **v23; // edi + _DWORD *v24; // eax + void *v25; // ebx + int v26; // ecx + _DWORD *v27; // eax + int v28; // esi + _DWORD *v29; // eax + _DWORD **v30; // edi + _DWORD **v31; // edi + _DWORD *v32; // eax + _DWORD **v33; // esi + _DWORD *v34; // eax + void *v35; // ebx + _DWORD *v36; // eax + night::NSASTParse *v38; // [esp+0h] [ebp-88h] + char v39; // [esp+17h] [ebp-71h] + unsigned int v40; // [esp+18h] [ebp-70h] + int v41; // [esp+18h] [ebp-70h] + unsigned int v42; // [esp+1Ch] [ebp-6Ch] + void *v43; // [esp+1Ch] [ebp-6Ch] + _DWORD *v44; // [esp+1Ch] [ebp-6Ch] + int v45[6]; // [esp+28h] [ebp-60h] BYREF + void *v46[6]; // [esp+40h] [ebp-48h] BYREF + void *v47[12]; // [esp+58h] [ebp-30h] BYREF + + v2 = a1[7]; + v3 = *(_DWORD *)(v2 + 4); + v40 = *(_DWORD *)(v3 + 52); + v42 = *(_DWORD *)(v3 + 56); + v4 = night::NSToken::next(v2); + std::string::basic_string(v45, (int)(v4 + 15)); + if ( std::operator==("true", (int)v45) || std::operator==("false", (int)v45) ) + { + v5 = (void *)a1[6]; + std::string::basic_string(v47, (int)&night::NS_TYPE_BOOL); + v6 = night::NSGod::gen_son(v5, (int)v47); + goto LABEL_31; + } + if ( std::operator==("null", (int)v45) + || std::operator==("undefined", (int)v45) + || std::operator==((char *)off_51BF34, (int)v45) + || std::operator==("Infinity", (int)v45) ) + { +LABEL_50: + v35 = (void *)a1[6]; + std::string::basic_string(v47, (int)&night::NS_TYPE_KW); + v11 = night::NSGod::gen_son(v35, (int)v47); + std::string::_M_dispose(v47); + std::string::_M_assign((int)(v11 + 6), (int)(v4 + 6)); + v11[12] = v4[12]; + v11[13] = v4[13]; + std::string::_M_assign((int)(v11 + 15), (int)v45); + goto LABEL_51; + } + if ( std::operator==("return", (int)v45) + || std::operator==("delete", (int)v45) + || std::operator==("void", (int)v45) ) + { + if ( !std::string::compare((int)v45, "return") && a1[8] <= 0 ) + { + v7 = (_DWORD **)a1[7]; + std::operator+((int)v46, "Illegal ", (int)v45); + v8 = std::string::append(v46, " statement"); + std::string::basic_string(v47, v8); + night::NSToken::err(v7, (int)v47, v40, v42, 1); + } + v43 = (void *)a1[6]; + std::string::basic_string(v47, (int)&night::NS_TYPE_VAR); + v44 = night::NSGod::gen_son(v43, (int)v47); + std::string::_M_dispose(v47); + std::string::_M_assign((int)(v44 + 15), (int)v45); + std::string::_M_assign((int)(v44 + 6), (int)(v4 + 6)); + v9 = (void *)a1[6]; + v44[12] = v4[12]; + v44[13] = v4[13]; + std::string::basic_string(v47, (int)&night::std_v_v_n); + v41 = night::NSGod::gen_girl(v9, (int)v47); + std::string::_M_dispose(v47); + v10 = (void *)a1[6]; + std::string::basic_string(v47, (int)&night::NS_TYPE_CALL); + v11 = night::NSGod::gen_son(v10, (int)v47); + std::string::_M_dispose(v47); + v12 = a1[7]; + v11[55] = v44; + v11[56] = v41; + v13 = night::NSToken::peek(v12); + if ( v13 && std::string::find(v13 + 21, 10, 0) == (char *)-1 ) + { + v14 = (void *)a1[6]; + std::string::basic_string(v47, (int)&night::std_v_n); + v15 = (void *)night::NSGod::gen_girl(v14, (int)v47); + v38 = v17; + v46[0] = v15; + std::string::_M_dispose(v47); + v18 = (void **)v46[0]; + v47[0] = (void *)night::NSASTParse::ast_expression(v38); + std::vector::emplace_back(v18, v47); + } + else + { + v16 = (void *)a1[6]; + std::string::basic_string(v47, (int)&night::std_v_n); + v46[0] = (void *)night::NSGod::gen_girl(v16, (int)v47); + std::string::_M_dispose(v47); + } + std::vector>>::push_back(v41, v46); + goto LABEL_51; + } + if ( std::operator==("typeof", (int)v45) ) + { + v19 = (void *)a1[6]; + std::string::basic_string(v47, (int)&night::NS_TYPE_OP_SELF); + v11 = night::NSGod::gen_son(v19, (int)v47); + std::string::_M_dispose(v47); + std::string::basic_string(v47, (int)v45); + std::string::append(v47, (char *)asc_51BF80); + std::string::operator=(v11 + 39, v47); + std::string::_M_dispose(v47); + v20 = night::NSASTParse::ast_expression_no_binary(a1); + v11[48] = v20; + if ( !night::NSASTParse::is_exp((int)v20) ) + { + v21 = (_DWORD **)a1[7]; + std::operator+((int)v46, "Unexpected statement[", v11[48]); + v22 = std::string::append(v46, "]"); + std::string::basic_string(v47, v22); + night::NSToken::err(v21, (int)v47, v40, v42, 1); + } + goto LABEL_51; + } + if ( std::operator==("this", (int)v45) ) + goto LABEL_30; + if ( !std::operator==("arguments", (int)v45) ) + { + if ( !std::operator==("break", (int)v45) && !std::operator==("continue", (int)v45) ) + { + v30 = (_DWORD **)a1[7]; + std::operator+((int)v46, "Unexpected token `", (int)v45); + v36 = std::string::append(v46, "`"); + std::string::basic_string(v47, v36); + night::NSToken::err(v30, (int)v47, v40, v42, 1); + } + if ( !std::string::compare((int)v45, "break") && a1[9] <= 0 + || !std::string::compare((int)v45, "continue") && a1[10] <= 0 ) + { + v31 = (_DWORD **)a1[7]; + std::operator+((int)v46, "Illegal ", (int)v45); + v32 = std::string::append(v46, " statement"); + std::string::basic_string(v47, v32); + night::NSToken::err(v31, (int)v47, v40, v42, 1); + } + v39 = night::NSASTParse::end_line((int)a1); + if ( !v39 ) + { + std::string::basic_string(v46, ";"); + if ( !night::NSASTParse::is_punctuation(a1, (int)v46) ) + { + std::string::basic_string(v47, "}"); + v39 = night::NSASTParse::is_punctuation(a1, (int)v47) == 0; + std::string::_M_dispose(v47); + } + std::string::_M_dispose(v46); + if ( v39 ) + { + v33 = (_DWORD **)a1[7]; + std::operator+((int)v46, "Unexpected token after `", (int)v45); + v34 = std::string::append(v46, "`"); + std::string::basic_string(v47, v34); + night::NSToken::err(v33, (int)v47, v40, v42, 1); + } + } + goto LABEL_50; + } + if ( a1[8] <= 0 ) + { + v23 = (_DWORD **)a1[7]; + std::operator+((int)v46, "Illegal ", (int)v45); + v24 = std::string::append(v46, " statement"); + std::string::basic_string(v47, v24); + night::NSToken::err(v23, (int)v47, v40, v42, 1); + } +LABEL_30: + v25 = (void *)a1[6]; + std::string::basic_string(v47, (int)&night::NS_TYPE_KW); + v6 = night::NSGod::gen_son(v25, (int)v47); +LABEL_31: + v11 = v6; + std::string::_M_dispose(v47); + std::string::_M_assign((int)(v11 + 15), (int)v45); + std::string::_M_assign((int)(v11 + 6), (int)(v4 + 6)); + v26 = a1[7]; + v11[12] = v4[12]; + v11[13] = v4[13]; + v27 = night::NSToken::peek(v26); + if ( v27 ) + { + v28 = (int)(v27 + 15); + if ( std::operator==("[", (int)(v27 + 15)) ) + { + v29 = night::NSASTParse::ast_obj_op(a1, (int)v11); +LABEL_36: + v11 = night::NSASTParse::make_call_or_just_expression(a1, (int)v29); + goto LABEL_51; + } + if ( std::operator==(".", v28) ) + { + v29 = night::NSASTParse::ast_obj_dot(a1, (int)v11); + goto LABEL_36; + } + } +LABEL_51: + std::string::_M_dispose((void **)v45); + return v11; +} +// 405354: variable 'v17' is possibly undefined + +//----- (004058D8) -------------------------------------------------------- +_DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, night::NSASTParse *this, bool a3) +{ + _DWORD *v4; // ebx + void *v5; // ebx + void **v6; // ebx + void *v7; // esi + int v8; // eax + unsigned int v9; // esi + _DWORD **v10; // ebx + _DWORD *v11; // eax + void *v12; // esi + void *v13; // esi + unsigned int *v14; // ecx + _DWORD *v15; // eax + int v16; // ebx + _DWORD *v17; // eax + _DWORD *v19; // ebx + _DWORD *v20; // esi + bool v21; // bl + bool v22; // al + _DWORD *v23; // eax + _DWORD *v24; // ebx + _DWORD *v25; // ebx + _DWORD *v26; // ebx + _DWORD *v27; // ebx + _DWORD *v28; // ebx + _DWORD *v29; // ebx + char v30; // bl + char v31; // si + char v32; // dl + char v33; // al + _DWORD *v34; // ebx + _DWORD *v35; // ebx + _DWORD *v36; // ebx + _DWORD *v37; // ebx + void *v38; // ebx + _DWORD *v39; // eax + _DWORD *v40; // eax + _DWORD *v41; // eax + int v42; // ebx + _DWORD **v43; // ebx + int v44; // esi + _DWORD *v45; // eax + int v46; // esi + _DWORD *v47; // eax + int v48; // esi + _DWORD **v49; // ebx + _DWORD *v50; // eax + night::NSASTParse *v51; // [esp+0h] [ebp-1B8h] + bool v52; // [esp+4h] [ebp-1B4h] + bool v53; // [esp+4h] [ebp-1B4h] + bool v54; // [esp+4h] [ebp-1B4h] + char v55; // [esp+18h] [ebp-1A0h] + char is_op_self; // [esp+1Ch] [ebp-19Ch] + char v57; // [esp+1Ch] [ebp-19Ch] + char v58; // [esp+1Ch] [ebp-19Ch] + bool v59; // [esp+21h] [ebp-197h] + char v60; // [esp+22h] [ebp-196h] + char v61; // [esp+23h] [ebp-195h] + char v62; // [esp+24h] [ebp-194h] + void *v63; // [esp+28h] [ebp-190h] + _DWORD *v64; // [esp+28h] [ebp-190h] + char v65; // [esp+28h] [ebp-190h] + unsigned int v66; // [esp+2Ch] [ebp-18Ch] + _DWORD *v67; // [esp+2Ch] [ebp-18Ch] + char v68; // [esp+2Ch] [ebp-18Ch] + _DWORD *v69; // [esp+2Ch] [ebp-18Ch] + _DWORD *v70; // [esp+2Ch] [ebp-18Ch] + bool v71[4]; // [esp+38h] [ebp-180h] BYREF + int v72; // [esp+3Ch] [ebp-17Ch] + void *v73[6]; // [esp+50h] [ebp-168h] BYREF + void *v74[6]; // [esp+68h] [ebp-150h] BYREF + void *v75[6]; // [esp+80h] [ebp-138h] BYREF + void *v76[6]; // [esp+98h] [ebp-120h] BYREF + void *v77[6]; // [esp+B0h] [ebp-108h] BYREF + void *v78[6]; // [esp+C8h] [ebp-F0h] BYREF + void *v79[6]; // [esp+E0h] [ebp-D8h] BYREF + void *v80[6]; // [esp+F8h] [ebp-C0h] BYREF + void *v81[6]; // [esp+110h] [ebp-A8h] BYREF + void *v82[6]; // [esp+128h] [ebp-90h] BYREF + void *v83[6]; // [esp+140h] [ebp-78h] BYREF + void *v84[6]; // [esp+158h] [ebp-60h] BYREF + void *v85[6]; // [esp+170h] [ebp-48h] BYREF + void *v86[12]; // [esp+188h] [ebp-30h] BYREF + + std::string::basic_string(v86, "("); + v4 = night::NSASTParse::is_punctuation(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v4 ) + { + v5 = (void *)a1[6]; + std::string::basic_string(v86, (int)&night::std_v_n); + v6 = (void **)night::NSGod::gen_girl(v5, (int)v86); + std::string::_M_dispose(v86); + v7 = (void *)a1[6]; + std::string::basic_string(v86, (int)&night::NS_TYPE_PUNC); + v83[0] = night::NSGod::gen_son(v7, (int)v86); + std::string::_M_dispose(v86); + std::string::operator=((unsigned int *)v83[0] + 15, "("); + std::vector::push_back(v6, v83); + v51 = (night::NSASTParse *)v7; + night::NSToken::next(a1[7]); + v8 = *(_DWORD *)(a1[7] + 4); + v9 = *(_DWORD *)(v8 + 52); + v66 = *(_DWORD *)(v8 + 56); + v84[0] = (void *)night::NSASTParse::ast_expression(v51); + if ( !night::NSASTParse::is_exp((int)v84[0]) ) + { + v63 = v84[0]; + if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_ASSIGN, (int)v84[0]) ) + { + v10 = (_DWORD **)a1[7]; + std::operator+((int)v85, "Unexpected statement[", (int)v63); + v11 = std::string::append(v85, "]"); + std::string::basic_string(v86, v11); + night::NSToken::err(v10, (int)v86, v9, v66, 1); + } + } + std::vector::push_back(v6, v84); + std::string::basic_string(v86, ")"); + night::NSASTParse::ignore_punc(a1, (int)v86); + std::string::_M_dispose(v86); + v12 = (void *)a1[6]; + std::string::basic_string(v86, (int)&night::NS_TYPE_PUNC); + v83[0] = night::NSGod::gen_son(v12, (int)v86); + std::string::_M_dispose(v86); + std::string::operator=((unsigned int *)v83[0] + 15, ")"); + std::vector::push_back(v6, v83); + v13 = (void *)a1[6]; + std::string::basic_string(v86, (int)&night::NS_TYPE_BRACKET); + v83[0] = night::NSGod::gen_son(v13, (int)v86); + std::string::_M_dispose(v86); + v14 = (unsigned int *)v83[0]; + *((_DWORD *)v83[0] + 57) = v6; + std::string::operator=(v14 + 27, (char *)off_51B9E4); + v15 = night::NSToken::peek(a1[7]); + if ( v15 ) + { + v16 = (int)(v15 + 15); + if ( std::operator==("[", (int)(v15 + 15)) ) + { + v17 = night::NSASTParse::ast_obj_op(a1, (int)v83[0]); + return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); + } + if ( std::operator==(".", v16) ) + { + v17 = night::NSASTParse::ast_obj_dot(a1, (int)v83[0]); + return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); + } + } + v17 = v83[0]; + return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); + } + std::string::basic_string(v71, (int)(a1 + 11)); + std::string::operator=(a1 + 11, (char *)off_51B9E4); + std::string::basic_string(v86, "{"); + v19 = night::NSASTParse::is_punctuation(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v19 ) + { + v64 = night::NSToken::next(a1[7]); + v20 = night::NSToken::next(a1[7]); + v67 = night::NSToken::next(a1[7]); + v21 = 0; + if ( v20 ) + { + if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v20) + || (v21 = std::operator==((int)&night::NS_TYPE_STR, (int)v20)) ) + { + v21 = 0; + if ( v67 ) + { + v21 = std::operator==((int)&night::NS_TYPE_PUNC, (int)v67); + if ( v21 ) + v21 = std::operator==(":", (int)(v67 + 15)); + } + } + if ( std::operator==((int)&night::NS_TYPE_PUNC, (int)v20) ) + { + v22 = std::operator==("}", (int)(v20 + 15)); + if ( v22 ) + v21 = v22; + } + } + night::NSToken::push(a1[7], (int)v67); + night::NSToken::push(a1[7], (int)v20); + night::NSToken::push(a1[7], (int)v64); + if ( v21 ) + { + v23 = night::NSASTParse::ast_obj_block(a1); +LABEL_110: + v40 = night::NSASTParse::make_call_or_just_expression(a1, (int)v23); + goto LABEL_112; + } + if ( !v72 || (unsigned __int8)std::operator!=("op not=", (int)v71) ) + { + v23 = night::NSASTParse::ast_code_block(a1); + goto LABEL_110; + } + } + std::string::basic_string(v86, "["); + v24 = night::NSASTParse::is_punctuation(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v24 ) + { + v23 = night::NSASTParse::ast_new_array(a1); + goto LABEL_110; + } + if ( night::NSASTParse::is_obj_op_self(a1, 0, v52) ) + { + v23 = night::NSASTParse::ast_obj_op_self(a1, 0); + goto LABEL_110; + } + is_op_self = night::NSASTParse::is_op_self((int)a1, (night::NSASTParse *)1, v53); + if ( is_op_self ) + { + v23 = night::NSASTParse::ast_op_self((int)a1); + goto LABEL_110; + } + std::string::basic_string(v86, "if"); + v25 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v25 ) + { + v23 = night::NSASTParse::ast_if(a1); + goto LABEL_110; + } + std::string::basic_string(v86, (char *)off_51BC9A); + v26 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v26 ) + { + v23 = night::NSASTParse::ast_for(a1); + goto LABEL_110; + } + std::string::basic_string(v86, "while"); + v27 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v27 ) + { + v23 = night::NSASTParse::ast_while(a1); + goto LABEL_110; + } + std::string::basic_string(v86, "do"); + v28 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v28 ) + { + v23 = night::NSASTParse::ast_do_while(a1); + goto LABEL_110; + } + std::string::basic_string(v86, "switch"); + v29 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v29 ) + { + v23 = night::NSASTParse::ast_switch(a1); + goto LABEL_110; + } + std::string::basic_string(v73, "true"); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v73) ) + { + v65 = 0; + v33 = 0; + v32 = 0; + v31 = 0; + v61 = 0; + v30 = 0; + v60 = 0; + v62 = 0; + v68 = 0; + } + else + { + std::string::basic_string(v74, "false"); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v74) ) + { + v65 = 0; + v33 = 0; + v32 = 0; + v31 = 0; + v61 = 0; + v60 = 0; + v62 = 0; + v68 = 0; + } + else + { + std::string::basic_string(v75, "null"); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v75) ) + { + v65 = 0; + v33 = 0; + v32 = 0; + v61 = 0; + v60 = 0; + v62 = 0; + v68 = 0; + } + else + { + std::string::basic_string(v76, "undefined"); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v76) ) + { + v65 = 0; + v33 = 0; + v32 = 0; + v61 = 0; + v60 = 0; + v62 = 0; + } + else + { + std::string::basic_string(v77, (char *)off_51BF34); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v77) ) + { + v65 = 0; + v33 = 0; + v32 = 0; + v61 = 0; + v60 = 0; + } + else + { + std::string::basic_string(v78, "Infinity"); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v78) ) + { + v65 = 0; + v33 = 0; + v32 = 0; + v61 = 0; + } + else + { + std::string::basic_string(v79, "return"); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v79) ) + { + v65 = 0; + v33 = 0; + v32 = 0; + } + else + { + std::string::basic_string(v80, "delete"); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v80) ) + { + v33 = 0; + v32 = 0; + } + else + { + std::string::basic_string(v81, "void"); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v81) ) + { + v33 = 0; + } + else + { + std::string::basic_string(v82, "typeof"); + if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v82) ) + { + std::string::basic_string(v83, "this"); + if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v83) ) + { + std::string::basic_string(v84, "arguments"); + v59 = 1; + if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v84) ) + { + std::string::basic_string(v85, "break"); + v59 = 1; + if ( !night::NSASTParse::is_buildin_keywords(a1, (int)v85) ) + { + std::string::basic_string(v86, "continue"); + v59 = night::NSASTParse::is_buildin_keywords(a1, (int)v86) != 0; + std::string::_M_dispose(v86); + } + std::string::_M_dispose(v85); + } + v30 = 1; + v31 = 1; + std::string::_M_dispose(v84); + v60 = 1; + v32 = 1; + v33 = 1; + v61 = 1; + v62 = 1; + v68 = 1; + v65 = 1; + goto LABEL_59; + } + is_op_self = 1; + } + v33 = 1; + } + v32 = 1; + } + v65 = 1; + } + v61 = 1; + } + v60 = 1; + } + v62 = 1; + } + v68 = 1; + } + v31 = 1; + } + v30 = 1; + } + v59 = 1; + if ( is_op_self ) + { +LABEL_59: + v55 = v32; + v57 = v33; + std::string::_M_dispose(v83); + v32 = v55; + v33 = v57; + } + if ( v33 ) + { + v58 = v32; + std::string::_M_dispose(v82); + v32 = v58; + } + if ( v32 ) + std::string::_M_dispose(v81); + if ( v65 ) + std::string::_M_dispose(v80); + if ( v61 ) + std::string::_M_dispose(v79); + if ( v60 ) + std::string::_M_dispose(v78); + if ( v62 ) + std::string::_M_dispose(v77); + if ( v68 ) + std::string::_M_dispose(v76); + if ( v31 ) + std::string::_M_dispose(v75); + if ( v30 ) + std::string::_M_dispose(v74); + std::string::_M_dispose(v73); + if ( v59 ) + { + v23 = night::NSASTParse::ast_trans_kw(a1); + goto LABEL_110; + } + std::string::basic_string(v86, "require"); + v34 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v34 ) + { + v23 = night::NSASTParse::ast_require(a1); + goto LABEL_110; + } + std::string::basic_string(v86, (char *)off_51BA88); + v35 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v35 ) + { + v23 = night::NSASTParse::ast_var(a1); + goto LABEL_110; + } + std::string::basic_string(v86, "function"); + v36 = night::NSASTParse::is_buildin_keywords(a1, (int)v86); + std::string::_M_dispose(v86); + if ( v36 ) + { + v23 = night::NSASTParse::ast_function(a1); + goto LABEL_110; + } + std::string::basic_string(v86, ";"); + v37 = night::NSASTParse::is_punctuation(a1, (int)v86); + std::string::_M_dispose(v86); + if ( !v37 ) + { + v41 = night::NSToken::next(a1[7]); + v42 = (int)v41; + if ( !v41 ) + { + v43 = (_DWORD **)a1[7]; + std::string::basic_string(v86, "End of file"); + night::NSToken::err(v43, (int)v86, 0, 0, 0); + } + if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v41) + || std::operator==((int)&night::NS_TYPE_NUM, v42) + || std::operator==((int)&night::NS_TYPE_STR, v42) ) + { + v45 = night::NSToken::peek(a1[7]); + if ( v45 ) + { + v46 = (int)(v45 + 15); + if ( std::operator==("[", (int)(v45 + 15)) ) + goto LABEL_107; + if ( std::operator==(".", v46) ) + goto LABEL_109; + } + if ( night::NSASTParse::is_obj_op_self(a1, (night::NSASTParse *)1, v54) ) + { + v23 = night::NSASTParse::ast_obj_op_self(a1, v42); + goto LABEL_110; + } + } + else + { + v44 = v42 + 60; + if ( !std::operator==((int)&night::NS_TYPE_B_TYPE, v42) ) + { + v49 = (_DWORD **)a1[7]; + std::operator+((int)v85, "Unexpected token `", v44); + v50 = std::string::append(v85, "`"); + std::string::basic_string(v86, v50); + night::NSToken::err(v49, (int)v86, 0, 0, 0); + } + if ( !std::operator==("Number", v42 + 60) + && !std::operator==("Math", v42 + 60) + && !std::operator==("Date", v42 + 60) ) + { + goto LABEL_111; + } + v47 = night::NSToken::peek(a1[7]); + if ( !v47 ) + goto LABEL_111; + v48 = (int)(v47 + 15); + if ( std::operator==("[", (int)(v47 + 15)) ) + { +LABEL_107: + v23 = night::NSASTParse::ast_obj_op(a1, v42); + goto LABEL_110; + } + if ( std::operator==(".", v48) ) + { +LABEL_109: + v23 = night::NSASTParse::ast_obj_dot(a1, v42); + goto LABEL_110; + } + } +LABEL_111: + v40 = night::NSASTParse::make_call_or_just_expression(a1, v42); + goto LABEL_112; + } + v38 = (void *)a1[6]; + std::string::basic_string(v86, (int)&night::NS_TYPE_SKIP); + v39 = night::NSGod::gen_son(v38, (int)v86); + v69 = night::NSASTParse::make_call_or_just_expression(a1, (int)v39); + std::string::_M_dispose(v86); + v40 = v69; +LABEL_112: + v70 = v40; + std::string::_M_dispose((void **)v71); + return v70; +} +// 405D36: variable 'v52' is possibly undefined +// 405D55: variable 'v53' is possibly undefined +// 4066CB: variable 'v54' is possibly undefined + +//----- (00406BA4) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_op_self(int a1) +{ + _DWORD *v2; // eax + void *v3; // ebx + _DWORD *v4; // ebx + bool v6; // [esp+4h] [ebp-54h] + _DWORD *v7; // [esp+1Ch] [ebp-3Ch] + void *v8[12]; // [esp+28h] [ebp-30h] BYREF + + v2 = night::NSToken::next(*(_DWORD *)(a1 + 28)); + v3 = *(void **)(a1 + 24); + v7 = v2; + std::string::basic_string(v8, (int)&night::NS_TYPE_OP_SELF); + v4 = night::NSGod::gen_son(v3, (int)v8); + std::string::_M_dispose(v8); + std::string::_M_assign((int)(v4 + 39), (int)(v7 + 15)); + v4[48] = night::NSASTParse::ast_dispatch(0, v6); + return v4; +} +// 406C01: variable 'v6' is possibly undefined + +//----- (00406C28) -------------------------------------------------------- +int __thiscall night::NSASTParse::make_binary_or_just_value(_DWORD *this, int a2, unsigned __int8 a3) +{ + _DWORD *v3; // esi + int v4; // edx + _DWORD *v5; // esi + _DWORD **v6; // esi + void *v7; // edi + _DWORD *v8; // edi + bool v10; // bl + char *v11; // eax + int v12; // eax + int binary_or_just_value; // edi + _DWORD **v14; // esi + void *v15; // eax + _DWORD *v16; // ebx + _DWORD **v17; // esi + bool v19; // [esp+4h] [ebp-74h] + bool v20; // [esp+4h] [ebp-74h] + bool v21; // [esp+4h] [ebp-74h] + void *v22; // [esp+18h] [ebp-60h] + unsigned int v23; // [esp+20h] [ebp-58h] + unsigned int v24; // [esp+24h] [ebp-54h] + _DWORD *v25; // [esp+28h] [ebp-50h] + void *v27[6]; // [esp+30h] [ebp-48h] BYREF + void *v28[12]; // [esp+48h] [ebp-30h] BYREF + + if ( a3 ) + { + std::string::basic_string(v27, (char *)off_51B9E4); + v3 = night::NSASTParse::is_op(this, (int)v27); + } + else + { + std::string::basic_string(v28, (char *)off_51B9E4); + v3 = night::NSASTParse::is_op_or_comma(this, (int)v28); + std::string::_M_dispose(v28); + } + if ( a3 ) + std::string::_M_dispose(v27); + if ( v3 + && !(unsigned __int8)night::NSASTParse::is_op_self((int)this, 0, v19) + && !night::NSASTParse::is_obj_op_self(this, 0, v20) + && night::NSASTParse::is_exp(a2) ) + { + v25 = night::NSToken::next(this[7]) + 15; + v4 = *(_DWORD *)(this[7] + 4); + v23 = *(_DWORD *)(v4 + 52); + v24 = *(_DWORD *)(v4 + 56); + if ( std::operator==("?", (int)v25) ) + { + v5 = night::NSASTParse::ast_ternary_expression(this); + if ( !night::NSASTParse::is_exp((int)v5) ) + { + v6 = (_DWORD **)this[7]; + std::string::basic_string(v28, "Expected exp"); + night::NSToken::err(v6, (int)v28, v23, v24, 1); + } + v7 = (void *)this[6]; + std::string::basic_string(v28, (int)&night::NS_TYPE_BINARY); + v8 = night::NSGod::gen_son(v7, (int)v28); + std::string::_M_dispose(v28); + std::string::_M_assign((int)(v8 + 39), (int)v25); + v8[46] = v5; + v8[45] = a2; + return night::NSASTParse::make_binary_or_just_value(v8, a3); + } + else + { + v10 = std::operator==("=", (int)v25); + v11 = "="; + if ( !v10 ) + v11 = "op not="; + std::string::operator=(this + 11, v11); + v12 = night::NSASTParse::ast_dispatch(0, v21); + binary_or_just_value = night::NSASTParse::make_binary_or_just_value(v12, a3); + if ( !night::NSASTParse::is_exp(binary_or_just_value) ) + { + v14 = (_DWORD **)this[7]; + std::string::basic_string(v28, "Expected exp"); + night::NSToken::err(v14, (int)v28, v23, v24, 1); + } + v22 = (void *)this[6]; + v15 = &night::NS_TYPE_ASSIGN; + if ( !v10 ) + v15 = &night::NS_TYPE_BINARY; + std::string::basic_string(v28, (int)v15); + v16 = night::NSGod::gen_son(v22, (int)v28); + std::string::_M_dispose(v28); + std::string::_M_assign((int)(v16 + 39), (int)v25); + v16[46] = binary_or_just_value; + v16[45] = a2; + if ( (std::operator==("/", (int)(v16 + 39)) || std::operator==("/=", (int)(v16 + 39))) + && (!night::NSASTParse::is_save_for_division(a2) + || !night::NSASTParse::is_save_for_division(binary_or_just_value)) ) + { + v17 = (_DWORD **)this[7]; + std::string::basic_string(v28, "Expected exp"); + night::NSToken::err(v17, (int)v28, v23, v24, 1); + } + return night::NSASTParse::make_binary_or_just_value(v16, a3); + } + } + return a2; +} +// 406CAE: variable 'v19' is possibly undefined +// 406CC6: variable 'v20' is possibly undefined +// 406E13: variable 'v21' is possibly undefined + +//----- (00406FBC) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_expression_no_comma(int *a1) +{ + int v1; // eax + int binary_or_just_value; // eax + bool v4; // [esp+4h] [ebp-24h] + + v1 = night::NSASTParse::ast_dispatch(0, v4); + binary_or_just_value = night::NSASTParse::make_binary_or_just_value(a1, v1, 1u); + return night::NSASTParse::make_call_or_just_expression(a1, binary_or_just_value); +} +// 406FCC: variable 'v4' is possibly undefined + +//----- (00406FF6) -------------------------------------------------------- +int __fastcall night::NSASTParse::ast_varname(int a1) +{ + int v2; // eax + unsigned int v3; // edi + int v4; // ebx + _DWORD **v5; // esi + night::NSASTParse *v7; // [esp+0h] [ebp-58h] + unsigned int v8; // [esp+1Ch] [ebp-3Ch] + void *v9[12]; // [esp+28h] [ebp-30h] BYREF + + v2 = *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4); + v3 = *(_DWORD *)(v2 + 56); + v8 = *(_DWORD *)(v2 + 52); + v4 = night::NSASTParse::ast_expression_no_comma(v7); + if ( (!std::operator==((int)&night::NS_TYPE_ASSIGN, v4) + || !std::operator==((int)&night::NS_TYPE_VAR, *(_DWORD *)(v4 + 180))) + && !std::operator==((int)&night::NS_TYPE_VAR, v4) ) + { + v5 = *(_DWORD ***)(a1 + 28); + std::string::basic_string(v9, "Expected variable"); + night::NSToken::err(v5, (int)v9, v8, v3, 1); + } + return v4; +} +// 407010: variable 'v7' is possibly undefined + +//----- (004070A6) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::ast_obj_op_self(_DWORD *this, int a2) +{ + void *v3; // esi + int v4; // ecx + _DWORD *v5; // eax + _DWORD **v6; // ebx + int v7; // edx + int v8; // esi + _DWORD *v9; // eax + _DWORD *v10; // edi + _DWORD **v11; // ebx + _DWORD **v12; // ebx + _DWORD *v13; // eax + int v14; // esi + void *v15; // edi + _DWORD *v16; // edi + night::NSASTParse *v18; // [esp+0h] [ebp-68h] + int v19; // [esp+14h] [ebp-54h] + int v20; // [esp+18h] [ebp-50h] + _DWORD *v21; // [esp+1Ch] [ebp-4Ch] + _DWORD v22[6]; // [esp+20h] [ebp-48h] BYREF + void *v23[12]; // [esp+38h] [ebp-30h] BYREF + + v3 = (void *)this[6]; + std::string::basic_string(v23, (int)&night::NS_TYPE_OBJ_SELF_OP); + v21 = night::NSGod::gen_son(v3, (int)v23); + std::string::_M_dispose(v23); + *((_BYTE *)v21 + 200) = a2 == 0; + v20 = (int)(v21 + 39); + std::string::operator=(v21 + 39, (char *)off_51B9E4); + v4 = this[7]; + v21[48] = 0; + v5 = night::NSToken::next(v4); + if ( !v5 ) + { + v6 = (_DWORD **)this[7]; + std::string::basic_string(v23, "End of file"); + night::NSToken::err(v6, (int)v23, 0, 0, 0); + } + v7 = (int)(v5 + 15); + v8 = (int)(v5 + 21); + v19 = (int)(v21 + 21); + if ( a2 ) + { + v21[48] = a2; + std::string::_M_assign(v20, v7); + std::string::_M_assign(v19, v8); + } + else + { + std::string::_M_assign(v20, v7); + std::string::_M_assign(v19, v8); + v9 = night::NSToken::peek(this[7]); + v10 = v9; + if ( !v9 ) + { + v11 = (_DWORD **)this[7]; + std::string::basic_string(v23, "End of file"); + night::NSToken::err(v11, (int)v23, 0, 0, 0); + } + if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v9) ) + { + v12 = (_DWORD **)this[7]; + std::operator+((int)v22, "Unexpected token `", (int)(v10 + 15)); + v13 = std::string::append(v22, "`"); + std::string::basic_string(v23, v13); + night::NSToken::err(v12, (int)v23, 0, 0, 0); + } + v14 = night::NSASTParse::ast_expression_no_comma(v18); + if ( std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, v14) ) + { + v15 = (void *)this[6]; + std::string::basic_string(v23, (int)&night::NS_TYPE_OP); + v16 = night::NSGod::gen_son(v15, (int)v23); + std::string::_M_dispose(v23); + std::string::_M_assign((int)(v16 + 15), v14 + 156); + std::string::_M_assign((int)(v16 + 21), v14 + 84); + night::NSToken::push(this[7], (int)v16); + v21[48] = *(_DWORD *)(v14 + 192); + } + else + { + v21[48] = v14; + } + } + return v21; +} +// 40723B: variable 'v18' is possibly undefined +// 4070A6: using guessed type _DWORD var_48[6]; + +//----- (00407324) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::ast_obj_dot(int *this, int a2) +{ + void *v3; // esi + void **v4; // edi + void *v5; // esi + _DWORD *v6; // esi + int v7; // ecx + int v8; // eax + _DWORD *v9; // eax + _DWORD **v10; // ebx + _DWORD **v11; // edi + _DWORD *v12; // eax + _DWORD *v13; // eax + _DWORD *v15; // [esp+14h] [ebp-54h] + unsigned int v16; // [esp+18h] [ebp-50h] + unsigned int v17; // [esp+1Ch] [ebp-4Ch] + _DWORD v18[6]; // [esp+20h] [ebp-48h] BYREF + void *v19[12]; // [esp+38h] [ebp-30h] BYREF + + v3 = (void *)this[6]; + std::string::basic_string(v19, (int)&night::std_v_n); + v4 = (void **)night::NSGod::gen_girl(v3, (int)v19); + std::string::_M_dispose(v19); + v5 = (void *)this[6]; + std::string::basic_string(v19, (int)&night::NS_TYPE_OBJ_DOT); + v6 = night::NSGod::gen_son(v5, (int)v19); + std::string::_M_dispose(v19); + v6[49] = v4; + v6[48] = a2; + do + { + std::string::basic_string(v19, "."); + night::NSASTParse::ignore_punc(this, (int)v19); + std::string::_M_dispose(v19); + v7 = this[7]; + v8 = *(_DWORD *)(v7 + 4); + v16 = *(_DWORD *)(v8 + 52); + v17 = *(_DWORD *)(v8 + 56); + v9 = night::NSToken::peek(v7); + if ( !v9 ) + { + v10 = (_DWORD **)this[7]; + std::string::basic_string(v19, "End of file"); + night::NSToken::err(v10, (int)v19, 0, 0, 0); + } + v15 = v9; + if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v9) ) + { + v11 = (_DWORD **)this[7]; + std::operator+((int)v18, "Unexpected token `", (int)(v15 + 15)); + v12 = std::string::append(v18, "`"); + std::string::basic_string(v19, v12); + night::NSToken::err(v11, (int)v19, v16, v17, 1); + } + v19[0] = night::NSASTParse::ast_expression_no_comma(this); + std::vector::emplace_back(v4, v19); + v13 = night::NSToken::peek(this[7]); + } + while ( v13 && !(unsigned __int8)std::operator!=(".", (int)(v13 + 15)) ); + return v6; +} +// 407324: using guessed type _DWORD var_48[6]; + +//----- (00407500) -------------------------------------------------------- +unsigned int *__fastcall night::NSASTParse::ast_if(int *a1) +{ + _DWORD *v2; // eax + void *v3; // esi + int v4; // edi + unsigned int *v5; // esi + _DWORD *v7; // [esp+1Ch] [ebp-3Ch] + _DWORD *v8; // [esp+1Ch] [ebp-3Ch] + _DWORD *v9; // [esp+1Ch] [ebp-3Ch] + void *v10[12]; // [esp+28h] [ebp-30h] BYREF + + std::string::basic_string(v10, "if"); + night::NSASTParse::ignore_buildin_kw(a1, (int)v10); + std::string::_M_dispose(v10); + v7 = night::NSASTParse::ast_expression_no_comma(a1); + v2 = night::NSASTParse::ast_expression_no_comma(a1); + v3 = (void *)a1[6]; + v4 = (int)v2; + std::string::basic_string(v10, (int)&night::NS_TYPE_IF); + v5 = night::NSGod::gen_son(v3, (int)v10); + std::string::_M_dispose(v10); + v5[52] = v4; + v5[53] = 0; + v5[51] = (unsigned int)v7; + if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_PROG_NO_SEM, v4) ) + { + if ( !night::NSToken::eof(a1[7]) ) + { + std::string::basic_string(v10, ";"); + v8 = night::NSASTParse::is_punctuation(a1, (int)v10); + std::string::_M_dispose(v10); + if ( v8 ) + night::NSToken::next(a1[7]); + } + std::string::operator=(v5 + 27, ";"); + } + std::string::basic_string(v10, "else"); + v9 = night::NSASTParse::is_buildin_keywords(a1, (int)v10); + std::string::_M_dispose(v10); + if ( v9 ) + { + night::NSToken::next(a1[7]); + v5[53] = (unsigned int)night::NSASTParse::ast_expression_no_comma(a1); + } + return v5; +} + +//----- (00407656) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_ternary_expression(int *a1) +{ + int v2; // edi + night::NSASTParse *v3; // ecx + int v4; // eax + void *v5; // ebx + int v6; // esi + _DWORD *result; // eax + night::NSASTParse *v8; // [esp+0h] [ebp-58h] + night::NSASTParse *v9; // [esp+0h] [ebp-58h] + _DWORD *v10; // [esp+1Ch] [ebp-3Ch] + void *v11[12]; // [esp+28h] [ebp-30h] BYREF + + v2 = night::NSASTParse::ast_expression_no_comma(v8); + std::string::basic_string(v11, ":"); + night::NSASTParse::ignore_punc(a1, (int)v11); + v9 = v3; + std::string::_M_dispose(v11); + v4 = night::NSASTParse::ast_expression_no_comma(v9); + v5 = (void *)a1[6]; + v6 = v4; + std::string::basic_string(v11, (int)&night::NS_TYPE_TERNARY); + v10 = night::NSGod::gen_son(v5, (int)v11); + std::string::_M_dispose(v11); + result = v10; + v10[45] = v2; + v10[46] = v6; + return result; +} +// 407661: variable 'v8' is possibly undefined +// 407685: variable 'v3' is possibly undefined + +//----- (004076EE) -------------------------------------------------------- +void **__thiscall night::NSASTParse::make_list_by_parser( + int *this, + int a2, + int a3, + int a4, + int a5, + char a6, + int a7, + int a8) +{ + void *v9; // edi + int v10; // eax + int v11; // edi + char i; // si + _DWORD *v13; // eax + night::NSASTParse *v14; // edx + _DWORD *v15; // eax + night::NSASTParse *v17; // [esp+0h] [ebp-58h] + night::NSASTParse *v18; // [esp+0h] [ebp-58h] + void *v19; // [esp+18h] [ebp-40h] + void **v20; // [esp+1Ch] [ebp-3Ch] + _DWORD *v21; // [esp+24h] [ebp-34h] BYREF + void *v22[12]; // [esp+28h] [ebp-30h] BYREF + + v9 = (void *)this[6]; + std::string::basic_string(v22, (int)&night::std_v_n); + v10 = night::NSGod::gen_girl(v9, (int)v22); + v11 = 0; + v20 = (void **)v10; + std::string::_M_dispose(v22); + night::NSASTParse::ignore_punc(this, a2); + for ( i = 1; !night::NSToken::eof(this[7]) && !night::NSASTParse::is_punctuation(this, a3); i = 0 ) + { + if ( !i ) + { + if ( a6 ) + night::NSASTParse::ignore_punc_pass_sem(this, a4); + else + night::NSASTParse::ignore_punc(this, a4); + ++v11; + } + if ( night::NSASTParse::is_punctuation(this, a3) ) + break; + if ( std::operator==("ast_expression_no_comma", a5) ) + { + if ( std::operator==("ast_new_array", a8) ) + { + v13 = night::NSASTParse::is_punctuation(this, a4); + v17 = v14; + if ( v13 ) + { + v19 = (void *)this[6]; + std::string::basic_string(v22, (int)&night::NS_TYPE_SKIP); + v21 = night::NSGod::gen_son(v19, (int)v22); + std::string::_M_dispose(v22); + goto LABEL_20; + } + } + v15 = (_DWORD *)night::NSASTParse::ast_expression_no_comma(v17); + } + else if ( std::operator==("ast_expression", a5) ) + { + v15 = (_DWORD *)night::NSASTParse::ast_expression(v18); + } + else + { + if ( !std::operator==("ast_varname", a5) ) + goto LABEL_20; + v15 = (_DWORD *)night::NSASTParse::ast_varname((int)this); + } + v21 = v15; +LABEL_20: + std::vector::push_back(v20, &v21); + } + if ( a7 != -1 && v11 != a7 ) + return 0; + night::NSASTParse::ignore_punc(this, a3); + return v20; +} +// 4077D7: variable 'v14' is possibly undefined +// 40780E: variable 'v17' is possibly undefined +// 40782E: variable 'v18' is possibly undefined + +//----- (004078B0) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::ast_call(int *this, int a2) +{ + void *v3; // ebx + void *v4; // ebx + _DWORD *v5; // ebx + int v6; // ecx + _DWORD *v7; // edi + _DWORD **v8; // ebx + _DWORD *v9; // eax + void ***i; // eax + _DWORD *v11; // edi + _DWORD *v12; // eax + int v13; // edi + _DWORD *v14; // eax + _DWORD *v15; // edi + _DWORD *v17; // [esp+28h] [ebp-A0h] + int v18; // [esp+2Ch] [ebp-9Ch] + void **list_by_parser; // [esp+30h] [ebp-98h] BYREF + void **v20; // [esp+34h] [ebp-94h] BYREF + void *v21[6]; // [esp+38h] [ebp-90h] BYREF + void *v22[6]; // [esp+50h] [ebp-78h] BYREF + void *v23[6]; // [esp+68h] [ebp-60h] BYREF + void *v24[6]; // [esp+80h] [ebp-48h] BYREF + void *v25[12]; // [esp+98h] [ebp-30h] BYREF + + v3 = (void *)this[6]; + std::string::basic_string(v25, (int)&night::std_v_v_n); + v18 = night::NSGod::gen_girl(v3, (int)v25); + std::string::_M_dispose(v25); + v4 = (void *)this[6]; + std::string::basic_string(v25, (int)&night::NS_TYPE_CALL); + v5 = night::NSGod::gen_son(v4, (int)v25); + std::string::_M_dispose(v25); + v6 = this[7]; + v5[55] = a2; + v5[56] = v18; + v17 = night::NSToken::peek(v6); + std::string::basic_string(v25, "("); + v7 = night::NSASTParse::is_punctuation(this, (int)v25); + std::string::_M_dispose(v25); + if ( !v7 ) + { + v8 = (_DWORD **)this[7]; + std::operator+((int)v24, "Unexpected token `", (int)(v17 + 15)); + v9 = std::string::append(v24, "`"); + std::string::basic_string(v25, v9); + night::NSToken::err(v8, (int)v25, 0, 0, 0); + } + std::string::basic_string(v25, (char *)off_51B9E4); + std::string::basic_string(v24, "ast_expression_no_comma"); + std::string::basic_string(v23, ","); + std::string::basic_string(v22, ")"); + std::string::basic_string(v21, "("); + list_by_parser = night::NSASTParse::make_list_by_parser(this, (int)v21, (int)v22, (int)v23, (int)v24, 0, -1, (int)v25); + std::string::_M_dispose(v21); + std::string::_M_dispose(v22); + std::string::_M_dispose(v23); + std::string::_M_dispose(v24); + std::string::_M_dispose(v25); + for ( i = &list_by_parser; ; i = &v20 ) + { + std::vector>>::push_back(v18, i); + std::string::basic_string(v25, "("); + v11 = night::NSASTParse::is_punctuation(this, (int)v25); + std::string::_M_dispose(v25); + if ( !v11 ) + break; + std::string::basic_string(v25, (char *)off_51B9E4); + std::string::basic_string(v24, "ast_expression_no_comma"); + std::string::basic_string(v23, ","); + std::string::basic_string(v22, ")"); + std::string::basic_string(v21, "("); + v20 = night::NSASTParse::make_list_by_parser(this, (int)v21, (int)v22, (int)v23, (int)v24, 0, -1, (int)v25); + std::string::_M_dispose(v21); + std::string::_M_dispose(v22); + std::string::_M_dispose(v23); + std::string::_M_dispose(v24); + std::string::_M_dispose(v25); + } + v12 = night::NSToken::peek(this[7]); + if ( v12 ) + { + v13 = (int)(v12 + 15); + if ( std::operator==("[", (int)(v12 + 15)) ) + { + v5 = night::NSASTParse::ast_obj_op(this, (int)v5); + std::string::basic_string(v25, "("); + v14 = night::NSASTParse::is_punctuation(this, (int)v25); + } + else + { + if ( !std::operator==(".", v13) ) + return v5; + v5 = (_DWORD *)night::NSASTParse::ast_obj_dot(v5); + std::string::basic_string(v25, "("); + v14 = night::NSASTParse::is_punctuation(this, (int)v25); + } + v15 = v14; + std::string::_M_dispose(v25); + if ( v15 ) + return (_DWORD *)night::NSASTParse::ast_call(v5); + } + return v5; +} +// 407324: using guessed type __int64 __stdcall night::NSASTParse::ast_obj_dot(_DWORD); + +//----- (00407CC4) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::make_call_or_just_expression(int *this, int a2) +{ + _DWORD *v3; // ebx + void *v5[12]; // [esp+18h] [ebp-30h] BYREF + + v3 = (_DWORD *)a2; + if ( !std::operator==((int)&night::NS_TYPE_PROG, a2) + && !std::operator==((int)&night::NS_TYPE_B_TYPE, a2) + && !std::operator==((int)&night::NS_TYPE_KW, a2) + && (!std::operator==((int)&night::NS_TYPE_FUNC, a2) + || !(unsigned __int8)std::operator!=((char *)off_51B9E4, a2 + 132)) ) + { + std::string::basic_string(v5, "("); + if ( night::NSASTParse::is_punctuation(this, (int)v5) ) + v3 = night::NSASTParse::ast_call(this, a2); + std::string::_M_dispose(v5); + } + return v3; +} + +//----- (00407D9C) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_expression(int *a1) +{ + _DWORD *v1; // eax + int binary_or_just_value; // eax + bool v4; // [esp+4h] [ebp-24h] + + v1 = night::NSASTParse::ast_dispatch(a1, 0, v4); + binary_or_just_value = night::NSASTParse::make_binary_or_just_value(a1, (int)v1, 0); + return night::NSASTParse::make_call_or_just_expression(a1, binary_or_just_value); +} +// 407DAC: variable 'v4' is possibly undefined + +//----- (00407DD6) -------------------------------------------------------- +_DWORD *__thiscall night::NSASTParse::ast_obj_op(int *this, int a2) +{ + void *v3; // ebx + void **v4; // edi + void *v5; // ebx + _DWORD *v6; // ebx + _DWORD *v7; // eax + _DWORD *v9; // eax + night::NSASTParse *v11; // [esp+0h] [ebp-58h] + bool v12; // [esp+4h] [ebp-54h] + int v13; // [esp+1Ch] [ebp-3Ch] + void *v14[12]; // [esp+28h] [ebp-30h] BYREF + + v3 = (void *)this[6]; + std::string::basic_string(v14, (int)&night::std_v_n); + v4 = (void **)night::NSGod::gen_girl(v3, (int)v14); + std::string::_M_dispose(v14); + v5 = (void *)this[6]; + std::string::basic_string(v14, (int)&night::NS_TYPE_OBJ_PROPERTY); + v6 = night::NSGod::gen_son(v5, (int)v14); + std::string::_M_dispose(v14); + v6[49] = v4; + v6[48] = a2; + do + { + std::string::basic_string(v14, "["); + v11 = (night::NSASTParse *)night::NSASTParse::ignore_punc(this, (int)v14); + std::string::_M_dispose(v14); + v14[0] = (void *)night::NSASTParse::ast_expression(v11); + std::vector::emplace_back(v4, v14); + std::string::basic_string(v14, "]"); + night::NSASTParse::ignore_punc(this, (int)v14); + std::string::_M_dispose(v14); + v7 = night::NSToken::peek(this[7]); + if ( !v7 ) + break; + v13 = (int)(v7 + 15); + if ( std::operator==(";", (int)(v7 + 15)) ) + break; + } + while ( !(unsigned __int8)std::operator!=("[", v13) ); + if ( night::NSASTParse::is_obj_op_self(this, 0, v12) ) + return night::NSASTParse::ast_obj_op_self(this, (int)v6); + v9 = night::NSToken::peek(this[7]); + if ( v9 && std::operator==(".", (int)(v9 + 15)) ) + return (_DWORD *)night::NSASTParse::ast_obj_dot(v6); + return v6; +} +// 407EF4: variable 'v12' is possibly undefined +// 407324: using guessed type __int64 __stdcall night::NSASTParse::ast_obj_dot(_DWORD); + +//----- (00407F60) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_while(int *a1) +{ + void *v2; // esi + _DWORD *v3; // esi + night::NSASTParse *v4; // edx + _DWORD *result; // eax + night::NSASTParse *v6; // [esp+0h] [ebp-38h] + night::NSASTParse *v7; // [esp+0h] [ebp-38h] + void *v8[8]; // [esp+18h] [ebp-20h] BYREF + + night::NSToken::next(a1[7]); + v2 = (void *)a1[6]; + std::string::basic_string(v8, (int)&night::NS_TYPE_WHILE); + v3 = night::NSGod::gen_son(v2, (int)v8); + std::string::_M_dispose(v8); + v3[51] = 0; + v3[54] = 0; + std::string::basic_string(v8, "("); + night::NSASTParse::ignore_punc(a1, (int)v8); + v6 = v4; + std::string::_M_dispose(v8); + v3[51] = night::NSASTParse::ast_expression(v6); + std::string::basic_string(v8, ")"); + v7 = (night::NSASTParse *)night::NSASTParse::ignore_punc(a1, (int)v8); + std::string::_M_dispose(v8); + ++a1[9]; + ++a1[10]; + v3[54] = night::NSASTParse::ast_expression(v7); + result = v3; + --a1[9]; + --a1[10]; + return result; +} +// 407FCE: variable 'v4' is possibly undefined + +//----- (00408042) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_do_while(int *a1) +{ + void *v2; // esi + _DWORD *v3; // esi + int v4; // eax + int v5; // eax + unsigned int v6; // edi + _DWORD *v7; // eax + night::NSASTParse *v8; // edx + _DWORD **v9; // ebx + night::NSASTParse *v10; // edx + night::NSASTParse *v12; // [esp+0h] [ebp-58h] + night::NSASTParse *v13; // [esp+0h] [ebp-58h] + _DWORD *v14; // [esp+18h] [ebp-40h] + unsigned int v15; // [esp+1Ch] [ebp-3Ch] + void *v16[12]; // [esp+28h] [ebp-30h] BYREF + + night::NSToken::next(a1[7]); + v2 = (void *)a1[6]; + std::string::basic_string(v16, (int)&night::NS_TYPE_DO_WHILE); + v3 = night::NSGod::gen_son(v2, (int)v16); + std::string::_M_dispose(v16); + v4 = a1[7]; + v3[51] = 0; + v3[54] = 0; + v5 = *(_DWORD *)(v4 + 4); + v6 = *(_DWORD *)(v5 + 56); + v15 = *(_DWORD *)(v5 + 52); + std::string::basic_string(v16, "{"); + v7 = night::NSASTParse::is_punctuation(a1, (int)v16); + v12 = v8; + v14 = v7; + std::string::_M_dispose(v16); + if ( !v14 ) + { + v9 = (_DWORD **)a1[7]; + std::string::basic_string(v16, "Expected `{`"); + night::NSToken::err(v9, (int)v16, v15, v6, 1); + } + ++a1[9]; + ++a1[10]; + v3[54] = night::NSASTParse::ast_expression(v12); + --a1[9]; + --a1[10]; + std::string::basic_string(v16, "while"); + night::NSASTParse::ignore_buildin_kw(a1, (int)v16); + std::string::_M_dispose(v16); + std::string::basic_string(v16, "("); + night::NSASTParse::ignore_punc(a1, (int)v16); + v13 = v10; + std::string::_M_dispose(v16); + v3[51] = night::NSASTParse::ast_expression(v13); + std::string::basic_string(v16, ")"); + night::NSASTParse::ignore_punc(a1, (int)v16); + std::string::_M_dispose(v16); + return v3; +} +// 4080C0: variable 'v8' is possibly undefined +// 408162: variable 'v10' is possibly undefined + +//----- (004081C4) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_switch(int *a1) +{ + void *v2; // esi + int v3; // esi + void *v4; // edi + void *v5; // edi + int v6; // edi + _DWORD *v7; // esi + int v8; // ecx + int v9; // eax + void **v10; // edi + _DWORD **v11; // esi + _DWORD *v12; // eax + _DWORD *v13; // esi + bool v14; // si + void **v15; // esi + _DWORD *v16; // eax + bool v17; // di + _DWORD *v18; // eax + night::NSASTParse *v19; // edx + _DWORD *v20; // eax + void *v21; // edi + night::NSToken *v22; // eax + night::NSASTParse *v23; // edx + void *v24; // esi + void *v25; // edi + void **v26; // esi + _DWORD **v27; // ebx + _DWORD *v28; // esi + _DWORD *v29; // esi + _DWORD *v30; // eax + night::NSASTParse *v31; // edx + _DWORD *v32; // esi + void **v33; // esi + _DWORD **v34; // ebx + _DWORD *v35; // esi + night::NSASTParse *v37; // [esp+0h] [ebp-88h] + night::NSASTParse *v38; // [esp+0h] [ebp-88h] + night::NSASTParse *v39; // [esp+0h] [ebp-88h] + unsigned int v40; // [esp+10h] [ebp-78h] + unsigned int v41; // [esp+14h] [ebp-74h] + int v42; // [esp+18h] [ebp-70h] + bool v43; // [esp+18h] [ebp-70h] + void *v44; // [esp+1Ch] [ebp-6Ch] + _DWORD *v45; // [esp+1Ch] [ebp-6Ch] + night::NSToken *v46; // [esp+24h] [ebp-64h] BYREF + void *v47[6]; // [esp+28h] [ebp-60h] BYREF + void *v48[6]; // [esp+40h] [ebp-48h] BYREF + void *v49[12]; // [esp+58h] [ebp-30h] BYREF + + night::NSToken::next(a1[7]); + v2 = (void *)a1[6]; + std::string::basic_string(v49, (int)&night::std_v_n); + v3 = night::NSGod::gen_girl(v2, (int)v49); + std::string::_M_dispose(v49); + v4 = (void *)a1[6]; + std::string::basic_string(v49, (int)&night::std_v_v_n); + v42 = night::NSGod::gen_girl(v4, (int)v49); + std::string::_M_dispose(v49); + v5 = (void *)a1[6]; + std::string::basic_string(v49, (int)&night::std_v_n); + v6 = night::NSGod::gen_girl(v5, (int)v49); + std::string::_M_dispose(v49); + v44 = (void *)a1[6]; + std::string::basic_string(v49, (int)&night::NS_TYPE_SWITCH); + v45 = night::NSGod::gen_son(v44, (int)v49); + std::string::_M_dispose(v49); + v45[58] = v3; + v45[51] = 0; + v45[59] = v42; + v45[60] = v6; + std::string::basic_string(v49, "("); + v37 = (night::NSASTParse *)night::NSASTParse::ignore_punc(a1, (int)v49); + std::string::_M_dispose(v49); + v45[51] = night::NSASTParse::ast_expression(v37); + std::string::basic_string(v49, ")"); + night::NSASTParse::ignore_punc(a1, (int)v49); + std::string::_M_dispose(v49); + std::string::basic_string(v49, "{"); + night::NSASTParse::ignore_punc(a1, (int)v49); + std::string::_M_dispose(v49); + ++a1[9]; + while ( 1 ) + { + std::string::basic_string(v49, "case"); + v7 = night::NSASTParse::is_buildin_keywords(a1, (int)v49); + std::string::_M_dispose(v49); + if ( !v7 ) + break; + std::string::basic_string(v49, "case"); + night::NSASTParse::ignore_buildin_kw(a1, (int)v49); + std::string::_M_dispose(v49); + v8 = a1[7]; + v9 = *(_DWORD *)(v8 + 4); + v40 = *(_DWORD *)(v9 + 52); + v41 = *(_DWORD *)(v9 + 56); + v10 = (void **)night::NSToken::peek(v8); + if ( !v10 ) + goto LABEL_4; + std::string::basic_string(v48, (char *)&asc_51BF80[2]); + v43 = 1; + if ( !night::NSASTParse::is_op(a1, (int)v48) ) + { + std::string::basic_string(v49, (char *)&asc_51BF80[4]); + v43 = night::NSASTParse::is_op(a1, (int)v49) != 0; + std::string::_M_dispose(v49); + } + std::string::_M_dispose(v48); + if ( v43 ) + { + night::NSToken::next(a1[7]); + v12 = night::NSToken::peek(a1[7]); + v13 = v12; + if ( !v12 || !std::operator==((int)&night::NS_TYPE_NUM, (int)v12) ) + goto LABEL_4; + v10 += 15; + std::operator+(v49, (int)v10, (int)(v13 + 15)); + std::string::operator=(v13 + 15, v49); + std::string::_M_dispose(v49); + } + else if ( !std::operator==((int)&night::NS_TYPE_VAR, (int)v10) + && !std::operator==((int)&night::NS_TYPE_NUM, (int)v10) + && !std::operator==((int)&night::NS_TYPE_STR, (int)v10) ) + { + std::string::basic_string(v48, "true"); + if ( night::NSASTParse::is_buildin_keywords(a1, (int)v48) ) + { + v14 = 1; + } + else + { + v10 = v49; + std::string::basic_string(v49, "false"); + v14 = night::NSASTParse::is_buildin_keywords(a1, (int)v49) != 0; + std::string::_M_dispose(v49); + } + std::string::_M_dispose(v48); + if ( !v14 ) + { +LABEL_4: + v11 = (_DWORD **)a1[7]; + std::string::basic_string(v49, "Expected variable|numer|boolean|string"); + night::NSToken::err(v11, (int)v49, v40, v41, 1); + } + } + v15 = (void **)v45[58]; + v49[0] = night::NSToken::next(a1[7]); + std::vector::emplace_back(v15, v49); + std::string::basic_string(v49, ":"); + night::NSASTParse::ignore_punc(a1, (int)v49); + std::string::_M_dispose(v49); + v46 = 0; + while ( 1 ) + { + std::string::basic_string(v47, "case"); + v16 = night::NSASTParse::is_buildin_keywords(a1, (int)v47); + v38 = (night::NSASTParse *)v10; + if ( v16 ) + { + v17 = 0; + } + else + { + std::string::basic_string(v48, "default"); + v18 = night::NSASTParse::is_buildin_keywords(a1, (int)v48); + v17 = 0; + v38 = v19; + if ( !v18 ) + { + std::string::basic_string(v49, "}"); + v20 = night::NSASTParse::is_punctuation(a1, (int)v49); + v38 = 0; + v17 = v20 == 0; + std::string::_M_dispose(v49); + } + std::string::_M_dispose(v48); + } + std::string::_M_dispose(v47); + if ( !v17 ) + break; + if ( !v46 ) + { + v21 = (void *)a1[6]; + std::string::basic_string(v49, (int)&night::std_v_n); + v22 = (night::NSToken *)night::NSGod::gen_girl(v21, (int)v49); + v38 = v23; + v46 = v22; + std::string::_M_dispose(v49); + } + v10 = (void **)v46; + v49[0] = (void *)night::NSASTParse::ast_expression(v38); + std::vector::emplace_back(v10, v49); + while ( !night::NSToken::eof(a1[7]) ) + { + std::string::basic_string(v49, ";"); + v10 = (void **)night::NSASTParse::is_punctuation(a1, (int)v49); + std::string::_M_dispose(v49); + if ( !v10 ) + break; + night::NSToken::next(a1[7]); + } + } + if ( !v46 ) + { + v24 = (void *)a1[6]; + std::string::basic_string(v49, (int)&night::std_v_n); + v46 = (night::NSToken *)night::NSGod::gen_girl(v24, (int)v49); + std::string::_M_dispose(v49); + v25 = (void *)a1[6]; + v26 = (void **)v46; + std::string::basic_string(v49, (int)&night::NS_TYPE_SKIP); + v48[0] = night::NSGod::gen_son(v25, (int)v49); + std::vector::emplace_back(v26, v48); + std::string::_M_dispose(v49); + } + std::vector>>::push_back(v45[59], &v46); + if ( night::NSToken::eof(a1[7]) ) + { + v27 = (_DWORD **)a1[7]; + std::string::basic_string(v49, "End of file"); + night::NSToken::err(v27, (int)v49, 0, 0, 0); + } + std::string::basic_string(v49, "}"); + v28 = night::NSASTParse::is_punctuation(a1, (int)v49); + std::string::_M_dispose(v49); + if ( v28 ) + break; + std::string::basic_string(v49, "default"); + v29 = night::NSASTParse::is_buildin_keywords(a1, (int)v49); + std::string::_M_dispose(v49); + if ( v29 ) + { + std::string::basic_string(v49, "default"); + night::NSASTParse::ignore_buildin_kw(a1, (int)v49); + std::string::_M_dispose(v49); + std::string::basic_string(v49, ":"); + night::NSASTParse::ignore_punc(a1, (int)v49); + std::string::_M_dispose(v49); + while ( 1 ) + { + std::string::basic_string(v49, "}"); + v30 = night::NSASTParse::is_punctuation(a1, (int)v49); + v39 = v31; + v32 = v30; + std::string::_M_dispose(v49); + if ( v32 ) + break; + v33 = (void **)v45[60]; + v49[0] = (void *)night::NSASTParse::ast_expression(v39); + std::vector::emplace_back(v33, v49); + if ( night::NSToken::eof(a1[7]) ) + { + v34 = (_DWORD **)a1[7]; + std::string::basic_string(v49, "End of file"); + night::NSToken::err(v34, (int)v49, 0, 0, 0); + } + while ( 1 ) + { + std::string::basic_string(v49, ";"); + v35 = night::NSASTParse::is_punctuation(a1, (int)v49); + std::string::_M_dispose(v49); + if ( !v35 ) + break; + night::NSToken::next(a1[7]); + } + } + break; + } + } + --a1[9]; + std::string::basic_string(v49, "}"); + night::NSASTParse::ignore_punc(a1, (int)v49); + std::string::_M_dispose(v49); + return v45; +} +// 408604: variable 'v19' is possibly undefined +// 408691: variable 'v23' is possibly undefined +// 408898: variable 'v31' is possibly undefined + +//----- (004089E4) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::top_down(int *a1) +{ + void *v2; // edi + _DWORD *v3; // ebx + int v4; // edi + int v5; // eax + _DWORD *v6; // eax + _DWORD *v7; // ebx + _DWORD **v8; // esi + _DWORD *v9; // edi + void *v10; // ebx + _DWORD *v11; // ebx + unsigned int v13; // [esp+14h] [ebp-44h] + unsigned int v14; // [esp+18h] [ebp-40h] + void **v15; // [esp+1Ch] [ebp-3Ch] + _DWORD *v16; // [esp+24h] [ebp-34h] BYREF + void *v17[12]; // [esp+28h] [ebp-30h] BYREF + + v2 = (void *)a1[6]; + std::string::basic_string(v17, (int)&night::std_v_n); + v15 = (void **)night::NSGod::gen_girl(v2, (int)v17); + std::string::_M_dispose(v17); + while ( !night::NSToken::eof(a1[7]) ) + { + v16 = night::NSASTParse::ast_expression(a1); + std::vector::push_back(v15, &v16); + v3 = v16; + v4 = a1[7]; + v5 = *(_DWORD *)(v4 + 4); + v13 = *(_DWORD *)(v5 + 52); + v14 = *(_DWORD *)(v5 + 56); + if ( std::operator==((int)&night::NS_TYPE_BOOL, (int)v16) + || std::operator==((int)&night::NS_TYPE_VAR, (int)v3) + || std::operator==((int)&night::NS_TYPE_STR, (int)v3) + || std::operator==((int)&night::NS_TYPE_NUM, (int)v3) + || std::operator==((int)&night::NS_TYPE_B_TYPE, (int)v3) + || std::operator==((int)&night::NS_TYPE_KW, (int)v3) + || std::operator==((int)&night::NS_TYPE_OP_SELF, (int)v3) + || std::operator==((int)&night::NS_TYPE_BINARY, (int)v3) + || std::operator==((int)&night::NS_TYPE_ASSIGN, (int)v3) + || std::operator==((int)&night::NS_TYPE_TERNARY, (int)v3) + || std::operator==((int)&night::NS_TYPE_OBJ_DOT, (int)v3) + || std::operator==((int)&night::NS_TYPE_OBJ_PROPERTY, (int)v3) + || std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, (int)v3) + || std::operator==((int)&night::NS_TYPE_ARRAY, (int)v3) + || std::operator==((int)&night::NS_TYPE_BRACKET, (int)v3) + || std::operator==((int)&night::NS_TYPE_CALL, (int)v3) ) + { + v6 = night::NSToken::peek(v4); + v7 = v6; + if ( v6 ) + { + if ( (unsigned __int8)std::operator!=(";", (int)(v6 + 15)) + && std::string::find(v7 + 21, 10, 0) == (char *)-1 ) + { + v8 = (_DWORD **)a1[7]; + std::string::basic_string(v17, "Expected LineFeed"); + night::NSToken::err(v8, (int)v17, v13, v14, 1); + } + } + } + while ( !night::NSToken::eof(a1[7]) ) + { + std::string::basic_string(v17, ";"); + v9 = night::NSASTParse::is_punctuation(a1, (int)v17); + std::string::_M_dispose(v17); + if ( !v9 ) + break; + night::NSToken::next(a1[7]); + } + } + v10 = (void *)a1[6]; + std::string::basic_string(v17, (int)&night::NS_TYPE_PROG); + v11 = night::NSGod::gen_son(v10, (int)v17); + std::string::_M_dispose(v17); + v11[57] = v15; + std::string::operator=(v11 + 27, (char *)off_51B9E4); + return v11; +} + +//----- (00408CF4) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_require(int *a1) +{ + void *v2; // esi + void **v3; // edi + void *v4; // esi + int v5; // ecx + int v6; // eax + _DWORD *v7; // eax + _DWORD *v8; // esi + _DWORD **v9; // ebx + _DWORD **v10; // ebx + void *v11; // esi + void *v12; // esi + void *v13; // esi + _DWORD *v14; // ecx + _DWORD *v15; // eax + int v16; // esi + _DWORD *v17; // eax + unsigned int v19; // [esp+18h] [ebp-60h] + unsigned int v20; // [esp+1Ch] [ebp-5Ch] + void *v21; // [esp+1Ch] [ebp-5Ch] + _DWORD *v22; // [esp+28h] [ebp-50h] BYREF + _DWORD *v23; // [esp+2Ch] [ebp-4Ch] BYREF + void *v24[2]; // [esp+30h] [ebp-48h] BYREF + char v25; // [esp+38h] [ebp-40h] BYREF + void *v26[12]; // [esp+48h] [ebp-30h] BYREF + + v2 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::std_v_n); + v3 = (void **)night::NSGod::gen_girl(v2, (int)v26); + std::string::_M_dispose(v26); + v22 = night::NSToken::next(a1[7]); + std::operator+(v26, (int)&night::nsv_, (int)(v22 + 15)); + std::string::operator=(v22 + 15, v26); + std::string::_M_dispose(v26); + std::vector::push_back(v3, &v22); + v4 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); + v22 = night::NSGod::gen_son(v4, (int)v26); + std::string::_M_dispose(v26); + std::string::operator=(v22 + 15, "("); + std::vector::push_back(v3, &v22); + night::NSToken::next(a1[7]); + v5 = a1[7]; + v6 = *(_DWORD *)(v5 + 4); + v19 = *(_DWORD *)(v6 + 52); + v20 = *(_DWORD *)(v6 + 56); + v7 = night::NSToken::next(v5); + v23 = v7; + v8 = v7; + if ( !v7 || (unsigned __int8)std::operator!=((int)&night::NS_TYPE_STR, (int)v7) ) + { + v9 = (_DWORD **)a1[7]; + std::string::basic_string(v26, "Expected string"); + night::NSToken::err(v9, (int)v26, v19, v20, 1); + } + v24[0] = &v25; + v24[1] = 0; + v25 = 0; + if ( night::str::path_combine(a1, v8 + 15, v24) ) + { + v10 = (_DWORD **)a1[7]; + std::string::basic_string(v26, "Expected wxs file"); + night::NSToken::err(v10, (int)v26, v19, v20, 1); + } + std::operator+((int)v26, "p_", (int)v24); + std::string::operator=(v23 + 15, v26); + std::string::_M_dispose(v26); + std::vector::push_back(v3, &v23); + std::string::_M_dispose(v24); + v21 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); + v22 = night::NSGod::gen_son(v21, (int)v26); + std::string::_M_dispose(v26); + std::string::operator=(v22 + 15, ")"); + std::vector::push_back(v3, &v22); + night::NSToken::next(a1[7]); + v11 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); + v22 = night::NSGod::gen_son(v11, (int)v26); + std::string::_M_dispose(v26); + std::string::operator=(v22 + 15, "("); + std::vector::push_back(v3, &v22); + v12 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); + v22 = night::NSGod::gen_son(v12, (int)v26); + std::string::_M_dispose(v26); + std::string::operator=(v22 + 15, ")"); + std::vector::push_back(v3, &v22); + v13 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); + v22 = night::NSGod::gen_son(v13, (int)v26); + std::string::_M_dispose(v26); + v14 = v22; + v22[57] = v3; + std::string::operator=(v14 + 27, (char *)off_51B9E4); + v15 = night::NSToken::peek(a1[7]); + if ( !v15 ) + return v22; + v16 = (int)(v15 + 15); + if ( !std::operator==("[", (int)(v15 + 15)) ) + { + if ( std::operator==(".", v16) ) + { + v17 = night::NSASTParse::ast_obj_dot(a1, (int)v22); + return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); + } + return v22; + } + v17 = night::NSASTParse::ast_obj_op(a1, (int)v22); + return night::NSASTParse::make_call_or_just_expression(a1, (int)v17); +} + +//----- (004090B2) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_code_block(int *a1) +{ + void **list_by_parser; // edi + void *v3; // esi + void **v4; // esi + unsigned int *v5; // ecx + void *v6; // edi + unsigned int *v7; // ecx + void *v9; // [esp+2Ch] [ebp-9Ch] + void *v10; // [esp+2Ch] [ebp-9Ch] + void *v11; // [esp+2Ch] [ebp-9Ch] + void *v12[6]; // [esp+38h] [ebp-90h] BYREF + void *v13[6]; // [esp+50h] [ebp-78h] BYREF + void *v14[6]; // [esp+68h] [ebp-60h] BYREF + void *v15[6]; // [esp+80h] [ebp-48h] BYREF + void *v16[12]; // [esp+98h] [ebp-30h] BYREF + + std::string::basic_string(v16, (char *)off_51B9E4); + std::string::basic_string(v15, "ast_expression"); + std::string::basic_string(v14, ";"); + std::string::basic_string(v13, "}"); + std::string::basic_string(v12, "{"); + list_by_parser = night::NSASTParse::make_list_by_parser(a1, (int)v12, (int)v13, (int)v14, (int)v15, 1, -1, (int)v16); + std::string::_M_dispose(v12); + std::string::_M_dispose(v13); + std::string::_M_dispose(v14); + std::string::_M_dispose(v15); + std::string::_M_dispose(v16); + v3 = (void *)a1[6]; + std::string::basic_string(v16, (int)&night::std_v_n); + v4 = (void **)night::NSGod::gen_girl(v3, (int)v16); + std::string::_M_dispose(v16); + v9 = (void *)a1[6]; + std::string::basic_string(v16, (int)&night::NS_TYPE_PUNC); + v15[0] = night::NSGod::gen_son(v9, (int)v16); + std::string::_M_dispose(v16); + std::string::operator=((unsigned int *)v15[0] + 15, "{"); + std::vector::push_back(v4, v15); + if ( *list_by_parser != list_by_parser[1] ) + { + v10 = (void *)a1[6]; + std::string::basic_string(v16, (int)&night::NS_TYPE_PROG); + v15[0] = night::NSGod::gen_son(v10, (int)v16); + std::string::_M_dispose(v16); + v5 = (unsigned int *)v15[0]; + *((_DWORD *)v15[0] + 57) = list_by_parser; + std::string::operator=(v5 + 27, (char *)off_51B9E4); + std::vector::push_back(v4, v15); + } + v11 = (void *)a1[6]; + std::string::basic_string(v16, (int)&night::NS_TYPE_PUNC); + v15[0] = night::NSGod::gen_son(v11, (int)v16); + std::string::_M_dispose(v16); + std::string::operator=((unsigned int *)v15[0] + 15, "}"); + std::vector::push_back(v4, v15); + v6 = (void *)a1[6]; + std::string::basic_string(v16, (int)&night::NS_TYPE_PROG_NO_SEM); + v15[0] = night::NSGod::gen_son(v6, (int)v16); + std::string::_M_dispose(v16); + v7 = (unsigned int *)v15[0]; + *((_DWORD *)v15[0] + 57) = v4; + std::string::operator=(v7 + 27, (char *)off_51B9E4); + return night::NSASTParse::make_call_or_just_expression(a1, (int)v15[0]); +} + +//----- (0040935E) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_function(int *a1) +{ + void *v2; // esi + _DWORD *v3; // esi + _DWORD *v4; // eax + unsigned int *v5; // ecx + _DWORD *v6; // edi + bool v7; // al + int v8; // ecx + _DWORD *result; // eax + void *v10[6]; // [esp+38h] [ebp-90h] BYREF + void *v11[6]; // [esp+50h] [ebp-78h] BYREF + void *v12[6]; // [esp+68h] [ebp-60h] BYREF + void *v13[6]; // [esp+80h] [ebp-48h] BYREF + void *v14[12]; // [esp+98h] [ebp-30h] BYREF + + v2 = (void *)a1[6]; + std::string::basic_string(v14, (int)&night::NS_TYPE_FUNC); + v3 = night::NSGod::gen_son(v2, (int)v14); + std::string::_M_dispose(v14); + std::string::_M_assign((int)v3, (int)&night::NS_TYPE_FUNC); + night::NSToken::next(a1[7]); + v4 = night::NSToken::peek(a1[7]); + v5 = v3 + 33; + v6 = v4; + if ( v4 && (v7 = std::operator==((int)&night::NS_TYPE_VAR, (int)v4), v5 = v3 + 33, v7) ) + { + std::string::_M_assign((int)v5, (int)(v6 + 15)); + std::string::_M_assign((int)(v3 + 6), (int)(v6 + 6)); + v8 = a1[7]; + v3[12] = v6[12]; + v3[13] = v6[13]; + night::NSToken::next(v8); + } + else + { + std::string::operator=(v5, (char *)off_51B9E4); + } + std::string::basic_string(v14, (char *)off_51B9E4); + std::string::basic_string(v13, "ast_varname"); + std::string::basic_string(v12, ","); + std::string::basic_string(v11, ")"); + std::string::basic_string(v10, "("); + v3[61] = night::NSASTParse::make_list_by_parser(a1, (int)v10, (int)v11, (int)v12, (int)v13, 0, -1, (int)v14); + std::string::_M_dispose(v10); + std::string::_M_dispose(v11); + std::string::_M_dispose(v12); + std::string::_M_dispose(v13); + std::string::_M_dispose(v14); + ++a1[8]; + v3[54] = night::NSASTParse::ast_code_block(a1); + result = v3; + --a1[8]; + return result; +} + +//----- (00409540) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_new_array(int *a1) +{ + void **list_by_parser; // edi + void *v3; // esi + void **v4; // esi + unsigned int *v5; // ecx + void *v6; // edi + unsigned int *v7; // ecx + _DWORD *v8; // esi + _DWORD *v9; // eax + int v10; // edi + void *v13; // [esp+2Ch] [ebp-9Ch] + void *v14; // [esp+2Ch] [ebp-9Ch] + void *v15; // [esp+2Ch] [ebp-9Ch] + void *v16[6]; // [esp+38h] [ebp-90h] BYREF + void *v17[6]; // [esp+50h] [ebp-78h] BYREF + void *v18[6]; // [esp+68h] [ebp-60h] BYREF + void *v19[6]; // [esp+80h] [ebp-48h] BYREF + void *v20[12]; // [esp+98h] [ebp-30h] BYREF + + std::string::basic_string(v20, "ast_new_array"); + std::string::basic_string(v19, "ast_expression_no_comma"); + std::string::basic_string(v18, ","); + std::string::basic_string(v17, "]"); + std::string::basic_string(v16, "["); + list_by_parser = night::NSASTParse::make_list_by_parser(a1, (int)v16, (int)v17, (int)v18, (int)v19, 0, -1, (int)v20); + std::string::_M_dispose(v16); + std::string::_M_dispose(v17); + std::string::_M_dispose(v18); + std::string::_M_dispose(v19); + std::string::_M_dispose(v20); + v3 = (void *)a1[6]; + std::string::basic_string(v20, (int)&night::std_v_n); + v4 = (void **)night::NSGod::gen_girl(v3, (int)v20); + std::string::_M_dispose(v20); + v13 = (void *)a1[6]; + std::string::basic_string(v20, (int)&night::NS_TYPE_PUNC); + v19[0] = night::NSGod::gen_son(v13, (int)v20); + std::string::_M_dispose(v20); + std::string::operator=((unsigned int *)v19[0] + 15, "["); + std::vector::push_back(v4, v19); + if ( *list_by_parser != list_by_parser[1] ) + { + v14 = (void *)a1[6]; + std::string::basic_string(v20, (int)&night::NS_TYPE_PROG); + v19[0] = night::NSGod::gen_son(v14, (int)v20); + std::string::_M_dispose(v20); + v5 = (unsigned int *)v19[0]; + *((_DWORD *)v19[0] + 57) = list_by_parser; + std::string::operator=(v5 + 27, ","); + std::vector::push_back(v4, v19); + } + v15 = (void *)a1[6]; + std::string::basic_string(v20, (int)&night::NS_TYPE_PUNC); + v19[0] = night::NSGod::gen_son(v15, (int)v20); + std::string::_M_dispose(v20); + std::string::operator=((unsigned int *)v19[0] + 15, "]"); + std::vector::push_back(v4, v19); + v6 = (void *)a1[6]; + std::string::basic_string(v20, (int)&night::NS_TYPE_ARRAY); + v19[0] = night::NSGod::gen_son(v6, (int)v20); + std::string::_M_dispose(v20); + v7 = (unsigned int *)v19[0]; + *((_DWORD *)v19[0] + 57) = v4; + std::string::operator=(v7 + 27, (char *)off_51B9E4); + v8 = night::NSASTParse::make_call_or_just_expression(a1, (int)v19[0]); + v9 = night::NSToken::peek(a1[7]); + if ( v9 ) + { + v10 = (int)(v9 + 15); + if ( std::operator==("[", (int)(v9 + 15)) ) + return night::NSASTParse::ast_obj_op(a1, (int)v8); + if ( std::operator==(".", v10) ) + return night::NSASTParse::ast_obj_dot(a1, (int)v8); + } + return v8; +} + +//----- (00409846) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_for(int *a1) +{ + void *v2; // esi + _DWORD *v3; // esi + int v4; // edi + _DWORD **v5; // ebx + night::NSASTParse *v6; // edx + _DWORD **v7; // ebx + _DWORD *result; // eax + night::NSASTParse *v9; // [esp+0h] [ebp-C8h] + void *v10; // [esp+2Ch] [ebp-9Ch] + void *v11[6]; // [esp+38h] [ebp-90h] BYREF + void *v12[6]; // [esp+50h] [ebp-78h] BYREF + void *v13[6]; // [esp+68h] [ebp-60h] BYREF + void *v14[6]; // [esp+80h] [ebp-48h] BYREF + void *v15[12]; // [esp+98h] [ebp-30h] BYREF + + night::NSToken::next(a1[7]); + v2 = (void *)a1[6]; + std::string::basic_string(v15, (int)&night::NS_TYPE_FOR); + v3 = night::NSGod::gen_son(v2, (int)v15); + std::string::_M_dispose(v15); + v3[57] = 0; + v3[54] = 0; + std::string::basic_string(v15, (char *)off_51B9E4); + std::string::basic_string(v14, "ast_expression"); + std::string::basic_string(v13, ";"); + std::string::basic_string(v12, ")"); + std::string::basic_string(v11, "("); + v3[57] = night::NSASTParse::make_list_by_parser(a1, (int)v11, (int)v12, (int)v13, (int)v14, 0, 2, (int)v15); + std::string::_M_dispose(v11); + std::string::_M_dispose(v12); + std::string::_M_dispose(v13); + std::string::_M_dispose(v14); + std::string::_M_dispose(v15); + v4 = v3[57]; + if ( !v4 ) + { + v5 = (_DWORD **)a1[7]; + std::string::basic_string(v15, "Expected `for(xxx;xxx;xxx)`"); + night::NSToken::err(v5, (int)v15, 0, 0, 0); + } + if ( *(_DWORD *)(v4 + 4) - *(_DWORD *)v4 == 8 ) + { + v10 = (void *)a1[6]; + std::string::basic_string(v15, (int)&night::NS_TYPE_SKIP); + v14[0] = night::NSGod::gen_son(v10, (int)v15); + std::vector::emplace_back((void **)v4, v14); + v9 = v6; + std::string::_M_dispose(v15); + } + if ( *(_DWORD *)(v3[57] + 4) - *(_DWORD *)v3[57] != 12 ) + { + v7 = (_DWORD **)a1[7]; + std::string::basic_string(v15, "Expected `for(xxx;xxx;xxx)`"); + night::NSToken::err(v7, (int)v15, 0, 0, 0); + } + ++a1[9]; + ++a1[10]; + v3[54] = night::NSASTParse::ast_expression(v9); + result = v3; + --a1[9]; + --a1[10]; + return result; +} +// 4099E1: variable 'v6' is possibly undefined +// 409A87: variable 'v9' is possibly undefined + +//----- (00409AA2) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_obj_block(int *a1) +{ + void *v2; // esi + void **v3; // edi + void *v4; // esi + _DWORD *v5; // esi + bool v6; // zf + _DWORD *v7; // eax + int v8; // esi + _DWORD **v9; // ebx + unsigned int *v10; // eax + _DWORD *v11; // eax + _DWORD **v12; // ebx + int v13; // esi + _DWORD *v14; // eax + _DWORD **v15; // ebx + void *v16; // esi + void *v17; // esi + unsigned int *v18; // ecx + _DWORD *v19; // eax + int v20; // esi + unsigned int *v21; // eax + _DWORD *v23; // [esp+18h] [ebp-40h] + void *v24; // [esp+1Ch] [ebp-3Ch] + unsigned int *v25; // [esp+24h] [ebp-34h] BYREF + void *v26[12]; // [esp+28h] [ebp-30h] BYREF + + v2 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::std_v_n); + v3 = (void **)night::NSGod::gen_girl(v2, (int)v26); + std::string::_M_dispose(v26); + std::string::basic_string(v26, "{"); + night::NSASTParse::ignore_punc(a1, (int)v26); + std::string::_M_dispose(v26); + v4 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); + v25 = night::NSGod::gen_son(v4, (int)v26); + std::string::_M_dispose(v26); + std::string::operator=(v25 + 15, "{"); + std::vector::push_back(v3, &v25); + std::string::basic_string(v26, "}"); + v5 = night::NSASTParse::is_punctuation(a1, (int)v26); + std::string::_M_dispose(v26); + v6 = v5 == 0; +LABEL_2: + if ( v6 ) + { + while ( 1 ) + { + v7 = night::NSToken::next(a1[7]); + v8 = (int)v7; + if ( !v7 + || (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v7) + && (unsigned __int8)std::operator!=((int)&night::NS_TYPE_STR, v8) ) + { + v9 = (_DWORD **)a1[7]; + std::string::basic_string(v26, "Expected variable|string"); + night::NSToken::err(v9, (int)v26, 0, 0, 0); + } + if ( std::operator==((int)&night::NS_TYPE_STR, v8) ) + { + std::operator+(v26, (int)&night::nsv_, v8 + 60); + std::string::operator=((_DWORD *)(v8 + 60), v26); + std::string::_M_dispose(v26); + } + std::string::basic_string(v26, ":"); + night::NSASTParse::ignore_punc(a1, (int)v26); + std::string::_M_dispose(v26); + v23 = night::NSASTParse::ast_expression_no_comma(a1); + v24 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::NS_TYPE_K_V); + v25 = night::NSGod::gen_son(v24, (int)v26); + std::string::_M_dispose(v26); + v10 = v25; + v25[47] = v8; + v10[48] = (unsigned int)v23; + std::vector::push_back(v3, &v25); + v11 = night::NSToken::peek(a1[7]); + if ( !v11 ) + { + v12 = (_DWORD **)a1[7]; + std::string::basic_string(v26, "Expected variable|string"); + night::NSToken::err(v12, (int)v26, 0, 0, 0); + } + v13 = (int)(v11 + 15); + if ( std::operator==("}", (int)(v11 + 15)) ) + break; + if ( std::operator==(",", v13) ) + { + night::NSToken::next(a1[7]); + v14 = night::NSToken::peek(a1[7]); + if ( !v14 ) + { + v15 = (_DWORD **)a1[7]; + std::string::basic_string(v26, "Expected variable|string"); + night::NSToken::err(v15, (int)v26, 0, 0, 0); + } + v6 = !std::operator==("}", (int)(v14 + 15)); + goto LABEL_2; + } + } + } + std::string::basic_string(v26, "}"); + night::NSASTParse::ignore_punc(a1, (int)v26); + std::string::_M_dispose(v26); + v16 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::NS_TYPE_PUNC); + v25 = night::NSGod::gen_son(v16, (int)v26); + std::string::_M_dispose(v26); + std::string::operator=(v25 + 15, "}"); + std::vector::push_back(v3, &v25); + v17 = (void *)a1[6]; + std::string::basic_string(v26, (int)&night::NS_TYPE_OBJ_BLOCK); + v25 = night::NSGod::gen_son(v17, (int)v26); + std::string::_M_dispose(v26); + v18 = v25; + v25[57] = (unsigned int)v3; + std::string::operator=(v18 + 27, (char *)off_51B9E4); + v19 = night::NSToken::peek(a1[7]); + if ( !v19 ) + { +LABEL_19: + v21 = v25; + return night::NSASTParse::make_call_or_just_expression(a1, (int)v21); + } + v20 = (int)(v19 + 15); + if ( !std::operator==("[", (int)(v19 + 15)) ) + { + if ( std::operator==(".", v20) ) + { + v21 = night::NSASTParse::ast_obj_dot(a1, (int)v25); + return night::NSASTParse::make_call_or_just_expression(a1, (int)v21); + } + goto LABEL_19; + } + v21 = night::NSASTParse::ast_obj_op(a1, (int)v25); + return night::NSASTParse::make_call_or_just_expression(a1, (int)v21); +} + +//----- (00409ED6) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_var(_DWORD *a1) +{ + void *v2; // edi + int v3; // ecx + int v4; // eax + unsigned int v5; // esi + unsigned int v6; // edi + _DWORD *v7; // eax + int v8; // ecx + int v9; // eax + _DWORD *v10; // eax + _DWORD *v11; // esi + void *v12; // ebx + _DWORD *v13; // ebx + int v15; // edi + char v16; // al + _DWORD **v17; // esi + _DWORD **v18; // ebx + _DWORD *v19; // eax + _DWORD *v20; // [esp+14h] [ebp-64h] + unsigned int v21; // [esp+14h] [ebp-64h] + _DWORD **v22; // [esp+18h] [ebp-60h] + unsigned int v23; // [esp+18h] [ebp-60h] + void **v24; // [esp+1Ch] [ebp-5Ch] + _DWORD *v25; // [esp+2Ch] [ebp-4Ch] BYREF + _DWORD v26[6]; // [esp+30h] [ebp-48h] BYREF + void *v27[12]; // [esp+48h] [ebp-30h] BYREF + + night::NSToken::next(a1[7]); + v2 = (void *)a1[6]; + std::string::basic_string(v27, (int)&night::std_v_n); + v24 = (void **)night::NSGod::gen_girl(v2, (int)v27); + std::string::_M_dispose(v27); + while ( 1 ) + { + v3 = a1[7]; + v4 = *(_DWORD *)(v3 + 4); + v5 = *(_DWORD *)(v4 + 52); + v6 = *(_DWORD *)(v4 + 56); + v25 = night::NSToken::next(v3); + v22 = (_DWORD **)a1[7]; + if ( !v25 ) + { + std::string::basic_string(v27, "End of file"); + night::NSToken::err(v22, (int)v27, 0, 0, 0); + } + v20 = v25; + if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_VAR, (int)v25) ) + { + std::string::basic_string(v27, "Expected variable name"); + night::NSToken::err(v22, (int)v27, v5, v6, 1); + } + *((_BYTE *)v20 + 56) = 1; + v7 = night::NSToken::peek((int)v22); + if ( v7 && std::operator==("=", (int)(v7 + 15)) ) + { + v27[0] = (void *)night::NSASTParse::make_binary_or_just_value(a1, (int)v25, 1u); + std::vector::emplace_back(v24, v27); + } + else + { + std::vector::push_back(v24, &v25); + } + v8 = a1[7]; + v9 = *(_DWORD *)(v8 + 4); + v21 = *(_DWORD *)(v9 + 52); + v23 = *(_DWORD *)(v9 + 56); + v10 = night::NSToken::peek(v8); + v11 = v10; + if ( !v10 ) + break; + v15 = (int)(v10 + 15); + if ( std::operator==(";", (int)(v10 + 15)) + || (unsigned __int8)std::operator!=(",", v15) && std::string::find(v11 + 21, 10, 0) != (char *)-1 ) + { + break; + } + if ( night::NSToken::eof(a1[7]) ) + { + v18 = (_DWORD **)a1[7]; + std::string::basic_string(v27, "End of file"); + night::NSToken::err(v18, (int)v27, 0, 0, 0); + } + v16 = std::operator!=(",", v15); + v17 = (_DWORD **)a1[7]; + if ( v16 ) + { + std::operator+((int)v26, "Unexpected token `", v15); + v19 = std::string::append(v26, "`"); + std::string::basic_string(v27, v19); + night::NSToken::err(v17, (int)v27, v21, v23, 1); + } + night::NSToken::next(a1[7]); + } + v12 = (void *)a1[6]; + std::string::basic_string(v27, (int)&night::NS_TYPE_PROG); + v13 = night::NSGod::gen_son(v12, (int)v27); + std::string::_M_dispose(v27); + v13[57] = v24; + std::string::operator=(v13 + 27, (char *)off_51B9E4); + return v13; +} +// 409ED6: using guessed type _DWORD var_48[6]; + +//----- (0040A1B8) -------------------------------------------------------- +_DWORD *__fastcall night::NSASTParse::ast_expression_no_binary(int *a1) +{ + int v1; // eax + bool v3; // [esp+4h] [ebp-24h] + + v1 = night::NSASTParse::ast_dispatch(0, v3); + return night::NSASTParse::make_call_or_just_expression(a1, v1); +} +// 40A1C8: variable 'v3' is possibly undefined + +//----- (0040A1DC) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1, int a2) +{ + std::_Destroy_aux::__destroy(a2, *a1, a1[1]); + std::_Vector_base::_M_deallocate(*a1); +} + +//----- (0040A202) -------------------------------------------------------- +void __fastcall night::NSCompileJs::~NSCompileJs(int a1, int a2) +{ + std::vector::~vector((void ***)(a1 + 36), a2); + std::string::_M_dispose((void **)a1); +} + +//----- (0040A21C) -------------------------------------------------------- +_DWORD *__thiscall night::NSCompileJs::compile_var[abi:cxx11](_DWORD *this, int a2, int a3) +{ + char v3; // al + _DWORD *v4; // eax + _DWORD *exception; // ebx + char v7; // [esp+1Bh] [ebp-8Dh] + void *v9[6]; // [esp+20h] [ebp-88h] BYREF + void *v10[6]; // [esp+38h] [ebp-70h] BYREF + void *v11[2]; // [esp+50h] [ebp-58h] BYREF + char v12; // [esp+58h] [ebp-50h] BYREF + int v13; // [esp+68h] [ebp-40h] + int v14; // [esp+6Ch] [ebp-3Ch] + int v15[2]; // [esp+70h] [ebp-38h] BYREF + char v16; // [esp+78h] [ebp-30h] BYREF + int v17; // [esp+88h] [ebp-20h] + int v18; // [esp+8Ch] [ebp-1Ch] + + std::string::basic_string(v9, (char *)off_51B9E4); + if ( *(_BYTE *)(a3 + 56) ) + std::string::operator=((unsigned int *)v9, "var "); + *(_DWORD *)(a2 + 48) += v9[1]; + std::string::substr(v11, (_DWORD *)(a3 + 60), 0, dword_586E44); + if ( (unsigned __int8)std::operator!=((int)v11, (int)&night::nsv_) + && (unsigned __int8)std::operator!=("return", a3 + 60) + && (unsigned __int8)std::operator!=("delete", a3 + 60) ) + { + v3 = std::operator!=("void", a3 + 60); + } + else + { + v3 = 0; + } + v7 = v3; + std::string::_M_dispose(v11); + if ( v7 ) + { + std::operator+((int)v11, "error : sys error for compile_var `", a3 + 60); + v4 = std::string::append(v11, "`"); + std::string::basic_string(v10, v4); + std::string::_M_dispose(v11); + exception = __cxa_allocate_exception(0x18u); + std::string::basic_string(exception, v10); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::string, + (void (__cdecl *)(void *))std::string::~string); + } + v12 = 0; + v11[0] = &v12; + v15[0] = (int)&v16; + v11[1] = 0; + v13 = 0; + v14 = 0; + v15[1] = 0; + v16 = 0; + v17 = 0; + v18 = 0; + std::string::_M_assign((int)v11, a3 + 24); + v13 = *(_DWORD *)(a3 + 48); + v14 = *(_DWORD *)(a3 + 52); + std::string::_M_assign((int)v15, a3 + 60); + v17 = *(_DWORD *)(a3 + 48); + v18 = *(_DWORD *)(a2 + 48); + std::vector::push_back((char **)(a2 + 36), v11); + std::string::basic_string(v10, a3 + 60); + *(_DWORD *)(a2 + 48) += v10[1]; + std::operator+(this, (int)v9, (int)v10); + std::string::_M_dispose(v10); + night::ns_sourcemap::~ns_sourcemap(v11); + std::string::_M_dispose(v9); + return this; +} +// 534198: using guessed type int *`typeinfo for'std::string; +// 586E44: using guessed type int dword_586E44; + +//----- (0040A47C) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_function[abi:cxx11](int this, int a2, _DWORD *a3) +{ + void **v3; // ecx + unsigned int v4; // ebx + _DWORD *v5; // ecx + int *v6; // eax + bool v7; // al + _DWORD *v8; // ecx + _DWORD *v9; // eax + int v10; // eax + _DWORD *v11; // ecx + int *v12; // eax + int v13; // eax + _DWORD *v14; // eax + _DWORD *v15; // eax + int v16; // eax + _DWORD *v17; // eax + unsigned int v18; // ebx + _DWORD *v19; // eax + int v20; // eax + int v21; // edi + int v22; // eax + void **v23; // ecx + _DWORD *v24; // eax + int v25; // eax + int v26; // edi + int v27; // eax + int v29; // [esp+10h] [ebp-E8h] + char v30; // [esp+17h] [ebp-E1h] + unsigned int v31; // [esp+18h] [ebp-E0h] + unsigned int i; // [esp+18h] [ebp-E0h] + void *v34[2]; // [esp+28h] [ebp-D0h] BYREF + char v35; // [esp+30h] [ebp-C8h] BYREF + void *v36[6]; // [esp+40h] [ebp-B8h] BYREF + void *v37[6]; // [esp+58h] [ebp-A0h] BYREF + char *v38; // [esp+70h] [ebp-88h] BYREF + int v39; // [esp+74h] [ebp-84h] + char v40; // [esp+78h] [ebp-80h] BYREF + void *v41; // [esp+88h] [ebp-70h] BYREF + int v42; // [esp+8Ch] [ebp-6Ch] + char *v43; // [esp+A0h] [ebp-58h] BYREF + int v44; // [esp+A4h] [ebp-54h] + char v45; // [esp+A8h] [ebp-50h] BYREF + int v46; // [esp+B8h] [ebp-40h] + int v47; // [esp+BCh] [ebp-3Ch] + int v48[2]; // [esp+C0h] [ebp-38h] BYREF + char v49; // [esp+C8h] [ebp-30h] BYREF + int v50; // [esp+D8h] [ebp-20h] + int v51; // [esp+DCh] [ebp-1Ch] + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + v29 = a3[34]; + if ( v29 ) + { + std::string::basic_string(&v41, "function "); + std::string::operator+=((_DWORD *)this, (int)&v41); + *(_DWORD *)(a2 + 48) += v42; + v43 = &v45; + v48[0] = (int)&v49; + v44 = 0; + v45 = 0; + v46 = 0; + v47 = 0; + v48[1] = 0; + v49 = 0; + v50 = 0; + v51 = 0; + std::string::_M_assign((int)&v43, (int)(a3 + 6)); + v46 = a3[12]; + v47 = a3[13]; + std::string::_M_assign((int)v48, (int)(a3 + 33)); + v50 = a3[12]; + v51 = *(_DWORD *)(a2 + 48); + std::vector::push_back((char **)(a2 + 36), &v43); + std::string::operator+=((_DWORD *)this, (int)(a3 + 33)); + *(_DWORD *)(a2 + 48) += a3[34]; + night::ns_sourcemap::~ns_sourcemap((void **)&v43); + v3 = &v41; + } + else + { + std::string::basic_string((void **)&v43, "(function "); + std::string::operator+=((_DWORD *)this, (int)&v43); + v3 = (void **)&v43; + *(_DWORD *)(a2 + 48) += v44; + } + std::string::_M_dispose(v3); + std::string::operator+=((_DWORD *)this, "("); + v4 = 0; + ++*(_DWORD *)(a2 + 48); + v30 = 0; + while ( 1 ) + { + v5 = (_DWORD *)a3[61]; + if ( v4 >= (v5[1] - *v5) >> 2 ) + break; + v6 = (int *)std::vector::at(v5, v4); + v7 = std::operator==((int)&night::NS_TYPE_VAR, *v6); + v8 = (_DWORD *)a3[61]; + if ( v7 ) + { + v9 = (_DWORD *)std::vector::at(v8, v4); + std::string::operator+=((_DWORD *)this, *v9 + 60); + *(_DWORD *)(a2 + 48) += *(_DWORD *)(*(_DWORD *)std::vector::at((_DWORD *)a3[61], v4) + 64); + } + else + { + v10 = std::vector::at(v8, v4); + std::string::operator+=((_DWORD *)this, *(_DWORD *)(*(_DWORD *)v10 + 180) + 60); + v30 = 1; + *(_DWORD *)(a2 + 48) += *(_DWORD *)(*(_DWORD *)(*(_DWORD *)std::vector::at((_DWORD *)a3[61], v4) + + 180) + + 64); + } + v31 = v4 + 1; + v4 = (*(_DWORD *)(a3[61] + 4) - *(_DWORD *)a3[61]) >> 2; + if ( v31 != v4 ) + { + v4 = v31; + std::string::operator+=((_DWORD *)this, ","); + ++*(_DWORD *)(a2 + 48); + } + } + std::string::operator+=((_DWORD *)this, ")"); + ++*(_DWORD *)(a2 + 48); + if ( v30 ) + { + std::string::operator+=((_DWORD *)this, "{"); + ++*(_DWORD *)(a2 + 48); + for ( i = 0; ; ++i ) + { + v11 = (_DWORD *)a3[61]; + if ( i >= (v11[1] - *v11) >> 2 ) + break; + v35 = 0; + v34[0] = &v35; + v34[1] = 0; + v12 = (int *)std::vector::at(v11, i); + if ( std::operator==((int)&night::NS_TYPE_ASSIGN, *v12) ) + { + v13 = std::vector::at((_DWORD *)a3[61], i); + std::string::basic_string(v36, *(_DWORD *)(*(_DWORD *)v13 + 180) + 60); + std::string::basic_string(&v41, (int)v36); + std::string::append(&v41, "=undefined==="); + v14 = std::string::append(&v41, (int)v36); + std::string::basic_string(&v43, v14); + v15 = std::string::append(&v43, "?"); + std::string::basic_string(v37, v15); + std::string::_M_dispose((void **)&v43); + std::string::_M_dispose(&v41); + std::string::operator+=((_DWORD *)this, (int)v37); + *(_DWORD *)(a2 + 48) += v37[1]; + v16 = std::vector::at((_DWORD *)a3[61], i); + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(*(_DWORD *)v16 + 184)); + std::string::operator+=((_DWORD *)this, (int)&v38); + std::operator+((int)&v43, ":", (int)v36); + v17 = std::string::append(&v43, ";"); + std::string::basic_string(&v41, v17); + std::string::_M_dispose((void **)&v43); + std::string::operator+=((_DWORD *)this, (int)&v41); + *(_DWORD *)(a2 + 48) += v42; + std::string::_M_dispose(&v41); + std::string::_M_dispose((void **)&v38); + std::string::_M_dispose(v37); + std::string::_M_dispose(v36); + } + std::string::_M_dispose(v34); + } + } + v18 = (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6; + night::NSCompileJs::compile[abi:cxx11](a2, a3[54]); + if ( v30 ) + { + v38 = &v40; + v39 = 0; + v40 = 0; + if ( std::string::find((int *)v37, "arguments", 0) != -1 ) + { + std::operator+((int)&v41, "arguments.", (int)&night::nsv_); + v19 = std::string::append(&v41, "length=arguments.length;"); + std::string::basic_string(&v43, v19); + std::string::operator=(&v38, &v43); + std::string::_M_dispose((void **)&v43); + std::string::_M_dispose(&v41); + std::string::operator+=((_DWORD *)this, (int)&v38); + *(_DWORD *)(a2 + 48) += v39; + } + std::string::substr((void **)&v43, v37, 1u, 0xFFFFFFFF); + std::string::operator+=((_DWORD *)this, (int)&v43); + std::string::_M_dispose((void **)&v43); + --*(_DWORD *)(a2 + 48); + while ( v18 < (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6 ) + { + v20 = std::vector::at((_DWORD *)(a2 + 36), v18); + v21 = v39 + *(_DWORD *)(v20 + 60) - 1; + v22 = std::vector::at((_DWORD *)(a2 + 36), v18++); + *(_DWORD *)(v22 + 60) = v21; + } + v23 = (void **)&v38; + goto LABEL_29; + } + if ( std::string::find((int *)v37, "arguments", 0) != -1 ) + { + std::operator+((int)&v43, "{arguments.", (int)&night::nsv_); + v24 = std::string::append(&v43, "length=arguments.length;"); + std::string::basic_string(&v41, v24); + std::string::_M_dispose((void **)&v43); + std::string::operator+=((_DWORD *)this, (int)&v41); + *(_DWORD *)(a2 + 48) += v42; + std::string::substr((void **)&v43, v37, 1u, 0xFFFFFFFF); + std::string::operator+=((_DWORD *)this, (int)&v43); + std::string::_M_dispose((void **)&v43); + --*(_DWORD *)(a2 + 48); + while ( v18 < (*(_DWORD *)(a2 + 40) - *(_DWORD *)(a2 + 36)) >> 6 ) + { + v25 = std::vector::at((_DWORD *)(a2 + 36), v18); + v26 = v42 + *(_DWORD *)(v25 + 60) - 1; + v27 = std::vector::at((_DWORD *)(a2 + 36), v18++); + *(_DWORD *)(v27 + 60) = v26; + } + v23 = &v41; +LABEL_29: + std::string::_M_dispose(v23); + goto LABEL_31; + } + std::string::operator+=((_DWORD *)this, (int)v37); +LABEL_31: + if ( !v29 ) + { + std::string::operator+=((_DWORD *)this, ")"); + ++*(_DWORD *)(a2 + 48); + } + std::string::_M_dispose(v37); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040AC94) -------------------------------------------------------- +void **__thiscall night::NSCompileJs::compile[abi:cxx11](void **this, int a2, _DWORD *a3) +{ + _DWORD *v3; // eax + char **v4; // ecx + bool v5; // al + void *v8[6]; // [esp+20h] [ebp-88h] BYREF + char *v9; // [esp+38h] [ebp-70h] BYREF + int v10; // [esp+3Ch] [ebp-6Ch] + char v11; // [esp+40h] [ebp-68h] BYREF + char *v12; // [esp+50h] [ebp-58h] BYREF + int v13; // [esp+54h] [ebp-54h] + char v14[16]; // [esp+58h] [ebp-50h] BYREF + int v15; // [esp+68h] [ebp-40h] + int v16; // [esp+6Ch] [ebp-3Ch] + char *v17; // [esp+70h] [ebp-38h] BYREF + int v18; // [esp+74h] [ebp-34h] + char v19[16]; // [esp+78h] [ebp-30h] BYREF + int v20; // [esp+88h] [ebp-20h] + int v21; // [esp+8Ch] [ebp-1Ch] + + if ( !*(_DWORD *)(a2 + 4) ) + { + std::string::basic_string(v8, (int)a3); + if ( !std::operator==((int)&night::NS_TYPE_SKIP, (int)v8) ) + { + if ( std::operator==((int)&night::NS_TYPE_NUM, (int)v8) ) + goto LABEL_13; + if ( std::operator==((int)&night::NS_TYPE_BOOL, (int)v8) ) + { + v14[0] = 0; + v12 = v14; + v17 = v19; + v13 = 0; + v15 = 0; + v16 = 0; + v18 = 0; + v19[0] = 0; + v20 = 0; + v21 = 0; + std::string::_M_assign((int)&v12, (int)(a3 + 6)); + v15 = a3[12]; + v16 = a3[13]; + std::string::_M_assign((int)&v17, (int)(a3 + 15)); + v20 = a3[12]; + v21 = *(_DWORD *)(a2 + 48); + std::vector::push_back((char **)(a2 + 36), &v12); + std::string::basic_string(&v9, (int)(a3 + 15)); + *(_DWORD *)(a2 + 48) += v10; + std::string::basic_string(this, &v9); + std::string::_M_dispose((void **)&v9); + night::ns_sourcemap::~ns_sourcemap((void **)&v12); +LABEL_60: + std::string::_M_dispose(v8); + return this; + } + if ( std::operator==((int)&night::NS_TYPE_STR, (int)v8) ) + { + std::operator+(&v12, (int)(a3 + 27), (int)(a3 + 15)); + v3 = std::string::append(&v12, (int)(a3 + 27)); + std::string::basic_string(&v9, v3); + std::string::_M_dispose((void **)&v12); + *(_DWORD *)(a2 + 48) += v10; + std::string::basic_string(this, &v9); +LABEL_9: + v4 = &v9; +LABEL_10: + std::string::_M_dispose((void **)v4); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_B_TYPE, (int)v8) + || std::operator==((int)&night::NS_TYPE_PUNC, (int)v8) ) + { +LABEL_13: + std::string::basic_string(&v12, (int)(a3 + 15)); + *(_DWORD *)(a2 + 48) += v13; + std::string::basic_string(this, &v12); + v4 = &v12; + goto LABEL_10; + } + if ( std::operator==((int)&night::NS_TYPE_KW, (int)v8) ) + { + v11 = 0; + v9 = &v11; + v10 = 0; + if ( std::operator==("this", (int)(a3 + 15)) ) + { + std::string::operator=((unsigned int *)&v9, "(this.constructor===Window?{}:this)"); + ++*(_DWORD *)(a2 + 48); + } + else + { + std::string::_M_assign((int)&v9, (int)(a3 + 15)); + } + v14[0] = 0; + v12 = v14; + v17 = v19; + v13 = 0; + v15 = 0; + v16 = 0; + v18 = 0; + v19[0] = 0; + v20 = 0; + v21 = 0; + std::string::_M_assign((int)&v12, (int)(a3 + 6)); + v15 = a3[12]; + v16 = a3[13]; + std::string::_M_assign((int)&v17, (int)(a3 + 15)); + v20 = a3[12]; + v21 = *(_DWORD *)(a2 + 48); + std::vector::push_back((char **)(a2 + 36), &v12); + v5 = std::operator==("this", (int)(a3 + 15)); + *(_DWORD *)(a2 + 48) = !v5 + v10 + *(_DWORD *)(a2 + 48) - 1; + std::string::basic_string(this, &v9); + night::ns_sourcemap::~ns_sourcemap((void **)&v12); + goto LABEL_9; + } + if ( std::operator==((int)&night::NS_TYPE_VAR, (int)v8) ) + { + night::NSCompileJs::compile_var[abi:cxx11](this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_K_V, (int)v8) ) + { + night::NSCompileJs::compile_k_v[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_IF, (int)v8) ) + { + night::NSCompileJs::compile_if[abi:cxx11]((int)this, a2, a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_FOR, (int)v8) ) + { + night::NSCompileJs::compile_for[abi:cxx11](this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_WHILE, (int)v8) ) + { + night::NSCompileJs::compile_while[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_DO_WHILE, (int)v8) ) + { + night::NSCompileJs::compile_do_while[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_SWITCH, (int)v8) ) + { + night::NSCompileJs::compile_switch[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_OBJ_SELF_OP, (int)v8) ) + { + night::NSCompileJs::compile_obj_self_op[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_OBJ_PROPERTY, (int)v8) ) + { + night::NSCompileJs::compile_obj_property[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_OBJ_DOT, (int)v8) ) + { + night::NSCompileJs::compile_obj_dot[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_OP_SELF, (int)v8) ) + { + night::NSCompileJs::compile_op_self[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_TERNARY, (int)v8) ) + { + night::NSCompileJs::compile_ternary[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_BINARY, (int)v8) + || std::operator==((int)&night::NS_TYPE_ASSIGN, (int)v8) ) + { + night::NSCompileJs::compile_binary[abi:cxx11](this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_FUNC, (int)v8) ) + { + night::NSCompileJs::compile_function[abi:cxx11]((int)this, a2, a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_CALL, (int)v8) ) + { + night::NSCompileJs::compile_call[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_PROG, (int)v8) ) + { + night::NSCompileJs::compile_prog[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + if ( std::operator==((int)&night::NS_TYPE_PROG_NO_SEM, (int)v8) + || std::operator==((int)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, (int)v8) + || std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, (int)v8) + || std::operator==((int)&night::NS_TYPE_ARRAY, (int)v8) + || std::operator==((int)&night::NS_TYPE_BRACKET, (int)v8) ) + { + night::NSCompileJs::compile_prog_no_sem[abi:cxx11]((int)this, a2, (int)a3); + goto LABEL_60; + } + std::string::_M_assign(a2, (int)a3); + } + std::string::basic_string(this, (char *)off_51B9E4); + goto LABEL_60; + } + std::string::basic_string(this, (char *)off_51B9E4); + return this; +} + +//----- (0040B370) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_k_v[abi:cxx11](int this, int a2, int a3) +{ + int v4; // eax + _DWORD *v5; // eax + int v6; // eax + _DWORD *v7; // eax + void *v9[6]; // [esp+10h] [ebp-48h] BYREF + void *v10[12]; // [esp+28h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v4 = *(_DWORD *)(a3 + 188); + *(_DWORD *)(this + 4) = 0; + night::NSCompileJs::compile[abi:cxx11](a2, v4); + v5 = std::string::append(v9, ":"); + std::string::basic_string(v10, v5); + std::string::operator=((_DWORD *)this, v10); + std::string::_M_dispose(v10); + std::string::_M_dispose(v9); + v6 = *(_DWORD *)(a3 + 192); + ++*(_DWORD *)(a2 + 48); + night::NSCompileJs::compile[abi:cxx11](a2, v6); + v7 = std::string::append(v9, ","); + std::string::basic_string(v10, v7); + std::string::operator+=((_DWORD *)this, (int)v10); + std::string::_M_dispose(v10); + std::string::_M_dispose(v9); + ++*(_DWORD *)(a2 + 48); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040B470) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_if[abi:cxx11](int this, int a2, _DWORD *a3) +{ + int v4; // eax + void *v6[6]; // [esp+10h] [ebp-48h] BYREF + void *v7[12]; // [esp+28h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + std::string::operator+=((_DWORD *)this, "if "); + v4 = a3[51]; + *(_DWORD *)(a2 + 48) += 3; + night::NSCompileJs::compile[abi:cxx11](a2, v4); + std::string::operator+=((_DWORD *)this, (int)v7); + std::string::_M_dispose(v7); + night::NSCompileJs::compile[abi:cxx11](a2, a3[52]); + std::string::operator+=((_DWORD *)this, (int)v7); + std::string::_M_dispose(v7); + std::string::operator+=((_DWORD *)this, (int)(a3 + 27)); + *(_DWORD *)(a2 + 48) += a3[28]; + if ( a3[53] ) + { + std::string::basic_string(v6, " else "); + std::string::operator+=((_DWORD *)this, (int)v6); + *(_DWORD *)(a2 + 48) += v6[1]; + night::NSCompileJs::compile[abi:cxx11](a2, a3[53]); + std::string::operator+=((_DWORD *)this, (int)v7); + std::string::_M_dispose(v7); + std::string::_M_dispose(v6); + } + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040B5B6) -------------------------------------------------------- +_DWORD *__thiscall night::NSCompileJs::compile_for[abi:cxx11](_DWORD *this, int a2, int a3) +{ + _DWORD *v3; // ecx + _DWORD *exception; // ebx + _DWORD *v5; // eax + _DWORD *v6; // eax + _DWORD *v7; // eax + _DWORD *v8; // eax + _DWORD *v9; // eax + int v10; // eax + void *v13[2]; // [esp+20h] [ebp-78h] BYREF + char v14; // [esp+28h] [ebp-70h] BYREF + void *v15[6]; // [esp+38h] [ebp-60h] BYREF + void *v16[6]; // [esp+50h] [ebp-48h] BYREF + void *v17[12]; // [esp+68h] [ebp-30h] BYREF + + v13[0] = &v14; + v13[1] = 0; + v14 = 0; + std::string::basic_string(v15, "for("); + std::string::operator+=(v13, (int)v15); + v3 = *(_DWORD **)(a3 + 228); + *(_DWORD *)(a2 + 48) += v15[1]; + if ( v3[1] - *v3 != 12 ) + { + std::string::basic_string(v17, "error : sys error for compile_for"); + exception = __cxa_allocate_exception(0x18u); + std::string::basic_string(exception, v17); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::string, + (void (__cdecl *)(void *))std::string::~string); + } + v5 = (_DWORD *)std::vector::at(v3, 0); + night::NSCompileJs::compile[abi:cxx11](a2, *v5); + v6 = std::string::append(v16, ";"); + std::string::basic_string(v17, v6); + std::string::operator+=(v13, (int)v17); + std::string::_M_dispose(v17); + std::string::_M_dispose(v16); + ++*(_DWORD *)(a2 + 48); + v7 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 228), 1u); + night::NSCompileJs::compile[abi:cxx11](a2, *v7); + v8 = std::string::append(v16, ";"); + std::string::basic_string(v17, v8); + std::string::operator+=(v13, (int)v17); + std::string::_M_dispose(v17); + std::string::_M_dispose(v16); + ++*(_DWORD *)(a2 + 48); + v9 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 228), 2u); + night::NSCompileJs::compile[abi:cxx11](a2, *v9); + std::string::operator+=(v13, (int)v17); + std::string::_M_dispose(v17); + std::string::operator+=(v13, ")"); + v10 = *(_DWORD *)(a3 + 216); + ++*(_DWORD *)(a2 + 48); + night::NSCompileJs::compile[abi:cxx11](a2, v10); + std::string::operator+=(v13, (int)v17); + std::string::_M_dispose(v17); + std::string::basic_string(this, v13); + std::string::_M_dispose(v15); + std::string::_M_dispose(v13); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); +// 534198: using guessed type int *`typeinfo for'std::string; + +//----- (0040B7FA) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_while[abi:cxx11](int this, int a2, int a3) +{ + int v4; // eax + void *v6[6]; // [esp+10h] [ebp-48h] BYREF + void *v7[12]; // [esp+28h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + std::string::basic_string(v6, "while("); + std::string::operator+=((_DWORD *)this, (int)v6); + *(_DWORD *)(a2 + 48) += v6[1]; + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); + std::string::operator+=((_DWORD *)this, (int)v7); + std::string::_M_dispose(v7); + std::string::operator+=((_DWORD *)this, ")"); + v4 = *(_DWORD *)(a3 + 216); + ++*(_DWORD *)(a2 + 48); + night::NSCompileJs::compile[abi:cxx11](a2, v4); + std::string::operator+=((_DWORD *)this, (int)v7); + std::string::_M_dispose(v7); + std::string::_M_dispose(v6); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040B8EA) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_do_while[abi:cxx11](int this, int a2, int a3) +{ + void *v5[6]; // [esp+18h] [ebp-60h] BYREF + void *v6[6]; // [esp+30h] [ebp-48h] BYREF + void *v7[12]; // [esp+48h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + std::string::basic_string(v5, "do"); + std::string::operator+=((_DWORD *)this, (int)v5); + *(_DWORD *)(a2 + 48) += v5[1]; + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 216)); + std::string::operator+=((_DWORD *)this, (int)v7); + std::string::_M_dispose(v7); + std::string::basic_string(v6, "while("); + std::string::operator+=((_DWORD *)this, (int)v6); + *(_DWORD *)(a2 + 48) += v6[1]; + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); + std::string::operator+=((_DWORD *)this, (int)v7); + std::string::_M_dispose(v7); + std::string::basic_string(v7, ");"); + std::string::operator+=((_DWORD *)this, (int)v7); + *(_DWORD *)(a2 + 48) += v7[1]; + std::string::_M_dispose(v7); + std::string::_M_dispose(v6); + std::string::_M_dispose(v5); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040BA36) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_switch[abi:cxx11](int this, int a2, int a3) +{ + _DWORD *v3; // eax + _DWORD *v4; // eax + _DWORD *v5; // eax + unsigned int v6; // esi + int v7; // eax + _DWORD **v8; // eax + _DWORD *v9; // eax + _DWORD *v10; // eax + unsigned int v11; // esi + _DWORD *v12; // eax + _DWORD *v13; // eax + unsigned int i; // [esp+18h] [ebp-80h] + void *v17[6]; // [esp+20h] [ebp-78h] BYREF + void *v18[6]; // [esp+38h] [ebp-60h] BYREF + void *v19[6]; // [esp+50h] [ebp-48h] BYREF + void *v20[12]; // [esp+68h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + std::string::basic_string(v17, "switch("); + std::string::operator+=((_DWORD *)this, (int)v17); + *(_DWORD *)(a2 + 48) += v17[1]; + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 204)); + v3 = std::string::append(v19, "){"); + std::string::basic_string(v20, v3); + std::string::operator+=((_DWORD *)this, (int)v20); + std::string::_M_dispose(v20); + std::string::_M_dispose(v19); + *(_DWORD *)(a2 + 48) += 2; + for ( i = 0; i < (*(_DWORD *)(*(_DWORD *)(a3 + 232) + 4) - **(_DWORD **)(a3 + 232)) >> 2; ++i ) + { + std::string::basic_string(v18, "case "); + std::string::operator+=((_DWORD *)this, (int)v18); + *(_DWORD *)(a2 + 48) += v18[1]; + v4 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 232), i); + night::NSCompileJs::compile[abi:cxx11](a2, *v4); + v5 = std::string::append(v19, ":"); + std::string::basic_string(v20, v5); + std::string::operator+=((_DWORD *)this, (int)v20); + v6 = 0; + std::string::_M_dispose(v20); + std::string::_M_dispose(v19); + ++*(_DWORD *)(a2 + 48); + while ( 1 ) + { + v7 = std::vector>>::at(*(_DWORD **)(a3 + 236), i); + if ( v6 >= (*(_DWORD *)(*(_DWORD *)v7 + 4) - **(_DWORD **)v7) >> 2 ) + break; + v8 = (_DWORD **)std::vector>>::at( + *(_DWORD **)(a3 + 236), + i); + v9 = (_DWORD *)std::vector::at(*v8, v6); + night::NSCompileJs::compile[abi:cxx11](a2, *v9); + v10 = std::string::append(v19, ";"); + std::string::basic_string(v20, v10); + std::string::operator+=((_DWORD *)this, (int)v20); + ++v6; + std::string::_M_dispose(v20); + std::string::_M_dispose(v19); + ++*(_DWORD *)(a2 + 48); + } + std::string::_M_dispose(v18); + } + v11 = 0; + while ( v11 < (*(_DWORD *)(*(_DWORD *)(a3 + 240) + 4) - **(_DWORD **)(a3 + 240)) >> 2 ) + { + if ( !v11 ) + { + std::string::basic_string(v20, "default:"); + std::string::operator+=((_DWORD *)this, (int)v20); + *(_DWORD *)(a2 + 48) += v20[1]; + std::string::_M_dispose(v20); + } + v12 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 240), v11); + night::NSCompileJs::compile[abi:cxx11](a2, *v12); + v13 = std::string::append(v19, ";"); + std::string::basic_string(v20, v13); + std::string::operator+=((_DWORD *)this, (int)v20); + ++v11; + std::string::_M_dispose(v20); + std::string::_M_dispose(v19); + ++*(_DWORD *)(a2 + 48); + } + std::string::operator+=((_DWORD *)this, "}"); + ++*(_DWORD *)(a2 + 48); + std::string::_M_dispose(v17); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040BD62) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_obj_self_op[abi:cxx11](int this, int a2, int a3) +{ + bool v4; // zf + _DWORD *v5; // eax + void *v7[6]; // [esp+20h] [ebp-48h] BYREF + void *v8[12]; // [esp+38h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v4 = *(_BYTE *)(a3 + 200) == 0; + *(_DWORD *)(this + 4) = 0; + if ( v4 ) + { + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); + v5 = std::string::append(v7, a3 + 156); + std::string::basic_string(v8, v5); + std::string::operator+=((_DWORD *)this, (int)v8); + std::string::_M_dispose(v8); + std::string::_M_dispose(v7); + *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); + } + else + { + std::string::operator+=((_DWORD *)this, a3 + 156); + *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); + std::string::operator+=((_DWORD *)this, (int)v8); + std::string::_M_dispose(v8); + } + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040BE74) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](int this, int a2, int a3) +{ + unsigned int *v3; // eax + int v4; // eax + int *v5; // eax + _DWORD *v6; // eax + _DWORD *v7; // eax + void **v8; // ecx + int *v9; // eax + _DWORD *v10; // eax + _DWORD *v11; // eax + _DWORD *v12; // eax + _DWORD *v13; // eax + _DWORD *v14; // eax + _DWORD *v15; // eax + _DWORD *v16; // eax + _DWORD *v17; // eax + _DWORD *v18; // eax + _DWORD *v19; // eax + _DWORD *v20; // eax + _DWORD *v21; // eax + _DWORD *v22; // eax + _DWORD *v23; // eax + unsigned int i; // [esp+18h] [ebp-160h] + void *v27[6]; // [esp+28h] [ebp-150h] BYREF + int v28; // [esp+40h] [ebp-138h] BYREF + int v29; // [esp+44h] [ebp-134h] + void *v30[6]; // [esp+58h] [ebp-120h] BYREF + void *v31[6]; // [esp+70h] [ebp-108h] BYREF + void *v32[6]; // [esp+88h] [ebp-F0h] BYREF + void *v33[6]; // [esp+A0h] [ebp-D8h] BYREF + void *v34[6]; // [esp+B8h] [ebp-C0h] BYREF + void *v35[6]; // [esp+D0h] [ebp-A8h] BYREF + void *v36[6]; // [esp+E8h] [ebp-90h] BYREF + void *v37[6]; // [esp+100h] [ebp-78h] BYREF + void *v38[6]; // [esp+118h] [ebp-60h] BYREF + void *v39[6]; // [esp+130h] [ebp-48h] BYREF + void *v40[12]; // [esp+148h] [ebp-30h] BYREF + + std::to_string(v40, *(_DWORD *)(a2 + 32)); + v3 = std::string::insert((unsigned int *)v40, 0, (int)&night::nst_); + std::string::basic_string(v27, v3); + std::string::_M_dispose(v40); + ++*(_DWORD *)(a2 + 32); + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v4 = *(_DWORD *)(a3 + 192); + *(_DWORD *)(this + 4) = 0; + night::NSCompileJs::compile[abi:cxx11](a2, v4); + std::string::operator+=((_DWORD *)this, (int)v40); + std::string::_M_dispose(v40); + for ( i = 0; i < (*(_DWORD *)(*(_DWORD *)(a3 + 196) + 4) - **(_DWORD **)(a3 + 196)) >> 2; ++i ) + { + std::string::operator+=((_DWORD *)this, "[("); + *(_DWORD *)(a2 + 48) += 2; + v5 = (int *)std::vector::at(*(_DWORD **)(a3 + 196), i); + if ( std::operator==((int)&night::NS_TYPE_STR, *v5) ) + { + std::operator+((int)v40, "\"", (int)&night::nsv_); + v6 = std::string::append(v40, "\"+"); + std::string::basic_string(v39, v6); + std::string::_M_dispose(v40); + std::string::operator+=((_DWORD *)this, (int)v39); + *(_DWORD *)(a2 + 48) += v39[1]; + v7 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), i); + night::NSCompileJs::compile[abi:cxx11](a2, *v7); + std::string::operator+=((_DWORD *)this, (int)v40); + std::string::_M_dispose(v40); + v8 = v39; + } + else + { + v9 = (int *)std::vector::at(*(_DWORD **)(a3 + 196), i); + if ( std::operator==((int)&night::NS_TYPE_NUM, *v9) ) + { + v10 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), i); + night::NSCompileJs::compile[abi:cxx11](a2, *v10); + std::string::operator+=((_DWORD *)this, (int)v40); + v8 = v40; + } + else + { + std::operator+((int)v40, "(", (int)v27); + v11 = std::string::append(v40, "=("); + std::string::basic_string(&v28, v11); + std::string::_M_dispose(v40); + std::string::operator+=((_DWORD *)this, (int)&v28); + *(_DWORD *)(a2 + 48) += v29; + v12 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), i); + night::NSCompileJs::compile[abi:cxx11](a2, *v12); + v13 = std::string::append(v39, "),"); + std::string::basic_string(v40, v13); + std::string::operator+=((_DWORD *)this, (int)v40); + std::string::_M_dispose(v40); + std::string::_M_dispose(v39); + *(_DWORD *)(a2 + 48) += 2; + std::operator+((int)v30, "null==", (int)v27); + v14 = std::string::append(v30, "?undefined:"); + std::string::basic_string(v31, v14); + v15 = std::string::append(v31, "'number'=== typeof "); + std::string::basic_string(v32, v15); + v16 = std::string::append(v32, (int)v27); + std::string::basic_string(v33, v16); + v17 = std::string::append(v33, "?"); + std::string::basic_string(v34, v17); + v18 = std::string::append(v34, (int)v27); + std::string::basic_string(v35, v18); + v19 = std::string::append(v35, ":\""); + std::string::basic_string(v36, v19); + v20 = std::string::append(v36, (int)&night::nsv_); + std::string::basic_string(v37, v20); + v21 = std::string::append(v37, "\"+"); + std::string::basic_string(v38, v21); + v22 = std::string::append(v38, (int)v27); + std::string::basic_string(v39, v22); + v23 = std::string::append(v39, ")"); + std::string::basic_string(v40, v23); + std::string::operator=(&v28, v40); + std::string::_M_dispose(v40); + std::string::_M_dispose(v39); + std::string::_M_dispose(v38); + std::string::_M_dispose(v37); + std::string::_M_dispose(v36); + std::string::_M_dispose(v35); + std::string::_M_dispose(v34); + std::string::_M_dispose(v33); + std::string::_M_dispose(v32); + std::string::_M_dispose(v31); + std::string::_M_dispose(v30); + std::string::operator+=((_DWORD *)this, (int)&v28); + v8 = (void **)&v28; + *(_DWORD *)(a2 + 48) += v29; + } + } + std::string::_M_dispose(v8); + std::string::operator+=((_DWORD *)this, ")]"); + *(_DWORD *)(a2 + 48) += 2; + } + std::string::_M_dispose(v27); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040C4A4) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_obj_dot[abi:cxx11](int this, int a2, int a3) +{ + int v4; // eax + unsigned int v5; // esi + _DWORD *v6; // ecx + _DWORD *v7; // eax + void *v9[12]; // [esp+18h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v4 = *(_DWORD *)(a3 + 192); + *(_DWORD *)(this + 4) = 0; + night::NSCompileJs::compile[abi:cxx11](a2, v4); + std::string::operator+=((_DWORD *)this, (int)v9); + v5 = 0; + std::string::_M_dispose(v9); + while ( v5 < (*(_DWORD *)(*(_DWORD *)(a3 + 196) + 4) - **(_DWORD **)(a3 + 196)) >> 2 ) + { + std::string::operator+=((_DWORD *)this, "."); + v6 = *(_DWORD **)(a3 + 196); + ++*(_DWORD *)(a2 + 48); + v7 = (_DWORD *)std::vector::at(v6, v5); + night::NSCompileJs::compile[abi:cxx11](a2, *v7); + std::string::operator+=((_DWORD *)this, (int)v9); + ++v5; + std::string::_M_dispose(v9); + } + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040C58E) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_op_self[abi:cxx11](int this, int a2, int a3) +{ + void *v5[12]; // [esp+18h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + std::string::operator+=((_DWORD *)this, a3 + 156); + *(_DWORD *)(a2 + 48) += *(_DWORD *)(a3 + 160); + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); + std::string::operator+=((_DWORD *)this, (int)v5); + std::string::_M_dispose(v5); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040C61E) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_ternary[abi:cxx11](int this, int a2, int a3) +{ + int v4; // eax + _DWORD *v5; // eax + int v6; // eax + void *v8[6]; // [esp+10h] [ebp-48h] BYREF + void *v9[12]; // [esp+28h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v4 = *(_DWORD *)(a3 + 180); + *(_DWORD *)(this + 4) = 0; + night::NSCompileJs::compile[abi:cxx11](a2, v4); + v5 = std::string::append(v8, ":"); + std::string::basic_string(v9, v5); + std::string::operator+=((_DWORD *)this, (int)v9); + std::string::_M_dispose(v9); + std::string::_M_dispose(v8); + v6 = *(_DWORD *)(a3 + 184); + ++*(_DWORD *)(a2 + 48); + night::NSCompileJs::compile[abi:cxx11](a2, v6); + std::string::operator+=((_DWORD *)this, (int)v9); + std::string::_M_dispose(v9); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040C6FA) -------------------------------------------------------- +_DWORD *__thiscall night::NSCompileJs::compile_binary[abi:cxx11](_DWORD *this, int a2, int a3) +{ + _DWORD *v3; // eax + _DWORD *v4; // eax + void *v7[6]; // [esp+20h] [ebp-78h] BYREF + void *v8[6]; // [esp+38h] [ebp-60h] BYREF + void *v9[6]; // [esp+50h] [ebp-48h] BYREF + void *v10[12]; // [esp+68h] [ebp-30h] BYREF + + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 180)); + std::operator+((int)v10, (char *)asc_51BF80, a3 + 156); + v3 = std::string::append(v10, (char *)asc_51BF80); + std::string::basic_string(v8, v3); + std::string::_M_dispose(v10); + *(_DWORD *)(a2 + 48) += v8[1]; + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 184)); + std::operator+(v10, (int)v7, (int)v8); + v4 = std::string::append(v10, (int)v9); + std::string::basic_string(this, v4); + std::string::_M_dispose(v10); + std::string::_M_dispose(v9); + std::string::_M_dispose(v8); + std::string::_M_dispose(v7); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040C818) -------------------------------------------------------- +_DWORD *__thiscall night::NSCompileJs::compile_assign[abi:cxx11](_DWORD *this, int a2, int a3) +{ + night::NSCompileJs::compile_binary[abi:cxx11](this, a2, a3); + return this; +} + +//----- (0040C83C) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_call[abi:cxx11](int this, int a2, int a3) +{ + int v3; // eax + unsigned int v4; // edi + _DWORD *v5; // ecx + int v6; // eax + int v7; // eax + _DWORD **v8; // eax + int *v9; // eax + _DWORD **v10; // eax + _DWORD *v11; // eax + int v12; // eax + int v13; // eax + int v14; // eax + _DWORD **v15; // eax + _DWORD *v16; // eax + int v17; // eax + unsigned int v19; // [esp+14h] [ebp-44h] + unsigned int v20; // [esp+14h] [ebp-44h] + unsigned int v21; // [esp+18h] [ebp-40h] + unsigned int v22; // [esp+18h] [ebp-40h] + void *v24[12]; // [esp+28h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = *(_DWORD *)(a3 + 220); + *(_DWORD *)(this + 4) = 0; + night::NSCompileJs::compile[abi:cxx11](a2, v3); + std::string::operator=((_DWORD *)this, v24); + v4 = 0; + std::string::_M_dispose(v24); + if ( std::operator==("return", *(_DWORD *)(a3 + 220) + 60) ) + { + while ( 1 ) + { + v5 = *(_DWORD **)(a3 + 224); + if ( v4 >= (v5[1] - *v5) >> 2 ) + break; + v6 = std::vector>>::at(v5, v4); + if ( **(_DWORD **)v6 != *(_DWORD *)(*(_DWORD *)v6 + 4) ) + { + v7 = std::vector>>::at(*(_DWORD **)(a3 + 224), v4); + if ( *(_DWORD *)(*(_DWORD *)v7 + 4) - **(_DWORD **)v7 != 4 + || (v8 = (_DWORD **)std::vector>>::at( + *(_DWORD **)(a3 + 224), + v4), + v9 = (int *)std::vector::at(*v8, 0), + !std::operator==((int)&night::NS_TYPE_SKIP, *v9)) ) + { + std::string::operator+=((_DWORD *)this, "("); + v21 = 0; + ++*(_DWORD *)(a2 + 48); + while ( 1 ) + { + v13 = std::vector>>::at( + *(_DWORD **)(a3 + 224), + v4); + if ( v21 >= (*(_DWORD *)(*(_DWORD *)v13 + 4) - **(_DWORD **)v13) >> 2 ) + break; + v10 = (_DWORD **)std::vector>>::at( + *(_DWORD **)(a3 + 224), + v4); + v11 = (_DWORD *)std::vector::at(*v10, v21); + night::NSCompileJs::compile[abi:cxx11](a2, *v11); + std::string::operator+=((_DWORD *)this, (int)v24); + std::string::_M_dispose(v24); + v19 = v21 + 1; + v12 = std::vector>>::at( + *(_DWORD **)(a3 + 224), + v4); + v21 = (*(_DWORD *)(*(_DWORD *)v12 + 4) - **(_DWORD **)v12) >> 2; + if ( v19 != v21 ) + { + std::string::operator+=((_DWORD *)this, ","); + ++*(_DWORD *)(a2 + 48); + v21 = v19; + } + } + std::string::operator+=((_DWORD *)this, ")"); + ++*(_DWORD *)(a2 + 48); + } + } + ++v4; + } + } + else + { + while ( v4 < (*(_DWORD *)(*(_DWORD *)(a3 + 224) + 4) - **(_DWORD **)(a3 + 224)) >> 2 ) + { + std::string::operator+=((_DWORD *)this, "("); + ++*(_DWORD *)(a2 + 48); + v22 = 0; + while ( 1 ) + { + v14 = std::vector>>::at(*(_DWORD **)(a3 + 224), v4); + if ( v22 >= (*(_DWORD *)(*(_DWORD *)v14 + 4) - **(_DWORD **)v14) >> 2 ) + break; + v15 = (_DWORD **)std::vector>>::at( + *(_DWORD **)(a3 + 224), + v4); + v16 = (_DWORD *)std::vector::at(*v15, v22); + night::NSCompileJs::compile[abi:cxx11](a2, *v16); + std::string::operator+=((_DWORD *)this, (int)v24); + std::string::_M_dispose(v24); + v20 = v22 + 1; + v17 = std::vector>>::at(*(_DWORD **)(a3 + 224), v4); + v22 = (*(_DWORD *)(*(_DWORD *)v17 + 4) - **(_DWORD **)v17) >> 2; + if ( v20 != v22 ) + { + std::string::operator+=((_DWORD *)this, ","); + ++*(_DWORD *)(a2 + 48); + v22 = v20; + } + } + std::string::operator+=((_DWORD *)this, ")"); + ++v4; + ++*(_DWORD *)(a2 + 48); + } + } + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040CB3A) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_prog[abi:cxx11](int this, int a2, int a3) +{ + unsigned int v4; // esi + _DWORD *v5; // eax + _DWORD *v6; // ecx + unsigned int v8; // [esp+1Ch] [ebp-4Ch] + void *v9; // [esp+20h] [ebp-48h] BYREF + int v10; // [esp+24h] [ebp-44h] + void *v11[12]; // [esp+38h] [ebp-30h] BYREF + + std::string::basic_string(&v9, a3 + 108); + if ( !v10 ) + std::string::operator=((unsigned int *)&v9, ";"); + *(_DWORD *)(this + 4) = 0; + v4 = 0; + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + while ( 1 ) + { + v6 = *(_DWORD **)(a3 + 228); + if ( v4 >= (v6[1] - *v6) >> 2 ) + break; + v5 = (_DWORD *)std::vector::at(v6, v4); + night::NSCompileJs::compile[abi:cxx11](a2, *v5); + std::string::operator+=((_DWORD *)this, (int)v11); + std::string::_M_dispose(v11); + v8 = v4 + 1; + v4 = (*(_DWORD *)(*(_DWORD *)(a3 + 228) + 4) - **(_DWORD **)(a3 + 228)) >> 2; + if ( v8 != v4 ) + { + std::string::operator+=((_DWORD *)this, (int)&v9); + v4 = v8; + *(_DWORD *)(a2 + 48) += v10; + } + } + std::string::_M_dispose(&v9); + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040CC3E) -------------------------------------------------------- +int __thiscall night::NSCompileJs::compile_prog_no_sem[abi:cxx11](int this, int a2, int a3) +{ + unsigned int i; // edi + _DWORD *v5; // ecx + _DWORD *v6; // eax + void *v8[12]; // [esp+18h] [ebp-30h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + if ( std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, a3) ) + { + std::string::operator+=((_DWORD *)this, "("); + ++*(_DWORD *)(a2 + 48); + } + for ( i = 0; ; ++i ) + { + v5 = *(_DWORD **)(a3 + 228); + if ( i >= (v5[1] - *v5) >> 2 ) + break; + v6 = (_DWORD *)std::vector::at(v5, i); + night::NSCompileJs::compile[abi:cxx11](a2, *v6); + std::string::operator+=((_DWORD *)this, (int)v8); + std::string::_M_dispose(v8); + } + if ( std::operator==((int)&night::NS_TYPE_OBJ_BLOCK, a3) ) + { + std::string::operator+=((_DWORD *)this, ")"); + ++*(_DWORD *)(a2 + 48); + } + return this; +} +// 40AC94: using guessed type _DWORD __stdcall night::NSCompileJs::compile[abi:cxx11](_DWORD, _DWORD); + +//----- (0040CD26) -------------------------------------------------------- +_DWORD *__thiscall night::NSCompileJs::compile_once(_DWORD *this, int a2, unsigned int *a3, int a4, char a5) +{ + const char **v5; // ebx + void *v8[12]; // [esp+28h] [ebp-30h] BYREF + + *(_DWORD *)(a2 + 28) = a4; + std::string::operator=(a3, (char *)off_51B9E4); + v5 = (const char **)night::NSASTParse::top_down(*(int **)(a2 + 24)); + if ( a5 ) + { + night::ns_node::debug_no_space[abi:cxx11](v8, v5); + printf("ast :%s\n", (const char *)v8[0]); + std::string::_M_dispose(v8); + } + night::NSCompileJs::compile[abi:cxx11](v8, a2, v5); + std::string::_M_assign((int)a3, (int)v8); + std::string::basic_string(this, a2); + std::string::_M_dispose(v8); + return this; +} + +//----- (0040CDD5) -------------------------------------------------------- +int __cdecl night::compile_ns_no_wrapper(int a1, int a2, int a3, unsigned int *a4, char a5) +{ + int v5; // esi + int v6; // edx + void *v8[3]; // [esp+1Ch] [ebp-12Ch] BYREF + void **v9[3]; // [esp+28h] [ebp-120h] BYREF + void *v10[6]; // [esp+34h] [ebp-114h] BYREF + int v11[7]; // [esp+4Ch] [ebp-FCh] BYREF + int v12[5]; // [esp+68h] [ebp-E0h] BYREF + void *v13[2]; // [esp+7Ch] [ebp-CCh] BYREF + char v14; // [esp+84h] [ebp-C4h] BYREF + void **v15; // [esp+94h] [ebp-B4h] + int v16; // [esp+98h] [ebp-B0h] + int v17; // [esp+9Ch] [ebp-ACh] + int v18; // [esp+A0h] [ebp-A8h] + int v19; // [esp+A4h] [ebp-A4h] + int v20; // [esp+A8h] [ebp-A0h] + int v21; // [esp+ACh] [ebp-9Ch] + void *v22[15]; // [esp+B0h] [ebp-98h] BYREF + void *v23[23]; // [esp+ECh] [ebp-5Ch] BYREF + + std::string::operator=(a4, (char *)off_51B9E4); + memset(v8, 0, sizeof(v8)); + night::NSStream::NSStream(v22, a1, a2, a3); + v12[2] = (int)v12; + v12[3] = (int)v12; + v11[1] = (int)v22; + v12[0] = 0; + v12[1] = 0; + v12[4] = 0; + v11[0] = (int)v8; + memset(&v11[2], 0, 16); + std::string::basic_string(v13, a1); + night::NSASTParse::NSASTParse((int)v23, (int)v13, (int)v11, (int)v8); + std::string::_M_dispose(v13); + v13[0] = &v14; + v15 = v23; + v13[1] = 0; + v14 = 0; + v18 = 0; + v19 = 0; + v20 = 0; + v16 = 0; + v17 = 0; + v21 = 1; + memset(v9, 0, sizeof(v9)); + night::NSCompileJs::compile_once(v10, (int)v13, a4, (int)v9, a5); + night::NSGod::hamlet(v8); + v5 = 0; + if ( v10[1] ) + { + std::string::_M_assign((int)a4, (int)v10); + v5 = 121; + } + std::string::_M_dispose(v10); + std::vector::~vector(v9); + night::NSCompileJs::~NSCompileJs((int)v13, v6); + night::NSASTParse::~NSASTParse(v23); + night::NSToken::~NSToken((int)v11); + night::NSStream::~NSStream(v22); + std::_Vector_base::~_Vector_base(v8); + return v5; +} +// 40D09F: variable 'v6' is possibly undefined + +//----- (0040D0D7) -------------------------------------------------------- +int __cdecl night::compile_ns(int a1, int a2, int a3, int a4, unsigned int *a5, char a6) +{ + int v6; // ebx + _DWORD *v7; // eax + _DWORD *v8; // eax + _DWORD *v9; // eax + _DWORD *v10; // eax + _DWORD *v11; // eax + _DWORD *v12; // eax + _DWORD *v13; // eax + int v14; // edx + void *v16[3]; // [esp+1Ch] [ebp-1BCh] BYREF + void **v17[3]; // [esp+28h] [ebp-1B0h] BYREF + void *v18[2]; // [esp+34h] [ebp-1A4h] BYREF + char v19; // [esp+3Ch] [ebp-19Ch] BYREF + void *v20[6]; // [esp+4Ch] [ebp-18Ch] BYREF + void *v21[6]; // [esp+64h] [ebp-174h] BYREF + void *v22[6]; // [esp+7Ch] [ebp-15Ch] BYREF + void *v23[6]; // [esp+94h] [ebp-144h] BYREF + void *v24[6]; // [esp+ACh] [ebp-12Ch] BYREF + void *v25[6]; // [esp+C4h] [ebp-114h] BYREF + int v26[7]; // [esp+DCh] [ebp-FCh] BYREF + int v27[5]; // [esp+F8h] [ebp-E0h] BYREF + void *v28[2]; // [esp+10Ch] [ebp-CCh] BYREF + char v29; // [esp+114h] [ebp-C4h] BYREF + void **v30; // [esp+124h] [ebp-B4h] + int v31; // [esp+128h] [ebp-B0h] + int v32; // [esp+12Ch] [ebp-ACh] + int v33; // [esp+130h] [ebp-A8h] + int v34; // [esp+134h] [ebp-A4h] + int v35; // [esp+138h] [ebp-A0h] + int v36; // [esp+13Ch] [ebp-9Ch] + void *v37[15]; // [esp+140h] [ebp-98h] BYREF + void *v38[23]; // [esp+17Ch] [ebp-5Ch] BYREF + + std::string::operator=(a5, (char *)off_51B9E4); + memset(v16, 0, sizeof(v16)); + night::NSStream::NSStream(v37, a1, a3, a4); + v26[1] = (int)v37; + v27[0] = 0; + v27[1] = 0; + v27[2] = (int)v27; + v27[3] = (int)v27; + v27[4] = 0; + v26[0] = (int)v16; + memset(&v26[2], 0, 16); + std::string::basic_string(v28, a1); + night::NSASTParse::NSASTParse((int)v38, (int)v28, (int)v26, (int)v16); + std::string::_M_dispose(v28); + v28[0] = &v29; + v30 = v38; + v18[0] = &v19; + v28[1] = 0; + v29 = 0; + v33 = 0; + v34 = 0; + v35 = 0; + v31 = 0; + v32 = 0; + v36 = 1; + v18[1] = 0; + v19 = 0; + memset(v17, 0, sizeof(v17)); + night::NSCompileJs::compile_once(v20, (int)v28, (unsigned int *)v18, (int)v17, a6); + night::NSGod::hamlet(v16); + if ( v20[1] ) + { + std::string::_M_assign((int)a5, (int)v20); + v6 = 121; + } + else + { + std::operator+((int)v23, ";return ", (int)&night::nsv_); + v7 = std::string::append(v23, "module."); + std::string::basic_string(v24, v7); + v8 = std::string::append(v24, (int)&night::nsv_); + std::string::basic_string(v25, v8); + v9 = std::string::append(v25, "exports;"); + std::string::basic_string(v21, v9); + std::string::_M_dispose(v25); + std::string::_M_dispose(v24); + std::string::_M_dispose(v23); + std::operator+((int)v24, "function ", a2); + v10 = std::string::append(v24, "(){"); + std::string::basic_string(v25, v10); + std::string::operator=(a5, v25); + std::string::_M_dispose(v25); + std::string::_M_dispose(v24); + std::operator+((int)v22, "var ", (int)&night::nsv_); + v11 = std::string::append(v22, "module={"); + std::string::basic_string(v23, v11); + v12 = std::string::append(v23, (int)&night::nsv_); + std::string::basic_string(v24, v12); + v13 = std::string::append(v24, "exports:{}};"); + std::string::basic_string(v25, v13); + std::string::operator+=(a5, (int)v25); + std::string::_M_dispose(v25); + std::string::_M_dispose(v24); + std::string::_M_dispose(v23); + std::string::_M_dispose(v22); + std::operator+(v25, (int)v18, (int)v21); + std::string::operator+=(a5, (int)v25); + std::string::_M_dispose(v25); + std::string::operator+=(a5, "}"); + v6 = 0; + std::string::_M_dispose(v21); + } + std::string::_M_dispose(v20); + std::vector::~vector(v17); + std::string::_M_dispose(v18); + night::NSCompileJs::~NSCompileJs((int)v28, v14); + night::NSASTParse::~NSASTParse(v38); + night::NSToken::~NSToken((int)v26); + night::NSStream::~NSStream(v37); + std::_Vector_base::~_Vector_base(v16); + return v6; +} +// 40D64B: variable 'v14' is possibly undefined + +//----- (0040D683) -------------------------------------------------------- +int __cdecl night::compile_ns_with_sourcemap(int *a1, int a2, int a3, int a4, int a5, unsigned int *a6, int a7) +{ + int v7; // ebx + _DWORD *v8; // eax + _DWORD *v9; // eax + _DWORD *v10; // eax + _DWORD *v11; // eax + _DWORD *v12; // eax + _DWORD *v13; // eax + _DWORD *v14; // eax + int v15; // esi + void **v16; // ebx + _DWORD *v17; // edi + void **v18; // esi + int v19; // eax + int v20; // edx + int v21; // ecx + int v22; // edx + int v23; // ecx + int v24; // eax + int v25; // edx + int v26; // ecx + int v27; // edx + int v28; // ecx + int v29; // edx + int v30; // edx + void (__cdecl *v32)(void *); // [esp+4h] [ebp-204h] + int v33; // [esp+28h] [ebp-1E0h] + int v34; // [esp+2Ch] [ebp-1DCh] + void **v35; // [esp+3Ch] [ebp-1CCh] BYREF + void *v36[3]; // [esp+40h] [ebp-1C8h] BYREF + void **v37[3]; // [esp+4Ch] [ebp-1BCh] BYREF + void **v38; // [esp+58h] [ebp-1B0h] BYREF + void **v39; // [esp+5Ch] [ebp-1ACh] + int v40; // [esp+60h] [ebp-1A8h] + void *v41[2]; // [esp+64h] [ebp-1A4h] BYREF + char v42; // [esp+6Ch] [ebp-19Ch] BYREF + void *v43[6]; // [esp+7Ch] [ebp-18Ch] BYREF + void *v44[6]; // [esp+94h] [ebp-174h] BYREF + void *v45; // [esp+ACh] [ebp-15Ch] BYREF + int v46; // [esp+B0h] [ebp-158h] BYREF + int v47; // [esp+B4h] [ebp-154h] + int *v48; // [esp+B8h] [ebp-150h] + int *v49; // [esp+BCh] [ebp-14Ch] + int v50; // [esp+C0h] [ebp-148h] + void *v51; // [esp+C4h] [ebp-144h] BYREF + int v52; // [esp+C8h] [ebp-140h] BYREF + int v53; // [esp+CCh] [ebp-13Ch] + int *v54; // [esp+D0h] [ebp-138h] + int *v55; // [esp+D4h] [ebp-134h] + int v56; // [esp+D8h] [ebp-130h] + void **v57; // [esp+DCh] [ebp-12Ch] BYREF + int v58; // [esp+E0h] [ebp-128h] BYREF + int v59; // [esp+E4h] [ebp-124h] + int *v60; // [esp+E8h] [ebp-120h] + int *v61; // [esp+ECh] [ebp-11Ch] + int v62; // [esp+F0h] [ebp-118h] + void *v63; // [esp+F4h] [ebp-114h] BYREF + int v64; // [esp+F8h] [ebp-110h] BYREF + int v65; // [esp+FCh] [ebp-10Ch] + int *v66; // [esp+100h] [ebp-108h] + int *v67; // [esp+104h] [ebp-104h] + int v68; // [esp+108h] [ebp-100h] + int v69[7]; // [esp+10Ch] [ebp-FCh] BYREF + int v70[5]; // [esp+128h] [ebp-E0h] BYREF + void *v71[2]; // [esp+13Ch] [ebp-CCh] BYREF + char v72; // [esp+144h] [ebp-C4h] BYREF + void **v73; // [esp+154h] [ebp-B4h] + int v74; // [esp+158h] [ebp-B0h] + int v75; // [esp+15Ch] [ebp-ACh] + _DWORD *v76; // [esp+160h] [ebp-A8h] + int v77; // [esp+164h] [ebp-A4h] + int v78; // [esp+168h] [ebp-A0h] + int v79; // [esp+16Ch] [ebp-9Ch] + void *v80[15]; // [esp+170h] [ebp-98h] BYREF + void *v81[23]; // [esp+1ACh] [ebp-5Ch] BYREF + + std::string::operator=(a6, (char *)off_51B9E4); + memset(v36, 0, sizeof(v36)); + night::NSStream::NSStream(v80, (int)a1, a4, a5); + v70[2] = (int)v70; + v70[3] = (int)v70; + v69[1] = (int)v80; + v70[0] = 0; + v70[1] = 0; + v70[4] = 0; + v69[0] = (int)v36; + memset(&v69[2], 0, 16); + std::string::basic_string(v71, (int)a1); + night::NSASTParse::NSASTParse((int)v81, (int)v71, (int)v69, (int)v36); + std::string::_M_dispose(v71); + v71[0] = &v72; + v73 = v81; + v41[0] = &v42; + v71[1] = 0; + v72 = 0; + v76 = 0; + v77 = 0; + v78 = 0; + v74 = 0; + v75 = 0; + v79 = 1; + v41[1] = 0; + v42 = 0; + memset(v37, 0, sizeof(v37)); + night::NSCompileJs::compile_once(v43, (int)v71, (unsigned int *)v41, (int)v37, 0); + night::NSGod::hamlet(v36); + if ( v43[1] ) + { + std::string::_M_assign((int)a6, (int)v43); + v7 = 121; + } + else + { + std::operator+((int)&v51, ";return ", (int)&night::nsv_); + v8 = std::string::append(&v51, "module."); + std::string::basic_string(&v57, v8); + v9 = std::string::append(&v57, (int)&night::nsv_); + std::string::basic_string(&v63, v9); + v10 = std::string::append(&v63, "exports;"); + std::string::basic_string(v44, v10); + std::string::_M_dispose(&v63); + std::string::_M_dispose((void **)&v57); + std::string::_M_dispose(&v51); + std::operator+((int)&v57, "function ", a3); + v11 = std::string::append(&v57, "(){"); + std::string::basic_string(&v63, v11); + std::string::operator=(a6, &v63); + std::string::_M_dispose(&v63); + std::string::_M_dispose((void **)&v57); + std::operator+((int)&v45, "var ", (int)&night::nsv_); + v12 = std::string::append(&v45, "module={"); + std::string::basic_string(&v51, v12); + v13 = std::string::append(&v51, (int)&night::nsv_); + std::string::basic_string(&v57, v13); + v14 = std::string::append(&v57, "exports:{}};"); + std::string::basic_string(&v63, v14); + std::string::operator+=(a6, (int)&v63); + std::string::_M_dispose(&v63); + std::string::_M_dispose((void **)&v57); + std::string::_M_dispose(&v51); + std::string::_M_dispose(&v45); + v34 = a6[1]; + std::operator+(&v63, (int)v41, (int)v44); + std::string::operator+=(a6, (int)&v63); + std::string::_M_dispose(&v63); + std::string::operator+=(a6, "}"); + std::operator+((int)&v63, "\n//# sourceMappingURL=", a2); + std::string::operator+=(a6, (int)&v63); + std::string::_M_dispose(&v63); + v15 = v77 - (_DWORD)v76; + v38 = 0; + v39 = 0; + v40 = 0; + if ( (v77 - (int)v76) >> 6 ) + { + if ( (unsigned int)((v77 - (int)v76) >> 6) > 0x1FFFFFF ) + std::__throw_bad_alloc(); + v16 = (void **)operator new((struct type_info *)(v77 - (_DWORD)v76), v32); + } + else + { + v16 = 0; + } + v17 = v76; + v38 = v16; + v39 = v16; + v33 = v77; + v40 = (int)v16 + v15; + v18 = v16; + while ( (_DWORD *)v33 != v17 ) + { + night::ns_sourcemap::ns_sourcemap(v18, v17); + v18 += 16; + v17 += 16; + } + v39 = v18; + v48 = &v46; + v49 = &v46; + v46 = 0; + v47 = 0; + v50 = 0; + v52 = 0; + v53 = 0; + v54 = &v52; + v55 = &v52; + v56 = 0; + night::NSToken::get_tokens_for_sourcemap(v69, &v45, &v51); + v64 = 0; + v65 = 0; + v66 = &v64; + v67 = &v64; + v68 = 0; + if ( v53 ) + { + v57 = &v63; + v19 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( + v53, + (int)&v64, + (int)&v57); + v20 = v19; + do + { + v21 = v20; + v20 = *(_DWORD *)(v20 + 8); + } + while ( v20 ); + v66 = (int *)v21; + v22 = v19; + do + { + v23 = v22; + v22 = *(_DWORD *)(v22 + 12); + } + while ( v22 ); + v67 = (int *)v23; + v65 = v19; + v68 = v56; + } + v58 = 0; + v59 = 0; + v60 = &v58; + v61 = &v58; + v62 = 0; + if ( v47 ) + { + v35 = (void **)&v57; + v24 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( + v47, + (int)&v58, + (int)&v35); + v25 = v24; + do + { + v26 = v25; + v25 = *(_DWORD *)(v25 + 8); + } + while ( v25 ); + v60 = (int *)v26; + v27 = v24; + do + { + v28 = v27; + v27 = *(_DWORD *)(v27 + 12); + } + while ( v27 ); + v61 = (int *)v28; + v59 = v24; + v62 = v50; + } + night::sourcemap::gen_sourcemap_content(a1, &v57, &v63, &v38, v34, a7); + v7 = 0; + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v57); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v63); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v51); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v45); + std::vector::~vector(&v38, v29); + std::string::_M_dispose(v44); + } + std::string::_M_dispose(v43); + std::vector::~vector(v37); + std::string::_M_dispose(v41); + night::NSCompileJs::~NSCompileJs((int)v71, v30); + night::NSASTParse::~NSASTParse(v81); + night::NSToken::~NSToken((int)v69); + night::NSStream::~NSStream(v80); + std::_Vector_base::~_Vector_base(v36); + return v7; +} +// 40DAF3: variable 'v32' is possibly undefined +// 40DD8D: variable 'v29' is possibly undefined +// 40DF7D: variable 'v30' is possibly undefined + +//----- (0040DFB8) -------------------------------------------------------- +void __cdecl __tcf_0() +{ + std::string::_M_dispose((void **)&night::nsv_); +} + +//----- (0040DFC2) -------------------------------------------------------- +void __cdecl __tcf_1_0() +{ + std::string::_M_dispose((void **)&night::nst_); +} + +//----- (0040DFCC) -------------------------------------------------------- +void __cdecl __tcf_2_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); +} + +//----- (0040DFD6) -------------------------------------------------------- +void __cdecl __tcf_3_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); +} + +//----- (0040DFE0) -------------------------------------------------------- +void __cdecl __tcf_4_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_VAR); +} + +//----- (0040DFEA) -------------------------------------------------------- +void __cdecl __tcf_5_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_STR); +} + +//----- (0040DFF4) -------------------------------------------------------- +void __cdecl __tcf_6_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_NUM); +} + +//----- (0040DFFE) -------------------------------------------------------- +void __cdecl __tcf_7_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); +} + +//----- (0040E008) -------------------------------------------------------- +void __cdecl __tcf_8_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_KW); +} + +//----- (0040E012) -------------------------------------------------------- +void __cdecl __tcf_9_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); +} + +//----- (0040E01C) -------------------------------------------------------- +void __cdecl __tcf_10_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP); +} + +//----- (0040E026) -------------------------------------------------------- +void __cdecl __tcf_11_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); +} + +//----- (0040E030) -------------------------------------------------------- +void __cdecl __tcf_12_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); +} + +//----- (0040E03A) -------------------------------------------------------- +void __cdecl __tcf_13_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); +} + +//----- (0040E044) -------------------------------------------------------- +void __cdecl __tcf_14_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); +} + +//----- (0040E04E) -------------------------------------------------------- +void __cdecl __tcf_15_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_K_V); +} + +//----- (0040E058) -------------------------------------------------------- +void __cdecl __tcf_16_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); +} + +//----- (0040E062) -------------------------------------------------------- +void __cdecl __tcf_17_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); +} + +//----- (0040E06C) -------------------------------------------------------- +void __cdecl __tcf_18_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); +} + +//----- (0040E076) -------------------------------------------------------- +void __cdecl __tcf_19_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); +} + +//----- (0040E080) -------------------------------------------------------- +void __cdecl __tcf_20_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); +} + +//----- (0040E08A) -------------------------------------------------------- +void __cdecl __tcf_21_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); +} + +//----- (0040E094) -------------------------------------------------------- +void __cdecl __tcf_22_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_IF); +} + +//----- (0040E09E) -------------------------------------------------------- +void __cdecl __tcf_23_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FOR); +} + +//----- (0040E0A8) -------------------------------------------------------- +void __cdecl __tcf_24_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); +} + +//----- (0040E0B2) -------------------------------------------------------- +void __cdecl __tcf_25_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); +} + +//----- (0040E0BC) -------------------------------------------------------- +void __cdecl __tcf_26_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); +} + +//----- (0040E0C6) -------------------------------------------------------- +void __cdecl __tcf_27_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG); +} + +//----- (0040E0D0) -------------------------------------------------------- +void __cdecl __tcf_28_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); +} + +//----- (0040E0DA) -------------------------------------------------------- +void __cdecl __tcf_29_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); +} + +//----- (0040E0E4) -------------------------------------------------------- +void __cdecl __tcf_30_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); +} + +//----- (0040E0EE) -------------------------------------------------------- +void __cdecl __tcf_31_1() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_CALL); +} + +//----- (0040E0F8) -------------------------------------------------------- +void __cdecl __tcf_32_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); +} + +//----- (0040E102) -------------------------------------------------------- +void __cdecl __tcf_33_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); +} + +//----- (0040E10C) -------------------------------------------------------- +void __cdecl __tcf_34_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); +} + +//----- (0040E116) -------------------------------------------------------- +void __cdecl __tcf_35_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); +} + +//----- (0040E120) -------------------------------------------------------- +void __cdecl __tcf_36_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); +} + +//----- (0040E12A) -------------------------------------------------------- +void __cdecl __tcf_37_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); +} + +//----- (0040E134) -------------------------------------------------------- +void __cdecl __tcf_38_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); +} + +//----- (0040E13E) -------------------------------------------------------- +int __cdecl night::sourcemap::int2vlq[abi:cxx11](int a1, int a2) +{ + int v2; // esi + int v3; // eax + int v4; // edx + + v2 = 2 * a2; + if ( a2 < 0 ) + v2 = (-2 * a2) | 1; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + do + { + v3 = v2; + v2 >>= 5; + v4 = v3 % 32; + if ( v2 > 0 ) + v4 |= 0x20u; + std::string::push_back((_DWORD *)a1, night::sourcemap::g_sVLQ[0][v4]); + } + while ( v2 > 0 ); + return a1; +} +// 515018: using guessed type char *night::sourcemap::g_sVLQ[14]; + +//----- (0040E1AF) -------------------------------------------------------- +int __cdecl night::sourcemap::gen_sourcemap_content(int *a1, _DWORD *a2, _DWORD *a3, _DWORD *a4, int a5, int a6) +{ + unsigned int i; // ebx + char *v7; // eax + _DWORD *v8; // eax + char *v9; // eax + int v10; // esi + _DWORD *v11; // ebx + _DWORD *v12; // edi + _DWORD *v13; // edi + int insert_hint_unique_pos; // eax + _DWORD *v15; // edx + _DWORD *v16; // esi + _DWORD *v17; // edi + char v18; // al + int v19; // eax + int v20; // edi + void *v22; // [esp+0h] [ebp-A8h] + void (__cdecl *v23)(void *); // [esp+4h] [ebp-A4h] + int v24; // [esp+1Ch] [ebp-8Ch] + int v25; // [esp+20h] [ebp-88h] + int v26; // [esp+24h] [ebp-84h] + int v27; // [esp+28h] [ebp-80h] + int v28; // [esp+2Ch] [ebp-7Ch] + int v29; // [esp+30h] [ebp-78h] + int v30; // [esp+30h] [ebp-78h] + int v31; // [esp+34h] [ebp-74h] + _DWORD *v32; // [esp+38h] [ebp-70h] + int v33; // [esp+38h] [ebp-70h] + unsigned int v34; // [esp+3Ch] [ebp-6Ch] + unsigned int v35; // [esp+44h] [ebp-64h] BYREF + char *v36; // [esp+48h] [ebp-60h] BYREF + int v37; // [esp+4Ch] [ebp-5Ch] + char v38; // [esp+50h] [ebp-58h] BYREF + void *v39[2]; // [esp+60h] [ebp-48h] BYREF + char v40; // [esp+68h] [ebp-40h] BYREF + void *v41[12]; // [esp+78h] [ebp-30h] BYREF + + v36 = &v38; + v37 = 0; + v38 = 0; + std::string::operator+=(&v36, "{\"version\":3,\"sources\":[\""); + WXML::Rewrite::ToStringCode((int)v41, a1); + std::string::operator+=(&v36, (int)v41); + std::string::_M_dispose(v41); + std::string::operator+=(&v36, "\"],"); + std::string::operator+=(&v36, "\"names\":["); + for ( i = 0; i < a3[5]; ++i ) + { + if ( i ) + { + v35 = i + 1; + v9 = std::map::operator[](a3, (int *)&v35); + std::operator+((int)v39, ",\"", (int)v9); + } + else + { + v35 = 1; + v7 = std::map::operator[](a3, (int *)&v35); + std::operator+((int)v39, "\"", (int)v7); + } + v8 = std::string::append(v39, "\""); + std::string::basic_string(v41, v8); + std::string::operator+=(&v36, (int)v41); + std::string::_M_dispose(v41); + std::string::_M_dispose(v39); + } + std::string::operator+=(&v36, "],"); + std::string::operator+=(&v36, "\"mappings\":\""); + v34 = 0; + v27 = 0; + v28 = 0; + v29 = 0; + v31 = 0; + while ( v34 < (a4[1] - *a4) >> 6 ) + { + v26 = *(_DWORD *)(std::vector::at(a4, v34) + 60) + a5 - 1; + v25 = *(_DWORD *)(std::vector::at(a4, v34) + 24) - 1; + v24 = *(_DWORD *)(std::vector::at(a4, v34) + 28) - 1; + v10 = std::vector::at(a4, v34); + v32 = a2 + 1; + v11 = a2 + 1; + v12 = (_DWORD *)a2[2]; + while ( v12 ) + { + if ( (unsigned __int8)std::operator<((int)(v12 + 4), v10) ) + { + v12 = (_DWORD *)v12[3]; + } + else + { + v11 = v12; + v12 = (_DWORD *)v12[2]; + } + } + if ( v32 == v11 || (unsigned __int8)std::operator<(v10, (int)(v11 + 4)) ) + { + v13 = v11; + v11 = operator new((struct type_info *)0x2C, v23); + std::string::basic_string(v11 + 4, v10); + v11[10] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + a2, + v13, + (int)(v11 + 4)); + v16 = (_DWORD *)insert_hint_unique_pos; + v17 = v15; + if ( v15 ) + { + v18 = v32 == v15 || insert_hint_unique_pos != 0; + if ( !v18 ) + v18 = std::operator<((int)(v11 + 4), (int)(v15 + 4)); + std::_Rb_tree_insert_and_rebalance(v18, v11, v17, v32); + ++a2[5]; + } + else + { + std::string::_M_dispose((void **)v11 + 4); + v22 = v11; + v11 = v16; + operator delete(v22); + } + } + v19 = v11[10]; + v39[1] = 0; + v20 = v25 - v29; + v40 = 0; + v33 = v19 - 1; + v30 = v19 - 1 - v27; + v39[0] = &v40; + night::sourcemap::int2vlq[abi:cxx11]((int)v41, v26 - v31); + std::string::operator+=(v39, (int)v41); + std::string::_M_dispose(v41); + night::sourcemap::int2vlq[abi:cxx11]((int)v41, 0); + std::string::operator+=(v39, (int)v41); + std::string::_M_dispose(v41); + night::sourcemap::int2vlq[abi:cxx11]((int)v41, v20); + std::string::operator+=(v39, (int)v41); + std::string::_M_dispose(v41); + night::sourcemap::int2vlq[abi:cxx11]((int)v41, v24 - v28); + std::string::operator+=(v39, (int)v41); + std::string::_M_dispose(v41); + night::sourcemap::int2vlq[abi:cxx11]((int)v41, v30); + std::string::operator+=(v39, (int)v41); + std::string::_M_dispose(v41); + std::string::basic_string(v41, (int)v39); + std::string::append(v41, ","); + std::string::operator+=(&v36, (int)v41); + std::string::_M_dispose(v41); + std::string::_M_dispose(v39); + ++v34; + v27 = v33; + v28 = v24; + v29 = v25; + v31 = v26; + } + v36[v37 - 1] = 34; + std::string::operator+=(&v36, "}"); + std::string::_M_assign(a6, (int)&v36); + std::string::_M_dispose((void **)&v36); + return 0; +} +// 40E403: variable 'v23' is possibly undefined +// 40E43A: variable 'v15' is possibly undefined + +//----- (0040E690) -------------------------------------------------------- +void __cdecl __tcf_1_1() +{ + std::string::_M_dispose((void **)&night::nsv_); +} + +//----- (0040E69A) -------------------------------------------------------- +void __cdecl __tcf_2_2() +{ + std::string::_M_dispose((void **)&night::nst_); +} + +//----- (0040E6A4) -------------------------------------------------------- +void __cdecl __tcf_3_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); +} + +//----- (0040E6AE) -------------------------------------------------------- +void __cdecl __tcf_4_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); +} + +//----- (0040E6B8) -------------------------------------------------------- +void __cdecl __tcf_5_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_VAR); +} + +//----- (0040E6C2) -------------------------------------------------------- +void __cdecl __tcf_6_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_STR); +} + +//----- (0040E6CC) -------------------------------------------------------- +void __cdecl __tcf_7_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_NUM); +} + +//----- (0040E6D6) -------------------------------------------------------- +void __cdecl __tcf_8_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); +} + +//----- (0040E6E0) -------------------------------------------------------- +void __cdecl __tcf_9_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_KW); +} + +//----- (0040E6EA) -------------------------------------------------------- +void __cdecl __tcf_10_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); +} + +//----- (0040E6F4) -------------------------------------------------------- +void __cdecl __tcf_11_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP); +} + +//----- (0040E6FE) -------------------------------------------------------- +void __cdecl __tcf_12_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); +} + +//----- (0040E708) -------------------------------------------------------- +void __cdecl __tcf_13_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); +} + +//----- (0040E712) -------------------------------------------------------- +void __cdecl __tcf_14_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); +} + +//----- (0040E71C) -------------------------------------------------------- +void __cdecl __tcf_15_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); +} + +//----- (0040E726) -------------------------------------------------------- +void __cdecl __tcf_16_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_K_V); +} + +//----- (0040E730) -------------------------------------------------------- +void __cdecl __tcf_17_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); +} + +//----- (0040E73A) -------------------------------------------------------- +void __cdecl __tcf_18_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); +} + +//----- (0040E744) -------------------------------------------------------- +void __cdecl __tcf_19_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); +} + +//----- (0040E74E) -------------------------------------------------------- +void __cdecl __tcf_20_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); +} + +//----- (0040E758) -------------------------------------------------------- +void __cdecl __tcf_21_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); +} + +//----- (0040E762) -------------------------------------------------------- +void __cdecl __tcf_22_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); +} + +//----- (0040E76C) -------------------------------------------------------- +void __cdecl __tcf_23_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_IF); +} + +//----- (0040E776) -------------------------------------------------------- +void __cdecl __tcf_24_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FOR); +} + +//----- (0040E780) -------------------------------------------------------- +void __cdecl __tcf_25_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); +} + +//----- (0040E78A) -------------------------------------------------------- +void __cdecl __tcf_26_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); +} + +//----- (0040E794) -------------------------------------------------------- +void __cdecl __tcf_27_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); +} + +//----- (0040E79E) -------------------------------------------------------- +void __cdecl __tcf_28_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG); +} + +//----- (0040E7A8) -------------------------------------------------------- +void __cdecl __tcf_29_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); +} + +//----- (0040E7B2) -------------------------------------------------------- +void __cdecl __tcf_30_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); +} + +//----- (0040E7BC) -------------------------------------------------------- +void __cdecl __tcf_31_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); +} + +//----- (0040E7C6) -------------------------------------------------------- +void __cdecl __tcf_32_2() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_CALL); +} + +//----- (0040E7D0) -------------------------------------------------------- +void __cdecl __tcf_33_2() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); +} + +//----- (0040E7DA) -------------------------------------------------------- +void __cdecl __tcf_34_2() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); +} + +//----- (0040E7E4) -------------------------------------------------------- +void __cdecl __tcf_35_2() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); +} + +//----- (0040E7EE) -------------------------------------------------------- +void __cdecl __tcf_36_2() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); +} + +//----- (0040E7F8) -------------------------------------------------------- +void __cdecl __tcf_37_2() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); +} + +//----- (0040E802) -------------------------------------------------------- +void __cdecl __tcf_38_2() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); +} + +//----- (0040E80C) -------------------------------------------------------- +void __cdecl __tcf_39_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); +} + +//----- (0040E816) -------------------------------------------------------- +int __cdecl night::str::path_combine(_DWORD *a1, _DWORD *a2, _DWORD *a3) +{ + int v3; // ebx + char *v5; // [esp+18h] [ebp-60h] BYREF + unsigned int v6; // [esp+1Ch] [ebp-5Ch] + char v7; // [esp+20h] [ebp-58h] BYREF + void *v8[6]; // [esp+30h] [ebp-48h] BYREF + void *v9[12]; // [esp+48h] [ebp-30h] BYREF + + v5 = &v7; + v6 = 0; + v7 = 0; + v3 = MMBizWxaAppComm::PathCombine(a1, a2, (unsigned int *)&v5); + if ( !v3 ) + { + v3 = 1; + if ( v6 > 3 ) + { + std::string::substr(v8, &v5, v6 - 4, 0xFFFFFFFF); + v3 = std::string::compare((int)v8, ".wxs"); + std::string::_M_dispose(v8); + if ( v3 ) + { + v3 = 2; + } + else + { + WXML::Rewrite::ToStringCode((int)v9, (int *)&v5); + std::string::operator=(a3, v9); + std::string::_M_dispose(v9); + } + } + } + std::string::_M_dispose((void **)&v5); + return v3; +} + +//----- (0040E8E8) -------------------------------------------------------- +int __cdecl night::str::get_token(int a1, _DWORD *a2, unsigned int a3) +{ + char v4; // al + + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + while ( a3 < a2[1] ) + { + v4 = *(_BYTE *)std::string::at(a2, a3); + if ( (unsigned __int8)((v4 & 0xDF) - 65) > 0x19u && v4 != 95 && (unsigned __int8)(v4 - 48) > 9u ) + break; + ++a3; + std::string::push_back((_DWORD *)a1, v4); + } + return a1; +} + +//----- (0040E95F) -------------------------------------------------------- +int __cdecl night::readfile(char *FileName, unsigned int *a2) +{ + void *v2; // esp + FILE *v3; // ebx + int result; // eax + char Buffer[4]; // [esp+10h] [ebp-1008h] BYREF + char v6[4092]; // [esp+14h] [ebp-1004h] BYREF + + v2 = alloca(4112); + std::string::operator=(a2, (char *)&byte_51C7C9); + v3 = fopen(FileName, "r"); + result = -1; + if ( v3 ) + { + *(_DWORD *)Buffer = 0; + memset(v6, 0, sizeof(v6)); + while ( fgets(Buffer, 4096, v3) ) + std::string::operator+=(a2, Buffer); + fclose(v3); + return 0; + } + return result; +} + +//----- (0040E9F2) -------------------------------------------------------- +int __cdecl night::writefile(char *FileName, int a2) +{ + FILE *v2; // ebx + int result; // eax + + v2 = fopen(FileName, "w+"); + result = -1; + if ( v2 ) + { + if ( fwrite(*(const void **)a2, *(_DWORD *)(a2 + 4), 1u, v2) == 1 ) + { + fclose(v2); + return 0; + } + else + { + fclose(v2); + return -1; + } + } + return result; +} + +//----- (0040EA54) -------------------------------------------------------- +void __cdecl __tcf_3_3() +{ + std::string::_M_dispose((void **)&night::nsv_); +} + +//----- (0040EA5E) -------------------------------------------------------- +void __cdecl __tcf_4_3() +{ + std::string::_M_dispose((void **)&night::nst_); +} + +//----- (0040EA68) -------------------------------------------------------- +void __cdecl __tcf_5_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SKIP); +} + +//----- (0040EA72) -------------------------------------------------------- +void __cdecl __tcf_6_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BOOL); +} + +//----- (0040EA7C) -------------------------------------------------------- +void __cdecl __tcf_7_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_VAR); +} + +//----- (0040EA86) -------------------------------------------------------- +void __cdecl __tcf_8_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_STR); +} + +//----- (0040EA90) -------------------------------------------------------- +void __cdecl __tcf_9_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_NUM); +} + +//----- (0040EA9A) -------------------------------------------------------- +void __cdecl __tcf_10_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_B_TYPE); +} + +//----- (0040EAA4) -------------------------------------------------------- +void __cdecl __tcf_11_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_KW); +} + +//----- (0040EAAE) -------------------------------------------------------- +void __cdecl __tcf_12_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PUNC); +} + +//----- (0040EAB8) -------------------------------------------------------- +void __cdecl __tcf_13_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP); +} + +//----- (0040EAC2) -------------------------------------------------------- +void __cdecl __tcf_14_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OP_SELF); +} + +//----- (0040EACC) -------------------------------------------------------- +void __cdecl __tcf_15_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BINARY); +} + +//----- (0040EAD6) -------------------------------------------------------- +void __cdecl __tcf_16_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ASSIGN); +} + +//----- (0040EAE0) -------------------------------------------------------- +void __cdecl __tcf_17_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_TERNARY); +} + +//----- (0040EAEA) -------------------------------------------------------- +void __cdecl __tcf_18_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_K_V); +} + +//----- (0040EAF4) -------------------------------------------------------- +void __cdecl __tcf_19_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_DOT); +} + +//----- (0040EAFE) -------------------------------------------------------- +void __cdecl __tcf_20_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_PROPERTY); +} + +//----- (0040EB08) -------------------------------------------------------- +void __cdecl __tcf_21_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_SELF_OP); +} + +//----- (0040EB12) -------------------------------------------------------- +void __cdecl __tcf_22_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_OBJ_BLOCK); +} + +//----- (0040EB1C) -------------------------------------------------------- +void __cdecl __tcf_23_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_ARRAY); +} + +//----- (0040EB26) -------------------------------------------------------- +void __cdecl __tcf_24_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_BRACKET); +} + +//----- (0040EB30) -------------------------------------------------------- +void __cdecl __tcf_25_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_IF); +} + +//----- (0040EB3A) -------------------------------------------------------- +void __cdecl __tcf_26_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FOR); +} + +//----- (0040EB44) -------------------------------------------------------- +void __cdecl __tcf_27_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_WHILE); +} + +//----- (0040EB4E) -------------------------------------------------------- +void __cdecl __tcf_28_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_DO_WHILE); +} + +//----- (0040EB58) -------------------------------------------------------- +void __cdecl __tcf_29_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_SWITCH); +} + +//----- (0040EB62) -------------------------------------------------------- +void __cdecl __tcf_30_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG); +} + +//----- (0040EB6C) -------------------------------------------------------- +void __cdecl __tcf_31_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM); +} + +//----- (0040EB76) -------------------------------------------------------- +void __cdecl __tcf_32_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE); +} + +//----- (0040EB80) -------------------------------------------------------- +void __cdecl __tcf_33_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_FUNC); +} + +//----- (0040EB8A) -------------------------------------------------------- +void __cdecl __tcf_34_3() +{ + std::string::_M_dispose((void **)&night::NS_TYPE_CALL); +} + +//----- (0040EB94) -------------------------------------------------------- +void __cdecl __tcf_35_3() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_OP); +} + +//----- (0040EB9E) -------------------------------------------------------- +void __cdecl __tcf_36_3() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_OP_SELF); +} + +//----- (0040EBA8) -------------------------------------------------------- +void __cdecl __tcf_37_3() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_ALL_OP); +} + +//----- (0040EBB2) -------------------------------------------------------- +void __cdecl __tcf_38_3() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_PUNC); +} + +//----- (0040EBBC) -------------------------------------------------------- +void __cdecl __tcf_39_2() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_SPACE); +} + +//----- (0040EBC6) -------------------------------------------------------- +void __cdecl __tcf_40_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_KW); +} + +//----- (0040EBD0) -------------------------------------------------------- +void __cdecl __tcf_41_1() +{ + std::string::_M_dispose((void **)&night::NS_BUILTIN_TYPE); +} + +//----- (0040EBDF) -------------------------------------------------------- +void __cdecl __tcf_2_3() +{ + std::ios_base::Init::~Init(); +} + +//----- (0040EBEA) -------------------------------------------------------- +int __fastcall std::_Rb_tree_iterator>>::operator++( + int *a1) +{ + int v1; // esi + + v1 = *a1; + *a1 = std::_Rb_tree_increment(*a1); + return v1; +} + +//----- (0040EC0A) -------------------------------------------------------- +void __usercall std::_Vector_base::_M_deallocate(void *a1@) +{ + if ( a1 ) + operator delete(a1); +} +// 40EC0A: could not find valid save-restore pair for ebp + +//----- (0040EC20) -------------------------------------------------------- +void __fastcall WXML::NameAllocator::~NameAllocator(int a1) +{ + std::string::_M_dispose((void **)(a1 + 28)); + std::string::_M_dispose((void **)(a1 + 4)); +} + +//----- (0040EC3A) -------------------------------------------------------- +void *__usercall __gnu_cxx::new_allocator::allocate@(unsigned int a1@) +{ + void (__cdecl *v2)(void *); // [esp+4h] [ebp-14h] + + if ( a1 > 0x5555555 ) + std::__throw_bad_alloc(); + return operator new((struct type_info *)(24 * a1), v2); +} +// 40EC52: variable 'v2' is possibly undefined + +//----- (0040EC59) -------------------------------------------------------- +int snprintf_constprop_0_0(char *Buffer, int a2, int a3, ...) +{ + va_list va; // [esp+2Ch] [ebp+14h] BYREF + + va_start(va, a3); + return vsnprintf_2(Buffer, 0x80u, "np_%d", va); +} + +//----- (0040EC84) -------------------------------------------------------- +BOOL __fastcall std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>( + _DWORD *a1) +{ + _DWORD *v2; // eax + _DWORD *v3; // edi + _DWORD *v4; // ebx + BOOL result; // eax + void (__cdecl *v6)(void *); // [esp+4h] [ebp-24h] + + *a1 = 0; + v2 = operator new((struct type_info *)0xDC, v6); + v2[1] = 1; + v3 = v2 + 3; + v4 = v2; + v2[2] = 1; + *v2 = &off_538F14; + result = std::basic_stringstream,std::allocator>::basic_stringstream((int)(v2 + 3)); + a1[1] = v4; + *a1 = v3; + return result; +} +// 40EC9C: variable 'v6' is possibly undefined +// 538F14: using guessed type int (*off_538F14)(); + +//----- (0040ECE0) -------------------------------------------------------- +int __cdecl WXML::Compiler::GetVersionInfo(int a1, int *a2) +{ + std::ostream::sentry *v2; // eax + std::ostream::sentry *v3; // eax + std::ostream::sentry *v4; // eax + std::ostream::sentry *v5; // eax + std::ostream::sentry *v6; // eax + std::ostream::sentry *v7; // eax + char v9[8]; // [esp+10h] [ebp-D8h] BYREF + char v10[4]; // [esp+18h] [ebp-D0h] BYREF + int v11[51]; // [esp+1Ch] [ebp-CCh] BYREF + + std::basic_stringstream,std::allocator>::basic_stringstream((int)v9); + v2 = std::operator<<>((std::ostream::sentry *)v10, "/*"); + v3 = std::operator<<>(v2, "v0.5vv_20211229_syb_scopedata"); + std::operator<<>(v3, "*/"); + v4 = std::operator<<((std::ostream::sentry *)v10, a2); + v5 = std::operator<<>(v4, ".__wcc_version__='"); + v6 = std::operator<<>(v5, "v0.5vv_20211229_syb_scopedata"); + std::operator<<>(v6, "';"); + v7 = std::operator<<((std::ostream::sentry *)v10, a2); + std::operator<<>( + v7, + ".__wcc_version_info__={\"customComponents\":true,\"fixZeroRpx\":true,\"propValueDeepCopy\":false};"); + std::stringbuf::str(a1, v11); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v9); + return a1; +} +// 40ECE0: using guessed type char var_D0[4]; +// 40ECE0: using guessed type int var_CC[51]; + +//----- (0040EDC4) -------------------------------------------------------- +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + int result; // eax + + v1 = *a1; + if ( v1 ) + return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); + return result; +} + +//----- (0040EDD0) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Token::~Token(int a1) +{ + std::string::_M_dispose((void **)(a1 + 88)); + std::string::_M_dispose((void **)(a1 + 60)); + std::string::_M_dispose((void **)(a1 + 32)); + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); +} + +//----- (0040EDF8) -------------------------------------------------------- +void __fastcall std::vector::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + int v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 112 ) + { + v4 = (int)i; + WXML::DOMLib::Token::~Token(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (0040EE2E) -------------------------------------------------------- +_DWORD *__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(_DWORD *this, int a2) +{ + _DWORD *result; // eax + volatile signed __int32 *v3; // ecx + _DWORD *v4; // [esp+Ch] [ebp-Ch] + + result = this; + if ( *this != a2 ) + { + if ( a2 ) + { + if ( _CRT_MT ) + _InterlockedIncrement((volatile signed __int32 *)(a2 + 4)); + else + ++*(_DWORD *)(a2 + 4); + } + v3 = (volatile signed __int32 *)*this; + if ( *result ) + { + v4 = result; + std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v3); + result = v4; + } + *result = a2; + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0040EE70) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (0040EE84) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (0040EE98) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (0040EEAC) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::less,std::allocator>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (0040EEC0) -------------------------------------------------------- +int __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_lower_bound@( + int a1@, + int a2@, + int a3@) +{ + while ( a1 ) + { + if ( (unsigned __int8)std::operator<(a1 + 16, a3) ) + { + a1 = *(_DWORD *)(a1 + 12); + } + else + { + a2 = a1; + a1 = *(_DWORD *)(a1 + 8); + } + } + return a2; +} + +//----- (0040EEFC) -------------------------------------------------------- +int __usercall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound@( + int a1@, + int a2@, + int a3@) +{ + while ( a1 ) + { + if ( (unsigned __int8)std::operator<(a1 + 16, a3) ) + { + a1 = *(_DWORD *)(a1 + 12); + } + else + { + a2 = a1; + a1 = *(_DWORD *)(a1 + 8); + } + } + return a2; +} + +//----- (0040EF38) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2) +{ + int v3; // [esp+8h] [ebp-10h] + + *this = this + 2; + LOBYTE(v3) = 0; + return std::string::_M_construct(this, a2, (size_t)&a2[strlen((const char *)a2)], v3); +} +// 40EF67: variable 'v3' is possibly undefined + +//----- (0040EF78) -------------------------------------------------------- +void **__cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](void **a1) +{ + std::string::basic_string(a1, aIfThisThisGUnd); + return a1; +} + +//----- (0040EF95) -------------------------------------------------------- +void **__cdecl WXML::Compiler::GetFuncId(void **a1, _DWORD *a2, int a3) +{ + int v3; // ebx + char *v4; // eax + void **v5; // edi + _DWORD *v6; // ebx + int insert_unique_pos; // eax + _DWORD *v8; // edx + _DWORD *v9; // eax + void (__cdecl *v11)(void *); // [esp+4h] [ebp-A4h] + char Buffer[4]; // [esp+10h] [ebp-98h] BYREF + int v13[31]; // [esp+14h] [ebp-94h] BYREF + + if ( !std::map::count(a2, a3) ) + { + v3 = a2[5]; + std::string::basic_string(Buffer, a3); + v13[5] = v3; + v4 = (char *)operator new((struct type_info *)0x2C, v11); + v5 = (void **)(v4 + 16); + v6 = v4; + std::string::basic_string((_DWORD *)v4 + 4, Buffer); + v6[10] = v13[5]; + insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + a2, + (int)v5); + if ( v8 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + a2, + insert_unique_pos, + v8, + v6); + } + else + { + std::string::_M_dispose(v5); + operator delete(v6); + } + std::string::_M_dispose((void **)Buffer); + } + *(_DWORD *)Buffer = 0; + memset(v13, 0, sizeof(v13)); + v9 = std::map::operator[](a2, a3); + snprintf_constprop_0_0(Buffer, 128, (int)"np_%d", *v9); + std::string::basic_string(a1, (unsigned __int8 *)Buffer); + return a1; +} +// 40EFDC: variable 'v11' is possibly undefined +// 40F005: variable 'v8' is possibly undefined + +//----- (0040F0B0) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1, int a2) +{ + std::_Destroy_aux::__destroy(a2, *a1, a1[1]); + std::_Vector_base::_M_deallocate(*a1); +} + +//----- (0040F0D6) -------------------------------------------------------- +void __thiscall std::vector::_M_move_assign(void *this, int *a2) +{ + void **v2; // ebx + void **v3; // edx + int v4; // edi + int v5; // edi + void **v6[9]; // [esp+4h] [ebp-24h] BYREF + + v2 = (void **)*((_DWORD *)this + 1); + v3 = (void **)*((_DWORD *)this + 2); + v4 = *a2; + v6[0] = *(void ***)this; + v6[1] = v2; + *(_DWORD *)this = v4; + v5 = a2[1]; + v6[2] = v3; + *((_DWORD *)this + 1) = v5; + *((_DWORD *)this + 2) = a2[2]; + *a2 = 0; + a2[1] = 0; + a2[2] = 0; + std::vector::~vector(v6, (int)v3); +} + +//----- (0040F12A) -------------------------------------------------------- +void __fastcall std::deque::~deque(int a1) +{ + void **v2; // eax + void **v3; // edi + void ***i; // esi + void **v5; // edx + int v6; // edx + void **v7; // esi + unsigned int v8; // edi + void *v9; // eax + void **v10; // [esp+1Ch] [ebp-6Ch] + void **v11; // [esp+20h] [ebp-68h] + void **v12; // [esp+24h] [ebp-64h] + int v13; // [esp+28h] [ebp-60h] + unsigned int v14; // [esp+2Ch] [ebp-5Ch] + int v15[4]; // [esp+30h] [ebp-58h] BYREF + int v16[4]; // [esp+40h] [ebp-48h] BYREF + char v17[16]; // [esp+50h] [ebp-38h] BYREF + char v18[16]; // [esp+60h] [ebp-28h] BYREF + + qmemcpy(v18, (const void *)(a1 + 24), sizeof(v18)); + qmemcpy(v17, (const void *)(a1 + 8), sizeof(v17)); + qmemcpy(v16, v17, sizeof(v16)); + qmemcpy(v15, v18, sizeof(v15)); + v2 = (void **)v16[0]; + v3 = (void **)v15[0]; + v11 = (void **)v16[2]; + v13 = v16[3]; + v12 = (void **)v15[1]; + v14 = v15[3]; + for ( i = (void ***)(v16[3] + 4); (unsigned int)i < v14; ++i ) + { + v5 = *i; + v10 = v2; + std::_Destroy_aux::__destroy((int)v5, v5, v5 + 126); + v2 = v10; + } + if ( v14 == v13 ) + { + std::_Destroy_aux::__destroy(v13, v2, v3); + } + else + { + std::_Destroy_aux::__destroy(v13, v2, v11); + std::_Destroy_aux::__destroy(v6, v12, v3); + } + if ( *(_DWORD *)a1 ) + { + v7 = *(void ***)(a1 + 20); + v8 = *(_DWORD *)(a1 + 36) + 4; + while ( v8 > (unsigned int)v7 ) + { + v9 = *v7++; + operator delete(v9); + } + operator delete(*(void **)a1); + } +} +// 40F1CF: variable 'v6' is possibly undefined + +//----- (0040F210) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Parser::~Parser(int a1) +{ + const void *v2; // esi + int v3; // eax + int v4; // edi + int v5; // edx + int *i; // esi + int v7; // edx + int v8; // edx + void **v9; // esi + unsigned int v10; // edi + void *v11; // eax + int v13; // [esp+1Ch] [ebp-6Ch] + int v14; // [esp+20h] [ebp-68h] + int v15; // [esp+24h] [ebp-64h] + int v16; // [esp+28h] [ebp-60h] + unsigned int v17; // [esp+2Ch] [ebp-5Ch] + int v18[4]; // [esp+30h] [ebp-58h] BYREF + int v19[4]; // [esp+40h] [ebp-48h] BYREF + char v20[16]; // [esp+50h] [ebp-38h] BYREF + char v21[16]; // [esp+60h] [ebp-28h] BYREF + + v2 = (const void *)(a1 + 72); + std::string::_M_dispose((void **)(a1 + 328)); + WXML::DOMLib::Token::~Token(a1 + 216); + WXML::DOMLib::Token::~Token(a1 + 104); + std::vector::~vector((void **)(a1 + 88)); + qmemcpy(v20, v2, sizeof(v20)); + qmemcpy(v21, (const void *)(a1 + 56), sizeof(v21)); + qmemcpy(v19, v21, sizeof(v19)); + qmemcpy(v18, v20, sizeof(v18)); + v3 = v19[0]; + v4 = v18[0]; + v14 = v19[2]; + v16 = v19[3]; + v15 = v18[1]; + v17 = v18[3]; + v5 = v19[3]; + for ( i = (int *)(v19[3] + 4); (unsigned int)i < v17; ++i ) + { + v7 = *i; + v13 = v3; + std::_Destroy_aux::__destroy *>(v7, v7, v7 + 512); + v3 = v13; + } + if ( v17 == v16 ) + { + std::_Destroy_aux::__destroy *>(v5, v3, v4); + } + else + { + std::_Destroy_aux::__destroy *>(v14, v3, v14); + std::_Destroy_aux::__destroy *>(v8, v15, v4); + } + if ( *(_DWORD *)(a1 + 48) ) + { + v9 = *(void ***)(a1 + 68); + v10 = *(_DWORD *)(a1 + 84) + 4; + while ( v10 > (unsigned int)v9 ) + { + v11 = *v9++; + operator delete(v11); + } + operator delete(*(void **)(a1 + 48)); + } + std::deque::~deque(a1 + 8); + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); +} +// 40F2DB: variable 'v8' is possibly undefined +// 40F2E4: variable 'v5' is possibly undefined + +//----- (0040F32D) -------------------------------------------------------- +unsigned int __cdecl WXML::Compiler::ParseWxmlSource(int a1, int *a2, unsigned int *a3, _DWORD *a4, _DWORD *a5) +{ + unsigned int v5; // esi + int v7; // [esp+18h] [ebp-180h] BYREF + volatile signed __int32 *v8; // [esp+1Ch] [ebp-17Ch] BYREF + char v9[376]; // [esp+20h] [ebp-178h] BYREF + + WXML::DOMLib::Parser::Parser((int)v9); + v5 = WXML::DOMLib::Parser::Parse((WXML::DOMLib::Parser *)v9, *a2, a3, a1, a4); + if ( !v5 ) + { + WXML::DOMLib::Parser::GetParsed(&v7, (WXML::DOMLib::Parser *)v9); + std::__shared_ptr::operator=(a5, &v7); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v8); + } + WXML::DOMLib::Parser::~Parser((int)v9); + return v5; +} + +//----- (0040F3BF) -------------------------------------------------------- +unsigned int __cdecl WXML::Compiler::DealWxsTag( + int a1, + int **a2, + _DWORD *a3, + int a4, + int *a5, + _DWORD *a6, + unsigned int *a7) +{ + char *v7; // ebx + int *v8; // ecx + _BYTE *v9; // ebx + int *v10; // eax + unsigned int v11; // ecx + char *v12; // ebx + unsigned int v13; // eax + _DWORD *v14; // eax + int v15; // ebx + int i; // ebx + int v17; // esi + char v18; // bl + int j; // eax + int v20; // edx + unsigned int v21; // edx + char *v22; // eax + int v23; // eax + std::ostream::sentry *v24; // eax + std::ostream::sentry *v25; // eax + std::ostream::sentry *v26; // eax + std::ostream::sentry *v27; // eax + _DWORD *v28; // esi + BOOL v29; // esi + char *v30; // eax + int v31; // eax + _BYTE *v32; // eax + bool v33; // dl + std::ostream::sentry *v34; // eax + std::ostream::sentry *v35; // eax + std::ostream::sentry *v36; // eax + std::ostream::sentry *v37; // eax + int *v38; // ebx + std::ostream::sentry *v39; // eax + std::ostream::sentry *v40; // eax + std::ostream::sentry *v41; // eax + std::ostream::sentry *v42; // eax + unsigned int v44; // [esp+18h] [ebp-3A0h] + _DWORD *v45; // [esp+18h] [ebp-3A0h] + BOOL v46; // [esp+18h] [ebp-3A0h] + char v47; // [esp+18h] [ebp-3A0h] + unsigned int v48; // [esp+1Ch] [ebp-39Ch] + int v49; // [esp+24h] [ebp-394h] BYREF + volatile signed __int32 *v50; // [esp+28h] [ebp-390h] BYREF + void *v51[3]; // [esp+2Ch] [ebp-38Ch] BYREF + void *v52[6]; // [esp+38h] [ebp-380h] BYREF + void *v53[6]; // [esp+50h] [ebp-368h] BYREF + void *v54[2]; // [esp+68h] [ebp-350h] BYREF + char v55; // [esp+70h] [ebp-348h] BYREF + char v56; // [esp+80h] [ebp-338h] BYREF + char v57; // [esp+98h] [ebp-320h] BYREF + void *v58[6]; // [esp+B0h] [ebp-308h] BYREF + void *v59[6]; // [esp+C8h] [ebp-2F0h] BYREF + void *v60[6]; // [esp+E0h] [ebp-2D8h] BYREF + void *v61[6]; // [esp+F8h] [ebp-2C0h] BYREF + void *v62[6]; // [esp+110h] [ebp-2A8h] BYREF + void *v63[6]; // [esp+128h] [ebp-290h] BYREF + char v64[24]; // [esp+140h] [ebp-278h] BYREF + int v65[6]; // [esp+158h] [ebp-260h] BYREF + void *v66[2]; // [esp+170h] [ebp-248h] BYREF + char v67[4]; // [esp+178h] [ebp-240h] BYREF + _DWORD v68[49]; // [esp+17Ch] [ebp-23Ch] BYREF + void *v69[94]; // [esp+240h] [ebp-178h] BYREF + + v7 = std::string::find(*a2, 62, (unsigned int)a2[4]); + v44 = (unsigned int)(v7 + 1); + std::string::basic_string(v52, ""); + v54[0] = &v55; + v54[1] = 0; + v8 = *a2; + v55 = 0; + v9 = (_BYTE *)std::string::at(v8, (unsigned int)(v7 - 1)); + v10 = a2[4]; + v11 = (unsigned int)(v10 + 1); + if ( *v9 == 47 ) + { + v12 = &v56; + v13 = v44 - (_DWORD)v10 - 6; + } + else + { + v12 = &v57; + v13 = v44 - (_DWORD)v10 - 5; + } + std::string::substr((void **)v12, *a2, v11, v13); + std::string::operator=(v54, v12); + std::string::_M_dispose((void **)v12); + std::string::basic_string(v69, (int)v52); + std::string::append(v69, (int)v54); + v14 = std::string::append(v69, (int)v53); + v15 = 1; + std::string::basic_string(v58, v14); + std::string::_M_dispose(v69); + while ( (int)a2[2] > v15 ) + { + std::operator+((int)v59, "\n", (int)v58); + ++v15; + std::string::operator=(v58, v59); + std::string::_M_dispose(v59); + } + for ( i = 1; (int)a2[3] > i; ++i ) + { + std::operator+((int)v60, " ", (int)v58); + std::string::operator=(v58, v60); + std::string::_M_dispose(v60); + } + WXML::DOMLib::Parser::Parser((int)v69); + memset(v51, 0, sizeof(v51)); + v48 = WXML::DOMLib::Parser::Parse((WXML::DOMLib::Parser *)v69, (int)v58[0], a7, a1, v51); + if ( !v48 ) + { + WXML::DOMLib::Parser::GetParsed(&v49, (WXML::DOMLib::Parser *)v69); + *a6 = a2[2]; + if ( (int)((int)a2[5] + (_DWORD)a2[4] - v44) <= 0 ) + std::string::basic_string(v61, (unsigned __int8 *)&byte_523BD0); + else + std::string::substr(v61, *a2, v44, (unsigned int)a2[5] + (_DWORD)a2[4] - v44); + v17 = 8388627; + std::string::operator=(a5, v61); + v18 = 1; + std::string::_M_dispose(v61); + for ( j = 0; j != a5[1]; ++j ) + { + v20 = *a5; + LOBYTE(v20) = *(_BYTE *)(*a5 + j); + v21 = v20 - 9; + if ( (unsigned __int8)v21 > 0x17u || !_bittest(&v17, v21) ) + v18 = 0; + } + v45 = (_DWORD *)(**(_DWORD **)(v49 + 72) + 48); + std::string::basic_string(v62, (unsigned __int8 *)&off_523BD1); + v46 = std::map::count(v45, (int)v62); + std::string::_M_dispose(v62); + if ( !v46 + || (std::string::basic_string(v66, (unsigned __int8 *)&off_523BD1), + v22 = std::map::operator[]((_DWORD *)(**(_DWORD **)(v49 + 72) + 48), v66), + v23 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v22), + std::string::_M_assign(a4, v23), + std::string::_M_dispose(v66), + v18) ) + { + v28 = (_DWORD *)(**(_DWORD **)(v49 + 72) + 48); + std::string::basic_string(v66, "module"); + v29 = std::map::count(v28, (int)v66); + std::string::_M_dispose(v66); + if ( v29 ) + { + std::string::basic_string(v66, "module"); + v30 = std::map::operator[]((_DWORD *)(**(_DWORD **)(v49 + 72) + 48), v66); + v31 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v30); + std::string::_M_assign((int)a3, v31); + std::string::_M_dispose(v66); + v32 = (_BYTE *)*a3; + v47 = (unsigned __int8)(*(_BYTE *)*a3 - 48) > 9u; + while ( (_BYTE *)(*a3 + a3[1]) != v32 ) + { + v33 = (unsigned __int8)(*v32 - 97) <= 0x19u || (unsigned __int8)(*v32 - 48) <= 9u; + if ( !v33 ) + v33 = *v32 == 95 || (unsigned __int8)(*v32 - 65) <= 0x19u; + v47 &= v33; + ++v32; + } + if ( v47 ) + goto LABEL_34; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v66); + std::operator+(v65, a1, ":"); + std::operator<<((std::ostream::sentry *)v67, v65); + v34 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); + std::operator<<>(v34, ":"); + v35 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); + v36 = std::operator<<>(v35, ": "); + v37 = std::operator<<(v36, (int *)a7); + std::operator<<>(v37, "invalid module name, [0-9a-zA-Z_] allowed only"); + v38 = (int *)v64; + std::string::_M_dispose((void **)v65); + std::stringbuf::str((int)v64, v68); + } + else + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)v66); + v38 = v65; + std::operator+(v65, a1, ":"); + std::operator<<((std::ostream::sentry *)v67, v65); + v39 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); + std::operator<<>(v39, ":"); + v40 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); + v41 = std::operator<<>(v40, ": "); + v42 = std::operator<<(v41, (int *)a7); + std::operator<<>(v42, "module expected in wxs tag"); + std::string::_M_dispose((void **)v65); + std::stringbuf::str((int)v65, v68); + } + std::string::operator=(a7, v38); + std::string::_M_dispose((void **)v38); + } + else + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)v66); + std::operator+(v65, a1, ":"); + std::operator<<((std::ostream::sentry *)v67, v65); + v24 = (std::ostream::sentry *)std::ostream::operator<<(a2[2]); + std::operator<<>(v24, ":"); + v25 = (std::ostream::sentry *)std::ostream::operator<<(a2[3]); + v26 = std::operator<<>(v25, ": "); + v27 = std::operator<<(v26, (int *)a7); + std::operator<<>(v27, "wxs tag with src don't need any content"); + std::string::_M_dispose((void **)v65); + std::stringbuf::str((int)v63, v68); + std::string::operator=(a7, v63); + std::string::_M_dispose(v63); + } + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v66); + v48 = 1; +LABEL_34: + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v50); + } + std::vector::~vector(v51); + WXML::DOMLib::Parser::~Parser((int)v69); + std::string::_M_dispose(v58); + std::string::_M_dispose(v54); + std::string::_M_dispose(v53); + std::string::_M_dispose(v52); + return v48; +} +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 523BD1: using guessed type void *off_523BD1; +// 40F3BF: using guessed type char var_240[4]; +// 40F3BF: using guessed type _DWORD var_23C[49]; + +//----- (0040FB75) -------------------------------------------------------- +int __cdecl WXML::Compiler::RenderDefine( + unsigned int **a1, + int *a2, + _DWORD *a3, + int a4, + int a5, + int a6, + unsigned __int8 a7, + int a8, + char a9, + int *a10, + int *a11, + int *a12, + int a13, + int *a14, + int *a15, + int *a16, + int a17, + int a18, + int a19, + int *a20) +{ + unsigned int *v20; // ebx + bool v21; // dl + int result; // eax + char *v23; // eax + int v24; // eax + _DWORD *v25; // eax + unsigned int i; // ebx + unsigned int v27; // ecx + unsigned int v28; // eax + unsigned int *v29; // [esp+54h] [ebp-94h] + unsigned int *v30; // [esp+54h] [ebp-94h] + int v31; // [esp+5Ch] [ebp-8Ch] + void *v32[6]; // [esp+6Ch] [ebp-7Ch] BYREF + void *v33[6]; // [esp+84h] [ebp-64h] BYREF + void *v34[19]; // [esp+9Ch] [ebp-4Ch] BYREF + + if ( std::operator==((int)*a1, "template") ) + { + v20 = *a1; + std::string::basic_string(v34, "name"); + v29 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + v20 + 12, + (int)v34); + std::string::_M_dispose(v34); + if ( v29 != v20 + 13 ) + std::string::operator=(*a1, "wx-define"); + } + v21 = std::operator==((int)*a1, "wx-define"); + result = 0; + if ( v21 ) + { + WXML::NameAllocator::NameAllocator(v34, a17, a18); + std::string::basic_string(v33, "name"); + v23 = std::map::operator[](*a1 + 12, v33); + v24 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v23); + std::string::basic_string(v32, v24); + std::string::_M_dispose(v33); + v25 = std::map::operator[](a3, (int)v32); + std::string::_M_assign((int)v25, (int)a2); + v30 = *a1; + std::string::basic_string(v33, "r"); + v31 = WXML::DOMLib::WXMLDom::RenderMeAsFunction( + v30, + a2, + a14, + a4, + (int *)v32, + a5, + (int *)v34, + a10, + a11, + a12, + (int *)v33, + a15, + a9, + a16, + 1, + a7, + a8, + a20); + std::string::_M_dispose(v33); + std::string::_M_dispose(v32); + WXML::NameAllocator::~NameAllocator((int)v34); + result = v31; + } + for ( i = 0; ; ++i ) + { + v27 = (*a1)[18]; + if ( (int)((*a1)[19] - v27) >> 3 <= i || result ) + break; + v28 = v27 + 8 * i; + result = WXML::Compiler::RenderDefine( + v28, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10, + a11, + a12, + a13, + a14, + a15, + a16, + a17, + a18, + a19, + a20); + } + return result; +} + +//----- (0040FE68) -------------------------------------------------------- +int __cdecl WXML::Compiler::ProcessWxsInline( + int *a1, + int *a2, + char a3, + int a4, + int *a5, + _DWORD *a6, + unsigned int *a7, + _DWORD *a8, + _DWORD *a9, + int a10, + char a11) +{ + std::ostream::sentry *v11; // edi + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + int v14; // eax + int v15; // ebx + std::ostream::sentry *v16; // eax + std::ostream::sentry *v17; // esi + std::ostream::sentry *v18; // eax + std::ostream::sentry *v19; // eax + std::ostream::sentry *v20; // esi + std::ostream::sentry *v21; // eax + std::ostream::sentry *v22; // eax + std::ostream::sentry *v23; // eax + std::ostream::sentry *v24; // eax + std::ostream::sentry *v25; // eax + std::ostream::sentry *v26; // eax + std::ostream::sentry *v27; // eax + std::ostream::sentry *v28; // edi + std::ostream::sentry *v29; // eax + std::ostream::sentry *v30; // eax + std::ostream::sentry *v31; // eax + std::ostream::sentry *v32; // esi + std::ostream::sentry *v33; // eax + std::ostream::sentry *v34; // edi + std::ostream::sentry *v35; // eax + std::ostream::sentry *v36; // eax + void **v37; // ecx + _DWORD *v38; // eax + _DWORD *v39; // eax + std::ostream::sentry *v40; // edi + _DWORD *v41; // eax + _DWORD *v42; // eax + std::ostream::sentry *v43; // eax + std::ostream::sentry *v44; // eax + std::ostream::sentry *v45; // eax + _DWORD *v46; // eax + std::ostream::sentry *v48; // [esp+24h] [ebp-2A4h] + unsigned int i; // [esp+28h] [ebp-2A0h] + int v50; // [esp+34h] [ebp-294h] BYREF + int v51[2]; // [esp+38h] [ebp-290h] BYREF + char v52; // [esp+40h] [ebp-288h] BYREF + void *v53[2]; // [esp+50h] [ebp-278h] BYREF + char v54; // [esp+58h] [ebp-270h] BYREF + int v55; // [esp+68h] [ebp-260h] BYREF + int v56; // [esp+6Ch] [ebp-25Ch] + char v57; // [esp+70h] [ebp-258h] BYREF + void *v58[2]; // [esp+80h] [ebp-248h] BYREF + char v59; // [esp+88h] [ebp-240h] BYREF + void *v60[2]; // [esp+98h] [ebp-230h] BYREF + char v61; // [esp+A0h] [ebp-228h] BYREF + void *v62[6]; // [esp+B0h] [ebp-218h] BYREF + void *v63[6]; // [esp+C8h] [ebp-200h] BYREF + void *v64[6]; // [esp+E0h] [ebp-1E8h] BYREF + int v65[6]; // [esp+F8h] [ebp-1D0h] BYREF + char v66[8]; // [esp+110h] [ebp-1B8h] BYREF + char v67[4]; // [esp+118h] [ebp-1B0h] BYREF + int v68[49]; // [esp+11Ch] [ebp-1ACh] BYREF + int v69[2]; // [esp+1E0h] [ebp-E8h] BYREF + char v70[4]; // [esp+1E8h] [ebp-E0h] BYREF + int v71[55]; // [esp+1ECh] [ebp-DCh] BYREF + + v51[1] = 0; + v52 = 0; + v51[0] = (int)&v52; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v66); + if ( *a2 != a2[1] ) + { + v11 = std::operator<<>((std::ostream::sentry *)v67, "f_['"); + WXML::Rewrite::ToStringCode((int)v69, a1); + v12 = std::operator<<(v11, v69); + v13 = std::operator<<>(v12, "']={};"); + std::operator<<>(v13, a3); + std::string::_M_dispose((void **)v69); + } + for ( i = 0; ; ++i ) + { + v14 = *a2; + if ( -1227133513 * ((a2[1] - *a2) >> 4) <= i ) + break; + v53[1] = 0; + v58[0] = &v59; + v60[0] = &v61; + v53[0] = &v54; + v55 = (int)&v57; + v54 = 0; + v56 = 0; + v57 = 0; + v58[1] = 0; + v59 = 0; + v60[1] = 0; + v61 = 0; + v15 = WXML::Compiler::DealWxsTag((int)a1, (int **)(112 * i + v14), v53, (int)&v55, (int *)v58, &v50, a7); + if ( v15 ) + goto LABEL_18; + v16 = std::operator<<((std::ostream::sentry *)v67, a5); + v17 = std::operator<<>(v16, "['"); + WXML::Rewrite::ToStringCode((int)v65, a1); + v18 = std::operator<<(v17, v65); + v48 = std::operator<<>(v18, "']['"); + WXML::Rewrite::ToStringCode((int)v69, (int *)v53); + v19 = std::operator<<(v48, v69); + std::operator<<>(v19, "'] ="); + std::string::_M_dispose((void **)v69); + std::string::_M_dispose((void **)v65); + if ( v56 ) + { + MMBizWxaAppComm::PathCombine(a1, &v55, (unsigned int *)v60); + if ( *(_BYTE *)v60[0] == 47 ) + { + std::operator+((int)v64, 46, (int)v60); + std::string::operator=(v60, v64); + std::string::_M_dispose(v64); + } + if ( a6 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a6, + (int)v60) + && (std::operator==(a4, "$gwx") || a11) ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)v69); + v21 = std::operator<<((std::ostream::sentry *)v70, a1); + std::operator<<>(v21, ":"); + v22 = (std::ostream::sentry *)std::ostream::operator<<(v50); + std::operator<<>(v22, ":"); + v23 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*a2 + 112 * i + 12)); + v24 = std::operator<<>(v23, ":"); + v25 = std::operator<<(v24, &v55); + v26 = std::operator<<>(v25, " not found from "); + std::operator<<(v26, a1); + std::stringbuf::str((int)v65, v71); + v15 = 1; + std::string::operator=(a7, v65); + std::string::_M_dispose((void **)v65); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v69); +LABEL_18: + std::string::_M_dispose(v60); + std::string::_M_dispose(v58); + std::string::_M_dispose((void **)&v55); + std::string::_M_dispose(v53); + goto LABEL_22; + } + v20 = std::operator<<>((std::ostream::sentry *)v67, "f_['"); + WXML::Rewrite::ToStringCode((int)v69, (int *)v60); + v27 = std::operator<<(v20, v69); + std::operator<<>(v27, "'] || "); + std::string::_M_dispose((void **)v69); + v28 = std::operator<<>((std::ostream::sentry *)v67, "nv_require(\""); + std::operator+((int)v65, "p_", (int)v60); + WXML::Rewrite::ToStringCode((int)v69, v65); + v29 = std::operator<<(v28, v69); + v30 = std::operator<<>(v29, "\");"); + std::operator<<>(v30, a3); + std::string::_M_dispose((void **)v69); + std::string::_M_dispose((void **)v65); + v31 = std::operator<<((std::ostream::sentry *)v67, a5); + v32 = std::operator<<>(v31, "['"); + WXML::Rewrite::ToStringCode((int)v65, a1); + v33 = std::operator<<(v32, v65); + v34 = std::operator<<>(v33, "']['"); + WXML::Rewrite::ToStringCode((int)v69, (int *)v53); + v35 = std::operator<<(v34, v69); + v36 = std::operator<<>(v35, "']();"); + std::operator<<>(v36, a3); + std::string::_M_dispose((void **)v69); + v37 = (void **)v65; + } + else + { + std::operator+((int)v64, "m_", (int)a1); + v38 = std::string::append(v64, ":"); + std::string::basic_string(v65, v38); + v39 = std::string::append(v65, (int)v53); + std::string::basic_string(v69, v39); + WXML::Compiler::GetFuncId(v62, a9, (int)v69); + std::string::_M_dispose((void **)v69); + std::string::_M_dispose((void **)v65); + std::string::_M_dispose(v64); + v15 = night::compile_ns((int)a1, (int)v62, (int)v58, v50, (unsigned int *)v51, 0); + if ( v15 ) + { + std::string::_M_assign((int)a7, (int)v51); + std::string::_M_dispose(v62); + goto LABEL_18; + } + v40 = std::operator<<>((std::ostream::sentry *)v67, "nv_require(\""); + std::operator+((int)v63, "m_", (int)a1); + v41 = std::string::append(v63, ":"); + std::string::basic_string(v64, v41); + v42 = std::string::append(v64, (int)v53); + std::string::basic_string(v65, v42); + WXML::Rewrite::ToStringCode((int)v69, v65); + v43 = std::operator<<(v40, v69); + v44 = std::operator<<>(v43, "\");"); + std::operator<<>(v44, a3); + std::string::_M_dispose((void **)v69); + std::string::_M_dispose((void **)v65); + std::string::_M_dispose(v64); + std::string::_M_dispose(v63); + v45 = std::operator<<((std::ostream::sentry *)v67, v51); + std::operator<<>(v45, a3); + v37 = v62; + } + std::string::_M_dispose(v37); + std::string::_M_dispose(v60); + std::string::_M_dispose(v58); + std::string::_M_dispose((void **)&v55); + std::string::_M_dispose(v53); + } + std::stringbuf::str((int)v69, v68); + if ( v69[1] ) + { + v46 = std::map::operator[](a8, (int)a1); + std::string::_M_assign((int)v46, (int)v69); + } + v15 = 0; + std::string::_M_dispose((void **)v69); +LABEL_22: + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v66); + std::string::_M_dispose((void **)v51); + return v15; +} +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 40FE68: using guessed type char var_1B0[4]; +// 40FE68: using guessed type char var_E0[4]; +// 40FE68: using guessed type int var_DC[55]; +// 40FE68: using guessed type int var_1AC[49]; + +//----- (004107B5) -------------------------------------------------------- +int __cdecl WXML::Compiler::ProcessWxsFile(int *a1, int a2, char a3, int a4, _DWORD *a5, _DWORD *a6) +{ + std::ostream::sentry *v6; // esi + std::ostream::sentry *v7; // eax + std::ostream::sentry *v8; // eax + std::ostream::sentry *v9; // edi + std::ostream::sentry *v10; // eax + std::ostream::sentry *v11; // eax + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + _DWORD *v14; // eax + int v16; // [esp+2Ch] [ebp-16Ch] + int v17[2]; // [esp+38h] [ebp-160h] BYREF + char v18; // [esp+40h] [ebp-158h] BYREF + void *v19[6]; // [esp+50h] [ebp-148h] BYREF + int v20[6]; // [esp+68h] [ebp-130h] BYREF + void *v21[6]; // [esp+80h] [ebp-118h] BYREF + int v22[6]; // [esp+98h] [ebp-100h] BYREF + void *v23[2]; // [esp+B0h] [ebp-E8h] BYREF + char v24[4]; // [esp+B8h] [ebp-E0h] BYREF + int v25[55]; // [esp+BCh] [ebp-DCh] BYREF + + v17[1] = 0; + v17[0] = (int)&v18; + v18 = 0; + std::operator+((int)v23, "p_", (int)a1); + WXML::Compiler::GetFuncId(v19, a6, (int)v23); + std::string::_M_dispose(v23); + v16 = night::compile_ns((int)a1, (int)v19, a2, 1, (unsigned int *)v17, 0); + if ( v16 ) + { + std::string::_M_assign(a4, (int)v17); + } + else + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)v23); + v6 = std::operator<<>((std::ostream::sentry *)v24, "f_['"); + WXML::Rewrite::ToStringCode((int)v20, a1); + v7 = std::operator<<(v6, v20); + v8 = std::operator<<>(v7, "'] = nv_require("); + v9 = std::operator<<>(v8, 34); + std::operator+((int)v21, "p_", (int)a1); + WXML::Rewrite::ToStringCode((int)v22, (int *)v21); + v10 = std::operator<<(v9, v22); + v11 = std::operator<<>(v10, 34); + v12 = std::operator<<>(v11, ");"); + std::operator<<>(v12, a3); + std::string::_M_dispose((void **)v22); + std::string::_M_dispose(v21); + std::string::_M_dispose((void **)v20); + v13 = std::operator<<((std::ostream::sentry *)v24, v17); + std::operator<<>(v13, a3); + std::stringbuf::str((int)v22, v25); + v14 = std::map::operator[](a5, (int)a1); + std::string::operator=(v14, v22); + std::string::_M_dispose((void **)v22); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v23); + } + std::string::_M_dispose(v19); + std::string::_M_dispose((void **)v17); + return v16; +} +// 4107B5: using guessed type char var_E0[4]; +// 4107B5: using guessed type int var_DC[55]; + +//----- (00410A55) -------------------------------------------------------- +unsigned int __cdecl WXML::Compiler::Compile( + _DWORD *a1, + unsigned int *a2, + _DWORD *a3, + _DWORD *a4, + _DWORD *a5, + char a6, + int *a7, + int a8, + char a9, + int *a10, + int *a11, + int *a12, + int *a13, + int *a14, + int *a15, + int a16, + int a17, + int a18, + int *a19) +{ + _DWORD *v19; // eax + _DWORD *v20; // eax + int *v21; // edi + bool v22; // si + int *v23; // esi + int *v24; // ebx + char *v25; // eax + void **v26; // esi + int insert_hint_unique_pos; // eax + int *v28; // edx + char v29; // al + std::ostream::sentry *v30; // esi + std::ostream::sentry *v31; // eax + std::ostream::sentry *v32; // eax + int v33; // ebx + std::ostream::sentry *v34; // eax + std::ostream::sentry *v35; // esi + std::ostream::sentry *v36; // eax + std::ostream::sentry *v37; // eax + bool v38; // al + std::ostream::sentry *v39; // esi + std::ostream::sentry *v40; // eax + std::ostream::sentry *v41; // eax + std::ostream::sentry *v42; // eax + std::ostream::sentry *v43; // eax + std::ostream::sentry *v44; // eax + std::ostream::sentry *v45; // eax + std::ostream::sentry *v46; // eax + std::ostream::sentry *v47; // eax + std::ostream::sentry *v48; // eax + std::ostream::sentry *v49; // eax + std::ostream::sentry *v50; // esi + std::ostream::sentry *v51; // eax + std::ostream::sentry *v52; // eax + std::ostream::sentry *v53; // eax + void **v54; // ecx + _DWORD *v55; // eax + _DWORD *v56; // eax + _DWORD *v57; // eax + _DWORD *v58; // eax + std::ostream::sentry *v59; // eax + std::ostream::sentry *v60; // eax + std::ostream::sentry *v61; // eax + _DWORD *v62; // eax + bool v63; // si + std::ostream::sentry *v64; // ebx + std::ostream::sentry *v65; // eax + std::ostream::sentry *v66; // eax + std::ostream::sentry *v67; // ebx + std::ostream::sentry *v68; // eax + std::ostream::sentry *v69; // eax + std::ostream::sentry *v70; // eax + std::ostream::sentry *v71; // eax + _DWORD *v72; // eax + int *v73; // esi + std::ostream::sentry *v74; // eax + std::ostream::sentry *v75; // eax + std::ostream::sentry *v76; // eax + std::ostream::sentry *v77; // eax + std::ostream::sentry *v78; // eax + std::ostream::sentry *v79; // eax + _DWORD *v80; // eax + std::ostream::sentry *v81; // eax + std::ostream::sentry *v82; // eax + std::ostream::sentry *v83; // eax + std::ostream::sentry *v84; // eax + std::ostream::sentry *v85; // eax + std::ostream::sentry *v86; // eax + std::ostream::sentry *v87; // eax + std::ostream::sentry *v88; // eax + std::ostream::sentry *v89; // eax + std::ostream::sentry *v90; // eax + std::ostream::sentry *v91; // eax + std::ostream::sentry *v92; // eax + std::ostream::sentry *v93; // eax + std::ostream::sentry *v94; // eax + std::ostream::sentry *v95; // eax + std::ostream::sentry *v96; // eax + std::ostream::sentry *v97; // eax + std::ostream::sentry *v98; // eax + std::ostream::sentry *v99; // eax + std::ostream::sentry *v100; // eax + std::ostream::sentry *v101; // eax + std::ostream::sentry *v102; // eax + std::ostream::sentry *v103; // eax + std::ostream::sentry *v104; // eax + std::ostream::sentry *v105; // eax + std::ostream::sentry *v106; // eax + std::ostream::sentry *v107; // eax + std::ostream::sentry *v108; // eax + std::ostream::sentry *v109; // eax + std::ostream::sentry *v110; // eax + std::ostream::sentry *v111; // eax + std::ostream::sentry *v112; // eax + std::ostream::sentry *v113; // eax + std::ostream::sentry *v114; // eax + std::ostream::sentry *v115; // eax + std::ostream::sentry *v116; // eax + std::ostream::sentry *v117; // eax + std::ostream::sentry *v118; // eax + std::ostream::sentry *v119; // eax + std::ostream::sentry *v120; // eax + std::ostream::sentry *v121; // eax + std::ostream::sentry *v122; // eax + std::ostream::sentry *v123; // eax + std::ostream::sentry *v124; // eax + std::ostream::sentry *v125; // eax + std::ostream::sentry *v126; // eax + std::ostream::sentry *v127; // eax + std::ostream::sentry *v128; // eax + std::ostream::sentry *v129; // eax + int *v130; // eax + int *v131; // eax + std::ostream::sentry *v132; // eax + std::ostream::sentry *v133; // eax + std::ostream::sentry *v134; // eax + std::ostream::sentry *v135; // eax + std::ostream::sentry *v136; // eax + std::ostream::sentry *v137; // eax + std::ostream::sentry *v138; // eax + std::ostream::sentry *v139; // eax + std::ostream::sentry *v140; // eax + std::ostream::sentry *v141; // eax + std::ostream::sentry *v142; // eax + std::ostream::sentry *v143; // eax + std::ostream::sentry *v144; // eax + std::ostream::sentry *v145; // eax + std::ostream::sentry *v146; // eax + std::ostream::sentry *v147; // eax + std::ostream::sentry *v148; // eax + std::ostream::sentry *v149; // eax + std::ostream::sentry *v150; // eax + std::ostream::sentry *v151; // eax + std::ostream::sentry *v152; // eax + std::ostream::sentry *v153; // eax + std::ostream::sentry *v154; // eax + std::ostream::sentry *v155; // eax + std::ostream::sentry *v156; // eax + std::ostream::sentry *v157; // eax + std::ostream::sentry *v158; // eax + _DWORD *v159; // eax + std::ostream::sentry *v160; // eax + std::ostream::sentry *v161; // eax + std::ostream::sentry *v162; // eax + std::ostream::sentry *v163; // eax + std::ostream::sentry *v164; // eax + std::ostream::sentry *v165; // eax + std::ostream::sentry *v166; // eax + std::ostream::sentry *v167; // eax + std::ostream::sentry *v168; // eax + _DWORD *j; // ebx + std::ostream::sentry *v170; // eax + std::ostream::sentry *v171; // eax + std::ostream::sentry *v172; // eax + std::ostream::sentry *v173; // eax + std::ostream::sentry *v174; // eax + _DWORD *k; // ebx + std::ostream::sentry *v176; // eax + _DWORD *v177; // esi + int v178; // ecx + int v179; // esi + std::ostream::sentry *v180; // eax + int StrID; // eax + std::ostream::sentry *v182; // eax + int *v183; // eax + _DWORD *v184; // esi + int *v185; // ebx + std::ostream::sentry *v186; // eax + _DWORD *v187; // esi + int v188; // eax + std::ostream::sentry *v189; // eax + std::ostream::sentry *v190; // eax + unsigned int m; // esi + int v192; // eax + int v193; // edx + int v194; // ebx + _DWORD *v195; // ebx + _DWORD *v196; // ecx + int v197; // eax + int v198; // eax + unsigned int n; // esi + int v200; // eax + int v201; // edx + int v202; // ebx + std::ostream::sentry *v203; // ebx + _DWORD *v204; // ecx + int v205; // eax + int v206; // eax + std::ostream::sentry *v207; // eax + std::ostream::sentry *v208; // eax + std::ostream::sentry *v209; // eax + std::ostream::sentry *v210; // eax + std::ostream::sentry *v211; // eax + std::ostream::sentry *v212; // eax + std::ostream::sentry *v213; // eax + std::ostream::sentry *v214; // eax + std::ostream::sentry *v215; // eax + std::ostream::sentry *v216; // eax + std::ostream::sentry *v217; // eax + std::ostream::sentry *v218; // eax + std::ostream::sentry *v219; // eax + std::ostream::sentry *v220; // eax + std::ostream::sentry *v221; // eax + std::ostream::sentry *v222; // eax + std::ostream::sentry *v223; // eax + std::ostream::sentry *v224; // eax + std::ostream::sentry *v225; // eax + std::ostream::sentry *v226; // eax + std::ostream::sentry *v227; // eax + std::ostream::sentry *v228; // eax + std::ostream::sentry *v229; // eax + std::ostream::sentry *v230; // eax + std::ostream::sentry *v231; // eax + std::ostream::sentry *v232; // eax + std::ostream::sentry *v233; // eax + std::ostream::sentry *v234; // eax + std::ostream::sentry *v235; // eax + std::ostream::sentry *v236; // eax + std::ostream::sentry *v237; // eax + std::ostream::sentry *v238; // eax + std::ostream::sentry *v239; // eax + std::ostream::sentry *v240; // eax + std::ostream::sentry *v241; // eax + std::ostream::sentry *v242; // eax + std::ostream::sentry *v243; // eax + std::ostream::sentry *v244; // eax + std::ostream::sentry *v245; // eax + std::ostream::sentry *v246; // eax + std::ostream::sentry *v247; // eax + std::ostream::sentry *v248; // eax + std::ostream::sentry *v249; // eax + std::ostream::sentry *v250; // eax + std::ostream::sentry *v251; // eax + std::ostream::sentry *v252; // eax + void (__cdecl *v254)(void *); // [esp+4h] [ebp-5E4h] + void (__cdecl *v255)(void *); // [esp+4h] [ebp-5E4h] + std::ostream::sentry *v256; // [esp+5Ch] [ebp-58Ch] + _DWORD *v257; // [esp+60h] [ebp-588h] + _DWORD *v258; // [esp+64h] [ebp-584h] + int v259; // [esp+64h] [ebp-584h] + _DWORD *v260; // [esp+64h] [ebp-584h] + int v261; // [esp+68h] [ebp-580h] + std::ostream::sentry *v262; // [esp+6Ch] [ebp-57Ch] + std::ostream::sentry *v263; // [esp+6Ch] [ebp-57Ch] + std::ostream::sentry *v264; // [esp+6Ch] [ebp-57Ch] + std::ostream::sentry *v265; // [esp+6Ch] [ebp-57Ch] + std::ostream::sentry *v266; // [esp+6Ch] [ebp-57Ch] + std::ostream::sentry *v267; // [esp+6Ch] [ebp-57Ch] + std::ostream::sentry *v268; // [esp+6Ch] [ebp-57Ch] + std::ostream::sentry *v269; // [esp+6Ch] [ebp-57Ch] + std::ostream::sentry *v270; // [esp+6Ch] [ebp-57Ch] + _DWORD *i; // [esp+78h] [ebp-570h] + int v272; // [esp+78h] [ebp-570h] + unsigned int v273; // [esp+7Ch] [ebp-56Ch] + std::ostream::sentry *v274; // [esp+7Ch] [ebp-56Ch] + std::ostream::sentry *v275; // [esp+7Ch] [ebp-56Ch] + std::ostream::sentry *v276; // [esp+7Ch] [ebp-56Ch] + int v277; // [esp+80h] [ebp-568h] BYREF + _DWORD *v278; // [esp+84h] [ebp-564h] + volatile signed __int32 *v279; // [esp+88h] [ebp-560h] BYREF + int **v280; // [esp+8Ch] [ebp-55Ch] BYREF + int **v281; // [esp+90h] [ebp-558h] + int v282; // [esp+94h] [ebp-554h] + int v283; // [esp+98h] [ebp-550h] BYREF + int v284; // [esp+9Ch] [ebp-54Ch] BYREF + void *v285; // [esp+A0h] [ebp-548h] + void *v286; // [esp+A4h] [ebp-544h] + int v287; // [esp+ACh] [ebp-53Ch] + void *v288[5]; // [esp+B4h] [ebp-534h] BYREF + int v289; // [esp+C8h] [ebp-520h] BYREF + _DWORD v290[5]; // [esp+CCh] [ebp-51Ch] BYREF + int v291; // [esp+E0h] [ebp-508h] BYREF + _DWORD v292[5]; // [esp+E4h] [ebp-504h] BYREF + char *v293; // [esp+F8h] [ebp-4F0h] BYREF + int v294; // [esp+FCh] [ebp-4ECh] + char v295; // [esp+100h] [ebp-4E8h] BYREF + int v296[2]; // [esp+110h] [ebp-4D8h] BYREF + char v297; // [esp+118h] [ebp-4D0h] BYREF + void *v298[2]; // [esp+128h] [ebp-4C0h] BYREF + char v299; // [esp+130h] [ebp-4B8h] BYREF + int v300; // [esp+140h] [ebp-4A8h] BYREF + int v301; // [esp+144h] [ebp-4A4h] + char v302; // [esp+148h] [ebp-4A0h] BYREF + void *v303[2]; // [esp+158h] [ebp-490h] BYREF + char v304; // [esp+160h] [ebp-488h] BYREF + int v305[2]; // [esp+170h] [ebp-478h] BYREF + char v306; // [esp+178h] [ebp-470h] BYREF + void *v307[6]; // [esp+188h] [ebp-460h] BYREF + void *v308; // [esp+1A0h] [ebp-448h] BYREF + int v309[5]; // [esp+1A4h] [ebp-444h] BYREF + int v310; // [esp+1B8h] [ebp-430h] BYREF + int v311; // [esp+1BCh] [ebp-42Ch] BYREF + char v312; // [esp+1C0h] [ebp-428h] BYREF + int v313[2]; // [esp+1D0h] [ebp-418h] BYREF + char v314; // [esp+1D8h] [ebp-410h] BYREF + int v315[6]; // [esp+1E8h] [ebp-400h] BYREF + char v316[8]; // [esp+200h] [ebp-3E8h] BYREF + char v317[4]; // [esp+208h] [ebp-3E0h] BYREF + int v318[49]; // [esp+20Ch] [ebp-3DCh] BYREF + void *v319[2]; // [esp+2D0h] [ebp-318h] BYREF + char v320[4]; // [esp+2D8h] [ebp-310h] BYREF + int v321[49]; // [esp+2DCh] [ebp-30Ch] BYREF + int v322; // [esp+3A0h] [ebp-248h] BYREF + volatile signed __int32 *v323; // [esp+3A4h] [ebp-244h] BYREF + char v324[4]; // [esp+3A8h] [ebp-240h] BYREF + int v325[49]; // [esp+3ACh] [ebp-23Ch] BYREF + int v326[2]; // [esp+470h] [ebp-178h] BYREF + char v327[4]; // [esp+478h] [ebp-170h] BYREF + _DWORD v328[91]; // [esp+47Ch] [ebp-16Ch] BYREF + + std::basic_stringstream,std::allocator>::basic_stringstream((int)v316); + std::_Rb_tree_header::_Rb_tree_header(&v284); + std::_Rb_tree_header::_Rb_tree_header(v288); + v19 = operator new((struct type_info *)0x24, v254); + std::_Rb_tree_header::_Rb_tree_header(v19 + 1); + v20[6] = 0; + v20[7] = 0; + v20[8] = 0; + zcc::shared_ptr::shared_ptr(v20); + std::_Rb_tree_header::_Rb_tree_header(v290); + std::_Rb_tree_header::_Rb_tree_header(v292); + for ( i = (_DWORD *)a1[3]; a1 + 1 != i; i = (_DWORD *)std::_Rb_tree_increment(i) ) + { + v21 = i + 4; + std::string::substr((void **)v305, i + 4, i[5] - 5, 0xFFFFFFFF); + v22 = std::operator==((int)v305, ".wxml"); + std::string::_M_dispose((void **)v305); + if ( v22 ) + { + v280 = 0; + v281 = 0; + v282 = 0; + WXML::DOMLib::Parser::Parser((int)v326); + v273 = WXML::DOMLib::Parser::Parse((WXML::DOMLib::Parser *)v326, i[10], a2, (int)v21, &v280); + if ( v273 ) + { +LABEL_37: + WXML::DOMLib::Parser::~Parser((int)v326); + std::vector::~vector((void **)&v280); + goto LABEL_130; + } + WXML::DOMLib::Parser::GetParsed(&v322, (WXML::DOMLib::Parser *)v326); + v23 = (int *)v285; + v24 = &v284; + while ( v23 ) + { + if ( (unsigned __int8)std::operator<((int)(v23 + 4), (int)v21) ) + { + v23 = (int *)v23[3]; + } + else + { + v24 = v23; + v23 = (int *)v23[2]; + } + } + if ( v24 == &v284 || (unsigned __int8)std::operator<((int)v21, (int)(v24 + 4)) ) + { + v262 = (std::ostream::sentry *)v24; + v25 = (char *)operator new((struct type_info *)0x30, v255); + v26 = (void **)(v25 + 16); + v24 = (int *)v25; + std::string::basic_string((_DWORD *)v25 + 4, (int)v21); + v24[10] = 0; + v24[11] = 0; + insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + &v283, + v262, + (int)v26); + if ( v28 ) + { + v29 = v28 == &v284 || insert_hint_unique_pos != 0; + if ( !v29 ) + { + v263 = (std::ostream::sentry *)v28; + v29 = std::operator<((int)v26, (int)(v28 + 4)); + v28 = (int *)v263; + } + std::_Rb_tree_insert_and_rebalance(v29, v24, v28, &v284); + ++v287; + } + else + { + v264 = (std::ostream::sentry *)insert_hint_unique_pos; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v24 + 11); + std::string::_M_dispose(v26); + operator delete(v24); + v24 = (int *)v264; + } + } + std::__shared_ptr::operator=(v24 + 10, &v322); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v323); + v294 = 0; + v293 = &v295; + v295 = 0; + v296[0] = (int)&v297; + v296[1] = 0; + v297 = 0; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v319); + if ( v280 != v281 ) + { + v30 = std::operator<<>((std::ostream::sentry *)v320, "f_['"); + WXML::Rewrite::ToStringCode((int)&v322, v21); + v31 = std::operator<<(v30, &v322); + v32 = std::operator<<>(v31, "']={};"); + std::operator<<>(v32, a9); + std::string::_M_dispose((void **)&v322); + } + while ( v273 < -1227133513 * (((char *)v281 - (char *)v280) >> 4) ) + { + v303[0] = &v304; + v305[0] = (int)&v306; + v298[0] = &v299; + v300 = (int)&v302; + v298[1] = 0; + v299 = 0; + v301 = 0; + v302 = 0; + v303[1] = 0; + v304 = 0; + v305[1] = 0; + v306 = 0; + v33 = WXML::Compiler::DealWxsTag((int)v21, &v280[28 * v273], v298, (int)&v300, (int *)v303, &v277, a2); + if ( v33 ) + goto LABEL_33; + v34 = std::operator<<((std::ostream::sentry *)v320, a19); + v35 = std::operator<<>(v34, "['"); + WXML::Rewrite::ToStringCode((int)v315, v21); + v36 = std::operator<<(v35, v315); + v256 = std::operator<<>(v36, "']['"); + WXML::Rewrite::ToStringCode((int)&v322, (int *)v298); + v37 = std::operator<<(v256, &v322); + std::operator<<>(v37, "'] ="); + std::string::_M_dispose((void **)&v322); + std::string::_M_dispose((void **)v315); + if ( v301 ) + { + MMBizWxaAppComm::PathCombine(v21, &v300, (unsigned int *)v305); + if ( *(_BYTE *)v305[0] == 47 ) + { + std::operator+((int)v307, 46, (int)v305); + std::string::operator=(v305, v307); + std::string::_M_dispose(v307); + } + if ( a1 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a1, + (int)v305) ) + { + v38 = std::operator==((int)a7, "$gwx"); + if ( (a8 & 0x20) != 0 || v38 ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v322); + v40 = std::operator<<((std::ostream::sentry *)v324, v21); + std::operator<<>(v40, ":"); + v41 = (std::ostream::sentry *)std::ostream::operator<<(v277); + std::operator<<>(v41, ":"); + v42 = (std::ostream::sentry *)std::ostream::operator<<(v280[28 * v273 + 3]); + v43 = std::operator<<>(v42, ":"); + v44 = std::operator<<(v43, &v300); + v45 = std::operator<<>(v44, " not found from "); + std::operator<<(v45, v21); + std::stringbuf::str((int)&v310, v325); + v33 = 1; + std::string::operator=(a2, &v310); + std::string::_M_dispose((void **)&v310); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v322); +LABEL_33: + std::string::_M_dispose((void **)v305); + std::string::_M_dispose(v303); + std::string::_M_dispose((void **)&v300); + std::string::_M_dispose(v298); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v319); + std::string::_M_dispose((void **)v296); + std::string::_M_dispose((void **)&v293); + v273 = v33; + goto LABEL_37; + } + } + v39 = std::operator<<>((std::ostream::sentry *)v320, "f_['"); + WXML::Rewrite::ToStringCode((int)&v322, v305); + v46 = std::operator<<(v39, &v322); + std::operator<<>(v46, "'] || "); + std::string::_M_dispose((void **)&v322); + v265 = std::operator<<>((std::ostream::sentry *)v320, "nv_require(\""); + std::operator+((int)v315, "p_", (int)v305); + WXML::Rewrite::ToStringCode((int)&v322, v315); + v47 = std::operator<<(v265, &v322); + v48 = std::operator<<>(v47, "\");"); + std::operator<<>(v48, a9); + std::string::_M_dispose((void **)&v322); + std::string::_M_dispose((void **)v315); + v49 = std::operator<<((std::ostream::sentry *)v320, a19); + v50 = std::operator<<>(v49, "['"); + WXML::Rewrite::ToStringCode((int)v315, v21); + v51 = std::operator<<(v50, v315); + v266 = std::operator<<>(v51, "']['"); + WXML::Rewrite::ToStringCode((int)&v322, (int *)v298); + v52 = std::operator<<(v266, &v322); + v53 = std::operator<<>(v52, "']();"); + std::operator<<>(v53, a9); + std::string::_M_dispose((void **)&v322); + v54 = (void **)v315; + } + else + { + std::operator+((int)v313, "m_", (int)v21); + v55 = std::string::append(v313, ":"); + std::string::basic_string(v315, v55); + v56 = std::string::append(v315, (int)v298); + std::string::basic_string(&v322, v56); + WXML::Compiler::GetFuncId(&v308, &v291, (int)&v322); + std::string::_M_dispose((void **)&v322); + std::string::_M_dispose((void **)v315); + std::string::_M_dispose((void **)v313); + v33 = night::compile_ns((int)v21, (int)&v308, (int)v303, v277, (unsigned int *)v296, 0); + if ( v33 ) + { + std::string::_M_assign((int)a2, (int)v296); + std::string::_M_dispose(&v308); + goto LABEL_33; + } + v267 = std::operator<<>((std::ostream::sentry *)v320, "nv_require(\""); + std::operator+((int)&v310, "m_", (int)v21); + v57 = std::string::append(&v310, ":"); + std::string::basic_string(v313, v57); + v58 = std::string::append(v313, (int)v298); + std::string::basic_string(v315, v58); + WXML::Rewrite::ToStringCode((int)&v322, v315); + v59 = std::operator<<(v267, &v322); + v60 = std::operator<<>(v59, "\");"); + std::operator<<>(v60, a9); + std::string::_M_dispose((void **)&v322); + std::string::_M_dispose((void **)v315); + std::string::_M_dispose((void **)v313); + std::string::_M_dispose((void **)&v310); + v61 = std::operator<<((std::ostream::sentry *)v320, v296); + std::operator<<>(v61, a9); + v54 = &v308; + } + std::string::_M_dispose(v54); + std::string::_M_dispose((void **)v305); + std::string::_M_dispose(v303); + std::string::_M_dispose((void **)&v300); + std::string::_M_dispose(v298); + ++v273; + } + std::stringbuf::str((int)v313, v321); + std::string::operator=(&v293, v313); + std::string::_M_dispose((void **)v313); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v319); + std::string::_M_dispose((void **)v296); + if ( v294 ) + { + v62 = std::map::operator[](&v289, (int)v21); + std::string::_M_assign((int)v62, (int)&v293); + } + std::string::_M_dispose((void **)&v293); + WXML::DOMLib::Parser::~Parser((int)v326); + std::vector::~vector((void **)&v280); + } + else + { + std::string::substr((void **)v315, v21, i[5] - 4, 0xFFFFFFFF); + v63 = std::operator==((int)v315, ".wxs"); + std::string::_M_dispose((void **)v315); + if ( v63 ) + { + v310 = (int)&v312; + v311 = 0; + v312 = 0; + std::operator+((int)v326, "p_", (int)v21); + WXML::Compiler::GetFuncId((void **)v313, &v291, (int)v326); + std::string::_M_dispose((void **)v326); + v273 = night::compile_ns((int)v21, (int)v313, (int)(i + 10), 1, (unsigned int *)&v310, 0); + if ( v273 ) + { + std::string::_M_assign((int)a2, (int)&v310); + std::string::_M_dispose((void **)v313); + std::string::_M_dispose((void **)&v310); + goto LABEL_130; + } + std::basic_stringstream,std::allocator>::basic_stringstream((int)v326); + v64 = std::operator<<>((std::ostream::sentry *)v327, "f_['"); + WXML::Rewrite::ToStringCode((int)v315, v21); + v65 = std::operator<<(v64, v315); + v66 = std::operator<<>(v65, "'] = nv_require("); + v67 = std::operator<<>(v66, 34); + std::operator+((int)v319, "p_", (int)v21); + WXML::Rewrite::ToStringCode((int)&v322, (int *)v319); + v68 = std::operator<<(v67, &v322); + v69 = std::operator<<>(v68, 34); + v70 = std::operator<<>(v69, ");"); + std::operator<<>(v70, a9); + std::string::_M_dispose((void **)&v322); + std::string::_M_dispose(v319); + std::string::_M_dispose((void **)v315); + v71 = std::operator<<((std::ostream::sentry *)v327, &v310); + std::operator<<>(v71, a9); + std::stringbuf::str((int)&v322, v328); + v72 = std::map::operator[](&v289, (int)v21); + std::string::operator=(v72, &v322); + std::string::_M_dispose((void **)&v322); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v326); + std::string::_M_dispose((void **)v313); + std::string::_M_dispose((void **)&v310); + } + } + } + if ( a6 ) + std::string::basic_string((void **)&v322, "global"); + else + std::string::basic_string((void **)&v322, "window"); + v73 = &v322; + WXML::Compiler::GetVersionInfo((int)v326, &v322); + v74 = std::operator<<((std::ostream::sentry *)v317, v326); + std::endl>(v74); + std::string::_M_dispose((void **)v326); + std::string::_M_dispose((void **)&v322); + WXML::NameAllocator::NameAllocator(&v322, a16, a17); + v75 = std::operator<<>((std::ostream::sentry *)v317, "var $gwxc"); + std::operator<<>(v75, a9); + v76 = std::operator<<>((std::ostream::sentry *)v317, "var $gaic={}"); + std::operator<<>(v76, a9); + v77 = std::operator<<((std::ostream::sentry *)v317, a7); + v78 = std::operator<<>(v77, "=function(path,global){"); + std::operator<<>(v78, a9); + std::operator<<>((std::ostream::sentry *)v317, "if(typeof global === 'undefined') global={};"); + std::operator<<>((std::ostream::sentry *)v317, "if(typeof __WXML_GLOBAL__ === 'undefined') {"); + v79 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__={};"); + std::operator<<>(v79, a9); + if ( (a8 & 0x80) != 0 ) + { + std::string::basic_string((void **)v326, "life_cycle_callback_content"); + v73 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a5, + (int)v326); + std::string::_M_dispose((void **)v326); + if ( a5 + 1 != v73 ) + { + std::string::basic_string((void **)v326, "life_cycle_callback_content"); + v80 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a5, + (int)v326); + std::operator<<((std::ostream::sentry *)v317, v80 + 10); + std::string::_M_dispose((void **)v326); + } + } + std::operator<<>((std::ostream::sentry *)v317, "}"); + v81 = std::operator<<>( + (std::ostream::sentry *)v317, + "__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};"); + std::operator<<>(v81, a9); + if ( !std::operator==((int)a7, "$gwx") && (a8 & 0x60) == 0 ) + { + v82 = std::operator<<>((std::ostream::sentry *)v317, "$gwx('init', global);"); + std::operator<<>(v82, a9); + } + v83 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _(a,b){if(typeof(b)!='undefined')a.children.push(b);}"); + std::operator<<>(v83, a9); + v84 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _v(k){if(typeof(k)!='undefined')return {tag:'virtual','wxKey':k,children:[]};return {tag:'virtual',children:[]};}"); + std::operator<<>(v84, a9); + v85 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _n(tag){$gwxc++;if($gwxc>=16000){throw 'Dom limit exceeded, please check if there\\'s any mistake you" + "\\'ve made.'};return {tag:'wx-'+tag,attr:{},children:[],n:[],raw:{},generics:{}}}"); + std::operator<<>(v85, a9); + v86 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _p(a,b){b&&a.properities.push(b);}"); + std::operator<<>(v86, a9); + v87 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _s(scope,env,key){return typeof(scope[key])!='undefined'?scope[key]:env[key]}"); + std::operator<<>(v87, a9); + v88 = std::operator<<>((std::ostream::sentry *)v317, "function _wp(m){console.warn(\"WXMLRT_"); + v89 = std::operator<<(v88, a7); + v90 = std::operator<<>(v89, ":\"+m)}"); + std::operator<<>(v90, a9); + v91 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _wl(tname,prefix){_wp(prefix+':-1:-1:-1: Template `' + tname + '` is being called recursively, will be stop.')}"); + std::operator<<>(v91, a9); + v92 = std::operator<<>((std::ostream::sentry *)v317, aGwnConsoleWarn); + std::operator<<>(v92, a9); + v93 = std::operator<<>( + (std::ostream::sentry *)v317, + "function wfor( to_iter, func, env, _s, global, father, itemname, indexname, keyname )\n" + "{\n" + "var _n = wh.hn( to_iter ) === 'n'; \n" + "var scope = wh.rv( _s ); \n" + "var has_old_item = scope.hasOwnProperty(itemname);\n" + "var has_old_index = scope.hasOwnProperty(indexname);\n" + "var old_item = scope[itemname];\n" + "var old_index = scope[indexname];\n" + "var full = Object.prototype.toString.call(wh.rv(to_iter));\n" + "var type = full[8]; \n" + "if( type === 'N' && full[10] === 'l' ) type = 'X'; \n" + "var _y;\n" + "if( _n )\n" + "{\n" + "if( type === 'A' ) \n" + "{\n" + "var r_iter_item;\n" + "for( var i = 0 ; i < to_iter.length ; i++ )\n" + "{\n" + "scope[itemname] = to_iter[i];\n" + "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" + "r_iter_item = wh.rv(to_iter[i]);\n" + "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" + "ed;\n" + "_y = _v(key);\n" + "_(father,_y);\n" + "func( env, scope, _y, global );\n" + "}\n" + "}\n" + "else if( type === 'O' ) \n" + "{\n" + "var i = 0;\n" + "var r_iter_item;\n" + "for( var k in to_iter )\n" + "{\n" + "scope[itemname] = to_iter[k];\n" + "scope[indexname] = _n ? k : wh.nh(k, 'h');\n" + "r_iter_item = wh.rv(to_iter[k]);\n" + "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" + "ed;\n" + "_y = _v(key);\n" + "_(father,_y);\n" + "func( env,scope,_y,global );\n" + "i++;\n" + "}\n" + "}\n" + "else if( type === 'S' ) \n" + "{\n" + "for( var i = 0 ; i < to_iter.length ; i++ )\n" + "{\n" + "scope[itemname] = to_iter[i];\n" + "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" + "_y = _v( to_iter[i] + i );\n" + "_(father,_y);\n" + "func( env,scope,_y,global );\n" + "}\n" + "}\n" + "else if( type === 'N' ) \n" + "{\n" + "for( var i = 0 ; i < to_iter ; i++ )\n" + "{\n" + "scope[itemname] = i;\n" + "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" + "_y = _v( i );\n" + "_(father,_y);\n" + "func(env,scope,_y,global);\n" + "}\n" + "}\n" + "else\n" + "{\n" + "}\n" + "}\n" + "else\n" + "{\n" + "var r_to_iter = wh.rv(to_iter);\n" + "var r_iter_item, iter_item;\n" + "if( type === 'A' ) \n" + "{\n" + "for( var i = 0 ; i < r_to_iter.length ; i++ )\n" + "{\n" + "iter_item = r_to_iter[i];\n" + "iter_item = wh.hn(iter_item)==='n' ? wh.nh(iter_item,'h') : iter_item;\n" + "r_iter_item = wh.rv( iter_item );\n" + "scope[itemname] = iter_item\n" + "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" + "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" + "ed;\n" + "_y = _v(key);\n" + "_(father,_y);\n" + "func( env, scope, _y, global );\n" + "}\n" + "}\n" + "else if( type === 'O' ) \n" + "{\n" + "var i=0;\n" + "for( var k in r_to_iter )\n" + "{\n" + "iter_item = r_to_iter[k];\n" + "iter_item = wh.hn(iter_item)==='n'? wh.nh(iter_item,'h') : iter_item;\n" + "r_iter_item = wh.rv( iter_item );\n" + "scope[itemname] = iter_item;\n" + "scope[indexname] = _n ? k : wh.nh(k, 'h');\n" + "var key = keyname && r_iter_item ? (keyname===\"*this\" ? r_iter_item : wh.rv(r_iter_item[keyname])) : undefin" + "ed;\n" + "_y=_v(key);\n" + "_(father,_y);\n" + "func( env, scope, _y, global );\n" + "i++\n" + "}\n" + "}\n" + "else if( type === 'S' ) \n" + "{\n" + "for( var i = 0 ; i < r_to_iter.length ; i++ )\n" + "{\n" + "iter_item = wh.nh(r_to_iter[i],'h');\n" + "scope[itemname] = iter_item;\n" + "scope[indexname] = _n ? i : wh.nh(i, 'h');\n" + "_y = _v( to_iter[i] + i );\n" + "_(father,_y);\n" + "func( env, scope, _y, global );\n" + "}\n" + "}\n" + "else if( type === 'N' ) \n" + "{\n" + "for( var i = 0 ; i < r_to_iter ; i++ )\n" + "{\n" + "iter_item = wh.nh(i,'h');\n" + "scope[itemname] = iter_item;\n" + "scope[indexname]= _n ? i : wh.nh(i,'h');\n" + "_y = _v( i );\n" + "_(father,_y);\n" + "func(env,scope,_y,global);\n" + "}\n" + "}\n" + "else\n" + "{\n" + "}\n" + "}\n" + "if(has_old_item)\n" + "{\n" + "scope[itemname]=old_item;\n" + "}\n" + "else\n" + "{\n" + "delete scope[itemname];\n" + "}\n" + "if(has_old_index)\n" + "{\n" + "scope[indexname]=old_index;\n" + "}\n" + "else\n" + "{\n" + "delete scope[indexname];\n" + "}\n" + "}\n"); + std::operator<<>(v93, a9); + v94 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _ca(o)\n" + "{ \n" + "if ( wh.hn(o) == 'h' ) return true;\n" + "if ( typeof o !== \"object\" ) return false;\n" + "for(var i in o){ \n" + "if ( o.hasOwnProperty(i) ){\n" + "if (_ca(o[i])) return true;\n" + "}\n" + "}\n" + "return false;\n" + "}\n" + "function _da( node, attrname, opindex, raw, o )\n" + "{\n" + "var isaffected = false;\n" + "var value = $gdc( raw, \"\", 2 );\n" + "if ( o.ap && value && value.constructor===Function ) \n" + "{\n" + "attrname = \"$wxs:\" + attrname; \n" + "node.attr[\"$gdc\"] = $gdc;\n" + "}\n" + "if ( o.is_affected || _ca(raw) ) \n" + "{\n" + "node.n.push( attrname );\n" + "node.raw[attrname] = raw;\n" + "}\n" + "node.attr[attrname] = value;\n" + "}\n" + "function _r( node, attrname, opindex, env, scope, global ) \n" + "{\n" + "global.opindex=opindex;\n" + "var o = {}, _env;\n" + "var a = grb( z[opindex], env, scope, global, o );\n" + "_da( node, attrname, opindex, a, o );\n" + "}\n" + "function _rz( z, node, attrname, opindex, env, scope, global ) \n" + "{\n" + "global.opindex=opindex;\n" + "var o = {}, _env;\n" + "var a = grb( z[opindex], env, scope, global, o );\n" + "_da( node, attrname, opindex, a, o );\n" + "}\n" + "function _o( opindex, env, scope, global )\n" + "{\n" + "global.opindex=opindex;\n" + "var nothing = {};\n" + "var r = grb( z[opindex], env, scope, global, nothing );\n" + "return (r&&r.constructor===Function) ? undefined : r;\n" + "}\n" + "function _oz( z, opindex, env, scope, global )\n" + "{\n" + "global.opindex=opindex;\n" + "var nothing = {};\n" + "var r = grb( z[opindex], env, scope, global, nothing );\n" + "return (r&&r.constructor===Function) ? undefined : r;\n" + "}\n" + "function _1( opindex, env, scope, global, o )\n" + "{\n" + "var o = o || {};\n" + "global.opindex=opindex;\n" + "return gra( z[opindex], env, scope, global, o );\n" + "}\n" + "function _1z( z, opindex, env, scope, global, o )\n" + "{\n" + "var o = o || {};\n" + "global.opindex=opindex;\n" + "return gra( z[opindex], env, scope, global, o );\n" + "}\n" + "function _2( opindex, func, env, scope, global, father, itemname, indexname, keyname )\n" + "{\n" + "var o = {};\n" + "var to_iter = _1( opindex, env, scope, global );\n" + "wfor( to_iter, func, env, scope, global, father, itemname, indexname, keyname );\n" + "}\n" + "function _2z( z, opindex, func, env, scope, global, father, itemname, indexname, keyname )\n" + "{\n" + "var o = {};\n" + "var to_iter = _1z( z, opindex, env, scope, global );\n" + "wfor( to_iter, func, env, scope, global, father, itemname, indexname, keyname );\n" + "}\n"); + std::operator<<>(v94, a9); + v95 = std::operator<<>( + (std::ostream::sentry *)v317, + "\n" + "function _m(tag,attrs,generics,env,scope,global)\n" + "{\n" + "var tmp=_n(tag);\n" + "var base=0;\n" + "for(var i = 0 ; i < attrs.length ; i+=2 )\n" + "{\n" + "if(base+attrs[i+1]<0)\n" + "{\n" + "tmp.attr[attrs[i]]=true;\n" + "}\n" + "else\n" + "{\n" + "_r(tmp,attrs[i],base+attrs[i+1],env,scope,global);\n" + "if(base===0)base=attrs[i+1];\n" + "}\n" + "}\n" + "for(var i=0;i>(v95, a9); + v96 = std::operator<<>((std::ostream::sentry *)v317, aVarNfInitFunct); + std::operator<<>(v96, a9); + v97 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _af(p, a, r, c){\n" + "p.extraAttr = {\"t_action\": a, \"t_rawid\": r };\n" + "if ( typeof(c) != 'undefined' ) p.extraAttr.t_cid = c;\n" + "}\n"); + std::operator<<>(v97, a9); + if ( !a6 ) + { + v98 = std::operator<<>((std::ostream::sentry *)v317, "function _gv( )"); + std::operator<<>(v98, a9); + v99 = std::operator<<>( + (std::ostream::sentry *)v317, + "{if( typeof( window.__webview_engine_version__) == 'undefined' ) return 0.0;"); + std::operator<<>(v99, a9); + v100 = std::operator<<>( + (std::ostream::sentry *)v317, + "return window.__webview_engine_version__;}"); + std::operator<<>(v100, a9); + } + v101 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _ai(i,p,e,me,r,c){var x=_grp(p,e,me);if(x)i.push(x);else{i.push('');_wp(me+':import:'+r+':'+c+': Pat" + "h `'+p+'` not found from `'+me+'`.')}}"); + std::operator<<>(v101, a9); + v102 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _grp(p,e,me){if(p[0]!='/'){var mepart=me.split('/');mepart.pop();var ppart=p.split('/');for(var i=0;" + "i>(v102, a9); + std::operator<<>( + (std::ostream::sentry *)v317, + "function _gd(p,c,e,d){if(!c)return;if(d[p][c])return d[p][c];for(var x=e[p].i.length-1;x>=0;x--){if(e[p].i[x]&&d[e[p" + "].i[x]][c])return d[e[p].i[x]][c]};"); + std::operator<<>( + (std::ostream::sentry *)v317, + "for(var x=e[p].ti.length-1;x>=0;x--){var q=_grp(e[p].ti[x],e,p);if(q&&d[q][c])return d[q][c]}"); + std::operator<<>( + (std::ostream::sentry *)v317, + "var ii=_gapi(e,p);for(var x=0;x>( + (std::ostream::sentry *)v317, + "for(var k=e[p].j.length-1;k>=0;k--)if(e[p].j[k]){for(var q=e[e[p].j[k]].ti.length-1;q>=0;q--){var pp=_grp(e[e[p].j[k" + "]].ti[q],e,p);if(pp&&d[pp][c]){return d[pp][c]}}}"); + v103 = std::operator<<>((std::ostream::sentry *)v317, "}"); + std::operator<<>(v103, a9); + std::operator<<>( + (std::ostream::sentry *)v317, + "function _gapi(e,p){if(!p)return [];if($gaic[p]){return $gaic[p]};var ret=[],q=[],h=0,t=0,put={},visited={};q.push(p" + ");visited[p]=true;t++;while(h>( + (std::ostream::sentry *)v317, + "var a=q[h++];for(var i=0;i>( + (std::ostream::sentry *)v317, + "var nd=e[a].ic[i];var np=_grp(nd,e,a);if(np&&!visited[np]){visited[np]=true;q.push(np);t++;}}for(var i=0;a!=p&&i>( + (std::ostream::sentry *)v317, + "var ni=e[a].ti[i];var nm=_grp(ni,e,a);if(nm&&!put[nm]){put[nm]=true;ret.push(nm);}}"); + v104 = std::operator<<>((std::ostream::sentry *)v317, "}$gaic[p]=ret;return ret;}"); + std::operator<<>(v104, a9); + std::operator<<>((std::ostream::sentry *)v317, "var $ixc={};"); + v105 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _ic(p,ent,me,e,s,r,gg){var x=_grp(p,ent,me);ent[me].j.push(x);if(x){if($ixc[x]){_wp('-1:include:-1:-" + "1: `'+p+'` is being included in a loop, will be stop.');return;}$ixc[x]=true;try{ent[x].f(e,s,r,gg)}catch(e){" + "}$ixc[x]=false;}else{_wp(me+':include:-1:-1: Included path `'+p+'` not found from `'+me+'`.')}}"); + std::operator<<>(v105, a9); + std::operator<<>( + (std::ostream::sentry *)v317, + "function _w(tn,f,line,c){_wp(f+':template:'+line+':'+c+': Template `'+tn+'` not found.');}"); + v106 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _ev(dom){var changed=false;delete dom.properities;delete dom.n;if(dom.children){do{changed=false;var" + " newch = [];for(var i=0;i>(v106, a9); + v107 = std::operator<<>( + (std::ostream::sentry *)v317, + "function _tsd( root )\n" + "{\n" + "if( root.tag == \"wx-wx-scope\" ) \n" + "{\n" + "root.tag = \"virtual\";\n" + "root.wxCkey = \"11\";\n" + "root['wxScopeData'] = root.attr['wx:scope-data'];\n" + "delete root.n;\n" + "delete root.raw;\n" + "delete root.generics;\n" + "delete root.attr;\n" + "}\n" + "for( var i = 0 ; root.children && i < root.children.length ; i++ )\n" + "{\n" + "_tsd( root.children[i] );\n" + "}\n" + "return root;\n" + "}\n"); + std::operator<<>(v107, a9); + v108 = std::operator<<>((std::ostream::sentry *)v317, "var "); + v109 = std::operator<<(v108, a13); + v110 = std::operator<<>(v109, "={}"); + std::operator<<>(v110, a9); + v111 = std::operator<<>( + (std::ostream::sentry *)v317, + "if(typeof(global.entrys)==='undefined')global.entrys={};"); + v112 = std::operator<<(v111, a13); + v113 = std::operator<<>(v112, "=global.entrys;"); + std::operator<<>(v113, a9); + v114 = std::operator<<>((std::ostream::sentry *)v317, "var "); + v115 = std::operator<<(v114, a14); + v116 = std::operator<<>(v115, "={}"); + std::operator<<>(v116, a9); + v117 = std::operator<<>( + (std::ostream::sentry *)v317, + "if(typeof(global.defines)==='undefined')global.defines={};"); + v118 = std::operator<<(v117, a14); + v119 = std::operator<<>(v118, "=global.defines;"); + std::operator<<>(v119, a9); + v120 = std::operator<<>((std::ostream::sentry *)v317, "var "); + v121 = std::operator<<(v120, a19); + v122 = std::operator<<>(v121, "={}"); + std::operator<<>(v122, a9); + v123 = std::operator<<>( + (std::ostream::sentry *)v317, + "if(typeof(global.modules)==='undefined')global.modules={};"); + v124 = std::operator<<(v123, a19); + v125 = std::operator<<>(v124, "=global.modules || {};"); + std::operator<<>(v125, a9); + v126 = std::operator<<>((std::ostream::sentry *)v317, "var "); + v127 = std::operator<<(v126, a15); + v128 = std::operator<<>(v127, "={}"); + std::operator<<>(v128, a9); + v272 = a8 & 2; + if ( (a8 & 2) != 0 ) + { + v129 = std::operator<<>((std::ostream::sentry *)v317, "var cs"); + std::operator<<>(v129, a9); + } + std::_Rb_tree_header::_Rb_tree_header(v309); + v319[0] = v286; + while ( v319[0] != &v284 ) + { + WXML::DOMLib::WXMLDom::RewriteTree(*((_DWORD *)v319[0] + 10), (const char **)v73); + v73 = (int *)*((_DWORD *)v319[0] + 10); + std::string::basic_string((void **)v326, (unsigned __int8 *)&off_52CB31); + v130 = std::map>::operator[](a4, v326); + WXML::DOMLib::WXMLDom::MarkIfHasDescendant((int)v73, v130); + std::string::_M_dispose((void **)v326); + if ( a6 ) + { + v73 = (int *)*((_DWORD *)v319[0] + 10); + std::string::basic_string((void **)v326, (unsigned __int8 *)&off_52CB31); + v131 = std::map>::operator[](a4, v326); + WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(v73, v131); + std::string::_M_dispose((void **)v326); + } + std::_Rb_tree_iterator>>::operator++((int *)v319); + } + v132 = std::operator<<>( + (std::ostream::sentry *)v317, + "__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}"); + std::operator<<>(v132, a9); + v133 = std::operator<<>( + (std::ostream::sentry *)v317, + "__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};"); + std::operator<<>(v133, a9); + v134 = std::operator<<>( + (std::ostream::sentry *)v317, + "__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};"); + std::operator<<>(v134, a9); + v135 = std::operator<<>((std::ostream::sentry *)v317, "var z=__WXML_GLOBAL__.ops_set."); + v136 = std::operator<<(v135, a7); + v137 = std::operator<<>(v136, " || [];"); + std::operator<<>(v137, a9); + if ( (a8 & 4) != 0 ) + { + v138 = std::operator<<>( + (std::ostream::sentry *)v317, + "__WXML_GLOBAL__.debuginfo_set = __WXML_GLOBAL__.debuginfo_set || {};"); + std::operator<<>(v138, a9); + v139 = std::operator<<>( + (std::ostream::sentry *)v317, + "var debugInfo=__WXML_GLOBAL__.debuginfo_set."); + v140 = std::operator<<(v139, a7); + v141 = std::operator<<>(v140, " || [];"); + std::operator<<>(v141, a9); + } + v274 = 0; + v305[0] = (int)v286; + while ( (int *)v305[0] != &v284 ) + { + std::_Rb_tree_header::_Rb_tree_header(&v311); + v274 = (std::ostream::sentry *)((char *)v274 + 1); + v307[1] = 0; + v307[0] = 0; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v326); + v142 = std::operator<<((std::ostream::sentry *)v327, a7); + std::operator<<>(v142, "_"); + std::ostream::operator<<(v274); + std::stringbuf::str((int)v313, v328); + std::string::basic_string((void **)v315, "gz"); + std::string::operator+=(v315, (int)v313); + v143 = std::operator<<>((std::ostream::sentry *)v317, "function "); + v144 = std::operator<<(v143, v315); + v145 = std::operator<<>(v144, "(){"); + std::operator<<>(v145, a9); + v146 = std::operator<<>((std::ostream::sentry *)v317, "if( __WXML_GLOBAL__.ops_cached."); + v147 = std::operator<<(v146, v313); + std::operator<<>(v147, ")"); + v148 = std::operator<<>((std::ostream::sentry *)v317, "return __WXML_GLOBAL__.ops_cached."); + v149 = std::operator<<(v148, v313); + std::operator<<>(v149, a9); + v150 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__.ops_cached."); + v151 = std::operator<<(v150, v313); + v152 = std::operator<<>(v151, "=[];"); + std::operator<<>(v152, a9); + std::operator<<>((std::ostream::sentry *)v317, "(function(z){var a=11;"); + if ( (a8 & 4) != 0 ) + v153 = std::operator<<>( + (std::ostream::sentry *)v317, + "function Z(ops,debugLine){z.push(['11182016',ops,debugLine])}"); + else + v153 = std::operator<<>((std::ostream::sentry *)v317, "function Z(ops){z.push(ops)}"); + std::operator<<>(v153, a9); + WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( + *(_DWORD **)(v305[0] + 40), + (int *)(v305[0] + 16), + a2, + (int)v316, + &v310, + (int *)v307, + (a8 & 4) != 0, + (int)a5); + v154 = std::operator<<>((std::ostream::sentry *)v317, "})(__WXML_GLOBAL__.ops_cached."); + v155 = std::operator<<(v154, v313); + std::operator<<>(v155, ");"); + v156 = std::operator<<>((std::ostream::sentry *)v317, "return __WXML_GLOBAL__.ops_cached."); + v157 = std::operator<<(v156, v313); + std::operator<<>(v157, a9); + v158 = std::operator<<>((std::ostream::sentry *)v317, "}"); + std::operator<<>(v158, a9); + std::string::basic_string(v319, "get_page_z_name"); + v159 = std::map::operator[]((_DWORD *)(*(_DWORD *)(v305[0] + 40) + 272), v319); + std::string::_M_assign((int)v159, (int)v315); + std::string::_M_dispose(v319); + std::string::_M_dispose((void **)v315); + std::string::_M_dispose((void **)v313); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v326); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v310); + std::_Rb_tree_iterator>>::operator++(v305); + } + v160 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__.ops_set."); + v161 = std::operator<<(v160, a7); + v162 = std::operator<<>(v161, "=z;"); + std::operator<<>(v162, a9); + v163 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__.ops_init."); + v164 = std::operator<<(v163, a7); + v165 = std::operator<<>(v164, "=true;"); + std::operator<<>(v165, a9); + if ( (a8 & 4) != 0 ) + { + v166 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__.debuginfo_set."); + v167 = std::operator<<(v166, a7); + v168 = std::operator<<>(v167, "=debugInfo;"); + std::operator<<>(v168, a9); + } + std::operator<<>((std::ostream::sentry *)v317, "var nv_require=function(){var nnm={"); + for ( j = (_DWORD *)v292[2]; j != v292; j = (_DWORD *)std::_Rb_tree_increment((int)j) ) + { + v275 = std::operator<<>((std::ostream::sentry *)v317, 34); + WXML::Rewrite::ToStringCode((int)v326, j + 4); + v170 = std::operator<<(v275, v326); + v171 = std::operator<<>(v170, 34); + std::operator<<>(v171, ":np_"); + v172 = (std::ostream::sentry *)std::ostream::operator<<(j[10]); + std::operator<<>(v172, ","); + std::string::_M_dispose((void **)v326); + } + std::operator<<>((std::ostream::sentry *)v317, "};var nom={};return function(n){"); + std::operator<<>( + (std::ostream::sentry *)v317, + "if(n[0]==='p'&&n[1]==='_'&&f_[n.slice(2)])return f_[n.slice(2)];"); + std::operator<<>( + (std::ostream::sentry *)v317, + "return function(){if(!nnm[n]) return undefined;"); + std::operator<<>( + (std::ostream::sentry *)v317, + "try{if(!nom[n])nom[n]=nnm[n]();return nom[n];}"); + std::operator<<>((std::ostream::sentry *)v317, "catch(e){"); + std::operator<<>((std::ostream::sentry *)v317, "e.message=e.message.replace(/nv_/g,'');"); + std::operator<<>( + (std::ostream::sentry *)v317, + "var tmp = e.stack.substring(0,e.stack.lastIndexOf(n));"); + std::operator<<>( + (std::ostream::sentry *)v317, + "e.stack = tmp.substring(0,tmp.lastIndexOf('\\n'));"); + std::operator<<>((std::ostream::sentry *)v317, "e.stack = e.stack.replace(/\\snv_/g,' ');"); + std::operator<<>((std::ostream::sentry *)v317, "e.stack = $gstack(e.stack);"); + v173 = std::operator<<>( + (std::ostream::sentry *)v317, + "e.stack += '\\n at ' + n.substring(2);console.error(e);}"); + std::operator<<>(v173, a9); + v174 = std::operator<<>((std::ostream::sentry *)v317, "}}}()"); + std::operator<<>(v174, a9); + for ( k = (_DWORD *)v290[2]; k != v290; k = (_DWORD *)std::_Rb_tree_increment((int)k) ) + { + v176 = std::operator<<((std::ostream::sentry *)v317, k + 10); + std::operator<<>(v176, a9); + } + v319[0] = v286; + while ( 1 ) + { + v177 = v278; + if ( v319[0] == &v284 ) + break; + std::string::basic_string(v326, (int)v319[0] + 16); + WXML::DOMLib::StrCache::Insert(v177, (int)v326); + std::string::_M_dispose((void **)v326); + v178 = *((_DWORD *)v319[0] + 10); + *(_DWORD *)(v178 + 248) = v278; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((_DWORD *)(v178 + 252), (int)v279); + WXML::DOMLib::WXMLDom::RecordAllPath(*((_DWORD *)v319[0] + 10)); + std::_Rb_tree_iterator>>::operator++((int *)v319); + } + WXML::DOMLib::StrCache::RenderPathDefine(v278, (int)v316); + v179 = 0; + v310 = (int)v286; + while ( (int *)v310 != &v284 ) + { + v180 = std::operator<<((std::ostream::sentry *)v317, a14); + std::operator<<>(v180, (char *)off_52D00E); + v276 = (std::ostream::sentry *)v278; + std::string::basic_string(v326, v310 + 16); + StrID = WXML::DOMLib::StrCache::GetStrID(v276, (int)v326); + std::ostream::operator<<(StrID); + std::string::_M_dispose((void **)v326); + v182 = std::operator<<>((std::ostream::sentry *)v317, "]]={}"); + std::operator<<>(v182, a9); + std::string::basic_string((void **)v326, "get_page_z_name"); + v183 = std::map::operator[]((_DWORD *)(*(_DWORD *)(v310 + 40) + 272), v326); + v273 = WXML::Compiler::RenderDefine( + (unsigned int **)(v310 + 40), + (int *)(v310 + 16), + &v308, + (int)a2, + (int)v316, + (int)a5, + v272 != 0, + a8, + a9, + a10, + a11, + a12, + (int)a7, + a13, + a14, + a15, + a16, + a17, + a18, + v183); + std::string::_M_dispose((void **)v326); + if ( v273 ) + goto LABEL_129; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v326); + v313[0] = (int)&v314; + v313[1] = 0; + v314 = 0; + std::operator<<>((std::ostream::sentry *)v327, "m"); + v261 = v179 + 1; + std::ostream::operator<<(v179); + std::stringbuf::str((int)v319, v328); + std::string::operator=(v313, v319); + std::string::_M_dispose(v319); + v184 = *(_DWORD **)(v310 + 40); + std::string::basic_string((void **)v315, "get_page_z_name"); + v185 = std::map::operator[]((_DWORD *)(*(_DWORD *)(v310 + 40) + 272), v315); + std::string::basic_string(v319, "r"); + v273 = WXML::DOMLib::WXMLDom::RenderMeAsFunction( + v184, + (int *)(v310 + 16), + a13, + (int)a2, + v313, + (int)v316, + &v322, + a10, + a11, + a12, + (int *)v319, + a14, + a9, + a15, + 0, + v272 != 0, + a8, + v185); + std::string::_M_dispose(v319); + std::string::_M_dispose((void **)v315); + if ( v273 ) + { + std::string::_M_dispose((void **)v313); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v326); + goto LABEL_129; + } + v186 = std::operator<<((std::ostream::sentry *)v317, a13); + std::operator<<>(v186, (char *)off_52D00E); + v187 = v278; + std::string::basic_string(v319, v310 + 16); + v188 = WXML::DOMLib::StrCache::GetStrID(v187, (int)v319); + std::ostream::operator<<(v188); + std::string::_M_dispose(v319); + v189 = std::operator<<>((std::ostream::sentry *)v317, "]]={f:"); + v190 = std::operator<<(v189, v313); + std::operator<<>(v190, ",j:[],i:[],ti:["); + v268 = 0; + for ( m = 0; ; ++m ) + { + v192 = *(_DWORD *)(v310 + 40); + v193 = *(_DWORD *)(v192 + 72); + if ( m >= (*(_DWORD *)(v192 + 76) - v193) >> 3 ) + break; + if ( std::operator==(*(_DWORD *)(v193 + 8 * m), "import") ) + { + v194 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v310 + 40) + 72) + 8 * m); + v258 = (_DWORD *)(v194 + 52); + std::string::basic_string(v319, (unsigned __int8 *)&off_523BD1); + v195 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v194 + 48), + (int)v319); + std::string::_M_dispose(v319); + if ( v195 != v258 ) + { + if ( v268 ) + std::operator<<>((std::ostream::sentry *)v317, ","); + std::operator<<>((std::ostream::sentry *)v317, "x["); + v257 = v278; + v259 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v310 + 40) + 72) + 8 * m); + std::string::basic_string((void **)v315, (unsigned __int8 *)&off_523BD1); + v196 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v259 + 48), + (int)v315) + + 10; + v197 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v196); + std::string::basic_string(v319, v197); + v198 = WXML::DOMLib::StrCache::GetStrID(v257, (int)v319); + std::ostream::operator<<(v198); + std::string::_M_dispose(v319); + std::string::_M_dispose((void **)v315); + std::operator<<>((std::ostream::sentry *)v317, "]"); + v268 = (std::ostream::sentry *)((char *)v268 + 1); + } + } + } + std::operator<<>((std::ostream::sentry *)v317, "],ic:["); + for ( n = 0; ; ++n ) + { + v200 = *(_DWORD *)(v310 + 40); + v201 = *(_DWORD *)(v200 + 72); + if ( n >= (*(_DWORD *)(v200 + 76) - v201) >> 3 ) + break; + if ( std::operator==(*(_DWORD *)(v201 + 8 * n), "include") ) + { + v202 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v310 + 40) + 72) + 8 * n); + v269 = (std::ostream::sentry *)(v202 + 52); + std::string::basic_string(v319, (unsigned __int8 *)&off_523BD1); + v203 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v202 + 48), + (int)v319); + std::string::_M_dispose(v319); + if ( v203 != v269 ) + { + if ( v273 ) + std::operator<<>((std::ostream::sentry *)v317, ","); + std::operator<<>((std::ostream::sentry *)v317, "x["); + v260 = v278; + v270 = *(std::ostream::sentry **)(*(_DWORD *)(*(_DWORD *)(v310 + 40) + 72) + 8 * n); + std::string::basic_string((void **)v315, (unsigned __int8 *)&off_523BD1); + v204 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)v270 + 12, + (int)v315) + + 10; + v205 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v204); + std::string::basic_string(v319, v205); + v206 = WXML::DOMLib::StrCache::GetStrID(v260, (int)v319); + std::ostream::operator<<(v206); + std::string::_M_dispose(v319); + std::string::_M_dispose((void **)v315); + std::operator<<>((std::ostream::sentry *)v317, "]"); + ++v273; + } + } + } + v207 = std::operator<<>((std::ostream::sentry *)v317, "]}"); + std::operator<<>(v207, a9); + std::string::_M_dispose((void **)v313); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v326); + std::_Rb_tree_iterator>>::operator++(&v310); + v179 = v261; + } + v208 = std::operator<<>((std::ostream::sentry *)v317, "if(path&&"); + v209 = std::operator<<(v208, a13); + v210 = std::operator<<>(v209, "[path]){"); + std::operator<<>(v210, a9); + if ( !a6 ) + { + v211 = std::operator<<>((std::ostream::sentry *)v317, "window.__wxml_comp_version__=0.02"); + std::operator<<>(v211, a9); + } + v212 = std::operator<<>( + (std::ostream::sentry *)v317, + "return function(env,dd,global){$gwxc=0;var root={\"tag\":\"wx-page\"};root.children=[]"); + std::operator<<>(v212, a9); + v213 = std::operator<<>((std::ostream::sentry *)v317, "var main="); + v214 = std::operator<<(v213, a13); + v215 = std::operator<<>(v214, "[path].f"); + std::operator<<>(v215, a9); + if ( (a8 & 2) != 0 ) + { + v216 = std::operator<<>((std::ostream::sentry *)v317, "cs=[]"); + std::operator<<>(v216, a9); + } + if ( (a8 & 0x10) != 0 ) + { + v217 = std::operator<<>( + (std::ostream::sentry *)v317, + "console.log(path+': benv:\\n'+JSON.stringify(env))"); + std::operator<<>(v217, a9); + } + std::operator<<>((std::ostream::sentry *)v317, "if (typeof global===\"undefined\")global={};"); + v218 = std::operator<<>((std::ostream::sentry *)v317, "global.f=$gdc("); + v219 = std::operator<<(v218, a19); + v220 = std::operator<<>(v219, "[path],\"\",1);"); + std::operator<<>(v220, a9); + if ( !a6 ) + { + v221 = std::operator<<>( + (std::ostream::sentry *)v317, + "if(typeof(window.__webview_engine_version__)!='undefined'&&window.__webview_engine_version__+1e-6>=0.02+1e-" + "6&&window.__mergeData__)"); + std::operator<<>(v221, a9); + v222 = std::operator<<>((std::ostream::sentry *)v317, "{"); + std::operator<<>(v222, a9); + v223 = std::operator<<>((std::ostream::sentry *)v317, "env=window.__mergeData__(env,dd);"); + std::operator<<>(v223, a9); + v224 = std::operator<<>((std::ostream::sentry *)v317, "}"); + std::operator<<>(v224, a9); + } + v225 = std::operator<<>((std::ostream::sentry *)v317, "try{"); + std::operator<<>(v225, a9); + if ( (a8 & 0x10) != 0 ) + { + v226 = std::operator<<>( + (std::ostream::sentry *)v317, + "console.log(path+': aenv:\\n'+JSON.stringify(env)+', '+JSON.stringify(dd))"); + std::operator<<>(v226, a9); + } + if ( (a8 & 0x80) != 0 ) + { + v227 = std::operator<<>((std::ostream::sentry *)v317, "if(__WXML_GLOBAL__."); + v228 = std::operator<<>(v227, "before_calculate"); + std::operator<<>(v228, ")"); + v229 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__."); + v230 = std::operator<<>(v229, "before_calculate"); + v231 = std::operator<<>(v230, "(path, env)"); + std::operator<<>(v231, a9); + } + v232 = std::operator<<>((std::ostream::sentry *)v317, "main(env,{},root,global);"); + std::operator<<>(v232, a9); + if ( (a8 & 0x80) != 0 ) + { + v233 = std::operator<<>((std::ostream::sentry *)v317, "if(__WXML_GLOBAL__."); + v234 = std::operator<<>(v233, "after_calculate"); + std::operator<<>(v234, ")"); + v235 = std::operator<<>((std::ostream::sentry *)v317, "__WXML_GLOBAL__."); + v236 = std::operator<<>(v235, "after_calculate"); + v237 = std::operator<<>(v236, "(path, root)"); + std::operator<<>(v237, a9); + } + v238 = std::operator<<>((std::ostream::sentry *)v317, "_tsd(root)"); + std::operator<<>(v238, a9); + if ( !a6 ) + { + v239 = std::operator<<>( + (std::ostream::sentry *)v317, + "if(typeof(window.__webview_engine_version__)=='undefined'|| window.__webview_engine_version__+1e-6<0.01+1e-" + "6){return _ev(root);}"); + std::operator<<>(v239, a9); + } + v240 = std::operator<<>((std::ostream::sentry *)v317, "}catch(err){"); + std::operator<<>(v240, a9); + if ( (a8 & 2) != 0 ) + { + v241 = std::operator<<>((std::ostream::sentry *)v317, "console.log(cs, env);"); + std::operator<<>(v241, a9); + } + v242 = std::operator<<>((std::ostream::sentry *)v317, "console.log(err)"); + std::operator<<>(v242, a9); + if ( (a8 & 2) != 0 ) + { + v243 = std::operator<<>((std::ostream::sentry *)v317, "throw err"); + std::operator<<>(v243, a9); + } + v244 = std::operator<<>((std::ostream::sentry *)v317, "}"); + std::operator<<>(v244, a9); + if ( (a8 & 0x10) != 0 ) + { + v245 = std::operator<<>( + (std::ostream::sentry *)v317, + "console.log(path+': resp:\\n'+JSON.stringify(root))"); + std::operator<<>(v245, a9); + } + v246 = std::operator<<>((std::ostream::sentry *)v317, "return root;"); + std::operator<<>(v246, a9); + v247 = std::operator<<>((std::ostream::sentry *)v317, "}"); + std::operator<<>(v247, a9); + v248 = std::operator<<>((std::ostream::sentry *)v317, "}"); + std::operator<<>(v248, a9); + v249 = std::operator<<>((std::ostream::sentry *)v317, "}"); + std::operator<<>(v249, a9); + if ( (a8 & 8) != 0 ) + { + v326[0] = (int)v286; + while ( (int *)v326[0] != &v284 ) + { + v250 = std::operator<<>((std::ostream::sentry *)v317, "//"); + v251 = std::operator<<(v250, (int *)(v326[0] + 16)); + v252 = std::operator<<>(v251, ":"); + std::endl>(v252); + WXML::DOMLib::WXMLDom::Print(*(_DWORD **)(v326[0] + 40), 0, "//", v316); + std::_Rb_tree_iterator>>::operator++(v326); + } + } + std::stringbuf::str((int)v326, v318); + std::string::operator=(a3, v326); + std::string::_M_dispose((void **)v326); + v273 = 0; +LABEL_129: + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v308); + WXML::NameAllocator::~NameAllocator((int)&v322); +LABEL_130: + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v291); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v289); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v279); + std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(v288[1]); + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(v285); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v316); + return v273; +} +// 410AB9: variable 'v254' is possibly undefined +// 410ACC: variable 'v20' is possibly undefined +// 410C5C: variable 'v255' is possibly undefined +// 410C9B: variable 'v28' is possibly undefined +// 4606E0: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); +// 523BD1: using guessed type void *off_523BD1; +// 52CB31: using guessed type void *off_52CB31; +// 410A55: using guessed type char var_310[4]; +// 410A55: using guessed type char var_240[4]; +// 410A55: using guessed type int var_23C[49]; +// 410A55: using guessed type int var_30C[49]; +// 410A55: using guessed type char var_170[4]; +// 410A55: using guessed type _DWORD var_16C[91]; +// 410A55: using guessed type char var_3E0[4]; +// 410A55: using guessed type int var_444[5]; +// 410A55: using guessed type int var_3DC[49]; + +//----- (00413A7C) -------------------------------------------------------- +unsigned int __cdecl WXML::Compiler::ParseAndResolveWxmlDependencies( + int a1, + unsigned int *a2, + _DWORD *a3, + _DWORD *a4, + _DWORD *a5) +{ + int v5; // edi + bool v6; // si + unsigned int v7; // eax + _DWORD *v9; // ebx + _DWORD *v10; // esi + char *v11; // eax + void **v12; // esi + int insert_hint_unique_pos; // eax + _DWORD *v14; // edx + void (__cdecl *v15)(void *); // ecx + char v16; // al + int v17; // ecx + int v18; // eax + volatile signed __int32 *v19; // edx + volatile signed __int32 *v20; // eax + _DWORD *v21; // ebx + _DWORD *v22; // esi + char *v23; // eax + void **v24; // esi + int v25; // eax + _DWORD *v26; // edx + _DWORD *v27; // edi + char v28; // al + int v29; // ecx + volatile signed __int32 *v30; // edx + volatile signed __int32 *v31; // eax + int j; // ebx + unsigned int v33; // esi + void *v34; // edi + unsigned int v35; // edx + _DWORD *v36; // eax + char *v37; // ecx + int v38; // esi + char *v39; // edi + volatile signed __int32 **k; // esi + _DWORD *v41; // eax + int v42; // edx + void (__cdecl *v43)(void *); // [esp+4h] [ebp-74h] + _DWORD *v44; // [esp+20h] [ebp-58h] + _DWORD *v45; // [esp+20h] [ebp-58h] + _DWORD *v46; // [esp+20h] [ebp-58h] + _DWORD *v47; // [esp+28h] [ebp-50h] + int v48; // [esp+28h] [ebp-50h] + _DWORD *v49; // [esp+28h] [ebp-50h] + int v50; // [esp+28h] [ebp-50h] + _DWORD *i; // [esp+2Ch] [ebp-4Ch] + unsigned int v52; // [esp+2Ch] [ebp-4Ch] + int v53; // [esp+34h] [ebp-44h] BYREF + volatile signed __int32 *v54; // [esp+38h] [ebp-40h] BYREF + char *v55; // [esp+3Ch] [ebp-3Ch] BYREF + int v56; // [esp+40h] [ebp-38h] + int v57; // [esp+44h] [ebp-34h] + int v58; // [esp+48h] [ebp-30h] BYREF + volatile signed __int32 *v59[4]; // [esp+4Ch] [ebp-2Ch] BYREF + unsigned int v60; // [esp+5Ch] [ebp-1Ch] + + std::string::operator=(a2, (char *)&byte_523BD0); + for ( i = *(_DWORD **)(a1 + 12); (_DWORD *)(a1 + 4) != i; i = (_DWORD *)std::_Rb_tree_increment(i) ) + { + v5 = (int)(i + 4); + std::string::substr((void **)&v58, i + 4, i[5] - 5, 0xFFFFFFFF); + v6 = std::operator==((int)&v58, ".wxml"); + std::string::_M_dispose((void **)&v58); + if ( v6 ) + { + v55 = 0; + v56 = 0; + v57 = 0; + v53 = 0; + v54 = 0; + v7 = WXML::Compiler::ParseWxmlSource(v5, i + 10, a2, &v55, &v53); + if ( v7 ) + { + v52 = v7; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v54); + std::vector::~vector((void **)&v55); + return v52; + } + v47 = a3 + 1; + v9 = a3 + 1; + v10 = (_DWORD *)a3[2]; + while ( v10 ) + { + if ( (unsigned __int8)std::operator<((int)(v10 + 4), v5) ) + { + v10 = (_DWORD *)v10[3]; + } + else + { + v9 = v10; + v10 = (_DWORD *)v10[2]; + } + } + if ( v47 == v9 || (unsigned __int8)std::operator<(v5, (int)(v9 + 4)) ) + { + v44 = v9; + v11 = (char *)operator new((struct type_info *)0x30, v43); + v12 = (void **)(v11 + 16); + v9 = v11; + std::string::basic_string((_DWORD *)v11 + 4, v5); + v9[10] = 0; + v9[11] = 0; + insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + a3, + v44, + (int)v12); + v43 = v15; + if ( v14 ) + { + v16 = v47 == v14 || insert_hint_unique_pos != 0; + if ( !v16 ) + { + v45 = v14; + v16 = std::operator<((int)v12, (int)(v14 + 4)); + v14 = v45; + } + std::_Rb_tree_insert_and_rebalance(v16, v9, v14, v47); + ++a3[5]; + } + else + { + v48 = insert_hint_unique_pos; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v9 + 11); + std::string::_M_dispose(v12); + operator delete(v9); + v9 = (_DWORD *)v48; + } + } + v17 = v9[10]; + v18 = v53; + v53 = 0; + v19 = v54; + v54 = 0; + v58 = v17; + v9[10] = v18; + v20 = (volatile signed __int32 *)v9[11]; + v9[11] = v19; + v59[0] = v20; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v59); + v49 = a4 + 1; + v21 = a4 + 1; + v22 = (_DWORD *)a4[2]; + while ( v22 ) + { + if ( (unsigned __int8)std::operator<((int)(v22 + 4), v5) ) + { + v22 = (_DWORD *)v22[3]; + } + else + { + v21 = v22; + v22 = (_DWORD *)v22[2]; + } + } + if ( v49 == v21 || (unsigned __int8)std::operator<(v5, (int)(v21 + 4)) ) + { + v46 = v21; + v23 = (char *)operator new((struct type_info *)0x34, v43); + v24 = (void **)(v23 + 16); + v21 = v23; + std::string::basic_string((_DWORD *)v23 + 4, v5); + v21[10] = 0; + v21[11] = 0; + v21[12] = 0; + v25 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + a4, + v46, + (int)v24); + v27 = v26; + if ( v26 ) + { + v28 = v49 == v26 || v25 != 0; + if ( !v28 ) + v28 = std::operator<((int)v24, (int)(v26 + 4)); + std::_Rb_tree_insert_and_rebalance(v28, v21, v27, v49); + ++a4[5]; + } + else + { + v50 = v25; + std::vector::~vector((void **)v21 + 10); + std::string::_M_dispose(v24); + operator delete(v21); + v21 = (_DWORD *)v50; + } + } + v29 = v21[10]; + v30 = (volatile signed __int32 *)v21[11]; + v31 = (volatile signed __int32 *)v21[12]; + v21[10] = v55; + v21[11] = v56; + v21[12] = v57; + v58 = v29; + v59[0] = v30; + v59[1] = v31; + v55 = 0; + v56 = 0; + v57 = 0; + std::vector::~vector((void **)&v58); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v54); + std::vector::~vector((void **)&v55); + } + } + for ( j = a3[3]; a3 + 1 != (_DWORD *)j; j = std::_Rb_tree_increment(j) ) + { + std::_Rb_tree_header::_Rb_tree_header(v59); + WXML::DOMLib::recurseDependencies((int *)(j + 40), (int *)(j + 16), &v58); + v33 = v60; + if ( v60 ) + { + if ( v60 > 0x5555555 ) + std::__throw_length_error((std::length_error *)"cannot create std::vector larger than max_size()"); + v55 = 0; + v56 = 0; + v57 = 0; + std::_Vector_base::_M_create_storage(&v55, v60); + v34 = v55; + v35 = v33; + v36 = v55; + do + { + v37 = (char *)(v36 + 2); + v36[1] = 0; + v36 += 6; + *(v36 - 6) = v37; + *((_BYTE *)v36 - 16) = 0; + --v35; + } + while ( v35 ); + v38 = (int)v34 + 24 * v33; + v39 = v55; + v56 = v38; + for ( k = (volatile signed __int32 **)v59[2]; k != v59; k = (volatile signed __int32 **)std::_Rb_tree_increment(k) ) + { + std::string::_M_assign((int)v39, (int)(k + 4)); + v39 += 24; + } + v41 = std::map>::operator[](a5, j + 16); + std::vector::operator=((int)v41, (int *)&v55); + std::vector::~vector((void ***)&v55, v42); + } + std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&v58); + } + return 0; +} +// 413BC0: variable 'v43' is possibly undefined +// 413BF5: variable 'v15' is possibly undefined +// 413BF9: variable 'v14' is possibly undefined +// 413D48: variable 'v26' is possibly undefined +// 413F20: variable 'v42' is possibly undefined +// 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); + +//----- (00413F7A) -------------------------------------------------------- +#error "414028: call analysis failed (funcsize=52)" + +//----- (00414049) -------------------------------------------------------- +int __cdecl WXML::Compiler::CompileLazyWithParsed( + _DWORD *a1, + _DWORD *a2, + int a3, + int a4, + unsigned int *a5, + _DWORD *a6, + _DWORD *a7, + int a8, + _DWORD *a9, + std::_Rb_tree_header *a10, + char a11, + char a12, + _DWORD *a13, + int a14, + _DWORD *a15, + char a16, + int a17, + int a18, + char a19, + int *a20, + int *a21, + int *a22, + int *a23, + int *a24, + int *a25, + int a26, + int a27, + int a28, + int *a29) +{ + char v29; // dl + int v30; // esi + char v31; // al + std::ostream::sentry *v32; // ecx + std::ostream::sentry *v33; // edx + std::ostream::sentry *v34; // edi + char v35; // al + int *v36; // edx + int *v37; // edi + int v38; // eax + int *v39; // ebx + _DWORD *v40; // eax + _DWORD *v41; // eax + int v42; // edx + int v43; // esi + _DWORD *v44; // eax + _DWORD *v45; // eax + _DWORD *v46; // eax + int v47; // edi + _DWORD *v48; // eax + int v49; // edx + int v50; // esi + int insert_hint_unique_pos; // eax + int *v52; // edx + _DWORD *v53; // edi + int i; // ebx + int v55; // esi + int *v56; // edx + char v57; // al + int v58; // eax + int *p_k; // esi + _DWORD *v60; // eax + int v61; // edx + int v62; // ebx + int *v63; // eax + _DWORD *v64; // eax + std::ostream::sentry *v65; // edi + std::ostream::sentry *v66; // ebx + int m; // ebx + int v68; // edi + int *v69; // eax + _DWORD *v70; // edi + int *v71; // eax + std::ostream::sentry *v72; // ebx + std::ostream::sentry *v73; // eax + std::ostream::sentry *v74; // eax + std::ostream::sentry *v75; // eax + _DWORD *v76; // eax + std::ostream::sentry *v77; // esi + std::ostream::sentry *v78; // eax + std::ostream::sentry *v79; // eax + std::ostream::sentry *v80; // eax + std::ostream::sentry *v81; // eax + std::ostream::sentry *v82; // eax + _DWORD *v83; // eax + std::ostream::sentry *v84; // eax + std::ostream::sentry *v85; // eax + std::ostream::sentry *v86; // eax + std::ostream::sentry *v87; // eax + std::ostream::sentry *v88; // eax + std::ostream::sentry *v89; // eax + std::ostream::sentry *v90; // eax + std::ostream::sentry *v91; // eax + std::ostream::sentry *v92; // eax + std::ostream::sentry *v93; // eax + std::ostream::sentry *v94; // eax + std::ostream::sentry *v95; // eax + std::ostream::sentry *v96; // eax + std::ostream::sentry *v97; // eax + std::ostream::sentry *v98; // eax + std::ostream::sentry *v99; // eax + std::ostream::sentry *v100; // eax + std::ostream::sentry *v101; // eax + std::ostream::sentry *v102; // eax + std::ostream::sentry *v103; // eax + std::ostream::sentry *v104; // eax + std::ostream::sentry *v105; // eax + std::ostream::sentry *v106; // eax + std::ostream::sentry *v107; // eax + std::ostream::sentry *v108; // eax + std::ostream::sentry *v109; // eax + std::ostream::sentry *v110; // eax + std::ostream::sentry *v111; // eax + std::ostream::sentry *v112; // eax + std::ostream::sentry *v113; // eax + std::ostream::sentry *v114; // eax + std::ostream::sentry *v115; // eax + std::ostream::sentry *v116; // eax + std::ostream::sentry *v117; // eax + int **v118; // eax + int *v119; // ebx + std::ostream::sentry *v120; // eax + std::ostream::sentry *v121; // eax + std::ostream::sentry *v122; // eax + std::ostream::sentry *v123; // eax + std::ostream::sentry *v124; // eax + std::ostream::sentry *v125; // eax + std::ostream::sentry *v126; // eax + std::ostream::sentry *v127; // eax + std::ostream::sentry *v128; // eax + std::ostream::sentry *v129; // eax + std::ostream::sentry *v130; // eax + std::ostream::sentry *v131; // eax + std::ostream::sentry *v132; // eax + std::ostream::sentry *v133; // eax + std::ostream::sentry *v134; // eax + std::ostream::sentry *v135; // eax + _DWORD *v136; // eax + std::ostream::sentry *v137; // eax + std::ostream::sentry *v138; // eax + std::ostream::sentry *v139; // eax + std::ostream::sentry *v140; // eax + std::ostream::sentry *v141; // eax + std::ostream::sentry *v142; // eax + std::ostream::sentry *v143; // eax + std::ostream::sentry *v144; // eax + std::ostream::sentry *v145; // eax + _DWORD *ii; // ebx + std::ostream::sentry *v147; // eax + std::ostream::sentry *v148; // eax + std::ostream::sentry *v149; // eax + std::ostream::sentry *v150; // eax + std::ostream::sentry *v151; // eax + _DWORD *jj; // ebx + std::ostream::sentry *v153; // eax + _DWORD *v154; // eax + _DWORD *v155; // eax + int *v156; // eax + int v157; // ebx + _DWORD *v158; // ecx + int *v159; // eax + int **v160; // eax + std::ostream::sentry *v161; // eax + int StrID; // eax + std::ostream::sentry *v163; // eax + int *v164; // eax + unsigned int *v165; // eax + int *v166; // ebx + std::ostream::sentry *v167; // eax + int v168; // eax + std::ostream::sentry *v169; // eax + std::ostream::sentry *v170; // eax + unsigned int v171; // edx + int v172; // ebx + _DWORD *v173; // ebx + _DWORD *v174; // ecx + int v175; // eax + int v176; // eax + unsigned int v177; // edx + int v178; // ebx + _DWORD *v179; // ebx + _DWORD *v180; // ecx + int v181; // eax + int v182; // eax + std::ostream::sentry *v183; // eax + std::ostream::sentry *v184; // eax + std::ostream::sentry *v185; // eax + std::ostream::sentry *v186; // eax + std::ostream::sentry *v187; // eax + std::ostream::sentry *v188; // eax + std::ostream::sentry *v189; // eax + std::ostream::sentry *v190; // eax + std::ostream::sentry *v191; // eax + std::ostream::sentry *v192; // eax + std::ostream::sentry *v193; // eax + std::ostream::sentry *v194; // eax + std::ostream::sentry *v195; // eax + std::ostream::sentry *v196; // eax + std::ostream::sentry *v197; // eax + std::ostream::sentry *v198; // eax + std::ostream::sentry *v199; // eax + std::ostream::sentry *v200; // eax + std::ostream::sentry *v201; // eax + std::ostream::sentry *v202; // eax + std::ostream::sentry *v203; // eax + std::ostream::sentry *v204; // eax + std::ostream::sentry *v205; // eax + std::ostream::sentry *v206; // eax + std::ostream::sentry *v207; // eax + std::ostream::sentry *v208; // eax + std::ostream::sentry *v209; // eax + std::ostream::sentry *v210; // eax + std::ostream::sentry *v211; // eax + std::ostream::sentry *v212; // eax + std::ostream::sentry *v213; // eax + std::ostream::sentry *v214; // eax + std::ostream::sentry *v215; // eax + std::ostream::sentry *v216; // eax + std::ostream::sentry *v217; // eax + std::ostream::sentry *v218; // eax + std::ostream::sentry *v219; // eax + std::ostream::sentry *v220; // eax + int **v221; // eax + int *v222; // ebx + std::ostream::sentry *v223; // eax + std::ostream::sentry *v224; // eax + std::ostream::sentry *v225; // eax + _DWORD *v226; // eax + _DWORD *v227; // eax + bool v228; // bl + std::ostream::sentry *v229; // esi + char *v230; // eax + std::ostream::sentry *v231; // eax + std::ostream::sentry *v232; // eax + std::ostream::sentry *v233; // eax + int *nn; // ebx + _DWORD *v235; // eax + _DWORD *v236; // eax + _DWORD *v237; // eax + void (__cdecl *v239)(void *); // [esp+4h] [ebp-1D4h] + void (__cdecl *v240)(void *); // [esp+4h] [ebp-1D4h] + _DWORD *v241; // [esp+54h] [ebp-184h] + _DWORD *v242; // [esp+54h] [ebp-184h] + int v243; // [esp+58h] [ebp-180h] + int *v244; // [esp+5Ch] [ebp-17Ch] + int v245; // [esp+60h] [ebp-178h] + _DWORD *v246; // [esp+60h] [ebp-178h] + _DWORD *v247; // [esp+60h] [ebp-178h] + int v248; // [esp+64h] [ebp-174h] + int v249; // [esp+64h] [ebp-174h] + int v250; // [esp+68h] [ebp-170h] + std::ostream::sentry *v251; // [esp+6Ch] [ebp-16Ch] + int *v252; // [esp+6Ch] [ebp-16Ch] + char v253; // [esp+70h] [ebp-168h] + int v254; // [esp+7Ch] [ebp-15Ch] + bool v255; // [esp+80h] [ebp-158h] + int *v256; // [esp+84h] [ebp-154h] + int v257; // [esp+84h] [ebp-154h] + _DWORD *v258; // [esp+84h] [ebp-154h] + unsigned int v259; // [esp+84h] [ebp-154h] + unsigned int mm; // [esp+84h] [ebp-154h] + std::ostream::sentry *v261; // [esp+88h] [ebp-150h] + int *v262; // [esp+88h] [ebp-150h] + int v263; // [esp+88h] [ebp-150h] + int *v264; // [esp+88h] [ebp-150h] + int v265; // [esp+88h] [ebp-150h] + char *v266; // [esp+88h] [ebp-150h] + int v267; // [esp+8Ch] [ebp-14Ch] + int *v268; // [esp+90h] [ebp-148h] + int *kk; // [esp+90h] [ebp-148h] + int v270; // [esp+94h] [ebp-144h] + char v271; // [esp+98h] [ebp-140h] + int v272; // [esp+98h] [ebp-140h] + int *v273; // [esp+98h] [ebp-140h] + int v274; // [esp+98h] [ebp-140h] + _DWORD *v275; // [esp+98h] [ebp-140h] + _DWORD *v276; // [esp+98h] [ebp-140h] + int v277; // [esp+98h] [ebp-140h] + unsigned int **v278; // [esp+98h] [ebp-140h] + bool v279; // [esp+9Ch] [ebp-13Ch] + std::ostream::sentry *v280; // [esp+9Ch] [ebp-13Ch] + bool v281; // [esp+9Ch] [ebp-13Ch] + int v282; // [esp+9Ch] [ebp-13Ch] + std::ostream::sentry *v283; // [esp+9Ch] [ebp-13Ch] + std::ostream::sentry *v284; // [esp+9Ch] [ebp-13Ch] + std::ostream::sentry *v285; // [esp+9Ch] [ebp-13Ch] + std::ostream::sentry *v286; // [esp+9Ch] [ebp-13Ch] + std::ostream::sentry *v287; // [esp+9Ch] [ebp-13Ch] + std::ostream::sentry *v288; // [esp+9Ch] [ebp-13Ch] + unsigned int *v289; // [esp+9Ch] [ebp-13Ch] + std::ostream::sentry *v290; // [esp+9Ch] [ebp-13Ch] + int n; // [esp+A8h] [ebp-130h] BYREF + int v292[2]; // [esp+ACh] [ebp-12Ch] BYREF + int v293; // [esp+B4h] [ebp-124h] BYREF + int v294; // [esp+B8h] [ebp-120h] BYREF + void *v295; // [esp+BCh] [ebp-11Ch] + int *v296; // [esp+C0h] [ebp-118h] + int v297; // [esp+CCh] [ebp-10Ch] BYREF + _DWORD v298[5]; // [esp+D0h] [ebp-108h] BYREF + int v299; // [esp+E4h] [ebp-F4h] BYREF + _DWORD v300[5]; // [esp+E8h] [ebp-F0h] BYREF + int v301; // [esp+FCh] [ebp-DCh] BYREF + int v302[5]; // [esp+100h] [ebp-D8h] BYREF + int v303[6]; // [esp+114h] [ebp-C4h] BYREF + int v304; // [esp+12Ch] [ebp-ACh] BYREF + volatile signed __int32 *v305[5]; // [esp+130h] [ebp-A8h] BYREF + int v306[6]; // [esp+144h] [ebp-94h] BYREF + int v307; // [esp+15Ch] [ebp-7Ch] BYREF + int v308; // [esp+160h] [ebp-78h] BYREF + _DWORD *v309; // [esp+164h] [ebp-74h] + int v310; // [esp+170h] [ebp-68h] + int j; // [esp+174h] [ebp-64h] BYREF + volatile signed __int32 *v312; // [esp+178h] [ebp-60h] BYREF + int v313; // [esp+17Ch] [ebp-5Ch] + int k; // [esp+18Ch] [ebp-4Ch] BYREF + volatile signed __int32 *v315[18]; // [esp+190h] [ebp-48h] BYREF + + std::_Rb_tree_header::_Rb_tree_header(&v294); + std::_Rb_tree_header::_Rb_tree_header(v298); + std::_Rb_tree_header::_Rb_tree_header(v300); + v271 = v29; + v30 = a1[3]; + v253 = v31; + while ( a1 + 1 != (_DWORD *)v30 ) + { + std::string::substr((void **)&v304, (_DWORD *)(v30 + 16), *(_DWORD *)(v30 + 20) - 5, 0xFFFFFFFF); + v279 = std::operator==((int)&v304, ".wxml"); + std::string::_M_dispose((void **)&v304); + if ( v279 ) + { + v280 = (std::ostream::sentry *)(a3 + 4); + v32 = (std::ostream::sentry *)(a3 + 4); + v33 = *(std::ostream::sentry **)(a3 + 8); + v34 = v33; + while ( v34 ) + { + v251 = v32; + v261 = v33; + v35 = std::operator<((int)v34 + 16, v30 + 16); + v33 = v261; + v32 = v251; + if ( v35 ) + { + v34 = (std::ostream::sentry *)*((_DWORD *)v34 + 3); + } + else + { + v32 = v34; + v34 = (std::ostream::sentry *)*((_DWORD *)v34 + 2); + } + } + v262 = (int *)v33; + if ( v280 == v32 || (unsigned __int8)std::operator<(v30 + 16, (int)v32 + 16) ) + { + std::operator+((int)&j, "Inner error: wxs source token for '", v30 + 16); + v236 = std::string::append(&j, "' not found."); + std::string::basic_string(&k, v236); + std::string::operator=(a5, &k); + std::string::_M_dispose((void **)&k); + std::string::_M_dispose((void **)&j); + v282 = -1152; + goto LABEL_184; + } + v36 = v262; + v37 = (int *)(a3 + 4); + while ( v36 ) + { + v252 = v36; + if ( (unsigned __int8)std::operator<((int)(v36 + 4), v30 + 16) ) + { + v36 = (int *)v252[3]; + } + else + { + v37 = v252; + v36 = (int *)v252[2]; + } + } + if ( v280 == (std::ostream::sentry *)v37 || (unsigned __int8)std::operator<(v30 + 16, (int)(v37 + 4)) ) + std::__throw_out_of_range((std::out_of_range *)"map::at"); + v38 = WXML::Compiler::ProcessWxsInline( + (int *)(v30 + 16), + v37 + 10, + v271, + a17, + a29, + a1, + a5, + &v297, + &v299, + (a18 & 4) != 0, + v253); + } + else + { + std::string::substr((void **)v306, (_DWORD *)(v30 + 16), *(_DWORD *)(v30 + 20) - 4, 0xFFFFFFFF); + v281 = std::operator==((int)v306, ".wxs"); + std::string::_M_dispose((void **)v306); + if ( !v281 ) + goto LABEL_21; + v38 = WXML::Compiler::ProcessWxsFile((int *)(v30 + 16), v30 + 40, v271, (int)a5, &v297, &v299); + } + v282 = v38; + if ( v38 ) + goto LABEL_184; +LABEL_21: + v30 = std::_Rb_tree_increment(v30); + } + v283 = (std::ostream::sentry *)(a8 + 4); + if ( !a12 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(void **)(a8 + 8)); + *(_DWORD *)(a8 + 8) = 0; + *(_DWORD *)(a8 + 12) = v283; + *(_DWORD *)(a8 + 16) = v283; + *(_DWORD *)(a8 + 20) = 0; + std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>(&j); + v39 = &k; + std::string::basic_string((void **)&k, "__COMMON__"); + v40 = std::map,std::allocator>>>::operator[]( + &v293, + &k); + std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=( + v40, + &j); + std::string::_M_dispose((void **)&k); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v312); + j = 0; + v312 = 0; + v313 = 0; + std::string::basic_string((void **)&k, "__COMMON__"); + v41 = std::map>::operator[]((_DWORD *)a8, &k); + std::vector::_M_move_assign(v41, &j); + std::string::_M_dispose((void **)&k); + std::vector::~vector((void ***)&j, v42); + if ( a11 ) + { + if ( a13[1] && *(_BYTE *)*a13 == 47 ) + std::string::substr((void **)&k, a13, 1u, 0xFFFFFFFF); + else + std::string::basic_string(&k, (int)a13); + v39 = &k; + WXML::Compiler::CalculateOutputChunkKeys(a10, (int)&k, a4, a14, (_DWORD *)a8); + std::string::_M_dispose((void **)&k); + } + else + { + v272 = *((_DWORD *)a10 + 1); + v43 = *(_DWORD *)a10; + while ( v43 != v272 ) + { + std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>(&k); + v44 = std::map,std::allocator>>>::operator[]( + &v293, + v43); + std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=( + v44, + &k); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v315); + std::operator+((int)&j, "./", v43); + v45 = std::string::append(&j, ".wxml"); + std::string::basic_string(&k, v45); + v307 = 0; + v308 = 0; + v309 = 0; + v46 = __gnu_cxx::new_allocator::allocate(1u); + v47 = (int)(v46 + 6); + v307 = (int)v46; + v309 = v46 + 6; + std::string::basic_string(v46, (int)&k); + v39 = &v307; + v308 = v47; + v48 = std::map>::operator[]((_DWORD *)a8, v43); + v43 += 24; + std::vector::_M_move_assign(v48, &v307); + std::vector::~vector((void ***)&v307, v49); + std::string::_M_dispose((void **)&k); + std::string::_M_dispose((void **)&j); + } + } + v263 = *((_DWORD *)a10 + 1); + v50 = *(_DWORD *)a10; + std::_Rb_tree_header::_Rb_tree_header(&v308); + while ( v263 != v50 ) + { + insert_hint_unique_pos = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_hint_unique_pos( + &v307, + &v308, + v50); + v273 = v52; + v239 = (void (__cdecl *)(void *))v39; + if ( v52 ) + { + LOBYTE(v39) = v52 == &v308 || insert_hint_unique_pos != 0; + if ( !(_BYTE)v39 ) + LOBYTE(v39) = std::operator<(v50, (int)(v52 + 4)); + v53 = operator new((struct type_info *)0x28, v239); + std::string::basic_string(v53 + 4, v50); + v39 = (int *)(unsigned __int8)v39; + std::_Rb_tree_insert_and_rebalance((char)v39, v53, v273, &v308); + ++v310; + } + v50 += 24; + } + for ( i = a2[3]; a2 + 1 != (_DWORD *)i; i = std::_Rb_tree_increment(i) ) + { + std::string::substr((void **)&j, (_DWORD *)(i + 16), 2u, *(_DWORD *)(i + 20) - 7); + v55 = (int)v309; + v56 = &v308; + while ( v55 ) + { + v264 = v56; + v57 = std::operator<(v55 + 16, (int)&j); + v56 = v264; + if ( v57 ) + { + v55 = *(_DWORD *)(v55 + 12); + } + else + { + v56 = (int *)v55; + v55 = *(_DWORD *)(v55 + 8); + } + } + if ( v56 == &v308 || (unsigned __int8)std::operator<((int)&j, (int)(v56 + 4)) ) + { + std::string::basic_string((void **)&k, "__COMMON__"); + v237 = std::map>::operator[]((_DWORD *)a8, &k); + std::vector::push_back(v237, i + 16); + std::string::_M_dispose((void **)&k); + } + std::string::_M_dispose((void **)&j); + } + std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&v307); + } + std::string::basic_string((void **)&v307, "__COMMON__"); + v58 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_lower_bound( + *(_DWORD *)(a8 + 8), + (int)v283, + (int)&v307); + p_k = (int *)v58; + if ( v283 != (std::ostream::sentry *)v58 && (unsigned __int8)std::operator<((int)&v307, v58 + 16) ) + p_k = (int *)(a8 + 4); + std::string::_M_dispose((void **)&v307); + if ( v283 == (std::ostream::sentry *)p_k ) + { + j = 0; + v312 = 0; + v313 = 0; + std::string::basic_string((void **)&k, "__COMMON__"); + v60 = std::map>::operator[]((_DWORD *)a8, &k); + std::vector::_M_move_assign(v60, &j); + std::string::_M_dispose((void **)&k); + std::vector::~vector((void ***)&j, v61); + } + for ( j = *(_DWORD *)(a8 + 12); + ; + std::_Rb_tree_iterator>>::operator++(&j) ) + { + v254 = j; + if ( v283 == (std::ostream::sentry *)j ) + break; + p_k = &v294; + v62 = j + 16; + v63 = (int *)std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound( + (int)v295, + (int)&v294, + j + 16); + if ( v63 == &v294 || (unsigned __int8)std::operator<(v62, (int)(v63 + 4)) ) + { + std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::__shared_ptr,std::allocator>>>(&k); + v64 = std::map,std::allocator>>>::operator[]( + &v293, + v62); + std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=( + v64, + &k); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v315); + } + } + std::string::basic_string((void **)&k, "__COMMON__"); + v265 = *std::map,std::allocator>>>::operator[]( + &v293, + &k); + std::string::_M_dispose((void **)&k); + for ( k = *(_DWORD *)(a8 + 12); + v254 != k; + std::_Rb_tree_iterator>>::operator++(&k) ) + { + p_k = *(int **)(k + 40); + v256 = *(int **)(k + 44); + v284 = (std::ostream::sentry *)(a2 + 1); + while ( 1 ) + { + v274 = (int)p_k; + if ( p_k == v256 ) + break; + v65 = (std::ostream::sentry *)(a2 + 1); + v66 = (std::ostream::sentry *)a2[2]; + while ( v66 ) + { + if ( (unsigned __int8)std::operator<((int)v66 + 16, (int)p_k) ) + { + v66 = (std::ostream::sentry *)*((_DWORD *)v66 + 3); + } + else + { + v65 = v66; + v66 = (std::ostream::sentry *)*((_DWORD *)v66 + 2); + } + } + if ( v65 != v284 && (unsigned __int8)std::operator<((int)p_k, (int)v65 + 16) ) + v65 = (std::ostream::sentry *)(a2 + 1); + p_k += 6; + if ( v284 == v65 ) + { + std::operator+((int)&j, "WXML file not found: ", v274); + std::string::operator=(a5, &j); + std::string::_M_dispose((void **)&j); + v282 = -1260; + goto LABEL_184; + } + } + } + std::_Rb_tree_header::_Rb_tree_header(v302); + for ( m = a2[3]; a2 + 1 != (_DWORD *)m; m = std::_Rb_tree_increment(m) ) + { + WXML::DOMLib::WXMLDom::RewriteTree(*(_DWORD *)(m + 40), (const char **)p_k); + v68 = *(_DWORD *)(m + 40); + p_k = &k; + std::string::basic_string((void **)&k, (unsigned __int8 *)&off_52CB31); + v69 = std::map>::operator[](a9, &k); + WXML::DOMLib::WXMLDom::MarkIfHasDescendant(v68, v69); + std::string::_M_dispose((void **)&k); + if ( a16 ) + { + v70 = *(_DWORD **)(m + 40); + std::string::basic_string((void **)&k, (unsigned __int8 *)&off_52CB31); + v71 = std::map>::operator[](a9, &k); + WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(v70, v71); + std::string::_M_dispose((void **)&k); + } + } + v72 = (std::ostream::sentry *)(v265 + 8); + if ( a16 ) + std::string::basic_string((void **)&j, "global"); + else + std::string::basic_string((void **)&j, "__globalThis"); + WXML::Compiler::GetVersionInfo((int)&k, &j); + v73 = std::operator<<(v72, &k); + std::endl>(v73); + std::string::_M_dispose((void **)&k); + std::string::_M_dispose((void **)&j); + WXML::NameAllocator::NameAllocator(&k, a26, a27); + v74 = std::operator<<>(v72, "var $gwxc"); + std::operator<<>(v74, a19); + v75 = std::operator<<>(v72, "var $gaic={}"); + std::operator<<>(v75, a19); + if ( !a16 ) + std::operator<<>( + v72, + "var outerGlobal=typeof __globalThis==='undefined'?window:__globalThis;"); + v250 = 0; + v267 = a18 & 2; + for ( n = *(_DWORD *)(a8 + 12); + v254 != n; + std::_Rb_tree_iterator>>::operator++(&n) ) + { + v270 = n + 16; + v266 = (char *)*std::map,std::allocator>>>::operator[]( + &v293, + n + 16); + v255 = std::operator==(v270, "__COMMON__"); + if ( v255 ) + { + std::string::basic_string(v303, a17); + } + else + { + __gnu_cxx::__to_xstring( + (void **)&j, + (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf_0, + 16, + (int)"%d", + v250); + std::operator+(&v307, a17, "_XC_"); + std::operator+(v303, &v307, (unsigned int *)&j); + std::string::_M_dispose((void **)&v307); + std::string::_M_dispose((void **)&j); + ++v250; + } + v76 = std::map::operator[](a7, v270); + std::string::_M_assign((int)v76, (int)v303); + v77 = (std::ostream::sentry *)(v266 + 8); + if ( (a18 & 2) != 0 ) + { + v78 = std::operator<<>((std::ostream::sentry *)(v266 + 8), "var cs = cs || [];"); + std::operator<<>(v78, a19); + } + v79 = std::operator<<(v77, v303); + v80 = std::operator<<>( + v79, + "=function(_,_v,_n,_p,_s,_wp,_wl,$gwn,$gwl,$gwh,wh,$gstack,$gwrt,gra,grb,TestTest,wfor,_ca,_da,_r,_rz,_o,_oz," + "_1,_1z,_2,_2z,_m,_mz,nv_getDate,nv_getRegExp,nv_console,nv_parseInt,nv_parseFloat,nv_isNaN,nv_isFinite,nv_de" + "codeURI,nv_decodeURIComponent,nv_encodeURI,nv_encodeURIComponent,$gdc,nv_JSON,_af,_gv,_ai,_grp,_gd,_gapi,$ix" + "c,_ic,_w,_ev,_tsd){"); + v81 = std::operator<<>(v80, "return function(path,global){"); + std::operator<<>(v81, a19); + std::operator<<>( + v77, + "if(typeof global==='undefined'){if (typeof __GWX_GLOBAL__==='undefined')global={};else global=__GWX_GLOBAL__;}"); + std::operator<<>(v77, "if(typeof __WXML_GLOBAL__ === 'undefined') {"); + v82 = std::operator<<>(v77, "__WXML_GLOBAL__={};"); + std::operator<<>(v82, a19); + if ( (a18 & 0x80) != 0 ) + { + std::string::basic_string((void **)&j, "life_cycle_callback_content"); + v275 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a15, + (int)&j); + std::string::_M_dispose((void **)&j); + if ( a15 + 1 != v275 ) + { + std::string::basic_string((void **)&j, "life_cycle_callback_content"); + v83 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a15, + (int)&j); + std::operator<<(v77, v83 + 10); + std::string::_M_dispose((void **)&j); + } + } + std::operator<<>(v77, "}"); + v84 = std::operator<<>(v77, "__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {};"); + std::operator<<>(v84, a19); + if ( v255 && !std::operator==(a17, "$gwx") && (a18 & 0x60) == 0 ) + { + v85 = std::operator<<>(v77, "if (typeof $gwx === 'function') $gwx('init', global);"); + std::operator<<>(v85, a19); + } + v86 = std::operator<<>(v77, "var "); + v87 = std::operator<<(v86, a23); + v88 = std::operator<<>(v87, "={}"); + std::operator<<>(v88, a19); + v89 = std::operator<<>(v77, "if(typeof(global.entrys)==='undefined')global.entrys={};"); + v90 = std::operator<<(v89, a23); + v91 = std::operator<<>(v90, "=global.entrys;"); + std::operator<<>(v91, a19); + v92 = std::operator<<>(v77, "var "); + v93 = std::operator<<(v92, a24); + v94 = std::operator<<>(v93, "={}"); + std::operator<<>(v94, a19); + v95 = std::operator<<>(v77, "if(typeof(global.defines)==='undefined')global.defines={};"); + v96 = std::operator<<(v95, a24); + v97 = std::operator<<>(v96, "=global.defines;"); + std::operator<<>(v97, a19); + v98 = std::operator<<>(v77, "var "); + v99 = std::operator<<(v98, a29); + v100 = std::operator<<>(v99, "={}"); + std::operator<<>(v100, a19); + v101 = std::operator<<>(v77, "if(typeof(global.modules)==='undefined')global.modules={};"); + v102 = std::operator<<(v101, a29); + v103 = std::operator<<>(v102, "=global.modules || {};"); + std::operator<<>(v103, a19); + v104 = std::operator<<>(v77, "var "); + v105 = std::operator<<(v104, a25); + v106 = std::operator<<>(v105, "={}"); + std::operator<<>(v106, a19); + if ( (a18 & 2) != 0 ) + { + v107 = std::operator<<>(v77, "var cs = cs || [];"); + std::operator<<>(v107, a19); + } + v108 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_cached = __WXML_GLOBAL__.ops_cached || {}"); + std::operator<<>(v108, a19); + v109 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_set = __WXML_GLOBAL__.ops_set || {};"); + std::operator<<>(v109, a19); + v110 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_init = __WXML_GLOBAL__.ops_init || {};"); + std::operator<<>(v110, a19); + v111 = std::operator<<>(v77, "var z=__WXML_GLOBAL__.ops_set."); + v112 = std::operator<<(v111, v303); + v113 = std::operator<<>(v112, " || [];"); + std::operator<<>(v113, a19); + if ( (a18 & 4) != 0 ) + { + v114 = std::operator<<>( + v77, + "__WXML_GLOBAL__.debuginfo_set = __WXML_GLOBAL__.debuginfo_set || {};"); + std::operator<<>(v114, a19); + v115 = std::operator<<>(v77, "var debugInfo=__WXML_GLOBAL__.debuginfo_set."); + v116 = std::operator<<(v115, v303); + v117 = std::operator<<>(v116, " || [];"); + std::operator<<>(v117, a19); + } + v118 = (int **)std::map>::operator[]((_DWORD *)a8, v270); + v285 = 0; + v119 = *v118; + v268 = v118[1]; + while ( v119 != v268 ) + { + v276 = std::map>::at(a2, (int)v119); + std::_Rb_tree_header::_Rb_tree_header(v305); + v285 = (std::ostream::sentry *)((char *)v285 + 1); + v292[1] = 0; + v292[0] = 0; + __gnu_cxx::__to_xstring( + (void **)&j, + (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf_0, + 16, + (int)"%d", + v285); + std::operator+(&v307, (int)v303, "_"); + std::operator+(v306, &v307, (unsigned int *)&j); + std::string::_M_dispose((void **)&v307); + std::string::_M_dispose((void **)&j); + std::operator+((int)&v307, "gz", (int)v306); + v120 = std::operator<<>(v77, "function "); + v121 = std::operator<<(v120, &v307); + v122 = std::operator<<>(v121, "(){"); + std::operator<<>(v122, a19); + v123 = std::operator<<>(v77, "if( __WXML_GLOBAL__.ops_cached."); + v124 = std::operator<<(v123, v306); + std::operator<<>(v124, ")"); + v125 = std::operator<<>(v77, "return __WXML_GLOBAL__.ops_cached."); + v126 = std::operator<<(v125, v306); + std::operator<<>(v126, a19); + v127 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_cached."); + v128 = std::operator<<(v127, v306); + v129 = std::operator<<>(v128, "=[];"); + std::operator<<>(v129, a19); + std::operator<<>(v77, "(function(z){var a=11;"); + if ( (a18 & 4) != 0 ) + v130 = std::operator<<>( + v77, + "function Z(ops,debugLine){z.push(['11182016',ops,debugLine])}"); + else + v130 = std::operator<<>(v77, "function Z(ops){z.push(ops)}"); + std::operator<<>(v130, a19); + WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( + (_DWORD *)*v276, + v119, + a5, + (int)v266, + &v304, + v292, + (a18 & 4) != 0, + (int)a15); + v131 = std::operator<<>(v77, "})(__WXML_GLOBAL__.ops_cached."); + v132 = std::operator<<(v131, v306); + std::operator<<>(v132, ");"); + v133 = std::operator<<>(v77, "return __WXML_GLOBAL__.ops_cached."); + v134 = std::operator<<(v133, v306); + std::operator<<>(v134, a19); + v135 = std::operator<<>(v77, "}"); + std::operator<<>(v135, a19); + std::string::basic_string((void **)&j, "get_page_z_name"); + v136 = std::map::operator[]((_DWORD *)(*v276 + 272), &j); + std::string::_M_assign((int)v136, (int)&v307); + v119 += 6; + std::string::_M_dispose((void **)&j); + std::string::_M_dispose((void **)&v307); + std::string::_M_dispose((void **)v306); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v304); + } + v137 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_set."); + v138 = std::operator<<(v137, v303); + v139 = std::operator<<>(v138, "=z;"); + std::operator<<>(v139, a19); + v140 = std::operator<<>(v77, "__WXML_GLOBAL__.ops_init."); + v141 = std::operator<<(v140, v303); + v142 = std::operator<<>(v141, "=true;"); + std::operator<<>(v142, a19); + if ( (a18 & 4) != 0 ) + { + v143 = std::operator<<>(v77, "__WXML_GLOBAL__.debuginfo_set."); + v144 = std::operator<<(v143, v303); + v145 = std::operator<<>(v144, "=debugInfo;"); + std::operator<<>(v145, a19); + } + if ( v255 ) + { + std::operator<<>(v77, "var nv_require=function(){var nnm={"); + for ( ii = (_DWORD *)v300[2]; ii != v300; ii = (_DWORD *)std::_Rb_tree_increment((int)ii) ) + { + v286 = std::operator<<>(v77, 34); + WXML::Rewrite::ToStringCode((int)&j, ii + 4); + v147 = std::operator<<(v286, &j); + v148 = std::operator<<>(v147, 34); + std::operator<<>(v148, ":np_"); + v149 = (std::ostream::sentry *)std::ostream::operator<<(ii[10]); + std::operator<<>(v149, ","); + std::string::_M_dispose((void **)&j); + } + std::operator<<>(v77, "};var nom={};return function(n){"); + std::operator<<>(v77, "if(n[0]==='p'&&n[1]==='_'&&f_[n.slice(2)])return f_[n.slice(2)];"); + std::operator<<>(v77, "return function(){if(!nnm[n]) return undefined;"); + std::operator<<>(v77, "try{if(!nom[n])nom[n]=nnm[n]();return nom[n];}"); + std::operator<<>(v77, "catch(e){"); + std::operator<<>(v77, "e.message=e.message.replace(/nv_/g,'');"); + std::operator<<>(v77, "var tmp = e.stack.substring(0,e.stack.lastIndexOf(n));"); + std::operator<<>(v77, "e.stack = tmp.substring(0,tmp.lastIndexOf('\\n'));"); + std::operator<<>(v77, "e.stack = e.stack.replace(/\\snv_/g,' ');"); + std::operator<<>(v77, "e.stack = $gstack(e.stack);"); + v150 = std::operator<<>(v77, "e.stack += '\\n at ' + n.substring(2);console.error(e);}"); + std::operator<<>(v150, a19); + v151 = std::operator<<>(v77, "}}}()"); + std::operator<<>(v151, a19); + for ( jj = (_DWORD *)v298[2]; jj != v298; jj = (_DWORD *)std::_Rb_tree_increment((int)jj) ) + { + v153 = std::operator<<(v77, jj + 10); + std::operator<<>(v153, a19); + } + } + v154 = operator new((struct type_info *)0x24, v240); + std::_Rb_tree_header::_Rb_tree_header(v154 + 1); + v155[6] = 0; + v155[7] = 0; + v155[8] = 0; + zcc::shared_ptr::shared_ptr(v155); + v156 = std::map>::operator[]((_DWORD *)a8, v270); + v157 = *v156; + v277 = v156[1]; + while ( 1 ) + { + v287 = (std::ostream::sentry *)v304; + if ( v157 == v277 ) + break; + std::string::basic_string(&j, v157); + WXML::DOMLib::StrCache::Insert(v287, (int)&j); + std::string::_M_dispose((void **)&j); + v158 = (_DWORD *)(*std::map>::at(a2, v157) + 252); + *(v158 - 1) = v304; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v158, (int)v305[0]); + v159 = std::map>::at(a2, v157); + WXML::DOMLib::WXMLDom::RecordAllPath(*v159); + v157 += 24; + } + WXML::DOMLib::StrCache::RenderPathDefine((_DWORD *)v304, (int)v266); + v160 = (int **)std::map>::operator[]((_DWORD *)a8, v270); + v257 = 0; + v244 = v160[1]; + for ( kk = *v160; v244 != kk; kk += 6 ) + { + v278 = (unsigned int **)std::map>::at(a2, (int)kk); + v161 = std::operator<<(v77, a24); + std::operator<<>(v161, (char *)off_52D00E); + v288 = (std::ostream::sentry *)v304; + std::string::basic_string(&j, (int)kk); + StrID = WXML::DOMLib::StrCache::GetStrID(v288, (int)&j); + std::ostream::operator<<(StrID); + std::string::_M_dispose((void **)&j); + v163 = std::operator<<>(v77, "]]={}"); + std::operator<<>(v163, a19); + std::string::basic_string((void **)&j, "get_page_z_name"); + v164 = std::map::operator[](*v278 + 68, &j); + v282 = WXML::Compiler::RenderDefine( + v278, + kk, + &v301, + (int)a5, + (int)v266, + (int)a15, + v267 != 0, + a18, + a19, + a20, + a21, + a22, + a17, + a23, + a24, + a25, + a26, + a27, + a28, + v164); + std::string::_M_dispose((void **)&j); + if ( v282 ) + goto LABEL_176; + v243 = v257 + 1; + __gnu_cxx::__to_xstring( + (void **)&j, + (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf_0, + 16, + (int)"%d", + v257); + v165 = std::string::insert((unsigned int *)&j, 0, "m"); + std::string::basic_string(v306, v165); + std::string::_M_dispose((void **)&j); + v289 = *v278; + std::string::basic_string((void **)&v307, "get_page_z_name"); + v166 = std::map::operator[](*v278 + 68, &v307); + std::string::basic_string((void **)&j, "r"); + v282 = WXML::DOMLib::WXMLDom::RenderMeAsFunction( + v289, + kk, + a23, + (int)a5, + v306, + (int)v266, + &k, + a20, + a21, + a22, + &j, + a24, + a19, + a25, + 0, + v267 != 0, + a18, + v166); + std::string::_M_dispose((void **)&j); + std::string::_M_dispose((void **)&v307); + if ( v282 ) + { + std::string::_M_dispose((void **)v306); +LABEL_176: + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v305); + std::string::_M_dispose((void **)v303); + goto LABEL_181; + } + v167 = std::operator<<(v77, a23); + std::operator<<>(v167, (char *)off_52D00E); + v258 = (_DWORD *)v304; + std::string::basic_string(&j, (int)kk); + v168 = WXML::DOMLib::StrCache::GetStrID(v258, (int)&j); + std::ostream::operator<<(v168); + std::string::_M_dispose((void **)&j); + v169 = std::operator<<>(v77, "]]={f:"); + v170 = std::operator<<(v169, v306); + std::operator<<>(v170, ",j:[],i:[],ti:["); + v259 = 0; + v248 = 0; + while ( 1 ) + { + v171 = (*v278)[18]; + if ( v259 >= (int)((*v278)[19] - v171) >> 3 ) + break; + if ( std::operator==(*(_DWORD *)(v171 + 8 * v259), "import") ) + { + v172 = *(_DWORD *)((*v278)[18] + 8 * v259); + v241 = (_DWORD *)(v172 + 52); + std::string::basic_string((void **)&j, (unsigned __int8 *)&off_523BD1); + v173 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v172 + 48), + (int)&j); + std::string::_M_dispose((void **)&j); + if ( v241 != v173 ) + { + if ( v248 ) + std::operator<<>(v77, ","); + std::operator<<>(v77, "x["); + v242 = (_DWORD *)v304; + v245 = *(_DWORD *)((*v278)[18] + 8 * v259); + std::string::basic_string((void **)&v307, (unsigned __int8 *)&off_523BD1); + v174 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v245 + 48), + (int)&v307) + + 10; + v175 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v174); + std::string::basic_string(&j, v175); + v176 = WXML::DOMLib::StrCache::GetStrID(v242, (int)&j); + std::ostream::operator<<(v176); + std::string::_M_dispose((void **)&j); + std::string::_M_dispose((void **)&v307); + std::operator<<>(v77, "]"); + ++v248; + } + } + ++v259; + } + std::operator<<>(v77, "],ic:["); + for ( mm = 0; ; ++mm ) + { + v177 = (*v278)[18]; + if ( mm >= (int)((*v278)[19] - v177) >> 3 ) + break; + if ( std::operator==(*(_DWORD *)(v177 + 8 * mm), "include") ) + { + v178 = *(_DWORD *)((*v278)[18] + 8 * mm); + v246 = (_DWORD *)(v178 + 52); + std::string::basic_string((void **)&j, (unsigned __int8 *)&off_523BD1); + v179 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v178 + 48), + (int)&j); + std::string::_M_dispose((void **)&j); + if ( v246 != v179 ) + { + if ( v282 ) + std::operator<<>(v77, ","); + std::operator<<>(v77, "x["); + v247 = (_DWORD *)v304; + v249 = *(_DWORD *)((*v278)[18] + 8 * mm); + std::string::basic_string((void **)&v307, (unsigned __int8 *)&off_523BD1); + v180 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v249 + 48), + (int)&v307) + + 10; + v181 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v180); + std::string::basic_string(&j, v181); + v182 = WXML::DOMLib::StrCache::GetStrID(v247, (int)&j); + std::ostream::operator<<(v182); + std::string::_M_dispose((void **)&j); + std::string::_M_dispose((void **)&v307); + std::operator<<>(v77, "]"); + ++v282; + } + } + } + v183 = std::operator<<>(v77, "]}"); + std::operator<<>(v183, a19); + std::string::_M_dispose((void **)v306); + v257 = v243; + } + v184 = std::operator<<>(v77, "if(path&&"); + v185 = std::operator<<(v184, a23); + v186 = std::operator<<>(v185, "[path]){"); + std::operator<<>(v186, a19); + if ( !a16 ) + { + v187 = std::operator<<>(v77, "outerGlobal.__wxml_comp_version__=0.02"); + std::operator<<>(v187, a19); + } + v188 = std::operator<<>( + v77, + "return function(env,dd,global){$gwxc=0;var root={\"tag\":\"wx-page\"};root.children=[]"); + std::operator<<>(v188, a19); + v189 = std::operator<<>(v77, ";g=\""); + v190 = std::operator<<(v189, v303); + std::operator<<>(v190, "\";"); + v191 = std::operator<<>(v77, "var main="); + v192 = std::operator<<(v191, a23); + v193 = std::operator<<>(v192, "[path].f"); + std::operator<<>(v193, a19); + if ( (a18 & 2) != 0 ) + { + v194 = std::operator<<>(v77, "cs=[]"); + std::operator<<>(v194, a19); + } + if ( (a18 & 0x10) != 0 ) + { + v195 = std::operator<<>(v77, "console.log(path+': benv:\\n'+JSON.stringify(env))"); + std::operator<<>(v195, a19); + } + std::operator<<>(v77, "if (typeof global===\"undefined\")global={};"); + v196 = std::operator<<>(v77, "global.f=$gdc("); + v197 = std::operator<<(v196, a29); + v198 = std::operator<<>(v197, "[path],\"\",1);"); + std::operator<<>(v198, a19); + if ( !a16 ) + { + v199 = std::operator<<>( + v77, + "if(typeof(outerGlobal.__webview_engine_version__)!='undefined'&&outerGlobal.__webview_engine_version__+1e" + "-6>=0.02+1e-6&&outerGlobal.__mergeData__)"); + std::operator<<>(v199, a19); + v200 = std::operator<<>(v77, "{"); + std::operator<<>(v200, a19); + v201 = std::operator<<>(v77, "env=outerGlobal.__mergeData__(env,dd);"); + std::operator<<>(v201, a19); + v202 = std::operator<<>(v77, "}"); + std::operator<<>(v202, a19); + } + v203 = std::operator<<>(v77, "try{"); + std::operator<<>(v203, a19); + if ( (a18 & 0x10) != 0 ) + { + v204 = std::operator<<>( + v77, + "console.log(path+': aenv:\\n'+JSON.stringify(env)+', '+JSON.stringify(dd))"); + std::operator<<>(v204, a19); + } + if ( (a18 & 0x80) != 0 ) + { + std::operator<<>(v77, "if(__WXML_GLOBAL__.before_calculate)"); + v205 = std::operator<<>(v77, "__WXML_GLOBAL__.before_calculate(path, env)"); + std::operator<<>(v205, a19); + } + v206 = std::operator<<>(v77, "main(env,{},root,global);"); + std::operator<<>(v206, a19); + if ( (a18 & 0x80) != 0 ) + { + std::operator<<>(v77, "if(__WXML_GLOBAL__.after_calculate)"); + v207 = std::operator<<>(v77, "__WXML_GLOBAL__.after_calculate(path, root)"); + std::operator<<>(v207, a19); + } + v208 = std::operator<<>(v77, "_tsd(root)"); + std::operator<<>(v208, a19); + if ( !a16 ) + { + v209 = std::operator<<>( + v77, + "if(typeof(outerGlobal.__webview_engine_version__)=='undefined'|| outerGlobal.__webview_engine_version__+1" + "e-6<0.01+1e-6){return _ev(root);}"); + std::operator<<>(v209, a19); + } + v210 = std::operator<<>(v77, "}catch(err){"); + std::operator<<>(v210, a19); + if ( (a18 & 2) != 0 ) + { + v211 = std::operator<<>(v77, "console.log(cs, env);"); + std::operator<<>(v211, a19); + } + v212 = std::operator<<>(v77, "console.log(err)"); + std::operator<<>(v212, a19); + if ( (a18 & 2) != 0 ) + { + v213 = std::operator<<>(v77, "throw err"); + std::operator<<>(v213, a19); + } + v214 = std::operator<<>(v77, "}"); + std::operator<<>(v214, a19); + if ( (a18 & 0x10) != 0 ) + { + v215 = std::operator<<>(v77, "console.log(path+': resp:\\n'+JSON.stringify(root))"); + std::operator<<>(v215, a19); + } + v216 = std::operator<<>(v77, ";g=\"\";"); + std::operator<<>(v216, a19); + v217 = std::operator<<>(v77, "return root;"); + std::operator<<>(v217, a19); + v218 = std::operator<<>(v77, "}"); + std::operator<<>(v218, a19); + v219 = std::operator<<>(v77, "}"); + std::operator<<>(v219, a19); + v220 = std::operator<<>(v77, "}"); + std::operator<<>(v220, a19); + std::operator<<>( + v77, + "}(__g.a,__g.b,__g.c,__g.d,__g.e,__g.f,__g.g,__g.h,__g.i,__g.j,__g.k,__g.l,__g.m,__g.n,__g.o,__g.p,__g.q,__g.r,__g." + "s,__g.t,__g.u,__g.v,__g.w,__g.x,__g.y,__g.z,__g.A,__g.B,__g.C,__g.D,__g.E,__g.F,__g.G,__g.H,__g.I,__g.J,__g.K,__g." + "L,__g.M,__g.N,__g.O,__g.P,__g.Q,__g.R,__g.S,__g.T,__g.U,__g.V,__g.W,__g.X,__g.Y,__g.Z,__g.aa);"); + if ( (a18 & 8) != 0 ) + { + v221 = (int **)std::map>::operator[]((_DWORD *)a8, v270); + v222 = *v221; + v290 = (std::ostream::sentry *)v221[1]; + while ( v222 != (int *)v290 ) + { + v223 = std::operator<<>(v77, "//"); + v224 = std::operator<<(v223, v222); + v225 = std::operator<<>(v224, ":"); + std::operator<<>(v225, a19); + v226 = std::map>::at(a2, (int)v222); + WXML::DOMLib::WXMLDom::Print((_DWORD *)*v226, 0, "//", v266); + v222 += 6; + } + } + v227 = std::map>::operator[]((_DWORD *)a8, v270); + v228 = v227[1] == *v227; + v229 = std::operator<<>(v77, "if(__vd_version_info__.delayedGwx||"); + v230 = "true"; + if ( !v255 && !v228 ) + v230 = "false"; + std::string::basic_string((void **)&j, (unsigned __int8 *)v230); + v231 = std::operator<<(v229, &j); + v232 = std::operator<<>(v231, ")"); + v233 = std::operator<<(v232, v303); + std::operator<<>(v233, "();"); + std::string::_M_dispose((void **)&j); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v305); + std::string::_M_dispose((void **)v303); + } + for ( nn = v296; nn != &v294; nn = (int *)std::_Rb_tree_increment((int)nn) ) + { + std::stringbuf::str((int)&j, (_DWORD *)(nn[10] + 12)); + v235 = std::map::operator[](a6, (int)(nn + 4)); + std::string::operator=(v235, &j); + std::string::_M_dispose((void **)&j); + } + v282 = 0; +LABEL_181: + WXML::NameAllocator::~NameAllocator((int)&k); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v301); +LABEL_184: + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v299); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v297); + std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(v295); + return v282; +} +// 4140CF: variable 'v29' is possibly undefined +// 4140DB: variable 'v31' is possibly undefined +// 41440B: variable 'v42' is possibly undefined +// 4144F3: variable 'v49' is possibly undefined +// 4145E5: variable 'v52' is possibly undefined +// 41461D: variable 'v239' is possibly undefined +// 4147DE: variable 'v61' is possibly undefined +// 4156C4: variable 'v240' is possibly undefined +// 4156D7: variable 'v155' is possibly undefined +// 4606E0: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); +// 523BD1: using guessed type void *off_523BD1; +// 52CB31: using guessed type void *off_52CB31; +// 414049: using guessed type int var_D8[5]; + +//----- (004168B2) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __cdecl WXML::Compiler::CompileLazy( + std::_Rb_tree_header *a1, + unsigned int *a2, + _DWORD *a3, + _DWORD *a4, + _DWORD *a5, + int a6, + int a7, + std::_Rb_tree_header *a8, + char a9, + _DWORD *a10, + int a11, + _DWORD *a12, + char a13, + int a14, + int a15, + char a16, + int *a17, + int *a18, + int *a19, + int *a20, + int *a21, + int *a22, + int a23, + int a24, + int a25, + int *a26) +{ + _DWORD *v26; // eax + _DWORD *v27; // edx + unsigned int v28; // eax + int v29; // eax + int v30; // ecx + int *v31; // edx + _DWORD *v32; // eax + _DWORD *v33; // edx + int v34; // ecx + _DWORD *v35; // edx + int v36; // ecx + int v38; // [esp+8Ch] [ebp-6Ch] + int v39; // [esp+8Ch] [ebp-6Ch] + int v40; // [esp+94h] [ebp-64h] BYREF + int v41; // [esp+98h] [ebp-60h] BYREF + void *v42[5]; // [esp+9Ch] [ebp-5Ch] BYREF + int v43; // [esp+B0h] [ebp-48h] BYREF + void *v44[5]; // [esp+B4h] [ebp-44h] BYREF + int v45; // [esp+C8h] [ebp-30h] BYREF + int v46; // [esp+CCh] [ebp-2Ch] BYREF + void *v47; // [esp+D0h] [ebp-28h] + int v48; // [esp+D4h] [ebp-24h] + int v49; // [esp+D8h] [ebp-20h] + int v50; // [esp+DCh] [ebp-1Ch] + + std::_Rb_tree_header::_Rb_tree_header(v42); + std::_Rb_tree_header::_Rb_tree_header(v44); + v28 = WXML::Compiler::ParseAndResolveWxmlDependencies((int)a1, a2, v26, v27, a5); + if ( !v28 ) + { + std::_Rb_tree_header::_Rb_tree_header(&v46); + v31 = *(int **)(a7 + 8); + if ( v31 ) + { + v40 = v29; + v32 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( + v31, + v30, + (int)&v40); + v33 = v32; + do + { + v34 = (int)v33; + v33 = (_DWORD *)v33[2]; + } + while ( v33 ); + v48 = v34; + v35 = v32; + do + { + v36 = (int)v35; + v35 = (_DWORD *)v35[3]; + } + while ( v35 ); + v49 = v36; + v47 = v32; + v50 = *(_DWORD *)(a7 + 20); + } + v38 = WXML::Compiler::CompileLazyWithParsed( + a1, + &v41, + (int)&v43, + (int)a5, + a2, + a3, + a4, + a6, + &v45, + a8, + a9, + 0, + a10, + a11, + a12, + a13, + a14, + a15, + a16, + a17, + a18, + a19, + a20, + a21, + a22, + a23, + a24, + a25, + a26); + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(v47); + v28 = v38; + } + v39 = v28; + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase((void **)v44[1]); + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(v42[1]); + return v39; +} +// 416A8E: positive sp value 4 has been found +// 4168F9: variable 'v26' is possibly undefined +// 4168F9: variable 'v27' is possibly undefined +// 41693B: variable 'v29' is possibly undefined +// 41693E: variable 'v30' is possibly undefined + +//----- (00416ABC) -------------------------------------------------------- +void __thiscall WXML::NameAllocator::NameAllocator(_DWORD *this, int a2, int a3) +{ + int v3; // esi + bool v5; // zf + + v3 = (int)(this + 7); + v5 = WXML::NameAllocator::ALPAHBETLEN == 0; + this[1] = this + 3; + this[2] = 0; + *((_BYTE *)this + 12) = 0; + this[7] = this + 9; + this[8] = 0; + *((_BYTE *)this + 36) = 0; + if ( v5 ) + WXML::NameAllocator::ALPAHBETLEN = strlen(WXML::NameAllocator::ALPAHBET[0]); + std::string::_M_assign((int)(this + 1), a2); + std::string::_M_assign(v3, a3); + *this = 0; +} +// 51501C: using guessed type char *WXML::NameAllocator::ALPAHBET[13]; +// 587954: using guessed type int WXML::NameAllocator::ALPAHBETLEN; + +//----- (00416B58) -------------------------------------------------------- +void __thiscall WXML::NameAllocator::GetNextName(int *this, _DWORD *a2) +{ + int v3; // esi + std::ostream::sentry *v4; // eax + void *v5[6]; // [esp+18h] [ebp-F0h] BYREF + char v6[8]; // [esp+30h] [ebp-D8h] BYREF + char v7[4]; // [esp+38h] [ebp-D0h] BYREF + int v8[51]; // [esp+3Ch] [ebp-CCh] BYREF + + v3 = *this; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v6); + v4 = std::operator<<((std::ostream::sentry *)v7, this + 1); + std::operator<<>(v4, *(_BYTE *)(this[7] + *this % (unsigned int)this[8])); + while ( v3 ) + { + std::operator<<>( + (std::ostream::sentry *)v7, + WXML::NameAllocator::ALPAHBET[0][v3 % WXML::NameAllocator::ALPAHBETLEN]); + v3 /= WXML::NameAllocator::ALPAHBETLEN; + } + ++*this; + std::stringbuf::str((int)v5, v8); + std::string::operator=(a2, v5); + std::string::_M_dispose(v5); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v6); +} +// 51501C: using guessed type char *WXML::NameAllocator::ALPAHBET[13]; +// 587954: using guessed type int WXML::NameAllocator::ALPAHBETLEN; +// 416B58: using guessed type char var_D0[4]; +// 416B58: using guessed type int var_CC[51]; + +//----- (00416C30) -------------------------------------------------------- +void __usercall std::_Vector_base::_M_deallocate(void *a1@) +{ + if ( a1 ) + operator delete(a1); +} +// 416C30: could not find valid save-restore pair for ebp + +//----- (00416C45) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + void **a1@, + void **a2@, + _DWORD *a3@) +{ + _DWORD *v4; // eax + void **i; // ebx + void **v7; // ecx + _DWORD *v9; // [esp+18h] [ebp-20h] + + v4 = a3; + for ( i = a1; i != a2; i += 6 ) + { + v9 = v4; + std::string::basic_string(v4, i); + v7 = i; + std::string::_M_dispose(v7); + v4 = v9 + 6; + } + return &a3[6 * ((178956971 * ((unsigned int)((char *)i - (char *)a1) >> 3)) & 0x1FFFFFFF)]; +} + +//----- (00416C9E) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 6 ) + { + v4 = i; + std::string::_M_dispose(v4); + } + std::_Vector_base::_M_deallocate(*a1); +} + +//----- (00416CCC) -------------------------------------------------------- +void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void ***a2) +{ + int v2; // eax + int i; // ebx + int v4; // ebx + void *v5[12]; // [esp+18h] [ebp-30h] BYREF + + v2 = -1; + for ( i = 0; a1[1] > i; ++i ) + { + if ( *(_BYTE *)(*a1 + i) == 47 ) + { + if ( i - v2 > 1 ) + { + std::string::substr(v5, a1, v2 + 1, i - v2 - 1); + std::vector::emplace_back(a2, v5); + std::string::_M_dispose(v5); + } + v2 = i; + } + } + v4 = i - v2; + if ( v4 > 1 ) + { + std::string::substr(v5, a1, v2 + 1, v4 - 1); + std::vector::emplace_back(a2, v5); + std::string::_M_dispose(v5); + } +} + +//----- (00416D76) -------------------------------------------------------- +int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3) +{ + bool v3; // zf + int v4; // eax + int v5; // ebx + void **v6; // ebx + unsigned int j; // ebx + unsigned int i; // [esp+1Ch] [ebp-4Ch] + void **v10; // [esp+20h] [ebp-48h] BYREF + void **v11; // [esp+24h] [ebp-44h] + void **v12; // [esp+28h] [ebp-40h] + void **v13; // [esp+2Ch] [ebp-3Ch] BYREF + int v14; // [esp+30h] [ebp-38h] + int v15; // [esp+34h] [ebp-34h] + void *v16[2]; // [esp+38h] [ebp-30h] BYREF + _BYTE v17[40]; // [esp+40h] [ebp-28h] BYREF + + v10 = 0; + v11 = 0; + v3 = a2[1] == 0; + v12 = 0; + v13 = 0; + v14 = 0; + v15 = 0; + if ( v3 || *(_BYTE *)*a2 != 47 ) + { + MMBizWxaAppComm::SplitBySlash(a1, &v10); + v4 = a1[1]; + if ( v4 ) + { + if ( *(_BYTE *)(*a1 + v4 - 1) != 47 ) + { + v11 -= 6; + std::string::_M_dispose(v11); + } + } + } + MMBizWxaAppComm::SplitBySlash(a2, &v13); + for ( i = 0; i < -1431655765 * ((v14 - (int)v13) >> 3); ++i ) + { + v5 = 6 * i; + if ( !std::string::compare((int)&v13[6 * i], "..") ) + { + if ( v10 != v11 ) + { + v11 -= 6; + std::string::_M_dispose(v11); + } + } + else if ( std::string::compare((int)&v13[v5], ".") ) + { + v6 = &v13[v5]; + if ( v11 == v12 ) + { + std::vector::_M_realloc_insert(v11, v6); + } + else + { + std::string::basic_string(v11, (int)v6); + v11 += 6; + } + } + } + if ( a1[1] && *(_BYTE *)*a1 == 47 || a2[1] && *(_BYTE *)*a2 == 47 ) + std::string::operator=(a3, "/"); + else + std::string::operator=(a3, byte_52DCE9); + for ( j = 0; j < -1431655765 * (((char *)v11 - (char *)v10) >> 3); ++j ) + { + if ( j ) + { + v16[0] = v17; + std::string::_S_copy_chars(v17, "/", (size_t)""); + v16[1] = (void *)1; + *((_BYTE *)v16[0] + 1) = 0; + std::string::operator+=(a3, (int)v16); + std::string::_M_dispose(v16); + } + std::string::operator+=(a3, (int)&v10[6 * j]); + } + std::vector::~vector(&v13); + std::vector::~vector(&v10); + return 0; +} +// 4DB640: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); +// 416D76: using guessed type _BYTE var_28[40]; + +//----- (00416F70) -------------------------------------------------------- +int __cdecl MMBizWxaAppComm::PathCombine(int a1, _DWORD *a2, _DWORD *a3) +{ + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + MMBizWxaAppComm::PathCombine(a2, a3, (unsigned int *)a1); + return a1; +} + +//----- (00416FBC) -------------------------------------------------------- +bool __cdecl WXML::DOMLib::AttrsCompartor(int a1, int a2) +{ + return *(_DWORD *)(a1 + 80) < *(_DWORD *)(a2 + 80); +} + +//----- (00416FD0) -------------------------------------------------------- +void __cdecl __tcf_1_2() +{ + std::ios_base::Init::~Init(); +} + +//----- (00416FDA) -------------------------------------------------------- +void __usercall std::_Vector_base::_M_deallocate(void *a1@) +{ + if ( a1 ) + operator delete(a1); +} +// 416FDA: could not find valid save-restore pair for ebp + +//----- (00416FEF) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + void **a1@, + void **a2@, + _DWORD *a3@) +{ + _DWORD *v4; // eax + void **i; // ebx + void **v7; // ecx + _DWORD *v9; // [esp+18h] [ebp-20h] + + v4 = a3; + for ( i = a1; i != a2; i += 6 ) + { + v9 = v4; + std::string::basic_string(v4, i); + v7 = i; + std::string::_M_dispose(v7); + v4 = v9 + 6; + } + return &a3[6 * ((178956971 * ((unsigned int)((char *)i - (char *)a1) >> 3)) & 0x1FFFFFFF)]; +} + +//----- (00417047) -------------------------------------------------------- +volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) +{ + if ( _CRT_MT ) + _InterlockedIncrement(result); + else + ++*result; + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00417058) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 6 ) + { + v4 = i; + std::string::_M_dispose(v4); + } + std::_Vector_base::_M_deallocate(*a1); +} + +//----- (00417086) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 7 ) + { + v4 = i; + std::string::_M_dispose(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (004170BC) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 8 ) + { + v4 = i; + std::string::_M_dispose(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (004170F2) -------------------------------------------------------- +void __fastcall std::vector::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + void **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 28 ) + { + v4 = (void **)(i + 4); + std::string::_M_dispose(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (0041712A) -------------------------------------------------------- +int __userpurge WXML::DOMLib::WXMLDom::GenRawId@( + _DWORD *a1@, + WXML::DOMLib::WXMLDom *this, + unsigned __int64 *a3) +{ + unsigned int i; // esi + int v5; // edx + int v6; // eax + int result; // eax + unsigned __int64 *v8; // [esp+4h] [ebp-24h] + + for ( i = 0; (a1[19] - a1[18]) >> 3 > i; ++i ) + WXML::DOMLib::WXMLDom::GenRawId(this, v8); + v5 = *((_DWORD *)this + 1); + v6 = *(_DWORD *)this; + a1[67] = v5; + a1[66] = v6; + *(_DWORD *)this = v6; + result = 0; + *((_DWORD *)this + 1) = v5 + 1; + return result; +} +// 417150: variable 'v8' is possibly undefined + +//----- (0041717C) -------------------------------------------------------- +_DWORD *__thiscall WXML::DOMLib::Parser::GetParsed(_DWORD *ecx0, WXML::DOMLib::Parser *this) +{ + std::__shared_ptr::__shared_ptr(ecx0, this); + return ecx0; +} + +//----- (00417198) -------------------------------------------------------- +void __fastcall WXML::DOMLib::Parser::Match(int a1) +{ + ++*(_DWORD *)(a1 + 100); +} + +//----- (0041719C) -------------------------------------------------------- +bool __stdcall WXML::DOMLib::Parser::IsValidTag(const char **a1) +{ + return strncmp(*a1, "wx-", 3u) != 0; +} + +//----- (004171C8) -------------------------------------------------------- +_DWORD *__fastcall WXML::DOMLib::Parser::Peek(_DWORD *a1) +{ + _DWORD *result; // eax + int v2; // esi + unsigned int v3; // ebx + + result = a1 + 26; + v2 = a1[22]; + v3 = a1[25]; + if ( v3 < -1227133513 * ((a1[23] - v2) >> 4) ) + return (_DWORD *)(v2 + 112 * v3); + return result; +} + +//----- (004171F2) -------------------------------------------------------- +int __cdecl WXML::DOMLib::WXMLDom::Error(int a1, int *a2, int a3, int *a4, int *a5) +{ + std::ostream::sentry *v5; // eax + std::ostream::sentry *v6; // eax + std::ostream::sentry *v7; // eax + std::ostream::sentry *v8; // eax + std::ostream::sentry *v9; // eax + std::ostream::sentry *v10; // eax + std::ostream::sentry *v11; // eax + void *v13[6]; // [esp+18h] [ebp-100h] BYREF + char v14[8]; // [esp+30h] [ebp-E8h] BYREF + char v15[4]; // [esp+38h] [ebp-E0h] BYREF + int v16[55]; // [esp+3Ch] [ebp-DCh] BYREF + + std::basic_stringstream,std::allocator>::basic_stringstream((int)v14); + v5 = std::operator<<((std::ostream::sentry *)v15, a2); + std::operator<<>(v5, ":"); + v6 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(a3 + 8)); + std::operator<<>(v6, ":"); + v7 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(a3 + 12)); + std::operator<<>(v7, ":"); + if ( a4[1] ) + { + v8 = std::operator<<>((std::ostream::sentry *)v15, " Bad attr `"); + v9 = std::operator<<(v8, a4); + std::operator<<>(v9, "`"); + } + else + { + std::operator<<>((std::ostream::sentry *)v15, " Bad value"); + } + v10 = std::operator<<>((std::ostream::sentry *)v15, " with message: "); + v11 = std::operator<<(v10, a5); + std::operator<<>(v11, "."); + std::stringbuf::str((int)v13, v16); + *(_DWORD *)a1 = a1 + 8; + *(_DWORD *)(a1 + 4) = 0; + *(_BYTE *)(a1 + 8) = 0; + std::string::_M_assign(a1, (int)v13); + std::string::_M_dispose(v13); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v14); + return a1; +} +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 4171F2: using guessed type char var_E0[4]; +// 4171F2: using guessed type int var_DC[55]; + +//----- (0041735E) -------------------------------------------------------- +int __cdecl WXML::DOMLib::joinString(int a1, _DWORD *a2, char a3) +{ + unsigned int v3; // ebx + char v5[8]; // [esp+20h] [ebp-E8h] BYREF + char v6[4]; // [esp+28h] [ebp-E0h] BYREF + int v7[55]; // [esp+2Ch] [ebp-DCh] BYREF + + v3 = 0; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v5); + while ( v3 < -1431655765 * ((a2[1] - *a2) >> 3) ) + { + std::operator<<((std::ostream::sentry *)v6, (int *)(24 * v3 + *a2)); + if ( -1431655765 * ((a2[1] - *a2) >> 3) - 1 != v3 ) + std::operator<<>((std::ostream::sentry *)v6, a3); + ++v3; + } + std::stringbuf::str(a1, v7); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v5); + return a1; +} +// 41735E: using guessed type char var_E0[4]; +// 41735E: using guessed type int var_DC[55]; + +//----- (00417422) -------------------------------------------------------- +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + int result; // eax + + v1 = *a1; + if ( v1 ) + return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); + return result; +} + +//----- (0041742E) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Token::~Token(int a1) +{ + std::string::_M_dispose((void **)(a1 + 88)); + std::string::_M_dispose((void **)(a1 + 60)); + std::string::_M_dispose((void **)(a1 + 32)); + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); +} + +//----- (00417456) -------------------------------------------------------- +void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node( + void **a1@) +{ + void **v1; // esi + + v1 = a1 + 4; + WXML::DOMLib::Token::~Token((int)(a1 + 10)); + std::string::_M_dispose(v1); + operator delete(a1); +} + +//----- (00417482) -------------------------------------------------------- +void __fastcall std::pair::~pair(void **a1) +{ + WXML::DOMLib::Token::~Token((int)(a1 + 6)); + std::string::_M_dispose(a1); +} + +//----- (0041749C) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 34 ) + { + v4 = i; + std::pair::~pair(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (004174D6) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( + volatile signed __int32 **this, + volatile signed __int32 *a2) +{ + if ( *this != a2 ) + { + if ( a2 ) + __gnu_cxx::__atomic_add_dispatch(a2 + 1); + if ( *this ) + std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); + *this = a2; + } + return this; +} + +//----- (00417506) -------------------------------------------------------- +_DWORD *__thiscall WXML::DOMLib::Parser::Error( + _DWORD *ecx0, + WXML::DOMLib::Parser *this, + char *a3, + WXML::DOMLib::Token *a4) +{ + WXML::DOMLib::Token *v5; // esi + WXML::DOMLib::Token *v6; // eax + std::ostream::sentry *v7; // eax + std::ostream::sentry *v8; // eax + std::ostream::sentry *v9; // eax + std::ostream::sentry *v10; // eax + std::ostream::sentry *v11; // eax + int v12; // edi + char v13; // al + const WXML::DOMLib::Token *v15; // [esp+4h] [ebp-194h] + int v16; // [esp+18h] [ebp-180h] + int v17; // [esp+1Ch] [ebp-17Ch] + void *v18[6]; // [esp+28h] [ebp-170h] BYREF + int v19[5]; // [esp+40h] [ebp-158h] BYREF + int v20; // [esp+54h] [ebp-144h] + int v21; // [esp+58h] [ebp-140h] + char v22[8]; // [esp+B0h] [ebp-E8h] BYREF + char v23[4]; // [esp+B8h] [ebp-E0h] BYREF + int v24[55]; // [esp+BCh] [ebp-DCh] BYREF + + v5 = a4; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v22); + v6 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(this); + WXML::DOMLib::Token::Token((int)v19, v6, v15); + if ( v21 == 4 ) + { + if ( !a4 ) + v5 = (WXML::DOMLib::Token *)(*((_DWORD *)this + 22) + 112 * (*((_DWORD *)this + 25) - 1)); + a3 = "end tag missing"; + WXML::DOMLib::Token::operator=((int)v19, (int)v5); + } + v7 = std::operator<<((std::ostream::sentry *)v23, (int *)this + 82); + std::operator<<>(v7, ":"); + v8 = (std::ostream::sentry *)std::ostream::operator<<(v19[2]); + std::operator<<>(v8, ":"); + v9 = (std::ostream::sentry *)std::ostream::operator<<(v19[3]); + v10 = std::operator<<>(v9, ": "); + v11 = std::operator<<>(v10, a3); + std::operator<<>(v11, ", near `"); + v12 = 0; + v16 = *(_DWORD *)v19[0]; + v17 = v19[4]; + while ( v20 > v12 ) + { + if ( v12 == 7 ) + { + if ( v20 > 7 ) + std::operator<<>((std::ostream::sentry *)v23, "..."); + break; + } + v13 = *(_BYTE *)(v17 + v16 + v12); + if ( v13 == 13 ) + { + std::operator<<>((std::ostream::sentry *)v23, "\\r"); + } + else if ( v13 == 10 ) + { + std::operator<<>((std::ostream::sentry *)v23, "\\n"); + } + else + { + std::operator<<>((std::ostream::sentry *)v23, *(_BYTE *)(v17 + v16 + v12)); + } + ++v12; + } + std::operator<<>((std::ostream::sentry *)v23, "`"); + std::stringbuf::str((int)v18, v24); + *ecx0 = ecx0 + 2; + ecx0[1] = 0; + *((_BYTE *)ecx0 + 8) = 0; + std::string::_M_assign((int)ecx0, (int)v18); + std::string::_M_dispose(v18); + WXML::DOMLib::Token::~Token((int)v19); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v22); + return ecx0; +} +// 417535: variable 'v15' is possibly undefined +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 417506: using guessed type char var_E0[4]; +// 417506: using guessed type int var_DC[55]; + +//----- (00417724) -------------------------------------------------------- +void __fastcall WXML::DOMLib::WXMLDom::~WXMLDom(int a1) +{ + int v2; // edi + int i; // esi + volatile signed __int32 **v4; // ecx + + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 280)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 252)); + std::string::_M_dispose((void **)(a1 + 220)); + std::string::_M_dispose((void **)(a1 + 196)); + WXML::DOMLib::Token::~Token(a1 + 84); + v2 = *(_DWORD *)(a1 + 76); + for ( i = *(_DWORD *)(a1 + 72); v2 != i; i += 8 ) + { + v4 = (volatile signed __int32 **)(i + 4); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + if ( *(_DWORD *)(a1 + 72) ) + operator delete(*(void **)(a1 + 72)); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 56)); + std::string::_M_dispose((void **)(a1 + 24)); + std::string::_M_dispose((void **)a1); +} + +//----- (004177B8) -------------------------------------------------------- +int __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound@( + int a1@, + int a2@, + int a3@) +{ + while ( a1 ) + { + if ( (unsigned __int8)std::operator<(a1 + 16, a3) ) + { + a1 = *(_DWORD *)(a1 + 12); + } + else + { + a2 = a1; + a1 = *(_DWORD *)(a1 + 8); + } + } + return a2; +} + +//----- (004177F4) -------------------------------------------------------- +int __cdecl WXML::DOMLib::splitString(int a1, int *a2, char a3) +{ + char *v3; // eax + unsigned int v4; // edx + char *i; // ebx + char *v6; // eax + void *v8[12]; // [esp+28h] [ebp-30h] BYREF + + *(_DWORD *)a1 = 0; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + v3 = std::string::find(a2, a3, 0); + v4 = 0; + for ( i = v3; i != (char *)-1; i = v6 ) + { + std::string::substr(v8, a2, v4, (unsigned int)&i[-v4]); + std::vector::emplace_back((void ***)a1, v8); + std::string::_M_dispose(v8); + v6 = std::string::find(a2, a3, (unsigned int)(i + 1)); + v4 = (unsigned int)(i + 1); + } + std::string::substr(v8, a2, v4, 0xFFFFFFFF); + std::vector::emplace_back((void ***)a1, v8); + std::string::_M_dispose(v8); + return a1; +} + +//----- (004178E2) -------------------------------------------------------- +int __cdecl WXML::DOMLib::resolvePath(int a1, int *a2, int *a3) +{ + _BYTE *v3; // eax + int v4; // esi + unsigned int v5; // eax + bool v6; // di + unsigned int i; // [esp+1Ch] [ebp-5Ch] + void **v9; // [esp+24h] [ebp-54h] BYREF + void **v10; // [esp+28h] [ebp-50h] + void *v11[6]; // [esp+30h] [ebp-48h] BYREF + int v12[12]; // [esp+48h] [ebp-30h] BYREF + + *(_BYTE *)(a1 + 8) = 0; + *(_DWORD *)a1 = a1 + 8; + v3 = (_BYTE *)*a3; + *(_DWORD *)(a1 + 4) = 0; + if ( *v3 != 47 ) + { + WXML::DOMLib::splitString((int)&v9, a2, 47); + v10 -= 6; + std::string::_M_dispose(v10); + WXML::DOMLib::splitString((int)v12, a3, 47); + for ( i = 0; i < -1431655765 * ((v12[1] - v12[0]) >> 3); ++i ) + { + v4 = 24 * i; + if ( std::operator==(24 * i + v12[0], "..") ) + { + v10 -= 6; + std::string::_M_dispose(v10); + } + else if ( !std::operator==(v4 + v12[0], (char *)&byte_52DD60) && !std::operator==(v4 + v12[0], ".") ) + { + std::vector::push_back(&v9, v12[0] + v4); + } + } + WXML::DOMLib::joinString((int)v11, &v9, 47); + std::string::operator=((_DWORD *)a1, v11); + std::string::_M_dispose(v11); + std::vector::~vector((void ***)v12); + std::vector::~vector(&v9); + } + if ( *(_BYTE *)*a2 == 46 && *(_BYTE *)*a3 == 47 ) + { + std::operator+((int)v12, ".", (int)a3); + std::string::operator=((_DWORD *)a1, v12); + std::string::_M_dispose((void **)v12); + } + v5 = *(_DWORD *)(a1 + 4); + if ( v5 <= 4 + || (std::string::substr((void **)v12, (_DWORD *)a1, v5 - 5, 0xFFFFFFFF), + v6 = std::operator==((int)v12, ".wxml"), + std::string::_M_dispose((void **)v12), + !v6) ) + { + std::string::operator+=((_DWORD *)a1, ".wxml"); + } + return a1; +} + +//----- (00417ADC) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Parser::ATTR(WXML::DOMLib::Parser *a1) +{ + WXML::DOMLib::Token *v2; // eax + int i; // edx + char v4; // cl + _DWORD *exception; // esi + _DWORD *v6; // eax + _DWORD *v7; // eax + WXML::DOMLib::Token *v8; // eax + int v9; // eax + _DWORD *v10; // eax + int v11; // eax + _DWORD *v12; // eax + const WXML::DOMLib::Token *v14; // [esp+4h] [ebp-134h] + const char *v15; // [esp+4h] [ebp-134h] + const char *v16; // [esp+4h] [ebp-134h] + const char *v17; // [esp+4h] [ebp-134h] + const WXML::DOMLib::Token *v18; // [esp+4h] [ebp-134h] + void *v19[6]; // [esp+28h] [ebp-110h] BYREF + int v20[5]; // [esp+40h] [ebp-F8h] BYREF + int v21; // [esp+54h] [ebp-E4h] + char v22[24]; // [esp+B0h] [ebp-88h] BYREF + int v23; // [esp+C8h] [ebp-70h] + + v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::Token((int)v20, v2, v14); + if ( !WXML::DOMLib::Token::IsMatch((int)v20, (WXML::DOMLib::Token *)">", v15) + && !WXML::DOMLib::Token::IsMatch((int)v20, (WXML::DOMLib::Token *)"/>", v16) ) + { + if ( !v20[0] ) + goto LABEL_12; + for ( i = 0; v21 > i; ++i ) + { + v4 = *(_BYTE *)(*(_DWORD *)v20[0] + v20[4] + i); + if ( (unsigned __int8)((v4 & 0xDF) - 65) > 0x19u && (unsigned __int8)(v4 - 48) > 0xAu && v4 != 95 && v4 != 45 ) + goto LABEL_12; + } + if ( (unsigned int)(v21 - 1) > 0xFFFE ) + { +LABEL_12: + exception = __cxa_allocate_exception(0x18u); + WXML::DOMLib::Parser::Error(exception, a1, "unexpected attribute name", 0); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, + WXML::DOMLib::ParseException::~ParseException); + } + v6 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v20); + std::string::basic_string(v19, (int)v6); + ++*((_DWORD *)a1 + 25); + v7 = WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::operator=((int)v20, (int)v7); + if ( WXML::DOMLib::Token::IsMatch((int)v20, (WXML::DOMLib::Token *)"=", v17) ) + { + ++*((_DWORD *)a1 + 25); + v8 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::Token((int)v22, v8, v18); + if ( v23 == 2 ) + { + ++*((_DWORD *)a1 + 25); + v9 = std::deque>::back((_DWORD *)a1 + 12); + v10 = std::map::operator[]((_DWORD *)(*(_DWORD *)v9 + 48), (int)v19); + WXML::DOMLib::Token::operator=((int)v10, (int)v22); + } + WXML::DOMLib::Token::~Token((int)v22); + } + else + { + v11 = std::deque>::back((_DWORD *)a1 + 12); + v12 = std::map::operator[]((_DWORD *)(*(_DWORD *)v11 + 48), (int)v19); + WXML::DOMLib::Token::operator=((int)v12, (int)a1 + 216); + } + std::string::_M_dispose(v19); + } + return WXML::DOMLib::Token::~Token((int)v20); +} +// 417AF8: variable 'v14' is possibly undefined +// 417B0B: variable 'v15' is possibly undefined +// 417B26: variable 'v16' is possibly undefined +// 417C14: variable 'v17' is possibly undefined +// 417C33: variable 'v18' is possibly undefined +// 533C64: using guessed type int *`typeinfo for'WXML::DOMLib::ParseException; + +//----- (00417CF8) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Parser::ATTR_LIST(WXML::DOMLib::Parser *a1) +{ + WXML::DOMLib::Token *v2; // eax + WXML::DOMLib::Parser *v3; // edx + const WXML::DOMLib::Token *v5; // [esp+4h] [ebp-84h] + const char *v6; // [esp+4h] [ebp-84h] + const char *v7; // [esp+4h] [ebp-84h] + char v8[116]; // [esp+10h] [ebp-78h] BYREF + + WXML::DOMLib::Parser::ATTR(a1); + v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::Token((int)v8, v2, v5); + if ( !WXML::DOMLib::Token::IsMatch((int)v8, (WXML::DOMLib::Token *)">", v6) + && !WXML::DOMLib::Token::IsMatch((int)v8, (WXML::DOMLib::Token *)"/>", v7) ) + { + WXML::DOMLib::Parser::ATTR_LIST(v3); + } + return WXML::DOMLib::Token::~Token((int)v8); +} +// 417D16: variable 'v5' is possibly undefined +// 417D26: variable 'v6' is possibly undefined +// 417D3A: variable 'v7' is possibly undefined +// 417D53: variable 'v3' is possibly undefined + +//----- (00417D6C) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + size_t v3; // eax + int v5; // [esp+8h] [ebp-10h] + + *this = this + 2; + v3 = -1; + if ( a2 ) + v3 = (size_t)&a2[strlen(a2)]; + LOBYTE(v5) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)a2, v3, v5); +} +// 417DA2: variable 'v5' is possibly undefined + +//----- (00417DB3) -------------------------------------------------------- +void **__cdecl WXML::DOMLib::removern(void **a1, _DWORD *a2) +{ + unsigned int v2; // ebx + unsigned int v3; // edx + + v2 = 0; + std::string::basic_string(a1, (char *)&byte_52DD60); + while ( 1 ) + { + v3 = a2[1]; + if ( v2 >= v3 ) + break; + if ( v3 - 1 <= v2 || *(_BYTE *)(*a2 + v2) != 13 || *(_BYTE *)(*a2 + v2 + 1) != 10 ) + std::string::push_back(a1, *(_BYTE *)(*a2 + v2)); + ++v2; + } + return a1; +} + +//----- (00417E1A) -------------------------------------------------------- +int __thiscall WXML::DOMLib::WXMLDom::AddTestAttr(_DWORD *this, int *a2, int a3, char a4) +{ + BOOL v4; // edi + unsigned int i; // esi + BOOL v7; // edi + std::ostream::sentry *v8; // eax + std::ostream::sentry *v9; // eax + std::ostream::sentry *v10; // eax + std::ostream::sentry *v11; // eax + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + std::ostream::sentry *v14; // eax + std::ostream::sentry *v15; // eax + std::ostream::sentry *v16; // eax + std::ostream::sentry *v17; // eax + std::ostream::sentry *v18; // eax + std::ostream::sentry *v19; // eax + void **v20; // ebx + unsigned int v22; // [esp+1Ch] [ebp-10Ch] + void *v23[6]; // [esp+20h] [ebp-108h] BYREF + _QWORD v24[3]; // [esp+38h] [ebp-F0h] BYREF + void *v25[6]; // [esp+50h] [ebp-D8h] BYREF + void *v26[6]; // [esp+68h] [ebp-C0h] BYREF + _QWORD v27[3]; // [esp+80h] [ebp-A8h] BYREF + void *v28; // [esp+98h] [ebp-90h] BYREF + void *v29; // [esp+B0h] [ebp-78h] BYREF + void *v30; // [esp+C8h] [ebp-60h] BYREF + void *v31; // [esp+E0h] [ebp-48h] BYREF + void *v32; // [esp+F8h] [ebp-30h] BYREF + char v33; // [esp+110h] [ebp-18h] BYREF + + v4 = 1; + if ( !std::operator==((int)this, "button") ) + v4 = std::operator==((int)this, "navigator"); + std::string::basic_string((void **)v27, "bind"); + std::string::basic_string(&v28, "bind:"); + std::string::basic_string(&v29, "catch"); + std::string::basic_string(&v30, "catch:"); + std::string::basic_string(&v31, "capture-bind"); + std::string::basic_string(&v32, "capture-catch"); + std::string::basic_string((void **)v24, (char *)&off_52DE26); + std::string::basic_string(v25, "touchstart"); + std::string::basic_string(v26, "touchend"); + for ( i = 0; i <= 5 && !v4; ++i ) + { + v22 = 0; + do + { + std::string::basic_string(v23, (int)&v27[3 * i]); + std::string::append(v23, (int)&v24[3 * v22]); + v7 = std::map::count(this + 12, (int)v23); + std::string::_M_dispose(v23); + ++v22; + } + while ( v22 <= 2 && !v7 ); + v4 = v7; + } + if ( v4 ) + { + ++WXML::DOMLib::WXMLDom::componentCnt; + v8 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "_af("); + v9 = std::operator<<(v8, a2); + v10 = std::operator<<>(v9, ","); + v11 = std::ostream::_M_insert(v10, 1); + v12 = std::operator<<>(v11, ","); + v13 = std::ostream::_M_insert(v12, this[66], this[67]); + } + else + { + v14 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "_af("); + v15 = std::operator<<(v14, a2); + v16 = std::operator<<>(v15, ","); + v13 = std::ostream::_M_insert(v16, 0); + } + v17 = std::operator<<>(v13, ","); + v18 = std::ostream::_M_insert(v17, this[66], this[67]); + v19 = std::operator<<>(v18, ");"); + std::operator<<>(v19, a4); + v20 = (void **)&v33; + std::string::_M_dispose(v26); + std::string::_M_dispose(v25); + std::string::_M_dispose((void **)v24); + do + { + v20 -= 6; + std::string::_M_dispose(v20); + } + while ( v20 != (void **)v27 ); + return 0; +} +// 52DE26: using guessed type void *off_52DE26; +// 587958: using guessed type int WXML::DOMLib::WXMLDom::componentCnt; + +//----- (004181FA) -------------------------------------------------------- +int __usercall WXML::DOMLib::WXMLDom::RewriteTree@(int a1@, const char **a2@) +{ + unsigned int i; // ebx + int v4; // edx + int v5; // esi + _DWORD *v6; // ecx + const char **v7; // eax + WXML::DOMLib::WXMLDom *v8; // edx + char *v9; // eax + int v10; // edx + int v11; // ebx + _DWORD *v12; // eax + WXML::DOMLib::WXMLDom *v13; // edx + char **v14; // edx + char *v15; // ebx + int v16; // esi + _DWORD *v17; // ecx + const char **v18; // eax + WXML::DOMLib::WXMLDom *v19; // edx + void *v20; // eax + int v21; // edx + char *v22; // eax + unsigned int k; // ebx + int v24; // edx + int v25; // esi + const char **v26; // eax + unsigned int m; // ebx + int v28; // edx + WXML::DOMLib::WXMLDom *v29; // ecx + int v30; // edx + int v31; // ebx + _DWORD *v32; // eax + WXML::DOMLib::WXMLDom *v33; // edx + void *v34; // eax + int v35; // edx + unsigned int *v36; // ebx + char *v37; // eax + _DWORD *v38; // esi + int v39; // ebx + _DWORD *v40; // ebx + unsigned int *v41; // ebx + char *v42; // eax + _DWORD *v43; // esi + int v44; // ebx + _DWORD *v45; // ebx + unsigned int *v46; // ebx + char *v47; // eax + _DWORD *v48; // esi + int v49; // ebx + _DWORD *v50; // esi + _DWORD *v51; // ebx + unsigned int *v52; // esi + char *v53; // eax + _DWORD *v54; // ebx + WXML::DOMLib::WXMLDom *v55; // ecx + unsigned int ii; // ebx + int v57; // edx + int v58; // esi + _DWORD *v59; // eax + WXML::DOMLib::WXMLDom *v60; // edx + void *v61; // eax + int v62; // edx + char *v63; // eax + WXML::DOMLib::WXMLDom *v64; // ecx + unsigned int jj; // ebx + WXML::DOMLib::WXMLDom *v67; // [esp+0h] [ebp-158h] + const WXML::DOMLib::Token *v68; // [esp+4h] [ebp-154h] + const WXML::DOMLib::Token *v69; // [esp+4h] [ebp-154h] + const WXML::DOMLib::Token *v70; // [esp+4h] [ebp-154h] + const WXML::DOMLib::Token *v71; // [esp+4h] [ebp-154h] + char **v72; // [esp+10h] [ebp-148h] + _DWORD *v73; // [esp+14h] [ebp-144h] + const char **v74; // [esp+14h] [ebp-144h] + char **v75; // [esp+14h] [ebp-144h] + _DWORD *v76; // [esp+14h] [ebp-144h] + _DWORD *v77; // [esp+14h] [ebp-144h] + _DWORD *v78; // [esp+14h] [ebp-144h] + int v79; // [esp+18h] [ebp-140h] + int v80; // [esp+18h] [ebp-140h] + unsigned int n; // [esp+18h] [ebp-140h] + _DWORD *v82; // [esp+18h] [ebp-140h] + const char **v83; // [esp+1Ch] [ebp-13Ch] + int v84; // [esp+1Ch] [ebp-13Ch] + unsigned int j; // [esp+1Ch] [ebp-13Ch] + int v86; // [esp+1Ch] [ebp-13Ch] + int v87; // [esp+1Ch] [ebp-13Ch] + char **v88; // [esp+1Ch] [ebp-13Ch] + _DWORD *v89; // [esp+1Ch] [ebp-13Ch] + int v90; // [esp+2Ch] [ebp-12Ch] BYREF + volatile signed __int32 *v91; // [esp+30h] [ebp-128h] BYREF + unsigned int *v92; // [esp+34h] [ebp-124h] BYREF + volatile signed __int32 *v93; // [esp+38h] [ebp-120h] BYREF + void *v94[6]; // [esp+3Ch] [ebp-11Ch] BYREF + void *v95[6]; // [esp+54h] [ebp-104h] BYREF + void *v96[6]; // [esp+6Ch] [ebp-ECh] BYREF + _DWORD *v97; // [esp+84h] [ebp-D4h] BYREF + volatile signed __int32 *v98[5]; // [esp+88h] [ebp-D0h] BYREF + char **v99; // [esp+9Ch] [ebp-BCh] BYREF + volatile signed __int32 *v100[5]; // [esp+A0h] [ebp-B8h] BYREF + void *v101[6]; // [esp+B4h] [ebp-A4h] BYREF + const char *v102; // [esp+CCh] [ebp-8Ch] BYREF + char v103[136]; // [esp+D0h] [ebp-88h] BYREF + + for ( i = 0; ; ++i ) + { + v4 = *(_DWORD *)(a1 + 72); + if ( (*(_DWORD *)(a1 + 76) - v4) >> 3 <= i ) + break; + v5 = *(_DWORD *)(v4 + 8 * i); + std::string::basic_string((void **)&v102, "wx:for"); + v6 = (_DWORD *)(v5 + 48); + a2 = (const char **)(v5 + 52); + v7 = (const char **)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + v6, + (int)&v102); + v67 = v8; + v83 = v7; + std::string::_M_dispose((void **)&v102); + if ( v83 != a2 ) + { + v84 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * i); + std::string::basic_string(v101, "wx:for"); + v9 = std::map::operator[]( + (_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * i) + 48), + v101); + v102 = "wx:for-items"; + WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v9, v68); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + (_DWORD *)(v84 + 48), + (char **)&v102); + WXML::DOMLib::Token::~Token((int)v103); + std::string::_M_dispose(v101); + a2 = (const char **)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * i) + 48); + std::string::basic_string((void **)&v102, "wx:for"); + v67 = (WXML::DOMLib::WXMLDom *)std::map::erase(a2, (int)&v102); + std::string::_M_dispose((void **)&v102); + } + } + for ( j = 0; ; ++j ) + { + v10 = *(_DWORD *)(a1 + 72); + if ( (*(_DWORD *)(a1 + 76) - v10) >> 3 <= j ) + break; + a2 = &v102; + v79 = 8 * j; + v11 = *(_DWORD *)(v10 + 8 * j); + std::string::basic_string((void **)&v102, "wx:for-items"); + v12 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v11 + 48), + (int)&v102); + v67 = v13; + v73 = v12; + std::string::_M_dispose((void **)&v102); + if ( v73 == (_DWORD *)(v11 + 52) && !std::operator==(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "block") ) + { + v14 = WXML::DOMLib::szWXIFControlAttrs; + while ( 1 ) + { + v15 = *v14; + v72 = v14; + if ( !*v14 ) + break; + v16 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j); + std::string::basic_string((void **)&v102, v15); + v17 = (_DWORD *)(v16 + 48); + a2 = (const char **)(v16 + 52); + v18 = (const char **)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + v17, + (int)&v102); + v67 = v19; + v74 = v18; + std::string::_M_dispose((void **)&v102); + v14 = v72 + 1; + if ( v74 != a2 ) + { + std::__shared_ptr::__shared_ptr( + &v97, + (_DWORD *)(*(_DWORD *)(a1 + 72) + v79)); + v20 = operator new((struct type_info *)0x128, (void (__cdecl *)(void *))v68); + WXML::DOMLib::WXMLDom::WXMLDom((int)v20); + zcc::shared_ptr::shared_ptr(v21); + v75 = v99; + std::string::basic_string(v101, v15); + v22 = std::map::operator[](v97 + 12, v101); + v102 = v15; + WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v22, v69); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + v75 + 12, + (char **)&v102); + WXML::DOMLib::Token::~Token((int)v103); + std::string::_M_dispose(v101); + std::string::operator=((unsigned int *)v99, "block"); + WXML::DOMLib::Token::operator=((int)(v99 + 21), (int)(v97 + 21)); + std::string::_M_assign((int)(v99 + 6), (int)(v97 + 6)); + a2 = (const char **)(v97 + 12); + std::string::basic_string((void **)&v102, v15); + std::map::erase(a2, (int)&v102); + std::string::_M_dispose((void **)&v102); + std::vector>::push_back(v99 + 18, &v97); + v67 = (WXML::DOMLib::WXMLDom *)std::__shared_ptr::operator=( + (_DWORD *)(*(_DWORD *)(a1 + 72) + v79), + &v99); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v100); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v98); + break; + } + } + } + } + for ( k = 0; ; ++k ) + { + v24 = *(_DWORD *)(a1 + 72); + if ( (*(_DWORD *)(a1 + 76) - v24) >> 3 <= k ) + break; + if ( !std::operator==(*(_DWORD *)(v24 + 8 * k), "template") ) + goto LABEL_22; + v80 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * k); + std::string::basic_string(v101, "is"); + a2 = 0; + if ( (_DWORD *)(v80 + 52) != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v80 + 48), + (int)v101) ) + { + v25 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * k); + std::string::basic_string((void **)&v102, "name"); + v26 = (const char **)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v25 + 48), + (int)&v102); + LOBYTE(v26) = v25 + 52 == (_DWORD)v26; + a2 = v26; + std::string::_M_dispose((void **)&v102); + } + std::string::_M_dispose(v101); + if ( (_BYTE)a2 ) + { + std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * k), "wx-template"); + } + else + { +LABEL_22: + if ( !std::operator==(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * k), "template") ) + continue; + std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * k), "wx-define"); + } + v67 = (WXML::DOMLib::WXMLDom *)a2; + } + for ( m = 0; ; ++m ) + { + v28 = *(_DWORD *)(a1 + 72); + if ( (*(_DWORD *)(a1 + 76) - v28) >> 3 <= m ) + break; + if ( std::operator==(*(_DWORD *)(v28 + 8 * m), "block") ) + { + std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * m), "block"); + v67 = v29; + } + } + for ( n = 0; ; ++n ) + { + v30 = *(_DWORD *)(a1 + 72); + if ( (*(_DWORD *)(a1 + 76) - v30) >> 3 <= n ) + break; + v86 = 8 * n; + if ( (unsigned __int8)std::operator!=(*(_DWORD *)(v30 + 8 * n), "wx-repeat") ) + { + if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n), "wx-define") ) + { + if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n), "wx-import") ) + { + if ( (unsigned __int8)std::operator!=(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n), "import") ) + { + v31 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n); + std::string::basic_string((void **)&v102, "wx:for-items"); + v32 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v31 + 48), + (int)&v102); + v67 = v33; + v76 = v32; + std::string::_M_dispose((void **)&v102); + if ( v76 != (_DWORD *)(v31 + 52) ) + { + std::__shared_ptr::__shared_ptr( + &v90, + (_DWORD *)(*(_DWORD *)(a1 + 72) + v86)); + v34 = operator new((struct type_info *)0x128, (void (__cdecl *)(void *))v68); + WXML::DOMLib::WXMLDom::WXMLDom((int)v34); + zcc::shared_ptr::shared_ptr(v35); + std::string::operator=(v92, "wx-repeat"); + std::string::_M_assign((int)(v92 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * n) + 24); + WXML::DOMLib::Token::operator=((int)(v92 + 21), v90 + 84); + std::vector>::push_back((char **)v92 + 18, &v90); + v36 = v92; + std::string::basic_string(v101, "wx:for-items"); + v37 = std::map::operator[]((_DWORD *)(v90 + 48), v101); + v102 = "wx:for-items"; + WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v37, v70); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + v36 + 12, + (char **)&v102); + WXML::DOMLib::Token::~Token((int)v103); + std::string::_M_dispose(v101); + v38 = (_DWORD *)(v90 + 48); + std::string::basic_string(v94, "wx:for-items"); + std::map::erase(v38, (int)v94); + std::string::_M_dispose(v94); + v39 = v90; + v77 = (_DWORD *)(v90 + 52); + std::string::basic_string(v95, "wx:for-item"); + v40 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v39 + 48), + (int)v95); + std::string::_M_dispose(v95); + if ( v40 != v77 ) + { + v41 = v92; + std::string::basic_string(v101, "wx:for-item"); + v42 = std::map::operator[]((_DWORD *)(v90 + 48), v101); + v102 = "wx:for-item"; + WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v42, v68); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + v41 + 12, + (char **)&v102); + WXML::DOMLib::Token::~Token((int)v103); + std::string::_M_dispose(v101); + v43 = (_DWORD *)(v90 + 48); + std::string::basic_string(v96, "wx:for-item"); + std::map::erase(v43, (int)v96); + std::string::_M_dispose(v96); + } + v44 = v90; + v78 = (_DWORD *)(v90 + 52); + std::string::basic_string((void **)&v97, "wx:for-index"); + v45 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v44 + 48), + (int)&v97); + std::string::_M_dispose((void **)&v97); + if ( v45 != v78 ) + { + v46 = v92; + std::string::basic_string(v101, "wx:for-index"); + v47 = std::map::operator[]((_DWORD *)(v90 + 48), v101); + v102 = "wx:for-index"; + WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v47, v68); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + v46 + 12, + (char **)&v102); + WXML::DOMLib::Token::~Token((int)v103); + std::string::_M_dispose(v101); + v48 = (_DWORD *)(v90 + 48); + std::string::basic_string((void **)&v99, "wx:for-index"); + std::map::erase(v48, (int)&v99); + std::string::_M_dispose((void **)&v99); + } + v49 = v90; + v50 = (_DWORD *)(v90 + 52); + std::string::basic_string(v101, "wx:key"); + v51 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v49 + 48), + (int)v101); + std::string::_M_dispose(v101); + if ( v51 != v50 ) + { + v52 = v92; + std::string::basic_string(v101, "wx:key"); + v53 = std::map::operator[]((_DWORD *)(v90 + 48), v101); + v102 = "wx:key"; + WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v53, v68); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + v52 + 12, + (char **)&v102); + WXML::DOMLib::Token::~Token((int)v103); + std::string::_M_dispose(v101); + v54 = (_DWORD *)(v90 + 48); + std::string::basic_string((void **)&v102, "wx:key"); + std::map::erase(v54, (int)&v102); + std::string::_M_dispose((void **)&v102); + } + std::__shared_ptr::operator=( + (_DWORD *)(*(_DWORD *)(a1 + 72) + v86), + &v92); + v67 = v55; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v93); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); + } + } + } + } + } + } + for ( ii = 0; ; ++ii ) + { + v57 = *(_DWORD *)(a1 + 72); + if ( (*(_DWORD *)(a1 + 76) - v57) >> 3 <= ii ) + break; + v58 = 8 * ii; + v87 = *(_DWORD *)(v57 + 8 * ii); + std::string::basic_string((void **)&v102, "wx:scope-data"); + v59 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v87 + 48), + (int)&v102); + v67 = v60; + v82 = v59; + std::string::_M_dispose((void **)&v102); + if ( v82 != (_DWORD *)(v87 + 52) ) + { + std::__shared_ptr::__shared_ptr( + &v97, + (_DWORD *)(v58 + *(_DWORD *)(a1 + 72))); + v61 = operator new((struct type_info *)0x128, (void (__cdecl *)(void *))v68); + WXML::DOMLib::WXMLDom::WXMLDom((int)v61); + zcc::shared_ptr::shared_ptr(v62); + std::string::operator=((unsigned int *)v99, "wx-scope"); + std::string::_M_assign((int)(v99 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * ii) + 24); + WXML::DOMLib::Token::operator=((int)(v99 + 21), (int)(v97 + 21)); + std::vector>::push_back(v99 + 18, &v97); + v88 = v99; + std::string::basic_string(v101, "wx:scope-data"); + v63 = std::map::operator[](v97 + 12, v101); + v102 = "wx:scope-data"; + WXML::DOMLib::Token::Token((int)v103, (WXML::DOMLib::Token *)v63, v71); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + v88 + 12, + (char **)&v102); + WXML::DOMLib::Token::~Token((int)v103); + std::string::_M_dispose(v101); + v89 = v97 + 12; + std::string::basic_string((void **)&v102, "wx:scope-data"); + std::map::erase(v89, (int)&v102); + std::string::_M_dispose((void **)&v102); + std::__shared_ptr::operator=( + (_DWORD *)(*(_DWORD *)(a1 + 72) + v58), + &v99); + v67 = v64; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v100); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v98); + } + } + for ( jj = 0; (*(_DWORD *)(a1 + 76) - *(_DWORD *)(a1 + 72)) >> 3 > jj; ++jj ) + WXML::DOMLib::WXMLDom::RewriteTree(v67); + return 0; +} +// 41825A: variable 'v8' is possibly undefined +// 4182B8: variable 'v68' is possibly undefined +// 41838B: variable 'v13' is possibly undefined +// 418411: variable 'v19' is possibly undefined +// 418464: variable 'v21' is possibly undefined +// 4184A8: variable 'v69' is possibly undefined +// 418722: variable 'v29' is possibly undefined +// 418814: variable 'v33' is possibly undefined +// 418864: variable 'v35' is possibly undefined +// 41890B: variable 'v70' is possibly undefined +// 418C15: variable 'v55' is possibly undefined +// 418C8C: variable 'v60' is possibly undefined +// 418CDF: variable 'v62' is possibly undefined +// 418D90: variable 'v71' is possibly undefined +// 418E19: variable 'v64' is possibly undefined +// 418E4F: variable 'v67' is possibly undefined +// 460640: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 52E434: using guessed type char *WXML::DOMLib::szWXIFControlAttrs[4]; + +//----- (00418F4E) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Parser::DOM(WXML::DOMLib::Parser *a1) +{ + WXML::DOMLib::Token *v2; // eax + _DWORD *v3; // eax + const char **v4; // eax + _DWORD *v5; // eax + _DWORD *v6; // ecx + void *v7; // eax + int v8; // edx + _DWORD *v9; // eax + int v10; // eax + _DWORD *v11; // eax + _DWORD *exception; // esi + WXML::DOMLib::Token *v14; // eax + _DWORD *v15; // esi + _DWORD *v16; // eax + int v17; // eax + _DWORD *v18; // eax + _DWORD *v19; // eax + _DWORD *v20; // esi + _DWORD *v21; // esi + _DWORD *v22; // esi + _DWORD *v23; // esi + _DWORD *v24; // edx + int v25; // eax + int v26; // edi + int v27; // ecx + _DWORD *v28; // eax + void *v29; // eax + int v30; // edx + const WXML::DOMLib::Token *v32; // [esp+4h] [ebp-1D4h] + char *v33; // [esp+4h] [ebp-1D4h] + const WXML::DOMLib::Token *v34; // [esp+4h] [ebp-1D4h] + void (__cdecl *v35)(void *); // [esp+4h] [ebp-1D4h] + const char *v36; // [esp+4h] [ebp-1D4h] + const WXML::DOMLib::Token *v37; // [esp+4h] [ebp-1D4h] + const char *v38; // [esp+4h] [ebp-1D4h] + const char *v39; // [esp+4h] [ebp-1D4h] + const char *v40; // [esp+4h] [ebp-1D4h] + WXML::DOMLib::Token *v41[6]; // [esp+28h] [ebp-1B0h] BYREF + char *v42; // [esp+40h] [ebp-198h] BYREF + void *v43[6]; // [esp+58h] [ebp-180h] BYREF + int v44[6]; // [esp+70h] [ebp-168h] BYREF + int v45; // [esp+88h] [ebp-150h] + int v46; // [esp+E0h] [ebp-F8h] BYREF + volatile signed __int32 *v47; // [esp+E4h] [ebp-F4h] BYREF + unsigned int *v48; // [esp+150h] [ebp-88h] BYREF + volatile signed __int32 *v49[33]; // [esp+154h] [ebp-84h] BYREF + + v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::Token((int)v44, v2, v32); + if ( v45 ) + { + if ( v45 == 4 ) + return WXML::DOMLib::Token::~Token((int)v44); + } + else + { + if ( WXML::DOMLib::Token::IsMatch((int)v44, (WXML::DOMLib::Token *)"<", v33) ) + { + ++*((_DWORD *)a1 + 25); + v3 = WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::operator=((int)v44, (int)v3); + WXML::DOMLib::Token::Token((int)&v46, (WXML::DOMLib::Token *)v44, v34); + v4 = (const char **)WXML::DOMLib::Token::ToString[abi:cxx11]((int)v44); + if ( !WXML::DOMLib::Parser::IsValidTag(v4) ) + { + exception = __cxa_allocate_exception(0x18u); + WXML::DOMLib::Parser::Error(exception, a1, "unexpected tag", 0); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, + WXML::DOMLib::ParseException::~ParseException); + } + ++*((_DWORD *)a1 + 25); + v5 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v44); + v6 = (_DWORD *)*((_DWORD *)a1 + 8); + if ( v6 == (_DWORD *)(*((_DWORD *)a1 + 10) - 24) ) + { + std::deque::_M_push_back_aux(v5); + } + else + { + std::string::basic_string(v6, (int)v5); + *((_DWORD *)a1 + 8) += 24; + } + v7 = operator new((struct type_info *)0x128, v35); + WXML::DOMLib::WXMLDom::WXMLDom((int)v7); + zcc::shared_ptr::shared_ptr(v8); + v9 = WXML::DOMLib::Token::ToString[abi:cxx11]((int)v44); + std::string::_M_assign((int)v48, (int)v9); + std::string::_M_assign((int)(v48 + 6), (int)v48); + WXML::DOMLib::Token::operator=((int)(v48 + 21), (int)v44); + v10 = std::deque>::back((_DWORD *)a1 + 12); + std::vector>::push_back((char **)(*(_DWORD *)v10 + 72), &v48); + std::deque>::push_back((_DWORD *)a1 + 12, &v48); + WXML::DOMLib::Parser::ATTR_LIST(a1); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v49); + v11 = WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::operator=((int)v44, (int)v11); + if ( !v45 ) + { + if ( WXML::DOMLib::Token::IsMatch((int)v44, (WXML::DOMLib::Token *)">", v36) ) + { + ++*((_DWORD *)a1 + 25); + WXML::DOMLib::Parser::DOMS((WXML::DOMLib::Parser *)&v48); + v14 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::Token((int)&v48, v14, v37); + if ( v49[5] || !WXML::DOMLib::Token::IsMatch((int)&v48, (WXML::DOMLib::Token *)"((int)v43, "expect end-tag `", (int)v41); + v19 = std::string::append(v43, "`."); + std::string::basic_string(&v42, v19); + std::string::_M_dispose(v43); + v20 = __cxa_allocate_exception(0x18u); + WXML::DOMLib::Parser::Error(v20, a1, v42, 0); + __cxa_throw( + v20, + (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, + WXML::DOMLib::ParseException::~ParseException); + } + ++*((_DWORD *)a1 + 25); + std::deque::pop_back((_DWORD *)a1 + 2); + std::deque>::pop_back((_DWORD *)a1 + 12); + v18 = WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::operator=((int)&v48, (int)v18); + if ( !WXML::DOMLib::Token::IsMatch((int)&v48, (WXML::DOMLib::Token *)">", v40) ) + { + v21 = __cxa_allocate_exception(0x18u); + WXML::DOMLib::Parser::Error(v21, a1, "unexpected token", 0); + __cxa_throw( + v21, + (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, + WXML::DOMLib::ParseException::~ParseException); + } + ++*((_DWORD *)a1 + 25); + std::string::_M_dispose((void **)v41); + WXML::DOMLib::Token::~Token((int)&v48); + goto LABEL_27; + } + if ( WXML::DOMLib::Token::IsMatch((int)v44, (WXML::DOMLib::Token *)"/>", (const char *)v37) ) + { + ++*((_DWORD *)a1 + 25); + std::deque>::pop_back((_DWORD *)a1 + 12); + std::deque::pop_back((_DWORD *)a1 + 2); +LABEL_27: + WXML::DOMLib::Token::~Token((int)&v46); + return WXML::DOMLib::Token::~Token((int)v44); + } + } + v22 = __cxa_allocate_exception(0x18u); + WXML::DOMLib::Parser::Error(v22, a1, "unexpected token", 0); + __cxa_throw( + v22, + (struct type_info *)&`typeinfo for'WXML::DOMLib::ParseException, + WXML::DOMLib::ParseException::~ParseException); + } + if ( WXML::DOMLib::Token::IsMatch((int)v44, (WXML::DOMLib::Token *)" v25 ) + { + LOBYTE(v24) = *(_BYTE *)(v27 + v25); + v24 = (_DWORD *)((char *)v24 - 9); + if ( (unsigned __int8)v24 > 0x17u || !_bittest(&v26, (unsigned int)v24) ) + { + v28 = (_DWORD *)std::deque>::back((_DWORD *)a1 + 12); + std::__shared_ptr::__shared_ptr(&v46, v28); + v29 = operator new((struct type_info *)0x128, (void (__cdecl *)(void *))v33); + WXML::DOMLib::WXMLDom::WXMLDom((int)v29); + zcc::shared_ptr::shared_ptr(v30); + std::string::operator=(v48, "TEXTNODE"); + WXML::DOMLib::Token::operator=((int)(v48 + 21), (int)v44); + std::vector>::push_back((char **)(v46 + 72), &v48); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v49); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v47); + return WXML::DOMLib::Token::~Token((int)v44); + } + ++v25; + } + } + return WXML::DOMLib::Token::~Token((int)v44); +} +// 418F6A: variable 'v32' is possibly undefined +// 418F8B: variable 'v33' is possibly undefined +// 418FC1: variable 'v34' is possibly undefined +// 419028: variable 'v35' is possibly undefined +// 41903F: variable 'v8' is possibly undefined +// 419139: variable 'v36' is possibly undefined +// 419167: variable 'v37' is possibly undefined +// 419180: variable 'v38' is possibly undefined +// 41922F: variable 'v39' is possibly undefined +// 41926E: variable 'v40' is possibly undefined +// 4194CD: variable 'v30' is possibly undefined +// 460640: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 4D7A1C: using guessed type _DWORD __stdcall std::deque::_M_push_back_aux(_DWORD); +// 533C64: using guessed type int *`typeinfo for'WXML::DOMLib::ParseException; + +//----- (004195FE) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Parser::DOMS(WXML::DOMLib::Parser *a1) +{ + WXML::DOMLib::Token *v2; // eax + _DWORD *exception; // esi + const WXML::DOMLib::Token *v5; // [esp+4h] [ebp-84h] + const char *v6; // [esp+4h] [ebp-84h] + char v7[24]; // [esp+10h] [ebp-78h] BYREF + int v8; // [esp+28h] [ebp-60h] + + while ( 1 ) + { + WXML::DOMLib::Parser::DOM(a1); + v2 = (WXML::DOMLib::Token *)WXML::DOMLib::Parser::Peek(a1); + WXML::DOMLib::Token::Token((int)v7, v2, v5); + if ( v8 == 4 ) + break; + if ( WXML::DOMLib::Token::IsMatch((int)v7, (WXML::DOMLib::Token *)"::pop_back((_DWORD *)this + 2); + while ( *((_DWORD *)this + 18) != *((_DWORD *)this + 14) ) + std::deque>::pop_back((_DWORD *)this + 12); + v6 = *((_DWORD *)this + 22); + v7 = *((_DWORD *)this + 23); + *((_DWORD *)this + 25) = 0; + if ( v6 != v7 ) + { + v8 = v6; + do + { + v14 = v7; + v15 = v8; + WXML::DOMLib::Token::~Token(v8); + v7 = v14; + v8 = v15 + 112; + } + while ( v14 != v15 + 112 ); + *((_DWORD *)this + 23) = v6; + } + *((_DWORD *)this + 32) = 4; + std::string::_M_assign((int)this + 328, a4); + WXML::DOMLib::Tokenizer::Tokenizer(a2, a4); + Tokens = WXML::DOMLib::Tokenizer::GetTokens(v18, (_DWORD *)this + 22, a3, a5); + if ( !Tokens ) + { + v10 = operator new((struct type_info *)0x128, v13); + WXML::DOMLib::WXMLDom::WXMLDom((int)v10); + zcc::shared_ptr::shared_ptr(v11); + std::__shared_ptr::operator=(this, &v16); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v17); + std::string::operator=(*(unsigned int **)this, "root"); + std::deque>::push_back((_DWORD *)this + 12, this); + WXML::DOMLib::Parser::DOMS(this); + } + std::string::_M_dispose(&v20); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v19); + return Tokens; +} +// 419782: variable 'v13' is possibly undefined +// 419798: variable 'v11' is possibly undefined +// 420974: using guessed type _DWORD __stdcall WXML::DOMLib::Tokenizer::Tokenizer(_DWORD, _DWORD); +// 460640: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 4196C2: using guessed type char var_54[4]; + +//----- (00419837) -------------------------------------------------------- +unsigned int __cdecl WXML::DOMLib::recurseDependencies(int *a1, int *a2, _DWORD *a3) +{ + _DWORD *v3; // edi + BOOL v4; // edi + char *v5; // eax + int *v6; // eax + int insert_unique_pos; // eax + _DWORD *v8; // edx + _DWORD *v9; // edi + unsigned int i; // ebx + int v11; // edx + unsigned int result; // eax + int v13; // eax + void (__cdecl *v14)(void *); // [esp+4h] [ebp-64h] + _DWORD *v15; // [esp+18h] [ebp-50h] + char v16; // [esp+1Fh] [ebp-49h] + void *v17[6]; // [esp+20h] [ebp-48h] BYREF + void *v18[12]; // [esp+38h] [ebp-30h] BYREF + + if ( std::operator==(*a1, "import") || std::operator==(*a1, "include") ) + { + v3 = (_DWORD *)(*a1 + 48); + std::string::basic_string(v18, (char *)&off_52DF44); + v4 = std::map::count(v3, (int)v18); + std::string::_M_dispose(v18); + if ( v4 ) + { + std::string::basic_string(v17, (char *)&off_52DF44); + v5 = std::map::operator[]((_DWORD *)(*a1 + 48), v17); + v6 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v5); + WXML::DOMLib::resolvePath((int)v18, a2, v6); + insert_unique_pos = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( + a3, + (int)v18); + v9 = v8; + if ( v8 ) + { + v16 = 1; + if ( !insert_unique_pos && v8 != a3 + 1 ) + v16 = std::operator<((int)v18, (int)(v8 + 4)); + v15 = operator new((struct type_info *)0x28, v14); + std::string::basic_string(v15 + 4, v18); + std::_Rb_tree_insert_and_rebalance(v16, v15, v9, a3 + 1); + ++a3[5]; + } + std::string::_M_dispose(v18); + std::string::_M_dispose(v17); + } + } + for ( i = 0; ; ++i ) + { + v11 = *(_DWORD *)(*a1 + 72); + result = (*(_DWORD *)(*a1 + 76) - v11) >> 3; + if ( i >= result ) + break; + v13 = v11 + 8 * i; + WXML::DOMLib::recurseDependencies(v13, a2, a3); + } + return result; +} +// 4198EB: variable 'v8' is possibly undefined +// 419920: variable 'v14' is possibly undefined +// 52DF44: using guessed type void *off_52DF44; + +//----- (004199C0) -------------------------------------------------------- +int __fastcall WXML::DOMLib::WXMLDom::RecordAllPath(int a1) +{ + BOOL v2; // edi + _DWORD *v3; // edi + char *v4; // eax + int v5; // eax + unsigned int i; // esi + int v7; // edx + int v8; // ecx + volatile signed __int32 **v9; // eax + int v11; // [esp+1Ch] [ebp-4Ch] + void *v12[6]; // [esp+20h] [ebp-48h] BYREF + void *v13[12]; // [esp+38h] [ebp-30h] BYREF + + if ( std::operator==(a1, "import") || std::operator==(a1, "include") ) + { + std::string::basic_string(v13, (char *)&off_52DF44); + v2 = std::map::count((_DWORD *)(a1 + 48), (int)v13); + std::string::_M_dispose(v13); + if ( v2 ) + { + v3 = *(_DWORD **)(a1 + 248); + std::string::basic_string(v12, (char *)&off_52DF44); + v4 = std::map::operator[]((_DWORD *)(a1 + 48), v12); + v5 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v4); + std::string::basic_string(v13, v5); + if ( v3 + 1 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + v3, + (int)v13) ) + { + v11 = v3[5]; + *std::map::operator[](v3, (int)v13) = v11; + std::vector::push_back(v3 + 6, (int)v13); + } + std::string::_M_dispose(v13); + std::string::_M_dispose(v12); + } + } + for ( i = 0; ; ++i ) + { + v7 = *(_DWORD *)(a1 + 72); + if ( i >= (*(_DWORD *)(a1 + 76) - v7) >> 3 ) + break; + v8 = *(_DWORD *)(v7 + 8 * i); + *(_DWORD *)(v8 + 248) = *(_DWORD *)(a1 + 248); + v9 = std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( + (volatile signed __int32 **)(v8 + 252), + *(volatile signed __int32 **)(a1 + 252)); + WXML::DOMLib::WXMLDom::RecordAllPath((WXML::DOMLib::WXMLDom *)v9); + } + return 0; +} +// 52DF44: using guessed type void *off_52DF44; + +//----- (00419B0E) -------------------------------------------------------- +void __fastcall std::deque>::~deque(int a1) +{ + int v2; // eax + int v3; // edi + int *i; // esi + int v5; // edx + int v6; // edx + void **v7; // esi + unsigned int v8; // edi + void *v9; // eax + int v10; // [esp+1Ch] [ebp-6Ch] + int v11; // [esp+20h] [ebp-68h] + int v12; // [esp+24h] [ebp-64h] + int v13; // [esp+28h] [ebp-60h] + unsigned int v14; // [esp+2Ch] [ebp-5Ch] + int v15[4]; // [esp+30h] [ebp-58h] BYREF + int v16[4]; // [esp+40h] [ebp-48h] BYREF + char v17[16]; // [esp+50h] [ebp-38h] BYREF + char v18[16]; // [esp+60h] [ebp-28h] BYREF + + qmemcpy(v18, (const void *)(a1 + 24), sizeof(v18)); + qmemcpy(v17, (const void *)(a1 + 8), sizeof(v17)); + qmemcpy(v16, v17, sizeof(v16)); + qmemcpy(v15, v18, sizeof(v15)); + v2 = v16[0]; + v3 = v15[0]; + v11 = v16[2]; + v13 = v16[3]; + v12 = v15[1]; + v14 = v15[3]; + for ( i = (int *)(v16[3] + 4); (unsigned int)i < v14; ++i ) + { + v5 = *i; + v10 = v2; + std::_Destroy_aux::__destroy *>(v5, v5, v5 + 512); + v2 = v10; + } + if ( v14 == v13 ) + { + std::_Destroy_aux::__destroy *>(v13, v2, v3); + } + else + { + std::_Destroy_aux::__destroy *>(v13, v2, v11); + std::_Destroy_aux::__destroy *>(v6, v12, v3); + } + if ( *(_DWORD *)a1 ) + { + v7 = *(void ***)(a1 + 20); + v8 = *(_DWORD *)(a1 + 36) + 4; + while ( v8 > (unsigned int)v7 ) + { + v9 = *v7++; + operator delete(v9); + } + operator delete(*(void **)a1); + } +} +// 419BB3: variable 'v6' is possibly undefined + +//----- (00419BF4) -------------------------------------------------------- +void __fastcall WXML::EXPRLib::Parser::~Parser(int a1) +{ + const void *v2; // esi + int v3; // eax + int v4; // edi + int v5; // edx + int *i; // esi + int v7; // edx + int v8; // edx + void **v9; // esi + unsigned int v10; // edi + void *v11; // eax + int v12; // [esp+1Ch] [ebp-6Ch] + int v13; // [esp+20h] [ebp-68h] + int v14; // [esp+24h] [ebp-64h] + int v15; // [esp+28h] [ebp-60h] + unsigned int v16; // [esp+2Ch] [ebp-5Ch] + int v17[4]; // [esp+30h] [ebp-58h] BYREF + int v18[4]; // [esp+40h] [ebp-48h] BYREF + char v19[16]; // [esp+50h] [ebp-38h] BYREF + char v20[16]; // [esp+60h] [ebp-28h] BYREF + + v2 = (const void *)(a1 + 64); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 84)); + qmemcpy(v19, v2, sizeof(v19)); + qmemcpy(v20, (const void *)(a1 + 48), sizeof(v20)); + qmemcpy(v18, v20, sizeof(v18)); + qmemcpy(v17, v19, sizeof(v17)); + v3 = v18[0]; + v4 = v17[0]; + v13 = v18[2]; + v15 = v18[3]; + v14 = v17[1]; + v16 = v17[3]; + v5 = v18[3]; + for ( i = (int *)(v18[3] + 4); (unsigned int)i < v16; ++i ) + { + v7 = *i; + v12 = v3; + std::_Destroy_aux::__destroy *>(v7, v7, v7 + 512); + v3 = v12; + } + if ( v16 == v15 ) + { + std::_Destroy_aux::__destroy *>(v5, v3, v4); + } + else + { + std::_Destroy_aux::__destroy *>(v13, v3, v13); + std::_Destroy_aux::__destroy *>(v8, v14, v4); + } + if ( *(_DWORD *)(a1 + 40) ) + { + v9 = *(void ***)(a1 + 60); + v10 = *(_DWORD *)(a1 + 76) + 4; + while ( v10 > (unsigned int)v9 ) + { + v11 = *v9++; + operator delete(v11); + } + operator delete(*(void **)(a1 + 40)); + } + std::deque>::~deque(a1); +} +// 419CA1: variable 'v8' is possibly undefined +// 419CAA: variable 'v5' is possibly undefined + +//----- (00419CEA) -------------------------------------------------------- +int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps( + int *a1, + unsigned int *a2, + int a3, + _DWORD *a4, + _DWORD *a5, + char a6, + int a7, + char a8, + int *a9, + char a10, + int a11) +{ + const char **v11; // eax + const char *v12; // eax + void *exception; // ebx + int v14; // ebx + int v15; // edx + int v16; // esi + int v17; // esi + int v18; // edi + char *v19; // esi + _DWORD *v20; // ecx + char *v21; // eax + char *v22; // ebx + char *v23; // edi + int i; // edi + int v25; // eax + unsigned int j; // esi + int v27; // ebx + char *v28; // edi + char *v29; // ecx + char *k; // eax + int v31; // edx + std::ostream::sentry *v32; // ebx + char *v33; // esi + bool v34; // zf + char *v35; // eax + _DWORD *v36; // edx + _DWORD *v37; // edi + _DWORD *v38; // esi + char v39; // al + _DWORD *v40; // esi + void *v41; // eax + _DWORD *v42; // esi + void *v43; // eax + int v44; // edi + int v45; // eax + unsigned int v46; // esi + std::ostream::sentry *v47; // esi + std::ostream::sentry *v48; // eax + std::ostream::sentry *v49; // eax + std::ostream::sentry *v50; // eax + int *v51; // edi + int v52; // edi + int v53; // esi + char *v54; // edi + int v55; // eax + std::ostream::sentry *v56; // eax + int v57; // eax + std::ostream::sentry *v58; // eax + std::ostream::sentry *v59; // eax + char **v61; // [esp+4h] [ebp-114h] + void (__cdecl *v62)(void *); // [esp+4h] [ebp-114h] + void (__cdecl *v63)(void *); // [esp+4h] [ebp-114h] + void (__cdecl *v64)(void *); // [esp+4h] [ebp-114h] + _DWORD *v65; // [esp+28h] [ebp-F0h] + char *v66; // [esp+30h] [ebp-E8h] + char *v67; // [esp+34h] [ebp-E4h] + int v68; // [esp+40h] [ebp-D8h] + int v69; // [esp+44h] [ebp-D4h] + unsigned int m; // [esp+48h] [ebp-D0h] + int v71; // [esp+4Ch] [ebp-CCh] + int v72; // [esp+4Ch] [ebp-CCh] + char v73; // [esp+4Ch] [ebp-CCh] + char v74; // [esp+5Ah] [ebp-BEh] BYREF + char v75; // [esp+5Bh] [ebp-BDh] BYREF + char *v76; // [esp+5Ch] [ebp-BCh] BYREF + char *v77; // [esp+60h] [ebp-B8h] + char *v78; // [esp+64h] [ebp-B4h] + char *v79; // [esp+68h] [ebp-B0h] BYREF + char *v80; // [esp+6Ch] [ebp-ACh] + char *v81; // [esp+70h] [ebp-A8h] + void *v82[2]; // [esp+74h] [ebp-A4h] BYREF + char v83; // [esp+7Ch] [ebp-9Ch] BYREF + int *v84; // [esp+8Ch] [ebp-8Ch] BYREF + void *v85[2]; // [esp+90h] [ebp-88h] BYREF + char v86; // [esp+98h] [ebp-80h] BYREF + void *v87; // [esp+A8h] [ebp-70h] BYREF + int v88; // [esp+ACh] [ebp-6Ch] BYREF + void *v89; // [esp+B0h] [ebp-68h] BYREF + void *v90; // [esp+B4h] [ebp-64h] BYREF + int v91; // [esp+B8h] [ebp-60h] + _DWORD *v92; // [esp+BCh] [ebp-5Ch] + int v93; // [esp+C0h] [ebp-58h] + int v94; // [esp+C4h] [ebp-54h] + int v95; // [esp+C8h] [ebp-50h] + _DWORD *v96; // [esp+CCh] [ebp-4Ch] + void *v97; // [esp+D0h] [ebp-48h] + int v98; // [esp+D4h] [ebp-44h] + void *v99; // [esp+D8h] [ebp-40h] + void *v100; // [esp+DCh] [ebp-3Ch] + int v101; // [esp+E0h] [ebp-38h] + _DWORD *v102; // [esp+E4h] [ebp-34h] + void *v103; // [esp+E8h] [ebp-30h] + void *v104; // [esp+ECh] [ebp-2Ch] + int v105; // [esp+F0h] [ebp-28h] + _DWORD *v106; // [esp+F4h] [ebp-24h] + int *v107; // [esp+F8h] [ebp-20h] + volatile signed __int32 *v108; // [esp+FCh] [ebp-1Ch] + + if ( a8 ) + v11 = (const char **)WXML::DOMLib::Token::ToString[abi:cxx11]((int)a5); + else + v11 = (const char **)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)a5); + v12 = *v11; + v74 = 0; + v76 = 0; + v77 = 0; + v78 = 0; + v68 = WXML::StringTemplating::Deal(v12, (int)a2, &v76, &v74); + if ( v68 ) + { + exception = __cxa_allocate_exception(0x18u); + std::string::basic_string(&v87, "did you forget }}, ' or \""); + std::string::basic_string((void **)&v84, (char *)&byte_52DD60); + WXML::DOMLib::WXMLDom::Error((int)exception, a1, (int)a5, (int *)&v84, (int *)&v87); + std::string::_M_dispose((void **)&v84); + std::string::_M_dispose(&v87); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + if ( a8 ) + { + v14 = a11 + 4; + std::string::basic_string(&v87, "plain_text_marker"); + v15 = *(_DWORD *)(a11 + 8); + v16 = a11 + 4; + while ( v15 ) + { + v71 = v15; + if ( (unsigned __int8)std::operator<(v15 + 16, (int)&v87) ) + { + v15 = *(_DWORD *)(v71 + 12); + } + else + { + v16 = v71; + v15 = *(_DWORD *)(v71 + 8); + } + } + if ( v14 != v16 && (unsigned __int8)std::operator<((int)&v87, v16 + 16) ) + v16 = a11 + 4; + std::string::_M_dispose(&v87); + if ( v14 != v16 ) + { + std::string::basic_string(&v87, "plain_text_marker"); + v17 = *(_DWORD *)(a11 + 8); + v18 = a11 + 4; + while ( v17 ) + { + if ( (unsigned __int8)std::operator<(v17 + 16, (int)&v87) ) + { + v17 = *(_DWORD *)(v17 + 12); + } + else + { + v18 = v17; + v17 = *(_DWORD *)(v17 + 8); + } + } + if ( v14 == v18 || (unsigned __int8)std::operator<((int)&v87, v18 + 16) ) + std::__throw_out_of_range((std::out_of_range *)"map::at"); + std::string::basic_string(v82, v18 + 40); + std::string::_M_dispose(&v87); + v85[0] = &v86; + v85[1] = 0; + v86 = 0; + v84 = 0; + std::string::operator=((unsigned int *)v85, (char *)&byte_52DD60); + v19 = v76; + if ( v76 != v77 && *(_DWORD *)v76 == 1 ) + { + if ( v77 == v78 ) + { + std::vector::_M_realloc_insert( + &v76, + v76, + &v84); + } + else + { + v87 = &v76; + v88 = (int)v84; + std::string::basic_string(&v89, (int)v85); + v20 = v77 + 4; + v21 = v77 - 24; + *(_DWORD *)v77 = *((_DWORD *)v77 - 7); + std::string::basic_string(v20, v21); + v22 = v77 - 28; + v23 = v77 - 28; + v77 += 28; + for ( i = -1227133513 * ((v23 - v19) >> 2); i > 0; --i ) + { + v25 = *((_DWORD *)v22 - 7); + v22 -= 28; + *((_DWORD *)v22 + 7) = v25; + std::string::operator=((_DWORD *)v22 + 8, (_DWORD *)v22 + 1); + } + *(_DWORD *)v19 = v88; + std::string::operator=((_DWORD *)v19 + 1, &v89); + std::string::_M_dispose(&v89); + } + } + if ( v76 != v77 && *((_DWORD *)v77 - 7) == 1 ) + std::vector::push_back(&v76, &v84); + for ( j = 1; -1227133513 * ((v77 - v76) >> 2) > j; ++j ) + { + v27 = 28 * j; + v28 = &v76[28 * j]; + if ( *(_DWORD *)v28 == 1 ) + { + v29 = &v76[v27 - 28]; + if ( !*(_DWORD *)v29 ) + std::string::operator+=((_DWORD *)v29 + 1, (int)v82); + } + else if ( !*(_DWORD *)v28 && *(_DWORD *)&v76[v27 - 28] == 1 ) + { + std::string::basic_string(&v87, (int)v82); + std::string::append(&v87, (int)(v28 + 4)); + std::string::operator=(&v76[v27 + 4], &v87); + std::string::_M_dispose(&v87); + } + } + std::string::_M_dispose(v85); + std::string::_M_dispose(v82); + } + } + if ( a7 ) + { + v72 = 0; + for ( k = v76; v77 != k; k += 28 ) + { + v31 = *(_DWORD *)k != 0; + v72 += v31; + } + if ( v72 != a7 ) + { + a5[14] = -3; + std::string::operator=(a5 + 15, "the very attr must be an expression (surrouned by `{{..}}`)"); + v68 = -1; + goto LABEL_109; + } + } + if ( v77 == v76 ) + { + v88 = (int)&v90; + v89 = 0; + LOBYTE(v90) = 0; + v87 = 0; + std::string::operator=((unsigned int *)&v88, (char *)&byte_52DD60); + v87 = 0; + std::vector::push_back(&v76, &v87); + std::string::_M_dispose((void **)&v88); + } + v73 = 1; + if ( (unsigned int)(-1227133513 * ((v77 - v76) >> 2)) <= 1 ) + { + v73 = 0; + if ( v77 - v76 == 28 ) + v73 = a8 & (*(_DWORD *)v76 == 1); + } + v32 = (std::ostream::sentry *)(a3 + 8); + std::operator<<>((std::ostream::sentry *)(a3 + 8), "Z("); + v79 = 0; + v80 = 0; + v81 = 0; + if ( v73 ) + { + std::operator<<>(v32, "[a,"); + ++a9[1]; + } + v67 = (char *)&off_52DFC8; + if ( a8 ) + v67 = "t_"; + v66 = (char *)&byte_52DD60; + if ( a6 ) + v66 = (char *)&unk_52DFCC; + for ( m = 0; -1227133513 * ((v77 - v76) >> 2) > m; ++m ) + { + if ( m ) + std::operator<<>(v32, ","); + v82[1] = 0; + v83 = 0; + v33 = &v76[28 * m]; + v69 = 28 * m; + v34 = *(_DWORD *)v33 == 0; + v82[0] = &v83; + v35 = "s_"; + if ( !v34 ) + v35 = "e_"; + std::string::operator=((unsigned int *)v82, v35); + std::string::operator+=(v82, v67); + std::string::operator+=(v82, (int)(v33 + 4)); + std::string::operator+=(v82, v66); + v36 = a4 + 1; + v37 = (_DWORD *)a4[2]; + v38 = a4 + 1; + while ( v37 ) + { + v65 = v36; + v39 = std::operator<((int)(v37 + 4), (int)v82); + v36 = v65; + if ( v39 ) + { + v37 = (_DWORD *)v37[3]; + } + else + { + v38 = v37; + v37 = (_DWORD *)v37[2]; + } + } + if ( v36 == v38 || (unsigned __int8)std::operator<((int)v82, (int)(v38 + 4)) ) + { + if ( *(_DWORD *)&v76[28 * m] ) + { + v87 = 0; + v89 = 0; + v90 = 0; + v91 = 0; + v92 = 0; + v93 = 0; + v94 = 0; + v95 = 0; + v96 = 0; + v88 = 8; + v87 = operator new((struct type_info *)0x20, (void (__cdecl *)(void *))v61); + v40 = (char *)v87 + ((2 * v88 - 2) & 0xFFFFFFFC); + v41 = operator new((struct type_info *)0x200, v62); + *v40 = v41; + v92 = v40; + v90 = v41; + v91 = (int)v41 + 512; + v96 = v40; + v94 = (int)v41; + v95 = (int)v41 + 512; + v89 = v41; + v93 = (int)v41; + v97 = 0; + v99 = 0; + v100 = 0; + v101 = 0; + v102 = 0; + v103 = 0; + v104 = 0; + v105 = 0; + v106 = 0; + v98 = 8; + v97 = operator new((struct type_info *)0x20, v63); + v42 = (char *)v97 + ((2 * v98 - 2) & 0xFFFFFFFC); + v43 = operator new((struct type_info *)0x200, v64); + *v42 = v43; + v102 = v42; + v100 = v43; + v101 = (int)v43 + 512; + v106 = v42; + v104 = v43; + v105 = (int)v43 + 512; + v99 = v43; + v103 = v43; + v107 = 0; + v108 = 0; + std::string::basic_string((void **)&v84, (char *)&byte_52DD60); + v44 = WXML::EXPRLib::Parser::Parse( + (int)&v87, + (void (__cdecl *)(void *))&v84, + (char **)&v76[v69 + 4], + (int)&v84, + 1, + 1, + a2, + a6); + std::string::_M_dispose((void **)&v84); + if ( v44 ) + { + a5[14] = -3; + std::string::_M_assign((int)(a5 + 15), (int)a2); + std::operator<<>(v32, "undefined"); + WXML::EXPRLib::Parser::~Parser((int)&v87); + std::string::_M_dispose(v82); + break; + } + v84 = v107; + v85[0] = (void *)v108; + if ( v108 ) + __gnu_cxx::__atomic_add_dispatch(v108 + 1); + v51 = v84; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v85); + std::string::basic_string((void **)&v84, (char *)&byte_52DD60); + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(v51, a3, (int)&v84, &v75); + std::string::_M_dispose((void **)&v84); + WXML::EXPRLib::Parser::~Parser((int)&v87); + } + else + { + std::operator<<>(v32, "[3,'"); + WXML::DOMLib::removern(&v87, &v76[v69 + 4]); + WXML::Rewrite::ToStringCode((int *)&v87, a3); + std::operator<<>(v32, "']"); + std::string::_M_dispose(&v87); + } + v52 = *a9; + v53 = a9[1]; + if ( !v73 ) + v53 = -1; + std::string::basic_string(&v87, (int)v82); + v93 = v52; + v54 = v80; + v94 = v53; + if ( v80 == v81 ) + { + v61 = std::vector>::_M_realloc_insert>( + &v79, + v80, + &v87); + } + else + { + std::string::basic_string(v80, &v87); + v80 += 32; + v55 = v93; + *((_DWORD *)v54 + 7) = v94; + *((_DWORD *)v54 + 6) = v55; + } + std::string::_M_dispose(&v87); + } + else + { + if ( v38[11] == -1 ) + { + if ( a10 ) + { + std::operator<<>(v32, "z["); + v56 = (std::ostream::sentry *)std::ostream::operator<<(v38[10]); + std::operator<<>(v56, "][1]"); + goto LABEL_99; + } + std::operator<<>(v32, "z["); + v57 = v38[10]; + } + else + { + std::operator<<>(v32, "z["); + v59 = (std::ostream::sentry *)std::ostream::operator<<(v38[10]); + if ( a10 ) + std::operator<<>(v59, "][1]["); + else + std::operator<<>(v59, "]["); + v57 = v38[11]; + } + v58 = (std::ostream::sentry *)std::ostream::operator<<(v57); + std::operator<<>(v58, "]"); + } +LABEL_99: + ++a9[1]; + std::string::_M_dispose(v82); + } + if ( v73 ) + std::operator<<>(v32, "]"); + v45 = *a9; + if ( a5[14] == -1 ) + a5[14] = v45; + v46 = 0; + a9[1] = 0; + *a9 = v45 + 1; + while ( (v80 - v79) >> 5 > v46 ) + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + a4, + (int)&v79[32 * v46++]); + std::vector>::~vector((void ***)&v79); + if ( a10 ) + { + v47 = std::operator<<>(v32, ",['"); + WXML::Rewrite::ToStringCode((int)&v87, a1); + v48 = std::operator<<(v47, (int *)&v87); + std::operator<<>(v48, "',"); + v49 = (std::ostream::sentry *)std::ostream::operator<<(a5[2]); + std::operator<<>(v49, ","); + v50 = (std::ostream::sentry *)std::ostream::operator<<(a5[3]); + std::operator<<>(v50, "])\n"); + std::string::_M_dispose(&v87); + } + else + { + std::operator<<>(v32, ")\n"); + } +LABEL_109: + std::vector::~vector((void **)&v76); + return v68; +} +// 41A456: variable 'v61' is possibly undefined +// 41A471: variable 'v62' is possibly undefined +// 41A4E3: variable 'v63' is possibly undefined +// 41A4FE: variable 'v64' is possibly undefined +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 52DFC8: using guessed type void *off_52DFC8; +// 533C6C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; + +//----- (0041AA88) -------------------------------------------------------- +int __thiscall WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord( + _DWORD *this, + int *a2, + unsigned int *a3, + int a4, + _DWORD *a5, + int *a6, + unsigned __int8 a7, + int a8) +{ + int i; // esi + unsigned int j; // esi + + if ( std::operator==((int)this, "TEXTNODE") ) + { + WXML::DOMLib::WXMLDom::DealSingleTokenToOps(a2, a3, a4, a5, this + 21, 0, 0, 1, a6, a7, a8); + } + else + { + for ( i = this[15]; (_DWORD *)i != this + 13; i = std::_Rb_tree_increment(i) ) + { + if ( *(_DWORD *)(i + 60) + && !std::operator==((int)this, "import") + && !std::operator==((int)this, "include") ) + { + if ( std::operator==((int)this, "wx-template") && std::operator==(i + 16, "data") + || std::operator==((int)this, "wx-scope") && std::operator==(i + 16, "wx:scope-data") ) + { + WXML::DOMLib::WXMLDom::DealSingleTokenToOps(a2, a3, a4, a5, (_DWORD *)(i + 40), 1, 1, 0, a6, a7, a8); + } + else + { + WXML::DOMLib::WXMLDom::DealSingleTokenToOps(a2, a3, a4, a5, (_DWORD *)(i + 40), 0, 0, 0, a6, a7, a8); + } + } + } + for ( j = 0; j < (this[19] - this[18]) >> 3; ++j ) + WXML::DOMLib::WXMLDom::RenderAllOpsAndRecord(a2, a3, a4, a5, a6, a7, a8); + } + return 0; +} + +//----- (0041ACA2) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __thiscall WXML::DOMLib::WXMLDom::RenderNonDefine( + int this, + int *a2, + int *a3, + int a4, + int *a5, + int a6, + int *a7, + int *a8, + int *a9, + int *a10, + int *a11, + char a12, + unsigned __int8 a13, + int a14, + int a15) +{ + std::ostream::sentry *v16; // esi + std::ostream::sentry *v17; // eax + std::ostream::sentry *v18; // eax + std::ostream::sentry *v19; // eax + std::ostream::sentry *v20; // eax + std::ostream::sentry *v21; // eax + std::ostream::sentry *v22; // eax + int v23; // eax + void *exception; // ebx + std::ostream::sentry *v25; // eax + std::ostream::sentry *v26; // eax + std::ostream::sentry *v27; // eax + std::ostream::sentry *v28; // eax + std::ostream::sentry *v29; // eax + std::ostream::sentry *v30; // eax + std::ostream::sentry *v31; // eax + std::ostream::sentry *v32; // eax + std::ostream::sentry *v33; // eax + _DWORD *v34; // eax + int v35; // eax + _DWORD *v36; // eax + int v37; // eax + void *v38; // ebx + _DWORD *v39; // esi + _DWORD *v40; // eax + void *v41; // ebx + _DWORD *v42; // esi + _DWORD *v43; // eax + void *v44; // esi + _DWORD *v45; // edi + _DWORD *v46; // eax + void *v47; // esi + std::ostream::sentry *v48; // ebx + std::ostream::sentry *v49; // eax + std::ostream::sentry *v50; // eax + std::ostream::sentry *v51; // eax + std::ostream::sentry *v52; // eax + std::ostream::sentry *v53; // eax + std::ostream::sentry *v54; // eax + std::ostream::sentry *v55; // eax + int v56; // eax + char *v57; // eax + char *v58; // ebx + char *v59; // eax + char *v60; // esi + std::ostream::sentry *v61; // eax + std::ostream::sentry *v62; // eax + std::ostream::sentry *v63; // eax + _DWORD *v64; // eax + std::ostream::sentry *v65; // eax + std::ostream::sentry *v66; // eax + std::ostream::sentry *v67; // eax + std::ostream::sentry *v68; // eax + std::ostream::sentry *v69; // eax + std::ostream::sentry *v70; // eax + std::ostream::sentry *v71; // eax + std::ostream::sentry *v72; // eax + std::ostream::sentry *v73; // eax + std::ostream::sentry *v74; // eax + std::ostream::sentry *v75; // eax + std::ostream::sentry *v76; // eax + std::ostream::sentry *v77; // eax + std::ostream::sentry *v78; // eax + std::ostream::sentry *v79; // eax + std::ostream::sentry *v80; // ebx + _DWORD *v81; // eax + int *v82; // eax + std::ostream::sentry *v83; // eax + std::ostream::sentry *v84; // eax + void **v85; // ecx + char *v86; // ebx + int v87; // ebx + void *v88; // esi + char *v89; // ebx + char *v90; // eax + char *v91; // eax + int v92; // eax + int StrID; // eax + std::ostream::sentry *v94; // eax + std::ostream::sentry *v95; // eax + int v96; // eax + std::ostream::sentry *v97; // eax + std::ostream::sentry *v98; // eax + std::ostream::sentry *v99; // eax + std::ostream::sentry *v100; // eax + std::ostream::sentry *v101; // eax + std::ostream::sentry *v102; // eax + std::ostream::sentry *v103; // eax + std::ostream::sentry *v104; // eax + char *v105; // ebx + bool v106; // bl + std::ostream::sentry *v107; // eax + std::ostream::sentry *v108; // eax + std::ostream::sentry *v109; // eax + char *v110; // eax + int *v111; // eax + std::ostream::sentry *v112; // ebx + std::ostream::sentry *v113; // eax + std::ostream::sentry *v114; // eax + char *v115; // eax + std::ostream::sentry *v116; // eax + std::ostream::sentry *v117; // eax + std::ostream::sentry *v118; // eax + std::ostream::sentry *v119; // eax + std::ostream::sentry *v120; // eax + std::ostream::sentry *v121; // eax + std::ostream::sentry *v122; // eax + std::ostream::sentry *v123; // eax + std::ostream::sentry *v124; // eax + std::ostream::sentry *v125; // eax + int v126; // eax + std::ostream::sentry *v127; // eax + std::ostream::sentry *v128; // eax + std::ostream::sentry *v129; // eax + std::ostream::sentry *v130; // eax + std::ostream::sentry *v131; // eax + std::ostream::sentry *v132; // eax + std::ostream::sentry *v133; // eax + std::ostream::sentry *v134; // eax + std::ostream::sentry *v135; // eax + std::ostream::sentry *v136; // eax + char *v137; // eax + std::ostream::sentry *v138; // eax + std::ostream::sentry *v139; // eax + std::ostream::sentry *v140; // eax + int v141; // esi + void *v142; // ebx + char *v143; // eax + std::ostream::sentry *v144; // eax + std::ostream::sentry *v145; // eax + char *v146; // eax + std::ostream::sentry *v147; // eax + std::ostream::sentry *v148; // eax + std::ostream::sentry *v149; // eax + std::ostream::sentry *v150; // eax + std::ostream::sentry *v151; // eax + std::ostream::sentry *v152; // eax + std::ostream::sentry *v153; // eax + std::ostream::sentry *v154; // eax + std::ostream::sentry *v155; // eax + std::ostream::sentry *v156; // eax + std::ostream::sentry *v157; // eax + std::ostream::sentry *v158; // eax + std::ostream::sentry *v159; // eax + std::ostream::sentry *v160; // eax + std::ostream::sentry *v161; // eax + std::ostream::sentry *v162; // eax + std::ostream::sentry *v163; // eax + std::ostream::sentry *v164; // eax + std::ostream::sentry *v165; // eax + std::ostream::sentry *v166; // eax + std::ostream::sentry *v167; // eax + std::ostream::sentry *v168; // eax + std::ostream::sentry *v169; // eax + std::ostream::sentry *v170; // eax + std::ostream::sentry *v171; // eax + std::ostream::sentry *v172; // eax + std::ostream::sentry *v173; // eax + std::ostream::sentry *v174; // eax + int v175; // eax + char *v176; // eax + std::ostream::sentry *v177; // eax + char *v178; // eax + std::ostream::sentry *v179; // eax + std::ostream::sentry *v180; // eax + int *v181; // ebx + int v182; // eax + void *v183; // esi + int v184; // eax + void *v185; // esi + char v186; // dl + char *v187; // esi + int v188; // ebx + char v189; // si + std::ostream::sentry *v190; // esi + std::ostream::sentry *v191; // eax + std::ostream::sentry *v192; // eax + int *v193; // eax + std::ostream::sentry *v194; // eax + int *v195; // esi + int *v196; // ebx + char *v197; // ecx + char *v198; // eax + int k; // ebx + char *v200; // esi + _DWORD *v201; // eax + _DWORD *v202; // eax + std::ostream::sentry *v203; // ebx + std::ostream::sentry *v204; // eax + std::ostream::sentry *v205; // eax + std::ostream::sentry *v206; // eax + std::ostream::sentry *v207; // eax + int *v208; // esi + std::ostream::sentry *v209; // eax + std::ostream::sentry *v210; // eax + unsigned int v211; // esi + char *v212; // edx + std::ostream::sentry *v213; // eax + std::ostream::sentry *v214; // eax + int v215; // eax + std::ostream::sentry *v216; // eax + std::ostream::sentry *v217; // eax + std::ostream::sentry *v218; // eax + std::ostream::sentry *v219; // eax + std::ostream::sentry *v220; // eax + std::ostream::sentry *v221; // eax + std::ostream::sentry *v222; // eax + std::ostream::sentry *v223; // eax + std::ostream::sentry *v224; // eax + std::ostream::sentry *v225; // eax + std::ostream::sentry *v226; // eax + std::ostream::sentry *v227; // eax + int m; // esi + std::ostream::sentry *v229; // eax + std::ostream::sentry *v230; // eax + std::ostream::sentry *v231; // eax + std::ostream::sentry *v232; // eax + std::ostream::sentry *v233; // eax + std::ostream::sentry *v234; // eax + std::ostream::sentry *v235; // eax + std::ostream::sentry *v236; // eax + std::ostream::sentry *v237; // eax + std::ostream::sentry *v238; // eax + std::ostream::sentry *v239; // eax + std::ostream::sentry *v240; // eax + std::ostream::sentry *v241; // eax + std::ostream::sentry *v242; // eax + std::ostream::sentry *v243; // eax + void *v244; // ebx + std::ostream::sentry *v245; // eax + std::ostream::sentry *v246; // eax + std::ostream::sentry *v247; // eax + std::ostream::sentry *v248; // eax + std::ostream::sentry *v249; // eax + std::ostream::sentry *v250; // eax + std::ostream::sentry *v251; // eax + std::ostream::sentry *v252; // eax + std::ostream::sentry *v253; // eax + std::ostream::sentry *v254; // eax + std::ostream::sentry *v255; // eax + std::ostream::sentry *v256; // eax + char IsValidVariableName; // bl + std::ostream::sentry *v258; // ebx + std::ostream::sentry *v259; // eax + std::ostream::sentry *v260; // eax + std::ostream::sentry *v261; // eax + std::ostream::sentry *v262; // eax + std::ostream::sentry *v263; // eax + std::ostream::sentry *v264; // ebx + std::ostream::sentry *v265; // eax + std::ostream::sentry *v266; // ebx + std::ostream::sentry *v267; // eax + std::ostream::sentry *v268; // eax + int *v269; // ecx + int i; // eax + std::ostream::sentry *v271; // ebx + std::ostream::sentry *v272; // eax + std::ostream::sentry *v273; // eax + std::ostream::sentry *v274; // eax + std::ostream::sentry *v275; // eax + std::ostream::sentry *v276; // eax + std::ostream::sentry *v277; // ebx + std::ostream::sentry *v278; // eax + std::ostream::sentry *v279; // eax + std::ostream::sentry *v281; // [esp-4h] [ebp-32Ch] + char *v282; // [esp+0h] [ebp-328h] + const WXML::DOMLib::Token *v283; // [esp+0h] [ebp-328h] + const WXML::DOMLib::Token *v284; // [esp+0h] [ebp-328h] + _DWORD *v285; // [esp+54h] [ebp-2D4h] + std::ostream::sentry *v286; // [esp+5Ch] [ebp-2CCh] + std::ostream::sentry *v287; // [esp+5Ch] [ebp-2CCh] + char *v288; // [esp+60h] [ebp-2C8h] + char *v289; // [esp+60h] [ebp-2C8h] + char *v290; // [esp+60h] [ebp-2C8h] + char *v291; // [esp+60h] [ebp-2C8h] + char Str1; // [esp+64h] [ebp-2C4h] + bool Str1a; // [esp+64h] [ebp-2C4h] + char *Str1e; // [esp+64h] [ebp-2C4h] + char *Str1b; // [esp+64h] [ebp-2C4h] + char *Str1c; // [esp+64h] [ebp-2C4h] + char *Str1d; // [esp+64h] [ebp-2C4h] + std::ostream::sentry *v298; // [esp+6Ch] [ebp-2BCh] + std::ostream::sentry *v299; // [esp+6Ch] [ebp-2BCh] + std::ostream::sentry *v300; // [esp+6Ch] [ebp-2BCh] + std::ostream::sentry *v301; // [esp+6Ch] [ebp-2BCh] + char *v302; // [esp+6Ch] [ebp-2BCh] + std::ostream::sentry *j; // [esp+6Ch] [ebp-2BCh] + std::ostream::sentry *v304; // [esp+6Ch] [ebp-2BCh] + void *v305[6]; // [esp+7Ch] [ebp-2ACh] BYREF + void *v306[6]; // [esp+94h] [ebp-294h] BYREF + void *v307[6]; // [esp+ACh] [ebp-27Ch] BYREF + void *v308[6]; // [esp+C4h] [ebp-264h] BYREF + void *v309[2]; // [esp+DCh] [ebp-24Ch] BYREF + char v310; // [esp+E4h] [ebp-244h] BYREF + int v311; // [esp+F4h] [ebp-234h] BYREF + int v312; // [esp+F8h] [ebp-230h] + char v313; // [esp+FCh] [ebp-22Ch] BYREF + int v314; // [esp+10Ch] [ebp-21Ch] BYREF + int v315; // [esp+110h] [ebp-218h] + char v316; // [esp+114h] [ebp-214h] BYREF + int v317; // [esp+124h] [ebp-204h] BYREF + char *v318; // [esp+128h] [ebp-200h] + int v319; // [esp+12Ch] [ebp-1FCh] BYREF + int v320; // [esp+13Ch] [ebp-1ECh] BYREF + int v321; // [esp+140h] [ebp-1E8h] + char v322[16]; // [esp+144h] [ebp-1E4h] BYREF + void **v323; // [esp+154h] [ebp-1D4h] BYREF + int v324; // [esp+158h] [ebp-1D0h] BYREF + void *v325[4]; // [esp+15Ch] [ebp-1CCh] BYREF + int v326; // [esp+16Ch] [ebp-1BCh] BYREF + int v327; // [esp+170h] [ebp-1B8h] + char v328[16]; // [esp+174h] [ebp-1B4h] BYREF + int v329; // [esp+184h] [ebp-1A4h] BYREF + int v330; // [esp+188h] [ebp-1A0h] + char v331; // [esp+18Ch] [ebp-19Ch] BYREF + int v332; // [esp+19Ch] [ebp-18Ch] BYREF + int v333; // [esp+1A0h] [ebp-188h] + int v334[4]; // [esp+1A4h] [ebp-184h] BYREF + int v335[2]; // [esp+1B4h] [ebp-174h] BYREF + char v336; // [esp+1BCh] [ebp-16Ch] BYREF + int v337; // [esp+1CCh] [ebp-15Ch] BYREF + int v338; // [esp+1D0h] [ebp-158h] BYREF + char v339[108]; // [esp+1D4h] [ebp-154h] BYREF + int v340[2]; // [esp+240h] [ebp-E8h] BYREF + char v341[4]; // [esp+248h] [ebp-E0h] BYREF + int v342[3]; // [esp+24Ch] [ebp-DCh] BYREF + _DWORD v343[52]; // [esp+258h] [ebp-D0h] BYREF + + if ( a13 && *(_DWORD *)(this + 28) ) + { + v16 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "cs.push(\""); + WXML::Rewrite::ToStringCode((int)v340, a2); + v17 = std::operator<<(v16, v340); + v18 = std::operator<<>(v17, ":"); + v19 = std::operator<<(v18, (int *)(this + 24)); + std::operator<<>(v19, ":"); + v20 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); + std::operator<<>(v20, ":"); + v21 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); + v22 = std::operator<<>(v21, "\")"); + std::operator<<>(v22, a12); + std::string::_M_dispose((void **)v340); + } + Str1 = std::operator==(this, "TEXTNODE"); + if ( Str1 ) + { + v23 = *(_DWORD *)(this + 140); + if ( v23 == -3 ) + { + exception = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)v340, (char *)&byte_52DD60); + WXML::DOMLib::WXMLDom::Error((int)exception, a2, this + 84, v340, (int *)(this + 144)); + goto LABEL_9; + } + if ( v23 == -1 ) + { + exception = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)v340, "value not set"); + std::string::basic_string((void **)&v337, (char *)&byte_52DD60); + WXML::DOMLib::WXMLDom::Error((int)exception, a2, this + 84, &v337, v340); + std::string::_M_dispose((void **)&v337); +LABEL_9: + std::string::_M_dispose((void **)v340); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + v25 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); + v26 = std::operator<<(v25, a5); + std::operator<<>(v26, "=_oz(z,"); + v27 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 140)); + v28 = std::operator<<>(v27, ","); + v29 = std::operator<<(v28, a8); + v30 = std::operator<<>(v29, ","); + v31 = std::operator<<(v30, a9); + v32 = std::operator<<>(v31, ","); + v33 = std::operator<<(v32, a10); + v282 = ")"; + goto LABEL_68; + } + if ( !(unsigned __int8)std::operator!=(this, "wx-define") + || !(unsigned __int8)std::operator!=(this, "wx-import") + || !(unsigned __int8)std::operator!=(this, "import") + || !(unsigned __int8)std::operator!=(this, "template") ) + { + goto LABEL_167; + } + if ( std::operator==(this, "wx-repeat") ) + { + std::string::basic_string(v305, "items"); + v288 = (char *)(this + 48); + v298 = (std::ostream::sentry *)(this + 52); + if ( (_DWORD *)(this + 52) == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v305) ) + std::string::operator=((unsigned int *)v305, "wx:for-items"); + std::string::basic_string(v306, "index"); + if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v306) ) + std::string::operator=((unsigned int *)v306, "wx:for-index"); + std::string::basic_string(v307, "item"); + if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v307) ) + std::string::operator=((unsigned int *)v307, "wx:for-item"); + std::string::basic_string(v308, "wx:key"); + v309[1] = 0; + v309[0] = &v310; + v311 = (int)&v313; + v310 = 0; + v312 = 0; + v313 = 0; + v314 = (int)&v316; + v315 = 0; + v316 = 0; + if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v305) ) + { + std::string::_M_dispose((void **)&v314); + std::string::_M_dispose((void **)&v311); + std::string::_M_dispose(v309); + std::string::_M_dispose(v308); + std::string::_M_dispose(v307); + std::string::_M_dispose(v306); + std::string::_M_dispose(v305); + return 0; + } + if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v306) ) + { + std::string::operator=((unsigned int *)&v311, "index"); + } + else + { + v34 = std::map::operator[]((_DWORD *)(this + 48), (int)v306); + v35 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v34); + std::string::_M_assign((int)&v311, v35); + } + if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v307) ) + { + std::string::operator=((unsigned int *)&v314, "item"); + } + else + { + v36 = std::map::operator[]((_DWORD *)(this + 48), (int)v307); + v37 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v36); + std::string::_M_assign((int)&v314, v37); + } + if ( v298 != (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v306) + && std::map::operator[]((_DWORD *)(this + 48), (int)v306)[14] == -3 + && (a14 & 1) == 0 ) + { + v38 = __cxa_allocate_exception(0x18u); + v39 = std::map::operator[](v288, (int)v306); + v40 = std::map::operator[](v288, (int)v306); + WXML::DOMLib::WXMLDom::Error((int)v38, a2, (int)v40, (int *)v306, v39 + 15); + __cxa_throw( + v38, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + if ( v298 != (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v308) + && std::map::operator[]((_DWORD *)(this + 48), (int)v308)[14] == -3 + && (a14 & 1) == 0 ) + { + v41 = __cxa_allocate_exception(0x18u); + v42 = std::map::operator[](v288, (int)v308); + v43 = std::map::operator[](v288, (int)v308); + WXML::DOMLib::WXMLDom::Error((int)v41, a2, (int)v43, (int *)v308, v42 + 15); + __cxa_throw( + v41, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + if ( !v312 ) + std::string::operator=((unsigned int *)&v311, "index"); + if ( !v315 ) + std::string::operator=((unsigned int *)&v314, "item"); + v318 = 0; + v317 = (int)&v319; + LOBYTE(v319) = 0; + WXML::NameAllocator::GetNextName(a7, &v317); + v320 = (int)v322; + v321 = 0; + v322[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v320); + v323 = v325; + v324 = 0; + LOBYTE(v325[0]) = 0; + WXML::NameAllocator::GetNextName(a7, &v323); + v326 = (int)v328; + v327 = 0; + v328[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v326); + std::string::basic_string((void **)v340, (char *)&byte_52DD60); + std::string::basic_string((void **)&v337, (char *)&byte_52DD60); + WXML::DOMLib::WXMLDom::RenderMeAsFunction( + a2, + a3, + a4, + &v317, + a6, + a7, + &v323, + &v320, + a10, + &v326, + a11, + a12, + &v337, + 0, + a13, + a14, + v340); + std::string::_M_dispose((void **)&v337); + std::string::_M_dispose((void **)v340); + if ( std::map::operator[]((_DWORD *)(this + 48), (int)v305)[14] == -3 ) + { + v44 = __cxa_allocate_exception(0x18u); + v45 = std::map::operator[](v288, (int)v305); + v46 = std::map::operator[](v288, (int)v305); + WXML::DOMLib::WXMLDom::Error((int)v44, a2, (int)v46, (int *)v305, v45 + 15); + __cxa_throw( + v44, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + if ( std::map::operator[]((_DWORD *)(this + 48), (int)v305)[14] == -1 ) + { + v47 = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)v340, "value not set"); + WXML::DOMLib::WXMLDom::Error((int)v47, a2, this + 84, (int *)v305, v340); + std::string::_M_dispose((void **)v340); + __cxa_throw( + v47, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + if ( !a13 ) + goto LABEL_57; + if ( v298 == (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v308) ) + { + v337 = (int)v339; + v338 = 0; + v339[0] = 0; + v48 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); + WXML::Rewrite::ToStringCode((int)v340, a2); + v49 = std::operator<<(v48, v340); + v50 = std::operator<<>(v49, ":"); + v51 = std::operator<<(v50, (int *)(this + 24)); + std::operator<<>(v51, ":"); + v52 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); + std::operator<<>(v52, ":"); + v53 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); + v54 = std::operator<<>( + v53, + ": Now you can provide attr `wx:key` for a `wx:for` to improve performance.')"); + std::operator<<>(v54, a12); + std::string::_M_dispose((void **)v340); + std::string::_M_dispose((void **)&v337); + } + v55 = (std::ostream::sentry *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v308); + if ( v55 == v298 ) + goto LABEL_57; + v56 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v55 + 40); + std::string::basic_string(&v329, v56); + v332 = (int)v334; + v333 = 0; + LOBYTE(v334[0]) = 0; + v57 = std::string::find(&v329, 46, 0); + v58 = v57; + if ( v57 != (char *)-1 ) + { + std::string::substr((void **)&v337, &v329, 0, (unsigned int)v57); + Str1 = WXML::DOMLib::Token::IsValidVariableName((char **)&v337); + if ( Str1 ) + { + std::string::substr((void **)v340, &v329, (unsigned int)(v58 + 1), 0xFFFFFFFF); + Str1 = WXML::DOMLib::Token::IsValidVariableName((char **)v340); + std::string::_M_dispose((void **)v340); + } + std::string::_M_dispose((void **)&v337); + if ( Str1 ) + { + std::string::substr((void **)&v337, &v329, (unsigned int)(v58 + 1), 0xFFFFFFFF); + std::string::operator=(&v332, &v337); + std::string::_M_dispose((void **)&v337); + } + } + if ( WXML::DOMLib::Token::GetTemplateContent(&v329, &v332) ) + { + if ( Str1 ) + goto LABEL_179; + } + else + { + if ( Str1 == 1 || WXML::DOMLib::Token::IsValidVariableName((char **)&v332) ) + goto LABEL_179; + v59 = std::string::find(&v332, 46, 0); + v60 = v59; + if ( v59 != (char *)-1 ) + { + std::string::substr((void **)&v337, &v332, 0, (unsigned int)v59); + IsValidVariableName = WXML::DOMLib::Token::IsValidVariableName((char **)&v337); + if ( IsValidVariableName ) + { + std::string::substr((void **)v340, &v332, (unsigned int)(v60 + 1), 0xFFFFFFFF); + IsValidVariableName = WXML::DOMLib::Token::IsValidVariableName((char **)v340); + std::string::_M_dispose((void **)v340); + } + std::string::_M_dispose((void **)&v337); + if ( IsValidVariableName ) + { + std::string::substr((void **)v340, &v332, (unsigned int)(v60 + 1), 0xFFFFFFFF); + std::string::operator=(&v332, v340); + std::string::_M_dispose((void **)v340); +LABEL_179: + v258 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); + WXML::Rewrite::ToStringCode((int)v335, a2); + v259 = std::operator<<(v258, v335); + v260 = std::operator<<>(v259, ":"); + v261 = std::operator<<(v260, (int *)(this + 24)); + std::operator<<>(v261, ":"); + v262 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); + std::operator<<>(v262, ":"); + v263 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); + v264 = std::operator<<>(v263, ": wx:key=\""); + WXML::Rewrite::ToStringCode((int)&v337, &v329); + v265 = std::operator<<(v264, &v337); + v266 = std::operator<<>( + v265, + "\" does not look like a valid key name (did you mean wx:key=\""); + WXML::Rewrite::ToStringCode((int)v340, &v332); + v267 = std::operator<<(v266, v340); + v268 = std::operator<<>(v267, "\" ?)')"); + std::operator<<>(v268, a12); + std::string::_M_dispose((void **)v340); + std::string::_M_dispose((void **)&v337); + v269 = v335; +LABEL_189: + std::string::_M_dispose((void **)v269); + goto LABEL_56; + } + } + } + if ( !WXML::DOMLib::Token::IsValidVariableName((char **)&v329) ) + { + if ( v330 ) + { + if ( std::operator==((int)&v329, "0") ) + goto LABEL_56; + if ( *(_BYTE *)v329 != 48 ) + { + for ( i = 0; v330 != i; ++i ) + { + if ( (unsigned __int8)(*(_BYTE *)(v329 + i) - 48) > 9u ) + goto LABEL_187; + } + goto LABEL_56; + } + } +LABEL_187: + if ( !std::operator==((int)&v329, "*this") ) + { + v271 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp('"); + WXML::Rewrite::ToStringCode((int)&v337, a2); + v272 = std::operator<<(v271, &v337); + v273 = std::operator<<>(v272, ":"); + v274 = std::operator<<(v273, (int *)(this + 24)); + std::operator<<>(v274, ":"); + v275 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); + std::operator<<>(v275, ":"); + v276 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); + v277 = std::operator<<>(v276, ": wx:key=\""); + WXML::Rewrite::ToStringCode((int)v340, &v329); + v278 = std::operator<<(v277, v340); + v279 = std::operator<<>(v278, "\" does not look like a valid key name.')"); + std::operator<<>(v279, a12); + std::string::_M_dispose((void **)v340); + v269 = &v337; + goto LABEL_189; + } + } +LABEL_56: + std::string::_M_dispose((void **)&v332); + std::string::_M_dispose((void **)&v329); +LABEL_57: + v281 = (std::ostream::sentry *)(a6 + 8); + if ( *(_BYTE *)(this + 256) ) + { + v61 = std::operator<<(v281, a5); + v62 = std::operator<<>(v61, ".wxXCkey=4"); + } + else + { + v63 = std::operator<<(v281, a5); + v62 = std::operator<<>(v63, ".wxXCkey=2"); + } + std::operator<<>(v62, a12); + std::operator<<>((std::ostream::sentry *)(a6 + 8), "_2z(z,"); + v64 = std::map::operator[](v288, (int)v305); + v65 = (std::ostream::sentry *)std::ostream::operator<<(v64[14]); + v66 = std::operator<<>(v65, ","); + v67 = std::operator<<(v66, &v317); + v68 = std::operator<<>(v67, ","); + v69 = std::operator<<(v68, a8); + v70 = std::operator<<>(v69, ","); + v71 = std::operator<<(v70, a9); + v72 = std::operator<<>(v71, ","); + v73 = std::operator<<(v72, a10); + v74 = std::operator<<>(v73, ","); + v75 = std::operator<<(v74, a5); + v76 = std::operator<<>(v75, ",'"); + v77 = std::operator<<(v76, &v314); + v78 = std::operator<<>(v77, "','"); + v79 = std::operator<<(v78, &v311); + v80 = std::operator<<>(v79, "','"); + v81 = std::map::operator[](v288, (int)v308); + v82 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v81); + v83 = std::operator<<(v80, v82); + v84 = std::operator<<>(v83, "')"); + std::operator<<>(v84, a12); + std::string::_M_dispose((void **)&v326); + std::string::_M_dispose((void **)&v323); + std::string::_M_dispose((void **)&v320); + std::string::_M_dispose((void **)&v317); + std::string::_M_dispose((void **)&v314); + std::string::_M_dispose((void **)&v311); + std::string::_M_dispose(v309); + std::string::_M_dispose(v308); + std::string::_M_dispose(v307); + std::string::_M_dispose(v306); + v85 = v305; + goto LABEL_84; + } + if ( std::operator==(this, "block") ) + { + WXML::DOMLib::WXMLDom::RenderChildren(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); + goto LABEL_167; + } + v286 = (std::ostream::sentry *)(this + 48); + v289 = (char *)(this + 52); + if ( std::operator==(this, "include") ) + { + std::string::basic_string((void **)v340, (char *)&off_52DF44); + v86 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v340); + std::string::_M_dispose((void **)v340); + if ( v86 == v289 ) + goto LABEL_167; + std::string::basic_string((void **)v340, (char *)&off_52DF44); + v87 = *((_DWORD *)std::map::operator[]((_DWORD *)(this + 48), v340) + 14); + std::string::_M_dispose((void **)v340); + if ( v87 == -3 ) + { + v88 = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)&v337, (char *)&off_52DF44); + v89 = std::map::operator[](v286, &v337); + std::string::basic_string((void **)v340, (char *)&off_52DF44); + std::string::basic_string((void **)v335, (char *)&off_52DF44); + v90 = std::map::operator[](v286, v335); + WXML::DOMLib::WXMLDom::Error((int)v88, a2, (int)v90, v340, (int *)v89 + 15); + std::string::_M_dispose((void **)v335); + std::string::_M_dispose((void **)v340); + std::string::_M_dispose((void **)&v337); + __cxa_throw( + v88, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + std::operator<<>((std::ostream::sentry *)(a6 + 8), "_ic(x["); + v299 = *(std::ostream::sentry **)(this + 248); + std::string::basic_string((void **)&v337, (char *)&off_52DF44); + v91 = std::map::operator[]((_DWORD *)(this + 48), &v337); + v92 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v91); + std::string::basic_string(v340, v92); + StrID = WXML::DOMLib::StrCache::GetStrID(v299, (int)v340); + std::ostream::operator<<(StrID); + std::string::_M_dispose((void **)v340); + std::string::_M_dispose((void **)&v337); + v94 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); + v95 = std::operator<<(v94, a3); + std::operator<<>(v95, (char *)off_52E146); + v300 = *(std::ostream::sentry **)(this + 248); + std::string::basic_string(v340, (int)a2); + v96 = WXML::DOMLib::StrCache::GetStrID(v300, (int)v340); + std::ostream::operator<<(v96); + std::string::_M_dispose((void **)v340); + v97 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); + v98 = std::operator<<(v97, a8); + v99 = std::operator<<>(v98, ","); + v100 = std::operator<<(v99, a9); + v101 = std::operator<<>(v100, ","); + v102 = std::operator<<(v101, a5); + v103 = std::operator<<>(v102, ","); + v33 = std::operator<<(v103, a10); + v282 = ");"; +LABEL_68: + v104 = std::operator<<>(v33, v282); +LABEL_69: + std::operator<<>(v104, a12); + goto LABEL_167; + } + Str1a = std::operator==(this, "wx-template"); + if ( Str1a ) + { + std::string::basic_string((void **)v340, "is"); + v105 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)v340); + std::string::_M_dispose((void **)v340); + if ( v105 == v289 ) + goto LABEL_167; + std::string::basic_string((void **)&v337, "is"); + v106 = Str1a; + if ( *((_DWORD *)std::map::operator[]((_DWORD *)(this + 48), &v337) + 14) != -3 ) + { + std::string::basic_string((void **)v340, "is"); + v106 = *((_DWORD *)std::map::operator[]((_DWORD *)(this + 48), v340) + 14) == -1; + std::string::_M_dispose((void **)v340); + } + std::string::_M_dispose((void **)&v337); + if ( v106 ) + { + v301 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "_wp(\""); + WXML::Rewrite::ToStringCode((int)v340, a2); + v107 = std::operator<<(v301, v340); + std::operator<<>(v107, ":template:"); + v108 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); + std::operator<<>(v108, ":"); + v109 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); + std::operator<<>(v109, (char *)off_52E15B); + std::string::_M_dispose((void **)v340); + std::string::basic_string((void **)v340, "is"); + v110 = std::map::operator[]((_DWORD *)(this + 48), v340); + v111 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v110); + WXML::Rewrite::ToStringCode(v111, a6); + std::string::_M_dispose((void **)v340); + v104 = std::operator<<>( + (std::ostream::sentry *)(a6 + 8), + "` is not a valid expression for a template.\")"); + goto LABEL_69; + } + v327 = 0; + v326 = (int)v328; + v328[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v326); + v112 = (std::ostream::sentry *)(a6 + 8); + v113 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); + v114 = std::operator<<(v113, &v326); + std::operator<<>(v114, "=_oz(z,"); + std::string::basic_string((void **)v340, "is"); + v115 = std::map::operator[]((_DWORD *)(this + 48), v340); + v116 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v115 + 14)); + v117 = std::operator<<>(v116, ","); + v118 = std::operator<<(v117, a8); + v119 = std::operator<<>(v118, ","); + v120 = std::operator<<(v119, a9); + v121 = std::operator<<>(v120, ","); + v122 = std::operator<<(v121, a10); + v123 = std::operator<<>(v122, ")"); + std::operator<<>(v123, a12); + std::string::_M_dispose((void **)v340); + v329 = (int)&v331; + v330 = 0; + v331 = 0; + WXML::NameAllocator::GetNextName(a7, &v329); + v124 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); + v125 = std::operator<<(v124, &v329); + std::operator<<>(v125, "=_gd(x["); + v285 = *(_DWORD **)(this + 248); + std::string::basic_string(v340, (int)a2); + v126 = WXML::DOMLib::StrCache::GetStrID(v285, (int)v340); + std::ostream::operator<<(v126); + std::string::_M_dispose((void **)v340); + v127 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "],"); + v128 = std::operator<<(v127, &v326); + v129 = std::operator<<>(v128, ","); + v130 = std::operator<<(v129, a3); + v131 = std::operator<<>(v130, ","); + v132 = std::operator<<(v131, a11); + v133 = std::operator<<>(v132, ")"); + std::operator<<>(v133, a12); + v134 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "if("); + v135 = std::operator<<(v134, &v329); + v136 = std::operator<<>(v135, "){"); + std::operator<<>(v136, a12); + v333 = 0; + v332 = (int)v334; + LOBYTE(v334[0]) = 0; + WXML::NameAllocator::GetNextName(a7, &v332); + std::string::basic_string((void **)&v337, "data"); + if ( v289 != (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(this + 48), + (int)&v337) ) + { + std::string::basic_string((void **)v340, "data"); + v137 = std::map::operator[]((_DWORD *)(this + 48), v340); + Str1a = *(_DWORD *)(WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v137) + 4) == 0; + std::string::_M_dispose((void **)v340); + } + std::string::_M_dispose((void **)&v337); + if ( Str1a ) + { + v138 = std::operator<<>(v112, "var "); + v139 = std::operator<<(v138, &v332); + v140 = std::operator<<>(v139, "={}"); + std::operator<<>(v140, a12); + } + else + { + std::string::basic_string((void **)v340, "data"); + v141 = *((_DWORD *)std::map::operator[]((_DWORD *)(this + 48), v340) + 14); + std::string::_M_dispose((void **)v340); + if ( v141 == -3 ) + { + v142 = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)&v337, "data"); + v302 = std::map::operator[](v286, &v337); + std::string::basic_string((void **)v340, "data"); + std::string::basic_string((void **)v335, "data"); + v143 = std::map::operator[](v286, v335); + WXML::DOMLib::WXMLDom::Error((int)v142, a2, (int)v143, v340, (int *)v302 + 15); + std::string::_M_dispose((void **)v335); + std::string::_M_dispose((void **)v340); + std::string::_M_dispose((void **)&v337); + __cxa_throw( + v142, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + v144 = std::operator<<>(v112, "var "); + v145 = std::operator<<(v144, &v332); + std::operator<<>(v145, "=_1z(z,"); + std::string::basic_string((void **)v340, "data"); + v146 = std::map::operator[]((_DWORD *)(this + 48), v340); + v147 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v146 + 14)); + v148 = std::operator<<>(v147, ","); + v149 = std::operator<<(v148, a8); + v150 = std::operator<<>(v149, ","); + v151 = std::operator<<(v150, a9); + v152 = std::operator<<>(v151, ","); + v153 = std::operator<<(v152, a10); + v154 = std::operator<<>(v153, ") || {}"); + std::operator<<>(v154, a12); + std::string::_M_dispose((void **)v340); + } + v155 = std::operator<<>(v112, "var cur_globalf="); + v156 = std::operator<<(v155, a10); + v157 = std::operator<<>(v156, ".f"); + std::operator<<>(v157, a12); + v158 = std::operator<<(v112, a5); + v159 = std::operator<<>(v158, ".wxXCkey=3"); + std::operator<<>(v159, a12); + v160 = std::operator<<(v112, &v329); + v161 = std::operator<<>(v160, "("); + v162 = std::operator<<(v161, &v332); + v163 = std::operator<<>(v162, ","); + v164 = std::operator<<(v163, &v332); + v165 = std::operator<<>(v164, ","); + v166 = std::operator<<(v165, a5); + v167 = std::operator<<>(v166, ","); + v168 = std::operator<<(v167, a10); + v169 = std::operator<<>(v168, ")"); + std::operator<<>(v169, a12); + v170 = std::operator<<(v112, a10); + v171 = std::operator<<>(v170, ".f=cur_globalf"); + std::operator<<>(v171, a12); + std::string::_M_dispose((void **)&v332); + v172 = std::operator<<>(v112, "}"); + std::operator<<>(v172, a12); + v173 = std::operator<<>(v112, "else _w("); + v174 = std::operator<<(v173, &v326); + std::operator<<>(v174, (char *)off_52E146); + Str1e = *(char **)(this + 248); + std::string::basic_string(v340, (int)a2); + v175 = WXML::DOMLib::StrCache::GetStrID(Str1e, (int)v340); + std::ostream::operator<<(v175); + std::string::_M_dispose((void **)v340); + std::operator<<>(v112, "],"); + std::string::basic_string((void **)&v337, "is"); + v176 = std::map::operator[]((_DWORD *)(this + 48), &v337); + v177 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v176 + 2)); + std::operator<<>(v177, ","); + std::string::basic_string((void **)v340, "is"); + v178 = std::map::operator[]((_DWORD *)(this + 48), v340); + v179 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v178 + 3)); + v180 = std::operator<<>(v179, ")"); + std::operator<<>(v180, a12); + std::string::_M_dispose((void **)v340); + std::string::_M_dispose((void **)&v337); + std::string::_M_dispose((void **)&v329); + v85 = (void **)&v326; +LABEL_84: + std::string::_M_dispose(v85); + goto LABEL_167; + } + v317 = 0; + v181 = *(int **)(this + 60); + v318 = 0; + v319 = 0; + while ( v181 != (int *)v289 ) + { + v182 = v181[24]; + if ( v182 == -3 ) + { + if ( (a14 & 1) == 0 ) + { + v183 = __cxa_allocate_exception(0x18u); + WXML::DOMLib::WXMLDom::Error((int)v183, a2, (int)(v181 + 10), v181 + 4, v181 + 25); + __cxa_throw( + v183, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + } + else if ( v182 == -1 && v181[15] > 0 ) + { + v185 = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)v340, "interal error(1010)"); + WXML::DOMLib::WXMLDom::Error((int)v185, a2, (int)(v181 + 10), v181 + 4, v340); + std::string::_M_dispose((void **)v340); + __cxa_throw( + v185, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + v184 = v181[4]; + if ( *(_BYTE *)v184 != 119 + || *(_BYTE *)(v184 + 1) != 120 + || (v186 = *(_BYTE *)(v184 + 2), v186 != 58) && v186 != 45 + || !_stricmp((const char *)v184, "wx:scope-data") ) + { + std::string::basic_string(v340, (int)(v181 + 4)); + WXML::DOMLib::Token::Token((int)v343, (WXML::DOMLib::Token *)(v181 + 10), v283); + std::vector>::emplace_back>( + &v317, + v340); + std::pair::~pair((void **)v340); + } + v181 = (int *)std::_Rb_tree_increment((int)v181); + } + std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>( + (char *)v317, + v318, + (unsigned __int8 (__cdecl *)(int, int))WXML::DOMLib::AttrsCompartor); + v187 = v318; + v321 = 0; + v320 = (int)v322; + v188 = v317; + v322[0] = 0; + v324 = 0; + v325[0] = 0; + v325[1] = &v324; + v325[2] = &v324; + v325[3] = 0; + while ( v187 != (char *)v188 ) + { + std::set::insert(&v323, v188); + v188 += 136; + } + std::basic_stringstream,std::allocator>::basic_stringstream((int)v340); + for ( j = 0; (unsigned int)j < -252645135 * ((int)&v318[-v317] >> 3); j = (std::ostream::sentry *)((char *)j + 1) ) + { + v290 = (char *)(136 * (_DWORD)j); + Str1b = (char *)(136 * (_DWORD)j + v317); + std::string::substr((void **)&v326, Str1b, 0, 6u); + v189 = std::operator!=((int)&v326, "model:"); + std::string::_M_dispose((void **)&v326); + if ( !v189 ) + { + v190 = std::operator<<>((std::ostream::sentry *)v341, "\"model:"); + std::string::substr((void **)v335, Str1b, 6u, 0xFFFFFFFF); + v191 = std::operator<<(v190, v335); + v192 = std::operator<<>(v191, "\""); + v287 = std::operator<<>(v192, ":\""); + v193 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)&v290[v317 + 24]); + WXML::Rewrite::ToStringCode((int)&v337, v193); + v194 = std::operator<<(v287, &v337); + std::operator<<>(v194, "\","); + std::string::_M_dispose((void **)&v337); + std::string::_M_dispose((void **)v335); + std::string::substr((void **)&v329, Str1b, 6u, 0xFFFFFFFF); + v195 = (int *)v325[0]; + v196 = &v324; + while ( v195 ) + { + if ( (unsigned __int8)std::operator<((int)(v195 + 4), (int)&v329) ) + { + v195 = (int *)v195[3]; + } + else + { + v196 = v195; + v195 = (int *)v195[2]; + } + } + if ( v196 != &v324 && (unsigned __int8)std::operator<((int)&v329, (int)(v196 + 4)) ) + v196 = &v324; + std::string::_M_dispose((void **)&v329); + if ( v196 == &v324 ) + { + std::string::substr((void **)&v332, Str1b, 6u, 0xFFFFFFFF); + std::string::operator=(&v290[v317], &v332); + std::string::_M_dispose((void **)&v332); + } + else + { + v197 = &v290[v317]; + v198 = &v290[v317 + 136]; + if ( v318 != v198 ) + { + for ( k = -252645135 * ((v318 - v198) >> 3); ; --k ) + { + v200 = v197 + 136; + if ( k <= 0 ) + break; + std::pair::operator=(v197, (_DWORD *)v197 + 34); + v197 = v200; + } + } + v318 -= 136; + std::pair::~pair((void **)v318); + j = (std::ostream::sentry *)((char *)j - 1); + } + } + } + std::stringbuf::str((int)v335, v342); + std::string::operator=(&v320, v335); + std::string::_M_dispose((void **)v335); + if ( v321 ) + { + std::string::basic_string(&v332, (int)a5); + std::string::append(&v332, ".rawAttr={"); + v201 = std::string::append(&v332, (int)&v320); + std::string::basic_string(v335, v201); + v202 = std::string::append(v335, "};"); + std::string::basic_string(&v337, v202); + std::string::operator=(&v320, &v337); + std::string::_M_dispose((void **)&v337); + std::string::_M_dispose((void **)v335); + std::string::_M_dispose((void **)&v332); + } + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v340); + std::_Rb_tree,std::less,std::allocator>::_M_erase((void **)v325[0]); + v203 = (std::ostream::sentry *)(a6 + 8); + if ( (unsigned int)(-252645135 * ((int)&v318[-v317] >> 3)) <= 1 ) + { + v223 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); + v224 = std::operator<<(v223, a5); + v225 = std::operator<<>(v224, "=_n('"); + v226 = std::operator<<(v225, (int *)this); + v227 = std::operator<<>(v226, "')"); + std::operator<<>(v227, a12); + for ( m = v317; ; m += 136 ) + { + if ( (char *)m == v318 ) + goto LABEL_162; + Str1d = *(char **)m; + v337 = (int)v339; + v338 = 0; + v339[0] = 0; + if ( !strncmp(Str1d, "data-", 5u) || std::string::find((int *)m, 58, 0) != (char *)-1 ) + { + std::string::_M_assign((int)&v337, m); + if ( !strncmp(Str1d, "generic:", 8u) ) + { + std::operator<<>(v203, "var $tmp="); + if ( *(_DWORD *)(m + 44) ) + { + std::operator<<>(v203, "grb(z["); + v229 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(m + 80)); + v230 = std::operator<<>(v229, "],"); + v231 = std::operator<<(v230, a8); + v232 = std::operator<<>(v231, ","); + v233 = std::operator<<(v232, a9); + v234 = std::operator<<>(v233, ","); + v235 = std::operator<<(v234, a10); + v236 = std::operator<<>(v235, ")"); + std::operator<<>(v236, a12); + v237 = std::operator<<>(v203, "if ($tmp!=\"\") $tmp=\"wx-\"+$tmp"); + } + else + { + v237 = std::operator<<>(v203, "\"\""); + } + std::operator<<>(v237, a12); + v238 = std::operator<<(v203, a5); + std::operator<<>(v238, ".generics['"); + v239 = std::operator<<>(v203, "wx-"); + v240 = std::operator<<>(v239, Str1d + 8); + v241 = std::operator<<>(v240, "']=$tmp"); + goto LABEL_156; + } + } + else + { + WXML::DOMLib::WXMLDom::ToCamelStyle((int)v340, m); + std::string::operator=(&v337, v340); + std::string::_M_dispose((void **)v340); + } + if ( *(_DWORD *)(m + 44) ) + { + if ( *(_DWORD *)(m + 80) == -1 ) + { + v244 = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)v340, "interal error(1010)"); + WXML::DOMLib::WXMLDom::Error((int)v244, a2, m + 24, (int *)m, v340); + std::string::_M_dispose((void **)v340); + __cxa_throw( + v244, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + v245 = std::operator<<>(v203, "_rz(z,"); + v246 = std::operator<<(v245, a5); + v247 = std::operator<<>(v246, ",'"); + v248 = std::operator<<(v247, &v337); + std::operator<<>(v248, "',"); + v249 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(m + 80)); + v250 = std::operator<<>(v249, ","); + v251 = std::operator<<(v250, a8); + v252 = std::operator<<>(v251, ","); + v253 = std::operator<<(v252, a9); + v254 = std::operator<<>(v253, ","); + v255 = std::operator<<(v254, a10); + v241 = std::operator<<>(v255, ")"); + } + else + { + v242 = std::operator<<(v203, a5); + std::operator<<>(v242, ".attr['"); + v243 = std::operator<<(v203, &v337); + v241 = std::operator<<>(v243, "']=true"); + } +LABEL_156: + std::operator<<>(v241, a12); + std::string::_M_dispose((void **)&v337); + } + } + v332 = 0; + v333 = 0; + v334[0] = 0; + v204 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); + v205 = std::operator<<(v204, a5); + v206 = std::operator<<>(v205, "=_mz(z,'"); + v207 = std::operator<<(v206, (int *)this); + std::operator<<>(v207, (char *)off_52E22D); + v304 = 0; + v208 = (int *)v317; + v291 = (char *)&byte_52DD60; + while ( v208 != (int *)v318 ) + { + Str1c = (char *)*v208; + v335[0] = (int)&v336; + v335[1] = 0; + v336 = 0; + if ( !strncmp(Str1c, "data-", 5u) || std::string::find(v208, 58, 0) != (char *)-1 ) + { + std::string::_M_assign((int)v335, (int)v208); + if ( !strncmp(Str1c, "generic:", 8u) ) + { + v337 = (int)(Str1c + 8); + WXML::DOMLib::Token::Token((int)&v338, (WXML::DOMLib::Token *)(v208 + 6), v284); + std::string::basic_string((void **)v340, (char *)v337); + WXML::DOMLib::Token::Token(v343, (int)&v338); + std::vector>::emplace_back>( + &v332, + v340); + std::pair::~pair((void **)v340); + WXML::DOMLib::Token::~Token((int)&v338); + std::string::_M_dispose((void **)v335); + goto LABEL_137; + } + } + else + { + WXML::DOMLib::WXMLDom::ToCamelStyle((int)&v337, (int)v208); + std::string::operator=(v335, &v337); + std::string::_M_dispose((void **)&v337); + } + std::operator<<>(v203, v291); + v209 = std::operator<<>(v203, "'"); + v210 = std::operator<<(v209, v335); + std::operator<<>(v210, "',"); + if ( v208[11] ) + { + std::ostream::operator<<(v208[20] - (_DWORD)v304); + if ( !v304 ) + v304 = (std::ostream::sentry *)v208[20]; + } + else + { + std::operator<<>(v203, "-1"); + } + std::string::_M_dispose((void **)v335); + v291 = ","; +LABEL_137: + v208 += 34; + } + std::operator<<>(v203, (char *)off_52E245); + v211 = 0; + v212 = (char *)&byte_52DD60; + while ( v211 < -252645135 * ((v333 - v332) >> 3) ) + { + std::operator<<>(v203, v212); + v213 = std::operator<<>(v203, "'wx-"); + v214 = std::operator<<(v213, (int *)(v332 + 136 * v211)); + std::operator<<>(v214, "',"); + v215 = v332 + 136 * v211; + if ( *(_DWORD *)(v215 + 44) ) + { + std::ostream::operator<<(*(_DWORD *)(v215 + 80) - (_DWORD)v304); + if ( !v304 ) + v304 = *(std::ostream::sentry **)(v332 + 136 * v211 + 80); + } + else + { + std::operator<<>(v203, "-1"); + } + ++v211; + v212 = ","; + } + v216 = std::operator<<>(v203, "],"); + v217 = std::operator<<(v216, a8); + v218 = std::operator<<>(v217, ","); + v219 = std::operator<<(v218, a9); + v220 = std::operator<<>(v219, ","); + v221 = std::operator<<(v220, a10); + v222 = std::operator<<>(v221, ")"); + std::operator<<>(v222, a12); + std::vector>::~vector((void ***)&v332); +LABEL_162: + if ( v321 ) + std::operator<<(v203, &v320); + WXML::DOMLib::WXMLDom::RenderChildren(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15); + if ( (a14 & 1) != 0 ) + WXML::DOMLib::WXMLDom::AddTestAttr((_DWORD *)this, a5, a6, 10); + std::string::_M_dispose((void **)&v320); + std::vector>::~vector((void ***)&v317); +LABEL_167: + if ( a13 && *(_DWORD *)(this + 28) ) + { + v256 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "cs.pop()"); + std::operator<<>(v256, a12); + } + return 0; +} +// 41D9E3: positive sp value 4 has been found +// 41C88C: variable 'v283' is possibly undefined +// 41CF3C: variable 'v284' is possibly undefined +// 41DF58: using guessed type _DWORD __stdcall WXML::DOMLib::WXMLDom::RenderChildren(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, char, char, _DWORD, _DWORD); +// 41F5F4: using guessed type _DWORD __stdcall WXML::DOMLib::WXMLDom::RenderMeAsFunction(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 52DF44: using guessed type void *off_52DF44; +// 533C6C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; +// 41ACA2: using guessed type _DWORD var_D0[52]; +// 41ACA2: using guessed type char var_E0[4]; +// 41ACA2: using guessed type int var_DC[3]; + +//----- (0041DF58) -------------------------------------------------------- +int __thiscall WXML::DOMLib::WXMLDom::RenderChildren( + _DWORD *this, + int *a2, + int *a3, + int a4, + int *a5, + int a6, + int *a7, + int *a8, + int *a9, + int *a10, + int *a11, + char a12, + unsigned __int8 a13, + int a14, + int a15) +{ + std::ostream::sentry *v16; // edi + _DWORD *exception; // esi + int v18; // edx + std::ostream::sentry *v19; // eax + std::ostream::sentry *v20; // eax + std::ostream::sentry *v21; // eax + std::ostream::sentry *v22; // eax + int StrID; // eax + std::ostream::sentry *v24; // eax + int v25; // ebx + _DWORD *v26; // ebx + std::ostream::sentry *v27; // eax + std::ostream::sentry *v28; // eax + std::ostream::sentry *v29; // eax + std::ostream::sentry *v30; // eax + int v31; // eax + std::ostream::sentry *v32; // eax + int v33; // edx + bool v34; // bl + int v35; // ebx + int v36; // ebx + int v37; // ebx + _DWORD *v38; // ebx + int v39; // ecx + void *v40; // ebx + int v41; // ebx + _DWORD *v42; // ebx + int v43; // ecx + void *v44; // ebx + int v45; // ebx + _DWORD *v46; // eax + std::ostream::sentry *v47; // eax + std::ostream::sentry *v48; // eax + std::ostream::sentry *v49; // eax + std::ostream::sentry *v50; // eax + std::ostream::sentry *v51; // eax + std::ostream::sentry *v52; // eax + std::ostream::sentry *v53; // eax + std::ostream::sentry *v54; // eax + _DWORD *v55; // eax + std::ostream::sentry *v56; // eax + std::ostream::sentry *v57; // eax + std::ostream::sentry *v58; // eax + std::ostream::sentry *v59; // eax + std::ostream::sentry *v60; // eax + std::ostream::sentry *v61; // eax + std::ostream::sentry *v62; // eax + std::ostream::sentry *v63; // eax + int v64; // eax + _DWORD *v65; // eax + std::ostream::sentry *v66; // eax + std::ostream::sentry *v67; // eax + std::ostream::sentry *v68; // eax + std::ostream::sentry *v69; // eax + std::ostream::sentry *v70; // eax + std::ostream::sentry *v71; // eax + std::ostream::sentry *v72; // eax + std::ostream::sentry *v73; // eax + std::ostream::sentry *v74; // eax + std::ostream::sentry *v75; // eax + std::ostream::sentry *v76; // eax + std::ostream::sentry *v77; // eax + std::ostream::sentry *v78; // eax + _DWORD *v79; // eax + int v80; // eax + int v81; // eax + std::ostream::sentry *v82; // eax + int v83; // eax + std::ostream::sentry *v84; // eax + std::ostream::sentry *v85; // eax + std::ostream::sentry *v86; // eax + std::ostream::sentry *v87; // eax + std::ostream::sentry *v88; // eax + std::ostream::sentry *v89; // eax + std::ostream::sentry *v90; // eax + std::ostream::sentry *v91; // eax + std::ostream::sentry *v92; // eax + std::ostream::sentry *v93; // eax + std::ostream::sentry *v94; // eax + std::ostream::sentry *v96; // eax + std::ostream::sentry *v97; // eax + std::ostream::sentry *v98; // eax + std::ostream::sentry *v99; // eax + std::ostream::sentry *v100; // eax + std::ostream::sentry *v101; // eax + unsigned int k; // ebx + std::ostream::sentry *v103; // eax + std::ostream::sentry *v104; // eax + int m; // ebx + std::ostream::sentry *v106; // eax + std::ostream::sentry *v107; // eax + int n; // ebx + std::ostream::sentry *v109; // eax + std::ostream::sentry *v110; // eax + int v112; // [esp+48h] [ebp-100h] + int v113; // [esp+4Ch] [ebp-FCh] + _DWORD *v114; // [esp+4Ch] [ebp-FCh] + char **v115; // [esp+50h] [ebp-F8h] + char *v116; // [esp+50h] [ebp-F8h] + _DWORD *v117; // [esp+50h] [ebp-F8h] + int v118; // [esp+54h] [ebp-F4h] + int v119; // [esp+54h] [ebp-F4h] + int v120; // [esp+54h] [ebp-F4h] + int v121; // [esp+54h] [ebp-F4h] + int v122; // [esp+58h] [ebp-F0h] + int v123; // [esp+5Ch] [ebp-ECh] + char *v124; // [esp+60h] [ebp-E8h] + char *v125; // [esp+60h] [ebp-E8h] + char *v126; // [esp+60h] [ebp-E8h] + char *v127; // [esp+60h] [ebp-E8h] + char *v128; // [esp+60h] [ebp-E8h] + char *v129; // [esp+60h] [ebp-E8h] + int v130; // [esp+68h] [ebp-E0h] + _DWORD *v131; // [esp+68h] [ebp-E0h] + _DWORD *v132; // [esp+68h] [ebp-E0h] + _DWORD *v133; // [esp+68h] [ebp-E0h] + _DWORD *v134; // [esp+68h] [ebp-E0h] + int i; // [esp+68h] [ebp-E0h] + unsigned int j; // [esp+68h] [ebp-E0h] + _DWORD *v137; // [esp+68h] [ebp-E0h] + unsigned int v138; // [esp+6Ch] [ebp-DCh] + void *v139; // [esp+6Ch] [ebp-DCh] + void *v140; // [esp+6Ch] [ebp-DCh] + void **v141; // [esp+74h] [ebp-D4h] BYREF + int v142; // [esp+78h] [ebp-D0h] + int v143; // [esp+7Ch] [ebp-CCh] + int v144[2]; // [esp+80h] [ebp-C8h] BYREF + char v145; // [esp+88h] [ebp-C0h] BYREF + int v146[2]; // [esp+98h] [ebp-B0h] BYREF + char v147; // [esp+A0h] [ebp-A8h] BYREF + void *v148[2]; // [esp+B0h] [ebp-98h] BYREF + char v149; // [esp+B8h] [ebp-90h] BYREF + void *v150[6]; // [esp+C8h] [ebp-80h] BYREF + int v151[2]; // [esp+E0h] [ebp-68h] BYREF + char v152; // [esp+E8h] [ebp-60h] BYREF + int v153[2]; // [esp+F8h] [ebp-50h] BYREF + char v154; // [esp+100h] [ebp-48h] BYREF + __int64 v155; // [esp+110h] [ebp-38h] BYREF + char v156[16]; // [esp+118h] [ebp-30h] BYREF + int v157; // [esp+128h] [ebp-20h] + + v16 = (std::ostream::sentry *)(a6 + 8); + std::ostream::tellp(&v155, (std::ostream *)(a6 + 8)); + if ( v155 > 52428800 ) + { + exception = __cxa_allocate_exception(0x18u); + std::string::basic_string( + (void **)&v155, + "Interal error: generated code (>10M) will be too heavy to fly in a narrow wind."); + *exception = exception + 2; + exception[1] = 0; + *((_BYTE *)exception + 8) = 0; + std::string::_M_assign((int)exception, (int)&v155); + std::string::_M_dispose((void **)&v155); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + v144[1] = 0; + v144[0] = (int)&v145; + v146[0] = (int)&v147; + v145 = 0; + v146[1] = 0; + v147 = 0; + v138 = 0; + v122 = 0; + v123 = 0; + while ( 1 ) + { + v18 = this[18]; + if ( (this[19] - v18) >> 3 <= v138 ) + break; + if ( (std::operator==(*(_DWORD *)(v18 + 8 * v138), "import") + || std::operator==(*(_DWORD *)(this[18] + 8 * v138), "wx-import")) + && (v130 = *(_DWORD *)(this[18] + 8 * v138), + v118 = v130 + 52, + std::string::basic_string((void **)&v155, (char *)&off_52DF44), + v131 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v130 + 48), + (int)&v155), + std::string::_M_dispose((void **)&v155), + v131 != (_DWORD *)v118) ) + { + if ( !v123 ) + { + WXML::NameAllocator::GetNextName(a7, v144); + v19 = std::operator<<>(v16, "var "); + v20 = std::operator<<(v19, v144); + v21 = std::operator<<>(v20, "="); + v22 = std::operator<<(v21, a3); + std::operator<<>(v22, (char *)off_52E30A); + v132 = (_DWORD *)this[62]; + std::string::basic_string(&v155, (int)a2); + StrID = WXML::DOMLib::StrCache::GetStrID(v132, (int)&v155); + std::ostream::operator<<(StrID); + std::string::_M_dispose((void **)&v155); + v24 = std::operator<<>(v16, "]].i"); + std::operator<<>(v24, a12); + } + ++v123; + } + else if ( std::operator==(*(_DWORD *)(this[18] + 8 * v138), "include") ) + { + v25 = *(_DWORD *)(this[18] + 8 * v138); + v133 = (_DWORD *)(v25 + 52); + std::string::basic_string((void **)&v155, (char *)&off_52DF44); + v26 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v25 + 48), + (int)&v155); + std::string::_M_dispose((void **)&v155); + if ( v26 != v133 ) + { + if ( !v122 ) + { + WXML::NameAllocator::GetNextName(a7, v146); + v27 = std::operator<<>(v16, "var "); + v28 = std::operator<<(v27, v146); + v29 = std::operator<<>(v28, "="); + v30 = std::operator<<(v29, a3); + std::operator<<>(v30, (char *)off_52E30A); + v134 = (_DWORD *)this[62]; + std::string::basic_string(&v155, (int)a2); + v31 = WXML::DOMLib::StrCache::GetStrID(v134, (int)&v155); + std::ostream::operator<<(v31); + std::string::_M_dispose((void **)&v155); + v32 = std::operator<<>(v16, "]].j"); + std::operator<<>(v32, a12); + } + ++v122; + } + } + ++v138; + } + v148[1] = 0; + v148[0] = &v149; + v149 = 0; + v124 = 0; + for ( i = 0; ; i = v36 ) + { + v33 = this[18]; + if ( (this[19] - v33) >> 3 <= (unsigned int)v124 ) + break; + v119 = *(_DWORD *)(v33 + 8 * (_DWORD)v124); + std::string::basic_string((void **)v153, "wx-if"); + v34 = 1; + if ( (_DWORD *)(v119 + 52) == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v119 + 48), + (int)v153) ) + { + v35 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); + std::string::basic_string((void **)&v155, "wx:if"); + v34 = v35 + 52 != (_DWORD)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v35 + 48), + (int)&v155); + std::string::_M_dispose((void **)&v155); + } + std::string::_M_dispose((void **)v153); + if ( v34 ) + { + WXML::NameAllocator::GetNextName(a7, v148); + std::string::_M_assign(*(_DWORD *)(this[18] + 8 * (_DWORD)v124) + 220, (int)v148); + v36 = 2; + *(_DWORD *)(*(_DWORD *)(this[18] + 8 * (_DWORD)v124) + 244) = 1; + } + else + { + v37 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); + v120 = v37 + 52; + std::string::basic_string(v150, "wx:elif"); + v38 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v37 + 48), + (int)v150); + std::string::_M_dispose(v150); + if ( v38 == (_DWORD *)v120 ) + { + v41 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); + v121 = v41 + 52; + std::string::basic_string((void **)v153, "wx:else"); + v42 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v41 + 48), + (int)v153); + std::string::_M_dispose((void **)v153); + if ( v42 != (_DWORD *)v121 ) + { + if ( !i ) + { + v44 = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)&v155, "`wx:if not found, then something must be wrong`"); + std::string::basic_string((void **)v153, "wx:else"); + WXML::DOMLib::WXMLDom::Error( + (int)v44, + a2, + *(_DWORD *)(this[18] + 8 * (_DWORD)v124) + 84, + v153, + (int *)&v155); + std::string::_M_dispose((void **)v153); + std::string::_M_dispose((void **)&v155); + __cxa_throw( + v44, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + v43 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); + *(_DWORD *)(v43 + 244) = i; + std::string::_M_assign(v43 + 220, (int)v148); + } + v36 = 0; + } + else + { + if ( !i ) + { + v40 = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)&v155, "`wx:if not found, then something must be wrong`"); + std::string::basic_string((void **)v153, "wx:elif"); + WXML::DOMLib::WXMLDom::Error((int)v40, a2, *(_DWORD *)(this[18] + 8 * (_DWORD)v124) + 84, v153, (int *)&v155); + std::string::_M_dispose((void **)v153); + std::string::_M_dispose((void **)&v155); + __cxa_throw( + v40, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + v36 = i + 1; + v39 = *(_DWORD *)(this[18] + 8 * (_DWORD)v124); + *(_DWORD *)(v39 + 244) = i; + std::string::_M_assign(v39 + 220, (int)v148); + } + } + ++v124; + } + v152 = 0; + v151[0] = (int)&v152; + v151[1] = 0; + v141 = 0; + v142 = 0; + v143 = 0; + for ( j = 0; (this[19] - this[18]) >> 3 > j; ++j ) + { + std::string::_M_assign((int)v151, (int)a5); + v45 = 8 * j; + if ( *(int *)(*(_DWORD *)(this[18] + 8 * j) + 244) <= 0 ) + goto LABEL_56; + v154 = 0; + v153[0] = (int)&v154; + v153[1] = 0; + v115 = WXML::DOMLib::szWXIFControlAttrs; + while ( 1 ) + { + v125 = *v115; + v113 = *(_DWORD *)(this[18] + 8 * j); + if ( !*v115 ) + break; + v112 = *(_DWORD *)(this[18] + 8 * j) + 52; + std::string::basic_string((void **)&v155, v125); + v114 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)(v113 + 48), + (int)&v155); + std::string::_M_dispose((void **)&v155); + ++v115; + if ( v114 != (_DWORD *)v112 ) + { + std::string::operator=((unsigned int *)v153, v125); + break; + } + } + if ( std::map::operator[]( + (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), + (int)v153)[14] == -3 ) + { + v139 = __cxa_allocate_exception(0x18u); + v137 = std::map::operator[]( + (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), + (int)v153); + v46 = std::map::operator[]( + (_DWORD *)(*(_DWORD *)(this[18] + v45) + 48), + (int)v153); + WXML::DOMLib::WXMLDom::Error((int)v139, a2, (int)v46, v153, v137 + 15); + __cxa_throw( + v139, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + if ( std::map::operator[]( + (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), + (int)v153)[14] == -1 + && (unsigned __int8)std::operator!=((int)v153, "wx:else") ) + { + v140 = __cxa_allocate_exception(0x18u); + std::string::basic_string((void **)&v155, "value not set"); + WXML::DOMLib::WXMLDom::Error((int)v140, a2, *(_DWORD *)(this[18] + 8 * j) + 84, v153, (int *)&v155); + std::string::_M_dispose((void **)&v155); + __cxa_throw( + v140, + (struct type_info *)&`typeinfo for'WXML::DOMLib::RenderException, + WXML::DOMLib::RenderException::~RenderException); + } + if ( std::operator==((int)v153, "wx-if") || std::operator==((int)v153, "wx:if") ) + { + v47 = std::operator<<>(v16, "var "); + v48 = std::operator<<(v47, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); + v49 = std::operator<<>(v48, "=_v()"); + std::operator<<>(v49, a12); + v50 = std::operator<<>(v16, "_("); + v51 = std::operator<<(v50, a5); + v52 = std::operator<<>(v51, ","); + v53 = std::operator<<(v52, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); + v54 = std::operator<<>(v53, ")"); + std::operator<<>(v54, a12); + std::operator<<>(v16, "if(_oz(z,"); + v55 = std::map::operator[]( + (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), + (int)v153); + std::ostream::operator<<(v55[14]); + v56 = std::operator<<>(v16, ","); + v57 = std::operator<<(v56, a8); + v58 = std::operator<<>(v57, ","); + v59 = std::operator<<(v58, a9); + v60 = std::operator<<>(v59, ","); + v61 = std::operator<<(v60, a10); + std::operator<<>(v61, ")){"); + v62 = std::operator<<(v16, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); + std::operator<<>(v62, ".wxVkey="); + v63 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); + std::operator<<>(v63, a12); + std::string::basic_string(&v155, *(_DWORD *)(this[18] + 8 * j) + 220); + v157 = 1; + std::vector>::emplace_back>((int)&v141, &v155); + std::string::_M_dispose((void **)&v155); + v64 = *(_DWORD *)(this[18] + 8 * j); + if ( *(_BYTE *)(v64 + 256) ) + goto LABEL_54; + } + else + { + if ( !std::operator==((int)v153, "wx:elif") ) + { + v74 = std::operator<<>(v16, "else{"); + v75 = std::operator<<(v74, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); + std::operator<<>(v75, ".wxVkey="); + v76 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); + std::operator<<>(v76, a12); + v64 = *(_DWORD *)(this[18] + 8 * j); + if ( !*(_BYTE *)(v64 + 256) ) + goto LABEL_55; +LABEL_54: + std::string::basic_string(&v155, v64 + 220); + v157 = 3; + std::vector>::emplace_back>((int)&v141, &v155); + std::string::_M_dispose((void **)&v155); + goto LABEL_55; + } + std::operator<<>(v16, "else if(_oz(z,"); + v65 = std::map::operator[]( + (_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 48), + (int)v153); + std::ostream::operator<<(v65[14]); + v66 = std::operator<<>(v16, ","); + v67 = std::operator<<(v66, a8); + v68 = std::operator<<>(v67, ","); + v69 = std::operator<<(v68, a9); + v70 = std::operator<<>(v69, ","); + v71 = std::operator<<(v70, a10); + std::operator<<>(v71, ")){"); + v72 = std::operator<<(v16, (int *)(*(_DWORD *)(this[18] + 8 * j) + 220)); + std::operator<<>(v72, ".wxVkey="); + v73 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 244)); + std::operator<<>(v73, a12); + v64 = *(_DWORD *)(this[18] + 8 * j); + if ( *(_BYTE *)(v64 + 256) ) + goto LABEL_54; + } +LABEL_55: + std::string::_M_assign((int)v151, *(_DWORD *)(this[18] + 8 * j) + 220); + std::string::_M_dispose((void **)v153); +LABEL_56: + if ( std::operator==(*(_DWORD *)(this[18] + 8 * j), "import") + || std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-import") ) + { + v126 = *(char **)(this[18] + 8 * j); + v116 = v126 + 52; + std::string::basic_string((void **)&v155, (char *)&off_52DF44); + v127 = (char *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)v126 + 12, + (int)&v155); + std::string::_M_dispose((void **)&v155); + if ( v127 != v116 ) + { + v77 = std::operator<<>(v16, "_ai("); + v78 = std::operator<<(v77, v144); + std::operator<<>(v78, (char *)off_52E146); + v117 = (_DWORD *)this[62]; + v128 = *(char **)(this[18] + 8 * j); + std::string::basic_string((void **)v153, (char *)&off_52DF44); + v79 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + (_DWORD *)v128 + 12, + (int)v153); + v80 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)(v79 + 10)); + std::string::basic_string(&v155, v80); + v81 = WXML::DOMLib::StrCache::GetStrID(v117, (int)&v155); + std::ostream::operator<<(v81); + std::string::_M_dispose((void **)&v155); + std::string::_M_dispose((void **)v153); + std::operator<<>(v16, "],"); + v82 = std::operator<<(v16, a3); + std::operator<<>(v82, (char *)off_52E146); + v129 = (char *)this[62]; + std::string::basic_string(&v155, (int)a2); + v83 = WXML::DOMLib::StrCache::GetStrID(v129, (int)&v155); + std::ostream::operator<<(v83); + std::string::_M_dispose((void **)&v155); + std::operator<<>(v16, "],"); + v84 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 92)); + std::operator<<>(v84, ","); + v85 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(*(_DWORD *)(this[18] + 8 * j) + 96)); + v86 = std::operator<<>(v85, ")"); + std::operator<<>(v86, a12); + goto LABEL_74; + } + } + if ( !std::operator==(*(_DWORD *)(this[18] + 8 * j), "import") + && !std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-import") ) + { + if ( std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-repeat") + || std::operator==(*(_DWORD *)(this[18] + 8 * j), "wx-template") ) + { + v155 = (unsigned int)v156; + v156[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v155); + v87 = std::operator<<>(v16, "var "); + v88 = std::operator<<(v87, (int *)&v155); + v89 = std::operator<<>(v88, "=_v()"); + std::operator<<>(v89, a12); + v90 = std::operator<<>(v16, "_("); + v91 = std::operator<<(v90, v151); + v92 = std::operator<<>(v91, ","); + v93 = std::operator<<(v92, (int *)&v155); + v94 = std::operator<<>(v93, ")"); + std::operator<<>(v94, a12); + WXML::DOMLib::WXMLDom::RenderNonDefine( + *(_DWORD *)(this[18] + 8 * j), + a2, + a3, + a4, + (int *)&v155, + a6, + a7, + a8, + a9, + a10, + a11, + a12, + a13, + a14, + a15); +LABEL_73: + std::string::_M_dispose((void **)&v155); + goto LABEL_74; + } + if ( std::operator==(*(_DWORD *)(this[18] + 8 * j), "block") + || std::operator==(*(_DWORD *)(this[18] + 8 * j), "include") ) + { + WXML::DOMLib::WXMLDom::RenderNonDefine( + *(_DWORD *)(this[18] + 8 * j), + a2, + a3, + a4, + v151, + a6, + a7, + a8, + a9, + a10, + a11, + a12, + a13, + a14, + a15); + goto LABEL_74; + } + if ( (unsigned __int8)std::operator!=(*(_DWORD *)(this[18] + 8 * j), "wx-import") ) + { + if ( (unsigned __int8)std::operator!=(*(_DWORD *)(this[18] + 8 * j), "wx-define") ) + { + v155 = (unsigned int)v156; + v156[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v155); + WXML::DOMLib::WXMLDom::RenderNonDefine( + *(_DWORD *)(this[18] + 8 * j), + a2, + a3, + a4, + (int *)&v155, + a6, + a7, + a8, + a9, + a10, + a11, + a12, + a13, + a14, + a15); + v96 = std::operator<<>(v16, "_("); + v97 = std::operator<<(v96, v151); + v98 = std::operator<<>(v97, ","); + v99 = std::operator<<(v98, (int *)&v155); + v100 = std::operator<<>(v99, ")"); + std::operator<<>(v100, a12); + goto LABEL_73; + } + } + } +LABEL_74: + if ( *(int *)(*(_DWORD *)(this[18] + 8 * j) + 244) > 0 ) + { + v101 = std::operator<<>(v16, "}"); + std::operator<<>(v101, a12); + } + } + for ( k = 0; k < -1227133513 * ((v142 - (int)v141) >> 2); ++k ) + { + v103 = std::operator<<(v16, (int *)&v141[7 * k]); + std::operator<<>(v103, ".wxXCkey="); + v104 = (std::ostream::sentry *)std::ostream::operator<<(v141[7 * k + 6]); + std::operator<<>(v104, a12); + } + for ( m = 0; v123 != m; ++m ) + { + v106 = std::operator<<(v16, v144); + v107 = std::operator<<>(v106, ".pop()"); + std::operator<<>(v107, a12); + } + for ( n = 0; v122 != n; ++n ) + { + v109 = std::operator<<(v16, v146); + v110 = std::operator<<>(v109, ".pop()"); + std::operator<<>(v110, a12); + } + std::vector>::~vector(&v141); + std::string::_M_dispose((void **)v151); + std::string::_M_dispose(v148); + std::string::_M_dispose((void **)v146); + std::string::_M_dispose((void **)v144); + return 0; +} +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 52DF44: using guessed type void *off_52DF44; +// 52E434: using guessed type char *WXML::DOMLib::szWXIFControlAttrs[4]; +// 533C6C: using guessed type int *`typeinfo for'WXML::DOMLib::RenderException; + +//----- (0041F5F4) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __thiscall WXML::DOMLib::WXMLDom::RenderMeAsFunction( + _DWORD *this, + int *a2, + int *a3, + int a4, + int *a5, + int a6, + int *a7, + int *a8, + int *a9, + int *a10, + int *a11, + int *a12, + char a13, + int *a14, + char a15, + unsigned __int8 a16, + int a17, + int *a18) +{ + std::ostream::sentry *v18; // ebx + std::ostream::sentry *v19; // eax + _DWORD *v20; // edi + int StrID; // eax + std::ostream::sentry *v22; // eax + std::ostream::sentry *v23; // eax + std::ostream::sentry *v24; // eax + std::ostream::sentry *v25; // eax + std::ostream::sentry *v26; // eax + std::ostream::sentry *v27; // eax + std::ostream::sentry *v28; // eax + std::ostream::sentry *v29; // eax + std::ostream::sentry *v30; // eax + std::ostream::sentry *v31; // eax + std::ostream::sentry *v32; // eax + std::ostream::sentry *v33; // eax + std::ostream::sentry *v34; // eax + std::ostream::sentry *v35; // eax + std::ostream::sentry *v36; // eax + int v37; // eax + std::ostream::sentry *v38; // eax + std::ostream::sentry *v39; // eax + std::ostream::sentry *v40; // eax + std::ostream::sentry *v41; // eax + std::ostream::sentry *v42; // eax + std::ostream::sentry *v43; // eax + std::ostream::sentry *v44; // eax + std::ostream::sentry *v45; // eax + std::ostream::sentry *v46; // eax + std::ostream::sentry *v47; // eax + std::ostream::sentry *v48; // eax + std::ostream::sentry *v49; // eax + int v50; // eax + std::ostream::sentry *v51; // eax + std::ostream::sentry *v52; // eax + std::ostream::sentry *v53; // eax + std::ostream::sentry *v54; // eax + std::ostream::sentry *v55; // eax + std::ostream::sentry *v56; // eax + std::ostream::sentry *v57; // eax + std::ostream::sentry *v58; // eax + std::ostream::sentry *v59; // eax + std::ostream::sentry *v60; // eax + std::ostream::sentry *v61; // eax + std::ostream::sentry *v62; // eax + std::ostream::sentry *v63; // eax + std::ostream::sentry *v64; // eax + std::ostream::sentry *v65; // eax + std::ostream::sentry *v66; // eax + std::ostream::sentry *v67; // eax + std::ostream::sentry *v68; // eax + std::ostream::sentry *v69; // eax + std::ostream::sentry *v70; // eax + std::ostream::sentry *v71; // eax + _DWORD *v73; // [esp+50h] [ebp-58h] + std::ostream::sentry *v74; // [esp+54h] [ebp-54h] + std::ostream::sentry *v75; // [esp+54h] [ebp-54h] + int v77[2]; // [esp+60h] [ebp-48h] BYREF + char v78; // [esp+68h] [ebp-40h] BYREF + int v79; // [esp+78h] [ebp-30h] BYREF + int v80; // [esp+7Ch] [ebp-2Ch] BYREF + void *v81; // [esp+80h] [ebp-28h] + int *v82; // [esp+84h] [ebp-24h] + int *v83; // [esp+88h] [ebp-20h] + int v84; // [esp+8Ch] [ebp-1Ch] + + v77[0] = (int)&v78; + v77[1] = 0; + v78 = 0; + WXML::NameAllocator::GetNextName(a7, v77); + v18 = (std::ostream::sentry *)(a6 + 8); + if ( a15 ) + { + v19 = std::operator<<((std::ostream::sentry *)(a6 + 8), a12); + std::operator<<>(v19, (char *)off_52E30A); + v20 = (_DWORD *)this[62]; + std::string::basic_string(&v79, (int)a2); + StrID = WXML::DOMLib::StrCache::GetStrID(v20, (int)&v79); + std::ostream::operator<<(StrID); + std::string::_M_dispose((void **)&v79); + std::operator<<>(v18, "]][\""); + WXML::Rewrite::ToStringCode(a5, a6); + std::operator<<>(v18, "\"]"); + } + else + { + v22 = std::operator<<>((std::ostream::sentry *)(a6 + 8), "var "); + std::operator<<(v22, a5); + } + v23 = std::operator<<>(v18, "=function("); + v24 = std::operator<<(v23, a8); + v25 = std::operator<<>(v24, ","); + v26 = std::operator<<(v25, a9); + v27 = std::operator<<>(v26, ","); + v28 = std::operator<<(v27, a11); + v29 = std::operator<<>(v28, ","); + v30 = std::operator<<(v29, a10); + v31 = std::operator<<>(v30, "){"); + std::operator<<>(v31, a13); + if ( a18[1] ) + { + v32 = std::operator<<>(v18, "var z="); + v33 = std::operator<<(v32, a18); + v34 = std::operator<<>(v33, "()"); + std::operator<<>(v34, a13); + } + if ( a15 ) + { + v35 = std::operator<<>(v18, "var "); + v36 = std::operator<<(v35, v77); + std::operator<<>(v36, (char *)off_52E3CC); + v74 = (std::ostream::sentry *)this[62]; + std::string::basic_string(&v79, (int)a2); + v37 = WXML::DOMLib::StrCache::GetStrID(v74, (int)&v79); + std::ostream::operator<<(v37); + std::string::_M_dispose((void **)&v79); + std::operator<<>(v18, "]"); + std::operator<<>(v18, "+':"); + WXML::Rewrite::ToStringCode(a5, a6); + std::operator<<>(v18, "'"); + std::operator<<>(v18, a13); + v38 = std::operator<<(v18, a11); + v39 = std::operator<<>(v38, ".wxVkey="); + v40 = std::operator<<(v39, v77); + std::operator<<>(v40, a13); + v41 = std::operator<<(v18, a10); + v75 = std::operator<<>(v41, ".f=$gdc(f_[\""); + WXML::Rewrite::ToStringCode((int)&v79, a2); + v42 = std::operator<<(v75, &v79); + v43 = std::operator<<>(v42, "\"],\"\",1)"); + std::operator<<>(v43, a13); + std::string::_M_dispose((void **)&v79); + v44 = std::operator<<>(v18, "if("); + v45 = std::operator<<(v44, a14); + v46 = std::operator<<>(v45, "["); + v47 = std::operator<<(v46, v77); + v48 = std::operator<<>(v47, "]){_wl("); + v49 = std::operator<<(v48, v77); + std::operator<<>(v49, (char *)off_52E146); + v73 = (_DWORD *)this[62]; + std::string::basic_string(&v79, (int)a2); + v50 = WXML::DOMLib::StrCache::GetStrID(v73, (int)&v79); + v51 = (std::ostream::sentry *)std::ostream::operator<<(v50); + v52 = std::operator<<>(v51, "]);return}"); + std::operator<<>(v52, a13); + std::string::_M_dispose((void **)&v79); + v53 = std::operator<<(v18, a14); + v54 = std::operator<<>(v53, "["); + v55 = std::operator<<(v54, v77); + v56 = std::operator<<>(v55, "]=true"); + std::operator<<>(v56, a13); + v57 = std::operator<<>(v18, "try{"); + std::operator<<>(v57, a13); + } + v80 = 0; + v82 = &v80; + v83 = &v80; + v81 = 0; + v84 = 0; + WXML::DOMLib::WXMLDom::RenderChildren(this, a2, a3, a4, a11, a6, a7, a8, a9, a10, a12, a13, a16, a17, (int)&v79); + if ( a15 ) + { + v58 = std::operator<<>(v18, "}catch(err){"); + std::operator<<>(v58, a13); + v59 = std::operator<<(v18, a14); + v60 = std::operator<<>(v59, "["); + v61 = std::operator<<(v60, v77); + v62 = std::operator<<>(v61, "]=false"); + std::operator<<>(v62, a13); + v63 = std::operator<<>(v18, "throw err"); + std::operator<<>(v63, a13); + v64 = std::operator<<>(v18, "}"); + std::operator<<>(v64, a13); + v65 = std::operator<<(v18, a14); + v66 = std::operator<<>(v65, "["); + v67 = std::operator<<(v66, v77); + v68 = std::operator<<>(v67, "]=false"); + std::operator<<>(v68, a13); + } + v69 = std::operator<<>(v18, "return "); + v70 = std::operator<<(v69, a11); + std::operator<<>(v70, a13); + v71 = std::operator<<>(v18, "}"); + std::operator<<>(v71, a13); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase((void **)v81); + std::string::_M_dispose((void **)v77); + return 0; +} +// 41FC5E: positive sp value 4 has been found +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); + +//----- (0041FC74) -------------------------------------------------------- +void __cdecl __tcf_0_0() +{ + std::ios_base::Init::~Init(); +} + +//----- (0041FC7E) -------------------------------------------------------- +volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) +{ + if ( _CRT_MT ) + _InterlockedIncrement(result); + else + ++*result; + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0041FC8E) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Machine::Reset(_DWORD *a1) +{ + int result; // eax + + a1[1] = 0; + result = 0; + *a1 = 0; + a1[2] = 1; + a1[3] = 0; + a1[4] = 1; + a1[5] = 1; + a1[6] = 1; + return result; +} + +//----- (0041FCC2) -------------------------------------------------------- +void WXML::DOMLib::Machine::InitTransitTable() +{ + const char *v0; // edx + int v1; // eax + const char *i; // edx + int v3; // eax + const char *v4; // edx + int v5; // eax + const char *j; // edx + int v7; // eax + const char *k; // edx + int v9; // eax + const char *v10; // edx + int v11; // eax + const char *m; // edx + int v13; // eax + const char *v14; // edx + int v15; // eax + const char *n; // edx + int v17; // eax + const char *ii; // edx + int v19; // eax + const char *v20; // edx + int v21; // eax + const char *v22; // edx + int v23; // eax + const char *v24; // edx + int v25; // eax + + if ( !WXML::DOMLib::Machine::InitTransitTable(void)::bInited ) + { + WXML::DOMLib::Machine::InitTransitTable(void)::bInited = 1; + v0 = " \n\t\r"; + memset(&WXML::DOMLib::Machine::TT, 0, 0x101000u); + dword_5A1AEC = 99; + dword_588E54 = 131074; + dword_588F50 = 15; + dword_589164 = 1; + dword_588D64 = 131171; + dword_58C788 = 16; + dword_58C99C = 1; + dword_58CB94 = 17; + dword_58C9A0 = -1; + dword_58CDA0 = 16; + dword_58CF98 = 1; + dword_58D1A4 = 1048592; + dword_58CA28 = 11; + dword_58CA3C = 13; + dword_58B6FC = 12; + dword_58BD90 = 11; + dword_58B614 = 16; + dword_58B58C = -1; + dword_58B98C = 11; + dword_58BF04 = 14; + dword_58C598 = 13; + dword_58BE30 = 16; + dword_58BD94 = -1; + dword_58C194 = 13; + while ( 1 ) + { + v1 = *v0; + if ( !(_BYTE)v1 ) + break; + dword_589168[v1] = 655363; + ++v0; + } + for ( i = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++i ) + { + v3 = *i; + if ( !(_BYTE)v3 ) + break; + dword_589168[v3] = 131076; + } + dword_589224 = 262147; + v4 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; + dword_5891EC = 33; + dword_589344 = 22; + dword_589568 = -1; + dword_590E98 = 34; + dword_5911E4 = -1; + dword_59129C = 19; + dword_5915E8 = -1; + dword_58D660 = 20; + dword_58D9AC = 19; + dword_58DA64 = 21; + dword_58DDB0 = 19; + dword_58DEAC = 524289; + dword_58DE68 = 21; + dword_58E1B4 = 19; + while ( 1 ) + { + v5 = *v4; + if ( !(_BYTE)v5 ) + break; + dword_589970[v5] = 4; + ++v4; + } + for ( j = "0123456789"; ; ++j ) + { + v7 = *j; + if ( !(_BYTE)v7 ) + break; + dword_589970[v7] = 4; + } + for ( k = " \n\t\r"; ; ++k ) + { + v9 = *k; + if ( !(_BYTE)v9 ) + break; + dword_589970[v9] = 655363; + } + dword_589A64 = 131078; + v10 = " \n\t\r"; + dword_5899F8 = -1; + dword_589A68 = 393217; + dword_589A2C = 131090; + dword_589D70 = 131075; + dword_589970[0] = -1; + while ( 1 ) + { + v11 = *v10; + if ( !(_BYTE)v11 ) + break; + dword_58A178[v11] = 655363; + ++v10; + } + for ( m = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++m ) + { + v13 = *m; + if ( !(_BYTE)v13 ) + break; + dword_58A178[v13] = 131077; + } + dword_58A200 = 131077; + v14 = " \n\t\r"; + dword_58A214 = 131081; + dword_58A178[0] = -1; + dword_58A578 = -1; + while ( 1 ) + { + v15 = *v14; + if ( !(_BYTE)v15 ) + break; + dword_58956C[v15] = 524291; + ++v14; + } + for ( n = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; ; ++n ) + { + v17 = *n; + if ( !(_BYTE)v17 ) + break; + dword_58956C[v17] = 4; + } + for ( ii = "0123456789"; ; ++ii ) + { + v19 = *ii; + if ( !(_BYTE)v19 ) + break; + dword_58956C[v19] = -1; + } + dword_58965C = -1; + v20 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-:"; + dword_5895F4 = 5; + dword_589608 = 9; + dword_589628 = 18; + dword_589664 = 262145; + dword_589660 = 6; + dword_58956C[0] = -1; + dword_58996C = -1; + while ( 1 ) + { + v21 = *v20; + if ( !(_BYTE)v21 ) + break; + dword_58D1A8[v21] = 131076; + ++v20; + } + dword_58D2A0 = 262145; + v22 = " \n\t\r"; + dword_58D5A8 = -1; + dword_589EE4 = 7; + dword_589D9C = -1; + dword_58A97C = 5; + dword_58A5A4 = 655363; + dword_589DFC = 262147; + dword_589D74 = -1; + dword_58A174 = 5; + dword_58AEF4 = 10; + dword_58ADAC = -1; + dword_58B588 = 9; + dword_58B1B0 = 655363; + dword_58AE20 = 262147; + dword_58AD84 = -1; + dword_58B184 = 9; + dword_58E398 = 23; + dword_58E5B8 = 3145732; + dword_58E788 = 24; + dword_58E9BC = 3145732; + while ( 1 ) + { + v23 = *v22; + if ( !(_BYTE)v23 ) + break; + dword_58E9C0[v23] = 25; + ++v22; + } + dword_58EAB8 = 31; + v24 = " \n\t\r"; + dword_58EDC0 = 3145732; + dword_58EEBC = 31; + dword_58EE80 = 32; + dword_58F1C4 = 25; + dword_590AD8 = 262145; + dword_590DE0 = 1048601; + dword_5906CC = 131098; + dword_5909DC = 31; + dword_58F284 = 27; + dword_58F5C8 = (int)&byte_50001F; + dword_58F7A8 = 28; + dword_58F9CC = (int)&byte_50001F; + dword_58FBB0 = 29; + dword_58FDD0 = (int)&byte_50001F; + dword_58FFA0 = 30; + dword_5901D4 = (int)&byte_50001F; + while ( 1 ) + { + v25 = *v24; + if ( !(_BYTE)v25 ) + break; + dword_5901D8[v25] = 30; + ++v24; + } + dword_5902D0 = 524289; + dword_5905D8 = -1; + dword_587964 = 1; + dword_587974 = 2; + dword_587984 = 2; + dword_5879DC = 3; + dword_5879E0 = 3; + } +} +// 50001F: using guessed type char byte_50001F; +// 587964: using guessed type int dword_587964; +// 587974: using guessed type int dword_587974; +// 587984: using guessed type int dword_587984; +// 5879DC: using guessed type int dword_5879DC; +// 5879E0: using guessed type int dword_5879E0; +// 588960: using guessed type int WXML::DOMLib::Machine::TT; +// 588D64: using guessed type int dword_588D64; +// 588E54: using guessed type int dword_588E54; +// 588F50: using guessed type int dword_588F50; +// 589164: using guessed type int dword_589164; +// 589168: using guessed type int dword_589168[33]; +// 5891EC: using guessed type int dword_5891EC; +// 589224: using guessed type int dword_589224; +// 589344: using guessed type int dword_589344; +// 589568: using guessed type int dword_589568; +// 58956C: using guessed type int dword_58956C[34]; +// 5895F4: using guessed type int dword_5895F4; +// 589608: using guessed type int dword_589608; +// 589628: using guessed type int dword_589628; +// 58965C: using guessed type int dword_58965C; +// 589660: using guessed type int dword_589660; +// 589664: using guessed type int dword_589664; +// 58996C: using guessed type int dword_58996C; +// 589970: using guessed type int dword_589970[34]; +// 5899F8: using guessed type int dword_5899F8; +// 589A2C: using guessed type int dword_589A2C; +// 589A64: using guessed type int dword_589A64; +// 589A68: using guessed type int dword_589A68; +// 589D70: using guessed type int dword_589D70; +// 589D74: using guessed type int dword_589D74; +// 589D9C: using guessed type int dword_589D9C; +// 589DFC: using guessed type int dword_589DFC; +// 589EE4: using guessed type int dword_589EE4; +// 58A174: using guessed type int dword_58A174; +// 58A178: using guessed type int dword_58A178[]; +// 58A200: using guessed type int dword_58A200; +// 58A214: using guessed type int dword_58A214; +// 58A578: using guessed type int dword_58A578; +// 58A5A4: using guessed type int dword_58A5A4; +// 58A97C: using guessed type int dword_58A97C; +// 58AD84: using guessed type int dword_58AD84; +// 58ADAC: using guessed type int dword_58ADAC; +// 58AE20: using guessed type int dword_58AE20; +// 58AEF4: using guessed type int dword_58AEF4; +// 58B184: using guessed type int dword_58B184; +// 58B1B0: using guessed type int dword_58B1B0; +// 58B588: using guessed type int dword_58B588; +// 58B58C: using guessed type int dword_58B58C; +// 58B614: using guessed type int dword_58B614; +// 58B6FC: using guessed type int dword_58B6FC; +// 58B98C: using guessed type int dword_58B98C; +// 58BD90: using guessed type int dword_58BD90; +// 58BD94: using guessed type int dword_58BD94; +// 58BE30: using guessed type int dword_58BE30; +// 58BF04: using guessed type int dword_58BF04; +// 58C194: using guessed type int dword_58C194; +// 58C598: using guessed type int dword_58C598; +// 58C788: using guessed type int dword_58C788; +// 58C99C: using guessed type int dword_58C99C; +// 58C9A0: using guessed type int dword_58C9A0; +// 58CA28: using guessed type int dword_58CA28; +// 58CA3C: using guessed type int dword_58CA3C; +// 58CB94: using guessed type int dword_58CB94; +// 58CDA0: using guessed type int dword_58CDA0; +// 58CF98: using guessed type int dword_58CF98; +// 58D1A4: using guessed type int dword_58D1A4; +// 58D1A8: using guessed type int dword_58D1A8[62]; +// 58D2A0: using guessed type int dword_58D2A0; +// 58D5A8: using guessed type int dword_58D5A8; +// 58D660: using guessed type int dword_58D660; +// 58D9AC: using guessed type int dword_58D9AC; +// 58DA64: using guessed type int dword_58DA64; +// 58DDB0: using guessed type int dword_58DDB0; +// 58DE68: using guessed type int dword_58DE68; +// 58DEAC: using guessed type int dword_58DEAC; +// 58E1B4: using guessed type int dword_58E1B4; +// 58E398: using guessed type int dword_58E398; +// 58E5B8: using guessed type int dword_58E5B8; +// 58E788: using guessed type int dword_58E788; +// 58E9BC: using guessed type int dword_58E9BC; +// 58E9C0: using guessed type int dword_58E9C0[62]; +// 58EAB8: using guessed type int dword_58EAB8; +// 58EDC0: using guessed type int dword_58EDC0; +// 58EE80: using guessed type int dword_58EE80; +// 58EEBC: using guessed type int dword_58EEBC; +// 58F1C4: using guessed type int dword_58F1C4; +// 58F284: using guessed type int dword_58F284; +// 58F5C8: using guessed type int dword_58F5C8; +// 58F7A8: using guessed type int dword_58F7A8; +// 58F9CC: using guessed type int dword_58F9CC; +// 58FBB0: using guessed type int dword_58FBB0; +// 58FDD0: using guessed type int dword_58FDD0; +// 58FFA0: using guessed type int dword_58FFA0; +// 5901D4: using guessed type int dword_5901D4; +// 5901D8: using guessed type int dword_5901D8[62]; +// 5902D0: using guessed type int dword_5902D0; +// 5905D8: using guessed type int dword_5905D8; +// 5906CC: using guessed type int dword_5906CC; +// 5909DC: using guessed type int dword_5909DC; +// 590AD8: using guessed type int dword_590AD8; +// 590DE0: using guessed type int dword_590DE0; +// 590E98: using guessed type int dword_590E98; +// 5911E4: using guessed type int dword_5911E4; +// 59129C: using guessed type int dword_59129C; +// 5915E8: using guessed type int dword_5915E8; +// 5A1AEC: using guessed type int dword_5A1AEC; +// 689960: using guessed type char WXML::DOMLib::Machine::InitTransitTable(void)::bInited; + +//----- (00420232) -------------------------------------------------------- +void __thiscall WXML::DOMLib::Machine::Machine(int this, int a2) +{ + int v2; // esi + + v2 = this + 28; + *(_DWORD *)(this + 28) = this + 36; + *(_DWORD *)(this + 32) = 0; + *(_BYTE *)(this + 36) = 0; + WXML::DOMLib::Machine::InitTransitTable(); + std::string::_M_assign(v2, a2); +} + +//----- (0042027C) -------------------------------------------------------- +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + int result; // eax + + v1 = *a1; + if ( v1 ) + return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); + return result; +} + +//----- (00420288) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Token::~Token(int a1) +{ + std::string::_M_dispose((void **)(a1 + 88)); + std::string::_M_dispose((void **)(a1 + 60)); + std::string::_M_dispose((void **)(a1 + 32)); + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); +} + +//----- (004202AF) -------------------------------------------------------- +int __usercall std::__relocate_a_1>@( + int a1@, + int a2@, + int a3@) +{ + int v4; // esi + int i; // ebx + int v6; // eax + _DWORD *v7; // ecx + int v8; // ecx + + v4 = a3; + for ( i = a1; i != a2; i += 112 ) + { + *(_DWORD *)v4 = *(_DWORD *)i; + v6 = *(_DWORD *)(i + 4); + *(_DWORD *)(v4 + 4) = v6; + if ( v6 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v6 + 4)); + *(_DWORD *)(v4 + 8) = *(_DWORD *)(i + 8); + *(_DWORD *)(v4 + 12) = *(_DWORD *)(i + 12); + *(_DWORD *)(v4 + 16) = *(_DWORD *)(i + 16); + *(_DWORD *)(v4 + 20) = *(_DWORD *)(i + 20); + *(_DWORD *)(v4 + 24) = *(_DWORD *)(i + 24); + *(_BYTE *)(v4 + 28) = *(_BYTE *)(i + 28); + std::string::basic_string((_DWORD *)(v4 + 32), (_DWORD *)(i + 32)); + *(_DWORD *)(v4 + 56) = *(_DWORD *)(i + 56); + std::string::basic_string((_DWORD *)(v4 + 60), (_DWORD *)(i + 60)); + v7 = (_DWORD *)(v4 + 88); + v4 += 112; + *(_BYTE *)(v4 - 28) = *(_BYTE *)(i + 84); + std::string::basic_string(v7, (_DWORD *)(i + 88)); + v8 = i; + WXML::DOMLib::Token::~Token(v8); + } + return a3 + 112 * ((115043767 * ((unsigned int)(i - a1) >> 4)) & 0xFFFFFFF); +} + +//----- (00420372) -------------------------------------------------------- +int __thiscall WXML::DOMLib::Machine::Feed(int *this, unsigned __int8 a2, int a3, _DWORD *a4, int a5, int a6) +{ + int v7; // esi + std::ostream::sentry *v8; // eax + std::ostream::sentry *v9; // eax + std::ostream::sentry *v10; // eax + std::ostream::sentry *v11; // eax + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + std::ostream::sentry *v14; // eax + std::ostream::sentry *v15; // eax + int result; // eax + int v17; // eax + int v18; // edx + int v19; // edx + int v20; // ecx + int v21; // eax + int v22; // edx + int v23; // ecx + int v24; // ecx + int v25; // ecx + int v26; // eax + int v27; // eax + int v28; // eax + int v29; // ecx + int v30; // eax + int v31; // edi + int v32; // ecx + int v33; // ecx + int v34; // ecx + int v35; // edx + int v36; // eax + int v37; // eax + int v38; // ecx + const WXML::DOMLib::Token *v39; // [esp+4h] [ebp-124h] + int v40; // [esp+18h] [ebp-110h] + void *v41[6]; // [esp+28h] [ebp-100h] BYREF + int v42; // [esp+40h] [ebp-E8h] BYREF + int v43; // [esp+44h] [ebp-E4h] + int v44; // [esp+48h] [ebp-E0h] BYREF + int v45; // [esp+4Ch] [ebp-DCh] BYREF + int v46; // [esp+50h] [ebp-D8h] + int v47; // [esp+54h] [ebp-D4h] + int v48; // [esp+58h] [ebp-D0h] + char v49; // [esp+5Ch] [ebp-CCh] + char *v50; // [esp+60h] [ebp-C8h] + int v51; // [esp+64h] [ebp-C4h] + char v52[16]; // [esp+68h] [ebp-C0h] BYREF + int v53; // [esp+78h] [ebp-B0h] + char *v54; // [esp+7Ch] [ebp-ACh] + int v55; // [esp+80h] [ebp-A8h] + char v56[16]; // [esp+84h] [ebp-A4h] BYREF + char v57; // [esp+94h] [ebp-94h] + char *v58; // [esp+98h] [ebp-90h] + int v59; // [esp+9Ch] [ebp-8Ch] + char v60[136]; // [esp+A0h] [ebp-88h] BYREF + + if ( a2 == 10 ) + { + ++this[2]; + this[3] = 0; + } + do + { + v40 = this[6]; + v7 = WXML::DOMLib::Machine::TT[257 * v40 + a2]; + if ( !v7 ) + { + v7 = dword_588D60[257 * v40]; + if ( !v7 ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v42); + std::operator<<>((std::ostream::sentry *)&v44, "BAD STATE MACHINE! AT INPUT "); + v8 = (std::ostream::sentry *)std::ostream::operator<<(this[6]); + v9 = std::operator<<>(v8, " "); + std::operator<<>(v9, a2); + std::stringbuf::str((int)v41, &v45); +LABEL_11: + std::string::operator=(a4, v41); + std::string::_M_dispose(v41); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v42); + return -1; + } + } + if ( v7 < 0 ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v42); + v10 = std::operator<<((std::ostream::sentry *)&v44, this + 7); + std::operator<<>(v10, ":"); + v11 = (std::ostream::sentry *)std::ostream::operator<<(this[2]); + std::operator<<>(v11, ":"); + v12 = (std::ostream::sentry *)std::ostream::operator<<(this[3]); + v13 = std::operator<<>(v12, ": "); + if ( a2 ) + { + v14 = std::operator<<>(v13, "unexpected character `"); + v15 = std::operator<<>(v14, a2); + std::operator<<>(v15, "`"); + } + else + { + std::operator<<>(v13, "unexpected end"); + } + std::stringbuf::str((int)v41, &v45); + goto LABEL_11; + } + this[6] = (unsigned __int16)v7; + if ( (v7 & 0x200000) != 0 ) + { + v17 = this[1]; + if ( *this > v17 ) + { + v46 = this[1]; + v50 = v52; + v54 = v56; + v58 = v60; + v18 = this[4]; + this[1] = v17 + 1; + v44 = v18; + v19 = this[5]; + v42 = 0; + v45 = v19; + this[5] = v19 + 1; + v43 = 0; + v51 = 0; + v52[0] = 0; + v55 = 0; + v56[0] = 0; + v59 = 0; + v60[0] = 0; + v49 = 0; + v57 = 0; + v53 = -1; + v47 = 1; + v48 = 0; + std::vector::push_back(a3, (WXML::DOMLib::Token *)&v42); + WXML::DOMLib::Token::~Token((int)&v42); + } + } + if ( (v7 & 0x400000) != 0 ) + { + WXML::DOMLib::Token::Token((int)&v42, (WXML::DOMLib::Token *)(*(_DWORD *)(a5 + 4) - 112), v39); + v20 = *(_DWORD *)(a5 + 4) - 112; + *(_DWORD *)(a5 + 4) = v20; + WXML::DOMLib::Token::~Token(v20); + this[4] = v44; + this[5] = v45; + this[1] = v46; + WXML::DOMLib::Token::~Token((int)&v42); + } + } + while ( (v7 & 0x100000) != 0 ); + if ( (v7 & 0x20000) != 0 ) + { + v21 = *this; + v22 = this[1]; + if ( v22 < *this ) + { + this[1] = v21; + v50 = v52; + v54 = v56; + v58 = v60; + v23 = this[4]; + v42 = 0; + v44 = v23; + v24 = this[5]; + v43 = 0; + v45 = v24; + v25 = v21; + v26 = this[3]; + v46 = v22; + this[5] = v26; + v27 = this[2]; + v51 = 0; + this[4] = v27; + v52[0] = 0; + v28 = WXML::DOMLib::Machine::STT[v40]; + v47 = v25 - v22; + v55 = 0; + v56[0] = 0; + v59 = 0; + v60[0] = 0; + v49 = 0; + v57 = 0; + v53 = -1; + v48 = v28; + if ( v28 == 3 ) + v29 = a5; + else + v29 = a3; + std::vector::push_back(v29, (WXML::DOMLib::Token *)&v42); + WXML::DOMLib::Token::~Token((int)&v42); + } + } + v30 = *this + 1; + v31 = this[3] + 1; + *this = v30; + this[3] = v31; + if ( (v7 & 0x40000) != 0 ) + { + v42 = 0; + v50 = v52; + v54 = v56; + v58 = v60; + v32 = this[4]; + v43 = 0; + v44 = v32; + v33 = this[5]; + v51 = 0; + v45 = v33; + v34 = this[1]; + this[1] = v30; + v35 = v30 - v34; + v52[0] = 0; + this[5] = v31; + v36 = this[2]; + v55 = 0; + this[4] = v36; + v56[0] = 0; + v37 = WXML::DOMLib::Machine::STT[v40]; + v60[0] = 0; + v59 = 0; + v49 = 0; + v57 = 0; + v53 = -1; + v46 = v34; + v47 = v35; + v48 = v37; + if ( v37 == 3 ) + v38 = a5; + else + v38 = a3; + std::vector::push_back(v38, (WXML::DOMLib::Token *)&v42); + WXML::DOMLib::Token::~Token((int)&v42); + } + result = v7 & 0x80000; + if ( (v7 & 0x80000) != 0 ) + { + this[1] = *this; + this[5] = this[3]; + return 0; + } + return result; +} +// 42069E: variable 'v39' is possibly undefined +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 587960: using guessed type int WXML::DOMLib::Machine::STT[]; +// 588960: using guessed type int WXML::DOMLib::Machine::TT[]; +// 588D60: using guessed type int dword_588D60[]; + +//----- (00420944) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( + volatile signed __int32 **this, + volatile signed __int32 *a2) +{ + if ( *this != a2 ) + { + if ( a2 ) + __gnu_cxx::__atomic_add_dispatch(a2 + 1); + if ( *this ) + std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); + *this = a2; + } + return this; +} + +//----- (00420974) -------------------------------------------------------- +#error "420A8F: call analysis failed (funcsize=92)" + +//----- (00420AE6) -------------------------------------------------------- +unsigned int __thiscall WXML::DOMLib::Tokenizer::GetTokens(char *this, _DWORD *a2, unsigned int *a3, _DWORD *a4) +{ + int *v5; // ecx + unsigned int v6; // ebx + unsigned int v7; // edx + int v8; // eax + int v9; // eax + unsigned int v10; // edx + volatile signed __int32 **v11; // ecx + int v12; // eax + volatile signed __int32 **v13; // ecx + unsigned int v15; // [esp+28h] [ebp-20h] + unsigned int v16; // [esp+28h] [ebp-20h] + int *v17; // [esp+2Ch] [ebp-1Ch] + int *v18; // [esp+2Ch] [ebp-1Ch] + int v19; // [esp+2Ch] [ebp-1Ch] + + v17 = (int *)(this + 8); + WXML::DOMLib::Machine::Reset((_DWORD *)this + 2); + v5 = v17; + if ( *(_DWORD *)this ) + { + v7 = 0; + v6 = 0; + while ( *(_DWORD *)(*(_DWORD *)this + 4) > v7 ) + { + if ( v6 ) + return v6; + v15 = v7; + v18 = v5; + v8 = WXML::DOMLib::Machine::Feed(v5, *(_BYTE *)(**(_DWORD **)this + v7), (int)a2, a3, (int)a4, 0); + v5 = v18; + v6 = v8; + v7 = v15 + 1; + } + if ( !v6 ) + { + v9 = WXML::DOMLib::Machine::Feed(v5, 0, (int)a2, a3, (int)a4, 0); + v10 = 0; + v19 = v9; + while ( -1227133513 * ((a2[1] - *a2) >> 4) > v10 ) + { + v16 = v10; + v11 = (volatile signed __int32 **)(112 * v10 + *a2 + 4); + *(v11 - 1) = *(volatile signed __int32 **)this; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v11, *((volatile signed __int32 **)this + 1)); + v10 = v16 + 1; + } + while ( -1227133513 * ((a4[1] - *a4) >> 4) > v6 ) + { + v12 = 112 * v6++; + v13 = (volatile signed __int32 **)(v12 + *a4 + 4); + *(v13 - 1) = *(volatile signed __int32 **)this; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v13, *((volatile signed __int32 **)this + 1)); + } + return v19; + } + } + else + { + v6 = -1; + std::string::operator=(a3, "FATAL: no source was set or failed to allocate space for input source"); + } + return v6; +} + +//----- (00420C25) -------------------------------------------------------- +void __cdecl __tcf_0_1() +{ + std::ios_base::Init::~Init(); +} + +//----- (00420C30) -------------------------------------------------------- +int (__stdcall *__fastcall std::_Function_base::~_Function_base(int a1))(int, int, int, int, int, int) +{ + int (__stdcall *result)(int, int, int, int, int, int); // eax + int v2; // [esp+Ch] [ebp-10h] + int v3; // [esp+10h] [ebp-Ch] + int v4; // [esp+14h] [ebp-8h] + + result = *(int (__stdcall **)(int, int, int, int, int, int))(a1 + 8); + if ( result ) + return (int (__stdcall *)(int, int, int, int, int, int))result(a1, a1, 3, v2, v3, v4); + return result; +} +// 420C4C: variable 'v2' is possibly undefined +// 420C4C: variable 'v3' is possibly undefined +// 420C4C: variable 'v4' is possibly undefined + +//----- (00420C51) -------------------------------------------------------- +int __cdecl std::_Function_base::_Base_manager const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_manager( + void **a1, + const void **a2, + unsigned int a3) +{ + void *v3; // eax + const void *v4; // esi + void (__cdecl *v6)(void *); // [esp+4h] [ebp-24h] + + if ( a3 == 2 ) + { + v4 = *a2; + v3 = operator new((struct type_info *)0xC, v6); + qmemcpy(v3, v4, 0xCu); + goto LABEL_9; + } + if ( a3 <= 2 ) + { + if ( !a3 ) + { + *a1 = &`typeinfo for'WXML::Compiler::CalculateOutputChunkKeys(std::vector const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}; + return 0; + } + v3 = (void *)*a2; +LABEL_9: + *a1 = v3; + return 0; + } + if ( a3 == 3 && *a1 ) + operator delete(*a1); + return 0; +} +// 420C8A: variable 'v6' is possibly undefined +// 52E5A0: using guessed type int *`typeinfo for'WXML::Compiler::CalculateOutputChunkKeys(std::vector const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}; + +//----- (00420CB4) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 3 ) + { + if ( *i ) + operator delete(*i); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00420CF1) -------------------------------------------------------- +unsigned int __cdecl std::_Function_handler const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_invoke( + int *a1, + _DWORD *a2, + int *a3) +{ + unsigned int v3; // ebx + int v4; // esi + _DWORD *v5; // edi + unsigned int result; // eax + _DWORD *v7; // ecx + _DWORD *v8; // edx + _DWORD *v9; // eax + int v10; // [esp+18h] [ebp-30h] + _DWORD *v11; // [esp+1Ch] [ebp-2Ch] + unsigned int v12[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v3 = 0; + v4 = *a1; + v12[0] = *a3; + v10 = 12 * *a2; + while ( 1 ) + { + v5 = (_DWORD *)(**(_DWORD **)v4 + v10); + result = (v5[1] - *v5) >> 2; + if ( result <= v3 ) + break; + v11 = (_DWORD *)(*v5 + 4 * v3); + v7 = (_DWORD *)(**(_DWORD **)(v4 + 4) + 24 * *v11); + v8 = v7 + 1; + v9 = (_DWORD *)v7[2]; + while ( v9 ) + { + if ( v9[4] < v12[0] ) + { + v9 = (_DWORD *)v9[3]; + } + else + { + v8 = v9; + v9 = (_DWORD *)v9[2]; + } + } + if ( v7 + 1 == v8 || v8[4] > v12[0] ) + { + std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( + v7, + v12); + std::function::operator()(*(_DWORD *)(v4 + 8), *v11, v12[0]); + } + ++v3; + } + return result; +} +// 420CF1: using guessed type unsigned int var_1C[7]; + +//----- (00420D9A) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::less,std::allocator>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::less,std::allocator>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (00420DAE) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + int v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 24 ) + { + v4 = (int)i; + std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00420DE4) -------------------------------------------------------- +void __cdecl WXML::Compiler::CalculateOutputChunkKeys(_DWORD *a1, int a2, int a3, int a4, _DWORD *a5) +{ + unsigned int v5; // edi + int v6; // ebx + unsigned int v7; // edx + int v8; // esi + struct type_info *v9; // ebx + void **v10; // eax + int v11; // ebx + _DWORD *i; // ebx + _DWORD *v13; // esi + void **v14; // edi + _DWORD *v15; // eax + _DWORD *j; // ebx + void **v17; // esi + _DWORD *v18; // eax + int v19; // esi + int v20; // esi + int v21; // esi + int v22; // edx + char *v23; // eax + unsigned int m; // eax + int v25; // ebx + unsigned int v26; // edx + int v27; // edi + unsigned int n; // edx + _BYTE *v29; // ebx + unsigned int v30; // ecx + _DWORD *v31; // eax + int v32; // ebx + char *v33; // edx + _DWORD *v34; // eax + int *v35; // ebx + int *v36; // esi + char *v37; // edi + unsigned int v38; // eax + unsigned int v39; // edx + unsigned int v40; // edx + _DWORD *v41; // eax + void (__cdecl *v42)(void *); // ecx + char *v43; // ebx + int *v44; // edx + int v45; // esi + _DWORD *v46; // ebx + _DWORD *v47; // edi + _DWORD *v48; // edi + _DWORD *v49; // edx + int insert_hint_unique_pos; // esi + _DWORD *v51; // edi + char v52; // al + void **v53; // edi + void **v54; // ecx + int v55; // esi + _DWORD *v56; // eax + _DWORD *v57; // eax + _DWORD *v58; // edx + int v59; // ecx + _DWORD *v60; // edx + int v61; // ecx + int v62; // edx + void *v63; // [esp+0h] [ebp-118h] + void (__cdecl *v64)(void *); // [esp+4h] [ebp-114h] + void (__cdecl *v65)(void *); // [esp+4h] [ebp-114h] + _DWORD *v66; // [esp+24h] [ebp-F4h] + int v67; // [esp+24h] [ebp-F4h] + _DWORD *v68; // [esp+28h] [ebp-F0h] + _DWORD *v69; // [esp+28h] [ebp-F0h] + void **v70; // [esp+28h] [ebp-F0h] + _DWORD *k; // [esp+2Ch] [ebp-ECh] + unsigned int v72; // [esp+2Ch] [ebp-ECh] + void **v73; // [esp+34h] [ebp-E4h] BYREF + int v74; // [esp+38h] [ebp-E0h] + int v75; // [esp+3Ch] [ebp-DCh] + _DWORD *v76; // [esp+40h] [ebp-D8h] BYREF + int v77; // [esp+44h] [ebp-D4h] + int v78; // [esp+48h] [ebp-D0h] + int v79[4]; // [esp+4Ch] [ebp-CCh] BYREF + char *v80; // [esp+5Ch] [ebp-BCh] BYREF + int v81; // [esp+60h] [ebp-B8h] + char *v82; // [esp+64h] [ebp-B4h] + int v83; // [esp+68h] [ebp-B0h] + char *v84; // [esp+6Ch] [ebp-ACh] + int v85; // [esp+70h] [ebp-A8h] BYREF + int v86; // [esp+74h] [ebp-A4h] BYREF + void *v87; // [esp+78h] [ebp-A0h] + int *v88; // [esp+7Ch] [ebp-9Ch] + int *v89; // [esp+80h] [ebp-98h] + int v90; // [esp+84h] [ebp-94h] + int v91; // [esp+88h] [ebp-90h] BYREF + int v92; // [esp+8Ch] [ebp-8Ch] BYREF + void *v93; // [esp+90h] [ebp-88h] + int *v94; // [esp+94h] [ebp-84h] + int *v95; // [esp+98h] [ebp-80h] + int v96; // [esp+9Ch] [ebp-7Ch] + void *v97[6]; // [esp+A0h] [ebp-78h] BYREF + int *p_ii; // [esp+B8h] [ebp-60h] BYREF + int v99; // [esp+BCh] [ebp-5Ch] + int v100[4]; // [esp+C0h] [ebp-58h] BYREF + unsigned int ii; // [esp+D0h] [ebp-48h] BYREF + int v102; // [esp+D4h] [ebp-44h] BYREF + _DWORD *v103; // [esp+D8h] [ebp-40h] BYREF + int *v104; // [esp+DCh] [ebp-3Ch] + int *v105; // [esp+E0h] [ebp-38h] + int v106; // [esp+E4h] [ebp-34h] + void *v107[12]; // [esp+E8h] [ebp-30h] BYREF + + v5 = 0; + v88 = &v86; + v86 = 0; + v87 = 0; + v89 = &v86; + v90 = 0; + while ( 1 ) + { + v6 = (a1[1] - *a1) >> 3; + v7 = -1431655765 * v6; + v8 = -1431655765 * v6; + if ( v5 >= -1431655765 * v6 ) + break; + *std::map::operator[](&v85, 24 * v5 + *a1) = v5; + ++v5; + } + if ( v7 > 0xAAAAAAA ) + std::__throw_length_error((std::length_error *)"cannot create std::vector larger than max_size()"); + v73 = 0; + v9 = (struct type_info *)(4 * v6); + v74 = 0; + v75 = 0; + if ( v7 ) + v10 = (void **)operator new(v9, v64); + else + v10 = 0; + v11 = (int)v9 + (_DWORD)v10; + v73 = v10; + v75 = v11; + while ( v8 ) + { + *v10 = 0; + --v8; + v10 += 3; + *(v10 - 2) = 0; + *(v10 - 1) = 0; + } + v74 = v11; + for ( i = *(_DWORD **)(a3 + 12); (_DWORD *)(a3 + 4) != i; i = (_DWORD *)std::_Rb_tree_increment(i) ) + { + std::string::substr((void **)&p_ii, i + 4, 2u, i[5] - 7); + if ( &v86 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + &v85, + (int)&p_ii) ) + { + v13 = (_DWORD *)i[10]; + v68 = (_DWORD *)i[11]; + while ( v13 != v68 ) + { + std::string::substr((void **)&ii, v13, 2u, v13[1] - 7); + if ( &v86 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + &v85, + (int)&ii) ) + { + v14 = &v73[3 * *std::map::operator[](&v85, (int)&p_ii)]; + v15 = std::map::operator[](&v85, (int)&ii); + std::vector::push_back((int)v14, v15); + } + v13 += 6; + std::string::_M_dispose((void **)&ii); + } + } + std::string::_M_dispose((void **)&p_ii); + } + for ( j = *(_DWORD **)(a4 + 12); (_DWORD *)(a4 + 4) != j; j = (_DWORD *)std::_Rb_tree_increment(j) ) + { + if ( &v86 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + &v85, + (int)(j + 4)) ) + { + v66 = (_DWORD *)j[11]; + for ( k = (_DWORD *)j[10]; k != v66; k += 6 ) + { + p_ii = v100; + v99 = 0; + LOBYTE(v100[0]) = 0; + MMBizWxaAppComm::PathCombine(j + 4, k, (unsigned int *)&p_ii); + if ( v99 && *(_BYTE *)p_ii == 47 ) + { + std::string::substr((void **)&ii, &p_ii, 1u, 0xFFFFFFFF); + std::string::operator=(&p_ii, &ii); + std::string::_M_dispose((void **)&ii); + } + if ( &v86 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + &v85, + (int)&p_ii) ) + { + v17 = &v73[3 * *std::map::operator[](&v85, (int)(j + 4))]; + v18 = std::map::operator[](&v85, (int)&p_ii); + std::vector::push_back((int)v17, v18); + } + std::string::_M_dispose((void **)&p_ii); + } + } + } + v80 = 0; + v81 = 0; + v82 = 0; + v19 = a1[1]; + v83 = 0; + v20 = v19 - *a1; + v84 = 0; + v21 = -1431655765 * (v20 >> 3); + if ( v21 ) + { + v80 = (char *)operator new((struct type_info *)(4 * ((unsigned int)(v21 + 31) >> 5)), v64); + v84 = &v80[4 * ((unsigned int)(v21 + 31) >> 5)]; + v81 = 0; + } + v22 = v21 % 32; + v23 = &v80[4 * (v21 / 32)]; + if ( v21 % 32 < 0 ) + { + v22 += 32; + v23 -= 4; + } + v82 = v23; + v83 = v22; + if ( v80 ) + memset(v80, 255, v84 - v80); + for ( m = 0; ; ++m ) + { + v25 = a1[1] - *a1; + v26 = -1431655765 * (v25 >> 3); + v72 = v26; + if ( m >= v26 ) + break; + v27 = 3 * m; + for ( n = 0; ; ++n ) + { + v29 = v73[v27]; + if ( n >= ((_BYTE *)v73[v27 + 1] - v29) >> 2 ) + break; + v30 = *(_DWORD *)&v29[4 * n]; + *(_DWORD *)&v80[4 * (v30 >> 5)] &= ~(1 << v30); + } + } + if ( v26 > 0x5555555 ) + std::__throw_length_error((std::length_error *)"cannot create std::vector larger than max_size()"); + v76 = 0; + v77 = 0; + v78 = 0; + if ( v26 ) + v31 = operator new((struct type_info *)v25, v64); + else + v31 = 0; + v32 = (int)v31 + v25; + v76 = v31; + v78 = v32; + while ( v72 ) + { + v33 = (char *)(v31 + 1); + --v72; + v31 += 6; + *(v31 - 5) = 0; + *(v31 - 4) = 0; + *(v31 - 3) = v33; + *(v31 - 2) = v33; + *(v31 - 1) = 0; + } + v77 = v32; + v34 = operator new((struct type_info *)0xC, v64); + v79[0] = (int)v34; + *v34 = &v73; + v34[1] = &v76; + v34[2] = v79; + v79[3] = (int)std::_Function_handler const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_invoke; + v79[2] = (int)std::_Function_base::_Base_manager const&,std::string const&,std::map> const&,std::map> const&,std::map>&)::{lambda(unsigned int,unsigned int)#1}>::_M_manager; + for ( ii = 0; ii < -1431655765 * ((a1[1] - *a1) >> 3); ++ii ) + { + if ( ((1 << ii) & *(_DWORD *)&v80[4 * (ii >> 5)]) != 0 ) + { + std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( + &v76[6 * ii], + &ii); + std::function::operator()((int)v79, ii, ii); + } + } + v96 = 0; + v92 = 0; + v93 = 0; + v94 = &v92; + v95 = &v92; + while ( 1 ) + { + v35 = (int *)v93; + if ( v72 >= -1431655765 * ((a1[1] - *a1) >> 3) ) + break; + v36 = &v92; + v67 = 6 * v72; + v37 = (char *)&v76[6 * v72]; + while ( v35 ) + { + if ( std::operator<((int)(v35 + 4), (int)v37) ) + { + v35 = (int *)v35[3]; + } + else + { + v36 = v35; + v35 = (int *)v35[2]; + } + } + if ( v36 == &v92 || std::operator<((int)v37, (int)(v36 + 4)) ) + { + __gnu_cxx::__to_xstring( + (void **)&ii, + (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf_1, + 16, + (int)"%u", + v96); + std::string::basic_string(&p_ii, a2); + std::string::append(&p_ii, "chunk_"); + v38 = v99 + v102; + v39 = 15; + if ( p_ii != v100 ) + v39 = v100[0]; + if ( v38 <= v39 ) + goto LABEL_98; + v40 = 15; + if ( (_DWORD **)ii != &v103 ) + v40 = (unsigned int)v103; + if ( v38 > v40 ) + { +LABEL_98: + v41 = std::string::append(&p_ii, (int)&ii); + } + else + { + v41 = std::string::insert(&ii, 0, (int)&p_ii); + v65 = v42; + } + std::string::basic_string(v97, v41); + std::string::_M_dispose((void **)&p_ii); + std::string::_M_dispose((void **)&ii); + v43 = (char *)&v76[v67]; + v103 = 0; + v104 = &v102; + v105 = &v102; + v44 = (int *)v76[v67 + 2]; + v102 = 0; + v106 = 0; + if ( v44 ) + { + p_ii = (int *)ⅈ + v57 = std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>( + v44, + (int)&v102, + (int)&p_ii); + v58 = v57; + do + { + v59 = (int)v58; + v58 = (_DWORD *)v58[2]; + } + while ( v58 ); + v104 = (int *)v59; + v60 = v57; + do + { + v61 = (int)v60; + v60 = (_DWORD *)v60[3]; + } + while ( v60 ); + v62 = *((_DWORD *)v43 + 5); + v105 = (int *)v61; + v103 = v57; + v106 = v62; + } + std::string::basic_string(v107, (int)v97); + v36 = (int *)std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_emplace_unique,std::string>>( + &v91, + &ii); + std::string::_M_dispose(v107); + std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)&ii); + std::string::_M_dispose(v97); + } + v45 = (int)(v36 + 10); + v69 = a5 + 1; + v46 = a5 + 1; + v47 = (_DWORD *)a5[2]; + while ( v47 ) + { + if ( (unsigned __int8)std::operator<((int)(v47 + 4), v45) ) + { + v47 = (_DWORD *)v47[3]; + } + else + { + v46 = v47; + v47 = (_DWORD *)v47[2]; + } + } + if ( v69 == v46 || (unsigned __int8)std::operator<(v45, (int)(v46 + 4)) ) + { + v48 = v46; + v46 = operator new((struct type_info *)0x34, v65); + std::string::basic_string(v46 + 4, v45); + v46[10] = 0; + v46[11] = 0; + v46[12] = 0; + insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + a5, + v48, + (int)(v46 + 4)); + v51 = v49; + if ( v49 ) + { + v52 = insert_hint_unique_pos != 0 || v69 == v49; + if ( !v52 ) + v52 = std::operator<((int)(v46 + 4), (int)(v49 + 4)); + std::_Rb_tree_insert_and_rebalance(v52, v46, v51, v69); + ++a5[5]; + } + else + { + v53 = (void **)v46[10]; + v70 = (void **)v46[11]; + while ( v70 != v53 ) + { + v54 = v53; + v53 += 6; + std::string::_M_dispose(v54); + } + if ( v46[10] ) + operator delete((void *)v46[10]); + std::string::_M_dispose((void **)v46 + 4); + v63 = v46; + v46 = (_DWORD *)insert_hint_unique_pos; + operator delete(v63); + } + } + LOBYTE(v100[0]) = 0; + v99 = 0; + v55 = *a1 + v67 * 4; + p_ii = v100; + std::string::reserve(&p_ii, *(_DWORD *)(v55 + 4) + 2); + std::string::append(&p_ii, "./", 2u); + std::string::append(&p_ii, v55); + v56 = std::string::append(&p_ii, ".wxml"); + std::string::basic_string(&ii, v56); + if ( v46[11] == v46[12] ) + { + std::vector::_M_realloc_insert(v46 + 10, (char *)v46[11], &ii); + } + else + { + std::string::basic_string((_DWORD *)v46[11], &ii); + v46[11] += 24; + } + std::string::_M_dispose((void **)&ii); + std::string::_M_dispose((void **)&p_ii); + ++v72; + } + std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_erase((void **)v93); + std::_Function_base::~_Function_base((int)v79); + std::vector>::~vector((void **)&v76); + std::_Bvector_base>::_M_deallocate((int)&v80); + std::vector>::~vector(&v73); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase((void **)v87); +} +// 420E9B: variable 'v64' is possibly undefined +// 4214C4: variable 'v42' is possibly undefined +// 4215BA: variable 'v65' is possibly undefined +// 4215FF: variable 'v49' is possibly undefined +// 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); + +//----- (00421910) -------------------------------------------------------- +void __cdecl __tcf_1_3() +{ + std::ios_base::Init::~Init(); +} + +//----- (0042191A) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + if ( !a2 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 42191A: using guessed type unsigned int var_1C[7]; + +//----- (0042199B) -------------------------------------------------------- +volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) +{ + if ( _CRT_MT ) + _InterlockedIncrement(result); + else + ++*result; + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004219AB) -------------------------------------------------------- +std::ostream::sentry *__cdecl WXML::EXPRLib::OutputAsStringOrKeyWord(int a1, int *a2, int a3, _BYTE *a4) +{ + std::ostream::sentry *v4; // ebx + std::ostream::sentry *v5; // eax + bool v6; // al + std::ostream::sentry *v7; // eax + std::ostream::sentry *v8; // eax + std::ostream::sentry *v10; // [esp+30h] [ebp+8h] + char *v11; // [esp+34h] [ebp+Ch] + + v4 = (std::ostream::sentry *)(a1 + 8); + if ( std::operator==((int)a2, "true") ) + { + v5 = std::operator<<>(v4, WXML::EXPRLib::OPShort::CONST); + v11 = ",true"; +LABEL_8: + v10 = v5; + return std::operator<<>(v10, v11); + } + if ( std::operator==((int)a2, "false") ) + { + v5 = std::operator<<>(v4, WXML::EXPRLib::OPShort::CONST); + v11 = ",false"; + goto LABEL_8; + } + v6 = std::operator==((int)a2, "$global"); + *a4 = 1; + if ( !v6 ) + { + v7 = std::operator<<>(v4, WXML::EXPRLib::OPShort::NAME); + v8 = std::operator<<>(v7, ",'"); + v5 = std::operator<<(v8, a2); + v11 = (char *)off_52E6CD; + goto LABEL_8; + } + v10 = (std::ostream::sentry *)(a1 + 8); + v11 = WXML::EXPRLib::OPShort::CS_GLOBAL[0]; + return std::operator<<>(v10, v11); +} +// 515024: using guessed type char *WXML::EXPRLib::OPShort::CS_GLOBAL[11]; + +//----- (00421A86) -------------------------------------------------------- +int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(int *this, int a2, int a3, _BYTE *a4) +{ + _BYTE *v5; // edi + std::ostream::sentry *v6; // esi + char *Literal; // eax + std::ostream::sentry *v8; // eax + int v9; // ebx + const char *v10; // eax + std::ostream::sentry *v11; // eax + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + std::ostream::sentry *v14; // eax + std::ostream::sentry *v15; // eax + unsigned int v16; // edi + std::ostream::sentry *v17; // eax + std::ostream::sentry *v18; // eax + unsigned int v19; // edi + std::ostream::sentry *v20; // eax + std::ostream::sentry *v21; // eax + std::ostream::sentry *v22; // eax + std::ostream::sentry *v23; // eax + std::ostream::sentry *v24; // edi + char *v25; // eax + std::ostream::sentry *v26; // eax + std::ostream::sentry *v27; // eax + std::ostream::sentry *v28; // eax + unsigned int v29; // edi + std::ostream::sentry *v30; // eax + std::ostream::sentry *v31; // eax + unsigned int v32; // edi + std::ostream::sentry *v33; // eax + std::ostream::sentry *v34; // eax + unsigned int v35; // edi + std::ostream::sentry *v36; // eax + std::ostream::sentry *v37; // eax + std::ostream::sentry *v38; // eax + std::ostream::sentry *v39; // eax + std::ostream::sentry *v40; // eax + std::ostream::sentry *v41; // eax + char *v43; // [esp+4h] [ebp-54h] + _DWORD *v44; // [esp+1Ch] [ebp-3Ch] + void *v45[12]; // [esp+28h] [ebp-30h] BYREF + + v5 = (_BYTE *)*this; + v6 = (std::ostream::sentry *)(a2 + 8); + std::operator<<>((std::ostream::sentry *)(a2 + 8), (char *)&off_52E6CD[2]); + if ( *v5 == 36 ) + { + if ( std::operator==((int)this, "$VAR") ) + { + Literal = (char *)WXML::EXPRLib::Token::GetLiteral(this + 6); + std::string::basic_string(v45, Literal); + WXML::EXPRLib::OutputAsStringOrKeyWord(a2, (int *)v45, a3, a4); + std::string::_M_dispose(v45); + } + else + { + v44 = this + 6; + if ( std::operator==((int)this, "$STRING") ) + { + v8 = std::operator<<>(v6, WXML::EXPRLib::OPShort::CONST); + std::operator<<>(v8, ",'"); + v9 = *(_DWORD *)(this[9] + 4); + v10 = WXML::EXPRLib::Token::GetLiteral(v44); + WXML::Rewrite::ToStringCode((int)(v10 + 1), v9 - 2, a2); + std::operator<<>(v6, (char *)off_52E6CD); + } + else + { + v11 = std::operator<<>(v6, WXML::EXPRLib::OPShort::CONST); + std::operator<<>(v11, ","); + v43 = (char *)WXML::EXPRLib::Token::GetLiteral(v44); + std::operator<<>(v6, v43); + } + } + goto LABEL_45; + } + if ( *v5 == 79 && v5[1] == 80 && v5[2] == 95 ) + { + if ( std::operator==((int)this, "OP_PATH") ) + { + if ( this[14] - this[13] == 8 ) + { + v12 = std::operator<<>(v6, (char *)&off_52E6CD[2]); + v13 = std::operator<<>(v12, WXML::EXPRLib::OPShort::GET_FROM_ENV); + std::operator<<>(v13, "],"); + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); + } + goto LABEL_45; + } + if ( std::operator==((int)this, "OP_LIST") ) + { + v14 = std::operator<<>(v6, (char *)&off_52E6CD[2]); + v15 = std::operator<<>(v14, WXML::EXPRLib::OPShort::MAKE_LIST); + std::operator<<>(v15, "]"); + std::operator<<>(v6, ","); + if ( this[13] == this[14] ) + goto LABEL_45; +LABEL_15: + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); + goto LABEL_45; + } + if ( std::operator==((int)this, "OP_LIST_CONCAT") ) + { + v16 = 0; + v17 = std::operator<<>(v6, (char *)&off_52E6CD[2]); + v18 = std::operator<<>(v17, WXML::EXPRLib::OPShort::CON_LIST); + std::operator<<>(v18, "]"); + while ( (this[14] - this[13]) >> 3 > v16 ) + { + std::operator<<>(v6, ","); + ++v16; + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); + } + goto LABEL_45; + } + if ( std::operator==((int)this, "OP_DICT_CONCAT") ) + { + v19 = 0; + v20 = std::operator<<>(v6, (char *)&off_52E6CD[2]); + v21 = std::operator<<>(v20, WXML::EXPRLib::OPShort::UNION_KV); + std::operator<<>(v21, "]"); + while ( (this[14] - this[13]) >> 3 > v19 ) + { + std::operator<<>(v6, ","); + ++v19; + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); + } + goto LABEL_45; + } + if ( std::operator==((int)this, "OP_MAKE_DICT") ) + { + v22 = std::operator<<>(v6, (char *)&off_52E6CD[2]); + v23 = std::operator<<>(v22, WXML::EXPRLib::OPShort::MAKE_KV); + std::operator<<>(v23, "],"); + v24 = std::operator<<>(v6, (char *)off_52E6CD); + v25 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); + v26 = std::operator<<>(v24, v25); + std::operator<<>(v26, "',"); + if ( (unsigned int)(this[14] - this[13]) <= 0xF ) + { + std::operator<<>(v6, (char *)&off_52E6CD[2]); + std::operator<<>(v6, "[7],"); + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); + std::operator<<>(v6, "]"); + } + else + { + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); + } + goto LABEL_45; + } + if ( std::operator==((int)this, "OP_EXPAND") ) + { + v27 = std::operator<<>(v6, (char *)&off_52E6CD[2]); + v28 = std::operator<<>(v27, WXML::EXPRLib::OPShort::EX_DICT); + std::operator<<>(v28, "],"); + goto LABEL_15; + } + if ( std::operator==((int)this, "OP_DICT") ) + { + v29 = 0; + v30 = std::operator<<>(v6, (char *)&off_52E6CD[2]); + v31 = std::operator<<>(v30, WXML::EXPRLib::OPShort::GET_NAME); + std::operator<<>(v31, "]"); + while ( (this[14] - this[13]) >> 3 > v29 ) + { + std::operator<<>(v6, ","); + ++v29; + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); + } + } + else if ( std::operator==((int)this, "OP_FUNC") ) + { + v32 = 0; + v33 = std::operator<<>(v6, (char *)&off_52E6CD[2]); + v34 = std::operator<<>(v33, WXML::EXPRLib::OPShort::DO_FUNC); + std::operator<<>(v34, "]"); + while ( (this[14] - this[13]) >> 3 > v32 ) + { + std::operator<<>(v6, ","); + ++v32; + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); + } + } + } + else + { + v35 = 0; + v36 = std::operator<<>(v6, (char *)&off_52E6CD[2]); + v37 = std::operator<<>(v36, WXML::EXPRLib::OPShort::AOP); + v38 = std::operator<<>(v37, ","); + v39 = std::operator<<>(v38, (char *)off_52E6CD); + v40 = std::operator<<(v39, this); + v41 = std::operator<<>(v40, (char *)off_52E6CD); + std::operator<<>(v41, "]"); + std::operator<<>(v6, ","); + while ( (this[14] - this[13]) >> 3 > v35 ) + { + if ( v35 ) + std::operator<<>(v6, ","); + ++v35; + WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4); + } + } +LABEL_45: + std::operator<<>(v6, "]"); + return 0; +} + +//----- (00422134) -------------------------------------------------------- +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + int result; // eax + + v1 = *a1; + if ( v1 ) + return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); + return result; +} + +//----- (00422140) -------------------------------------------------------- +void __fastcall std::vector::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + volatile signed __int32 **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 28 ) + { + v4 = (volatile signed __int32 **)(i + 16); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00422178) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + volatile signed __int32 **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 8 ) + { + v4 = (volatile signed __int32 **)(i + 4); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (004221AF) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + _DWORD *a1@, + _DWORD *a2@, + _DWORD *a3@) +{ + _DWORD *v4; // esi + _DWORD *v5; // ebx + int v6; // edx + int v7; // eax + int v8; // eax + volatile signed __int32 **v9; // ecx + + v4 = a3; + v5 = a1; + while ( v5 != a2 ) + { + *v4 = *v5; + v6 = v5[2]; + v4[1] = v5[1]; + v4[2] = v6; + v4[3] = v5[3]; + v7 = v5[4]; + v4[4] = v7; + if ( v7 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v7 + 4)); + v8 = v5[5]; + v9 = (volatile signed __int32 **)(v5 + 4); + v4 += 7; + v5 += 7; + *(v4 - 2) = v8; + *(v4 - 1) = *(v5 - 1); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v9); + } + return &a3[7 * ((920350135 * ((unsigned int)((char *)v5 - (char *)a1) >> 2)) & 0x3FFFFFFF)]; +} + +//----- (0042222E) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( + volatile signed __int32 **this, + volatile signed __int32 *a2) +{ + if ( *this != a2 ) + { + if ( a2 ) + __gnu_cxx::__atomic_add_dispatch(a2 + 1); + if ( *this ) + std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); + *this = a2; + } + return this; +} + +//----- (0042225E) -------------------------------------------------------- +int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderCode( + int *this, + WXML::EXPRLib::Token *a2, + int *a3, + int *a4, + int *a5, + int *a6, + int *a7, + char a8, + int a9) +{ + _BYTE *v10; // eax + char v11; // dl + std::ostream::sentry *v12; // esi + const char *Literal; // edi + std::ostream::sentry *v14; // eax + std::ostream::sentry *v15; // eax + std::ostream::sentry *v16; // eax + std::ostream::sentry *v17; // eax + std::ostream::sentry *v18; // eax + std::ostream::sentry *v19; // eax + std::ostream::sentry *v20; // eax + std::ostream::sentry *v21; // eax + std::ostream::sentry *v22; // eax + std::ostream::sentry *v23; // eax + std::ostream::sentry *v24; // eax + std::ostream::sentry *v25; // eax + std::ostream::sentry *v26; // edi + char *v27; // eax + std::ostream::sentry *v28; // eax + std::ostream::sentry *v29; // eax + std::ostream::sentry *v30; // eax + std::ostream::sentry *v31; // eax + std::ostream::sentry *v32; // eax + std::ostream::sentry *v33; // edi + char *v34; // eax + std::ostream::sentry *v35; // eax + std::ostream::sentry *v36; // eax + std::ostream::sentry *v37; // eax + std::ostream::sentry *v38; // eax + std::ostream::sentry *v39; // eax + std::ostream::sentry *v40; // eax + std::ostream::sentry *v41; // eax + std::ostream::sentry *v42; // eax + int v43; // edi + const char *v44; // eax + std::ostream::sentry *v45; // eax + std::ostream::sentry *v46; // eax + std::ostream::sentry *v47; // eax + std::ostream::sentry *v48; // eax + int v49; // edx + const char *v50; // ebx + std::ostream::sentry *v51; // esi + int v52; // esi + char *v53; // eax + std::ostream::sentry *v54; // eax + std::ostream::sentry *v55; // eax + std::ostream::sentry *v56; // eax + std::ostream::sentry *v57; // eax + std::ostream::sentry *v58; // eax + std::ostream::sentry *v59; // ebx + char *v60; // eax + std::ostream::sentry *v61; // eax + std::ostream::sentry *v62; // eax + std::ostream::sentry *v63; // eax + std::ostream::sentry *v64; // eax + std::ostream::sentry *v65; // eax + unsigned int i; // ebx + int v67; // edx + std::ostream::sentry *v68; // eax + std::ostream::sentry *v69; // eax + std::ostream::sentry *v70; // eax + std::ostream::sentry *v71; // eax + unsigned int j; // ebx + int v73; // edx + std::ostream::sentry *v74; // eax + char *v75; // eax + std::ostream::sentry *v76; // eax + std::ostream::sentry *v77; // eax + char *v78; // eax + std::ostream::sentry *v79; // eax + std::ostream::sentry *v80; // eax + std::ostream::sentry *v81; // eax + char *v82; // eax + std::ostream::sentry *v83; // eax + std::ostream::sentry *v84; // eax + std::ostream::sentry *v85; // eax + char *v86; // eax + std::ostream::sentry *v87; // eax + int v88; // esi + char *v89; // eax + std::ostream::sentry *v90; // eax + std::ostream::sentry *v91; // esi + char *v92; // eax + std::ostream::sentry *v93; // eax + std::ostream::sentry *v94; // eax + int *v95; // esi + std::ostream::sentry *v96; // eax + std::ostream::sentry *v97; // eax + std::ostream::sentry *v98; // eax + std::ostream::sentry *v99; // eax + std::ostream::sentry *v100; // eax + std::ostream::sentry *v101; // eax + std::ostream::sentry *v102; // eax + std::ostream::sentry *v103; // eax + int *v104; // ecx + std::ostream::sentry *v105; // eax + std::ostream::sentry *v106; // eax + std::ostream::sentry *v107; // eax + std::ostream::sentry *v108; // eax + std::ostream::sentry *v109; // eax + std::ostream::sentry *v110; // eax + std::ostream::sentry *v111; // esi + std::ostream::sentry *v112; // eax + std::ostream::sentry *v113; // eax + std::ostream::sentry *v114; // eax + std::ostream::sentry *v115; // eax + std::ostream::sentry *v116; // eax + std::ostream::sentry *v117; // eax + std::ostream::sentry *v118; // eax + std::ostream::sentry *v119; // eax + std::ostream::sentry *v120; // eax + std::ostream::sentry *v121; // eax + std::ostream::sentry *v122; // eax + std::ostream::sentry *v123; // eax + std::ostream::sentry *v124; // eax + std::ostream::sentry *v125; // eax + std::ostream::sentry *v126; // eax + std::ostream::sentry *v127; // eax + std::ostream::sentry *v128; // eax + std::ostream::sentry *v129; // eax + std::ostream::sentry *v130; // eax + std::ostream::sentry *v131; // eax + std::ostream::sentry *v132; // eax + std::ostream::sentry *v133; // eax + std::ostream::sentry *v134; // eax + std::ostream::sentry *v135; // eax + std::ostream::sentry *v136; // eax + std::ostream::sentry *v137; // eax + std::ostream::sentry *v138; // eax + std::ostream::sentry *v139; // eax + std::ostream::sentry *v140; // eax + std::ostream::sentry *v141; // eax + std::ostream::sentry *v142; // eax + std::ostream::sentry *v143; // eax + std::ostream::sentry *v144; // eax + std::ostream::sentry *v145; // eax + std::ostream::sentry *v146; // eax + std::ostream::sentry *v147; // eax + std::ostream::sentry *v148; // eax + std::ostream::sentry *v149; // eax + std::ostream::sentry *v150; // eax + std::ostream::sentry *v151; // eax + std::ostream::sentry *v152; // eax + std::ostream::sentry *v153; // eax + std::ostream::sentry *v154; // eax + std::ostream::sentry *v155; // eax + std::ostream::sentry *v156; // eax + std::ostream::sentry *v157; // eax + std::ostream::sentry *v158; // eax + std::ostream::sentry *v159; // eax + std::ostream::sentry *v160; // eax + std::ostream::sentry *v161; // eax + int v162; // eax + std::ostream::sentry *v163; // eax + std::ostream::sentry *v164; // eax + std::ostream::sentry *v165; // eax + std::ostream::sentry *v166; // eax + std::ostream::sentry *v167; // eax + std::ostream::sentry *v168; // eax + std::ostream::sentry *v169; // eax + std::ostream::sentry *v170; // eax + std::ostream::sentry *v171; // eax + std::ostream::sentry *v172; // eax + std::ostream::sentry *v173; // eax + char *v175; // [esp+4h] [ebp-94h] + char *v176; // [esp+4h] [ebp-94h] + std::ostream::sentry *v177; // [esp+28h] [ebp-70h] + std::ostream::sentry *v178; // [esp+28h] [ebp-70h] + std::ostream::sentry *v179; // [esp+28h] [ebp-70h] + std::ostream::sentry *v180; // [esp+28h] [ebp-70h] + std::ostream::sentry *v181; // [esp+28h] [ebp-70h] + int v182[2]; // [esp+38h] [ebp-60h] BYREF + char v183; // [esp+40h] [ebp-58h] BYREF + int v184; // [esp+50h] [ebp-48h] BYREF + int v185; // [esp+54h] [ebp-44h] + char v186[16]; // [esp+58h] [ebp-40h] BYREF + int v187; // [esp+68h] [ebp-30h] BYREF + int v188; // [esp+6Ch] [ebp-2Ch] + char v189[40]; // [esp+70h] [ebp-28h] BYREF + + v10 = (_BYTE *)*this; + v11 = *(_BYTE *)*this; + if ( v11 == 36 ) + { + v177 = (std::ostream::sentry *)(this + 6); + v12 = (WXML::EXPRLib::Token *)((char *)a2 + 8); + if ( std::operator==((int)this, "$VAR") ) + { + Literal = WXML::EXPRLib::Token::GetLiteral(v177); + if ( !strcmp(Literal, "true") ) + { + v14 = std::operator<<>(v12, "var "); + v15 = std::operator<<(v14, a3); + v16 = std::operator<<>(v15, "=true"); +LABEL_7: + std::operator<<>(v16, a8); + return 0; + } + if ( !strcmp(Literal, "false") ) + { + v17 = std::operator<<>(v12, "var "); + v18 = std::operator<<(v17, a3); + v16 = std::operator<<>(v18, "=false"); + goto LABEL_7; + } + if ( !strcmp(Literal, "$global") ) + { + v19 = std::operator<<>(v12, "var "); + v20 = std::operator<<(v19, a3); + v21 = std::operator<<>(v20, "="); + v16 = std::operator<<(v21, a6); + goto LABEL_7; + } + v22 = std::operator<<>(v12, "var "); + v23 = std::operator<<(v22, a3); + std::operator<<>(v23, a8); + v24 = std::operator<<>(v12, "if(typeof("); + v25 = std::operator<<(v24, a5); + v26 = std::operator<<>(v25, "."); + v27 = (char *)WXML::EXPRLib::Token::GetLiteral(v177); + v28 = std::operator<<>(v26, v27); + v29 = std::operator<<>(v28, ")!='undefined')"); + v30 = std::operator<<(v29, a3); + v31 = std::operator<<>(v30, "="); + v32 = std::operator<<(v31, a5); + v33 = std::operator<<>(v32, "."); + v34 = (char *)WXML::EXPRLib::Token::GetLiteral(v177); + v35 = std::operator<<>(v33, v34); + std::operator<<>(v35, a8); + v36 = std::operator<<>(v12, "else "); + v37 = std::operator<<(v36, a3); + v38 = std::operator<<>(v37, "="); + v39 = std::operator<<(v38, a4); + v40 = std::operator<<>(v39, "."); + } + else + { + if ( std::operator==((int)this, "$STRING") ) + { + v41 = std::operator<<>(v12, "var "); + v42 = std::operator<<(v41, a3); + std::operator<<>(v42, "=\""); + v43 = *(_DWORD *)(this[9] + 4); + v44 = WXML::EXPRLib::Token::GetLiteral(v177); + WXML::Rewrite::ToStringCode((int)(v44 + 1), v43 - 2, (int)a2); + v175 = "\""; +LABEL_13: + v16 = std::operator<<>(v12, v175); + goto LABEL_7; + } + v45 = std::operator<<>(v12, "var "); + v46 = std::operator<<(v45, a3); + v40 = std::operator<<>(v46, "="); + } + v12 = v40; + v175 = (char *)WXML::EXPRLib::Token::GetLiteral(v177); + goto LABEL_13; + } + if ( v11 != 79 || v10[1] != 80 || v10[2] != 95 ) + { + if ( std::operator==((int)this, "?:") ) + { + v182[1] = 0; + v182[0] = (int)&v183; + v183 = 0; + WXML::NameAllocator::GetNextName(a7, v182); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)v182, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v122 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); + v123 = std::operator<<(v122, a3); + std::endl>(v123); + v124 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if("); + v125 = std::operator<<(v124, v182); + v126 = std::operator<<>(v125, "){"); + std::operator<<>(v126, a8); + v185 = 0; + v184 = (int)v186; + v186[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v184); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v127 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); + v128 = std::operator<<>(v127, "="); + v129 = std::operator<<(v128, &v184); + v130 = std::operator<<>(v129, "}"); + std::operator<<>(v130, a8); + v131 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); + std::operator<<>(v131, a8); + v188 = 0; + v187 = (int)v189; + v189[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v187); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v132 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); + v133 = std::operator<<>(v132, "="); + v134 = std::operator<<(v133, &v187); + v135 = std::operator<<>(v134, "}"); + std::operator<<>(v135, a8); + std::string::_M_dispose((void **)&v187); + std::string::_M_dispose((void **)&v184); + v104 = v182; + goto LABEL_79; + } + if ( std::operator==((int)this, "&&") ) + { + v185 = 0; + v184 = (int)v186; + v186[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v184); + v187 = (int)v189; + v188 = 0; + v189[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v187); + v136 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); + v137 = std::operator<<(v136, a3); + std::endl>(v137); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v138 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if(!"); + v139 = std::operator<<(v138, &v184); + v140 = std::operator<<>(v139, ")"); + v141 = std::operator<<(v140, a3); + v142 = std::operator<<>(v141, "="); + v143 = std::operator<<(v142, &v184); + std::operator<<>(v143, a8); + v144 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); + std::operator<<>(v144, a8); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v145 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); + v146 = std::operator<<>(v145, "="); + v147 = std::operator<<(v146, &v187); + v148 = std::operator<<>(v147, "}"); + std::operator<<>(v148, a8); + } + else + { + if ( !std::operator==((int)this, "||") ) + { + v162 = this[14] - this[13]; + if ( v162 == 16 ) + { + v185 = 0; + v184 = (int)v186; + v186[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v184); + v187 = (int)v189; + v188 = 0; + v189[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v187); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v163 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); + v164 = std::operator<<(v163, a3); + v165 = std::operator<<>(v164, "="); + v95 = &v184; + v166 = std::operator<<(v165, &v184); + v167 = std::operator<<(v166, this); + v168 = std::operator<<(v167, &v187); + std::operator<<>(v168, a8); + std::string::_M_dispose((void **)&v187); + } + else + { + if ( v162 != 8 ) + return 0; + v188 = 0; + v187 = (int)v189; + v189[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v187); + v95 = &v187; + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v169 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); + v170 = std::operator<<(v169, a3); + v171 = std::operator<<>(v170, "="); + v172 = std::operator<<(v171, this); + v173 = std::operator<<(v172, &v187); + std::operator<<>(v173, a8); + } + goto LABEL_78; + } + v185 = 0; + v184 = (int)v186; + v186[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v184); + v187 = (int)v189; + v188 = 0; + v189[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v187); + v149 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); + v150 = std::operator<<(v149, a3); + std::endl>(v150); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v151 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "if("); + v152 = std::operator<<(v151, &v184); + v153 = std::operator<<>(v152, ")"); + v154 = std::operator<<(v153, a3); + v155 = std::operator<<>(v154, "="); + v156 = std::operator<<(v155, &v184); + std::operator<<>(v156, a8); + v157 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "else{"); + std::operator<<>(v157, a8); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v158 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); + v159 = std::operator<<>(v158, "="); + v160 = std::operator<<(v159, &v187); + v161 = std::operator<<>(v160, "}"); + std::operator<<>(v161, a8); + } +LABEL_73: + std::string::_M_dispose((void **)&v187); + v104 = &v184; + goto LABEL_79; + } + if ( v10[3] == 80 && v10[4] == 65 ) + { + if ( a3[1] ) + { + v47 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); + v48 = std::operator<<(v47, a3); + std::operator<<>(v48, "="); + } + v49 = this[13]; + if ( this[14] - v49 == 8 ) + { + v50 = WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)v49 + 24)); + v51 = (WXML::EXPRLib::Token *)((char *)a2 + 8); + if ( !strcmp(v50, "true") ) + { + std::operator<<>(v51, "true"); + goto LABEL_34; + } + if ( !strcmp(v50, "false") ) + { + std::operator<<>(v51, "false"); + goto LABEL_34; + } + if ( !strcmp(v50, "$global") ) + { + std::operator<<(v51, a6); +LABEL_34: + if ( a3[1] ) + std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), a8); + return 0; + } + } + if ( a9 ) + { + v52 = *(_DWORD *)(a9 + 4); + v187 = (int)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); + if ( v52 == std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( + *(_DWORD *)a9, + *(_DWORD *)(a9 + 4), + (char **)&v187) ) + { + v53 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); + std::string::basic_string((void **)&v187, v53); + std::vector::emplace_back((void ***)a9, &v187); + std::string::_M_dispose((void **)&v187); + } + } + v54 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "_s("); + v55 = std::operator<<(v54, a5); + v56 = std::operator<<>(v55, ","); + v57 = std::operator<<(v56, a4); + v58 = std::operator<<>(v57, ","); + v59 = std::operator<<>(v58, (char *)off_52E6CD); + v60 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); + v61 = std::operator<<>(v59, v60); + v62 = std::operator<<>(v61, "')"); + std::operator<<>(v62, a8); + goto LABEL_34; + } + if ( !std::operator==((int)this, "OP_LIST") ) + { + if ( std::operator==((int)this, "OP_LIST_CONCAT") ) + { + for ( i = 0; ; ++i ) + { + v67 = this[13]; + if ( i >= (this[14] - v67) >> 3 ) + break; + if ( std::operator==(*(_DWORD *)(v67 + 8 * i), "OP_LIST_CONCAT") ) + { + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + } + else + { + v188 = 0; + v187 = (int)v189; + v189[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v187); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v68 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); + v69 = std::operator<<>(v68, ".push("); + v70 = std::operator<<(v69, &v187); + v71 = std::operator<<>(v70, ")"); + std::operator<<>(v71, a8); + std::string::_M_dispose((void **)&v187); + } + } + return 0; + } + if ( std::operator==((int)this, "OP_DICT_CONCAT") ) + { + for ( j = 0; ; ++j ) + { + v73 = this[13]; + if ( j >= (this[14] - v73) >> 3 ) + break; + if ( std::operator==(*(_DWORD *)(v73 + 8 * j), "$VAR") ) + { + v74 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); + v178 = std::operator<<>(v74, "[\""); + v75 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * j) + 24)); + v76 = std::operator<<>(v178, v75); + std::operator<<>(v76, "\"]="); + v77 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a5); + v179 = std::operator<<>(v77, "."); + v78 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * j) + 24)); + v79 = std::operator<<>(v179, v78); + v80 = std::operator<<>(v79, "?"); + v81 = std::operator<<(v80, a5); + v180 = std::operator<<>(v81, "."); + v82 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * j) + 24)); + v83 = std::operator<<>(v180, v82); + v84 = std::operator<<>(v83, ":"); + v85 = std::operator<<(v84, a4); + v181 = std::operator<<>(v85, "."); + v86 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8 * j) + 24)); + v87 = std::operator<<>(v181, v86); + std::operator<<>(v87, a8); + } + else + { + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + } + } + return 0; + } + if ( std::operator==((int)this, "OP_MAKE_DICT") ) + { + v185 = 0; + v184 = (int)v186; + v186[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v184); + if ( (unsigned int)(this[14] - this[13]) <= 0xF ) + { + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + if ( a9 ) + { + v88 = *(_DWORD *)(a9 + 4); + v187 = (int)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); + if ( v88 == std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( + *(_DWORD *)a9, + *(_DWORD *)(a9 + 4), + (char **)&v187) ) + { + v89 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); + std::string::basic_string((void **)&v187, v89); + std::vector::emplace_back((void ***)a9, &v187); + std::string::_M_dispose((void **)&v187); + } + } + } + else + { + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + } + v90 = std::operator<<((WXML::EXPRLib::Token *)((char *)a2 + 8), a3); + v91 = std::operator<<>(v90, "[\""); + v92 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)this[13] + 24)); + v93 = std::operator<<>(v91, v92); + v94 = std::operator<<>(v93, "\"]="); + v95 = &v184; + v96 = std::operator<<(v94, &v184); + std::operator<<>(v96, a8); +LABEL_78: + v104 = v95; + goto LABEL_79; + } + if ( std::operator==((int)this, "OP_EXPAND") ) + { + v188 = 0; + v187 = (int)v189; + v189[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v187); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v97 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "{var ks=Object.keys("); + v98 = std::operator<<(v97, &v187); + std::operator<<>(v98, "||{});"); + v99 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "for(var k in ks){"); + v100 = std::operator<<(v99, a3); + v101 = std::operator<<>(v100, "[ks[k]]="); + v102 = std::operator<<(v101, &v187); + v103 = std::operator<<>(v102, "[ks[k]]}}"); + std::endl>(v103); + v104 = &v187; +LABEL_79: + std::string::_M_dispose((void **)v104); + return 0; + } + if ( !std::operator==((int)this, "OP_DICT") ) + return 0; + v185 = 0; + v184 = (int)v186; + v186[0] = 0; + v187 = (int)v189; + v188 = 0; + v189[0] = 0; + WXML::NameAllocator::GetNextName(a7, &v184); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v184, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + if ( std::operator==(*(_DWORD *)(this[13] + 8), "$VAR") ) + { + v105 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); + v106 = std::operator<<(v105, a3); + v107 = std::operator<<>(v106, "="); + v108 = std::operator<<(v107, &v184); + v109 = std::operator<<>(v108, "?"); + v110 = std::operator<<(v109, &v184); + v111 = std::operator<<>(v110, "."); + v176 = (char *)WXML::EXPRLib::Token::GetLiteral((_DWORD *)(*(_DWORD *)(this[13] + 8) + 24)); + v112 = std::operator<<>(v111, v176); + } + else + { + WXML::NameAllocator::GetNextName(a7, &v187); + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)&v187, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + v113 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); + v114 = std::operator<<(v113, a3); + v115 = std::operator<<>(v114, "="); + v116 = std::operator<<(v115, &v184); + v117 = std::operator<<>(v116, "?"); + v118 = std::operator<<(v117, &v184); + v119 = std::operator<<>(v118, (char *)&off_52E6CD[2]); + v120 = std::operator<<(v119, &v187); + v112 = std::operator<<>(v120, "]"); + } + v121 = std::operator<<>(v112, ":undefined"); + std::operator<<>(v121, a8); + goto LABEL_73; + } + v63 = std::operator<<>((WXML::EXPRLib::Token *)((char *)a2 + 8), "var "); + v64 = std::operator<<(v63, a3); + v65 = std::operator<<>(v64, (char *)off_52E79F); + std::operator<<>(v65, a8); + if ( this[13] != this[14] ) + WXML::EXPRLib::ExprSyntaxTree::RenderCode(a2, (int)a3, (int)a4, (int)a5, (int)a6, (int)a7, a8, a9); + return 0; +} + +//----- (0042391C) -------------------------------------------------------- +int __userpurge WXML::EXPRLib::Parser::Parse@( + int a1@, + void (__cdecl *a2)(void *)@, + char **a3, + int a4, + int a5, + int a6, + unsigned int *a7, + char a8) +{ + void (__cdecl *v8)(void *); // edx + _DWORD *v9; // esi + char *v10; // ecx + int v11; // edx + _DWORD *v12; // ebx + WXML::EXPRLib::Token *v13; // esi + _DWORD *v14; // eax + int v15; // ebx + int AttrListNTType; // eax + int v17; // eax + int v18; // edx + int v19; // eax + int v20; // eax + _DWORD *v21; // ebx + char *TokenName; // eax + _DWORD *v23; // ebx + char **v24; // ebx + int i; // eax + char *v26; // eax + volatile signed __int32 **v27; // ecx + _DWORD *v28; // ebx + _DWORD *v29; // eax + _DWORD *v30; // eax + _DWORD *v31; // esi + int j; // ebx + _DWORD *v33; // eax + char *v34; // esi + volatile signed __int32 **v35; // ebx + volatile signed __int32 **k; // esi + volatile signed __int32 **v37; // ecx + volatile signed __int32 **v38; // ecx + char *v39; // ebx + char *v40; // eax + char *v41; // esi + int v42; // ebx + char *v43; // edi + char *v44; // eax + char *v45; // eax + char *v46; // eax + bool v47; // bl + char *Literal; // eax + char *v49; // eax + char *v50; // eax + char *v51; // eax + volatile signed __int32 *v52; // edx + char *v53; // esi + int m; // ebx + int v55; // ecx + volatile signed __int32 **v56; // eax + WXML::EXPRLib::TransitTable *v58; // [esp+0h] [ebp-F8h] + volatile signed __int32 *v59; // [esp+0h] [ebp-F8h] + volatile signed __int32 *v60; // [esp+0h] [ebp-F8h] + const WXML::EXPRLib::Token *v61; // [esp+4h] [ebp-F4h] + void (__cdecl *v62)(void *); // [esp+4h] [ebp-F4h] + void (__cdecl *v63)(void *); // [esp+4h] [ebp-F4h] + const WXML::EXPRLib::Token *v64; // [esp+4h] [ebp-F4h] + int v65; // [esp+1Ch] [ebp-DCh] + int v66; // [esp+20h] [ebp-D8h] + char *v67; // [esp+20h] [ebp-D8h] + unsigned int v68; // [esp+24h] [ebp-D4h] + int Tokens; // [esp+28h] [ebp-D0h] + int v71; // [esp+38h] [ebp-C0h] BYREF + WXML::EXPRLib::Token *v72; // [esp+3Ch] [ebp-BCh] BYREF + volatile signed __int32 *v73; // [esp+40h] [ebp-B8h] BYREF + int v74; // [esp+44h] [ebp-B4h] BYREF + volatile signed __int32 *v75; // [esp+48h] [ebp-B0h] BYREF + _DWORD *v76; // [esp+4Ch] [ebp-ACh] + volatile signed __int32 *v77; // [esp+50h] [ebp-A8h] BYREF + char *v78; // [esp+54h] [ebp-A4h] BYREF + int v79; // [esp+58h] [ebp-A0h] + int v80; // [esp+5Ch] [ebp-9Ch] + void *v81[6]; // [esp+60h] [ebp-98h] BYREF + char **v82; // [esp+78h] [ebp-80h] BYREF + volatile signed __int32 *v83[5]; // [esp+7Ch] [ebp-7Ch] BYREF + char **v84; // [esp+90h] [ebp-68h] BYREF + volatile signed __int32 *v85[5]; // [esp+94h] [ebp-64h] BYREF + int v86[4]; // [esp+A8h] [ebp-50h] BYREF + char v87; // [esp+B8h] [ebp-40h] BYREF + char *v88; // [esp+C4h] [ebp-34h] BYREF + char v89[8]; // [esp+C8h] [ebp-30h] BYREF + char *v90; // [esp+D0h] [ebp-28h] + volatile signed __int32 *v91[9]; // [esp+D4h] [ebp-24h] BYREF + + while ( *(_DWORD *)(a1 + 24) != *(_DWORD *)(a1 + 8) ) + std::deque>::pop_back((_DWORD *)a1); + while ( *(_DWORD *)(a1 + 64) != *(_DWORD *)(a1 + 48) ) + std::deque>::pop_back((_DWORD *)(a1 + 40)); + if ( !(_BYTE)`guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret + && __cxa_guard_acquire(&`guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret) ) + { + dword_516B80 = 0; + dword_516B84 = 0; + dword_516B88 = (int)&dword_516B80; + dword_516B8C = (int)&dword_516B80; + dword_516B90 = 0; + byte_516B94 = 0; + __cxa_guard_release(&`guard variable for'WXML::EXPRLib::TransitTable::GetInstance(void)::ret); + atexit(__tcf_0_2); + } + WXML::EXPRLib::TransitTable::Init(v58); + WXML::EXPRLib::Tokenizer::Tokenizer(v81, *a3, a4, a5, a6); + v78 = 0; + v79 = 0; + v80 = 0; + Tokens = WXML::EXPRLib::Tokenizer::GetTokens((int *)v81, (int)&v78, a7); + v61 = (const WXML::EXPRLib::Token *)v8; + if ( Tokens ) + goto LABEL_76; + if ( v78 == (char *)v79 ) + { + v9 = operator new((struct type_info *)0x40, v8); + memset(v9, 0, 0x40u); + *v9 = v9 + 2; + WXML::EXPRLib::Token::Token(v9 + 6); + v9[13] = 0; + v9[14] = 0; + v9[15] = 0; + zcc::shared_ptr::shared_ptr(v9); + std::__shared_ptr::operator=( + (volatile signed __int32 **)(a1 + 80), + (volatile signed __int32 **)&v88); + v10 = v89; + goto LABEL_75; + } + WXML::EXPRLib::Token::Token(v86); + v86[0] = 5; + if ( v79 == v80 ) + { + std::vector::_M_realloc_insert( + &v78, + (char *)v79, + (WXML::EXPRLib::Token *)v86); + v62 = a2; + } + else + { + WXML::EXPRLib::Token::Token(v11, (_DWORD *)v79, (WXML::EXPRLib::Token *)v86, v61); + v79 += 28; + } + v12 = operator new((struct type_info *)0x38, v62); + *v12 = &off_537860; + v12[1] = v12 + 3; + v12[2] = 0; + *((_BYTE *)v12 + 12) = 0; + WXML::EXPRLib::Token::Token(v12 + 7); + zcc::shared_ptr::shared_ptr(&v72, (int)v12); + v13 = v72; + std::string::basic_string((void **)&v88, "$"); + std::string::_M_assign((int)v13 + 4, (int)&v88); + std::string::_M_dispose((void **)&v88); + std::deque>::push_back((_DWORD *)a1, &v72); + v14 = operator new((struct type_info *)8, v63); + *v14 = &off_537824; + v14[1] = 0; + zcc::shared_ptr::shared_ptr(&v74, (int)v14); + v15 = v74; + if ( a8 ) + AttrListNTType = WXML::EXPRLib::TransitTable::GetAttrListNTType(); + else + AttrListNTType = WXML::EXPRLib::TransitTable::GetExprNTType(); + *(_DWORD *)(v15 + 4) = AttrListNTType; + std::deque>::push_back((_DWORD *)a1, &v74); + v76 = 0; + v77 = 0; + v68 = 0; + while ( 1 ) + { + v17 = *(_DWORD *)(a1 + 24); + if ( *(_DWORD *)(a1 + 8) == v17 ) + break; + if ( v17 == *(_DWORD *)(a1 + 28) ) + v17 = *(_DWORD *)(*(_DWORD *)(a1 + 36) - 4) + 512; + v59 = *(volatile signed __int32 **)(v17 - 4); + v76 = *(_DWORD **)(v17 - 8); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v77, v59); + v19 = WXML::EXPRLib::Token::Token(v18, &v88, (WXML::EXPRLib::Token *)&v78[28 * v68], v64); + v20 = (*(int (__thiscall **)(_DWORD *, int))(*v76 + 8))(v76, v19); + v21 = v76; + if ( v20 == 1 ) + { + TokenName = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); + if ( !std::operator==((int)(v21 + 1), TokenName) || v68 >= -1227133513 * ((v79 - (int)v78) >> 2) ) + { + std::string::operator=(a7, "error at token `"); + goto LABEL_64; + } + ++v68; + std::deque>::pop_back((_DWORD *)a1); + if ( (unsigned int)(v88 - 1) <= 3 ) + { + v23 = operator new((struct type_info *)0x40, (void (__cdecl *)(void *))v64); + *v23 = v23 + 2; + v23[1] = 0; + *((_BYTE *)v23 + 8) = 0; + WXML::EXPRLib::Token::Token(v23 + 6); + v23[13] = 0; + v23[14] = 0; + v23[15] = 0; + zcc::shared_ptr::shared_ptr(v23); + v24 = v84; + v84[6] = v88; + for ( i = 0; i != 8; ++i ) + *((_BYTE *)v24 + i + 28) = v89[i]; + v24[9] = v90; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v24 + 10, v91[0]); + v24[11] = (char *)v91[1]; + v24[12] = (char *)v91[2]; + v26 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); + std::string::operator=((unsigned int *)v84, v26); + std::deque>::push_back((_DWORD *)(a1 + 40), &v84); + v27 = v85; +LABEL_37: + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v27); + } + } + else + { + if ( (*(int (__fastcall **)(_DWORD *))(*v76 + 8))(v76) == 3 ) + { + std::deque>::pop_back((_DWORD *)a1); + v28 = v76; + v66 = v76[7]; + if ( v66 == 2 ) + { + if ( *(_DWORD *)(a1 + 48) == *(_DWORD *)(a1 + 64) ) + { + std::string::operator=(a7, "interal error: "); + std::string::operator+=(a7, "1001"); + std::string::operator+=(a7, ", expr: `"); + std::string::operator+=(a7, (int)a3); + std::string::operator+=(a7, "`"); + Tokens = 1001; + goto LABEL_70; + } + v29 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 40)); + std::__shared_ptr::__shared_ptr(&v82, v29); + std::deque>::pop_back((_DWORD *)(a1 + 40)); + if ( *(_DWORD *)(a1 + 64) == *(_DWORD *)(a1 + 48) ) + { + std::string::operator=(a7, "interal error: "); + std::string::operator+=(a7, "1002"); + std::string::operator+=(a7, ", expr: `"); + std::string::operator+=(a7, (int)a3); + std::string::operator+=(a7, "`"); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v83); + Tokens = 1002; + goto LABEL_70; + } + v30 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 40)); + std::__shared_ptr::__shared_ptr(&v84, v30); + std::vector>::push_back(v84 + 13, &v82); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v85); + } + else + { + v65 = v76[8]; + v31 = operator new((struct type_info *)0x40, (void (__cdecl *)(void *))v64); + memset(v31, 0, 0x40u); + *v31 = v31 + 2; + WXML::EXPRLib::Token::Token(v31 + 6); + v31[13] = 0; + v31[14] = 0; + v31[15] = 0; + zcc::shared_ptr::shared_ptr(v31); + std::string::_M_assign((int)v82, (int)(v28 + 1)); + for ( j = 0; j < v65; ++j ) + { + if ( *(_DWORD *)(a1 + 64) == *(_DWORD *)(a1 + 48) ) + { + std::string::operator=(a7, "interal error: "); + std::string::operator+=(a7, "1003"); + std::string::operator+=(a7, ", expr: `"); + std::string::operator+=(a7, (int)a3); + std::string::operator+=(a7, "`"); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v83); + Tokens = 1003; + goto LABEL_70; + } + v33 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 40)); + std::vector>::push_back(v82 + 13, v33); + std::deque>::pop_back((_DWORD *)(a1 + 40)); + } + if ( !v66 ) + { + v34 = v82[14]; + v35 = (volatile signed __int32 **)v82[13]; + if ( v35 != (volatile signed __int32 **)v34 ) + { + for ( k = (volatile signed __int32 **)(v34 - 8); k > v35; k -= 2 ) + { + std::__shared_ptr::__shared_ptr(&v84, v35); + v37 = v35; + v35 += 2; + std::__shared_ptr::operator=(v37, k); + v38 = k; + std::__shared_ptr::operator=( + v38, + (volatile signed __int32 **)&v84); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v85); + } + } + } + std::deque>::push_back((_DWORD *)(a1 + 40), &v82); + } + v27 = v83; + goto LABEL_37; + } + if ( (*(int (__fastcall **)(_DWORD *))(*v76 + 8))(v76) == 2 ) + { + v71 = v76[1]; + v67 = std::map>>::operator[]( + &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, + &v71) + + 4; + v39 = std::map>>::operator[]( + &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, + &v71); + v40 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); + std::string::basic_string((void **)&v82, v40); + v41 = v39 + 4; + v42 = *((_DWORD *)v39 + 2); + v43 = v41; + while ( v42 ) + { + if ( (unsigned __int8)std::operator<(v42 + 16, (int)&v82) ) + { + v42 = *(_DWORD *)(v42 + 12); + } + else + { + v43 = (char *)v42; + v42 = *(_DWORD *)(v42 + 8); + } + } + if ( v41 != v43 && (unsigned __int8)std::operator<((int)&v82, (int)(v43 + 16)) ) + v43 = v41; + if ( v67 == v43 ) + { + v47 = 1; + } + else + { + v44 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); + std::string::basic_string((void **)&v84, v44); + v45 = std::map>>::operator[]( + &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, + &v71); + v46 = std::map>::operator[](v45, &v84); + v47 = *((_DWORD *)v46 + 1) == *(_DWORD *)v46; + std::string::_M_dispose((void **)&v84); + } + std::string::_M_dispose((void **)&v82); + if ( v47 ) + { + std::string::operator=(a7, "unexpected token `"); +LABEL_64: + Literal = (char *)WXML::EXPRLib::Token::GetLiteral(&v88); + std::string::operator+=(a7, Literal); + std::string::operator+=(a7, "`"); + Tokens = -1; +LABEL_70: + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v91); + goto LABEL_74; + } + std::deque>::pop_back((_DWORD *)a1); + v49 = (char *)WXML::EXPRLib::Token::GetTokenName((const char **)&v88); + std::string::basic_string((void **)&v84, v49); + v50 = std::map>>::operator[]( + &WXML::EXPRLib::TransitTable::GetInstance(void)::ret, + &v71); + v51 = std::map>::operator[](v50, &v84); + v60 = v52; + v53 = v51; + std::string::_M_dispose((void **)&v84); + for ( m = (*(_DWORD *)(*(_DWORD *)v53 + 4) - **(_DWORD **)v53) >> 3; + ; + v60 = std::deque>::push_back( + (_DWORD *)a1, + (_DWORD *)(**(_DWORD **)v53 + 8 * m)) ) + { + if ( --m >= 0 ) + { + v55 = *(_DWORD *)(**(_DWORD **)v53 + 8 * m); + if ( (*(int (__thiscall **)(int, volatile signed __int32 *))(*(_DWORD *)v55 + 8))(v55, v60) != 4 ) + continue; + } + break; + } + } + } + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v91); + } + if ( *(_DWORD *)(a1 + 64) == *(_DWORD *)(a1 + 48) ) + { + std::string::operator=(a7, "interal error: "); + std::string::operator+=(a7, "1004"); + std::string::operator+=(a7, ", expr: `"); + std::string::operator+=(a7, (int)a3); + std::string::operator+=(a7, "`"); + Tokens = 1004; + } + else + { + v56 = (volatile signed __int32 **)std::deque>::back((_DWORD *)(a1 + 40)); + std::__shared_ptr::operator=( + (volatile signed __int32 **)(a1 + 80), + v56); + } +LABEL_74: + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v77); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v75); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v73); + v10 = &v87; +LABEL_75: + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v10); +LABEL_76: + std::vector::~vector((void **)&v78); + std::string::_M_dispose(v81); + return Tokens; +} +// 4239CF: variable 'v58' is possibly undefined +// 423A3E: variable 'v8' is possibly undefined +// 423ADB: variable 'v11' is possibly undefined +// 423B05: variable 'v62' is possibly undefined +// 423B81: variable 'v63' is possibly undefined +// 423C4B: variable 'v18' is possibly undefined +// 423C4B: variable 'v64' is possibly undefined +// 424220: variable 'v52' is possibly undefined +// 460788: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 516B7C: using guessed type _DWORD WXML::EXPRLib::TransitTable::GetInstance(void)::ret; +// 516B80: using guessed type int dword_516B80; +// 516B88: using guessed type int dword_516B88; +// 516B8C: using guessed type int dword_516B8C; +// 516B90: using guessed type int dword_516B90; +// 516B94: using guessed type char byte_516B94; +// 537824: using guessed type void (__cdecl *off_537824)(WXML::EXPRLib::NonTerminal *__hidden this); +// 537860: using guessed type void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this); +// 42391C: using guessed type char var_30[8]; + +//----- (0042442B) -------------------------------------------------------- +void __cdecl __tcf_0_2() +{ + std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase((void **)dword_516B84); +} + +//----- (00424448) -------------------------------------------------------- +void __cdecl __tcf_0_3() +{ + std::ios_base::Init::~Init(); +} + +//----- (00424452) -------------------------------------------------------- +const char *__fastcall WXML::EXPRLib::Token::GetTokenName(const char **a1) +{ + const char *result; // eax + + result = *a1; + switch ( (unsigned int)*a1 ) + { + case 0u: + result = (const char *)(a1 + 1); + break; + case 1u: + result = "$DECIMAL"; + break; + case 2u: + result = "$STRING"; + break; + case 3u: + result = "$VAR"; + break; + case 4u: + result = "$KEYWORD"; + break; + default: + return result; + } + return result; +} + +//----- (00424482) -------------------------------------------------------- +const char *__fastcall WXML::EXPRLib::Token::GetLiteral(_DWORD *a1) +{ + const char *result; // eax + int v2; // edx + + result = (const char *)(a1 + 1); + if ( *a1 ) + { + result = "$"; + if ( *a1 != 5 ) + { + v2 = a1[3]; + result = (const char *)&unk_52E8FC; + if ( v2 ) + return *(const char **)v2; + } + } + return result; +} + +//----- (004244A4) -------------------------------------------------------- +void WXML::EXPRLib::Tokenizer::InitTransitTable() +{ + const char *i; // edx + int v1; // eax + const char *j; // edx + int v3; // eax + const char *k; // edx + int v5; // eax + const char *m; // edx + int v7; // eax + const char *v8; // edx + int v9; // eax + const char *n; // edx + int v11; // eax + const char *ii; // edx + int v13; // eax + const char *v14; // edx + int v15; // eax + const char *v16; // edx + int v17; // eax + + if ( !WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited ) + { + WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited = 1; + for ( i = " \n\t\r"; ; ++i ) + { + v1 = *i; + if ( !(_BYTE)v1 ) + break; + dword_689DA4[v1] = 8388609; + } + for ( j = "$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; ; ++j ) + { + v3 = *j; + if ( !(_BYTE)v3 ) + break; + dword_689DA4[v3] = 13; + } + for ( k = "0123456789"; ; ++k ) + { + v5 = *k; + if ( !(_BYTE)v5 ) + break; + dword_689DA4[v5] = 10; + } + for ( m = "+-*/%^~()[],?:{}"; ; ++m ) + { + v7 = *m; + if ( !(_BYTE)v7 ) + break; + dword_689DA4[v7] = 327681; + } + dword_689E5C = 3; + v8 = "$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; + dword_689E2C = 6; + dword_689E40 = 8; + dword_689E98 = 12; + dword_689F94 = 15; + dword_689E3C = 14; + dword_689E94 = 16; + dword_689E9C = 17; + dword_689E28 = 18; + dword_689DA4[0] = 8519681; + dword_68A1A4 = -1; + dword_689E60 = 21; + dword_68EE9C = 22; + dword_68F1F4 = 4325377; + dword_68F2A0 = 23; + dword_68F5F8 = 8388630; + dword_68F6B8 = 8388609; + dword_68F6A4 = 4194326; + dword_68F9FC = 22; + while ( 1 ) + { + v9 = *v8; + if ( !(_BYTE)v9 ) + break; + dword_68CDD4[v9] = 13; + ++v8; + } + for ( n = "0123456789"; ; ++n ) + { + v11 = *n; + if ( !(_BYTE)v11 ) + break; + dword_68CDD4[v11] = 13; + } + dword_68D1D4 = (int)&unk_620001; + for ( ii = "0123456789"; ; ++ii ) + { + v13 = *ii; + if ( !(_BYTE)v13 ) + break; + dword_68A5AC[v13] = 11; + } + dword_68A664 = 4; + v14 = "0123456789"; + dword_68A9AC = (int)&loc_460000 + 1; + dword_68AA68 = 327681; + dword_68ADB0 = -1; + while ( 1 ) + { + v15 = *v14; + if ( !(_BYTE)v15 ) + break; + dword_68C1C8[v15] = 10; + ++v14; + } + dword_68C280 = 11; + v16 = "0123456789"; + dword_68C5C8 = (int)&loc_49FFFE + 3; + while ( 1 ) + { + v17 = *v16; + if ( !(_BYTE)v17 ) + break; + dword_68C5CC[v17] = 11; + ++v16; + } + dword_68C9CC = (int)&loc_49FFFE + 3; + dword_68CAC4 = 19; + dword_68CDD0 = -1; + dword_68E6E0 = 327681; + dword_68E9EC = (int)&loc_460000 + 1; + dword_68D270 = 327681; + dword_68D5D8 = 4325377; + dword_68D7CC = 327681; + dword_68D9DC = 4325377; + dword_68A29C = 327681; + dword_68A5A8 = (int)&loc_460000 + 1; + dword_68B328 = 7; + dword_68B1E0 = 9568257; + dword_68B9BC = 6; + dword_68B5E4 = 9568257; + dword_68B240 = 1114113; + dword_68B5B8 = 6; + dword_68BB30 = 9; + dword_68B9E8 = 9568257; + dword_68C1C4 = 8; + dword_68BDEC = 9568257; + dword_68BA5C = 1114113; + dword_68BDC0 = 8; + dword_68DAD4 = 327681; + dword_68DAD0 = 327681; + dword_68DDE0 = (int)&loc_460000 + 1; + dword_68DED8 = 327681; + dword_68DEDC = 327681; + dword_68E1E4 = (int)&loc_460000 + 1; + dword_68E2DC = 20; + dword_68EAE4 = 327681; + dword_68EDF0 = (int)&loc_460000 + 1; + dword_68E5E8 = (int)&loc_460000 + 1; + } +} +// 689DA4: using guessed type int dword_689DA4[33]; +// 689E28: using guessed type int dword_689E28; +// 689E2C: using guessed type int dword_689E2C; +// 689E3C: using guessed type int dword_689E3C; +// 689E40: using guessed type int dword_689E40; +// 689E5C: using guessed type int dword_689E5C; +// 689E60: using guessed type int dword_689E60; +// 689E94: using guessed type int dword_689E94; +// 689E98: using guessed type int dword_689E98; +// 689E9C: using guessed type int dword_689E9C; +// 689F94: using guessed type int dword_689F94; +// 68A1A4: using guessed type int dword_68A1A4; +// 68A29C: using guessed type int dword_68A29C; +// 68A5A8: using guessed type int dword_68A5A8; +// 68A5AC: using guessed type int dword_68A5AC[46]; +// 68A664: using guessed type int dword_68A664; +// 68A9AC: using guessed type int dword_68A9AC; +// 68AA68: using guessed type int dword_68AA68; +// 68ADB0: using guessed type int dword_68ADB0; +// 68B1E0: using guessed type int dword_68B1E0; +// 68B240: using guessed type int dword_68B240; +// 68B328: using guessed type int dword_68B328; +// 68B5B8: using guessed type int dword_68B5B8; +// 68B5E4: using guessed type int dword_68B5E4; +// 68B9BC: using guessed type int dword_68B9BC; +// 68B9E8: using guessed type int dword_68B9E8; +// 68BA5C: using guessed type int dword_68BA5C; +// 68BB30: using guessed type int dword_68BB30; +// 68BDC0: using guessed type int dword_68BDC0; +// 68BDEC: using guessed type int dword_68BDEC; +// 68C1C4: using guessed type int dword_68C1C4; +// 68C1C8: using guessed type int dword_68C1C8[46]; +// 68C280: using guessed type int dword_68C280; +// 68C5C8: using guessed type int dword_68C5C8; +// 68C5CC: using guessed type int dword_68C5CC[256]; +// 68C9CC: using guessed type int dword_68C9CC; +// 68CAC4: using guessed type int dword_68CAC4; +// 68CDD0: using guessed type int dword_68CDD0; +// 68CDD4: using guessed type int dword_68CDD4[256]; +// 68D1D4: using guessed type int dword_68D1D4; +// 68D270: using guessed type int dword_68D270; +// 68D5D8: using guessed type int dword_68D5D8; +// 68D7CC: using guessed type int dword_68D7CC; +// 68D9DC: using guessed type int dword_68D9DC; +// 68DAD0: using guessed type int dword_68DAD0; +// 68DAD4: using guessed type int dword_68DAD4; +// 68DDE0: using guessed type int dword_68DDE0; +// 68DED8: using guessed type int dword_68DED8; +// 68DEDC: using guessed type int dword_68DEDC; +// 68E1E4: using guessed type int dword_68E1E4; +// 68E2DC: using guessed type int dword_68E2DC; +// 68E5E8: using guessed type int dword_68E5E8; +// 68E6E0: using guessed type int dword_68E6E0; +// 68E9EC: using guessed type int dword_68E9EC; +// 68EAE4: using guessed type int dword_68EAE4; +// 68EDF0: using guessed type int dword_68EDF0; +// 68EE9C: using guessed type int dword_68EE9C; +// 68F1F4: using guessed type int dword_68F1F4; +// 68F2A0: using guessed type int dword_68F2A0; +// 68F5F8: using guessed type int dword_68F5F8; +// 68F6A4: using guessed type int dword_68F6A4; +// 68F6B8: using guessed type int dword_68F6B8; +// 68F9FC: using guessed type int dword_68F9FC; +// 78A9A0: using guessed type char WXML::EXPRLib::Tokenizer::InitTransitTable(void)::bInited; + +//----- (004247F2) -------------------------------------------------------- +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + int result; // eax + + v1 = *a1; + if ( v1 ) + return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); + return result; +} + +//----- (004247FE) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + _DWORD *a1@, + _DWORD *a2@, + _DWORD *a3@) +{ + _DWORD *v4; // esi + _DWORD *i; // ebx + int v6; // edx + int v7; // ecx + volatile signed __int32 **v8; // ecx + _DWORD *v10; // [esp+8h] [ebp-20h] + + v4 = a3; + for ( i = a1; i != a2; i += 7 ) + { + *v4 = *i; + v6 = i[1]; + v4[2] = i[2]; + v4[1] = v6; + v4[3] = i[3]; + v7 = i[4]; + v4[4] = v7; + if ( v7 ) + { + if ( _CRT_MT ) + _InterlockedIncrement((volatile signed __int32 *)(v7 + 4)); + else + ++*(_DWORD *)(v7 + 4); + } + v10 = a1; + v4 += 7; + *(v4 - 2) = i[5]; + *(v4 - 1) = i[6]; + v8 = (volatile signed __int32 **)(i + 4); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); + a1 = v10; + } + return &a3[7 * ((920350135 * ((unsigned int)((char *)i - (char *)a1) >> 2)) & 0x3FFFFFFF)]; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00424888) -------------------------------------------------------- +unsigned int __thiscall WXML::EXPRLib::Tokenizer::Tokenizer(void **this, char *a2, int a3, int a4, int a5) +{ + size_t v6; // eax + int v8; // [esp+8h] [ebp-10h] + + *this = this + 2; + v6 = -1; + if ( a2 ) + v6 = (size_t)&a2[strlen(a2)]; + LOBYTE(v8) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)a2, v6, v8); +} +// 4248BE: variable 'v8' is possibly undefined + +//----- (004248D0) -------------------------------------------------------- +int __thiscall WXML::EXPRLib::Tokenizer::GetTokens(int *this, int a2, unsigned int *a3) +{ + unsigned __int8 v3; // bl + int v4; // esi + std::ostream::sentry *v5; // eax + std::ostream::sentry *v6; // eax + std::ostream::sentry *v7; // eax + std::ostream::sentry *v8; // eax + int v9; // ebx + char *v10; // edx + bool v11; // zf + char *v12; // ebx + char v13; // al + void **v14; // edi + volatile signed __int32 *v15; // eax + int v16; // edx + volatile signed __int32 *v17; // edx + volatile signed __int32 *v18; // ebx + const char **v19; // ebx + const char **v20; // edi + _DWORD *v21; // ecx + void (__cdecl *v23)(void *); // [esp+4h] [ebp-134h] + void (__cdecl *v24)(void *); // [esp+4h] [ebp-134h] + const char *v25; // [esp+4h] [ebp-134h] + int v26; // [esp+8h] [ebp-130h] + int v27; // [esp+10h] [ebp-128h] + int v29; // [esp+18h] [ebp-120h] + int v30; // [esp+1Ch] [ebp-11Ch] + int v31; // [esp+20h] [ebp-118h] + int v32; // [esp+28h] [ebp-110h] + int v33; // [esp+2Ch] [ebp-10Ch] + int v34; // [esp+30h] [ebp-108h] + volatile signed __int32 *v35; // [esp+34h] [ebp-104h] BYREF + void **v36; // [esp+38h] [ebp-100h] BYREF + volatile signed __int32 *v37; // [esp+3Ch] [ebp-FCh] BYREF + int v38; // [esp+50h] [ebp-E8h] BYREF + char v39[8]; // [esp+54h] [ebp-E4h] BYREF + const char **v40; // [esp+5Ch] [ebp-DCh] BYREF + volatile signed __int32 *v41[54]; // [esp+60h] [ebp-D8h] BYREF + + WXML::EXPRLib::Tokenizer::InitTransitTable(); + v27 = 18899; + v31 = 1; + v33 = 0; + v32 = 0; + v29 = this[1]; + while ( v33 <= v29 ) + { + if ( !--v27 ) + { + std::string::operator=(a3, "something must be wrong"); + return -1; + } + v30 = *this; + v3 = *(_BYTE *)(*this + v33); + if ( v33 == v29 ) + v3 = 0; + v4 = WXML::EXPRLib::Tokenizer::TT[257 * v31 + v3]; + if ( !v4 ) + { + v4 = dword_689DA0[257 * v31]; + if ( !v4 ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v38); + std::operator<<>((std::ostream::sentry *)&v39[4], "no transition for "); + v5 = (std::ostream::sentry *)std::ostream::operator<<(v31); + v6 = std::operator<<>(v5, " with input "); + std::operator<<>(v6, v3); + std::stringbuf::str((int)&v36, &v40); + std::string::operator=(a3, &v36); + std::string::_M_dispose((void **)&v36); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v38); + return -1; + } + } + if ( v4 == -1 ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v38); + v7 = std::operator<<>((std::ostream::sentry *)&v39[4], "unexpected `"); + v8 = std::operator<<>(v7, v3); + std::operator<<>(v8, "` at pos"); + std::ostream::operator<<(v33); + std::stringbuf::str((int)&v36, &v40); + std::string::operator=(a3, &v36); + std::string::_M_dispose((void **)&v36); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v38); + return v4; + } + v31 = (unsigned __int16)v4; + if ( (v4 & 0x30000) != 0 ) + { + v9 = 1; + if ( (v4 & 0x80000) == 0 ) + { + v9 = 2; + if ( (v4 & 0x100000) == 0 ) + v9 = (v4 << 10 >> 31) & 3; + } + if ( v32 <= ((v4 & 0x20000) == 0) + v33 - 1 ) + { + v10 = v39; + v40 = 0; + memset(v41, 0, 12); + v11 = v9 == 0; + memset(v39, 0, sizeof(v39)); + v38 = v9; + v12 = (char *)(v30 + v32); + if ( v11 ) + { + do + { + v13 = *v12++; + *v10++ = v13; + } + while ( v12 != (char *)(v30 + ((v4 & 0x20000) == 0) + v33) ); + v39[((v4 & 0x20000) == 0) + v33 - v32] = 0; + } + else + { + v14 = (void **)operator new((struct type_info *)0x18, v23); + *v14 = v14 + 2; + LOBYTE(v26) = 0; + std::string::_M_construct( + v14, + (unsigned __int8 *)(v30 + v32), + ((v4 & 0x20000) == 0) + v33 + v30, + v26); + v36 = v14; + v35 = 0; + v37 = 0; + v15 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v24); + v16 = (int)v36; + *((_DWORD *)v15 + 3) = v14; + *((_DWORD *)v15 + 1) = 1; + *((_DWORD *)v15 + 2) = 1; + *v15 = (volatile signed __int32)&off_538A2C; + v34 = v16; + v17 = v35; + v36 = 0; + v35 = v15; + v37 = v17; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v37); + v18 = v35; + v40 = (const char **)v34; + if ( v35 != v41[0] ) + { + if ( v35 ) + { + if ( _CRT_MT ) + _InterlockedIncrement(v35 + 1); + else + ++*((_DWORD *)v35 + 1); + } + if ( v41[0] ) + std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v41[0]); + v41[0] = v18; + } + v19 = (const char **)WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v35); + v20 = v40; + while ( *v19 ) + { + v25 = *v19++; + if ( !strcmp(*v20, v25) ) + { + v38 = 4; + break; + } + } + } + v21 = *(_DWORD **)(a2 + 4); + if ( v21 == *(_DWORD **)(a2 + 8) ) + { + v23 = (void (__cdecl *)(void *))std::vector::_M_realloc_insert( + (char **)a2, + *(char **)(a2 + 4), + (WXML::EXPRLib::Token *)&v38); + } + else + { + WXML::EXPRLib::Token::Token(v21, (WXML::EXPRLib::Token *)&v38, (const WXML::EXPRLib::Token *)v23); + *(_DWORD *)(a2 + 4) += 28; + } + v32 = ((v4 & 0x20000) == 0) + v33; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v41); + } + } + v33 += (v4 & 0x400000) == 0; + if ( (v4 & 0x800000) != 0 ) + v32 = v33; + } + return 0; +} +// 424BAF: variable 'v23' is possibly undefined +// 424BD9: variable 'v26' is possibly undefined +// 424C0C: variable 'v24' is possibly undefined +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 52EA04: using guessed type char *WXML::EXPRLib::Tokenizer::GetTokens(std::vector &,std::string &)::KEYWORDS[4]; +// 538A2C: using guessed type int (*off_538A2C)(); +// 6899A0: using guessed type int WXML::EXPRLib::Tokenizer::TT[]; +// 689DA0: using guessed type int dword_689DA0[]; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00424DCC) -------------------------------------------------------- +void __cdecl __tcf_1_4() +{ + std::ios_base::Init::~Init(); +} + +//----- (00424DD6) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 424DD6: using guessed type unsigned int var_1C[7]; + +//----- (00424E47) -------------------------------------------------------- +volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) +{ + if ( _CRT_MT ) + _InterlockedIncrement(result); + else + ++*result; + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00424E58) -------------------------------------------------------- +void __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + signed __int32 v2; // eax + signed __int32 v3; // eax + int v4; // [esp-1Ch] [ebp-1Ch] + int v5; // [esp-18h] [ebp-18h] + int v6; // [esp-14h] [ebp-14h] + volatile signed __int32 *v7; // [esp-10h] [ebp-10h] + int v8; // [esp-Ch] [ebp-Ch] + int v9; // [esp-8h] [ebp-8h] + + v1 = *a1; + if ( v1 ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 + 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 + 1); + *((_DWORD *)v1 + 1) = v2 - 1; + } + if ( v2 == 1 ) + { + (*(void (__stdcall **)(int, int, int, volatile signed __int32 *, int, int))(*v1 + 8))(v4, v5, v6, v1, v8, v9); + if ( _CRT_MT ) + { + v3 = _InterlockedExchangeAdd(v7 + 2, 0xFFFFFFFF); + } + else + { + v3 = *((_DWORD *)v7 + 2); + *((_DWORD *)v7 + 2) = v3 - 1; + } + if ( v3 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v7 + 12))(v7); + } + } +} +// 424E88: variable 'v4' is possibly undefined +// 424E88: variable 'v5' is possibly undefined +// 424E88: variable 'v6' is possibly undefined +// 424E88: variable 'v8' is possibly undefined +// 424E88: variable 'v9' is possibly undefined +// 424E9A: variable 'v7' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00424EB8) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + volatile signed __int32 **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 8 ) + { + v4 = (volatile signed __int32 **)(i + 4); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00424EF0) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 3 ) + { + v4 = i; + std::vector>::~vector(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00424F26) -------------------------------------------------------- +void __thiscall std::vector::_M_move_assign(void *this, int *a2) +{ + void **v2; // ebx + void **v3; // edx + int v4; // edi + int v5; // edi + void **v6[9]; // [esp+4h] [ebp-24h] BYREF + + v2 = (void **)*((_DWORD *)this + 1); + v3 = (void **)*((_DWORD *)this + 2); + v4 = *a2; + v6[0] = *(void ***)this; + v6[1] = v2; + *(_DWORD *)this = v4; + v5 = a2[1]; + v6[2] = v3; + *((_DWORD *)this + 1) = v5; + *((_DWORD *)this + 2) = a2[2]; + *a2 = 0; + a2[1] = 0; + a2[2] = 0; + std::vector::~vector(v6); +} + +//----- (00424F7A) -------------------------------------------------------- +int WXML::EXPRLib::TransitTable::GetExprNTType() +{ + return 14; +} + +//----- (00424F80) -------------------------------------------------------- +int WXML::EXPRLib::TransitTable::GetAttrListNTType() +{ + return 12; +} + +//----- (00424F86) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_move_assign( + int this, + _DWORD *a2) +{ + int result; // eax + int v4; // edi + + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(void **)(this + 8)); + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = this + 4; + *(_DWORD *)(this + 16) = this + 4; + result = a2[2]; + *(_DWORD *)(this + 20) = 0; + if ( result ) + { + v4 = a2[1]; + *(_DWORD *)(this + 8) = result; + *(_DWORD *)(this + 4) = v4; + *(_DWORD *)(this + 12) = a2[3]; + *(_DWORD *)(this + 16) = a2[4]; + *(_DWORD *)(result + 4) = this + 4; + result = a2[5]; + *(_DWORD *)(this + 20) = result; + a2[2] = 0; + a2[3] = a2 + 1; + a2[4] = a2 + 1; + a2[5] = 0; + } + return result; +} + +//----- (00424FFE) -------------------------------------------------------- +void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(void **)(a1 + 8)); +} + +//----- (00425012) -------------------------------------------------------- +#error "425012: too big function (funcsize=0)" + +//----- (00443018) -------------------------------------------------------- +void __cdecl __tcf_0_4() +{ + std::ios_base::Init::~Init(); +} + +//----- (00443022) -------------------------------------------------------- +int __cdecl WXML::StringTemplating::Deal(const char *a1, int a2, _DWORD *a3, _BYTE *a4) +{ + int v4; // esi + signed int v5; // ebx + unsigned int v6; // kr04_4 + signed int v7; // eax + char v8; // dl + char v9; // cl + int v10; // edx + char v11; // cl + char v12; // cl + bool v13; // zf + int v14; // edx + int v15; // ebx + int v17; // [esp+8h] [ebp-70h] + signed int v18; // [esp+1Ch] [ebp-5Ch] + void *v19[2]; // [esp+2Ch] [ebp-4Ch] BYREF + char v20[16]; // [esp+34h] [ebp-44h] BYREF + int v21; // [esp+44h] [ebp-34h] BYREF + char *v22; // [esp+48h] [ebp-30h] BYREF + int v23; // [esp+4Ch] [ebp-2Ch] + char v24[40]; // [esp+50h] [ebp-28h] BYREF + + v4 = 0; + v5 = 0; + v6 = strlen(a1) + 1; + v18 = v6 - 1; + v7 = 0; + while ( 1 ) + { + v8 = a1[v5]; + if ( v5 >= v18 || !v8 ) + break; + v9 = a1[v5 + 1]; + if ( v4 == 2 ) + { + if ( v8 == 92 ) + goto LABEL_38; + v13 = v8 == 34; + goto LABEL_40; + } + if ( v4 > 2 ) + { + if ( v8 == 92 ) + { +LABEL_38: + ++v5; + goto LABEL_43; + } + v13 = v8 == 39; +LABEL_40: + if ( !v13 ) + goto LABEL_43; + goto LABEL_41; + } + if ( v4 ) + { + if ( v8 == 125 && v9 == 125 ) + { + if ( v5 > v7 ) + { + v10 = v5 - 1; + while ( 1 ) + { + v11 = a1[v7]; + if ( v11 != 32 && v11 != 9 ) + break; + ++v7; + } + while ( v7 < v10 ) + { + v12 = a1[v10]; + if ( v12 != 32 && v12 != 9 ) + goto LABEL_30; + --v10; + } + if ( v7 != v10 ) + goto LABEL_31; +LABEL_30: + LOBYTE(v17) = 0; + v22 = v24; + v19[0] = v20; + v23 = 0; + v24[0] = 0; + v21 = 0; + std::string::_M_construct(v19, (unsigned __int8 *)&a1[v7], (size_t)&a1[v10 + 1], v17); + std::string::operator=(&v22, v19); + std::string::_M_dispose(v19); + v21 = 1; + std::vector::push_back(a3, &v21); + *a4 = 1; + std::string::_M_dispose((void **)&v22); + } +LABEL_31: + v7 = v5 + 2; + v4 = 0; + ++v5; + } + else if ( v8 == 34 ) + { + v4 = 2; + } + else if ( v8 == 39 ) + { + v4 = 4; + } + } + else if ( v8 == 123 && v9 == 123 ) + { + if ( v5 > v7 ) + { + LOBYTE(v17) = 0; + v22 = v24; + v19[0] = v20; + v23 = 0; + v24[0] = 0; + v21 = 0; + std::string::_M_construct(v19, (unsigned __int8 *)&a1[v7], (size_t)&a1[v5], v17); + std::string::operator=(&v22, v19); + std::string::_M_dispose(v19); + v21 = 0; + std::vector::push_back(a3, &v21); + std::string::_M_dispose((void **)&v22); + } + v7 = v5 + 2; + ++v5; +LABEL_41: + v4 = 1; + } +LABEL_43: + ++v5; + } + if ( v4 ) + return 1; + v14 = 0; + if ( v5 >= (int)(v6 - 2) ) + v14 = ~(v5 - v18); + v15 = v14 + v5; + if ( v7 <= v15 ) + { + LOBYTE(v17) = 0; + v22 = v24; + v19[0] = v20; + v23 = 0; + v24[0] = 0; + v21 = 0; + std::string::_M_construct(v19, (unsigned __int8 *)&a1[v7], (size_t)&a1[v15 + 1], v17); + std::string::operator=(&v22, v19); + std::string::_M_dispose(v19); + std::vector::push_back(a3, &v21); + std::string::_M_dispose((void **)&v22); + } + return v4; +} +// 443068: conditional instruction was optimized away because esi.4==1 +// 443076: conditional instruction was optimized away because esi.4==4 +// 4430E0: variable 'v17' is possibly undefined + +//----- (00443300) -------------------------------------------------------- +_DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4) +{ + int v4; // esi + _DWORD *v5; // ebx + _DWORD *result; // eax + + switch ( a2 ) + { + case 1: + case 2: + case 3: + case 4: + case 11: + case 33: + case 43: + case 45: + case 55: + case 56: + case 57: + case 58: + case 59: + case 61: + case 62: + case 64: + case 76: + case 78: + if ( !a3 ) + goto LABEL_7; + goto LABEL_6; + case 9: + case 10: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 34: + case 35: + case 36: + case 37: + case 38: + case 40: + case 48: + case 52: + case 53: + case 54: + case 60: + case 63: + case 67: + case 68: + case 69: + case 73: + case 74: + case 75: + if ( a3 ) + goto LABEL_3; + goto LABEL_7; + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 41: + case 46: + case 47: + case 77: + case 79: + case 80: + goto LABEL_3; + case 42: + case 49: +LABEL_6: + if ( !a4 ) + goto LABEL_7; +LABEL_3: + v4 = a1[5]; + if ( v4 >= a1[6] ) + goto LABEL_7; + v5 = (_DWORD *)(a1[4] + 16 * a1[5]); + v5[1] = 0; + a1[5] = v4 + 1; + *v5 = a2; + v5[3] = a4; + result = v5; + v5[2] = a3; + break; + default: +LABEL_7: + result = 0; + break; + } + return result; +} + +//----- (00443360) -------------------------------------------------------- +_DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@) +{ + _DWORD *result; // eax + char *v4; // edx + char v5; // cl + int v6; // ebp + int v7; // esi + int v8; // edi + + result = a2; + v4 = (char *)a1[3]; + v5 = *v4; + if ( *v4 == 82 || v5 == 79 ) + { + v6 = a1[11]; + v7 = 32; + v8 = v6 + 3; + if ( v5 == 82 ) + { + v8 = v6 + 2; + v7 = 31; + } + a1[11] = v8; + a1[3] = v4 + 1; + return d_make_comp(a1, v7, (int)result, 0); + } + return result; +} + +//----- (004433D0) -------------------------------------------------------- +_DWORD *__usercall d_count_templates_scopes@(_DWORD *result@, _DWORD *a2@, int a3@) +{ + _DWORD *v3; // esi + _DWORD *v4; // ebx + int v5; // edx + int v6; // ecx + + if ( a2 ) + { + v3 = result; + v4 = a2; + while ( 2 ) + { + switch ( *v4 ) + { + case 1: + case 2: + case 3: + case 9: + case 0xA: + case 0xB: + case 0xC: + case 0xD: + case 0xE: + case 0xF: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x25: + case 0x26: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x43: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + goto LABEL_6; + case 4: + v5 = result[71]; + ++result[81]; + if ( v5 <= 2048 ) + goto LABEL_12; + return result; + case 7: + case 8: + case 0x33: + v4 = (_DWORD *)v4[3]; + goto LABEL_9; + case 0x23: + case 0x24: + result = (_DWORD *)v4[2]; + if ( *result == 5 ) + ++v3[78]; +LABEL_6: + v5 = v3[71]; + if ( v5 > 2048 ) + return result; +LABEL_12: + v3[71] = v5 + 1; + d_count_templates_scopes(a3, v4[2]); + result = (_DWORD *)d_count_templates_scopes(v6, v4[3]); + --v3[71]; + return result; + case 0x2C: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + v4 = (_DWORD *)v4[2]; +LABEL_9: + if ( !v4 ) + return result; + continue; + default: + return result; + } + } + } + return result; +} +// 443448: variable 'v6' is possibly undefined + +//----- (00443480) -------------------------------------------------------- +int __usercall d_append_buffer@(int result@, char *a2@, int a3@) +{ + char *v3; // edi + char *v4; // esi + int v5; // ebx + int v6; // ecx + char v7; // dl + int v8; // eax + char v9; // [esp+1Fh] [ebp-Dh] + + if ( a3 ) + { + v3 = &a2[a3]; + v4 = a2; + v5 = result; + result = *(_DWORD *)(result + 256); + do + { + v7 = *v4; + if ( result == 255 ) + { + v8 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + v9 = v7; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v8); + ++*(_DWORD *)(v5 + 296); + v7 = v9; + v6 = 0; + result = 1; + } + else + { + v6 = result++; + } + ++v4; + *(_DWORD *)(v5 + 256) = result; + *(_BYTE *)(v5 + v6) = v7; + *(_BYTE *)(v5 + 260) = v7; + } + while ( v4 != v3 ); + } + return result; +} + +//----- (00443520) -------------------------------------------------------- +int __usercall d_number_isra_0@(char **a1@) +{ + int v2; // ebx + int v3; // ecx + char *v4; // ebx + signed int v5; // esi + int v6; // eax + int v8; // [esp+0h] [ebp-14h] + + v2 = (int)*a1; + v3 = **a1; + if ( (_BYTE)v3 != 110 ) + { + if ( (unsigned __int8)(v3 - 48) <= 9u ) + { + v8 = 0; + goto LABEL_4; + } + return 0; + } + *a1 = (char *)(v2 + 1); + v3 = *(char *)(v2 + 1); + if ( (unsigned __int8)(v3 - 48) > 9u ) + return 0; + v8 = 1; + ++v2; +LABEL_4: + v4 = (char *)(v2 + 1); + v5 = 0; + while ( 1 ) + { + *a1 = v4; + v6 = v3 + 10 * v5; + v3 = *v4; + v5 = v6 - 48; + if ( (unsigned __int8)(v3 - 48) > 9u ) + break; + ++v4; + if ( (int)((0x7FFFFFFF - (v3 - 48)) / 0xAu) < v5 ) + return -1; + } + if ( v8 ) + return 48 - v6; + return v5; +} + +//----- (004435E0) -------------------------------------------------------- +_DWORD *__usercall d_number_component@(int a1@) +{ + int v1; // edx + int v2; // ebx + int v3; // eax + _DWORD *v4; // ebx + + v1 = *(_DWORD *)(a1 + 20); + if ( v1 >= *(_DWORD *)(a1 + 24) ) + return 0; + v2 = *(_DWORD *)(a1 + 20); + v3 = a1 + 12; + v4 = (_DWORD *)(*(_DWORD *)(v3 + 4) + 16 * v2); + v4[1] = 0; + *(_DWORD *)(v3 + 8) = v1 + 1; + *v4 = 66; + v4[2] = d_number_isra_0((char **)v3); + return v4; +} + +//----- (00443620) -------------------------------------------------------- +int __usercall d_compact_number@(int a1@) +{ + _BYTE *v1; // edx + int result; // eax + + v1 = *(_BYTE **)(a1 + 12); + if ( *v1 == 95 ) + { + result = 0; +LABEL_5: + *(_DWORD *)(a1 + 12) = v1 + 1; + return result; + } + if ( *v1 != 110 ) + { + result = d_number_isra_0((char **)(a1 + 12)) + 1; + if ( result >= 0 ) + { + v1 = *(_BYTE **)(a1 + 12); + if ( *v1 == 95 ) + goto LABEL_5; + } + } + return -1; +} + +//----- (00443660) -------------------------------------------------------- +_DWORD *__usercall d_template_param@(_DWORD *a1@) +{ + _BYTE *v2; // eax + int v3; // edx + int v4; // ecx + _DWORD *result; // eax + + v2 = (_BYTE *)a1[3]; + if ( *v2 != 84 ) + return 0; + a1[3] = v2 + 1; + v3 = d_compact_number((int)a1); + if ( v3 < 0 ) + return 0; + v4 = a1[5]; + if ( v4 >= a1[6] ) + return 0; + result = (_DWORD *)(a1[4] + 16 * a1[5]); + result[1] = 0; + a1[5] = v4 + 1; + *result = 5; + result[2] = v3; + return result; +} + +//----- (004436C0) -------------------------------------------------------- +_DWORD *__usercall d_source_name@(int a1@) +{ + _DWORD *v1; // esi + int v3; // eax + _BYTE *v4; // edx + int v5; // esi + int v7; // ecx + int v8; // [esp+0h] [ebp-1Ch] + int v9; // [esp+4h] [ebp-18h] + + v1 = 0; + v3 = d_number_isra_0((char **)(a1 + 12)); + if ( v3 > 0 ) + { + v8 = *(_DWORD *)(a1 + 12); + if ( v3 > *(_DWORD *)(a1 + 4) - v8 ) + goto LABEL_14; + v4 = (_BYTE *)(v8 + v3); + *(_DWORD *)(a1 + 12) = v8 + v3; + if ( (*(_BYTE *)(a1 + 8) & 4) != 0 && *v4 == 36 ) + { + v7 = *(_DWORD *)(a1 + 20); + v5 = *(_DWORD *)(a1 + 24); + *(_DWORD *)(a1 + 12) = v4 + 1; + v9 = v7; + if ( v3 > 9 ) + { +LABEL_6: + if ( *(_DWORD *)v8 == 1330399071 + && *(_DWORD *)(v8 + 4) == 1598832962 + && (*(_BYTE *)(v8 + 8) == 95 || *(_BYTE *)(v8 + 8) == 46 || *(_BYTE *)(v8 + 8) == 36) + && *(_BYTE *)(v8 + 9) == 78 ) + { + *(_DWORD *)(a1 + 44) = *(_DWORD *)(a1 + 44) + 22 - v3; + if ( v5 > v9 ) + { + v1 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * v9); + *(_DWORD *)(a1 + 20) = v9 + 1; + v1[1] = 0; + *v1 = 0; + v1[2] = "(anonymous namespace)"; + v1[3] = 21; + goto LABEL_10; + } + goto LABEL_14; + } + if ( v5 > v9 ) + { + v1 = (_DWORD *)(16 * v9 + *(_DWORD *)(a1 + 16)); + v1[1] = 0; + *(_DWORD *)(a1 + 20) = v9 + 1; +LABEL_9: + v1[1] = 0; + *v1 = 0; + v1[2] = v8; + v1[3] = v3; +LABEL_10: + *(_DWORD *)(a1 + 40) = v1; + return v1; + } +LABEL_14: + v1 = 0; + goto LABEL_10; + } + } + else + { + v5 = *(_DWORD *)(a1 + 24); + v9 = *(_DWORD *)(a1 + 20); + if ( v3 > 9 ) + goto LABEL_6; + } + if ( v5 > v9 ) + { + v1 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * v9); + v1[1] = 0; + *(_DWORD *)(a1 + 20) = v9 + 1; + if ( v8 ) + goto LABEL_9; + } + goto LABEL_14; + } + return v1; +} + +//----- (00443850) -------------------------------------------------------- +_DWORD *__usercall d_abi_tags@(_DWORD *a1@, _DWORD *comp@) +{ + int v4; // esi + _BYTE *i; // eax + _DWORD *v6; // eax + + v4 = a1[10]; + for ( i = (_BYTE *)a1[3]; *i == 66; i = (_BYTE *)a1[3] ) + { + a1[3] = i + 1; + v6 = d_source_name((int)a1); + comp = d_make_comp(a1, 76, (int)comp, (int)v6); + } + a1[10] = v4; + return comp; +} + +//----- (004438A0) -------------------------------------------------------- +_DWORD *__usercall d_substitution@(_DWORD *a1@, char a2@
) +{ + _BYTE *v3; // eax + int v5; // edx + char v6; // cl + const char *v7; // eax + _DWORD *result; // eax + unsigned int v9; // eax + unsigned int i; // ecx + char *v11; // eax + unsigned int v12; // ecx + int v13; // ebp + int v14; // edx + int v15; // edi + int v16; // ecx + _DWORD *v17; // esi + int v18; // ecx + int v19; // esi + int v20; // edx + BOOL v21; // [esp+0h] [ebp-14h] + + v3 = (_BYTE *)a1[3]; + if ( *v3 != 83 ) + return 0; + a1[3] = v3 + 1; + LOBYTE(v5) = v3[1]; + if ( !(_BYTE)v5 ) + goto LABEL_3; + a1[3] = v3 + 2; + v5 = (char)v3[1]; + if ( (unsigned __int8)(v5 - 48) <= 9u ) + { + if ( (_BYTE)v5 != 95 ) + goto LABEL_15; +LABEL_24: + v12 = 0; +LABEL_25: + if ( a1[8] > v12 ) + return *(_DWORD **)(a1[7] + 4 * v12); + return 0; + } + if ( (_BYTE)v5 == 95 ) + goto LABEL_24; + if ( (unsigned __int8)(v5 - 65) <= 0x19u ) + { +LABEL_15: + v9 = 0; + if ( (unsigned __int8)(v5 - 48) > 9u ) + goto LABEL_21; +LABEL_16: + for ( i = v5 + 36 * v9 - 48; v9 <= i; i = v5 + 36 * v9 - 55 ) + { + v11 = (char *)a1[3]; + v5 = *v11; + if ( (_BYTE)v5 ) + { + a1[3] = v11 + 1; + v5 = *v11; + if ( (_BYTE)v5 == 95 ) + { + v12 = i + 1; + goto LABEL_25; + } + } + v9 = i; + if ( (unsigned __int8)(v5 - 48) <= 9u ) + goto LABEL_16; +LABEL_21: + if ( (unsigned __int8)(v5 - 65) > 0x19u ) + return 0; + } + return 0; + } +LABEL_3: + v21 = (a1[2] & 8) != 0; + if ( (a1[2] & 8) == 0 && (a2 & 1) != 0 && (unsigned __int8)(*(_BYTE *)a1[3] - 67) <= 1u ) + v21 = 1; + v6 = 116; + v7 = "t"; + while ( (_BYTE)v5 != v6 ) + { + v7 += 28; + if ( v7 == (const char *)&unk_531B44 ) + return 0; + v6 = *v7; + } + v13 = *((_DWORD *)v7 + 5); + v14 = a1[5]; + v15 = a1[6]; + if ( v13 ) + { + v16 = *((_DWORD *)v7 + 6); + if ( v14 >= v15 ) + { + v17 = 0; + } + else + { + ++v14; + v17 = (_DWORD *)(a1[4] + 16 * a1[5]); + v17[1] = 0; + a1[5] = v14; + *v17 = 24; + v17[2] = v13; + v17[3] = v16; + } + a1[10] = v17; + } + if ( v21 ) + { + v18 = *((_DWORD *)v7 + 3); + v19 = *((_DWORD *)v7 + 4); + } + else + { + v18 = *((_DWORD *)v7 + 1); + v19 = *((_DWORD *)v7 + 2); + } + a1[11] += v19; + if ( v14 >= v15 ) + { + result = 0; + } + else + { + result = (_DWORD *)(a1[4] + 16 * v14); + result[1] = 0; + a1[5] = v14 + 1; + *result = 24; + result[2] = v18; + result[3] = v19; + } + if ( *(_BYTE *)a1[3] == 66 ) + { + result = d_abi_tags(a1, result); + if ( result ) + { + v20 = a1[8]; + if ( v20 < a1[9] ) + { + *(_DWORD *)(a1[7] + 4 * v20) = result; + a1[8] = v20 + 1; + return result; + } + } + return 0; + } + return result; +} + +//----- (00443A90) -------------------------------------------------------- +int __usercall d_call_offset@(int a1@, int a2@) +{ + _BYTE *v3; // eax + _BYTE *v5; // eax + _BYTE *v6; // eax + + if ( !a2 ) + { + v3 = *(_BYTE **)(a1 + 12); + if ( !*v3 ) + return 0; + *(_DWORD *)(a1 + 12) = v3 + 1; + a2 = (char)*v3; + } + if ( a2 == 104 ) + { + d_number_isra_0((char **)(a1 + 12)); + } + else + { + if ( a2 != 118 ) + return 0; + d_number_isra_0((char **)(a1 + 12)); + v5 = *(_BYTE **)(a1 + 12); + if ( *v5 != 95 ) + return 0; + *(_DWORD *)(a1 + 12) = v5 + 1; + d_number_isra_0((char **)(a1 + 12)); + } + v6 = *(_BYTE **)(a1 + 12); + if ( *v6 != 95 ) + return 0; + *(_DWORD *)(a1 + 12) = v6 + 1; + return 1; +} + +//----- (00443B00) -------------------------------------------------------- +BOOL __usercall next_is_type_qual_isra_0@(char *a1@) +{ + char v1; // dl + + v1 = *a1; + if ( v1 == 86 || v1 == 114 || v1 == 75 ) + return 1; + if ( v1 == 68 ) + return (a1[1] & 0xDF) == 79 || (unsigned __int8)(a1[1] - 119) <= 1u; + return 0; +} + +//----- (00443B60) -------------------------------------------------------- +int __usercall d_discriminator@(int a1@) +{ + _BYTE *v2; // eax + int v3; // edx + int result; // eax + int v5; // eax + _BYTE *v6; // edx + + v2 = *(_BYTE **)(a1 + 12); + if ( *v2 != 95 ) + return 1; + *(_DWORD *)(a1 + 12) = v2 + 1; + if ( v2[1] != 95 ) + { + v3 = d_number_isra_0((char **)(a1 + 12)); + result = 0; + if ( v3 < 0 ) + return result; + return 1; + } + *(_DWORD *)(a1 + 12) = v2 + 2; + v5 = d_number_isra_0((char **)(a1 + 12)); + if ( v5 < 0 ) + return 0; + if ( v5 <= 9 ) + return 1; + v6 = *(_BYTE **)(a1 + 12); + result = 0; + if ( *v6 == 95 ) + { + *(_DWORD *)(a1 + 12) = v6 + 1; + return 1; + } + return result; +} + +//----- (00443BC0) -------------------------------------------------------- +_BYTE *__cdecl d_growable_string_callback_adapter(void *Src, size_t Size, unsigned int *a3) +{ + size_t v3; // esi + unsigned int v4; // edx + _BYTE *result; // eax + + v3 = a3[2]; + v4 = a3[3]; + result = (_BYTE *)(Size + a3[1] + 1); + if ( (unsigned int)result > v3 ) + { + if ( v4 ) + return result; + if ( v3 || (v3 = 2, (unsigned int)result > 2) ) + { + do + v3 *= 2; + while ( (unsigned int)result > v3 ); + } + result = __mingw_realloc(*a3, v3); + if ( !result ) + { + result = (_BYTE *)__mingw_free(*a3); + *a3 = 0; + a3[1] = 0; + a3[2] = 0; + a3[3] = 1; + return result; + } + *a3 = (unsigned int)result; + v4 = a3[3]; + a3[2] = v3; + } + if ( !v4 ) + { + memcpy((void *)(*a3 + a3[1]), Src, Size); + result = (_BYTE *)(a3[1] + Size + *a3); + *result = 0; + a3[1] += Size; + } + return result; +} + +//----- (00443C80) -------------------------------------------------------- +_DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@) +{ + if ( result ) + { + while ( *result == 47 ) + { + if ( a2 <= 0 ) + { + if ( a2 ) + return 0; + return (_DWORD *)result[2]; + } + result = (_DWORD *)result[3]; + --a2; + if ( !result ) + return result; + } + } + return 0; +} + +//----- (00443CD0) -------------------------------------------------------- +_DWORD *__usercall d_lookup_template_argument_isra_0@(int a1@, int *a2@) +{ + _DWORD *result; // eax + int v4; // edx + + result = *(_DWORD **)(a1 + 272); + if ( result ) + { + v4 = *a2; + result = *(_DWORD **)(result[1] + 12); + if ( v4 >= 0 ) + return d_index_template_argument_part_0(result, v4); + } + else + { + *(_DWORD *)(a1 + 280) = 1; + } + return result; +} + +//----- (00443D10) -------------------------------------------------------- +_DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@) +{ + _DWORD *v4; // ebx + _DWORD *result; // eax + + if ( !a2 ) + return 0; + v4 = a2; + while ( 2 ) + { + switch ( *v4 ) + { + case 0: + case 6: + case 0x18: + case 0x27: + case 0x2C: + case 0x32: + case 0x41: + case 0x42: + case 0x46: + case 0x47: + case 0x48: + case 0x4B: + case 0x4C: + goto LABEL_6; + case 5: + result = d_lookup_template_argument_isra_0(a1, v4 + 2); + if ( !result || *result != 47 ) + goto LABEL_6; + return result; + case 7: + case 8: + case 0x33: + goto LABEL_9; + default: + result = (_DWORD *)d_find_pack(a3, v4[2]); + if ( result ) + return result; +LABEL_9: + v4 = (_DWORD *)v4[3]; + if ( v4 ) + continue; +LABEL_6: + result = 0; + break; + } + return result; + } +} +// 443D55: variable 'a3' is possibly undefined + +//----- (00443D80) -------------------------------------------------------- +_DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
) +{ + char *v3; // eax + int v4; // edi + char v5; // dl + _DWORD *v6; // eax + _DWORD *v7; // esi + int v8; // eax + int v9; // eax + _BYTE *v11; // eax + char v12; // dl + int v13; // eax + _BYTE *v14; // eax + int *v15; // esi + int v16; // eax + int v17; // eax + int v18; // ecx + int v19; // edx + _DWORD *v20; // eax + char **v21; // eax + char *v22; // edx + int v23; // ecx + int v24; // eax + unsigned __int8 v25; // al + int v26; // eax + int *v27; // ecx + char *v28; // eax + char v29; // dl + int v30; // eax + _DWORD *v31; // eax + int *v32; // eax + int *v33; // esi + _DWORD *v34; // ecx + _BYTE *v35; // eax + _DWORD *v36; // eax + char v37; // al + _BYTE *v38; // eax + _BYTE *v39; // eax + _DWORD *v40; // eax + _DWORD *v41; // eax + _DWORD *v42; // eax + _DWORD *v43; // eax + char *v44; // eax + _DWORD *v45; // eax + unsigned __int8 *v46; // edx + int v47; // ecx + _DWORD *v48; // ecx + _BYTE *v49; // eax + _DWORD *v50; // eax + char v51; // al + int *v52; // eax + _DWORD *v53; // eax + int v54; // [esp+0h] [ebp-2Ch] + _DWORD *comp; // [esp+0h] [ebp-2Ch] + int v56; // [esp+4h] [ebp-28h] + int v57; // [esp+8h] [ebp-24h] + int v58; // [esp+Ch] [ebp-20h] + int v59; // [esp+10h] [ebp-1Ch] + int v60; // [esp+14h] [ebp-18h] + int v61; // [esp+18h] [ebp-14h] + int v62; // [esp+1Ch] [ebp-10h] + int v63; // [esp+20h] [ebp-Ch] + int v64; // [esp+24h] [ebp-8h] + int v65; // [esp+28h] [ebp-4h] + _DWORD *v66; // [esp+2Ch] [ebp+0h] + + v3 = (char *)a1[3]; + HIBYTE(v60) = a2; + if ( *v3 != a2 ) + { + while ( 1 ) + { + v4 = a1[12]; + a1[12] = 1; + v5 = *v3; + if ( *v3 == 76 ) + { + v7 = d_expr_primary(a1); + goto LABEL_27; + } + switch ( v5 ) + { + case 'T': + v7 = d_template_param(a1); + goto LABEL_27; + case 's': + v12 = v3[1]; + if ( v12 == 114 ) + { + a1[3] = v3 + 2; + v33 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65); + v34 = d_unqualified_name(a1); + v35 = (_BYTE *)a1[3]; + if ( *v35 == 73 ) + { + v61 = (int)v34; + a1[3] = v35 + 1; + v43 = d_template_args_1(a1); + comp = d_make_comp(a1, 4, v61, (int)v43); + v36 = d_make_comp(a1, 1, (int)v33, (int)comp); + } + else + { + v36 = d_make_comp(a1, 1, (int)v33, (int)v34); + } + v7 = v36; + goto LABEL_27; + } + if ( v12 == 112 ) + { + a1[3] = v3 + 2; + v13 = d_expression_1(); + v7 = d_make_comp(a1, 75, v13, 0); + goto LABEL_27; + } + break; + case 'f': + if ( v3[1] == 112 ) + { + a1[3] = v3 + 2; + if ( v3[2] == 84 ) + { + v18 = 0; + a1[3] = v3 + 3; + } + else + { + v17 = d_compact_number((int)a1); + if ( (v17 & 0x7FFFFFFF) == 0x7FFFFFFF ) + goto LABEL_15; + v18 = v17 + 1; + } + v19 = a1[5]; + if ( v19 >= a1[6] ) + { +LABEL_15: + a1[12] = v4; + return 0; + } + v20 = (_DWORD *)(a1[4] + 16 * a1[5]); + v20[1] = 0; + v7 = v20; + a1[5] = v19 + 1; + *v20 = 6; + v20[2] = v18; +LABEL_19: + a1[12] = v4; + goto LABEL_20; + } + break; + default: + if ( (unsigned __int8)(v5 - 48) <= 9u ) + { + v7 = d_unqualified_name(a1); + if ( !v7 ) + goto LABEL_32; +LABEL_18: + v11 = (_BYTE *)a1[3]; + if ( *v11 != 73 ) + goto LABEL_19; + a1[3] = v11 + 1; + v31 = d_template_args_1(a1); + v7 = d_make_comp(a1, 4, (int)v7, (int)v31); + goto LABEL_27; + } + if ( v5 == 111 ) + { + if ( v3[1] == 110 ) + { + a1[3] = v3 + 2; + v7 = d_unqualified_name(a1); + if ( !v7 ) + { +LABEL_32: + a1[12] = v4; + return v7; + } + goto LABEL_18; + } + } + else if ( (v5 == 105 || v5 == 116) && v3[1] == 108 ) + { + v14 = v3 + 2; + v15 = 0; + a1[3] = v14; + if ( v5 == 116 ) + { + v15 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65); + if ( !*(_BYTE *)(a1[3] + 1) ) + goto LABEL_15; + } + else if ( !v14[1] ) + { + goto LABEL_15; + } + v16 = d_exprlist(); + v7 = d_make_comp(a1, 49, (int)v15, v16); + goto LABEL_27; + } + break; + } + v6 = d_operator_name(a1); + v7 = v6; + if ( !v6 ) + goto LABEL_32; + v8 = *v6; + if ( v8 != 50 ) + { + if ( v8 == 52 ) + { + v38 = (_BYTE *)a1[3]; + if ( *v38 != 95 ) + goto LABEL_80; + a1[3] = v38 + 1; + v32 = (int *)d_exprlist(); + } + else + { + if ( v8 != 51 ) + goto LABEL_15; + v9 = v7[2]; + if ( v9 > 1 ) + goto LABEL_15; + if ( !v9 ) + goto LABEL_13; + if ( v9 != 1 ) + goto LABEL_15; +LABEL_80: + v32 = (int *)d_expression_1(); + } +LABEL_78: + v7 = d_make_comp(a1, 55, (int)v7, (int)v32); + goto LABEL_27; + } + v21 = (char **)v7[2]; + v22 = *v21; + a1[11] += v21[2] - 2; + v23 = (unsigned __int8)*v22; + if ( v23 == 115 && v22[1] == 116 && !v22[2] ) + { + v32 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65); + goto LABEL_78; + } + v24 = (int)v21[3]; + v61 = v24; + if ( v24 == 1 ) + { + v37 = *v22; + if ( (*v22 == 112 || v37 == 109) && v37 == v22[1] ) + { + v39 = (_BYTE *)a1[3]; + if ( *v39 == 95 ) + { + v61 = 0; + a1[3] = v39 + 1; + v23 = (unsigned __int8)*v22; + } + } + else + { + v61 = 0; + } + if ( v23 == 115 && v22[1] == 80 && !v22[2] ) + v32 = d_template_args_1(a1); + else + v32 = (int *)d_expression_1(); + if ( v61 ) + v32 = d_make_comp(a1, 57, (int)v32, (int)v32); + goto LABEL_78; + } + if ( v24 <= 1 ) + { + if ( v24 ) + goto LABEL_15; +LABEL_13: + v7 = d_make_comp(a1, 54, (int)v7, 0); + goto LABEL_27; + } + if ( v24 != 2 ) + { + if ( v24 != 3 ) + goto LABEL_15; + if ( v23 == 113 && v22[1] == 117 && !v22[2] ) + { + v40 = (_DWORD *)d_expression_1(); +LABEL_91: + v61 = (int)v40; + v62 = d_expression_1(); + v30 = d_expression_1(); + v27 = (int *)v62; + if ( !v30 ) + goto LABEL_15; + } + else + { + if ( *v22 == 102 ) + { + v40 = d_operator_name(a1); + goto LABEL_91; + } + if ( *v22 != 110 ) + goto LABEL_15; + v25 = v22[1]; + if ( v25 != 119 && v25 != 97 ) + goto LABEL_15; + v26 = d_exprlist(); + v27 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v26, v62, v63, v64, v65); + v28 = (char *)a1[3]; + v29 = *v28; + if ( *v28 == 69 ) + { + a1[3] = v28 + 1; + v30 = 0; + } + else if ( v29 == 112 ) + { + if ( v28[1] != 105 ) + goto LABEL_15; + v62 = (int)v27; + a1[3] = v28 + 2; + v30 = d_exprlist(); + v27 = (int *)v62; + } + else + { + if ( v29 != 105 || v28[1] != 108 ) + goto LABEL_15; + v62 = (int)v27; + v30 = d_expression_1(); + v27 = (int *)v62; + } + } + v41 = d_make_comp(a1, 60, (int)v27, v30); + v42 = d_make_comp(a1, 59, v61, (int)v41); + v7 = d_make_comp(a1, 58, (int)v7, (int)v42); + goto LABEL_27; + } + v44 = *(char **)v7[2]; + if ( v44[1] == 99 && ((v51 = *v44, (unsigned __int8)(v51 - 114) <= 1u) || (unsigned __int8)(v51 - 99) <= 1u) ) + { + v52 = d_type((int)a1, v54, v56, v57, v58, v59, v60, 2, (int)v22, v63, v64, v65); + v46 = (unsigned __int8 *)v62; + v61 = (int)v52; + } + else + { + v62 = (int)v22; + if ( *v22 == 102 ) + v45 = d_operator_name(a1); + else + v45 = (_DWORD *)d_expression_1(); + v46 = (unsigned __int8 *)v62; + v61 = (int)v45; + } + v47 = *v46; + if ( v47 == 99 && v46[1] == 108 && !v46[2] ) + { + v48 = (_DWORD *)d_exprlist(); + } + else if ( v47 == 100 && v46[1] == 116 && !v46[2] || v47 == 112 && v46[1] == 116 && !v46[2] ) + { + v48 = d_unqualified_name(a1); + v49 = (_BYTE *)a1[3]; + if ( *v49 == 73 ) + { + v62 = (int)v48; + a1[3] = v49 + 1; + v53 = d_template_args_1(a1); + v48 = d_make_comp(a1, 4, v62, (int)v53); + } + } + else + { + v48 = (_DWORD *)d_expression_1(); + } + v50 = d_make_comp(a1, 57, v61, (int)v48); + v7 = d_make_comp(a1, 56, (int)v7, (int)v50); +LABEL_27: + a1[12] = v4; + if ( !v7 ) + return 0; +LABEL_20: + v66 = d_make_comp(a1, 46, (int)v7, 0); + if ( !v66 ) + return 0; + v3 = (char *)a1[3]; + if ( *v3 == HIBYTE(v60) ) + { + a1[3] = v3 + 1; + return v66; + } + } + } + a1[3] = v3 + 1; + return d_make_comp(a1, 46, 0, 0); +} +// 443EA5: variable 'v60' is possibly undefined +// 4440A4: variable 'v54' is possibly undefined +// 4440A4: variable 'v56' is possibly undefined +// 4440A4: variable 'v57' is possibly undefined +// 4440A4: variable 'v58' is possibly undefined +// 4440A4: variable 'v59' is possibly undefined +// 4440A4: variable 'v62' is possibly undefined +// 4440A4: variable 'v63' is possibly undefined +// 4440A4: variable 'v64' is possibly undefined +// 4440A4: variable 'v65' is possibly undefined +// 44412E: variable 'v61' is possibly undefined +// 4444F0: using guessed type int d_expression_1(void); + +//----- (004444F0) -------------------------------------------------------- +_DWORD *__usercall d_expression_1@(_DWORD *a1@) +{ + char *v2; // edx + char v3; // al + _DWORD *v4; // esi + _BYTE *v5; // eax + int *v7; // eax + int v8; // esi + int v9; // eax + int v10; // eax + char v11; // al + int v12; // eax + int v13; // eax + int v14; // edx + int v15; // ecx + _DWORD *v16; // eax + _BYTE *v17; // edx + int v18; // esi + int *v19; // eax + char **v20; // edx + char *v21; // edi + int v22; // eax + int v23; // ebp + _DWORD *v24; // eax + _DWORD *v25; // edi + int *v26; // ebp + _DWORD *v27; // eax + _DWORD *v28; // eax + _DWORD *v29; // eax + _DWORD *v30; // eax + int *v31; // esi + _DWORD *v32; // edi + _BYTE *v33; // eax + _DWORD *v35; // eax + _DWORD *v36; // eax + _DWORD *v37; // eax + char v38; // dl + _BYTE *v39; // edx + char *v40; // eax + int *v41; // ebp + int v42; // eax + _DWORD *v43; // edi + _DWORD *v44; // eax + unsigned __int8 v45; // al + char *v46; // eax + char v47; // dl + _BYTE *v48; // eax + _DWORD *v49; // eax + _BYTE *v50; // eax + char v51; // al + int v52; // [esp+0h] [ebp-2Ch] + _DWORD *comp; // [esp+0h] [ebp-2Ch] + int v54; // [esp+4h] [ebp-28h] + int v55; // [esp+8h] [ebp-24h] + int v56; // [esp+Ch] [ebp-20h] + int v57; // [esp+10h] [ebp-1Ch] + int v58; // [esp+14h] [ebp-18h] + int v59; // [esp+18h] [ebp-14h] + int v60; // [esp+1Ch] [ebp-10h] + int v61; // [esp+20h] [ebp-Ch] + int v62; // [esp+24h] [ebp-8h] + int v63; // [esp+28h] [ebp-4h] + + v2 = (char *)a1[3]; + v3 = *v2; + if ( *v2 == 76 ) + return d_expr_primary(a1); + if ( v3 != 84 ) + { + if ( v3 == 115 ) + { + v11 = v2[1]; + if ( v11 == 114 ) + { + a1[3] = v2 + 2; + v31 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + v32 = d_unqualified_name(a1); + v33 = (_BYTE *)a1[3]; + if ( *v33 != 73 ) + return d_make_comp(a1, 1, (int)v31, (int)v32); + a1[3] = v33 + 1; + v37 = d_template_args_1(a1); + comp = d_make_comp(a1, 4, (int)v32, (int)v37); + return d_make_comp(a1, 1, (int)v31, (int)comp); + } + if ( v11 == 112 ) + { + a1[3] = v2 + 2; + v12 = d_expression_1(); + return d_make_comp(a1, 75, v12, 0); + } + } + else if ( v3 == 102 ) + { + if ( v2[1] == 112 ) + { + a1[3] = v2 + 2; + if ( v2[2] == 84 ) + { + a1[3] = v2 + 3; + v14 = 0; + } + else + { + v13 = d_compact_number((int)a1); + v14 = v13 + 1; + if ( (v13 & 0x7FFFFFFF) == 0x7FFFFFFF ) + return 0; + } + v15 = a1[5]; + if ( v15 < a1[6] ) + { + v16 = (_DWORD *)(a1[4] + 16 * a1[5]); + v16[1] = 0; + v4 = v16; + a1[5] = v15 + 1; + *v16 = 6; + v16[2] = v14; + return v4; + } + return 0; + } + } + else + { + if ( (unsigned __int8)(v3 - 48) <= 9u ) + goto LABEL_6; + if ( v3 == 111 ) + { + if ( v2[1] == 110 ) + { + a1[3] = v2 + 2; +LABEL_6: + v4 = d_unqualified_name(a1); + if ( v4 ) + { + v5 = (_BYTE *)a1[3]; + if ( *v5 == 73 ) + { + a1[3] = v5 + 1; + v30 = d_template_args_1(a1); + return d_make_comp(a1, 4, (int)v4, (int)v30); + } + return v4; + } + return 0; + } + } + else if ( (v3 == 105 || v3 == 116) && v2[1] == 108 ) + { + v17 = v2 + 2; + v18 = 0; + a1[3] = v17; + if ( v3 == 116 ) + { + v19 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + v17 = (_BYTE *)a1[3]; + v18 = (int)v19; + } + if ( v17[1] ) + { + v35 = d_exprlist(a1, 69); + return d_make_comp(a1, 49, v18, (int)v35); + } + return 0; + } + } + v7 = d_operator_name(a1); + v8 = (int)v7; + if ( !v7 ) + return 0; + v9 = *v7; + if ( v9 != 50 ) + { + if ( v9 == 52 ) + { + v50 = (_BYTE *)a1[3]; + if ( *v50 == 95 ) + { + a1[3] = v50 + 1; + v36 = d_exprlist(a1, 69); + return d_make_comp(a1, 55, v8, (int)v36); + } + goto LABEL_58; + } + if ( v9 == 51 ) + { + v10 = *(_DWORD *)(v8 + 8); + if ( v10 <= 1 ) + { + if ( !v10 ) + return d_make_comp(a1, 54, v8, 0); + if ( v10 == 1 ) + { +LABEL_58: + v36 = (_DWORD *)d_expression_1(); + return d_make_comp(a1, 55, v8, (int)v36); + } + } + } + return 0; + } + v20 = *(char ***)(v8 + 8); + v21 = *v20; + a1[11] += v20[2] - 2; + v22 = (unsigned __int8)*v21; + if ( v22 == 115 && v21[1] == 116 && !v21[2] ) + { + v36 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + return d_make_comp(a1, 55, v8, (int)v36); + } + v23 = (int)v20[3]; + if ( v23 == 1 ) + { + v38 = *v21; + if ( (*v21 == 112 || v38 == 109) && v38 == v21[1] ) + { + v39 = (_BYTE *)a1[3]; + if ( *v39 == 95 ) + { + v23 = 0; + a1[3] = v39 + 1; + v22 = (unsigned __int8)*v21; + } + } + else + { + v23 = 0; + } + if ( v22 == 115 && v21[1] == 80 && !v21[2] ) + v36 = d_template_args_1(a1); + else + v36 = (_DWORD *)d_expression_1(); + if ( v23 ) + v36 = d_make_comp(a1, 57, (int)v36, (int)v36); + return d_make_comp(a1, 55, v8, (int)v36); + } + if ( v23 <= 1 ) + { + if ( !v23 ) + return d_make_comp(a1, 54, v8, 0); + return 0; + } + if ( v23 == 2 ) + { + v40 = **(char ***)(v8 + 8); + if ( v40[1] == 99 && ((v51 = *v40, (unsigned __int8)(v51 - 114) <= 1u) || (unsigned __int8)(v51 - 99) <= 1u) ) + { + v41 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + } + else if ( *v21 == 102 ) + { + v41 = d_operator_name(a1); + } + else + { + v41 = (int *)d_expression_1(); + } + v42 = (unsigned __int8)*v21; + if ( v42 == 99 && v21[1] == 108 && !v21[2] ) + { + v43 = d_exprlist(a1, 69); + } + else if ( v42 == 100 && v21[1] == 116 && !v21[2] || v42 == 112 && v21[1] == 116 && !v21[2] ) + { + v43 = d_unqualified_name(a1); + v48 = (_BYTE *)a1[3]; + if ( *v48 == 73 ) + { + a1[3] = v48 + 1; + v49 = d_template_args_1(a1); + v43 = d_make_comp(a1, 4, (int)v43, (int)v49); + } + } + else + { + v43 = (_DWORD *)d_expression_1(); + } + v44 = d_make_comp(a1, 57, (int)v41, (int)v43); + return d_make_comp(a1, 56, v8, (int)v44); + } + if ( v23 != 3 ) + return 0; + if ( v22 == 113 && v21[1] == 117 && !v21[2] ) + { + v24 = (_DWORD *)d_expression_1(); + } + else + { + if ( *v21 != 102 ) + { + if ( *v21 != 110 ) + return 0; + v45 = v21[1]; + if ( v45 != 119 && v45 != 97 ) + return 0; + v25 = d_exprlist(a1, 95); + v26 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + v46 = (char *)a1[3]; + v47 = *v46; + if ( *v46 == 69 ) + { + a1[3] = v46 + 1; + v27 = 0; + } + else if ( v47 == 112 ) + { + if ( v46[1] != 105 ) + return 0; + a1[3] = v46 + 2; + v27 = d_exprlist(a1, 69); + } + else + { + if ( v47 != 105 || v46[1] != 108 ) + return 0; + v27 = (_DWORD *)d_expression_1(); + } + goto LABEL_47; + } + v24 = d_operator_name(a1); + } + v25 = v24; + v26 = (int *)d_expression_1(); + v27 = (_DWORD *)d_expression_1(); + if ( !v27 ) + return 0; +LABEL_47: + v28 = d_make_comp(a1, 60, (int)v26, (int)v27); + v29 = d_make_comp(a1, 59, (int)v25, (int)v28); + return d_make_comp(a1, 58, v8, (int)v29); + } + return d_template_param(a1); +} +// 444683: variable 'v52' is possibly undefined +// 444683: variable 'v54' is possibly undefined +// 444683: variable 'v55' is possibly undefined +// 444683: variable 'v56' is possibly undefined +// 444683: variable 'v57' is possibly undefined +// 444683: variable 'v58' is possibly undefined +// 444683: variable 'v59' is possibly undefined +// 444683: variable 'v60' is possibly undefined +// 444683: variable 'v61' is possibly undefined +// 444683: variable 'v62' is possibly undefined +// 444683: variable 'v63' is possibly undefined + +//----- (00444B60) -------------------------------------------------------- +int *__usercall d_template_arg@( + _DWORD *a1@, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + int a10, + int a11, + int a12) +{ + char *v13; // edx + char v14; // al + int *result; // eax + int v16; // esi + _BYTE *v17; // edx + + v13 = (char *)a1[3]; + v14 = *v13; + if ( *v13 == 76 ) + return d_expr_primary(a1); + if ( v14 <= 76 ) + { + if ( (unsigned __int8)(v14 - 73) <= 1u ) + return d_template_args(a1); + return d_type((int)a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); + } + if ( v14 != 88 ) + return d_type((int)a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); + v16 = a1[12]; + a1[12] = 1; + a1[3] = v13 + 1; + result = d_expression_1(a1); + v17 = (_BYTE *)a1[3]; + a1[12] = v16; + if ( *v17 != 69 ) + return 0; + a1[3] = v17 + 1; + return result; +} + +//----- (00444BF0) -------------------------------------------------------- +_DWORD *__usercall d_template_args_1@(_DWORD *a1@) +{ + int v2; // edi + _BYTE *v3; // eax + int *v4; // esi + _DWORD *comp; // eax + _BYTE *v6; // eax + int v7; // ecx + int v9; // [esp+1Ch] [ebp-10h] BYREF + + v2 = a1[10]; + v3 = (_BYTE *)a1[3]; + if ( *v3 == 69 ) + { + a1[3] = v3 + 1; + return d_make_comp(a1, 47, 0, 0); + } + else + { + v9 = 0; + v4 = &v9; + do + { + v7 = d_template_arg(); + if ( !v7 ) + return 0; + comp = d_make_comp(a1, 47, v7, 0); + *v4 = (int)comp; + if ( !comp ) + return 0; + v4 = comp + 3; + v6 = (_BYTE *)a1[3]; + } + while ( *v6 != 69 ); + a1[10] = v2; + a1[3] = v6 + 1; + return (_DWORD *)v9; + } +} +// 444B60: using guessed type int d_template_arg(void); + +//----- (00444CA0) -------------------------------------------------------- +_DWORD *__usercall d_template_args@(_DWORD *a1@) +{ + _BYTE *v1; // ecx + + v1 = (_BYTE *)a1[3]; + if ( (unsigned __int8)(*v1 - 73) > 1u ) + return 0; + a1[3] = v1 + 1; + return d_template_args_1(a1); +} + +//----- (00444CD0) -------------------------------------------------------- +unsigned int *__usercall d_encoding@(int a1@, int a2@, int a3@) +{ + _BYTE *v5; // eax + unsigned int *comp; // esi + unsigned int v7; // eax + unsigned int *v8; // edx + unsigned int v9; // eax + bool v10; // cc + int v11; // ecx + char v12; // dl + int *v13; // esi + _DWORD *v14; // eax + char v15; // al + unsigned int *v16; // edx + unsigned int v17; // eax + int v18; // edx + _DWORD *v19; // eax + int v21; // eax + _BYTE *v22; // edx + _BYTE *v23; // esi + int v24; // edi + _DWORD *v25; // eax + char v26; // dl + int v27; // ebp + int v28; // edx + _DWORD *v29; // ecx + int *v30; // eax + int *v31; // eax + int *v32; // eax + int *v33; // eax + int *v34; // esi + _BYTE *v35; // eax + int *v36; // eax + int v37; // ecx + int v38; // eax + int v39; // ecx + int v40; // eax + int v41; // ecx + int v42; // eax + int *v43; // eax + int *v44; // eax + int *v45; // eax + int *v46; // eax + int *v47; // eax + unsigned int *v48; // edx + unsigned int v49; // eax + int v50; // edx + char v51; // cl + int v52; // ebp + int v53; // esi + int v54; // eax + int v55; // eax + int *v56; // eax + int v57; // eax + int v58; // [esp+0h] [ebp-2Ch] + int v59; // [esp+0h] [ebp-2Ch] + int v60; // [esp+4h] [ebp-28h] + int v61; // [esp+4h] [ebp-28h] + int v62; // [esp+8h] [ebp-24h] + int v63; // [esp+8h] [ebp-24h] + int v64; // [esp+Ch] [ebp-20h] + int v65; // [esp+Ch] [ebp-20h] + int v66; // [esp+10h] [ebp-1Ch] + int v67; // [esp+10h] [ebp-1Ch] + int v68; // [esp+14h] [ebp-18h] + int v69; // [esp+14h] [ebp-18h] + int v70; // [esp+18h] [ebp-14h] + int v71; // [esp+18h] [ebp-14h] + int v72; // [esp+1Ch] [ebp-10h] + int v73; // [esp+1Ch] [ebp-10h] + int v74; // [esp+20h] [ebp-Ch] + int v75; // [esp+20h] [ebp-Ch] + int v76; // [esp+24h] [ebp-8h] + int v77; // [esp+24h] [ebp-8h] + int v78; // [esp+28h] [ebp-4h] + int v79; // [esp+28h] [ebp-4h] + + v5 = *(_BYTE **)(a1 + 12); + if ( *v5 == 71 || *v5 == 84 ) + { + v11 = *(_DWORD *)(a1 + 44); + *(_DWORD *)(a1 + 44) = v11 + 20; + if ( *v5 == 84 ) + { + *(_DWORD *)(a1 + 12) = v5 + 1; + if ( v5[1] ) + { + *(_DWORD *)(a1 + 12) = v5 + 2; + switch ( v5[1] ) + { + case 'A': + v30 = d_template_arg((_DWORD *)a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 48, (int)v30, 0); + break; + case 'C': + v34 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + if ( d_number_isra_0((char **)(a1 + 12)) < 0 ) + return 0; + v35 = *(_BYTE **)(a1 + 12); + if ( *v35 != 95 ) + return 0; + *(_DWORD *)(a1 + 12) = v35 + 1; + v36 = d_type(a1, v59, v61, v63, v65, v67, v69, v71, v73, v75, v77, v79); + *(_DWORD *)(a1 + 44) += 5; + comp = d_make_comp((_DWORD *)a1, 11, (int)v36, (int)v34); + break; + case 'F': + v33 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 14, (int)v33, 0); + break; + case 'H': + v32 = d_name((_DWORD *)a1, v11); + comp = d_make_comp((_DWORD *)a1, 20, (int)v32, 0); + break; + case 'I': + v31 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 12, (int)v31, 0); + break; + case 'J': + v47 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 18, (int)v47, 0); + break; + case 'S': + v46 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 13, (int)v46, 0); + break; + case 'T': + *(_DWORD *)(a1 + 44) = v11 + 10; + v45 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 10, (int)v45, 0); + break; + case 'V': + *(_DWORD *)(a1 + 44) = v11 + 15; + v44 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 9, (int)v44, 0); + break; + case 'W': + v43 = d_name((_DWORD *)a1, v11); + comp = d_make_comp((_DWORD *)a1, 21, (int)v43, 0); + break; + case 'c': + if ( !d_call_offset(a1, 0) || !d_call_offset(a1, 0) ) + return 0; + v42 = d_encoding(v41, 0); + comp = d_make_comp((_DWORD *)a1, 17, v42, 0); + break; + case 'h': + if ( !d_call_offset(a1, 104) ) + return 0; + v40 = d_encoding(v39, 0); + comp = d_make_comp((_DWORD *)a1, 15, v40, 0); + break; + case 'v': + if ( !d_call_offset(a1, 118) ) + return 0; + v38 = d_encoding(v37, 0); + comp = d_make_comp((_DWORD *)a1, 16, v38, 0); + break; + default: + return 0; + } + return comp; + } + } + else + { + if ( *v5 != 71 ) + return 0; + *(_DWORD *)(a1 + 12) = v5 + 1; + if ( !v5[1] ) + return 0; + *(_DWORD *)(a1 + 12) = v5 + 2; + v12 = v5[1]; + if ( v12 == 84 ) + { + if ( v5[2] && (*(_DWORD *)(a1 + 12) = v5 + 3, v5[2] == 110) ) + { + v57 = d_encoding(v11, 0); + return d_make_comp((_DWORD *)a1, 74, v57, 0); + } + else + { + v54 = d_encoding(v11, 0); + return d_make_comp((_DWORD *)a1, 73, v54, 0); + } + } + if ( v12 > 84 ) + { + if ( v12 == 86 ) + { + v56 = d_name((_DWORD *)a1, v11); + return d_make_comp((_DWORD *)a1, 19, (int)v56, 0); + } + if ( v12 != 114 ) + return 0; + v21 = d_number_isra_0((char **)(a1 + 12)); + if ( v21 <= 1 ) + return 0; + v22 = *(_BYTE **)(a1 + 12); + if ( !*v22 ) + return 0; + v23 = v22 + 1; + *(_DWORD *)(a1 + 12) = v22 + 1; + if ( *v22 != 95 ) + return 0; + v24 = v21 - 1; + v25 = 0; + while ( 1 ) + { + if ( !*v23 ) + return 0; + if ( *v23 == 36 ) + { + v26 = v23[1]; + switch ( v26 ) + { + case 'S': + v27 = 47; + break; + case '_': + v27 = 46; + break; + case '$': + v27 = 36; + break; + default: + return 0; + } + v28 = *(_DWORD *)(a1 + 20); + v23 = (_BYTE *)(*(_DWORD *)(a1 + 12) + 2); + if ( v28 >= *(_DWORD *)(a1 + 24) ) + { + *(_DWORD *)(a1 + 12) = v23; + return 0; + } + v24 -= 2; + v29 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + v29[1] = 0; + *(_DWORD *)(a1 + 20) = v28 + 1; + *v29 = 65; + v29[2] = v27; + *(_DWORD *)(a1 + 12) = v23; + } + else + { + v50 = 0; + do + { + if ( ++v50 >= v24 ) + break; + v51 = v23[v50]; + if ( !v51 ) + break; + } + while ( v51 != 36 ); + v52 = *(_DWORD *)(a1 + 20); + if ( v52 >= *(_DWORD *)(a1 + 24) ) + { + *(_DWORD *)(a1 + 12) += v50; + return 0; + } + v24 -= v50; + v29 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + v29[1] = 0; + *(_DWORD *)(a1 + 20) = v52 + 1; + v29[2] = v23; + v53 = *(_DWORD *)(a1 + 12); + v29[1] = 0; + v23 = (_BYTE *)(v50 + v53); + *v29 = 0; + v29[3] = v50; + *(_DWORD *)(a1 + 12) = v23; + } + if ( v25 ) + { + v25 = d_make_comp((_DWORD *)a1, 64, (int)v25, (int)v29); + if ( !v25 ) + return 0; + } + else + { + v25 = v29; + } + if ( v24 <= 0 ) + return d_make_comp((_DWORD *)a1, 63, (int)v25, 0); + } + } + if ( v12 == 65 ) + { + v55 = d_encoding(v11, 0); + return d_make_comp((_DWORD *)a1, 23, v55, 0); + } + if ( v12 == 82 ) + { + v13 = d_name((_DWORD *)a1, v11); + v14 = d_number_component(a1); + return d_make_comp((_DWORD *)a1, 22, (int)v13, (int)v14); + } + } + return 0; + } + comp = (unsigned int *)d_name((_DWORD *)a1, a3); + if ( !comp ) + return 0; + if ( !a2 || (*(_BYTE *)(a1 + 8) & 1) != 0 ) + { + v15 = **(_BYTE **)(a1 + 12); + if ( !v15 || v15 == 69 ) + return comp; + v16 = comp; + while ( 1 ) + { + v17 = *v16; + if ( *v16 == 4 ) + break; + if ( *v16 > 4 ) + { + if ( v17 != 77 ) + { + if ( v17 <= 0x4D ) + { + if ( v17 - 28 > 4 ) + { +LABEL_31: + v18 = 0; + goto LABEL_32; + } + } + else if ( v17 - 79 > 1 ) + { + goto LABEL_31; + } + } + v16 = (unsigned int *)v16[2]; + } + else + { + if ( v17 != 2 ) + goto LABEL_31; + v16 = (unsigned int *)v16[3]; + } + if ( !v16 ) + goto LABEL_31; + } + v48 = (unsigned int *)v16[2]; + if ( v48 ) + { + while ( 1 ) + { + v49 = *v48; + if ( *v48 > 8 ) + break; + if ( v49 > 6 ) + goto LABEL_31; + if ( v49 - 1 <= 1 ) + { + v48 = (unsigned int *)v48[3]; + if ( v48 ) + continue; + } + goto LABEL_95; + } + v18 = v49 != 53; + } + else + { +LABEL_95: + v18 = 1; + } +LABEL_32: + v19 = d_bare_function_type((_DWORD *)a1, v18); + if ( v19 ) + { + if ( !a2 && *comp == 2 && *v19 == 41 ) + v19[2] = 0; + return d_make_comp((_DWORD *)a1, 3, (int)comp, (int)v19); + } + return 0; + } + while ( 1 ) + { + v7 = *comp; + if ( *comp == 77 ) + goto LABEL_62; + if ( *comp <= 0x4D ) + break; + if ( v7 - 79 > 1 ) + return comp; +LABEL_62: + comp = (unsigned int *)comp[2]; + } + if ( v7 - 28 <= 4 ) + goto LABEL_62; + if ( v7 == 2 ) + { + v8 = (unsigned int *)comp[3]; + v9 = *v8; + v10 = *v8 <= 0x4D; + if ( *v8 == 77 ) + goto LABEL_13; + while ( 1 ) + { + if ( v10 ) + { + if ( v9 - 28 > 4 ) + return comp; + } + else if ( v9 - 79 > 1 ) + { + return comp; + } + do + { +LABEL_13: + v8 = (unsigned int *)v8[2]; + v9 = *v8; + comp[3] = (unsigned int)v8; + v10 = v9 <= 0x4D; + } + while ( v9 == 77 ); + } + } + return comp; +} +// 444FBA: variable 'v58' is possibly undefined +// 444FBA: variable 'v60' is possibly undefined +// 444FBA: variable 'v62' is possibly undefined +// 444FBA: variable 'v64' is possibly undefined +// 444FBA: variable 'v66' is possibly undefined +// 444FBA: variable 'v68' is possibly undefined +// 444FBA: variable 'v70' is possibly undefined +// 444FBA: variable 'v72' is possibly undefined +// 444FBA: variable 'v74' is possibly undefined +// 444FBA: variable 'v76' is possibly undefined +// 444FBA: variable 'v78' is possibly undefined +// 445071: variable 'v59' is possibly undefined +// 445071: variable 'v61' is possibly undefined +// 445071: variable 'v63' is possibly undefined +// 445071: variable 'v65' is possibly undefined +// 445071: variable 'v67' is possibly undefined +// 445071: variable 'v69' is possibly undefined +// 445071: variable 'v71' is possibly undefined +// 445071: variable 'v73' is possibly undefined +// 445071: variable 'v75' is possibly undefined +// 445071: variable 'v77' is possibly undefined +// 445071: variable 'v79' is possibly undefined +// 4450AA: variable 'v37' is possibly undefined +// 4450E3: variable 'v39' is possibly undefined +// 44512A: variable 'v41' is possibly undefined + +//----- (004453C0) -------------------------------------------------------- +int *__usercall d_name@(_DWORD *a1@, int a2@) +{ + char *v3; // edx + char v4; // al + int *v5; // esi + _DWORD *v6; // eax + _DWORD *v7; // edi + _BYTE *v8; // eax + char v9; // dl + _DWORD *v10; // eax + _DWORD *v11; // esi + int **v12; // ebp + unsigned __int8 *v13; // edx + _DWORD *v14; // eax + int *v15; // edi + int v16; // ebx + _DWORD *v17; // esi + unsigned int v18; // eax + int *v19; // eax + int v20; // edx + int v21; // eax + _DWORD *v23; // eax + int v24; // edx + _DWORD *v25; // ecx + int *comp; // eax + int v27; // eax + int v28; // ecx + int v29; // ebp + _DWORD *v30; // eax + _DWORD *v31; // ecx + int v32; // edx + _DWORD *v33; // ebx + int *v34; // eax + _BYTE *v35; // eax + _DWORD *v36; // eax + int v37; // eax + int v38; // eax + int *v39; // [esp+1Ch] [ebp-30h] + _DWORD *v40; // [esp+1Ch] [ebp-30h] + int *v41; // [esp+2Ch] [ebp-20h] BYREF + + v3 = (char *)a1[3]; + v4 = *v3; + if ( *v3 == 85 ) + return d_unqualified_name(a1); + if ( v4 <= 85 ) + { + if ( v4 != 78 ) + { + if ( v4 == 83 ) + { + if ( v3[1] != 116 ) + { + v5 = d_substitution(a1, 0); + if ( *(_BYTE *)a1[3] != 73 ) + return v5; + goto LABEL_7; + } + a1[3] = v3 + 2; + v23 = d_unqualified_name(a1); + v24 = a1[5]; + if ( v24 >= a1[6] ) + { + v25 = 0; + } + else + { + v25 = (_DWORD *)(a1[4] + 16 * a1[5]); + a1[5] = v24 + 1; + v25[1] = 0; + *v25 = 0; + v25[2] = &off_5310E3; + v25[3] = 3; + } + comp = d_make_comp(a1, 1, (int)v25, (int)v23); + a1[11] += 3; + v5 = comp; + if ( *(_BYTE *)a1[3] == 73 ) + { +LABEL_39: + if ( !v5 ) + return 0; + v27 = a1[8]; + if ( v27 >= a1[9] ) + return 0; + *(_DWORD *)(a1[7] + 4 * v27) = v5; + a1[8] = v27 + 1; +LABEL_7: + v6 = d_template_args(a1); + return d_make_comp(a1, 4, (int)v5, (int)v6); + } + return v5; + } + goto LABEL_42; + } + a1[3] = v3 + 1; + v12 = d_cv_qualifiers(a1, &v41, 1); + if ( !v12 ) + return 0; + v39 = d_ref_qualifier(a1, 0); + if ( !*(_BYTE *)a1[3] ) + { +LABEL_33: + *v12 = 0; + return 0; + } + v13 = (unsigned __int8 *)a1[3]; + v14 = a1; + v15 = 0; + v16 = *v13; + v17 = v14; + while ( 1 ) + { + if ( (_BYTE)v16 == 68 ) + { + if ( (v13[1] & 0xDF) == 84 ) + v19 = (int *)d_type(); + else + v19 = d_unqualified_name(v17); +LABEL_47: + v20 = 1; + if ( v15 ) + { +LABEL_26: + v15 = d_make_comp(v17, v20, (int)v15, (int)v19); + goto LABEL_27; + } +LABEL_48: + v13 = (unsigned __int8 *)v17[3]; + v15 = v19; + goto LABEL_28; + } + v18 = v16 - 48; + if ( (unsigned __int8)(v16 - 48) > 0x1Cu ) + break; + while ( 1 ) + { + v28 = 268960767; + if ( !_bittest(&v28, v18) ) + break; +LABEL_51: + v19 = d_unqualified_name(v17); + if ( v15 ) + goto LABEL_25; + v15 = v19; +LABEL_27: + v13 = (unsigned __int8 *)v17[3]; + if ( (_BYTE)v16 == 83 ) + goto LABEL_32; +LABEL_28: + LOBYTE(v16) = *v13; + if ( *v13 != 69 ) + { + if ( !v15 ) + goto LABEL_33; + v21 = v17[8]; + if ( v21 >= v17[9] ) + goto LABEL_33; + *(_DWORD *)(v17[7] + 4 * v21) = v15; + v17[8] = v21 + 1; + goto LABEL_32; + } + v18 = 21; + } + if ( (_BYTE)v16 == 73 ) + { + if ( !v15 ) + goto LABEL_33; + v17[3] = v13 + 1; + v19 = d_template_args_1(v17); + v20 = 4; + goto LABEL_26; + } +LABEL_60: + if ( (_BYTE)v16 == 84 ) + { + v19 = d_template_param(v17); + goto LABEL_47; + } + if ( (_BYTE)v16 == 69 ) + { + *v12 = v15; + v33 = v17; + if ( v15 ) + { + if ( v39 ) + { + v34 = v41; + v41 = v39; + v39[2] = (int)v34; + } + v35 = (_BYTE *)v17[3]; + if ( *v35 == 69 ) + { + v5 = v41; + v33[3] = v35 + 1; + return v5; + } + } + return 0; + } + if ( (_BYTE)v16 != 77 || !v15 ) + goto LABEL_33; + v17[3] = ++v13; +LABEL_32: + v16 = *v13; + if ( !(_BYTE)v16 ) + goto LABEL_33; + } + if ( (unsigned __int8)(v16 - 97) > 0x19u ) + { + if ( (_BYTE)v16 == 85 ) + { + v19 = d_unqualified_name(v17); + if ( v15 ) + { +LABEL_25: + v20 = 1; + goto LABEL_26; + } + goto LABEL_48; + } + if ( (_BYTE)v16 == 83 ) + { + v19 = d_substitution(v17, 1); + if ( v15 ) + goto LABEL_25; + v13 = (unsigned __int8 *)v17[3]; + v15 = v19; + goto LABEL_32; + } + goto LABEL_60; + } + goto LABEL_51; + } + if ( v4 == 90 ) + { + a1[3] = v3 + 1; + v7 = (_DWORD *)d_encoding(a2, 0); + if ( !v7 ) + return 0; + v8 = (_BYTE *)a1[3]; + if ( *v8 != 69 ) + return 0; + a1[3] = v8 + 1; + v9 = v8[1]; + if ( v9 == 115 ) + { + a1[3] = v8 + 2; + if ( !d_discriminator((int)a1) ) + return 0; + v37 = a1[5]; + if ( v37 < a1[6] ) + { + v11 = (_DWORD *)(a1[4] + 16 * a1[5]); + a1[5] = v37 + 1; + v11[1] = 0; + *v11 = 0; + v11[2] = "string literal"; + v11[3] = 14; + goto LABEL_15; + } + } + else + { + if ( v9 != 100 ) + { + v10 = (_DWORD *)d_name(); + v11 = v10; + if ( v10 && ((*v10 - 70) & 0xFFFFFFFD) != 0 && !d_discriminator((int)a1) ) + return 0; + goto LABEL_15; + } + a1[3] = v8 + 2; + v29 = d_compact_number((int)a1); + if ( v29 < 0 ) + return 0; + v30 = (_DWORD *)d_name(); + v31 = v30; + if ( v30 ) + { + if ( ((*v30 - 70) & 0xFFFFFFFD) != 0 ) + { + v40 = v30; + v38 = d_discriminator((int)a1); + v31 = v40; + if ( !v38 ) + return 0; + } + } + v32 = a1[5]; + if ( v32 < a1[6] ) + { + v11 = (_DWORD *)(a1[4] + 16 * a1[5]); + v11[1] = 0; + a1[5] = v32 + 1; + *v11 = 71; + v11[3] = v29; + v11[2] = v31; + goto LABEL_15; + } + } + v11 = 0; +LABEL_15: + if ( *v7 == 3 ) + { + v36 = (_DWORD *)v7[3]; + if ( *v36 == 41 ) + v36[2] = 0; + } + return d_make_comp(a1, 2, (int)v7, (int)v11); + } +LABEL_42: + v5 = d_unqualified_name(a1); + if ( *(_BYTE *)a1[3] == 73 ) + goto LABEL_39; + return v5; +} +// 444CD0: using guessed type int __fastcall d_encoding(_DWORD, _DWORD); +// 4458B0: using guessed type int d_type(void); +// 5310E3: using guessed type void *off_5310E3; + +//----- (004458B0) -------------------------------------------------------- +int *__usercall d_type@( + int a1@, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + int a10, + int a11, + int a12) +{ + char *v13; // esi + int v14; // ecx + int v15; // edx + int v16; // esi + int v17; // eax + int *result; // eax + _BYTE *v19; // edx + int **v20; // esi + int *v21; // eax + int *v22; // edx + int *v23; // ecx + int v24; // edx + int v25; // eax + int v26; // edx + int v27; // ecx + int v28; // edx + int v29; // edx + char v30; // al + _BYTE *v31; // edx + int v32; // eax + int v33; // eax + int v34; // eax + int v35; // eax + _DWORD *v36; // eax + int v37; // eax + int *comp; // esi + _BYTE *v39; // eax + int v40; // eax + _BYTE *v41; // esi + int v42; // ecx + _DWORD *v43; // ecx + char *v44; // ecx + char v45; // al + char *v46; // eax + char *v47; // esi + int v48; // edx + int v49; // ebp + _DWORD *v50; // edi + char v51; // dl + int v52; // eax + int v53; // esi + int v54; // eax + int v55; // eax + int *v56; // edi + unsigned __int8 v57; // al + char *v58; // eax + char v59; // dl + int v60; // edx + int v61; // edx + int v62; // edx + int v63; // edx + int v64; // edx + int v65; // edx + _DWORD *v66; // esi + _BYTE *v67; // eax + int v68; // eax + int v69; // edx + int v70; // edx + int v71; // edx + int v72; // eax + int v73; // edx + _DWORD *v74; // eax + int v75; // esi + int v76; // eax + int v77; // ebp + int v78; // edi + _DWORD *v79; // ecx + int *v80; // edx + int v81; // eax + int v82; // edi + int v83; // eax + _DWORD *v84; // [esp+0h] [ebp-4Ch] + int v85; // [esp+1Ch] [ebp-30h] + int *v86; // [esp+2Ch] [ebp-20h] BYREF + + v13 = *(char **)(a1 + 12); + if ( next_is_type_qual_isra_0(v13) ) + { + v20 = d_cv_qualifiers((_DWORD *)a1, &v86, 0); + if ( v20 ) + { + v21 = **(_BYTE **)(a1 + 12) == 70 ? d_function_type(a1) : (int *)d_type(); + *v20 = v21; + v22 = v21; + if ( v21 ) + { + result = v86; + if ( (unsigned int)(*v22 - 31) <= 1 ) + { + v23 = (int *)v22[2]; + v22[2] = (int)v86; + v86 = *v20; + *v20 = v23; + result = v86; + } + if ( result ) + { + v24 = *(_DWORD *)(a1 + 32); + if ( v24 < *(_DWORD *)(a1 + 36) ) + { + *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v24) = result; + *(_DWORD *)(a1 + 32) = v24 + 1; + return result; + } + } + } + } + } + else + { + v15 = *v13; + switch ( (char)v15 ) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'N': + case 'Z': + result = d_name((_DWORD *)a1, v14); + v86 = result; + goto LABEL_21; + case 'A': + v44 = v13 + 1; + *(_DWORD *)(a1 + 12) = v13 + 1; + v45 = v13[1]; + if ( v45 == 95 ) + { + v50 = 0; +LABEL_57: + *(_DWORD *)(a1 + 12) = v44 + 1; + v52 = d_type(); + result = d_make_comp((_DWORD *)a1, 42, (int)v50, v52); + v86 = result; + goto LABEL_21; + } + if ( (unsigned __int8)(v45 - 48) > 9u ) + { + v75 = *(_DWORD *)(a1 + 48); + *(_DWORD *)(a1 + 48) = 1; + v76 = d_expression_1(); + *(_DWORD *)(a1 + 48) = v75; + v50 = (_DWORD *)v76; + if ( v76 ) + { + v46 = *(char **)(a1 + 12); + v51 = *v46; +LABEL_56: + v44 = v46; + if ( v51 != 95 ) + return 0; + goto LABEL_57; + } + } + else + { + v46 = v13 + 1; + do + { + v47 = v46++; + *(_DWORD *)(a1 + 12) = v46; + } + while ( (unsigned __int8)(*v46 - 48) <= 9u ); + v48 = *(_DWORD *)(a1 + 20); + v49 = v46 - v44; + if ( v48 < *(_DWORD *)(a1 + 24) ) + { + v50 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + v50[1] = 0; + *(_DWORD *)(a1 + 20) = v48 + 1; + if ( v49 > 0 ) + { + v50[1] = 0; + *v50 = 0; + v50[2] = v44; + v50[3] = v49; + v51 = v47[1]; + goto LABEL_56; + } + } + } + break; + case 'C': + *(_DWORD *)(a1 + 12) = v13 + 1; + v37 = d_type(); + result = d_make_comp((_DWORD *)a1, 37, v37, 0); + v86 = result; + goto LABEL_21; + case 'D': + *(_DWORD *)(a1 + 12) = v13 + 1; + if ( v13[1] ) + { + *(_DWORD *)(a1 + 12) = v13 + 2; + switch ( v13[1] ) + { + case 'F': + v55 = *(_DWORD *)(a1 + 20); + if ( v55 >= *(_DWORD *)(a1 + 24) ) + { + MEMORY[0] = 0; + BUG(); + } + v56 = (int *)(*(_DWORD *)(a1 + 16) + 16 * v55); + v56[1] = 0; + v86 = v56; + *(_DWORD *)(a1 + 20) = v55 + 1; + *v56 = 44; + v57 = v13[2] - 48; + *((_WORD *)v56 + 6) = v57 <= 9u; + if ( v57 <= 9u ) + { + d_number_isra_0((char **)(a1 + 12)); + v56 = v86; + } + v56[2] = d_type(); + if ( !v86[2] ) + return 0; + d_number_isra_0((char **)(a1 + 12)); + v58 = *(char **)(a1 + 12); + v59 = *v58; + if ( *v58 ) + { + *(_DWORD *)(a1 + 12) = v58 + 1; + v59 = *v58; + } + result = v86; + *((_WORD *)v86 + 7) = v59 == 115; + return result; + case 'T': + case 't': + v16 = *(_DWORD *)(a1 + 48); + *(_DWORD *)(a1 + 48) = 1; + v17 = d_expression_1(); + *(_DWORD *)(a1 + 48) = v16; + result = d_make_comp((_DWORD *)a1, 67, v17, 0); + v86 = result; + if ( !result ) + return 0; + v19 = *(_BYTE **)(a1 + 12); + if ( !*v19 ) + return 0; + *(_DWORD *)(a1 + 12) = v19 + 1; + if ( *v19 != 69 ) + return 0; + goto LABEL_22; + case 'a': + v61 = *(_DWORD *)(a1 + 20); + if ( v61 >= *(_DWORD *)(a1 + 24) ) + return 0; + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + *(_DWORD *)(a1 + 20) = v61 + 1; + result[1] = 0; + *result = 0; + result[2] = (int)"auto"; + result[3] = 4; + return result; + case 'c': + v60 = *(_DWORD *)(a1 + 20); + if ( v60 >= *(_DWORD *)(a1 + 24) ) + return 0; + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + *(_DWORD *)(a1 + 20) = v60 + 1; + result[1] = 0; + *result = 0; + result[2] = (int)"decltype(auto)"; + result[3] = 14; + return result; + case 'd': + v69 = *(_DWORD *)(a1 + 20); + if ( v69 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v69 + 1; + *result = 39; + result[2] = (int)&off_53249C; + *(_DWORD *)(a1 + 44) += 9; + return result; + case 'e': + v65 = *(_DWORD *)(a1 + 20); + if ( v65 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v65 + 1; + *result = 39; + result[2] = (int)&off_5324B0; + *(_DWORD *)(a1 + 44) += 10; + return result; + case 'f': + v63 = *(_DWORD *)(a1 + 20); + if ( v63 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v63 + 1; + *result = 39; + result[2] = (int)&off_532488; + *(_DWORD *)(a1 + 44) += 9; + return result; + case 'h': + v62 = *(_DWORD *)(a1 + 20); + if ( v62 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v62 + 1; + *result = 39; + result[2] = (int)&off_5324C4; + *(_DWORD *)(a1 + 44) += 4; + return result; + case 'i': + v73 = *(_DWORD *)(a1 + 20); + if ( v73 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v73 + 1; + *result = 39; + result[2] = (int)&off_532500; + *(_DWORD *)(a1 + 44) += 8; + return result; + case 'n': + v70 = *(_DWORD *)(a1 + 20); + if ( v70 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v70 + 1; + *result = 39; + result[2] = (int)&off_532514; + *(_DWORD *)(a1 + 44) += 17; + return result; + case 'p': + v72 = d_type(); + result = d_make_comp((_DWORD *)a1, 75, v72, 0); + v86 = result; + goto LABEL_21; + case 's': + v64 = *(_DWORD *)(a1 + 20); + if ( v64 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v64 + 1; + *result = 39; + result[2] = (int)&off_5324EC; + *(_DWORD *)(a1 + 44) += 8; + return result; + case 'u': + v71 = *(_DWORD *)(a1 + 20); + if ( v71 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v71 + 1; + *result = 39; + result[2] = (int)&off_5324D8; + *(_DWORD *)(a1 + 44) += 7; + return result; + case 'v': + if ( v13[2] == 95 ) + { + v82 = *(_DWORD *)(a1 + 48); + *(_DWORD *)(a1 + 48) = 1; + *(_DWORD *)(a1 + 12) = v13 + 3; + v83 = d_expression_1(); + *(_DWORD *)(a1 + 48) = v82; + v66 = (_DWORD *)v83; + } + else + { + v66 = d_number_component(a1); + } + if ( !v66 ) + return 0; + v67 = *(_BYTE **)(a1 + 12); + if ( *v67 != 95 ) + return 0; + *(_DWORD *)(a1 + 12) = v67 + 1; + v68 = d_type(); + result = d_make_comp((_DWORD *)a1, 45, (int)v66, v68); + v86 = result; + goto LABEL_21; + default: + return 0; + } + } + return 0; + case 'F': + result = d_function_type(a1); + v86 = result; + goto LABEL_21; + case 'G': + *(_DWORD *)(a1 + 12) = v13 + 1; + v35 = d_type(); + result = d_make_comp((_DWORD *)a1, 38, v35, 0); + v86 = result; + goto LABEL_21; + case 'M': + *(_DWORD *)(a1 + 12) = v13 + 1; + v53 = d_type(); + if ( !v53 ) + return 0; + v54 = d_type(); + if ( !v54 ) + return 0; + result = d_make_comp((_DWORD *)a1, 43, v53, v54); + v86 = result; + goto LABEL_21; + case 'O': + *(_DWORD *)(a1 + 12) = v13 + 1; + v34 = d_type(); + result = d_make_comp((_DWORD *)a1, 36, v34, 0); + v86 = result; + goto LABEL_21; + case 'P': + *(_DWORD *)(a1 + 12) = v13 + 1; + v33 = d_type(); + result = d_make_comp((_DWORD *)a1, 34, v33, 0); + v86 = result; + goto LABEL_21; + case 'R': + *(_DWORD *)(a1 + 12) = v13 + 1; + v32 = d_type(); + result = d_make_comp((_DWORD *)a1, 35, v32, 0); + v86 = result; + goto LABEL_21; + case 'S': + v30 = v13[1]; + if ( (unsigned __int8)(v30 - 48) <= 9u || v30 == 95 || (unsigned __int8)(v30 - 65) <= 0x19u ) + { + result = d_substitution((_DWORD *)a1, 0); + v31 = *(_BYTE **)(a1 + 12); + v86 = result; + if ( *v31 != 73 ) + return result; + *(_DWORD *)(a1 + 12) = v31 + 1; + v84 = d_template_args_1((_DWORD *)a1); + result = d_make_comp((_DWORD *)a1, 4, (int)v86, (int)v84); + goto LABEL_29; + } + result = d_name((_DWORD *)a1, v14); + v86 = result; + if ( !result ) + return 0; + if ( *result == 24 ) + return result; + goto LABEL_22; + case 'T': + result = d_template_param((_DWORD *)a1); + v41 = *(_BYTE **)(a1 + 12); + v86 = result; + if ( *v41 != 73 ) + goto LABEL_21; + if ( *(_DWORD *)(a1 + 52) ) + { + v77 = *(_DWORD *)(a1 + 20); + v78 = *(_DWORD *)(a1 + 32); + v85 = *(_DWORD *)(a1 + 44); + *(_DWORD *)(a1 + 12) = v41 + 1; + v79 = d_template_args_1((_DWORD *)a1); + if ( **(_BYTE **)(a1 + 12) == 73 ) + { + v80 = v86; + if ( !v86 ) + return 0; + v81 = *(_DWORD *)(a1 + 32); + if ( v81 >= *(_DWORD *)(a1 + 36) ) + return 0; + *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v81) = v86; + *(_DWORD *)(a1 + 32) = v81 + 1; + result = d_make_comp((_DWORD *)a1, 4, (int)v80, (int)v79); + v86 = result; + } + else + { + *(_DWORD *)(a1 + 12) = v41; + *(_DWORD *)(a1 + 20) = v77; + *(_DWORD *)(a1 + 44) = v85; + result = v86; + *(_DWORD *)(a1 + 32) = v78; + } + } + else + { + if ( !result ) + return 0; + v42 = *(_DWORD *)(a1 + 32); + if ( v42 >= *(_DWORD *)(a1 + 36) ) + return 0; + *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v42) = result; + *(_DWORD *)(a1 + 32) = v42 + 1; + v43 = 0; + if ( (unsigned __int8)(*v41 - 73) <= 1u ) + { + *(_DWORD *)(a1 + 12) = v41 + 1; + v43 = d_template_args_1((_DWORD *)a1); + } + result = d_make_comp((_DWORD *)a1, 4, (int)v86, (int)v43); +LABEL_29: + v86 = result; + } +LABEL_21: + if ( !result ) + return 0; +LABEL_22: + v29 = *(_DWORD *)(a1 + 32); + if ( v29 < *(_DWORD *)(a1 + 36) ) + { + *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v29) = result; + result = v86; + *(_DWORD *)(a1 + 32) = v29 + 1; + return result; + } + return 0; + case 'U': + *(_DWORD *)(a1 + 12) = v13 + 1; + v86 = d_source_name(a1); + comp = v86; + v39 = *(_BYTE **)(a1 + 12); + if ( *v39 == 73 ) + { + *(_DWORD *)(a1 + 12) = v39 + 1; + v74 = d_template_args_1((_DWORD *)a1); + comp = d_make_comp((_DWORD *)a1, 4, (int)v86, (int)v74); + } + v40 = d_type(); + result = d_make_comp((_DWORD *)a1, 33, v40, (int)comp); + v86 = result; + goto LABEL_21; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'l': + case 'm': + case 'n': + case 'o': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + v25 = 5 * v15 - 485; + v26 = *(_DWORD *)(a1 + 20); + v27 = 4 * v25 + 5448320; + if ( v26 >= *(_DWORD *)(a1 + 24) ) + d_type_cold(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * v26); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v26 + 1; + v28 = *(_DWORD *)(v27 + 4); + *result = 39; + result[2] = v27; + *(_DWORD *)(a1 + 44) += v28; + *(_DWORD *)(a1 + 12) = v13 + 1; + return result; + case 'u': + *(_DWORD *)(a1 + 12) = v13 + 1; + v36 = d_source_name(a1); + result = d_make_comp((_DWORD *)a1, 40, (int)v36, 0); + v86 = result; + goto LABEL_21; + default: + return 0; + } + } + return 0; +} +// 445A0A: variable 'v14' is possibly undefined +// 4444F0: using guessed type int d_expression_1(void); +// 532488: using guessed type char *off_532488; +// 53249C: using guessed type char *off_53249C; +// 5324B0: using guessed type char *off_5324B0; +// 5324C4: using guessed type char *off_5324C4; +// 5324D8: using guessed type char *off_5324D8; +// 5324EC: using guessed type char *off_5324EC; +// 532500: using guessed type char *off_532500; +// 532514: using guessed type char *off_532514; + +//----- (004461D0) -------------------------------------------------------- +_DWORD *__usercall d_operator_name@(_DWORD *a1@) +{ + unsigned __int8 *v2; // eax + unsigned __int8 v3; // si + unsigned __int8 v4; // bp + int v5; // edx + unsigned __int8 v6; // di + void **v7; // ebp + _BYTE *v8; // ecx + bool v9; // cc + _DWORD *result; // eax + int v11; // edx + _DWORD *v12; // eax + int v13; // edx + _DWORD *v14; // ecx + int v15; // ebx + int v16; // ecx + int v17; // [esp+18h] [ebp-24h] + _DWORD *v18; // [esp+1Ch] [ebp-20h] + + v2 = (unsigned __int8 *)a1[3]; + if ( !*v2 ) + { + v4 = 0; + v3 = 0; + goto LABEL_3; + } + a1[3] = v2 + 1; + v3 = *v2; + v4 = v2[1]; + if ( !v4 ) + { +LABEL_3: + v18 = a1; + v5 = 0; + v6 = v4; + v17 = 67; + while ( 1 ) + { + v7 = &cplus_demangle_operators + 4 * v5 + 4 * ((v17 - v5) / 2); + v8 = *v7; + v9 = *(_BYTE *)*v7 <= v3; + if ( *(_BYTE *)*v7 == v3 ) + { + v9 = v8[1] <= v6; + if ( v8[1] == v6 ) + break; + } + if ( v9 ) + v5 += (v17 - v5) / 2 + 1; + else + v17 = v5 + (v17 - v5) / 2; + if ( v5 == v17 ) + return 0; + } + v11 = v18[5]; + if ( v11 < v18[6] ) + { + result = (_DWORD *)(v18[4] + 16 * v18[5]); + result[1] = 0; + v18[5] = v11 + 1; + *result = 50; + result[2] = v7; + return result; + } + return 0; + } + a1[3] = v2 + 2; + v4 = v2[1]; + if ( v3 == 118 ) + { + if ( (unsigned __int8)(v4 - 48) > 9u ) + goto LABEL_3; + v12 = d_source_name((int)a1); + v13 = a1[5]; + v14 = v12; + if ( v13 >= a1[6] ) + return 0; + result = (_DWORD *)(a1[4] + 16 * a1[5]); + result[1] = 0; + a1[5] = v13 + 1; + if ( !v14 ) + return 0; + result[1] = 0; + *result = 51; + result[3] = v14; + result[2] = (char)v4 - 48; + } + else + { + if ( v3 != 99 || v4 != 118 ) + goto LABEL_3; + v15 = a1[13]; + a1[13] = a1[12] == 0; + v16 = d_type(); + if ( a1[13] ) + result = d_make_comp(a1, 53, v16, 0); + else + result = d_make_comp(a1, 52, v16, 0); + a1[13] = v15; + } + return result; +} +// 4458B0: using guessed type int d_type(void); +// 531D00: using guessed type void *cplus_demangle_operators; + +//----- (00446380) -------------------------------------------------------- +int __usercall d_parmlist@(_DWORD *a1@) +{ + char *v2; // ebp + char v3; // al + int *v4; // esi + _DWORD *comp; // eax + int v6; // ecx + int result; // eax + _DWORD *v8; // edx + int v9; // edx + int v10; // [esp+1Ch] [ebp-20h] BYREF + + v2 = (char *)a1[3]; + v10 = 0; + v3 = *v2; + if ( v3 == 0 || v3 == 69 ) + return 0; + v4 = &v10; + if ( v3 == 46 ) + return 0; + do + { + if ( (v3 == 82 || v3 == 79) && v2[1] == 69 ) + break; + v6 = d_type(); + if ( !v6 ) + return 0; + comp = d_make_comp(a1, 46, v6, 0); + *v4 = (int)comp; + if ( !comp ) + return 0; + v2 = (char *)a1[3]; + v4 = comp + 3; + v3 = *v2; + if ( *v2 == 69 || *v2 == 0 ) + break; + } + while ( v3 != 46 ); + result = v10; + if ( !v10 ) + return 0; + if ( !*(_DWORD *)(v10 + 12) ) + { + v8 = *(_DWORD **)(v10 + 8); + if ( *v8 == 39 ) + { + v9 = v8[2]; + if ( *(_DWORD *)(v9 + 16) == 9 ) + { + a1[11] -= *(_DWORD *)(v9 + 4); + *(_DWORD *)(result + 8) = 0; + } + } + } + return result; +} +// 4458B0: using guessed type int d_type(void); + +//----- (00446450) -------------------------------------------------------- +int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@) +{ + int **v3; // esi + char *v5; // ebp + char i; // di + char v7; // al + int v8; // edi + int v9; // eax + _BYTE *v10; // edx + int v11; // edx + _DWORD *comp; // eax + int *v14; // eax + int v15; // edx + _BYTE *v16; // edx + int **v17; // eax + int v18; // [esp+1Ch] [ebp-30h] + int v19; // [esp+20h] [ebp-2Ch] + int v20; // [esp+24h] [ebp-28h] + char v21; // [esp+28h] [ebp-24h] + + v3 = a2; + v21 = a3; + v20 = a3 == 0 ? 27 : 30; + v19 = a3 == 0 ? 26 : 29; + v18 = a3 == 0 ? 25 : 28; + v5 = (char *)a1[3]; + for ( i = *v5; next_is_type_qual_isra_0(v5); i = *v5 ) + { + a1[3] = v5 + 1; + switch ( i ) + { + case 'r': + a1[11] += 9; + v11 = v18; + v9 = 0; + break; + case 'V': + a1[11] += 9; + v11 = v19; + v9 = 0; + break; + case 'K': + a1[11] += 6; + v11 = v20; + v9 = 0; + break; + default: + if ( !v5[1] ) + return 0; + a1[3] = v5 + 2; + v7 = v5[1]; + if ( v7 == 120 ) + { + a1[11] += 17; + v9 = 0; + v11 = 77; + } + else if ( (v7 & 0xDF) == 79 ) + { + a1[11] += 9; + if ( v7 == 79 ) + { + v8 = a1[12]; + a1[12] = 1; + v9 = d_expression_1(); + a1[12] = v8; + if ( !v9 ) + return 0; + v10 = (_BYTE *)a1[3]; + if ( *v10 != 69 ) + return 0; + a1[3] = v10 + 1; + v11 = 79; + } + else + { + v9 = 0; + v11 = 79; + } + } + else + { + if ( v7 != 119 ) + return 0; + a1[11] += 6; + v9 = d_parmlist(a1); + if ( !v9 ) + return 0; + v16 = (_BYTE *)a1[3]; + if ( *v16 != 69 ) + return 0; + a1[3] = v16 + 1; + v11 = 80; + } + break; + } + comp = d_make_comp(a1, v11, 0, v9); + *v3 = comp; + if ( !comp ) + return 0; + v5 = (char *)a1[3]; + v3 = (int **)(comp + 2); + } + if ( (v21 & 1) == 0 && i == 70 && v3 != a2 ) + { + v14 = *a2; + v15 = **a2; + if ( v15 != 26 ) + goto LABEL_34; +LABEL_21: + *v14 = 29; + while ( 1 ) + { + v17 = (int **)(v14 + 2); + if ( v3 == v17 ) + break; + v14 = *v17; + v15 = *v14; + if ( *v14 == 26 ) + goto LABEL_21; +LABEL_34: + if ( v15 == 27 ) + { + *v14 = 30; + } + else if ( v15 == 25 ) + { + *v14 = 28; + } + } + } + return v3; +} +// 4444F0: using guessed type int d_expression_1(void); + +//----- (00446670) -------------------------------------------------------- +_DWORD *__usercall d_bare_function_type@(_DWORD *a1@, int a2@) +{ + _BYTE *v3; // eax + int v4; // esi + int v5; // eax + + v3 = (_BYTE *)a1[3]; + if ( *v3 == 74 ) + { + a1[3] = v3 + 1; + goto LABEL_3; + } + if ( a2 ) + { +LABEL_3: + v4 = d_type(); + if ( v4 ) + { + v5 = d_parmlist(a1); + if ( v5 ) + return d_make_comp(a1, 41, v4, v5); + } + return 0; + } + v4 = 0; + v5 = d_parmlist(a1); + if ( v5 ) + return d_make_comp(a1, 41, v4, v5); + return 0; +} +// 4458B0: using guessed type int d_type(void); + +//----- (004466E0) -------------------------------------------------------- +_DWORD *__usercall d_function_type@(int a1@) +{ + unsigned int v2; // ecx + _BYTE *v3; // edx + _DWORD *result; // eax + _DWORD *v5; // eax + _BYTE *v6; // edx + + if ( (*(_BYTE *)(a1 + 10) & 4) != 0 ) + { + v3 = *(_BYTE **)(a1 + 12); + if ( *v3 == 70 ) + goto LABEL_8; + return 0; + } + v2 = *(_DWORD *)(a1 + 56); + if ( v2 > 0x800 ) + return 0; + v3 = *(_BYTE **)(a1 + 12); + *(_DWORD *)(a1 + 56) = v2 + 1; + result = 0; + if ( *v3 != 70 ) + { +LABEL_4: + *(_DWORD *)(a1 + 56) = v2; + return result; + } +LABEL_8: + *(_DWORD *)(a1 + 12) = v3 + 1; + if ( v3[1] == 89 ) + *(_DWORD *)(a1 + 12) = v3 + 2; + v5 = d_bare_function_type((_DWORD *)a1, 1); + result = d_ref_qualifier((_DWORD *)a1, v5); + v6 = *(_BYTE **)(a1 + 12); + if ( *v6 == 69 ) + *(_DWORD *)(a1 + 12) = v6 + 1; + else + result = 0; + if ( (*(_BYTE *)(a1 + 10) & 4) == 0 ) + { + v2 = *(_DWORD *)(a1 + 56) - 1; + goto LABEL_4; + } + return result; +} + +//----- (00446770) -------------------------------------------------------- +_DWORD *__usercall d_unqualified_name@(_DWORD *a1@) +{ + char *v2; // edx + char v3; // cl + _DWORD *v4; // eax + _DWORD *comp; // esi + char v6; // al + char v8; // al + int v9; // eax + int v10; // edx + char *v11; // edx + int v12; // eax + int v13; // eax + int v14; // edx + _BYTE *v15; // eax + _DWORD *v16; // eax + _DWORD *v17; // edi + int v18; // ebp + int v19; // ecx + _DWORD *v20; // eax + int v21; // edi + char *v22; // edx + int v23; // eax + int v24; // edx + char *v25; // ecx + int v26; // eax + int v27; // eax + int v28; // ebp + int v29; // edx + int v30; // eax + char *v31; // eax + int v32; // eax + + v2 = (char *)a1[3]; + v3 = *v2; + if ( (unsigned __int8)(*v2 - 48) <= 9u ) + { + comp = d_source_name((int)a1); + if ( *(_BYTE *)a1[3] != 66 ) + return comp; + return d_abi_tags(a1, comp); + } + if ( (unsigned __int8)(v3 - 97) <= 0x19u ) + { + if ( v3 == 111 && v2[1] == 110 ) + a1[3] = v2 + 2; + v4 = d_operator_name(a1); + comp = v4; + if ( v4 ) + { + if ( *v4 == 50 ) + { + v13 = v4[2]; + v14 = *(_DWORD *)(v13 + 8); + v15 = *(_BYTE **)v13; + a1[11] += v14 + 7; + if ( *v15 == 108 && v15[1] == 105 && !v15[2] ) + { + v16 = d_source_name((int)a1); + comp = d_make_comp(a1, 55, (int)comp, (int)v16); + } + } + } + goto LABEL_6; + } + if ( (unsigned __int8)(v3 - 67) <= 1u ) + { + v17 = (_DWORD *)a1[10]; + if ( v17 && (!*v17 || *v17 == 24) ) + { + a1[11] += v17[3]; + v6 = *v2; + v3 = *v2; + if ( *v2 != 67 ) + { + if ( v6 != 68 ) + { + comp = 0; + goto LABEL_7; + } + goto LABEL_34; + } + } + else if ( v3 != 67 ) + { +LABEL_34: + switch ( v2[1] ) + { + case '0': + v18 = 1; + goto LABEL_39; + case '1': + v18 = 2; + goto LABEL_39; + case '2': + v18 = 3; + goto LABEL_39; + case '4': + v18 = 4; + goto LABEL_39; + case '5': + v18 = 5; +LABEL_39: + v19 = a1[5]; + a1[3] = v2 + 2; + if ( v19 < a1[6] && (v20 = (_DWORD *)(a1[4] + 16 * v19), v20[1] = 0, comp = v20, a1[5] = v19 + 1, v17) ) + { + v20[1] = 0; + *v20 = 8; + v20[2] = v18; + v20[3] = v17; + v6 = v2[2]; + } + else + { + v6 = v2[2]; + comp = 0; + } + break; + default: + v6 = v3; + comp = 0; + break; + } +LABEL_7: + if ( v6 != 66 ) + return comp; + return d_abi_tags(a1, comp); + } + v27 = v2[1]; + if ( (_BYTE)v27 == 73 ) + { + a1[3] = v2 + 1; + v32 = v2[2]; + if ( (unsigned __int8)(v32 - 49) > 4u ) + { + v6 = v2[1]; + comp = 0; + goto LABEL_7; + } + v28 = v32 - 48; + a1[3] = v2 + 3; + d_type(); + v17 = (_DWORD *)a1[10]; + } + else + { + if ( (unsigned __int8)(v27 - 49) > 4u ) + return 0; + v28 = v27 - 48; + a1[3] = v2 + 2; + } + v29 = a1[5]; + if ( v29 < a1[6] ) + { + v30 = a1[4] + 16 * a1[5]; + *(_DWORD *)(v30 + 4) = 0; + comp = (_DWORD *)v30; + v31 = (char *)a1[3]; + a1[5] = v29 + 1; + if ( v17 ) + { + comp[1] = 0; + *comp = 7; + comp[2] = v28; + comp[3] = v17; + v6 = *v31; + goto LABEL_7; + } + goto LABEL_61; + } + goto LABEL_60; + } + if ( v3 == 76 ) + { + a1[3] = v2 + 1; + comp = d_source_name((int)a1); + if ( comp && d_discriminator((int)a1) ) + goto LABEL_6; + return 0; + } + if ( v3 != 85 ) + return 0; + v8 = v2[1]; + if ( v8 == 108 ) + { + comp = 0; + a1[3] = v2 + 1; + v6 = v2[1]; + if ( v6 != 108 ) + goto LABEL_7; + a1[3] = v2 + 2; + v21 = d_parmlist(a1); + if ( !v21 ) + goto LABEL_6; + v22 = (char *)a1[3]; + v6 = *v22; + if ( *v22 != 69 ) + goto LABEL_7; + a1[3] = v22 + 1; + v23 = d_compact_number((int)a1); + if ( v23 >= 0 ) + { + v24 = a1[5]; + v25 = (char *)a1[3]; + if ( v24 >= a1[6] + || (comp = (_DWORD *)(a1[4] + 16 * a1[5]), + comp[1] = 0, + a1[5] = v24 + 1, + comp[3] = v23, + v26 = a1[8], + *comp = 70, + comp[2] = v21, + v26 >= a1[9]) ) + { + v6 = *v25; + comp = 0; + } + else + { + *(_DWORD *)(a1[7] + 4 * v26) = comp; + a1[8] = v26 + 1; + v6 = *v25; + } + goto LABEL_7; + } +LABEL_60: + v31 = (char *)a1[3]; +LABEL_61: + v6 = *v31; + comp = 0; + goto LABEL_7; + } + if ( v8 == 116 ) + { + comp = 0; + a1[3] = v2 + 1; + v6 = v2[1]; + if ( v6 != 116 ) + goto LABEL_7; + a1[3] = v2 + 2; + v9 = d_compact_number((int)a1); + if ( v9 >= 0 ) + { + v10 = a1[5]; + if ( v10 < a1[6] ) + { + comp = (_DWORD *)(a1[4] + 16 * v10); + comp[1] = 0; + a1[5] = v10 + 1; + v11 = (char *)a1[3]; + comp[2] = v9; + v12 = a1[8]; + *comp = 72; + if ( v12 >= a1[9] ) + { + v6 = *v11; + comp = 0; + } + else + { + *(_DWORD *)(a1[7] + 4 * v12) = comp; + a1[8] = v12 + 1; + v6 = *v11; + } + goto LABEL_7; + } + goto LABEL_60; + } +LABEL_6: + v6 = *(_BYTE *)a1[3]; + goto LABEL_7; + } + return 0; +} +// 4458B0: using guessed type int d_type(void); + +//----- (00446B80) -------------------------------------------------------- +_DWORD *__usercall d_expr_primary@(_DWORD *a1@) +{ + _BYTE *v2; // eax + _BYTE *v3; // edx + int v4; // ecx + int *v5; // eax + char *v6; // ebp + int v7; // edi + char v8; // cl + char *v9; // edx + char *v10; // esi + _DWORD *result; // eax + int v12; // esi + int v13; // ecx + _DWORD *v14; // edx + int v15; // edx + int v16; // [esp+0h] [ebp-2Ch] + int v17; // [esp+4h] [ebp-28h] + int v18; // [esp+8h] [ebp-24h] + int v19; // [esp+Ch] [ebp-20h] + int v20; // [esp+10h] [ebp-1Ch] + int v21; // [esp+14h] [ebp-18h] + int v22; // [esp+18h] [ebp-14h] + int v23; // [esp+1Ch] [ebp-10h] + int v24; // [esp+20h] [ebp-Ch] + int v25; // [esp+24h] [ebp-8h] + int v26; // [esp+28h] [ebp-4h] + + v2 = (_BYTE *)a1[3]; + if ( *v2 != 76 ) + return 0; + v3 = v2 + 1; + a1[3] = v2 + 1; + v4 = (unsigned __int8)v2[1]; + if ( (_BYTE)v4 == 95 ) + { + v3 = v2 + 2; + a1[3] = v2 + 2; + v4 = (unsigned __int8)v2[2]; + if ( (_BYTE)v4 != 90 ) + { + result = 0; + goto LABEL_14; + } +LABEL_13: + a1[3] = v3 + 1; + result = (_DWORD *)d_encoding(v4, 0); + v3 = (_BYTE *)a1[3]; + LOBYTE(v4) = *v3; + goto LABEL_14; + } + if ( (_BYTE)v4 == 90 ) + goto LABEL_13; + v5 = d_type((int)a1, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); + if ( !v5 ) + return 0; + if ( *v5 == 39 ) + { + v15 = v5[2]; + if ( *(_DWORD *)(v15 + 16) ) + a1[11] -= *(_DWORD *)(v15 + 4); + } + v6 = (char *)a1[3]; + v7 = 61; + v8 = *v6; + if ( *v6 == 110 ) + { + v7 = 62; + a1[3] = v6 + 1; + v8 = *++v6; + } + if ( v8 != 69 ) + { + v9 = v6 + 1; + while ( v8 ) + { + a1[3] = v9; + v10 = v9; + v8 = *v9++; + if ( v8 == 69 ) + { + v12 = v10 - v6; + goto LABEL_19; + } + } + return 0; + } + v12 = 0; +LABEL_19: + v13 = a1[5]; + if ( v13 >= a1[6] || (v14 = (_DWORD *)(a1[4] + 16 * a1[5]), v14[1] = 0, a1[5] = v13 + 1, v12 <= 0) ) + { + v14 = 0; + } + else + { + v14[1] = 0; + *v14 = 0; + v14[2] = v6; + v14[3] = v12; + } + result = d_make_comp(a1, v7, (int)v5, (int)v14); + v3 = (_BYTE *)a1[3]; + LOBYTE(v4) = *v3; +LABEL_14: + if ( (_BYTE)v4 != 69 ) + return 0; + a1[3] = v3 + 1; + return result; +} +// 446BAB: variable 'v16' is possibly undefined +// 446BAB: variable 'v17' is possibly undefined +// 446BAB: variable 'v18' is possibly undefined +// 446BAB: variable 'v19' is possibly undefined +// 446BAB: variable 'v20' is possibly undefined +// 446BAB: variable 'v21' is possibly undefined +// 446BAB: variable 'v22' is possibly undefined +// 446BAB: variable 'v23' is possibly undefined +// 446BAB: variable 'v24' is possibly undefined +// 446BAB: variable 'v25' is possibly undefined +// 446BAB: variable 'v26' is possibly undefined +// 444CD0: using guessed type int __fastcall d_encoding(_DWORD, _DWORD); + +//----- (00446CD0) -------------------------------------------------------- +int __usercall d_print_comp@(int result@, int a2@, int *a3@) +{ + int v3; // ebx + int v4; // ebp + int v5; // edx + int v6; // edi + int v7; // edi + int v8; // ecx + int v9; // ecx + char *v10; // eax + int v11; // eax + int v12; // eax + int v13; // ecx + int v14; // esi + const char *Str1; // edi + int v16; // eax + int v17; // eax + int v18; // eax + int v19; // eax + _DWORD *v20; // eax + int v21; // ecx + int v22; // eax + int **v23; // esi + int **v24; // eax + int v25; // edx + int v26; // eax + int v27; // eax + int *v28; // esi + _DWORD *v29; // ecx + unsigned int v30; // esi + int v31; // eax + int v32; // eax + int v33; // eax + int v34; // ecx + unsigned int v35; // esi + const char *v36; // edi + char i13; // dl + unsigned int v38; // eax + int v39; // eax + int v40; // eax + int v41; // ecx + int v42; // edi + int v43; // eax + _DWORD *v44; // esi + unsigned int v45; // edi + _DWORD *v46; // ecx + char *v47; // esi + int v48; // eax + _DWORD *v49; // eax + unsigned int v50; // edx + char *v51; // ecx + char *v52; // esi + _DWORD *v53; // ecx + int v54; // esi + int v55; // edi + char *v56; // esi + int v57; // eax + char *v58; // edi + int v59; // ecx + char v60; // dl + int v61; // eax + int **v62; // esi + int v63; // edi + int v64; // ecx + int v65; // ecx + int v66; // eax + int v67; // edx + int v68; // eax + const char *v69; // esi + char i12; // cl + int v71; // edx + int v72; // eax + int v73; // edi + int v74; // eax + int v75; // eax + int v76; // eax + int v77; // eax + int v78; // eax + const char *v79; // esi + char i16; // dl + int v81; // ecx + int v82; // eax + int v83; // eax + const char *v84; // esi + char i15; // dl + int v86; // ecx + int v87; // eax + int v88; // ecx + int v89; // esi + int v90; // eax + int v91; // eax + int i24; // eax + int v93; // eax + int v94; // eax + const char *v95; // esi + char i14; // dl + int v97; // ecx + int v98; // eax + const char *v99; // esi + char v100; // dl + int v101; // eax + int v102; // ecx + int v103; // eax + _DWORD *v104; // eax + int v105; // edx + int v106; // eax + const char *v107; // esi + char i28; // dl + int v109; // ecx + int v110; // eax + int v111; // eax + const char *v112; // esi + char i27; // dl + int v114; // ecx + int v115; // eax + int v116; // eax + const char *v117; // esi + char i26; // dl + int v119; // ecx + int v120; // eax + int v121; // eax + const char *v122; // esi + char i25; // dl + int v124; // ecx + int v125; // eax + int v126; // edi + char *v127; // esi + int v128; // eax + char *v129; // edi + int v130; // ecx + char v131; // dl + int v132; // eax + int v133; // eax + const char *v134; // esi + char i10; // dl + int v136; // ecx + int v137; // eax + int v138; // eax + const char *v139; // esi + char i8; // dl + int v141; // ecx + int v142; // eax + int v143; // eax + const char *v144; // esi + char i7; // dl + int v146; // ecx + int v147; // eax + int v148; // eax + const char *v149; // esi + char i5; // dl + int v151; // ecx + int v152; // eax + int v153; // eax + const char *v154; // esi + char i6; // dl + int v156; // ecx + int v157; // eax + int v158; // eax + const char *v159; // esi + char i4; // dl + int v161; // ecx + int v162; // eax + int v163; // eax + const char *v164; // esi + char i3; // dl + int v166; // ecx + int v167; // eax + int v168; // eax + const char *v169; // esi + char i1; // dl + int v171; // ecx + int v172; // eax + int v173; // eax + const char *v174; // esi + char i2; // dl + int v176; // ecx + int v177; // eax + int v178; // eax + const char *v179; // esi + char nn; // dl + int v181; // ecx + int v182; // eax + int v183; // eax + const char *v184; // esi + char mm; // dl + int v186; // ecx + int v187; // eax + int v188; // eax + const char *v189; // esi + char ii; // dl + int v191; // ecx + int v192; // eax + int v193; // eax + const char *v194; // esi + char kk; // dl + int v196; // ecx + int v197; // eax + int v198; // eax + const char *v199; // esi + char n; // dl + int v201; // ecx + int v202; // eax + int v203; // eax + const char *v204; // esi + char m; // dl + int v206; // ecx + int v207; // eax + int v208; // eax + const char *v209; // esi + char j; // dl + int v211; // ecx + int v212; // eax + int v213; // eax + int v214; // eax + char *v215; // edi + int v216; // ecx + char *v217; // esi + int v218; // eax + char *v219; // edi + int v220; // ecx + char v221; // dl + int v222; // eax + const char *v223; // esi + int v224; // eax + char i30; // dl + int v226; // ecx + int v227; // eax + const char *v228; // esi + int v229; // eax + char i29; // dl + int v231; // ecx + int v232; // eax + int v233; // eax + const char *v234; // esi + char i; // cl + int v236; // edx + int v237; // eax + int v238; // esi + int v239; // edi + char *v240; // ecx + int v241; // eax + int v242; // eax + int v243; // eax + int v244; // eax + int v245; // eax + int v246; // edi + int v247; // eax + char *v248; // eax + int v249; // edx + char *v250; // ecx + char *v251; // esi + unsigned int v252; // ecx + char *v253; // eax + unsigned int v254; // ecx + char *v255; // esi + int v256; // edx + int v257; // edx + _DWORD *v258; // ecx + char *v259; // kr0C_4 + char *v260; // esi + int v261; // eax + int v262; // ecx + char v263; // dl + int v264; // eax + int v265; // eax + const char *v266; // esi + char i23; // dl + int v268; // ecx + int v269; // eax + int v270; // eax + const char *v271; // esi + char i21; // dl + int v273; // ecx + int v274; // eax + int v275; // eax + const char *v276; // esi + char i22; // dl + int v278; // ecx + int v279; // eax + int v280; // eax + const char *v281; // esi + char i20; // dl + int v283; // ecx + int v284; // eax + int v285; // eax + int v286; // eax + const char *v287; // esi + char i19; // dl + int v289; // ecx + int v290; // eax + int v291; // esi + int v292; // edi + int v293; // eax + int v294; // eax + int v295; // eax + int v296; // eax + int v297; // eax + char *v298; // esi + int v299; // eax + int v300; // eax + int v301; // edi + int v302; // eax + char *v303; // edi + int v304; // ecx + char v305; // dl + int v306; // eax + int v307; // ecx + const char *v308; // esi + int v309; // eax + char v310; // dl + int v311; // ecx + int v312; // eax + char *v313; // kr10_4 + char *v314; // esi + int v315; // ecx + char v316; // dl + int v317; // eax + int v318; // eax + int v319; // eax + int v320; // eax + int v321; // eax + int v322; // edx + _DWORD *v323; // ecx + int v324; // eax + const char *v325; // esi + int v326; // eax + char jj; // dl + int v328; // ecx + int v329; // eax + const char *v330; // esi + int v331; // eax + char i9; // dl + int v333; // ecx + int v334; // eax + char *v335; // kr14_4 + char *v336; // esi + int v337; // ecx + char v338; // dl + int v339; // eax + int v340; // eax + int v341; // eax + int v342; // edi + int v343; // eax + _DWORD *v344; // eax + _DWORD *v345; // esi + int v346; // eax + int v347; // edi + char *v348; // kr18_4 + char *v349; // esi + int v350; // eax + int v351; // ecx + char v352; // dl + int v353; // eax + unsigned int v354; // esi + unsigned int v355; // edx + int v356; // ecx + int v357; // edx + char v358; // al + char *v359; // ebp + int v360; // edx + int v361; // edx + const char *v362; // esi + char k; // cl + int v364; // edx + int v365; // eax + char *v366; // kr1C_4 + char *v367; // esi + int v368; // eax + int v369; // ecx + char v370; // dl + int v371; // eax + int v372; // eax + int v373; // eax + int v374; // eax + const char *v375; // esi + char i11; // cl + int v377; // edx + int v378; // eax + int v379; // edi + char *v380; // esi + int v381; // eax + char *v382; // edi + int v383; // ecx + char v384; // dl + int v385; // eax + int v386; // eax + int v387; // eax + int v388; // eax + int v389; // eax + int v390; // eax + int v391; // eax + int v392; // eax + int v393; // eax + _DWORD *v394; // eax + int v395; // eax + const char *v396; // esi + int v397; // ecx + char v398; // dl + int v399; // eax + int v400; // eax + const char *v401; // esi + int v402; // ecx + char v403; // dl + int v404; // eax + int v405; // edx + int v406; // eax + int v407; // ecx + int v408; // ecx + int v409; // edi + int v410; // eax + _DWORD *v411; // eax + int i18; // edx + int v413; // eax + int v414; // eax + int v415; // eax + int v416; // eax + int v417; // eax + int v418; // eax + int v419; // eax + int v420; // eax + int v421; // eax + bool v422; // zf + int v423; // eax + int v424; // ecx + int v425; // eax + char v426; // al + int v427; // eax + int v428; // eax + int v429; // eax + int v430; // eax + int v431; // eax + const char *v432; // edi + int v433; // ecx + char v434; // dl + int v435; // eax + unsigned int v436; // kr04_4 + int v437; // eax + char *v438; // edi + int v439; // ecx + char v440; // dl + int v441; // eax + int v442; // eax + const char *v443; // edi + int v444; // ecx + char v445; // dl + int v446; // eax + _DWORD *v447; // eax + int v448; // edi + int v449; // edx + int *v450; // edx + int v451; // edi + int v452; // edx + _DWORD *v453; // eax + int v454; // edx + int v455; // eax + int v456; // edi + int v457; // eax + _DWORD *v458; // esi + int v459; // eax + _DWORD *v460; // edi + char *v461; // esi + unsigned int v462; // kr08_4 + int v463; // edx + char v464; // cl + int v465; // eax + int v466; // eax + char v467; // al + int v468; // eax + int v469; // eax + const char *v470; // esi + int v471; // edx + char v472; // cl + int v473; // eax + int v474; // eax + int v475; // eax + int v476; // eax + _DWORD *v477; // esi + _DWORD *v478; // eax + int *i31; // edi + int v480; // eax + int v481; // edx + int v482; // eax + int v483; // eax + int v484; // eax + int v485; // eax + int v486; // eax + int v487; // edx + int v488; // eax + int v489; // eax + int v490; // eax + int v491; // eax + int v492; // eax + int v493; // eax + int v494; // eax + int v495; // eax + _DWORD *pack; // eax + int i17; // ecx + char *v498; // esi + unsigned int v499; // kr0C_4 + char v500; // di + int v501; // eax + int v502; // eax + int v503; // eax + int v504; // eax + int v505; // eax + int v506; // eax + int v507; // eax + int v508; // eax + int v509; // eax + int v510; // eax + int v511; // eax + int v512; // eax + char *Str2; // [esp+4h] [ebp-98h] + char v515; // [esp+18h] [ebp-84h] + char v516; // [esp+18h] [ebp-84h] + char v517; // [esp+18h] [ebp-84h] + char v518; // [esp+18h] [ebp-84h] + char v519; // [esp+18h] [ebp-84h] + char v520; // [esp+18h] [ebp-84h] + char v521; // [esp+18h] [ebp-84h] + char v522; // [esp+18h] [ebp-84h] + char v523; // [esp+18h] [ebp-84h] + char v524; // [esp+18h] [ebp-84h] + char v525; // [esp+18h] [ebp-84h] + char v526; // [esp+18h] [ebp-84h] + char v527; // [esp+18h] [ebp-84h] + char v528; // [esp+18h] [ebp-84h] + char v529; // [esp+18h] [ebp-84h] + unsigned int v530; // [esp+18h] [ebp-84h] + char v531; // [esp+18h] [ebp-84h] + char v532; // [esp+18h] [ebp-84h] + char v533; // [esp+18h] [ebp-84h] + char v534; // [esp+18h] [ebp-84h] + char v535; // [esp+18h] [ebp-84h] + char *v536; // [esp+1Ch] [ebp-80h] + char v537; // [esp+1Ch] [ebp-80h] + char v538; // [esp+1Ch] [ebp-80h] + char v539; // [esp+1Ch] [ebp-80h] + char v540; // [esp+1Ch] [ebp-80h] + char *v541; // [esp+1Ch] [ebp-80h] + char v542; // [esp+1Ch] [ebp-80h] + char v543; // [esp+1Ch] [ebp-80h] + char v544; // [esp+1Ch] [ebp-80h] + char v545; // [esp+1Ch] [ebp-80h] + char v546; // [esp+1Ch] [ebp-80h] + char v547; // [esp+1Ch] [ebp-80h] + char v548; // [esp+1Ch] [ebp-80h] + char v549; // [esp+1Ch] [ebp-80h] + char v550; // [esp+1Ch] [ebp-80h] + char v551; // [esp+1Ch] [ebp-80h] + char v552; // [esp+1Ch] [ebp-80h] + char v553; // [esp+1Ch] [ebp-80h] + char v554; // [esp+1Ch] [ebp-80h] + char v555; // [esp+1Ch] [ebp-80h] + char v556; // [esp+1Ch] [ebp-80h] + char v557; // [esp+1Ch] [ebp-80h] + char v558; // [esp+1Ch] [ebp-80h] + char v559; // [esp+1Ch] [ebp-80h] + char *v560; // [esp+1Ch] [ebp-80h] + char v561; // [esp+1Ch] [ebp-80h] + char v562; // [esp+1Ch] [ebp-80h] + char v563; // [esp+1Ch] [ebp-80h] + char v564; // [esp+1Ch] [ebp-80h] + char v565; // [esp+1Ch] [ebp-80h] + char v566; // [esp+1Ch] [ebp-80h] + char v567; // [esp+1Ch] [ebp-80h] + char v568; // [esp+1Ch] [ebp-80h] + char v569; // [esp+1Ch] [ebp-80h] + char *v570; // [esp+1Ch] [ebp-80h] + char v571; // [esp+1Ch] [ebp-80h] + char v572; // [esp+1Ch] [ebp-80h] + char *v573; // [esp+1Ch] [ebp-80h] + char v574; // [esp+1Ch] [ebp-80h] + char v575; // [esp+1Ch] [ebp-80h] + char *v576; // [esp+1Ch] [ebp-80h] + char v577; // [esp+1Ch] [ebp-80h] + char *v578; // [esp+1Ch] [ebp-80h] + unsigned int v579; // [esp+20h] [ebp-7Ch] + _DWORD *v580; // [esp+20h] [ebp-7Ch] + int v581; // [esp+20h] [ebp-7Ch] + int v582; // [esp+20h] [ebp-7Ch] + unsigned int *v583; // [esp+20h] [ebp-7Ch] + char v584; // [esp+20h] [ebp-7Ch] + int v585; // [esp+20h] [ebp-7Ch] + int v586; // [esp+24h] [ebp-78h] + _DWORD *v587; // [esp+24h] [ebp-78h] + int v588; // [esp+24h] [ebp-78h] + int v589; // [esp+24h] [ebp-78h] + int v590; // [esp+28h] [ebp-74h] + int v591; // [esp+28h] [ebp-74h] + int v592; // [esp+2Ch] [ebp-70h] + int *v593; // [esp+30h] [ebp-6Ch] BYREF + char *v594; // [esp+34h] [ebp-68h] + int v595[2]; // [esp+38h] [ebp-64h] BYREF + char Buffer[4]; // [esp+40h] [ebp-5Ch] BYREF + _DWORD *v597; // [esp+44h] [ebp-58h] + int v598; // [esp+48h] [ebp-54h] + int v599; // [esp+4Ch] [ebp-50h] + char v600; // [esp+50h] [ebp-4Ch] BYREF + + v3 = result; + if ( !a3 || (result = a3[1], v4 = (int)a3, result > 1) || (v5 = *(_DWORD *)(v3 + 284), v5 > 1024) ) + { + *(_DWORD *)(v3 + 280) = 1; + return result; + } + v6 = *(_DWORD *)(v3 + 300); + v593 = a3; + a3[1] = result + 1; + v536 = (char *)v6; + v594 = (char *)v6; + v7 = *(_DWORD *)(v3 + 280); + *(_DWORD *)(v3 + 284) = v5 + 1; + *(_DWORD *)(v3 + 300) = &v593; + if ( v7 ) + goto LABEL_21; + v8 = *a3; + v579 = *(_DWORD *)v4; + switch ( *(_DWORD *)v4 ) + { + case 0: + v215 = *(char **)(v4 + 8); + if ( (a2 & 4) != 0 ) + { + v354 = (unsigned int)&v215[*(_DWORD *)(v4 + 12)]; + if ( v354 <= (unsigned int)v215 ) + goto LABEL_21; + v570 = (char *)v4; +LABEL_506: + v358 = *v215; + if ( (int)(v354 - (_DWORD)v215) <= 3 ) + goto LABEL_502; + if ( v358 != 95 ) + goto LABEL_502; + if ( v215[1] != 95 ) + goto LABEL_502; + if ( v215[2] != 85 ) + goto LABEL_502; + v359 = v215 + 3; + if ( v354 <= (unsigned int)(v215 + 3) ) + goto LABEL_502; + v530 = v579; + while ( 1 ) + { + v361 = *v359; + if ( (unsigned __int8)(v361 - 48) <= 9u ) + { + v360 = v361 - 48; + } + else if ( (unsigned __int8)(v361 - 65) > 5u ) + { + if ( (unsigned __int8)(v361 - 97) > 5u ) + { + if ( v354 > (unsigned int)v359 && v530 <= 0xFF && (_BYTE)v361 == 95 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v511 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v511); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v512 = *(_DWORD *)(v3 + 256); + v215 = v359; + *(_DWORD *)(v3 + 256) = v512 + 1; + *(_BYTE *)(v3 + v512) = v530; + *(_BYTE *)(v3 + 260) = v530; + goto LABEL_505; + } +LABEL_502: + v355 = *(_DWORD *)(v3 + 256); + v356 = v355 + 1; + if ( v355 == 255 ) + { + v357 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v529 = v358; + (*(void (__thiscall **)(int, int, int, int))(v3 + 264))(v356, v3, 255, v357); + v355 = v579; + v358 = v529; + v356 = 1; + ++*(_DWORD *)(v3 + 296); + } + *(_DWORD *)(v3 + 256) = v356; + *(_BYTE *)(v3 + v355) = v358; + *(_BYTE *)(v3 + 260) = v358; +LABEL_505: + if ( v354 <= (unsigned int)++v215 ) + { + v4 = (int)v570; + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + goto LABEL_506; + } + v360 = v361 - 87; + } + else + { + v360 = v361 - 55; + } + ++v359; + v530 = v360 + 16 * v530; + if ( (char *)v354 == v359 ) + goto LABEL_502; + } + } + v216 = *(_DWORD *)(v4 + 12); + if ( v216 ) + { + v217 = *(char **)(v4 + 8); + v218 = *(_DWORD *)(v3 + 256); + v219 = &v215[v216]; + do + { + v221 = *v217; + if ( v218 == 255 ) + { + v222 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v521 = v221; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v222); + v220 = v579; + v221 = v521; + v218 = 1; + ++*(_DWORD *)(v3 + 296); + } + else + { + v220 = v218++; + } + ++v217; + *(_DWORD *)(v3 + 256) = v218; + *(_BYTE *)(v3 + v220) = v221; + *(_BYTE *)(v3 + 260) = v221; + } + while ( v219 != v217 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 1: + case 2: + d_print_comp(*(_DWORD *)(v4 + 8), a2); + if ( (a2 & 4) != 0 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v26 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v26); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v27 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v27 + 1; + *(_BYTE *)(v3 + v27) = 46; + *(_BYTE *)(v3 + 260) = 46; + } + else + { + v395 = *(_DWORD *)(v3 + 256); + v396 = "::"; + do + { + v398 = *v396; + if ( v395 == 255 ) + { + v399 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v571 = v398; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v399); + ++*(_DWORD *)(v3 + 296); + v398 = v571; + v397 = 0; + v395 = 1; + } + else + { + v397 = v395++; + } + ++v396; + *(_DWORD *)(v3 + 256) = v395; + *(_BYTE *)(v3 + v397) = v398; + *(_BYTE *)(v3 + 260) = v398; + } + while ( v396 != "" ); + } + v28 = *(int **)(v4 + 12); + if ( *v28 == 71 ) + { + v431 = *(_DWORD *)(v3 + 256); + v432 = "{default arg#"; + do + { + v434 = *v432; + if ( v431 == 255 ) + { + v435 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v574 = v434; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v435); + ++*(_DWORD *)(v3 + 296); + v434 = v574; + v433 = 0; + v431 = 1; + } + else + { + v433 = v431++; + } + *(_DWORD *)(v3 + 256) = v431; + ++v432; + *(_BYTE *)(v3 + v433) = v434; + *(_BYTE *)(v3 + 260) = v434; + } + while ( v432 != "" ); + sprintf(Buffer, "%d", v28[3] + 1); + v436 = strlen(Buffer) + 1; + if ( v436 != 1 ) + { + v437 = *(_DWORD *)(v3 + 256); + v438 = Buffer; + do + { + v440 = *v438; + if ( v437 == 255 ) + { + v441 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v584 = v440; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v441); + ++*(_DWORD *)(v3 + 296); + v440 = v584; + v439 = 0; + v437 = 1; + } + else + { + v439 = v437++; + } + *(_DWORD *)(v3 + 256) = v437; + ++v438; + *(_BYTE *)(v3 + v439) = v440; + *(_BYTE *)(v3 + 260) = v440; + } + while ( &Buffer[v436 - 1] != v438 ); + } + v442 = *(_DWORD *)(v3 + 256); + v443 = "}::"; + do + { + v445 = *v443; + if ( v442 == 255 ) + { + v446 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v575 = v445; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v446); + ++*(_DWORD *)(v3 + 296); + v445 = v575; + v444 = 0; + v442 = 1; + } + else + { + v444 = v442++; + } + *(_DWORD *)(v3 + 256) = v442; + ++v443; + *(_BYTE *)(v3 + v444) = v445; + *(_BYTE *)(v3 + 260) = v445; + } + while ( v443 != "" ); + v28 = (int *)v28[2]; + } + goto LABEL_604; + case 3: + v247 = *(_DWORD *)(v3 + 276); + *(_DWORD *)(v3 + 276) = 0; + v590 = v247; + v583 = *(unsigned int **)(v4 + 8); + if ( !v583 ) + goto LABEL_684; + v248 = Buffer; + v589 = 0; + v249 = *(_DWORD *)(v3 + 272); + v250 = 0; + while ( 2 ) + { + *(_DWORD *)v248 = v250; + v251 = v248; + *((_DWORD *)v248 + 2) = 0; + v252 = *v583; + ++v589; + *((_DWORD *)v248 + 1) = v583; + *((_DWORD *)v248 + 3) = v249; + if ( v252 == 77 ) + goto LABEL_485; + if ( v252 > 0x4D ) + { + if ( v252 - 79 > 1 ) + { + *(_DWORD *)(v3 + 276) = v248; +LABEL_337: + if ( *v583 == 4 ) + { + v595[0] = v249; + *(_DWORD *)(v3 + 272) = v595; + v595[1] = (int)v583; + } +LABEL_339: + d_print_comp(*(_DWORD *)(v4 + 12), a2); + if ( *v583 == 4 ) + *(_DWORD *)(v3 + 272) = v595[0]; + v255 = &Buffer[16 * v589]; + do + { + if ( !*((_DWORD *)v255 - 2) ) + { + v256 = *(_DWORD *)(v3 + 256); + if ( v256 == 255 ) + { + v257 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v257); + ++*(_DWORD *)(v3 + 296); + v256 = 0; + } + *(_DWORD *)(v3 + 256) = v256 + 1; + v258 = (_DWORD *)*((_DWORD *)v255 - 3); + *(_BYTE *)(v3 + v256) = 32; + *(_BYTE *)(v3 + 260) = 32; + d_print_mod(v3, a2, v258); + } + v255 -= 16; + } + while ( Buffer != v255 ); + *(_DWORD *)(v3 + 276) = v590; + goto LABEL_348; + } + } + else if ( v252 - 28 > 4 ) + { + *(_DWORD *)(v3 + 276) = v248; + if ( v252 == 2 ) + { + v583 = (unsigned int *)v583[3]; + if ( *v583 != 71 || (v583 = (unsigned int *)v583[2]) != 0 ) + { + v253 = &Buffer[16 * v589]; + while ( 1 ) + { + v254 = *v583; + if ( *v583 != 77 ) + { + if ( *v583 > 0x4D ) + { + if ( v254 - 79 > 1 ) + goto LABEL_339; + } + else if ( v254 - 28 > 4 ) + { + goto LABEL_337; + } + } + if ( v589 == 4 ) + break; + *(_DWORD *)(v3 + 276) = v253; + qmemcpy(v253, v253 - 16, 0x10u); + *((_DWORD *)v253 - 2) = 0; + *(_DWORD *)v253 = v253 - 16; + v253 += 16; + *((_DWORD *)v253 - 7) = v583; + *((_DWORD *)v253 - 5) = v249; + ++v589; + v583 = (unsigned int *)v583[2]; + } + } +LABEL_684: + *(_DWORD *)(v3 + 280) = 1; + goto LABEL_348; + } + goto LABEL_337; + } +LABEL_485: + v583 = (unsigned int *)v583[2]; + if ( !v583 ) + { + *(_DWORD *)(v3 + 276) = v248; + goto LABEL_684; + } + v248 += 16; + if ( v589 != 4 ) + { + v250 = v251; + continue; + } + break; + } + *(_DWORD *)(v3 + 276) = v251; + *(_DWORD *)(v3 + 280) = 1; +LABEL_348: + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 4: + v238 = *(_DWORD *)(v3 + 328); + v239 = *(_DWORD *)(v3 + 276); + *(_DWORD *)(v3 + 328) = v4; + *(_DWORD *)(v3 + 276) = 0; + v240 = *(char **)(v4 + 8); + if ( (a2 & 4) == 0 + || *(_DWORD *)v240 + || *((_DWORD *)v240 + 3) != 6 + || (v578 = *(char **)(v4 + 8), v482 = strncmp(*((const char **)v240 + 2), "JArray", 6u), v240 = v578, v482) ) + { + d_print_comp(v240, a2); + if ( *(_BYTE *)(v3 + 260) == 60 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v392 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v392); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v393 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v393 + 1; + *(_BYTE *)(v3 + v393) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + v241 = *(_DWORD *)(v3 + 256); + if ( v241 == 255 ) + { + v242 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v242); + ++*(_DWORD *)(v3 + 296); + v241 = 0; + } + *(_DWORD *)(v3 + 256) = v241 + 1; + *(_BYTE *)(v3 + v241) = 60; + *(_BYTE *)(v3 + 260) = 60; + d_print_comp(*(_DWORD *)(v4 + 12), a2); + if ( *(_BYTE *)(v3 + 260) == 62 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v390 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v390); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v391 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v391 + 1; + *(_BYTE *)(v3 + v391) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + v243 = *(_DWORD *)(v3 + 256); + if ( v243 == 255 ) + { + v244 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v244); + ++*(_DWORD *)(v3 + 296); + v243 = 0; + } + *(_DWORD *)(v3 + 256) = v243 + 1; + *(_BYTE *)(v3 + v243) = 62; + *(_BYTE *)(v3 + 260) = 62; + } + else + { + d_print_comp(*(_DWORD *)(v4 + 12), a2); + d_append_buffer(v3, "[]", 2); + } + v245 = (int)v594; + *(_DWORD *)(v3 + 276) = v239; + v246 = *(_DWORD *)(v3 + 284); + *(_DWORD *)(v3 + 328) = v238; + v536 = (char *)v245; + v5 = v246 - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 5: + if ( *(_DWORD *)(v3 + 288) ) + { + v233 = *(_DWORD *)(v3 + 256); + v234 = "auto:"; + for ( i = 97; ; i = *v234 ) + { + if ( v233 == 255 ) + { + v237 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v522 = i; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v237); + ++*(_DWORD *)(v3 + 296); + i = v522; + v236 = 0; + v233 = 1; + } + else + { + v236 = v233++; + } + ++v234; + *(_DWORD *)(v3 + 256) = v233; + *(_BYTE *)(v3 + v236) = i; + *(_BYTE *)(v3 + 260) = i; + if ( v234 == "" ) + break; + } + sprintf(Buffer, "%d", *(_DWORD *)(v4 + 8) + 1); + v348 = &Buffer[strlen(Buffer)]; + if ( v348 != Buffer ) + { + v349 = Buffer; + v350 = *(_DWORD *)(v3 + 256); + do + { + v352 = *v349; + if ( v350 == 255 ) + { + v353 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v528 = v352; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v353); + ++*(_DWORD *)(v3 + 296); + v352 = v528; + v351 = 0; + v350 = 1; + } + else + { + v351 = v350++; + } + ++v349; + *(_DWORD *)(v3 + 256) = v350; + *(_BYTE *)(v3 + v351) = v352; + *(_BYTE *)(v3 + 260) = v352; + } + while ( v348 != v349 ); + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v344 = d_lookup_template_argument_isra_0(v3, (int *)(v4 + 8)); + if ( v344 ) + { + if ( *v344 != 47 + || (v454 = *(_DWORD *)(v3 + 292), v454 < 0) + || (v344 = d_index_template_argument_part_0(v344, v454)) != 0 ) + { + v345 = *(_DWORD **)(v3 + 272); + *(_DWORD *)(v3 + 272) = *v345; + d_print_comp(v344, a2); + v346 = (int)v594; + v347 = *(_DWORD *)(v3 + 284); + *(_DWORD *)(v3 + 272) = v345; + v536 = (char *)v346; + v5 = v347 - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + goto LABEL_679; + case 6: + v560 = *(char **)(v4 + 8); + v208 = *(_DWORD *)(v3 + 256); + if ( v560 ) + { + v209 = "parm#"; + for ( j = 123; ; j = *v209++ ) + { + if ( v208 == 255 ) + { + v212 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v520 = j; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v212); + ++*(_DWORD *)(v3 + 296); + j = v520; + v211 = 0; + v208 = 1; + } + else + { + v211 = v208++; + } + *(_DWORD *)(v3 + 256) = v208; + *(_BYTE *)(v3 + v211) = j; + *(_BYTE *)(v3 + 260) = j; + if ( v209 == "" ) + break; + } + sprintf(Buffer, "%d", v560); + v366 = &Buffer[strlen(Buffer)]; + if ( v366 != Buffer ) + { + v367 = Buffer; + v368 = *(_DWORD *)(v3 + 256); + do + { + v370 = *v367; + if ( v368 == 255 ) + { + v371 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v532 = v370; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v371); + ++*(_DWORD *)(v3 + 296); + v370 = v532; + v369 = 0; + v368 = 1; + } + else + { + v369 = v368++; + } + ++v367; + *(_DWORD *)(v3 + 256) = v368; + *(_BYTE *)(v3 + v369) = v370; + *(_BYTE *)(v3 + 260) = v370; + } + while ( v366 != v367 ); + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v372 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v372); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v373 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v373 + 1; + *(_BYTE *)(v3 + v373) = 125; + v374 = (int)v594; + *(_BYTE *)(v3 + 260) = 125; + v536 = (char *)v374; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + v362 = "this"; + for ( k = 116; ; k = *v362 ) + { + if ( v208 == 255 ) + { + v365 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v531 = k; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v365); + ++*(_DWORD *)(v3 + 296); + k = v531; + v364 = 0; + v208 = 1; + } + else + { + v364 = v208++; + } + ++v362; + *(_DWORD *)(v3 + 256) = v208; + *(_BYTE *)(v3 + v364) = k; + *(_BYTE *)(v3 + 260) = k; + if ( v362 == "" ) + break; + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 7: + goto LABEL_47; + case 8: + v213 = *(_DWORD *)(v3 + 256); + if ( v213 == 255 ) + { + v214 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v214); + ++*(_DWORD *)(v3 + 296); + v213 = 0; + } + *(_DWORD *)(v3 + 256) = v213 + 1; + *(_BYTE *)(v3 + v213) = 126; + *(_BYTE *)(v3 + 260) = 126; + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 9: + v203 = *(_DWORD *)(v3 + 256); + v204 = "table for "; + for ( m = 118; ; m = *v204++ ) + { + if ( v203 == 255 ) + { + v207 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v559 = m; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v207); + ++*(_DWORD *)(v3 + 296); + m = v559; + v206 = 0; + v203 = 1; + } + else + { + v206 = v203++; + } + *(_DWORD *)(v3 + 256) = v203; + *(_BYTE *)(v3 + v206) = m; + *(_BYTE *)(v3 + 260) = m; + if ( v204 == "" ) + break; + } + goto LABEL_427; + case 0xA: + v198 = *(_DWORD *)(v3 + 256); + v199 = "TT for "; + for ( n = 86; ; n = *v199++ ) + { + if ( v198 == 255 ) + { + v202 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v558 = n; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v202); + ++*(_DWORD *)(v3 + 296); + n = v558; + v201 = 0; + v198 = 1; + } + else + { + v201 = v198++; + } + *(_DWORD *)(v3 + 256) = v198; + *(_BYTE *)(v3 + v201) = n; + *(_BYTE *)(v3 + 260) = n; + if ( v199 == "" ) + break; + } + goto LABEL_427; + case 0xB: + v188 = *(_DWORD *)(v3 + 256); + v189 = "onstruction vtable for "; + for ( ii = 99; ; ii = *v189++ ) + { + if ( v188 == 255 ) + { + v192 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v556 = ii; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v192); + ++*(_DWORD *)(v3 + 296); + ii = v556; + v191 = 0; + v188 = 1; + } + else + { + v191 = v188++; + } + *(_DWORD *)(v3 + 256) = v188; + *(_BYTE *)(v3 + v191) = ii; + *(_BYTE *)(v3 + 260) = ii; + if ( v189 == "" ) + break; + } + v325 = "-in-"; + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v326 = *(_DWORD *)(v3 + 256); + for ( jj = 45; ; jj = *v325 ) + { + if ( v326 == 255 ) + { + v329 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v568 = jj; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v329); + ++*(_DWORD *)(v3 + 296); + jj = v568; + v328 = 0; + v326 = 1; + } + else + { + v328 = v326++; + } + ++v325; + *(_DWORD *)(v3 + 256) = v326; + *(_BYTE *)(v3 + v328) = jj; + *(_BYTE *)(v3 + 260) = jj; + if ( v325 == "" ) + break; + } + goto LABEL_47; + case 0xC: + v193 = *(_DWORD *)(v3 + 256); + v194 = "ypeinfo for "; + for ( kk = 116; ; kk = *v194++ ) + { + if ( v193 == 255 ) + { + v197 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v557 = kk; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v197); + ++*(_DWORD *)(v3 + 296); + kk = v557; + v196 = 0; + v193 = 1; + } + else + { + v196 = v193++; + } + *(_DWORD *)(v3 + 256) = v193; + *(_BYTE *)(v3 + v196) = kk; + *(_BYTE *)(v3 + 260) = kk; + if ( v194 == "" ) + break; + } + goto LABEL_427; + case 0xD: + v183 = *(_DWORD *)(v3 + 256); + v184 = "ypeinfo name for "; + for ( mm = 116; ; mm = *v184++ ) + { + if ( v183 == 255 ) + { + v187 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v555 = mm; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v187); + ++*(_DWORD *)(v3 + 296); + mm = v555; + v186 = 0; + v183 = 1; + } + else + { + v186 = v183++; + } + *(_DWORD *)(v3 + 256) = v183; + *(_BYTE *)(v3 + v186) = mm; + *(_BYTE *)(v3 + 260) = mm; + if ( v184 == "" ) + break; + } + goto LABEL_427; + case 0xE: + v178 = *(_DWORD *)(v3 + 256); + v179 = "ypeinfo fn for "; + for ( nn = 116; ; nn = *v179++ ) + { + if ( v178 == 255 ) + { + v182 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v554 = nn; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v182); + ++*(_DWORD *)(v3 + 296); + nn = v554; + v181 = 0; + v178 = 1; + } + else + { + v181 = v178++; + } + *(_DWORD *)(v3 + 256) = v178; + *(_BYTE *)(v3 + v181) = nn; + *(_BYTE *)(v3 + 260) = nn; + if ( v179 == "" ) + break; + } + goto LABEL_427; + case 0xF: + v168 = *(_DWORD *)(v3 + 256); + v169 = "on-virtual thunk to "; + for ( i1 = 110; ; i1 = *v169++ ) + { + if ( v168 == 255 ) + { + v172 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v552 = i1; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v172); + ++*(_DWORD *)(v3 + 296); + i1 = v552; + v171 = 0; + v168 = 1; + } + else + { + v171 = v168++; + } + *(_DWORD *)(v3 + 256) = v168; + *(_BYTE *)(v3 + v171) = i1; + *(_BYTE *)(v3 + 260) = i1; + if ( v169 == "" ) + break; + } + goto LABEL_427; + case 0x10: + v173 = *(_DWORD *)(v3 + 256); + v174 = "irtual thunk to "; + for ( i2 = 118; ; i2 = *v174++ ) + { + if ( v173 == 255 ) + { + v177 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v553 = i2; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v177); + ++*(_DWORD *)(v3 + 296); + i2 = v553; + v176 = 0; + v173 = 1; + } + else + { + v176 = v173++; + } + *(_DWORD *)(v3 + 256) = v173; + *(_BYTE *)(v3 + v176) = i2; + *(_BYTE *)(v3 + 260) = i2; + if ( v174 == "" ) + break; + } + goto LABEL_427; + case 0x11: + v163 = *(_DWORD *)(v3 + 256); + v164 = "ovariant return thunk to "; + for ( i3 = 99; ; i3 = *v164++ ) + { + if ( v163 == 255 ) + { + v167 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v551 = i3; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v167); + ++*(_DWORD *)(v3 + 296); + i3 = v551; + v166 = 0; + v163 = 1; + } + else + { + v166 = v163++; + } + *(_DWORD *)(v3 + 256) = v163; + *(_BYTE *)(v3 + v166) = i3; + *(_BYTE *)(v3 + 260) = i3; + if ( v164 == "" ) + break; + } + goto LABEL_427; + case 0x12: + v158 = *(_DWORD *)(v3 + 256); + v159 = "ava Class for "; + for ( i4 = 106; ; i4 = *v159++ ) + { + if ( v158 == 255 ) + { + v162 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v550 = i4; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v162); + ++*(_DWORD *)(v3 + 296); + i4 = v550; + v161 = 0; + v158 = 1; + } + else + { + v161 = v158++; + } + *(_DWORD *)(v3 + 256) = v158; + *(_BYTE *)(v3 + v161) = i4; + *(_BYTE *)(v3 + 260) = i4; + if ( v159 == "" ) + break; + } + goto LABEL_427; + case 0x13: + v148 = *(_DWORD *)(v3 + 256); + v149 = "uard variable for "; + for ( i5 = 103; ; i5 = *v149++ ) + { + if ( v148 == 255 ) + { + v152 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v548 = i5; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v152); + ++*(_DWORD *)(v3 + 296); + i5 = v548; + v151 = 0; + v148 = 1; + } + else + { + v151 = v148++; + } + *(_DWORD *)(v3 + 256) = v148; + *(_BYTE *)(v3 + v151) = i5; + *(_BYTE *)(v3 + 260) = i5; + if ( v149 == "" ) + break; + } + goto LABEL_427; + case 0x14: + v153 = *(_DWORD *)(v3 + 256); + v154 = "LS init function for "; + for ( i6 = 84; ; i6 = *v154++ ) + { + if ( v153 == 255 ) + { + v157 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v549 = i6; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v157); + ++*(_DWORD *)(v3 + 296); + i6 = v549; + v156 = 0; + v153 = 1; + } + else + { + v156 = v153++; + } + *(_DWORD *)(v3 + 256) = v153; + *(_BYTE *)(v3 + v156) = i6; + *(_BYTE *)(v3 + 260) = i6; + if ( v154 == "" ) + break; + } + goto LABEL_427; + case 0x15: + v143 = *(_DWORD *)(v3 + 256); + v144 = "LS wrapper function for "; + for ( i7 = 84; ; i7 = *v144++ ) + { + if ( v143 == 255 ) + { + v147 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v547 = i7; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v147); + ++*(_DWORD *)(v3 + 296); + i7 = v547; + v146 = 0; + v143 = 1; + } + else + { + v146 = v143++; + } + *(_DWORD *)(v3 + 256) = v143; + *(_BYTE *)(v3 + v146) = i7; + *(_BYTE *)(v3 + 260) = i7; + if ( v144 == "" ) + break; + } + goto LABEL_427; + case 0x16: + v138 = *(_DWORD *)(v3 + 256); + v139 = "eference temporary #"; + for ( i8 = 114; ; i8 = *v139++ ) + { + if ( v138 == 255 ) + { + v142 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v546 = i8; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v142); + ++*(_DWORD *)(v3 + 296); + i8 = v546; + v141 = 0; + v138 = 1; + } + else + { + v141 = v138++; + } + *(_DWORD *)(v3 + 256) = v138; + *(_BYTE *)(v3 + v141) = i8; + *(_BYTE *)(v3 + 260) = i8; + if ( v139 == "" ) + break; + } + v330 = " for "; + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v331 = *(_DWORD *)(v3 + 256); + for ( i9 = 32; ; i9 = *v330 ) + { + if ( v331 == 255 ) + { + v334 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v569 = i9; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v334); + ++*(_DWORD *)(v3 + 296); + i9 = v569; + v333 = 0; + v331 = 1; + } + else + { + v333 = v331++; + } + ++v330; + *(_DWORD *)(v3 + 256) = v331; + *(_BYTE *)(v3 + v333) = i9; + *(_BYTE *)(v3 + 260) = i9; + if ( v330 == "" ) + break; + } + goto LABEL_427; + case 0x17: + v133 = *(_DWORD *)(v3 + 256); + v134 = "idden alias for "; + for ( i10 = 104; ; i10 = *v134++ ) + { + if ( v133 == 255 ) + { + v137 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v545 = i10; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v137); + ++*(_DWORD *)(v3 + 296); + i10 = v545; + v136 = 0; + v133 = 1; + } + else + { + v136 = v133++; + } + *(_DWORD *)(v3 + 256) = v133; + *(_BYTE *)(v3 + v136) = i10; + *(_BYTE *)(v3 + 260) = i10; + if ( v134 == "" ) + break; + } + goto LABEL_427; + case 0x18: + v126 = *(_DWORD *)(v4 + 12); + v127 = *(char **)(v4 + 8); + if ( v126 ) + { + v128 = *(_DWORD *)(v3 + 256); + v129 = &v127[v126]; + do + { + v131 = *v127; + if ( v128 == 255 ) + { + v132 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v519 = v131; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v132); + ++*(_DWORD *)(v3 + 296); + v131 = v519; + v130 = 0; + v128 = 1; + } + else + { + v130 = v128++; + } + ++v127; + *(_DWORD *)(v3 + 256) = v128; + *(_BYTE *)(v3 + v130) = v131; + *(_BYTE *)(v3 + 260) = v131; + } + while ( v129 != v127 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x19: + case 0x1A: + case 0x1B: + v23 = *(int ***)(v3 + 276); + v24 = v23; + if ( !v23 ) + goto LABEL_633; + while ( 2 ) + { + if ( v24[2] ) + goto LABEL_33; + v25 = *v24[1]; + if ( (unsigned int)(v25 - 25) > 2 ) + { + v23 = *(int ***)(v3 + 276); + v7 = 0; +LABEL_633: + v580 = (_DWORD *)v4; + goto LABEL_70; + } + if ( v579 != v25 ) + { +LABEL_33: + v24 = (int **)*v24; + if ( !v24 ) + { + v580 = (_DWORD *)v4; + v23 = *(int ***)(v3 + 276); + goto LABEL_70; + } + continue; + } + break; + } +LABEL_427: + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x25: + case 0x26: + case 0x4D: + case 0x4F: + case 0x50: + v21 = 0; + goto LABEL_23; + case 0x23: + case 0x24: + v580 = *(_DWORD **)(v4 + 8); + v43 = *v580; + if ( *(_DWORD *)(v3 + 288) ) + goto LABEL_65; + v7 = 0; + if ( v43 != 5 ) + goto LABEL_65; + v447 = *(_DWORD **)(v3 + 304); + v448 = *(_DWORD *)(v3 + 308); + if ( v448 <= 0 ) + goto LABEL_706; + v592 = v5; + v449 = 0; + break; + case 0x27: + v54 = *(_DWORD *)(v4 + 8); + if ( (a2 & 4) != 0 ) + { + v379 = *(_DWORD *)(v54 + 12); + v380 = *(char **)(v54 + 8); + if ( v379 ) + { + v381 = *(_DWORD *)(v3 + 256); + v382 = &v380[v379]; + do + { + v384 = *v380; + if ( v381 == 255 ) + { + v385 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v534 = v384; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v385); + ++*(_DWORD *)(v3 + 296); + v384 = v534; + v383 = 0; + v381 = 1; + } + else + { + v383 = v381++; + } + ++v380; + *(_DWORD *)(v3 + 256) = v381; + *(_BYTE *)(v3 + v383) = v384; + *(_BYTE *)(v3 + 260) = v384; + } + while ( v382 != v380 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + } + else + { + v55 = *(_DWORD *)(v54 + 4); + v56 = *(char **)v54; + if ( v55 ) + { + v57 = *(_DWORD *)(v3 + 256); + v58 = &v56[v55]; + do + { + v60 = *v56; + if ( v57 == 255 ) + { + v61 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v515 = v60; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v61); + ++*(_DWORD *)(v3 + 296); + v60 = v515; + v59 = 0; + v57 = 1; + } + else + { + v59 = v57++; + } + ++v56; + *(_DWORD *)(v3 + 256) = v57; + *(_BYTE *)(v3 + v59) = v60; + *(_BYTE *)(v3 + 260) = v60; + } + while ( v58 != v56 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + } + goto LABEL_21; + case 0x28: + goto LABEL_427; + case 0x29: + v62 = *(int ***)(v3 + 276); + v63 = a2 & 0xFFFFFF9F; + if ( (a2 & 0x20) == 0 ) + { + v64 = *(_DWORD *)(v4 + 8); + if ( v64 && (a2 & 0x40) == 0 ) + { + *(_DWORD *)Buffer = *(_DWORD *)(v3 + 276); + *(_DWORD *)(v3 + 276) = Buffer; + v428 = *(_DWORD *)(v3 + 272); + v597 = (_DWORD *)v4; + v599 = v428; + v598 = 0; + d_print_comp(v64, a2 & 0xFFFFFF9F); + v422 = v598 == 0; + *(_DWORD *)(v3 + 276) = *(_DWORD *)Buffer; + if ( !v422 ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v429 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v429); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v430 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v430 + 1; + *(_BYTE *)(v3 + v430) = 32; + v62 = *(int ***)(v3 + 276); + *(_BYTE *)(v3 + 260) = 32; + } + d_print_function_type_isra_0(v3, v63, (int *)(v4 + 12), v62); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + d_print_function_type_isra_0(v3, a2 & 0xFFFFFF9F, (int *)(v4 + 12), *(int ***)(v3 + 276)); + v424 = *(_DWORD *)(v4 + 8); + if ( v424 ) + d_print_comp(v424, v63); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x2A: + v44 = *(_DWORD **)(v3 + 276); + v597 = (_DWORD *)v4; + v45 = 1; + v46 = v44; + v587 = v44; + *(_DWORD *)Buffer = v44; + v47 = Buffer; + *(_DWORD *)(v3 + 276) = Buffer; + v48 = *(_DWORD *)(v3 + 272); + v598 = 0; + v599 = v48; + v49 = v46; + if ( v46 ) + { + while ( (unsigned int)(*(_DWORD *)v49[1] - 25) <= 2 ) + { + if ( !v49[2] ) + { + if ( v45 > 3 ) + { + *(_DWORD *)(v3 + 280) = 1; +LABEL_84: + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v50 = v45++; + v50 *= 16; + *(_DWORD *)&Buffer[v50] = *v49; + v51 = &Buffer[v50]; + *((_DWORD *)v51 + 1) = v49[1]; + *((_DWORD *)v51 + 2) = v49[2]; + *((_DWORD *)v51 + 3) = v49[3]; + *(_DWORD *)&Buffer[v50] = v47; + v47 = &Buffer[v50]; + *(_DWORD *)(v3 + 276) = &Buffer[v50]; + v49[2] = 1; + } + v49 = (_DWORD *)*v49; + if ( !v49 ) + break; + } + d_print_comp(*(_DWORD *)(v4 + 12), a2); + *(_DWORD *)(v3 + 276) = v587; + if ( v598 ) + goto LABEL_84; + if ( v45 != 1 ) + { + v52 = &Buffer[16 * v45]; + do + { + v53 = (_DWORD *)*((_DWORD *)v52 - 3); + v52 -= 16; + d_print_mod(v3, a2, v53); + } + while ( &v600 != v52 ); + } + } + else + { + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v422 = v598 == 0; + *(_DWORD *)(v3 + 276) = 0; + if ( !v422 ) + goto LABEL_84; + } + d_print_array_type_isra_0(v3, a2, (int *)(v4 + 8), *(int ***)(v3 + 276)); + goto LABEL_84; + case 0x2B: + case 0x2D: + v40 = *(_DWORD *)(v3 + 276); + v41 = *(_DWORD *)(v4 + 12); + v597 = (_DWORD *)v4; + v598 = 0; + *(_DWORD *)Buffer = v40; + *(_DWORD *)(v3 + 276) = Buffer; + v599 = *(_DWORD *)(v3 + 272); + d_print_comp(v41, a2); + if ( !v598 ) + d_print_mod(v3, a2, (_DWORD *)v4); + v42 = *(_DWORD *)(v3 + 284); + *(_DWORD *)(v3 + 276) = *(_DWORD *)Buffer; + v5 = v42 - 1; + v536 = v594; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x2C: + if ( *(_WORD *)(v4 + 14) ) + { + v400 = *(_DWORD *)(v3 + 256); + v401 = "_Sat "; + do + { + v403 = *v401; + if ( v400 == 255 ) + { + v404 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v572 = v403; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v404); + ++*(_DWORD *)(v3 + 296); + v403 = v572; + v402 = 0; + v400 = 1; + } + else + { + v402 = v400++; + } + ++v401; + *(_DWORD *)(v3 + 256) = v400; + *(_BYTE *)(v3 + v402) = v403; + *(_BYTE *)(v3 + 260) = v403; + } + while ( v401 != "" ); + } + v65 = *(_DWORD *)(v4 + 8); + if ( *(void ****)(v65 + 8) == &off_532320 ) + { + v68 = *(_DWORD *)(v3 + 256); + } + else + { + d_print_comp(v65, a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v66 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v66); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v67 = *(_DWORD *)(v3 + 256); + v68 = v67 + 1; + *(_DWORD *)(v3 + 256) = v67 + 1; + *(_BYTE *)(v3 + v67) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + if ( *(_WORD *)(v4 + 12) ) + { + v375 = "Accum"; + for ( i11 = 95; ; i11 = *v375++ ) + { + if ( v68 == 255 ) + { + v378 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v533 = i11; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v378); + ++*(_DWORD *)(v3 + 296); + i11 = v533; + v377 = 0; + v68 = 1; + } + else + { + v377 = v68++; + } + *(_DWORD *)(v3 + 256) = v68; + *(_BYTE *)(v3 + v377) = i11; + *(_BYTE *)(v3 + 260) = i11; + if ( v375 == "" ) + break; + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + v69 = "Fract"; + for ( i12 = 95; ; i12 = *v69++ ) + { + if ( v68 == 255 ) + { + v72 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v516 = i12; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v72); + ++*(_DWORD *)(v3 + 296); + i12 = v516; + v71 = 0; + v68 = 1; + } + else + { + v71 = v68++; + } + *(_DWORD *)(v3 + 256) = v68; + *(_BYTE *)(v3 + v71) = i12; + *(_BYTE *)(v3 + 260) = i12; + if ( v69 == "" ) + break; + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x2E: + case 0x2F: + v34 = *(_DWORD *)(v4 + 8); + if ( v34 ) + d_print_comp(v34, a2); + if ( *(_DWORD *)(v4 + 12) ) + { + v35 = *(_DWORD *)(v3 + 256); + if ( v35 > 0xFD ) + { + *(_BYTE *)(v3 + v35) = 0; + Str2 = (char *)v35; + v35 = 0; + (*(void (__cdecl **)(int, char *, _DWORD))(v3 + 264))(v3, Str2, *(_DWORD *)(v3 + 268)); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v36 = ", "; + for ( i13 = 44; ; i13 = *v36 ) + { + if ( v35 == 255 ) + { + v39 = *(_DWORD *)(v3 + 268); + v537 = i13; + v35 = 1; + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v39); + ++*(_DWORD *)(v3 + 296); + i13 = v537; + v38 = 0; + } + else + { + v38 = v35++; + } + ++v36; + *(_DWORD *)(v3 + 256) = v35; + *(_BYTE *)(v3 + v38) = i13; + *(_BYTE *)(v3 + 260) = i13; + if ( "" == v36 ) + break; + } + v342 = *(_DWORD *)(v3 + 296); + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v536 = v594; + v343 = *(_DWORD *)(v4 + 4); + if ( v342 == *(_DWORD *)(v3 + 296) ) + { + result = v343 - 1; + v5 = *(_DWORD *)(v3 + 284) - 1; + if ( *(_DWORD *)(v3 + 256) == v35 ) + *(_DWORD *)(v3 + 256) = v35 - 2; + } + else + { + result = v343 - 1; + v5 = *(_DWORD *)(v3 + 284) - 1; + } + } + else + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x30: + v94 = *(_DWORD *)(v3 + 256); + v95 = "emplate parameter object for "; + for ( i14 = 116; ; i14 = *v95++ ) + { + if ( v94 == 255 ) + { + v98 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v540 = i14; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v98); + ++*(_DWORD *)(v3 + 296); + i14 = v540; + v97 = 0; + v94 = 1; + } + else + { + v97 = v94++; + } + *(_DWORD *)(v3 + 256) = v94; + *(_BYTE *)(v3 + v97) = i14; + *(_BYTE *)(v3 + 260) = i14; + if ( v95 == "" ) + break; + } + goto LABEL_427; + case 0x31: + v88 = *(_DWORD *)(v4 + 8); + v89 = *(_DWORD *)(v4 + 12); + if ( v88 ) + d_print_comp(v88, a2); + v90 = *(_DWORD *)(v3 + 256); + if ( v90 == 255 ) + { + v91 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v91); + ++*(_DWORD *)(v3 + 296); + v90 = 0; + } + *(_DWORD *)(v3 + 256) = v90 + 1; + *(_BYTE *)(v3 + v90) = 123; + *(_BYTE *)(v3 + 260) = 123; + d_print_comp(v89, a2); + i24 = *(_DWORD *)(v3 + 256); + if ( i24 == 255 ) + { + v93 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v93); + ++*(_DWORD *)(v3 + 296); + i24 = 0; + } + goto LABEL_479; + case 0x32: + v99 = "perator"; + v100 = 111; + v541 = *(char **)(v4 + 8); + v581 = *((_DWORD *)v541 + 2); + v101 = *(_DWORD *)(v3 + 256); + while ( 1 ) + { + if ( v101 == 255 ) + { + v103 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v517 = v100; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v103); + ++*(_DWORD *)(v3 + 296); + v100 = v517; + v102 = 0; + v101 = 1; + } + else + { + v102 = v101++; + } + *(_DWORD *)(v3 + 256) = v101; + *(_BYTE *)(v3 + v102) = v100; + *(_BYTE *)(v3 + 260) = v100; + if ( v99 == "" ) + break; + v100 = *v99++; + } + v298 = (char *)*((_DWORD *)v541 + 1); + if ( (unsigned __int8)(*v298 - 97) <= 0x19u ) + { + if ( v101 == 255 ) + { + v299 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v299); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v300 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v300 + 1; + *(_BYTE *)(v3 + v300) = 32; + *(_BYTE *)(v3 + 260) = 32; + v298 = (char *)*((_DWORD *)v541 + 1); + } + v301 = v581; + if ( v298[v581 - 1] == 32 ) + v301 = v581 - 1; + if ( v301 ) + { + v302 = *(_DWORD *)(v3 + 256); + v303 = &v298[v301]; + do + { + v305 = *v298; + if ( v302 == 255 ) + { + v306 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v524 = v305; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v306); + ++*(_DWORD *)(v3 + 296); + v305 = v524; + v304 = 0; + v302 = 1; + } + else + { + v304 = v302++; + } + ++v298; + *(_DWORD *)(v3 + 256) = v302; + *(_BYTE *)(v3 + v304) = v305; + *(_BYTE *)(v3 + 260) = v305; + } + while ( v303 != v298 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x33: + v83 = *(_DWORD *)(v3 + 256); + v84 = "perator "; + for ( i15 = 111; ; i15 = *v84++ ) + { + if ( v83 == 255 ) + { + v87 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v539 = i15; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v87); + ++*(_DWORD *)(v3 + 296); + i15 = v539; + v86 = 0; + v83 = 1; + } + else + { + v86 = v83++; + } + *(_DWORD *)(v3 + 256) = v83; + *(_BYTE *)(v3 + v86) = i15; + *(_BYTE *)(v3 + 260) = i15; + if ( v84 == "" ) + break; + } + goto LABEL_47; + case 0x35: + v78 = *(_DWORD *)(v3 + 256); + v79 = "perator "; + for ( i16 = 111; ; i16 = *v79++ ) + { + if ( v78 == 255 ) + { + v82 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v538 = i16; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v82); + ++*(_DWORD *)(v3 + 296); + i16 = v538; + v81 = 0; + v78 = 1; + } + else + { + v81 = v78++; + } + *(_DWORD *)(v3 + 256) = v78; + *(_BYTE *)(v3 + v81) = i16; + *(_BYTE *)(v3 + 260) = i16; + if ( v79 == "" ) + break; + } + if ( *(_DWORD *)(v3 + 328) ) + { + v322 = *(_DWORD *)(v3 + 272); + v597 = *(_DWORD **)(v3 + 328); + *(_DWORD *)Buffer = v322; + *(_DWORD *)(v3 + 272) = Buffer; + } + v323 = *(_DWORD **)(v4 + 8); + if ( *v323 == 4 ) + { + d_print_comp(v323[2], a2); + if ( *(_DWORD *)(v3 + 328) ) + *(_DWORD *)(v3 + 272) = *(_DWORD *)Buffer; + if ( *(_BYTE *)(v3 + 260) == 60 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v485 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v485); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v486 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v486 + 1; + *(_BYTE *)(v3 + v486) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v386 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v386); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v387 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v387 + 1; + *(_BYTE *)(v3 + v387) = 60; + *(_BYTE *)(v3 + 260) = 60; + d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 8) + 12), a2); + if ( *(_BYTE *)(v3 + 260) == 62 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v483 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v483); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v484 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v484 + 1; + *(_BYTE *)(v3 + v484) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v388 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v388); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v389 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v389 + 1; + *(_BYTE *)(v3 + v389) = 62; + *(_BYTE *)(v3 + 260) = 62; + } + else + { + d_print_comp(v323, a2); + if ( *(_DWORD *)(v3 + 328) ) + *(_DWORD *)(v3 + 272) = *(_DWORD *)Buffer; + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x36: + d_print_expr_op(v3, a2, *(_DWORD **)(v4 + 8)); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x37: + v73 = *(_DWORD *)(v4 + 8); + v28 = *(int **)(v4 + 12); + if ( *(_DWORD *)v73 == 50 ) + { + v573 = **(char ***)(v73 + 8); + v405 = strcmp(v573, "ad"); + v406 = *v28; + if ( !v405 && v406 == 3 ) + { + if ( *(_DWORD *)v28[2] == 1 && *(_DWORD *)v28[3] == 41 ) + v28 = (int *)v28[2]; + } + else if ( v406 == 57 ) + { + d_print_subexpr(v3, a2, (_DWORD *)v28[2]); + d_print_expr_op(v3, a2, (_DWORD *)v73); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( !strcmp(v573, "sZ") ) + { + pack = d_find_pack(v3, v28, v407); + for ( i17 = 0; pack; ++i17 ) + { + if ( *pack != 47 ) + break; + if ( !pack[2] ) + break; + pack = (_DWORD *)pack[3]; + } + v498 = Buffer; + sprintf(Buffer, "%d", i17); + v499 = strlen(Buffer) + 1; + if ( v499 != 1 ) + { + do + { + v500 = *v498; + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v501 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v501); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v502 = *(_DWORD *)(v3 + 256); + ++v498; + *(_DWORD *)(v3 + 256) = v502 + 1; + *(_BYTE *)(v3 + v502) = v500; + *(_BYTE *)(v3 + 260) = v500; + } + while ( &Buffer[v499 - 1] != v498 ); + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( *v573 == 115 && v573[1] == 80 ) + { + v408 = 0; + if ( !v573[2] ) + { + v409 = 0; + do + { + if ( *v28 != 47 ) + break; + v410 = v28[2]; + if ( !v410 ) + break; + if ( *(_DWORD *)v410 == 75 ) + { + v411 = d_find_pack(v3, *(_DWORD **)(v410 + 8), v408); + for ( i18 = 0; v411; ++i18 ) + { + if ( *v411 != 47 ) + break; + v408 = v411[2]; + if ( !v408 ) + break; + v411 = (_DWORD *)v411[3]; + } + v409 += i18; + } + else + { + ++v409; + } + v28 = (int *)v28[3]; + } + while ( v28 ); + v461 = Buffer; + sprintf(Buffer, "%d", v409); + v462 = strlen(Buffer) + 1; + if ( v462 != 1 ) + { + v463 = *(_DWORD *)(v3 + 256); + do + { + v464 = *v461; + v465 = v463; + if ( v463 == 255 ) + { + v466 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v535 = v464; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v466); + ++*(_DWORD *)(v3 + 296); + v464 = v535; + v465 = 0; + } + v463 = v465 + 1; + ++v461; + *(_DWORD *)(v3 + 256) = v465 + 1; + *(_BYTE *)(v3 + v465) = v464; + *(_BYTE *)(v3 + 260) = v464; + } + while ( &Buffer[v462 - 1] != v461 ); + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + d_print_expr_op(v3, a2, (_DWORD *)v73); + if ( *v573 == 103 && v573[1] == 115 && !v573[2] ) + { +LABEL_604: + d_print_comp(v28, a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( !strcmp(v573, "st") ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v413 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v413); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v414 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v414 + 1; + *(_BYTE *)(v3 + v414) = 40; + *(_BYTE *)(v3 + 260) = 40; + d_print_comp(v28, a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v415 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v415); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } +LABEL_737: + v492 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v492 + 1; + *(_BYTE *)(v3 + v492) = 41; + v493 = (int)v594; + *(_BYTE *)(v3 + 260) = 41; + v536 = (char *)v493; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + else if ( *(_DWORD *)v73 == 52 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v74 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v74); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v75 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v75 + 1; + *(_BYTE *)(v3 + v75) = 40; + *(_BYTE *)(v3 + 260) = 40; + d_print_comp(*(_DWORD *)(v73 + 8), a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v76 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v76); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v77 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v77 + 1; + *(_BYTE *)(v3 + v77) = 41; + *(_BYTE *)(v3 + 260) = 41; + } + else + { + d_print_expr_op(v3, a2, (_DWORD *)v73); + } + d_print_subexpr(v3, a2, v28); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x38: + if ( **(_DWORD **)(v4 + 12) != 57 ) + { + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v9 = *(_DWORD *)(v4 + 8); + v10 = **(char ***)(v9 + 8); + if ( v10[1] == 99 && ((v467 = *v10, (unsigned __int8)(v467 - 99) <= 1u) || (unsigned __int8)(v467 - 114) <= 1u) ) + { + d_print_expr_op(v3, a2, (_DWORD *)v9); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v468 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v468); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v469 = *(_DWORD *)(v3 + 256); + v470 = ">("; + *(_DWORD *)(v3 + 256) = v469 + 1; + *(_BYTE *)(v3 + v469) = 60; + *(_BYTE *)(v3 + 260) = 60; + d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 8), a2); + v471 = *(_DWORD *)(v3 + 256); + do + { + v472 = *v470; + v473 = v471; + if ( v471 == 255 ) + { + v474 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v577 = v472; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v474); + ++*(_DWORD *)(v3 + 296); + v472 = v577; + v473 = 0; + } + v471 = v473 + 1; + ++v470; + *(_DWORD *)(v3 + 256) = v473 + 1; + *(_BYTE *)(v3 + v473) = v472; + *(_BYTE *)(v3 + 260) = v472; + } + while ( v470 != "" ); + d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 12), a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v475 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v475); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + } + else + { + if ( d_maybe_print_fold_expression_isra_0(v3, a2, v9, v4 + 12) ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v11 = *(_DWORD *)(v4 + 8); + if ( *(_DWORD *)v11 == 50 ) + { + v487 = *(_DWORD *)(v11 + 8); + if ( *(_DWORD *)(v487 + 8) == 1 && **(_BYTE **)(v487 + 4) == 62 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v488 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v488); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v489 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v489 + 1; + *(_BYTE *)(v3 + v489) = 40; + *(_BYTE *)(v3 + 260) = 40; + v11 = *(_DWORD *)(v4 + 8); + } + } + v12 = strcmp(**(const char ***)(v11 + 8), "cl"); + v13 = *(_DWORD *)(*(_DWORD *)(v4 + 12) + 8); + if ( !v12 && *(_DWORD *)v13 == 3 ) + { + if ( **(_DWORD **)(v13 + 12) != 41 ) + *(_DWORD *)(v3 + 280) = 1; + d_print_subexpr(v3, a2, *(_DWORD **)(v13 + 8)); + } + else + { + d_print_subexpr(v3, a2, (_DWORD *)v13); + } + v14 = *(_DWORD *)(v4 + 8); + Str1 = **(const char ***)(v14 + 8); + if ( !strcmp(Str1, "ix") ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v16 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v16); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v17 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v17 + 1; + *(_BYTE *)(v3 + v17) = 91; + *(_BYTE *)(v3 + 260) = 91; + d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 12), a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v18 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v18); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v19 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v19 + 1; + *(_BYTE *)(v3 + v19) = 93; + *(_BYTE *)(v3 + 260) = 93; + } + else + { + if ( strcmp(Str1, "cl") ) + d_print_expr_op(v3, a2, (_DWORD *)v14); + d_print_subexpr(v3, a2, *(_DWORD **)(*(_DWORD *)(v4 + 12) + 12)); + } + v20 = *(_DWORD **)(v4 + 8); + if ( *v20 != 50 || (v490 = v20[2], *(_DWORD *)(v490 + 8) != 1) || **(_BYTE **)(v490 + 4) != 62 ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v491 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v491); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + } + goto LABEL_737; + case 0x39: + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x3A: + v285 = *(_DWORD *)(v4 + 12); + if ( *(_DWORD *)v285 == 59 && **(_DWORD **)(v285 + 12) == 60 ) + { + if ( d_maybe_print_fold_expression_isra_0(v3, a2, *(_DWORD *)(v4 + 8), v4 + 12) ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + v457 = *(_DWORD *)(v4 + 12); + v458 = *(_DWORD **)(v457 + 8); + v459 = *(_DWORD *)(v457 + 12); + v585 = *(_DWORD *)(v4 + 8); + v576 = *(char **)(v459 + 8); + v460 = *(_DWORD **)(v459 + 12); + if ( !strcmp(**(const char ***)(v585 + 8), "qu") ) + { + d_print_subexpr(v3, a2, v458); + d_print_expr_op(v3, a2, (_DWORD *)v585); + d_print_subexpr(v3, a2, v576); + d_append_buffer(v3, " : ", 3); + d_print_subexpr(v3, a2, v460); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + d_append_buffer(v3, "new ", 4); + if ( v458[2] ) + { + d_print_subexpr(v3, a2, v458); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v494 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v494); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v495 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v495 + 1; + *(_BYTE *)(v3 + v495) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + d_print_comp(v576, a2); + if ( v460 ) + d_print_subexpr(v3, a2, v460); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + } + } + else + { + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x3B: + case 0x3C: + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x3D: + case 0x3E: + v29 = *(_DWORD **)(v4 + 8); + v30 = 0; + if ( *v29 != 39 ) + goto LABEL_42; + v30 = *(_DWORD *)(v29[2] + 16); + if ( v30 > 6 ) + { + if ( v30 == 7 ) + { + v425 = *(_DWORD *)(v4 + 12); + if ( !*(_DWORD *)v425 && *(_DWORD *)(v425 + 12) == 1 && v579 == 61 ) + { + v426 = **(_BYTE **)(v425 + 8); + if ( v426 == 48 ) + { + d_append_buffer(v3, "false", 5); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( v426 == 49 ) + { + d_append_buffer(v3, "true", 4); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + } + } + else if ( v30 ) + { + v394 = *(_DWORD **)(v4 + 12); + if ( !*v394 ) + { + if ( v579 == 62 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v503 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v503); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v504 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v504 + 1; + *(_BYTE *)(v3 + v504) = 45; + *(_BYTE *)(v3 + 260) = 45; + v394 = *(_DWORD **)(v4 + 12); + } + d_print_comp(v394, a2); + switch ( v30 ) + { + case 2u: + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v508 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v508); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v509 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v509 + 1; + *(_BYTE *)(v3 + v509) = 117; + v510 = (int)v594; + *(_BYTE *)(v3 + 260) = 117; + v536 = (char *)v510; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + case 3u: + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v505 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v505); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v506 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v506 + 1; + *(_BYTE *)(v3 + v506) = 108; + v507 = (int)v594; + *(_BYTE *)(v3 + 260) = 108; + v536 = (char *)v507; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + case 4u: + d_append_buffer(v3, "ul", 2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + case 5u: + d_append_buffer(v3, "ll", 2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + case 6u: + d_append_buffer(v3, (char *)&off_5314FE, 3); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + default: + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + } + goto LABEL_21; + } + } +LABEL_42: + v31 = *(_DWORD *)(v3 + 256); + if ( v31 == 255 ) + { + v32 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v32); + ++*(_DWORD *)(v3 + 296); + v29 = *(_DWORD **)(v4 + 8); + v31 = 0; + } + *(_DWORD *)(v3 + 256) = v31 + 1; + *(_BYTE *)(v3 + v31) = 40; + *(_BYTE *)(v3 + 260) = 40; + d_print_comp(v29, a2); + v33 = *(_DWORD *)(v3 + 256); + if ( v33 == 255 ) + { + v421 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v421); + ++*(_DWORD *)(v3 + 296); + *(_BYTE *)v3 = 41; + *(_BYTE *)(v3 + 260) = 41; + v422 = *(_DWORD *)v4 == 62; + *(_DWORD *)(v3 + 256) = 1; + if ( !v422 ) + goto LABEL_46; + } + else + { + *(_DWORD *)(v3 + 256) = v33 + 1; + *(_BYTE *)(v3 + v33) = 41; + *(_BYTE *)(v3 + 260) = 41; + if ( *(_DWORD *)v4 != 62 ) + goto LABEL_46; + if ( v33 == 254 ) + { + v427 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v427); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + } + v423 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v423 + 1; + *(_BYTE *)(v3 + v423) = 45; + *(_BYTE *)(v3 + 260) = 45; +LABEL_46: + if ( v30 == 8 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v416 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v416); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v417 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v417 + 1; + *(_BYTE *)(v3 + v417) = 91; + *(_BYTE *)(v3 + 260) = 91; + d_print_comp(*(_DWORD *)(v4 + 12), a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v418 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v418); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v419 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v419 + 1; + *(_BYTE *)(v3 + v419) = 93; + v420 = (int)v594; + *(_BYTE *)(v3 + 260) = 93; + v536 = (char *)v420; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { +LABEL_47: + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x3F: + v286 = *(_DWORD *)(v3 + 256); + v287 = "ava resource "; + for ( i19 = 106; ; i19 = *v287++ ) + { + if ( v286 == 255 ) + { + v290 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v567 = i19; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v290); + ++*(_DWORD *)(v3 + 296); + i19 = v567; + v289 = 0; + v286 = 1; + } + else + { + v289 = v286++; + } + *(_DWORD *)(v3 + 256) = v286; + *(_BYTE *)(v3 + v289) = i19; + *(_BYTE *)(v3 + 260) = i19; + if ( v287 == "" ) + break; + } + goto LABEL_427; + case 0x40: + d_print_comp(*(_DWORD *)(v4 + 8), a2); + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x41: + v291 = *(_DWORD *)(v3 + 256); + v292 = *(_DWORD *)(v4 + 8); + if ( v291 == 255 ) + { + v293 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v293); + v294 = (int)v594; + ++*(_DWORD *)(v3 + 296); + v536 = (char *)v294; + v5 = *(_DWORD *)(v3 + 284) - 1; + v291 = 0; + result = *(_DWORD *)(v4 + 4) - 1; + } + *(_DWORD *)(v3 + 256) = v291 + 1; + *(_BYTE *)(v3 + v291) = v292; + *(_BYTE *)(v3 + 260) = v292; + goto LABEL_21; + case 0x42: + sprintf(Buffer, "%d", *(_DWORD *)(v4 + 8)); + v259 = &Buffer[strlen(Buffer)]; + if ( v259 != Buffer ) + { + v260 = Buffer; + v261 = *(_DWORD *)(v3 + 256); + do + { + v263 = *v260; + if ( v261 == 255 ) + { + v264 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v523 = v263; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v264); + ++*(_DWORD *)(v3 + 296); + v263 = v523; + v262 = 0; + v261 = 1; + } + else + { + v262 = v261++; + } + ++v260; + *(_DWORD *)(v3 + 256) = v261; + *(_BYTE *)(v3 + v262) = v263; + *(_BYTE *)(v3 + 260) = v263; + } + while ( v259 != v260 ); + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x43: + v280 = *(_DWORD *)(v3 + 256); + v281 = "ecltype ("; + for ( i20 = 100; ; i20 = *v281++ ) + { + if ( v280 == 255 ) + { + v284 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v566 = i20; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v284); + ++*(_DWORD *)(v3 + 296); + i20 = v566; + v283 = 0; + v280 = 1; + } + else + { + v283 = v280++; + } + *(_DWORD *)(v3 + 256) = v280; + *(_BYTE *)(v3 + v283) = i20; + *(_BYTE *)(v3 + 260) = i20; + if ( v281 == "" ) + break; + } + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v319 = *(_DWORD *)(v3 + 256); + if ( v319 == 255 ) + { + v320 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v320); + ++*(_DWORD *)(v3 + 296); + v319 = 0; + } + *(_DWORD *)(v3 + 256) = v319 + 1; + *(_BYTE *)(v3 + v319) = 41; + v321 = (int)v594; + *(_BYTE *)(v3 + 260) = 41; + v536 = (char *)v321; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x44: + v270 = *(_DWORD *)(v3 + 256); + v271 = "lobal constructors keyed to "; + for ( i21 = 103; ; i21 = *v271++ ) + { + if ( v270 == 255 ) + { + v274 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v564 = i21; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v274); + ++*(_DWORD *)(v3 + 296); + i21 = v564; + v273 = 0; + v270 = 1; + } + else + { + v273 = v270++; + } + *(_DWORD *)(v3 + 256) = v270; + *(_BYTE *)(v3 + v273) = i21; + *(_BYTE *)(v3 + 260) = i21; + if ( v271 == "" ) + break; + } + goto LABEL_427; + case 0x45: + v275 = *(_DWORD *)(v3 + 256); + v276 = "lobal destructors keyed to "; + for ( i22 = 103; ; i22 = *v276++ ) + { + if ( v275 == 255 ) + { + v279 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v565 = i22; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v279); + ++*(_DWORD *)(v3 + 296); + i22 = v565; + v278 = 0; + v275 = 1; + } + else + { + v278 = v275++; + } + *(_DWORD *)(v3 + 256) = v275; + *(_BYTE *)(v3 + v278) = i22; + *(_BYTE *)(v3 + 260) = i22; + if ( v276 == "" ) + break; + } + goto LABEL_427; + case 0x46: + v265 = *(_DWORD *)(v3 + 256); + v266 = "lambda("; + for ( i23 = 123; ; i23 = *v266++ ) + { + if ( v265 == 255 ) + { + v269 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v563 = i23; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v269); + ++*(_DWORD *)(v3 + 296); + i23 = v563; + v268 = 0; + v265 = 1; + } + else + { + v268 = v265++; + } + *(_DWORD *)(v3 + 256) = v265; + *(_BYTE *)(v3 + v268) = i23; + *(_BYTE *)(v3 + 260) = i23; + if ( v266 == "" ) + break; + } + v307 = *(_DWORD *)(v4 + 8); + v308 = ")#"; + ++*(_DWORD *)(v3 + 288); + d_print_comp(v307, a2); + v309 = *(_DWORD *)(v3 + 256); + v310 = 41; + --*(_DWORD *)(v3 + 288); + while ( 1 ) + { + if ( v309 == 255 ) + { + v312 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v525 = v310; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v312); + ++*(_DWORD *)(v3 + 296); + v310 = v525; + v311 = 0; + v309 = 1; + } + else + { + v311 = v309++; + } + ++v308; + *(_DWORD *)(v3 + 256) = v309; + *(_BYTE *)(v3 + v311) = v310; + *(_BYTE *)(v3 + 260) = v310; + if ( v308 == "" ) + break; + v310 = *v308; + } + sprintf(Buffer, "%d", *(_DWORD *)(v4 + 12) + 1); + v313 = &Buffer[strlen(Buffer)]; + v314 = Buffer; + for ( i24 = *(_DWORD *)(v3 + 256); v313 != v314; *(_BYTE *)(v3 + 260) = v316 ) + { + v316 = *v314; + if ( i24 == 255 ) + { + v317 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v526 = v316; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v317); + ++*(_DWORD *)(v3 + 296); + v316 = v526; + v315 = 0; + i24 = 1; + } + else + { + v315 = i24++; + } + ++v314; + *(_DWORD *)(v3 + 256) = i24; + *(_BYTE *)(v3 + v315) = v316; + } + if ( i24 == 255 ) + { + v318 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v318); + ++*(_DWORD *)(v3 + 296); + i24 = 0; + } + goto LABEL_479; + case 0x48: + v121 = *(_DWORD *)(v3 + 256); + v122 = "unnamed type#"; + for ( i25 = 123; ; i25 = *v122++ ) + { + if ( v121 == 255 ) + { + v125 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v518 = i25; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v125); + ++*(_DWORD *)(v3 + 296); + i25 = v518; + v124 = 0; + v121 = 1; + } + else + { + v124 = v121++; + } + *(_DWORD *)(v3 + 256) = v121; + *(_BYTE *)(v3 + v124) = i25; + *(_BYTE *)(v3 + 260) = i25; + if ( v122 == "" ) + break; + } + sprintf(Buffer, "%d", *(_DWORD *)(v4 + 8) + 1); + v335 = &Buffer[strlen(Buffer)]; + v336 = Buffer; + for ( i24 = *(_DWORD *)(v3 + 256); v335 != v336; *(_BYTE *)(v3 + 260) = v338 ) + { + v338 = *v336; + if ( i24 == 255 ) + { + v339 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v527 = v338; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v339); + ++*(_DWORD *)(v3 + 296); + v338 = v527; + v337 = 0; + i24 = 1; + } + else + { + v337 = i24++; + } + ++v336; + *(_DWORD *)(v3 + 256) = i24; + *(_BYTE *)(v3 + v337) = v338; + } + if ( i24 == 255 ) + { + v340 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v340); + ++*(_DWORD *)(v3 + 296); + i24 = 0; + } +LABEL_479: + *(_DWORD *)(v3 + 256) = i24 + 1; + *(_BYTE *)(v3 + i24) = 125; + v341 = (int)v594; + *(_BYTE *)(v3 + 260) = 125; + v536 = (char *)v341; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x49: + v116 = *(_DWORD *)(v3 + 256); + v117 = "ransaction clone for "; + for ( i26 = 116; ; i26 = *v117++ ) + { + if ( v116 == 255 ) + { + v120 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v544 = i26; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v120); + ++*(_DWORD *)(v3 + 296); + i26 = v544; + v119 = 0; + v116 = 1; + } + else + { + v119 = v116++; + } + *(_DWORD *)(v3 + 256) = v116; + *(_BYTE *)(v3 + v119) = i26; + *(_BYTE *)(v3 + 260) = i26; + if ( v117 == "" ) + break; + } + goto LABEL_427; + case 0x4A: + v111 = *(_DWORD *)(v3 + 256); + v112 = "on-transaction clone for "; + for ( i27 = 110; ; i27 = *v112++ ) + { + if ( v111 == 255 ) + { + v115 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v543 = i27; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v115); + ++*(_DWORD *)(v3 + 296); + i27 = v543; + v114 = 0; + v111 = 1; + } + else + { + v114 = v111++; + } + *(_DWORD *)(v3 + 256) = v111; + *(_BYTE *)(v3 + v114) = i27; + *(_BYTE *)(v3 + 260) = i27; + if ( v112 == "" ) + break; + } + goto LABEL_427; + case 0x4B: + v104 = d_find_pack(v3, *(_DWORD **)(v4 + 8), v8); + v105 = 0; + if ( !v104 ) + { + d_print_subexpr(v3, a2, *(_DWORD **)(v4 + 8)); + d_append_buffer(v3, "...", 3); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + while ( *v104 == 47 && v104[2] ) + { + v104 = (_DWORD *)v104[3]; + ++v105; + if ( !v104 ) + { + v582 = v105; + v588 = *(_DWORD *)(v4 + 8); + do + { +LABEL_157: + *(_DWORD *)(v3 + 292) = v7; + d_print_comp(v588, a2); + if ( v7 < v582 - 1 ) + { + v106 = *(_DWORD *)(v3 + 256); + v107 = ", "; + for ( i28 = 44; ; i28 = *v107 ) + { + if ( v106 == 255 ) + { + v110 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v542 = i28; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v110); + ++*(_DWORD *)(v3 + 296); + i28 = v542; + v109 = 0; + v106 = 1; + } + else + { + v109 = v106++; + } + ++v107; + *(_DWORD *)(v3 + 256) = v106; + *(_BYTE *)(v3 + v109) = i28; + *(_BYTE *)(v3 + 260) = i28; + if ( "" == v107 ) + break; + } + } + ++v7; + } + while ( v582 > v7 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + v582 = v105; + v588 = *(_DWORD *)(v4 + 8); + if ( !v105 ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + goto LABEL_157; + case 0x4C: + v228 = "[abi:"; + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v229 = *(_DWORD *)(v3 + 256); + for ( i29 = 91; ; i29 = *v228 ) + { + if ( v229 == 255 ) + { + v232 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v562 = i29; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v232); + ++*(_DWORD *)(v3 + 296); + i29 = v562; + v231 = 0; + v229 = 1; + } + else + { + v231 = v229++; + } + ++v228; + *(_DWORD *)(v3 + 256) = v229; + *(_BYTE *)(v3 + v231) = i29; + *(_BYTE *)(v3 + 260) = i29; + if ( v228 == "" ) + break; + } + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v295 = *(_DWORD *)(v3 + 256); + if ( v295 == 255 ) + { + v296 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v296); + ++*(_DWORD *)(v3 + 296); + v295 = 0; + } + goto LABEL_398; + case 0x4E: + v223 = "[clone "; + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v224 = *(_DWORD *)(v3 + 256); + for ( i30 = 32; ; i30 = *v223++ ) + { + if ( v224 == 255 ) + { + v227 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v561 = i30; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v227); + ++*(_DWORD *)(v3 + 296); + i30 = v561; + v226 = 0; + v224 = 1; + } + else + { + v226 = v224++; + } + *(_DWORD *)(v3 + 256) = v224; + *(_BYTE *)(v3 + v226) = i30; + *(_BYTE *)(v3 + 260) = i30; + if ( v223 == "" ) + break; + } + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v295 = *(_DWORD *)(v3 + 256); + if ( v295 == 255 ) + { + v324 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v324); + ++*(_DWORD *)(v3 + 296); + v295 = 0; + } +LABEL_398: + *(_DWORD *)(v3 + 256) = v295 + 1; + *(_BYTE *)(v3 + v295) = 93; + v297 = (int)v594; + *(_BYTE *)(v3 + 260) = 93; + v536 = (char *)v297; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + default: + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + do + { + if ( v580 == (_DWORD *)*v447 ) + { + v450 = (int *)&v593; + while ( v580 != (_DWORD *)*v450 && (v4 != *v450 || v450 == (int *)&v593) ) + { + v450 = (int *)v450[1]; + if ( !v450 ) + { + v451 = *(_DWORD *)(v3 + 272); + *(_DWORD *)(v3 + 272) = v447[1]; + v586 = v451; + v7 = 1; + v580 = d_lookup_template_argument_isra_0(v3, v580 + 2); + if ( !v580 ) + goto LABEL_786; + goto LABEL_672; + } + } +LABEL_712: + v7 = 0; + v580 = d_lookup_template_argument_isra_0(v3, v580 + 2); + if ( !v580 ) + goto LABEL_679; +LABEL_672: + v43 = *v580; + if ( *v580 == 47 ) + { + v452 = *(_DWORD *)(v3 + 292); + if ( v452 < 0 ) + { + if ( *(_DWORD *)v4 != 47 ) +LABEL_68: + v580 = (_DWORD *)v4; +LABEL_69: + v23 = *(int ***)(v3 + 276); +LABEL_70: + *(_DWORD *)Buffer = v23; + *(_DWORD *)(v3 + 276) = Buffer; + v598 = 0; + v597 = v580; + v599 = *(_DWORD *)(v3 + 272); +LABEL_71: + v21 = v580[2]; +LABEL_24: + d_print_comp(v21, a2); + if ( !v598 ) + d_print_mod(v3, a2, v580); + *(_DWORD *)(v3 + 276) = *(_DWORD *)Buffer; + if ( v7 ) + *(_DWORD *)(v3 + 272) = v586; + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v453 = d_index_template_argument_part_0(v580, v452); + v580 = v453; + if ( !v453 ) + { + if ( v7 ) +LABEL_786: + *(_DWORD *)(v3 + 272) = v586; +LABEL_679: + v455 = (int)v594; + v456 = *(_DWORD *)(v3 + 284); + *(_DWORD *)(v3 + 280) = 1; + v536 = (char *)v455; + v5 = v456 - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v43 = *v453; + } +LABEL_65: + if ( v43 != 35 && *(_DWORD *)v4 != v43 ) + { + if ( v43 == 36 ) + { + v21 = v580[2]; +LABEL_23: + v22 = *(_DWORD *)(v3 + 276); + v597 = (_DWORD *)v4; + v598 = 0; + *(_DWORD *)Buffer = v22; + *(_DWORD *)(v3 + 276) = Buffer; + v580 = (_DWORD *)v4; + v599 = *(_DWORD *)(v3 + 272); + if ( v21 ) + goto LABEL_24; + goto LABEL_71; + } + goto LABEL_68; + } + goto LABEL_69; + } + ++v449; + v447 += 2; + } + while ( v448 != v449 ); + v5 = v592; +LABEL_706: + if ( v448 < *(_DWORD *)(v3 + 312) ) + { + v476 = *(_DWORD *)(v3 + 304); + v591 = v5; + *(_DWORD *)(v3 + 308) = v448 + 1; + v477 = *(_DWORD **)(v3 + 272); + v478 = (_DWORD *)(v476 + 8 * v448); + *v478 = v580; + for ( i31 = v478 + 1; ; i31 = (int *)v481 ) + { + if ( !v477 ) + { + *i31 = 0; + goto LABEL_712; + } + v480 = *(_DWORD *)(v3 + 320); + if ( v480 >= *(_DWORD *)(v3 + 324) ) + break; + v481 = *(_DWORD *)(v3 + 316) + 8 * v480; + *(_DWORD *)(v3 + 320) = v480 + 1; + *(_DWORD *)(v481 + 4) = v477[1]; + *i31 = v481; + v477 = (_DWORD *)*v477; + } + v5 = v591; + } + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; +LABEL_21: + *(_DWORD *)(v3 + 300) = v536; + *(_DWORD *)(v4 + 4) = result; + *(_DWORD *)(v3 + 284) = v5; + return result; +} +// 446F59: variable 'v586' is possibly undefined +// 44A41A: variable 'v408' is possibly undefined +// 44B3E0: variable 'v407' is possibly undefined +// 5314FE: using guessed type void *off_5314FE; +// 532320: using guessed type void **off_532320; + +//----- (0044B840) -------------------------------------------------------- +int __usercall d_print_mod@(int a1@, int a2@, _DWORD *a3@) +{ + _DWORD *v4; // esi + int result; // eax + const char *v7; // esi + char i; // dl + int v9; // ecx + int v10; // eax + const char *v11; // esi + char j; // dl + int v13; // ecx + int v14; // eax + const char *v15; // esi + char k; // dl + int v17; // ecx + int v18; // eax + int v19; // edx + int v20; // edx + const char *v21; // esi + char m; // dl + int v23; // ecx + int v24; // eax + int v25; // eax + int v26; // edx + int v27; // edx + int v28; // eax + int v29; // eax + int v30; // edx + int v31; // eax + int v32; // ecx + const char *v33; // esi + char jj; // dl + int v35; // ecx + int v36; // eax + int v37; // edx + const char *v38; // ebp + char i1; // dl + int v40; // ecx + int v41; // eax + const char *v42; // ebp + char nn; // dl + int v44; // ecx + int v45; // eax + int v46; // eax + const char *v47; // ebp + char kk; // dl + int v49; // ecx + int v50; // eax + const char *v51; // esi + char n; // dl + int v53; // ecx + int v54; // eax + const char *v55; // esi + char ii; // dl + int v57; // ecx + int v58; // eax + const char *v59; // esi + char mm; // dl + int v61; // ecx + int v62; // eax + int v63; // ecx + int v64; // edx + int v65; // eax + int v66; // edx + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + int v71; // eax + char v72; // [esp+1Fh] [ebp-1Dh] + char v73; // [esp+1Fh] [ebp-1Dh] + char v74; // [esp+1Fh] [ebp-1Dh] + char v75; // [esp+1Fh] [ebp-1Dh] + char v76; // [esp+1Fh] [ebp-1Dh] + char v77; // [esp+1Fh] [ebp-1Dh] + char v78; // [esp+1Fh] [ebp-1Dh] + char v79; // [esp+1Fh] [ebp-1Dh] + char v80; // [esp+1Fh] [ebp-1Dh] + char v81; // [esp+1Fh] [ebp-1Dh] + char v82; // [esp+1Fh] [ebp-1Dh] + + v4 = a3; + result = *a3 - 3; + switch ( *a3 ) + { + case 3: + a3 = (_DWORD *)a3[2]; + return d_print_comp(a3, a2); + case 0x19: + case 0x1C: + result = *(_DWORD *)(a1 + 256); + v7 = "restrict"; + for ( i = 32; ; i = *v7++ ) + { + if ( result == 255 ) + { + v10 = *(_DWORD *)(a1 + 268); + v72 = i; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v10); + ++*(_DWORD *)(a1 + 296); + i = v72; + v9 = 0; + result = 1; + } + else + { + v9 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v9) = i; + *(_BYTE *)(a1 + 260) = i; + if ( v7 == "" ) + break; + } + return result; + case 0x1A: + case 0x1D: + result = *(_DWORD *)(a1 + 256); + v11 = "volatile"; + for ( j = 32; ; j = *v11++ ) + { + if ( result == 255 ) + { + v14 = *(_DWORD *)(a1 + 268); + v73 = j; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v14); + ++*(_DWORD *)(a1 + 296); + j = v73; + v13 = 0; + result = 1; + } + else + { + v13 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v13) = j; + *(_BYTE *)(a1 + 260) = j; + if ( v11 == "" ) + break; + } + return result; + case 0x1B: + case 0x1E: + result = *(_DWORD *)(a1 + 256); + v15 = "const"; + for ( k = 32; ; k = *v15++ ) + { + if ( result == 255 ) + { + v18 = *(_DWORD *)(a1 + 268); + v74 = k; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v18); + ++*(_DWORD *)(a1 + 296); + k = v74; + v17 = 0; + result = 1; + } + else + { + v17 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v17) = k; + *(_BYTE *)(a1 + 260) = k; + if ( v15 == "" ) + break; + } + return result; + case 0x1F: + v19 = *(_DWORD *)(a1 + 256); + if ( v19 == 255 ) + { + v68 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v68); + *(_BYTE *)a1 = 32; + result = 1; + ++*(_DWORD *)(a1 + 296); +LABEL_53: + v37 = result + 1; + goto LABEL_54; + } + result = v19 + 1; + *(_DWORD *)(a1 + 256) = v19 + 1; + *(_BYTE *)(a1 + v19) = 32; + *(_BYTE *)(a1 + 260) = 32; +LABEL_52: + if ( result != 255 ) + goto LABEL_53; + v71 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v71); + ++*(_DWORD *)(a1 + 296); + v37 = 1; + result = 0; +LABEL_54: + *(_DWORD *)(a1 + 256) = v37; + *(_BYTE *)(a1 + result) = 38; + *(_BYTE *)(a1 + 260) = 38; + return result; + case 0x20: + v20 = *(_DWORD *)(a1 + 256); + result = v20 + 1; + if ( v20 == 255 ) + { + v70 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v70); + ++*(_DWORD *)(a1 + 296); + result = 1; + v20 = 0; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v20) = 32; + *(_BYTE *)(a1 + 260) = 32; + goto LABEL_27; + case 0x21: + v25 = *(_DWORD *)(a1 + 256); + v26 = v25 + 1; + if ( v25 == 255 ) + { + v69 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v69); + ++*(_DWORD *)(a1 + 296); + v26 = 1; + v25 = 0; + } + *(_DWORD *)(a1 + 256) = v26; + *(_BYTE *)(a1 + v25) = 32; + *(_BYTE *)(a1 + 260) = 32; + a3 = (_DWORD *)v4[3]; + return d_print_comp(a3, a2); + case 0x22: + if ( (a2 & 4) == 0 ) + { + result = *(_DWORD *)(a1 + 256); + v27 = result + 1; + if ( result == 255 ) + { + v28 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v28); + ++*(_DWORD *)(a1 + 296); + v27 = 1; + result = 0; + } + *(_DWORD *)(a1 + 256) = v27; + *(_BYTE *)(a1 + result) = 42; + *(_BYTE *)(a1 + 260) = 42; + } + return result; + case 0x23: + result = *(_DWORD *)(a1 + 256); + goto LABEL_52; + case 0x24: + result = *(_DWORD *)(a1 + 256); +LABEL_27: + v21 = "&&"; + for ( m = 38; ; m = *v21 ) + { + if ( result == 255 ) + { + v24 = *(_DWORD *)(a1 + 268); + v75 = m; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v24); + ++*(_DWORD *)(a1 + 296); + m = v75; + v23 = 0; + result = 1; + } + else + { + v23 = result++; + } + ++v21; + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v23) = m; + *(_BYTE *)(a1 + 260) = m; + if ( "" == v21 ) + break; + } + return result; + case 0x25: + result = *(_DWORD *)(a1 + 256); + v51 = "omplex "; + for ( n = 99; ; n = *v51++ ) + { + if ( result == 255 ) + { + v54 = *(_DWORD *)(a1 + 268); + v80 = n; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v54); + ++*(_DWORD *)(a1 + 296); + n = v80; + v53 = 0; + result = 1; + } + else + { + v53 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v53) = n; + *(_BYTE *)(a1 + 260) = n; + if ( v51 == "" ) + break; + } + return result; + case 0x26: + result = *(_DWORD *)(a1 + 256); + v55 = "maginary "; + for ( ii = 105; ; ii = *v55++ ) + { + if ( result == 255 ) + { + v58 = *(_DWORD *)(a1 + 268); + v81 = ii; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v58); + ++*(_DWORD *)(a1 + 296); + ii = v81; + v57 = 0; + result = 1; + } + else + { + v57 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v57) = ii; + *(_BYTE *)(a1 + 260) = ii; + if ( v55 == "" ) + break; + } + return result; + case 0x2B: + if ( *(_BYTE *)(a1 + 260) != 40 ) + { + v29 = *(_DWORD *)(a1 + 256); + v30 = v29 + 1; + if ( v29 == 255 ) + { + v31 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v31); + ++*(_DWORD *)(a1 + 296); + v30 = 1; + v29 = 0; + } + *(_DWORD *)(a1 + 256) = v30; + *(_BYTE *)(a1 + v29) = 32; + *(_BYTE *)(a1 + 260) = 32; + } + v32 = v4[2]; + v33 = "::*"; + d_print_comp(v32, a2); + result = *(_DWORD *)(a1 + 256); + for ( jj = 58; ; jj = *v33 ) + { + if ( result == 255 ) + { + v36 = *(_DWORD *)(a1 + 268); + v76 = jj; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v36); + ++*(_DWORD *)(a1 + 296); + jj = v76; + v35 = 0; + result = 1; + } + else + { + v35 = result++; + } + ++v33; + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v35) = jj; + *(_BYTE *)(a1 + 260) = jj; + if ( "" == v33 ) + break; + } + return result; + case 0x2D: + v46 = *(_DWORD *)(a1 + 256); + v47 = "__vector("; + for ( kk = 32; ; kk = *v47++ ) + { + if ( v46 == 255 ) + { + v50 = *(_DWORD *)(a1 + 268); + v79 = kk; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v50); + ++*(_DWORD *)(a1 + 296); + kk = v79; + v49 = 0; + v46 = 1; + } + else + { + v49 = v46++; + } + *(_DWORD *)(a1 + 256) = v46; + *(_BYTE *)(a1 + v49) = kk; + *(_BYTE *)(a1 + 260) = kk; + if ( v47 == "" ) + break; + } + v63 = v4[2]; + goto LABEL_96; + case 0x4D: + result = *(_DWORD *)(a1 + 256); + v59 = "transaction_safe"; + for ( mm = 32; ; mm = *v59++ ) + { + if ( result == 255 ) + { + v62 = *(_DWORD *)(a1 + 268); + v82 = mm; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v62); + ++*(_DWORD *)(a1 + 296); + mm = v82; + v61 = 0; + result = 1; + } + else + { + v61 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v61) = mm; + *(_BYTE *)(a1 + 260) = mm; + if ( v59 == "" ) + break; + } + return result; + case 0x4F: + result = *(_DWORD *)(a1 + 256); + v42 = "noexcept"; + for ( nn = 32; ; nn = *v42++ ) + { + if ( result == 255 ) + { + v45 = *(_DWORD *)(a1 + 268); + v78 = nn; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v45); + ++*(_DWORD *)(a1 + 296); + nn = v78; + v44 = 0; + result = 1; + } + else + { + v44 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v44) = nn; + *(_BYTE *)(a1 + 260) = nn; + if ( v42 == "" ) + break; + } + goto LABEL_92; + case 0x50: + result = *(_DWORD *)(a1 + 256); + v38 = "throw"; + for ( i1 = 32; ; i1 = *v38++ ) + { + if ( result == 255 ) + { + v41 = *(_DWORD *)(a1 + 268); + v77 = i1; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v41); + ++*(_DWORD *)(a1 + 296); + i1 = v77; + v40 = 0; + result = 1; + } + else + { + v40 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v40) = i1; + *(_BYTE *)(a1 + 260) = i1; + if ( v38 == "" ) + break; + } +LABEL_92: + v63 = v4[3]; + if ( v63 ) + { + v64 = result + 1; + if ( result == 255 ) + { + v65 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v65); + v63 = v4[3]; + v64 = 1; + result = 0; + ++*(_DWORD *)(a1 + 296); + } + *(_DWORD *)(a1 + 256) = v64; + *(_BYTE *)(a1 + result) = 40; + *(_BYTE *)(a1 + 260) = 40; +LABEL_96: + d_print_comp(v63, a2); + result = *(_DWORD *)(a1 + 256); + v66 = result + 1; + if ( result == 255 ) + { + v67 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v67); + ++*(_DWORD *)(a1 + 296); + v66 = 1; + result = 0; + } + *(_DWORD *)(a1 + 256) = v66; + *(_BYTE *)(a1 + result) = 41; + *(_BYTE *)(a1 + 260) = 41; + } + return result; + default: + return d_print_comp(a3, a2); + } +} +// 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); + +//----- (0044C180) -------------------------------------------------------- +int __usercall d_print_function_type_isra_0@(int a1@, int a2@, int *a3@, int **a4) +{ + int **v6; // ecx + char v7; // cl + int v8; // eax + int v9; // ecx + int v10; // ebp + int v11; // eax + int v12; // ecx + int v13; // eax + int v14; // ecx + int v15; // ecx + int result; // eax + int v17; // eax + int v18; // eax + int v19; // eax + int v20; // eax + int v21; // eax + + if ( !a4 ) + goto LABEL_19; + v6 = a4; + while ( 2 ) + { + if ( v6[2] ) + { +LABEL_19: + v10 = *(_DWORD *)(a1 + 276); + *(_DWORD *)(a1 + 276) = 0; + d_print_mod_list(a1, a2, a4, 0); + v12 = *(_DWORD *)(a1 + 256); + if ( v12 != 255 ) + { +LABEL_13: + v13 = v12 + 1; + *(_DWORD *)(a1 + 256) = v12 + 1; + *(_BYTE *)(a1 + v12) = 40; + *(_BYTE *)(a1 + 260) = 40; + v14 = *a3; + if ( !*a3 ) + goto LABEL_15; + goto LABEL_14; + } + goto LABEL_20; + } + switch ( *v6[1] ) + { + case 25: + case 26: + case 27: + case 33: + case 37: + case 38: + case 43: + v7 = *(_BYTE *)(a1 + 260); + v8 = *(_DWORD *)(a1 + 256); + goto LABEL_6; + case 34: + case 35: + case 36: + v7 = *(_BYTE *)(a1 + 260); + v8 = *(_DWORD *)(a1 + 256); + if ( (*(_BYTE *)(a1 + 260) & 0xFD) == 40 ) + { + if ( v8 == 255 ) + goto LABEL_24; + goto LABEL_10; + } +LABEL_6: + if ( v7 != 32 ) + { + if ( v8 == 255 ) + { + v20 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); + *(_BYTE *)a1 = 32; + v8 = 1; + ++*(_DWORD *)(a1 + 296); + goto LABEL_10; + } + *(_DWORD *)(a1 + 256) = v8 + 1; + *(_BYTE *)(a1 + v8++) = 32; + *(_BYTE *)(a1 + 260) = 32; + } + if ( v8 != 255 ) + { +LABEL_10: + v9 = v8 + 1; + goto LABEL_11; + } +LABEL_24: + v18 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v18); + ++*(_DWORD *)(a1 + 296); + v9 = 1; + v8 = 0; +LABEL_11: + *(_DWORD *)(a1 + 256) = v9; + *(_BYTE *)(a1 + v8) = 40; + v10 = *(_DWORD *)(a1 + 276); + *(_BYTE *)(a1 + 260) = 40; + *(_DWORD *)(a1 + 276) = 0; + d_print_mod_list(a1, a2, a4, 0); + v11 = *(_DWORD *)(a1 + 256); + if ( v11 != 255 ) + { + v12 = v11 + 1; + *(_DWORD *)(a1 + 256) = v11 + 1; + *(_BYTE *)(a1 + v11) = 41; + *(_BYTE *)(a1 + 260) = 41; + if ( v11 != 254 ) + goto LABEL_13; +LABEL_20: + v17 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v17); + *(_BYTE *)a1 = 40; + *(_BYTE *)(a1 + 260) = 40; + v14 = *a3; + ++*(_DWORD *)(a1 + 296); + *(_DWORD *)(a1 + 256) = 1; + if ( !v14 ) + { + v13 = 1; + goto LABEL_16; + } + goto LABEL_14; + } + v21 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v21); + *(_BYTE *)(a1 + 260) = 40; + *(_WORD *)a1 = 10281; + ++*(_DWORD *)(a1 + 296); + *(_DWORD *)(a1 + 256) = 2; + v14 = *a3; + v13 = 2; + if ( !*a3 ) + goto LABEL_16; +LABEL_14: + d_print_comp(v14, a2); + v13 = *(_DWORD *)(a1 + 256); +LABEL_15: + if ( v13 == 255 ) + { + v19 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v19); + ++*(_DWORD *)(a1 + 296); + v15 = 1; + v13 = 0; + goto LABEL_17; + } +LABEL_16: + v15 = v13 + 1; +LABEL_17: + *(_DWORD *)(a1 + 256) = v15; + *(_BYTE *)(a1 + v13) = 41; + *(_BYTE *)(a1 + 260) = 41; + result = d_print_mod_list(a1, a2, a4, 1); + *(_DWORD *)(a1 + 276) = v10; + return result; + default: + v6 = (int **)*v6; + if ( !v6 ) + goto LABEL_19; + continue; + } + } +} +// 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); + +//----- (0044C4B0) -------------------------------------------------------- +int __usercall d_print_mod_list@(int result@, int a2@, int **a3@, int a4) +{ + int v5; // esi + int **v6; // ebx + int *v7; // eax + int v8; // edi + int *v9; // ecx + unsigned int v10; // edx + int *v11; // edx + int v12; // eax + int v13; // ecx + int v14; // eax + int v15; // ecx + int v16; // eax + unsigned int v17; // eax + const char *v18; // edi + char i; // bl + int v20; // ecx + int v21; // eax + int v22; // eax + char *v23; // ebx + char j; // cl + int v25; // edx + int v26; // eax + char *v27; // ebx + size_t v28; // ecx + int v29; // eax + char *v30; // edi + int v31; // ecx + char v32; // dl + int v33; // eax + const char *v34; // ebx + char k; // cl + int v36; // edx + int v37; // eax + int v38; // [esp+14h] [ebp-48h] + unsigned int *v39; // [esp+14h] [ebp-48h] + int v40; // [esp+14h] [ebp-48h] + int **v41; // [esp+18h] [ebp-44h] + char v42; // [esp+18h] [ebp-44h] + char v43; // [esp+18h] [ebp-44h] + char v44; // [esp+18h] [ebp-44h] + int v45; // [esp+1Ch] [ebp-40h] + char Str[53]; // [esp+27h] [ebp-35h] BYREF + + if ( a3 ) + { + v5 = result; + v6 = a3; + do + { + if ( *(_DWORD *)(v5 + 280) ) + return result; + if ( !v6[2] ) + { + v9 = v6[1]; + result = a4; + v10 = *v9; + if ( a4 ) + { +LABEL_4: + v7 = v6[3]; + v8 = *(_DWORD *)(v5 + 272); + v6[2] = (int *)1; + *(_DWORD *)(v5 + 272) = v7; + switch ( v10 ) + { + case 0x29u: + result = d_print_function_type_isra_0(*v6); + *(_DWORD *)(v5 + 272) = v8; + return result; + case 0x2Au: + result = d_print_array_type_isra_0(v5, a2, v9 + 2, (int **)*v6); + *(_DWORD *)(v5 + 272) = v8; + return result; + case 2u: + v12 = *(_DWORD *)(v5 + 276); + v13 = v9[2]; + *(_DWORD *)(v5 + 276) = 0; + v38 = v12; + d_print_comp(v13, a2); + *(_DWORD *)(v5 + 276) = v38; + v14 = *(_DWORD *)(v5 + 256); + if ( (a2 & 4) != 0 ) + { + v15 = v14 + 1; + if ( v14 == 255 ) + { + v16 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + (*(void (__thiscall **)(int, int, int, int))(v5 + 264))(v15, v5, 255, v16); + ++*(_DWORD *)(v5 + 296); + v15 = 1; + v14 = 0; + } + *(_DWORD *)(v5 + 256) = v15; + *(_BYTE *)(v5 + v14) = 46; + *(_BYTE *)(v5 + 260) = 46; + } + else + { + v40 = v8; + v41 = v6; + v18 = "::"; + for ( i = 58; ; i = *v18 ) + { + if ( v14 == 255 ) + { + v21 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v21); + ++*(_DWORD *)(v5 + 296); + v14 = 1; + v20 = 0; + } + else + { + v20 = v14++; + } + ++v18; + *(_DWORD *)(v5 + 256) = v14; + *(_BYTE *)(v5 + v20) = i; + *(_BYTE *)(v5 + 260) = i; + if ( v18 == "" ) + break; + } + v8 = v40; + v6 = v41; + } + v39 = (unsigned int *)v6[1][3]; + v17 = *v39; + if ( *v39 == 71 ) + { + v22 = *(_DWORD *)(v5 + 256); + v23 = "{default arg#" + 1; + for ( j = 123; ; j = *v23++ ) + { + if ( v22 == 255 ) + { + v26 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + v42 = j; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v26); + ++*(_DWORD *)(v5 + 296); + j = v42; + v25 = 0; + v22 = 1; + } + else + { + v25 = v22++; + } + *(_DWORD *)(v5 + 256) = v22; + *(_BYTE *)(v5 + v25) = j; + *(_BYTE *)(v5 + 260) = j; + if ( v23 == "" ) + break; + } + v27 = Str; + sprintf(Str, "%d", v39[3] + 1); + v28 = strlen(Str); + v29 = *(_DWORD *)(v5 + 256); + if ( v28 ) + { + v45 = v8; + v30 = &Str[v28]; + do + { + v32 = *v27; + if ( v29 == 255 ) + { + v33 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + v43 = v32; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v33); + ++*(_DWORD *)(v5 + 296); + v32 = v43; + v31 = 0; + v29 = 1; + } + else + { + v31 = v29++; + } + ++v27; + *(_DWORD *)(v5 + 256) = v29; + *(_BYTE *)(v5 + v31) = v32; + *(_BYTE *)(v5 + 260) = v32; + } + while ( v30 != v27 ); + v8 = v45; + } + v34 = "}::"; + for ( k = 125; ; k = *v34 ) + { + if ( v29 == 255 ) + { + v37 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + v44 = k; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v37); + ++*(_DWORD *)(v5 + 296); + k = v44; + v36 = 0; + v29 = 1; + } + else + { + v36 = v29++; + } + *(_DWORD *)(v5 + 256) = v29; + ++v34; + *(_BYTE *)(v5 + v36) = k; + *(_BYTE *)(v5 + 260) = k; + if ( v34 == "" ) + break; + } + goto LABEL_29; + } + while ( 1 ) + { + if ( v17 != 77 ) + { + if ( v17 > 0x4D ) + { + if ( v17 - 79 > 1 ) + { +LABEL_24: + result = d_print_comp(v39, a2); + *(_DWORD *)(v5 + 272) = v8; + return result; + } + } + else if ( v17 - 28 > 4 ) + { + goto LABEL_24; + } + } +LABEL_29: + v39 = (unsigned int *)v39[2]; + v17 = *v39; + } + } +LABEL_7: + result = d_print_mod(v5, a2, v9); + *(_DWORD *)(v5 + 272) = v8; + goto LABEL_8; + } + if ( v10 == 77 ) + goto LABEL_8; + if ( v10 > 0x4D ) + { + if ( v10 - 79 <= 1 ) + goto LABEL_8; + v11 = v6[3]; + v8 = *(_DWORD *)(v5 + 272); + v6[2] = (int *)1; + *(_DWORD *)(v5 + 272) = v11; + goto LABEL_7; + } + if ( v10 - 28 > 4 ) + goto LABEL_4; + } +LABEL_8: + v6 = (int **)*v6; + } + while ( v6 ); + } + return result; +} +// 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); +// 44C180: using guessed type _DWORD __cdecl d_print_function_type_isra_0(_DWORD); +// 44C4B0: using guessed type char Str[53]; + +//----- (0044C8A0) -------------------------------------------------------- +int __usercall d_print_array_type_isra_0@(int a1@, int a2@, int *a3@, int **a4) +{ + int **v7; // eax + int v8; // eax + int v9; // edx + int result; // eax + int v11; // ecx + int v12; // edx + int v13; // eax + int v14; // eax + int v15; // eax + int v16; // eax + char *v17; // ebp + char i; // dl + int v19; // ecx + int v20; // eax + int v21; // edx + int v22; // eax + char v23; // [esp+1Fh] [ebp-1Dh] + + v7 = a4; + if ( !a4 ) + { +LABEL_5: + v8 = *(_DWORD *)(a1 + 256); + goto LABEL_6; + } + while ( v7[2] ) + { + v7 = (int **)*v7; + if ( !v7 ) + { + d_print_mod_list(0); + goto LABEL_5; + } + } + if ( *v7[1] != 42 ) + { + v16 = *(_DWORD *)(a1 + 256); + v17 = (char *)&unk_5318D8; + for ( i = 32; ; i = *v17 ) + { + if ( v16 == 255 ) + { + v20 = *(_DWORD *)(a1 + 268); + v23 = i; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); + ++*(_DWORD *)(a1 + 296); + i = v23; + v19 = 0; + v16 = 1; + } + else + { + v19 = v16++; + } + *(_DWORD *)(a1 + 256) = v16; + ++v17; + *(_BYTE *)(a1 + v19) = i; + *(_BYTE *)(a1 + 260) = i; + if ( &unk_5318DA == (_UNKNOWN *)v17 ) + break; + } + d_print_mod_list(0); + v21 = *(_DWORD *)(a1 + 256); + if ( v21 == 255 ) + { + v22 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v22); + *(_BYTE *)a1 = 41; + v8 = 1; + ++*(_DWORD *)(a1 + 296); +LABEL_7: + v9 = v8 + 1; + *(_DWORD *)(a1 + 256) = v8 + 1; + *(_BYTE *)(a1 + v8) = 32; + *(_BYTE *)(a1 + 260) = 32; + goto LABEL_8; + } + v8 = v21 + 1; + *(_DWORD *)(a1 + 256) = v21 + 1; + *(_BYTE *)(a1 + v21) = 41; + *(_BYTE *)(a1 + 260) = 41; +LABEL_6: + if ( v8 == 255 ) + { + v15 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v15); + *(_BYTE *)(a1 + 260) = 91; + *(_WORD *)a1 = 23328; + v11 = *a3; + result = 2; + ++*(_DWORD *)(a1 + 296); + *(_DWORD *)(a1 + 256) = 2; + if ( !v11 ) + goto LABEL_12; + goto LABEL_10; + } + goto LABEL_7; + } + d_print_mod_list(0); + v9 = *(_DWORD *)(a1 + 256); +LABEL_8: + if ( v9 == 255 ) + { + v13 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v13); + *(_BYTE *)a1 = 91; + *(_BYTE *)(a1 + 260) = 91; + v11 = *a3; + ++*(_DWORD *)(a1 + 296); + *(_DWORD *)(a1 + 256) = 1; + if ( !v11 ) + { + result = 1; + goto LABEL_12; + } + } + else + { + result = v9 + 1; + *(_DWORD *)(a1 + 256) = v9 + 1; + *(_BYTE *)(a1 + v9) = 91; + *(_BYTE *)(a1 + 260) = 91; + v11 = *a3; + if ( !*a3 ) + goto LABEL_11; + } +LABEL_10: + d_print_comp(v11, a2); + result = *(_DWORD *)(a1 + 256); +LABEL_11: + if ( result == 255 ) + { + v14 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v14); + ++*(_DWORD *)(a1 + 296); + v12 = 1; + result = 0; + goto LABEL_13; + } +LABEL_12: + v12 = result + 1; +LABEL_13: + *(_DWORD *)(a1 + 256) = v12; + *(_BYTE *)(a1 + result) = 93; + *(_BYTE *)(a1 + 260) = 93; + return result; +} +// 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); +// 44C4B0: using guessed type _DWORD __cdecl d_print_mod_list(_DWORD); + +//----- (0044CB70) -------------------------------------------------------- +int __usercall d_print_expr_op@(int a1@, int a2@, _DWORD *a3@) +{ + int result; // eax + int v5; // edi + char *v6; // esi + char *v7; // edi + int v8; // edx + char v9; // bp + int v10; // eax + + if ( *a3 != 50 ) + return d_print_comp(a3, a2); + result = a3[2]; + v5 = *(_DWORD *)(result + 8); + v6 = *(char **)(result + 4); + if ( v5 ) + { + result = *(_DWORD *)(a1 + 256); + v7 = &v6[v5]; + do + { + v9 = *v6; + if ( result == 255 ) + { + v10 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v10); + ++*(_DWORD *)(a1 + 296); + result = 1; + v8 = 0; + } + else + { + v8 = result++; + } + ++v6; + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v8) = v9; + *(_BYTE *)(a1 + 260) = v9; + } + while ( v6 != v7 ); + } + return result; +} +// 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); + +//----- (0044CC20) -------------------------------------------------------- +int __usercall d_print_subexpr@(int a1@, int a2@, _DWORD *a3@) +{ + int v4; // eax + int v5; // eax + int v6; // esi + int result; // eax + int v8; // edx + int v9; // eax + int v10; // [esp+8h] [ebp-24h] + int v11; // [esp+18h] [ebp-14h] + _DWORD *v12; // [esp+1Ch] [ebp-10h] + + v4 = *a3; + if ( *a3 <= 1u || v4 == 49 || v4 == 6 ) + return d_print_comp(a3, a2); + v5 = *(_DWORD *)(a1 + 256); + v6 = v5 + 1; + if ( v5 == 255 ) + { + v12 = a3; + v6 = 1; + v11 = a2; + v10 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v10); + a3 = v12; + a2 = v11; + v5 = 0; + ++*(_DWORD *)(a1 + 296); + } + *(_DWORD *)(a1 + 256) = v6; + *(_BYTE *)(a1 + v5) = 40; + *(_BYTE *)(a1 + 260) = 40; + d_print_comp(a3, a2); + result = *(_DWORD *)(a1 + 256); + v8 = result + 1; + if ( result == 255 ) + { + v9 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); + ++*(_DWORD *)(a1 + 296); + v8 = 1; + result = 0; + } + *(_DWORD *)(a1 + 256) = v8; + *(_BYTE *)(a1 + result) = 41; + *(_BYTE *)(a1 + 260) = 41; + return result; +} +// 446CD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); + +//----- (0044CD20) -------------------------------------------------------- +int __usercall d_maybe_print_fold_expression_isra_0@(int a1@, int a2@, int a3@, int a4) +{ + _BYTE *v5; // eax + _DWORD *v7; // edi + int v8; // esi + char v9; // al + int v10; // eax + int v11; // edx + const char *v12; // esi + int v13; // eax + char k; // dl + int v15; // ecx + int v16; // eax + _DWORD *v18; // ecx + int v19; // eax + int v20; // edx + int v21; // eax + int v22; // eax + int v23; // edx + const char *v24; // esi + int v25; // eax + char j; // dl + int v27; // ecx + int v28; // eax + _DWORD *v29; // esi + int v30; // eax + const char *v31; // esi + char i; // dl + int v33; // ecx + int v34; // eax + int v35; // eax + int v36; // eax + _DWORD *v37; // [esp+10h] [ebp-2Ch] + char v38; // [esp+10h] [ebp-2Ch] + int v39; // [esp+14h] [ebp-28h] + _DWORD *v40; // [esp+18h] [ebp-24h] + char v41; // [esp+18h] [ebp-24h] + char v42; // [esp+1Fh] [ebp-1Dh] + + v5 = **(_BYTE ***)(a3 + 8); + if ( *v5 != 102 ) + return 0; + v40 = 0; + v37 = *(_DWORD **)(*(_DWORD *)a4 + 8); + v7 = *(_DWORD **)(*(_DWORD *)a4 + 12); + if ( *v7 == 60 ) + { + v29 = (_DWORD *)v7[3]; + v7 = (_DWORD *)v7[2]; + v40 = v29; + } + v8 = *(_DWORD *)(a1 + 292); + *(_DWORD *)(a1 + 292) = -1; + v9 = v5[1]; + v39 = v8; + if ( v9 == 108 ) + { + v30 = *(_DWORD *)(a1 + 256); + v31 = "(..."; + for ( i = 40; ; i = *v31 ) + { + if ( v30 == 255 ) + { + v34 = *(_DWORD *)(a1 + 268); + v41 = i; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v34); + ++*(_DWORD *)(a1 + 296); + i = v41; + v33 = 0; + v30 = 1; + } + else + { + v33 = v30++; + } + *(_DWORD *)(a1 + 256) = v30; + ++v31; + *(_BYTE *)(a1 + v33) = i; + *(_BYTE *)(a1 + 260) = i; + if ( v31 == "" ) + break; + } + d_print_expr_op(a1, a2, v37); + v18 = v7; +LABEL_18: + d_print_subexpr(a1, a2, v18); + v19 = *(_DWORD *)(a1 + 256); + v20 = v19 + 1; + if ( v19 == 255 ) + { + v21 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v21); + ++*(_DWORD *)(a1 + 296); + v20 = 1; + v19 = 0; + } + *(_DWORD *)(a1 + 256) = v20; + *(_BYTE *)(a1 + v19) = 41; + *(_BYTE *)(a1 + 260) = 41; + goto LABEL_21; + } + if ( v9 > 108 ) + { + if ( v9 == 114 ) + { + v22 = *(_DWORD *)(a1 + 256); + v23 = v22 + 1; + if ( v22 == 255 ) + { + v35 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v35); + ++*(_DWORD *)(a1 + 296); + v23 = 1; + v22 = 0; + } + *(_DWORD *)(a1 + 256) = v23; + v24 = "...)"; + *(_BYTE *)(a1 + v22) = 40; + *(_BYTE *)(a1 + 260) = 40; + d_print_subexpr(a1, a2, v7); + d_print_expr_op(a1, a2, v37); + v25 = *(_DWORD *)(a1 + 256); + for ( j = 46; ; j = *v24 ) + { + if ( v25 == 255 ) + { + v28 = *(_DWORD *)(a1 + 268); + v38 = j; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v28); + ++*(_DWORD *)(a1 + 296); + j = v38; + v27 = 0; + v25 = 1; + } + else + { + v27 = v25++; + } + ++v24; + *(_DWORD *)(a1 + 256) = v25; + *(_BYTE *)(a1 + v27) = j; + *(_BYTE *)(a1 + 260) = j; + if ( v24 == "" ) + break; + } + } + goto LABEL_21; + } + if ( v9 == 76 || v9 == 82 ) + { + v10 = *(_DWORD *)(a1 + 256); + v11 = v10 + 1; + if ( v10 == 255 ) + { + v36 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v36); + ++*(_DWORD *)(a1 + 296); + v11 = 1; + v10 = 0; + } + *(_DWORD *)(a1 + 256) = v11; + v12 = "..."; + *(_BYTE *)(a1 + v10) = 40; + *(_BYTE *)(a1 + 260) = 40; + d_print_subexpr(a1, a2, v7); + d_print_expr_op(a1, a2, v37); + v13 = *(_DWORD *)(a1 + 256); + for ( k = 46; ; k = *v12 ) + { + if ( v13 == 255 ) + { + v16 = *(_DWORD *)(a1 + 268); + v42 = k; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v16); + ++*(_DWORD *)(a1 + 296); + k = v42; + v15 = 0; + v13 = 1; + } + else + { + v15 = v13++; + } + ++v12; + *(_DWORD *)(a1 + 256) = v13; + *(_BYTE *)(a1 + v15) = k; + *(_BYTE *)(a1 + 260) = k; + if ( v12 == "" ) + break; + } + d_print_expr_op(a1, a2, v37); + v18 = v40; + goto LABEL_18; + } +LABEL_21: + *(_DWORD *)(a1 + 292) = v39; + return 1; +} + +//----- (0044D0C0) -------------------------------------------------------- +BOOL __usercall d_demangle_callback_constprop_0@(char *a1@, int a2@, int a3@) +{ + char v4; // al + bool v5; // zf + int v6; // edi + char v7; // al + char v8; // al + size_t v9; // esi + int v10; // ecx + BOOL result; // eax + void *v12; // esp + void *v13; // esp + int v14; // eax + void *v15; // esp + void *v16; // esp + size_t v17; // eax + unsigned int *v18; // ebx + char *v19; // ecx + char v20; // al + int v21; // eax + int v22; // edx + int v23; // eax + void *v24; // esp + void *v25; // esp + int v26; // eax + void *v27; // esp + void *v28; // esp + int v29; // eax + int v30; // edx + unsigned int *comp; // eax + char v32; // dl + char *v33; // edx + char *v34; // esi + char i; // dl + int v36; // edx + int v37; // esi + int *v38; // ebx + unsigned __int8 v39; // si + char v40; // bl + int v41[3]; // [esp+0h] [ebp-1D8h] BYREF + int v42[2]; // [esp+Ch] [ebp-1CCh] BYREF + _BYTE *v43; // [esp+14h] [ebp-1C4h] + int v44; // [esp+18h] [ebp-1C0h] + int *v45; // [esp+1Ch] [ebp-1BCh] + int v46; // [esp+20h] [ebp-1B8h] + int v47; // [esp+24h] [ebp-1B4h] + void (__cdecl *v48)(_DWORD *, int, int); // [esp+28h] [ebp-1B0h] + unsigned int *v49; // [esp+2Ch] [ebp-1ACh] + int v50[2]; // [esp+38h] [ebp-1A0h] BYREF + int v51; // [esp+40h] [ebp-198h] + char *Str; // [esp+44h] [ebp-194h] + int *v53; // [esp+48h] [ebp-190h] + int v54; // [esp+4Ch] [ebp-18Ch] + int v55; // [esp+50h] [ebp-188h] + int *v56; // [esp+54h] [ebp-184h] + int v57; // [esp+58h] [ebp-180h] + size_t v58; // [esp+5Ch] [ebp-17Ch] + int v59; // [esp+60h] [ebp-178h] + int v60; // [esp+64h] [ebp-174h] + int v61; // [esp+68h] [ebp-170h] + int v62; // [esp+6Ch] [ebp-16Ch] + int v63; // [esp+70h] [ebp-168h] + _DWORD v64[64]; // [esp+74h] [ebp-164h] BYREF + int v65; // [esp+174h] [ebp-64h] + char v66; // [esp+178h] [ebp-60h] + void (__cdecl *v67)(_DWORD *, int, int); // [esp+17Ch] [ebp-5Ch] + int v68; // [esp+180h] [ebp-58h] + int v69; // [esp+184h] [ebp-54h] + int v70; // [esp+188h] [ebp-50h] + int v71; // [esp+18Ch] [ebp-4Ch] + int v72; // [esp+190h] [ebp-48h] + int v73; // [esp+194h] [ebp-44h] + int v74; // [esp+198h] [ebp-40h] + int v75; // [esp+19Ch] [ebp-3Ch] + int v76; // [esp+1A0h] [ebp-38h] + int *v77; // [esp+1A4h] [ebp-34h] + int v78; // [esp+1A8h] [ebp-30h] + int v79; // [esp+1ACh] [ebp-2Ch] + int *v80; // [esp+1B0h] [ebp-28h] + int v81; // [esp+1B4h] [ebp-24h] + int v82; // [esp+1B8h] [ebp-20h] + int v83; // [esp+1BCh] [ebp-1Ch] + + v4 = *a1; + v48 = (void (__cdecl *)(_DWORD *, int, int))a2; + v47 = a3; + LOBYTE(v46) = v4; + if ( v4 != 95 || (v6 = 1, a1[1] != 90) ) + { + v5 = memcmp(a1, "_GLOBAL_", 8u) == 0; + v6 = 0; + if ( v5 ) + { + v7 = a1[8]; + if ( v7 == 95 || v7 == 46 || v7 == 36 ) + { + v8 = a1[9]; + if ( v8 == 68 || (v6 = 0, v8 == 73) ) + { + v6 = 0; + if ( a1[10] == 95 ) + v6 = (v8 != 73) + 2; + } + } + } + } + v50[0] = (int)a1; + v9 = strlen(a1); + v51 = 17; + v10 = 2 * v9; + v50[1] = (int)&a1[v9]; + result = 0; + Str = a1; + v55 = 2 * v9; + v54 = 0; + v58 = v9; + v57 = 0; + v59 = 0; + v60 = 0; + v61 = 0; + v62 = 0; + v63 = 0; + if ( 2 * v9 <= 0x800 ) + { + v45 = v41; + v12 = alloca(32 * v9); + v13 = alloca(32 * v9); + v49 = (unsigned int *)v42; + v14 = 16 * ((4 * v9 + 15) >> 4); + v15 = alloca(v14); + v16 = alloca(v14); + v53 = v42; + v56 = v42; + if ( v6 == 1 ) + { + if ( (_BYTE)v46 != 95 || a1[1] != 90 ) + return 0; + Str = a1 + 2; + v18 = d_encoding((int)v50, 1, v10); + if ( (v51 & 1) != 0 ) + { + v19 = Str; + v20 = *Str; + if ( *Str == 46 ) + { + comp = v18; + while ( 1 ) + { + v32 = v19[1]; + if ( (unsigned __int8)(v32 - 97) <= 0x19u || v32 == 95 ) + { + v33 = v19 + 2; + v39 = v19[2] - 97; + LOBYTE(v49) = v19[2]; + if ( v39 <= 0x19u || (_BYTE)v49 == 95 ) + { + v49 = comp; + do + { + do + v40 = *++v33; + while ( (unsigned __int8)(v40 - 97) <= 0x19u ); + } + while ( v40 == 95 ); + comp = v49; + LOBYTE(v49) = v40; + } + } + else + { + if ( (unsigned __int8)(v32 - 48) > 9u ) + { + v18 = comp; + v20 = *v19; + break; + } + v33 = v19; + LOBYTE(v49) = *v19; + } + if ( (_BYTE)v49 == 46 ) + { + do + { + if ( (unsigned __int8)(v33[1] - 48) > 9u ) + break; + v34 = v33 + 2; + for ( i = v33[2]; (unsigned __int8)(i - 48) <= 9u; ++v34 ) + i = v34[1]; + v5 = i == 46; + v33 = v34; + } + while ( v5 ); + } + Str = v33; + if ( v54 >= v55 || (v36 = v33 - v19, v37 = v54 + 1, v38 = &v53[4 * v54], v38[1] = 0, v54 = v37, v36 <= 0) ) + { + v38 = 0; + } + else + { + v38[1] = 0; + *v38 = 0; + v38[2] = (int)v19; + v38[3] = v36; + } + comp = d_make_comp(v50, 78, (int)comp, (int)v38); + v19 = Str; + if ( *Str != 46 ) + { + v18 = comp; + v20 = *Str; + break; + } + } + } + } + else + { + v20 = *Str; + } + } + else if ( (unsigned int)(v6 - 2) > 1 ) + { + v18 = (unsigned int *)d_type( + (int)v50, + v41[0], + v41[1], + v41[2], + v42[0], + v42[1], + (int)v43, + v44, + (int)v45, + v46, + v47, + (int)v48); + v20 = *Str; + } + else + { + v5 = a1[11] == 95; + Str = a1 + 11; + if ( v5 && a1[12] == 90 ) + { + Str = a1 + 13; + v49 = d_encoding((int)v50, 0, v10); + } + else if ( v10 > 0 + && (v46 = ((unsigned int)v42 + 3) >> 2, v17 = strlen(a1 + 11), v54 = 1, *(_DWORD *)(4 * v46 + 4) = 0, v17) ) + { + v42[0] = 0; + v44 = v17; + v43 = a1 + 11; + } + else + { + v49 = 0; + } + v18 = d_make_comp(v50, (v6 != 2) + 68, (int)v49, 0); + Str += strlen(Str); + v20 = *Str; + } + if ( !v20 && v18 ) + { + v65 = 0; + v66 = 0; + v67 = v48; + v69 = 0; + v68 = v47; + v70 = 0; + v74 = 0; + v75 = 0; + v71 = 0; + v72 = 0; + v73 = 0; + v76 = 0; + v77 = 0; + v78 = 0; + v79 = 0; + v80 = 0; + v81 = 0; + v82 = 0; + d_count_templates_scopes(v64, v18, (int)v19); + if ( v72 <= 2047 ) + v72 = 0; + v21 = v79; + v83 = 0; + v22 = v79 * v82; + v82 *= v79; + if ( v79 <= 0 ) + v21 = 1; + v23 = 16 * ((unsigned int)(8 * v21 + 15) >> 4); + v24 = alloca(v23); + v25 = alloca(v23); + if ( v22 <= 0 ) + v22 = 1; + v26 = 16 * ((unsigned int)(8 * v22 + 15) >> 4); + v27 = alloca(v26); + v28 = alloca(v26); + v77 = v42; + v80 = v42; + d_print_comp((int)v64, 17, (int *)v18); + v29 = v65; + v30 = v68; + *((_BYTE *)v64 + v65) = 0; + v67(v64, v29, v30); + return v71 == 0; + } + return 0; + } + return result; +} +// 44D35F: variable 'v19' is possibly undefined + +//----- (0044D680) -------------------------------------------------------- +char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus) +{ + char *v4; // edi + size_t v5; // ebp + size_t v6; // eax + char *Str; // [esp+0h] [ebp-3Ch] + char *Src[2]; // [esp+10h] [ebp-2Ch] BYREF + size_t v10; // [esp+18h] [ebp-24h] + int v11; // [esp+1Ch] [ebp-20h] + + if ( !lpmangled || lpout && !lpoutlen ) + { + if ( lpstatus ) + *lpstatus = -3; + return 0; + } + Src[0] = 0; + Src[1] = 0; + v10 = 0; + v11 = 0; + if ( !d_demangle_callback_constprop_0((char *)lpmangled, (int)d_growable_string_callback_adapter, (int)Src) ) + { + __mingw_free((unsigned int)Src[0]); + if ( !lpstatus ) + return 0; + goto LABEL_25; + } + v4 = Src[0]; + if ( v11 ) + { + v5 = 1; + if ( Src[0] ) + goto LABEL_7; + if ( !lpstatus ) + return 0; + goto LABEL_16; + } + v5 = v10; + if ( Src[0] ) + { +LABEL_7: + if ( lpout ) + { + v6 = strlen(Src[0]); + if ( v6 < *lpoutlen ) + { + memcpy(lpout, Src[0], v6 + 1); + Str = v4; + v4 = lpout; + __mingw_free((unsigned int)Str); + goto LABEL_10; + } + __mingw_free((unsigned int)lpout); + } + else if ( !lpoutlen ) + { +LABEL_10: + if ( lpstatus ) + *lpstatus = 0; + return v4; + } + *lpoutlen = v5; + goto LABEL_10; + } + if ( lpstatus ) + { + if ( v10 == 1 ) + { +LABEL_16: + *lpstatus = -1; + return 0; + } +LABEL_25: + *lpstatus = -2; + return 0; + } + return 0; +} + +//----- (0044D7D0) -------------------------------------------------------- +unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, int a2, int a3) +{ + if ( a1 && a2 ) + return !d_demangle_callback_constprop_0(a1, a2, a3) ? 0xFFFFFFFE : 0; + else + return -3; +} + +//----- (0044D810) -------------------------------------------------------- +char **_setargv() +{ + char **result; // eax + const char *CommandLineA; // ebx + int v2; // eax + void *v3; // esp + void *v4; // esp + int v5; // edi + char *v6; // eax + char v7; // bl + char *v8; // eax + int v9; // edx + char *v10; // esi + char *v11; // edx + char *v12; // edi + int v13; // esi + int v14; // esi + bool v15; // cl + char *v16; // edx + char *v17; // ecx + char *v18; // ecx + int v19; // [esp+0h] [ebp-58h] BYREF + _DWORD v20[3]; // [esp+10h] [ebp-48h] BYREF + int v21; // [esp+1Ch] [ebp-3Ch] + char *Str; // [esp+20h] [ebp-38h] + int v23; // [esp+24h] [ebp-34h] + int v24; // [esp+28h] [ebp-30h] + char *v25; // [esp+2Ch] [ebp-2Ch] + int v26[2]; // [esp+30h] [ebp-28h] BYREF + char **v27; // [esp+38h] [ebp-20h] + int v28; // [esp+3Ch] [ebp-1Ch] + + if ( (_CRT_glob & 2) == 0 ) + return (char **)_mingw32_init_mainargs(); + v20[2] = &v19; + CommandLineA = GetCommandLineA(); + v2 = 16 * ((2 * strlen(CommandLineA) + 17) >> 4); + v3 = alloca(v2); + v4 = alloca(v2); + v28 = 0; + v5 = *CommandLineA; + Str = (char *)v20; + v21 = _CRT_glob & 0x4400 | 0x10; + v6 = (char *)(CommandLineA + 1); + v7 = v5; + v25 = v6; + if ( !v5 ) + goto LABEL_19; + v23 = 0; + v8 = (char *)v20; + v9 = 0; + v24 = 0; + do + { + if ( v7 > 63 ) + { + if ( v7 > 90 ) + { + switch ( v7 ) + { + case '[': + v14 = v9 - 1; + if ( (_CRT_glob & 0x20) != 0 ) + goto LABEL_31; + v15 = 1; + if ( v9 ) + goto LABEL_32; + v16 = v8; + goto LABEL_35; + case '\\': + if ( v24 == 39 ) + *v8++ = 92; + else + ++v9; + goto LABEL_23; + case '{': + case '}': + case '\x7F': +LABEL_30: + v14 = v9 - 1; +LABEL_31: + v15 = v5 == 127 || v24 != 0; + if ( v9 ) + { +LABEL_32: + v16 = &v8[v14 + 1]; + do + *v8++ = 92; + while ( v8 != v16 ); + } + else + { + v16 = v8; + } + v10 = v16; + if ( v15 ) + { +LABEL_35: + *v16 = 127; + v10 = v16 + 1; + } + break; + default: + goto LABEL_7; + } +LABEL_22: + *v10 = v7; + v8 = v10 + 1; + v9 = 0; + goto LABEL_23; + } +LABEL_7: + v10 = &v8[v9]; + if ( v9 ) + { + do + *v8++ = 92; + while ( v8 != v10 ); + } + else + { + v10 = v8; + } + if ( v24 ) + goto LABEL_22; + if ( ___mb_cur_max == 1 ) + { + if ( (__pctype[v5] & 0x40) != 0 ) + { +LABEL_12: + if ( Str < v10 || v23 ) + { + *v10 = 0; + v12 = Str; + v13 = v21 | 1; + __mingw_glob(Str, v21, 0, (char **)v26); + v21 = v13; + v8 = v12; + v9 = 0; + v23 = 0; + } + else + { + v23 = 0; + v8 = v10; + v9 = 0; + } + goto LABEL_23; + } + } + else if ( _isctype(v5, 64) ) + { + goto LABEL_12; + } + if ( v5 != 9 ) + goto LABEL_22; + goto LABEL_12; + } + if ( v7 <= 33 ) + goto LABEL_7; + switch ( v7 ) + { + case '"': + if ( v9 >> 1 ) + { + v18 = &v8[v9 >> 1]; + do + *v8++ = 92; + while ( v8 != v18 ); + } + else + { + v18 = v8; + } + if ( v24 == 39 || (v9 & 1) != 0 ) + { + *v18 = 34; + v8 = v18 + 1; + v9 = 0; + v23 = 1; + } + else + { + v24 ^= 0x22u; + v8 = v18; + v9 = 0; + v23 = 1; + } + break; + case '\'': + if ( (_CRT_glob & 0x10) == 0 ) + goto LABEL_7; + if ( v9 >> 1 ) + { + v17 = &v8[v9 >> 1]; + do + *v8++ = 92; + while ( v8 != v17 ); + } + else + { + v17 = v8; + } + if ( v24 == 34 || (v9 & 1) != 0 ) + { + *v17 = 39; + v8 = v17 + 1; + v9 = 0; + v23 = 1; + } + else + { + v24 ^= 0x27u; + v8 = v17; + v9 = 0; + v23 = 1; + } + break; + case '*': + case ',': + case '?': + goto LABEL_30; + default: + goto LABEL_7; + } +LABEL_23: + v5 = *v25++; + v7 = *(v25 - 1); + } + while ( v7 ); + if ( v9 ) + { + v11 = &v8[v9]; + do + *v8++ = 92; + while ( v8 != v11 ); + } + else + { + v11 = v8; + } + if ( Str < v11 || v23 ) + { + *v11 = 0; + __mingw_glob(Str, v21, 0, (char **)v26); + } +LABEL_19: + _argc = v26[1]; + result = v27; + _bss_start__ = v27; + return result; +} +// 515050: using guessed type int _CRT_glob; + +//----- (0044DBB0) -------------------------------------------------------- +unsigned int __usercall __cpu_features_init@(__int32 a1@) +{ + unsigned int v1; // kr00_4 + unsigned int v2; // kr04_4 + unsigned int v3; // kr08_4 + unsigned int result; // eax + int v14; // eax + __int32 v15; // ebx + __int32 v16; // ebx + int v26[50]; // [esp+0h] [ebp-208h] BYREF + __int32 v27[79]; // [esp+C8h] [ebp-140h] BYREF + unsigned int v28; // [esp+204h] [ebp-4h] + + v1 = __getcallerseflags(); + v28 = v1; + v2 = __readeflags(); + __writeeflags(v2 ^ 0x200000); + v3 = __readeflags(); + __writeeflags(v28); + result = v2 ^ v3; + if ( ((v2 ^ v3) & 0x200000) != 0 ) + { + _EAX = 0; + __asm { cpuid } + if ( result ) + { + _EAX = 1; + __asm { cpuid } + v14 = (_EDX & 0x100) != 0; + if ( (_ECX & 0x2000) != 0 ) + v14 |= 0x80u; + if ( (_EDX & 0x8000) != 0 ) + v14 |= 2u; + if ( (_EDX & 0x800000) != 0 ) + v14 |= 4u; + if ( (_EDX & 0x1000000) != 0 ) + { + v14 |= 8u; + v27[78] = a1; + _fxsave(v26); + v15 = v27[0]; + v27[0] ^= 0x13C0DEu; + _fxrstor(v26); + v27[0] = v15; + _fxsave(v26); + v16 = _InterlockedExchange(v27, v15); + _fxrstor(v26); + if ( (v27[0] ^ v16) == 1294558 ) + { + if ( (_EDX & 0x2000000) != 0 ) + v14 |= 0x10u; + if ( (_EDX & 0x4000000) != 0 ) + v14 |= 0x20u; + if ( (_ECX & 1) != 0 ) + v14 |= 0x40u; + } + } + __cpu_features = v14; + _EAX = 0x80000000; + __asm { cpuid } + if ( result > 0x80000000 ) + { + _EAX = -2147483647; + __asm { cpuid } + result = 0; + if ( _EDX < 0 ) + result = 256; + if ( (_EDX & 0x40000000) != 0 ) + result |= 0x200u; + __cpu_features |= result; + } + } + } + return result; +} +// 44DBB0: could not find valid save-restore pair for ebp +// 78A9CC: using guessed type int __cpu_features; +// 44DBB0: using guessed type __int32 var_140[79]; + +//----- (0044DCC0) -------------------------------------------------------- +void __cdecl __do_global_dtors() +{ + void (*v0)(void); // eax + + v0 = (void (*)(void))*off_51505C; + if ( *off_51505C ) + { + do + { + v0(); + v0 = (void (*)(void))off_51505C[1]; + ++off_51505C; + } + while ( v0 ); + } +} +// 51505C: using guessed type int *off_51505C; + +//----- (0044DD00) -------------------------------------------------------- +int __do_global_ctors() +{ + func_ptr v0; // ebx + func_ptr v2; // eax + + v0 = __CTOR_LIST__[0]; + if ( __CTOR_LIST__[0] == (func_ptr)-1 ) + { + v2 = 0; + do + { + v0 = v2; + v2 = (func_ptr)((char *)v2 + 1); + } + while ( __CTOR_LIST__[(_DWORD)v2] ); + } + for ( ; v0; v0 = (func_ptr)((char *)v0 - 1) ) + __CTOR_LIST__[(_DWORD)v0](); + return atexit(__do_global_dtors); +} + +//----- (0044DD60) -------------------------------------------------------- +int __main() +{ + int result; // eax + + result = dword_78A9D0; + if ( !dword_78A9D0 ) + { + dword_78A9D0 = 1; + return __do_global_ctors(); + } + return result; +} +// 78A9D0: using guessed type int dword_78A9D0; + +//----- (0044DD80) -------------------------------------------------------- +int __stdcall TlsCallback_1(int a1, int a2, int a3) +{ + if ( a2 != 3 && a2 ) + return 1; + __mingw_TLScallback(a1, a2); + return 1; +} + +//----- (0044DDD0) -------------------------------------------------------- +int __stdcall __dyn_tls_init(int a1, int a2, int a3) +{ + if ( _CRT_MT != 2 ) + _CRT_MT = 2; + if ( a2 == 1 ) + __mingw_TLScallback(a1, 1); + return 1; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0044DE80) -------------------------------------------------------- +int __tlregdtor() +{ + return 0; +} + +//----- (0044DE90) -------------------------------------------------------- +void sub_44DE90() +{ + int i; // ebx + LPVOID Value; // esi + + EnterCriticalSection(&CriticalSection); + for ( i = dword_78A9E8; i; i = *(_DWORD *)(i + 8) ) + { + Value = TlsGetValue(*(_DWORD *)i); + if ( !GetLastError() && Value ) + (*(void (__cdecl **)(LPVOID))(i + 4))(Value); + } + LeaveCriticalSection(&CriticalSection); +} +// 78A9E8: using guessed type int dword_78A9E8; + +//----- (0044DEF0) -------------------------------------------------------- +int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2) +{ + int result; // eax + _DWORD *v3; // eax + int v4; // ebx + int v5; // eax + + result = dword_78A9EC; + if ( dword_78A9EC ) + { + v3 = calloc(1u, 0xCu); + v4 = (int)v3; + if ( v3 ) + { + *v3 = a1; + v3[1] = a2; + EnterCriticalSection(&CriticalSection); + v5 = dword_78A9E8; + dword_78A9E8 = v4; + *(_DWORD *)(v4 + 8) = v5; + LeaveCriticalSection(&CriticalSection); + return 0; + } + else + { + return -1; + } + } + return result; +} +// 78A9E8: using guessed type int dword_78A9E8; +// 78A9EC: using guessed type int dword_78A9EC; + +//----- (0044DF70) -------------------------------------------------------- +int __cdecl ___w64_mingwthr_remove_key_dtor(int a1) +{ + _DWORD *v2; // eax + _DWORD *v3; // ecx + int v4; // edx + + if ( !dword_78A9EC ) + return 0; + EnterCriticalSection(&CriticalSection); + v2 = (_DWORD *)dword_78A9E8; + if ( dword_78A9E8 ) + { + v3 = 0; + while ( 1 ) + { + v4 = v2[2]; + if ( *v2 == a1 ) + break; + v3 = v2; + if ( !v4 ) + goto LABEL_11; + v2 = (_DWORD *)v2[2]; + } + if ( v3 ) + v3[2] = v4; + else + dword_78A9E8 = v2[2]; + __mingw_free((unsigned int)v2); + } +LABEL_11: + LeaveCriticalSection(&CriticalSection); + return 0; +} +// 78A9E8: using guessed type int dword_78A9E8; +// 78A9EC: using guessed type int dword_78A9EC; + +//----- (0044E000) -------------------------------------------------------- +int __cdecl __mingw_TLScallback(int a1, int a2) +{ + if ( a2 == 1 ) + { + if ( !dword_78A9EC ) + InitializeCriticalSection(&CriticalSection); + dword_78A9EC = 1; + return 1; + } + else + { + if ( a2 != 3 ) + { + if ( !a2 && dword_78A9EC ) + { + sub_44DE90(); + if ( dword_78A9EC == 1 ) + { + dword_78A9EC = 0; + DeleteCriticalSection(&CriticalSection); + } + } + return 1; + } + if ( !dword_78A9EC ) + return 1; + sub_44DE90(); + return 1; + } +} +// 78A9EC: using guessed type int dword_78A9EC; + +//----- (0044E0C0) -------------------------------------------------------- +void __noreturn sub_44E0C0(char *Format, ...) +{ + va_list va; // [esp+24h] [ebp+8h] BYREF + + va_start(va, Format); + fwrite("Mingw runtime failure:\n", 1u, 0x17u, &__iob[2]); + vfprintf(&__iob[2], Format, va); + abort(); +} + +//----- (0044E110) -------------------------------------------------------- +DWORD __usercall sub_44E110@(const void *lpAddress@, int a2@, DWORD a3@) +{ + DWORD result; // eax + DWORD Protect; // ecx + DWORD v8; // edx + DWORD flOldProtect; // [esp+10h] [ebp-3Ch] BYREF + struct _MEMORY_BASIC_INFORMATION Buffer; // [esp+14h] [ebp-38h] BYREF + + if ( !VirtualQuery(lpAddress, &Buffer, 0x1Cu) ) + sub_44E0C0(" VirtualQuery failed for %d bytes at address %p", 28, lpAddress); + result = Buffer.Protect; + if ( Buffer.Protect == 64 || Buffer.Protect == 4 ) + { + if ( a3 ) + { + result = 0; + do + { + *((_BYTE *)lpAddress + result) = *(_BYTE *)(a2 + result); + ++result; + } + while ( result < a3 ); + } + } + else + { + result = VirtualProtect(Buffer.BaseAddress, Buffer.RegionSize, 0x40u, &flOldProtect); + Protect = Buffer.Protect; + if ( a3 ) + { + v8 = 0; + do + { + result = *(unsigned __int8 *)(a2 + v8); + *((_BYTE *)lpAddress + v8++) = result; + } + while ( v8 < a3 ); + } + if ( Protect != 64 && Protect != 4 ) + return VirtualProtect(Buffer.BaseAddress, Buffer.RegionSize, flOldProtect, &flOldProtect); + } + return result; +} + +//----- (0044E200) -------------------------------------------------------- +int _pei386_runtime_relocator() +{ + int result; // eax + + result = dword_78AA08; + if ( !dword_78AA08 ) + { + dword_78AA08 = 1; + return 0; + } + return result; +} +// 44E200: could not find valid save-restore pair for ebx +// 44E200: could not find valid save-restore pair for edi +// 44E200: could not find valid save-restore pair for esi +// 78AA08: using guessed type int dword_78AA08; + +//----- (0044E3F0) -------------------------------------------------------- +int __cdecl fesetenv(const fenv_t *Env) +{ + unsigned int Fe_stat_low; // [esp+Ch] [ebp-10h] + + _EAX = Env; + Fe_stat_low = 8064; + if ( Env == (const fenv_t *)-3 ) + { + dword_515060 = -1; + } + else + { + if ( Env == (const fenv_t *)-4 ) + { + dword_515060 = -2; +LABEL_12: + __fpreset(); + goto LABEL_8; + } + if ( !Env ) + _EAX = (const fenv_t *)dword_515060; + if ( _EAX != (const fenv_t *)-1 ) + { + if ( _EAX != (const fenv_t *)-2 ) + { + __asm { fldenv byte ptr [eax] } + Fe_stat_low = LOWORD(_EAX[3]._Fe_stat); + goto LABEL_8; + } + goto LABEL_12; + } + } + __asm { fninit } +LABEL_8: + if ( (__cpu_features & 0x10) != 0 ) + _mm_setcsr(Fe_stat_low); + return 0; +} +// 515060: using guessed type int dword_515060; +// 78A9CC: using guessed type int __cpu_features; + +//----- (0044E470) -------------------------------------------------------- +long double __cdecl strtold(const char *String, char **EndPtr) +{ + char v2; // al + int v4; // [esp+28h] [ebp-24h] BYREF + __int64 v5; // [esp+2Ch] [ebp-20h] BYREF + long double v6; // [esp+34h] [ebp-18h] + + v6 = 0.0; + v2 = __strtodg((unsigned __int8 *)String, (unsigned __int8 **)EndPtr, dword_515064, &v4, (int *)&v5); + switch ( v2 & 7 ) + { + case 1: + case 5: + WORD4(v6) = v4 + 16446; + goto LABEL_3; + case 2: +LABEL_3: + *(_QWORD *)&v6 = v5; + break; + case 3: + *(_DWORD *)((char *)&v6 + 6) = 2147450880; + break; + case 4: + *(_DWORD *)((char *)&v6 + 6) = -16384; + break; + default: + break; + } + if ( (v2 & 8) != 0 ) + WORD4(v6) |= 0x8000u; + return v6; +} +// 515064: using guessed type int dword_515064[5]; + +//----- (0044E520) -------------------------------------------------------- +int *__cdecl __increment_D2A(int *a1) +{ + int *v1; // ebx + int v2; // esi + int *v3; // eax + int *result; // eax + int *v5; // edi + + v1 = a1; + v2 = a1[4]; + v3 = a1 + 5; + do + { + if ( *v3 != -1 ) + { + ++*v3; + return a1; + } + *v3++ = 0; + } + while ( &a1[v2 + 5] > v3 ); + if ( v2 >= a1[2] ) + { + v5 = __Balloc_D2A(a1[1] + 1); + memcpy(v5 + 3, a1 + 3, 4 * a1[4] + 8); + v1 = v5; + __Bfree_D2A((unsigned int)a1); + v2 = v5[4]; + } + v1[4] = v2 + 1; + result = v1; + v1[v2 + 5] = 1; + return result; +} + +//----- (0044E5C0) -------------------------------------------------------- +int __usercall sub_44E5C0@(int *a1@, int *a2@, _DWORD *a3@, double a4, int a5, int a6, _DWORD *a7) +{ + int *v8; // eax + int v9; // ecx + int v10; // edi + int *v11; // ebx + int v12; // eax + int v13; // edx + int v14; // ebp + int v15; // edx + int v17; // eax + int v18; // ecx + int v19; // edx + int v20; // ecx + int v21; // esi + int v22; // eax + int v23; // edx + unsigned int v24; // eax + int v25; // eax + int *v26; // eax + int v29; // [esp+20h] [ebp-3Ch] + int v30; // [esp+24h] [ebp-38h] + int v31; // [esp+28h] [ebp-34h] + int v32; // [esp+28h] [ebp-34h] + int v33; // [esp+2Ch] [ebp-30h] + int v34; // [esp+38h] [ebp-24h] BYREF + int v35[8]; // [esp+3Ch] [ebp-20h] BYREF + + v8 = __d2b_D2A(a4, v35, &v34); + v9 = v34; + v10 = *a1; + v11 = v8; + v12 = v34 - *a1; + v13 = v12 + v35[0]; + v34 = v12; + v35[0] += v12; + if ( v12 <= 0 ) + { + if ( !a5 ) + { + v14 = 0; + goto LABEL_10; + } + v30 = 0; + v29 = 0; + if ( !v12 ) + goto LABEL_14; + v11 = __lshift_D2A(v11, v10 - v9); + goto LABEL_36; + } + if ( v10 == 53 ) + { + v14 = 0; + if ( !a5 || a1[3] != 1 ) + goto LABEL_10; + v30 = __any_on_D2A((int)v11, v12); + if ( !v30 ) + { + __rshift_D2A((int)v11, v34); + v29 = 0; + v13 = v35[0]; + goto LABEL_14; + } + } + else + { + if ( a6 != 1 ) + { + if ( a6 == 2 ) + { + v30 = __any_on_D2A((int)v11, v12); + __rshift_D2A((int)v11, v34); +LABEL_29: + v11 = __increment_D2A(v11); + v23 = v10 & 0x1F; + if ( (v10 & 0x1F) != 0 ) + v23 = 32 - v23; + _BitScanReverse(&v24, v11[v11[4] + 4]); + if ( (v24 ^ 0x1F) == v23 ) + { + v29 = 32; + v13 = v35[0]; + } + else + { + if ( !v30 ) + v30 = v11[5] & 1; + __rshift_D2A((int)v11, 1); + v29 = 32; + v13 = ++v35[0]; + } + goto LABEL_14; + } + if ( v12 == 1 ) + { + v14 = 0; + if ( !a5 ) + goto LABEL_10; + v15 = ((unsigned int)v11[5] >> 1) & 1; + } + else + { + v15 = ((unsigned int)v11[((v12 - 1) >> 5) + 5] >> (v12 - 1)) & 1; + } + v31 = v15; + v30 = __any_on_D2A((int)v11, v12); + v29 = v30 != 0 ? 0x10 : 0; + __rshift_D2A((int)v11, v34); + if ( v31 ) + goto LABEL_29; + goto LABEL_36; + } + v30 = __any_on_D2A((int)v11, v12); + if ( !v30 ) + { + __rshift_D2A((int)v11, v34); + v29 = 0; + goto LABEL_36; + } + } + __rshift_D2A((int)v11, v34); + v29 = 16; +LABEL_36: + v13 = v35[0]; +LABEL_14: + v17 = a1[1]; + if ( v17 <= v13 ) + { + v22 = a1[2]; + if ( v22 < v13 ) + { + v35[0] = v22 + 1; + *a7 = 163; + v29 = 0; + *_errno() = 34; + v13 = v35[0]; + v11[4] = 0; + } + goto LABEL_25; + } + v35[0] = a1[1]; + v18 = v17 - v13; + v19 = v18; + if ( v10 < v18 || (v14 = a1[4]) != 0 ) + { + v11[4] = 0; + v13 = v17; + v29 = 0; + *a7 = 80; +LABEL_25: + v14 = 1; + *a2 = v13; + __copybits_D2A(a3, v10, (int)v11); + *a7 |= v29; + goto LABEL_10; + } + v20 = v18 - 1; + if ( v20 > 0 && !v30 ) + { + v33 = v19; + v32 = v20; + v25 = __any_on_D2A((int)v11, v20); + v19 = v33; + v20 = v32; + v30 = v25; + } + if ( a5 | v30 ) + { + v21 = v11[(v20 >> 5) + 5] & (1 << v20); + __rshift_D2A((int)v11, v19); + *a7 = 2; + if ( v21 ) + { + v26 = __increment_D2A(v11); + v29 = 96; + v13 = v35[0]; + v11 = v26; + } + else + { + v13 = v35[0]; + if ( v30 ) + v29 = 80; + } + goto LABEL_25; + } +LABEL_10: + __Bfree_D2A((unsigned int)v11); + return v14; +} +// 44E5C0: using guessed type int var_20[8]; + +//----- (0044E9B0) -------------------------------------------------------- +_DWORD *__cdecl __decrement_D2A(int a1) +{ + _DWORD *result; // eax + unsigned int v2; // ecx + + result = (_DWORD *)(a1 + 20); + v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); + while ( !*result ) + { + *result++ = -1; + if ( v2 <= (unsigned int)result ) + return result; + } + --*result; + return result; +} + +//----- (0044E9F0) -------------------------------------------------------- +int *__cdecl __set_ones_D2A(unsigned int a1, int a2) +{ + int *result; // eax + int v3; // esi + int *v4; // esi + int v5; // edx + int v6; // edx + unsigned int v7; // ecx + int *v8; // edx + + result = (int *)a1; + v3 = (a2 + 31) >> 5; + if ( *(_DWORD *)(a1 + 4) < v3 ) + { + __Bfree_D2A(a1); + result = __Balloc_D2A(v3); + } + v4 = result + 5; + v5 = a2 >> 5; + if ( (a2 & 0x1F) != 0 ) + { + v6 = v5 + 1; + v7 = (unsigned int)&v4[v6]; + result[4] = v6; + if ( v7 <= (unsigned int)v4 ) + goto LABEL_10; + } + else + { + v7 = (unsigned int)&v4[v5]; + result[4] = v5; + if ( (unsigned int)v4 >= v7 ) + return result; + } + v8 = result + 5; + do + *v8++ = -1; + while ( (unsigned int)v8 < v7 ); + if ( v7 < (unsigned int)result + 21 ) + { + v4 = result + 6; + if ( (a2 & 0x1F) == 0 ) + return result; +LABEL_10: + *(v4 - 1) = (unsigned int)*(v4 - 1) >> (32 - (a2 & 0x1F)); + return result; + } + v4 += ((v7 - (unsigned int)result - 21) >> 2) + 1; + if ( (a2 & 0x1F) != 0 ) + goto LABEL_10; + return result; +} + +//----- (0044EAC0) -------------------------------------------------------- +int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, int *a5) +{ + char *decimal_point; // edi + unsigned __int8 *v6; // eax + signed __int8 v7; // cl + unsigned __int8 *v8; // ebp + int v9; // eax + int v10; // ebx + int v11; // edi + unsigned __int8 *v12; // edx + int result; // eax + unsigned __int8 *v14; // edi + int *v15; // eax + unsigned __int8 *v16; // edx + unsigned __int8 *v17; // esi + int v18; // ecx + unsigned __int8 *v19; // edx + unsigned __int8 *v20; // edi + int v21; // esi + unsigned __int8 *v22; // eax + int v23; // eax + int v24; // eax + int v25; // ecx + int *v26; // edx + int *j; // eax + int v28; // ecx + int v29; // edx + int v30; // ecx + int v31; // eax + int v32; // edi + long double v33; // fst7 + int v37; // eax + int v38; // eax + int v39; // ecx + char v40; // al + signed int v41; // esi + long double v42; // fst7 + int *v43; // eax + int v44; // edx + int v45; // esi + int v46; // edi + int v47; // eax + int v48; // edi + int v49; // edx + int v50; // eax + int *v51; // eax + int *v52; // edi + int v53; // esi + int v54; // ebp + int v55; // ebx + int v56; // edx + int v57; // ebx + int v58; // esi + int v59; // eax + int v60; // esi + int v61; // ebp + int v62; // edx + int v63; // eax + int *v64; // eax + int *v65; // ebp + int v66; // ebx + int v67; // eax + int v68; // eax + int v69; // eax + int *v70; // edx + int *v71; // ebx + int *v72; // esi + int *v73; // eax + int v74; // edx + unsigned int v75; // ecx + long double v76; // fst7 + long double v77; // fst5 + int v78; // eax + unsigned __int8 *v79; // edx + int v80; // esi + int v81; // esi + int v82; // edi + int v83; // edx + int v84; // esi + int v85; // ecx + int v86; // ecx + int v87; // edx + char v88; // dl + int v89; // eax + long double v90; // fst6 + int v91; // edx + int v92; // ecx + int v93; // edi + int v94; // esi + int v95; // esi + int v96; // ecx + long double v97; // fst6 + char v98; // cl + int v99; // eax + int v100; // ecx + int *v101; // eax + long double v102; // fst7 + int *v103; // eax + int v104; // edx + unsigned int v105; // ecx + bool v106; // zf + int *v107; // eax + long double v108; // fst6 + long double v109; // fst5 + long double v110; // fst6 + int v111; // ebx + int *v112; // eax + int *v113; // esi + int v116; // eax + int *v117; // esi + int *v118; // eax + int v119; // eax + int v120; // ecx + int v121; // edx + int v122; // edi + int *v123; // edx + int *v124; // eax + int *v125; // ecx + int *v127; // eax + int v128; // ecx + double Str; // [esp+0h] [ebp-CCh] + int Size; // [esp+8h] [ebp-C4h] + int v131; // [esp+Ch] [ebp-C0h] + int v132; // [esp+20h] [ebp-ACh] + double v133; // [esp+20h] [ebp-ACh] + int *v134; // [esp+20h] [ebp-ACh] + int v135; // [esp+2Ch] [ebp-A0h] + int v136; // [esp+2Ch] [ebp-A0h] + int *v137; // [esp+2Ch] [ebp-A0h] + char *v138; // [esp+30h] [ebp-9Ch] + int v139; // [esp+30h] [ebp-9Ch] + int v140; // [esp+30h] [ebp-9Ch] + int v141; // [esp+30h] [ebp-9Ch] + int v142; // [esp+34h] [ebp-98h] + int v143; // [esp+38h] [ebp-94h] + int v144; // [esp+38h] [ebp-94h] + unsigned __int8 *v145; // [esp+38h] [ebp-94h] + int v146; // [esp+40h] [ebp-8Ch] + int v147; // [esp+40h] [ebp-8Ch] + double v148; // [esp+40h] [ebp-8Ch] + int v149; // [esp+48h] [ebp-84h] + int v150; // [esp+48h] [ebp-84h] + unsigned __int8 *i; // [esp+4Ch] [ebp-80h] + int *v152; // [esp+4Ch] [ebp-80h] + BOOL v153; // [esp+4Ch] [ebp-80h] + int v154; // [esp+50h] [ebp-7Ch] + double v155; // [esp+50h] [ebp-7Ch] + int v156; // [esp+58h] [ebp-74h] + unsigned __int8 *v157; // [esp+58h] [ebp-74h] + int v158; // [esp+58h] [ebp-74h] + int v159; // [esp+58h] [ebp-74h] + unsigned __int8 *v160; // [esp+5Ch] [ebp-70h] + int v161; // [esp+5Ch] [ebp-70h] + int v162; // [esp+60h] [ebp-6Ch] + int v163; // [esp+64h] [ebp-68h] + int v164; // [esp+68h] [ebp-64h] + int v165; // [esp+6Ch] [ebp-60h] + int v166; // [esp+70h] [ebp-5Ch] + unsigned int v167; // [esp+74h] [ebp-58h] + void *Src; // [esp+7Ch] [ebp-50h] + int v169; // [esp+80h] [ebp-4Ch] + int v170; // [esp+84h] [ebp-48h] + int v171; // [esp+88h] [ebp-44h] + int v172; // [esp+94h] [ebp-38h] BYREF + int v173; // [esp+98h] [ebp-34h] BYREF + int v174; // [esp+9Ch] [ebp-30h] BYREF + int v175; // [esp+A0h] [ebp-2Ch] BYREF + int v176; // [esp+A4h] [ebp-28h] BYREF + unsigned __int8 *v177; // [esp+A8h] [ebp-24h] BYREF + int *v178; // [esp+ACh] [ebp-20h] BYREF + + decimal_point = localeconv()->decimal_point; + v174 = 0; + v146 = strlen(decimal_point); + v178 = 0; + v142 = *a3; + v6 = a1; + v177 = a1; + while ( 2 ) + { + v7 = *v6; + v8 = v6; + switch ( *v6 ) + { + case 0u: + goto LABEL_13; + case 9u: + case 0xAu: + case 0xBu: + case 0xCu: + case 0xDu: + case 0x20u: + v177 = ++v6; + continue; + case 0x2Bu: + v164 = 0; + goto LABEL_219; + case 0x2Du: + v164 = 1; +LABEL_219: + v177 = v6 + 1; + v7 = v6[1]; + if ( v7 ) + { + v8 = v6 + 1; +LABEL_4: + v132 = 0; + if ( v7 == 48 ) + { + v22 = v8 + 1; + if ( (v8[1] & 0xDF) == 88 ) + { + v174 = __gethex_D2A(&v177, a3, a4, &v178, v164); + if ( v174 != 6 ) + goto LABEL_78; + v177 = a1; + v15 = v178; + if ( a2 ) + *a2 = a1; + goto LABEL_35; + } + do + { + v177 = v22; + v8 = v22; + v7 = *v22++; + } + while ( v7 == 48 ); + v15 = 0; + if ( !v7 ) + goto LABEL_31; + v132 = 1; + } + v170 = a3[4]; + v9 = v7; + if ( (unsigned int)(v7 - 48) > 9 ) + { + v135 = 0; + v12 = v8; + v10 = 0; + v149 = 0; + } + else + { + v138 = decimal_point; + v10 = 0; + v135 = 0; + v11 = 0; + do + { + if ( v10 <= 8 ) + { + v11 = v9 + 10 * v11 - 48; + } + else if ( v10 <= 15 ) + { + v135 = v9 + 10 * v135 - 48; + } + v12 = &v8[++v10]; + v177 = &v8[v10]; + v9 = (char)v8[v10]; + v7 = v8[v10]; + } + while ( (unsigned int)(v9 - 48) <= 9 ); + v149 = v11; + decimal_point = v138; + } + if ( *decimal_point == v7 ) + { + if ( !decimal_point[1] ) + { + v78 = 1; +LABEL_178: + v79 = &v12[v78]; + v177 = v79; + v9 = (char)*v79; + if ( v10 ) + { + v80 = v9 - 48; + v139 = v10; + v14 = 0; + for ( i = 0; (unsigned int)(v9 - 48) <= 9; v80 = v9 - 48 ) + { + v159 = v80; + ++v14; + v145 = v177; + if ( v80 ) + { + i = &i[(_DWORD)v14]; + if ( v14 == (unsigned __int8 *)1 ) + { + v121 = v139++; + } + else + { + v119 = v139; + v120 = v149; + v139 += (int)v14; + v121 = v139 - 1; + v122 = v135; + do + { + if ( v119 <= 8 ) + { + ++v119; + v120 *= 10; + } + else if ( ++v119 <= 16 ) + { + v122 *= 10; + } + } + while ( v121 != v119 ); + v135 = v122; + v149 = v120; + } + if ( v121 <= 8 ) + { +LABEL_217: + v14 = 0; + v149 = v159 + 10 * v149; + } + else + { + v14 = 0; + if ( v139 <= 16 ) + v135 = v80 + 10 * v135; + } + } + v177 = v145 + 1; + v9 = (char)v145[1]; + } + } + else + { + if ( v9 == 48 ) + { + v100 = 1 - (_DWORD)v79; + do + { + v14 = &v79[v100]; + v177 = ++v79; + v9 = (char)*v79; + } + while ( v9 == 48 ); + } + else + { + v14 = 0; + } + if ( (unsigned int)(v9 - 49) <= 8 ) + { + v8 = v177; + v139 = 1; + v159 = v9 - 48; + i = v14 + 1; + v145 = v177; + goto LABEL_217; + } + i = 0; + v139 = 0; + } + v143 = 1; +LABEL_20: + if ( (v9 & 0xFFFFFFDF) != 69 ) + { + v156 = 0; + goto LABEL_22; + } + if ( !(v132 | (unsigned int)v14 | v139) ) + goto LABEL_30; + a1 = v177++; + v9 = (char)a1[1]; + if ( (_BYTE)v9 == 43 ) + { + v154 = 0; + } + else + { + if ( (_BYTE)v9 != 45 ) + { + v154 = 0; + goto LABEL_41; + } + v154 = 1; + } + v177 = a1 + 2; + v9 = (char)a1[2]; +LABEL_41: + if ( (unsigned int)(v9 - 48) > 9 ) + { + v156 = 0; + v177 = a1; + } + else + { + if ( v9 == 48 ) + { + v16 = v177 + 1; + do + { + v177 = v16; + v9 = (char)*v16++; + } + while ( v9 == 48 ); + } + v156 = 0; + if ( (unsigned int)(v9 - 49) <= 8 ) + { + v17 = v177; + v18 = v9 - 48; + v157 = v177++; + v9 = (char)v157[1]; + if ( (unsigned int)(v9 - 48) > 9 ) + goto LABEL_352; + v160 = v14; + v19 = v17 + 2; + do + { + v177 = v19; + v20 = v19++; + v18 = v9 + 10 * v18 - 48; + v9 = (char)*(v19 - 1); + } + while ( (unsigned int)(v9 - 48) <= 9 ); + v21 = v20 - v157; + v14 = v160; + v156 = 19999; + if ( v21 <= 8 ) + { +LABEL_352: + v156 = v18; + if ( v18 > 19999 ) + v156 = 19999; + } + if ( v154 ) + v156 = -v156; + } + } +LABEL_22: + if ( !v139 ) + { + if ( (unsigned int)v14 | v132 ) + goto LABEL_78; + if ( v143 ) + goto LABEL_30; + if ( v9 != 105 ) + { + if ( v9 > 105 ) + { + if ( v9 != 110 ) + goto LABEL_30; +LABEL_29: + if ( !__match_D2A((char **)&v177, "an") ) + goto LABEL_30; + v174 = 4; + *a4 = a3[2] + 1; + if ( *v177 != 40 ) + goto LABEL_78; + v174 = __hexnan_D2A(&v177, a3, a5); +LABEL_227: + *a4 = a3[2] + 1; + v15 = v178; + goto LABEL_31; + } + if ( v9 != 73 ) + { + if ( v9 != 78 ) + { +LABEL_30: + v174 = 6; + v177 = a1; + v15 = v178; + goto LABEL_31; + } + goto LABEL_29; + } + } + if ( !__match_D2A((char **)&v177, "nf") ) + goto LABEL_30; + --v177; + if ( !__match_D2A((char **)&v177, "inity") ) + ++v177; + v174 = 3; + goto LABEL_227; + } + v174 = 1; + v166 = v156 - (_DWORD)i; + v31 = a3[3] & 3; + v163 = v31 - v164; + if ( v31 != 2 ) + { + v163 = v164 + 1; + if ( v31 != 3 ) + v163 = v31 == 0; + } + if ( !v10 ) + v10 = v139; + v32 = v139; + if ( v139 > 16 ) + v32 = 16; + v33 = (long double)(unsigned int)v149; + v133 = v33; + if ( v139 > 9 ) + v133 = v33 * dbl_532858[v32] + (long double)(unsigned int)v135; + if ( v142 > 53 || v139 > 15 ) + { + v38 = v156 - (_DWORD)i; + goto LABEL_105; + } + if ( !v166 ) + { + v37 = sub_44E5C0(a3, a4, a5, v133, 1, v163, &v174); + goto LABEL_97; + } + if ( v166 <= 0 ) + { + v38 = v156 - (_DWORD)i; + if ( v166 < -22 ) + goto LABEL_105; + Str = v133 / __tens_D2A[(_DWORD)&i[-v156]]; + } + else + { + if ( v166 <= 22 ) + { + _EDX = LODWORD(v133); + if ( LODWORD(v133) ) + { + __asm { tzcnt ecx, edx } + v136 = 53 - _ECX; + } + else + { + _ECX = HIDWORD(v133) | 0x100000; + __asm { tzcnt ecx, ecx } + v136 = 21 - _ECX; + } + v131 = v163; + Size = v136 + dword_532800[v166] <= 53; + Str = v133 * __tens_D2A[v166]; + v133 = Str; + goto LABEL_96; + } + v41 = v166 + v139 - v32; + if ( 37 - v139 < v166 ) + goto LABEL_106; + Str = v133 * __tens_D2A[15 - v139] * __tens_D2A[v166 - (15 - v139)]; + } + Size = 0; + v133 = Str; + v131 = v163; +LABEL_96: + v37 = sub_44E5C0(a3, a4, a5, Str, Size, v131, &v174); +LABEL_97: + if ( v37 ) + goto LABEL_78; + v38 = 0; +LABEL_105: + v41 = v38 + v139 - v32; + if ( v41 <= 0 ) + { + if ( v41 ) + { + v81 = -v41; + if ( (v81 & 0xF) != 0 ) + v133 = v133 / __tens_D2A[v81 & 0xF]; + v41 = v81 & 0xFFFFFFF0; + if ( v41 ) + { + v82 = v41 >> 4; + if ( v41 <= 255 ) + { + v86 = 0; + } + else + { + v83 = v41 >> 4; + v84 = 0; + do + { + v83 -= 16; + v85 = HIDWORD(v133) >> 20; + HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; + v86 = v84 + (v85 & 0x7FF) - 1023; + v84 = v86; + v133 = v133 * 1.0e-256; + } + while ( v83 > 15 ); + v82 &= 0xFu; + } + v87 = (HIDWORD(v133) >> 20) & 0x7FF; + HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; + v41 = v86 + v87 - 1023; + if ( v82 ) + { + v42 = v133; + v88 = 0; + v89 = 0; + v90 = v133; + do + { + if ( (v82 & 1) != 0 ) + { + v90 = v90 * __tinytens_D2A[v89]; + v88 = 1; + } + ++v89; + v82 >>= 1; + } + while ( v82 ); + if ( v88 ) + v42 = v90; + goto LABEL_111; + } + } + } + goto LABEL_109; + } +LABEL_106: + if ( (v41 & 0xF) != 0 ) + v133 = v133 * __tens_D2A[v41 & 0xF]; + v41 &= 0xFFFFFFF0; + if ( v41 ) + { + v91 = v41 >> 4; + if ( v41 <= 255 ) + { + v95 = 0; + } + else + { + v92 = v41 >> 4; + v93 = 0; + do + { + v92 -= 16; + v94 = HIDWORD(v133) >> 20; + HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; + v95 = v93 + (v94 & 0x7FF) - 1023; + v93 = v95; + v133 = v133 * 1.0e256; + } + while ( v92 > 15 ); + v91 &= 0xFu; + } + v96 = (HIDWORD(v133) >> 20) & 0x7FF; + HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; + v42 = v133; + v41 = v95 + v96 - 1023; + if ( v91 ) + { + v97 = v133; + v98 = 0; + v99 = 0; + do + { + if ( (v91 & 1) != 0 ) + { + v97 = v97 * __bigtens_D2A[v99]; + v98 = 1; + } + ++v99; + v91 >>= 1; + } + while ( v91 ); + if ( v98 ) + v42 = v97; + } + goto LABEL_111; + } +LABEL_109: + v42 = v133; +LABEL_111: + v43 = __d2b_D2A(v42, &v176, &v175); + v44 = v175; + v45 = v176 + v41; + v178 = v43; + v46 = v175 - v142; + v176 = v45; + if ( v175 - v142 > 0 ) + { + __rshift_D2A((int)v43, v175 - v142); + v44 = v142; + v176 += v46; + v45 = v176; + v175 = v142; + } + v171 = v45 + v44 - v142; + if ( a3[2] + 1 < v171 ) + { + v144 = 0; + goto LABEL_258; + } + v47 = a3[1]; + v162 = v47; + if ( v171 >= v47 ) + { + v144 = 0; + } + else + { + v48 = v45 - v47; + if ( v45 - v47 > 0 ) + { + v101 = __lshift_D2A(v178, v48); + v175 += v48; + v178 = v101; + } + else if ( v45 != v47 ) + { + v49 = v48 + v44; + v15 = v178; + v175 = v49; + if ( v49 > 0 ) + { + __rshift_D2A((int)v178, v162 - v45); + } + else + { + if ( v49 < -1 ) + { + v178[4] = 0; + v15[5] = 0; + *a4 = v162; + if ( !v170 ) + { + v30 = 80; + goto LABEL_77; + } + goto LABEL_254; + } + v175 = 1; + v178[4] = 1; + v15[5] = 1; + } + } + v176 = v162; + if ( v170 ) + { + v50 = v171; + v144 = 1; + v171 = v162; + if ( v50 + 1 < v162 ) + { + v15 = v178; + v178[4] = 0; + v15[5] = 0; + *a4 = v162; + goto LABEL_254; + } + } + else + { + v144 = 1; + v171 = v162; + } + } + v51 = __s2b_D2A((int)v8, v10, v139, v149, v146); + v141 = 0; + v167 = (unsigned int)v51; + v150 = (v166 >> 31) & (unsigned int)&i[-v156]; + v165 = v166 & ~(v166 >> 31); + Src = v51 + 3; + while ( 1 ) + { + v137 = __Balloc_D2A(*(_DWORD *)(v167 + 4)); + memcpy(v137 + 3, Src, 4 * *(_DWORD *)(v167 + 16) + 8); + v52 = __Balloc_D2A(v178[1]); + memcpy(v52 + 3, v178 + 3, 4 * v178[4] + 8); + v53 = v175; + v54 = v176; + v55 = v176 + v141; + v147 = v175 - v141; + v134 = __i2b_D2A(1); + if ( v55 < 0 ) + { + v56 = v165 - v55; + v57 = v150; + } + else + { + v56 = v166 & ~(v166 >> 31); + v57 = v150 + v55; + } + v58 = v54 + v53 - v142; + v59 = v142 + 1 - v147; + if ( v162 > v58 ) + v59 += v58 - v162; + v60 = v57 + v59; + v61 = v56 + v59; + v62 = v57 + v59; + if ( v57 + v59 > v61 ) + v62 = v61; + v63 = v57; + if ( v57 > v62 ) + v63 = v62; + if ( v63 > 0 ) + { + v60 -= v63; + v61 -= v63; + v57 -= v63; + } + if ( v150 > 0 ) + { + v134 = (int *)__pow5mult_D2A(v134, v150); + v152 = __mult_D2A((int)v134, (int)v52); + __Bfree_D2A((unsigned int)v52); + v52 = v152; + } + if ( v60 - v141 > 0 ) + { + v52 = __lshift_D2A(v52, v60 - v141); + } + else if ( v60 != v141 ) + { + __rshift_D2A((int)v52, v141 - v60); + } + if ( v166 > 0 ) + v137 = (int *)__pow5mult_D2A(v137, v165); + if ( v61 > 0 ) + v137 = __lshift_D2A(v137, v61); + if ( v57 > 0 ) + v134 = __lshift_D2A(v134, v57); + v64 = __diff_D2A((int)v52, (int)v137); + v65 = v64; + if ( v64[4] <= 1 && !v64[5] ) + goto LABEL_61; + v66 = v64[3]; + v64[3] = 0; + v67 = __cmp_D2A((int)v64, (int)v134); + if ( v163 && v67 <= 0 ) + { + v68 = v163 & 1; + v141 = v66 ^ v68; + if ( v68 == v66 ) + { + v174 = v68 == 0 ? 33 : 17; + goto LABEL_61; + } + if ( v66 ) + { + v174 = 33; + v148 = 1.0; + v158 = 0; + v155 = 1.0; + v169 = 32; + v153 = 0; + goto LABEL_158; + } + v174 = 17; + if ( v171 != v162 ) + { + v69 = v142; + v70 = v178; + if ( v142 > 31 ) + { + while ( !v178[v66 + 5] ) + { + v69 -= 32; + ++v66; + if ( v69 <= 31 ) + goto LABEL_260; + } + } + else + { + v69 = v142; +LABEL_260: + if ( v69 <= 1 ) + goto LABEL_262; + v113 = &v178[v66 + 5]; + _EBX = *v113; + __asm { tzcnt ecx, ebx } + *v113 = (unsigned int)*v113 >> _ECX; + if ( v69 - 1 <= _ECX ) + { +LABEL_262: + v176 = v171 - 1; + v175 = v142; + v178 = __set_ones_D2A((unsigned int)v70, v142); + goto LABEL_61; + } + } + } + } + else + { + if ( v67 < 0 ) + { + if ( v66 ) + goto LABEL_335; + v174 = 33; + if ( v147 > 1 || v171 == v162 || (v144 & 1) != 0 ) + goto LABEL_61; + v65 = __lshift_D2A(v65, 1); + if ( __cmp_D2A((int)v65, (int)v134) <= 0 ) + goto LABEL_271; + v174 = 17; + v144 = 0; + goto LABEL_293; + } + if ( !v67 ) + { + if ( v66 ) + { + if ( !v144 ) + goto LABEL_340; + v117 = v178; + v118 = v178 + 5; + while ( &v178[(v175 >> 5) + 5] > v118 ) + { + if ( *v118++ != -1 ) + goto LABEL_340; + } + if ( (v175 & 0x1F) != 0 && (*v118 | (-1 << (v175 & 0x1F))) != -1 ) + { +LABEL_340: + v174 = 17; + goto LABEL_326; + } + v178[4] = 1; + v117[5] = 1; + v175 = 1; + v176 = v142 + v162 - 1; + v116 = v144; + v174 = 33; +LABEL_272: + v144 = v142 - v116; + if ( v142 != v116 ) + { + if ( v142 - v116 <= 0 ) + __rshift_D2A((int)v178, v116 - v142); + else + v178 = __lshift_D2A(v178, v144); + v23 = v176 - v144; + v144 = 0; + v176 = v23; +LABEL_63: + *a4 = v23; + __Bfree_D2A((unsigned int)v52); + __Bfree_D2A((unsigned int)v137); + __Bfree_D2A((unsigned int)v134); + __Bfree_D2A(v167); + __Bfree_D2A((unsigned int)v65); + if ( a3[2] >= v176 ) + goto LABEL_259; + v24 = a3[3] & 3; + switch ( v24 ) + { + case 2: + if ( !v164 ) + goto LABEL_258; + break; + case 3: + if ( v164 ) + goto LABEL_258; + break; + case 1: +LABEL_258: + v174 = 163; + v178[4] = 0; + *_errno() = 34; + *a4 = a3[2] + 1; +LABEL_259: + v15 = v178; +LABEL_72: + if ( !v144 ) + goto LABEL_31; + if ( !v170 ) + { + v29 = v174 & 0x30; + v30 = v174 & 0xFFFFFFF8; + if ( v15[4] > 0 ) + v30 |= 2u; + v174 = v30; + if ( v29 ) + { +LABEL_77: + v174 = v30 | 0x40; + *_errno() = 34; + } +LABEL_78: + v15 = v178; +LABEL_31: + if ( a2 ) + *a2 = v177; + if ( v164 ) + v174 |= 8u; +LABEL_35: + if ( v15 ) + { + __copybits_D2A(a5, v142, (int)v15); + __Bfree_D2A((unsigned int)v178); + } + return v174; + } +LABEL_254: + v15[4] = 0; + v174 = 80; + *_errno() = 34; + v15 = v178; + goto LABEL_31; + default: + break; + } + __Bfree_D2A((unsigned int)v178); + v178 = 0; + v174 = 17; + *a4 = a3[2]; + v25 = *a3; + v26 = &a5[(*a3 + 31) >> 5]; + for ( j = a5; v26 > j; *(j - 1) = -1 ) + ++j; + v28 = v25 & 0x1F; + if ( v28 ) + *(v26 - 1) = (unsigned int)*(v26 - 1) >> (32 - v28); + v15 = 0; + goto LABEL_72; + } +LABEL_62: + v23 = v176; + goto LABEL_63; + } + if ( v147 != 1 ) + { + v174 = 33; +LABEL_326: + if ( v142 <= v147 || (v144 & 1) != 0 ) + { + v123 = v178; + if ( (v178[5] & 1) != 0 ) + { + if ( v66 ) + { + v127 = __increment_D2A(v178); + v128 = v127[4]; + v178 = v127; + _BitScanReverse((unsigned int *)&v127, v127[v128 + 4]); + if ( (-v175 & 0x1F) != ((unsigned int)v127 ^ 0x1F) ) + ++v175; + v174 = 33; + } + else if ( v147 == 1 ) + { +LABEL_322: + v123[4] = 0; + v174 = 80; + v176 = v162; + } + else + { + v124 = v178 + 5; + v125 = &v178[v178[4] + 5]; + while ( !*v124 ) + { + *v124++ = -1; + if ( v125 <= v124 ) + goto LABEL_335; + } + --*v124; +LABEL_335: + v174 = 17; + } + } +LABEL_61: + if ( v144 ) + goto LABEL_62; + } +LABEL_271: + v116 = v175; + goto LABEL_272; + } + v174 = 1; + if ( v171 == v162 ) + { + v174 = 33; + if ( v178[4] == 1 && v178[5] == 1 ) + v170 = 1; + goto LABEL_61; + } +LABEL_293: + v176 -= v142; + v175 = v142; + v178 = __set_ones_D2A((unsigned int)v178, v142); + goto LABEL_61; + } + v102 = __ratio_D2A((int)v65, (int)v134); + if ( v102 > 2.0 ) + { + v108 = v102 * 0.5; + v169 = v66 == 0 ? 32 : 16; + v153 = v66 == 0; + v155 = v108; + if ( v108 >= 2147483647.0 ) + { + v158 = 0; + v148 = v108; + goto LABEL_251; + } + v158 = (int)v108; + v109 = (long double)(int)v108; + v148 = v109; + v110 = v108 - v109; + v155 = v110; + if ( v163 == 1 ) + { + if ( v66 ) + goto LABEL_251; + } + else + { + if ( v163 != 2 ) + { + if ( v110 < 0.5 ) + { +LABEL_251: + v141 = 0; + goto LABEL_158; + } +LABEL_268: + ++v158; + v169 = 48 - v169; + v148 = (double)v158; + goto LABEL_251; + } + if ( !v66 ) + goto LABEL_251; + } + if ( v155 <= 0.0 ) + goto LABEL_251; + goto LABEL_268; + } + if ( v66 ) + { + v158 = 0; + v148 = 1.0; + v169 = 32; + v155 = 1.0; + v141 = 0; + v153 = 0; + goto LABEL_158; + } + v141 = 0; + } + if ( v147 <= 1 && (v144 & 1) != 0 ) + { + v144 = 1; + v123 = v178; + goto LABEL_322; + } + v158 = 0; + v148 = 1.0; + v169 = 16; + v155 = 1.0; + v153 = 1; +LABEL_158: + v161 = v175 + v176; + if ( (v144 & 1) == 0 && v175 < v142 ) + { + v111 = v142 - v175; + v112 = __lshift_D2A(v178, v142 - v175); + v176 -= v111; + v178 = v112; + v175 = v142; + } + v71 = __d2b_D2A(v148, &v172, &v173); + if ( v172 < 0 ) + { + __rshift_D2A((int)v71, -v172); + } + else if ( v172 ) + { + v71 = __lshift_D2A(v71, v172); + } + v72 = v178; + if ( v153 ) + { + v73 = __diff_D2A((int)v178, (int)v71); + v178 = v73; + if ( !v144 ) + { + v74 = v72[4]; + if ( v73[4] <= v74 - 1 + || (_BitScanReverse(&v75, v73[v74 + 4]), + _BitScanReverse((unsigned int *)&v74, v72[v74 + 4]), + (v74 ^ 0x1F) < (int)(v75 ^ 0x1F)) ) + { + if ( v171 != v162 ) + { + v107 = __lshift_D2A(v73, 1); + --v176; + --v171; + v178 = v107; + __Bfree_D2A((unsigned int)v71); + __Bfree_D2A((unsigned int)v72); +LABEL_245: + v144 = 0; + v141 = __trailz_D2A((int)v178); + goto LABEL_176; + } + --v175; + v144 = v153; + } + } + } + else + { + v103 = __sum_D2A(v178, v71); + v104 = v103[4]; + v178 = v103; + if ( v72[4] <= v104 - 1 + || (_BitScanReverse(&v105, v103[v104 + 4]), + _BitScanReverse((unsigned int *)&v104, v72[v104 + 4]), + (v104 ^ 0x1F) > (int)(v105 ^ 0x1F)) ) + { + if ( v144 ) + { + v106 = ++v175 == v142; + v144 = !v106; + } + else + { + __rshift_D2A((int)v103, 1); + ++v176; + ++v171; + v158 = 0; + } + } + } + __Bfree_D2A((unsigned int)v71); + __Bfree_D2A((unsigned int)v72); + if ( v141 ) + goto LABEL_61; + if ( v176 + v175 == v161 && v158 ) + { + v76 = v148 * 5.0e-16; + v77 = v155 - 0.5; + if ( -v76 <= v77 ) + { + if ( v77 > v76 && 1.0 - v76 > v155 ) + { +LABEL_60: + v174 |= v169; + goto LABEL_61; + } + } + else if ( v155 > v76 ) + { + goto LABEL_60; + } + } + if ( !v144 ) + goto LABEL_245; +LABEL_176: + __Bfree_D2A((unsigned int)v52); + __Bfree_D2A((unsigned int)v137); + __Bfree_D2A((unsigned int)v134); + __Bfree_D2A((unsigned int)v65); + } + } + v140 = v9; + v39 = 1; + v40 = decimal_point[1]; + while ( v12[v39] == v40 ) + { + v40 = decimal_point[++v39]; + if ( !v40 ) + { + v78 = v39; + goto LABEL_178; + } + } + v9 = v140; + } + v139 = v10; + v14 = 0; + i = 0; + v143 = 0; + goto LABEL_20; + } +LABEL_13: + result = 6; + v174 = 6; + if ( !a2 ) + return result; + *a2 = a1; + return v174; + default: + v164 = 0; + goto LABEL_4; + } + } +} +// 532800: using guessed type int dword_532800[22]; +// 532858: using guessed type double dbl_532858[]; +// 5328A0: using guessed type double __tens_D2A[24]; +// 532960: using guessed type double __tinytens_D2A[4]; +// 5329A0: using guessed type double __bigtens_D2A[4]; + +//----- (004506C0) -------------------------------------------------------- +int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3) +{ + int *v3; // edx + unsigned __int8 *v4; // ebx + unsigned int v5; // eax + unsigned __int8 v6; // dl + unsigned int v7; // edx + unsigned __int8 *v8; // eax + int *v9; // ebp + int v10; // edi + int *v11; // esi + char v12; // cl + int v13; // edx + int *v14; // edx + char v15; // bl + int v16; // eax + char v17; // di + char v18; // bp + unsigned int v19; // ebx + int *v20; // edi + int *v21; // esi + unsigned int v22; // eax + unsigned int v23; // eax + int v24; // eax + int *v25; // eax + char i; // dl + int v29; // edx + int *v30; // ebx + unsigned int v31; // eax + int v32; // edx + int v33; // eax + int v34; // [esp+0h] [ebp-3Ch] + int *v35; // [esp+4h] [ebp-38h] + char v36; // [esp+4h] [ebp-38h] + int v37; // [esp+8h] [ebp-34h] + int *v38; // [esp+Ch] [ebp-30h] + int *v39; // [esp+10h] [ebp-2Ch] + unsigned __int8 *v40; // [esp+14h] [ebp-28h] + int v41; // [esp+1Ch] [ebp-20h] + + if ( !byte_78B450 ) + hexdig_init_D2A(); + v41 = *a2 & 0x1F; + v3 = &a3[*a2 >> 5]; + if ( v41 ) + { + v38 = &a3[*a2 >> 5]; + v39 = v3 + 1; + } + else + { + v39 = &a3[*a2 >> 5]; + v38 = v3 - 1; + } + *(v39 - 1) = 0; + v4 = *a1; + v5 = (*a1)[1]; + v6 = (*a1)[1]; + if ( !v6 ) + return 4; + while ( v5 <= 0x20 ) + { + v5 = v4[2]; + ++v4; + v6 = v5; + if ( !v5 ) + return 4; + } + if ( v6 == 48 && (v4[2] & 0xDF) == 88 && (v7 = v4[3], (unsigned __int8)v7 > 0x20u) ) + { + v8 = v4 + 3; + v4 += 2; + } + else + { + v7 = v4[1]; + v8 = v4 + 1; + if ( !v4[1] ) + return 4; + } + v9 = v38; + v37 = 0; + v10 = 0; + v34 = 0; + v11 = v38; + do + { + while ( 1 ) + { + v12 = __hexdig_D2A[v7]; + if ( v12 ) + break; + if ( v7 > 0x20 ) + { + if ( v7 == 41 && v34 ) + { + *a1 = v4 + 2; + goto LABEL_25; + } + while ( 1 ) + { + ++v8; + if ( v7 == 41 ) + break; + v7 = (char)*v8; + if ( !*v8 ) + return 4; + } + *a1 = v8; + return 4; + } + if ( v34 <= v37 ) + { +LABEL_52: + for ( i = v8[1]; (unsigned __int8)i <= 0x20u; ++v8 ) + i = v8[2]; + if ( i != 48 ) + goto LABEL_23; + if ( (v8[2] & 0xDF) != 88 ) + goto LABEL_23; + v7 = v8[3]; + if ( (unsigned __int8)v7 <= 0x20u ) + goto LABEL_23; + v4 = v8 + 2; + v8 += 3; + } + else + { + if ( v9 < v11 && v10 <= 7 ) + { + v40 = v8; + v29 = *v9; + v30 = v9; + v36 = 4 * (8 - v10); + do + { + v31 = v30[1]; + ++v30; + v32 = (v31 << (32 - v36)) | v29; + v33 = v31 >> v36; + *(v30 - 1) = v32; + *v30 = v33; + v29 = v33; + } + while ( v30 < v11 ); + v8 = v40; + } + if ( v9 > a3 ) + { + v11 = v9 - 1; + *--v9 = 0; + v37 = v34; + v10 = 0; + goto LABEL_52; + } + v7 = v8[1]; + v4 = v8; + v10 = 8; + ++v8; + if ( !v7 ) + goto LABEL_24; + } + } + ++v10; + ++v34; + if ( v10 <= 8 ) + { + v13 = 16 * *v9; +LABEL_22: + *v9 = v13 | v12 & 0xF; + goto LABEL_23; + } + if ( v9 > a3 ) + { + *(v9 - 1) = 0; + v13 = 0; + --v9; + v10 = 1; + goto LABEL_22; + } +LABEL_23: + v7 = v8[1]; + v4 = v8++; + } + while ( v7 ); +LABEL_24: + if ( !v34 ) + return 4; +LABEL_25: + if ( v11 > v9 && v10 <= 7 ) + { + v14 = v9; + v35 = v9; + v15 = 4 * (8 - v10); + v16 = *v9; + v17 = 32 - v15; + v18 = v15; + do + { + v19 = v14[1]; + *v14++ = (v19 << v17) | v16; + v16 = v19 >> v18; + *v14 = v19 >> v18; + } + while ( v14 < v11 ); + v9 = v35; + } + if ( a3 >= v9 ) + { + v24 = *(v39 - 1); + if ( v41 ) + { + v24 &= 0xFFFFFFFF >> (32 - v41); + *(v39 - 1) = v24; + } + } + else + { + v20 = a3; + v21 = v9; + do + *v20++ = *v21++; + while ( v38 >= v21 ); + v22 = 4; + if ( (char *)v38 + 1 >= (char *)v9 + 1 ) + v22 = 4 * ((unsigned int)((char *)v38 - (char *)v9) >> 2) + 4; + v23 = (unsigned int)a3 + v22; + do + { + v23 += 4; + *(_DWORD *)(v23 - 4) = 0; + } + while ( (unsigned int)v38 >= v23 ); + v24 = *(v39 - 1); + } + if ( v24 ) + return 5; + if ( v38 != a3 ) + { + v25 = v38; + while ( 1 ) + { + if ( *--v25 ) + return 5; + if ( a3 == v25 ) + { + v38 = v25; + break; + } + } + } + *v38 = 1; + return 5; +} +// 78B450: using guessed type char byte_78B450; + +//----- (00450AB0) -------------------------------------------------------- +void __usercall sub_450AB0(int a1@) +{ + LONG v2; // eax + + switch ( Target ) + { + case 2: +LABEL_10: + EnterCriticalSection((LPCRITICAL_SECTION)(24 * a1 + 7910272)); + return; + case 0: + v2 = InterlockedExchange(&Target, 1); + if ( v2 ) + { + if ( v2 != 2 ) + goto LABEL_5; + Target = 2; + } + else + { + InitializeCriticalSection(&stru_78B380); + InitializeCriticalSection(&stru_78B398); + atexit(sub_450B80); + Target = 2; + } + goto LABEL_10; + case 1: + do + { + Sleep(1u); +LABEL_5: + ; + } + while ( Target == 1 ); + if ( Target == 2 ) + goto LABEL_10; + break; + } +} + +//----- (00450B80) -------------------------------------------------------- +void __cdecl sub_450B80() +{ + if ( InterlockedExchange(&Target, 3) == 2 ) + { + DeleteCriticalSection(&stru_78B380); + DeleteCriticalSection(&stru_78B398); + } +} + +//----- (00450BD0) -------------------------------------------------------- +int *__cdecl __Balloc_D2A(int a1) +{ + int v1; // esi + int *result; // eax + bool v3; // zf + int *v4; // [esp+1Ch] [ebp-10h] + + sub_450AB0(0); + if ( a1 > 9 ) + goto LABEL_2; + result = (int *)dword_78B340[a1]; + if ( result ) + { + v3 = Target == 2; + dword_78B340[a1] = *result; + if ( !v3 ) + goto LABEL_4; +LABEL_8: + v4 = result; + LeaveCriticalSection(&stru_78B380); + result = v4; + goto LABEL_4; + } + result = (int *)off_515078; + v1 = 1 << a1; + if ( ((unsigned int)(4 * (1 << a1) + 27) >> 3) + (((_BYTE *)off_515078 - (_BYTE *)&unk_78AA40) >> 3) > 0x120 ) + { +LABEL_2: + v1 = 1 << a1; + result = (int *)malloc((4 * (1 << a1) + 27) & 0xFFFFFFF8); + if ( !result ) + return result; + } + else + { + off_515078 = (char *)off_515078 + ((4 * (1 << a1) + 27) & 0xFFFFFFF8); + } + v3 = Target == 2; + result[1] = a1; + result[2] = v1; + if ( v3 ) + goto LABEL_8; +LABEL_4: + result[4] = 0; + result[3] = 0; + return result; +} +// 515078: using guessed type void *off_515078; +// 78B340: using guessed type int dword_78B340[10]; + +//----- (00450CC0) -------------------------------------------------------- +void __cdecl __Bfree_D2A(unsigned int a1) +{ + int v1; // eax + bool v2; // zf + int v3; // edx + + if ( a1 ) + { + if ( *(int *)(a1 + 4) <= 9 ) + { + sub_450AB0(0); + v1 = *(_DWORD *)(a1 + 4); + v2 = Target == 2; + v3 = dword_78B340[v1]; + dword_78B340[v1] = a1; + *(_DWORD *)a1 = v3; + if ( v2 ) + LeaveCriticalSection(&stru_78B380); + } + else + { + __mingw_free(a1); + } + } +} +// 78B340: using guessed type int dword_78B340[10]; + +//----- (00450D20) -------------------------------------------------------- +int *__cdecl __multadd_D2A(int *a1, int a2, int a3) +{ + int v3; // ecx + __int64 v4; // rdi + unsigned __int64 v5; // rax + int *v6; // ebp + int *v8; // eax + __int64 v9; // [esp+10h] [ebp-2Ch] + int v10; // [esp+1Ch] [ebp-20h] + + v3 = 0; + HIDWORD(v4) = a3; + LODWORD(v4) = a3 >> 31; + v10 = a1[4]; + LODWORD(v9) = a2; + do + { + HIDWORD(v9) = a2 >> 31; + v5 = __PAIR64__(v4, HIDWORD(v4)) + v9 * (unsigned int)a1[v3 + 5]; + a1[v3++ + 5] = v5; + HIDWORD(v4) = HIDWORD(v5); + LODWORD(v4) = 0; + } + while ( v10 > v3 ); + v6 = a1; + if ( v4 ) + { + if ( a1[2] <= v10 ) + { + v8 = __Balloc_D2A(a1[1] + 1); + v6 = v8; + if ( v8 ) + { + memcpy(v8 + 3, a1 + 3, 4 * a1[4] + 8); + __Bfree_D2A((unsigned int)a1); + v6[v10 + 5] = HIDWORD(v4); + v6[4] = v10 + 1; + } + } + else + { + v6 = a1; + a1[v10 + 5] = HIDWORD(v5); + a1[4] = v10 + 1; + } + } + return v6; +} + +//----- (00450E00) -------------------------------------------------------- +int *__cdecl __i2b_D2A(int a1) +{ + int *result; // eax + + result = __Balloc_D2A(1); + if ( result ) + { + result[4] = 1; + result[5] = a1; + } + return result; +} + +//----- (00450E30) -------------------------------------------------------- +int *__cdecl __mult_D2A(int a1, int a2) +{ + int v2; // ebp + int v3; // ebx + int v4; // esi + int v5; // edi + int *v6; // eax + unsigned int *v7; // eax + unsigned int *i; // edx + unsigned int v9; // esi + unsigned int *v10; // ebp + unsigned __int64 v11; // rax + int v12; // eax + unsigned int v14; // [esp+14h] [ebp-48h] + unsigned int v15; // [esp+18h] [ebp-44h] + unsigned int v16; // [esp+1Ch] [ebp-40h] + unsigned int v17; // [esp+20h] [ebp-3Ch] + unsigned int *v18; // [esp+24h] [ebp-38h] + unsigned int v19; // [esp+28h] [ebp-34h] + int v20; // [esp+2Ch] [ebp-30h] + unsigned int v21; // [esp+30h] [ebp-2Ch] + int *v22; // [esp+38h] [ebp-24h] + unsigned int *v23; // [esp+3Ch] [ebp-20h] + + v2 = a1; + v3 = a2; + v4 = *(_DWORD *)(a1 + 16); + v5 = *(_DWORD *)(a2 + 16); + if ( v4 >= v5 ) + { + v5 = *(_DWORD *)(a1 + 16); + v4 = *(_DWORD *)(a2 + 16); + v3 = a1; + v2 = a2; + } + v20 = v5 + v4; + v6 = __Balloc_D2A(*(_DWORD *)(v3 + 4) + (*(_DWORD *)(v3 + 8) < v5 + v4)); + v22 = v6; + if ( v6 ) + { + v7 = (unsigned int *)(v6 + 5); + v23 = v7; + for ( i = &v7[v20]; i > v7; ++v7 ) + *v7 = 0; + v17 = v3 + 20 + 4 * v5; + v15 = v2 + 20; + v19 = v2 + 20 + 4 * v4; + if ( v2 + 20 < v19 ) + { + v21 = 4; + if ( v17 >= v3 + 21 ) + v21 = 4 * ((unsigned int)(4 * v5 - 1) >> 2) + 4; + v18 = v23; + do + { + while ( 1 ) + { + v15 += 4; + if ( *(_DWORD *)(v15 - 4) ) + break; + ++v18; + if ( v19 <= v15 ) + goto LABEL_15; + } + v16 = *(_DWORD *)(v15 - 4); + v9 = 0; + v14 = v3 + 20; + v10 = v18; + do + { + v14 += 4; + v11 = v9 + *v10++ + *(unsigned int *)(v14 - 4) * (unsigned __int64)v16; + *(v10 - 1) = v11; + v9 = HIDWORD(v11); + } + while ( v17 > v14 ); + LODWORD(v11) = v18++; + *(_DWORD *)(v11 + v21) = HIDWORD(v11); + } + while ( v19 > v15 ); + } +LABEL_15: + if ( v20 > 0 ) + { + v12 = v20; + do + { + if ( v23[v12 - 1] ) + break; + --v12; + } + while ( v12 ); + v20 = v12; + } + v22[4] = v20; + } + return v22; +} + +//----- (00450FD0) -------------------------------------------------------- +int __cdecl __pow5mult_D2A(int *a1, int a2) +{ + int *v2; // esi + int v3; // ebx + int v4; // ebp + int **v5; // edi + int *v6; // esi + int *v7; // eax + int *v9; // eax + int *v10; // eax + LPCRITICAL_SECTION lpCriticalSection; // [esp+0h] [ebp-2Ch] + + v2 = a1; + if ( (a2 & 3) == 0 || (v2 = __multadd_D2A(a1, dword_53287C[a2 & 3], 0)) != 0 ) + { + v3 = a2 >> 2; + v4 = (int)v2; + if ( a2 >> 2 ) + { + v5 = (int **)dword_78AA20; + if ( !dword_78AA20 ) + { + sub_450AB0(1); + v5 = (int **)dword_78AA20; + if ( !dword_78AA20 ) + { + v10 = __Balloc_D2A(1); + v5 = (int **)v10; + if ( !v10 ) + { + dword_78AA20 = 0; + return 0; + } + v10[5] = 625; + v10[4] = 1; + dword_78AA20 = (int)v10; + *v10 = 0; + } + if ( Target == 2 ) + LeaveCriticalSection(&stru_78B398); + } + v4 = (int)v2; + if ( (v3 & 1) != 0 ) + goto LABEL_9; +LABEL_5: + v3 >>= 1; + if ( v3 ) + { + while ( 1 ) + { + v6 = *v5; + if ( *v5 ) + goto LABEL_7; + sub_450AB0(1); + v6 = *v5; + if ( !*v5 ) + { + v9 = __mult_D2A((int)v5, (int)v5); + *v5 = v9; + v6 = v9; + if ( !v9 ) + return 0; + *v9 = 0; + } + if ( Target != 2 ) + { +LABEL_7: + v5 = (int **)v6; + } + else + { + v5 = (int **)v6; + LeaveCriticalSection(&stru_78B398); + } + if ( (v3 & 1) == 0 ) + goto LABEL_5; +LABEL_9: + v7 = __mult_D2A(v4, (int)v5); + if ( !v7 ) + return 0; + lpCriticalSection = (LPCRITICAL_SECTION)v4; + v4 = (int)v7; + __Bfree_D2A((unsigned int)lpCriticalSection); + v3 >>= 1; + if ( !v3 ) + return v4; + } + } + } + return v4; + } + return 0; +} +// 53287C: using guessed type int dword_53287C[7]; +// 78AA20: using guessed type int dword_78AA20; + +//----- (00451150) -------------------------------------------------------- +int *__cdecl __lshift_D2A(_DWORD *a1, int a2) +{ + int v2; // edx + int v3; // esi + int i; // eax + int *v5; // eax + int *v6; // edi + int *v7; // edx + int *v8; // eax + int *v9; // esi + unsigned int v10; // edx + char v11; // cl + int *v12; // ebx + unsigned int v13; // eax + int v14; // edi + unsigned int v15; // ecx + _DWORD *v17; // edi + _DWORD *v18; // esi + int *v19; // [esp+1Ch] [ebp-30h] + int v20; // [esp+20h] [ebp-2Ch] + int *v21; // [esp+28h] [ebp-24h] + + v2 = a1[1]; + v3 = a2 >> 5; + v20 = (a2 >> 5) + a1[4]; + for ( i = a1[2]; v20 + 1 > i; ++v2 ) + i *= 2; + v5 = __Balloc_D2A(v2); + v19 = v5; + if ( v5 ) + { + v6 = v5 + 5; + if ( v3 > 0 ) + { + v7 = &v5[v3 + 5]; + v8 = v5 + 5; + do + *v8++ = 0; + while ( v8 != v7 ); + v6 += v3; + } + v9 = a1 + 5; + v10 = (unsigned int)&a1[a1[4] + 5]; + v11 = a2 & 0x1F; + if ( (a2 & 0x1F) != 0 ) + { + v21 = v6; + v12 = v6; + v13 = 0; + do + { + v14 = *v9; + ++v12; + ++v9; + *(v12 - 1) = (v14 << v11) | v13; + v13 = (unsigned int)*(v9 - 1) >> (32 - v11); + } + while ( v10 > (unsigned int)v9 ); + v15 = 4; + if ( v10 >= (unsigned int)a1 + 21 ) + v15 = 4 * ((v10 - (unsigned int)a1 - 21) >> 2) + 4; + *(int *)((char *)v21 + v15) = v13; + if ( v13 ) + ++v20; + } + else + { + do + { + *v6 = *v9; + v18 = v9 + 1; + v17 = v6 + 1; + if ( v10 <= (unsigned int)v18 ) + break; + *v17 = *v18; + v9 = v18 + 1; + v6 = v17 + 1; + } + while ( v10 > (unsigned int)v9 ); + } + v19[4] = v20; + __Bfree_D2A((unsigned int)a1); + } + return v19; +} + +//----- (00451290) -------------------------------------------------------- +int __cdecl __cmp_D2A(int a1, int a2) +{ + int v2; // eax + int v3; // ebx + int v4; // edx + _DWORD *v5; // eax + _DWORD *v6; // edx + + v2 = *(_DWORD *)(a2 + 16); + v3 = *(_DWORD *)(a1 + 16) - v2; + if ( !v3 ) + { + v4 = 4 * v2; + v5 = (_DWORD *)(a1 + 20 + 4 * v2); + v6 = (_DWORD *)(a2 + v4 + 20); + while ( *--v5 == *--v6 ) + { + if ( a1 + 20 >= (unsigned int)v5 ) + return v3; + } + return *v5 < *v6 ? -1 : 1; + } + return v3; +} + +//----- (004512E0) -------------------------------------------------------- +int *__cdecl __diff_D2A(int a1, int a2) +{ + int v2; // esi + int v3; // eax + int v4; // ebx + int v5; // edx + _DWORD *v6; // eax + _DWORD *v7; // edx + int *v8; // eax + int v9; // ebp + int v10; // edx + int v11; // esi + unsigned int v12; // ebp + __int64 v13; // rcx + __int64 v14; // rax + unsigned __int64 v15; // rax + int v16; // edx + int v17; // ebp + unsigned int v18; // edi + char *v19; // ecx + int v20; // eax + char *v21; // edi + _DWORD *v22; // eax + char *v23; // ebx + unsigned int *v24; // ecx + unsigned int v25; // eax + unsigned __int64 v26; // rax + char *v27; // ecx + int v29; // [esp+18h] [ebp-44h] + int *v30; // [esp+24h] [ebp-38h] + char *v31; // [esp+24h] [ebp-38h] + unsigned int v32; // [esp+28h] [ebp-34h] + _DWORD *v33; // [esp+28h] [ebp-34h] + int *v34; // [esp+2Ch] [ebp-30h] + unsigned int v35; // [esp+30h] [ebp-2Ch] + int *v36; // [esp+34h] [ebp-28h] + int v37; // [esp+38h] [ebp-24h] + int v38; // [esp+3Ch] [ebp-20h] + + v2 = a1; + v3 = *(_DWORD *)(a2 + 16); + v4 = *(_DWORD *)(a1 + 16) - v3; + if ( v4 ) + { + v4 = 0; + if ( *(_DWORD *)(a1 + 16) - v3 < 0 ) + { +LABEL_21: + v4 = 1; + v2 = a2; + a2 = a1; + } +LABEL_6: + v8 = __Balloc_D2A(*(_DWORD *)(v2 + 4)); + v34 = v8; + if ( v8 ) + { + v9 = *(_DWORD *)(v2 + 16); + v10 = v2 + 20; + v8[3] = v4; + v11 = 0; + v37 = v10; + v29 = v10; + v35 = v10 + 4 * v9; + v38 = v9; + v12 = a2 + 20; + v32 = a2 + 20 + 4 * *(_DWORD *)(a2 + 16); + v36 = v8 + 5; + v30 = v8 + 5; + do + { + v29 += 4; + v12 += 4; + v13 = *(unsigned int *)(v12 - 4); + v14 = *(unsigned int *)(v29 - 4) - (unsigned __int64)(unsigned int)v11 - v13; + LODWORD(v13) = *(_DWORD *)(v29 - 4) - v11 - v13; + v15 = __PAIR64__(HIDWORD(v14), (unsigned int)++v30) & 0x1FFFFFFFFLL; + v11 = HIDWORD(v15); + *(_DWORD *)(v15 - 4) = v13; + v16 = v13; + } + while ( v32 > v12 ); + v17 = v38; + v18 = v32 - a2 - 21; + v19 = (char *)v36 + (v32 >= a2 + 21 ? v18 & 0xFFFFFFFC : 0); + v20 = 4; + if ( v32 >= a2 + 21 ) + v20 = 4 * (v18 >> 2) + 4; + v31 = (char *)v36 + v20; + v21 = (char *)v36 + v20; + v22 = (_DWORD *)(v20 + v37); + v33 = v22; + if ( v35 > (unsigned int)v22 ) + { + v23 = v21; + v24 = v22; + do + { + v25 = *v24++; + v26 = v25 - (unsigned __int64)(unsigned int)v11; + v23 += 4; + v11 = BYTE4(v26) & 1; + v16 = v26; + *((_DWORD *)v23 - 1) = v26; + } + while ( v35 > (unsigned int)v24 ); + v17 = v38; + v19 = &v31[(v35 - 1 - (_DWORD)v33) & 0xFFFFFFFC]; + } + if ( !v16 ) + { + v27 = &v19[-4 * v17]; + do + --v17; + while ( !*(_DWORD *)&v27[4 * v17] ); + } + v34[4] = v17; + } + return v34; + } + else + { + v5 = 4 * v3; + v6 = (_DWORD *)(a1 + 20 + 4 * v3); + v7 = (_DWORD *)(a2 + v5 + 20); + do + { + if ( *--v6 != *--v7 ) + { + if ( *v6 < *v7 ) + goto LABEL_21; + goto LABEL_6; + } + } + while ( a1 + 20 < (unsigned int)v6 ); + v34 = __Balloc_D2A(0); + if ( !v34 ) + return v34; + v34[4] = 1; + v34[5] = 0; + return v34; + } +} + +//----- (00451520) -------------------------------------------------------- +long double __cdecl __b2d_D2A(int a1, _DWORD *a2) +{ + unsigned int v2; // esi + int v3; // ebx + unsigned int v4; // edx + unsigned int v5; // ebp + unsigned int v6; // eax + signed int v7; // eax + int v8; // eax + unsigned int v9; // edi + int v11; // edi + int v12; // edx + double v13; // [esp+0h] [ebp-1Ch] + double v14; // [esp+0h] [ebp-1Ch] + + v2 = a1 + 20; + v3 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); + v4 = *(_DWORD *)(v3 - 4); + v5 = v3 - 4; + _BitScanReverse(&v6, v4); + v7 = v6 ^ 0x1F; + *a2 = 32 - v7; + if ( v7 > 10 ) + { + v8 = v7 - 11; + if ( v2 >= v5 ) + { + v9 = 0; + if ( v8 ) + { + v9 = 0; + HIDWORD(v13) = (v4 << v8) | 0x3FF00000; + goto LABEL_5; + } + } + else + { + v9 = *(_DWORD *)(v3 - 8); + if ( v8 ) + { + v12 = (v9 >> (32 - v8)) | (v4 << v8); + v9 <<= v8; + HIDWORD(v13) = v12 | 0x3FF00000; + if ( v2 < v3 - 8 ) + v9 |= *(_DWORD *)(v3 - 12) >> (32 - v8); + goto LABEL_5; + } + } + HIDWORD(v13) = v4 | 0x3FF00000; +LABEL_5: + LODWORD(v13) = v9; + return v13; + } + v11 = 0; + if ( v2 < v5 ) + v11 = *(_DWORD *)(v3 - 8) >> (11 - v7); + LODWORD(v14) = v11 | (v4 << (v7 + 21)); + HIDWORD(v14) = (v4 >> (11 - v7)) | 0x3FF00000; + return v14; +} + +//----- (00451630) -------------------------------------------------------- +int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3) +{ + int *result; // eax + int v5; // edi + int v8; // edx + int v9; // edx + unsigned int v10; // ecx + + result = __Balloc_D2A(1); + if ( result ) + { + _ESI = HIDWORD(a1) & 0xFFFFF; + v5 = (HIDWORD(a1) >> 20) & 0x7FF; + if ( v5 ) + _ESI |= 0x100000u; + _EDX = LODWORD(a1); + if ( LODWORD(a1) ) + { + __asm { tzcnt ebx, edx } + v8 = LODWORD(a1) >> _EBX; + if ( _EBX ) + { + v8 |= _ESI << (32 - _EBX); + _ESI >>= _EBX; + } + result[5] = v8; + result[6] = _ESI; + v9 = (_ESI != 0) + 1; + result[4] = v9; + if ( !v5 ) + goto LABEL_8; + } + else + { + result[4] = 1; + v9 = 1; + __asm { tzcnt ecx, esi } + _EBX = _ECX + 32; + result[5] = _ESI >> _ECX; + if ( !v5 ) + { +LABEL_8: + *a2 = _EBX - 1074; + _BitScanReverse(&v10, result[v9 + 4]); + *a3 = 32 * v9 - (v10 ^ 0x1F); + return result; + } + } + *a2 = v5 + _EBX - 1075; + *a3 = 53 - _EBX; + } + return result; +} + +//----- (00451720) -------------------------------------------------------- +int __cdecl __strcp_D2A(__int64 a1) +{ + __int64 v1; // rax + char v2; // cl + char v3; // cl + + v1 = a1 + 0x100000000LL; + v2 = *(_BYTE *)HIDWORD(a1); + *(_BYTE *)a1 = *(_BYTE *)HIDWORD(a1); + if ( v2 ) + { + do + { + v3 = *(_BYTE *)HIDWORD(v1); + LODWORD(v1) = v1 + 1; + ++HIDWORD(v1); + *(_BYTE *)v1 = v3; + } + while ( v3 ); + } + return v1; +} + +//----- (00451750) -------------------------------------------------------- +float __cdecl strtof(const char *String, char **EndPtr) +{ + char v2; // al + float v3; // edx + float v5; // [esp+38h] [ebp-14h] BYREF + int v6[4]; // [esp+3Ch] [ebp-10h] BYREF + + v2 = __strtodg((unsigned __int8 *)String, (unsigned __int8 **)EndPtr, dword_51507C, v6, (int *)&v5); + switch ( v2 & 7 ) + { + case 1: + case 5: + LODWORD(v3) = LODWORD(v5) & 0x7FFFFF | ((v6[0] + 150) << 23); + break; + case 2: + v3 = v5; + break; + case 3: + v3 = INFINITY; + break; + case 4: + v3 = NAN; + break; + default: + v3 = 0.0; + break; + } + if ( (v2 & 8) != 0 ) + LODWORD(v3) |= 0x80000000; + return v3; +} +// 51507C: using guessed type int dword_51507C[5]; +// 451750: using guessed type int var_10[4]; + +//----- (004517F0) -------------------------------------------------------- +unsigned __int64 __cdecl strtoull(const char *String, char **EndPtr, int Radix) +{ + const char *v3; // edi + int v4; // eax + int C; // eax + int v6; // ebx + char v7; // al + int v8; // edx + int v9; // eax + unsigned __int16 v10; // ax + int v11; // eax + char *v12; // edx + int v13; // esi + int v14; // edi + char *i; // ebx + int v16; // eax + int v17; // ebp + unsigned __int16 v18; // ax + int v19; // eax + unsigned __int64 v21; // rax + int v22; // eax + int v23; // eax + unsigned int v24; // [esp+20h] [ebp-2Ch] + int v25; // [esp+24h] [ebp-28h] + char v26; // [esp+2Fh] [ebp-1Dh] + + v3 = String; + if ( EndPtr ) + *EndPtr = (char *)String; + if ( Radix == 1 || (unsigned int)Radix > 0x24 ) + { + v13 = 0; + v14 = 0; + *_errno() = 33; + return __PAIR64__(v14, v13); + } + while ( 1 ) + { + C = *v3; + if ( ___mb_cur_max != 1 ) + break; + v4 = __pctype[C] & 8; + if ( !v4 ) + goto LABEL_10; +LABEL_7: + ++v3; + } + v4 = _isctype(C, 8); + if ( v4 ) + goto LABEL_7; +LABEL_10: + v6 = v4; + v26 = *v3; + v7 = *v3; + if ( ((*v3 - 43) & 0xFD) == 0 ) + v7 = *++v3; + if ( Radix ) + { + if ( Radix == 16 && v7 == 48 ) + { + if ( (v3[1] & 0xDF) == 88 ) + goto LABEL_54; + v24 = 16; + v9 = 0; + goto LABEL_21; + } +LABEL_14: + v8 = v7; + v9 = v7 - 48; + if ( (unsigned int)v9 <= 9 ) + goto LABEL_20; + if ( ___mb_cur_max == 1 ) + { + v10 = __pctype[v8]; + if ( (v10 & 1) == 0 ) + goto LABEL_17; + } + else if ( !_isctype(v8, 1) ) + { + v23 = *v3; + if ( ___mb_cur_max != 1 ) + { + v11 = _isctype(v23, 2); + goto LABEL_18; + } + v10 = __pctype[v23]; +LABEL_17: + v11 = v10 & 2; +LABEL_18: + if ( !v11 ) + return 0LL; + v9 = *v3 - 87; +LABEL_20: + v24 = Radix; + goto LABEL_21; + } + v9 = *v3 - 55; + v24 = Radix; + goto LABEL_21; + } + Radix = 10; + if ( v7 != 48 ) + goto LABEL_14; + if ( (v3[1] & 0xDF) == 88 ) + { +LABEL_54: + v7 = v3[2]; + Radix = 16; + v3 += 2; + goto LABEL_14; + } + v24 = 8; + v9 = 0; + Radix = 8; +LABEL_21: + v12 = (char *)(v3 + 1); + if ( v9 >= v24 ) + return 0LL; + v13 = v9; + v25 = v6; + v14 = v9 >> 31; + for ( i = v12; ; ++i ) + { + v16 = *i; + v17 = v16 - 48; + if ( (unsigned int)(v16 - 48) <= 9 ) + goto LABEL_40; + if ( ___mb_cur_max == 1 ) + { + v18 = __pctype[v16]; + if ( (v18 & 1) != 0 ) + goto LABEL_46; + } + else + { + if ( _isctype(v16, 1) ) + { +LABEL_46: + v17 = *i - 55; + goto LABEL_40; + } + v22 = *i; + if ( ___mb_cur_max != 1 ) + { + v19 = _isctype(v22, 2); + goto LABEL_27; + } + v18 = __pctype[v22]; + } + v19 = v18 & 2; +LABEL_27: + if ( !v19 ) + break; + v17 = *i - 87; +LABEL_40: + if ( v17 >= v24 ) + break; + if ( 0xFFFFFFFFFFFFFFFFLL / Radix + 1 < __PAIR64__(v14, v13) + || (v21 = v17 + Radix * __PAIR64__(v14, v13), v21 < __PAIR64__(v14, v13)) ) + { + v25 = 1; + } + else + { + v14 = HIDWORD(v21); + v13 = v21; + } + } + if ( EndPtr ) + *EndPtr = i; + if ( v25 ) + { + v13 = -1; + v14 = -1; + *_errno() = 34; + } + else if ( v26 == 45 ) + { + v13 = -v13; + v14 = (unsigned __int64)-__SPAIR64__(v14, v13) >> 32; + } + return __PAIR64__(v14, v13); +} + +//----- (00451BA0) -------------------------------------------------------- +wint_t __cdecl btowc(int Ch) +{ + WCHAR v2[7]; // [esp+1Eh] [ebp-Eh] BYREF + + if ( Ch != -1 && (__mingw_mbrtowc_codeset_init(), __mingw_mbtowc_convert((LPCCH)&Ch, 1, v2, 1) == 1) ) + return v2[0]; + else + return -1; +} +// 451BA0: using guessed type WCHAR var_E[7]; + +//----- (00451C00) -------------------------------------------------------- +int __cdecl vsnprintf_2(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList) +{ + int result; // eax + int v5; // edx + + if ( !BufferCount ) + return __mingw_pformat(0, (int)Buffer, 0, (char *)Format, (double *)ArgList); + result = __mingw_pformat(0, (int)Buffer, BufferCount - 1, (char *)Format, (double *)ArgList); + v5 = result; + if ( result > BufferCount - 1 ) + v5 = BufferCount - 1; + Buffer[v5] = 0; + return result; +} + +//----- (00451C80) -------------------------------------------------------- +void *__cdecl __mingw_realloc(unsigned int a1, size_t a2) +{ + int v2; // ebx + int v4[7]; // [esp+10h] [ebp-1Ch] BYREF + + v2 = a1; + if ( !a1 || a1 == __mingw_memalign_base(a1, (unsigned int *)v4) ) + return (void *)___msvcrt_realloc(v2, a2); + if ( !a2 ) + { + v2 = v4[0]; + return (void *)___msvcrt_realloc(v2, a2); + } + if ( v4[3] < a2 ) + return __mingw_memalign_realloc(a1, v4, a2); + *_errno() = 22; + return 0; +} +// 78C408: using guessed type int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); + +//----- (00451D00) -------------------------------------------------------- +int __cdecl __mingw_free(unsigned int a1) +{ + unsigned int v1; // eax + unsigned int v3[7]; // [esp+10h] [ebp-1Ch] BYREF + + v1 = __mingw_memalign_base(a1, v3); + return ___msvcrt_free(v1); +} +// 78C404: using guessed type int __cdecl ___msvcrt_free(_DWORD); +// 451D00: using guessed type unsigned int var_1C[7]; + +//----- (00451D30) -------------------------------------------------------- +char *__usercall sub_451D30@(char *a1@, int a2@, __int16 a3@) +{ + int v3; // ebp + int v4; // ebx + char *v5; // edx + int v6; // eax + char *v7; // ebp + int v8; // edx + int v9; // ebx + char *v10; // edi + int v11; // esi + int v12; // esi + int v13; // eax + char v14; // cl + char *i; // edx + char *result; // eax + char *v17; // esi + char v18; // cl + char *v19; // edi + int v20; // ebp + int v21; // edi + int v22; // ebx + int v23; // ebx + char *v24; // edi + char v25; // dl + char *v26; // ebx + int v27; // esi + int v28; // ebx + int v29; // ebx + char *v30; // edi + char v31; // dl + char *v32; // ebx + char *v33; // esi + int C; // [esp+0h] [ebp-4Ch] + int Ca; // [esp+0h] [ebp-4Ch] + int v37; // [esp+24h] [ebp-28h] + char *v38; // [esp+24h] [ebp-28h] + char *v40; // [esp+2Ch] [ebp-20h] + + v3 = *a1; + v4 = v3; + if ( v3 != 45 ) + { + v5 = a1; + if ( v3 != 93 ) + goto LABEL_3; + } + v18 = a1[1]; + v5 = a1 + 1; + if ( v3 != a2 ) + { + v3 = v18; +LABEL_3: + v6 = v3; + v7 = v5; + v8 = v4; + v9 = v6; + while ( 1 ) + { + v10 = v7 + 1; + v11 = v9; + if ( v9 == 93 ) + return 0; + if ( v9 != 45 ) + break; + v9 = v7[1]; + if ( (_BYTE)v9 != 93 ) + { + if ( !(_BYTE)v9 ) + return 0; + v19 = v7 + 2; + v38 = v7; + v20 = v8; + v40 = v19; + v21 = (char)v9; +LABEL_30: + while ( v20 < v21 ) + { + if ( (a3 & 0x4000) == 0 ) + { + C = v20++; + v23 = tolower(C); + if ( v23 != tolower(a2) ) + goto LABEL_30; +LABEL_33: + v24 = v40; + v25 = v38[2]; +LABEL_34: + result = v24 + 1; + if ( v25 == 93 ) + return result; + if ( v25 == 127 ) + goto LABEL_39; + while ( 1 ) + { + do + { + if ( !v25 ) + return 0; + v25 = v24[1]; + v24 = result++; + if ( v25 == 93 ) + return result; + } + while ( v25 != 127 ); +LABEL_39: + v25 = v24[1]; + if ( (a3 & 0x20) != 0 ) + { + v24 = result; + goto LABEL_34; + } + v26 = v24 + 2; + v24 = result; + result = v26; + } + } + v22 = v20 - a2; + ++v20; + if ( !v22 ) + goto LABEL_33; + } + v27 = v20; +LABEL_43: + while ( v27 > v21 ) + { + if ( (a3 & 0x4000) == 0 ) + { + Ca = v27--; + v29 = tolower(Ca); + if ( v29 != tolower(a2) ) + goto LABEL_43; +LABEL_46: + v30 = v40; + v31 = v38[2]; +LABEL_47: + result = v30 + 1; + if ( v31 == 93 ) + return result; + if ( v31 == 127 ) + goto LABEL_52; + while ( 1 ) + { + do + { + if ( !v31 ) + return 0; + v31 = v30[1]; + v30 = result++; + if ( v31 == 93 ) + return result; + } + while ( v31 != 127 ); +LABEL_52: + v31 = v30[1]; + if ( (a3 & 0x20) != 0 ) + { + v30 = result; + goto LABEL_47; + } + v32 = v30 + 2; + v30 = result; + result = v32; + } + } + v28 = v27 - a2; + --v27; + if ( !v28 ) + goto LABEL_46; + } + v11 = v21; + v10 = v40; +LABEL_8: + if ( v11 == 47 || v11 == 92 ) + return 0; + v9 = *v10; + v7 = v10; + v8 = v11; + goto LABEL_11; + } + ++v7; + v8 = 45; +LABEL_11: + if ( (a3 & 0x4000) != 0 ) + { + if ( v8 == a2 ) + goto LABEL_13; + } + else + { + v37 = v8; + v12 = tolower(v8); + v13 = tolower(a2); + v8 = v37; + if ( v12 == v13 ) + { +LABEL_13: + v14 = v9; + for ( i = v7; ; i = result ) + { + result = i + 1; + if ( v14 == 93 ) + return result; + if ( v14 == 127 ) + goto LABEL_19; + while ( 1 ) + { + do + { + if ( !v14 ) + return 0; + v14 = i[1]; + i = result++; + if ( v14 == 93 ) + return result; + } + while ( v14 != 127 ); +LABEL_19: + v14 = i[1]; + if ( (a3 & 0x20) != 0 ) + break; + v17 = i + 2; + i = result; + result = v17; + } + } + } + } + } + if ( !v9 ) + return 0; + goto LABEL_8; + } +LABEL_55: + result = v5 + 1; + if ( v18 == 93 ) + return result; + if ( v18 == 127 ) + goto LABEL_60; + while ( v18 ) + { + v18 = v5[1]; + v5 = result++; + if ( v18 == 93 ) + return result; + if ( v18 == 127 ) + { +LABEL_60: + v18 = v5[1]; + if ( (a3 & 0x20) != 0 ) + { + v5 = result; + goto LABEL_55; + } + v33 = v5 + 2; + v5 = result; + result = v33; + } + } + return 0; +} + +//----- (00452060) -------------------------------------------------------- +int __usercall sub_452060@(char *a1@, _BYTE *a2@, int a3@) +{ + char *i; // ebp + _BYTE *v4; // esi + char v5; // di + int C; // edx + char v7; // al + char *v8; // ebx + _BYTE *v9; // edi + int v10; // eax + int v11; // ebp + int v12; // eax + int v13; // ebp + int v14; // esi + int v15; // eax + int v17; // edx + char *v18; // eax + char *v19; // ebx + char *v20; // eax + char *v21; // edx + char *v22; // edx + int v23; // [esp+10h] [ebp-2Ch] + int v24; // [esp+10h] [ebp-2Ch] + int v25; // [esp+10h] [ebp-2Ch] + int v26; // [esp+14h] [ebp-28h] + int v27; // [esp+18h] [ebp-24h] + int v28; // [esp+1Ch] [ebp-20h] + + i = a1; + v4 = a2; + v5 = *a2; + C = *a1; + v7 = *a1; + if ( v5 != 46 ) + goto LABEL_2; + if ( (_BYTE)C != 46 ) + { + if ( (a3 & 0x10000) == 0 ) + { + C -= 46; + return C; + } +LABEL_2: + v8 = i + 1; + if ( !C ) + return -v5; + goto LABEL_3; + } + v8 = i + 1; +LABEL_3: + v26 = a3 & 0x20; + while ( 1 ) + { + v9 = v4; + if ( v7 == 63 ) + { + if ( !*v4 ) + return 63; + goto LABEL_30; + } + if ( v7 != 91 ) + break; + v17 = (char)*v4; + if ( !*v4 ) + return 91; + if ( i[1] == 33 ) + { + v19 = i + 2; + v25 = a3; + v20 = sub_451D30(i + 2, v17, a3); + a3 = v25; + v21 = v20; + v7 = i[2]; + if ( v21 ) + { + i += 2; + } + else + { + if ( v7 == 93 ) + { + v7 = i[3]; + v19 = i + 3; + } +LABEL_42: + for ( i = v19 + 1; v7 != 93; v19 = i++ ) + { + if ( v7 == 127 ) + { + v7 = v19[1]; + if ( v26 ) + { + v19 = i; + goto LABEL_42; + } + v22 = v19 + 2; + v19 = i; + i = v22; + } + if ( !v7 ) + return 93; + v7 = v19[1]; + } + v7 = v19[1]; + } + } + else + { + v24 = a3; + v18 = sub_451D30(v8, v17, a3); + i = v18; + if ( !v18 ) + return 93; + v7 = *v18; + a3 = v24; + } +LABEL_26: + C = v7; + v8 = i + 1; + ++v4; + if ( !v7 ) + { + v5 = v9[1]; + return -v5; + } + } + if ( v7 != 42 ) + { + if ( (a3 & 0x20) == 0 && C == 127 ) + { + C = i[1]; + if ( i[1] ) + v8 = i + 2; + } + v10 = (char)*v4; + if ( !(_BYTE)v10 ) + return C; + v23 = (char)*v4; + if ( (a3 & 0x4000) != 0 ) + { + v13 = C - v10; + } + else + { + v28 = a3; + v27 = C; + v11 = tolower(C); + v12 = tolower(v23); + a3 = v28; + C = v27; + v13 = v11 - v12; + } + if ( v13 ) + { + C -= v23; + return C; + } +LABEL_30: + v7 = *v8; + i = v8; + goto LABEL_26; + } + while ( *v8 == 42 ) + ++v8; + C = 0; + if ( *v8 ) + { + v14 = a3 | 0x10000; + do + { + v15 = sub_452060(v14, v9); + if ( !v15 ) + break; + ++v9; + } + while ( *(v9 - 1) ); + return v15; + } + return C; +} + +//----- (00452290) -------------------------------------------------------- +int __usercall sub_452290@(char *a1@, unsigned int a2@) +{ + char *v2; // ecx + char *v3; // ebx + int result; // eax + int v5; // edi + + v2 = a1 + 1; + v3 = a1; + result = *a1; + if ( result ) + { + v5 = 0; + do + { + while ( result == 127 && (((unsigned __int8)(a2 >> 5) ^ 1) & 1) != 0 ) + { + v2 = v3 + 2; + if ( !v3[1] ) + return 0; + if ( !v5 ) + goto LABEL_5; +LABEL_13: + v3 = v2; + ++v5; + ++v2; + result = *v3; + if ( !*v3 ) + return result; + } + if ( !v5 ) + { + if ( result == 42 || result == 63 ) + return 1; +LABEL_5: + v3 = v2; + v5 = result == 91; + goto LABEL_6; + } + if ( v5 > 1 && result == 93 ) + return 1; + v3 = v2; + if ( result != 33 ) + goto LABEL_13; +LABEL_6: + result = *v3; + ++v2; + } + while ( *v3 ); + } + return result; +} + +//----- (00452330) -------------------------------------------------------- +int __usercall sub_452330@(int a1@, _DWORD *a2@) +{ + _DWORD *v4; // eax + int v5; // ecx + int v6; // edx + + v4 = __mingw_realloc(a2[2], 4 * (a2[1] + a2[3]) + 8); + if ( !v4 ) + return 1; + v5 = a2[1]; + v6 = a2[3]; + a2[2] = v4; + a2[1] = v5 + 1; + v4[v6 + v5] = a1; + v4[v5 + 1 + v6] = 0; + return 0; +} + +//----- (00452390) -------------------------------------------------------- +int __usercall sub_452390@(_DWORD *a1@, _DWORD *a2@, int a3@) +{ + int v5; // eax + + if ( *a1 ) + ((void (*)(void))sub_452390)(); + v5 = a1[2]; + if ( v5 && a2 ) + sub_452330(v5, a2); + if ( a1[1] ) + sub_452390(a3, a2); + return __mingw_free((unsigned int)a1); +} +// 4523B8: variable 'a3' is possibly undefined + +//----- (004523E0) -------------------------------------------------------- +int __usercall sub_4523E0@(_DWORD *a1@) +{ + int v2; // ebx + _DWORD *v3; // eax + + v2 = a1[3] + 1; + v3 = malloc(4 * v2); + a1[2] = v3; + if ( !v3 ) + return 3; + a1[1] = 0; + if ( v2 > 0 ) + { + do + v3[--v2] = 0; + while ( v2 ); + } + return 0; +} + +//----- (00452430) -------------------------------------------------------- +int __usercall sub_452430@(char *a1@, unsigned int a2@, int a3@, _DWORD *a4) +{ + size_t v4; // eax + size_t v5; // edx + int v6; // eax + void *v7; // esp + void *v8; // esp + char *v9; // eax + char *v10; // eax + char *v11; // edi + int v12; // eax + void *v13; // esp + void *v14; // esp + char *v15; // edx + char *v16; // ecx + char v17; // al + char v18; // al + char *v19; // eax + char *v20; // ebx + char v21; // al + char *v22; // esi + int v23; // eax + void *v24; // esp + char v25; // bl + void *v26; // esp + char *v27; // edi + int v28; // ecx + char *v29; // eax + char *v30; // edx + char *v31; // esi + int v32; // ecx + char v33; // al + bool i; // cc + char *v35; // esi + int v36; // ecx + unsigned int v37; // edi + char *v38; // eax + int v39; // edx + char *v40; // ecx + char *v41; // edx + int v42; // ebx + char *v43; // eax + char v44; // dl + char v46; // bl + char *v47; // eax + char v48; // dl + int v49; // eax + char v50; // al + char v51; // dl + unsigned int v52; // edi + char *v53; // eax + char *v54; // ebx + int (__cdecl *v55)(_DWORD, int); // edi + int *v56; // eax + const char *v57; // eax + int v58; // eax + int v59; // esi + const void *v60; // edi + int v61; // ecx + int v62; // eax + void *v63; // esp + void *v64; // esp + char *v65; // edx + char *v66; // eax + int v67; // eax + void *v68; // esp + char *v69; // esi + void *v70; // esp + char *v71; // edx + char v72; // al + char v73; // al + char *v74; // esi + int v75; // ecx + char *v76; // eax + size_t v77; // esi + const char *v78; // eax + char v79; // al + size_t v80; // esi + _DWORD *v81; // edi + int v82; // ebx + char *v83; // eax + _DWORD *v84; // edx + const char *v85; // eax + _DWORD *v86; // eax + char *v87; // edx + char *v88; // edi + int v89; // eax + void *v90; // esp + void *v91; // esp + char *v92; // ecx + char *v93; // edx + char v94; // al + _DWORD *v95; // eax + char *v96; // [esp+0h] [ebp-78h] BYREF + const char *v97; // [esp+4h] [ebp-74h] + char String[4]; // [esp+Ch] [ebp-6Ch] BYREF + int v100; // [esp+10h] [ebp-68h] + char v101; // [esp+17h] [ebp-61h] + size_t v102; // [esp+18h] [ebp-60h] + char *v103; // [esp+1Ch] [ebp-5Ch] + char *v104; // [esp+20h] [ebp-58h] + const char **v105; // [esp+24h] [ebp-54h] + _DWORD *v106; // [esp+28h] [ebp-50h] + size_t Size; // [esp+2Ch] [ebp-4Ch] + char *v108; // [esp+30h] [ebp-48h] + char *v109; // [esp+34h] [ebp-44h] + char *v110; // [esp+38h] [ebp-40h] + char *Str; // [esp+3Ch] [ebp-3Ch] + int (__cdecl *v112)(_DWORD, int); // [esp+40h] [ebp-38h] + int v113; // [esp+44h] [ebp-34h] + unsigned int v114; // [esp+48h] [ebp-30h] + int v115; // [esp+4Ch] [ebp-2Ch] + _DWORD v116[2]; // [esp+50h] [ebp-28h] BYREF + char **v117; // [esp+58h] [ebp-20h] + int v118; // [esp+5Ch] [ebp-1Ch] + + Str = a1; + v114 = a2; + v112 = (int (__cdecl *)(_DWORD, int))a3; + if ( (a2 & 0x400) == 0 ) + { +LABEL_2: + v109 = (char *)&v96; + v4 = strlen(Str); + v5 = v4 + 1; + v6 = 16 * ((v4 + 16) >> 4); + v7 = alloca(v6); + v8 = alloca(v6); + v9 = (char *)memcpy(String, Str, v5); + v10 = __mingw_dirname(v9); + v118 = 0; + v110 = v10; + v11 = v10; + v115 = sub_4523E0(v116); + if ( !v115 ) + { + if ( v11 && sub_452290(v11, v114) ) + { + v115 = sub_452430(v116); + } + else + { + v12 = 16 * ((strlen(v110) + 16) >> 4); + v13 = alloca(v12); + v14 = alloca(v12); + v15 = v110; + v16 = String; + do + { + while ( 1 ) + { + v17 = *v15; + if ( *v15 == 127 ) + break; + ++v16; + ++v15; + *(v16 - 1) = v17; + if ( !v17 ) + goto LABEL_9; + } + v18 = v15[1]; + ++v16; + v15 += 2; + *(v16 - 1) = v18; + } + while ( v18 ); +LABEL_9: + v19 = strdup(String); + v115 = 1; + if ( !v19 ) + return v115; + v115 = sub_452330((int)v19, v116); + } + if ( !v115 ) + { + v20 = Str; + v21 = Str[1]; + if ( v21 == 47 || v21 == 92 || *v110 != 46 || v110[1] ) + { + v20 = &Str[strlen(v110)]; + v50 = *v20; + if ( Str >= v20 ) + { +LABEL_87: + if ( v50 != 47 && v50 != 92 ) + { + v101 = 92; + goto LABEL_93; + } + } + else + { + while ( v50 != 47 ) + { + if ( v50 != 92 ) + { + v50 = *--v20; + if ( Str != v20 ) + continue; + } + goto LABEL_87; + } + } + do + { + do + { + ++v20; + v51 = v50; + v50 = *v20; + } + while ( *v20 == 47 ); + } + while ( v50 == 92 ); + v101 = v51; + } + else + { + if ( (v114 & 0x10) != 0 ) + { + v88 = Str; + v115 = sub_452290(Str, v114); + if ( !v115 ) + { + v89 = 16 * ((strlen(v88) + 16) >> 4); + v90 = alloca(v89); + v91 = alloca(v89); + v92 = v88; + v93 = String; + do + { + v94 = *v92; + if ( *v92 == 127 ) + { + v94 = v92[1]; + v92 += 2; + } + else + { + ++v92; + } + *v93++ = v94; + } + while ( v94 ); + v76 = strdup(String); + if ( v76 && a4 ) + { + sub_452330((int)v76, a4); + v52 = (unsigned int)v117; + } + else + { +LABEL_126: + v52 = (unsigned int)v117; + } + goto LABEL_125; + } + v20 = Str; + } + v101 = 92; + v110 = 0; + } +LABEL_93: + v52 = (unsigned int)v117; + v115 = 2; + v53 = *v117; + if ( *v117 ) + { + v108 = v20; + v54 = (char *)v117; + Str = (char *)(v114 & 0x8000); + while ( 1 ) + { + if ( v115 == 1 ) + goto LABEL_98; + v113 = __mingw_opendir(v53); + if ( v113 ) + { + Size = 0; + if ( v110 ) + Size = strlen(*(const char **)v54); + v106 = 0; + v102 = Size + 2; + while ( 1 ) + { + v58 = __mingw_readdir(v113); + v59 = v58; + if ( !v58 ) + break; + if ( !Str || *(_DWORD *)(v58 + 8) == 16 ) + { + v60 = (const void *)(v58 + 12); + if ( !sub_452060(v108, (_BYTE *)(v58 + 12), v114) ) + { + v61 = *(unsigned __int16 *)(v59 + 6); + v105 = (const char **)&v96; + v62 = 16 * ((v61 + v102 + 15) >> 4); + v63 = alloca(v62); + v64 = alloca(v62); + v65 = String; + v104 = String; + v66 = String; + if ( Size ) + { + v77 = Size; + v78 = *(const char **)v54; + v100 = v61; + v103 = String; + memcpy(String, v78, Size); + v79 = String[v77 - 1]; + v65 = v103; + v61 = v100; + if ( v79 == 47 || v79 == 92 ) + { + v66 = &v103[Size]; + } + else + { + v80 = Size; + v103[Size] = v101; + v66 = &v65[v80 + 1]; + } + } + v103 = v65; + memcpy(v66, v60, v61 + 1); + v67 = 16 * ((strlen(v103) + 16) >> 4); + v68 = alloca(v67); + v69 = v104; + v70 = alloca(v67); + v103 = String; + v71 = String; + do + { + while ( 1 ) + { + v72 = *v69; + if ( *v69 == 127 ) + break; + ++v71; + ++v69; + *(v71 - 1) = v72; + if ( !v72 ) + goto LABEL_114; + } + v73 = v69[1]; + ++v71; + v69 += 2; + *(v71 - 1) = v73; + } + while ( v73 ); +LABEL_114: + v74 = strdup(v103); + if ( v74 ) + { + v115 = v115 == 2 ? 0 : v115; + if ( (v114 & 0x40) != 0 ) + { + if ( a4 ) + sub_452330((int)v74, a4); + } + else + { + v81 = v106; + if ( v106 ) + { + v104 = v54; + v82 = v114 & 0x4000; + while ( 1 ) + { + v85 = (const char *)v81[2]; + v96 = v74; + v97 = v85; + if ( v82 ) + v83 = (char *)strcoll(v96, v97); + else + v83 = (char *)stricoll(v96, v97); + v84 = (_DWORD *)v81[1]; + if ( (int)v83 <= 0 ) + v84 = (_DWORD *)*v81; + if ( !v84 ) + break; + v81 = v84; + } + v54 = v104; + v104 = v83; + v86 = malloc(0xCu); + v87 = v104; + if ( v86 ) + { + v86[2] = v74; + v86[1] = 0; + *v86 = 0; + if ( (int)v87 <= 0 ) + *v81 = v86; + else + v81[1] = v86; + } + } + else + { + v106 = malloc(0xCu); + if ( v106 ) + { + v95 = v106; + v106[2] = v74; + v95[1] = 0; + *v95 = 0; + } + } + } + } + else + { + v115 = 3; + } + } + } + } + __mingw_closedir(v113); + if ( v106 ) + sub_452390(v106, a4, v75); + goto LABEL_99; + } + if ( (v114 & 4) != 0 || (v55 = v112) != 0 && (v56 = _errno(), v55(*(_DWORD *)v54, *v56)) ) +LABEL_98: + v115 = 1; +LABEL_99: + v57 = *(const char **)v54; + v54 += 4; + __mingw_free((unsigned int)v57); + v53 = *(char **)v54; + if ( !*(_DWORD *)v54 ) + goto LABEL_126; + } + } +LABEL_125: + __mingw_free(v52); + return v115; + } + } + return v115; + } + v108 = (char *)&v96; + v22 = a1; + v23 = 16 * ((strlen(a1) + 16) >> 4); + v24 = alloca(v23); + v25 = *v22; + v26 = alloca(v23); + v27 = String; + v109 = String; + while ( 1 ) + { +LABEL_19: + v28 = (int)(v22 + 1); + if ( v25 == 127 ) + goto LABEL_23; + while ( v25 != 123 ) + { + while ( 1 ) + { + *v27 = v25; + if ( !v25 ) + goto LABEL_2; + v25 = v22[1]; + v22 = (char *)v28; + ++v27; + ++v28; + if ( v25 != 127 ) + break; +LABEL_23: + v25 = v22[1]; + *v27 = 127; + if ( v25 ) + { + v27[1] = v25; + v22 += 2; + v25 = *v22; + v27 += 2; + goto LABEL_19; + } + v29 = v22 + 2; + ++v27; + v22 = (char *)v28; + v28 = (int)v29; + } + } + v25 = v22[1]; + v30 = v22; + v110 = v22; + v115 = v28; + v31 = v22 + 1; + v32 = 1; + v33 = v25; + v113 = 44; + for ( i = v25 <= 123; v33 == 123; i = v33 <= 123 ) + { + v33 = v30[2]; + ++v32; + v30 = v31; +LABEL_33: + v31 = v30 + 1; + } + if ( !i ) + break; + if ( v33 ) + { + if ( v33 != 44 || v32 != 1 ) + { +LABEL_31: + v33 = v30[2]; +LABEL_32: + v30 = v31; + goto LABEL_33; + } + v33 = v30[2]; + v113 = 123; + v30 = v31; + goto LABEL_33; + } + v36 = v115; +LABEL_57: + *v27 = 123; + v22 = (char *)v36; + ++v27; + } + if ( v33 != 125 ) + { + if ( v33 != 127 ) + goto LABEL_31; + v33 = v30[2]; + if ( !v33 ) + goto LABEL_32; + v33 = v30[3]; + v30 += 2; + goto LABEL_33; + } + if ( --v32 ) + goto LABEL_31; + v35 = v110; + v36 = v115; + if ( v113 != 123 ) + goto LABEL_57; + v115 = (int)v27; + v37 = v114; + while ( 2 ) + { + v38 = (char *)v115; + v39 = 1; + if ( v25 != 127 ) + { +LABEL_40: + ++v35; + v40 = v38; + goto LABEL_41; + } + while ( 2 ) + { + v46 = v35[2]; + *v38 = 127; + v40 = v38 + 2; + v38[1] = v46; + if ( !v46 ) + { + v38[2] = 0; + return 1; + } + v25 = v35[3]; + v35 += 3; +LABEL_41: + if ( v25 != 125 ) + { + if ( v25 == 44 && v39 == 1 ) + { + v41 = v35; + v42 = 1; + while ( 1 ) + { + v43 = v41 + 1; + v44 = v41[1]; + if ( v44 == 127 ) + break; +LABEL_67: + switch ( v44 ) + { + case 123: + ++v42; + v41 = v43; + break; + case 125: + if ( !--v42 ) + goto LABEL_72; + v41 = v43; + break; + case 0: + goto LABEL_49; + default: + v41 = v43; + break; + } + } + while ( v43[1] ) + { + v44 = v43[2]; + v43 += 2; + if ( v44 != 127 ) + goto LABEL_67; + } +LABEL_49: + *v40 = 0; + return 1; + } + v38 = v40 + 1; + if ( v25 == 123 ) + { + *v40 = 123; + ++v39; + goto LABEL_53; + } + *v40 = v25; + if ( v25 ) + { +LABEL_53: + v25 = v35[1]; + if ( v25 != 127 ) + goto LABEL_40; + continue; + } + return 1; + } + break; + } + if ( --v39 ) + { + *v40 = 125; + v38 = v40 + 1; + goto LABEL_53; + } + v43 = v35; +LABEL_72: + v47 = v43 + 1; + do + { + v48 = *v47; + ++v40; + ++v47; + *(v40 - 1) = v48; + } + while ( v48 ); + v37 |= 1u; + v49 = sub_452430(a4); + if ( v49 == 1 ) + return 1; + if ( *v35 == 44 ) + { + v25 = v35[1]; + continue; + } + return v49; + } +} +// 452AF1: variable 'v75' is possibly undefined +// 452430: using guessed type _DWORD var_28[2]; +// 452430: using guessed type char String[4]; + +//----- (00452CD0) -------------------------------------------------------- +int *__cdecl __mingw_glob(char *Str, int a2, int a3, char **a4) +{ + char *v4; // ebx + int v5; // ecx + int v7; // eax + void *v8; // esp + void *v9; // esp + _BYTE *v10; // edx + char v11; // al + char v12; // al + char *v13; // eax + int v14; // [esp+0h] [ebp-38h] BYREF + _BYTE v15[16]; // [esp+4h] [ebp-34h] BYREF + int v16; // [esp+14h] [ebp-24h] + char *String; // [esp+18h] [ebp-20h] + int *v18; // [esp+1Ch] [ebp-1Ch] + + v4 = Str; + if ( a4 && (a2 & 2) == 0 ) + a4[3] = 0; + if ( *a4 != "glob-1.0-mingw32" ) + { + sub_4523E0(a4); + *a4 = "glob-1.0-mingw32"; + } + v5 = sub_452430(Str, a2, a3, a4); + if ( v5 == 2 && (a2 & 0x10) != 0 ) + { + v16 = 2; + v18 = &v14; + v7 = 16 * ((strlen(Str) + 16) >> 4); + v8 = alloca(v7); + v9 = alloca(v7); + String = v15; + v10 = v15; + do + { + while ( 1 ) + { + v11 = *v4; + if ( *v4 == 127 ) + break; + ++v10; + ++v4; + *(v10 - 1) = v11; + if ( !v11 ) + goto LABEL_13; + } + v12 = v4[1]; + ++v10; + v4 += 2; + *(v10 - 1) = v12; + } + while ( v12 ); +LABEL_13: + v16 = 2; + v13 = strdup(String); + v5 = v16; + if ( v13 ) + { + v18 = (int *)v16; + sub_452330((int)v13, a4); + return v18; + } + } + return (int *)v5; +} + +//----- (00452DD0) -------------------------------------------------------- +int __cdecl __mingw_globfree(int a1) +{ + int v1; // edi + int v2; // ebx + int v3; // edi + unsigned int v4; // eax + int result; // eax + + if ( *(char **)a1 == "glob-1.0-mingw32" ) + { + v1 = *(_DWORD *)(a1 + 4); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 > 0 ) + { + v3 = v2 + v1; + do + { + v4 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4 * v2++); + __mingw_free(v4); + } + while ( v3 != v2 ); + } + return __mingw_free(*(_DWORD *)(a1 + 8)); + } + return result; +} + +//----- (00452E30) -------------------------------------------------------- +char *__cdecl __mingw_dirname(char *Source) +{ + char *v1; // eax + const char *v2; // ebx + size_t v3; // esi + char *v4; // esi + size_t v6; // edx + int v7; // eax + void *v8; // esp + void *v9; // esp + size_t v10; // eax + _WORD *v11; // eax + wchar_t v12; // dx + _WORD *v13; // ecx + _WORD *v14; // esi + __int16 v15; // dx + _WORD *v16; // eax + wchar_t v17; // ax + wchar_t *p_Dest; // ecx + wchar_t v19; // dx + wchar_t *v20; // edx + wchar_t v21; // bx + size_t v22; // eax + size_t v23; // eax + __int16 v24; // dx + int v25; // [esp+0h] [ebp-38h] BYREF + wchar_t Dest; // [esp+Ch] [ebp-2Ch] BYREF + __int16 v27; // [esp+Eh] [ebp-2Ah] + size_t v28[2]; // [esp+10h] [ebp-28h] BYREF + wchar_t v29; // [esp+1Ah] [ebp-1Eh] + size_t MaxCount; // [esp+1Ch] [ebp-1Ch] + + v1 = setlocale(2, 0); + v2 = v1; + if ( v1 ) + v2 = strdup(v1); + setlocale(2, Locale); + if ( !Source || !*Source ) + goto LABEL_5; + v28[1] = (size_t)&v25; + v6 = mbstowcs(0, Source, 0); + v7 = 16 * ((2 * v6 + 17) >> 4); + v8 = alloca(v7); + v9 = alloca(v7); + v10 = mbstowcs(&Dest, Source, v6); + v28[0] = v10; + *(&Dest + v10) = 0; + if ( v10 <= 1 ) + { + v29 = Dest; + MaxCount = (size_t)&Dest; + } + else + { + v29 = Dest; + MaxCount = (size_t)&Dest; + if ( Dest == 47 || Dest == 92 ) + { + if ( v29 == v27 && !LOWORD(v28[0]) ) + { + setlocale(2, v2); + __mingw_free((unsigned int)v2); + return Source; + } + } + else if ( v27 == 58 ) + { + MaxCount = (size_t)v28; + v29 = v28[0]; + } + } + if ( v29 ) + { + v11 = (_WORD *)MaxCount; + v12 = v29; + v13 = (_WORD *)MaxCount; + while ( v12 != 47 ) + { + v14 = v11; + if ( v12 == 92 ) + goto LABEL_20; +LABEL_16: + v12 = v14[1]; + ++v11; + if ( !v12 ) + goto LABEL_24; + } + v15 = *v11; + if ( *v11 != 47 ) + goto LABEL_21; + do + { + do + { + ++v11; +LABEL_20: + v15 = *v11; + } + while ( *v11 == 47 ); +LABEL_21: + ; + } + while ( v15 == 92 ); + v14 = v11; + if ( v15 ) + { + v13 = v11; + goto LABEL_16; + } +LABEL_24: + if ( MaxCount >= (unsigned int)v13 ) + { + if ( v29 != 47 && v29 != 92 ) + *(_WORD *)MaxCount = 46; + *(_WORD *)(MaxCount + 2) = 0; + MaxCount = wcstombs(0, &Dest, 0) + 1; + dword_78B3C0 = (int)__mingw_realloc(dword_78B3C0, MaxCount); + v4 = (char *)dword_78B3C0; + wcstombs((char *)dword_78B3C0, &Dest, MaxCount); + goto LABEL_29; + } + while ( 1 ) + { + v16 = v13--; + if ( MaxCount >= (unsigned int)v13 ) + break; + if ( *v13 != 47 && *v13 != 92 ) + goto LABEL_33; + } + if ( (_WORD *)MaxCount == v13 && (v29 == 47 || v29 == 92) && v13[1] == v29 ) + { + v24 = v13[2]; + if ( v24 != 47 && v24 != 92 ) + v13 = v16; + } +LABEL_33: + v13[1] = 0; + v17 = Dest; + p_Dest = &Dest; + if ( Dest == 47 || Dest == 92 ) + { + do + { + do + { + v19 = p_Dest[1]; + ++p_Dest; + } + while ( v19 == 47 ); + } + while ( v19 == 92 ); + if ( (char *)p_Dest - (char *)&Dest > 4 ) + goto LABEL_38; + } + if ( v27 != Dest ) +LABEL_38: + p_Dest = &Dest; + else + v17 = *p_Dest; + if ( v17 ) + { + MaxCount = (size_t)v2; + v20 = p_Dest; + while ( 1 ) + { + *p_Dest++ = v17; + if ( v17 == 47 ) + break; + v21 = v20[1]; + if ( v17 == 92 ) + { + ++v20; + goto LABEL_46; + } + v17 = v20[1]; + ++v20; +LABEL_43: + if ( !v17 ) + { + v2 = (const char *)MaxCount; + goto LABEL_58; + } + } + v21 = *v20; +LABEL_46: + if ( v21 == 92 || (v17 = v21, v21 == 47) ) + { + do + { + do + { + v17 = v20[1]; + ++v20; + } + while ( v17 == 47 ); + } + while ( v17 == 92 ); + } + goto LABEL_43; + } +LABEL_58: + v22 = v28[0]; + *p_Dest = 0; + v23 = wcstombs(Source, &Dest, v22); + v4 = Source; + if ( v23 != -1 ) + Source[v23] = 0; +LABEL_29: + setlocale(2, v2); + __mingw_free((unsigned int)v2); + } + else + { +LABEL_5: + v3 = wcstombs(0, L".", 0) + 1; + dword_78B3C0 = (int)__mingw_realloc(dword_78B3C0, v3); + wcstombs((char *)dword_78B3C0, L".", v3); + setlocale(2, v2); + __mingw_free((unsigned int)v2); + return (char *)dword_78B3C0; + } + return v4; +} +// 78B3C0: using guessed type int dword_78B3C0; + +//----- (00453250) -------------------------------------------------------- +HANDLE __usercall sub_453250@(const CHAR *lpFileName@, int a2@) +{ + HANDLE FirstFileA; // esi + _BYTE *v4; // ecx + CHAR v5; // al + __int16 i; // ax + unsigned __int16 v7; // ax + bool v8; // cf + DWORD dwFileAttributes; // eax + int LastError; // ebx + struct _WIN32_FIND_DATAA FindFileData; // [esp+10h] [ebp-14Ch] BYREF + + FirstFileA = FindFirstFileA(lpFileName, &FindFileData); + if ( FirstFileA == (HANDLE)-1 ) + { + LastError = GetLastError(); + *_errno() = LastError; + if ( LastError == 3 ) + { + *_errno() = 2; + } + else if ( *_errno() == 267 ) + { + *_errno() = 20; + } + else if ( *_errno() != 2 ) + { + *_errno() = 22; + } + return FirstFileA; + } + v4 = (_BYTE *)(a2 + 12); + *(_WORD *)(a2 + 6) = 0; + v5 = FindFileData.cFileName[0]; + *(_BYTE *)(a2 + 12) = FindFileData.cFileName[0]; + if ( v5 ) + { + for ( i = 0; ; i = *(_WORD *)(a2 + 6) ) + { + v7 = i + 1; + *(_WORD *)(a2 + 6) = v7; + v8 = v7 < 0x104u; + LOBYTE(v7) = FindFileData.cFileName[v7]; + v4 += v8; + *v4 = v7; + if ( !(_BYTE)v7 ) + break; + } + } + dwFileAttributes = FindFileData.dwFileAttributes; + LOBYTE(dwFileAttributes) = FindFileData.dwFileAttributes & 0x58; + if ( dwFileAttributes <= 0x10 ) + { + *(_DWORD *)(a2 + 8) = dwFileAttributes; + return FirstFileA; + } + *(_DWORD *)(a2 + 8) = 24; + return FirstFileA; +} + +//----- (00453340) -------------------------------------------------------- +BOOL __usercall sub_453340@(void *hFindFile@, int a2@) +{ + BOOL NextFileA; // esi + _BYTE *v4; // ecx + CHAR v5; // al + __int16 i; // ax + unsigned __int16 v7; // ax + bool v8; // cf + DWORD dwFileAttributes; // eax + struct _WIN32_FIND_DATAA FindFileData; // [esp+10h] [ebp-14Ch] BYREF + + NextFileA = FindNextFileA(hFindFile, &FindFileData); + if ( NextFileA ) + { + v4 = (_BYTE *)(a2 + 12); + *(_WORD *)(a2 + 6) = 0; + v5 = FindFileData.cFileName[0]; + *(_BYTE *)(a2 + 12) = FindFileData.cFileName[0]; + if ( v5 ) + { + for ( i = 0; ; i = *(_WORD *)(a2 + 6) ) + { + v7 = i + 1; + *(_WORD *)(a2 + 6) = v7; + v8 = v7 < 0x104u; + LOBYTE(v7) = FindFileData.cFileName[v7]; + v4 += v8; + *v4 = v7; + if ( !(_BYTE)v7 ) + break; + } + } + dwFileAttributes = FindFileData.dwFileAttributes; + LOBYTE(dwFileAttributes) = FindFileData.dwFileAttributes & 0x58; + if ( dwFileAttributes <= 0x10 ) + { + *(_DWORD *)(a2 + 8) = dwFileAttributes; + return NextFileA; + } + *(_DWORD *)(a2 + 8) = 24; + return NextFileA; + } + else + { + if ( GetLastError() == 18 ) + return NextFileA; + *_errno() = 2; + return 0; + } +} + +//----- (00453400) -------------------------------------------------------- +int __cdecl __mingw_opendir(char *Path) +{ + char *v1; // edx + int v2; // ecx + unsigned int v3; // eax + int v4; // edx + char v5; // cl + char *v6; // eax + int v7; // ecx + unsigned int v8; // eax + unsigned int v9; // ebx + char *v10; // eax + int v11; // ebp + unsigned int v12; // ecx + _BYTE *v13; // eax + HANDLE v14; // eax + char *Buffer; // [esp+0h] [ebp-13Ch] + _BYTE v17[4]; // [esp+18h] [ebp-124h] + char v18[288]; // [esp+1Ch] [ebp-120h] BYREF + + if ( !Path ) + { + v11 = 0; + *_errno() = 22; + return v11; + } + if ( *Path ) + { + _fullpath(v18, Path, 0x104u); + v1 = v18; + if ( v18[0] ) + { + do + { + v2 = *(_DWORD *)v1; + v1 += 4; + v3 = ~v2 & (v2 - 16843009) & 0x80808080; + } + while ( !v3 ); + if ( (~v2 & (v2 - 16843009) & 0x8080) == 0 ) + { + v3 >>= 16; + v1 += 2; + } + v4 = &v1[-__CFADD__((_BYTE)v3, (_BYTE)v3) - 3] - v18; + v5 = v17[v4 + 3]; + v6 = &v18[v4]; + if ( v5 != 47 && v5 != 92 ) + { + *(_WORD *)v6 = 92; + v6 = &v18[v4 + 1]; + } + } + else + { + do + { + v7 = *(_DWORD *)v1; + v1 += 4; + v8 = ~v7 & (v7 - 16843009) & 0x80808080; + } + while ( !v8 ); + if ( (~v7 & (v7 - 16843009) & 0x8080) == 0 ) + { + v8 >>= 16; + v1 += 2; + } + v6 = &v1[-__CFADD__((_BYTE)v8, (_BYTE)v8) - 3]; + } + *(_WORD *)v6 = 42; + v9 = strlen(v18); + v10 = (char *)malloc(v9 + 284); + v11 = (int)v10; + if ( v10 ) + { + v12 = v9 + 1; + v13 = v10 + 280; + if ( v9 + 1 < 4 ) + { + if ( v9 != -1 ) + { + *v13 = v18[0]; + if ( (v12 & 2) != 0 ) + *(_WORD *)&v13[v12 - 2] = *(_WORD *)&v17[v12 + 2]; + } + } + else + { + *(_DWORD *)&v13[v12 - 4] = *(_DWORD *)&v17[v12]; + qmemcpy(v13, v18, 4 * (v9 >> 2)); + } + v14 = sub_453250(v13, v11); + *(_DWORD *)(v11 + 272) = v14; + if ( v14 == (HANDLE)-1 ) + { + Buffer = (char *)v11; + v11 = 0; + __mingw_free((unsigned int)Buffer); + } + else + { + *(_DWORD *)v11 = 0; + *(_DWORD *)(v11 + 276) = 0; + *(_WORD *)(v11 + 4) = 272; + } + } + else + { + *_errno() = 12; + } + return v11; + } + *_errno() = 2; + return 0; +} +// 453400: using guessed type char var_120[288]; + +//----- (00453600) -------------------------------------------------------- +int __cdecl __mingw_readdir(int a1) +{ + int v1; // edx + int v2; // ebx + + if ( a1 ) + { + v1 = *(_DWORD *)(a1 + 276); + v2 = a1; + *(_DWORD *)(a1 + 276) = v1 + 1; + if ( v1 > 0 ) + return sub_453340(*(void **)(a1 + 272), a1) ? a1 : 0; + } + else + { + v2 = 0; + *_errno() = 9; + } + return v2; +} + +//----- (00453650) -------------------------------------------------------- +int __cdecl __mingw_closedir(unsigned int a1) +{ + if ( a1 && FindClose(*(HANDLE *)(a1 + 272)) ) + { + __mingw_free(a1); + return 0; + } + else + { + *_errno() = 9; + return -1; + } +} + +//----- (004536A0) -------------------------------------------------------- +_DWORD *__cdecl __mingw_rewinddir(int a1) +{ + _DWORD *result; // eax + + if ( a1 && FindClose(*(HANDLE *)(a1 + 272)) ) + { + result = sub_453250((const CHAR *)(a1 + 280), a1); + *(_DWORD *)(a1 + 272) = result; + if ( result != (_DWORD *)-1 ) + *(_DWORD *)(a1 + 276) = 0; + } + else + { + result = _errno(); + *result = 9; + } + return result; +} + +//----- (00453700) -------------------------------------------------------- +int __cdecl __mingw_telldir(int a1) +{ + if ( a1 ) + return *(_DWORD *)(a1 + 276); + *_errno() = 9; + return -1; +} + +//----- (00453730) -------------------------------------------------------- +int *__cdecl __mingw_seekdir(int a1, int a2) +{ + int *result; // eax + + if ( a2 < 0 ) + { + result = _errno(); + *result = 22; + } + else + { + result = __mingw_rewinddir(a1); + if ( a2 && *(_DWORD *)(a1 + 272) != -1 ) + { + do + { + result = (int *)(*(_DWORD *)(a1 + 276) + 1); + *(_DWORD *)(a1 + 276) = result; + if ( (int)result >= a2 ) + break; + result = (int *)sub_453340(*(void **)(a1 + 272), a1); + } + while ( result ); + } + } + return result; +} + +//----- (004537B0) -------------------------------------------------------- +int __mingw_mbrtowc_codeset_init() +{ + int v0; // ebx + + v0 = __mb_codeset_for_locale(); + *__emutls_get_address(dword_515090) = v0; + return v0; +} +// 515090: using guessed type size_t dword_515090[4]; + +//----- (004537D0) -------------------------------------------------------- +UINT __cdecl __mingw_mbrlen_cur_max_init(UINT a1) +{ + UINT v1; // ebx + + v1 = __mb_cur_max_for_codeset(a1); + *__emutls_get_address(dword_5150A0) = v1; + return v1; +} +// 5150A0: using guessed type size_t dword_5150A0[4]; + +//----- (00453800) -------------------------------------------------------- +int __mingw_mbrlen_cur_max() +{ + return *__emutls_get_address(dword_5150A0); +} +// 5150A0: using guessed type size_t dword_5150A0[4]; + +//----- (00453820) -------------------------------------------------------- +int __cdecl __mingw_mbtowc_convert(LPCCH lpMultiByteStr, int a2, LPWSTR lpWideCharStr, int cchWideChar) +{ + DWORD dwFlags; // edi + UINT *address; // esi + int v6; // ebp + + dwFlags = 8; + address = __emutls_get_address(dword_515090); + do + { + SetLastError(0); + v6 = MultiByteToWideChar(*address, dwFlags, lpMultiByteStr, a2 == 0 ? -1 : a2, lpWideCharStr, cchWideChar); + if ( v6 ) + break; + dwFlags = 0; + } + while ( GetLastError() == 1004 ); + return v6; +} +// 515090: using guessed type size_t dword_515090[4]; + +//----- (004538B0) -------------------------------------------------------- +int __cdecl __mingw_mbrscan_begin(_WORD **a1, int *a2, int *a3, unsigned int *a4) +{ + unsigned int v4; // eax + unsigned int v5; // esi + int v6; // ebx + unsigned int *address; // eax + int v8; // edx + unsigned int *v9; // edi + CHAR v10; // al + unsigned int v11; // ecx + int v12; // eax + _WORD *v13; // edx + CHAR *v15; // ebx + unsigned int v16; // edx + _WORD *v17; // eax + int v18; // [esp+14h] [ebp-38h] + int v19; // [esp+18h] [ebp-34h] + int v20; // [esp+1Ch] [ebp-30h] + int v21; // [esp+1Ch] [ebp-30h] + WCHAR v22[2]; // [esp+24h] [ebp-28h] BYREF + CHAR v23[4]; // [esp+28h] [ebp-24h] BYREF + int v24; // [esp+2Ch] [ebp-20h] + + v19 = 0; + v4 = *a4; + if ( !*a4 ) + return v19; + v24 = 0; + *(_DWORD *)v23 = v4; + *a4 = 0; + if ( (v4 & 0xFC00) == 0xD800 ) + { + v16 = HIWORD(v4); + if ( (HIWORD(v4) & 0xFC00) == 0xDC00 ) + { + if ( !a1 ) + return 1; + v17 = *a1; + if ( !*a1 ) + return 1; + *a1 = v17 + 1; + *v17 = v16; + if ( !*a3 ) + return 1; + --*a3; + return 1; + } + } + v5 = 0; + if ( (_BYTE)v4 ) + { + do + ++v5; + while ( v23[v5] ); + } + v6 = 0; + v20 = *a2; + address = __emutls_get_address(dword_5150A0); + v18 = v5; + v8 = v20; + v19 = 0; + v9 = address; + while ( 1 ) + { + while ( 1 ) + { + v10 = *(_BYTE *)(v8 + v6); + v11 = *v9; + ++v6; + if ( !v10 ) + break; + if ( v5 >= v11 ) + goto LABEL_13; + v23[v5++] = v10; + } + if ( v5 < v11 ) + v23[v5] = 0; +LABEL_13: + while ( 1 ) + { + v12 = __mingw_mbtowc_convert(v23, v6, v22, 2); + if ( v12 ) + break; + if ( v6 >= *v9 ) + goto LABEL_32; + ++v6; + } + if ( v12 > 1 && ((v22[0] & 0xFC00) != 0xD800 || (v22[1] & 0xFC00) != 0xDC00) ) + break; + if ( a1 ) + { + v13 = *a1; + if ( *a1 ) + { + *a1 = v13 + 1; + *v13 = v22[0]; + v21 = *a3; + if ( *a3 < (unsigned int)v12 ) + { + if ( v12 > 1 ) + { + *a4 = *(_DWORD *)v22; + return 1; + } + } + else + { + if ( v12 > 1 ) + { + *a1 = v13 + 2; + v13[1] = v22[1]; + } + *a3 = v21 - v12; + } + } + } + v19 += v12; + v8 = *a2; + if ( v6 >= v18 ) + { + *a2 = v8 + v6 - v18; + return v19; + } + v23[v18] = 0; + if ( v23[0] ) + { + v5 = 0; + v15 = &v23[v6]; + do + { + v23[v5] = v15[v5]; + ++v5; + } + while ( v23[v5] ); + v18 = v5; + v6 = 0; + } + else + { + v18 = 0; + v6 = 0; + v5 = 0; + } + } +LABEL_32: + *_errno() = 42; + return -1; +} +// 5150A0: using guessed type size_t dword_5150A0[4]; + +//----- (00453B40) -------------------------------------------------------- +int __cdecl __mingw_mbtowc_copy(LPWSTR a1, LPCCH a2, unsigned int a3) +{ + WCHAR *v5; // esi + unsigned int v6; // ebx + int v7; // eax + int v9; // eax + unsigned int v10; // edx + unsigned int v11; // [esp+18h] [ebp-34h] + __int16 v12[16]; // [esp+2Ch] [ebp-20h] BYREF + + v11 = 0; + if ( a3 ) + { + while ( 1 ) + { + if ( !a1 || (v5 = a1, (int)(a3 - v11) <= 1) ) + v5 = (WCHAR *)v12; + v6 = 0; + while ( 1 ) + { + v7 = __mingw_mbtowc_convert(a2, ++v6, v5, 2); + if ( v7 ) + break; + if ( *__emutls_get_address(dword_5150A0) <= v6 ) + { + *_errno() = 42; + return -1; + } + } + if ( !*v5 ) + break; + if ( (int)(a3 - v11) >= v7 ) + { + v11 += v7; + if ( a1 ) + { + if ( v5 == (WCHAR *)v12 ) + { + if ( v7 > 0 ) + { + v9 = 2 * v7; + v10 = 0; + do + { + a1[v10 / 2] = v12[v10 / 2]; + v10 += 2; + } + while ( v9 != v10 ); + a1 = (LPWSTR)((char *)a1 + v9); + } + } + else + { + a1 += v7; + } + } + a2 += v6; + if ( a3 > v11 ) + continue; + } + return v11; + } + if ( a1 ) + *a1 = 0; + } + return v11; +} +// 5150A0: using guessed type size_t dword_5150A0[4]; + +//----- (00453C60) -------------------------------------------------------- +size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State) +{ + const char *v4; // eax + mbstate_t *v7; // ebx + + v4 = SrcCh; + v7 = State; + if ( !SrcCh ) + { + SizeInBytes = 1; + DstCh = 0; + v4 = (const char *)&unk_532A14; + } + if ( !State ) + v7 = (mbstate_t *)&unk_78B3C4; + return __mingw_mbrtowc_handler(DstCh, (int)v4, SizeInBytes, v7); +} + +//----- (00453CB0) -------------------------------------------------------- +size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State) +{ + mbstate_t *v3; // ebx + int v4; // eax + unsigned int Wchar; // eax + size_t result; // eax + int v7; // eax + WCHAR *v8; // edx + int v9; // [esp+Ch] [ebp-20h] + WCHAR v10; // [esp+1Ah] [ebp-12h] BYREF + __int16 v11[8]; // [esp+1Ch] [ebp-10h] BYREF + + v3 = State; + v4 = __mingw_wctomb_codeset_init(); + __mingw_wctomb_cur_max_init(v4); + if ( !State ) + v3 = (mbstate_t *)&unk_78B3C8; + Wchar = v3->_Wchar; + v10 = Source; + if ( Wchar ) + { + if ( (Wchar & 0xFC00) != 55296 || (Source & 0xFC00) != 0xDC00 ) + { + v3->_Wchar = 0; + *_errno() = 42; + return -1; + } + v3->_Wchar = 0; + v11[0] = Wchar; + v11[1] = Source; + v7 = __mingw_wctomb_cur_max(); + v9 = 2; + v8 = (WCHAR *)v11; + return __mingw_wctomb_convert(Dest, v7, v8, v9); + } + if ( !Dest ) + return 1; + if ( (Source & 0xFC00) == 0xD800 ) + { + result = 0; + v3->_Wchar = Source; + } + else + { + if ( (Source & 0xFC00) != 0xDC00 ) + { + v7 = __mingw_wctomb_cur_max(); + v9 = 1; + v8 = &v10; + return __mingw_wctomb_convert(Dest, v7, v8, v9); + } + *_errno() = 42; + return -1; + } + return result; +} + +//----- (00453DD0) -------------------------------------------------------- +int __cdecl wctob(wint_t WCh) +{ + WCHAR v2[9]; // [esp+1Ch] [ebp-20h] BYREF + CHAR v3[13]; // [esp+2Fh] [ebp-Dh] BYREF + + v2[0] = WCh; + __mingw_wctomb_codeset_init(); + if ( __mingw_wctomb_convert(v3, 1, v2, 1) == 1 ) + return (unsigned __int8)v3[0]; + else + return -1; +} +// 453DD0: using guessed type WCHAR var_20[9]; +// 453DD0: using guessed type CHAR var_D[13]; + +//----- (00453E20) -------------------------------------------------------- +wctype_t __cdecl wctype(const char *name) +{ + const char *Str2; // eax + int v2; // ebx + + Str2 = "alnum"; + v2 = 0; + while ( strcmp(name, Str2) ) + { + if ( ++v2 == 11 ) + return 0; + Str2 = (&off_532A80)[2 * v2]; + } + return word_532A84[4 * v2]; +} +// 532A80: using guessed type char *off_532A80; +// 532A84: using guessed type __int16 word_532A84[]; + +//----- (00453E70) -------------------------------------------------------- +wchar_t *__cdecl wmemchr(const wchar_t *S, wchar_t C, size_t N) +{ + wchar_t *result; // eax + size_t v4; // edx + + result = (wchar_t *)S; + v4 = N; + if ( !S || !N ) + return 0; + while ( *result != C ) + { + ++result; + if ( !--v4 ) + return 0; + } + return result; +} + +//----- (00453EB0) -------------------------------------------------------- +int __cdecl wmemcmp(const wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t v3; // edi + const wchar_t *v4; // edx + const wchar_t *v5; // eax + int v6; // esi + + v3 = N; + v4 = S1; + v5 = S2; + if ( !N || S1 == S2 ) + return 0; + if ( (S1 != 0) != (S2 != 0) ) + return S2 == 0 ? 1 : -1; + while ( 1 ) + { + v6 = *v5; + if ( *v4 != (_WORD)v6 ) + break; + ++v4; + ++v5; + if ( !--v3 ) + return 0; + } + return *v4 - v6; +} + +//----- (00453F20) -------------------------------------------------------- +wchar_t *__cdecl wmemcpy(wchar_t *S1, const wchar_t *S2, size_t N) +{ + const wchar_t *v3; // esi + size_t v4; // eax + wchar_t *v5; // edi + + v3 = S2; + v4 = N; + if ( N != 0 && S2 != 0 && S1 ) + { + v5 = S1; + do + { + *v5++ = *v3++; + --v4; + } + while ( v4 ); + } + return S1; +} + +//----- (00453F60) -------------------------------------------------------- +wchar_t *__cdecl wmemmove(wchar_t *S1, const wchar_t *S2, size_t N) +{ + const wchar_t *v3; // esi + size_t v4; // eax + wchar_t *v5; // edi + size_t v7; // eax + + v3 = S2; + v4 = N; + if ( N != 0 && S2 != 0 && S1 ) + { + if ( S1 > S2 ) + { + do + { + S1[v4 - 1] = S2[v4 - 1]; + v7 = v4 - 1; + if ( !v7 ) + break; + S1[v7 - 1] = S2[v7 - 1]; + v4 = v7 - 1; + } + while ( v4 ); + } + else + { + v5 = S1; + do + { + *v5++ = *v3++; + --v4; + } + while ( v4 ); + } + } + return S1; +} + +//----- (00453FC0) -------------------------------------------------------- +wchar_t *__cdecl wmemset(wchar_t *S, wchar_t C, size_t N) +{ + size_t v3; // eax + wchar_t *v4; // edx + + v3 = N; + if ( S && N ) + { + v4 = S; + do + { + *v4++ = C; + --v3; + } + while ( v3 ); + } + return S; +} + +//----- (00453FF0) -------------------------------------------------------- +int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5) +{ + char *decimal_point; // ebp + unsigned __int8 *v6; // ebx + unsigned __int8 v7; // dl + unsigned __int8 *v8; // eax + int v9; // ecx + int v10; // edi + unsigned __int8 *v11; // ebx + char v12; // cl + int v13; // eax + unsigned __int8 v14; // di + unsigned __int8 *v15; // esi + int v16; // eax + int v17; // esi + int v18; // ebx + int v19; // edi + int v20; // edx + int j; // eax + int *v22; // eax + int *v23; // edx + int v24; // esi + int v25; // edx + unsigned __int8 v26; // al + unsigned __int8 v27; // al + int v28; // edx + int i; // eax + int v30; // eax + unsigned int *v31; // edi + int v32; // edx + unsigned __int8 *v33; // ecx + char v34; // cl + int v35; // eax + int v36; // eax + unsigned int v37; // ebp + int *v38; // ebx + unsigned int v39; // eax + int *v40; // edx + int v41; // eax + _BYTE *v42; // edx + int v43; // eax + int v44; // eax + int v45; // ecx + int v46; // ebx + int v47; // edx + unsigned int v49; // esi + unsigned int v50; // eax + unsigned int v51; // eax + int v52; // esi + signed int v53; // esi + int v54; // edi + int v55; // ebx + int v56; // eax + int v57; // esi + int v58; // eax + char v59; // dl + int v60; // esi + int v61; // edx + int v62; // esi + char v63; // dl + int v64; // eax + int v65; // ecx + int v66; // esi + int v67; // ecx + int v68; // ebx + unsigned int v69; // eax + int v70; // edi + unsigned __int8 *v71; // ecx + int v72; // edx + int v73; // eax + int v74; // [esp+4h] [ebp-48h] + int v75; // [esp+14h] [ebp-38h] + unsigned int v76; // [esp+14h] [ebp-38h] + char v77; // [esp+18h] [ebp-34h] + unsigned __int8 *v78; // [esp+18h] [ebp-34h] + unsigned int v79; // [esp+18h] [ebp-34h] + int v80; // [esp+1Ch] [ebp-30h] + BOOL v81; // [esp+1Ch] [ebp-30h] + char *v82; // [esp+1Ch] [ebp-30h] + int v83; // [esp+20h] [ebp-2Ch] + int v84; // [esp+24h] [ebp-28h] + int *v85; // [esp+24h] [ebp-28h] + _DWORD *v86; // [esp+28h] [ebp-24h] + unsigned __int8 *v87; // [esp+28h] [ebp-24h] + int v88; // [esp+2Ch] [ebp-20h] + + decimal_point = localeconv()->decimal_point; + if ( !byte_78B450 ) + hexdig_init_D2A(); + *a4 = 0; + v6 = *a1; + v7 = (*a1)[2]; + if ( v7 == 48 ) + { + v8 = v6 + 3; + v9 = -2 - (_DWORD)v6; + do + { + v10 = (int)&v8[v9]; + v11 = v8; + v7 = *v8++; + } + while ( v7 == 48 ); + } + else + { + v11 = v6 + 2; + v10 = 0; + } + v12 = *decimal_point; + v77 = *decimal_point; + if ( __hexdig_D2A[v7] ) + { + v76 = (unsigned int)v11; + ++v10; + v15 = 0; + v81 = 0; + goto LABEL_32; + } + v77 = *decimal_point; + if ( v12 ) + { + v80 = v10; + v13 = 0; + v14 = v7; + do + { + if ( v12 != v7 ) + { + v7 = v14; + v10 = v80; + goto LABEL_12; + } + v12 = decimal_point[++v13]; + v7 = v11[v13]; + v15 = &v11[v13]; + } + while ( v12 ); + v10 = v80; + if ( __hexdig_D2A[v7] ) + { + if ( v7 == 48 ) + { + v11 += v13; + do + v26 = *++v11; + while ( v26 == 48 ); + v76 = (unsigned int)v11; + v10 = 1; + v59 = __hexdig_D2A[v26]; + v81 = v59 == 0; + if ( !v59 ) + { +LABEL_33: + if ( v26 != v77 ) + { + v83 = 0; + v27 = *v11; + if ( v15 ) + v83 = 4 * (v15 - v11); +LABEL_36: + if ( (v27 & 0xDF) != 80 ) + goto LABEL_37; +LABEL_53: + v78 = v11; + v11 = (unsigned __int8 *)v76; + goto LABEL_54; + } + if ( v15 ) + { + v83 = 4 * (v15 - v11); + if ( (*v11 & 0xDF) != 80 ) + { +LABEL_37: + *a1 = v11; + if ( !v81 ) + goto LABEL_38; + return 0; + } + goto LABEL_53; + } + v63 = decimal_point[1]; + if ( v63 ) + { + v64 = 1; + while ( v11[v64] == v63 ) + { + v63 = decimal_point[++v64]; + v65 = v64; + if ( !v63 ) + goto LABEL_151; + } + v27 = *v11; + } + else + { + v65 = 1; +LABEL_151: + v71 = &v11[v65]; + v11 = v71; + v27 = *v71; + if ( __hexdig_D2A[*v71] ) + { + do + { + v72 = *++v11; + v27 = v72; + } + while ( __hexdig_D2A[v72] ); + v83 = 4 * (v71 - v11); + goto LABEL_36; + } + } + v83 = 0; + goto LABEL_36; + } + } + else + { + v81 = 0; + v11 += v13; + v10 = 1; + v76 = (unsigned int)v15; + } + do + { +LABEL_32: + v25 = *++v11; + v26 = v25; + } + while ( __hexdig_D2A[v25] ); + goto LABEL_33; + } + } + else + { +LABEL_12: + v15 = v11; + } + v78 = v15; + if ( (v7 & 0xDF) != 80 ) + { + v81 = 1; + v83 = 0; + v75 = 0; + v84 = 0; + goto LABEL_15; + } + v83 = 0; + v81 = 1; +LABEL_54: + v41 = v78[1]; + if ( (_BYTE)v41 == 43 ) + { + v75 = 0; + } + else + { + if ( (_BYTE)v41 != 45 ) + { + v75 = 0; + v42 = v78 + 1; + goto LABEL_57; + } + v75 = 1; + } + v42 = v78 + 2; + v41 = v78[2]; +LABEL_57: + v43 = (unsigned __int8)__hexdig_D2A[v41]; + v15 = v78; + v84 = 0; + if ( (unsigned __int8)(v43 - 1) > 0x18u ) + { +LABEL_15: + if ( v10 ) + goto LABEL_67; + goto LABEL_16; + } + v15 = v42 + 1; + v44 = v43 - 16; + v45 = (unsigned __int8)__hexdig_D2A[(unsigned __int8)v42[1]]; + if ( (unsigned __int8)(__hexdig_D2A[(unsigned __int8)v42[1]] - 1) <= 0x18u ) + { + v87 = v11; + v46 = 0; + do + { + if ( (v44 & 0xF8000000) != 0 ) + v46 = 1; + v47 = *++v15; + v44 = v45 + 10 * v44 - 16; + v45 = (unsigned __int8)__hexdig_D2A[v47]; + } + while ( (unsigned __int8)(__hexdig_D2A[v47] - 1) <= 0x18u ); + v84 = v46; + v11 = v87; + } + if ( v75 ) + v44 = -v44; + v83 += v44; + if ( v10 ) + { +LABEL_67: + *a1 = v15; + if ( v81 ) + return 0; + goto LABEL_17; + } +LABEL_16: + *a1 = v11 - 1; + if ( v81 ) + return 0; +LABEL_17: + if ( !v84 ) + { + v76 = (unsigned int)v11; + v11 = v78; +LABEL_38: + v28 = 0; + for ( i = (int)&v11[-v76 - 1]; i > 7; ++v28 ) + i >>= 1; + v85 = __Balloc_D2A(v28); + v86 = v85 + 5; + if ( decimal_point[1] ) + { + v30 = 0; + do + ++v30; + while ( decimal_point[v30 + 1] ); + v88 = v30; + } + else + { + v88 = 0; + } + if ( (unsigned int)v11 <= v76 ) + { + v31 = (unsigned int *)(v85 + 5); + v49 = 0; + v38 = v85 + 6; + v51 = 32; + } + else + { + v31 = (unsigned int *)(v85 + 5); + v32 = 0; + v82 = &decimal_point[v88]; + v33 = v11; + v79 = 0; + do + { + while ( 1 ) + { + v36 = *(v33 - 1); + v37 = (unsigned int)(v33 - 1); + v38 = (int *)(v31 + 1); + if ( (_BYTE)v36 != *v82 ) + break; + v33 = (unsigned __int8 *)(v37 - v88); + if ( v37 - v88 <= v76 ) + goto LABEL_71; + } + if ( v32 == 32 ) + { + v39 = v79; + v40 = (int *)(v31 + 2); + v79 = 0; + *v31++ = v39; + v36 = *(v33 - 1); + v38 = v40; + v34 = 0; + v32 = 4; + } + else + { + v34 = v32; + v32 += 4; + } + v35 = (__hexdig_D2A[v36] & 0xF) << v34; + v33 = (unsigned __int8 *)v37; + v79 |= v35; + } + while ( v37 > v76 ); +LABEL_71: + v49 = v79; + _BitScanReverse(&v50, v79); + v51 = v50 ^ 0x1F; + } + *v31 = v49; + v52 = v38 - v86; + v85[4] = v52; + v53 = 32 * v52 - v51; + v54 = *a2; + if ( v53 > *a2 ) + { + v66 = v53 - v54; + v55 = __any_on_D2A((int)v85, v66); + if ( v55 ) + { + v55 = 1; + if ( ((1 << (v66 - 1)) & v86[(v66 - 1) >> 5]) != 0 ) + { + if ( v66 == 1 || (v55 = 3, !__any_on_D2A((int)v85, v66 - 1)) ) + v55 = 2; + } + } + __rshift_D2A((int)v85, v66); + v83 += v66; + } + else + { + v55 = 0; + if ( v53 < *a2 ) + { + v62 = v54 - v53; + v83 -= v62; + v85 = __lshift_D2A(v85, v62); + v86 = v85 + 5; + } + } + if ( a2[2] < v83 ) + { +LABEL_111: + __Bfree_D2A((unsigned int)v85); + goto LABEL_112; + } + v56 = a2[1]; + if ( v56 <= v83 ) + { + v57 = 1; + goto LABEL_78; + } + v60 = v56 - v83; + if ( v54 > v56 - v83 ) + { + v67 = v60 - 1; + if ( v55 ) + { + v55 = 1; + } + else if ( v60 != 1 ) + { + v73 = __any_on_D2A((int)v85, v60 - 1); + v67 = v60 - 1; + v55 = v73; + } + if ( ((1 << v67) & v86[v67 >> 5]) != 0 ) + v55 |= 2u; + v74 = v60; + v54 -= v60; + v57 = 2; + __rshift_D2A((int)v85, v74); + v83 = a2[1]; +LABEL_78: + if ( !v55 ) + { +LABEL_83: + *a4 = v85; + *a3 = v83; + return v57; + } + v58 = a2[3]; + if ( v58 == 2 ) + { + a5 = 1 - a5; + } + else if ( v58 != 3 ) + { + if ( v58 != 1 || (v55 & 2) == 0 || ((*v86 | v55) & 1) == 0 ) + goto LABEL_82; +LABEL_131: + v68 = v85[4]; + v85 = __increment_D2A(v85); + v69 = (unsigned int)(v85 + 5); + if ( v57 == 2 ) + { + v57 = 34; + if ( *a2 - 1 == v54 ) + v57 = (((1 << v54) & *(_DWORD *)(v69 + 4 * (v54 >> 5))) == 0) + 33; + goto LABEL_83; + } + if ( v85[4] <= v68 + && ((v70 = v54 & 0x1F) == 0 + || (_BitScanReverse(&v69, *(_DWORD *)(v69 + 4 * v68 - 4)), 32 - v70 <= (int)(v69 ^ 0x1F))) + || (__rshift_D2A((int)v85, 1), ++v83, a2[2] >= v83) ) + { + v57 = 33; + goto LABEL_83; + } + goto LABEL_111; + } + if ( !a5 ) + { +LABEL_82: + v57 |= 0x10u; + goto LABEL_83; + } + goto LABEL_131; + } + v61 = a2[3]; + if ( v61 == 2 ) + { + if ( !a5 ) + goto LABEL_139; + } + else if ( v61 == 3 ) + { + if ( a5 ) + goto LABEL_139; + } + else if ( v61 == 1 && v54 == v60 ) + { + if ( v54 != 1 ) + { + if ( __any_on_D2A((int)v85, v54 - 1) ) + { + v56 = a2[1]; + goto LABEL_139; + } + goto LABEL_99; + } +LABEL_139: + v85[4] = 1; + *v86 = 1; + goto LABEL_94; + } +LABEL_99: + __Bfree_D2A((unsigned int)v85); +LABEL_100: + *_errno() = 34; + return 80; + } + v16 = a2[3]; + if ( v75 ) + { + if ( v16 == 2 ) + { + if ( a5 ) + goto LABEL_100; + } + else if ( v16 != 3 || !a5 ) + { + goto LABEL_100; + } + v85 = __Balloc_D2A(0); + v85[4] = 1; + v85[5] = 1; + v56 = a2[1]; +LABEL_94: + *a4 = v85; + v24 = 98; + *a3 = v56; + *_errno() = 34; + return v24; + } + if ( v16 == 2 ) + { + if ( !a5 ) + goto LABEL_112; + goto LABEL_22; + } + if ( v16 == 3 ) + { + if ( a5 ) + goto LABEL_112; + goto LABEL_22; + } + if ( v16 != 1 ) + { +LABEL_22: + v17 = *a2 & 0x1F; + v18 = *a2 >> 5; + v19 = v18 - ((v17 == 0) - 1); + v20 = 0; + for ( j = v19 >> 1; j; j >>= 1 ) + ++v20; + v22 = __Balloc_D2A(v20); + *a4 = v22; + v22[4] = v19; + if ( v18 > 0 ) + { + v23 = v22 + 5; + do + *v23++ = -1; + while ( &v22[v18 + 5] != v23 ); + v75 = v18; + } + if ( v19 > v18 ) + v22[v75 + 5] = 32 >> (32 - v17); + v24 = 17; + *a3 = a2[1]; + return v24; + } +LABEL_112: + *_errno() = 34; + return 163; +} +// 78B450: using guessed type char byte_78B450; + +//----- (004549F0) -------------------------------------------------------- +int __cdecl __rshift_D2A(int a1, int a2) +{ + int v2; // ebx + _DWORD *v3; // ebp + unsigned int v4; // ebx + _DWORD *v5; // esi + char v6; // di + int *v7; // edx + int v8; // eax + int v9; // esi + int v10; // ebx + _DWORD *v11; // edx + int result; // eax + _DWORD *v13; // edi + unsigned int v14; // [esp+0h] [ebp-24h] + int v15; // [esp+4h] [ebp-20h] + int v16; // [esp+8h] [ebp-1Ch] + + v2 = *(_DWORD *)(a1 + 16); + v16 = a2 >> 5; + v15 = v2; + if ( v2 <= a2 >> 5 ) + goto LABEL_8; + v3 = (_DWORD *)(a1 + 20); + v4 = a1 + 20 + 4 * v2; + v5 = (_DWORD *)(a1 + 20 + 4 * (a2 >> 5)); + v6 = a2 & 0x1F; + if ( (a2 & 0x1F) == 0 ) + { + v13 = (_DWORD *)(a1 + 20); + if ( v4 > (unsigned int)v5 ) + { + do + *v13++ = *v5++; + while ( v4 > (unsigned int)v5 ); + v11 = &v3[v15 - v16]; + goto LABEL_13; + } +LABEL_8: + *(_DWORD *)(a1 + 16) = 0; +LABEL_9: + result = a1; + *(_DWORD *)(a1 + 20) = 0; + return result; + } + v7 = v5 + 1; + v8 = *v5 >> v6; + if ( v4 <= (unsigned int)(v5 + 1) ) + { + *(_DWORD *)(a1 + 20) = v8; + if ( v8 ) + { + v11 = (_DWORD *)(a1 + 20); +LABEL_7: + ++v11; + goto LABEL_13; + } + goto LABEL_8; + } + v14 = v4; + v9 = a1 + 20; + do + { + v10 = *v7; + v9 += 4; + ++v7; + *(_DWORD *)(v9 - 4) = (v10 << (32 - v6)) | v8; + v8 = (unsigned int)*(v7 - 1) >> v6; + } + while ( v14 > (unsigned int)v7 ); + v3 = (_DWORD *)(a1 + 20); + v11 = (_DWORD *)(a1 + 20 + 4 * (v15 - v16) - 4); + *v11 = v8; + if ( v8 ) + goto LABEL_7; +LABEL_13: + result = v11 - v3; + *(_DWORD *)(a1 + 16) = result; + if ( v11 == v3 ) + goto LABEL_9; + return result; +} + +//----- (00454B00) -------------------------------------------------------- +int __cdecl __trailz_D2A(int a1) +{ + int *v1; // eax + unsigned int v2; // ebx + int v3; // edx + + v1 = (int *)(a1 + 20); + v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); + v3 = 0; + if ( a1 + 20 < v2 ) + { + while ( 1 ) + { + _ECX = *v1; + if ( *v1 ) + break; + ++v1; + v3 += 32; + if ( v2 <= (unsigned int)v1 ) + return v3; + } + if ( v2 > (unsigned int)v1 ) + { + __asm { tzcnt ecx, ecx } + v3 += _ECX; + } + } + return v3; +} + +//----- (00454B40) -------------------------------------------------------- +int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5) +{ + int v5; // esi + int v6; // eax + int v7; // ecx + int *result; // eax + char *v9; // ebp + int v10; // ecx + char *v11; // ebp + char *v12; // ebx + int v13; // edx + + v5 = a2; + if ( a3 <= 9 ) + { + v7 = 0; + } + else + { + v6 = 1; + v7 = 0; + do + { + v6 *= 2; + ++v7; + } + while ( (a3 + 8) / 9 > v6 ); + } + result = __Balloc_D2A(v7); + result[4] = 1; + result[5] = a4; + if ( a2 <= 9 ) + { + v11 = (char *)(a1 + a5 + 9); + v5 = 9; + } + else + { + v9 = (char *)(a1 + 9); + do + { + v10 = *v9++; + result = __multadd_D2A(result, 10, v10 - 48); + } + while ( v9 != (char *)(a2 + a1) ); + v11 = (char *)(a1 + a2 + a5); + } + if ( a3 > v5 ) + { + v12 = &v11[a3 - v5]; + do + { + v13 = *v11++; + result = __multadd_D2A(result, 10, v13 - 48); + } + while ( v12 != v11 ); + } + return result; +} + +//----- (00454C40) -------------------------------------------------------- +long double __cdecl __ratio_D2A(int a1, int a2) +{ + int v2; // eax + double v4; // [esp+10h] [ebp-3Ch] + double v5; // [esp+18h] [ebp-34h] + double v6; // [esp+20h] [ebp-2Ch] + double v7; // [esp+28h] [ebp-24h] + int v8; // [esp+38h] [ebp-14h] BYREF + int v9[4]; // [esp+3Ch] [ebp-10h] BYREF + + v4 = __b2d_D2A(a1, &v8); + v6 = v4; + v5 = __b2d_D2A(a2, v9); + v7 = v5; + v2 = v8 + 32 * (*(_DWORD *)(a1 + 16) - *(_DWORD *)(a2 + 16)) - v9[0]; + if ( v2 <= 0 ) + { + HIDWORD(v7) = HIDWORD(v5) - (v2 << 20); + return v4 / v7; + } + else + { + HIDWORD(v6) = HIDWORD(v4) + (v2 << 20); + return v6 / v5; + } +} +// 454C40: using guessed type int var_10[4]; + +//----- (00454D00) -------------------------------------------------------- +int __cdecl __match_D2A(char **a1, char *a2) +{ + char *v3; // edx + int v4; // ebx + int v5; // eax + + v3 = *a1; + while ( 1 ) + { + v4 = *a2++; + ++v3; + if ( !v4 ) + break; + v5 = *v3; + if ( (unsigned int)(v5 - 65) > 0x19 ) + { + if ( v5 != v4 ) + return 0; + } + else if ( v5 + 32 != v4 ) + { + return 0; + } + } + *a1 = v3; + return 1; +} + +//----- (00454D50) -------------------------------------------------------- +_DWORD *__cdecl __copybits_D2A(_DWORD *a1, int a2, int a3) +{ + _DWORD *result; // eax + _DWORD *v4; // esi + unsigned int v5; // ecx + unsigned int v6; // edx + _DWORD *v7; // edi + + result = a1; + v4 = (_DWORD *)(a3 + 20); + v5 = (unsigned int)&a1[((a2 - 1) >> 5) + 1]; + v6 = a3 + 20 + 4 * *(_DWORD *)(a3 + 16); + if ( a3 + 20 >= v6 ) + goto LABEL_6; + v7 = a1; + do + *v7++ = *v4++; + while ( v6 > (unsigned int)v4 ); + result = &a1[((v6 - a3 - 21) >> 2) + 1]; + while ( v5 > (unsigned int)result ) + { + *result++ = 0; +LABEL_6: + ; + } + return result; +} + +//----- (00454DB0) -------------------------------------------------------- +int __cdecl __any_on_D2A(int a1, int a2) +{ + int v2; // esi + unsigned int v3; // edx + _DWORD *v4; // eax + int v6; // ecx + + v2 = *(_DWORD *)(a1 + 16); + v3 = a1 + 20; + if ( v2 < a2 >> 5 ) + { + v4 = (_DWORD *)(v3 + 4 * v2); + goto LABEL_4; + } + v4 = (_DWORD *)(v3 + 4 * (a2 >> 5)); + if ( v2 > a2 >> 5 && (a2 & 0x1F) != 0 ) + { + v6 = 1; + if ( *v4 != *v4 >> (a2 & 0x1F) << (a2 & 0x1F) ) + return v6; + } + do + { +LABEL_4: + if ( (unsigned int)v4 <= v3 ) + return 0; + } + while ( !*--v4 ); + return 1; +} + +//----- (00454E20) -------------------------------------------------------- +int *__cdecl __sum_D2A(int *a1, int *a2) +{ + int *v2; // esi + int *v3; // ebx + unsigned int *v4; // ebp + int *v5; // eax + int v6; // edi + int *v7; // ecx + unsigned int *v8; // edi + unsigned int v9; // esi + unsigned int v10; // eax + unsigned int v11; // ebx + unsigned int v12; // edx + unsigned int v13; // eax + unsigned int v14; // edx + unsigned int *v15; // ebx + unsigned int v16; // edi + char *i; // edx + unsigned int v18; // ecx + unsigned int v19; // eax + unsigned int v20; // ecx + int *v22; // ebx + unsigned int v23; // [esp+18h] [ebp-34h] + int *v24; // [esp+1Ch] [ebp-30h] + int v25; // [esp+20h] [ebp-2Ch] + int v26; // [esp+24h] [ebp-28h] + int *v27; // [esp+28h] [ebp-24h] + int *v28; // [esp+2Ch] [ebp-20h] + + v2 = a2; + v3 = a1; + if ( a1[4] < a2[4] ) + { + v3 = a2; + v2 = a1; + } + v4 = (unsigned int *)(v3 + 5); + v5 = __Balloc_D2A(v3[1]); + v6 = v3[4]; + v27 = v3 + 5; + v7 = v5 + 5; + v24 = v5; + v5[4] = v6; + v28 = v5 + 5; + v26 = v2[4]; + v23 = (unsigned int)&v5[v26 + 5]; + v25 = v6; + v8 = (unsigned int *)(v2 + 5); + v9 = 0; + do + { + v10 = *v4; + v11 = *v8; + ++v4; + ++v8; + ++v7; + v12 = v9 + (unsigned __int16)v10 + (unsigned __int16)v11; + *((_WORD *)v7 - 2) = v12; + v13 = HIWORD(v12) + HIWORD(v11) + HIWORD(v10); + *((_WORD *)v7 - 1) = v13; + v9 = HIWORD(v13); + } + while ( v23 > (unsigned int)v7 ); + v14 = 4; + if ( v23 >= (unsigned int)v24 + 21 ) + v14 = 4 * ((v23 - (unsigned int)v24 - 21) >> 2) + 4; + v15 = (unsigned int *)((char *)v27 + v14); + v16 = v23 + 4 * (v25 - v26); + for ( i = (char *)v28 + v14; v16 > (unsigned int)i; v9 = HIWORD(v20) ) + { + v18 = *v15; + i += 4; + ++v15; + v19 = v9 + (unsigned __int16)v18; + *((_WORD *)i - 2) = v19; + v20 = HIWORD(v19) + HIWORD(v18); + *((_WORD *)i - 1) = v20; + } + if ( v9 ) + { + if ( v25 == v24[2] ) + { + v22 = __Balloc_D2A(v24[1] + 1); + memcpy(v22 + 3, v24 + 3, 4 * v24[4] + 8); + __Bfree_D2A((unsigned int)v24); + v24 = v22; + v25 = v22[4]; + } + v24[4] = v25 + 1; + v24[v25 + 5] = 1; + } + return v24; +} + +//----- (00454FC0) -------------------------------------------------------- +int hexdig_init_D2A() +{ + const char *v0; // edx + int v1; // eax + int v2; // ecx + const char *v3; // edx + int v4; // eax + int v5; // ecx + const char *v6; // edx + int result; // eax + int v8; // ecx + + v0 = "123456789"; + v1 = 48; + do + { + v2 = (int)&(v0++)[16 - (_DWORD)"123456789"]; + __hexdig_D2A[v1] = v2; + v1 = *((unsigned __int8 *)v0 - 1); + } + while ( (_BYTE)v1 ); + v3 = "bcdef"; + v4 = 97; + do + { + v5 = (int)&(v3++)[26 - (_DWORD)"bcdef"]; + __hexdig_D2A[v4] = v5; + v4 = *((unsigned __int8 *)v3 - 1); + } + while ( (_BYTE)v4 ); + v6 = "BCDEF"; + result = 65; + do + { + v8 = (int)&(v6++)[26 - (_DWORD)"BCDEF"]; + __hexdig_D2A[result] = v8; + result = *((unsigned __int8 *)v6 - 1); + } + while ( (_BYTE)result ); + return result; +} + +//----- (00455040) -------------------------------------------------------- +int __usercall sub_455040@(int *a1@) +{ + _BYTE *v1; // edx + char v2; // bl + int v3; // esi + int v4; // edx + + v1 = (_BYTE *)*a1; + v2 = *(_BYTE *)*a1; + v3 = *a1 + 1; + switch ( v2 ) + { + case 'I': + if ( *v1 != 73 ) + goto LABEL_3; + if ( v1[1] == 51 && v1[2] == 50 ) + { + v3 = (int)(v1 + 3); + v4 = 2; + } + else + { + if ( v1[1] != 54 || v1[2] != 52 ) + { +LABEL_3: + v1 = (_BYTE *)(*a1 + 1); + goto LABEL_4; + } + v3 = (int)(v1 + 3); +LABEL_14: + v4 = 3; + } + break; + case 'L': + *a1 = v3; + return 76; + case 'h': + case 'l': + if ( v2 == v1[1] ) + { + v3 = (int)(v1 + 2); + v4 = 4; + if ( v2 != 104 ) + v4 = 3 * (v2 == 108); + } + else + { + v4 = 1; + if ( v2 != 104 ) + v4 = 2 * (v2 == 108); + } + break; + case 'j': + goto LABEL_14; + case 't': + case 'z': + goto LABEL_5; + default: +LABEL_4: + v3 = (int)v1; +LABEL_5: + v4 = 0; + break; + } + *a1 = v3; + return v4; +} +// 4550A9: conditional instruction was optimized away because ecx.4==49 + +//----- (00455100) -------------------------------------------------------- +int *__usercall sub_455100@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7) +{ + char v10; // c2 + char v11; // c3 + char v12; // c0 + __int16 v13; // cx + int v14; // ebx + int v15; // eax + long double v17; // [esp+20h] [ebp-2Ch] BYREF + int v18; // [esp+2Ch] [ebp-20h] + int v19; // [esp+38h] [ebp-14h] BYREF + int *v20; // [esp+3Ch] [ebp-10h] BYREF + + *(_QWORD *)&v17 = a2; + HIDWORD(v17) = a3; + _FST7 = v17; + v18 = a4; + __asm { fxam } + if ( v12 ) + { + if ( !v10 ) + { + v19 = 4; + v14 = 0; + v15 = 0; + goto LABEL_7; + } + v19 = 3; + v13 = WORD4(v17); + v14 = 0; + } + else + { + v13 = WORD4(v17); + if ( v10 ) + { + if ( v11 ) + { + v19 = 2; + v14 = -16445; + } + else + { + v19 = 1; + v14 = (WORD4(v17) & 0x7FFF) - 16446; + } + } + else + { + v19 = 0; + v14 = 0; + } + } + v15 = v13 & 0x8000; +LABEL_7: + *a7 = v15; + return __gdtoa(dword_5150B0, v14, (int *)&v17, &v19, a1, a5, a6, &v20); +} +// 455134: variable 'v12' is possibly undefined +// 455139: variable 'v10' is possibly undefined +// 4551BB: variable 'v11' is possibly undefined +// 5150B0: using guessed type int dword_5150B0[5]; + +//----- (00455200) -------------------------------------------------------- +int __usercall sub_455200@(int result@, int a2@) +{ + int v3; // ecx + int v4; // edx + + v3 = *(_DWORD *)(a2 + 4); + if ( (v3 & 0x2000) == 0 ) + { + v4 = *(_DWORD *)(a2 + 24); + if ( *(_DWORD *)(a2 + 28) <= v4 ) + goto LABEL_5; + } + if ( (v3 & 0x1000) == 0 ) + { + *(_BYTE *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 24)) = result; + v4 = *(_DWORD *)(a2 + 24); +LABEL_5: + *(_DWORD *)(a2 + 24) = v4 + 1; + return result; + } + result = fputc((unsigned __int8)result, *(FILE **)a2); + ++*(_DWORD *)(a2 + 24); + return result; +} + +//----- (00455260) -------------------------------------------------------- +int __usercall sub_455260@(int a1@, int a2@, int a3@) +{ + int v5; // eax + int result; // eax + signed int v7; // eax + unsigned __int16 *v8; // ebx + unsigned __int16 *p_Byte; // edi + int v10; // eax + int v11; // eax + int v13; // [esp+1Ch] [ebp-14h] + mbstate_t State; // [esp+2Ch] [ebp-4h] BYREF + + wcrtomb((char *)&State._Byte, 0, &State); + v5 = *(_DWORD *)(a3 + 12); + if ( v5 >= 0 && a2 > v5 ) + a2 = *(_DWORD *)(a3 + 12); + result = *(_DWORD *)(a3 + 8); + if ( result <= a2 ) + { + *(_DWORD *)(a3 + 8) = -1; + goto LABEL_6; + } + v11 = result - a2; + *(_DWORD *)(a3 + 8) = v11; + if ( (*(_BYTE *)(a3 + 5) & 4) == 0 ) + { + *(_DWORD *)(a3 + 8) = v11 - 1; + do + { + sub_455200(32, a3); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + } + while ( result ); +LABEL_6: + if ( a2 <= 0 ) + { + *(_DWORD *)(a3 + 8) = -2; + return result; + } + goto LABEL_7; + } + if ( a2 <= 0 ) + { + *(_DWORD *)(a3 + 8) = v11 - 1; + do + { +LABEL_13: + sub_455200(32, a3); +LABEL_14: + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + } + while ( result > 0 ); + return result; + } +LABEL_7: + v13 = a2; + do + { + a1 += 2; + v7 = wcrtomb((char *)&State._Byte, *(_WORD *)(a1 - 2), &State); + if ( v7 <= 0 ) + goto LABEL_14; + v8 = (unsigned __int16 *)((char *)&State._Byte + v7); + p_Byte = &State._Byte; + do + { + v10 = *(char *)p_Byte; + p_Byte = (unsigned __int16 *)((char *)p_Byte + 1); + sub_455200(v10, a3); + } + while ( p_Byte != v8 ); + --v13; + } + while ( v13 ); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + if ( result > 0 ) + goto LABEL_13; + return result; +} + +//----- (00455390) -------------------------------------------------------- +int __usercall sub_455390@(char *a1@, int a2@, int a3@) +{ + int v3; // edi + int v5; // eax + int result; // eax + char *v8; // edi + int v9; // eax + int v10; // eax + + v3 = a2; + v5 = *(_DWORD *)(a3 + 12); + if ( v5 >= 0 && a2 > v5 ) + v3 = *(_DWORD *)(a3 + 12); + result = *(_DWORD *)(a3 + 8); + if ( result <= v3 ) + { + *(_DWORD *)(a3 + 8) = -1; + if ( v3 ) + goto LABEL_6; +LABEL_18: + *(_DWORD *)(a3 + 8) = -2; + return result; + } + v10 = result - v3; + *(_DWORD *)(a3 + 8) = v10; + if ( (*(_BYTE *)(a3 + 5) & 4) != 0 ) + { + if ( !v3 ) + { + *(_DWORD *)(a3 + 8) = v10 - 1; + do + { +LABEL_9: + sub_455200(32, a3); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + } + while ( result > 0 ); + return result; + } + } + else + { + *(_DWORD *)(a3 + 8) = v10 - 1; + do + { + sub_455200(32, a3); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + } + while ( result ); + if ( !v3 ) + goto LABEL_18; + } +LABEL_6: + v8 = &a1[v3]; + do + { + v9 = *a1++; + sub_455200(v9, a3); + } + while ( a1 != v8 ); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + if ( result > 0 ) + goto LABEL_9; + return result; +} + +//----- (00455460) -------------------------------------------------------- +int __usercall sub_455460@(int a1@, int a2@, int a3@) +{ + int v3; // edi + char *v4; // esi + char v5; // di + int i; // ebx + char v8; // [esp+Ch] [ebp-20h] BYREF + char v9[31]; // [esp+Dh] [ebp-1Fh] BYREF + + *(_DWORD *)(a3 + 12) = -1; + v3 = *(_DWORD *)(a3 + 4); + if ( a1 ) + { + v8 = 45; + v4 = v9; + } + else if ( (v3 & 0x100) != 0 ) + { + v8 = 43; + v4 = v9; + } + else if ( (v3 & 0x40) != 0 ) + { + v8 = 32; + v4 = v9; + } + else + { + v4 = &v8; + } + v5 = v3 & 0x20; + for ( i = 0; i != 3; ++i ) + v4[i] = v5 | *(_BYTE *)(a2 + i) & 0xDF; + return sub_455390(&v8, v4 + 3 - &v8, a3); +} + +//----- (00455500) -------------------------------------------------------- +int __usercall sub_455500@(wchar_t a1@, int a2@, int a3@) +{ + int v5; // eax + void *v6; // esp + void *v7; // esp + char *v8; // edi + signed int v9; // eax + char *v10; // ebx + int v11; // eax + char *Dest; // [esp+0h] [ebp-4Ch] BYREF + char v14[16]; // [esp+Ch] [ebp-40h] BYREF + char **p_Dest; // [esp+1Ch] [ebp-30h] + mbstate_t State; // [esp+2Ch] [ebp-20h] BYREF + + if ( !a1 ) + return -1; + v5 = 16 * ((unsigned int)(a2 + 15) >> 4); + p_Dest = &Dest; + v6 = alloca(v5); + v7 = alloca(v5); + State._Wchar = 0; + v8 = v14; + v9 = wcrtomb(v14, a1, &State); + if ( v9 <= 0 ) + return -1; + v10 = &v14[v9]; + do + { + v11 = *v8++; + sub_455200(v11, a3); + } + while ( v8 != v10 ); + return 0; +} +// 455500: using guessed type char var_40[16]; + +//----- (00455580) -------------------------------------------------------- +int __usercall sub_455580@(int a1@) +{ + int v1; // ebx + struct lconv *v4; // eax + char *v5; // eax + char v6; // al + wchar_t v7; // dx + signed int v8; // eax + struct lconv *v9; // eax + wchar_t DstCh; // [esp+1Ah] [ebp-12h] BYREF + mbstate_t State; // [esp+1Ch] [ebp-10h] BYREF + + v1 = *(_DWORD *)(a1 + 4) & 1; + if ( v1 && *(_DWORD *)(a1 + 36) == -3 ) + { + v4 = localeconv(); + v5 = strdup(v4->grouping); + *(_DWORD *)(a1 + 44) = v5; + if ( v5 && (v6 = *v5) != 0 ) + { + State._Wchar = 0; + if ( v6 == 127 ) + { + v7 = *(_WORD *)(a1 + 40); + v8 = 0; + } + else + { + v9 = localeconv(); + v8 = mbrtowc(&DstCh, v9->thousands_sep, 0x10u, &State); + if ( v8 <= 0 ) + { + v7 = *(_WORD *)(a1 + 40); + } + else + { + v7 = DstCh; + if ( (DstCh & 0xF800) == 0xD800 ) + { + v7 = *(_WORD *)(a1 + 40); + v8 = -1; + } + else + { + *(_WORD *)(a1 + 40) = DstCh; + } + } + } + *(_DWORD *)(a1 + 36) = v8; + } + else + { + v7 = *(_WORD *)(a1 + 40); + } + if ( !v7 ) + { + v1 = 0; + __mingw_free(*(_DWORD *)(a1 + 44)); + *(_DWORD *)(a1 + 4) &= ~1u; + *(_DWORD *)(a1 + 44) = 0; + } + } + return v1; +} + +//----- (00455660) -------------------------------------------------------- +int __usercall sub_455660@(_DWORD *a1@) +{ + int v1; // ebx + int v2; // edx + int result; // eax + char *v5; // esi + int v6; // ebx + char *v7; // eax + + v1 = *(char *)*a1; + v2 = v1 - 48; + if ( (unsigned int)(v1 - 48) <= 9 ) + { + v5 = (char *)(*a1 + 1); + v6 = 0; + while ( 1 ) + { + result = v6 + v2; + if ( v6 + v2 > 16 ) + break; + *a1 = v5; + v1 = *v5; + v2 = v1 - 48; + if ( (unsigned int)(v1 - 48) > 9 ) + goto LABEL_3; + v6 = 0; + if ( result > 0 ) + v6 = 10 * result; + ++v5; + } + v7 = (char *)*a1; + do + *a1 = ++v7; + while ( (unsigned int)(*v7 - 48) <= 9 ); + return 0; + } + result = 0; +LABEL_3: + if ( (_BYTE)v1 != 36 ) + return 0; + return result; +} + +//----- (004556E0) -------------------------------------------------------- +int __usercall sub_4556E0@(int *a1@) +{ + int result; // eax + _BYTE *v3; // edx + int v4; // ecx + _BYTE *v5; // [esp+Ch] [ebp-8h] BYREF + + v5 = (_BYTE *)*a1; + result = sub_455660(&v5); + v3 = v5; + v4 = (int)++v5; + if ( *v3 == 36 ) + *a1 = v4; + return result; +} + +//----- (00455710) -------------------------------------------------------- +int __usercall sub_455710@(unsigned __int8 *a1@) +{ + char *v2; // eax + int v3; // eax + int result; // eax + int v5; // edx + + v2 = strchr("aAeEfFgGcCdiouxXnpsS", *a1); + if ( !v2 ) + return 4; + v3 = (v2 - "aAeEfFgGcCdiouxXnpsS") / 8; + if ( v3 ) + { + if ( v3 == 1 ) + return 4 * (a1[1] == 3) + 4; + return 4; + } + v5 = a1[1]; + result = 12; + if ( v5 != 76 && ((byte_78B3CD & 1) == 0 || v5 != 2) ) + return 8; + return result; +} +// 78B3CD: using guessed type char byte_78B3CD; + +//----- (00455790) -------------------------------------------------------- +int __usercall sub_455790@(int a1@) +{ + int v2; // edx + wchar_t v3; // ax + int result; // eax + struct lconv *v5; // eax + wchar_t DstCh; // [esp+1Ah] [ebp-12h] BYREF + mbstate_t State; // [esp+1Ch] [ebp-10h] BYREF + + v2 = *(_DWORD *)(a1 + 16); + if ( v2 == -3 ) + { + State._Wchar = 0; + v5 = localeconv(); + v2 = mbrtowc(&DstCh, v5->decimal_point, 0x10u, &State); + if ( v2 <= 0 ) + { + v3 = *(_WORD *)(a1 + 20); + } + else + { + v3 = DstCh; + if ( (DstCh & 0xF800) == 0xD800 ) + { + v3 = *(_WORD *)(a1 + 20); + v2 = -1; + } + else + { + *(_WORD *)(a1 + 20) = DstCh; + } + } + *(_DWORD *)(a1 + 16) = v2; + } + else + { + v3 = *(_WORD *)(a1 + 20); + } + result = sub_455500(v3, v2, a1); + if ( result ) + return sub_455200(46, a1); + return result; +} + +//----- (00455840) -------------------------------------------------------- +int __usercall sub_455840@(int a1@, int a2@) +{ + if ( a1 == 44 ) + return sub_455500(*(_WORD *)(a2 + 40), *(_DWORD *)(a2 + 36), a2); + if ( a1 == 46 ) + return sub_455790(a2); + return sub_455200(a1, a2); +} + +//----- (00455880) -------------------------------------------------------- +int __usercall sub_455880@(unsigned int a1@, unsigned int a2@, int a3@) +{ + unsigned __int64 v3; // rdi + _DWORD *v4; // ebx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // eax + void *v9; // esp + void *v10; // esp + int v11; // eax + char v12; // al + int v13; // eax + int *v14; // ebx + int *v15; // ecx + int v16; // eax + int v17; // edi + _BYTE *v18; // eax + int v19; // ecx + int v20; // eax + int v21; // eax + __int16 v22; // si + int v23; // edi + int v24; // eax + unsigned int v25; // edi + int v26; // esi + int v27; // eax + int result; // eax + int v29; // eax + int v30; // edx + int v31; // eax + int v32; // eax + int v33; // edx + _BYTE *v34; // ecx + _BYTE *v35; // edx + _DWORD *v37; // [esp+10h] [ebp-38h] BYREF + int v38; // [esp+14h] [ebp-34h] + int v39; // [esp+18h] [ebp-30h] + int v40; // [esp+1Ch] [ebp-2Ch] + int *v41; // [esp+20h] [ebp-28h] + int v42; // [esp+24h] [ebp-24h] + int *v43; // [esp+28h] [ebp-20h] + int v44; // [esp+2Ch] [ebp-1Ch] + + v3 = __PAIR64__(a1, a2); + v4 = (_DWORD *)a3; + v44 = (*(_DWORD *)(a3 + 12) & ~(*(int *)(a3 + 12) >> 31)) + 23; + v5 = sub_455580(a3); + v6 = v44; + if ( v5 ) + v6 = 2 * v44; + v7 = v4[2]; + v39 = v7; + if ( v7 < v6 ) + v7 = v6; + v8 = 16 * ((unsigned int)(v7 + 15) >> 4); + v9 = alloca(v8); + v10 = alloca(v8); + v44 = v4[11]; + v42 = 0; + v41 = (int *)&v37; + v11 = v4[1]; + v40 = v11; + if ( v44 ) + { + v42 = v11 & 1; + if ( (v11 & 1) != 0 ) + { + v12 = *(_BYTE *)v44; + v42 = *(char *)v44; + v44 = (unsigned __int8)(v12 - 1) < 0x7Eu ? v44 : 0; + } + else + { + v44 = 0; + } + } + v38 = v4[3]; + if ( (v40 & 0x80u) != 0 ) + { + if ( (v3 & 0x80000000) != 0LL ) + { + HIDWORD(v3) = -HIDWORD(v3); + LODWORD(v3) = (unsigned __int64)-__SPAIR64__(v3, HIDWORD(v3)) >> 32; +LABEL_12: + v37 = v4; + v14 = v41; + while ( 1 ) + { + v15 = v14; + if ( v44 ) + { + if ( v42 ) + { + --v42; + } + else + { + v16 = *(char *)(v44 + 1); + if ( (_BYTE)v16 ) + ++v44; + else + v16 = *(char *)v44; + *(_BYTE *)v14 = 44; + v42 = v16 - 1; + v15 = (int *)((char *)v14 + 1); + v44 = v16 == 127 ? 0 : v44; + } + } + v14 = (int *)((char *)v15 + 1); + v43 = v15; + *(_BYTE *)v15 = __PAIR64__(v3, HIDWORD(v3)) % 0xA + 48; + if ( __PAIR64__(v3, HIDWORD(v3)) <= 9 ) + break; + v3 = __PAIR64__(__PAIR64__(v3, HIDWORD(v3)) / 0xA, (__PAIR64__(v3, HIDWORD(v3)) / 0xA) >> 32); + } + v44 = (int)v15 + 1; + v4 = v37; + if ( v38 > 0 ) + { + v17 = v38 - ((char *)v15 + 1 - (char *)v41); + if ( v17 <= 0 ) + goto LABEL_29; + goto LABEL_24; + } + if ( v41 != (int *)v44 ) + goto LABEL_30; +LABEL_51: + if ( !v38 ) + { + LOWORD(v21) = v40; + if ( v39 <= 0 ) + goto LABEL_36; + if ( (v40 & 0x1C0) == 0 ) + goto LABEL_35; + goto LABEL_33; + } + goto LABEL_58; + } + v13 = v40; + LOBYTE(v13) = v40 & 0x7F; + v4[1] = v13; + v40 = v13; + } + if ( v3 ) + goto LABEL_12; + v44 = (int)v41; + v17 = v38; + if ( v38 <= 0 ) + goto LABEL_51; +LABEL_24: + v18 = (_BYTE *)v44; + v19 = v44 + v17; + do + *v18++ = 48; + while ( v19 - (int)v18 > 0 ); + v20 = 1; + if ( v17 > 0 ) + v20 = v17; + v44 += v20; +LABEL_29: + if ( v41 == (int *)v44 ) + { +LABEL_58: + v32 = v44; + *(_BYTE *)v44 = 48; + v44 = v32 + 1; + } +LABEL_30: + LOWORD(v21) = v40; + if ( v39 <= 0 ) + goto LABEL_36; + v22 = v40; + v39 -= v44 - (_DWORD)v41; + v23 = v39; + LOWORD(v21) = v40; + v4[2] = v39; + if ( v23 <= 0 ) + goto LABEL_36; + if ( (v22 & 0x1C0) != 0 ) +LABEL_33: + v4[2] = v39 - 1; + if ( v38 < 0 && (v40 & 0x600) == 512 ) + { + v33 = v4[2]; + v4[2] = v33 - 1; + if ( v33 > 0 ) + { + v34 = (_BYTE *)v44; + v35 = (_BYTE *)(v44 + v33); + do + *v34++ = 48; + while ( v34 != v35 ); + v44 = (int)v34; + v4[2] = -1; + } + goto LABEL_36; + } +LABEL_35: + if ( (v40 & 0x400) == 0 ) + { + v30 = v4[2]; + v4[2] = v30 - 1; + if ( v30 > 0 ) + { + do + { + sub_455200(32, (int)v4); + v31 = v4[2]; + v4[2] = v31 - 1; + } + while ( v31 > 0 ); + v21 = v4[1]; + } + } +LABEL_36: + if ( (v21 & 0x80u) == 0 ) + { + if ( (v21 & 0x100) != 0 ) + { + v29 = v44; + *(_BYTE *)v44 = 43; + v25 = v29 + 1; + } + else + { + v25 = v44; + if ( (v21 & 0x40) != 0 ) + { + *(_BYTE *)v44 = 32; + ++v25; + } + } + } + else + { + v24 = v44; + *(_BYTE *)v44 = 45; + v25 = v24 + 1; + } + v26 = (int)v41; + if ( (unsigned int)v41 >= v25 ) + goto LABEL_42; + do + { + v27 = *(char *)--v25; + sub_455840(v27, (int)v4); + } + while ( v26 != v25 ); + result = v4[2]; + for ( v4[2] = result - 1; result > 0; v4[2] = result - 1 ) + { + sub_455200(32, (int)v4); +LABEL_42: + result = v4[2]; + } + return result; +} + +//----- (00455C50) -------------------------------------------------------- +int __usercall sub_455C50@(int a1@, _BYTE *a2@, int a3@, int a4) +{ + int v5; // esi + int v6; // ebx + int v7; // edx + int v8; // ebp + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + int v15; // ebx + int v16; // eax + char *v17; // eax + char v18; // cl + char *v19; // ebp + char v20; // bl + int v21; // eax + int result; // eax + char v23; // dl + int v24; // eax + int v25; // eax + int v26; // ecx + int v27; // edx + char *v28; // edx + int v29; // ecx + int v30; // eax + _BYTE *v32; // [esp+8h] [ebp-24h] + int v33; // [esp+Ch] [ebp-20h] + int v34; // [esp+Ch] [ebp-20h] + + v5 = a3; + v6 = a4; + if ( a3 > 0 ) + { + v8 = a3; + v33 = sub_455580(a4); + if ( v33 ) + { + v28 = *(char **)(a4 + 44); + v29 = 0; + v30 = *v28; + do + { + if ( v30 >= v8 ) + break; + v8 -= v30; + v30 = v28[1]; + ++v29; + if ( (_BYTE)v30 ) + ++v28; + else + v30 = *v28; + } + while ( v30 != 127 ); + v33 = v29; + v5 += v29; + } + v27 = *(_DWORD *)(a4 + 8); + if ( v27 <= v5 ) + goto LABEL_17; + v7 = v27 - v5; + *(_DWORD *)(a4 + 8) = v7; + } + else + { + v7 = *(_DWORD *)(a4 + 8); + if ( v7 > 0 ) + { + v33 = 0; + --v7; + v8 = a3; + goto LABEL_4; + } + v33 = 0; + v8 = a3; + } + if ( v7 < 0 ) + goto LABEL_17; +LABEL_4: + v9 = *(_DWORD *)(a4 + 12); + if ( v9 >= v7 ) + { +LABEL_17: + *(_DWORD *)(a4 + 8) = -1; + goto LABEL_18; + } + v10 = v7 - v9; + *(_DWORD *)(a4 + 8) = v10; + if ( v9 > 0 || (*(_BYTE *)(a4 + 5) & 8) != 0 ) + { + *(_DWORD *)(a4 + 8) = --v10; + if ( !v10 ) + { +LABEL_18: + if ( !a1 ) + { +LABEL_19: + v11 = *(_DWORD *)(a4 + 4); + goto LABEL_20; + } + goto LABEL_53; + } + } + if ( a1 ) + { + v12 = v10 - 1; + *(_DWORD *)(a4 + 8) = v12; + if ( v12 && (*(_DWORD *)(a4 + 4) & 0x600) == 0 ) + goto LABEL_11; +LABEL_53: + sub_455200(45, a4); + goto LABEL_23; + } + v11 = *(_DWORD *)(a4 + 4); + if ( (v11 & 0x1C0) != 0 ) + { + v12 = v10 - 1; + *(_DWORD *)(a4 + 8) = v12; + if ( v12 && (v11 & 0x600) == 0 ) + { +LABEL_11: + *(_DWORD *)(a4 + 8) = v12 - 1; + do + { +LABEL_12: + sub_455200(32, a4); + v13 = *(_DWORD *)(a4 + 8); + *(_DWORD *)(a4 + 8) = v13 - 1; + } + while ( v13 > 0 ); + if ( a1 ) + goto LABEL_53; + goto LABEL_19; + } + } + else if ( (v11 & 0x600) == 0 ) + { + v26 = *(_DWORD *)(a4 + 8); + *(_DWORD *)(a4 + 8) = v26 - 1; + if ( v26 > 0 ) + goto LABEL_12; + } +LABEL_20: + if ( (v11 & 0x100) != 0 ) + { + sub_455200(43, a4); + } + else if ( (v11 & 0x40) != 0 ) + { + sub_455200(32, a4); + } +LABEL_23: + v14 = *(_DWORD *)(a4 + 8); + if ( v14 > 0 && (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) + { + *(_DWORD *)(a4 + 8) = v14 - 1; + do + { + sub_455200(48, a4); + v25 = *(_DWORD *)(a4 + 8); + *(_DWORD *)(a4 + 8) = v25 - 1; + } + while ( v25 > 0 ); + } + if ( v5 <= 0 ) + { + sub_455200(48, a4); + } + else + { + v32 = a2; + v15 = v33; + do + { + while ( 1 ) + { + v16 = 48; + if ( *v32 ) + v16 = (char)*v32++; + sub_455200(v16, a4); + if ( !--v8 ) + { + if ( v15 ) + break; + } + if ( --v5 <= 0 ) + goto LABEL_37; + } + v17 = *(char **)(a4 + 44); + v34 = v15 - 1; + v18 = *v17; + v19 = &v17[v15]; + do + { + ++v17; + v20 = v18; + v18 = *v17; + } + while ( *v17 && v18 != 127 && v19 != v17 ); + v8 = v20; + sub_455840(44, a4); + v5 -= 2; + v15 = v34; + } + while ( v5 > 0 ); +LABEL_37: + v6 = a4; + a2 = v32; + } + v21 = *(_DWORD *)(v6 + 12); + if ( v21 > 0 || (*(_BYTE *)(v6 + 5) & 8) != 0 ) + { + sub_455790(v6); + if ( !v5 ) + goto LABEL_47; + v21 = *(_DWORD *)(v6 + 12); + } + else if ( !v5 ) + { + result = v21 - 1; + *(_DWORD *)(v6 + 12) = result; + return result; + } + *(_DWORD *)(v6 + 12) = v5 + v21; + do + { + sub_455200(48, v6); + ++v5; + } + while ( v5 ); + result = *(_DWORD *)(v6 + 12); + for ( *(_DWORD *)(v6 + 12) = result - 1; result > 0; *(_DWORD *)(v6 + 12) = result - 1 ) + { + v23 = *a2; + v24 = 48; + if ( *a2 ) + { + ++a2; + v24 = v23; + } + sub_455200(v24, v6); +LABEL_47: + result = *(_DWORD *)(v6 + 12); + } + return result; +} + +//----- (00455FC0) -------------------------------------------------------- +int __usercall sub_455FC0@(int a1@, _BYTE *a2@, int a3@, _DWORD *a4) +{ + int v4; // ecx + int i; // ebx + int v6; // ebp + int v7; // ecx + int v8; // eax + int v9; // edx + __int64 v12; // [esp+18h] [ebp-24h] + + v12 = a3 - 1; + a4[1] &= ~1u; + v4 = (a3 - 1) / 10; + for ( i = 1; v4; v4 /= 10 ) + ++i; + v6 = a4[8]; + if ( v6 < i ) + v6 = i; + v7 = a4[2]; + v8 = -1; + if ( v7 > v6 + 2 ) + v8 = v7 - (v6 + 2); + a4[2] = v8; + sub_455C50(a1, a2, 1, (int)a4); + a4[3] = a4[8]; + v9 = a4[1]; + a4[1] = v9 | 0x1C0; + sub_455200(v9 & 0x20 | 0x45, (int)a4); + a4[2] += v6 + 1; + return sub_455880(v12, HIDWORD(v12), (int)a4); +} + +//----- (00456090) -------------------------------------------------------- +void __usercall sub_456090(_DWORD *a1@, long double a2) +{ + int v3; // eax + int v4; // eax + int *v5; // eax + int *v6; // esi + int v7; // [esp+28h] [ebp-24h] BYREF + int v8; // [esp+2Ch] [ebp-20h] BYREF + long double v9; // [esp+30h] [ebp-1Ch] + int v10; // [esp+3Ch] [ebp-10h] + + v3 = a1[3]; + if ( v3 < 0 ) + { + a1[3] = 6; + v4 = 7; + } + else + { + v4 = v3 + 1; + } + v9 = a2; + v5 = sub_455100(2, *(__int64 *)&v9, SHIDWORD(v9), v10, v4, &v8, &v7); + v6 = v5; + if ( v8 == -32768 ) + sub_455460(v7, (int)v5, (int)a1); + else + sub_455FC0(v7, v5, v8, a1); + __freedtoa(v6); +} + +//----- (00456140) -------------------------------------------------------- +void __usercall sub_456140(int a1@, long double a2) +{ + int v3; // eax + int *v4; // eax + int *v5; // esi + int v6; // eax + int v7; // [esp+28h] [ebp-24h] BYREF + int v8; // [esp+2Ch] [ebp-20h] BYREF + long double v9; // [esp+30h] [ebp-1Ch] + int v10; // [esp+3Ch] [ebp-10h] + + v3 = *(_DWORD *)(a1 + 12); + if ( v3 < 0 ) + { + *(_DWORD *)(a1 + 12) = 6; + v3 = 6; + } + v9 = a2; + v4 = sub_455100(3, *(__int64 *)&v9, SHIDWORD(v9), v10, v3, &v8, &v7); + v5 = v4; + if ( v8 == -32768 ) + { + sub_455460(v7, (int)v4, a1); + __freedtoa(v5); + } + else + { + sub_455C50(v7, v4, v8, a1); + while ( 1 ) + { + v6 = *(_DWORD *)(a1 + 8); + *(_DWORD *)(a1 + 8) = v6 - 1; + if ( v6 <= 0 ) + break; + sub_455200(32, a1); + } + __freedtoa(v5); + } +} + +//----- (00456210) -------------------------------------------------------- +void __usercall sub_456210(_DWORD *a1@, long double a2) +{ + int v3; // eax + int *v4; // eax + int v5; // edi + int *Str; // esi + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // eax + int v11; // eax + int v12; // edx + int v13; // [esp+28h] [ebp-24h] BYREF + int v14; // [esp+2Ch] [ebp-20h] BYREF + long double v15; // [esp+30h] [ebp-1Ch] + int v16; // [esp+3Ch] [ebp-10h] + + v3 = a1[3]; + if ( v3 < 0 ) + { + a1[3] = 6; + v3 = 6; + } + else if ( !v3 ) + { + a1[3] = 1; + v3 = 1; + } + v15 = a2; + v4 = sub_455100(2, *(__int64 *)&v15, SHIDWORD(v15), v16, v3, &v14, &v13); + v5 = v14; + Str = v4; + if ( v14 == -32768 ) + { + sub_455460(v13, (int)v4, (int)a1); + __freedtoa(Str); + } + else + { + v7 = a1[1] & 0x800; + if ( v14 < -3 || (v8 = a1[3], v14 > v8) ) + { + if ( v7 ) + v10 = a1[3] - 1; + else + v10 = strlen((const char *)Str) - 1; + a1[3] = v10; + sub_455FC0(v13, Str, v5, a1); + __freedtoa(Str); + } + else + { + if ( v7 ) + { + a1[3] = v8 - v14; + } + else + { + v11 = strlen((const char *)Str) - v14; + a1[3] = v11; + if ( v11 < 0 ) + { + v12 = a1[2]; + if ( v12 > 0 ) + a1[2] = v12 + v11; + } + } + sub_455C50(v13, Str, v5, (int)a1); + while ( 1 ) + { + v9 = a1[2]; + a1[2] = v9 - 1; + if ( v9 <= 0 ) + break; + sub_455200(32, (int)a1); + } + __freedtoa(Str); + } + } +} + +//----- (004563A0) -------------------------------------------------------- +int __usercall sub_4563A0@(_DWORD *a1@, long double a2) +{ + __int16 v4; // fps + __int16 v5; // fps + unsigned __int64 v9; // rdi + int v10; // eax + __int16 v11; // dx + int v12; // ebp + char *v13; // ebp + char v14; // cl + char v15; // al + int v16; // eax + int v17; // ecx + char *v18; // eax + int v19; // esi + int v20; // eax + int v21; // eax + int v22; // eax + int v23; // eax + unsigned int v25; // edi + unsigned int v26; // esi + unsigned __int64 v27; // kr08_8 + char v28; // cl + int v29; // edx + int v30; // eax + int v31; // edi + int v32; // ecx + int v33; // eax + int v34; // ecx + __int16 v35; // ax + int v36; // eax + int v37; // eax + signed int v38; // [esp+10h] [ebp-7Ch] + int v39; // [esp+10h] [ebp-7Ch] + __int16 v40; // [esp+18h] [ebp-74h] + int v41; // [esp+1Ch] [ebp-70h] + int v42; // [esp+20h] [ebp-6Ch] + int v43; // [esp+24h] [ebp-68h] + char v46; // [esp+5Eh] [ebp-2Eh] BYREF + char v47; // [esp+5Fh] [ebp-2Dh] BYREF + + _FST7 = a2; + __asm { fxam } + if ( (v4 & 0x4500) == 256 ) + return sub_455460(0, (int)&off_532BD9, (int)a1); + if ( (SWORD4(a2) & 0x8000u) != 0 ) + a1[1] |= 0x80u; + __asm { fxam } + if ( (v5 & 0x4500) == 1280 ) + return sub_455460(WORD4(a2) & 0x8000, (int)&off_532BDD, (int)a1); + v9 = __PAIR64__(LODWORD(a2), DWORD1(a2)); + v40 = WORD4(a2) & 0x7FFF; + if ( (WORD4(a2) & 0x7FFF) != 0 ) + { + v40 -= 0x3FFF; + v12 = a1[3]; + if ( *(_QWORD *)&a2 ) + goto LABEL_11; +LABEL_25: + v43 = a1[1]; + goto LABEL_26; + } + if ( !*(_QWORD *)&a2 ) + { + v12 = a1[3]; + goto LABEL_25; + } + if ( (SDWORD1(a2) & 0x80000000) != 0 ) + { + v12 = a1[3]; + v40 = -16382; + } + else + { + v10 = -16383; + do + { + LODWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 31; + v11 = v10; + HIDWORD(v9) *= 2; + --v10; + } + while ( (v9 & 0x80000000) == 0LL ); + v40 = v11; + v12 = a1[3]; + } +LABEL_11: + if ( (unsigned int)v12 <= 0xE ) + { + while ( (v9 & 0x80000000) == 0LL ) + { + LODWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 31; + HIDWORD(v9) *= 2; + } + v27 = (4LL << (4 * (14 - (unsigned __int8)v12))) + (__PAIR64__(v9, HIDWORD(v9)) >> 1); + v25 = HIDWORD(v27); + v26 = v27; + if ( (v27 & 0x8000000000000000LL) != 0LL ) + { + ++v40; + } + else + { + v25 = v27 >> 31; + v26 = 2 * v27; + } + v28 = 4 * (15 - v12); + HIDWORD(v9) = __PAIR64__(v25, v26) >> v28; + LODWORD(v9) = v25 >> v28; + if ( (v28 & 0x20) != 0 ) + { + HIDWORD(v9) = v9; + LODWORD(v9) = 0; + } + } + v13 = &v46; + v43 = a1[1]; + LOWORD(v41) = v43; + do + { + v16 = BYTE4(v9) & 0xF; + if ( HIDWORD(v9) ^ v16 | (unsigned int)v9 ) + { + v17 = a1[3]; + HIDWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 4; + LODWORD(v9) = (unsigned int)v9 >> 4; + if ( v17 > 0 ) + a1[3] = v17 - 1; + } + else + { + if ( v13 > &v46 || (v43 & 0x800) != 0 || (int)a1[3] > 0 ) + *v13++ = 46; + if ( (unsigned int)v9 | HIDWORD(v9) ^ 1 ) + { + v34 = (unsigned __int16)(v40 - 1); + v39 = BYTE4(v9) & 0xF; + do + { + HIDWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 1; + LODWORD(v9) = (unsigned int)v9 >> 1; + v35 = v34--; + } + while ( HIDWORD(v9) ^ 1 | (unsigned int)v9 ); + v40 = v35; + v9 = 0LL; + v16 = v39; + } + else + { + v9 = 0LL; + } + } + if ( v16 ) + { + v14 = v16; + if ( v16 <= 9 ) +LABEL_15: + v15 = v14 + 48; + else + v15 = v43 & 0x20 | (v16 + 55); + *v13++ = v15; + continue; + } + v14 = 0; + if ( v13 > &v46 || (int)a1[3] >= 0 ) + goto LABEL_15; + } + while ( v9 ); + if ( v13 != &v46 ) + { + v42 = a1[2]; + if ( v42 > 0 ) + goto LABEL_51; +LABEL_29: + v19 = 2; + v38 = v40; + goto LABEL_30; + } + v12 = a1[3]; +LABEL_26: + LOWORD(v41) = v43; + if ( v12 > 0 || (v18 = &v46, (v43 & 0x800) != 0) ) + { + v46 = 46; + v18 = &v47; + } + *v18 = 48; + v13 = v18 + 1; + v42 = a1[2]; + if ( v42 <= 0 ) + goto LABEL_29; +LABEL_51: + v29 = a1[3]; + v30 = v13 - &v46; + v38 = v40; + if ( v29 > 0 ) + v30 += v29; + v31 = v30 + ((v43 & 0x1C0) != 0) + 5; + v32 = v40 / 10; + if ( v32 ) + { + do + { + LOWORD(v19) = ++v31 + 2 - (v30 + ((v43 & 0x1C0) != 0) + 5); + v32 /= 10; + } + while ( v32 ); + v19 = (__int16)v19; + } + else + { + v31 = v30 + ((v43 & 0x1C0) != 0) + 5; + v19 = 2; + } + if ( v42 <= v31 ) + { + a1[2] = -1; + } + else + { + v33 = v42 - v31; + if ( (v43 & 0x600) != 0 ) + { + a1[2] = v33; + } + else + { + a1[2] = v33 - 1; + if ( v33 > 0 ) + { + do + { + sub_455200(32, (int)a1); + v37 = a1[2]; + a1[2] = v37 - 1; + } + while ( v37 > 0 ); + v41 = a1[1]; + } + } + } +LABEL_30: + if ( (v41 & 0x80u) != 0 ) + { + sub_455200(45, (int)a1); + } + else if ( (v41 & 0x100) != 0 ) + { + sub_455200(43, (int)a1); + } + else if ( (v41 & 0x40) != 0 ) + { + sub_455200(32, (int)a1); + } + sub_455200(48, (int)a1); + sub_455200(a1[1] & 0x20 | 0x58, (int)a1); + v20 = a1[2]; + if ( v20 > 0 && (a1[1] & 0x600) == 512 ) + { + a1[2] = v20 - 1; + do + { + sub_455200(48, (int)a1); + v36 = a1[2]; + a1[2] = v36 - 1; + } + while ( v36 > 0 ); + } + if ( v13 <= &v46 ) + goto LABEL_40; + do + { + v21 = *--v13; + sub_455840(v21, (int)a1); + } + while ( v13 != &v46 ); + v22 = a1[3]; + a1[3] = v22 - 1; + if ( v22 > 0 ) + { + do + { + sub_455200(48, (int)a1); +LABEL_40: + v23 = a1[3]; + a1[3] = v23 - 1; + } + while ( v23 > 0 ); + } + sub_455200(a1[1] & 0x20 | 0x50, (int)a1); + a1[2] += v19; + a1[1] |= 0x1C0u; + return sub_455880(v38, v38 >> 31, (int)a1); +} +// 532BD9: using guessed type void *off_532BD9; +// 532BDD: using guessed type void *off_532BDD; + +//----- (00456950) -------------------------------------------------------- +int __usercall sub_456950@(int a1@, int a2@, int a3@, int a4) +{ + unsigned __int64 v4; // rdi + signed int v5; // ebx + int v6; // eax + char v7; // dl + int v8; // eax + int v9; // eax + void *v10; // esp + void *v11; // esp + int *v12; // ebx + int v13; // edx + int v14; // eax + int v15; // edi + int result; // eax + bool v17; // zf + int v18; // edi + int v19; // esi + int *v20; // esi + int v21; // ebx + unsigned int v22; // edi + int v23; // eax + int v24; // esi + int v25; // edi + int v26; // eax + char v27; // cl + int v28; // eax + int *v29; // eax + int v30; // eax + char v31; // al + int *v32; // ecx + int v33; // [esp+0h] [ebp-38h] BYREF + int v34; // [esp+4h] [ebp-34h] + int v35; // [esp+8h] [ebp-30h] + int v36; // [esp+Ch] [ebp-2Ch] + int v37; // [esp+10h] [ebp-28h] + int v38; // [esp+14h] [ebp-24h] + int *v39; // [esp+18h] [ebp-20h] + int v40; // [esp+1Ch] [ebp-1Ch] + + v4 = __PAIR64__(a2, a3); + v34 = a3; + v37 = a1; + v38 = a2; + v33 = 8 * (a1 != 111) + 7; + v39 = (int *)((a1 != 111) + 3); + *(_DWORD *)(a4 + 4) &= ~1u; + v40 = *(_DWORD *)(a4 + 12); + v5 = (a1 == 111 ? 0 : 0xFFFFFFFA) + (*(_DWORD *)(a4 + 12) & ~(v40 >> 31)) + 24; + v6 = sub_455580(a4); + v7 = (char)v39; + if ( v6 ) + v5 *= 2; + v8 = *(_DWORD *)(a4 + 8); + v35 = v8; + if ( v8 < v5 ) + v8 = v5; + v9 = 16 * ((unsigned int)(v8 + 15) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + v39 = &v33; + v36 = *(_DWORD *)(a4 + 12); + if ( !(v38 | v34) ) + { + v12 = &v33; + goto LABEL_30; + } + v12 = &v33; + LOBYTE(v40) = v33; + LOBYTE(v38) = v37 & 0x20; + do + { + v12 = (int *)((char *)v12 + 1); + if ( (unsigned __int8)((BYTE4(v4) & v40) + 48) <= 0x39u ) + *((_BYTE *)v12 - 1) = (BYTE4(v4) & v40) + 48; + else + *((_BYTE *)v12 - 1) = v38 | ((BYTE4(v4) & v40) + 55); + HIDWORD(v4) = __PAIR64__(v4, HIDWORD(v4)) >> v7; + LODWORD(v4) = (unsigned int)v4 >> v7; + if ( (v7 & 0x20) != 0 ) + { + HIDWORD(v4) = v4; + LODWORD(v4) = 0; + } + } + while ( v4 ); + if ( v39 == v12 ) + { +LABEL_30: + v25 = v36; + *(_DWORD *)(a4 + 4) &= ~0x800u; + v13 = v25 - ((char *)v12 - (char *)v39); + if ( v25 <= 0 ) + { + if ( v37 != 111 ) + goto LABEL_34; + goto LABEL_32; + } +LABEL_47: + v29 = v12; + do + { + v29 = (int *)((char *)v29 + 1); + *((_BYTE *)v29 - 1) = 48; + } + while ( (char *)v12 + v13 - (char *)v29 > 0 ); + v30 = 1; + if ( v13 > 0 ) + v30 = v13; + v12 = (int *)((char *)v12 + v30); + if ( v39 == v12 ) + goto LABEL_36; + v14 = (char *)v12 - (char *)v39; + goto LABEL_18; + } + if ( v36 > 0 ) + { + v13 = v36 - ((char *)v12 - (char *)v39); + if ( v13 > 0 ) + goto LABEL_47; + } + if ( v37 != 111 ) + { +LABEL_17: + v14 = (char *)v12 - (char *)v39; + goto LABEL_18; + } +LABEL_32: + if ( (*(_BYTE *)(a4 + 5) & 8) != 0 ) + { + *(_BYTE *)v12 = 48; + v12 = (int *)((char *)v12 + 1); + } +LABEL_34: + if ( v12 != v39 ) + goto LABEL_17; + v14 = 0; + if ( v36 ) + { +LABEL_36: + v15 = v35; + *(_BYTE *)v12 = 48; + v14 = (char *)v12 + 1 - (char *)v39; + v12 = (int *)((char *)v12 + 1); + if ( v15 <= v14 ) + goto LABEL_19; +LABEL_37: + v18 = v15 - v14; + v17 = v37 == 111; + *(_DWORD *)(a4 + 8) = v18; + v26 = *(_DWORD *)(a4 + 4); + if ( !v17 ) + { + if ( (v26 & 0x800) != 0 ) + { + v18 -= 2; + if ( v18 <= 0 || v36 >= 0 ) + goto LABEL_41; + } + else if ( v36 >= 0 ) + { + goto LABEL_58; + } + if ( (*(_DWORD *)(a4 + 4) & 0x600) != 512 ) + { + if ( (v26 & 0x800) == 0 ) + { +LABEL_58: + v24 = v18 - 1; + if ( (v26 & 0x400) == 0 ) + goto LABEL_44; +LABEL_59: + if ( v39 < v12 ) + goto LABEL_60; + goto LABEL_27; + } +LABEL_41: + v27 = v37; + *((_BYTE *)v12 + 1) = 48; + v12 = (int *)((char *)v12 + 2); + *((_BYTE *)v12 - 2) = v27; + goto LABEL_42; + } + v24 = v18 - 1; +LABEL_62: + v32 = (int *)((char *)v12 + v18); + do + { + v12 = (int *)((char *)v12 + 1); + *((_BYTE *)v12 - 1) = 48; + } + while ( v32 != v12 ); + v18 = v24 - v18; + if ( v37 == 111 || (v26 & 0x800) == 0 ) + { +LABEL_42: + if ( v18 <= 0 ) + { +LABEL_22: + result = (int)v39; + if ( v39 >= v12 ) + return result; + v19 = v18 - 1; +LABEL_24: + v39 = (int *)v19; + v20 = v12; + v21 = a4; + v40 = v18; + v22 = result; + goto LABEL_25; + } + v24 = v18 - 1; + if ( (v26 & 0x400) == 0 ) + { + do + { +LABEL_44: + sub_455200(32, a4); + v28 = v24--; + } + while ( v28 > 0 ); + result = (int)v39; + v19 = -2; + v18 = -1; + if ( v39 >= v12 ) + return result; + goto LABEL_24; + } + goto LABEL_59; + } + goto LABEL_41; + } + if ( v36 < 0 ) + { + v24 = v18 - 1; + if ( (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) + goto LABEL_62; + if ( (v26 & 0x400) == 0 ) + goto LABEL_44; + } + else + { + v24 = v18 - 1; + if ( (v26 & 0x400) == 0 ) + goto LABEL_44; + } + if ( v12 > v39 ) + goto LABEL_60; + do + { +LABEL_27: + sub_455200(32, a4); + result = v24--; + } + while ( result > 0 ); + return result; + } +LABEL_18: + v15 = v35; + if ( v35 > v14 ) + goto LABEL_37; +LABEL_19: + result = a4; + v17 = v37 == 111; + *(_DWORD *)(a4 + 8) = -1; + if ( !v17 ) + { + v18 = -1; + if ( (*(_BYTE *)(a4 + 5) & 8) != 0 ) + { + v31 = v37; + *((_BYTE *)v12 + 1) = 48; + v12 = (int *)((char *)v12 + 2); + *((_BYTE *)v12 - 2) = v31; + } + goto LABEL_22; + } + v24 = -2; + v18 = -1; + if ( v12 <= v39 ) + return result; +LABEL_60: + v40 = v18; + v22 = (unsigned int)v39; + v39 = (int *)v24; + v20 = v12; + v21 = a4; + do + { +LABEL_25: + v23 = *((char *)v20 - 1); + v20 = (int *)((char *)v20 - 1); + result = sub_455200(v23, v21); + } + while ( v22 < (unsigned int)v20 ); + v24 = (int)v39; + if ( v40 > 0 ) + goto LABEL_27; + return result; +} + +//----- (00456D50) -------------------------------------------------------- +int __cdecl __mingw_pformat(__int16 a1, int a2, int a3, char *a4, double *a5) +{ + char *v5; // eax + int v6; // edx + int v7; // eax + char *v8; // esi + char *v9; // ebx + int v10; // edi + int v11; // ebx + char v12; // dl + char v13; // si + char v14; // dl + int v15; // ecx + int v16; // eax + _BYTE *v17; // ebx + char *v18; // eax + char v19; // dl + int v20; // eax + void *v21; // esp + void *v22; // esp + int v23; // eax + void *v24; // esp + char *j; // ebx + void *v26; // esp + _WORD *v27; // eax + _WORD *v28; // edx + int v29; // edi + char *v30; // eax + char *k; // esi + char v32; // dl + char *v33; // ecx + int v34; // eax + int v35; // eax + unsigned __int8 v36; // si + int v37; // edx + int v38; // eax + char *v39; // eax + int v40; // ecx + unsigned __int8 v41; // di + unsigned __int8 *v42; // esi + _WORD *v43; // eax + _WORD *v44; // eax + char *i; // ebx + char v46; // cl + char *v47; // eax + int v48; // edx + int v49; // eax + char *v50; // ebx + char *v51; // eax + char *v52; // eax + int v53; // eax + char v54; // dl + int v55; // eax + int v56; // eax + _WORD *v57; // eax + char *v58; // eax + int v59; // edi + char *v60; // esi + int v61; // eax + double *v62; // edi + char *v63; // eax + char *v64; // ecx + int v65; // ebx + int v66; // eax + int v68; // eax + int v69; // eax + double **v70; // eax + double *v71; // ecx + double **v72; // esi + _BYTE *v73; // edx + char v74; // bl + int v75; // ebx + char *v76; // eax + char *v77; // esi + int v78; // edi + char v79; // dl + int v80; // ecx + int v81; // eax + int v82; // ebx + int v83; // eax + char *v84; // eax + char *v85; // ecx + double *v86; // edx + double *v87; // eax + const char **v88; // edx + double *v89; // eax + char *v90; // ebx + int v91; // edx + long double v92; // fst7 + long double v93; // fst7 + long double v94; // fst7 + long double v95; // fst7 + long double v96; // fst7 + long double v97; // fst7 + long double v98; // fst7 + int *v99; // ebx + int *v100; // eax + int v101; // eax + int v102; // ecx + double *v103; // edx + char *v104; // ebx + bool v105; // zf + int v106; // eax + int *v107; // eax + int v108; // eax + long double v109; // fst7 + double *v110; // edx + int v111; // eax + char *v112; // esi + char *v113; // eax + const wchar_t **v114; // edx + const wchar_t *v115; // ebx + int v116; // eax + int v117; // eax + int v118; // eax + unsigned int v119; // ebx + unsigned int v120; // eax + __int64 v121; // rax + char *v122; // eax + double v123; // rax + int v124; // eax + int v125; // [esp+0h] [ebp-A8h] BYREF + _WORD v126[8]; // [esp+Ch] [ebp-9Ch] BYREF + int *v127; // [esp+1Ch] [ebp-8Ch] + int v128; // [esp+20h] [ebp-88h] + int v129; // [esp+24h] [ebp-84h] + _WORD *v130; // [esp+28h] [ebp-80h] + int *v131; // [esp+2Ch] [ebp-7Ch] + _WORD *v132; // [esp+30h] [ebp-78h] + unsigned __int8 *v133; // [esp+34h] [ebp-74h] + _WORD *v134; // [esp+38h] [ebp-70h] + int *v135; // [esp+3Ch] [ebp-6Ch] + int v136; // [esp+40h] [ebp-68h] + int v137; // [esp+44h] [ebp-64h] + int v138; // [esp+48h] [ebp-60h] + int v139; // [esp+4Ch] [ebp-5Ch] + unsigned __int8 v140[4]; // [esp+54h] [ebp-54h] BYREF + double v141; // [esp+58h] [ebp-50h] BYREF + int v142; // [esp+60h] [ebp-48h] BYREF + int v143; // [esp+64h] [ebp-44h] + int v144; // [esp+68h] [ebp-40h] BYREF + int v145[2]; // [esp+6Ch] [ebp-3Ch] BYREF + __int16 v146; // [esp+74h] [ebp-34h] + int v147; // [esp+78h] [ebp-30h] + int v148; // [esp+7Ch] [ebp-2Ch] + int v149; // [esp+80h] [ebp-28h] + int v150; // [esp+84h] [ebp-24h] + __int16 v151; // [esp+88h] [ebp-20h] + unsigned int v152; // [esp+8Ch] [ebp-1Ch] + + v144 = -1; + v145[0] = -1; + v142 = a2; + v145[1] = -3; + v147 = 0; + v136 = a1 & 0x3000; + v143 = v136; + v146 = 0; + v148 = a3; + v5 = getenv("PRINTF_EXPONENT_DIGITS"); + if ( !v5 || (v6 = *v5, v7 = 2, (unsigned int)(v6 - 48) > 2) ) + v7 = 3 - (__mingw_output_format_flags & 1); + v8 = a4; + v149 = v7; + v150 = -3; + v151 = 0; + v152 = 0; + LODWORD(v141) = a4; + v138 = 0; + do + { + while ( 1 ) + { + v10 = (int)(v8 + 1); + if ( *v8 != 37 ) + goto LABEL_5; + LODWORD(v141) = v8 + 1; + v139 = sub_455660(&v141); + if ( !v139 ) + { + v11 = LODWORD(v141); + v12 = *(_BYTE *)LODWORD(v141); + if ( *(_BYTE *)LODWORD(v141) == 36 ) + goto LABEL_206; + v139 = (int)v8; + v13 = v12; + v137 = v10; + while ( strchr("+-' 0#", v13) ) + v13 = *(_BYTE *)++v11; + v14 = v13; + v15 = v13; + v8 = (char *)v139; + v10 = v137; + if ( v14 == 42 ) + { + v54 = *(_BYTE *)++v11; + if ( v54 != 46 ) + goto LABEL_16; + } + else + { + if ( (unsigned int)(v15 - 48) <= 9 ) + { + do + { + v16 = *(char *)++v11; + v14 = v16; + } + while ( (unsigned int)(v16 - 48) <= 9 ); + } + if ( v14 != 46 ) + { +LABEL_16: + LODWORD(v141) = v11; + sub_455040((int *)&v141); + v17 = (_BYTE *)LODWORD(v141); + LOBYTE(v139) = *(_BYTE *)LODWORD(v141); + v18 = strchr("aAeEfFgGcCdiouxXnpsS", (char)v139); + v19 = v139; + if ( v18 && (unsigned int)(v18 - 5450677) > 7 ) + { +LABEL_206: + v133 = v140; + goto LABEL_77; + } + goto LABEL_18; + } + } + v55 = *(char *)(v11 + 1); + if ( (_BYTE)v55 == 42 ) + { + v11 += 2; + } + else + { + ++v11; + if ( (unsigned int)(v55 - 48) <= 9 ) + { + do + v56 = *(char *)++v11; + while ( (unsigned int)(v56 - 48) <= 9 ); + } + } + goto LABEL_16; + } + for ( i = (char *)++LODWORD(v141); strchr("+-' 0#", *i); ++i ) + ; + LODWORD(v141) = i; + v46 = *i; + if ( *i == 42 ) + { + LODWORD(v141) = i + 1; + v53 = sub_455660(&v141); + if ( !v53 ) + goto LABEL_206; + if ( v139 < v53 ) + v139 = v53; + i = (char *)(LODWORD(v141) + 1); + LODWORD(v141) = i; + v46 = *i; + } + else + { + v47 = i + 1; + if ( (unsigned int)(v46 - 48) <= 9 ) + { + do + { + LODWORD(v141) = v47; + v48 = *v47; + i = v47++; + v46 = v48; + } + while ( (unsigned int)(v48 - 48) <= 9 ); + } + } + if ( v46 == 46 ) + { + LODWORD(v141) = i + 1; + v49 = i[1]; + if ( (_BYTE)v49 == 42 ) + { + LODWORD(v141) = i + 2; + v69 = sub_455660(&v141); + if ( !v69 ) + goto LABEL_206; + ++LODWORD(v141); + if ( v139 < v69 ) + v139 = v69; + } + else + { + v50 = i + 2; + if ( (unsigned int)(v49 - 48) <= 9 ) + { + do + { + v51 = v50; + LODWORD(v141) = v50++; + } + while ( (unsigned int)(*v51 - 48) <= 9 ); + } + } + } + sub_455040((int *)&v141); + v17 = (_BYTE *)LODWORD(v141); + LOBYTE(v137) = *(_BYTE *)LODWORD(v141); + v52 = strchr("aAeEfFgGcCdiouxXnpsS", (char)v137); + v19 = v137; + if ( v52 ) + { + if ( (unsigned int)(v52 - 5450677) > 7 ) + break; + } +LABEL_18: + if ( v19 == 37 ) + goto LABEL_19; +LABEL_5: + v9 = v8; + v8 = (char *)v10; + LODWORD(v141) = v10; + if ( !*v9 ) + goto LABEL_21; + } + if ( v138 >= v139 ) + { +LABEL_19: + v8 = v17 + 1; + goto LABEL_20; + } + v138 = v139; + v8 = v17 + 1; +LABEL_20: + LODWORD(v141) = v8; + } + while ( *v17 ); +LABEL_21: + v20 = 16 * ((unsigned int)(4 * v138 + 15) >> 4); + v21 = alloca(v20); + v22 = alloca(v20); + v137 = (int)v126; + v133 = (unsigned __int8 *)v126; + if ( v138 ) + { + v131 = &v125; + v23 = 16 * ((unsigned int)(2 * v138 + 15) >> 4); + v24 = alloca(v23); + j = a4; + v26 = alloca(v23); + LODWORD(v141) = a4; + v27 = v126; + v28 = &v126[v138]; + v130 = v126; + v132 = v126; + v134 = v28; + do + *v27++ = 0; + while ( v28 != v27 ); + v29 = (int)(j + 1); + if ( *j == 37 ) + goto LABEL_28; + while ( 1 ) + { +LABEL_25: + v30 = j; + for ( j = (char *)v29; ; j = (char *)(LODWORD(v141) + 1) ) + { + LODWORD(v141) = j; + if ( !*v30 ) + { + v57 = v132; + do + { + if ( !*v57 ) + goto LABEL_77; + ++v57; + } + while ( v134 != v57 ); + v70 = (double **)v137; + v71 = a5; + v59 = v138 - 1; + v72 = (double **)(v137 + 4 * v138); + v73 = (char *)v130 + 1; + while ( 1 ) + { + v74 = *(v73 - 1); + *v70 = v71; + if ( v74 == 1 ) + { + v75 = (unsigned __int8)*v73; + if ( v75 == 76 || (byte_78B3CD & 1) != 0 && v75 == 2 ) + { + v71 = (double *)((char *)v71 + 12); +LABEL_104: + ++v70; + v73 += 2; + if ( v72 == v70 ) + goto LABEL_110; + continue; + } + } + else if ( v74 == 3 || *v73 != 3 ) + { + v71 = (double *)((char *)v71 + 4); + goto LABEL_104; + } + ++v70; + ++v71; + v73 += 2; + if ( v72 == v70 ) + { +LABEL_110: + v76 = a4; + v60 = ++a4; + v61 = *v76; + if ( !v61 ) + goto LABEL_87; + goto LABEL_78; + } + } + } + v29 = (int)(j + 1); + if ( *j != 37 ) + goto LABEL_25; +LABEL_28: + LODWORD(v141) = v29; + v139 = sub_455660(&v141); + if ( v139 > 0 ) + break; + v139 = (int)j; + v77 = (char *)LODWORD(v141); + v135 = (int *)v29; + while ( 1 ) + { + v78 = *v77; + if ( !strchr("+-' 0#", v78) ) + break; + ++v77; + } + v79 = v78; + v80 = v78; + j = (char *)v139; + v29 = (int)v135; + if ( v79 == 42 ) + { + v79 = *++v77; + } + else if ( (unsigned int)(v80 - 48) <= 9 ) + { + do + { + v81 = *++v77; + v79 = v81; + } + while ( (unsigned int)(v81 - 48) <= 9 ); + } + if ( v79 == 46 ) + { + v117 = v77[1]; + if ( (_BYTE)v117 == 42 ) + { + v77 += 2; + } + else + { + ++v77; + if ( (unsigned int)(v117 - 48) <= 9 ) + { + do + v118 = *++v77; + while ( (unsigned int)(v118 - 48) <= 9 ); + } + } + } + LODWORD(v141) = v77; + sub_455040((int *)&v141); + v30 = (char *)LODWORD(v141); + if ( *(_BYTE *)LODWORD(v141) != 37 ) + goto LABEL_25; + } + for ( k = (char *)++LODWORD(v141); strchr("+-' 0#", *k); ++k ) + ; + LODWORD(v141) = k; + v32 = *k; + if ( *k == 42 ) + { + LODWORD(v141) = k + 1; + v129 = sub_455660(&v141); + if ( v129 ) + { + k = (char *)(LODWORD(v141) + 1); + LODWORD(v141) = k; + v32 = *k; + } + else + { + k = (char *)LODWORD(v141); + v139 = 0; + v32 = *(_BYTE *)LODWORD(v141); + } + } + else + { + v33 = k + 1; + if ( (unsigned int)(v32 - 48) <= 9 ) + { + do + { + LODWORD(v141) = v33; + v34 = *v33; + k = v33++; + v32 = v34; + } + while ( (unsigned int)(v34 - 48) <= 9 ); + } + v129 = 0; + } + if ( v32 != 46 ) + { +LABEL_37: + v128 = 0; + goto LABEL_38; + } + LODWORD(v141) = k + 1; + v111 = k[1]; + if ( (_BYTE)v111 != 42 ) + { + v112 = k + 2; + if ( (unsigned int)(v111 - 48) <= 9 ) + { + do + { + v113 = v112; + LODWORD(v141) = v112++; + } + while ( (unsigned int)(*v113 - 48) <= 9 ); + } + goto LABEL_37; + } + LODWORD(v141) = k + 2; + v128 = sub_455660(&v141); + if ( !v128 ) + { + sub_455040((int *)&v141); + v37 = LODWORD(v141); + LOBYTE(v135) = *(_BYTE *)LODWORD(v141); + goto LABEL_97; + } + ++LODWORD(v141); +LABEL_38: + v35 = sub_455040((int *)&v141); + if ( v35 == 1 ) + v36 = 0; + else + v36 = v35 == 4 ? 0 : v35; + v37 = LODWORD(v141); + v38 = (char)*(_BYTE *)LODWORD(v141); + LOBYTE(v135) = *(_BYTE *)LODWORD(v141); + if ( v139 + && (v127 = (int *)LODWORD(v141), v39 = strchr("aAeEfFgGcCdiouxXnpsS", v38), v37 = (int)v127, v39) + && (v40 = (v39 - "aAeEfFgGcCdiouxXnpsS") / 8 + 1, v40 > 0) ) + { + v41 = v36; + v140[0] = (unsigned __int8)v135; + v140[1] = v36; + v42 = (unsigned __int8 *)&v130[v139 - 1]; + if ( !*(_WORD *)v42 + || (v135 = v127, + v139 = (v39 - "aAeEfFgGcCdiouxXnpsS") / 8 + 1, + v119 = sub_455710(v140), + v120 = sub_455710(v42), + LOBYTE(v40) = v139, + v37 = (int)v135, + v119 > v120) ) + { + *v42 = v40; + v42[1] = v41; + } + if ( v129 > 0 ) + { + v43 = &v130[v129 - 1]; + if ( !*v43 ) + *v43 = 100; + } + if ( v128 > 0 ) + { + v44 = &v130[v128 - 1]; + if ( !*v44 ) + *v44 = 100; + } + v29 = v37 + 1; + j = (char *)v37; + } + else + { +LABEL_97: + if ( (_BYTE)v135 == 37 ) + { + v29 = v37 + 1; + j = (char *)v37; + } + } + } + } +LABEL_77: + v58 = a4; + v59 = -1; + v60 = ++a4; + v61 = *v58; + v138 = 0; + if ( !v61 ) + goto LABEL_88; +LABEL_78: + v134 = (_WORD *)v59; + v62 = a5; +LABEL_81: + if ( v61 != 37 ) + { + sub_455200(v61, (int)&v142); + v63 = a4; + goto LABEL_80; + } + if ( v138 ) + { + v68 = sub_4556E0((int *)&a4); + if ( v68 > 0 ) + v62 = *(double **)&v133[4 * v68 - 4]; + } + v64 = a4; + v145[0] = -1; + v144 = -1; + v143 = v136; + if ( !*a4 ) + { +LABEL_131: + v63 = v64; + goto LABEL_80; + } + v139 = 0; + v135 = &v144; + v137 = 0; + while ( 2 ) + { + v63 = v64 + 1; + a4 = v64 + 1; + v65 = *v64; + switch ( *v64 ) + { + case ' ': + ++v64; + if ( !v139 ) + v143 |= 0x40u; + goto LABEL_130; + case '#': + ++v64; + if ( !v139 ) + v143 |= 0x800u; + goto LABEL_130; + case '%': + goto LABEL_156; + case '\'': + ++v64; + if ( !v139 ) + v143 |= 1u; + goto LABEL_130; + case '*': + v99 = v135; + if ( !v135 ) + goto LABEL_174; + if ( (v139 & 5) != 0 ) + { + v135 = 0; + ++v64; +LABEL_133: + v139 = 4; + } + else + { + if ( v138 && (v124 = sub_4556E0((int *)&a4), v124 > 0) ) + { + v101 = **(_DWORD **)&v133[4 * v124 - 4]; + *v99 = v101; + } + else + { + v100 = (int *)v62; + v62 = (double *)((char *)v62 + 4); + v101 = *v100; + *v135 = v101; + } + if ( v101 >= 0 ) + goto LABEL_190; + if ( !v139 ) + { + v143 |= 0x400u; + v144 = -v144; +LABEL_190: + v135 = 0; + v64 = a4; + goto LABEL_130; + } + v145[0] = -1; + v64 = a4; + v135 = 0; + } + goto LABEL_130; + case '+': + ++v64; + if ( !v139 ) + v143 |= 0x100u; + goto LABEL_130; + case '-': + ++v64; + if ( !v139 ) + v143 |= 0x400u; + goto LABEL_130; + case '.': + if ( (unsigned int)v139 <= 1 ) + { + ++v64; + v145[0] = 0; + v135 = v145; + v139 = 2; + } + else + { +LABEL_174: + v139 = 4; + ++v64; + } + goto LABEL_130; + case '0': + if ( !v139 ) + { + v143 |= 0x200u; + ++v64; + goto LABEL_130; + } + if ( v139 != 4 ) + { +LABEL_219: + if ( v139 == 2 ) + v139 = 3; +LABEL_126: + ++v64; + if ( v135 ) + { + v82 = v65 - 48; + if ( *v135 > 0 ) + v82 += 10 * *v135; + *v135 = v82; + v64 = v63; + } +LABEL_130: + if ( !*v64 ) + goto LABEL_131; + continue; + } +LABEL_155: + a4 = v60; +LABEL_156: + sub_455200(37, (int)&v142); + v63 = a4; +LABEL_80: + v60 = v63 + 1; + a4 = v63 + 1; + v61 = *v63; + if ( v61 ) + goto LABEL_81; + v59 = (int)v134; + if ( v138 ) + { + do +LABEL_87: + v66 = v59--; + while ( v66 > 0 ); + } +LABEL_88: + __mingw_free(v152); + return v147; + case 'A': + if ( (v143 & 4) != 0 ) + goto LABEL_160; + goto LABEL_180; + case 'C': + v145[0] = -1; + v87 = (double *)((char *)v62 + 4); + goto LABEL_203; + case 'E': + if ( (v143 & 4) == 0 ) + goto LABEL_172; + goto LABEL_164; + case 'F': + if ( (v143 & 4) == 0 ) + goto LABEL_168; + goto LABEL_162; + case 'G': + if ( (v143 & 4) != 0 ) + goto LABEL_170; + goto LABEL_201; + case 'I': + case 'h': + case 'j': + case 'l': + case 't': + case 'z': + a4 = v64; + v83 = sub_455040((int *)&a4); + v64 = a4; + v137 = v83; + if ( v65 != 108 || (byte_78B3CD & 1) == 0 || v83 != 2 ) + goto LABEL_133; + v137 = 2; +LABEL_205: + v143 |= 4u; + v139 = 4; + goto LABEL_130; + case 'L': + ++v64; + goto LABEL_205; + case 'S': + v89 = (double *)((char *)v62 + 4); + goto LABEL_215; + case 'X': + case 'o': + case 'u': + case 'x': + if ( v137 == 3 ) + { + v123 = *v62++; + v141 = v123; + } + else + { + v84 = *(char **)v62; + if ( v137 == 2 ) + { +LABEL_139: + *(_QWORD *)&v141 = (unsigned int)v84; + v62 = (double *)((char *)v62 + 4); + goto LABEL_140; + } + if ( v137 != 1 ) + { + if ( v137 == 4 ) + v84 = (char *)(unsigned __int8)v84; + goto LABEL_139; + } + v62 = (double *)((char *)v62 + 4); + *(_QWORD *)&v141 = (unsigned __int16)v84; + } +LABEL_140: + if ( v65 != 117 ) + { + sub_456950(v65, SLODWORD(v141), SHIDWORD(v141), (int)&v142); + v63 = a4; + goto LABEL_80; + } + goto LABEL_147; + case 'a': + v143 |= 0x20u; + if ( (v143 & 4) != 0 ) + { +LABEL_160: + v92 = *(long double *)v62; + v62 = (double *)((char *)v62 + 12); + sub_4563A0(&v142, v92); + v63 = a4; + } + else + { +LABEL_180: + v98 = *v62++; + sub_4563A0(&v142, v98); + v63 = a4; + } + goto LABEL_80; + case 'c': + v145[0] = -1; + v86 = v62; + v87 = (double *)((char *)v62 + 4); + if ( (unsigned int)(v137 - 2) <= 1 ) + { +LABEL_203: + v110 = v62; + v62 = v87; + LOWORD(v141) = *(_DWORD *)v110; + sub_455260((int)&v141, 1, (int)&v142); + v63 = a4; + } + else + { + v62 = (double *)((char *)v62 + 4); + LOBYTE(v141) = *(_DWORD *)v86; + sub_455390((char *)&v141, 1, (int)&v142); + v63 = a4; + } + goto LABEL_80; + case 'd': + case 'i': + v143 |= 0x80u; + if ( v137 == 3 ) + { + v121 = *(_QWORD *)v62++; + v141 = *(double *)&v121; + } + else + { + v85 = *(char **)v62; + v62 = (double *)((char *)v62 + 4); + if ( v137 == 2 ) + { +LABEL_226: + *(_QWORD *)&v141 = (int)v85; + goto LABEL_147; + } + if ( v137 != 1 ) + { + if ( v137 == 4 ) + { + *(_QWORD *)&v141 = (char)v85; + goto LABEL_147; + } + goto LABEL_226; + } + *(_QWORD *)&v141 = (__int16)v85; + } +LABEL_147: + sub_455880(LODWORD(v141), HIDWORD(v141), (int)&v142); + v63 = a4; + goto LABEL_80; + case 'e': + v143 |= 0x20u; + if ( (v143 & 4) != 0 ) + { +LABEL_164: + v94 = *(long double *)v62; + v62 = (double *)((char *)v62 + 12); + sub_456090(&v142, v94); + v63 = a4; + } + else + { +LABEL_172: + v97 = *v62++; + sub_456090(&v142, v97); + v63 = a4; + } + goto LABEL_80; + case 'f': + v143 |= 0x20u; + if ( (v143 & 4) != 0 ) + { +LABEL_162: + v93 = *(long double *)v62; + v62 = (double *)((char *)v62 + 12); + sub_456140((int)&v142, v93); + v63 = a4; + } + else + { +LABEL_168: + v95 = *v62++; + sub_456140((int)&v142, v95); + v63 = a4; + } + goto LABEL_80; + case 'g': + v143 |= 0x20u; + if ( (v143 & 4) != 0 ) + { +LABEL_170: + v96 = *(long double *)v62; + v62 = (double *)((char *)v62 + 12); + sub_456210(&v142, v96); + v63 = a4; + } + else + { +LABEL_201: + v109 = *v62++; + sub_456210(&v142, v109); + v63 = a4; + } + goto LABEL_80; + case 'n': + v102 = v147; + v103 = (double *)((char *)v62 + 4); + if ( v137 == 4 ) + { + v122 = *(char **)v62; + v62 = (double *)((char *)v62 + 4); + *v122 = v147; + v63 = a4; + } + else + { + v104 = *(char **)v62; + if ( v137 == 1 ) + { + *(_WORD *)v104 = v147; + v62 = (double *)((char *)v62 + 4); + } + else if ( v137 == 2 ) + { + *(_DWORD *)v104 = v147; + v62 = (double *)((char *)v62 + 4); + } + else + { + v105 = v137 == 3; + v62 = (double *)((char *)v62 + 4); + *(_DWORD *)v104 = v147; + if ( v105 ) + { + *((_DWORD *)v104 + 1) = v102 >> 31; + v62 = v103; + } + } + } + goto LABEL_80; + case 'p': + if ( !v139 ) + { + v106 = v136; + if ( v143 == v136 ) + { + BYTE1(v106) = BYTE1(v136) | 2; + v145[0] = 8; + v143 = v106; + } + } + v107 = (int *)v62; + v62 = (double *)((char *)v62 + 4); + v108 = *v107; + *(_QWORD *)&v141 = (unsigned int)v108; + sub_456950(120, v108, 0, (int)&v142); + v63 = a4; + goto LABEL_80; + case 's': + v88 = (const char **)v62; + v89 = (double *)((char *)v62 + 4); + if ( (unsigned int)(v137 - 2) <= 1 ) + { +LABEL_215: + v114 = (const wchar_t **)v62; + v62 = v89; + v115 = *v114; + if ( !*v114 ) + v115 = (const wchar_t *)&off_532BE2; + v116 = wcslen(v115); + sub_455260((int)v115, v116, (int)&v142); + v63 = a4; + } + else + { + v90 = *(char **)v62; + v62 = (double *)((char *)v62 + 4); + if ( *v88 ) + { + v91 = strlen(*v88); + } + else + { + v91 = 6; + v90 = "(null)"; + } + sub_455390(v90, v91, (int)&v142); + v63 = a4; + } + goto LABEL_80; + default: + if ( v139 == 4 || (unsigned int)(v65 - 48) > 9 ) + goto LABEL_155; + if ( v139 ) + goto LABEL_219; + v139 = 1; + goto LABEL_126; + } + } +} +// 532BE2: using guessed type void *off_532BE2; +// 78B3CD: using guessed type char byte_78B3CD; + +//----- (00457C80) -------------------------------------------------------- +unsigned int __cdecl __mingw_memalign_base(unsigned int a1, unsigned int *a2) +{ + unsigned int result; // eax + unsigned int v3; // esi + int v4; // edx + int v5; // ebx + int *v6; // ecx + int v7; // edi + int v8; // esi + int v9; // edx + int v10; // [esp+0h] [ebp-18h] + unsigned int v11; // [esp+4h] [ebp-14h] + + result = a1; + if ( a1 ) + { + v3 = __mingw_memalign_lwm; + if ( __mingw_memalign_lwm ) + { + if ( __mingw_memalign_lwm + 8 <= a1 ) + { + v4 = *(_DWORD *)((a1 - 4) & 0xFFFFFFFC); + v5 = v4 & 3; + v6 = (int *)(v4 & 0xFFFFFFFC); + a2[1] = v5; + *a2 = v4 & 0xFFFFFFFC; + if ( v3 <= (v4 & 0xFFFFFFFC) && (unsigned int)v6 <= a1 - 8 ) + { + v11 = v4 & 0xFFFFFFFC; + if ( (v4 & 1) != 0 ) + { + v7 = *v6; + v8 = *v6 + 7; + v10 = -*v6; + } + else + { + v10 = -8; + v8 = 15; + v7 = 8; + } + a2[2] = v7; + v9 = v4 & 2; + if ( v9 ) + { + v9 = v6[(unsigned int)(v5 + 1) >> 2]; + v6 = (int *)((char *)v6 + v9); + } + a2[3] = v9; + if ( v5 == 3 ) + v8 = v7 + 11; + if ( a1 == (((unsigned int)v6 + v8) & v10) - v9 ) + return v11; + } + } + } + } + return result; +} +// 78B3D0: using guessed type int __mingw_memalign_lwm; + +//----- (00457D40) -------------------------------------------------------- +void *__cdecl __mingw_memalign_realloc(int a1, int *a2, size_t a3) +{ + size_t v3; // eax + int v4; // edx + size_t v5; // edi + int v6; // ebx + unsigned int v7; // eax + int v8; // edx + void *v9; // ebp + unsigned int v10; // ebx + int v11; // ebp + const void *Src; // eax + void *v13; // ebx + size_t Size; // edi + + v3 = _msize((void *)*a2); + v4 = a2[2]; + v5 = v3; + v6 = v4 + 7; + if ( (a2[1] & 3) == 3 ) + v6 = v4 + 11; + v7 = ___msvcrt_realloc(*a2, v6 + a3); + v8 = *a2; + if ( *a2 == v7 ) + return (void *)a1; + v9 = 0; + if ( v7 ) + { + if ( !__mingw_memalign_lwm || __mingw_memalign_lwm > v7 ) + __mingw_memalign_lwm = v7; + v10 = v7 + a2[3] + v6; + v11 = v7 | a2[1]; + Src = (const void *)(a1 - v8 + v7); + *a2 = v11; + v13 = (void *)((-a2[2] & v10) - a2[3]); + v9 = v13; + if ( v13 != Src ) + { + Size = v8 - a1 + v5; + if ( Size > a3 ) + Size = a3; + memmove(v13, Src, Size); + } + *(_DWORD *)(((int)v13 - 4) & 0xFFFFFFFC) = *a2; + } + return v9; +} +// 78B3D0: using guessed type int __mingw_memalign_lwm; +// 78C408: using guessed type int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); + +//----- (00457E20) -------------------------------------------------------- +int __mb_codeset_for_locale() +{ + int v0; // edi + char *v1; // eax + char *v2; // esi + size_t v3; // eax + size_t v4; // edx + int v5; // eax + void *v6; // esp + void *v7; // esp + const char *v8; // esi + char *v9; // eax + char *v10; // eax + char *v11; // eax + char v13[16]; // [esp+Ch] [ebp-3Ch] BYREF + struct _cpinfo CPInfo; // [esp+1Ch] [ebp-2Ch] BYREF + + v0 = 0; + v1 = setlocale(2, 0); + if ( v1 ) + { + v2 = v1; + v3 = strlen(v1); + v4 = v3 + 1; + v5 = 16 * ((v3 + 16) >> 4); + v6 = alloca(v5); + v7 = alloca(v5); + v8 = (const char *)memcpy(v13, v2, v4); + v9 = setlocale(2, &byte_532D84); + if ( !strcmp(v8, v9) ) + { + v10 = getenv("LC_ALL"); + if ( !v10 ) + { + v10 = getenv("LC_CTYPE"); + if ( !v10 ) + { + v10 = getenv("LANG"); + if ( !v10 ) + v10 = (char *)v8; + } + } + } + else + { + setlocale(2, v8); + v10 = (char *)v8; + } + v11 = strchr(v10, 46); + if ( !v11 ) + return 0; + v0 = atoi(v11 + 1); + if ( !GetCPInfo(v0, &CPInfo) || !CPInfo.MaxCharSize ) + return 0; + } + return v0; +} +// 457E20: using guessed type char var_3C[16]; + +//----- (00457F50) -------------------------------------------------------- +UINT __cdecl __mb_cur_max_for_codeset(UINT CodePage) +{ + BOOL v1; // edx + UINT result; // eax + struct _cpinfo CPInfo; // [esp+1Ch] [ebp-20h] BYREF + + v1 = GetCPInfo(CodePage, &CPInfo); + result = 0; + if ( v1 ) + return CPInfo.MaxCharSize; + return result; +} + +//----- (00457F80) -------------------------------------------------------- +int __cdecl __mingw_mbrtowc_handler(_WORD *a1, int a2, unsigned int a3, _DWORD *a4) +{ + int v4; // eax + unsigned int v5; // eax + unsigned int v7; // esi + unsigned int v8; // ebx + unsigned int v9; // edx + char v10; // cl + unsigned int v11; // ebp + WCHAR v12; // ax + WCHAR v13[2]; // [esp+24h] [ebp-28h] BYREF + CHAR v14[4]; // [esp+28h] [ebp-24h] BYREF + int v15; // [esp+2Ch] [ebp-20h] + + v4 = __mingw_mbrtowc_codeset_init(); + __mingw_mbrlen_cur_max_init(v4); + v15 = 0; + *(_DWORD *)v14 = *a4; + v5 = __mingw_mbrlen_cur_max(); + *a4 = 0; + if ( !a3 ) + { + if ( (*(_WORD *)v14 & 0xFC00) != 0xD800 || (*(_WORD *)&v14[2] & 0xFC00) != 0xDC00 ) + { + *a4 = *(_DWORD *)v14; + return -2; + } + if ( a1 ) + *a1 = *(_WORD *)&v14[2]; + return 0; + } + v7 = 0; + if ( (*(_WORD *)v14 & 0xFC00) == 0xD800 && (*(_WORD *)&v14[2] & 0xFC00) == 0xDC00 ) + { + *_errno() = 22; + return -1; + } + else + { + do + { + if ( !v14[v7] ) + break; + ++v7; + } + while ( v7 != 4 ); + v8 = v7; + v9 = 0; + if ( v7 < v5 ) + { + do + { + v10 = *(_BYTE *)(a2 + v9); + if ( !v10 ) + goto LABEL_13; + ++v8; + ++v9; + *((_BYTE *)&v13[1] + v8 + 1) = v10; + } + while ( v5 > v8 && a3 > v9 ); + if ( v5 > v8 ) +LABEL_13: + v14[v8] = 0; + } + v11 = 1; + do + { + if ( __mingw_mbtowc_convert(v14, v11, v13, 2) ) + break; + ++v11; + } + while ( v11 <= v8 ); + if ( v7 >= v11 ) + { + *_errno() = 42; + return -1; + } + else + { + v12 = v13[0]; + if ( a1 && (*a1 = v13[0], (v12 & 0xFC00) == 0xD800) ) + { + *a4 = *(_DWORD *)v13; + } + else if ( !v12 ) + { + return 0; + } + return v11 - v7; + } + } +} + +//----- (00458170) -------------------------------------------------------- +int __mingw_wctomb_codeset_init() +{ + int v0; // ebx + + v0 = __mb_codeset_for_locale(); + *__emutls_get_address(dword_5150C4) = v0; + return v0; +} +// 5150C4: using guessed type size_t dword_5150C4[4]; + +//----- (00458190) -------------------------------------------------------- +UINT __cdecl __mingw_wctomb_cur_max_init(UINT a1) +{ + UINT v1; // ebx + + v1 = __mb_cur_max_for_codeset(a1); + *__emutls_get_address(dword_5150D4) = v1; + return v1; +} +// 5150D4: using guessed type size_t dword_5150D4[4]; + +//----- (004581C0) -------------------------------------------------------- +int __mingw_wctomb_cur_max() +{ + return *__emutls_get_address(dword_5150D4); +} +// 5150D4: using guessed type size_t dword_5150D4[4]; + +//----- (004581E0) -------------------------------------------------------- +UINT __cdecl __mingw_wctomb_convert(LPSTR lpMultiByteStr, int cbMultiByte, WCHAR *lpWideCharStr, int cchWideChar) +{ + LPSTR v4; // ebx + int v5; // esi + UINT result; // eax + WCHAR i; // dx + WCHAR v8; // dx + int v9; // ecx + LPCWCH v10; // ebp + WCHAR v11; // dx + __int16 v12; // dx + int v13; // eax + BOOL *lpUsedDefaultChar; // edx + __int16 v15; // dx + UINT v16; // [esp+2Ch] [ebp-30h] + int v17; // [esp+3Ch] [ebp-20h] BYREF + + v4 = lpMultiByteStr; + v5 = cbMultiByte; + v17 = 0; + result = *__emutls_get_address(dword_5150C4); + if ( !result ) + { + if ( cchWideChar == -1 ) + { + while ( 1 ) + { + v8 = lpWideCharStr[result]; + if ( v8 > 0xFFu ) + break; + if ( v4 ) + { + if ( v5 <= 0 ) + { +LABEL_41: + *_errno() = 12; + return -1; + } + *v4 = v8; + v8 = lpWideCharStr[result]; + --v5; + ++v4; + } + ++result; + if ( !v8 ) + return result; + } + } + else + { + if ( cchWideChar <= 0 ) + return result; + for ( i = *lpWideCharStr; i <= 0xFFu; i = lpWideCharStr[result] ) + { + if ( v4 ) + { + if ( v5 <= 0 ) + goto LABEL_41; + *v4 = i; + i = lpWideCharStr[result]; + --v5; + ++v4; + } + ++result; + if ( !i || cchWideChar == result ) + return result; + } + } +LABEL_11: + *_errno() = 42; + return -1; + } + if ( result <= 0xFDE7 ) + { + lpUsedDefaultChar = &v17; + } + else + { + v9 = cchWideChar; + if ( cchWideChar ) + { + v16 = result; + v10 = lpWideCharStr; + while ( 1 ) + { + v11 = *v10; + if ( v9 == -1 ) + break; + v12 = v11 & 0xFC00; + v13 = v9 - 1; + if ( v12 == -10240 ) + { + if ( v9 == 1 || (v10[1] & 0xFC00) != 0xDC00 ) + goto LABEL_11; + v9 -= 2; + v10 += 2; + if ( !v9 ) + { +LABEL_26: + result = v16; + lpUsedDefaultChar = 0; + goto LABEL_32; + } + } + else + { + if ( v12 == -9216 ) + goto LABEL_11; + --v9; + ++v10; + if ( !v13 ) + goto LABEL_26; + } + } + result = v16; + while ( v11 ) + { + v15 = v11 & 0xFC00; + if ( v15 == -10240 ) + { + if ( (v10[1] & 0xFC00) != 0xDC00 ) + goto LABEL_11; + v11 = v10[2]; + v10 += 2; + } + else + { + if ( v15 == -9216 ) + goto LABEL_11; + v11 = *++v10; + } + } + } + lpUsedDefaultChar = 0; + } +LABEL_32: + result = WideCharToMultiByte(result, 0, lpWideCharStr, cchWideChar, lpMultiByteStr, cbMultiByte, 0, lpUsedDefaultChar); + if ( v17 || !result ) + goto LABEL_11; + return result; +} +// 5150C4: using guessed type size_t dword_5150C4[4]; + +//----- (00458410) -------------------------------------------------------- +int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8) +{ + int v8; // ebp + int v9; // eax + int v10; // edi + int v11; // edx + int v12; // eax + int *v13; // esi + int *v14; // edx + int *v15; // eax + int v16; // edi + int *v17; // ecx + int v18; // ebx + int v19; // ebx + int v20; // ebx + int v21; // eax + unsigned int v22; // edx + unsigned int v23; // eax + double v24; // rax + int v25; // ecx + int v26; // edx + signed int v27; // eax + long double v28; // fst7 + int v30; // eax + signed int v31; // eax + int *v32; // edi + long double v33; // fst7 + int *v34; // ebp + long double v35; // fst6 + bool i; // zf + long double v37; // fst6 + char v38; // cl + long double v39; // fst7 + double v40; // rax + long double v41; // fst6 + long double v42; // fst5 + long double v43; // fst6 + long double v44; // fst7 + long double v45; // fst6 + char v46; // al + long double v47; // rt1 + long double v48; // fst5 + char v49; // dl + int *v50; // eax + char v51; // dl + double v52; // rax + long double v53; // fst6 + int v54; // edx + int v55; // ebp + signed int v56; // eax + int v57; // eax + int *v58; // eax + bool v59; // bl + char v60; // bl + int v61; // ebx + signed int v62; // eax + int v63; // eax + bool v64; // dl + unsigned int v65; // ebx + int v66; // eax + int v67; // edx + int *v68; // eax + int v69; // ebx + int *v70; // ebx + int *v71; // edi + int v72; // eax + int v73; // ebp + int *v74; // eax + int v75; // ecx + int *v76; // ecx + int v77; // eax + int *v78; // eax + unsigned int v79; // eax + int v80; // edx + char v81; // al + int *v82; // edx + int v83; // edx + int v84; // eax + int v85; // edx + long double v86; // fst6 + char v87; // bl + long double v88; // fst5 + int v89; // edx + char v90; // al + long double v91; // rt2 + long double v92; // fst6 + long double v93; // fst7 + long double v94; // rtt + double v95; // rax + int v96; // eax + bool v97; // zf + bool v98; // cc + int *v99; // edi + int *v100; // eax + int *v101; // ebx + long double v102; // fst6 + int v103; // eax + int v104; // [esp+18h] [ebp-84h] + int v105; // [esp+18h] [ebp-84h] + int *v106; // [esp+18h] [ebp-84h] + int *v107; // [esp+18h] [ebp-84h] + int v108; // [esp+18h] [ebp-84h] + int v109; // [esp+1Ch] [ebp-80h] + int *v110; // [esp+1Ch] [ebp-80h] + int v111; // [esp+20h] [ebp-7Ch] + int v112; // [esp+20h] [ebp-7Ch] + unsigned int v113; // [esp+20h] [ebp-7Ch] + int *v114; // [esp+20h] [ebp-7Ch] + double v115; // [esp+28h] [ebp-74h] + int v116; // [esp+28h] [ebp-74h] + int v117; // [esp+28h] [ebp-74h] + int *v118; // [esp+28h] [ebp-74h] + int v119; // [esp+30h] [ebp-6Ch] + unsigned int v120; // [esp+30h] [ebp-6Ch] + bool v121; // [esp+30h] [ebp-6Ch] + int v122; // [esp+34h] [ebp-68h] + unsigned int v123; // [esp+34h] [ebp-68h] + int v124; // [esp+38h] [ebp-64h] + double v125; // [esp+38h] [ebp-64h] + int v126; // [esp+40h] [ebp-5Ch] + int v127; // [esp+44h] [ebp-58h] + int *v128; // [esp+44h] [ebp-58h] + int v129; // [esp+44h] [ebp-58h] + int *v130; // [esp+44h] [ebp-58h] + int v131; // [esp+48h] [ebp-54h] + unsigned int v132; // [esp+48h] [ebp-54h] + int v133; // [esp+4Ch] [ebp-50h] + int *v134; // [esp+4Ch] [ebp-50h] + int v135; // [esp+50h] [ebp-4Ch] + int v136; // [esp+54h] [ebp-48h] + char v137; // [esp+58h] [ebp-44h] + signed int v138; // [esp+58h] [ebp-44h] + int v139; // [esp+5Ch] [ebp-40h] + int v140; // [esp+60h] [ebp-3Ch] + int v141; // [esp+64h] [ebp-38h] + unsigned int v142[8]; // [esp+7Ch] [ebp-20h] BYREF + + v8 = *a4; + *a4 &= 0xFFFFFFCF; + v9 = v8 & 7; + if ( v9 == 3 ) + { + *a7 = -32768; + return __nrv_alloc_D2A("Infinity", a8, 8u); + } + v109 = v8 & 4; + if ( (v8 & 4) != 0 ) + { + v10 = 0; + if ( v9 == 4 ) + { + *a7 = -32768; + return __nrv_alloc_D2A((char *)&off_532DA9, a8, 3u); + } + return (int *)v10; + } + if ( (v8 & 7) == 0 ) + { +LABEL_28: + *a7 = 1; + return __nrv_alloc_D2A("0", a8, 1u); + } + v10 = 0; + if ( (unsigned int)(v9 - 1) > 1 ) + return (int *)v10; + v11 = 0; + v104 = *a1; + v12 = 32; + if ( *a1 <= 32 ) + { + v11 = v8 & 4; + } + else + { + do + { + v12 *= 2; + ++v11; + } + while ( v104 > v12 ); + } + v13 = __Balloc_D2A(v11); + v14 = v13 + 5; + v15 = a3; + v16 = (v104 - 1) >> 5; + v17 = &a3[v16]; + do + { + v18 = *v15++; + *v14++ = v18; + } + while ( v17 >= v15 ); + v19 = 4; + if ( (char *)v17 + 1 >= (char *)a3 + 1 ) + v19 = v16 * 4 + 4; + v20 = v19 >> 2; + do + { + v21 = v20--; + if ( v13[v20 + 5] ) + { + _BitScanReverse(&v22, v13[v20 + 5]); + v13[4] = v21; + v20 = 32 * v21 - (v22 ^ 0x1F); + goto LABEL_15; + } + } + while ( v20 ); + v13[4] = 0; +LABEL_15: + v23 = __trailz_D2A((int)v13); + v142[0] = v23; + v127 = a2; + if ( v23 ) + { + __rshift_D2A((int)v13, v23); + v20 -= v142[0]; + v127 = v142[0] + a2; + } + if ( !v13[4] ) + { + __Bfree_D2A((unsigned int)v13); + goto LABEL_28; + } + v24 = __b2d_D2A((int)v13, v142); + v25 = v127 + v20 - 1; + LODWORD(v115) = LODWORD(v24); + v26 = HIDWORD(v24) & 0xFFFFF | 0x3FF00000; + HIDWORD(v115) = v26; + v27 = abs32(v25) - 1077; + v28 = (v115 - 1.5) * 0.289529654602168 + 0.1760912590558 + (long double)v25 * 0.301029995663981; + if ( v27 > 0 ) + v28 = v28 + (long double)v27 * 7.0e-17; + v119 = (int)v28; + if ( v28 < 0.0 && (long double)v119 != v28 ) + --v119; + HIDWORD(v115) = v26 + (v25 << 20); + v122 = -v127; + if ( (unsigned int)v119 > 0x16 ) + { + v136 = 1; +LABEL_33: + v131 = 0; + if ( v127 <= 0 ) + goto LABEL_34; + goto LABEL_60; + } + if ( __tens_D2A[v119] > (long double)v115 ) + { + v136 = 0; + --v119; + goto LABEL_33; + } + v136 = 0; + v131 = 0; + if ( v127 <= 0 ) + goto LABEL_47; +LABEL_60: + v122 = 0; + v131 = v127; +LABEL_34: + if ( v119 < 0 ) + { + v30 = v119; + v131 -= v119; + v119 = 0; + v126 = v30; + v133 = -v30; + goto LABEL_36; + } +LABEL_47: + v133 = 0; + v122 += v119; + v126 = v119; +LABEL_36: + if ( (unsigned int)a5 > 9 ) + { + a5 = 0; + goto LABEL_49; + } + v137 = 1; + if ( a5 > 5 ) + { + a5 -= 4; + v137 = 0; + } + switch ( a5 ) + { + case 4: + v135 = 1; + goto LABEL_64; + case 5: + v135 = 1; +LABEL_44: + v139 = a6 + v126; + v31 = a6 + v126 + 1; + v111 = v31; + if ( v31 <= 0 ) + { + v142[0] = 1; + v31 = 1; + } + else + { + v142[0] = a6 + v126 + 1; + } + goto LABEL_67; + case 2: + v135 = 0; +LABEL_64: + v31 = a6; + if ( a6 <= 0 ) + v31 = 1; + v142[0] = v31; + v139 = v31; + v111 = v31; + a6 = v31; +LABEL_67: + v32 = __rv_alloc_D2A(v31); + v38 = v137 & ((unsigned int)v111 <= 0xE); + v124 = a1[3] - 1; + if ( a1[3] == 1 ) + goto LABEL_72; + goto LABEL_68; + case 3: + v135 = 0; + goto LABEL_44; + } +LABEL_49: + v142[0] = (int)((long double)v104 * 0.30103) + 3; + v32 = __rv_alloc_D2A(v142[0]); + v112 = a1[3]; + v124 = v112 - 1; + if ( v112 == 1 ) + { + if ( v126 <= 14 && v127 >= 0 ) + { + v111 = -1; + v33 = __tens_D2A[v126]; + goto LABEL_53; + } + a6 = 0; + v111 = -1; + v135 = 1; + v139 = -1; + goto LABEL_138; + } + a6 = 0; + v38 = 0; + v135 = 1; + v139 = -1; + v111 = -1; +LABEL_68: + if ( v124 < 0 ) + v124 = 2; + if ( (v8 & 8) == 0 ) + { +LABEL_97: + if ( v127 >= 0 && v126 <= 14 ) + { + v33 = __tens_D2A[v126]; + if ( a6 < 0 && v111 <= 0 ) + { + if ( !v111 && v33 * 5.0 < v115 ) + { + v106 = 0; + v126 += 2; + v128 = 0; +LABEL_104: + *(_BYTE *)v32 = 49; + v34 = (int *)((char *)v32 + 1); + v109 = 32; + goto LABEL_105; + } + goto LABEL_132; + } +LABEL_53: + ++v126; + v34 = (int *)((char *)v32 + 1); + v142[0] = 1; + v105 = (int)(v115 / v33); + *(_BYTE *)v32 = v105 + 48; + v35 = v115 - (long double)v105 * v33; + for ( i = v35 == 0.0; !i; i = v35 == 0.0 ) + { + if ( v142[0] == v111 ) + { + if ( v124 ) + { + v109 = 16; + if ( v124 == 1 ) + { + v49 = *((_BYTE *)v34 - 1); + goto LABEL_87; + } + } + else + { + v102 = v35 + v35; + v49 = *((_BYTE *)v34 - 1); + if ( v102 <= v33 && (v102 != v33 || (v105 & 1) == 0) ) + goto LABEL_241; + while ( 1 ) + { +LABEL_87: + v50 = (int *)((char *)v34 - 1); + if ( v49 != 57 ) + { + v51 = v49 + 1; + goto LABEL_89; + } + if ( v50 == v32 ) + break; + v49 = *((_BYTE *)v34 - 2); + v34 = (int *)((char *)v34 - 1); + } + ++v126; + v50 = v32; + v51 = 49; + *(_BYTE *)v32 = 48; +LABEL_89: + *(_BYTE *)v50 = v51; + v109 = 32; + } + goto LABEL_57; + } + v37 = v35 * 10.0; + v34 = (int *)((char *)v34 + 1); + ++v142[0]; + v105 = (int)(v37 / v33); + *((_BYTE *)v34 - 1) = v105 + 48; + v35 = v37 - (long double)v105 * v33; + } + goto LABEL_57; + } + if ( !v135 ) + { + v54 = v133; + v55 = v131; + v128 = 0; + goto LABEL_109; + } +LABEL_138: + if ( a5 <= 1 ) + { + v83 = a1[1]; + v84 = v104 - v20 + 1; + v142[0] = v84; + if ( v127 - (v104 - v20) < v83 ) + { + v84 = v127 - v83 + 1; + v142[0] = v84; + } + v122 += v84; + v67 = v133; + v55 = v131; + v131 += v84; + } + else + { + v66 = v111 - 1; + if ( v133 < v111 - 1 ) + { + v85 = v66 - v133; + v133 = v111 - 1; + v119 += v85; + v67 = 0; + } + else + { + v67 = v133 - v66; + } + if ( v111 < 0 ) + { + v55 = v131 - v111; + v142[0] = 0; + } + else + { + v122 += v111; + v142[0] = v111; + v55 = v131; + v131 += v111; + } + } + v108 = v67; + v68 = __i2b_D2A(1); + v54 = v108; + v128 = v68; +LABEL_109: + if ( v55 > 0 && v122 > 0 ) + { + v56 = v55; + if ( v55 > v122 ) + v56 = v122; + v131 -= v56; + v55 -= v56; + v122 -= v56; + v142[0] = v56; + } + if ( v133 ) + { + if ( v135 ) + { + if ( v54 > 0 ) + { + v116 = v54; + v128 = (int *)__pow5mult_D2A(v128, v54); + v107 = __mult_D2A((int)v128, (int)v13); + __Bfree_D2A((unsigned int)v13); + v13 = v107; + v54 = v116; + } + v57 = v133 - v54; + if ( v133 == v54 ) + goto LABEL_119; + } + else + { + v57 = v133; + } + v13 = (int *)__pow5mult_D2A(v13, v57); + } +LABEL_119: + v58 = __i2b_D2A(1); + v106 = v58; + v59 = v20 == 1 && a5 <= 1; + if ( v119 > 0 ) + { + v106 = (int *)__pow5mult_D2A(v58, v119); + if ( !v59 || a2 <= a1[1] + 1 ) + { + v117 = 0; +LABEL_136: + _BitScanReverse(&v65, v106[v106[4] + 4]); + v60 = v65 ^ 0x1F; +LABEL_122: + v61 = (v60 - (_BYTE)v122 - 4) & 0x1F; + v142[0] = v61; + v62 = v61; + if ( v61 + v131 > 0 ) + { + v13 = __lshift_D2A(v13, v61 + v131); + v62 = v142[0]; + } + v63 = v122 + v62; + if ( v63 > 0 ) + v106 = __lshift_D2A(v106, v63); + v64 = a5 > 2; + if ( v136 && (v121 = a5 > 2, v77 = __cmp_D2A((int)v13, (int)v106), v64 = a5 > 2, v77 < 0) ) + { + v13 = __multadd_D2A(v13, 10, 0); + if ( !v135 ) + { + if ( v139 > 0 || !v121 ) + { + v111 = v139; +LABEL_176: + v34 = v32; + v142[0] = 1; + while ( 1 ) + { + v34 = (int *)((char *)v34 + 1); + v79 = __quorem_D2A((int)v13, (int)v106) + 48; + *((_BYTE *)v34 - 1) = v79; + if ( (int)v142[0] >= v111 ) + break; + v78 = __multadd_D2A(v13, 10, 0); + ++v142[0]; + v13 = v78; + } + LOBYTE(v120) = v79; + v76 = 0; +LABEL_180: + if ( v124 ) + { + v80 = v13[4]; + v81 = *((_BYTE *)v34 - 1); + if ( v124 != 2 ) + { + if ( v80 > 1 || v13[5] ) + goto LABEL_190; + goto LABEL_186; + } + } + else + { + v114 = v76; + v13 = __lshift_D2A(v13, 1); + v96 = __cmp_D2A((int)v13, (int)v106); + v76 = v114; + v97 = v96 == 0; + v98 = v96 <= 0; + v81 = *((_BYTE *)v34 - 1); + if ( !v98 || v97 && (v120 & 1) != 0 ) + { + while ( 1 ) + { +LABEL_190: + v82 = (int *)((char *)v34 - 1); + if ( v81 != 57 ) + { + v109 = 32; + *(_BYTE *)v82 = v81 + 1; + goto LABEL_167; + } + if ( v82 == v32 ) + break; + v81 = *((_BYTE *)v34 - 2); + v34 = (int *)((char *)v34 - 1); + } + ++v126; + *(_BYTE *)v32 = 49; + v109 = 32; + goto LABEL_167; + } + v80 = v13[4]; + } + if ( v80 > 1 || v13[5] ) + v109 = 16; +LABEL_186: + while ( v81 == 48 ) + { + v81 = *((_BYTE *)v34 - 2); + v34 = (int *)((char *)v34 - 1); + } +LABEL_167: + v113 = (unsigned int)v76; + __Bfree_D2A((unsigned int)v106); + if ( !v128 ) + goto LABEL_57; + if ( v113 && (int *)v113 != v128 ) + __Bfree_D2A(v113); + goto LABEL_106; + } + goto LABEL_260; + } + v128 = __multadd_D2A(v128, 10, 0); + if ( v139 <= 0 && v121 ) + { +LABEL_260: + --v126; + v111 = v139; + goto LABEL_129; + } + v111 = v139; + } + else + { + if ( v111 <= 0 && v64 ) + { +LABEL_129: + v34 = v32; + if ( !v111 ) + { + v106 = __multadd_D2A(v106, 5, 0); + if ( __cmp_D2A((int)v13, (int)v106) > 0 ) + { + v126 += 2; + goto LABEL_104; + } + } +LABEL_133: + v109 = 16; + v126 = -a6; +LABEL_105: + __Bfree_D2A((unsigned int)v106); + if ( !v128 ) + goto LABEL_57; +LABEL_106: + __Bfree_D2A((unsigned int)v128); + goto LABEL_57; + } + ++v126; + if ( !v135 ) + goto LABEL_176; + } + v69 = v55 + v61; + if ( v69 > 0 ) + v128 = __lshift_D2A(v128, v69); + v70 = v128; + if ( v117 ) + { + v101 = __Balloc_D2A(v128[1]); + memcpy(v101 + 3, v128 + 3, 4 * v128[4] + 8); + v70 = __lshift_D2A(v101, 1); + } + v118 = v32; + v134 = v32; + v71 = v128; + v142[0] = 1; + while ( 1 ) + { + v123 = __quorem_D2A((int)v13, (int)v106); + v120 = v123 + 48; + v73 = __cmp_D2A((int)v13, (int)v71); + v74 = __diff_D2A((int)v106, (int)v70); + if ( v74[3] ) + { + __Bfree_D2A((unsigned int)v74); + v72 = 1; + } + else + { + v132 = (unsigned int)v74; + v129 = __cmp_D2A((int)v13, (int)v74); + __Bfree_D2A(v132); + v72 = a5 | v129; + if ( a5 | v129 ) + { + v72 = v129; + } + else if ( !(v124 | *a3 & 1) ) + { + v130 = v71; + v75 = v73; + v32 = v134; + v34 = (int *)((char *)v118 + 1); + if ( v123 == 9 ) + goto LABEL_259; + if ( v75 <= 0 ) + { + if ( v13[4] > 1 || v13[5] ) + v72 = 16; + } + else + { + LOBYTE(v120) = v123 + 49; + v72 = 32; + } + v109 = v72; + *(_BYTE *)v118 = v120; + v76 = v130; + v128 = v70; + goto LABEL_167; + } + } + if ( v73 < 0 || !(a5 | v73) && (*(_BYTE *)a3 & 1) == 0 ) + break; + v34 = (int *)((char *)v118 + 1); + if ( v72 > 0 && v124 != 2 ) + { + v130 = v71; + v32 = v134; + if ( v123 == 9 ) + goto LABEL_259; + v109 = 32; + v76 = v130; + v128 = v70; + *(_BYTE *)v118 = v123 + 49; + goto LABEL_167; + } + *(_BYTE *)v118 = v120; + if ( v142[0] == v111 ) + { + v76 = v71; + v128 = v70; + v32 = v134; + goto LABEL_180; + } + v13 = __multadd_D2A(v13, 10, 0); + if ( v71 == v70 ) + { + v71 = __multadd_D2A(v71, 10, 0); + v70 = v71; + } + else + { + v71 = __multadd_D2A(v71, 10, 0); + v70 = __multadd_D2A(v70, 10, 0); + } + ++v142[0]; + v118 = (int *)((char *)v118 + 1); + } + v130 = v71; + v32 = v134; + v34 = (int *)((char *)v118 + 1); + if ( v124 ) + { + if ( v13[4] <= 1 && !v13[5] ) + { + if ( v72 <= 0 ) + { + v76 = v130; + v128 = v70; + goto LABEL_257; + } +LABEL_252: + v13 = __lshift_D2A(v13, 1); + v103 = __cmp_D2A((int)v13, (int)v106); + if ( v103 <= 0 && (v103 || (v120 & 1) == 0) ) + { + v124 = 32; + goto LABEL_255; + } + if ( v123 != 9 ) + { + v124 = 32; + LOBYTE(v120) = v123 + 49; + goto LABEL_255; + } +LABEL_259: + v76 = v130; + v128 = v70; + *(_BYTE *)v118 = 57; + v81 = 57; + goto LABEL_190; + } + if ( v124 != 2 ) + { + v99 = (int *)((char *)v118 + 1); + while ( __cmp_D2A((int)v106, (int)v70) > 0 ) + { + *((_BYTE *)v99 - 1) = v120; + v100 = __multadd_D2A(v70, 10, 0); + if ( v130 == v70 ) + v130 = v100; + v110 = v100; + v13 = __multadd_D2A(v13, 10, 0); + v118 = v99; + v99 = (int *)((char *)v99 + 1); + v120 = __quorem_D2A((int)v13, (int)v106) + 48; + v70 = v110; + } + v34 = v99; + v32 = v134; + if ( v120 != 57 ) + { + v76 = v130; + v109 = 32; + LOBYTE(v120) = v120 + 1; + v128 = v70; + goto LABEL_257; + } + goto LABEL_259; + } +LABEL_256: + v76 = v130; + v109 = 16; + v128 = v70; + goto LABEL_257; + } + if ( v72 > 0 ) + goto LABEL_252; +LABEL_255: + if ( v13[4] > 1 ) + goto LABEL_256; + v76 = v130; + v128 = v70; + if ( v13[5] ) + v109 = 16; + else + v109 = v124; +LABEL_257: + *(_BYTE *)v118 = v120; + goto LABEL_167; + } + } + else + { + v117 = 0; + if ( !v59 || a1[1] + 1 >= a2 ) + { +LABEL_121: + v60 = 31; + if ( !v119 ) + goto LABEL_122; + goto LABEL_136; + } + } + ++v131; + ++v122; + v117 = 1; + goto LABEL_121; + } + v124 = 3 - v124; +LABEL_72: + if ( !v38 || v126 | v124 ) + goto LABEL_97; + v39 = v115; + v142[0] = 0; + if ( !v136 || v39 >= 1.0 ) + { + v40 = v39 + v39 + 7.0; + LODWORD(v125) = LODWORD(v40); + HIDWORD(v125) = HIDWORD(v40) - 54525952; + if ( v111 ) + { + v140 = 0; + v138 = v111; + goto LABEL_78; + } +LABEL_94: + v53 = v39 - 5.0; + if ( v53 > v125 ) + { + v126 = 2; + v106 = 0; + v128 = 0; + goto LABEL_104; + } + if ( -v125 > v53 ) + { +LABEL_132: + v106 = 0; + v34 = v32; + v128 = 0; + goto LABEL_133; + } + goto LABEL_96; + } + if ( !v111 ) + { + v52 = v39 + v39 + 7.0; + LODWORD(v125) = LODWORD(v52); + HIDWORD(v125) = HIDWORD(v52) - 54525952; + goto LABEL_94; + } + if ( v139 <= 0 ) + { +LABEL_96: + v124 = 0; + goto LABEL_97; + } + v39 = v39 * 10.0; + v138 = v139; + v140 = -1; + v95 = v39 * 3.0 + 7.0; + LODWORD(v125) = LODWORD(v95); + HIDWORD(v125) = HIDWORD(v95) - 54525952; +LABEL_78: + v41 = v125; + v42 = dbl_532898[v138]; + if ( !v135 ) + { + v86 = v41 * v42; + v141 = v20; + v34 = v32; + v87 = 0; + v142[0] = 1; + v88 = v39; + while ( 1 ) + { + v89 = (int)v88; + if ( (int)v88 ) + { + v87 = v38; + v88 = v88 - (long double)(int)v88; + } + v34 = (int *)((char *)v34 + 1); + v49 = v89 + 48; + *((_BYTE *)v34 - 1) = v49; + if ( v142[0] == v138 ) + break; + v88 = v88 * 10.0; + v87 = v38; + ++v142[0]; + } + v90 = v87; + v20 = v141; + if ( v90 ) + { + v94 = v86; + v92 = v88; + v93 = v94; + } + else + { + v91 = v86; + v92 = v39; + v93 = v91; + } + if ( v92 > v93 + 0.5 ) + { + v126 = v140 + 1; + goto LABEL_87; + } + if ( 0.5 - v93 > v92 ) + { + v126 = v140 + 1; + if ( v92 == 0.0 ) + v109 = 0; + else +LABEL_241: + v109 = 16; + while ( v49 == 48 ) + { + v49 = *((_BYTE *)v34 - 2); + v34 = (int *)((char *)v34 - 1); + } + goto LABEL_57; + } + goto LABEL_96; + } + v34 = (int *)((char *)v32 + 1); + *(_BYTE *)v32 = (int)v39 + 48; + v43 = 0.5 / v42 - v41; + v44 = v39 - (long double)(int)v39; + if ( v43 <= v44 ) + { + do + { + v48 = v43; + if ( v43 > 1.0 - v44 ) + { + v49 = *((_BYTE *)v34 - 1); + v126 = v140 + 1; + goto LABEL_87; + } + if ( (int)++v142[0] >= v138 ) + goto LABEL_96; + v34 = (int *)((char *)v34 + 1); + v45 = v44 * 10.0; + v46 = (int)v45; + v47 = v45 - (long double)(int)v45; + v43 = v48 * 10.0; + v44 = v47; + *((_BYTE *)v34 - 1) = v46 + 48; + } + while ( v43 <= v47 ); + } + v126 = v140 + 1; + if ( v44 == 0.0 ) + v109 = 0; + else + v109 = 16; +LABEL_57: + __Bfree_D2A((unsigned int)v13); + *(_BYTE *)v34 = 0; + *a7 = v126; + if ( a8 ) + *a8 = v34; + *a4 |= v109; + return v32; +} +// 532898: using guessed type double dbl_532898[]; +// 5328A0: using guessed type double __tens_D2A[24]; +// 532DA9: using guessed type void *off_532DA9; +// 458410: using guessed type unsigned int var_20[8]; + +//----- (00459A80) -------------------------------------------------------- +int *__cdecl __rv_alloc_D2A(unsigned int a1) +{ + int v1; // ebx + int v2; // eax + int *v3; // eax + + v1 = 0; + if ( a1 > 0x13 ) + { + v2 = 4; + do + { + v2 *= 2; + ++v1; + } + while ( v2 + 16 <= a1 ); + } + v3 = __Balloc_D2A(v1); + *v3 = v1; + return v3 + 1; +} + +//----- (00459AC0) -------------------------------------------------------- +int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, unsigned int a3) +{ + int v3; // eax + int v4; // edi + int *v5; // eax + char *v6; // edx + char v7; // cl + int *v8; // edi + _BYTE *v9; // eax + char v10; // cl + + if ( a3 <= 0x13 ) + { + v4 = 0; + } + else + { + v3 = 4; + v4 = 0; + do + { + v3 *= 2; + ++v4; + } + while ( v3 + 16 <= a3 ); + } + v5 = __Balloc_D2A(v4); + v6 = a1 + 1; + *v5 = v4; + v7 = *a1; + v8 = v5 + 1; + *((_BYTE *)v5 + 4) = *a1; + v9 = v5 + 1; + if ( v7 ) + { + do + { + v10 = *v6; + ++v9; + ++v6; + *v9 = v10; + } + while ( v10 ); + } + if ( a2 ) + *a2 = v9; + return v8; +} + +//----- (00459B40) -------------------------------------------------------- +void __cdecl __freedtoa(_DWORD *a1) +{ + int v1; // ecx + + v1 = *(a1 - 1); + *a1 = v1; + a1[1] = 1 << v1; + __Bfree_D2A((unsigned int)(a1 - 1)); +} + +//----- (00459B60) -------------------------------------------------------- +unsigned int __cdecl __quorem_D2A(int a1, int a2) +{ + int v2; // ebx + unsigned int result; // eax + unsigned int *v4; // esi + unsigned int v5; // edi + int v6; // eax + __int64 v7; // kr00_8 + __int64 v8; // rcx + int v9; // ecx + unsigned int *v10; // ebp + __int64 v11; // rcx + __int64 v12; // rax + _DWORD *v13; // edx + unsigned int v14; // eax + int v15; // edx + unsigned int v16; // [esp+1Ch] [ebp-50h] + __int64 v17; // [esp+20h] [ebp-4Ch] + __int64 v18; // [esp+30h] [ebp-3Ch] + _DWORD *v19; // [esp+38h] [ebp-34h] + int v20; // [esp+3Ch] [ebp-30h] + unsigned int v21; // [esp+40h] [ebp-2Ch] + unsigned int v22; // [esp+44h] [ebp-28h] + int v23; // [esp+48h] [ebp-24h] + _DWORD *v24; // [esp+4Ch] [ebp-20h] + + v2 = *(_DWORD *)(a2 + 16); + result = 0; + v23 = v2; + if ( *(_DWORD *)(a1 + 16) >= v2 ) + { + v4 = (unsigned int *)(a1 + 20); + v22 = a1 + 20; + v5 = a2 + 20; + v20 = v2 - 1; + v6 = 4 * (v2 - 1); + v16 = a2 + 20; + v24 = (_DWORD *)(a1 + 20 + v6); + v19 = (_DWORD *)(a2 + 20 + v6); + v21 = *v24 / (unsigned int)(*v19 + 1); + if ( *v24 >= (unsigned int)(*v19 + 1) ) + { + v18 = 0LL; + v17 = 0LL; + do + { + v5 += 4; + v7 = v18 + *(unsigned int *)(v5 - 4) * (unsigned __int64)v21; + v18 = HIDWORD(v7); + v8 = *v4++ - (v17 + (unsigned int)v7); + *(v4 - 1) = v8; + v17 = BYTE4(v8) & 1; + } + while ( (unsigned int)v19 >= v5 ); + if ( !*v24 ) + { + if ( v22 < (unsigned int)(v24 - 1) ) + { + v9 = v20; + do + { + if ( v24[v9 - v23] ) + break; + --v9; + } + while ( v23 - 2 - ((unsigned int)(v6 - 5) >> 2) != v9 ); + v20 = v9; + } + *(_DWORD *)(a1 + 16) = v20; + } + } + if ( __cmp_D2A(a1, a2) >= 0 ) + { + v10 = (unsigned int *)(a1 + 20); + v11 = 0LL; + ++v21; + do + { + v16 += 4; + v12 = *v10++ - (v11 + *(unsigned int *)(v16 - 4)); + *(v10 - 1) = v12; + v11 = BYTE4(v12) & 1; + } + while ( (unsigned int)v19 >= v16 ); + v13 = (_DWORD *)(v22 + 4 * v20); + if ( !*v13 ) + { + if ( v22 < (unsigned int)(v13 - 1) ) + { + v14 = v20 - 1 - (((unsigned int)v13 - a1 - 25) >> 2); + v15 = v20; + do + { + if ( *(_DWORD *)(v22 + 4 * v15 - 4) ) + break; + --v15; + } + while ( v15 != v14 ); + v20 = v15; + } + *(_DWORD *)(a1 + 16) = v20; + } + } + return v21; + } + return result; +} + +//----- (0045A000) -------------------------------------------------------- +int __cdecl __gthr_win32_once(__gthread_once_t *once, void (*func)(void)) +{ + if ( !once || !func ) + return 22; + if ( once->done ) + return 0; + if ( InterlockedIncrement(&once->started) ) + { + while ( !once->done ) + Sleep(0); + return 0; + } + func(); + once->done = 1; + return 0; +} + +//----- (0045A080) -------------------------------------------------------- +int __cdecl __gthr_win32_key_create(__gthread_key_t *key, void (*dtor)(void *)) +{ + DWORD v2; // eax + + v2 = TlsAlloc(); + if ( v2 == -1 ) + return GetLastError(); + *key = v2; + return __mingwthr_key_dtor(v2, (int)dtor); +} + +//----- (0045A0C0) -------------------------------------------------------- +int __cdecl __gthr_win32_key_delete(__gthread_key_t key) +{ + if ( TlsFree(key) ) + return 0; + else + return GetLastError(); +} + +//----- (0045A0F0) -------------------------------------------------------- +void *__cdecl __gthr_win32_getspecific(__gthread_key_t key) +{ + DWORD LastError; // esi + void *Value; // ebx + + LastError = GetLastError(); + Value = TlsGetValue(key); + SetLastError(LastError); + return Value; +} + +//----- (0045A120) -------------------------------------------------------- +int __cdecl __gthr_win32_setspecific(__gthread_key_t key, const void *ptr) +{ + if ( TlsSetValue(key, (LPVOID)ptr) ) + return 0; + else + return GetLastError(); +} + +//----- (0045A150) -------------------------------------------------------- +void __cdecl __gthr_win32_mutex_init_function(__gthread_mutex_t *mutex) +{ + mutex->counter = -1; + mutex->sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); +} + +//----- (0045A190) -------------------------------------------------------- +void __cdecl __gthr_win32_mutex_destroy(__gthread_mutex_t *mutex) +{ + CloseHandle(mutex->sema); +} + +//----- (0045A1B0) -------------------------------------------------------- +int __cdecl __gthr_win32_mutex_lock(__gthread_mutex_t *mutex) +{ + if ( !InterlockedIncrement(&mutex->counter) || !WaitForSingleObject(mutex->sema, 0xFFFFFFFF) ) + return 0; + InterlockedDecrement(&mutex->counter); + return 1; +} + +//----- (0045A200) -------------------------------------------------------- +int __cdecl __gthr_win32_mutex_trylock(__gthread_mutex_t *mutex) +{ + return _InterlockedCompareExchange(&mutex->counter, 0, -1) >= 0; +} + +//----- (0045A220) -------------------------------------------------------- +int __cdecl __gthr_win32_mutex_unlock(__gthread_mutex_t *mutex) +{ + LONG v1; // edx + int result; // eax + + v1 = InterlockedDecrement(&mutex->counter); + result = 0; + if ( v1 >= 0 ) + return !ReleaseSemaphore(mutex->sema, 1, 0); + return result; +} + +//----- (0045A270) -------------------------------------------------------- +void __cdecl __gthr_win32_recursive_mutex_init_function(__gthread_recursive_mutex_t *mutex) +{ + mutex->counter = -1; + mutex->depth = 0; + mutex->owner = 0; + mutex->sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); +} + +//----- (0045A2C0) -------------------------------------------------------- +int __cdecl __gthr_win32_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex) +{ + unsigned int CurrentThreadId; // esi + int result; // eax + + CurrentThreadId = GetCurrentThreadId(); + result = InterlockedIncrement(&mutex->counter); + if ( !result ) + goto LABEL_4; + if ( mutex->owner == CurrentThreadId ) + { + InterlockedDecrement(&mutex->counter); + ++mutex->depth; + return 0; + } + else + { + result = WaitForSingleObject(mutex->sema, 0xFFFFFFFF); + if ( !result ) + { +LABEL_4: + mutex->depth = 1; + mutex->owner = CurrentThreadId; + return result; + } + InterlockedDecrement(&mutex->counter); + return 1; + } +} + +//----- (0045A350) -------------------------------------------------------- +int __cdecl __gthr_win32_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex) +{ + unsigned int CurrentThreadId; // edx + int result; // eax + + CurrentThreadId = GetCurrentThreadId(); + if ( _InterlockedCompareExchange(&mutex->counter, 0, -1) < 0 ) + { + mutex->depth = 1; + result = 0; + mutex->owner = CurrentThreadId; + } + else + { + result = 1; + if ( mutex->owner == CurrentThreadId ) + { + ++mutex->depth; + return 0; + } + } + return result; +} + +//----- (0045A3A0) -------------------------------------------------------- +int __cdecl __gthr_win32_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex) +{ + bool v1; // zf + + v1 = mutex->depth-- == 1; + if ( v1 && (mutex->owner = 0, InterlockedDecrement(&mutex->counter) >= 0) ) + return !ReleaseSemaphore(mutex->sema, 1, 0); + else + return 0; +} + +//----- (0045A400) -------------------------------------------------------- +int __cdecl __gthr_win32_recursive_mutex_destroy(__gthread_recursive_mutex_t *mutex) +{ + CloseHandle(mutex->sema); + return 0; +} + +//----- (0045A420) -------------------------------------------------------- +char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4) +{ + int v6; // edx + char *result; // eax + _DWORD *v8; // eax + int v9; // edx + int v10; // ecx + int v11; // ebp + char v12; // dl + int v13; // edi + unsigned int v14; // ecx + int v15; // ebp + char v16; // dl + int v17; // edi + char v18; // di + + if ( a1 == 80 ) + { + v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); + v9 = *v8; + result = (char *)(v8 + 1); + *a4 = v9; + } + else + { + switch ( a1 & 0xF ) + { + case 0: + case 3: + case 0xB: + v6 = *a3; + result = (char *)(a3 + 1); + goto LABEL_4; + case 1: + result = (char *)a3; + v10 = 0; + v11 = 0; + do + { + v12 = *result++; + v13 = (v12 & 0x7F) << v10; + v10 += 7; + v11 |= v13; + } + while ( v12 < 0 ); + v6 = v11; + goto LABEL_4; + case 2: + v6 = *(unsigned __int16 *)a3; + result = (char *)a3 + 2; + goto LABEL_4; + case 4: + case 0xC: + v6 = *a3; + result = (char *)(a3 + 2); + goto LABEL_4; + case 9: + result = (char *)a3; + v14 = 0; + v15 = 0; + do + { + v16 = *result++; + v17 = (v16 & 0x7F) << v14; + v14 += 7; + v15 |= v17; + } + while ( v16 < 0 ); + v18 = v16; + v6 = v15; + if ( v14 > 0x1F || (v18 & 0x40) == 0 ) + goto LABEL_4; + v6 = (-1 << v14) | v15; + goto LABEL_5; + case 0xA: + v6 = *(__int16 *)a3; + result = (char *)a3 + 2; +LABEL_4: + if ( !v6 ) + goto LABEL_8; +LABEL_5: + if ( (a1 & 0x70) == 16 ) + a2 = a3; + v6 += (int)a2; + if ( a1 < 0 ) + *a4 = *(_DWORD *)v6; + else +LABEL_8: + *a4 = v6; + break; + default: + abort(); + } + } + return result; +} + +//----- (0045A560) -------------------------------------------------------- +int __usercall base_of_encoded_value@(char a1@, _DWORD *a2@) +{ + unsigned __int8 v2; // cl + + if ( a1 == -1 ) + return 0; + v2 = a1 & 0x70; + if ( (a1 & 0x70) != 48 ) + { + if ( v2 > 0x30u ) + { + if ( v2 == 64 ) + return a2[23]; + if ( v2 == 80 ) + return 0; + } + else + { + if ( v2 == 32 ) + return a2[21]; + if ( v2 <= 0x20u && (a1 & 0x60) == 0 ) + return 0; + } + base_of_encoded_value_cold(); + } + return a2[22]; +} + +//----- (0045A5D0) -------------------------------------------------------- +unsigned int __usercall execute_cfa_program@( + int *a1@, + unsigned int a2@, + _DWORD *a3@, + unsigned int a4) +{ + unsigned int result; // eax + unsigned int v6; // edx + int *encoded_value_with_base; // ebx + char v8; // cl + unsigned int v9; // eax + int v10; // ecx + char v11; // si + int v12; // edx + int v13; // edi + int v14; // ecx + unsigned int v15; // esi + char v16; // al + int v17; // edx + int v18; // edi + int v19; // ecx + char v20; // si + int v21; // edx + unsigned int v22; // eax + int v23; // ecx + char v24; // si + int v25; // edx + int **v26; // eax + int v27; // esi + int v28; // ecx + char v29; // dl + unsigned int v30; // eax + int v31; // ecx + char v32; // si + int v33; // edx + int v34; // edi + unsigned int v35; // ecx + unsigned int v36; // esi + char v37; // al + int v38; // edx + unsigned int v39; // edx + char v40; // si + unsigned int v41; // esi + int v42; // edi + unsigned int v43; // eax + int v44; // ecx + char v45; // si + int v46; // edx + int v47; // edi + int v48; // ecx + unsigned int v49; // esi + char v50; // al + int v51; // edx + int v52; // eax + unsigned int v53; // ecx + char v54; // si + int v55; // edx + int v56; // eax + int v57; // ecx + char v58; // si + int v59; // edx + int v60; // esi + unsigned int v61; // ecx + char v62; // dl + int v63; // eax + int v64; // esi + unsigned int v65; // eax + int v66; // ecx + char v67; // si + int v68; // edx + int v69; // edi + unsigned int v70; // ecx + unsigned int v71; // esi + char v72; // al + int v73; // edx + unsigned int v74; // edx + char v75; // si + unsigned int v76; // esi + int v77; // edi + unsigned int v78; // eax + int v79; // ecx + char v80; // si + int v81; // edx + int **v82; // eax + int v83; // esi + int v84; // ecx + char v85; // dl + int v86; // ecx + char v87; // si + int v88; // edx + int v89; // ecx + char v90; // si + int v91; // edx + int v92; // eax + int v93; // ecx + char v94; // si + int v95; // edx + int v96; // esi + int v97; // ecx + char v98; // dl + int v99; // eax + unsigned int v100; // eax + int v101; // ecx + char v102; // si + int v103; // edx + int v104; // edi + int v105; // ecx + unsigned int v106; // esi + char v107; // al + int v108; // edx + int v109; // ecx + char v110; // si + int v111; // edx + int v112; // ecx + char v113; // si + int v114; // edx + int v115; // ecx + char v116; // si + int v117; // edx + unsigned int v118; // eax + int v119; // ecx + char v120; // si + int v121; // edx + int v122; // edi + int v123; // ecx + unsigned int v124; // esi + char v125; // al + int v126; // edx + int v127; // esi + int v128; // ecx + int v129; // edi + char v130; // dl + int v131; // eax + int v132; // esi + int v133; // esi + int v134; // ecx + char v135; // dl + char v136; // si + int *v137; // eax + int v138; // edi + void *v139; // esp + void *v140; // esp + int v141; // [esp-A0h] [ebp-E8h] BYREF + unsigned int v142; // [esp+10h] [ebp-38h] + unsigned int v143; // [esp+14h] [ebp-34h] + _DWORD *v144; // [esp+18h] [ebp-30h] + unsigned int v145; // [esp+1Ch] [ebp-2Ch] + unsigned int v146[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + result = a4; + v143 = a2; + v144 = a3; + *(_DWORD *)(a4 + 144) = 0; + v142 = 0; + if ( (unsigned int)a1 < a2 ) + { + while ( 1 ) + { + v6 = *(_DWORD *)(a4 + 164); + v145 = v144[24]; + result = v144[19] + (v145 >> 31); + if ( v6 >= result ) + break; + result = *(unsigned __int8 *)a1; + encoded_value_with_base = (int *)((char *)a1 + 1); + v8 = *(_BYTE *)a1 & 0xC0; + switch ( v8 ) + { + case 64: + result = *(_DWORD *)(a4 + 176) * (result & 0x3F); + *(_DWORD *)(a4 + 164) = result + v6; + break; + case -128: + v127 = 0; + v128 = 0; + v129 = result & 0x3F; + LOBYTE(v145) = result & 0x3F; + do + { + v130 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v131 = (v130 & 0x7F) << v128; + v128 += 7; + v127 |= v131; + } + while ( v130 < 0 ); + result = a4; + v132 = *(_DWORD *)(a4 + 172) * v127; + if ( (unsigned __int8)v145 <= 0x11u ) + { + result = a4 + 8 * v129; + *(_DWORD *)(result + 4) = 1; + *(_DWORD *)result = v132; + } + break; + case -64: + result &= 0x3Fu; + if ( (*(_BYTE *)a1 & 0x3Fu) <= 0x11 ) +LABEL_108: + *(_DWORD *)(a4 + 8 * result + 4) = 0; + break; + default: + switch ( (char)result ) + { + case 0: + case 45: + goto LABEL_13; + case 1: + v136 = *(_BYTE *)(a4 + 184); + v137 = (int *)base_of_encoded_value(v136, v144); + encoded_value_with_base = (int *)read_encoded_value_with_base( + v136, + v137, + encoded_value_with_base, + (int *)v146); + result = v146[0]; + *(_DWORD *)(a4 + 164) = v146[0]; + goto LABEL_13; + case 2: + encoded_value_with_base = (int *)((char *)a1 + 2); + result = *(_DWORD *)(a4 + 176) * *((unsigned __int8 *)a1 + 1); + *(_DWORD *)(a4 + 164) = result + v6; + goto LABEL_13; + case 3: + encoded_value_with_base = (int *)((char *)a1 + 3); + result = *(_DWORD *)(a4 + 176) * *(unsigned __int16 *)((char *)a1 + 1); + *(_DWORD *)(a4 + 164) = result + v6; + goto LABEL_13; + case 4: + encoded_value_with_base = (int *)((char *)a1 + 5); + result = a4; + *(_DWORD *)(a4 + 164) = *(int *)((char *)a1 + 1) * *(_DWORD *)(a4 + 176) + v6; + goto LABEL_13; + case 5: + v118 = 0; + v119 = 0; + do + { + v120 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v121 = (v120 & 0x7F) << v119; + v119 += 7; + v118 |= v121; + } + while ( v120 < 0 ); + v122 = 0; + v123 = 0; + v124 = v118; + do + { + v125 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v126 = (v125 & 0x7F) << v123; + v123 += 7; + v122 |= v126; + } + while ( v125 < 0 ); + result = v124; + v76 = a4; + v77 = *(_DWORD *)(a4 + 172) * v122; + if ( result <= 0x11 ) + goto LABEL_105; + goto LABEL_13; + case 6: + result = 0; + v115 = 0; + do + { + v116 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v117 = (v116 & 0x7F) << v115; + v115 += 7; + result |= v117; + } + while ( v116 < 0 ); + if ( result > 0x11 ) + goto LABEL_13; + goto LABEL_108; + case 7: + result = 0; + v112 = 0; + do + { + v113 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v114 = (v113 & 0x7F) << v112; + v112 += 7; + result |= v114; + } + while ( v113 < 0 ); + if ( result <= 0x11 ) + *(_DWORD *)(a4 + 8 * result + 4) = 6; + goto LABEL_13; + case 8: + result = 0; + v109 = 0; + do + { + v110 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v111 = (v110 & 0x7F) << v109; + v109 += 7; + result |= v111; + } + while ( v110 < 0 ); + if ( result > 0x11 ) + goto LABEL_13; + goto LABEL_108; + case 9: + v100 = 0; + v101 = 0; + do + { + v102 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v103 = (v102 & 0x7F) << v101; + v101 += 7; + v100 |= v103; + } + while ( v102 < 0 ); + v104 = 0; + v105 = 0; + v106 = v100; + do + { + v107 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v108 = (v107 & 0x7F) << v105; + v105 += 7; + v104 |= v108; + } + while ( v107 < 0 ); + result = v106; + if ( v106 <= 0x11 ) + { + result = a4 + 8 * v106; + *(_DWORD *)(result + 4) = 2; + *(_DWORD *)result = v104; + } + goto LABEL_13; + case 10: + result = v142; + if ( v142 ) + { + v142 = *(_DWORD *)(v142 + 144); + } + else + { + v139 = alloca(176); + v140 = alloca(176); + result = (unsigned int)&v141; + } + qmemcpy((void *)result, (const void *)a4, 0xA4u); + *(_DWORD *)(a4 + 144) = result; + goto LABEL_13; + case 11: + result = *(_DWORD *)(a4 + 144); + qmemcpy((void *)a4, (const void *)result, 0xA4u); + v138 = v142; + v142 = result; + *(_DWORD *)(result + 144) = v138; + goto LABEL_13; + case 12: + v92 = 0; + v93 = 0; + do + { + v94 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v95 = (v94 & 0x7F) << v93; + v93 += 7; + v92 |= v95; + } + while ( v94 < 0 ); + v96 = 0; + v97 = 0; + *(_DWORD *)(a4 + 152) = v92; + do + { + v98 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v99 = (v98 & 0x7F) << v97; + v97 += 7; + v96 |= v99; + } + while ( v98 < 0 ); + result = a4; + *(_DWORD *)(a4 + 148) = v96; + *(_DWORD *)(a4 + 160) = 1; + goto LABEL_13; + case 13: + result = 0; + v89 = 0; + do + { + v90 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v91 = (v90 & 0x7F) << v89; + v89 += 7; + result |= v91; + } + while ( v90 < 0 ); + *(_DWORD *)(a4 + 152) = result; + *(_DWORD *)(a4 + 160) = 1; + goto LABEL_13; + case 14: + result = 0; + v86 = 0; + do + { + v87 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v88 = (v87 & 0x7F) << v86; + v86 += 7; + result |= v88; + } + while ( v87 < 0 ); + *(_DWORD *)(a4 + 148) = result; + goto LABEL_13; + case 15: + v133 = 0; + v134 = 0; + *(_DWORD *)(a4 + 156) = encoded_value_with_base; + *(_DWORD *)(a4 + 160) = 2; + do + { + v135 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + result = (v135 & 0x7F) << v134; + v134 += 7; + v133 |= result; + } + while ( v135 < 0 ); + encoded_value_with_base = (int *)((char *)encoded_value_with_base + v133); + goto LABEL_13; + case 16: + v78 = 0; + v79 = 0; + do + { + v80 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v81 = (v80 & 0x7F) << v79; + v79 += 7; + v78 |= v81; + } + while ( v80 < 0 ); + if ( v78 <= 0x11 ) + { + v82 = (int **)(a4 + 8 * v78); + v82[1] = (int *)3; + *v82 = encoded_value_with_base; + } + v83 = 0; + v84 = 0; + do + { + v85 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + result = (v85 & 0x7F) << v84; + v84 += 7; + v83 |= result; + } + while ( v85 < 0 ); + encoded_value_with_base = (int *)((char *)encoded_value_with_base + v83); + goto LABEL_13; + case 17: + v65 = 0; + v66 = 0; + do + { + v67 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v68 = (v67 & 0x7F) << v66; + v66 += 7; + v65 |= v68; + } + while ( v67 < 0 ); + v69 = 0; + v70 = 0; + v71 = v65; + do + { + v72 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v73 = (v72 & 0x7F) << v70; + v70 += 7; + v69 |= v73; + } + while ( v72 < 0 ); + v74 = v71; + v75 = v72; + result = v74; + if ( v70 <= 0x1F && (v75 & 0x40) != 0 ) + v69 |= -(1 << v70); + v76 = a4; + v77 = *(_DWORD *)(a4 + 172) * v69; + if ( v74 > 0x11 ) + goto LABEL_13; +LABEL_105: + result = v76 + 8 * result; + *(_DWORD *)(result + 4) = 1; + *(_DWORD *)result = v77; + goto LABEL_13; + case 18: + v56 = 0; + v57 = 0; + do + { + v58 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v59 = (v58 & 0x7F) << v57; + v57 += 7; + v56 |= v59; + } + while ( v58 < 0 ); + v60 = 0; + v61 = 0; + *(_DWORD *)(a4 + 152) = v56; + do + { + v62 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v63 = (v62 & 0x7F) << v61; + v61 += 7; + v60 |= v63; + } + while ( v62 < 0 ); + if ( v61 <= 0x1F && (v62 & 0x40) != 0 ) + v60 |= -(1 << v61); + result = a4; + v64 = *(_DWORD *)(a4 + 172) * v60; + *(_DWORD *)(a4 + 160) = 1; + *(_DWORD *)(a4 + 148) = v64; + goto LABEL_13; + case 19: + v52 = 0; + v53 = 0; + do + { + v54 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v55 = (v54 & 0x7F) << v53; + v53 += 7; + v52 |= v55; + } + while ( v54 < 0 ); + if ( v53 <= 0x1F && (v54 & 0x40) != 0 ) + v52 |= -(1 << v53); + result = *(_DWORD *)(a4 + 172) * v52; + *(_DWORD *)(a4 + 148) = result; + goto LABEL_13; + case 20: + v43 = 0; + v44 = 0; + do + { + v45 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v46 = (v45 & 0x7F) << v44; + v44 += 7; + v43 |= v46; + } + while ( v45 < 0 ); + v47 = 0; + v48 = 0; + v49 = v43; + do + { + v50 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v51 = (v50 & 0x7F) << v48; + v48 += 7; + v47 |= v51; + } + while ( v50 < 0 ); + result = v49; + v41 = a4; + v42 = *(_DWORD *)(a4 + 172) * v47; + if ( result <= 0x11 ) + goto LABEL_40; + goto LABEL_13; + case 21: + v30 = 0; + v31 = 0; + do + { + v32 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v33 = (v32 & 0x7F) << v31; + v31 += 7; + v30 |= v33; + } + while ( v32 < 0 ); + v34 = 0; + v35 = 0; + v36 = v30; + do + { + v37 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v38 = (v37 & 0x7F) << v35; + v35 += 7; + v34 |= v38; + } + while ( v37 < 0 ); + v39 = v36; + v40 = v37; + result = v39; + if ( v35 <= 0x1F && (v40 & 0x40) != 0 ) + v34 |= -(1 << v35); + v41 = a4; + v42 = *(_DWORD *)(a4 + 172) * v34; + if ( v39 > 0x11 ) + goto LABEL_13; +LABEL_40: + result = v41 + 8 * result; + *(_DWORD *)(result + 4) = 4; + *(_DWORD *)result = v42; + goto LABEL_13; + case 22: + v22 = 0; + v23 = 0; + do + { + v24 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v25 = (v24 & 0x7F) << v23; + v23 += 7; + v22 |= v25; + } + while ( v24 < 0 ); + if ( v22 <= 0x11 ) + { + v26 = (int **)(a4 + 8 * v22); + v26[1] = (int *)5; + *v26 = encoded_value_with_base; + } + v27 = 0; + v28 = 0; + do + { + v29 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + result = (v29 & 0x7F) << v28; + v28 += 7; + v27 |= result; + } + while ( v29 < 0 ); + encoded_value_with_base = (int *)((char *)encoded_value_with_base + v27); + goto LABEL_13; + case 46: + result = 0; + v19 = 0; + do + { + v20 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v21 = (v20 & 0x7F) << v19; + v19 += 7; + result |= v21; + } + while ( v20 < 0 ); + v144[26] = result; + if ( v143 <= (unsigned int)encoded_value_with_base ) + return result; + goto LABEL_14; + case 47: + v9 = 0; + v10 = 0; + do + { + v11 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v12 = (v11 & 0x7F) << v10; + v10 += 7; + v9 |= v12; + } + while ( v11 < 0 ); + v13 = 0; + v14 = 0; + v15 = v9; + do + { + v16 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v17 = (v16 & 0x7F) << v14; + v14 += 7; + v13 |= v17; + } + while ( v16 < 0 ); + result = v15; + v18 = *(_DWORD *)(a4 + 172) * v13; + if ( v15 <= 0x11 ) + { + result = a4 + 8 * v15; + *(_DWORD *)(result + 4) = 1; + *(_DWORD *)result = -v18; + } + goto LABEL_13; + default: + abort(); + } + } +LABEL_13: + if ( v143 <= (unsigned int)encoded_value_with_base ) + break; +LABEL_14: + a1 = encoded_value_with_base; + } + } + return result; +} +// 45A5D0: using guessed type unsigned int var_1C[7]; + +//----- (0045AD70) -------------------------------------------------------- +void init_dwarf_reg_size_table() +{ + dwarf_reg_size_table[0] = 4; + dwarf_reg_size_table[2] = 4; + dwarf_reg_size_table[1] = 4; + dwarf_reg_size_table[3] = 4; + dwarf_reg_size_table[6] = 4; + dwarf_reg_size_table[7] = 4; + dwarf_reg_size_table[5] = 4; + dwarf_reg_size_table[4] = 4; + dwarf_reg_size_table[11] = 12; + dwarf_reg_size_table[12] = 12; + dwarf_reg_size_table[13] = 12; + dwarf_reg_size_table[14] = 12; + dwarf_reg_size_table[15] = 12; + dwarf_reg_size_table[16] = 12; + dwarf_reg_size_table[9] = 4; + dwarf_reg_size_table[8] = 4; +} + +//----- (0045ADF0) -------------------------------------------------------- +int __usercall uw_frame_state_for@(dwarf_eh_bases *a1@, _DWORD *a2@) +{ + char *dbase; // edx + char *v5; // ebx + char v6; // dl + int v7; // edi + int v8; // ecx + int v9; // eax + unsigned int v10; // ecx + int v11; // edi + char *v12; // esi + char v13; // dl + int v14; // eax + int v15; // ecx + int v16; // edi + char v17; // dl + int v18; // eax + char v19; // al + char *encoded_value_with_base; // ecx + char *v21; // edi + char v22; // al + char v23; // al + unsigned __int8 v24; // al + int v25; // ebx + int *v26; // ebx + int v27; // edi + int v28; // ecx + char v29; // dl + int v30; // eax + int *v31; // edi + int result; // eax + int v33; // eax + char v34; // al + char v35; // bl + int *v36; // eax + char *v37; // edx + _DWORD *tbase; // ecx + char v39; // al + int *v40; // eax + int v41; // edi + int v42; // ecx + char v43; // dl + int v44; // eax + int *v45; // eax + int v46; // eax + int v47; // edx + int v48; // ecx + char v49; // al + const fde *FDE; // [esp+18h] [ebp-44h] + int v51; // [esp+1Ch] [ebp-40h] + char v52; // [esp+1Ch] [ebp-40h] + char *v53; // [esp+1Ch] [ebp-40h] + int v54; // [esp+20h] [ebp-3Ch] + unsigned __int8 v55; // [esp+24h] [ebp-38h] + int *v56; // [esp+24h] [ebp-38h] + unsigned int v57; // [esp+28h] [ebp-34h] + int v58[8]; // [esp+3Ch] [ebp-20h] BYREF + + memset(a2, 0, 0xC0u); + a1[8].func = 0; + a1[6].func = 0; + dbase = (char *)a1[6].dbase; + if ( !dbase ) + return 5; + FDE = _Unwind_Find_FDE(&dbase[((unsigned int)a1[8].tbase >> 31) - 1], a1 + 7); + if ( !FDE ) + { + v37 = (char *)a1[6].dbase; + tbase = a1[6].tbase; + v39 = *(v37 - 5); + if ( *(v37 - 2) == -1 && *(v37 - 1) == -48 && *v37 == -125 && v37[1] == -8 ) + goto LABEL_81; + if ( v39 == -24 ) + { + v49 = *v37; + if ( *(v37 - 4) == 104 && v49 == -61 ) + { +LABEL_81: + v46 = *(_DWORD *)(*tbase + 4); + goto LABEL_72; + } + if ( v49 == -125 ) + { + result = 5; + if ( v37[1] != -60 || v37[3] != -72 ) + return result; + v46 = tbase[14]; +LABEL_72: + v47 = *(_DWORD *)(v46 + 196); + a2[1] = 1; + a2[40] = 1; + a2[7] = 1; + a2[38] = 4; + a2[37] = v47 - (_DWORD)tbase; + *a2 = v46 + 176 - v47; + a2[3] = 1; + a2[6] = v46 + 164 - v47; + a2[5] = 1; + a2[2] = v46 + 172 - v47; + a2[13] = 1; + a2[4] = v46 + 168 - v47; + a2[15] = 1; + a2[12] = v46 + 160 - v47; + a2[11] = 1; + a2[14] = v46 + 156 - v47; + v48 = v46 + 180 - v47; + a2[17] = 1; + a2[16] = v46 + 184 - v47; + result = 0; + a2[10] = v48; + a2[45] = 8; + *((_BYTE *)a2 + 187) = 1; + return result; + } + } + else if ( v39 == -117 && *(v37 - 4) == 77 && *v37 == 100 ) + { + if ( v37[1] == -117 ) + { + v46 = tbase[2]; + goto LABEL_72; + } + return 5; + } + if ( *(v37 - 1) == -125 && *v37 == 9 && !v37[1] && v37[2] == 45 && !v37[3] && v37[4] == 16 && !v37[5] ) + { + a2[40] = 1; + result = 0; + a2[38] = 4; + a2[37] = 4; + a2[3] = 1; + a2[2] = -4; + a2[45] = 8; + a2[17] = 1; + a2[16] = 0; + *((_BYTE *)a2 + 187) = 1; + return result; + } + return 5; + } + a2[41] = a1[7].func; + v54 = (int)&FDE->CIE_delta - FDE->CIE_delta; + v51 = v54 + 9; + v5 = (char *)(v51 + strlen((const char *)v51) + 1); + if ( *(_BYTE *)(v54 + 9) == 101 && *(_BYTE *)(v54 + 10) == 104 ) + { + v33 = *(_DWORD *)v5; + v5 += 4; + a2[47] = v33; + v51 = v54 + 11; + } + v6 = *v5; + v55 = *(_BYTE *)(v54 + 8); + if ( v55 > 3u ) + { + if ( v6 != 4 || v5[1] ) + return 3; + v6 = v5[2]; + v5 += 2; + } + v7 = 0; + v8 = 0; + while ( 1 ) + { + ++v5; + v9 = (v6 & 0x7F) << v8; + v8 += 7; + v7 |= v9; + if ( v6 >= 0 ) + break; + v6 = *v5; + } + v57 = (unsigned int)a2; + v10 = 0; + a2[44] = v7; + v11 = 0; + do + { + v12 = v5; + v13 = *v5++; + v14 = (v13 & 0x7F) << v10; + v10 += 7; + v11 |= v14; + } + while ( v13 < 0 ); + if ( v10 <= 0x1F && (v13 & 0x40) != 0 ) + v11 |= -1 << v10; + v15 = 0; + *(_DWORD *)(v57 + 172) = v11; + v16 = 0; + if ( v55 == 1 ) + { + *(_DWORD *)(v57 + 180) = (unsigned __int8)*v5; + v5 = v12 + 2; + } + else + { + do + { + v17 = *v5++; + v18 = (v17 & 0x7F) << v15; + v15 += 7; + v16 |= v18; + } + while ( v17 < 0 ); + *(_DWORD *)(v57 + 180) = v16; + } + *(_BYTE *)(v57 + 185) = -1; + v19 = *(_BYTE *)v51; + if ( *(_BYTE *)v51 == 122 ) + { + v41 = 0; + v42 = 0; + do + { + v43 = *v5++; + v44 = (v43 & 0x7F) << v42; + v42 += 7; + v41 |= v44; + } + while ( v43 < 0 ); + *(_BYTE *)(v57 + 186) = 1; + v56 = (int *)&v5[v41]; + v19 = *(_BYTE *)(v51 + 1); + if ( !v19 ) + goto LABEL_27; + ++v51; + } + else + { + v56 = 0; + if ( !v19 ) + { + v56 = (int *)v5; + goto LABEL_27; + } + } + encoded_value_with_base = v5; + v21 = (char *)(v51 + 1); + do + { + while ( v19 == 76 ) + { + v22 = *encoded_value_with_base; + ++v21; + ++encoded_value_with_base; + *(_BYTE *)(v57 + 185) = v22; + v19 = *(v21 - 1); + if ( !v19 ) + goto LABEL_26; + } + switch ( v19 ) + { + case 'R': + v34 = *encoded_value_with_base++; + *(_BYTE *)(v57 + 184) = v34; + break; + case 'P': + v35 = *encoded_value_with_base; + v53 = encoded_value_with_base; + v36 = (int *)base_of_encoded_value(*encoded_value_with_base, a1); + encoded_value_with_base = read_encoded_value_with_base(v35, v36, (int *)(v53 + 1), v58); + *(_DWORD *)(v57 + 168) = v58[0]; + break; + case 'S': + *(_BYTE *)(v57 + 187) = 1; + break; + default: + goto LABEL_55; + } + v19 = *v21++; + } + while ( v19 ); +LABEL_26: + if ( !v56 ) + { + v56 = (int *)encoded_value_with_base; +LABEL_55: + if ( !v56 ) + return 3; + } +LABEL_27: + execute_cfa_program(v56, v54 + *(_DWORD *)v54 + 4, a1, v57); + v23 = *(_BYTE *)(v57 + 184); + if ( v23 == -1 ) + { + v25 = 8; + goto LABEL_33; + } + v24 = v23 & 7; + if ( v24 == 2 ) + { + v25 = 12; + goto LABEL_33; + } + if ( v24 <= 2u ) + { + if ( v24 ) + goto LABEL_90; +LABEL_46: + v25 = 16; + goto LABEL_33; + } + if ( v24 == 3 ) + goto LABEL_46; + if ( v24 != 4 ) +LABEL_90: + uw_frame_state_for_cold(); + v25 = 24; +LABEL_33: + v26 = (int *)((char *)FDE + v25); + v52 = *(_BYTE *)(v57 + 185); + if ( *(_BYTE *)(v57 + 186) ) + { + v27 = 0; + v28 = 0; + do + { + v29 = *(_BYTE *)v26; + v26 = (int *)((char *)v26 + 1); + v30 = (v29 & 0x7F) << v28; + v28 += 7; + v27 |= v30; + } + while ( v29 < 0 ); + v31 = (int *)((char *)v26 + v27); + if ( v52 != -1 ) + { + v45 = (int *)base_of_encoded_value(v52, a1); + read_encoded_value_with_base(v52, v45, v26, v58); + a1[6].func = (void *)v58[0]; + } + } + else + { + v31 = v26; + if ( v52 != -1 ) + { + v40 = (int *)base_of_encoded_value(v52, a1); + v31 = (int *)read_encoded_value_with_base(v52, v40, v26, v58); + a1[6].func = (void *)v58[0]; + } + } + execute_cfa_program(v31, (unsigned int)&FDE->CIE_delta + FDE->length, a1, v57); + return 0; +} + +//----- (0045B480) -------------------------------------------------------- +int __usercall uw_install_context_1@(int a1@, int a2@) +{ + int v2; // eax + int v3; // eax + _DWORD *v4; // ecx + _BYTE *v5; // esi + int v6; // ebp + int result; // eax + _DWORD *v8; // eax + int v10; // [esp+1Ch] [ebp-20h] BYREF + + v2 = *(_DWORD *)(a2 + 96); + if ( ((v2 & 0x40000000) == 0 || !*(_BYTE *)(a2 + 112)) && !*(_DWORD *)(a2 + 16) ) + { + if ( dwarf_reg_size_table[4] != 4 ) + goto LABEL_32; + v10 = *(_DWORD *)(a2 + 72); + if ( (v2 & 0x40000000) != 0 ) + *(_BYTE *)(a2 + 112) = 0; + *(_DWORD *)(a2 + 16) = &v10; + } + v3 = 0; + do + { + while ( 1 ) + { + v4 = *(_DWORD **)(a1 + 4 * v3); + v5 = *(_BYTE **)(a2 + 4 * v3); + if ( *(_BYTE *)(a1 + v3 + 108) ) + goto LABEL_32; + if ( *(_BYTE *)(a2 + v3 + 108) ) + { + if ( v4 ) + { + if ( dwarf_reg_size_table[v3] != 4 ) + goto LABEL_32; + *v4 = v5; + } + goto LABEL_8; + } + if ( v4 != 0 && v5 != 0 && v4 != (_DWORD *)v5 ) + break; +LABEL_8: + if ( ++v3 == 17 ) + goto LABEL_18; + } + v6 = dwarf_reg_size_table[v3]; + if ( (unsigned __int8)v6 <= 3u ) + { + if ( dwarf_reg_size_table[v3] ) + { + *(_BYTE *)v4 = *v5; + if ( (v6 & 2) != 0 ) + *(_WORD *)((char *)v4 + v6 - 2) = *(_WORD *)&v5[v6 - 2]; + } + goto LABEL_8; + } + ++v3; + *v4 = *(_DWORD *)v5; + *(_DWORD *)((char *)v4 + v6 - 4) = *(_DWORD *)&v5[v6 - 4]; + qmemcpy( + (void *)((unsigned int)(v4 + 1) & 0xFFFFFFFC), + (const void *)(v5 - ((char *)v4 - ((unsigned int)(v4 + 1) & 0xFFFFFFFC))), + 4 * (((unsigned int)v4 + v6 - ((unsigned int)(v4 + 1) & 0xFFFFFFFC)) >> 2)); + } + while ( v3 != 17 ); +LABEL_18: + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 && *(_BYTE *)(a1 + 112) ) + return 0; + result = 0; + if ( !*(_DWORD *)(a1 + 16) ) + { + v8 = *(_DWORD **)(a2 + 16); + if ( (*(_BYTE *)(a2 + 99) & 0x40) != 0 && *(_BYTE *)(a2 + 112) ) + return (int)v8 + *(_DWORD *)(a2 + 104) - *(_DWORD *)(a1 + 72); + if ( dwarf_reg_size_table[4] == 4 ) + { + v8 = (_DWORD *)*v8; + return (int)v8 + *(_DWORD *)(a2 + 104) - *(_DWORD *)(a1 + 72); + } +LABEL_32: + uw_install_context_1_cold(); + } + return result; +} + +//----- (0045B610) -------------------------------------------------------- +int __usercall execute_stack_op@(char *a1@, unsigned int a2@, int a3@, int a4) +{ + int result; // eax + int v6; // ebp + int v7; // eax + char v8; // dl + char *v9; // esi + int v10; // edi + unsigned int v11; // ecx + char v12; // bl + int v13; // edx + int v14; // eax + _DWORD *v15; // esi + int v16; // esi + int v17; // edi + int v18; // eax + int v19; // ecx + int v20; // esi + int v21; // esi + int v22; // eax + int v23; // ecx + int v24; // edx + char v25; // si + int *v26; // eax + char *v27; // eax + int v28; // ebx + int v29; // esi + int v30; // ecx + int v31; // ecx + unsigned __int8 v32; // al + int v33; // edi + int v34; // ecx + char v35; // dl + int v36; // eax + int v37; // esi + unsigned int v38; // ecx + char v39; // al + int v40; // edx + _DWORD *v41; // eax + unsigned int v42; // ecx + char v43; // dl + int v44; // eax + int v45; // edi + int v46; // ecx + char v47; // dl + int v48; // eax + int v49; // ecx + char v50; // dl + int v51; // eax + char *v52; // [esp+14h] [ebp-138h] + char *v53; // [esp+14h] [ebp-138h] + int v56; // [esp+28h] [ebp-124h] + int v57; // [esp+2Ch] [ebp-120h] BYREF + int v58[71]; // [esp+30h] [ebp-11Ch] + + result = a4; + v58[0] = a4; + if ( (unsigned int)a1 < a2 ) + { + v6 = 1; + while ( 2 ) + { + v52 = a1 + 1; + v7 = (unsigned __int8)*a1; + v8 = *a1; + switch ( (char)v7 ) + { + case 3: + case 12: + case 13: + v16 = *(_DWORD *)(a1 + 1); + v17 = v6; + a1 += 5; + goto LABEL_16; + case 6: + case 25: + case 31: + case 32: + case 35: + case -108: + if ( !v6 ) + goto LABEL_121; + v17 = v6 - 1; + v21 = v58[v6 - 1]; + if ( (unsigned __int8)v7 <= 0x23u ) + { + switch ( v8 ) + { + case 6: + v16 = *(_DWORD *)v21; + ++a1; + goto LABEL_16; + case 25: + ++a1; + v16 = abs32(v21); + goto LABEL_16; + case 31: + ++a1; + v16 = -v21; + goto LABEL_16; + case 32: + ++a1; + v16 = ~v21; + goto LABEL_16; + case 35: + v22 = 0; + v23 = 0; + do + { + v24 = (*v52++ & 0x7F) << v23; + v23 += 7; + v22 |= v24; + } + while ( *(v52 - 1) < 0 ); + a1 = v52; + v16 = v22 + v21; + goto LABEL_16; + default: + goto _execute_stack_op_cold; + } + } + if ( (_BYTE)v7 != 0x94 ) + goto _execute_stack_op_cold; + v32 = a1[1]; + if ( v32 == 4 ) + goto LABEL_116; + if ( v32 > 4u ) + { + if ( v32 != 8 ) +_execute_stack_op_cold: + abort(); +LABEL_116: + v16 = *(_DWORD *)v21; + a1 += 2; + } + else if ( v32 == 1 ) + { + v16 = *(unsigned __int8 *)v21; + a1 += 2; + } + else + { + if ( v32 != 2 ) + goto _execute_stack_op_cold; + v16 = *(unsigned __int16 *)v21; + a1 += 2; + } +LABEL_16: + if ( v17 > 63 ) + goto LABEL_121; + v58[v17] = v16; + v6 = v17 + 1; +LABEL_18: + if ( a2 > (unsigned int)a1 ) + continue; + if ( !v6 ) +LABEL_121: + abort(); + result = v58[v6 - 1]; + break; + case 8: + v16 = (unsigned __int8)a1[1]; + v17 = v6; + a1 += 2; + goto LABEL_16; + case 9: + v16 = a1[1]; + v17 = v6; + a1 += 2; + goto LABEL_16; + case 10: + v16 = *(unsigned __int16 *)(a1 + 1); + v17 = v6; + a1 += 3; + goto LABEL_16; + case 11: + v16 = *(__int16 *)(a1 + 1); + v17 = v6; + a1 += 3; + goto LABEL_16; + case 14: + case 15: + v16 = *(_DWORD *)(a1 + 1); + v17 = v6; + a1 += 9; + goto LABEL_16; + case 16: + ++a1; + v16 = 0; + v49 = 0; + do + { + v50 = *a1++; + v51 = (v50 & 0x7F) << v49; + v49 += 7; + v16 |= v51; + } + while ( v50 < 0 ); + v17 = v6; + goto LABEL_16; + case 17: + ++a1; + v16 = 0; + v42 = 0; + do + { + v43 = *a1++; + v44 = (v43 & 0x7F) << v42; + v42 += 7; + v16 |= v44; + } + while ( v43 < 0 ); + v17 = v6; + if ( v42 <= 0x1F && (v43 & 0x40) != 0 ) + v16 |= -(1 << v42); + goto LABEL_16; + case 18: + if ( !v6 ) + goto LABEL_121; + v16 = v58[v6 - 1]; + ++a1; + v17 = v6; + goto LABEL_16; + case 19: + if ( !v6 ) + goto LABEL_121; + ++a1; + --v6; + goto LABEL_18; + case 20: + if ( v6 <= 1 ) + goto LABEL_121; + v16 = *(&v56 + v6); + ++a1; + v17 = v6; + goto LABEL_16; + case 21: + v31 = (unsigned __int8)a1[1]; + if ( v31 >= v6 - 1 ) + goto LABEL_121; + v17 = v6; + a1 += 2; + v16 = v58[v6 - 1 - v31]; + goto LABEL_16; + case 22: + if ( v6 <= 1 ) + goto LABEL_121; + v30 = v58[v6 - 1]; + v58[v6 - 1] = v58[v6 - 2]; + ++a1; + v58[v6 - 2] = v30; + goto LABEL_18; + case 23: + if ( v6 <= 2 ) + goto LABEL_121; + v28 = v58[v6 - 1]; + v29 = v58[v6 - 3]; + v58[v6 - 1] = v58[v6 - 2]; + v58[v6 - 2] = v29; + v58[v6 - 3] = v28; + a1 = v52; + goto LABEL_18; + case 26: + case 27: + case 28: + case 29: + case 30: + case 33: + case 34: + case 36: + case 37: + case 38: + case 39: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + if ( v6 > 1 ) + { + v17 = v6 - 2; + v19 = v58[v6 - 1]; + v20 = v58[v6 - 2]; + switch ( v8 ) + { + case 26: + ++a1; + v16 = v19 & v20; + goto LABEL_16; + case 27: + ++a1; + v16 = v20 / v19; + goto LABEL_16; + case 28: + ++a1; + v16 = v20 - v19; + goto LABEL_16; + case 29: + ++a1; + v16 = v20 % (unsigned int)v19; + goto LABEL_16; + case 30: + v16 = v19 * v20; + ++a1; + goto LABEL_16; + case 33: + ++a1; + v16 = v19 | v20; + goto LABEL_16; + case 34: + ++a1; + v16 = v19 + v20; + goto LABEL_16; + case 36: + ++a1; + v16 = v20 << v19; + goto LABEL_16; + case 37: + ++a1; + v16 = (unsigned int)v20 >> v19; + goto LABEL_16; + case 38: + ++a1; + v16 = v20 >> v19; + goto LABEL_16; + case 39: + ++a1; + v16 = v19 ^ v20; + goto LABEL_16; + case 41: + ++a1; + v16 = v20 == v19; + goto LABEL_16; + case 42: + ++a1; + v16 = v20 >= v19; + goto LABEL_16; + case 43: + ++a1; + v16 = v20 > v19; + goto LABEL_16; + case 44: + ++a1; + v16 = v20 <= v19; + goto LABEL_16; + case 45: + ++a1; + v16 = v20 < v19; + goto LABEL_16; + case 46: + ++a1; + v16 = v20 != v19; + goto LABEL_16; + default: + goto _execute_stack_op_cold; + } + } + goto LABEL_121; + case 40: + if ( !v6 ) + goto LABEL_121; + if ( v58[--v6] ) + a1 += *(__int16 *)(a1 + 1) + 3; + else + a1 += 3; + goto LABEL_18; + case 47: + a1 += *(__int16 *)(a1 + 1) + 3; + goto LABEL_18; + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + ++a1; + v16 = v7 - 48; + v17 = v6; + goto LABEL_16; + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + v18 = v7 - 80; + if ( v18 > 17 ) + goto LABEL_121; + v16 = *(_DWORD *)(a3 + 4 * v18); + if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v18 + 108) ) + goto LABEL_28; + if ( dwarf_reg_size_table[v18] != 4 ) + goto LABEL_121; + v16 = *(_DWORD *)v16; +LABEL_28: + ++a1; + v17 = v6; + goto LABEL_16; + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + case 123: + case 124: + case 125: + case 126: + case 127: + case -128: + case -127: + case -126: + case -125: + case -124: + case -123: + case -122: + case -121: + case -120: + case -119: + case -118: + case -117: + case -116: + case -115: + case -114: + case -113: + v9 = a1 + 1; + v10 = 0; + v11 = 0; + do + { + v12 = *v9++; + v13 = (v12 & 0x7F) << v11; + v11 += 7; + v10 |= v13; + } + while ( v12 < 0 ); + v53 = v9; + if ( v11 <= 0x1F && (v12 & 0x40) != 0 ) + v10 |= -(1 << v11); + v14 = v7 - 112; + if ( v14 > 17 ) + goto LABEL_121; + v15 = *(_DWORD **)(a3 + 4 * v14); + if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v14 + 108) ) + goto LABEL_14; + if ( dwarf_reg_size_table[v14] != 4 ) + goto LABEL_121; + v15 = (_DWORD *)*v15; +LABEL_14: + v16 = (int)v15 + v10; + a1 = v53; + v17 = v6; + goto LABEL_16; + case -112: + ++a1; + v45 = 0; + v46 = 0; + do + { + v47 = *a1++; + v48 = (v47 & 0x7F) << v46; + v46 += 7; + v45 |= v48; + } + while ( v47 < 0 ); + if ( v45 > 17 ) + goto LABEL_121; + v16 = *(_DWORD *)(a3 + 4 * v45); + if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v45 + 108) ) + goto LABEL_95; + if ( dwarf_reg_size_table[v45] != 4 ) + goto LABEL_121; + v16 = *(_DWORD *)v16; +LABEL_95: + v17 = v6; + goto LABEL_16; + case -110: + ++a1; + v33 = 0; + v34 = 0; + do + { + v35 = *a1++; + v36 = (v35 & 0x7F) << v34; + v34 += 7; + v33 |= v36; + } + while ( v35 < 0 ); + v37 = 0; + v38 = 0; + do + { + v39 = *a1++; + v40 = (v39 & 0x7F) << v38; + v38 += 7; + v37 |= v40; + } + while ( v39 < 0 ); + if ( v38 <= 0x1F && (v39 & 0x40) != 0 ) + v37 |= -(1 << v38); + if ( v33 > 17 ) + goto LABEL_121; + v41 = *(_DWORD **)(a3 + 4 * v33); + if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v33 + 108) ) + goto LABEL_81; + if ( dwarf_reg_size_table[v33] != 4 ) + goto LABEL_121; + v41 = (_DWORD *)*v41; +LABEL_81: + v16 = (int)v41 + v37; + v17 = v6; + goto LABEL_16; + case -106: + ++a1; + goto LABEL_18; + case -15: + v25 = a1[1]; + v17 = v6; + v26 = (int *)base_of_encoded_value(v25, (_DWORD *)a3); + v27 = read_encoded_value_with_base(v25, v26, (int *)(a1 + 2), &v57); + v16 = v57; + a1 = v27; + goto LABEL_16; + default: + goto _execute_stack_op_cold; + } + break; + } + } + return result; +} +// 45B610: using guessed type int var_11C[71]; + +//----- (0045BC40) -------------------------------------------------------- +unsigned int __usercall uw_update_context_1@(int a1@, int a2@) +{ + int v3; // edx + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + char *v7; // ebx + int v8; // esi + int v9; // ecx + char v10; // dl + int v11; // eax + int v12; // ebx + char *v13; // esi + int v14; // edi + int v15; // ecx + char v16; // dl + int v17; // eax + int v18; // eax + unsigned int result; // eax + char *v20; // esi + int v21; // edi + int v22; // ecx + char v23; // dl + int v24; // eax + int v25; // eax + int v26; // eax + int v27; // eax + int v29; // [esp+1Ch] [ebp-B0h] + int v30; // [esp+2Ch] [ebp-A0h] BYREF + int v31[39]; // [esp+30h] [ebp-9Ch] BYREF + + qmemcpy(v31, (const void *)a1, 0x80u); + v3 = v31[24]; + if ( ((v31[24] & 0x40000000) == 0 || !LOBYTE(v31[28])) && !v31[4] ) + { + v27 = *(_DWORD *)(a1 + 72); + if ( dwarf_reg_size_table[4] != 4 ) + goto LABEL_23; + v30 = v27; + if ( (v31[24] & 0x40000000) != 0 ) + LOBYTE(v31[28]) = 0; + v31[4] = (int)&v30; + } + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + 112) = 0; + *(_DWORD *)(a1 + 16) = 0; + v4 = *(_DWORD *)(a2 + 160); + if ( v4 != 1 ) + { + if ( v4 != 2 ) + abort(); + v7 = *(char **)(a2 + 156); + v8 = 0; + v9 = 0; + do + { + v10 = *v7++; + v11 = (v10 & 0x7F) << v9; + v9 += 7; + v8 |= v11; + } + while ( v10 < 0 ); + v29 = execute_stack_op(v7, (unsigned int)&v7[v8], (int)v31, 0); + goto LABEL_17; + } + v5 = *(_DWORD *)(a2 + 152); + if ( v5 > 17 ) + goto LABEL_23; + v6 = (_DWORD *)v31[v5]; + if ( (v3 & 0x40000000) != 0 && *((_BYTE *)&v31[27] + v5) ) + goto LABEL_12; + if ( dwarf_reg_size_table[v5] != 4 ) +LABEL_23: + uw_update_context_1_cold(); + v6 = (_DWORD *)*v6; +LABEL_12: + v29 = (int)v6 + *(_DWORD *)(a2 + 148); +LABEL_17: + *(_DWORD *)(a1 + 72) = v29; + v12 = 0; + while ( 2 ) + { + switch ( *(_DWORD *)(a2 + 8 * v12 + 4) ) + { + case 1: + v25 = *(_DWORD *)(a2 + 8 * v12) + v29; + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + v12 + 108) = 0; + goto LABEL_36; + case 2: + v26 = *(_DWORD *)(a2 + 8 * v12); + if ( *((_BYTE *)&v31[27] + v26) ) + { + if ( v26 > 17 ) + goto LABEL_23; + if ( (v31[24] & 0x40000000) != 0 ) + { + v18 = v31[v26]; + } + else + { + if ( dwarf_reg_size_table[v26] != 4 ) + goto LABEL_23; + v18 = *(_DWORD *)v31[v26]; + } +LABEL_22: + if ( dwarf_reg_size_table[v12] > 4u ) + goto LABEL_23; +LABEL_25: + *(_BYTE *)(a1 + v12 + 108) = 1; + *(_DWORD *)(a1 + 4 * v12) = v18; + } + else + { + v25 = v31[v26]; + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + v12 + 108) = 0; +LABEL_36: + *(_DWORD *)(a1 + 4 * v12) = v25; + } +LABEL_26: + if ( ++v12 != 18 ) + continue; + result = *(_DWORD *)(a1 + 96) & 0x7FFFFFFF; + if ( *(_BYTE *)(a2 + 187) ) + result = *(_DWORD *)(a1 + 96) | 0x80000000; + *(_DWORD *)(a1 + 96) = result; + return result; + case 3: + v20 = *(char **)(a2 + 8 * v12); + v21 = 0; + v22 = 0; + do + { + v23 = *v20++; + v24 = (v23 & 0x7F) << v22; + v22 += 7; + v21 |= v24; + } + while ( v23 < 0 ); + v25 = execute_stack_op(v20, (unsigned int)&v20[v21], (int)v31, v29); + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + v12 + 108) = 0; + goto LABEL_36; + case 4: + v18 = *(_DWORD *)(a2 + 8 * v12) + v29; + if ( dwarf_reg_size_table[v12] <= 4u ) + goto LABEL_25; + goto LABEL_23; + case 5: + v13 = *(char **)(a2 + 8 * v12); + v14 = 0; + v15 = 0; + do + { + v16 = *v13++; + v17 = (v16 & 0x7F) << v15; + v15 += 7; + v14 |= v17; + } + while ( v16 < 0 ); + v18 = execute_stack_op(v13, (unsigned int)&v13[v14], (int)v31, v29); + goto LABEL_22; + default: + goto LABEL_26; + } + } +} + +//----- (0045BF30) -------------------------------------------------------- +unsigned int __usercall uw_init_context_1@(int a1@, int a2@, int a3@) +{ + unsigned int result; // eax + int v7; // [esp+1Ch] [ebp-E0h] BYREF + _DWORD v8[55]; // [esp+20h] [ebp-DCh] BYREF + void *retaddr; // [esp+FCh] [ebp+0h] + + memset((void *)a1, 0, 0x80u); + *(_DWORD *)(a1 + 96) = 0x40000000; + *(_DWORD *)(a1 + 76) = retaddr; + if ( uw_frame_state_for((dwarf_eh_bases *)a1, v8) ) + goto LABEL_15; + if ( _CRT_MT ) + { + if ( !once_regsizes_22907 ) + { + if ( InterlockedIncrement(&Addend) ) + { + while ( !once_regsizes_22907 ) + Sleep(0); + } + else + { + dwarf_reg_size_table[0] = 4; + dwarf_reg_size_table[2] = 4; + dwarf_reg_size_table[1] = 4; + dwarf_reg_size_table[3] = 4; + dwarf_reg_size_table[6] = 4; + dwarf_reg_size_table[7] = 4; + dwarf_reg_size_table[5] = 4; + dwarf_reg_size_table[4] = 4; + dwarf_reg_size_table[11] = 12; + dwarf_reg_size_table[12] = 12; + dwarf_reg_size_table[13] = 12; + dwarf_reg_size_table[14] = 12; + dwarf_reg_size_table[15] = 12; + dwarf_reg_size_table[16] = 12; + dwarf_reg_size_table[9] = 4; + dwarf_reg_size_table[8] = 4; + once_regsizes_22907 = 1; + } + } + } + else if ( !dwarf_reg_size_table[0] ) + { + dwarf_reg_size_table[0] = 4; + dwarf_reg_size_table[2] = 4; + dwarf_reg_size_table[1] = 4; + dwarf_reg_size_table[3] = 4; + dwarf_reg_size_table[6] = 4; + dwarf_reg_size_table[7] = 4; + dwarf_reg_size_table[5] = 4; + dwarf_reg_size_table[4] = 4; + dwarf_reg_size_table[11] = 12; + dwarf_reg_size_table[12] = 12; + dwarf_reg_size_table[13] = 12; + dwarf_reg_size_table[14] = 12; + dwarf_reg_size_table[15] = 12; + dwarf_reg_size_table[16] = 12; + dwarf_reg_size_table[9] = 4; + dwarf_reg_size_table[8] = 4; + } + if ( dwarf_reg_size_table[4] != 4 ) +LABEL_15: + uw_init_context_1_cold(); + v7 = a2; + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + 112) = 0; + v8[40] = 1; + *(_DWORD *)(a1 + 16) = &v7; + v8[38] = 4; + v8[37] = 0; + result = uw_update_context_1(a1, (int)v8); + *(_DWORD *)(a1 + 76) = a3; + return result; +} +// 5150E4: using guessed type int once_regsizes_22907; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0045C130) -------------------------------------------------------- +int __usercall uw_update_context@(int a1@, int a2@) +{ + int result; // eax + _DWORD *v5; // edx + + uw_update_context_1(a1, a2); + result = *(_DWORD *)(a2 + 180); + if ( *(_DWORD *)(a2 + 8 * result + 4) == 6 ) + { + *(_DWORD *)(a1 + 76) = 0; + return result; + } + if ( result > 17 ) + goto LABEL_3; + v5 = *(_DWORD **)(a1 + 4 * result); + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 && *(_BYTE *)(a1 + result + 108) ) + goto LABEL_8; + if ( dwarf_reg_size_table[result] != 4 ) +LABEL_3: + uw_update_context_cold(); + v5 = (_DWORD *)*v5; +LABEL_8: + *(_DWORD *)(a1 + 76) = v5; + return result; +} + +//----- (0045C1A0) -------------------------------------------------------- +int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, dwarf_eh_bases *a2@, int *a3@) +{ + int i; // edi + int result; // eax + int v7; // edx + int v8; // ebp + _DWORD v10[42]; // [esp+30h] [ebp-DCh] BYREF + int (__cdecl *v11)(int, int, _DWORD, _DWORD, _DWORD *, dwarf_eh_bases *); // [esp+D8h] [ebp-34h] + + for ( i = 1; ; ++i ) + { + v7 = uw_frame_state_for(a2, v10); + v8 = 4 * ((void *)a1[4] == (char *)a2[6].tbase - ((unsigned int)a2[8].tbase >> 31)); + if ( v7 ) + return 2; + if ( v11 ) + break; +LABEL_5: + if ( v8 ) + _Unwind_RaiseException_Phase2_cold(); + uw_update_context((int)a2, (int)v10); + } + result = v11(1, v8 | 2, *a1, a1[1], a1, a2); + if ( result != 7 ) + { + if ( result != 8 ) + return 2; + goto LABEL_5; + } + *a3 = i; + return result; +} +// 45C1A0: using guessed type _DWORD var_DC[42]; + +//----- (0045C270) -------------------------------------------------------- +int __usercall _Unwind_ForcedUnwind_Phase2@( + _Unwind_Exception *exc@, + dwarf_eh_bases *context@, + unsigned int *frames_p@) +{ + unsigned int v3; // edi + _Unwind_Word private_2; // ebp + int v7; // eax + int v8; // eax + int exception_class_high; // edx + int v10; // ebp + _Unwind_Stop_Fn stop; // [esp+24h] [ebp-E8h] + void *stop_argument; // [esp+28h] [ebp-E4h] + _Unwind_FrameState fs_0; // [esp+30h] [ebp-DCh] BYREF + + v3 = 1; + private_2 = exc->private_2; + stop = (_Unwind_Stop_Fn)exc->private_1; + stop_argument = (void *)private_2; + while ( 1 ) + { + v8 = uw_frame_state_for(context, &fs_0); + if ( v8 && v8 != 5 ) + return 2; + exception_class_high = HIDWORD(exc->exception_class); + if ( v8 == 5 ) + break; + if ( ((int (__cdecl *)(int, int, _DWORD, int, _Unwind_Exception *, dwarf_eh_bases *, _Unwind_Word))stop)( + 1, + 10, + exc->exception_class, + exception_class_high, + exc, + context, + private_2) ) + { + return 2; + } + if ( fs_0.personality ) + { + v7 = ((int (__cdecl *)(int, int, _DWORD, _DWORD, _Unwind_Exception *, dwarf_eh_bases *))fs_0.personality)( + 1, + 10, + exc->exception_class, + HIDWORD(exc->exception_class), + exc, + context); + if ( v7 == 7 ) + { + v10 = 7; + goto LABEL_13; + } + if ( v7 != 8 ) + return 2; + } + ++v3; + uw_update_context((int)context, (int)&fs_0); + } + v10 = 5; + if ( ((int (__cdecl *)(int, int, _DWORD, int, _Unwind_Exception *, dwarf_eh_bases *, void *))stop)( + 1, + 26, + exc->exception_class, + exception_class_high, + exc, + context, + stop_argument) ) + { + return 2; + } +LABEL_13: + *frames_p = v3; + return v10; +} + +//----- (0045C3B0) -------------------------------------------------------- +int __cdecl _Unwind_GetGR(int a1, int a2) +{ + int result; // eax + + if ( a2 > 17 ) + goto LABEL_7; + result = *(_DWORD *)(a1 + 4 * a2); + if ( (*(_BYTE *)(a1 + 99) & 0x40) == 0 || !*(_BYTE *)(a1 + a2 + 108) ) + { + if ( dwarf_reg_size_table[a2] == 4 ) + return *(_DWORD *)result; +LABEL_7: + _Unwind_GetGR_cold(); + } + return result; +} + +//----- (0045C3F0) -------------------------------------------------------- +_Unwind_Word __cdecl _Unwind_GetCFA(_Unwind_Context *context) +{ + return (_Unwind_Word)context->cfa; +} + +//----- (0045C400) -------------------------------------------------------- +_DWORD *__cdecl _Unwind_SetGR(int a1, int a2, int a3) +{ + _DWORD *result; // eax + + result = (_DWORD *)a2; + if ( a2 > 17 ) + goto LABEL_7; + if ( (*(_BYTE *)(a1 + 99) & 0x40) == 0 || !*(_BYTE *)(a1 + a2 + 108) ) + { + result = *(_DWORD **)(a1 + 4 * a2); + if ( dwarf_reg_size_table[a2] == 4 ) + { + *result = a3; + return result; + } +LABEL_7: + _Unwind_SetGR_cold(); + } + *(_DWORD *)(a1 + 4 * a2) = a3; + return result; +} + +//----- (0045C450) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetIP(_Unwind_Context *context) +{ + return (_Unwind_Ptr)context->ra; +} + +//----- (0045C460) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetIPInfo(_Unwind_Context *context, int *ip_before_insn) +{ + *ip_before_insn = context->flags >> 31; + return (_Unwind_Ptr)context->ra; +} + +//----- (0045C480) -------------------------------------------------------- +void __cdecl _Unwind_SetIP(_Unwind_Context *context, _Unwind_Ptr val) +{ + context->ra = (void *)val; +} + +//----- (0045C490) -------------------------------------------------------- +void *__cdecl _Unwind_GetLanguageSpecificData(_Unwind_Context *context) +{ + return context->lsda; +} + +//----- (0045C4A0) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetRegionStart(_Unwind_Context *context) +{ + return (_Unwind_Ptr)context->bases.func; +} + +//----- (0045C4B0) -------------------------------------------------------- +void *__cdecl _Unwind_FindEnclosingFunction(void *pc) +{ + void *result; // eax + dwarf_eh_bases bases; // [esp+14h] [ebp-18h] BYREF + + result = (void *)_Unwind_Find_FDE((char *)pc - 1, &bases); + if ( result ) + return bases.func; + return result; +} + +//----- (0045C4E0) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetDataRelBase(_Unwind_Context *context) +{ + return (_Unwind_Ptr)context->bases.dbase; +} + +//----- (0045C4F0) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetTextRelBase(_Unwind_Context *context) +{ + return (_Unwind_Ptr)context->bases.tbase; +} + +//----- (0045C500) -------------------------------------------------------- +frame_state *__cdecl __frame_state_for(void *pc_target, frame_state *state_in) +{ + int v2; // eax + enum : __int32 {REG_UNSAVED = 0x0,REG_SAVED_OFFSET = 0x1,REG_SAVED_REG = 0x2,REG_SAVED_EXP = 0x3,REG_SAVED_VAL_OFFSET = 0x4,REG_SAVED_VAL_EXP = 0x5,REG_UNDEFINED = 0x6,} how; // edx + _Unwind_Context context; // [esp+0h] [ebp-14Ch] BYREF + _Unwind_FrameState fs_0; // [esp+80h] [ebp-CCh] BYREF + + memset(&context, 0, sizeof(context)); + context.flags = 0x40000000; + context.ra = (char *)pc_target + 1; + v2 = uw_frame_state_for((dwarf_eh_bases *)&context, &fs_0); + if ( v2 || fs_0.regs.cfa_how == 2 ) + return 0; + do + { + while ( 1 ) + { + how = fs_0.regs.reg[v2].how; + state_in->saved[v2] = how; + if ( (_BYTE)how == 1 || (_BYTE)how == 2 ) + break; + state_in->reg_or_offset[v2++] = 0; + if ( v2 == 18 ) + goto LABEL_8; + } + state_in->reg_or_offset[v2] = fs_0.regs.reg[v2].loc.offset; + ++v2; + } + while ( v2 != 18 ); +LABEL_8: + state_in->cfa_offset = fs_0.regs.cfa_offset; + state_in->cfa_reg = fs_0.regs.cfa_reg; + state_in->retaddr_column = fs_0.retaddr_column; + state_in->args_size = context.args_size; + state_in->eh_ptr = fs_0.eh_ptr; + return state_in; +} + +//----- (0045C5F0) -------------------------------------------------------- +_Unwind_Reason_Code __cdecl _Unwind_RaiseException(_Unwind_Exception *exc) +{ + _Unwind_Reason_Code v1; // eax + int v2; // edx + int v3; // eax + _Unwind_Reason_Code result; // eax + void *cfa; // esi + _Unwind_Exception *v6; // edi + _Unwind_Exception *v7; // eax + void *ra; // ebx + int v9; // edx + _Unwind_Context this_context; // [esp+0h] [ebp-1D8h] BYREF + _Unwind_Context cur_context; // [esp+80h] [ebp-158h] BYREF + _Unwind_FrameState fs_0; // [esp+100h] [ebp-D8h] BYREF + _Unwind_Reason_Code v13; // [esp+1C4h] [ebp-14h] + int v14; // [esp+1C8h] [ebp-10h] + int retaddr; // [esp+1DCh] [ebp+4h] + + v14 = v2; + v13 = v1; + uw_init_context_1((int)&this_context, (int)&exc, retaddr); + qmemcpy(&cur_context, &this_context, sizeof(cur_context)); + while ( 1 ) + { + result = uw_frame_state_for((dwarf_eh_bases *)&cur_context, &fs_0); + if ( result == 5 ) + break; + if ( result ) + return 3; + if ( fs_0.personality ) + { + v3 = ((int (__cdecl *)(int, int, _DWORD, _DWORD, _Unwind_Exception *, _Unwind_Context *))fs_0.personality)( + 1, + 1, + exc->exception_class, + HIDWORD(exc->exception_class), + exc, + &cur_context); + if ( v3 == 6 ) + { + cfa = cur_context.cfa; + v6 = exc; + exc->private_1 = 0; + v7 = exc; + v6->private_2 = (_Unwind_Word)cfa - (cur_context.flags >> 31); + qmemcpy(&cur_context, &this_context, sizeof(cur_context)); + result = _Unwind_RaiseException_Phase2(v7, (dwarf_eh_bases *)&cur_context, (int *)&fs_0); + if ( result == 7 ) + { + uw_install_context_1((int)&this_context, (int)&cur_context); + ra = cur_context.ra; + _Unwind_DebugHook(cur_context.cfa, cur_context.ra); + *(int *)((char *)&retaddr + v9) = (int)ra; + return v13; + } + return result; + } + if ( v3 != 8 ) + return 3; + } + uw_update_context((int)&cur_context, (int)&fs_0); + } + return result; +} +// 45C602: variable 'v2' is possibly undefined +// 45C608: variable 'v1' is possibly undefined +// 45C71E: variable 'v9' is possibly undefined + +//----- (0045C740) -------------------------------------------------------- +_Unwind_Reason_Code __cdecl _Unwind_ForcedUnwind(_Unwind_Exception *exc, _Unwind_Stop_Fn stop, void *stop_argument) +{ + _Unwind_Reason_Code v3; // eax + int v4; // edx + _Unwind_Exception *v5; // esi + _Unwind_Reason_Code result; // eax + void *ra; // ebx + int v8; // edx + unsigned int frames; // [esp+0h] [ebp-11Ch] BYREF + _Unwind_Context this_context; // [esp+4h] [ebp-118h] BYREF + _Unwind_Context cur_context; // [esp+84h] [ebp-98h] BYREF + _Unwind_Reason_Code v12; // [esp+108h] [ebp-14h] + int v13; // [esp+10Ch] [ebp-10h] + int retaddr; // [esp+120h] [ebp+4h] + + v13 = v4; + v12 = v3; + uw_init_context_1((int)&this_context, (int)&exc, retaddr); + qmemcpy(&cur_context, &this_context, sizeof(cur_context)); + v5 = exc; + exc->private_1 = (_Unwind_Word)stop; + v5->private_2 = (_Unwind_Word)stop_argument; + result = _Unwind_ForcedUnwind_Phase2(v5, (dwarf_eh_bases *)&cur_context, &frames); + if ( result == 7 ) + { + uw_install_context_1((int)&this_context, (int)&cur_context); + ra = cur_context.ra; + _Unwind_DebugHook(cur_context.cfa, cur_context.ra); + *(int *)((char *)&retaddr + v8) = (int)ra; + return v12; + } + return result; +} +// 45C752: variable 'v4' is possibly undefined +// 45C758: variable 'v3' is possibly undefined +// 45C7C5: variable 'v8' is possibly undefined + +//----- (0045C7F0) -------------------------------------------------------- +void __usercall __noreturn _Unwind_Resume(int a1@, int a2@, _Unwind_Exception *exc) +{ + int v3; // eax + int v4; // eax + int v5; // edx + unsigned int frames_p; // [esp+0h] [ebp-11Ch] BYREF + char v7[128]; // [esp+4h] [ebp-118h] BYREF + _Unwind_Context context; // [esp+84h] [ebp-98h] BYREF + int v9; // [esp+108h] [ebp-14h] + int v10; // [esp+10Ch] [ebp-10h] + int retaddr; // [esp+120h] [ebp+4h] + + v10 = a2; + v9 = a1; + uw_init_context_1((int)v7, (int)&exc, retaddr); + qmemcpy(&context, v7, sizeof(context)); + if ( exc->private_1 ) + v3 = _Unwind_ForcedUnwind_Phase2(exc, (dwarf_eh_bases *)&context, &frames_p); + else + v3 = _Unwind_RaiseException_Phase2(exc, (dwarf_eh_bases *)&context, (int *)&frames_p); + if ( v3 != 7 ) + _Unwind_Resume_cold(); + uw_install_context_1((int)v7, (int)&context); + _Unwind_DebugHook(context.cfa, context.ra); + *(int *)((char *)&retaddr + v4) = v5; +} +// 45C861: variable 'v5' is possibly undefined +// 45C861: variable 'v4' is possibly undefined + +//----- (0045C890) -------------------------------------------------------- +void __usercall __noreturn _Unwind_Resume_or_Rethrow(int a1@, int a2@, _Unwind_Exception *exc) +{ + _Unwind_Exception *v3; // ebx + void *ra; // ebx + int v5; // edx + unsigned int frames_p; // [esp+0h] [ebp-11Ch] BYREF + char v7[128]; // [esp+4h] [ebp-118h] BYREF + _Unwind_Context context; // [esp+84h] [ebp-98h] BYREF + int v9; // [esp+108h] [ebp-14h] + int v10; // [esp+10Ch] [ebp-10h] + int retaddr; // [esp+120h] [ebp+4h] + + v10 = a2; + v9 = a1; + v3 = exc; + if ( exc->private_1 ) + { + uw_init_context_1((int)v7, (int)&exc, retaddr); + qmemcpy(&context, v7, sizeof(context)); + if ( _Unwind_ForcedUnwind_Phase2(v3, (dwarf_eh_bases *)&context, &frames_p) != 7 ) + _Unwind_Resume_or_Rethrow_cold(); + uw_install_context_1((int)v7, (int)&context); + ra = context.ra; + _Unwind_DebugHook(context.cfa, context.ra); + *(int *)((char *)&retaddr + v5) = (int)ra; + } + else + { + _Unwind_RaiseException(exc); + } +} +// 45C922: variable 'v5' is possibly undefined + +//----- (0045C940) -------------------------------------------------------- +void __cdecl _Unwind_DeleteException(_Unwind_Exception *exc) +{ + _Unwind_Exception_Cleanup_Fn exception_cleanup; // eax + + exception_cleanup = exc->exception_cleanup; + if ( exception_cleanup ) + exception_cleanup((_Unwind_Reason_Code)1, exc); +} + +//----- (0045C960) -------------------------------------------------------- +_Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn trace, void *trace_argument) +{ + _Unwind_Trace_Fn v2; // edi + void *v3; // esi + int v4; // eax + _Unwind_Reason_Code v5; // ebx + _Unwind_Context context; // [esp+10h] [ebp-158h] BYREF + _Unwind_FrameState fs_0; // [esp+90h] [ebp-D8h] BYREF + int retaddr; // [esp+16Ch] [ebp+4h] + + v2 = trace; + v3 = trace_argument; + uw_init_context_1((int)&context, (int)&trace, retaddr); + while ( 1 ) + { + v4 = uw_frame_state_for((dwarf_eh_bases *)&context, &fs_0); + v5 = v4; + if ( v4 ) + { + if ( v4 != 5 ) + break; + } + if ( v2(&context, v3) ) + break; + if ( v5 == 5 ) + return v5; + uw_update_context((int)&context, (int)&fs_0); + } + return 3; +} + +//----- (0045C9E0) -------------------------------------------------------- +int __cdecl fde_unencoded_compare(object *ob, const fde *x, const fde *y) +{ + int result; // eax + unsigned int v4; // edx + + result = 1; + v4 = *(_DWORD *)y->pc_begin; + if ( *(_DWORD *)x->pc_begin <= v4 ) + return -(*(_DWORD *)x->pc_begin < v4); + return result; +} + +//----- (0045CA00) -------------------------------------------------------- +void __usercall frame_downheap(object *ob@, fde_compare_t fde_compare@, const fde **a@, int lo, int hi) +{ + int v6; // edx + int v7; // ebx + int v8; // eax + const fde *v9; // eax + int v10; // esi + const fde **v11; // ebx + const fde *v12; // eax + const fde **v13; // edi + const fde **v16; // [esp+1Ch] [ebp-20h] + int i; // [esp+40h] [ebp+4h] + + v6 = lo; + v7 = 2 * lo + 1; + if ( v7 < hi ) + { + while ( 1 ) + { + v10 = v7 + 1; + v13 = &a[v7]; + v9 = *v13; + if ( v7 + 1 < hi ) + { + i = v6; + v16 = &a[v7 + 1]; + v8 = fde_compare(ob, v9, *v16); + v6 = i; + if ( v8 < 0 ) + { + v9 = *v16; + v13 = &a[v7 + 1]; + } + else + { + v9 = *v13; + v10 = v7; + } + } + else + { + v10 = v7; + } + v11 = &a[v6]; + if ( fde_compare(ob, *v11, v9) >= 0 ) + break; + v12 = *v11; + *v11 = *v13; + v7 = 2 * v10 + 1; + *v13 = v12; + if ( hi <= v7 ) + break; + v6 = v10; + } + } +} + +//----- (0045CAD0) -------------------------------------------------------- +void __usercall frame_heapsort(object *ob@, fde_compare_t fde_compare@, fde_vector *erratic@) +{ + fde_vector *v5; // esi + int v6; // ebx + int hi; // ebx + const dwarf_fde *v8; // eax + int lo; // [esp+0h] [ebp-3Ch] + unsigned int n; // [esp+14h] [ebp-28h] + const dwarf_fde **a; // [esp+18h] [ebp-24h] + + v5 = erratic; + a = erratic->array; + n = erratic->count; + if ( n >> 1 ) + { + v6 = (n >> 1) - 1; + do + { + lo = v6--; + frame_downheap(ob, fde_compare, a, lo, n); + } + while ( v6 != -1 ); + v5 = erratic; + } + hi = n - 1; + if ( (int)(n - 1) > 0 ) + { + do + { + v8 = v5->array[0]; + v5->array[0] = v5->array[hi]; + v5->array[hi] = v8; + frame_downheap(ob, fde_compare, a, 0, hi--); + } + while ( hi ); + } +} + +//----- (0045CB70) -------------------------------------------------------- +void init_object_mutex() +{ + object_mutex.counter = -1; + object_mutex.sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); +} + +//----- (0045CBB0) -------------------------------------------------------- +int __usercall size_of_encoded_value@(char a1@) +{ + unsigned __int8 v1; // al + + if ( a1 == -1 ) + return 0; + v1 = a1 & 7; + if ( v1 == 2 ) + return 2; + if ( v1 <= 2u ) + { + if ( v1 ) + goto LABEL_12; + return 4; + } + if ( v1 == 3 ) + return 4; + if ( v1 != 4 ) +LABEL_12: + size_of_encoded_value_cold(); + return 8; +} + +//----- (0045CC00) -------------------------------------------------------- +int __usercall base_from_object@(char a1@, int a2@) +{ + unsigned __int8 v2; // cl + + if ( a1 == -1 ) + return 0; + v2 = a1 & 0x70; + if ( (a1 & 0x70) == 32 ) + return *(_DWORD *)(a2 + 4); + if ( v2 <= 0x20u ) + { + if ( (a1 & 0x60) == 0 ) + return 0; + goto LABEL_13; + } + if ( v2 != 48 ) + { + if ( v2 == 80 ) + return 0; +LABEL_13: + base_from_object_cold(); + } + return *(_DWORD *)(a2 + 8); +} + +//----- (0045CC50) -------------------------------------------------------- +char *__usercall read_encoded_value_with_base_0@(char a1@, int *a2@, int *a3@, int *a4) +{ + int v6; // edx + char *result; // eax + _DWORD *v8; // eax + int v9; // edx + int v10; // ecx + int v11; // ebp + char v12; // dl + int v13; // edi + unsigned int v14; // ecx + int v15; // ebp + char v16; // dl + int v17; // edi + char v18; // di + + if ( a1 == 80 ) + { + v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); + v9 = *v8; + result = (char *)(v8 + 1); + *a4 = v9; + } + else + { + switch ( a1 & 0xF ) + { + case 0: + case 3: + case 0xB: + v6 = *a3; + result = (char *)(a3 + 1); + goto LABEL_4; + case 1: + result = (char *)a3; + v10 = 0; + v11 = 0; + do + { + v12 = *result++; + v13 = (v12 & 0x7F) << v10; + v10 += 7; + v11 |= v13; + } + while ( v12 < 0 ); + v6 = v11; + goto LABEL_4; + case 2: + v6 = *(unsigned __int16 *)a3; + result = (char *)a3 + 2; + goto LABEL_4; + case 4: + case 0xC: + v6 = *a3; + result = (char *)(a3 + 2); + goto LABEL_4; + case 9: + result = (char *)a3; + v14 = 0; + v15 = 0; + do + { + v16 = *result++; + v17 = (v16 & 0x7F) << v14; + v14 += 7; + v15 |= v17; + } + while ( v16 < 0 ); + v18 = v16; + v6 = v15; + if ( v14 > 0x1F || (v18 & 0x40) == 0 ) + goto LABEL_4; + v6 = (-1 << v14) | v15; + goto LABEL_5; + case 0xA: + v6 = *(__int16 *)a3; + result = (char *)a3 + 2; +LABEL_4: + if ( !v6 ) + goto LABEL_8; +LABEL_5: + if ( (a1 & 0x70) == 16 ) + a2 = a3; + v6 += (int)a2; + if ( a1 < 0 ) + *a4 = *(_DWORD *)v6; + else +LABEL_8: + *a4 = v6; + break; + default: + abort(); + } + } + return result; +} + +//----- (0045CD90) -------------------------------------------------------- +int __cdecl fde_single_encoding_compare(object *ob, const fde *x, const fde *y) +{ + char v3; // bl + int *v4; // esi + int result; // eax + _Unwind_Ptr x_ptr; // [esp+18h] [ebp-14h] BYREF + _Unwind_Ptr y_ptr[4]; // [esp+1Ch] [ebp-10h] BYREF + + v3 = *(_WORD *)&ob->s.b >> 3; + v4 = (int *)base_from_object(v3, (int)ob); + read_encoded_value_with_base_0(v3, v4, (int *)x->pc_begin, (int *)&x_ptr); + read_encoded_value_with_base_0(*(_WORD *)&ob->s.b >> 3, v4, (int *)y->pc_begin, (int *)y_ptr); + result = 1; + if ( x_ptr <= y_ptr[0] ) + return -(x_ptr < y_ptr[0]); + return result; +} +// 45CD90: using guessed type _Unwind_Ptr y_ptr[4]; + +//----- (0045CE00) -------------------------------------------------------- +int __usercall get_cie_encoding@(const dwarf_cie *cie@) +{ + ubyte *v2; // ebx + size_t v3; // eax + ubyte version; // cl + char *encoded_value_with_base_0; // eax + int v6; // edx + char *v8; // edx + ubyte *v9; // ebx + ubyte i; // dl + _Unwind_Ptr dummy[4]; // [esp+1Ch] [ebp-10h] BYREF + + v2 = &cie->version + 1; + v3 = strlen((const char *)&cie->version + 1); + version = cie->version; + encoded_value_with_base_0 = (char *)&v2[v3 + 1]; + if ( version > 3u ) + { + v6 = 255; + if ( *encoded_value_with_base_0 != 4 || encoded_value_with_base_0[1] ) + return v6; + encoded_value_with_base_0 += 2; + } + if ( *(&cie->version + 1) != 122 ) + return 0; + do + ++encoded_value_with_base_0; + while ( *(encoded_value_with_base_0 - 1) < 0 ); + do + v8 = encoded_value_with_base_0++; + while ( *(encoded_value_with_base_0 - 1) < 0 ); + if ( version == 1 ) + { + encoded_value_with_base_0 = v8 + 2; + } + else + { + do + ++encoded_value_with_base_0; + while ( *(encoded_value_with_base_0 - 1) < 0 ); + } + v9 = &cie->version + 2; + do + ++encoded_value_with_base_0; + while ( *(encoded_value_with_base_0 - 1) < 0 ); + for ( i = *(&cie->version + 2); i != 82; ++encoded_value_with_base_0 ) + { + while ( i == 80 ) + { + ++v9; + encoded_value_with_base_0 = read_encoded_value_with_base_0( + *encoded_value_with_base_0 & 0x7F, + 0, + (int *)(encoded_value_with_base_0 + 1), + (int *)dummy); + i = *v9; + if ( *v9 == 82 ) + return (unsigned __int8)*encoded_value_with_base_0; + } + if ( i != 76 ) + return 0; + i = *++v9; + } + return (unsigned __int8)*encoded_value_with_base_0; +} +// 45CE00: using guessed type _Unwind_Ptr dummy[4]; + +//----- (0045CF00) -------------------------------------------------------- +size_t __usercall classify_object_over_fdes@(object *ob@, const fde *this_fde@) +{ + const fde *v3; // ebx + char *v4; // ecx + sword CIE_delta; // eax + char *v6; // esi + char v7; // di + unsigned __int16 i; // ax + unsigned int v9; // eax + int v10; // edx + int encoding; // [esp+14h] [ebp-38h] + int *base; // [esp+18h] [ebp-34h] + uword count; // [esp+1Ch] [ebp-30h] + _Unwind_Ptr pc_begin[8]; // [esp+2Ch] [ebp-20h] BYREF + + count = this_fde->length; + if ( !this_fde->length ) + return count; + base = 0; + v3 = this_fde; + v4 = 0; + LOBYTE(encoding) = 0; + count = 0; + while ( 1 ) + { + CIE_delta = v3->CIE_delta; + if ( CIE_delta ) + break; +LABEL_15: + v3 = (const fde *)((char *)v3 + v3->length + 4); + if ( !v3->length ) + return count; + } + v6 = (char *)&v3->CIE_delta - CIE_delta; + if ( v6 == v4 ) + { + v7 = encoding; +LABEL_9: + read_encoded_value_with_base_0(v7, base, (int *)v3->pc_begin, (int *)pc_begin); + v9 = size_of_encoded_value(v7); + v10 = -1; + if ( v9 <= 3 ) + v10 = (1 << (8 * v9)) - 1; + v4 = v6; + if ( (v10 & pc_begin[0]) != 0 ) + { + ++count; + if ( ob->pc_begin > (void *)pc_begin[0] ) + ob->pc_begin = (void *)pc_begin[0]; + v4 = v6; + } + goto LABEL_15; + } + encoding = get_cie_encoding((const dwarf_cie *)((char *)&v3->CIE_delta - CIE_delta)); + if ( encoding != 255 ) + { + v7 = encoding; + base = (int *)base_from_object(encoding, (int)ob); + i = ob->s.i; + if ( (i & 0x7F8) == 2040 ) + { + *(_WORD *)&ob->s.b = (8 * (unsigned __int8)encoding) | i & 0xF807; + } + else if ( (unsigned __int8)(i >> 3) != encoding ) + { + *(_BYTE *)&ob->s.b |= 4u; + } + goto LABEL_9; + } + return -1; +} +// 45CF00: using guessed type _Unwind_Ptr pc_begin[8]; + +//----- (0045D060) -------------------------------------------------------- +void __usercall add_fdes(object *ob@, fde_accumulator *accu@, const fde *this_fde@) +{ + __int16 v5; // ax + int cie_encoding; // esi + int v7; // eax + int *v8; // edx + fde_vector *linear; // eax + size_t count; // ecx + sword CIE_delta; // eax + const dwarf_cie *v12; // ebp + int v13; // ebp + unsigned int v14; // eax + const dwarf_cie *last_cie; // [esp+14h] [ebp-38h] + _Unwind_Ptr base; // [esp+1Ch] [ebp-30h] + _Unwind_Ptr pc_begin[8]; // [esp+2Ch] [ebp-20h] BYREF + + v5 = *(_WORD *)&ob->s.b >> 3; + cie_encoding = (unsigned __int8)v5; + v7 = base_from_object(v5, (int)ob); + if ( this_fde->length ) + { + last_cie = 0; + v8 = (int *)v7; + while ( 1 ) + { + CIE_delta = this_fde->CIE_delta; + if ( !CIE_delta ) + goto LABEL_6; + if ( (*(_BYTE *)&ob->s.b & 4) != 0 ) + { + v12 = (const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta); + if ( v12 != last_cie ) + { + cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta)); + last_cie = v12; + v8 = (int *)base_from_object(cie_encoding, (int)ob); + } + } + if ( cie_encoding ) + { + base = (_Unwind_Ptr)v8; + read_encoded_value_with_base_0(cie_encoding, v8, (int *)this_fde->pc_begin, (int *)pc_begin); + v13 = -1; + v14 = size_of_encoded_value(cie_encoding); + v8 = (int *)base; + if ( v14 <= 3 ) + v13 = (1 << (8 * v14)) - 1; + if ( (v13 & pc_begin[0]) != 0 ) + { +LABEL_4: + linear = accu->linear; + if ( accu->linear ) + { + count = linear->count; + linear->count = count + 1; + linear->array[count] = this_fde; + } + goto LABEL_6; + } + this_fde = (const fde *)((char *)this_fde + this_fde->length + 4); + if ( !this_fde->length ) + return; + } + else + { + if ( *(_DWORD *)this_fde->pc_begin ) + goto LABEL_4; +LABEL_6: + this_fde = (const fde *)((char *)this_fde + this_fde->length + 4); + if ( !this_fde->length ) + return; + } + } + } +} +// 45D060: using guessed type _Unwind_Ptr pc_begin[8]; + +//----- (0045D170) -------------------------------------------------------- +const fde *__usercall linear_search_fdes@(object *ob@, const fde *this_fde@, char *pc@) +{ + __int16 v6; // ax + int cie_encoding; // esi + _Unwind_Ptr v8; // eax + char *v9; // edx + sword CIE_delta; // eax + const dwarf_cie *v11; // ebp + int *encoded_value_with_base_0; // eax + unsigned int v13; // eax + int v14; // edx + const dwarf_cie *last_cie; // [esp+14h] [ebp-38h] + int *base; // [esp+1Ch] [ebp-30h] + _Unwind_Ptr pc_begin; // [esp+28h] [ebp-24h] BYREF + _Unwind_Ptr pc_range[8]; // [esp+2Ch] [ebp-20h] BYREF + + v6 = *(_WORD *)&ob->s.b >> 3; + cie_encoding = (unsigned __int8)v6; + last_cie = 0; + for ( base = (int *)base_from_object(v6, (int)ob); + this_fde->length; + this_fde = (const fde *)((char *)this_fde + this_fde->length + 4) ) + { + CIE_delta = this_fde->CIE_delta; + if ( CIE_delta ) + { + if ( (*(_BYTE *)&ob->s.b & 4) != 0 ) + { + v11 = (const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta); + if ( v11 != last_cie ) + { + cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta)); + last_cie = v11; + base = (int *)base_from_object(cie_encoding, (int)ob); + } + } + if ( cie_encoding ) + { + encoded_value_with_base_0 = (int *)read_encoded_value_with_base_0( + cie_encoding, + base, + (int *)this_fde->pc_begin, + (int *)&pc_begin); + read_encoded_value_with_base_0(cie_encoding & 0xF, 0, encoded_value_with_base_0, (int *)pc_range); + v13 = size_of_encoded_value(cie_encoding); + v14 = -1; + if ( v13 <= 3 ) + v14 = (1 << (8 * v13)) - 1; + if ( (v14 & pc_begin) != 0 && (unsigned int)&pc[-pc_begin] < pc_range[0] ) + return this_fde; + } + else + { + v8 = *(_DWORD *)this_fde->pc_begin; + v9 = *(char **)&this_fde->pc_begin[4]; + pc_begin = v8; + pc_range[0] = (_Unwind_Ptr)v9; + if ( v8 && &pc[-v8] < v9 ) + return this_fde; + } + } + } + return 0; +} +// 45D170: using guessed type _Unwind_Ptr pc_range[8]; + +//----- (0045D2A0) -------------------------------------------------------- +int __cdecl fde_mixed_encoding_compare(object *ob, const fde *x, const fde *y) +{ + char cie_encoding; // di + int *v4; // eax + char v5; // si + int *v6; // eax + int result; // eax + _Unwind_Ptr x_ptr; // [esp+18h] [ebp-24h] BYREF + _Unwind_Ptr y_ptr[8]; // [esp+1Ch] [ebp-20h] BYREF + + cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&x->CIE_delta - x->CIE_delta)); + v4 = (int *)base_from_object(cie_encoding, (int)ob); + read_encoded_value_with_base_0(cie_encoding, v4, (int *)x->pc_begin, (int *)&x_ptr); + v5 = get_cie_encoding((const dwarf_cie *)((char *)&y->CIE_delta - y->CIE_delta)); + v6 = (int *)base_from_object(v5, (int)ob); + read_encoded_value_with_base_0(v5, v6, (int *)y->pc_begin, (int *)y_ptr); + result = 1; + if ( x_ptr <= y_ptr[0] ) + return -(x_ptr < y_ptr[0]); + return result; +} +// 45D2A0: using guessed type _Unwind_Ptr y_ptr[8]; + +//----- (0045D320) -------------------------------------------------------- +const fde *__usercall search_object@(int a1@, char *a2@) +{ + object *v2; // edi + char b; // al + union {const dwarf_fde *single;dwarf_fde **array;fde_vector *sort;} v4; // ebp + unsigned __int16 v5; // ax + unsigned int v6; // edx + unsigned int v7; // ecx + unsigned int v8; // eax + int v9; // ebx + unsigned int v10; // esi + const fde *result; // eax + size_t v12; // esi + const fde **single; // ebx + const fde *v14; // edx + size_t v15; // eax + unsigned int v16; // esi + int v17; // edi + char cie_encoding; // bl + int *v19; // eax + int *v20; // eax + const fde **v21; // esi + const fde *i; // edx + char v23; // bl + int v24; // eax + unsigned int CIE_delta; // edi + unsigned int v26; // ebp + unsigned int v27; // esi + int *encoded_value_with_base_0; // eax + fde_vector *v29; // eax + fde_vector *v30; // eax + const fde **v31; // ebx + const fde *v32; // ecx + fde_vector *linear; // esi + size_t count; // eax + const fde **v35; // ebx + int v36; // esi + fde_vector *v37; // ebp + fde_vector *v38; // eax + int v39; // ebp + fde_vector *v40; // esi + char *v41; // eax + fde_vector *v42; // eax + fde_vector *v43; // eax + fde_vector *v44; // esi + size_t v45; // ebp + size_t v46; // edx + int v47; // eax + const dwarf_fde *v48; // ecx + fde_vector *v49; // ecx + size_t v50; // eax + fde_vector *v51; // ebp + size_t v52; // edi + const dwarf_fde **v53; // ebx + int v54; // esi + size_t v55; // ebx + fde_vector *v56; // eax + fde_compare_t fde_compare; // [esp+10h] [ebp-4Ch] + char fde_comparea; // [esp+10h] [ebp-4Ch] + int (*fde_compareb)(object *, const fde *, const fde *); // [esp+10h] [ebp-4Ch] + unsigned int v61; // [esp+18h] [ebp-44h] + int *v62; // [esp+18h] [ebp-44h] + fde_vector *erratic; // [esp+18h] [ebp-44h] + const dwarf_fde *v64; // [esp+18h] [ebp-44h] + const dwarf_fde **ob; // [esp+1Ch] [ebp-40h] + object *oba; // [esp+1Ch] [ebp-40h] + size_t v67; // [esp+20h] [ebp-3Ch] + size_t v68; // [esp+20h] [ebp-3Ch] + char v69; // [esp+24h] [ebp-38h] + int v70; // [esp+24h] [ebp-38h] + fde_vector *v71; // [esp+24h] [ebp-38h] + int v72; // [esp+28h] [ebp-34h] + union {const dwarf_fde *single;dwarf_fde **array;fde_vector *sort;} v73; // [esp+28h] [ebp-34h] + fde_vector *v74; // [esp+28h] [ebp-34h] + size_t v75; // [esp+2Ch] [ebp-30h] + unsigned int v76; // [esp+34h] [ebp-28h] BYREF + fde_accumulator accu; // [esp+38h] [ebp-24h] BYREF + + v2 = (object *)a1; + b = *(_BYTE *)(a1 + 16); + if ( (b & 1) != 0 ) + goto LABEL_2; + v12 = v2->s.i >> 11; + v67 = v12; + if ( !v12 ) + { + single = (const fde **)v2->u.single; + if ( (b & 2) != 0 ) + { + v14 = *single; + if ( !*single ) + goto LABEL_30; + do + { + v15 = classify_object_over_fdes(v2, v14); + if ( v15 == -1 ) + goto LABEL_16; + v14 = single[1]; + ++single; + v12 += v15; + } + while ( v14 ); + v67 = v12; + } + else + { + v67 = classify_object_over_fdes(v2, v2->u.single); + if ( v67 == -1 ) + { +LABEL_16: + v2->s.i = 2040; + v2->u.single = (const dwarf_fde *)&terminator_22562; + goto LABEL_30; + } + } + if ( (v67 & 0xFFE00000) != 0 ) + v2->s.i &= 0x7FFu; + else + v2->s.i = (v67 << 11) | v2->s.i & 0x7FF; + if ( !v67 ) + goto LABEL_30; + } + v29 = (fde_vector *)malloc(4 * v67 + 8); + accu.linear = v29; + if ( !v29 ) + goto LABEL_30; + v29->count = 0; + v30 = (fde_vector *)malloc(4 * v67 + 8); + accu.erratic = v30; + if ( v30 ) + v30->count = 0; + v31 = (const fde **)v2->u.single; + if ( (*(_BYTE *)&v2->s.b & 2) != 0 ) + { + v32 = *v31; + if ( !*v31 ) + goto LABEL_96; + do + { + ++v31; + add_fdes(v2, &accu, v32); + v32 = *v31; + } + while ( *v31 ); + } + else + { + add_fdes(v2, &accu, v2->u.single); + } + linear = accu.linear; + v74 = accu.linear; + if ( accu.linear && accu.linear->count != v67 ) + goto LABEL_96; + fde_compareb = fde_mixed_encoding_compare; + if ( (*(_BYTE *)&v2->s.b & 4) == 0 ) + { + fde_compareb = fde_unencoded_compare; + if ( (*(_WORD *)&v2->s.b & 0x7F8) != 0 ) + fde_compareb = fde_single_encoding_compare; + } + erratic = accu.erratic; + if ( !accu.erratic ) + { + frame_heapsort(v2, fde_compareb, accu.linear); + goto LABEL_86; + } + count = accu.linear->count; + v75 = count; + if ( count ) + { + v35 = (const fde **)&marker_22456; + v70 = 4 * count + 4; + ob = accu.linear->array; + v36 = 8; + v37 = accu.linear; + while ( 1 ) + { + *(const void **)((char *)&erratic->orig_data + v36) = v35; + v35 = (const fde **)((char *)v37 + v36); + if ( v70 == v36 ) + break; + if ( v35 != (const fde **)&marker_22456 ) + { + v38 = v37; + v39 = v36; + v40 = v38; + do + { + if ( fde_compareb(v2, *(const fde **)((char *)&v40->count + v39), *v35) >= 0 ) + { + v42 = v40; + v36 = v39; + v37 = v42; + goto LABEL_65; + } + v41 = (char *)erratic + (char *)v35 - (char *)ob; + v35 = (const fde **)*((_DWORD *)v41 + 2); + *((_DWORD *)v41 + 2) = 0; + } + while ( v35 != (const fde **)&marker_22456 ); + v43 = v40; + v36 = v39; + v37 = v43; + } + v35 = (const fde **)&marker_22456; +LABEL_65: + v36 += 4; + } + v44 = v37; + v45 = 0; + v46 = 0; + v47 = 0; + do + { + v48 = v44->array[v47]; + if ( erratic->array[v47] ) + v44->array[v46++] = v48; + else + erratic->array[v45++] = v48; + ++v47; + } + while ( v75 != v47 ); + v49 = accu.erratic; + linear = accu.linear; + } + else + { + v49 = accu.erratic; + v45 = 0; + v46 = 0; + } + v74->count = v46; + erratic->count = v45; + if ( linear->count + v49->count != v67 ) +LABEL_96: + search_object_cold(); + frame_heapsort(v2, fde_compareb, v49); + v71 = accu.erratic; + v50 = accu.erratic->count; + if ( !v50 ) + goto LABEL_85; + v51 = accu.linear; + oba = v2; + v52 = accu.linear->count; + while ( 1 ) + { + v68 = v50 - 1; + v53 = (const dwarf_fde **)(&v71->orig_data + v50); + v64 = v53[1]; + if ( !v52 ) + break; + v54 = v52 + v50 - 1; + v55 = v52; + while ( 1 ) + { + v52 = v55--; + if ( fde_compareb(oba, v51->array[v55], v64) <= 0 ) + break; + v51->array[v54--] = v51->array[v55]; + if ( !v55 ) + { + v54 = v68; + v52 = 0; + break; + } + } +LABEL_81: + v51->array[v54] = v64; + if ( !v68 ) + goto LABEL_84; + v50 = v68; + } + v51->array[v50 - 1] = v64; + if ( v50 != 1 ) + { + v54 = v50 - 2; + v68 = v50 - 2; + v64 = *v53; + goto LABEL_81; + } +LABEL_84: + v2 = oba; + v51->count += v71->count; + v71 = accu.erratic; +LABEL_85: + __mingw_free((unsigned int)v71); +LABEL_86: + v56 = accu.linear; + accu.linear->orig_data = v2->u.single; + *(_BYTE *)&v2->s.b |= 1u; + v2->u.single = (const dwarf_fde *)v56; +LABEL_30: + if ( v2->pc_begin > a2 ) + return 0; + b = (char)v2->s.b; + v21 = (const fde **)v2->u.single; + if ( (b & 1) == 0 ) + { + if ( (b & 2) == 0 ) + return linear_search_fdes(v2, v2->u.single, a2); + for ( i = *v21; i; ++v21 ) + { + result = linear_search_fdes(v2, i, a2); + if ( result ) + return result; + i = v21[1]; + } + return 0; + } +LABEL_2: + v4.single = (const dwarf_fde *)v2->u; + if ( (b & 4) == 0 ) + { + v5 = v2->s.i; + if ( (v5 & 0x7F8) != 0 ) + { + v23 = v5 >> 3; + fde_comparea = v23; + v24 = base_from_object(v23, (int)v2); + CIE_delta = v4.single->CIE_delta; + v62 = (int *)v24; + if ( CIE_delta ) + { + v73.single = v4.single; + v26 = 0; + v69 = v23 & 0xF; + do + { + v27 = (CIE_delta + v26) >> 1; + v9 = *(_DWORD *)&v73.single->pc_begin[4 * v27]; + encoded_value_with_base_0 = (int *)read_encoded_value_with_base_0( + fde_comparea, + v62, + (int *)(v9 + 8), + (int *)&v76); + read_encoded_value_with_base_0(v69, 0, encoded_value_with_base_0, (int *)&accu); + if ( v76 <= (unsigned int)a2 ) + { + if ( (char *)accu.linear + v76 > a2 ) + return (const fde *)v9; + v26 = v27 + 1; + } + else + { + CIE_delta = (CIE_delta + v26) >> 1; + } + } + while ( v26 < CIE_delta ); + } + } + else + { + v6 = v4.single->CIE_delta; + v7 = 0; + while ( v6 > v7 ) + { + v8 = (v6 + v7) >> 1; + v9 = *(_DWORD *)&v4.single->pc_begin[4 * v8]; + v10 = *(_DWORD *)(v9 + 8); + if ( (unsigned int)a2 >= v10 ) + { + if ( (unsigned int)a2 < *(_DWORD *)(v9 + 12) + v10 ) + return (const fde *)v9; + v7 = v8 + 1; + } + else + { + v6 = (v6 + v7) >> 1; + } + } + } + return 0; + } + fde_compare = (fde_compare_t)v4.single->CIE_delta; + if ( !fde_compare ) + return 0; + v61 = 0; + v72 = (int)v2; + while ( 2 ) + { + v16 = ((unsigned int)fde_compare + v61) >> 1; + v17 = *(_DWORD *)&v4.single->pc_begin[4 * v16]; + cie_encoding = get_cie_encoding((const dwarf_cie *)(v17 + 4 - *(_DWORD *)(v17 + 4))); + v19 = (int *)base_from_object(cie_encoding, v72); + v20 = (int *)read_encoded_value_with_base_0(cie_encoding, v19, (int *)(v17 + 8), (int *)&v76); + read_encoded_value_with_base_0(cie_encoding & 0xF, 0, v20, (int *)&accu); + if ( v76 > (unsigned int)a2 ) + { + fde_compare = (fde_compare_t)(((unsigned int)fde_compare + v61) >> 1); +LABEL_23: + if ( v61 >= (unsigned int)fde_compare ) + return 0; + continue; + } + break; + } + if ( (char *)accu.linear + v76 <= a2 ) + { + v61 = v16 + 1; + goto LABEL_23; + } + return (const fde *)v17; +} + +//----- (0045D9A0) -------------------------------------------------------- +void __usercall __register_frame_info_bases_part_0( + const void *begin@, + object *ob@, + void *tbase@, + void *dbase) +{ + int v5; // eax + LONG v6; // eax + int v7; // edx + object *v8; // eax + object *v9; // eax + + ob->pc_begin = (void *)-1; + ob->tbase = tbase; + ob->u.single = (const dwarf_fde *)begin; + v5 = _CRT_MT; + ob->dbase = dbase; + ob->s.i = 2040; + if ( !v5 ) + goto LABEL_9; + if ( !once_22341 ) + { + if ( InterlockedIncrement(&dword_5150F0) ) + { + while ( !once_22341 ) + Sleep(0); + if ( _CRT_MT ) + goto LABEL_3; + } + else + { + init_object_mutex(); + once_22341 = 1; + if ( _CRT_MT ) + goto LABEL_3; + } +LABEL_9: + v9 = unseen_objects; + unseen_objects = ob; + ob->next = v9; + return; + } +LABEL_3: + v6 = InterlockedIncrement(&object_mutex.counter); + v7 = _CRT_MT; + if ( v6 ) + { + if ( WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&object_mutex.counter); + v7 = _CRT_MT; + } + v8 = unseen_objects; + unseen_objects = ob; + ob->next = v8; + if ( v7 ) + { + if ( InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + } +} +// 5150EC: using guessed type int once_22341; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0045DB00) -------------------------------------------------------- +void __cdecl __register_frame_info_bases(const void *begin, object *ob, void *tbase, void *dbase) +{ + if ( begin ) + { + if ( *(_DWORD *)begin ) + __register_frame_info_bases_part_0(begin, ob, tbase, dbase); + } +} + +//----- (0045DB30) -------------------------------------------------------- +void __cdecl __register_frame_info(const void *begin, object *ob) +{ + if ( begin ) + { + if ( *(_DWORD *)begin ) + __register_frame_info_bases_part_0(begin, ob, 0, 0); + } +} + +//----- (0045DB60) -------------------------------------------------------- +void __cdecl __register_frame(void *begin) +{ + object *v1; // eax + + if ( *(_DWORD *)begin ) + { + v1 = (object *)malloc(0x18u); + __register_frame_info_bases_part_0(begin, v1, 0, 0); + } +} + +//----- (0045DBA0) -------------------------------------------------------- +void __cdecl __register_frame_info_table_bases(void *begin, object *ob, void *tbase, void *dbase) +{ + LONG v4; // eax + int v5; // edx + object *v6; // eax + object *v7; // eax + + ob->tbase = tbase; + ob->pc_begin = (void *)-1; + ob->dbase = dbase; + ob->s.i = 2042; + ob->u.single = (const dwarf_fde *)begin; + if ( !_CRT_MT ) + goto LABEL_9; + if ( !once_22341 ) + { + if ( InterlockedIncrement(&dword_5150F0) ) + { + while ( !once_22341 ) + Sleep(0); + if ( _CRT_MT ) + goto LABEL_3; + } + else + { + init_object_mutex(); + once_22341 = 1; + if ( _CRT_MT ) + goto LABEL_3; + } +LABEL_9: + v7 = unseen_objects; + unseen_objects = ob; + ob->next = v7; + return; + } +LABEL_3: + v4 = InterlockedIncrement(&object_mutex.counter); + v5 = _CRT_MT; + if ( v4 ) + { + if ( WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&object_mutex.counter); + v5 = _CRT_MT; + } + v6 = unseen_objects; + unseen_objects = ob; + ob->next = v6; + if ( v5 ) + { + if ( InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + } +} +// 5150EC: using guessed type int once_22341; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0045DD10) -------------------------------------------------------- +void __cdecl __register_frame_info_table(void *begin, object *ob) +{ + __register_frame_info_table_bases(begin, ob, 0, 0); +} + +//----- (0045DD40) -------------------------------------------------------- +void __cdecl __register_frame_table(void *begin) +{ + object *ob; // [esp+4h] [ebp-18h] + + ob = (object *)malloc(0x18u); + __register_frame_info_table_bases(begin, ob, 0, 0); +} + +//----- (0045DD80) -------------------------------------------------------- +void *__cdecl __deregister_frame_info_bases(const void *begin) +{ + object *v1; // eax + object **p_next; // ecx + const void *single; // edx + object *v4; // ebx + object **v6; // edx + const void **v7; // eax + + if ( !begin || !*(_DWORD *)begin ) + return 0; + if ( _CRT_MT ) + { + if ( once_22341 ) + goto LABEL_39; + if ( InterlockedIncrement(&dword_5150F0) ) + { + while ( !once_22341 ) + Sleep(0); + } + else + { + init_object_mutex(); + once_22341 = 1; + } + if ( _CRT_MT ) + { +LABEL_39: + if ( InterlockedIncrement(&object_mutex.counter) && WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&object_mutex.counter); + } + } + v1 = unseen_objects; + if ( unseen_objects ) + { + p_next = &unseen_objects; + do + { + single = v1->u.single; + v4 = v1; + v1 = v1->next; + if ( begin == single ) + { + *p_next = v1; + goto LABEL_11; + } + p_next = &v4->next; + } + while ( v1 ); + } + v4 = seen_objects; + if ( !seen_objects ) + { +LABEL_30: + if ( _CRT_MT && InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + abort(); + } + v6 = &seen_objects; + while ( 1 ) + { + v7 = (const void **)v4->u.single; + if ( (*(_BYTE *)&v4->s.b & 1) != 0 ) + break; + if ( begin == v7 ) + { + *v6 = v4->next; + goto LABEL_11; + } +LABEL_17: + v6 = &v4->next; + v4 = v4->next; + if ( !v4 ) + goto LABEL_30; + } + if ( begin != *v7 ) + goto LABEL_17; + *v6 = v4->next; + __mingw_free((unsigned int)v7); +LABEL_11: + if ( _CRT_MT ) + { + if ( InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + } + return v4; +} +// 5150EC: using guessed type int once_22341; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0045DF90) -------------------------------------------------------- +void __cdecl __deregister_frame(void *begin) +{ + void *v1; // eax + + if ( *(_DWORD *)begin ) + { + v1 = __deregister_frame_info_bases(begin); + __mingw_free((unsigned int)v1); + } +} + +//----- (0045DFC0) -------------------------------------------------------- +const fde *__cdecl _Unwind_Find_FDE(void *pc, dwarf_eh_bases *bases) +{ + object *v2; // ebx + const fde *v3; // esi + char cie_encoding; // bp + int *v5; // eax + object **p_next; // edx + object *v8; // eax + _Unwind_Ptr func[8]; // [esp+1Ch] [ebp-20h] BYREF + + if ( _CRT_MT ) + { + if ( once_22341 ) + goto LABEL_3; + if ( InterlockedIncrement(&dword_5150F0) ) + { + while ( !once_22341 ) + Sleep(0); + if ( _CRT_MT ) + { +LABEL_3: + if ( InterlockedIncrement(&object_mutex.counter) && WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&object_mutex.counter); + } + } + else + { + init_object_mutex(); + once_22341 = 1; + if ( _CRT_MT ) + goto LABEL_3; + } + } + v2 = seen_objects; + if ( !seen_objects ) + goto LABEL_15; + while ( v2->pc_begin > pc ) + { + v2 = v2->next; + if ( !v2 ) + goto LABEL_15; + } + v3 = search_object((int)v2, (char *)pc); + if ( v3 ) + { +LABEL_9: + if ( _CRT_MT && InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + bases->tbase = v2->tbase; + bases->dbase = v2->dbase; + if ( (*(_BYTE *)&v2->s.b & 4) != 0 ) + cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&v3->CIE_delta - v3->CIE_delta)); + else + cie_encoding = *(_WORD *)&v2->s.b >> 3; + v5 = (int *)base_from_object(cie_encoding, (int)v2); + read_encoded_value_with_base_0(cie_encoding, v5, (int *)v3->pc_begin, (int *)func); + bases->func = (void *)func[0]; + return v3; + } + else + { +LABEL_15: + while ( 1 ) + { + v2 = unseen_objects; + if ( !unseen_objects ) + break; + unseen_objects = unseen_objects->next; + v3 = search_object((int)v2, (char *)pc); + v8 = seen_objects; + if ( seen_objects ) + { + p_next = &seen_objects; + while ( v8->pc_begin >= v2->pc_begin ) + { + p_next = &v8->next; + v8 = v8->next; + if ( !v8 ) + goto LABEL_14; + } + v2->next = v8; + *p_next = v2; + if ( v3 ) + goto LABEL_9; + } + else + { + p_next = &seen_objects; +LABEL_14: + v2->next = v8; + *p_next = v2; + if ( v3 ) + goto LABEL_9; + } + } + if ( _CRT_MT && InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + return 0; + } +} +// 5150EC: using guessed type int once_22341; +// 78A9D4: using guessed type int _CRT_MT; +// 45DFC0: using guessed type _Unwind_Ptr func[8]; + +//----- (0045E240) -------------------------------------------------------- +void __cdecl emutls_destroy(void *ptr) +{ + int v1; // edi + int v2; // ebx + int v3; // eax + + v1 = *(_DWORD *)ptr; + if ( *(_DWORD *)ptr ) + { + v2 = 0; + do + { + v3 = *((_DWORD *)ptr + v2 + 1); + if ( v3 ) + __mingw_free(*(_DWORD *)(v3 - 4)); + ++v2; + } + while ( v1 != v2 ); + } + __mingw_free((unsigned int)ptr); +} + +//----- (0045E290) -------------------------------------------------------- +_DWORD *__usercall emutls_alloc@(size_t *a1@) +{ + unsigned int v2; // ebp + size_t v3; // edi + _DWORD *v4; // eax + _DWORD *v5; // ebx + const void *Src; // eax + void *v8; // eax + size_t v9; // [esp+8h] [ebp-24h] + + v2 = a1[1]; + v3 = *a1; + if ( v2 > 4 ) + { + v8 = malloc(v2 + v3 + 3); + if ( v8 ) + { + v5 = (_DWORD *)(-v2 & ((unsigned int)v8 + v2 + 3)); + *(v5 - 1) = v8; + Src = (const void *)a1[3]; + v9 = v3; + if ( Src ) + goto LABEL_4; + goto LABEL_7; + } +LABEL_8: + emutls_alloc_cold(); + } + v4 = malloc(v3 + 4); + if ( !v4 ) + goto LABEL_8; + *v4 = v4; + v5 = v4 + 1; + Src = (const void *)a1[3]; + v9 = v3; + if ( Src ) + { +LABEL_4: + memcpy(v5, Src, v9); + return v5; + } +LABEL_7: + memset(v5, 0, v9); + return v5; +} + +//----- (0045E330) -------------------------------------------------------- +DWORD emutls_init() +{ + int v0; // eax + DWORD result; // eax + + emutls_mutex.counter = -1; + emutls_mutex.sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); + v0 = TlsAlloc(); + if ( v0 == -1 ) + { + result = GetLastError(); + } + else + { + emutls_key = v0; + result = __mingwthr_key_dtor(v0, (int)emutls_destroy); + } + if ( result ) + emutls_init_cold(); + return result; +} + +//----- (0045E3A0) -------------------------------------------------------- +_DWORD *__cdecl __emutls_get_address(size_t *a1) +{ + _DWORD *result; // eax + pointer v2; // edi + DWORD dwTlsIndex; // ebx + DWORD LastError; // ebp + pointer *Value; // ebx + pointer v6; // ebp + pointer *v7; // ebx + pointer *v8; // eax + int v9; // edx + pointer *v10; // eax + int v11; // [esp+1Ch] [ebp-20h] + + if ( !_CRT_MT ) + { + result = (_DWORD *)a1[2]; + if ( !result ) + { + result = emutls_alloc(a1); + a1[2] = (size_t)result; + } + return result; + } + v2 = a1[2]; + if ( !v2 ) + { + if ( !_CRT_MT ) + goto LABEL_28; + if ( once_21263 ) + goto LABEL_39; + if ( InterlockedIncrement(&dword_5150F8) ) + { + while ( !once_21263 ) + Sleep(0); + } + else + { + emutls_init(); + once_21263 = 1; + } + if ( _CRT_MT ) + { +LABEL_39: + if ( InterlockedIncrement(&emutls_mutex.counter) && WaitForSingleObject(emutls_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&emutls_mutex.counter); + v2 = a1[2]; + if ( v2 ) + goto LABEL_14; + } + else + { +LABEL_28: + v2 = a1[2]; + if ( v2 ) + goto LABEL_5; + } + v2 = emutls_size + 1; + emutls_size = v2; + a1[2] = v2; +LABEL_14: + if ( _CRT_MT && InterlockedDecrement(&emutls_mutex.counter) >= 0 ) + ReleaseSemaphore(emutls_mutex.sema, 1, 0); + } +LABEL_5: + dwTlsIndex = emutls_key; + LastError = GetLastError(); + Value = (pointer *)TlsGetValue(dwTlsIndex); + SetLastError(LastError); + if ( !Value ) + { + v8 = (pointer *)calloc(v2 + 33, 4u); + Value = v8; + if ( v8 ) + { + *v8 = v2 + 32; + goto LABEL_19; + } +LABEL_35: + __emutls_get_address_cold(); + } + v6 = *Value; + if ( *Value < v2 ) + { + v9 = 2 * v6; + if ( v2 > 2 * v6 ) + v9 = v2 + 32; + v11 = v9; + v10 = (pointer *)__mingw_realloc((unsigned int)Value, 4 * v9 + 4); + Value = v10; + if ( v10 ) + { + *v10 = v11; + memset(&v10[v6 + 1], 0, 4 * (v11 - v6)); +LABEL_19: + if ( !TlsSetValue(emutls_key, Value) ) + GetLastError(); + goto LABEL_7; + } + goto LABEL_35; + } +LABEL_7: + v7 = &Value[v2]; + result = (_DWORD *)*v7; + if ( !*v7 ) + { + result = emutls_alloc(a1); + *v7 = (pointer)result; + } + return result; +} +// 5150F4: using guessed type int once_21263; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0045E610) -------------------------------------------------------- +void __cdecl __emutls_register_common(__emutls_object *obj, word size, word align, void *templ) +{ + if ( obj->size < size ) + { + obj->size = size; + obj->templ = 0; + } + if ( obj->align < align ) + obj->align = align; + if ( templ ) + { + if ( obj->size == size ) + obj->templ = templ; + } +} + +//----- (0045E990) -------------------------------------------------------- +int __cdecl __mingwthr_key_dtor(int a1, int a2) +{ + if ( a2 ) + return ___w64_mingwthr_add_key_dtor(a1, a2); + else + return 0; +} + +//----- (0045E9B0) -------------------------------------------------------- +int __cdecl GetUnicode[abi:cxx11](int a1, unsigned int a2) +{ + char v2; // bl + unsigned int v3; // eax + unsigned int v4; // eax + + v2 = a2; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + if ( a2 > 0x7F ) + { + if ( a2 > 0x7FF ) + { + if ( a2 > 0xFFFF ) + { + std::string::push_back((_DWORD *)a1, (a2 >> 18) | 0xF0); + v4 = (a2 >> 12) & 0x3F | 0xFFFFFF80; + } + else + { + v4 = (a2 >> 12) | 0xFFFFFFE0; + } + std::string::push_back((_DWORD *)a1, v4); + v3 = (a2 >> 6) & 0x3F | 0xFFFFFF80; + } + else + { + v3 = (a2 >> 6) | 0xFFFFFFC0; + } + std::string::push_back((_DWORD *)a1, v3); + v2 = a2 & 0x3F | 0x80; + } + std::string::push_back((_DWORD *)a1, v2); + return a1; +} + +//----- (0045EA6C) -------------------------------------------------------- +int __cdecl GetJsonDict(int *a1, int a2) +{ + _BYTE *v2; // eax + unsigned int v3; // edx + int JsonString; // eax + unsigned int v5; // edx + _DWORD *v6; // eax + unsigned int v7; // edx + int v9; // [esp+1Ch] [ebp-5Ch] + unsigned int v10; // [esp+2Ch] [ebp-4Ch] BYREF + void *v11[2]; // [esp+30h] [ebp-48h] BYREF + char v12; // [esp+38h] [ebp-40h] BYREF + void *v13[2]; // [esp+48h] [ebp-30h] BYREF + char v14; // [esp+50h] [ebp-28h] BYREF + + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a2 + 8)); + *(_DWORD *)(a2 + 12) = a2 + 4; + *(_DWORD *)(a2 + 16) = a2 + 4; + v2 = (_BYTE *)*a1; + *(_DWORD *)(a2 + 8) = 0; + *(_DWORD *)(a2 + 20) = 0; + if ( *v2 != 123 ) + return -1; + v10 = 1; + while ( 1 ) + { + v3 = a1[1]; + if ( v10 >= v3 ) + return 0; + v11[1] = 0; + v11[0] = &v12; + v12 = 0; + v13[0] = &v14; + v13[1] = 0; + v14 = 0; + while ( v10 < v3 ) + { + if ( *(_BYTE *)(*a1 + v10) == 34 ) + goto LABEL_9; + ++v10; + } + if ( v10 == v3 ) + goto LABEL_26; +LABEL_9: + JsonString = GetJsonString(a1, (int *)&v10, v11); + if ( JsonString ) + goto LABEL_27; + v5 = a1[1]; + while ( v10 < v5 ) + { + if ( *(_BYTE *)(*a1 + v10) == 58 ) + goto LABEL_18; + ++v10; + } + if ( v10 == v5 ) + { +LABEL_26: + std::string::_M_dispose(v13); + std::string::_M_dispose(v11); + return 0; + } +LABEL_18: + while ( v10 < v5 ) + { + if ( *(_BYTE *)(*a1 + v10) == 34 ) + goto LABEL_20; + ++v10; + } + if ( v10 == v5 ) + goto LABEL_26; +LABEL_20: + JsonString = GetJsonString(a1, (int *)&v10, v13); + if ( JsonString ) + { +LABEL_27: + v9 = JsonString; + std::string::_M_dispose(v13); + std::string::_M_dispose(v11); + return v9; + } + v6 = std::map::operator[]((_DWORD *)a2, (int)v11); + std::string::_M_assign((int)v6, (int)v13); + v7 = a1[1]; + while ( v10 < v7 && *(_BYTE *)(*a1 + v10) != 44 ) + ++v10; + std::string::_M_dispose(v13); + std::string::_M_dispose(v11); + } +} + +//----- (0045EC00) -------------------------------------------------------- +int __cdecl GetJsonString(int *a1, int *a2, _DWORD *a3) +{ + int v3; // ebx + int v4; // edx + char v5; // al + int v6; // eax + char v7; // al + int UnicodeNum; // edi + int v9; // eax + __int16 v10; // ax + char v12; // [esp+4h] [ebp-114h] + int v13; // [esp+18h] [ebp-100h] + unsigned int v14; // [esp+1Ch] [ebp-FCh] + int v15; // [esp+1Ch] [ebp-FCh] + int v16[6]; // [esp+20h] [ebp-F8h] BYREF + char v17[4]; // [esp+38h] [ebp-E0h] BYREF + int v18[55]; // [esp+3Ch] [ebp-DCh] BYREF + + std::ostringstream::basic_ostringstream((int)v17); + v3 = *a2; + if ( *(_BYTE *)(*a1 + *a2) != 34 ) + { +LABEL_41: + v9 = ~v3; + goto LABEL_42; + } + for ( *a2 = v3 + 1; ; ++*a2 ) + { + v3 = *a2; + v14 = a1[1]; + if ( *a2 >= v14 ) + goto LABEL_41; + v4 = *a1; + v5 = *(_BYTE *)(*a1 + v3); + if ( v5 == 34 ) + break; + if ( v5 == 92 ) + { + if ( v3 + 1 >= v14 ) + { + v6 = -2; +LABEL_31: + v9 = v6 - v3; + goto LABEL_42; + } + v7 = *(_BYTE *)(v4 + v3 + 1); + if ( v7 == 110 ) + { + v12 = 10; + goto LABEL_26; + } + if ( v7 <= 110 ) + { + if ( v7 == 98 ) + { + v12 = 8; + goto LABEL_26; + } + if ( v7 <= 98 ) + { + if ( v7 != 47 && v7 != 92 && v7 != 34 ) + goto LABEL_41; + std::operator<<>((std::ostream::sentry *)v17, *(_BYTE *)(v4 + v3 + 1)); + goto LABEL_27; + } + if ( v7 != 102 ) + goto LABEL_41; + v12 = 12; +LABEL_26: + std::operator<<>((std::ostream::sentry *)v17, v12); +LABEL_27: + ++*a2; + continue; + } + if ( v7 == 116 ) + { + v12 = 9; + goto LABEL_26; + } + if ( v7 != 117 ) + { + if ( v7 != 114 ) + goto LABEL_41; + v12 = 13; + goto LABEL_26; + } + v13 = *a1; + UnicodeNum = GetUnicodeNum(a1, v3); + if ( (unsigned int)(UnicodeNum - 55296) > 0x3FF ) + { + *a2 = v3 + 5; + } + else + { + if ( v3 + 11 >= v14 || *(_BYTE *)(v13 + v3 + 6) != 92 ) + { + v6 = -7; + goto LABEL_31; + } + if ( *(_BYTE *)(v13 + v3 + 7) != 117 ) + { + v6 = -8; + goto LABEL_31; + } + v10 = GetUnicodeNum(a1, v3 + 6); + *a2 = v3 + 11; + UnicodeNum = (v10 & 0x3FF | (UnicodeNum << 10) & 0xFFC00) + 0x10000; + } + GetUnicode[abi:cxx11]((int)v16, UnicodeNum); + std::operator<<((std::ostream::sentry *)v17, v16); + std::string::_M_dispose((void **)v16); + } + else + { + std::operator<<>((std::ostream::sentry *)v17, *(_BYTE *)(*a1 + v3)); + } + } + *a2 = v3 + 1; + std::stringbuf::str((int)v16, v18); + std::string::operator=(a3, v16); + std::string::_M_dispose((void **)v16); + v9 = 0; +LABEL_42: + v15 = v9; + std::ostringstream::~ostringstream((int)v17); + return v15; +} +// 45EC00: using guessed type char var_E0[4]; +// 45EC00: using guessed type int var_DC[55]; + +//----- (0045EE44) -------------------------------------------------------- +int __cdecl GetUnicodeNum(int *a1, int a2) +{ + int v2; // edi + int v3; // ebx + int v4; // ebx + int v5; // ebx + + v2 = *a1; + v3 = HexDigit(*(_BYTE *)(*a1 + a2 + 2), 12); + v4 = HexDigit(*(_BYTE *)(v2 + a2 + 3), 8) + v3; + v5 = HexDigit(*(_BYTE *)(v2 + a2 + 4), 4) + v4; + return v5 + HexDigit(*(_BYTE *)(v2 + a2 + 5), 0); +} + +//----- (0045EEBC) -------------------------------------------------------- +int __cdecl DictToJsonString(int a1, int a2) +{ + int v2; // ebx + char v3; // al + std::ostream::sentry *v4; // edi + std::ostream::sentry *v5; // eax + std::ostream::sentry *v6; // esi + std::ostream::sentry *v7; // eax + char *v9[6]; // [esp+20h] [ebp-F8h] BYREF + char v10[4]; // [esp+38h] [ebp-E0h] BYREF + int v11[55]; // [esp+3Ch] [ebp-DCh] BYREF + + std::ostringstream::basic_ostringstream((int)v10); + std::operator<<>((std::ostream::sentry *)v10, "{"); + v2 = *(_DWORD *)(a2 + 12); + v3 = 1; + while ( a2 + 4 != v2 ) + { + if ( !v3 ) + std::operator<<>((std::ostream::sentry *)v10, ","); + v4 = std::operator<<>((std::ostream::sentry *)v10, "\""); + EscapeToJsonString((int)v9, v2 + 16); + v5 = std::operator<<>(v4, v9[0]); + std::operator<<>(v5, "\":"); + std::string::_M_dispose((void **)v9); + v6 = std::operator<<>((std::ostream::sentry *)v10, "\""); + EscapeToJsonString((int)v9, v2 + 40); + v7 = std::operator<<>(v6, v9[0]); + std::operator<<>(v7, "\""); + std::string::_M_dispose((void **)v9); + v2 = std::_Rb_tree_increment(v2); + v3 = 0; + } + std::operator<<>((std::ostream::sentry *)v10, "}"); + std::stringbuf::str(a1, v11); + std::ostringstream::~ostringstream((int)v10); + return a1; +} +// 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); +// 45EEBC: using guessed type char var_E0[4]; +// 45EEBC: using guessed type int var_DC[55]; + +//----- (0045F034) -------------------------------------------------------- +int __cdecl EscapeToJsonString(int a1, int a2) +{ + char *i; // ebx + char v3; // al + char *v4; // eax + char *v5; // eax + char v7[4]; // [esp+18h] [ebp-D0h] BYREF + int v8[51]; // [esp+1Ch] [ebp-CCh] BYREF + + std::ostringstream::basic_ostringstream((int)v7); + for ( i = *(char **)a2; i != (char *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 4)); ++i ) + { + v3 = *i; + if ( *i == 92 || v3 == 34 || (unsigned __int8)v3 <= 0x1Fu ) + { + v4 = (char *)std::operator<<>((std::ostream::sentry *)v7, "\\u"); + v5 = std::ostream::operator<<(v4, (void (__cdecl *)(char *))std::hex); + *(_DWORD *)&v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 8] = 4; + std::operator<<>(v5, 48); + std::ostream::operator<<(*i); + } + else + { + std::operator<<>((std::ostream::sentry *)v7, *i); + } + } + std::stringbuf::str(a1, v8); + std::ostringstream::~ostringstream((int)v7); + return a1; +} +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 45F034: using guessed type char var_D0[4]; +// 45F034: using guessed type int var_CC[51]; + +//----- (0045F110) -------------------------------------------------------- +int __cdecl _txnal_cow_string_D1() +{ + int v0; // eax + + v0 = MEMORY[0](); + return MEMORY[0](1, 0, v0 - 12); +} + +//----- (0045F140) -------------------------------------------------------- +void __cdecl __noreturn _txnal_cow_string_c_str() +{ + JUMPOUT(0); +} +// 45F144: control flows out of bounds to 0 + +//----- (0045F150) -------------------------------------------------------- +void __cdecl __noreturn _txnal_sso_string_c_str() +{ + JUMPOUT(0); +} +// 45F154: control flows out of bounds to 0 + +//----- (0045F160) -------------------------------------------------------- +char *__cdecl _txnal_logic_error_get_msg(char *a1) +{ + return a1 + 4; +} + +//----- (0045F170) -------------------------------------------------------- +void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *a1) +{ + int v1; // eax + int v2[3]; // [esp+1Fh] [ebp-Dh] BYREF + + if ( a1 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + { + v1 = _InterlockedExchangeAdd(a1 + 2, 0xFFFFFFFF); + } + else + { + v1 = *((_DWORD *)a1 + 2); + *((_DWORD *)a1 + 2) = v1 - 1; + } + if ( v1 <= 0 ) + std::string::_Rep::_M_destroy((void *)a1, (int)v2); + } +} +// 78A9D4: using guessed type int _CRT_MT; +// 45F170: using guessed type int var_D[3]; + +//----- (0045F1C0) -------------------------------------------------------- +char *__cdecl _txnal_runtime_error_get_msg(char *a1) +{ + return a1 + 4; +} + +//----- (0045F1D0) -------------------------------------------------------- +_DWORD *__cdecl _txnal_cow_string_C1_for_exceptions(_DWORD *a1) +{ + int v1; // ebx + _DWORD *v2; // eax + _DWORD *v3; // esi + _DWORD *result; // eax + + v1 = 1; + while ( (unsigned __int8)MEMORY[0]() ) + ++v1; + v2 = (_DWORD *)MEMORY[0](v1 + 12); + v2[2] = 0; + v3 = v2 + 3; + v2[1] = v1 - 1; + *v2 = v1 - 1; + MEMORY[0](v1); + result = a1; + *a1 = v3; + return result; +} +// 506514: using guessed type void __noreturn _txnal_cow_string_C1_for_exceptions(void); + +//----- (0045F240) -------------------------------------------------------- +int __cdecl HexDigit(char a1, char a2) +{ + int v2; // eax + + if ( (unsigned __int8)(a1 - 48) > 9u ) + { + if ( (unsigned __int8)(a1 - 97) > 5u ) + { + v2 = 0; + if ( (unsigned __int8)(a1 - 65) <= 5u ) + v2 = a1 - 55; + } + else + { + v2 = a1 - 87; + } + } + else + { + v2 = a1 - 48; + } + return v2 << a2; +} + +//----- (0045F280) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1) +{ + JUMPOUT(0); +} +// 45F287: control flows out of bounds to 0 + +//----- (0045F2A0) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1) +{ + JUMPOUT(0); +} +// 45F2A7: control flows out of bounds to 0 + +//----- (0045F2C0) -------------------------------------------------------- +void __cdecl _ZGTtNSt11logic_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::logic_error::~logic_error(v2); +} +// 45F2D3: variable 'v1' is possibly undefined +// 45F2C0: using guessed type _DWORD var_14[5]; + +//----- (0045F320) -------------------------------------------------------- +void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::logic_error::~logic_error(v2); +} +// 45F333: variable 'v1' is possibly undefined +// 45F320: using guessed type _DWORD var_14[5]; + +//----- (0045F380) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 45F39B: control flows out of bounds to 0 + +//----- (0045F3A0) -------------------------------------------------------- +int _ZGTtNSt11logic_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0045F3B0) -------------------------------------------------------- +void __cdecl _ZGTtNSt11range_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_530AF4, v1); + v2[0] = (int)&off_5385E4; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::range_error::~range_error(v2); +} +// 45F3C3: variable 'v1' is possibly undefined +// 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); + +//----- (0045F420) -------------------------------------------------------- +void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_530AF4, v1); + v2[0] = (int)&off_5385E4; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::range_error::~range_error(v2); +} +// 45F433: variable 'v1' is possibly undefined +// 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); + +//----- (0045F490) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 45F4AB: control flows out of bounds to 0 + +//----- (0045F4B0) -------------------------------------------------------- +int _ZGTtNSt11range_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0045F4C0) -------------------------------------------------------- +void __cdecl _ZGTtNSt12domain_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + v2[0] = (int)&off_538668; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::domain_error::~domain_error(v2); +} +// 45F4D3: variable 'v1' is possibly undefined +// 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); + +//----- (0045F530) -------------------------------------------------------- +void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + v2[0] = (int)&off_538668; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::domain_error::~domain_error(v2); +} +// 45F543: variable 'v1' is possibly undefined +// 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); + +//----- (0045F5A0) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 45F5BB: control flows out of bounds to 0 + +//----- (0045F5C0) -------------------------------------------------------- +int _ZGTtNSt12domain_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0045F5D0) -------------------------------------------------------- +void __cdecl _ZGTtNSt12length_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + v2[0] = (int)&off_53867C; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::length_error::~length_error(v2); +} +// 45F5E3: variable 'v1' is possibly undefined +// 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); + +//----- (0045F640) -------------------------------------------------------- +void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + v2[0] = (int)&off_53867C; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::length_error::~length_error(v2); +} +// 45F653: variable 'v1' is possibly undefined +// 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); + +//----- (0045F6B0) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 45F6CB: control flows out of bounds to 0 + +//----- (0045F6D0) -------------------------------------------------------- +int _ZGTtNSt12length_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0045F6E0) -------------------------------------------------------- +void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + v2[0] = (int)&off_538690; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::out_of_range::~out_of_range(v2); +} +// 45F6F3: variable 'v1' is possibly undefined +// 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); + +//----- (0045F750) -------------------------------------------------------- +void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + v2[0] = (int)&off_538690; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::out_of_range::~out_of_range(v2); +} +// 45F763: variable 'v1' is possibly undefined +// 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); + +//----- (0045F7C0) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 45F7DB: control flows out of bounds to 0 + +//----- (0045F7E0) -------------------------------------------------------- +int _ZGTtNSt12out_of_rangeD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0045F7F0) -------------------------------------------------------- +void __cdecl _ZGTtNSt13runtime_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_530AF4, v1); + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::runtime_error::~runtime_error(v2); +} +// 45F803: variable 'v1' is possibly undefined +// 45F7F0: using guessed type _DWORD var_14[5]; + +//----- (0045F850) -------------------------------------------------------- +void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_530AF4, v1); + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::runtime_error::~runtime_error(v2); +} +// 45F863: variable 'v1' is possibly undefined +// 45F850: using guessed type _DWORD var_14[5]; + +//----- (0045F8B0) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 45F8CB: control flows out of bounds to 0 + +//----- (0045F8D0) -------------------------------------------------------- +int _ZGTtNSt13runtime_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0045F8E0) -------------------------------------------------------- +void __cdecl _ZGTtNSt14overflow_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_530AF4, v1); + v2[0] = (int)&off_5389A8; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::overflow_error::~overflow_error(v2); +} +// 45F8F3: variable 'v1' is possibly undefined +// 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); + +//----- (0045F950) -------------------------------------------------------- +void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_530AF4, v1); + v2[0] = (int)&off_5389A8; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::overflow_error::~overflow_error(v2); +} +// 45F963: variable 'v1' is possibly undefined +// 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); + +//----- (0045F9C0) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 45F9DB: control flows out of bounds to 0 + +//----- (0045F9E0) -------------------------------------------------------- +int _ZGTtNSt14overflow_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0045F9F0) -------------------------------------------------------- +void __cdecl _ZGTtNSt15underflow_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_530AF4, v1); + v2[0] = (int)&off_538BC0; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::underflow_error::~underflow_error(v2); +} +// 45FA03: variable 'v1' is possibly undefined +// 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); + +//----- (0045FA60) -------------------------------------------------------- +void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_530AF4, v1); + v2[0] = (int)&off_538BC0; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::underflow_error::~underflow_error(v2); +} +// 45FA73: variable 'v1' is possibly undefined +// 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); + +//----- (0045FAD0) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 45FAEB: control flows out of bounds to 0 + +//----- (0045FAF0) -------------------------------------------------------- +int _ZGTtNSt15underflow_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0045FB00) -------------------------------------------------------- +void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + v2[0] = (int)&off_538BF4; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::invalid_argument::~invalid_argument(v2); +} +// 45FB13: variable 'v1' is possibly undefined +// 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); + +//----- (0045FB70) -------------------------------------------------------- +void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_530AF4, v1); + v2[0] = (int)&off_538BF4; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::invalid_argument::~invalid_argument(v2); +} +// 45FB83: variable 'v1' is possibly undefined +// 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); + +//----- (0045FBE0) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 45FBFB: control flows out of bounds to 0 + +//----- (0045FC00) -------------------------------------------------------- +int _ZGTtNSt16invalid_argumentD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0045FC10) -------------------------------------------------------- +void __cdecl eh_globals_dtor(int *a1) +{ + int v1; // ebx + int v2; // eax + + if ( a1 ) + { + v1 = *a1; + while ( v1 ) + { + v2 = v1; + v1 = *(_DWORD *)(v1 + 16); + _Unwind_DeleteException((_Unwind_Exception *)(v2 + 48)); + } + __mingw_free((unsigned int)a1); + } +} + +//----- (0045FC60) -------------------------------------------------------- +int __usercall get_ttype_entry@(int a1@, int a2@) +{ + char v2; // bl + unsigned __int8 v3; // cl + int v4; // ecx + int v6[4]; // [esp+1Ch] [ebp-10h] BYREF + + v2 = *(_BYTE *)(a1 + 20); + if ( v2 == -1 ) + { + v4 = 0; + goto LABEL_7; + } + v3 = v2 & 7; + if ( (v2 & 7) == 2 ) + { + v4 = -2 * a2; + goto LABEL_7; + } + if ( v3 <= 2u ) + { + if ( v3 ) + goto LABEL_12; +LABEL_9: + v4 = -4 * a2; + goto LABEL_7; + } + if ( v3 == 3 ) + goto LABEL_9; + if ( v3 != 4 ) +LABEL_12: + get_ttype_entry(); + v4 = -8 * a2; +LABEL_7: + read_encoded_value_with_base(v2, *(int **)(a1 + 8), (int *)(*(_DWORD *)(a1 + 12) + v4), v6); + return v6[0]; +} +// 45FC60: using guessed type int var_10[4]; + +//----- (0045FCE0) -------------------------------------------------------- +int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@) +{ + int result; // eax + int *v7; // [esp+1Ch] [ebp-10h] BYREF + + v7 = *a3; + if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2) ) + v7 = (int *)*v7; + result = (*(int (__thiscall **)(int, int, int **, int))(*(_DWORD *)a1 + 16))(a1, a2, &v7, 1); + if ( (_BYTE)result ) + *a3 = v7; + return result; +} + +//----- (0045FD40) -------------------------------------------------------- +char *__usercall parse_lsda_header@(_Unwind_Context *a1@, char *a2@, int a3@) +{ + _Unwind_Ptr RegionStart; // eax + char v7; // dl + int *v8; // ebp + char v9; // al + char *v10; // esi + int v11; // edi + int v12; // ecx + char v13; // dl + int v14; // eax + char *v15; // edx + int v16; // edi + int v17; // ecx + char v18; // si + int v19; // eax + char *result; // eax + char v21; // di + int *v22; // eax + char *encoded_value_with_base; // ebp + char v24; // al + + RegionStart = 0; + if ( a1 ) + RegionStart = _Unwind_GetRegionStart(a1); + *(_DWORD *)a3 = RegionStart; + v7 = *a2; + v8 = (int *)(a2 + 1); + if ( *a2 == -1 ) + { + *(_DWORD *)(a3 + 4) = RegionStart; + v9 = *(_BYTE *)v8; + v10 = a2 + 2; + *(_BYTE *)(a3 + 20) = *(_BYTE *)v8; + if ( v9 != -1 ) + goto LABEL_5; +LABEL_12: + *(_DWORD *)(a3 + 12) = 0; + goto LABEL_8; + } + v21 = *a2; + v22 = (int *)base_of_encoded_value(v7, a1); + encoded_value_with_base = read_encoded_value_with_base(v21, v22, v8, (int *)(a3 + 4)); + v24 = *encoded_value_with_base; + v10 = encoded_value_with_base + 1; + *(_BYTE *)(a3 + 20) = *encoded_value_with_base; + if ( v24 == -1 ) + goto LABEL_12; +LABEL_5: + v11 = 0; + v12 = 0; + do + { + v13 = *v10++; + v14 = (v13 & 0x7F) << v12; + v12 += 7; + v11 |= v14; + } + while ( v13 < 0 ); + *(_DWORD *)(a3 + 12) = &v10[v11]; +LABEL_8: + v15 = v10 + 1; + v16 = 0; + v17 = 0; + *(_BYTE *)(a3 + 21) = *v10; + do + { + v18 = *v15++; + v19 = (v18 & 0x7F) << v17; + v17 += 7; + v16 |= v19; + } + while ( v18 < 0 ); + result = v15; + *(_DWORD *)(a3 + 16) = &v15[v16]; + return result; +} + +//----- (0045FE20) -------------------------------------------------------- +int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4) +{ + char *v6; // ebx + int v7; // ebp + int v8; // ecx + char v9; // dl + int v10; // eax + int ttype_entry; // eax + int result; // eax + int *v13; // [esp+Ch] [ebp-20h] BYREF + + v13 = a3; + v6 = (char *)(*(_DWORD *)(a1 + 12) + ~a4); + while ( 1 ) + { + v7 = 0; + v8 = 0; + do + { + v9 = *v6++; + v10 = (v9 & 0x7F) << v8; + v8 += 7; + v7 |= v10; + } + while ( v9 < 0 ); + if ( !v7 ) + break; + ttype_entry = get_ttype_entry(a1, v7); + result = get_adjusted_ptr(ttype_entry, a2, &v13); + if ( (_BYTE)result ) + return result; + } + return 0; +} + +//----- (0045FE90) -------------------------------------------------------- +_Unwind_Ptr __usercall base_of_encoded_value@(char a1@, _Unwind_Context *context@) +{ + unsigned __int8 v2; // cl + + if ( a1 == -1 ) + return 0; + v2 = a1 & 0x70; + if ( (a1 & 0x70) == 48 ) + return _Unwind_GetDataRelBase(context); + if ( v2 <= 0x30u ) + { + if ( v2 == 32 ) + return _Unwind_GetTextRelBase(context); + if ( v2 <= 0x20u && (a1 & 0x60) == 0 ) + return 0; + goto LABEL_13; + } + if ( v2 != 64 ) + { + if ( v2 == 80 ) + return 0; +LABEL_13: + base_of_encoded_value(); + } + return _Unwind_GetRegionStart(context); +} + +//----- (0045FF10) -------------------------------------------------------- +void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, _Unwind_Exception *a2) +{ + void (__fastcall *v2)(_Unwind_Exception *); // edx + + if ( (unsigned int)a1 > 1 ) + __cxxabiv1::__terminate(*((void (**)(void))&a2[-2].private_2 + 3)); + if ( !_InterlockedSub((volatile signed __int32 *)&a2[-2], 1u) ) + { + v2 = (void (__fastcall *)(_Unwind_Exception *))*(&a2[-2].private_2 + 1); + if ( v2 ) + v2(a2 + 1); + __cxa_free_exception(&a2[1]); + } +} + +//----- (0045FF60) -------------------------------------------------------- +char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4) +{ + int v6; // edx + char *result; // eax + _DWORD *v8; // eax + int v9; // edx + int v10; // ecx + int v11; // ebp + char v12; // dl + int v13; // edi + unsigned int v14; // ecx + int v15; // ebp + char v16; // dl + int v17; // edi + char v18; // di + + if ( a1 == 80 ) + { + v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); + v9 = *v8; + result = (char *)(v8 + 1); + *a4 = v9; + } + else + { + switch ( a1 & 0xF ) + { + case 0: + case 3: + case 0xB: + v6 = *a3; + result = (char *)(a3 + 1); + goto LABEL_4; + case 1: + result = (char *)a3; + v10 = 0; + v11 = 0; + do + { + v12 = *result++; + v13 = (v12 & 0x7F) << v10; + v10 += 7; + v11 |= v13; + } + while ( v12 < 0 ); + v6 = v11; + goto LABEL_4; + case 2: + v6 = *(unsigned __int16 *)a3; + result = (char *)a3 + 2; + goto LABEL_4; + case 4: + case 0xC: + v6 = *a3; + result = (char *)(a3 + 2); + goto LABEL_4; + case 9: + result = (char *)a3; + v14 = 0; + v15 = 0; + do + { + v16 = *result++; + v17 = (v16 & 0x7F) << v14; + v14 += 7; + v15 |= v17; + } + while ( v16 < 0 ); + v18 = v16; + v6 = v15; + if ( v14 > 0x1F || (v18 & 0x40) == 0 ) + goto LABEL_4; + v6 = (-1 << v14) | v15; + goto LABEL_5; + case 0xA: + v6 = *(__int16 *)a3; + result = (char *)a3 + 2; +LABEL_4: + if ( !v6 ) + goto LABEL_8; +LABEL_5: + if ( (a1 & 0x70) == 16 ) + a2 = a3; + v6 += (int)a2; + if ( a1 < 0 ) + *a4 = *(_DWORD *)v6; + else +LABEL_8: + *a4 = v6; + break; + default: + abort(); + } + } + return result; +} + +//----- (004600A0) -------------------------------------------------------- +void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)) +{ + a1(); + JUMPOUT(0x504A20); +} +// 4600A7: control flows out of bounds to 504A20 +// 504A18: using guessed type void __noreturn __cxxabiv1::__terminate(void); + +//----- (004600C0) -------------------------------------------------------- +void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)) +{ + a1(); + std::terminate(); +} + +//----- (004600D0) -------------------------------------------------------- +void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *a1) +{ + operator delete(a1, 4u); +} + +//----- (00460100) -------------------------------------------------------- +void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1) +{ + std::type_info *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_537714; + std::type_info::~type_info(v2); + operator delete(a1, 8u); +} +// 46010C: variable 'v2' is possibly undefined +// 537714: using guessed type void (__cdecl *off_537714)(__cxxabiv1::__class_type_info *__hidden this); + +//----- (00460130) -------------------------------------------------------- +void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_537714; + std::type_info::~type_info(this); +} +// 460130: variable 'v1' is possibly undefined +// 537714: using guessed type void (__cdecl *off_537714)(__cxxabiv1::__class_type_info *__hidden this); + +//----- (00460140) -------------------------------------------------------- +void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *a1) +{ + operator delete(a1, 4u); +} + +//----- (00460170) -------------------------------------------------------- +void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1) +{ + __cxxabiv1::__class_type_info *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_537754; + __cxxabiv1::__class_type_info::~__class_type_info(v2); + operator delete(a1, 0xCu); +} +// 46017C: variable 'v2' is possibly undefined +// 537754: using guessed type void (__cdecl *off_537754)(__cxxabiv1::__si_class_type_info *__hidden this); + +//----- (004601A0) -------------------------------------------------------- +void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_537754; + __cxxabiv1::__class_type_info::~__class_type_info(this); +} +// 4601A0: variable 'v1' is possibly undefined +// 537754: using guessed type void (__cdecl *off_537754)(__cxxabiv1::__si_class_type_info *__hidden this); + +//----- (004601B0) -------------------------------------------------------- +void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1) +{ + __cxxabiv1::__class_type_info *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_537780; + __cxxabiv1::__class_type_info::~__class_type_info(v2); + operator delete(a1, 0x18u); +} +// 4601BC: variable 'v2' is possibly undefined +// 537780: using guessed type void (__cdecl *off_537780)(__cxxabiv1::__vmi_class_type_info *__hidden this); + +//----- (004601E0) -------------------------------------------------------- +void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_537780; + __cxxabiv1::__class_type_info::~__class_type_info(this); +} +// 4601E0: variable 'v1' is possibly undefined +// 537780: using guessed type void (__cdecl *off_537780)(__cxxabiv1::__vmi_class_type_info *__hidden this); + +//----- (004601F0) -------------------------------------------------------- +__gthread_mutex_t *`anonymous namespace'::get_locale_mutex() +{ + if ( (_BYTE)`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex ) + return &`anonymous namespace'::get_locale_mutex(void)::locale_mutex; + if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex) ) + { + if ( _CRT_MT ) + __gthr_win32_mutex_init_function(&`anonymous namespace'::get_locale_mutex(void)::locale_mutex); + __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex); + atexit(__tcf_0_8); + } + return &`anonymous namespace'::get_locale_mutex(void)::locale_mutex; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00460270) -------------------------------------------------------- +void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1) +{ + std::_V2::error_category *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5377AC; + std::_V2::error_category::~error_category(v2); + operator delete(a1); +} +// 46027C: variable 'v2' is possibly undefined +// 5377AC: using guessed type void (__cdecl *off_5377AC)(_anonymous_namespace_::io_error_category *__hidden this); + +//----- (00460290) -------------------------------------------------------- +void __cdecl `anonymous namespace'::io_error_category::~io_error_category( + _anonymous_namespace_::io_error_category *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_5377AC; + std::_V2::error_category::~error_category(this); +} +// 460290: variable 'v1' is possibly undefined +// 5377AC: using guessed type void (__cdecl *off_5377AC)(_anonymous_namespace_::io_error_category *__hidden this); + +//----- (004602A0) -------------------------------------------------------- +void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *a1) +{ + operator delete(a1); +} + +//----- (004602C0) -------------------------------------------------------- +void (__cdecl ***`anonymous namespace'::__io_category_instance())(_anonymous_namespace_::io_error_category *__hidden this) +{ + if ( (_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec ) + return &`anonymous namespace'::__io_category_instance(void)::__ec; + if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) + { + __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); + atexit((void (__cdecl *)())__tcf_0_9); + } + return &`anonymous namespace'::__io_category_instance(void)::__ec; +} +// 516B70: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); + +//----- (00460320) -------------------------------------------------------- +void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *a1) +{ + operator delete(a1); +} + +//----- (00460340) -------------------------------------------------------- +_DWORD *__usercall `anonymous namespace'::pool::free@( + int a1@, + struct type_info *a2, + void (__cdecl *a3)(void *)) +{ + int v4; // edi + _DWORD *result; // eax + _DWORD *v6; // ebp + _DWORD *v7; // esi + _DWORD *v8; // edx + int *v9; // ebp + int v10; // ecx + int v11; // [esp+14h] [ebp-28h] + int *v12; // [esp+18h] [ebp-24h] + + v4 = _CRT_MT; + if ( _CRT_MT ) + { + if ( __gthr_win32_mutex_lock(&`anonymous namespace'::emergency_pool) ) + __gnu_cxx::__throw_concurrence_lock_error(); + v4 = _CRT_MT; + } + result = (_DWORD *)dword_515398; + v6 = (_DWORD *)(a1 - 16); + if ( !dword_515398 + || (v11 = *(_DWORD *)(a1 - 16), v7 = (_DWORD *)((char *)v6 + v11), dword_515398 > (unsigned int)v6 + v11) ) + { + *(_DWORD *)(a1 - 12) = dword_515398; + dword_515398 = a1 - 16; + goto LABEL_18; + } + v8 = *(_DWORD **)(dword_515398 + 4); + if ( (_DWORD *)dword_515398 == (_DWORD *)((char *)v6 + v11) ) + { + v10 = *(_DWORD *)dword_515398 + v11; + *(_DWORD *)(a1 - 12) = v8; + *(_DWORD *)(a1 - 16) = v10; + dword_515398 = a1 - 16; + goto LABEL_18; + } + if ( v8 ) + { + v9 = &dword_515398; + while ( v7 < v8 ) + { + v9 = result + 1; + if ( !v8[1] ) + { + v12 = result + 1; + result = (_DWORD *)result[1]; + v6 = (_DWORD *)(a1 - 16); + goto LABEL_13; + } + result = v8; + v8 = (_DWORD *)v8[1]; + } + v12 = v9; + v6 = (_DWORD *)(a1 - 16); + if ( v7 == v8 ) + { + v11 += *v7; + result[1] = v7[1]; + } + result = (_DWORD *)*v12; + } + else + { + v12 = &dword_515398; + } +LABEL_13: + if ( v6 == (_DWORD *)((char *)result + *result) ) + { + *result += v11; +LABEL_18: + if ( !v4 ) + return result; + goto LABEL_15; + } + *(_DWORD *)(a1 - 12) = result[1]; + *(_DWORD *)(a1 - 16) = v11; + result = (_DWORD *)*v12; + *(_DWORD *)(*v12 + 4) = v6; + if ( !v4 ) + return result; +LABEL_15: + result = (_DWORD *)__gthr_win32_mutex_unlock(&`anonymous namespace'::emergency_pool); + if ( result ) + `anonymous namespace'::pool::free(a2, a3); + return result; +} +// 515398: using guessed type int dword_515398; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004604B0) -------------------------------------------------------- +unsigned int *__usercall `anonymous namespace'::pool::allocate@(int a1@) +{ + unsigned int v2; // eax + unsigned int *v3; // ebx + unsigned int v4; // eax + int *v5; // esi + unsigned int v6; // edx + unsigned int *v7; // ecx + unsigned int v8; // edx + unsigned int *v10; // edi + int v11; // eax + + if ( _CRT_MT ) + { + if ( __gthr_win32_mutex_lock(&`anonymous namespace'::emergency_pool) ) + `anonymous namespace'::pool::allocate(); + v11 = a1 + 16; + if ( (unsigned int)(a1 + 16) < 8 ) + v11 = 8; + v3 = (unsigned int *)dword_515398; + v4 = (v11 + 15) & 0xFFFFFFF0; + if ( !dword_515398 ) + { +LABEL_19: + v3 = 0; +LABEL_11: + if ( _CRT_MT && __gthr_win32_mutex_unlock(&`anonymous namespace'::emergency_pool) ) + JUMPOUT(0x50483D); + return v3; + } +LABEL_5: + v5 = &dword_515398; + while ( 1 ) + { + v6 = *v3; + v7 = v3; + v3 = (unsigned int *)v3[1]; + if ( v6 >= v4 ) + break; + v5 = (int *)(v7 + 1); + if ( !v3 ) + goto LABEL_19; + } + v8 = v6 - v4; + if ( v8 > 7 ) + { + v10 = (unsigned int *)((char *)v7 + v4); + v10[1] = (unsigned int)v3; + v7 = (unsigned int *)*v5; + *v10 = v8; + *v7 = v4; + *v5 = (int)v10; + } + else + { + *v5 = (int)v3; + } + v3 = v7 + 4; + goto LABEL_11; + } + v2 = a1 + 16; + if ( v2 < 8 ) + v2 = 8; + v3 = (unsigned int *)dword_515398; + v4 = (v2 + 15) & 0xFFFFFFF0; + if ( dword_515398 ) + goto LABEL_5; + return v3; +} +// 460521: control flows out of bounds to 50483D +// 515398: using guessed type int dword_515398; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004605A0) -------------------------------------------------------- +void `anonymous namespace'::init(void) +{ + if ( _CRT_MT ) + __gthr_win32_recursive_mutex_init_function(&`anonymous namespace'::fake_mutex); + `anonymous namespace'::static_mutex = &`anonymous namespace'::fake_mutex; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004605E0) -------------------------------------------------------- +unsigned int __usercall `anonymous namespace'::xwrite@(int a1@, char *a2@, unsigned int a3@) +{ + unsigned int MaxCharCount; // ebp + int v7; // eax + + MaxCharCount = a3; + while ( 1 ) + { + while ( 1 ) + { + v7 = write(a1, a2, MaxCharCount); + if ( v7 != -1 ) + break; + if ( *_errno() != 4 ) + return a3 - MaxCharCount; + } + MaxCharCount -= v7; + if ( !MaxCharCount ) + break; + a2 += v7; + } + return a3; +} + +//----- (00460640) -------------------------------------------------------- +#error "4606AE: call analysis failed (funcsize=38)" + +//----- (004606E0) -------------------------------------------------------- +#error "46074E: call analysis failed (funcsize=40)" + +//----- (00460788) -------------------------------------------------------- +#error "4607F6: call analysis failed (funcsize=42)" + +//----- (00460838) -------------------------------------------------------- +int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) +{ + _DWORD *v3; // eax + volatile signed __int32 *v4; // edx + void (__cdecl *v6)(void *); // [esp+4h] [ebp-24h] + volatile signed __int32 *v7; // [esp+1Ch] [ebp-Ch] BYREF + + *this = 0; + this[1] = 0; + v7 = 0; + v3 = operator new((struct type_info *)0x10, v6); + v3[3] = a2; + v3[1] = 1; + *this = a2; + v4 = (volatile signed __int32 *)this[1]; + v3[2] = 1; + this[1] = v3; + *v3 = &off_538A10; + v7 = v4; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v7); +} +// 460863: variable 'v6' is possibly undefined +// 538A10: using guessed type int (*off_538A10)(); + +//----- (004608D0) -------------------------------------------------------- +void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) +{ + _DWORD *v3; // eax + volatile signed __int32 *v4; // edx + void (__cdecl *v5)(void *); // [esp+4h] [ebp-24h] + volatile signed __int32 *v6; // [esp+1Ch] [ebp-Ch] BYREF + + *this = 0; + this[1] = 0; + v6 = 0; + v3 = operator new((struct type_info *)0x10, v5); + v3[3] = a2; + v3[1] = 1; + *this = a2; + v4 = (volatile signed __int32 *)this[1]; + v3[2] = 1; + this[1] = v3; + *v3 = &off_538A10; + v6 = v4; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v6); +} +// 4608FB: variable 'v5' is possibly undefined +// 538A10: using guessed type int (*off_538A10)(); + +//----- (00460978) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Token::ToAttrContent[abi:cxx11](int a1) +{ + _BYTE *v2; // esi + int v3; // edi + char v4; // al + char v5; // cl + int v6; // eax + unsigned __int8 v7; // dl + int v9; // [esp+8h] [ebp-70h] + int v10; // [esp+1Ch] [ebp-5Ch] + void *v11[2]; // [esp+28h] [ebp-50h] BYREF + char v12[16]; // [esp+30h] [ebp-48h] BYREF + unsigned __int8 v13[30]; // [esp+40h] [ebp-38h] BYREF + size_t Size[6]; // [esp+5Eh] [ebp-1Ah] BYREF + + if ( !*(_DWORD *)a1 || *(_BYTE *)(a1 + 84) ) + return a1 + 88; + v2 = (_BYTE *)(**(_DWORD **)a1 + *(_DWORD *)(a1 + 16)); + v3 = *(_DWORD *)(a1 + 20); + v10 = *v2 == 39 || *v2 == 34; + if ( v3 > 0 ) + { + v4 = v2[v3 - 1]; + if ( v4 == 34 || v4 == 39 ) + --v3; + } + v5 = 0; + v6 = 0; + while ( v3 > v10 ) + { + v7 = v2[v10]; + if ( v7 == 92 ) + { + if ( !v5 ) + { + v5 = 1; + goto LABEL_22; + } + } + else if ( v5 ) + { + switch ( v7 ) + { + case 'n': + v13[v6] = 10; + goto LABEL_20; + case 't': + v13[v6] = 9; + goto LABEL_20; + case 'r': + v13[v6] = 13; + goto LABEL_20; + } + } + v13[v6] = v7; +LABEL_20: + ++v6; + v5 = 0; + v13[v6] = 0; + if ( v6 == 30 ) + { + LOBYTE(v9) = 0; + v11[0] = v12; + std::string::_M_construct(v11, v13, (size_t)Size, v9); + std::string::operator+=((_DWORD *)(a1 + 88), (int)v11); + std::string::_M_dispose(v11); + v13[0] = 0; + v5 = 0; + v6 = 0; + } +LABEL_22: + ++v10; + } + if ( v6 ) + { + LOBYTE(v9) = 0; + v11[0] = v12; + std::string::_M_construct(v11, v13, (size_t)&v13[v6], v9); + std::string::operator+=((_DWORD *)(a1 + 88), (int)v11); + std::string::_M_dispose(v11); + } + *(_BYTE *)(a1 + 84) = 1; + return a1 + 88; +} +// 460A3A: variable 'v9' is possibly undefined +// 460978: using guessed type unsigned __int8 var_38[30]; +// 460978: using guessed type size_t Size[6]; + +//----- (00460ACC) -------------------------------------------------------- +int __cdecl WXML::DOMLib::Token::GetTemplateContent(int *a1, _DWORD *a2) +{ + int v2; // edi + int v3; // eax + signed int v4; // edx + int v5; // ebx + int v6; // ecx + signed int v7; // eax + int v9; // [esp+1Ch] [ebp-3Ch] + void *v10[12]; // [esp+28h] [ebp-30h] BYREF + + v2 = 0; + v9 = a1[1]; + v3 = v9 - 1; + while ( v2 < v9 && *(_BYTE *)(*a1 + v2) == 32 ) + ++v2; + while ( v3 >= 0 && *(_BYTE *)(*a1 + v3) == 32 ) + --v3; + v4 = v2 + 2; + if ( v2 + 2 >= v9 ) + return -1; + v5 = *a1; + v6 = -1; + if ( *(_BYTE *)(*a1 + v2) != 123 ) + return v6; + if ( *(_BYTE *)(v5 + v2 + 1) != 123 || v3 <= 1 ) + return -1; + if ( *(_BYTE *)(v5 + v3) == 125 && *(_BYTE *)(v5 + v3 - 1) == 125 ) + { + v7 = v3 - 2; + do + { + if ( *(_BYTE *)(v5 + v4) != 32 ) + break; + ++v4; + } + while ( v9 != v4 ); + do + { + if ( *(_BYTE *)(v5 + v7) != 32 ) + break; + --v7; + } + while ( v7 != -1 ); + v6 = -1; + if ( v4 < v7 ) + { + std::string::substr(v10, a1, v4, v7 - v4 + 1); + std::string::operator=(a2, v10); + std::string::_M_dispose(v10); + return 0; + } + } + return v6; +} + +//----- (00460B90) -------------------------------------------------------- +char __cdecl WXML::DOMLib::Token::IsValidVariableName(char **a1) +{ + char v1; // al + unsigned __int8 v2; // dl + char result; // al + unsigned int i; // edx + char v5; // al + bool v6; // cc + bool v7; // zf + + v1 = **a1; + if ( v1 == 95 || v1 == 36 || (v2 = (v1 & 0xDF) - 65, result = 0, v2 <= 0x19u) ) + { + for ( i = 1; ; ++i ) + { + if ( (unsigned int)a1[1] <= i ) + return 1; + v5 = (*a1)[i]; + if ( v5 <= 96 ) + { + if ( v5 > 64 ) + { + if ( v5 <= 90 ) + continue; + v7 = v5 == 95; + goto LABEL_13; + } + if ( v5 <= 47 ) + { + v7 = v5 == 36; +LABEL_13: + if ( !v7 ) + return 0; + continue; + } + v6 = v5 <= 57; + } + else + { + v6 = v5 <= 122; + } + if ( !v6 ) + return 0; + } + } + return result; +} + +//----- (00460BEC) -------------------------------------------------------- +bool __userpurge WXML::DOMLib::Token::IsMatch@(int a1@, WXML::DOMLib::Token *this, const char *a3) +{ + bool result; // al + int v4; // edi + int i; // eax + + result = 0; + if ( *(_DWORD *)a1 ) + { + v4 = *(_DWORD *)(a1 + 20); + for ( i = 0; ; ++i ) + { + if ( v4 <= i ) + return *((_BYTE *)this + v4) == 0; + if ( *(_BYTE *)(**(_DWORD **)a1 + *(_DWORD *)(a1 + 16) + i) != *((_BYTE *)this + i) ) + break; + } + return 0; + } + return result; +} + +//----- (00460C28) -------------------------------------------------------- +_DWORD *__fastcall WXML::DOMLib::Token::ToString[abi:cxx11](int a1) +{ + _DWORD *v1; // edi + void *v4[12]; // [esp+18h] [ebp-30h] BYREF + + v1 = (_DWORD *)(a1 + 32); + if ( *(_DWORD *)a1 && !*(_BYTE *)(a1 + 28) ) + { + std::string::substr(v4, *(_DWORD **)a1, *(_DWORD *)(a1 + 16), *(_DWORD *)(a1 + 20)); + std::string::operator=(v1, v4); + std::string::_M_dispose(v4); + *(_BYTE *)(a1 + 28) = 1; + } + return v1; +} + +//----- (00460C80) -------------------------------------------------------- +_DWORD *__thiscall WXML::DOMLib::Token::Token(_DWORD *this, int a2) +{ + int v3; // eax + + *this = *(_DWORD *)a2; + v3 = *(_DWORD *)(a2 + 4); + this[1] = v3; + if ( v3 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v3 + 4)); + this[2] = *(_DWORD *)(a2 + 8); + this[3] = *(_DWORD *)(a2 + 12); + this[4] = *(_DWORD *)(a2 + 16); + this[5] = *(_DWORD *)(a2 + 20); + this[6] = *(_DWORD *)(a2 + 24); + *((_BYTE *)this + 28) = *(_BYTE *)(a2 + 28); + std::string::basic_string(this + 8, (_DWORD *)(a2 + 32)); + this[14] = *(_DWORD *)(a2 + 56); + std::string::basic_string(this + 15, (_DWORD *)(a2 + 60)); + *((_BYTE *)this + 84) = *(_BYTE *)(a2 + 84); + return std::string::basic_string(this + 22, (_DWORD *)(a2 + 88)); +} + +//----- (00460D08) -------------------------------------------------------- +_BYTE *__userpurge WXML::DOMLib::Token::Token@( + int a1@, + WXML::DOMLib::Token *this, + const WXML::DOMLib::Token *a3) +{ + int v4; // eax + + *(_DWORD *)a1 = *(_DWORD *)this; + v4 = *((_DWORD *)this + 1); + *(_DWORD *)(a1 + 4) = v4; + if ( v4 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v4 + 4)); + *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); + *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); + *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); + *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); + *(_DWORD *)(a1 + 24) = *((_DWORD *)this + 6); + *(_BYTE *)(a1 + 28) = *((_BYTE *)this + 28); + std::string::basic_string((_DWORD *)(a1 + 32), (int)this + 32); + *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); + std::string::basic_string((_DWORD *)(a1 + 60), (int)this + 60); + *(_BYTE *)(a1 + 84) = *((_BYTE *)this + 84); + return std::string::basic_string((_DWORD *)(a1 + 88), (int)this + 88); +} + +//----- (00460DC4) -------------------------------------------------------- +_BYTE *__userpurge WXML::DOMLib::Token::Token@( + int a1@, + WXML::DOMLib::Token *this, + const WXML::DOMLib::Token *a3) +{ + int v4; // eax + + *(_DWORD *)a1 = *(_DWORD *)this; + v4 = *((_DWORD *)this + 1); + *(_DWORD *)(a1 + 4) = v4; + if ( v4 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v4 + 4)); + *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); + *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); + *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); + *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); + *(_DWORD *)(a1 + 24) = *((_DWORD *)this + 6); + *(_BYTE *)(a1 + 28) = *((_BYTE *)this + 28); + std::string::basic_string((_DWORD *)(a1 + 32), (int)this + 32); + *(_DWORD *)(a1 + 56) = *((_DWORD *)this + 14); + std::string::basic_string((_DWORD *)(a1 + 60), (int)this + 60); + *(_BYTE *)(a1 + 84) = *((_BYTE *)this + 84); + return std::string::basic_string((_DWORD *)(a1 + 88), (int)this + 88); +} + +//----- (00460E80) -------------------------------------------------------- +int __thiscall WXML::DOMLib::Token::operator=(int this, int a2) +{ + volatile signed __int32 **v3; // ecx + + v3 = (volatile signed __int32 **)(this + 4); + *(v3 - 1) = *(volatile signed __int32 **)a2; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, *(volatile signed __int32 **)(a2 + 4)); + *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); + *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); + *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); + *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); + *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); + *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); + std::string::operator=((_DWORD *)(this + 32), (_DWORD *)(a2 + 32)); + *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); + std::string::operator=((_DWORD *)(this + 60), (_DWORD *)(a2 + 60)); + *(_BYTE *)(this + 84) = *(_BYTE *)(a2 + 84); + std::string::operator=((_DWORD *)(this + 88), (_DWORD *)(a2 + 88)); + return this; +} + +//----- (00460F0C) -------------------------------------------------------- +int __thiscall WXML::DOMLib::Token::operator=(int this, int a2) +{ + volatile signed __int32 **v3; // ecx + + v3 = (volatile signed __int32 **)(this + 4); + *(v3 - 1) = *(volatile signed __int32 **)a2; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, *(volatile signed __int32 **)(a2 + 4)); + *(_DWORD *)(this + 8) = *(_DWORD *)(a2 + 8); + *(_DWORD *)(this + 12) = *(_DWORD *)(a2 + 12); + *(_DWORD *)(this + 16) = *(_DWORD *)(a2 + 16); + *(_DWORD *)(this + 20) = *(_DWORD *)(a2 + 20); + *(_DWORD *)(this + 24) = *(_DWORD *)(a2 + 24); + *(_BYTE *)(this + 28) = *(_BYTE *)(a2 + 28); + std::string::_M_assign(this + 32, a2 + 32); + *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); + std::string::_M_assign(this + 60, a2 + 60); + *(_BYTE *)(this + 84) = *(_BYTE *)(a2 + 84); + std::string::_M_assign(this + 88, a2 + 88); + return this; +} + +//----- (00460F98) -------------------------------------------------------- +int __fastcall WXML::DOMLib::Parser::Parser(int a1) +{ + char *v2; // eax + int v3; // edx + char *v4; // esi + char *v5; // eax + char *v6; // eax + int v7; // edx + char *v8; // esi + char *v9; // eax + int result; // eax + void (__cdecl *v11)(void *); // [esp+4h] [ebp-14h] + void (__cdecl *v12)(void *); // [esp+4h] [ebp-14h] + void (__cdecl *v13)(void *); // [esp+4h] [ebp-14h] + void (__cdecl *v14)(void *); // [esp+4h] [ebp-14h] + + *(_DWORD *)a1 = 0; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + *(_DWORD *)(a1 + 40) = 0; + *(_DWORD *)(a1 + 44) = 0; + *(_DWORD *)(a1 + 12) = 8; + v2 = (char *)operator new((struct type_info *)0x20, v11); + v3 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(a1 + 8) = v2; + v4 = &v2[(2 * v3 - 2) & 0xFFFFFFFC]; + v5 = (char *)operator new((struct type_info *)0x1F8, v12); + *(_DWORD *)v4 = v5; + *(_DWORD *)(a1 + 28) = v4; + *(_DWORD *)(a1 + 20) = v5; + *(_DWORD *)(a1 + 24) = v5 + 504; + *(_DWORD *)(a1 + 44) = v4; + *(_DWORD *)(a1 + 36) = v5; + *(_DWORD *)(a1 + 40) = v5 + 504; + *(_DWORD *)(a1 + 16) = v5; + *(_DWORD *)(a1 + 32) = v5; + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 68) = 0; + *(_DWORD *)(a1 + 72) = 0; + *(_DWORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_DWORD *)(a1 + 84) = 0; + *(_DWORD *)(a1 + 52) = 8; + v6 = (char *)operator new((struct type_info *)0x20, v13); + v7 = *(_DWORD *)(a1 + 52); + *(_DWORD *)(a1 + 48) = v6; + v8 = &v6[(2 * v7 - 2) & 0xFFFFFFFC]; + v9 = (char *)operator new((struct type_info *)0x200, v14); + *(_DWORD *)v8 = v9; + *(_DWORD *)(a1 + 60) = v9; + *(_DWORD *)(a1 + 76) = v9; + *(_DWORD *)(a1 + 56) = v9; + *(_DWORD *)(a1 + 72) = v9; + *(_DWORD *)(a1 + 136) = a1 + 144; + *(_DWORD *)(a1 + 164) = a1 + 172; + *(_DWORD *)(a1 + 192) = a1 + 200; + *(_DWORD *)(a1 + 68) = v8; + *(_DWORD *)(a1 + 84) = v8; + *(_DWORD *)(a1 + 64) = v9 + 512; + *(_DWORD *)(a1 + 80) = v9 + 512; + *(_DWORD *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 104) = 0; + *(_DWORD *)(a1 + 108) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_BYTE *)(a1 + 144) = 0; + *(_DWORD *)(a1 + 168) = 0; + *(_BYTE *)(a1 + 172) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_BYTE *)(a1 + 200) = 0; + *(_BYTE *)(a1 + 132) = 0; + *(_BYTE *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 112) = 0; + *(_DWORD *)(a1 + 116) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 160) = -1; + *(_DWORD *)(a1 + 216) = 0; + *(_DWORD *)(a1 + 220) = 0; + *(_DWORD *)(a1 + 248) = a1 + 256; + *(_DWORD *)(a1 + 276) = a1 + 284; + *(_DWORD *)(a1 + 304) = a1 + 312; + result = a1 + 336; + *(_DWORD *)(a1 + 252) = 0; + *(_BYTE *)(a1 + 256) = 0; + *(_DWORD *)(a1 + 280) = 0; + *(_BYTE *)(a1 + 284) = 0; + *(_DWORD *)(a1 + 308) = 0; + *(_BYTE *)(a1 + 312) = 0; + *(_BYTE *)(a1 + 244) = 0; + *(_BYTE *)(a1 + 300) = 0; + *(_DWORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 224) = 0; + *(_DWORD *)(a1 + 228) = 0; + *(_DWORD *)(a1 + 232) = 0; + *(_DWORD *)(a1 + 272) = -1; + *(_DWORD *)(a1 + 328) = a1 + 336; + *(_DWORD *)(a1 + 332) = 0; + *(_BYTE *)(a1 + 336) = 0; + return result; +} +// 460FFC: variable 'v11' is possibly undefined +// 461017: variable 'v12' is possibly undefined +// 461089: variable 'v13' is possibly undefined +// 4610A4: variable 'v14' is possibly undefined + +//----- (004612EC) -------------------------------------------------------- +char __thiscall WXML::DOMLib::WXMLDom::IfHasItsElse(_DWORD *this, signed int a2, int *a3) +{ + _DWORD *v4; // edi + int v5; // edi + _DWORD *v6; // ecx + bool v7; // di + _DWORD *v8; // edi + int v9; // eax + unsigned int i; // edi + int v11; // edx + bool v12; // bl + _DWORD *v13; // ebx + int v14; // ebx + _DWORD *v16; // [esp+18h] [ebp-50h] + bool v17; // [esp+1Ch] [ebp-4Ch] + _DWORD *v18; // [esp+1Ch] [ebp-4Ch] + signed int v19; // [esp+1Ch] [ebp-4Ch] + void *v20[6]; // [esp+20h] [ebp-48h] BYREF + void *v21[12]; // [esp+38h] [ebp-30h] BYREF + + v4 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); + std::string::basic_string(v20, "wx:else"); + v17 = 1; + if ( !std::map::count(v4, (int)v20) ) + { + v18 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); + std::string::basic_string(v21, "wx:elif"); + v17 = std::map::count(v18, (int)v21); + std::string::_M_dispose(v21); + } + std::string::_M_dispose(v20); + if ( v17 ) + return 1; + v5 = *(_DWORD *)(this[18] + 8 * a2) + 48; + std::string::basic_string(v20, "wx:if"); + v6 = (_DWORD *)v5; + v7 = 0; + if ( !std::map::count(v6, (int)v20) ) + { + v8 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * a2) + 48); + std::string::basic_string(v21, "wx-if"); + v7 = !std::map::count(v8, (int)v21); + std::string::_M_dispose(v21); + } + std::string::_M_dispose(v20); + if ( !v7 ) + { + v19 = a2 - 1; + v9 = *(_DWORD *)(this[18] + 8 * a2); + if ( *(_DWORD *)(v9 + 72) == *(_DWORD *)(v9 + 76) ) + { + for ( i = a2 + 1; ; ++i ) + { + v11 = this[18]; + if ( (this[19] - v11) >> 3 <= i ) + break; + v16 = (_DWORD *)(*(_DWORD *)(v11 + 8 * i) + 48); + std::string::basic_string(v20, "wx:else"); + v12 = 1; + if ( !std::map::count(v16, (int)v20) ) + { + v13 = (_DWORD *)(*(_DWORD *)(this[18] + 8 * i) + 48); + std::string::basic_string(v21, "wx:elif"); + v12 = std::map::count(v13, (int)v21); + std::string::_M_dispose(v21); + } + std::string::_M_dispose(v20); + if ( !v12 ) + break; + v14 = a3[1]; + if ( v14 != std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( + *a3, + v14, + *(_DWORD *)(this[18] + 8 * i)) + || *(_DWORD *)(*(_DWORD *)(this[18] + 8 * i) + 76) != *(_DWORD *)(*(_DWORD *)(this[18] + 8 * i) + 72) ) + { + return 1; + } + v19 = i; + } + } + while ( v19 >= a2 ) + std::vector>::_M_erase(this + 18, (_DWORD *)(this[18] + 8 * v19--)); + return 1; + } + return v17; +} + +//----- (00461550) -------------------------------------------------------- +int __cdecl WXML::DOMLib::WXMLDom::ToCamelStyle(int a1, int a2) +{ + char *v2; // edi + char v3; // si + char v4; // al + + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + std::string::reserve((_DWORD *)a1, *(_DWORD *)(a2 + 4)); + v2 = *(char **)a2; + v3 = 0; + while ( 1 ) + { + v4 = *v2; + if ( !*v2 ) + return a1; + if ( v4 > 46 ) + { + if ( v4 == 58 ) + { +LABEL_11: + v3 = 1; + goto LABEL_12; + } + } + else if ( v4 > 44 ) + { + goto LABEL_11; + } + if ( (unsigned __int8)(v4 - 97) <= 0x19u && v3 ) + { + std::string::push_back((_DWORD *)a1, v4 - 32); + v3 = 0; + } + else + { + std::string::push_back((_DWORD *)a1, *v2); + } +LABEL_12: + ++v2; + } +} + +//----- (004615EC) -------------------------------------------------------- +char __fastcall WXML::DOMLib::WXMLDom::HasSpAttrPrefix(int a1) +{ + int i; // ebx + const char *v3; // edi + const char *v5; // edi + + for ( i = *(_DWORD *)(a1 + 60); i != a1 + 52; i = std::_Rb_tree_increment(i) ) + { + v3 = *(const char **)(i + 16); + if ( strncmp(v3, "bind", 4u) ) + { + if ( strncmp(v3, "catch", 5u) ) + { + if ( strncmp(v3, "capture-bind", 0xCu) ) + { + if ( strncmp(v3, "capture-catch", 0xDu) ) + { + if ( !std::operator==(i + 16, "slot") ) + { + v5 = *(const char **)(i + 16); + if ( strncmp(v5, "wx:", 3u) ) + { + if ( strncmp(v5, "mark:", 5u) ) + continue; + } + } + } + } + } + } + return 1; + } + return 0; +} + +//----- (004616F4) -------------------------------------------------------- +int __thiscall WXML::DOMLib::WXMLDom::MarkIfHasDescendant(int this, int *a2) +{ + int result; // eax + int v4; // ebx + int v5; // ecx + int v6; // eax + int v7; // [esp+1Ch] [ebp-1Ch] + + result = a2[1]; + if ( *a2 != result ) + { + v4 = (*(_DWORD *)(this + 76) - *(_DWORD *)(this + 72)) >> 3; + while ( --v4 >= 0 ) + { + WXML::DOMLib::WXMLDom::MarkIfHasDescendant(a2); + v5 = *a2; + v6 = *(_DWORD *)(*(_DWORD *)(this + 72) + 8 * v4); + *(_BYTE *)(this + 256) |= *(_BYTE *)(v6 + 256); + v7 = a2[1]; + result = std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( + v5, + v7, + v6); + if ( v7 != result ) + *(_BYTE *)(this + 256) = 1; + } + } + return result; +} + +//----- (00461770) -------------------------------------------------------- +void __thiscall WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(_DWORD *this, int *a2) +{ + int v3; // ebx + int *v4; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + + v3 = (this[19] - this[18]) >> 3; + while ( --v3 >= 0 ) + { + WXML::DOMLib::WXMLDom::CutDomsForCustomComponent(a2); + if ( !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "include") + && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "import") + && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "wx-template") + && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "wx-define") + && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "template") + && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "slot") + && !std::operator==(*(_DWORD *)(this[18] + 8 * v3), "wx-import") ) + { + v5 = a2[1]; + if ( v5 == std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( + *a2, + v5, + *(_DWORD *)(this[18] + 8 * v3)) + && !WXML::DOMLib::WXMLDom::IfHasItsElse(this, v3, a2) ) + { + v4 = (int *)(8 * v3 + this[18]); + if ( *(_DWORD *)(*v4 + 76) == *(_DWORD *)(*v4 + 72) ) + { + std::vector>::_M_erase(this + 18, v4); + } + else if ( *(_DWORD *)(*v4 + 76) - *(_DWORD *)(*v4 + 72) == 8 && !WXML::DOMLib::WXMLDom::HasSpAttrPrefix(*v4) ) + { + std::__shared_ptr::operator=( + (_DWORD *)(this[18] + 8 * v3), + *(_DWORD **)(*(_DWORD *)(this[18] + 8 * v3) + 72)); + } + } + } + } +} + +//----- (0046191C) -------------------------------------------------------- +unsigned int __thiscall WXML::DOMLib::WXMLDom::Print(_DWORD *this, int a2, char *a3, char *a4) +{ + unsigned int v4; // esi + unsigned int result; // eax + + v4 = 0; + WXML::DOMLib::WXMLDom::PrintMe((int)this, a2, a3, a4); + while ( 1 ) + { + result = (this[19] - this[18]) >> 3; + if ( result <= v4 ) + break; + ++v4; + WXML::DOMLib::WXMLDom::Print(a2 + 1, a3, a4); + } + return result; +} + +//----- (00461980) -------------------------------------------------------- +void __thiscall WXML::DOMLib::WXMLDom::PrintMe(int this, int a2, char *a3, char *a4) +{ + char *v5; // ebx + int i; // edi + int v7; // eax + std::ostream::sentry *v8; // eax + std::ostream::sentry *v9; // eax + std::ostream::sentry *v10; // eax + std::ostream::sentry *v11; // eax + bool v12; // zf + int v13; // eax + int j; // edi + const char **v15; // eax + std::ostream::sentry *v16; // eax + int *v17; // eax + std::ostream::sentry *v18; // eax + std::ostream::sentry *v19; // eax + const char **v20; // eax + std::ostream::sentry *v21; // eax + std::ostream::sentry *v22; // eax + std::ostream::sentry *v23; // eax + std::ostream::sentry *v24; // edi + int *v25; // eax + std::ostream::sentry *v26; // eax + std::ostream::sentry *v27; // eax + std::ostream::sentry *v28; // eax + std::ostream::sentry *v29; // eax + std::ostream::sentry *v30; // eax + std::ostream::sentry *v31; // eax + std::ostream::sentry *v32; // [esp+2Ch] [ebp-ECh] + char v33[232]; // [esp+30h] [ebp-E8h] BYREF + + v5 = a4; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v33); + if ( !a4 ) + v5 = v33; + if ( (v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) + printf("%s", a3); + else + std::operator<<>((std::ostream::sentry *)(v5 + 8), a3); + for ( i = 0; ; ++i ) + { + v7 = *(_DWORD *)&v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5; + if ( i >= a2 ) + break; + if ( v7 ) + printf(" "); + else + std::operator<<>((std::ostream::sentry *)(v5 + 8), " "); + } + if ( v7 ) + { + printf("pos: %d, %d, tag: %s, ", *(_DWORD *)(this + 92), *(_DWORD *)(this + 96), *(const char **)this); + } + else + { + std::operator<<>((std::ostream::sentry *)(v5 + 8), "pos: "); + v8 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); + std::operator<<>(v8, ", "); + v9 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); + v10 = std::operator<<>(v9, " tag: "); + v11 = std::operator<<(v10, (int *)this); + std::operator<<>(v11, ", "); + } + v12 = !std::operator==(this, "TEXTNODE"); + v13 = *(_DWORD *)(*(_DWORD *)v5 - 12); + if ( v12 ) + { + if ( (v5[v13 + 20] & 5) != 0 ) + printf("attr: "); + else + std::operator<<>((std::ostream::sentry *)(v5 + 8), "attr: "); + for ( j = *(_DWORD *)(this + 60); j != this + 52; j = std::_Rb_tree_increment(j) ) + { + if ( (*(_DWORD *)&v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) + { + v15 = (const char **)WXML::DOMLib::Token::ToString[abi:cxx11](j + 40); + printf("%s->%s,", *(const char **)(j + 16), *v15); + } + else + { + v16 = std::operator<<((std::ostream::sentry *)(v5 + 8), (int *)(j + 16)); + v32 = std::operator<<>(v16, "->"); + v17 = WXML::DOMLib::Token::ToString[abi:cxx11](j + 40); + v18 = std::operator<<(v32, v17); + std::operator<<>(v18, " "); + v19 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(j + 96)); + std::operator<<>(v19, " "); + } + } + } + else if ( (v5[v13 + 20] & 5) != 0 ) + { + v20 = (const char **)WXML::DOMLib::Token::ToString[abi:cxx11](this + 84); + printf("pos: %d, %d, len: %d, %s", *(_DWORD *)(this + 92), *(_DWORD *)(this + 96), *(_DWORD *)(this + 104), *v20); + } + else + { + std::operator<<>((std::ostream::sentry *)(v5 + 8), "pos: "); + v21 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 92)); + std::operator<<>(v21, ", "); + v22 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 96)); + std::operator<<>(v22, ", len: "); + v23 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 104)); + v24 = std::operator<<>(v23, ", "); + v25 = WXML::DOMLib::Token::ToString[abi:cxx11](this + 84); + std::operator<<(v24, v25); + } + if ( (v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) + { + printf( + "icn: %s, icc: %u, ivwn: %s", + *(const char **)(this + 196), + *(_DWORD *)(this + 244), + *(const char **)(this + 220)); + } + else + { + v26 = std::operator<<>((std::ostream::sentry *)(v5 + 8), "icn:"); + v27 = std::operator<<(v26, (int *)(this + 196)); + v28 = std::operator<<>(v27, ", "); + std::operator<<>(v28, "icc: "); + v29 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(this + 244)); + v30 = std::operator<<>(v29, ", ivwn: "); + std::operator<<(v30, (int *)(this + 220)); + } + if ( (v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) + { + printf(", hasXComponentDescendant %d", *(unsigned __int8 *)(this + 256)); + } + else + { + v31 = std::operator<<>((std::ostream::sentry *)(v5 + 8), ", hasXComponentDescendant"); + std::ostream::operator<<(v31, *(_BYTE *)(this + 256)); + } + if ( (v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 20] & 5) != 0 ) + putchar(10); + else + std::operator<<>((std::ostream::sentry *)(v5 + 8), "\n"); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v33); +} +// 4B22B0: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); + +//----- (00461DC4) -------------------------------------------------------- +int __fastcall WXML::DOMLib::WXMLDom::WXMLDom(int a1) +{ + int result; // eax + + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_DWORD *)(a1 + 24) = a1 + 32; + *(_DWORD *)(a1 + 60) = a1 + 52; + *(_DWORD *)(a1 + 64) = a1 + 52; + *(_DWORD *)(a1 + 116) = a1 + 124; + *(_DWORD *)(a1 + 144) = a1 + 152; + *(_DWORD *)(a1 + 172) = a1 + 180; + *(_BYTE *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_BYTE *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 68) = 0; + *(_DWORD *)(a1 + 72) = 0; + *(_DWORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_DWORD *)(a1 + 84) = 0; + *(_DWORD *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_BYTE *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 148) = 0; + *(_BYTE *)(a1 + 152) = 0; + *(_DWORD *)(a1 + 176) = 0; + *(_BYTE *)(a1 + 180) = 0; + *(_BYTE *)(a1 + 112) = 0; + *(_BYTE *)(a1 + 168) = 0; + *(_DWORD *)(a1 + 104) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 140) = -1; + *(_DWORD *)(a1 + 196) = a1 + 204; + *(_DWORD *)(a1 + 220) = a1 + 228; + result = a1 + 276; + *(_DWORD *)(a1 + 200) = 0; + *(_BYTE *)(a1 + 204) = 0; + *(_DWORD *)(a1 + 224) = 0; + *(_BYTE *)(a1 + 228) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)(a1 + 252) = 0; + *(_DWORD *)(a1 + 276) = 0; + *(_DWORD *)(a1 + 280) = 0; + *(_DWORD *)(a1 + 284) = a1 + 276; + *(_DWORD *)(a1 + 288) = a1 + 276; + *(_DWORD *)(a1 + 292) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_BYTE *)(a1 + 256) = 0; + *(_DWORD *)(a1 + 264) = 0; + *(_DWORD *)(a1 + 268) = 0; + return result; +} + +//----- (00461F48) -------------------------------------------------------- +std::ostream::sentry *__thiscall WXML::DOMLib::StrCache::RenderPathDefine(_DWORD *this, int a2) +{ + unsigned int v3; // esi + std::ostream::sentry *v4; // ebx + int *v5; // eax + + v3 = 0; + v4 = (std::ostream::sentry *)(a2 + 8); + std::operator<<>((std::ostream::sentry *)(a2 + 8), "var x=["); + while ( v3 < -1431655765 * ((this[7] - this[6]) >> 3) ) + { + if ( v3 ) + std::operator<<>(v4, ","); + std::operator<<>(v4, "'"); + v5 = (int *)(this[6] + 24 * v3++); + WXML::Rewrite::ToStringCode(v5, a2); + std::operator<<>(v4, "'"); + } + return std::operator<<>(v4, "];"); +} + +//----- (00461FE4) -------------------------------------------------------- +_BYTE *__thiscall WXML::DOMLib::StrCache::Insert(_DWORD *this, int a2) +{ + _BYTE *result; // eax + int v4; // edi + + result = (_BYTE *)std::map::count(this, a2); + if ( !result ) + { + v4 = this[5]; + *std::map::operator[](this, a2) = v4; + return std::vector::push_back(this + 6, a2); + } + return result; +} + +//----- (0046202C) -------------------------------------------------------- +int __thiscall WXML::DOMLib::StrCache::GetStrID(_DWORD *this, int a2) +{ + BOOL v2; // edx + int result; // eax + + v2 = std::map::count(this, a2); + result = -1; + if ( v2 ) + return *std::map::operator[](this, a2); + return result; +} + +//----- (00462060) -------------------------------------------------------- +void __fastcall WXML::EXPRLib::NonTerminal::~NonTerminal(void *a1) +{ + operator delete(a1); +} + +//----- (00462074) -------------------------------------------------------- +void __fastcall WXML::EXPRLib::EPS::~EPS(void *a1) +{ + operator delete(a1); +} + +//----- (00462088) -------------------------------------------------------- +int __userpurge WXML::EXPRLib::Token::Token@( + int a1@, + _DWORD *a2@, + WXML::EXPRLib::Token *this, + const WXML::EXPRLib::Token *a4) +{ + int v4; // edx + int v5; // eax + int v6; // eax + + v4 = *((_DWORD *)this + 2); + *a2 = *(_DWORD *)this; + v5 = *((_DWORD *)this + 1); + a2[2] = v4; + a2[1] = v5; + a2[3] = *((_DWORD *)this + 3); + v6 = *((_DWORD *)this + 4); + a2[4] = v6; + if ( v6 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v6 + 4)); + a2[5] = *((_DWORD *)this + 5); + a2[6] = *((_DWORD *)this + 6); + return a1; +} +// 4620BB: variable 'a2' is possibly undefined + +//----- (004620CC) -------------------------------------------------------- +int __userpurge WXML::EXPRLib::Token::Token@( + _DWORD *a1@, + WXML::EXPRLib::Token *this, + const WXML::EXPRLib::Token *a3) +{ + int v3; // edx + int v4; // eax + int v5; // eax + int result; // eax + + v3 = *((_DWORD *)this + 2); + *a1 = *(_DWORD *)this; + v4 = *((_DWORD *)this + 1); + a1[2] = v3; + a1[1] = v4; + a1[3] = *((_DWORD *)this + 3); + v5 = *((_DWORD *)this + 4); + a1[4] = v5; + if ( v5 ) + { + if ( _CRT_MT ) + _InterlockedIncrement((volatile signed __int32 *)(v5 + 4)); + else + ++*(_DWORD *)(v5 + 4); + } + a1[5] = *((_DWORD *)this + 5); + result = *((_DWORD *)this + 6); + a1[6] = result; + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00462118) -------------------------------------------------------- +int __fastcall WXML::EXPRLib::Token::Token(_DWORD *a1) +{ + int result; // eax + + result = 0; + a1[3] = 0; + a1[4] = 0; + memset(a1 + 1, 0, 8u); + a1[5] = 0; + a1[6] = 0; + return result; +} + +//----- (00462150) -------------------------------------------------------- +int __fastcall WXML::EXPRLib::Action::Action(int a1) +{ + int result; // eax + + *(_DWORD *)a1 = &off_53784C; + *(_DWORD *)(a1 + 4) = a1 + 12; + result = a1 + 44; + *(_DWORD *)(a1 + 8) = 0; + *(_BYTE *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 36) = a1 + 44; + *(_DWORD *)(a1 + 40) = 0; + *(_BYTE *)(a1 + 44) = 0; + *(_DWORD *)(a1 + 28) = 0; + return result; +} +// 53784C: using guessed type void (__cdecl *off_53784C)(WXML::EXPRLib::Action *__hidden this); + +//----- (00462180) -------------------------------------------------------- +void __fastcall WXML::EXPRLib::Action::~Action(void **a1) +{ + WXML::EXPRLib::Action::~Action(a1); + operator delete(a1); +} + +//----- (0046219C) -------------------------------------------------------- +void __fastcall WXML::EXPRLib::Action::~Action(void **a1) +{ + WXML::EXPRLib::Action::~Action(a1, (WXML::EXPRLib::Action *)2); +} + +//----- (004621B4) -------------------------------------------------------- +void __thiscall WXML::EXPRLib::Action::~Action(void **ecx0, WXML::EXPRLib::Action *this) +{ + void **v3; // ecx + + v3 = ecx0 + 9; + *(v3 - 9) = &off_53784C; + std::string::_M_dispose(v3); + std::string::_M_dispose(ecx0 + 1); +} +// 53784C: using guessed type void (__cdecl *off_53784C)(WXML::EXPRLib::Action *__hidden this); + +//----- (004621D8) -------------------------------------------------------- +int __fastcall WXML::EXPRLib::Terminal::Terminal(int a1) +{ + int result; // eax + + *(_DWORD *)(a1 + 4) = a1 + 12; + result = 0; + *(_DWORD *)a1 = &off_537860; + *(_DWORD *)(a1 + 8) = 0; + *(_BYTE *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 40) = 0; + *(_DWORD *)(a1 + 44) = 0; + memset((void *)(a1 + 32), 0, 8u); + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + return result; +} +// 537860: using guessed type void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this); + +//----- (00462224) -------------------------------------------------------- +void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1) +{ + WXML::EXPRLib::Terminal::~Terminal(a1); + operator delete(a1); +} + +//----- (00462240) -------------------------------------------------------- +void __fastcall WXML::EXPRLib::Terminal::~Terminal(void **a1) +{ + WXML::EXPRLib::Terminal::~Terminal(a1, (WXML::EXPRLib::Terminal *)2); +} + +//----- (00462258) -------------------------------------------------------- +void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this) +{ + volatile signed __int32 **v3; // ecx + + v3 = (volatile signed __int32 **)(ecx0 + 11); + *(v3 - 11) = (volatile signed __int32 *)&off_537860; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); + std::string::_M_dispose(ecx0 + 1); +} +// 537860: using guessed type void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this); + +//----- (0046227C) -------------------------------------------------------- +void __thiscall WXML::EXPRLib::Terminal::~Terminal(void **ecx0, WXML::EXPRLib::Terminal *this) +{ + volatile signed __int32 **v3; // ecx + + v3 = (volatile signed __int32 **)(ecx0 + 11); + *(v3 - 11) = (volatile signed __int32 *)&off_537860; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); + std::string::_M_dispose(ecx0 + 1); +} +// 537860: using guessed type void (__cdecl *off_537860)(WXML::EXPRLib::Terminal *__hidden this); + +//----- (004622A0) -------------------------------------------------------- +unsigned int *__thiscall night::NSASTParse::NSASTParse(int this, int a2, int a3, int a4) +{ + unsigned int *v5; // edi + + v5 = (unsigned int *)(this + 44); + std::string::basic_string((_DWORD *)this, a2); + *(_BYTE *)(this + 52) = 0; + *(_DWORD *)(this + 44) = this + 52; + *(_DWORD *)(this + 28) = a3; + *(_DWORD *)(this + 48) = 0; + *(_DWORD *)(this + 24) = a4; + *(_DWORD *)(this + 32) = 0; + *(_DWORD *)(this + 36) = 0; + *(_DWORD *)(this + 40) = 0; + return std::string::operator=(v5, (char *)off_51B9E4); +} + +//----- (00462320) -------------------------------------------------------- +int __thiscall night::ns_sourcemap::ns_sourcemap(_DWORD *this, _DWORD *a2) +{ + int result; // eax + + std::string::basic_string(this, (int)a2); + this[6] = a2[6]; + this[7] = a2[7]; + std::string::basic_string(this + 8, (int)(a2 + 8)); + this[14] = a2[14]; + result = a2[15]; + this[15] = result; + return result; +} + +//----- (00462378) -------------------------------------------------------- +bool __cdecl night::NSToken::rw_cb_number(night::NSToken *this, _BYTE *a2) +{ + bool result; // al + + if ( (_BYTE)this != 46 ) + return (unsigned __int8)((_BYTE)this - 48) <= 9u; + result = 0; + if ( !*a2 ) + { + *a2 = 1; + return 1; + } + return result; +} + +//----- (004623A0) -------------------------------------------------------- +char __cdecl night::NSToken::tk_is_comment2(night::NSToken *this, night::NSStream *a2) +{ + int v3[3]; // [esp+18h] [ebp-20h] BYREF + _DWORD v4[4]; // [esp+24h] [ebp-14h] BYREF + + night::NSStream::peek(v3, a2); + if ( LOBYTE(v3[0]) != 42 ) + return 1; + night::NSStream::peek_2(v4, a2); + if ( LOBYTE(v4[0]) != 47 ) + return 1; + night::NSStream::next(v4, a2); + return 0; +} +// 4623A0: using guessed type int var_20[3]; +// 4623A0: using guessed type _DWORD var_14[4]; + +//----- (004623E8) -------------------------------------------------------- +int __cdecl night::NSToken::tk_is_var_start(unsigned int this) +{ + unsigned int v1; // edx + unsigned int v2; // eax + + v1 = this; + v2 = (this & 0xFFFFFFDF) - 65; + LOBYTE(v2) = (unsigned __int8)v2 <= 0x19u; + LOBYTE(v1) = (_BYTE)this == 95; + return v1 | v2; +} + +//----- (00462408) -------------------------------------------------------- +bool __cdecl night::NSToken::tk_is_whitespace(night::NSToken *this) +{ + int v1; // ebx + void *v3[2]; // [esp+18h] [ebp-20h] BYREF + char v4; // [esp+20h] [ebp-18h] BYREF + + v3[0] = &v4; + std::string::_M_construct(v3, 1u, (char)this); + v1 = std::string::find(night::NS_BUILTIN_SPACE, (int)v3, 0); + std::string::_M_dispose(v3); + return v1 != -1; +} +// 586AE0: using guessed type int night::NS_BUILTIN_SPACE[6]; + +//----- (0046245C) -------------------------------------------------------- +char __cdecl night::NSToken::tk_is_valid_op_str(night::NSToken *this, int a2) +{ + char v2; // al + char v4; // [esp+1Fh] [ebp-49h] + void *v5[2]; // [esp+20h] [ebp-48h] BYREF + char v6; // [esp+28h] [ebp-40h] BYREF + void *v7[12]; // [esp+38h] [ebp-30h] BYREF + + v5[0] = &v6; + std::string::_M_construct(v5, 1u, (char)this); + if ( std::string::find(night::NS_BUILTIN_OP, (int)v5, 0) == -1 + || (std::string::basic_string(v7, a2), + std::string::append(v7, 1u, (char)this), + std::string::operator=(v5, v7), + std::string::_M_dispose(v7), + std::string::find(night::NS_BUILTIN_ALL_OP, (int)v5, 0) == -1) ) + { + v2 = 0; + } + else + { + std::string::_M_assign(a2, (int)v5); + v2 = 1; + } + v4 = v2; + std::string::_M_dispose(v5); + return v4; +} +// 586B10: using guessed type int night::NS_BUILTIN_ALL_OP[6]; +// 586B40: using guessed type int night::NS_BUILTIN_OP[6]; + +//----- (00462538) -------------------------------------------------------- +bool __cdecl night::NSToken::tk_is_not_line_break(night::NSToken *this) +{ + void *v2[2]; // [esp+18h] [ebp-20h] BYREF + char v3; // [esp+20h] [ebp-18h] BYREF + + v2[0] = &v3; + std::string::_M_construct(v2, 1u, (char)this); + std::string::_M_dispose(v2); + return (_BYTE)this != 10; +} + +//----- (00462574) -------------------------------------------------------- +_DWORD *__thiscall night::NSToken::get_tokens_for_sourcemap(_DWORD *this, _DWORD *a2, _DWORD *a3) +{ + int i; // esi + _DWORD *result; // eax + _DWORD *v5; // ebx + _DWORD *v6; // eax + int v7; // eax + _DWORD *v8; // edx + void (__cdecl *v9)(void *); // ecx + bool v10; // al + void (__cdecl *v11)(void *); // [esp+4h] [ebp-44h] + _DWORD *v12; // [esp+24h] [ebp-24h] + int insert_hint_unique_pos; // [esp+24h] [ebp-24h] + _DWORD *v15; // [esp+2Ch] [ebp-1Ch] + + for ( i = this[9]; ; i = std::_Rb_tree_increment(i) ) + { + result = this + 7; + if ( (_DWORD *)i == this + 7 ) + break; + v5 = a3 + 1; + *std::map::operator[](a2, i + 16) = *(_DWORD *)(i + 40); + v15 = a3 + 1; + v6 = (_DWORD *)a3[2]; + while ( v6 ) + { + if ( v6[4] < *(_DWORD *)(i + 40) ) + { + v6 = (_DWORD *)v6[3]; + } + else + { + v5 = v6; + v6 = (_DWORD *)v6[2]; + } + } + if ( v15 == v5 || *(_DWORD *)(i + 40) < v5[4] ) + { + v12 = v5; + v5 = operator new((struct type_info *)0x2C, v11); + v7 = *(_DWORD *)(i + 40); + v5[6] = 0; + v5[4] = v7; + v5[5] = v5 + 7; + *((_BYTE *)v5 + 28) = 0; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + a3, + v12, + v5 + 4); + v11 = v9; + if ( v8 ) + { + v10 = insert_hint_unique_pos != 0 || v15 == v8; + if ( !v10 ) + v10 = v5[4] < v8[4]; + std::_Rb_tree_insert_and_rebalance(v10, v5, v8, v15); + ++a3[5]; + } + else + { + std::string::_M_dispose((void **)v5 + 5); + operator delete(v5); + v5 = (_DWORD *)insert_hint_unique_pos; + } + } + std::string::_M_assign((int)(v5 + 5), i + 16); + } + return result; +} +// 4625EA: variable 'v11' is possibly undefined +// 462625: variable 'v9' is possibly undefined +// 462629: variable 'v8' is possibly undefined + +//----- (004626A0) -------------------------------------------------------- +int __cdecl night::NSToken::tk_is_var(night::NSToken *this) +{ + int result; // eax + int v2; // edx + unsigned int v3; // eax + + result = night::NSToken::tk_is_var_start((char)this); + if ( !(_BYTE)result ) + { + v3 = (unsigned int)this - 48; + LOBYTE(v3) = (unsigned __int8)((_BYTE)this - 48) <= 9u; + LOBYTE(v2) = (_BYTE)this == 95; + return v2 | v3; + } + return result; +} +// 4626CF: variable 'v2' is possibly undefined + +//----- (004626D8) -------------------------------------------------------- +void **__thiscall night::ns_node::debug_no_space[abi:cxx11](void **this, const char **a2) +{ + const char *v2; // ecx + const char *v3; // ecx + __int64 v4; // rax + int v5; // edi + const char *v6; // ebx + const char *v7; // edx + const char *v8; // ebx + const char *v9; // ecx + _DWORD *v10; // eax + const char *v11; // edi + const char *v12; // eax + const char *v13; // ecx + __int64 v14; // rax + _DWORD *v15; // eax + _DWORD *v16; // eax + __int64 v17; // rcx + const char *v18; // edx + const char *v19; // edi + int v20; // eax + _DWORD *v21; // eax + unsigned int v22; // edi + char *v23; // ecx + _DWORD *v24; // eax + _DWORD *v25; // eax + int *v26; // ebx + const char *v27; // edx + const char *v28; // ebx + const char *v29; // ecx + _DWORD *v30; // eax + _DWORD *v31; // eax + _DWORD *v32; // eax + int *v33; // ecx + __int64 v34; // rcx + const char *v35; // edx + const char *v36; // edi + int v37; // eax + unsigned int i; // edi + char *v39; // ecx + _DWORD *v40; // eax + _DWORD *v41; // eax + const char *v42; // ecx + __int64 v43; // rax + _DWORD *v44; // eax + _DWORD *v45; // eax + int *v46; // ecx + __int64 v47; // rcx + const char *v48; // edx + const char *v49; // edi + int v50; // eax + _DWORD *v51; // eax + unsigned int j; // edi + char *v53; // ecx + _DWORD *v54; // eax + _DWORD *v55; // eax + _DWORD *v56; // eax + int v57; // eax + _DWORD *v58; // eax + _DWORD *v59; // eax + _DWORD **v60; // eax + _DWORD *v61; // eax + _DWORD *v62; // eax + unsigned int k; // edi + char *v64; // ecx + _DWORD *v65; // eax + const char *v66; // ecx + __int64 v67; // rax + const char *v68; // edi + const char *v69; // edx + const char *v70; // ebx + const char *v71; // ecx + int v72; // eax + unsigned int m; // edi + char *v74; // ecx + _DWORD *v75; // eax + __int64 v76; // rcx + const char *v77; // edx + const char *v78; // edi + int v79; // eax + _DWORD *v80; // eax + unsigned int v81; // edi + int v82; // eax + _DWORD *v83; // eax + _DWORD *v84; // eax + _DWORD **v85; // eax + _DWORD *v86; // eax + _DWORD *v87; // eax + const char *v88; // edi + const char *v89; // edx + const char *v90; // ebx + unsigned int v91; // eax + const char *v92; // ecx + bool v93; // zf + int v94; // eax + unsigned int v95; // edi + char *v96; // ecx + _DWORD *v97; // eax + _DWORD *v98; // eax + _DWORD *v99; // eax + const char *ArgList; // [esp+38h] [ebp-4D0h] + const char *ArgLista; // [esp+38h] [ebp-4D0h] + unsigned int ArgListb; // [esp+38h] [ebp-4D0h] + const char *ArgListc; // [esp+38h] [ebp-4D0h] + unsigned int ArgListd; // [esp+38h] [ebp-4D0h] + unsigned int ArgListe; // [esp+38h] [ebp-4D0h] + char *v108; // [esp+48h] [ebp-4C0h] BYREF + int v109; // [esp+4Ch] [ebp-4BCh] + char v110[16]; // [esp+50h] [ebp-4B8h] BYREF + int v111[2]; // [esp+60h] [ebp-4A8h] BYREF + char v112[16]; // [esp+68h] [ebp-4A0h] BYREF + int v113[2]; // [esp+78h] [ebp-490h] BYREF + char v114; // [esp+80h] [ebp-488h] BYREF + int v115; // [esp+90h] [ebp-478h] BYREF + int v116; // [esp+94h] [ebp-474h] + char v117[16]; // [esp+98h] [ebp-470h] BYREF + int v118[2]; // [esp+A8h] [ebp-460h] BYREF + char v119[16]; // [esp+B0h] [ebp-458h] BYREF + int v120[2]; // [esp+C0h] [ebp-448h] BYREF + char v121; // [esp+C8h] [ebp-440h] BYREF + int v122[6]; // [esp+D8h] [ebp-430h] BYREF + char Buffer[4]; // [esp+F0h] [ebp-418h] BYREF + char v124[1020]; // [esp+F4h] [ebp-414h] BYREF + + memset(v124, 0, sizeof(v124)); + *(_DWORD *)Buffer = 0; + if ( std::operator==("skip", (int)a2) ) + snprintf_constprop_0(Buffer, 1024, "type[%s]", *a2); + if ( std::operator==("bool", (int)a2) ) + { + v2 = *a2; + if ( *((_QWORD *)a2 + 6) ) + snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] value[%s]", a2[12], a2[13], v2, a2[15]); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] value[%s]", v2, a2[15]); + } + if ( std::operator==((char *)off_51BA74, (int)a2) + || std::operator==("builtin_type", (int)a2) + || std::operator==("kw", (int)a2) + || std::operator==((char *)off_51BA88, (int)a2) + || std::operator==("punc", (int)a2) + || std::operator==("op", (int)a2) ) + { + v3 = *a2; + if ( *((_QWORD *)a2 + 6) ) + snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] value[%s]", a2[12], a2[13], v3, a2[15]); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] value[%s]", v3, a2[15]); + } + if ( std::operator==((char *)off_51BA88, (int)a2) ) + { + v4 = *((_QWORD *)a2 + 6); + v5 = *((unsigned __int8 *)a2 + 56); + ArgList = *a2; + v6 = a2[15]; + if ( v4 ) + snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] value[%s] flag[%d]", (_DWORD)v4, HIDWORD(v4), ArgList, v6, v5); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] value[%s] flag[%d]", ArgList, v6, v5); + } + if ( std::operator==("op_self", (int)a2) ) + { + v7 = a2[13]; + v117[0] = 0; + v8 = a2[39]; + v9 = *a2; + v115 = (int)v117; + v116 = 0; + if ( __PAIR64__((unsigned int)v7, a2[12]) ) + snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] op[%s]", a2[12], v7, v9, v8); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] op[%s]", v9, v8); + std::string::operator=((unsigned int *)&v115, Buffer); + night::ns_node::debug_no_space[abi:cxx11](a2[48]); + std::operator+(v120, "\nobj=>", (unsigned int *)v118); + v10 = std::string::append(v120, "\nobj<="); + std::string::basic_string(v122, v10); + std::string::operator+=(&v115, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); +LABEL_65: + std::string::_M_dispose((void **)v118); +LABEL_131: + std::string::basic_string(this, &v115); + v46 = &v115; + goto LABEL_132; + } + if ( std::operator==((char *)off_51BB10, (int)a2) ) + { + v11 = a2[15]; + ArgLista = *a2; + v12 = a2[27]; + if ( *((_QWORD *)a2 + 6) ) + snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] value[%s%s%s]", a2[12], a2[13], ArgLista, v12, v11, a2[27]); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] value[%s%s%s]", ArgLista, v12, v11, a2[27]); + } + if ( !std::operator==((char *)off_51BB49, (int)a2) ) + { + if ( std::operator==("obj_self_op", (int)a2) ) + { + if ( a2[12] || a2[13] ) + { + night::ns_node::debug_no_space[abi:cxx11](a2[48]); + snprintf_constprop_0( + Buffer, + 1024, + "(%d,%d)type[%s] after[%d] op[%s] obj[%s]", + a2[12], + a2[13], + *a2, + *((unsigned __int8 *)a2 + 200), + a2[39], + (const char *)v122[0]); + } + else + { + night::ns_node::debug_no_space[abi:cxx11](a2[48]); + snprintf_constprop_0( + Buffer, + 1024, + "type[%s] after[%d] op[%s] obj[%s]", + *a2, + *((unsigned __int8 *)a2 + 200), + a2[39], + (const char *)v122[0]); + } + std::string::_M_dispose((void **)v122); + } + if ( std::operator==("obj_dot", (int)a2) || std::operator==("obj_property", (int)a2) ) + { + v17 = *((_QWORD *)a2 + 6); + v112[0] = 0; + v18 = a2[49]; + v19 = *a2; + v111[0] = (int)v112; + v111[1] = 0; + v20 = *((_DWORD *)v18 + 1); + if ( v17 ) + snprintf_constprop_0( + Buffer, + 1024, + "(%d,%d)type[%s] propertys[%zu]", + (_DWORD)v17, + HIDWORD(v17), + v19, + (v20 - *(_DWORD *)v18) >> 2); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] propertys[%zu]", v19, (v20 - *(_DWORD *)v18) >> 2); + std::string::operator=((unsigned int *)v111, Buffer); + night::ns_node::debug_no_space[abi:cxx11](a2[48]); + std::operator+(v120, "\nobj =>", (unsigned int *)v118); + v21 = std::string::append(v120, "\nobj<="); + std::string::basic_string(v122, v21); + std::string::operator+=(v111, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + std::string::operator+=(v111, "\npropertys =>"); + v22 = 0; + while ( 1 ) + { + v23 = (char *)a2[49]; + if ( v22 >= (*((_DWORD *)v23 + 1) - *(_DWORD *)v23) >> 2 ) + break; + v24 = (_DWORD *)std::vector::at(v23, v22); + night::ns_node::debug_no_space[abi:cxx11](*v24); + v113[0] = (int)&v114; + std::string::_M_construct(v113, 1u, v22 + 48); + std::operator+(&v115, "\n[", (unsigned int *)v113); + v25 = std::string::append(&v115, "] "); + std::string::basic_string(v118, v25); + std::operator+(v122, v118, (unsigned int *)v120); + std::string::operator+=(v111, (int)v122); + ++v22; + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v118); + std::string::_M_dispose((void **)&v115); + std::string::_M_dispose((void **)v113); + std::string::_M_dispose((void **)v120); + } + v26 = v111; + std::string::operator+=(v111, "\npropertys<="); + goto LABEL_122; + } + if ( std::operator==("if", (int)a2) ) + { + v27 = a2[13]; + v117[0] = 0; + v28 = a2[27]; + v29 = *a2; + v115 = (int)v117; + v116 = 0; + if ( __PAIR64__((unsigned int)v27, a2[12]) ) + snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] punc[%s]", a2[12], v27, v29, v28); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] punc[%s]", v29, v28); + v26 = &v115; + std::string::operator=((unsigned int *)&v115, Buffer); + night::ns_node::debug_no_space[abi:cxx11](a2[51]); + std::operator+(v120, "\ncond =>", (unsigned int *)v118); + v30 = std::string::append(v120, "\ncond<="); + std::string::basic_string(v122, v30); + std::string::operator+=(&v115, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + night::ns_node::debug_no_space[abi:cxx11](a2[52]); + std::operator+(v120, "\nifd =>", (unsigned int *)v118); + v31 = std::string::append(v120, "\nifd<="); + std::string::basic_string(v122, v31); + std::string::operator+=(&v115, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + if ( !a2[53] ) + goto LABEL_122; + night::ns_node::debug_no_space[abi:cxx11](a2[53]); + std::operator+(v120, "\nelsed =>", (unsigned int *)v118); + v32 = std::string::append(v120, "\nelsed<="); + std::string::basic_string(v122, v32); + std::string::operator+=(&v115, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + v33 = v118; + } + else + { + if ( std::operator==((char *)off_51BC9A, (int)a2) ) + { + v34 = *((_QWORD *)a2 + 6); + v117[0] = 0; + v35 = a2[57]; + v36 = *a2; + v115 = (int)v117; + v116 = 0; + v37 = *((_DWORD *)v35 + 1); + if ( v34 ) + snprintf_constprop_0( + Buffer, + 1024, + "(%d,%d)type[%s] progs[%zu]", + (_DWORD)v34, + HIDWORD(v34), + v36, + (v37 - *(_DWORD *)v35) >> 2); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] progs[%zu]", v36, (v37 - *(_DWORD *)v35) >> 2); + std::string::operator=((unsigned int *)&v115, Buffer); + std::string::operator+=(&v115, "\nprogs =>"); + for ( i = 0; ; ++i ) + { + v39 = (char *)a2[57]; + if ( i >= (*((_DWORD *)v39 + 1) - *(_DWORD *)v39) >> 2 ) + break; + v40 = (_DWORD *)std::vector::at(v39, i); + night::ns_node::debug_no_space[abi:cxx11](*v40); + std::operator+(v122, "\n", (unsigned int *)v120); + std::string::operator+=(&v115, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + } + std::string::operator+=(&v115, "\nprogs<="); + night::ns_node::debug_no_space[abi:cxx11](a2[54]); + std::operator+(v120, "\nbody =>", (unsigned int *)v118); + v41 = std::string::append(v120, "\nbody<="); + std::string::basic_string(v122, v41); + std::string::operator+=(&v115, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + goto LABEL_65; + } + if ( std::operator==("while", (int)a2) || std::operator==("do_while", (int)a2) ) + { + HIDWORD(v43) = a2[13]; + v42 = *a2; + v116 = 0; + v115 = (int)v117; + LODWORD(v43) = a2[12]; + v117[0] = 0; + if ( v43 ) + snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s]", (_DWORD)v43, HIDWORD(v43), v42); + else + snprintf_constprop_0(Buffer, 1024, "type[%s]", v42); + std::string::operator=((unsigned int *)&v115, Buffer); + night::ns_node::debug_no_space[abi:cxx11](a2[51]); + std::operator+(v120, "\ncond =>", (unsigned int *)v118); + v44 = std::string::append(v120, "\ncond<="); + std::string::basic_string(v122, v44); + std::string::operator+=(&v115, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + night::ns_node::debug_no_space[abi:cxx11](a2[54]); + std::operator+(v120, "\nbody =>", (unsigned int *)v118); + v45 = std::string::append(v120, "\nbody<="); + std::string::basic_string(v122, v45); + std::string::operator+=(&v115, (int)v122); + goto LABEL_74; + } + if ( std::operator==("switch", (int)a2) ) + { + v47 = *((_QWORD *)a2 + 6); + v110[0] = 0; + v48 = a2[58]; + v49 = *a2; + v108 = v110; + v109 = 0; + v50 = *((_DWORD *)v48 + 1); + if ( v47 ) + snprintf_constprop_0( + Buffer, + 1024, + "(%d,%d)type[%s] cases[%zu]", + (_DWORD)v47, + HIDWORD(v47), + v49, + (v50 - *(_DWORD *)v48) >> 2); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] cases[%zu]", v49, (v50 - *(_DWORD *)v48) >> 2); + std::string::operator=((unsigned int *)&v108, Buffer); + night::ns_node::debug_no_space[abi:cxx11](a2[51]); + std::operator+(v120, "\ncond =>", (unsigned int *)v118); + v51 = std::string::append(v120, "\ncond<="); + std::string::basic_string(v122, v51); + std::string::operator+=(&v108, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + std::string::operator+=(&v108, "\ncases=>\n"); + for ( j = 0; ; ++j ) + { + v53 = (char *)a2[58]; + if ( j >= (*((_DWORD *)v53 + 1) - *(_DWORD *)v53) >> 2 ) + break; + v54 = (_DWORD *)std::vector::at(v53, j); + night::ns_node::debug_no_space[abi:cxx11](*v54); + v111[0] = (int)v112; + std::string::_M_construct(v111, 1u, j + 48); + std::operator+(v113, "cases[", (unsigned int *)v111); + v55 = std::string::append(v113, "]=>"); + std::string::basic_string(&v115, v55); + std::operator+(v120, &v115, (unsigned int *)v118); + v56 = std::string::append(v120, "<=cases"); + std::string::basic_string(v122, v56); + std::string::operator+=(&v108, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)&v115); + std::string::_M_dispose((void **)v113); + std::string::_M_dispose((void **)v111); + std::string::_M_dispose((void **)v118); + for ( ArgListb = 0; ; ++ArgListb ) + { + v57 = std::vector>>::at(a2[59], j); + if ( ArgListb >= (*(_DWORD *)(*(_DWORD *)v57 + 4) - **(_DWORD **)v57) >> 2 ) + break; + v118[0] = (int)v119; + std::string::_M_construct(v118, 1u, ArgListb + 48); + v111[0] = (int)v112; + std::string::_M_construct(v111, 1u, j + 48); + std::operator+(v113, "\ncase_progs[", (unsigned int *)v111); + v58 = std::string::append(v113, ","); + std::string::basic_string(&v115, v58); + std::operator+(v120, &v115, (unsigned int *)v118); + v59 = std::string::append(v120, "]=>"); + std::string::basic_string(v122, v59); + std::string::operator+=(&v108, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)&v115); + std::string::_M_dispose((void **)v113); + std::string::_M_dispose((void **)v111); + std::string::_M_dispose((void **)v118); + v60 = (_DWORD **)std::vector>>::at(a2[59], j); + v61 = (_DWORD *)std::vector::at(*v60, ArgListb); + night::ns_node::debug_no_space[abi:cxx11](*v61); + v62 = std::string::append(v120, "<=case_progs\n"); + std::string::basic_string(v122, v62); + std::string::operator+=(&v108, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + } + } + std::string::operator+=(&v108, "cases<="); + std::string::operator+=(&v108, "\ndefault=>"); + for ( k = 0; ; ++k ) + { + v64 = (char *)a2[60]; + if ( k >= (*((_DWORD *)v64 + 1) - *(_DWORD *)v64) >> 2 ) + break; + v65 = (_DWORD *)std::vector::at(v64, k); + night::ns_node::debug_no_space[abi:cxx11](*v65); + std::operator+(v122, "\n", (unsigned int *)v120); + std::string::operator+=(&v108, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + } + std::string::operator+=(&v108, "\ndefault<="); + std::string::basic_string(this, &v108); + v46 = (int *)&v108; + goto LABEL_132; + } + if ( !std::operator==("binary", (int)a2) + && !std::operator==("assign", (int)a2) + && !std::operator==("ternary", (int)a2) ) + { + if ( std::operator==("prog", (int)a2) + || std::operator==("prog_no_sem", (int)a2) + || std::operator==("prog_no_sem_require", (int)a2) + || std::operator==("obj_block", (int)a2) + || std::operator==("array", (int)a2) + || std::operator==("bracket", (int)a2) ) + { + v68 = a2[12]; + v69 = a2[57]; + v119[0] = 0; + v70 = *a2; + v71 = a2[27]; + v118[0] = (int)v119; + v118[1] = 0; + ArgListc = a2[13]; + v72 = *((_DWORD *)v69 + 1); + if ( (unsigned int)v68 | (unsigned int)ArgListc ) + snprintf_constprop_0( + Buffer, + 1024, + "(%d,%d)type[%s] punc[%s] progs[%zu] =>", + v68, + ArgListc, + v70, + v71, + (v72 - *(_DWORD *)v69) >> 2); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] punc[%s] progs[%zu] =>", v70, v71, (v72 - *(_DWORD *)v69) >> 2); + std::string::operator=((unsigned int *)v118, Buffer); + for ( m = 0; ; ++m ) + { + v74 = (char *)a2[57]; + if ( m >= (*((_DWORD *)v74 + 1) - *(_DWORD *)v74) >> 2 ) + break; + v75 = (_DWORD *)std::vector::at(v74, m); + night::ns_node::debug_no_space[abi:cxx11](*v75); + std::operator+(v122, "\n", (unsigned int *)v120); + std::string::operator+=(v118, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + } + std::string::operator+=(v118, "\nprogs<="); + std::string::basic_string(this, v118); + v46 = v118; + goto LABEL_132; + } + if ( !std::operator==("call", (int)a2) ) + { + if ( !std::operator==("function", (int)a2) ) + { + std::string::basic_string(this, Buffer); + return this; + } + v88 = a2[12]; + v89 = a2[61]; + v117[0] = 0; + v90 = *a2; + v115 = (int)v117; + v91 = (unsigned int)a2[13]; + v92 = a2[33]; + v116 = 0; + ArgListe = v91; + v93 = ((unsigned int)v88 | v91) == 0; + v94 = *((_DWORD *)v89 + 1); + if ( v93 ) + snprintf_constprop_0( + Buffer, + 1024, + "func type[%s] name[%s] fargs[%zu] =>", + v90, + v92, + (v94 - *(_DWORD *)v89) >> 2); + else + snprintf_constprop_0( + Buffer, + 1024, + "func (%d,%d)type[%s] name[%s] fargs[%zu] =>", + v88, + ArgListe, + v90, + v92, + (v94 - *(_DWORD *)v89) >> 2); + std::string::operator=((unsigned int *)&v115, Buffer); + v95 = 0; + while ( 1 ) + { + v96 = (char *)a2[61]; + if ( v95 >= (*((_DWORD *)v96 + 1) - *(_DWORD *)v96) >> 2 ) + break; + v97 = (_DWORD *)std::vector::at(v96, v95); + night::ns_node::debug_no_space[abi:cxx11](*v97); + std::operator+(v120, "\nfargs[]=>", (unsigned int *)v118); + v98 = std::string::append(v120, "<=[]fargs"); + std::string::basic_string(v122, v98); + std::string::operator+=(&v115, (int)v122); + ++v95; + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + } + std::string::operator+=(&v115, "\nfargs<="); + night::ns_node::debug_no_space[abi:cxx11](a2[54]); + std::operator+(v120, "\nbody=>", (unsigned int *)v118); + v99 = std::string::append(v120, "\nbody<="); + std::string::basic_string(v122, v99); + std::string::operator+=(&v115, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + std::string::operator+=(&v115, "\nfunc<="); + goto LABEL_131; + } + v76 = *((_QWORD *)a2 + 6); + v110[0] = 0; + v77 = a2[56]; + v78 = *a2; + v108 = v110; + v109 = 0; + v79 = *((_DWORD *)v77 + 1); + if ( v76 ) + snprintf_constprop_0( + Buffer, + 1024, + "call (%d,%d)type[%s] argss[%zu] =>", + (_DWORD)v76, + HIDWORD(v76), + v78, + (v79 - *(_DWORD *)v77) >> 2); + else + snprintf_constprop_0(Buffer, 1024, "call type[%s] argss[%zu] =>", v78, (v79 - *(_DWORD *)v77) >> 2); + std::string::operator=((unsigned int *)&v108, Buffer); + night::ns_node::debug_no_space[abi:cxx11](a2[55]); + std::operator+(v120, "\nfunc=>", (unsigned int *)v118); + v80 = std::string::append(v120, "\nfunc<="); + std::string::basic_string(v122, v80); + std::string::operator+=(&v108, (int)v122); + std::string::_M_dispose((void **)v122); + v81 = 0; + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + while ( v81 < (*((_DWORD *)a2[56] + 1) - *(_DWORD *)a2[56]) >> 2 ) + { + for ( ArgListd = 0; ; ++ArgListd ) + { + v82 = std::vector>>::at(a2[56], v81); + if ( ArgListd >= (*(_DWORD *)(*(_DWORD *)v82 + 4) - **(_DWORD **)v82) >> 2 ) + break; + v118[0] = (int)v119; + std::string::_M_construct(v118, 1u, ArgListd + 48); + v111[0] = (int)v112; + std::string::_M_construct(v111, 1u, v81 + 48); + std::operator+(v113, "\nargss[", (unsigned int *)v111); + v83 = std::string::append(v113, ","); + std::string::basic_string(&v115, v83); + std::operator+(v120, &v115, (unsigned int *)v118); + v84 = std::string::append(v120, "]=>"); + std::string::basic_string(v122, v84); + std::string::operator+=(&v108, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)&v115); + std::string::_M_dispose((void **)v113); + std::string::_M_dispose((void **)v111); + std::string::_M_dispose((void **)v118); + v85 = (_DWORD **)std::vector>>::at(a2[56], v81); + v86 = (_DWORD *)std::vector::at(*v85, ArgListd); + night::ns_node::debug_no_space[abi:cxx11](*v86); + v87 = std::string::append(v120, "<="); + std::string::basic_string(v122, v87); + std::string::operator+=(&v108, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + } + ++v81; + } + v26 = (int *)&v108; + std::string::operator+=(&v108, "\ncall<="); + goto LABEL_122; + } + HIDWORD(v67) = a2[13]; + v66 = *a2; + v120[1] = 0; + v120[0] = (int)&v121; + LODWORD(v67) = a2[12]; + v121 = 0; + if ( v67 ) + snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s] op[%s]", (_DWORD)v67, HIDWORD(v67), v66, a2[39]); + else + snprintf_constprop_0(Buffer, 1024, "type[%s] op[%s]", v66, a2[39]); + v26 = v120; + std::string::operator=((unsigned int *)v120, Buffer); + std::string::operator+=(v120, "\nleft <="); + night::ns_node::debug_no_space[abi:cxx11](a2[45]); + std::string::operator+=(v120, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::operator+=(v120, "\nright <="); + night::ns_node::debug_no_space[abi:cxx11](a2[46]); + std::string::operator+=(v120, (int)v122); + v33 = v122; + } + std::string::_M_dispose((void **)v33); +LABEL_122: + std::string::basic_string(this, v26); + v46 = v26; + goto LABEL_132; + } + HIDWORD(v14) = a2[13]; + v13 = *a2; + v116 = 0; + v115 = (int)v117; + LODWORD(v14) = a2[12]; + v117[0] = 0; + if ( v14 ) + snprintf_constprop_0(Buffer, 1024, "(%d,%d)type[%s]", (_DWORD)v14, HIDWORD(v14), v13); + else + snprintf_constprop_0(Buffer, 1024, "type[%s]", v13); + std::string::operator=((unsigned int *)&v115, Buffer); + night::ns_node::debug_no_space[abi:cxx11](a2[47]); + std::operator+(v120, " key[", (unsigned int *)v118); + v15 = std::string::append(v120, "]"); + std::string::basic_string(v122, v15); + std::string::operator+=(&v115, (int)v122); + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + night::ns_node::debug_no_space[abi:cxx11](a2[48]); + std::operator+(v120, " value[", (unsigned int *)v118); + v16 = std::string::append(v120, "]"); + std::string::basic_string(v122, v16); + std::string::operator+=(&v115, (int)v122); +LABEL_74: + std::string::_M_dispose((void **)v122); + std::string::_M_dispose((void **)v120); + std::string::_M_dispose((void **)v118); + std::string::basic_string(this, &v115); + v46 = &v115; +LABEL_132: + std::string::_M_dispose((void **)v46); + return this; +} + +//----- (00464774) -------------------------------------------------------- +void **__gnu_cxx::__to_xstring( + void **a1, + int (__cdecl *a2)(unsigned __int8 *, int, int, char *), + int a3, + int a4, + ...) +{ + int v4; // eax + void *v5; // esp + void *v6; // esp + unsigned int v7; // eax + unsigned __int8 *v8; // edi + unsigned int v9; // eax + _BYTE *v10; // edx + unsigned __int8 v12[12]; // [esp+10h] [ebp-28h] BYREF + unsigned int v13[7]; // [esp+1Ch] [ebp-1Ch] BYREF + va_list va; // [esp+50h] [ebp+18h] BYREF + + va_start(va, a4); + v4 = 16 * ((unsigned int)(a3 + 27) >> 4); + v5 = alloca(v4); + v6 = alloca(v4); + v7 = a2(v12, a3, a4, va); + *a1 = a1 + 2; + v8 = &v12[v7]; + v13[0] = v7; + if ( v7 > 0xF ) + { + *a1 = std::string::_M_create(v13, 0); + a1[2] = (void *)v13[0]; + } + std::string::_S_copy_chars(*a1, v12, (size_t)v8); + v9 = v13[0]; + v10 = *a1; + a1[1] = (void *)v13[0]; + v10[v9] = 0; + return a1; +} +// 464774: using guessed type unsigned int var_1C[7]; + +//----- (00464810) -------------------------------------------------------- +void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(__gthread_mutex_t **a1) +{ + _DWORD *exception; // eax + + if ( _CRT_MT ) + { + if ( __gthr_win32_mutex_unlock(*a1) ) + { + exception = __cxa_allocate_exception(4u); + *exception = &off_53799C; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); + } + } +} +// 533CF4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; +// 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00464880) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) +{ + return std::__basic_file::fd(a1 + 40); +} + +//----- (00464890) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) +{ + return std::__basic_file::file(a1 + 40); +} + +//----- (004648B0) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::filebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_537874; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::filebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 537874: using guessed type int (*off_537874)(); + +//----- (00464950) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::filebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_537874; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::filebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 537874: using guessed type int (*off_537874)(); + +//----- (004649F0) -------------------------------------------------------- +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) +{ + void *result; // eax + + result = std::filebuf::basic_filebuf((int)a1); + *a1 = &off_537874; + return result; +} +// 537874: using guessed type int (*off_537874)(); + +//----- (00464A10) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::filebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_537874; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::filebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 537874: using guessed type int (*off_537874)(); + +//----- (00464AB0) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::filebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_537874; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::filebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 537874: using guessed type int (*off_537874)(); + +//----- (00464B50) -------------------------------------------------------- +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) +{ + void *result; // eax + + result = std::filebuf::basic_filebuf((int)a1); + *a1 = &off_537874; + return result; +} +// 537874: using guessed type int (*off_537874)(); + +//----- (00464B70) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1) +{ + *a1 = &off_5386E0; + std::filebuf::close((int)a1); + std::__basic_file::~__basic_file(a1 + 10); + *a1 = &off_538A48; + std::locale::~locale(a1 + 7); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (00464BC0) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_5386E0; + std::filebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (00464C00) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_5386E0; + std::filebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (00464C40) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) +{ + return std::__basic_file::fd(a1 + 40); +} + +//----- (00464C50) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) +{ + return std::__basic_file::file(a1 + 40); +} + +//----- (00464C70) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::wfilebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_5378B4; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::wfilebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 5378B4: using guessed type int (*off_5378B4)(); + +//----- (00464D10) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::wfilebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_5378B4; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::wfilebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 5378B4: using guessed type int (*off_5378B4)(); + +//----- (00464DB0) -------------------------------------------------------- +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) +{ + void *result; // eax + + result = std::wfilebuf::basic_filebuf((int)a1); + *a1 = &off_5378B4; + return result; +} +// 5378B4: using guessed type int (*off_5378B4)(); + +//----- (00464DD0) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::wfilebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_5378B4; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::wfilebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 5378B4: using guessed type int (*off_5378B4)(); + +//----- (00464E70) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::wfilebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_5378B4; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::wfilebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 5378B4: using guessed type int (*off_5378B4)(); + +//----- (00464F10) -------------------------------------------------------- +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) +{ + void *result; // eax + + result = std::wfilebuf::basic_filebuf((int)a1); + *a1 = &off_5378B4; + return result; +} +// 5378B4: using guessed type int (*off_5378B4)(); + +//----- (00464F30) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1) +{ + *a1 = &off_538720; + std::wfilebuf::close((int)a1); + std::__basic_file::~__basic_file(a1 + 10); + *a1 = &off_538A88; + std::locale::~locale(a1 + 7); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (00464F80) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_538720; + std::wfilebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (00464FC0) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_538720; + std::wfilebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (00465000) -------------------------------------------------------- +int __cdecl __gnu_cxx::__concat_size_t(char *a1, unsigned int a2, unsigned int a3) +{ + void *v4; // esp + void *v5; // esp + _BYTE *v6; // ebx + unsigned int v7; // eax + int v8; // edi + int v10; // [esp-10h] [ebp-48h] BYREF + _BYTE v11[28]; // [esp-4h] [ebp-3Ch] BYREF + int *v12; // [esp+18h] [ebp-20h] + _BYTE *v13; // [esp+1Ch] [ebp-1Ch] + + v4 = alloca(32); + v5 = alloca(32); + v12 = &v10; + v13 = v11; + v6 = v11; + do + { + *--v6 = byte_52FFF5[a3 % 0xA]; + v7 = a3; + a3 /= 0xAu; + } + while ( v7 > 9 ); + v8 = v13 - v6; + if ( v13 - v6 > a2 ) + return -1; + memcpy(a1, (char *)v12 - v8 + 12, v13 - v6); + return v8; +} + +//----- (00465090) -------------------------------------------------------- +int __cdecl __gnu_cxx::__snprintf_lite(char *a1, unsigned int a2, const char *a3, char *a4) +{ + const char *Src; // edx + const char *v5; // esi + const char *v7; // edi + char *v8; // ebx + char v9; // al + char v10; // al + char *v11; // ebp + int v12; // eax + int result; // eax + char *v14; // ebp + char *v15; // ecx + char v16; // al + char *v17; // [esp+30h] [ebp+4h] + + Src = a1; + v5 = a3; + v7 = &a1[a2 - 1]; + v8 = a1; + v9 = *a3; + if ( !*a3 ) + { + result = 0; + goto LABEL_17; + } + if ( a1 >= v7 ) +LABEL_26: + __gnu_cxx::__throw_insufficient_space(Src, v8); + while ( 1 ) + { + if ( v9 != 37 ) + goto LABEL_4; + v10 = v5[1]; + if ( v10 == 115 ) + { + v14 = a4 + 4; + v15 = *(char **)a4; + v16 = *v15; + if ( *v15 ) + { + if ( v7 <= v8 ) + { + v7 = v8; +LABEL_24: + __gnu_cxx::__throw_insufficient_space(Src, v7); + } + while ( 1 ) + { + ++v15; + *v8++ = v16; + v16 = *v15; + if ( !*v15 ) + break; + if ( v7 == v8 ) + goto LABEL_24; + } + } + v5 += 2; + a4 = v14; + goto LABEL_6; + } + if ( v10 != 122 ) + { + if ( v10 == 37 ) + ++v5; + else +LABEL_4: + v10 = *v5; + *v8 = v10; + ++v5; + ++v8; +LABEL_6: + v9 = *v5; + if ( !*v5 ) + break; + goto LABEL_7; + } + if ( v5[2] != 117 ) + goto LABEL_4; + v11 = a4 + 4; + v17 = (char *)Src; + v12 = __gnu_cxx::__concat_size_t(v8, v7 - v8, *(_DWORD *)a4); + Src = v17; + if ( v12 <= 0 ) + goto LABEL_26; + v5 += 3; + v8 += v12; + a4 = v11; + v9 = *v5; + if ( !*v5 ) + break; +LABEL_7: + if ( v8 >= v7 ) + goto LABEL_26; + } + result = v8 - Src; +LABEL_17: + *v8 = 0; + return result; +} + +//----- (004651B0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) +{ + return *(_DWORD *)(a1 + 32); +} + +//----- (004651C0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + int v15; // edx + int result; // eax + const std::locale *v17; // [esp+4h] [ebp-48h] + volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] + _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + v18 = (volatile signed __int32 **)(this + 28); + std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); + std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); + std::locale::~locale(v19); + v14 = *(_DWORD *)(this + 32); + *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); + v15 = *(_DWORD *)(a2 + 36); + *(_DWORD *)(a2 + 32) = v14; + result = *(_DWORD *)(this + 36); + *(_DWORD *)(this + 36) = v15; + *(_DWORD *)(a2 + 36) = result; + return result; +} +// 465228: variable 'v17' is possibly undefined + +//----- (00465280) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) +{ + return fflush(*(FILE **)(a1 + 32)); +} + +//----- (004652A0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) +{ + FILE *File; // edx + char *v4; // eax + int result; // eax + + File = *(FILE **)(a1 + 32); + if ( --File->_cnt < 0 ) + { + result = _filbuf(File); + } + else + { + v4 = File->_ptr++; + result = (unsigned __int8)*v4; + } + *(_DWORD *)(a1 + 36) = result; + return result; +} + +//----- (004652E0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount) +{ + int result; // eax + int v5; // edx + + result = fread(Buffer, 1u, ElementCount, *(FILE **)(this + 32)); + v5 = -1; + if ( result > 0 ) + v5 = (unsigned __int8)Buffer[result - 1]; + *(_DWORD *)(this + 36) = v5; + return result; +} + +//----- (00465330) -------------------------------------------------------- +size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount) +{ + return fwrite(Buffer, 1u, ElementCount, this[8]); +} + +//----- (00465360) -------------------------------------------------------- +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff( + _DWORD *this, + int a2, + int Offset, + int a4, + int a5, + int a6) +{ + int Origin; // eax + int v9; // eax + + Origin = 0; + *this = -1; + this[1] = -1; + this[2] = 0; + if ( a5 ) + Origin = (a5 != 1) + 1; + if ( !fseek(*(FILE **)(a2 + 32), Offset, Origin) ) + { + v9 = ftell(*(FILE **)(a2 + 32)); + this[2] = 0; + *(_QWORD *)this = v9; + } + return this; +} + +//----- (004653F0) -------------------------------------------------------- +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( + _DWORD *this, + FILE **a2, + int Offset, + int a4, + int a5, + int a6, + int a7) +{ + _DWORD *(__thiscall *file)(_DWORD *, int, int, int, int, int); // edx + FILE *Stream; // eax + int v11; // eax + + file = (_DWORD *(__thiscall *)(_DWORD *, int, int, int, int, int))(*a2)->_file; + if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) + { + Stream = a2[8]; + *this = -1; + this[1] = -1; + this[2] = 0; + if ( !fseek(Stream, Offset, 0) ) + { + v11 = ftell(a2[8]); + this[2] = 0; + *(_QWORD *)this = v11; + } + return this; + } + else + { + file(this, (int)a2, Offset, a4, 0, a7); + return this; + } +} + +//----- (004654C0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(_DWORD *this, int a2) +{ + FILE *Stream; // edx + char *v4; // ecx + + Stream = (FILE *)this[8]; + if ( a2 == -1 ) + return -(fflush(Stream) != 0); + if ( --Stream->_cnt < 0 ) + return _flsbuf(a2, Stream); + v4 = Stream->_ptr++; + *v4 = a2; + return (unsigned __int8)a2; +} + +//----- (00465530) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2) +{ + int result; // eax + + result = a2; + if ( a2 != -1 || (result = *(_DWORD *)(this + 36), result != -1) ) + result = ungetc(result, *(FILE **)(this + 32)); + *(_DWORD *)(this + 36) = -1; + return result; +} + +//----- (00465570) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) +{ + FILE *Stream; // edx + char *v3; // eax + int Character; // eax + + Stream = *(FILE **)(a1 + 32); + if ( --Stream->_cnt < 0 ) + { + Character = _filbuf(Stream); + Stream = *(FILE **)(a1 + 32); + } + else + { + v3 = Stream->_ptr++; + Character = (unsigned __int8)*v3; + } + return ungetc(Character, Stream); +} + +//----- (004655B0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + int v3; // eax + int result; // eax + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf(this, a2, v5); + v3 = *(_DWORD *)(a2 + 32); + *this = &off_5378F4; + *(_DWORD *)(a2 + 32) = 0; + this[8] = v3; + result = *(_DWORD *)(a2 + 36); + *(_DWORD *)(a2 + 36) = -1; + this[9] = result; + return result; +} +// 4655BE: variable 'v5' is possibly undefined +// 5378F4: using guessed type int (*off_5378F4)(); + +//----- (004655F0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_538A48; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + result = a2; + *this = &off_5378F4; + this[9] = -1; + this[8] = a2; + return result; +} +// 5378F4: using guessed type int (*off_5378F4)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (00465650) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + int v3; // eax + int result; // eax + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf(this, a2, v5); + v3 = *(_DWORD *)(a2 + 32); + *this = &off_5378F4; + *(_DWORD *)(a2 + 32) = 0; + this[8] = v3; + result = *(_DWORD *)(a2 + 36); + *(_DWORD *)(a2 + 36) = -1; + this[9] = result; + return result; +} +// 46565E: variable 'v5' is possibly undefined +// 5378F4: using guessed type int (*off_5378F4)(); + +//----- (00465690) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_538A48; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + result = a2; + *this = &off_5378F4; + this[9] = -1; + this[8] = a2; + return result; +} +// 5378F4: using guessed type int (*off_5378F4)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004656F0) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1) +{ + _DWORD **v2; // ecx + + v2 = (_DWORD **)(a1 + 28); + *(v2 - 7) = &off_538A48; + std::locale::~locale(v2); + operator delete(a1); +} +// 538A48: using guessed type int (*off_538A48)(); + +//----- (00465720) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 538A48: using guessed type int (*off_538A48)(); + +//----- (00465730) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) +{ + int v3; // eax + int v4; // eax + + std::streambuf::operator=((volatile signed __int32 **)this, a2); + v3 = *(_DWORD *)(a2 + 32); + *(_DWORD *)(a2 + 32) = 0; + *(_DWORD *)(this + 32) = v3; + v4 = *(_DWORD *)(a2 + 36); + *(_DWORD *)(a2 + 36) = -1; + *(_DWORD *)(this + 36) = v4; + return this; +} + +//----- (00465770) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) +{ + return *(_DWORD *)(a1 + 32); +} + +//----- (00465780) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + __int16 v15; // dx + int result; // eax + const std::locale *v17; // [esp+4h] [ebp-48h] + volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] + _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + v18 = (volatile signed __int32 **)(this + 28); + std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); + std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); + std::locale::~locale(v19); + v14 = *(_DWORD *)(this + 32); + *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); + v15 = *(_WORD *)(a2 + 36); + *(_DWORD *)(a2 + 32) = v14; + result = *(unsigned __int16 *)(this + 36); + *(_WORD *)(this + 36) = v15; + *(_WORD *)(a2 + 36) = result; + return result; +} +// 4657E8: variable 'v17' is possibly undefined + +//----- (00465840) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) +{ + return fflush(*(FILE **)(a1 + 32)); +} + +//----- (00465860) -------------------------------------------------------- +wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) +{ + wint_t result; // ax + + result = getwc(*(FILE **)(a1 + 32)); + *(_WORD *)(a1 + 36) = result; + return result; +} + +//----- (00465880) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int a2, int a3) +{ + int v4; // edi + wint_t v5; // ax + + v4 = 0; + if ( a3 ) + { + while ( 1 ) + { + v5 = getwc(*(FILE **)(this + 32)); + if ( v5 == 0xFFFF ) + break; + *(_WORD *)(a2 + 2 * v4++) = v5; + if ( a3 == v4 ) + goto LABEL_7; + } + if ( !v4 ) + goto LABEL_6; +LABEL_7: + *(_WORD *)(this + 36) = *(_WORD *)(a2 + 2 * v4 - 2); + return v4; + } + else + { +LABEL_6: + *(_WORD *)(this + 36) = -1; + return 0; + } +} + +//----- (00465900) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int a2, int a3) +{ + int i; // ebx + + if ( !a3 ) + return 0; + for ( i = 0; i != a3; ++i ) + { + if ( putwc(*(_WORD *)(a2 + 2 * i), this[8]) == 0xFFFF ) + break; + } + return i; +} + +//----- (00465950) -------------------------------------------------------- +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff( + _DWORD *this, + int a2, + int Offset, + int a4, + int a5, + int a6) +{ + int Origin; // eax + int v9; // eax + + Origin = 0; + *this = -1; + this[1] = -1; + this[2] = 0; + if ( a5 ) + Origin = (a5 != 1) + 1; + if ( !fseek(*(FILE **)(a2 + 32), Offset, Origin) ) + { + v9 = ftell(*(FILE **)(a2 + 32)); + this[2] = 0; + *(_QWORD *)this = v9; + } + return this; +} + +//----- (004659E0) -------------------------------------------------------- +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( + _DWORD *this, + FILE **a2, + int Offset, + int a4, + int a5, + int a6, + int a7) +{ + _DWORD *(__thiscall *file)(_DWORD *, int, int, int, int, int); // edx + FILE *Stream; // eax + int v11; // eax + + file = (_DWORD *(__thiscall *)(_DWORD *, int, int, int, int, int))(*a2)->_file; + if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) + { + Stream = a2[8]; + *this = -1; + this[1] = -1; + this[2] = 0; + if ( !fseek(Stream, Offset, 0) ) + { + v11 = ftell(a2[8]); + this[2] = 0; + *(_QWORD *)this = v11; + } + return this; + } + else + { + file(this, (int)a2, Offset, a4, 0, a7); + return this; + } +} + +//----- (00465AB0) -------------------------------------------------------- +__int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character) +{ + int v2; // eax + + if ( Character == 0xFFFF ) + return -(fflush(this[8]) != 0); + else + LOWORD(v2) = putwc(Character, this[8]); + return v2; +} + +//----- (00465AF0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character) +{ + int result; // eax + + if ( Character == 0xFFFF ) + { + result = *(unsigned __int16 *)(this + 36); + if ( (_WORD)result != 0xFFFF ) + LOWORD(result) = ungetwc(*(_WORD *)(this + 36), *(FILE **)(this + 32)); + *(_WORD *)(this + 36) = -1; + } + else + { + LOWORD(result) = ungetwc(Character, *(FILE **)(this + 32)); + *(_WORD *)(this + 36) = -1; + } + return result; +} + +//----- (00465B60) -------------------------------------------------------- +wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) +{ + wint_t v2; // ax + + v2 = getwc(*(FILE **)(a1 + 32)); + return ungetwc(v2, *(FILE **)(a1 + 32)); +} + +//----- (00465B90) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2) +{ + int v3; // eax + int result; // eax + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v5); + v3 = *(_DWORD *)(a2 + 32); + *(_DWORD *)this = &off_537934; + *(_DWORD *)(a2 + 32) = 0; + *(_DWORD *)(this + 32) = v3; + *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); + result = -1; + *(_WORD *)(a2 + 36) = -1; + return result; +} +// 465B9E: variable 'v5' is possibly undefined +// 537934: using guessed type int (*off_537934)(); + +//----- (00465BE0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_538A88; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_537934; + this[8] = a2; + result = -1; + *((_WORD *)this + 18) = -1; + return result; +} +// 537934: using guessed type int (*off_537934)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (00465C40) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2) +{ + int v3; // eax + int result; // eax + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v5); + v3 = *(_DWORD *)(a2 + 32); + *(_DWORD *)this = &off_537934; + *(_DWORD *)(a2 + 32) = 0; + *(_DWORD *)(this + 32) = v3; + *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); + result = -1; + *(_WORD *)(a2 + 36) = -1; + return result; +} +// 465C4E: variable 'v5' is possibly undefined +// 537934: using guessed type int (*off_537934)(); + +//----- (00465C90) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_538A88; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_537934; + this[8] = a2; + result = -1; + *((_WORD *)this + 18) = -1; + return result; +} +// 537934: using guessed type int (*off_537934)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (00465CF0) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1) +{ + _DWORD **v2; // ecx + + v2 = (_DWORD **)(a1 + 28); + *(v2 - 7) = &off_538A88; + std::locale::~locale(v2); + operator delete(a1); +} +// 538A88: using guessed type int (*off_538A88)(); + +//----- (00465D20) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 538A88: using guessed type int (*off_538A88)(); + +//----- (00465D30) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) +{ + int v3; // eax + + std::wstreambuf::operator=((volatile signed __int32 **)this, a2); + v3 = *(_DWORD *)(a2 + 32); + *(_DWORD *)(a2 + 32) = 0; + *(_DWORD *)(this + 32) = v3; + LOWORD(v3) = *(_WORD *)(a2 + 36); + *(_WORD *)(a2 + 36) = -1; + *(_WORD *)(this + 36) = v3; + return this; +} + +//----- (00465D70) -------------------------------------------------------- +void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1) +{ + *a1 = &off_537974; +} +// 537974: using guessed type void (__cdecl *off_537974)(__gnu_cxx::recursive_init_error *__hidden this); + +//----- (00465D80) -------------------------------------------------------- +void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_537974; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 465D8C: variable 'v2' is possibly undefined +// 537974: using guessed type void (__cdecl *off_537974)(__gnu_cxx::recursive_init_error *__hidden this); + +//----- (00465DB0) -------------------------------------------------------- +void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_537974; + std::exception::~exception(a1); +} +// 465DB0: variable 'v1' is possibly undefined +// 537974: using guessed type void (__cdecl *off_537974)(__gnu_cxx::recursive_init_error *__hidden this); + +//----- (00465DC0) -------------------------------------------------------- +void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_537988; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 465DCC: variable 'v2' is possibly undefined +// 537988: using guessed type void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this); + +//----- (00465DF0) -------------------------------------------------------- +void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_537988; + std::exception::~exception(a1); +} +// 465DF0: variable 'v1' is possibly undefined +// 537988: using guessed type void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this); + +//----- (00465E00) -------------------------------------------------------- +void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_53799C; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 465E0C: variable 'v2' is possibly undefined +// 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); + +//----- (00465E30) -------------------------------------------------------- +void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53799C; + std::exception::~exception(a1); +} +// 465E30: variable 'v1' is possibly undefined +// 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); + +//----- (00465E40) -------------------------------------------------------- +void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *a2) +{ + void *v2; // esp + void *v3; // esp + int v4[38]; // [esp+10h] [ebp-98h] BYREF + + HIBYTE(v4[5]) = unk_52FF8C; + strcpy((char *)&v4[31], " "); + strcpy( + (char *)&v4[6], + "ot enough space for format expansion (Please submit full bug report at https://gcc.gnu.org/bugs/):\n "); + v2 = alloca(a2 - Src + 117); + v3 = alloca(a2 - Src + 117); + qmemcpy(v4, (char *)&v4[5] + 3, 0x68u); + memcpy(&v4[26], Src, a2 - Src); + *((_BYTE *)&v4[26] + v4[3]) = 0; + std::__throw_logic_error((std::logic_error *)v4); +} + +//----- (00465ED0) -------------------------------------------------------- +void __cdecl __noreturn __gnu_cxx::__verbose_terminate_handler(size_t a1, size_t a2, FILE *a3) +{ + struct type_info *v3; // eax + const char *lpmangled; // ebx + char *v5; // esi + FILE *lpout; // [esp+4h] [ebp-38h] + int status[8]; // [esp+1Ch] [ebp-20h] BYREF + + if ( !__gnu_cxx::__verbose_terminate_handler(void)::terminating ) + { + __gnu_cxx::__verbose_terminate_handler(void)::terminating = 1; + v3 = __cxa_current_exception_type(); + if ( v3 ) + { + lpmangled = (const char *)((**((_BYTE **)v3 + 1) == 42) + *((_DWORD *)v3 + 1)); + status[0] = -1; + v5 = __cxa_demangle(lpmangled, 0, 0, status); + fwrite("terminate called after throwing an instance of '", 1u, 0x30u, &__iob[2]); + lpout = &__iob[2]; + if ( status[0] ) + fputs(lpmangled, lpout); + else + fputs(v5, lpout); + fwrite("'\n", 1u, 2u, &__iob[2]); + if ( !status[0] ) + __mingw_free((unsigned int)v5); + __cxa_rethrow(); + } + fwrite("terminate called without an active exception\n", 1u, 0x2Du, &__iob[2]); + abort(); + } + __gnu_cxx::__verbose_terminate_handler(a1, a2, a3); +} +// 516B98: using guessed type char __gnu_cxx::__verbose_terminate_handler(void)::terminating; +// 465ED0: using guessed type int status[8]; + +//----- (00465FC0) -------------------------------------------------------- +void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_537988; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); +} +// 533CE8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; +// 537988: using guessed type void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this); + +//----- (00465FF0) -------------------------------------------------------- +void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_53799C; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); +} +// 533CF4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; +// 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); + +//----- (00466020) -------------------------------------------------------- +int __gnu_cxx::__freeres(void) +{ + int result; // eax + + result = dword_51539C; + if ( dword_51539C ) + { + result = __mingw_free(dword_51539C); + dword_51539C = 0; + } + return result; +} +// 51539C: using guessed type int dword_51539C; + +//----- (00466050) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (00466060) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (00466070) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (00466080) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (00466090) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (004660A0) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (004660B0) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (004660C0) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (004660D0) -------------------------------------------------------- +char __userpurge __cxxabiv1::__class_type_info::__do_catch@( + _DWORD *a1@, + __cxxabiv1::__class_type_info *this, + const std::type_info *a3, + void **a4, + unsigned int a5) +{ + char result; // al + + result = std::type_info::operator==(a1, (int)this); + if ( !result && (unsigned int)a4 <= 3 ) + return (*(int (__thiscall **)(__cxxabiv1::__class_type_info *, _DWORD *, const std::type_info *))(*(_DWORD *)this + 20))( + this, + a1, + a3); + return result; +} + +//----- (00466110) -------------------------------------------------------- +bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int a2, int a3, _DWORD *a4) +{ + bool result; // al + + result = std::type_info::operator==(this, a2); + if ( result ) + { + a4[3] = 8; + a4[1] = 6; + *a4 = a3; + } + return result; +} + +//----- (00466150) -------------------------------------------------------- +int __userpurge __cxxabiv1::__class_type_info::__do_upcast@( + int *a1@, + __cxxabiv1::__class_type_info *this, + const __class_type_info *a3, + void **a4) +{ + int v4; // eax + int v5; // edx + int v6; // edx + int v8; // [esp+10h] [ebp-1Ch] BYREF + int v9; // [esp+14h] [ebp-18h] + int v10; // [esp+18h] [ebp-14h] + int v11; // [esp+1Ch] [ebp-10h] + + v4 = *a1; + v8 = 0; + v5 = *(_DWORD *)a3; + v9 = 0; + v10 = 16; + v11 = 0; + (*(void (__thiscall **)(int *, __cxxabiv1::__class_type_info *, int, int *))(v4 + 24))(a1, this, v5, &v8); + v6 = 0; + if ( (v9 & 6) == 6 ) + { + v6 = 1; + *(_DWORD *)a3 = v8; + } + return v6; +} + +//----- (004661C0) -------------------------------------------------------- +int __thiscall __cxxabiv1::__class_type_info::__do_dyncast( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + _DWORD *a8) +{ + bool v9; // al + _DWORD *v10; // [esp+1Ch] [ebp-10h] + + if ( a5 == a7 && (v10 = this, v9 = std::type_info::operator==(this, a6), this = v10, v9) ) + { + a8[2] = a3; + return 0; + } + else + { + if ( std::type_info::operator==(this, a4) ) + { + *a8 = a5; + a8[3] = 1; + a8[1] = a3; + } + return 0; + } +} + +//----- (00466230) -------------------------------------------------------- +int __stdcall __cxxabiv1::__class_type_info::__do_find_public_src( + __cxxabiv1::__class_type_info *this, + const __cxxabiv1::__class_type_info *a2, + const void *a3, + const __cxxabiv1::__class_type_info *a4, + const void *a5) +{ + return 5 * (a4 == a2) + 1; +} + +//----- (00466250) -------------------------------------------------------- +char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int a2, int a3, _DWORD *a4) +{ + char result; // al + + result = __cxxabiv1::__class_type_info::__do_upcast((_DWORD *)this, a2, a3, a4); + if ( !result ) + return (*(int (__thiscall **)(_DWORD, int, int, _DWORD *))(**(_DWORD **)(this + 8) + 24))( + *(_DWORD *)(this + 8), + a2, + a3, + a4); + return result; +} + +//----- (004662B0) -------------------------------------------------------- +int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + _DWORD *a8) +{ + bool v8; // al + _DWORD *v9; // ecx + int v10; // edx + bool v12; // al + + v8 = std::type_info::operator==(this, a4); + v9 = this; + v10 = a7; + if ( v8 ) + { + *a8 = a5; + a8[1] = a3; + if ( a2 < 0 ) + { + if ( a2 == -2 ) + a8[3] = 1; + } + else + { + a8[3] = 5 * (a7 == a2 + a5) + 1; + } + } + else + { + if ( a5 != a7 ) + return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( + v9[2], + a2, + a3, + a4, + a5, + a6, + v10, + a8); + v12 = std::type_info::operator==(this, a6); + v9 = this; + v10 = a7; + if ( !v12 ) + return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( + v9[2], + a2, + a3, + a4, + a5, + a6, + v10, + a8); + a8[2] = a3; + } + return 0; +} + +//----- (004663B0) -------------------------------------------------------- +int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@( + int a1@, + __cxxabiv1::__si_class_type_info *this, + const __cxxabiv1::__class_type_info *a3, + const void *a4, + const __cxxabiv1::__class_type_info *a5, + const void *a6) +{ + __cxxabiv1::__si_class_type_info *v7; // edx + bool v9; // al + + v7 = this; + if ( a5 == a3 && (v9 = std::type_info::operator==((_DWORD *)a1, (int)a4), v7 = this, v9) ) + return 6; + else + return (*(int (__thiscall **)(_DWORD, __cxxabiv1::__si_class_type_info *, const __cxxabiv1::__class_type_info *, const void *, const __cxxabiv1::__class_type_info *))(**(_DWORD **)(a1 + 8) + 32))( + *(_DWORD *)(a1 + 8), + v7, + a3, + a4, + a5); +} + +//----- (00466420) -------------------------------------------------------- +int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4) +{ + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // ebx + int v9; // eax + int v10; // esi + char *v11; // edx + int v12; // eax + int v13; // eax + int v14; // ecx + int v15; // eax + _DWORD *v16; // ecx + int result; // eax + bool v18; // al + char v19; // [esp+13h] [ebp-39h] + unsigned __int8 v20; // [esp+13h] [ebp-39h] + int v21; // [esp+18h] [ebp-34h] + int v22; // [esp+20h] [ebp-2Ch] BYREF + int v23; // [esp+24h] [ebp-28h] + int v24; // [esp+28h] [ebp-24h] + _DWORD *v25; // [esp+2Ch] [ebp-20h] + + LOBYTE(v5) = __cxxabiv1::__class_type_info::__do_upcast(this, a2, (int)a3, a4); + v6 = v5; + if ( (_BYTE)v5 ) + return v6; + v21 = a4[2]; + if ( (v21 & 0x10) != 0 ) + v21 = this[2]; + v7 = this[3]; + v8 = v7 - 1; + if ( !v7 ) + { +LABEL_34: + LOBYTE(v6) = a4[1] != 0; + return v6; + } + while ( 1 ) + { + while ( 1 ) + { + v22 = 0; + v23 = 0; + v24 = v21; + v9 = this[2 * v8 + 5]; + v25 = 0; + v10 = v9 & 2; + v6 = v9 & 1; + v19 = v9 & 1; + if ( !(v10 | v21 & 1) ) + goto LABEL_9; + v11 = 0; + if ( a3 ) + { + v12 = v9 >> 8; + if ( v19 ) + v12 = *(_DWORD *)(*a3 + v12); + v11 = (char *)a3 + v12; + } + v6 = (*(int (__thiscall **)(_DWORD, int, char *, int *))(*(_DWORD *)this[2 * v8 + 4] + 24))( + this[2 * v8 + 4], + a2, + v11, + &v22); + if ( !(_BYTE)v6 ) + goto LABEL_9; + if ( v25 == (_DWORD *)8 && v19 ) + v25 = (_DWORD *)this[2 * v8 + 4]; + if ( !v10 && v23 > 3 ) + v23 &= ~2u; + v13 = a4[3]; + if ( v13 ) + break; + v14 = v24; + *a4 = v22; + v15 = v23; + a4[2] = v14; + v16 = v25; + a4[1] = v15; + a4[3] = v16; + if ( v15 <= 3 ) + return v6; + if ( (v15 & 2) != 0 ) + { + if ( (this[2] & 1) == 0 ) + return v6; + goto LABEL_9; + } + if ( (v15 & 1) == 0 || (this[2] & 2) == 0 ) + return v6; + if ( --v8 == -1 ) + goto LABEL_34; + } + if ( *a4 != v22 ) + break; + if ( !*a4 ) + { + if ( v25 == (_DWORD *)8 || v13 == 8 || (v20 = v6, v18 = std::type_info::operator==(v25, a4[3]), v6 = v20, !v18) ) + { + a4[1] = 2; + return v6; + } + } + a4[1] |= v23; +LABEL_9: + if ( --v8 == -1 ) + goto LABEL_34; + } + *a4 = 0; + result = v6; + a4[1] = 2; + return result; +} +// 466448: variable 'v5' is possibly undefined + +//----- (00466650) -------------------------------------------------------- +int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast( + _DWORD *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + _DWORD *a7, + int *a8) +{ + int v8; // eax + int v9; // edi + int v10; // esi + int v11; // ebx + int v12; // edx + int v13; // ecx + int v14; // edx + int v15; // eax + int v16; // eax + int v17; // ecx + int v18; // eax + int v19; // edx + unsigned __int8 v20; // si + int v21; // edx + int v22; // ecx + int v24; // edx + int v25; // eax + int v26; // eax + int v28; // [esp+44h] [ebp-54h] + int v29; // [esp+44h] [ebp-54h] + int v30; // [esp+48h] [ebp-50h] + char v31; // [esp+48h] [ebp-50h] + unsigned int v32; // [esp+4Ch] [ebp-4Ch] + int v33; // [esp+54h] [ebp-44h] + unsigned __int8 v34; // [esp+59h] [ebp-3Fh] + char i; // [esp+5Ah] [ebp-3Eh] + char v36; // [esp+5Bh] [ebp-3Dh] + int v37; // [esp+68h] [ebp-30h] BYREF + int v38; // [esp+6Ch] [ebp-2Ch] + int v39; // [esp+70h] [ebp-28h] + int v40; // [esp+74h] [ebp-24h] + int v41; // [esp+78h] [ebp-20h] + + if ( (a8[4] & 0x10) != 0 ) + a8[4] = this[2]; + if ( a5 == a7 && std::type_info::operator==(this, a6) ) + { + a8[2] = a3; + return 0; + } + if ( !std::type_info::operator==(this, a4) ) + { + v32 = 0; + if ( a2 >= 0 ) + v32 = (unsigned int)a7 - a2; + v34 = 0; + v36 = 0; + for ( i = 1; ; i = 0 ) + { + v8 = this[3]; + v9 = v8 - 1; + if ( v8 ) + break; +LABEL_57: + v36 &= i; + if ( !v36 ) + return v34; + } + while ( 1 ) + { + while ( 1 ) + { + v16 = a8[4]; + v37 = 0; + v38 = 0; + v17 = a3; + v31 = v16; + v41 = v16; + v39 = 0; + v18 = this[2 * v9 + 5]; + v40 = 0; + v19 = v18 >> 8; + if ( (v18 & 1) != 0 ) + { + v17 = a3 | 1; + v19 = *(_DWORD *)(*a5 + v19); + } + if ( v32 && i == v32 < (unsigned int)a5 + v19 ) + { + v36 = 1; + goto LABEL_30; + } + if ( (v18 & 2) == 0 ) + break; +LABEL_38: + v20 = (*(int (__thiscall **)(_DWORD, int, int, int, int, int, _DWORD *, int *))(*(_DWORD *)this[2 * v9 + 4] + 28))( + this[2 * v9 + 4], + a2, + v17, + a4, + (int)a5 + v19, + a6, + a7, + &v37); + v11 = v40; + v21 = v39 | a8[2]; + v30 = v21; + v22 = v40; + a8[2] = v21; + if ( (v22 & 0xFFFFFFFB) == 2 ) + { + v26 = v37; + a8[3] = v11; + *a8 = v26; + a8[1] = v38; + return v20; + } + v13 = v37; + v28 = *a8; + if ( !v34 ) + { + if ( !*a8 ) + { + v24 = v38; + *a8 = v37; + a8[1] = v24; + if ( v13 && v30 ) + { + v34 = v20; + if ( (this[2] & 1) == 0 ) + return v34; + } + else + { + v34 = v20; + } + goto LABEL_29; + } +LABEL_11: + if ( v28 == v37 ) + { + a8[1] |= v38; + goto LABEL_29; + } + if ( !v37 && !v20 ) + goto LABEL_29; + v10 = a8[3]; + if ( v21 <= 3 ) + goto LABEL_43; + goto LABEL_15; + } + if ( v28 ) + goto LABEL_11; + if ( !v37 ) + goto LABEL_29; + v10 = a8[3]; + if ( v21 <= 3 ) + goto LABEL_43; +LABEL_15: + if ( (v21 & 1) == 0 || (a8[4] & 2) == 0 ) + { + if ( !v10 ) + v10 = 1; + if ( !v11 ) + v11 = 1; + v33 = v11; + v12 = v10; +LABEL_22: + if ( (v11 ^ v12) > 3 ) + goto LABEL_23; + goto LABEL_51; + } +LABEL_43: + v33 = v11; + v12 = v10; + if ( v10 <= 0 ) + { + if ( v11 > 3 && ((v11 & 1) == 0 || (this[2] & 2) == 0) ) + { + if ( (v11 ^ 1) > 3 ) + goto LABEL_24; + goto LABEL_53; + } + if ( a2 >= 0 ) + { + if ( a7 != (_DWORD *)(a2 + v28) ) + { + if ( v11 > 0 ) + goto LABEL_96; + if ( a7 == (_DWORD *)(v37 + a2) ) + goto LABEL_101; +LABEL_75: + v12 = 1; + v11 = 1; +LABEL_76: + v25 = v12 ^ 1; + goto LABEL_77; + } + v12 = 6; + v10 = 6; + if ( v11 <= 0 ) + { + v11 = 6; +LABEL_78: + v14 = v12 & 2; + goto LABEL_26; + } + goto LABEL_22; + } + if ( a2 == -2 ) + { + if ( v11 > 0 ) + { +LABEL_96: + if ( (v11 ^ 1) > 3 ) + { + v10 = 1; +LABEL_23: + v13 = v37; + if ( v11 > 3 ) + { +LABEL_24: + v14 = v11 & 2; + goto LABEL_25; + } + v11 = v10; + v14 = v10 & 2; +LABEL_26: + a8[3] = v11; + if ( v14 || (v11 & 1) == 0 ) + return 0; + v30 = a8[2]; +LABEL_29: + if ( v30 == 4 ) + return v34; + goto LABEL_30; + } + goto LABEL_53; + } + goto LABEL_75; + } + v10 = (*(int (__thiscall **)(int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, a2, v28, a6, a7); + v12 = v10; + } + if ( v11 > 0 ) + goto LABEL_22; + if ( v10 > 3 && ((v10 & 1) == 0 || (this[2] & 2) == 0) ) + { + v11 = v10; + v25 = v10 ^ 1; +LABEL_77: + if ( v25 > 3 ) + goto LABEL_78; + goto LABEL_52; + } + v13 = v37; + if ( a2 >= 0 ) + { + if ( a7 != (_DWORD *)(v37 + a2) ) + { +LABEL_91: + v11 = v10; + goto LABEL_76; + } + if ( (v10 ^ 6) > 3 ) + { +LABEL_101: + v14 = 2; + v11 = 6; +LABEL_25: + v15 = v38; + *a8 = v13; + v34 = 0; + a8[1] = v15; + goto LABEL_26; + } + v33 = 6; + } + else + { + if ( a2 == -2 ) + goto LABEL_91; + v29 = v12; + v11 = (*(int (__thiscall **)(int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, a2, v37, a6, a7); + v12 = v29; + v33 = v11; + if ( (v11 ^ v29) > 3 ) + goto LABEL_23; + } +LABEL_51: + if ( (v33 & v12) > 3 ) + { + *a8 = 0; + a8[3] = 2; + return 1; + } +LABEL_52: + v30 = a8[2]; +LABEL_53: + *a8 = 0; + a8[3] = 1; + v34 = 1; + if ( v30 == 4 ) + return v34; +LABEL_30: + if ( --v9 == -1 ) + goto LABEL_57; + } + if ( a2 != -2 || (v31 & 3) != 0 ) + { + v17 &= ~2u; + goto LABEL_38; + } + if ( --v9 == -1 ) + goto LABEL_57; + } + } + *a8 = (int)a5; + a8[1] = a3; + if ( a2 < 0 ) + { + v34 = 0; + if ( a2 == -2 ) + a8[3] = 1; + return v34; + } + else + { + a8[3] = 5 * (a7 == (_DWORD *)((char *)a5 + a2)) + 1; + return 0; + } +} + +//----- (00466D10) -------------------------------------------------------- +int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@( + _DWORD *a1@, + __cxxabiv1::__vmi_class_type_info *this, + const __cxxabiv1::__class_type_info *a3, + const void *a4, + const __cxxabiv1::__class_type_info *a5, + const void *a6) +{ + int v7; // eax + int v8; // ebx + int v9; // edx + int v10; // eax + int result; // eax + bool v12; // dl + char v13; // [esp+1Fh] [ebp-1Dh] + + if ( a3 != a5 || (v12 = std::type_info::operator==(a1, (int)a4), result = 6, !v12) ) + { + v7 = a1[3]; + v8 = v7 - 1; + if ( !v7 ) + return 1; + while ( 1 ) + { + v9 = a1[2 * v8 + 5]; + if ( (v9 & 2) != 0 ) + { + v10 = v9 >> 8; + v13 = v9 & 1; + if ( (v9 & 1) != 0 ) + { + if ( this == (__cxxabiv1::__vmi_class_type_info *)-3 ) + goto LABEL_8; + v10 = *(_DWORD *)(*(_DWORD *)a3 + v10); + } + result = (*(int (__thiscall **)(_DWORD, __cxxabiv1::__vmi_class_type_info *, int, const void *, const __cxxabiv1::__class_type_info *))(*(_DWORD *)a1[2 * v8 + 4] + 32))( + a1[2 * v8 + 4], + this, + (int)a3 + v10, + a4, + a5); + if ( result > 3 ) + { + if ( v13 ) + return result | 1; + return result; + } + } +LABEL_8: + if ( --v8 == -1 ) + return 1; + } + } + return result; +} + +//----- (00466DF0) -------------------------------------------------------- +const char *`anonymous namespace'::io_error_category::name() +{ + return "iostream"; +} + +//----- (00466E00) -------------------------------------------------------- +int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3) +{ + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + if ( a3 == 1 ) + std::string::_M_replace((unsigned int *)this, 0, 0, "iostream error", 0xEu); + else + std::string::_M_replace((unsigned int *)this, 0, 0, "Unknown error", 0xDu); + return this; +} + +//----- (00466EA0) -------------------------------------------------------- +_anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition( + _anonymous_namespace_::system_error_category *this, + int a2) +{ + return this; +} + +//----- (00466EE0) -------------------------------------------------------- +const char *`anonymous namespace'::system_error_category::name() +{ + return "system"; +} + +//----- (00466EF0) -------------------------------------------------------- +const char *`anonymous namespace'::generic_error_category::name() +{ + return "generic"; +} + +//----- (00466F00) -------------------------------------------------------- +void **__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11]( + void **this, + int a2, + int ErrorMessage) +{ + char *v4; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v4 = strerror(ErrorMessage); + *this = this + 2; + Size = -1; + if ( v4 ) + Size = (size_t)&v4[strlen(v4)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)v4, Size, v7); + return this; +} +// 466F3B: variable 'v7' is possibly undefined + +//----- (00466F50) -------------------------------------------------------- +int WXML::EXPRLib::NonTerminal::GetClass() +{ + return 2; +} + +//----- (00466F58) -------------------------------------------------------- +int WXML::EXPRLib::EPS::GetClass() +{ + return 4; +} + +//----- (00466F60) -------------------------------------------------------- +int WXML::EXPRLib::Action::GetClass() +{ + return 3; +} + +//----- (00466F68) -------------------------------------------------------- +int WXML::EXPRLib::Terminal::GetClass() +{ + return 1; +} + +//----- (00466F70) -------------------------------------------------------- +const char *__gnu_cxx::__concurrence_lock_error::what() +{ + return "__gnu_cxx::__concurrence_lock_error"; +} + +//----- (00466F80) -------------------------------------------------------- +const char *__gnu_cxx::__concurrence_unlock_error::what() +{ + return "__gnu_cxx::__concurrence_unlock_error"; +} + +//----- (00466F90) -------------------------------------------------------- +int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) +{ + unsigned int v2; // eax + int v3; // edx + + v2 = *this; + v3 = 1; + if ( *this <= a2 ) + { + v3 = *(_DWORD *)(v2 - 12); + LOBYTE(v3) = v2 + 2 * v3 < a2; + } + return v3; +} + +//----- (00466FC0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_last_of(this, String, a3, v4); +} + +//----- (00467000) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *S, unsigned int a3, size_t N) +{ + int v4; // eax + int v5; // ebx + unsigned int v7; // ebx + + v4 = *this; + v5 = *(_DWORD *)(*this - 12); + if ( !v5 || !N ) + return -1; + v7 = v5 - 1; + if ( v7 > a3 ) + v7 = a3; + while ( !wmemchr(S, *(_WORD *)(v4 + 2 * v7), N) ) + { + if ( --v7 == -1 ) + return -1; + v4 = *this; + } + return v7; +} + +//----- (00467080) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t **a2, int a3) +{ + return std::wstring::find_last_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (004670B0) -------------------------------------------------------- +int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3) +{ + int result; // eax + int v4; // ebx + unsigned int v5; // ebx + + result = -1; + v4 = *(_DWORD *)(*this - 12); + if ( v4 ) + { + result = a3; + v5 = v4 - 1; + if ( a3 > v5 ) + result = v5; + do + { + if ( a2 == *(_WORD *)(*this + 2 * result) ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00467100) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_first_of(this, String, a3, v4); +} + +//----- (00467140) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + if ( N ) + { + while ( *(_DWORD *)(*this - 12) > a3 ) + { + if ( wmemchr(S, *(_WORD *)(*this + 2 * a3), N) ) + return a3; + ++a3; + } + } + return -1; +} + +//----- (004671B0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t **a2, int a3) +{ + return std::wstring::find_first_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (004671E0) -------------------------------------------------------- +int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3) +{ + return std::wstring::find(this, C, a3); +} + +//----- (004671F0) -------------------------------------------------------- +void *__thiscall std::wstring::get_allocator(void *this, int a2) +{ + return this; +} + +//----- (00467200) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) +{ + unsigned int result; // eax + + result = a2 + 536870910 - *(_DWORD *)(*this - 12); + if ( result < a3 ) + std::__throw_length_error(a4); + return result; +} + +//----- (00467230) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_last_not_of(this, String, a3, v4); +} + +//----- (00467270) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *S, unsigned int a3, size_t N) +{ + int v4; // eax + int v5; // ebx + unsigned int v7; // ebx + + v4 = *this; + v5 = *(_DWORD *)(*this - 12); + if ( !v5 ) + return -1; + v7 = v5 - 1; + if ( v7 > a3 ) + v7 = a3; + if ( N ) + { + while ( wmemchr(S, *(_WORD *)(v4 + 2 * v7), N) ) + { + if ( --v7 == -1 ) + return -1; + v4 = *this; + } + } + return v7; +} +// 4672BC: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (00467300) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t **a2, int a3) +{ + return std::wstring::find_last_not_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (00467330) -------------------------------------------------------- +int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3) +{ + int v3; // edx + int result; // eax + int v5; // ebx + + v3 = *this; + result = -1; + v5 = *(_DWORD *)(*this - 12); + if ( v5 ) + { + result = v5 - 1; + if ( v5 - 1 <= a3 ) + goto LABEL_5; + result = a3; + if ( *(_WORD *)(v3 + 2 * a3) == a2 ) + { + do + { + if ( --result == -1 ) + break; +LABEL_5: + ; + } + while ( *(_WORD *)(v3 + 2 * result) == a2 ); + } + } + return result; +} + +//----- (00467380) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_first_not_of(this, String, a3, v4); +} + +//----- (004673C0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + unsigned int v4; // ebx + unsigned int v5; // edx + wchar_t *i; // eax + + v4 = a3; + if ( a3 >= *(_DWORD *)(*this - 12) ) + return -1; + v5 = a3; + if ( N ) + { + for ( i = (wchar_t *)(*this + 2 * a3); wmemchr(S, *i, N); i = (wchar_t *)(*this + 2 * v4) ) + { + if ( *(_DWORD *)(*this - 12) <= ++v4 ) + return -1; + } + return v4; + } + return v5; +} + +//----- (00467440) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t **a2, int a3) +{ + return std::wstring::find_first_not_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (00467470) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3) +{ + int v3; // edx + int result; // eax + unsigned int v5; // ecx + + v3 = *this; + result = a3; + v5 = *(_DWORD *)(*this - 12); + if ( a3 >= v5 ) + return -1; + while ( *(_WORD *)(v3 + 2 * result) == a2 ) + { + if ( ++result == v5 ) + return -1; + } + return result; +} + +//----- (004674B0) -------------------------------------------------------- +int __thiscall std::wstring::at(int *this, unsigned int a2) +{ + int v2; // edx + unsigned int v3; // ecx + + v2 = *this; + v3 = *(_DWORD *)(*this - 12); + if ( a2 >= v3 ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, v3); + return v2 + 2 * a2; +} + +//----- (004674E0) -------------------------------------------------------- +int __fastcall std::wstring::end(_DWORD *a1) +{ + return *a1 + 2 * *(_DWORD *)(*a1 - 12); +} + +//----- (004674F0) -------------------------------------------------------- +int __fastcall std::wstring::_Rep::_M_is_leaked(int a1) +{ + return *(_DWORD *)(a1 + 8) >> 31; +} + +//----- (00467500) -------------------------------------------------------- +bool __fastcall std::wstring::_Rep::_M_is_shared(int a1) +{ + return *(_DWORD *)(a1 + 8) > 0; +} + +//----- (00467510) -------------------------------------------------------- +int __fastcall std::wstring::back(_DWORD *a1) +{ + return *a1 + 2 * *(_DWORD *)(*a1 - 12) - 2; +} + +//----- (00467520) -------------------------------------------------------- +int __fastcall std::wstring::cend(_DWORD *a1) +{ + return *a1 + 2 * *(_DWORD *)(*a1 - 12); +} + +//----- (00467530) -------------------------------------------------------- +size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4) +{ + unsigned int v4; // ebx + size_t N; // ebx + const wchar_t *S2; // eax + + v4 = *(_DWORD *)(*this - 12); + if ( a4 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::copy", + a4, + *(_DWORD *)(*this - 12)); + N = v4 - a4; + if ( N > a3 ) + { + N = a3; + if ( !a3 ) + return N; + } + else if ( !N ) + { + return N; + } + S2 = (const wchar_t *)(*this + 2 * a4); + if ( N != 1 ) + { + wmemcpy(S1, S2, N); + return N; + } + *S1 = *S2; + return 1; +} + +//----- (004675C0) -------------------------------------------------------- +int __fastcall std::wstring::data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004675D0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3) +{ + size_t v4; // eax + + v4 = wcslen(S2); + return std::wstring::find(this, S2, a3, v4); +} + +//----- (00467610) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4) +{ + int v4; // edi + unsigned int v5; // eax + size_t N; // ecx + const wchar_t *S; // edx + wchar_t C; // bp + wchar_t *v9; // edi + unsigned int v10; // ecx + int v13; // [esp+18h] [ebp-24h] + int v14; // [esp+1Ch] [ebp-20h] + + v4 = *this; + v5 = *(_DWORD *)(*this - 12); + if ( a4 ) + { + if ( v5 > a3 && a4 <= v5 - a3 ) + { + N = 1 - a4 + v5 - a3; + if ( N ) + { + v14 = v4; + S = (const wchar_t *)(v4 + 2 * a3); + v13 = v4 + 2 * v5; + C = *S2; + while ( 1 ) + { + v9 = wmemchr(S, C, N); + if ( !v9 ) + break; + if ( !wmemcmp(v9, S2, a4) ) + return ((int)v9 - v14) >> 1; + S = v9 + 1; + v10 = (v13 - (int)(v9 + 1)) >> 1; + if ( a4 <= v10 ) + { + N = 1 - a4 + v10; + if ( N ) + continue; + } + return -1; + } + } + } + } + else if ( v5 >= a3 ) + { + return a3; + } + return -1; +} + +//----- (004676D0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t **a2, int a3) +{ + return std::wstring::find(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (00467700) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3) +{ + int v3; // ebx + unsigned int v4; // eax + wchar_t *v6; // eax + + v3 = *this; + v4 = *(_DWORD *)(*this - 12); + if ( v4 > a3 && (v6 = wmemchr((const wchar_t *)(v3 + 2 * a3), C, v4 - a3)) != 0 ) + return ((int)v6 - v3) >> 1; + else + return -1; +} + +//----- (00467750) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (00467760) -------------------------------------------------------- +int __fastcall std::wstring::size(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12); +} + +//----- (00467770) -------------------------------------------------------- +int __fastcall std::wstring::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00467780) -------------------------------------------------------- +int __fastcall std::wstring::c_str(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00467790) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (004677A0) -------------------------------------------------------- +bool __fastcall std::wstring::empty(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) == 0; +} + +//----- (004677B0) -------------------------------------------------------- +int __fastcall std::wstring::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004677C0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::rfind(this, String, a3, v4); +} + +//----- (00467800) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N) +{ + int v4; // edi + size_t v5; // ebx + unsigned int v6; // ebx + + v4 = *this; + v5 = *(_DWORD *)(*this - 12); + if ( N > v5 ) + return -1; + v6 = v5 - N; + if ( v6 > a3 ) + v6 = a3; + if ( N ) + { + while ( wmemcmp((const wchar_t *)(v4 + 2 * v6), S2, N) ) + { + if ( !v6 ) + return -1; + --v6; + } + } + return v6; +} +// 467845: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (00467870) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t **a2, int a3) +{ + return std::wstring::rfind(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (004678A0) -------------------------------------------------------- +int __thiscall std::wstring::rfind(_DWORD *this, __int16 a2, unsigned int a3) +{ + int result; // eax + int v4; // ebx + + result = -1; + v4 = *(_DWORD *)(*this - 12); + if ( v4 ) + { + result = v4 - 1; + if ( v4 - 1 > a3 ) + result = a3; + do + { + if ( *(_WORD *)(*this + 2 * result) == a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (004678E0) -------------------------------------------------------- +int __fastcall std::wstring::_M_rep(_DWORD *a1) +{ + return *a1 - 12; +} + +//----- (004678F0) -------------------------------------------------------- +int __fastcall std::wstring::cbegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00467900) -------------------------------------------------------- +int __fastcall std::wstring::length(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12); +} + +//----- (00467910) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); + return result; +} + +//----- (00467930) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::substr(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) +{ + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::substr", + a3, + *(_DWORD *)(*a2 - 12)); + std::wstring::basic_string(this, a2, a3, a4); + return this; +} + +//----- (00467990) -------------------------------------------------------- +int __fastcall std::wstring::_M_data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004679A0) -------------------------------------------------------- +int __fastcall std::wstring::_M_iend(_DWORD *a1) +{ + return *a1 + 2 * *(_DWORD *)(*a1 - 12); +} + +//----- (004679B0) -------------------------------------------------------- +int __thiscall std::wstring::compare(const wchar_t **this, wchar_t *String) +{ + size_t v3; // edi + size_t N; // eax + size_t v5; // ebx + int result; // eax + + v3 = *((_DWORD *)*this - 3); + N = wcslen(String); + v5 = N; + if ( N > v3 ) + N = v3; + if ( !N ) + return v3 - v5; + result = wmemcmp(*this, String, N); + if ( !result ) + return v3 - v5; + return result; +} + +//----- (00467A10) -------------------------------------------------------- +int __thiscall std::wstring::compare(const wchar_t **this, const wchar_t **a2) +{ + size_t v2; // esi + size_t N; // eax + size_t v4; // ebx + int result; // eax + + v2 = *((_DWORD *)*this - 3); + N = v2; + v4 = *((_DWORD *)*a2 - 3); + if ( v4 <= v2 ) + N = *((_DWORD *)*a2 - 3); + if ( !N ) + return v2 - v4; + result = wmemcmp(*this, *a2, N); + if ( !result ) + return v2 - v4; + return result; +} + +//----- (00467A60) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) +{ + unsigned int v4; // ebx + unsigned int v5; // ebx + size_t N; // eax + size_t v8; // esi + int result; // eax + + v4 = *(_DWORD *)(*this - 12); + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + *(_DWORD *)(*this - 12)); + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + N = wcslen(String); + v8 = N; + if ( N > v5 ) + { + N = v5; + if ( !v5 ) + return v5 - v8; + } + else if ( !N ) + { + return v5 - v8; + } + result = wmemcmp((const wchar_t *)(*this + 2 * a2), String, N); + if ( !result ) + return v5 - v8; + return result; +} + +//----- (00467B00) -------------------------------------------------------- +int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5) +{ + int v5; // ecx + size_t N; // edx + unsigned int v7; // ebx + unsigned int v8; // ebx + int result; // eax + + v5 = *this; + N = a3; + v7 = *(_DWORD *)(v5 - 12); + if ( a2 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + *(_DWORD *)(v5 - 12)); + v8 = v7 - a2; + if ( v8 <= a3 ) + { + N = v8; + if ( v8 <= a5 ) + goto LABEL_4; +LABEL_6: + N = a5; + if ( !a5 ) + return v8 - a5; + goto LABEL_7; + } + v8 = a3; + if ( a3 > a5 ) + goto LABEL_6; +LABEL_4: + if ( !N ) + return v8 - a5; +LABEL_7: + result = wmemcmp((const wchar_t *)(v5 + 2 * a2), S2, N); + if ( !result ) + return v8 - a5; + return result; +} + +//----- (00467BA0) -------------------------------------------------------- +int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, const wchar_t **a4) +{ + int v4; // ecx + unsigned int v5; // ebx + size_t v6; // ebx + const wchar_t *S2; // edi + size_t v8; // esi + size_t N; // edx + int result; // eax + + v4 = *this; + v5 = *(_DWORD *)(v4 - 12); + if ( a2 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + *(_DWORD *)(v4 - 12)); + v6 = v5 - a2; + if ( v6 <= a3 ) + { + S2 = *a4; + v8 = *((_DWORD *)*a4 - 3); + N = v8; + if ( v8 <= v6 ) + goto LABEL_4; +LABEL_6: + N = v6; + if ( !v6 ) + return v6 - v8; + goto LABEL_7; + } + v6 = a3; + S2 = *a4; + v8 = *((_DWORD *)*a4 - 3); + N = v8; + if ( v8 > a3 ) + goto LABEL_6; +LABEL_4: + if ( !N ) + return v6 - v8; +LABEL_7: + result = wmemcmp((const wchar_t *)(v4 + 2 * a2), S2, N); + if ( !result ) + return v6 - v8; + return result; +} + +//----- (00467C40) -------------------------------------------------------- +int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) +{ + int v6; // ecx + unsigned int v7; // esi + unsigned int v8; // ebx + size_t v9; // esi + size_t v10; // ebx + size_t N; // ebp + int result; // eax + + v6 = *this; + v7 = *(_DWORD *)(v6 - 12); + if ( a2 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + *(_DWORD *)(v6 - 12)); + v8 = *(_DWORD *)(*a4 - 12); + if ( a5 > v8 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a5, + *(_DWORD *)(*a4 - 12)); + v9 = v7 - a2; + if ( v9 > a3 ) + { + v9 = a3; + v10 = v8 - a5; + if ( v10 <= a6 ) + { +LABEL_5: + N = v10; + if ( v10 <= v9 ) + goto LABEL_6; +LABEL_8: + N = v9; + if ( !v9 ) + return v9 - v10; + goto LABEL_9; + } + } + else + { + v10 = v8 - a5; + if ( v10 <= a6 ) + goto LABEL_5; + } + v10 = a6; + N = a6; + if ( a6 > v9 ) + goto LABEL_8; +LABEL_6: + if ( !N ) + return v9 - v10; +LABEL_9: + result = wmemcmp((const wchar_t *)(v6 + 2 * a2), (const wchar_t *)(*a4 + 2 * a5), N); + if ( !result ) + return v9 - v10; + return result; +} + +//----- (00467D20) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); + return result; +} + +//----- (00467D40) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) +{ + unsigned int result; // eax + unsigned int v4; // edx + + result = a2; + v4 = *(_DWORD *)(*this - 12); + if ( v4 < a2 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v4); + return result; +} + +//----- (00467D80) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) +{ + unsigned int result; // eax + + result = *(_DWORD *)(*this - 12) - a2; + if ( result > a3 ) + return a3; + return result; +} + +//----- (00467DA0) -------------------------------------------------------- +int __fastcall std::wstring::capacity(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 8); +} + +//----- (00467DB0) -------------------------------------------------------- +int std::wstring::max_size() +{ + return 536870910; +} + +//----- (00467DC0) -------------------------------------------------------- +int __fastcall std::wstring::_M_ibegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00467DD0) -------------------------------------------------------- +int __thiscall std::wstring::operator[](_DWORD *this, int a2) +{ + return *this + 2 * a2; +} + +//----- (00467DE0) -------------------------------------------------------- +int __fastcall std::istream::gcount(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00467DF0) -------------------------------------------------------- +int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1) +{ + return *a1; +} + +//----- (00467E00) -------------------------------------------------------- +int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1) +{ + return *a1; +} + +//----- (00467E10) -------------------------------------------------------- +int __userpurge std::string::_M_disjunct@(_DWORD *a1@, std::string *this, const char *a3) +{ + int v3; // edx + + v3 = 1; + if ( *a1 <= (unsigned int)this ) + LOBYTE(v3) = *(_DWORD *)(*a1 - 12) + *a1 < (unsigned int)this; + return v3; +} + +//----- (00467E30) -------------------------------------------------------- +int __userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::find_last_of(a1, this, a3, v5, v7); +} +// 467E54: variable 'v7' is possibly undefined + +//----- (00467E70) -------------------------------------------------------- +int __userpurge std::string::find_last_of@( + int *a1@, + std::string *this, + const char *a3, + size_t MaxCount, + unsigned int a5) +{ + int v5; // esi + int v6; // ebx + const char *v7; // ebx + + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( !v6 || !MaxCount ) + return -1; + v7 = (const char *)(v6 - 1); + if ( v7 > a3 ) + v7 = a3; + do + { + if ( memchr(this, v7[v5], MaxCount) ) + break; + --v7; + } + while ( v7 != (const char *)-1 ); + return (int)v7; +} + +//----- (00467EF0) -------------------------------------------------------- +int __userpurge std::string::find_last_of@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find_last_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 467F0B: variable 'v5' is possibly undefined + +//----- (00467F20) -------------------------------------------------------- +int __userpurge std::string::find_last_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + int result; // eax + int v5; // ebx + unsigned int v6; // ebx + + result = -1; + v5 = *(_DWORD *)(*a1 - 12); + if ( v5 ) + { + result = a3; + v6 = v5 - 1; + if ( a3 > v6 ) + result = v6; + do + { + if ( (_BYTE)this == *(_BYTE *)(*a1 + result) ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00467F70) -------------------------------------------------------- +int __userpurge std::string::find_first_of@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::find_first_of(a1, this, a3, v5, v7); +} +// 467F94: variable 'v7' is possibly undefined + +//----- (00467FB0) -------------------------------------------------------- +int __userpurge std::string::find_first_of@( + int *a1@, + std::string *this, + const char *a3, + size_t MaxCount, + unsigned int a5) +{ + int v6; // esi + unsigned int v7; // edi + + if ( MaxCount ) + { + v6 = *a1; + v7 = *(_DWORD *)(*a1 - 12); + while ( v7 > (unsigned int)a3 ) + { + if ( memchr(this, a3[v6], MaxCount) ) + return (int)a3; + ++a3; + } + } + return -1; +} + +//----- (00468020) -------------------------------------------------------- +int __userpurge std::string::find_first_of@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find_first_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 46803B: variable 'v5' is possibly undefined + +//----- (00468050) -------------------------------------------------------- +char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + return std::string::find(a1, (std::string *)(char)this, a3, a4); +} + +//----- (00468060) -------------------------------------------------------- +void *__thiscall std::string::get_allocator(void *ecx0, std::string *this) +{ + return ecx0; +} + +//----- (00468070) -------------------------------------------------------- +char *__userpurge std::string::_M_check_length@( + _DWORD *a1@, + std::string *this, + unsigned int a3, + std::length_error *a4, + const char *a5) +{ + char *result; // eax + + result = (char *)this - *(_DWORD *)(*a1 - 12) + 1073741820; + if ( (unsigned int)result < a3 ) + std::__throw_length_error(a4); + return result; +} + +//----- (004680A0) -------------------------------------------------------- +int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + unsigned int v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::find_last_not_of(a1, this, a3, v5, v7); +} +// 4680C4: variable 'v7' is possibly undefined + +//----- (004680E0) -------------------------------------------------------- +int __userpurge std::string::find_last_not_of@( + int *a1@, + std::string *this, + const char *a3, + unsigned int MaxCount, + unsigned int a5) +{ + int v5; // ebx + int v6; // edi + int v7; // eax + + v5 = -1; + v6 = *a1; + v7 = *(_DWORD *)(*a1 - 12); + if ( v7 ) + { + v5 = v7 - 1; + if ( v7 - 1 > (unsigned int)a3 ) + v5 = (int)a3; + do + { + if ( !MaxCount ) + break; + if ( !memchr(this, *(char *)(v6 + v5), MaxCount) ) + break; + --v5; + } + while ( v5 != -1 ); + } + return v5; +} + +//----- (00468150) -------------------------------------------------------- +int __userpurge std::string::find_last_not_of@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find_last_not_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 46816B: variable 'v5' is possibly undefined + +//----- (00468180) -------------------------------------------------------- +int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + int v4; // edx + int result; // eax + int v6; // ebx + + v4 = *a1; + result = -1; + v6 = *(_DWORD *)(*a1 - 12); + if ( v6 ) + { + result = v6 - 1; + if ( v6 - 1 <= a3 ) + goto LABEL_5; + result = a3; + if ( *(_BYTE *)(v4 + a3) == (_BYTE)this ) + { + do + { + if ( --result == -1 ) + break; +LABEL_5: + ; + } + while ( *(_BYTE *)(v4 + result) == (_BYTE)this ); + } + } + return result; +} + +//----- (004681D0) -------------------------------------------------------- +int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::find_first_not_of(a1, this, a3, v5, v7); +} +// 4681F4: variable 'v7' is possibly undefined + +//----- (00468210) -------------------------------------------------------- +int __userpurge std::string::find_first_not_of@( + int *a1@, + std::string *this, + const char *a3, + size_t MaxCount, + unsigned int a5) +{ + int v5; // ebx + const char *v6; // ebp + unsigned int v7; // edi + + v5 = *a1; + v6 = a3; + v7 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)a3 >= v7 ) + return -1; + if ( MaxCount ) + { + while ( memchr(this, v6[v5], MaxCount) ) + { + if ( ++v6 == (const char *)v7 ) + return -1; + } + } + return (int)v6; +} + +//----- (00468270) -------------------------------------------------------- +int __userpurge std::string::find_first_not_of@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find_first_not_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 46828B: variable 'v5' is possibly undefined + +//----- (004682A0) -------------------------------------------------------- +int __userpurge std::string::find_first_not_of@( + int *a1@, + std::string *this, + unsigned int a3, + unsigned int a4) +{ + int v4; // edx + int result; // eax + unsigned int v6; // ecx + + v4 = *a1; + result = a3; + v6 = *(_DWORD *)(*a1 - 12); + if ( a3 >= v6 ) + return -1; + while ( *(_BYTE *)(v4 + result) == (_BYTE)this ) + { + if ( ++result == v6 ) + return -1; + } + return result; +} + +//----- (004682E0) -------------------------------------------------------- +char *__userpurge std::string::at@(int *a1@, std::string *this, unsigned int a3) +{ + int v3; // eax + unsigned int v4; // ecx + + v3 = *a1; + v4 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this >= v4 ) + std::__throw_out_of_range_fmt( + "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", + (size_t)this, + v4); + return (char *)this + v3; +} + +//----- (00468310) -------------------------------------------------------- +int __fastcall std::string::end(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) + *a1; +} + +//----- (00468320) -------------------------------------------------------- +int __fastcall std::string::_Rep::_M_is_leaked(int a1) +{ + return *(_DWORD *)(a1 + 8) >> 31; +} + +//----- (00468330) -------------------------------------------------------- +bool __fastcall std::string::_Rep::_M_is_shared(int a1) +{ + return *(_DWORD *)(a1 + 8) > 0; +} + +//----- (00468340) -------------------------------------------------------- +int __fastcall std::string::back(_DWORD *a1) +{ + return *a1 + *(_DWORD *)(*a1 - 12) - 1; +} + +//----- (00468350) -------------------------------------------------------- +int __fastcall std::string::cend(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) + *a1; +} + +//----- (00468360) -------------------------------------------------------- +int __userpurge std::string::copy@( + _DWORD *a1@, + std::string *this, + char *a3, + unsigned int a4, + unsigned int a5) +{ + unsigned int v5; // ebx + char *Size; // ebx + _BYTE *Src; // eax + + v5 = *(_DWORD *)(*a1 - 12); + if ( a4 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::copy", + a4, + *(_DWORD *)(*a1 - 12)); + Size = (char *)(v5 - a4); + if ( Size > a3 ) + { + Size = a3; + if ( !a3 ) + return (int)Size; + } + else if ( !Size ) + { + return (int)Size; + } + Src = (_BYTE *)(*a1 + a4); + if ( Size != (char *)1 ) + { + memcpy(this, Src, (size_t)Size); + return (int)Size; + } + *(_BYTE *)this = *Src; + return 1; +} + +//----- (004683E0) -------------------------------------------------------- +int __fastcall std::string::data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004683F0) -------------------------------------------------------- +unsigned int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t Size; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + Size = strlen((const char *)this); + return std::string::find(a1, this, a3, Size, v7); +} +// 468414: variable 'v7' is possibly undefined + +//----- (00468430) -------------------------------------------------------- +unsigned int __userpurge std::string::find@( + int *a1@, + std::string *this, + const char *a3, + size_t Size, + unsigned int a5) +{ + int v5; // edi + unsigned int v6; // esi + int v7; // ecx + const char *Buf; // eax + size_t MaxCount; // edx + int Val; // ebp + const char *v11; // edi + int v13; // [esp+18h] [ebp-24h] + int v14; // [esp+1Ch] [ebp-20h] + + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( !Size ) + return v6 < (unsigned int)a3 ? -1 : (unsigned int)a3; + v7 = -1; + if ( v6 > (unsigned int)a3 ) + { + Buf = &a3[v5]; + v13 = v5 + v6; + if ( Size <= v6 - (unsigned int)a3 ) + { + MaxCount = 1 - Size + v6 - (_DWORD)a3; + if ( MaxCount ) + { + v14 = v5; + Val = *(char *)this; + while ( 1 ) + { + v11 = (const char *)memchr(Buf, Val, MaxCount); + if ( !v11 ) + return -1; + if ( !memcmp(v11, this, Size) ) + break; + Buf = v11 + 1; + if ( Size <= v13 - (int)(v11 + 1) ) + { + MaxCount = v13 - (_DWORD)v11 - Size; + if ( MaxCount ) + continue; + } + return -1; + } + return (unsigned int)&v11[-v14]; + } + } + } + return v7; +} + +//----- (00468500) -------------------------------------------------------- +unsigned int __userpurge std::string::find@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 46851B: variable 'v5' is possibly undefined + +//----- (00468530) -------------------------------------------------------- +char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + int v4; // esi + int v5; // ebx + unsigned int v6; // edx + char *v7; // eax + + v4 = -1; + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( a3 < v6 ) + { + v7 = (char *)memchr((const void *)(v5 + a3), (char)this, v6 - a3); + if ( v7 ) + return &v7[-v5]; + } + return (char *)v4; +} + +//----- (00468580) -------------------------------------------------------- +_DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this) +{ + _DWORD *result; // eax + + result = ecx0; + *ecx0 = *(_DWORD *)this; + return result; +} + +//----- (00468590) -------------------------------------------------------- +int __fastcall std::string::size(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12); +} + +//----- (004685A0) -------------------------------------------------------- +int __fastcall std::string::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004685B0) -------------------------------------------------------- +int __fastcall std::string::c_str(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004685C0) -------------------------------------------------------- +_DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this) +{ + _DWORD *result; // eax + + result = ecx0; + *ecx0 = *(_DWORD *)this; + return result; +} + +//----- (004685D0) -------------------------------------------------------- +bool __fastcall std::string::empty(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) == 0; +} + +//----- (004685E0) -------------------------------------------------------- +int __fastcall std::string::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004685F0) -------------------------------------------------------- +int __userpurge std::string::rfind@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::rfind(a1, this, a3, v5, v7); +} +// 468614: variable 'v7' is possibly undefined + +//----- (00468630) -------------------------------------------------------- +int __userpurge std::string::rfind@( + int *a1@, + std::string *this, + const char *a3, + size_t Size, + unsigned int a5) +{ + int v5; // ebx + int v6; // edi + size_t v7; // eax + + v5 = -1; + v6 = *a1; + v7 = *(_DWORD *)(*a1 - 12); + if ( Size <= v7 ) + { + v5 = v7 - Size; + if ( v7 - Size > (unsigned int)a3 ) + v5 = (int)a3; + if ( Size ) + { + while ( memcmp((const void *)(v6 + v5), this, Size) ) + { + if ( !v5 ) + return -1; + --v5; + } + } + } + return v5; +} +// 46867D: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (004686B0) -------------------------------------------------------- +int __userpurge std::string::rfind@(int *a1@, std::string **this, const std::string *a3, unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::rfind(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 4686CB: variable 'v5' is possibly undefined + +//----- (004686E0) -------------------------------------------------------- +int __userpurge std::string::rfind@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + int result; // eax + int v5; // ebx + + result = -1; + v5 = *(_DWORD *)(*a1 - 12); + if ( v5 ) + { + result = v5 - 1; + if ( v5 - 1 > a3 ) + result = a3; + do + { + if ( *(_BYTE *)(*a1 + result) == (_BYTE)this ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00468720) -------------------------------------------------------- +int __fastcall std::string::_M_rep(_DWORD *a1) +{ + return *a1 - 12; +} + +//----- (00468730) -------------------------------------------------------- +int __fastcall std::string::cbegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00468740) -------------------------------------------------------- +int __fastcall std::string::length(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12); +} + +//----- (00468750) -------------------------------------------------------- +_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this) +{ + _DWORD *result; // eax + + result = ecx0; + *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; + return result; +} + +//----- (00468760) -------------------------------------------------------- +_DWORD *__thiscall std::string::substr(_DWORD *ecx0, std::string *this, std::string *a3, unsigned int a4) +{ + unsigned int v6; // [esp+Ch] [ebp-10h] + + if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::substr", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + std::string::string(ecx0, this, a3, a4, v6); + return ecx0; +} +// 468788: variable 'v6' is possibly undefined + +//----- (004687C0) -------------------------------------------------------- +int __fastcall std::string::_M_data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004687D0) -------------------------------------------------------- +int __fastcall std::string::_M_iend(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) + *a1; +} + +//----- (004687E0) -------------------------------------------------------- +int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3) +{ + const void *v3; // ebp + size_t v4; // esi + size_t Size; // eax + size_t v6; // ebx + int result; // eax + + v3 = *a1; + v4 = *((_DWORD *)*a1 - 3); + Size = strlen((const char *)this); + v6 = Size; + if ( Size > v4 ) + Size = v4; + if ( !Size ) + return v4 - v6; + result = memcmp(v3, this, Size); + if ( !result ) + return v4 - v6; + return result; +} + +//----- (00468830) -------------------------------------------------------- +int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3) +{ + size_t v3; // esi + size_t Size; // eax + size_t v5; // ebx + int result; // eax + + v3 = *((_DWORD *)*a1 - 3); + Size = v3; + v5 = *((_DWORD *)*this - 3); + if ( v5 <= v3 ) + Size = *((_DWORD *)*this - 3); + if ( !Size ) + return v3 - v5; + result = memcmp(*a1, *this, Size); + if ( !result ) + return v3 - v5; + return result; +} + +//----- (00468870) -------------------------------------------------------- +int __userpurge std::string::compare@( + int *a1@, + std::string *this, + unsigned int a3, + char *Str, + const char *a5) +{ + int v5; // ebp + unsigned int v6; // ebx + unsigned int v7; // ebx + size_t Size; // eax + size_t v9; // esi + int result; // eax + + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)this, + *(_DWORD *)(*a1 - 12)); + v7 = v6 - (_DWORD)this; + if ( v7 > a3 ) + v7 = a3; + Size = strlen(Str); + v9 = Size; + if ( Size > v7 ) + Size = v7; + if ( !Size ) + return v7 - v9; + result = memcmp((char *)this + v5, Str, Size); + if ( !result ) + return v7 - v9; + return result; +} + +//----- (00468900) -------------------------------------------------------- +int __userpurge std::string::compare@( + int *a1@, + std::string *this, + const char *a3, + void *Buf2, + const char *a5, + unsigned int a6) +{ + int v6; // eax + unsigned int v7; // ebx + unsigned int v8; // ebx + const char *Size; // ecx + int result; // eax + + v6 = *a1; + v7 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)this, + *(_DWORD *)(*a1 - 12)); + v8 = v7 - (_DWORD)this; + if ( v8 > (unsigned int)a3 ) + { + v8 = (unsigned int)a3; + Size = a3; + if ( a3 <= a5 ) + goto LABEL_4; + goto LABEL_8; + } + Size = (const char *)v8; + if ( v8 > (unsigned int)a5 ) +LABEL_8: + Size = a5; +LABEL_4: + if ( !Size ) + return v8 - (_DWORD)a5; + result = memcmp((char *)this + v6, Buf2, (size_t)Size); + if ( !result ) + return v8 - (_DWORD)a5; + return result; +} + +//----- (00468990) -------------------------------------------------------- +int __userpurge std::string::compare@( + int *a1@, + std::string *this, + unsigned int a3, + const void **a4, + const std::string *a5) +{ + int v5; // eax + unsigned int v6; // ebx + unsigned int v7; // ebx + const void *Buf2; // edi + unsigned int v9; // esi + size_t Size; // ecx + int result; // eax + + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)this, + *(_DWORD *)(*a1 - 12)); + v7 = v6 - (_DWORD)this; + if ( v7 > a3 ) + { + v7 = a3; + Buf2 = *a4; + v9 = *((_DWORD *)*a4 - 3); + Size = v9; + if ( v9 <= a3 ) + goto LABEL_4; + goto LABEL_8; + } + Buf2 = *a4; + v9 = *((_DWORD *)*a4 - 3); + Size = v9; + if ( v9 > v7 ) +LABEL_8: + Size = v7; +LABEL_4: + if ( !Size ) + return v7 - v9; + result = memcmp((char *)this + v5, Buf2, Size); + if ( !result ) + return v7 - v9; + return result; +} + +//----- (00468A20) -------------------------------------------------------- +int __userpurge std::string::compare@( + int *a1@, + std::string *this, + unsigned int a3, + _DWORD *a4, + const std::string *a5, + size_t a6, + unsigned int a7) +{ + int v7; // eax + unsigned int v8; // esi + unsigned int v9; // ebx + unsigned int v10; // esi + unsigned int v11; // ebx + size_t Size; // ebp + int result; // eax + + v7 = *a1; + v8 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this > v8 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)this, + *(_DWORD *)(v7 - 12)); + v9 = *(_DWORD *)(*a4 - 12); + if ( (unsigned int)a5 > v9 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)a5, + *(_DWORD *)(*a4 - 12)); + v10 = v8 - (_DWORD)this; + if ( v10 <= a3 ) + { + v11 = v9 - (_DWORD)a5; + if ( v11 <= a6 ) + goto LABEL_5; +LABEL_11: + v11 = a6; + Size = a6; + if ( a6 <= v10 ) + goto LABEL_6; + goto LABEL_10; + } + v10 = a3; + v11 = v9 - (_DWORD)a5; + if ( v11 > a6 ) + goto LABEL_11; +LABEL_5: + Size = v11; + if ( v11 > v10 ) +LABEL_10: + Size = v10; +LABEL_6: + if ( !Size ) + return v10 - v11; + result = memcmp((char *)this + v7, (char *)a5 + *a4, Size); + if ( !result ) + return v10 - v11; + return result; +} + +//----- (00468AF0) -------------------------------------------------------- +_DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this) +{ + _DWORD *result; // eax + + result = ecx0; + *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; + return result; +} + +//----- (00468B00) -------------------------------------------------------- +std::string *__userpurge std::string::_M_check@( + _DWORD *a1@, + std::string *this, + const char *a3, + const char *a4) +{ + std::string *result; // eax + unsigned int v5; // edx + + result = this; + v5 = *(_DWORD *)(*a1 - 12); + if ( v5 < (unsigned int)this ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, (size_t)this, v5); + return result; +} + +//----- (00468B40) -------------------------------------------------------- +unsigned int __userpurge std::string::_M_limit@( + _DWORD *a1@, + std::string *this, + unsigned int a3, + unsigned int a4) +{ + unsigned int result; // eax + + result = *(_DWORD *)(*a1 - 12) - (_DWORD)this; + if ( result > a3 ) + return a3; + return result; +} + +//----- (00468B60) -------------------------------------------------------- +int __fastcall std::string::capacity(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 8); +} + +//----- (00468B70) -------------------------------------------------------- +int std::string::max_size() +{ + return 1073741820; +} + +//----- (00468B80) -------------------------------------------------------- +int __fastcall std::string::_M_ibegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00468B90) -------------------------------------------------------- +int __thiscall std::string::operator[](_DWORD *this, int a2) +{ + return a2 + *this; +} + +//----- (00468BA0) -------------------------------------------------------- +const char *std::bad_typeid::what() +{ + return "std::bad_typeid"; +} + +//----- (00468BB0) -------------------------------------------------------- +int __fastcall std::error_code::default_error_condition(int a1) +{ + return (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 20))(*(_DWORD *)(a1 + 4), *(_DWORD *)a1); +} + +//----- (00468BD0) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (00468BF0) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (00468C10) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) + std::string::string(this, *(char **)(a2[2] + 20), (int)v5); + else + v3(a2); + return this; +} +// 468C10: using guessed type int var_D[3]; + +//----- (00468C70) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 468C70: using guessed type int var_D[3]; + +//----- (00468CA0) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 44); + else + return v1(); +} + +//----- (00468CC0) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 17); + else + return v1(); +} + +//----- (00468CE0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (00468CF0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (00468D00) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); + if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) + std::string::string(this, *(char **)(a2[2] + 36), (int)v5); + else + v3(a2); + return this; +} +// 468D00: using guessed type int var_D[3]; + +//----- (00468D60) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) + std::string::string(this, *(char **)(a2[2] + 28), (int)v5); + else + v3(a2); + return this; +} +// 468D60: using guessed type int var_D[3]; + +//----- (00468DC0) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 18); + else + return v1(); +} + +//----- (00468DE0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); + return this; +} +// 468DE0: using guessed type int var_D[3]; + +//----- (00468E10) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); +} + +//----- (00468E20) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); +} + +//----- (00468E30) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); + return this; +} +// 468E30: using guessed type int var_D[3]; + +//----- (00468E60) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); + return this; +} +// 468E60: using guessed type int var_D[3]; + +//----- (00468E90) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (00468EA0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 468EA0: using guessed type int var_D[3]; + +//----- (00468F00) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (00468F20) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (00468F40) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) + std::string::string(this, *(char **)(a2[2] + 20), (int)v5); + else + v3(a2); + return this; +} +// 468F40: using guessed type int var_D[3]; + +//----- (00468FA0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 468FA0: using guessed type int var_D[3]; + +//----- (00468FD0) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 44); + else + return v1(); +} + +//----- (00468FF0) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 17); + else + return v1(); +} + +//----- (00469010) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (00469020) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (00469030) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); + if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) + std::string::string(this, *(char **)(a2[2] + 36), (int)v5); + else + v3(a2); + return this; +} +// 469030: using guessed type int var_D[3]; + +//----- (00469090) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) + std::string::string(this, *(char **)(a2[2] + 28), (int)v5); + else + v3(a2); + return this; +} +// 469090: using guessed type int var_D[3]; + +//----- (004690F0) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 18); + else + return v1(); +} + +//----- (00469110) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); + return this; +} +// 469110: using guessed type int var_D[3]; + +//----- (00469140) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); +} + +//----- (00469150) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); +} + +//----- (00469160) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); + return this; +} +// 469160: using guessed type int var_D[3]; + +//----- (00469190) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); + return this; +} +// 469190: using guessed type int var_D[3]; + +//----- (004691C0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (004691D0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 4691D0: using guessed type int var_D[3]; + +//----- (00469230) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 56); + else + return v1(); +} + +//----- (00469250) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (00469270) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); + else + v3(a2); + return this; +} +// 469270: using guessed type int var_D[3]; + +//----- (004692D0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 4692D0: using guessed type int var_D[3]; + +//----- (00469300) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (00469320) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 18); + else + return v1(); +} + +//----- (00469340) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); +} + +//----- (00469350) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (00469360) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); + if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); + else + v3(a2); + return this; +} +// 469360: using guessed type int var_D[3]; + +//----- (004693C0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); + else + v3(a2); + return this; +} +// 4693C0: using guessed type int var_D[3]; + +//----- (00469420) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 20); + else + return v1(); +} + +//----- (00469440) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); + return this; +} +// 469440: using guessed type int var_D[3]; + +//----- (00469470) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (00469480) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (00469490) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); + return this; +} +// 469490: using guessed type int var_D[3]; + +//----- (004694C0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); + return this; +} +// 4694C0: using guessed type int var_D[3]; + +//----- (004694F0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); +} + +//----- (00469500) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 469500: using guessed type int var_D[3]; + +//----- (00469560) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 56); + else + return v1(); +} + +//----- (00469580) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (004695A0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); + else + v3(a2); + return this; +} +// 4695A0: using guessed type int var_D[3]; + +//----- (00469600) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 469600: using guessed type int var_D[3]; + +//----- (00469630) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (00469650) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 18); + else + return v1(); +} + +//----- (00469670) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); +} + +//----- (00469680) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (00469690) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); + if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); + else + v3(a2); + return this; +} +// 469690: using guessed type int var_D[3]; + +//----- (004696F0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); + else + v3(a2); + return this; +} +// 4696F0: using guessed type int var_D[3]; + +//----- (00469750) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 20); + else + return v1(); +} + +//----- (00469770) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); + return this; +} +// 469770: using guessed type int var_D[3]; + +//----- (004697A0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (004697B0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (004697C0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); + return this; +} +// 4697C0: using guessed type int var_D[3]; + +//----- (004697F0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); + return this; +} +// 4697F0: using guessed type int var_D[3]; + +//----- (00469820) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); +} + +//----- (00469830) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 469830: using guessed type int var_D[3]; + +//----- (004698A0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 8); + a2[1] = *(_DWORD *)(v2 + 12); + return result; +} + +//----- (004698C0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 16); + a2[1] = *(_DWORD *)(v2 + 20); + return result; +} + +//----- (004698E0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[18]; + a2[1] = v2[19]; + a2[2] = v2[20]; + a2[3] = v2[21]; + a2[4] = v2[22]; + a2[5] = v2[23]; + a2[6] = v2[24]; + return result; +} + +//----- (00469920) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 24); + a2[1] = *(_DWORD *)(v2 + 28); + return result; +} + +//----- (00469940) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[37]; + a2[1] = v2[38]; + a2[2] = v2[39]; + a2[3] = v2[40]; + a2[4] = v2[41]; + a2[5] = v2[42]; + a2[6] = v2[43]; + a2[7] = v2[44]; + a2[8] = v2[45]; + a2[9] = v2[46]; + a2[10] = v2[47]; + a2[11] = v2[48]; + return result; +} + +//----- (004699C0) -------------------------------------------------------- +void __thiscall std::__timepunct::_M_put( + const char **this, + char *Buffer, + size_t SizeInBytes, + char *Format, + struct tm *Tm) +{ + char *v6; // ebx + unsigned int Size; // esi + void *Locale; // ebp + size_t v9; // ebx + + v6 = setlocale(0, 0); + Size = strlen(v6) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v6, Size); + setlocale(0, this[4]); + v9 = strftime(Buffer, SizeInBytes, Format, Tm); + setlocale(0, (const char *)Locale); + operator delete[](Locale); + if ( !v9 ) + *Buffer = 0; +} + +//----- (00469A70) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[11]; + a2[1] = v2[12]; + a2[2] = v2[13]; + a2[3] = v2[14]; + a2[4] = v2[15]; + a2[5] = v2[16]; + a2[6] = v2[17]; + return result; +} + +//----- (00469AB0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 32); + a2[1] = *(_DWORD *)(v2 + 36); + return result; +} + +//----- (00469AD0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[25]; + a2[1] = v2[26]; + a2[2] = v2[27]; + a2[3] = v2[28]; + a2[4] = v2[29]; + a2[5] = v2[30]; + a2[6] = v2[31]; + a2[7] = v2[32]; + a2[8] = v2[33]; + a2[9] = v2[34]; + a2[10] = v2[35]; + a2[11] = v2[36]; + return result; +} + +//----- (00469B40) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 8); + a2[1] = *(_DWORD *)(v2 + 12); + return result; +} + +//----- (00469B60) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 16); + a2[1] = *(_DWORD *)(v2 + 20); + return result; +} + +//----- (00469B80) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[18]; + a2[1] = v2[19]; + a2[2] = v2[20]; + a2[3] = v2[21]; + a2[4] = v2[22]; + a2[5] = v2[23]; + a2[6] = v2[24]; + return result; +} + +//----- (00469BC0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 24); + a2[1] = *(_DWORD *)(v2 + 28); + return result; +} + +//----- (00469BE0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[37]; + a2[1] = v2[38]; + a2[2] = v2[39]; + a2[3] = v2[40]; + a2[4] = v2[41]; + a2[5] = v2[42]; + a2[6] = v2[43]; + a2[7] = v2[44]; + a2[8] = v2[45]; + a2[9] = v2[46]; + a2[10] = v2[47]; + a2[11] = v2[48]; + return result; +} + +//----- (00469C60) -------------------------------------------------------- +void __thiscall std::__timepunct::_M_put( + const char **this, + wchar_t *Buffer, + size_t SizeInWords, + wchar_t *Format, + struct tm *Tm) +{ + char *v6; // ebx + unsigned int Size; // esi + void *Locale; // ebp + size_t v9; // ebx + + v6 = setlocale(0, 0); + Size = strlen(v6) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v6, Size); + setlocale(0, this[4]); + v9 = wcsftime(Buffer, SizeInWords, Format, Tm); + setlocale(0, (const char *)Locale); + operator delete[](Locale); + if ( !v9 ) + *Buffer = 0; +} + +//----- (00469D20) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[11]; + a2[1] = v2[12]; + a2[2] = v2[13]; + a2[3] = v2[14]; + a2[4] = v2[15]; + a2[5] = v2[16]; + a2[6] = v2[17]; + return result; +} + +//----- (00469D60) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 32); + a2[1] = *(_DWORD *)(v2 + 36); + return result; +} + +//----- (00469D80) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[25]; + a2[1] = v2[26]; + a2[2] = v2[27]; + a2[3] = v2[28]; + a2[4] = v2[29]; + a2[5] = v2[30]; + a2[6] = v2[31]; + a2[7] = v2[32]; + a2[8] = v2[33]; + a2[9] = v2[34]; + a2[10] = v2[35]; + a2[11] = v2[36]; + return result; +} + +//----- (00469DE0) -------------------------------------------------------- +int __stdcall std::__use_cache>::operator()(int *a1) +{ + int v1; // ebx + int v2; // edi + int result; // eax + _DWORD *v4; // eax + void (__cdecl *v5)(void *); // [esp+4h] [ebp-34h] + unsigned int v6; // [esp+8h] [ebp-30h] + std::locale::_Impl *v7; // [esp+1Ch] [ebp-1Ch] + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = *(_DWORD *)(*a1 + 12) + 4 * v1; + result = *(_DWORD *)v2; + if ( !*(_DWORD *)v2 ) + { + v4 = operator new((struct type_info *)0x68, v5); + v4[1] = 0; + *v4 = &off_538BD4; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + *((_WORD *)v4 + 18) = 0; + *((_BYTE *)v4 + 100) = 0; + v7 = (std::locale::_Impl *)v4; + std::__numpunct_cache::_M_cache((int)v4, (int)a1); + std::locale::_Impl::_M_install_cache(*a1, v7, (const std::locale::facet *)v1, v6); + return *(_DWORD *)v2; + } + return result; +} +// 469E17: variable 'v5' is possibly undefined +// 469E7D: variable 'v6' is possibly undefined +// 516628: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (00469ED0) -------------------------------------------------------- +int __stdcall std::__use_cache>::operator()(int *a1) +{ + int v1; // ebx + int v2; // edi + int result; // eax + _DWORD *v4; // eax + void (__cdecl *v5)(void *); // [esp+4h] [ebp-34h] + unsigned int v6; // [esp+8h] [ebp-30h] + std::locale::_Impl *v7; // [esp+1Ch] [ebp-1Ch] + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = *(_DWORD *)(*a1 + 12) + 4 * v1; + result = *(_DWORD *)v2; + if ( !*(_DWORD *)v2 ) + { + v4 = operator new((struct type_info *)0xA8, v5); + v4[1] = 0; + *v4 = &off_538BE4; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + *((_BYTE *)v4 + 164) = 0; + v7 = (std::locale::_Impl *)v4; + std::__numpunct_cache::_M_cache((int)v4, (int)a1); + std::locale::_Impl::_M_install_cache(*a1, v7, (const std::locale::facet *)v1, v6); + return *(_DWORD *)v2; + } + return result; +} +// 469F07: variable 'v5' is possibly undefined +// 469F71: variable 'v6' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (00469FC0) -------------------------------------------------------- +int __fastcall std::logic_error::what(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00469FD0) -------------------------------------------------------- +bool __fastcall std::__basic_file::is_open(_DWORD *a1) +{ + return *a1 != 0; +} + +//----- (00469FE0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( + int *this, + int a2, + int a3, + int a4, + int a5) +{ + int v6; // [esp+0h] [ebp-2Ch] + + LOBYTE(v6) = 0; + return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); +} +// 46A00E: variable 'v6' is possibly undefined + +//----- (0046A020) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( + int *this, + int a2, + int a3, + int a4, + int a5) +{ + int v6; // [esp+0h] [ebp-2Ch] + + LOBYTE(v6) = 0; + return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); +} +// 46A04E: variable 'v6' is possibly undefined + +//----- (0046A060) -------------------------------------------------------- +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( + _DWORD *this, + int a2, + int a3, + int a4) +{ + int v6; // [esp+0h] [ebp-48h] + char v7; // [esp+23h] [ebp-25h] BYREF + _BYTE *v8[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v9)(_BYTE **); // [esp+3Ch] [ebp-Ch] + + v9 = 0; + LOBYTE(v6) = 0; + std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), v8, a3, a4); + if ( !v9 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::string::string(this, v8[0], (int)v8[1], (int)&v7); + if ( v9 ) + v9(v8); + return this; +} +// 46A094: variable 'v6' is possibly undefined + +//----- (0046A0F0) -------------------------------------------------------- +void **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( + void **this, + int a2, + std::string *a3, + int a4) +{ + unsigned __int8 *v5; // eax + int v7; // [esp+0h] [ebp-48h] + int v8; // [esp+8h] [ebp-40h] + int v9[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v10)(int *); // [esp+3Ch] [ebp-Ch] + + v10 = 0; + LOBYTE(v7) = 0; + std::__facet_shims::__collate_transform(v7, *(_DWORD *)(a2 + 12), (int)v9, a3, a4); + if ( !v10 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v5 = (unsigned __int8 *)v9[0]; + *this = this + 2; + LOBYTE(v8) = 0; + std::string::_M_construct(this, v5, (size_t)&v5[v9[1]], v8); + if ( v10 ) + v10(v9); + return this; +} +// 46A124: variable 'v7' is possibly undefined +// 46A14B: variable 'v8' is possibly undefined + +//----- (0046A180) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( + int *this, + int a2, + int a3, + int a4, + int a5) +{ + int v6; // [esp+0h] [ebp-2Ch] + + LOBYTE(v6) = 0; + return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); +} +// 46A1AE: variable 'v6' is possibly undefined + +//----- (0046A1C0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( + int *this, + int a2, + int a3, + int a4, + int a5) +{ + int v6; // [esp+0h] [ebp-2Ch] + + LOBYTE(v6) = 0; + return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); +} +// 46A1EE: variable 'v6' is possibly undefined + +//----- (0046A200) -------------------------------------------------------- +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( + _DWORD *this, + int a2, + int a3, + int a4) +{ + int v6; // [esp+0h] [ebp-48h] + char v7; // [esp+23h] [ebp-25h] BYREF + const wchar_t *v8[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v9)(const wchar_t **); // [esp+3Ch] [ebp-Ch] + + v9 = 0; + LOBYTE(v6) = 0; + std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), (int)v8, a3, a4); + if ( !v9 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::wstring::basic_string(this, v8[0], (int)v8[1], (int)&v7); + if ( v9 ) + v9(v8); + return this; +} +// 46A234: variable 'v6' is possibly undefined + +//----- (0046A290) -------------------------------------------------------- +wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( + wchar_t **this, + int a2, + int a3, + int a4) +{ + wchar_t *v5; // eax + int v7; // [esp+0h] [ebp-48h] + int v8; // [esp+8h] [ebp-40h] + wchar_t *v9[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v10)(wchar_t **); // [esp+3Ch] [ebp-Ch] + + v10 = 0; + LOBYTE(v7) = 0; + std::__facet_shims::__collate_transform(v7, *(_DWORD *)(a2 + 12), v9, a3, a4); + if ( !v10 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v5 = v9[0]; + *this = (wchar_t *)(this + 2); + LOBYTE(v8) = 0; + std::wstring::_M_construct(this, v5, (int)&v5[(int)v9[1]], v8); + if ( v10 ) + v10(v9); + return this; +} +// 46A2C4: variable 'v7' is possibly undefined +// 46A2EC: variable 'v8' is possibly undefined + +//----- (0046A320) -------------------------------------------------------- +void **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( + void **this, + int a2, + std::string *a3, + int a4, + int a5, + int a6) +{ + unsigned __int8 *v7; // eax + int v9; // [esp+0h] [ebp-48h] + int v10; // [esp+8h] [ebp-40h] + int v11[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v12)(int *); // [esp+3Ch] [ebp-Ch] + + v12 = 0; + LOBYTE(v9) = 0; + std::__facet_shims::__messages_get( + v9, + *(_DWORD *)(a2 + 16), + (int)v11, + a3, + a4, + a5, + *(_BYTE **)a6, + *(_DWORD *)(a6 + 4)); + if ( !v12 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v7 = (unsigned __int8 *)v11[0]; + *this = this + 2; + LOBYTE(v10) = 0; + std::string::_M_construct(this, v7, (size_t)&v7[v11[1]], v10); + if ( v12 ) + v12(v11); + return this; +} +// 46A36B: variable 'v9' is possibly undefined +// 46A392: variable 'v10' is possibly undefined + +//----- (0046A3D0) -------------------------------------------------------- +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 **a6) +{ + int v8; // [esp+0h] [ebp-48h] + char v9; // [esp+23h] [ebp-25h] BYREF + _BYTE *v10[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v11)(_BYTE **); // [esp+3Ch] [ebp-Ch] + + v11 = 0; + LOBYTE(v8) = 0; + std::__facet_shims::__messages_get(v8, *(_DWORD *)(a2 + 16), v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); + if ( !v11 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::string::string(this, v10[0], (int)v10[1], (int)&v9); + if ( v11 ) + v11(v10); + return this; +} +// 46A41B: variable 'v8' is possibly undefined + +//----- (0046A470) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3) +{ + int v4; // [esp+0h] [ebp-2Ch] + + LOBYTE(v4) = 0; + return std::__facet_shims::__messages_open(v4, this[4], *(_BYTE **)a2, *(_DWORD *)(a2 + 4), a3); +} +// 46A497: variable 'v4' is possibly undefined + +//----- (0046A4B0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( + int *this, + unsigned __int8 **a2, + int a3) +{ + int v4; // [esp+0h] [ebp-2Ch] + + LOBYTE(v4) = 0; + return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); +} +// 46A4D7: variable 'v4' is possibly undefined + +//----- (0046A4F0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) +{ + int v3; // [esp+0h] [ebp-1Ch] + + LOBYTE(v3) = 0; + return std::__facet_shims::__messages_close(v3, this[4], a2); +} +// 46A506: variable 'v3' is possibly undefined + +//----- (0046A520) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) +{ + int v3; // [esp+0h] [ebp-1Ch] + + LOBYTE(v3) = 0; + return std::__facet_shims::__messages_close(v3, this[4], a2); +} +// 46A536: variable 'v3' is possibly undefined + +//----- (0046A550) -------------------------------------------------------- +wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( + wchar_t **this, + int a2, + int a3, + int a4, + int a5, + int a6) +{ + wchar_t *v7; // eax + int v9; // [esp+0h] [ebp-48h] + int v10; // [esp+8h] [ebp-40h] + wchar_t *v11[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v12)(wchar_t **); // [esp+3Ch] [ebp-Ch] + + v12 = 0; + LOBYTE(v9) = 0; + std::__facet_shims::__messages_get( + v9, + *(_DWORD *)(a2 + 16), + v11, + a3, + a4, + a5, + *(const wchar_t **)a6, + *(_DWORD *)(a6 + 4)); + if ( !v12 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v7 = v11[0]; + *this = (wchar_t *)(this + 2); + LOBYTE(v10) = 0; + std::wstring::_M_construct(this, v7, (int)&v7[(int)v11[1]], v10); + if ( v12 ) + v12(v11); + return this; +} +// 46A59B: variable 'v9' is possibly undefined +// 46A5C3: variable 'v10' is possibly undefined + +//----- (0046A600) -------------------------------------------------------- +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + wchar_t **a6) +{ + int v8; // [esp+0h] [ebp-48h] + char v9; // [esp+23h] [ebp-25h] BYREF + const wchar_t *v10[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v11)(const wchar_t **); // [esp+3Ch] [ebp-Ch] + + v11 = 0; + LOBYTE(v8) = 0; + std::__facet_shims::__messages_get(v8, *(_DWORD *)(a2 + 16), (int)v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); + if ( !v11 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::wstring::basic_string(this, v10[0], (int)v10[1], (int)&v9); + if ( v11 ) + v11(v10); + return this; +} +// 46A64B: variable 'v8' is possibly undefined + +//----- (0046A6A0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3) +{ + int v4; // [esp+0h] [ebp-2Ch] + + LOBYTE(v4) = 0; + return std::__facet_shims::__messages_open(v4, this[4], *(_BYTE **)a2, *(_DWORD *)(a2 + 4), a3); +} +// 46A6C7: variable 'v4' is possibly undefined + +//----- (0046A6E0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( + int *this, + unsigned __int8 **a2, + int a3) +{ + int v4; // [esp+0h] [ebp-2Ch] + + LOBYTE(v4) = 0; + return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); +} +// 46A707: variable 'v4' is possibly undefined + +//----- (0046A720) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) +{ + int v3; // [esp+0h] [ebp-1Ch] + + LOBYTE(v3) = 0; + return std::__facet_shims::__messages_close(v3, this[4], a2); +} +// 46A736: variable 'v3' is possibly undefined + +//----- (0046A750) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) +{ + int v3; // [esp+0h] [ebp-1Ch] + + LOBYTE(v3) = 0; + return std::__facet_shims::__messages_close(v3, this[4], a2); +} +// 46A766: variable 'v3' is possibly undefined + +//----- (0046A780) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); +} +// 46A7CE: variable 'v9' is possibly undefined + +//----- (0046A7E0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); +} +// 46A82E: variable 'v9' is possibly undefined + +//----- (0046A840) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); +} +// 46A88E: variable 'v9' is possibly undefined + +//----- (0046A8A0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); +} +// 46A8EE: variable 'v9' is possibly undefined + +//----- (0046A900) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); +} +// 46A94E: variable 'v9' is possibly undefined + +//----- (0046A960) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); +} +// 46A9AE: variable 'v9' is possibly undefined + +//----- (0046A9C0) -------------------------------------------------------- +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) +{ + int v2; // [esp+0h] [ebp-1Ch] + + LOBYTE(v2) = 0; + return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); +} +// 46A9CE: variable 'v2' is possibly undefined + +//----- (0046A9E0) -------------------------------------------------------- +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) +{ + int v2; // [esp+0h] [ebp-1Ch] + + LOBYTE(v2) = 0; + return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); +} +// 46A9EE: variable 'v2' is possibly undefined + +//----- (0046AA00) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); +} +// 46AA4E: variable 'v9' is possibly undefined + +//----- (0046AA60) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); +} +// 46AAAE: variable 'v9' is possibly undefined + +//----- (0046AAC0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); +} +// 46AB0E: variable 'v9' is possibly undefined + +//----- (0046AB20) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); +} +// 46AB6E: variable 'v9' is possibly undefined + +//----- (0046AB80) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); +} +// 46ABCE: variable 'v9' is possibly undefined + +//----- (0046ABE0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); +} +// 46AC2E: variable 'v9' is possibly undefined + +//----- (0046AC40) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); +} +// 46AC8E: variable 'v9' is possibly undefined + +//----- (0046ACA0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); +} +// 46ACEE: variable 'v9' is possibly undefined + +//----- (0046AD00) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); +} +// 46AD4E: variable 'v9' is possibly undefined + +//----- (0046AD60) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); +} +// 46ADAE: variable 'v9' is possibly undefined + +//----- (0046ADC0) -------------------------------------------------------- +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) +{ + int v2; // [esp+0h] [ebp-1Ch] + + LOBYTE(v2) = 0; + return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); +} +// 46ADCE: variable 'v2' is possibly undefined + +//----- (0046ADE0) -------------------------------------------------------- +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) +{ + int v2; // [esp+0h] [ebp-1Ch] + + LOBYTE(v2) = 0; + return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); +} +// 46ADEE: variable 'v2' is possibly undefined + +//----- (0046AE00) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); +} +// 46AE4E: variable 'v9' is possibly undefined + +//----- (0046AE60) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); +} +// 46AEAE: variable 'v9' is possibly undefined + +//----- (0046AEC0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); +} +// 46AF0E: variable 'v9' is possibly undefined + +//----- (0046AF20) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); +} +// 46AF6E: variable 'v9' is possibly undefined + +//----- (0046AF80) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + std::string *a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + int *a8, + int a9) +{ + int v9; // esi + void (__cdecl *v10)(int *); // eax + int *v12; // eax + int v13; // [esp+0h] [ebp-98h] + int *v14; // [esp+4h] [ebp-94h] + int v15; // [esp+8h] [ebp-90h] + int v16; // [esp+30h] [ebp-68h] + int v17; // [esp+34h] [ebp-64h] + size_t Size; // [esp+38h] [ebp-60h] + int v19; // [esp+48h] [ebp-50h] BYREF + void *v20; // [esp+4Ch] [ebp-4Ch] BYREF + size_t v21; // [esp+50h] [ebp-48h] + int v22[4]; // [esp+54h] [ebp-44h] BYREF + int v23[6]; // [esp+64h] [ebp-34h] BYREF + void (__cdecl *v24)(int *); // [esp+7Ch] [ebp-1Ch] + + v24 = 0; + LOBYTE(v13) = 0; + v14 = (int *)this[2]; + v19 = 0; + v9 = std::__facet_shims::__money_get(v13, v14, a2, a3, a4, a5, a6, a7, &v19, 0, (int)v23); + v10 = v24; + if ( v19 ) + { + *a8 = v19; + goto LABEL_3; + } + if ( !v24 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + LOBYTE(v15) = 0; + v20 = v22; + std::string::_M_construct(&v20, (unsigned __int8 *)v23[0], v23[0] + v23[1], v15); + Size = v21; + v12 = *(int **)a9; + if ( v20 == v22 ) + { + if ( v21 ) + { + if ( v21 == 1 ) + *(_BYTE *)v12 = v22[0]; + else + memcpy(*(void **)a9, v22, v21); + Size = v21; + v12 = *(int **)a9; + } + *(_DWORD *)(a9 + 4) = Size; + *((_BYTE *)v12 + Size) = 0; + v12 = (int *)v20; + goto LABEL_11; + } + v17 = v22[0]; + if ( v12 == (int *)(a9 + 8) ) + { + *(_DWORD *)a9 = v20; + *(_DWORD *)(a9 + 4) = Size; + *(_DWORD *)(a9 + 8) = v17; + goto LABEL_15; + } + v16 = *(_DWORD *)(a9 + 8); + *(_DWORD *)a9 = v20; + *(_DWORD *)(a9 + 4) = Size; + *(_DWORD *)(a9 + 8) = v17; + if ( !v12 ) + { +LABEL_15: + v20 = v22; + v12 = v22; + goto LABEL_11; + } + v20 = v12; + v22[0] = v16; +LABEL_11: + v21 = 0; + *(_BYTE *)v12 = 0; + if ( v20 != v22 ) + operator delete(v20); + v10 = v24; +LABEL_3: + if ( v10 ) + v10(v23); + return v9; +} +// 46AFE6: variable 'v13' is possibly undefined +// 46B040: variable 'v15' is possibly undefined + +//----- (0046B150) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + int *a9) +{ + int v9; // esi + void (__cdecl *v10)(_BYTE **); // eax + int v12; // edx + int v13; // [esp+0h] [ebp-88h] + int *v14; // [esp+4h] [ebp-84h] + std::string *v15; // [esp+4h] [ebp-84h] + volatile signed __int32 *v16; // [esp+3Ch] [ebp-4Ch] + char v17[5]; // [esp+4Bh] [ebp-3Dh] BYREF + volatile signed __int32 *v18; // [esp+50h] [ebp-38h] BYREF + _BYTE *v19[6]; // [esp+54h] [ebp-34h] BYREF + void (__cdecl *v20)(_BYTE **); // [esp+6Ch] [ebp-1Ch] + + v20 = 0; + LOBYTE(v13) = 0; + v14 = (int *)this[2]; + *(_DWORD *)&v17[1] = 0; + v9 = std::__facet_shims::__money_get(v13, v14, a2, a3, a4, a5, a6, a7, &v17[1], 0, v19); + v10 = v20; + if ( *(_DWORD *)&v17[1] ) + { + *a8 = *(_DWORD *)&v17[1]; + } + else + { + if ( !v20 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::string::string(&v18, v19[0], (int)v19[1], (int)v17); + std::string::swap(a9, (std::string *)&v18, v15); + v16 = v18 - 3; + if ( v18 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd(v18 - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)v18 - 1); + *((_DWORD *)v18 - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy((void *)v16, (int)v17); + } + v10 = v20; + } + if ( v10 ) + v10(v19); + return v9; +} +// 46B1B3: variable 'v13' is possibly undefined +// 46B218: variable 'v15' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0046B290) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + long double *a9) +{ + int result; // eax + int v10; // [esp+0h] [ebp-5Ch] + int *v11; // [esp+4h] [ebp-58h] + int v12; // [esp+3Ch] [ebp-20h] BYREF + long double v13[2]; // [esp+40h] [ebp-1Ch] BYREF + + LOBYTE(v10) = 0; + v11 = (int *)this[2]; + v12 = 0; + result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); + if ( v12 ) + *a8 = v12; + else + *a9 = v13[0]; + return result; +} +// 46B2F1: variable 'v10' is possibly undefined +// 46B290: using guessed type long double var_1C[2]; + +//----- (0046B320) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + std::string *a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + int *a8, + long double *a9) +{ + int result; // eax + int v10; // [esp+0h] [ebp-5Ch] + int *v11; // [esp+4h] [ebp-58h] + int v12; // [esp+3Ch] [ebp-20h] BYREF + long double v13[2]; // [esp+40h] [ebp-1Ch] BYREF + + LOBYTE(v10) = 0; + v11 = (int *)this[2]; + v12 = 0; + result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); + if ( v12 ) + *a8 = v12; + else + *a9 = v13[0]; + return result; +} +// 46B381: variable 'v10' is possibly undefined +// 46B320: using guessed type long double var_1C[2]; + +//----- (0046B3B0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + int a9) +{ + int v9; // esi + void (__cdecl *v10)(wchar_t **); // eax + size_t v12; // edi + wchar_t *v13; // eax + wchar_t *v14; // edx + int v15; // [esp+0h] [ebp-98h] + int *v16; // [esp+4h] [ebp-94h] + int v17; // [esp+8h] [ebp-90h] + int v18; // [esp+30h] [ebp-68h] + int v19; // [esp+34h] [ebp-64h] + int v20; // [esp+48h] [ebp-50h] BYREF + wchar_t *v21; // [esp+4Ch] [ebp-4Ch] BYREF + size_t N; // [esp+50h] [ebp-48h] + wchar_t S2[2]; // [esp+54h] [ebp-44h] BYREF + wchar_t *v24[6]; // [esp+64h] [ebp-34h] BYREF + void (__cdecl *v25)(wchar_t **); // [esp+7Ch] [ebp-1Ch] + + v25 = 0; + LOBYTE(v15) = 0; + v16 = (int *)this[2]; + v20 = 0; + v9 = std::__facet_shims::__money_get(v15, v16, a2, a3, a4, a5, a6, a7, &v20, 0, v24); + v10 = v25; + if ( v20 ) + { + *a8 = v20; + goto LABEL_3; + } + if ( !v25 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + LOBYTE(v17) = 0; + v21 = S2; + std::wstring::_M_construct(&v21, v24[0], (int)&v24[0][(int)v24[1]], v17); + v12 = N; + v13 = *(wchar_t **)a9; + if ( v21 == S2 ) + { + v14 = S2; + if ( N ) + { + if ( N == 1 ) + { + *v13 = S2[0]; + v14 = S2; + } + else + { + wmemcpy(v13, S2, N); + v14 = v21; + v12 = N; + v13 = *(wchar_t **)a9; + } + } + *(_DWORD *)(a9 + 4) = v12; + v13[v12] = 0; + v13 = v14; + goto LABEL_11; + } + v19 = *(_DWORD *)S2; + if ( v13 == (wchar_t *)(a9 + 8) ) + { + *(_DWORD *)a9 = v21; + *(_DWORD *)(a9 + 4) = v12; + *(_DWORD *)(a9 + 8) = v19; + } + else + { + v18 = *(_DWORD *)(a9 + 8); + *(_DWORD *)a9 = v21; + *(_DWORD *)(a9 + 4) = v12; + *(_DWORD *)(a9 + 8) = v19; + if ( v13 ) + { + v21 = v13; + *(_DWORD *)S2 = v18; +LABEL_11: + N = 0; + *v13 = 0; + if ( v13 != S2 ) + operator delete(v13); + } + } + v10 = v25; +LABEL_3: + if ( v10 ) + v10(v24); + return v9; +} +// 46B416: variable 'v15' is possibly undefined +// 46B486: variable 'v17' is possibly undefined + +//----- (0046B570) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + int *a9) +{ + int v9; // esi + void (__cdecl *v10)(const wchar_t **); // eax + int v12; // edx + int v13; // [esp+0h] [ebp-88h] + int *v14; // [esp+4h] [ebp-84h] + volatile signed __int32 *v15; // [esp+30h] [ebp-58h] + char v16[5]; // [esp+4Bh] [ebp-3Dh] BYREF + volatile signed __int32 *v17; // [esp+50h] [ebp-38h] BYREF + const wchar_t *v18[6]; // [esp+54h] [ebp-34h] BYREF + void (__cdecl *v19)(const wchar_t **); // [esp+6Ch] [ebp-1Ch] + + v19 = 0; + LOBYTE(v13) = 0; + v14 = (int *)this[2]; + *(_DWORD *)&v16[1] = 0; + v9 = std::__facet_shims::__money_get(v13, v14, a2, a3, a4, a5, a6, a7, &v16[1], 0, (int)v18); + v10 = v19; + if ( *(_DWORD *)&v16[1] ) + { + *a8 = *(_DWORD *)&v16[1]; + } + else + { + if ( !v19 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::wstring::basic_string(&v17, v18[0], (int)v18[1], (int)v16); + std::wstring::swap(a9, (int *)&v17); + v15 = v17 - 3; + if ( v17 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd(v17 - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)v17 - 1); + *((_DWORD *)v17 - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)v15, (int)v16); + } + v10 = v19; + } + if ( v10 ) + v10(v18); + return v9; +} +// 46B5D3: variable 'v13' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0046B6C0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + long double *a9) +{ + int result; // eax + int v10; // [esp+0h] [ebp-6Ch] + int *v11; // [esp+4h] [ebp-68h] + int v12; // [esp+4Ch] [ebp-20h] BYREF + long double v13[2]; // [esp+50h] [ebp-1Ch] BYREF + + LOBYTE(v10) = 0; + v11 = (int *)this[2]; + v12 = 0; + result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); + if ( v12 ) + *a8 = v12; + else + *a9 = v13[0]; + return result; +} +// 46B72B: variable 'v10' is possibly undefined +// 46B6C0: using guessed type long double var_1C[2]; + +//----- (0046B780) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + long double *a9) +{ + int result; // eax + int v10; // [esp+0h] [ebp-6Ch] + int *v11; // [esp+4h] [ebp-68h] + int v12; // [esp+4Ch] [ebp-20h] BYREF + long double v13[2]; // [esp+50h] [ebp-1Ch] BYREF + + LOBYTE(v10) = 0; + v11 = (int *)this[2]; + v12 = 0; + result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); + if ( v12 ) + *a8 = v12; + else + *a9 = v13[0]; + return result; +} +// 46B7EB: variable 'v10' is possibly undefined +// 46B780: using guessed type long double var_1C[2]; + +//----- (0046B840) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + _DWORD *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6, + int a7) +{ + int v8; // ebx + int v10; // [esp+0h] [ebp-78h] + int v11; // [esp+4h] [ebp-74h] + int v12; // [esp+8h] [ebp-70h] + int v13[2]; // [esp+44h] [ebp-34h] BYREF + char v14; // [esp+4Ch] [ebp-2Ch] BYREF + void (__cdecl *v15)(void **); // [esp+5Ch] [ebp-1Ch] + + v15 = 0; + v13[0] = (int)&v14; + LOBYTE(v12) = 0; + std::string::_M_construct(v13, *(_BYTE **)a7, *(_DWORD *)a7 + *(_DWORD *)(a7 + 4), v12); + LOBYTE(v10) = 0; + v11 = this[2]; + v15 = std::__facet_shims::`anonymous namespace'::__destroy_string; + v8 = std::__facet_shims::__money_put(v10, v11, a2, a3, a4, a5, a6, 0.0, (int)v13); + if ( v15 ) + v15((void **)v13); + return v8; +} +// 46B87C: variable 'v12' is possibly undefined +// 46B8C6: variable 'v10' is possibly undefined + +//----- (0046B8F0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6, + unsigned int **a7) +{ + int v8; // ebx + int v10; // [esp+0h] [ebp-78h] + const std::string *v11; // [esp+4h] [ebp-74h] + int v12[6]; // [esp+44h] [ebp-34h] BYREF + void (__cdecl *v13)(volatile signed __int32 **); // [esp+5Ch] [ebp-1Ch] + + v13 = 0; + std::string::string((unsigned int **)v12, a7, v11); + v12[1] = *(*a7 - 3); + v13 = std::__facet_shims::`anonymous namespace'::__destroy_string; + LOBYTE(v10) = 0; + v8 = std::__facet_shims::__money_put(v10, this[2], a2, a3, a4, a5, a6, 0.0, (int)v12); + if ( v13 ) + v13((volatile signed __int32 **)v12); + return v8; +} +// 46B916: variable 'v11' is possibly undefined +// 46B96B: variable 'v10' is possibly undefined + +//----- (0046B9A0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6, + long double a7) +{ + int v8; // [esp+0h] [ebp-3Ch] + + LOBYTE(v8) = 0; + return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); +} +// 46B9E8: variable 'v8' is possibly undefined + +//----- (0046BA00) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6, + long double a7) +{ + int v8; // [esp+0h] [ebp-3Ch] + + LOBYTE(v8) = 0; + return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); +} +// 46BA48: variable 'v8' is possibly undefined + +//----- (0046BA60) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + _DWORD *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6, + int a7) +{ + int v8; // ebx + int v10; // [esp+0h] [ebp-78h] + int v11; // [esp+4h] [ebp-74h] + int v12; // [esp+8h] [ebp-70h] + int v13[2]; // [esp+44h] [ebp-34h] BYREF + char v14; // [esp+4Ch] [ebp-2Ch] BYREF + void (__cdecl *v15)(void **); // [esp+5Ch] [ebp-1Ch] + + v15 = 0; + v13[0] = (int)&v14; + LOBYTE(v12) = 0; + std::wstring::_M_construct((wchar_t **)v13, *(wchar_t **)a7, *(_DWORD *)a7 + 2 * *(_DWORD *)(a7 + 4), v12); + LOBYTE(v10) = 0; + v11 = this[2]; + v15 = std::__facet_shims::`anonymous namespace'::__destroy_string; + v8 = std::__facet_shims::__money_put(v10, v11, a2, a3, a4, a5, a6, 0.0, (int)v13); + if ( v15 ) + v15((void **)v13); + return v8; +} +// 46BA9D: variable 'v12' is possibly undefined +// 46BAE7: variable 'v10' is possibly undefined + +//----- (0046BB20) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6, + _DWORD *a7) +{ + int v8; // ebx + int v10; // [esp+0h] [ebp-78h] + int v11[6]; // [esp+44h] [ebp-34h] BYREF + void (__cdecl *v12)(volatile signed __int32 **); // [esp+5Ch] [ebp-1Ch] + + v12 = 0; + std::wstring::basic_string(v11, a7); + v11[1] = *(_DWORD *)(*a7 - 12); + v12 = std::__facet_shims::`anonymous namespace'::__destroy_string; + LOBYTE(v10) = 0; + v8 = std::__facet_shims::__money_put(v10, this[2], a2, a3, a4, a5, a6, 0.0, (int)v11); + if ( v12 ) + v12((volatile signed __int32 **)v11); + return v8; +} +// 46BB99: variable 'v10' is possibly undefined + +//----- (0046BBD0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + __int16 a6, + long double a7) +{ + int v8; // [esp+0h] [ebp-3Ch] + + LOBYTE(v8) = 0; + return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); +} +// 46BC18: variable 'v8' is possibly undefined + +//----- (0046BC30) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + __int16 a6, + long double a7) +{ + int v8; // [esp+0h] [ebp-3Ch] + + LOBYTE(v8) = 0; + return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); +} +// 46BC78: variable 'v8' is possibly undefined + +//----- (0046BC90) -------------------------------------------------------- +const char *_ZGTtNKSt13bad_exception4whatEv() +{ + return "std::bad_exception"; +} + +//----- (0046BCA0) -------------------------------------------------------- +bool __fastcall std::filebuf::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 40)); +} + +//----- (0046BCB0) -------------------------------------------------------- +bool __fastcall std::wfilebuf::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 40)); +} + +//----- (0046BCC0) -------------------------------------------------------- +int __fastcall std::fstream::rdbuf(int a1) +{ + return a1 + 12; +} + +//----- (0046BCD0) -------------------------------------------------------- +bool __fastcall std::fstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 52)); +} + +//----- (0046BCE0) -------------------------------------------------------- +int __fastcall std::wfstream::rdbuf(int a1) +{ + return a1 + 12; +} + +//----- (0046BCF0) -------------------------------------------------------- +bool __fastcall std::wfstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 52)); +} + +//----- (0046BD00) -------------------------------------------------------- +int __fastcall std::wistream::gcount(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (0046BD10) -------------------------------------------------------- +int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1) +{ + return *a1; +} + +//----- (0046BD20) -------------------------------------------------------- +int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1) +{ + return *a1; +} + +//----- (0046BD30) -------------------------------------------------------- +int __fastcall std::runtime_error::what(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (0046BD40) -------------------------------------------------------- +int __fastcall std::ifstream::rdbuf(int a1) +{ + return a1 + 8; +} + +//----- (0046BD50) -------------------------------------------------------- +bool __fastcall std::ifstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 48)); +} + +//----- (0046BD60) -------------------------------------------------------- +int __fastcall std::wifstream::rdbuf(int a1) +{ + return a1 + 8; +} + +//----- (0046BD70) -------------------------------------------------------- +bool __fastcall std::wifstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 48)); +} + +//----- (0046BD80) -------------------------------------------------------- +int __fastcall std::ofstream::rdbuf(int a1) +{ + return a1 + 4; +} + +//----- (0046BD90) -------------------------------------------------------- +bool __fastcall std::ofstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 44)); +} + +//----- (0046BDA0) -------------------------------------------------------- +int __fastcall std::wofstream::rdbuf(int a1) +{ + return a1 + 4; +} + +//----- (0046BDB0) -------------------------------------------------------- +bool __fastcall std::wofstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 44)); +} + +//----- (0046BDC0) -------------------------------------------------------- +int __fastcall std::streambuf::gptr(int a1) +{ + return *(_DWORD *)(a1 + 8); +} + +//----- (0046BDD0) -------------------------------------------------------- +int __fastcall std::streambuf::pptr(int a1) +{ + return *(_DWORD *)(a1 + 20); +} + +//----- (0046BDE0) -------------------------------------------------------- +int __fastcall std::streambuf::eback(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (0046BDF0) -------------------------------------------------------- +int __fastcall std::streambuf::egptr(int a1) +{ + return *(_DWORD *)(a1 + 12); +} + +//----- (0046BE00) -------------------------------------------------------- +int __fastcall std::streambuf::epptr(int a1) +{ + return *(_DWORD *)(a1 + 24); +} + +//----- (0046BE10) -------------------------------------------------------- +int __fastcall std::streambuf::pbase(int a1) +{ + return *(_DWORD *)(a1 + 16); +} + +//----- (0046BE20) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2) +{ + const std::locale *v4; // [esp+4h] [ebp-18h] + + std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); + return this; +} +// 46BE30: variable 'v4' is possibly undefined + +//----- (0046BE50) -------------------------------------------------------- +int __fastcall std::wstreambuf::gptr(int a1) +{ + return *(_DWORD *)(a1 + 8); +} + +//----- (0046BE60) -------------------------------------------------------- +int __fastcall std::wstreambuf::pptr(int a1) +{ + return *(_DWORD *)(a1 + 20); +} + +//----- (0046BE70) -------------------------------------------------------- +int __fastcall std::wstreambuf::eback(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (0046BE80) -------------------------------------------------------- +int __fastcall std::wstreambuf::egptr(int a1) +{ + return *(_DWORD *)(a1 + 12); +} + +//----- (0046BE90) -------------------------------------------------------- +int __fastcall std::wstreambuf::epptr(int a1) +{ + return *(_DWORD *)(a1 + 24); +} + +//----- (0046BEA0) -------------------------------------------------------- +int __fastcall std::wstreambuf::pbase(int a1) +{ + return *(_DWORD *)(a1 + 16); +} + +//----- (0046BEB0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2) +{ + const std::locale *v4; // [esp+4h] [ebp-18h] + + std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); + return this; +} +// 46BEC0: variable 'v4' is possibly undefined + +//----- (0046BEE0) -------------------------------------------------------- +const char *std::bad_function_call::what() +{ + return "bad_function_call"; +} + +//----- (0046BEF0) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; +} + +//----- (0046BF10) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_in( + unsigned int *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + _DWORD *a8) +{ + unsigned int v8; // edx + int result; // eax + int v10[2]; // [esp+4h] [ebp-10h] BYREF + int v11[2]; // [esp+Ch] [ebp-8h] BYREF + + v8 = this[3]; + v10[0] = a3; + v10[1] = a4; + v11[0] = a6; + v11[1] = a7; + result = std::`anonymous namespace'::ucs4_in(v10, v11, this[2], v8); + *a5 = v10[0]; + *a8 = v11[0]; + return result; +} + +//----- (0046BF70) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_out( + int this, + int a2, + unsigned int *a3, + unsigned int *a4, + unsigned int **a5, + _BYTE *a6, + _BYTE *a7, + _BYTE **a8) +{ + unsigned int v8; // edi + unsigned int *v9; // ebx + int result; // eax + _BYTE *v11[5]; // [esp+8h] [ebp-14h] BYREF + + v8 = *(_DWORD *)(this + 8); + v9 = a3; + v11[0] = a6; + v11[1] = a7; + if ( (*(_BYTE *)(this + 12) & 2) != 0 + && !(unsigned __int8)std::`anonymous namespace'::write_utf8_bom((int *)v11) ) + { +LABEL_10: + result = 1; + } + else if ( a3 == a4 ) + { +LABEL_11: + result = 0; + } + else + { + while ( v8 >= *v9 ) + { + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v11, *v9) ) + goto LABEL_10; + if ( a4 == ++v9 ) + goto LABEL_11; + } + result = 2; + } + *a5 = v9; + *a8 = v11[0]; + return result; +} + +//----- (0046C010) -------------------------------------------------------- +unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( + int this, + int a2, + unsigned __int8 *a3, + unsigned __int8 *a4, + int a5) +{ + unsigned int v5; // edi + int v6; // ebx + bool v7; // dl + bool v8; // al + unsigned __int8 *v10[6]; // [esp+8h] [ebp-18h] BYREF + + v5 = *(_DWORD *)(this + 8); + v10[0] = a3; + v10[1] = a4; + if ( (*(_BYTE *)(this + 12) & 4) != 0 ) + std::`anonymous namespace'::read_bom((int *)v10); + v6 = a5 - 1; + if ( a5 ) + { + do + { + v7 = v5 >= std::`anonymous namespace'::read_utf8_code_point(v10, v5); + v8 = v6-- != 0; + } + while ( v8 && v7 ); + } + return (unsigned __int8 *)(v10[0] - a3); +} + +//----- (0046C080) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 3 : 6; +} + +//----- (0046C0A0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_in( + _DWORD *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + unsigned int v9; // ecx + char v10; // al + int result; // eax + int v12[2]; // [esp+8h] [ebp-10h] BYREF + int v13[2]; // [esp+10h] [ebp-8h] BYREF + + v12[0] = a3; + v12[1] = a4; + v13[0] = a6; + v13[1] = a7; + v8 = this[3]; + v9 = this[2]; + v10 = v8 & 6 | 1; + if ( v9 > 0xFFFE ) + v9 = 0xFFFF; + result = std::`anonymous namespace'::utf16_in(v12, v13, v9, v10, 1); + *a5 = v12[0]; + *a8 = v13[0]; + return result; +} + +//----- (0046C110) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_out( + _DWORD *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + unsigned int v9; // ecx + int result; // eax + unsigned __int16 *v11[2]; // [esp+8h] [ebp-10h] BYREF + int v12[2]; // [esp+10h] [ebp-8h] BYREF + + v11[0] = a3; + v11[1] = a4; + v12[0] = a6; + v12[1] = a7; + v8 = this[3]; + v9 = this[2]; + if ( v9 > 0xFFFE ) + v9 = 0xFFFF; + result = std::`anonymous namespace'::utf16_out(v11, v12, v9, v8, 1); + *a5 = v11[0]; + *a8 = v12[0]; + return result; +} + +//----- (0046C180) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + int a5) +{ + std::`anonymous namespace'::ucs2_span(a5, a4, this[2], this[3]); + return 0; +} + +//----- (0046C1B0) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 3 : 6; +} + +//----- (0046C1D0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_in( + _DWORD *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + _DWORD *a8) +{ + unsigned int v8; // ecx + int result; // eax + int v10[2]; // [esp+8h] [ebp-10h] BYREF + int v11[2]; // [esp+10h] [ebp-8h] BYREF + + v8 = this[3]; + v10[0] = a3; + v10[1] = a4; + v11[0] = a6; + v11[1] = a7; + if ( v8 > 0xFFFE ) + v8 = 0xFFFF; + result = std::`anonymous namespace'::utf16_in(v10, v11, v8, 1, 1); + *a5 = v10[0]; + *a8 = v11[0]; + return result; +} + +//----- (0046C240) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_out( + _DWORD *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + unsigned int v9; // ecx + int result; // eax + int v11[2]; // [esp+8h] [ebp-10h] BYREF + unsigned __int16 *v12[2]; // [esp+10h] [ebp-8h] BYREF + + v11[0] = a6; + v11[1] = a7; + v12[0] = a3; + v12[1] = a4; + v8 = this[4]; + v9 = this[3]; + if ( v9 > 0xFFFE ) + v9 = 0xFFFF; + result = std::`anonymous namespace'::utf16_out(v12, v11, v9, v8, 1); + *a5 = v12[0]; + *a8 = v11[0]; + return result; +} + +//----- (0046C2B0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + int a5) +{ + std::`anonymous namespace'::ucs2_span(a5, a4, this[3], this[4]); + return 0; +} + +//----- (0046C2E0) -------------------------------------------------------- +char __userpurge std::__iosfail_type_info::__do_upcast@( + int *a1@, + std::__iosfail_type_info *this, + const __cxxabiv1::__class_type_info *a3, + void **a4) +{ + char result; // al + + result = std::__is_ios_failure_handler(this); + if ( !result ) + return __cxxabiv1::__class_type_info::__do_upcast(a1, this, a3, a4); + *(_DWORD *)a3 += 16; + return result; +} + +//----- (0046C330) -------------------------------------------------------- +bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + unsigned __int8 v4; // dl + _DWORD *v5; // ecx + char v6; // bl + char v7; // di + unsigned __int8 v9; // di + int v10; // eax + int v11; // eax + unsigned __int8 v12; // [esp+Fh] [ebp-Dh] + + v3 = (_DWORD *)*this; + v4 = this[1] == -1; + if ( (v4 & (v3 != 0)) != 0 ) + { + v9 = v4 & (v3 != 0); + v4 = 0; + if ( v3[2] >= v3[3] ) + { + v10 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + v4 = 0; + if ( v10 == -1 ) + { + *this = 0; + v4 = v9; + } + } + } + v5 = *(_DWORD **)a2; + v6 = *(_DWORD *)(a2 + 4) == -1; + v7 = v6 & (*(_DWORD *)a2 != 0); + if ( v7 ) + { + v6 = 0; + if ( v5[2] >= v5[3] ) + { + v12 = v4; + v11 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); + v4 = v12; + if ( v11 == -1 ) + { + *(_DWORD *)a2 = 0; + v6 = v7; + } + } + } + return v6 == (char)v4; +} + +//----- (0046C3D0) -------------------------------------------------------- +int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@) +{ + int result; // eax + _DWORD *v4; // ecx + unsigned __int8 *v5; // eax + + result = a2; + v4 = *a1; + if ( a2 == -1 && v4 ) + { + v5 = (unsigned __int8 *)v4[2]; + if ( (unsigned int)v5 >= v4[3] ) + { + result = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); + if ( result == -1 ) + *a1 = 0; + } + else + { + return *v5; + } + } + return result; +} + +//----- (0046C420) -------------------------------------------------------- +bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2) +{ + _DWORD *v3; // ecx + char v4; // si + char v5; // dl + _DWORD *v6; // ecx + char v7; // dl + char v8; // bl + __int16 *v10; // eax + __int16 v11; // ax + __int16 *v12; // eax + __int16 v13; // ax + char v14; // [esp+Fh] [ebp-Dh] + + v3 = *(_DWORD **)this; + v4 = this[2] == 0xFFFF; + v5 = v4 & (v3 != 0); + if ( v5 ) + { + v10 = (__int16 *)v3[2]; + if ( (unsigned int)v10 >= v3[3] ) + { + v14 = v4 & (v3 != 0); + v11 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + v5 = v14; + } + else + { + v11 = *v10; + } + v4 = 0; + if ( v11 == -1 ) + { + *(_DWORD *)this = 0; + v4 = v5; + } + } + v6 = *(_DWORD **)a2; + v7 = *(_WORD *)(a2 + 4) == 0xFFFF; + v8 = v7 & (*(_DWORD *)a2 != 0); + if ( v8 ) + { + v12 = (__int16 *)v6[2]; + if ( (unsigned int)v12 >= v6[3] ) + v13 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + else + v13 = *v12; + v7 = 0; + if ( v13 == -1 ) + { + *(_DWORD *)a2 = 0; + v7 = v8; + } + } + return v4 == v7; +} + +//----- (0046C4C0) -------------------------------------------------------- +int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@) +{ + int result; // eax + _DWORD *v4; // ecx + unsigned __int16 *v5; // eax + + result = a2; + v4 = *a1; + if ( (_WORD)a2 == 0xFFFF && v4 ) + { + v5 = (unsigned __int16 *)v4[2]; + if ( (unsigned int)v5 >= v4[3] ) + result = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); + else + result = *v5; + if ( (_WORD)result == 0xFFFF ) + *a1 = 0; + } + return result; +} + +//----- (0046C510) -------------------------------------------------------- +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 6; +} + +//----- (0046C530) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_in( + _DWORD *this, + int a2, + int a3, + int a4, + int *a5, + unsigned int *a6, + unsigned int *a7, + unsigned int **a8) +{ + unsigned int v8; // esi + int v10; // eax + int v11; // edx + unsigned int utf16_code; // eax + int result; // eax + int v14; // [esp+4h] [ebp-1Ch] BYREF + int v15; // [esp+8h] [ebp-18h] BYREF + int v16; // [esp+Ch] [ebp-14h] + + v8 = this[2]; + v15 = a3; + v10 = this[3]; + v16 = a4; + v14 = v10; + std::`anonymous namespace'::read_utf16_bom((int)&v15, &v14); + v11 = v15; + if ( (unsigned int)(v16 - v15) >> 1 ) + { + while ( 1 ) + { + if ( a7 == a6 ) + { + *a5 = v15; + *a8 = a7; + return 1; + } + utf16_code = std::`anonymous namespace'::read_utf16_code_point((unsigned int)&v15, v8, v14); + v11 = v15; + if ( utf16_code == -2 ) + { + result = 1; + goto LABEL_10; + } + if ( v8 < utf16_code ) + break; + *a6++ = utf16_code; + if ( !((unsigned int)(v16 - v11) >> 1) ) + goto LABEL_8; + } + result = 2; +LABEL_10: + *a5 = v15; + *a8 = a6; + } + else + { +LABEL_8: + *a5 = v11; + *a8 = a6; + return 2 * (a4 != v11); + } + return result; +} + +//----- (0046C620) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_out( + _DWORD *this, + int a2, + unsigned int *a3, + unsigned int *a4, + unsigned int **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // ebp + unsigned int v9; // esi + unsigned int *v10; // edi + bool v11; // zf + _WORD *v12; // eax + int v13; // ebp + unsigned int v14; // edx + unsigned int v15; // ecx + int v16; // edx + unsigned int v18; // ecx + __int16 v19; // dx + __int16 v20; // cx + int v21; // eax + __int16 v22; // cx + _WORD *v23; // [esp+8h] [ebp-18h] BYREF + int v24; // [esp+Ch] [ebp-14h] + + v8 = this[3]; + v9 = this[2]; + v10 = a3; + v23 = (_WORD *)a6; + v24 = a7; + v11 = (unsigned __int8)std::`anonymous namespace'::write_utf16_bom((int)&v23, v8) == 0; + v12 = v23; + if ( v11 ) + { +LABEL_7: + v16 = 1; + } + else if ( a3 == a4 ) + { +LABEL_14: + v16 = 0; + } + else + { + v13 = v8 & 1; + while ( 1 ) + { + v14 = *v10; + if ( v9 < *v10 ) + break; + v15 = (unsigned int)(v24 - (_DWORD)v12) >> 1; + if ( v14 > 0xFFFF ) + { + if ( v15 <= 1 ) + goto LABEL_7; + v18 = v14 >> 10; + v19 = (v14 & 0x3FF) - 9216; + v20 = v18 - 10304; + if ( !v13 ) + { + v20 = __ROL2__(v20, 8); + v19 = __ROL2__(v19, 8); + } + *v12 = v20; + v21 = (int)v23++; + *(_WORD *)(v21 + 2) = v19; + v12 = ++v23; + } + else + { + if ( !v15 ) + goto LABEL_7; + v22 = __ROL2__(v14, 8); + if ( v13 ) + *v12 = v14; + else + *v12 = v22; + v12 = ++v23; + } + if ( a4 == ++v10 ) + goto LABEL_14; + } + v16 = 2; + } + *a5 = v10; + *a8 = v12; + return v16; +} + +//----- (0046C760) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) +{ + unsigned int v5; // edi + int v6; // eax + int v7; // ebp + unsigned int utf16_code; // eax + bool v9; // dl + int v11; // [esp+4h] [ebp-1Ch] BYREF + int v12[6]; // [esp+8h] [ebp-18h] BYREF + + v5 = this[2]; + v12[1] = a4; + v6 = this[3]; + v12[0] = a3; + v11 = v6; + std::`anonymous namespace'::read_utf16_bom((int)v12, &v11); + if ( a5 ) + { + v7 = a5 - 1; + do + { + utf16_code = std::`anonymous namespace'::read_utf16_code_point((unsigned int)v12, v5, v11); + v9 = v7-- != 0; + } + while ( v5 >= utf16_code && v9 ); + } + return v12[0] - a3; +} + +//----- (0046C7D0) -------------------------------------------------------- +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 2 : 4; +} + +//----- (0046C7F0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_in( + unsigned int *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + int *a8) +{ + unsigned int v8; // edx + int result; // eax + int v10; // edx + int v11; // esi + int v12[2]; // [esp+4h] [ebp-18h] BYREF + int v13[4]; // [esp+Ch] [ebp-10h] BYREF + + v8 = this[3]; + v12[0] = a3; + v12[1] = a4; + v13[0] = a6; + v13[1] = a7; + result = std::`anonymous namespace'::ucs2_in(v12, v13, this[2], v8); + v10 = v12[0]; + v11 = v13[0]; + *a5 = v12[0]; + *a8 = v11; + if ( !result && v10 != a4 ) + return 2; + return result; +} + +//----- (0046C860) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_out( + _DWORD *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // ebx + unsigned int v9; // esi + char v10; // dl + int result; // eax + unsigned __int16 *v12[2]; // [esp+4h] [ebp-18h] BYREF + int v13[4]; // [esp+Ch] [ebp-10h] BYREF + + v8 = this[3]; + v9 = this[2]; + v12[0] = a3; + v12[1] = a4; + v13[0] = a6; + v13[1] = a7; + v10 = std::`anonymous namespace'::write_utf16_bom((int)v13, v8); + result = 1; + if ( v10 ) + result = std::`anonymous namespace'::ucs2_out(v12, v13, v9, v8); + *a5 = v12[0]; + *a8 = v13[0]; + return result; +} + +//----- (0046C8D0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) +{ + int v5; // edx + unsigned int v6; // ecx + int v8[3]; // [esp+Ch] [ebp-Ch] BYREF + + v5 = this[3]; + v8[1] = a4; + v6 = this[2]; + v8[0] = a3; + return std::`anonymous namespace'::ucs2_span((unsigned int)v8, a5, v6, v5) - a3; +} + +//----- (0046C910) -------------------------------------------------------- +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 2 : 4; +} + +//----- (0046C930) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_in( + unsigned int *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + int *a8) +{ + unsigned int v8; // edx + int result; // eax + int v10; // edx + int v11; // esi + int v12[2]; // [esp+4h] [ebp-18h] BYREF + int v13[4]; // [esp+Ch] [ebp-10h] BYREF + + v8 = this[4]; + v12[0] = a3; + v12[1] = a4; + v13[0] = a6; + v13[1] = a7; + result = std::`anonymous namespace'::ucs2_in(v12, v13, this[3], v8); + v10 = v12[0]; + v11 = v13[0]; + *a5 = v12[0]; + *a8 = v11; + if ( !result && v10 != a4 ) + return 2; + return result; +} + +//----- (0046C9A0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_out( + _DWORD *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // ebx + unsigned int v9; // esi + char v10; // dl + int result; // eax + int v12[2]; // [esp+4h] [ebp-18h] BYREF + unsigned __int16 *v13[4]; // [esp+Ch] [ebp-10h] BYREF + + v8 = this[4]; + v9 = this[3]; + v12[0] = a6; + v12[1] = a7; + v13[0] = a3; + v13[1] = a4; + v10 = std::`anonymous namespace'::write_utf16_bom((int)v12, v8); + result = 1; + if ( v10 ) + result = std::`anonymous namespace'::ucs2_out(v13, v12, v9, v8); + *a5 = v13[0]; + *a8 = v12[0]; + return result; +} + +//----- (0046CA10) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) +{ + int v5; // edx + unsigned int v6; // ecx + int v8[3]; // [esp+Ch] [ebp-Ch] BYREF + + v5 = this[4]; + v8[1] = a4; + v6 = this[3]; + v8[0] = a3; + return std::`anonymous namespace'::ucs2_span((unsigned int)v8, a5, v6, v5) - a3; +} + +//----- (0046CA50) -------------------------------------------------------- +const char *std::bad_array_new_length::what() +{ + return "std::bad_array_new_length"; +} + +//----- (0046CA60) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; +} + +//----- (0046CA80) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_in( + int this, + int a2, + unsigned __int8 *a3, + unsigned __int8 *a4, + unsigned __int8 **a5, + unsigned int *a6, + unsigned int *a7, + unsigned int **a8) +{ + unsigned int v8; // edi + unsigned __int8 *v9; // ebp + unsigned __int8 *v10; // eax + unsigned int v12; // eax + int result; // eax + unsigned __int8 *v14; // [esp+8h] [ebp-18h] BYREF + unsigned __int8 *v15; // [esp+Ch] [ebp-14h] + + v8 = *(_DWORD *)(this + 8); + v9 = a3; + v10 = a4; + v14 = a3; + v15 = a4; + if ( (*(_BYTE *)(this + 12) & 4) != 0 ) + { + std::`anonymous namespace'::read_bom((int *)&v14); + v9 = v14; + v10 = v15; + } + if ( v10 == v9 ) + { +LABEL_14: + result = 0; + } + else + { + while ( 1 ) + { + if ( a7 == a6 ) + { + v9 = v14; + result = 0; + goto LABEL_12; + } + v12 = std::`anonymous namespace'::read_utf8_code_point(&v14, v8); + if ( v12 == -2 ) + { + v9 = v14; + result = 1; + goto LABEL_12; + } + if ( v8 < v12 ) + break; + if ( v12 <= 0xFFFF ) + { + *a6 = v12; + v9 = v14; + ++a6; + if ( v14 == v15 ) + goto LABEL_14; + } + else + { + if ( (char *)a7 - (char *)a6 == 4 ) + { + result = 1; + goto LABEL_12; + } + v9 = v14; + a6 += 2; + *(a6 - 1) = (unsigned __int16)((v12 & 0x3FF) - 9216); + *(a6 - 2) = (unsigned __int16)((v12 >> 10) - 10304); + if ( v9 == v15 ) + goto LABEL_14; + } + } + v9 = v14; + result = 2; + } +LABEL_12: + *a5 = v9; + *a8 = a6; + return result; +} + +//----- (0046CBA0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_out( + int this, + int a2, + unsigned int *a3, + unsigned int *a4, + unsigned int **a5, + _BYTE *a6, + _BYTE *a7, + _BYTE **a8) +{ + unsigned int v8; // edi + unsigned int *v9; // ebx + unsigned int v10; // eax + unsigned int v11; // eax + int v12; // ebp + unsigned int v13; // edx + int result; // eax + _BYTE *v15[6]; // [esp+8h] [ebp-18h] BYREF + + v8 = *(_DWORD *)(this + 8); + v9 = a3; + v15[0] = a6; + v15[1] = a7; + if ( (*(_BYTE *)(this + 12) & 2) != 0 + && !(unsigned __int8)std::`anonymous namespace'::write_utf8_bom((int *)v15) ) + { +LABEL_14: + result = 1; + goto LABEL_15; + } + v10 = a4 - a3; + if ( a3 == a4 ) + { +LABEL_16: + result = 0; + goto LABEL_15; + } + while ( 1 ) + { + v13 = *v9; + if ( *v9 - 55296 <= 0x3FF ) + break; + if ( v13 - 56320 <= 0x3FF ) + goto LABEL_13; + v12 = 1; + if ( v8 < v13 ) + goto LABEL_13; +LABEL_8: + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v15, v13) ) + goto LABEL_14; + v9 += v12; + v10 = a4 - v9; + if ( a4 == v9 ) + goto LABEL_16; + } + if ( v10 <= 1 ) + goto LABEL_16; + v11 = v9[1]; + if ( v11 - 56320 <= 0x3FF ) + { + v12 = 2; + v13 = v11 + (v13 << 10) - 56613888; + if ( v8 >= v13 ) + goto LABEL_8; + } +LABEL_13: + result = 2; +LABEL_15: + *a5 = v9; + *a8 = v15[0]; + return result; +} + +//----- (0046CCA0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + unsigned int a5) +{ + std::`anonymous namespace'::utf16_span(a5, a4, this[2], this[3]); + return 0; +} + +//----- (0046CCD0) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; +} + +//----- (0046CCF0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_in( + _DWORD *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + _DWORD *a8) +{ + unsigned int v8; // edx + int result; // eax + int v10[2]; // [esp+8h] [ebp-10h] BYREF + int v11[2]; // [esp+10h] [ebp-8h] BYREF + + v8 = this[2]; + v10[0] = a3; + v10[1] = a4; + v11[0] = a6; + v11[1] = a7; + result = std::`anonymous namespace'::utf16_in(v10, v11, v8, this[3] & 6 | 1, 0); + *a5 = v10[0]; + *a8 = v11[0]; + return result; +} + +//----- (0046CD60) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_out( + unsigned int *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int result; // eax + unsigned __int16 *v9[2]; // [esp+8h] [ebp-10h] BYREF + int v10[2]; // [esp+10h] [ebp-8h] BYREF + + v9[0] = a3; + v9[1] = a4; + v10[0] = a6; + v10[1] = a7; + result = std::`anonymous namespace'::utf16_out(v9, v10, this[2], this[3], 0); + *a5 = v9[0]; + *a8 = v10[0]; + return result; +} + +//----- (0046CDC0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + unsigned int a5) +{ + std::`anonymous namespace'::utf16_span(a5, a4, this[2], this[3]); + return 0; +} + +//----- (0046CDF0) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 4 : 7; +} + +//----- (0046CE10) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_in( + int this, + int a2, + unsigned __int8 *a3, + unsigned __int8 *a4, + unsigned __int8 **a5, + char *a6, + char *a7, + char **a8) +{ + unsigned int v8; // edi + unsigned __int8 *v9; // ebp + unsigned __int8 *v10; // eax + unsigned int v12; // eax + int result; // eax + unsigned __int8 *v14; // [esp+8h] [ebp-18h] BYREF + unsigned __int8 *v15; // [esp+Ch] [ebp-14h] + + v8 = *(_DWORD *)(this + 12); + v9 = a3; + v10 = a4; + v14 = a3; + v15 = a4; + if ( (*(_BYTE *)(this + 16) & 4) != 0 ) + { + std::`anonymous namespace'::read_bom((int *)&v14); + v10 = v15; + v9 = v14; + } + if ( v9 == v10 ) + { +LABEL_14: + result = 0; + } + else + { + while ( 1 ) + { + if ( a7 == a6 ) + { + v9 = v14; + result = 0; + goto LABEL_12; + } + v12 = std::`anonymous namespace'::read_utf8_code_point(&v14, v8); + if ( v12 == -2 ) + { + v9 = v14; + result = 1; + goto LABEL_12; + } + if ( v8 < v12 ) + break; + if ( v12 <= 0xFFFF ) + { + *(_WORD *)a6 = v12; + v9 = v14; + a6 += 2; + if ( v14 == v15 ) + goto LABEL_14; + } + else + { + if ( a7 - a6 == 2 ) + { + result = 1; + goto LABEL_12; + } + v9 = v14; + a6 += 4; + *((_WORD *)a6 - 1) = (v12 & 0x3FF) - 9216; + *((_WORD *)a6 - 2) = (v12 >> 10) - 10304; + if ( v9 == v15 ) + goto LABEL_14; + } + } + v9 = v14; + result = 2; + } +LABEL_12: + *a5 = v9; + *a8 = a6; + return result; +} + +//----- (0046CF30) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_out( + int this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + _BYTE *a6, + _BYTE *a7, + _BYTE **a8) +{ + unsigned int v8; // edi + unsigned __int16 *v9; // ebx + unsigned int v10; // eax + int v11; // eax + int v12; // ebp + unsigned int v13; // edx + int result; // eax + _BYTE *v15[6]; // [esp+8h] [ebp-18h] BYREF + + v8 = *(_DWORD *)(this + 12); + v9 = a3; + v15[0] = a6; + v15[1] = a7; + if ( (*(_BYTE *)(this + 16) & 2) != 0 + && !(unsigned __int8)std::`anonymous namespace'::write_utf8_bom((int *)v15) ) + { +LABEL_14: + result = 1; + goto LABEL_15; + } + v10 = a4 - a3; + if ( a3 == a4 ) + { +LABEL_16: + result = 0; + goto LABEL_15; + } + while ( 1 ) + { + v13 = *v9; + if ( v13 - 55296 <= 0x3FF ) + break; + if ( v13 - 56320 <= 0x3FF ) + goto LABEL_13; + v12 = 1; + if ( v8 < v13 ) + goto LABEL_13; +LABEL_8: + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v15, v13) ) + goto LABEL_14; + v9 += v12; + v10 = a4 - v9; + if ( a4 == v9 ) + goto LABEL_16; + } + if ( v10 <= 1 ) + goto LABEL_16; + v11 = v9[1]; + if ( (unsigned int)(v11 - 56320) <= 0x3FF ) + { + v12 = 2; + v13 = v11 + (v13 << 10) - 56613888; + if ( v8 >= v13 ) + goto LABEL_8; + } +LABEL_13: + result = 2; +LABEL_15: + *a5 = v9; + *a8 = v15[0]; + return result; +} + +//----- (0046D030) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + unsigned int a5) +{ + std::`anonymous namespace'::utf16_span(a5, a4, this[3], this[4]); + return 0; +} + +//----- (0046D060) -------------------------------------------------------- +_DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3) +{ + unsigned int v5; // [esp+8h] [ebp-30h] + std::__cow_string *v6[2]; // [esp+18h] [ebp-20h] BYREF + char v7; // [esp+20h] [ebp-18h] BYREF + + (*(void (__thiscall **)(std::__cow_string **, int, int))(*(_DWORD *)a2 + 16))(v6, a2, a3); + std::__cow_string::__cow_string(this, v6[0], (const char *)v6[1], v5); + if ( (char *)v6[0] != &v7 ) + operator delete(v6[0]); + return this; +} +// 46D090: variable 'v5' is possibly undefined + +//----- (0046D0C0) -------------------------------------------------------- +void **__thiscall std::_V2::error_category::_M_message(void **ecx0, std::_V2::error_category *this, int a3) +{ + void *v4; // ecx + int v6; // edx + unsigned int v7; // [esp+8h] [ebp-20h] + char v8[13]; // [esp+1Bh] [ebp-Dh] BYREF + + (*(void (__thiscall **)(char *, std::_V2::error_category *, int))(*(_DWORD *)this + 12))(&v8[1], this, a3); + std::__sso_string::__sso_string(ecx0, *(std::__sso_string **)&v8[1], *(const char **)(*(_DWORD *)&v8[1] - 12), v7); + v4 = (void *)(*(_DWORD *)&v8[1] - 12); + if ( *(_UNKNOWN **)&v8[1] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v6 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v8[1] - 4), 0xFFFFFFFF); + } + else + { + v6 = *(_DWORD *)(*(_DWORD *)&v8[1] - 4); + *(_DWORD *)(*(_DWORD *)&v8[1] - 4) = v6 - 1; + } + if ( v6 <= 0 ) + std::string::_Rep::_M_destroy(v4, (int)v8); + } + return ecx0; +} +// 46D0F1: variable 'v7' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0046D160) -------------------------------------------------------- +bool __userpurge std::_V2::error_category::equivalent@( + int a1@, + std::_V2::error_category *this, + const std::error_code *a3, + int a4) +{ + bool result; // al + + result = 0; + if ( *((_DWORD *)this + 1) == a1 ) + return *(_DWORD *)this == (_DWORD)a3; + return result; +} + +//----- (0046D180) -------------------------------------------------------- +int __thiscall std::_V2::error_category::equivalent(void *this, int a2, _DWORD *a3) +{ + int v3; // eax + int v4; // edx + int v5; // ecx + int v6; // edx + + v3 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)this + 20))(this, a2); + v5 = v4; + v6 = 0; + if ( a3[1] == v5 ) + LOBYTE(v6) = *a3 == v3; + return v6; +} +// 46D194: variable 'v4' is possibly undefined + +//----- (0046D1C0) -------------------------------------------------------- +std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition( + std::_V2::error_category *this, + int a2) +{ + return this; +} + +//----- (0046D1D0) -------------------------------------------------------- +BOOL __thiscall std::map::count(_DWORD *this, int a2) +{ + _DWORD *v2; // esi + _DWORD *v3; // edi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + v3 = v2; + return v2 != v3; +} + +//----- (0046D234) -------------------------------------------------------- +_DWORD *__thiscall std::map>::at(_DWORD *this, int a2) +{ + _DWORD *v2; // edi + _DWORD *v3; // esi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 == v3 || (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + std::__throw_out_of_range((std::out_of_range *)"map::at"); + return v3 + 10; +} + +//----- (0046D2A0) -------------------------------------------------------- +BOOL __thiscall std::map::count(_DWORD *this, int a2) +{ + _DWORD *v2; // esi + _DWORD *v3; // edi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + v3 = v2; + return v2 != v3; +} + +//----- (0046D310) -------------------------------------------------------- +char *__thiscall std::ctype::do_tolower(_DWORD *this, char *a2, char *a3) +{ + char *v3; // ebx + int (__thiscall *v5)(_DWORD *, int); // eax + int v7; // [esp+0h] [ebp-1Ch] + + v3 = a2; + if ( a2 < a3 ) + { + do + { + while ( 1 ) + { + v5 = *(int (__thiscall **)(_DWORD *, int))(*this + 16); + v7 = *v3; + if ( v5 != std::ctype::do_tolower ) + break; + *v3++ = std::ctype::do_tolower(this, v7); + if ( a3 == v3 ) + return a3; + } + *v3++ = v5(this, v7); + } + while ( a3 != v3 ); + } + return a3; +} + +//----- (0046D370) -------------------------------------------------------- +int __thiscall std::ctype::do_tolower(_DWORD *this, int a2) +{ + int v2; // edx + + v2 = a2 + 32; + if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 1) == 0 ) + return a2; + return v2; +} + +//----- (0046D390) -------------------------------------------------------- +char *__thiscall std::ctype::do_toupper(_DWORD *this, char *a2, char *a3) +{ + char *v3; // ebx + int (__thiscall *v5)(_DWORD *, int); // eax + int v7; // [esp+0h] [ebp-1Ch] + + v3 = a2; + if ( a2 < a3 ) + { + do + { + while ( 1 ) + { + v5 = *(int (__thiscall **)(_DWORD *, int))(*this + 8); + v7 = *v3; + if ( v5 != std::ctype::do_toupper ) + break; + *v3++ = std::ctype::do_toupper(this, v7); + if ( a3 == v3 ) + return a3; + } + *v3++ = v5(this, v7); + } + while ( a3 != v3 ); + } + return a3; +} + +//----- (0046D3F0) -------------------------------------------------------- +int __thiscall std::ctype::do_toupper(_DWORD *this, int a2) +{ + int v2; // edx + + v2 = a2 - 32; + if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 2) == 0 ) + return a2; + return v2; +} + +//----- (0046D410) -------------------------------------------------------- +int __fastcall std::ctype::_M_widen_init(int a1) +{ + int i; // eax + char *Buf2; // edx + void (__thiscall *v4)(int, _DWORD *, char *, int); // eax + int result; // eax + char *v6; // [esp+1Ch] [ebp-120h] + _DWORD Buf1[64]; // [esp+20h] [ebp-11Ch] BYREF + char v8[28]; // [esp+120h] [ebp-1Ch] BYREF + + for ( i = 0; i != 256; ++i ) + *((_BYTE *)Buf1 + i) = i; + Buf2 = (char *)(a1 + 29); + v4 = *(void (__thiscall **)(int, _DWORD *, char *, int))(*(_DWORD *)a1 + 28); + if ( (char *)v4 == (char *)std::ctype::do_widen ) + { + *(_DWORD *)(a1 + 29) = Buf1[0]; + *(_DWORD *)(a1 + 281) = Buf1[63]; + qmemcpy( + (void *)((a1 + 33) & 0xFFFFFFFC), + (const void *)((char *)Buf1 - &Buf2[-((a1 + 33) & 0xFFFFFFFC)]), + 4 * ((unsigned int)&Buf2[-((a1 + 33) & 0xFFFFFFFC) + 256] >> 2)); + } + else + { + v6 = (char *)(a1 + 29); + v4(a1, Buf1, v8, a1 + 29); + Buf2 = v6; + } + *(_BYTE *)(a1 + 28) = 1; + result = memcmp(Buf1, Buf2, 0x100u); + if ( result ) + *(_BYTE *)(a1 + 28) = 2; + return result; +} +// 46D410: using guessed type char var_1C[28]; + +//----- (0046D4C0) -------------------------------------------------------- +int __fastcall std::ctype::_M_narrow_init(int a1) +{ + int i; // eax + char *Buf2; // edx + void (__thiscall *v4)(int, _DWORD *, char *, _DWORD, int); // eax + int result; // eax + int (__thiscall *v6)(int, _DWORD *, char *, int, char *); // eax + char *v7; // [esp+1Ch] [ebp-130h] + char v8; // [esp+2Fh] [ebp-11Dh] BYREF + _DWORD Buf1[64]; // [esp+30h] [ebp-11Ch] BYREF + char v10[28]; // [esp+130h] [ebp-1Ch] BYREF + + for ( i = 0; i != 256; ++i ) + *((_BYTE *)Buf1 + i) = i; + Buf2 = (char *)(a1 + 285); + v4 = *(void (__thiscall **)(int, _DWORD *, char *, _DWORD, int))(*(_DWORD *)a1 + 36); + if ( (char *)v4 == (char *)std::ctype::do_narrow ) + { + *(_DWORD *)(a1 + 285) = Buf1[0]; + *(_DWORD *)(a1 + 537) = Buf1[63]; + qmemcpy( + (void *)((a1 + 289) & 0xFFFFFFFC), + (const void *)((char *)Buf1 - &Buf2[-((a1 + 289) & 0xFFFFFFFC)]), + 4 * ((unsigned int)&Buf2[-((a1 + 289) & 0xFFFFFFFC) + 256] >> 2)); + } + else + { + v7 = (char *)(a1 + 285); + v4(a1, Buf1, v10, 0, a1 + 285); + Buf2 = v7; + } + *(_BYTE *)(a1 + 541) = 1; + result = memcmp(Buf1, Buf2, 0x100u); + if ( result + || ((v6 = *(int (__thiscall **)(int, _DWORD *, char *, int, char *))(*(_DWORD *)a1 + 36), + (char *)v6 != (char *)std::ctype::do_narrow) + ? (result = v6(a1, Buf1, (char *)Buf1 + 1, 1, &v8)) + : (result = LOBYTE(Buf1[0]), v8 = Buf1[0]), + v8 == 1) ) + { + *(_BYTE *)(a1 + 541) = 2; + } + return result; +} +// 46D4C0: using guessed type char var_1C[28]; + +//----- (0046D5D0) -------------------------------------------------------- +_BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *a3, void *a4) +{ + char v4; // al + _BYTE *(__stdcall *v5)(_BYTE *, _BYTE *, void *); // eax + + v4 = this[28]; + if ( v4 == 1 ) + goto LABEL_4; + if ( v4 ) + { + v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); + if ( v5 == std::ctype::do_widen ) + goto LABEL_4; + return v5(Src, a3, a4); + } + std::ctype::_M_widen_init((int)this); + v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); + if ( v5 != std::ctype::do_widen ) + return v5(Src, a3, a4); +LABEL_4: + if ( Src == a3 ) + return Src; + memcpy(a4, Src, a3 - Src); + return a3; +} + +//----- (0046D660) -------------------------------------------------------- +_BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3) +{ + if ( a2 != Src ) + memcpy(a3, Src, a2 - Src); + return a2; +} + +//----- (0046D6A0) -------------------------------------------------------- +int __stdcall std::ctype::do_widen(unsigned __int8 a1) +{ + return a1; +} + +//----- (0046D6B0) -------------------------------------------------------- +_BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4) +{ + if ( a2 != Src ) + memcpy(a4, Src, a2 - Src); + return a2; +} + +//----- (0046D6F0) -------------------------------------------------------- +int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2) +{ + return a1; +} + +//----- (0046D700) -------------------------------------------------------- +unsigned __int16 *__thiscall std::ctype::do_scan_is( + void *this, + unsigned __int16 a2, + unsigned __int16 *a3, + unsigned int a4) +{ + unsigned __int16 *i; // ebx + + for ( i = a3; a4 > (unsigned int)i; ++i ) + { + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, *i) ) + break; + } + return i; +} + +//----- (0046D750) -------------------------------------------------------- +unsigned int __stdcall std::ctype::do_tolower(wint_t *a1, unsigned int a2) +{ + wint_t *v2; // ebx + wint_t C; // ax + + v2 = a1; + if ( (unsigned int)a1 < a2 ) + { + do + { + C = *v2++; + *(v2 - 1) = towlower(C); + } + while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); + } + return a2; +} + +//----- (0046D7A0) -------------------------------------------------------- +wint_t __stdcall std::ctype::do_tolower(wint_t C) +{ + return towlower(C); +} + +//----- (0046D7C0) -------------------------------------------------------- +unsigned int __stdcall std::ctype::do_toupper(wint_t *a1, unsigned int a2) +{ + wint_t *v2; // ebx + wint_t C; // ax + + v2 = a1; + if ( (unsigned int)a1 < a2 ) + { + do + { + C = *v2++; + *(v2 - 1) = towupper(C); + } + while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); + } + return a2; +} + +//----- (0046D810) -------------------------------------------------------- +wint_t __stdcall std::ctype::do_toupper(wint_t C) +{ + return towupper(C); +} + +//----- (0046D830) -------------------------------------------------------- +unsigned __int16 *__thiscall std::ctype::do_scan_not( + void *this, + unsigned __int16 a2, + unsigned __int16 *a3, + unsigned int a4) +{ + unsigned __int16 *i; // ebx + + for ( i = a3; a4 > (unsigned int)i; ++i ) + { + if ( !(*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, *i) ) + break; + } + return i; +} + +//----- (0046D880) -------------------------------------------------------- +wctype_t __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1) +{ + wctype_t result; // ax + + if ( a1 > 0x40u ) + { + switch ( a1 ) + { + case 0x200u: + return wctype("punct"); + case 0x20Cu: + return wctype("graph"); + case 0x100u: + return wctype("cntrl"); + case 0x400u: + return wctype("blank"); + default: + return 0; + } + } + else + { + result = 0; + if ( a1 ) + { + switch ( a1 ) + { + case 1u: + result = wctype("upper"); + break; + case 2u: + result = wctype("lower"); + break; + case 4u: + result = wctype("alpha"); + break; + case 8u: + result = wctype("digit"); + break; + case 0xCu: + result = wctype("alnum"); + break; + case 0x10u: + result = wctype("xdigit"); + break; + case 0x20u: + result = wctype("space"); + break; + case 0x40u: + result = wctype("print"); + break; + default: + return 0; + } + } + } + return result; +} + +//----- (0046D9A0) -------------------------------------------------------- +unsigned int __thiscall std::ctype::do_is(char *this, wint_t *a2, unsigned int a3, _WORD *a4) +{ + wint_t *v4; // ebx + _WORD *v5; // edi + _WORD *v6; // ebp + __int16 v7; // si + _WORD *v8; // eax + unsigned int v10; // [esp+18h] [ebp-24h] + _WORD *v11; // [esp+1Ch] [ebp-20h] + + v4 = a2; + if ( (unsigned int)a2 < a3 ) + { + v5 = this + 686; + v10 = (unsigned int)&a4[((a3 - 1 - (unsigned int)a2) >> 1) + 1]; + v11 = this + 654; + do + { + v6 = v11; + v7 = 0; + do + { + if ( iswctype(*v4, v6[16]) ) + v7 |= *v6; + ++v6; + } + while ( v6 != v5 ); + v8 = a4; + ++v4; + ++a4; + *v8 = v7; + } + while ( a4 != (_WORD *)v10 ); + } + return a3; +} + +//----- (0046DA40) -------------------------------------------------------- +int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16 a2, wint_t C) +{ + _WORD *v3; // esi + _WORD *v4; // ebx + + v3 = this + 343; + v4 = this + 327; + do + { + if ( (a2 & *v4) != 0 && iswctype(C, v4[16]) ) + return 1; + ++v4; + } + while ( v4 != v3 ); + return 0; +} + +//----- (0046DAA0) -------------------------------------------------------- +unsigned __int8 *__thiscall std::ctype::do_widen( + _WORD *this, + unsigned __int8 *a2, + unsigned __int8 *a3, + int a4) +{ + unsigned __int8 *v4; // eax + int v6; // ebx + + v4 = a2; + if ( a2 < a3 ) + { + do + { + v6 = *v4++; + a4 += 2; + *(_WORD *)(a4 - 2) = this[v6 + 71]; + } + while ( a3 != v4 ); + } + return a3; +} + +//----- (0046DAE0) -------------------------------------------------------- +int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2) +{ + return this[a2 + 71]; +} + +//----- (0046DAF0) -------------------------------------------------------- +unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, char *a5) +{ + wint_t *v5; // ebx + char *v6; // esi + unsigned int v8; // ebp + int v9; // ecx + int v10; // eax + char v11; // cl + int v13; // eax + char v14; // dl + + v5 = a2; + v6 = a5; + if ( this[12] ) + { + if ( (unsigned int)a2 < a3 ) + { + v8 = (unsigned int)&a2[((a3 - 1 - (unsigned int)a2) >> 1) + 1]; + do + { + while ( 1 ) + { + v9 = *v5; + if ( (unsigned __int16)v9 > 0x7Fu ) + break; + ++v5; + *v6++ = this[v9 + 13]; + if ( (wint_t *)v8 == v5 ) + return a3; + } + v10 = wctob(*v5); + v11 = a4; + if ( v10 != -1 ) + v11 = v10; + ++v5; + *v6++ = v11; + } + while ( (wint_t *)v8 != v5 ); + } + return a3; + } + if ( (unsigned int)a2 >= a3 ) + return a3; + do + { + v13 = wctob(*v5); + v14 = a4; + if ( v13 != -1 ) + v14 = v13; + *v6++ = v14; + ++v5; + } + while ( v6 != &a5[((a3 - 1 - (unsigned int)a2) >> 1) + 1] ); + return a3; +} + +//----- (0046DBD0) -------------------------------------------------------- +int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3) +{ + int v3; // edx + int result; // eax + + if ( WCh <= 0x7Fu && this[12] ) + return (unsigned __int8)this[WCh + 13]; + v3 = wctob(WCh); + result = a3; + if ( v3 != -1 ) + return v3; + return result; +} + +//----- (0046DC20) -------------------------------------------------------- +int __fastcall std::locale::id::_M_id(int *a1) +{ + int v1; // eax + + v1 = *a1; + if ( !*a1 ) + { + if ( _CRT_MT ) + v1 = _InterlockedIncrement(&std::locale::id::_S_refcount); + else + v1 = ++std::locale::id::_S_refcount; + *a1 = v1; + } + return v1 - 1; +} +// 51658C: using guessed type int std::locale::id::_S_refcount; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0046DC60) -------------------------------------------------------- +int __thiscall std::locale::name[abi:cxx11](int this, int *a2) +{ + int v3; // eax + int v4; // edi + unsigned int v5; // esi + int v6; // eax + unsigned int v7; // eax + size_t v8; // esi + int v9; // eax + unsigned int v10; // edi + unsigned int v11; // edx + int v12; // eax + unsigned int v13; // eax + int i; // esi + size_t v15; // edi + int v16; // eax + unsigned int v17; // edx + unsigned int v18; // eax + size_t v19; // edi + int v20; // eax + unsigned int v21; // edx + unsigned int v22; // eax + size_t v24; // eax + const char *v25; // [esp+0h] [ebp-38h] + char *Str; // [esp+14h] [ebp-24h] + int v27; // [esp+18h] [ebp-20h] + char *Str1; // [esp+1Ch] [ebp-1Ch] + + *(_DWORD *)this = this + 8; + v27 = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = *a2; + *(_DWORD *)(this + 4) = 0; + v4 = *(_DWORD *)(v3 + 16); + Str = *(char **)v4; + if ( !*(_DWORD *)v4 ) + { + std::string::_M_replace_aux((_DWORD *)this, 0, 0, 1u, 42); + return this; + } + if ( !*(_DWORD *)(v4 + 4) ) + { +LABEL_26: + v24 = strlen(Str); + std::string::_M_replace((unsigned int *)this, 0, 0, Str, v24); + return this; + } + v5 = 0; + Str1 = *(char **)v4; + while ( 1 ) + { + ++v5; + v25 = Str1; + Str1 = *(char **)(v4 + 4 * v5); + v6 = strcmp(v25, Str1); + if ( v5 > 4 ) + break; + if ( v6 ) + goto LABEL_6; + } + if ( !v6 ) + goto LABEL_26; +LABEL_6: + std::string::reserve((_DWORD *)this, 0x80u); + v7 = strlen(*std::locale::_S_categories); + if ( v7 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, *std::locale::_S_categories, v7); + v8 = *(_DWORD *)(this + 4); + v9 = *(_DWORD *)this; + v10 = v8 + 1; + if ( v27 == *(_DWORD *)this ) + v11 = 15; + else + v11 = *(_DWORD *)(this + 8); + if ( v10 > v11 ) + { + std::string::_M_mutate(this, v8, 0, 0, 1u); + v9 = *(_DWORD *)this; + } + *(_BYTE *)(v9 + v8) = 61; + v12 = *(_DWORD *)this; + *(_DWORD *)(this + 4) = v10; + *(_BYTE *)(v12 + v8 + 1) = 0; + v13 = strlen(**(const char ***)(*a2 + 16)); + if ( v13 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, **(_BYTE ***)(*a2 + 16), v13); + for ( i = 1; i != 6; ++i ) + { + v15 = *(_DWORD *)(this + 4); + v16 = *(_DWORD *)this; + if ( v27 == *(_DWORD *)this ) + v17 = 15; + else + v17 = *(_DWORD *)(this + 8); + if ( v15 + 1 > v17 ) + { + std::string::_M_mutate(this, v15, 0, 0, 1u); + v16 = *(_DWORD *)this; + } + *(_BYTE *)(v16 + v15) = 59; + *(_DWORD *)(this + 4) = v15 + 1; + *(_BYTE *)(*(_DWORD *)this + v15 + 1) = 0; + v18 = strlen(std::locale::_S_categories[i]); + if ( v18 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, std::locale::_S_categories[i], v18); + v19 = *(_DWORD *)(this + 4); + v20 = *(_DWORD *)this; + if ( v27 == *(_DWORD *)this ) + v21 = 15; + else + v21 = *(_DWORD *)(this + 8); + if ( v19 + 1 > v21 ) + { + std::string::_M_mutate(this, v19, 0, 0, 1u); + v20 = *(_DWORD *)this; + } + *(_BYTE *)(v20 + v19) = 61; + *(_DWORD *)(this + 4) = v19 + 1; + *(_BYTE *)(*(_DWORD *)this + v19 + 1) = 0; + v22 = strlen(*(const char **)(*(_DWORD *)(*a2 + 16) + i * 4)); + if ( v22 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, *(_BYTE **)(*(_DWORD *)(*a2 + 16) + i * 4), v22); + } + return this; +} +// 533574: using guessed type char **std::locale::_S_categories; + +//----- (0046DFD0) -------------------------------------------------------- +unsigned int **__thiscall std::locale::name(unsigned int **ecx0, std::locale *this) +{ + int v3; // edi + unsigned int v4; // esi + int v5; // eax + size_t v6; // eax + int v7; // edi + unsigned int *v8; // eax + size_t v9; // eax + int i; // esi + char *v11; // edx + unsigned int v12; // edi + unsigned int *v13; // eax + int v14; // edx + size_t v15; // eax + char *v16; // edx + unsigned int v17; // edi + unsigned int *v18; // eax + int v19; // edx + size_t v20; // eax + size_t v22; // eax + const char *v23; // [esp+0h] [ebp-48h] + unsigned int v24; // [esp+4h] [ebp-44h] + unsigned int v25; // [esp+4h] [ebp-44h] + unsigned int v26; // [esp+4h] [ebp-44h] + unsigned int v27; // [esp+4h] [ebp-44h] + unsigned int v28; // [esp+8h] [ebp-40h] + unsigned int v29; // [esp+8h] [ebp-40h] + unsigned int v30; // [esp+8h] [ebp-40h] + unsigned int v31; // [esp+8h] [ebp-40h] + char v32; // [esp+10h] [ebp-38h] + char *Str; // [esp+18h] [ebp-30h] + char *Str1; // [esp+1Ch] [ebp-2Ch] + char *Str1a; // [esp+1Ch] [ebp-2Ch] + char *Str1b; // [esp+1Ch] [ebp-2Ch] + + *ecx0 = (unsigned int *)&unk_51641C; + v3 = *(_DWORD *)(*(_DWORD *)this + 16); + Str = *(char **)v3; + if ( *(_DWORD *)v3 ) + { + if ( *(_DWORD *)(v3 + 4) ) + { + v4 = 0; + Str1 = *(char **)v3; + while ( 1 ) + { + ++v4; + v23 = Str1; + Str1 = *(char **)(v3 + 4 * v4); + v5 = strcmp(v23, Str1); + if ( v4 > 4 ) + break; + if ( v5 ) + goto LABEL_6; + } + if ( !v5 ) + goto LABEL_25; +LABEL_6: + std::string::reserve(ecx0, (std::string *)0x80, v24); + v6 = strlen(*std::locale::_S_categories); + std::string::append(ecx0, (std::string *)*std::locale::_S_categories, v6, v28); + v7 = *(*ecx0 - 3); + if ( v7 + 1 > *(*ecx0 - 2) || (int)*(*ecx0 - 1) > 0 ) + std::string::reserve(ecx0, (std::string *)(v7 + 1), v25); + *((_BYTE *)*ecx0 + *(*ecx0 - 3)) = 61; + v8 = *ecx0; + if ( *ecx0 != (unsigned int *)&unk_51641C ) + { + *(v8 - 1) = 0; + *(v8 - 3) = v7 + 1; + *((_BYTE *)v8 + v7 + 1) = 0; + } + v9 = strlen(**(const char ***)(*(_DWORD *)this + 16)); + std::string::append(ecx0, **(std::string ***)(*(_DWORD *)this + 16), v9, v29); + for ( i = 1; i != 6; ++i ) + { + v11 = (char *)*(*ecx0 - 3); + Str1a = v11; + v12 = (unsigned int)(v11 + 1); + if ( (unsigned int)(v11 + 1) > *(*ecx0 - 2) || (int)*(*ecx0 - 1) > 0 ) + std::string::reserve(ecx0, (std::string *)(v11 + 1), v26); + *((_BYTE *)*ecx0 + *(*ecx0 - 3)) = 59; + v13 = *ecx0; + v14 = (int)(*ecx0 - 3); + if ( *ecx0 != (unsigned int *)&unk_51641C ) + { + *(v13 - 1) = 0; + *(v13 - 3) = v12; + Str1a[v14 + 13] = 0; + } + v15 = strlen(std::locale::_S_categories[i]); + std::string::append(ecx0, (std::string *)std::locale::_S_categories[i], v15, v30); + v16 = (char *)*(*ecx0 - 3); + Str1b = v16; + v17 = (unsigned int)(v16 + 1); + if ( (unsigned int)(v16 + 1) > *(*ecx0 - 2) || (int)*(*ecx0 - 1) > 0 ) + std::string::reserve(ecx0, (std::string *)(v16 + 1), v27); + *((_BYTE *)*ecx0 + *(*ecx0 - 3)) = 61; + v18 = *ecx0; + v19 = (int)(*ecx0 - 3); + if ( *ecx0 != (unsigned int *)&unk_51641C ) + { + *(v18 - 1) = 0; + *(v18 - 3) = v17; + Str1b[v19 + 13] = 0; + } + v20 = strlen(*(const char **)(*(_DWORD *)(*(_DWORD *)this + 16) + i * 4)); + std::string::append(ecx0, *(std::string **)(*(_DWORD *)(*(_DWORD *)this + 16) + i * 4), v20, v31); + } + return ecx0; + } + else + { +LABEL_25: + v22 = strlen(Str); + std::string::assign((volatile signed __int32 **)ecx0, (std::string *)Str, v22, v28); + return ecx0; + } + } + else + { + std::string::_M_replace_aux( + (volatile signed __int32 **)ecx0, + 0, + std::string::_Rep::_S_empty_rep_storage, + 1u, + 42, + v32); + return ecx0; + } +} +// 46E03E: variable 'v24' is possibly undefined +// 46E05E: variable 'v28' is possibly undefined +// 46E07F: variable 'v25' is possibly undefined +// 46E0B8: variable 'v29' is possibly undefined +// 46E0E1: variable 'v26' is possibly undefined +// 46E11B: variable 'v30' is possibly undefined +// 46E13F: variable 'v27' is possibly undefined +// 46E17C: variable 'v31' is possibly undefined +// 46E230: variable 'v32' is possibly undefined +// 533574: using guessed type char **std::locale::_S_categories; + +//----- (0046E270) -------------------------------------------------------- +_DWORD *__userpurge std::locale::facet::_M_cow_shim@( + volatile signed __int32 *a1@, + std::locale::facet *this, + const std::locale::id *a3) +{ + void *v4; // eax + _DWORD *v5; // esi + int v7; // eax + _WORD *v8; // eax + int v9; // edi + _DWORD *v10; // eax + int v11; // ecx + _DWORD *v12; // eax + _DWORD *v13; // eax + int v14; // eax + _DWORD *v15; // eax + int c_locale; // eax + int v17; // edx + _DWORD *v18; // eax + _DWORD *v19; // eax + _DWORD *v20; // eax + int v21; // edi + _DWORD *v22; // eax + int v23; // eax + _WORD *v24; // eax + int v25; // edi + _DWORD *v26; // eax + int v27; // edx + int v28; // eax + _DWORD *v29; // eax + int v30; // edi + _DWORD *v31; // eax + int v32; // eax + _DWORD *v33; // eax + _DWORD *v34; // eax + _DWORD *v35; // eax + int v36; // edi + _DWORD *v37; // eax + int v38; // edi + _DWORD *v39; // eax + int v40; // ecx + _DWORD *v41; // eax + int v42; // edi + _DWORD *v43; // eax + int v44; // edx + int v45; // [esp+0h] [ebp-28h] + int v46; // [esp+0h] [ebp-28h] + int v47; // [esp+0h] [ebp-28h] + int v48; // [esp+0h] [ebp-28h] + int v49; // [esp+0h] [ebp-28h] + int v50; // [esp+0h] [ebp-28h] + void (__cdecl *v51)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v52)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v53)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v54)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v55)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v56)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v57)(void *); // [esp+4h] [ebp-24h] + + v4 = __dynamic_cast( + (const void *)a1, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, + -2); + if ( v4 ) + return *(_DWORD **)v4; + if ( this == (std::locale::facet *)&std::numpunct::id ) + { + v8 = operator new((struct type_info *)0x68, v51); + v8[18] = 0; + v9 = (int)v8; + *((_DWORD *)v8 + 1) = 0; + *(_DWORD *)v8 = &off_538BD4; + *((_DWORD *)v8 + 2) = 0; + *((_DWORD *)v8 + 3) = 0; + *((_BYTE *)v8 + 16) = 0; + *((_DWORD *)v8 + 5) = 0; + *((_DWORD *)v8 + 6) = 0; + *((_DWORD *)v8 + 7) = 0; + *((_DWORD *)v8 + 8) = 0; + *((_BYTE *)v8 + 100) = 0; + v10 = operator new((struct type_info *)0x14, v52); + v10[1] = 0; + v5 = v10; + *v10 = &off_5393A0; + v10[2] = v9; + std::numpunct::_M_initialize_numpunct(v10, 0); + v11 = _CRT_MT; + v5[3] = a1; + if ( v11 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537A90; + v5[4] = v9; + LOBYTE(v45) = 0; + std::__facet_shims::__numpunct_fill_cache(v45, (int *)a1, v9); + } + else if ( this == (std::locale::facet *)&std::collate::id ) + { + v15 = operator new((struct type_info *)0x10, v51); + v15[1] = 0; + v5 = v15; + *v15 = &off_539234; + c_locale = std::locale::facet::_S_get_c_locale(); + v17 = _CRT_MT; + v5[2] = c_locale; + v5[3] = a1; + if ( v17 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_5379B0; + } + else if ( this == (std::locale::facet *)&std::time_get>::id ) + { + v12 = operator new((struct type_info *)0xC, v51); + v12[1] = 0; + v5 = v12; + *v12 = &off_5393E8; + v12[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v12 = &off_537B20; + } + else if ( this == (std::locale::facet *)&std::money_get>::id ) + { + v18 = operator new((struct type_info *)0xC, v51); + v18[1] = 0; + v5 = v18; + *v18 = &off_5394A8; + v18[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v18 = &off_537BC8; + } + else if ( this == (std::locale::facet *)&std::money_put>::id ) + { + v19 = operator new((struct type_info *)0xC, v51); + v19[1] = 0; + v5 = v19; + *v19 = &off_5394D8; + v19[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v19 = &off_537C28; + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v20 = operator new((struct type_info *)0x44, v51); + *v20 = &off_538D1C; + v21 = (int)v20; + v20[1] = 0; + v20[2] = 0; + v20[3] = 0; + *((_WORD *)v20 + 8) = 0; + *((_BYTE *)v20 + 18) = 0; + v20[5] = 0; + v20[6] = 0; + v20[7] = 0; + v20[8] = 0; + v20[9] = 0; + v20[10] = 0; + v20[11] = 0; + v20[12] = 0; + v20[13] = 0; + *((_BYTE *)v20 + 67) = 0; + v22 = operator new((struct type_info *)0x14, v53); + v22[1] = 0; + v5 = v22; + *v22 = &off_538514; + v22[2] = v21; + std::moneypunct::_M_initialize_moneypunct(v22, 0, 0); + v23 = _CRT_MT; + v5[3] = a1; + if ( v23 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537CF0; + v5[4] = v21; + LOBYTE(v46) = 0; + std::__facet_shims::__moneypunct_fill_cache(v46, (int *)a1, v21); + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v24 = operator new((struct type_info *)0x44, v51); + v24[8] = 0; + v25 = (int)v24; + *(_DWORD *)v24 = &off_538D0C; + *((_DWORD *)v24 + 1) = 0; + *((_DWORD *)v24 + 2) = 0; + *((_DWORD *)v24 + 3) = 0; + *((_BYTE *)v24 + 18) = 0; + *((_DWORD *)v24 + 5) = 0; + *((_DWORD *)v24 + 6) = 0; + *((_DWORD *)v24 + 7) = 0; + *((_DWORD *)v24 + 8) = 0; + *((_DWORD *)v24 + 9) = 0; + *((_DWORD *)v24 + 10) = 0; + *((_DWORD *)v24 + 11) = 0; + *((_DWORD *)v24 + 12) = 0; + *((_DWORD *)v24 + 13) = 0; + *((_BYTE *)v24 + 67) = 0; + v26 = operator new((struct type_info *)0x14, v54); + v26[1] = 0; + v5 = v26; + *v26 = &off_5384E0; + v26[2] = v25; + std::moneypunct::_M_initialize_moneypunct(v26, 0, 0); + v27 = _CRT_MT; + v5[3] = a1; + if ( v27 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537C88; + v5[4] = v25; + LOBYTE(v47) = 0; + std::__facet_shims::__moneypunct_fill_cache(v47, (int *)a1, v25); + } + else if ( this == (std::locale::facet *)&std::messages::id ) + { + v5 = operator new((struct type_info *)0x14, v51); + std::messages::messages(v5, 0); + v28 = _CRT_MT; + v5[4] = a1; + if ( v28 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537A20; + } + else if ( this == (std::locale::facet *)&std::numpunct::id ) + { + v29 = operator new((struct type_info *)0xA8, v51); + v29[1] = 0; + v30 = (int)v29; + *v29 = &off_538BE4; + v29[2] = 0; + v29[3] = 0; + *((_BYTE *)v29 + 16) = 0; + v29[5] = 0; + v29[6] = 0; + v29[7] = 0; + v29[8] = 0; + v29[9] = 0; + *((_BYTE *)v29 + 164) = 0; + v31 = operator new((struct type_info *)0x14, v55); + v31[1] = 0; + v5 = v31; + *v31 = &off_5393C4; + v31[2] = v30; + std::numpunct::_M_initialize_numpunct(v31, 0); + v32 = _CRT_MT; + v5[3] = a1; + if ( v32 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537AD8; + v5[4] = v30; + LOBYTE(v48) = 0; + std::__facet_shims::__numpunct_fill_cache(v48, (int *)a1, v30); + } + else if ( this == (std::locale::facet *)&std::collate::id ) + { + v13 = operator new((struct type_info *)0x10, v51); + v13[1] = 0; + v5 = v13; + *v13 = &off_539250; + v13[2] = std::locale::facet::_S_get_c_locale(); + v14 = _CRT_MT; + v5[3] = a1; + if ( v14 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_5379E8; + } + else if ( this == (std::locale::facet *)&std::time_get>::id ) + { + v33 = operator new((struct type_info *)0xC, v51); + v33[1] = 0; + v5 = v33; + *v33 = &off_539410; + v33[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v33 = &off_537B74; + } + else if ( this == (std::locale::facet *)&std::money_get>::id ) + { + v34 = operator new((struct type_info *)0xC, v51); + v34[1] = 0; + v5 = v34; + *v34 = &off_5394C0; + v34[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v34 = &off_537BF8; + } + else if ( this == (std::locale::facet *)std::money_put>::id ) + { + v35 = operator new((struct type_info *)0xC, v51); + v36 = _CRT_MT; + v35[1] = 0; + v5 = v35; + *v35 = &off_5394F0; + v35[2] = a1; + if ( v36 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v35 = &off_537C58; + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v37 = operator new((struct type_info *)0x54, v51); + v37[1] = 0; + v38 = (int)v37; + *v37 = &off_538D3C; + v37[2] = 0; + v37[3] = 0; + *((_BYTE *)v37 + 16) = 0; + *(_DWORD *)((char *)v37 + 18) = 0; + v37[6] = 0; + v37[7] = 0; + v37[8] = 0; + v37[9] = 0; + v37[10] = 0; + v37[11] = 0; + v37[12] = 0; + v37[13] = 0; + v37[14] = 0; + *((_BYTE *)v37 + 82) = 0; + v39 = operator new((struct type_info *)0x14, v56); + v39[1] = 0; + v5 = v39; + *v39 = &off_53857C; + v39[2] = v38; + std::moneypunct::_M_initialize_moneypunct(v39, 0, 0); + v40 = _CRT_MT; + v5[3] = a1; + if ( v40 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537DC0; + v5[4] = v38; + LOBYTE(v49) = 0; + std::__facet_shims::__moneypunct_fill_cache(v49, (int *)a1, v38); + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v41 = operator new((struct type_info *)0x54, v51); + v41[1] = 0; + v42 = (int)v41; + *v41 = &off_538D2C; + v41[2] = 0; + v41[3] = 0; + *((_BYTE *)v41 + 16) = 0; + *(_DWORD *)((char *)v41 + 18) = 0; + v41[6] = 0; + v41[7] = 0; + v41[8] = 0; + v41[9] = 0; + v41[10] = 0; + v41[11] = 0; + v41[12] = 0; + v41[13] = 0; + v41[14] = 0; + *((_BYTE *)v41 + 82) = 0; + v43 = operator new((struct type_info *)0x14, v57); + v43[1] = 0; + v5 = v43; + *v43 = &off_538548; + v43[2] = v42; + std::moneypunct::_M_initialize_moneypunct(v43, 0, 0); + v44 = _CRT_MT; + v5[3] = a1; + if ( v44 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537D58; + v5[4] = v42; + LOBYTE(v50) = 0; + std::__facet_shims::__moneypunct_fill_cache(v50, (int *)a1, v42); + } + else + { + if ( this != (std::locale::facet *)&std::messages::id ) + std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); + v5 = operator new((struct type_info *)0x14, v51); + std::messages::messages(v5, 0); + v7 = _CRT_MT; + v5[4] = a1; + if ( v7 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537A58; + } + return v5; +} +// 46E377: variable 'v51' is possibly undefined +// 46E40A: variable 'v52' is possibly undefined +// 46E458: variable 'v45' is possibly undefined +// 46E63D: variable 'v53' is possibly undefined +// 46E696: variable 'v46' is possibly undefined +// 46E71D: variable 'v54' is possibly undefined +// 46E777: variable 'v47' is possibly undefined +// 46E84E: variable 'v55' is possibly undefined +// 46E89F: variable 'v48' is possibly undefined +// 46EA12: variable 'v56' is possibly undefined +// 46EA6C: variable 'v49' is possibly undefined +// 46EAFE: variable 'v57' is possibly undefined +// 46EB54: variable 'v50' is possibly undefined +// 51642C: using guessed type int std::moneypunct::id; +// 516430: using guessed type int std::moneypunct::id; +// 516434: using guessed type int std::moneypunct::id; +// 516438: using guessed type int std::moneypunct::id; +// 516600: using guessed type int std::collate::id; +// 516604: using guessed type int std::collate::id; +// 516620: using guessed type int std::messages::id; +// 516624: using guessed type int std::messages::id; +// 516628: using guessed type int std::numpunct::id; +// 51662C: using guessed type int std::numpunct::id; +// 516630: using guessed type int std::time_get>::id; +// 516634: using guessed type int std::time_get>::id; +// 516640: using guessed type int std::money_get>::id; +// 516644: using guessed type int std::money_get>::id; +// 516648: using guessed type int std::money_put>::id; +// 51664C: using guessed type int std::money_put>::id[5]; +// 534108: using guessed type int *`typeinfo for'std::locale::facet::__shim; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5379B0: using guessed type int (*off_5379B0)(); +// 5379E8: using guessed type int (*off_5379E8)(); +// 537A20: using guessed type int (*off_537A20)(); +// 537A58: using guessed type int (*off_537A58)(); +// 537A90: using guessed type int (*off_537A90)(); +// 537AD8: using guessed type int (*off_537AD8)(); +// 537B20: using guessed type int (*off_537B20)(); +// 537B74: using guessed type int (*off_537B74)(); +// 537BC8: using guessed type int (*off_537BC8)(); +// 537BF8: using guessed type int (*off_537BF8)(); +// 537C28: using guessed type int (*off_537C28)(); +// 537C58: using guessed type int (*off_537C58)(); +// 537C88: using guessed type int (*off_537C88)(); +// 537CF0: using guessed type int (*off_537CF0)(); +// 537D58: using guessed type int (*off_537D58)(); +// 537DC0: using guessed type int (*off_537DC0)(); +// 5384E0: using guessed type int (*off_5384E0)(); +// 538514: using guessed type int (*off_538514)(); +// 538548: using guessed type int (*off_538548)(); +// 53857C: using guessed type int (*off_53857C)(); +// 538BD4: using guessed type int (*off_538BD4)(); +// 538BE4: using guessed type int (*off_538BE4)(); +// 538D0C: using guessed type int (*off_538D0C)(); +// 538D1C: using guessed type int (*off_538D1C)(); +// 538D2C: using guessed type int (*off_538D2C)(); +// 538D3C: using guessed type int (*off_538D3C)(); +// 539234: using guessed type int (*off_539234)(); +// 539250: using guessed type int (*off_539250)(); +// 5393A0: using guessed type int (*off_5393A0)(); +// 5393C4: using guessed type int (*off_5393C4)(); +// 5393E8: using guessed type int (*off_5393E8)(); +// 539410: using guessed type int (*off_539410)(); +// 5394A8: using guessed type int (*off_5394A8)(); +// 5394C0: using guessed type int (*off_5394C0)(); +// 5394D8: using guessed type int (*off_5394D8)(); +// 5394F0: using guessed type int (*off_5394F0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0046EC20) -------------------------------------------------------- +_DWORD *__userpurge std::locale::facet::_M_sso_shim@( + volatile signed __int32 *a1@, + std::locale::facet *this, + const std::locale::id *a3) +{ + void *v4; // eax + _DWORD *v5; // esi + int v7; // eax + _WORD *v8; // eax + int v9; // edi + _DWORD *v10; // eax + int v11; // ecx + _DWORD *v12; // eax + _DWORD *v13; // eax + int v14; // eax + _DWORD *v15; // eax + int c_locale; // eax + int v17; // edx + _DWORD *v18; // eax + _DWORD *v19; // eax + _DWORD *v20; // eax + int v21; // edi + _DWORD *v22; // eax + int v23; // eax + _WORD *v24; // eax + int v25; // edi + _DWORD *v26; // eax + int v27; // edx + int v28; // eax + _DWORD *v29; // eax + int v30; // edi + _DWORD *v31; // eax + int v32; // eax + _DWORD *v33; // eax + _DWORD *v34; // eax + _DWORD *v35; // eax + int v36; // edi + _DWORD *v37; // eax + int v38; // edi + _DWORD *v39; // eax + int v40; // ecx + _DWORD *v41; // eax + int v42; // edi + _DWORD *v43; // eax + int v44; // edx + int v45; // [esp+0h] [ebp-28h] + int v46; // [esp+0h] [ebp-28h] + int v47; // [esp+0h] [ebp-28h] + int v48; // [esp+0h] [ebp-28h] + int v49; // [esp+0h] [ebp-28h] + int v50; // [esp+0h] [ebp-28h] + void (__cdecl *v51)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v52)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v53)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v54)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v55)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v56)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v57)(void *); // [esp+4h] [ebp-24h] + + v4 = __dynamic_cast( + (const void *)a1, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, + -2); + if ( v4 ) + return *(_DWORD **)v4; + if ( this == (std::locale::facet *)&std::numpunct::id ) + { + v8 = operator new((struct type_info *)0x68, v51); + v8[18] = 0; + v9 = (int)v8; + *((_DWORD *)v8 + 1) = 0; + *(_DWORD *)v8 = &off_538BD4; + *((_DWORD *)v8 + 2) = 0; + *((_DWORD *)v8 + 3) = 0; + *((_BYTE *)v8 + 16) = 0; + *((_DWORD *)v8 + 5) = 0; + *((_DWORD *)v8 + 6) = 0; + *((_DWORD *)v8 + 7) = 0; + *((_DWORD *)v8 + 8) = 0; + *((_BYTE *)v8 + 100) = 0; + v10 = operator new((struct type_info *)0x14, v52); + v10[1] = 0; + v5 = v10; + *v10 = &off_538318; + v10[2] = v9; + std::numpunct::_M_initialize_numpunct(v10, 0); + v11 = _CRT_MT; + v5[3] = a1; + if ( v11 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537AB4; + v5[4] = v9; + LOBYTE(v45) = 0; + std::__facet_shims::__numpunct_fill_cache(v45, (int *)a1, v9); + } + else if ( this == (std::locale::facet *)&std::collate::id ) + { + v15 = operator new((struct type_info *)0x10, v51); + v15[1] = 0; + v5 = v15; + *v15 = &off_5382A8; + c_locale = std::locale::facet::_S_get_c_locale(); + v17 = _CRT_MT; + v5[2] = c_locale; + v5[3] = a1; + if ( v17 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_5379CC; + } + else if ( this == (std::locale::facet *)&std::time_get>::id ) + { + v12 = operator new((struct type_info *)0xC, v51); + v12[1] = 0; + v5 = v12; + *v12 = &off_538360; + v12[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v12 = &off_537B48; + } + else if ( this == (std::locale::facet *)&std::money_get>::id ) + { + v18 = operator new((struct type_info *)0xC, v51); + v18[1] = 0; + v5 = v18; + *v18 = &off_5383B8; + v18[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v18 = &off_537BE0; + } + else if ( this == (std::locale::facet *)&std::money_put>::id ) + { + v19 = operator new((struct type_info *)0xC, v51); + v19[1] = 0; + v5 = v19; + *v19 = &off_5383E8; + v19[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v19 = &off_537C40; + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v20 = operator new((struct type_info *)0x44, v51); + *v20 = &off_538D1C; + v21 = (int)v20; + v20[1] = 0; + v20[2] = 0; + v20[3] = 0; + *((_WORD *)v20 + 8) = 0; + *((_BYTE *)v20 + 18) = 0; + v20[5] = 0; + v20[6] = 0; + v20[7] = 0; + v20[8] = 0; + v20[9] = 0; + v20[10] = 0; + v20[11] = 0; + v20[12] = 0; + v20[13] = 0; + *((_BYTE *)v20 + 67) = 0; + v22 = operator new((struct type_info *)0x14, v53); + v22[1] = 0; + v5 = v22; + *v22 = &off_537E94; + v22[2] = v21; + std::moneypunct::_M_initialize_moneypunct(v22, 0, 0); + v23 = _CRT_MT; + v5[3] = a1; + if ( v23 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537D24; + v5[4] = v21; + LOBYTE(v46) = 0; + std::__facet_shims::__moneypunct_fill_cache(v46, (int *)a1, v21); + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v24 = operator new((struct type_info *)0x44, v51); + v24[8] = 0; + v25 = (int)v24; + *(_DWORD *)v24 = &off_538D0C; + *((_DWORD *)v24 + 1) = 0; + *((_DWORD *)v24 + 2) = 0; + *((_DWORD *)v24 + 3) = 0; + *((_BYTE *)v24 + 18) = 0; + *((_DWORD *)v24 + 5) = 0; + *((_DWORD *)v24 + 6) = 0; + *((_DWORD *)v24 + 7) = 0; + *((_DWORD *)v24 + 8) = 0; + *((_DWORD *)v24 + 9) = 0; + *((_DWORD *)v24 + 10) = 0; + *((_DWORD *)v24 + 11) = 0; + *((_DWORD *)v24 + 12) = 0; + *((_DWORD *)v24 + 13) = 0; + *((_BYTE *)v24 + 67) = 0; + v26 = operator new((struct type_info *)0x14, v54); + v26[1] = 0; + v5 = v26; + *v26 = &off_537E60; + v26[2] = v25; + std::moneypunct::_M_initialize_moneypunct(v26, 0, 0); + v27 = _CRT_MT; + v5[3] = a1; + if ( v27 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537CBC; + v5[4] = v25; + LOBYTE(v47) = 0; + std::__facet_shims::__moneypunct_fill_cache(v47, (int *)a1, v25); + } + else if ( this == (std::locale::facet *)&std::messages::id ) + { + v5 = operator new((struct type_info *)0x14, v51); + std::messages::messages(v5, 0); + v28 = _CRT_MT; + v5[4] = a1; + if ( v28 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537A3C; + } + else if ( this == (std::locale::facet *)&std::numpunct::id ) + { + v29 = operator new((struct type_info *)0xA8, v51); + v29[1] = 0; + v30 = (int)v29; + *v29 = &off_538BE4; + v29[2] = 0; + v29[3] = 0; + *((_BYTE *)v29 + 16) = 0; + v29[5] = 0; + v29[6] = 0; + v29[7] = 0; + v29[8] = 0; + v29[9] = 0; + *((_BYTE *)v29 + 164) = 0; + v31 = operator new((struct type_info *)0x14, v55); + v31[1] = 0; + v5 = v31; + *v31 = &off_53833C; + v31[2] = v30; + std::numpunct::_M_initialize_numpunct(v31, 0); + v32 = _CRT_MT; + v5[3] = a1; + if ( v32 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537AFC; + v5[4] = v30; + LOBYTE(v48) = 0; + std::__facet_shims::__numpunct_fill_cache(v48, (int *)a1, v30); + } + else if ( this == (std::locale::facet *)&std::collate::id ) + { + v13 = operator new((struct type_info *)0x10, v51); + v13[1] = 0; + v5 = v13; + *v13 = &off_5382C4; + v13[2] = std::locale::facet::_S_get_c_locale(); + v14 = _CRT_MT; + v5[3] = a1; + if ( v14 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537A04; + } + else if ( this == (std::locale::facet *)&std::time_get>::id ) + { + v33 = operator new((struct type_info *)0xC, v51); + v33[1] = 0; + v5 = v33; + *v33 = &off_53838C; + v33[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v33 = &off_537B9C; + } + else if ( this == (std::locale::facet *)&std::money_get>::id ) + { + v34 = operator new((struct type_info *)0xC, v51); + v34[1] = 0; + v5 = v34; + *v34 = &off_5383D0; + v34[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v34 = &off_537C10; + } + else if ( this == (std::locale::facet *)&std::money_put>::id ) + { + v35 = operator new((struct type_info *)0xC, v51); + v36 = _CRT_MT; + v35[1] = 0; + v5 = v35; + *v35 = &off_538400; + v35[2] = a1; + if ( v36 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v35 = &off_537C70; + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v37 = operator new((struct type_info *)0x54, v51); + v37[1] = 0; + v38 = (int)v37; + *v37 = &off_538D3C; + v37[2] = 0; + v37[3] = 0; + *((_BYTE *)v37 + 16) = 0; + *(_DWORD *)((char *)v37 + 18) = 0; + v37[6] = 0; + v37[7] = 0; + v37[8] = 0; + v37[9] = 0; + v37[10] = 0; + v37[11] = 0; + v37[12] = 0; + v37[13] = 0; + v37[14] = 0; + *((_BYTE *)v37 + 82) = 0; + v39 = operator new((struct type_info *)0x14, v56); + v39[1] = 0; + v5 = v39; + *v39 = &off_537EFC; + v39[2] = v38; + std::moneypunct::_M_initialize_moneypunct(v39, 0, 0); + v40 = _CRT_MT; + v5[3] = a1; + if ( v40 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537DF4; + v5[4] = v38; + LOBYTE(v49) = 0; + std::__facet_shims::__moneypunct_fill_cache(v49, (int *)a1, v38); + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v41 = operator new((struct type_info *)0x54, v51); + v41[1] = 0; + v42 = (int)v41; + *v41 = &off_538D2C; + v41[2] = 0; + v41[3] = 0; + *((_BYTE *)v41 + 16) = 0; + *(_DWORD *)((char *)v41 + 18) = 0; + v41[6] = 0; + v41[7] = 0; + v41[8] = 0; + v41[9] = 0; + v41[10] = 0; + v41[11] = 0; + v41[12] = 0; + v41[13] = 0; + v41[14] = 0; + *((_BYTE *)v41 + 82) = 0; + v43 = operator new((struct type_info *)0x14, v57); + v43[1] = 0; + v5 = v43; + *v43 = &off_537EC8; + v43[2] = v42; + std::moneypunct::_M_initialize_moneypunct(v43, 0, 0); + v44 = _CRT_MT; + v5[3] = a1; + if ( v44 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537D8C; + v5[4] = v42; + LOBYTE(v50) = 0; + std::__facet_shims::__moneypunct_fill_cache(v50, (int *)a1, v42); + } + else + { + if ( this != (std::locale::facet *)&std::messages::id ) + std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); + v5 = operator new((struct type_info *)0x14, v51); + std::messages::messages(v5, 0); + v7 = _CRT_MT; + v5[4] = a1; + if ( v7 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_537A74; + } + return v5; +} +// 46ED27: variable 'v51' is possibly undefined +// 46EDBA: variable 'v52' is possibly undefined +// 46EE08: variable 'v45' is possibly undefined +// 46EFED: variable 'v53' is possibly undefined +// 46F046: variable 'v46' is possibly undefined +// 46F0CD: variable 'v54' is possibly undefined +// 46F127: variable 'v47' is possibly undefined +// 46F1FE: variable 'v55' is possibly undefined +// 46F24F: variable 'v48' is possibly undefined +// 46F3C2: variable 'v56' is possibly undefined +// 46F41C: variable 'v49' is possibly undefined +// 46F4AE: variable 'v57' is possibly undefined +// 46F504: variable 'v50' is possibly undefined +// 534108: using guessed type int *`typeinfo for'std::locale::facet::__shim; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5379CC: using guessed type int (*off_5379CC)(); +// 537A04: using guessed type int (*off_537A04)(); +// 537A3C: using guessed type int (*off_537A3C)(); +// 537A74: using guessed type int (*off_537A74)(); +// 537AB4: using guessed type int (*off_537AB4)(); +// 537AFC: using guessed type int (*off_537AFC)(); +// 537B48: using guessed type int (*off_537B48)(); +// 537B9C: using guessed type int (*off_537B9C)(); +// 537BE0: using guessed type int (*off_537BE0)(); +// 537C10: using guessed type int (*off_537C10)(); +// 537C40: using guessed type int (*off_537C40)(); +// 537C70: using guessed type int (*off_537C70)(); +// 537CBC: using guessed type int (*off_537CBC)(); +// 537D24: using guessed type int (*off_537D24)(); +// 537D8C: using guessed type int (*off_537D8C)(); +// 537DF4: using guessed type int (*off_537DF4)(); +// 537E60: using guessed type int (*off_537E60)(); +// 537E94: using guessed type int (*off_537E94)(); +// 537EC8: using guessed type int (*off_537EC8)(); +// 537EFC: using guessed type int (*off_537EFC)(); +// 5382A8: using guessed type int (*off_5382A8)(); +// 5382C4: using guessed type int (*off_5382C4)(); +// 538318: using guessed type int (*off_538318)(); +// 53833C: using guessed type int (*off_53833C)(); +// 538360: using guessed type int (*off_538360)(); +// 53838C: using guessed type int (*off_53838C)(); +// 5383B8: using guessed type int (*off_5383B8)(); +// 5383D0: using guessed type int (*off_5383D0)(); +// 5383E8: using guessed type int (*off_5383E8)(); +// 538400: using guessed type int (*off_538400)(); +// 538BD4: using guessed type int (*off_538BD4)(); +// 538BE4: using guessed type int (*off_538BE4)(); +// 538D0C: using guessed type int (*off_538D0C)(); +// 538D1C: using guessed type int (*off_538D1C)(); +// 538D2C: using guessed type int (*off_538D2C)(); +// 538D3C: using guessed type int (*off_538D3C)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0046F5D0) -------------------------------------------------------- +int __fastcall std::locale::facet::_M_remove_reference(volatile signed __int32 *a1) +{ + int result; // eax + + if ( _CRT_MT ) + { + result = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); + } + else + { + result = *((_DWORD *)a1 + 1); + *((_DWORD *)a1 + 1) = result - 1; + } + if ( result == 1 ) + return (*(int (__fastcall **)(volatile signed __int32 *))(*a1 + 4))(a1); + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0046F610) -------------------------------------------------------- +bool __thiscall std::locale::operator==(int *this, int *a2) +{ + int v2; // edi + const char **v4; // ecx + char *v5; // ebx + bool result; // al + const char **v7; // [esp+1Ch] [ebp-4Ch] + bool v8; // [esp+1Ch] [ebp-4Ch] + bool v9; // [esp+1Ch] [ebp-4Ch] + void *Buf1; // [esp+20h] [ebp-48h] BYREF + size_t Size; // [esp+24h] [ebp-44h] + char v12; // [esp+28h] [ebp-40h] BYREF + void *Buf2[2]; // [esp+38h] [ebp-30h] BYREF + char v14; // [esp+40h] [ebp-28h] BYREF + + if ( *this == *a2 ) + return 1; + v2 = *(_DWORD *)(*this + 16); + if ( !*(_DWORD *)v2 ) + return 0; + v4 = *(const char ***)(*a2 + 16); + v7 = v4; + if ( !*v4 || strcmp(*(const char **)v2, *v4) ) + return 0; + if ( !*(_DWORD *)(v2 + 4) && !v7[1] ) + return 1; + std::locale::name[abi:cxx11]((int)Buf2, a2); + std::locale::name[abi:cxx11]((int)&Buf1, this); + v5 = (char *)Buf1; + result = 0; + if ( (void *)Size == Buf2[1] ) + { + result = 1; + if ( Size ) + result = memcmp(Buf1, Buf2[0], Size) == 0; + } + if ( v5 != &v12 ) + { + v8 = result; + operator delete(v5); + result = v8; + } + if ( Buf2[0] != &v14 ) + { + v9 = result; + operator delete(Buf2[0]); + return v9; + } + return result; +} + +//----- (0046F720) -------------------------------------------------------- +int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3) +{ + unsigned int v3; // eax + int v4; // edx + int v5; // ecx + bool v6; // cf + unsigned int v7; // eax + + v3 = -1431655765 * ((this[1] - *this) >> 3); + if ( 89478485 - v3 < a2 ) + std::__throw_length_error(a3); + v4 = a2; + if ( a2 < v3 ) + v4 = -1431655765 * ((this[1] - *this) >> 3); + v5 = 89478485; + v6 = __CFADD__(v4, v3); + v7 = v4 + v3; + if ( !v6 ) + { + v5 = v7; + if ( v7 > 0x5555555 ) + return 89478485; + } + return v5; +} + +//----- (0046F774) -------------------------------------------------------- +int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3) +{ + unsigned int v3; // eax + int v4; // edx + int v5; // ecx + bool v6; // cf + unsigned int v7; // eax + + v3 = (this[1] - *this) >> 2; + if ( 0x1FFFFFFF - v3 < a2 ) + std::__throw_length_error(a3); + v4 = a2; + if ( a2 < v3 ) + v4 = (this[1] - *this) >> 2; + v5 = 0x1FFFFFFF; + v6 = __CFADD__(v4, v3); + v7 = v4 + v3; + if ( !v6 ) + { + v5 = v7; + if ( v7 > 0x1FFFFFFF ) + return 0x1FFFFFFF; + } + return v5; +} + +//----- (0046F7D0) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (0046F7F0) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (0046F810) -------------------------------------------------------- +void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 20); + if ( v3 == std::moneypunct::do_curr_symbol ) + { + Str = *(char **)(a2[2] + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 46F854: variable 'v7' is possibly undefined + +//----- (0046F890) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 46F8C7: variable 'v6' is possibly undefined + +//----- (0046F8E0) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 44); + else + return v1(); +} + +//----- (0046F900) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 17); + else + return v1(); +} + +//----- (0046F920) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (0046F930) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (0046F940) -------------------------------------------------------- +void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 28); + if ( v3 == std::moneypunct::do_negative_sign ) + { + Str = *(char **)(a2[2] + 36); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 46F984: variable 'v7' is possibly undefined + +//----- (0046F9C0) -------------------------------------------------------- +void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 24); + if ( v3 == std::moneypunct::do_positive_sign ) + { + Str = *(char **)(a2[2] + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 46FA04: variable 'v7' is possibly undefined + +//----- (0046FA40) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 18); + else + return v1(); +} + +//----- (0046FA60) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 46FA97: variable 'v6' is possibly undefined + +//----- (0046FAB0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); +} + +//----- (0046FAC0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); +} + +//----- (0046FAD0) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 36); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 46FB07: variable 'v6' is possibly undefined + +//----- (0046FB20) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 46FB57: variable 'v6' is possibly undefined + +//----- (0046FB70) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (0046FB80) -------------------------------------------------------- +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::moneypunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 46FBC4: variable 'v7' is possibly undefined + +//----- (0046FC00) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (0046FC20) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (0046FC40) -------------------------------------------------------- +void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 20); + if ( v3 == std::moneypunct::do_curr_symbol ) + { + Str = *(char **)(a2[2] + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 46FC84: variable 'v7' is possibly undefined + +//----- (0046FCC0) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 46FCF7: variable 'v6' is possibly undefined + +//----- (0046FD10) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 44); + else + return v1(); +} + +//----- (0046FD30) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 17); + else + return v1(); +} + +//----- (0046FD50) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (0046FD60) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (0046FD70) -------------------------------------------------------- +void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 28); + if ( v3 == std::moneypunct::do_negative_sign ) + { + Str = *(char **)(a2[2] + 36); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 46FDB4: variable 'v7' is possibly undefined + +//----- (0046FDF0) -------------------------------------------------------- +void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 24); + if ( v3 == std::moneypunct::do_positive_sign ) + { + Str = *(char **)(a2[2] + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 46FE34: variable 'v7' is possibly undefined + +//----- (0046FE70) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 18); + else + return v1(); +} + +//----- (0046FE90) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 46FEC7: variable 'v6' is possibly undefined + +//----- (0046FEE0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); +} + +//----- (0046FEF0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); +} + +//----- (0046FF00) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 36); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 46FF37: variable 'v6' is possibly undefined + +//----- (0046FF50) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 46FF87: variable 'v6' is possibly undefined + +//----- (0046FFA0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (0046FFB0) -------------------------------------------------------- +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::moneypunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 46FFF4: variable 'v7' is possibly undefined + +//----- (00470030) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 56); + else + return v1(); +} + +//----- (00470050) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (00470070) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 20); + if ( v3 == std::moneypunct::do_curr_symbol ) + { + String = *(wchar_t **)(a2[2] + 24); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 4700B5: variable 'v7' is possibly undefined + +//----- (004700F0) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 470127: variable 'v6' is possibly undefined + +//----- (00470140) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (00470160) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 18); + else + return v1(); +} + +//----- (00470180) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); +} + +//----- (00470190) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (004701A0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 28); + if ( v3 == std::moneypunct::do_negative_sign ) + { + String = *(wchar_t **)(a2[2] + 40); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 4701E5: variable 'v7' is possibly undefined + +//----- (00470220) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 24); + if ( v3 == std::moneypunct::do_positive_sign ) + { + String = *(wchar_t **)(a2[2] + 32); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 470265: variable 'v7' is possibly undefined + +//----- (004702A0) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 20); + else + return v1(); +} + +//----- (004702C0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 4702F8: variable 'v6' is possibly undefined + +//----- (00470310) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (00470320) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (00470330) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 470368: variable 'v6' is possibly undefined + +//----- (00470380) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 4703B8: variable 'v6' is possibly undefined + +//----- (004703D0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); +} + +//----- (004703E0) -------------------------------------------------------- +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::moneypunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 470424: variable 'v7' is possibly undefined + +//----- (00470460) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 56); + else + return v1(); +} + +//----- (00470480) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (004704A0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 20); + if ( v3 == std::moneypunct::do_curr_symbol ) + { + String = *(wchar_t **)(a2[2] + 24); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 4704E5: variable 'v7' is possibly undefined + +//----- (00470520) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 470557: variable 'v6' is possibly undefined + +//----- (00470570) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (00470590) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 18); + else + return v1(); +} + +//----- (004705B0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); +} + +//----- (004705C0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (004705D0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 28); + if ( v3 == std::moneypunct::do_negative_sign ) + { + String = *(wchar_t **)(a2[2] + 40); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 470615: variable 'v7' is possibly undefined + +//----- (00470650) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 24); + if ( v3 == std::moneypunct::do_positive_sign ) + { + String = *(wchar_t **)(a2[2] + 32); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 470695: variable 'v7' is possibly undefined + +//----- (004706D0) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 20); + else + return v1(); +} + +//----- (004706F0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 470728: variable 'v6' is possibly undefined + +//----- (00470740) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (00470750) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (00470760) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 470798: variable 'v6' is possibly undefined + +//----- (004707B0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 4707E8: variable 'v6' is possibly undefined + +//----- (00470800) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); +} + +//----- (00470810) -------------------------------------------------------- +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::moneypunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 470854: variable 'v7' is possibly undefined + +//----- (00470890) -------------------------------------------------------- +int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int a2) +{ + int v2; // edx + + v2 = 1; + if ( *this <= a2 ) + LOBYTE(v2) = this[1] + *this < a2; + return v2; +} + +//----- (004708B0) -------------------------------------------------------- +bool __fastcall std::string::_M_is_local(_DWORD *a1) +{ + return a1 + 2 == (_DWORD *)*a1; +} + +//----- (004708C0) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_of(int *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::find_last_of(this, Str, a3, v4); +} + +//----- (00470900) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) +{ + int v4; // ebx + unsigned int v5; // ebx + int v6; // ebp + + v4 = this[1]; + if ( !v4 || !MaxCount ) + return -1; + v5 = v4 - 1; + if ( v5 > a3 ) + v5 = a3; + v6 = *this; + do + { + if ( memchr(Buf, *(char *)(v6 + v5), MaxCount) ) + break; + --v5; + } + while ( v5 != -1 ); + return v5; +} + +//----- (00470990) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_of(int *this, int a2, int a3) +{ + return std::string::find_last_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (004709C0) -------------------------------------------------------- +int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + unsigned int v5; // ebx + int v6; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = a3; + v5 = v3 - 1; + if ( a3 > v5 ) + result = v5; + v6 = *this; + do + { + if ( a2 == *(_BYTE *)(v6 + result) ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00470A00) -------------------------------------------------------- +int __fastcall std::string::_M_local_data(int a1) +{ + return a1 + 8; +} + +//----- (00470A10) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::find_first_of(this, Str, a3, v4); +} + +//----- (00470A50) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount) +{ + unsigned int v5; // edi + + if ( MaxCount ) + { + v5 = this[1]; + while ( v5 > a3 ) + { + if ( memchr(Buf, *(char *)(*this + a3), MaxCount) ) + return a3; + ++a3; + } + } + return -1; +} + +//----- (00470AC0) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_of(_DWORD *this, int a2, int a3) +{ + return std::string::find_first_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00470AF0) -------------------------------------------------------- +char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3) +{ + return std::string::find(this, a2, a3); +} + +//----- (00470B00) -------------------------------------------------------- +void *__thiscall std::string::get_allocator(void *this, int a2) +{ + return this; +} + +//----- (00470B10) -------------------------------------------------------- +unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) +{ + unsigned int result; // eax + + result = a2 + 0x3FFFFFFF - this[1]; + if ( result < a3 ) + std::__throw_length_error(a4); + return result; +} + +//----- (00470B40) -------------------------------------------------------- +int __fastcall std::string::_M_get_allocator(int a1) +{ + return a1; +} + +//----- (00470B50) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_not_of(int *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::find_last_not_of(this, Str, a3, v4); +} + +//----- (00470B90) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) +{ + unsigned int v4; // ebx + int v5; // eax + int v6; // ebp + + v4 = -1; + v5 = this[1]; + if ( v5 ) + { + v4 = v5 - 1; + if ( v5 - 1 > a3 ) + v4 = a3; + v6 = *this; + do + { + if ( !MaxCount ) + break; + if ( !memchr(Buf, *(char *)(v6 + v4), MaxCount) ) + break; + --v4; + } + while ( v4 != -1 ); + } + return v4; +} + +//----- (00470C00) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_not_of(int *this, int a2, int a3) +{ + return std::string::find_last_not_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00470C30) -------------------------------------------------------- +int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = v3 - 1; + if ( v3 - 1 > a3 ) + result = a3; + v5 = *this; + do + { + if ( *(_BYTE *)(v5 + result) != a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00470C70) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::find_first_not_of(this, Str, a3, v4); +} + +//----- (00470CB0) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) +{ + unsigned int v4; // esi + unsigned int v5; // edi + int v6; // ebp + + v4 = this[1]; + v5 = a3; + if ( a3 >= v4 ) + return -1; + v6 = *this; + if ( MaxCount ) + { + while ( memchr(Buf, *(char *)(v6 + v5), MaxCount) ) + { + if ( v4 == ++v5 ) + return -1; + } + } + return v5; +} + +//----- (00470D10) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_not_of(int *this, int a2, int a3) +{ + return std::string::find_first_not_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00470D40) -------------------------------------------------------- +int __thiscall std::string::find_first_not_of(int *this, char a2, unsigned int a3) +{ + int result; // eax + unsigned int v4; // edx + int v5; // ecx + + result = a3; + v4 = this[1]; + if ( a3 >= v4 ) + return -1; + v5 = *this; + while ( *(_BYTE *)(v5 + result) == a2 ) + { + if ( ++result == v4 ) + return -1; + } + return result; +} + +//----- (00470D80) -------------------------------------------------------- +unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= this[1] ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); + return *this + a2; +} + +//----- (00470DB0) -------------------------------------------------------- +int __fastcall std::string::end(_DWORD *a1) +{ + return a1[1] + *a1; +} + +//----- (00470DC0) -------------------------------------------------------- +int __fastcall std::string::back(_DWORD *a1) +{ + return *a1 + a1[1] - 1; +} + +//----- (00470DD0) -------------------------------------------------------- +int __fastcall std::string::cend(_DWORD *a1) +{ + return a1[1] + *a1; +} + +//----- (00470DE0) -------------------------------------------------------- +size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, unsigned int a3, unsigned int a4) +{ + unsigned int v4; // ebx + size_t Size; // ebx + _BYTE *Src; // eax + + v4 = this[1]; + if ( a4 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::copy", + a4, + this[1]); + Size = v4 - a4; + if ( Size > a3 ) + { + Size = a3; + if ( !a3 ) + return Size; + } + else if ( !Size ) + { + return Size; + } + Src = (_BYTE *)(*this + a4); + if ( Size != 1 ) + { + memcpy(a2, Src, Size); + return Size; + } + *a2 = *Src; + return 1; +} + +//----- (00470E60) -------------------------------------------------------- +int __fastcall std::string::data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00470E70) -------------------------------------------------------- +int __thiscall std::string::find(int *this, char *Str, int a3) +{ + size_t Size; // eax + + Size = strlen(Str); + return std::string::find(this, Str, a3, Size); +} + +//----- (00470EB0) -------------------------------------------------------- +int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size) +{ + unsigned int v4; // esi + int v5; // ebp + int v6; // ecx + const void *Buf; // eax + size_t MaxCount; // edx + int Val; // ebp + char *v10; // edi + int v12; // [esp+18h] [ebp-24h] + int v13; // [esp+1Ch] [ebp-20h] + + v4 = this[1]; + if ( !Size ) + return v4 < a3 ? -1 : a3; + v5 = -1; + if ( v4 > a3 ) + { + v6 = *this; + Buf = (const void *)(v6 + a3); + v13 = v6; + v12 = v6 + v4; + if ( Size <= v4 - a3 ) + { + MaxCount = 1 - Size + v4 - a3; + if ( MaxCount ) + { + Val = *Buf2; + while ( 1 ) + { + v10 = (char *)memchr(Buf, Val, MaxCount); + if ( !v10 ) + return -1; + if ( !memcmp(v10, Buf2, Size) ) + break; + Buf = v10 + 1; + if ( Size <= v12 - (int)(v10 + 1) ) + { + MaxCount = v12 - (_DWORD)v10 - Size; + if ( MaxCount ) + continue; + } + return -1; + } + return (int)&v10[-v13]; + } + } + } + return v5; +} + +//----- (00470F70) -------------------------------------------------------- +int __thiscall std::string::find(int *this, int a2, int a3) +{ + return std::string::find(this, *(char **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00470FA0) -------------------------------------------------------- +char *__thiscall std::string::find(int *this, char a2, unsigned int a3) +{ + int v3; // ebx + unsigned int v4; // edx + int v5; // esi + char *v6; // eax + + v3 = -1; + v4 = this[1]; + if ( a3 < v4 ) + { + v5 = *this; + v6 = (char *)memchr((const void *)(*this + a3), a2, v4 - a3); + if ( v6 ) + return &v6[-v5]; + } + return (char *)v3; +} + +//----- (00470FF0) -------------------------------------------------------- +_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (00471000) -------------------------------------------------------- +int __fastcall std::string::size(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00471010) -------------------------------------------------------- +int __fastcall std::string::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471020) -------------------------------------------------------- +int __fastcall std::string::c_str(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471030) -------------------------------------------------------- +_DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (00471040) -------------------------------------------------------- +bool __fastcall std::string::empty(int a1) +{ + return *(_DWORD *)(a1 + 4) == 0; +} + +//----- (00471050) -------------------------------------------------------- +int __fastcall std::string::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471060) -------------------------------------------------------- +unsigned int __thiscall std::string::rfind(int *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::rfind(this, Str, a3, v4); +} + +//----- (004710A0) -------------------------------------------------------- +unsigned int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size) +{ + unsigned int v4; // ebx + size_t v5; // eax + int v6; // ebp + + v4 = -1; + v5 = this[1]; + if ( Size <= v5 ) + { + v4 = v5 - Size; + if ( v5 - Size > a3 ) + v4 = a3; + v6 = *this; + if ( Size ) + { + while ( memcmp((const void *)(v6 + v4), Buf2, Size) ) + { + if ( !v4 ) + return -1; + --v4; + } + } + } + return v4; +} +// 4710EE: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (00471120) -------------------------------------------------------- +unsigned int __thiscall std::string::rfind(int *this, int a2, int a3) +{ + return std::string::rfind(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00471150) -------------------------------------------------------- +int __thiscall std::string::rfind(int *this, char a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = v3 - 1; + if ( v3 - 1 > a3 ) + result = a3; + v5 = *this; + do + { + if ( *(_BYTE *)(v5 + result) == a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00471190) -------------------------------------------------------- +int __fastcall std::string::cbegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004711A0) -------------------------------------------------------- +int __fastcall std::string::length(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (004711B0) -------------------------------------------------------- +_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + a2[1]; + return result; +} + +//----- (004711C0) -------------------------------------------------------- +void **__thiscall std::string::substr(void **this, _DWORD *a2, unsigned int a3, unsigned int a4) +{ + unsigned int v5; // edx + unsigned int v6; // edx + int v8; // [esp+8h] [ebp-14h] + + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::substr", + a3, + a2[1]); + v6 = v5 - a3; + *this = this + 2; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + std::string::_M_construct(this, (unsigned __int8 *)(a3 + *a2), a3 + *a2 + v6, v8); + return this; +} +// 4711FC: variable 'v8' is possibly undefined + +//----- (00471230) -------------------------------------------------------- +int __fastcall std::string::_M_data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471240) -------------------------------------------------------- +int __thiscall std::string::compare(int this, char *Str) +{ + size_t v3; // edi + size_t Size; // eax + size_t v5; // ebx + int result; // eax + + v3 = *(_DWORD *)(this + 4); + Size = strlen(Str); + v5 = Size; + if ( Size > v3 ) + Size = v3; + if ( !Size ) + return v3 - v5; + result = memcmp(*(const void **)this, Str, Size); + if ( !result ) + return v3 - v5; + return result; +} + +//----- (00471290) -------------------------------------------------------- +int __thiscall std::string::compare(int this, int a2) +{ + size_t v2; // esi + size_t Size; // eax + size_t v4; // ebx + int result; // eax + + v2 = *(_DWORD *)(this + 4); + Size = v2; + v4 = *(_DWORD *)(a2 + 4); + if ( v4 <= v2 ) + Size = *(_DWORD *)(a2 + 4); + if ( !Size ) + return v2 - v4; + result = memcmp(*(const void **)this, *(const void **)a2, Size); + if ( !result ) + return v2 - v4; + return result; +} + +//----- (004712D0) -------------------------------------------------------- +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, char *Str) +{ + unsigned int v4; // ebx + unsigned int v5; // ebx + size_t Size; // eax + size_t v8; // esi + int result; // eax + + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + Size = strlen(Str); + v8 = Size; + if ( Size > v5 ) + Size = v5; + if ( !Size ) + return v5 - v8; + result = memcmp((const void *)(*this + a2), Str, Size); + if ( !result ) + return v5 - v8; + return result; +} + +//----- (00471360) -------------------------------------------------------- +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, void *Buf2, unsigned int a5) +{ + unsigned int v5; // ebx + size_t Size; // edx + unsigned int v7; // ebx + int result; // eax + + v5 = this[1]; + Size = a3; + if ( a2 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v7 = v5 - a2; + if ( v7 > a3 ) + { + v7 = a3; + if ( a3 <= a5 ) + goto LABEL_4; + goto LABEL_8; + } + Size = v7; + if ( v7 > a5 ) +LABEL_8: + Size = a5; +LABEL_4: + if ( !Size ) + return v7 - a5; + result = memcmp((const void *)(*this + a2), Buf2, Size); + if ( !result ) + return v7 - a5; + return result; +} + +//----- (004713E0) -------------------------------------------------------- +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, int a4) +{ + unsigned int v4; // ebx + size_t v5; // ebx + size_t v6; // esi + size_t Size; // edx + int result; // eax + + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v5 = v4 - a2; + if ( v5 > a3 ) + { + v6 = *(_DWORD *)(a4 + 4); + v5 = a3; + Size = v6; + if ( v6 <= a3 ) + goto LABEL_4; + goto LABEL_8; + } + v6 = *(_DWORD *)(a4 + 4); + Size = v6; + if ( v6 > v5 ) +LABEL_8: + Size = v5; +LABEL_4: + if ( !Size ) + return v5 - v6; + result = memcmp((const void *)(*this + a2), *(const void **)a4, Size); + if ( !result ) + return v5 - v6; + return result; +} + +//----- (00471470) -------------------------------------------------------- +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) +{ + unsigned int v6; // esi + unsigned int v7; // ebx + size_t v8; // esi + size_t v9; // ebx + size_t Size; // ebp + int result; // eax + + v6 = this[1]; + if ( a2 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v7 = a4[1]; + if ( a5 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a5, + a4[1]); + v8 = v6 - a2; + if ( v8 <= a3 ) + { + v9 = v7 - a5; + if ( v9 <= a6 ) + goto LABEL_5; +LABEL_11: + v9 = a6; + Size = a6; + if ( a6 <= v8 ) + goto LABEL_6; + goto LABEL_10; + } + v8 = a3; + v9 = v7 - a5; + if ( v9 > a6 ) + goto LABEL_11; +LABEL_5: + Size = v9; + if ( v9 > v8 ) +LABEL_10: + Size = v8; +LABEL_6: + if ( !Size ) + return v8 - v9; + result = memcmp((const void *)(*this + a2), (const void *)(*a4 + a5), Size); + if ( !result ) + return v8 - v9; + return result; +} + +//----- (00471540) -------------------------------------------------------- +_DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + a2[1]; + return result; +} + +//----- (00471550) -------------------------------------------------------- +unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int a2, const char *a3) +{ + unsigned int v3; // edx + unsigned int result; // eax + + v3 = this[1]; + result = a2; + if ( a2 > v3 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); + return result; +} + +//----- (00471580) -------------------------------------------------------- +unsigned int __thiscall std::string::_M_limit(_DWORD *this, int a2, unsigned int a3) +{ + unsigned int result; // eax + + result = this[1] - a2; + if ( result > a3 ) + return a3; + return result; +} + +//----- (004715A0) -------------------------------------------------------- +int __fastcall std::string::capacity(_DWORD *a1) +{ + if ( (_DWORD *)*a1 == a1 + 2 ) + return 15; + else + return a1[2]; +} + +//----- (004715C0) -------------------------------------------------------- +int std::string::max_size() +{ + return 0x3FFFFFFF; +} + +//----- (004715D0) -------------------------------------------------------- +int __thiscall std::string::operator[](_DWORD *this, int a2) +{ + return a2 + *this; +} + +//----- (004715E0) -------------------------------------------------------- +bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) +{ + bool result; // al + + result = 1; + if ( *this <= a2 ) + return *this + 2 * this[1] < a2; + return result; +} + +//----- (00471600) -------------------------------------------------------- +bool __fastcall std::wstring::_M_is_local(_DWORD *a1) +{ + return a1 + 2 == (_DWORD *)*a1; +} + +//----- (00471610) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_last_of(this, String, a3, v4); +} + +//----- (00471650) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + int v4; // ebx + unsigned int v6; // ebx + + v4 = this[1]; + if ( !v4 || !N ) + return -1; + v6 = v4 - 1; + if ( v6 > a3 ) + v6 = a3; + while ( !wmemchr(S, *(_WORD *)(*this + 2 * v6), N) ) + { + if ( --v6 == -1 ) + return -1; + } + return v6; +} + +//----- (004716D0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, int a3) +{ + return std::wstring::find_last_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00471700) -------------------------------------------------------- +int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + unsigned int v5; // ebx + int v6; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = a3; + v5 = v3 - 1; + if ( a3 > v5 ) + result = v5; + v6 = *this; + do + { + if ( a2 == *(_WORD *)(v6 + 2 * result) ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00471740) -------------------------------------------------------- +int __fastcall std::wstring::_M_local_data(int a1) +{ + return a1 + 8; +} + +//----- (00471750) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_first_of(this, String, a3, v4); +} + +//----- (00471790) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + if ( N ) + { + while ( this[1] > a3 ) + { + if ( wmemchr(S, *(_WORD *)(*this + 2 * a3), N) ) + return a3; + ++a3; + } + } + return -1; +} + +//----- (00471800) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, int a3) +{ + return std::wstring::find_first_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00471830) -------------------------------------------------------- +int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3) +{ + return std::wstring::find(this, C, a3); +} + +//----- (00471840) -------------------------------------------------------- +void *__thiscall std::wstring::get_allocator(void *this, int a2) +{ + return this; +} + +//----- (00471850) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) +{ + unsigned int result; // eax + + result = a2 + 0x1FFFFFFF - this[1]; + if ( result < a3 ) + std::__throw_length_error(a4); + return result; +} + +//----- (00471880) -------------------------------------------------------- +int __fastcall std::wstring::_M_get_allocator(int a1) +{ + return a1; +} + +//----- (00471890) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3) +{ + int v4; // eax + + v4 = wcslen(String); + return std::wstring::find_last_not_of(this, String, a3, v4); +} + +//----- (004718D0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *S, unsigned int a3, int N) +{ + int v4; // ebx + unsigned int v6; // ebx + + v4 = this[1]; + if ( !v4 ) + return -1; + v6 = v4 - 1; + if ( v6 > a3 ) + v6 = a3; + while ( N && wmemchr(S, *(_WORD *)(*this + 2 * v6), N) ) + { + if ( --v6 == -1 ) + return -1; + } + return v6; +} + +//----- (00471940) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, int a3) +{ + return std::wstring::find_last_not_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00471970) -------------------------------------------------------- +int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = v3 - 1; + if ( v3 - 1 > a3 ) + result = a3; + v5 = *this; + do + { + if ( *(_WORD *)(v5 + 2 * result) != a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (004719B0) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_first_not_of(this, String, a3, v4); +} + +//----- (004719F0) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + unsigned int v4; // ebx + int result; // eax + wchar_t *i; // eax + + v4 = a3; + if ( a3 >= this[1] ) + return -1; + result = a3; + if ( N ) + { + for ( i = (wchar_t *)(*this + 2 * a3); wmemchr(S, *i, N); i = (wchar_t *)(*this + 2 * v4) ) + { + if ( this[1] <= ++v4 ) + return -1; + } + return v4; + } + return result; +} + +//----- (00471A60) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(_DWORD *this, int a2, int a3) +{ + return std::wstring::find_first_not_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00471A90) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3) +{ + int result; // eax + unsigned int v4; // edx + int v5; // ecx + + result = a3; + v4 = this[1]; + if ( a3 >= v4 ) + return -1; + v5 = *this; + while ( *(_WORD *)(v5 + 2 * result) == a2 ) + { + if ( ++result == v4 ) + return -1; + } + return result; +} + +//----- (00471AD0) -------------------------------------------------------- +int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= this[1] ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); + return *this + 2 * a2; +} + +//----- (00471B00) -------------------------------------------------------- +int __fastcall std::wstring::end(_DWORD *a1) +{ + return *a1 + 2 * a1[1]; +} + +//----- (00471B10) -------------------------------------------------------- +int __fastcall std::wstring::back(_DWORD *a1) +{ + return *a1 + 2 * a1[1] - 2; +} + +//----- (00471B20) -------------------------------------------------------- +int __fastcall std::wstring::cend(_DWORD *a1) +{ + return *a1 + 2 * a1[1]; +} + +//----- (00471B30) -------------------------------------------------------- +size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4) +{ + unsigned int v4; // ebx + size_t N; // ebx + const wchar_t *S2; // eax + + v4 = this[1]; + if ( a4 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::copy", + a4, + this[1]); + N = v4 - a4; + if ( N > a3 ) + { + N = a3; + if ( !a3 ) + return N; + } + else if ( !N ) + { + return N; + } + S2 = (const wchar_t *)(*this + 2 * a4); + if ( N != 1 ) + { + wmemcpy(S1, S2, N); + return N; + } + *S1 = *S2; + return 1; +} + +//----- (00471BB0) -------------------------------------------------------- +int __fastcall std::wstring::data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471BC0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3) +{ + size_t v4; // eax + + v4 = wcslen(S2); + return std::wstring::find(this, S2, a3, v4); +} + +//----- (00471C00) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4) +{ + unsigned int v4; // ebp + size_t N; // eax + const wchar_t *S; // edx + wchar_t C; // di + wchar_t *v8; // ebp + unsigned int v9; // eax + int result; // eax + int v11; // [esp+18h] [ebp-24h] + int v12; // [esp+1Ch] [ebp-20h] + + v4 = this[1]; + if ( a4 ) + { + if ( v4 > a3 && a4 <= v4 - a3 ) + { + N = 1 - a4 + v4 - a3; + if ( N ) + { + v12 = *this; + S = (const wchar_t *)(*this + 2 * a3); + C = *S2; + v11 = *this + 2 * v4; + while ( 1 ) + { + v8 = wmemchr(S, C, N); + if ( !v8 ) + break; + if ( !wmemcmp(v8, S2, a4) ) + return ((int)v8 - v12) >> 1; + S = v8 + 1; + v9 = (v11 - (int)(v8 + 1)) >> 1; + if ( a4 <= v9 ) + { + N = 1 - a4 + v9; + if ( N ) + continue; + } + return -1; + } + } + } + return -1; + } + result = a3; + if ( v4 < a3 ) + return -1; + return result; +} + +//----- (00471CC0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, int a2, int a3) +{ + return std::wstring::find(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00471CF0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3) +{ + unsigned int v3; // eax + int v5; // ebx + wchar_t *v6; // eax + + v3 = this[1]; + if ( a3 < v3 && (v5 = *this, (v6 = wmemchr((const wchar_t *)(*this + 2 * a3), C, v3 - a3)) != 0) ) + return ((int)v6 - v5) >> 1; + else + return -1; +} + +//----- (00471D50) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (00471D60) -------------------------------------------------------- +int __fastcall std::wstring::size(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00471D70) -------------------------------------------------------- +int __fastcall std::wstring::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471D80) -------------------------------------------------------- +int __fastcall std::wstring::c_str(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471D90) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (00471DA0) -------------------------------------------------------- +bool __fastcall std::wstring::empty(int a1) +{ + return *(_DWORD *)(a1 + 4) == 0; +} + +//----- (00471DB0) -------------------------------------------------------- +int __fastcall std::wstring::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471DC0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::rfind(this, String, a3, v4); +} + +//----- (00471E00) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N) +{ + size_t v4; // ebx + unsigned int v5; // ebx + int v6; // edi + + v4 = this[1]; + if ( N > v4 ) + return -1; + v5 = v4 - N; + if ( v5 > a3 ) + v5 = a3; + v6 = *this; + if ( N ) + { + while ( wmemcmp((const wchar_t *)(v6 + 2 * v5), S2, N) ) + { + if ( !v5 ) + return -1; + --v5; + } + } + return v5; +} +// 471E45: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (00471E70) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, int a2, int a3) +{ + return std::wstring::rfind(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (00471EA0) -------------------------------------------------------- +int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = v3 - 1; + if ( v3 - 1 > a3 ) + result = a3; + v5 = *this; + do + { + if ( *(_WORD *)(v5 + 2 * result) == a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00471EE0) -------------------------------------------------------- +int __fastcall std::wstring::cbegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471EF0) -------------------------------------------------------- +int __fastcall std::wstring::length(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00471F00) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * a2[1]; + return result; +} + +//----- (00471F20) -------------------------------------------------------- +wchar_t **__thiscall std::wstring::substr(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::substr", + a3, + a2[1]); + v6 = v5 - a3; + *this = (wchar_t *)(this + 2); + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + std::wstring::_M_construct(this, (wchar_t *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); + return this; +} +// 471F5C: variable 'v8' is possibly undefined + +//----- (00471F90) -------------------------------------------------------- +int __fastcall std::wstring::_M_data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00471FA0) -------------------------------------------------------- +int __thiscall std::wstring::compare(int this, wchar_t *String) +{ + size_t v3; // edi + size_t N; // eax + size_t v5; // ebx + int result; // eax + + v3 = *(_DWORD *)(this + 4); + N = wcslen(String); + v5 = N; + if ( N > v3 ) + N = v3; + if ( !N ) + return v3 - v5; + result = wmemcmp(*(const wchar_t **)this, String, N); + if ( !result ) + return v3 - v5; + return result; +} + +//----- (00472000) -------------------------------------------------------- +int __thiscall std::wstring::compare(int this, int a2) +{ + size_t v2; // esi + size_t N; // eax + size_t v4; // ebx + int result; // eax + + v2 = *(_DWORD *)(this + 4); + N = v2; + v4 = *(_DWORD *)(a2 + 4); + if ( v4 <= v2 ) + N = *(_DWORD *)(a2 + 4); + if ( !N ) + return v2 - v4; + result = wmemcmp(*(const wchar_t **)this, *(const wchar_t **)a2, N); + if ( !result ) + return v2 - v4; + return result; +} + +//----- (00472050) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) +{ + unsigned int v4; // ebx + unsigned int v5; // ebx + size_t N; // eax + size_t v8; // esi + int result; // eax + + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + N = wcslen(String); + v8 = N; + if ( N > v5 ) + { + N = v5; + if ( !v5 ) + return v5 - v8; + } + else if ( !N ) + { + return v5 - v8; + } + result = wmemcmp((const wchar_t *)(*this + 2 * a2), String, N); + if ( !result ) + return v5 - v8; + return result; +} + +//----- (004720F0) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5) +{ + unsigned int v5; // ebx + size_t N; // eax + unsigned int v7; // ebx + int result; // eax + + v5 = this[1]; + N = a3; + if ( a2 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v7 = v5 - a2; + if ( v7 <= a3 ) + { + N = v7; + if ( v7 <= a5 ) + goto LABEL_4; +LABEL_6: + N = a5; + if ( !a5 ) + return v7 - a5; + goto LABEL_7; + } + v7 = a3; + if ( a3 > a5 ) + goto LABEL_6; +LABEL_4: + if ( !N ) + return v7 - a5; +LABEL_7: + result = wmemcmp((const wchar_t *)(*this + 2 * a2), S2, N); + if ( !result ) + return v7 - a5; + return result; +} + +//----- (00472180) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, int a4) +{ + unsigned int v4; // ebx + size_t v5; // ebx + size_t v6; // esi + size_t N; // edx + int result; // eax + + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v5 = v4 - a2; + if ( v5 <= a3 ) + { + v6 = *(_DWORD *)(a4 + 4); + N = v6; + if ( v6 <= v5 ) + goto LABEL_4; +LABEL_6: + N = v5; + if ( !v5 ) + return v5 - v6; + goto LABEL_7; + } + v6 = *(_DWORD *)(a4 + 4); + v5 = a3; + N = v6; + if ( v6 > a3 ) + goto LABEL_6; +LABEL_4: + if ( !N ) + return v5 - v6; +LABEL_7: + result = wmemcmp((const wchar_t *)(*this + 2 * a2), *(const wchar_t **)a4, N); + if ( !result ) + return v5 - v6; + return result; +} + +//----- (00472220) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) +{ + unsigned int v6; // esi + unsigned int v7; // ebx + size_t v8; // esi + size_t v9; // ebx + size_t N; // ebp + int result; // eax + + v6 = this[1]; + if ( a2 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v7 = a4[1]; + if ( a5 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a5, + a4[1]); + v8 = v6 - a2; + if ( v8 > a3 ) + { + v8 = a3; + v9 = v7 - a5; + if ( v9 <= a6 ) + { +LABEL_5: + N = v9; + if ( v9 <= v8 ) + goto LABEL_6; +LABEL_8: + N = v8; + if ( !v8 ) + return v8 - v9; + goto LABEL_9; + } + } + else + { + v9 = v7 - a5; + if ( v9 <= a6 ) + goto LABEL_5; + } + v9 = a6; + N = a6; + if ( a6 > v8 ) + goto LABEL_8; +LABEL_6: + if ( !N ) + return v8 - v9; +LABEL_9: + result = wmemcmp((const wchar_t *)(*this + 2 * a2), (const wchar_t *)(*a4 + 2 * a5), N); + if ( !result ) + return v8 - v9; + return result; +} + +//----- (00472300) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * a2[1]; + return result; +} + +//----- (00472320) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) +{ + unsigned int v3; // edx + unsigned int result; // eax + + v3 = this[1]; + result = a2; + if ( a2 > v3 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); + return result; +} + +//----- (00472350) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) +{ + unsigned int result; // eax + + result = this[1] - a2; + if ( result > a3 ) + return a3; + return result; +} + +//----- (00472370) -------------------------------------------------------- +int __fastcall std::wstring::capacity(_DWORD *a1) +{ + if ( (_DWORD *)*a1 == a1 + 2 ) + return 7; + else + return a1[2]; +} + +//----- (00472390) -------------------------------------------------------- +int std::wstring::max_size() +{ + return 0x1FFFFFFF; +} + +//----- (004723A0) -------------------------------------------------------- +int __thiscall std::wstring::operator[](_DWORD *this, int a2) +{ + return *this + 2 * a2; +} + +//----- (004723B0) -------------------------------------------------------- +int __thiscall std::stringbuf::str(int this, _DWORD *a2) +{ + unsigned int v3; // edx + unsigned int v4; // ecx + char *v5; // eax + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = a2[5]; + *(_DWORD *)(this + 4) = 0; + if ( v3 ) + { + v4 = a2[3]; + v5 = (char *)a2[4]; + if ( v3 > v4 ) + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); + else + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); + return this; + } + else + { + std::string::_M_assign(this, (int)(a2 + 9)); + return this; + } +} + +//----- (00472460) -------------------------------------------------------- +_WORD *__thiscall std::wstringbuf::str(_WORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + unsigned int v4; // ecx + wchar_t *v5; // edx + + *(_DWORD *)this = this + 4; + this[4] = 0; + v3 = a2[5]; + *((_DWORD *)this + 1) = 0; + if ( v3 ) + { + v4 = a2[3]; + v5 = (wchar_t *)a2[4]; + if ( v3 > v4 ) + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); + else + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); + return this; + } + else + { + std::wstring::_M_assign((int)this, (int)(a2 + 9)); + return this; + } +} + +//----- (00472510) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::str(int this, _DWORD *a2) +{ + unsigned int v3; // edx + unsigned int v4; // ecx + char *v5; // eax + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = a2[8]; + *(_DWORD *)(this + 4) = 0; + if ( v3 ) + { + v4 = a2[6]; + v5 = (char *)a2[7]; + if ( v3 > v4 ) + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); + else + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); + return this; + } + else + { + std::string::_M_assign(this, (int)(a2 + 12)); + return this; + } +} + +//----- (004725C0) -------------------------------------------------------- +int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) +{ + return a1 + 12; +} + +//----- (004725D0) -------------------------------------------------------- +_WORD *__thiscall std::basic_stringstream,std::allocator>::str( + _WORD *this, + _DWORD *a2) +{ + unsigned int v3; // eax + unsigned int v4; // ecx + wchar_t *v5; // edx + + *(_DWORD *)this = this + 4; + this[4] = 0; + v3 = a2[8]; + *((_DWORD *)this + 1) = 0; + if ( v3 ) + { + v4 = a2[6]; + v5 = (wchar_t *)a2[7]; + if ( v3 > v4 ) + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); + else + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); + return this; + } + else + { + std::wstring::_M_assign((int)this, (int)(a2 + 12)); + return this; + } +} + +//----- (00472680) -------------------------------------------------------- +int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) +{ + return a1 + 12; +} + +//----- (00472690) -------------------------------------------------------- +int __thiscall std::istringstream::str(int this, _DWORD *a2) +{ + unsigned int v3; // edx + unsigned int v4; // ecx + char *v5; // eax + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = a2[7]; + *(_DWORD *)(this + 4) = 0; + if ( v3 ) + { + v4 = a2[5]; + v5 = (char *)a2[6]; + if ( v3 > v4 ) + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); + else + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); + return this; + } + else + { + std::string::_M_assign(this, (int)(a2 + 11)); + return this; + } +} + +//----- (00472740) -------------------------------------------------------- +int __fastcall std::istringstream::rdbuf(int a1) +{ + return a1 + 8; +} + +//----- (00472750) -------------------------------------------------------- +_WORD *__thiscall std::wistringstream::str(_WORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + unsigned int v4; // ecx + wchar_t *v5; // edx + + *(_DWORD *)this = this + 4; + this[4] = 0; + v3 = a2[7]; + *((_DWORD *)this + 1) = 0; + if ( v3 ) + { + v4 = a2[5]; + v5 = (wchar_t *)a2[6]; + if ( v3 > v4 ) + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); + else + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); + return this; + } + else + { + std::wstring::_M_assign((int)this, (int)(a2 + 11)); + return this; + } +} + +//----- (00472800) -------------------------------------------------------- +int __fastcall std::wistringstream::rdbuf(int a1) +{ + return a1 + 8; +} + +//----- (00472810) -------------------------------------------------------- +int __thiscall std::ostringstream::str(int this, _DWORD *a2) +{ + unsigned int v3; // edx + unsigned int v4; // ecx + char *v5; // eax + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = a2[6]; + *(_DWORD *)(this + 4) = 0; + if ( v3 ) + { + v4 = a2[4]; + v5 = (char *)a2[5]; + if ( v3 > v4 ) + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); + else + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); + return this; + } + else + { + std::string::_M_assign(this, (int)(a2 + 10)); + return this; + } +} + +//----- (004728C0) -------------------------------------------------------- +int __fastcall std::ostringstream::rdbuf(int a1) +{ + return a1 + 4; +} + +//----- (004728D0) -------------------------------------------------------- +_WORD *__thiscall std::wostringstream::str(_WORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + unsigned int v4; // ecx + wchar_t *v5; // edx + + *(_DWORD *)this = this + 4; + this[4] = 0; + v3 = a2[6]; + *((_DWORD *)this + 1) = 0; + if ( v3 ) + { + v4 = a2[4]; + v5 = (wchar_t *)a2[5]; + if ( v3 > v4 ) + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); + else + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); + return this; + } + else + { + std::wstring::_M_assign((int)this, (int)(a2 + 10)); + return this; + } +} + +//----- (00472980) -------------------------------------------------------- +int __fastcall std::wostringstream::rdbuf(int a1) +{ + return a1 + 4; +} + +//----- (00472990) -------------------------------------------------------- +int __stdcall std::collate::_M_compare(char *String1, char *String2) +{ + int v2; // eax + + v2 = strcoll(String1, String2); + return (v2 >> 30) | (v2 != 0); +} + +//----- (004729C0) -------------------------------------------------------- +int __stdcall std::collate::do_compare(unsigned __int8 *a1, size_t Size, unsigned __int8 *a3, size_t a4) +{ + char *v4; // ebx + char *v5; // esi + char *v6; // ebx + char *v7; // esi + int v8; // edi + int v10; // [esp+8h] [ebp-60h] + int v11; // [esp+8h] [ebp-60h] + char *v12; // [esp+18h] [ebp-50h] + char *v13; // [esp+1Ch] [ebp-4Ch] + char *Str[2]; // [esp+20h] [ebp-48h] BYREF + char v15[16]; // [esp+28h] [ebp-40h] BYREF + char *v16[2]; // [esp+38h] [ebp-30h] BYREF + char v17[40]; // [esp+40h] [ebp-28h] BYREF + + Str[0] = v15; + LOBYTE(v10) = 0; + std::string::_M_construct((void **)Str, a1, Size, v10); + v16[0] = v17; + LOBYTE(v11) = 0; + std::string::_M_construct((void **)v16, a3, a4, v11); + v4 = Str[0]; + v5 = v16[0]; + v13 = &Str[0][(unsigned int)Str[1]]; + v12 = &v16[0][(unsigned int)v16[1]]; + while ( 1 ) + { + v8 = std::collate::_M_compare(v4, v5); + if ( v8 ) + break; + v6 = &v4[strlen(v4)]; + v7 = &v5[strlen(v5)]; + if ( v13 == v6 && v12 == v7 ) + break; + if ( v13 == v6 ) + { + v8 = -1; + break; + } + if ( v12 == v7 ) + { + v8 = 1; + break; + } + v4 = v6 + 1; + v5 = v7 + 1; + } + if ( v16[0] != v17 ) + operator delete(v16[0]); + if ( Str[0] != v15 ) + operator delete(Str[0]); + return v8; +} +// 4729E8: variable 'v10' is possibly undefined +// 472A0D: variable 'v11' is possibly undefined + +//----- (00472AF0) -------------------------------------------------------- +size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) +{ + return strxfrm(Destination, Source, MaxCount); +} + +//----- (00472B20) -------------------------------------------------------- +int __thiscall std::collate::do_transform(int this, int a2, unsigned __int8 *a3, size_t Size) +{ + unsigned int v5; // edi + char *v6; // esi + unsigned int v7; // eax + char *v8; // eax + int v9; // eax + unsigned int v10; // edx + int v12; // [esp+8h] [ebp-60h] + int v13; // [esp+1Ch] [ebp-4Ch] + char *v14; // [esp+20h] [ebp-48h] + size_t v15; // [esp+24h] [ebp-44h] + unsigned int v16; // [esp+28h] [ebp-40h] + char *Str; // [esp+2Ch] [ebp-3Ch] + void *v18[2]; // [esp+38h] [ebp-30h] BYREF + char v19[40]; // [esp+40h] [ebp-28h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + LOBYTE(v12) = 0; + v13 = this + 8; + v18[0] = v19; + std::string::_M_construct(v18, a3, Size, v12); + v5 = 2 * (Size - (_DWORD)a3); + Str = (char *)v18[0]; + v14 = (char *)v18[1] + (unsigned int)v18[0]; + v6 = (char *)operator new[](v5); + while ( 1 ) + { + v7 = std::collate::_M_transform(v6, Str, v5); + if ( v5 <= v7 ) + { + v5 = v7 + 1; + operator delete[](v6); + v6 = (char *)operator new[](v5); + v7 = std::collate::_M_transform(v6, Str, v5); + } + if ( v7 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, v6, v7); + v8 = &Str[strlen(Str)]; + if ( v14 == v8 ) + break; + Str = v8 + 1; + v15 = *(_DWORD *)(this + 4); + v16 = v15 + 1; + v9 = *(_DWORD *)this; + if ( v13 == *(_DWORD *)this ) + v10 = 15; + else + v10 = *(_DWORD *)(this + 8); + if ( v16 > v10 ) + { + std::string::_M_mutate(this, v15, 0, 0, 1u); + v9 = *(_DWORD *)this; + } + *(_BYTE *)(v9 + v15) = 0; + *(_DWORD *)(this + 4) = v16; + *(_BYTE *)(*(_DWORD *)this + v15 + 1) = 0; + } + operator delete[](v6); + if ( v18[0] != v19 ) + operator delete(v18[0]); + return this; +} +// 472B59: variable 'v12' is possibly undefined + +//----- (00472D10) -------------------------------------------------------- +int __thiscall std::collate::hash(void *this, char *a1, char *a2) +{ + int (__stdcall *v3)(char *, char *); // eax + + v3 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); + if ( v3 == std::collate::do_hash ) + return std::collate::do_hash(a1, a2); + else + return v3(a1, a2); +} + +//----- (00472D30) -------------------------------------------------------- +int __fastcall std::collate::compare(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (00472D40) -------------------------------------------------------- +int __stdcall std::collate::do_hash(char *a1, char *a2) +{ + char *v2; // edx + int result; // eax + int v4; // ecx + + v2 = a1; + result = 0; + if ( a1 < a2 ) + { + do + { + v4 = *v2++; + result = v4 + __ROL4__(result, 7); + } + while ( a2 != v2 ); + } + return result; +} + +//----- (00472D70) -------------------------------------------------------- +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) +{ + (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); + return this; +} + +//----- (00472DA0) -------------------------------------------------------- +int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) +{ + int v2; // eax + + v2 = wcscoll(String1, String2); + return (v2 >> 30) | (v2 != 0); +} + +//----- (00472DD0) -------------------------------------------------------- +int __stdcall std::collate::do_compare(wchar_t *a1, int a2, wchar_t *a3, int a4) +{ + wchar_t *v4; // ebx + wchar_t *v5; // esi + wchar_t *v6; // ebx + wchar_t *v7; // esi + int v8; // edi + int v10; // [esp+8h] [ebp-60h] + int v11; // [esp+8h] [ebp-60h] + wchar_t *v12; // [esp+18h] [ebp-50h] + wchar_t *v13; // [esp+1Ch] [ebp-4Ch] + wchar_t *String[2]; // [esp+20h] [ebp-48h] BYREF + char v15[16]; // [esp+28h] [ebp-40h] BYREF + wchar_t *v16[2]; // [esp+38h] [ebp-30h] BYREF + char v17[40]; // [esp+40h] [ebp-28h] BYREF + + String[0] = (wchar_t *)v15; + LOBYTE(v10) = 0; + std::wstring::_M_construct(String, a1, a2, v10); + v16[0] = (wchar_t *)v17; + LOBYTE(v11) = 0; + std::wstring::_M_construct(v16, a3, a4, v11); + v4 = String[0]; + v5 = v16[0]; + v13 = &String[0][(int)String[1]]; + v12 = &v16[0][(int)v16[1]]; + while ( 1 ) + { + v8 = std::collate::_M_compare(v4, v5); + if ( v8 ) + break; + v6 = &v4[wcslen(v4)]; + v7 = &v5[wcslen(v5)]; + if ( v13 == v6 && v12 == v7 ) + break; + if ( v13 == v6 ) + { + v8 = -1; + break; + } + if ( v12 == v7 ) + { + v8 = 1; + break; + } + v4 = v6 + 1; + v5 = v7 + 1; + } + if ( (char *)v16[0] != v17 ) + operator delete(v16[0]); + if ( (char *)String[0] != v15 ) + operator delete(String[0]); + return v8; +} +// 472DF8: variable 'v10' is possibly undefined +// 472E1D: variable 'v11' is possibly undefined + +//----- (00472F00) -------------------------------------------------------- +size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) +{ + return wcsxfrm(Destination, Source, MaxCount); +} + +//----- (00472F30) -------------------------------------------------------- +int __thiscall std::collate::do_transform(int this, int a2, wchar_t *a3, int a4) +{ + size_t v5; // edi + wchar_t *v6; // esi + unsigned int v7; // eax + wchar_t *v8; // eax + const wchar_t *v9; // eax + unsigned int v10; // edx + int v12; // [esp+8h] [ebp-60h] + int v13; // [esp+1Ch] [ebp-4Ch] + char *v14; // [esp+20h] [ebp-48h] + size_t v15; // [esp+24h] [ebp-44h] + unsigned int v16; // [esp+28h] [ebp-40h] + wchar_t *String; // [esp+2Ch] [ebp-3Ch] + void *v18[2]; // [esp+38h] [ebp-30h] BYREF + char v19[40]; // [esp+40h] [ebp-28h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_WORD *)(this + 8) = 0; + LOBYTE(v12) = 0; + v13 = this + 8; + v18[0] = v19; + std::wstring::_M_construct((wchar_t **)v18, a3, a4, v12); + v5 = a4 - (_DWORD)a3; + String = (wchar_t *)v18[0]; + v14 = (char *)v18[0] + 2 * (int)v18[1]; + if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v6 = (wchar_t *)operator new[](2 * v5); + while ( 1 ) + { + v7 = std::collate::_M_transform(v6, String, v5); + if ( v5 <= v7 ) + { + v5 = v7 + 1; + operator delete[](v6); + if ( v5 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v6 = (wchar_t *)operator new[](2 * v5); + v7 = std::collate::_M_transform(v6, String, v5); + } + if ( v7 > 0x1FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append(this, v6, v7); + v8 = &String[wcslen(String)]; + if ( v14 == (char *)v8 ) + break; + String = v8 + 1; + v15 = *(_DWORD *)(this + 4); + v16 = v15 + 1; + v9 = *(const wchar_t **)this; + if ( v13 == *(_DWORD *)this ) + v10 = 7; + else + v10 = *(_DWORD *)(this + 8); + if ( v16 > v10 ) + { + std::wstring::_M_mutate((const wchar_t **)this, v15, 0, 0, 1u); + v9 = *(const wchar_t **)this; + } + v9[v15] = 0; + *(_DWORD *)(this + 4) = v16; + v9[v15 + 1] = 0; + } + operator delete[](v6); + if ( v18[0] != v19 ) + operator delete(v18[0]); + return this; +} +// 472F6B: variable 'v12' is possibly undefined + +//----- (00473150) -------------------------------------------------------- +int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2) +{ + int (__stdcall *v3)(unsigned __int16 *, unsigned int); // eax + + v3 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); + if ( v3 == std::collate::do_hash ) + return std::collate::do_hash(a1, a2); + else + return v3(a1, a2); +} + +//----- (00473170) -------------------------------------------------------- +int __fastcall std::collate::compare(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (00473180) -------------------------------------------------------- +int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) +{ + unsigned __int16 *v2; // edx + int result; // eax + int v4; // ecx + + v2 = a1; + for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) + v4 = *v2++; + return result; +} + +//----- (004731B0) -------------------------------------------------------- +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) +{ + (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); + return this; +} + +//----- (004731E0) -------------------------------------------------------- +int __stdcall std::messages::_M_convert_to_char(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004731F0) -------------------------------------------------------- +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) +{ + _DWORD *result; // eax + + this[1] = 0; + result = this; + *this = this + 2; + *((_BYTE *)this + 8) = 0; + return result; +} + +//----- (00473210) -------------------------------------------------------- +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) +{ + (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); + return this; +} + +//----- (00473250) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3) +{ + int (__stdcall *v3)(int, int); // eax + + v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v3 == std::messages::do_open ) + return 0; + else + return v3(a2, a3); +} + +//----- (00473270) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3, int a4) +{ + int (__stdcall *v4)(int, int); // edx + + v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v4 == std::messages::do_open ) + return 0; + else + return v4(a2, a3); +} + +//----- (004732B0) -------------------------------------------------------- +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) +{ + int (__stdcall *result)(int); // eax + + result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); + if ( result != std::messages::do_close ) + return (int (__stdcall *)(int))result(a2); + return result; +} +// 473320: using guessed type int __stdcall std::messages::do_close(int); + +//----- (004732D0) -------------------------------------------------------- +_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + int v8; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v8) = 0; + std::string::_M_construct(this, *(_BYTE **)a6, *(_DWORD *)a6 + *(_DWORD *)(a6 + 4), v8); + return this; +} +// 4732F4: variable 'v8' is possibly undefined + +//----- (00473310) -------------------------------------------------------- +int __stdcall std::messages::do_open(int a1, int a2) +{ + return 0; +} + +//----- (00473330) -------------------------------------------------------- +int __stdcall std::messages::_M_convert_to_char(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00473340) -------------------------------------------------------- +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) +{ + _DWORD *result; // eax + + this[1] = 0; + result = this; + *this = this + 2; + *((_WORD *)this + 4) = 0; + return result; +} + +//----- (00473360) -------------------------------------------------------- +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) +{ + (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); + return this; +} + +//----- (004733A0) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3) +{ + int (__stdcall *v3)(int, int); // eax + + v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v3 == std::messages::do_open ) + return 0; + else + return v3(a2, a3); +} + +//----- (004733C0) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3, int a4) +{ + int (__stdcall *v4)(int, int); // edx + + v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v4 == std::messages::do_open ) + return 0; + else + return v4(a2, a3); +} + +//----- (00473400) -------------------------------------------------------- +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) +{ + int (__stdcall *result)(int); // eax + + result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); + if ( result != std::messages::do_close ) + return (int (__stdcall *)(int))result(a2); + return result; +} +// 473470: using guessed type int __stdcall std::messages::do_close(int); + +//----- (00473420) -------------------------------------------------------- +wchar_t **__thiscall std::messages::do_get(wchar_t **this, int a2, int a3, int a4, int a5, int a6) +{ + int v8; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v8) = 0; + std::wstring::_M_construct(this, *(wchar_t **)a6, *(_DWORD *)a6 + 2 * *(_DWORD *)(a6 + 4), v8); + return this; +} +// 473443: variable 'v8' is possibly undefined + +//----- (00473460) -------------------------------------------------------- +int __stdcall std::messages::do_open(int a1, int a2) +{ + return 0; +} + +//----- (00473480) -------------------------------------------------------- +void **__thiscall std::numpunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 4734B7: variable 'v6' is possibly undefined + +//----- (004734D0) -------------------------------------------------------- +void **__thiscall std::numpunct::do_truename(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 473507: variable 'v6' is possibly undefined + +//----- (00473520) -------------------------------------------------------- +void **__thiscall std::numpunct::do_falsename(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 473557: variable 'v6' is possibly undefined + +//----- (00473570) -------------------------------------------------------- +int __fastcall std::numpunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 36); + else + return v1(); +} + +//----- (00473590) -------------------------------------------------------- +int __fastcall std::numpunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 37); + else + return v1(); +} + +//----- (004735B0) -------------------------------------------------------- +int __fastcall std::numpunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); +} + +//----- (004735C0) -------------------------------------------------------- +int __fastcall std::numpunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); +} + +//----- (004735D0) -------------------------------------------------------- +void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::numpunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 473614: variable 'v7' is possibly undefined + +//----- (00473650) -------------------------------------------------------- +void **__thiscall std::numpunct::truename(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 20); + if ( v3 == std::numpunct::do_truename ) + { + Str = *(char **)(a2[2] + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 473694: variable 'v7' is possibly undefined + +//----- (004736D0) -------------------------------------------------------- +void **__thiscall std::numpunct::falsename(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 24); + if ( v3 == std::numpunct::do_falsename ) + { + Str = *(char **)(a2[2] + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 473714: variable 'v7' is possibly undefined + +//----- (00473750) -------------------------------------------------------- +void **__thiscall std::numpunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 473787: variable 'v6' is possibly undefined + +//----- (004737A0) -------------------------------------------------------- +wchar_t **__thiscall std::numpunct::do_truename(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 4737D8: variable 'v6' is possibly undefined + +//----- (004737F0) -------------------------------------------------------- +wchar_t **__thiscall std::numpunct::do_falsename(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 473828: variable 'v6' is possibly undefined + +//----- (00473840) -------------------------------------------------------- +int __fastcall std::numpunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 36); + else + return v1(); +} + +//----- (00473860) -------------------------------------------------------- +int __fastcall std::numpunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 38); + else + return v1(); +} + +//----- (00473880) -------------------------------------------------------- +int __fastcall std::numpunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); +} + +//----- (00473890) -------------------------------------------------------- +int __fastcall std::numpunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); +} + +//----- (004738A0) -------------------------------------------------------- +void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::numpunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 4738E4: variable 'v7' is possibly undefined + +//----- (00473920) -------------------------------------------------------- +wchar_t **__thiscall std::numpunct::truename(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 20); + if ( v3 == std::numpunct::do_truename ) + { + String = *(wchar_t **)(a2[2] + 20); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 473965: variable 'v7' is possibly undefined + +//----- (004739A0) -------------------------------------------------------- +wchar_t **__thiscall std::numpunct::falsename(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 24); + if ( v3 == std::numpunct::do_falsename ) + { + String = *(wchar_t **)(a2[2] + 28); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 4739E5: variable 'v7' is possibly undefined + +//----- (00473A20) -------------------------------------------------------- +int __fastcall std::time_get>::date_order(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); + if ( v1 == std::time_get>::do_date_order ) + return 0; + else + return v1(); +} + +//----- (00473A40) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_date( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // eax + _DWORD *v8; // esi + int v9; // edx + char v10; // dl + char v11; // al + int v13; // eax + int v14; // eax + char v15; // [esp+2Ch] [ebp-20h] + char v16; // [esp+2Ch] [ebp-20h] + + v7 = std::use_facet>(a5 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + *(char **)(v7[2] + 8)); + v10 = v9 == -1; + v15 = v10 & (v8 != 0); + if ( v15 ) + { + v10 = 0; + if ( v8[2] >= v8[3] ) + { + v14 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v8 + 36))(v8, 0); + v10 = v14 != -1 ? 0 : v15; + v8 = v14 == -1 ? 0 : v8; + } + } + v11 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v11 = 0; + if ( a3[2] >= a3[3] ) + { + v16 = v10; + v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v16; + v11 = v13 == -1; + } + } + } + if ( v10 == v11 ) + *a6 |= 2u; + return v8; +} +// 473AA9: variable 'v9' is possibly undefined + +//----- (00473B40) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_time( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // eax + _DWORD *v8; // esi + int v9; // edx + char v10; // dl + char v11; // al + int v13; // eax + int v14; // eax + char v15; // [esp+2Ch] [ebp-20h] + char v16; // [esp+2Ch] [ebp-20h] + + v7 = std::use_facet>(a5 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + *(char **)(v7[2] + 16)); + v10 = v9 == -1; + v15 = v10 & (v8 != 0); + if ( v15 ) + { + v10 = 0; + if ( v8[2] >= v8[3] ) + { + v14 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v8 + 36))(v8, 0); + v10 = v14 != -1 ? 0 : v15; + v8 = v14 == -1 ? 0 : v8; + } + } + v11 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v11 = 0; + if ( a3[2] >= a3[3] ) + { + v16 = v10; + v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v16; + v11 = v13 == -1; + } + } + } + if ( v10 == v11 ) + *a6 |= 2u; + return v8; +} +// 473BA9: variable 'v9' is possibly undefined + +//----- (00473C40) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_year( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + int v7; // edx + _DWORD *v8; // ecx + _DWORD *v9; // ebp + int v10; // ebx + char v11; // bl + char v12; // al + int v14; // eax + char v15; // [esp+34h] [ebp-38h] + _DWORD *v16; // [esp+38h] [ebp-34h] + int v17; // [esp+48h] [ebp-24h] BYREF + int v18[8]; // [esp+4Ch] [ebp-20h] BYREF + + v18[0] = 0; + v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v17, 0, 9999, 4u, a5, v18); + v9 = v8; + if ( v18[0] ) + { + *a6 |= 4u; + } + else + { + v10 = v17 - 1900; + if ( v17 < 0 ) + v10 = v17 + 100; + *(_DWORD *)(a7 + 20) = v10; + } + v11 = v7 == -1; + v15 = v11 & (v8 != 0); + if ( v15 ) + { + v11 = 0; + if ( v8[2] >= v8[3] ) + { + v16 = v8; + v14 = (*(int (**)(void))(*v8 + 36))(); + v11 = v14 != -1 ? 0 : v15; + v9 = v14 == -1 ? 0 : v16; + } + } + v12 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v12 = 0; + if ( a3[2] >= a3[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; + } + } + if ( v11 == v12 ) + *a6 |= 2u; + return v9; +} +// 473CD1: variable 'v7' is possibly undefined +// 473C40: using guessed type int var_20[8]; + +//----- (00473DA0) -------------------------------------------------------- +int __fastcall std::time_get>::get_weekday(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); +} + +//----- (00473DB0) -------------------------------------------------------- +int std::time_get>::do_date_order() +{ + return 0; +} + +//----- (00473DC0) -------------------------------------------------------- +int __fastcall std::time_get>::get_monthname(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); +} + +//----- (00473DD0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_num( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int *a5, + signed int a6, + int a7, + unsigned int a8, + int a9, + _DWORD *a10) +{ + int v10; // ebx + unsigned int v12; // ebp + int v13; // edi + char v14; // bl + _BYTE *v15; // eax + int v16; // ebx + int v17; // edx + int (__stdcall *v18)(unsigned __int8, int); // edx + unsigned int v19; // eax + bool v20; // dl + bool v21; // bl + int v22; // eax + int v24; // eax + unsigned int v26; // [esp+20h] [ebp-2Ch] + _BYTE *v27; // [esp+24h] [ebp-28h] + bool v29; // [esp+2Fh] [ebp-1Dh] + + v10 = 10; + v27 = std::use_facet>(a9 + 108); + if ( a8 != 2 ) + v10 = a8 == 4 ? 1000 : 1; + v26 = 0; + v12 = v10; + v13 = 0; + while ( 1 ) + { + v20 = a2 == -1; + v21 = v20 && a1 != 0; + if ( v21 ) + { + if ( a1[2] >= a1[3] ) + { + v24 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v20 = a2 == -1; + v14 = v24 == -1 && v21; + a1 = v24 == -1 ? 0 : a1; + } + else + { + v14 = 0; + } + } + else + { + v14 = a2 == -1; + } + if ( a3 && a4 == -1 ) + { + if ( a3[2] >= a3[3] ) + { + v29 = v20; + v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v20 = v29; + if ( v22 == -1 ) + { + a3 = 0; + v14 ^= 1u; + } + } + } + else + { + v14 ^= a4 == -1; + } + if ( v26 >= a8 || !v14 ) + break; + if ( a1 && v20 ) + { + v15 = (_BYTE *)a1[2]; + if ( (unsigned int)v15 >= a1[3] ) + { + v15 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v15 == (_BYTE *)-1 ) + { + v16 = 255; + LOBYTE(v15) = -1; + a1 = 0; + } + else + { + v16 = (unsigned __int8)v15; + } + } + else + { + v16 = (unsigned __int8)*v15; + LOBYTE(v15) = *v15; + } + } + else + { + LOBYTE(v15) = a2; + v16 = (unsigned __int8)a2; + } + v17 = (char)v27[v16 + 285]; + if ( !(_BYTE)v17 ) + { + v18 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v27 + 32); + if ( v18 == std::ctype::do_narrow ) + { + if ( (_BYTE)v15 == 42 ) + goto LABEL_32; + } + else + { + LOBYTE(v15) = v18((unsigned __int8)v15, 42); + if ( (_BYTE)v15 == 42 ) + goto LABEL_32; + } + v17 = (char)v15; + v27[v16 + 285] = (_BYTE)v15; + } + if ( (unsigned __int8)(v17 - 48) > 9u ) + goto LABEL_32; + v13 = v17 + 10 * v13 - 48; + if ( (int)(v13 * v12) > a7 || (int)(v12 + v13 * v12) <= a6 ) + goto LABEL_32; + v19 = a1[2]; + v12 /= 0xAu; + if ( v19 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v19 + 1; + ++v26; + a2 = -1; + } + if ( v26 == a8 ) + { +LABEL_35: + *a5 = v13; + return a1; + } +LABEL_32: + if ( a8 == 4 && v26 == 2 ) + { + v13 -= 100; + goto LABEL_35; + } + *a10 |= 4u; + return a1; +} + +//----- (00474090) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_weekday( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // dl + char v14; // al + int v16; // eax + int v17; // eax + char v18; // [esp+38h] [ebp-64h] + char v19; // [esp+38h] [ebp-64h] + _DWORD *v20; // [esp+3Ch] [ebp-60h] + unsigned int v21; // [esp+40h] [ebp-5Ch] BYREF + int v22; // [esp+44h] [ebp-58h] BYREF + int v23[21]; // [esp+48h] [ebp-54h] BYREF + + v22 = 0; + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v23[0] = v7[18]; + v23[1] = v7[19]; + v23[2] = v7[20]; + v23[3] = v7[21]; + v23[4] = v7[22]; + v23[5] = v7[23]; + v23[6] = v7[24]; + v23[7] = v7[11]; + v23[8] = v7[12]; + v23[9] = v7[13]; + v23[10] = v7[14]; + v23[11] = v7[15]; + v8 = v7[16]; + v9 = v7[17]; + v23[12] = v8; + v23[13] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v21, + (int)v23, + 7u, + a5, + &v22); + v12 = v11; + if ( v22 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 24) = v21; + v13 = v10 == -1; + v18 = v13 & (v11 != 0); + if ( v18 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v20 = v11; + v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v17 != -1 ? 0 : v18; + v12 = v17 == -1 ? 0 : v20; + } + } + v14 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v14 = 0; + if ( a3[2] >= a3[3] ) + { + v19 = v13; + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v19; + v14 = v16 == -1; + } + } + } + if ( v13 == v14 ) + *a6 |= 2u; + return v12; +} +// 47419F: variable 'v10' is possibly undefined + +//----- (00474260) -------------------------------------------------------- +int __stdcall std::time_get>::_M_extract_name( + unsigned __int64 a1, + _DWORD *a2, + int a3, + _DWORD *a4, + int a5, + _DWORD *a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + void *v9; // esp + void *v10; // esp + char v11; // dl + unsigned __int8 v12; // bl + char v14; // dl + _DWORD *v15; // esi + int v16; // edx + unsigned int v17; // ebx + int v18; // edi + char v19; // al + int v20; // ecx + _DWORD *v21; // edi + _DWORD *v22; // edx + void *v23; // edi + size_t v24; // eax + unsigned int v25; // ebx + size_t v26; // eax + void *v27; // edi + unsigned int v28; // eax + char v29; // si + unsigned __int8 v30; // si + unsigned int i; // esi + char v32; // di + char v33; // al + char *v34; // eax + unsigned int v35; // eax + int v36; // eax + const char *v37; // edi + char *v38; // ebx + size_t v39; // eax + unsigned int v40; // esi + _DWORD **v41; // edi + unsigned __int8 v42; // bl + char v43; // bl + char v44; // al + _BYTE *v45; // eax + unsigned __int8 v46; // dl + char v47; // bl + int v48; // edx + bool v49; // zf + int v50; // eax + int v51; // esi + int v52; // eax + int v53; // eax + char *v54; // eax + int v55; // eax + int v56; // eax + int v57; // eax + int v58; // eax + int v59; // edx + int v60; // edx + int v61; // eax + _DWORD *v62; // [esp+10h] [ebp-38h] BYREF + _DWORD *v63; // [esp+14h] [ebp-34h] + void *v64; // [esp+18h] [ebp-30h] + unsigned __int8 v65; // [esp+1Fh] [ebp-29h] + unsigned __int64 v66; // [esp+20h] [ebp-28h] + _DWORD **v67; // [esp+28h] [ebp-20h] + unsigned int v68; // [esp+2Ch] [ebp-1Ch] + + v67 = (_DWORD **)HIDWORD(a1); + v66 = a1; + v62 = a2; + v64 = std::use_facet>(a7 + 108); + v8 = 16 * ((unsigned int)(4 * (_DWORD)a6 + 27) >> 4); + v9 = alloca(v8); + v10 = alloca(v8); + LOBYTE(v68) = HIDWORD(a1) == -1; + if ( ((unsigned __int8)v68 & ((_DWORD)a1 != 0)) != 0 ) + { + if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) + { + v65 = v68 & ((_DWORD)a1 != 0); + v55 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); + v11 = v55 != -1 ? 0 : v65; + LODWORD(v66) = v55 == -1 ? 0 : v66; + } + else + { + v11 = 0; + } + } + else + { + v11 = v68; + } + v65 = a3 == -1; + if ( (v65 & (a2 != 0)) != 0 ) + { + if ( a2[2] >= a2[3] ) + { + v56 = *a2; + LOBYTE(v63) = v11; + v57 = (*(int (__fastcall **)(_DWORD *))(v56 + 36))(a2); + v11 = (char)v63; + v12 = v57 == -1 && v65 & (a2 != 0); + v62 = v57 == -1 ? 0 : a2; + } + else + { + v12 = 0; + } + } + else + { + v12 = v65; + } + if ( v11 == v12 + || ((_DWORD)v66 && (_BYTE)v68 + ? ((v54 = *(char **)(v66 + 8), (unsigned int)v54 >= *(_DWORD *)(v66 + 12)) + ? (v58 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66), + v14 = v58 != -1 ? v58 : -1, + LODWORD(v66) = v58 == -1 ? 0 : v66) + : (v14 = *v54)) + : (v14 = (char)v67), + !a6) ) + { +LABEL_6: + *a8 |= 4u; + return v66; + } + LOBYTE(v68) = v14; + v15 = 0; + v16 = a5; + v17 = 0; + v67 = &v62; + v18 = (int)v64; + do + { + while ( 1 ) + { + v20 = **(char **)(v16 + 4 * (_DWORD)v15); + if ( (_BYTE)v20 == (_BYTE)v68 ) + break; + a5 = v16; + v19 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v18 + 8))(v18, v20); + v16 = a5; + if ( v19 == (_BYTE)v68 ) + break; + v15 = (_DWORD *)((char *)v15 + 1); + if ( a6 == v15 ) + goto LABEL_16; + } + v67[v17++] = v15; + v15 = (_DWORD *)((char *)v15 + 1); + } + while ( a6 != v15 ); +LABEL_16: + v21 = v67; + v67 = 0; + if ( v17 <= 1 ) + goto LABEL_40; + v22 = v21; + do + { + v23 = (void *)*v22; + v63 = v22; + v24 = strlen(*(const char **)(a5 + 4 * (_DWORD)v23)); + HIDWORD(v66) = v17; + v25 = 1; + v68 = v24; + v64 = v23; + do + { + v26 = strlen(*(const char **)(a5 + 4 * v63[v25])); + if ( v68 > v26 ) + v68 = v26; + ++v25; + } + while ( v25 < HIDWORD(v66) ); + v22 = v63; + v17 = HIDWORD(v66); + v27 = v64; + v28 = *(_DWORD *)(v66 + 8); + if ( v28 >= *(_DWORD *)(v66 + 12) ) + { + HIDWORD(v66) = v63; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 40))(v66); + v22 = (_DWORD *)HIDWORD(v66); + } + else + { + *(_DWORD *)(v66 + 8) = v28 + 1; + } + v67 = (_DWORD **)((char *)v67 + 1); + if ( (unsigned int)v67 >= v68 ) + goto LABEL_58; + LOBYTE(v68) = 0; + if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) + { + v51 = v66; + v52 = *(_DWORD *)v66; + HIDWORD(v66) = v22; + v53 = (*(int (__fastcall **)(_DWORD))(v52 + 36))(v66); + v22 = (_DWORD *)HIDWORD(v66); + LOBYTE(v68) = v53 == -1; + LODWORD(v66) = ((unsigned __int8)v68 - 1) & v51; + } + v29 = v65 & (v62 != 0); + if ( v29 ) + { + if ( v62[2] < v62[3] ) + { + if ( !(_BYTE)v68 ) + goto LABEL_58; + goto LABEL_30; + } + HIDWORD(v66) = v22; + v50 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); + v22 = (_DWORD *)HIDWORD(v66); + v30 = v50 != -1 ? 0 : v29; + v62 = v50 == -1 ? 0 : v62; + } + else + { + v30 = v65; + } + if ( (_BYTE)v68 == v30 ) + goto LABEL_58; +LABEL_30: + for ( i = 0; ; v27 = (void *)v22[i] ) + { + v32 = *((_BYTE *)v67 + *(_DWORD *)(a5 + 4 * (_DWORD)v27)); + v33 = -1; + if ( (_DWORD)v66 ) + { + v34 = *(char **)(v66 + 8); + if ( (unsigned int)v34 >= *(_DWORD *)(v66 + 12) ) + { + v68 = (unsigned int)v22; + v48 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); + v33 = v48 != -1 ? v48 : -1; + v49 = v48 == -1; + v22 = (_DWORD *)v68; + LODWORD(v66) = v49 ? 0 : v66; + } + else + { + v33 = *v34; + } + } + if ( v32 == v33 ) + break; + v22[i] = v22[--v17]; + if ( v17 <= i ) + goto LABEL_38; +LABEL_32: + ; + } + if ( v17 > ++i ) + goto LABEL_32; +LABEL_38: + ; + } + while ( v17 > 1 ); + HIDWORD(v66) = -1; + v21 = v22; +LABEL_40: + if ( v17 != 1 ) + goto LABEL_6; + v35 = *(_DWORD *)(v66 + 8); + if ( v35 >= *(_DWORD *)(v66 + 12) ) + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 40))(v66); + else + *(_DWORD *)(v66 + 8) = v35 + 1; + v36 = *v21; + v37 = *(const char **)(a5 + 4 * *v21); + HIDWORD(v66) = v36; + v38 = (char *)v67 + 1; + v39 = strlen(v37); + v67 = (_DWORD **)v39; + if ( (unsigned int)v38 < v39 ) + { + v68 = (unsigned int)v37; + v40 = v66; + v41 = (_DWORD **)v38; + while ( 1 ) + { + while ( 1 ) + { + v46 = 0; + if ( *(_DWORD *)(v40 + 8) >= *(_DWORD *)(v40 + 12) ) + { + v46 = (*(int (__fastcall **)(unsigned int, _DWORD))(*(_DWORD *)v40 + 36))(v40, 0) == -1; + v40 &= v46 - 1; + } + v47 = v65 & (v62 != 0); + if ( v47 ) + { + if ( v62[2] >= v62[3] ) + { + LOBYTE(v66) = v46; + v61 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); + v46 = v66; + v42 = v61 != -1 ? 0 : v47; + v62 = v61 == -1 ? 0 : v62; + } + else + { + v42 = 0; + } + } + else + { + v42 = v65; + } + if ( v46 == v42 ) + { +LABEL_73: + v66 = v40 | 0xFFFFFFFF00000000LL; + goto LABEL_6; + } + v43 = *((_BYTE *)v41 + v68); + v44 = -1; + if ( v40 ) + break; +LABEL_48: + if ( v43 != v44 ) + goto LABEL_73; + v45 = *(_BYTE **)(v40 + 8); + if ( (unsigned int)v45 < *(_DWORD *)(v40 + 12) ) + goto LABEL_50; + v41 = (_DWORD **)((char *)v41 + 1); + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 40))(v40); + if ( v41 == v67 ) + { +LABEL_75: + LODWORD(v66) = v40; + goto LABEL_76; + } + } + v45 = *(_BYTE **)(v40 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(v40 + 12) ) + { + v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 36))(v40); + v44 = v60 != -1 ? v60 : -1; + v40 &= (v60 == -1) - 1; + goto LABEL_48; + } + if ( v43 != *v45 ) + goto LABEL_73; +LABEL_50: + v41 = (_DWORD **)((char *)v41 + 1); + *(_DWORD *)(v40 + 8) = v45 + 1; + if ( v41 == v67 ) + goto LABEL_75; + } + } + if ( v38 != (char *)v39 ) + { +LABEL_58: + HIDWORD(v66) = -1; + goto LABEL_6; + } +LABEL_76: + v59 = HIDWORD(v66); + HIDWORD(v66) = -1; + *a4 = v59; + return v66; +} + +//----- (004747E0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_monthname( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // edx + int v9; // edx + int v10; // edx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // dl + char v14; // al + int v16; // eax + int v17; // eax + char v18; // [esp+38h] [ebp-94h] + char v19; // [esp+38h] [ebp-94h] + _DWORD *v20; // [esp+3Ch] [ebp-90h] + unsigned int v21; // [esp+48h] [ebp-84h] BYREF + int v22; // [esp+4Ch] [ebp-80h] BYREF + int v23[31]; // [esp+50h] [ebp-7Ch] BYREF + + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v23[0] = v7[37]; + v23[1] = v7[38]; + v23[2] = v7[39]; + v23[3] = v7[40]; + v23[4] = v7[41]; + v23[5] = v7[42]; + v23[6] = v7[43]; + v23[7] = v7[44]; + v23[8] = v7[45]; + v23[9] = v7[46]; + v23[10] = v7[47]; + v23[11] = v7[48]; + v23[12] = v7[25]; + v23[13] = v7[26]; + v23[14] = v7[27]; + v23[15] = v7[28]; + v8 = v7[29]; + v22 = 0; + v23[16] = v8; + v23[17] = v7[30]; + v23[18] = v7[31]; + v23[19] = v7[32]; + v23[20] = v7[33]; + v23[21] = v7[34]; + v9 = v7[35]; + v23[23] = v7[36]; + v23[22] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v21, + (int)v23, + 0xCu, + a5, + &v22); + v12 = v11; + if ( v22 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 16) = v21; + v13 = v10 == -1; + v18 = v13 & (v11 != 0); + if ( v18 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v20 = v11; + v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v17 != -1 ? 0 : v18; + v12 = v17 == -1 ? 0 : v20; + } + } + v14 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v14 = 0; + if ( a3[2] >= a3[3] ) + { + v19 = v13; + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v19; + v14 = v16 == -1; + } + } + } + if ( v13 == v14 ) + *a6 |= 2u; + return v12; +} +// 47498C: variable 'v10' is possibly undefined + +//----- (00474A50) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_via_format( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7, + char *a8) +{ + size_t v8; // esi + _BYTE *v9; // ebx + _BYTE *v10; // edi + char v12; // dl + int v13; // edx + char v14; // al + char v15; // cl + int (__stdcall *v16)(unsigned __int8, int); // eax + int v17; // ebp + char v18; // dl + char v19; // al + int (__stdcall *v20)(unsigned __int8, int); // edx + char v21; // dl + char v22; // dl + int v23; // eax + int v24; // eax + int v25; // esi + char v26; // al + int (__stdcall *v27)(unsigned __int8, int); // edx + _DWORD *v28; // edi + _BYTE *v30; // eax + int v31; // edx + int v32; // edx + _DWORD *v33; // eax + int v34; // eax + int v35; // edx + _DWORD *v36; // eax + int v37; // eax + int v38; // edx + int v39; // esi + int v40; // edx + char v41; // al + int (__stdcall *v42)(unsigned __int8, int); // eax + unsigned int v43; // eax + int v44; // eax + _DWORD *v45; // eax + int v46; // edx + char v47; // si + char v48; // dl + int v49; // esi + char v50; // al + int v51; // esi + char v52; // al + _DWORD *v53; // eax + int v54; // edx + int v55; // edx + _DWORD *v56; // eax + _DWORD *v57; // eax + int v58; // edx + char v59; // al + void (__thiscall *v60)(_BYTE *, const char *, const char *, int *); // eax + _DWORD *v61; // eax + int v62; // edx + int v63; // edx + char v64; // al + void (__thiscall *v65)(_BYTE *, const char *, const char *, int *); // eax + int v66; // edx + char v67; // al + void (__thiscall *v68)(_BYTE *, const char *, void *, int *); // eax + int v69; // esi + char v70; // al + int (__stdcall *v71)(unsigned __int8, int); // eax + _DWORD *v72; // eax + _DWORD *v73; // eax + int v74; // edx + int v75; // eax + unsigned __int8 *v76; // eax + int v77; // edx + int v78; // eax + unsigned __int8 *v79; // eax + unsigned __int8 *v80; // eax + unsigned __int8 *v81; // eax + int v82; // eax + int v83; // eax + int v84; // eax + char *v85; // edx + _BYTE *v86; // eax + _BYTE *v87; // eax + char *Str; // [esp+0h] [ebp-BCh] + int v89; // [esp+14h] [ebp-A8h] + int v90; // [esp+20h] [ebp-9Ch] + bool v91; // [esp+3Ah] [ebp-82h] + bool v92; // [esp+3Ah] [ebp-82h] + char v93; // [esp+3Ah] [ebp-82h] + char v94; // [esp+3Bh] [ebp-81h] + char v95; // [esp+3Bh] [ebp-81h] + size_t v98; // [esp+44h] [ebp-78h] + char v99; // [esp+44h] [ebp-78h] + size_t v100; // [esp+4Ch] [ebp-70h] + char *v101; // [esp+50h] [ebp-6Ch] + bool v102; // [esp+50h] [ebp-6Ch] + _DWORD *v103; // [esp+58h] [ebp-64h] + int v104; // [esp+5Ch] [ebp-60h] + int v105; // [esp+5Ch] [ebp-60h] + int v106; // [esp+68h] [ebp-54h] BYREF + int v107; // [esp+6Ch] [ebp-50h] BYREF + int v108[3]; // [esp+70h] [ebp-4Ch] BYREF + int v109; // [esp+7Ch] [ebp-40h] + int v110; // [esp+80h] [ebp-3Ch] + int v111; // [esp+84h] [ebp-38h] + int v112; // [esp+88h] [ebp-34h] + int v113; // [esp+8Ch] [ebp-30h] + int v114; // [esp+90h] [ebp-2Ch] + int v115; // [esp+94h] [ebp-28h] + int v116; // [esp+98h] [ebp-24h] + int v117; // [esp+9Ch] [ebp-20h] + + v8 = 0; + v103 = std::use_facet>(a5 + 108); + v9 = std::use_facet>(a5 + 108); + v106 = 0; + v100 = strlen(a8); + v10 = v9; + while ( 1 ) + { + v91 = a2 == -1; + if ( v91 && a1 != 0 ) + { + if ( a1[2] >= a1[3] ) + { + v78 = (*(int (__thiscall **)(_DWORD *, char *))(*a1 + 36))(a1, Str); + v12 = v78 == -1 && v91 && a1 != 0; + a1 = v78 == -1 ? 0 : a1; + } + else + { + v12 = 0; + } + } + else + { + v12 = a2 == -1; + } + v94 = a4 == -1; + if ( a3 && a4 == -1 ) + { + if ( a3[2] >= a3[3] ) + { + v99 = v12; + v24 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v12 = v99; + if ( v24 == -1 ) + { + a3 = 0; + v12 = v99 ^ 1; + } + } + } + else + { + v12 ^= v94; + } + if ( v8 >= v100 || !v12 ) + break; + if ( v106 ) + { + v28 = a1; +LABEL_44: + *a6 |= 4u; + return v28; + } + v13 = (unsigned __int8)a8[v8]; + v101 = &a8[v8]; + v98 = v8 + 1; + v14 = v10[v13 + 285]; + v15 = a8[v8]; + if ( v14 ) + { +LABEL_15: + if ( v14 != 37 ) + goto LABEL_25; + v17 = (unsigned __int8)a8[v8 + 1]; + v18 = v10[v17 + 285]; + v19 = a8[v8 + 1]; + if ( !v18 ) + { + v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v20 != std::ctype::do_narrow ) + v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v10, v19, 0); + if ( !v19 ) + { +LABEL_40: + v106 |= 4u; + goto LABEL_41; + } + v10[v17 + 285] = v19; + v18 = v19; + } + v107 = 0; + if ( (v18 == 69 || v18 == 79) + && (v98 = v8 + 2, v25 = (unsigned __int8)a8[v8 + 2], v18 = v10[v25 + 285], v26 = v25, !v18) ) + { + v27 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v27 != std::ctype::do_narrow ) + v26 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v27)(v10, (char)v25, 0); + if ( !v26 ) + goto LABEL_40; + v10[v25 + 285] = v26; + v21 = v26 - 65; + if ( (unsigned __int8)(v26 - 65) > 0x38u ) + goto LABEL_40; + } + else + { + v21 = v18 - 65; + } + switch ( v21 ) + { + case 0: + v36 = (_DWORD *)v103[2]; + v108[0] = v36[11]; + v108[1] = v36[12]; + v108[2] = v36[13]; + v109 = v36[14]; + v110 = v36[15]; + v111 = v36[16]; + v37 = v36[17]; + goto LABEL_62; + case 1: + v72 = (_DWORD *)v103[2]; + v108[0] = v72[25]; + v108[1] = v72[26]; + v108[2] = v72[27]; + v109 = v72[28]; + v110 = v72[29]; + v111 = v72[30]; + v112 = v72[31]; + v113 = v72[32]; + v114 = v72[33]; + v115 = v72[34]; + v116 = v72[35]; + v34 = v72[36]; + goto LABEL_59; + case 2: + case 24: + case 56: + a1 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 0, + 9999, + 4u, + a5, + &v106); + a2 = v31; + if ( !v106 ) + { + v32 = v107 - 1900; + if ( v107 < 0 ) + v32 = v107 + 100; + a7[5] = v32; + } + break; + case 3: + v59 = v10[28]; + if ( v59 == 1 ) + goto LABEL_102; + if ( !v59 ) + std::ctype::_M_widen_init((int)v10); + v60 = *(void (__thiscall **)(_BYTE *, const char *, const char *, int *))(*(_DWORD *)v10 + 28); + if ( (char *)v60 == (char *)std::ctype::do_widen ) +LABEL_102: + strcpy((char *)v108, "%m/%d/%y"); + else + v60(v10, "%m/%d/%y", "%H:%M", v108); + goto LABEL_103; + case 7: + v61 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 0, + 23, + 2u, + a5, + &v106); + goto LABEL_105; + case 8: + v61 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 1, + 12, + 2u, + a5, + &v106); +LABEL_105: + a1 = v61; + a2 = v62; + if ( !v106 ) + a7[2] = v107; + break; + case 12: + a1 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 0, + 59, + 2u, + a5, + &v106); + a2 = v63; + if ( !v106 ) + a7[1] = v107; + break; + case 17: + v64 = v10[28]; + if ( v64 == 1 ) + goto LABEL_114; + if ( !v64 ) + std::ctype::_M_widen_init((int)v10); + v65 = *(void (__thiscall **)(_BYTE *, const char *, const char *, int *))(*(_DWORD *)v10 + 28); + if ( (char *)v65 == (char *)std::ctype::do_widen ) +LABEL_114: + strcpy((char *)v108, "%H:%M"); + else + v65(v10, "%H:%M", "%H:%M:%S", v108); + goto LABEL_103; + case 18: + a1 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 0, + 61, + 2u, + a5, + &v106); + a2 = v66; + if ( !v106 ) + *a7 = v107; + break; + case 19: + v67 = v10[28]; + if ( v67 == 1 ) + goto LABEL_121; + if ( !v67 ) + std::ctype::_M_widen_init((int)v10); + v68 = *(void (__thiscall **)(_BYTE *, const char *, void *, int *))(*(_DWORD *)v10 + 28); + if ( (char *)v68 == (char *)std::ctype::do_widen ) +LABEL_121: + strcpy((char *)v108, "%H:%M:%S"); + else + v68(v10, "%H:%M:%S", &unk_52F882, v108); +LABEL_103: + v57 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + a2, + (int)a3, + a4, + a5, + (int)&v106, + (int)a7, + (char *)v108); + goto LABEL_97; + case 23: + v57 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + a2, + (int)a3, + a4, + a5, + (int)&v106, + (int)a7, + *(char **)(v103[2] + 16)); + goto LABEL_97; + case 25: + if ( a1 && a2 == -1 ) + { + v81 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v81 >= a1[3] ) + { + v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v44 == -1 ) + { + v44 = 255; + a1 = 0; + } + else + { + v44 = (unsigned __int8)v44; + } + } + else + { + v44 = *v81; + } + } + else + { + v44 = (unsigned __int8)a2; + } + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * v44) & 1) == 0 ) + goto LABEL_40; + v45 = (_DWORD *)std::time_get>::_M_extract_name( + __PAIR64__(a2, (unsigned int)a1), + a3, + a4, + v108, + (int)std::__timepunct_cache::_S_timezones, + (_DWORD *)0xE, + a5, + &v106); + a1 = v45; + v92 = v46 == -1; + v105 = v46; + a2 = v46; + v47 = v92; + v102 = v92 && v45 != 0; + if ( v102 ) + { + v47 = 0; + if ( v45[2] >= v45[3] && (*(int (__fastcall **)(_DWORD *))(*v45 + 36))(v45) == -1 ) + { + v47 = v102; + a1 = 0; + v102 = 0; + } + } + v48 = v94 & (a3 != 0); + if ( v48 ) + { + v94 = 0; + if ( a3[2] >= a3[3] ) + { + v95 = v48; + v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v94 = v82 != -1 ? 0 : v95; + a3 = v82 == -1 ? 0 : a3; + } + } + if ( v47 != v94 && !(v108[0] | v106) ) + { + LOBYTE(v49) = v105; + if ( v102 ) + { + v86 = (_BYTE *)a1[2]; + if ( (unsigned int)v86 >= a1[3] ) + { + v49 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + a1 = v49 == -1 ? 0 : a1; + } + else + { + LOBYTE(v49) = *v86; + } + } + if ( v10[28] ) + { + v50 = v10[74]; + } + else + { + std::ctype::_M_widen_init((int)v10); + v50 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 45); + } + if ( (_BYTE)v49 == v50 + || (a1 && v92 + ? ((v87 = (_BYTE *)a1[2], (unsigned int)v87 >= a1[3]) + ? (v51 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1), a1 = v51 == -1 ? 0 : a1) + : (_DWORD *)(LOBYTE(v51) = *v87)) + : (_DWORD *)(LOBYTE(v51) = v105), + !v10[28] + ? (std::ctype::_M_widen_init((int)v10), + v52 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 43), + Str = v85) + : (char *)(v52 = v10[72]), + (_BYTE)v51 == v52) ) + { + v53 = std::time_get>::_M_extract_num( + a1, + v105, + a3, + a4, + v108, + 0, + 23, + 2u, + a5, + &v106); + a1 = std::time_get>::_M_extract_num( + v53, + v54, + a3, + a4, + v108, + 0, + 59, + 2u, + a5, + &v106); + a2 = v55; + } + } + break; + case 32: + v56 = (_DWORD *)v103[2]; + v108[0] = v56[18]; + v108[1] = v56[19]; + v108[2] = v56[20]; + v109 = v56[21]; + v110 = v56[22]; + v111 = v56[23]; + v37 = v56[24]; +LABEL_62: + v112 = v37; + a1 = (_DWORD *)std::time_get>::_M_extract_name( + __PAIR64__(a2, (unsigned int)a1), + a3, + a4, + &v107, + (int)v108, + (_DWORD *)7, + a5, + &v106); + a2 = v38; + if ( !v106 ) + a7[6] = v107; + break; + case 33: + case 39: + v33 = (_DWORD *)v103[2]; + v108[0] = v33[37]; + v108[1] = v33[38]; + v108[2] = v33[39]; + v109 = v33[40]; + v110 = v33[41]; + v111 = v33[42]; + v112 = v33[43]; + v113 = v33[44]; + v114 = v33[45]; + v115 = v33[46]; + v116 = v33[47]; + v34 = v33[48]; +LABEL_59: + v117 = v34; + a1 = (_DWORD *)std::time_get>::_M_extract_name( + __PAIR64__(a2, (unsigned int)a1), + a3, + a4, + &v107, + (int)v108, + (_DWORD *)0xC, + a5, + &v106); + a2 = v35; + if ( !v106 ) + a7[4] = v107; + break; + case 34: + v57 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + a2, + (int)a3, + a4, + a5, + (int)&v106, + (int)a7, + *(char **)(v103[2] + 24)); + goto LABEL_97; + case 35: + v90 = a5; + v89 = 1; + goto LABEL_136; + case 36: + if ( a1 && a2 == -1 ) + { + v76 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v76 < a1[3] ) + { + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * *v76) & 0x20) != 0 ) + goto LABEL_144; + goto LABEL_151; + } + v75 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + a1 = v75 == -1 ? 0 : a1; + } + else + { + LOBYTE(v75) = a2; + } + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)v75) & 0x20) != 0 ) + { + v76 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v76 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else +LABEL_144: + a1[2] = v76 + 1; + v73 = std::time_get>::_M_extract_num( + a1, + -1, + a3, + a4, + &v107, + 1, + 9, + 1u, + a5, + &v106); + goto LABEL_137; + } +LABEL_151: + v90 = a5; + v89 = 10; +LABEL_136: + v73 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + v89, + 31, + 2u, + v90, + &v106); +LABEL_137: + a1 = v73; + a2 = v74; + if ( !v106 ) + a7[3] = v107; + break; + case 44: + a1 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 1, + 12, + 2u, + a5, + &v106); + a2 = v77; + if ( !v106 ) + a7[4] = v107 - 1; + break; + case 45: + if ( a1 && a2 == -1 ) + { + v79 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v79 >= a1[3] ) + { + v83 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v40 = v83; + if ( v83 == -1 ) + { + v40 = -1; + v39 = 255; + a1 = 0; + } + else + { + v39 = (unsigned __int8)v83; + } + } + else + { + v39 = *v79; + v40 = v39; + } + } + else + { + v39 = (unsigned __int8)a2; + v40 = a2; + } + v41 = v10[v39 + 285]; + if ( v41 ) + goto LABEL_72; + v42 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v42 != std::ctype::do_narrow ) + v40 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v42)(v10, (char)v40, 0); + if ( (_BYTE)v40 ) + { + v10[v39 + 285] = v40; + v41 = v40; +LABEL_72: + if ( v41 == 10 ) + goto LABEL_73; + } + goto LABEL_40; + case 51: + if ( a1 && a2 == -1 ) + { + v80 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v80 >= a1[3] ) + { + v84 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v84 == -1 ) + { + v69 = 255; + v40 = -1; + a1 = 0; + } + else + { + v40 = v84; + v69 = (unsigned __int8)v84; + } + } + else + { + v69 = *v80; + v40 = v69; + } + } + else + { + v40 = a2; + v69 = (unsigned __int8)a2; + } + v70 = v10[v69 + 285]; + if ( v70 ) + goto LABEL_131; + v71 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v71 != std::ctype::do_narrow ) + v40 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v71)(v10, (char)v40, 0); + if ( !(_BYTE)v40 ) + goto LABEL_40; + v10[v69 + 285] = v40; + v70 = v40; +LABEL_131: + if ( v70 != 9 ) + goto LABEL_40; +LABEL_73: + v43 = a1[2]; + if ( v43 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *, int))(*a1 + 40))(a1, v40); + else + a1[2] = v43 + 1; + a2 = -1; + break; + case 55: + v57 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + a2, + (int)a3, + a4, + a5, + (int)&v106, + (int)a7, + *(char **)(v103[2] + 8)); +LABEL_97: + a1 = v57; + a2 = v58; + break; + default: + goto LABEL_40; + } +LABEL_41: + v8 = v98 + 1; + } + else + { + v16 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v16 != std::ctype::do_narrow ) + { + v104 = (unsigned __int8)a8[v8]; + v15 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v16)(v10, (char)v13, 0); + v13 = v104; + } + if ( v15 ) + { + v10[v13 + 285] = v15; + v14 = v15; + goto LABEL_15; + } +LABEL_25: + v22 = *v101; + if ( !a1 || a2 != -1 ) + { + LOBYTE(v23) = a2; + goto LABEL_28; + } + v30 = (_BYTE *)a1[2]; + if ( (unsigned int)v30 >= a1[3] ) + { + v93 = *v101; + v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v22 = v93; + a1 = v23 == -1 ? 0 : a1; +LABEL_28: + if ( v22 != (_BYTE)v23 ) + goto LABEL_29; + v30 = (_BYTE *)a1[2]; + if ( (unsigned int)v30 < a1[3] ) + { +LABEL_47: + a1[2] = v30 + 1; + goto LABEL_48; + } + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); +LABEL_48: + a2 = -1; + ++v8; + } + else + { + if ( v22 == *v30 ) + goto LABEL_47; +LABEL_29: + v106 |= 4u; + ++v8; + } + } + } + v28 = a1; + if ( v106 || v8 != v100 ) + goto LABEL_44; + return v28; +} +// 474E00: variable 'v31' is possibly undefined +// 474F2B: variable 'v35' is possibly undefined +// 474FE7: variable 'v38' is possibly undefined +// 4750E5: variable 'v46' is possibly undefined +// 475226: variable 'v54' is possibly undefined +// 475230: variable 'v55' is possibly undefined +// 4752D7: variable 'v58' is possibly undefined +// 475382: variable 'v62' is possibly undefined +// 475431: variable 'v63' is possibly undefined +// 4754EB: variable 'v66' is possibly undefined +// 47569F: variable 'v74' is possibly undefined +// 4757A6: variable 'v77' is possibly undefined +// 4757F8: variable 'Str' is possibly undefined +// 475ABF: variable 'v85' is possibly undefined +// 516500: using guessed type void *std::__timepunct_cache::_S_timezones[2]; + +//----- (00475B50) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + unsigned int *a5, + int a6, + unsigned int a7, + int a8, + _DWORD *a9) +{ + int v9; // eax + void *v10; // esp + void *v11; // esp + char v12; // dl + bool v13; // bl + char v14; // bl + int v15; // edi + unsigned int v16; // esi + char v17; // dl + bool v18; // bl + char v19; // bl + unsigned int v20; // edx + unsigned int *v21; // ecx + unsigned int v22; // edi + unsigned int v23; // eax + char *v25; // eax + unsigned int v26; // eax + int v27; // edx + unsigned int v28; // ebx + int v29; // edi + char v30; // al + int v31; // ecx + unsigned int v32; // eax + int v33; // eax + void *v34; // esp + int v35; // edi + void *v36; // esp + int v37; // ebx + int v38; // eax + int v39; // eax + _DWORD *v40; // ebx + int v41; // eax + int v42; // eax + int v43; // eax + _DWORD *v44; // ebx + int v45; // eax + _BYTE *v46; // eax + int v47; // eax + int v48; // eax + _DWORD *v49; // esi + int v50; // eax + _BYTE v51[8]; // [esp+10h] [ebp-48h] BYREF + _BYTE *v52; // [esp+18h] [ebp-40h] + _DWORD *v53; // [esp+1Ch] [ebp-3Ch] + int v54; // [esp+20h] [ebp-38h] + _DWORD *v55; // [esp+24h] [ebp-34h] + bool v56; // [esp+2Ah] [ebp-2Eh] + char v57; // [esp+2Bh] [ebp-2Dh] + int v58; // [esp+2Ch] [ebp-2Ch] + unsigned int *v59; // [esp+30h] [ebp-28h] + unsigned int *v60; // [esp+34h] [ebp-24h] + _BYTE *v61; // [esp+38h] [ebp-20h] + unsigned int v62; // [esp+3Ch] [ebp-1Ch] + + v55 = a1; + v54 = a2; + v53 = a3; + v60 = (unsigned int *)std::use_facet>(a8 + 108); + v9 = 16 * ((8 * a7 + 27) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + v59 = (unsigned int *)v51; + v12 = a2 == -1; + LOBYTE(v62) = v12 & (a1 != 0); + if ( (_BYTE)v62 ) + { + v12 = 0; + if ( v55[2] >= v55[3] ) + { + v38 = *v55; + LOBYTE(v61) = 0; + v39 = (*(int (__fastcall **)(_DWORD *))(v38 + 36))(v55); + v12 = (char)v61; + if ( v39 == -1 ) + { + v12 = v62; + v55 = 0; + LOBYTE(v62) = 0; + } + } + } + v56 = a4 == -1; + v13 = v56 && a3 != 0; + if ( v13 ) + { + if ( a3[2] >= a3[3] ) + { + v47 = *a3; + LOBYTE(v61) = v12; + v48 = (*(int (__fastcall **)(_DWORD *))(v47 + 36))(a3); + v12 = (char)v61; + v14 = v48 == -1 && v13; + v53 = v48 == -1 ? 0 : a3; + } + else + { + v14 = 0; + } + } + else + { + v14 = v56; + } + if ( v14 == v12 ) + { + v52 = 0; + v15 = 0; + v16 = 0; + } + else + { + if ( (_BYTE)v62 ) + { + v46 = (_BYTE *)v55[2]; + if ( (unsigned int)v46 >= v55[3] ) + { + v49 = v55; + v50 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + LOBYTE(v62) = v50 != -1 ? v50 : -1; + v55 = v50 == -1 ? 0 : v49; + } + else + { + LOBYTE(v62) = *v46; + } + } + else + { + LOBYTE(v62) = a2; + } + v15 = 2 * a7; + if ( 2 * a7 ) + { + v61 = (_BYTE *)(2 * a7); + v27 = a6; + v28 = 0; + v16 = 0; + v29 = (int)v60; + do + { + while ( 1 ) + { + v31 = **(char **)(v27 + 4 * v28); + if ( (_BYTE)v31 == (_BYTE)v62 ) + break; + a6 = v27; + v30 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v29 + 8))(v29, v31); + v27 = a6; + if ( v30 == (_BYTE)v62 ) + break; + if ( v61 == (_BYTE *)++v28 ) + goto LABEL_50; + } + v59[v16++] = v28++; + } + while ( v61 != (_BYTE *)v28 ); +LABEL_50: + if ( v16 ) + { + v32 = v55[2]; + if ( v32 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v32 + 1; + v33 = 16 * ((4 * v16 + 27) >> 4); + v34 = alloca(v33); + v35 = 0; + v36 = alloca(v33); + v62 = v16; + v52 = v51; + v61 = v51; + v37 = (int)v59; + do + { + *(_DWORD *)&v61[4 * v35] = strlen(*(const char **)(a6 + 4 * *(_DWORD *)(v37 + 4 * v35))); + ++v35; + } + while ( v62 != v35 ); + v54 = -1; + v16 = v62; + v15 = 1; + } + else + { + v52 = 0; + v15 = 0; + } + } + else + { + v52 = 0; + v16 = 0; + } + } + while ( 2 ) + { + v17 = v54 == -1; + LOBYTE(v62) = v17 & (v55 != 0); + if ( (_BYTE)v62 ) + { + if ( v55[2] >= v55[3] ) + { + v40 = v55; + v41 = *v55; + LOBYTE(v61) = v54 == -1; + v42 = (*(int (__fastcall **)(_DWORD *))(v41 + 36))(v55); + v17 = (char)v61; + LOBYTE(v62) = v42 != -1 ? 0 : v62; + v55 = v42 == -1 ? 0 : v40; + } + else + { + LOBYTE(v62) = 0; + } + } + else + { + LOBYTE(v62) = v54 == -1; + } + v18 = v56 && v53 != 0; + if ( v18 ) + { + if ( v53[2] < v53[3] ) + { + if ( !(_BYTE)v62 ) + break; + goto LABEL_11; + } + LOBYTE(v61) = v17; + v43 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); + v17 = (char)v61; + v19 = v43 == -1 && v18; + v53 = v43 == -1 ? 0 : v53; + } + else + { + v19 = v56; + } + if ( v19 == (_BYTE)v62 ) + break; +LABEL_11: + if ( v55 && v17 ) + { + v25 = (char *)v55[2]; + if ( (unsigned int)v25 >= v55[3] ) + { + v44 = v55; + v45 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + v57 = v45 != -1 ? v45 : -1; + v55 = v45 == -1 ? 0 : v44; + } + else + { + v57 = *v25; + } + } + else + { + v57 = v54; + } + if ( !v16 ) + { +LABEL_30: + *a9 |= 4u; + return v55; + } + v62 = v15; + v20 = 0; + v58 = 0; + v61 = v52; + do + { + while ( 1 ) + { + v21 = (unsigned int *)&v61[4 * v20]; + if ( *v21 > v62 ) + break; + ++v58; + ++v20; +LABEL_17: + if ( v20 >= v16 ) + goto LABEL_21; + } + v22 = v59[v20]; + v60 = &v59[v20]; + if ( *(_BYTE *)(*(_DWORD *)(a6 + 4 * v22) + v62) == v57 ) + { + ++v20; + goto LABEL_17; + } + *v60 = v59[--v16]; + *v21 = *(_DWORD *)&v61[4 * v16]; + } + while ( v20 < v16 ); +LABEL_21: + v15 = v62; + if ( v58 != v16 ) + { + v23 = v55[2]; + if ( v23 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v23 + 1; + v54 = -1; + ++v15; + continue; + } + break; + } + if ( v16 != 1 ) + { + if ( v16 == 2 && (*(_DWORD *)v52 == v15 || *((_DWORD *)v52 + 1) == v15) ) + goto LABEL_39; + goto LABEL_30; + } + if ( *(_DWORD *)v52 != v15 ) + goto LABEL_30; +LABEL_39: + v26 = *v59; + if ( *v59 >= a7 ) + v26 -= a7; + *a5 = v26; + return v55; +} + +//----- (00476010) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + int a2, + int a3, + _DWORD *a4, + int a5, + int a6, + _DWORD *a7, + _DWORD *a8, + unsigned __int8 *a9, + unsigned __int8 *a10) +{ + unsigned __int8 *v10; // esi + _DWORD *v12; // ebp + int v13; // edx + char v14; // dl + char v15; // bl + char v16; // dl + char v17; // bl + unsigned int v18; // eax + char v19; // dl + char v20; // bl + int v21; // edx + char v22; // bl + char v23; // al + int (__stdcall *v24)(unsigned __int8, int); // ebx + unsigned __int8 v25; // dl + int (__stdcall *v26)(unsigned __int8, int); // eax + int v27; // ecx + __int64 (__thiscall *v28)(void *, int, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int); // eax + _BYTE *v29; // eax + char v30; // dl + _BYTE *v31; // esi + _DWORD *v32; // eax + int v33; // edx + char v34; // bl + char v35; // dl + char v36; // al + unsigned __int8 *i; // esi + int j; // ebp + bool v40; // si + char v41; // bl + char v42; // dl + int v43; // eax + unsigned __int8 *v44; // eax + int v45; // esi + char v46; // al + int (__stdcall *v47)(unsigned __int8, int); // eax + int (__stdcall *v48)(unsigned __int8); // eax + char *v49; // eax + __int64 v50; // kr00_8 + int v51; // eax + int v52; // eax + int v53; // eax + char *v54; // eax + int v55; // eax + int v56; // eax + signed __int8 v57; // al + int v58; // eax + int v59; // eax + bool v60; // [esp+4Bh] [ebp-51h] + bool v62; // [esp+50h] [ebp-4Ch] + char v63; // [esp+50h] [ebp-4Ch] + _DWORD *v64; // [esp+50h] [ebp-4Ch] + char v65; // [esp+50h] [ebp-4Ch] + unsigned __int8 *v67; // [esp+58h] [ebp-44h] + int v68; // [esp+58h] [ebp-44h] + char v69; // [esp+58h] [ebp-44h] + int v71; // [esp+60h] [ebp-3Ch] + unsigned __int8 v72; // [esp+60h] [ebp-3Ch] + int v73; // [esp+68h] [ebp-34h] + char v74; // [esp+7Ch] [ebp-20h] BYREF + char v75; // [esp+7Dh] [ebp-1Fh] + char v76; // [esp+7Eh] [ebp-1Eh] + char v77; // [esp+7Fh] [ebp-1Dh] + unsigned __int8 *v78; // [esp+BCh] [ebp+20h] + + v10 = a9; + v12 = std::use_facet>(a6 + 108); + *a7 = 0; + if ( a9 == a10 ) + return a2; + v60 = a5 == -1; + while ( 1 ) + { + v62 = a3 == -1; + if ( v62 && a2 != 0 ) + { + if ( *(_DWORD *)(a2 + 8) >= *(_DWORD *)(a2 + 12) ) + { + v55 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v19 = v55 == -1 && v62 && a2 != 0; + a2 = v55 == -1 ? 0 : a2; + } + else + { + v19 = 0; + } + } + else + { + v19 = a3 == -1; + } + if ( !v60 || a4 == 0 ) + { + v20 = a5 == -1; + goto LABEL_21; + } + if ( a4[2] >= a4[3] ) + { + v69 = v19; + v56 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v19 = v69; + v20 = v56 == -1 && v60 && a4 != 0; + a4 = v56 == -1 ? 0 : a4; +LABEL_21: + if ( v19 == v20 ) + goto LABEL_77; + goto LABEL_22; + } + if ( !v19 ) + { +LABEL_77: + *a7 = 6; + return a2; + } +LABEL_22: + v21 = *v10; + v22 = *((_BYTE *)v12 + v21 + 285); + v23 = *v10; + if ( !v22 ) + { + v24 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); + if ( v24 != std::ctype::do_narrow ) + { + v68 = *v10; + v23 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v24)(v12, (char)v21, 0); + v21 = v68; + } + if ( !v23 ) + goto LABEL_3; + *((_BYTE *)v12 + v21 + 285) = v23; + v22 = v23; + } + if ( v22 == 37 ) + { + v67 = v10 + 1; + if ( a10 == v10 + 1 ) + break; + v71 = v10[1]; + v25 = v10[1]; + v63 = *((_BYTE *)v12 + v71 + 285); + if ( !v63 ) + { + v26 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); + if ( v26 != std::ctype::do_narrow ) + v25 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v26)(v12, (char)v71, 0); + if ( !v25 ) + { + v63 = 0; + v27 = 0; + v73 = 0; + goto LABEL_37; + } + v63 = v25; + *((_BYTE *)v12 + v71 + 285) = v25; + } + v25 = v63; + if ( v63 == 69 || v63 == 79 ) + { + v67 = v10 + 2; + if ( a10 == v10 + 2 ) + break; + v45 = v10[2]; + v46 = *((_BYTE *)v12 + v45 + 285); + v73 = v63; + v25 = v45; + if ( v46 ) + { + v27 = v46; + v25 = *((_BYTE *)v12 + v45 + 285); + } + else + { + v27 = (char)v45; + v47 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); + if ( v47 != std::ctype::do_narrow ) + { + v57 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v47)(v12, (char)v45, 0); + v27 = v57; + v25 = v57; + } + if ( v25 ) + *((_BYTE *)v12 + v45 + 285) = v25; + } + } + else + { + v73 = 0; + v27 = v63; + v63 = 0; + } +LABEL_37: + v72 = v25; + v28 = *(__int64 (__thiscall **)(void *, int, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int))(*(_DWORD *)this + 32); + if ( (char *)v28 == (char *)std::time_get>::do_get ) + { + v29 = std::use_facet>(a6 + 108); + v30 = v72; + v31 = v29; + *a7 = 0; + if ( v29[28] ) + { + v22 = v29[66]; + } + else + { + std::ctype::_M_widen_init((int)v29); + v30 = v72; + v48 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v31 + 24); + if ( v48 != std::ctype::do_widen ) + { + v22 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v48)(v31, v72, 37); + v30 = v72; + } + } + v74 = v22; + if ( v63 ) + { + v76 = v30; + v77 = 0; + v75 = v63; + } + else + { + v75 = v30; + v76 = 0; + } + v32 = std::time_get>::_M_extract_via_format( + (_DWORD *)a2, + a3, + a4, + a5, + a6, + a7, + a8, + &v74); + a2 = (int)v32; + v34 = v33 == -1; + a3 = v33; + v35 = v34 & (v32 != 0); + if ( v35 ) + { + v34 = 0; + if ( v32[2] >= v32[3] ) + { + v65 = v35; + v53 = (*(int (__fastcall **)(_DWORD *))(*v32 + 36))(v32); + v34 = v53 != -1 ? 0 : v65; + a2 = v53 == -1 ? 0 : a2; + } + } + if ( a4 && a5 == -1 ) + { + v36 = 0; + if ( a4[2] >= a4[3] ) + v36 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4) == -1; + } + else + { + v36 = a5 == -1; + } + if ( v36 == v34 ) + *a7 |= 2u; + } + else + { + v50 = v28(this, a2, a3, a4, a5, a6, a7, a8, v27, v73); + a3 = HIDWORD(v50); + a2 = v50; + } + v10 = v67 + 1; + if ( a10 == v67 + 1 ) + return a2; + goto LABEL_16; + } +LABEL_3: + v13 = v12[6]; + if ( (*(_BYTE *)(v13 + 2 * *v10) & 0x20) != 0 ) + { + for ( i = v10 + 1; a10 != i; ++i ) + { + if ( (*(_BYTE *)(v13 + 2 * *i) & 0x20) == 0 ) + break; + } + v78 = i; + v64 = v12; + for ( j = a3; ; j = -1 ) + { + v40 = j == -1; + if ( v40 && a2 != 0 ) + { + if ( *(_DWORD *)(a2 + 8) >= *(_DWORD *)(a2 + 12) ) + { + v52 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v41 = v52 == -1 && v40 && a2 != 0; + a2 = v52 == -1 ? 0 : a2; + } + else + { + v41 = 0; + } + } + else + { + v41 = j == -1; + } + if ( !v60 || a4 == 0 ) + break; + if ( a4[2] >= a4[3] ) + { + v51 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v42 = v51 == -1 && v60 && a4 != 0; + a4 = v51 == -1 ? 0 : a4; +LABEL_59: + if ( v42 == v41 ) + goto LABEL_72; + goto LABEL_60; + } + if ( !v41 ) + { +LABEL_72: + a3 = j; + v10 = v78; + v12 = v64; + goto LABEL_15; + } +LABEL_60: + if ( a2 && j == -1 ) + { + v44 = *(unsigned __int8 **)(a2 + 8); + if ( (unsigned int)v44 < *(_DWORD *)(a2 + 12) ) + { + if ( (*(_BYTE *)(v64[6] + 2 * *v44) & 0x20) == 0 ) + { + v12 = v64; + a3 = -1; + v10 = v78; + goto LABEL_15; + } +LABEL_65: + *(_DWORD *)(a2 + 8) = v44 + 1; + continue; + } + v43 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + a2 = v43 == -1 ? 0 : a2; + } + else + { + LOBYTE(v43) = j; + } + if ( (*(_BYTE *)(v64[6] + 2 * (unsigned __int8)v43) & 0x20) == 0 ) + goto LABEL_72; + v44 = *(unsigned __int8 **)(a2 + 8); + if ( (unsigned int)v44 < *(_DWORD *)(a2 + 12) ) + goto LABEL_65; + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + } + v42 = a5 == -1; + goto LABEL_59; + } + if ( a2 && a3 == -1 ) + { + v49 = *(char **)(a2 + 8); + if ( (unsigned int)v49 >= *(_DWORD *)(a2 + 12) ) + { + v58 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v14 = v58 != -1 ? v58 : -1; + a2 = v58 == -1 ? 0 : a2; + } + else + { + v14 = *v49; + } + } + else + { + v14 = a3; + } + v15 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, v14); + if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, (char)*v10) != v15 ) + { + if ( a2 && a3 == -1 ) + { + v54 = *(char **)(a2 + 8); + if ( (unsigned int)v54 >= *(_DWORD *)(a2 + 12) ) + { + v59 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v16 = v59 != -1 ? v59 : -1; + a2 = v59 == -1 ? 0 : a2; + } + else + { + v16 = *v54; + } + } + else + { + v16 = a3; + } + v17 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, v16); + if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, (char)*v10) != v17 ) + break; + } + v18 = *(_DWORD *)(a2 + 8); + if ( v18 >= *(_DWORD *)(a2 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + else + *(_DWORD *)(a2 + 8) = v18 + 1; + a3 = -1; + ++v10; +LABEL_15: + if ( a10 == v10 ) + return a2; +LABEL_16: + if ( *a7 ) + return a2; + } + *a7 = 4; + return a2; +} +// 476300: variable 'v33' is possibly undefined + +//----- (00476890) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + _DWORD *a2, + int a3, + _DWORD *a4, + int a5, + int a6, + _DWORD *a7, + _DWORD *a8, + char a9, + char a10) +{ + _DWORD *(__stdcall *v10)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // eax + _BYTE *v11; // ecx + char v12; // al + _DWORD *v13; // esi + int v14; // edx + char v15; // dl + char v16; // bp + char v17; // al + int (__stdcall *v19)(unsigned __int8); // edx + int v20; // eax + int v21; // eax + char v22; // [esp+30h] [ebp-3Ch] + _BYTE *v23; // [esp+3Ch] [ebp-30h] + char v24; // [esp+4Ch] [ebp-20h] BYREF + char v25; // [esp+4Dh] [ebp-1Fh] + char v26; // [esp+4Eh] [ebp-1Eh] + char v27; // [esp+4Fh] [ebp-1Dh] + + v10 = *(_DWORD *(__stdcall **)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); + if ( v10 != std::time_get>::do_get ) + return ((int (__thiscall *)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( + this, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v11 = std::use_facet>(a6 + 108); + *a7 = 0; + if ( v11[28] ) + { + v12 = v11[66]; + } + else + { + v23 = v11; + std::ctype::_M_widen_init((int)v11); + v19 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); + v12 = 37; + if ( v19 != std::ctype::do_widen ) + v12 = v19(37u); + } + v24 = v12; + if ( a10 ) + { + v25 = a10; + v27 = 0; + v26 = a9; + } + else + { + v26 = 0; + v25 = a9; + } + v13 = std::time_get>::_M_extract_via_format(a2, a3, a4, a5, a6, a7, a8, &v24); + v15 = v14 == -1; + v16 = v15 & (v13 != 0); + if ( v16 ) + { + v15 = 0; + if ( v13[2] >= v13[3] ) + { + v21 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v13 + 36))(v13, 0); + v15 = v21 != -1 ? 0 : v16; + v13 = v21 == -1 ? 0 : v13; + } + } + v17 = a5 == -1; + if ( a4 ) + { + if ( a5 == -1 ) + { + v17 = 0; + if ( a4[2] >= a4[3] ) + { + v22 = v15; + v20 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v15 = v22; + v17 = v20 == -1; + } + } + } + if ( v15 == v17 ) + *a7 |= 2u; + return (int)v13; +} +// 47696A: variable 'v14' is possibly undefined + +//----- (00476AE0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7, + char a8, + char a9) +{ + _BYTE *v9; // ebp + char v10; // al + _DWORD *v11; // esi + int v12; // edx + char v13; // dl + char v14; // bp + char v15; // al + int v17; // eax + int (__stdcall *v18)(unsigned __int8); // edx + int v19; // eax + char v20; // [esp+20h] [ebp-3Ch] + char v21; // [esp+3Ch] [ebp-20h] BYREF + char v22; // [esp+3Dh] [ebp-1Fh] + char v23; // [esp+3Eh] [ebp-1Eh] + char v24; // [esp+3Fh] [ebp-1Dh] + + v9 = std::use_facet>(a5 + 108); + *a6 = 0; + if ( v9[28] ) + { + v10 = v9[66]; + } + else + { + std::ctype::_M_widen_init((int)v9); + v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v9 + 24); + v10 = 37; + if ( v18 != std::ctype::do_widen ) + v10 = ((int (__thiscall *)(_BYTE *, int))v18)(v9, 37); + } + v21 = v10; + if ( a9 ) + { + v24 = 0; + v22 = a9; + v23 = a8; + } + else + { + v23 = 0; + v22 = a8; + } + v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, a7, &v21); + v13 = v12 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v19 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v19 != -1 ? 0 : v14; + v11 = v19 == -1 ? 0 : v11; + } + } + v15 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v15 = 0; + if ( a3[2] >= a3[3] ) + { + v20 = v13; + v17 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v20; + v15 = v17 == -1; + } + } + } + if ( v13 == v15 ) + *a6 |= 2u; + return v11; +} +// 476B9D: variable 'v12' is possibly undefined + +//----- (00476CA0) -------------------------------------------------------- +int __fastcall std::time_get>::get_date(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); +} + +//----- (00476CB0) -------------------------------------------------------- +int __fastcall std::time_get>::get_time(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); +} + +//----- (00476CC0) -------------------------------------------------------- +int __fastcall std::time_get>::get_year(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); +} + +//----- (00476CD0) -------------------------------------------------------- +int __fastcall std::time_get>::date_order(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); + if ( v1 == std::time_get>::do_date_order ) + return 0; + else + return v1(); +} + +//----- (00476CF0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_date( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // eax + _DWORD *v8; // ecx + __int16 v9; // dx + _DWORD *v10; // ebp + __int16 v11; // bx + char v12; // cl + __int16 *v14; // eax + __int16 v15; // ax + __int16 *v16; // eax + __int16 v17; // ax + char v18; // [esp+2Ch] [ebp-30h] + _DWORD *v19; // [esp+30h] [ebp-2Ch] + + v7 = std::use_facet>(a5 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + *(wchar_t **)(v7[2] + 8)); + v10 = v8; + v11 = v9 == -1; + v18 = v11 & (v8 != 0); + if ( v18 ) + { + v16 = (__int16 *)v8[2]; + if ( (unsigned int)v16 >= v8[3] ) + { + v19 = v8; + v17 = (*(int (**)(void))(*v8 + 36))(); + v8 = v19; + } + else + { + v17 = *v16; + } + LOBYTE(v11) = v17 != -1 ? 0 : v18; + v10 = v17 == -1 ? 0 : v8; + } + v12 = (_WORD)a4 == 0xFFFF; + if ( a3 && (_WORD)a4 == 0xFFFF ) + { + v14 = (__int16 *)a3[2]; + if ( (unsigned int)v14 >= a3[3] ) + v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v15 = *v14; + v12 = v15 == -1; + } + if ( (_BYTE)v11 == v12 ) + *a6 |= 2u; + return v10; +} +// 476D69: variable 'v9' is possibly undefined + +//----- (00476E30) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_time( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // eax + _DWORD *v8; // ecx + __int16 v9; // dx + _DWORD *v10; // ebp + __int16 v11; // bx + char v12; // cl + __int16 *v14; // eax + __int16 v15; // ax + __int16 *v16; // eax + __int16 v17; // ax + char v18; // [esp+2Ch] [ebp-30h] + _DWORD *v19; // [esp+30h] [ebp-2Ch] + + v7 = std::use_facet>(a5 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + *(wchar_t **)(v7[2] + 16)); + v10 = v8; + v11 = v9 == -1; + v18 = v11 & (v8 != 0); + if ( v18 ) + { + v16 = (__int16 *)v8[2]; + if ( (unsigned int)v16 >= v8[3] ) + { + v19 = v8; + v17 = (*(int (**)(void))(*v8 + 36))(); + v8 = v19; + } + else + { + v17 = *v16; + } + LOBYTE(v11) = v17 != -1 ? 0 : v18; + v10 = v17 == -1 ? 0 : v8; + } + v12 = (_WORD)a4 == 0xFFFF; + if ( a3 && (_WORD)a4 == 0xFFFF ) + { + v14 = (__int16 *)a3[2]; + if ( (unsigned int)v14 >= a3[3] ) + v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v15 = *v14; + v12 = v15 == -1; + } + if ( (_BYTE)v11 == v12 ) + *a6 |= 2u; + return v10; +} +// 476EA9: variable 'v9' is possibly undefined + +//----- (00476F70) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_year( + _DWORD *a1, + __int16 a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // ecx + __int16 v8; // dx + __int16 v9; // ax + _DWORD *v10; // ebp + int v11; // edx + char v12; // bl + char v13; // cl + __int16 *v15; // eax + __int16 v16; // ax + __int16 *v17; // eax + __int16 v18; // ax + char v19; // [esp+43h] [ebp-39h] + _DWORD *v20; // [esp+44h] [ebp-38h] + int v21; // [esp+58h] [ebp-24h] BYREF + int v22[8]; // [esp+5Ch] [ebp-20h] BYREF + + v22[0] = 0; + v7 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v21, + 0, + 9999, + 4u, + a5, + v22); + v9 = v8; + v10 = v7; + if ( v22[0] ) + { + *a6 |= 4u; + } + else + { + v11 = v21 - 1900; + if ( v21 < 0 ) + v11 = v21 + 100; + *(_DWORD *)(a7 + 20) = v11; + } + v12 = v9 == -1; + v19 = v12 & (v7 != 0); + if ( v19 ) + { + v17 = (__int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + { + v20 = v7; + v18 = (*(int (**)(void))(*v7 + 36))(); + v7 = v20; + } + else + { + v18 = *v17; + } + v12 = v18 != -1 ? 0 : v19; + v10 = v18 == -1 ? 0 : v7; + } + v13 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v15 = (__int16 *)a3[2]; + if ( (unsigned int)v15 >= a3[3] ) + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v16 = *v15; + v13 = v16 == -1; + } + if ( v12 == v13 ) + *a6 |= 2u; + return v10; +} +// 476FEA: variable 'v8' is possibly undefined +// 476F70: using guessed type int var_20[8]; + +//----- (004770F0) -------------------------------------------------------- +int __fastcall std::time_get>::get_weekday(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); +} + +//----- (00477100) -------------------------------------------------------- +int std::time_get>::do_date_order() +{ + return 0; +} + +//----- (00477110) -------------------------------------------------------- +int __fastcall std::time_get>::get_monthname(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); +} + +//----- (00477120) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_num( + _DWORD *a1, + __int16 a2, + _DWORD *a3, + __int16 a4, + int *a5, + signed int a6, + int a7, + unsigned int a8, + int a9, + _DWORD *a10) +{ + unsigned int v10; // ebp + int v12; // edi + unsigned int i; // esi + unsigned __int8 v14; // dl + unsigned __int16 v15; // ax + char v16; // al + unsigned int v17; // eax + __int16 *v18; // eax + __int16 v19; // ax + __int16 *v20; // eax + __int16 v21; // ax + unsigned __int16 *v23; // eax + char v24; // [esp+1Fh] [ebp-2Dh] + bool v25; // [esp+1Fh] [ebp-2Dh] + void *v27; // [esp+24h] [ebp-28h] + char v29; // [esp+2Eh] [ebp-1Eh] + unsigned __int8 v30; // [esp+2Fh] [ebp-1Dh] + + v10 = 10; + v27 = std::use_facet>(a9 + 108); + if ( a8 != 2 ) + v10 = a8 == 4 ? 1000 : 1; + v29 = a4 == -1; + v12 = 0; + for ( i = 0; ; ++i ) + { + v25 = a2 == -1 && a1 != 0; + if ( v25 ) + break; + v24 = a2 == -1; + v14 = v29 & (a3 != 0); + if ( v14 ) + goto LABEL_20; +LABEL_5: + if ( v24 == v29 ) + goto LABEL_23; +LABEL_6: + if ( i >= a8 ) + goto LABEL_23; + if ( a1 && a2 == -1 ) + { + v23 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v23 >= a1[3] ) + v15 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v15 = *v23; + a1 = v15 == 0xFFFF ? 0 : a1; + } + else + { + v15 = a2; + } + v16 = (*(int (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v27 + 48))(v27, v15, 42); + if ( (unsigned __int8)(v16 - 48) > 9u ) + goto LABEL_24; + v12 = v16 + 10 * v12 - 48; + if ( (int)(v12 * v10) > a7 || (int)(v10 + v12 * v10) <= a6 ) + goto LABEL_24; + v17 = a1[2]; + v10 /= 0xAu; + if ( v17 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v17 + 2; + a2 = -1; + } + v18 = (__int16 *)a1[2]; + if ( (unsigned int)v18 >= a1[3] ) + v19 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v19 = *v18; + a1 = v19 == -1 ? 0 : a1; + v24 = v19 == -1 && v25; + v14 = v29 & (a3 != 0); + if ( !v14 ) + goto LABEL_5; +LABEL_20: + v20 = (__int16 *)a3[2]; + if ( (unsigned int)v20 >= a3[3] ) + { + v30 = v14; + v21 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v14 = v30; + } + else + { + v21 = *v20; + } + a3 = v21 == -1 ? 0 : a3; + if ( v24 != ((unsigned __int8)((v21 != -1) - 1) & v14) ) + goto LABEL_6; +LABEL_23: + if ( i == a8 ) + { +LABEL_27: + *a5 = v12; + return a1; + } +LABEL_24: + if ( a8 == 4 && i == 2 ) + { + v12 -= 100; + goto LABEL_27; + } + *a10 |= 4u; + return a1; +} + +//----- (004773B0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_weekday( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // ecx + int v9; // eax + __int16 v10; // dx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // bl + char v14; // si + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + _DWORD *v21; // [esp+40h] [ebp-6Ch] + int v22; // [esp+50h] [ebp-5Ch] BYREF + int v23; // [esp+54h] [ebp-58h] BYREF + int v24[21]; // [esp+58h] [ebp-54h] BYREF + + v23 = 0; + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v24[0] = v7[18]; + v24[1] = v7[19]; + v24[2] = v7[20]; + v24[3] = v7[21]; + v24[4] = v7[22]; + v24[5] = v7[23]; + v24[6] = v7[24]; + v24[7] = v7[11]; + v24[8] = v7[12]; + v24[9] = v7[13]; + v24[10] = v7[14]; + v24[11] = v7[15]; + v8 = v7[16]; + v9 = v7[17]; + v24[12] = v8; + v24[13] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v22, + (int)v24, + 7u, + a5, + &v23); + v12 = v11; + if ( v23 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 24) = v22; + v13 = v10 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v19 = (__int16 *)v11[2]; + if ( (unsigned int)v19 >= v11[3] ) + { + v21 = v11; + v20 = (*(int (**)(void))(*v11 + 36))(); + v11 = v21; + } + else + { + v20 = *v19; + } + v13 = v20 != -1 ? 0 : v14; + v12 = v20 == -1 ? 0 : v11; + } + v15 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( v15 == v13 ) + *a6 |= 2u; + return v12; +} +// 4774DD: variable 'v10' is possibly undefined + +//----- (004775B0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_name( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + _DWORD *a5, + int a6, + int a7, + int a8, + _DWORD *a9) +{ + int v9; // eax + void *v10; // esp + void *v11; // esp + char v12; // dl + char v13; // dl + char v14; // bl + int v16; // edx + int v17; // esi + size_t v18; // ebx + int v19; // edi + __int16 v20; // ax + int v21; // ecx + int *v22; // edi + size_t v23; // eax + unsigned int v24; // ebx + size_t v25; // eax + unsigned int v26; // eax + _WORD *v27; // eax + __int16 v28; // dx + char v29; // si + char v30; // dl + char v31; // dl + unsigned int v32; // ecx + size_t v33; // esi + int i; // eax + __int16 v35; // ax + __int16 *v36; // eax + unsigned int v37; // eax + int *v38; // eax + int *v39; // ebx + const wchar_t *v40; // edi + unsigned int v41; // ebx + unsigned int v42; // esi + unsigned int v43; // eax + __int16 *v44; // eax + __int16 v45; // ax + unsigned __int8 v46; // di + char v47; // dl + char v48; // dl + __int16 v49; // di + __int16 *v50; // eax + __int16 v51; // ax + __int16 *v52; // eax + __int16 v53; // cx + int v54; // eax + __int16 *v55; // eax + __int16 v56; // ax + __int16 *v57; // eax + __int16 v58; // ax + __int16 v59; // ax + _WORD *v60; // eax + int v61; // eax + int v62; // eax + __int16 *v63; // eax + __int16 v64; // cx + __int16 v65; // ax + int v66; // [esp+10h] [ebp-38h] BYREF + _DWORD *v67; // [esp+14h] [ebp-34h] + bool v68; // [esp+1Bh] [ebp-2Dh] + int v69; // [esp+1Ch] [ebp-2Ch] + _DWORD *v70; // [esp+20h] [ebp-28h] + int *v71; // [esp+24h] [ebp-24h] + size_t v72; // [esp+28h] [ebp-20h] + unsigned int v73; // [esp+2Ch] [ebp-1Ch] + + v71 = a4; + v66 = a2; + LOWORD(v72) = a2; + v70 = a1; + v67 = a3; + v69 = (int)std::use_facet>(a8 + 108); + v9 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + LOBYTE(v73) = (_WORD)a2 == 0xFFFF; + v12 = v73 & (a1 != 0); + if ( v12 ) + { + v57 = (__int16 *)a1[2]; + if ( (unsigned int)v57 >= a1[3] ) + { + v61 = *a1; + LOBYTE(v70) = v73 & (a1 != 0); + v58 = (*(int (__fastcall **)(_DWORD *))(v61 + 36))(a1); + v12 = (char)v70; + } + else + { + v58 = *v57; + } + v70 = v58 == -1 ? 0 : a1; + v13 = v58 != -1 ? 0 : v12; + } + else + { + v13 = v73; + } + v68 = (_WORD)v71 == 0xFFFF; + if ( v68 && a3 != 0 ) + { + v55 = (__int16 *)a3[2]; + if ( (unsigned int)v55 >= a3[3] ) + { + v62 = *a3; + LOBYTE(v71) = v13; + v56 = (*(int (__fastcall **)(_DWORD *))(v62 + 36))(a3); + v13 = (char)v71; + } + else + { + v56 = *v55; + } + v67 = v56 == -1 ? 0 : a3; + v14 = v56 == -1 && v68 && a3 != 0; + } + else + { + v14 = v68; + } + if ( v14 == v13 ) + goto LABEL_6; + if ( v70 && (_BYTE)v73 ) + { + v60 = (_WORD *)v70[2]; + LOWORD(v73) = (unsigned int)v60 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v60; + v70 = (_WORD)v73 == 0xFFFF ? 0 : v70; + } + else + { + LOWORD(v73) = v72; + } + if ( !a7 ) + goto LABEL_6; + v71 = &v66; + v16 = a6; + v17 = 0; + v18 = 0; + v19 = v69; + do + { + while ( 1 ) + { + v21 = **(unsigned __int16 **)(v16 + 4 * v17); + if ( (_WORD)v21 == (_WORD)v73 ) + break; + a6 = v16; + v20 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v19 + 24))(v19, v21); + v16 = a6; + if ( v20 == (_WORD)v73 ) + break; + if ( a7 == ++v17 ) + goto LABEL_17; + } + v71[v18++] = v17++; + } + while ( a7 != v17 ); +LABEL_17: + v22 = v71; + v71 = 0; + if ( v18 <= 1 ) + goto LABEL_41; + do + { + v69 = *v22; + v23 = wcslen(*(const wchar_t **)(a6 + 4 * v69)); + v72 = v18; + v24 = 1; + v73 = v23; + do + { + v25 = wcslen(*(const wchar_t **)(a6 + 4 * v22[v24])); + if ( v73 > v25 ) + v73 = v25; + ++v24; + } + while ( v24 < v72 ); + v18 = v72; + v26 = v70[2]; + if ( v26 >= v70[3] ) + (*(void (__fastcall **)(_DWORD *))(*v70 + 40))(v70); + else + v70[2] = v26 + 2; + v71 = (int *)((char *)v71 + 1); + if ( (unsigned int)v71 >= v73 ) + goto LABEL_59; + v27 = (_WORD *)v70[2]; + v28 = (unsigned int)v27 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v27; + v70 = v28 == -1 ? 0 : v70; + v29 = v28 == -1; + v30 = v68 && v67 != 0; + if ( v30 ) + { + v52 = (__int16 *)v67[2]; + if ( (unsigned int)v52 >= v67[3] ) + { + LOBYTE(v73) = v68 && v67 != 0; + v59 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); + v30 = v73; + v53 = v59; + } + else + { + v53 = *v52; + } + v67 = v53 == -1 ? 0 : v67; + v31 = v53 != -1 ? 0 : v30; + } + else + { + v31 = v68; + } + if ( v29 == v31 ) + goto LABEL_59; + v32 = (unsigned int)v70; + v33 = 0; + v72 = 2 * (_DWORD)v71; + for ( i = v69; ; i = v22[v33] ) + { + v16 = v72; + LOWORD(v73) = *(_WORD *)(*(_DWORD *)(a6 + 4 * i) + v72); + v35 = -1; + if ( v32 ) + { + v36 = *(__int16 **)(v32 + 8); + if ( (unsigned int)v36 >= *(_DWORD *)(v32 + 12) ) + { + v54 = *(_DWORD *)v32; + v70 = (_DWORD *)v32; + v35 = (*(int (**)(void))(v54 + 36))(); + v32 = (unsigned int)v70; + } + else + { + v35 = *v36; + } + v16 = (v35 == -1) - 1; + v32 &= v16; + } + if ( (_WORD)v73 == v35 ) + break; + v22[v33] = v22[--v18]; + if ( v18 <= v33 ) + goto LABEL_39; +LABEL_32: + ; + } + if ( v18 > ++v33 ) + goto LABEL_32; +LABEL_39: + v70 = (_DWORD *)v32; + } + while ( v18 > 1 ); + LOWORD(v72) = -1; +LABEL_41: + if ( v18 == 1 ) + { + v37 = v70[2]; + if ( v37 >= v70[3] ) + (*(void (__fastcall **)(_DWORD *, int))(*v70 + 40))(v70, v16); + else + v70[2] = v37 + 2; + v38 = (int *)*v22; + v39 = v71; + v40 = *(const wchar_t **)(a6 + 4 * *v22); + v71 = v38; + v41 = (unsigned int)v39 + 1; + v72 = wcslen(v40); + if ( v41 < v72 ) + { + v73 = (unsigned int)v40; + v42 = (unsigned int)v70; + do + { + while ( 1 ) + { + v44 = *(__int16 **)(v42 + 8); + if ( (unsigned int)v44 >= *(_DWORD *)(v42 + 12) ) + v45 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); + else + v45 = *v44; + v46 = v45 == -1; + v42 &= v46 - 1; + v47 = v68 && v67 != 0; + if ( v47 ) + { + v63 = (__int16 *)v67[2]; + if ( (unsigned int)v63 >= v67[3] ) + { + LOBYTE(v70) = v68 && v67 != 0; + v65 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); + v47 = (char)v70; + v64 = v65; + } + else + { + v64 = *v63; + } + v67 = v64 == -1 ? 0 : v67; + v48 = v64 != -1 ? 0 : v47; + } + else + { + v48 = v68; + } + if ( v48 == v46 ) + { +LABEL_58: + v70 = (_DWORD *)v42; + goto LABEL_59; + } + v49 = *(_WORD *)(v73 + 2 * v41); + if ( v42 ) + { + v50 = *(__int16 **)(v42 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v42 + 12) ) + v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); + else + v51 = *v50; + v42 &= (v51 == -1) - 1; + if ( v49 != v51 ) + goto LABEL_58; + } + else if ( v49 != -1 ) + { + goto LABEL_58; + } + v43 = *(_DWORD *)(v42 + 8); + if ( v43 >= *(_DWORD *)(v42 + 12) ) + break; + ++v41; + *(_DWORD *)(v42 + 8) = v43 + 2; + if ( v41 >= v72 ) + goto LABEL_83; + } + ++v41; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 40))(v42); + } + while ( v41 < v72 ); +LABEL_83: + v70 = (_DWORD *)v42; + } + if ( v72 == v41 ) + { + LOWORD(v72) = -1; + *a5 = v71; + goto LABEL_7; + } +LABEL_59: + LOWORD(v72) = -1; + } +LABEL_6: + *a9 |= 4u; +LABEL_7: + LOWORD(v66) = v72; + return v70; +} + +//----- (00477AF0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_monthname( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // ecx + int v9; // ecx + __int16 v10; // dx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // bl + char v14; // si + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + _DWORD *v21; // [esp+40h] [ebp-9Ch] + int v22; // [esp+58h] [ebp-84h] BYREF + int v23; // [esp+5Ch] [ebp-80h] BYREF + int v24[31]; // [esp+60h] [ebp-7Ch] BYREF + + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v24[0] = v7[37]; + v24[1] = v7[38]; + v24[2] = v7[39]; + v24[3] = v7[40]; + v24[4] = v7[41]; + v24[5] = v7[42]; + v24[6] = v7[43]; + v24[7] = v7[44]; + v24[8] = v7[45]; + v24[9] = v7[46]; + v24[10] = v7[47]; + v24[11] = v7[48]; + v24[12] = v7[25]; + v24[13] = v7[26]; + v24[14] = v7[27]; + v24[15] = v7[28]; + v8 = v7[29]; + v23 = 0; + v24[16] = v8; + v24[17] = v7[30]; + v24[18] = v7[31]; + v24[19] = v7[32]; + v24[20] = v7[33]; + v24[21] = v7[34]; + v9 = v7[35]; + v24[23] = v7[36]; + v24[22] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v22, + (int)v24, + 0xCu, + a5, + &v23); + v12 = v11; + if ( v23 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 16) = v22; + v13 = v10 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v19 = (__int16 *)v11[2]; + if ( (unsigned int)v19 >= v11[3] ) + { + v21 = v11; + v20 = (*(int (**)(void))(*v11 + 36))(); + v11 = v21; + } + else + { + v20 = *v19; + } + v13 = v20 != -1 ? 0 : v14; + v12 = v20 == -1 ? 0 : v11; + } + v15 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( v13 == v15 ) + *a6 |= 2u; + return v12; +} +// 477CBA: variable 'v10' is possibly undefined + +//----- (00477D90) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_via_format( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + int a5, + _DWORD *a6, + _DWORD *a7, + wchar_t *String) +{ + void *v9; // esi + size_t v10; // edi + bool v11; // dl + char v12; // dl + char v13; // bl + int v14; // eax + size_t v15; // ebx + char v16; // al + unsigned __int8 v17; // al + wchar_t v18; // bx + unsigned __int16 v19; // ax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // bl + __int16 *v24; // eax + __int16 v25; // ax + unsigned int v26; // eax + unsigned __int16 *v27; // eax + unsigned __int16 v28; // dx + int v29; // edx + _DWORD *v30; // eax + _DWORD *v31; // eax + unsigned __int16 v32; // dx + _DWORD *v33; // eax + _DWORD *v34; // eax + unsigned __int16 v35; // dx + unsigned __int16 v36; // dx + unsigned __int16 v37; // dx + unsigned __int16 v38; // dx + unsigned __int16 v39; // dx + unsigned __int16 v40; // dx + int v41; // edx + _DWORD *v42; // eax + __int16 v43; // dx + unsigned __int16 v44; // di + char v45; // dl + char v46; // bl + char v47; // bl + unsigned __int16 v48; // bx + unsigned __int16 v49; // bx + _DWORD *v50; // eax + __int16 v51; // dx + unsigned __int16 v52; // dx + _DWORD *v53; // eax + unsigned __int16 v54; // dx + _DWORD *v55; // eax + _DWORD *v56; // eax + unsigned __int16 v57; // dx + int v58; // edx + unsigned int v59; // eax + unsigned __int16 v60; // dx + unsigned __int16 v61; // dx + int v62; // edx + unsigned int v63; // eax + unsigned __int16 v64; // dx + int v65; // edx + unsigned __int16 v66; // dx + unsigned __int16 v67; // dx + unsigned __int16 *v68; // eax + unsigned __int16 *v69; // eax + unsigned __int16 *v70; // eax + unsigned __int16 *v71; // eax + unsigned __int16 *v72; // eax + unsigned __int16 v73; // dx + __int16 *v74; // eax + __int16 v75; // ax + _WORD *v76; // edx + __int16 v77; // ax + unsigned __int16 *v78; // eax + bool v79; // [esp+5Fh] [ebp-12Dh] + bool v80; // [esp+5Fh] [ebp-12Dh] + size_t v82; // [esp+64h] [ebp-128h] + char v83; // [esp+64h] [ebp-128h] + int v84; // [esp+68h] [ebp-124h] + size_t v85; // [esp+6Ch] [ebp-120h] + bool v86; // [esp+70h] [ebp-11Ch] + _DWORD *v87; // [esp+7Ch] [ebp-110h] + __int16 v88; // [esp+80h] [ebp-10Ch] + unsigned __int16 v89; // [esp+84h] [ebp-108h] + char v90; // [esp+86h] [ebp-106h] + char v91; // [esp+87h] [ebp-105h] + int v92; // [esp+138h] [ebp-54h] BYREF + int v93; // [esp+13Ch] [ebp-50h] BYREF + wchar_t v94[2]; // [esp+140h] [ebp-4Ch] BYREF + int v95; // [esp+144h] [ebp-48h] + int v96; // [esp+148h] [ebp-44h] + int v97; // [esp+14Ch] [ebp-40h] + int v98; // [esp+150h] [ebp-3Ch] + int v99; // [esp+154h] [ebp-38h] + int v100; // [esp+158h] [ebp-34h] + int v101; // [esp+15Ch] [ebp-30h] + int v102; // [esp+160h] [ebp-2Ch] + int v103; // [esp+164h] [ebp-28h] + int v104; // [esp+168h] [ebp-24h] + int v105; // [esp+16Ch] [ebp-20h] + + HIWORD(v84) = HIWORD(a2); + v89 = a2; + v87 = std::use_facet>(a5 + 108); + v9 = std::use_facet>(a5 + 108); + v92 = 0; + v85 = wcslen(String); + v90 = (_WORD)a4 == 0xFFFF; + v10 = 0; + while ( 1 ) + { + v79 = v89 == 0xFFFF; + v11 = v79 && a1 != 0; + if ( v11 ) + { + v24 = (__int16 *)a1[2]; + if ( (unsigned int)v24 >= a1[3] ) + { + v25 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v11 = v79 && a1 != 0; + } + else + { + v25 = *v24; + } + a1 = v25 == -1 ? 0 : a1; + v12 = v25 == -1 && v11; + } + else + { + v12 = v89 == 0xFFFF; + } + v13 = v90 & (a3 != 0); + if ( !v13 ) + { + v14 = v92; + if ( v12 == v90 ) + break; + goto LABEL_6; + } + v20 = (__int16 *)a3[2]; + if ( (unsigned int)v20 >= a3[3] ) + { + v83 = v12; + v21 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v12 = v83; + } + else + { + v21 = *v20; + } + a3 = v21 == -1 ? 0 : a3; + v22 = v21 != -1 ? 0 : v13; + v14 = v92; + if ( v12 == v22 ) + break; +LABEL_6: + if ( v10 >= v85 ) + break; + if ( v14 ) + goto LABEL_23; + v15 = v10; + v82 = v10 + 1; + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v10], 0) == 37 ) + { + v16 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v15 + 1], 0); + v93 = 0; + if ( v16 == 69 || v16 == 79 ) + { + v82 = v10 + 2; + v17 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v15 + 2], 0) - 65; + if ( v17 > 0x38u ) + { +LABEL_29: + v92 |= 4u; + goto LABEL_30; + } + } + else + { + v17 = v16 - 65; + } + switch ( v17 ) + { + case 0u: + v55 = (_DWORD *)v87[2]; + *(_DWORD *)v94 = v55[11]; + v95 = v55[12]; + v96 = v55[13]; + v97 = v55[14]; + v98 = v55[15]; + v99 = v55[16]; + v100 = v55[17]; + LOWORD(v84) = v89; + v34 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + &v93, + (int)v94, + 7, + a5, + &v92); + goto LABEL_45; + case 1u: + v56 = (_DWORD *)v87[2]; + *(_DWORD *)v94 = v56[25]; + v95 = v56[26]; + v96 = v56[27]; + v97 = v56[28]; + v98 = v56[29]; + v99 = v56[30]; + v100 = v56[31]; + v101 = v56[32]; + v102 = v56[33]; + v103 = v56[34]; + v104 = v56[35]; + v105 = v56[36]; + LOWORD(v84) = v89; + v31 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + &v93, + (int)v94, + 12, + a5, + &v92); + goto LABEL_42; + case 2u: + case 0x18u: + case 0x38u: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 0, + 9999, + 4u, + a5, + &v92); + v89 = v28; + if ( !v92 ) + { + v29 = v93 - 1900; + if ( v93 < 0 ) + v29 = v93 + 100; + a7[5] = v29; + } + break; + case 3u: + (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( + v9, + "%m/%d/%y", + "%H:%M", + v94); + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + v94); + v89 = v57; + break; + case 7u: + v53 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 0, + 23, + 2u, + a5, + &v92); + goto LABEL_71; + case 8u: + v53 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 1, + 12, + 2u, + a5, + &v92); +LABEL_71: + a1 = v53; + v89 = v54; + if ( !v92 ) + a7[2] = v93; + break; + case 0xCu: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 0, + 59, + 2u, + a5, + &v92); + v89 = v66; + if ( !v92 ) + a7[1] = v93; + break; + case 0x11u: + (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( + v9, + "%H:%M", + "%H:%M:%S", + v94); + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + v94); + v89 = v67; + break; + case 0x12u: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 0, + 61, + 2u, + a5, + &v92); + v89 = v38; + if ( !v92 ) + *a7 = v93; + break; + case 0x13u: + (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v9 + 44))( + v9, + "%H:%M:%S", + &unk_52FB3E, + v94); + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + v94); + v89 = v39; + break; + case 0x17u: + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + *(wchar_t **)(v87[2] + 16)); + v89 = v40; + break; + case 0x19u: + if ( a1 && v89 == 0xFFFF ) + { + v71 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v71 >= a1[3] ) + v41 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v41 = *v71; + a1 = (_WORD)v41 == 0xFFFF ? 0 : a1; + } + else + { + v41 = v89; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v9 + 8))(v9, 1, v41) ) + goto LABEL_29; + LOWORD(v84) = v89; + v42 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + v94, + (int)std::__timepunct_cache::_S_timezones, + 14, + a5, + &v92); + v44 = v43; + a1 = v42; + v80 = v43 == -1; + v88 = v43; + v45 = v80; + v89 = v44; + v86 = v80 && v42 != 0; + if ( v86 ) + { + v76 = (_WORD *)v42[2]; + v77 = (unsigned int)v76 >= v42[3] ? (*(int (__fastcall **)(_DWORD *))(*v42 + 36))(v42) : *v76; + v45 = 0; + if ( v77 == -1 ) + { + v45 = v86; + a1 = 0; + v86 = 0; + } + } + v46 = v90 & (a3 != 0); + if ( v46 ) + { + v74 = (__int16 *)a3[2]; + if ( (unsigned int)v74 >= a3[3] ) + { + v91 = v45; + v75 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v45 = v91; + } + else + { + v75 = *v74; + } + a3 = v75 == -1 ? 0 : a3; + v47 = v75 != -1 ? 0 : v46; + } + else + { + v47 = (_WORD)a4 == 0xFFFF; + } + if ( v45 != v47 && !(*(_DWORD *)v94 | v92) ) + { + v48 = v44; + if ( v86 ) + { + v78 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v78 >= a1[3] ) + v48 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v48 = *v78; + a1 = v48 == 0xFFFF ? 0 : a1; + } + if ( (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 45) == v48 + || (a1 && v80 + ? ((v72 = (unsigned __int16 *)a1[2], (unsigned int)v72 >= a1[3]) + ? (v49 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1)) + : (v49 = *v72), + a1 = v49 == 0xFFFF ? 0 : a1) + : (_DWORD *)(v49 = v44), + (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 43) == v49) ) + { + v50 = std::time_get>::_M_extract_num( + a1, + v88, + a3, + (__int16)a4, + (int *)v94, + 0, + 23, + 2u, + a5, + &v92); + a1 = std::time_get>::_M_extract_num( + v50, + v51, + a3, + (__int16)a4, + (int *)v94, + 0, + 59, + 2u, + a5, + &v92); + v89 = v52; + } + } + break; + case 0x20u: + v33 = (_DWORD *)v87[2]; + *(_DWORD *)v94 = v33[18]; + v95 = v33[19]; + v96 = v33[20]; + v97 = v33[21]; + v98 = v33[22]; + v99 = v33[23]; + v100 = v33[24]; + LOWORD(v84) = v89; + v34 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + &v93, + (int)v94, + 7, + a5, + &v92); +LABEL_45: + a1 = v34; + v89 = v35; + if ( !v92 ) + a7[6] = v93; + break; + case 0x21u: + case 0x27u: + v30 = (_DWORD *)v87[2]; + *(_DWORD *)v94 = v30[37]; + v95 = v30[38]; + v96 = v30[39]; + v97 = v30[40]; + v98 = v30[41]; + v99 = v30[42]; + v100 = v30[43]; + v101 = v30[44]; + v102 = v30[45]; + v103 = v30[46]; + v104 = v30[47]; + v105 = v30[48]; + LOWORD(v84) = v89; + v31 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + &v93, + (int)v94, + 12, + a5, + &v92); +LABEL_42: + a1 = v31; + v89 = v32; + if ( !v92 ) + a7[4] = v93; + break; + case 0x22u: + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + *(wchar_t **)(v87[2] + 24)); + v89 = v36; + break; + case 0x23u: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 1, + 31, + 2u, + a5, + &v92); + v89 = v37; + if ( !v92 ) + goto LABEL_49; + break; + case 0x24u: + if ( a1 && v89 == 0xFFFF ) + { + v70 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v70 >= a1[3] ) + v58 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v58 = *v70; + a1 = (_WORD)v58 == 0xFFFF ? 0 : a1; + } + else + { + v58 = v89; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v9 + 8))(v9, 32, v58) ) + { + v59 = a1[2]; + if ( v59 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v59 + 2; + a1 = std::time_get>::_M_extract_num( + a1, + 0xFFFF, + a3, + (__int16)a4, + &v93, + 1, + 9, + 1u, + a5, + &v92); + v89 = v60; + } + else + { + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 10, + 31, + 2u, + a5, + &v92); + v89 = v73; + } + if ( !v92 ) +LABEL_49: + a7[3] = v93; + break; + case 0x2Cu: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 1, + 12, + 2u, + a5, + &v92); + v89 = v61; + if ( !v92 ) + a7[4] = v93 - 1; + break; + case 0x2Du: + if ( a1 && v89 == 0xFFFF ) + { + v68 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v68 >= a1[3] ) + v65 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v65 = *v68; + a1 = (_WORD)v65 == 0xFFFF ? 0 : a1; + } + else + { + v65 = v89; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 48))(v9, v65, 0) != 10 ) + goto LABEL_29; + goto LABEL_91; + case 0x33u: + if ( a1 && v89 == 0xFFFF ) + { + v69 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v69 >= a1[3] ) + v62 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v62 = *v69; + a1 = (_WORD)v62 == 0xFFFF ? 0 : a1; + } + else + { + v62 = v89; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 48))(v9, v62, 0) != 9 ) + goto LABEL_29; +LABEL_91: + v63 = a1[2]; + if ( v63 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v63 + 2; + v89 = -1; + break; + case 0x37u: + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + *(wchar_t **)(v87[2] + 8)); + v89 = v64; + break; + default: + goto LABEL_29; + } +LABEL_30: + v10 = v82 + 1; + } + else + { + v18 = String[v10]; + if ( a1 && v89 == 0xFFFF ) + { + v27 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v27 >= a1[3] ) + v19 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v19 = *v27; + a1 = v19 == 0xFFFF ? 0 : a1; + } + else + { + v19 = v89; + } + if ( v18 == v19 ) + { + v26 = a1[2]; + if ( v26 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v26 + 2; + ++v10; + v89 = -1; + } + else + { + v92 |= 4u; + ++v10; + } + } + } + if ( v14 || v10 != v85 ) +LABEL_23: + *a6 |= 4u; + return a1; +} +// 478100: variable 'v28' is possibly undefined +// 478254: variable 'v32' is possibly undefined +// 478345: variable 'v35' is possibly undefined +// 4783DD: variable 'v36' is possibly undefined +// 47845F: variable 'v37' is possibly undefined +// 478516: variable 'v38' is possibly undefined +// 4785C7: variable 'v39' is possibly undefined +// 478646: variable 'v40' is possibly undefined +// 4786E8: variable 'v43' is possibly undefined +// 47885E: variable 'v51' is possibly undefined +// 478875: variable 'v52' is possibly undefined +// 478906: variable 'v54' is possibly undefined +// 478B83: variable 'v57' is possibly undefined +// 478C4C: variable 'v60' is possibly undefined +// 478CEB: variable 'v61' is possibly undefined +// 478DD8: variable 'v64' is possibly undefined +// 478E9E: variable 'v66' is possibly undefined +// 478FCD: variable 'v67' is possibly undefined +// 47916C: variable 'v73' is possibly undefined +// 516540: using guessed type void *std::__timepunct_cache::_S_timezones[2]; + +//----- (00479290) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + _DWORD *a5, + int a6, + unsigned int a7, + int a8, + _DWORD *a9) +{ + void *v9; // edi + int v10; // eax + void *v11; // esp + void *v12; // esp + char v13; // dl + char v14; // bl + char v15; // bl + int *v16; // edi + unsigned int v17; // esi + char v18; // dl + char v19; // dl + unsigned __int8 v20; // bl + unsigned int v21; // edx + unsigned int *v22; // ecx + int v23; // ebx + unsigned int v24; // eax + __int16 *v25; // eax + __int16 v26; // cx + __int16 *v28; // eax + __int16 v29; // cx + __int16 *v30; // eax + int v31; // eax + int v32; // edx + int v33; // ebx + __int16 v34; // ax + int v35; // ecx + unsigned int v36; // eax + int v37; // eax + void *v38; // esp + void *v39; // esp + int v40; // esi + int v41; // ebx + __int16 *v42; // eax + __int16 v43; // cx + _WORD *v44; // eax + __int16 v45; // ax + __int16 v46; // ax + __int16 v47; // ax + _WORD *v48; // eax + int v49; // eax + __int16 v50; // ax + int v51; // [esp+10h] [ebp-48h] BYREF + int v52; // [esp+14h] [ebp-44h] + _DWORD *v53; // [esp+18h] [ebp-40h] + char v54; // [esp+1Fh] [ebp-39h] + _DWORD *v55; // [esp+20h] [ebp-38h] + unsigned int v56; // [esp+24h] [ebp-34h] + __int16 v57; // [esp+28h] [ebp-30h] + __int16 v58; // [esp+2Ah] [ebp-2Eh] + int v59; // [esp+2Ch] [ebp-2Ch] + int *v60; // [esp+30h] [ebp-28h] + int *v61; // [esp+34h] [ebp-24h] + unsigned int v62; // [esp+38h] [ebp-20h] + unsigned int v63; // [esp+3Ch] [ebp-1Ch] + + v52 = a2; + v57 = a2; + v55 = a1; + v53 = a3; + v9 = std::use_facet>(a8 + 108); + v10 = 16 * ((8 * a7 + 27) >> 4); + v11 = alloca(v10); + v12 = alloca(v10); + v61 = &v51; + v13 = (_WORD)a2 == 0xFFFF; + LOBYTE(v62) = v13 & (a1 != 0); + if ( (_BYTE)v62 ) + { + v44 = (_WORD *)v55[2]; + v45 = (unsigned int)v44 >= v55[3] ? (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55) : *v44; + v13 = 0; + if ( v45 == -1 ) + { + v13 = v62; + v55 = 0; + LOBYTE(v62) = 0; + } + } + v54 = a4 == -1; + v14 = v54 & (a3 != 0); + if ( v14 ) + { + v42 = (__int16 *)a3[2]; + if ( (unsigned int)v42 >= a3[3] ) + { + v49 = *a3; + LOBYTE(v63) = v13; + v50 = (*(int (__fastcall **)(_DWORD *))(v49 + 36))(a3); + v13 = v63; + v43 = v50; + } + else + { + v43 = *v42; + } + v53 = v43 == -1 ? 0 : a3; + v15 = v43 != -1 ? 0 : v14; + } + else + { + v15 = v54; + } + if ( v15 == v13 ) + { + v62 = 0; + v16 = 0; + v17 = 0; + goto LABEL_6; + } + LOWORD(v63) = v57; + if ( (_BYTE)v62 ) + { + v48 = (_WORD *)v55[2]; + if ( (unsigned int)v48 >= v55[3] ) + LOWORD(v63) = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + else + LOWORD(v63) = *v48; + v55 = (_WORD)v63 == 0xFFFF ? 0 : v55; + } + v62 = 2 * a7; + if ( 2 * a7 ) + { + v32 = a6; + v33 = 0; + v17 = 0; + while ( 1 ) + { + v35 = **(unsigned __int16 **)(v32 + 4 * v33); + if ( (_WORD)v35 == (_WORD)v63 + || (a6 = v32, + v34 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v35), + v32 = a6, + v34 == (_WORD)v63) ) + { + v61[v17++] = v33; + if ( ++v33 == v62 ) + { +LABEL_52: + if ( v17 ) + { + v36 = v55[2]; + if ( v36 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *, int))(*v55 + 40))(v55, v32); + else + v55[2] = v36 + 2; + v37 = 16 * ((4 * v17 + 27) >> 4); + v38 = alloca(v37); + v39 = alloca(v37); + v63 = v17; + v62 = (unsigned int)&v51; + v60 = &v51; + v40 = 0; + v41 = (int)v61; + do + { + *(_DWORD *)(v62 + 4 * v40) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v41 + 4 * v40))); + ++v40; + } + while ( v63 != v40 ); + v17 = v63; + v16 = v60; + v62 = 1; + v57 = -1; + } + else + { + v62 = 0; + v16 = 0; + } + goto LABEL_6; + } + } + else if ( ++v33 == v62 ) + { + goto LABEL_52; + } + } + } + v17 = 0; + v16 = 0; +LABEL_6: + while ( 2 ) + { + LOBYTE(v63) = v57 == -1; + v18 = v63 & (v55 != 0); + if ( v18 ) + { + v28 = (__int16 *)v55[2]; + if ( (unsigned int)v28 >= v55[3] ) + { + LOBYTE(v60) = v63 & (v55 != 0); + v46 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + v18 = (char)v60; + v29 = v46; + } + else + { + v29 = *v28; + } + v55 = v29 == -1 ? 0 : v55; + v19 = v29 != -1 ? 0 : v18; + } + else + { + v19 = v63; + } + v20 = v54 & (v53 != 0); + if ( v20 ) + { + v25 = (__int16 *)v53[2]; + if ( (unsigned int)v25 >= v53[3] ) + { + LOBYTE(v60) = v19; + v47 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); + v19 = (char)v60; + v26 = v47; + } + else + { + v26 = *v25; + } + v53 = v26 == -1 ? 0 : v53; + if ( ((unsigned __int8)((v26 != -1) - 1) & v20) == v19 ) + break; + } + else if ( v54 == v19 ) + { + break; + } + if ( v55 && (_BYTE)v63 ) + { + v30 = (__int16 *)v55[2]; + if ( (unsigned int)v30 >= v55[3] ) + v58 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + else + v58 = *v30; + v55 = v58 == -1 ? 0 : v55; + } + else + { + v58 = v57; + } + if ( !v17 ) + { +LABEL_30: + *a9 |= 4u; + goto LABEL_31; + } + v63 = (unsigned int)v16; + v21 = 0; + v59 = 0; + v56 = 2 * v62; + do + { + while ( 1 ) + { + v22 = (unsigned int *)(v63 + 4 * v21); + if ( *v22 > v62 ) + break; + ++v59; + ++v21; +LABEL_16: + if ( v21 >= v17 ) + goto LABEL_20; + } + v23 = v61[v21]; + v60 = &v61[v21]; + if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v23) + v56) == v58 ) + { + ++v21; + goto LABEL_16; + } + *v60 = v61[--v17]; + *v22 = *(_DWORD *)(v63 + 4 * v17); + } + while ( v21 < v17 ); +LABEL_20: + v16 = (int *)v63; + if ( v59 != v17 ) + { + v24 = v55[2]; + if ( v24 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v24 + 2; + ++v62; + v57 = -1; + continue; + } + break; + } + if ( v17 != 1 ) + { + if ( v17 == 2 && (*v16 == v62 || v16[1] == v62) ) + goto LABEL_42; + goto LABEL_30; + } + if ( *v16 != v62 ) + goto LABEL_30; +LABEL_42: + v31 = *v61; + if ( *v61 >= a7 ) + v31 -= a7; + *a5 = v31; +LABEL_31: + LOWORD(v52) = v57; + return v55; +} + +//----- (00479770) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + int a2, + int a3, + _DWORD *a4, + int a5, + int a6, + _DWORD *a7, + _DWORD *a8, + unsigned __int16 *a9, + unsigned __int16 *a10) +{ + void *v11; // ebp + unsigned __int16 *v12; // edi + int v13; // edx + __int16 v14; // si + int v15; // edx + __int16 v16; // si + unsigned int v17; // eax + bool v18; // dl + char v19; // dl + unsigned __int8 v20; // si + char v21; // si + int v22; // eax + int (__thiscall *v23)(void *, int, int, _DWORD *, int *, int, _DWORD *, _DWORD *, _DWORD, int); // edx + int *v24; // eax + int v25; // edx + _DWORD *v26; // esi + unsigned __int16 v27; // dx + char v28; // dl + char v29; // di + char v30; // al + unsigned __int16 *i; // edi + char v33; // dl + unsigned __int8 v34; // si + unsigned __int16 v35; // ax + unsigned int v36; // eax + bool v37; // di + bool v38; // dl + __int16 *v39; // eax + __int16 v40; // ax + __int16 *v41; // eax + __int16 v42; // ax + _WORD *v43; // eax + __int16 *v44; // eax + __int16 v45; // ax + __int16 *v46; // eax + __int16 v47; // ax + char v48; // dl + unsigned __int16 *v49; // eax + unsigned __int16 v50; // dx + __int16 *v51; // eax + __int16 v52; // ax + __int16 *v53; // eax + __int16 v54; // ax + _WORD *v55; // eax + unsigned __int16 v56; // [esp+66h] [ebp-52h] + bool v58; // [esp+6Ch] [ebp-4Ch] + unsigned __int16 *v59; // [esp+6Ch] [ebp-4Ch] + char v60; // [esp+6Ch] [ebp-4Ch] + int v61; // [esp+70h] [ebp-48h] + int *v63; // [esp+78h] [ebp-40h] + char v64; // [esp+7Ch] [ebp-3Ch] + char v65; // [esp+7Dh] [ebp-3Bh] + char v66; // [esp+7Dh] [ebp-3Bh] + char v67; // [esp+7Dh] [ebp-3Bh] + wchar_t v68; // [esp+94h] [ebp-24h] BYREF + __int16 v69; // [esp+96h] [ebp-22h] + __int16 v70; // [esp+98h] [ebp-20h] + __int16 v71; // [esp+9Ah] [ebp-1Eh] + unsigned __int16 *v72; // [esp+D8h] [ebp+20h] + + HIWORD(v61) = HIWORD(a3); + v56 = a3; + HIWORD(v63) = HIWORD(a5); + v11 = std::use_facet>(a6 + 108); + *a7 = 0; + if ( a9 != a10 ) + { + v12 = a9; + v64 = (_WORD)a5 == 0xFFFF; + do + { + v58 = v56 == 0xFFFF; + v18 = v58 && a2 != 0; + if ( v18 ) + { + v46 = *(__int16 **)(a2 + 8); + if ( (unsigned int)v46 >= *(_DWORD *)(a2 + 12) ) + { + v47 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v18 = v58 && a2 != 0; + } + else + { + v47 = *v46; + } + a2 = v47 == -1 ? 0 : a2; + v19 = v47 == -1 && v18; + } + else + { + v19 = v56 == 0xFFFF; + } + v20 = v64 & (a4 != 0); + if ( v20 ) + { + v44 = (__int16 *)a4[2]; + if ( (unsigned int)v44 >= a4[3] ) + { + v66 = v19; + v45 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v19 = v66; + } + else + { + v45 = *v44; + } + a4 = v45 == -1 ? 0 : a4; + if ( ((unsigned __int8)((v45 != -1) - 1) & v20) == v19 ) + { +LABEL_65: + *a7 = 6; + return a2; + } + } + else if ( v64 == v19 ) + { + goto LABEL_65; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, *v12, 0) == 37 ) + { + v59 = v12 + 1; + if ( a10 == v12 + 1 ) + goto LABEL_92; + v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v12[1], 0); + if ( v21 == 69 || (v65 = 0, v22 = 0, v21 == 79) ) + { + v59 = v12 + 2; + if ( a10 == v12 + 2 ) + goto LABEL_92; + v48 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v12[2], 0); + v65 = v21; + v22 = v21; + v21 = v48; + } + v23 = *(int (__thiscall **)(void *, int, int, _DWORD *, int *, int, _DWORD *, _DWORD *, _DWORD, int))(*(_DWORD *)this + 32); + if ( (char *)v23 == (char *)std::time_get>::do_get ) + { + LOWORD(v61) = v56; + LOWORD(v63) = a5; + v24 = (int *)std::use_facet>(a6 + 108); + v25 = *v24; + *a7 = 0; + v68 = (*(int (__thiscall **)(int *, int))(v25 + 40))(v24, 37); + if ( v65 ) + { + v70 = v21; + v69 = v65; + v71 = 0; + } + else + { + v69 = v21; + v70 = 0; + } + v26 = std::time_get>::_M_extract_via_format( + (_DWORD *)a2, + v61, + a4, + v63, + a6, + a7, + a8, + &v68); + a2 = (int)v26; + v56 = v27; + v28 = v27 == 0xFFFF; + v29 = v28 & (v26 != 0); + if ( v29 ) + { + v53 = (__int16 *)v26[2]; + if ( (unsigned int)v53 >= v26[3] ) + v54 = (*(int (__fastcall **)(_DWORD *))(*v26 + 36))(v26); + else + v54 = *v53; + v28 = v54 != -1 ? 0 : v29; + a2 = v54 == -1 ? 0 : (unsigned int)v26; + } + if ( a4 && (_WORD)a5 == 0xFFFF ) + { + v51 = (__int16 *)a4[2]; + if ( (unsigned int)v51 >= a4[3] ) + { + v67 = v28; + v52 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v28 = v67; + } + else + { + v52 = *v51; + } + v30 = v52 == -1; + } + else + { + v30 = (_WORD)a5 == 0xFFFF; + } + if ( v28 == v30 ) + *a7 |= 2u; + } + else + { + LOWORD(v61) = v56; + LOWORD(v63) = a5; + a2 = v23(this, a2, v61, a4, v63, a6, a7, a8, v21, v22); + v56 = v50; + } + v12 = v59 + 1; + if ( a10 == v59 + 1 ) + return a2; + } + else + { + if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v11 + 8))(v11, 32, *v12) ) + { + for ( i = v12 + 1; a10 != i; ++i ) + { + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v11 + 8))(v11, 32, *i) ) + break; + } + v72 = i; + while ( 1 ) + { + v37 = v56 == 0xFFFF; + v38 = v37 && a2 != 0; + if ( v38 ) + { + v39 = *(__int16 **)(a2 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(a2 + 12) ) + { + v40 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v38 = v37 && a2 != 0; + } + else + { + v40 = *v39; + } + a2 = v40 == -1 ? 0 : a2; + v33 = v40 == -1 && v38; + } + else + { + v33 = v56 == 0xFFFF; + } + v34 = v64 & (a4 != 0); + if ( v34 ) + { + v41 = (__int16 *)a4[2]; + if ( (unsigned int)v41 >= a4[3] ) + { + v60 = v33; + v42 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v33 = v60; + } + else + { + v42 = *v41; + } + a4 = v42 == -1 ? 0 : a4; + if ( ((unsigned __int8)((v42 != -1) - 1) & v34) == v33 ) + break; + } + else if ( v64 == v33 ) + { + break; + } + if ( a2 && v56 == 0xFFFF ) + { + v43 = *(_WORD **)(a2 + 8); + v35 = (unsigned int)v43 >= *(_DWORD *)(a2 + 12) + ? (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2) + : *v43; + a2 = v35 == 0xFFFF ? 0 : a2; + } + else + { + v35 = v56; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v11 + 8))(v11, 32, v35) ) + break; + v36 = *(_DWORD *)(a2 + 8); + if ( v36 >= *(_DWORD *)(a2 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + else + *(_DWORD *)(a2 + 8) = v36 + 2; + v56 = -1; + } + v12 = v72; + } + else + { + if ( a2 && v56 == 0xFFFF ) + { + v49 = *(unsigned __int16 **)(a2 + 8); + if ( (unsigned int)v49 >= *(_DWORD *)(a2 + 12) ) + v13 = (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + else + v13 = *v49; + a2 = (_WORD)v13 == 0xFFFF ? 0 : a2; + } + else + { + v13 = v56; + } + v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v11 + 32))(v11, v13); + if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v11 + 32))(v11, *v12) != v14 ) + { + if ( a2 && v56 == 0xFFFF ) + { + v55 = *(_WORD **)(a2 + 8); + v15 = (unsigned int)v55 >= *(_DWORD *)(a2 + 12) + ? (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2) + : (unsigned __int16)*v55; + a2 = (_WORD)v15 == 0xFFFF ? 0 : a2; + } + else + { + v15 = v56; + } + v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v11 + 24))(v11, v15); + if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v11 + 24))(v11, *v12) != v16 ) + { +LABEL_92: + *a7 = 4; + return a2; + } + } + v17 = *(_DWORD *)(a2 + 8); + if ( v17 >= *(_DWORD *)(a2 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + else + *(_DWORD *)(a2 + 8) = v17 + 2; + ++v12; + v56 = -1; + } + if ( a10 == v12 ) + return a2; + } + } + while ( !*a7 ); + } + return a2; +} +// 479A54: variable 'v27' is possibly undefined +// 479DE8: variable 'v50' is possibly undefined + +//----- (00479F50) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + _DWORD *a2, + int a3, + _DWORD *a4, + int *a5, + int a6, + _DWORD *a7, + _DWORD *a8, + char a9, + char a10) +{ + _DWORD *(__stdcall *v10)(_DWORD *, int, _DWORD *, int *, int, _DWORD *, _DWORD *, char, char); // eax + int *v11; // eax + int v12; // edx + _DWORD *v13; // ecx + __int16 v14; // dx + char v15; // dl + _DWORD *v16; // ebx + char v17; // si + char v18; // cl + __int16 *v20; // eax + __int16 v21; // ax + __int16 *v22; // eax + __int16 v23; // ax + char v24; // [esp+3Ch] [ebp-34h] + _DWORD *v25; // [esp+40h] [ebp-30h] + wchar_t v26; // [esp+4Ch] [ebp-24h] BYREF + __int16 v27; // [esp+4Eh] [ebp-22h] + __int16 v28; // [esp+50h] [ebp-20h] + __int16 v29; // [esp+52h] [ebp-1Eh] + + v10 = *(_DWORD *(__stdcall **)(_DWORD *, int, _DWORD *, int *, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); + if ( v10 != std::time_get>::do_get ) + return ((int (__thiscall *)(void *, _DWORD *, int, _DWORD *, int *, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( + this, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v11 = (int *)std::use_facet>(a6 + 108); + v12 = *v11; + *a7 = 0; + v26 = (*(int (__thiscall **)(int *, int))(v12 + 40))(v11, 37); + if ( a10 ) + { + v28 = a9; + v27 = a10; + v29 = 0; + } + else + { + v27 = a9; + v28 = 0; + } + v13 = std::time_get>::_M_extract_via_format( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + &v26); + v15 = v14 == -1; + v16 = v13; + v17 = v15 & (v13 != 0); + if ( v17 ) + { + v20 = (__int16 *)v13[2]; + if ( (unsigned int)v20 >= v13[3] ) + { + v25 = v13; + v21 = (*(int (**)(void))(*v13 + 36))(); + v13 = v25; + } + else + { + v21 = *v20; + } + v15 = v21 != -1 ? 0 : v17; + v16 = v21 == -1 ? 0 : v13; + } + v18 = (_WORD)a5 == 0xFFFF; + if ( a4 && (_WORD)a5 == 0xFFFF ) + { + v22 = (__int16 *)a4[2]; + if ( (unsigned int)v22 >= a4[3] ) + { + v24 = v15; + v23 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v15 = v24; + } + else + { + v23 = *v22; + } + v18 = v23 == -1; + } + if ( v18 == v15 ) + *a7 |= 2u; + return (int)v16; +} +// 47A02D: variable 'v14' is possibly undefined + +//----- (0047A180) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + int a5, + _DWORD *a6, + _DWORD *a7, + char a8, + char a9) +{ + void *v9; // eax + _DWORD *v10; // ecx + _DWORD *v11; // ebp + __int16 v12; // dx + __int16 v13; // bx + char v14; // di + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + int v21; // [esp+34h] [ebp-3Ch] + wchar_t v22; // [esp+4Ch] [ebp-24h] BYREF + __int16 v23; // [esp+4Eh] [ebp-22h] + __int16 v24; // [esp+50h] [ebp-20h] + __int16 v25; // [esp+52h] [ebp-1Eh] + + v9 = std::use_facet>(a5 + 108); + *a6 = 0; + v22 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 37); + if ( a9 ) + { + v24 = a8; + v23 = a9; + v25 = 0; + } + else + { + v23 = a8; + v24 = 0; + } + v10 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + &v22); + v11 = v10; + v13 = v12 == -1; + v14 = v13 & (v10 != 0); + if ( v14 ) + { + v19 = (__int16 *)v10[2]; + if ( (unsigned int)v19 >= v10[3] ) + { + v21 = (int)v10; + v20 = (*(int (**)(void))(*v10 + 36))(); + v10 = (_DWORD *)v21; + } + else + { + v20 = *v19; + } + LOBYTE(v13) = v20 != -1 ? 0 : v14; + v11 = v20 == -1 ? 0 : v10; + } + v15 = (_WORD)a4 == 0xFFFF; + if ( a3 && (_WORD)a4 == 0xFFFF ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( (_BYTE)v13 == v15 ) + *a6 |= 2u; + return v11; +} +// 47A262: variable 'v12' is possibly undefined + +//----- (0047A340) -------------------------------------------------------- +int __fastcall std::time_get>::get_date(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); +} + +//----- (0047A350) -------------------------------------------------------- +int __fastcall std::time_get>::get_time(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); +} + +//----- (0047A360) -------------------------------------------------------- +int __fastcall std::time_get>::get_year(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); +} + +//----- (0047A370) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::_M_extract( + unsigned int a1, + int a2, + unsigned int a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + unsigned int v8; // edx + int v9; // eax + size_t v10; // esi + size_t v11; // edi + _BYTE *v12; // eax + unsigned int v13; // eax + bool v14; // si + char v15; // si + unsigned __int8 v16; // si + _BYTE *v17; // eax + char v18; // al + size_t v19; // esi + _BYTE *v20; // eax + size_t v21; // edi + unsigned int v22; // edx + char v23; // al + _BYTE *v24; // eax + unsigned int i; // edi + char v26; // si + char v27; // si + int v28; // eax + char v29; // si + _BYTE *v30; // eax + char v31; // si + int v32; // eax + unsigned __int8 *v33; // eax + bool v34; // si + int v35; // edi + int v36; // esi + int v37; // esi + char v38; // al + int v39; // eax + unsigned __int8 *v40; // eax + int v41; // eax + char v42; // al + unsigned int v43; // edi + bool v44; // si + char v45; // si + int v46; // eax + _BYTE *v47; // eax + int v48; // eax + int v49; // edx + char v50; // al + unsigned __int8 *v52; // eax + int v53; // eax + int v54; // edx + char v55; // al + int v56; // eax + bool v57; // si + char v58; // si + char v59; // al + bool v60; // al + size_t v61; // esi + _BYTE *v62; // eax + size_t v63; // edx + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // esi + bool v68; // di + char v69; // al + unsigned int first_not_of; // eax + int v71; // edx + _BYTE *v72; // eax + int v73; // eax + std::locale::_Impl *v74; // eax + std::locale::_Impl *v75; // esi + int v76; // edx + int v77; // eax + int v78; // eax + int v79; // eax + int v80; // eax + _BYTE *v81; // eax + int v82; // eax + int v83; // edx + int v84; // edx + int v85; // eax + int v86; // eax + void (__cdecl *v87)(void *); // [esp+4h] [ebp-A4h] + unsigned int v88; // [esp+8h] [ebp-A0h] + char v89; // [esp+18h] [ebp-90h] + char v90; // [esp+1Ch] [ebp-8Ch] + unsigned int v91; // [esp+1Ch] [ebp-8Ch] + _DWORD *v92; // [esp+20h] [ebp-88h] + unsigned int v93; // [esp+24h] [ebp-84h] + int v94; // [esp+2Ch] [ebp-7Ch] + bool v95; // [esp+31h] [ebp-77h] + char v96; // [esp+32h] [ebp-76h] + char v97; // [esp+33h] [ebp-75h] + _BYTE *Buf; // [esp+34h] [ebp-74h] + int *v99; // [esp+38h] [ebp-70h] + int v100; // [esp+38h] [ebp-70h] + int v101; // [esp+3Ch] [ebp-6Ch] + std::locale::facet *v102; // [esp+40h] [ebp-68h] + char v103; // [esp+40h] [ebp-68h] + char v104; // [esp+40h] [ebp-68h] + char v105; // [esp+40h] [ebp-68h] + char v106; // [esp+40h] [ebp-68h] + char v107; // [esp+40h] [ebp-68h] + char v108; // [esp+40h] [ebp-68h] + char v109; // [esp+40h] [ebp-68h] + char v112; // [esp+4Ch] [ebp-5Ch] + char v113; // [esp+4Ch] [ebp-5Ch] + char v114; // [esp+5Bh] [ebp-4Dh] BYREF + int v115; // [esp+5Ch] [ebp-4Ch] + void *v116; // [esp+60h] [ebp-48h] BYREF + size_t v117; // [esp+64h] [ebp-44h] + int v118[4]; // [esp+68h] [ebp-40h] BYREF + void *v119; // [esp+78h] [ebp-30h] BYREF + size_t v120; // [esp+7Ch] [ebp-2Ch] + int v121[10]; // [esp+80h] [ebp-28h] BYREF + + v92 = std::use_facet>(a5 + 108); + v102 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); + v99 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v102); + v101 = *v99; + if ( !*v99 ) + { + v74 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v87); + *(_DWORD *)v74 = &off_538D0C; + v75 = v74; + *((_DWORD *)v74 + 1) = 0; + *((_DWORD *)v74 + 2) = 0; + *((_DWORD *)v74 + 3) = 0; + *((_WORD *)v74 + 8) = 0; + *((_BYTE *)v74 + 18) = 0; + *((_DWORD *)v74 + 5) = 0; + *((_DWORD *)v74 + 6) = 0; + *((_DWORD *)v74 + 7) = 0; + *((_DWORD *)v74 + 8) = 0; + *((_DWORD *)v74 + 9) = 0; + *((_DWORD *)v74 + 10) = 0; + *((_DWORD *)v74 + 11) = 0; + *((_DWORD *)v74 + 12) = 0; + *((_DWORD *)v74 + 13) = 0; + *((_BYTE *)v74 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v74, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v75, v102, v88); + v101 = *v99; + } + if ( *(_DWORD *)(v101 + 32) ) + v95 = *(_DWORD *)(v101 + 40) != 0; + else + v95 = 0; + v117 = 0; + v116 = v118; + LOBYTE(v118[0]) = 0; + if ( *(_BYTE *)(v101 + 16) ) + std::string::reserve(&v116, 0x20u); + v119 = v121; + v120 = 0; + LOBYTE(v121[0]) = 0; + std::string::reserve(&v119, 0x20u); + v97 = 0; + v94 = 1; + v100 = 0; + v115 = *(_DWORD *)(v101 + 52); + v89 = 0; + v93 = 0; + v96 = 0; + while ( 2 ) + { + v9 = (unsigned __int8)*(&v114 + v94); + switch ( *(&v114 + v94) ) + { + case 0: + v104 = 1; + goto LABEL_37; + case 1: + LOBYTE(v9) = a2 == -1; + v35 = v9; + LOBYTE(v9) = v9 & (a1 != 0); + v36 = v9; + if ( (_BYTE)v9 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v86 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v86 == -1) - 1; + LOBYTE(v86) = v86 != -1; + v37 = (v86 - 1) & v36; + } + else + { + v37 = 0; + } + } + else + { + v37 = v35; + } + v38 = a4 == -1; + v106 = v38 & (a3 != 0); + if ( v106 ) + { + v38 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v38 = v76 != -1 ? 0 : v106; + a3 &= (v76 == -1) - 1; + } + } + v8 = v37; + v104 = 0; + if ( v38 == (_BYTE)v37 ) + goto LABEL_37; + if ( a1 && (_BYTE)v35 ) + { + v40 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v40 < *(_DWORD *)(a1 + 12) ) + { + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * *v40) & 0x20) != 0 ) + goto LABEL_77; + a2 = -1; + goto LABEL_37; + } + v39 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v39 == -1) - 1; + } + else + { + LOBYTE(v39) = a2; + } + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v39) & 0x20) != 0 ) + { + v40 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_78; + } +LABEL_77: + *(_DWORD *)(a1 + 8) = v40 + 1; +LABEL_78: + a2 = -1; + v104 = 1; + goto LABEL_37; + } + v104 = 0; +LABEL_37: + if ( v94 == 4 ) + { + v23 = v104 & (v93 > 1); +LABEL_39: + if ( v23 ) + { + if ( v96 ) + v24 = *(_BYTE **)(v101 + 36); + else + v24 = *(_BYTE **)(v101 + 28); + Buf = v24; + for ( i = 1; ; ++i ) + { + v105 = a2 == -1; + v26 = v105 & (a1 != 0); + if ( v26 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v78 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v78 == -1) - 1; + v27 = v78 != -1 ? 0 : v26; + } + else + { + v27 = 0; + } + } + else + { + v27 = a2 == -1; + } + if ( a3 && a4 == -1 ) + { + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v56 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + if ( v56 == -1 ) + { + a3 = 0; + v27 ^= 1u; + } + } + } + else + { + v27 ^= a4 == -1; + } + if ( i >= v93 || !v27 ) + { + if ( i != v93 ) + { +LABEL_182: + v29 = (a1 != 0) & v105; + goto LABEL_108; + } + if ( v120 > 1 ) + goto LABEL_198; + goto LABEL_165; + } + LOBYTE(v28) = a2; + v29 = v105 & (a1 != 0); + if ( v29 ) + { + v30 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) + { + if ( Buf[i] != *v30 ) + { + v105 &= a1 != 0; + goto LABEL_108; + } +LABEL_53: + *(_DWORD *)(a1 + 8) = v30 + 1; + goto LABEL_54; + } + v28 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v28 == -1) - 1; + } + if ( Buf[i] != (_BYTE)v28 ) + goto LABEL_182; + v30 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) + goto LABEL_53; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); +LABEL_54: + a2 = -1; + } + } + if ( !v104 ) + goto LABEL_107; + if ( v120 > 1 ) + { +LABEL_198: + first_not_of = std::string::find_first_not_of((int *)&v119, 48, 0); + if ( first_not_of ) + { + v71 = v120; + if ( first_not_of != -1 ) + goto LABEL_200; + first_not_of = v120 - 1; + if ( !v120 ) + { + *(_BYTE *)v119 = 0; + goto LABEL_165; + } + if ( v120 != 1 ) + { +LABEL_200: + if ( v120 > first_not_of ) + v71 = first_not_of; + std::string::_M_erase((int *)&v119, 0, v71); + } + } + } +LABEL_165: + if ( v96 && *(_BYTE *)v119 != 48 ) + std::string::_M_replace_aux(&v119, 0, 0, 1u, 45); + v61 = v117; + if ( v117 ) + { + v108 = v100; + if ( v97 ) + v108 = v89; + v62 = v116; + if ( v116 == v118 ) + v63 = 15; + else + v63 = v118[0]; + if ( v117 + 1 > v63 ) + { + std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); + v62 = v116; + } + v62[v61] = v108; + v117 = v61 + 1; + *((_BYTE *)v116 + v61 + 1) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v101 + 8), *(_DWORD *)(v101 + 12), (int)&v116) ) + *a6 |= 4u; + } + v105 = a2 == -1; + v29 = (a1 != 0) & v105; + if ( v97 && *(_DWORD *)(v101 + 44) != v100 ) + goto LABEL_108; + std::string::swap(a7, &v119); + if ( !v29 ) + goto LABEL_109; +LABEL_180: + v105 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v105 = v64 != -1 ? 0 : v29; + a1 &= (v64 == -1) - 1; + } + goto LABEL_109; + } + while ( 1 ) + { + v34 = a2 == -1 && a1 != 0; + if ( v34 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v77 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v8 = (v77 == -1) - 1; + a1 &= v8; + v31 = v77 == -1 && v34; + } + else + { + v31 = 0; + } + } + else + { + v31 = a2 == -1; + } + LOBYTE(v8) = a4 == -1; + v90 = v8 & (a3 != 0); + if ( v90 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) + { + v53 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + LOBYTE(v54) = v53 != -1; + v8 = v54 - 1; + LOBYTE(v8) = v90 & v8; + a3 &= (v53 == -1) - 1; + if ( (_BYTE)v8 == v31 ) + goto LABEL_125; + } + else if ( (_BYTE)v8 == v31 ) + { + goto LABEL_125; + } + if ( a1 && a2 == -1 ) + { + v33 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + { + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * *v33) & 0x20) == 0 ) + { + a2 = -1; + v42 = v104 ^ 1; + goto LABEL_126; + } +LABEL_63: + *(_DWORD *)(a1 + 8) = v33 + 1; + goto LABEL_64; + } + v32 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v32 == -1) - 1; + } + else + { + LOBYTE(v32) = a2; + } + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v32) & 0x20) == 0 ) + goto LABEL_125; + v33 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + goto LABEL_63; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); +LABEL_64: + a2 = -1; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_89; + v8 = v94 - 1; + v42 = v94 == 1 || v93 > 1; + if ( v42 ) + goto LABEL_89; + if ( v94 != 2 ) + { + v104 = 1; + if ( v94 == 3 ) + { + if ( HIBYTE(v115) == 4 || HIBYTE(v115) == 3 && v95 ) + goto LABEL_89; + } + else + { +LABEL_126: + if ( v94 > 3 || v42 ) + { + v23 = v104 & (v93 > 1); + goto LABEL_39; + } + } +LABEL_128: + ++v94; + continue; + } + if ( !v95 && (_BYTE)v115 != 3 && BYTE2(v115) != 1 ) + goto LABEL_128; +LABEL_89: + v43 = 0; + v91 = *(_DWORD *)(v101 + 24); + while ( 2 ) + { + v44 = a2 == -1 && a1 != 0; + if ( v44 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v79 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v8); + a1 &= (v79 == -1) - 1; + v45 = v79 == -1 && v44; + } + else + { + v45 = 0; + } + } + else + { + v45 = a2 == -1; + } + v8 = a3; + if ( a3 && a4 == -1 ) + { + v8 = *(_DWORD *)(a3 + 12); + if ( *(_DWORD *)(a3 + 8) >= v8 ) + { + v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; + v45 ^= v60; + a3 &= v60 - 1; + } + } + else + { + v45 ^= a4 == -1; + } + v42 = v45 & (v43 < v91); + if ( !v42 ) + { + if ( v43 != v91 ) + goto LABEL_159; +LABEL_187: + v104 = 1; + goto LABEL_126; + } + if ( !a1 || a2 != -1 ) + { + LOBYTE(v46) = a2; + goto LABEL_99; + } + v47 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) + { + v46 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v46 == -1) - 1; +LABEL_99: + v8 = *(_DWORD *)(v101 + 20); + if ( *(_BYTE *)(v8 + v43) != (_BYTE)v46 ) + goto LABEL_159; + v47 = *(_BYTE **)(a1 + 8); + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v47 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_102; + } +LABEL_101: + *(_DWORD *)(a1 + 8) = v47 + 1; +LABEL_102: + a2 = -1; + ++v43; + continue; + } + break; + } + v8 = *(_DWORD *)(v101 + 20); + if ( *v47 == *(_BYTE *)(v8 + v43) ) + goto LABEL_101; + a2 = -1; +LABEL_159: + if ( !v43 ) + { + v104 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; + v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; + goto LABEL_126; + } +LABEL_107: + v105 = a2 == -1; + v29 = (a1 != 0) & v105; +LABEL_108: + *a6 |= 4u; + if ( v29 ) + goto LABEL_180; +LABEL_109: + v50 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v50 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + v50 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; + } + } + if ( v50 == v105 ) + *a6 |= 2u; + if ( v119 != v121 ) + operator delete(v119); + if ( v116 != v118 ) + operator delete(v116); + return a1; + case 3: + if ( !*(_DWORD *)(v101 + 32) ) + { + v41 = v101; + if ( !*(_DWORD *)(v101 + 40) ) + { +LABEL_81: + v42 = v95; + v8 = !v95; + v104 = !v95; + goto LABEL_126; + } +LABEL_190: + LOBYTE(v41) = a2 == -1; + v67 = v41; + if ( !a1 || a2 != -1 ) + { + v68 = a2 == -1; + goto LABEL_193; + } +LABEL_210: + v68 = 1; + v67 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v73) = v73 == -1; + v67 = v73; + a1 &= (unsigned __int8)v73 - 1; + } +LABEL_193: + v69 = a4 == -1; + v109 = v69 & (a3 != 0); + if ( v109 ) + { + v69 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v84 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v69 = v84 != -1 ? 0 : v109; + a3 &= (v84 == -1) - 1; + } + } + v8 = v67; + if ( (_BYTE)v67 == v69 ) + { +LABEL_195: + if ( !*(_DWORD *)(v101 + 32) || *(_DWORD *)(v101 + 40) ) + goto LABEL_81; + goto LABEL_146; + } + if ( a1 && v68 ) + { + v81 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v81 < *(_DWORD *)(a1 + 12) ) + { + v8 = *(_DWORD *)(v101 + 36); + if ( *(_BYTE *)v8 != *v81 ) + goto LABEL_195; + v93 = *(_DWORD *)(v101 + 40); + goto LABEL_244; + } + v82 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v82 == -1) - 1; + } + else + { + LOBYTE(v82) = a2; + } + v8 = *(_DWORD *)(v101 + 36); + if ( *(_BYTE *)v8 != (_BYTE)v82 ) + goto LABEL_195; + v93 = *(_DWORD *)(v101 + 40); + v81 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v81 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_245; + } +LABEL_244: + *(_DWORD *)(a1 + 8) = v81 + 1; +LABEL_245: + a2 = -1; + v42 = 0; + v104 = 1; + v96 = 1; + goto LABEL_126; + } + v57 = a2 == -1 && a1 != 0; + if ( v57 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v85 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v85 == -1) - 1; + v58 = v85 == -1 && v57; + } + else + { + v58 = 0; + } + } + else + { + v58 = a2 == -1; + } + v8 = a3; + v59 = a4 == -1; + LOBYTE(v8) = v59 & (a3 != 0); + v107 = v8; + if ( (_BYTE)v8 ) + { + v8 = a3; + v59 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v83 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v59 = v83 != -1 ? 0 : v107; + v8 = (v83 == -1) - 1; + a3 &= v8; + } + } + if ( v59 == v58 ) + goto LABEL_144; + if ( a1 && a2 == -1 ) + { + v72 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v72 < *(_DWORD *)(a1 + 12) ) + { + v8 = **(unsigned __int8 **)(v101 + 28); + if ( *v72 != (_BYTE)v8 ) + { + if ( *(_DWORD *)(v101 + 40) ) + goto LABEL_210; + goto LABEL_145; + } + v93 = *(_DWORD *)(v101 + 32); + goto LABEL_237; + } + v80 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v80 == -1) - 1; + } + else + { + LOBYTE(v80) = a2; + } + v8 = *(_DWORD *)(v101 + 28); + if ( *(_BYTE *)v8 != (_BYTE)v80 ) + { +LABEL_144: + v41 = v101; + if ( *(_DWORD *)(v101 + 40) ) + goto LABEL_190; +LABEL_145: + if ( !*(_DWORD *)(v101 + 32) ) + goto LABEL_81; +LABEL_146: + v104 = 1; + v42 = 0; + v96 = 1; + goto LABEL_126; + } + v93 = *(_DWORD *)(v101 + 32); + v72 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_238; + } +LABEL_237: + *(_DWORD *)(a1 + 8) = v72 + 1; +LABEL_238: + a2 = -1; + v42 = 0; + goto LABEL_187; + case 4: + while ( 2 ) + { + v14 = a2 == -1 && a1 != 0; + if ( v14 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v8 = (v65 == -1) - 1; + a1 &= v8; + v15 = v65 == -1 && v14; + } + else + { + v15 = 0; + } + } + else + { + v15 = a2 == -1; + } + LOBYTE(v8) = a4 == -1; + v103 = v8 & (a3 != 0); + if ( v103 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) + { + v48 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + LOBYTE(v49) = v48 != -1; + v8 = v49 - 1; + LOBYTE(v8) = v103 & v8; + a3 &= (v48 == -1) - 1; + if ( v15 == (_BYTE)v8 ) + goto LABEL_105; + } + else if ( v15 == (_BYTE)v8 ) + { + goto LABEL_105; + } + if ( a1 && a2 == -1 ) + { + v52 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ) + { + v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v16 = v66 != -1 ? v66 : -1; + a1 &= (v66 == -1) - 1; + } + else + { + v16 = *v52; + } + } + else + { + v16 = a2; + } + v17 = memchr((const void *)(v101 + 57), (char)v16, 0xAu); + if ( v17 ) + { + v10 = v120; + v11 = v120 + 1; + v112 = v17[(_DWORD)std::money_base::_S_atoms - 56 - v101]; + v12 = v119; + if ( v119 == v121 ) + v8 = 15; + else + v8 = v121[0]; + if ( v11 > v8 ) + { + std::string::_M_mutate((int)&v119, v120, 0, 0, 1u); + v12 = v119; + } + ++v100; + v12[v10] = v112; + v120 = v11; + *((_BYTE *)v119 + v10 + 1) = 0; +LABEL_14: + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + { +LABEL_15: + *(_DWORD *)(a1 + 8) = v13 + 1; +LABEL_16: + a2 = -1; + continue; + } +LABEL_35: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_16; + } + break; + } + v104 = v97 | (*(_BYTE *)(v101 + 17) != v16); + if ( !v104 ) + { + if ( *(int *)(v101 + 44) > 0 ) + { + v55 = v100; + v97 = 1; + v100 = 0; + v89 = v55; + goto LABEL_14; + } + v97 = 0; +LABEL_105: + v104 = 1; +LABEL_106: + if ( !v120 ) + goto LABEL_107; + goto LABEL_125; + } + v18 = *(_BYTE *)(v101 + 16); + if ( !v18 ) + goto LABEL_106; + if ( *(_BYTE *)(v101 + 18) == v16 ) + { + if ( !v97 ) + { + if ( v100 ) + { + v113 = v100; + v19 = v117; + v20 = v116; + v21 = v117 + 1; + if ( v116 == v118 ) + v22 = 15; + else + v22 = v118[0]; + if ( v21 > v22 ) + { + std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); + v20 = v116; + } + v8 = (unsigned __int8)v100; + v100 = 0; + v20[v19] = v113; + v117 = v21; + *((_BYTE *)v116 + v19 + 1) = 0; + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + goto LABEL_15; + goto LABEL_35; + } + v104 = 0; + goto LABEL_106; + } + v18 = v97; + } + v104 = v18; + if ( !v120 ) + goto LABEL_107; +LABEL_125: + v42 = v104 ^ 1; + goto LABEL_126; + default: + v104 = 1; + v42 = 0; + goto LABEL_126; + } + } +} +// 47B087: variable 'v87' is possibly undefined +// 47B113: variable 'v88' is possibly undefined +// 47A940: variable 'v49' is possibly undefined +// 47AAB0: variable 'v54' is possibly undefined +// 47B24D: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 5165A8: using guessed type int std::moneypunct::id; +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (0047B5A0) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::_M_extract( + unsigned int a1, + int a2, + unsigned int a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + unsigned int v8; // edx + int v9; // eax + size_t v10; // esi + size_t v11; // edi + _BYTE *v12; // eax + unsigned int v13; // eax + bool v14; // si + char v15; // si + unsigned __int8 v16; // si + _BYTE *v17; // eax + char v18; // al + size_t v19; // esi + _BYTE *v20; // eax + size_t v21; // edi + unsigned int v22; // edx + char v23; // al + _BYTE *v24; // eax + unsigned int i; // edi + char v26; // si + char v27; // si + int v28; // eax + char v29; // si + _BYTE *v30; // eax + char v31; // si + int v32; // eax + unsigned __int8 *v33; // eax + bool v34; // si + int v35; // edi + int v36; // esi + int v37; // esi + char v38; // al + int v39; // eax + unsigned __int8 *v40; // eax + int v41; // eax + char v42; // al + unsigned int v43; // edi + bool v44; // si + char v45; // si + int v46; // eax + _BYTE *v47; // eax + int v48; // eax + int v49; // edx + char v50; // al + unsigned __int8 *v52; // eax + int v53; // eax + int v54; // edx + char v55; // al + int v56; // eax + bool v57; // si + char v58; // si + char v59; // al + bool v60; // al + size_t v61; // esi + _BYTE *v62; // eax + size_t v63; // edx + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // esi + bool v68; // di + char v69; // al + unsigned int first_not_of; // eax + int v71; // edx + _BYTE *v72; // eax + int v73; // eax + std::locale::_Impl *v74; // eax + std::locale::_Impl *v75; // esi + int v76; // edx + int v77; // eax + int v78; // eax + int v79; // eax + int v80; // eax + _BYTE *v81; // eax + int v82; // eax + int v83; // edx + int v84; // edx + int v85; // eax + int v86; // eax + void (__cdecl *v87)(void *); // [esp+4h] [ebp-A4h] + unsigned int v88; // [esp+8h] [ebp-A0h] + char v89; // [esp+18h] [ebp-90h] + char v90; // [esp+1Ch] [ebp-8Ch] + unsigned int v91; // [esp+1Ch] [ebp-8Ch] + _DWORD *v92; // [esp+20h] [ebp-88h] + unsigned int v93; // [esp+24h] [ebp-84h] + int v94; // [esp+2Ch] [ebp-7Ch] + bool v95; // [esp+31h] [ebp-77h] + char v96; // [esp+32h] [ebp-76h] + char v97; // [esp+33h] [ebp-75h] + _BYTE *Buf; // [esp+34h] [ebp-74h] + int *v99; // [esp+38h] [ebp-70h] + int v100; // [esp+38h] [ebp-70h] + int v101; // [esp+3Ch] [ebp-6Ch] + std::locale::facet *v102; // [esp+40h] [ebp-68h] + char v103; // [esp+40h] [ebp-68h] + char v104; // [esp+40h] [ebp-68h] + char v105; // [esp+40h] [ebp-68h] + char v106; // [esp+40h] [ebp-68h] + char v107; // [esp+40h] [ebp-68h] + char v108; // [esp+40h] [ebp-68h] + char v109; // [esp+40h] [ebp-68h] + char v112; // [esp+4Ch] [ebp-5Ch] + char v113; // [esp+4Ch] [ebp-5Ch] + char v114; // [esp+5Bh] [ebp-4Dh] BYREF + int v115; // [esp+5Ch] [ebp-4Ch] + void *v116; // [esp+60h] [ebp-48h] BYREF + size_t v117; // [esp+64h] [ebp-44h] + int v118[4]; // [esp+68h] [ebp-40h] BYREF + void *v119; // [esp+78h] [ebp-30h] BYREF + size_t v120; // [esp+7Ch] [ebp-2Ch] + int v121[10]; // [esp+80h] [ebp-28h] BYREF + + v92 = std::use_facet>(a5 + 108); + v102 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); + v99 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v102); + v101 = *v99; + if ( !*v99 ) + { + v74 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v87); + *(_DWORD *)v74 = &off_538D1C; + v75 = v74; + *((_DWORD *)v74 + 1) = 0; + *((_DWORD *)v74 + 2) = 0; + *((_DWORD *)v74 + 3) = 0; + *((_WORD *)v74 + 8) = 0; + *((_BYTE *)v74 + 18) = 0; + *((_DWORD *)v74 + 5) = 0; + *((_DWORD *)v74 + 6) = 0; + *((_DWORD *)v74 + 7) = 0; + *((_DWORD *)v74 + 8) = 0; + *((_DWORD *)v74 + 9) = 0; + *((_DWORD *)v74 + 10) = 0; + *((_DWORD *)v74 + 11) = 0; + *((_DWORD *)v74 + 12) = 0; + *((_DWORD *)v74 + 13) = 0; + *((_BYTE *)v74 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v74, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v75, v102, v88); + v101 = *v99; + } + if ( *(_DWORD *)(v101 + 32) ) + v95 = *(_DWORD *)(v101 + 40) != 0; + else + v95 = 0; + v117 = 0; + v116 = v118; + LOBYTE(v118[0]) = 0; + if ( *(_BYTE *)(v101 + 16) ) + std::string::reserve(&v116, 0x20u); + v119 = v121; + v120 = 0; + LOBYTE(v121[0]) = 0; + std::string::reserve(&v119, 0x20u); + v97 = 0; + v94 = 1; + v100 = 0; + v115 = *(_DWORD *)(v101 + 52); + v89 = 0; + v93 = 0; + v96 = 0; + while ( 2 ) + { + v9 = (unsigned __int8)*(&v114 + v94); + switch ( *(&v114 + v94) ) + { + case 0: + v104 = 1; + goto LABEL_37; + case 1: + LOBYTE(v9) = a2 == -1; + v35 = v9; + LOBYTE(v9) = v9 & (a1 != 0); + v36 = v9; + if ( (_BYTE)v9 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v86 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v86 == -1) - 1; + LOBYTE(v86) = v86 != -1; + v37 = (v86 - 1) & v36; + } + else + { + v37 = 0; + } + } + else + { + v37 = v35; + } + v38 = a4 == -1; + v106 = v38 & (a3 != 0); + if ( v106 ) + { + v38 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v38 = v76 != -1 ? 0 : v106; + a3 &= (v76 == -1) - 1; + } + } + v8 = v37; + v104 = 0; + if ( v38 == (_BYTE)v37 ) + goto LABEL_37; + if ( a1 && (_BYTE)v35 ) + { + v40 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v40 < *(_DWORD *)(a1 + 12) ) + { + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * *v40) & 0x20) != 0 ) + goto LABEL_77; + a2 = -1; + goto LABEL_37; + } + v39 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v39 == -1) - 1; + } + else + { + LOBYTE(v39) = a2; + } + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v39) & 0x20) != 0 ) + { + v40 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_78; + } +LABEL_77: + *(_DWORD *)(a1 + 8) = v40 + 1; +LABEL_78: + a2 = -1; + v104 = 1; + goto LABEL_37; + } + v104 = 0; +LABEL_37: + if ( v94 == 4 ) + { + v23 = v104 & (v93 > 1); +LABEL_39: + if ( v23 ) + { + if ( v96 ) + v24 = *(_BYTE **)(v101 + 36); + else + v24 = *(_BYTE **)(v101 + 28); + Buf = v24; + for ( i = 1; ; ++i ) + { + v105 = a2 == -1; + v26 = v105 & (a1 != 0); + if ( v26 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v78 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v78 == -1) - 1; + v27 = v78 != -1 ? 0 : v26; + } + else + { + v27 = 0; + } + } + else + { + v27 = a2 == -1; + } + if ( a3 && a4 == -1 ) + { + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v56 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + if ( v56 == -1 ) + { + a3 = 0; + v27 ^= 1u; + } + } + } + else + { + v27 ^= a4 == -1; + } + if ( i >= v93 || !v27 ) + { + if ( i != v93 ) + { +LABEL_182: + v29 = (a1 != 0) & v105; + goto LABEL_108; + } + if ( v120 > 1 ) + goto LABEL_198; + goto LABEL_165; + } + LOBYTE(v28) = a2; + v29 = v105 & (a1 != 0); + if ( v29 ) + { + v30 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) + { + if ( Buf[i] != *v30 ) + { + v105 &= a1 != 0; + goto LABEL_108; + } +LABEL_53: + *(_DWORD *)(a1 + 8) = v30 + 1; + goto LABEL_54; + } + v28 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v28 == -1) - 1; + } + if ( Buf[i] != (_BYTE)v28 ) + goto LABEL_182; + v30 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) + goto LABEL_53; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); +LABEL_54: + a2 = -1; + } + } + if ( !v104 ) + goto LABEL_107; + if ( v120 > 1 ) + { +LABEL_198: + first_not_of = std::string::find_first_not_of((int *)&v119, 48, 0); + if ( first_not_of ) + { + v71 = v120; + if ( first_not_of != -1 ) + goto LABEL_200; + first_not_of = v120 - 1; + if ( !v120 ) + { + *(_BYTE *)v119 = 0; + goto LABEL_165; + } + if ( v120 != 1 ) + { +LABEL_200: + if ( v120 > first_not_of ) + v71 = first_not_of; + std::string::_M_erase((int *)&v119, 0, v71); + } + } + } +LABEL_165: + if ( v96 && *(_BYTE *)v119 != 48 ) + std::string::_M_replace_aux(&v119, 0, 0, 1u, 45); + v61 = v117; + if ( v117 ) + { + v108 = v100; + if ( v97 ) + v108 = v89; + v62 = v116; + if ( v116 == v118 ) + v63 = 15; + else + v63 = v118[0]; + if ( v117 + 1 > v63 ) + { + std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); + v62 = v116; + } + v62[v61] = v108; + v117 = v61 + 1; + *((_BYTE *)v116 + v61 + 1) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v101 + 8), *(_DWORD *)(v101 + 12), (int)&v116) ) + *a6 |= 4u; + } + v105 = a2 == -1; + v29 = (a1 != 0) & v105; + if ( v97 && *(_DWORD *)(v101 + 44) != v100 ) + goto LABEL_108; + std::string::swap(a7, &v119); + if ( !v29 ) + goto LABEL_109; +LABEL_180: + v105 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v105 = v64 != -1 ? 0 : v29; + a1 &= (v64 == -1) - 1; + } + goto LABEL_109; + } + while ( 1 ) + { + v34 = a2 == -1 && a1 != 0; + if ( v34 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v77 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v8 = (v77 == -1) - 1; + a1 &= v8; + v31 = v77 == -1 && v34; + } + else + { + v31 = 0; + } + } + else + { + v31 = a2 == -1; + } + LOBYTE(v8) = a4 == -1; + v90 = v8 & (a3 != 0); + if ( v90 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) + { + v53 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + LOBYTE(v54) = v53 != -1; + v8 = v54 - 1; + LOBYTE(v8) = v90 & v8; + a3 &= (v53 == -1) - 1; + if ( (_BYTE)v8 == v31 ) + goto LABEL_125; + } + else if ( (_BYTE)v8 == v31 ) + { + goto LABEL_125; + } + if ( a1 && a2 == -1 ) + { + v33 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + { + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * *v33) & 0x20) == 0 ) + { + a2 = -1; + v42 = v104 ^ 1; + goto LABEL_126; + } +LABEL_63: + *(_DWORD *)(a1 + 8) = v33 + 1; + goto LABEL_64; + } + v32 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v32 == -1) - 1; + } + else + { + LOBYTE(v32) = a2; + } + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v32) & 0x20) == 0 ) + goto LABEL_125; + v33 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + goto LABEL_63; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); +LABEL_64: + a2 = -1; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_89; + v8 = v94 - 1; + v42 = v94 == 1 || v93 > 1; + if ( v42 ) + goto LABEL_89; + if ( v94 != 2 ) + { + v104 = 1; + if ( v94 == 3 ) + { + if ( HIBYTE(v115) == 4 || HIBYTE(v115) == 3 && v95 ) + goto LABEL_89; + } + else + { +LABEL_126: + if ( v94 > 3 || v42 ) + { + v23 = v104 & (v93 > 1); + goto LABEL_39; + } + } +LABEL_128: + ++v94; + continue; + } + if ( !v95 && (_BYTE)v115 != 3 && BYTE2(v115) != 1 ) + goto LABEL_128; +LABEL_89: + v43 = 0; + v91 = *(_DWORD *)(v101 + 24); + while ( 2 ) + { + v44 = a2 == -1 && a1 != 0; + if ( v44 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v79 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v8); + a1 &= (v79 == -1) - 1; + v45 = v79 == -1 && v44; + } + else + { + v45 = 0; + } + } + else + { + v45 = a2 == -1; + } + v8 = a3; + if ( a3 && a4 == -1 ) + { + v8 = *(_DWORD *)(a3 + 12); + if ( *(_DWORD *)(a3 + 8) >= v8 ) + { + v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; + v45 ^= v60; + a3 &= v60 - 1; + } + } + else + { + v45 ^= a4 == -1; + } + v42 = v45 & (v43 < v91); + if ( !v42 ) + { + if ( v43 != v91 ) + goto LABEL_159; +LABEL_187: + v104 = 1; + goto LABEL_126; + } + if ( !a1 || a2 != -1 ) + { + LOBYTE(v46) = a2; + goto LABEL_99; + } + v47 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) + { + v46 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v46 == -1) - 1; +LABEL_99: + v8 = *(_DWORD *)(v101 + 20); + if ( *(_BYTE *)(v8 + v43) != (_BYTE)v46 ) + goto LABEL_159; + v47 = *(_BYTE **)(a1 + 8); + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v47 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_102; + } +LABEL_101: + *(_DWORD *)(a1 + 8) = v47 + 1; +LABEL_102: + a2 = -1; + ++v43; + continue; + } + break; + } + v8 = *(_DWORD *)(v101 + 20); + if ( *v47 == *(_BYTE *)(v8 + v43) ) + goto LABEL_101; + a2 = -1; +LABEL_159: + if ( !v43 ) + { + v104 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; + v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; + goto LABEL_126; + } +LABEL_107: + v105 = a2 == -1; + v29 = (a1 != 0) & v105; +LABEL_108: + *a6 |= 4u; + if ( v29 ) + goto LABEL_180; +LABEL_109: + v50 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v50 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + v50 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; + } + } + if ( v50 == v105 ) + *a6 |= 2u; + if ( v119 != v121 ) + operator delete(v119); + if ( v116 != v118 ) + operator delete(v116); + return a1; + case 3: + if ( !*(_DWORD *)(v101 + 32) ) + { + v41 = v101; + if ( !*(_DWORD *)(v101 + 40) ) + { +LABEL_81: + v42 = v95; + v8 = !v95; + v104 = !v95; + goto LABEL_126; + } +LABEL_190: + LOBYTE(v41) = a2 == -1; + v67 = v41; + if ( !a1 || a2 != -1 ) + { + v68 = a2 == -1; + goto LABEL_193; + } +LABEL_210: + v68 = 1; + v67 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v73) = v73 == -1; + v67 = v73; + a1 &= (unsigned __int8)v73 - 1; + } +LABEL_193: + v69 = a4 == -1; + v109 = v69 & (a3 != 0); + if ( v109 ) + { + v69 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v84 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v69 = v84 != -1 ? 0 : v109; + a3 &= (v84 == -1) - 1; + } + } + v8 = v67; + if ( (_BYTE)v67 == v69 ) + { +LABEL_195: + if ( !*(_DWORD *)(v101 + 32) || *(_DWORD *)(v101 + 40) ) + goto LABEL_81; + goto LABEL_146; + } + if ( a1 && v68 ) + { + v81 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v81 < *(_DWORD *)(a1 + 12) ) + { + v8 = *(_DWORD *)(v101 + 36); + if ( *(_BYTE *)v8 != *v81 ) + goto LABEL_195; + v93 = *(_DWORD *)(v101 + 40); + goto LABEL_244; + } + v82 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v82 == -1) - 1; + } + else + { + LOBYTE(v82) = a2; + } + v8 = *(_DWORD *)(v101 + 36); + if ( *(_BYTE *)v8 != (_BYTE)v82 ) + goto LABEL_195; + v93 = *(_DWORD *)(v101 + 40); + v81 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v81 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_245; + } +LABEL_244: + *(_DWORD *)(a1 + 8) = v81 + 1; +LABEL_245: + a2 = -1; + v42 = 0; + v104 = 1; + v96 = 1; + goto LABEL_126; + } + v57 = a2 == -1 && a1 != 0; + if ( v57 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v85 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v85 == -1) - 1; + v58 = v85 == -1 && v57; + } + else + { + v58 = 0; + } + } + else + { + v58 = a2 == -1; + } + v8 = a3; + v59 = a4 == -1; + LOBYTE(v8) = v59 & (a3 != 0); + v107 = v8; + if ( (_BYTE)v8 ) + { + v8 = a3; + v59 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v83 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v59 = v83 != -1 ? 0 : v107; + v8 = (v83 == -1) - 1; + a3 &= v8; + } + } + if ( v59 == v58 ) + goto LABEL_144; + if ( a1 && a2 == -1 ) + { + v72 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v72 < *(_DWORD *)(a1 + 12) ) + { + v8 = **(unsigned __int8 **)(v101 + 28); + if ( *v72 != (_BYTE)v8 ) + { + if ( *(_DWORD *)(v101 + 40) ) + goto LABEL_210; + goto LABEL_145; + } + v93 = *(_DWORD *)(v101 + 32); + goto LABEL_237; + } + v80 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v80 == -1) - 1; + } + else + { + LOBYTE(v80) = a2; + } + v8 = *(_DWORD *)(v101 + 28); + if ( *(_BYTE *)v8 != (_BYTE)v80 ) + { +LABEL_144: + v41 = v101; + if ( *(_DWORD *)(v101 + 40) ) + goto LABEL_190; +LABEL_145: + if ( !*(_DWORD *)(v101 + 32) ) + goto LABEL_81; +LABEL_146: + v104 = 1; + v42 = 0; + v96 = 1; + goto LABEL_126; + } + v93 = *(_DWORD *)(v101 + 32); + v72 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_238; + } +LABEL_237: + *(_DWORD *)(a1 + 8) = v72 + 1; +LABEL_238: + a2 = -1; + v42 = 0; + goto LABEL_187; + case 4: + while ( 2 ) + { + v14 = a2 == -1 && a1 != 0; + if ( v14 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v8 = (v65 == -1) - 1; + a1 &= v8; + v15 = v65 == -1 && v14; + } + else + { + v15 = 0; + } + } + else + { + v15 = a2 == -1; + } + LOBYTE(v8) = a4 == -1; + v103 = v8 & (a3 != 0); + if ( v103 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) + { + v48 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + LOBYTE(v49) = v48 != -1; + v8 = v49 - 1; + LOBYTE(v8) = v103 & v8; + a3 &= (v48 == -1) - 1; + if ( v15 == (_BYTE)v8 ) + goto LABEL_105; + } + else if ( v15 == (_BYTE)v8 ) + { + goto LABEL_105; + } + if ( a1 && a2 == -1 ) + { + v52 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ) + { + v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v16 = v66 != -1 ? v66 : -1; + a1 &= (v66 == -1) - 1; + } + else + { + v16 = *v52; + } + } + else + { + v16 = a2; + } + v17 = memchr((const void *)(v101 + 57), (char)v16, 0xAu); + if ( v17 ) + { + v10 = v120; + v11 = v120 + 1; + v112 = v17[(_DWORD)std::money_base::_S_atoms - 56 - v101]; + v12 = v119; + if ( v119 == v121 ) + v8 = 15; + else + v8 = v121[0]; + if ( v11 > v8 ) + { + std::string::_M_mutate((int)&v119, v120, 0, 0, 1u); + v12 = v119; + } + ++v100; + v12[v10] = v112; + v120 = v11; + *((_BYTE *)v119 + v10 + 1) = 0; +LABEL_14: + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + { +LABEL_15: + *(_DWORD *)(a1 + 8) = v13 + 1; +LABEL_16: + a2 = -1; + continue; + } +LABEL_35: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_16; + } + break; + } + v104 = v97 | (*(_BYTE *)(v101 + 17) != v16); + if ( !v104 ) + { + if ( *(int *)(v101 + 44) > 0 ) + { + v55 = v100; + v97 = 1; + v100 = 0; + v89 = v55; + goto LABEL_14; + } + v97 = 0; +LABEL_105: + v104 = 1; +LABEL_106: + if ( !v120 ) + goto LABEL_107; + goto LABEL_125; + } + v18 = *(_BYTE *)(v101 + 16); + if ( !v18 ) + goto LABEL_106; + if ( *(_BYTE *)(v101 + 18) == v16 ) + { + if ( !v97 ) + { + if ( v100 ) + { + v113 = v100; + v19 = v117; + v20 = v116; + v21 = v117 + 1; + if ( v116 == v118 ) + v22 = 15; + else + v22 = v118[0]; + if ( v21 > v22 ) + { + std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); + v20 = v116; + } + v8 = (unsigned __int8)v100; + v100 = 0; + v20[v19] = v113; + v117 = v21; + *((_BYTE *)v116 + v19 + 1) = 0; + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + goto LABEL_15; + goto LABEL_35; + } + v104 = 0; + goto LABEL_106; + } + v18 = v97; + } + v104 = v18; + if ( !v120 ) + goto LABEL_107; +LABEL_125: + v42 = v104 ^ 1; + goto LABEL_126; + default: + v104 = 1; + v42 = 0; + goto LABEL_126; + } + } +} +// 47C2B7: variable 'v87' is possibly undefined +// 47C343: variable 'v88' is possibly undefined +// 47BB70: variable 'v49' is possibly undefined +// 47BCE0: variable 'v54' is possibly undefined +// 47C47D: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 5165AC: using guessed type int std::moneypunct::id; +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (0047C7D0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (0047C7E0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (0047C7F0) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::do_get( + unsigned int a1, + int a2, + unsigned int a3, + int a4, + char a5, + int a6, + _DWORD *a7, + int *a8) +{ + unsigned int v8; // eax + unsigned int v9; // esi + char *v10; // ebx + char v12; // al + void (__thiscall *v13)(_BYTE *, char *, char *, void *); // eax + void *v14; // [esp+20h] [ebp-48h] + char *v15; // [esp+24h] [ebp-44h] + _BYTE *v16; // [esp+28h] [ebp-40h] + _DWORD *Size; // [esp+2Ch] [ebp-3Ch] + void *Src; // [esp+38h] [ebp-30h] BYREF + _DWORD *v19; // [esp+3Ch] [ebp-2Ch] + char v20[40]; // [esp+40h] [ebp-28h] BYREF + + v20[0] = 0; + v16 = std::use_facet>(a6 + 108); + Src = v20; + v19 = 0; + if ( a5 ) + v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &Src); + else + v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &Src); + v9 = v8; + Size = v19; + if ( !v19 ) + goto LABEL_4; + std::string::resize(a8, v19, 0); + v10 = (char *)Src; + v15 = (char *)Size + (_DWORD)Src; + v12 = v16[28]; + v14 = (void *)*a8; + if ( v12 != 1 ) + { + if ( !v12 ) + std::ctype::_M_widen_init((int)v16); + v13 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v16 + 28); + if ( (char *)v13 == (char *)std::ctype::do_widen ) + { + if ( v15 != v10 ) + { + memcpy(v14, v10, (size_t)Size); + v10 = (char *)Src; + goto LABEL_5; + } + } + else + { + v13(v16, v10, v15, v14); + } +LABEL_4: + v10 = (char *)Src; + goto LABEL_5; + } + if ( v15 != Src ) + { + memcpy((void *)*a8, Src, (size_t)Size); + v10 = (char *)Src; + } +LABEL_5: + if ( v10 != v20 ) + operator delete(v10); + return v9; +} + +//----- (0047C990) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::do_get( + std::locale::facet *a1, + int a2, + unsigned int a3, + int a4, + char a5, + int a6, + _DWORD *a7, + long double *a8) +{ + unsigned int v8; // eax + unsigned int v9; // esi + char *String[2]; // [esp+28h] [ebp-30h] BYREF + char v12[40]; // [esp+30h] [ebp-28h] BYREF + + String[0] = v12; + String[1] = 0; + v12[0] = 0; + if ( a5 ) + v8 = std::money_get>::_M_extract( + (unsigned int)a1, + a2, + a3, + a4, + a6, + a7, + String); + else + v8 = std::money_get>::_M_extract( + (unsigned int)a1, + a2, + a3, + a4, + a6, + a7, + String); + v9 = v8; + std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String[0], a8, a7); + if ( String[0] != v12 ) + operator delete(String[0]); + return v9; +} + +//----- (0047CA60) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::_M_extract( + unsigned int a1, + __int16 a2, + unsigned int a3, + __int16 a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + int v8; // esi + unsigned int v9; // edx + size_t v10; // esi + size_t v11; // edi + _BYTE *v12; // eax + unsigned int v13; // eax + bool v14; // si + char v15; // si + wchar_t v16; // si + wchar_t *v17; // eax + char v18; // al + size_t v19; // esi + _BYTE *v20; // eax + size_t v21; // edi + char v22; // al + int v23; // eax + unsigned int i; // esi + char v25; // dl + __int16 v26; // ax + unsigned int v27; // eax + char v28; // di + __int16 *v29; // eax + __int16 v30; // ax + char v31; // si + unsigned __int16 v32; // ax + unsigned int v33; // eax + bool v34; // si + _WORD *v35; // eax + __int16 v36; // ax + bool v37; // di + char v38; // di + char v39; // al + unsigned __int16 v40; // ax + unsigned int v41; // eax + char v42; // al + unsigned int v43; // edi + bool v44; // si + bool v45; // al + unsigned int v46; // eax + bool v47; // si + __int16 *v48; // eax + __int16 v49; // dx + __int16 *v50; // eax + __int16 v51; // ax + int v52; // eax + char v53; // si + int v54; // edx + __int16 *v56; // eax + __int16 v57; // ax + wchar_t *v58; // eax + unsigned int v59; // edx + __int16 *v60; // eax + __int16 v61; // ax + _WORD *v62; // eax + char v63; // al + bool v64; // si + char v65; // si + char v66; // al + __int16 *v67; // eax + __int16 v68; // ax + size_t v69; // esi + _BYTE *v70; // eax + size_t v71; // edx + __int16 *v72; // eax + __int16 v73; // dx + __int16 *v74; // eax + __int16 *v75; // eax + __int16 v76; // dx + char v77; // al + __int16 *v78; // eax + __int16 v79; // ax + __int16 *v80; // eax + __int16 v81; // ax + bool v82; // si + char v83; // si + char v84; // al + unsigned int first_not_of; // eax + __int16 *v86; // eax + __int16 v87; // dx + __int16 *v88; // eax + __int16 v89; // ax + _DWORD *v90; // eax + std::locale::_Impl *v91; // edi + __int16 *v92; // eax + __int16 v93; // dx + __int16 *v94; // eax + __int16 v95; // dx + _WORD *v96; // eax + __int16 v97; // ax + unsigned int v98; // eax + __int16 *v99; // eax + __int16 v100; // ax + unsigned int v101; // eax + _WORD *v102; // eax + __int16 *v103; // eax + __int16 v104; // dx + __int16 *v105; // eax + __int16 v106; // dx + void (__cdecl *v107)(void *); // [esp+4h] [ebp-A4h] + unsigned int v108; // [esp+8h] [ebp-A0h] + char v109; // [esp+18h] [ebp-90h] + unsigned int v110; // [esp+20h] [ebp-88h] + void *v111; // [esp+24h] [ebp-84h] + unsigned int v112; // [esp+28h] [ebp-80h] + int v113; // [esp+30h] [ebp-78h] + int v114; // [esp+30h] [ebp-78h] + bool v115; // [esp+34h] [ebp-74h] + char v116; // [esp+35h] [ebp-73h] + char v117; // [esp+36h] [ebp-72h] + bool v118; // [esp+36h] [ebp-72h] + char v119; // [esp+37h] [ebp-71h] + char S; // [esp+38h] [ebp-70h] + int *v121; // [esp+3Ch] [ebp-6Ch] + char v122; // [esp+3Ch] [ebp-6Ch] + char v123; // [esp+3Ch] [ebp-6Ch] + char v124; // [esp+3Ch] [ebp-6Ch] + char v125; // [esp+3Ch] [ebp-6Ch] + char v126; // [esp+3Ch] [ebp-6Ch] + char v127; // [esp+3Ch] [ebp-6Ch] + char v128; // [esp+3Ch] [ebp-6Ch] + int v129; // [esp+40h] [ebp-68h] + int v130; // [esp+44h] [ebp-64h] + char v132; // [esp+4Ch] [ebp-5Ch] + char v134; // [esp+4Eh] [ebp-5Ah] + char v135; // [esp+4Eh] [ebp-5Ah] + char v136; // [esp+5Bh] [ebp-4Dh] BYREF + int v137; // [esp+5Ch] [ebp-4Ch] + void *v138; // [esp+60h] [ebp-48h] BYREF + size_t v139; // [esp+64h] [ebp-44h] + int v140[4]; // [esp+68h] [ebp-40h] BYREF + void *v141; // [esp+78h] [ebp-30h] BYREF + size_t v142; // [esp+7Ch] [ebp-2Ch] + int v143[10]; // [esp+80h] [ebp-28h] BYREF + + v111 = std::use_facet>(a5 + 108); + v8 = std::locale::id::_M_id(&std::moneypunct::id); + v121 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v8); + v130 = *v121; + if ( !*v121 ) + { + v90 = operator new((struct type_info *)0x54, v107); + v90[1] = 0; + v91 = (std::locale::_Impl *)v90; + *v90 = &off_538D2C; + v90[2] = 0; + v90[3] = 0; + *((_BYTE *)v90 + 16) = 0; + *(_DWORD *)((char *)v90 + 18) = 0; + v90[6] = 0; + v90[7] = 0; + v90[8] = 0; + v90[9] = 0; + v90[10] = 0; + v90[11] = 0; + v90[12] = 0; + v90[13] = 0; + v90[14] = 0; + *((_BYTE *)v90 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v91, (const std::locale::facet *)v8, v108); + v130 = *v121; + } + if ( *(_DWORD *)(v130 + 36) ) + v115 = *(_DWORD *)(v130 + 44) != 0; + else + v115 = 0; + v139 = 0; + v138 = v140; + LOBYTE(v140[0]) = 0; + if ( *(_BYTE *)(v130 + 16) ) + std::string::reserve(&v138, 0x20u); + v141 = v143; + v142 = 0; + LOBYTE(v143[0]) = 0; + std::string::reserve(&v141, 0x20u); + v119 = 0; + v113 = 1; + v116 = 0; + v137 = *(_DWORD *)(v130 + 56); + v129 = 0; + v109 = 0; + v112 = 0; + while ( 2 ) + { + switch ( *(&v136 + v113) ) + { + case 0: + v123 = 1; + goto LABEL_37; + case 1: + v37 = a2 == -1 && a1 != 0; + if ( v37 ) + { + v94 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v94 >= *(_DWORD *)(a1 + 12) ) + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v95 = *v94; + a1 &= (v95 == -1) - 1; + v38 = v95 == -1 && v37; + } + else + { + v38 = a2 == -1; + } + v9 = a3; + v39 = a4 == -1; + v126 = v39 & (a3 != 0); + if ( v126 ) + { + v92 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v92 >= *(_DWORD *)(a3 + 12) ) + v93 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v93 = *v92; + v39 = v93 != -1 ? 0 : v126; + v9 = (v93 == -1) - 1; + a3 &= v9; + } + v123 = 0; + if ( v39 != v38 ) + { + if ( a1 && a2 == -1 ) + { + v102 = *(_WORD **)(a1 + 8); + v40 = (unsigned int)v102 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v102; + a1 &= (v40 == 0xFFFF) - 1; + } + else + { + v40 = a2; + } + v123 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v40); + if ( v123 ) + { + v41 = *(_DWORD *)(a1 + 8); + if ( v41 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v41 + 2; + a2 = -1; + } + } +LABEL_37: + if ( v113 == 4 ) + { + v22 = v123 & (v112 > 1); + goto LABEL_39; + } + while ( 1 ) + { + v34 = a2 == -1 && a1 != 0; + if ( v34 ) + { + v35 = *(_WORD **)(a1 + 8); + v36 = (unsigned int)v35 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v35; + v9 = (v36 == -1) - 1; + a1 &= v9; + v31 = v36 == -1 && v34; + } + else + { + v31 = a2 == -1; + } + LOBYTE(v9) = a4 == -1; + v117 = v9 & (a3 != 0); + if ( v117 ) + { + v59 = a3; + v60 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v60 >= *(_DWORD *)(a3 + 12) ) + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v61 = *v60; + LOBYTE(v59) = v61 != -1; + v9 = v59 - 1; + LOBYTE(v9) = v117 & v9; + a3 &= (v61 == -1) - 1; + if ( v31 == (_BYTE)v9 ) + goto LABEL_133; + } + else if ( v31 == (_BYTE)v9 ) + { + goto LABEL_133; + } + if ( a1 && a2 == -1 ) + { + v62 = *(_WORD **)(a1 + 8); + v32 = (unsigned int)v62 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v62; + a1 &= (v32 == 0xFFFF) - 1; + } + else + { + v32 = a2; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v32) ) + goto LABEL_133; + v33 = *(_DWORD *)(a1 + 8); + if ( v33 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v33 + 2; + a2 = -1; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_93; + v9 = v113 - 1; + v42 = v113 == 1 || v112 > 1; + if ( v42 ) + goto LABEL_93; + if ( v113 == 2 ) + { + if ( v115 || (_BYTE)v137 == 3 || BYTE2(v137) == 1 ) + { +LABEL_93: + v43 = 0; + v110 = *(_DWORD *)(v130 + 28); + while ( 1 ) + { + v47 = a2 == -1 && a1 != 0; + if ( v47 ) + { + v48 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ) + v49 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v9); + else + v49 = *v48; + a1 &= (v49 == -1) - 1; + v44 = v49 == -1 && v47; + } + else + { + v44 = a2 == -1; + } + v9 = a3; + v45 = a4 == -1; + v118 = v45 && a3 != 0; + if ( v118 ) + { + v75 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v75 >= *(_DWORD *)(a3 + 12) ) + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v76 = *v75; + v77 = v44 ^ (v76 == -1 && v118); + v9 = (v76 == -1) - 1; + a3 &= v9; + LOBYTE(v9) = v43 < v110; + v42 = (v43 < v110) & v77; + if ( !v42 ) + { +LABEL_181: + if ( v43 == v110 ) + goto LABEL_182; +LABEL_186: + if ( !v43 ) + { + v123 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; + v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; + goto LABEL_134; + } +LABEL_112: + v28 = a2 == -1; + goto LABEL_113; + } + } + else + { + LOBYTE(v9) = v43 < v110; + v42 = (v43 < v110) & (v44 ^ v45); + if ( !v42 ) + goto LABEL_181; + } + if ( a1 && a2 == -1 ) + { + v78 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v78 >= *(_DWORD *)(a1 + 12) ) + v79 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v79 = *v78; + a1 &= (v79 == -1) - 1; + v9 = *(_DWORD *)(v130 + 24); + if ( *(_WORD *)(v9 + 2 * v43) != v79 ) + goto LABEL_186; + } + else + { + v9 = *(_DWORD *)(v130 + 24); + if ( *(_WORD *)(v9 + 2 * v43) != a2 ) + goto LABEL_186; + } + v46 = *(_DWORD *)(a1 + 8); + if ( v46 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v46 + 2; + ++v43; + a2 = -1; + } + } +LABEL_136: + ++v113; + continue; + } + v123 = 1; + if ( v113 == 3 ) + { + if ( HIBYTE(v137) == 4 || HIBYTE(v137) == 3 && v115 ) + goto LABEL_93; + goto LABEL_136; + } +LABEL_134: + if ( v113 <= 3 && !v42 ) + goto LABEL_136; + v22 = v123 & (v112 > 1); +LABEL_39: + if ( v22 ) + { + if ( v116 ) + v23 = *(_DWORD *)(v130 + 40); + else + v23 = *(_DWORD *)(v130 + 32); + v114 = v23; + for ( i = 1; ; ++i ) + { + v28 = a2 == -1; + v125 = v28 & (a1 != 0); + if ( v125 ) + { + v29 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v29 >= *(_DWORD *)(a1 + 12) ) + v30 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v30 = *v29; + a1 &= (v30 == -1) - 1; + v124 = v30 != -1 ? 0 : v125; + } + else + { + v124 = a2 == -1; + } + v25 = a4 == -1; + S = v25 & (a3 != 0); + if ( S ) + { + v67 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v67 >= *(_DWORD *)(a3 + 12) ) + v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v68 = *v67; + v25 = v68 != -1 ? 0 : S; + a3 &= (v68 == -1) - 1; + if ( i >= v112 ) + { +LABEL_155: + if ( i == v112 ) + { + if ( v142 <= 1 ) + goto LABEL_157; + goto LABEL_204; + } + goto LABEL_113; + } + } + else if ( i >= v112 ) + { + goto LABEL_155; + } + if ( v25 == v124 ) + goto LABEL_155; + if ( a1 && a2 == -1 ) + { + v74 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v74 >= *(_DWORD *)(a1 + 12) ) + v26 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v26 = *v74; + a1 &= (v26 == -1) - 1; + } + else + { + v26 = a2; + } + if ( *(_WORD *)(v114 + 2 * i) != v26 ) + goto LABEL_113; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v27 + 2; + a2 = -1; + } + } + if ( !v123 ) + goto LABEL_112; + if ( v142 <= 1 ) + goto LABEL_157; +LABEL_204: + first_not_of = std::string::find_first_not_of((int *)&v141, 48, 0); + if ( first_not_of ) + { + if ( first_not_of != -1 ) + goto LABEL_206; + first_not_of = v142 - 1; + if ( !v142 ) + { + *(_BYTE *)v141 = 0; + goto LABEL_157; + } + if ( v142 != 1 ) + { +LABEL_206: + if ( first_not_of > v142 ) + first_not_of = v142; + std::string::_M_erase((int *)&v141, 0, first_not_of); + } + } +LABEL_157: + if ( v116 && *(_BYTE *)v141 != 48 ) + std::string::_M_replace_aux(&v141, 0, 0, 1u, 45); + v69 = v139; + if ( v139 ) + { + v132 = v129; + if ( v119 ) + v132 = v109; + v70 = v138; + if ( v138 == v140 ) + v71 = 15; + else + v71 = v140[0]; + if ( v139 + 1 > v71 ) + { + std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); + v70 = v138; + } + v70[v69] = v132; + v139 = v69 + 1; + *((_BYTE *)v138 + v69 + 1) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v130 + 8), *(_DWORD *)(v130 + 12), (int)&v138) ) + *a6 |= 4u; + } + v28 = a2 == -1; + if ( v119 && *(_DWORD *)(v130 + 48) != v129 ) + { +LABEL_113: + v52 = (int)a6; + *a6 |= 4u; + v53 = v28 & (a1 != 0); + if ( v53 ) + goto LABEL_172; + } + else + { + v52 = (int)std::string::swap(a7, &v141); + v53 = v28 & (a1 != 0); + if ( v53 ) + { +LABEL_172: + v72 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v73 = *v72; + v28 = v73 != -1 ? 0 : v53; + v52 = (v73 == -1) - 1; + a1 &= v52; + } + } + LOBYTE(v52) = a4 == -1; + v54 = v52; + if ( a3 && a4 == -1 ) + { + v80 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v80 >= *(_DWORD *)(a3 + 12) ) + v81 = (*(int (__fastcall **)(unsigned int, int))(*(_DWORD *)a3 + 36))(a3, v54); + else + v81 = *v80; + LOBYTE(v54) = v81 == -1; + } + if ( v28 == (_BYTE)v54 ) + *a6 |= 2u; + if ( v141 != v143 ) + operator delete(v141); + if ( v138 != v140 ) + operator delete(v138); + return a1; + case 3: + if ( *(_DWORD *)(v130 + 36) ) + { + v64 = a2 == -1 && a1 != 0; + if ( v64 ) + { + v86 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v86 >= *(_DWORD *)(a1 + 12) ) + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v87 = *v86; + a1 &= (v87 == -1) - 1; + v65 = v87 == -1 && v64; + } + else + { + v65 = a2 == -1; + } + v66 = a4 == -1; + v127 = v66 & (a3 != 0); + if ( v127 ) + { + v103 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v103 >= *(_DWORD *)(a3 + 12) ) + v104 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v104 = *v103; + v66 = v104 != -1 ? 0 : v127; + a3 &= (v104 == -1) - 1; + } + if ( v66 != v65 ) + { + if ( a1 && a2 == -1 ) + { + v96 = *(_WORD **)(a1 + 8); + v97 = (unsigned int)v96 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v96; + a1 &= (v97 == -1) - 1; + } + else + { + v97 = a2; + } + v9 = *(_DWORD *)(v130 + 32); + if ( *(_WORD *)v9 == v97 ) + { + v112 = *(_DWORD *)(v130 + 36); + v98 = *(_DWORD *)(a1 + 8); + if ( v98 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v98 + 2; + v42 = 0; + a2 = -1; +LABEL_182: + v123 = 1; + goto LABEL_134; + } + } + if ( !*(_DWORD *)(v130 + 44) ) + { + v9 = *(_DWORD *)(v130 + 36); + if ( !v9 ) + goto LABEL_85; +LABEL_151: + v123 = 1; + v42 = 0; + v116 = 1; + goto LABEL_134; + } + } + else if ( !*(_DWORD *)(v130 + 44) ) + { + goto LABEL_85; + } + v82 = a2 == -1 && a1 != 0; + if ( v82 ) + { + v88 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v88 >= *(_DWORD *)(a1 + 12) ) + v89 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v89 = *v88; + a1 &= (v89 == -1) - 1; + v83 = v89 == -1 && v82; + } + else + { + v83 = a2 == -1; + } + v9 = a3; + v84 = a4 == -1; + LOBYTE(v9) = v84 & (a3 != 0); + v128 = v9; + if ( (_BYTE)v9 ) + { + v105 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v105 >= *(_DWORD *)(a3 + 12) ) + v106 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v106 = *v105; + v84 = v106 != -1 ? 0 : v128; + v9 = (v106 == -1) - 1; + a3 &= v9; + } + if ( v83 == v84 + || (!a1 || a2 != -1 + ? (v100 = a2) + : ((v99 = *(__int16 **)(a1 + 8), (unsigned int)v99 >= *(_DWORD *)(a1 + 12)) + ? (v100 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1)) + : (v100 = *v99), + a1 &= (v100 == -1) - 1), + v9 = *(_DWORD *)(v130 + 40), + *(_WORD *)v9 != v100) ) + { + if ( !*(_DWORD *)(v130 + 36) || *(_DWORD *)(v130 + 44) ) + { +LABEL_85: + v42 = v115; + v123 = !v115; + goto LABEL_134; + } + goto LABEL_151; + } + v112 = *(_DWORD *)(v130 + 44); + v101 = *(_DWORD *)(a1 + 8); + if ( v101 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v101 + 2; + v9 = -1; + v123 = 1; + v42 = 0; + a2 = -1; + v116 = 1; + goto LABEL_134; + case 4: + while ( 2 ) + { + v14 = a2 == -1 && a1 != 0; + if ( v14 ) + { + v56 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ) + v57 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v57 = *v56; + v9 = (v57 == -1) - 1; + a1 &= v9; + v15 = v57 == -1 && v14; + } + else + { + v15 = a2 == -1; + } + LOBYTE(v9) = a4 == -1; + v122 = v9 & (a3 != 0); + if ( v122 ) + { + v50 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(a3 + 12) ) + v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v51 = *v50; + LOBYTE(v9) = v51 != -1; + --v9; + LOBYTE(v9) = v122 & v9; + a3 &= (v51 == -1) - 1; + if ( v15 == (_BYTE)v9 ) + goto LABEL_110; + } + else if ( v15 == (_BYTE)v9 ) + { + goto LABEL_110; + } + if ( a1 && a2 == -1 ) + { + v58 = *(wchar_t **)(a1 + 8); + if ( (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ) + v16 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v16 = *v58; + a1 &= (v16 == 0xFFFF) - 1; + } + else + { + v16 = a2; + } + v17 = wmemchr((const wchar_t *)(v130 + 62), v16, 0xAu); + if ( v17 ) + { + v10 = v142; + v11 = v142 + 1; + v134 = std::money_base::_S_atoms[((int)v17 - v130 - 60) >> 1]; + v12 = v141; + if ( v141 == v143 ) + v9 = 15; + else + v9 = v143[0]; + if ( v11 > v9 ) + { + std::string::_M_mutate((int)&v141, v142, 0, 0, 1u); + v12 = v141; + } + ++v129; + v12[v10] = v134; + v142 = v11; + *((_BYTE *)v141 + v10 + 1) = 0; +LABEL_14: + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + { +LABEL_15: + *(_DWORD *)(a1 + 8) = v13 + 2; +LABEL_16: + a2 = -1; + continue; + } +LABEL_35: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_16; + } + break; + } + v123 = v119 | (*(_WORD *)(v130 + 18) != v16); + if ( !v123 ) + { + if ( *(int *)(v130 + 48) > 0 ) + { + v63 = v129; + v119 = 1; + v129 = 0; + v109 = v63; + goto LABEL_14; + } + v119 = 0; +LABEL_110: + v123 = 1; + goto LABEL_111; + } + v18 = *(_BYTE *)(v130 + 16); + if ( v18 ) + { + if ( *(_WORD *)(v130 + 20) != v16 ) + goto LABEL_216; + if ( v119 ) + { + v18 = v119; +LABEL_216: + v123 = v18; + if ( !v142 ) + goto LABEL_112; + goto LABEL_133; + } + if ( v129 ) + { + v135 = v129; + v19 = v139; + v20 = v138; + v21 = v139 + 1; + if ( v138 == v140 ) + v9 = 15; + else + v9 = v140[0]; + if ( v21 > v9 ) + { + std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); + v20 = v138; + } + v129 = 0; + v20[v19] = v135; + v139 = v21; + *((_BYTE *)v138 + v19 + 1) = 0; + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + goto LABEL_15; + goto LABEL_35; + } + v123 = 0; + } +LABEL_111: + if ( !v142 ) + goto LABEL_112; +LABEL_133: + v42 = v123 ^ 1; + goto LABEL_134; + default: + v123 = 1; + v42 = 0; + goto LABEL_134; + } + } +} +// 47D7D7: variable 'v107' is possibly undefined +// 47D864: variable 'v108' is possibly undefined +// 47D0D9: variable 'v9' is possibly undefined +// 47D289: variable 'v59' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 5165B0: using guessed type int std::moneypunct::id; +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (0047DCA0) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::_M_extract( + unsigned int a1, + __int16 a2, + unsigned int a3, + __int16 a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + int v8; // esi + unsigned int v9; // edx + size_t v10; // esi + size_t v11; // edi + _BYTE *v12; // eax + unsigned int v13; // eax + bool v14; // si + char v15; // si + wchar_t v16; // si + wchar_t *v17; // eax + char v18; // al + size_t v19; // esi + _BYTE *v20; // eax + size_t v21; // edi + char v22; // al + int v23; // eax + unsigned int i; // esi + char v25; // dl + __int16 v26; // ax + unsigned int v27; // eax + char v28; // di + __int16 *v29; // eax + __int16 v30; // ax + char v31; // si + unsigned __int16 v32; // ax + unsigned int v33; // eax + bool v34; // si + _WORD *v35; // eax + __int16 v36; // ax + bool v37; // di + char v38; // di + char v39; // al + unsigned __int16 v40; // ax + unsigned int v41; // eax + char v42; // al + unsigned int v43; // edi + bool v44; // si + bool v45; // al + unsigned int v46; // eax + bool v47; // si + __int16 *v48; // eax + __int16 v49; // dx + __int16 *v50; // eax + __int16 v51; // ax + int v52; // eax + char v53; // si + int v54; // edx + __int16 *v56; // eax + __int16 v57; // ax + wchar_t *v58; // eax + unsigned int v59; // edx + __int16 *v60; // eax + __int16 v61; // ax + _WORD *v62; // eax + char v63; // al + bool v64; // si + char v65; // si + char v66; // al + __int16 *v67; // eax + __int16 v68; // ax + size_t v69; // esi + _BYTE *v70; // eax + size_t v71; // edx + __int16 *v72; // eax + __int16 v73; // dx + __int16 *v74; // eax + __int16 *v75; // eax + __int16 v76; // dx + char v77; // al + __int16 *v78; // eax + __int16 v79; // ax + __int16 *v80; // eax + __int16 v81; // ax + bool v82; // si + char v83; // si + char v84; // al + unsigned int first_not_of; // eax + __int16 *v86; // eax + __int16 v87; // dx + __int16 *v88; // eax + __int16 v89; // ax + _DWORD *v90; // eax + std::locale::_Impl *v91; // edi + __int16 *v92; // eax + __int16 v93; // dx + __int16 *v94; // eax + __int16 v95; // dx + _WORD *v96; // eax + __int16 v97; // ax + unsigned int v98; // eax + __int16 *v99; // eax + __int16 v100; // ax + unsigned int v101; // eax + _WORD *v102; // eax + __int16 *v103; // eax + __int16 v104; // dx + __int16 *v105; // eax + __int16 v106; // dx + void (__cdecl *v107)(void *); // [esp+4h] [ebp-A4h] + unsigned int v108; // [esp+8h] [ebp-A0h] + char v109; // [esp+18h] [ebp-90h] + unsigned int v110; // [esp+20h] [ebp-88h] + void *v111; // [esp+24h] [ebp-84h] + unsigned int v112; // [esp+28h] [ebp-80h] + int v113; // [esp+30h] [ebp-78h] + int v114; // [esp+30h] [ebp-78h] + bool v115; // [esp+34h] [ebp-74h] + char v116; // [esp+35h] [ebp-73h] + char v117; // [esp+36h] [ebp-72h] + bool v118; // [esp+36h] [ebp-72h] + char v119; // [esp+37h] [ebp-71h] + char S; // [esp+38h] [ebp-70h] + int *v121; // [esp+3Ch] [ebp-6Ch] + char v122; // [esp+3Ch] [ebp-6Ch] + char v123; // [esp+3Ch] [ebp-6Ch] + char v124; // [esp+3Ch] [ebp-6Ch] + char v125; // [esp+3Ch] [ebp-6Ch] + char v126; // [esp+3Ch] [ebp-6Ch] + char v127; // [esp+3Ch] [ebp-6Ch] + char v128; // [esp+3Ch] [ebp-6Ch] + int v129; // [esp+40h] [ebp-68h] + int v130; // [esp+44h] [ebp-64h] + char v132; // [esp+4Ch] [ebp-5Ch] + char v134; // [esp+4Eh] [ebp-5Ah] + char v135; // [esp+4Eh] [ebp-5Ah] + char v136; // [esp+5Bh] [ebp-4Dh] BYREF + int v137; // [esp+5Ch] [ebp-4Ch] + void *v138; // [esp+60h] [ebp-48h] BYREF + size_t v139; // [esp+64h] [ebp-44h] + int v140[4]; // [esp+68h] [ebp-40h] BYREF + void *v141; // [esp+78h] [ebp-30h] BYREF + size_t v142; // [esp+7Ch] [ebp-2Ch] + int v143[10]; // [esp+80h] [ebp-28h] BYREF + + v111 = std::use_facet>(a5 + 108); + v8 = std::locale::id::_M_id(&std::moneypunct::id); + v121 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v8); + v130 = *v121; + if ( !*v121 ) + { + v90 = operator new((struct type_info *)0x54, v107); + v90[1] = 0; + v91 = (std::locale::_Impl *)v90; + *v90 = &off_538D3C; + v90[2] = 0; + v90[3] = 0; + *((_BYTE *)v90 + 16) = 0; + *(_DWORD *)((char *)v90 + 18) = 0; + v90[6] = 0; + v90[7] = 0; + v90[8] = 0; + v90[9] = 0; + v90[10] = 0; + v90[11] = 0; + v90[12] = 0; + v90[13] = 0; + v90[14] = 0; + *((_BYTE *)v90 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v91, (const std::locale::facet *)v8, v108); + v130 = *v121; + } + if ( *(_DWORD *)(v130 + 36) ) + v115 = *(_DWORD *)(v130 + 44) != 0; + else + v115 = 0; + v139 = 0; + v138 = v140; + LOBYTE(v140[0]) = 0; + if ( *(_BYTE *)(v130 + 16) ) + std::string::reserve(&v138, 0x20u); + v141 = v143; + v142 = 0; + LOBYTE(v143[0]) = 0; + std::string::reserve(&v141, 0x20u); + v119 = 0; + v113 = 1; + v116 = 0; + v137 = *(_DWORD *)(v130 + 56); + v129 = 0; + v109 = 0; + v112 = 0; + while ( 2 ) + { + switch ( *(&v136 + v113) ) + { + case 0: + v123 = 1; + goto LABEL_37; + case 1: + v37 = a2 == -1 && a1 != 0; + if ( v37 ) + { + v94 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v94 >= *(_DWORD *)(a1 + 12) ) + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v95 = *v94; + a1 &= (v95 == -1) - 1; + v38 = v95 == -1 && v37; + } + else + { + v38 = a2 == -1; + } + v9 = a3; + v39 = a4 == -1; + v126 = v39 & (a3 != 0); + if ( v126 ) + { + v92 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v92 >= *(_DWORD *)(a3 + 12) ) + v93 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v93 = *v92; + v39 = v93 != -1 ? 0 : v126; + v9 = (v93 == -1) - 1; + a3 &= v9; + } + v123 = 0; + if ( v39 != v38 ) + { + if ( a1 && a2 == -1 ) + { + v102 = *(_WORD **)(a1 + 8); + v40 = (unsigned int)v102 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v102; + a1 &= (v40 == 0xFFFF) - 1; + } + else + { + v40 = a2; + } + v123 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v40); + if ( v123 ) + { + v41 = *(_DWORD *)(a1 + 8); + if ( v41 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v41 + 2; + a2 = -1; + } + } +LABEL_37: + if ( v113 == 4 ) + { + v22 = v123 & (v112 > 1); + goto LABEL_39; + } + while ( 1 ) + { + v34 = a2 == -1 && a1 != 0; + if ( v34 ) + { + v35 = *(_WORD **)(a1 + 8); + v36 = (unsigned int)v35 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v35; + v9 = (v36 == -1) - 1; + a1 &= v9; + v31 = v36 == -1 && v34; + } + else + { + v31 = a2 == -1; + } + LOBYTE(v9) = a4 == -1; + v117 = v9 & (a3 != 0); + if ( v117 ) + { + v59 = a3; + v60 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v60 >= *(_DWORD *)(a3 + 12) ) + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v61 = *v60; + LOBYTE(v59) = v61 != -1; + v9 = v59 - 1; + LOBYTE(v9) = v117 & v9; + a3 &= (v61 == -1) - 1; + if ( v31 == (_BYTE)v9 ) + goto LABEL_133; + } + else if ( v31 == (_BYTE)v9 ) + { + goto LABEL_133; + } + if ( a1 && a2 == -1 ) + { + v62 = *(_WORD **)(a1 + 8); + v32 = (unsigned int)v62 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v62; + a1 &= (v32 == 0xFFFF) - 1; + } + else + { + v32 = a2; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v32) ) + goto LABEL_133; + v33 = *(_DWORD *)(a1 + 8); + if ( v33 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v33 + 2; + a2 = -1; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_93; + v9 = v113 - 1; + v42 = v113 == 1 || v112 > 1; + if ( v42 ) + goto LABEL_93; + if ( v113 == 2 ) + { + if ( v115 || (_BYTE)v137 == 3 || BYTE2(v137) == 1 ) + { +LABEL_93: + v43 = 0; + v110 = *(_DWORD *)(v130 + 28); + while ( 1 ) + { + v47 = a2 == -1 && a1 != 0; + if ( v47 ) + { + v48 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ) + v49 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v9); + else + v49 = *v48; + a1 &= (v49 == -1) - 1; + v44 = v49 == -1 && v47; + } + else + { + v44 = a2 == -1; + } + v9 = a3; + v45 = a4 == -1; + v118 = v45 && a3 != 0; + if ( v118 ) + { + v75 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v75 >= *(_DWORD *)(a3 + 12) ) + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v76 = *v75; + v77 = v44 ^ (v76 == -1 && v118); + v9 = (v76 == -1) - 1; + a3 &= v9; + LOBYTE(v9) = v43 < v110; + v42 = (v43 < v110) & v77; + if ( !v42 ) + { +LABEL_181: + if ( v43 == v110 ) + goto LABEL_182; +LABEL_186: + if ( !v43 ) + { + v123 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; + v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; + goto LABEL_134; + } +LABEL_112: + v28 = a2 == -1; + goto LABEL_113; + } + } + else + { + LOBYTE(v9) = v43 < v110; + v42 = (v43 < v110) & (v44 ^ v45); + if ( !v42 ) + goto LABEL_181; + } + if ( a1 && a2 == -1 ) + { + v78 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v78 >= *(_DWORD *)(a1 + 12) ) + v79 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v79 = *v78; + a1 &= (v79 == -1) - 1; + v9 = *(_DWORD *)(v130 + 24); + if ( *(_WORD *)(v9 + 2 * v43) != v79 ) + goto LABEL_186; + } + else + { + v9 = *(_DWORD *)(v130 + 24); + if ( *(_WORD *)(v9 + 2 * v43) != a2 ) + goto LABEL_186; + } + v46 = *(_DWORD *)(a1 + 8); + if ( v46 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v46 + 2; + ++v43; + a2 = -1; + } + } +LABEL_136: + ++v113; + continue; + } + v123 = 1; + if ( v113 == 3 ) + { + if ( HIBYTE(v137) == 4 || HIBYTE(v137) == 3 && v115 ) + goto LABEL_93; + goto LABEL_136; + } +LABEL_134: + if ( v113 <= 3 && !v42 ) + goto LABEL_136; + v22 = v123 & (v112 > 1); +LABEL_39: + if ( v22 ) + { + if ( v116 ) + v23 = *(_DWORD *)(v130 + 40); + else + v23 = *(_DWORD *)(v130 + 32); + v114 = v23; + for ( i = 1; ; ++i ) + { + v28 = a2 == -1; + v125 = v28 & (a1 != 0); + if ( v125 ) + { + v29 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v29 >= *(_DWORD *)(a1 + 12) ) + v30 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v30 = *v29; + a1 &= (v30 == -1) - 1; + v124 = v30 != -1 ? 0 : v125; + } + else + { + v124 = a2 == -1; + } + v25 = a4 == -1; + S = v25 & (a3 != 0); + if ( S ) + { + v67 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v67 >= *(_DWORD *)(a3 + 12) ) + v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v68 = *v67; + v25 = v68 != -1 ? 0 : S; + a3 &= (v68 == -1) - 1; + if ( i >= v112 ) + { +LABEL_155: + if ( i == v112 ) + { + if ( v142 <= 1 ) + goto LABEL_157; + goto LABEL_204; + } + goto LABEL_113; + } + } + else if ( i >= v112 ) + { + goto LABEL_155; + } + if ( v25 == v124 ) + goto LABEL_155; + if ( a1 && a2 == -1 ) + { + v74 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v74 >= *(_DWORD *)(a1 + 12) ) + v26 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v26 = *v74; + a1 &= (v26 == -1) - 1; + } + else + { + v26 = a2; + } + if ( *(_WORD *)(v114 + 2 * i) != v26 ) + goto LABEL_113; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v27 + 2; + a2 = -1; + } + } + if ( !v123 ) + goto LABEL_112; + if ( v142 <= 1 ) + goto LABEL_157; +LABEL_204: + first_not_of = std::string::find_first_not_of((int *)&v141, 48, 0); + if ( first_not_of ) + { + if ( first_not_of != -1 ) + goto LABEL_206; + first_not_of = v142 - 1; + if ( !v142 ) + { + *(_BYTE *)v141 = 0; + goto LABEL_157; + } + if ( v142 != 1 ) + { +LABEL_206: + if ( first_not_of > v142 ) + first_not_of = v142; + std::string::_M_erase((int *)&v141, 0, first_not_of); + } + } +LABEL_157: + if ( v116 && *(_BYTE *)v141 != 48 ) + std::string::_M_replace_aux(&v141, 0, 0, 1u, 45); + v69 = v139; + if ( v139 ) + { + v132 = v129; + if ( v119 ) + v132 = v109; + v70 = v138; + if ( v138 == v140 ) + v71 = 15; + else + v71 = v140[0]; + if ( v139 + 1 > v71 ) + { + std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); + v70 = v138; + } + v70[v69] = v132; + v139 = v69 + 1; + *((_BYTE *)v138 + v69 + 1) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v130 + 8), *(_DWORD *)(v130 + 12), (int)&v138) ) + *a6 |= 4u; + } + v28 = a2 == -1; + if ( v119 && *(_DWORD *)(v130 + 48) != v129 ) + { +LABEL_113: + v52 = (int)a6; + *a6 |= 4u; + v53 = v28 & (a1 != 0); + if ( v53 ) + goto LABEL_172; + } + else + { + v52 = (int)std::string::swap(a7, &v141); + v53 = v28 & (a1 != 0); + if ( v53 ) + { +LABEL_172: + v72 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v73 = *v72; + v28 = v73 != -1 ? 0 : v53; + v52 = (v73 == -1) - 1; + a1 &= v52; + } + } + LOBYTE(v52) = a4 == -1; + v54 = v52; + if ( a3 && a4 == -1 ) + { + v80 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v80 >= *(_DWORD *)(a3 + 12) ) + v81 = (*(int (__fastcall **)(unsigned int, int))(*(_DWORD *)a3 + 36))(a3, v54); + else + v81 = *v80; + LOBYTE(v54) = v81 == -1; + } + if ( v28 == (_BYTE)v54 ) + *a6 |= 2u; + if ( v141 != v143 ) + operator delete(v141); + if ( v138 != v140 ) + operator delete(v138); + return a1; + case 3: + if ( *(_DWORD *)(v130 + 36) ) + { + v64 = a2 == -1 && a1 != 0; + if ( v64 ) + { + v86 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v86 >= *(_DWORD *)(a1 + 12) ) + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v87 = *v86; + a1 &= (v87 == -1) - 1; + v65 = v87 == -1 && v64; + } + else + { + v65 = a2 == -1; + } + v66 = a4 == -1; + v127 = v66 & (a3 != 0); + if ( v127 ) + { + v103 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v103 >= *(_DWORD *)(a3 + 12) ) + v104 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v104 = *v103; + v66 = v104 != -1 ? 0 : v127; + a3 &= (v104 == -1) - 1; + } + if ( v66 != v65 ) + { + if ( a1 && a2 == -1 ) + { + v96 = *(_WORD **)(a1 + 8); + v97 = (unsigned int)v96 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v96; + a1 &= (v97 == -1) - 1; + } + else + { + v97 = a2; + } + v9 = *(_DWORD *)(v130 + 32); + if ( *(_WORD *)v9 == v97 ) + { + v112 = *(_DWORD *)(v130 + 36); + v98 = *(_DWORD *)(a1 + 8); + if ( v98 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v98 + 2; + v42 = 0; + a2 = -1; +LABEL_182: + v123 = 1; + goto LABEL_134; + } + } + if ( !*(_DWORD *)(v130 + 44) ) + { + v9 = *(_DWORD *)(v130 + 36); + if ( !v9 ) + goto LABEL_85; +LABEL_151: + v123 = 1; + v42 = 0; + v116 = 1; + goto LABEL_134; + } + } + else if ( !*(_DWORD *)(v130 + 44) ) + { + goto LABEL_85; + } + v82 = a2 == -1 && a1 != 0; + if ( v82 ) + { + v88 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v88 >= *(_DWORD *)(a1 + 12) ) + v89 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v89 = *v88; + a1 &= (v89 == -1) - 1; + v83 = v89 == -1 && v82; + } + else + { + v83 = a2 == -1; + } + v9 = a3; + v84 = a4 == -1; + LOBYTE(v9) = v84 & (a3 != 0); + v128 = v9; + if ( (_BYTE)v9 ) + { + v105 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v105 >= *(_DWORD *)(a3 + 12) ) + v106 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v106 = *v105; + v84 = v106 != -1 ? 0 : v128; + v9 = (v106 == -1) - 1; + a3 &= v9; + } + if ( v83 == v84 + || (!a1 || a2 != -1 + ? (v100 = a2) + : ((v99 = *(__int16 **)(a1 + 8), (unsigned int)v99 >= *(_DWORD *)(a1 + 12)) + ? (v100 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1)) + : (v100 = *v99), + a1 &= (v100 == -1) - 1), + v9 = *(_DWORD *)(v130 + 40), + *(_WORD *)v9 != v100) ) + { + if ( !*(_DWORD *)(v130 + 36) || *(_DWORD *)(v130 + 44) ) + { +LABEL_85: + v42 = v115; + v123 = !v115; + goto LABEL_134; + } + goto LABEL_151; + } + v112 = *(_DWORD *)(v130 + 44); + v101 = *(_DWORD *)(a1 + 8); + if ( v101 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v101 + 2; + v9 = -1; + v123 = 1; + v42 = 0; + a2 = -1; + v116 = 1; + goto LABEL_134; + case 4: + while ( 2 ) + { + v14 = a2 == -1 && a1 != 0; + if ( v14 ) + { + v56 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ) + v57 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v57 = *v56; + v9 = (v57 == -1) - 1; + a1 &= v9; + v15 = v57 == -1 && v14; + } + else + { + v15 = a2 == -1; + } + LOBYTE(v9) = a4 == -1; + v122 = v9 & (a3 != 0); + if ( v122 ) + { + v50 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(a3 + 12) ) + v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v51 = *v50; + LOBYTE(v9) = v51 != -1; + --v9; + LOBYTE(v9) = v122 & v9; + a3 &= (v51 == -1) - 1; + if ( v15 == (_BYTE)v9 ) + goto LABEL_110; + } + else if ( v15 == (_BYTE)v9 ) + { + goto LABEL_110; + } + if ( a1 && a2 == -1 ) + { + v58 = *(wchar_t **)(a1 + 8); + if ( (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ) + v16 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v16 = *v58; + a1 &= (v16 == 0xFFFF) - 1; + } + else + { + v16 = a2; + } + v17 = wmemchr((const wchar_t *)(v130 + 62), v16, 0xAu); + if ( v17 ) + { + v10 = v142; + v11 = v142 + 1; + v134 = std::money_base::_S_atoms[((int)v17 - v130 - 60) >> 1]; + v12 = v141; + if ( v141 == v143 ) + v9 = 15; + else + v9 = v143[0]; + if ( v11 > v9 ) + { + std::string::_M_mutate((int)&v141, v142, 0, 0, 1u); + v12 = v141; + } + ++v129; + v12[v10] = v134; + v142 = v11; + *((_BYTE *)v141 + v10 + 1) = 0; +LABEL_14: + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + { +LABEL_15: + *(_DWORD *)(a1 + 8) = v13 + 2; +LABEL_16: + a2 = -1; + continue; + } +LABEL_35: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_16; + } + break; + } + v123 = v119 | (*(_WORD *)(v130 + 18) != v16); + if ( !v123 ) + { + if ( *(int *)(v130 + 48) > 0 ) + { + v63 = v129; + v119 = 1; + v129 = 0; + v109 = v63; + goto LABEL_14; + } + v119 = 0; +LABEL_110: + v123 = 1; + goto LABEL_111; + } + v18 = *(_BYTE *)(v130 + 16); + if ( v18 ) + { + if ( *(_WORD *)(v130 + 20) != v16 ) + goto LABEL_216; + if ( v119 ) + { + v18 = v119; +LABEL_216: + v123 = v18; + if ( !v142 ) + goto LABEL_112; + goto LABEL_133; + } + if ( v129 ) + { + v135 = v129; + v19 = v139; + v20 = v138; + v21 = v139 + 1; + if ( v138 == v140 ) + v9 = 15; + else + v9 = v140[0]; + if ( v21 > v9 ) + { + std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); + v20 = v138; + } + v129 = 0; + v20[v19] = v135; + v139 = v21; + *((_BYTE *)v138 + v19 + 1) = 0; + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + goto LABEL_15; + goto LABEL_35; + } + v123 = 0; + } +LABEL_111: + if ( !v142 ) + goto LABEL_112; +LABEL_133: + v42 = v123 ^ 1; + goto LABEL_134; + default: + v123 = 1; + v42 = 0; + goto LABEL_134; + } + } +} +// 47EA17: variable 'v107' is possibly undefined +// 47EAA4: variable 'v108' is possibly undefined +// 47E319: variable 'v9' is possibly undefined +// 47E4C9: variable 'v59' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 5165B4: using guessed type int std::moneypunct::id; +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (0047EEE0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (0047EEF0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (0047EF00) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::do_get( + unsigned int a1, + __int16 a2, + unsigned int a3, + __int16 a4, + char a5, + int a6, + _DWORD *a7, + int *a8) +{ + unsigned int v8; // eax + unsigned int v9; // esi + unsigned int v10; // edi + void *v12; // [esp+20h] [ebp-48h] + void *v13; // [esp+38h] [ebp-30h] BYREF + unsigned int v14; // [esp+3Ch] [ebp-2Ch] + char v15[40]; // [esp+40h] [ebp-28h] BYREF + + v15[0] = 0; + v12 = std::use_facet>(a6 + 108); + v13 = v15; + v14 = 0; + if ( a5 ) + v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &v13); + else + v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &v13); + v9 = v8; + v10 = v14; + if ( v14 ) + { + std::wstring::resize(a8, v14, 0); + (*(void (__thiscall **)(void *, void *, char *, int))(*(_DWORD *)v12 + 44))(v12, v13, (char *)v13 + v10, *a8); + } + if ( v13 != v15 ) + operator delete(v13); + return v9; +} + +//----- (0047F020) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::do_get( + std::locale::facet *a1, + __int16 a2, + unsigned int a3, + __int16 a4, + char a5, + int a6, + _DWORD *a7, + long double *a8) +{ + unsigned int v8; // eax + unsigned int v9; // esi + char *String[2]; // [esp+38h] [ebp-30h] BYREF + char v12[40]; // [esp+40h] [ebp-28h] BYREF + + String[0] = v12; + String[1] = 0; + v12[0] = 0; + if ( a5 ) + v8 = std::money_get>::_M_extract( + (unsigned int)a1, + a2, + a3, + a4, + a6, + a7, + String); + else + v8 = std::money_get>::_M_extract( + (unsigned int)a1, + a2, + a3, + a4, + a6, + a7, + String); + v9 = v8; + std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String[0], a8, a7); + if ( String[0] != v12 ) + operator delete(String[0]); + return v9; +} + +//----- (0047F100) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (0047F120) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (0047F140) -------------------------------------------------------- +int __stdcall std::money_put>::do_put( + int a1, + char a2, + char a3, + int a4, + char a5, + int a6) +{ + if ( a3 ) + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); + else + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); +} + +//----- (0047F1B0) -------------------------------------------------------- +int __thiscall std::money_put>::do_put( + void *this, + int a2, + char a3, + int a4, + int a5, + int a6, + long double a7) +{ + void *v7; // esp + void *v8; // esp + int v9; // eax + int v10; // ebx + int v11; // eax + void *v12; // esp + void *v13; // esp + char v14; // al + void (__thiscall *v15)(_BYTE *, void *, size_t, void *); // eax + int v16; // eax + int v17; // ebx + char v19[52]; // [esp-30h] [ebp-A8h] BYREF + const std::locale *v20; // [esp+4h] [ebp-74h] + void *v21; // [esp+24h] [ebp-54h] + size_t BufferCount; // [esp+28h] [ebp-50h] + int v23; // [esp+2Ch] [ebp-4Ch] + int v24; // [esp+30h] [ebp-48h] + void *v25; // [esp+34h] [ebp-44h] + _BYTE *v26; // [esp+38h] [ebp-40h] + void *Src; // [esp+3Ch] [ebp-3Ch] + _DWORD *v28; // [esp+44h] [ebp-34h] BYREF + std::locale *v29[2]; // [esp+48h] [ebp-30h] BYREF + char v30[40]; // [esp+50h] [ebp-28h] BYREF + + v25 = this; + v24 = a4; + v23 = a6; + std::locale::locale((volatile signed __int32 **)&v28, (volatile signed __int32 **)(a5 + 108), v20); + v26 = std::use_facet>((int)&v28); + v7 = alloca(80); + v8 = alloca(80); + Src = v19; + v29[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); + v9 = std::__convert_from_v((int *const *)v29, v19, 0x40u, "%.*Lf", 0, a7); + v10 = v9; + if ( v9 > 63 ) + { + BufferCount = v9 + 1; + v11 = 16 * ((unsigned int)(v9 + 28) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + Src = v19; + v29[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); + v10 = std::__convert_from_v((int *const *)v29, v19, BufferCount, "%.*Lf", 0, a7); + } + v29[0] = (std::locale *)v30; + std::string::_M_construct(v29, v10, 0); + v21 = v29[0]; + BufferCount = (size_t)Src + v10; + v14 = v26[28]; + if ( v14 == 1 ) + goto LABEL_6; + if ( v14 ) + { + v15 = *(void (__thiscall **)(_BYTE *, void *, size_t, void *))(*(_DWORD *)v26 + 28); + if ( (char *)v15 == (char *)std::ctype::do_widen ) + goto LABEL_6; +LABEL_15: + v15(v26, Src, BufferCount, v21); + goto LABEL_8; + } + std::ctype::_M_widen_init((int)v26); + v15 = *(void (__thiscall **)(_BYTE *, void *, size_t, void *))(*(_DWORD *)v26 + 28); + if ( (char *)v15 != (char *)std::ctype::do_widen ) + goto LABEL_15; +LABEL_6: + if ( (void *)BufferCount != Src ) + memcpy(v21, Src, v10); +LABEL_8: + if ( (_BYTE)v24 ) + v16 = std::money_put>::_M_insert(a2, a3, a5, v23, (int)v29); + else + v16 = std::money_put>::_M_insert(a2, a3, a5, v23, (int)v29); + v17 = v16; + if ( (char *)v29[0] != v30 ) + operator delete(v29[0]); + std::locale::~locale(&v28); + return v17; +} + +//----- (0047F3E0) -------------------------------------------------------- +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + char a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + char *v8; // ebx + int v9; // ecx + unsigned __int8 *v10; // ecx + unsigned __int8 *v11; // eax + size_t v12; // edi + int v14; // eax + _BYTE *v15; // eax + unsigned int v16; // edi + void **v17; // ebx + size_t v18; // edi + _BYTE *v19; // eax + size_t v20; // edx + char v21; // cl + size_t v22; // edx + size_t v23; // edx + size_t v24; // edx + int *v25; // eax + _BYTE *v26; // eax + unsigned int v27; // edx + char *v28; // ebx + std::locale::_Impl *v29; // eax + std::locale::_Impl *v30; // esi + void (__cdecl *v31)(void *); // [esp+4h] [ebp-B4h] + unsigned int v32; // [esp+8h] [ebp-B0h] + size_t v33; // [esp+8h] [ebp-B0h] + char v34; // [esp+30h] [ebp-88h] + size_t v35; // [esp+34h] [ebp-84h] + char v36; // [esp+38h] [ebp-80h] + bool v37; // [esp+3Ch] [ebp-7Ch] + size_t v38; // [esp+3Ch] [ebp-7Ch] + int v39; // [esp+40h] [ebp-78h] + int v40; // [esp+40h] [ebp-78h] + char *v41; // [esp+44h] [ebp-74h] + unsigned int v42; // [esp+4Ch] [ebp-6Ch] + _DWORD *v43; // [esp+50h] [ebp-68h] + size_t v44; // [esp+50h] [ebp-68h] + size_t v45; // [esp+50h] [ebp-68h] + int v46; // [esp+6Ch] [ebp-4Ch] BYREF + void *v47; // [esp+70h] [ebp-48h] BYREF + size_t v48; // [esp+74h] [ebp-44h] + int v49[4]; // [esp+78h] [ebp-40h] BYREF + void *v50; // [esp+88h] [ebp-30h] BYREF + size_t v51; // [esp+8Ch] [ebp-2Ch] + int v52[10]; // [esp+90h] [ebp-28h] BYREF + + v43 = std::use_facet>(a3 + 108); + v5 = std::locale::id::_M_id(&std::moneypunct::id); + v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v29 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v31); + *(_DWORD *)v29 = &off_538D0C; + v30 = v29; + *((_WORD *)v29 + 8) = 0; + *((_DWORD *)v29 + 1) = 0; + *((_DWORD *)v29 + 2) = 0; + *((_DWORD *)v29 + 3) = 0; + *((_BYTE *)v29 + 18) = 0; + *((_DWORD *)v29 + 5) = 0; + *((_DWORD *)v29 + 6) = 0; + *((_DWORD *)v29 + 7) = 0; + *((_DWORD *)v29 + 8) = 0; + *((_DWORD *)v29 + 9) = 0; + *((_DWORD *)v29 + 10) = 0; + *((_DWORD *)v29 + 11) = 0; + *((_DWORD *)v29 + 12) = 0; + *((_DWORD *)v29 + 13) = 0; + *((_BYTE *)v29 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v5, v32); + v7 = *v6; + } + v8 = *(char **)a5; + v9 = *(_DWORD *)(a5 + 4); + if ( **(_BYTE **)a5 == *(_BYTE *)(v7 + 56) ) + { + v46 = *(_DWORD *)(v7 + 52); + if ( !v9 ) + goto LABEL_10; + ++v8; + v41 = *(char **)(v7 + 36); + v42 = *(_DWORD *)(v7 + 40); + } + else + { + v46 = *(_DWORD *)(v7 + 48); + v41 = *(char **)(v7 + 28); + v42 = *(_DWORD *)(v7 + 32); + } + v10 = (unsigned __int8 *)&v8[v9]; + if ( v10 > (unsigned __int8 *)v8 ) + { + v11 = (unsigned __int8 *)v8; + do + { + if ( (*(_BYTE *)(v43[6] + 2 * *v11) & 8) == 0 ) + break; + ++v11; + } + while ( v10 != v11 ); + v12 = v11 - (unsigned __int8 *)v8; + if ( v11 != (unsigned __int8 *)v8 ) + { + v48 = 0; + v47 = v49; + LOBYTE(v49[0]) = 0; + std::string::reserve(&v47, 2 * v12); + v14 = *(_DWORD *)(v7 + 44); + v39 = v12 - v14; + if ( (int)(v12 - v14) > 0 ) + { + if ( v14 < 0 ) + v39 = v12; + if ( *(_DWORD *)(v7 + 12) ) + { + std::string::_M_replace_aux(&v47, 0, v48, 2 * v39, 0); + v15 = std::__add_grouping( + v47, + *(_BYTE *)(v7 + 18), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v8, + &v8[v39]); + if ( v15 - (_BYTE *)v47 > v48 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v15 - (_BYTE *)v47, + v48); + v48 = v15 - (_BYTE *)v47; + *v15 = 0; + v14 = *(_DWORD *)(v7 + 44); + } + else + { + std::string::_M_replace((unsigned int *)&v47, 0, v48, v8, v39); + v14 = *(_DWORD *)(v7 + 44); + } + } + v44 = v48; + if ( v14 > 0 ) + { + v36 = *(_BYTE *)(v7 + 17); + v38 = v48 + 1; + v26 = v47; + if ( v47 == v49 ) + v27 = 15; + else + v27 = v49[0]; + if ( v38 > v27 ) + { + std::string::_M_mutate((int)&v47, v48, 0, 0, 1u); + v26 = v47; + } + v26[v44] = v36; + v48 = v38; + *((_BYTE *)v47 + v38) = 0; + if ( v39 < 0 ) + { + std::string::_M_replace_aux(&v47, v48, 0, -v39, *(_BYTE *)(v7 + 57)); + if ( v12 > 0x3FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v47, v8, v12); + } + else + { + v28 = &v8[v39]; + if ( *(_DWORD *)(v7 + 44) > 0x3FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v47, v28, *(_DWORD *)(v7 + 44)); + } + v44 = v48; + } + v16 = v42 + v44; + v40 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v16 += *(_DWORD *)(v7 + 24); + v51 = 0; + v50 = v52; + LOBYTE(v52[0]) = 0; + std::string::reserve(&v50, 2 * v16); + v17 = (void **)&v46; + v45 = *(_DWORD *)(a3 + 8); + v35 = v45 - v16; + v37 = v45 > v16 && v40 == 16; + do + { + switch ( *(_BYTE *)v17 ) + { + case 0: + if ( v37 ) + goto LABEL_41; + break; + case 1: + v18 = v51; + if ( !v37 ) + { + v19 = v50; + if ( v50 == v52 ) + v23 = 15; + else + v23 = v52[0]; + if ( v51 + 1 > v23 ) + { + std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); + v19 = v50; + } + v21 = a4; + goto LABEL_39; + } +LABEL_41: + std::string::_M_replace_aux(&v50, v51, 0, v35, a4); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + { + v22 = *(_DWORD *)(v7 + 24); + if ( v22 > 0x3FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v50, *(_BYTE **)(v7 + 20), v22); + } + break; + case 3: + if ( v42 ) + { + v18 = v51; + v34 = *v41; + v19 = v50; + if ( v50 == v52 ) + v20 = 15; + else + v20 = v52[0]; + if ( v51 + 1 > v20 ) + { + std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); + v19 = v50; + } + v21 = v34; +LABEL_39: + v19[v18] = v21; + v51 = v18 + 1; + *((_BYTE *)v50 + v18 + 1) = 0; + } + break; + case 4: + std::string::_M_append(&v50, v47, v48); + break; + default: + break; + } + v17 = (void **)((char *)v17 + 1); + } + while ( &v47 != v17 ); + v24 = v51; + if ( v42 > 1 ) + { + if ( v42 - 1 > 0x3FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v50, v41 + 1, v42 - 1); + v24 = v51; + if ( v45 <= v51 ) + goto LABEL_46; + } + else if ( v45 <= v51 ) + { +LABEL_46: + v45 = v24; +LABEL_47: + v25 = (int *)v50; + if ( !a2 ) + { + (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v45); + v25 = (int *)v50; + } + if ( v25 != v52 ) + operator delete(v25); + if ( v47 != v49 ) + operator delete(v47); + goto LABEL_10; + } + v33 = v45 - v24; + if ( v40 == 32 ) + std::string::_M_replace_aux(&v50, v24, 0, v33, a4); + else + std::string::_M_replace_aux(&v50, 0, 0, v33, a4); + goto LABEL_47; + } + } +LABEL_10: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 47F917: variable 'v31' is possibly undefined +// 47F9A3: variable 'v32' is possibly undefined +// 5165A8: using guessed type int std::moneypunct::id; +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (0047FBB0) -------------------------------------------------------- +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + char a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + char *v8; // ebx + int v9; // ecx + unsigned __int8 *v10; // ecx + unsigned __int8 *v11; // eax + size_t v12; // edi + int v14; // eax + _BYTE *v15; // eax + unsigned int v16; // edi + void **v17; // ebx + size_t v18; // edi + _BYTE *v19; // eax + size_t v20; // edx + char v21; // cl + size_t v22; // edx + size_t v23; // edx + size_t v24; // edx + int *v25; // eax + _BYTE *v26; // eax + unsigned int v27; // edx + char *v28; // ebx + std::locale::_Impl *v29; // eax + std::locale::_Impl *v30; // esi + void (__cdecl *v31)(void *); // [esp+4h] [ebp-B4h] + unsigned int v32; // [esp+8h] [ebp-B0h] + size_t v33; // [esp+8h] [ebp-B0h] + char v34; // [esp+30h] [ebp-88h] + size_t v35; // [esp+34h] [ebp-84h] + char v36; // [esp+38h] [ebp-80h] + bool v37; // [esp+3Ch] [ebp-7Ch] + size_t v38; // [esp+3Ch] [ebp-7Ch] + int v39; // [esp+40h] [ebp-78h] + int v40; // [esp+40h] [ebp-78h] + char *v41; // [esp+44h] [ebp-74h] + unsigned int v42; // [esp+4Ch] [ebp-6Ch] + _DWORD *v43; // [esp+50h] [ebp-68h] + size_t v44; // [esp+50h] [ebp-68h] + size_t v45; // [esp+50h] [ebp-68h] + int v46; // [esp+6Ch] [ebp-4Ch] BYREF + void *v47; // [esp+70h] [ebp-48h] BYREF + size_t v48; // [esp+74h] [ebp-44h] + int v49[4]; // [esp+78h] [ebp-40h] BYREF + void *v50; // [esp+88h] [ebp-30h] BYREF + size_t v51; // [esp+8Ch] [ebp-2Ch] + int v52[10]; // [esp+90h] [ebp-28h] BYREF + + v43 = std::use_facet>(a3 + 108); + v5 = std::locale::id::_M_id(&std::moneypunct::id); + v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v29 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v31); + *(_DWORD *)v29 = &off_538D1C; + v30 = v29; + *((_WORD *)v29 + 8) = 0; + *((_DWORD *)v29 + 1) = 0; + *((_DWORD *)v29 + 2) = 0; + *((_DWORD *)v29 + 3) = 0; + *((_BYTE *)v29 + 18) = 0; + *((_DWORD *)v29 + 5) = 0; + *((_DWORD *)v29 + 6) = 0; + *((_DWORD *)v29 + 7) = 0; + *((_DWORD *)v29 + 8) = 0; + *((_DWORD *)v29 + 9) = 0; + *((_DWORD *)v29 + 10) = 0; + *((_DWORD *)v29 + 11) = 0; + *((_DWORD *)v29 + 12) = 0; + *((_DWORD *)v29 + 13) = 0; + *((_BYTE *)v29 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v5, v32); + v7 = *v6; + } + v8 = *(char **)a5; + v9 = *(_DWORD *)(a5 + 4); + if ( **(_BYTE **)a5 == *(_BYTE *)(v7 + 56) ) + { + v46 = *(_DWORD *)(v7 + 52); + if ( !v9 ) + goto LABEL_10; + ++v8; + v41 = *(char **)(v7 + 36); + v42 = *(_DWORD *)(v7 + 40); + } + else + { + v46 = *(_DWORD *)(v7 + 48); + v41 = *(char **)(v7 + 28); + v42 = *(_DWORD *)(v7 + 32); + } + v10 = (unsigned __int8 *)&v8[v9]; + if ( v10 > (unsigned __int8 *)v8 ) + { + v11 = (unsigned __int8 *)v8; + do + { + if ( (*(_BYTE *)(v43[6] + 2 * *v11) & 8) == 0 ) + break; + ++v11; + } + while ( v10 != v11 ); + v12 = v11 - (unsigned __int8 *)v8; + if ( v11 != (unsigned __int8 *)v8 ) + { + v48 = 0; + v47 = v49; + LOBYTE(v49[0]) = 0; + std::string::reserve(&v47, 2 * v12); + v14 = *(_DWORD *)(v7 + 44); + v39 = v12 - v14; + if ( (int)(v12 - v14) > 0 ) + { + if ( v14 < 0 ) + v39 = v12; + if ( *(_DWORD *)(v7 + 12) ) + { + std::string::_M_replace_aux(&v47, 0, v48, 2 * v39, 0); + v15 = std::__add_grouping( + v47, + *(_BYTE *)(v7 + 18), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v8, + &v8[v39]); + if ( v15 - (_BYTE *)v47 > v48 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v15 - (_BYTE *)v47, + v48); + v48 = v15 - (_BYTE *)v47; + *v15 = 0; + v14 = *(_DWORD *)(v7 + 44); + } + else + { + std::string::_M_replace((unsigned int *)&v47, 0, v48, v8, v39); + v14 = *(_DWORD *)(v7 + 44); + } + } + v44 = v48; + if ( v14 > 0 ) + { + v36 = *(_BYTE *)(v7 + 17); + v38 = v48 + 1; + v26 = v47; + if ( v47 == v49 ) + v27 = 15; + else + v27 = v49[0]; + if ( v38 > v27 ) + { + std::string::_M_mutate((int)&v47, v48, 0, 0, 1u); + v26 = v47; + } + v26[v44] = v36; + v48 = v38; + *((_BYTE *)v47 + v38) = 0; + if ( v39 < 0 ) + { + std::string::_M_replace_aux(&v47, v48, 0, -v39, *(_BYTE *)(v7 + 57)); + if ( v12 > 0x3FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v47, v8, v12); + } + else + { + v28 = &v8[v39]; + if ( *(_DWORD *)(v7 + 44) > 0x3FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v47, v28, *(_DWORD *)(v7 + 44)); + } + v44 = v48; + } + v16 = v42 + v44; + v40 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v16 += *(_DWORD *)(v7 + 24); + v51 = 0; + v50 = v52; + LOBYTE(v52[0]) = 0; + std::string::reserve(&v50, 2 * v16); + v17 = (void **)&v46; + v45 = *(_DWORD *)(a3 + 8); + v35 = v45 - v16; + v37 = v45 > v16 && v40 == 16; + do + { + switch ( *(_BYTE *)v17 ) + { + case 0: + if ( v37 ) + goto LABEL_41; + break; + case 1: + v18 = v51; + if ( !v37 ) + { + v19 = v50; + if ( v50 == v52 ) + v23 = 15; + else + v23 = v52[0]; + if ( v51 + 1 > v23 ) + { + std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); + v19 = v50; + } + v21 = a4; + goto LABEL_39; + } +LABEL_41: + std::string::_M_replace_aux(&v50, v51, 0, v35, a4); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + { + v22 = *(_DWORD *)(v7 + 24); + if ( v22 > 0x3FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v50, *(_BYTE **)(v7 + 20), v22); + } + break; + case 3: + if ( v42 ) + { + v18 = v51; + v34 = *v41; + v19 = v50; + if ( v50 == v52 ) + v20 = 15; + else + v20 = v52[0]; + if ( v51 + 1 > v20 ) + { + std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); + v19 = v50; + } + v21 = v34; +LABEL_39: + v19[v18] = v21; + v51 = v18 + 1; + *((_BYTE *)v50 + v18 + 1) = 0; + } + break; + case 4: + std::string::_M_append(&v50, v47, v48); + break; + default: + break; + } + v17 = (void **)((char *)v17 + 1); + } + while ( &v47 != v17 ); + v24 = v51; + if ( v42 > 1 ) + { + if ( v42 - 1 > 0x3FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v50, v41 + 1, v42 - 1); + v24 = v51; + if ( v45 <= v51 ) + goto LABEL_46; + } + else if ( v45 <= v51 ) + { +LABEL_46: + v45 = v24; +LABEL_47: + v25 = (int *)v50; + if ( !a2 ) + { + (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v45); + v25 = (int *)v50; + } + if ( v25 != v52 ) + operator delete(v25); + if ( v47 != v49 ) + operator delete(v47); + goto LABEL_10; + } + v33 = v45 - v24; + if ( v40 == 32 ) + std::string::_M_replace_aux(&v50, v24, 0, v33, a4); + else + std::string::_M_replace_aux(&v50, 0, 0, v33, a4); + goto LABEL_47; + } + } +LABEL_10: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 4800E7: variable 'v31' is possibly undefined +// 480173: variable 'v32' is possibly undefined +// 5165AC: using guessed type int std::moneypunct::id; +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (00480380) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (004803A0) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (004803C0) -------------------------------------------------------- +int __stdcall std::money_put>::do_put( + int a1, + char a2, + char a3, + int a4, + wchar_t a5, + int a6) +{ + if ( a3 ) + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); + else + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); +} + +//----- (00480430) -------------------------------------------------------- +int __thiscall std::money_put>::do_put( + void *this, + int a2, + int a3, + int a4, + int a5, + int a6, + long double a7) +{ + void *v7; // esp + void *v8; // esp + int v9; // eax + int v10; // ebx + int v11; // eax + void *v12; // esp + void *v13; // esp + int v14; // eax + int v15; // ebx + int v17; // [esp-44h] [ebp-BCh] + int v18; // [esp-40h] [ebp-B8h] + int v19; // [esp-3Ch] [ebp-B4h] + int v20; // [esp-38h] [ebp-B0h] + int v21; // [esp-34h] [ebp-ACh] + _DWORD v22[7]; // [esp-30h] [ebp-A8h] BYREF + int v23; // [esp-14h] [ebp-8Ch] + int v24; // [esp-10h] [ebp-88h] + int v25; // [esp-Ch] [ebp-84h] + int v26; // [esp-8h] [ebp-80h] + std::locale **v27; // [esp-4h] [ebp-7Ch] + const std::locale *v28; // [esp+4h] [ebp-74h] + size_t BufferCount; // [esp+28h] [ebp-50h] + int v30; // [esp+2Ch] [ebp-4Ch] + int v31; // [esp+30h] [ebp-48h] + void *v32; // [esp+34h] [ebp-44h] + void *v33; // [esp+38h] [ebp-40h] + _DWORD *v34; // [esp+3Ch] [ebp-3Ch] + _DWORD *v35; // [esp+44h] [ebp-34h] BYREF + std::locale *v36[2]; // [esp+48h] [ebp-30h] BYREF + char v37[40]; // [esp+50h] [ebp-28h] BYREF + + v32 = this; + v31 = a4; + v30 = a6; + std::locale::locale((volatile signed __int32 **)&v35, (volatile signed __int32 **)(a5 + 108), v28); + v33 = std::use_facet>((int)&v35); + v7 = alloca(80); + v8 = alloca(80); + v34 = v22; + v36[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); + v9 = std::__convert_from_v((int *const *)v36, (char *)v22, 0x40u, "%.*Lf", 0, a7); + v10 = v9; + if ( v9 > 63 ) + { + BufferCount = v9 + 1; + v11 = 16 * ((unsigned int)(v9 + 28) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + v34 = v22; + v36[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); + v10 = std::__convert_from_v((int *const *)v36, (char *)v22, BufferCount, "%.*Lf", 0, a7); + } + v36[0] = (std::locale *)v37; + std::wstring::_M_construct((wchar_t **)v36, v10, 0); + (*(void (__thiscall **)(void *, _DWORD *, int, std::locale *, int, int, int, int, int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, int, int, int))(*(_DWORD *)v33 + 44))( + v33, + v34, + (int)v34 + v10, + v36[0], + v17, + v18, + v19, + v20, + v21, + v22[0], + v22[1], + v22[2], + v22[3], + v22[4], + v22[5], + v22[6], + v23, + v24, + v25); + v27 = v36; + v26 = (unsigned __int16)v30; + v24 = a3; + v25 = a5; + v23 = a2; + if ( (_BYTE)v31 ) + v14 = std::money_put>::_M_insert(v23, v24, v25, v26, (int)v27); + else + v14 = std::money_put>::_M_insert(v23, v24, v25, v26, (int)v27); + v15 = v14; + if ( (char *)v36[0] != v37 ) + operator delete(v36[0]); + std::locale::~locale(&v35); + return v15; +} +// 480543: variable 'v17' is possibly undefined +// 480543: variable 'v18' is possibly undefined +// 480543: variable 'v19' is possibly undefined +// 480543: variable 'v20' is possibly undefined +// 480543: variable 'v21' is possibly undefined + +//----- (004805E0) -------------------------------------------------------- +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + wchar_t a4, + int a5) +{ + void *v5; // edi + int v6; // ebx + int v7; // esi + wchar_t *v8; // ebx + int v9; // eax + signed int v10; // eax + int v12; // eax + size_t v13; // edi + _WORD *v14; // eax + unsigned int v15; // edi + wchar_t **v16; // ebx + size_t v17; // edi + _WORD *v18; // eax + size_t v19; // edx + size_t v20; // edx + size_t v21; // edi + _WORD *v22; // eax + size_t v23; // edx + size_t v24; // ecx + int *v25; // eax + wchar_t *v26; // eax + unsigned int v27; // edx + size_t v28; // edx + _DWORD *v29; // eax + std::locale::_Impl *v30; // esi + size_t v31; // [esp-4h] [ebp-BCh] + void (__cdecl *v32)(void *); // [esp+4h] [ebp-B4h] + unsigned int v33; // [esp+8h] [ebp-B0h] + __int16 v34; // [esp+30h] [ebp-88h] + size_t v35; // [esp+34h] [ebp-84h] + wchar_t v36; // [esp+38h] [ebp-80h] + bool v37; // [esp+3Ch] [ebp-7Ch] + unsigned int v38; // [esp+3Ch] [ebp-7Ch] + int v39; // [esp+40h] [ebp-78h] + int v40; // [esp+40h] [ebp-78h] + _WORD *v41; // [esp+48h] [ebp-70h] + int *v42; // [esp+4Ch] [ebp-6Ch] + unsigned int v43; // [esp+4Ch] [ebp-6Ch] + size_t v44; // [esp+4Ch] [ebp-6Ch] + unsigned int v45; // [esp+50h] [ebp-68h] + int v46; // [esp+6Ch] [ebp-4Ch] BYREF + wchar_t *v47; // [esp+70h] [ebp-48h] BYREF + size_t v48; // [esp+74h] [ebp-44h] + int v49[4]; // [esp+78h] [ebp-40h] BYREF + void *v50; // [esp+88h] [ebp-30h] BYREF + size_t v51; // [esp+8Ch] [ebp-2Ch] + int v52[10]; // [esp+90h] [ebp-28h] BYREF + + v5 = std::use_facet>(a3 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + v42 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + if ( !v7 ) + { + v29 = operator new((struct type_info *)0x54, v32); + v29[1] = 0; + v30 = (std::locale::_Impl *)v29; + *v29 = &off_538D2C; + v29[2] = 0; + v29[3] = 0; + *((_BYTE *)v29 + 16) = 0; + *(_DWORD *)((char *)v29 + 18) = 0; + v29[6] = 0; + v29[7] = 0; + v29[8] = 0; + v29[9] = 0; + v29[10] = 0; + v29[11] = 0; + v29[12] = 0; + v29[13] = 0; + v29[14] = 0; + *((_BYTE *)v29 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v6, v33); + v7 = *v42; + } + v8 = *(wchar_t **)a5; + v9 = *(_DWORD *)(a5 + 4); + if ( **(_WORD **)a5 == *(_WORD *)(v7 + 60) ) + { + v46 = *(_DWORD *)(v7 + 56); + v41 = *(_WORD **)(v7 + 40); + v45 = *(_DWORD *)(v7 + 44); + if ( v9 ) + ++v8; + } + else + { + v46 = *(_DWORD *)(v7 + 52); + v41 = *(_WORD **)(v7 + 32); + v45 = *(_DWORD *)(v7 + 36); + } + v10 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; + v43 = v10 >> 1; + if ( v10 >> 1 ) + { + LOWORD(v49[0]) = 0; + v47 = (wchar_t *)v49; + v48 = 0; + std::wstring::reserve((int)&v47, v10); + v12 = *(_DWORD *)(v7 + 48); + v39 = v43 - v12; + v13 = v48; + if ( (int)(v43 - v12) > 0 ) + { + if ( v12 < 0 ) + v39 = v43; + if ( *(_DWORD *)(v7 + 12) ) + { + std::wstring::_M_replace_aux((int)&v47, 0, v48, 2 * v39, 0); + v14 = std::__add_grouping( + v47, + *(_WORD *)(v7 + 20), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v8, + &v8[v39]); + v13 = v14 - v47; + if ( v13 > v48 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v14 - v47, + v48); + v48 = v14 - v47; + *v14 = 0; + v12 = *(_DWORD *)(v7 + 48); + } + else + { + std::wstring::_M_replace((int)&v47, 0, v48, v8, v39); + v12 = *(_DWORD *)(v7 + 48); + v13 = v48; + } + } + if ( v12 > 0 ) + { + v36 = *(_WORD *)(v7 + 18); + v38 = v13 + 1; + v26 = v47; + if ( v47 == (wchar_t *)v49 ) + v27 = 7; + else + v27 = v49[0]; + if ( v38 > v27 ) + { + std::wstring::_M_mutate((const wchar_t **)&v47, v13, 0, 0, 1u); + v26 = v47; + } + v26[v13] = v36; + v48 = v13 + 1; + v26[v13 + 1] = 0; + if ( v39 < 0 ) + { + std::wstring::_M_replace_aux((int)&v47, v38, 0, -v39, *(_WORD *)(v7 + 62)); + if ( v43 > 0x1FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v47, v8, v43); + } + else + { + v28 = *(_DWORD *)(v7 + 48); + if ( v28 > 0x1FFFFFFF - v38 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v47, &v8[v39], v28); + } + v13 = v48; + } + v15 = v45 + v13; + v40 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v15 += *(_DWORD *)(v7 + 28); + v51 = 0; + v50 = v52; + LOWORD(v52[0]) = 0; + std::wstring::reserve((int)&v50, 2 * v15); + v16 = (wchar_t **)&v46; + v44 = *(_DWORD *)(a3 + 8); + v35 = v44 - v15; + v37 = v44 > v15 && v40 == 16; + do + { + switch ( *(_BYTE *)v16 ) + { + case 0: + if ( v37 ) + goto LABEL_36; + break; + case 1: + v21 = v51; + if ( v37 ) + { +LABEL_36: + std::wstring::_M_replace_aux((int)&v50, v51, 0, v35, a4); + } + else + { + v22 = v50; + if ( v50 == v52 ) + v23 = 7; + else + v23 = v52[0]; + if ( v51 + 1 > v23 ) + { + std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); + v22 = v50; + } + v22[v21] = a4; + v51 = v21 + 1; + v22[v21 + 1] = 0; + } + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + { + v20 = *(_DWORD *)(v7 + 28); + if ( v20 > 0x1FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v50, *(wchar_t **)(v7 + 24), v20); + } + break; + case 3: + if ( v45 ) + { + v17 = v51; + v34 = *v41; + v18 = v50; + if ( v50 == v52 ) + v19 = 7; + else + v19 = v52[0]; + if ( v51 + 1 > v19 ) + { + std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); + v18 = v50; + } + v18[v17] = v34; + v51 = v17 + 1; + v18[v17 + 1] = 0; + } + break; + case 4: + std::wstring::_M_append((int)&v50, v47, v48); + break; + default: + break; + } + v16 = (wchar_t **)((char *)v16 + 1); + } + while ( &v47 != v16 ); + v24 = v51; + if ( v45 > 1 ) + { + if ( v45 - 1 > 0x1FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v50, v41 + 1, v45 - 1); + v24 = v51; + if ( v44 <= v51 ) + goto LABEL_41; + } + else if ( v44 <= v51 ) + { +LABEL_41: + v44 = v24; +LABEL_42: + v25 = (int *)v50; + if ( !a2 ) + { + (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v44); + v25 = (int *)v50; + } + if ( v25 != v52 ) + operator delete(v25); + if ( v47 != (wchar_t *)v49 ) + operator delete(v47); + goto LABEL_6; + } + v31 = v44 - v24; + if ( v40 == 32 ) + std::wstring::_M_replace_aux((int)&v50, v24, 0, v31, a4); + else + std::wstring::_M_replace_aux((int)&v50, 0, 0, v31, a4); + goto LABEL_42; + } +LABEL_6: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 480B27: variable 'v32' is possibly undefined +// 480BB4: variable 'v33' is possibly undefined +// 5165B0: using guessed type int std::moneypunct::id; +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (00480DF0) -------------------------------------------------------- +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + wchar_t a4, + int a5) +{ + void *v5; // edi + int v6; // ebx + int v7; // esi + wchar_t *v8; // ebx + int v9; // eax + signed int v10; // eax + int v12; // eax + size_t v13; // edi + _WORD *v14; // eax + unsigned int v15; // edi + wchar_t **v16; // ebx + size_t v17; // edi + _WORD *v18; // eax + size_t v19; // edx + size_t v20; // edx + size_t v21; // edi + _WORD *v22; // eax + size_t v23; // edx + size_t v24; // ecx + int *v25; // eax + wchar_t *v26; // eax + unsigned int v27; // edx + size_t v28; // edx + _DWORD *v29; // eax + std::locale::_Impl *v30; // esi + size_t v31; // [esp-4h] [ebp-BCh] + void (__cdecl *v32)(void *); // [esp+4h] [ebp-B4h] + unsigned int v33; // [esp+8h] [ebp-B0h] + __int16 v34; // [esp+30h] [ebp-88h] + size_t v35; // [esp+34h] [ebp-84h] + wchar_t v36; // [esp+38h] [ebp-80h] + bool v37; // [esp+3Ch] [ebp-7Ch] + unsigned int v38; // [esp+3Ch] [ebp-7Ch] + int v39; // [esp+40h] [ebp-78h] + int v40; // [esp+40h] [ebp-78h] + _WORD *v41; // [esp+48h] [ebp-70h] + int *v42; // [esp+4Ch] [ebp-6Ch] + unsigned int v43; // [esp+4Ch] [ebp-6Ch] + size_t v44; // [esp+4Ch] [ebp-6Ch] + unsigned int v45; // [esp+50h] [ebp-68h] + int v46; // [esp+6Ch] [ebp-4Ch] BYREF + wchar_t *v47; // [esp+70h] [ebp-48h] BYREF + size_t v48; // [esp+74h] [ebp-44h] + int v49[4]; // [esp+78h] [ebp-40h] BYREF + void *v50; // [esp+88h] [ebp-30h] BYREF + size_t v51; // [esp+8Ch] [ebp-2Ch] + int v52[10]; // [esp+90h] [ebp-28h] BYREF + + v5 = std::use_facet>(a3 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + v42 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + if ( !v7 ) + { + v29 = operator new((struct type_info *)0x54, v32); + v29[1] = 0; + v30 = (std::locale::_Impl *)v29; + *v29 = &off_538D3C; + v29[2] = 0; + v29[3] = 0; + *((_BYTE *)v29 + 16) = 0; + *(_DWORD *)((char *)v29 + 18) = 0; + v29[6] = 0; + v29[7] = 0; + v29[8] = 0; + v29[9] = 0; + v29[10] = 0; + v29[11] = 0; + v29[12] = 0; + v29[13] = 0; + v29[14] = 0; + *((_BYTE *)v29 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v6, v33); + v7 = *v42; + } + v8 = *(wchar_t **)a5; + v9 = *(_DWORD *)(a5 + 4); + if ( **(_WORD **)a5 == *(_WORD *)(v7 + 60) ) + { + v46 = *(_DWORD *)(v7 + 56); + v41 = *(_WORD **)(v7 + 40); + v45 = *(_DWORD *)(v7 + 44); + if ( v9 ) + ++v8; + } + else + { + v46 = *(_DWORD *)(v7 + 52); + v41 = *(_WORD **)(v7 + 32); + v45 = *(_DWORD *)(v7 + 36); + } + v10 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; + v43 = v10 >> 1; + if ( v10 >> 1 ) + { + LOWORD(v49[0]) = 0; + v47 = (wchar_t *)v49; + v48 = 0; + std::wstring::reserve((int)&v47, v10); + v12 = *(_DWORD *)(v7 + 48); + v39 = v43 - v12; + v13 = v48; + if ( (int)(v43 - v12) > 0 ) + { + if ( v12 < 0 ) + v39 = v43; + if ( *(_DWORD *)(v7 + 12) ) + { + std::wstring::_M_replace_aux((int)&v47, 0, v48, 2 * v39, 0); + v14 = std::__add_grouping( + v47, + *(_WORD *)(v7 + 20), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v8, + &v8[v39]); + v13 = v14 - v47; + if ( v13 > v48 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v14 - v47, + v48); + v48 = v14 - v47; + *v14 = 0; + v12 = *(_DWORD *)(v7 + 48); + } + else + { + std::wstring::_M_replace((int)&v47, 0, v48, v8, v39); + v12 = *(_DWORD *)(v7 + 48); + v13 = v48; + } + } + if ( v12 > 0 ) + { + v36 = *(_WORD *)(v7 + 18); + v38 = v13 + 1; + v26 = v47; + if ( v47 == (wchar_t *)v49 ) + v27 = 7; + else + v27 = v49[0]; + if ( v38 > v27 ) + { + std::wstring::_M_mutate((const wchar_t **)&v47, v13, 0, 0, 1u); + v26 = v47; + } + v26[v13] = v36; + v48 = v13 + 1; + v26[v13 + 1] = 0; + if ( v39 < 0 ) + { + std::wstring::_M_replace_aux((int)&v47, v38, 0, -v39, *(_WORD *)(v7 + 62)); + if ( v43 > 0x1FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v47, v8, v43); + } + else + { + v28 = *(_DWORD *)(v7 + 48); + if ( v28 > 0x1FFFFFFF - v38 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v47, &v8[v39], v28); + } + v13 = v48; + } + v15 = v45 + v13; + v40 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v15 += *(_DWORD *)(v7 + 28); + v51 = 0; + v50 = v52; + LOWORD(v52[0]) = 0; + std::wstring::reserve((int)&v50, 2 * v15); + v16 = (wchar_t **)&v46; + v44 = *(_DWORD *)(a3 + 8); + v35 = v44 - v15; + v37 = v44 > v15 && v40 == 16; + do + { + switch ( *(_BYTE *)v16 ) + { + case 0: + if ( v37 ) + goto LABEL_36; + break; + case 1: + v21 = v51; + if ( v37 ) + { +LABEL_36: + std::wstring::_M_replace_aux((int)&v50, v51, 0, v35, a4); + } + else + { + v22 = v50; + if ( v50 == v52 ) + v23 = 7; + else + v23 = v52[0]; + if ( v51 + 1 > v23 ) + { + std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); + v22 = v50; + } + v22[v21] = a4; + v51 = v21 + 1; + v22[v21 + 1] = 0; + } + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + { + v20 = *(_DWORD *)(v7 + 28); + if ( v20 > 0x1FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v50, *(wchar_t **)(v7 + 24), v20); + } + break; + case 3: + if ( v45 ) + { + v17 = v51; + v34 = *v41; + v18 = v50; + if ( v50 == v52 ) + v19 = 7; + else + v19 = v52[0]; + if ( v51 + 1 > v19 ) + { + std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); + v18 = v50; + } + v18[v17] = v34; + v51 = v17 + 1; + v18[v17 + 1] = 0; + } + break; + case 4: + std::wstring::_M_append((int)&v50, v47, v48); + break; + default: + break; + } + v16 = (wchar_t **)((char *)v16 + 1); + } + while ( &v47 != v16 ); + v24 = v51; + if ( v45 > 1 ) + { + if ( v45 - 1 > 0x1FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v50, v41 + 1, v45 - 1); + v24 = v51; + if ( v44 <= v51 ) + goto LABEL_41; + } + else if ( v44 <= v51 ) + { +LABEL_41: + v44 = v24; +LABEL_42: + v25 = (int *)v50; + if ( !a2 ) + { + (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v44); + v25 = (int *)v50; + } + if ( v25 != v52 ) + operator delete(v25); + if ( v47 != (wchar_t *)v49 ) + operator delete(v47); + goto LABEL_6; + } + v31 = v44 - v24; + if ( v40 == 32 ) + std::wstring::_M_replace_aux((int)&v50, v24, 0, v31, a4); + else + std::wstring::_M_replace_aux((int)&v50, 0, 0, v31, a4); + goto LABEL_42; + } +LABEL_6: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 481337: variable 'v32' is possibly undefined +// 4813C4: variable 'v33' is possibly undefined +// 5165B4: using guessed type int std::moneypunct::id; +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (00481600) -------------------------------------------------------- +int __stdcall std::codecvt::do_in( + int a1, + unsigned __int8 *a2, + int a3, + unsigned __int8 **a4, + int a5, + int a6, + _DWORD *a7) +{ + unsigned __int8 *v7; // edx + unsigned int v9; // eax + int result; // eax + unsigned __int8 *v11; // [esp+8h] [ebp-Ch] BYREF + unsigned __int8 *v12; // [esp+Ch] [ebp-8h] + + v7 = (unsigned __int8 *)a3; + v11 = a2; + v12 = (unsigned __int8 *)a3; + if ( a2 == (unsigned __int8 *)a3 ) + { +LABEL_9: + result = 0; + } + else + { + while ( 1 ) + { + if ( a6 == a5 ) + { + v7 = v11; + result = 1; + goto LABEL_8; + } + v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); + v7 = v11; + if ( v9 == -2 ) + { + result = 1; + goto LABEL_8; + } + if ( v9 > 0x10FFFF ) + break; + a5 += 4; + *(_DWORD *)(a5 - 4) = v9; + if ( v12 == v7 ) + goto LABEL_9; + } + result = 2; + } +LABEL_8: + *a4 = v7; + *a7 = a5; + return result; +} + +//----- (00481690) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + int a1, + unsigned int *a2, + unsigned int *a3, + unsigned int **a4, + int a5, + int a6, + int *a7) +{ + int v7; // eax + unsigned int *v8; // ebx + int v10; // ecx + int v11[4]; // [esp+8h] [ebp-10h] BYREF + + v7 = a5; + v8 = a2; + v11[0] = a5; + v11[1] = a6; + if ( a2 == a3 ) + { + v10 = 0; + } + else + { + do + { + if ( *v8 > 0x10FFFF ) + { + v7 = v11[0]; + v10 = 2; + goto LABEL_7; + } + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)v11, *v8) ) + { + v7 = v11[0]; + v10 = 1; + goto LABEL_7; + } + ++v8; + } + while ( a3 != v8 ); + v7 = v11[0]; + v10 = 0; + } +LABEL_7: + *a4 = v8; + *a7 = v7; + return v10; +} + +//----- (00481720) -------------------------------------------------------- +unsigned __int8 *__stdcall std::codecvt::do_length( + int a1, + unsigned __int8 *a2, + unsigned __int8 *a3, + int a4) +{ + int v4; // ebx + bool v5; // dl + bool v6; // al + unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF + + v8[0] = a2; + v8[1] = a3; + if ( !a4 ) + return 0; + v4 = a4 - 1; + do + { + v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; + v6 = v4-- != 0; + } + while ( v6 && v5 ); + return (unsigned __int8 *)(v8[0] - a2); +} + +//----- (00481780) -------------------------------------------------------- +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) +{ + int result; // eax + int v8[2]; // [esp+4h] [ebp-10h] BYREF + int v9[2]; // [esp+Ch] [ebp-8h] BYREF + + v8[0] = a2; + v8[1] = a3; + v9[0] = a5; + v9[1] = a6; + result = std::`anonymous namespace'::ucs4_in(v8, v9, 0x10FFFFu, 0); + *a4 = v8[0]; + *a7 = v9[0]; + return result; +} + +//----- (004817E0) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + int a1, + unsigned int *a2, + unsigned int *a3, + unsigned int **a4, + _BYTE *a5, + _BYTE *a6, + _DWORD *a7) +{ + _BYTE *v7; // eax + unsigned int *v8; // ebx + int v10; // ecx + _BYTE *v11[4]; // [esp+8h] [ebp-10h] BYREF + + v7 = a5; + v8 = a2; + v11[0] = a5; + v11[1] = a6; + if ( a2 == a3 ) + { + v10 = 0; + } + else + { + do + { + if ( *v8 > 0x10FFFF ) + { + v7 = v11[0]; + v10 = 2; + goto LABEL_7; + } + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v11, *v8) ) + { + v7 = v11[0]; + v10 = 1; + goto LABEL_7; + } + ++v8; + } + while ( a3 != v8 ); + v7 = v11[0]; + v10 = 0; + } +LABEL_7: + *a4 = v8; + *a7 = v7; + return v10; +} + +//----- (00481870) -------------------------------------------------------- +unsigned __int8 *__stdcall std::codecvt::do_length( + int a1, + unsigned __int8 *a2, + unsigned __int8 *a3, + int a4) +{ + int v4; // ebx + bool v5; // dl + bool v6; // al + unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF + + v8[0] = a2; + v8[1] = a3; + if ( !a4 ) + return 0; + v4 = a4 - 1; + do + { + v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; + v6 = v4-- != 0; + } + while ( v6 && v5 ); + return (unsigned __int8 *)(v8[0] - a2); +} + +//----- (004818D0) -------------------------------------------------------- +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) +{ + *a4 = a2; + return 3; +} + +//----- (004818F0) -------------------------------------------------------- +int __stdcall std::codecvt::do_in( + int a1, + unsigned __int8 *a2, + unsigned __int8 *a3, + unsigned __int8 **a4, + int a5, + int a6, + int *a7) +{ + unsigned __int8 *v7; // ebx + unsigned __int8 *v8; // eax + int v9; // ecx + int v10; // edx + _WORD *v11; // eax + unsigned int v12; // eax + __int16 v13; // dx + char v14; // al + int v15; // ebx + unsigned __int8 *v17; // [esp+0h] [ebp-14h] BYREF + unsigned __int8 *v18; // [esp+4h] [ebp-10h] + _WORD *v19; // [esp+8h] [ebp-Ch] BYREF + _WORD *v20; // [esp+Ch] [ebp-8h] + + v7 = a2; + v8 = a3; + v9 = a5; + v10 = a6; + v17 = a2; + v18 = a3; + v19 = (_WORD *)a5; + v20 = (_WORD *)a6; + if ( a2 == a3 ) + { +LABEL_13: + v15 = 0; + } + else + { + while ( 1 ) + { + if ( v10 == v9 ) + { + v8 = v17; + v15 = 0; + goto LABEL_14; + } + v12 = std::`anonymous namespace'::read_utf8_code_point(&v17, 0x10FFFFu); + v13 = v12; + if ( v12 == -2 ) + { + v8 = v17; + v9 = (int)v19; + v15 = 1; + goto LABEL_14; + } + if ( v12 > 0x10FFFF ) + break; + if ( v12 <= 0xFFFF ) + { + v11 = v19; + v9 = (int)v20; + if ( v19 == v20 ) + goto LABEL_12; + v9 = (int)++v19; + *v11 = v13; + } + else + { + v14 = std::`anonymous namespace'::write_utf16_code_point((int)&v19, v12, 1); + v9 = (int)v19; + if ( !v14 ) + { +LABEL_12: + v8 = v7; + v15 = 1; + goto LABEL_14; + } + } + v7 = v17; + v8 = v18; + if ( v17 == v18 ) + goto LABEL_13; + v10 = (int)v20; + } + v8 = v17; + v9 = (int)v19; + v15 = 2; + } +LABEL_14: + *a4 = v8; + *a7 = v9; + return v15; +} + +//----- (004819E0) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + int a1, + unsigned __int16 *a2, + unsigned __int16 *a3, + unsigned __int16 **a4, + int a5, + int a6, + int *a7) +{ + unsigned __int16 *v7; // ebx + int v8; // edx + unsigned int v9; // eax + int v10; // eax + int v11; // edi + unsigned int v12; // edx + int result; // eax + int v14[5]; // [esp+8h] [ebp-14h] BYREF + + v7 = a2; + v8 = a5; + v14[1] = a6; + v14[0] = a5; + v9 = a3 - a2; + if ( a2 != a3 ) + { + while ( 1 ) + { + v12 = *v7; + if ( v12 - 55296 <= 0x3FF ) + { + if ( v9 <= 1 ) + goto LABEL_11; + v10 = v7[1]; + if ( (unsigned int)(v10 - 56320) > 0x3FF ) + { +LABEL_13: + v8 = v14[0]; + result = 2; + goto LABEL_12; + } + v11 = 2; + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point( + (int)v14, + v10 + (v12 << 10) - 56613888) ) + goto LABEL_10; + } + else + { + if ( v12 - 56320 <= 0x3FF ) + goto LABEL_13; + v11 = 1; + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)v14, v12) ) + { +LABEL_10: + v8 = v14[0]; + result = 1; + goto LABEL_12; + } + } + v7 += v11; + v9 = a3 - v7; + if ( a3 == v7 ) + { +LABEL_11: + v8 = v14[0]; + result = 0; + goto LABEL_12; + } + } + } + result = 0; +LABEL_12: + *a4 = v7; + *a7 = v8; + return result; +} + +//----- (00481AD0) -------------------------------------------------------- +unsigned __int8 *__stdcall std::codecvt::do_length( + int a1, + unsigned __int8 *a2, + unsigned __int8 *a3, + unsigned int a4) +{ + int v4; // ebp + int i; // ebx + unsigned int utf8_code; // eax + unsigned __int8 *v8[6]; // [esp+8h] [ebp-18h] BYREF + + v4 = 1; + v8[0] = a2; + v8[1] = a3; + if ( a4 > 1 ) + { + for ( i = 0; ; ++i ) + { + utf8_code = std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu); + if ( utf8_code > 0x10FFFF ) + break; + if ( utf8_code > 0xFFFF ) + i = v4; + v4 = i + 2; + if ( a4 <= i + 2 ) + goto LABEL_9; + } + return (unsigned __int8 *)(v8[0] - a2); + } +LABEL_9: + if ( a4 != v4 ) + return (unsigned __int8 *)(v8[0] - a2); + std::`anonymous namespace'::read_utf8_code_point(v8, 0xFFFFu); + return (unsigned __int8 *)(v8[0] - a2); +} + +//----- (00481B70) -------------------------------------------------------- +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) +{ + *a4 = a2; + return 3; +} + +//----- (00481B90) -------------------------------------------------------- +int std::codecvt::do_encoding() +{ + return 0; +} + +//----- (00481BA0) -------------------------------------------------------- +int std::codecvt::do_max_length() +{ + return 4; +} + +//----- (00481BB0) -------------------------------------------------------- +int std::codecvt::do_always_noconv() +{ + return 0; +} + +//----- (00481BC0) -------------------------------------------------------- +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) +{ + int result; // eax + int v8[2]; // [esp+8h] [ebp-10h] BYREF + int v9[2]; // [esp+10h] [ebp-8h] BYREF + + v8[0] = a2; + v8[1] = a3; + v9[0] = a5; + v9[1] = a6; + result = std::`anonymous namespace'::utf16_in(v8, v9, 0x10FFFFu, 1, 0); + *a4 = v8[0]; + *a7 = v9[0]; + return result; +} + +//----- (00481C20) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + int a1, + unsigned __int16 *a2, + unsigned __int16 *a3, + unsigned __int16 **a4, + _BYTE *a5, + _BYTE *a6, + _BYTE **a7) +{ + int result; // eax + unsigned __int16 *v8[2]; // [esp+4h] [ebp-10h] BYREF + _BYTE *v9[2]; // [esp+Ch] [ebp-8h] BYREF + + v8[0] = a2; + v8[1] = a3; + v9[0] = a5; + v9[1] = a6; + result = std::`anonymous namespace'::utf16_out(v8, v9, 0x10FFFFu, 0); + *a4 = v8[0]; + *a7 = v9[0]; + return result; +} + +//----- (00481C80) -------------------------------------------------------- +int __stdcall std::codecvt::do_length(int a1, int a2, unsigned __int8 *a3, unsigned int a4) +{ + std::`anonymous namespace'::utf16_span(a4, a3, 0x10FFFFu, 0); + return 0; +} + +//----- (00481CB0) -------------------------------------------------------- +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) +{ + *a4 = a2; + return 3; +} + +//----- (00481CD0) -------------------------------------------------------- +int std::codecvt::do_max_length() +{ + return 1; +} + +//----- (00481CE0) -------------------------------------------------------- +int std::codecvt::do_always_noconv() +{ + return 1; +} + +//----- (00481CF0) -------------------------------------------------------- +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) +{ + *a4 = a2; + *a7 = a5; + return 3; +} + +//----- (00481D10) -------------------------------------------------------- +unsigned int __stdcall std::codecvt::do_length(int a1, int a2, int a3, unsigned int a4) +{ + unsigned int result; // eax + + result = a3 - a2; + if ( a3 - a2 > a4 ) + return a4; + return result; +} + +//----- (00481D30) -------------------------------------------------------- +BOOL std::codecvt::do_encoding() +{ + return ___mb_cur_max == 1; +} + +//----- (00481D40) -------------------------------------------------------- +int std::codecvt::do_max_length() +{ + return ___mb_cur_max; +} + +//----- (00481D50) -------------------------------------------------------- +int std::codecvt::do_always_noconv() +{ + return 0; +} + +//----- (00481D60) -------------------------------------------------------- +int __stdcall std::codecvt::do_in( + unsigned int *a1, + char *a2, + unsigned int a3, + char **a4, + wchar_t *a5, + unsigned int a6, + wchar_t **a7) +{ + char *v7; // esi + wchar_t *v8; // edi + const char *SrcCh; // edi + wchar_t *DstCh; // esi + size_t v11; // eax + int result; // eax + mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF + wchar_t *v14; // [esp+50h] [ebp+14h] + wchar_t *v15; // [esp+50h] [ebp+14h] + wchar_t *v16; // [esp+50h] [ebp+14h] + + v7 = a2; + v8 = a5; + State._Wchar = *a1; + if ( (unsigned int)a5 >= a6 || (unsigned int)a2 >= a3 ) + { +LABEL_12: + result = (unsigned int)v7 < a3; + } + else + { + SrcCh = a2; + DstCh = a5; + while ( 1 ) + { + v11 = mbrtowc(DstCh, SrcCh, a3 - (_DWORD)SrcCh, &State); + if ( v11 == -1 ) + { + v14 = DstCh; + result = 2; + v7 = (char *)SrcCh; + v8 = v14; + goto LABEL_13; + } + if ( v11 == -2 ) + break; + if ( !v11 ) + { + *DstCh = 0; + v11 = 1; + } + SrcCh += v11; + ++DstCh; + *a1 = State._Wchar; + if ( a3 <= (unsigned int)SrcCh || a6 <= (unsigned int)DstCh ) + { + v15 = DstCh; + v7 = (char *)SrcCh; + v8 = v15; + goto LABEL_12; + } + } + v16 = DstCh; + result = 1; + v7 = (char *)SrcCh; + v8 = v16; + } +LABEL_13: + *a4 = v7; + *a7 = v8; + return result; +} + +//----- (00481E50) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + unsigned int *a1, + wchar_t *a2, + unsigned int a3, + wchar_t **a4, + char *a5, + unsigned int a6, + char **a7) +{ + wchar_t *v7; // edi + char *v8; // ebx + unsigned int Size; // eax + int result; // eax + size_t v11; // eax + char *Dest; // [esp+0h] [ebp-4Ch] + mbstate_t Src; // [esp+24h] [ebp-28h] BYREF + + v7 = a2; + v8 = a5; + Src._Wchar = *a1; + if ( (int)(___mb_cur_max * ((int)(a3 - (_DWORD)a2) >> 1) - (a6 - (_DWORD)a5)) <= 0 ) + { + if ( a3 <= (unsigned int)a2 ) + { +LABEL_18: + result = 0; + goto LABEL_12; + } + while ( 1 ) + { + v11 = wcrtomb(v8, *v7, &Src); + if ( v11 == -1 ) + break; + v8 += v11; + ++v7; + *a1 = Src._Wchar; + if ( a3 <= (unsigned int)v7 ) + goto LABEL_18; + } + } + else + { + if ( a3 <= (unsigned int)a2 || a6 <= (unsigned int)a5 ) + { +LABEL_11: + result = (unsigned int)v7 < a3; + goto LABEL_12; + } + for ( Size = wcrtomb((char *)&Src._State + 1, *a2, &Src); Size != -1; Size = wcrtomb( + (char *)&Src._State + 1, + *v7, + &Src) ) + { + if ( a6 - (unsigned int)v8 < Size ) + { + result = 1; + goto LABEL_12; + } + Dest = v8; + ++v7; + v8 += Size; + memcpy(Dest, (char *)&Src._State + 1, Size); + *a1 = Src._Wchar; + if ( a3 <= (unsigned int)v7 || a6 <= (unsigned int)v8 ) + goto LABEL_11; + } + } + result = 2; +LABEL_12: + *a4 = v7; + *a7 = v8; + return result; +} + +//----- (00481F80) -------------------------------------------------------- +int __stdcall std::codecvt::do_length(unsigned int *a1, char *a2, unsigned int a3, int a4) +{ + int v4; // esi + const char *SrcCh; // ebp + int v6; // edi + size_t v7; // eax + mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF + + v4 = 0; + State._Wchar = *a1; + if ( a4 && (unsigned int)a2 < a3 ) + { + SrcCh = a2; + v6 = a4; + do + { + v7 = mbrtowc(0, SrcCh, a3 - (_DWORD)SrcCh, &State); + if ( v7 > 0xFFFFFFFD ) + break; + if ( !v7 ) + v7 = 1; + SrcCh += v7; + v4 += v7; + --v6; + *a1 = State._Wchar; + if ( a3 <= (unsigned int)SrcCh ) + break; + } + while ( v6 ); + } + return v4; +} + +//----- (00482010) -------------------------------------------------------- +int __stdcall std::collate::_M_compare(char *String1, char *String2) +{ + int v2; // eax + + v2 = strcoll(String1, String2); + return (v2 >> 30) | (v2 != 0); +} + +//----- (00482040) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::collate::do_compare(int a1, _BYTE *a2, int a3, int a4) +{ + char *v4; // ebx + char *v5; // esi + char *v6; // ebx + char *v7; // esi + int v8; // edi + char *v9; // eax + char *v10; // ecx + int v12; // eax + int v13; // eax + char *v14; // [esp+Ch] [ebp-40h] + char *v15; // [esp+10h] [ebp-3Ch] + char *v16; // [esp+14h] [ebp-38h] + char *v17; // [esp+18h] [ebp-34h] + char v18; // [esp+2Bh] [ebp-21h] BYREF + _BYTE *retaddr; // [esp+4Ch] [ebp+0h] + + v16 = (char *)std::string::_S_construct(retaddr, a1); + v4 = v16; + v17 = (char *)std::string::_S_construct(a2, a3); + v5 = v17; + v14 = &v4[*((_DWORD *)v4 - 3)]; + v15 = &v17[*((_DWORD *)v17 - 3)]; + while ( 1 ) + { + v8 = std::collate::_M_compare(v4, v5); + if ( v8 ) + goto LABEL_8; + v6 = &v4[strlen(v4)]; + v7 = &v5[strlen(v5)]; + if ( v14 == v6 && v15 == v7 ) + goto LABEL_8; + if ( v14 == v6 ) + break; + if ( v15 == v7 ) + { + v8 = 1; +LABEL_8: + v9 = v17; + v10 = v17 - 12; + if ( v17 == (char *)&unk_51641C ) + goto LABEL_9; + goto LABEL_12; + } + v4 = v6 + 1; + v5 = v7 + 1; + } + v9 = v17; + v8 = -1; + v10 = v17 - 12; + if ( v17 == (char *)&unk_51641C ) + goto LABEL_9; +LABEL_12: + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)v9 - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)v17 - 1); + *((_DWORD *)v17 - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v10, (int)&v18); +LABEL_9: + if ( v16 != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF); + } + else + { + v13 = *((_DWORD *)v16 - 1); + *((_DWORD *)v16 - 1) = v13 - 1; + } + if ( v13 <= 0 ) + std::string::_Rep::_M_destroy(v16 - 12, (int)&v18); + } + return v8; +} +// 4821EB: positive sp value 4 has been found +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00482200) -------------------------------------------------------- +size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) +{ + return strxfrm(Destination, Source, MaxCount); +} + +//----- (00482230) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +unsigned int **__thiscall std::collate::do_transform(unsigned int **this, int a2, _BYTE *a3, int a4) +{ + unsigned int v5; // edi + char *v6; // esi + size_t i; // eax + unsigned int *v8; // eax + int v9; // edx + char *v10; // esi + int v12; // eax + unsigned int v13; // [esp+0h] [ebp-58h] + unsigned int v14; // [esp+4h] [ebp-54h] + char *Str; // [esp+1Ch] [ebp-3Ch] + int v16; // [esp+20h] [ebp-38h] + char *v17; // [esp+24h] [ebp-34h] + std::string *v18; // [esp+28h] [ebp-30h] + char *v19; // [esp+2Ch] [ebp-2Ch] + int v20[6]; // [esp+3Fh] [ebp-19h] BYREF + + *this = (unsigned int *)&unk_51641C; + Str = (char *)std::string::_S_construct(a3, a4); + v5 = 2 * (a4 - (_DWORD)a3); + v17 = &Str[*((_DWORD *)Str - 3)]; + v19 = (char *)operator new[](v5); + v6 = Str; + for ( i = std::collate::_M_transform(v19, Str, v5); ; i = std::collate::_M_transform(v19, v6, v5) ) + { + if ( v5 <= i ) + { + v5 = i + 1; + operator delete[](v19); + v19 = (char *)operator new[](v5); + i = std::collate::_M_transform(v19, v6, v5); + } + std::string::append(this, (std::string *)v19, i, v14); + v10 = &v6[strlen(v6)]; + if ( v17 == v10 ) + break; + v6 = v10 + 1; + v16 = *(*this - 3); + v18 = (std::string *)(v16 + 1); + if ( v16 + 1 > *(*this - 2) || (int)*(*this - 1) > 0 ) + std::string::reserve(this, v18, v13); + *((_BYTE *)*this + *(*this - 3)) = 0; + v8 = *this; + v9 = (int)(*this - 3); + if ( *this != (unsigned int *)&unk_51641C ) + { + *(v8 - 1) = 0; + *(v8 - 3) = (unsigned int)v18; + *(_BYTE *)(v9 + v16 + 13) = 0; + } + } + operator delete[](v19); + if ( Str != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)Str - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)Str - 1); + *((_DWORD *)Str - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(Str - 12, (int)v20); + } + return this; +} +// 482407: positive sp value 4 has been found +// 4822A5: variable 'v13' is possibly undefined +// 48231E: variable 'v14' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; +// 482230: using guessed type int var_19[6]; + +//----- (00482430) -------------------------------------------------------- +int __thiscall std::collate::hash(void *this, char *a1, char *a2) +{ + int (__stdcall *v3)(char *, char *); // eax + + v3 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); + if ( v3 == std::collate::do_hash ) + return std::collate::do_hash(a1, a2); + else + return v3(a1, a2); +} + +//----- (00482450) -------------------------------------------------------- +int __fastcall std::collate::compare(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (00482460) -------------------------------------------------------- +int __stdcall std::collate::do_hash(char *a1, char *a2) +{ + char *v2; // edx + int result; // eax + int v4; // ecx + + v2 = a1; + result = 0; + if ( a1 < a2 ) + { + do + { + v4 = *v2++; + result = v4 + __ROL4__(result, 7); + } + while ( a2 != v2 ); + } + return result; +} + +//----- (00482490) -------------------------------------------------------- +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) +{ + (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); + return this; +} + +//----- (004824C0) -------------------------------------------------------- +int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) +{ + int v2; // eax + + v2 = wcscoll(String1, String2); + return (v2 >> 30) | (v2 != 0); +} + +//----- (004824F0) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::collate::do_compare(int a1, const wchar_t *a2, int a3, int a4) +{ + wchar_t *v4; // ebx + wchar_t *v5; // esi + wchar_t *v6; // ebx + wchar_t *v7; // esi + int v8; // edi + wchar_t *v9; // eax + wchar_t *v10; // ecx + int v12; // eax + int v13; // eax + wchar_t *v14; // [esp+Ch] [ebp-40h] + wchar_t *v15; // [esp+10h] [ebp-3Ch] + wchar_t *v16; // [esp+14h] [ebp-38h] + wchar_t *v17; // [esp+18h] [ebp-34h] + char v18; // [esp+2Bh] [ebp-21h] BYREF + const wchar_t *retaddr; // [esp+4Ch] [ebp+0h] + + v16 = (wchar_t *)std::wstring::_S_construct(retaddr, a1); + v4 = v16; + v5 = (wchar_t *)std::wstring::_S_construct(a2, a3); + v17 = v5; + v14 = &v4[*((_DWORD *)v4 - 3)]; + v15 = &v5[*((_DWORD *)v5 - 3)]; + while ( 1 ) + { + v8 = std::collate::_M_compare(v4, v5); + if ( v8 ) + goto LABEL_8; + v6 = &v4[wcslen(v4)]; + v7 = &v5[wcslen(v5)]; + if ( v14 == v6 && v15 == v7 ) + goto LABEL_8; + if ( v14 == v6 ) + break; + if ( v15 == v7 ) + { + v8 = 1; +LABEL_8: + v9 = v17; + v10 = v17 - 6; + if ( v17 == (wchar_t *)&unk_51640C ) + goto LABEL_9; + goto LABEL_12; + } + v4 = v6 + 1; + v5 = v7 + 1; + } + v9 = v17; + v8 = -1; + v10 = v17 - 6; + if ( v17 == (wchar_t *)&unk_51640C ) + goto LABEL_9; +LABEL_12: + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)v9 - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)v17 - 1); + *((_DWORD *)v17 - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::wstring::_Rep::_M_destroy(v10, (int)&v18); +LABEL_9: + if ( v16 != (wchar_t *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF); + } + else + { + v13 = *((_DWORD *)v16 - 1); + *((_DWORD *)v16 - 1) = v13 - 1; + } + if ( v13 <= 0 ) + std::wstring::_Rep::_M_destroy(v16 - 6, (int)&v18); + } + return v8; +} +// 482697: positive sp value 4 has been found +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004826A0) -------------------------------------------------------- +size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) +{ + return wcsxfrm(Destination, Source, MaxCount); +} + +//----- (004826D0) -------------------------------------------------------- +void **__thiscall std::collate::do_transform(void **this, int a2, const wchar_t *a3, int a4) +{ + size_t v4; // edi + wchar_t *v5; // ebx + wchar_t *v6; // esi + _WORD *v7; // eax + size_t v8; // eax + wchar_t *v9; // ebx + int v11; // eax + wchar_t *String; // [esp+10h] [ebp-38h] + wchar_t *v13; // [esp+14h] [ebp-34h] + char *v14; // [esp+18h] [ebp-30h] + int v16[6]; // [esp+2Fh] [ebp-19h] BYREF + + *this = &unk_51640C; + v4 = a4 - (_DWORD)a3; + String = (wchar_t *)std::wstring::_S_construct(a3, a4); + v13 = &String[*((_DWORD *)String - 3)]; + if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v5 = String; + v6 = (wchar_t *)operator new[](2 * v4); + while ( 1 ) + { + v8 = std::collate::_M_transform(v6, v5, v4); + if ( v4 <= v8 ) + { + v4 = v8 + 1; + operator delete[](v6); + if ( v4 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v6 = (wchar_t *)operator new[](2 * v4); + v8 = std::collate::_M_transform(v6, v5, v4); + } + std::wstring::append(this, v6, v8); + v9 = &v5[wcslen(v5)]; + if ( v13 == v9 ) + break; + v5 = v9 + 1; + v14 = (char *)(*((_DWORD *)*this - 3) + 1); + if ( (unsigned int)v14 > *((_DWORD *)*this - 2) || *((int *)*this - 1) > 0 ) + std::wstring::reserve(this, v14); + v7 = *this; + v7[*((_DWORD *)*this - 3)] = 0; + if ( v7 != (_WORD *)&unk_51640C ) + { + *((_DWORD *)v7 - 1) = 0; + *((_DWORD *)v7 - 3) = v14; + v7[(_DWORD)v14] = 0; + } + } + operator delete[](v6); + if ( String != (wchar_t *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v11 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v11 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v11 - 1; + } + if ( v11 <= 0 ) + std::wstring::_Rep::_M_destroy(String - 6, (int)v16); + } + return this; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4826D0: using guessed type int var_19[6]; + +//----- (004828F0) -------------------------------------------------------- +int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2) +{ + int (__stdcall *v3)(unsigned __int16 *, unsigned int); // eax + + v3 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); + if ( v3 == std::collate::do_hash ) + return std::collate::do_hash(a1, a2); + else + return v3(a1, a2); +} + +//----- (00482910) -------------------------------------------------------- +int __fastcall std::collate::compare(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (00482920) -------------------------------------------------------- +int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) +{ + unsigned __int16 *v2; // edx + int result; // eax + int v4; // ecx + + v2 = a1; + for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) + v4 = *v2++; + return result; +} + +//----- (00482950) -------------------------------------------------------- +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) +{ + (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); + return this; +} + +//----- (00482980) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + unsigned int *a7) +{ + unsigned int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // di + char v12; // dl + char v13; // al + unsigned int v14; // eax + unsigned int v15; // edx + unsigned int v16; // eax + char v17; // dl + unsigned int v18; // eax + _DWORD *v19; // ecx + char v20; // bl + unsigned int v21; // edi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + bool v28; // zf + int v29; // eax + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + bool v33; // di + char v34; // di + size_t v35; // edi + int *v36; // eax + bool v38; // al + char *v39; // eax + char *v40; // eax + unsigned int v41; // edx + _DWORD *v42; // eax + _BYTE *v43; // eax + int v44; // eax + unsigned int v45; // eax + unsigned int v46; // edx + unsigned int v47; // eax + bool v48; // di + char v49; // di + char *v50; // eax + unsigned int v51; // edx + char v52; // cl + int v53; // eax + char *v54; // eax + char *v55; // eax + std::locale::_Impl *v56; // eax + std::locale::_Impl *v57; // esi + int v58; // eax + _DWORD *v59; // eax + _DWORD *v60; // eax + int v61; // eax + _DWORD *v62; // eax + int v63; // eax + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + char v71; // cl + int v72; // eax + void (__cdecl *v73)(void *); // [esp+4h] [ebp-84h] + unsigned int v74; // [esp+8h] [ebp-80h] + size_t MaxCount; // [esp+1Ch] [ebp-6Ch] + bool v76; // [esp+22h] [ebp-66h] + char v77; // [esp+23h] [ebp-65h] + int Buf; // [esp+24h] [ebp-64h] + void *Bufa; // [esp+24h] [ebp-64h] + unsigned int v80; // [esp+28h] [ebp-60h] + char v81; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + bool v83; // [esp+30h] [ebp-58h] + int v84; // [esp+34h] [ebp-54h] + unsigned int v85; // [esp+34h] [ebp-54h] + int v86; // [esp+38h] [ebp-50h] + unsigned __int8 v87; // [esp+3Ch] [ebp-4Ch] + unsigned __int8 v88; // [esp+3Ch] [ebp-4Ch] + char v89; // [esp+3Ch] [ebp-4Ch] + size_t v90; // [esp+3Ch] [ebp-4Ch] + _DWORD *v91; // [esp+40h] [ebp-48h] + int *v92; // [esp+44h] [ebp-44h] + bool v93; // [esp+44h] [ebp-44h] + char v94; // [esp+44h] [ebp-44h] + unsigned __int8 v95; // [esp+44h] [ebp-44h] + bool v96; // [esp+44h] [ebp-44h] + std::locale::facet *v97; // [esp+48h] [ebp-40h] + unsigned int v98; // [esp+48h] [ebp-40h] + bool v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v91 = a3; + v97 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + v92 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + if ( !v8 ) + { + v56 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v73); + *((_DWORD *)v56 + 1) = 0; + v57 = v56; + *(_DWORD *)v56 = &off_538BD4; + *((_DWORD *)v56 + 2) = 0; + *((_DWORD *)v56 + 3) = 0; + *((_BYTE *)v56 + 16) = 0; + *((_DWORD *)v56 + 5) = 0; + *((_DWORD *)v56 + 6) = 0; + *((_DWORD *)v56 + 7) = 0; + *((_DWORD *)v56 + 8) = 0; + *((_WORD *)v56 + 18) = 0; + *((_BYTE *)v56 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v56, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v57, v97, v74); + v8 = *v92; + } + v98 = 8; + v9 = *(_DWORD *)(a5 + 12) & 0x4A; + v84 = v9; + if ( v9 != 64 ) + v98 = v9 == 8 ? 16 : 10; + v93 = a2 == -1 && a1 != 0; + if ( v93 ) + { + if ( a1[2] >= a1[3] ) + { + v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v94 = v69 == -1 && v93; + v7 = v69 == -1 ? 0 : (unsigned int)a1; + } + else + { + v94 = 0; + } + } + else + { + v94 = a2 == -1; + } + v99 = a4 == -1; + if ( v99 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v68 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v68 == -1 && v99 && a3 != 0; + v91 = v68 == -1 ? 0 : a3; + } + else + { + v10 = 0; + } + } + else + { + v10 = a4 == -1; + } + if ( v94 == v10 ) + { + v76 = 0; + v11 = 0; + v82 = 1; + v86 = 0; + v96 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v54 = *(char **)(v7 + 8); + if ( (unsigned int)v54 >= *(_DWORD *)(v7 + 12) ) + { + v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v70 != -1 ? v70 : -1; + v7 &= (v70 == -1) - 1; + } + else + { + v11 = *v54; + } + } + else + { + v11 = a2; + } + v12 = *(_BYTE *)(v8 + 74); + v13 = *(_BYTE *)(v8 + 16); + v76 = v12 == v11; + if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) + { + if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) + { + v14 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + if ( v14 >= v15 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v16 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + } + else + { + v16 = v14 + 1; + *(_DWORD *)(v7 + 8) = v16; + } + v95 = 0; + if ( v16 >= v15 ) + { + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v95 - 1; + } + if ( v99 && v91 != 0 ) + { + if ( v91[2] >= v91[3] ) + { + v72 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v17 = v72 == -1 && v99 && v91 != 0; + v91 = v72 == -1 ? 0 : v91; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v95 == v17 ) + { + v18 = v98; + v82 = 1; + v86 = 0; + v96 = 0; + if ( v98 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v11 = -1; + if ( v7 ) + { + v55 = *(char **)(v7 + 8); + if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v64 != -1 ? v64 : -1; + v7 &= (v64 == -1) - 1; + } + else + { + v11 = *v55; + } + } + v13 = *(_BYTE *)(v8 + 16); + } + } + else + { + v76 = 0; + } + v86 = 0; + v19 = (_DWORD *)v7; + v20 = v11; + v96 = 0; + v21 = (unsigned int)v19; + while ( 1 ) + { + if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) + { +LABEL_111: + v42 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v42; + goto LABEL_43; + } + if ( *(_BYTE *)(v8 + 78) != v20 ) + { + if ( !v96 ) + goto LABEL_111; +LABEL_33: + if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) + { + v59 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v96 = 1; + v7 = (unsigned int)v59; + goto LABEL_43; + } + if ( v84 != 0 && v98 != 16 ) + { + v82 = 0; + v60 = (_DWORD *)v21; + v11 = v20; + v7 = (unsigned int)v60; + v96 = 1; + MaxCount = v98; + Buf = v98; + goto LABEL_45; + } + v86 = 0; + v96 = 0; + v98 = 16; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v38 = !v96 || v98 == 10; + if ( !v38 ) + goto LABEL_33; + v96 = v84 == 0 || v98 == 8; + if ( !v96 ) + { + ++v86; + v96 = v38; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v86 = 0; + v98 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v87 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v87 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v99 && v91 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v87 - 1; + v25 = v99 && v91 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v91[2] >= v91[3] ) + { + v83 = v25; + v53 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v26 = v53 == -1 && v83; + v91 = v53 == -1 ? 0 : v91; +LABEL_41: + if ( v26 == v87 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v87 ) + { +LABEL_42: + v27 = (_DWORD *)v21; + v11 = v20; + v82 = 1; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v39 = *(char **)(v21 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) + { + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v61 != -1 ? v61 : -1; + v21 &= (v61 == -1) - 1; + } + else + { + v20 = *v39; + } + } + if ( !v96 ) + break; + v13 = *(_BYTE *)(v8 + 16); + } + v62 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v62; +LABEL_43: + v18 = v98; + if ( v98 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v28 = *(_BYTE *)(v8 + 16) == 0; + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( !v28 ) + std::string::reserve(&v101, 0x20u); + v80 = 0xFFFFFFFF / v98; + v77 = *(_BYTE *)(v8 + 100); + if ( !v77 ) + { + if ( v82 ) + { + v71 = v82; + v35 = v102; + v81 = 0; + v82 = 0; + v36 = (int *)v101; + v77 = v71; + v85 = 0; + goto LABEL_61; + } + v81 = 0; + v85 = 0; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v11 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v11 - 97) > 5u ) + { + if ( (unsigned __int8)(v11 - 65) > 5u ) + goto LABEL_110; + v29 = v11 - 55; + goto LABEL_54; + } + v29 = v11 - 87; + if ( v80 >= v85 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v81 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v88 = 0; + if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) + goto LABEL_87; +LABEL_57: + v33 = v99 && v91 != 0; + if ( !v33 ) + goto LABEL_58; +LABEL_88: + if ( v91[2] >= v91[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v58 == -1 ? 0 : v91; + v34 = v58 == -1 && v33; + goto LABEL_59; + } + if ( !v88 ) + { +LABEL_60: + v35 = v102; + v36 = (int *)v101; + v77 = 1; + goto LABEL_61; + } + } + else + { + if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) + goto LABEL_110; +LABEL_53: + v29 = v11 - 48; +LABEL_54: + if ( v80 < v85 ) + goto LABEL_55; +LABEL_85: + v31 = *(_DWORD *)(v7 + 12); + v81 |= ~v29 < v98 * v85; + v85 = v98 * v85 + v29; + v30 = *(_DWORD *)(v7 + 8); + ++v86; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v88 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v31 > v32 ) + goto LABEL_57; +LABEL_87: + v88 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v88 - 1; + v33 = v99 && v91 != 0; + if ( v33 ) + goto LABEL_88; +LABEL_58: + v34 = a4 == -1; +LABEL_59: + if ( v34 == v88 ) + goto LABEL_60; + } + if ( v7 ) + { + v40 = *(char **)(v7 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v11 = *v40; + } + } + else + { + v11 = -1; + } + continue; + } + } + if ( v82 ) + { + v35 = v102; + v85 = 0; + v81 = 0; + v36 = (int *)v101; + v77 = v82; + v82 = 0; + goto LABEL_61; + } + v81 = 0; + Bufa = (void *)(v8 + 78); + v85 = 0; + while ( 2 ) + { + if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) + { + if ( v11 == *(_BYTE *)(v8 + 36) || (v43 = memchr(Bufa, v11, MaxCount)) == 0 ) + { +LABEL_110: + v35 = v102; + v36 = (int *)v101; + v77 = 0; + goto LABEL_61; + } + v44 = v43 - (_BYTE *)Bufa; + if ( v44 > 15 ) + v44 -= 6; + if ( v80 >= v85 ) + { + v81 |= ~v44 < v98 * v85; + ++v86; + v85 = v98 * v85 + v44; + goto LABEL_122; + } + v46 = *(_DWORD *)(v7 + 12); + v81 = v77; + v45 = *(_DWORD *)(v7 + 8); + if ( v45 >= v46 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v47 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v47 = v45 + 1; + *(_DWORD *)(v7 + 8) = v47; +LABEL_124: + v89 = 0; + if ( v46 <= v47 ) + { + v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v89 = v67 != -1 ? 0 : v77; + v7 &= (v67 == -1) - 1; + } + v48 = v99 && v91 != 0; + if ( v48 ) + { + if ( v91[2] >= v91[3] ) + { + v66 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v66 == -1 ? 0 : v91; + v49 = v66 == -1 && v48; + } + else + { + v49 = 0; + } + } + else + { + v49 = a4 == -1; + } + if ( v89 == v49 ) + { + v35 = v102; + v36 = (int *)v101; + goto LABEL_61; + } + if ( v7 ) + { + v50 = *(char **)(v7 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v7 + 12) ) + { + v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v63 != -1 ? v63 : -1; + v7 &= (v63 == -1) - 1; + } + else + { + v11 = *v50; + } + } + else + { + v11 = -1; + } + continue; + } + break; + } + v35 = v102; + v36 = (int *)v101; + if ( v86 ) + { + v90 = v102 + 1; + if ( v101 == v103 ) + v51 = 15; + else + v51 = v103[0]; + if ( v90 > v51 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v36 = (int *)v101; + } + v52 = v86; + v86 = 0; + *((_BYTE *)v36 + v35) = v52; + v102 = v90; + *((_BYTE *)v101 + v90) = 0; +LABEL_122: + v45 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + if ( v45 >= v46 ) + goto LABEL_131; + goto LABEL_123; + } + v77 = 0; + v82 = *(_BYTE *)(v8 + 16); +LABEL_61: + if ( v35 ) + { + v100 = v35 + 1; + if ( v36 == v103 ) + v41 = 15; + else + v41 = v103[0]; + if ( v100 > v41 ) + { + std::string::_M_mutate((int)&v101, v35, 0, 0, 1u); + v36 = (int *)v101; + } + *((_BYTE *)v36 + v35) = v86; + v102 = v35 + 1; + *((_BYTE *)v101 + v100) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v36 = (int *)v101; + if ( v96 || v102 | v86 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + *a6 = 4; + } + else + { + if ( !v86 && !v96 ) + goto LABEL_64; +LABEL_103: + if ( v82 ) + goto LABEL_64; + if ( v81 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v76 ) + v85 = -v85; + *a7 = v85; + } + } + if ( v77 ) + *a6 |= 2u; + if ( v36 != v103 ) + operator delete(v36); + return v7; +} +// 4832B7: variable 'v73' is possibly undefined +// 483320: variable 'v74' is possibly undefined +// 5165C8: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (004836A0) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int *a7) +{ + unsigned int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // di + char v12; // dl + char v13; // al + unsigned int v14; // eax + unsigned int v15; // edx + unsigned int v16; // eax + char v17; // dl + unsigned int v18; // eax + _DWORD *v19; // ecx + char v20; // bl + unsigned int v21; // edi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + bool v28; // zf + int v29; // eax + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + bool v33; // di + char v34; // di + size_t v35; // edi + int *v36; // eax + bool v38; // al + char *v39; // eax + char *v40; // eax + unsigned int v41; // edx + int v42; // edx + _DWORD *v43; // eax + _BYTE *v44; // eax + int v45; // eax + unsigned int v46; // eax + unsigned int v47; // edx + unsigned int v48; // eax + bool v49; // di + char v50; // di + char *v51; // eax + unsigned int v52; // edx + char v53; // cl + int v54; // eax + char *v55; // eax + char *v56; // eax + std::locale::_Impl *v57; // eax + std::locale::_Impl *v58; // esi + int v59; // eax + _DWORD *v60; // eax + _DWORD *v61; // eax + int v62; // eax + _DWORD *v63; // eax + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + int v71; // eax + char v72; // cl + int v73; // eax + void (__cdecl *v74)(void *); // [esp+4h] [ebp-84h] + unsigned int v75; // [esp+8h] [ebp-80h] + bool v76; // [esp+14h] [ebp-74h] + size_t MaxCount; // [esp+18h] [ebp-70h] + unsigned int v78; // [esp+1Ch] [ebp-6Ch] + char v79; // [esp+23h] [ebp-65h] + int Buf; // [esp+24h] [ebp-64h] + void *Bufa; // [esp+24h] [ebp-64h] + unsigned int v82; // [esp+28h] [ebp-60h] + char v83; // [esp+2Ch] [ebp-5Ch] + char v84; // [esp+30h] [ebp-58h] + bool v85; // [esp+30h] [ebp-58h] + int v86; // [esp+34h] [ebp-54h] + unsigned int v87; // [esp+34h] [ebp-54h] + int v88; // [esp+38h] [ebp-50h] + unsigned __int8 v89; // [esp+3Ch] [ebp-4Ch] + unsigned __int8 v90; // [esp+3Ch] [ebp-4Ch] + char v91; // [esp+3Ch] [ebp-4Ch] + size_t v92; // [esp+3Ch] [ebp-4Ch] + _DWORD *v93; // [esp+40h] [ebp-48h] + int *v94; // [esp+44h] [ebp-44h] + bool v95; // [esp+44h] [ebp-44h] + char v96; // [esp+44h] [ebp-44h] + unsigned __int8 v97; // [esp+44h] [ebp-44h] + bool v98; // [esp+44h] [ebp-44h] + std::locale::facet *v99; // [esp+48h] [ebp-40h] + unsigned int v100; // [esp+48h] [ebp-40h] + bool v101; // [esp+4Ch] [ebp-3Ch] + unsigned int v102; // [esp+4Ch] [ebp-3Ch] + void *v103; // [esp+58h] [ebp-30h] BYREF + size_t v104; // [esp+5Ch] [ebp-2Ch] + int v105[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v93 = a3; + v99 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + if ( !v8 ) + { + v57 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v74); + *((_DWORD *)v57 + 1) = 0; + v58 = v57; + *(_DWORD *)v57 = &off_538BD4; + *((_DWORD *)v57 + 2) = 0; + *((_DWORD *)v57 + 3) = 0; + *((_BYTE *)v57 + 16) = 0; + *((_DWORD *)v57 + 5) = 0; + *((_DWORD *)v57 + 6) = 0; + *((_DWORD *)v57 + 7) = 0; + *((_DWORD *)v57 + 8) = 0; + *((_WORD *)v57 + 18) = 0; + *((_BYTE *)v57 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v57, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v58, v99, v75); + v8 = *v94; + } + v100 = 8; + v9 = *(_DWORD *)(a5 + 12) & 0x4A; + v86 = v9; + if ( v9 != 64 ) + v100 = v9 == 8 ? 16 : 10; + v95 = a2 == -1 && a1 != 0; + if ( v95 ) + { + if ( a1[2] >= a1[3] ) + { + v70 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v96 = v70 == -1 && v95; + v7 = v70 == -1 ? 0 : (unsigned int)a1; + } + else + { + v96 = 0; + } + } + else + { + v96 = a2 == -1; + } + v101 = a4 == -1; + if ( v101 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v69 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v69 == -1 && v101 && a3 != 0; + v93 = v69 == -1 ? 0 : a3; + } + else + { + v10 = 0; + } + } + else + { + v10 = a4 == -1; + } + if ( v96 == v10 ) + { + v76 = 0; + v11 = 0; + v84 = 1; + v88 = 0; + v98 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v55 = *(char **)(v7 + 8); + if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) + { + v71 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v71 != -1 ? v71 : -1; + v7 &= (v71 == -1) - 1; + } + else + { + v11 = *v55; + } + } + else + { + v11 = a2; + } + v12 = *(_BYTE *)(v8 + 74); + v13 = *(_BYTE *)(v8 + 16); + v76 = v12 == v11; + if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) + { + if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) + { + v14 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + if ( v14 >= v15 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v16 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + } + else + { + v16 = v14 + 1; + *(_DWORD *)(v7 + 8) = v16; + } + v97 = 0; + if ( v16 >= v15 ) + { + v97 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v97 - 1; + } + if ( v101 && v93 != 0 ) + { + if ( v93[2] >= v93[3] ) + { + v73 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); + v17 = v73 == -1 && v101 && v93 != 0; + v93 = v73 == -1 ? 0 : v93; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v17 == v97 ) + { + v18 = v100; + v84 = 1; + v88 = 0; + v98 = 0; + if ( v100 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v11 = -1; + if ( v7 ) + { + v56 = *(char **)(v7 + 8); + if ( (unsigned int)v56 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v11 = *v56; + } + } + v13 = *(_BYTE *)(v8 + 16); + } + } + else + { + v76 = 0; + } + v88 = 0; + v19 = (_DWORD *)v7; + v20 = v11; + v98 = 0; + v21 = (unsigned int)v19; + while ( 1 ) + { + if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) + { +LABEL_111: + v43 = (_DWORD *)v21; + v84 = 0; + v11 = v20; + v7 = (unsigned int)v43; + goto LABEL_43; + } + if ( *(_BYTE *)(v8 + 78) != v20 ) + { + if ( !v98 ) + goto LABEL_111; +LABEL_33: + if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) + { + v60 = (_DWORD *)v21; + v84 = 0; + v11 = v20; + v98 = 1; + v7 = (unsigned int)v60; + goto LABEL_43; + } + if ( v86 != 0 && v100 != 16 ) + { + v84 = 0; + v61 = (_DWORD *)v21; + v11 = v20; + v7 = (unsigned int)v61; + v98 = 1; + MaxCount = v100; + Buf = v100; + goto LABEL_45; + } + v88 = 0; + v98 = 0; + v100 = 16; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v38 = !v98 || v100 == 10; + if ( !v38 ) + goto LABEL_33; + v98 = v86 == 0 || v100 == 8; + if ( !v98 ) + { + ++v88; + v98 = v38; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v88 = 0; + v100 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v89 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v89 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v101 && v93 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v89 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v89 - 1; + v25 = v101 && v93 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v93[2] >= v93[3] ) + { + v85 = v25; + v54 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); + v26 = v54 == -1 && v85; + v93 = v54 == -1 ? 0 : v93; +LABEL_41: + if ( v26 == v89 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v89 ) + { +LABEL_42: + v27 = (_DWORD *)v21; + v11 = v20; + v84 = 1; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v39 = *(char **)(v21 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) + { + v62 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v62 != -1 ? v62 : -1; + v21 &= (v62 == -1) - 1; + } + else + { + v20 = *v39; + } + } + if ( !v98 ) + break; + v13 = *(_BYTE *)(v8 + 16); + } + v63 = (_DWORD *)v21; + v84 = 0; + v11 = v20; + v7 = (unsigned int)v63; +LABEL_43: + v18 = v100; + if ( v100 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v28 = *(_BYTE *)(v8 + 16) == 0; + v104 = 0; + v103 = v105; + LOBYTE(v105[0]) = 0; + if ( !v28 ) + std::string::reserve(&v103, 0x20u); + v78 = v76 + 0x7FFFFFFF; + v82 = v78 / v100; + v79 = *(_BYTE *)(v8 + 100); + if ( !v79 ) + { + if ( v84 ) + { + v72 = v84; + v35 = v104; + v83 = 0; + v84 = 0; + v36 = (int *)v103; + v79 = v72; + v87 = 0; + goto LABEL_61; + } + v83 = 0; + v87 = 0; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v11 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v11 - 97) > 5u ) + { + if ( (unsigned __int8)(v11 - 65) > 5u ) + goto LABEL_110; + v29 = v11 - 55; + goto LABEL_54; + } + v29 = v11 - 87; + if ( v82 >= v87 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v83 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v90 = 0; + if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) + goto LABEL_87; +LABEL_57: + v33 = v101 && v93 != 0; + if ( !v33 ) + goto LABEL_58; +LABEL_88: + if ( v93[2] >= v93[3] ) + { + v59 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); + v93 = v59 == -1 ? 0 : v93; + v34 = v59 == -1 && v33; + goto LABEL_59; + } + if ( !v90 ) + { +LABEL_60: + v35 = v104; + v36 = (int *)v103; + v79 = 1; + goto LABEL_61; + } + } + else + { + if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) + goto LABEL_110; +LABEL_53: + v29 = v11 - 48; +LABEL_54: + if ( v82 < v87 ) + goto LABEL_55; +LABEL_85: + v31 = *(_DWORD *)(v7 + 12); + v83 |= v78 - v29 < v100 * v87; + v87 = v100 * v87 + v29; + v30 = *(_DWORD *)(v7 + 8); + ++v88; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v90 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v32 < v31 ) + goto LABEL_57; +LABEL_87: + v90 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v90 - 1; + v33 = v101 && v93 != 0; + if ( v33 ) + goto LABEL_88; +LABEL_58: + v34 = a4 == -1; +LABEL_59: + if ( v34 == v90 ) + goto LABEL_60; + } + if ( v7 ) + { + v40 = *(char **)(v7 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) + { + v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v66 != -1 ? v66 : -1; + v7 &= (v66 == -1) - 1; + } + else + { + v11 = *v40; + } + } + else + { + v11 = -1; + } + continue; + } + } + if ( v84 ) + { + v35 = v104; + v87 = 0; + v83 = 0; + v36 = (int *)v103; + v79 = v84; + v84 = 0; + goto LABEL_61; + } + v83 = 0; + Bufa = (void *)(v8 + 78); + v87 = 0; + while ( 2 ) + { + if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) + { + if ( v11 == *(_BYTE *)(v8 + 36) || (v44 = memchr(Bufa, v11, MaxCount)) == 0 ) + { +LABEL_110: + v35 = v104; + v36 = (int *)v103; + v79 = 0; + goto LABEL_61; + } + v45 = v44 - (_BYTE *)Bufa; + if ( v45 > 15 ) + v45 -= 6; + if ( v82 >= v87 ) + { + v83 |= v78 - v45 < v100 * v87; + ++v88; + v87 = v100 * v87 + v45; + goto LABEL_122; + } + v47 = *(_DWORD *)(v7 + 12); + v83 = v79; + v46 = *(_DWORD *)(v7 + 8); + if ( v46 >= v47 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v48 = *(_DWORD *)(v7 + 8); + v47 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v48 = v46 + 1; + *(_DWORD *)(v7 + 8) = v48; +LABEL_124: + v91 = 0; + if ( v47 <= v48 ) + { + v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v91 = v68 != -1 ? 0 : v79; + v7 &= (v68 == -1) - 1; + } + v49 = v101 && v93 != 0; + if ( v49 ) + { + if ( v93[2] >= v93[3] ) + { + v67 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); + v93 = v67 == -1 ? 0 : v93; + v50 = v67 == -1 && v49; + } + else + { + v50 = 0; + } + } + else + { + v50 = a4 == -1; + } + if ( v91 == v50 ) + { + v35 = v104; + v36 = (int *)v103; + goto LABEL_61; + } + if ( v7 ) + { + v51 = *(char **)(v7 + 8); + if ( (unsigned int)v51 >= *(_DWORD *)(v7 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v64 != -1 ? v64 : -1; + v7 &= (v64 == -1) - 1; + } + else + { + v11 = *v51; + } + } + else + { + v11 = -1; + } + continue; + } + break; + } + v35 = v104; + v36 = (int *)v103; + if ( v88 ) + { + v92 = v104 + 1; + if ( v103 == v105 ) + v52 = 15; + else + v52 = v105[0]; + if ( v92 > v52 ) + { + std::string::_M_mutate((int)&v103, v104, 0, 0, 1u); + v36 = (int *)v103; + } + v53 = v88; + v88 = 0; + *((_BYTE *)v36 + v35) = v53; + v104 = v92; + *((_BYTE *)v103 + v92) = 0; +LABEL_122: + v46 = *(_DWORD *)(v7 + 8); + v47 = *(_DWORD *)(v7 + 12); + if ( v46 >= v47 ) + goto LABEL_131; + goto LABEL_123; + } + v79 = 0; + v84 = *(_BYTE *)(v8 + 16); +LABEL_61: + if ( v35 ) + { + v102 = v35 + 1; + if ( v36 == v105 ) + v41 = 15; + else + v41 = v105[0]; + if ( v102 > v41 ) + { + std::string::_M_mutate((int)&v103, v35, 0, 0, 1u); + v36 = (int *)v103; + } + *((_BYTE *)v36 + v35) = v88; + v104 = v35 + 1; + *((_BYTE *)v103 + v102) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v103) ) + *a6 = 4; + v36 = (int *)v103; + if ( v98 || v104 | v88 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + *a6 = 4; + } + else + { + if ( !v88 && !v98 ) + goto LABEL_64; +LABEL_103: + if ( v84 ) + goto LABEL_64; + if ( v83 ) + { + *a7 = v76 + 0x7FFFFFFF; + *a6 = 4; + } + else + { + v42 = v87; + if ( v76 ) + v42 = -v87; + *a7 = v42; + } + } + if ( v79 ) + *a6 |= 2u; + if ( v36 != v105 ) + operator delete(v36); + return v7; +} +// 483FF7: variable 'v74' is possibly undefined +// 484060: variable 'v75' is possibly undefined +// 5165C8: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (004843E0) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + unsigned int *a7) +{ + unsigned int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // di + char v12; // dl + char v13; // al + unsigned int v14; // eax + unsigned int v15; // edx + unsigned int v16; // eax + char v17; // dl + unsigned int v18; // eax + _DWORD *v19; // ecx + char v20; // bl + unsigned int v21; // edi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + bool v28; // zf + int v29; // eax + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + bool v33; // di + char v34; // di + size_t v35; // edi + int *v36; // eax + bool v38; // al + char *v39; // eax + char *v40; // eax + unsigned int v41; // edx + _DWORD *v42; // eax + _BYTE *v43; // eax + int v44; // eax + unsigned int v45; // eax + unsigned int v46; // edx + unsigned int v47; // eax + bool v48; // di + char v49; // di + char *v50; // eax + unsigned int v51; // edx + char v52; // cl + int v53; // eax + char *v54; // eax + char *v55; // eax + std::locale::_Impl *v56; // eax + std::locale::_Impl *v57; // esi + int v58; // eax + _DWORD *v59; // eax + _DWORD *v60; // eax + int v61; // eax + _DWORD *v62; // eax + int v63; // eax + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + char v71; // cl + int v72; // eax + void (__cdecl *v73)(void *); // [esp+4h] [ebp-84h] + unsigned int v74; // [esp+8h] [ebp-80h] + size_t MaxCount; // [esp+1Ch] [ebp-6Ch] + bool v76; // [esp+22h] [ebp-66h] + char v77; // [esp+23h] [ebp-65h] + int Buf; // [esp+24h] [ebp-64h] + void *Bufa; // [esp+24h] [ebp-64h] + unsigned int v80; // [esp+28h] [ebp-60h] + char v81; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + bool v83; // [esp+30h] [ebp-58h] + int v84; // [esp+34h] [ebp-54h] + unsigned int v85; // [esp+34h] [ebp-54h] + int v86; // [esp+38h] [ebp-50h] + unsigned __int8 v87; // [esp+3Ch] [ebp-4Ch] + unsigned __int8 v88; // [esp+3Ch] [ebp-4Ch] + char v89; // [esp+3Ch] [ebp-4Ch] + size_t v90; // [esp+3Ch] [ebp-4Ch] + _DWORD *v91; // [esp+40h] [ebp-48h] + int *v92; // [esp+44h] [ebp-44h] + bool v93; // [esp+44h] [ebp-44h] + char v94; // [esp+44h] [ebp-44h] + unsigned __int8 v95; // [esp+44h] [ebp-44h] + bool v96; // [esp+44h] [ebp-44h] + std::locale::facet *v97; // [esp+48h] [ebp-40h] + unsigned int v98; // [esp+48h] [ebp-40h] + bool v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v91 = a3; + v97 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + v92 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + if ( !v8 ) + { + v56 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v73); + *((_DWORD *)v56 + 1) = 0; + v57 = v56; + *(_DWORD *)v56 = &off_538BD4; + *((_DWORD *)v56 + 2) = 0; + *((_DWORD *)v56 + 3) = 0; + *((_BYTE *)v56 + 16) = 0; + *((_DWORD *)v56 + 5) = 0; + *((_DWORD *)v56 + 6) = 0; + *((_DWORD *)v56 + 7) = 0; + *((_DWORD *)v56 + 8) = 0; + *((_WORD *)v56 + 18) = 0; + *((_BYTE *)v56 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v56, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v57, v97, v74); + v8 = *v92; + } + v98 = 8; + v9 = *(_DWORD *)(a5 + 12) & 0x4A; + v84 = v9; + if ( v9 != 64 ) + v98 = v9 == 8 ? 16 : 10; + v93 = a2 == -1 && a1 != 0; + if ( v93 ) + { + if ( a1[2] >= a1[3] ) + { + v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v94 = v69 == -1 && v93; + v7 = v69 == -1 ? 0 : (unsigned int)a1; + } + else + { + v94 = 0; + } + } + else + { + v94 = a2 == -1; + } + v99 = a4 == -1; + if ( v99 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v68 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v68 == -1 && v99 && a3 != 0; + v91 = v68 == -1 ? 0 : a3; + } + else + { + v10 = 0; + } + } + else + { + v10 = a4 == -1; + } + if ( v94 == v10 ) + { + v76 = 0; + v11 = 0; + v82 = 1; + v86 = 0; + v96 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v54 = *(char **)(v7 + 8); + if ( (unsigned int)v54 >= *(_DWORD *)(v7 + 12) ) + { + v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v70 != -1 ? v70 : -1; + v7 &= (v70 == -1) - 1; + } + else + { + v11 = *v54; + } + } + else + { + v11 = a2; + } + v12 = *(_BYTE *)(v8 + 74); + v13 = *(_BYTE *)(v8 + 16); + v76 = v12 == v11; + if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) + { + if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) + { + v14 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + if ( v14 >= v15 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v16 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + } + else + { + v16 = v14 + 1; + *(_DWORD *)(v7 + 8) = v16; + } + v95 = 0; + if ( v16 >= v15 ) + { + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v95 - 1; + } + if ( v99 && v91 != 0 ) + { + if ( v91[2] >= v91[3] ) + { + v72 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v17 = v72 == -1 && v99 && v91 != 0; + v91 = v72 == -1 ? 0 : v91; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v95 == v17 ) + { + v18 = v98; + v82 = 1; + v86 = 0; + v96 = 0; + if ( v98 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v11 = -1; + if ( v7 ) + { + v55 = *(char **)(v7 + 8); + if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v64 != -1 ? v64 : -1; + v7 &= (v64 == -1) - 1; + } + else + { + v11 = *v55; + } + } + v13 = *(_BYTE *)(v8 + 16); + } + } + else + { + v76 = 0; + } + v86 = 0; + v19 = (_DWORD *)v7; + v20 = v11; + v96 = 0; + v21 = (unsigned int)v19; + while ( 1 ) + { + if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) + { +LABEL_111: + v42 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v42; + goto LABEL_43; + } + if ( *(_BYTE *)(v8 + 78) != v20 ) + { + if ( !v96 ) + goto LABEL_111; +LABEL_33: + if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) + { + v59 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v96 = 1; + v7 = (unsigned int)v59; + goto LABEL_43; + } + if ( v84 != 0 && v98 != 16 ) + { + v82 = 0; + v60 = (_DWORD *)v21; + v11 = v20; + v7 = (unsigned int)v60; + v96 = 1; + MaxCount = v98; + Buf = v98; + goto LABEL_45; + } + v86 = 0; + v96 = 0; + v98 = 16; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v38 = !v96 || v98 == 10; + if ( !v38 ) + goto LABEL_33; + v96 = v84 == 0 || v98 == 8; + if ( !v96 ) + { + ++v86; + v96 = v38; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v86 = 0; + v98 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v87 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v87 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v99 && v91 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v87 - 1; + v25 = v99 && v91 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v91[2] >= v91[3] ) + { + v83 = v25; + v53 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v26 = v53 == -1 && v83; + v91 = v53 == -1 ? 0 : v91; +LABEL_41: + if ( v26 == v87 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v87 ) + { +LABEL_42: + v27 = (_DWORD *)v21; + v11 = v20; + v82 = 1; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v39 = *(char **)(v21 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) + { + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v61 != -1 ? v61 : -1; + v21 &= (v61 == -1) - 1; + } + else + { + v20 = *v39; + } + } + if ( !v96 ) + break; + v13 = *(_BYTE *)(v8 + 16); + } + v62 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v62; +LABEL_43: + v18 = v98; + if ( v98 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v28 = *(_BYTE *)(v8 + 16) == 0; + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( !v28 ) + std::string::reserve(&v101, 0x20u); + v80 = 0xFFFFFFFF / v98; + v77 = *(_BYTE *)(v8 + 100); + if ( !v77 ) + { + if ( v82 ) + { + v71 = v82; + v35 = v102; + v81 = 0; + v82 = 0; + v36 = (int *)v101; + v77 = v71; + v85 = 0; + goto LABEL_61; + } + v81 = 0; + v85 = 0; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v11 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v11 - 97) > 5u ) + { + if ( (unsigned __int8)(v11 - 65) > 5u ) + goto LABEL_110; + v29 = v11 - 55; + goto LABEL_54; + } + v29 = v11 - 87; + if ( v80 >= v85 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v81 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v88 = 0; + if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) + goto LABEL_87; +LABEL_57: + v33 = v99 && v91 != 0; + if ( !v33 ) + goto LABEL_58; +LABEL_88: + if ( v91[2] >= v91[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v58 == -1 ? 0 : v91; + v34 = v58 == -1 && v33; + goto LABEL_59; + } + if ( !v88 ) + { +LABEL_60: + v35 = v102; + v36 = (int *)v101; + v77 = 1; + goto LABEL_61; + } + } + else + { + if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) + goto LABEL_110; +LABEL_53: + v29 = v11 - 48; +LABEL_54: + if ( v80 < v85 ) + goto LABEL_55; +LABEL_85: + v31 = *(_DWORD *)(v7 + 12); + v81 |= ~v29 < v98 * v85; + v85 = v98 * v85 + v29; + v30 = *(_DWORD *)(v7 + 8); + ++v86; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v88 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v31 > v32 ) + goto LABEL_57; +LABEL_87: + v88 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v88 - 1; + v33 = v99 && v91 != 0; + if ( v33 ) + goto LABEL_88; +LABEL_58: + v34 = a4 == -1; +LABEL_59: + if ( v34 == v88 ) + goto LABEL_60; + } + if ( v7 ) + { + v40 = *(char **)(v7 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v11 = *v40; + } + } + else + { + v11 = -1; + } + continue; + } + } + if ( v82 ) + { + v35 = v102; + v85 = 0; + v81 = 0; + v36 = (int *)v101; + v77 = v82; + v82 = 0; + goto LABEL_61; + } + v81 = 0; + Bufa = (void *)(v8 + 78); + v85 = 0; + while ( 2 ) + { + if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) + { + if ( v11 == *(_BYTE *)(v8 + 36) || (v43 = memchr(Bufa, v11, MaxCount)) == 0 ) + { +LABEL_110: + v35 = v102; + v36 = (int *)v101; + v77 = 0; + goto LABEL_61; + } + v44 = v43 - (_BYTE *)Bufa; + if ( v44 > 15 ) + v44 -= 6; + if ( v80 >= v85 ) + { + v81 |= ~v44 < v98 * v85; + ++v86; + v85 = v98 * v85 + v44; + goto LABEL_122; + } + v46 = *(_DWORD *)(v7 + 12); + v81 = v77; + v45 = *(_DWORD *)(v7 + 8); + if ( v45 >= v46 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v47 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v47 = v45 + 1; + *(_DWORD *)(v7 + 8) = v47; +LABEL_124: + v89 = 0; + if ( v46 <= v47 ) + { + v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v89 = v67 != -1 ? 0 : v77; + v7 &= (v67 == -1) - 1; + } + v48 = v99 && v91 != 0; + if ( v48 ) + { + if ( v91[2] >= v91[3] ) + { + v66 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v66 == -1 ? 0 : v91; + v49 = v66 == -1 && v48; + } + else + { + v49 = 0; + } + } + else + { + v49 = a4 == -1; + } + if ( v89 == v49 ) + { + v35 = v102; + v36 = (int *)v101; + goto LABEL_61; + } + if ( v7 ) + { + v50 = *(char **)(v7 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v7 + 12) ) + { + v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v63 != -1 ? v63 : -1; + v7 &= (v63 == -1) - 1; + } + else + { + v11 = *v50; + } + } + else + { + v11 = -1; + } + continue; + } + break; + } + v35 = v102; + v36 = (int *)v101; + if ( v86 ) + { + v90 = v102 + 1; + if ( v101 == v103 ) + v51 = 15; + else + v51 = v103[0]; + if ( v90 > v51 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v36 = (int *)v101; + } + v52 = v86; + v86 = 0; + *((_BYTE *)v36 + v35) = v52; + v102 = v90; + *((_BYTE *)v101 + v90) = 0; +LABEL_122: + v45 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + if ( v45 >= v46 ) + goto LABEL_131; + goto LABEL_123; + } + v77 = 0; + v82 = *(_BYTE *)(v8 + 16); +LABEL_61: + if ( v35 ) + { + v100 = v35 + 1; + if ( v36 == v103 ) + v41 = 15; + else + v41 = v103[0]; + if ( v100 > v41 ) + { + std::string::_M_mutate((int)&v101, v35, 0, 0, 1u); + v36 = (int *)v101; + } + *((_BYTE *)v36 + v35) = v86; + v102 = v35 + 1; + *((_BYTE *)v101 + v100) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v36 = (int *)v101; + if ( v96 || v102 | v86 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + *a6 = 4; + } + else + { + if ( !v86 && !v96 ) + goto LABEL_64; +LABEL_103: + if ( v82 ) + goto LABEL_64; + if ( v81 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v76 ) + v85 = -v85; + *a7 = v85; + } + } + if ( v77 ) + *a6 |= 2u; + if ( v36 != v103 ) + operator delete(v36); + return v7; +} +// 484D17: variable 'v73' is possibly undefined +// 484D80: variable 'v74' is possibly undefined +// 5165C8: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (00485100) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + unsigned __int16 *a7) +{ + unsigned int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // di + char v12; // dl + char v13; // al + unsigned int v14; // eax + unsigned int v15; // edx + unsigned int v16; // eax + char v17; // dl + int v18; // eax + _DWORD *v19; // ecx + char v20; // bl + unsigned int v21; // edi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + bool v28; // zf + int v29; // eax + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + bool v33; // di + char v34; // di + size_t v35; // edi + int *v36; // eax + bool v38; // al + char *v39; // eax + char *v40; // eax + unsigned int v41; // edx + _DWORD *v42; // eax + _BYTE *v43; // eax + int v44; // eax + unsigned int v45; // eax + unsigned int v46; // edx + unsigned int v47; // eax + bool v48; // di + char v49; // di + char *v50; // eax + unsigned int v51; // edx + char v52; // cl + int v53; // eax + char *v54; // eax + char *v55; // eax + std::locale::_Impl *v56; // eax + std::locale::_Impl *v57; // esi + int v58; // eax + _DWORD *v59; // eax + _DWORD *v60; // eax + int v61; // eax + _DWORD *v62; // eax + int v63; // eax + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + char v71; // cl + int v72; // eax + void (__cdecl *v73)(void *); // [esp+4h] [ebp-84h] + unsigned int v74; // [esp+8h] [ebp-80h] + size_t MaxCount; // [esp+1Ch] [ebp-6Ch] + bool v76; // [esp+22h] [ebp-66h] + char v77; // [esp+23h] [ebp-65h] + int Buf; // [esp+24h] [ebp-64h] + void *Bufa; // [esp+24h] [ebp-64h] + int v80; // [esp+28h] [ebp-60h] + char v81; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + bool v83; // [esp+30h] [ebp-58h] + int v84; // [esp+34h] [ebp-54h] + unsigned __int16 v85; // [esp+34h] [ebp-54h] + int v86; // [esp+38h] [ebp-50h] + unsigned __int8 v87; // [esp+3Ch] [ebp-4Ch] + unsigned __int8 v88; // [esp+3Ch] [ebp-4Ch] + char v89; // [esp+3Ch] [ebp-4Ch] + size_t v90; // [esp+3Ch] [ebp-4Ch] + _DWORD *v91; // [esp+40h] [ebp-48h] + int *v92; // [esp+44h] [ebp-44h] + bool v93; // [esp+44h] [ebp-44h] + char v94; // [esp+44h] [ebp-44h] + unsigned __int8 v95; // [esp+44h] [ebp-44h] + bool v96; // [esp+44h] [ebp-44h] + std::locale::facet *v97; // [esp+48h] [ebp-40h] + int v98; // [esp+48h] [ebp-40h] + bool v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v91 = a3; + v97 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + v92 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + if ( !v8 ) + { + v56 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v73); + *((_DWORD *)v56 + 1) = 0; + v57 = v56; + *(_DWORD *)v56 = &off_538BD4; + *((_DWORD *)v56 + 2) = 0; + *((_DWORD *)v56 + 3) = 0; + *((_BYTE *)v56 + 16) = 0; + *((_DWORD *)v56 + 5) = 0; + *((_DWORD *)v56 + 6) = 0; + *((_DWORD *)v56 + 7) = 0; + *((_DWORD *)v56 + 8) = 0; + *((_WORD *)v56 + 18) = 0; + *((_BYTE *)v56 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v56, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v57, v97, v74); + v8 = *v92; + } + v98 = 8; + v9 = *(_DWORD *)(a5 + 12) & 0x4A; + v84 = v9; + if ( v9 != 64 ) + v98 = v9 == 8 ? 16 : 10; + v93 = a2 == -1 && a1 != 0; + if ( v93 ) + { + if ( a1[2] >= a1[3] ) + { + v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v94 = v69 == -1 && v93; + v7 = v69 == -1 ? 0 : (unsigned int)a1; + } + else + { + v94 = 0; + } + } + else + { + v94 = a2 == -1; + } + v99 = a4 == -1; + if ( v99 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v68 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v68 == -1 && v99 && a3 != 0; + v91 = v68 == -1 ? 0 : a3; + } + else + { + v10 = 0; + } + } + else + { + v10 = a4 == -1; + } + if ( v94 == v10 ) + { + v76 = 0; + v11 = 0; + v82 = 1; + v86 = 0; + v96 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v54 = *(char **)(v7 + 8); + if ( (unsigned int)v54 >= *(_DWORD *)(v7 + 12) ) + { + v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v70 != -1 ? v70 : -1; + v7 &= (v70 == -1) - 1; + } + else + { + v11 = *v54; + } + } + else + { + v11 = a2; + } + v12 = *(_BYTE *)(v8 + 74); + v13 = *(_BYTE *)(v8 + 16); + v76 = v12 == v11; + if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) + { + if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) + { + v14 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + if ( v14 >= v15 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v16 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + } + else + { + v16 = v14 + 1; + *(_DWORD *)(v7 + 8) = v16; + } + v95 = 0; + if ( v16 >= v15 ) + { + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v95 - 1; + } + if ( v99 && v91 != 0 ) + { + if ( v91[2] >= v91[3] ) + { + v72 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v17 = v72 == -1 && v99 && v91 != 0; + v91 = v72 == -1 ? 0 : v91; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v95 == v17 ) + { + v18 = v98; + v82 = 1; + v86 = 0; + v96 = 0; + if ( v98 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v11 = -1; + if ( v7 ) + { + v55 = *(char **)(v7 + 8); + if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v64 != -1 ? v64 : -1; + v7 &= (v64 == -1) - 1; + } + else + { + v11 = *v55; + } + } + v13 = *(_BYTE *)(v8 + 16); + } + } + else + { + v76 = 0; + } + v86 = 0; + v19 = (_DWORD *)v7; + v20 = v11; + v96 = 0; + v21 = (unsigned int)v19; + while ( 1 ) + { + if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) + { +LABEL_111: + v42 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v42; + goto LABEL_43; + } + if ( *(_BYTE *)(v8 + 78) != v20 ) + { + if ( !v96 ) + goto LABEL_111; +LABEL_33: + if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) + { + v59 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v96 = 1; + v7 = (unsigned int)v59; + goto LABEL_43; + } + if ( v84 != 0 && v98 != 16 ) + { + v82 = 0; + v60 = (_DWORD *)v21; + v11 = v20; + v7 = (unsigned int)v60; + v96 = 1; + MaxCount = v98; + Buf = v98; + goto LABEL_45; + } + v86 = 0; + v96 = 0; + v98 = 16; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v38 = !v96 || v98 == 10; + if ( !v38 ) + goto LABEL_33; + v96 = v84 == 0 || v98 == 8; + if ( !v96 ) + { + ++v86; + v96 = v38; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v86 = 0; + v98 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v87 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v87 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v99 && v91 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v87 - 1; + v25 = v99 && v91 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v91[2] >= v91[3] ) + { + v83 = v25; + v53 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v26 = v53 == -1 && v83; + v91 = v53 == -1 ? 0 : v91; +LABEL_41: + if ( v26 == v87 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v87 ) + { +LABEL_42: + v27 = (_DWORD *)v21; + v11 = v20; + v82 = 1; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v39 = *(char **)(v21 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) + { + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v61 != -1 ? v61 : -1; + v21 &= (v61 == -1) - 1; + } + else + { + v20 = *v39; + } + } + if ( !v96 ) + break; + v13 = *(_BYTE *)(v8 + 16); + } + v62 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v62; +LABEL_43: + v18 = v98; + if ( v98 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v28 = *(_BYTE *)(v8 + 16) == 0; + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( !v28 ) + std::string::reserve(&v101, 0x20u); + v80 = 0xFFFF / v98; + v77 = *(_BYTE *)(v8 + 100); + if ( !v77 ) + { + if ( v82 ) + { + v71 = v82; + v35 = v102; + v81 = 0; + v82 = 0; + v36 = (int *)v101; + v77 = v71; + v85 = 0; + goto LABEL_61; + } + v81 = 0; + v85 = 0; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v11 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v11 - 97) > 5u ) + { + if ( (unsigned __int8)(v11 - 65) > 5u ) + goto LABEL_110; + v29 = v11 - 55; + goto LABEL_54; + } + v29 = v11 - 87; + if ( (unsigned __int16)v80 >= v85 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v81 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v88 = 0; + if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) + goto LABEL_87; +LABEL_57: + v33 = v99 && v91 != 0; + if ( !v33 ) + goto LABEL_58; +LABEL_88: + if ( v91[2] >= v91[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v58 == -1 ? 0 : v91; + v34 = v58 == -1 && v33; + goto LABEL_59; + } + if ( !v88 ) + { +LABEL_60: + v35 = v102; + v36 = (int *)v101; + v77 = 1; + goto LABEL_61; + } + } + else + { + if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) + goto LABEL_110; +LABEL_53: + v29 = v11 - 48; +LABEL_54: + if ( (unsigned __int16)v80 < v85 ) + goto LABEL_55; +LABEL_85: + v31 = *(_DWORD *)(v7 + 12); + v81 |= (unsigned __int16)(v98 * v85) > 0xFFFF - v29; + v85 = v98 * v85 + v29; + v30 = *(_DWORD *)(v7 + 8); + ++v86; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v88 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v31 > v32 ) + goto LABEL_57; +LABEL_87: + v88 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v88 - 1; + v33 = v99 && v91 != 0; + if ( v33 ) + goto LABEL_88; +LABEL_58: + v34 = a4 == -1; +LABEL_59: + if ( v34 == v88 ) + goto LABEL_60; + } + if ( v7 ) + { + v40 = *(char **)(v7 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v11 = *v40; + } + } + else + { + v11 = -1; + } + continue; + } + } + if ( v82 ) + { + v35 = v102; + v81 = 0; + v85 = 0; + v36 = (int *)v101; + v77 = v82; + v82 = 0; + goto LABEL_61; + } + v81 = 0; + Bufa = (void *)(v8 + 78); + v85 = 0; + while ( 2 ) + { + if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) + { + if ( v11 == *(_BYTE *)(v8 + 36) || (v43 = memchr(Bufa, v11, MaxCount)) == 0 ) + { +LABEL_110: + v35 = v102; + v36 = (int *)v101; + v77 = 0; + goto LABEL_61; + } + v44 = v43 - (_BYTE *)Bufa; + if ( v44 > 15 ) + v44 -= 6; + if ( (unsigned __int16)v80 >= v85 ) + { + v81 |= (unsigned __int16)(v98 * v85) > 0xFFFF - v44; + ++v86; + v85 = v98 * v85 + v44; + goto LABEL_122; + } + v46 = *(_DWORD *)(v7 + 12); + v81 = v77; + v45 = *(_DWORD *)(v7 + 8); + if ( v45 >= v46 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v47 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v47 = v45 + 1; + *(_DWORD *)(v7 + 8) = v47; +LABEL_124: + v89 = 0; + if ( v46 <= v47 ) + { + v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v89 = v67 != -1 ? 0 : v77; + v7 &= (v67 == -1) - 1; + } + v48 = v99 && v91 != 0; + if ( v48 ) + { + if ( v91[2] >= v91[3] ) + { + v66 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v66 == -1 ? 0 : v91; + v49 = v66 == -1 && v48; + } + else + { + v49 = 0; + } + } + else + { + v49 = a4 == -1; + } + if ( v89 == v49 ) + { + v35 = v102; + v36 = (int *)v101; + goto LABEL_61; + } + if ( v7 ) + { + v50 = *(char **)(v7 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v7 + 12) ) + { + v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v63 != -1 ? v63 : -1; + v7 &= (v63 == -1) - 1; + } + else + { + v11 = *v50; + } + } + else + { + v11 = -1; + } + continue; + } + break; + } + v35 = v102; + v36 = (int *)v101; + if ( v86 ) + { + v90 = v102 + 1; + if ( v101 == v103 ) + v51 = 15; + else + v51 = v103[0]; + if ( v90 > v51 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v36 = (int *)v101; + } + v52 = v86; + v86 = 0; + *((_BYTE *)v36 + v35) = v52; + v102 = v90; + *((_BYTE *)v101 + v90) = 0; +LABEL_122: + v45 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + if ( v45 >= v46 ) + goto LABEL_131; + goto LABEL_123; + } + v77 = 0; + v82 = *(_BYTE *)(v8 + 16); +LABEL_61: + if ( v35 ) + { + v100 = v35 + 1; + if ( v36 == v103 ) + v41 = 15; + else + v41 = v103[0]; + if ( v100 > v41 ) + { + std::string::_M_mutate((int)&v101, v35, 0, 0, 1u); + v36 = (int *)v101; + } + *((_BYTE *)v36 + v35) = v86; + v102 = v35 + 1; + *((_BYTE *)v101 + v100) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v36 = (int *)v101; + if ( v96 || v102 | v86 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + *a6 = 4; + } + else + { + if ( !v86 && !v96 ) + goto LABEL_64; +LABEL_103: + if ( v82 ) + goto LABEL_64; + if ( v81 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v76 ) + v85 = -v85; + *a7 = v85; + } + } + if ( v77 ) + *a6 |= 2u; + if ( v36 != v103 ) + operator delete(v36); + return v7; +} +// 485A5F: variable 'v73' is possibly undefined +// 485AC8: variable 'v74' is possibly undefined +// 5165C8: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (00485E40) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int *a7) +{ + int v7; // edi + bool v8; // dl + char v9; // bl + char v10; // bl + char v11; // dl + char v12; // al + unsigned int v13; // eax + unsigned int v14; // edx + unsigned int v15; // eax + unsigned __int8 v16; // si + char v17; // dl + int v18; // eax + unsigned int v19; // ecx + unsigned int v20; // eax + unsigned int v21; // edx + unsigned int v22; // eax + unsigned __int8 v23; // si + bool v24; // dl + char v25; // dl + bool v26; // zf + unsigned __int64 v27; // kr00_8 + int v28; // ecx + unsigned int v29; // esi + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + unsigned __int8 v33; // si + bool v34; // bl + char v35; // bl + size_t v36; // ebx + int *v37; // ecx + bool v39; // al + char *v40; // eax + int v41; // ebx + int v42; // esi + char *v43; // eax + unsigned int v44; // eax + int v45; // eax + unsigned int v46; // edx + _BYTE *v47; // eax + int v48; // eax + int v49; // ecx + UDItype v50; // rax + unsigned int v51; // esi + unsigned int v52; // eax + unsigned int v53; // edx + unsigned int v54; // eax + char v55; // si + bool v56; // bl + char v57; // bl + char *v58; // eax + size_t v59; // esi + unsigned int v60; // eax + char v61; // al + int v62; // eax + char *v63; // eax + char *v64; // eax + std::locale::_Impl *v65; // eax + std::locale::_Impl *v66; // edi + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + int v71; // eax + int v72; // eax + int v73; // eax + int v74; // eax + int v75; // eax + int v76; // eax + char v77; // al + int v78; // eax + void (__cdecl *v79)(void *); // [esp+4h] [ebp-94h] + unsigned int v80; // [esp+8h] [ebp-90h] + size_t MaxCount; // [esp+1Ch] [ebp-7Ch] + UDItype n; // [esp+20h] [ebp-78h] + int Buf; // [esp+28h] [ebp-70h] + void *Bufa; // [esp+28h] [ebp-70h] + bool v85; // [esp+35h] [ebp-63h] + char v86; // [esp+36h] [ebp-62h] + char v87; // [esp+37h] [ebp-61h] + bool v88; // [esp+37h] [ebp-61h] + int v89; // [esp+38h] [ebp-60h] + __int64 v90; // [esp+38h] [ebp-60h] + char v91; // [esp+40h] [ebp-58h] + bool v92; // [esp+40h] [ebp-58h] + int v93; // [esp+44h] [ebp-54h] + int *d; // [esp+48h] [ebp-50h] + int da; // [esp+48h] [ebp-50h] + UDItype db; // [esp+48h] [ebp-50h] + UDItype dc; // [esp+48h] [ebp-50h] + UDItype dd; // [esp+48h] [ebp-50h] + unsigned int v99; // [esp+50h] [ebp-48h] + _DWORD *v100; // [esp+54h] [ebp-44h] + std::locale::facet *v101; // [esp+58h] [ebp-40h] + bool v102; // [esp+58h] [ebp-40h] + char v103; // [esp+58h] [ebp-40h] + bool v104; // [esp+58h] [ebp-40h] + bool v105; // [esp+5Ch] [ebp-3Ch] + unsigned int v106; // [esp+5Ch] [ebp-3Ch] + void *v107; // [esp+68h] [ebp-30h] BYREF + size_t v108; // [esp+6Ch] [ebp-2Ch] + int v109[10]; // [esp+70h] [ebp-28h] BYREF + + v99 = (unsigned int)a1; + v100 = a3; + v101 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); + d = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); + if ( !v7 ) + { + v65 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v79); + *((_DWORD *)v65 + 1) = 0; + v66 = v65; + *(_DWORD *)v65 = &off_538BD4; + *((_DWORD *)v65 + 2) = 0; + *((_DWORD *)v65 + 3) = 0; + *((_BYTE *)v65 + 16) = 0; + *((_DWORD *)v65 + 5) = 0; + *((_DWORD *)v65 + 6) = 0; + *((_DWORD *)v65 + 7) = 0; + *((_DWORD *)v65 + 8) = 0; + *((_WORD *)v65 + 18) = 0; + *((_BYTE *)v65 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v65, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v66, v101, v80); + v7 = *d; + } + da = 8; + v89 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v89 != 64 ) + da = v89 == 8 ? 16 : 10; + v8 = a2 == -1; + v102 = v8 && a1 != 0; + if ( v102 ) + { + if ( a1[2] >= a1[3] ) + { + v75 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v8 = a2 == -1; + v103 = v75 == -1 && v102; + v99 = v75 == -1 ? 0 : (unsigned int)a1; + } + else + { + v103 = 0; + } + } + else + { + v103 = a2 == -1; + } + v105 = a4 == -1; + if ( v105 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v88 = v8; + v74 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v8 = v88; + v9 = v74 == -1 && v105 && a3 != 0; + v100 = v74 == -1 ? 0 : a3; + } + else + { + v9 = 0; + } + } + else + { + v9 = a4 == -1; + } + if ( v103 == v9 ) + { + v85 = 0; + v10 = 0; + v91 = 1; + v93 = 0; + v104 = 0; + goto LABEL_43; + } + if ( v99 && v8 ) + { + v63 = *(char **)(v99 + 8); + if ( (unsigned int)v63 >= *(_DWORD *)(v99 + 12) ) + { + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v76 != -1 ? v76 : -1; + v99 &= (v76 == -1) - 1; + } + else + { + v10 = *v63; + } + } + else + { + v10 = a2; + } + v11 = *(_BYTE *)(v7 + 74); + v12 = *(_BYTE *)(v7 + 16); + v85 = v11 == v10; + if ( v11 == v10 || *(_BYTE *)(v7 + 75) == v10 ) + { + if ( (!v12 || *(_BYTE *)(v7 + 37) != v10) && *(_BYTE *)(v7 + 36) != v10 ) + { + v13 = *(_DWORD *)(v99 + 8); + v14 = *(_DWORD *)(v99 + 12); + if ( v13 >= v14 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); + v15 = *(_DWORD *)(v99 + 8); + v14 = *(_DWORD *)(v99 + 12); + } + else + { + v15 = v13 + 1; + *(_DWORD *)(v99 + 8) = v15; + } + v16 = 0; + if ( v15 >= v14 ) + { + v16 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99) == -1; + v99 &= v16 - 1; + } + if ( v105 && v100 != 0 ) + { + if ( v100[2] >= v100[3] ) + { + v78 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); + v17 = v78 == -1 && v105 && v100 != 0; + v100 = v78 == -1 ? 0 : v100; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v17 == v16 ) + { + v18 = da; + v91 = 1; + v93 = 0; + v104 = 0; + if ( da != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v10 = -1; + if ( v99 ) + { + v64 = *(char **)(v99 + 8); + if ( (unsigned int)v64 >= *(_DWORD *)(v99 + 12) ) + { + v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v70 != -1 ? v70 : -1; + v99 &= (v70 == -1) - 1; + } + else + { + v10 = *v64; + } + } + v12 = *(_BYTE *)(v7 + 16); + } + } + else + { + v85 = 0; + } + v93 = 0; + v104 = 0; + while ( 1 ) + { + if ( v12 && *(_BYTE *)(v7 + 37) == v10 || *(_BYTE *)(v7 + 36) == v10 ) + { +LABEL_112: + v91 = 0; + goto LABEL_43; + } + if ( *(_BYTE *)(v7 + 78) != v10 ) + { + if ( !v104 ) + goto LABEL_112; +LABEL_33: + if ( *(_BYTE *)(v7 + 76) != v10 && *(_BYTE *)(v7 + 77) != v10 ) + { + v91 = 0; + v104 = 1; + goto LABEL_43; + } + if ( v89 != 0 && da != 16 ) + { + v91 = 0; + v104 = 1; + MaxCount = da; + Buf = da; + goto LABEL_45; + } + v93 = 0; + v104 = 0; + da = 16; +LABEL_37: + v19 = v99; + v20 = *(_DWORD *)(v99 + 8); + v21 = *(_DWORD *)(v99 + 12); + if ( v20 < v21 ) + goto LABEL_38; + goto LABEL_75; + } + v39 = !v104 || da == 10; + if ( !v39 ) + goto LABEL_33; + v104 = v89 == 0 || da == 8; + if ( !v104 ) + { + ++v93; + v104 = v39; + goto LABEL_37; + } + v19 = v99; + v93 = 0; + da = 8; + v20 = *(_DWORD *)(v99 + 8); + v21 = *(_DWORD *)(v99 + 12); + if ( v20 < v21 ) + { +LABEL_38: + v22 = v20 + 1; + v23 = 0; + *(_DWORD *)(v19 + 8) = v22; + if ( v22 < v21 ) + goto LABEL_39; + goto LABEL_76; + } +LABEL_75: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); + v23 = 0; + if ( *(_DWORD *)(v99 + 8) < *(_DWORD *)(v99 + 12) ) + { +LABEL_39: + v24 = v105 && v100 != 0; + if ( !v24 ) + goto LABEL_40; + goto LABEL_77; + } +LABEL_76: + v23 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99) == -1; + v99 &= v23 - 1; + v24 = v105 && v100 != 0; + if ( !v24 ) + { +LABEL_40: + v25 = a4 == -1; + goto LABEL_41; + } +LABEL_77: + if ( v100[2] >= v100[3] ) + { + v92 = v24; + v62 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); + v25 = v62 == -1 && v92; + v100 = v62 == -1 ? 0 : v100; +LABEL_41: + if ( v25 == v23 ) + goto LABEL_42; + goto LABEL_79; + } + if ( !v23 ) + { +LABEL_42: + v91 = 1; + goto LABEL_43; + } +LABEL_79: + v10 = -1; + if ( v99 ) + { + v40 = *(char **)(v99 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v99 + 12) ) + { + v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v68 != -1 ? v68 : -1; + v99 &= (v68 == -1) - 1; + } + else + { + v10 = *v40; + } + } + if ( !v104 ) + break; + v12 = *(_BYTE *)(v7 + 16); + } + v91 = 0; +LABEL_43: + v18 = da; + if ( da == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v26 = *(_BYTE *)(v7 + 16) == 0; + v108 = 0; + v107 = v109; + LOBYTE(v109[0]) = 0; + if ( !v26 ) + std::string::reserve(&v107, 0x20u); + n = 0x8000000000000000LL; + if ( !v85 ) + n = 0x7FFFFFFFFFFFFFFFLL; + v90 = da; + v27 = n / da; + v86 = *(_BYTE *)(v7 + 100); + if ( !v86 ) + { + if ( v91 ) + { + v77 = v91; + v36 = v108; + v87 = 0; + v91 = 0; + v37 = (int *)v107; + v86 = v77; + db = 0LL; + goto LABEL_63; + } + v87 = 0; + db = 0LL; + while ( 2 ) + { + if ( Buf <= 10 ) + { + if ( v10 <= 47 || (char)(Buf + 48) <= v10 ) + goto LABEL_111; +LABEL_55: + v28 = v10 - 48; + goto LABEL_56; + } + if ( (unsigned __int8)(v10 - 48) <= 9u ) + goto LABEL_55; + v28 = v10 - 87; + if ( (unsigned __int8)(v10 - 97) <= 5u ) + { +LABEL_56: + if ( v27 >= db ) + goto LABEL_88; + } + else + { + if ( (unsigned __int8)(v10 - 65) > 5u ) + goto LABEL_111; + v28 = v10 - 55; + if ( v27 >= db ) + { +LABEL_88: + v41 = HIDWORD(v90) * db; + v42 = v90 * HIDWORD(db); + dc = (unsigned int)v90 * (unsigned __int64)(unsigned int)db; + HIDWORD(dc) += v42 + v41; + v87 |= n - v28 < dc; + db = dc + v28; + v29 = v99; + ++v93; + v30 = *(_DWORD *)(v99 + 8); + v31 = *(_DWORD *)(v99 + 12); + if ( v30 >= v31 ) + { +LABEL_89: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); + v33 = 0; + if ( *(_DWORD *)(v99 + 8) >= *(_DWORD *)(v99 + 12) ) + { +LABEL_90: + v33 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99) == -1; + v99 &= v33 - 1; + v34 = v105 && v100 != 0; + if ( v34 ) + { +LABEL_91: + if ( v100[2] < v100[3] ) + { + if ( !v33 ) + { +LABEL_62: + v36 = v108; + v37 = (int *)v107; + v86 = 1; + goto LABEL_63; + } + goto LABEL_93; + } + v67 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); + v100 = v67 == -1 ? 0 : v100; + v35 = v67 == -1 && v34; +LABEL_61: + if ( v35 == v33 ) + goto LABEL_62; +LABEL_93: + if ( v99 ) + { + v43 = *(char **)(v99 + 8); + if ( (unsigned int)v43 >= *(_DWORD *)(v99 + 12) ) + { + v71 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v71 != -1 ? v71 : -1; + v99 &= (v71 == -1) - 1; + } + else + { + v10 = *v43; + } + } + else + { + v10 = -1; + } + continue; + } +LABEL_60: + v35 = a4 == -1; + goto LABEL_61; + } +LABEL_59: + v34 = v105 && v100 != 0; + if ( v34 ) + goto LABEL_91; + goto LABEL_60; + } +LABEL_58: + v32 = v30 + 1; + *(_DWORD *)(v29 + 8) = v32; + v33 = 0; + if ( v32 >= v31 ) + goto LABEL_90; + goto LABEL_59; + } + } + break; + } + v29 = v99; + v87 = 1; + v30 = *(_DWORD *)(v99 + 8); + v31 = *(_DWORD *)(v99 + 12); + if ( v30 >= v31 ) + goto LABEL_89; + goto LABEL_58; + } + if ( v91 ) + { + v36 = v108; + db = 0LL; + v37 = (int *)v107; + v86 = v91; + v87 = 0; + v91 = 0; + goto LABEL_63; + } + v87 = 0; + Bufa = (void *)(v7 + 78); + db = 0LL; + while ( 2 ) + { + if ( !*(_BYTE *)(v7 + 16) || *(_BYTE *)(v7 + 37) != v10 ) + { + if ( v10 == *(_BYTE *)(v7 + 36) || (v47 = memchr(Bufa, v10, MaxCount)) == 0 ) + { +LABEL_111: + v36 = v108; + v37 = (int *)v107; + v86 = 0; + goto LABEL_63; + } + v48 = v47 - (_BYTE *)Bufa; + v49 = v48; + if ( v48 > 15 ) + v49 = v48 - 6; + v50 = db; + if ( v27 >= db ) + { + dd = (unsigned int)v90 * (unsigned __int64)(unsigned int)db; + HIDWORD(dd) += HIDWORD(v50) * v90 + v50 * HIDWORD(v90); + v87 |= n - v49 < dd; + ++v93; + db = dd + v49; + goto LABEL_123; + } + v51 = v99; + v87 = v86; + v53 = *(_DWORD *)(v99 + 12); + v52 = *(_DWORD *)(v99 + 8); + if ( v52 >= v53 ) + { +LABEL_132: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); + v54 = *(_DWORD *)(v99 + 8); + v53 = *(_DWORD *)(v99 + 12); + goto LABEL_125; + } +LABEL_124: + v54 = v52 + 1; + *(_DWORD *)(v51 + 8) = v54; +LABEL_125: + v55 = 0; + if ( v53 <= v54 ) + { + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v55 = v73 != -1 ? 0 : v86; + v99 &= (v73 == -1) - 1; + } + v56 = v105 && v100 != 0; + if ( v56 ) + { + if ( v100[2] >= v100[3] ) + { + v72 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); + v100 = v72 == -1 ? 0 : v100; + v57 = v72 == -1 && v56; + } + else + { + v57 = 0; + } + } + else + { + v57 = a4 == -1; + } + if ( v55 == v57 ) + { + v36 = v108; + v37 = (int *)v107; + goto LABEL_63; + } + if ( v99 ) + { + v58 = *(char **)(v99 + 8); + if ( (unsigned int)v58 >= *(_DWORD *)(v99 + 12) ) + { + v69 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v69 != -1 ? v69 : -1; + v99 &= (v69 == -1) - 1; + } + else + { + v10 = *v58; + } + } + else + { + v10 = -1; + } + continue; + } + break; + } + v36 = v108; + v37 = (int *)v107; + if ( v93 ) + { + v59 = v108 + 1; + if ( v107 == v109 ) + v60 = 15; + else + v60 = v109[0]; + if ( v59 > v60 ) + { + std::string::_M_mutate((int)&v107, v108, 0, 0, 1u); + v37 = (int *)v107; + } + v61 = v93; + v93 = 0; + *((_BYTE *)v37 + v36) = v61; + v108 = v36 + 1; + *((_BYTE *)v107 + v59) = 0; +LABEL_123: + v51 = v99; + v52 = *(_DWORD *)(v99 + 8); + v53 = *(_DWORD *)(v99 + 12); + if ( v52 >= v53 ) + goto LABEL_132; + goto LABEL_124; + } + v86 = 0; + v91 = *(_BYTE *)(v7 + 16); +LABEL_63: + if ( v36 ) + { + v106 = v36 + 1; + if ( v37 == v109 ) + v44 = 15; + else + v44 = v109[0]; + if ( v106 > v44 ) + { + std::string::_M_mutate((int)&v107, v36, 0, 0, 1u); + v37 = (int *)v107; + } + *((_BYTE *)v37 + v36) = v93; + v108 = v36 + 1; + *((_BYTE *)v107 + v106) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v7 + 8), *(_DWORD *)(v7 + 12), (int)&v107) ) + *a6 = 4; + v37 = (int *)v107; + if ( v104 || v108 | v93 ) + goto LABEL_104; +LABEL_66: + *a7 = 0; + a7[1] = 0; + *a6 = 4; + } + else + { + if ( !v93 && !v104 ) + goto LABEL_66; +LABEL_104: + if ( v91 ) + goto LABEL_66; + if ( v87 ) + { + v45 = 0; + v46 = 0x80000000; + if ( !v85 ) + { + v45 = -1; + v46 = 0x7FFFFFFF; + } + *a7 = v45; + a7[1] = v46; + *a6 = 4; + } + else + { + if ( v85 ) + db = -(__int64)db; + *(_QWORD *)a7 = db; + } + } + if ( v86 ) + *a6 |= 2u; + if ( v37 != v109 ) + operator delete(v37); + return v99; +} +// 48685F: variable 'v79' is possibly undefined +// 4868CE: variable 'v80' is possibly undefined +// 5165C8: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (00486C70) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + unsigned int v7; // ebx + std::locale::_Impl **v8; // edi + int v9; // edi + int v10; // eax + char v11; // dl + char v12; // si + char v13; // dl + char v14; // al + unsigned int v15; // eax + unsigned int v16; // edx + unsigned int v17; // eax + char v18; // dl + _DWORD *v19; // edx + char v20; // bl + unsigned int v21; // esi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + unsigned __int64 v28; // kr00_8 + int v29; // ecx + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + unsigned __int8 v33; // di + bool v34; // si + char v35; // si + size_t v36; // esi + int *v37; // eax + bool v39; // al + char *v40; // eax + char *v41; // eax + unsigned int v42; // edi + unsigned int v43; // edx + _DWORD *v44; // eax + _BYTE *v45; // eax + int v46; // ecx + unsigned int v47; // eax + unsigned int v48; // edx + unsigned int v49; // eax + char v50; // di + bool v51; // si + char v52; // si + char *v53; // eax + size_t v54; // edi + unsigned int v55; // edx + int v56; // eax + char *v57; // eax + char *v58; // eax + _DWORD *v59; // eax + int v60; // eax + _DWORD *v61; // eax + _DWORD *v62; // eax + int v63; // eax + _DWORD *v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + int v71; // eax + int v72; // eax + char v73; // cl + int v74; // eax + void (__cdecl *v75)(void *); // [esp+4h] [ebp-84h] + unsigned int v76; // [esp+8h] [ebp-80h] + size_t MaxCount; // [esp+10h] [ebp-78h] + int Buf; // [esp+14h] [ebp-74h] + void *Bufa; // [esp+14h] [ebp-74h] + bool v80; // [esp+21h] [ebp-67h] + char v81; // [esp+22h] [ebp-66h] + char v82; // [esp+23h] [ebp-65h] + char v83; // [esp+24h] [ebp-64h] + int v84; // [esp+28h] [ebp-60h] + __int64 v85; // [esp+28h] [ebp-60h] + int v86; // [esp+30h] [ebp-58h] + char v87; // [esp+34h] [ebp-54h] + bool v88; // [esp+34h] [ebp-54h] + std::locale::_Impl *v89; // [esp+38h] [ebp-50h] + unsigned __int8 v90; // [esp+38h] [ebp-50h] + std::locale::_Impl *v91; // [esp+38h] [ebp-50h] + _DWORD *v92; // [esp+3Ch] [ebp-4Ch] + int v93; // [esp+40h] [ebp-48h] + bool v94; // [esp+40h] [ebp-48h] + char v95; // [esp+40h] [ebp-48h] + unsigned __int8 v96; // [esp+40h] [ebp-48h] + std::locale::_Impl *i; // [esp+40h] [ebp-48h] + unsigned __int64 v98; // [esp+40h] [ebp-48h] + bool v99; // [esp+48h] [ebp-40h] + bool v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v92 = a3; + v93 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (std::locale::_Impl **)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v93); + v89 = *v8; + if ( !*v8 ) + { + v59 = operator new((struct type_info *)0x68, v75); + v59[1] = 0; + *v59 = &off_538BD4; + v59[2] = 0; + v59[3] = 0; + *((_BYTE *)v59 + 16) = 0; + v59[5] = 0; + v59[6] = 0; + v59[7] = 0; + v59[8] = 0; + *((_WORD *)v59 + 18) = 0; + *((_BYTE *)v59 + 100) = 0; + v91 = (std::locale::_Impl *)v59; + std::__numpunct_cache::_M_cache((int)v59, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v91, (const std::locale::facet *)v93, v76); + v89 = *v8; + } + v9 = 8; + v10 = *(_DWORD *)(a5 + 12) & 0x4A; + v84 = v10; + if ( v10 != 64 ) + v9 = v10 == 8 ? 16 : 10; + v94 = a2 == -1 && a1 != 0; + if ( v94 ) + { + if ( a1[2] >= a1[3] ) + { + v71 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v95 = v71 == -1 && v94; + v7 = v71 == -1 ? 0 : (unsigned int)a1; + } + else + { + v95 = 0; + } + } + else + { + v95 = a2 == -1; + } + v100 = a4 == -1; + if ( v100 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v70 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v11 = v70 == -1 && v100 && a3 != 0; + v92 = v70 == -1 ? 0 : a3; + } + else + { + v11 = 0; + } + } + else + { + v11 = a4 == -1; + } + if ( v95 == v11 ) + { + v80 = 0; + v12 = 0; + v83 = 1; + v86 = 0; + v99 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v57 = *(char **)(v7 + 8); + if ( (unsigned int)v57 >= *(_DWORD *)(v7 + 12) ) + { + v72 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v12 = v72 != -1 ? v72 : -1; + v7 &= (v72 == -1) - 1; + } + else + { + v12 = *v57; + } + } + else + { + v12 = a2; + } + v13 = *((_BYTE *)v89 + 74); + v14 = *((_BYTE *)v89 + 16); + v80 = v13 == v12; + if ( v13 == v12 || *((_BYTE *)v89 + 75) == v12 ) + { + if ( (!v14 || *((_BYTE *)v89 + 37) != v12) && *((_BYTE *)v89 + 36) != v12 ) + { + v15 = *(_DWORD *)(v7 + 8); + v16 = *(_DWORD *)(v7 + 12); + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v17 = *(_DWORD *)(v7 + 8); + v16 = *(_DWORD *)(v7 + 12); + } + else + { + v17 = v15 + 1; + *(_DWORD *)(v7 + 8) = v17; + } + v96 = 0; + if ( v17 >= v16 ) + { + v96 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v96 - 1; + } + if ( v100 && v92 != 0 ) + { + if ( v92[2] >= v92[3] ) + { + v74 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); + v18 = v74 == -1 && v100 && v92 != 0; + v92 = v74 == -1 ? 0 : v92; + } + else + { + v18 = 0; + } + } + else + { + v18 = a4 == -1; + } + if ( v96 == v18 ) + { + v83 = 1; + v86 = 0; + v99 = 0; + if ( v9 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v12 = -1; + if ( v7 ) + { + v58 = *(char **)(v7 + 8); + if ( (unsigned int)v58 >= *(_DWORD *)(v7 + 12) ) + { + v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v12 = v66 != -1 ? v66 : -1; + v7 &= (v66 == -1) - 1; + } + else + { + v12 = *v58; + } + } + v14 = *((_BYTE *)v89 + 16); + } + } + else + { + v80 = 0; + } + v86 = 0; + v19 = (_DWORD *)v7; + v20 = v12; + v99 = 0; + v21 = (unsigned int)v19; + for ( i = v89; ; v14 = *((_BYTE *)i + 16) ) + { + if ( v14 && *((_BYTE *)i + 37) == v20 || *((_BYTE *)i + 36) == v20 ) + { +LABEL_111: + v83 = 0; + v89 = i; + v44 = (_DWORD *)v21; + v12 = v20; + v7 = (unsigned int)v44; + goto LABEL_43; + } + if ( *((_BYTE *)i + 78) != v20 ) + { + if ( !v99 ) + goto LABEL_111; +LABEL_33: + if ( *((_BYTE *)i + 76) != v20 && *((_BYTE *)i + 77) != v20 ) + { + v83 = 0; + v89 = i; + v61 = (_DWORD *)v21; + v12 = v20; + v99 = 1; + v7 = (unsigned int)v61; + goto LABEL_43; + } + if ( v84 != 0 && v9 != 16 ) + { + v83 = 0; + v89 = i; + v62 = (_DWORD *)v21; + v12 = v20; + MaxCount = v9; + v7 = (unsigned int)v62; + Buf = v9; + v99 = 1; + goto LABEL_45; + } + v86 = 0; + v9 = 16; + v99 = 0; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v39 = !v99 || v9 == 10; + if ( !v39 ) + goto LABEL_33; + v99 = v84 == 0 || v9 == 8; + if ( !v99 ) + { + ++v86; + v99 = v39; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v9 = 8; + v86 = 0; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v90 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v90 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v100 && v92 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v90 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v90 - 1; + v25 = v100 && v92 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v92[2] >= v92[3] ) + { + v88 = v25; + v56 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); + v26 = v56 == -1 && v88; + v92 = v56 == -1 ? 0 : v92; +LABEL_41: + if ( v26 == v90 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v90 ) + { +LABEL_42: + v83 = 1; + v89 = i; + v27 = (_DWORD *)v21; + v12 = v20; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v40 = *(char **)(v21 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v21 + 12) ) + { + v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v63 != -1 ? v63 : -1; + v21 &= (v63 == -1) - 1; + } + else + { + v20 = *v40; + } + } + if ( !v99 ) + break; + } + v89 = i; + v64 = (_DWORD *)v21; + v12 = v20; + v83 = 0; + v7 = (unsigned int)v64; +LABEL_43: + if ( v9 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v9; + Buf = v9; +LABEL_45: + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( *((_BYTE *)v89 + 16) ) + std::string::reserve(&v101, 0x20u); + v85 = v9; + v28 = 0xFFFFFFFFFFFFFFFFLL / v9; + v81 = *((_BYTE *)v89 + 100); + if ( !v81 ) + { + if ( v83 ) + { + v73 = v83; + v36 = v102; + v82 = 0; + v83 = 0; + v37 = (int *)v101; + v81 = v73; + v98 = 0LL; + goto LABEL_61; + } + v82 = 0; + v98 = 0LL; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v12 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v12 - 97) > 5u ) + { + if ( (unsigned __int8)(v12 - 65) > 5u ) + goto LABEL_110; + v29 = v12 - 55; + goto LABEL_54; + } + v29 = v12 - 87; + if ( v28 >= v98 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v82 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v33 = 0; + if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) + goto LABEL_87; +LABEL_57: + v34 = v100 && v92 != 0; + if ( !v34 ) + goto LABEL_58; +LABEL_88: + if ( v92[2] >= v92[3] ) + { + v60 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); + v92 = v60 == -1 ? 0 : v92; + v35 = v60 == -1 && v34; + goto LABEL_59; + } + if ( !v33 ) + { +LABEL_60: + v36 = v102; + v37 = (int *)v101; + v81 = 1; + goto LABEL_61; + } + } + else + { + if ( v12 <= 47 || (char)(Buf + 48) <= v12 ) + goto LABEL_110; +LABEL_53: + v29 = v12 - 48; +LABEL_54: + if ( v28 < v98 ) + goto LABEL_55; +LABEL_85: + v82 |= __PAIR64__(~(v29 >> 31), ~v29) < v85 * v98; + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + ++v86; + v98 = v85 * v98 + v29; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v33 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v31 > v32 ) + goto LABEL_57; +LABEL_87: + v33 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v33 - 1; + v34 = v100 && v92 != 0; + if ( v34 ) + goto LABEL_88; +LABEL_58: + v35 = a4 == -1; +LABEL_59: + if ( v35 == v33 ) + goto LABEL_60; + } + if ( v7 ) + { + v41 = *(char **)(v7 + 8); + if ( (unsigned int)v41 >= *(_DWORD *)(v7 + 12) ) + { + v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v12 = v67 != -1 ? v67 : -1; + v7 &= (v67 == -1) - 1; + } + else + { + v12 = *v41; + } + } + else + { + v12 = -1; + } + continue; + } + } + if ( v83 ) + { + v36 = v102; + v98 = 0LL; + v37 = (int *)v101; + v81 = v83; + v82 = 0; + v83 = 0; + goto LABEL_61; + } + v82 = 0; + v98 = 0LL; + Bufa = (char *)v89 + 78; + while ( 2 ) + { + if ( !*((_BYTE *)v89 + 16) || *((_BYTE *)v89 + 37) != v12 ) + { + if ( v12 == *((_BYTE *)v89 + 36) || (v45 = memchr(Bufa, v12, MaxCount)) == 0 ) + { +LABEL_110: + v36 = v102; + v37 = (int *)v101; + v81 = 0; + goto LABEL_61; + } + v46 = v45 - (_BYTE *)Bufa; + if ( v45 - (_BYTE *)Bufa > 15 ) + v46 -= 6; + if ( v28 >= v98 ) + { + v82 |= __PAIR64__(~(v46 >> 31), ~v46) < v85 * v98; + ++v86; + v98 = v85 * v98 + v46; + goto LABEL_122; + } + v48 = *(_DWORD *)(v7 + 12); + v82 = v81; + v47 = *(_DWORD *)(v7 + 8); + if ( v47 >= v48 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v49 = *(_DWORD *)(v7 + 8); + v48 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v49 = v47 + 1; + *(_DWORD *)(v7 + 8) = v49; +LABEL_124: + v50 = 0; + if ( v48 <= v49 ) + { + v69 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v50 = v69 != -1 ? 0 : v81; + v7 &= (v69 == -1) - 1; + } + v51 = v100 && v92 != 0; + if ( v51 ) + { + if ( v92[2] >= v92[3] ) + { + v68 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); + v92 = v68 == -1 ? 0 : v92; + v52 = v68 == -1 && v51; + } + else + { + v52 = 0; + } + } + else + { + v52 = a4 == -1; + } + if ( v50 == v52 ) + { + v36 = v102; + v37 = (int *)v101; + goto LABEL_61; + } + if ( v7 ) + { + v53 = *(char **)(v7 + 8); + if ( (unsigned int)v53 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v12 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v12 = *v53; + } + } + else + { + v12 = -1; + } + continue; + } + break; + } + v36 = v102; + v37 = (int *)v101; + if ( v86 ) + { + v54 = v102 + 1; + v87 = v86; + if ( v101 == v103 ) + v55 = 15; + else + v55 = v103[0]; + if ( v54 > v55 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v37 = (int *)v101; + } + v86 = 0; + *((_BYTE *)v37 + v36) = v87; + v102 = v36 + 1; + *((_BYTE *)v101 + v54) = 0; +LABEL_122: + v47 = *(_DWORD *)(v7 + 8); + v48 = *(_DWORD *)(v7 + 12); + if ( v47 >= v48 ) + goto LABEL_131; + goto LABEL_123; + } + v81 = 0; + v83 = *((_BYTE *)v89 + 16); +LABEL_61: + if ( v36 ) + { + v42 = v36 + 1; + if ( v37 == v103 ) + v43 = 15; + else + v43 = v103[0]; + if ( v42 > v43 ) + { + std::string::_M_mutate((int)&v101, v36, 0, 0, 1u); + v37 = (int *)v101; + } + *((_BYTE *)v37 + v36) = v86; + v102 = v36 + 1; + *((_BYTE *)v101 + v42) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*((char **)v89 + 2), *((_DWORD *)v89 + 3), (int)&v101) ) + *a6 = 4; + v37 = (int *)v101; + if ( v99 || v102 | v86 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + a7[1] = 0; + *a6 = 4; + } + else + { + if ( !v86 && !v99 ) + goto LABEL_64; +LABEL_103: + if ( v83 ) + goto LABEL_64; + if ( v82 ) + { + *a7 = -1; + a7[1] = -1; + *a6 = 4; + } + else + { + if ( v80 ) + v98 = -(__int64)v98; + *(_QWORD *)a7 = v98; + } + } + if ( v81 ) + *a6 |= 2u; + if ( v37 != v103 ) + operator delete(v37); + return v7; +} +// 487667: variable 'v75' is possibly undefined +// 4876D4: variable 'v76' is possibly undefined +// 5165C8: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (00487A70) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // eax + unsigned int v10; // edi + char v11; // dl + char v12; // bl + char v13; // bl + int v14; // ebx + char v15; // al + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + char v20; // dl + int v21; // edx + int v22; // edx + _DWORD *v23; // ecx + unsigned int v24; // eax + char v25; // al + char v26; // bl + unsigned int *v27; // ecx + int v28; // ebx + volatile signed __int32 *v29; // ecx + unsigned __int64 result; // rax + bool v31; // al + int v32; // eax + _BYTE *v33; // eax + int v34; // edx + _BYTE *v35; // eax + unsigned int *v36; // edi + unsigned int *v37; // ecx + char v38; // al + _BYTE *v39; // eax + int v40; // eax + _DWORD *v41; // ecx + unsigned int v42; // eax + char v43; // al + char v44; // bl + _BYTE *v45; // eax + int v46; // edx + char v47; // cl + unsigned int *v48; // eax + int v49; // eax + int v50; // eax + _BYTE *v51; // eax + char v52; // al + char v53; // al + std::locale::_Impl *v54; // eax + std::locale::_Impl *v55; // esi + int v56; // eax + char v57; // al + void (__cdecl *v58)(void *); // [esp+4h] [ebp-64h] + unsigned int v59; // [esp+8h] [ebp-60h] + size_t MaxCount; // [esp+18h] [ebp-50h] + char v61; // [esp+1Ch] [ebp-4Ch] + std::string *v62; // [esp+1Ch] [ebp-4Ch] + int Buf; // [esp+20h] [ebp-48h] + std::string *Bufa; // [esp+20h] [ebp-48h] + unsigned int *Bufc; // [esp+20h] [ebp-48h] + void *Bufb; // [esp+20h] [ebp-48h] + unsigned int v67; // [esp+24h] [ebp-44h] + bool v68; // [esp+29h] [ebp-3Fh] + char v69; // [esp+2Ah] [ebp-3Eh] + char v70; // [esp+2Bh] [ebp-3Dh] + char v71; // [esp+2Bh] [ebp-3Dh] + char v72; // [esp+2Bh] [ebp-3Dh] + char v73; // [esp+2Ch] [ebp-3Ch] + int v74; // [esp+2Ch] [ebp-3Ch] + int v75; // [esp+30h] [ebp-38h] + char v76; // [esp+30h] [ebp-38h] + unsigned int v77; // [esp+30h] [ebp-38h] + int v78; // [esp+34h] [ebp-34h] + char v79; // [esp+34h] [ebp-34h] + int *v80; // [esp+38h] [ebp-30h] + char v81; // [esp+38h] [ebp-30h] + bool v82; // [esp+38h] [ebp-30h] + unsigned __int64 v83; // [esp+38h] [ebp-30h] + char v84; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v85[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v80 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v54 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v58); + *((_DWORD *)v54 + 1) = 0; + v55 = v54; + *((_WORD *)v54 + 18) = 0; + *(_DWORD *)v54 = &off_538BD4; + *((_DWORD *)v54 + 2) = 0; + *((_DWORD *)v54 + 3) = 0; + *((_BYTE *)v54 + 16) = 0; + *((_DWORD *)v54 + 5) = 0; + *((_DWORD *)v54 + 6) = 0; + *((_DWORD *)v54 + 7) = 0; + *((_DWORD *)v54 + 8) = 0; + *((_BYTE *)v54 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v54, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v55, (const std::locale::facet *)v7, v59); + v8 = *v80; + } + v9 = *(_DWORD *)(v6 + 12); + v10 = 8; + v75 = v9 & 0x4A; + if ( v75 != 64 ) + v10 = v75 == 8 ? 16 : 10; + v11 = HIDWORD(a1) == -1; + v12 = v11 & ((_DWORD)a1 != 0); + if ( v12 ) + { + v11 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v50 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = 0; + if ( v50 == -1 ) + { + LODWORD(a1) = 0; + v11 = v12; + } + } + } + v13 = a3 == -1; + v81 = v13 & (a2 != 0); + if ( v81 ) + { + v13 = 0; + if ( a2[2] >= a2[3] ) + { + v79 = v11; + v49 = (*(int (**)(void))(*a2 + 36))(); + v11 = v79; + if ( v49 == -1 ) + { + a2 = 0; + v13 = v81; + } + } + } + if ( v11 == v13 ) + { + v68 = 0; + v16 = *(_BYTE *)(v8 + 16); + LOBYTE(v14) = 0; + v73 = 1; + v78 = 0; + v82 = 0; +LABEL_36: + if ( v10 == 16 ) + { +LABEL_17: + MaxCount = 22; + Buf = 22; + v85[0] = (unsigned int *)&unk_51641C; + if ( !v16 ) + goto LABEL_39; + goto LABEL_18; + } +LABEL_37: + MaxCount = v10; + Buf = v10; + goto LABEL_38; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + { +LABEL_9: + v15 = *(_BYTE *)(v8 + 74); + v16 = *(_BYTE *)(v8 + 16); + v68 = v15 == (char)v14; + if ( v15 == (_BYTE)v14 ) + goto LABEL_11; + goto LABEL_10; + } + v51 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ) + { + v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v14 == -1 ) + LODWORD(a1) = 0; + goto LABEL_9; + } + LOBYTE(v14) = *v51; + v52 = *(_BYTE *)(v8 + 74); + v16 = *(_BYTE *)(v8 + 16); + v68 = v52 == (char)v14; + if ( v52 == (_BYTE)v14 ) + { +LABEL_11: + if ( (!v16 || *(_BYTE *)(v8 + 37) != (_BYTE)v14) && *(_BYTE *)(v8 + 36) != (_BYTE)v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 1; + HIDWORD(a1) = -1; + v73 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v73 ) + { + v78 = 0; + v16 = *(_BYTE *)(v8 + 16); + v82 = 0; + if ( v10 == 16 ) + goto LABEL_17; + goto LABEL_37; + } + v53 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v16 = *(_BYTE *)(v8 + 16); + LOBYTE(v14) = v53; + } + goto LABEL_20; + } +LABEL_10: + if ( *(_BYTE *)(v8 + 75) == (_BYTE)v14 ) + goto LABEL_11; + v68 = 0; +LABEL_20: + v78 = 0; + v82 = 0; + v74 = v75; + while ( 1 ) + { + if ( v16 && *(_BYTE *)(v8 + 37) == (_BYTE)v14 || *(_BYTE *)(v8 + 36) == (_BYTE)v14 ) + { +LABEL_68: + v73 = 0; + goto LABEL_36; + } + if ( *(_BYTE *)(v8 + 78) != (_BYTE)v14 ) + break; + v31 = !v82 || v10 == 10; + if ( !v31 ) + goto LABEL_26; + v82 = v74 == 0 || v10 == 8; + if ( !v82 ) + { + ++v78; + v82 = v31; +LABEL_30: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_31; + goto LABEL_64; + } + v18 = (_DWORD *)a1; + v78 = 0; + v10 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_31: + HIDWORD(a1) = -1; + v18[2] = v19 + 1; +LABEL_32: + v76 = 0; + if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) + { + LODWORD(a1) = 0; + v76 = 1; + } + goto LABEL_33; + } +LABEL_64: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_32; + v76 = 1; +LABEL_33: + v20 = a3 == -1; + v70 = v20 & (a2 != 0); + if ( v70 ) + { + v20 = 0; + if ( a2[2] >= a2[3] ) + { + v32 = (*(int (**)(void))(*a2 + 36))(); + v20 = 0; + if ( v32 == -1 ) + { + a2 = 0; + v20 = v70; + } + } + } + if ( v20 == v76 ) + { + v73 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_36; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v35 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) + { + v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v14 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v14) = *v35; + } + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v82 ) + goto LABEL_68; + } + if ( !v82 ) + goto LABEL_68; +LABEL_26: + if ( *(_BYTE *)(v8 + 76) != (_BYTE)v14 && *(_BYTE *)(v8 + 77) != (_BYTE)v14 ) + { + v73 = 0; + v82 = 1; + goto LABEL_36; + } + if ( v10 == 16 || v74 == 0 ) + { + v78 = 0; + v10 = 16; + v82 = 0; + goto LABEL_30; + } + v73 = 0; + MaxCount = v10; + Buf = v10; + v82 = 1; +LABEL_38: + v85[0] = (unsigned int *)&unk_51641C; + if ( v16 ) +LABEL_18: + std::string::reserve(v85, (std::string *)0x20, (unsigned int)v58); +LABEL_39: + v67 = 0xFFFFFFFF / v10; + v71 = *(_BYTE *)(v8 + 100); + if ( v71 ) + { + if ( v73 ) + { + v27 = v85[0]; + v77 = 0; + v69 = 0; + v71 = v73; + v28 = *(v85[0] - 3); + v73 = 0; + goto LABEL_53; + } + v69 = 0; + Bufb = (void *)(v8 + 78); + v77 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v14 ) + { + if ( (_BYTE)v14 == *(_BYTE *)(v8 + 36) ) + goto LABEL_103; + v39 = memchr(Bufb, (char)v14, MaxCount); + if ( !v39 ) + goto LABEL_103; + v40 = v39 - (_BYTE *)Bufb; + if ( v40 > 15 ) + v40 -= 6; + if ( v67 >= v77 ) + { + v69 |= ~v40 < v10 * v77; + ++v78; + v77 = v10 * v77 + v40; + goto LABEL_114; + } + v41 = (_DWORD *)a1; + v69 = v71; + v42 = *(_DWORD *)(a1 + 8); + if ( v42 < *(_DWORD *)(a1 + 12) ) + { +LABEL_115: + HIDWORD(a1) = -1; + v41[2] = v42 + 1; + goto LABEL_116; + } +LABEL_121: + (*(void (__fastcall **)(_DWORD *))(*v41 + 40))(v41); + v41 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v61 = v71; + goto LABEL_117; + } +LABEL_116: + v61 = 0; + if ( v41[2] >= v41[3] ) + { + v61 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v41 + 36))(v41) == -1 ) + { + LODWORD(a1) = 0; + v61 = v71; + } + } +LABEL_117: + v43 = a3 == -1; + v44 = v43 & (a2 != 0); + if ( v44 ) + { + v43 = 0; + if ( a2[2] >= a2[3] ) + { + v46 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v43 = 0; + if ( v46 == -1 ) + { + a2 = 0; + v43 = v44; + } + } + } + if ( v61 == v43 ) + { + v27 = v85[0]; + v28 = *(v85[0] - 3); + goto LABEL_53; + } + LOBYTE(v14) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v45 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) + { + v56 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v14) = v56; + if ( v56 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v14) = -1; + } + } + else + { + LOBYTE(v14) = *v45; + } + } + } + v27 = v85[0]; + v28 = *(v85[0] - 3); + if ( !v78 ) + { + v71 = 0; + v73 = *(_BYTE *)(v8 + 16); + goto LABEL_53; + } + v62 = (std::string *)(v28 + 1); + if ( v28 + 1 > *(v85[0] - 2) || *((int *)v85[0] - 1) > 0 ) + std::string::reserve(v85, v62, (unsigned int)v58); + v47 = v78; + v78 = 0; + *((_BYTE *)v85[0] + *(v85[0] - 3)) = v47; + v48 = v85[0]; + if ( (_UNKNOWN *)v85[0] != &unk_51641C ) + { + *(v85[0] - 1) = 0; + *(v48 - 3) = (unsigned int)v62; + *((_BYTE *)v48 + v28 + 1) = 0; + } +LABEL_114: + v41 = (_DWORD *)a1; + v42 = *(_DWORD *)(a1 + 8); + if ( v42 < *(_DWORD *)(a1 + 12) ) + goto LABEL_115; + goto LABEL_121; + } + if ( v73 ) + { + v57 = v73; + v27 = v85[0]; + v69 = 0; + v73 = 0; + v71 = v57; + v28 = *(v85[0] - 3); + v77 = 0; + } + else + { + v69 = 0; + v77 = 0; +LABEL_42: + v21 = (char)v14; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v14 - 48) <= 9u ) + goto LABEL_45; + while ( (unsigned __int8)(v14 - 97) <= 5u ) + { + v22 = v21 - 87; + if ( v67 < v77 ) + goto LABEL_47; +LABEL_72: + v69 |= ~v22 < v10 * v77; + v23 = (_DWORD *)a1; + v77 = v22 + v10 * v77; + ++v78; + v24 = *(_DWORD *)(a1 + 8); + if ( v24 < *(_DWORD *)(a1 + 12) ) + goto LABEL_48; +LABEL_73: + (*(void (__fastcall **)(_DWORD *, int))(*v23 + 40))(v23, v22); + v23 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_49; + v72 = 1; +LABEL_50: + v25 = a3 == -1; + v26 = v25 & (a2 != 0); + if ( v26 ) + { + v25 = 0; + if ( a2[2] >= a2[3] ) + { + v34 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v25 = 0; + if ( v34 == -1 ) + { + a2 = 0; + v25 = v26; + } + } + } + if ( v72 == v25 ) + { + v27 = v85[0]; + v71 = 1; + v28 = *(v85[0] - 3); + goto LABEL_53; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_42; + v33 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v14) = *v33; + goto LABEL_42; + } + v21 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v14) = v21; + if ( v21 != -1 ) + goto LABEL_42; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_103; + LOBYTE(v14) = -1; + } + if ( (unsigned __int8)(v14 - 65) <= 5u ) + { + v22 = v21 - 55; + goto LABEL_46; + } + } + else if ( (char)v14 > 47 && (char)(Buf + 48) > (char)v14 ) + { +LABEL_45: + v22 = (char)v14 - 48; +LABEL_46: + if ( v67 >= v77 ) + goto LABEL_72; +LABEL_47: + v23 = (_DWORD *)a1; + v69 = 1; + v24 = *(_DWORD *)(a1 + 8); + if ( v24 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_73; +LABEL_48: + HIDWORD(a1) = -1; + v23[2] = v24 + 1; +LABEL_49: + v72 = 0; + if ( v23[2] >= v23[3] ) + { + v72 = 0; + if ( (*(int (__fastcall **)(_DWORD *, int))(*v23 + 36))(v23, v22) == -1 ) + { + LODWORD(a1) = 0; + v72 = 1; + } + } + goto LABEL_50; + } +LABEL_103: + v27 = v85[0]; + v28 = *(v85[0] - 3); + v71 = 0; + } +LABEL_53: + if ( v28 ) + { + Bufa = (std::string *)(v28 + 1); + if ( v28 + 1 > *(v27 - 2) || (int)*(v27 - 1) > 0 ) + std::string::reserve(v85, Bufa, (unsigned int)v58); + *((_BYTE *)v85[0] + *(v85[0] - 3)) = v78; + v36 = v85[0]; + v37 = v85[0] - 3; + if ( (_UNKNOWN *)v85[0] != &unk_51641C ) + { + *(v85[0] - 1) = 0; + *(v36 - 3) = (unsigned int)Bufa; + *((_BYTE *)v37 + v28 + 13) = 0; + v36 = v85[0]; + v37 = v85[0] - 3; + } + Bufc = v37; + v38 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v85); + v29 = (volatile signed __int32 *)Bufc; + if ( !v38 ) + *a5 = 4; + if ( v78 || v82 || *(v36 - 3) ) + goto LABEL_97; +LABEL_56: + *a6 = 0; + *a5 = 4; + } + else + { + v29 = (volatile signed __int32 *)(v27 - 3); + if ( !v78 && !v82 ) + goto LABEL_56; +LABEL_97: + if ( v73 ) + goto LABEL_56; + if ( v69 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v68 ) + v77 = -v77; + *a6 = v77; + } + } + if ( v71 ) + *a5 |= 2u; + result = a1; + if ( v29 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v83 = a1; + std::string::_Rep::_M_dispose(v29, (int)&v84); + return v83; + } + return result; +} +// 4883C7: variable 'v58' is possibly undefined +// 48842D: variable 'v59' is possibly undefined +// 488442: variable 'v22' is possibly undefined +// 516628: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (00488630) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + unsigned int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // bl + char v11; // dl + char v12; // dl + int v13; // ebx + char v14; // al + char v15; // cl + unsigned int v16; // eax + _DWORD *v17; // ecx + unsigned int v18; // eax + char v19; // dl + int v20; // edx + int v21; // edx + _DWORD *v22; // ecx + unsigned int v23; // eax + char v24; // al + char v25; // bl + unsigned int *v26; // edx + int v27; // ebx + unsigned __int64 v28; // kr00_8 + bool v30; // al + int v31; // eax + _BYTE *v32; // eax + int v33; // edx + _BYTE *v34; // eax + int v35; // eax + _BYTE *v36; // eax + int v37; // eax + _DWORD *v38; // ecx + unsigned int v39; // eax + char v40; // al + char v41; // bl + _BYTE *v42; // eax + int v43; // edx + char v44; // cl + unsigned int *v45; // eax + int v46; // eax + _BYTE *v47; // eax + char v48; // al + char v49; // al + int v50; // eax + char v51; // al + unsigned int v52; // [esp+4h] [ebp-64h] + bool v53; // [esp+18h] [ebp-50h] + size_t MaxCount; // [esp+1Ch] [ebp-4Ch] + char v55; // [esp+20h] [ebp-48h] + std::string *v56; // [esp+20h] [ebp-48h] + unsigned int v57; // [esp+24h] [ebp-44h] + int Buf; // [esp+28h] [ebp-40h] + void *Bufa; // [esp+28h] [ebp-40h] + unsigned int v60; // [esp+2Ch] [ebp-3Ch] + char v61; // [esp+30h] [ebp-38h] + int v62; // [esp+30h] [ebp-38h] + int v63; // [esp+34h] [ebp-34h] + char v64; // [esp+34h] [ebp-34h] + unsigned int v65; // [esp+34h] [ebp-34h] + int v66; // [esp+38h] [ebp-30h] + char v67; // [esp+3Dh] [ebp-2Bh] + char v68; // [esp+3Eh] [ebp-2Ah] + char v69; // [esp+3Eh] [ebp-2Ah] + char v70; // [esp+3Eh] [ebp-2Ah] + char v71; // [esp+3Fh] [ebp-29h] + bool v72; // [esp+3Fh] [ebp-29h] + char v73; // [esp+3Fh] [ebp-29h] + char v74; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v75[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = 8; + v7 = a4; + v8 = std::__use_cache>::operator()((int *)(a4 + 108)); + v9 = *(_DWORD *)(v7 + 12) & 0x4A; + v63 = v9; + if ( v9 != 64 ) + v6 = v9 == 8 ? 16 : 10; + v10 = HIDWORD(a1) == -1; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v10 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v73 = v11; + if ( (*(int (**)(void))(*(_DWORD *)a1 + 36))() == -1 ) + { + LODWORD(a1) = 0; + v10 = v73; + } + } + } + v12 = a3 == -1; + v71 = v12 & (a2 != 0); + if ( v71 ) + { + v12 = 0; + if ( a2[2] >= a2[3] ) + { + v46 = (*(int (**)(void))(*a2 + 36))(); + v12 = 0; + if ( v46 == -1 ) + { + a2 = 0; + v12 = v71; + } + } + } + if ( v12 == v10 ) + { + v53 = 0; + v15 = *(_BYTE *)(v8 + 16); + LOBYTE(v13) = 0; + v61 = 1; + v66 = 0; + v72 = 0; +LABEL_34: + if ( v6 == 16 ) + { +LABEL_15: + MaxCount = 22; + Buf = 22; + v75[0] = (unsigned int *)&unk_51641C; + if ( !v15 ) + goto LABEL_37; + goto LABEL_16; + } +LABEL_35: + MaxCount = v6; + Buf = v6; + goto LABEL_36; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + { +LABEL_7: + v14 = *(_BYTE *)(v8 + 74); + v15 = *(_BYTE *)(v8 + 16); + v53 = v14 == (char)v13; + if ( v14 == (_BYTE)v13 ) + goto LABEL_9; + goto LABEL_8; + } + v47 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) + { + v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v13 == -1 ) + LODWORD(a1) = 0; + goto LABEL_7; + } + LOBYTE(v13) = *v47; + v48 = *(_BYTE *)(v8 + 74); + v15 = *(_BYTE *)(v8 + 16); + v53 = v48 == (char)v13; + if ( v48 == (_BYTE)v13 ) + { +LABEL_9: + if ( (!v15 || *(_BYTE *)(v8 + 37) != (_BYTE)v13) && *(_BYTE *)(v8 + 36) != (_BYTE)v13 ) + { + v16 = *(_DWORD *)(a1 + 8); + if ( v16 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v16 + 1; + HIDWORD(a1) = -1; + v61 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v61 ) + { + v66 = 0; + v15 = *(_BYTE *)(v8 + 16); + v72 = 0; + if ( v6 == 16 ) + goto LABEL_15; + goto LABEL_35; + } + v49 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v15 = *(_BYTE *)(v8 + 16); + LOBYTE(v13) = v49; + } + goto LABEL_18; + } +LABEL_8: + if ( *(_BYTE *)(v8 + 75) == (_BYTE)v13 ) + goto LABEL_9; + v53 = 0; +LABEL_18: + v66 = 0; + v72 = 0; + v62 = v63; + while ( 1 ) + { + if ( v15 && *(_BYTE *)(v8 + 37) == (_BYTE)v13 || *(_BYTE *)(v8 + 36) == (_BYTE)v13 ) + { +LABEL_66: + v61 = 0; + goto LABEL_34; + } + if ( *(_BYTE *)(v8 + 78) != (_BYTE)v13 ) + break; + v30 = !v72 || v6 == 10; + if ( !v30 ) + goto LABEL_24; + v72 = v62 == 0 || v6 == 8; + if ( !v72 ) + { + ++v66; + v72 = v30; +LABEL_28: + v17 = (_DWORD *)a1; + v18 = *(_DWORD *)(a1 + 8); + if ( v18 < *(_DWORD *)(a1 + 12) ) + goto LABEL_29; + goto LABEL_62; + } + v17 = (_DWORD *)a1; + v66 = 0; + v6 = 8; + v18 = *(_DWORD *)(a1 + 8); + if ( v18 < *(_DWORD *)(a1 + 12) ) + { +LABEL_29: + HIDWORD(a1) = -1; + v17[2] = v18 + 1; +LABEL_30: + v64 = 0; + if ( v17[2] >= v17[3] && (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17) == -1 ) + { + LODWORD(a1) = 0; + v64 = 1; + } + goto LABEL_31; + } +LABEL_62: + (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); + v17 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_30; + v64 = 1; +LABEL_31: + v19 = a3 == -1; + v68 = v19 & (a2 != 0); + if ( v68 ) + { + v19 = 0; + if ( a2[2] >= a2[3] ) + { + v31 = (*(int (**)(void))(*a2 + 36))(); + v19 = 0; + if ( v31 == -1 ) + { + a2 = 0; + v19 = v68; + } + } + } + if ( v19 == v64 ) + { + v61 = 1; + v15 = *(_BYTE *)(v8 + 16); + goto LABEL_34; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v34 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) + { + v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v13 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v13) = *v34; + } + } + v15 = *(_BYTE *)(v8 + 16); + if ( !v72 ) + goto LABEL_66; + } + if ( !v72 ) + goto LABEL_66; +LABEL_24: + if ( *(_BYTE *)(v8 + 76) != (_BYTE)v13 && *(_BYTE *)(v8 + 77) != (_BYTE)v13 ) + { + v61 = 0; + v72 = 1; + goto LABEL_34; + } + if ( v62 == 0 || v6 == 16 ) + { + v66 = 0; + v6 = 16; + v72 = 0; + goto LABEL_28; + } + v61 = 0; + MaxCount = v6; + Buf = v6; + v72 = 1; +LABEL_36: + v75[0] = (unsigned int *)&unk_51641C; + if ( v15 ) +LABEL_16: + std::string::reserve(v75, (std::string *)0x20, v52); +LABEL_37: + v57 = v53 + 0x7FFFFFFF; + v60 = v57 / v6; + v69 = *(_BYTE *)(v8 + 100); + if ( v69 ) + { + if ( v61 ) + { + v26 = v75[0]; + v65 = 0; + v67 = 0; + v69 = v61; + v27 = *(v75[0] - 3); + v61 = 0; + goto LABEL_51; + } + v67 = 0; + Bufa = (void *)(v8 + 78); + v65 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v13 ) + { + if ( (_BYTE)v13 == *(_BYTE *)(v8 + 36) ) + goto LABEL_97; + v36 = memchr(Bufa, (char)v13, MaxCount); + if ( !v36 ) + goto LABEL_97; + v37 = v36 - (_BYTE *)Bufa; + if ( v37 > 15 ) + v37 -= 6; + if ( v60 >= v65 ) + { + v67 |= v57 - v37 < v6 * v65; + ++v66; + v65 = v6 * v65 + v37; + goto LABEL_108; + } + v38 = (_DWORD *)a1; + v67 = v69; + v39 = *(_DWORD *)(a1 + 8); + if ( v39 < *(_DWORD *)(a1 + 12) ) + { +LABEL_109: + HIDWORD(a1) = -1; + v38[2] = v39 + 1; + goto LABEL_110; + } +LABEL_115: + (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); + v38 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v55 = v69; + goto LABEL_111; + } +LABEL_110: + v55 = 0; + if ( v38[2] >= v38[3] ) + { + v55 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38) == -1 ) + { + LODWORD(a1) = 0; + v55 = v69; + } + } +LABEL_111: + v40 = a3 == -1; + v41 = v40 & (a2 != 0); + if ( v41 ) + { + v40 = 0; + if ( a2[2] >= a2[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v40 = 0; + if ( v43 == -1 ) + { + a2 = 0; + v40 = v41; + } + } + } + if ( v55 == v40 ) + { + v26 = v75[0]; + v27 = *(v75[0] - 3); + goto LABEL_51; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v42 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v42 >= *(_DWORD *)(a1 + 12) ) + { + v50 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v13) = v50; + if ( v50 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v13) = -1; + } + } + else + { + LOBYTE(v13) = *v42; + } + } + } + v26 = v75[0]; + v27 = *(v75[0] - 3); + if ( !v66 ) + { + v69 = 0; + v61 = *(_BYTE *)(v8 + 16); + goto LABEL_51; + } + v56 = (std::string *)(v27 + 1); + if ( v27 + 1 > *(v75[0] - 2) || *((int *)v75[0] - 1) > 0 ) + std::string::reserve(v75, v56, v52); + v44 = v66; + v66 = 0; + *((_BYTE *)v75[0] + *(v75[0] - 3)) = v44; + v45 = v75[0]; + if ( (_UNKNOWN *)v75[0] != &unk_51641C ) + { + *(v75[0] - 1) = 0; + *(v45 - 3) = (unsigned int)v56; + *((_BYTE *)v45 + v27 + 1) = 0; + } +LABEL_108: + v38 = (_DWORD *)a1; + v39 = *(_DWORD *)(a1 + 8); + if ( v39 < *(_DWORD *)(a1 + 12) ) + goto LABEL_109; + goto LABEL_115; + } + if ( v61 ) + { + v51 = v61; + v26 = v75[0]; + v67 = 0; + v61 = 0; + v69 = v51; + v27 = *(v75[0] - 3); + v65 = 0; + } + else + { + v67 = 0; + v65 = 0; +LABEL_40: + v20 = (char)v13; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v13 - 48) <= 9u ) + goto LABEL_43; + while ( (unsigned __int8)(v13 - 97) <= 5u ) + { + v21 = v20 - 87; + if ( v60 < v65 ) + goto LABEL_45; +LABEL_70: + v67 |= v57 - v21 < v6 * v65; + v22 = (_DWORD *)a1; + v65 = v21 + v6 * v65; + ++v66; + v23 = *(_DWORD *)(a1 + 8); + if ( v23 < *(_DWORD *)(a1 + 12) ) + goto LABEL_46; +LABEL_71: + (*(void (__fastcall **)(_DWORD *, int))(*v22 + 40))(v22, v21); + v22 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_47; + v70 = 1; +LABEL_48: + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v24 = 0; + if ( a2[2] >= a2[3] ) + { + v33 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v24 = 0; + if ( v33 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + } + if ( v70 == v24 ) + { + v26 = v75[0]; + v69 = 1; + v27 = *(v75[0] - 3); + goto LABEL_51; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_40; + v32 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v32 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v13) = *v32; + goto LABEL_40; + } + v20 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v13) = v20; + if ( v20 != -1 ) + goto LABEL_40; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_97; + LOBYTE(v13) = -1; + } + if ( (unsigned __int8)(v13 - 65) <= 5u ) + { + v21 = v20 - 55; + goto LABEL_44; + } + } + else if ( (char)v13 > 47 && (char)(Buf + 48) > (char)v13 ) + { +LABEL_43: + v21 = (char)v13 - 48; +LABEL_44: + if ( v60 >= v65 ) + goto LABEL_70; +LABEL_45: + v22 = (_DWORD *)a1; + v67 = 1; + v23 = *(_DWORD *)(a1 + 8); + if ( v23 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_71; +LABEL_46: + HIDWORD(a1) = -1; + v22[2] = v23 + 1; +LABEL_47: + v70 = 0; + if ( v22[2] >= v22[3] ) + { + v70 = 0; + if ( (*(int (__fastcall **)(_DWORD *, int))(*v22 + 36))(v22, v21) == -1 ) + { + LODWORD(a1) = 0; + v70 = 1; + } + } + goto LABEL_48; + } +LABEL_97: + v26 = v75[0]; + v27 = *(v75[0] - 3); + v69 = 0; + } +LABEL_51: + if ( v27 ) + { + std::string::push_back(v75, (std::string *)(char)v66, v52); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v75) ) + *a5 = 4; + v26 = v75[0]; + if ( v66 || v72 || *(v75[0] - 3) ) + goto LABEL_91; +LABEL_54: + *a6 = 0; + *a5 = 4; + } + else + { + if ( !v66 && !v72 ) + goto LABEL_54; +LABEL_91: + if ( v61 ) + goto LABEL_54; + if ( v67 ) + { + *a6 = v53 + 0x7FFFFFFF; + *a5 = 4; + } + else + { + v35 = v65; + if ( v53 ) + v35 = -v65; + *a6 = v35; + } + } + if ( v69 ) + *a5 |= 2u; + v28 = a1; + if ( v26 == (unsigned int *)&unk_51641C ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v26 - 3, (int)&v74); + return v28; +} +// 488763: variable 'v52' is possibly undefined +// 488F22: variable 'v21' is possibly undefined + +//----- (004890B0) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // eax + unsigned int v10; // edi + char v11; // dl + char v12; // bl + char v13; // bl + int v14; // ebx + char v15; // al + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + char v20; // dl + int v21; // edx + int v22; // edx + _DWORD *v23; // ecx + unsigned int v24; // eax + char v25; // al + char v26; // bl + unsigned int *v27; // ecx + int v28; // ebx + volatile signed __int32 *v29; // ecx + unsigned __int64 result; // rax + bool v31; // al + int v32; // eax + _BYTE *v33; // eax + int v34; // edx + _BYTE *v35; // eax + unsigned int *v36; // edi + unsigned int *v37; // ecx + char v38; // al + _BYTE *v39; // eax + int v40; // eax + _DWORD *v41; // ecx + unsigned int v42; // eax + char v43; // al + char v44; // bl + _BYTE *v45; // eax + int v46; // edx + char v47; // cl + unsigned int *v48; // eax + int v49; // eax + int v50; // eax + _BYTE *v51; // eax + char v52; // al + char v53; // al + std::locale::_Impl *v54; // eax + std::locale::_Impl *v55; // esi + int v56; // eax + char v57; // al + void (__cdecl *v58)(void *); // [esp+4h] [ebp-64h] + unsigned int v59; // [esp+8h] [ebp-60h] + size_t MaxCount; // [esp+18h] [ebp-50h] + char v61; // [esp+1Ch] [ebp-4Ch] + std::string *v62; // [esp+1Ch] [ebp-4Ch] + int Buf; // [esp+20h] [ebp-48h] + std::string *Bufa; // [esp+20h] [ebp-48h] + unsigned int *Bufc; // [esp+20h] [ebp-48h] + void *Bufb; // [esp+20h] [ebp-48h] + unsigned int v67; // [esp+24h] [ebp-44h] + bool v68; // [esp+29h] [ebp-3Fh] + char v69; // [esp+2Ah] [ebp-3Eh] + char v70; // [esp+2Bh] [ebp-3Dh] + char v71; // [esp+2Bh] [ebp-3Dh] + char v72; // [esp+2Bh] [ebp-3Dh] + char v73; // [esp+2Ch] [ebp-3Ch] + int v74; // [esp+2Ch] [ebp-3Ch] + int v75; // [esp+30h] [ebp-38h] + char v76; // [esp+30h] [ebp-38h] + unsigned int v77; // [esp+30h] [ebp-38h] + int v78; // [esp+34h] [ebp-34h] + char v79; // [esp+34h] [ebp-34h] + int *v80; // [esp+38h] [ebp-30h] + char v81; // [esp+38h] [ebp-30h] + bool v82; // [esp+38h] [ebp-30h] + unsigned __int64 v83; // [esp+38h] [ebp-30h] + char v84; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v85[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v80 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v54 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v58); + *((_DWORD *)v54 + 1) = 0; + v55 = v54; + *((_WORD *)v54 + 18) = 0; + *(_DWORD *)v54 = &off_538BD4; + *((_DWORD *)v54 + 2) = 0; + *((_DWORD *)v54 + 3) = 0; + *((_BYTE *)v54 + 16) = 0; + *((_DWORD *)v54 + 5) = 0; + *((_DWORD *)v54 + 6) = 0; + *((_DWORD *)v54 + 7) = 0; + *((_DWORD *)v54 + 8) = 0; + *((_BYTE *)v54 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v54, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v55, (const std::locale::facet *)v7, v59); + v8 = *v80; + } + v9 = *(_DWORD *)(v6 + 12); + v10 = 8; + v75 = v9 & 0x4A; + if ( v75 != 64 ) + v10 = v75 == 8 ? 16 : 10; + v11 = HIDWORD(a1) == -1; + v12 = v11 & ((_DWORD)a1 != 0); + if ( v12 ) + { + v11 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v50 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = 0; + if ( v50 == -1 ) + { + LODWORD(a1) = 0; + v11 = v12; + } + } + } + v13 = a3 == -1; + v81 = v13 & (a2 != 0); + if ( v81 ) + { + v13 = 0; + if ( a2[2] >= a2[3] ) + { + v79 = v11; + v49 = (*(int (**)(void))(*a2 + 36))(); + v11 = v79; + if ( v49 == -1 ) + { + a2 = 0; + v13 = v81; + } + } + } + if ( v11 == v13 ) + { + v68 = 0; + v16 = *(_BYTE *)(v8 + 16); + LOBYTE(v14) = 0; + v73 = 1; + v78 = 0; + v82 = 0; +LABEL_36: + if ( v10 == 16 ) + { +LABEL_17: + MaxCount = 22; + Buf = 22; + v85[0] = (unsigned int *)&unk_51641C; + if ( !v16 ) + goto LABEL_39; + goto LABEL_18; + } +LABEL_37: + MaxCount = v10; + Buf = v10; + goto LABEL_38; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + { +LABEL_9: + v15 = *(_BYTE *)(v8 + 74); + v16 = *(_BYTE *)(v8 + 16); + v68 = v15 == (char)v14; + if ( v15 == (_BYTE)v14 ) + goto LABEL_11; + goto LABEL_10; + } + v51 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ) + { + v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v14 == -1 ) + LODWORD(a1) = 0; + goto LABEL_9; + } + LOBYTE(v14) = *v51; + v52 = *(_BYTE *)(v8 + 74); + v16 = *(_BYTE *)(v8 + 16); + v68 = v52 == (char)v14; + if ( v52 == (_BYTE)v14 ) + { +LABEL_11: + if ( (!v16 || *(_BYTE *)(v8 + 37) != (_BYTE)v14) && *(_BYTE *)(v8 + 36) != (_BYTE)v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 1; + HIDWORD(a1) = -1; + v73 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v73 ) + { + v78 = 0; + v16 = *(_BYTE *)(v8 + 16); + v82 = 0; + if ( v10 == 16 ) + goto LABEL_17; + goto LABEL_37; + } + v53 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v16 = *(_BYTE *)(v8 + 16); + LOBYTE(v14) = v53; + } + goto LABEL_20; + } +LABEL_10: + if ( *(_BYTE *)(v8 + 75) == (_BYTE)v14 ) + goto LABEL_11; + v68 = 0; +LABEL_20: + v78 = 0; + v82 = 0; + v74 = v75; + while ( 1 ) + { + if ( v16 && *(_BYTE *)(v8 + 37) == (_BYTE)v14 || *(_BYTE *)(v8 + 36) == (_BYTE)v14 ) + { +LABEL_68: + v73 = 0; + goto LABEL_36; + } + if ( *(_BYTE *)(v8 + 78) != (_BYTE)v14 ) + break; + v31 = !v82 || v10 == 10; + if ( !v31 ) + goto LABEL_26; + v82 = v74 == 0 || v10 == 8; + if ( !v82 ) + { + ++v78; + v82 = v31; +LABEL_30: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_31; + goto LABEL_64; + } + v18 = (_DWORD *)a1; + v78 = 0; + v10 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_31: + HIDWORD(a1) = -1; + v18[2] = v19 + 1; +LABEL_32: + v76 = 0; + if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) + { + LODWORD(a1) = 0; + v76 = 1; + } + goto LABEL_33; + } +LABEL_64: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_32; + v76 = 1; +LABEL_33: + v20 = a3 == -1; + v70 = v20 & (a2 != 0); + if ( v70 ) + { + v20 = 0; + if ( a2[2] >= a2[3] ) + { + v32 = (*(int (**)(void))(*a2 + 36))(); + v20 = 0; + if ( v32 == -1 ) + { + a2 = 0; + v20 = v70; + } + } + } + if ( v20 == v76 ) + { + v73 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_36; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v35 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) + { + v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v14 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v14) = *v35; + } + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v82 ) + goto LABEL_68; + } + if ( !v82 ) + goto LABEL_68; +LABEL_26: + if ( *(_BYTE *)(v8 + 76) != (_BYTE)v14 && *(_BYTE *)(v8 + 77) != (_BYTE)v14 ) + { + v73 = 0; + v82 = 1; + goto LABEL_36; + } + if ( v10 == 16 || v74 == 0 ) + { + v78 = 0; + v10 = 16; + v82 = 0; + goto LABEL_30; + } + v73 = 0; + MaxCount = v10; + Buf = v10; + v82 = 1; +LABEL_38: + v85[0] = (unsigned int *)&unk_51641C; + if ( v16 ) +LABEL_18: + std::string::reserve(v85, (std::string *)0x20, (unsigned int)v58); +LABEL_39: + v67 = 0xFFFFFFFF / v10; + v71 = *(_BYTE *)(v8 + 100); + if ( v71 ) + { + if ( v73 ) + { + v27 = v85[0]; + v77 = 0; + v69 = 0; + v71 = v73; + v28 = *(v85[0] - 3); + v73 = 0; + goto LABEL_53; + } + v69 = 0; + Bufb = (void *)(v8 + 78); + v77 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v14 ) + { + if ( (_BYTE)v14 == *(_BYTE *)(v8 + 36) ) + goto LABEL_103; + v39 = memchr(Bufb, (char)v14, MaxCount); + if ( !v39 ) + goto LABEL_103; + v40 = v39 - (_BYTE *)Bufb; + if ( v40 > 15 ) + v40 -= 6; + if ( v67 >= v77 ) + { + v69 |= ~v40 < v10 * v77; + ++v78; + v77 = v10 * v77 + v40; + goto LABEL_114; + } + v41 = (_DWORD *)a1; + v69 = v71; + v42 = *(_DWORD *)(a1 + 8); + if ( v42 < *(_DWORD *)(a1 + 12) ) + { +LABEL_115: + HIDWORD(a1) = -1; + v41[2] = v42 + 1; + goto LABEL_116; + } +LABEL_121: + (*(void (__fastcall **)(_DWORD *))(*v41 + 40))(v41); + v41 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v61 = v71; + goto LABEL_117; + } +LABEL_116: + v61 = 0; + if ( v41[2] >= v41[3] ) + { + v61 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v41 + 36))(v41) == -1 ) + { + LODWORD(a1) = 0; + v61 = v71; + } + } +LABEL_117: + v43 = a3 == -1; + v44 = v43 & (a2 != 0); + if ( v44 ) + { + v43 = 0; + if ( a2[2] >= a2[3] ) + { + v46 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v43 = 0; + if ( v46 == -1 ) + { + a2 = 0; + v43 = v44; + } + } + } + if ( v61 == v43 ) + { + v27 = v85[0]; + v28 = *(v85[0] - 3); + goto LABEL_53; + } + LOBYTE(v14) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v45 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) + { + v56 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v14) = v56; + if ( v56 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v14) = -1; + } + } + else + { + LOBYTE(v14) = *v45; + } + } + } + v27 = v85[0]; + v28 = *(v85[0] - 3); + if ( !v78 ) + { + v71 = 0; + v73 = *(_BYTE *)(v8 + 16); + goto LABEL_53; + } + v62 = (std::string *)(v28 + 1); + if ( v28 + 1 > *(v85[0] - 2) || *((int *)v85[0] - 1) > 0 ) + std::string::reserve(v85, v62, (unsigned int)v58); + v47 = v78; + v78 = 0; + *((_BYTE *)v85[0] + *(v85[0] - 3)) = v47; + v48 = v85[0]; + if ( (_UNKNOWN *)v85[0] != &unk_51641C ) + { + *(v85[0] - 1) = 0; + *(v48 - 3) = (unsigned int)v62; + *((_BYTE *)v48 + v28 + 1) = 0; + } +LABEL_114: + v41 = (_DWORD *)a1; + v42 = *(_DWORD *)(a1 + 8); + if ( v42 < *(_DWORD *)(a1 + 12) ) + goto LABEL_115; + goto LABEL_121; + } + if ( v73 ) + { + v57 = v73; + v27 = v85[0]; + v69 = 0; + v73 = 0; + v71 = v57; + v28 = *(v85[0] - 3); + v77 = 0; + } + else + { + v69 = 0; + v77 = 0; +LABEL_42: + v21 = (char)v14; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v14 - 48) <= 9u ) + goto LABEL_45; + while ( (unsigned __int8)(v14 - 97) <= 5u ) + { + v22 = v21 - 87; + if ( v67 < v77 ) + goto LABEL_47; +LABEL_72: + v69 |= ~v22 < v10 * v77; + v23 = (_DWORD *)a1; + v77 = v22 + v10 * v77; + ++v78; + v24 = *(_DWORD *)(a1 + 8); + if ( v24 < *(_DWORD *)(a1 + 12) ) + goto LABEL_48; +LABEL_73: + (*(void (__fastcall **)(_DWORD *, int))(*v23 + 40))(v23, v22); + v23 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_49; + v72 = 1; +LABEL_50: + v25 = a3 == -1; + v26 = v25 & (a2 != 0); + if ( v26 ) + { + v25 = 0; + if ( a2[2] >= a2[3] ) + { + v34 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v25 = 0; + if ( v34 == -1 ) + { + a2 = 0; + v25 = v26; + } + } + } + if ( v72 == v25 ) + { + v27 = v85[0]; + v71 = 1; + v28 = *(v85[0] - 3); + goto LABEL_53; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_42; + v33 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v14) = *v33; + goto LABEL_42; + } + v21 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v14) = v21; + if ( v21 != -1 ) + goto LABEL_42; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_103; + LOBYTE(v14) = -1; + } + if ( (unsigned __int8)(v14 - 65) <= 5u ) + { + v22 = v21 - 55; + goto LABEL_46; + } + } + else if ( (char)v14 > 47 && (char)(Buf + 48) > (char)v14 ) + { +LABEL_45: + v22 = (char)v14 - 48; +LABEL_46: + if ( v67 >= v77 ) + goto LABEL_72; +LABEL_47: + v23 = (_DWORD *)a1; + v69 = 1; + v24 = *(_DWORD *)(a1 + 8); + if ( v24 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_73; +LABEL_48: + HIDWORD(a1) = -1; + v23[2] = v24 + 1; +LABEL_49: + v72 = 0; + if ( v23[2] >= v23[3] ) + { + v72 = 0; + if ( (*(int (__fastcall **)(_DWORD *, int))(*v23 + 36))(v23, v22) == -1 ) + { + LODWORD(a1) = 0; + v72 = 1; + } + } + goto LABEL_50; + } +LABEL_103: + v27 = v85[0]; + v28 = *(v85[0] - 3); + v71 = 0; + } +LABEL_53: + if ( v28 ) + { + Bufa = (std::string *)(v28 + 1); + if ( v28 + 1 > *(v27 - 2) || (int)*(v27 - 1) > 0 ) + std::string::reserve(v85, Bufa, (unsigned int)v58); + *((_BYTE *)v85[0] + *(v85[0] - 3)) = v78; + v36 = v85[0]; + v37 = v85[0] - 3; + if ( (_UNKNOWN *)v85[0] != &unk_51641C ) + { + *(v85[0] - 1) = 0; + *(v36 - 3) = (unsigned int)Bufa; + *((_BYTE *)v37 + v28 + 13) = 0; + v36 = v85[0]; + v37 = v85[0] - 3; + } + Bufc = v37; + v38 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v85); + v29 = (volatile signed __int32 *)Bufc; + if ( !v38 ) + *a5 = 4; + if ( v78 || v82 || *(v36 - 3) ) + goto LABEL_97; +LABEL_56: + *a6 = 0; + *a5 = 4; + } + else + { + v29 = (volatile signed __int32 *)(v27 - 3); + if ( !v78 && !v82 ) + goto LABEL_56; +LABEL_97: + if ( v73 ) + goto LABEL_56; + if ( v69 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v68 ) + v77 = -v77; + *a6 = v77; + } + } + if ( v71 ) + *a5 |= 2u; + result = a1; + if ( v29 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v83 = a1; + std::string::_Rep::_M_dispose(v29, (int)&v84); + return v83; + } + return result; +} +// 489A07: variable 'v58' is possibly undefined +// 489A6D: variable 'v59' is possibly undefined +// 489A82: variable 'v22' is possibly undefined +// 516628: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (00489C70) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned __int16 *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // bl + char v12; // bl + int v13; // ebx + char v14; // al + char v15; // cl + unsigned int v16; // eax + _DWORD *v17; // ecx + unsigned int v18; // eax + char v19; // dl + unsigned int v20; // edx + int v21; // eax + _DWORD *v22; // ecx + unsigned int v23; // eax + char v24; // al + char v25; // bl + unsigned int *v26; // edx + int v27; // ebx + unsigned __int64 v28; // kr00_8 + bool v30; // al + int v31; // eax + _BYTE *v32; // eax + _BYTE *v33; // eax + _BYTE *v34; // eax + int v35; // eax + _DWORD *v36; // ecx + unsigned int v37; // eax + char v38; // al + char v39; // bl + _BYTE *v40; // eax + int v41; // edx + char v42; // cl + unsigned int *v43; // eax + int v44; // eax + int v45; // eax + _BYTE *v46; // eax + char v47; // al + char v48; // al + int v49; // eax + char v50; // al + unsigned int v51; // [esp+4h] [ebp-54h] + size_t MaxCount; // [esp+10h] [ebp-48h] + char v53; // [esp+14h] [ebp-44h] + std::string *v54; // [esp+14h] [ebp-44h] + int Buf; // [esp+18h] [ebp-40h] + void *Bufa; // [esp+18h] [ebp-40h] + int v57; // [esp+1Ch] [ebp-3Ch] + char v58; // [esp+20h] [ebp-38h] + int v59; // [esp+20h] [ebp-38h] + int v60; // [esp+24h] [ebp-34h] + char v61; // [esp+24h] [ebp-34h] + unsigned __int16 v62; // [esp+24h] [ebp-34h] + int v63; // [esp+28h] [ebp-30h] + char v64; // [esp+28h] [ebp-30h] + bool v65; // [esp+2Ch] [ebp-2Ch] + char v66; // [esp+2Dh] [ebp-2Bh] + char v67; // [esp+2Eh] [ebp-2Ah] + char v68; // [esp+2Eh] [ebp-2Ah] + char v69; // [esp+2Eh] [ebp-2Ah] + char v70; // [esp+2Fh] [ebp-29h] + bool v71; // [esp+2Fh] [ebp-29h] + char v72; // [esp+3Bh] [ebp-1Dh] BYREF + unsigned int *v73[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v6 = 8; + v7 = a4; + v8 = std::__use_cache>::operator()((int *)(a4 + 108)); + v9 = *(_DWORD *)(v7 + 12) & 0x4A; + v60 = v9; + if ( v9 != 64 ) + v6 = v9 == 8 ? 16 : 10; + v10 = HIDWORD(a1) == -1; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v10 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v45 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v10 = 0; + if ( v45 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + } + v12 = a3 == -1; + v70 = v12 & (a2 != 0); + if ( v70 ) + { + v12 = 0; + if ( a2[2] >= a2[3] ) + { + v64 = v10; + v44 = (*(int (**)(void))(*a2 + 36))(); + v10 = v64; + if ( v44 == -1 ) + { + a2 = 0; + v12 = v70; + } + } + } + if ( v10 == v12 ) + { + v65 = 0; + v15 = *(_BYTE *)(v8 + 16); + LOBYTE(v13) = 0; + v58 = 1; + v63 = 0; + v71 = 0; +LABEL_34: + if ( v6 == 16 ) + { +LABEL_15: + MaxCount = 22; + Buf = 22; + v73[0] = (unsigned int *)&unk_51641C; + if ( !v15 ) + goto LABEL_37; + goto LABEL_16; + } +LABEL_35: + MaxCount = v6; + Buf = v6; + goto LABEL_36; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + { +LABEL_7: + v14 = *(_BYTE *)(v8 + 74); + v15 = *(_BYTE *)(v8 + 16); + v65 = v14 == (char)v13; + if ( v14 == (_BYTE)v13 ) + goto LABEL_9; + goto LABEL_8; + } + v46 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ) + { + v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v13 == -1 ) + LODWORD(a1) = 0; + goto LABEL_7; + } + LOBYTE(v13) = *v46; + v47 = *(_BYTE *)(v8 + 74); + v15 = *(_BYTE *)(v8 + 16); + v65 = v47 == (char)v13; + if ( v47 == (_BYTE)v13 ) + { +LABEL_9: + if ( (!v15 || *(_BYTE *)(v8 + 37) != (_BYTE)v13) && *(_BYTE *)(v8 + 36) != (_BYTE)v13 ) + { + v16 = *(_DWORD *)(a1 + 8); + if ( v16 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v16 + 1; + HIDWORD(a1) = -1; + v58 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v58 ) + { + v63 = 0; + v15 = *(_BYTE *)(v8 + 16); + v71 = 0; + if ( v6 == 16 ) + goto LABEL_15; + goto LABEL_35; + } + v48 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v15 = *(_BYTE *)(v8 + 16); + LOBYTE(v13) = v48; + } + goto LABEL_18; + } +LABEL_8: + if ( *(_BYTE *)(v8 + 75) == (_BYTE)v13 ) + goto LABEL_9; + v65 = 0; +LABEL_18: + v63 = 0; + v71 = 0; + v59 = v60; + while ( 1 ) + { + if ( v15 && *(_BYTE *)(v8 + 37) == (_BYTE)v13 || *(_BYTE *)(v8 + 36) == (_BYTE)v13 ) + { +LABEL_66: + v58 = 0; + goto LABEL_34; + } + if ( *(_BYTE *)(v8 + 78) != (_BYTE)v13 ) + break; + v30 = !v71 || v6 == 10; + if ( !v30 ) + goto LABEL_24; + v71 = v59 == 0 || v6 == 8; + if ( !v71 ) + { + ++v63; + v71 = v30; +LABEL_28: + v17 = (_DWORD *)a1; + v18 = *(_DWORD *)(a1 + 8); + if ( v18 < *(_DWORD *)(a1 + 12) ) + goto LABEL_29; + goto LABEL_62; + } + v17 = (_DWORD *)a1; + v63 = 0; + v6 = 8; + v18 = *(_DWORD *)(a1 + 8); + if ( v18 < *(_DWORD *)(a1 + 12) ) + { +LABEL_29: + HIDWORD(a1) = -1; + v17[2] = v18 + 1; +LABEL_30: + v61 = 0; + if ( v17[2] >= v17[3] && (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17) == -1 ) + { + LODWORD(a1) = 0; + v61 = 1; + } + goto LABEL_31; + } +LABEL_62: + (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); + v17 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_30; + v61 = 1; +LABEL_31: + v19 = a3 == -1; + v67 = v19 & (a2 != 0); + if ( v67 ) + { + v19 = 0; + if ( a2[2] >= a2[3] ) + { + v31 = (*(int (**)(void))(*a2 + 36))(); + v19 = 0; + if ( v31 == -1 ) + { + a2 = 0; + v19 = v67; + } + } + } + if ( v61 == v19 ) + { + v58 = 1; + v15 = *(_BYTE *)(v8 + 16); + goto LABEL_34; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v33 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v33 >= *(_DWORD *)(a1 + 12) ) + { + v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v13 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v13) = *v33; + } + } + v15 = *(_BYTE *)(v8 + 16); + if ( !v71 ) + goto LABEL_66; + } + if ( !v71 ) + goto LABEL_66; +LABEL_24: + if ( *(_BYTE *)(v8 + 76) != (_BYTE)v13 && *(_BYTE *)(v8 + 77) != (_BYTE)v13 ) + { + v58 = 0; + v71 = 1; + goto LABEL_34; + } + if ( v59 == 0 || v6 == 16 ) + { + v63 = 0; + v6 = 16; + v71 = 0; + goto LABEL_28; + } + v58 = 0; + MaxCount = v6; + Buf = v6; + v71 = 1; +LABEL_36: + v73[0] = (unsigned int *)&unk_51641C; + if ( v15 ) +LABEL_16: + std::string::reserve(v73, (std::string *)0x20, v51); +LABEL_37: + v57 = 0xFFFF / v6; + v68 = *(_BYTE *)(v8 + 100); + if ( v68 ) + { + if ( v58 ) + goto LABEL_163; + v66 = 0; + Bufa = (void *)(v8 + 78); + v62 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v13 ) + { + if ( (_BYTE)v13 == *(_BYTE *)(v8 + 36) ) + goto LABEL_98; + v34 = memchr(Bufa, (char)v13, MaxCount); + if ( !v34 ) + goto LABEL_98; + v35 = v34 - (_BYTE *)Bufa; + if ( v35 > 15 ) + v35 -= 6; + if ( (unsigned __int16)v57 >= v62 ) + { + v66 |= (unsigned __int16)(v6 * v62) > 0xFFFF - v35; + ++v63; + v62 = v6 * v62 + v35; + goto LABEL_109; + } + v36 = (_DWORD *)a1; + v66 = v68; + v37 = *(_DWORD *)(a1 + 8); + if ( v37 < *(_DWORD *)(a1 + 12) ) + { +LABEL_110: + HIDWORD(a1) = -1; + v36[2] = v37 + 1; + goto LABEL_111; + } +LABEL_116: + (*(void (__fastcall **)(_DWORD *))(*v36 + 40))(v36); + v36 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v53 = v68; + goto LABEL_112; + } +LABEL_111: + v53 = 0; + if ( v36[2] >= v36[3] ) + { + v53 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v36 + 36))(v36) == -1 ) + { + LODWORD(a1) = 0; + v53 = v68; + } + } +LABEL_112: + v38 = a3 == -1; + v39 = v38 & (a2 != 0); + if ( v39 ) + { + v38 = 0; + if ( a2[2] >= a2[3] ) + { + v41 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v38 = 0; + if ( v41 == -1 ) + { + a2 = 0; + v38 = v39; + } + } + } + if ( v53 == v38 ) + { + v26 = v73[0]; + v27 = *(v73[0] - 3); + goto LABEL_51; + } + LOBYTE(v13) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v40 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) + { + v49 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v13) = v49; + if ( v49 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v13) = -1; + } + } + else + { + LOBYTE(v13) = *v40; + } + } + } + v26 = v73[0]; + v27 = *(v73[0] - 3); + if ( !v63 ) + { + v68 = 0; + v58 = *(_BYTE *)(v8 + 16); + goto LABEL_51; + } + v54 = (std::string *)(v27 + 1); + if ( v27 + 1 > *(v73[0] - 2) || *((int *)v73[0] - 1) > 0 ) + std::string::reserve(v73, v54, v51); + v42 = v63; + v63 = 0; + *((_BYTE *)v73[0] + *(v73[0] - 3)) = v42; + v43 = v73[0]; + if ( (_UNKNOWN *)v73[0] != &unk_51641C ) + { + *(v73[0] - 1) = 0; + *(v43 - 3) = (unsigned int)v54; + *((_BYTE *)v43 + v27 + 1) = 0; + } +LABEL_109: + v36 = (_DWORD *)a1; + v37 = *(_DWORD *)(a1 + 8); + if ( v37 < *(_DWORD *)(a1 + 12) ) + goto LABEL_110; + goto LABEL_116; + } + if ( v58 ) + { +LABEL_163: + v50 = v58; + v26 = v73[0]; + v66 = 0; + v58 = 0; + v68 = v50; + v27 = *(v73[0] - 3); + v62 = 0; + goto LABEL_51; + } + v66 = 0; + v62 = 0; +LABEL_40: + v20 = (char)v13; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v13 - 48) <= 9u ) + goto LABEL_43; + while ( (unsigned __int8)(v13 - 97) <= 5u ) + { + v21 = v20 - 87; + if ( (unsigned __int16)v57 < v62 ) + goto LABEL_45; +LABEL_70: + v20 = v6 * v62; + v66 |= (unsigned __int16)v20 > 0xFFFF - v21; + v22 = (_DWORD *)a1; + v62 = v20 + v21; + ++v63; + v23 = *(_DWORD *)(a1 + 8); + if ( v23 < *(_DWORD *)(a1 + 12) ) + goto LABEL_46; +LABEL_71: + (*(void (__fastcall **)(_DWORD *, unsigned int))(*v22 + 40))(v22, v20); + v22 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_47; + v69 = 1; +LABEL_48: + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v20 = a2[3]; + v24 = 0; + if ( a2[2] >= v20 ) + { + v20 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v24 = 0; + if ( v20 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + } + if ( v69 == v24 ) + { + v26 = v73[0]; + v68 = 1; + v27 = *(v73[0] - 3); + goto LABEL_51; + } + LOBYTE(v13) = BYTE4(a1); + if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) + goto LABEL_40; + v32 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v32 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v13) = *v32; + goto LABEL_40; + } + v20 = (*(int (__fastcall **)(_DWORD, unsigned int))(*(_DWORD *)a1 + 36))(a1, v20); + LOBYTE(v13) = v20; + if ( v20 != -1 ) + goto LABEL_40; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_98; + LOBYTE(v13) = -1; + } + if ( (unsigned __int8)(v13 - 65) <= 5u ) + { + v21 = v20 - 55; + goto LABEL_44; + } + } + else if ( (char)v13 > 47 && (char)v13 < (char)(Buf + 48) ) + { +LABEL_43: + v21 = (char)v13 - 48; +LABEL_44: + if ( (unsigned __int16)v57 >= v62 ) + goto LABEL_70; +LABEL_45: + v22 = (_DWORD *)a1; + v66 = 1; + v23 = *(_DWORD *)(a1 + 8); + if ( v23 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_71; +LABEL_46: + HIDWORD(a1) = -1; + v22[2] = v23 + 1; +LABEL_47: + v69 = 0; + if ( v22[2] >= v22[3] ) + { + v69 = 0; + if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v22 + 36))(v22, v20) == -1 ) + { + LODWORD(a1) = 0; + v69 = 1; + } + } + goto LABEL_48; + } +LABEL_98: + v26 = v73[0]; + v27 = *(v73[0] - 3); + v68 = 0; +LABEL_51: + if ( v27 ) + { + std::string::push_back(v73, (std::string *)(char)v63, v51); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v73) ) + *a5 = 4; + v26 = v73[0]; + if ( v63 || v71 || *(v73[0] - 3) ) + goto LABEL_92; +LABEL_54: + *a6 = 0; + *a5 = 4; + } + else + { + if ( !v63 && !v71 ) + goto LABEL_54; +LABEL_92: + if ( v58 ) + goto LABEL_54; + if ( v66 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v65 ) + v62 = -v62; + *a6 = v62; + } + } + if ( v68 ) + *a5 |= 2u; + v28 = a1; + if ( v26 == (unsigned int *)&unk_51641C ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v26 - 3, (int)&v72); + return v28; +} +// 489DA3: variable 'v51' is possibly undefined +// 48A552: variable 'v20' is possibly undefined + +//----- (0048A6E0) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + char v9; // bl + char v10; // dl + char v11; // dl + int v12; // ebx + char v13; // al + char v14; // cl + unsigned int v15; // eax + int v16; // eax + int v17; // esi + int v18; // edi + _DWORD *v19; // ecx + unsigned int v20; // eax + char v21; // dl + unsigned __int64 v22; // kr00_8 + int v23; // esi + int v24; // edi + int v25; // ecx + int v26; // ecx + _DWORD *v27; // ecx + unsigned int v28; // eax + char v29; // al + char v30; // bl + unsigned int *v31; // ecx + int v32; // ebx + int *v33; // eax + unsigned __int64 result; // rax + bool v35; // al + int v36; // ebx + int v37; // edi + unsigned int v38; // esi + int v39; // eax + unsigned int v40; // edi + int v41; // eax + _BYTE *v42; // eax + int v43; // edx + _BYTE *v44; // eax + int v45; // eax + unsigned int v46; // edx + int *v47; // edi + _DWORD *v48; // eax + _BYTE *v49; // eax + int v50; // eax + int v51; // ecx + int v52; // ebx + int v53; // edi + unsigned int v54; // esi + unsigned int v55; // edi + _DWORD *v56; // ecx + unsigned int v57; // eax + char v58; // al + char v59; // bl + _BYTE *v60; // eax + int v61; // edx + char v62; // cl + unsigned int *v63; // eax + int v64; // eax + int *v65; // eax + _BYTE *v66; // eax + int v67; // eax + char v68; // al + unsigned int v69; // [esp+4h] [ebp-74h] + unsigned int v70; // [esp+4h] [ebp-74h] + bool v71; // [esp+1Bh] [ebp-5Dh] + size_t MaxCount; // [esp+1Ch] [ebp-5Ch] + UDItype n; // [esp+20h] [ebp-58h] + char v74; // [esp+28h] [ebp-50h] + std::string *v75; // [esp+28h] [ebp-50h] + int Buf; // [esp+2Ch] [ebp-4Ch] + void *Bufa; // [esp+2Ch] [ebp-4Ch] + char v78; // [esp+38h] [ebp-40h] + __int64 v79; // [esp+38h] [ebp-40h] + int v80; // [esp+40h] [ebp-38h] + char v81; // [esp+44h] [ebp-34h] + char v82; // [esp+45h] [ebp-33h] + char v83; // [esp+45h] [ebp-33h] + char v84; // [esp+46h] [ebp-32h] + char v85; // [esp+46h] [ebp-32h] + char v86; // [esp+47h] [ebp-31h] + bool v87; // [esp+47h] [ebp-31h] + char v88; // [esp+47h] [ebp-31h] + int v89; // [esp+48h] [ebp-30h] + unsigned __int64 v90; // [esp+48h] [ebp-30h] + char v91; // [esp+5Bh] [ebp-1Dh] BYREF + unsigned int *v92[7]; // [esp+5Ch] [ebp-1Ch] BYREF + + v6 = 8; + v7 = a4; + v89 = std::__use_cache>::operator()((int *)(a4 + 108)); + v8 = *(_DWORD *)(v7 + 12) & 0x4A; + if ( v8 != 64 ) + v6 = v8 == 8 ? 16 : 10; + v9 = HIDWORD(a1) == -1; + v10 = v9 & ((_DWORD)a1 != 0); + if ( v10 ) + { + v9 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v88 = v10; + if ( (*(int (**)(void))(*(_DWORD *)a1 + 36))() == -1 ) + { + LODWORD(a1) = 0; + v9 = v88; + } + } + } + v11 = a3 == -1; + v86 = v11 & (a2 != 0); + if ( v86 ) + { + v11 = 0; + if ( a2[2] >= a2[3] ) + { + v64 = (*(int (**)(void))(*a2 + 36))(); + v11 = 0; + if ( v64 == -1 ) + { + a2 = 0; + v11 = v86; + } + } + } + if ( v11 == v9 ) + { + v71 = 0; + LOBYTE(v12) = 0; + v84 = 1; + v80 = 0; + v14 = *(_BYTE *)(v89 + 16); + v87 = 0; +LABEL_34: + if ( v6 == 16 ) + { +LABEL_15: + MaxCount = 22; + Buf = 22; + v92[0] = (unsigned int *)&unk_51641C; + if ( !v14 ) + goto LABEL_37; + goto LABEL_16; + } +LABEL_35: + MaxCount = v6; + Buf = v6; + goto LABEL_36; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v66 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v66 >= *(_DWORD *)(a1 + 12) ) + { + v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v12 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v12) = *v66; + } + } + v13 = *(_BYTE *)(v89 + 74); + v14 = *(_BYTE *)(v89 + 16); + v71 = v13 == (char)v12; + if ( v13 == (_BYTE)v12 || *(_BYTE *)(v89 + 75) == (_BYTE)v12 ) + { + if ( (!v14 || *(_BYTE *)(v89 + 37) != (_BYTE)v12) && *(_BYTE *)(v89 + 36) != (_BYTE)v12 ) + { + v15 = *(_DWORD *)(a1 + 8); + if ( v15 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v15 + 1; + HIDWORD(a1) = -1; + v84 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v84 ) + { + v80 = 0; + v87 = 0; + v14 = *(_BYTE *)(v89 + 16); + if ( v6 == 16 ) + goto LABEL_15; + goto LABEL_35; + } + LOBYTE(v12) = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v14 = *(_BYTE *)(v89 + 16); + } + } + else + { + v71 = 0; + } + v80 = 0; + v16 = v8; + v17 = v6; + v87 = 0; + v18 = v16; + while ( 1 ) + { + if ( v14 && *(_BYTE *)(v89 + 37) == (_BYTE)v12 || *(_BYTE *)(v89 + 36) == (_BYTE)v12 ) + { +LABEL_68: + v84 = 0; + v6 = v17; + goto LABEL_34; + } + if ( *(_BYTE *)(v89 + 78) != (_BYTE)v12 ) + break; + v35 = !v87 || v17 == 10; + if ( !v35 ) + goto LABEL_24; + v87 = v18 == 0 || v17 == 8; + if ( !v87 ) + { + ++v80; + v87 = v35; +LABEL_28: + v19 = (_DWORD *)a1; + v20 = *(_DWORD *)(a1 + 8); + if ( v20 < *(_DWORD *)(a1 + 12) ) + goto LABEL_29; + goto LABEL_64; + } + v19 = (_DWORD *)a1; + v80 = 0; + v17 = 8; + v20 = *(_DWORD *)(a1 + 8); + if ( v20 < *(_DWORD *)(a1 + 12) ) + { +LABEL_29: + HIDWORD(a1) = -1; + v19[2] = v20 + 1; +LABEL_30: + v78 = 0; + if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) + { + LODWORD(a1) = 0; + v78 = 1; + } + goto LABEL_31; + } +LABEL_64: + (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); + v19 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_30; + v78 = 1; +LABEL_31: + v21 = a3 == -1; + v85 = v21 & (a2 != 0); + if ( v85 ) + { + v21 = 0; + if ( a2[2] >= a2[3] ) + { + v41 = (*(int (**)(void))(*a2 + 36))(); + v21 = 0; + if ( v41 == -1 ) + { + a2 = 0; + v21 = v85; + } + } + } + if ( v21 == v78 ) + { + v84 = 1; + v6 = v17; + v14 = *(_BYTE *)(v89 + 16); + goto LABEL_34; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v44 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v44 >= *(_DWORD *)(a1 + 12) ) + { + v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v12 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v12) = *v44; + } + } + v14 = *(_BYTE *)(v89 + 16); + if ( !v87 ) + goto LABEL_68; + } + if ( !v87 ) + goto LABEL_68; +LABEL_24: + if ( *(_BYTE *)(v89 + 76) != (_BYTE)v12 && *(_BYTE *)(v89 + 77) != (_BYTE)v12 ) + { + v84 = 0; + v6 = v17; + v87 = 1; + goto LABEL_34; + } + if ( v18 == 0 || v17 == 16 ) + { + v80 = 0; + v17 = 16; + v87 = 0; + goto LABEL_28; + } + v84 = 0; + v6 = v17; + MaxCount = v17; + Buf = v17; + v87 = 1; +LABEL_36: + v92[0] = (unsigned int *)&unk_51641C; + if ( v14 ) +LABEL_16: + std::string::reserve(v92, (std::string *)0x20, v69); +LABEL_37: + n = 0x8000000000000000LL; + if ( !v71 ) + n = 0x7FFFFFFFFFFFFFFFLL; + v79 = v6; + v22 = n / v6; + v82 = *(_BYTE *)(v89 + 100); + if ( v82 ) + { + if ( v84 ) + goto LABEL_164; + v81 = 0; + v23 = 0; + v24 = 0; + Bufa = (void *)(v89 + 78); + while ( !*(_BYTE *)(v89 + 16) || *(_BYTE *)(v89 + 37) != (_BYTE)v12 ) + { + if ( (_BYTE)v12 == *(_BYTE *)(v89 + 36) ) + goto LABEL_99; + v49 = memchr(Bufa, (char)v12, MaxCount); + if ( !v49 ) + goto LABEL_99; + v50 = v49 - (_BYTE *)Bufa; + v51 = v50; + if ( v50 > 15 ) + v51 = v50 - 6; + if ( v22 >= __PAIR64__(v24, v23) ) + { + v52 = v24 * v79 + v23 * HIDWORD(v79); + v53 = ((unsigned int)v79 * (unsigned __int64)(unsigned int)v23) >> 32; + v54 = v79 * v23; + v55 = v52 + v53; + v81 |= n - v51 < __PAIR64__(v55, v54); + v24 = (v51 + __PAIR64__(v55, v54)) >> 32; + v23 = v51 + v54; + ++v80; + goto LABEL_110; + } + v56 = (_DWORD *)a1; + v81 = v82; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 < *(_DWORD *)(a1 + 12) ) + { +LABEL_111: + HIDWORD(a1) = -1; + v56[2] = v57 + 1; + goto LABEL_112; + } +LABEL_117: + (*(void (__fastcall **)(_DWORD *))(*v56 + 40))(v56); + v56 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v74 = v82; + goto LABEL_113; + } +LABEL_112: + v74 = 0; + if ( v56[2] >= v56[3] ) + { + v74 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56) == -1 ) + { + LODWORD(a1) = 0; + v74 = v82; + } + } +LABEL_113: + v58 = a3 == -1; + v59 = v58 & (a2 != 0); + if ( v59 ) + { + v58 = 0; + if ( a2[2] >= a2[3] ) + { + v61 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v58 = 0; + if ( v61 == -1 ) + { + a2 = 0; + v58 = v59; + } + } + } + if ( v74 == v58 ) + { + v31 = v92[0]; + v32 = *(v92[0] - 3); + goto LABEL_53; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v60 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v60 >= *(_DWORD *)(a1 + 12) ) + { + v67 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v12) = v67; + if ( v67 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v12) = -1; + } + } + else + { + LOBYTE(v12) = *v60; + } + } + } + v31 = v92[0]; + v32 = *(v92[0] - 3); + if ( !v80 ) + { + v82 = 0; + v84 = *(_BYTE *)(v89 + 16); + goto LABEL_53; + } + v75 = (std::string *)(v32 + 1); + if ( v32 + 1 > *(v92[0] - 2) || *((int *)v92[0] - 1) > 0 ) + std::string::reserve(v92, v75, v70); + v62 = v80; + v80 = 0; + *((_BYTE *)v92[0] + *(v92[0] - 3)) = v62; + v63 = v92[0]; + if ( (_UNKNOWN *)v92[0] != &unk_51641C ) + { + *(v92[0] - 1) = 0; + *(v63 - 3) = (unsigned int)v75; + *((_BYTE *)v63 + v32 + 1) = 0; + } +LABEL_110: + v56 = (_DWORD *)a1; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 < *(_DWORD *)(a1 + 12) ) + goto LABEL_111; + goto LABEL_117; + } + if ( v84 ) + { +LABEL_164: + v68 = v84; + v31 = v92[0]; + v81 = 0; + v23 = 0; + v84 = 0; + v24 = 0; + v82 = v68; + v32 = *(v92[0] - 3); + goto LABEL_53; + } + v81 = 0; + v23 = 0; + v24 = 0; +LABEL_42: + v25 = (char)v12; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v12 - 48) <= 9u ) + goto LABEL_45; + while ( (unsigned __int8)(v12 - 97) <= 5u ) + { + v26 = v25 - 87; + if ( v22 < __PAIR64__(v24, v23) ) + goto LABEL_47; +LABEL_72: + v36 = v24 * v79 + v23 * HIDWORD(v79); + v37 = ((unsigned int)v79 * (unsigned __int64)(unsigned int)v23) >> 32; + v38 = v79 * v23; + v39 = v26; + v40 = v36 + v37; + v81 |= n - v26 < __PAIR64__(v40, v38); + v27 = (_DWORD *)a1; + v24 = (v39 + __PAIR64__(v40, v38)) >> 32; + v23 = v39 + v38; + ++v80; + v28 = *(_DWORD *)(a1 + 8); + if ( v28 < *(_DWORD *)(a1 + 12) ) + goto LABEL_48; +LABEL_73: + (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); + v27 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_49; + v83 = 1; +LABEL_50: + v29 = a3 == -1; + v30 = v29 & (a2 != 0); + if ( v30 ) + { + v29 = 0; + if ( a2[2] >= a2[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v29 = 0; + if ( v43 == -1 ) + { + a2 = 0; + v29 = v30; + } + } + } + if ( v83 == v29 ) + { + v31 = v92[0]; + v82 = 1; + v32 = *(v92[0] - 3); + goto LABEL_53; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_42; + v42 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v12) = *v42; + goto LABEL_42; + } + v25 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v12) = v25; + if ( v25 != -1 ) + goto LABEL_42; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_99; + LOBYTE(v12) = -1; + } + if ( (unsigned __int8)(v12 - 65) <= 5u ) + { + v26 = v25 - 55; + goto LABEL_46; + } + } + else if ( (char)v12 > 47 && (char)(Buf + 48) > (char)v12 ) + { +LABEL_45: + v26 = (char)v12 - 48; +LABEL_46: + if ( v22 >= __PAIR64__(v24, v23) ) + goto LABEL_72; +LABEL_47: + v27 = (_DWORD *)a1; + v81 = 1; + v28 = *(_DWORD *)(a1 + 8); + if ( v28 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_73; +LABEL_48: + HIDWORD(a1) = -1; + v27[2] = v28 + 1; +LABEL_49: + v83 = 0; + if ( v27[2] >= v27[3] ) + { + v83 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) + { + LODWORD(a1) = 0; + v83 = 1; + } + } + goto LABEL_50; + } +LABEL_99: + v31 = v92[0]; + v32 = *(v92[0] - 3); + v82 = 0; +LABEL_53: + if ( v32 ) + { + std::string::push_back(v92, (std::string *)(char)v80, v70); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v89 + 8), *(_DWORD *)(v89 + 12), (const char **)v92) ) + *a5 = 4; + v31 = v92[0]; + if ( v80 || v87 || *(v92[0] - 3) ) + goto LABEL_93; +LABEL_56: + v33 = a6; + *a6 = 0; + v33[1] = 0; + *a5 = 4; + } + else + { + if ( !v80 && !v87 ) + goto LABEL_56; +LABEL_93: + if ( v84 ) + goto LABEL_56; + if ( v81 ) + { + v45 = 0; + v46 = 0x80000000; + if ( !v71 ) + { + v45 = -1; + v46 = 0x7FFFFFFF; + } + v47 = a6; + *a6 = v45; + v48 = a5; + v47[1] = v46; + *v48 = 4; + } + else + { + if ( v71 ) + { + v23 = -v23; + v24 = (unsigned __int64)-__SPAIR64__(v24, v23) >> 32; + } + v65 = a6; + *a6 = v23; + v65[1] = v24; + } + } + if ( v82 ) + *a5 |= 2u; + result = a1; + if ( v31 != (unsigned int *)&unk_51641C ) + { + v90 = a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v31 - 3, (int)&v91); + return v90; + } + return result; +} +// 48A81D: variable 'v69' is possibly undefined +// 48ACBC: variable 'v70' is possibly undefined + +//----- (0048B230) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + char v9; // dl + char v10; // bl + char v11; // bl + int v12; // ebx + char v13; // al + char v14; // cl + unsigned int v15; // eax + int v16; // eax + int v17; // esi + int v18; // edi + _DWORD *v19; // ecx + unsigned int v20; // eax + char v21; // dl + unsigned __int64 v22; // kr00_8 + int v23; // esi + int v24; // edi + int v25; // ecx + int v26; // ecx + _DWORD *v27; // ecx + unsigned int v28; // eax + char v29; // al + char v30; // bl + unsigned int *v31; // edx + int v32; // ebx + int *v33; // eax + unsigned __int64 v34; // kr08_8 + bool v36; // al + int v37; // eax + int v38; // edi + int v39; // ebx + int v40; // eax + int v41; // esi + unsigned __int64 v42; // rax + int v43; // eax + _BYTE *v44; // eax + int v45; // edx + _BYTE *v46; // eax + int *v47; // eax + _BYTE *v48; // eax + int v49; // ecx + int v50; // ebx + unsigned __int64 v51; // rax + unsigned int v52; // esi + unsigned __int64 v53; // rcx + unsigned int v54; // edi + _DWORD *v55; // ecx + unsigned int v56; // eax + char v57; // al + char v58; // bl + _BYTE *v59; // eax + int v60; // edx + char v61; // cl + unsigned int *v62; // eax + int v63; // eax + int v64; // eax + int *v65; // eax + _BYTE *v66; // eax + int v67; // eax + char v68; // al + unsigned int v69; // [esp+4h] [ebp-64h] + unsigned int v70; // [esp+4h] [ebp-64h] + size_t MaxCount; // [esp+14h] [ebp-54h] + char v72; // [esp+18h] [ebp-50h] + std::string *v73; // [esp+18h] [ebp-50h] + int Buf; // [esp+1Ch] [ebp-4Ch] + void *Bufa; // [esp+1Ch] [ebp-4Ch] + char v76; // [esp+28h] [ebp-40h] + __int64 v77; // [esp+28h] [ebp-40h] + bool v78; // [esp+30h] [ebp-38h] + char v79; // [esp+31h] [ebp-37h] + char v80; // [esp+32h] [ebp-36h] + char v81; // [esp+32h] [ebp-36h] + _BYTE v82[5]; // [esp+33h] [ebp-35h] + char v83; // [esp+33h] [ebp-35h] + char v84; // [esp+34h] [ebp-34h] + char v85; // [esp+3Bh] [ebp-2Dh] + bool v86; // [esp+3Bh] [ebp-2Dh] + int v87; // [esp+3Ch] [ebp-2Ch] + char v88; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v89[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = 8; + v7 = a4; + v87 = std::__use_cache>::operator()((int *)(a4 + 108)); + v8 = *(_DWORD *)(v7 + 12) & 0x4A; + if ( v8 != 64 ) + v6 = v8 == 8 ? 16 : 10; + v9 = HIDWORD(a1) == -1; + v10 = v9 & ((_DWORD)a1 != 0); + if ( v10 ) + { + v9 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v64 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v9 = 0; + if ( v64 == -1 ) + { + LODWORD(a1) = 0; + v9 = v10; + } + } + } + v11 = a3 == -1; + v85 = v11 & (a2 != 0); + if ( v85 ) + { + v11 = 0; + if ( a2[2] >= a2[3] ) + { + v84 = v9; + v63 = (*(int (**)(void))(*a2 + 36))(); + v9 = v84; + if ( v63 == -1 ) + { + a2 = 0; + v11 = v85; + } + } + } + if ( v9 == v11 ) + { + v78 = 0; + LOBYTE(v12) = 0; + v82[0] = 1; + *(_DWORD *)&v82[1] = 0; + v14 = *(_BYTE *)(v87 + 16); + v86 = 0; +LABEL_34: + if ( v6 == 16 ) + { +LABEL_15: + MaxCount = 22; + Buf = 22; + v89[0] = (unsigned int *)&unk_51641C; + if ( !v14 ) + goto LABEL_37; + goto LABEL_16; + } +LABEL_35: + MaxCount = v6; + Buf = v6; + goto LABEL_36; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v66 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v66 >= *(_DWORD *)(a1 + 12) ) + { + v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v12 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v12) = *v66; + } + } + v13 = *(_BYTE *)(v87 + 74); + v14 = *(_BYTE *)(v87 + 16); + v78 = v13 == (char)v12; + if ( v13 == (_BYTE)v12 || *(_BYTE *)(v87 + 75) == (_BYTE)v12 ) + { + if ( (!v14 || *(_BYTE *)(v87 + 37) != (_BYTE)v12) && *(_BYTE *)(v87 + 36) != (_BYTE)v12 ) + { + v15 = *(_DWORD *)(a1 + 8); + if ( v15 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v15 + 1; + HIDWORD(a1) = -1; + v82[0] = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v82[0] ) + { + *(_DWORD *)&v82[1] = 0; + v86 = 0; + v14 = *(_BYTE *)(v87 + 16); + if ( v6 == 16 ) + goto LABEL_15; + goto LABEL_35; + } + LOBYTE(v12) = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v14 = *(_BYTE *)(v87 + 16); + } + } + else + { + v78 = 0; + } + *(_DWORD *)&v82[1] = 0; + v16 = v8; + v17 = v6; + v86 = 0; + v18 = v16; + while ( 1 ) + { + if ( v14 && *(_BYTE *)(v87 + 37) == (_BYTE)v12 || *(_BYTE *)(v87 + 36) == (_BYTE)v12 ) + { +LABEL_66: + v82[0] = 0; + v6 = v17; + goto LABEL_34; + } + if ( *(_BYTE *)(v87 + 78) != (_BYTE)v12 ) + break; + v36 = !v86 || v17 == 10; + if ( !v36 ) + goto LABEL_24; + v86 = v18 == 0 || v17 == 8; + if ( !v86 ) + { + ++*(_DWORD *)&v82[1]; + v86 = v36; +LABEL_28: + v19 = (_DWORD *)a1; + v20 = *(_DWORD *)(a1 + 8); + if ( v20 < *(_DWORD *)(a1 + 12) ) + goto LABEL_29; + goto LABEL_62; + } + v19 = (_DWORD *)a1; + *(_DWORD *)&v82[1] = 0; + v17 = 8; + v20 = *(_DWORD *)(a1 + 8); + if ( v20 < *(_DWORD *)(a1 + 12) ) + { +LABEL_29: + HIDWORD(a1) = -1; + v19[2] = v20 + 1; +LABEL_30: + v76 = 0; + if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) + { + LODWORD(a1) = 0; + v76 = 1; + } + goto LABEL_31; + } +LABEL_62: + (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); + v19 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_30; + v76 = 1; +LABEL_31: + v21 = a3 == -1; + v83 = v21 & (a2 != 0); + if ( v83 ) + { + v21 = 0; + if ( a2[2] >= a2[3] ) + { + v43 = (*(int (**)(void))(*a2 + 36))(); + v21 = 0; + if ( v43 == -1 ) + { + a2 = 0; + v21 = v83; + } + } + } + if ( v76 == v21 ) + { + v82[0] = 1; + v6 = v17; + v14 = *(_BYTE *)(v87 + 16); + goto LABEL_34; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v46 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ) + { + v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v12 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v12) = *v46; + } + } + v14 = *(_BYTE *)(v87 + 16); + if ( !v86 ) + goto LABEL_66; + } + if ( !v86 ) + goto LABEL_66; +LABEL_24: + if ( *(_BYTE *)(v87 + 76) != (_BYTE)v12 && *(_BYTE *)(v87 + 77) != (_BYTE)v12 ) + { + v82[0] = 0; + v6 = v17; + v86 = 1; + goto LABEL_34; + } + if ( v18 == 0 || v17 == 16 ) + { + *(_DWORD *)&v82[1] = 0; + v17 = 16; + v86 = 0; + goto LABEL_28; + } + v82[0] = 0; + v6 = v17; + MaxCount = v17; + Buf = v17; + v86 = 1; +LABEL_36: + v89[0] = (unsigned int *)&unk_51641C; + if ( v14 ) +LABEL_16: + std::string::reserve(v89, (std::string *)0x20, v69); +LABEL_37: + v77 = v6; + v22 = 0xFFFFFFFFFFFFFFFFLL / v6; + v80 = *(_BYTE *)(v87 + 100); + if ( v80 ) + { + if ( v82[0] ) + goto LABEL_160; + v79 = 0; + v23 = 0; + v24 = 0; + Bufa = (void *)(v87 + 78); + while ( !*(_BYTE *)(v87 + 16) || *(_BYTE *)(v87 + 37) != (_BYTE)v12 ) + { + if ( (_BYTE)v12 == *(_BYTE *)(v87 + 36) ) + goto LABEL_97; + v48 = memchr(Bufa, (char)v12, MaxCount); + if ( !v48 ) + goto LABEL_97; + v49 = v48 - (_BYTE *)Bufa; + if ( v48 - (_BYTE *)Bufa > 15 ) + v49 -= 6; + if ( v22 >= __PAIR64__(v24, v23) ) + { + v50 = v24 * v77 + v23 * HIDWORD(v77); + v51 = (unsigned int)v77 * (unsigned __int64)(unsigned int)v23; + v52 = v77 * v23; + LODWORD(v51) = v49; + LODWORD(v53) = ~v49; + v54 = v50 + HIDWORD(v51); + HIDWORD(v53) = ~((int)v51 >> 31); + v79 |= v53 < __PAIR64__(v54, v52); + v24 = ((int)v51 + __PAIR64__(v54, v52)) >> 32; + v23 = v51 + v52; + ++*(_DWORD *)&v82[1]; + goto LABEL_108; + } + v55 = (_DWORD *)a1; + v79 = v80; + v56 = *(_DWORD *)(a1 + 8); + if ( v56 < *(_DWORD *)(a1 + 12) ) + { +LABEL_109: + HIDWORD(a1) = -1; + v55[2] = v56 + 1; + goto LABEL_110; + } +LABEL_115: + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + v55 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v72 = v80; + goto LABEL_111; + } +LABEL_110: + v72 = 0; + if ( v55[2] >= v55[3] ) + { + v72 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55) == -1 ) + { + LODWORD(a1) = 0; + v72 = v80; + } + } +LABEL_111: + v57 = a3 == -1; + v58 = v57 & (a2 != 0); + if ( v58 ) + { + v57 = 0; + if ( a2[2] >= a2[3] ) + { + v60 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v57 = 0; + if ( v60 == -1 ) + { + a2 = 0; + v57 = v58; + } + } + } + if ( v57 == v72 ) + { + v31 = v89[0]; + v32 = *(v89[0] - 3); + goto LABEL_51; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v59 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v59 >= *(_DWORD *)(a1 + 12) ) + { + v67 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v12) = v67; + if ( v67 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v12) = -1; + } + } + else + { + LOBYTE(v12) = *v59; + } + } + } + v31 = v89[0]; + v32 = *(v89[0] - 3); + if ( !*(_DWORD *)&v82[1] ) + { + v80 = 0; + *(_DWORD *)v82 = *(unsigned __int8 *)(v87 + 16); + goto LABEL_51; + } + v73 = (std::string *)(v32 + 1); + if ( v32 + 1 > *(v89[0] - 2) || *((int *)v89[0] - 1) > 0 ) + std::string::reserve(v89, v73, v70); + v61 = v82[1]; + *(_DWORD *)&v82[1] = 0; + *((_BYTE *)v89[0] + *(v89[0] - 3)) = v61; + v62 = v89[0]; + if ( (_UNKNOWN *)v89[0] != &unk_51641C ) + { + *(v89[0] - 1) = 0; + *(v62 - 3) = (unsigned int)v73; + *((_BYTE *)v62 + v32 + 1) = 0; + } +LABEL_108: + v55 = (_DWORD *)a1; + v56 = *(_DWORD *)(a1 + 8); + if ( v56 < *(_DWORD *)(a1 + 12) ) + goto LABEL_109; + goto LABEL_115; + } + if ( v82[0] ) + { +LABEL_160: + v68 = v82[0]; + v31 = v89[0]; + v79 = 0; + v23 = 0; + v82[0] = 0; + v24 = 0; + v80 = v68; + v32 = *(v89[0] - 3); + goto LABEL_51; + } + v79 = 0; + v23 = 0; + v24 = 0; +LABEL_40: + v25 = (char)v12; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v12 - 48) <= 9u ) + goto LABEL_43; + while ( (unsigned __int8)(v12 - 97) <= 5u ) + { + v26 = v25 - 87; + if ( v22 < __PAIR64__(v24, v23) ) + goto LABEL_45; +LABEL_70: + v37 = v24 * v77; + v38 = v26 >> 31; + v39 = v37 + v23 * HIDWORD(v77); + v40 = v23; + v41 = v26; + v42 = (unsigned int)v77 * (unsigned __int64)(unsigned int)v40; + HIDWORD(v42) += v39; + v79 |= __PAIR64__(~(v26 >> 31), ~v26) < v42; + v27 = (_DWORD *)a1; + v24 = (v42 + __PAIR64__(v38, v41)) >> 32; + v23 = v42 + v41; + ++*(_DWORD *)&v82[1]; + v28 = *(_DWORD *)(a1 + 8); + if ( v28 < *(_DWORD *)(a1 + 12) ) + goto LABEL_46; +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); + v27 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_47; + v81 = 1; +LABEL_48: + v29 = a3 == -1; + v30 = v29 & (a2 != 0); + if ( v30 ) + { + v29 = 0; + if ( a2[2] >= a2[3] ) + { + v45 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v29 = 0; + if ( v45 == -1 ) + { + a2 = 0; + v29 = v30; + } + } + } + if ( v81 == v29 ) + { + v31 = v89[0]; + v80 = 1; + v32 = *(v89[0] - 3); + goto LABEL_51; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_40; + v44 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v44 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v12) = *v44; + goto LABEL_40; + } + v25 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v12) = v25; + if ( v25 != -1 ) + goto LABEL_40; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_97; + LOBYTE(v12) = -1; + } + if ( (unsigned __int8)(v12 - 65) <= 5u ) + { + v26 = v25 - 55; + goto LABEL_44; + } + } + else if ( (char)v12 > 47 && (char)(Buf + 48) > (char)v12 ) + { +LABEL_43: + v26 = (char)v12 - 48; +LABEL_44: + if ( v22 >= __PAIR64__(v24, v23) ) + goto LABEL_70; +LABEL_45: + v27 = (_DWORD *)a1; + v79 = 1; + v28 = *(_DWORD *)(a1 + 8); + if ( v28 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_71; +LABEL_46: + HIDWORD(a1) = -1; + v27[2] = v28 + 1; +LABEL_47: + v81 = 0; + if ( v27[2] >= v27[3] ) + { + v81 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) + { + LODWORD(a1) = 0; + v81 = 1; + } + } + goto LABEL_48; + } +LABEL_97: + v31 = v89[0]; + v32 = *(v89[0] - 3); + v80 = 0; +LABEL_51: + if ( v32 ) + { + std::string::push_back(v89, (std::string *)v82[1], v70); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v87 + 8), *(_DWORD *)(v87 + 12), (const char **)v89) ) + *a5 = 4; + v31 = v89[0]; + if ( *(_DWORD *)&v82[1] || v86 || *(v89[0] - 3) ) + goto LABEL_91; +LABEL_54: + v33 = a6; + *a6 = 0; + v33[1] = 0; + *a5 = 4; + } + else + { + if ( !*(_DWORD *)&v82[1] && !v86 ) + goto LABEL_54; +LABEL_91: + if ( v82[0] ) + goto LABEL_54; + if ( v79 ) + { + v65 = a6; + *a6 = -1; + v65[1] = -1; + *a5 = 4; + } + else + { + if ( v78 ) + { + v23 = -v23; + v24 = (unsigned __int64)-__SPAIR64__(v24, v23) >> 32; + } + v47 = a6; + *a6 = v23; + v47[1] = v24; + } + } + if ( v80 ) + *a5 |= 2u; + v34 = a1; + if ( v31 == (unsigned int *)&unk_51641C ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v31 - 3, (int)&v88); + return v34; +} +// 48B36D: variable 'v69' is possibly undefined +// 48B7DC: variable 'v70' is possibly undefined + +//----- (0048BD20) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_float( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int **a6) +{ + unsigned int **v6; // ebx + char v7; // si + char v8; // dl + char v9; // dl + char v10; // di + int v11; // edi + char v12; // al + char v13; // si + unsigned int *v14; // eax + int v15; // edx + _DWORD *v16; // ecx + unsigned int v17; // eax + char v18; // di + char v19; // al + char v20; // si + _BYTE *v21; // eax + int v22; // edi + unsigned int *v23; // eax + unsigned int v24; // eax + int v25; // eax + char v26; // al + void *v27; // eax + char v28; // si + int v29; // edx + unsigned int v30; // edi + unsigned int *v31; // eax + unsigned int *v32; // edx + _DWORD *v33; // ecx + unsigned int v34; // eax + char v35; // di + char v36; // al + char v37; // si + unsigned int *v38; // edx + int v39; // edi + int v40; // edi + char v41; // al + unsigned __int64 v42; // kr00_8 + int v44; // edx + bool v45; // zf + unsigned int *v46; // eax + unsigned int *v47; // edx + int v48; // edi + unsigned int *v49; // eax + int v50; // edi + unsigned int *v51; // eax + _DWORD *v52; // ecx + unsigned int v53; // eax + char v54; // di + char v55; // al + char v56; // si + char v57; // dl + int v58; // edx + char *v59; // esi + char *v60; // edi + char v61; // cl + unsigned int *v62; // eax + char v63; // si + _BYTE *v64; // eax + int v65; // edx + _BYTE *v66; // eax + unsigned int *v67; // eax + unsigned int *v68; // edx + char v69; // dl + int v70; // edx + _DWORD *v71; // ecx + unsigned int v72; // eax + char v73; // dl + char v74; // bl + unsigned int *v75; // eax + int v76; // eax + _BYTE *v77; // eax + int v78; // eax + _BYTE *v79; // eax + unsigned int v80; // eax + unsigned int *v81; // eax + _BYTE *v82; // eax + unsigned int v83; // [esp+4h] [ebp-54h] + std::string *v84; // [esp+14h] [ebp-44h] + std::string *v85; // [esp+14h] [ebp-44h] + std::string *v86; // [esp+14h] [ebp-44h] + void *Buf; // [esp+18h] [ebp-40h] + __int16 v88; // [esp+1Eh] [ebp-3Ah] + bool v89; // [esp+1Fh] [ebp-39h] + char v90; // [esp+20h] [ebp-38h] + int v91; // [esp+20h] [ebp-38h] + int v92; // [esp+24h] [ebp-34h] + char v93; // [esp+28h] [ebp-30h] + int v94; // [esp+28h] [ebp-30h] + unsigned int *v95; // [esp+28h] [ebp-30h] + char v96; // [esp+28h] [ebp-30h] + int v97; // [esp+28h] [ebp-30h] + char v98; // [esp+28h] [ebp-30h] + int v99; // [esp+2Ch] [ebp-2Ch] + char v100; // [esp+3Bh] [ebp-1Dh] BYREF + unsigned int *v101[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v6 = a6; + v99 = std::__use_cache>::operator()((int *)(a4 + 108)); + v7 = HIDWORD(a1) == -1; + v8 = v7 & ((_DWORD)a1 != 0); + if ( v8 ) + { + v7 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v98 = v8; + if ( (*(int (**)(void))(*(_DWORD *)a1 + 36))() == -1 ) + { + LODWORD(a1) = 0; + v7 = v98; + } + } + } + v9 = a3 == -1; + v10 = v9 & (a2 != 0); + if ( v10 ) + { + v9 = 0; + if ( a2[2] >= a2[3] ) + { + v78 = (*(int (**)(void))(*a2 + 36))(); + v9 = 0; + if ( v78 == -1 ) + { + a2 = 0; + v9 = v10; + } + } + } + if ( v7 == v9 ) + { + v92 = 0; + LOBYTE(v11) = 0; + v93 = 0; + v89 = 1; + v12 = *(_BYTE *)(v99 + 16); + goto LABEL_5; + } + LOBYTE(v11) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v79 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v79 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v11) = *v79; + } + } + v69 = *(_BYTE *)(v99 + 75); + v12 = *(_BYTE *)(v99 + 16); + if ( v69 != (_BYTE)v11 && *(_BYTE *)(v99 + 74) != (_BYTE)v11 + || v12 && *(_BYTE *)(v99 + 37) == (_BYTE)v11 + || *(_BYTE *)(v99 + 36) == (_BYTE)v11 ) + { + goto LABEL_146; + } + std::string::push_back(v6, (std::string *)(2 * (v69 != (char)v11) + 43), v83); + v80 = *(_DWORD *)(a1 + 8); + if ( v80 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v80 + 1; + HIDWORD(a1) = -1; + v89 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v89 ) + { + LOBYTE(v11) = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v12 = *(_BYTE *)(v99 + 16); +LABEL_146: + v92 = 0; + v70 = 0; + a6 = v6; + while ( 1 ) + { + if ( v12 && *(_BYTE *)(v99 + 37) == (_BYTE)v11 ) + { + v93 = v70; + v6 = a6; + v101[0] = (unsigned int *)&unk_51641C; + v89 = 0; + goto LABEL_142; + } + if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 || *(_BYTE *)(v99 + 78) != (_BYTE)v11 ) + { + v93 = v70; + v6 = a6; + v89 = 0; + goto LABEL_5; + } + if ( (_BYTE)v70 ) + goto LABEL_152; + v97 = *(*a6 - 3); + if ( v97 + 1 > *(*a6 - 2) || (int)*(*a6 - 1) > 0 ) + std::string::reserve(a6, (std::string *)(v97 + 1), v83); + *((_BYTE *)*a6 + *(*a6 - 3)) = 48; + v75 = *a6; + v70 = (int)(*a6 - 3); + if ( *a6 == (unsigned int *)&unk_51641C ) + { +LABEL_152: + v71 = (_DWORD *)a1; + ++v92; + v72 = *(_DWORD *)(a1 + 8); + if ( v72 < *(_DWORD *)(a1 + 12) ) + goto LABEL_153; + } + else + { + *(v75 - 1) = 0; + *(v75 - 3) = v97 + 1; + ++v92; + *(_BYTE *)(v70 + v97 + 13) = 0; + v71 = (_DWORD *)a1; + v72 = *(_DWORD *)(a1 + 8); + if ( v72 < *(_DWORD *)(a1 + 12) ) + { +LABEL_153: + HIDWORD(a1) = -1; + v71[2] = v72 + 1; + goto LABEL_154; + } + } + (*(void (__fastcall **)(_DWORD *, int))(*v71 + 40))(v71, v70); + v71 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v96 = 1; + goto LABEL_155; + } +LABEL_154: + v96 = 0; + if ( v71[2] >= v71[3] && (*(int (__fastcall **)(_DWORD *, int))(*v71 + 36))(v71, v70) == -1 ) + { + LODWORD(a1) = 0; + v96 = 1; + } +LABEL_155: + v73 = a3 == -1; + v74 = v73 & (a2 != 0); + if ( v74 ) + { + v73 = 0; + if ( a2[2] >= a2[3] ) + { + v76 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v73 = 0; + if ( v76 == -1 ) + { + a2 = 0; + v73 = v74; + } + } + } + if ( v96 == v73 ) + { + v6 = a6; + v93 = 1; + v89 = 1; + v12 = *(_BYTE *)(v99 + 16); + goto LABEL_5; + } + LOBYTE(v11) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v77 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v77 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v11) = *v77; + } + } + v12 = *(_BYTE *)(v99 + 16); + v70 = 1; + } + } + v92 = 0; + v93 = 0; + v12 = *(_BYTE *)(v99 + 16); +LABEL_5: + v101[0] = (unsigned int *)&unk_51641C; + if ( v12 ) +LABEL_142: + std::string::reserve(v101, (std::string *)0x20, v83); + v90 = *(_BYTE *)(v99 + 100); + if ( !v90 ) + { + if ( !v89 ) + { + v88 = 0; +LABEL_9: + v13 = v11; + if ( (unsigned __int8)(v11 - 48) <= 9u ) + { +LABEL_10: + v91 = *(*v6 - 3); + if ( v91 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v91 + 1), v83); + v93 = 1; + *((_BYTE *)*v6 + *(*v6 - 3)) = v13; + v14 = *v6; + v15 = (int)(*v6 - 3); + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v14 - 1) = 0; + *(v14 - 3) = v91 + 1; + *(_BYTE *)(v15 + v91 + 13) = 0; + } + goto LABEL_15; + } + while ( 1 ) + { + if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 && !v88 ) + { + std::string::push_back(v6, (std::string *)0x2E, v83); + v88 = 1; +LABEL_15: + v16 = (_DWORD *)a1; + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_41; +LABEL_16: + HIDWORD(a1) = -1; + v16[2] = v17 + 1; +LABEL_17: + v18 = 0; + if ( v16[2] >= v16[3] && (*(int (__fastcall **)(_DWORD *, int))(*v16 + 36))(v16, v15) == -1 ) + { + LODWORD(a1) = 0; + v18 = 1; + } + goto LABEL_18; + } + if ( *(_BYTE *)(v99 + 92) != (_BYTE)v11 && *(_BYTE *)(v99 + 98) != (_BYTE)v11 ) + goto LABEL_60; + v93 &= HIBYTE(v88) ^ 1; + if ( !v93 ) + goto LABEL_60; + v22 = *(*v6 - 3); + if ( v22 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v22 + 1), v83); + *((_BYTE *)*v6 + *(*v6 - 3)) = 101; + v23 = *v6; + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v23 - 1) = 0; + *(v23 - 3) = v22 + 1; + *((_BYTE *)v23 + v22 + 1) = 0; + } + v24 = *(_DWORD *)(a1 + 8); + if ( v24 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v24 + 1; + HIDWORD(a1) = -1; + if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) + goto LABEL_214; + LOBYTE(v11) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v82 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v82 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v11) = -1; + } + } + else + { + LOBYTE(v11) = *v82; + } + } + if ( *(_BYTE *)(v99 + 75) == (_BYTE)v11 ) + { + v25 = 43; + } + else + { + if ( *(_BYTE *)(v99 + 74) != (_BYTE)v11 ) + { + HIBYTE(v88) = v93; + goto LABEL_9; + } + v25 = 45; + } + std::string::push_back(v6, (std::string *)v25, v83); + v16 = (_DWORD *)a1; + HIBYTE(v88) = v93; + v17 = *(_DWORD *)(a1 + 8); + if ( v17 < *(_DWORD *)(a1 + 12) ) + goto LABEL_16; +LABEL_41: + (*(void (__fastcall **)(_DWORD *, int))(*v16 + 40))(v16, v15); + v16 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_17; + v18 = 1; +LABEL_18: + v19 = a3 == -1; + v20 = v19 & (a2 != 0); + if ( v20 ) + { + v19 = 0; + if ( a2[2] >= a2[3] ) + { + v44 = (*(int (**)(void))(*a2 + 36))(); + v19 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v19 = v20; + } + } + } + if ( v18 == v19 ) + goto LABEL_60; + LOBYTE(v11) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_9; + v21 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v21 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v11) = -1; + } + goto LABEL_9; + } + LOBYTE(v11) = *v21; + v13 = *v21; + if ( (unsigned __int8)(*v21 - 48) <= 9u ) + goto LABEL_10; + } + } +LABEL_201: + v38 = v101[0]; + if ( *(v101[0] - 3) ) + goto LABEL_63; + goto LABEL_68; + } + if ( v89 ) + goto LABEL_201; + v88 = 0; + v26 = *(_BYTE *)(v99 + 16); + Buf = (void *)(v99 + 78); + while ( 1 ) + { + while ( 1 ) + { + if ( v26 && *(_BYTE *)(v99 + 37) == (_BYTE)v11 ) + { + LOBYTE(v88) = HIBYTE(v88) | v88; + if ( (_BYTE)v88 ) + { + v38 = v101[0]; + v40 = *(v101[0] - 3); +LABEL_65: + if ( !v40 ) + goto LABEL_68; + goto LABEL_66; + } + if ( !v92 ) + { + v81 = *v6; + if ( (int)*(*v6 - 1) <= 0 ) + { + if ( v81 != (unsigned int *)&unk_51641C ) + { + *(v81 - 1) = 0; + *(v81 - 3) = 0; + *(_BYTE *)v81 = 0; + } + } + else + { + if ( v81 != (unsigned int *)&unk_51641C ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v81 - 3, (int)&v100); + *v6 = (unsigned int *)&unk_51641C; + } + goto LABEL_201; + } + v59 = (char *)*(v101[0] - 3); + v85 = (std::string *)v59; + v60 = v59 + 1; + if ( (unsigned int)(v59 + 1) > *(v101[0] - 2) || *((int *)v101[0] - 1) > 0 ) + std::string::reserve(v101, (std::string *)(v59 + 1), v83); + v61 = v92; + HIBYTE(v88) = 0; + v92 = 0; + *((_BYTE *)v101[0] + *(v101[0] - 3)) = v61; + v62 = v101[0]; + v32 = v101[0] - 3; + if ( (_UNKNOWN *)v101[0] != &unk_51641C ) + goto LABEL_118; + goto LABEL_55; + } + if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 ) + break; + v27 = memchr(Buf, (char)v11, 0xAu); + if ( v27 ) + { + v28 = (_BYTE)v27 - (_BYTE)Buf + 48; + v29 = *(*v6 - 3); + v94 = v29; + v30 = v29 + 1; + if ( v29 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v29 + 1), v83); + *((_BYTE *)*v6 + *(*v6 - 3)) = v28; + v31 = *v6; + v32 = *v6 - 3; + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v31 - 1) = 0; + *(v31 - 3) = v30; + *((_BYTE *)v32 + v94 + 13) = 0; + } + ++v92; + v93 = v90; + goto LABEL_55; + } + if ( *(_BYTE *)(v99 + 92) != (_BYTE)v11 && *(_BYTE *)(v99 + 98) != (_BYTE)v11 ) + goto LABEL_60; + v38 = v101[0]; + v45 = ((HIBYTE(v88) ^ 1) & (unsigned __int8)v93) == 0; + v93 &= HIBYTE(v88) ^ 1; + v39 = *(v101[0] - 3); + if ( v45 ) + goto LABEL_61; + if ( v39 && !(_BYTE)v88 ) + { + v86 = (std::string *)(v39 + 1); + if ( v39 + 1 > *(v101[0] - 2) || *((int *)v101[0] - 1) > 0 ) + std::string::reserve(v101, v86, v83); + *((_BYTE *)v101[0] + *(v101[0] - 3)) = v92; + v67 = v101[0]; + v68 = v101[0] - 3; + if ( (_UNKNOWN *)v101[0] != &unk_51641C ) + { + *(v101[0] - 1) = 0; + *(v67 - 3) = (unsigned int)v86; + *((_BYTE *)v68 + v39 + 13) = 0; + } + } + v50 = *(*v6 - 3); + if ( v50 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v50 + 1), v83); + *((_BYTE *)*v6 + *(*v6 - 3)) = 101; + v51 = *v6; + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v51 - 1) = 0; + *(v51 - 3) = v50 + 1; + *((_BYTE *)v51 + v50 + 1) = 0; + } + v52 = (_DWORD *)a1; + v53 = *(_DWORD *)(a1 + 8); + if ( v53 < *(_DWORD *)(a1 + 12) ) + { + HIDWORD(a1) = -1; + *(_DWORD *)(a1 + 8) = v53 + 1; +LABEL_102: + v54 = 0; + if ( v52[2] >= v52[3] && (*(int (__fastcall **)(_DWORD *))(*v52 + 36))(v52) == -1 ) + { + LODWORD(a1) = 0; + v54 = v93; + } + goto LABEL_103; + } + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v52 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_102; + v54 = v93; +LABEL_103: + v55 = a3 == -1; + v56 = v55 & (a2 != 0); + if ( v56 ) + { + v55 = 0; + if ( a2[2] >= a2[3] ) + { + v65 = (*(int (**)(void))(*a2 + 36))(); + v55 = 0; + if ( v65 == -1 ) + { + a2 = 0; + v55 = v56; + } + } + } + if ( v54 == v55 ) + { +LABEL_214: + v38 = v101[0]; + if ( *(v101[0] - 3) ) + goto LABEL_66; + goto LABEL_68; + } + LOBYTE(v11) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v66 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v66 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v11) = -1; + } + } + else + { + LOBYTE(v11) = *v66; + } + } + v57 = *(_BYTE *)(v99 + 75); + v26 = *(_BYTE *)(v99 + 16); + if ( v57 == (_BYTE)v11 || *(_BYTE *)(v99 + 74) == (_BYTE)v11 ) + { + if ( !v26 || *(_BYTE *)(v99 + 37) != (_BYTE)v11 ) + { + if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 ) + goto LABEL_108; + v63 = 2 * (v57 != (char)v11) + 43; + v85 = (std::string *)*(*v6 - 3); + v60 = (char *)v85 + 1; + if ( (unsigned int)v85 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)((char *)v85 + 1), v83); + *((_BYTE *)*v6 + *(*v6 - 3)) = v63; + v62 = *v6; + HIBYTE(v88) = v93; + v32 = *v6 - 3; + if ( *v6 != (unsigned int *)&unk_51641C ) + { +LABEL_118: + *(v62 - 1) = 0; + *(v62 - 3) = (unsigned int)v60; + *((_BYTE *)v85 + (_DWORD)v32 + 13) = 0; + } +LABEL_55: + v33 = (_DWORD *)a1; + v34 = *(_DWORD *)(a1 + 8); + if ( v34 < *(_DWORD *)(a1 + 12) ) + goto LABEL_56; + goto LABEL_85; + } + HIBYTE(v88) = *(_BYTE *)(v99 + 16); + v93 = HIBYTE(v88); + } + else + { +LABEL_108: + HIBYTE(v88) = v93; + } + } + v45 = v88 == 0; + HIBYTE(v88) |= v88; + v38 = v101[0]; + v40 = *(v101[0] - 3); + if ( !v45 ) + goto LABEL_65; + if ( v40 ) + { + v84 = (std::string *)(v40 + 1); + if ( v40 + 1 > *(v101[0] - 2) || *((int *)v101[0] - 1) > 0 ) + std::string::reserve(v101, v84, v83); + *((_BYTE *)v101[0] + *(v101[0] - 3)) = v92; + v46 = v101[0]; + v47 = v101[0] - 3; + if ( (_UNKNOWN *)v101[0] != &unk_51641C ) + { + *(v101[0] - 1) = 0; + *(v46 - 3) = (unsigned int)v84; + *((_BYTE *)v47 + v40 + 13) = 0; + } + } + v48 = *(*v6 - 3); + if ( v48 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v48 + 1), v83); + v32 = (unsigned int *)*(*v6 - 3); + LOBYTE(v88) = v90; + *((_BYTE *)v32 + (_DWORD)*v6) = 46; + v49 = *v6; + if ( *v6 == (unsigned int *)&unk_51641C ) + goto LABEL_55; + *(v49 - 1) = 0; + *(v49 - 3) = v48 + 1; + *((_BYTE *)v49 + v48 + 1) = 0; + v33 = (_DWORD *)a1; + v34 = *(_DWORD *)(a1 + 8); + if ( v34 < *(_DWORD *)(a1 + 12) ) + { +LABEL_56: + HIDWORD(a1) = -1; + v33[2] = v34 + 1; + goto LABEL_57; + } +LABEL_85: + (*(void (__fastcall **)(_DWORD *, unsigned int *))(*v33 + 40))(v33, v32); + v33 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v35 = v90; + goto LABEL_58; + } +LABEL_57: + v35 = 0; + if ( v33[2] >= v33[3] && (*(int (__fastcall **)(_DWORD *, unsigned int *))(*v33 + 36))(v33, v32) == -1 ) + { + LODWORD(a1) = 0; + v35 = v90; + } +LABEL_58: + v36 = a3 == -1; + v37 = v36 & (a2 != 0); + if ( v37 ) + { + v36 = 0; + if ( a2[2] >= a2[3] ) + { + v58 = (*(int (**)(void))(*a2 + 36))(); + v36 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v36 = v37; + } + } + } + if ( v36 == v35 ) + break; + LOBYTE(v11) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v64 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v64 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v11) = -1; + } + } + else + { + LOBYTE(v11) = *v64; + } + } + v26 = *(_BYTE *)(v99 + 16); + } +LABEL_60: + v38 = v101[0]; + v39 = *(v101[0] - 3); +LABEL_61: + if ( !v39 ) + goto LABEL_68; + if ( v88 ) + goto LABEL_66; +LABEL_63: + std::string::push_back(v101, (std::string *)(char)v92, v83); + v38 = v101[0]; +LABEL_66: + v95 = v38; + v41 = std::__verify_grouping(*(char **)(v99 + 8), *(_DWORD *)(v99 + 12), (const char **)v101); + v38 = v95; + if ( !v41 ) + *a5 = 4; +LABEL_68: + v42 = a1; + if ( v38 == (unsigned int *)&unk_51641C ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v38 - 3, (int)&v100); + return v42; +} +// 48BE04: variable 'v83' is possibly undefined +// 48BFA2: variable 'v15' is possibly undefined +// 48C8BA: variable 'v70' is possibly undefined +// 48C8E2: variable 'v32' is possibly undefined + +//----- (0048CC00) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); +} + +//----- (0048CC10) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (0048CC20) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); +} + +//----- (0048CC30) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); +} + +//----- (0048CC40) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); +} + +//----- (0048CC50) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 48D6F0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (0048CC70) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 48D700: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (0048CC90) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 48D710: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (0048CCB0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned __int16 *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 48D720: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (0048CCD0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 48D730: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (0048CCF0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 48D740: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (0048CD10) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + int v6; // esi + unsigned __int64 result; // rax + unsigned int v8[8]; // [esp+2Ch] [ebp-20h] BYREF + + v6 = *(_DWORD *)(a4 + 12); + *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; + result = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, v8); + *(_DWORD *)(a4 + 12) = v6; + *a6 = v8[0]; + return result; +} +// 48CD10: using guessed type unsigned int var_20[8]; + +//----- (0048CD80) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + int *a5, + _BYTE *a6) +{ + _BYTE *v6; // edi + int v8; // eax + int v9; // ecx + _DWORD *v10; // edi + int v11; // eax + bool v12; // dl + _DWORD *v13; // ebp + int v14; // eax + unsigned int v15; // edi + bool v16; // si + unsigned int v17; // eax + bool v18; // cl + char v19; // si + char v20; // si + char v21; // bl + _BYTE *v22; // eax + int v23; // eax + int v24; // eax + unsigned int v25; // eax + bool v26; // bl + _DWORD *v27; // edi + unsigned int v28; // ebp + int v29; // eax + unsigned int v30; // eax + char v31; // [esp+27h] [ebp-35h] + char v32; // [esp+27h] [ebp-35h] + bool v33; // [esp+27h] [ebp-35h] + bool v34; // [esp+28h] [ebp-34h] + bool v35; // [esp+2Ch] [ebp-30h] + bool v36; // [esp+2Ch] [ebp-30h] + bool v37; // [esp+2Dh] [ebp-2Fh] + bool v38; // [esp+2Eh] [ebp-2Eh] + bool v39; // [esp+2Fh] [ebp-2Dh] + unsigned int v40[8]; // [esp+3Ch] [ebp-20h] BYREF + + if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) + { + v40[0] = -1; + a1 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v40); + if ( v40[0] > 1 ) + { + *a6 = 1; + *a5 = 4; + if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) + *a5 |= 2u; + } + else + { + v6 = a6; + *a6 = v40[0]; + *v6 &= 1u; + } + return a1; + } + v8 = std::__use_cache>::operator()((int *)(a4 + 108)); + v9 = *(_DWORD *)(v8 + 32); + v10 = (_DWORD *)v8; + v11 = *(_DWORD *)(v8 + 24); + v37 = v11 == 0; + if ( !(v11 | v9) ) + goto LABEL_30; + v38 = 1; + v12 = 1; + v13 = v10; + v35 = v9 == 0; + v14 = HIDWORD(a1); + v15 = 0; + while ( 1 ) + { + v32 = v14 == -1; + v19 = v32 & ((_DWORD)a1 != 0); + if ( v19 ) + { + v32 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v39 = v12; + v24 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v12 = v39; + if ( v24 == -1 ) + { + LODWORD(a1) = 0; + v32 = v19; + } + } + } + v20 = a3 == -1; + v21 = v20 & (a2 != 0); + if ( v21 ) + { + v20 = 0; + if ( a2[2] >= a2[3] ) + { + v34 = v12; + v23 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v12 = v34; + if ( v23 == -1 ) + { + a2 = 0; + v20 = v21; + } + } + } + if ( v32 == v20 ) + { + v31 = 1; + v25 = v15; + v26 = v12; + v27 = v13; + v28 = v25; +LABEL_46: + if ( v26 && v27[8] == v28 && v28 ) + { + *a6 = 0; + if ( v38 && v27[6] == v28 ) + goto LABEL_31; + } + else + { + if ( !v38 || v27[6] != v28 || !v28 ) + { + *a6 = 0; + if ( !v31 ) + goto LABEL_31; + *a5 = 6; + return a1; + } + *a6 = 1; + } + v29 = 2 * (v31 != 0); + goto LABEL_61; + } + LOBYTE(v22) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v22 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ) + { + v33 = v12; + v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); + v12 = v33; + if ( v22 == (_BYTE *)-1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v22) = *v22; + } + } + if ( !v35 ) + v12 = *(_BYTE *)(v13[7] + v15) == (unsigned __int8)v22; + if ( !v12 ) + break; + if ( !v37 ) + goto LABEL_8; +LABEL_9: + v31 = v35 && !v38; + if ( v31 ) + { + if ( v12 && v13[8] == v15 && v15 ) + { + *a6 = 0; + v29 = 0; + goto LABEL_61; + } + goto LABEL_30; + } + v16 = v12 || v38; + if ( !v12 && !v38 ) + goto LABEL_30; + ++v15; + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + { + v36 = v12; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v12 = v36; + } + else + { + *(_DWORD *)(a1 + 8) = v17 + 1; + } + HIDWORD(a1) = -1; + if ( !v12 ) + { + v35 = v16; +LABEL_33: + v37 = v13[6] <= v15; + v18 = v37 && v35; + v38 = v16; + goto LABEL_16; + } + v35 = v13[8] <= v15; + if ( v38 ) + goto LABEL_33; + v37 = v12; + v18 = v13[8] <= v15; +LABEL_16: + v14 = -1; + if ( v18 ) + { + v30 = v15; + v26 = v12; + v27 = v13; + v28 = v30; + goto LABEL_46; + } + } + if ( !v37 ) + { +LABEL_8: + v38 = *(_BYTE *)(v13[5] + v15) == (unsigned __int8)v22; + goto LABEL_9; + } + if ( v38 && v13[6] == v15 && v15 ) + { + *a6 = 1; + v29 = 0; +LABEL_61: + *a5 = v29; + return a1; + } +LABEL_30: + *a6 = 0; +LABEL_31: + *a5 = 4; + return a1; +} +// 48CD80: using guessed type unsigned int var_20[8]; + +//----- (0048D1E0) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + double *a6) +{ + unsigned __int64 v6; // rax + unsigned __int64 v7; // kr00_8 + char v8; // al + char *v9; // ecx + int v11; // eax + int v12; // edx + unsigned int v13; // [esp+4h] [ebp-54h] + int v14; // [esp+20h] [ebp-38h] + char v15; // [esp+2Eh] [ebp-2Ah] + char v16; // [esp+2Fh] [ebp-29h] + char *String; // [esp+38h] [ebp-20h] BYREF + int v18[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_51641C; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v13); + v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (unsigned int **)&String); + v14 = v6; + v7 = v6; + v18[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v16 = HIDWORD(v7) == -1; + v15 = v16 & ((_DWORD)v7 != 0); + if ( v15 ) + { + v16 = 0; + if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) + { + v11 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v7 + 36))(v7); + v16 = v11 != -1 ? 0 : v15; + v14 = v11 == -1 ? 0 : v7; + } + } + v8 = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + v8 = 0; + if ( a2[2] >= a2[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; + } + } + if ( v8 == v16 ) + *a5 |= 2u; + v9 = String - 12; + if ( String != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v9, (int)v18); + } + return v14; +} +// 48D210: variable 'v13' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; +// 48D1E0: using guessed type int var_1C[7]; + +//----- (0048D390) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + long double *a6) +{ + unsigned __int64 v6; // rax + unsigned __int64 v7; // kr00_8 + char v8; // al + char *v9; // ecx + int v11; // eax + int v12; // edx + unsigned int v13; // [esp+4h] [ebp-54h] + int v14; // [esp+20h] [ebp-38h] + char v15; // [esp+2Eh] [ebp-2Ah] + char v16; // [esp+2Fh] [ebp-29h] + char *String; // [esp+38h] [ebp-20h] BYREF + int v18[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_51641C; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v13); + v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (unsigned int **)&String); + v14 = v6; + v7 = v6; + v18[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v16 = HIDWORD(v7) == -1; + v15 = v16 & ((_DWORD)v7 != 0); + if ( v15 ) + { + v16 = 0; + if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) + { + v11 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v7 + 36))(v7); + v16 = v11 != -1 ? 0 : v15; + v14 = v11 == -1 ? 0 : v7; + } + } + v8 = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + v8 = 0; + if ( a2[2] >= a2[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; + } + } + if ( v8 == v16 ) + *a5 |= 2u; + v9 = String - 12; + if ( String != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v9, (int)v18); + } + return v14; +} +// 48D3C0: variable 'v13' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; +// 48D390: using guessed type int var_1C[7]; + +//----- (0048D540) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + float *a6) +{ + unsigned __int64 v6; // rax + unsigned __int64 v7; // kr00_8 + char v8; // al + char *v9; // ecx + int v11; // eax + int v12; // edx + unsigned int v13; // [esp+4h] [ebp-54h] + int v14; // [esp+20h] [ebp-38h] + char v15; // [esp+2Eh] [ebp-2Ah] + char v16; // [esp+2Fh] [ebp-29h] + char *String; // [esp+38h] [ebp-20h] BYREF + int v18[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_51641C; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v13); + v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (unsigned int **)&String); + v14 = v6; + v7 = v6; + v18[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v16 = HIDWORD(v7) == -1; + v15 = v16 & ((_DWORD)v7 != 0); + if ( v15 ) + { + v16 = 0; + if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) + { + v11 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v7 + 36))(v7); + v16 = v11 != -1 ? 0 : v15; + v14 = v11 == -1 ? 0 : v7; + } + } + v8 = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + v8 = 0; + if ( a2[2] >= a2[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; + } + } + if ( v8 == v16 ) + *a5 |= 2u; + v9 = String - 12; + if ( String != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v9, (int)v18); + } + return v14; +} +// 48D570: variable 'v13' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; +// 48D540: using guessed type int var_1C[7]; + +//----- (0048D750) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + unsigned int *a7) +{ + _DWORD *v7; // ebx + int v8; // esi + bool v9; // dl + char v10; // dl + char v11; // di + wchar_t v12; // di + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + unsigned int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + wchar_t *v28; // eax + int v29; // eax + int v30; // edx + unsigned int v31; // eax + unsigned int v32; // edx + __int16 *v33; // eax + __int16 v34; // dx + bool v35; // di + char v36; // di + size_t v37; // edi + int *v38; // eax + bool v40; // al + wchar_t *v41; // eax + __int16 *v42; // eax + __int16 v43; // ax + int v44; // edx + unsigned int v45; // eax + unsigned int v46; // edx + __int16 *v47; // eax + __int16 v48; // ax + bool v49; // di + char v50; // di + unsigned int v51; // edx + bool v52; // cl + unsigned int v53; // eax + wchar_t *v54; // eax + __int16 *v55; // eax + __int16 v56; // ax + wchar_t *v57; // eax + __int16 *v58; // eax + __int16 v59; // dx + unsigned int v60; // edx + char v61; // cl + __int16 *v62; // eax + __int16 v63; // cx + __int16 *v64; // eax + __int16 v65; // ax + wchar_t *v66; // eax + std::locale::_Impl *v67; // eax + std::locale::_Impl *v68; // esi + wchar_t *v69; // eax + __int16 *v70; // eax + __int16 v71; // cx + char v72; // cl + __int16 v73; // ax + __int16 v74; // ax + void (__cdecl *v75)(void *); // [esp+4h] [ebp-84h] + unsigned int v76; // [esp+8h] [ebp-80h] + bool v77; // [esp+1Fh] [ebp-69h] + size_t N; // [esp+20h] [ebp-68h] + unsigned int v79; // [esp+28h] [ebp-60h] + int S; // [esp+2Ch] [ebp-5Ch] + wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + char v83; // [esp+32h] [ebp-56h] + char v84; // [esp+33h] [ebp-55h] + int v85; // [esp+34h] [ebp-54h] + unsigned int v86; // [esp+34h] [ebp-54h] + _DWORD *v87; // [esp+38h] [ebp-50h] + char v88; // [esp+38h] [ebp-50h] + int v89; // [esp+3Ch] [ebp-4Ch] + char v90; // [esp+40h] [ebp-48h] + char v91; // [esp+40h] [ebp-48h] + char v92; // [esp+40h] [ebp-48h] + size_t v93; // [esp+40h] [ebp-48h] + bool v94; // [esp+44h] [ebp-44h] + int *v95; // [esp+48h] [ebp-40h] + bool v96; // [esp+48h] [ebp-40h] + char v97; // [esp+48h] [ebp-40h] + bool v98; // [esp+48h] [ebp-40h] + std::locale::facet *v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + std::locale::facet *v101; // [esp+4Ch] [ebp-3Ch] + void *v102; // [esp+58h] [ebp-30h] BYREF + size_t v103; // [esp+5Ch] [ebp-2Ch] + int v104[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v87 = a3; + v99 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + v95 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + if ( !v8 ) + { + v67 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v75); + *((_DWORD *)v67 + 1) = 0; + v68 = v67; + *(_DWORD *)v67 = &off_538BE4; + *((_DWORD *)v67 + 2) = 0; + *((_DWORD *)v67 + 3) = 0; + *((_BYTE *)v67 + 16) = 0; + *((_DWORD *)v67 + 5) = 0; + *((_DWORD *)v67 + 6) = 0; + *((_DWORD *)v67 + 7) = 0; + *((_DWORD *)v67 + 8) = 0; + *((_DWORD *)v67 + 9) = 0; + *((_BYTE *)v67 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v67, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v68, v99, v76); + v8 = *v95; + } + v100 = 8; + v85 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v85 != 64 ) + v100 = v85 == 8 ? 16 : 10; + v96 = a2 == 0xFFFF; + v9 = v96 && a1 != 0; + if ( v9 ) + { + v64 = (__int16 *)a1[2]; + if ( (unsigned int)v64 >= a1[3] ) + { + v65 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v96 && a1 != 0; + } + else + { + v65 = *v64; + } + v7 = v65 == -1 ? 0 : a1; + v10 = v65 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v94 = a4 == -1; + if ( v94 && a3 != 0 ) + { + v62 = (__int16 *)a3[2]; + if ( (unsigned int)v62 >= a3[3] ) + { + v88 = v10; + v73 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v88; + v63 = v73; + } + else + { + v63 = *v62; + } + v87 = v63 == -1 ? 0 : a3; + v11 = v63 == -1 && v94 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v77 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v84 = 1; + v89 = 0; + v98 = 0; +LABEL_44: + v21 = v100; + if ( v100 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v66 = (wchar_t *)v7[2]; + if ( (unsigned int)v66 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v66; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v77 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v97 = v18 == -1; + v19 = v94 && v87 != 0; + if ( v19 ) + { + v70 = (__int16 *)v87[2]; + if ( (unsigned int)v70 >= v87[3] ) + { + v74 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + v19 = v94 && v87 != 0; + v71 = v74; + } + else + { + v71 = *v70; + } + v87 = v71 == -1 ? 0 : v87; + v20 = v71 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v97 == v20 ) + { + v84 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = v100; + v89 = 0; + v98 = 0; + if ( v100 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v69 = (wchar_t *)v7[2]; + if ( (unsigned int)v69 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v69; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v77 = 0; + } + v89 = 0; + v98 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v84 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v40 = !v98 || v100 == 10; + if ( !v40 ) + goto LABEL_33; + v98 = v85 == 0 || v100 == 8; + if ( !v98 ) + { + ++v89; + v98 = v40; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v89 = 0; + v100 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v90 = v25 == -1; + v26 = v94 && v87 != 0; + if ( v26 ) + { + v42 = (__int16 *)v87[2]; + if ( (unsigned int)v42 >= v87[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + v26 = v94 && v87 != 0; + } + else + { + v43 = *v42; + } + v87 = v43 == -1 ? 0 : v87; + v27 = v43 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v90 == v27 ) + { + v84 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v41 = (wchar_t *)v7[2]; + if ( (unsigned int)v41 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v41; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v98 ) + goto LABEL_86; + } + if ( !v98 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v84 = 0; + v98 = 1; + goto LABEL_44; + } + if ( v85 == 0 || v100 == 16 ) + { + v89 = 0; + v98 = 0; + v100 = 16; + goto LABEL_37; + } + v84 = 0; + v98 = 1; + N = v100; + S = v100; +LABEL_46: + v103 = 0; + v102 = v104; + LOBYTE(v104[0]) = 0; + if ( v14 ) + std::string::reserve(&v102, 0x20u); + v79 = 0xFFFFFFFF / v100; + v82 = *(_BYTE *)(v8 + 164); + if ( v82 ) + { + if ( v84 ) + { + v37 = v103; + v86 = 0; + v83 = 0; + v38 = (int *)v102; + v82 = v84; + v84 = 0; +LABEL_67: + if ( !v37 ) + goto LABEL_68; +LABEL_105: + v101 = (std::locale::facet *)(v37 + 1); + if ( v38 == v104 ) + v51 = 15; + else + v51 = v104[0]; + if ( (unsigned int)v101 > v51 ) + { + std::string::_M_mutate((int)&v102, v37, 0, 0, 1u); + v38 = (int *)v102; + } + *((_BYTE *)v38 + v37) = v89; + v103 = v37 + 1; + *((_BYTE *)v101 + (_DWORD)v102) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v102) ) + *a6 = 4; + v38 = (int *)v102; + if ( !v98 && !(v103 | v89) ) + goto LABEL_70; + goto LABEL_113; + } + v83 = 0; + Sa = (wchar_t *)(v8 + 120); + v86 = 0; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v37 = v103; + v38 = (int *)v102; + if ( !v89 ) + { + v82 = 0; + v84 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v93 = v103 + 1; + if ( v102 == v104 ) + v60 = 15; + else + v60 = v104[0]; + if ( v93 > v60 ) + { + std::string::_M_mutate((int)&v102, v103, 0, 0, 1u); + v38 = (int *)v102; + } + v61 = v89; + v89 = 0; + *((_BYTE *)v38 + v37) = v61; + v103 = v93; + *((_BYTE *)v102 + v93) = 0; +LABEL_59: + v31 = v7[2]; + v32 = v7[3]; + if ( v31 >= v32 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v28 = wmemchr(Sa, v12, N); + if ( !v28 ) + goto LABEL_131; + v29 = (char *)v28 - (char *)Sa; + v30 = v29 >> 1; + if ( v29 > 30 ) + v30 -= 6; + if ( v79 >= v86 ) + { + v83 |= ~v30 < v100 * v86; + ++v89; + v86 = v30 + v100 * v86; + goto LABEL_59; + } + v32 = v7[3]; + v83 = v82; + v31 = v7[2]; + if ( v31 >= v32 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v33 = (__int16 *)v7[2]; + v32 = v7[3]; + goto LABEL_61; + } + } + v33 = (__int16 *)(v31 + 2); + v7[2] = v33; +LABEL_61: + if ( (unsigned int)v33 >= v32 ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v34 = *v33; + v7 = v34 == -1 ? 0 : v7; + v91 = v34 == -1; + v35 = v94 && v87 != 0; + if ( v35 ) + { + v58 = (__int16 *)v87[2]; + if ( (unsigned int)v58 >= v87[3] ) + v59 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + else + v59 = *v58; + v87 = v59 == -1 ? 0 : v87; + v36 = v59 == -1 && v35; + } + else + { + v36 = a4 == -1; + } + if ( v36 == v91 ) + { + v37 = v103; + v38 = (int *)v102; + goto LABEL_67; + } + if ( v7 ) + { + v57 = (wchar_t *)v7[2]; + if ( (unsigned int)v57 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v57; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v84 ) + { + v72 = v84; + v37 = v103; + v83 = 0; + v84 = 0; + v38 = (int *)v102; + v82 = v72; + v86 = 0; + goto LABEL_67; + } + v83 = 0; + v86 = 0; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v44 = v12 - 55; + goto LABEL_96; + } + v44 = v12 - 87; + if ( v79 >= v86 ) + goto LABEL_121; +LABEL_97: + v45 = v7[2]; + v46 = v7[3]; + v83 = 1; + if ( v45 < v46 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v47 = (__int16 *)v7[2]; + v46 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_131: + v37 = v103; + v38 = (int *)v102; + v82 = 0; + goto LABEL_67; + } +LABEL_95: + v44 = v12 - 48; +LABEL_96: + if ( v79 < v86 ) + goto LABEL_97; +LABEL_121: + v52 = ~v44 < v100 * v86; + v53 = v44 + v100 * v86; + v46 = v7[3]; + v83 |= v52; + v86 = v53; + v45 = v7[2]; + ++v89; + if ( v45 >= v46 ) + goto LABEL_122; +LABEL_98: + v47 = (__int16 *)(v45 + 2); + v7[2] = v47; + } + if ( (unsigned int)v47 >= v46 ) + v48 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v48 = *v47; + v7 = v48 == -1 ? 0 : v7; + v92 = v48 == -1; + v49 = v94 && v87 != 0; + if ( v49 ) + { + v55 = (__int16 *)v87[2]; + if ( (unsigned int)v55 >= v87[3] ) + v56 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + else + v56 = *v55; + v87 = v56 == -1 ? 0 : v87; + v50 = v56 == -1 && v49; + } + else + { + v50 = a4 == -1; + } + if ( v92 != v50 ) + { + if ( v7 ) + { + v54 = (wchar_t *)v7[2]; + if ( (unsigned int)v54 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v54; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v37 = v103; + v38 = (int *)v102; + v82 = 1; + if ( v103 ) + goto LABEL_105; +LABEL_68: + if ( !v98 && !v89 ) + { +LABEL_70: + *a7 = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v84 ) + goto LABEL_70; + if ( v83 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v77 ) + v86 = -v86; + *a7 = v86; + } +LABEL_71: + if ( v82 ) + *a6 |= 2u; + if ( v38 != v104 ) + operator delete(v38); + return v7; +} +// 48E137: variable 'v75' is possibly undefined +// 48E1AA: variable 'v76' is possibly undefined +// 5165CC: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (0048E440) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int *a7) +{ + _DWORD *v7; // ebx + int v8; // esi + bool v9; // dl + char v10; // dl + char v11; // di + wchar_t v12; // di + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + unsigned int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + wchar_t *v28; // eax + int v29; // eax + int v30; // edx + unsigned int v31; // eax + unsigned int v32; // edx + __int16 *v33; // eax + __int16 v34; // dx + bool v35; // di + char v36; // di + size_t v37; // edi + int *v38; // eax + bool v40; // al + wchar_t *v41; // eax + __int16 *v42; // eax + __int16 v43; // ax + int v44; // edx + unsigned int v45; // eax + unsigned int v46; // edx + __int16 *v47; // eax + __int16 v48; // ax + bool v49; // di + char v50; // di + unsigned int v51; // edx + int v52; // edx + bool v53; // cl + unsigned int v54; // eax + wchar_t *v55; // eax + __int16 *v56; // eax + __int16 v57; // ax + wchar_t *v58; // eax + __int16 *v59; // eax + __int16 v60; // dx + unsigned int v61; // edx + char v62; // cl + __int16 *v63; // eax + __int16 v64; // cx + __int16 *v65; // eax + __int16 v66; // ax + wchar_t *v67; // eax + std::locale::_Impl *v68; // eax + std::locale::_Impl *v69; // esi + wchar_t *v70; // eax + __int16 *v71; // eax + __int16 v72; // cx + char v73; // cl + __int16 v74; // ax + __int16 v75; // ax + void (__cdecl *v76)(void *); // [esp+4h] [ebp-84h] + unsigned int v77; // [esp+8h] [ebp-80h] + size_t N; // [esp+18h] [ebp-70h] + bool v79; // [esp+1Ch] [ebp-6Ch] + unsigned int v80; // [esp+24h] [ebp-64h] + unsigned int v81; // [esp+28h] [ebp-60h] + int S; // [esp+2Ch] [ebp-5Ch] + wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] + char v84; // [esp+30h] [ebp-58h] + char v85; // [esp+32h] [ebp-56h] + char v86; // [esp+33h] [ebp-55h] + int v87; // [esp+34h] [ebp-54h] + unsigned int v88; // [esp+34h] [ebp-54h] + _DWORD *v89; // [esp+38h] [ebp-50h] + char v90; // [esp+38h] [ebp-50h] + int v91; // [esp+3Ch] [ebp-4Ch] + char v92; // [esp+40h] [ebp-48h] + char v93; // [esp+40h] [ebp-48h] + char v94; // [esp+40h] [ebp-48h] + size_t v95; // [esp+40h] [ebp-48h] + bool v96; // [esp+44h] [ebp-44h] + int *v97; // [esp+48h] [ebp-40h] + bool v98; // [esp+48h] [ebp-40h] + char v99; // [esp+48h] [ebp-40h] + bool v100; // [esp+48h] [ebp-40h] + std::locale::facet *v101; // [esp+4Ch] [ebp-3Ch] + unsigned int v102; // [esp+4Ch] [ebp-3Ch] + std::locale::facet *v103; // [esp+4Ch] [ebp-3Ch] + void *v104; // [esp+58h] [ebp-30h] BYREF + size_t v105; // [esp+5Ch] [ebp-2Ch] + int v106[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v89 = a3; + v101 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); + v97 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); + if ( !v8 ) + { + v68 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v76); + *((_DWORD *)v68 + 1) = 0; + v69 = v68; + *(_DWORD *)v68 = &off_538BE4; + *((_DWORD *)v68 + 2) = 0; + *((_DWORD *)v68 + 3) = 0; + *((_BYTE *)v68 + 16) = 0; + *((_DWORD *)v68 + 5) = 0; + *((_DWORD *)v68 + 6) = 0; + *((_DWORD *)v68 + 7) = 0; + *((_DWORD *)v68 + 8) = 0; + *((_DWORD *)v68 + 9) = 0; + *((_BYTE *)v68 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v68, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v69, v101, v77); + v8 = *v97; + } + v102 = 8; + v87 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v87 != 64 ) + v102 = v87 == 8 ? 16 : 10; + v98 = a2 == 0xFFFF; + v9 = v98 && a1 != 0; + if ( v9 ) + { + v65 = (__int16 *)a1[2]; + if ( (unsigned int)v65 >= a1[3] ) + { + v66 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v98 && a1 != 0; + } + else + { + v66 = *v65; + } + v7 = v66 == -1 ? 0 : a1; + v10 = v66 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v96 = a4 == -1; + if ( v96 && a3 != 0 ) + { + v63 = (__int16 *)a3[2]; + if ( (unsigned int)v63 >= a3[3] ) + { + v90 = v10; + v74 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v90; + v64 = v74; + } + else + { + v64 = *v63; + } + v89 = v64 == -1 ? 0 : a3; + v11 = v64 == -1 && v96 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v79 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v86 = 1; + v91 = 0; + v100 = 0; +LABEL_44: + v21 = v102; + if ( v102 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v67 = (wchar_t *)v7[2]; + if ( (unsigned int)v67 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v67; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v79 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v99 = v18 == -1; + v19 = v96 && v89 != 0; + if ( v19 ) + { + v71 = (__int16 *)v89[2]; + if ( (unsigned int)v71 >= v89[3] ) + { + v75 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); + v19 = v96 && v89 != 0; + v72 = v75; + } + else + { + v72 = *v71; + } + v89 = v72 == -1 ? 0 : v89; + v20 = v72 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v99 == v20 ) + { + v86 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = v102; + v91 = 0; + v100 = 0; + if ( v102 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v70 = (wchar_t *)v7[2]; + if ( (unsigned int)v70 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v70; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v79 = 0; + } + v91 = 0; + v100 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v86 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v40 = !v100 || v102 == 10; + if ( !v40 ) + goto LABEL_33; + v100 = v87 == 0 || v102 == 8; + if ( !v100 ) + { + ++v91; + v100 = v40; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v91 = 0; + v102 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v92 = v25 == -1; + v26 = v96 && v89 != 0; + if ( v26 ) + { + v42 = (__int16 *)v89[2]; + if ( (unsigned int)v42 >= v89[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); + v26 = v96 && v89 != 0; + } + else + { + v43 = *v42; + } + v89 = v43 == -1 ? 0 : v89; + v27 = v43 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v92 == v27 ) + { + v86 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v41 = (wchar_t *)v7[2]; + if ( (unsigned int)v41 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v41; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v100 ) + goto LABEL_86; + } + if ( !v100 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v86 = 0; + v100 = 1; + goto LABEL_44; + } + if ( v87 == 0 || v102 == 16 ) + { + v91 = 0; + v100 = 0; + v102 = 16; + goto LABEL_37; + } + v86 = 0; + v100 = 1; + N = v102; + S = v102; +LABEL_46: + v105 = 0; + v104 = v106; + LOBYTE(v106[0]) = 0; + if ( v14 ) + std::string::reserve(&v104, 0x20u); + v80 = v79 + 0x7FFFFFFF; + v81 = v80 / v102; + v84 = *(_BYTE *)(v8 + 164); + if ( v84 ) + { + if ( v86 ) + { + v37 = v105; + v88 = 0; + v85 = 0; + v38 = (int *)v104; + v84 = v86; + v86 = 0; +LABEL_67: + if ( !v37 ) + goto LABEL_68; +LABEL_105: + v103 = (std::locale::facet *)(v37 + 1); + if ( v38 == v106 ) + v51 = 15; + else + v51 = v106[0]; + if ( (unsigned int)v103 > v51 ) + { + std::string::_M_mutate((int)&v104, v37, 0, 0, 1u); + v38 = (int *)v104; + } + *((_BYTE *)v38 + v37) = v91; + v105 = v37 + 1; + *((_BYTE *)v103 + (_DWORD)v104) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v104) ) + *a6 = 4; + v38 = (int *)v104; + if ( !v100 && !(v105 | v91) ) + goto LABEL_70; + goto LABEL_113; + } + v85 = 0; + Sa = (wchar_t *)(v8 + 120); + v88 = 0; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v37 = v105; + v38 = (int *)v104; + if ( !v91 ) + { + v84 = 0; + v86 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v95 = v105 + 1; + if ( v104 == v106 ) + v61 = 15; + else + v61 = v106[0]; + if ( v95 > v61 ) + { + std::string::_M_mutate((int)&v104, v105, 0, 0, 1u); + v38 = (int *)v104; + } + v62 = v91; + v91 = 0; + *((_BYTE *)v38 + v37) = v62; + v105 = v95; + *((_BYTE *)v104 + v95) = 0; +LABEL_59: + v31 = v7[2]; + v32 = v7[3]; + if ( v31 >= v32 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v28 = wmemchr(Sa, v12, N); + if ( !v28 ) + goto LABEL_131; + v29 = (char *)v28 - (char *)Sa; + v30 = v29 >> 1; + if ( v29 > 30 ) + v30 -= 6; + if ( v81 >= v88 ) + { + v85 |= v80 - v30 < v102 * v88; + ++v91; + v88 = v30 + v102 * v88; + goto LABEL_59; + } + v32 = v7[3]; + v85 = v84; + v31 = v7[2]; + if ( v31 >= v32 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v33 = (__int16 *)v7[2]; + v32 = v7[3]; + goto LABEL_61; + } + } + v33 = (__int16 *)(v31 + 2); + v7[2] = v33; +LABEL_61: + if ( (unsigned int)v33 >= v32 ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v34 = *v33; + v7 = v34 == -1 ? 0 : v7; + v93 = v34 == -1; + v35 = v96 && v89 != 0; + if ( v35 ) + { + v59 = (__int16 *)v89[2]; + if ( (unsigned int)v59 >= v89[3] ) + v60 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); + else + v60 = *v59; + v89 = v60 == -1 ? 0 : v89; + v36 = v60 == -1 && v35; + } + else + { + v36 = a4 == -1; + } + if ( v36 == v93 ) + { + v37 = v105; + v38 = (int *)v104; + goto LABEL_67; + } + if ( v7 ) + { + v58 = (wchar_t *)v7[2]; + if ( (unsigned int)v58 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v58; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v86 ) + { + v73 = v86; + v37 = v105; + v85 = 0; + v86 = 0; + v38 = (int *)v104; + v84 = v73; + v88 = 0; + goto LABEL_67; + } + v85 = 0; + v88 = 0; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v44 = v12 - 55; + goto LABEL_96; + } + v44 = v12 - 87; + if ( v81 >= v88 ) + goto LABEL_121; +LABEL_97: + v45 = v7[2]; + v46 = v7[3]; + v85 = 1; + if ( v45 < v46 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v47 = (__int16 *)v7[2]; + v46 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_131: + v37 = v105; + v38 = (int *)v104; + v84 = 0; + goto LABEL_67; + } +LABEL_95: + v44 = v12 - 48; +LABEL_96: + if ( v81 < v88 ) + goto LABEL_97; +LABEL_121: + v53 = v80 - v44 < v102 * v88; + v54 = v44 + v102 * v88; + v46 = v7[3]; + v85 |= v53; + v88 = v54; + v45 = v7[2]; + ++v91; + if ( v45 >= v46 ) + goto LABEL_122; +LABEL_98: + v47 = (__int16 *)(v45 + 2); + v7[2] = v47; + } + if ( (unsigned int)v47 >= v46 ) + v48 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v48 = *v47; + v7 = v48 == -1 ? 0 : v7; + v94 = v48 == -1; + v49 = v96 && v89 != 0; + if ( v49 ) + { + v56 = (__int16 *)v89[2]; + if ( (unsigned int)v56 >= v89[3] ) + v57 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); + else + v57 = *v56; + v89 = v57 == -1 ? 0 : v89; + v50 = v57 == -1 && v49; + } + else + { + v50 = a4 == -1; + } + if ( v94 != v50 ) + { + if ( v7 ) + { + v55 = (wchar_t *)v7[2]; + if ( (unsigned int)v55 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v55; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v37 = v105; + v38 = (int *)v104; + v84 = 1; + if ( v105 ) + goto LABEL_105; +LABEL_68: + if ( !v100 && !v91 ) + { +LABEL_70: + *a7 = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v86 ) + goto LABEL_70; + if ( v85 ) + { + *a7 = v79 + 0x7FFFFFFF; + *a6 = 4; + } + else + { + v52 = v88; + if ( v79 ) + v52 = -v88; + *a7 = v52; + } +LABEL_71: + if ( v84 ) + *a6 |= 2u; + if ( v38 != v106 ) + operator delete(v38); + return v7; +} +// 48EE37: variable 'v76' is possibly undefined +// 48EEAA: variable 'v77' is possibly undefined +// 5165CC: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (0048F140) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + unsigned int *a7) +{ + _DWORD *v7; // ebx + int v8; // esi + bool v9; // dl + char v10; // dl + char v11; // di + wchar_t v12; // di + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + unsigned int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + wchar_t *v28; // eax + int v29; // eax + int v30; // edx + unsigned int v31; // eax + unsigned int v32; // edx + __int16 *v33; // eax + __int16 v34; // dx + bool v35; // di + char v36; // di + size_t v37; // edi + int *v38; // eax + bool v40; // al + wchar_t *v41; // eax + __int16 *v42; // eax + __int16 v43; // ax + int v44; // edx + unsigned int v45; // eax + unsigned int v46; // edx + __int16 *v47; // eax + __int16 v48; // ax + bool v49; // di + char v50; // di + unsigned int v51; // edx + bool v52; // cl + unsigned int v53; // eax + wchar_t *v54; // eax + __int16 *v55; // eax + __int16 v56; // ax + wchar_t *v57; // eax + __int16 *v58; // eax + __int16 v59; // dx + unsigned int v60; // edx + char v61; // cl + __int16 *v62; // eax + __int16 v63; // cx + __int16 *v64; // eax + __int16 v65; // ax + wchar_t *v66; // eax + std::locale::_Impl *v67; // eax + std::locale::_Impl *v68; // esi + wchar_t *v69; // eax + __int16 *v70; // eax + __int16 v71; // cx + char v72; // cl + __int16 v73; // ax + __int16 v74; // ax + void (__cdecl *v75)(void *); // [esp+4h] [ebp-84h] + unsigned int v76; // [esp+8h] [ebp-80h] + bool v77; // [esp+1Fh] [ebp-69h] + size_t N; // [esp+20h] [ebp-68h] + unsigned int v79; // [esp+28h] [ebp-60h] + int S; // [esp+2Ch] [ebp-5Ch] + wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + char v83; // [esp+32h] [ebp-56h] + char v84; // [esp+33h] [ebp-55h] + int v85; // [esp+34h] [ebp-54h] + unsigned int v86; // [esp+34h] [ebp-54h] + _DWORD *v87; // [esp+38h] [ebp-50h] + char v88; // [esp+38h] [ebp-50h] + int v89; // [esp+3Ch] [ebp-4Ch] + char v90; // [esp+40h] [ebp-48h] + char v91; // [esp+40h] [ebp-48h] + char v92; // [esp+40h] [ebp-48h] + size_t v93; // [esp+40h] [ebp-48h] + bool v94; // [esp+44h] [ebp-44h] + int *v95; // [esp+48h] [ebp-40h] + bool v96; // [esp+48h] [ebp-40h] + char v97; // [esp+48h] [ebp-40h] + bool v98; // [esp+48h] [ebp-40h] + std::locale::facet *v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + std::locale::facet *v101; // [esp+4Ch] [ebp-3Ch] + void *v102; // [esp+58h] [ebp-30h] BYREF + size_t v103; // [esp+5Ch] [ebp-2Ch] + int v104[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v87 = a3; + v99 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + v95 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + if ( !v8 ) + { + v67 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v75); + *((_DWORD *)v67 + 1) = 0; + v68 = v67; + *(_DWORD *)v67 = &off_538BE4; + *((_DWORD *)v67 + 2) = 0; + *((_DWORD *)v67 + 3) = 0; + *((_BYTE *)v67 + 16) = 0; + *((_DWORD *)v67 + 5) = 0; + *((_DWORD *)v67 + 6) = 0; + *((_DWORD *)v67 + 7) = 0; + *((_DWORD *)v67 + 8) = 0; + *((_DWORD *)v67 + 9) = 0; + *((_BYTE *)v67 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v67, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v68, v99, v76); + v8 = *v95; + } + v100 = 8; + v85 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v85 != 64 ) + v100 = v85 == 8 ? 16 : 10; + v96 = a2 == 0xFFFF; + v9 = v96 && a1 != 0; + if ( v9 ) + { + v64 = (__int16 *)a1[2]; + if ( (unsigned int)v64 >= a1[3] ) + { + v65 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v96 && a1 != 0; + } + else + { + v65 = *v64; + } + v7 = v65 == -1 ? 0 : a1; + v10 = v65 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v94 = a4 == -1; + if ( v94 && a3 != 0 ) + { + v62 = (__int16 *)a3[2]; + if ( (unsigned int)v62 >= a3[3] ) + { + v88 = v10; + v73 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v88; + v63 = v73; + } + else + { + v63 = *v62; + } + v87 = v63 == -1 ? 0 : a3; + v11 = v63 == -1 && v94 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v77 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v84 = 1; + v89 = 0; + v98 = 0; +LABEL_44: + v21 = v100; + if ( v100 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v66 = (wchar_t *)v7[2]; + if ( (unsigned int)v66 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v66; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v77 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v97 = v18 == -1; + v19 = v94 && v87 != 0; + if ( v19 ) + { + v70 = (__int16 *)v87[2]; + if ( (unsigned int)v70 >= v87[3] ) + { + v74 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + v19 = v94 && v87 != 0; + v71 = v74; + } + else + { + v71 = *v70; + } + v87 = v71 == -1 ? 0 : v87; + v20 = v71 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v97 == v20 ) + { + v84 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = v100; + v89 = 0; + v98 = 0; + if ( v100 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v69 = (wchar_t *)v7[2]; + if ( (unsigned int)v69 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v69; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v77 = 0; + } + v89 = 0; + v98 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v84 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v40 = !v98 || v100 == 10; + if ( !v40 ) + goto LABEL_33; + v98 = v85 == 0 || v100 == 8; + if ( !v98 ) + { + ++v89; + v98 = v40; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v89 = 0; + v100 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v90 = v25 == -1; + v26 = v94 && v87 != 0; + if ( v26 ) + { + v42 = (__int16 *)v87[2]; + if ( (unsigned int)v42 >= v87[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + v26 = v94 && v87 != 0; + } + else + { + v43 = *v42; + } + v87 = v43 == -1 ? 0 : v87; + v27 = v43 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v90 == v27 ) + { + v84 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v41 = (wchar_t *)v7[2]; + if ( (unsigned int)v41 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v41; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v98 ) + goto LABEL_86; + } + if ( !v98 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v84 = 0; + v98 = 1; + goto LABEL_44; + } + if ( v85 == 0 || v100 == 16 ) + { + v89 = 0; + v98 = 0; + v100 = 16; + goto LABEL_37; + } + v84 = 0; + v98 = 1; + N = v100; + S = v100; +LABEL_46: + v103 = 0; + v102 = v104; + LOBYTE(v104[0]) = 0; + if ( v14 ) + std::string::reserve(&v102, 0x20u); + v79 = 0xFFFFFFFF / v100; + v82 = *(_BYTE *)(v8 + 164); + if ( v82 ) + { + if ( v84 ) + { + v37 = v103; + v86 = 0; + v83 = 0; + v38 = (int *)v102; + v82 = v84; + v84 = 0; +LABEL_67: + if ( !v37 ) + goto LABEL_68; +LABEL_105: + v101 = (std::locale::facet *)(v37 + 1); + if ( v38 == v104 ) + v51 = 15; + else + v51 = v104[0]; + if ( (unsigned int)v101 > v51 ) + { + std::string::_M_mutate((int)&v102, v37, 0, 0, 1u); + v38 = (int *)v102; + } + *((_BYTE *)v38 + v37) = v89; + v103 = v37 + 1; + *((_BYTE *)v101 + (_DWORD)v102) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v102) ) + *a6 = 4; + v38 = (int *)v102; + if ( !v98 && !(v103 | v89) ) + goto LABEL_70; + goto LABEL_113; + } + v83 = 0; + Sa = (wchar_t *)(v8 + 120); + v86 = 0; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v37 = v103; + v38 = (int *)v102; + if ( !v89 ) + { + v82 = 0; + v84 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v93 = v103 + 1; + if ( v102 == v104 ) + v60 = 15; + else + v60 = v104[0]; + if ( v93 > v60 ) + { + std::string::_M_mutate((int)&v102, v103, 0, 0, 1u); + v38 = (int *)v102; + } + v61 = v89; + v89 = 0; + *((_BYTE *)v38 + v37) = v61; + v103 = v93; + *((_BYTE *)v102 + v93) = 0; +LABEL_59: + v31 = v7[2]; + v32 = v7[3]; + if ( v31 >= v32 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v28 = wmemchr(Sa, v12, N); + if ( !v28 ) + goto LABEL_131; + v29 = (char *)v28 - (char *)Sa; + v30 = v29 >> 1; + if ( v29 > 30 ) + v30 -= 6; + if ( v79 >= v86 ) + { + v83 |= ~v30 < v100 * v86; + ++v89; + v86 = v30 + v100 * v86; + goto LABEL_59; + } + v32 = v7[3]; + v83 = v82; + v31 = v7[2]; + if ( v31 >= v32 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v33 = (__int16 *)v7[2]; + v32 = v7[3]; + goto LABEL_61; + } + } + v33 = (__int16 *)(v31 + 2); + v7[2] = v33; +LABEL_61: + if ( (unsigned int)v33 >= v32 ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v34 = *v33; + v7 = v34 == -1 ? 0 : v7; + v91 = v34 == -1; + v35 = v94 && v87 != 0; + if ( v35 ) + { + v58 = (__int16 *)v87[2]; + if ( (unsigned int)v58 >= v87[3] ) + v59 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + else + v59 = *v58; + v87 = v59 == -1 ? 0 : v87; + v36 = v59 == -1 && v35; + } + else + { + v36 = a4 == -1; + } + if ( v36 == v91 ) + { + v37 = v103; + v38 = (int *)v102; + goto LABEL_67; + } + if ( v7 ) + { + v57 = (wchar_t *)v7[2]; + if ( (unsigned int)v57 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v57; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v84 ) + { + v72 = v84; + v37 = v103; + v83 = 0; + v84 = 0; + v38 = (int *)v102; + v82 = v72; + v86 = 0; + goto LABEL_67; + } + v83 = 0; + v86 = 0; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v44 = v12 - 55; + goto LABEL_96; + } + v44 = v12 - 87; + if ( v79 >= v86 ) + goto LABEL_121; +LABEL_97: + v45 = v7[2]; + v46 = v7[3]; + v83 = 1; + if ( v45 < v46 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v47 = (__int16 *)v7[2]; + v46 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_131: + v37 = v103; + v38 = (int *)v102; + v82 = 0; + goto LABEL_67; + } +LABEL_95: + v44 = v12 - 48; +LABEL_96: + if ( v79 < v86 ) + goto LABEL_97; +LABEL_121: + v52 = ~v44 < v100 * v86; + v53 = v44 + v100 * v86; + v46 = v7[3]; + v83 |= v52; + v86 = v53; + v45 = v7[2]; + ++v89; + if ( v45 >= v46 ) + goto LABEL_122; +LABEL_98: + v47 = (__int16 *)(v45 + 2); + v7[2] = v47; + } + if ( (unsigned int)v47 >= v46 ) + v48 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v48 = *v47; + v7 = v48 == -1 ? 0 : v7; + v92 = v48 == -1; + v49 = v94 && v87 != 0; + if ( v49 ) + { + v55 = (__int16 *)v87[2]; + if ( (unsigned int)v55 >= v87[3] ) + v56 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + else + v56 = *v55; + v87 = v56 == -1 ? 0 : v87; + v50 = v56 == -1 && v49; + } + else + { + v50 = a4 == -1; + } + if ( v92 != v50 ) + { + if ( v7 ) + { + v54 = (wchar_t *)v7[2]; + if ( (unsigned int)v54 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v54; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v37 = v103; + v38 = (int *)v102; + v82 = 1; + if ( v103 ) + goto LABEL_105; +LABEL_68: + if ( !v98 && !v89 ) + { +LABEL_70: + *a7 = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v84 ) + goto LABEL_70; + if ( v83 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v77 ) + v86 = -v86; + *a7 = v86; + } +LABEL_71: + if ( v82 ) + *a6 |= 2u; + if ( v38 != v104 ) + operator delete(v38); + return v7; +} +// 48FB27: variable 'v75' is possibly undefined +// 48FB9A: variable 'v76' is possibly undefined +// 5165CC: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (0048FE30) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + unsigned __int16 *a7) +{ + _DWORD *v7; // ebx + int v8; // esi + bool v9; // dl + char v10; // dl + char v11; // di + wchar_t v12; // di + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + wchar_t *v28; // eax + int v29; // eax + int v30; // ecx + int v31; // edi + unsigned int v32; // eax + unsigned int v33; // edx + __int16 *v34; // eax + __int16 v35; // dx + bool v36; // di + char v37; // di + size_t v38; // edi + int *v39; // eax + bool v41; // al + wchar_t *v42; // eax + __int16 *v43; // eax + __int16 v44; // ax + int v45; // eax + unsigned int v46; // eax + unsigned int v47; // edx + __int16 *v48; // eax + __int16 v49; // ax + bool v50; // di + char v51; // di + unsigned int v52; // edx + wchar_t *v53; // eax + __int16 *v54; // eax + __int16 v55; // ax + wchar_t *v56; // eax + __int16 *v57; // eax + __int16 v58; // dx + unsigned int v59; // edx + char v60; // cl + __int16 *v61; // eax + __int16 v62; // cx + __int16 *v63; // eax + __int16 v64; // ax + wchar_t *v65; // eax + std::locale::_Impl *v66; // eax + std::locale::_Impl *v67; // esi + wchar_t *v68; // eax + __int16 *v69; // eax + __int16 v70; // cx + char v71; // cl + __int16 v72; // ax + __int16 v73; // ax + void (__cdecl *v74)(void *); // [esp+4h] [ebp-84h] + unsigned int v75; // [esp+8h] [ebp-80h] + bool v76; // [esp+1Fh] [ebp-69h] + size_t N; // [esp+20h] [ebp-68h] + int v78; // [esp+28h] [ebp-60h] + int S; // [esp+2Ch] [ebp-5Ch] + wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] + char v81; // [esp+30h] [ebp-58h] + char v82; // [esp+32h] [ebp-56h] + char v83; // [esp+33h] [ebp-55h] + int v84; // [esp+34h] [ebp-54h] + unsigned __int16 v85; // [esp+34h] [ebp-54h] + _DWORD *v86; // [esp+38h] [ebp-50h] + char v87; // [esp+38h] [ebp-50h] + int v88; // [esp+3Ch] [ebp-4Ch] + char v89; // [esp+40h] [ebp-48h] + char v90; // [esp+40h] [ebp-48h] + char v91; // [esp+40h] [ebp-48h] + size_t v92; // [esp+40h] [ebp-48h] + bool v93; // [esp+44h] [ebp-44h] + int *v94; // [esp+48h] [ebp-40h] + bool v95; // [esp+48h] [ebp-40h] + char v96; // [esp+48h] [ebp-40h] + bool v97; // [esp+48h] [ebp-40h] + std::locale::facet *v98; // [esp+4Ch] [ebp-3Ch] + int v99; // [esp+4Ch] [ebp-3Ch] + std::locale::facet *v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v86 = a3; + v98 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v98); + v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v98); + if ( !v8 ) + { + v66 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v74); + *((_DWORD *)v66 + 1) = 0; + v67 = v66; + *(_DWORD *)v66 = &off_538BE4; + *((_DWORD *)v66 + 2) = 0; + *((_DWORD *)v66 + 3) = 0; + *((_BYTE *)v66 + 16) = 0; + *((_DWORD *)v66 + 5) = 0; + *((_DWORD *)v66 + 6) = 0; + *((_DWORD *)v66 + 7) = 0; + *((_DWORD *)v66 + 8) = 0; + *((_DWORD *)v66 + 9) = 0; + *((_BYTE *)v66 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v66, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v67, v98, v75); + v8 = *v94; + } + v99 = 8; + v84 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v84 != 64 ) + v99 = v84 == 8 ? 16 : 10; + v95 = a2 == 0xFFFF; + v9 = v95 && a1 != 0; + if ( v9 ) + { + v63 = (__int16 *)a1[2]; + if ( (unsigned int)v63 >= a1[3] ) + { + v64 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v95 && a1 != 0; + } + else + { + v64 = *v63; + } + v7 = v64 == -1 ? 0 : a1; + v10 = v64 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v93 = a4 == -1; + if ( v93 && a3 != 0 ) + { + v61 = (__int16 *)a3[2]; + if ( (unsigned int)v61 >= a3[3] ) + { + v87 = v10; + v72 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v87; + v62 = v72; + } + else + { + v62 = *v61; + } + v86 = v62 == -1 ? 0 : a3; + v11 = v62 == -1 && v93 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v76 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v83 = 1; + v88 = 0; + v97 = 0; +LABEL_44: + v21 = v99; + if ( v99 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v65 = (wchar_t *)v7[2]; + if ( (unsigned int)v65 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v65; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v76 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v96 = v18 == -1; + v19 = v93 && v86 != 0; + if ( v19 ) + { + v69 = (__int16 *)v86[2]; + if ( (unsigned int)v69 >= v86[3] ) + { + v73 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); + v19 = v93 && v86 != 0; + v70 = v73; + } + else + { + v70 = *v69; + } + v86 = v70 == -1 ? 0 : v86; + v20 = v70 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v96 == v20 ) + { + v83 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = v99; + v88 = 0; + v97 = 0; + if ( v99 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v68 = (wchar_t *)v7[2]; + if ( (unsigned int)v68 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v68; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v76 = 0; + } + v88 = 0; + v97 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v83 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v41 = !v97 || v99 == 10; + if ( !v41 ) + goto LABEL_33; + v97 = v84 == 0 || v99 == 8; + if ( !v97 ) + { + ++v88; + v97 = v41; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v88 = 0; + v99 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v89 = v25 == -1; + v26 = v93 && v86 != 0; + if ( v26 ) + { + v43 = (__int16 *)v86[2]; + if ( (unsigned int)v43 >= v86[3] ) + { + v44 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); + v26 = v93 && v86 != 0; + } + else + { + v44 = *v43; + } + v86 = v44 == -1 ? 0 : v86; + v27 = v44 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v89 == v27 ) + { + v83 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v42 = (wchar_t *)v7[2]; + if ( (unsigned int)v42 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v42; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v97 ) + goto LABEL_86; + } + if ( !v97 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v83 = 0; + v97 = 1; + goto LABEL_44; + } + if ( v84 == 0 || v99 == 16 ) + { + v88 = 0; + v97 = 0; + v99 = 16; + goto LABEL_37; + } + v83 = 0; + v97 = 1; + N = v99; + S = v99; +LABEL_46: + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( v14 ) + std::string::reserve(&v101, 0x20u); + v78 = 0xFFFF / v99; + v81 = *(_BYTE *)(v8 + 164); + if ( v81 ) + { + if ( v83 ) + { + v38 = v102; + v82 = 0; + v85 = 0; + v39 = (int *)v101; + v81 = v83; + v83 = 0; +LABEL_67: + if ( !v38 ) + goto LABEL_68; +LABEL_105: + v100 = (std::locale::facet *)(v38 + 1); + if ( v39 == v103 ) + v52 = 15; + else + v52 = v103[0]; + if ( (unsigned int)v100 > v52 ) + { + std::string::_M_mutate((int)&v101, v38, 0, 0, 1u); + v39 = (int *)v101; + } + *((_BYTE *)v39 + v38) = v88; + v102 = v38 + 1; + *((_BYTE *)v100 + (_DWORD)v101) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v39 = (int *)v101; + if ( !v97 && !(v102 | v88) ) + goto LABEL_70; + goto LABEL_113; + } + v82 = 0; + Sa = (wchar_t *)(v8 + 120); + v85 = 0; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v38 = v102; + v39 = (int *)v101; + if ( !v88 ) + { + v81 = 0; + v83 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v92 = v102 + 1; + if ( v101 == v103 ) + v59 = 15; + else + v59 = v103[0]; + if ( v92 > v59 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v39 = (int *)v101; + } + v60 = v88; + v88 = 0; + *((_BYTE *)v39 + v38) = v60; + v102 = v92; + *((_BYTE *)v101 + v92) = 0; +LABEL_59: + v32 = v7[2]; + v33 = v7[3]; + if ( v32 >= v33 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v28 = wmemchr(Sa, v12, N); + if ( !v28 ) + goto LABEL_131; + v29 = (char *)v28 - (char *)Sa; + v30 = v29 >> 1; + if ( v29 > 30 ) + v30 -= 6; + if ( (unsigned __int16)v78 >= v85 ) + { + v31 = (unsigned __int16)(v99 * v85); + ++v88; + v82 |= v31 > 0xFFFF - v30; + v85 = v31 + v30; + goto LABEL_59; + } + v33 = v7[3]; + v82 = v81; + v32 = v7[2]; + if ( v32 >= v33 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v34 = (__int16 *)v7[2]; + v33 = v7[3]; + goto LABEL_61; + } + } + v34 = (__int16 *)(v32 + 2); + v7[2] = v34; +LABEL_61: + if ( (unsigned int)v34 >= v33 ) + v35 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v35 = *v34; + v7 = v35 == -1 ? 0 : v7; + v90 = v35 == -1; + v36 = v93 && v86 != 0; + if ( v36 ) + { + v57 = (__int16 *)v86[2]; + if ( (unsigned int)v57 >= v86[3] ) + v58 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); + else + v58 = *v57; + v86 = v58 == -1 ? 0 : v86; + v37 = v58 == -1 && v36; + } + else + { + v37 = a4 == -1; + } + if ( v37 == v90 ) + { + v38 = v102; + v39 = (int *)v101; + goto LABEL_67; + } + if ( v7 ) + { + v56 = (wchar_t *)v7[2]; + if ( (unsigned int)v56 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v56; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v83 ) + { + v71 = v83; + v38 = v102; + v82 = 0; + v83 = 0; + v39 = (int *)v101; + v81 = v71; + v85 = 0; + goto LABEL_67; + } + v82 = 0; + v85 = 0; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v45 = v12 - 55; + goto LABEL_96; + } + v45 = v12 - 87; + if ( v85 <= (unsigned __int16)v78 ) + goto LABEL_121; +LABEL_97: + v46 = v7[2]; + v47 = v7[3]; + v82 = 1; + if ( v46 < v47 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v48 = (__int16 *)v7[2]; + v47 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || v12 >= (unsigned __int16)(S + 48) ) + { +LABEL_131: + v38 = v102; + v39 = (int *)v101; + v81 = 0; + goto LABEL_67; + } +LABEL_95: + v45 = v12 - 48; +LABEL_96: + if ( v85 > (unsigned __int16)v78 ) + goto LABEL_97; +LABEL_121: + v47 = v7[3]; + v82 |= (unsigned __int16)(v99 * v85) > 0xFFFF - v45; + v85 = v99 * v85 + v45; + v46 = v7[2]; + ++v88; + if ( v46 >= v47 ) + goto LABEL_122; +LABEL_98: + v48 = (__int16 *)(v46 + 2); + v7[2] = v48; + } + if ( v47 <= (unsigned int)v48 ) + v49 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v49 = *v48; + v7 = v49 == -1 ? 0 : v7; + v91 = v49 == -1; + v50 = v93 && v86 != 0; + if ( v50 ) + { + v54 = (__int16 *)v86[2]; + if ( (unsigned int)v54 >= v86[3] ) + v55 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); + else + v55 = *v54; + v86 = v55 == -1 ? 0 : v86; + v51 = v55 == -1 && v50; + } + else + { + v51 = a4 == -1; + } + if ( v91 != v51 ) + { + if ( v7 ) + { + v53 = (wchar_t *)v7[2]; + if ( (unsigned int)v53 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v53; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v38 = v102; + v39 = (int *)v101; + v81 = 1; + if ( v102 ) + goto LABEL_105; +LABEL_68: + if ( !v97 && !v88 ) + { +LABEL_70: + *a7 = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v83 ) + goto LABEL_70; + if ( v82 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v76 ) + v85 = -v85; + *a7 = v85; + } +LABEL_71: + if ( v81 ) + *a6 |= 2u; + if ( v39 != v103 ) + operator delete(v39); + return v7; +} +// 490827: variable 'v74' is possibly undefined +// 49089A: variable 'v75' is possibly undefined +// 5165CC: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (00490B30) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int *a7) +{ + int v7; // esi + int v8; // edi + char v9; // bl + bool v10; // dl + char v11; // dl + wchar_t v12; // bx + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + _DWORD *v21; // ecx + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + unsigned __int64 v28; // kr00_8 + wchar_t *v29; // eax + int v30; // eax + int v31; // ebx + _DWORD *v32; // edi + unsigned int v33; // eax + unsigned int v34; // edx + __int16 *v35; // eax + __int16 v36; // dx + bool v37; // bl + char v38; // bl + size_t v39; // ebx + int *v40; // ecx + bool v42; // al + wchar_t *v43; // eax + __int16 *v44; // eax + __int16 v45; // ax + int v46; // ecx + _DWORD *v47; // ebx + unsigned int v48; // eax + unsigned int v49; // edx + __int16 *v50; // eax + __int16 v51; // ax + bool v52; // bl + char v53; // bl + unsigned int v54; // edi + unsigned int v55; // eax + int v56; // eax + unsigned int v57; // edx + wchar_t *v58; // eax + __int16 *v59; // eax + __int16 v60; // ax + wchar_t *v61; // eax + __int16 *v62; // eax + __int16 v63; // dx + size_t v64; // edi + unsigned int v65; // eax + __int16 *v66; // eax + __int16 v67; // cx + __int16 *v68; // eax + __int16 v69; // dx + wchar_t *v70; // eax + std::locale::_Impl *v71; // eax + std::locale::_Impl *v72; // edi + wchar_t *v73; // eax + __int16 *v74; // eax + __int16 v75; // cx + char v76; // al + __int16 v77; // ax + __int16 v78; // ax + void (__cdecl *v79)(void *); // [esp+4h] [ebp-94h] + unsigned int v80; // [esp+8h] [ebp-90h] + size_t N; // [esp+10h] [ebp-88h] + UDItype n; // [esp+18h] [ebp-80h] + int S; // [esp+28h] [ebp-70h] + wchar_t *Sa; // [esp+28h] [ebp-70h] + char v85; // [esp+2Ch] [ebp-6Ch] + bool v86; // [esp+2Eh] [ebp-6Ah] + char v87; // [esp+2Fh] [ebp-69h] + __int64 v88; // [esp+30h] [ebp-68h] + char v89; // [esp+38h] [ebp-60h] + _DWORD *v90; // [esp+3Ch] [ebp-5Ch] + int *v91; // [esp+40h] [ebp-58h] + int v92; // [esp+40h] [ebp-58h] + unsigned __int64 v93; // [esp+40h] [ebp-58h] + char v94; // [esp+48h] [ebp-50h] + char v95; // [esp+48h] [ebp-50h] + char v96; // [esp+48h] [ebp-50h] + char v97; // [esp+48h] [ebp-50h] + int v98; // [esp+50h] [ebp-48h] + bool v99; // [esp+54h] [ebp-44h] + std::locale::facet *v100; // [esp+58h] [ebp-40h] + bool v101; // [esp+58h] [ebp-40h] + char v102; // [esp+58h] [ebp-40h] + bool v103; // [esp+58h] [ebp-40h] + _DWORD *v104; // [esp+5Ch] [ebp-3Ch] + void *v105; // [esp+68h] [ebp-30h] BYREF + size_t v106; // [esp+6Ch] [ebp-2Ch] + int v107[10]; // [esp+70h] [ebp-28h] BYREF + + v104 = a1; + v90 = a3; + v100 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v100); + v91 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v100); + if ( !v7 ) + { + v71 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v79); + *((_DWORD *)v71 + 1) = 0; + v72 = v71; + *(_DWORD *)v71 = &off_538BE4; + *((_DWORD *)v71 + 2) = 0; + *((_DWORD *)v71 + 3) = 0; + *((_BYTE *)v71 + 16) = 0; + *((_DWORD *)v71 + 5) = 0; + *((_DWORD *)v71 + 6) = 0; + *((_DWORD *)v71 + 7) = 0; + *((_DWORD *)v71 + 8) = 0; + *((_DWORD *)v71 + 9) = 0; + *((_BYTE *)v71 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v71, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v72, v100, v80); + v7 = *v91; + } + v8 = 8; + v92 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v92 != 64 ) + v8 = v92 == 8 ? 16 : 10; + v101 = a2 == 0xFFFF; + if ( v101 && a1 != 0 ) + { + v68 = (__int16 *)a1[2]; + if ( (unsigned int)v68 >= a1[3] ) + v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v69 = *v68; + v104 = v69 == -1 ? 0 : a1; + v9 = v69 == -1 && v101 && a1 != 0; + } + else + { + v9 = a2 == 0xFFFF; + } + v99 = a4 == -1; + v10 = v99 && a3 != 0; + if ( v10 ) + { + v66 = (__int16 *)a3[2]; + if ( (unsigned int)v66 >= a3[3] ) + { + v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v99 && a3 != 0; + v67 = v77; + } + else + { + v67 = *v66; + } + v90 = v67 == -1 ? 0 : a3; + v11 = v67 == -1 && v10; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v9 ) + { + v86 = 0; + v14 = *(_BYTE *)(v7 + 16); + v12 = 0; + v89 = 1; + v98 = 0; + v103 = 0; +LABEL_44: + if ( v8 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v104 && a2 == 0xFFFF ) + { + v70 = (wchar_t *)v104[2]; + if ( (unsigned int)v70 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v70; + v104 = v12 == 0xFFFF ? 0 : v104; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v7 + 112); + v14 = *(_BYTE *)(v7 + 16); + v86 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v7 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v7 + 38) != v12) && *(_WORD *)(v7 + 36) != v12 ) + { + v15 = v104[2]; + v16 = v104[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); + v17 = (__int16 *)v104[2]; + v16 = v104[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v104[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v18 = *v17; + v104 = v18 == -1 ? 0 : v104; + v102 = v18 == -1; + v19 = v99 && v90 != 0; + if ( v19 ) + { + v74 = (__int16 *)v90[2]; + if ( (unsigned int)v74 >= v90[3] ) + { + v78 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); + v19 = v99 && v90 != 0; + v75 = v78; + } + else + { + v75 = *v74; + } + v90 = v75 == -1 ? 0 : v90; + v20 = v75 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v102 == v20 ) + { + v89 = 1; + v14 = *(_BYTE *)(v7 + 16); + v98 = 0; + v103 = 0; + if ( v8 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v8; + S = v8; + goto LABEL_46; + } + if ( v104 ) + { + v73 = (wchar_t *)v104[2]; + if ( (unsigned int)v73 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v73; + v14 = *(_BYTE *)(v7 + 16); + v104 = v12 == 0xFFFF ? 0 : v104; + } + else + { + v14 = *(_BYTE *)(v7 + 16); + v12 = -1; + } + } + } + else + { + v86 = 0; + } + v98 = 0; + v103 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v7 + 38) == v12 || *(_WORD *)(v7 + 36) == v12 ) + { +LABEL_88: + v89 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v7 + 120) != v12 ) + break; + v42 = !v103 || v8 == 10; + if ( !v42 ) + goto LABEL_33; + v103 = v92 == 0 || v8 == 8; + if ( !v103 ) + { + ++v98; + v103 = v42; +LABEL_37: + v21 = v104; + v22 = v104[2]; + v23 = v104[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_81; + } + v21 = v104; + v98 = 0; + v8 = 8; + v22 = v104[2]; + v23 = v104[3]; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v21[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_82; + goto LABEL_39; + } +LABEL_81: + (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); + v24 = (__int16 *)v104[2]; + if ( v104[3] <= (unsigned int)v24 ) + { +LABEL_82: + v25 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v104 = v25 == -1 ? 0 : v104; + v94 = v25 == -1; + v26 = v99 && v90 != 0; + if ( v26 ) + { + v44 = (__int16 *)v90[2]; + if ( (unsigned int)v44 >= v90[3] ) + { + v45 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); + v26 = v99 && v90 != 0; + } + else + { + v45 = *v44; + } + v90 = v45 == -1 ? 0 : v90; + v27 = v45 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v94 == v27 ) + { + v89 = 1; + v14 = *(_BYTE *)(v7 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v104 ) + { + v43 = (wchar_t *)v104[2]; + if ( (unsigned int)v43 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v43; + v104 = v12 == 0xFFFF ? 0 : v104; + } + v14 = *(_BYTE *)(v7 + 16); + if ( !v103 ) + goto LABEL_88; + } + if ( !v103 ) + goto LABEL_88; +LABEL_33: + if ( *(_WORD *)(v7 + 116) != v12 && *(_WORD *)(v7 + 118) != v12 ) + { + v89 = 0; + v103 = 1; + goto LABEL_44; + } + if ( v92 == 0 || v8 == 16 ) + { + v98 = 0; + v8 = 16; + v103 = 0; + goto LABEL_37; + } + v89 = 0; + N = v8; + S = v8; + v103 = 1; +LABEL_46: + v106 = 0; + v105 = v107; + LOBYTE(v107[0]) = 0; + if ( v14 ) + std::string::reserve(&v105, 0x20u); + n = 0x8000000000000000LL; + if ( !v86 ) + n = 0x7FFFFFFFFFFFFFFFLL; + v88 = v8; + v28 = n / v8; + v85 = *(_BYTE *)(v7 + 164); + if ( v85 ) + { + if ( v89 ) + { + v39 = v106; + v93 = 0LL; + v40 = (int *)v105; + v85 = v89; + v87 = 0; + v89 = 0; +LABEL_69: + if ( !v39 ) + goto LABEL_70; +LABEL_107: + v54 = v39 + 1; + if ( v40 == v107 ) + v55 = 15; + else + v55 = v107[0]; + if ( v54 > v55 ) + { + std::string::_M_mutate((int)&v105, v39, 0, 0, 1u); + v40 = (int *)v105; + } + *((_BYTE *)v40 + v39) = v98; + v106 = v39 + 1; + *((_BYTE *)v105 + v54) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v7 + 8), *(_DWORD *)(v7 + 12), (int)&v105) ) + *a6 = 4; + v40 = (int *)v105; + if ( !v103 && !(v106 | v98) ) + goto LABEL_72; + goto LABEL_115; + } + v87 = 0; + Sa = (wchar_t *)(v7 + 120); + v93 = 0LL; + while ( 2 ) + { + if ( *(_BYTE *)(v7 + 16) && *(_WORD *)(v7 + 38) == v12 ) + { + v39 = v106; + v40 = (int *)v105; + if ( !v98 ) + { + v85 = 0; + v89 = *(_BYTE *)(v7 + 16); + goto LABEL_69; + } + v97 = v98; + v64 = v106 + 1; + if ( v105 == v107 ) + v65 = 15; + else + v65 = v107[0]; + if ( v64 > v65 ) + { + std::string::_M_mutate((int)&v105, v106, 0, 0, 1u); + v40 = (int *)v105; + } + v98 = 0; + *((_BYTE *)v40 + v39) = v97; + v106 = v39 + 1; + *((_BYTE *)v105 + v64) = 0; +LABEL_61: + v32 = v104; + v33 = v104[2]; + v34 = v104[3]; + if ( v33 >= v34 ) + goto LABEL_136; + } + else + { + if ( v12 == *(_WORD *)(v7 + 36) ) + goto LABEL_134; + v29 = wmemchr(Sa, v12, N); + if ( !v29 ) + goto LABEL_134; + v30 = (char *)v29 - (char *)Sa; + v31 = v30 >> 1; + if ( v30 > 30 ) + v31 -= 6; + if ( v28 >= v93 ) + { + v87 |= n - v31 < v88 * v93; + ++v98; + v93 = v88 * v93 + v31; + goto LABEL_61; + } + v32 = v104; + v87 = v85; + v34 = v104[3]; + v33 = v104[2]; + if ( v33 >= v34 ) + { +LABEL_136: + (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); + v35 = (__int16 *)v104[2]; + v34 = v104[3]; + goto LABEL_63; + } + } + v35 = (__int16 *)(v33 + 2); + v32[2] = v35; +LABEL_63: + if ( (unsigned int)v35 >= v34 ) + v36 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v36 = *v35; + v104 = v36 == -1 ? 0 : v104; + v95 = v36 == -1; + v37 = v99 && v90 != 0; + if ( v37 ) + { + v62 = (__int16 *)v90[2]; + if ( (unsigned int)v62 >= v90[3] ) + v63 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); + else + v63 = *v62; + v90 = v63 == -1 ? 0 : v90; + v38 = v63 == -1 && v37; + } + else + { + v38 = a4 == -1; + } + if ( v38 == v95 ) + { + v39 = v106; + v40 = (int *)v105; + goto LABEL_69; + } + if ( v104 ) + { + v61 = (wchar_t *)v104[2]; + if ( (unsigned int)v61 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v61; + v104 = v12 == 0xFFFF ? 0 : v104; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v89 ) + { + v76 = v89; + v39 = v106; + v87 = 0; + v89 = 0; + v40 = (int *)v105; + v85 = v76; + v93 = 0LL; + goto LABEL_69; + } + v87 = 0; + v93 = 0LL; + while ( 2 ) + { + if ( S <= 10 ) + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_134: + v39 = v106; + v40 = (int *)v105; + v85 = 0; + goto LABEL_69; + } +LABEL_97: + v46 = v12 - 48; + goto LABEL_98; + } + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_97; + v46 = v12 - 87; + if ( (unsigned __int16)(v12 - 97) <= 5u ) + { +LABEL_98: + if ( v28 >= v93 ) + goto LABEL_124; +LABEL_99: + v47 = v104; + v87 = 1; + v48 = v104[2]; + v49 = v104[3]; + if ( v48 >= v49 ) + goto LABEL_125; + goto LABEL_100; + } + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_134; + v46 = v12 - 55; + if ( v28 < v93 ) + goto LABEL_99; +LABEL_124: + v87 |= n - v46 < v8 * v93; + v93 = v8 * v93 + v46; + v47 = v104; + ++v98; + v48 = v104[2]; + v49 = v104[3]; + if ( v48 < v49 ) + { +LABEL_100: + v50 = (__int16 *)(v48 + 2); + v47[2] = v50; + goto LABEL_101; + } +LABEL_125: + (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); + v50 = (__int16 *)v104[2]; + v49 = v104[3]; +LABEL_101: + if ( (unsigned int)v50 >= v49 ) + v51 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v51 = *v50; + v104 = v51 == -1 ? 0 : v104; + v96 = v51 == -1; + v52 = v99 && v90 != 0; + if ( v52 ) + { + v59 = (__int16 *)v90[2]; + if ( (unsigned int)v59 >= v90[3] ) + v60 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); + else + v60 = *v59; + v90 = v60 == -1 ? 0 : v90; + v53 = v60 == -1 && v52; + } + else + { + v53 = a4 == -1; + } + if ( v96 != v53 ) + { + if ( v104 ) + { + v58 = (wchar_t *)v104[2]; + if ( (unsigned int)v58 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v58; + v104 = v12 == 0xFFFF ? 0 : v104; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v39 = v106; + v40 = (int *)v105; + v85 = 1; + if ( v106 ) + goto LABEL_107; +LABEL_70: + if ( !v103 && !v98 ) + { +LABEL_72: + *a7 = 0; + a7[1] = 0; + *a6 = 4; + goto LABEL_73; + } +LABEL_115: + if ( v89 ) + goto LABEL_72; + if ( v87 ) + { + v56 = 0; + v57 = 0x80000000; + if ( !v86 ) + { + v56 = -1; + v57 = 0x7FFFFFFF; + } + *a7 = v56; + a7[1] = v57; + *a6 = 4; + } + else + { + if ( v86 ) + v93 = -(__int64)v93; + *(_QWORD *)a7 = v93; + } +LABEL_73: + if ( v85 ) + *a6 |= 2u; + if ( v40 != v107 ) + operator delete(v40); + return v104; +} +// 491657: variable 'v79' is possibly undefined +// 4916C4: variable 'v80' is possibly undefined +// 5165CC: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (00491980) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // ebx + int v8; // edi + bool v9; // dl + char v10; // dl + char v11; // si + wchar_t v12; // si + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + unsigned __int64 v28; // kr00_8 + wchar_t *v29; // eax + int v30; // eax + unsigned int v31; // eax + unsigned int v32; // edx + __int16 *v33; // eax + __int16 v34; // dx + bool v35; // si + char v36; // si + size_t v37; // esi + int *v38; // eax + bool v40; // al + wchar_t *v41; // eax + __int16 *v42; // eax + __int16 v43; // ax + unsigned int v44; // eax + unsigned int v45; // edx + __int16 *v46; // eax + __int16 v47; // ax + bool v48; // si + char v49; // si + unsigned int v50; // edx + wchar_t *v51; // eax + __int16 *v52; // eax + __int16 v53; // ax + wchar_t *v54; // eax + __int16 *v55; // eax + __int16 v56; // dx + unsigned int v57; // edx + char v58; // cl + __int16 *v59; // eax + __int16 v60; // cx + __int16 *v61; // eax + __int16 v62; // ax + wchar_t *v63; // eax + std::locale::_Impl *v64; // eax + std::locale::_Impl *v65; // edi + wchar_t *v66; // eax + __int16 *v67; // eax + __int16 v68; // cx + char v69; // cl + __int16 v70; // ax + __int16 v71; // ax + void (__cdecl *v72)(void *); // [esp+4h] [ebp-84h] + unsigned int v73; // [esp+8h] [ebp-80h] + size_t N; // [esp+10h] [ebp-78h] + int S; // [esp+20h] [ebp-68h] + wchar_t *Sa; // [esp+20h] [ebp-68h] + char v77; // [esp+24h] [ebp-64h] + bool v78; // [esp+26h] [ebp-62h] + char v79; // [esp+27h] [ebp-61h] + __int64 v80; // [esp+28h] [ebp-60h] + int v81; // [esp+30h] [ebp-58h] + char v82; // [esp+30h] [ebp-58h] + _DWORD *v83; // [esp+34h] [ebp-54h] + char v84; // [esp+34h] [ebp-54h] + int v85; // [esp+38h] [ebp-50h] + char v86; // [esp+3Ch] [ebp-4Ch] + int v87; // [esp+3Ch] [ebp-4Ch] + char v88; // [esp+3Ch] [ebp-4Ch] + int v89; // [esp+3Ch] [ebp-4Ch] + char v90; // [esp+3Ch] [ebp-4Ch] + size_t v91; // [esp+3Ch] [ebp-4Ch] + bool v92; // [esp+40h] [ebp-48h] + unsigned int v93; // [esp+40h] [ebp-48h] + int *v94; // [esp+44h] [ebp-44h] + bool v95; // [esp+44h] [ebp-44h] + char v96; // [esp+44h] [ebp-44h] + bool v97; // [esp+44h] [ebp-44h] + int d; // [esp+48h] [ebp-40h] + int da; // [esp+48h] [ebp-40h] + UDItype db; // [esp+48h] [ebp-40h] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v83 = a3; + d = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * d); + v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * d); + if ( !v8 ) + { + v64 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v72); + *((_DWORD *)v64 + 1) = 0; + v65 = v64; + *(_DWORD *)v64 = &off_538BE4; + *((_DWORD *)v64 + 2) = 0; + *((_DWORD *)v64 + 3) = 0; + *((_BYTE *)v64 + 16) = 0; + *((_DWORD *)v64 + 5) = 0; + *((_DWORD *)v64 + 6) = 0; + *((_DWORD *)v64 + 7) = 0; + *((_DWORD *)v64 + 8) = 0; + *((_DWORD *)v64 + 9) = 0; + *((_BYTE *)v64 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v64, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v65, (const std::locale::facet *)d, v73); + v8 = *v94; + } + da = 8; + v81 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v81 != 64 ) + da = v81 == 8 ? 16 : 10; + v95 = a2 == 0xFFFF; + v9 = v95 && a1 != 0; + if ( v9 ) + { + v61 = (__int16 *)a1[2]; + if ( (unsigned int)v61 >= a1[3] ) + { + v62 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v95 && a1 != 0; + } + else + { + v62 = *v61; + } + v7 = v62 == -1 ? 0 : a1; + v10 = v62 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v92 = a4 == -1; + if ( v92 && a3 != 0 ) + { + v59 = (__int16 *)a3[2]; + if ( (unsigned int)v59 >= a3[3] ) + { + v84 = v10; + v70 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v84; + v60 = v70; + } + else + { + v60 = *v59; + } + v83 = v60 == -1 ? 0 : a3; + v11 = v60 == -1 && v92 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v78 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v82 = 1; + v85 = 0; + v97 = 0; +LABEL_44: + v21 = da; + if ( da == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v63 = (wchar_t *)v7[2]; + if ( (unsigned int)v63 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v63; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v78 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v96 = v18 == -1; + v19 = v92 && v83 != 0; + if ( v19 ) + { + v67 = (__int16 *)v83[2]; + if ( (unsigned int)v67 >= v83[3] ) + { + v71 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); + v19 = v92 && v83 != 0; + v68 = v71; + } + else + { + v68 = *v67; + } + v83 = v68 == -1 ? 0 : v83; + v20 = v68 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v96 == v20 ) + { + v82 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = da; + v85 = 0; + v97 = 0; + if ( da == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v66 = (wchar_t *)v7[2]; + if ( (unsigned int)v66 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v66; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v78 = 0; + } + v85 = 0; + v97 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v82 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v40 = !v97 || da == 10; + if ( !v40 ) + goto LABEL_33; + v97 = v81 == 0 || da == 8; + if ( !v97 ) + { + ++v85; + v97 = v40; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v85 = 0; + da = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v86 = v25 == -1; + v26 = v92 && v83 != 0; + if ( v26 ) + { + v42 = (__int16 *)v83[2]; + if ( (unsigned int)v42 >= v83[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); + v26 = v92 && v83 != 0; + } + else + { + v43 = *v42; + } + v83 = v43 == -1 ? 0 : v83; + v27 = v43 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v86 == v27 ) + { + v82 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v41 = (wchar_t *)v7[2]; + if ( (unsigned int)v41 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v41; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v97 ) + goto LABEL_86; + } + if ( !v97 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v82 = 0; + v97 = 1; + goto LABEL_44; + } + if ( v81 == 0 || da == 16 ) + { + v85 = 0; + v97 = 0; + da = 16; + goto LABEL_37; + } + v82 = 0; + v97 = 1; + N = da; + S = da; +LABEL_46: + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( v14 ) + std::string::reserve(&v101, 0x20u); + v80 = da; + v28 = 0xFFFFFFFFFFFFFFFFLL / da; + v77 = *(_BYTE *)(v8 + 164); + if ( v77 ) + { + if ( v82 ) + { + v37 = v102; + db = 0LL; + v38 = (int *)v101; + v77 = v82; + v79 = 0; + v82 = 0; +LABEL_67: + if ( !v37 ) + goto LABEL_68; +LABEL_105: + v93 = v37 + 1; + if ( v38 == v103 ) + v50 = 15; + else + v50 = v103[0]; + if ( v93 > v50 ) + { + std::string::_M_mutate((int)&v101, v37, 0, 0, 1u); + v38 = (int *)v101; + } + *((_BYTE *)v38 + v37) = v85; + v102 = v37 + 1; + *((_BYTE *)v101 + v93) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v38 = (int *)v101; + if ( !v97 && !(v102 | v85) ) + goto LABEL_70; + goto LABEL_113; + } + v79 = 0; + Sa = (wchar_t *)(v8 + 120); + db = 0LL; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v37 = v102; + v38 = (int *)v101; + if ( !v85 ) + { + v77 = 0; + v82 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v91 = v102 + 1; + if ( v101 == v103 ) + v57 = 15; + else + v57 = v103[0]; + if ( v91 > v57 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v38 = (int *)v101; + } + v58 = v85; + v85 = 0; + *((_BYTE *)v38 + v37) = v58; + v102 = v91; + *((_BYTE *)v101 + v91) = 0; +LABEL_59: + v31 = v7[2]; + v32 = v7[3]; + if ( v31 >= v32 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v29 = wmemchr(Sa, v12, N); + if ( !v29 ) + goto LABEL_131; + v30 = (char *)v29 - (char *)Sa; + v87 = v30 >> 1; + if ( v30 > 30 ) + v87 = (v30 >> 1) - 6; + if ( v28 >= db ) + { + v79 |= __PAIR64__(~(v87 >> 31), ~v87) < v80 * db; + ++v85; + db = v87 + v80 * db; + goto LABEL_59; + } + v32 = v7[3]; + v79 = v77; + v31 = v7[2]; + if ( v31 >= v32 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v33 = (__int16 *)v7[2]; + v32 = v7[3]; + goto LABEL_61; + } + } + v33 = (__int16 *)(v31 + 2); + v7[2] = v33; +LABEL_61: + if ( (unsigned int)v33 >= v32 ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v34 = *v33; + v7 = v34 == -1 ? 0 : v7; + v88 = v34 == -1; + v35 = v92 && v83 != 0; + if ( v35 ) + { + v55 = (__int16 *)v83[2]; + if ( (unsigned int)v55 >= v83[3] ) + v56 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); + else + v56 = *v55; + v83 = v56 == -1 ? 0 : v83; + v36 = v56 == -1 && v35; + } + else + { + v36 = a4 == -1; + } + if ( v36 == v88 ) + { + v37 = v102; + v38 = (int *)v101; + goto LABEL_67; + } + if ( v7 ) + { + v54 = (wchar_t *)v7[2]; + if ( (unsigned int)v54 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v54; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v82 ) + { + v69 = v82; + v37 = v102; + v79 = 0; + v82 = 0; + v38 = (int *)v101; + v77 = v69; + db = 0LL; + goto LABEL_67; + } + v79 = 0; + db = 0LL; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v89 = v12 - 55; + goto LABEL_96; + } + v89 = v12 - 87; + if ( v28 >= db ) + goto LABEL_121; +LABEL_97: + v44 = v7[2]; + v45 = v7[3]; + v79 = 1; + if ( v44 < v45 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v46 = (__int16 *)v7[2]; + v45 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_131: + v37 = v102; + v38 = (int *)v101; + v77 = 0; + goto LABEL_67; + } +LABEL_95: + v89 = v12 - 48; +LABEL_96: + if ( v28 < db ) + goto LABEL_97; +LABEL_121: + v79 |= __PAIR64__(~(v89 >> 31), ~v89) < v80 * db; + db = v89 + v80 * db; + v44 = v7[2]; + v45 = v7[3]; + ++v85; + if ( v44 >= v45 ) + goto LABEL_122; +LABEL_98: + v46 = (__int16 *)(v44 + 2); + v7[2] = v46; + } + if ( (unsigned int)v46 >= v45 ) + v47 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v47 = *v46; + v7 = v47 == -1 ? 0 : v7; + v90 = v47 == -1; + v48 = v92 && v83 != 0; + if ( v48 ) + { + v52 = (__int16 *)v83[2]; + if ( (unsigned int)v52 >= v83[3] ) + v53 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); + else + v53 = *v52; + v83 = v53 == -1 ? 0 : v83; + v49 = v53 == -1 && v48; + } + else + { + v49 = a4 == -1; + } + if ( v90 != v49 ) + { + if ( v7 ) + { + v51 = (wchar_t *)v7[2]; + if ( (unsigned int)v51 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v51; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v37 = v102; + v38 = (int *)v101; + v77 = 1; + if ( v102 ) + goto LABEL_105; +LABEL_68: + if ( !v97 && !v85 ) + { +LABEL_70: + *a7 = 0; + a7[1] = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v82 ) + goto LABEL_70; + if ( v79 ) + { + *a7 = -1; + a7[1] = -1; + *a6 = 4; + } + else + { + if ( v78 ) + db = -(__int64)db; + *(_QWORD *)a7 = db; + } +LABEL_71: + if ( v77 ) + *a6 |= 2u; + if ( v38 != v103 ) + operator delete(v38); + return v7; +} +// 492427: variable 'v72' is possibly undefined +// 49249A: variable 'v73' is possibly undefined +// 5165CC: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (00492740) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + unsigned int v9; // edi + char v10; // bl + char v11; // dl + char v12; // al + char v13; // dl + wchar_t v14; // bx + __int16 v15; // ax + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // al + char v23; // dl + int v24; // edx + int v25; // edx + _DWORD *v26; // ecx + unsigned int v27; // eax + __int16 *v28; // eax + __int16 v29; // ax + char v30; // dl + char v31; // bl + unsigned int *v32; // ecx + int v33; // ebx + volatile signed __int32 *v34; // ecx + __int64 result; // rax + bool v36; // al + __int16 *v37; // eax + __int16 v38; // cx + _WORD *v39; // eax + unsigned int *v40; // edi + unsigned int *v41; // ecx + char v42; // al + _WORD *v43; // eax + __int16 v44; // ax + _WORD *v45; // eax + wchar_t *v46; // eax + int v47; // eax + int v48; // edx + _DWORD *v49; // ecx + unsigned int v50; // eax + __int16 *v51; // eax + __int16 v52; // ax + char v53; // al + char v54; // bl + _WORD *v55; // eax + _WORD *v56; // eax + __int16 v57; // dx + __int16 v58; // ax + __int16 *v59; // eax + __int16 v60; // cx + __int16 *v61; // eax + __int16 v62; // ax + _WORD *v63; // eax + wchar_t v64; // ax + std::locale::_Impl *v65; // eax + std::locale::_Impl *v66; // esi + char v67; // al + __int16 v68; // ax + void (__cdecl *v69)(void *); // [esp+4h] [ebp-64h] + unsigned int v70; // [esp+8h] [ebp-60h] + wchar_t *S; // [esp+18h] [ebp-50h] + size_t N; // [esp+1Ch] [ebp-4Ch] + int v73; // [esp+20h] [ebp-48h] + std::string *v74; // [esp+20h] [ebp-48h] + std::string *v75; // [esp+20h] [ebp-48h] + char v76; // [esp+20h] [ebp-48h] + unsigned int v77; // [esp+24h] [ebp-44h] + bool v78; // [esp+29h] [ebp-3Fh] + char v79; // [esp+2Ah] [ebp-3Eh] + char v80; // [esp+2Bh] [ebp-3Dh] + char v81; // [esp+2Bh] [ebp-3Dh] + int v82; // [esp+2Ch] [ebp-3Ch] + char v83; // [esp+2Ch] [ebp-3Ch] + char v84; // [esp+2Ch] [ebp-3Ch] + int v85; // [esp+30h] [ebp-38h] + char v86; // [esp+34h] [ebp-34h] + unsigned int v87; // [esp+34h] [ebp-34h] + int *v88; // [esp+38h] [ebp-30h] + bool v89; // [esp+38h] [ebp-30h] + __int64 v90; // [esp+38h] [ebp-30h] + char v91; // [esp+38h] [ebp-30h] + char v92; // [esp+38h] [ebp-30h] + char v93; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v94[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v88 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v65 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v69); + *((_DWORD *)v65 + 1) = 0; + v66 = v65; + *(_DWORD *)v65 = &off_538BE4; + *((_DWORD *)v65 + 2) = 0; + *((_DWORD *)v65 + 3) = 0; + *((_BYTE *)v65 + 16) = 0; + *((_DWORD *)v65 + 5) = 0; + *((_DWORD *)v65 + 6) = 0; + *((_DWORD *)v65 + 7) = 0; + *((_DWORD *)v65 + 8) = 0; + *((_DWORD *)v65 + 9) = 0; + *((_BYTE *)v65 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v65, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v66, (const std::locale::facet *)v7, v70); + v8 = *v88; + } + v82 = *(_DWORD *)(v6 + 12) & 0x4A; + v9 = 8; + if ( v82 != 64 ) + v9 = v82 == 8 ? 16 : 10; + v10 = WORD2(a1) == 0xFFFF; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v61 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v61 >= *(_DWORD *)(a1 + 12) ) + { + v92 = v10 & ((_DWORD)a1 != 0); + v62 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = v92; + } + else + { + v62 = *v61; + } + v10 = 0; + if ( v62 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + v12 = a3 == -1; + v13 = v12 & (a2 != 0); + if ( v13 ) + { + v59 = (__int16 *)a2[2]; + if ( (unsigned int)v59 >= a2[3] ) + { + v91 = v13; + v68 = (*(int (**)(void))(*a2 + 36))(); + v13 = v91; + v60 = v68; + } + else + { + v60 = *v59; + } + v12 = 0; + if ( v60 == -1 ) + { + a2 = 0; + v12 = v13; + } + } + if ( v10 == v12 ) + { + v78 = 0; + v16 = *(_BYTE *)(v8 + 16); + v14 = 0; + v80 = 1; + v85 = 0; + v89 = 0; +LABEL_40: + if ( v9 == 16 ) + { +LABEL_18: + N = 22; + v73 = 22; + v94[0] = (unsigned int *)&unk_51641C; + if ( !v16 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v9; + v73 = v9; + goto LABEL_42; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v63 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v63 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v63; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v15 = *(_WORD *)(v8 + 112); + v16 = *(_BYTE *)(v8 + 16); + v78 = v15 == (__int16)v14; + if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) + { + if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 2; + WORD2(a1) = -1; + v80 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v80 ) + { + v85 = 0; + v16 = *(_BYTE *)(v8 + 16); + v89 = 0; + if ( v9 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v64 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v16 = *(_BYTE *)(v8 + 16); + v14 = v64; + } + } + else + { + v78 = 0; + } + v85 = 0; + v89 = 0; + while ( 1 ) + { + if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) + { +LABEL_76: + v80 = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v14 ) + break; + v36 = !v89 || v9 == 10; + if ( !v36 ) + goto LABEL_27; + v89 = v82 == 0 || v9 == 8; + if ( !v89 ) + { + ++v85; + v89 = v36; +LABEL_31: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v18 = (_DWORD *)a1; + v85 = 0; + v9 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v18[2] = v19 + 2; + WORD2(a1) = -1; +LABEL_33: + v20 = (__int16 *)v18[2]; + if ( (unsigned int)v20 >= v18[3] ) + v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); + else + v21 = *v20; + v86 = 0; + if ( v21 == -1 ) + { + LODWORD(a1) = 0; + v86 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v86 = 1; +LABEL_37: + v22 = a3 == -1; + v23 = v22 & (a2 != 0); + if ( v23 ) + { + v37 = (__int16 *)a2[2]; + if ( (unsigned int)v37 >= a2[3] ) + { + v81 = v23; + v58 = (*(int (**)(void))(*a2 + 36))(); + v23 = v81; + v38 = v58; + } + else + { + v38 = *v37; + } + v22 = 0; + if ( v38 == -1 ) + { + a2 = 0; + v22 = v23; + } + } + if ( v22 == v86 ) + { + v80 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v45 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v45; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v89 ) + goto LABEL_76; + } + if ( !v89 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) + { + v80 = 0; + v89 = 1; + goto LABEL_40; + } + if ( v9 == 16 || v82 == 0 ) + { + v85 = 0; + v9 = 16; + v89 = 0; + goto LABEL_31; + } + v80 = 0; + N = v9; + v73 = v9; + v89 = 1; +LABEL_42: + v94[0] = (unsigned int *)&unk_51641C; + if ( v16 ) +LABEL_19: + std::string::reserve(v94, (std::string *)0x20, (unsigned int)v69); +LABEL_43: + v77 = 0xFFFFFFFF / v9; + v83 = *(_BYTE *)(v8 + 164); + if ( v83 ) + { + if ( v80 ) + { + v87 = 0; + v79 = 0; + v83 = v80; + v80 = 0; +LABEL_60: + v32 = v94[0]; + v33 = *(v94[0] - 3); + if ( v33 ) + goto LABEL_94; +LABEL_61: + v34 = (volatile signed __int32 *)(v32 - 3); + if ( v85 || v89 ) + goto LABEL_103; + goto LABEL_63; + } + v79 = 0; + S = (wchar_t *)(v8 + 120); + v87 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) + { + if ( v14 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v46 = wmemchr(S, v14, N); + if ( !v46 ) + goto LABEL_93; + v47 = (char *)v46 - (char *)S; + v48 = v47 >> 1; + if ( v47 > 30 ) + v48 -= 6; + if ( v77 >= v87 ) + { + v79 |= ~v48 < v9 * v87; + ++v85; + v87 = v48 + v9 * v87; + goto LABEL_129; + } + v49 = (_DWORD *)a1; + v79 = v83; + v50 = *(_DWORD *)(a1 + 8); + if ( v50 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v49[2] = v50 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v49 + 40))(v49); + v49 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v76 = v83; + goto LABEL_135; + } +LABEL_131: + v51 = (__int16 *)v49[2]; + if ( (unsigned int)v51 >= v49[3] ) + v52 = (*(int (__fastcall **)(_DWORD *))(*v49 + 36))(v49); + else + v52 = *v51; + v76 = 0; + if ( v52 == -1 ) + { + LODWORD(a1) = 0; + v76 = v83; + } +LABEL_135: + v53 = a3 == -1; + v54 = v53 & (a2 != 0); + if ( v54 ) + { + v56 = (_WORD *)a2[2]; + v57 = (unsigned int)v56 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v56; + v53 = 0; + if ( v57 == -1 ) + { + a2 = 0; + v53 = v54; + } + } + if ( v53 == v76 ) + goto LABEL_60; + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v55 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v55 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v55; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v85 ) + { + v83 = 0; + v80 = *(_BYTE *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v94, (std::string *)(char)v85, (char)v69); + v85 = 0; +LABEL_129: + v49 = (_DWORD *)a1; + v50 = *(_DWORD *)(a1 + 8); + if ( v50 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v79 = 0; + if ( v80 ) + { + v67 = v80; + v87 = 0; + v80 = 0; + v83 = v67; + goto LABEL_60; + } + v87 = 0; +LABEL_46: + v24 = v14; + if ( v73 > 10 ) + { + if ( (unsigned __int16)(v14 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v14 - 97) <= 5u ) + { + v25 = v24 - 87; + if ( v77 < v87 ) + goto LABEL_51; +LABEL_84: + v79 |= ~v25 < v9 * v87; + v26 = (_DWORD *)a1; + v87 = v25 + v9 * v87; + ++v85; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *, int))(*v26 + 40))(v26, v25); + v26 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v84 = 1; +LABEL_57: + v30 = a3 == -1; + v31 = v30 & (a2 != 0); + if ( v31 ) + { + v43 = (_WORD *)a2[2]; + v44 = (unsigned int)v43 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v43; + v30 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v30 = v31; + } + } + if ( v30 == v84 ) + { + v83 = 1; + goto LABEL_60; + } + v14 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_46; + v39 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v39; + if ( v14 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( v73 <= 10 ) + goto LABEL_93; + v24 = 0xFFFF; + } + if ( (unsigned __int16)(v14 - 65) <= 5u ) + { + v25 = v24 - 55; + goto LABEL_50; + } + } + else if ( v14 > 0x2Fu && (unsigned __int16)(v73 + 48) > v14 ) + { +LABEL_49: + v25 = v14 - 48; +LABEL_50: + if ( v77 >= v87 ) + goto LABEL_84; +LABEL_51: + v26 = (_DWORD *)a1; + v79 = 1; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v26[2] = v27 + 2; + WORD2(a1) = -1; +LABEL_53: + v28 = (__int16 *)v26[2]; + if ( (unsigned int)v28 >= v26[3] ) + v29 = (*(int (__fastcall **)(_DWORD *, int))(*v26 + 36))(v26, v25); + else + v29 = *v28; + v84 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v84 = 1; + } + goto LABEL_57; + } +LABEL_93: + v32 = v94[0]; + v83 = 0; + v33 = *(v94[0] - 3); + if ( !v33 ) + goto LABEL_61; +LABEL_94: + v74 = (std::string *)(v33 + 1); + if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) + std::string::reserve(v94, v74, (unsigned int)v69); + *((_BYTE *)v94[0] + *(v94[0] - 3)) = v85; + v40 = v94[0]; + v41 = v94[0] - 3; + if ( (_UNKNOWN *)v94[0] != &unk_51641C ) + { + *(v94[0] - 1) = 0; + *(v40 - 3) = (unsigned int)v74; + *((_BYTE *)v41 + v33 + 13) = 0; + v40 = v94[0]; + v41 = v94[0] - 3; + } + v75 = (std::string *)v41; + v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v94); + v34 = (volatile signed __int32 *)v75; + if ( !v42 ) + *a5 = 4; + if ( !v85 && !v89 && !*(v40 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v80 ) + { +LABEL_63: + *a6 = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v79 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v78 ) + v87 = -v87; + *a6 = v87; + } +LABEL_64: + if ( v83 ) + *a5 |= 2u; + result = a1; + if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v90 = a1; + std::string::_Rep::_M_dispose(v34, (int)&v93); + return v90; + } + return result; +} +// 493117: variable 'v69' is possibly undefined +// 493181: variable 'v70' is possibly undefined +// 4931D5: variable 'v25' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (00493340) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + unsigned int v9; // edi + char v10; // bl + char v11; // dl + char v12; // al + char v13; // dl + wchar_t v14; // bx + __int16 v15; // ax + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // al + char v23; // dl + int v24; // edx + int v25; // edx + _DWORD *v26; // ecx + unsigned int v27; // eax + __int16 *v28; // eax + __int16 v29; // ax + char v30; // dl + char v31; // bl + unsigned int *v32; // ecx + int v33; // ebx + volatile signed __int32 *v34; // ecx + __int64 result; // rax + bool v36; // al + __int16 *v37; // eax + __int16 v38; // cx + _WORD *v39; // eax + unsigned int *v40; // edi + unsigned int *v41; // ecx + char v42; // al + int v43; // eax + _WORD *v44; // eax + __int16 v45; // ax + _WORD *v46; // eax + wchar_t *v47; // eax + int v48; // eax + int v49; // edx + _DWORD *v50; // ecx + unsigned int v51; // eax + __int16 *v52; // eax + __int16 v53; // ax + char v54; // al + char v55; // bl + _WORD *v56; // eax + _WORD *v57; // eax + __int16 v58; // dx + __int16 v59; // ax + __int16 *v60; // eax + __int16 v61; // cx + __int16 *v62; // eax + __int16 v63; // ax + _WORD *v64; // eax + wchar_t v65; // ax + std::locale::_Impl *v66; // eax + std::locale::_Impl *v67; // esi + char v68; // al + __int16 v69; // ax + void (__cdecl *v70)(void *); // [esp+4h] [ebp-64h] + unsigned int v71; // [esp+8h] [ebp-60h] + wchar_t *S; // [esp+10h] [ebp-58h] + bool v73; // [esp+14h] [ebp-54h] + size_t N; // [esp+18h] [ebp-50h] + unsigned int v75; // [esp+1Ch] [ebp-4Ch] + int v76; // [esp+20h] [ebp-48h] + std::string *v77; // [esp+20h] [ebp-48h] + std::string *v78; // [esp+20h] [ebp-48h] + char v79; // [esp+20h] [ebp-48h] + unsigned int v80; // [esp+24h] [ebp-44h] + char v81; // [esp+2Ah] [ebp-3Eh] + char v82; // [esp+2Bh] [ebp-3Dh] + char v83; // [esp+2Bh] [ebp-3Dh] + int v84; // [esp+2Ch] [ebp-3Ch] + char v85; // [esp+2Ch] [ebp-3Ch] + char v86; // [esp+2Ch] [ebp-3Ch] + int v87; // [esp+30h] [ebp-38h] + char v88; // [esp+34h] [ebp-34h] + unsigned int v89; // [esp+34h] [ebp-34h] + int *v90; // [esp+38h] [ebp-30h] + bool v91; // [esp+38h] [ebp-30h] + __int64 v92; // [esp+38h] [ebp-30h] + char v93; // [esp+38h] [ebp-30h] + char v94; // [esp+38h] [ebp-30h] + char v95; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v96[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v90 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v66 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v70); + *((_DWORD *)v66 + 1) = 0; + v67 = v66; + *(_DWORD *)v66 = &off_538BE4; + *((_DWORD *)v66 + 2) = 0; + *((_DWORD *)v66 + 3) = 0; + *((_BYTE *)v66 + 16) = 0; + *((_DWORD *)v66 + 5) = 0; + *((_DWORD *)v66 + 6) = 0; + *((_DWORD *)v66 + 7) = 0; + *((_DWORD *)v66 + 8) = 0; + *((_DWORD *)v66 + 9) = 0; + *((_BYTE *)v66 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v66, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v67, (const std::locale::facet *)v7, v71); + v8 = *v90; + } + v84 = *(_DWORD *)(v6 + 12) & 0x4A; + v9 = 8; + if ( v84 != 64 ) + v9 = v84 == 8 ? 16 : 10; + v10 = WORD2(a1) == 0xFFFF; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v62 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ) + { + v94 = v10 & ((_DWORD)a1 != 0); + v63 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = v94; + } + else + { + v63 = *v62; + } + v10 = 0; + if ( v63 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + v12 = a3 == -1; + v13 = v12 & (a2 != 0); + if ( v13 ) + { + v60 = (__int16 *)a2[2]; + if ( (unsigned int)v60 >= a2[3] ) + { + v93 = v13; + v69 = (*(int (**)(void))(*a2 + 36))(); + v13 = v93; + v61 = v69; + } + else + { + v61 = *v60; + } + v12 = 0; + if ( v61 == -1 ) + { + a2 = 0; + v12 = v13; + } + } + if ( v12 == v10 ) + { + v73 = 0; + v16 = *(_BYTE *)(v8 + 16); + v14 = 0; + v82 = 1; + v87 = 0; + v91 = 0; +LABEL_40: + if ( v9 == 16 ) + { +LABEL_18: + N = 22; + v76 = 22; + v96[0] = (unsigned int *)&unk_51641C; + if ( !v16 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v9; + v76 = v9; + goto LABEL_42; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v64 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v64 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v64; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v15 = *(_WORD *)(v8 + 112); + v16 = *(_BYTE *)(v8 + 16); + v73 = v15 == (__int16)v14; + if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) + { + if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 2; + WORD2(a1) = -1; + v82 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v82 ) + { + v87 = 0; + v16 = *(_BYTE *)(v8 + 16); + v91 = 0; + if ( v9 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v65 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v16 = *(_BYTE *)(v8 + 16); + v14 = v65; + } + } + else + { + v73 = 0; + } + v87 = 0; + v91 = 0; + while ( 1 ) + { + if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) + { +LABEL_76: + v82 = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v14 ) + break; + v36 = !v91 || v9 == 10; + if ( !v36 ) + goto LABEL_27; + v91 = v84 == 0 || v9 == 8; + if ( !v91 ) + { + ++v87; + v91 = v36; +LABEL_31: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v18 = (_DWORD *)a1; + v87 = 0; + v9 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v18[2] = v19 + 2; + WORD2(a1) = -1; +LABEL_33: + v20 = (__int16 *)v18[2]; + if ( (unsigned int)v20 >= v18[3] ) + v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); + else + v21 = *v20; + v88 = 0; + if ( v21 == -1 ) + { + LODWORD(a1) = 0; + v88 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v88 = 1; +LABEL_37: + v22 = a3 == -1; + v23 = v22 & (a2 != 0); + if ( v23 ) + { + v37 = (__int16 *)a2[2]; + if ( (unsigned int)v37 >= a2[3] ) + { + v83 = v23; + v59 = (*(int (**)(void))(*a2 + 36))(); + v23 = v83; + v38 = v59; + } + else + { + v38 = *v37; + } + v22 = 0; + if ( v38 == -1 ) + { + a2 = 0; + v22 = v23; + } + } + if ( v22 == v88 ) + { + v82 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v46 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v46; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v91 ) + goto LABEL_76; + } + if ( !v91 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) + { + v82 = 0; + v91 = 1; + goto LABEL_40; + } + if ( v9 == 16 || v84 == 0 ) + { + v87 = 0; + v9 = 16; + v91 = 0; + goto LABEL_31; + } + v82 = 0; + N = v9; + v76 = v9; + v91 = 1; +LABEL_42: + v96[0] = (unsigned int *)&unk_51641C; + if ( v16 ) +LABEL_19: + std::string::reserve(v96, (std::string *)0x20, (unsigned int)v70); +LABEL_43: + v75 = v73 + 0x7FFFFFFF; + v80 = v75 / v9; + v85 = *(_BYTE *)(v8 + 164); + if ( v85 ) + { + if ( v82 ) + { + v89 = 0; + v81 = 0; + v85 = v82; + v82 = 0; +LABEL_60: + v32 = v96[0]; + v33 = *(v96[0] - 3); + if ( v33 ) + goto LABEL_94; +LABEL_61: + v34 = (volatile signed __int32 *)(v32 - 3); + if ( v87 || v91 ) + goto LABEL_103; + goto LABEL_63; + } + v81 = 0; + S = (wchar_t *)(v8 + 120); + v89 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) + { + if ( v14 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v47 = wmemchr(S, v14, N); + if ( !v47 ) + goto LABEL_93; + v48 = (char *)v47 - (char *)S; + v49 = v48 >> 1; + if ( v48 > 30 ) + v49 -= 6; + if ( v80 >= v89 ) + { + v81 |= v75 - v49 < v9 * v89; + ++v87; + v89 = v49 + v9 * v89; + goto LABEL_129; + } + v50 = (_DWORD *)a1; + v81 = v85; + v51 = *(_DWORD *)(a1 + 8); + if ( v51 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v50[2] = v51 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v50 + 40))(v50); + v50 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v79 = v85; + goto LABEL_135; + } +LABEL_131: + v52 = (__int16 *)v50[2]; + if ( (unsigned int)v52 >= v50[3] ) + v53 = (*(int (__fastcall **)(_DWORD *))(*v50 + 36))(v50); + else + v53 = *v52; + v79 = 0; + if ( v53 == -1 ) + { + LODWORD(a1) = 0; + v79 = v85; + } +LABEL_135: + v54 = a3 == -1; + v55 = v54 & (a2 != 0); + if ( v55 ) + { + v57 = (_WORD *)a2[2]; + v58 = (unsigned int)v57 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v57; + v54 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v54 = v55; + } + } + if ( v79 == v54 ) + goto LABEL_60; + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v56 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v56; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v87 ) + { + v85 = 0; + v82 = *(_BYTE *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v96, (std::string *)(char)v87, (char)v70); + v87 = 0; +LABEL_129: + v50 = (_DWORD *)a1; + v51 = *(_DWORD *)(a1 + 8); + if ( v51 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v81 = 0; + if ( v82 ) + { + v68 = v82; + v89 = 0; + v82 = 0; + v85 = v68; + goto LABEL_60; + } + v89 = 0; +LABEL_46: + v24 = v14; + if ( v76 > 10 ) + { + if ( (unsigned __int16)(v14 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v14 - 97) <= 5u ) + { + v25 = v24 - 87; + if ( v80 < v89 ) + goto LABEL_51; +LABEL_84: + v81 |= v75 - v25 < v9 * v89; + v26 = (_DWORD *)a1; + v89 = v25 + v9 * v89; + ++v87; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *, int))(*v26 + 40))(v26, v25); + v26 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v86 = 1; +LABEL_57: + v30 = a3 == -1; + v31 = v30 & (a2 != 0); + if ( v31 ) + { + v44 = (_WORD *)a2[2]; + v45 = (unsigned int)v44 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v44; + v30 = 0; + if ( v45 == -1 ) + { + a2 = 0; + v30 = v31; + } + } + if ( v30 == v86 ) + { + v85 = 1; + goto LABEL_60; + } + v14 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_46; + v39 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v39; + if ( v14 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( v76 <= 10 ) + goto LABEL_93; + v24 = 0xFFFF; + } + if ( (unsigned __int16)(v14 - 65) <= 5u ) + { + v25 = v24 - 55; + goto LABEL_50; + } + } + else if ( v14 > 0x2Fu && (unsigned __int16)(v76 + 48) > v14 ) + { +LABEL_49: + v25 = v14 - 48; +LABEL_50: + if ( v80 >= v89 ) + goto LABEL_84; +LABEL_51: + v26 = (_DWORD *)a1; + v81 = 1; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v26[2] = v27 + 2; + WORD2(a1) = -1; +LABEL_53: + v28 = (__int16 *)v26[2]; + if ( (unsigned int)v28 >= v26[3] ) + v29 = (*(int (__fastcall **)(_DWORD *, int))(*v26 + 36))(v26, v25); + else + v29 = *v28; + v86 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v86 = 1; + } + goto LABEL_57; + } +LABEL_93: + v32 = v96[0]; + v85 = 0; + v33 = *(v96[0] - 3); + if ( !v33 ) + goto LABEL_61; +LABEL_94: + v77 = (std::string *)(v33 + 1); + if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) + std::string::reserve(v96, v77, (unsigned int)v70); + *((_BYTE *)v96[0] + *(v96[0] - 3)) = v87; + v40 = v96[0]; + v41 = v96[0] - 3; + if ( (_UNKNOWN *)v96[0] != &unk_51641C ) + { + *(v96[0] - 1) = 0; + *(v40 - 3) = (unsigned int)v77; + *((_BYTE *)v41 + v33 + 13) = 0; + v40 = v96[0]; + v41 = v96[0] - 3; + } + v78 = (std::string *)v41; + v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v96); + v34 = (volatile signed __int32 *)v78; + if ( !v42 ) + *a5 = 4; + if ( !v87 && !v91 && !*(v40 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v82 ) + { +LABEL_63: + *a6 = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v81 ) + { + *a6 = v73 + 0x7FFFFFFF; + *a5 = 4; + } + else + { + v43 = v89; + if ( v73 ) + v43 = -v89; + *a6 = v43; + } +LABEL_64: + if ( v85 ) + *a5 |= 2u; + result = a1; + if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v92 = a1; + std::string::_Rep::_M_dispose(v34, (int)&v95); + return v92; + } + return result; +} +// 493D17: variable 'v70' is possibly undefined +// 493D81: variable 'v71' is possibly undefined +// 493DD5: variable 'v25' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (00493F40) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + unsigned int v9; // edi + char v10; // bl + char v11; // dl + char v12; // al + char v13; // dl + wchar_t v14; // bx + __int16 v15; // ax + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // al + char v23; // dl + int v24; // edx + int v25; // edx + _DWORD *v26; // ecx + unsigned int v27; // eax + __int16 *v28; // eax + __int16 v29; // ax + char v30; // dl + char v31; // bl + unsigned int *v32; // ecx + int v33; // ebx + volatile signed __int32 *v34; // ecx + __int64 result; // rax + bool v36; // al + __int16 *v37; // eax + __int16 v38; // cx + _WORD *v39; // eax + unsigned int *v40; // edi + unsigned int *v41; // ecx + char v42; // al + _WORD *v43; // eax + __int16 v44; // ax + _WORD *v45; // eax + wchar_t *v46; // eax + int v47; // eax + int v48; // edx + _DWORD *v49; // ecx + unsigned int v50; // eax + __int16 *v51; // eax + __int16 v52; // ax + char v53; // al + char v54; // bl + _WORD *v55; // eax + _WORD *v56; // eax + __int16 v57; // dx + __int16 v58; // ax + __int16 *v59; // eax + __int16 v60; // cx + __int16 *v61; // eax + __int16 v62; // ax + _WORD *v63; // eax + wchar_t v64; // ax + std::locale::_Impl *v65; // eax + std::locale::_Impl *v66; // esi + char v67; // al + __int16 v68; // ax + void (__cdecl *v69)(void *); // [esp+4h] [ebp-64h] + unsigned int v70; // [esp+8h] [ebp-60h] + wchar_t *S; // [esp+18h] [ebp-50h] + size_t N; // [esp+1Ch] [ebp-4Ch] + int v73; // [esp+20h] [ebp-48h] + std::string *v74; // [esp+20h] [ebp-48h] + std::string *v75; // [esp+20h] [ebp-48h] + char v76; // [esp+20h] [ebp-48h] + unsigned int v77; // [esp+24h] [ebp-44h] + bool v78; // [esp+29h] [ebp-3Fh] + char v79; // [esp+2Ah] [ebp-3Eh] + char v80; // [esp+2Bh] [ebp-3Dh] + char v81; // [esp+2Bh] [ebp-3Dh] + int v82; // [esp+2Ch] [ebp-3Ch] + char v83; // [esp+2Ch] [ebp-3Ch] + char v84; // [esp+2Ch] [ebp-3Ch] + int v85; // [esp+30h] [ebp-38h] + char v86; // [esp+34h] [ebp-34h] + unsigned int v87; // [esp+34h] [ebp-34h] + int *v88; // [esp+38h] [ebp-30h] + bool v89; // [esp+38h] [ebp-30h] + __int64 v90; // [esp+38h] [ebp-30h] + char v91; // [esp+38h] [ebp-30h] + char v92; // [esp+38h] [ebp-30h] + char v93; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v94[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v88 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v65 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v69); + *((_DWORD *)v65 + 1) = 0; + v66 = v65; + *(_DWORD *)v65 = &off_538BE4; + *((_DWORD *)v65 + 2) = 0; + *((_DWORD *)v65 + 3) = 0; + *((_BYTE *)v65 + 16) = 0; + *((_DWORD *)v65 + 5) = 0; + *((_DWORD *)v65 + 6) = 0; + *((_DWORD *)v65 + 7) = 0; + *((_DWORD *)v65 + 8) = 0; + *((_DWORD *)v65 + 9) = 0; + *((_BYTE *)v65 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v65, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v66, (const std::locale::facet *)v7, v70); + v8 = *v88; + } + v82 = *(_DWORD *)(v6 + 12) & 0x4A; + v9 = 8; + if ( v82 != 64 ) + v9 = v82 == 8 ? 16 : 10; + v10 = WORD2(a1) == 0xFFFF; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v61 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v61 >= *(_DWORD *)(a1 + 12) ) + { + v92 = v10 & ((_DWORD)a1 != 0); + v62 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = v92; + } + else + { + v62 = *v61; + } + v10 = 0; + if ( v62 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + v12 = a3 == -1; + v13 = v12 & (a2 != 0); + if ( v13 ) + { + v59 = (__int16 *)a2[2]; + if ( (unsigned int)v59 >= a2[3] ) + { + v91 = v13; + v68 = (*(int (**)(void))(*a2 + 36))(); + v13 = v91; + v60 = v68; + } + else + { + v60 = *v59; + } + v12 = 0; + if ( v60 == -1 ) + { + a2 = 0; + v12 = v13; + } + } + if ( v10 == v12 ) + { + v78 = 0; + v16 = *(_BYTE *)(v8 + 16); + v14 = 0; + v80 = 1; + v85 = 0; + v89 = 0; +LABEL_40: + if ( v9 == 16 ) + { +LABEL_18: + N = 22; + v73 = 22; + v94[0] = (unsigned int *)&unk_51641C; + if ( !v16 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v9; + v73 = v9; + goto LABEL_42; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v63 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v63 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v63; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v15 = *(_WORD *)(v8 + 112); + v16 = *(_BYTE *)(v8 + 16); + v78 = v15 == (__int16)v14; + if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) + { + if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 2; + WORD2(a1) = -1; + v80 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v80 ) + { + v85 = 0; + v16 = *(_BYTE *)(v8 + 16); + v89 = 0; + if ( v9 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v64 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v16 = *(_BYTE *)(v8 + 16); + v14 = v64; + } + } + else + { + v78 = 0; + } + v85 = 0; + v89 = 0; + while ( 1 ) + { + if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) + { +LABEL_76: + v80 = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v14 ) + break; + v36 = !v89 || v9 == 10; + if ( !v36 ) + goto LABEL_27; + v89 = v82 == 0 || v9 == 8; + if ( !v89 ) + { + ++v85; + v89 = v36; +LABEL_31: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v18 = (_DWORD *)a1; + v85 = 0; + v9 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v18[2] = v19 + 2; + WORD2(a1) = -1; +LABEL_33: + v20 = (__int16 *)v18[2]; + if ( (unsigned int)v20 >= v18[3] ) + v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); + else + v21 = *v20; + v86 = 0; + if ( v21 == -1 ) + { + LODWORD(a1) = 0; + v86 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v86 = 1; +LABEL_37: + v22 = a3 == -1; + v23 = v22 & (a2 != 0); + if ( v23 ) + { + v37 = (__int16 *)a2[2]; + if ( (unsigned int)v37 >= a2[3] ) + { + v81 = v23; + v58 = (*(int (**)(void))(*a2 + 36))(); + v23 = v81; + v38 = v58; + } + else + { + v38 = *v37; + } + v22 = 0; + if ( v38 == -1 ) + { + a2 = 0; + v22 = v23; + } + } + if ( v22 == v86 ) + { + v80 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v45 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v45; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v89 ) + goto LABEL_76; + } + if ( !v89 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) + { + v80 = 0; + v89 = 1; + goto LABEL_40; + } + if ( v9 == 16 || v82 == 0 ) + { + v85 = 0; + v9 = 16; + v89 = 0; + goto LABEL_31; + } + v80 = 0; + N = v9; + v73 = v9; + v89 = 1; +LABEL_42: + v94[0] = (unsigned int *)&unk_51641C; + if ( v16 ) +LABEL_19: + std::string::reserve(v94, (std::string *)0x20, (unsigned int)v69); +LABEL_43: + v77 = 0xFFFFFFFF / v9; + v83 = *(_BYTE *)(v8 + 164); + if ( v83 ) + { + if ( v80 ) + { + v87 = 0; + v79 = 0; + v83 = v80; + v80 = 0; +LABEL_60: + v32 = v94[0]; + v33 = *(v94[0] - 3); + if ( v33 ) + goto LABEL_94; +LABEL_61: + v34 = (volatile signed __int32 *)(v32 - 3); + if ( v85 || v89 ) + goto LABEL_103; + goto LABEL_63; + } + v79 = 0; + S = (wchar_t *)(v8 + 120); + v87 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) + { + if ( v14 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v46 = wmemchr(S, v14, N); + if ( !v46 ) + goto LABEL_93; + v47 = (char *)v46 - (char *)S; + v48 = v47 >> 1; + if ( v47 > 30 ) + v48 -= 6; + if ( v77 >= v87 ) + { + v79 |= ~v48 < v9 * v87; + ++v85; + v87 = v48 + v9 * v87; + goto LABEL_129; + } + v49 = (_DWORD *)a1; + v79 = v83; + v50 = *(_DWORD *)(a1 + 8); + if ( v50 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v49[2] = v50 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v49 + 40))(v49); + v49 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v76 = v83; + goto LABEL_135; + } +LABEL_131: + v51 = (__int16 *)v49[2]; + if ( (unsigned int)v51 >= v49[3] ) + v52 = (*(int (__fastcall **)(_DWORD *))(*v49 + 36))(v49); + else + v52 = *v51; + v76 = 0; + if ( v52 == -1 ) + { + LODWORD(a1) = 0; + v76 = v83; + } +LABEL_135: + v53 = a3 == -1; + v54 = v53 & (a2 != 0); + if ( v54 ) + { + v56 = (_WORD *)a2[2]; + v57 = (unsigned int)v56 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v56; + v53 = 0; + if ( v57 == -1 ) + { + a2 = 0; + v53 = v54; + } + } + if ( v53 == v76 ) + goto LABEL_60; + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v55 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v55 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v55; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v85 ) + { + v83 = 0; + v80 = *(_BYTE *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v94, (std::string *)(char)v85, (char)v69); + v85 = 0; +LABEL_129: + v49 = (_DWORD *)a1; + v50 = *(_DWORD *)(a1 + 8); + if ( v50 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v79 = 0; + if ( v80 ) + { + v67 = v80; + v87 = 0; + v80 = 0; + v83 = v67; + goto LABEL_60; + } + v87 = 0; +LABEL_46: + v24 = v14; + if ( v73 > 10 ) + { + if ( (unsigned __int16)(v14 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v14 - 97) <= 5u ) + { + v25 = v24 - 87; + if ( v77 < v87 ) + goto LABEL_51; +LABEL_84: + v79 |= ~v25 < v9 * v87; + v26 = (_DWORD *)a1; + v87 = v25 + v9 * v87; + ++v85; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *, int))(*v26 + 40))(v26, v25); + v26 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v84 = 1; +LABEL_57: + v30 = a3 == -1; + v31 = v30 & (a2 != 0); + if ( v31 ) + { + v43 = (_WORD *)a2[2]; + v44 = (unsigned int)v43 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v43; + v30 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v30 = v31; + } + } + if ( v30 == v84 ) + { + v83 = 1; + goto LABEL_60; + } + v14 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_46; + v39 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v39; + if ( v14 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( v73 <= 10 ) + goto LABEL_93; + v24 = 0xFFFF; + } + if ( (unsigned __int16)(v14 - 65) <= 5u ) + { + v25 = v24 - 55; + goto LABEL_50; + } + } + else if ( v14 > 0x2Fu && (unsigned __int16)(v73 + 48) > v14 ) + { +LABEL_49: + v25 = v14 - 48; +LABEL_50: + if ( v77 >= v87 ) + goto LABEL_84; +LABEL_51: + v26 = (_DWORD *)a1; + v79 = 1; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v26[2] = v27 + 2; + WORD2(a1) = -1; +LABEL_53: + v28 = (__int16 *)v26[2]; + if ( (unsigned int)v28 >= v26[3] ) + v29 = (*(int (__fastcall **)(_DWORD *, int))(*v26 + 36))(v26, v25); + else + v29 = *v28; + v84 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v84 = 1; + } + goto LABEL_57; + } +LABEL_93: + v32 = v94[0]; + v83 = 0; + v33 = *(v94[0] - 3); + if ( !v33 ) + goto LABEL_61; +LABEL_94: + v74 = (std::string *)(v33 + 1); + if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) + std::string::reserve(v94, v74, (unsigned int)v69); + *((_BYTE *)v94[0] + *(v94[0] - 3)) = v85; + v40 = v94[0]; + v41 = v94[0] - 3; + if ( (_UNKNOWN *)v94[0] != &unk_51641C ) + { + *(v94[0] - 1) = 0; + *(v40 - 3) = (unsigned int)v74; + *((_BYTE *)v41 + v33 + 13) = 0; + v40 = v94[0]; + v41 = v94[0] - 3; + } + v75 = (std::string *)v41; + v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v94); + v34 = (volatile signed __int32 *)v75; + if ( !v42 ) + *a5 = 4; + if ( !v85 && !v89 && !*(v40 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v80 ) + { +LABEL_63: + *a6 = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v79 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v78 ) + v87 = -v87; + *a6 = v87; + } +LABEL_64: + if ( v83 ) + *a5 |= 2u; + result = a1; + if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v90 = a1; + std::string::_Rep::_M_dispose(v34, (int)&v93); + return v90; + } + return result; +} +// 494917: variable 'v69' is possibly undefined +// 494981: variable 'v70' is possibly undefined +// 4949D5: variable 'v25' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (00494B40) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + unsigned __int16 *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // edi + char v10; // bl + char v11; // dl + char v12; // al + char v13; // dl + wchar_t v14; // bx + __int16 v15; // ax + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // al + char v23; // dl + int v24; // eax + int v25; // eax + _DWORD *v26; // ecx + unsigned int v27; // eax + __int16 *v28; // eax + __int16 v29; // ax + char v30; // dl + char v31; // bl + unsigned int *v32; // ecx + int v33; // ebx + volatile signed __int32 *v34; // ecx + __int64 result; // rax + bool v36; // al + __int16 *v37; // eax + __int16 v38; // cx + _WORD *v39; // eax + unsigned int *v40; // edi + unsigned int *v41; // ecx + char v42; // al + _WORD *v43; // eax + __int16 v44; // ax + _WORD *v45; // eax + wchar_t *v46; // eax + int v47; // eax + int v48; // ecx + int v49; // ebx + _DWORD *v50; // ecx + unsigned int v51; // eax + __int16 *v52; // eax + __int16 v53; // ax + char v54; // al + char v55; // bl + _WORD *v56; // eax + _WORD *v57; // eax + __int16 v58; // dx + __int16 v59; // ax + __int16 *v60; // eax + __int16 v61; // cx + __int16 *v62; // eax + __int16 v63; // ax + _WORD *v64; // eax + wchar_t v65; // ax + std::locale::_Impl *v66; // eax + std::locale::_Impl *v67; // esi + char v68; // al + __int16 v69; // ax + char v70; // al + void (__cdecl *v71)(void *); // [esp+4h] [ebp-64h] + unsigned int v72; // [esp+8h] [ebp-60h] + bool v73; // [esp+1Bh] [ebp-4Dh] + wchar_t *S; // [esp+1Ch] [ebp-4Ch] + size_t N; // [esp+20h] [ebp-48h] + int v76; // [esp+24h] [ebp-44h] + std::string *v77; // [esp+24h] [ebp-44h] + std::string *v78; // [esp+24h] [ebp-44h] + char v79; // [esp+24h] [ebp-44h] + int v80; // [esp+28h] [ebp-40h] + int v81; // [esp+2Ch] [ebp-3Ch] + char v82; // [esp+2Ch] [ebp-3Ch] + char v83; // [esp+2Ch] [ebp-3Ch] + int v84; // [esp+30h] [ebp-38h] + char v85; // [esp+34h] [ebp-34h] + char v86; // [esp+35h] [ebp-33h] + char v87; // [esp+35h] [ebp-33h] + char v88; // [esp+36h] [ebp-32h] + unsigned __int16 v89; // [esp+36h] [ebp-32h] + int *v90; // [esp+38h] [ebp-30h] + bool v91; // [esp+38h] [ebp-30h] + __int64 v92; // [esp+38h] [ebp-30h] + char v93; // [esp+38h] [ebp-30h] + char v94; // [esp+38h] [ebp-30h] + char v95; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v96[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v90 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v66 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v71); + *((_DWORD *)v66 + 1) = 0; + v67 = v66; + *(_DWORD *)v66 = &off_538BE4; + *((_DWORD *)v66 + 2) = 0; + *((_DWORD *)v66 + 3) = 0; + *((_BYTE *)v66 + 16) = 0; + *((_DWORD *)v66 + 5) = 0; + *((_DWORD *)v66 + 6) = 0; + *((_DWORD *)v66 + 7) = 0; + *((_DWORD *)v66 + 8) = 0; + *((_DWORD *)v66 + 9) = 0; + *((_BYTE *)v66 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v66, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v67, (const std::locale::facet *)v7, v72); + v8 = *v90; + } + v81 = *(_DWORD *)(v6 + 12) & 0x4A; + v9 = 8; + if ( v81 != 64 ) + v9 = v81 == 8 ? 16 : 10; + v10 = WORD2(a1) == 0xFFFF; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v62 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ) + { + v94 = v10 & ((_DWORD)a1 != 0); + v63 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = v94; + } + else + { + v63 = *v62; + } + v10 = 0; + if ( v63 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + v12 = a3 == -1; + v13 = v12 & (a2 != 0); + if ( v13 ) + { + v60 = (__int16 *)a2[2]; + if ( (unsigned int)v60 >= a2[3] ) + { + v93 = v13; + v69 = (*(int (**)(void))(*a2 + 36))(); + v13 = v93; + v61 = v69; + } + else + { + v61 = *v60; + } + v12 = 0; + if ( v61 == -1 ) + { + a2 = 0; + v12 = v13; + } + } + if ( v10 == v12 ) + { + v73 = 0; + v16 = *(_BYTE *)(v8 + 16); + v14 = 0; + v86 = 1; + v84 = 0; + v91 = 0; +LABEL_40: + if ( v9 == 16 ) + { +LABEL_18: + N = 22; + v76 = 22; + v96[0] = (unsigned int *)&unk_51641C; + if ( !v16 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v9; + v76 = v9; + goto LABEL_42; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v64 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v64 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v64; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v15 = *(_WORD *)(v8 + 112); + v16 = *(_BYTE *)(v8 + 16); + v73 = v15 == (__int16)v14; + if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) + { + if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 2; + WORD2(a1) = -1; + v86 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v86 ) + { + v84 = 0; + v16 = *(_BYTE *)(v8 + 16); + v91 = 0; + if ( v9 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v65 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v16 = *(_BYTE *)(v8 + 16); + v14 = v65; + } + } + else + { + v73 = 0; + } + v84 = 0; + v91 = 0; + while ( 1 ) + { + if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) + { +LABEL_76: + v86 = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v14 ) + break; + v36 = !v91 || v9 == 10; + if ( !v36 ) + goto LABEL_27; + v91 = v81 == 0 || v9 == 8; + if ( !v91 ) + { + ++v84; + v91 = v36; +LABEL_31: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v18 = (_DWORD *)a1; + v84 = 0; + v9 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v18[2] = v19 + 2; + WORD2(a1) = -1; +LABEL_33: + v20 = (__int16 *)v18[2]; + if ( (unsigned int)v20 >= v18[3] ) + v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); + else + v21 = *v20; + v88 = 0; + if ( v21 == -1 ) + { + LODWORD(a1) = 0; + v88 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v88 = 1; +LABEL_37: + v22 = a3 == -1; + v23 = v22 & (a2 != 0); + if ( v23 ) + { + v37 = (__int16 *)a2[2]; + if ( (unsigned int)v37 >= a2[3] ) + { + v87 = v23; + v59 = (*(int (**)(void))(*a2 + 36))(); + v23 = v87; + v38 = v59; + } + else + { + v38 = *v37; + } + v22 = 0; + if ( v38 == -1 ) + { + a2 = 0; + v22 = v23; + } + } + if ( v22 == v88 ) + { + v86 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v45 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v45; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v91 ) + goto LABEL_76; + } + if ( !v91 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) + { + v86 = 0; + v91 = 1; + goto LABEL_40; + } + if ( v9 == 16 || v81 == 0 ) + { + v84 = 0; + v9 = 16; + v91 = 0; + goto LABEL_31; + } + v86 = 0; + N = v9; + v76 = v9; + v91 = 1; +LABEL_42: + v96[0] = (unsigned int *)&unk_51641C; + if ( v16 ) +LABEL_19: + std::string::reserve(v96, (std::string *)0x20, (unsigned int)v71); +LABEL_43: + v80 = 0xFFFF / v9; + v82 = *(_BYTE *)(v8 + 164); + if ( v82 ) + { + if ( v86 ) + { + v70 = v86; + v85 = 0; + v86 = 0; + v82 = v70; + v89 = 0; +LABEL_60: + v32 = v96[0]; + v33 = *(v96[0] - 3); + if ( v33 ) + goto LABEL_94; +LABEL_61: + v34 = (volatile signed __int32 *)(v32 - 3); + if ( v84 || v91 ) + goto LABEL_103; + goto LABEL_63; + } + v85 = 0; + S = (wchar_t *)(v8 + 120); + v89 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) + { + if ( v14 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v46 = wmemchr(S, v14, N); + if ( !v46 ) + goto LABEL_93; + v47 = (char *)v46 - (char *)S; + v48 = v47 >> 1; + if ( v47 > 30 ) + v48 -= 6; + if ( (unsigned __int16)v80 >= v89 ) + { + v49 = (unsigned __int16)(v9 * v89); + ++v84; + v85 |= v49 > 0xFFFF - v48; + v89 = v49 + v48; + goto LABEL_129; + } + v50 = (_DWORD *)a1; + v85 = v82; + v51 = *(_DWORD *)(a1 + 8); + if ( v51 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v50[2] = v51 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v50 + 40))(v50); + v50 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v79 = v82; + goto LABEL_135; + } +LABEL_131: + v52 = (__int16 *)v50[2]; + if ( (unsigned int)v52 >= v50[3] ) + v53 = (*(int (__fastcall **)(_DWORD *))(*v50 + 36))(v50); + else + v53 = *v52; + v79 = 0; + if ( v53 == -1 ) + { + LODWORD(a1) = 0; + v79 = v82; + } +LABEL_135: + v54 = a3 == -1; + v55 = v54 & (a2 != 0); + if ( v55 ) + { + v57 = (_WORD *)a2[2]; + v58 = (unsigned int)v57 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v57; + v54 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v54 = v55; + } + } + if ( v54 == v79 ) + goto LABEL_60; + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v56 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v56; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v84 ) + { + v82 = 0; + v86 = *(_BYTE *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v96, (std::string *)(char)v84, (char)v71); + v84 = 0; +LABEL_129: + v50 = (_DWORD *)a1; + v51 = *(_DWORD *)(a1 + 8); + if ( v51 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v85 = 0; + if ( v86 ) + { + v68 = v86; + v86 = 0; + v82 = v68; + v89 = 0; + goto LABEL_60; + } + v89 = 0; +LABEL_46: + v24 = v14; + if ( v76 > 10 ) + { + if ( (unsigned __int16)(v14 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v14 - 97) <= 5u ) + { + v25 = v24 - 87; + if ( (unsigned __int16)v80 < v89 ) + goto LABEL_51; +LABEL_84: + v85 |= (unsigned __int16)(v9 * v89) > 0xFFFF - v25; + v26 = (_DWORD *)a1; + v89 = v9 * v89 + v25; + ++v84; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *))(*v26 + 40))(v26); + v26 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v83 = 1; +LABEL_57: + v30 = a3 == -1; + v31 = v30 & (a2 != 0); + if ( v31 ) + { + v43 = (_WORD *)a2[2]; + v44 = (unsigned int)v43 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v43; + v30 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v30 = v31; + } + } + if ( v30 == v83 ) + { + v82 = 1; + goto LABEL_60; + } + v14 = WORD2(a1); + if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) + goto LABEL_46; + v39 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v39; + if ( v14 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( v76 <= 10 ) + goto LABEL_93; + v24 = 0xFFFF; + } + if ( (unsigned __int16)(v14 - 65) <= 5u ) + { + v25 = v24 - 55; + goto LABEL_50; + } + } + else if ( v14 > 0x2Fu && (unsigned __int16)(v76 + 48) > v14 ) + { +LABEL_49: + v25 = v14 - 48; +LABEL_50: + if ( (unsigned __int16)v80 >= v89 ) + goto LABEL_84; +LABEL_51: + v26 = (_DWORD *)a1; + v85 = 1; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v26[2] = v27 + 2; + WORD2(a1) = -1; +LABEL_53: + v28 = (__int16 *)v26[2]; + if ( (unsigned int)v28 >= v26[3] ) + v29 = (*(int (__fastcall **)(_DWORD *))(*v26 + 36))(v26); + else + v29 = *v28; + v83 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v83 = 1; + } + goto LABEL_57; + } +LABEL_93: + v32 = v96[0]; + v82 = 0; + v33 = *(v96[0] - 3); + if ( !v33 ) + goto LABEL_61; +LABEL_94: + v77 = (std::string *)(v33 + 1); + if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) + std::string::reserve(v96, v77, (unsigned int)v71); + *((_BYTE *)v96[0] + *(v96[0] - 3)) = v84; + v40 = v96[0]; + v41 = v96[0] - 3; + if ( (_UNKNOWN *)v96[0] != &unk_51641C ) + { + *(v96[0] - 1) = 0; + *(v40 - 3) = (unsigned int)v77; + *((_BYTE *)v41 + v33 + 13) = 0; + v40 = v96[0]; + v41 = v96[0] - 3; + } + v78 = (std::string *)v41; + v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v96); + v34 = (volatile signed __int32 *)v78; + if ( !v42 ) + *a5 = 4; + if ( !v84 && !v91 && !*(v40 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v86 ) + { +LABEL_63: + *a6 = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v85 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v73 ) + v89 = -v89; + *a6 = v89; + } +LABEL_64: + if ( v82 ) + *a5 |= 2u; + result = a1; + if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v92 = a1; + std::string::_Rep::_M_dispose(v34, (int)&v95); + return v92; + } + return result; +} +// 495517: variable 'v71' is possibly undefined +// 495581: variable 'v72' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (00495740) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // esi + int v7; // ebx + std::locale::_Impl **v8; // edi + int v9; // eax + int v10; // esi + int v11; // edi + char v12; // bl + char v13; // dl + char v14; // al + char v15; // dl + wchar_t v16; // bx + __int16 v17; // ax + char v18; // cl + unsigned int v19; // eax + _DWORD *v20; // ecx + unsigned int v21; // eax + __int16 *v22; // eax + __int16 v23; // ax + char v24; // al + char v25; // dl + unsigned __int64 v26; // kr00_8 + int v27; // esi + int v28; // edi + int v29; // eax + int v30; // ecx + _DWORD *v31; // ecx + unsigned int v32; // eax + __int16 *v33; // eax + __int16 v34; // ax + char v35; // dl + char v36; // bl + unsigned int *v37; // ecx + int v38; // ebx + volatile signed __int32 *v39; // ecx + int *v40; // eax + __int64 result; // rax + bool v42; // al + __int16 *v43; // eax + __int16 v44; // cx + int v45; // ebx + int v46; // edi + unsigned int v47; // esi + int v48; // eax + unsigned int v49; // edi + _WORD *v50; // eax + unsigned int *v51; // edx + unsigned int *v52; // ecx + char v53; // al + int v54; // eax + unsigned int v55; // edx + int *v56; // edi + _DWORD *v57; // eax + _WORD *v58; // eax + __int16 v59; // ax + _WORD *v60; // eax + wchar_t *v61; // eax + int v62; // eax + int v63; // ecx + int v64; // ebx + int v65; // edi + unsigned int v66; // esi + unsigned int v67; // edi + _DWORD *v68; // ecx + unsigned int v69; // eax + __int16 *v70; // eax + __int16 v71; // ax + char v72; // al + char v73; // bl + _WORD *v74; // eax + _WORD *v75; // eax + __int16 v76; // dx + __int16 v77; // ax + __int16 *v78; // eax + __int16 v79; // cx + __int16 *v80; // eax + __int16 v81; // ax + int *v82; // eax + _WORD *v83; // eax + _DWORD *v84; // eax + char v85; // al + __int16 v86; // ax + char v87; // al + void (__cdecl *v88)(void *); // [esp+4h] [ebp-74h] + unsigned int v89; // [esp+4h] [ebp-74h] + unsigned int v90; // [esp+8h] [ebp-70h] + wchar_t *S; // [esp+18h] [ebp-60h] + bool v92; // [esp+1Fh] [ebp-59h] + UDItype n; // [esp+20h] [ebp-58h] + size_t N; // [esp+28h] [ebp-50h] + int v95; // [esp+2Ch] [ebp-4Ch] + char v96; // [esp+2Ch] [ebp-4Ch] + std::string *v97; // [esp+30h] [ebp-48h] + std::string *v98; // [esp+30h] [ebp-48h] + __int64 v99; // [esp+38h] [ebp-40h] + unsigned int *v100; // [esp+38h] [ebp-40h] + char v101; // [esp+38h] [ebp-40h] + int v102; // [esp+40h] [ebp-38h] + char v103; // [esp+44h] [ebp-34h] + char v104; // [esp+45h] [ebp-33h] + char v105; // [esp+45h] [ebp-33h] + char v106; // [esp+46h] [ebp-32h] + char v107; // [esp+46h] [ebp-32h] + bool v108; // [esp+47h] [ebp-31h] + char v109; // [esp+47h] [ebp-31h] + char v110; // [esp+47h] [ebp-31h] + std::locale::_Impl *v111; // [esp+48h] [ebp-30h] + std::locale::_Impl *v112; // [esp+48h] [ebp-30h] + __int64 v113; // [esp+48h] [ebp-30h] + char v114; // [esp+5Bh] [ebp-1Dh] BYREF + unsigned int *v115[7]; // [esp+5Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (std::locale::_Impl **)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v111 = *v8; + if ( !*v8 ) + { + v84 = operator new((struct type_info *)0xA8, v88); + v84[1] = 0; + *v84 = &off_538BE4; + v84[2] = 0; + v84[3] = 0; + *((_BYTE *)v84 + 16) = 0; + v84[5] = 0; + v84[6] = 0; + v84[7] = 0; + v84[8] = 0; + v84[9] = 0; + *((_BYTE *)v84 + 164) = 0; + v112 = (std::locale::_Impl *)v84; + std::__numpunct_cache::_M_cache((int)v84, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v112, (const std::locale::facet *)v7, v90); + v111 = *v8; + } + v9 = *(_DWORD *)(v6 + 12); + v10 = 8; + v11 = v9 & 0x4A; + if ( v11 != 64 ) + v10 = v11 == 8 ? 16 : 10; + v12 = WORD2(a1) == 0xFFFF; + v13 = v12 & ((_DWORD)a1 != 0); + if ( v13 ) + { + v80 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v80 >= *(_DWORD *)(a1 + 12) ) + { + v110 = v12 & ((_DWORD)a1 != 0); + v81 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v13 = v110; + } + else + { + v81 = *v80; + } + v12 = 0; + if ( v81 == -1 ) + { + LODWORD(a1) = 0; + v12 = v13; + } + } + v14 = a3 == -1; + v15 = v14 & (a2 != 0); + if ( v15 ) + { + v78 = (__int16 *)a2[2]; + if ( (unsigned int)v78 >= a2[3] ) + { + v109 = v15; + v86 = (*(int (**)(void))(*a2 + 36))(); + v15 = v109; + v79 = v86; + } + else + { + v79 = *v78; + } + v14 = 0; + if ( v79 == -1 ) + { + a2 = 0; + v14 = v15; + } + } + if ( v14 == v12 ) + { + v92 = 0; + v16 = 0; + v106 = 1; + v102 = 0; + v18 = *((_BYTE *)v111 + 16); + v108 = 0; +LABEL_40: + if ( v10 == 16 ) + { +LABEL_18: + N = 22; + v95 = 22; + v115[0] = (unsigned int *)&unk_51641C; + if ( !v18 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v10; + v95 = v10; + goto LABEL_42; + } + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v83 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v83 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v83; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + v17 = *((_WORD *)v111 + 56); + v18 = *((_BYTE *)v111 + 16); + v92 = v17 == (__int16)v16; + if ( v17 == v16 || *((_WORD *)v111 + 57) == v16 ) + { + if ( (!v18 || *((_WORD *)v111 + 19) != v16) && *((_WORD *)v111 + 18) != v16 ) + { + v19 = *(_DWORD *)(a1 + 8); + if ( v19 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v19 + 2; + WORD2(a1) = -1; + v106 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v106 ) + { + v102 = 0; + v108 = 0; + v18 = *((_BYTE *)v111 + 16); + if ( v10 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v16 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v18 = *((_BYTE *)v111 + 16); + } + } + else + { + v92 = 0; + } + v102 = 0; + v108 = 0; + while ( 1 ) + { + if ( v18 && *((_WORD *)v111 + 19) == v16 || *((_WORD *)v111 + 18) == v16 ) + { +LABEL_78: + v106 = 0; + goto LABEL_40; + } + if ( *((_WORD *)v111 + 60) != v16 ) + break; + v42 = !v108 || v10 == 10; + if ( !v42 ) + goto LABEL_27; + v108 = v11 == 0 || v10 == 8; + if ( !v108 ) + { + ++v102; + v108 = v42; +LABEL_31: + v20 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_73; + } + v20 = (_DWORD *)a1; + v102 = 0; + v10 = 8; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v20[2] = v21 + 2; + WORD2(a1) = -1; +LABEL_33: + v22 = (__int16 *)v20[2]; + if ( (unsigned int)v22 >= v20[3] ) + v23 = (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20); + else + v23 = *v22; + v107 = 0; + if ( v23 == -1 ) + { + LODWORD(a1) = 0; + v107 = 1; + } + goto LABEL_37; + } +LABEL_73: + (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); + v20 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v107 = 1; +LABEL_37: + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v43 = (__int16 *)a2[2]; + if ( (unsigned int)v43 >= a2[3] ) + { + v101 = v25; + v77 = (*(int (**)(void))(*a2 + 36))(); + v25 = v101; + v44 = v77; + } + else + { + v44 = *v43; + } + v24 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + if ( v24 == v107 ) + { + v106 = 1; + v18 = *((_BYTE *)v111 + 16); + goto LABEL_40; + } + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v60 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v60 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v60; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + v18 = *((_BYTE *)v111 + 16); + if ( !v108 ) + goto LABEL_78; + } + if ( !v108 ) + goto LABEL_78; +LABEL_27: + if ( *((_WORD *)v111 + 58) != v16 && *((_WORD *)v111 + 59) != v16 ) + { + v106 = 0; + v108 = 1; + goto LABEL_40; + } + if ( v10 == 16 || v11 == 0 ) + { + v102 = 0; + v10 = 16; + v108 = 0; + goto LABEL_31; + } + v106 = 0; + N = v10; + v95 = v10; + v108 = 1; +LABEL_42: + v115[0] = (unsigned int *)&unk_51641C; + if ( v18 ) +LABEL_19: + std::string::reserve(v115, (std::string *)0x20, (unsigned int)v88); +LABEL_43: + n = 0x8000000000000000LL; + if ( !v92 ) + n = 0x7FFFFFFFFFFFFFFFLL; + v99 = v10; + v26 = n / v10; + v104 = *((_BYTE *)v111 + 164); + if ( v104 ) + { + if ( v106 ) + { + v87 = v106; + v103 = 0; + v27 = 0; + v28 = 0; + v106 = 0; + v104 = v87; + goto LABEL_62; + } + v103 = 0; + v27 = 0; + v28 = 0; + S = (wchar_t *)((char *)v111 + 120); + while ( !*((_BYTE *)v111 + 16) || *((_WORD *)v111 + 19) != v16 ) + { + if ( v16 == *((_WORD *)v111 + 18) ) + goto LABEL_96; + v61 = wmemchr(S, v16, N); + if ( !v61 ) + goto LABEL_96; + v62 = (char *)v61 - (char *)S; + v63 = v62 >> 1; + if ( v62 > 30 ) + v63 -= 6; + if ( v26 >= __PAIR64__(v28, v27) ) + { + v64 = v28 * v99 + v27 * HIDWORD(v99); + v65 = ((unsigned int)v99 * (unsigned __int64)(unsigned int)v27) >> 32; + v66 = v99 * v27; + v67 = v64 + v65; + v103 |= n - v63 < __PAIR64__(v67, v66); + v28 = (v63 + __PAIR64__(v67, v66)) >> 32; + v27 = v63 + v66; + ++v102; + goto LABEL_130; + } + v68 = (_DWORD *)a1; + v103 = v104; + v69 = *(_DWORD *)(a1 + 8); + if ( v69 < *(_DWORD *)(a1 + 12) ) + { +LABEL_131: + v68[2] = v69 + 2; + WORD2(a1) = -1; + goto LABEL_132; + } +LABEL_145: + (*(void (__fastcall **)(_DWORD *))(*v68 + 40))(v68); + v68 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v96 = v104; + goto LABEL_136; + } +LABEL_132: + v70 = (__int16 *)v68[2]; + if ( (unsigned int)v70 >= v68[3] ) + v71 = (*(int (__fastcall **)(_DWORD *))(*v68 + 36))(v68); + else + v71 = *v70; + v96 = 0; + if ( v71 == -1 ) + { + LODWORD(a1) = 0; + v96 = v104; + } +LABEL_136: + v72 = a3 == -1; + v73 = v72 & (a2 != 0); + if ( v73 ) + { + v75 = (_WORD *)a2[2]; + v76 = (unsigned int)v75 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v75; + v72 = 0; + if ( v76 == -1 ) + { + a2 = 0; + v72 = v73; + } + } + if ( v96 == v72 ) + goto LABEL_62; + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v74 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v74 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v74; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v102 ) + { + v104 = 0; + v106 = *((_BYTE *)v111 + 16); + goto LABEL_62; + } + std::string::push_back(v115, (std::string *)(char)v102, v89); + v102 = 0; +LABEL_130: + v68 = (_DWORD *)a1; + v69 = *(_DWORD *)(a1 + 8); + if ( v69 < *(_DWORD *)(a1 + 12) ) + goto LABEL_131; + goto LABEL_145; + } + v103 = 0; + if ( v106 ) + { + v85 = v106; + v27 = 0; + v106 = 0; + v28 = 0; + v104 = v85; + goto LABEL_62; + } + v27 = 0; + v28 = 0; +LABEL_48: + v29 = v16; + if ( v95 > 10 ) + { + if ( (unsigned __int16)(v16 - 48) <= 9u ) + { +LABEL_51: + v30 = v16 - 48; +LABEL_52: + if ( v26 >= __PAIR64__(v28, v27) ) + goto LABEL_87; +LABEL_53: + v31 = (_DWORD *)a1; + v103 = 1; + v32 = *(_DWORD *)(a1 + 8); + if ( v32 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_88; +LABEL_54: + v31[2] = v32 + 2; + WORD2(a1) = -1; +LABEL_55: + v33 = (__int16 *)v31[2]; + if ( (unsigned int)v33 >= v31[3] ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v31 + 36))(v31); + else + v34 = *v33; + v105 = 0; + if ( v34 == -1 ) + { + LODWORD(a1) = 0; + v105 = 1; + } + goto LABEL_59; + } + while ( 1 ) + { + v30 = v29 - 87; + if ( (unsigned __int16)(v16 - 97) <= 5u ) + goto LABEL_52; + if ( (unsigned __int16)(v16 - 65) > 5u ) + goto LABEL_96; + v30 = v29 - 55; + if ( v26 < __PAIR64__(v28, v27) ) + goto LABEL_53; +LABEL_87: + v45 = v28 * v99 + v27 * HIDWORD(v99); + v46 = ((unsigned int)v99 * (unsigned __int64)(unsigned int)v27) >> 32; + v47 = v99 * v27; + v48 = v30; + v49 = v45 + v46; + v103 |= n - v30 < __PAIR64__(v49, v47); + v31 = (_DWORD *)a1; + v28 = (v48 + __PAIR64__(v49, v47)) >> 32; + v27 = v48 + v47; + ++v102; + v32 = *(_DWORD *)(a1 + 8); + if ( v32 < *(_DWORD *)(a1 + 12) ) + goto LABEL_54; +LABEL_88: + (*(void (__fastcall **)(_DWORD *))(*v31 + 40))(v31); + v31 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_55; + v105 = 1; +LABEL_59: + v35 = a3 == -1; + v36 = v35 & (a2 != 0); + if ( v36 ) + { + v58 = (_WORD *)a2[2]; + v59 = (unsigned int)v58 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v58; + v35 = 0; + if ( v59 == -1 ) + { + a2 = 0; + v35 = v36; + } + } + if ( v35 == v105 ) + break; + v16 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_48; + v50 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v50; + if ( v16 != 0xFFFF ) + goto LABEL_48; + LODWORD(a1) = 0; + if ( v95 <= 10 ) + goto LABEL_96; + v29 = 0xFFFF; + } + v104 = 1; +LABEL_62: + v37 = v115[0]; + v38 = *(v115[0] - 3); + if ( v38 ) + goto LABEL_97; +LABEL_63: + v39 = (volatile signed __int32 *)(v37 - 3); + if ( v102 || v108 ) + goto LABEL_106; + goto LABEL_65; + } + if ( v16 > 0x2Fu && (unsigned __int16)(v95 + 48) > v16 ) + goto LABEL_51; +LABEL_96: + v37 = v115[0]; + v104 = 0; + v38 = *(v115[0] - 3); + if ( !v38 ) + goto LABEL_63; +LABEL_97: + v97 = (std::string *)(v38 + 1); + if ( v38 + 1 > *(v37 - 2) || (int)*(v37 - 1) > 0 ) + std::string::reserve(v115, v97, v89); + *((_BYTE *)v115[0] + *(v115[0] - 3)) = v102; + v51 = v115[0]; + v52 = v115[0] - 3; + if ( (_UNKNOWN *)v115[0] != &unk_51641C ) + { + *(v115[0] - 1) = 0; + *(v51 - 3) = (unsigned int)v97; + *((_BYTE *)v52 + v38 + 13) = 0; + v51 = v115[0]; + v52 = v115[0] - 3; + } + v98 = (std::string *)v51; + v100 = v52; + v53 = std::__verify_grouping(*((char **)v111 + 2), *((_DWORD *)v111 + 3), (const char **)v115); + v39 = (volatile signed __int32 *)v100; + if ( !v53 ) + *a5 = 4; + if ( !v102 && !v108 && !*((_DWORD *)v98 - 3) ) + goto LABEL_65; +LABEL_106: + if ( v106 ) + { +LABEL_65: + v40 = a6; + *a6 = 0; + v40[1] = 0; + *a5 = 4; + goto LABEL_66; + } + if ( v103 ) + { + v54 = 0; + v55 = 0x80000000; + if ( !v92 ) + { + v54 = -1; + v55 = 0x7FFFFFFF; + } + v56 = a6; + *a6 = v54; + v57 = a5; + v56[1] = v55; + *v57 = 4; + } + else + { + if ( v92 ) + { + v27 = -v27; + v28 = (unsigned __int64)-__SPAIR64__(v28, v27) >> 32; + } + v82 = a6; + *a6 = v27; + v82[1] = v28; + } +LABEL_66: + if ( v104 ) + *a5 |= 2u; + result = a1; + if ( v39 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v113 = a1; + std::string::_Rep::_M_dispose(v39, (int)&v114); + return v113; + } + return result; +} +// 4961B7: variable 'v88' is possibly undefined +// 496227: variable 'v90' is possibly undefined +// 495D2E: variable 'v89' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (004963E0) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + int v6; // edi + int v7; // esi + int v8; // ebx + int v9; // eax + int v10; // edi + int v11; // eax + char v12; // dl + char v13; // si + char v14; // al + char v15; // si + wchar_t v16; // si + __int16 v17; // ax + char v18; // cl + unsigned int v19; // eax + _DWORD *v20; // ecx + unsigned int v21; // eax + __int16 *v22; // eax + __int16 v23; // ax + char v24; // al + char v25; // dl + unsigned __int64 v26; // kr00_8 + int v27; // ecx + int v28; // ecx + _DWORD *v29; // ecx + unsigned int v30; // eax + __int16 *v31; // eax + __int16 v32; // ax + char v33; // di + char v34; // dl + char v35; // si + unsigned int *v36; // ecx + int v37; // esi + volatile signed __int32 *v38; // ecx + _DWORD *v39; // eax + __int64 result; // rax + bool v41; // al + __int16 *v42; // eax + __int16 v43; // cx + int v44; // edi + int v45; // esi + _WORD *v46; // eax + unsigned int *v47; // edx + unsigned int *v48; // ecx + char v49; // al + _WORD *v50; // eax + __int16 v51; // ax + _WORD *v52; // eax + wchar_t *v53; // eax + int v54; // eax + int v55; // ecx + _DWORD *v56; // ecx + unsigned int v57; // eax + __int16 *v58; // eax + __int16 v59; // ax + char v60; // di + char v61; // al + char v62; // si + _WORD *v63; // eax + _WORD *v64; // eax + __int16 v65; // dx + __int16 v66; // ax + __int16 *v67; // eax + __int16 v68; // cx + _WORD *v69; // eax + __int16 v70; // ax + _DWORD *v71; // eax + _WORD *v72; // eax + wchar_t v73; // ax + std::locale::_Impl *v74; // eax + std::locale::_Impl *v75; // ebx + char v76; // al + __int16 v77; // ax + void (__cdecl *v78)(void *); // [esp+4h] [ebp-74h] + unsigned int v79; // [esp+4h] [ebp-74h] + unsigned int v80; // [esp+8h] [ebp-70h] + bool v81; // [esp+1Fh] [ebp-59h] + size_t N; // [esp+20h] [ebp-58h] + int S; // [esp+24h] [ebp-54h] + wchar_t *Sa; // [esp+24h] [ebp-54h] + unsigned int *v85; // [esp+28h] [ebp-50h] + int v86; // [esp+30h] [ebp-48h] + __int64 v87; // [esp+30h] [ebp-48h] + unsigned int *v88; // [esp+30h] [ebp-48h] + char v89; // [esp+38h] [ebp-40h] + char v90; // [esp+3Ah] [ebp-3Eh] + _BYTE v91[5]; // [esp+3Bh] [ebp-3Dh] + char v92; // [esp+3Bh] [ebp-3Dh] + char v93; // [esp+40h] [ebp-38h] + unsigned __int64 v94; // [esp+40h] [ebp-38h] + char v95; // [esp+40h] [ebp-38h] + int *v96; // [esp+48h] [ebp-30h] + bool v97; // [esp+48h] [ebp-30h] + __int64 v98; // [esp+48h] [ebp-30h] + char v99; // [esp+5Bh] [ebp-1Dh] BYREF + unsigned int *v100[7]; // [esp+5Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v96 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v74 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v78); + *((_DWORD *)v74 + 1) = 0; + v75 = v74; + *(_DWORD *)v74 = &off_538BE4; + *((_DWORD *)v74 + 2) = 0; + *((_DWORD *)v74 + 3) = 0; + *((_BYTE *)v74 + 16) = 0; + *((_DWORD *)v74 + 5) = 0; + *((_DWORD *)v74 + 6) = 0; + *((_DWORD *)v74 + 7) = 0; + *((_DWORD *)v74 + 8) = 0; + *((_DWORD *)v74 + 9) = 0; + *((_BYTE *)v74 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v74, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v75, (const std::locale::facet *)v7, v80); + v8 = *v96; + } + v9 = *(_DWORD *)(v6 + 12); + v10 = 8; + v11 = v9 & 0x4A; + v86 = v11; + if ( v11 != 64 ) + v10 = v11 == 8 ? 16 : 10; + v12 = WORD2(a1) == 0xFFFF; + v13 = v12 & ((_DWORD)a1 != 0); + if ( v13 ) + { + v69 = *(_WORD **)(a1 + 8); + v70 = (unsigned int)v69 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v69; + v12 = 0; + if ( v70 == -1 ) + { + LODWORD(a1) = 0; + v12 = v13; + } + } + v14 = a3 == -1; + v15 = v14 & (a2 != 0); + if ( v15 ) + { + v67 = (__int16 *)a2[2]; + if ( (unsigned int)v67 >= a2[3] ) + { + v95 = v12; + v77 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v12 = v95; + v68 = v77; + } + else + { + v68 = *v67; + } + v14 = 0; + if ( v68 == -1 ) + { + a2 = 0; + v14 = v15; + } + } + if ( v12 == v14 ) + { + v81 = 0; + v18 = *(_BYTE *)(v8 + 16); + v16 = 0; + v91[0] = 1; + *(_DWORD *)&v91[1] = 0; + v97 = 0; +LABEL_40: + if ( v10 == 16 ) + { +LABEL_18: + N = 22; + S = 22; + v100[0] = (unsigned int *)&unk_51641C; + if ( !v18 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v10; + S = v10; + goto LABEL_42; + } + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v72 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v72; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + v17 = *(_WORD *)(v8 + 112); + v18 = *(_BYTE *)(v8 + 16); + v81 = v17 == (__int16)v16; + if ( v17 == v16 || *(_WORD *)(v8 + 114) == v16 ) + { + if ( (!v18 || *(_WORD *)(v8 + 38) != v16) && *(_WORD *)(v8 + 36) != v16 ) + { + v19 = *(_DWORD *)(a1 + 8); + if ( v19 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v19 + 2; + WORD2(a1) = -1; + v91[0] = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v91[0] ) + { + *(_DWORD *)&v91[1] = 0; + v18 = *(_BYTE *)(v8 + 16); + v97 = 0; + if ( v10 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v73 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v18 = *(_BYTE *)(v8 + 16); + v16 = v73; + } + } + else + { + v81 = 0; + } + *(_DWORD *)&v91[1] = 0; + v97 = 0; + while ( 1 ) + { + if ( v18 && *(_WORD *)(v8 + 38) == v16 || *(_WORD *)(v8 + 36) == v16 ) + { +LABEL_76: + v91[0] = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v16 ) + break; + v41 = !v97 || v10 == 10; + if ( !v41 ) + goto LABEL_27; + v97 = v86 == 0 || v10 == 8; + if ( !v97 ) + { + ++*(_DWORD *)&v91[1]; + v97 = v41; +LABEL_31: + v20 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v20 = (_DWORD *)a1; + *(_DWORD *)&v91[1] = 0; + v10 = 8; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v20[2] = v21 + 2; + WORD2(a1) = -1; +LABEL_33: + v22 = (__int16 *)v20[2]; + if ( (unsigned int)v22 >= v20[3] ) + v23 = (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20); + else + v23 = *v22; + v93 = 0; + if ( v23 == -1 ) + { + LODWORD(a1) = 0; + v93 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); + v20 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v93 = 1; +LABEL_37: + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v42 = (__int16 *)a2[2]; + if ( (unsigned int)v42 >= a2[3] ) + { + v92 = v25; + v66 = (*(int (**)(void))(*a2 + 36))(); + v25 = v92; + v43 = v66; + } + else + { + v43 = *v42; + } + v24 = 0; + if ( v43 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + if ( v24 == v93 ) + { + v91[0] = 1; + v18 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v52 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v52; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + v18 = *(_BYTE *)(v8 + 16); + if ( !v97 ) + goto LABEL_76; + } + if ( !v97 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v16 && *(_WORD *)(v8 + 118) != v16 ) + { + v91[0] = 0; + v97 = 1; + goto LABEL_40; + } + if ( v10 == 16 || v86 == 0 ) + { + *(_DWORD *)&v91[1] = 0; + v10 = 16; + v97 = 0; + goto LABEL_31; + } + v91[0] = 0; + N = v10; + S = v10; + v97 = 1; +LABEL_42: + v100[0] = (unsigned int *)&unk_51641C; + if ( v18 ) +LABEL_19: + std::string::reserve(v100, (std::string *)0x20, (unsigned int)v78); +LABEL_43: + v87 = v10; + v26 = 0xFFFFFFFFFFFFFFFFLL / v10; + v89 = *(_BYTE *)(v8 + 164); + if ( v89 ) + { + if ( v91[0] ) + { + v94 = 0LL; + v89 = v91[0]; + v90 = 0; + v91[0] = 0; +LABEL_60: + v36 = v100[0]; + v37 = *(v100[0] - 3); + if ( v37 ) + goto LABEL_94; +LABEL_61: + v38 = (volatile signed __int32 *)(v36 - 3); + if ( *(_DWORD *)&v91[1] || v97 ) + goto LABEL_103; + goto LABEL_63; + } + v90 = 0; + Sa = (wchar_t *)(v8 + 120); + v94 = 0LL; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v16 ) + { + if ( v16 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v53 = wmemchr(Sa, v16, N); + if ( !v53 ) + goto LABEL_93; + v54 = (char *)v53 - (char *)Sa; + v55 = v54 >> 1; + if ( v54 > 30 ) + v55 -= 6; + if ( v26 >= v94 ) + { + v90 |= __PAIR64__(~(v55 >> 31), ~v55) < v87 * v94; + ++*(_DWORD *)&v91[1]; + v94 = v87 * v94 + v55; + goto LABEL_129; + } + v56 = (_DWORD *)a1; + v90 = v89; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v56[2] = v57 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v56 + 40))(v56); + v56 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v60 = v89; + goto LABEL_135; + } +LABEL_131: + v58 = (__int16 *)v56[2]; + if ( (unsigned int)v58 >= v56[3] ) + v59 = (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56); + else + v59 = *v58; + v60 = 0; + if ( v59 == -1 ) + { + LODWORD(a1) = 0; + v60 = v89; + } +LABEL_135: + v61 = a3 == -1; + v62 = v61 & (a2 != 0); + if ( v62 ) + { + v64 = (_WORD *)a2[2]; + v65 = (unsigned int)v64 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v64; + v61 = 0; + if ( v65 == -1 ) + { + a2 = 0; + v61 = v62; + } + } + if ( v61 == v60 ) + goto LABEL_60; + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v63 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v63 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v63; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !*(_DWORD *)&v91[1] ) + { + v89 = 0; + *(_DWORD *)v91 = *(unsigned __int8 *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v100, (std::string *)v91[1], v79); + *(_DWORD *)&v91[1] = 0; +LABEL_129: + v56 = (_DWORD *)a1; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v90 = 0; + if ( v91[0] ) + { + v76 = v91[0]; + v94 = 0LL; + v91[0] = 0; + v89 = v76; + goto LABEL_60; + } + v94 = 0LL; +LABEL_46: + v27 = v16; + if ( S > 10 ) + { + if ( (unsigned __int16)(v16 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v16 - 97) <= 5u ) + { + v28 = v27 - 87; + if ( v26 < v94 ) + goto LABEL_51; +LABEL_84: + v44 = v28 >> 31; + v45 = v28; + v90 |= __PAIR64__(~(v28 >> 31), ~v28) < v87 * v94; + v29 = (_DWORD *)a1; + v94 = v87 * v94 + __PAIR64__(v44, v45); + ++*(_DWORD *)&v91[1]; + v30 = *(_DWORD *)(a1 + 8); + if ( v30 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *))(*v29 + 40))(v29); + v29 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v33 = 1; +LABEL_57: + v34 = a3 == -1; + v35 = v34 & (a2 != 0); + if ( v35 ) + { + v50 = (_WORD *)a2[2]; + v51 = (unsigned int)v50 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v50; + v34 = 0; + if ( v51 == -1 ) + { + a2 = 0; + v34 = v35; + } + } + if ( v34 == v33 ) + { + v89 = 1; + goto LABEL_60; + } + v16 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_46; + v46 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v46; + if ( v16 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( S <= 10 ) + goto LABEL_93; + v27 = 0xFFFF; + } + if ( (unsigned __int16)(v16 - 65) <= 5u ) + { + v28 = v27 - 55; + goto LABEL_50; + } + } + else if ( v16 > 0x2Fu && (unsigned __int16)(S + 48) > v16 ) + { +LABEL_49: + v28 = v16 - 48; +LABEL_50: + if ( v26 >= v94 ) + goto LABEL_84; +LABEL_51: + v29 = (_DWORD *)a1; + v90 = 1; + v30 = *(_DWORD *)(a1 + 8); + if ( v30 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v29[2] = v30 + 2; + WORD2(a1) = -1; +LABEL_53: + v31 = (__int16 *)v29[2]; + if ( (unsigned int)v31 >= v29[3] ) + v32 = (*(int (__fastcall **)(_DWORD *))(*v29 + 36))(v29); + else + v32 = *v31; + v33 = 0; + if ( v32 == -1 ) + { + LODWORD(a1) = 0; + v33 = 1; + } + goto LABEL_57; + } +LABEL_93: + v36 = v100[0]; + v89 = 0; + v37 = *(v100[0] - 3); + if ( !v37 ) + goto LABEL_61; +LABEL_94: + if ( v37 + 1 > *(v36 - 2) || (int)*(v36 - 1) > 0 ) + std::string::reserve(v100, (std::string *)(v37 + 1), v79); + *((_BYTE *)v100[0] + *(v100[0] - 3)) = v91[1]; + v47 = v100[0]; + v48 = v100[0] - 3; + if ( (_UNKNOWN *)v100[0] != &unk_51641C ) + { + *(v100[0] - 1) = 0; + *(v47 - 3) = v37 + 1; + *((_BYTE *)v48 + v37 + 13) = 0; + v47 = v100[0]; + v48 = v100[0] - 3; + } + v85 = v48; + v88 = v47; + v49 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v100); + v38 = (volatile signed __int32 *)v85; + if ( !v49 ) + *a5 = 4; + if ( !*(_DWORD *)&v91[1] && !v97 && !*(v88 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v91[0] ) + { +LABEL_63: + v39 = a6; + *a6 = 0; + v39[1] = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v90 ) + { + v71 = a6; + *a6 = -1; + v71[1] = -1; + *a5 = 4; + } + else + { + if ( v81 ) + v94 = -(__int64)v94; + *(_QWORD *)a6 = v94; + } +LABEL_64: + if ( v89 ) + *a5 |= 2u; + result = a1; + if ( v38 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v98 = a1; + std::string::_Rep::_M_dispose(v38, (int)&v99); + return v98; + } + return result; +} +// 496E57: variable 'v78' is possibly undefined +// 496EC1: variable 'v80' is possibly undefined +// 4969B8: variable 'v79' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (00497080) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_float( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + unsigned int **a6) +{ + unsigned int **v6; // ebx + unsigned __int8 v7; // dl + char v8; // al + char v9; // si + wchar_t v10; // si + char v11; // al + int v12; // esi + char v13; // cl + unsigned int *v14; // eax + _DWORD *v15; // ecx + unsigned int v16; // eax + __int16 *v17; // eax + __int16 v18; // ax + char v19; // di + char v20; // dl + char v21; // si + _WORD *v22; // eax + int v23; // edi + unsigned int *v24; // eax + unsigned int v25; // eax + int v26; // eax + char v27; // al + bool v28; // zf + unsigned int *v29; // edx + int v30; // esi + unsigned int *v31; // eax + unsigned int *v32; // edx + int v33; // edi + unsigned int *v34; // edx + unsigned int *v35; // eax + _DWORD *v36; // ecx + unsigned int v37; // eax + __int16 *v38; // eax + __int16 v39; // ax + char v40; // di + char v41; // dl + char v42; // si + int v43; // esi + char v44; // al + __int64 v45; // kr00_8 + wchar_t *v47; // eax + int v48; // esi + unsigned int *v49; // eax + _WORD *v50; // eax + __int16 v51; // ax + _WORD *v52; // eax + __int16 v53; // ax + int v54; // edi + unsigned int *v55; // eax + _DWORD *v56; // ecx + unsigned int v57; // eax + __int16 *v58; // eax + __int16 v59; // ax + char v60; // si + char v61; // al + char v62; // di + __int16 v63; // dx + int v64; // edi + char v65; // cl + unsigned int *v66; // eax + char v67; // si + unsigned int *v68; // eax + wchar_t *v69; // eax + _WORD *v70; // eax + __int16 v71; // dx + _WORD *v72; // eax + unsigned int *v73; // eax + unsigned int *v74; // edx + __int16 v75; // dx + char v76; // dl + unsigned int **v77; // edi + _DWORD *v78; // ecx + unsigned int v79; // eax + __int16 *v80; // eax + __int16 v81; // ax + char v82; // bl + char v83; // al + char v84; // dl + int v85; // edx + unsigned int v86; // ebx + unsigned int *v87; // eax + __int16 *v88; // eax + __int16 v89; // cx + _WORD *v90; // eax + __int16 *v91; // eax + __int16 v92; // cx + unsigned __int8 v93; // si + _WORD *v94; // eax + __int16 v95; // ax + __int16 v96; // ax + _WORD *v97; // eax + unsigned int v98; // eax + unsigned int *v99; // eax + wchar_t *v100; // eax + __int16 v101; // ax + unsigned int v102; // [esp+4h] [ebp-54h] + std::string *v103; // [esp+18h] [ebp-40h] + std::string *v104; // [esp+18h] [ebp-40h] + std::string *v105; // [esp+18h] [ebp-40h] + wchar_t *S; // [esp+1Ch] [ebp-3Ch] + char v107; // [esp+21h] [ebp-37h] + __int16 v108; // [esp+22h] [ebp-36h] + bool v109; // [esp+23h] [ebp-35h] + int v110; // [esp+24h] [ebp-34h] + char v111; // [esp+28h] [ebp-30h] + char v112; // [esp+28h] [ebp-30h] + unsigned int *v113; // [esp+28h] [ebp-30h] + char v114; // [esp+28h] [ebp-30h] + int v115; // [esp+28h] [ebp-30h] + char v116; // [esp+28h] [ebp-30h] + unsigned __int8 v117; // [esp+28h] [ebp-30h] + int v118; // [esp+2Ch] [ebp-2Ch] + char v119; // [esp+3Bh] [ebp-1Dh] BYREF + unsigned int *v120[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v6 = a6; + v118 = std::__use_cache>::operator()((int *)(a4 + 108)); + v7 = WORD2(a1) == 0xFFFF; + if ( (v7 & ((_DWORD)a1 != 0)) != 0 ) + { + v93 = v7 & ((_DWORD)a1 != 0); + v94 = *(_WORD **)(a1 + 8); + v95 = (unsigned int)v94 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v94; + v7 = 0; + if ( v95 == -1 ) + { + LODWORD(a1) = 0; + v7 = v93; + } + } + v8 = a3 == -1; + v9 = v8 & (a2 != 0); + if ( v9 ) + { + v91 = (__int16 *)a2[2]; + if ( (unsigned int)v91 >= a2[3] ) + { + v117 = v7; + v101 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v7 = v117; + v92 = v101; + } + else + { + v92 = *v91; + } + v8 = 0; + if ( v92 == -1 ) + { + a2 = 0; + v8 = v9; + } + } + if ( v8 == v7 ) + { + v110 = 0; + v10 = 0; + v111 = 0; + v109 = 1; + v11 = *(_BYTE *)(v118 + 16); + goto LABEL_5; + } + v10 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v97 = *(_WORD **)(a1 + 8); + v10 = (unsigned int)v97 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v97; + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + v75 = *(_WORD *)(v118 + 114); + v11 = *(_BYTE *)(v118 + 16); + if ( v75 != v10 && *(_WORD *)(v118 + 112) != v10 + || v11 && *(_WORD *)(v118 + 38) == v10 + || *(_WORD *)(v118 + 36) == v10 ) + { + goto LABEL_167; + } + std::string::push_back(v6, (std::string *)(2 * (v75 != (__int16)v10) + 43), v102); + v98 = *(_DWORD *)(a1 + 8); + if ( v98 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v98 + 2; + WORD2(a1) = -1; + v109 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v109 ) + { + v10 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v11 = *(_BYTE *)(v118 + 16); +LABEL_167: + v110 = 0; + v76 = 0; + v77 = v6; + while ( 1 ) + { + if ( v11 && *(_WORD *)(v118 + 38) == v10 ) + { + v111 = v76; + v6 = v77; + v120[0] = (unsigned int *)&unk_51641C; + v109 = 0; + goto LABEL_162; + } + if ( *(_WORD *)(v118 + 36) == v10 || *(_WORD *)(v118 + 120) != v10 ) + { + v111 = v76; + v6 = v77; + v109 = 0; + goto LABEL_5; + } + if ( v76 ) + goto LABEL_173; + v85 = *(*v77 - 3); + v86 = v85 + 1; + if ( v85 + 1 > *(*v77 - 2) || (int)*(*v77 - 1) > 0 ) + { + v115 = *(*v77 - 3); + std::string::reserve(v77, (std::string *)(v85 + 1), v102); + v85 = v115; + } + *((_BYTE *)*v77 + *(*v77 - 3)) = 48; + v87 = *v77; + if ( *v77 == (unsigned int *)&unk_51641C ) + { +LABEL_173: + v78 = (_DWORD *)a1; + ++v110; + v79 = *(_DWORD *)(a1 + 8); + if ( v79 < *(_DWORD *)(a1 + 12) ) + goto LABEL_174; + } + else + { + *(v87 - 1) = 0; + *(v87 - 3) = v86; + *((_BYTE *)v87 + v85 + 1) = 0; + v78 = (_DWORD *)a1; + ++v110; + v79 = *(_DWORD *)(a1 + 8); + if ( v79 < *(_DWORD *)(a1 + 12) ) + { +LABEL_174: + v78[2] = v79 + 2; + WORD2(a1) = -1; + goto LABEL_175; + } + } + (*(void (__fastcall **)(_DWORD *))(*v78 + 40))(v78); + v78 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v82 = 1; + goto LABEL_179; + } +LABEL_175: + v80 = (__int16 *)v78[2]; + if ( (unsigned int)v80 >= v78[3] ) + v81 = (*(int (__fastcall **)(_DWORD *))(*v78 + 36))(v78); + else + v81 = *v80; + v82 = 0; + if ( v81 == -1 ) + { + LODWORD(a1) = 0; + v82 = 1; + } +LABEL_179: + v83 = a3 == -1; + v84 = v83 & (a2 != 0); + if ( v84 ) + { + v88 = (__int16 *)a2[2]; + if ( (unsigned int)v88 >= a2[3] ) + { + v116 = v84; + v96 = (*(int (**)(void))(*a2 + 36))(); + v84 = v116; + v89 = v96; + } + else + { + v89 = *v88; + } + v83 = 0; + if ( v89 == -1 ) + { + a2 = 0; + v83 = v84; + } + } + if ( v83 == v82 ) + { + v111 = 1; + v6 = v77; + v109 = 1; + v11 = *(_BYTE *)(v118 + 16); + goto LABEL_5; + } + v10 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v90 = *(_WORD **)(a1 + 8); + v10 = (unsigned int)v90 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v90; + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + v76 = 1; + v11 = *(_BYTE *)(v118 + 16); + } + } + v110 = 0; + v111 = 0; + v11 = *(_BYTE *)(v118 + 16); +LABEL_5: + v120[0] = (unsigned int *)&unk_51641C; + if ( v11 ) +LABEL_162: + std::string::reserve(v120, (std::string *)0x20, v102); + v107 = *(_BYTE *)(v118 + 164); + if ( !v107 ) + { + if ( !v109 ) + { + v108 = 0; +LABEL_9: + if ( (unsigned __int16)(v10 - 48) <= 9u ) + { + v112 = v10; + v12 = *(*v6 - 3); + if ( v12 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v12 + 1), v102); + v13 = v112; + v111 = 1; + *((_BYTE *)*v6 + *(*v6 - 3)) = v13; + v14 = *v6; + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v14 - 1) = 0; + *(v14 - 3) = v12 + 1; + *((_BYTE *)v14 + v12 + 1) = 0; + } + goto LABEL_15; + } + while ( 1 ) + { + if ( *(_WORD *)(v118 + 36) == v10 && !v108 ) + { + v108 = 1; + std::string::push_back(v6, (std::string *)0x2E, v102); +LABEL_15: + v15 = (_DWORD *)a1; + v16 = *(_DWORD *)(a1 + 8); + if ( v16 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_47; +LABEL_16: + v15[2] = v16 + 2; + WORD2(a1) = -1; +LABEL_17: + v17 = (__int16 *)v15[2]; + if ( (unsigned int)v17 >= v15[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v15 + 36))(v15); + else + v18 = *v17; + v19 = 0; + if ( v18 == -1 ) + { + LODWORD(a1) = 0; + v19 = 1; + } + goto LABEL_21; + } + if ( *(_WORD *)(v118 + 148) != v10 && *(_WORD *)(v118 + 160) != v10 ) + goto LABEL_74; + v111 &= HIBYTE(v108) ^ 1; + if ( !v111 ) + goto LABEL_74; + v23 = *(*v6 - 3); + if ( v23 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v23 + 1), v102); + *((_BYTE *)*v6 + *(*v6 - 3)) = 101; + v24 = *v6; + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v24 - 1) = 0; + *(v24 - 3) = v23 + 1; + *((_BYTE *)v24 + v23 + 1) = 0; + } + v25 = *(_DWORD *)(a1 + 8); + if ( v25 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v25 + 2; + WORD2(a1) = -1; + if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) + goto LABEL_245; + v10 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v100 = *(wchar_t **)(a1 + 8); + if ( (unsigned int)v100 >= *(_DWORD *)(a1 + 12) ) + v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + else + v10 = *v100; + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + if ( *(_WORD *)(v118 + 114) == v10 ) + { + v26 = 43; + } + else + { + if ( *(_WORD *)(v118 + 112) != v10 ) + { + HIBYTE(v108) = v111; + goto LABEL_9; + } + v26 = 45; + } + std::string::push_back(v6, (std::string *)v26, v102); + v15 = (_DWORD *)a1; + HIBYTE(v108) = v111; + v16 = *(_DWORD *)(a1 + 8); + if ( v16 < *(_DWORD *)(a1 + 12) ) + goto LABEL_16; +LABEL_47: + (*(void (__fastcall **)(_DWORD *))(*v15 + 40))(v15); + v15 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_17; + v19 = 1; +LABEL_21: + v20 = a3 == -1; + v21 = v20 & (a2 != 0); + if ( v21 ) + { + v50 = (_WORD *)a2[2]; + v51 = (unsigned int)v50 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v50; + v20 = 0; + if ( v51 == -1 ) + { + a2 = 0; + v20 = v21; + } + } + if ( v20 == v19 ) + goto LABEL_74; + v10 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_9; + v22 = *(_WORD **)(a1 + 8); + v10 = (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v22; + if ( v10 != 0xFFFF ) + goto LABEL_9; + LODWORD(a1) = 0; + } + } +LABEL_233: + v29 = v120[0]; + if ( *(v120[0] - 3) ) + goto LABEL_77; + goto LABEL_82; + } + if ( v109 ) + goto LABEL_233; + v108 = 0; + v27 = *(_BYTE *)(v118 + 16); + S = (wchar_t *)(v118 + 120); + while ( 1 ) + { + while ( 1 ) + { + if ( v27 && *(_WORD *)(v118 + 38) == v10 ) + { + LOBYTE(v108) = HIBYTE(v108) | v108; + if ( (_BYTE)v108 ) + { + v29 = v120[0]; + v30 = *(v120[0] - 3); +LABEL_79: + if ( !v30 ) + goto LABEL_82; + goto LABEL_80; + } + if ( !v110 ) + { + v99 = *v6; + if ( (int)*(*v6 - 1) <= 0 ) + { + if ( v99 != (unsigned int *)&unk_51641C ) + { + *(v99 - 1) = 0; + *(v99 - 3) = 0; + *(_BYTE *)v99 = 0; + } + } + else + { + if ( v99 != (unsigned int *)&unk_51641C ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v99 - 3, (int)&v119); + *v6 = (unsigned int *)&unk_51641C; + } + goto LABEL_233; + } + v64 = *(v120[0] - 3); + if ( v64 + 1 > *(v120[0] - 2) || *((int *)v120[0] - 1) > 0 ) + std::string::reserve(v120, (std::string *)(v64 + 1), v102); + v65 = v110; + HIBYTE(v108) = 0; + v110 = 0; + *((_BYTE *)v120[0] + *(v120[0] - 3)) = v65; + v66 = v120[0]; + v34 = v120[0] - 3; + if ( (_UNKNOWN *)v120[0] != &unk_51641C ) + { + *(v120[0] - 1) = 0; + *(v66 - 3) = v64 + 1; + *((_BYTE *)v34 + v64 + 13) = 0; + } +LABEL_66: + v36 = (_DWORD *)a1; + v37 = *(_DWORD *)(a1 + 8); + if ( v37 < *(_DWORD *)(a1 + 12) ) + goto LABEL_67; + goto LABEL_91; + } + if ( *(_WORD *)(v118 + 36) == v10 ) + { + v28 = v108 == 0; + HIBYTE(v108) |= v108; + v29 = v120[0]; + v30 = *(v120[0] - 3); + if ( !v28 ) + goto LABEL_79; + if ( v30 ) + { + v103 = (std::string *)(v30 + 1); + if ( v30 + 1 > *(v120[0] - 2) || *((int *)v120[0] - 1) > 0 ) + std::string::reserve(v120, v103, v102); + *((_BYTE *)v120[0] + *(v120[0] - 3)) = v110; + v31 = v120[0]; + v32 = v120[0] - 3; + if ( (_UNKNOWN *)v120[0] != &unk_51641C ) + { + *(v120[0] - 1) = 0; + *(v31 - 3) = (unsigned int)v103; + *((_BYTE *)v32 + v30 + 13) = 0; + } + } + v33 = *(*v6 - 3); + if ( v33 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v33 + 1), v102); + v34 = (unsigned int *)*(*v6 - 3); + LOBYTE(v108) = v107; + *((_BYTE *)v34 + (_DWORD)*v6) = 46; + v35 = *v6; + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v35 - 1) = 0; + *(v35 - 3) = v33 + 1; + *((_BYTE *)v35 + v33 + 1) = 0; + } + goto LABEL_66; + } + v47 = wmemchr(S, v10, 0xAu); + if ( v47 ) + break; + if ( *(_WORD *)(v118 + 148) != v10 && *(_WORD *)(v118 + 160) != v10 ) + goto LABEL_74; + v29 = v120[0]; + v28 = ((HIBYTE(v108) ^ 1) & (unsigned __int8)v111) == 0; + v111 &= HIBYTE(v108) ^ 1; + v43 = *(v120[0] - 3); + if ( v28 ) + goto LABEL_75; + if ( v43 && !(_BYTE)v108 ) + { + v105 = (std::string *)(v43 + 1); + if ( v43 + 1 > *(v120[0] - 2) || *((int *)v120[0] - 1) > 0 ) + std::string::reserve(v120, v105, v102); + *((_BYTE *)v120[0] + *(v120[0] - 3)) = v110; + v73 = v120[0]; + v74 = v120[0] - 3; + if ( (_UNKNOWN *)v120[0] != &unk_51641C ) + { + *(v120[0] - 1) = 0; + *(v73 - 3) = (unsigned int)v105; + *((_BYTE *)v74 + v43 + 13) = 0; + } + } + v54 = *(*v6 - 3); + if ( v54 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v54 + 1), v102); + *((_BYTE *)*v6 + *(*v6 - 3)) = 101; + v55 = *v6; + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v55 - 1) = 0; + *(v55 - 3) = v54 + 1; + *((_BYTE *)v55 + v54 + 1) = 0; + } + v56 = (_DWORD *)a1; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v56 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v60 = v111; + goto LABEL_120; + } + } + else + { + *(_DWORD *)(a1 + 8) = v57 + 2; + WORD2(a1) = -1; + } + v58 = (__int16 *)v56[2]; + if ( (unsigned int)v58 >= v56[3] ) + v59 = (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56); + else + v59 = *v58; + v60 = 0; + if ( v59 == -1 ) + { + LODWORD(a1) = 0; + v60 = v111; + } +LABEL_120: + v61 = a3 == -1; + v62 = v61 & (a2 != 0); + if ( v62 ) + { + v70 = (_WORD *)a2[2]; + v71 = (unsigned int)v70 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v70; + v61 = 0; + if ( v71 == -1 ) + { + a2 = 0; + v61 = v62; + } + } + if ( v61 == v60 ) + { +LABEL_245: + v29 = v120[0]; + if ( !*(v120[0] - 3) ) + goto LABEL_82; + goto LABEL_80; + } + v10 = WORD2(a1); + if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) + { + v72 = *(_WORD **)(a1 + 8); + v10 = (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v72; + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + v63 = *(_WORD *)(v118 + 114); + v27 = *(_BYTE *)(v118 + 16); + if ( v63 != v10 && *(_WORD *)(v118 + 112) != v10 ) + goto LABEL_126; + if ( v27 && *(_WORD *)(v118 + 38) == v10 ) + { + HIBYTE(v108) = *(_BYTE *)(v118 + 16); + v111 = HIBYTE(v108); + } + else + { + if ( *(_WORD *)(v118 + 36) != v10 ) + { + v67 = 2 * (v63 != (__int16)v10) + 43; + v104 = (std::string *)*(*v6 - 3); + if ( (unsigned int)v104 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)((char *)v104 + 1), v102); + *((_BYTE *)*v6 + *(*v6 - 3)) = v67; + v68 = *v6; + HIBYTE(v108) = v111; + v34 = *v6 - 3; + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v68 - 1) = 0; + *(v68 - 3) = (unsigned int)v104 + 1; + *((_BYTE *)v104 + (_DWORD)v34 + 13) = 0; + } + goto LABEL_66; + } +LABEL_126: + HIBYTE(v108) = v111; + } + } + v114 = v47 - S + 48; + v48 = *(*v6 - 3); + if ( v48 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v48 + 1), v102); + v34 = (unsigned int *)*(*v6 - 3); + *((_BYTE *)v34 + (_DWORD)*v6) = v114; + v49 = *v6; + if ( *v6 != (unsigned int *)&unk_51641C ) + { + *(v49 - 1) = 0; + *(v49 - 3) = v48 + 1; + *((_BYTE *)v49 + v48 + 1) = 0; + } + v36 = (_DWORD *)a1; + ++v110; + v111 = v107; + v37 = *(_DWORD *)(a1 + 8); + if ( v37 < *(_DWORD *)(a1 + 12) ) + { +LABEL_67: + v36[2] = v37 + 2; + WORD2(a1) = -1; + goto LABEL_68; + } +LABEL_91: + (*(void (__fastcall **)(_DWORD *))(*v36 + 40))(v36); + v36 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v40 = v107; + goto LABEL_72; + } +LABEL_68: + v38 = (__int16 *)v36[2]; + if ( (unsigned int)v38 >= v36[3] ) + v39 = (*(int (__fastcall **)(_DWORD *, unsigned int *))(*v36 + 36))(v36, v34); + else + v39 = *v38; + v40 = 0; + if ( v39 == -1 ) + { + LODWORD(a1) = 0; + v40 = v107; + } +LABEL_72: + v41 = a3 == -1; + v42 = v41 & (a2 != 0); + if ( v42 ) + { + v52 = (_WORD *)a2[2]; + v53 = (unsigned int)v52 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v52; + v41 = 0; + if ( v53 == -1 ) + { + a2 = 0; + v41 = v42; + } + } + if ( v41 == v40 ) + break; + v10 = WORD2(a1); + if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) + { + v69 = *(wchar_t **)(a1 + 8); + if ( (unsigned int)v69 >= *(_DWORD *)(a1 + 12) ) + v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + else + v10 = *v69; + v27 = *(_BYTE *)(v118 + 16); + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + else + { + v27 = *(_BYTE *)(v118 + 16); + } + } +LABEL_74: + v29 = v120[0]; + v43 = *(v120[0] - 3); +LABEL_75: + if ( !v43 ) + goto LABEL_82; + if ( v108 ) + goto LABEL_80; +LABEL_77: + std::string::push_back(v120, (std::string *)(char)v110, v102); + v29 = v120[0]; +LABEL_80: + v113 = v29; + v44 = std::__verify_grouping(*(char **)(v118 + 8), *(_DWORD *)(v118 + 12), (const char **)v120); + v29 = v113; + if ( !v44 ) + *a5 = 4; +LABEL_82: + v45 = a1; + if ( v29 == (unsigned int *)&unk_51641C ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v119); + return v45; +} +// 49715C: variable 'v102' is possibly undefined +// 497CAA: variable 'v34' is possibly undefined + +//----- (00497FE0) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); +} + +//----- (00497FF0) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (00498000) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); +} + +//----- (00498010) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); +} + +//----- (00498020) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); +} + +//----- (00498030) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 498C60: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (00498050) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 498C70: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (00498070) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int( + a1, + a2, + a3, + a4, + a5, + a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 498C80: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (00498090) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned __int16 *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int( + a1, + a2, + a3, + a4, + a5, + a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 498C90: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (004980B0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 498CA0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (004980D0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int( + a1, + a2, + a3, + a4, + a5, + a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 498CB0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (004980F0) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + int v6; // edi + int result; // eax + unsigned int v8[8]; // [esp+3Ch] [ebp-20h] BYREF + + v6 = *(_DWORD *)(a4 + 12); + *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; + result = std::num_get>::_M_extract_int( + a1, + a2, + a3, + a4, + a5, + v8); + *(_DWORD *)(a4 + 12) = v6; + *a6 = v8[0]; + return result; +} +// 4980F0: using guessed type unsigned int var_20[8]; + +//----- (00498190) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + int *a5, + _BYTE *a6) +{ + int v6; // ebx + _BYTE *v7; // edx + _DWORD *v9; // edi + _DWORD *v10; // esi + int v11; // ecx + int v12; // eax + __int16 v13; // ax + bool v14; // dl + bool v15; // di + bool v16; // si + unsigned int v17; // eax + bool v18; // cl + char v19; // si + char v20; // di + char v21; // al + char v22; // di + unsigned __int16 v23; // ax + __int16 *v24; // eax + __int16 v25; // cx + _DWORD *v26; // esi + bool v27; // bl + char v28; // cl + unsigned int v29; // edx + __int16 *v30; // eax + __int16 v31; // ax + unsigned __int16 *v32; // eax + std::locale::_Impl *v33; // eax + std::locale::_Impl *v34; // esi + __int16 v35; // ax + int v36; // eax + void (__cdecl *v37)(void *); // [esp+4h] [ebp-64h] + unsigned int v38; // [esp+8h] [ebp-60h] + _DWORD *v39; // [esp+28h] [ebp-40h] + bool v40; // [esp+2Dh] [ebp-3Bh] + bool v41; // [esp+2Dh] [ebp-3Bh] + bool v42; // [esp+2Dh] [ebp-3Bh] + bool v43; // [esp+2Eh] [ebp-3Ah] + bool v44; // [esp+2Fh] [ebp-39h] + unsigned int v45; // [esp+30h] [ebp-38h] + std::locale::facet *v46; // [esp+34h] [ebp-34h] + bool v47; // [esp+34h] [ebp-34h] + bool v48; // [esp+34h] [ebp-34h] + __int64 v49; // [esp+38h] [ebp-30h] + unsigned int v50[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) + { + v50[0] = -1; + v49 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v50); + LODWORD(a1) = v49; + WORD2(a1) = WORD2(v49); + if ( v50[0] > 1 ) + { + *a6 = 1; + *a5 = 4; + if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) + { + *a5 |= 2u; + return a1; + } + } + else + { + v7 = a6; + *a6 = v50[0]; + *v7 &= 1u; + } + return a1; + } + v46 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v9 = (_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * (_DWORD)v46); + v10 = (_DWORD *)*v9; + if ( !*v9 ) + { + v33 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v37); + *((_DWORD *)v33 + 1) = 0; + v34 = v33; + *(_DWORD *)v33 = &off_538BE4; + *((_DWORD *)v33 + 2) = 0; + *((_DWORD *)v33 + 3) = 0; + *((_BYTE *)v33 + 16) = 0; + *((_DWORD *)v33 + 5) = 0; + *((_DWORD *)v33 + 6) = 0; + *((_DWORD *)v33 + 7) = 0; + *((_DWORD *)v33 + 8) = 0; + *((_DWORD *)v33 + 9) = 0; + *((_BYTE *)v33 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v33, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v34, v46, v38); + v10 = (_DWORD *)*v9; + } + v11 = v10[8]; + v12 = v10[6]; + v44 = v12 == 0; + if ( !(v12 | v11) ) + goto LABEL_57; + v43 = 1; + v13 = WORD2(a1); + v45 = 0; + v14 = 1; + v39 = v10; + v47 = v11 == 0; + while ( 1 ) + { + v19 = v13 == -1; + v20 = v19 & ((_DWORD)a1 != 0); + if ( v20 ) + { + v30 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v30 >= *(_DWORD *)(a1 + 12) ) + { + v40 = v14; + v31 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v14 = v40; + } + else + { + v31 = *v30; + } + v19 = 0; + if ( v31 == -1 ) + { + LODWORD(a1) = 0; + v19 = v20; + } + } + v21 = a3 == -1; + v22 = v21 & (a2 != 0); + if ( v22 ) + { + v24 = (__int16 *)a2[2]; + if ( (unsigned int)v24 >= a2[3] ) + { + v41 = v14; + v35 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v14 = v41; + v25 = v35; + } + else + { + v25 = *v24; + } + v21 = 0; + if ( v25 == -1 ) + break; + } + if ( v19 == v21 ) + goto LABEL_37; +LABEL_22: + v23 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v32 = *(unsigned __int16 **)(a1 + 8); + if ( (unsigned int)v32 >= *(_DWORD *)(a1 + 12) ) + { + v42 = v14; + v23 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + v14 = v42; + } + else + { + v23 = *v32; + } + if ( v23 == 0xFFFF ) + LODWORD(a1) = 0; + } + if ( !v47 ) + v14 = *(_WORD *)(v39[7] + 2 * v45) == v23; + if ( !v14 ) + { + if ( v44 ) + { + if ( v43 ) + { + if ( v39[6] == v45 && v45 ) + { + *a6 = 1; + v36 = 0; +LABEL_70: + *a5 = v36; + return a1; + } +LABEL_57: + *a6 = 0; + goto LABEL_58; + } +LABEL_59: + *a6 = 0; + *a5 = 4; + return a1; + } +LABEL_10: + v43 = *(_WORD *)(v39[5] + 2 * v45) == v23; + goto LABEL_11; + } + if ( !v44 ) + goto LABEL_10; +LABEL_11: + v15 = v47 && !v43; + if ( v15 ) + { + if ( v14 ) + { + if ( v39[8] == v45 && v45 ) + { + *a6 = 0; + v36 = 0; + goto LABEL_70; + } + goto LABEL_57; + } + goto LABEL_59; + } + v16 = v14 || v43; + if ( !v14 && !v43 ) + goto LABEL_59; + ++v45; + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + { + v48 = v14; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v14 = v48; + } + else + { + *(_DWORD *)(a1 + 8) = v17 + 2; + } + WORD2(a1) = -1; + if ( !v14 ) + { + v47 = v16; +LABEL_32: + v44 = v39[6] <= v45; + v18 = v44 && v47; + v43 = v16; + goto LABEL_18; + } + v47 = v39[8] <= v45; + if ( v43 ) + goto LABEL_32; + v44 = v14; + v18 = v39[8] <= v45; +LABEL_18: + v13 = -1; + if ( v18 ) + { + v27 = v14; + v26 = v39; + v28 = v15; + v29 = v45; + goto LABEL_38; + } + } + a2 = 0; + if ( v19 != v22 ) + goto LABEL_22; +LABEL_37: + v26 = v39; + v27 = v14; + v28 = 1; + v29 = v45; +LABEL_38: + if ( v27 && v26[8] == v29 && v29 ) + { + *a6 = 0; + if ( !v43 || v26[6] != v29 ) + goto LABEL_73; +LABEL_58: + *a5 = 4; + return a1; + } + if ( v43 && v26[6] == v29 && v29 ) + { + *a6 = 1; +LABEL_73: + v36 = 2 * (v28 != 0); + goto LABEL_70; + } + *a6 = 0; + if ( !v28 ) + goto LABEL_58; + *a5 = 6; + return a1; +} +// 498517: variable 'v37' is possibly undefined +// 498584: variable 'v38' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); +// 498190: using guessed type unsigned int var_1C[7]; + +//----- (004986F0) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + double *a6) +{ + __int64 v6; // rax + _DWORD *v7; // esi + __int16 v8; // di + _DWORD *v9; // ebx + int v10; // eax + char v11; // di + int v12; // edx + char *v13; // ecx + __int16 *v15; // eax + __int16 v16; // ax + unsigned __int16 *v17; // eax + int v18; // edx + unsigned int v19; // [esp+4h] [ebp-64h] + char v20; // [esp+2Bh] [ebp-3Dh] + char *String; // [esp+48h] [ebp-20h] BYREF + int v22[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_51641C; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v19); + v6 = std::num_get>::_M_extract_float( + a1, + a2, + a3, + a4, + a5, + (unsigned int **)&String); + v7 = (_DWORD *)v6; + v8 = WORD2(v6); + v9 = (_DWORD *)v6; + v22[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v11 = v8 == -1; + v20 = v11 & (v7 != 0); + if ( v20 ) + { + v17 = (unsigned __int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + v10 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v10 = *v17; + v11 = (_WORD)v10 != 0xFFFF ? 0 : v20; + v9 = (_WORD)v10 == 0xFFFF ? 0 : v7; + } + LOBYTE(v10) = a3 == -1; + v12 = v10; + if ( a2 && a3 == -1 ) + { + v15 = (__int16 *)a2[2]; + if ( (unsigned int)v15 >= a2[3] ) + v16 = (*(int (__fastcall **)(_DWORD *, int))(*a2 + 36))(a2, v12); + else + v16 = *v15; + LOBYTE(v12) = v16 == -1; + } + if ( v11 == (_BYTE)v12 ) + *a5 |= 2u; + v13 = String - 12; + if ( String != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v18 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v18 - 1; + } + if ( v18 <= 0 ) + std::string::_Rep::_M_destroy(v13, (int)v22); + } + return v9; +} +// 498723: variable 'v19' is possibly undefined +// 4987C0: variable 'v10' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; +// 4986F0: using guessed type int var_1C[7]; + +//----- (004988C0) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + long double *a6) +{ + __int64 v6; // rax + _DWORD *v7; // esi + __int16 v8; // di + _DWORD *v9; // ebx + int v10; // eax + char v11; // di + int v12; // edx + char *v13; // ecx + __int16 *v15; // eax + __int16 v16; // ax + unsigned __int16 *v17; // eax + int v18; // edx + unsigned int v19; // [esp+4h] [ebp-64h] + char v20; // [esp+2Bh] [ebp-3Dh] + char *String; // [esp+48h] [ebp-20h] BYREF + int v22[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_51641C; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v19); + v6 = std::num_get>::_M_extract_float( + a1, + a2, + a3, + a4, + a5, + (unsigned int **)&String); + v7 = (_DWORD *)v6; + v8 = WORD2(v6); + v9 = (_DWORD *)v6; + v22[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v11 = v8 == -1; + v20 = v11 & (v7 != 0); + if ( v20 ) + { + v17 = (unsigned __int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + v10 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v10 = *v17; + v11 = (_WORD)v10 != 0xFFFF ? 0 : v20; + v9 = (_WORD)v10 == 0xFFFF ? 0 : v7; + } + LOBYTE(v10) = a3 == -1; + v12 = v10; + if ( a2 && a3 == -1 ) + { + v15 = (__int16 *)a2[2]; + if ( (unsigned int)v15 >= a2[3] ) + v16 = (*(int (__fastcall **)(_DWORD *, int))(*a2 + 36))(a2, v12); + else + v16 = *v15; + LOBYTE(v12) = v16 == -1; + } + if ( v11 == (_BYTE)v12 ) + *a5 |= 2u; + v13 = String - 12; + if ( String != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v18 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v18 - 1; + } + if ( v18 <= 0 ) + std::string::_Rep::_M_destroy(v13, (int)v22); + } + return v9; +} +// 4988F3: variable 'v19' is possibly undefined +// 498990: variable 'v10' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; +// 4988C0: using guessed type int var_1C[7]; + +//----- (00498A90) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + float *a6) +{ + __int64 v6; // rax + _DWORD *v7; // esi + __int16 v8; // di + _DWORD *v9; // ebx + int v10; // eax + char v11; // di + int v12; // edx + char *v13; // ecx + __int16 *v15; // eax + __int16 v16; // ax + unsigned __int16 *v17; // eax + int v18; // edx + unsigned int v19; // [esp+4h] [ebp-64h] + char v20; // [esp+2Bh] [ebp-3Dh] + char *String; // [esp+48h] [ebp-20h] BYREF + int v22[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_51641C; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v19); + v6 = std::num_get>::_M_extract_float( + a1, + a2, + a3, + a4, + a5, + (unsigned int **)&String); + v7 = (_DWORD *)v6; + v8 = WORD2(v6); + v9 = (_DWORD *)v6; + v22[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v11 = v8 == -1; + v20 = v11 & (v7 != 0); + if ( v20 ) + { + v17 = (unsigned __int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + v10 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v10 = *v17; + v11 = (_WORD)v10 != 0xFFFF ? 0 : v20; + v9 = (_WORD)v10 == 0xFFFF ? 0 : v7; + } + LOBYTE(v10) = a3 == -1; + v12 = v10; + if ( a2 && a3 == -1 ) + { + v15 = (__int16 *)a2[2]; + if ( (unsigned int)v15 >= a2[3] ) + v16 = (*(int (__fastcall **)(_DWORD *, int))(*a2 + 36))(a2, v12); + else + v16 = *v15; + LOBYTE(v12) = v16 == -1; + } + if ( v11 == (_BYTE)v12 ) + *a5 |= 2u; + v13 = String - 12; + if ( String != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v18 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v18 - 1; + } + if ( v18 <= 0 ) + std::string::_Rep::_M_destroy(v13, (int)v22); + } + return v9; +} +// 498AC3: variable 'v19' is possibly undefined +// 498B60: variable 'v10' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; +// 498A90: using guessed type int var_1C[7]; + +//----- (00498CC0) -------------------------------------------------------- +_BYTE *__stdcall std::num_put>::_M_group_int( + char *a1, + int a2, + char a3, + int a4, + _BYTE *a5, + _BYTE *a6, + _DWORD *a7) +{ + _BYTE *result; // eax + + result = (_BYTE *)(std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5); + *a7 = result; + return result; +} + +//----- (00498D10) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + unsigned int v8; // edi + void *v9; // esp + void *v10; // esp + unsigned int v11; // eax + int v12; // eax + int v13; // ebx + char *v14; // edx + int v15; // esi + char v16; // si + int v18; // eax + void *v19; // esp + void *v20; // esp + int v21; // eax + void *v22; // esp + void *v23; // esp + char *v24; // eax + _BYTE *v25; // eax + char v26; // al + std::locale::_Impl *v27; // eax + std::locale::_Impl *v28; // esi + int v29; // [esp-14h] [ebp-6Ch] + int v30; // [esp-Ch] [ebp-64h] + char v31[2]; // [esp+0h] [ebp-58h] BYREF + _BYTE v32[2]; // [esp+2h] [ebp-56h] BYREF + void (__cdecl *v33)(void *); // [esp+4h] [ebp-54h] + unsigned int v34; // [esp+8h] [ebp-50h] + char v35[20]; // [esp+14h] [ebp-44h] BYREF + unsigned int v36; // [esp+28h] [ebp-30h] + int v37; // [esp+2Ch] [ebp-2Ch] + char *v38; // [esp+30h] [ebp-28h] + int v39; // [esp+34h] [ebp-24h] + int v40; // [esp+38h] [ebp-20h] + int v41; // [esp+3Ch] [ebp-1Ch] + + v40 = a1; + v39 = a2; + v37 = a4; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v27 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v33); + *((_DWORD *)v27 + 1) = 0; + v28 = v27; + *(_DWORD *)v27 = &off_538BD4; + *((_DWORD *)v27 + 2) = 0; + *((_DWORD *)v27 + 3) = 0; + *((_BYTE *)v27 + 16) = 0; + *((_DWORD *)v27 + 5) = 0; + *((_DWORD *)v27 + 6) = 0; + *((_DWORD *)v27 + 7) = 0; + *((_DWORD *)v27 + 8) = 0; + *((_WORD *)v27 + 18) = 0; + *((_BYTE *)v27 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v27, (int)(a3 + 27)); + std::locale::_Impl::_M_install_cache(a3[27], v28, (const std::locale::facet *)v5, v34); + v7 = *v6; + } + v41 = v7 + 38; + v8 = a3[3]; + v9 = alloca(32); + v10 = alloca(32); + v36 = v8 & 0x4A; + v11 = a5; + LOBYTE(v41) = v36 != 8 && v36 != 64; + if ( a5 <= 0 && (v8 & 0x4A) != 8 && (v8 & 0x4A) != 64 ) + v11 = -a5; + v38 = v31; + v12 = std::__int_to_char(v35, v11, v7 + 38, v8, v41); + v13 = v12; + v14 = &v38[-v12 + 20]; + if ( !*(_BYTE *)(v7 + 16) ) + { + if ( (_BYTE)v41 ) + goto LABEL_8; +LABEL_18: + if ( (v8 & 0x200) != 0 && a5 ) + { + if ( v36 == 64 ) + { + v26 = *(_BYTE *)(v7 + 42); + ++v13; + --v14; + } + else + { + v13 += 2; + v14 -= 2; + v14[1] = *(_BYTE *)(v7 + ((v8 >> 14) & 1) + 40); + v26 = *(_BYTE *)(v7 + 42); + } + *v14 = v26; + } + goto LABEL_10; + } + v21 = 16 * ((unsigned int)(2 * v12 + 29) >> 4); + v22 = alloca(v21); + v23 = alloca(v21); + v29 = *(_DWORD *)(v7 + 12); + v24 = *(char **)(v7 + 8); + v38 = v32; + v25 = std::__add_grouping(v32, *(_BYTE *)(v7 + 37), v24, v29, v14, &v14[v13]); + v14 = v38; + v13 = v25 - v38; + if ( !(_BYTE)v41 ) + goto LABEL_18; +LABEL_8: + if ( a5 < 0 ) + { + ++v13; + *--v14 = *(_BYTE *)(v7 + 38); + } + else if ( (v8 & 0x800) != 0 ) + { + ++v13; + *--v14 = *(_BYTE *)(v7 + 39); + v15 = a3[2]; + if ( v15 <= v13 ) + goto LABEL_11; + goto LABEL_15; + } +LABEL_10: + v15 = a3[2]; + if ( v15 <= v13 ) + goto LABEL_11; +LABEL_15: + v18 = 16 * ((unsigned int)(v15 + 27) >> 4); + v19 = alloca(v18); + v20 = alloca(v18); + v30 = v13; + v13 = v15; + std::__pad>::_S_pad(a3, (void *)(char)v37, v31, v14, v15, v30); + v14 = v31; +LABEL_11: + a3[2] = 0; + v16 = v39; + if ( !(_BYTE)v39 ) + v16 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v40 + 48))(v40, v14, v13) != v13; + LOBYTE(v41) = v16; + return v40; +} +// 516628: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); +// 498D10: using guessed type char anonymous_2[20]; + +//----- (00499030) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + unsigned int v8; // edi + void *v9; // esp + void *v10; // esp + int v11; // eax + int v12; // ebx + char *v13; // edx + int v14; // esi + char v15; // si + int v17; // eax + void *v18; // esp + void *v19; // esp + char *v20; // eax + _BYTE *v21; // eax + char v22; // al + int v23; // eax + void *v24; // esp + void *v25; // esp + std::locale::_Impl *v26; // eax + std::locale::_Impl *v27; // esi + int v28; // [esp-14h] [ebp-6Ch] + int v29; // [esp-Ch] [ebp-64h] + char v30[2]; // [esp+0h] [ebp-58h] BYREF + _BYTE v31[2]; // [esp+2h] [ebp-56h] BYREF + void (__cdecl *v32)(void *); // [esp+4h] [ebp-54h] + unsigned int v33; // [esp+8h] [ebp-50h] + char v34[16]; // [esp+14h] [ebp-44h] BYREF + int v35; // [esp+24h] [ebp-34h] + unsigned int v36; // [esp+28h] [ebp-30h] + int v37; // [esp+2Ch] [ebp-2Ch] + char *v38; // [esp+30h] [ebp-28h] + int v39; // [esp+34h] [ebp-24h] + bool v40; // [esp+3Bh] [ebp-1Dh] + int v41; // [esp+3Ch] [ebp-1Ch] + + v41 = a1; + v39 = a2; + v37 = a4; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v26 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v32); + *((_DWORD *)v26 + 1) = 0; + v27 = v26; + *(_DWORD *)v26 = &off_538BD4; + *((_DWORD *)v26 + 2) = 0; + *((_DWORD *)v26 + 3) = 0; + *((_BYTE *)v26 + 16) = 0; + *((_DWORD *)v26 + 5) = 0; + *((_DWORD *)v26 + 6) = 0; + *((_DWORD *)v26 + 7) = 0; + *((_DWORD *)v26 + 8) = 0; + *((_WORD *)v26 + 18) = 0; + *((_BYTE *)v26 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v26, (int)(a3 + 27)); + std::locale::_Impl::_M_install_cache(a3[27], v27, (const std::locale::facet *)v5, v33); + v7 = *v6; + } + v35 = v7 + 38; + v8 = a3[3]; + v9 = alloca(32); + v10 = alloca(32); + v36 = v8 & 0x4A; + v38 = v30; + v40 = v36 != 8 && v36 != 64; + v11 = std::__int_to_char(v34, a5, v7 + 38, v8, v40); + v12 = v11; + v13 = &v38[-v11 + 20]; + if ( *(_BYTE *)(v7 + 16) ) + { + v17 = 16 * ((unsigned int)(2 * v11 + 29) >> 4); + v18 = alloca(v17); + v19 = alloca(v17); + v28 = *(_DWORD *)(v7 + 12); + v20 = *(char **)(v7 + 8); + v38 = v31; + v21 = std::__add_grouping(v31, *(_BYTE *)(v7 + 37), v20, v28, v13, &v13[v12]); + v13 = v38; + v12 = v21 - v38; + if ( v40 ) + goto LABEL_5; + } + else if ( v40 ) + { + goto LABEL_5; + } + if ( (v8 & 0x200) != 0 && a5 ) + { + if ( v36 == 64 ) + { + v22 = *(_BYTE *)(v7 + 42); + ++v12; + --v13; + } + else + { + v12 += 2; + v13 -= 2; + v13[1] = *(_BYTE *)(v35 + ((v8 >> 14) & 1) + 2); + v22 = *(_BYTE *)(v7 + 42); + } + *v13 = v22; + } +LABEL_5: + v14 = a3[2]; + if ( v14 > v12 ) + { + v23 = 16 * ((unsigned int)(v14 + 27) >> 4); + v24 = alloca(v23); + v25 = alloca(v23); + v29 = v12; + v12 = a3[2]; + std::__pad>::_S_pad(a3, (void *)(char)v37, v30, v13, v14, v29); + v13 = v30; + } + a3[2] = 0; + v15 = v39; + if ( !(_BYTE)v39 ) + v15 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v41 + 48))(v41, v13, v12) != v12; + v40 = v15; + return v41; +} +// 516628: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); +// 499030: using guessed type char anonymous_2[16]; + +//----- (00499300) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + _DWORD *a3, + int a4, + UDItype a5) +{ + int v5; // ebx + int *v6; // esi + int v7; // edi + void *v8; // esp + void *v9; // esp + __int64 v10; // rax + int v11; // eax + char *v12; // esi + int v13; // ebx + char *v14; // edx + int v15; // esi + char v16; // si + int v18; // eax + void *v19; // esp + void *v20; // esp + int v21; // eax + void *v22; // esp + void *v23; // esp + _BYTE *v24; // eax + char v25; // al + std::locale::_Impl *v26; // eax + std::locale::_Impl *v27; // edi + int v28; // [esp-2Ch] [ebp-84h] + char v29[2]; // [esp-20h] [ebp-78h] BYREF + _BYTE v30[34]; // [esp-1Eh] [ebp-76h] BYREF + void (__cdecl *v31)(void *); // [esp+4h] [ebp-54h] + unsigned int v32[6]; // [esp+8h] [ebp-50h] BYREF + int v33; // [esp+20h] [ebp-38h] + int v34; // [esp+24h] [ebp-34h] + int v35; // [esp+28h] [ebp-30h] + int v36; // [esp+2Ch] [ebp-2Ch] + int v37; // [esp+30h] [ebp-28h] + int v38; // [esp+34h] [ebp-24h] + UDItype n; // [esp+38h] [ebp-20h] + + v37 = a1; + v35 = a2; + v34 = a4; + n = a5; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v26 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v31); + *((_DWORD *)v26 + 1) = 0; + v27 = v26; + *(_DWORD *)v26 = &off_538BD4; + *((_DWORD *)v26 + 2) = 0; + *((_DWORD *)v26 + 3) = 0; + *((_BYTE *)v26 + 16) = 0; + *((_DWORD *)v26 + 5) = 0; + *((_DWORD *)v26 + 6) = 0; + *((_DWORD *)v26 + 7) = 0; + *((_DWORD *)v26 + 8) = 0; + *((_WORD *)v26 + 18) = 0; + *((_BYTE *)v26 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v26, (int)(a3 + 27)); + std::locale::_Impl::_M_install_cache(a3[27], v27, (const std::locale::facet *)v5, v32[0]); + v7 = *v6; + } + v38 = v7 + 38; + v36 = a3[3]; + v8 = alloca(64); + v9 = alloca(64); + v33 = v36 & 0x4A; + v10 = n; + LOBYTE(v38) = v33 != 8 && v33 != 64; + if ( ((HIDWORD(n) | ((n - 1) >> 32)) & 0x80000000) != 0LL && (_BYTE)v38 ) + v10 = -(__int64)n; + v11 = std::__int_to_char(v32, v10, v7 + 38, v36, v38); + v12 = &v29[-v11]; + v13 = v11; + v14 = &v29[-v11 + 40]; + if ( !*(_BYTE *)(v7 + 16) ) + { + if ( (_BYTE)v38 ) + goto LABEL_8; +LABEL_18: + if ( (v36 & 0x200) != 0 && n ) + { + if ( v33 == 64 ) + { + v25 = *(_BYTE *)(v7 + 42); + ++v13; + --v14; + } + else + { + v13 += 2; + v14 -= 2; + v14[1] = *(_BYTE *)(v7 + (((unsigned int)v36 >> 14) & 1) + 40); + v25 = *(_BYTE *)(v7 + 42); + } + *v14 = v25; + } + goto LABEL_10; + } + v21 = 16 * ((unsigned int)(2 * v11 + 29) >> 4); + v22 = alloca(v21); + v23 = alloca(v21); + v24 = std::__add_grouping( + v30, + *(_BYTE *)(v7 + 37), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v12 + 40, + &v14[v13]); + v14 = v30; + v13 = v24 - v30; + if ( !(_BYTE)v38 ) + goto LABEL_18; +LABEL_8: + if ( (n & 0x8000000000000000LL) != 0LL ) + { + ++v13; + *--v14 = *(_BYTE *)(v7 + 38); + } + else if ( (v36 & 0x800) != 0 ) + { + ++v13; + *--v14 = *(_BYTE *)(v7 + 39); + v15 = a3[2]; + if ( v15 <= v13 ) + goto LABEL_11; + goto LABEL_15; + } +LABEL_10: + v15 = a3[2]; + if ( v15 <= v13 ) + goto LABEL_11; +LABEL_15: + v18 = 16 * ((unsigned int)(v15 + 27) >> 4); + v19 = alloca(v18); + v20 = alloca(v18); + v28 = v13; + v13 = v15; + std::__pad>::_S_pad(a3, (void *)(char)v34, v29, v14, v15, v28); + v14 = v29; +LABEL_11: + a3[2] = 0; + v16 = v35; + if ( !(_BYTE)v35 ) + v16 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v37 + 48))(v37, v14, v13) != v13; + LOBYTE(n) = v16; + return v37; +} +// 516628: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); +// 499300: using guessed type unsigned int anonymous_1[6]; + +//----- (00499640) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5, + int a6) +{ + int v6; // ebx + int *v7; // edi + int v8; // esi + unsigned int v9; // edi + void *v10; // esp + void *v11; // esp + int v12; // eax + int v13; // ebx + char *v14; // edx + int v15; // esi + char v16; // si + int v18; // eax + void *v19; // esp + void *v20; // esp + char *v21; // eax + _BYTE *v22; // eax + char v23; // al + int v24; // eax + void *v25; // esp + void *v26; // esp + std::locale::_Impl *v27; // eax + std::locale::_Impl *v28; // esi + int v29; // [esp-34h] [ebp-9Ch] + int v30; // [esp-2Ch] [ebp-94h] + char v31[2]; // [esp-20h] [ebp-88h] BYREF + _BYTE v32[34]; // [esp-1Eh] [ebp-86h] BYREF + void (__cdecl *v33)(void *); // [esp+4h] [ebp-64h] + unsigned int v34[9]; // [esp+8h] [ebp-60h] BYREF + int v35; // [esp+2Ch] [ebp-3Ch] + unsigned int v36; // [esp+30h] [ebp-38h] + int v37; // [esp+34h] [ebp-34h] + char *v38; // [esp+38h] [ebp-30h] + int v39; // [esp+3Ch] [ebp-2Ch] + bool v40; // [esp+43h] [ebp-25h] + unsigned __int64 v41; // [esp+44h] [ebp-24h] + int v42; // [esp+4Ch] [ebp-1Ch] + + v42 = a1; + v39 = a2; + v37 = a4; + v41 = __PAIR64__(a5, a6); + v6 = std::locale::id::_M_id(&std::numpunct::id); + v7 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v6); + v8 = *v7; + if ( !*v7 ) + { + v27 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v33); + *((_DWORD *)v27 + 1) = 0; + v28 = v27; + *(_DWORD *)v27 = &off_538BD4; + *((_DWORD *)v27 + 2) = 0; + *((_DWORD *)v27 + 3) = 0; + *((_BYTE *)v27 + 16) = 0; + *((_DWORD *)v27 + 5) = 0; + *((_DWORD *)v27 + 6) = 0; + *((_DWORD *)v27 + 7) = 0; + *((_DWORD *)v27 + 8) = 0; + *((_WORD *)v27 + 18) = 0; + *((_BYTE *)v27 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v27, (int)(a3 + 27)); + std::locale::_Impl::_M_install_cache(a3[27], v28, (const std::locale::facet *)v6, v34[0]); + v8 = *v7; + } + v35 = v8 + 38; + v9 = a3[3]; + v10 = alloca(64); + v11 = alloca(64); + v36 = v9 & 0x4A; + v38 = v31; + v40 = v36 != 8 && v36 != 64; + v12 = std::__int_to_char(v34, __PAIR64__(v41, HIDWORD(v41)), v8 + 38, v9, v40); + v13 = v12; + v14 = &v38[-v12 + 40]; + if ( *(_BYTE *)(v8 + 16) ) + { + v18 = 16 * ((unsigned int)(2 * v12 + 29) >> 4); + v19 = alloca(v18); + v20 = alloca(v18); + v29 = *(_DWORD *)(v8 + 12); + v21 = *(char **)(v8 + 8); + v38 = v32; + v22 = std::__add_grouping(v32, *(_BYTE *)(v8 + 37), v21, v29, v14, &v14[v13]); + v14 = v38; + v13 = v22 - v38; + if ( v40 ) + goto LABEL_5; + } + else if ( v40 ) + { + goto LABEL_5; + } + if ( (v9 & 0x200) != 0 && v41 ) + { + if ( v36 == 64 ) + { + v23 = *(_BYTE *)(v8 + 42); + ++v13; + --v14; + } + else + { + v13 += 2; + v14 -= 2; + v14[1] = *(_BYTE *)(v35 + ((v9 >> 14) & 1) + 2); + v23 = *(_BYTE *)(v8 + 42); + } + *v14 = v23; + } +LABEL_5: + v15 = a3[2]; + if ( v15 > v13 ) + { + v24 = 16 * ((unsigned int)(v15 + 27) >> 4); + v25 = alloca(v24); + v26 = alloca(v24); + v30 = v13; + v13 = a3[2]; + std::__pad>::_S_pad(a3, (void *)(char)v37, v31, v14, v15, v30); + v14 = v31; + } + a3[2] = 0; + v16 = v39; + if ( !(_BYTE)v39 ) + v16 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v42 + 48))(v42, v14, v13) != v13; + BYTE4(v41) = v16; + return v42; +} +// 516628: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); +// 499640: using guessed type unsigned int anonymous_1[9]; + +//----- (00499920) -------------------------------------------------------- +_BYTE *__stdcall std::num_put>::_M_group_float( + char *a1, + int a2, + char a3, + char *Src, + int a5, + _BYTE *a6, + _DWORD *a7) +{ + char *v7; // ebp + _BYTE *v8; // edx + _BYTE *v9; // edi + int v10; // eax + _BYTE *result; // eax + + if ( Src ) + { + v7 = (char *)(Src - a6); + v8 = std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, Src); + v9 = &v8[-a5]; + v10 = 0; + if ( *a7 != Src - a6 ) + { + memcpy(v8, Src, *a7 - (_DWORD)v7); + v10 = *a7 - (_DWORD)v7; + } + result = &v9[v10]; + *a7 = result; + } + else + { + result = &std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, &a6[*a7])[-a5]; + *a7 = result; + } + return result; +} + +//----- (004999E0) -------------------------------------------------------- +int __thiscall std::num_put>::_M_insert_float( + void *this, + int a2, + int a3, + _DWORD *a4, + int a5, + int a6, + double a7) +{ + int v7; // ebx + int *v8; // edi + int v9; // esi + void *v10; // esp + void *v11; // esp + int v12; // eax + _BYTE *v13; // eax + int v14; // ebx + _BYTE *v15; // esi + int v16; // eax + void *v17; // esp + char v18; // dl + void *v19; // esp + char *v20; // eax + void (__thiscall *v21)(_BYTE *, char *, char *, void *); // edx + char *v22; // eax + char *v23; // edx + int v24; // ecx + signed int v25; // esi + char v26; // si + int v28; // eax + void *v29; // esp + void *v30; // esp + int v31; // eax + void *v32; // esp + void *v33; // esp + int v34; // ebx + char *v35; // ecx + int v36; // eax + void *v37; // esp + void *v38; // esp + int v39; // eax + int v40; // eax + void *v41; // esp + void *v42; // esp + std::locale::_Impl *v43; // eax + std::locale::_Impl *v44; // esi + int v45; // ecx + void *v46; // eax + int v47; // [esp-2Ch] [ebp-B4h] + char v48; // [esp-20h] [ebp-A8h] BYREF + _BYTE v49[35]; // [esp-1Fh] [ebp-A7h] BYREF + void (__cdecl *v50)(void *); // [esp+4h] [ebp-84h] + unsigned int v51; // [esp+8h] [ebp-80h] + char *v52; // [esp+28h] [ebp-60h] + int v53; // [esp+2Ch] [ebp-5Ch] + void *v54; // [esp+30h] [ebp-58h] + int v55; // [esp+34h] [ebp-54h] + size_t Size; // [esp+38h] [ebp-50h] + int v57; // [esp+3Ch] [ebp-4Ch] + void *v58; // [esp+40h] [ebp-48h] + int v59; // [esp+44h] [ebp-44h] + int v60[2]; // [esp+48h] [ebp-40h] + size_t MaxCount; // [esp+58h] [ebp-30h] BYREF + int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF + char v63[40]; // [esp+60h] [ebp-28h] BYREF + + v54 = this; + v59 = a2; + *(double *)v60 = a7; + v55 = a3; + v53 = a5; + Size = a6; + v58 = a4 + 27; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (int *)(*(_DWORD *)(a4[27] + 12) + 4 * v7); + v57 = *v8; + if ( !v57 ) + { + v43 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v50); + *((_DWORD *)v43 + 1) = 0; + v44 = v43; + *(_DWORD *)v43 = &off_538BD4; + v45 = (int)v43; + *((_DWORD *)v43 + 2) = 0; + *((_DWORD *)v43 + 3) = 0; + *((_BYTE *)v43 + 16) = 0; + *((_DWORD *)v43 + 5) = 0; + *((_DWORD *)v43 + 6) = 0; + *((_DWORD *)v43 + 7) = 0; + *((_DWORD *)v43 + 8) = 0; + *((_WORD *)v43 + 18) = 0; + v46 = v58; + *(_BYTE *)(v45 + 100) = 0; + std::__numpunct_cache::_M_cache(v45, (int)v46); + std::locale::_Impl::_M_install_cache(a4[27], v44, (const std::locale::facet *)v7, v51); + v57 = *v8; + } + v9 = a4[1]; + if ( v9 < 0 ) + v9 = 6; + std::__num_base::_S_format_float((std::__num_base *)a4, (const std::ios_base *)v63, (char *)(char)Size); + v10 = alloca(64); + v11 = alloca(64); + if ( (a4[3] & 0x104) == 260 ) + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v39 = std::__convert_from_v(&c_locale, &v48, 0x2Du, v63, v60[0], v60[1]); + MaxCount = v39; + if ( v39 > 44 ) + { + Size = v39 + 1; + v40 = 16 * ((unsigned int)(v39 + 28) >> 4); + v41 = alloca(v40); + v42 = alloca(v40); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v48, Size, v63, v60[0], v60[1]); + } + } + else + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v12 = std::__convert_from_v(&c_locale, &v48, 0x2Du, v63, v9, v60[0], v60[1]); + MaxCount = v12; + if ( v12 > 44 ) + { + Size = v12 + 1; + v28 = 16 * ((unsigned int)(v12 + 28) >> 4); + v29 = alloca(v28); + v30 = alloca(v28); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v48, Size, v63, v9, v60[0], v60[1]); + } + } + v13 = std::use_facet>((int)v58); + v14 = MaxCount; + v15 = v13; + Size = MaxCount; + v16 = 16 * ((MaxCount + 27) >> 4); + v17 = alloca(v16); + v18 = v15[28]; + v19 = alloca(v16); + v58 = &v48; + v60[0] = (int)&v48; + v20 = &v49[MaxCount - 1]; + if ( v18 != 1 ) + { + if ( v18 ) + { + v21 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v15 + 28); + if ( (char *)v21 == (char *)std::ctype::do_widen ) + goto LABEL_11; + } + else + { + v52 = &v49[MaxCount - 1]; + std::ctype::_M_widen_init((int)v15); + v20 = v52; + v21 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v15 + 28); + if ( (char *)v21 == (char *)std::ctype::do_widen ) + { +LABEL_11: + v14 = MaxCount; + if ( v20 != &v48 ) + memcpy(v58, &v48, Size); + goto LABEL_13; + } + } + v21(v15, &v48, v20, v58); + v14 = MaxCount; + goto LABEL_13; + } + if ( v20 != &v48 ) + memcpy(v58, &v48, MaxCount); +LABEL_13: + if ( !v14 ) + { + if ( *(_BYTE *)(v57 + 16) ) + { + v23 = 0; + goto LABEL_22; + } +LABEL_16: + v25 = a4[2]; + if ( v14 >= v25 ) + goto LABEL_17; + goto LABEL_25; + } + v22 = (char *)memchr(&v48, 46, v14); + v23 = v22; + if ( !v22 ) + { + if ( *(_BYTE *)(v57 + 16) && (v14 <= 2 || v49[0] <= 57 && (unsigned __int8)(v49[1] - 48) <= 9u && v49[0] > 47) ) + goto LABEL_22; + goto LABEL_16; + } + v24 = v57; + v23 = (char *)v58 + v22 - &v48; + *v23 = *(_BYTE *)(v57 + 36); + if ( !*(_BYTE *)(v24 + 16) ) + goto LABEL_16; +LABEL_22: + v31 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); + v32 = alloca(v31); + v33 = alloca(v31); + if ( ((v48 - 43) & 0xFD) != 0 ) + { + v35 = &v48; + v34 = 0; + } + else + { + MaxCount = v14 - 1; + v34 = 1; + v48 = *(_BYTE *)v58; + v35 = v49; + v60[0] = (int)v58 + 1; + } + std::num_put>::_M_group_float( + *(char **)(v57 + 8), + *(_DWORD *)(v57 + 12), + *(_BYTE *)(v57 + 37), + v23, + (int)v35, + (_BYTE *)v60[0], + &MaxCount); + v14 = MaxCount + v34; + v60[0] = (int)&v48; + MaxCount = v14; + v25 = a4[2]; + if ( v14 >= v25 ) + goto LABEL_17; +LABEL_25: + v36 = 16 * ((unsigned int)(v25 + 27) >> 4); + v37 = alloca(v36); + v38 = alloca(v36); + v47 = v14; + v14 = v25; + std::__pad>::_S_pad(a4, (void *)(char)v53, &v48, (_BYTE *)v60[0], v25, v47); + MaxCount = v25; + v60[0] = (int)&v48; +LABEL_17: + a4[2] = 0; + v26 = v55; + if ( !(_BYTE)v55 ) + v26 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v59 + 48))(v59, v60[0], v14) != v14; + LOBYTE(v60[0]) = v26; + return v59; +} +// 516628: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (00499F30) -------------------------------------------------------- +int __thiscall std::num_put>::_M_insert_float( + void *this, + int a2, + int a3, + std::__num_base *a4, + int a5, + int a6, + long double a7) +{ + int v7; // ebx + int *v8; // edi + int v9; // esi + void *v10; // esp + void *v11; // esp + int v12; // eax + _BYTE *v13; // eax + int v14; // ebx + _BYTE *v15; // esi + int v16; // eax + void *v17; // esp + char v18; // dl + void *v19; // esp + char *v20; // eax + void (__thiscall *v21)(_BYTE *, char *, char *, size_t); // edx + char *v22; // eax + char *v23; // edx + int v24; // ecx + signed int v25; // esi + char v26; // si + int v28; // eax + void *v29; // esp + void *v30; // esp + int v31; // eax + void *v32; // esp + void *v33; // esp + int v34; // ebx + char *v35; // ecx + int v36; // eax + void *v37; // esp + void *v38; // esp + int v39; // eax + int v40; // eax + void *v41; // esp + void *v42; // esp + std::locale::_Impl *v43; // eax + std::locale::_Impl *v44; // esi + int v45; // ecx + int v46; // eax + int v51; // [esp-3Ch] [ebp-C4h] + char v52; // [esp-30h] [ebp-B8h] BYREF + _BYTE v53[51]; // [esp-2Fh] [ebp-B7h] BYREF + void (__cdecl *v54)(void *); // [esp+4h] [ebp-84h] + unsigned int v55; // [esp+8h] [ebp-80h] + char *v56; // [esp+2Ch] [ebp-5Ch] + int v57; // [esp+30h] [ebp-58h] + void *v58; // [esp+34h] [ebp-54h] + size_t Size; // [esp+38h] [ebp-50h] + int v60; // [esp+3Ch] [ebp-4Ch] + int v61; // [esp+40h] [ebp-48h] + size_t BufferCount; // [esp+44h] [ebp-44h] + int v63; // [esp+48h] [ebp-40h] + int v64; // [esp+4Ch] [ebp-3Ch] + size_t MaxCount; // [esp+58h] [ebp-30h] BYREF + int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF + char v67[40]; // [esp+60h] [ebp-28h] BYREF + + v58 = this; + v63 = a2; + v60 = a3; + v57 = a5; + BufferCount = a6; + v64 = (int)a4 + 108; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (int *)(*(_DWORD *)(*((_DWORD *)a4 + 27) + 12) + 4 * v7); + v61 = *v8; + if ( !v61 ) + { + v43 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v54); + *((_DWORD *)v43 + 1) = 0; + v44 = v43; + *(_DWORD *)v43 = &off_538BD4; + v45 = (int)v43; + *((_DWORD *)v43 + 2) = 0; + *((_DWORD *)v43 + 3) = 0; + *((_BYTE *)v43 + 16) = 0; + *((_DWORD *)v43 + 5) = 0; + *((_DWORD *)v43 + 6) = 0; + *((_DWORD *)v43 + 7) = 0; + *((_DWORD *)v43 + 8) = 0; + *((_WORD *)v43 + 18) = 0; + v46 = v64; + *(_BYTE *)(v45 + 100) = 0; + std::__numpunct_cache::_M_cache(v45, v46); + std::locale::_Impl::_M_install_cache(*((_DWORD *)a4 + 27), v44, (const std::locale::facet *)v7, v55); + v61 = *v8; + } + v9 = *((_DWORD *)a4 + 1); + if ( v9 < 0 ) + v9 = 6; + std::__num_base::_S_format_float(a4, (const std::ios_base *)v67, (char *)(char)BufferCount); + v10 = alloca(80); + v11 = alloca(80); + if ( (*((_DWORD *)a4 + 3) & 0x104) == 260 ) + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v39 = std::__convert_from_v(&c_locale, &v52, 0x36u, v67, *(_QWORD *)&a7, HIDWORD(a7)); + MaxCount = v39; + if ( v39 > 53 ) + { + BufferCount = v39 + 1; + v40 = 16 * ((unsigned int)(v39 + 28) >> 4); + v41 = alloca(v40); + v42 = alloca(v40); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v52, BufferCount, v67, *(_QWORD *)&a7, HIDWORD(a7)); + } + } + else + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v12 = std::__convert_from_v(&c_locale, &v52, 0x36u, v67, v9, *(_QWORD *)&a7, HIDWORD(a7)); + MaxCount = v12; + if ( v12 > 53 ) + { + BufferCount = v12 + 1; + v28 = 16 * ((unsigned int)(v12 + 28) >> 4); + v29 = alloca(v28); + v30 = alloca(v28); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v52, BufferCount, v67, v9, *(_QWORD *)&a7, HIDWORD(a7)); + } + } + v13 = std::use_facet>(v64); + v14 = MaxCount; + v15 = v13; + Size = MaxCount; + v16 = 16 * ((MaxCount + 27) >> 4); + v17 = alloca(v16); + v18 = v15[28]; + v19 = alloca(v16); + BufferCount = (size_t)&v52; + v64 = (int)&v52; + v20 = &v53[MaxCount - 1]; + if ( v18 != 1 ) + { + if ( v18 ) + { + v21 = *(void (__thiscall **)(_BYTE *, char *, char *, size_t))(*(_DWORD *)v15 + 28); + if ( (char *)v21 == (char *)std::ctype::do_widen ) + goto LABEL_11; + } + else + { + v56 = &v53[MaxCount - 1]; + std::ctype::_M_widen_init((int)v15); + v20 = v56; + v21 = *(void (__thiscall **)(_BYTE *, char *, char *, size_t))(*(_DWORD *)v15 + 28); + if ( (char *)v21 == (char *)std::ctype::do_widen ) + { +LABEL_11: + v14 = MaxCount; + if ( v20 != &v52 ) + memcpy((void *)BufferCount, &v52, Size); + goto LABEL_13; + } + } + v21(v15, &v52, v20, BufferCount); + v14 = MaxCount; + goto LABEL_13; + } + if ( v20 != &v52 ) + memcpy((void *)BufferCount, &v52, MaxCount); +LABEL_13: + if ( !v14 ) + { + if ( *(_BYTE *)(v61 + 16) ) + { + v23 = 0; + goto LABEL_22; + } +LABEL_16: + v25 = *((_DWORD *)a4 + 2); + if ( v14 >= v25 ) + goto LABEL_17; + goto LABEL_25; + } + v22 = (char *)memchr(&v52, 46, v14); + v23 = v22; + if ( !v22 ) + { + if ( *(_BYTE *)(v61 + 16) && (v14 <= 2 || v53[0] <= 57 && (unsigned __int8)(v53[1] - 48) <= 9u && v53[0] > 47) ) + goto LABEL_22; + goto LABEL_16; + } + v24 = v61; + v23 = (char *)(BufferCount + v22 - &v52); + *v23 = *(_BYTE *)(v61 + 36); + if ( !*(_BYTE *)(v24 + 16) ) + goto LABEL_16; +LABEL_22: + v31 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); + v32 = alloca(v31); + v33 = alloca(v31); + if ( ((v52 - 43) & 0xFD) != 0 ) + { + v35 = &v52; + v34 = 0; + } + else + { + MaxCount = v14 - 1; + v34 = 1; + v52 = *(_BYTE *)BufferCount; + v35 = v53; + v64 = BufferCount + 1; + } + std::num_put>::_M_group_float( + *(char **)(v61 + 8), + *(_DWORD *)(v61 + 12), + *(_BYTE *)(v61 + 37), + v23, + (int)v35, + (_BYTE *)v64, + &MaxCount); + v14 = MaxCount + v34; + v64 = (int)&v52; + MaxCount = v14; + v25 = *((_DWORD *)a4 + 2); + if ( v14 >= v25 ) + goto LABEL_17; +LABEL_25: + v36 = 16 * ((unsigned int)(v25 + 27) >> 4); + v37 = alloca(v36); + v38 = alloca(v36); + v51 = v14; + v14 = v25; + std::__pad>::_S_pad(a4, (void *)(char)v57, &v52, (_BYTE *)v64, v25, v51); + MaxCount = v25; + v64 = (int)&v52; +LABEL_17: + *((_DWORD *)a4 + 2) = 0; + v26 = v60; + if ( !(_BYTE)v60 ) + v26 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v63 + 48))(v63, v64, v14) != v14; + LOBYTE(v64) = v26; + return v63; +} +// 516628: using guessed type int std::numpunct::id; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (0049A470) -------------------------------------------------------- +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 36))(this, a2, a3, a4, a5); +} + +//----- (0049A480) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + char a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (0049A4A0) -------------------------------------------------------- +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 28))(this, a2, a3, a4, a5); +} + +//----- (0049A4B0) -------------------------------------------------------- +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 32))(this, a2, a3, a4, a5); +} + +//----- (0049A4C0) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + int a6) +{ + int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax + + v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 12); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return v6(a2, a3, a4, a5, a6); +} + +//----- (0049A4F0) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + int a6) +{ + int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax + + v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 16); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return v6(a2, a3, a4, a5, a6); +} + +//----- (0049A520) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + UDItype a6) +{ + int (__stdcall *v6)(int, int, _DWORD *, char, UDItype); // eax + + v6 = *(int (__stdcall **)(int, int, _DWORD *, char, UDItype))(*(_DWORD *)this + 20); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return ((int (__stdcall *)(int, int, _DWORD *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); +} + +//----- (0049A550) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + int a6, + int a7) +{ + int (__stdcall *v7)(int, int, _DWORD *, char, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, _DWORD *, char, int, int))(*(_DWORD *)this + 24); + if ( v7 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6, a7); + else + return v7(a2, a3, a4, a5, a6, a7); +} + +//----- (0049A580) -------------------------------------------------------- +int __stdcall std::num_put>::_M_pad( + char a1, + int a2, + _DWORD *a3, + char *a4, + _BYTE *a5, + int *a6) +{ + int result; // eax + + result = std::__pad>::_S_pad(a3, (void *)a1, a4, a5, a2, *a6); + *a6 = a2; + return result; +} + +//----- (0049A5D0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) +{ + int v5; // edi + int result; // eax + + v5 = a3[3]; + a3[3] = v5 & 0xFFFFBDB5 | 0x208; + result = std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); + a3[3] = v5; + return result; +} + +//----- (0049A650) -------------------------------------------------------- +int *__stdcall std::num_put>::do_put(int *a1, int a2, _DWORD *a3, int a4, int a5) +{ + int v5; // eax + _DWORD *v7; // eax + int v8; // edx + int v9; // eax + size_t v10; // ecx + int v11; // eax + void *v12; // esp + void *v13; // esp + int v14; // edx + int v15; // eax + int v16; // eax + int v17; // eax + int v18; // eax + _BYTE v19[8]; // [esp+20h] [ebp-48h] BYREF + _BYTE *v20; // [esp+28h] [ebp-40h] + int v21; // [esp+2Ch] [ebp-3Ch] + int v22; // [esp+30h] [ebp-38h] + int v23; // [esp+34h] [ebp-34h] + int v24; // [esp+38h] [ebp-30h] + int *v25; // [esp+3Ch] [ebp-2Ch] + + v5 = a3[3]; + v23 = a4; + v24 = v5; + if ( (v5 & 1) == 0 ) + return (int *)std::num_put>::_M_insert_int( + (int)a1, + a2, + a3, + (char)a4, + (unsigned __int8)a5); + v22 = a5; + v25 = a1; + v7 = (_DWORD *)std::__use_cache>::operator()(a3 + 27); + if ( (_BYTE)a5 ) + { + v8 = v7[6]; + v22 = v7[5]; + v9 = a3[2]; + if ( v8 >= v9 ) + { +LABEL_6: + a3[2] = 0; + if ( !(_BYTE)a2 ) + (*(int (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v22, v8); + return v25; + } + } + else + { + v8 = v7[8]; + v22 = v7[7]; + v9 = a3[2]; + if ( v8 >= v9 ) + goto LABEL_6; + } + v21 = v8; + v25 = (int *)(v9 - v8); + v10 = v9 - v8; + v11 = 16 * ((unsigned int)(v9 - v8 + 27) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + v20 = v19; + memset(v19, (char)v23, v10); + v14 = v21; + a3[2] = 0; + if ( (v24 & 0xB0) == 32 ) + { + if ( !(_BYTE)a2 ) + { + v17 = *a1; + v24 = v14; + v18 = (*(int (__thiscall **)(int *, int, int))(v17 + 48))(a1, v22, v14); + if ( v24 == v18 ) + (*(void (__thiscall **)(int *, _BYTE *, int *))(*a1 + 48))(a1, v20, v25); + } + } + else + { + v24 = v14; + if ( !(_BYTE)a2 ) + { + v15 = (*(int (__thiscall **)(int *, _BYTE *, int *))(*a1 + 48))(a1, v20, v25); + if ( v25 == (int *)v15 ) + { + v16 = *a1; + v25 = (int *)v24; + (*(void (__thiscall **)(int *, int, int))(v16 + 48))(a1, v22, v24); + } + } + } + return a1; +} + +//----- (0049A840) -------------------------------------------------------- +int __thiscall std::num_put>::do_put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + double a6) +{ + return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); +} + +//----- (0049A890) -------------------------------------------------------- +int __thiscall std::num_put>::do_put( + void *this, + int a2, + int a3, + std::__num_base *a4, + char a5, + long double a6) +{ + return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 76, a6); +} + +//----- (0049A8E0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (0049A8F0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (0049A900) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + _DWORD *a3, + char a4, + UDItype a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (0049A910) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + _DWORD *a3, + char a4, + int a5, + int a6) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5, a6); +} + +//----- (0049A920) -------------------------------------------------------- +int __stdcall std::num_put>::_M_group_int( + char *a1, + int a2, + __int16 a3, + int a4, + _WORD *a5, + _WORD *a6, + int *a7) +{ + int result; // eax + + result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5; + *a7 = result; + return result; +} + +//----- (0049A970) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + wchar_t *S1, + int a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + unsigned int v8; // edi + void *v9; // esp + void *v10; // esp + unsigned int v11; // eax + int v12; // ebx + wchar_t *v13; // edx + int v14; // esi + char v15; // si + int v17; // eax + void *v18; // esp + void *v19; // esp + int v20; // eax + void *v21; // esp + void *v22; // esp + char *v23; // eax + _WORD *v24; // eax + wchar_t v25; // ax + std::locale::_Impl *v26; // eax + std::locale::_Impl *v27; // esi + int v28; // [esp-34h] [ebp-8Ch] + int v29; // [esp-2Ch] [ebp-84h] + wchar_t v30; // [esp-20h] [ebp-78h] BYREF + _WORD v31[16]; // [esp-1Ch] [ebp-74h] BYREF + void (__cdecl *v32)(void *); // [esp+4h] [ebp-54h] + unsigned int v33[8]; // [esp+8h] [ebp-50h] BYREF + unsigned int v34; // [esp+28h] [ebp-30h] + int v35; // [esp+2Ch] [ebp-2Ch] + wchar_t *v36; // [esp+30h] [ebp-28h] + int v37; // [esp+34h] [ebp-24h] + int v38; // [esp+38h] [ebp-20h] + int v39; // [esp+3Ch] [ebp-1Ch] + + v38 = a1; + v37 = a2; + v35 = a4; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v26 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v32); + *((_DWORD *)v26 + 1) = 0; + v27 = v26; + *(_DWORD *)v26 = &off_538BE4; + *((_DWORD *)v26 + 2) = 0; + *((_DWORD *)v26 + 3) = 0; + *((_BYTE *)v26 + 16) = 0; + *((_DWORD *)v26 + 5) = 0; + *((_DWORD *)v26 + 6) = 0; + *((_DWORD *)v26 + 7) = 0; + *((_DWORD *)v26 + 8) = 0; + *((_DWORD *)v26 + 9) = 0; + *((_BYTE *)v26 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v26, (int)(S1 + 54)); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v27, (const std::locale::facet *)v5, v33[0]); + v7 = *v6; + } + v39 = v7 + 40; + v8 = *((_DWORD *)S1 + 3); + v9 = alloca(64); + v10 = alloca(64); + v34 = v8 & 0x4A; + v11 = a5; + LOBYTE(v39) = v34 != 8 && v34 != 64; + if ( a5 <= 0 && (v8 & 0x4A) != 8 && (v8 & 0x4A) != 64 ) + v11 = -a5; + v36 = &v30; + v12 = std::__int_to_char(v33, v11, v7 + 40, v8, v39); + v13 = &v36[20 - v12]; + if ( !*(_BYTE *)(v7 + 16) ) + { + if ( (_BYTE)v39 ) + goto LABEL_8; +LABEL_18: + if ( (v8 & 0x200) != 0 && a5 ) + { + if ( v34 == 64 ) + { + v25 = *(_WORD *)(v7 + 48); + ++v12; + --v13; + } + else + { + v12 += 2; + v13 -= 2; + v13[1] = *(_WORD *)(v7 + 40 + 2 * (((v8 >> 14) & 1) + 2)); + v25 = *(_WORD *)(v7 + 48); + } + *v13 = v25; + } + goto LABEL_10; + } + v20 = 16 * ((unsigned int)(4 * v12 + 31) >> 4); + v21 = alloca(v20); + v22 = alloca(v20); + v28 = *(_DWORD *)(v7 + 12); + v23 = *(char **)(v7 + 8); + v36 = v31; + v24 = std::__add_grouping(v31, *(_WORD *)(v7 + 38), v23, v28, v13, &v13[v12]); + v13 = v36; + v12 = v24 - v36; + if ( !(_BYTE)v39 ) + goto LABEL_18; +LABEL_8: + if ( a5 < 0 ) + { + ++v12; + *--v13 = *(_WORD *)(v7 + 40); + } + else if ( (v8 & 0x800) != 0 ) + { + ++v12; + *--v13 = *(_WORD *)(v7 + 42); + v14 = *((_DWORD *)S1 + 2); + if ( v14 <= v12 ) + goto LABEL_11; + goto LABEL_15; + } +LABEL_10: + v14 = *((_DWORD *)S1 + 2); + if ( v14 <= v12 ) + goto LABEL_11; +LABEL_15: + v17 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); + v18 = alloca(v17); + v19 = alloca(v17); + v29 = v12; + v12 = v14; + std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v35, &v30, v13, v14, v29); + v13 = &v30; +LABEL_11: + *((_DWORD *)S1 + 2) = 0; + v15 = v37; + if ( !(_BYTE)v37 ) + v15 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v38 + 48))(v38, v13, v12) != v12; + LOBYTE(v39) = v15; + return v38; +} +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); +// 49A970: using guessed type unsigned int anonymous_1[8]; + +//----- (0049ACA0) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + wchar_t *S1, + int a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + unsigned int v8; // edi + void *v9; // esp + void *v10; // esp + int v11; // ebx + wchar_t *v12; // edx + int v13; // esi + char v14; // si + int v16; // eax + void *v17; // esp + void *v18; // esp + char *v19; // eax + _WORD *v20; // eax + wchar_t v21; // ax + int v22; // eax + void *v23; // esp + void *v24; // esp + std::locale::_Impl *v25; // eax + std::locale::_Impl *v26; // esi + int v27; // [esp-34h] [ebp-8Ch] + int v28; // [esp-2Ch] [ebp-84h] + wchar_t v29; // [esp-20h] [ebp-78h] BYREF + _WORD v30[16]; // [esp-1Ch] [ebp-74h] BYREF + void (__cdecl *v31)(void *); // [esp+4h] [ebp-54h] + unsigned int v32[7]; // [esp+8h] [ebp-50h] BYREF + int v33; // [esp+24h] [ebp-34h] + unsigned int v34; // [esp+28h] [ebp-30h] + int v35; // [esp+2Ch] [ebp-2Ch] + wchar_t *v36; // [esp+30h] [ebp-28h] + int v37; // [esp+34h] [ebp-24h] + bool v38; // [esp+3Bh] [ebp-1Dh] + int v39; // [esp+3Ch] [ebp-1Ch] + + v39 = a1; + v37 = a2; + v35 = a4; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v25 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v31); + *((_DWORD *)v25 + 1) = 0; + v26 = v25; + *(_DWORD *)v25 = &off_538BE4; + *((_DWORD *)v25 + 2) = 0; + *((_DWORD *)v25 + 3) = 0; + *((_BYTE *)v25 + 16) = 0; + *((_DWORD *)v25 + 5) = 0; + *((_DWORD *)v25 + 6) = 0; + *((_DWORD *)v25 + 7) = 0; + *((_DWORD *)v25 + 8) = 0; + *((_DWORD *)v25 + 9) = 0; + *((_BYTE *)v25 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v25, (int)(S1 + 54)); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v26, (const std::locale::facet *)v5, v32[0]); + v7 = *v6; + } + v33 = v7 + 40; + v8 = *((_DWORD *)S1 + 3); + v9 = alloca(64); + v10 = alloca(64); + v34 = v8 & 0x4A; + v36 = &v29; + v38 = v34 != 8 && v34 != 64; + v11 = std::__int_to_char(v32, a5, v7 + 40, v8, v38); + v12 = &v36[20 - v11]; + if ( *(_BYTE *)(v7 + 16) ) + { + v16 = 16 * ((unsigned int)(4 * v11 + 31) >> 4); + v17 = alloca(v16); + v18 = alloca(v16); + v27 = *(_DWORD *)(v7 + 12); + v19 = *(char **)(v7 + 8); + v36 = v30; + v20 = std::__add_grouping(v30, *(_WORD *)(v7 + 38), v19, v27, v12, &v12[v11]); + v12 = v36; + v11 = v20 - v36; + if ( v38 ) + goto LABEL_5; + } + else if ( v38 ) + { + goto LABEL_5; + } + if ( (v8 & 0x200) != 0 && a5 ) + { + if ( v34 == 64 ) + { + v21 = *(_WORD *)(v7 + 48); + ++v11; + --v12; + } + else + { + v11 += 2; + v12 -= 2; + v12[1] = *(_WORD *)(v33 + 2 * (((v8 >> 14) & 1) + 2)); + v21 = *(_WORD *)(v7 + 48); + } + *v12 = v21; + } +LABEL_5: + v13 = *((_DWORD *)S1 + 2); + if ( v13 > v11 ) + { + v22 = 16 * ((unsigned int)(2 * v13 + 27) >> 4); + v23 = alloca(v22); + v24 = alloca(v22); + v28 = v11; + v11 = *((_DWORD *)S1 + 2); + std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v35, &v29, v12, v13, v28); + v12 = &v29; + } + *((_DWORD *)S1 + 2) = 0; + v14 = v37; + if ( !(_BYTE)v37 ) + v14 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v39 + 48))(v39, v12, v11) != v11; + v38 = v14; + return v39; +} +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); +// 49ACA0: using guessed type unsigned int anonymous_1[7]; + +//----- (0049AF80) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + wchar_t *S1, + int a4, + UDItype a5) +{ + int v5; // ebx + int *v6; // esi + int v7; // edi + void *v8; // esp + void *v9; // esp + __int64 v10; // rax + int v11; // ebx + wchar_t *v12; // edx + int v13; // esi + char v14; // si + int v16; // eax + void *v17; // esp + void *v18; // esp + int v19; // eax + void *v20; // esp + void *v21; // esp + _WORD *v22; // eax + wchar_t v23; // ax + std::locale::_Impl *v24; // eax + std::locale::_Impl *v25; // edi + int v26; // [esp-4Ch] [ebp-A4h] + wchar_t v27[2]; // [esp-40h] [ebp-98h] BYREF + _WORD v28[32]; // [esp-3Ch] [ebp-94h] BYREF + void (__cdecl *v29)(void *); // [esp+4h] [ebp-54h] + unsigned int v30; // [esp+8h] [ebp-50h] + __int16 v31[8]; // [esp+10h] [ebp-48h] BYREF + int v32; // [esp+20h] [ebp-38h] + int v33; // [esp+24h] [ebp-34h] + int v34; // [esp+28h] [ebp-30h] + int v35; // [esp+2Ch] [ebp-2Ch] + int v36; // [esp+30h] [ebp-28h] + int v37; // [esp+34h] [ebp-24h] + UDItype n; // [esp+38h] [ebp-20h] + + v36 = a1; + v34 = a2; + v33 = a4; + n = a5; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v24 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v29); + *((_DWORD *)v24 + 1) = 0; + v25 = v24; + *(_DWORD *)v24 = &off_538BE4; + *((_DWORD *)v24 + 2) = 0; + *((_DWORD *)v24 + 3) = 0; + *((_BYTE *)v24 + 16) = 0; + *((_DWORD *)v24 + 5) = 0; + *((_DWORD *)v24 + 6) = 0; + *((_DWORD *)v24 + 7) = 0; + *((_DWORD *)v24 + 8) = 0; + *((_DWORD *)v24 + 9) = 0; + *((_BYTE *)v24 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v24, (int)(S1 + 54)); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v25, (const std::locale::facet *)v5, v30); + v7 = *v6; + } + v37 = v7 + 40; + v35 = *((_DWORD *)S1 + 3); + v8 = alloca(96); + v9 = alloca(96); + v32 = v35 & 0x4A; + v10 = n; + LOBYTE(v37) = v32 != 8 && v32 != 64; + if ( ((HIDWORD(n) | ((n - 1) >> 32)) & 0x80000000) != 0LL && (_BYTE)v37 ) + v10 = -(__int64)n; + v11 = std::__int_to_char(v31, v10, v7 + 40, v35, v37); + v12 = &v27[40 - v11]; + if ( !*(_BYTE *)(v7 + 16) ) + { + if ( (_BYTE)v37 ) + goto LABEL_8; +LABEL_18: + if ( (v35 & 0x200) != 0 && n ) + { + if ( v32 == 64 ) + { + v23 = *(_WORD *)(v7 + 48); + ++v11; + --v12; + } + else + { + v11 += 2; + v12 -= 2; + v12[1] = *(_WORD *)(v7 + 40 + 2 * ((((unsigned int)v35 >> 14) & 1) + 2)); + v23 = *(_WORD *)(v7 + 48); + } + *v12 = v23; + } + goto LABEL_10; + } + v19 = 16 * ((unsigned int)(4 * v11 + 31) >> 4); + v20 = alloca(v19); + v21 = alloca(v19); + v22 = std::__add_grouping(v28, *(_WORD *)(v7 + 38), *(char **)(v7 + 8), *(_DWORD *)(v7 + 12), v12, &v12[v11]); + v12 = v28; + v11 = v22 - v28; + if ( !(_BYTE)v37 ) + goto LABEL_18; +LABEL_8: + if ( (n & 0x8000000000000000LL) != 0LL ) + { + ++v11; + *--v12 = *(_WORD *)(v7 + 40); + } + else if ( (v35 & 0x800) != 0 ) + { + ++v11; + *--v12 = *(_WORD *)(v7 + 42); + v13 = *((_DWORD *)S1 + 2); + if ( v13 <= v11 ) + goto LABEL_11; + goto LABEL_15; + } +LABEL_10: + v13 = *((_DWORD *)S1 + 2); + if ( v13 <= v11 ) + goto LABEL_11; +LABEL_15: + v16 = 16 * ((unsigned int)(2 * v13 + 27) >> 4); + v17 = alloca(v16); + v18 = alloca(v16); + v26 = v11; + v11 = v13; + std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v33, v27, v12, v13, v26); + v12 = v27; +LABEL_11: + *((_DWORD *)S1 + 2) = 0; + v14 = v34; + if ( !(_BYTE)v34 ) + v14 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v36 + 48))(v36, v12, v11) != v11; + LOBYTE(n) = v14; + return v36; +} +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); +// 49AF80: using guessed type __int16 anonymous_2[8]; + +//----- (0049B2D0) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + wchar_t *S1, + int a4, + int a5, + int a6) +{ + int v6; // ebx + int *v7; // edi + int v8; // esi + unsigned int v9; // edi + void *v10; // esp + void *v11; // esp + int v12; // ebx + wchar_t *v13; // edx + int v14; // esi + char v15; // si + int v17; // eax + void *v18; // esp + void *v19; // esp + char *v20; // eax + _WORD *v21; // eax + wchar_t v22; // ax + int v23; // eax + void *v24; // esp + void *v25; // esp + std::locale::_Impl *v26; // eax + std::locale::_Impl *v27; // esi + int v28; // [esp-54h] [ebp-BCh] + int v29; // [esp-4Ch] [ebp-B4h] + wchar_t v30; // [esp-40h] [ebp-A8h] BYREF + _WORD v31[32]; // [esp-3Ch] [ebp-A4h] BYREF + void (__cdecl *v32)(void *); // [esp+4h] [ebp-64h] + unsigned int v33; // [esp+8h] [ebp-60h] + __int16 v34[14]; // [esp+10h] [ebp-58h] BYREF + int v35; // [esp+2Ch] [ebp-3Ch] + unsigned int v36; // [esp+30h] [ebp-38h] + int v37; // [esp+34h] [ebp-34h] + wchar_t *v38; // [esp+38h] [ebp-30h] + int v39; // [esp+3Ch] [ebp-2Ch] + bool v40; // [esp+43h] [ebp-25h] + unsigned __int64 v41; // [esp+44h] [ebp-24h] + int v42; // [esp+4Ch] [ebp-1Ch] + + v42 = a1; + v39 = a2; + v37 = a4; + v41 = __PAIR64__(a5, a6); + v6 = std::locale::id::_M_id(&std::numpunct::id); + v7 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v6); + v8 = *v7; + if ( !*v7 ) + { + v26 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v32); + *((_DWORD *)v26 + 1) = 0; + v27 = v26; + *(_DWORD *)v26 = &off_538BE4; + *((_DWORD *)v26 + 2) = 0; + *((_DWORD *)v26 + 3) = 0; + *((_BYTE *)v26 + 16) = 0; + *((_DWORD *)v26 + 5) = 0; + *((_DWORD *)v26 + 6) = 0; + *((_DWORD *)v26 + 7) = 0; + *((_DWORD *)v26 + 8) = 0; + *((_DWORD *)v26 + 9) = 0; + *((_BYTE *)v26 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v26, (int)(S1 + 54)); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v27, (const std::locale::facet *)v6, v33); + v8 = *v7; + } + v35 = v8 + 40; + v9 = *((_DWORD *)S1 + 3); + v10 = alloca(96); + v11 = alloca(96); + v36 = v9 & 0x4A; + v38 = &v30; + v40 = v36 != 8 && v36 != 64; + v12 = std::__int_to_char(v34, __PAIR64__(v41, HIDWORD(v41)), v8 + 40, v9, v40); + v13 = &v38[40 - v12]; + if ( *(_BYTE *)(v8 + 16) ) + { + v17 = 16 * ((unsigned int)(4 * v12 + 31) >> 4); + v18 = alloca(v17); + v19 = alloca(v17); + v28 = *(_DWORD *)(v8 + 12); + v20 = *(char **)(v8 + 8); + v38 = v31; + v21 = std::__add_grouping(v31, *(_WORD *)(v8 + 38), v20, v28, v13, &v13[v12]); + v13 = v38; + v12 = v21 - v38; + if ( v40 ) + goto LABEL_5; + } + else if ( v40 ) + { + goto LABEL_5; + } + if ( (v9 & 0x200) != 0 && v41 ) + { + if ( v36 == 64 ) + { + v22 = *(_WORD *)(v8 + 48); + ++v12; + --v13; + } + else + { + v12 += 2; + v13 -= 2; + v13[1] = *(_WORD *)(v35 + 2 * (((v9 >> 14) & 1) + 2)); + v22 = *(_WORD *)(v8 + 48); + } + *v13 = v22; + } +LABEL_5: + v14 = *((_DWORD *)S1 + 2); + if ( v14 > v12 ) + { + v23 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); + v24 = alloca(v23); + v25 = alloca(v23); + v29 = v12; + v12 = *((_DWORD *)S1 + 2); + std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v37, &v30, v13, v14, v29); + v13 = &v30; + } + *((_DWORD *)S1 + 2) = 0; + v15 = v39; + if ( !(_BYTE)v39 ) + v15 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v42 + 48))(v42, v13, v12) != v12; + BYTE4(v41) = v15; + return v42; +} +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); +// 49B2D0: using guessed type __int16 anonymous_2[14]; + +//----- (0049B5C0) -------------------------------------------------------- +int __stdcall std::num_put>::_M_group_float( + char *a1, + int a2, + __int16 a3, + wchar_t *S2, + _WORD *a5, + _WORD *a6, + _DWORD *a7) +{ + int v7; // ebx + wchar_t *S1; // edx + int v9; // ebp + int v10; // eax + int result; // eax + + if ( S2 ) + { + v7 = S2 - a6; + S1 = std::__add_grouping(a5, a3, a1, a2, a6, S2); + v9 = S1 - a5; + v10 = 0; + if ( *a7 != v7 ) + { + wmemcpy(S1, S2, *a7 - v7); + v10 = *a7 - v7; + } + result = v9 + v10; + *a7 = result; + } + else + { + result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5; + *a7 = result; + } + return result; +} + +//----- (0049B690) -------------------------------------------------------- +// bad sp value at call has been detected, the output may be wrong! +int __thiscall std::num_put>::_M_insert_float( + void *this, + int a2, + int a3, + wchar_t *S1, + int a5, + int a6, + double a7) +{ + int v7; // ebx + int *v8; // edi + int v9; // esi + void *v10; // esp + void *v11; // esp + int v12; // eax + int *v13; // ecx + int v14; // eax + void *v15; // esp + void *v16; // esp + int v17; // eax + char *v18; // edi + int v19; // esi + wchar_t *v20; // edx + wchar_t *v21; // eax + wchar_t *v22; // ecx + char v23; // al + bool v24; // zf + signed int v25; // ebx + int v27; // eax + void *v28; // esp + void *v29; // esp + int v30; // eax + void *v31; // esp + void *v32; // esp + wchar_t v33; // bx + int v34; // esi + wchar_t *v35; // ebx + int v36; // eax + void *v37; // esp + void *v38; // esp + int v39; // eax + int v40; // eax + void *v41; // esp + void *v42; // esp + std::locale::_Impl *v43; // eax + std::locale::_Impl *v44; // esi + int v45; // [esp-34h] [ebp-BCh] + int v46; // [esp-30h] [ebp-B8h] + int v47; // [esp-2Ch] [ebp-B4h] + int v48; // [esp-28h] [ebp-B0h] + char v49; // [esp-20h] [ebp-A8h] BYREF + char v50; // [esp-1Fh] [ebp-A7h] + char v51; // [esp-1Eh] [ebp-A6h] + void (__cdecl *v52)(void *); // [esp+4h] [ebp-84h] + unsigned int v53; // [esp+8h] [ebp-80h] + int v54; // [esp+14h] [ebp-74h] + wchar_t v55; // [esp+20h] [ebp-68h] BYREF + __int16 v56; // [esp+22h] [ebp-66h] BYREF + int v57; // [esp+2Ch] [ebp-5Ch] + void *v58; // [esp+30h] [ebp-58h] + int v59; // [esp+34h] [ebp-54h] + size_t BufferCount; // [esp+38h] [ebp-50h] + wchar_t *v61; // [esp+3Ch] [ebp-4Ch] + wchar_t *v62[2]; // [esp+40h] [ebp-48h] + int v63; // [esp+48h] [ebp-40h] + wchar_t *v64; // [esp+4Ch] [ebp-3Ch] + size_t MaxCount; // [esp+58h] [ebp-30h] BYREF + int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF + char v67[40]; // [esp+60h] [ebp-28h] BYREF + + v58 = this; + v63 = a2; + *(double *)v62 = a7; + v59 = a3; + v57 = a5; + BufferCount = a6; + v61 = S1 + 54; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v7); + v64 = (wchar_t *)*v8; + if ( !v64 ) + { + v43 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v52); + *((_DWORD *)v43 + 1) = 0; + v44 = v43; + *(_DWORD *)v43 = &off_538BE4; + *((_DWORD *)v43 + 2) = 0; + *((_DWORD *)v43 + 3) = 0; + *((_BYTE *)v43 + 16) = 0; + *((_DWORD *)v43 + 5) = 0; + *((_DWORD *)v43 + 6) = 0; + *((_DWORD *)v43 + 7) = 0; + *((_DWORD *)v43 + 8) = 0; + *((_DWORD *)v43 + 9) = 0; + *((_BYTE *)v43 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v43, (int)v61); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v44, (const std::locale::facet *)v7, v53); + v64 = (wchar_t *)*v8; + } + v9 = *((_DWORD *)S1 + 1); + if ( v9 < 0 ) + v9 = 6; + std::__num_base::_S_format_float((std::__num_base *)S1, (const std::ios_base *)v67, (char *)(char)BufferCount); + BufferCount = *((_DWORD *)S1 + 3); + v10 = alloca(64); + v11 = alloca(64); + if ( (BufferCount & 0x104) == 260 ) + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v39 = std::__convert_from_v(&c_locale, &v49, 0x2Du, v67, v62[0], v62[1]); + MaxCount = v39; + if ( v39 > 44 ) + { + BufferCount = v39 + 1; + v40 = 16 * ((unsigned int)(v39 + 28) >> 4); + v41 = alloca(v40); + v42 = alloca(v40); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v49, BufferCount, v67, v62[0], v62[1]); + } + } + else + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v12 = std::__convert_from_v(&c_locale, &v49, 0x2Du, v67, v9, v62[0], v62[1]); + MaxCount = v12; + if ( v12 > 44 ) + { + BufferCount = v12 + 1; + v27 = 16 * ((unsigned int)(v12 + 28) >> 4); + v28 = alloca(v27); + v29 = alloca(v27); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v49, BufferCount, v67, v9, v62[0], v62[1]); + } + } + v13 = (int *)std::use_facet>((int)v61); + v14 = 16 * ((2 * MaxCount + 27) >> 4); + v15 = alloca(v14); + v16 = alloca(v14); + v17 = *v13; + v18 = &v49; + v62[0] = (wchar_t *)&v49; + (*(void (__thiscall **)(int *, char *, char *, char *, int, int, int, int))(v17 + 44))( + v13, + &v49, + &v49 + MaxCount, + &v49, + v45, + v46, + v47, + v48); + v19 = MaxCount; + v20 = v62[0]; + if ( !MaxCount ) + { + if ( *((_BYTE *)v64 + 16) ) + { + v62[0] = 0; + goto LABEL_17; + } +LABEL_11: + v25 = *((_DWORD *)S1 + 2); + if ( v25 <= v19 ) + goto LABEL_12; + goto LABEL_20; + } + v61 = v62[0]; + v21 = (wchar_t *)memchr(&v49, 46, MaxCount); + v20 = v61; + v22 = v21; + v62[0] = v21; + v23 = *((_BYTE *)v64 + 16); + LOBYTE(BufferCount) = v23; + if ( !v22 ) + { + if ( v23 && (v19 <= 2 || v50 <= 57 && (unsigned __int8)(v51 - 48) <= 9u && v50 > 47) ) + goto LABEL_17; + goto LABEL_11; + } + v24 = (_BYTE)BufferCount == 0; + v62[0] = &v61[(char *)v62[0] - &v49]; + *v62[0] = v64[18]; + if ( v24 ) + goto LABEL_11; +LABEL_17: + v30 = 16 * ((unsigned int)(4 * v19 + 27) >> 4); + v31 = alloca(v30); + v32 = alloca(v30); + if ( ((v49 - 43) & 0xFD) != 0 ) + { + v35 = &v55; + v34 = 0; + } + else + { + v33 = *v20; + v18 = (char *)(v20 + 1); + MaxCount = v19 - 1; + v34 = 1; + v55 = v33; + v35 = (wchar_t *)&v56; + } + v61 = &v55; + std::num_put>::_M_group_float( + *((char **)v64 + 2), + *((_DWORD *)v64 + 3), + v64[19], + v62[0], + v35, + v18, + &MaxCount); + v19 = MaxCount + v34; + MaxCount = v19; + v18 = (char *)v61; + v25 = *((_DWORD *)S1 + 2); + if ( v25 <= v19 ) + goto LABEL_12; +LABEL_20: + v36 = 16 * ((unsigned int)(2 * v25 + 27) >> 4); + v37 = alloca(v36); + v38 = alloca(v36); + v54 = v19; + v19 = v25; + v64 = &v55; + std::__pad>::_S_pad( + S1, + (wchar_t *)(unsigned __int16)v57, + &v55, + (wchar_t *)v18, + v25, + v54); + MaxCount = v25; + v18 = (char *)v64; +LABEL_12: + *((_DWORD *)S1 + 2) = 0; + if ( !(_BYTE)v59 ) + (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v63 + 48))(v63, v18, v19); + return v63; +} +// 49B7DD: bad sp value at call +// 49B7B7: variable 'v45' is possibly undefined +// 49B7B7: variable 'v46' is possibly undefined +// 49B7B7: variable 'v47' is possibly undefined +// 49B7B7: variable 'v48' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (0049BB70) -------------------------------------------------------- +// bad sp value at call has been detected, the output may be wrong! +int __fastcall std::num_put>::_M_insert_float( + int a1, + int a2, + int a3, + int a4, + wchar_t *S1, + int a6, + int a7, + long double a8) +{ + int v8; // ebx + int *v9; // edi + int v10; // esi + void *v11; // esp + void *v12; // esp + int v13; // eax + int *v14; // ecx + int v15; // eax + void *v16; // esp + void *v17; // esp + int v18; // eax + char *v19; // edi + int v20; // esi + wchar_t *v21; // edx + wchar_t *v22; // eax + wchar_t *v23; // ecx + char v24; // al + bool v25; // zf + signed int v26; // ebx + int v28; // eax + void *v29; // esp + void *v30; // esp + int v31; // eax + void *v32; // esp + void *v33; // esp + wchar_t v34; // bx + int v35; // esi + int *v36; // ebx + int v37; // eax + void *v38; // esp + void *v39; // esp + int v40; // eax + int v41; // eax + void *v42; // esp + void *v43; // esp + std::locale::_Impl *v44; // eax + std::locale::_Impl *v45; // esi + int v46; // [esp-44h] [ebp-BCh] + int v47; // [esp-40h] [ebp-B8h] + int v51; // [esp-3Ch] [ebp-B4h] + int v53; // [esp-38h] [ebp-B0h] + int v54; // [esp-34h] [ebp-ACh] + char v55; // [esp-30h] [ebp-A8h] BYREF + char v56; // [esp-2Fh] [ebp-A7h] + char v57; // [esp-2Eh] [ebp-A6h] + void (__cdecl *v58)(void *); // [esp+4h] [ebp-74h] + unsigned int v59; // [esp+8h] [ebp-70h] + int v60; // [esp+14h] [ebp-64h] + int v61[2]; // [esp+20h] [ebp-58h] BYREF + char v62; // [esp+2Bh] [ebp-4Dh] + int v63; // [esp+2Ch] [ebp-4Ch] + size_t BufferCount; // [esp+30h] [ebp-48h] + wchar_t *v65; // [esp+34h] [ebp-44h] + int v66; // [esp+38h] [ebp-40h] + int *v67; // [esp+3Ch] [ebp-3Ch] + size_t MaxCount; // [esp+48h] [ebp-30h] BYREF + int *c_locale; // [esp+4Ch] [ebp-2Ch] BYREF + char v70[40]; // [esp+50h] [ebp-28h] BYREF + + v61[1] = a1; + v66 = a3; + v63 = a4; + v61[0] = a6; + BufferCount = a7; + v65 = S1 + 54; + v8 = std::locale::id::_M_id(&std::numpunct::id); + v9 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v8); + v67 = (int *)*v9; + if ( !v67 ) + { + v44 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v58); + *((_DWORD *)v44 + 1) = 0; + v45 = v44; + *(_DWORD *)v44 = &off_538BE4; + *((_DWORD *)v44 + 2) = 0; + *((_DWORD *)v44 + 3) = 0; + *((_BYTE *)v44 + 16) = 0; + *((_DWORD *)v44 + 5) = 0; + *((_DWORD *)v44 + 6) = 0; + *((_DWORD *)v44 + 7) = 0; + *((_DWORD *)v44 + 8) = 0; + *((_DWORD *)v44 + 9) = 0; + *((_BYTE *)v44 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v44, (int)v65); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v45, (const std::locale::facet *)v8, v59); + v67 = (int *)*v9; + } + v10 = *((_DWORD *)S1 + 1); + if ( v10 < 0 ) + v10 = 6; + std::__num_base::_S_format_float((std::__num_base *)S1, (const std::ios_base *)v70, (char *)(char)BufferCount); + BufferCount = *((_DWORD *)S1 + 3); + v11 = alloca(80); + v12 = alloca(80); + if ( (BufferCount & 0x104) == 260 ) + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v40 = std::__convert_from_v(&c_locale, &v55, 0x36u, v70, *(_QWORD *)&a8, HIDWORD(a8)); + MaxCount = v40; + if ( v40 > 53 ) + { + BufferCount = v40 + 1; + v41 = 16 * ((unsigned int)(v40 + 28) >> 4); + v42 = alloca(v41); + v43 = alloca(v41); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v55, BufferCount, v70, *(_QWORD *)&a8, HIDWORD(a8)); + } + } + else + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v13 = std::__convert_from_v(&c_locale, &v55, 0x36u, v70, v10, *(_QWORD *)&a8, HIDWORD(a8)); + MaxCount = v13; + if ( v13 > 53 ) + { + BufferCount = v13 + 1; + v28 = 16 * ((unsigned int)(v13 + 28) >> 4); + v29 = alloca(v28); + v30 = alloca(v28); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v55, BufferCount, v70, v10, *(_QWORD *)&a8, HIDWORD(a8)); + } + } + v14 = (int *)std::use_facet>((int)v65); + v15 = 16 * ((2 * MaxCount + 27) >> 4); + v16 = alloca(v15); + v17 = alloca(v15); + v18 = *v14; + v19 = &v55; + v65 = (wchar_t *)&v55; + (*(void (__thiscall **)(int *, char *, char *, char *, int, int, int, int, int))(v18 + 44))( + v14, + &v55, + &v55 + MaxCount, + &v55, + v46, + v47, + v51, + v53, + v54); + v20 = MaxCount; + v21 = v65; + if ( !MaxCount ) + { + if ( *((_BYTE *)v67 + 16) ) + { + v65 = 0; + goto LABEL_17; + } +LABEL_11: + v26 = *((_DWORD *)S1 + 2); + if ( v26 <= v20 ) + goto LABEL_12; + goto LABEL_20; + } + BufferCount = (size_t)v65; + v22 = (wchar_t *)memchr(&v55, 46, MaxCount); + v21 = (wchar_t *)BufferCount; + v23 = v22; + v65 = v22; + v24 = *((_BYTE *)v67 + 16); + v62 = v24; + if ( !v23 ) + { + if ( v24 && (v20 <= 2 || v56 <= 57 && (unsigned __int8)(v57 - 48) <= 9u && v56 > 47) ) + goto LABEL_17; + goto LABEL_11; + } + v25 = v62 == 0; + v65 = (wchar_t *)(BufferCount + 2 * ((char *)v65 - &v55)); + *v65 = *((_WORD *)v67 + 18); + if ( v25 ) + goto LABEL_11; +LABEL_17: + v31 = 16 * ((unsigned int)(4 * v20 + 27) >> 4); + v32 = alloca(v31); + v33 = alloca(v31); + if ( ((v55 - 43) & 0xFD) != 0 ) + { + v36 = v61; + v35 = 0; + } + else + { + v34 = *v21; + v19 = (char *)(v21 + 1); + MaxCount = v20 - 1; + v35 = 1; + LOWORD(v61[0]) = v34; + v36 = (int *)((char *)v61 + 2); + } + BufferCount = (size_t)v61; + std::num_put>::_M_group_float( + (char *)v67[2], + v67[3], + *((_WORD *)v67 + 19), + v65, + v36, + v19, + &MaxCount); + v20 = MaxCount + v35; + MaxCount = v20; + v19 = (char *)BufferCount; + v26 = *((_DWORD *)S1 + 2); + if ( v26 <= v20 ) + goto LABEL_12; +LABEL_20: + v37 = 16 * ((unsigned int)(2 * v26 + 27) >> 4); + v38 = alloca(v37); + v39 = alloca(v37); + v60 = v20; + v20 = v26; + v67 = v61; + std::__pad>::_S_pad( + S1, + (wchar_t *)LOWORD(v61[0]), + (wchar_t *)v61, + (wchar_t *)v19, + v26, + v60); + MaxCount = v26; + v19 = (char *)v67; +LABEL_12: + *((_DWORD *)S1 + 2) = 0; + if ( !(_BYTE)v63 ) + (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v66 + 48))(v66, v19, v20); + return v66; +} +// 49BCB7: bad sp value at call +// 49BC91: variable 'v46' is possibly undefined +// 49BC91: variable 'v47' is possibly undefined +// 49BC91: variable 'v51' is possibly undefined +// 49BC91: variable 'v53' is possibly undefined +// 49BC91: variable 'v54' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (0049C040) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 36))(this, a2, a3, a4, a5); +} + +//----- (0049C050) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (0049C070) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 28))(this, a2, a3, a4, a5); +} + +//----- (0049C080) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 32))(this, a2, a3, a4, a5); +} + +//----- (0049C090) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + wchar_t *a4, + unsigned __int16 a5, + int a6) +{ + int (__stdcall *v6)(int, int, wchar_t *, unsigned __int16, int); // eax + + v6 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, int))(*(_DWORD *)this + 12); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return v6(a2, a3, a4, a5, a6); +} + +//----- (0049C0C0) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + wchar_t *a4, + unsigned __int16 a5, + int a6) +{ + int (__stdcall *v6)(int, int, wchar_t *, unsigned __int16, int); // eax + + v6 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, int))(*(_DWORD *)this + 16); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return v6(a2, a3, a4, a5, a6); +} + +//----- (0049C0F0) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + wchar_t *a4, + unsigned __int16 a5, + UDItype a6) +{ + int (__stdcall *v6)(int, int, wchar_t *, unsigned __int16, UDItype); // eax + + v6 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, UDItype))(*(_DWORD *)this + 20); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return ((int (__stdcall *)(int, int, wchar_t *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); +} + +//----- (0049C120) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + wchar_t *a4, + unsigned __int16 a5, + int a6, + int a7) +{ + int (__stdcall *v7)(int, int, wchar_t *, unsigned __int16, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, int, int))(*(_DWORD *)this + 24); + if ( v7 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int( + a2, + a3, + a4, + a5, + a6, + a7); + else + return v7(a2, a3, a4, a5, a6, a7); +} + +//----- (0049C150) -------------------------------------------------------- +int __stdcall std::num_put>::_M_pad( + unsigned __int16 a1, + int a2, + wchar_t *S1, + wchar_t *a4, + wchar_t *a5, + int *a6) +{ + int result; // eax + + result = std::__pad>::_S_pad(S1, (wchar_t *)a1, a4, a5, a2, *a6); + *a6 = a2; + return result; +} + +//----- (0049C1A0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *S1, + unsigned __int16 a4, + int a5) +{ + int v5; // edi + int result; // eax + + v5 = *((_DWORD *)S1 + 3); + *((_DWORD *)S1 + 3) = v5 & 0xFFFFBDB5 | 0x208; + result = std::num_put>::_M_insert_int(a1, a2, S1, a4, a5); + *((_DWORD *)S1 + 3) = v5; + return result; +} + +//----- (0049C220) -------------------------------------------------------- +int *__stdcall std::num_put>::do_put( + int *a1, + int a2, + wchar_t *S1, + int a4, + int a5) +{ + int v5; // eax + _DWORD *v7; // eax + int v8; // edx + int v9; // eax + size_t v10; // ecx + int v11; // eax + void *v12; // esp + void *v13; // esp + int v14; // edx + int v15; // eax + int v16; // eax + int v17; // eax + int v18; // eax + wchar_t v19[4]; // [esp+20h] [ebp-48h] BYREF + wchar_t *v20; // [esp+28h] [ebp-40h] + int v21; // [esp+2Ch] [ebp-3Ch] + int v22; // [esp+30h] [ebp-38h] + int v23; // [esp+34h] [ebp-34h] + int v24; // [esp+38h] [ebp-30h] + int *v25; // [esp+3Ch] [ebp-2Ch] + + v5 = *((_DWORD *)S1 + 3); + v23 = a4; + v24 = v5; + if ( (v5 & 1) == 0 ) + return (int *)std::num_put>::_M_insert_int( + (int)a1, + a2, + S1, + (unsigned __int16)a4, + (unsigned __int8)a5); + v22 = a5; + v25 = a1; + v7 = (_DWORD *)std::__use_cache>::operator()((int *)S1 + 27); + if ( (_BYTE)a5 ) + { + v8 = v7[6]; + v22 = v7[5]; + v9 = *((_DWORD *)S1 + 2); + if ( v8 >= v9 ) + { +LABEL_6: + *((_DWORD *)S1 + 2) = 0; + if ( !(_BYTE)a2 ) + (*(int (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v22, v8); + return v25; + } + } + else + { + v8 = v7[8]; + v22 = v7[7]; + v9 = *((_DWORD *)S1 + 2); + if ( v8 >= v9 ) + goto LABEL_6; + } + v21 = v8; + v25 = (int *)(v9 - v8); + v10 = v9 - v8; + v11 = 16 * ((unsigned int)(2 * (v9 - v8) + 27) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + v20 = v19; + wmemset(v19, v23, v10); + v14 = v21; + *((_DWORD *)S1 + 2) = 0; + if ( (v24 & 0xB0) == 32 ) + { + if ( !(_BYTE)a2 ) + { + v17 = *a1; + v24 = v14; + v18 = (*(int (__thiscall **)(int *, int, int))(v17 + 48))(a1, v22, v14); + if ( v24 == v18 ) + (*(void (__thiscall **)(int *, wchar_t *, int *))(*a1 + 48))(a1, v20, v25); + } + } + else + { + v24 = v14; + if ( !(_BYTE)a2 ) + { + v15 = (*(int (__thiscall **)(int *, wchar_t *, int *))(*a1 + 48))(a1, v20, v25); + if ( v25 == (int *)v15 ) + { + v16 = *a1; + v25 = (int *)v24; + (*(void (__thiscall **)(int *, int, int))(v16 + 48))(a1, v22, v24); + } + } + } + return a1; +} + +//----- (0049C410) -------------------------------------------------------- +int __thiscall std::num_put>::do_put( + void *this, + int a2, + int a3, + wchar_t *S1, + unsigned __int16 a5, + double a6) +{ + return std::num_put>::_M_insert_float(this, a2, a3, S1, a5, 0, a6); +} + +//----- (0049C460) -------------------------------------------------------- +int __thiscall std::num_put>::do_put( + void *this, + int a2, + int a3, + wchar_t *S1, + unsigned __int16 a5, + long double a6) +{ + return std::num_put>::_M_insert_float( + (int)this, + a3, + a2, + a3, + S1, + a5, + 76, + a6); +} + +//----- (0049C4B0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *a3, + unsigned __int16 a4, + int a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (0049C4C0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *a3, + unsigned __int16 a4, + int a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (0049C4D0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *a3, + unsigned __int16 a4, + UDItype a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (0049C4E0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *a3, + unsigned __int16 a4, + int a5, + int a6) +{ + return std::num_put>::_M_insert_int( + a1, + a2, + a3, + a4, + a5, + a6); +} + +//----- (0049C4F0) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + _DWORD *this, + int a2) +{ + _DWORD *v2; // esi + _DWORD *v3; // edi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + return v2; + return v3; +} + +//----- (0049C550) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + _DWORD *this, + int a2) +{ + _DWORD *v2; // esi + _DWORD *v3; // edi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + return v2; + return v3; +} + +//----- (0049C5B0) -------------------------------------------------------- +const char *std::bad_cast::what() +{ + return "std::bad_cast"; +} + +//----- (0049C5C0) -------------------------------------------------------- +int __thiscall std::function::operator()(int this, char a2, char a3) +{ + if ( !*(_DWORD *)(this + 8) ) + std::__throw_bad_function_call(); + return (*(int (__cdecl **)(int, char *, char *))(this + 12))(this, &a2, &a3); +} + +//----- (0049C5F0) -------------------------------------------------------- +int __fastcall std::ios_base::failure::what(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (0049C610) -------------------------------------------------------- +int __stdcall std::messages::_M_convert_to_char(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0049C620) -------------------------------------------------------- +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) +{ + *this = &unk_51641C; + return this; +} + +//----- (0049C630) -------------------------------------------------------- +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) +{ + (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); + return this; +} + +//----- (0049C670) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3) +{ + int (__stdcall *v3)(int, int); // eax + + v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v3 == std::messages::do_open ) + return 0; + else + return v3(a2, a3); +} + +//----- (0049C690) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3, int a4) +{ + int (__stdcall *v4)(int, int); // edx + + v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v4 == std::messages::do_open ) + return 0; + else + return v4(a2, a3); +} + +//----- (0049C6D0) -------------------------------------------------------- +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) +{ + int (__stdcall *result)(int); // eax + + result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); + if ( result != std::messages::do_close ) + return (int (__stdcall *)(int))result(a2); + return result; +} +// 49C720: using guessed type int __stdcall std::messages::do_close(int); + +//----- (0049C6F0) -------------------------------------------------------- +unsigned int **__thiscall std::messages::do_get( + unsigned int **this, + int a2, + int a3, + int a4, + int a5, + unsigned int **a6) +{ + const std::string *v8; // [esp+4h] [ebp-18h] + + std::string::string(this, a6, v8); + return this; +} +// 49C6FD: variable 'v8' is possibly undefined + +//----- (0049C710) -------------------------------------------------------- +int __stdcall std::messages::do_open(int a1, int a2) +{ + return 0; +} + +//----- (0049C730) -------------------------------------------------------- +int __stdcall std::messages::_M_convert_to_char(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0049C740) -------------------------------------------------------- +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) +{ + *this = &unk_51640C; + return this; +} + +//----- (0049C750) -------------------------------------------------------- +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) +{ + (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); + return this; +} + +//----- (0049C790) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3) +{ + int (__stdcall *v3)(int, int); // eax + + v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v3 == std::messages::do_open ) + return 0; + else + return v3(a2, a3); +} + +//----- (0049C7B0) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3, int a4) +{ + int (__stdcall *v4)(int, int); // edx + + v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v4 == std::messages::do_open ) + return 0; + else + return v4(a2, a3); +} + +//----- (0049C7F0) -------------------------------------------------------- +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) +{ + int (__stdcall *result)(int); // eax + + result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); + if ( result != std::messages::do_close ) + return (int (__stdcall *)(int))result(a2); + return result; +} +// 49C840: using guessed type int __stdcall std::messages::do_close(int); + +//----- (0049C810) -------------------------------------------------------- +_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _DWORD *a6) +{ + std::wstring::basic_string(this, a6); + return this; +} + +//----- (0049C830) -------------------------------------------------------- +int __stdcall std::messages::do_open(int a1, int a2) +{ + return 0; +} + +//----- (0049C850) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 49C850: using guessed type int var_D[3]; + +//----- (0049C880) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); + return this; +} +// 49C880: using guessed type int var_D[3]; + +//----- (0049C8B0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); + return this; +} +// 49C8B0: using guessed type int var_D[3]; + +//----- (0049C8E0) -------------------------------------------------------- +int __fastcall std::numpunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 36); + else + return v1(); +} + +//----- (0049C900) -------------------------------------------------------- +int __fastcall std::numpunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 37); + else + return v1(); +} + +//----- (0049C920) -------------------------------------------------------- +int __fastcall std::numpunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); +} + +//----- (0049C930) -------------------------------------------------------- +int __fastcall std::numpunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); +} + +//----- (0049C940) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::numpunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 49C940: using guessed type int var_D[3]; + +//----- (0049C9A0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::numpunct::do_truename ) + std::string::string(this, *(char **)(a2[2] + 20), (int)v5); + else + v3(a2); + return this; +} +// 49C9A0: using guessed type int var_D[3]; + +//----- (0049CA00) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::numpunct::do_falsename ) + std::string::string(this, *(char **)(a2[2] + 28), (int)v5); + else + v3(a2); + return this; +} +// 49CA00: using guessed type int var_D[3]; + +//----- (0049CA60) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 49CA60: using guessed type int var_D[3]; + +//----- (0049CA90) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); + return this; +} +// 49CA90: using guessed type int var_D[3]; + +//----- (0049CAC0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); + return this; +} +// 49CAC0: using guessed type int var_D[3]; + +//----- (0049CAF0) -------------------------------------------------------- +int __fastcall std::numpunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 36); + else + return v1(); +} + +//----- (0049CB10) -------------------------------------------------------- +int __fastcall std::numpunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 38); + else + return v1(); +} + +//----- (0049CB30) -------------------------------------------------------- +int __fastcall std::numpunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); +} + +//----- (0049CB40) -------------------------------------------------------- +int __fastcall std::numpunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); +} + +//----- (0049CB50) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::numpunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 49CB50: using guessed type int var_D[3]; + +//----- (0049CBB0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::numpunct::do_truename ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 20), (int)v5); + else + v3(a2); + return this; +} +// 49CBB0: using guessed type int var_D[3]; + +//----- (0049CC10) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::numpunct::do_falsename ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 28), (int)v5); + else + v3(a2); + return this; +} +// 49CC10: using guessed type int var_D[3]; + +//----- (0049CC70) -------------------------------------------------------- +int __fastcall std::time_get>::date_order(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); + if ( v1 == std::time_get>::do_date_order ) + return 0; + else + return v1(); +} + +//----- (0049CC90) -------------------------------------------------------- +int __stdcall std::time_get>::do_get_date( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + _DWORD *v6; // eax + int v7; // esi + unsigned __int64 v8; // rax + char v10; // [esp+2Ch] [ebp-20h] + char v11; // [esp+2Ch] [ebp-20h] + + v6 = std::use_facet>(a4 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + (char *)*(_DWORD *)(v6[2] + 8)); + v7 = v8; + BYTE4(v8) = HIDWORD(v8) == -1; + v10 = BYTE4(v8) & ((_DWORD)v8 != 0); + if ( v10 ) + { + BYTE4(v8) = 0; + if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) + { + LODWORD(v8) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 36))(v8, 0); + BYTE4(v8) = (_DWORD)v8 != -1 ? 0 : v10; + v7 = (_DWORD)v8 == -1 ? 0 : v7; + } + } + LOBYTE(v8) = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + LOBYTE(v8) = 0; + if ( a2[2] >= a2[3] ) + { + v11 = BYTE4(v8); + LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + BYTE4(v8) = v11; + LOBYTE(v8) = (_DWORD)v8 == -1; + } + } + } + if ( BYTE4(v8) == (_BYTE)v8 ) + *a5 |= 2u; + return v7; +} + +//----- (0049CD90) -------------------------------------------------------- +int __stdcall std::time_get>::do_get_time( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + _DWORD *v6; // eax + int v7; // esi + unsigned __int64 v8; // rax + char v10; // [esp+2Ch] [ebp-20h] + char v11; // [esp+2Ch] [ebp-20h] + + v6 = std::use_facet>(a4 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + (char *)*(_DWORD *)(v6[2] + 16)); + v7 = v8; + BYTE4(v8) = HIDWORD(v8) == -1; + v10 = BYTE4(v8) & ((_DWORD)v8 != 0); + if ( v10 ) + { + BYTE4(v8) = 0; + if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) + { + LODWORD(v8) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 36))(v8, 0); + BYTE4(v8) = (_DWORD)v8 != -1 ? 0 : v10; + v7 = (_DWORD)v8 == -1 ? 0 : v7; + } + } + LOBYTE(v8) = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + LOBYTE(v8) = 0; + if ( a2[2] >= a2[3] ) + { + v11 = BYTE4(v8); + LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + BYTE4(v8) = v11; + LOBYTE(v8) = (_DWORD)v8 == -1; + } + } + } + if ( BYTE4(v8) == (_BYTE)v8 ) + *a5 |= 2u; + return v7; +} + +//----- (0049CE90) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_year( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + int v7; // edx + _DWORD *v8; // ecx + _DWORD *v9; // ebp + int v10; // ebx + char v11; // bl + char v12; // al + int v14; // eax + char v15; // [esp+34h] [ebp-38h] + _DWORD *v16; // [esp+38h] [ebp-34h] + int v17; // [esp+48h] [ebp-24h] BYREF + int v18[8]; // [esp+4Ch] [ebp-20h] BYREF + + v18[0] = 0; + v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v17, 0, 9999, 4u, a5, v18); + v9 = v8; + if ( v18[0] ) + { + *a6 |= 4u; + } + else + { + v10 = v17 - 1900; + if ( v17 < 0 ) + v10 = v17 + 100; + *(_DWORD *)(a7 + 20) = v10; + } + v11 = v7 == -1; + v15 = v11 & (v8 != 0); + if ( v15 ) + { + v11 = 0; + if ( v8[2] >= v8[3] ) + { + v16 = v8; + v14 = (*(int (**)(void))(*v8 + 36))(); + v11 = v14 != -1 ? 0 : v15; + v9 = v14 == -1 ? 0 : v16; + } + } + v12 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v12 = 0; + if ( a3[2] >= a3[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; + } + } + if ( v11 == v12 ) + *a6 |= 2u; + return v9; +} +// 49CF21: variable 'v7' is possibly undefined +// 49CE90: using guessed type int var_20[8]; + +//----- (0049CFF0) -------------------------------------------------------- +int __fastcall std::time_get>::get_weekday(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); +} + +//----- (0049D000) -------------------------------------------------------- +int std::time_get>::do_date_order() +{ + return 0; +} + +//----- (0049D010) -------------------------------------------------------- +int __fastcall std::time_get>::get_monthname(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); +} + +//----- (0049D020) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_num( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int *a5, + signed int a6, + int a7, + unsigned int a8, + int a9, + _DWORD *a10) +{ + int v10; // ebx + unsigned int v12; // ebp + int v13; // edi + char v14; // bl + _BYTE *v15; // eax + int v16; // ebx + int v17; // edx + int (__stdcall *v18)(unsigned __int8, int); // edx + unsigned int v19; // eax + bool v20; // dl + bool v21; // bl + int v22; // eax + int v24; // eax + unsigned int v26; // [esp+20h] [ebp-2Ch] + _BYTE *v27; // [esp+24h] [ebp-28h] + bool v29; // [esp+2Fh] [ebp-1Dh] + + v10 = 10; + v27 = std::use_facet>(a9 + 108); + if ( a8 != 2 ) + v10 = a8 == 4 ? 1000 : 1; + v26 = 0; + v12 = v10; + v13 = 0; + while ( 1 ) + { + v20 = a2 == -1; + v21 = v20 && a1 != 0; + if ( v21 ) + { + if ( a1[2] >= a1[3] ) + { + v24 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v20 = a2 == -1; + v14 = v24 == -1 && v21; + a1 = v24 == -1 ? 0 : a1; + } + else + { + v14 = 0; + } + } + else + { + v14 = a2 == -1; + } + if ( a3 && a4 == -1 ) + { + if ( a3[2] >= a3[3] ) + { + v29 = v20; + v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v20 = v29; + if ( v22 == -1 ) + { + a3 = 0; + v14 ^= 1u; + } + } + } + else + { + v14 ^= a4 == -1; + } + if ( v26 >= a8 || !v14 ) + break; + if ( a1 && v20 ) + { + v15 = (_BYTE *)a1[2]; + if ( (unsigned int)v15 >= a1[3] ) + { + v15 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v15 == (_BYTE *)-1 ) + { + v16 = 255; + LOBYTE(v15) = -1; + a1 = 0; + } + else + { + v16 = (unsigned __int8)v15; + } + } + else + { + v16 = (unsigned __int8)*v15; + LOBYTE(v15) = *v15; + } + } + else + { + LOBYTE(v15) = a2; + v16 = (unsigned __int8)a2; + } + v17 = (char)v27[v16 + 285]; + if ( !(_BYTE)v17 ) + { + v18 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v27 + 32); + if ( v18 == std::ctype::do_narrow ) + { + if ( (_BYTE)v15 == 42 ) + goto LABEL_32; + } + else + { + LOBYTE(v15) = v18((unsigned __int8)v15, 42); + if ( (_BYTE)v15 == 42 ) + goto LABEL_32; + } + v17 = (char)v15; + v27[v16 + 285] = (_BYTE)v15; + } + if ( (unsigned __int8)(v17 - 48) > 9u ) + goto LABEL_32; + v13 = v17 + 10 * v13 - 48; + if ( (int)(v13 * v12) > a7 || (int)(v12 + v13 * v12) <= a6 ) + goto LABEL_32; + v19 = a1[2]; + v12 /= 0xAu; + if ( v19 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v19 + 1; + ++v26; + a2 = -1; + } + if ( v26 == a8 ) + { +LABEL_35: + *a5 = v13; + return a1; + } +LABEL_32: + if ( a8 == 4 && v26 == 2 ) + { + v13 -= 100; + goto LABEL_35; + } + *a10 |= 4u; + return a1; +} + +//----- (0049D2E0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_weekday( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // dl + char v14; // al + int v16; // eax + int v17; // eax + char v18; // [esp+38h] [ebp-64h] + char v19; // [esp+38h] [ebp-64h] + _DWORD *v20; // [esp+3Ch] [ebp-60h] + unsigned int v21; // [esp+40h] [ebp-5Ch] BYREF + int v22; // [esp+44h] [ebp-58h] BYREF + int v23[21]; // [esp+48h] [ebp-54h] BYREF + + v22 = 0; + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v23[0] = v7[18]; + v23[1] = v7[19]; + v23[2] = v7[20]; + v23[3] = v7[21]; + v23[4] = v7[22]; + v23[5] = v7[23]; + v23[6] = v7[24]; + v23[7] = v7[11]; + v23[8] = v7[12]; + v23[9] = v7[13]; + v23[10] = v7[14]; + v23[11] = v7[15]; + v8 = v7[16]; + v9 = v7[17]; + v23[12] = v8; + v23[13] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v21, + (int)v23, + 7u, + a5, + &v22); + v12 = v11; + if ( v22 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 24) = v21; + v13 = v10 == -1; + v18 = v13 & (v11 != 0); + if ( v18 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v20 = v11; + v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v17 != -1 ? 0 : v18; + v12 = v17 == -1 ? 0 : v20; + } + } + v14 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v14 = 0; + if ( a3[2] >= a3[3] ) + { + v19 = v13; + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v19; + v14 = v16 == -1; + } + } + } + if ( v13 == v14 ) + *a6 |= 2u; + return v12; +} +// 49D3EF: variable 'v10' is possibly undefined + +//----- (0049D4B0) -------------------------------------------------------- +int __stdcall std::time_get>::_M_extract_name( + unsigned __int64 a1, + _DWORD *a2, + int a3, + _DWORD *a4, + int a5, + _DWORD *a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + void *v9; // esp + void *v10; // esp + char v11; // dl + unsigned __int8 v12; // bl + char v14; // dl + _DWORD *v15; // esi + int v16; // edx + unsigned int v17; // ebx + int v18; // edi + char v19; // al + int v20; // ecx + _DWORD *v21; // edi + _DWORD *v22; // edx + void *v23; // edi + size_t v24; // eax + unsigned int v25; // ebx + size_t v26; // eax + void *v27; // edi + unsigned int v28; // eax + char v29; // si + unsigned __int8 v30; // si + unsigned int i; // esi + char v32; // di + char v33; // al + char *v34; // eax + unsigned int v35; // eax + int v36; // eax + const char *v37; // edi + char *v38; // ebx + size_t v39; // eax + unsigned int v40; // esi + _DWORD **v41; // edi + unsigned __int8 v42; // bl + char v43; // bl + char v44; // al + _BYTE *v45; // eax + unsigned __int8 v46; // dl + char v47; // bl + int v48; // edx + bool v49; // zf + int v50; // eax + int v51; // esi + int v52; // eax + int v53; // eax + char *v54; // eax + int v55; // eax + int v56; // eax + int v57; // eax + int v58; // eax + int v59; // edx + int v60; // edx + int v61; // eax + _DWORD *v62; // [esp+10h] [ebp-38h] BYREF + _DWORD *v63; // [esp+14h] [ebp-34h] + void *v64; // [esp+18h] [ebp-30h] + unsigned __int8 v65; // [esp+1Fh] [ebp-29h] + unsigned __int64 v66; // [esp+20h] [ebp-28h] + _DWORD **v67; // [esp+28h] [ebp-20h] + unsigned int v68; // [esp+2Ch] [ebp-1Ch] + + v67 = (_DWORD **)HIDWORD(a1); + v66 = a1; + v62 = a2; + v64 = std::use_facet>(a7 + 108); + v8 = 16 * ((unsigned int)(4 * (_DWORD)a6 + 27) >> 4); + v9 = alloca(v8); + v10 = alloca(v8); + LOBYTE(v68) = HIDWORD(a1) == -1; + if ( ((unsigned __int8)v68 & ((_DWORD)a1 != 0)) != 0 ) + { + if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) + { + v65 = v68 & ((_DWORD)a1 != 0); + v55 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); + v11 = v55 != -1 ? 0 : v65; + LODWORD(v66) = v55 == -1 ? 0 : v66; + } + else + { + v11 = 0; + } + } + else + { + v11 = v68; + } + v65 = a3 == -1; + if ( (v65 & (a2 != 0)) != 0 ) + { + if ( a2[2] >= a2[3] ) + { + v56 = *a2; + LOBYTE(v63) = v11; + v57 = (*(int (__fastcall **)(_DWORD *))(v56 + 36))(a2); + v11 = (char)v63; + v12 = v57 == -1 && v65 & (a2 != 0); + v62 = v57 == -1 ? 0 : a2; + } + else + { + v12 = 0; + } + } + else + { + v12 = v65; + } + if ( v11 == v12 + || ((_DWORD)v66 && (_BYTE)v68 + ? ((v54 = *(char **)(v66 + 8), (unsigned int)v54 >= *(_DWORD *)(v66 + 12)) + ? (v58 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66), + v14 = v58 != -1 ? v58 : -1, + LODWORD(v66) = v58 == -1 ? 0 : v66) + : (v14 = *v54)) + : (v14 = (char)v67), + !a6) ) + { +LABEL_6: + *a8 |= 4u; + return v66; + } + LOBYTE(v68) = v14; + v15 = 0; + v16 = a5; + v17 = 0; + v67 = &v62; + v18 = (int)v64; + do + { + while ( 1 ) + { + v20 = **(char **)(v16 + 4 * (_DWORD)v15); + if ( (_BYTE)v20 == (_BYTE)v68 ) + break; + a5 = v16; + v19 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v18 + 8))(v18, v20); + v16 = a5; + if ( v19 == (_BYTE)v68 ) + break; + v15 = (_DWORD *)((char *)v15 + 1); + if ( a6 == v15 ) + goto LABEL_16; + } + v67[v17++] = v15; + v15 = (_DWORD *)((char *)v15 + 1); + } + while ( a6 != v15 ); +LABEL_16: + v21 = v67; + v67 = 0; + if ( v17 <= 1 ) + goto LABEL_40; + v22 = v21; + do + { + v23 = (void *)*v22; + v63 = v22; + v24 = strlen(*(const char **)(a5 + 4 * (_DWORD)v23)); + HIDWORD(v66) = v17; + v25 = 1; + v68 = v24; + v64 = v23; + do + { + v26 = strlen(*(const char **)(a5 + 4 * v63[v25])); + if ( v68 > v26 ) + v68 = v26; + ++v25; + } + while ( v25 < HIDWORD(v66) ); + v22 = v63; + v17 = HIDWORD(v66); + v27 = v64; + v28 = *(_DWORD *)(v66 + 8); + if ( v28 >= *(_DWORD *)(v66 + 12) ) + { + HIDWORD(v66) = v63; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 40))(v66); + v22 = (_DWORD *)HIDWORD(v66); + } + else + { + *(_DWORD *)(v66 + 8) = v28 + 1; + } + v67 = (_DWORD **)((char *)v67 + 1); + if ( (unsigned int)v67 >= v68 ) + goto LABEL_58; + LOBYTE(v68) = 0; + if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) + { + v51 = v66; + v52 = *(_DWORD *)v66; + HIDWORD(v66) = v22; + v53 = (*(int (__fastcall **)(_DWORD))(v52 + 36))(v66); + v22 = (_DWORD *)HIDWORD(v66); + LOBYTE(v68) = v53 == -1; + LODWORD(v66) = ((unsigned __int8)v68 - 1) & v51; + } + v29 = v65 & (v62 != 0); + if ( v29 ) + { + if ( v62[2] < v62[3] ) + { + if ( !(_BYTE)v68 ) + goto LABEL_58; + goto LABEL_30; + } + HIDWORD(v66) = v22; + v50 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); + v22 = (_DWORD *)HIDWORD(v66); + v30 = v50 != -1 ? 0 : v29; + v62 = v50 == -1 ? 0 : v62; + } + else + { + v30 = v65; + } + if ( v30 == (_BYTE)v68 ) + goto LABEL_58; +LABEL_30: + for ( i = 0; ; v27 = (void *)v22[i] ) + { + v32 = *((_BYTE *)v67 + *(_DWORD *)(a5 + 4 * (_DWORD)v27)); + v33 = -1; + if ( (_DWORD)v66 ) + { + v34 = *(char **)(v66 + 8); + if ( (unsigned int)v34 >= *(_DWORD *)(v66 + 12) ) + { + v68 = (unsigned int)v22; + v48 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); + v33 = v48 != -1 ? v48 : -1; + v49 = v48 == -1; + v22 = (_DWORD *)v68; + LODWORD(v66) = v49 ? 0 : v66; + } + else + { + v33 = *v34; + } + } + if ( v33 == v32 ) + break; + v22[i] = v22[--v17]; + if ( v17 <= i ) + goto LABEL_38; +LABEL_32: + ; + } + if ( v17 > ++i ) + goto LABEL_32; +LABEL_38: + ; + } + while ( v17 > 1 ); + HIDWORD(v66) = -1; + v21 = v22; +LABEL_40: + if ( v17 != 1 ) + goto LABEL_6; + v35 = *(_DWORD *)(v66 + 8); + if ( v35 >= *(_DWORD *)(v66 + 12) ) + std::streambuf::sbumpc(v66); + else + *(_DWORD *)(v66 + 8) = v35 + 1; + v36 = *v21; + v37 = *(const char **)(a5 + 4 * *v21); + HIDWORD(v66) = v36; + v38 = (char *)v67 + 1; + v39 = strlen(v37); + v67 = (_DWORD **)v39; + if ( (unsigned int)v38 < v39 ) + { + v68 = (unsigned int)v37; + v40 = v66; + v41 = (_DWORD **)v38; + while ( 1 ) + { + while ( 1 ) + { + v46 = 0; + if ( *(_DWORD *)(v40 + 8) >= *(_DWORD *)(v40 + 12) ) + { + v46 = (*(int (__fastcall **)(unsigned int, _DWORD))(*(_DWORD *)v40 + 36))(v40, 0) == -1; + v40 &= v46 - 1; + } + v47 = v65 & (v62 != 0); + if ( v47 ) + { + if ( v62[2] >= v62[3] ) + { + LOBYTE(v66) = v46; + v61 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); + v46 = v66; + v42 = v61 != -1 ? 0 : v47; + v62 = v61 == -1 ? 0 : v62; + } + else + { + v42 = 0; + } + } + else + { + v42 = v65; + } + if ( v42 == v46 ) + { +LABEL_73: + v66 = v40 | 0xFFFFFFFF00000000LL; + goto LABEL_6; + } + v43 = *((_BYTE *)v41 + v68); + v44 = -1; + if ( v40 ) + break; +LABEL_48: + if ( v43 != v44 ) + goto LABEL_73; + v45 = *(_BYTE **)(v40 + 8); + if ( (unsigned int)v45 < *(_DWORD *)(v40 + 12) ) + goto LABEL_50; + v41 = (_DWORD **)((char *)v41 + 1); + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 40))(v40); + if ( v41 == v67 ) + { +LABEL_75: + LODWORD(v66) = v40; + goto LABEL_76; + } + } + v45 = *(_BYTE **)(v40 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(v40 + 12) ) + { + v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 36))(v40); + v44 = v60 != -1 ? v60 : -1; + v40 &= (v60 == -1) - 1; + goto LABEL_48; + } + if ( v43 != *v45 ) + goto LABEL_73; +LABEL_50: + v41 = (_DWORD **)((char *)v41 + 1); + *(_DWORD *)(v40 + 8) = v45 + 1; + if ( v41 == v67 ) + goto LABEL_75; + } + } + if ( v38 != (char *)v39 ) + { +LABEL_58: + HIDWORD(v66) = -1; + goto LABEL_6; + } +LABEL_76: + v59 = HIDWORD(v66); + HIDWORD(v66) = -1; + *a4 = v59; + return v66; +} + +//----- (0049DA30) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_monthname( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // edx + int v9; // edx + int v10; // edx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // dl + char v14; // al + int v16; // eax + int v17; // eax + char v18; // [esp+38h] [ebp-94h] + char v19; // [esp+38h] [ebp-94h] + _DWORD *v20; // [esp+3Ch] [ebp-90h] + unsigned int v21; // [esp+48h] [ebp-84h] BYREF + int v22; // [esp+4Ch] [ebp-80h] BYREF + int v23[31]; // [esp+50h] [ebp-7Ch] BYREF + + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v23[0] = v7[37]; + v23[1] = v7[38]; + v23[2] = v7[39]; + v23[3] = v7[40]; + v23[4] = v7[41]; + v23[5] = v7[42]; + v23[6] = v7[43]; + v23[7] = v7[44]; + v23[8] = v7[45]; + v23[9] = v7[46]; + v23[10] = v7[47]; + v23[11] = v7[48]; + v23[12] = v7[25]; + v23[13] = v7[26]; + v23[14] = v7[27]; + v23[15] = v7[28]; + v8 = v7[29]; + v22 = 0; + v23[16] = v8; + v23[17] = v7[30]; + v23[18] = v7[31]; + v23[19] = v7[32]; + v23[20] = v7[33]; + v23[21] = v7[34]; + v9 = v7[35]; + v23[23] = v7[36]; + v23[22] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v21, + (int)v23, + 0xCu, + a5, + &v22); + v12 = v11; + if ( v22 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 16) = v21; + v13 = v10 == -1; + v18 = v13 & (v11 != 0); + if ( v18 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v20 = v11; + v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v17 != -1 ? 0 : v18; + v12 = v17 == -1 ? 0 : v20; + } + } + v14 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v14 = 0; + if ( a3[2] >= a3[3] ) + { + v19 = v13; + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v19; + v14 = v16 == -1; + } + } + } + if ( v13 == v14 ) + *a6 |= 2u; + return v12; +} +// 49DBDC: variable 'v10' is possibly undefined + +//----- (0049DCA0) -------------------------------------------------------- +unsigned __int64 __stdcall std::time_get>::_M_extract_via_format( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char *a7) +{ + char *v7; // ebx + _DWORD *v8; // eax + unsigned int v9; // ebx + _BYTE *v10; // esi + unsigned __int64 v11; // rax + _DWORD *v12; // ecx + char v13; // dl + char v14; // di + unsigned int v15; // edi + char *v16; // ebp + int v17; // edx + char v18; // al + char v19; // cl + int (__stdcall *v20)(unsigned __int8, int); // eax + int v21; // ebp + char v22; // dl + char v23; // al + int (__stdcall *v24)(unsigned __int8, int); // edx + char v25; // dl + int v26; // eax + int v27; // eax + char v28; // bl + int v29; // eax + int v30; // ebx + char v31; // al + int (__stdcall *v32)(unsigned __int8, int); // edx + _BYTE *v34; // eax + unsigned __int64 v35; // rax + int v36; // edx + _DWORD *v37; // eax + int v38; // eax + unsigned __int64 v39; // rax + unsigned __int64 v40; // rax + char v41; // bl + char v42; // al + char v43; // bl + char v44; // al + unsigned __int64 v45; // rax + unsigned __int64 v46; // rax + char *v47; // eax + _DWORD *v48; // eax + unsigned __int64 v49; // rax + unsigned __int64 v50; // rax + unsigned __int64 v51; // rax + unsigned int v52; // eax + unsigned __int64 v53; // rax + int v54; // eax + int v55; // ebx + char v56; // dl + int (__stdcall *v57)(unsigned __int8, int); // ebp + int v58; // eax + int v59; // ebx + char v60; // dl + int (__stdcall *v61)(unsigned __int8, int); // ebp + unsigned int v62; // eax + unsigned __int64 v63; // rax + _DWORD *v64; // eax + int v65; // eax + unsigned __int64 v66; // rax + _DWORD *v67; // eax + char *v68; // edx + char *Stra; // [esp+0h] [ebp-9Ch] + char *Str; // [esp+0h] [ebp-9Ch] + unsigned int v71; // [esp+30h] [ebp-6Ch] + _DWORD *v72; // [esp+38h] [ebp-64h] + char v73; // [esp+3Ch] [ebp-60h] + int v74; // [esp+3Ch] [ebp-60h] + int v75; // [esp+48h] [ebp-54h] BYREF + int v76; // [esp+4Ch] [ebp-50h] BYREF + int v77; // [esp+50h] [ebp-4Ch] BYREF + int v78; // [esp+54h] [ebp-48h] + int v79; // [esp+58h] [ebp-44h] + int v80; // [esp+5Ch] [ebp-40h] + int v81; // [esp+60h] [ebp-3Ch] + int v82; // [esp+64h] [ebp-38h] + int v83; // [esp+68h] [ebp-34h] + int v84; // [esp+6Ch] [ebp-30h] + int v85; // [esp+70h] [ebp-2Ch] + int v86; // [esp+74h] [ebp-28h] + int v87; // [esp+78h] [ebp-24h] + int v88; // [esp+7Ch] [ebp-20h] + + v7 = (char *)(a4 + 108); + v8 = std::use_facet>(a4 + 108); + Stra = v7; + v9 = 0; + v72 = v8; + v10 = std::use_facet>((int)Stra); + v11 = __PAIR64__(HIDWORD(a1), strlen(a7)); + v75 = 0; + v71 = v11; + v12 = (_DWORD *)a1; + while ( 1 ) + { + v13 = HIDWORD(v11) == -1; + v14 = v13 & (v12 != 0); + if ( v14 ) + { + v13 = 0; + if ( v12[2] >= v12[3] ) + { + v29 = (*(int (__thiscall **)(_DWORD *, char *))(*v12 + 36))(v12, Str); + v13 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v13 = v14; + } + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v73 = v13; + v26 = (*(int (**)(void))(*a2 + 36))(); + v13 = v73; + if ( v26 == -1 ) + { + a2 = 0; + v13 = v73 ^ 1; + } + } + } + else + { + v13 ^= a3 == -1; + } + if ( v9 >= v71 || !v13 ) + break; + if ( v75 ) + goto LABEL_43; + v15 = v9 + 1; + v16 = &a7[v9]; + v17 = (unsigned __int8)a7[v9]; + v18 = v10[v17 + 285]; + v19 = a7[v9]; + if ( v18 ) + { +LABEL_14: + if ( v18 != 37 ) + goto LABEL_27; + v21 = (unsigned __int8)a7[v15]; + v22 = v10[v21 + 285]; + v23 = a7[v15]; + if ( !v22 ) + { + v24 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v24 != std::ctype::do_narrow ) + v23 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v24)(v10, v23, 0); + if ( !v23 ) + { +LABEL_39: + v75 |= 4u; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + goto LABEL_40; + } + v10[v21 + 285] = v23; + v22 = v23; + } + v76 = 0; + if ( (v22 == 69 || v22 == 79) + && (v15 = v9 + 2, v30 = (unsigned __int8)a7[v9 + 2], v22 = v10[v30 + 285], v31 = v30, !v22) ) + { + v32 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v32 != std::ctype::do_narrow ) + v31 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v32)(v10, (char)v30, 0); + if ( !v31 ) + goto LABEL_39; + v10[v30 + 285] = v31; + v25 = v31 - 65; + if ( (unsigned __int8)(v31 - 65) > 0x38u ) + goto LABEL_39; + } + else + { + v25 = v22 - 65; + } + switch ( v25 ) + { + case 0: + v67 = (_DWORD *)v72[2]; + v77 = v67[11]; + v78 = v67[12]; + v79 = v67[13]; + v80 = v67[14]; + v81 = v67[15]; + v82 = v67[16]; + v65 = v67[17]; + goto LABEL_114; + case 1: + v48 = (_DWORD *)v72[2]; + v77 = v48[25]; + v78 = v48[26]; + v79 = v48[27]; + v80 = v48[28]; + v81 = v48[29]; + v82 = v48[30]; + v83 = v48[31]; + v84 = v48[32]; + v85 = v48[33]; + v86 = v48[34]; + v87 = v48[35]; + v38 = v48[36]; + goto LABEL_57; + case 2: + case 24: + case 56: + LODWORD(v35) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 0, + 9999, + 4u, + a4, + &v75); + a1 = v35; + if ( v75 ) + goto LABEL_69; + v36 = v76 - 1900; + if ( v76 < 0 ) + v36 = v76 + 100; + v12 = (_DWORD *)a1; + a6[5] = v36; + HIDWORD(v11) = HIDWORD(a1); + break; + case 3: + std::ctype::widen(v10, "%m/%d/%y", "%H:%M", &v77); + v47 = (char *)&v77; + goto LABEL_72; + case 7: + LODWORD(v49) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 0, + 23, + 2u, + a4, + &v75); + goto LABEL_76; + case 8: + LODWORD(v49) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 1, + 12, + 2u, + a4, + &v75); +LABEL_76: + a1 = v49; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[2] = v76; + break; + case 12: + LODWORD(v50) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 0, + 59, + 2u, + a4, + &v75); + a1 = v50; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[1] = v76; + break; + case 17: + std::ctype::widen(v10, "%H:%M", "%H:%M:%S", &v77); + v47 = (char *)&v77; + goto LABEL_72; + case 18: + LODWORD(v51) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 0, + 61, + 2u, + a4, + &v75); + a1 = v51; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + *a6 = v76; + break; + case 19: + std::ctype::widen(v10, "%H:%M:%S", byte_52FE7E, &v77); + v47 = (char *)&v77; + goto LABEL_72; + case 23: + v47 = *(char **)(v72[2] + 16); + goto LABEL_72; + case 25: + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 1) == 0 ) + goto LABEL_39; + LODWORD(v40) = std::time_get>::_M_extract_name( + a1, + a2, + a3, + &v77, + (int)std::__timepunct_cache::_S_timezones, + (_DWORD *)0xE, + a4, + &v75); + a1 = v40; + LOBYTE(v11) = std::istreambuf_iterator::equal(&a1, (int)&a2); + HIDWORD(v11) = HIDWORD(a1); + if ( (_BYTE)v11 || v77 | v75 ) + goto LABEL_70; + v41 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + if ( v10[28] ) + { + v42 = v10[74]; + } + else + { + std::ctype::_M_widen_init((int)v10); + v42 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 45); + } + if ( v41 == v42 + || ((v43 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)), !v10[28]) + ? (std::ctype::_M_widen_init((int)v10), + v44 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 43), + Str = v68) + : (char *)(v44 = v10[72]), + v43 == v44) ) + { + LODWORD(v45) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v77, + 0, + 23, + 2u, + a4, + &v75); + a1 = v45; + LODWORD(v46) = std::time_get>::_M_extract_num( + (_DWORD *)v45, + SHIDWORD(v45), + a2, + a3, + &v77, + 0, + 59, + 2u, + a4, + &v75); + a1 = v46; + } +LABEL_69: + HIDWORD(v11) = HIDWORD(a1); +LABEL_70: + v12 = (_DWORD *)a1; + break; + case 32: + v64 = (_DWORD *)v72[2]; + v77 = v64[18]; + v78 = v64[19]; + v79 = v64[20]; + v80 = v64[21]; + v81 = v64[22]; + v82 = v64[23]; + v65 = v64[24]; +LABEL_114: + v83 = v65; + LODWORD(v66) = std::time_get>::_M_extract_name( + a1, + a2, + a3, + &v76, + (int)&v77, + (_DWORD *)7, + a4, + &v75); + a1 = v66; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[6] = v76; + break; + case 33: + case 39: + v37 = (_DWORD *)v72[2]; + v77 = v37[37]; + v78 = v37[38]; + v79 = v37[39]; + v80 = v37[40]; + v81 = v37[41]; + v82 = v37[42]; + v83 = v37[43]; + v84 = v37[44]; + v85 = v37[45]; + v86 = v37[46]; + v87 = v37[47]; + v38 = v37[48]; +LABEL_57: + v88 = v38; + LODWORD(v39) = std::time_get>::_M_extract_name( + a1, + a2, + a3, + &v76, + (int)&v77, + (_DWORD *)0xC, + a4, + &v75); + a1 = v39; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[4] = v76; + break; + case 34: + v47 = *(char **)(v72[2] + 24); + goto LABEL_72; + case 35: + LODWORD(v63) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 1, + 31, + 2u, + a4, + &v75); + a1 = v63; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[3] = v76; + break; + case 36: + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 0x20) != 0 ) + { + v52 = *(_DWORD *)(a1 + 8); + if ( v52 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v52 + 1; + HIDWORD(a1) = -1; + LODWORD(v11) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + -1, + a2, + a3, + &v76, + 1, + 9, + 1u, + a4, + &v75); + } + else + { + LODWORD(v11) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 10, + 31, + 2u, + a4, + &v75); + } + a1 = v11; + v12 = (_DWORD *)v11; + if ( !v75 ) + a6[3] = v76; + break; + case 44: + LODWORD(v53) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 1, + 12, + 2u, + a4, + &v75); + a1 = v53; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[4] = v76 - 1; + break; + case 45: + v54 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v55 = (unsigned __int8)v54; + v56 = v10[(unsigned __int8)v54 + 285]; + if ( v56 ) + goto LABEL_99; + v56 = v54; + v57 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v57 != std::ctype::do_narrow ) + v56 = ((int (__fastcall *)(_BYTE *, int, _DWORD, _DWORD))v57)(v10, v54, (char)v54, 0); + if ( !v56 ) + goto LABEL_117; + v10[v55 + 285] = v56; +LABEL_99: + v12 = (_DWORD *)a1; + if ( v56 != 10 ) + goto LABEL_100; + goto LABEL_107; + case 51: + v58 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v59 = (unsigned __int8)v58; + v60 = v10[(unsigned __int8)v58 + 285]; + if ( v60 ) + goto LABEL_106; + v60 = v58; + v61 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v61 != std::ctype::do_narrow ) + v60 = ((int (__fastcall *)(_BYTE *, int, _DWORD, _DWORD))v61)(v10, v58, (char)v58, 0); + if ( !v60 ) + { +LABEL_117: + v12 = (_DWORD *)a1; +LABEL_100: + v75 |= 4u; + HIDWORD(v11) = HIDWORD(a1); + break; + } + v10[v59 + 285] = v60; +LABEL_106: + v12 = (_DWORD *)a1; + if ( v60 != 9 ) + goto LABEL_100; +LABEL_107: + v62 = v12[2]; + if ( v62 >= v12[3] ) + { + std::streambuf::sbumpc((int)v12); + v12 = (_DWORD *)a1; + } + else + { + v12[2] = v62 + 1; + } + HIDWORD(a1) = -1; + HIDWORD(v11) = -1; + break; + case 55: + v47 = *(char **)(v72[2] + 8); +LABEL_72: + LODWORD(v11) = std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + a3, + a4, + (int)&v75, + (int)a6, + v47); + a1 = v11; + v12 = (_DWORD *)v11; + break; + default: + goto LABEL_39; + } +LABEL_40: + v9 = v15 + 1; + } + else + { + v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v20 != std::ctype::do_narrow ) + { + v74 = (unsigned __int8)a7[v9]; + v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v10, (char)v17, 0); + v17 = v74; + } + if ( v19 ) + { + v10[v17 + 285] = v19; + v18 = v19; + goto LABEL_14; + } +LABEL_27: + LOBYTE(v27) = BYTE4(a1); + v28 = *v16; + v12 = (_DWORD *)a1; + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_28; + v34 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) + { + v27 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v27 == -1 ) + { + LODWORD(a1) = 0; + v12 = 0; + } + else + { + v12 = (_DWORD *)a1; + } +LABEL_28: + if ( v28 != (_BYTE)v27 ) + { + HIDWORD(v11) = HIDWORD(a1); + goto LABEL_30; + } + v34 = (_BYTE *)v12[2]; + if ( (unsigned int)v34 < v12[3] ) + { +LABEL_46: + v12[2] = v34 + 1; + goto LABEL_47; + } + std::streambuf::sbumpc((int)v12); + v12 = (_DWORD *)a1; +LABEL_47: + HIDWORD(a1) = -1; + v9 = v15; + HIDWORD(v11) = -1; + } + else + { + HIDWORD(v11) = -1; + if ( v28 == *v34 ) + goto LABEL_46; +LABEL_30: + v75 |= 4u; + v9 = v15; + } + } + } + if ( v9 != v71 || v75 ) +LABEL_43: + *a5 |= 4u; + return a1; +} +// 49DCF9: variable 'v11' is possibly undefined +// 49DE94: variable 'Str' is possibly undefined +// 49E066: variable 'v35' is possibly undefined +// 49E1A9: variable 'v39' is possibly undefined +// 49E269: variable 'v40' is possibly undefined +// 49E3B6: variable 'v45' is possibly undefined +// 49E3CC: variable 'v46' is possibly undefined +// 49E579: variable 'v49' is possibly undefined +// 49E652: variable 'v50' is possibly undefined +// 49E721: variable 'v51' is possibly undefined +// 49E8E6: variable 'v53' is possibly undefined +// 49EA75: variable 'v63' is possibly undefined +// 49EB55: variable 'v66' is possibly undefined +// 49ECA6: variable 'v68' is possibly undefined +// 516500: using guessed type void *std::__timepunct_cache::_S_timezones[2]; +// 52FE7E: using guessed type _BYTE byte_52FE7E[2]; + +//----- (0049ECD0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + unsigned int *a5, + int a6, + unsigned int a7, + int a8, + _DWORD *a9) +{ + int v9; // eax + void *v10; // esp + void *v11; // esp + char v12; // dl + bool v13; // bl + char v14; // bl + int v15; // edi + unsigned int v16; // esi + char v17; // dl + bool v18; // bl + char v19; // bl + unsigned int v20; // edx + unsigned int *v21; // ecx + unsigned int v22; // edi + unsigned int v23; // eax + char *v25; // eax + unsigned int v26; // eax + int v27; // edx + unsigned int v28; // ebx + int v29; // edi + char v30; // al + int v31; // ecx + unsigned int v32; // eax + int v33; // eax + void *v34; // esp + int v35; // edi + void *v36; // esp + int v37; // ebx + int v38; // eax + int v39; // eax + _DWORD *v40; // ebx + int v41; // eax + int v42; // eax + int v43; // eax + _DWORD *v44; // ebx + int v45; // eax + _BYTE *v46; // eax + int v47; // eax + int v48; // eax + _DWORD *v49; // esi + int v50; // eax + _BYTE v51[8]; // [esp+10h] [ebp-48h] BYREF + _BYTE *v52; // [esp+18h] [ebp-40h] + _DWORD *v53; // [esp+1Ch] [ebp-3Ch] + int v54; // [esp+20h] [ebp-38h] + _DWORD *v55; // [esp+24h] [ebp-34h] + bool v56; // [esp+2Ah] [ebp-2Eh] + char v57; // [esp+2Bh] [ebp-2Dh] + int v58; // [esp+2Ch] [ebp-2Ch] + unsigned int *v59; // [esp+30h] [ebp-28h] + unsigned int *v60; // [esp+34h] [ebp-24h] + _BYTE *v61; // [esp+38h] [ebp-20h] + unsigned int v62; // [esp+3Ch] [ebp-1Ch] + + v55 = a1; + v54 = a2; + v53 = a3; + v60 = (unsigned int *)std::use_facet>(a8 + 108); + v9 = 16 * ((8 * a7 + 27) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + v59 = (unsigned int *)v51; + v12 = a2 == -1; + LOBYTE(v62) = v12 & (a1 != 0); + if ( (_BYTE)v62 ) + { + v12 = 0; + if ( v55[2] >= v55[3] ) + { + v38 = *v55; + LOBYTE(v61) = 0; + v39 = (*(int (__fastcall **)(_DWORD *))(v38 + 36))(v55); + v12 = (char)v61; + if ( v39 == -1 ) + { + v12 = v62; + v55 = 0; + LOBYTE(v62) = 0; + } + } + } + v56 = a4 == -1; + v13 = v56 && a3 != 0; + if ( v13 ) + { + if ( a3[2] >= a3[3] ) + { + v47 = *a3; + LOBYTE(v61) = v12; + v48 = (*(int (__fastcall **)(_DWORD *))(v47 + 36))(a3); + v12 = (char)v61; + v14 = v48 == -1 && v13; + v53 = v48 == -1 ? 0 : a3; + } + else + { + v14 = 0; + } + } + else + { + v14 = v56; + } + if ( v14 == v12 ) + { + v52 = 0; + v15 = 0; + v16 = 0; + } + else + { + if ( (_BYTE)v62 ) + { + v46 = (_BYTE *)v55[2]; + if ( (unsigned int)v46 >= v55[3] ) + { + v49 = v55; + v50 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + LOBYTE(v62) = v50 != -1 ? v50 : -1; + v55 = v50 == -1 ? 0 : v49; + } + else + { + LOBYTE(v62) = *v46; + } + } + else + { + LOBYTE(v62) = a2; + } + v15 = 2 * a7; + if ( 2 * a7 ) + { + v61 = (_BYTE *)(2 * a7); + v27 = a6; + v28 = 0; + v16 = 0; + v29 = (int)v60; + do + { + while ( 1 ) + { + v31 = **(char **)(v27 + 4 * v28); + if ( (_BYTE)v31 == (_BYTE)v62 ) + break; + a6 = v27; + v30 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v29 + 8))(v29, v31); + v27 = a6; + if ( v30 == (_BYTE)v62 ) + break; + if ( v61 == (_BYTE *)++v28 ) + goto LABEL_50; + } + v59[v16++] = v28++; + } + while ( v61 != (_BYTE *)v28 ); +LABEL_50: + if ( v16 ) + { + v32 = v55[2]; + if ( v32 >= v55[3] ) + std::streambuf::sbumpc((int)v55); + else + v55[2] = v32 + 1; + v33 = 16 * ((4 * v16 + 27) >> 4); + v34 = alloca(v33); + v35 = 0; + v36 = alloca(v33); + v62 = v16; + v52 = v51; + v61 = v51; + v37 = (int)v59; + do + { + *(_DWORD *)&v61[4 * v35] = strlen(*(const char **)(a6 + 4 * *(_DWORD *)(v37 + 4 * v35))); + ++v35; + } + while ( v62 != v35 ); + v54 = -1; + v16 = v62; + v15 = 1; + } + else + { + v52 = 0; + v15 = 0; + } + } + else + { + v52 = 0; + v16 = 0; + } + } + while ( 2 ) + { + v17 = v54 == -1; + LOBYTE(v62) = v17 & (v55 != 0); + if ( (_BYTE)v62 ) + { + if ( v55[2] >= v55[3] ) + { + v40 = v55; + v41 = *v55; + LOBYTE(v61) = v54 == -1; + v42 = (*(int (__fastcall **)(_DWORD *))(v41 + 36))(v55); + v17 = (char)v61; + LOBYTE(v62) = v42 != -1 ? 0 : v62; + v55 = v42 == -1 ? 0 : v40; + } + else + { + LOBYTE(v62) = 0; + } + } + else + { + LOBYTE(v62) = v54 == -1; + } + v18 = v56 && v53 != 0; + if ( v18 ) + { + if ( v53[2] < v53[3] ) + { + if ( !(_BYTE)v62 ) + break; + goto LABEL_11; + } + LOBYTE(v61) = v17; + v43 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); + v17 = (char)v61; + v19 = v43 == -1 && v18; + v53 = v43 == -1 ? 0 : v53; + } + else + { + v19 = v56; + } + if ( v19 == (_BYTE)v62 ) + break; +LABEL_11: + if ( v55 && v17 ) + { + v25 = (char *)v55[2]; + if ( (unsigned int)v25 >= v55[3] ) + { + v44 = v55; + v45 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + v57 = v45 != -1 ? v45 : -1; + v55 = v45 == -1 ? 0 : v44; + } + else + { + v57 = *v25; + } + } + else + { + v57 = v54; + } + if ( !v16 ) + { +LABEL_30: + *a9 |= 4u; + return v55; + } + v62 = v15; + v20 = 0; + v58 = 0; + v61 = v52; + do + { + while ( 1 ) + { + v21 = (unsigned int *)&v61[4 * v20]; + if ( *v21 > v62 ) + break; + ++v58; + ++v20; +LABEL_17: + if ( v20 >= v16 ) + goto LABEL_21; + } + v22 = v59[v20]; + v60 = &v59[v20]; + if ( *(_BYTE *)(*(_DWORD *)(a6 + 4 * v22) + v62) == v57 ) + { + ++v20; + goto LABEL_17; + } + *v60 = v59[--v16]; + *v21 = *(_DWORD *)&v61[4 * v16]; + } + while ( v20 < v16 ); +LABEL_21: + v15 = v62; + if ( v58 != v16 ) + { + v23 = v55[2]; + if ( v23 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v23 + 1; + v54 = -1; + ++v15; + continue; + } + break; + } + if ( v16 != 1 ) + { + if ( v16 == 2 && (*(_DWORD *)v52 == v15 || *((_DWORD *)v52 + 1) == v15) ) + goto LABEL_39; + goto LABEL_30; + } + if ( *(_DWORD *)v52 != v15 ) + goto LABEL_30; +LABEL_39: + v26 = *v59; + if ( *v59 >= a7 ) + v26 -= a7; + *a5 = v26; + return v55; +} + +//----- (0049F190) -------------------------------------------------------- +int __stdcall std::time_get>::get( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7, + unsigned __int8 *a8, + unsigned __int8 *a9) +{ + unsigned __int8 *v9; // esi + _DWORD *v11; // ebp + int v12; // edx + char v13; // dl + char v14; // bl + char v15; // dl + char v16; // bl + unsigned int v17; // eax + char v18; // bl + char v19; // dl + int v20; // edx + char v21; // bl + char v22; // al + int (__stdcall *v23)(unsigned __int8, int); // ebx + unsigned __int8 v24; // dl + int (__stdcall *v25)(unsigned __int8, int); // eax + int v26; // esi + int (__stdcall *v27)(unsigned __int8, int); // eax + _BYTE *v28; // eax + char v29; // dl + _BYTE *v30; // esi + char v31; // bl + unsigned __int64 v32; // rax + char v33; // al + unsigned __int8 *i; // esi + int j; // ebp + bool v37; // si + char v38; // bl + char v39; // dl + int v40; // eax + unsigned __int8 *v41; // eax + int (__stdcall *v42)(unsigned __int8); // eax + char *v43; // eax + int v44; // eax + int v45; // eax + int v46; // eax + char *v47; // eax + int v48; // eax + int v49; // eax + int v50; // eax + int v51; // eax + bool v52; // [esp+3Fh] [ebp-4Dh] + bool v54; // [esp+44h] [ebp-48h] + char v55; // [esp+44h] [ebp-48h] + _DWORD *v56; // [esp+44h] [ebp-48h] + char v57; // [esp+44h] [ebp-48h] + unsigned __int8 *v59; // [esp+4Ch] [ebp-40h] + int v60; // [esp+4Ch] [ebp-40h] + int v61; // [esp+50h] [ebp-3Ch] + unsigned __int8 v62; // [esp+50h] [ebp-3Ch] + char v63; // [esp+6Ch] [ebp-20h] BYREF + char v64; // [esp+6Dh] [ebp-1Fh] + char v65; // [esp+6Eh] [ebp-1Eh] + char v66; // [esp+6Fh] [ebp-1Dh] + unsigned __int8 *v67; // [esp+ACh] [ebp+20h] + + v9 = a8; + v11 = std::use_facet>(a5 + 108); + *a6 = 0; + if ( a8 == a9 ) + return a1; + v52 = a4 == -1; + while ( 1 ) + { + v54 = a2 == -1; + if ( v54 && a1 != 0 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v48 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + v18 = v48 == -1 && v54 && a1 != 0; + a1 = v48 == -1 ? 0 : a1; + } + else + { + v18 = 0; + } + } + else + { + v18 = a2 == -1; + } + if ( !v52 || a3 == 0 ) + { + v19 = a4 == -1; + goto LABEL_21; + } + if ( a3[2] >= a3[3] ) + { + v49 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v19 = v49 == -1 && v52 && a3 != 0; + a3 = v49 == -1 ? 0 : a3; +LABEL_21: + if ( v19 == v18 ) + goto LABEL_81; + goto LABEL_22; + } + if ( !v18 ) + { +LABEL_81: + *a6 = 6; + return a1; + } +LABEL_22: + v20 = *v9; + v21 = *((_BYTE *)v11 + v20 + 285); + v22 = *v9; + if ( !v21 ) + { + v23 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); + if ( v23 != std::ctype::do_narrow ) + { + v60 = *v9; + v22 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v23)(v11, (char)v20, 0); + v20 = v60; + } + if ( !v22 ) + goto LABEL_3; + *((_BYTE *)v11 + v20 + 285) = v22; + v21 = v22; + } + if ( v21 == 37 ) + { + v59 = v9 + 1; + if ( a9 == v9 + 1 ) + break; + v61 = v9[1]; + v24 = v9[1]; + v55 = *((_BYTE *)v11 + v61 + 285); + if ( !v55 ) + { + v25 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); + if ( v25 != std::ctype::do_narrow ) + v24 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v25)(v11, (char)v61, 0); + if ( !v24 ) + goto LABEL_89; + v55 = v24; + *((_BYTE *)v11 + v61 + 285) = v24; + } + if ( v55 == 69 || v55 == 79 ) + { + v59 = v9 + 2; + if ( a9 == v9 + 2 ) + break; + v26 = v9[2]; + v24 = v26; + if ( *((_BYTE *)v11 + v26 + 285) ) + { + v24 = *((_BYTE *)v11 + v26 + 285); + } + else + { + v27 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); + if ( v27 != std::ctype::do_narrow ) + v24 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v27)(v11, (char)v26, 0); + if ( v24 ) + *((_BYTE *)v11 + v26 + 285) = v24; + } +LABEL_42: + v62 = v24; + v28 = std::use_facet>(a5 + 108); + v29 = v62; + v30 = v28; + *a6 = 0; + if ( v28[28] ) + { + v21 = v28[66]; + } + else + { + std::ctype::_M_widen_init((int)v28); + v29 = v62; + v42 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v30 + 24); + if ( v42 != std::ctype::do_widen ) + { + v21 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v42)(v30, v62, 37); + v29 = v62; + } + } + v63 = v21; + if ( v55 ) + { + v65 = v29; + v66 = 0; + v64 = v55; + } + else + { + v64 = v29; + v65 = 0; + } + v32 = std::time_get>::_M_extract_via_format( + __PAIR64__(a2, a1), + a3, + a4, + a5, + a6, + a7, + &v63); + a1 = v32; + v31 = HIDWORD(v32) == -1; + a2 = HIDWORD(v32); + BYTE4(v32) = v31 & ((_DWORD)v32 != 0); + if ( BYTE4(v32) ) + { + v31 = 0; + if ( *(_DWORD *)(v32 + 8) >= *(_DWORD *)(v32 + 12) ) + { + v57 = BYTE4(v32); + v44 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v32 + 36))(v32); + v31 = v44 != -1 ? 0 : v57; + a1 = v44 == -1 ? 0 : a1; + } + } + if ( a3 && a4 == -1 ) + { + v33 = 0; + if ( a3[2] >= a3[3] ) + v33 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; + } + else + { + v33 = a4 == -1; + } + if ( v33 == v31 ) + *a6 |= 2u; + v9 = v59 + 1; + if ( a9 == v59 + 1 ) + return a1; + goto LABEL_16; + } + v24 = v55; +LABEL_89: + v55 = 0; + goto LABEL_42; + } +LABEL_3: + v12 = v11[6]; + if ( (*(_BYTE *)(v12 + 2 * *v9) & 0x20) != 0 ) + { + for ( i = v9 + 1; a9 != i; ++i ) + { + if ( (*(_BYTE *)(v12 + 2 * *i) & 0x20) == 0 ) + break; + } + v67 = i; + v56 = v11; + for ( j = a2; ; j = -1 ) + { + v37 = j == -1; + if ( v37 && a1 != 0 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v45 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + v38 = v45 == -1 && v37 && a1 != 0; + a1 = v45 == -1 ? 0 : a1; + } + else + { + v38 = 0; + } + } + else + { + v38 = j == -1; + } + if ( !v52 || a3 == 0 ) + break; + if ( a3[2] >= a3[3] ) + { + v46 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v39 = v46 == -1 && v52 && a3 != 0; + a3 = v46 == -1 ? 0 : a3; +LABEL_63: + if ( v39 == v38 ) + goto LABEL_76; + goto LABEL_64; + } + if ( !v38 ) + { +LABEL_76: + a2 = j; + v9 = v67; + v11 = v56; + goto LABEL_15; + } +LABEL_64: + if ( a1 && j == -1 ) + { + v41 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v41 < *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(v56[6] + 2 * *v41) & 0x20) == 0 ) + { + v11 = v56; + a2 = -1; + v9 = v67; + goto LABEL_15; + } +LABEL_69: + *(_DWORD *)(a1 + 8) = v41 + 1; + continue; + } + v40 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + a1 = v40 == -1 ? 0 : a1; + } + else + { + LOBYTE(v40) = j; + } + if ( (*(_BYTE *)(v56[6] + 2 * (unsigned __int8)v40) & 0x20) == 0 ) + goto LABEL_76; + v41 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v41 < *(_DWORD *)(a1 + 12) ) + goto LABEL_69; + (*(void (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); + } + v39 = a4 == -1; + goto LABEL_63; + } + if ( a1 && a2 == -1 ) + { + v43 = *(char **)(a1 + 8); + if ( (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ) + { + v50 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + v13 = v50 != -1 ? v50 : -1; + a1 = v50 == -1 ? 0 : a1; + } + else + { + v13 = *v43; + } + } + else + { + v13 = a2; + } + v14 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, v13); + if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, (char)*v9) != v14 ) + { + if ( a1 && a2 == -1 ) + { + v47 = *(char **)(a1 + 8); + if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) + { + v51 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + v15 = v51 != -1 ? v51 : -1; + a1 = v51 == -1 ? 0 : a1; + } + else + { + v15 = *v47; + } + } + else + { + v15 = a2; + } + v16 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, v15); + if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, (char)*v9) != v16 ) + break; + } + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 1; + a2 = -1; + ++v9; +LABEL_15: + if ( a9 == v9 ) + return a1; +LABEL_16: + if ( *a6 ) + return a1; + } + *a6 = 4; + return a1; +} + +//----- (0049F960) -------------------------------------------------------- +int __stdcall std::time_get>::get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char a7, + char a8) +{ + _BYTE *v8; // ebp + char v9; // al + int v10; // esi + unsigned __int64 v11; // rax + char v12; // bp + int (__stdcall *v14)(unsigned __int8); // edx + char v15; // [esp+20h] [ebp-3Ch] + char v16; // [esp+3Ch] [ebp-20h] BYREF + char v17; // [esp+3Dh] [ebp-1Fh] + char v18; // [esp+3Eh] [ebp-1Eh] + char v19; // [esp+3Fh] [ebp-1Dh] + + v8 = std::use_facet>(a4 + 108); + *a5 = 0; + if ( v8[28] ) + { + v9 = v8[66]; + } + else + { + std::ctype::_M_widen_init((int)v8); + v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); + v9 = 37; + if ( v14 != std::ctype::do_widen ) + v9 = ((int (__thiscall *)(_BYTE *, int))v14)(v8, 37); + } + v16 = v9; + if ( a8 ) + { + v19 = 0; + v17 = a8; + v18 = a7; + } + else + { + v18 = 0; + v17 = a7; + } + v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); + v10 = v11; + BYTE4(v11) = HIDWORD(v11) == -1; + v12 = BYTE4(v11) & ((_DWORD)v11 != 0); + if ( v12 ) + { + BYTE4(v11) = 0; + if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) + { + LODWORD(v11) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v11 + 36))(v11, 0); + BYTE4(v11) = (_DWORD)v11 != -1 ? 0 : v12; + v10 = (_DWORD)v11 == -1 ? 0 : v10; + } + } + LOBYTE(v11) = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + LOBYTE(v11) = 0; + if ( a2[2] >= a2[3] ) + { + v15 = BYTE4(v11); + LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + BYTE4(v11) = v15; + LOBYTE(v11) = (_DWORD)v11 == -1; + } + } + } + if ( BYTE4(v11) == (_BYTE)v11 ) + *a5 |= 2u; + return v10; +} + +//----- (0049FB20) -------------------------------------------------------- +int __stdcall std::time_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char a7, + char a8) +{ + _BYTE *v8; // ebp + char v9; // al + int v10; // esi + unsigned __int64 v11; // rax + char v12; // bp + int (__stdcall *v14)(unsigned __int8); // edx + char v15; // [esp+20h] [ebp-3Ch] + char v16; // [esp+3Ch] [ebp-20h] BYREF + char v17; // [esp+3Dh] [ebp-1Fh] + char v18; // [esp+3Eh] [ebp-1Eh] + char v19; // [esp+3Fh] [ebp-1Dh] + + v8 = std::use_facet>(a4 + 108); + *a5 = 0; + if ( v8[28] ) + { + v9 = v8[66]; + } + else + { + std::ctype::_M_widen_init((int)v8); + v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); + v9 = 37; + if ( v14 != std::ctype::do_widen ) + v9 = ((int (__thiscall *)(_BYTE *, int))v14)(v8, 37); + } + v16 = v9; + if ( a8 ) + { + v19 = 0; + v17 = a8; + v18 = a7; + } + else + { + v18 = 0; + v17 = a7; + } + v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); + v10 = v11; + BYTE4(v11) = HIDWORD(v11) == -1; + v12 = BYTE4(v11) & ((_DWORD)v11 != 0); + if ( v12 ) + { + BYTE4(v11) = 0; + if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) + { + LODWORD(v11) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v11 + 36))(v11, 0); + BYTE4(v11) = (_DWORD)v11 != -1 ? 0 : v12; + v10 = (_DWORD)v11 == -1 ? 0 : v10; + } + } + LOBYTE(v11) = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + LOBYTE(v11) = 0; + if ( a2[2] >= a2[3] ) + { + v15 = BYTE4(v11); + LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + BYTE4(v11) = v15; + LOBYTE(v11) = (_DWORD)v11 == -1; + } + } + } + if ( BYTE4(v11) == (_BYTE)v11 ) + *a5 |= 2u; + return v10; +} + +//----- (0049FCE0) -------------------------------------------------------- +int __fastcall std::time_get>::get_date(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); +} + +//----- (0049FCF0) -------------------------------------------------------- +int __fastcall std::time_get>::get_time(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); +} + +//----- (0049FD00) -------------------------------------------------------- +int __fastcall std::time_get>::get_year(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); +} + +//----- (0049FD10) -------------------------------------------------------- +int __fastcall std::time_get>::date_order(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); + if ( v1 == std::time_get>::do_date_order ) + return 0; + else + return v1(); +} + +//----- (0049FD30) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_date( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + _DWORD *v6; // eax + __int64 v7; // rax + _DWORD *v8; // ecx + _DWORD *v9; // ebp + __int16 v10; // bx + char v11; // cl + __int16 *v13; // eax + __int16 v14; // ax + __int16 *v15; // eax + __int16 v16; // ax + char v17; // [esp+2Ch] [ebp-30h] + _DWORD *v18; // [esp+30h] [ebp-2Ch] + + v6 = std::use_facet>(a4 + 108); + v7 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + (wchar_t *)*(_DWORD *)(v6[2] + 8)); + v8 = (_DWORD *)v7; + v9 = (_DWORD *)v7; + v10 = WORD2(v7) == 0xFFFF; + v17 = v10 & ((_DWORD)v7 != 0); + if ( v17 ) + { + v15 = *(__int16 **)(v7 + 8); + if ( (unsigned int)v15 >= v8[3] ) + { + v18 = v8; + v16 = (*(int (**)(void))(*v8 + 36))(); + v8 = v18; + } + else + { + v16 = *v15; + } + LOBYTE(v10) = v16 != -1 ? 0 : v17; + v9 = v16 == -1 ? 0 : v8; + } + v11 = (_WORD)a3 == 0xFFFF; + if ( a2 && (_WORD)a3 == 0xFFFF ) + { + v13 = (__int16 *)a2[2]; + if ( (unsigned int)v13 >= a2[3] ) + v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + else + v14 = *v13; + v11 = v14 == -1; + } + if ( (_BYTE)v10 == v11 ) + *a5 |= 2u; + return v9; +} + +//----- (0049FE70) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_time( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + _DWORD *v6; // eax + __int64 v7; // rax + _DWORD *v8; // ecx + _DWORD *v9; // ebp + __int16 v10; // bx + char v11; // cl + __int16 *v13; // eax + __int16 v14; // ax + __int16 *v15; // eax + __int16 v16; // ax + char v17; // [esp+2Ch] [ebp-30h] + _DWORD *v18; // [esp+30h] [ebp-2Ch] + + v6 = std::use_facet>(a4 + 108); + v7 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + (wchar_t *)*(_DWORD *)(v6[2] + 16)); + v8 = (_DWORD *)v7; + v9 = (_DWORD *)v7; + v10 = WORD2(v7) == 0xFFFF; + v17 = v10 & ((_DWORD)v7 != 0); + if ( v17 ) + { + v15 = *(__int16 **)(v7 + 8); + if ( (unsigned int)v15 >= v8[3] ) + { + v18 = v8; + v16 = (*(int (**)(void))(*v8 + 36))(); + v8 = v18; + } + else + { + v16 = *v15; + } + LOBYTE(v10) = v16 != -1 ? 0 : v17; + v9 = v16 == -1 ? 0 : v8; + } + v11 = (_WORD)a3 == 0xFFFF; + if ( a2 && (_WORD)a3 == 0xFFFF ) + { + v13 = (__int16 *)a2[2]; + if ( (unsigned int)v13 >= a2[3] ) + v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + else + v14 = *v13; + v11 = v14 == -1; + } + if ( (_BYTE)v10 == v11 ) + *a5 |= 2u; + return v9; +} + +//----- (0049FFB0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_year( + _DWORD *a1, + __int16 a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // ecx + __int16 v8; // dx + __int16 v9; // ax + _DWORD *v10; // ebp + int v11; // edx + char v12; // bl + char v13; // cl + __int16 *v15; // eax + __int16 v16; // ax + __int16 *v17; // eax + __int16 v18; // ax + char v19; // [esp+43h] [ebp-39h] + _DWORD *v20; // [esp+44h] [ebp-38h] + int v21; // [esp+58h] [ebp-24h] BYREF + int v22[8]; // [esp+5Ch] [ebp-20h] BYREF + + v22[0] = 0; + v7 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v21, + 0, + 9999, + 4u, + a5, + v22); + v9 = v8; + v10 = v7; + if ( v22[0] ) + { + *a6 |= 4u; + } + else + { + v11 = v21 - 1900; + if ( v21 < 0 ) + v11 = v21 + 100; + *(_DWORD *)(a7 + 20) = v11; + } + v12 = v9 == -1; + v19 = v12 & (v7 != 0); + if ( v19 ) + { + v17 = (__int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + { + v20 = v7; + v18 = (*(int (**)(void))(*v7 + 36))(); + v7 = v20; + } + else + { + v18 = *v17; + } + v12 = v18 != -1 ? 0 : v19; + v10 = v18 == -1 ? 0 : v7; + } + v13 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v15 = (__int16 *)a3[2]; + if ( (unsigned int)v15 >= a3[3] ) + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v16 = *v15; + v13 = v16 == -1; + } + if ( v12 == v13 ) + *a6 |= 2u; + return v10; +} +// 4A002A: variable 'v8' is possibly undefined +// 49FFB0: using guessed type int var_20[8]; + +//----- (004A0130) -------------------------------------------------------- +int __fastcall std::time_get>::get_weekday(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); +} + +//----- (004A0140) -------------------------------------------------------- +int std::time_get>::do_date_order() +{ + return 0; +} + +//----- (004A0150) -------------------------------------------------------- +int __fastcall std::time_get>::get_monthname(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); +} + +//----- (004A0160) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_num( + _DWORD *a1, + __int16 a2, + _DWORD *a3, + __int16 a4, + int *a5, + signed int a6, + int a7, + unsigned int a8, + int a9, + _DWORD *a10) +{ + unsigned int v10; // ebp + int v12; // edi + unsigned int i; // esi + unsigned __int8 v14; // dl + unsigned __int16 v15; // ax + char v16; // al + unsigned int v17; // eax + __int16 *v18; // eax + __int16 v19; // ax + __int16 *v20; // eax + __int16 v21; // ax + unsigned __int16 *v23; // eax + char v24; // [esp+1Fh] [ebp-2Dh] + bool v25; // [esp+1Fh] [ebp-2Dh] + void *v27; // [esp+24h] [ebp-28h] + char v29; // [esp+2Eh] [ebp-1Eh] + unsigned __int8 v30; // [esp+2Fh] [ebp-1Dh] + + v10 = 10; + v27 = std::use_facet>(a9 + 108); + if ( a8 != 2 ) + v10 = a8 == 4 ? 1000 : 1; + v29 = a4 == -1; + v12 = 0; + for ( i = 0; ; ++i ) + { + v25 = a2 == -1 && a1 != 0; + if ( v25 ) + break; + v24 = a2 == -1; + v14 = v29 & (a3 != 0); + if ( v14 ) + goto LABEL_20; +LABEL_5: + if ( v24 == v29 ) + goto LABEL_23; +LABEL_6: + if ( i >= a8 ) + goto LABEL_23; + if ( a1 && a2 == -1 ) + { + v23 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v23 >= a1[3] ) + v15 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v15 = *v23; + a1 = v15 == 0xFFFF ? 0 : a1; + } + else + { + v15 = a2; + } + v16 = (*(int (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v27 + 48))(v27, v15, 42); + if ( (unsigned __int8)(v16 - 48) > 9u ) + goto LABEL_24; + v12 = v16 + 10 * v12 - 48; + if ( (int)(v12 * v10) > a7 || (int)(v10 + v12 * v10) <= a6 ) + goto LABEL_24; + v17 = a1[2]; + v10 /= 0xAu; + if ( v17 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v17 + 2; + a2 = -1; + } + v18 = (__int16 *)a1[2]; + if ( (unsigned int)v18 >= a1[3] ) + v19 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v19 = *v18; + a1 = v19 == -1 ? 0 : a1; + v24 = v19 == -1 && v25; + v14 = v29 & (a3 != 0); + if ( !v14 ) + goto LABEL_5; +LABEL_20: + v20 = (__int16 *)a3[2]; + if ( (unsigned int)v20 >= a3[3] ) + { + v30 = v14; + v21 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v14 = v30; + } + else + { + v21 = *v20; + } + a3 = v21 == -1 ? 0 : a3; + if ( v24 != ((unsigned __int8)((v21 != -1) - 1) & v14) ) + goto LABEL_6; +LABEL_23: + if ( i == a8 ) + { +LABEL_27: + *a5 = v12; + return a1; + } +LABEL_24: + if ( a8 == 4 && i == 2 ) + { + v12 -= 100; + goto LABEL_27; + } + *a10 |= 4u; + return a1; +} + +//----- (004A03F0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_weekday( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // ecx + int v9; // eax + __int16 v10; // dx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // bl + char v14; // si + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + _DWORD *v21; // [esp+40h] [ebp-6Ch] + int v22; // [esp+50h] [ebp-5Ch] BYREF + int v23; // [esp+54h] [ebp-58h] BYREF + int v24[21]; // [esp+58h] [ebp-54h] BYREF + + v23 = 0; + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v24[0] = v7[18]; + v24[1] = v7[19]; + v24[2] = v7[20]; + v24[3] = v7[21]; + v24[4] = v7[22]; + v24[5] = v7[23]; + v24[6] = v7[24]; + v24[7] = v7[11]; + v24[8] = v7[12]; + v24[9] = v7[13]; + v24[10] = v7[14]; + v24[11] = v7[15]; + v8 = v7[16]; + v9 = v7[17]; + v24[12] = v8; + v24[13] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v22, + (int)v24, + 7u, + a5, + &v23); + v12 = v11; + if ( v23 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 24) = v22; + v13 = v10 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v19 = (__int16 *)v11[2]; + if ( (unsigned int)v19 >= v11[3] ) + { + v21 = v11; + v20 = (*(int (**)(void))(*v11 + 36))(); + v11 = v21; + } + else + { + v20 = *v19; + } + v13 = v20 != -1 ? 0 : v14; + v12 = v20 == -1 ? 0 : v11; + } + v15 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( v15 == v13 ) + *a6 |= 2u; + return v12; +} +// 4A051D: variable 'v10' is possibly undefined + +//----- (004A05F0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_name( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + _DWORD *a5, + int a6, + int a7, + int a8, + _DWORD *a9) +{ + int v9; // eax + void *v10; // esp + void *v11; // esp + char v12; // dl + char v13; // dl + char v14; // bl + int v16; // edx + int v17; // esi + size_t v18; // ebx + int v19; // edi + __int16 v20; // ax + int v21; // ecx + int *v22; // edi + size_t v23; // eax + unsigned int v24; // ebx + size_t v25; // eax + unsigned int v26; // eax + _WORD *v27; // eax + __int16 v28; // dx + char v29; // si + char v30; // dl + char v31; // dl + unsigned int v32; // ecx + size_t v33; // esi + int i; // eax + __int16 v35; // ax + __int16 *v36; // eax + unsigned int v37; // eax + int *v38; // eax + int *v39; // ebx + const wchar_t *v40; // edi + unsigned int v41; // ebx + unsigned int v42; // esi + unsigned int v43; // eax + __int16 *v44; // eax + __int16 v45; // ax + unsigned __int8 v46; // di + char v47; // dl + char v48; // dl + __int16 v49; // di + __int16 *v50; // eax + __int16 v51; // ax + __int16 *v52; // eax + __int16 v53; // cx + int v54; // eax + __int16 *v55; // eax + __int16 v56; // ax + __int16 *v57; // eax + __int16 v58; // ax + __int16 v59; // ax + _WORD *v60; // eax + int v61; // eax + int v62; // eax + __int16 *v63; // eax + __int16 v64; // cx + __int16 v65; // ax + int v66; // [esp+10h] [ebp-38h] BYREF + _DWORD *v67; // [esp+14h] [ebp-34h] + bool v68; // [esp+1Bh] [ebp-2Dh] + int v69; // [esp+1Ch] [ebp-2Ch] + _DWORD *v70; // [esp+20h] [ebp-28h] + int *v71; // [esp+24h] [ebp-24h] + size_t v72; // [esp+28h] [ebp-20h] + unsigned int v73; // [esp+2Ch] [ebp-1Ch] + + v71 = a4; + v66 = a2; + LOWORD(v72) = a2; + v70 = a1; + v67 = a3; + v69 = (int)std::use_facet>(a8 + 108); + v9 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + LOBYTE(v73) = (_WORD)a2 == 0xFFFF; + v12 = v73 & (a1 != 0); + if ( v12 ) + { + v57 = (__int16 *)a1[2]; + if ( (unsigned int)v57 >= a1[3] ) + { + v61 = *a1; + LOBYTE(v70) = v73 & (a1 != 0); + v58 = (*(int (__fastcall **)(_DWORD *))(v61 + 36))(a1); + v12 = (char)v70; + } + else + { + v58 = *v57; + } + v70 = v58 == -1 ? 0 : a1; + v13 = v58 != -1 ? 0 : v12; + } + else + { + v13 = v73; + } + v68 = (_WORD)v71 == 0xFFFF; + if ( v68 && a3 != 0 ) + { + v55 = (__int16 *)a3[2]; + if ( (unsigned int)v55 >= a3[3] ) + { + v62 = *a3; + LOBYTE(v71) = v13; + v56 = (*(int (__fastcall **)(_DWORD *))(v62 + 36))(a3); + v13 = (char)v71; + } + else + { + v56 = *v55; + } + v67 = v56 == -1 ? 0 : a3; + v14 = v56 == -1 && v68 && a3 != 0; + } + else + { + v14 = v68; + } + if ( v14 == v13 ) + goto LABEL_6; + if ( v70 && (_BYTE)v73 ) + { + v60 = (_WORD *)v70[2]; + LOWORD(v73) = (unsigned int)v60 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v60; + v70 = (_WORD)v73 == 0xFFFF ? 0 : v70; + } + else + { + LOWORD(v73) = v72; + } + if ( !a7 ) + goto LABEL_6; + v71 = &v66; + v16 = a6; + v17 = 0; + v18 = 0; + v19 = v69; + do + { + while ( 1 ) + { + v21 = **(unsigned __int16 **)(v16 + 4 * v17); + if ( (_WORD)v21 == (_WORD)v73 ) + break; + a6 = v16; + v20 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v19 + 24))(v19, v21); + v16 = a6; + if ( v20 == (_WORD)v73 ) + break; + if ( a7 == ++v17 ) + goto LABEL_17; + } + v71[v18++] = v17++; + } + while ( a7 != v17 ); +LABEL_17: + v22 = v71; + v71 = 0; + if ( v18 <= 1 ) + goto LABEL_41; + do + { + v69 = *v22; + v23 = wcslen(*(const wchar_t **)(a6 + 4 * v69)); + v72 = v18; + v24 = 1; + v73 = v23; + do + { + v25 = wcslen(*(const wchar_t **)(a6 + 4 * v22[v24])); + if ( v73 > v25 ) + v73 = v25; + ++v24; + } + while ( v24 < v72 ); + v18 = v72; + v26 = v70[2]; + if ( v26 >= v70[3] ) + (*(void (__fastcall **)(_DWORD *))(*v70 + 40))(v70); + else + v70[2] = v26 + 2; + v71 = (int *)((char *)v71 + 1); + if ( (unsigned int)v71 >= v73 ) + goto LABEL_59; + v27 = (_WORD *)v70[2]; + v28 = (unsigned int)v27 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v27; + v70 = v28 == -1 ? 0 : v70; + v29 = v28 == -1; + v30 = v68 && v67 != 0; + if ( v30 ) + { + v52 = (__int16 *)v67[2]; + if ( (unsigned int)v52 >= v67[3] ) + { + LOBYTE(v73) = v68 && v67 != 0; + v59 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); + v30 = v73; + v53 = v59; + } + else + { + v53 = *v52; + } + v67 = v53 == -1 ? 0 : v67; + v31 = v53 != -1 ? 0 : v30; + } + else + { + v31 = v68; + } + if ( v29 == v31 ) + goto LABEL_59; + v32 = (unsigned int)v70; + v33 = 0; + v72 = 2 * (_DWORD)v71; + for ( i = v69; ; i = v22[v33] ) + { + v16 = v72; + LOWORD(v73) = *(_WORD *)(*(_DWORD *)(a6 + 4 * i) + v72); + v35 = -1; + if ( v32 ) + { + v36 = *(__int16 **)(v32 + 8); + if ( (unsigned int)v36 >= *(_DWORD *)(v32 + 12) ) + { + v54 = *(_DWORD *)v32; + v70 = (_DWORD *)v32; + v35 = (*(int (**)(void))(v54 + 36))(); + v32 = (unsigned int)v70; + } + else + { + v35 = *v36; + } + v16 = (v35 == -1) - 1; + v32 &= v16; + } + if ( (_WORD)v73 == v35 ) + break; + v22[v33] = v22[--v18]; + if ( v18 <= v33 ) + goto LABEL_39; +LABEL_32: + ; + } + if ( v18 > ++v33 ) + goto LABEL_32; +LABEL_39: + v70 = (_DWORD *)v32; + } + while ( v18 > 1 ); + LOWORD(v72) = -1; +LABEL_41: + if ( v18 == 1 ) + { + v37 = v70[2]; + if ( v37 >= v70[3] ) + (*(void (__fastcall **)(_DWORD *, int))(*v70 + 40))(v70, v16); + else + v70[2] = v37 + 2; + v38 = (int *)*v22; + v39 = v71; + v40 = *(const wchar_t **)(a6 + 4 * *v22); + v71 = v38; + v41 = (unsigned int)v39 + 1; + v72 = wcslen(v40); + if ( v41 < v72 ) + { + v73 = (unsigned int)v40; + v42 = (unsigned int)v70; + do + { + while ( 1 ) + { + v44 = *(__int16 **)(v42 + 8); + if ( (unsigned int)v44 >= *(_DWORD *)(v42 + 12) ) + v45 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); + else + v45 = *v44; + v46 = v45 == -1; + v42 &= v46 - 1; + v47 = v68 && v67 != 0; + if ( v47 ) + { + v63 = (__int16 *)v67[2]; + if ( (unsigned int)v63 >= v67[3] ) + { + LOBYTE(v70) = v68 && v67 != 0; + v65 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); + v47 = (char)v70; + v64 = v65; + } + else + { + v64 = *v63; + } + v67 = v64 == -1 ? 0 : v67; + v48 = v64 != -1 ? 0 : v47; + } + else + { + v48 = v68; + } + if ( v48 == v46 ) + { +LABEL_58: + v70 = (_DWORD *)v42; + goto LABEL_59; + } + v49 = *(_WORD *)(v73 + 2 * v41); + if ( v42 ) + { + v50 = *(__int16 **)(v42 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v42 + 12) ) + v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); + else + v51 = *v50; + v42 &= (v51 == -1) - 1; + if ( v49 != v51 ) + goto LABEL_58; + } + else if ( v49 != -1 ) + { + goto LABEL_58; + } + v43 = *(_DWORD *)(v42 + 8); + if ( v43 >= *(_DWORD *)(v42 + 12) ) + break; + ++v41; + *(_DWORD *)(v42 + 8) = v43 + 2; + if ( v41 >= v72 ) + goto LABEL_83; + } + ++v41; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 40))(v42); + } + while ( v41 < v72 ); +LABEL_83: + v70 = (_DWORD *)v42; + } + if ( v72 == v41 ) + { + LOWORD(v72) = -1; + *a5 = v71; + goto LABEL_7; + } +LABEL_59: + LOWORD(v72) = -1; + } +LABEL_6: + *a9 |= 4u; +LABEL_7: + LOWORD(v66) = v72; + return v70; +} + +//----- (004A0B30) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_monthname( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // ecx + int v9; // ecx + __int16 v10; // dx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // bl + char v14; // si + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + _DWORD *v21; // [esp+40h] [ebp-9Ch] + int v22; // [esp+58h] [ebp-84h] BYREF + int v23; // [esp+5Ch] [ebp-80h] BYREF + int v24[31]; // [esp+60h] [ebp-7Ch] BYREF + + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v24[0] = v7[37]; + v24[1] = v7[38]; + v24[2] = v7[39]; + v24[3] = v7[40]; + v24[4] = v7[41]; + v24[5] = v7[42]; + v24[6] = v7[43]; + v24[7] = v7[44]; + v24[8] = v7[45]; + v24[9] = v7[46]; + v24[10] = v7[47]; + v24[11] = v7[48]; + v24[12] = v7[25]; + v24[13] = v7[26]; + v24[14] = v7[27]; + v24[15] = v7[28]; + v8 = v7[29]; + v23 = 0; + v24[16] = v8; + v24[17] = v7[30]; + v24[18] = v7[31]; + v24[19] = v7[32]; + v24[20] = v7[33]; + v24[21] = v7[34]; + v9 = v7[35]; + v24[23] = v7[36]; + v24[22] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v22, + (int)v24, + 0xCu, + a5, + &v23); + v12 = v11; + if ( v23 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 16) = v22; + v13 = v10 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v19 = (__int16 *)v11[2]; + if ( (unsigned int)v19 >= v11[3] ) + { + v21 = v11; + v20 = (*(int (**)(void))(*v11 + 36))(); + v11 = v21; + } + else + { + v20 = *v19; + } + v13 = v20 != -1 ? 0 : v14; + v12 = v20 == -1 ? 0 : v11; + } + v15 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( v13 == v15 ) + *a6 |= 2u; + return v12; +} +// 4A0CFA: variable 'v10' is possibly undefined + +//----- (004A0DD0) -------------------------------------------------------- +__int64 __stdcall std::time_get>::_M_extract_via_format( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6, + wchar_t *a7) +{ + wchar_t *v7; // ebx + _DWORD *v8; // eax + size_t v9; // ebx + void *v10; // esi + size_t v11; // eax + __int16 v12; // dx + _DWORD *v13; // ecx + char v14; // dl + char v15; // di + char v16; // al + char v17; // di + int v18; // ecx + size_t v19; // edi + size_t v20; // ebp + char v21; // al + int v22; // eax + __int16 v23; // ax + wchar_t v24; // bx + __int16 *v25; // eax + __int16 v26; // cx + _WORD *v28; // eax + __int16 v29; // ax + unsigned int v30; // eax + __int16 *v31; // eax + int v32; // edx + _DWORD *v33; // eax + _DWORD *v34; // eax + unsigned __int16 v35; // ax + __int16 v36; // dx + bool v37; // al + __int16 v38; // di + __int16 v39; // di + __int16 v40; // dx + _DWORD *v41; // eax + _DWORD *v42; // eax + unsigned __int16 v43; // ax + unsigned int v44; // eax + __int16 v45; // dx + unsigned __int16 v46; // ax + unsigned int v47; // eax + unsigned __int16 v48; // ax + __int16 v49; // ax + __int16 v50; // dx + wchar_t *String; // [esp+20h] [ebp-15Ch] + size_t v52; // [esp+5Ch] [ebp-120h] + wchar_t *v53; // [esp+60h] [ebp-11Ch] + char v54; // [esp+60h] [ebp-11Ch] + _DWORD *v55; // [esp+6Ch] [ebp-110h] + int v56; // [esp+128h] [ebp-54h] BYREF + int v57; // [esp+12Ch] [ebp-50h] BYREF + wchar_t v58[2]; // [esp+130h] [ebp-4Ch] BYREF + int v59; // [esp+134h] [ebp-48h] + int v60; // [esp+138h] [ebp-44h] + int v61; // [esp+13Ch] [ebp-40h] + int v62; // [esp+140h] [ebp-3Ch] + int v63; // [esp+144h] [ebp-38h] + int v64; // [esp+148h] [ebp-34h] + int v65; // [esp+14Ch] [ebp-30h] + int v66; // [esp+150h] [ebp-2Ch] + int v67; // [esp+154h] [ebp-28h] + int v68; // [esp+158h] [ebp-24h] + int v69; // [esp+15Ch] [ebp-20h] + + v7 = (wchar_t *)(a4 + 108); + v8 = std::use_facet>(a4 + 108); + String = v7; + v9 = 0; + v55 = v8; + v10 = std::use_facet>((int)String); + v11 = wcslen(a7); + v12 = WORD2(a1); + v56 = 0; + v52 = v11; + v13 = (_DWORD *)a1; + while ( 1 ) + { + v14 = v12 == -1; + v15 = v14 & (v13 != 0); + if ( v15 ) + { + v28 = (_WORD *)v13[2]; + v29 = (unsigned int)v28 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v28; + v14 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v14 = v15; + } + } + v16 = (_WORD)a3 == 0xFFFF; + v17 = v16 & (a2 != 0); + if ( v17 ) + { + v25 = (__int16 *)a2[2]; + if ( (unsigned int)v25 >= a2[3] ) + { + v54 = v14; + v49 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v14 = v54; + v26 = v49; + } + else + { + v26 = *v25; + } + v16 = 0; + if ( v26 == -1 ) + break; + } + v18 = v56; + if ( v14 == v16 ) + goto LABEL_20; +LABEL_5: + if ( v9 >= v52 ) + goto LABEL_20; + if ( v18 ) + goto LABEL_22; + v19 = v9; + v20 = v9 + 1; + v53 = &a7[v9]; + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, *v53, 0) == 37 ) + { + v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v19 + 1], 0); + v57 = 0; + if ( v21 != 69 && v21 != 79 ) + { + LOBYTE(v22) = v21 - 65; +LABEL_11: + switch ( (char)v22 ) + { + case 0: + v41 = (_DWORD *)v55[2]; + *(_DWORD *)v58 = v41[11]; + v59 = v41[12]; + v60 = v41[13]; + v61 = v41[14]; + v62 = v41[15]; + v63 = v41[16]; + v64 = v41[17]; + v13 = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v57, + (int)v58, + 7, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + goto LABEL_54; + goto LABEL_32; + case 1: + v42 = (_DWORD *)v55[2]; + *(_DWORD *)v58 = v42[25]; + v59 = v42[26]; + v60 = v42[27]; + v61 = v42[28]; + v62 = v42[29]; + v63 = v42[30]; + v64 = v42[31]; + v65 = v42[32]; + v66 = v42[33]; + v67 = v42[34]; + v68 = v42[35]; + v69 = v42[36]; + v13 = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v57, + (int)v58, + 12, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + goto LABEL_45; + goto LABEL_32; + case 2: + case 24: + case 56: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 0, + 9999, + 4u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + { + v32 = v57 - 1900; + if ( v57 < 0 ) + v32 = v57 + 100; + v13 = (_DWORD *)a1; + a6[5] = v32; + v12 = WORD2(a1); + } + goto LABEL_32; + case 3: + (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( + v10, + "%m/%d/%y", + "%H:%M", + v58); + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + v58); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 7: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 0, + 23, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + goto LABEL_47; + goto LABEL_32; + case 8: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 1, + 12, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) +LABEL_47: + a6[2] = v57; + goto LABEL_32; + case 12: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 0, + 59, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + a6[1] = v57; + goto LABEL_32; + case 17: + (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( + v10, + "%H:%M", + "%H:%M:%S", + v58); + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + v58); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 18: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 0, + 61, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + *a6 = v57; + goto LABEL_32; + case 19: + (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v10 + 44))( + v10, + "%H:%M:%S", + &unk_530262, + v58); + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + v58); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 23: + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + *(wchar_t **)(v55[2] + 16)); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 25: + v35 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 1, v35) ) + goto LABEL_29; + LODWORD(a1) = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + v58, + (int)std::__timepunct_cache::_S_timezones, + 14, + a4, + &v56); + WORD2(a1) = v36; + v37 = std::istreambuf_iterator::equal(&a1, (int)&a2); + v12 = WORD2(a1); + if ( v37 || *(_DWORD *)v58 | v56 ) + goto LABEL_31; + v38 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( v38 != (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 45) ) + { + v39 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( v39 != (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 43) ) + goto LABEL_30; + } + LODWORD(a1) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + (int *)v58, + 0, + 23, + 2u, + a4, + &v56); + WORD2(a1) = v40; + LODWORD(a1) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + v40, + a2, + (__int16)a3, + (int *)v58, + 0, + 59, + 2u, + a4, + &v56); + WORD2(a1) = v12; + goto LABEL_31; + case 32: + v34 = (_DWORD *)v55[2]; + *(_DWORD *)v58 = v34[18]; + v59 = v34[19]; + v60 = v34[20]; + v61 = v34[21]; + v62 = v34[22]; + v63 = v34[23]; + v64 = v34[24]; + v13 = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v57, + (int)v58, + 7, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) +LABEL_54: + a6[6] = v57; + goto LABEL_32; + case 33: + case 39: + v33 = (_DWORD *)v55[2]; + *(_DWORD *)v58 = v33[37]; + v59 = v33[38]; + v60 = v33[39]; + v61 = v33[40]; + v62 = v33[41]; + v63 = v33[42]; + v64 = v33[43]; + v65 = v33[44]; + v66 = v33[45]; + v67 = v33[46]; + v68 = v33[47]; + v69 = v33[48]; + v13 = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v57, + (int)v58, + 12, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) +LABEL_45: + a6[4] = v57; + goto LABEL_32; + case 34: + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + *(wchar_t **)(v55[2] + 24)); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 35: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 1, + 31, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + goto LABEL_57; + goto LABEL_32; + case 36: + v43 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v43) ) + { + v44 = *(_DWORD *)(a1 + 8); + if ( v44 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v44 + 2; + WORD2(a1) = -1; + LODWORD(a1) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + -1, + a2, + (__int16)a3, + &v57, + 1, + 9, + 1u, + a4, + &v56); + WORD2(a1) = v45; + } + else + { + LODWORD(a1) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 10, + 31, + 2u, + a4, + &v56); + WORD2(a1) = v50; + } + v12 = WORD2(a1); + v13 = (_DWORD *)a1; + if ( !v56 ) +LABEL_57: + a6[3] = v57; + goto LABEL_32; + case 44: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 1, + 12, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + a6[4] = v57 - 1; + goto LABEL_32; + case 45: + v46 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v46, 0) != 10 ) + goto LABEL_29; + goto LABEL_82; + case 51: + v48 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v48, 0) != 9 ) + goto LABEL_29; +LABEL_82: + v13 = (_DWORD *)a1; + v47 = *(_DWORD *)(a1 + 8); + if ( v47 >= *(_DWORD *)(a1 + 12) ) + { + std::wstreambuf::sbumpc(a1); + v13 = (_DWORD *)a1; + } + else + { + *(_DWORD *)(a1 + 8) = v47 + 2; + } + v12 = -1; + WORD2(a1) = -1; + goto LABEL_32; + case 55: + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + *(wchar_t **)(v55[2] + 8)); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + default: + goto LABEL_29; + } + } + v20 = v9 + 2; + v22 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v19 + 2], 0) - 65; + if ( (unsigned __int8)v22 <= 0x38u ) + goto LABEL_11; +LABEL_29: + v56 |= 4u; +LABEL_30: + v12 = WORD2(a1); +LABEL_31: + v13 = (_DWORD *)a1; +LABEL_32: + v9 = v20 + 1; + } + else + { + v23 = WORD2(a1); + v13 = (_DWORD *)a1; + v24 = *v53; + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v31 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v31 >= *(_DWORD *)(a1 + 12) ) + v23 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + else + v23 = *v31; + if ( v23 == -1 ) + { + LODWORD(a1) = 0; + v13 = 0; + } + else + { + v13 = (_DWORD *)a1; + } + } + if ( v24 == v23 ) + { + v30 = v13[2]; + if ( v30 >= v13[3] ) + { + std::wstreambuf::sbumpc((int)v13); + v13 = (_DWORD *)a1; + } + else + { + v13[2] = v30 + 2; + } + v9 = v20; + v12 = -1; + WORD2(a1) = -1; + } + else + { + v56 |= 4u; + v12 = WORD2(a1); + v9 = v20; + } + } + } + v18 = v56; + a2 = 0; + if ( v14 != v17 ) + goto LABEL_5; +LABEL_20: + if ( v18 || v9 != v52 ) +LABEL_22: + *a5 |= 4u; + return a1; +} +// 4A0E2D: variable 'v12' is possibly undefined +// 4A1AC4: variable 'v36' is possibly undefined +// 4A1BEE: variable 'v40' is possibly undefined +// 4A2038: variable 'v45' is possibly undefined +// 4A2340: variable 'v50' is possibly undefined +// 516540: using guessed type void *std::__timepunct_cache::_S_timezones[2]; + +//----- (004A2370) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + _DWORD *a5, + int a6, + unsigned int a7, + int a8, + _DWORD *a9) +{ + void *v9; // edi + int v10; // eax + void *v11; // esp + void *v12; // esp + char v13; // dl + char v14; // bl + char v15; // bl + int *v16; // edi + unsigned int v17; // esi + char v18; // dl + char v19; // dl + unsigned __int8 v20; // bl + unsigned int v21; // edx + unsigned int *v22; // ecx + int v23; // ebx + unsigned int v24; // eax + __int16 *v25; // eax + __int16 v26; // cx + __int16 *v28; // eax + __int16 v29; // cx + __int16 *v30; // eax + int v31; // eax + int v32; // edx + int v33; // ebx + __int16 v34; // ax + int v35; // ecx + unsigned int v36; // eax + int v37; // eax + void *v38; // esp + void *v39; // esp + int v40; // esi + int v41; // ebx + __int16 *v42; // eax + __int16 v43; // cx + _WORD *v44; // eax + __int16 v45; // ax + __int16 v46; // ax + __int16 v47; // ax + _WORD *v48; // eax + int v49; // eax + __int16 v50; // ax + int v51; // [esp+10h] [ebp-48h] BYREF + int v52; // [esp+14h] [ebp-44h] + _DWORD *v53; // [esp+18h] [ebp-40h] + char v54; // [esp+1Fh] [ebp-39h] + _DWORD *v55; // [esp+20h] [ebp-38h] + unsigned int v56; // [esp+24h] [ebp-34h] + __int16 v57; // [esp+28h] [ebp-30h] + __int16 v58; // [esp+2Ah] [ebp-2Eh] + int v59; // [esp+2Ch] [ebp-2Ch] + int *v60; // [esp+30h] [ebp-28h] + int *v61; // [esp+34h] [ebp-24h] + unsigned int v62; // [esp+38h] [ebp-20h] + unsigned int v63; // [esp+3Ch] [ebp-1Ch] + + v52 = a2; + v57 = a2; + v55 = a1; + v53 = a3; + v9 = std::use_facet>(a8 + 108); + v10 = 16 * ((8 * a7 + 27) >> 4); + v11 = alloca(v10); + v12 = alloca(v10); + v61 = &v51; + v13 = (_WORD)a2 == 0xFFFF; + LOBYTE(v62) = v13 & (a1 != 0); + if ( (_BYTE)v62 ) + { + v44 = (_WORD *)v55[2]; + v45 = (unsigned int)v44 >= v55[3] ? (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55) : *v44; + v13 = 0; + if ( v45 == -1 ) + { + v13 = v62; + v55 = 0; + LOBYTE(v62) = 0; + } + } + v54 = a4 == -1; + v14 = v54 & (a3 != 0); + if ( v14 ) + { + v42 = (__int16 *)a3[2]; + if ( (unsigned int)v42 >= a3[3] ) + { + v49 = *a3; + LOBYTE(v63) = v13; + v50 = (*(int (__fastcall **)(_DWORD *))(v49 + 36))(a3); + v13 = v63; + v43 = v50; + } + else + { + v43 = *v42; + } + v53 = v43 == -1 ? 0 : a3; + v15 = v43 != -1 ? 0 : v14; + } + else + { + v15 = v54; + } + if ( v15 == v13 ) + { + v62 = 0; + v16 = 0; + v17 = 0; + goto LABEL_6; + } + LOWORD(v63) = v57; + if ( (_BYTE)v62 ) + { + v48 = (_WORD *)v55[2]; + if ( (unsigned int)v48 >= v55[3] ) + LOWORD(v63) = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + else + LOWORD(v63) = *v48; + v55 = (_WORD)v63 == 0xFFFF ? 0 : v55; + } + v62 = 2 * a7; + if ( 2 * a7 ) + { + v32 = a6; + v33 = 0; + v17 = 0; + while ( 1 ) + { + v35 = **(unsigned __int16 **)(v32 + 4 * v33); + if ( (_WORD)v35 == (_WORD)v63 + || (a6 = v32, + v34 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v35), + v32 = a6, + v34 == (_WORD)v63) ) + { + v61[v17++] = v33; + if ( ++v33 == v62 ) + { +LABEL_52: + if ( v17 ) + { + v36 = v55[2]; + if ( v36 >= v55[3] ) + std::wstreambuf::sbumpc((int)v55); + else + v55[2] = v36 + 2; + v37 = 16 * ((4 * v17 + 27) >> 4); + v38 = alloca(v37); + v39 = alloca(v37); + v63 = v17; + v62 = (unsigned int)&v51; + v60 = &v51; + v40 = 0; + v41 = (int)v61; + do + { + *(_DWORD *)(v62 + 4 * v40) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v41 + 4 * v40))); + ++v40; + } + while ( v63 != v40 ); + v17 = v63; + v16 = v60; + v62 = 1; + v57 = -1; + } + else + { + v62 = 0; + v16 = 0; + } + goto LABEL_6; + } + } + else if ( ++v33 == v62 ) + { + goto LABEL_52; + } + } + } + v17 = 0; + v16 = 0; +LABEL_6: + while ( 2 ) + { + LOBYTE(v63) = v57 == -1; + v18 = v63 & (v55 != 0); + if ( v18 ) + { + v28 = (__int16 *)v55[2]; + if ( (unsigned int)v28 >= v55[3] ) + { + LOBYTE(v60) = v63 & (v55 != 0); + v46 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + v18 = (char)v60; + v29 = v46; + } + else + { + v29 = *v28; + } + v55 = v29 == -1 ? 0 : v55; + v19 = v29 != -1 ? 0 : v18; + } + else + { + v19 = v63; + } + v20 = v54 & (v53 != 0); + if ( v20 ) + { + v25 = (__int16 *)v53[2]; + if ( (unsigned int)v25 >= v53[3] ) + { + LOBYTE(v60) = v19; + v47 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); + v19 = (char)v60; + v26 = v47; + } + else + { + v26 = *v25; + } + v53 = v26 == -1 ? 0 : v53; + if ( v19 == ((unsigned __int8)((v26 != -1) - 1) & v20) ) + break; + } + else if ( v19 == v54 ) + { + break; + } + if ( v55 && (_BYTE)v63 ) + { + v30 = (__int16 *)v55[2]; + if ( (unsigned int)v30 >= v55[3] ) + v58 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + else + v58 = *v30; + v55 = v58 == -1 ? 0 : v55; + } + else + { + v58 = v57; + } + if ( !v17 ) + { +LABEL_30: + *a9 |= 4u; + goto LABEL_31; + } + v63 = (unsigned int)v16; + v21 = 0; + v59 = 0; + v56 = 2 * v62; + do + { + while ( 1 ) + { + v22 = (unsigned int *)(v63 + 4 * v21); + if ( *v22 > v62 ) + break; + ++v59; + ++v21; +LABEL_16: + if ( v21 >= v17 ) + goto LABEL_20; + } + v23 = v61[v21]; + v60 = &v61[v21]; + if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v23) + v56) == v58 ) + { + ++v21; + goto LABEL_16; + } + *v60 = v61[--v17]; + *v22 = *(_DWORD *)(v63 + 4 * v17); + } + while ( v21 < v17 ); +LABEL_20: + v16 = (int *)v63; + if ( v59 != v17 ) + { + v24 = v55[2]; + if ( v24 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v24 + 2; + ++v62; + v57 = -1; + continue; + } + break; + } + if ( v17 != 1 ) + { + if ( v17 == 2 && (*v16 == v62 || v16[1] == v62) ) + goto LABEL_42; + goto LABEL_30; + } + if ( *v16 != v62 ) + goto LABEL_30; +LABEL_42: + v31 = *v61; + if ( *v61 >= a7 ) + v31 -= a7; + *a5 = v31; +LABEL_31: + LOWORD(v52) = v57; + return v55; +} + +//----- (004A2850) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + int a2, + int a3, + _DWORD *a4, + int a5, + _DWORD *a6, + _DWORD *a7, + _DWORD *a8, + unsigned __int16 *a9, + unsigned __int16 *a10) +{ + int v10; // ebx + unsigned __int16 *v11; // edi + void *v13; // esi + int v14; // eax + int v15; // edx + int v16; // edx + unsigned int v17; // eax + bool v18; // dl + char v19; // dl + char v20; // al + __int16 v21; // bx + void *v22; // eax + int v23; // edx + _DWORD *v24; // ebx + __int64 v25; // rax + char v26; // di + unsigned __int16 *v28; // edi + unsigned __int8 v29; // dl + unsigned __int16 v30; // ax + unsigned int v31; // eax + char v32; // di + unsigned __int16 *v33; // eax + int v34; // eax + __int16 *v35; // eax + __int16 v36; // ax + unsigned __int16 *v37; // eax + unsigned __int16 *v38; // eax + int v39; // eax + __int16 *v40; // eax + __int16 v41; // ax + void *v42; // eax + unsigned __int16 *v43; // eax + _WORD *v44; // eax + __int64 v45; // [esp+30h] [ebp-8Ch] + int v46; // [esp+30h] [ebp-8Ch] + __int16 v47; // [esp+5Ah] [ebp-62h] + unsigned __int16 v48; // [esp+5Eh] [ebp-5Eh] + bool v50; // [esp+64h] [ebp-58h] + unsigned __int16 *v51; // [esp+64h] [ebp-58h] + unsigned __int8 v52; // [esp+64h] [ebp-58h] + unsigned __int8 v53; // [esp+6Fh] [ebp-4Dh] + unsigned __int8 v54; // [esp+71h] [ebp-4Bh] + char v55; // [esp+78h] [ebp-44h] + char v56; // [esp+78h] [ebp-44h] + __int16 v57; // [esp+7Eh] [ebp-3Eh] + wchar_t v59; // [esp+98h] [ebp-24h] BYREF + __int16 v60; // [esp+9Ah] [ebp-22h] + __int16 v61; // [esp+9Ch] [ebp-20h] + __int16 v62; // [esp+9Eh] [ebp-1Eh] + unsigned __int16 *v63; // [esp+DCh] [ebp+20h] + + v10 = a5; + v11 = a9; + v48 = a3; + v13 = std::use_facet>((int)(a6 + 27)); + *a7 = 0; + if ( a9 != a10 ) + { + v54 = (_WORD)a5 == 0xFFFF; + while ( 1 ) + { + v50 = v48 == 0xFFFF; + v18 = v50 && a2 != 0; + if ( v18 ) + { + v40 = *(__int16 **)(a2 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(a2 + 12) ) + { + v41 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v18 = v50 && a2 != 0; + } + else + { + v41 = *v40; + } + a2 = v41 == -1 ? 0 : a2; + v19 = v41 == -1 && v18; + } + else + { + v19 = v48 == 0xFFFF; + } + LOBYTE(v10) = v54 & (a4 != 0); + if ( (_BYTE)v10 ) + { + v38 = (unsigned __int16 *)a4[2]; + if ( (unsigned int)v38 >= a4[3] ) + { + v55 = v19; + v39 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v19 = v55; + } + else + { + v39 = *v38; + } + a4 = (_WORD)v39 == 0xFFFF ? 0 : a4; + LOBYTE(v39) = (_WORD)v39 != 0xFFFF; + v10 &= v39 - 1; + if ( v19 == (_BYTE)v10 ) + { +LABEL_63: + *a7 = 6; + return a2; + } + } + else + { + v10 = v54; + if ( v19 == v54 ) + goto LABEL_63; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v13 + 48))(v13, *v11, 0) == 37 ) + { + v51 = v11 + 1; + if ( a10 == v11 + 1 ) + goto LABEL_90; + v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v13 + 48))(v13, v11[1], 0); + v21 = v20; + if ( v20 == 69 || v20 == 79 ) + { + v51 = v11 + 2; + if ( a10 == v11 + 2 ) + goto LABEL_90; + (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v13 + 48))(v13, v11[2]); + LOWORD(v51) = v47; + v54 = v53; + HIWORD(v11) = a5; + v42 = std::use_facet>((int)this); + *a6 = 0; + v59 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v42 + 40))(v42, 37, v46); + HIWORD(v23) = v57; + if ( (_BYTE)v21 ) + { + v60 = v21; + v61 = (char)v47; + v62 = 0; +LABEL_27: + LOWORD(v11) = a5; + LODWORD(v45) = a2; + LOWORD(v23) = v48; + HIDWORD(v45) = v23; + v25 = std::time_get>::_M_extract_via_format( + v45, + a4, + (int *)v11, + (int)a6, + a7, + a8, + &v59); + v24 = (_DWORD *)v25; + a2 = v25; + v48 = WORD2(v25); + BYTE4(v25) = WORD2(v25) == 0xFFFF; + v26 = BYTE4(v25) & ((_DWORD)v25 != 0); + if ( v26 ) + { + LODWORD(v25) = *(_DWORD *)(v25 + 8); + if ( (unsigned int)v25 >= v24[3] ) + LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); + else + LOWORD(v25) = *(_WORD *)v25; + BYTE4(v25) = (_WORD)v25 != 0xFFFF ? 0 : v26; + a2 = (_WORD)v25 == 0xFFFF ? 0 : (unsigned int)v24; + } + v10 = (int)a4; + if ( a4 && v54 ) + { + LODWORD(v25) = a4[2]; + if ( (unsigned int)v25 >= a4[3] ) + { + v56 = BYTE4(v25); + LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + BYTE4(v25) = v56; + } + else + { + LOWORD(v25) = *(_WORD *)v25; + } + LOBYTE(v25) = (_WORD)v25 == 0xFFFF; + } + else + { + LOBYTE(v25) = v54; + } + if ( BYTE4(v25) == (_BYTE)v25 ) + *a7 |= 2u; + v11 = v51 + 1; + if ( a10 == v51 + 1 ) + return a2; + goto LABEL_16; + } + v21 = (char)v47; + } + else + { + HIWORD(v11) = HIWORD(a5); + v22 = std::use_facet>((int)(a6 + 27)); + *a7 = 0; + v59 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v22 + 40))(v22, 37); + HIWORD(v23) = HIWORD(a3); + } + v60 = v21; + v61 = 0; + goto LABEL_27; + } + v14 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v13 + 8))(v13, 32, *v11); + if ( (_BYTE)v14 ) + break; + if ( a2 && v48 == 0xFFFF ) + { + v43 = *(unsigned __int16 **)(a2 + 8); + if ( (unsigned int)v43 >= *(_DWORD *)(a2 + 12) ) + v15 = (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + else + v15 = *v43; + a2 = (_WORD)v15 == 0xFFFF ? 0 : a2; + } + else + { + v15 = v48; + } + v10 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v13 + 32))(v13, v15); + if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v13 + 32))(v13, *v11) != (_WORD)v10 ) + { + if ( a2 && v48 == 0xFFFF ) + { + v44 = *(_WORD **)(a2 + 8); + v16 = (unsigned int)v44 >= *(_DWORD *)(a2 + 12) + ? (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2) + : (unsigned __int16)*v44; + a2 = (_WORD)v16 == 0xFFFF ? 0 : a2; + } + else + { + v16 = v48; + } + v10 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v13 + 24))(v13, v16); + if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v13 + 24))(v13, *v11) != (_WORD)v10 ) + { +LABEL_90: + *a7 = 4; + return a2; + } + } + v17 = *(_DWORD *)(a2 + 8); + if ( v17 >= *(_DWORD *)(a2 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + else + *(_DWORD *)(a2 + 8) = v17 + 2; + ++v11; + v48 = -1; +LABEL_15: + if ( a10 == v11 ) + return a2; +LABEL_16: + if ( *a7 ) + return a2; + } + v28 = v11 + 1; + if ( a10 != v28 ) + { + v10 = (int)a10; + do + { + v14 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v13 + 8))(v13, 32, *v28); + if ( !(_BYTE)v14 ) + break; + ++v28; + } + while ( a10 != v28 ); + } + v63 = v28; + while ( 1 ) + { + LOBYTE(v14) = v48 == 0xFFFF; + v32 = v14; + LOBYTE(v10) = v14 & (a2 != 0); + if ( (_BYTE)v10 ) + { + v33 = *(unsigned __int16 **)(a2 + 8); + if ( (unsigned int)v33 >= *(_DWORD *)(a2 + 12) ) + v34 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + else + v34 = *v33; + a2 = (_WORD)v34 == 0xFFFF ? 0 : a2; + LOBYTE(v34) = (_WORD)v34 != 0xFFFF; + v10 &= v34 - 1; + v29 = v54 & (a4 != 0); + if ( !v29 ) + { +LABEL_41: + if ( v54 == (_BYTE)v10 ) + goto LABEL_56; + goto LABEL_42; + } + } + else + { + v10 = v14; + v29 = v54 & (a4 != 0); + if ( !v29 ) + goto LABEL_41; + } + v35 = (__int16 *)a4[2]; + if ( (unsigned int)v35 >= a4[3] ) + { + v52 = v29; + v36 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v29 = v52; + } + else + { + v36 = *v35; + } + a4 = v36 == -1 ? 0 : a4; + if ( ((unsigned __int8)((v36 != -1) - 1) & v29) == (_BYTE)v10 ) + goto LABEL_56; +LABEL_42: + if ( a2 && v32 ) + { + v37 = *(unsigned __int16 **)(a2 + 8); + if ( (unsigned int)v37 >= *(_DWORD *)(a2 + 12) ) + v30 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + else + v30 = *v37; + a2 = v30 == 0xFFFF ? 0 : a2; + } + else + { + v30 = v48; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v13 + 8))(v13, 32, v30) ) + { +LABEL_56: + v11 = v63; + goto LABEL_15; + } + v31 = *(_DWORD *)(a2 + 8); + if ( v31 >= *(_DWORD *)(a2 + 12) ) + { + v14 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + } + else + { + v14 = v31 + 2; + *(_DWORD *)(a2 + 8) = v14; + } + v48 = -1; + } + } + return a2; +} +// 4A2DD6: variable 'v47' is possibly undefined +// 4A2DE4: variable 'v53' is possibly undefined +// 4A2E15: variable 'v46' is possibly undefined +// 4A2E22: variable 'v57' is possibly undefined + +//----- (004A2FE0) -------------------------------------------------------- +int __stdcall std::time_get>::get( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char a7, + char a8) +{ + int *v8; // eax + int v9; // edx + unsigned int v10; // ecx + char v11; // bl + int v12; // edi + __int64 v13; // rax + __int16 *v15; // eax + __int16 v16; // ax + _DWORD *v17; // [esp+2Ch] [ebp-34h] + char v18; // [esp+33h] [ebp-2Dh] + wchar_t v19; // [esp+3Ch] [ebp-24h] BYREF + __int16 v20; // [esp+3Eh] [ebp-22h] + __int16 v21; // [esp+40h] [ebp-20h] + __int16 v22; // [esp+42h] [ebp-1Eh] + + v8 = (int *)std::use_facet>(a4 + 108); + v9 = *v8; + *a5 = 0; + v19 = (*(int (__thiscall **)(int *, int))(v9 + 40))(v8, 37); + if ( a8 ) + { + v21 = a7; + v20 = a8; + v22 = 0; + } + else + { + v20 = a7; + v21 = 0; + } + v13 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v19); + v10 = v13; + v11 = WORD2(v13) == 0xFFFF; + v12 = v13; + BYTE4(v13) = v11 & ((_DWORD)v13 != 0); + if ( BYTE4(v13) ) + { + LODWORD(v13) = *(_DWORD *)(v13 + 8); + if ( (unsigned int)v13 >= *(_DWORD *)(v10 + 12) ) + { + v18 = BYTE4(v13); + v17 = (_DWORD *)v10; + LOWORD(v13) = (*(int (**)(void))(*(_DWORD *)v10 + 36))(); + BYTE4(v13) = v18; + v10 = (unsigned int)v17; + } + else + { + LOWORD(v13) = *(_WORD *)v13; + } + v11 = (_WORD)v13 != 0xFFFF ? 0 : BYTE4(v13); + LODWORD(v13) = ((_WORD)v13 == 0xFFFF) - 1; + v12 = v13 & v10; + } + LOBYTE(v13) = (_WORD)a3 == 0xFFFF; + HIDWORD(v13) = v13; + if ( a2 && (_WORD)a3 == 0xFFFF ) + { + v15 = (__int16 *)a2[2]; + if ( (unsigned int)v15 >= a2[3] ) + v16 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*a2 + 36))(a2, HIDWORD(v13)); + else + v16 = *v15; + BYTE4(v13) = v16 == -1; + } + if ( v11 == BYTE4(v13) ) + *a5 |= 2u; + return v12; +} + +//----- (004A3170) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char a7, + char a8) +{ + void *v8; // eax + __int64 v9; // rax + _DWORD *v10; // ecx + _DWORD *v11; // ebp + __int16 v12; // bx + char v13; // di + char v14; // cl + __int16 *v16; // eax + __int16 v17; // ax + __int16 *v18; // eax + __int16 v19; // ax + int v20; // [esp+34h] [ebp-3Ch] + wchar_t v21; // [esp+4Ch] [ebp-24h] BYREF + __int16 v22; // [esp+4Eh] [ebp-22h] + __int16 v23; // [esp+50h] [ebp-20h] + __int16 v24; // [esp+52h] [ebp-1Eh] + + v8 = std::use_facet>(a4 + 108); + *a5 = 0; + v21 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v8 + 40))(v8, 37); + if ( a8 ) + { + v23 = a7; + v22 = a8; + v24 = 0; + } + else + { + v22 = a7; + v23 = 0; + } + v9 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v21); + v10 = (_DWORD *)v9; + v11 = (_DWORD *)v9; + v12 = WORD2(v9) == 0xFFFF; + v13 = v12 & ((_DWORD)v9 != 0); + if ( v13 ) + { + v18 = *(__int16 **)(v9 + 8); + if ( (unsigned int)v18 >= v10[3] ) + { + v20 = (int)v10; + v19 = (*(int (**)(void))(*v10 + 36))(); + v10 = (_DWORD *)v20; + } + else + { + v19 = *v18; + } + LOBYTE(v12) = v19 != -1 ? 0 : v13; + v11 = v19 == -1 ? 0 : v10; + } + v14 = (_WORD)a3 == 0xFFFF; + if ( a2 && (_WORD)a3 == 0xFFFF ) + { + v16 = (__int16 *)a2[2]; + if ( (unsigned int)v16 >= a2[3] ) + v17 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + else + v17 = *v16; + v14 = v17 == -1; + } + if ( (_BYTE)v12 == v14 ) + *a5 |= 2u; + return v11; +} + +//----- (004A3330) -------------------------------------------------------- +int __fastcall std::time_get>::get_date(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); +} + +//----- (004A3340) -------------------------------------------------------- +int __fastcall std::time_get>::get_time(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); +} + +//----- (004A3350) -------------------------------------------------------- +int __fastcall std::time_get>::get_year(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); +} + +//----- (004A3360) -------------------------------------------------------- +__int64 __thiscall std::time_put>::put( + void *this, + __int64 a2, + int a3, + char a4, + int a5, + unsigned __int8 *a6, + unsigned __int8 *a7) +{ + unsigned __int8 *v7; // ebx + _BYTE *v8; // eax + _BYTE *v9; // esi + int v10; // edx + _BYTE *v11; // eax + int v12; // ebp + unsigned __int8 *v13; // edi + signed __int8 v14; // dl + signed __int8 v15; // al + int (__stdcall *v16)(unsigned __int8, int); // edx + int v17; // ebp + signed __int8 v18; // dl + signed __int8 v19; // al + int (__stdcall *v20)(unsigned __int8, int); // edx + int v21; // ecx + int v22; // ebp + int v24; // ebx + char v25; // al + int (__stdcall *v26)(unsigned __int8, int); // edx + char v27; // [esp+27h] [ebp-35h] + __int64 v28; // [esp+28h] [ebp-34h] + __int64 v30; // [esp+38h] [ebp-24h] + + v7 = a6; + v27 = BYTE4(a2); + v28 = a2; + v8 = std::use_facet>(a3 + 108); + if ( a6 != a7 ) + { + v9 = v8; + while ( 1 ) + { + v12 = *v7; + v13 = v7 + 1; + v14 = v9[v12 + 285]; + v15 = *v7; + if ( !v14 ) + { + v16 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v9 + 32); + if ( v16 != std::ctype::do_narrow ) + v15 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v16)(v9, v15, 0); + if ( !v15 ) + goto LABEL_3; + v9[v12 + 285] = v15; + v14 = v15; + } + if ( v14 == 37 ) + { + if ( a7 == v13 ) + break; + v17 = v7[1]; + v18 = v9[v17 + 285]; + v19 = v7[1]; + if ( !v18 ) + { + v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v9 + 32); + if ( v20 != std::ctype::do_narrow ) + v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v9, v19, 0); + if ( !v19 ) + { + v21 = 0; + v22 = 0; + goto LABEL_22; + } + v9[v17 + 285] = v19; + v18 = v19; + } + if ( v18 == 69 || v18 == 79 ) + { + v13 = v7 + 2; + if ( a7 == v7 + 2 ) + break; + v24 = v7[2]; + v22 = v18; + v21 = (char)v9[v24 + 285]; + v25 = v24; + if ( !(_BYTE)v21 ) + { + v21 = (char)v24; + v26 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v9 + 32); + if ( v26 != std::ctype::do_narrow ) + { + v25 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v26)(v9, (char)v24, 0); + v21 = v25; + } + if ( v25 ) + v9[v24 + 285] = v25; + } + } + else + { + v21 = v18; + v22 = 0; + } +LABEL_22: + BYTE4(v28) = v27; + v7 = v13 + 1; + v30 = ((__int64 (__thiscall *)(void *, _DWORD, _DWORD, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( + this, + v28, + HIDWORD(v28), + a3, + a4, + a5, + v21, + v22); + LODWORD(v28) = v30; + v27 = BYTE4(v30); + if ( a7 == v13 + 1 ) + break; + } + else + { +LABEL_3: + if ( v27 ) + { + ++v7; + } + else + { + v10 = *v7; + v11 = *(_BYTE **)(v28 + 20); + if ( (unsigned int)v11 >= *(_DWORD *)(v28 + 24) ) + { + ++v7; + v27 = (*(int (__thiscall **)(_DWORD, int))(*(_DWORD *)v28 + 52))(v28, v10) == -1; + } + else + { + *v11 = v10; + ++v7; + ++*(_DWORD *)(v28 + 20); + } + } + if ( a7 == v7 ) + break; + } + } + } + BYTE4(v28) = v27; + return v28; +} + +//----- (004A35F0) -------------------------------------------------------- +int __thiscall std::time_put>::put( + void *this, + int a2, + int a3, + int a4, + char a5, + int a6, + char a7, + char a8) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( + this, + a2, + a3, + a4, + a5, + a6, + a7, + a8); +} + +//----- (004A3610) -------------------------------------------------------- +int __stdcall std::time_put>::do_put( + int a1, + char a2, + int a3, + int a4, + struct tm *a5, + char a6, + char a7) +{ + _BYTE *v7; // ebx + const char **v8; // eax + const char **v9; // edx + char v10; // cl + char *v11; // kr00_4 + int (__stdcall *v13)(unsigned __int8); // eax + const char **v14; // [esp+1Ch] [ebp-B0h] + char Format; // [esp+2Ch] [ebp-A0h] BYREF + char v16; // [esp+2Dh] [ebp-9Fh] + char v17; // [esp+2Eh] [ebp-9Eh] + char v18; // [esp+2Fh] [ebp-9Dh] + char Buffer[156]; // [esp+30h] [ebp-9Ch] BYREF + + v7 = std::use_facet>(a3 + 108); + v8 = (const char **)std::use_facet>(a3 + 108); + v9 = v8; + if ( v7[28] ) + { + v10 = v7[66]; + } + else + { + v14 = v8; + std::ctype::_M_widen_init((int)v7); + v9 = v14; + v10 = 37; + v13 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v7 + 24); + if ( v13 != std::ctype::do_widen ) + { + v10 = ((int (__fastcall *)(_BYTE *, const char **, int))v13)(v7, v14, 37); + v9 = v14; + } + } + Format = v10; + if ( a7 ) + { + v16 = a7; + v18 = 0; + v17 = a6; + } + else + { + v17 = 0; + v16 = a6; + } + std::__timepunct::_M_put(v9, Buffer, 0x80u, &Format, a5); + v11 = &Buffer[strlen(Buffer)]; + if ( !a2 ) + (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)a1 + 48))(a1, Buffer, v11 - Buffer); + return a1; +} +// 4A3610: using guessed type char var_9C[156]; + +//----- (004A3790) -------------------------------------------------------- +_DWORD *__thiscall std::time_put>::put( + void *this, + _DWORD *a2, + int a3, + int a4, + unsigned __int16 a5, + int a6, + unsigned __int16 *a7, + unsigned __int16 *a8) +{ + int v8; // ebp + unsigned __int16 *v9; // ebx + void *v10; // eax + void *v11; // esi + unsigned __int16 v12; // ax + unsigned __int16 *v13; // edx + unsigned __int16 *v14; // edi + char v15; // al + int v16; // edx + int v17; // eax + int v18; // ecx + int v19; // ebp + __int64 v20; // rax + int v21; // ecx + char v23; // cl + char v26; // [esp+46h] [ebp-26h] + char v27; // [esp+47h] [ebp-25h] + + v8 = a3; + v9 = a7; + v26 = a3; + v10 = std::use_facet>(a4 + 108); + if ( a7 != a8 ) + { + v11 = v10; + do + { + while ( 1 ) + { + v14 = v9 + 1; + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, *v9, 0) != 37 ) + break; + if ( a8 == v14 ) + return a2; + v15 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[1], 0); + v16 = v15; + if ( v15 == 69 || (v17 = 0, (_BYTE)v16 == 79) ) + { + v27 = v16; + v14 = v9 + 2; + if ( a8 == v9 + 2 ) + return a2; + v23 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[2], 0); + v17 = v27; + v16 = v23; + } + v18 = v8; + LOBYTE(v18) = v26; + v19 = v18; + v20 = ((__int64 (__thiscall *)(void *, _DWORD *, int, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( + this, + a2, + v18, + a4, + a5, + a6, + v16, + v17); + v21 = v19; + v9 = v14 + 1; + LOBYTE(v21) = BYTE4(v20); + v8 = v21; + a2 = (_DWORD *)v20; + v26 = BYTE4(v20); + if ( a8 == v14 + 1 ) + return a2; + } + if ( v26 ) + { + ++v9; + } + else + { + v12 = *v9; + v13 = (unsigned __int16 *)a2[5]; + if ( (unsigned int)v13 >= a2[6] ) + { + v12 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, *v9); + } + else + { + *v13 = v12; + a2[5] = v13 + 1; + } + ++v9; + if ( v12 == 0xFFFF ) + v26 = 1; + } + } + while ( a8 != v9 ); + } + return a2; +} + +//----- (004A3960) -------------------------------------------------------- +int __thiscall std::time_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5, + int a6, + char a7, + char a8) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( + this, + a2, + a3, + a4, + a5, + a6, + a7, + a8); +} + +//----- (004A3980) -------------------------------------------------------- +int __stdcall std::time_put>::do_put( + int a1, + char a2, + int a3, + int a4, + struct tm *a5, + char a6, + char a7) +{ + const char **v7; // ebx + size_t v8; // ebx + void *v10; // [esp+1Ch] [ebp-134h] + wchar_t Format; // [esp+2Ch] [ebp-124h] BYREF + __int16 v12; // [esp+2Eh] [ebp-122h] + __int16 v13; // [esp+30h] [ebp-120h] + __int16 v14; // [esp+32h] [ebp-11Eh] + wchar_t Buffer[142]; // [esp+34h] [ebp-11Ch] BYREF + + v10 = std::use_facet>(a3 + 108); + v7 = (const char **)std::use_facet>(a3 + 108); + Format = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 37); + if ( a7 ) + { + v13 = a6; + v12 = a7; + v14 = 0; + } + else + { + v12 = a6; + v13 = 0; + } + std::__timepunct::_M_put(v7, Buffer, 0x80u, &Format, a5); + v8 = wcslen(Buffer); + if ( !a2 ) + (*(int (__thiscall **)(int, wchar_t *, size_t))(*(_DWORD *)a1 + 48))(a1, Buffer, v8); + return a1; +} + +//----- (004A3AA0) -------------------------------------------------------- +const char *std::bad_alloc::what() +{ + return "std::bad_alloc"; +} + +//----- (004A3AB0) -------------------------------------------------------- +int __fastcall std::ios::exceptions(int a1) +{ + return *(_DWORD *)(a1 + 16); +} + +//----- (004A3AC0) -------------------------------------------------------- +int __fastcall std::ios::bad(int a1) +{ + return *(_DWORD *)(a1 + 20) & 1; +} + +//----- (004A3AD0) -------------------------------------------------------- +int __fastcall std::ios::eof(int a1) +{ + return (*(_DWORD *)(a1 + 20) >> 1) & 1; +} + +//----- (004A3AE0) -------------------------------------------------------- +int __fastcall std::ios::tie(int a1) +{ + return *(_DWORD *)(a1 + 112); +} + +//----- (004A3AF0) -------------------------------------------------------- +bool __fastcall std::ios::fail(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) != 0; +} + +//----- (004A3B00) -------------------------------------------------------- +int __fastcall std::ios::fill(int a1) +{ + int result; // eax + _BYTE *v3; // esi + int (__stdcall *v4)(unsigned __int8); // edx + + if ( *(_BYTE *)(a1 + 117) ) + return *(unsigned __int8 *)(a1 + 116); + v3 = *(_BYTE **)(a1 + 124); + if ( !v3 ) + std::__throw_bad_cast(); + if ( v3[28] ) + { + result = (unsigned __int8)v3[61]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)(a1 + 124)); + v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); + result = 32; + if ( v4 != std::ctype::do_widen ) + result = ((int (__thiscall *)(_BYTE *, int))v4)(v3, 32); + } + *(_BYTE *)(a1 + 116) = result; + *(_BYTE *)(a1 + 117) = 1; + return result; +} + +//----- (004A3B70) -------------------------------------------------------- +bool __fastcall std::ios::good(int a1) +{ + return *(_DWORD *)(a1 + 20) == 0; +} + +//----- (004A3B80) -------------------------------------------------------- +int __fastcall std::ios::rdbuf(int a1) +{ + return *(_DWORD *)(a1 + 120); +} + +//----- (004A3B90) -------------------------------------------------------- +int __thiscall std::ios::widen(int *this, int a2) +{ + _BYTE *v2; // ebx + int result; // eax + int (__stdcall *v4)(unsigned __int8); // edx + + v2 = (_BYTE *)this[31]; + if ( !v2 ) + std::__throw_bad_cast(); + if ( v2[28] ) + return (unsigned __int8)v2[(unsigned __int8)a2 + 29]; + std::ctype::_M_widen_init(this[31]); + v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); + result = a2; + if ( v4 != std::ctype::do_widen ) + return ((int (__thiscall *)(_BYTE *, _DWORD))v4)(v2, (char)a2); + return result; +} + +//----- (004A3BF0) -------------------------------------------------------- +int __thiscall std::ios::narrow(_DWORD *this, int a2, int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + int (__stdcall *v6)(unsigned __int8, int); // ebp + + v3 = this[31]; + if ( !v3 ) + std::__throw_bad_cast(); + result = *(unsigned __int8 *)(v3 + (unsigned __int8)a2 + 285); + if ( !(_BYTE)result ) + { + v5 = a2; + v6 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v3 + 32); + if ( v6 != std::ctype::do_narrow ) + v5 = ((int (__thiscall *)(int, _DWORD, _DWORD))v6)(v3, (char)a2, (char)a3); + result = a3; + if ( (_BYTE)a3 != (_BYTE)v5 ) + { + *(_BYTE *)(v3 + (unsigned __int8)a2 + 285) = v5; + return v5; + } + } + return result; +} + +//----- (004A3C60) -------------------------------------------------------- +int __fastcall std::ios::rdstate(int a1) +{ + return *(_DWORD *)(a1 + 20); +} + +//----- (004A3C70) -------------------------------------------------------- +int __fastcall std::ios::operator void *(int a1) +{ + return (*(_DWORD *)(a1 + 20) & 5) == 0 ? a1 : 0; +} + +//----- (004A3C80) -------------------------------------------------------- +bool __fastcall std::ios::operator bool(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) == 0; +} + +//----- (004A3C90) -------------------------------------------------------- +bool __fastcall std::ios::operator!(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) != 0; +} + +//----- (004A3CA0) -------------------------------------------------------- +int __fastcall std::wios::exceptions(int a1) +{ + return *(_DWORD *)(a1 + 16); +} + +//----- (004A3CB0) -------------------------------------------------------- +int __fastcall std::wios::bad(int a1) +{ + return *(_DWORD *)(a1 + 20) & 1; +} + +//----- (004A3CC0) -------------------------------------------------------- +int __fastcall std::wios::eof(int a1) +{ + return (*(_DWORD *)(a1 + 20) >> 1) & 1; +} + +//----- (004A3CD0) -------------------------------------------------------- +int __fastcall std::wios::tie(int a1) +{ + return *(_DWORD *)(a1 + 112); +} + +//----- (004A3CE0) -------------------------------------------------------- +bool __fastcall std::wios::fail(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) != 0; +} + +//----- (004A3CF0) -------------------------------------------------------- +int __fastcall std::wios::fill(int a1) +{ + int result; // eax + int v3; // ecx + + if ( *(_BYTE *)(a1 + 118) ) + return *(unsigned __int16 *)(a1 + 116); + v3 = *(_DWORD *)(a1 + 124); + if ( !v3 ) + std::__throw_bad_cast(); + result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 32); + *(_BYTE *)(a1 + 118) = 1; + *(_WORD *)(a1 + 116) = result; + return result; +} + +//----- (004A3D30) -------------------------------------------------------- +bool __fastcall std::wios::good(int a1) +{ + return *(_DWORD *)(a1 + 20) == 0; +} + +//----- (004A3D40) -------------------------------------------------------- +int __fastcall std::wios::rdbuf(int a1) +{ + return *(_DWORD *)(a1 + 120); +} + +//----- (004A3D50) -------------------------------------------------------- +int __thiscall std::wios::widen(_DWORD *this, char a2) +{ + int v2; // ecx + + v2 = this[31]; + if ( !v2 ) + std::__throw_bad_cast(); + return (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); +} + +//----- (004A3D80) -------------------------------------------------------- +int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16 a2, char a3) +{ + int v3; // ecx + + v3 = this[31]; + if ( !v3 ) + std::__throw_bad_cast(); + return (*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v3 + 48))(v3, a2, a3); +} + +//----- (004A3DC0) -------------------------------------------------------- +int __fastcall std::wios::rdstate(int a1) +{ + return *(_DWORD *)(a1 + 20); +} + +//----- (004A3DD0) -------------------------------------------------------- +int __fastcall std::wios::operator void *(int a1) +{ + return (*(_DWORD *)(a1 + 20) & 5) == 0 ? a1 : 0; +} + +//----- (004A3DE0) -------------------------------------------------------- +bool __fastcall std::wios::operator bool(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) == 0; +} + +//----- (004A3DF0) -------------------------------------------------------- +bool __fastcall std::wios::operator!(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) != 0; +} + +//----- (004A3E00) -------------------------------------------------------- +const char *_ZGTtNKSt9exception4whatEv() +{ + return "std::exception"; +} + +//----- (004A3E10) -------------------------------------------------------- +int __stdcall std::money_get>::_M_extract( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // esi + int *v7; // edi + int v8; // ebx + bool v9; // zf + char v10; // si + int v11; // edi + int v12; // eax + _DWORD *v13; // ecx + char v14; // si + char v15; // si + _BYTE *v16; // eax + int v17; // eax + _DWORD *v18; // ecx + int v19; // edi + volatile signed __int32 *v20; // eax + unsigned int v21; // eax + char v22; // si + char v23; // di + char v24; // al + char v25; // di + int v26; // edi + _BYTE *v27; // eax + int v28; // edi + char v29; // cl + volatile signed __int32 *v30; // eax + char v31; // di + _DWORD *v32; // ecx + int v33; // eax + char v34; // si + char v35; // di + int v36; // eax + _BYTE *v37; // eax + int v38; // eax + _DWORD *v39; // ecx + char v40; // al + int v41; // eax + unsigned __int8 *v42; // eax + char v43; // di + int v44; // edx + _BYTE *v45; // eax + char v46; // al + char v47; // bl + char v48; // al + char v49; // bl + int v50; // ebx + int v52; // edx + int v53; // eax + unsigned int v54; // eax + int v55; // eax + int v56; // eax + std::string *v57; // eax + int v58; // edx + unsigned int first_not_of; // eax + unsigned int v60; // edx + unsigned int v61; // eax + std::locale::_Impl *v62; // eax + std::locale::_Impl *v63; // ebx + volatile signed __int32 *v64; // eax + unsigned int v65; // eax + void (__cdecl *v66)(void *); // [esp+4h] [ebp-64h] + std::string *v67; // [esp+4h] [ebp-64h] + unsigned int v68; // [esp+8h] [ebp-60h] + unsigned int v69; // [esp+Ch] [ebp-5Ch] + char v70; // [esp+10h] [ebp-58h] + char v71; // [esp+18h] [ebp-50h] + unsigned int v72; // [esp+1Ch] [ebp-4Ch] + _DWORD *v73; // [esp+20h] [ebp-48h] + unsigned int v74; // [esp+24h] [ebp-44h] + int v75; // [esp+2Ch] [ebp-3Ch] + bool v76; // [esp+31h] [ebp-37h] + char v77; // [esp+32h] [ebp-36h] + char v78; // [esp+33h] [ebp-35h] + char v79; // [esp+34h] [ebp-34h] + int v80; // [esp+34h] [ebp-34h] + char v81; // [esp+34h] [ebp-34h] + unsigned int v82; // [esp+34h] [ebp-34h] + char v83; // [esp+34h] [ebp-34h] + char v84; // [esp+34h] [ebp-34h] + unsigned int Buf; // [esp+38h] [ebp-30h] + int v86; // [esp+3Ch] [ebp-2Ch] + int v87; // [esp+3Ch] [ebp-2Ch] + char v88; // [esp+43h] [ebp-25h] BYREF + volatile signed __int32 *v89; // [esp+44h] [ebp-24h] BYREF + volatile signed __int32 *v90; // [esp+48h] [ebp-20h] BYREF + int v91; // [esp+4Ch] [ebp-1Ch] + + v86 = a4 + 108; + v73 = std::use_facet>(a4 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * v6); + v8 = *v7; + if ( !*v7 ) + { + v62 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v66); + *(_DWORD *)v62 = &off_538D0C; + v63 = v62; + *((_DWORD *)v62 + 1) = 0; + *((_DWORD *)v62 + 2) = 0; + *((_DWORD *)v62 + 3) = 0; + *((_WORD *)v62 + 8) = 0; + *((_BYTE *)v62 + 18) = 0; + *((_DWORD *)v62 + 5) = 0; + *((_DWORD *)v62 + 6) = 0; + *((_DWORD *)v62 + 7) = 0; + *((_DWORD *)v62 + 8) = 0; + *((_DWORD *)v62 + 9) = 0; + *((_DWORD *)v62 + 10) = 0; + *((_DWORD *)v62 + 11) = 0; + *((_DWORD *)v62 + 12) = 0; + *((_DWORD *)v62 + 13) = 0; + *((_BYTE *)v62 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v62, v86); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v63, (const std::locale::facet *)v6, v68); + v8 = *v7; + } + if ( *(_DWORD *)(v8 + 32) ) + v76 = *(_DWORD *)(v8 + 40) != 0; + else + v76 = 0; + v9 = *(_BYTE *)(v8 + 16) == 0; + v89 = (volatile signed __int32 *)&unk_51641C; + if ( !v9 ) + std::string::reserve((unsigned int **)&v89, (std::string *)0x20, (unsigned int)v66); + v90 = (volatile signed __int32 *)&unk_51641C; + std::string::reserve((unsigned int **)&v90, (std::string *)0x20, (unsigned int)v66); + v78 = 0; + v75 = 1; + v91 = *(_DWORD *)(v8 + 52); + v87 = 0; + v71 = 0; + v74 = 0; + v77 = 0; + while ( 2 ) + { + switch ( *((_BYTE *)&v90 + v75 + 3) ) + { + case 0: + v10 = 1; + goto LABEL_10; + case 1: + if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) + && (*(_BYTE *)(v73[6] + + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 0x20) != 0 ) + { + v54 = *(_DWORD *)(a1 + 8); + if ( v54 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v54 + 1; + HIDWORD(a1) = -1; + v10 = 1; +LABEL_10: + if ( v75 == 4 ) + goto LABEL_11; + goto LABEL_75; + } + v10 = 0; + if ( v75 != 4 ) + { +LABEL_75: + v38 = HIDWORD(a1); + v39 = (_DWORD *)a1; + while ( 1 ) + { + v43 = v38 == -1; + v84 = v43 & (v39 != 0); + if ( v84 ) + { + v43 = 0; + if ( v39[2] >= v39[3] && (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39) == -1 ) + { + LODWORD(a1) = 0; + v43 = v84; + } + } + v40 = a3 == -1; + v83 = v40 & (a2 != 0); + if ( v83 ) + { + v40 = 0; + if ( a2[2] >= a2[3] ) + { + v52 = (*(int (**)(void))(*a2 + 36))(); + v40 = 0; + if ( v52 == -1 ) + { + a2 = 0; + v40 = v83; + } + } + } + if ( v43 == v40 ) + goto LABEL_112; + LOBYTE(v41) = BYTE4(a1); + v39 = (_DWORD *)a1; + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v42 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(v73[6] + 2 * *v42) & 0x20) == 0 ) + goto LABEL_112; +LABEL_81: + v39[2] = v42 + 1; + goto LABEL_82; + } + v41 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v41 == -1 ) + LODWORD(a1) = 0; + } + if ( (*(_BYTE *)(v73[6] + 2 * (unsigned __int8)v41) & 0x20) == 0 ) + goto LABEL_112; + v39 = (_DWORD *)a1; + v42 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + goto LABEL_81; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v39 = (_DWORD *)a1; +LABEL_82: + HIDWORD(a1) = -1; + v38 = -1; + } + } +LABEL_11: + if ( ((unsigned __int8)v10 & (v74 > 1)) == 0 ) + { + if ( v10 ) + { + if ( *((_DWORD *)v90 - 3) > 1u ) + goto LABEL_175; + goto LABEL_152; + } + goto LABEL_99; + } + if ( v77 ) + v11 = *(_DWORD *)(v8 + 36); + else + v11 = *(_DWORD *)(v8 + 28); + v12 = HIDWORD(a1); + v13 = (_DWORD *)a1; + for ( Buf = 1; ; ++Buf ) + { + v14 = v12 == -1; + v79 = v14 & (v13 != 0); + if ( v79 ) + { + v14 = 0; + if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) + { + LODWORD(a1) = 0; + v14 = v79; + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v53 = (*(int (**)(void))(*a2 + 36))(); + v14 ^= v53 == -1; + if ( v53 == -1 ) + a2 = 0; + } + } + else + { + v14 ^= a3 == -1; + } + if ( Buf >= v74 || !v14 ) + break; + v13 = (_DWORD *)a1; + LOBYTE(v80) = BYTE4(a1); + v15 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; + if ( v15 ) + { + v16 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v16 < *(_DWORD *)(a1 + 12) ) + { + if ( *v16 != *(_BYTE *)(v11 + Buf) ) + { + v47 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; + goto LABEL_101; + } +LABEL_24: + v13[2] = v16 + 1; + goto LABEL_25; + } + v80 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v80 == -1 ) + { + LODWORD(a1) = 0; + v13 = 0; + } + else + { + v13 = (_DWORD *)a1; + } + } + if ( *(_BYTE *)(v11 + Buf) != (_BYTE)v80 ) + goto LABEL_100; + v16 = (_BYTE *)v13[2]; + if ( (unsigned int)v16 < v13[3] ) + goto LABEL_24; + (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); + v13 = (_DWORD *)a1; +LABEL_25: + v12 = -1; + HIDWORD(a1) = -1; + } + if ( Buf == v74 ) + { + if ( *((_DWORD *)v90 - 3) <= 1u ) + goto LABEL_152; +LABEL_175: + first_not_of = std::string::find_first_not_of((int *)&v90, (std::string *)0x30, 0, v68); + if ( first_not_of ) + { + v60 = *((_DWORD *)v90 - 3); + if ( first_not_of == -1 ) + first_not_of = v60 - 1; + if ( first_not_of > v60 ) + first_not_of = *((_DWORD *)v90 - 3); + std::string::_M_mutate(&v90, 0, first_not_of, 0, v69); + } +LABEL_152: + if ( v77 ) + { + v64 = v90; + if ( *((int *)v90 - 1) >= 0 ) + { + std::string::_M_leak_hard(&v90); + v64 = v90; + } + if ( *(_BYTE *)v64 != 48 ) + { + if ( *((int *)v64 - 1) >= 0 ) + std::string::_M_leak_hard(&v90); + std::string::_M_replace_aux(&v90, 0, 0, 1u, 45, v70); + *((_DWORD *)v90 - 1) = -1; + } + } + if ( *((_DWORD *)v89 - 3) ) + { + v57 = (std::string *)(char)v87; + if ( v78 ) + v57 = (std::string *)v71; + std::string::push_back((unsigned int **)&v89, v57, (char)v67); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)&v89) ) + *a5 |= 4u; + } + if ( !v78 || *(_DWORD *)(v8 + 44) == v87 ) + { + std::string::swap(a6, (std::string *)&v90, v67); + v13 = (_DWORD *)a1; + v15 = HIDWORD(a1) == -1; + v47 = v15 & ((_DWORD)a1 != 0); + if ( v47 ) + goto LABEL_161; + goto LABEL_102; + } + } +LABEL_99: + v13 = (_DWORD *)a1; +LABEL_100: + v15 = HIDWORD(a1) == -1; + v47 = v15 & (v13 != 0); +LABEL_101: + *a5 |= 4u; + if ( v47 ) + { +LABEL_161: + v15 = 0; + if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) + { + LODWORD(a1) = 0; + v15 = v47; + } + } +LABEL_102: + v48 = a3 == -1; + v49 = v48 & (a2 != 0); + if ( v49 ) + { + v48 = 0; + if ( a2[2] >= a2[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v48 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v48 = v49; + } + } + } + if ( v15 == v48 ) + *a5 |= 2u; + v50 = a1; + if ( v90 != (volatile signed __int32 *)&unk_51641C ) + std::string::_Rep::_M_dispose(v90 - 3, (int)&v88); + if ( v89 != (volatile signed __int32 *)&unk_51641C ) + std::string::_Rep::_M_dispose(v89 - 3, (int)&v88); + return v50; + case 2: + if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) + goto LABEL_62; + v31 = v75 == 1 || v74 > 1; + if ( v31 ) + goto LABEL_62; + if ( v75 == 2 ) + { + if ( !v76 && (_BYTE)v91 != 3 && BYTE2(v91) != 1 ) + goto LABEL_115; + } + else + { + v10 = 1; + if ( v75 != 3 ) + goto LABEL_113; + if ( HIBYTE(v91) != 4 && (HIBYTE(v91) != 3 || !v76) ) + goto LABEL_115; + } +LABEL_62: + v32 = (_DWORD *)a1; + v82 = 0; + v72 = *(_DWORD *)(v8 + 24); + v33 = HIDWORD(a1); + while ( 2 ) + { + v34 = v33 == -1; + v35 = v34 & (v32 != 0); + if ( v35 ) + { + v34 = 0; + if ( v32[2] >= v32[3] && (*(int (__fastcall **)(_DWORD *))(*v32 + 36))(v32) == -1 ) + { + LODWORD(a1) = 0; + v34 = v35; + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v55 = (*(int (**)(void))(*a2 + 36))(); + v34 ^= v55 == -1; + if ( v55 == -1 ) + a2 = 0; + } + } + else + { + v34 ^= a3 == -1; + } + v31 = (v82 < v72) & v34; + if ( v31 ) + { + LOBYTE(v36) = BYTE4(a1); + v32 = (_DWORD *)a1; + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_69; + v37 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v37 < *(_DWORD *)(a1 + 12) ) + { + if ( *v37 != *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) ) + goto LABEL_146; + goto LABEL_71; + } + v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v36 == -1 ) + LODWORD(a1) = 0; +LABEL_69: + if ( *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) != (_BYTE)v36 ) + goto LABEL_146; + v32 = (_DWORD *)a1; + v37 = *(_BYTE **)(a1 + 8); + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v37 ) + { + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v32 = (_DWORD *)a1; + } + else + { +LABEL_71: + v32[2] = v37 + 1; + } + ++v82; + v33 = -1; + HIDWORD(a1) = -1; + continue; + } + break; + } + if ( v82 == v72 ) + { +LABEL_171: + v10 = 1; + goto LABEL_113; + } +LABEL_146: + if ( v82 ) + goto LABEL_99; + v56 = *(_DWORD *)(a4 + 12) & 0x200; + v10 = v56 == 0; + v31 = v56 != 0; +LABEL_113: + if ( v75 > 3 || v31 ) + goto LABEL_11; +LABEL_115: + ++v75; + continue; + case 3: + if ( *(_DWORD *)(v8 + 32) ) + { + v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v31 + && **(_BYTE **)(v8 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get( + (_DWORD **)&a1, + SHIDWORD(a1)) ) + { + v74 = *(_DWORD *)(v8 + 32); + v61 = *(_DWORD *)(a1 + 8); + if ( v61 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v61 + 1; + HIDWORD(a1) = -1; + v10 = 1; + goto LABEL_113; + } + if ( !*(_DWORD *)(v8 + 40) ) + { + if ( !*(_DWORD *)(v8 + 32) ) + goto LABEL_54; + goto LABEL_131; + } + } + else if ( !*(_DWORD *)(v8 + 40) ) + { + goto LABEL_54; + } + v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v31 + && **(_BYTE **)(v8 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get( + (_DWORD **)&a1, + SHIDWORD(a1)) ) + { + v74 = *(_DWORD *)(v8 + 40); + v65 = *(_DWORD *)(a1 + 8); + if ( v65 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v65 + 1; + HIDWORD(a1) = -1; + v10 = 1; + v77 = 1; + goto LABEL_113; + } + if ( !*(_DWORD *)(v8 + 32) || *(_DWORD *)(v8 + 40) ) + { +LABEL_54: + v31 = v76; + v10 = !v76; + goto LABEL_113; + } +LABEL_131: + v77 = 1; + v31 = 0; + v10 = 1; + goto LABEL_113; + case 4: + v17 = HIDWORD(a1); + v18 = (_DWORD *)a1; + while ( 2 ) + { + v22 = v17 == -1; + v23 = v22 & (v18 != 0); + if ( v23 ) + { + v22 = 0; + if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) + { + LODWORD(a1) = 0; + v22 = v23; + } + } + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v24 = 0; + if ( a2[2] >= a2[3] ) + { + v44 = (*(int (**)(void))(*a2 + 36))(); + v24 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + } + if ( v24 == v22 ) + goto LABEL_168; + LOBYTE(v26) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v45 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) + { + v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v26 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v26) = -1; + } + } + else + { + LOBYTE(v26) = *v45; + } + } + v27 = memchr((const void *)(v8 + 57), (char)v26, 0xAu); + if ( !v27 ) + { + v10 = v78 | (*(_BYTE *)(v8 + 17) != (unsigned __int8)v26); + if ( v10 ) + { + if ( *(_BYTE *)(v8 + 16) ) + { + if ( *(_BYTE *)(v8 + 18) == (_BYTE)v26 ) + { + if ( v78 ) + { + v10 = v78; + } + else + { + if ( v87 ) + { + v28 = *((_DWORD *)v89 - 3); + if ( (unsigned int)(v28 + 1) > *((_DWORD *)v89 - 2) || *((int *)v89 - 1) > 0 ) + std::string::reserve((unsigned int **)&v89, (std::string *)(v28 + 1), (unsigned int)v67); + v29 = v87; + v87 = 0; + *((_BYTE *)v89 + *((_DWORD *)v89 - 3)) = v29; + v30 = v89; + if ( v89 != (volatile signed __int32 *)&unk_51641C ) + { + *((_DWORD *)v89 - 1) = 0; + *((_DWORD *)v30 - 3) = v28 + 1; + *((_BYTE *)v30 + v28 + 1) = 0; + v18 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_51; + goto LABEL_34; + } +LABEL_33: + v18 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 >= *(_DWORD *)(a1 + 12) ) + { +LABEL_51: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + goto LABEL_35; + } +LABEL_34: + v18[2] = v21 + 1; +LABEL_35: + HIDWORD(a1) = -1; + v17 = -1; + continue; + } + v10 = 0; + } + } + else + { + v10 = *(_BYTE *)(v8 + 16); + } + } + if ( !*((_DWORD *)v90 - 3) ) + goto LABEL_99; + } + else + { + if ( *(int *)(v8 + 44) > 0 ) + { + v46 = v87; + v78 = 1; + v87 = 0; + v71 = v46; + goto LABEL_33; + } + v78 = 0; +LABEL_168: + v10 = 1; + if ( !*((_DWORD *)v90 - 3) ) + goto LABEL_99; + } +LABEL_112: + v31 = v10 ^ 1; + goto LABEL_113; + } + break; + } + v81 = v27[(_DWORD)std::money_base::_S_atoms - 56 - v8]; + v19 = *((_DWORD *)v90 - 3); + if ( (unsigned int)(v19 + 1) > *((_DWORD *)v90 - 2) || *((int *)v90 - 1) > 0 ) + std::string::reserve((unsigned int **)&v90, (std::string *)(v19 + 1), (unsigned int)v67); + *((_BYTE *)v90 + *((_DWORD *)v90 - 3)) = v81; + v20 = v90; + if ( v90 != (volatile signed __int32 *)&unk_51641C ) + { + *((_DWORD *)v90 - 1) = 0; + *((_DWORD *)v20 - 3) = v19 + 1; + *((_BYTE *)v20 + v19 + 1) = 0; + } + ++v87; + goto LABEL_33; + default: + v31 = 0; + goto LABEL_171; + } + } +} +// 4A49C7: variable 'v66' is possibly undefined +// 4A4A53: variable 'v68' is possibly undefined +// 4A3FFB: variable 'v67' is possibly undefined +// 4A492F: variable 'v69' is possibly undefined +// 4A4B05: variable 'v70' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 51642C: using guessed type int std::moneypunct::id; +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (004A4CB0) -------------------------------------------------------- +int __stdcall std::money_get>::_M_extract( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // esi + int *v7; // edi + int v8; // ebx + bool v9; // zf + char v10; // si + int v11; // edi + int v12; // eax + _DWORD *v13; // ecx + char v14; // si + char v15; // si + _BYTE *v16; // eax + int v17; // eax + _DWORD *v18; // ecx + int v19; // edi + volatile signed __int32 *v20; // eax + unsigned int v21; // eax + char v22; // si + char v23; // di + char v24; // al + char v25; // di + int v26; // edi + _BYTE *v27; // eax + int v28; // edi + char v29; // cl + volatile signed __int32 *v30; // eax + char v31; // di + _DWORD *v32; // ecx + int v33; // eax + char v34; // si + char v35; // di + int v36; // eax + _BYTE *v37; // eax + int v38; // eax + _DWORD *v39; // ecx + char v40; // al + int v41; // eax + unsigned __int8 *v42; // eax + char v43; // di + int v44; // edx + _BYTE *v45; // eax + char v46; // al + char v47; // bl + char v48; // al + char v49; // bl + int v50; // ebx + int v52; // edx + int v53; // eax + unsigned int v54; // eax + int v55; // eax + int v56; // eax + std::string *v57; // eax + int v58; // edx + unsigned int first_not_of; // eax + unsigned int v60; // edx + unsigned int v61; // eax + std::locale::_Impl *v62; // eax + std::locale::_Impl *v63; // ebx + volatile signed __int32 *v64; // eax + unsigned int v65; // eax + void (__cdecl *v66)(void *); // [esp+4h] [ebp-64h] + std::string *v67; // [esp+4h] [ebp-64h] + unsigned int v68; // [esp+8h] [ebp-60h] + unsigned int v69; // [esp+Ch] [ebp-5Ch] + char v70; // [esp+10h] [ebp-58h] + char v71; // [esp+18h] [ebp-50h] + unsigned int v72; // [esp+1Ch] [ebp-4Ch] + _DWORD *v73; // [esp+20h] [ebp-48h] + unsigned int v74; // [esp+24h] [ebp-44h] + int v75; // [esp+2Ch] [ebp-3Ch] + bool v76; // [esp+31h] [ebp-37h] + char v77; // [esp+32h] [ebp-36h] + char v78; // [esp+33h] [ebp-35h] + char v79; // [esp+34h] [ebp-34h] + int v80; // [esp+34h] [ebp-34h] + char v81; // [esp+34h] [ebp-34h] + unsigned int v82; // [esp+34h] [ebp-34h] + char v83; // [esp+34h] [ebp-34h] + char v84; // [esp+34h] [ebp-34h] + unsigned int Buf; // [esp+38h] [ebp-30h] + int v86; // [esp+3Ch] [ebp-2Ch] + int v87; // [esp+3Ch] [ebp-2Ch] + char v88; // [esp+43h] [ebp-25h] BYREF + volatile signed __int32 *v89; // [esp+44h] [ebp-24h] BYREF + volatile signed __int32 *v90; // [esp+48h] [ebp-20h] BYREF + int v91; // [esp+4Ch] [ebp-1Ch] + + v86 = a4 + 108; + v73 = std::use_facet>(a4 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * v6); + v8 = *v7; + if ( !*v7 ) + { + v62 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v66); + *(_DWORD *)v62 = &off_538D1C; + v63 = v62; + *((_DWORD *)v62 + 1) = 0; + *((_DWORD *)v62 + 2) = 0; + *((_DWORD *)v62 + 3) = 0; + *((_WORD *)v62 + 8) = 0; + *((_BYTE *)v62 + 18) = 0; + *((_DWORD *)v62 + 5) = 0; + *((_DWORD *)v62 + 6) = 0; + *((_DWORD *)v62 + 7) = 0; + *((_DWORD *)v62 + 8) = 0; + *((_DWORD *)v62 + 9) = 0; + *((_DWORD *)v62 + 10) = 0; + *((_DWORD *)v62 + 11) = 0; + *((_DWORD *)v62 + 12) = 0; + *((_DWORD *)v62 + 13) = 0; + *((_BYTE *)v62 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v62, v86); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v63, (const std::locale::facet *)v6, v68); + v8 = *v7; + } + if ( *(_DWORD *)(v8 + 32) ) + v76 = *(_DWORD *)(v8 + 40) != 0; + else + v76 = 0; + v9 = *(_BYTE *)(v8 + 16) == 0; + v89 = (volatile signed __int32 *)&unk_51641C; + if ( !v9 ) + std::string::reserve((unsigned int **)&v89, (std::string *)0x20, (unsigned int)v66); + v90 = (volatile signed __int32 *)&unk_51641C; + std::string::reserve((unsigned int **)&v90, (std::string *)0x20, (unsigned int)v66); + v78 = 0; + v75 = 1; + v91 = *(_DWORD *)(v8 + 52); + v87 = 0; + v71 = 0; + v74 = 0; + v77 = 0; + while ( 2 ) + { + switch ( *((_BYTE *)&v90 + v75 + 3) ) + { + case 0: + v10 = 1; + goto LABEL_10; + case 1: + if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) + && (*(_BYTE *)(v73[6] + + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 0x20) != 0 ) + { + v54 = *(_DWORD *)(a1 + 8); + if ( v54 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v54 + 1; + HIDWORD(a1) = -1; + v10 = 1; +LABEL_10: + if ( v75 == 4 ) + goto LABEL_11; + goto LABEL_75; + } + v10 = 0; + if ( v75 != 4 ) + { +LABEL_75: + v38 = HIDWORD(a1); + v39 = (_DWORD *)a1; + while ( 1 ) + { + v43 = v38 == -1; + v84 = v43 & (v39 != 0); + if ( v84 ) + { + v43 = 0; + if ( v39[2] >= v39[3] && (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39) == -1 ) + { + LODWORD(a1) = 0; + v43 = v84; + } + } + v40 = a3 == -1; + v83 = v40 & (a2 != 0); + if ( v83 ) + { + v40 = 0; + if ( a2[2] >= a2[3] ) + { + v52 = (*(int (**)(void))(*a2 + 36))(); + v40 = 0; + if ( v52 == -1 ) + { + a2 = 0; + v40 = v83; + } + } + } + if ( v43 == v40 ) + goto LABEL_112; + LOBYTE(v41) = BYTE4(a1); + v39 = (_DWORD *)a1; + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v42 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(v73[6] + 2 * *v42) & 0x20) == 0 ) + goto LABEL_112; +LABEL_81: + v39[2] = v42 + 1; + goto LABEL_82; + } + v41 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v41 == -1 ) + LODWORD(a1) = 0; + } + if ( (*(_BYTE *)(v73[6] + 2 * (unsigned __int8)v41) & 0x20) == 0 ) + goto LABEL_112; + v39 = (_DWORD *)a1; + v42 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + goto LABEL_81; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v39 = (_DWORD *)a1; +LABEL_82: + HIDWORD(a1) = -1; + v38 = -1; + } + } +LABEL_11: + if ( ((unsigned __int8)v10 & (v74 > 1)) == 0 ) + { + if ( v10 ) + { + if ( *((_DWORD *)v90 - 3) > 1u ) + goto LABEL_175; + goto LABEL_152; + } + goto LABEL_99; + } + if ( v77 ) + v11 = *(_DWORD *)(v8 + 36); + else + v11 = *(_DWORD *)(v8 + 28); + v12 = HIDWORD(a1); + v13 = (_DWORD *)a1; + for ( Buf = 1; ; ++Buf ) + { + v14 = v12 == -1; + v79 = v14 & (v13 != 0); + if ( v79 ) + { + v14 = 0; + if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) + { + LODWORD(a1) = 0; + v14 = v79; + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v53 = (*(int (**)(void))(*a2 + 36))(); + v14 ^= v53 == -1; + if ( v53 == -1 ) + a2 = 0; + } + } + else + { + v14 ^= a3 == -1; + } + if ( Buf >= v74 || !v14 ) + break; + v13 = (_DWORD *)a1; + LOBYTE(v80) = BYTE4(a1); + v15 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; + if ( v15 ) + { + v16 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v16 < *(_DWORD *)(a1 + 12) ) + { + if ( *v16 != *(_BYTE *)(v11 + Buf) ) + { + v47 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; + goto LABEL_101; + } +LABEL_24: + v13[2] = v16 + 1; + goto LABEL_25; + } + v80 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v80 == -1 ) + { + LODWORD(a1) = 0; + v13 = 0; + } + else + { + v13 = (_DWORD *)a1; + } + } + if ( *(_BYTE *)(v11 + Buf) != (_BYTE)v80 ) + goto LABEL_100; + v16 = (_BYTE *)v13[2]; + if ( (unsigned int)v16 < v13[3] ) + goto LABEL_24; + (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); + v13 = (_DWORD *)a1; +LABEL_25: + v12 = -1; + HIDWORD(a1) = -1; + } + if ( Buf == v74 ) + { + if ( *((_DWORD *)v90 - 3) <= 1u ) + goto LABEL_152; +LABEL_175: + first_not_of = std::string::find_first_not_of((int *)&v90, (std::string *)0x30, 0, v68); + if ( first_not_of ) + { + v60 = *((_DWORD *)v90 - 3); + if ( first_not_of == -1 ) + first_not_of = v60 - 1; + if ( first_not_of > v60 ) + first_not_of = *((_DWORD *)v90 - 3); + std::string::_M_mutate(&v90, 0, first_not_of, 0, v69); + } +LABEL_152: + if ( v77 ) + { + v64 = v90; + if ( *((int *)v90 - 1) >= 0 ) + { + std::string::_M_leak_hard(&v90); + v64 = v90; + } + if ( *(_BYTE *)v64 != 48 ) + { + if ( *((int *)v64 - 1) >= 0 ) + std::string::_M_leak_hard(&v90); + std::string::_M_replace_aux(&v90, 0, 0, 1u, 45, v70); + *((_DWORD *)v90 - 1) = -1; + } + } + if ( *((_DWORD *)v89 - 3) ) + { + v57 = (std::string *)(char)v87; + if ( v78 ) + v57 = (std::string *)v71; + std::string::push_back((unsigned int **)&v89, v57, (char)v67); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)&v89) ) + *a5 |= 4u; + } + if ( !v78 || *(_DWORD *)(v8 + 44) == v87 ) + { + std::string::swap(a6, (std::string *)&v90, v67); + v13 = (_DWORD *)a1; + v15 = HIDWORD(a1) == -1; + v47 = v15 & ((_DWORD)a1 != 0); + if ( v47 ) + goto LABEL_161; + goto LABEL_102; + } + } +LABEL_99: + v13 = (_DWORD *)a1; +LABEL_100: + v15 = HIDWORD(a1) == -1; + v47 = v15 & (v13 != 0); +LABEL_101: + *a5 |= 4u; + if ( v47 ) + { +LABEL_161: + v15 = 0; + if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) + { + LODWORD(a1) = 0; + v15 = v47; + } + } +LABEL_102: + v48 = a3 == -1; + v49 = v48 & (a2 != 0); + if ( v49 ) + { + v48 = 0; + if ( a2[2] >= a2[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v48 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v48 = v49; + } + } + } + if ( v15 == v48 ) + *a5 |= 2u; + v50 = a1; + if ( v90 != (volatile signed __int32 *)&unk_51641C ) + std::string::_Rep::_M_dispose(v90 - 3, (int)&v88); + if ( v89 != (volatile signed __int32 *)&unk_51641C ) + std::string::_Rep::_M_dispose(v89 - 3, (int)&v88); + return v50; + case 2: + if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) + goto LABEL_62; + v31 = v75 == 1 || v74 > 1; + if ( v31 ) + goto LABEL_62; + if ( v75 == 2 ) + { + if ( !v76 && (_BYTE)v91 != 3 && BYTE2(v91) != 1 ) + goto LABEL_115; + } + else + { + v10 = 1; + if ( v75 != 3 ) + goto LABEL_113; + if ( HIBYTE(v91) != 4 && (HIBYTE(v91) != 3 || !v76) ) + goto LABEL_115; + } +LABEL_62: + v32 = (_DWORD *)a1; + v82 = 0; + v72 = *(_DWORD *)(v8 + 24); + v33 = HIDWORD(a1); + while ( 2 ) + { + v34 = v33 == -1; + v35 = v34 & (v32 != 0); + if ( v35 ) + { + v34 = 0; + if ( v32[2] >= v32[3] && (*(int (__fastcall **)(_DWORD *))(*v32 + 36))(v32) == -1 ) + { + LODWORD(a1) = 0; + v34 = v35; + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v55 = (*(int (**)(void))(*a2 + 36))(); + v34 ^= v55 == -1; + if ( v55 == -1 ) + a2 = 0; + } + } + else + { + v34 ^= a3 == -1; + } + v31 = (v82 < v72) & v34; + if ( v31 ) + { + LOBYTE(v36) = BYTE4(a1); + v32 = (_DWORD *)a1; + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_69; + v37 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v37 < *(_DWORD *)(a1 + 12) ) + { + if ( *v37 != *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) ) + goto LABEL_146; + goto LABEL_71; + } + v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v36 == -1 ) + LODWORD(a1) = 0; +LABEL_69: + if ( *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) != (_BYTE)v36 ) + goto LABEL_146; + v32 = (_DWORD *)a1; + v37 = *(_BYTE **)(a1 + 8); + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v37 ) + { + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v32 = (_DWORD *)a1; + } + else + { +LABEL_71: + v32[2] = v37 + 1; + } + ++v82; + v33 = -1; + HIDWORD(a1) = -1; + continue; + } + break; + } + if ( v82 == v72 ) + { +LABEL_171: + v10 = 1; + goto LABEL_113; + } +LABEL_146: + if ( v82 ) + goto LABEL_99; + v56 = *(_DWORD *)(a4 + 12) & 0x200; + v10 = v56 == 0; + v31 = v56 != 0; +LABEL_113: + if ( v75 > 3 || v31 ) + goto LABEL_11; +LABEL_115: + ++v75; + continue; + case 3: + if ( *(_DWORD *)(v8 + 32) ) + { + v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v31 + && **(_BYTE **)(v8 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get( + (_DWORD **)&a1, + SHIDWORD(a1)) ) + { + v74 = *(_DWORD *)(v8 + 32); + v61 = *(_DWORD *)(a1 + 8); + if ( v61 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v61 + 1; + HIDWORD(a1) = -1; + v10 = 1; + goto LABEL_113; + } + if ( !*(_DWORD *)(v8 + 40) ) + { + if ( !*(_DWORD *)(v8 + 32) ) + goto LABEL_54; + goto LABEL_131; + } + } + else if ( !*(_DWORD *)(v8 + 40) ) + { + goto LABEL_54; + } + v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v31 + && **(_BYTE **)(v8 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get( + (_DWORD **)&a1, + SHIDWORD(a1)) ) + { + v74 = *(_DWORD *)(v8 + 40); + v65 = *(_DWORD *)(a1 + 8); + if ( v65 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v65 + 1; + HIDWORD(a1) = -1; + v10 = 1; + v77 = 1; + goto LABEL_113; + } + if ( !*(_DWORD *)(v8 + 32) || *(_DWORD *)(v8 + 40) ) + { +LABEL_54: + v31 = v76; + v10 = !v76; + goto LABEL_113; + } +LABEL_131: + v77 = 1; + v31 = 0; + v10 = 1; + goto LABEL_113; + case 4: + v17 = HIDWORD(a1); + v18 = (_DWORD *)a1; + while ( 2 ) + { + v22 = v17 == -1; + v23 = v22 & (v18 != 0); + if ( v23 ) + { + v22 = 0; + if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) + { + LODWORD(a1) = 0; + v22 = v23; + } + } + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v24 = 0; + if ( a2[2] >= a2[3] ) + { + v44 = (*(int (**)(void))(*a2 + 36))(); + v24 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + } + if ( v24 == v22 ) + goto LABEL_168; + LOBYTE(v26) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v45 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) + { + v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v26 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v26) = -1; + } + } + else + { + LOBYTE(v26) = *v45; + } + } + v27 = memchr((const void *)(v8 + 57), (char)v26, 0xAu); + if ( !v27 ) + { + v10 = v78 | (*(_BYTE *)(v8 + 17) != (unsigned __int8)v26); + if ( v10 ) + { + if ( *(_BYTE *)(v8 + 16) ) + { + if ( *(_BYTE *)(v8 + 18) == (_BYTE)v26 ) + { + if ( v78 ) + { + v10 = v78; + } + else + { + if ( v87 ) + { + v28 = *((_DWORD *)v89 - 3); + if ( (unsigned int)(v28 + 1) > *((_DWORD *)v89 - 2) || *((int *)v89 - 1) > 0 ) + std::string::reserve((unsigned int **)&v89, (std::string *)(v28 + 1), (unsigned int)v67); + v29 = v87; + v87 = 0; + *((_BYTE *)v89 + *((_DWORD *)v89 - 3)) = v29; + v30 = v89; + if ( v89 != (volatile signed __int32 *)&unk_51641C ) + { + *((_DWORD *)v89 - 1) = 0; + *((_DWORD *)v30 - 3) = v28 + 1; + *((_BYTE *)v30 + v28 + 1) = 0; + v18 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_51; + goto LABEL_34; + } +LABEL_33: + v18 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 >= *(_DWORD *)(a1 + 12) ) + { +LABEL_51: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + goto LABEL_35; + } +LABEL_34: + v18[2] = v21 + 1; +LABEL_35: + HIDWORD(a1) = -1; + v17 = -1; + continue; + } + v10 = 0; + } + } + else + { + v10 = *(_BYTE *)(v8 + 16); + } + } + if ( !*((_DWORD *)v90 - 3) ) + goto LABEL_99; + } + else + { + if ( *(int *)(v8 + 44) > 0 ) + { + v46 = v87; + v78 = 1; + v87 = 0; + v71 = v46; + goto LABEL_33; + } + v78 = 0; +LABEL_168: + v10 = 1; + if ( !*((_DWORD *)v90 - 3) ) + goto LABEL_99; + } +LABEL_112: + v31 = v10 ^ 1; + goto LABEL_113; + } + break; + } + v81 = v27[(_DWORD)std::money_base::_S_atoms - 56 - v8]; + v19 = *((_DWORD *)v90 - 3); + if ( (unsigned int)(v19 + 1) > *((_DWORD *)v90 - 2) || *((int *)v90 - 1) > 0 ) + std::string::reserve((unsigned int **)&v90, (std::string *)(v19 + 1), (unsigned int)v67); + *((_BYTE *)v90 + *((_DWORD *)v90 - 3)) = v81; + v20 = v90; + if ( v90 != (volatile signed __int32 *)&unk_51641C ) + { + *((_DWORD *)v90 - 1) = 0; + *((_DWORD *)v20 - 3) = v19 + 1; + *((_BYTE *)v20 + v19 + 1) = 0; + } + ++v87; + goto LABEL_33; + default: + v31 = 0; + goto LABEL_171; + } + } +} +// 4A5867: variable 'v66' is possibly undefined +// 4A58F3: variable 'v68' is possibly undefined +// 4A4E9B: variable 'v67' is possibly undefined +// 4A57CF: variable 'v69' is possibly undefined +// 4A59A5: variable 'v70' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 516430: using guessed type int std::moneypunct::id; +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (004A5B50) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (004A5B60) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (004A5B70) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + char a4, + int a5, + _DWORD *a6, + unsigned int **a7) +{ + int v7; // eax + char *v8; // ebx + int v9; // esi + size_t v10; // eax + char *v11; // ecx + char v13; // al + void (__thiscall *v14)(_BYTE *, char *, char *, unsigned int *); // eax + int v15; // eax + char v16; // [esp+4h] [ebp-54h] + char *v17; // [esp+20h] [ebp-38h] + unsigned int *v18; // [esp+24h] [ebp-34h] + _BYTE *v19; // [esp+28h] [ebp-30h] + size_t Size; // [esp+2Ch] [ebp-2Ch] + int v21; // [esp+3Bh] [ebp-1Dh] BYREF + int v22[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v19 = std::use_facet>(a5 + 108); + v22[0] = (int)&unk_51641C; + if ( a4 ) + v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v22); + else + v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v22); + v8 = (char *)v22[0]; + v9 = v7; + v10 = *(_DWORD *)(v22[0] - 12); + Size = v10; + if ( !v10 ) + { +LABEL_4: + v11 = v8 - 12; + if ( v8 == (char *)&unk_51641C ) + return v9; + goto LABEL_15; + } + std::string::resize(a7, v10, 0, v16); + v18 = *a7; + if ( (*(*a7 - 1) & 0x80000000) == 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)a7); + v18 = *a7; + } + v8 = (char *)v22[0]; + v17 = (char *)(v22[0] + Size); + v13 = v19[28]; + if ( v13 != 1 ) + { + if ( !v13 ) + std::ctype::_M_widen_init((int)v19); + v14 = *(void (__thiscall **)(_BYTE *, char *, char *, unsigned int *))(*(_DWORD *)v19 + 28); + if ( (char *)v14 == (char *)std::ctype::do_widen ) + { + if ( v17 != v8 ) + goto LABEL_14; + } + else + { + v14(v19, v8, v17, v18); + } + v8 = (char *)v22[0]; + goto LABEL_4; + } + if ( v17 == (char *)v22[0] ) + goto LABEL_4; +LABEL_14: + memcpy(v18, v8, Size); + v8 = (char *)v22[0]; + v11 = (char *)(v22[0] - 12); + if ( (_UNKNOWN *)v22[0] == &unk_51641C ) + return v9; +LABEL_15: + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v8 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v8 - 1); + *((_DWORD *)v8 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + std::string::_Rep::_M_destroy(v11, (int)&v21); + return v9; +} +// 4A5D69: positive sp value 4 has been found +// 4A5C1E: variable 'v16' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; +// 4A5B70: using guessed type _DWORD *arg_8; + +//----- (004A5D80) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + char a4, + int a5, + _DWORD *a6, + long double *a7) +{ + int v7; // eax + int v8; // esi + char *v9; // ecx + int v11; // edx + char *String; // [esp+28h] [ebp-20h] BYREF + int v13[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_51641C; + if ( a4 ) + v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); + else + v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); + v8 = v7; + v13[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a7, a6); + v9 = String - 12; + if ( String != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v11 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v11 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v11 - 1; + } + if ( v11 <= 0 ) + std::string::_Rep::_M_destroy(v9, (int)v13); + } + return v8; +} +// 4A5E76: positive sp value 4 has been found +// 78A9D4: using guessed type int _CRT_MT; +// 4A5D80: using guessed type int var_1C[7]; + +//----- (004A5E80) -------------------------------------------------------- +_DWORD *__stdcall std::money_get>::_M_extract( + _DWORD *a1, + unsigned __int16 a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int *a7) +{ + int v7; // esi + int *v8; // edi + int v9; // ebx + bool v10; // zf + char v11; // di + __int16 v12; // ax + _DWORD *v13; // ecx + char v14; // dl + char v15; // di + unsigned __int16 v16; // ax + unsigned int v17; // eax + char v18; // si + char v19; // di + _WORD *v20; // eax + __int16 v21; // ax + __int16 v22; // ax + _DWORD *v23; // ecx + int v24; // edi + volatile signed __int32 *v25; // eax + unsigned int v26; // eax + char v27; // si + char v28; // di + char v29; // dl + char v30; // di + wchar_t v31; // si + wchar_t *v32; // eax + int v33; // edi + char v34; // cl + unsigned int *v35; // eax + char v36; // si + _DWORD *v37; // ecx + unsigned int v38; // edi + __int16 v39; // ax + bool v40; // al + unsigned __int16 v41; // ax + unsigned int v42; // eax + bool v43; // si + _WORD *v44; // eax + __int16 v45; // ax + __int16 v46; // ax + _DWORD *v47; // ecx + char v48; // dl + unsigned __int16 v49; // ax + unsigned int v50; // eax + char v51; // si + _WORD *v52; // eax + __int16 v53; // ax + __int16 *v54; // eax + __int16 v55; // ax + char v56; // bl + char v57; // si + char v58; // al + char v59; // si + _DWORD *v60; // ebx + volatile signed __int32 *v61; // ecx + _WORD *v63; // eax + __int16 v64; // ax + _WORD *v65; // eax + char v66; // al + _WORD *v67; // eax + __int16 v68; // ax + _WORD *v69; // eax + unsigned __int16 v70; // ax + unsigned int v71; // eax + _WORD *v72; // eax + __int16 v73; // ax + std::string *v74; // eax + unsigned __int16 *v75; // eax + __int16 *v76; // eax + __int16 v77; // dx + unsigned __int16 *v78; // eax + int v79; // edx + int v80; // eax + _WORD *v81; // eax + __int16 v82; // dx + _WORD *v83; // eax + __int16 v84; // ax + unsigned int first_not_of; // eax + unsigned int v86; // edx + unsigned int v87; // eax + unsigned int v88; // eax + _DWORD *v89; // eax + std::locale::_Impl *v90; // ebx + volatile signed __int32 *v91; // eax + void (__cdecl *v92)(void *); // [esp+4h] [ebp-64h] + std::string *v93; // [esp+4h] [ebp-64h] + unsigned int v94; // [esp+8h] [ebp-60h] + unsigned int v95; // [esp+Ch] [ebp-5Ch] + char v96; // [esp+10h] [ebp-58h] + char v97; // [esp+1Ch] [ebp-4Ch] + void *v98; // [esp+20h] [ebp-48h] + unsigned int v99; // [esp+24h] [ebp-44h] + int v100; // [esp+2Ch] [ebp-3Ch] + bool v101; // [esp+30h] [ebp-38h] + char v102; // [esp+31h] [ebp-37h] + bool v103; // [esp+32h] [ebp-36h] + bool v104; // [esp+32h] [ebp-36h] + char v105; // [esp+33h] [ebp-35h] + int v106; // [esp+34h] [ebp-34h] + char v107; // [esp+34h] [ebp-34h] + unsigned int v108; // [esp+34h] [ebp-34h] + char v109; // [esp+34h] [ebp-34h] + char v110; // [esp+34h] [ebp-34h] + unsigned int S; // [esp+38h] [ebp-30h] + int v112; // [esp+3Ch] [ebp-2Ch] + int v113; // [esp+3Ch] [ebp-2Ch] + char v114; // [esp+43h] [ebp-25h] BYREF + unsigned int *v115; // [esp+44h] [ebp-24h] BYREF + volatile signed __int32 *v116; // [esp+48h] [ebp-20h] BYREF + int v117; // [esp+4Ch] [ebp-1Ch] + + v112 = a5 + 108; + v98 = std::use_facet>(a5 + 108); + v7 = std::locale::id::_M_id(&std::moneypunct::id); + v8 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v7); + v9 = *v8; + if ( !*v8 ) + { + v89 = operator new((struct type_info *)0x54, v92); + v89[1] = 0; + v90 = (std::locale::_Impl *)v89; + *v89 = &off_538D2C; + v89[2] = 0; + v89[3] = 0; + *((_BYTE *)v89 + 16) = 0; + *(_DWORD *)((char *)v89 + 18) = 0; + v89[6] = 0; + v89[7] = 0; + v89[8] = 0; + v89[9] = 0; + v89[10] = 0; + v89[11] = 0; + v89[12] = 0; + v89[13] = 0; + v89[14] = 0; + *((_BYTE *)v89 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v89, v112); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v90, (const std::locale::facet *)v7, v94); + v9 = *v8; + } + if ( *(_DWORD *)(v9 + 36) ) + v101 = *(_DWORD *)(v9 + 44) != 0; + else + v101 = 0; + v10 = *(_BYTE *)(v9 + 16) == 0; + v115 = (unsigned int *)&unk_51641C; + if ( !v10 ) + std::string::reserve(&v115, (std::string *)0x20, (unsigned int)v92); + v116 = (volatile signed __int32 *)&unk_51641C; + std::string::reserve((unsigned int **)&v116, (std::string *)0x20, (unsigned int)v92); + v105 = 0; + v100 = 1; + v117 = *(_DWORD *)(v9 + 56); + v113 = 0; + v97 = 0; + v99 = 0; + v102 = 0; + while ( 2 ) + { + switch ( *((_BYTE *)&v116 + v100 + 3) ) + { + case 0: + v11 = 1; + goto LABEL_10; + case 1: + if ( !std::istreambuf_iterator::equal(&a1, (int)&a3) ) + { + v70 = std::istreambuf_iterator::_M_get(&a1, a2); + v11 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v70); + if ( v11 ) + { + v71 = a1[2]; + if ( v71 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v71 + 2; + a2 = -1; +LABEL_10: + if ( v100 == 4 ) + goto LABEL_11; + goto LABEL_82; + } + } + v11 = 0; + if ( v100 != 4 ) + { +LABEL_82: + v46 = a2; + v47 = a1; + while ( 1 ) + { + v51 = v46 == -1; + v110 = v51 & (v47 != 0); + if ( v110 ) + { + v52 = (_WORD *)v47[2]; + v53 = (unsigned int)v52 >= v47[3] ? (*(int (__fastcall **)(_DWORD *))(*v47 + 36))(v47) : *v52; + v51 = 0; + if ( v53 == -1 ) + { + a1 = 0; + v51 = v110; + } + } + v48 = a4 == -1; + v109 = v48 & (a3 != 0); + if ( v109 ) + { + v67 = (_WORD *)a3[2]; + v68 = (unsigned int)v67 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v67; + v48 = 0; + if ( v68 == -1 ) + { + a3 = 0; + v48 = v109; + } + } + if ( v51 == v48 ) + break; + v49 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v69 = (_WORD *)a1[2]; + v49 = (unsigned int)v69 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v69; + if ( v49 == 0xFFFF ) + a1 = 0; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v49) ) + break; + v47 = a1; + v50 = a1[2]; + if ( v50 >= a1[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + v47 = a1; + } + else + { + a1[2] = v50 + 2; + } + a2 = -1; + v46 = -1; + } +LABEL_121: + v36 = v11 ^ 1; + goto LABEL_122; + } +LABEL_11: + if ( ((unsigned __int8)v11 & (v99 > 1)) == 0 ) + { + if ( v11 ) + { + if ( *((_DWORD *)v116 - 3) > 1u ) + goto LABEL_193; + goto LABEL_149; + } + goto LABEL_102; + } + if ( v102 ) + v106 = *(_DWORD *)(v9 + 40); + else + v106 = *(_DWORD *)(v9 + 32); + v12 = a2; + v13 = a1; + for ( S = 1; ; ++S ) + { + v18 = v12 == -1; + v19 = v18 & (v13 != 0); + if ( v19 ) + { + v20 = (_WORD *)v13[2]; + v21 = (unsigned int)v20 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v20; + v18 = 0; + if ( v21 == -1 ) + { + a1 = 0; + v18 = v19; + } + } + v14 = a4 == -1; + v15 = v14 & (a3 != 0); + if ( v15 ) + { + v72 = (_WORD *)a3[2]; + v73 = (unsigned int)v72 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v72; + v14 = 0; + if ( v73 == -1 ) + break; + } + if ( S >= v99 ) + goto LABEL_147; +LABEL_17: + if ( v18 == v14 ) + goto LABEL_147; + v13 = a1; + v16 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v75 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v75 >= a1[3] ) + v16 = (*(int (**)(void))(*a1 + 36))(); + else + v16 = *v75; + if ( v16 == 0xFFFF ) + { + a1 = 0; + v13 = 0; + } + else + { + v13 = a1; + } + } + if ( *(_WORD *)(v106 + 2 * S) != v16 ) + goto LABEL_103; + v17 = v13[2]; + if ( v17 >= v13[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); + v13 = a1; + } + else + { + v13[2] = v17 + 2; + } + a2 = -1; + v12 = -1; + } + v14 = v15; + a3 = 0; + if ( S < v99 ) + goto LABEL_17; +LABEL_147: + if ( S == v99 ) + { + if ( *((_DWORD *)v116 - 3) <= 1u ) + goto LABEL_149; +LABEL_193: + first_not_of = std::string::find_first_not_of((int *)&v116, (std::string *)0x30, 0, v94); + if ( first_not_of ) + { + v86 = *((_DWORD *)v116 - 3); + if ( first_not_of == -1 ) + first_not_of = v86 - 1; + if ( first_not_of > v86 ) + first_not_of = *((_DWORD *)v116 - 3); + std::string::_M_mutate(&v116, 0, first_not_of, 0, v95); + } +LABEL_149: + if ( v102 ) + { + v91 = v116; + if ( *((int *)v116 - 1) >= 0 ) + { + std::string::_M_leak_hard(&v116); + v91 = v116; + } + if ( *(_BYTE *)v91 != 48 ) + { + if ( *((int *)v91 - 1) >= 0 ) + std::string::_M_leak_hard(&v116); + std::string::_M_replace_aux(&v116, 0, 0, 1u, 45, v96); + *((_DWORD *)v116 - 1) = -1; + } + } + if ( *(v115 - 3) ) + { + v74 = (std::string *)(char)v113; + if ( v105 ) + v74 = (std::string *)v97; + std::string::push_back(&v115, v74, (char)v93); + if ( !(unsigned __int8)std::__verify_grouping( + *(char **)(v9 + 8), + *(_DWORD *)(v9 + 12), + (const char **)&v115) ) + *a6 |= 4u; + } + if ( !v105 || *(_DWORD *)(v9 + 48) == v113 ) + { + std::string::swap(a7, (std::string *)&v116, v93); + v13 = a1; + goto LABEL_104; + } + } +LABEL_102: + v13 = a1; +LABEL_103: + *a6 |= 4u; +LABEL_104: + v56 = a2 == 0xFFFF; + v57 = v56 & (v13 != 0); + if ( v57 ) + { + v83 = (_WORD *)v13[2]; + v84 = (unsigned int)v83 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v83; + v56 = 0; + if ( v84 == -1 ) + { + a1 = 0; + v56 = v57; + } + } + v58 = a4 == -1; + v59 = v58 & (a3 != 0); + if ( v59 ) + { + v81 = (_WORD *)a3[2]; + v82 = (unsigned int)v81 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v81; + v58 = 0; + if ( v82 == -1 ) + { + a3 = 0; + v58 = v59; + } + } + if ( v56 == v58 ) + *a6 |= 2u; + v60 = a1; + if ( v116 == (volatile signed __int32 *)&unk_51641C ) + { + v61 = (volatile signed __int32 *)(v115 - 3); + if ( v115 == (unsigned int *)&unk_51641C ) + return v60; +LABEL_227: + std::string::_Rep::_M_dispose(v61, (int)&v114); + return v60; + } + else + { + std::string::_Rep::_M_dispose(v116 - 3, (int)&v114); + v61 = (volatile signed __int32 *)(v115 - 3); + if ( v115 != (unsigned int *)&unk_51641C ) + goto LABEL_227; + return v60; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_66; + v36 = v100 == 1 || v99 > 1; + if ( v36 ) + goto LABEL_66; + if ( v100 == 2 ) + { + if ( !v101 && (_BYTE)v117 != 3 && BYTE2(v117) != 1 ) + goto LABEL_124; + } + else + { + v11 = 1; + if ( v100 != 3 ) + goto LABEL_122; + if ( HIBYTE(v117) != 4 && (HIBYTE(v117) != 3 || !v101) ) + goto LABEL_124; + } +LABEL_66: + v37 = a1; + v38 = 0; + v108 = *(_DWORD *)(v9 + 28); + v39 = a2; + while ( 2 ) + { + v43 = v39 == -1; + v104 = v43 && v37 != 0; + if ( v104 ) + { + v44 = (_WORD *)v37[2]; + v45 = (unsigned int)v44 >= v37[3] ? (*(int (__fastcall **)(_DWORD *))(*v37 + 36))(v37) : *v44; + v43 = 0; + if ( v45 == -1 ) + { + a1 = 0; + v43 = v104; + } + } + v40 = a4 == -1; + v103 = v40 && a3 != 0; + if ( !v103 + || ((v76 = (__int16 *)a3[2], (unsigned int)v76 >= a3[3]) + ? (v77 = (*(int (**)(void))(*a3 + 36))()) + : (v77 = *v76), + v40 = 0, + v77 != -1) ) + { + v36 = (v38 < v108) & (v40 ^ v43); + if ( !v36 ) + goto LABEL_166; +LABEL_69: + v41 = a2; + if ( a2 == 0xFFFF + && a1 + && ((v78 = (unsigned __int16 *)a1[2], (unsigned int)v78 >= a1[3]) + ? (v41 = (*(int (**)(void))(*a1 + 36))()) + : (v41 = *v78), + v41 == 0xFFFF) ) + { + v79 = *(_DWORD *)(v9 + 24); + a1 = 0; + if ( *(_WORD *)(v79 + 2 * v38) != 0xFFFF ) + goto LABEL_172; + } + else if ( *(_WORD *)(*(_DWORD *)(v9 + 24) + 2 * v38) != v41 ) + { + goto LABEL_172; + } + v37 = a1; + v42 = a1[2]; + if ( v42 >= a1[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + v37 = a1; + } + else + { + a1[2] = v42 + 2; + } + ++v38; + a2 = -1; + v39 = -1; + continue; + } + break; + } + a3 = 0; + v36 = (v38 < v108) & (v103 ^ v43); + if ( v36 ) + goto LABEL_69; +LABEL_166: + if ( v38 == v108 ) + goto LABEL_167; +LABEL_172: + if ( v38 ) + goto LABEL_102; + v80 = *(_DWORD *)(a5 + 12) & 0x200; + v11 = v80 == 0; + v36 = v80 != 0; +LABEL_122: + if ( v100 > 3 || v36 ) + goto LABEL_11; +LABEL_124: + ++v100; + continue; + case 3: + if ( *(_DWORD *)(v9 + 36) ) + { + v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); + if ( !v36 && **(_WORD **)(v9 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) + { + v99 = *(_DWORD *)(v9 + 36); + v87 = a1[2]; + if ( v87 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v87 + 2; + a2 = -1; +LABEL_167: + v11 = 1; + goto LABEL_122; + } + if ( !*(_DWORD *)(v9 + 44) ) + { + if ( !*(_DWORD *)(v9 + 36) ) + goto LABEL_58; + goto LABEL_138; + } + } + else if ( !*(_DWORD *)(v9 + 44) ) + { + goto LABEL_58; + } + v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); + if ( !v36 && **(_WORD **)(v9 + 40) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) + { + v99 = *(_DWORD *)(v9 + 44); + v88 = a1[2]; + if ( v88 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v88 + 2; + v102 = 1; + a2 = -1; + v11 = 1; + goto LABEL_122; + } + if ( !*(_DWORD *)(v9 + 36) || *(_DWORD *)(v9 + 44) ) + { +LABEL_58: + v36 = v101; + v11 = !v101; + goto LABEL_122; + } +LABEL_138: + v102 = 1; + v36 = 0; + v11 = 1; + goto LABEL_122; + case 4: + v22 = a2; + v23 = a1; + while ( 2 ) + { + v27 = v22 == -1; + v28 = v27 & (v23 != 0); + if ( v28 ) + { + v63 = (_WORD *)v23[2]; + v64 = (unsigned int)v63 >= v23[3] ? (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23) : *v63; + v27 = 0; + if ( v64 == -1 ) + { + a1 = 0; + v27 = v28; + } + } + v29 = a4 == -1; + v30 = v29 & (a3 != 0); + if ( v30 + && ((v54 = (__int16 *)a3[2], (unsigned int)v54 >= a3[3]) + ? (v55 = (*(int (**)(void))(*a3 + 36))()) + : (v55 = *v54), + v29 = 0, + v55 == -1) ) + { + a3 = 0; + if ( v27 == v30 ) + goto LABEL_100; + } + else if ( v27 == v29 ) + { +LABEL_100: + v11 = 1; + goto LABEL_101; + } + v31 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v65 = (_WORD *)a1[2]; + v31 = (unsigned int)v65 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v65; + if ( v31 == 0xFFFF ) + a1 = 0; + } + v32 = wmemchr((const wchar_t *)(v9 + 62), v31, 0xAu); + if ( v32 ) + { + v107 = std::money_base::_S_atoms[((int)v32 - v9 - 60) >> 1]; + v24 = *((_DWORD *)v116 - 3); + if ( (unsigned int)(v24 + 1) > *((_DWORD *)v116 - 2) || *((int *)v116 - 1) > 0 ) + std::string::reserve((unsigned int **)&v116, (std::string *)(v24 + 1), (unsigned int)v93); + *((_BYTE *)v116 + *((_DWORD *)v116 - 3)) = v107; + v25 = v116; + if ( v116 != (volatile signed __int32 *)&unk_51641C ) + { + *((_DWORD *)v116 - 1) = 0; + *((_DWORD *)v25 - 3) = v24 + 1; + *((_BYTE *)v25 + v24 + 1) = 0; + } + ++v113; + goto LABEL_36; + } + v11 = v105 | (*(_WORD *)(v9 + 18) != v31); + if ( v11 ) + { + if ( !*(_BYTE *)(v9 + 16) ) + goto LABEL_101; + if ( *(_WORD *)(v9 + 20) == v31 ) + { + if ( v105 ) + { + v11 = v105; + } + else + { + if ( v113 ) + { + v33 = *(v115 - 3); + if ( v33 + 1 > *(v115 - 2) || (int)*(v115 - 1) > 0 ) + std::string::reserve(&v115, (std::string *)(v33 + 1), (unsigned int)v93); + v34 = v113; + v113 = 0; + *((_BYTE *)v115 + *(v115 - 3)) = v34; + v35 = v115; + if ( v115 != (unsigned int *)&unk_51641C ) + { + *(v115 - 1) = 0; + *(v35 - 3) = v33 + 1; + *((_BYTE *)v35 + v33 + 1) = 0; + v23 = a1; + v26 = a1[2]; + if ( v26 >= a1[3] ) + goto LABEL_55; + goto LABEL_37; + } +LABEL_36: + v23 = a1; + v26 = a1[2]; + if ( v26 >= a1[3] ) + { +LABEL_55: + (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); + v23 = a1; + goto LABEL_38; + } +LABEL_37: + v23[2] = v26 + 2; +LABEL_38: + a2 = -1; + v22 = -1; + continue; + } + v11 = 0; + } + } + else + { + v11 = *(_BYTE *)(v9 + 16); + } +LABEL_101: + if ( !*((_DWORD *)v116 - 3) ) + goto LABEL_102; + goto LABEL_121; + } + break; + } + if ( *(int *)(v9 + 48) <= 0 ) + { + v105 = 0; + goto LABEL_100; + } + v66 = v113; + v105 = 1; + v113 = 0; + v97 = v66; + goto LABEL_36; + default: + v36 = 0; + v11 = 1; + goto LABEL_122; + } + } +} +// 4A6AB7: variable 'v92' is possibly undefined +// 4A6B44: variable 'v94' is possibly undefined +// 4A609D: variable 'v93' is possibly undefined +// 4A6A17: variable 'v95' is possibly undefined +// 4A6C0D: variable 'v96' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 516434: using guessed type int std::moneypunct::id; +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (004A6D90) -------------------------------------------------------- +_DWORD *__stdcall std::money_get>::_M_extract( + _DWORD *a1, + unsigned __int16 a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int *a7) +{ + int v7; // esi + int *v8; // edi + int v9; // ebx + bool v10; // zf + char v11; // di + __int16 v12; // ax + _DWORD *v13; // ecx + char v14; // dl + char v15; // di + unsigned __int16 v16; // ax + unsigned int v17; // eax + char v18; // si + char v19; // di + _WORD *v20; // eax + __int16 v21; // ax + __int16 v22; // ax + _DWORD *v23; // ecx + int v24; // edi + volatile signed __int32 *v25; // eax + unsigned int v26; // eax + char v27; // si + char v28; // di + char v29; // dl + char v30; // di + wchar_t v31; // si + wchar_t *v32; // eax + int v33; // edi + char v34; // cl + unsigned int *v35; // eax + char v36; // si + _DWORD *v37; // ecx + unsigned int v38; // edi + __int16 v39; // ax + bool v40; // al + unsigned __int16 v41; // ax + unsigned int v42; // eax + bool v43; // si + _WORD *v44; // eax + __int16 v45; // ax + __int16 v46; // ax + _DWORD *v47; // ecx + char v48; // dl + unsigned __int16 v49; // ax + unsigned int v50; // eax + char v51; // si + _WORD *v52; // eax + __int16 v53; // ax + __int16 *v54; // eax + __int16 v55; // ax + char v56; // bl + char v57; // si + char v58; // al + char v59; // si + _DWORD *v60; // ebx + volatile signed __int32 *v61; // ecx + _WORD *v63; // eax + __int16 v64; // ax + _WORD *v65; // eax + char v66; // al + _WORD *v67; // eax + __int16 v68; // ax + _WORD *v69; // eax + unsigned __int16 v70; // ax + unsigned int v71; // eax + _WORD *v72; // eax + __int16 v73; // ax + std::string *v74; // eax + unsigned __int16 *v75; // eax + __int16 *v76; // eax + __int16 v77; // dx + unsigned __int16 *v78; // eax + int v79; // edx + int v80; // eax + _WORD *v81; // eax + __int16 v82; // dx + _WORD *v83; // eax + __int16 v84; // ax + unsigned int first_not_of; // eax + unsigned int v86; // edx + unsigned int v87; // eax + unsigned int v88; // eax + _DWORD *v89; // eax + std::locale::_Impl *v90; // ebx + volatile signed __int32 *v91; // eax + void (__cdecl *v92)(void *); // [esp+4h] [ebp-64h] + std::string *v93; // [esp+4h] [ebp-64h] + unsigned int v94; // [esp+8h] [ebp-60h] + unsigned int v95; // [esp+Ch] [ebp-5Ch] + char v96; // [esp+10h] [ebp-58h] + char v97; // [esp+1Ch] [ebp-4Ch] + void *v98; // [esp+20h] [ebp-48h] + unsigned int v99; // [esp+24h] [ebp-44h] + int v100; // [esp+2Ch] [ebp-3Ch] + bool v101; // [esp+30h] [ebp-38h] + char v102; // [esp+31h] [ebp-37h] + bool v103; // [esp+32h] [ebp-36h] + bool v104; // [esp+32h] [ebp-36h] + char v105; // [esp+33h] [ebp-35h] + int v106; // [esp+34h] [ebp-34h] + char v107; // [esp+34h] [ebp-34h] + unsigned int v108; // [esp+34h] [ebp-34h] + char v109; // [esp+34h] [ebp-34h] + char v110; // [esp+34h] [ebp-34h] + unsigned int S; // [esp+38h] [ebp-30h] + int v112; // [esp+3Ch] [ebp-2Ch] + int v113; // [esp+3Ch] [ebp-2Ch] + char v114; // [esp+43h] [ebp-25h] BYREF + unsigned int *v115; // [esp+44h] [ebp-24h] BYREF + volatile signed __int32 *v116; // [esp+48h] [ebp-20h] BYREF + int v117; // [esp+4Ch] [ebp-1Ch] + + v112 = a5 + 108; + v98 = std::use_facet>(a5 + 108); + v7 = std::locale::id::_M_id(&std::moneypunct::id); + v8 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v7); + v9 = *v8; + if ( !*v8 ) + { + v89 = operator new((struct type_info *)0x54, v92); + v89[1] = 0; + v90 = (std::locale::_Impl *)v89; + *v89 = &off_538D3C; + v89[2] = 0; + v89[3] = 0; + *((_BYTE *)v89 + 16) = 0; + *(_DWORD *)((char *)v89 + 18) = 0; + v89[6] = 0; + v89[7] = 0; + v89[8] = 0; + v89[9] = 0; + v89[10] = 0; + v89[11] = 0; + v89[12] = 0; + v89[13] = 0; + v89[14] = 0; + *((_BYTE *)v89 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v89, v112); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v90, (const std::locale::facet *)v7, v94); + v9 = *v8; + } + if ( *(_DWORD *)(v9 + 36) ) + v101 = *(_DWORD *)(v9 + 44) != 0; + else + v101 = 0; + v10 = *(_BYTE *)(v9 + 16) == 0; + v115 = (unsigned int *)&unk_51641C; + if ( !v10 ) + std::string::reserve(&v115, (std::string *)0x20, (unsigned int)v92); + v116 = (volatile signed __int32 *)&unk_51641C; + std::string::reserve((unsigned int **)&v116, (std::string *)0x20, (unsigned int)v92); + v105 = 0; + v100 = 1; + v117 = *(_DWORD *)(v9 + 56); + v113 = 0; + v97 = 0; + v99 = 0; + v102 = 0; + while ( 2 ) + { + switch ( *((_BYTE *)&v116 + v100 + 3) ) + { + case 0: + v11 = 1; + goto LABEL_10; + case 1: + if ( !std::istreambuf_iterator::equal(&a1, (int)&a3) ) + { + v70 = std::istreambuf_iterator::_M_get(&a1, a2); + v11 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v70); + if ( v11 ) + { + v71 = a1[2]; + if ( v71 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v71 + 2; + a2 = -1; +LABEL_10: + if ( v100 == 4 ) + goto LABEL_11; + goto LABEL_82; + } + } + v11 = 0; + if ( v100 != 4 ) + { +LABEL_82: + v46 = a2; + v47 = a1; + while ( 1 ) + { + v51 = v46 == -1; + v110 = v51 & (v47 != 0); + if ( v110 ) + { + v52 = (_WORD *)v47[2]; + v53 = (unsigned int)v52 >= v47[3] ? (*(int (__fastcall **)(_DWORD *))(*v47 + 36))(v47) : *v52; + v51 = 0; + if ( v53 == -1 ) + { + a1 = 0; + v51 = v110; + } + } + v48 = a4 == -1; + v109 = v48 & (a3 != 0); + if ( v109 ) + { + v67 = (_WORD *)a3[2]; + v68 = (unsigned int)v67 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v67; + v48 = 0; + if ( v68 == -1 ) + { + a3 = 0; + v48 = v109; + } + } + if ( v51 == v48 ) + break; + v49 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v69 = (_WORD *)a1[2]; + v49 = (unsigned int)v69 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v69; + if ( v49 == 0xFFFF ) + a1 = 0; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v49) ) + break; + v47 = a1; + v50 = a1[2]; + if ( v50 >= a1[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + v47 = a1; + } + else + { + a1[2] = v50 + 2; + } + a2 = -1; + v46 = -1; + } +LABEL_121: + v36 = v11 ^ 1; + goto LABEL_122; + } +LABEL_11: + if ( ((unsigned __int8)v11 & (v99 > 1)) == 0 ) + { + if ( v11 ) + { + if ( *((_DWORD *)v116 - 3) > 1u ) + goto LABEL_193; + goto LABEL_149; + } + goto LABEL_102; + } + if ( v102 ) + v106 = *(_DWORD *)(v9 + 40); + else + v106 = *(_DWORD *)(v9 + 32); + v12 = a2; + v13 = a1; + for ( S = 1; ; ++S ) + { + v18 = v12 == -1; + v19 = v18 & (v13 != 0); + if ( v19 ) + { + v20 = (_WORD *)v13[2]; + v21 = (unsigned int)v20 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v20; + v18 = 0; + if ( v21 == -1 ) + { + a1 = 0; + v18 = v19; + } + } + v14 = a4 == -1; + v15 = v14 & (a3 != 0); + if ( v15 ) + { + v72 = (_WORD *)a3[2]; + v73 = (unsigned int)v72 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v72; + v14 = 0; + if ( v73 == -1 ) + break; + } + if ( S >= v99 ) + goto LABEL_147; +LABEL_17: + if ( v18 == v14 ) + goto LABEL_147; + v13 = a1; + v16 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v75 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v75 >= a1[3] ) + v16 = (*(int (**)(void))(*a1 + 36))(); + else + v16 = *v75; + if ( v16 == 0xFFFF ) + { + a1 = 0; + v13 = 0; + } + else + { + v13 = a1; + } + } + if ( *(_WORD *)(v106 + 2 * S) != v16 ) + goto LABEL_103; + v17 = v13[2]; + if ( v17 >= v13[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); + v13 = a1; + } + else + { + v13[2] = v17 + 2; + } + a2 = -1; + v12 = -1; + } + v14 = v15; + a3 = 0; + if ( S < v99 ) + goto LABEL_17; +LABEL_147: + if ( S == v99 ) + { + if ( *((_DWORD *)v116 - 3) <= 1u ) + goto LABEL_149; +LABEL_193: + first_not_of = std::string::find_first_not_of((int *)&v116, (std::string *)0x30, 0, v94); + if ( first_not_of ) + { + v86 = *((_DWORD *)v116 - 3); + if ( first_not_of == -1 ) + first_not_of = v86 - 1; + if ( first_not_of > v86 ) + first_not_of = *((_DWORD *)v116 - 3); + std::string::_M_mutate(&v116, 0, first_not_of, 0, v95); + } +LABEL_149: + if ( v102 ) + { + v91 = v116; + if ( *((int *)v116 - 1) >= 0 ) + { + std::string::_M_leak_hard(&v116); + v91 = v116; + } + if ( *(_BYTE *)v91 != 48 ) + { + if ( *((int *)v91 - 1) >= 0 ) + std::string::_M_leak_hard(&v116); + std::string::_M_replace_aux(&v116, 0, 0, 1u, 45, v96); + *((_DWORD *)v116 - 1) = -1; + } + } + if ( *(v115 - 3) ) + { + v74 = (std::string *)(char)v113; + if ( v105 ) + v74 = (std::string *)v97; + std::string::push_back(&v115, v74, (char)v93); + if ( !(unsigned __int8)std::__verify_grouping( + *(char **)(v9 + 8), + *(_DWORD *)(v9 + 12), + (const char **)&v115) ) + *a6 |= 4u; + } + if ( !v105 || *(_DWORD *)(v9 + 48) == v113 ) + { + std::string::swap(a7, (std::string *)&v116, v93); + v13 = a1; + goto LABEL_104; + } + } +LABEL_102: + v13 = a1; +LABEL_103: + *a6 |= 4u; +LABEL_104: + v56 = a2 == 0xFFFF; + v57 = v56 & (v13 != 0); + if ( v57 ) + { + v83 = (_WORD *)v13[2]; + v84 = (unsigned int)v83 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v83; + v56 = 0; + if ( v84 == -1 ) + { + a1 = 0; + v56 = v57; + } + } + v58 = a4 == -1; + v59 = v58 & (a3 != 0); + if ( v59 ) + { + v81 = (_WORD *)a3[2]; + v82 = (unsigned int)v81 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v81; + v58 = 0; + if ( v82 == -1 ) + { + a3 = 0; + v58 = v59; + } + } + if ( v56 == v58 ) + *a6 |= 2u; + v60 = a1; + if ( v116 == (volatile signed __int32 *)&unk_51641C ) + { + v61 = (volatile signed __int32 *)(v115 - 3); + if ( v115 == (unsigned int *)&unk_51641C ) + return v60; +LABEL_227: + std::string::_Rep::_M_dispose(v61, (int)&v114); + return v60; + } + else + { + std::string::_Rep::_M_dispose(v116 - 3, (int)&v114); + v61 = (volatile signed __int32 *)(v115 - 3); + if ( v115 != (unsigned int *)&unk_51641C ) + goto LABEL_227; + return v60; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_66; + v36 = v100 == 1 || v99 > 1; + if ( v36 ) + goto LABEL_66; + if ( v100 == 2 ) + { + if ( !v101 && (_BYTE)v117 != 3 && BYTE2(v117) != 1 ) + goto LABEL_124; + } + else + { + v11 = 1; + if ( v100 != 3 ) + goto LABEL_122; + if ( HIBYTE(v117) != 4 && (HIBYTE(v117) != 3 || !v101) ) + goto LABEL_124; + } +LABEL_66: + v37 = a1; + v38 = 0; + v108 = *(_DWORD *)(v9 + 28); + v39 = a2; + while ( 2 ) + { + v43 = v39 == -1; + v104 = v43 && v37 != 0; + if ( v104 ) + { + v44 = (_WORD *)v37[2]; + v45 = (unsigned int)v44 >= v37[3] ? (*(int (__fastcall **)(_DWORD *))(*v37 + 36))(v37) : *v44; + v43 = 0; + if ( v45 == -1 ) + { + a1 = 0; + v43 = v104; + } + } + v40 = a4 == -1; + v103 = v40 && a3 != 0; + if ( !v103 + || ((v76 = (__int16 *)a3[2], (unsigned int)v76 >= a3[3]) + ? (v77 = (*(int (**)(void))(*a3 + 36))()) + : (v77 = *v76), + v40 = 0, + v77 != -1) ) + { + v36 = (v38 < v108) & (v40 ^ v43); + if ( !v36 ) + goto LABEL_166; +LABEL_69: + v41 = a2; + if ( a2 == 0xFFFF + && a1 + && ((v78 = (unsigned __int16 *)a1[2], (unsigned int)v78 >= a1[3]) + ? (v41 = (*(int (**)(void))(*a1 + 36))()) + : (v41 = *v78), + v41 == 0xFFFF) ) + { + v79 = *(_DWORD *)(v9 + 24); + a1 = 0; + if ( *(_WORD *)(v79 + 2 * v38) != 0xFFFF ) + goto LABEL_172; + } + else if ( *(_WORD *)(*(_DWORD *)(v9 + 24) + 2 * v38) != v41 ) + { + goto LABEL_172; + } + v37 = a1; + v42 = a1[2]; + if ( v42 >= a1[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + v37 = a1; + } + else + { + a1[2] = v42 + 2; + } + ++v38; + a2 = -1; + v39 = -1; + continue; + } + break; + } + a3 = 0; + v36 = (v38 < v108) & (v103 ^ v43); + if ( v36 ) + goto LABEL_69; +LABEL_166: + if ( v38 == v108 ) + goto LABEL_167; +LABEL_172: + if ( v38 ) + goto LABEL_102; + v80 = *(_DWORD *)(a5 + 12) & 0x200; + v11 = v80 == 0; + v36 = v80 != 0; +LABEL_122: + if ( v100 > 3 || v36 ) + goto LABEL_11; +LABEL_124: + ++v100; + continue; + case 3: + if ( *(_DWORD *)(v9 + 36) ) + { + v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); + if ( !v36 && **(_WORD **)(v9 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) + { + v99 = *(_DWORD *)(v9 + 36); + v87 = a1[2]; + if ( v87 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v87 + 2; + a2 = -1; +LABEL_167: + v11 = 1; + goto LABEL_122; + } + if ( !*(_DWORD *)(v9 + 44) ) + { + if ( !*(_DWORD *)(v9 + 36) ) + goto LABEL_58; + goto LABEL_138; + } + } + else if ( !*(_DWORD *)(v9 + 44) ) + { + goto LABEL_58; + } + v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); + if ( !v36 && **(_WORD **)(v9 + 40) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) + { + v99 = *(_DWORD *)(v9 + 44); + v88 = a1[2]; + if ( v88 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v88 + 2; + v102 = 1; + a2 = -1; + v11 = 1; + goto LABEL_122; + } + if ( !*(_DWORD *)(v9 + 36) || *(_DWORD *)(v9 + 44) ) + { +LABEL_58: + v36 = v101; + v11 = !v101; + goto LABEL_122; + } +LABEL_138: + v102 = 1; + v36 = 0; + v11 = 1; + goto LABEL_122; + case 4: + v22 = a2; + v23 = a1; + while ( 2 ) + { + v27 = v22 == -1; + v28 = v27 & (v23 != 0); + if ( v28 ) + { + v63 = (_WORD *)v23[2]; + v64 = (unsigned int)v63 >= v23[3] ? (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23) : *v63; + v27 = 0; + if ( v64 == -1 ) + { + a1 = 0; + v27 = v28; + } + } + v29 = a4 == -1; + v30 = v29 & (a3 != 0); + if ( v30 + && ((v54 = (__int16 *)a3[2], (unsigned int)v54 >= a3[3]) + ? (v55 = (*(int (**)(void))(*a3 + 36))()) + : (v55 = *v54), + v29 = 0, + v55 == -1) ) + { + a3 = 0; + if ( v27 == v30 ) + goto LABEL_100; + } + else if ( v27 == v29 ) + { +LABEL_100: + v11 = 1; + goto LABEL_101; + } + v31 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v65 = (_WORD *)a1[2]; + v31 = (unsigned int)v65 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v65; + if ( v31 == 0xFFFF ) + a1 = 0; + } + v32 = wmemchr((const wchar_t *)(v9 + 62), v31, 0xAu); + if ( v32 ) + { + v107 = std::money_base::_S_atoms[((int)v32 - v9 - 60) >> 1]; + v24 = *((_DWORD *)v116 - 3); + if ( (unsigned int)(v24 + 1) > *((_DWORD *)v116 - 2) || *((int *)v116 - 1) > 0 ) + std::string::reserve((unsigned int **)&v116, (std::string *)(v24 + 1), (unsigned int)v93); + *((_BYTE *)v116 + *((_DWORD *)v116 - 3)) = v107; + v25 = v116; + if ( v116 != (volatile signed __int32 *)&unk_51641C ) + { + *((_DWORD *)v116 - 1) = 0; + *((_DWORD *)v25 - 3) = v24 + 1; + *((_BYTE *)v25 + v24 + 1) = 0; + } + ++v113; + goto LABEL_36; + } + v11 = v105 | (*(_WORD *)(v9 + 18) != v31); + if ( v11 ) + { + if ( !*(_BYTE *)(v9 + 16) ) + goto LABEL_101; + if ( *(_WORD *)(v9 + 20) == v31 ) + { + if ( v105 ) + { + v11 = v105; + } + else + { + if ( v113 ) + { + v33 = *(v115 - 3); + if ( v33 + 1 > *(v115 - 2) || (int)*(v115 - 1) > 0 ) + std::string::reserve(&v115, (std::string *)(v33 + 1), (unsigned int)v93); + v34 = v113; + v113 = 0; + *((_BYTE *)v115 + *(v115 - 3)) = v34; + v35 = v115; + if ( v115 != (unsigned int *)&unk_51641C ) + { + *(v115 - 1) = 0; + *(v35 - 3) = v33 + 1; + *((_BYTE *)v35 + v33 + 1) = 0; + v23 = a1; + v26 = a1[2]; + if ( v26 >= a1[3] ) + goto LABEL_55; + goto LABEL_37; + } +LABEL_36: + v23 = a1; + v26 = a1[2]; + if ( v26 >= a1[3] ) + { +LABEL_55: + (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); + v23 = a1; + goto LABEL_38; + } +LABEL_37: + v23[2] = v26 + 2; +LABEL_38: + a2 = -1; + v22 = -1; + continue; + } + v11 = 0; + } + } + else + { + v11 = *(_BYTE *)(v9 + 16); + } +LABEL_101: + if ( !*((_DWORD *)v116 - 3) ) + goto LABEL_102; + goto LABEL_121; + } + break; + } + if ( *(int *)(v9 + 48) <= 0 ) + { + v105 = 0; + goto LABEL_100; + } + v66 = v113; + v105 = 1; + v113 = 0; + v97 = v66; + goto LABEL_36; + default: + v36 = 0; + v11 = 1; + goto LABEL_122; + } + } +} +// 4A79C7: variable 'v92' is possibly undefined +// 4A7A54: variable 'v94' is possibly undefined +// 4A6FAD: variable 'v93' is possibly undefined +// 4A7927: variable 'v95' is possibly undefined +// 4A7B1D: variable 'v96' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 516438: using guessed type int std::moneypunct::id; +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (004A7CA0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (004A7CB0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (004A7CC0) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +_DWORD *__stdcall std::money_get>::do_get( + _DWORD *a1, + unsigned __int16 a2, + _DWORD *a3, + __int16 a4, + char a5, + int a6, + _DWORD *a7, + void **a8) +{ + void *v8; // edi + _DWORD *v9; // eax + _DWORD *v10; // esi + int v11; // eax + size_t v12; // edx + void *v13; // ecx + void *v15; // ecx + int v16; // edx + size_t v17; // [esp+24h] [ebp-34h] + int v18; // [esp+3Bh] [ebp-1Dh] BYREF + int v19[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v8 = std::use_facet>(a6 + 108); + v19[0] = (int)&unk_51641C; + if ( a5 ) + v9 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, v19); + else + v9 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, v19); + v10 = v9; + v11 = v19[0]; + v12 = *(_DWORD *)(v19[0] - 12); + v17 = v12; + if ( !v12 ) + { + v13 = (void *)(v19[0] - 12); + if ( (_UNKNOWN *)v19[0] == &unk_51641C ) + return v10; + goto LABEL_10; + } + std::wstring::resize(a8, v12, 0); + v15 = *a8; + if ( *((int *)*a8 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)a8); + v15 = *a8; + } + (*(void (__thiscall **)(void *, int, size_t, void *))(*(_DWORD *)v8 + 44))(v8, v19[0], v19[0] + v17, v15); + v11 = v19[0]; + v13 = (void *)(v19[0] - 12); + if ( (_UNKNOWN *)v19[0] != &unk_51641C ) + { +LABEL_10: + if ( _CRT_MT ) + { + v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF); + } + else + { + v16 = *(_DWORD *)(v11 - 4); + *(_DWORD *)(v11 - 4) = v16 - 1; + } + if ( v16 <= 0 ) + std::string::_Rep::_M_destroy(v13, (int)&v18); + } + return v10; +} +// 4A7E26: positive sp value 4 has been found +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004A7E30) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +_DWORD *__stdcall std::money_get>::do_get( + std::locale::facet *a1, + unsigned __int16 a2, + _DWORD *a3, + __int16 a4, + char a5, + int a6, + _DWORD *a7, + long double *a8) +{ + _DWORD *v8; // eax + _DWORD *v9; // esi + char *v10; // ecx + int v12; // edx + char *String; // [esp+38h] [ebp-20h] BYREF + int v14[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_51641C; + if ( a5 ) + v8 = std::money_get>::_M_extract( + a1, + a2, + a3, + a4, + a6, + a7, + (int *)&String); + else + v8 = std::money_get>::_M_extract( + a1, + a2, + a3, + a4, + a6, + a7, + (int *)&String); + v9 = v8; + v14[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a8, a7); + v10 = String - 12; + if ( String != (char *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v10, (int)v14); + } + return v9; +} +// 4A7F36: positive sp value 4 has been found +// 78A9D4: using guessed type int _CRT_MT; +// 4A7E30: using guessed type int var_1C[7]; + +//----- (004A7F40) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (004A7F60) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (004A7F80) -------------------------------------------------------- +int __stdcall std::money_put>::do_put( + int a1, + char a2, + char a3, + int a4, + char a5, + std::string **a6) +{ + if ( a3 ) + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); + else + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); +} + +//----- (004A7FF0) -------------------------------------------------------- +int __thiscall std::money_put>::do_put( + void *this, + std::locale *a2, + char a3, + int a4, + int a5, + int a6, + long double a7) +{ + void *v7; // esp + void *v8; // esp + int v9; // eax + int v10; // ebx + int v11; // eax + void *v12; // esp + void *v13; // esp + char v14; // al + void (__thiscall *v15)(_BYTE *, void *, char *, size_t); // eax + int v16; // eax + int v17; // ebx + int v19; // edx + char v20[52]; // [esp-30h] [ebp-98h] BYREF + const std::locale *v21; // [esp+4h] [ebp-64h] + char *v22; // [esp+24h] [ebp-44h] + int v23; // [esp+28h] [ebp-40h] + int v24; // [esp+2Ch] [ebp-3Ch] + void *v25; // [esp+30h] [ebp-38h] + size_t BufferCount; // [esp+34h] [ebp-34h] + _BYTE *v27; // [esp+38h] [ebp-30h] + void *Src; // [esp+3Ch] [ebp-2Ch] + char v29[5]; // [esp+47h] [ebp-21h] BYREF + int *v30[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v25 = this; + v24 = a4; + v23 = a6; + std::locale::locale((volatile signed __int32 **)&v29[1], (volatile signed __int32 **)(a5 + 108), v21); + v27 = std::use_facet>((int)&v29[1]); + v7 = alloca(80); + v8 = alloca(80); + Src = v20; + v30[0] = (int *)std::locale::facet::_S_get_c_locale(); + v9 = std::__convert_from_v(v30, v20, 0x40u, "%.*Lf", 0, a7); + v10 = v9; + if ( v9 > 63 ) + { + BufferCount = v9 + 1; + v11 = 16 * ((unsigned int)(v9 + 28) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + Src = v20; + v30[0] = (int *)std::locale::facet::_S_get_c_locale(); + v10 = std::__convert_from_v(v30, v20, BufferCount, "%.*Lf", 0, a7); + } + std::string::string((unsigned int **)v30, v10, 0, (int)v29); + BufferCount = (size_t)v30[0]; + if ( *(v30[0] - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)v30); + BufferCount = (size_t)v30[0]; + } + v22 = (char *)Src + v10; + v14 = v27[28]; + if ( v14 == 1 ) + goto LABEL_8; + if ( v14 ) + { + v15 = *(void (__thiscall **)(_BYTE *, void *, char *, size_t))(*(_DWORD *)v27 + 28); + if ( (char *)v15 == (char *)std::ctype::do_widen ) + goto LABEL_8; +LABEL_16: + v15(v27, Src, v22, BufferCount); + goto LABEL_10; + } + std::ctype::_M_widen_init((int)v27); + v15 = *(void (__thiscall **)(_BYTE *, void *, char *, size_t))(*(_DWORD *)v27 + 28); + if ( (char *)v15 != (char *)std::ctype::do_widen ) + goto LABEL_16; +LABEL_8: + if ( v22 != Src ) + memcpy((void *)BufferCount, Src, v10); +LABEL_10: + if ( (_BYTE)v24 ) + v16 = std::money_put>::_M_insert( + (int)a2, + a3, + a5, + v23, + (std::string **)v30); + else + v16 = std::money_put>::_M_insert( + (int)a2, + a3, + a5, + v23, + (std::string **)v30); + v17 = v16; + Src = v30[0] - 3; + if ( (_UNKNOWN *)v30[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v19 = _InterlockedExchangeAdd(v30[0] - 1, 0xFFFFFFFF); + } + else + { + v19 = *(v30[0] - 1); + *(v30[0] - 1) = v19 - 1; + } + if ( v19 <= 0 ) + std::string::_Rep::_M_destroy(Src, (int)v29); + } + std::locale::~locale((_DWORD **)&v29[1]); + return v17; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004A8280) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + char a4, + std::string **a5) +{ + int v5; // esi + int *v6; // edi + int v7; // ebx + std::string *v8; // esi + int v9; // ecx + unsigned __int8 *v10; // ecx + unsigned __int8 *v11; // eax + size_t v12; // eax + size_t v13; // edi + int v15; // eax + std::string *v16; // edx + _BYTE *v17; // eax + std::string *v18; // edx + size_t v19; // eax + size_t v20; // ecx + unsigned int v21; // edx + unsigned int v22; // esi + unsigned int v23; // ecx + unsigned int v24; // edi + bool v25; // cf + bool v26; // zf + char *v27; // esi + char v28; // al + unsigned int *v29; // eax + unsigned int v30; // edx + std::locale::_Impl *v31; // eax + std::locale::_Impl *v32; // ebx + void (__cdecl *v33)(void *); // [esp+0h] [ebp-78h] + unsigned int v34; // [esp+0h] [ebp-78h] + const std::string *v35; // [esp+0h] [ebp-78h] + unsigned int v36; // [esp+4h] [ebp-74h] + unsigned int v37; // [esp+4h] [ebp-74h] + unsigned int v38; // [esp+8h] [ebp-70h] + char v39; // [esp+Ch] [ebp-6Ch] + char v40; // [esp+20h] [ebp-58h] + char *v41; // [esp+24h] [ebp-54h] + std::string *v42; // [esp+28h] [ebp-50h] + std::string *v43; // [esp+28h] [ebp-50h] + _BYTE *v44; // [esp+2Ch] [ebp-4Ch] + bool v45; // [esp+2Ch] [ebp-4Ch] + char *v46; // [esp+30h] [ebp-48h] + unsigned int v47; // [esp+3Ch] [ebp-3Ch] + _DWORD *v48; // [esp+40h] [ebp-38h] + int v49; // [esp+40h] [ebp-38h] + int v50; // [esp+40h] [ebp-38h] + char v51; // [esp+53h] [ebp-25h] BYREF + std::string *v52; // [esp+54h] [ebp-24h] BYREF + unsigned int *v53; // [esp+58h] [ebp-20h] BYREF + int v54; // [esp+5Ch] [ebp-1Ch] BYREF + char v55; // [esp+60h] [ebp-18h] BYREF + + v48 = std::use_facet>(a3 + 108); + v5 = std::locale::id::_M_id(&std::moneypunct::id); + v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v31 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v33); + *(_DWORD *)v31 = &off_538D0C; + v32 = v31; + *((_DWORD *)v31 + 1) = 0; + *((_DWORD *)v31 + 2) = 0; + *((_DWORD *)v31 + 3) = 0; + *((_WORD *)v31 + 8) = 0; + *((_BYTE *)v31 + 18) = 0; + *((_DWORD *)v31 + 5) = 0; + *((_DWORD *)v31 + 6) = 0; + *((_DWORD *)v31 + 7) = 0; + *((_DWORD *)v31 + 8) = 0; + *((_DWORD *)v31 + 9) = 0; + *((_DWORD *)v31 + 10) = 0; + *((_DWORD *)v31 + 11) = 0; + *((_DWORD *)v31 + 12) = 0; + *((_DWORD *)v31 + 13) = 0; + *((_BYTE *)v31 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v31, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v32, (const std::locale::facet *)v5, v36); + v7 = *v6; + } + v8 = *a5; + v9 = *((_DWORD *)*a5 - 3); + if ( *(_BYTE *)*a5 == *(_BYTE *)(v7 + 56) ) + { + v54 = *(_DWORD *)(v7 + 52); + if ( !v9 ) + goto LABEL_10; + v8 = (std::string *)((char *)v8 + 1); + v46 = *(char **)(v7 + 36); + v47 = *(_DWORD *)(v7 + 40); + } + else + { + v54 = *(_DWORD *)(v7 + 48); + v46 = *(char **)(v7 + 28); + v47 = *(_DWORD *)(v7 + 32); + } + v10 = (unsigned __int8 *)v8 + v9; + if ( v10 > (unsigned __int8 *)v8 ) + { + v11 = (unsigned __int8 *)v8; + do + { + if ( (*(_BYTE *)(v48[6] + 2 * *v11) & 8) == 0 ) + break; + ++v11; + } + while ( v10 != v11 ); + v12 = v11 - (unsigned __int8 *)v8; + v13 = v12; + if ( v12 ) + { + v52 = (std::string *)&unk_51641C; + std::string::reserve((unsigned int **)&v52, (std::string *)(2 * v12), (unsigned int)v33); + v15 = *(_DWORD *)(v7 + 44); + v49 = v13 - v15; + if ( (int)(v13 - v15) > 0 ) + { + if ( v15 < 0 ) + v49 = v13; + if ( *(_DWORD *)(v7 + 12) ) + { + std::string::_M_replace_aux((volatile signed __int32 **)&v52, 0, *((_DWORD *)v52 - 3), 2 * v49, 0, v39); + v16 = v52; + v42 = *(std::string **)(v7 + 12); + v41 = *(char **)(v7 + 8); + v40 = *(_BYTE *)(v7 + 18); + if ( *((int *)v52 - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)&v52); + v16 = v52; + } + v17 = std::__add_grouping(v16, v40, v41, (int)v42, v8, (_BYTE *)v8 + v49); + v18 = v52; + v44 = v17; + if ( *((int *)v52 - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)&v52); + v18 = v52; + } + v19 = *((_DWORD *)v18 - 3); + v20 = v44 - (_BYTE *)v18; + v21 = v19 - (v44 - (_BYTE *)v18); + if ( v20 > v19 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v20, + v19); + std::string::_M_mutate((volatile signed __int32 **)&v52, v20, v21, 0, v38); + v15 = *(_DWORD *)(v7 + 44); + } + else + { + std::string::assign((volatile signed __int32 **)&v52, v8, v49, v36); + v15 = *(_DWORD *)(v7 + 44); + } + } + if ( v15 > 0 ) + { + std::string::push_back((unsigned int **)&v52, (std::string *)*(char *)(v7 + 17), v34); + if ( v49 < 0 ) + { + std::string::append((unsigned int **)&v52, (std::string *)-v49, *(_BYTE *)(v7 + 57), v36); + std::string::append((unsigned int **)&v52, v8, v13, v37); + } + else + { + std::string::append((unsigned int **)&v52, (std::string *)((char *)v8 + v49), *(_DWORD *)(v7 + 44), v36); + } + } + v50 = *(_DWORD *)(a3 + 12) & 0xB0; + v22 = *((_DWORD *)v52 - 3) + v47; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v22 = *(_DWORD *)(v7 + 24) + *((_DWORD *)v52 - 3) + v47; + v53 = (unsigned int *)&unk_51641C; + std::string::reserve(&v53, (std::string *)(2 * v22), v34); + v23 = v22; + v24 = *(_DWORD *)(a3 + 8); + v25 = v24 < v22; + v26 = v24 == v22; + v27 = (char *)&v54; + v45 = !v25 && !v26 && v50 == 16; + v43 = (std::string *)(v24 - v23); + do + { + switch ( *v27 ) + { + case 0: + if ( v45 ) + { + v28 = a4; + goto LABEL_33; + } + break; + case 1: + v28 = a4; + if ( v45 ) +LABEL_33: + std::string::append(&v53, v43, v28, v36); + else + std::string::push_back(&v53, (std::string *)a4, (char)v35); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + std::string::append(&v53, *(std::string **)(v7 + 20), *(_DWORD *)(v7 + 24), v36); + break; + case 3: + if ( v47 ) + std::string::push_back(&v53, (std::string *)*v46, (char)v35); + break; + case 4: + std::string::append(&v53, (std::string *)&v52, v35); + break; + default: + break; + } + ++v27; + } + while ( v27 != &v55 ); + if ( v47 > 1 ) + { + std::string::append(&v53, (std::string *)(v46 + 1), v47 - 1, v36); + v29 = v53; + v30 = *(v53 - 3); + if ( v24 <= v30 ) + goto LABEL_40; + } + else + { + v29 = v53; + v30 = *(v53 - 3); + if ( v24 <= v30 ) + { +LABEL_40: + v24 = v30; +LABEL_41: + if ( !a2 ) + { + (*(void (__thiscall **)(int, unsigned int *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v29, v24); + v29 = v53; + } + if ( v29 != (unsigned int *)&unk_51641C ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v51); + if ( v52 != (std::string *)&unk_51641C ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v52 - 3, (int)&v51); + goto LABEL_10; + } + } + if ( v50 == 32 ) + std::string::append(&v53, (std::string *)(v24 - v30), a4, v36); + else + std::string::_M_replace_aux((volatile signed __int32 **)&v53, 0, 0, v24 - v30, a4, v39); + v29 = v53; + goto LABEL_41; + } + } +LABEL_10: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 4A8856: positive sp value 4 has been found +// 4A86D7: variable 'v33' is possibly undefined +// 4A8763: variable 'v36' is possibly undefined +// 4A83D1: variable 'v39' is possibly undefined +// 4A8461: variable 'v38' is possibly undefined +// 4A84A9: variable 'v34' is possibly undefined +// 4A8507: variable 'v35' is possibly undefined +// 4A87D4: variable 'v37' is possibly undefined +// 51642C: using guessed type int std::moneypunct::id; +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (004A88B0) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + char a4, + std::string **a5) +{ + int v5; // esi + int *v6; // edi + int v7; // ebx + std::string *v8; // esi + int v9; // ecx + unsigned __int8 *v10; // ecx + unsigned __int8 *v11; // eax + size_t v12; // eax + size_t v13; // edi + int v15; // eax + std::string *v16; // edx + _BYTE *v17; // eax + std::string *v18; // edx + size_t v19; // eax + size_t v20; // ecx + unsigned int v21; // edx + unsigned int v22; // esi + unsigned int v23; // ecx + unsigned int v24; // edi + bool v25; // cf + bool v26; // zf + char *v27; // esi + char v28; // al + unsigned int *v29; // eax + unsigned int v30; // edx + std::locale::_Impl *v31; // eax + std::locale::_Impl *v32; // ebx + void (__cdecl *v33)(void *); // [esp+0h] [ebp-78h] + unsigned int v34; // [esp+0h] [ebp-78h] + const std::string *v35; // [esp+0h] [ebp-78h] + unsigned int v36; // [esp+4h] [ebp-74h] + unsigned int v37; // [esp+4h] [ebp-74h] + unsigned int v38; // [esp+8h] [ebp-70h] + char v39; // [esp+Ch] [ebp-6Ch] + char v40; // [esp+20h] [ebp-58h] + char *v41; // [esp+24h] [ebp-54h] + std::string *v42; // [esp+28h] [ebp-50h] + std::string *v43; // [esp+28h] [ebp-50h] + _BYTE *v44; // [esp+2Ch] [ebp-4Ch] + bool v45; // [esp+2Ch] [ebp-4Ch] + char *v46; // [esp+30h] [ebp-48h] + unsigned int v47; // [esp+3Ch] [ebp-3Ch] + _DWORD *v48; // [esp+40h] [ebp-38h] + int v49; // [esp+40h] [ebp-38h] + int v50; // [esp+40h] [ebp-38h] + char v51; // [esp+53h] [ebp-25h] BYREF + std::string *v52; // [esp+54h] [ebp-24h] BYREF + unsigned int *v53; // [esp+58h] [ebp-20h] BYREF + int v54; // [esp+5Ch] [ebp-1Ch] BYREF + char v55; // [esp+60h] [ebp-18h] BYREF + + v48 = std::use_facet>(a3 + 108); + v5 = std::locale::id::_M_id(&std::moneypunct::id); + v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v31 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v33); + *(_DWORD *)v31 = &off_538D1C; + v32 = v31; + *((_DWORD *)v31 + 1) = 0; + *((_DWORD *)v31 + 2) = 0; + *((_DWORD *)v31 + 3) = 0; + *((_WORD *)v31 + 8) = 0; + *((_BYTE *)v31 + 18) = 0; + *((_DWORD *)v31 + 5) = 0; + *((_DWORD *)v31 + 6) = 0; + *((_DWORD *)v31 + 7) = 0; + *((_DWORD *)v31 + 8) = 0; + *((_DWORD *)v31 + 9) = 0; + *((_DWORD *)v31 + 10) = 0; + *((_DWORD *)v31 + 11) = 0; + *((_DWORD *)v31 + 12) = 0; + *((_DWORD *)v31 + 13) = 0; + *((_BYTE *)v31 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v31, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v32, (const std::locale::facet *)v5, v36); + v7 = *v6; + } + v8 = *a5; + v9 = *((_DWORD *)*a5 - 3); + if ( *(_BYTE *)*a5 == *(_BYTE *)(v7 + 56) ) + { + v54 = *(_DWORD *)(v7 + 52); + if ( !v9 ) + goto LABEL_10; + v8 = (std::string *)((char *)v8 + 1); + v46 = *(char **)(v7 + 36); + v47 = *(_DWORD *)(v7 + 40); + } + else + { + v54 = *(_DWORD *)(v7 + 48); + v46 = *(char **)(v7 + 28); + v47 = *(_DWORD *)(v7 + 32); + } + v10 = (unsigned __int8 *)v8 + v9; + if ( v10 > (unsigned __int8 *)v8 ) + { + v11 = (unsigned __int8 *)v8; + do + { + if ( (*(_BYTE *)(v48[6] + 2 * *v11) & 8) == 0 ) + break; + ++v11; + } + while ( v10 != v11 ); + v12 = v11 - (unsigned __int8 *)v8; + v13 = v12; + if ( v12 ) + { + v52 = (std::string *)&unk_51641C; + std::string::reserve((unsigned int **)&v52, (std::string *)(2 * v12), (unsigned int)v33); + v15 = *(_DWORD *)(v7 + 44); + v49 = v13 - v15; + if ( (int)(v13 - v15) > 0 ) + { + if ( v15 < 0 ) + v49 = v13; + if ( *(_DWORD *)(v7 + 12) ) + { + std::string::_M_replace_aux((volatile signed __int32 **)&v52, 0, *((_DWORD *)v52 - 3), 2 * v49, 0, v39); + v16 = v52; + v42 = *(std::string **)(v7 + 12); + v41 = *(char **)(v7 + 8); + v40 = *(_BYTE *)(v7 + 18); + if ( *((int *)v52 - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)&v52); + v16 = v52; + } + v17 = std::__add_grouping(v16, v40, v41, (int)v42, v8, (_BYTE *)v8 + v49); + v18 = v52; + v44 = v17; + if ( *((int *)v52 - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)&v52); + v18 = v52; + } + v19 = *((_DWORD *)v18 - 3); + v20 = v44 - (_BYTE *)v18; + v21 = v19 - (v44 - (_BYTE *)v18); + if ( v20 > v19 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v20, + v19); + std::string::_M_mutate((volatile signed __int32 **)&v52, v20, v21, 0, v38); + v15 = *(_DWORD *)(v7 + 44); + } + else + { + std::string::assign((volatile signed __int32 **)&v52, v8, v49, v36); + v15 = *(_DWORD *)(v7 + 44); + } + } + if ( v15 > 0 ) + { + std::string::push_back((unsigned int **)&v52, (std::string *)*(char *)(v7 + 17), v34); + if ( v49 < 0 ) + { + std::string::append((unsigned int **)&v52, (std::string *)-v49, *(_BYTE *)(v7 + 57), v36); + std::string::append((unsigned int **)&v52, v8, v13, v37); + } + else + { + std::string::append((unsigned int **)&v52, (std::string *)((char *)v8 + v49), *(_DWORD *)(v7 + 44), v36); + } + } + v50 = *(_DWORD *)(a3 + 12) & 0xB0; + v22 = *((_DWORD *)v52 - 3) + v47; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v22 = *(_DWORD *)(v7 + 24) + *((_DWORD *)v52 - 3) + v47; + v53 = (unsigned int *)&unk_51641C; + std::string::reserve(&v53, (std::string *)(2 * v22), v34); + v23 = v22; + v24 = *(_DWORD *)(a3 + 8); + v25 = v24 < v22; + v26 = v24 == v22; + v27 = (char *)&v54; + v45 = !v25 && !v26 && v50 == 16; + v43 = (std::string *)(v24 - v23); + do + { + switch ( *v27 ) + { + case 0: + if ( v45 ) + { + v28 = a4; + goto LABEL_33; + } + break; + case 1: + v28 = a4; + if ( v45 ) +LABEL_33: + std::string::append(&v53, v43, v28, v36); + else + std::string::push_back(&v53, (std::string *)a4, (char)v35); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + std::string::append(&v53, *(std::string **)(v7 + 20), *(_DWORD *)(v7 + 24), v36); + break; + case 3: + if ( v47 ) + std::string::push_back(&v53, (std::string *)*v46, (char)v35); + break; + case 4: + std::string::append(&v53, (std::string *)&v52, v35); + break; + default: + break; + } + ++v27; + } + while ( v27 != &v55 ); + if ( v47 > 1 ) + { + std::string::append(&v53, (std::string *)(v46 + 1), v47 - 1, v36); + v29 = v53; + v30 = *(v53 - 3); + if ( v24 <= v30 ) + goto LABEL_40; + } + else + { + v29 = v53; + v30 = *(v53 - 3); + if ( v24 <= v30 ) + { +LABEL_40: + v24 = v30; +LABEL_41: + if ( !a2 ) + { + (*(void (__thiscall **)(int, unsigned int *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v29, v24); + v29 = v53; + } + if ( v29 != (unsigned int *)&unk_51641C ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v51); + if ( v52 != (std::string *)&unk_51641C ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v52 - 3, (int)&v51); + goto LABEL_10; + } + } + if ( v50 == 32 ) + std::string::append(&v53, (std::string *)(v24 - v30), a4, v36); + else + std::string::_M_replace_aux((volatile signed __int32 **)&v53, 0, 0, v24 - v30, a4, v39); + v29 = v53; + goto LABEL_41; + } + } +LABEL_10: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 4A8E86: positive sp value 4 has been found +// 4A8D07: variable 'v33' is possibly undefined +// 4A8D93: variable 'v36' is possibly undefined +// 4A8A01: variable 'v39' is possibly undefined +// 4A8A91: variable 'v38' is possibly undefined +// 4A8AD9: variable 'v34' is possibly undefined +// 4A8B37: variable 'v35' is possibly undefined +// 4A8E04: variable 'v37' is possibly undefined +// 516430: using guessed type int std::moneypunct::id; +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (004A8EE0) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (004A8F00) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (004A8F20) -------------------------------------------------------- +int __stdcall std::money_put>::do_put( + int a1, + char a2, + char a3, + int a4, + __int16 a5, + wchar_t **a6) +{ + if ( a3 ) + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); + else + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); +} + +//----- (004A8F90) -------------------------------------------------------- +int __thiscall std::money_put>::do_put( + void *this, + std::locale *a2, + char a3, + int a4, + int a5, + int a6, + long double a7) +{ + void *v7; // esp + void *v8; // esp + int v9; // eax + int v10; // ebx + int v11; // eax + void *v12; // esp + void *v13; // esp + int *v14; // eax + int v15; // eax + int v16; // ebx + int v18; // edx + int v19; // [esp-44h] [ebp-ACh] + int v20; // [esp-40h] [ebp-A8h] + int v21; // [esp-3Ch] [ebp-A4h] + int v22; // [esp-38h] [ebp-A0h] + int v23; // [esp-34h] [ebp-9Ch] + size_t v24[22]; // [esp-30h] [ebp-98h] BYREF + size_t BufferCount; // [esp+28h] [ebp-40h] + int v26; // [esp+2Ch] [ebp-3Ch] + int v27; // [esp+30h] [ebp-38h] + void *v28; // [esp+34h] [ebp-34h] + void *v29; // [esp+38h] [ebp-30h] + void *v30; // [esp+3Ch] [ebp-2Ch] + char v31[5]; // [esp+47h] [ebp-21h] BYREF + int *v32[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v28 = this; + v27 = a4; + v26 = a6; + std::locale::locale( + (volatile signed __int32 **)&v31[1], + (volatile signed __int32 **)(a5 + 108), + (const std::locale *)v24[13]); + v29 = std::use_facet>((int)&v31[1]); + v7 = alloca(80); + v8 = alloca(80); + v30 = v24; + v32[0] = (int *)std::locale::facet::_S_get_c_locale(); + v9 = std::__convert_from_v(v32, (char *)v24, 0x40u, "%.*Lf", 0, a7); + v10 = v9; + if ( v9 > 63 ) + { + BufferCount = v9 + 1; + v11 = 16 * ((unsigned int)(v9 + 28) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + v30 = v24; + v32[0] = (int *)std::locale::facet::_S_get_c_locale(); + v10 = std::__convert_from_v(v32, (char *)v24, BufferCount, "%.*Lf", 0, a7); + } + std::wstring::basic_string(v32, v10, 0, (int)v31); + v14 = v32[0]; + if ( *(v32[0] - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)v32); + v14 = v32[0]; + } + (*(void (__thiscall **)(void *, void *, char *, int *, int, int, int, int, int, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t))(*(_DWORD *)v29 + 44))( + v29, + v30, + (char *)v30 + v10, + v14, + v19, + v20, + v21, + v22, + v23, + v24[0], + v24[1], + v24[2], + v24[3], + v24[4], + v24[5], + v24[6], + v24[7], + v24[8], + v24[9]); + if ( (_BYTE)v27 ) + v15 = std::money_put>::_M_insert( + (int)a2, + a3, + a5, + v26, + (wchar_t **)v32); + else + v15 = std::money_put>::_M_insert( + (int)a2, + a3, + a5, + v26, + (wchar_t **)v32); + v16 = v15; + v30 = v32[0] - 3; + if ( (_UNKNOWN *)v32[0] != &unk_51640C ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd(v32[0] - 1, 0xFFFFFFFF); + } + else + { + v18 = *(v32[0] - 1); + *(v32[0] - 1) = v18 - 1; + } + if ( v18 <= 0 ) + std::wstring::_Rep::_M_destroy(v30, (int)v31); + } + std::locale::~locale((_DWORD **)&v31[1]); + return v16; +} +// 4A90AF: variable 'v19' is possibly undefined +// 4A90AF: variable 'v20' is possibly undefined +// 4A90AF: variable 'v21' is possibly undefined +// 4A90AF: variable 'v22' is possibly undefined +// 4A90AF: variable 'v23' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004A91C0) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + __int16 a4, + wchar_t **a5) +{ + void *v5; // edi + int v6; // ebx + int v7; // esi + wchar_t *v8; // ebx + int v9; // eax + int v10; // ecx + int v11; // eax + int v13; // eax + __int16 v14; // di + _WORD *v15; // eax + char *v16; // edi + char *v17; // eax + int v18; // edi + unsigned int v19; // eax + unsigned int v20; // edi + int v21; // edi + unsigned int v22; // edi + unsigned int v23; // ebx + unsigned int v24; // ecx + unsigned int v25; // edi + bool v26; // cf + bool v27; // zf + char *v28; // ebx + wchar_t v29; // ax + _DWORD *v30; // eax + unsigned int v31; // edx + char *v32; // edi + _DWORD *v33; // eax + _DWORD *v34; // eax + std::locale::_Impl *v35; // esi + void (__cdecl *v36)(void *); // [esp+0h] [ebp-78h] + unsigned int v37; // [esp+4h] [ebp-74h] + char *v38; // [esp+20h] [ebp-58h] + int v39; // [esp+24h] [ebp-54h] + size_t v40; // [esp+28h] [ebp-50h] + __int16 v41; // [esp+28h] [ebp-50h] + int v42; // [esp+2Ch] [ebp-4Ch] + bool v43; // [esp+2Ch] [ebp-4Ch] + int v44; // [esp+34h] [ebp-44h] + int *v45; // [esp+3Ch] [ebp-3Ch] + int v46; // [esp+3Ch] [ebp-3Ch] + int v47; // [esp+3Ch] [ebp-3Ch] + unsigned int v48; // [esp+40h] [ebp-38h] + char v49; // [esp+53h] [ebp-25h] BYREF + _DWORD *v50; // [esp+54h] [ebp-24h] BYREF + _DWORD *v51; // [esp+58h] [ebp-20h] BYREF + int v52; // [esp+5Ch] [ebp-1Ch] BYREF + char v53; // [esp+60h] [ebp-18h] BYREF + + v5 = std::use_facet>(a3 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + v45 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + if ( !v7 ) + { + v34 = operator new((struct type_info *)0x54, v36); + v34[1] = 0; + v35 = (std::locale::_Impl *)v34; + *v34 = &off_538D2C; + v34[2] = 0; + v34[3] = 0; + *((_BYTE *)v34 + 16) = 0; + *(_DWORD *)((char *)v34 + 18) = 0; + v34[6] = 0; + v34[7] = 0; + v34[8] = 0; + v34[9] = 0; + v34[10] = 0; + v34[11] = 0; + v34[12] = 0; + v34[13] = 0; + v34[14] = 0; + *((_BYTE *)v34 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v34, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v35, (const std::locale::facet *)v6, v37); + v7 = *v45; + } + v8 = *a5; + v9 = *((_DWORD *)*a5 - 3); + if ( **a5 == *(_WORD *)(v7 + 60) ) + { + v52 = *(_DWORD *)(v7 + 56); + v44 = *(_DWORD *)(v7 + 40); + v48 = *(_DWORD *)(v7 + 44); + if ( v9 ) + ++v8; + } + else + { + v10 = *(_DWORD *)(v7 + 32); + v52 = *(_DWORD *)(v7 + 52); + v44 = v10; + v48 = *(_DWORD *)(v7 + 36); + } + v11 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; + v46 = v11 >> 1; + if ( v11 >> 1 ) + { + v50 = &unk_51640C; + std::wstring::reserve((void **)&v50, (char *)v11); + v13 = *(_DWORD *)(v7 + 48); + v42 = v46 - v13; + if ( v46 - v13 > 0 ) + { + if ( v13 < 0 ) + v42 = v46; + if ( *(_DWORD *)(v7 + 12) ) + { + std::wstring::_M_replace_aux((const wchar_t **)&v50, 0, *(v50 - 3), 2 * v42, 0); + v14 = *(_WORD *)(v7 + 20); + v39 = *(_DWORD *)(v7 + 12); + v38 = *(char **)(v7 + 8); + v15 = v50; + if ( (int)*(v50 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)&v50); + v15 = v50; + } + v16 = (char *)std::__add_grouping(v15, v14, v38, v39, v8, &v8[v42]); + v17 = (char *)v50; + if ( (int)*(v50 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)&v50); + v17 = (char *)v50; + } + v18 = v16 - v17; + v19 = *((_DWORD *)v17 - 3); + v20 = v18 >> 1; + if ( v20 > v19 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v20, + v19); + std::wstring::_M_mutate((const wchar_t **)&v50, v20, v19 - v20, 0); + v13 = *(_DWORD *)(v7 + 48); + } + else + { + std::wstring::assign((const wchar_t **)&v50, v8, v42); + v13 = *(_DWORD *)(v7 + 48); + } + } + v21 = *(v50 - 3); + if ( v13 > 0 ) + { + v32 = (char *)(v21 + 1); + v41 = *(_WORD *)(v7 + 18); + if ( (unsigned int)v32 > *(v50 - 2) || (int)*(v50 - 1) > 0 ) + std::wstring::reserve((void **)&v50, v32); + v33 = v50; + *((_WORD *)v50 + *(v50 - 3)) = v41; + if ( v33 != (_DWORD *)&unk_51640C ) + { + *(v33 - 1) = 0; + *(v33 - 3) = v32; + *((_WORD *)v33 + (_DWORD)v32) = 0; + } + if ( v42 < 0 ) + { + std::wstring::append((void **)&v50, -v42, *(_WORD *)(v7 + 62)); + std::wstring::append((void **)&v50, v8, v46); + } + else + { + std::wstring::append((void **)&v50, &v8[v42], *(_DWORD *)(v7 + 48)); + } + v21 = *(v50 - 3); + } + v22 = v48 + v21; + v23 = v22; + v47 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v23 = *(_DWORD *)(v7 + 28) + v22; + v51 = &unk_51640C; + std::wstring::reserve((void **)&v51, (char *)(2 * v23)); + v24 = v23; + v25 = *(_DWORD *)(a3 + 8); + v26 = v25 < v23; + v27 = v25 == v23; + v28 = (char *)&v52; + v43 = !v26 && !v27 && v47 == 16; + v40 = v25 - v24; + do + { + switch ( *v28 ) + { + case 0: + if ( v43 ) + { + v29 = a4; + goto LABEL_29; + } + break; + case 1: + v29 = a4; + if ( v43 ) +LABEL_29: + std::wstring::append((void **)&v51, v40, v29); + else + std::wstring::push_back((void **)&v51, a4); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + std::wstring::append((void **)&v51, *(wchar_t **)(v7 + 24), *(_DWORD *)(v7 + 28)); + break; + case 3: + if ( v48 ) + std::wstring::push_back((void **)&v51, *(_WORD *)v44); + break; + case 4: + std::wstring::append((void **)&v51, (const wchar_t **)&v50); + break; + default: + break; + } + ++v28; + } + while ( v28 != &v53 ); + if ( v48 > 1 ) + { + std::wstring::append((void **)&v51, (wchar_t *)(v44 + 2), v48 - 1); + v30 = v51; + v31 = *(v51 - 3); + if ( v25 <= v31 ) + goto LABEL_36; + } + else + { + v30 = v51; + v31 = *(v51 - 3); + if ( v25 <= v31 ) + { +LABEL_36: + v25 = v31; +LABEL_37: + if ( !a2 ) + { + (*(void (__thiscall **)(int, _DWORD *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v30, v25); + v30 = v51; + } + if ( v30 != (_DWORD *)&unk_51640C ) + std::wstring::_Rep::_M_dispose(v30 - 3, (int)&v49); + if ( v50 != (_DWORD *)&unk_51640C ) + std::wstring::_Rep::_M_dispose(v50 - 3, (int)&v49); + goto LABEL_6; + } + } + if ( v47 == 32 ) + std::wstring::append((void **)&v51, v25 - v31, a4); + else + std::wstring::_M_replace_aux((const wchar_t **)&v51, 0, 0, v25 - v31, a4); + v30 = v51; + goto LABEL_37; + } +LABEL_6: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 4A97FD: positive sp value 4 has been found +// 4A9637: variable 'v36' is possibly undefined +// 4A96C4: variable 'v37' is possibly undefined +// 516434: using guessed type int std::moneypunct::id; +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (004A9850) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + wchar_t a4, + wchar_t **a5) +{ + void *v5; // edi + int v6; // ebx + int v7; // esi + wchar_t *v8; // ebx + int v9; // eax + int v10; // ecx + int v11; // eax + int v13; // eax + __int16 v14; // di + _WORD *v15; // eax + char *v16; // edi + char *v17; // eax + int v18; // edi + unsigned int v19; // eax + unsigned int v20; // edi + int v21; // edi + unsigned int v22; // edi + unsigned int v23; // ebx + unsigned int v24; // ecx + unsigned int v25; // edi + bool v26; // cf + bool v27; // zf + char *v28; // ebx + _DWORD *v29; // eax + unsigned int v30; // edx + char *v31; // edi + _DWORD *v32; // eax + _DWORD *v33; // eax + _DWORD *v34; // eax + std::locale::_Impl *v35; // esi + void (__cdecl *v36)(void *); // [esp+0h] [ebp-78h] + unsigned int v37; // [esp+4h] [ebp-74h] + char *v38; // [esp+24h] [ebp-54h] + char *v39; // [esp+24h] [ebp-54h] + int v40; // [esp+28h] [ebp-50h] + size_t v41; // [esp+28h] [ebp-50h] + __int16 v42; // [esp+2Ch] [ebp-4Ch] + int v43; // [esp+30h] [ebp-48h] + bool v44; // [esp+30h] [ebp-48h] + int v45; // [esp+38h] [ebp-40h] + int *v46; // [esp+3Ch] [ebp-3Ch] + int v47; // [esp+3Ch] [ebp-3Ch] + int v48; // [esp+3Ch] [ebp-3Ch] + unsigned int v49; // [esp+40h] [ebp-38h] + char v50; // [esp+53h] [ebp-25h] BYREF + _DWORD *v51; // [esp+54h] [ebp-24h] BYREF + _DWORD *v52; // [esp+58h] [ebp-20h] BYREF + int v53; // [esp+5Ch] [ebp-1Ch] BYREF + char v54; // [esp+60h] [ebp-18h] BYREF + + v5 = std::use_facet>(a3 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + v46 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + if ( !v7 ) + { + v34 = operator new((struct type_info *)0x54, v36); + v34[1] = 0; + v35 = (std::locale::_Impl *)v34; + *v34 = &off_538D3C; + v34[2] = 0; + v34[3] = 0; + *((_BYTE *)v34 + 16) = 0; + *(_DWORD *)((char *)v34 + 18) = 0; + v34[6] = 0; + v34[7] = 0; + v34[8] = 0; + v34[9] = 0; + v34[10] = 0; + v34[11] = 0; + v34[12] = 0; + v34[13] = 0; + v34[14] = 0; + *((_BYTE *)v34 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v34, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v35, (const std::locale::facet *)v6, v37); + v7 = *v46; + } + v8 = *a5; + v9 = *((_DWORD *)*a5 - 3); + if ( **a5 == *(_WORD *)(v7 + 60) ) + { + v53 = *(_DWORD *)(v7 + 56); + v45 = *(_DWORD *)(v7 + 40); + v49 = *(_DWORD *)(v7 + 44); + if ( v9 ) + ++v8; + } + else + { + v10 = *(_DWORD *)(v7 + 32); + v53 = *(_DWORD *)(v7 + 52); + v45 = v10; + v49 = *(_DWORD *)(v7 + 36); + } + v11 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; + v47 = v11 >> 1; + if ( v11 >> 1 ) + { + v51 = &unk_51640C; + std::wstring::reserve((void **)&v51, (char *)v11); + v13 = *(_DWORD *)(v7 + 48); + v43 = v47 - v13; + if ( v47 - v13 > 0 ) + { + if ( v13 < 0 ) + v43 = v47; + if ( *(_DWORD *)(v7 + 12) ) + { + std::wstring::_M_replace_aux((const wchar_t **)&v51, 0, *(v51 - 3), 2 * v43, 0); + v14 = *(_WORD *)(v7 + 20); + v40 = *(_DWORD *)(v7 + 12); + v38 = *(char **)(v7 + 8); + v15 = v51; + if ( (int)*(v51 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)&v51); + v15 = v51; + } + v16 = (char *)std::__add_grouping(v15, v14, v38, v40, v8, &v8[v43]); + v17 = (char *)v51; + if ( (int)*(v51 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)&v51); + v17 = (char *)v51; + } + v18 = v16 - v17; + v19 = *((_DWORD *)v17 - 3); + v20 = v18 >> 1; + if ( v20 > v19 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v20, + v19); + std::wstring::_M_mutate((const wchar_t **)&v51, v20, v19 - v20, 0); + v13 = *(_DWORD *)(v7 + 48); + } + else + { + std::wstring::assign((const wchar_t **)&v51, v8, v43); + v13 = *(_DWORD *)(v7 + 48); + } + } + v21 = *(v51 - 3); + if ( v13 > 0 ) + { + v31 = (char *)(v21 + 1); + v42 = *(_WORD *)(v7 + 18); + if ( (unsigned int)v31 > *(v51 - 2) || (int)*(v51 - 1) > 0 ) + std::wstring::reserve((void **)&v51, v31); + v32 = v51; + *((_WORD *)v51 + *(v51 - 3)) = v42; + if ( v32 != (_DWORD *)&unk_51640C ) + { + *(v32 - 1) = 0; + *(v32 - 3) = v31; + *((_WORD *)v32 + (_DWORD)v31) = 0; + } + if ( v43 < 0 ) + { + std::wstring::append((void **)&v51, -v43, *(_WORD *)(v7 + 62)); + std::wstring::append((void **)&v51, v8, v47); + } + else + { + std::wstring::append((void **)&v51, &v8[v43], *(_DWORD *)(v7 + 48)); + } + v21 = *(v51 - 3); + } + v22 = v49 + v21; + v23 = v22; + v48 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v23 = *(_DWORD *)(v7 + 28) + v22; + v52 = &unk_51640C; + std::wstring::reserve((void **)&v52, (char *)(2 * v23)); + v24 = v23; + v25 = *(_DWORD *)(a3 + 8); + v26 = v25 < v23; + v27 = v25 == v23; + v28 = (char *)&v53; + v44 = !v26 && !v27 && v48 == 16; + v41 = v25 - v24; + do + { + switch ( *v28 ) + { + case 0: + if ( v44 ) + goto LABEL_29; + break; + case 1: + if ( v44 ) + { +LABEL_29: + std::wstring::append((void **)&v52, v41, a4); + } + else + { + v39 = (char *)(*(v52 - 3) + 1); + if ( (unsigned int)v39 > *(v52 - 2) || (int)*(v52 - 1) > 0 ) + std::wstring::reserve((void **)&v52, v39); + v33 = v52; + *((_WORD *)v52 + *(v52 - 3)) = a4; + if ( v33 != (_DWORD *)&unk_51640C ) + { + *(v33 - 1) = 0; + *(v33 - 3) = v39; + *((_WORD *)v33 + (_DWORD)v39) = 0; + } + } + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + std::wstring::append((void **)&v52, *(wchar_t **)(v7 + 24), *(_DWORD *)(v7 + 28)); + break; + case 3: + if ( v49 ) + std::wstring::push_back((void **)&v52, *(_WORD *)v45); + break; + case 4: + std::wstring::append((void **)&v52, (const wchar_t **)&v51); + break; + default: + break; + } + ++v28; + } + while ( &v54 != v28 ); + if ( v49 > 1 ) + { + std::wstring::append((void **)&v52, (wchar_t *)(v45 + 2), v49 - 1); + v29 = v52; + v30 = *(v52 - 3); + if ( v25 <= v30 ) + goto LABEL_36; + } + else + { + v29 = v52; + v30 = *(v52 - 3); + if ( v25 <= v30 ) + { +LABEL_36: + v25 = v30; +LABEL_37: + if ( !a2 ) + { + (*(void (__thiscall **)(int, _DWORD *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v29, v25); + v29 = v52; + } + if ( v29 != (_DWORD *)&unk_51640C ) + std::wstring::_Rep::_M_dispose(v29 - 3, (int)&v50); + if ( v51 != (_DWORD *)&unk_51640C ) + std::wstring::_Rep::_M_dispose(v51 - 3, (int)&v50); + goto LABEL_6; + } + } + if ( v48 == 32 ) + std::wstring::append((void **)&v52, v25 - v30, a4); + else + std::wstring::_M_replace_aux((const wchar_t **)&v52, 0, 0, v25 - v30, a4); + v29 = v52; + goto LABEL_37; + } +LABEL_6: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 4A9EF5: positive sp value 4 has been found +// 4A9D07: variable 'v36' is possibly undefined +// 4A9D94: variable 'v37' is possibly undefined +// 516438: using guessed type int std::moneypunct::id; +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (004A9F20) -------------------------------------------------------- +bool __userpurge std::type_info::__do_catch@( + _DWORD *a1@, + std::type_info *this, + const std::type_info *a3, + void **a4, + unsigned int a5) +{ + return std::type_info::operator==(a1, (int)this); +} + +//----- (004A9F40) -------------------------------------------------------- +int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3) +{ + return 0; +} + +//----- (004A9F50) -------------------------------------------------------- +int std::type_info::__is_function_p() +{ + return 0; +} + +//----- (004A9F60) -------------------------------------------------------- +bool __thiscall std::type_info::operator==(_DWORD *this, int a2) +{ + bool result; // al + const char *Str1; // ecx + + result = 1; + if ( (_DWORD *)a2 != this ) + { + Str1 = (const char *)this[1]; + result = 0; + if ( *Str1 != 42 ) + return strcmp(Str1, (const char *)((**(_BYTE **)(a2 + 4) == 42) + *(_DWORD *)(a2 + 4))) == 0; + } + return result; +} + +//----- (004A9FA0) -------------------------------------------------------- +int __cdecl std::wstring::_S_compare(int a1, int a2) +{ + return a1 - a2; +} + +//----- (004A9FB0) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004A9FC0) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004A9FD0) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::_M_leak_hard(const wchar_t **a1) +{ + const wchar_t *result; // eax + + result = *a1; + if ( *a1 != (const wchar_t *)&unk_51640C ) + { + if ( *((int *)result - 1) > 0 ) + { + std::wstring::_M_mutate(a1, 0, 0, 0); + result = *a1; + *((_DWORD *)*a1 - 1) = -1; + } + else + { + result = *a1; + *((_DWORD *)*a1 - 1) = -1; + } + } + return result; +} + +//----- (004AA030) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, wchar_t a2) +{ + if ( a1 ) + return std::wstring::_S_construct(a1, a2); + else + return &unk_51640C; +} + +//----- (004AA060) -------------------------------------------------------- +_DWORD *__usercall std::wstring::_S_construct@(unsigned int a1@, wchar_t a2@) +{ + unsigned int *v4; // eax + unsigned int *v5; // esi + _DWORD *v6; // ebp + + v4 = std::wstring::_Rep::_S_create(a1, 0); + v5 = v4; + v6 = v4 + 3; + if ( a1 == 1 ) + { + *((_WORD *)v4 + 6) = a2; + if ( v4 == (unsigned int *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v6; + } + else + { + wmemset((wchar_t *)v4 + 6, a2, a1); + if ( v5 == (unsigned int *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v6; + } + v5[2] = 0; + *v5 = a1; + *((_WORD *)v5 + a1 + 6) = 0; + return v6; +} + +//----- (004AA0E0) -------------------------------------------------------- +wchar_t *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>( + wchar_t *S2, + wchar_t *a2) +{ + wchar_t *S1; // ebp + int v3; // ebx + int v4; // edi + _DWORD *v5; // esi + + S1 = (wchar_t *)&unk_51640C; + if ( a2 != S2 ) + { + v3 = (char *)a2 - (char *)S2; + v4 = a2 - S2; + v5 = std::wstring::_Rep::_S_create(v4, 0); + S1 = (wchar_t *)(v5 + 3); + if ( v4 == 1 ) + *((_WORD *)v5 + 6) = *S2; + else + wmemcpy(S1, S2, v3 >> 1); + if ( v5 != (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) + { + v5[2] = 0; + *v5 = v4; + *(_WORD *)((char *)v5 + v3 + 12) = 0; + } + } + return S1; +} + +//----- (004AA170) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2) +{ + if ( a1 == (const wchar_t *)a2 ) + return &unk_51640C; + if ( !a1 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); + return std::wstring::_S_construct(a1, a2); +} + +//----- (004AA1B0) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2) +{ + if ( a1 == (const wchar_t *)a2 ) + return &unk_51640C; + if ( !a1 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); + return std::wstring::_S_construct(a1, a2); +} + +//----- (004AA1F0) -------------------------------------------------------- +_DWORD *__usercall std::wstring::_S_construct@(const wchar_t *a1@, int a2@) +{ + int v2; // edi + int N; // ebp + int *v5; // eax + int *v6; // ebx + _DWORD *v7; // edx + _DWORD *v9; // [esp+1Ch] [ebp-20h] + + v2 = a2 - (_DWORD)a1; + N = (a2 - (int)a1) >> 1; + v5 = std::wstring::_Rep::_S_create(N, 0); + v6 = v5; + v7 = v5 + 3; + if ( N == 1 ) + { + *((_WORD *)v5 + 6) = *a1; + if ( v5 == (int *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v7; + } + else + { + v9 = v5 + 3; + wmemcpy((wchar_t *)v5 + 6, a1, N); + v7 = v9; + if ( v6 == (int *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v7; + } + v6[2] = 0; + *v6 = N; + *(_WORD *)((char *)v6 + v2 + 12) = 0; + return v7; +} + +//----- (004AA280) -------------------------------------------------------- +void *std::wstring::_S_empty_rep() +{ + return &std::wstring::_Rep::_S_empty_rep_storage; +} + +//----- (004AA290) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004AA2D0) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004AA310) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004AA350) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004AA390) -------------------------------------------------------- +char *__fastcall std::wstring::shrink_to_fit(void **a1) +{ + char *result; // eax + + result = (char *)*a1; + if ( *((_DWORD *)*a1 - 3) < *((_DWORD *)*a1 - 2) ) + return std::wstring::reserve(a1, 0); + return result; +} +// 4AA390: could not find valid save-restore pair for ebp + +//----- (004AA3D0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::_M_replace_aux(const wchar_t **this, size_t a2, int a3, size_t N, wchar_t C) +{ + wchar_t *S; // eax + + if ( N > a3 + 536870910 - *((_DWORD *)*this - 3) ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); + std::wstring::_M_mutate(this, a2, a3, N); + if ( !N ) + return this; + S = (wchar_t *)&(*this)[a2]; + if ( N != 1 ) + { + wmemset(S, C, N); + return this; + } + *S = C; + return this; +} + +//----- (004AA460) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::_M_replace_safe( + const wchar_t **this, + size_t a2, + int a3, + wchar_t *S2, + size_t N) +{ + wchar_t *S1; // eax + + std::wstring::_M_mutate(this, a2, a3, N); + if ( !N ) + return this; + S1 = (wchar_t *)&(*this)[a2]; + if ( N != 1 ) + { + wmemcpy(S1, S2, N); + return this; + } + *S1 = *S2; + return this; +} + +//----- (004AA4D0) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, wchar_t a2) +{ + if ( a1 ) + return std::wstring::_S_construct(a1, a2); + else + return &unk_51640C; +} + +//----- (004AA500) -------------------------------------------------------- +const wchar_t *__thiscall std::wstring::at(const wchar_t **this, unsigned int a2) +{ + const wchar_t *v2; // eax + + v2 = *this; + if ( a2 >= *((_DWORD *)*this - 3) ) + std::__throw_out_of_range_fmt( + "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", + a2, + *((_DWORD *)*this - 3)); + if ( *((int *)v2 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(this); + v2 = *this; + } + return &v2[a2]; +} + +//----- (004AA550) -------------------------------------------------------- +int __fastcall std::wstring::end(const wchar_t **a1) +{ + if ( *((int *)*a1 - 1) < 0 ) + return (int)&(*a1)[*((_DWORD *)*a1 - 3)]; + std::wstring::_M_leak_hard(a1); + return (int)&(*a1)[*((_DWORD *)*a1 - 3)]; +} + +//----- (004AA580) -------------------------------------------------------- +void __thiscall std::wstring::_Rep::_M_destroy(void *this, int a2) +{ + operator delete(this); +} + +//----- (004AA5A0) -------------------------------------------------------- +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( this != (volatile signed __int32 *)&std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)this); + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AA5F0) -------------------------------------------------------- +void __fastcall std::wstring::_Rep::_M_dispose(volatile signed __int32 *a1) +{ + int v1; // eax + + if ( !_CRT_MT ) + { + v1 = *((_DWORD *)a1 + 2); + *((_DWORD *)a1 + 2) = v1 - 1; + if ( v1 > 0 ) + return; +LABEL_5: + operator delete((void *)a1); + return; + } + if ( _InterlockedExchangeAdd(a1 + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AA630) -------------------------------------------------------- +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( !_CRT_MT ) + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + if ( v2 > 0 ) + return; +LABEL_5: + std::wstring::_Rep::_M_destroy((void *)this, a2); + return; + } + if ( _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AA670) -------------------------------------------------------- +int __fastcall std::wstring::_Rep::_M_refcopy(int a1) +{ + if ( (_UNKNOWN *)a1 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); + else + ++*(_DWORD *)(a1 + 8); + } + return a1 + 12; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AA6A0) -------------------------------------------------------- +int __fastcall std::wstring::_Rep::_M_refdata(int a1) +{ + return a1 + 12; +} + +//----- (004AA6B0) -------------------------------------------------------- +void *std::wstring::_Rep::_S_empty_rep() +{ + return &std::wstring::_Rep::_S_empty_rep_storage; +} + +//----- (004AA6C0) -------------------------------------------------------- +void __fastcall std::wstring::_Rep::_M_set_leaked(int a1) +{ + *(_DWORD *)(a1 + 8) = -1; +} + +//----- (004AA6D0) -------------------------------------------------------- +void __fastcall std::wstring::_Rep::_M_set_sharable(int a1) +{ + *(_DWORD *)(a1 + 8) = 0; +} + +//----- (004AA6E0) -------------------------------------------------------- +int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(int this, int a2) +{ + int result; // eax + + if ( (_UNKNOWN *)this != &std::wstring::_Rep::_S_empty_rep_storage ) + { + result = a2; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)this = a2; + *(_WORD *)(this + 2 * a2 + 12) = 0; + } + return result; +} + +//----- (004AA710) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3) +{ + if ( *(int *)(this + 8) < 0 ) + return std::wstring::_Rep::_M_clone(this, a2, 0); + if ( (_UNKNOWN *)this != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(this + 8), 1u); + else + ++*(_DWORD *)(this + 8); + } + return (_DWORD *)(this + 12); +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AA760) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::_Rep::_M_clone(int this, int a2, int a3) +{ + _DWORD *v4; // esi + size_t v5; // eax + + v4 = std::wstring::_Rep::_S_create(a3 + *(_DWORD *)this, *(_DWORD *)(this + 4)); + v5 = *(_DWORD *)this; + if ( *(_DWORD *)this ) + { + if ( v5 == 1 ) + { + *((_WORD *)v4 + 6) = *(_WORD *)(this + 12); + if ( v4 == (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v4 + 3; + goto LABEL_7; + } + wmemcpy((wchar_t *)v4 + 6, (const wchar_t *)(this + 12), *(_DWORD *)this); + v5 = *(_DWORD *)this; + } + if ( v4 == (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v4 + 3; +LABEL_7: + *v4 = v5; + v4[2] = 0; + *((_WORD *)v4 + v5 + 6) = 0; + return v4 + 3; +} + +//----- (004AA7F0) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2) +{ + unsigned int v2; // ebx + struct type_info *v3; // edx + unsigned int v4; // ecx + _DWORD *result; // eax + void (__cdecl *v6)(void *); // [esp+4h] [ebp-18h] + + v2 = a1; + if ( a1 > 0x1FFFFFFE ) + std::__throw_length_error((std::length_error *)"basic_string::_S_create"); + if ( a1 <= a2 ) + goto LABEL_9; + if ( a1 < 2 * a2 ) + v2 = 2 * a2; + v3 = (struct type_info *)(2 * v2 + 14); + v4 = 2 * v2 + 30; + if ( v4 > 0x1000 && v2 > a2 ) + { + v2 += (4096 - (v4 & 0xFFF)) >> 1; + if ( v2 > 0x1FFFFFFE ) + v2 = 536870910; +LABEL_9: + v3 = (struct type_info *)(2 * v2 + 14); + goto LABEL_10; + } + if ( (int)v3 < 0 ) + std::__throw_bad_alloc(); +LABEL_10: + result = operator new(v3, v6); + result[1] = v2; + result[2] = 0; + return result; +} +// 4AA849: variable 'v6' is possibly undefined + +//----- (004AA880) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::back(const wchar_t **a1) +{ + const wchar_t *v1; // eax + int v2; // esi + + v1 = *a1; + v2 = *((_DWORD *)*a1 - 3) - 1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a1); + v1 = *a1; + } + return &v1[v2]; +} + +//----- (004AA8B0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::rend(const wchar_t **this, const wchar_t **a2) +{ + const wchar_t **result; // eax + const wchar_t *v3; // edx + + result = this; + v3 = *a2; + if ( *((int *)*a2 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a2); + v3 = *a2; + result = this; + } + *result = v3; + return result; +} + +//----- (004AA8E0) -------------------------------------------------------- +int __thiscall std::wstring::swap(int *this, int *a2) +{ + int result; // eax + int v3; // edx + + result = *this; + if ( *(int *)(*this - 4) < 0 ) + *(_DWORD *)(result - 4) = 0; + v3 = *a2; + if ( *(int *)(*a2 - 4) < 0 ) + *(_DWORD *)(v3 - 4) = 0; + *this = v3; + *a2 = result; + return result; +} + +//----- (004AA910) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::begin(const wchar_t **a1) +{ + const wchar_t *result; // eax + + result = *a1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a1); + return *a1; + } + return result; +} + +//----- (004AA940) -------------------------------------------------------- +void __fastcall std::wstring::clear(void **a1) +{ + _DWORD *v1; // eax + int v2; // ebx + void **v3; // [esp+1Ch] [ebp-10h] + + v1 = *a1; + if ( *((int *)*a1 - 1) <= 0 ) + { + if ( v1 != (_DWORD *)&unk_51640C ) + { + *(v1 - 1) = 0; + *(v1 - 3) = 0; + *(_WORD *)v1 = 0; + } + } + else if ( v1 == (_DWORD *)&unk_51640C ) + { + *a1 = &unk_51640C; + } + else + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *(v1 - 1); + *(v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + { + v3 = a1; + operator delete(v1 - 3); + a1 = v3; + } + *a1 = &unk_51640C; + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AA9E0) -------------------------------------------------------- +char *__thiscall std::wstring::erase(const wchar_t **this, int a2) +{ + int v3; // esi + const wchar_t *v4; // eax + + v3 = a2 - (_DWORD)*this; + std::wstring::_M_mutate(this, v3 >> 1, 1, 0); + v4 = *this; + *((_DWORD *)v4 - 1) = -1; + return (char *)v4 + v3; +} + +//----- (004AAA20) -------------------------------------------------------- +char *__thiscall std::wstring::erase(const wchar_t **this, char *a2, int a3) +{ + char *result; // eax + int v5; // ebx + const wchar_t *v6; // eax + + result = a2; + if ( (a3 - (int)a2) >> 1 ) + { + v5 = a2 - (char *)*this; + std::wstring::_M_mutate(this, v5 >> 1, (a3 - (int)a2) >> 1, 0); + v6 = *this; + *((_DWORD *)v6 - 1) = -1; + return (char *)v6 + v5; + } + return result; +} + +//----- (004AAA80) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::erase(const wchar_t **this, size_t a2, unsigned int a3) +{ + size_t v4; // ecx + int v5; // edx + + v4 = *((_DWORD *)*this - 3); + v5 = v4 - a2; + if ( v4 - a2 > a3 ) + v5 = a3; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + a2, + v4); + std::wstring::_M_mutate(this, a2, v5, 0); + return this; +} + +//----- (004AAAF0) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::front(const wchar_t **a1) +{ + const wchar_t *result; // eax + + result = *a1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a1); + return *a1; + } + return result; +} + +//----- (004AAB20) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::append(this, String, v3); +} + +//----- (004AAB50) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, wchar_t *a2, size_t N) +{ + const wchar_t *S2; // ebp + wchar_t *v5; // eax + int v6; // edi + char *v7; // edi + wchar_t *S1; // edx + char *v10; // ebp + bool v11; // cc + + S2 = a2; + if ( !N ) + return this; + v5 = (wchar_t *)*this; + v6 = *((_DWORD *)*this - 3); + if ( N > 536870910 - v6 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + v7 = (char *)(N + v6); + if ( (unsigned int)v7 > *((_DWORD *)v5 - 2) || (v11 = *((_DWORD *)v5 - 1) <= 0, v5 = (wchar_t *)*this, !v11) ) + { + if ( v5 <= a2 && a2 <= &v5[*((_DWORD *)v5 - 3)] ) + { + v10 = (char *)((char *)a2 - (char *)v5); + std::wstring::reserve(this, v7); + v5 = (wchar_t *)*this; + S2 = (const wchar_t *)&v10[(_DWORD)*this]; + S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N != 1 ) + goto LABEL_8; + goto LABEL_13; + } + std::wstring::reserve(this, v7); + v5 = (wchar_t *)*this; + } + S1 = &v5[*((_DWORD *)v5 - 3)]; + if ( N != 1 ) + { +LABEL_8: + wmemcpy(S1, S2, N); + v5 = (wchar_t *)*this; + goto LABEL_9; + } +LABEL_13: + *S1 = *S2; +LABEL_9: + if ( v5 != (wchar_t *)&unk_51640C ) + { + *((_DWORD *)v5 - 1) = 0; + *((_DWORD *)v5 - 3) = v7; + v5[(_DWORD)v7] = 0; + } + return this; +} + +//----- (004AAC30) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, const wchar_t **a2) +{ + size_t N; // esi + size_t v4; // ebp + _DWORD *v5; // eax + const wchar_t *S2; // ecx + wchar_t *S1; // edx + + N = *((_DWORD *)*a2 - 3); + if ( !N ) + return this; + v4 = N + *((_DWORD *)*this - 3); + if ( v4 <= *((_DWORD *)*this - 2) && *((int *)*this - 1) <= 0 ) + { + v5 = *this; + S2 = *a2; + S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N == 1 ) + goto LABEL_10; +LABEL_4: + wmemcpy(S1, S2, N); + v5 = *this; + goto LABEL_5; + } + std::wstring::reserve(this, (char *)(N + *((_DWORD *)*this - 3))); + v5 = *this; + S2 = *a2; + S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N != 1 ) + goto LABEL_4; +LABEL_10: + *S1 = *S2; +LABEL_5: + if ( v5 != (_DWORD *)&unk_51640C ) + { + *(v5 - 1) = 0; + *(v5 - 3) = v4; + *((_WORD *)v5 + v4) = 0; + } + return this; +} + +//----- (004AACE0) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, _DWORD *a2, unsigned int a3, size_t a4) +{ + unsigned int v4; // ebx + size_t N; // ebx + char *v7; // edx + const wchar_t *S2; // edi + _DWORD *v9; // eax + wchar_t *S1; // ecx + char *v12; // [esp+1Ch] [ebp-20h] + char *v13; // [esp+1Ch] [ebp-20h] + + v4 = *(_DWORD *)(*a2 - 12); + if ( a3 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::append", + a3, + *(_DWORD *)(*a2 - 12)); + N = v4 - a3; + if ( N > a4 ) + { + N = a4; + if ( !a4 ) + return this; + } + else if ( !N ) + { + return this; + } + v7 = (char *)(N + *((_DWORD *)*this - 3)); + if ( *((_DWORD *)*this - 2) < (unsigned int)v7 || *((int *)*this - 1) > 0 ) + { + v12 = (char *)(N + *((_DWORD *)*this - 3)); + std::wstring::reserve(this, v12); + v7 = v12; + } + S2 = (const wchar_t *)(*a2 + 2 * a3); + v9 = *this; + S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N == 1 ) + { + *S1 = *S2; + } + else + { + v13 = v7; + wmemcpy(S1, S2, N); + v9 = *this; + v7 = v13; + } + if ( v9 != (_DWORD *)&unk_51640C ) + { + *(v9 - 1) = 0; + *(v9 - 3) = v7; + *((_WORD *)v9 + (_DWORD)v7) = 0; + } + return this; +} + +//----- (004AADD0) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, size_t N, wchar_t C) +{ + _DWORD *v4; // edx + int v5; // edi + char *v6; // edi + _DWORD *v7; // eax + wchar_t *S; // edx + + if ( N ) + { + v4 = *this; + v5 = *((_DWORD *)*this - 3); + if ( N > 536870910 - v5 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + v6 = (char *)(N + v5); + if ( (unsigned int)v6 > *(v4 - 2) || (int)*(v4 - 1) > 0 ) + std::wstring::reserve(this, v6); + v7 = *this; + S = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N == 1 ) + { + *S = C; + } + else + { + wmemset(S, C, N); + v7 = *this; + } + if ( v7 != (_DWORD *)&unk_51640C ) + { + *(v7 - 1) = 0; + *(v7 - 3) = v6; + *((_WORD *)v7 + (_DWORD)v6) = 0; + } + } + return this; +} + +//----- (004AAE70) -------------------------------------------------------- +int __thiscall std::wstring::assign(int *this, int *a2) +{ + int v2; // ecx + + std::wstring::swap(this, a2); + return v2; +} +// 4AAE82: variable 'v2' is possibly undefined + +//----- (004AAE90) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::assign(this, String, v3); +} + +//----- (004AAEC0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *S2, size_t N) +{ + const wchar_t *v3; // eax + int v4; // ebx + const wchar_t **result; // eax + wchar_t *v6; // ebx + unsigned int v7; // eax + wchar_t **v8; // [esp+1Ch] [ebp-10h] + wchar_t **v9; // [esp+1Ch] [ebp-10h] + + v3 = *this; + v4 = *((_DWORD *)*this - 3); + if ( N > 0x1FFFFFFE ) + std::__throw_length_error((std::length_error *)"basic_string::assign"); + if ( v3 > S2 || &v3[v4] < S2 ) + return std::wstring::_M_replace_safe(this, 0, v4, S2, N); + if ( *((int *)v3 - 1) > 0 ) + { + v4 = *((_DWORD *)*this - 3); + return std::wstring::_M_replace_safe(this, 0, v4, S2, N); + } + v6 = (wchar_t *)*this; + v7 = S2 - *this; + if ( N <= v7 ) + { + if ( N != 1 ) + { + if ( N ) + { + v9 = (wchar_t **)this; + wmemcpy((wchar_t *)*this, S2, N); + this = (const wchar_t **)v9; + v6 = *v9; + } + goto LABEL_13; + } + } + else + { + if ( !v7 ) + goto LABEL_13; + if ( N != 1 ) + { + if ( N ) + { + v8 = (wchar_t **)this; + wmemmove((wchar_t *)*this, S2, N); + this = (const wchar_t **)v8; + v6 = *v8; + } + goto LABEL_13; + } + } + *v6 = *S2; +LABEL_13: + result = this; + if ( v6 != (wchar_t *)&unk_51640C ) + { + *((_DWORD *)v6 - 1) = 0; + *((_DWORD *)v6 - 3) = N; + v6[N] = 0; + } + return result; +} + +//----- (004AAFC0) -------------------------------------------------------- +void **__thiscall std::wstring::assign(void **this, _DWORD *a2) +{ + _DWORD *v3; // esi + _DWORD *v4; // ecx + volatile signed __int32 *v5; // eax + char *v6; // edx + int v8; // ecx + char v9[13]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = (_DWORD *)*a2; + if ( *this != (void *)*a2 ) + { + v4 = v3 - 3; + if ( (int)*(v3 - 1) < 0 ) + { + v3 = std::wstring::_Rep::_M_clone((int)v4, (int)v9, 0); + } + else if ( v4 != (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(v3 - 1, 1u); + else + ++*(v3 - 1); + } + v5 = (volatile signed __int32 *)*this; + v6 = (char *)*this - 12; + if ( *this == &unk_51640C + || (_CRT_MT + ? (v8 = _InterlockedExchangeAdd(v5 - 1, 0xFFFFFFFF)) + : (v8 = *((_DWORD *)v5 - 1), *((_DWORD *)v5 - 1) = v8 - 1), + v8 > 0) ) + { + *this = v3; + } + else + { + operator delete(v6); + *this = v3; + } + } + return this; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4AAFC0: using guessed type char var_D[13]; + +//----- (004AB080) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // edx + + v4 = *(_DWORD *)(*a2 - 12) - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::assign", + a3, + *(_DWORD *)(*a2 - 12)); + return std::wstring::assign(this, (wchar_t *)(*a2 + 2 * a3), v4); +} + +//----- (004AB0F0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, size_t a2, __int16 a3) +{ + return std::wstring::_M_replace_aux(this, 0, *((_DWORD *)*this - 3), a2, a3); +} + +//----- (004AB130) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *a3, size_t a4) +{ + return std::wstring::insert(this, (a2 - (int)*this) >> 1, a3, a4); +} + +//----- (004AB150) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, size_t a3, __int16 a4) +{ + return std::wstring::_M_replace_aux(this, (a2 - (int)*this) >> 1, 0, a3, a4); +} + +//----- (004AB190) -------------------------------------------------------- +char *__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t a3) +{ + int v4; // esi + const wchar_t *v5; // eax + + v4 = a2 - (_DWORD)*this; + std::wstring::_M_replace_aux(this, v4 >> 1, 0, 1u, a3); + v5 = *this; + *((_DWORD *)v5 - 1) = -1; + return (char *)v5 + v4; +} + +//----- (004AB1E0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *String) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::insert(this, a2, String, v4); +} + +//----- (004AB220) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, wchar_t *a3, size_t N) +{ + const wchar_t *v4; // edx + unsigned int v5; // esi + char *v7; // ebp + _DWORD *v8; // ecx + const wchar_t *S2; // eax + wchar_t *S1; // esi + const wchar_t *v11; // edx + int v12; // edx + int v13; // ebp + size_t v14; // ebx + const wchar_t *v15; // edi + wchar_t *v16; // edx + int v18; // [esp+18h] [ebp-24h] + _DWORD *v19; // [esp+18h] [ebp-24h] + _DWORD *v20; // [esp+18h] [ebp-24h] + int v21; // [esp+18h] [ebp-24h] + _DWORD *v22; // [esp+18h] [ebp-24h] + _DWORD *v23; // [esp+1Ch] [ebp-20h] + + v4 = *this; + v5 = *((_DWORD *)*this - 3); + if ( a2 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a2, + *((_DWORD *)*this - 3)); + if ( N > 536870910 - v5 ) + std::__throw_length_error((std::length_error *)"basic_string::insert"); + if ( v4 > a3 || a3 > &v4[v5] || *((int *)v4 - 1) > 0 ) + return std::wstring::_M_replace_safe(this, a2, 0, a3, N); + v7 = (char *)((char *)a3 - (char *)*this); + std::wstring::_M_mutate(this, a2, 0, N); + v8 = this; + v18 = 2 * a2; + S2 = (const wchar_t *)&v7[*v8]; + S1 = (wchar_t *)(2 * a2 + *v8); + v11 = &S2[N]; + if ( v11 > S1 ) + { + if ( S2 < S1 ) + { + v12 = v18 - (_DWORD)v7; + v13 = (v18 - (int)v7) >> 1; + if ( v13 == 1 ) + { + *S1 = *S2; + } + else if ( v13 ) + { + v23 = v8; + v21 = v12; + wmemcpy(S1, S2, v13); + v8 = v23; + v12 = v21; + } + v14 = N - v13; + v15 = &S1[N]; + v16 = (wchar_t *)((char *)S1 + v12); + if ( N - v13 != 1 ) + { + if ( v14 ) + { + v22 = v8; + wmemcpy(v16, v15, v14); + return (const wchar_t **)v22; + } + return (const wchar_t **)v8; + } + *v16 = *v15; + return (const wchar_t **)v8; + } + else + { + if ( N != 1 ) + { + if ( N ) + { + v20 = v8; + wmemcpy(S1, &S2[N], N); + return (const wchar_t **)v20; + } + return (const wchar_t **)v8; + } + *S1 = *v11; + return (const wchar_t **)v8; + } + } + else + { + if ( N != 1 ) + { + if ( N ) + { + v19 = v8; + wmemcpy(S1, S2, N); + return (const wchar_t **)v19; + } + return (const wchar_t **)v8; + } + *S1 = *S2; + return (const wchar_t **)v8; + } +} + +//----- (004AB3F0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t **a3) +{ + return std::wstring::insert(this, a2, *a3, *((_DWORD *)*a3 - 3)); +} + +//----- (004AB420) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, _DWORD *a3, unsigned int a4, size_t a5) +{ + size_t v5; // edx + + v5 = *(_DWORD *)(*a3 - 12) - a4; + if ( v5 > a5 ) + v5 = a5; + if ( a4 > *(_DWORD *)(*a3 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a4, + *(_DWORD *)(*a3 - 12)); + return std::wstring::insert(this, a2, (wchar_t *)(*a3 + 2 * a4), v5); +} + +//----- (004AB490) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, size_t a3, __int16 a4) +{ + if ( a2 > *((_DWORD *)*this - 3) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a2, + *((_DWORD *)*this - 3)); + return std::wstring::_M_replace_aux(this, a2, 0, a3, a4); +} + +//----- (004AB4F0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, const wchar_t **a2) +{ + _DWORD *result; // eax + const wchar_t *v3; // edx + + result = this; + v3 = *a2; + if ( *((int *)*a2 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a2); + v3 = *a2; + result = this; + } + *result = &v3[*((_DWORD *)v3 - 3)]; + return result; +} + +//----- (004AB530) -------------------------------------------------------- +void __thiscall std::wstring::resize(void **this, size_t a2) +{ + std::wstring::resize(this, a2, 0); +} + +//----- (004AB550) -------------------------------------------------------- +void __thiscall std::wstring::resize(void **this, size_t a2, wchar_t a3) +{ + unsigned int v3; // edx + + v3 = *((_DWORD *)*this - 3); + if ( a2 > 0x1FFFFFFE ) + std::__throw_length_error((std::length_error *)"basic_string::resize"); + if ( a2 > v3 ) + { + std::wstring::append(this, a2 - v3, a3); + } + else if ( a2 < v3 ) + { + std::wstring::_M_mutate((const wchar_t **)this, a2, v3 - a2, 0); + } +} + +//----- (004AB5D0) -------------------------------------------------------- +size_t __cdecl std::wstring::_M_copy(wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t result; // eax + + result = N; + if ( N == 1 ) + { + result = *S2; + *S1 = result; + } + else if ( N ) + { + return (size_t)wmemcpy(S1, S2, N); + } + return result; +} + +//----- (004AB600) -------------------------------------------------------- +int __thiscall std::wstring::_M_data(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004AB610) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::_M_leak(const wchar_t **a1) +{ + const wchar_t *result; // eax + + result = (const wchar_t *)*((_DWORD *)*a1 - 1); + if ( (int)result >= 0 ) + return std::wstring::_M_leak_hard(a1); + return result; +} + +//----- (004AB630) -------------------------------------------------------- +size_t __cdecl std::wstring::_M_move(wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t result; // eax + + result = N; + if ( N == 1 ) + { + result = *S2; + *S1 = result; + } + else if ( N ) + { + return (size_t)wmemmove(S1, S2, N); + } + return result; +} + +//----- (004AB660) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); +} + +//----- (004AB690) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String) +{ + size_t N; // eax + + N = wcslen(String); + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, String, N); +} + +//----- (004AB6E0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); +} + +//----- (004AB710) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t a5) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, a5); +} + +//----- (004AB730) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, *a4, *((_DWORD *)*a4 - 3)); +} + +//----- (004AB770) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); +} + +//----- (004AB7A0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); +} + +//----- (004AB7D0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(2 * N) >> 1); +} + +//----- (004AB800) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, size_t a4, wchar_t a5) +{ + return std::wstring::_M_replace_aux(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, a5); +} + +//----- (004AB830) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String) +{ + size_t N; // eax + + N = wcslen(String); + return std::wstring::replace(this, a2, a3, String, N); +} + +//----- (004AB870) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace( + const wchar_t **this, + unsigned int a2, + unsigned int a3, + wchar_t *a4, + size_t N) +{ + const wchar_t *v5; // edi + unsigned int v6; // eax + int v7; // ebx + const wchar_t **v8; // ecx + unsigned int v10; // edx + const wchar_t *v11; // eax + int v12; // edi + wchar_t *v13; // esi + wchar_t *v14; // edi + int v15; // edx + wchar_t *v18; // [esp+1Ch] [ebp-2Ch] + + v5 = *this; + v6 = *((_DWORD *)*this - 3); + if ( a2 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + *((_DWORD *)v5 - 3)); + v7 = v6 - a2; + if ( v6 - a2 > a3 ) + v7 = a3; + if ( v7 - v6 + 536870910 < N ) + std::__throw_length_error((std::length_error *)"basic_string::replace"); + if ( v5 > a4 || a4 > &v5[v6] || *((int *)v5 - 1) > 0 ) + return std::wstring::_M_replace_safe(this, a2, v7, a4, N); + v10 = (unsigned int)&a4[N]; + v11 = *this; + if ( v10 <= (unsigned int)&(*this)[a2] ) + { + v12 = a4 - v11; +LABEL_13: + std::wstring::_M_mutate(this, a2, v7, N); + v8 = this; + v13 = (wchar_t *)&(*this)[a2]; + if ( N == 1 ) + { + *v13 = (*this)[v12]; + } + else if ( N ) + { + wmemcpy(v13, &(*this)[v12], N); + return this; + } + return v8; + } + if ( a4 >= &v11[a2 + v7] ) + { + v12 = a4 - v11 + N - v7; + goto LABEL_13; + } + v14 = (wchar_t *)std::wstring::_S_construct(a4, v10); + v8 = std::wstring::_M_replace_safe(this, a2, v7, v14, N); + if ( v14 != (wchar_t *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v14 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v14 - 1); + *((_DWORD *)v14 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + { + v18 = (wchar_t *)v8; + operator delete(v14 - 6); + return (const wchar_t **)v18; + } + } + return v8; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004ABA70) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4) +{ + return std::wstring::replace(this, a2, a3, *a4, *((_DWORD *)*a4 - 3)); +} + +//----- (004ABAB0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace( + const wchar_t **this, + int a2, + int a3, + _DWORD *a4, + unsigned int a5, + size_t a6) +{ + size_t N; // edx + + N = *(_DWORD *)(*a4 - 12) - a5; + if ( N > a6 ) + N = a6; + if ( a5 > *(_DWORD *)(*a4 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a5, + *(_DWORD *)(*a4 - 12)); + return std::wstring::replace(this, a2, a3, (wchar_t *)(*a4 + 2 * a5), N); +} + +//----- (004ABB20) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace( + const wchar_t **this, + unsigned int a2, + unsigned int a3, + size_t a4, + wchar_t a5) +{ + unsigned int v5; // edx + + v5 = *((_DWORD *)*this - 3) - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > *((_DWORD *)*this - 3) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + *((_DWORD *)*this - 3)); + return std::wstring::_M_replace_aux(this, a2, v5, a4, a5); +} + +//----- (004ABB90) -------------------------------------------------------- +char *__thiscall std::wstring::reserve(void **this, char *a2) +{ + int *v3; // ecx + char *result; // eax + char *v5; // edx + int v6; // ecx + int *v7; // edx + char *v8; // ecx + int v9; // esi + char *v10; // [esp+1Ch] [ebp-20h] + char v11[13]; // [esp+2Fh] [ebp-Dh] BYREF + + v3 = (int *)*this; + result = a2; + if ( a2 == (char *)*(v3 - 2) ) + { + if ( *(v3 - 1) <= 0 ) + return result; + v3 = (int *)*this; + } + v5 = (char *)*(v3 - 3); + v6 = (int)(v3 - 3); + if ( a2 < v5 ) + result = v5; + result = (char *)std::wstring::_Rep::_M_clone(v6, (int)v11, result - v5); + v7 = (int *)*this; + v8 = (char *)*this - 12; + if ( *this != &unk_51640C ) + { + if ( _CRT_MT ) + { + v9 = _InterlockedExchangeAdd(v7 - 1, 0xFFFFFFFF); + } + else + { + v9 = *(v7 - 1); + *(v7 - 1) = v9 - 1; + } + if ( v9 <= 0 ) + { + v10 = result; + operator delete(v8); + result = v10; + } + } + *this = result; + return result; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4ABB90: using guessed type char var_D[13]; + +//----- (004ABC40) -------------------------------------------------------- +void __fastcall std::wstring::pop_back(const wchar_t **a1) +{ + unsigned int v1; // eax + + v1 = *((_DWORD *)*a1 - 3); + if ( v1 - 1 > v1 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + 0xFFFFFFFF, + 0); + std::wstring::_M_mutate(a1, v1 - 1, 1, 0); +} + +//----- (004ABCA0) -------------------------------------------------------- +wchar_t *__cdecl std::wstring::_M_assign(wchar_t *a1, size_t C, size_t N) +{ + wchar_t *result; // eax + + result = (wchar_t *)C; + if ( C == 1 ) + { + *a1 = N; + } + else if ( C ) + { + return wmemset(a1, N, C); + } + return result; +} +// 4ABCA0: using guessed type size_t C; + +//----- (004ABCE0) -------------------------------------------------------- +void __thiscall std::wstring::_M_mutate(const wchar_t **this, size_t a2, int a3, int a4) +{ + int v5; // esi + unsigned int v6; // edi + size_t N; // esi + const wchar_t *v8; // eax + size_t v9; // edx + const wchar_t *v10; // edi + const wchar_t *v11; // ebp + const wchar_t *v12; // eax + const wchar_t *S2; // ecx + const wchar_t *v14; // eax + int v15; // ecx + unsigned int v16; // [esp+18h] [ebp-34h] + + v5 = *((_DWORD *)*this - 3); + v6 = *((_DWORD *)*this - 2); + v16 = a4 - a3 + v5; + N = v5 - (a3 + a2); + if ( v16 > v6 ) + { +LABEL_4: + v8 = (const wchar_t *)std::wstring::_Rep::_S_create(v16, v6); + v9 = a3 + a2; + v10 = v8; + if ( a2 ) + { + v12 = *this; + v11 = v10 + 6; + if ( a2 == 1 ) + { + *((_WORD *)v10 + 6) = *v12; + } + else + { + wmemcpy((wchar_t *)v10 + 6, *this, a2); + v12 = *this; + v9 = a3 + a2; + } + } + else + { + v11 = v8 + 6; + v12 = *this; + } + if ( N ) + { + S2 = &v12[v9]; + if ( N == 1 ) + { + v10[a2 + 6 + a4] = *S2; + } + else + { + wmemcpy((wchar_t *)&v10[a2 + 6 + a4], S2, N); + v12 = *this; + } + } + if ( v12 != (const wchar_t *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v12 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v12 - 1); + *((_DWORD *)v12 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + operator delete((void *)(v12 - 6)); + } + *this = v11; +LABEL_11: + if ( v10 == (const wchar_t *)&std::wstring::_Rep::_S_empty_rep_storage ) + return; +LABEL_20: + *((_DWORD *)v11 - 1) = 0; + *((_DWORD *)v11 - 3) = v16; + v11[v16] = 0; + return; + } + if ( *((int *)*this - 1) > 0 ) + { + v6 = *((_DWORD *)*this - 2); + goto LABEL_4; + } + v11 = *this; + if ( N && a4 != a3 ) + { + v14 = &v11[a3 + a2]; + if ( N == 1 ) + { + v10 = v11 - 6; + v11[a2 + a4] = *v14; + goto LABEL_11; + } + wmemmove((wchar_t *)&v11[a2 + a4], v14, N); + v11 = *this; + } + if ( v11 - 6 != (const wchar_t *)&std::wstring::_Rep::_S_empty_rep_storage ) + goto LABEL_20; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004ABEB0) -------------------------------------------------------- +_WORD *__thiscall std::wstring::push_back(void **this, __int16 a2) +{ + int v3; // edx + int v4; // esi + _WORD *result; // eax + + v3 = *((_DWORD *)*this - 3); + v4 = v3 + 1; + if ( (unsigned int)(v3 + 1) > *((_DWORD *)*this - 2) || *((int *)*this - 1) > 0 ) + std::wstring::reserve(this, (char *)(v3 + 1)); + result = *this; + result[*((_DWORD *)*this - 3)] = a2; + if ( result != (_WORD *)&unk_51640C ) + { + *((_DWORD *)result - 1) = 0; + *((_DWORD *)result - 3) = v4; + result[v4] = 0; + } + return result; +} + +//----- (004ABF20) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_51640C; + return result; +} + +//----- (004ABF40) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_51640C; + return result; +} + +//----- (004ABF60) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) +{ + int v3; // eax + _DWORD *result; // eax + + v3 = -2; + if ( String ) + v3 = (int)&String[wcslen(String)]; + result = std::wstring::_S_construct(String, v3); + *this = result; + return result; +} + +//----- (004ABFB0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004ABFF0) -------------------------------------------------------- +void __thiscall std::wstring::basic_string(_DWORD *this, int a2) +{ + *this = &unk_51640C; +} + +//----- (004AC000) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + void *v4; // ecx + char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF + + result = (_DWORD *)*a2; + v4 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + result = std::wstring::_Rep::_M_clone((int)v4, (int)v5, 0); + *this = result; + } + else + { + if ( v4 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4AC000: using guessed type char var_D[13]; + +//----- (004AC080) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + void *v5; // ecx + + result = (_DWORD *)*a2; + v5 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + result = std::wstring::_Rep::_M_clone((int)v5, a3, 0); + *this = result; + } + else + { + if ( v5 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AC100) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) +{ + unsigned int v5; // edx + _DWORD *result; // eax + + v5 = *(_DWORD *)(*a2 - 12); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(*a2 + 2 * a3), *a2 + 2 * v5); + *this = result; + return result; +} + +//----- (004AC160) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) +{ + int v5; // ecx + unsigned int v6; // eax + int v7; // eax + _DWORD *result; // eax + + v5 = *a2; + v6 = *(_DWORD *)(*a2 - 12) - a3; + if ( v6 > a4 ) + v6 = a4; + v7 = v5 + 2 * (a3 + v6); + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(v5 + 2 * a3), v7); + *this = result; + return result; +} + +//----- (004AC1D0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) +{ + int v6; // ecx + unsigned int v7; // eax + int v8; // eax + _DWORD *result; // eax + + v6 = *a2; + v7 = *(_DWORD *)(*a2 - 12) - a3; + if ( v7 > a4 ) + v7 = a4; + v8 = v6 + 2 * (a3 + v7); + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(v6 + 2 * a3), v8); + *this = result; + return result; +} + +//----- (004AC240) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004AC280) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4) +{ + _DWORD *result; // eax + + result = &unk_51640C; + if ( a2 ) + { + result = std::wstring::_S_construct(a2, a3); + *this = result; + } + else + { + *this = &unk_51640C; + } + return result; +} + +//----- (004AC2C0) -------------------------------------------------------- +void __fastcall std::wstring::basic_string(_DWORD *a1) +{ + *a1 = &unk_51640C; +} + +//----- (004AC2D0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( + wchar_t **this, + wchar_t *a2, + wchar_t *a3, + int a4) +{ + wchar_t *result; // eax + + result = std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); + *this = result; + return result; +} + +//----- (004AC300) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (004AC330) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (004AC360) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_51640C; + return result; +} + +//----- (004AC380) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_51640C; + return result; +} + +//----- (004AC3A0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) +{ + int v3; // eax + _DWORD *result; // eax + + v3 = -2; + if ( String ) + v3 = (int)&String[wcslen(String)]; + result = std::wstring::_S_construct(String, v3); + *this = result; + return result; +} + +//----- (004AC3F0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004AC430) -------------------------------------------------------- +void __thiscall std::wstring::basic_string(_DWORD *this, int a2) +{ + *this = &unk_51640C; +} + +//----- (004AC440) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + void *v4; // ecx + char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF + + result = (_DWORD *)*a2; + v4 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + result = std::wstring::_Rep::_M_clone((int)v4, (int)v5, 0); + *this = result; + } + else + { + if ( v4 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4AC440: using guessed type char var_D[13]; + +//----- (004AC4C0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + void *v5; // ecx + + result = (_DWORD *)*a2; + v5 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + result = std::wstring::_Rep::_M_clone((int)v5, a3, 0); + *this = result; + } + else + { + if ( v5 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AC540) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) +{ + unsigned int v5; // edx + _DWORD *result; // eax + + v5 = *(_DWORD *)(*a2 - 12); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(*a2 + 2 * a3), *a2 + 2 * v5); + *this = result; + return result; +} + +//----- (004AC5A0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) +{ + int v5; // ecx + unsigned int v6; // eax + int v7; // eax + _DWORD *result; // eax + + v5 = *a2; + v6 = *(_DWORD *)(*a2 - 12) - a3; + if ( v6 > a4 ) + v6 = a4; + v7 = v5 + 2 * (a3 + v6); + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(v5 + 2 * a3), v7); + *this = result; + return result; +} + +//----- (004AC610) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) +{ + int v6; // ecx + unsigned int v7; // eax + int v8; // eax + _DWORD *result; // eax + + v6 = *a2; + v7 = *(_DWORD *)(*a2 - 12) - a3; + if ( v7 > a4 ) + v7 = a4; + v8 = v6 + 2 * (a3 + v7); + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(v6 + 2 * a3), v8); + *this = result; + return result; +} + +//----- (004AC680) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004AC6C0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4) +{ + _DWORD *result; // eax + + result = &unk_51640C; + if ( a2 ) + { + result = std::wstring::_S_construct(a2, a3); + *this = result; + } + else + { + *this = &unk_51640C; + } + return result; +} + +//----- (004AC700) -------------------------------------------------------- +void __fastcall std::wstring::basic_string(_DWORD *a1) +{ + *a1 = &unk_51640C; +} + +//----- (004AC710) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( + wchar_t **this, + wchar_t *a2, + wchar_t *a3, + int a4) +{ + wchar_t *result; // eax + + result = std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); + *this = result; + return result; +} + +//----- (004AC740) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (004AC770) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (004AC7A0) -------------------------------------------------------- +void __fastcall std::wstring::~wstring(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // ecx + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)(v1 - 3)); + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AC800) -------------------------------------------------------- +void __fastcall std::wstring::~wstring(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // ecx + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)(v1 - 3)); + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004AC860) -------------------------------------------------------- +int __thiscall std::wstring::operator=(int *this, int *a2) +{ + int v2; // ecx + + std::wstring::swap(this, a2); + return v2; +} +// 4AC872: variable 'v2' is possibly undefined + +//----- (004AC880) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::assign(this, String, v3); +} + +//----- (004AC8C0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *a2, size_t a3) +{ + std::wstring::assign(this, a2, a3); + return this; +} + +//----- (004AC8F0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t a2) +{ + std::wstring::_M_replace_aux(this, 0, *((_DWORD *)*this - 3), 1u, a2); + return this; +} + +//----- (004AC930) -------------------------------------------------------- +const wchar_t *__thiscall std::wstring::operator[](const wchar_t **this, int a2) +{ + const wchar_t *v2; // eax + + v2 = *this; + if ( *((int *)*this - 1) >= 0 ) + { + std::wstring::_M_leak_hard(this); + v2 = *this; + } + return &v2[a2]; +} + +//----- (004AC960) -------------------------------------------------------- +void **__thiscall std::wstring::operator+=(void **this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::append(this, String, v3); +} + +//----- (004AC9B0) -------------------------------------------------------- +void **__thiscall std::wstring::operator+=(void **this, __int16 a2) +{ + int v3; // edx + int v4; // esi + _WORD *v5; // eax + + v3 = *((_DWORD *)*this - 3); + v4 = v3 + 1; + if ( (unsigned int)(v3 + 1) > *((_DWORD *)*this - 2) || *((int *)*this - 1) > 0 ) + std::wstring::reserve(this, (char *)(v3 + 1)); + v5 = *this; + v5[*((_DWORD *)*this - 3)] = a2; + if ( v5 != (_WORD *)&unk_51640C ) + { + *((_DWORD *)v5 - 1) = 0; + *((_DWORD *)v5 - 3) = v4; + v5[v4] = 0; + } + return this; +} + +//----- (004ACA20) -------------------------------------------------------- +int __userpurge std::iostream::swap@(_DWORD *a1@, std::iostream *this, std::iostream *a3) +{ + int v4; // esi + std::ios_base *v5; // ebx + int v6; // eax + char v7; // dl + char v8; // dl + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v4 = (int)a1 + *(_DWORD *)(*a1 - 12); + v5 = (std::iostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); + std::ios_base::_M_swap(v4, v5, v10); + std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); + std::ios::_M_cache_locale(v5, (int)v5 + 108); + v6 = *(_DWORD *)(v4 + 112); + *(_DWORD *)(v4 + 112) = *((_DWORD *)v5 + 28); + *((_DWORD *)v5 + 28) = v6; + v7 = *(_BYTE *)(v4 + 116); + *(_BYTE *)(v4 + 116) = *((_BYTE *)v5 + 116); + LOBYTE(v6) = *((_BYTE *)v5 + 117); + *((_BYTE *)v5 + 116) = v7; + v8 = *(_BYTE *)(v4 + 117); + *(_BYTE *)(v4 + 117) = v6; + result = a1[1]; + *((_BYTE *)v5 + 117) = v8; + a1[1] = *((_DWORD *)this + 1); + *((_DWORD *)this + 1) = result; + return result; +} +// 4ACA41: variable 'v10' is possibly undefined + +//----- (004ACAB0) -------------------------------------------------------- +int __thiscall std::iostream::iostream(_DWORD *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // edi + std::ios_base *v6; // edi + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + v10 = this + 3; + std::ios_base::ios_base(this + 3); + *this = &unk_5339C0; + *((_WORD *)this + 64) = 0; + v3 = a2[1]; + this[31] = 0; + this[1] = v3; + v4 = *a2; + this[33] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[34] = 0; + this[35] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[3] = &unk_5339D4; + this[36] = 0; + std::ios_base::_M_move((int)v10, v6, v9); + std::ios::_M_cache_locale(v10, (int)(this + 30)); + this[33] = 0; + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[31] = v7; + result = *((unsigned __int16 *)v6 + 58); + *((_WORD *)this + 64) = result; + a2[1] = 0; + *this = &off_538444; + this[3] = off_53846C; + this[2] = off_538458; + return result; +} +// 4ACB23: variable 'v9' is possibly undefined +// 538444: using guessed type void (__cdecl *off_538444)(std::iostream *__hidden this); +// 538458: using guessed type void (__cdecl *off_538458[2])(std::iostream *__hidden this); +// 53846C: using guessed type void (__cdecl *off_53846C[2])(std::iostream *__hidden this); + +//----- (004ACBA0) -------------------------------------------------------- +BOOL __thiscall std::iostream::iostream(_DWORD *this, int a2) +{ + int v2; // esi + BOOL result; // eax + + v2 = (int)(this + 3); + std::ios_base::ios_base(this + 3); + this[31] = 0; + *((_WORD *)this + 64) = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + *this = &unk_5339C0; + this[3] = &unk_5339D4; + this[1] = 0; + std::ios::init(v2, a2); + this[2] = &unk_5339E8; + this[3] = &unk_5339FC; + result = std::ios::init(v2, a2); + *this = &off_538444; + this[3] = off_53846C; + this[2] = off_538458; + return result; +} +// 538444: using guessed type void (__cdecl *off_538444)(std::iostream *__hidden this); +// 538458: using guessed type void (__cdecl *off_538458[2])(std::iostream *__hidden this); +// 53846C: using guessed type void (__cdecl *off_53846C[2])(std::iostream *__hidden this); + +//----- (004ACC80) -------------------------------------------------------- +BOOL __fastcall std::iostream::iostream(int a1) +{ + int v1; // esi + BOOL result; // eax + + v1 = a1 + 12; + std::ios_base::ios_base((_DWORD *)(a1 + 12)); + *(_DWORD *)(a1 + 124) = 0; + *(_WORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)(a1 + 144) = 0; + *(_DWORD *)a1 = &unk_5339C0; + *(_DWORD *)(a1 + 12) = &unk_5339D4; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_5339E8; + *(_DWORD *)(a1 + 12) = &unk_5339FC; + result = std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_538444; + *(_DWORD *)(a1 + 12) = off_53846C; + *(_DWORD *)(a1 + 8) = off_538458; + return result; +} +// 538444: using guessed type void (__cdecl *off_538444)(std::iostream *__hidden this); +// 538458: using guessed type void (__cdecl *off_538458[2])(std::iostream *__hidden this); +// 53846C: using guessed type void (__cdecl *off_53846C[2])(std::iostream *__hidden this); + +//----- (004ACD60) -------------------------------------------------------- +int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edi + int v6; // edx + __int16 v7; // ax + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + int result; // eax + std::ios_base *v13; // [esp+4h] [ebp-38h] + std::ios_base *v14; // [esp+1Ch] [ebp-20h] + + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = a3[1]; + v5 = (int)this + *(_DWORD *)(v4 - 12); + v14 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v5, v14, v13); + std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); + *(_DWORD *)(v5 + 120) = 0; + v6 = *((_DWORD *)v14 + 28); + *((_DWORD *)v14 + 28) = 0; + v7 = *((_WORD *)v14 + 58); + *(_DWORD *)(v5 + 112) = v6; + *(_WORD *)(v5 + 116) = v7; + v8 = a2[3]; + a3[1] = 0; + v9 = a2[4]; + this[2] = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v9; + v10 = *a2; + v11 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + result = a2[6]; + this[2] = result; + return result; +} +// 4ACD9B: variable 'v13' is possibly undefined + +//----- (004ACE10) -------------------------------------------------------- +int __thiscall std::iostream::iostream(int *this, int *a2, int a3) +{ + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + int result; // eax + + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v4 - 12), a3); + v5 = a2[3]; + this[2] = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); + *v6 = a2[4]; + std::ios::init((int)v6, a3); + v7 = *a2; + v8 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + result = a2[6]; + this[2] = result; + return result; +} + +//----- (004ACEA0) -------------------------------------------------------- +int __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int result; // eax + + v3 = *((_DWORD *)this + 1); + *ecx0 = v3; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12)) = *((_DWORD *)this + 2); + ecx0[1] = 0; + std::ios::init((int)ecx0 + *(_DWORD *)(v3 - 12), 0); + v4 = *((_DWORD *)this + 3); + ecx0[2] = v4; + v5 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v4 - 12) + 8); + *v5 = *((_DWORD *)this + 4); + std::ios::init((int)v5, 0); + v6 = *(_DWORD *)this; + v7 = *((_DWORD *)this + 5); + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v6 - 12)) = v7; + result = *((_DWORD *)this + 6); + ecx0[2] = result; + return result; +} + +//----- (004ACF30) -------------------------------------------------------- +void __fastcall std::iostream::~iostream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 3; + *(v2 - 1) = &unk_5339E8; + *(v2 - 3) = &unk_5339C0; + *(v2 - 2) = 0; + *v2 = &off_539474; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004ACF70) -------------------------------------------------------- +void __fastcall std::iostream::~iostream(int a1) +{ + _DWORD *v1; // ecx + + *(_DWORD *)(a1 + 8) = &unk_5339E8; + v1 = (_DWORD *)(a1 + 12); + *(v1 - 3) = &unk_5339C0; + *(v1 - 2) = 0; + *v1 = &off_539474; + std::ios_base::~ios_base((int)v1); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004ACFA0) -------------------------------------------------------- +void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this) +{ + int v2; // edx + int v3; // edx + int v4; // edx + + v2 = *(_DWORD *)this; + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 5); + ecx0[2] = *((_DWORD *)this + 6); + v3 = *((_DWORD *)this + 3); + ecx0[2] = v3; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12) + 8) = *((_DWORD *)this + 4); + v4 = *((_DWORD *)this + 1); + *ecx0 = v4; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v4 - 12)) = *((_DWORD *)this + 2); + ecx0[1] = 0; +} + +//----- (004ACFF0) -------------------------------------------------------- +_DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return this; +} +// 4AD011: variable 'v10' is possibly undefined + +//----- (004AD080) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 48))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4AD099: variable 'v7' is possibly undefined +// 4AD080: using guessed type int var_1C[7]; + +//----- (004AD1B0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 8))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4AD1C9: variable 'v7' is possibly undefined +// 4AD1B0: using guessed type int var_1C[7]; + +//----- (004AD2E0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 40))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4AD2F9: variable 'v7' is possibly undefined +// 4AD2E0: using guessed type int var_1C[7]; + +//----- (004AD410) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 44))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4AD429: variable 'v7' is possibly undefined +// 4AD410: using guessed type int var_1C[7]; + +//----- (004AD540) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 36))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4AD559: variable 'v7' is possibly undefined +// 4AD540: using guessed type int var_1C[7]; + +//----- (004AD670) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 20))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4AD689: variable 'v7' is possibly undefined +// 4AD670: using guessed type int var_1C[7]; + +//----- (004AD7A0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4AD7B9: variable 'v7' is possibly undefined +// 4AD7A0: using guessed type int var_1C[7]; + +//----- (004AD8D0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 24))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4AD8E9: variable 'v7' is possibly undefined +// 4AD8D0: using guessed type int var_1C[7]; + +//----- (004ADA00) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 16))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4ADA19: variable 'v7' is possibly undefined +// 4ADA00: using guessed type int var_1C[7]; + +//----- (004ADB30) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 28))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4ADB49: variable 'v7' is possibly undefined +// 4ADB30: using guessed type int var_1C[7]; + +//----- (004ADC60) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 32))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4ADC79: variable 'v7' is possibly undefined +// 4ADC60: using guessed type int var_1C[7]; + +//----- (004ADD90) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::get@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + int a4) +{ + int v4; // eax + _BYTE *v5; // esi + unsigned __int8 v7; // al + int (__stdcall *v9)(unsigned __int8); // edx + char v10; // [esp+Ch] [ebp-10h] + + v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v5 = *(_BYTE **)((char *)a1 + v4 + 124); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v5[28] ) + { + v7 = v5[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); + v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); + v7 = 10; + if ( v9 != std::ctype::do_widen ) + v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); + } + return std::istream::get(a1, this, a3, v7, v10); +} +// 4ADDC3: variable 'v10' is possibly undefined + +//----- (004ADE10) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::get@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + unsigned __int8 a4, + char a5) +{ + _DWORD *v7; // esi + unsigned __int8 *v8; // eax + int v9; // eax + unsigned __int8 *v10; // eax + int v11; // edx + unsigned int v12; // eax + unsigned int v13; // edx + bool v15; // [esp+8h] [ebp-34h] + char v16[29]; // [esp+1Fh] [ebp-1Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v16, a1, (std::istream *)1, v15); + if ( !v16[0] ) + goto LABEL_19; + v7 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v8 = (unsigned __int8 *)v7[2]; + if ( v7[3] <= (unsigned int)v8 ) + { + v9 = (*(int (__fastcall **)(_DWORD))(*v7 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); + v11 = *((_DWORD *)a1 + 1); + if ( (int)a3 > v11 + 1 ) + { + if ( v9 != -1 ) + goto LABEL_4; + } + else + { +LABEL_18: + if ( v9 != -1 ) + goto LABEL_19; + } + if ( (int)a3 <= 0 ) + { + if ( v11 ) + goto LABEL_35; + } + else + { + *(_BYTE *)this = 0; + if ( *((_DWORD *)a1 + 1) ) + { +LABEL_35: + v11 = 2; + goto LABEL_15; + } + } + v11 = 6; + goto LABEL_15; + } + v9 = *v8; + if ( (int)a3 <= *((_DWORD *)a1 + 1) + 1 ) + goto LABEL_19; +LABEL_4: + if ( a4 != v9 ) + { + while ( 1 ) + { + while ( 1 ) + { + *(_BYTE *)this = v9; + v12 = v7[2]; + this = (std::istream *)((char *)this + 1); + v13 = v7[3]; + ++*((_DWORD *)a1 + 1); + if ( v12 < v13 ) + { + v10 = (unsigned __int8 *)(v12 + 1); + v7[2] = v10; + } + else + { + if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) + goto LABEL_12; + v10 = (unsigned __int8 *)v7[2]; + v13 = v7[3]; + } + if ( (unsigned int)v10 >= v13 ) + break; + v11 = *((_DWORD *)a1 + 1); + v9 = *v10; + if ( (int)a3 <= v11 + 1 ) + goto LABEL_19; + if ( a4 == v9 ) + { +LABEL_26: + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + v11 = *((_DWORD *)a1 + 1); + } + if ( !v11 ) + { +LABEL_14: + v11 |= 4u; + goto LABEL_15; + } + return a1; + } + } + v9 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + v11 = *((_DWORD *)a1 + 1); + if ( v11 + 1 >= (int)a3 ) + goto LABEL_18; + if ( v9 == -1 ) + break; + if ( a4 == v9 ) + goto LABEL_26; + } +LABEL_12: + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + v11 = 2; + if ( *((_DWORD *)a1 + 1) ) + goto LABEL_15; + goto LABEL_14; + } + if ( !*((_DWORD *)a1 + 1) ) + { + v11 = 6; + goto LABEL_15; + } + goto LABEL_35; + } +LABEL_19: + if ( (int)a3 > 0 ) + *(_BYTE *)this = 0; + v11 = 4; + if ( *((_DWORD *)a1 + 1) ) + return a1; +LABEL_15: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v11); + return a1; +} +// 4ADE37: variable 'v15' is possibly undefined +// 4ADE10: using guessed type char var_1D[29]; + +//----- (004AE080) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2) +{ + int v2; // eax + _BYTE *v3; // esi + unsigned __int8 v5; // al + int (__stdcall *v7)(unsigned __int8); // edx + + v2 = *(_DWORD *)(*(_DWORD *)this - 12); + v3 = *(_BYTE **)((char *)this + v2 + 124); + if ( !v3 ) + std::__throw_bad_cast(); + if ( v3[28] ) + { + v5 = v3[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)this + v2 + 124)); + v7 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); + v5 = 10; + if ( v7 != std::ctype::do_widen ) + v5 = ((int (__thiscall *)(_BYTE *, int))v7)(v3, 10); + } + return std::istream::get(this, a2, v5); +} + +//----- (004AE100) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3) +{ + _DWORD *v4; // edi + unsigned __int8 *v5; // eax + int v6; // eax + int v7; // edx + _BYTE *v8; // eax + unsigned int v9; // eax + unsigned int v10; // edx + unsigned __int8 *v11; // eax + int v12; // eax + bool v14; // [esp+8h] [ebp-40h] + char v15[25]; // [esp+2Fh] [ebp-19h] BYREF + + *((_DWORD *)this + 1) = 0; + std::istream::sentry::sentry(v15, this, (std::istream *)1, v14); + if ( v15[0] ) + { + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 120); + v5 = (unsigned __int8 *)v4[2]; + if ( v4[3] <= (unsigned int)v5 ) + { +LABEL_14: + v6 = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); + v7 = (unsigned __int8)v6; + if ( v6 == -1 ) + { +LABEL_15: + v12 = *((_DWORD *)this + 1) == 0 ? 6 : 2; + goto LABEL_12; + } + } + else + { + v6 = *v5; + v7 = v6; + } + if ( a3 != v6 ) + { + do + { + v8 = (_BYTE *)a2[5]; + if ( (unsigned int)v8 >= a2[6] ) + { + if ( (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v7) == -1 ) + break; + v9 = v4[2]; + v10 = v4[3]; + ++*((_DWORD *)this + 1); + if ( v9 >= v10 ) + { +LABEL_18: + if ( (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4) == -1 ) + goto LABEL_15; + v11 = (unsigned __int8 *)v4[2]; + v10 = v4[3]; + goto LABEL_8; + } + } + else + { + *v8 = v7; + ++a2[5]; + v9 = v4[2]; + v10 = v4[3]; + ++*((_DWORD *)this + 1); + if ( v9 >= v10 ) + goto LABEL_18; + } + v11 = (unsigned __int8 *)(v9 + 1); + v4[2] = v11; +LABEL_8: + if ( (unsigned int)v11 >= v10 ) + goto LABEL_14; + v7 = *v11; + } + while ( a3 != (unsigned __int8)v7 ); + } + } + if ( !*((_DWORD *)this + 1) ) + { + v12 = 4; +LABEL_12: + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v12); + } + return this; +} +// 4AE128: variable 'v14' is possibly undefined +// 4AE100: using guessed type char var_19[25]; + +//----- (004AE290) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3) +{ + _DWORD *v4; // ecx + char *v5; // eax + char v6; // dl + int v7; // eax + int v9; // eax + bool v10; // [esp+8h] [ebp-24h] + char v11[13]; // [esp+1Fh] [ebp-Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v11, a1, (std::istream *)1, v10); + if ( v11[0] ) + { + v4 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v5 = (char *)v4[2]; + if ( v4[3] <= (unsigned int)v5 ) + { + v9 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); + if ( v9 == -1 ) + { + v7 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; + goto LABEL_7; + } + v6 = v9; + } + else + { + v6 = *v5; + v4[2] = v5 + 1; + } + *((_DWORD *)a1 + 1) = 1; + *(_BYTE *)this = v6; + } + if ( !*((_DWORD *)a1 + 1) ) + { + v7 = 4; +LABEL_7: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v7); + } + return a1; +} +// 4AE2AC: variable 'v10' is possibly undefined +// 4AE290: using guessed type char var_D[13]; + +//----- (004AE3A0) -------------------------------------------------------- +int __fastcall std::istream::get(std::istream::sentry *a1) +{ + _DWORD *v2; // ecx + unsigned __int8 *v3; // edx + int result; // eax + int v5; // eax + bool v6; // [esp+8h] [ebp-24h] + char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v7, a1, (std::istream *)1, v6); + if ( v7[0] ) + { + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v3 = (unsigned __int8 *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + { + result = *v3; + v2[2] = v3 + 1; +LABEL_4: + *((_DWORD *)a1 + 1) = 1; + return result; + } + result = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + if ( result != -1 ) + goto LABEL_4; + v5 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; + } + else + { + if ( *((_DWORD *)a1 + 1) ) + return -1; + v5 = 4; + } + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v5); + return -1; +} +// 4AE3BC: variable 'v6' is possibly undefined +// 4AE3A0: using guessed type char var_D[13]; + +//----- (004AE4B0) -------------------------------------------------------- +int __fastcall std::istream::peek(std::istream::sentry *a1) +{ + _DWORD *v2; // ecx + unsigned __int8 *v3; // eax + int result; // eax + bool v5; // [esp+8h] [ebp-34h] + char v6[13]; // [esp+2Fh] [ebp-Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v6, a1, (std::istream *)1, v5); + if ( !v6[0] ) + return -1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v3 = (unsigned __int8 *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + return *v3; + result = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); + if ( result == -1 ) + { + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return -1; + } + return result; +} +// 4AE4CC: variable 'v5' is possibly undefined +// 4AE4B0: using guessed type char var_D[13]; + +//----- (004AE5A0) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::read@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + int a4) +{ + char *v5; // eax + bool v7; // [esp+8h] [ebp-20h] + char v8[5]; // [esp+1Fh] [ebp-9h] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v8, a1, (std::istream *)1, v7); + if ( !v8[0] ) + return a1; + v5 = (char *)(*(int (__stdcall **)(std::istream *, char *))(**(_DWORD **)((char *)a1 + + *(_DWORD *)(*(_DWORD *)a1 - 12) + + 120) + + 32))( + this, + a3); + *((_DWORD *)a1 + 1) = v5; + if ( a3 == v5 ) + return a1; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); + return a1; +} +// 4AE5BE: variable 'v7' is possibly undefined +// 4AE5A0: using guessed type char var_9[5]; + +//----- (004AE690) -------------------------------------------------------- +int __userpurge std::istream::swap@(_DWORD *a1@, std::istream *this, std::istream *a3) +{ + int v4; // esi + std::ios_base *v5; // ebx + int v6; // eax + char v7; // dl + char v8; // dl + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v4 = (int)a1 + *(_DWORD *)(*a1 - 12); + v5 = (std::istream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); + std::ios_base::_M_swap(v4, v5, v10); + std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); + std::ios::_M_cache_locale(v5, (int)v5 + 108); + v6 = *(_DWORD *)(v4 + 112); + *(_DWORD *)(v4 + 112) = *((_DWORD *)v5 + 28); + *((_DWORD *)v5 + 28) = v6; + v7 = *(_BYTE *)(v4 + 116); + *(_BYTE *)(v4 + 116) = *((_BYTE *)v5 + 116); + LOBYTE(v6) = *((_BYTE *)v5 + 117); + *((_BYTE *)v5 + 116) = v7; + v8 = *(_BYTE *)(v4 + 117); + *(_BYTE *)(v4 + 117) = v6; + result = a1[1]; + *((_BYTE *)v5 + 117) = v8; + a1[1] = *((_DWORD *)this + 1); + *((_DWORD *)this + 1) = result; + return result; +} +// 4AE6B1: variable 'v10' is possibly undefined + +//----- (004AE720) -------------------------------------------------------- +int __fastcall std::istream::sync(std::istream::sentry *a1) +{ + int v2; // ecx + bool v4; // [esp+8h] [ebp-34h] + char v5[13]; // [esp+2Fh] [ebp-Dh] BYREF + + std::istream::sentry::sentry(v5, a1, (std::istream *)1, v4); + if ( !v5[0] ) + return -1; + v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + if ( !v2 ) + return -1; + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) + return 0; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + return -1; +} +// 4AE735: variable 'v4' is possibly undefined +// 4AE720: using guessed type char var_D[13]; + +//----- (004AE800) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5) +{ + char *v6; // edi + int *v7; // eax + int v8; // edi + bool v10; // [esp+8h] [ebp-70h] + char v11; // [esp+3Fh] [ebp-39h] BYREF + int v12[14]; // [esp+40h] [ebp-38h] BYREF + + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); + std::istream::sentry::sentry(&v11, this, (std::istream *)1, v10); + if ( v11 ) + { + v6 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (v6[20] & 5) == 0 ) + { + v7 = (int *)*((_DWORD *)v6 + 30); + v12[7] = a5; + v8 = *v7; + v12[4] = a2; + v12[6] = a4; + v12[5] = a3; + (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v12, v7, a2, a3, a4, a5, 8); + if ( (v12[0] & v12[1]) == -1 ) + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); + } + } + return this; +} +// 4AE847: variable 'v10' is possibly undefined + +//----- (004AE950) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4) +{ + char *v5; // edx + bool v7; // [esp+8h] [ebp-50h] + char v8; // [esp+2Fh] [ebp-29h] BYREF + int v9[10]; // [esp+30h] [ebp-28h] BYREF + + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); + std::istream::sentry::sentry(&v8, this, (std::istream *)1, v7); + if ( v8 ) + { + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (v5[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( + v9, + *((_DWORD *)v5 + 30), + a2, + a3, + a4, + 8); + if ( (v9[0] & v9[1]) == -1 ) + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); + } + } + return this; +} +// 4AE985: variable 'v7' is possibly undefined + +//----- (004AEA70) -------------------------------------------------------- +_DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this) +{ + char *v3; // edx + bool v5; // [esp+8h] [ebp-40h] + char v6; // [esp+2Fh] [ebp-19h] BYREF + int v7[6]; // [esp+30h] [ebp-18h] BYREF + + *ecx0 = -1; + ecx0[1] = -1; + ecx0[2] = 0; + std::istream::sentry::sentry(&v6, this, (std::istream *)1, v5); + if ( v6 ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (v3[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( + v7, + *((_DWORD *)v3 + 30), + 0, + 0, + 1, + 8); + *ecx0 = v7[0]; + ecx0[1] = v7[1]; + ecx0[2] = v7[2]; + } + } + return ecx0; +} +// 4AEA9F: variable 'v5' is possibly undefined + +//----- (004AEB70) -------------------------------------------------------- +std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *a1) +{ + int v2; // eax + _DWORD *v3; // ecx + _DWORD *v4; // eax + unsigned int v5; // eax + bool v7; // [esp+8h] [ebp-20h] + char v8[5]; // [esp+1Fh] [ebp-9h] BYREF + + v2 = *(_DWORD *)a1; + *((_DWORD *)a1 + 1) = 0; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), + *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); + std::istream::sentry::sentry(v8, a1, (std::istream *)1, v7); + if ( !v8[0] ) + return a1; + v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); + if ( v3 ) + { + v5 = v3[2]; + if ( v3[1] < v5 ) + { + v3[2] = v5 - 1; + return a1; + } + if ( (*(int (__stdcall **)(int))(*v3 + 44))(-1) != -1 ) + return a1; + v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); + } + std::ios::clear(v4, v4[5] | 1); + return a1; +} +// 4AEBA4: variable 'v7' is possibly undefined +// 4AEB70: using guessed type char var_9[5]; + +//----- (004AEC90) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::ignore@( + std::istream::sentry *a1@, + std::istream *this, + int a3) +{ + _DWORD *v4; // edi + unsigned __int8 *v5; // eax + int v6; // eax + int i; // edx + unsigned int v8; // ebp + unsigned int v9; // eax + int v10; // ecx + unsigned __int8 *v11; // eax + unsigned __int8 *v13; // eax + bool v14; // [esp+8h] [ebp-44h] + char v15; // [esp+1Eh] [ebp-2Eh] + char v16; // [esp+1Fh] [ebp-2Dh] + char v17[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + if ( this == (std::istream *)1 ) + return std::istream::ignore(a1); + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v17, a1, (std::istream *)1, v14); + if ( (int)this <= 0 ) + return a1; + v15 = v17[0]; + if ( !v17[0] ) + return a1; + v4 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v5 = (unsigned __int8 *)v4[2]; + if ( (unsigned int)v5 >= v4[3] ) + v6 = (*(int (__fastcall **)(_DWORD))(*v4 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); + else + v6 = *v5; + v16 = 0; + for ( i = *((_DWORD *)a1 + 1); ; i = 0x80000000 ) + { + while ( 2 ) + { + if ( (int)this > i ) + { + while ( 1 ) + { + if ( v6 == -1 ) + goto LABEL_26; + v8 = v4[3]; + v9 = v4[2]; + v10 = (int)this - i; + if ( (int)this - i > (int)(v8 - v9) ) + v10 = v4[3] - v9; + if ( v10 <= 1 ) + break; + v11 = (unsigned __int8 *)(v10 + v9); + i += v10; + v4[2] = v11; + *((_DWORD *)a1 + 1) = i; + if ( v8 <= (unsigned int)v11 ) + goto LABEL_29; + v6 = *v11; + if ( (int)this <= i ) + goto LABEL_14; + } + *((_DWORD *)a1 + 1) = i + 1; + if ( v8 <= v9 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4) == -1 ) + { +LABEL_26: + if ( v16 ) + *((_DWORD *)a1 + 1) = 0x7FFFFFFF; + goto LABEL_28; + } + v13 = (unsigned __int8 *)v4[2]; + v8 = v4[3]; + } + else + { + v13 = (unsigned __int8 *)(v9 + 1); + v4[2] = v13; + } + if ( (unsigned int)v13 < v8 ) + { + v6 = *v13; + i = *((_DWORD *)a1 + 1); + continue; + } +LABEL_29: + v6 = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); + i = *((_DWORD *)a1 + 1); + continue; + } + break; + } +LABEL_14: + if ( this != (std::istream *)0x7FFFFFFF ) + break; + if ( v6 == -1 ) + goto LABEL_26; + *((_DWORD *)a1 + 1) = 0x80000000; + v16 = v15; + } + if ( v16 ) + *((_DWORD *)a1 + 1) = 0x7FFFFFFF; + if ( v6 != -1 ) + return a1; +LABEL_28: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return a1; +} +// 4AECBC: variable 'v14' is possibly undefined +// 506980: using guessed type int __stdcall std::istream::ignore(_DWORD); +// 4AEC90: using guessed type char var_1D[29]; + +//----- (004AEE30) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::ignore@( + std::istream::sentry *a1@, + std::istream *this, + int a3, + int a4) +{ + unsigned __int8 *v5; // eax + int v6; // eax + int i; // edi + signed int v8; // edx + unsigned int v9; // ecx + unsigned __int8 *Buf; // ebp + _BYTE *v11; // eax + int v12; // edx + unsigned __int8 *v13; // ebp + unsigned int v15; // eax + unsigned __int8 *v16; // ebp + int Val; // [esp+4h] [ebp-58h] + bool MaxCount; // [esp+8h] [ebp-54h] + char v19; // [esp+1Eh] [ebp-3Eh] + char v20; // [esp+1Fh] [ebp-3Dh] + _DWORD *v21; // [esp+20h] [ebp-3Ch] + signed int v22; // [esp+24h] [ebp-38h] + unsigned int v23; // [esp+28h] [ebp-34h] + char v24[29]; // [esp+3Fh] [ebp-1Dh] BYREF + + if ( a3 == -1 ) + return std::istream::ignore(a1, this, Val); + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v24, a1, (std::istream *)1, MaxCount); + if ( (int)this <= 0 ) + return a1; + v20 = v24[0]; + if ( !v24[0] ) + return a1; + v21 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v5 = (unsigned __int8 *)v21[2]; + if ( v21[3] <= (unsigned int)v5 ) + v6 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); + else + v6 = *v5; + v19 = 0; + for ( i = *((_DWORD *)a1 + 1); ; i = 0x80000000 ) + { +LABEL_7: + if ( (int)this > i ) + { + while ( 1 ) + { + if ( v6 == -1 ) + goto LABEL_34; + if ( v6 == a3 ) + break; + v8 = (signed int)this - i; + v9 = v21[3]; + Buf = (unsigned __int8 *)v21[2]; + if ( (int)this - i > (int)(v9 - (_DWORD)Buf) ) + v8 = v21[3] - (_DWORD)Buf; + if ( v8 <= 1 ) + { + *((_DWORD *)a1 + 1) = i + 1; + if ( v9 > (unsigned int)Buf ) + { + v16 = Buf + 1; + v21[2] = v16; + goto LABEL_39; + } + if ( (*(int (__fastcall **)(_DWORD *))(*v21 + 40))(v21) != -1 ) + { + v16 = (unsigned __int8 *)v21[2]; + v9 = v21[3]; +LABEL_39: + if ( v9 > (unsigned int)v16 ) + { + v6 = *v16; + i = *((_DWORD *)a1 + 1); + goto LABEL_7; + } +LABEL_41: + v6 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); + i = *((_DWORD *)a1 + 1); + goto LABEL_7; + } + goto LABEL_34; + } + v23 = v21[3]; + v22 = v8; + v11 = memchr(Buf, (char)a3, v8); + v12 = v22; + if ( v11 ) + v12 = v11 - Buf; + v13 = &Buf[v12]; + i += v12; + v21[2] = v13; + *((_DWORD *)a1 + 1) = i; + if ( v23 <= (unsigned int)v13 ) + goto LABEL_41; + v6 = *v13; + if ( (int)this <= i ) + goto LABEL_17; + } + if ( this == (std::istream *)0x7FFFFFFF ) + { + if ( !v19 ) + goto LABEL_31; + goto LABEL_26; + } + if ( v19 ) + goto LABEL_26; +LABEL_29: + i = *((_DWORD *)a1 + 1); + goto LABEL_30; + } +LABEL_17: + if ( this != (std::istream *)0x7FFFFFFF ) + { + if ( !v19 ) + { +LABEL_27: + if ( v6 != -1 ) + { + if ( a3 != v6 ) + return a1; + goto LABEL_29; + } +LABEL_36: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return a1; + } +LABEL_26: + *((_DWORD *)a1 + 1) = 0x7FFFFFFF; + goto LABEL_27; + } + if ( v6 == -1 ) + { +LABEL_34: + if ( v19 ) + *((_DWORD *)a1 + 1) = 0x7FFFFFFF; + goto LABEL_36; + } + if ( v6 == a3 ) + break; + *((_DWORD *)a1 + 1) = 0x80000000; + v19 = v20; + } + if ( v19 ) + goto LABEL_26; +LABEL_30: + if ( i != 0x7FFFFFFF ) +LABEL_31: + *((_DWORD *)a1 + 1) = i + 1; + v15 = v21[2]; + if ( v15 >= v21[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*v21 + 40))(v21); + return a1; + } + v21[2] = v15 + 1; + return a1; +} +// 4AEE5E: variable 'MaxCount' is possibly undefined +// 4AEF9B: variable 'Val' is possibly undefined +// 506244: using guessed type int __stdcall std::istream::ignore(_DWORD, _DWORD); +// 4AEE30: using guessed type char var_1D[29]; + +//----- (004AF0D0) -------------------------------------------------------- +std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1) +{ + _DWORD *v2; // ecx + unsigned int v3; // eax + bool v5; // [esp+8h] [ebp-24h] + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v6, a1, (std::istream *)1, v5); + if ( !v6[0] ) + return a1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v3 = v2[2]; + if ( v2[3] > v3 ) + { + v2[2] = v3 + 1; +LABEL_4: + *((_DWORD *)a1 + 1) = 1; + return a1; + } + if ( (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2) != -1 ) + goto LABEL_4; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return a1; +} +// 4AF0EC: variable 'v5' is possibly undefined +// 4AF0D0: using guessed type char var_D[13]; + +//----- (004AF1C0) -------------------------------------------------------- +int __userpurge std::istream::sentry::sentry@( + _BYTE *a1@, + std::istream::sentry *this, + std::istream *a3, + bool a4) +{ + char *v5; // ecx + int result; // eax + _DWORD *v7; // edi + _BYTE *v8; // eax + int v9; // ebp + unsigned int v10; // eax + unsigned int v11; // edx + unsigned __int8 *v12; // eax + + *a1 = 0; + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + result = *((_DWORD *)v5 + 5); + if ( result ) + return std::ios::clear(v5, result | 4); + if ( *((_DWORD *)v5 + 28) ) + { + std::ostream::flush(*((_DWORD **)v5 + 28)); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) + goto LABEL_13; + } + else + { + result = (int)a3; + if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) + goto LABEL_17; + } + v7 = (_DWORD *)*((_DWORD *)v5 + 30); + v8 = (_BYTE *)v7[2]; + if ( v7[3] <= (unsigned int)v8 ) + { + v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD))(*v7 + 36))(*((_DWORD *)v5 + 30)); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v9 = *((_DWORD *)v5 + 31); + if ( v9 ) + { + if ( v8 == (_BYTE *)-1 ) + { +LABEL_20: + result = *((_DWORD *)v5 + 5) | 2; + return std::ios::clear(v5, result | 4); + } + goto LABEL_7; + } +LABEL_27: + std::__throw_bad_cast(); + } + v9 = *((_DWORD *)v5 + 31); + LOBYTE(v8) = *v8; + if ( !v9 ) + goto LABEL_27; +LABEL_7: + while ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * (unsigned __int8)v8) & 0x20) != 0 ) + { + while ( 1 ) + { + v10 = v7[2]; + v11 = v7[3]; + if ( v10 >= v11 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) + goto LABEL_19; + v12 = (unsigned __int8 *)v7[2]; + v11 = v7[3]; + } + else + { + v12 = (unsigned __int8 *)(v10 + 1); + v7[2] = v12; + } + if ( (unsigned int)v12 >= v11 ) + break; + if ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * *v12) & 0x20) == 0 ) + goto LABEL_12; + } + v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + if ( v8 == (_BYTE *)-1 ) + { +LABEL_19: + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + goto LABEL_20; + } + } +LABEL_12: + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); +LABEL_13: + result = *((_DWORD *)v5 + 5); + if ( result ) + return std::ios::clear(v5, result | 4); +LABEL_17: + *a1 = 1; + return result; +} + +//----- (004AF380) -------------------------------------------------------- +int __userpurge std::istream::sentry::sentry@( + _BYTE *a1@, + std::istream::sentry *this, + std::istream *a3, + bool a4) +{ + char *v5; // ecx + int result; // eax + _DWORD *v7; // edi + _BYTE *v8; // eax + int v9; // ebp + unsigned int v10; // eax + unsigned int v11; // edx + unsigned __int8 *v12; // eax + + *a1 = 0; + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + result = *((_DWORD *)v5 + 5); + if ( result ) + return std::ios::clear(v5, result | 4); + if ( *((_DWORD *)v5 + 28) ) + { + std::ostream::flush(*((_DWORD **)v5 + 28)); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) + goto LABEL_13; + } + else + { + result = (int)a3; + if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) + goto LABEL_17; + } + v7 = (_DWORD *)*((_DWORD *)v5 + 30); + v8 = (_BYTE *)v7[2]; + if ( v7[3] <= (unsigned int)v8 ) + { + v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD))(*v7 + 36))(*((_DWORD *)v5 + 30)); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v9 = *((_DWORD *)v5 + 31); + if ( v9 ) + { + if ( v8 == (_BYTE *)-1 ) + { +LABEL_20: + result = *((_DWORD *)v5 + 5) | 2; + return std::ios::clear(v5, result | 4); + } + goto LABEL_7; + } +LABEL_27: + std::__throw_bad_cast(); + } + v9 = *((_DWORD *)v5 + 31); + LOBYTE(v8) = *v8; + if ( !v9 ) + goto LABEL_27; +LABEL_7: + while ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * (unsigned __int8)v8) & 0x20) != 0 ) + { + while ( 1 ) + { + v10 = v7[2]; + v11 = v7[3]; + if ( v10 >= v11 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) + goto LABEL_19; + v12 = (unsigned __int8 *)v7[2]; + v11 = v7[3]; + } + else + { + v12 = (unsigned __int8 *)(v10 + 1); + v7[2] = v12; + } + if ( (unsigned int)v12 >= v11 ) + break; + if ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * *v12) & 0x20) == 0 ) + goto LABEL_12; + } + v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + if ( v8 == (_BYTE *)-1 ) + { +LABEL_19: + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + goto LABEL_20; + } + } +LABEL_12: + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); +LABEL_13: + result = *((_DWORD *)v5 + 5); + if ( result ) + return std::ios::clear(v5, result | 4); +LABEL_17: + *a1 = 1; + return result; +} + +//----- (004AF540) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::getline@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + int a4) +{ + int v4; // eax + _BYTE *v5; // esi + unsigned __int8 v7; // al + int (__stdcall *v9)(unsigned __int8); // edx + char v10; // [esp+Ch] [ebp-10h] + + v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v5 = *(_BYTE **)((char *)a1 + v4 + 124); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v5[28] ) + { + v7 = v5[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); + v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); + v7 = 10; + if ( v9 != std::ctype::do_widen ) + v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); + } + return std::istream::getline(a1, this, a3, v7, v10); +} +// 4AF573: variable 'v10' is possibly undefined + +//----- (004AF5C0) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::getline@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + unsigned __int8 a4, + char a5) +{ + int v6; // eax + int v8; // eax + _DWORD *v9; // esi + unsigned __int8 *Buf; // edi + unsigned int v11; // edx + int v12; // ebx + int v13; // eax + unsigned __int8 *v14; // eax + unsigned int v15; // edx + signed int v16; // ebx + unsigned int v17; // eax + std::istream *v18; // edi + unsigned int v19; // edx + unsigned __int8 *v20; // eax + int v21; // edx + bool MaxCount; // [esp+8h] [ebp-44h] + int v23; // [esp+14h] [ebp-38h] + unsigned int v24; // [esp+14h] [ebp-38h] + char v25[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v25, a1, (std::istream *)1, MaxCount); + if ( !v25[0] ) + { + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + if ( !*((_DWORD *)a1 + 1) ) + { +LABEL_4: + v6 = 4; + goto LABEL_5; + } + return a1; + } + v23 = *((_DWORD *)a1 + 1); + goto LABEL_7; + } + v8 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v9 = *(_DWORD **)((char *)a1 + v8 + 120); + Buf = (unsigned __int8 *)v9[2]; + v11 = v9[3]; + if ( (unsigned int)Buf >= v11 ) + { + v13 = (*(int (__fastcall **)(_DWORD))(*v9 + 36))(*(_DWORD *)((char *)a1 + v8 + 120)); + v12 = *((_DWORD *)a1 + 1); + v21 = v12; + v23 = v12 + 1; + if ( (int)a3 <= v12 + 1 ) + { +LABEL_50: + if ( v13 != -1 ) + goto LABEL_25; + if ( (int)a3 <= 0 ) + { + v12 = v21; + v6 = 2; + goto LABEL_37; + } + } + else + { + if ( v13 != -1 ) + { + Buf = (unsigned __int8 *)v9[2]; + v11 = v9[3]; +LABEL_11: + if ( a4 == v13 ) + { +LABEL_40: + *((_DWORD *)a1 + 1) = v23; + if ( (unsigned int)Buf >= v11 ) + { + (*(void (__fastcall **)(_DWORD *))(*v9 + 40))(v9); + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + if ( !*((_DWORD *)a1 + 1) ) + goto LABEL_4; + return a1; + } + v23 = *((_DWORD *)a1 + 1); + } + else + { + v9[2] = Buf + 1; + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + if ( !*((_DWORD *)a1 + 1) ) + goto LABEL_4; + return a1; + } + } +LABEL_7: + if ( !v23 ) + goto LABEL_4; + return a1; + } + while ( 1 ) + { + v16 = (signed int)&a3[-v12 - 1]; + if ( v16 > (int)(v11 - (_DWORD)Buf) ) + v16 = v11 - (_DWORD)Buf; + if ( v16 > 1 ) + { + v24 = v11; + v14 = (unsigned __int8 *)memchr(Buf, (char)a4, v16); + if ( !v14 || (v15 = v24, v16 = v14 - Buf, v14 != Buf) ) + { + memcpy(this, Buf, v16); + v15 = v9[3]; + v14 = (unsigned __int8 *)(v16 + v9[2]); + } + this = (std::istream *)((char *)this + v16); + v12 = *((_DWORD *)a1 + 1) + v16; + v9[2] = v14; + *((_DWORD *)a1 + 1) = v12; + if ( v15 > (unsigned int)v14 ) + { + v13 = *v14; + v23 = v12 + 1; + if ( (int)a3 <= v12 + 1 ) + goto LABEL_25; + goto LABEL_17; + } + v13 = (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9); + } + else + { + *(_BYTE *)this = v13; + v17 = v9[2]; + v18 = (std::istream *)((char *)this + 1); + v19 = v9[3]; + ++*((_DWORD *)a1 + 1); + if ( v17 >= v19 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 40))(v9) == -1 ) + goto LABEL_33; + v20 = (unsigned __int8 *)v9[2]; + v19 = v9[3]; + } + else + { + v20 = (unsigned __int8 *)(v17 + 1); + v9[2] = v20; + } + if ( (unsigned int)v20 < v19 ) + { + v12 = *((_DWORD *)a1 + 1); + v13 = *v20; + this = (std::istream *)((char *)this + 1); + v23 = v12 + 1; + if ( (int)a3 <= v12 + 1 ) + goto LABEL_25; + goto LABEL_17; + } + v13 = (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9); + this = (std::istream *)((char *)this + 1); + } + v21 = *((_DWORD *)a1 + 1); + v12 = v21; + v23 = v21 + 1; + if ( v21 + 1 >= (int)a3 ) + goto LABEL_50; + if ( v13 == -1 ) + { + v18 = this; +LABEL_33: + if ( (int)a3 > 0 ) + *(_BYTE *)v18 = 0; + v12 = *((_DWORD *)a1 + 1); + v6 = 2; +LABEL_37: + if ( !v12 ) + v6 |= 4u; + goto LABEL_5; + } +LABEL_17: + Buf = (unsigned __int8 *)v9[2]; + v11 = v9[3]; + if ( a4 == v13 ) + goto LABEL_40; + } + } + if ( (int)a3 <= 0 ) + { + v6 = 2; + goto LABEL_37; + } + } + *(_BYTE *)this = 0; + if ( *((_DWORD *)a1 + 1) ) + v6 = 2; + else + v6 = 6; + goto LABEL_5; + } + v12 = *((_DWORD *)a1 + 1); + v13 = *Buf; + v23 = v12 + 1; + if ( (int)a3 > v12 + 1 ) + goto LABEL_11; +LABEL_25: + if ( a4 == v13 ) + { + Buf = (unsigned __int8 *)v9[2]; + v11 = v9[3]; + goto LABEL_40; + } + if ( (int)a3 <= 0 ) + { + v12 = *((_DWORD *)a1 + 1); + v6 = 4; + goto LABEL_37; + } + *(_BYTE *)this = 0; + v6 = 4; +LABEL_5: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v6); + return a1; +} +// 4AF941: control flows out of bounds to 5061B8 +// 4AF5E7: variable 'MaxCount' is possibly undefined +// 5061B4: using guessed type int __stdcall std::istream::getline(_DWORD, _DWORD, _DWORD); +// 4AF5C0: using guessed type char var_1D[29]; + +//----- (004AF950) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::putback@( + std::istream::sentry *a1@, + std::istream *this, + char a3) +{ + int v4; // eax + _DWORD *v5; // ecx + _DWORD *v6; // eax + unsigned int v7; // eax + bool v9; // [esp+8h] [ebp-20h] + char v10[9]; // [esp+1Fh] [ebp-9h] BYREF + + v4 = *(_DWORD *)a1; + *((_DWORD *)a1 + 1) = 0; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v4 - 12)), + *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v4 - 12) + 20) & 0xFFFFFFFD); + std::istream::sentry::sentry(v10, a1, (std::istream *)1, v9); + if ( !v10[0] ) + return a1; + v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); + if ( v5 ) + { + v7 = v5[2]; + if ( v5[1] < v7 && (_BYTE)this == *(_BYTE *)(v7 - 1) ) + { + v5[2] = v7 - 1; + return a1; + } + if ( (*(int (__stdcall **)(_DWORD))(*v5 + 44))((unsigned __int8)this) != -1 ) + return a1; + v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); + } + std::ios::clear(v6, v6[5] | 1); + return a1; +} +// 4AF988: variable 'v9' is possibly undefined +// 4AF950: using guessed type char var_9[9]; + +//----- (004AFA80) -------------------------------------------------------- +int __userpurge std::istream::readsome@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4) +{ + _DWORD *v5; // ecx + char *v6; // eax + int result; // eax + bool v8; // [esp+8h] [ebp-20h] + char v9[5]; // [esp+1Fh] [ebp-9h] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v9, a1, (std::istream *)1, v8); + if ( !v9[0] ) + return *((_DWORD *)a1 + 1); + v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v6 = (char *)(v5[3] - v5[2]); + if ( !v6 ) + v6 = (char *)(*(int (__fastcall **)(_DWORD *))(*v5 + 28))(v5); + if ( (int)v6 <= 0 ) + { + if ( v6 == (char *)-1 ) + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return *((_DWORD *)a1 + 1); + } + if ( (int)v6 > (int)a3 ) + v6 = a3; + result = (*(int (__stdcall **)(std::istream *, char *))(**(_DWORD **)((char *)a1 + + *(_DWORD *)(*(_DWORD *)a1 - 12) + + 120) + + 32))( + this, + v6); + *((_DWORD *)a1 + 1) = result; + return result; +} +// 4AFA9E: variable 'v8' is possibly undefined +// 4AFA80: using guessed type char var_9[5]; + +//----- (004AFB90) -------------------------------------------------------- +int __thiscall std::istream::istream(_DWORD *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // edi + std::ios_base *v6; // edi + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + v10 = this + 2; + std::ios_base::ios_base(this + 2); + *this = &off_538480; + *((_WORD *)this + 62) = 0; + v3 = a2[1]; + this[30] = 0; + this[1] = v3; + v4 = *a2; + this[32] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[33] = 0; + this[34] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[2] = off_538494; + this[35] = 0; + std::ios_base::_M_move((int)v10, v6, v9); + std::ios::_M_cache_locale(v10, (int)(this + 29)); + this[32] = 0; + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[30] = v7; + result = *((unsigned __int16 *)v6 + 58); + a2[1] = 0; + *((_WORD *)this + 62) = result; + return result; +} +// 4AFC00: variable 'v9' is possibly undefined +// 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); +// 538494: using guessed type void (__cdecl *off_538494[2])(std::istream *__hidden this); + +//----- (004AFC70) -------------------------------------------------------- +BOOL __thiscall std::istream::istream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 2); + std::ios_base::ios_base(this + 2); + this[30] = 0; + *((_WORD *)this + 62) = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + *this = &off_538480; + this[2] = off_538494; + this[1] = 0; + return std::ios::init(v2, a2); +} +// 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); +// 538494: using guessed type void (__cdecl *off_538494[2])(std::istream *__hidden this); + +//----- (004AFD00) -------------------------------------------------------- +BOOL __fastcall std::istream::istream(int a1) +{ + int v1; // esi + + v1 = a1 + 8; + std::ios_base::ios_base((_DWORD *)(a1 + 8)); + *(_DWORD *)(a1 + 120) = 0; + *(_WORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)a1 = &off_538480; + *(_DWORD *)(a1 + 8) = off_538494; + *(_DWORD *)(a1 + 4) = 0; + return std::ios::init(v1, 0); +} +// 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); +// 538494: using guessed type void (__cdecl *off_538494[2])(std::istream *__hidden this); + +//----- (004AFD90) -------------------------------------------------------- +int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3) +{ + int v3; // eax + int v4; // ebx + int v5; // edx + int v6; // ebx + std::ios_base *v7; // esi + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-18h] + + v3 = *a2; + v4 = a2[1]; + v5 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v5) = v4; + this[1] = a3[1]; + v6 = (int)this + *(_DWORD *)(v3 - 12); + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v6, v7, v10); + std::ios::_M_cache_locale((_DWORD *)v6, v6 + 108); + v8 = *((_DWORD *)v7 + 28); + *((_DWORD *)v7 + 28) = 0; + *(_DWORD *)(v6 + 112) = v8; + *(_BYTE *)(v6 + 116) = *((_BYTE *)v7 + 116); + result = *((unsigned __int8 *)v7 + 117); + *(_DWORD *)(v6 + 120) = 0; + *(_BYTE *)(v6 + 117) = result; + a3[1] = 0; + return result; +} +// 4AFDC0: variable 'v10' is possibly undefined + +//----- (004AFE10) -------------------------------------------------------- +BOOL __thiscall std::istream::istream(int *this, int *a2, int a3) +{ + int v3; // eax + int v4; // ebx + int v5; // edx + + v3 = *a2; + v4 = a2[1]; + v5 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v5) = v4; + this[1] = 0; + return std::ios::init((int)this + *(_DWORD *)(v3 - 12), a3); +} + +//----- (004AFE50) -------------------------------------------------------- +BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this) +{ + int v2; // eax + int v3; // ebx + int v4; // edx + + v2 = *(_DWORD *)this; + v3 = *((_DWORD *)this + 1); + v4 = *(_DWORD *)(*(_DWORD *)this - 12); + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + v4) = v3; + ecx0[1] = 0; + return std::ios::init((int)ecx0 + *(_DWORD *)(v2 - 12), 0); +} + +//----- (004AFE80) -------------------------------------------------------- +void __fastcall std::istream::~istream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 2; + *(v2 - 2) = &off_538480; + *(v2 - 1) = 0; + *v2 = &off_539474; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); +// 539474: using guessed type int (*off_539474)(); + +//----- (004AFEB0) -------------------------------------------------------- +void __fastcall std::istream::~istream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_538480; + v1 = a1 + 2; + *(v1 - 1) = 0; + *v1 = &off_539474; + std::ios_base::~ios_base((int)v1); +} +// 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); +// 539474: using guessed type int (*off_539474)(); + +//----- (004AFED0) -------------------------------------------------------- +void __thiscall std::istream::~istream(_DWORD *ecx0, std::istream *this) +{ + int v2; // eax + + v2 = *(_DWORD *)this; + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); + ecx0[1] = 0; +} + +//----- (004AFEF0) -------------------------------------------------------- +_DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return this; +} +// 4AFF11: variable 'v10' is possibly undefined + +//----- (004AFF80) -------------------------------------------------------- +int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)) +{ + return a2(this); +} + +//----- (004AFF90) -------------------------------------------------------- +char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004AFFB0) -------------------------------------------------------- +char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004AFFD0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) +{ + char *v3; // ecx + int v4; // eax + bool v6; // [esp+8h] [ebp-24h] + char v7; // [esp+1Eh] [ebp-Eh] BYREF + char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF + + std::istream::sentry::sentry(&v7, this, 0, v6); + if ( !v7 ) + { + if ( !a2 ) + { + v4 = 4; + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + goto LABEL_9; + } + return this; + } + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( !a2 ) + { + v4 = 4; + goto LABEL_9; + } + if ( !std::__copy_streambufs_eof>(*((_DWORD **)v3 + 30), a2, v8) ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = v8[0] == 0 ? 4 : 6; + goto LABEL_9; + } + if ( !v8[0] ) + return this; + v4 = 2; + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); +LABEL_9: + std::ios::clear(v3, *((_DWORD *)v3 + 5) | v4); + return this; +} +// 4AFFEA: variable 'v6' is possibly undefined +// 4AFFD0: using guessed type char var_D[13]; + +//----- (004B0150) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+27h] [ebp-21h] BYREF + int v9; // [esp+28h] [ebp-20h] BYREF + int v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9 = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + &v9, + v10); + *a2 = v10[0]; + if ( !v9 ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9); + return this; +} +// 4B0169: variable 'v7' is possibly undefined +// 4B0150: using guessed type int var_1C[7]; + +//----- (004B02B0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + int v6; // eax + bool v8; // [esp+8h] [ebp-40h] + char v9; // [esp+27h] [ebp-21h] BYREF + int v10; // [esp+28h] [ebp-20h] BYREF + int v11[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v9, this, 0, v8); + if ( !v9 ) + return this; + v3 = *(_DWORD *)this; + v10 = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + &v10, + v11); + v6 = v10; + if ( v11[0] >= -32768 ) + { + if ( v11[0] > 0x7FFF ) + { + v10 |= 4u; + v6 = v10; + *a2 = 0x7FFF; + goto LABEL_9; + } + *a2 = v11[0]; + } + else + { + v6 = v10 | 4; + v10 |= 4u; + *a2 = 0x8000; + } + if ( !v6 ) + return this; +LABEL_9: + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v6); + return this; +} +// 4B037B: conditional instruction was optimized away because eax.4>=4u +// 4B02C9: variable 'v8' is possibly undefined +// 4B02B0: using guessed type int var_1C[7]; + +//----- (004B0450) -------------------------------------------------------- +std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3) +{ + _DWORD *v4; // ecx + _BYTE *v5; // eax + char *v6; // esi + int v7; // ecx + std::ostream *v9; // [esp+4h] [ebp-24h] + char v10[4]; // [esp+18h] [ebp-10h] BYREF + _DWORD *v11; // [esp+1Ch] [ebp-Ch] + + std::ostream::sentry::sentry((int)v10, a1, v9); + if ( v10[0] ) + { + v4 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v5 = (_BYTE *)v4[5]; + if ( (unsigned int)v5 >= v4[6] ) + { + if ( (*(int (__stdcall **)(_DWORD))(*v4 + 52))((unsigned __int8)this) == -1 ) + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + else + { + *v5 = (_BYTE)this; + ++v4[5]; + } + } + v6 = (char *)v11 + *(_DWORD *)(*v11 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12)), + *(_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12) + 20) | 1); + } + } + return a1; +} +// 4B0463: variable 'v9' is possibly undefined +// 4B0450: using guessed type char var_10[4]; + +//----- (004B0580) -------------------------------------------------------- +int __userpurge std::ostream::swap@(_DWORD *a1@, std::ostream *this, std::ostream *a3) +{ + int v3; // ebx + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-18h] + + v3 = (int)a1 + *(_DWORD *)(*a1 - 12); + v4 = (std::ostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_BYTE *)v4 + 116); + *((_DWORD *)v4 + 28) = v5; + LOBYTE(v5) = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = v6; + v7 = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v5; + result = *(unsigned __int8 *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v7; + *((_BYTE *)v4 + 117) = result; + return result; +} +// 4B0598: variable 'v9' is possibly undefined + +//----- (004B05F0) -------------------------------------------------------- +_DWORD *__fastcall std::ostream::flush(_DWORD *a1) +{ + int v2; // ecx + + v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + if ( !v2 || (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) + return a1; + std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return a1; +} + +//----- (004B06A0) -------------------------------------------------------- +_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) +{ + char *v6; // eax + int *v7; // eax + int v8; // edi + int v10[14]; // [esp+40h] [ebp-38h] BYREF + + v6 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v6[20] & 5) != 0 ) + return this; + v7 = (int *)*((_DWORD *)v6 + 30); + v10[4] = a2; + v10[5] = a3; + v10[7] = a5; + v8 = *v7; + v10[6] = a4; + (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v10, v7, a2, a3, a4, a5, 16); + if ( (v10[0] & v10[1]) != -1 ) + return this; + std::ios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + return this; +} + +//----- (004B07C0) -------------------------------------------------------- +_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4) +{ + char *v5; // edx + int v7[10]; // [esp+20h] [ebp-28h] BYREF + + v5 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v5[20] & 5) != 0 ) + return this; + (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( + v7, + *((_DWORD *)v5 + 30), + a2, + a3, + a4, + 16); + if ( (v7[0] & v7[1]) != -1 ) + return this; + std::ios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + return this; +} + +//----- (004B08B0) -------------------------------------------------------- +_DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this) +{ + int v3; // eax + char *v4; // edx + int v6[6]; // [esp+20h] [ebp-18h] BYREF + + *ecx0 = -1; + ecx0[1] = -1; + v3 = *(_DWORD *)this; + ecx0[2] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + if ( (v4[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v4 + 30) + 16))( + v6, + *((_DWORD *)v4 + 30), + 0, + 0, + 1, + 16); + *ecx0 = v6[0]; + ecx0[1] = v6[1]; + ecx0[2] = v6[2]; + } + return ecx0; +} + +//----- (004B09A0) -------------------------------------------------------- +std::ostream::sentry *__userpurge std::ostream::write@( + std::ostream::sentry *a1@, + std::ostream *this, + const char *a3, + int a4) +{ + char *v5; // esi + int v6; // ecx + std::ostream *v8; // [esp+4h] [ebp-24h] + char v9[4]; // [esp+18h] [ebp-10h] BYREF + _DWORD *v10; // [esp+1Ch] [ebp-Ch] + + std::ostream::sentry::sentry((int)v9, a1, v8); + if ( v9[0] + && a3 != (const char *)(*(int (__stdcall **)(std::ostream *, const char *))(**(_DWORD **)((char *)a1 + + *(_DWORD *)(*(_DWORD *)a1 - 12) + + 120) + + 48))( + this, + a3) ) + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + v5 = (char *)v10 + *(_DWORD *)(*v10 - 12); + if ( (v5[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v6 = *((_DWORD *)v5 + 30); + if ( v6 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), + *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); + } + } + return a1; +} +// 4B09B0: variable 'v8' is possibly undefined +// 4B09A0: using guessed type char var_10[4]; + +//----- (004B0AD0) -------------------------------------------------------- +int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) +{ + int v4; // eax + char *v5; // ecx + int result; // eax + + *(_BYTE *)a1 = 0; + v4 = *(_DWORD *)this; + *(_DWORD *)(a1 + 4) = this; + v5 = (char *)this + *(_DWORD *)(v4 - 12); + result = *((_DWORD *)v5 + 5); + if ( *((_DWORD *)v5 + 28) ) + { + if ( result ) + return std::ios::clear(v5, result | 4); + std::ostream::flush(*((_DWORD **)v5 + 28)); + result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + } + if ( result ) + return std::ios::clear(v5, result | 4); + *(_BYTE *)a1 = 1; + return result; +} + +//----- (004B0B30) -------------------------------------------------------- +int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) +{ + int v4; // eax + char *v5; // ecx + int result; // eax + + *(_BYTE *)a1 = 0; + v4 = *(_DWORD *)this; + *(_DWORD *)(a1 + 4) = this; + v5 = (char *)this + *(_DWORD *)(v4 - 12); + result = *((_DWORD *)v5 + 5); + if ( *((_DWORD *)v5 + 28) ) + { + if ( result ) + return std::ios::clear(v5, result | 4); + std::ostream::flush(*((_DWORD **)v5 + 28)); + result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + } + if ( result ) + return std::ios::clear(v5, result | 4); + *(_BYTE *)a1 = 1; + return result; +} + +//----- (004B0B90) -------------------------------------------------------- +void __fastcall std::ostream::sentry::~sentry(int a1) +{ + int v2; // ebx + int v3; // ecx + _DWORD *v4; // ecx + + if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) + { + v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + if ( !std::uncaught_exception() ) + { + v3 = *(_DWORD *)(v2 + 120); + if ( v3 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) + { + v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); + std::ios::clear(v4, v4[5] | 1); + } + } + } + } +} + +//----- (004B0C00) -------------------------------------------------------- +void __fastcall std::ostream::sentry::~sentry(int a1) +{ + int v2; // ebx + int v3; // ecx + _DWORD *v4; // ecx + + if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) + { + v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + if ( !std::uncaught_exception() ) + { + v3 = *(_DWORD *)(v2 + 120); + if ( v3 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) + { + v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); + std::ios::clear(v4, v4[5] | 1); + } + } + } + } +} + +//----- (004B0C70) -------------------------------------------------------- +const char *__userpurge std::ostream::_M_write@(_DWORD *a1@, std::ostream *this, const char *a3, int a4) +{ + int v5; // ecx + const char *result; // eax + + v5 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + result = (const char *)(*(int (__thiscall **)(int, std::ostream *, const char *))(*(_DWORD *)v5 + 48))(v5, this, a3); + if ( a3 != result ) + return (const char *)std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return result; +} + +//----- (004B0CC0) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + int v14; // [esp+28h] [ebp-30h] + _BYTE *v15; // [esp+2Ch] [ebp-2Ch] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v14 = v3[116]; + } + else + { + v15 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v15 ) + std::__throw_bad_cast(); + if ( v15[28] ) + { + v14 = (char)v15[61]; + v9 = v15[61]; + } + else + { + std::ctype::_M_widen_init((int)v15); + v14 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); + v14 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int))(*(_DWORD *)v4 + 36))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v14, + a2); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 4B0CD1: variable 'v13' is possibly undefined +// 4B0D3D: variable 'v5' is possibly undefined +// 4B0CC0: using guessed type char var_20[4]; + +//----- (004B0EB0) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + _BYTE *v14; // [esp+24h] [ebp-34h] + int v15; // [esp+2Ch] [ebp-2Ch] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v15 = v3[116]; + } + else + { + v14 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v14 ) + std::__throw_bad_cast(); + if ( v14[28] ) + { + v15 = (char)v14[61]; + v9 = v14[61]; + } + else + { + std::ctype::_M_widen_init((int)v14); + v15 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v14 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v14, 32); + v15 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, _DWORD))(*(_DWORD *)v4 + 8))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v15, + a2); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 4B0EC7: variable 'v13' is possibly undefined +// 4B0F3A: variable 'v5' is possibly undefined +// 4B0EB0: using guessed type char var_20[4]; + +//----- (004B10B0) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + _BYTE *v14; // [esp+20h] [ebp-38h] + int v15; // [esp+24h] [ebp-34h] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v15 = v3[116]; + } + else + { + v14 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v14 ) + std::__throw_bad_cast(); + if ( v14[28] ) + { + v15 = (char)v14[61]; + v9 = v14[61]; + } + else + { + std::ctype::_M_widen_init((int)v14); + v15 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v14 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v14, 32); + v15 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v15, + LODWORD(a2), + HIDWORD(a2)); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 4B10C7: variable 'v13' is possibly undefined +// 4B1133: variable 'v5' is possibly undefined +// 4B10B0: using guessed type char var_20[4]; + +//----- (004B12B0) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + _BYTE *v15; // [esp+28h] [ebp-30h] + int v16; // [esp+2Ch] [ebp-2Ch] + char v17[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v18; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v17, this, v13); + if ( v17[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v16 = v3[116]; + } + else + { + v15 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v15 ) + std::__throw_bad_cast(); + if ( v15[28] ) + { + v16 = (char)v15[61]; + v9 = v15[61]; + } + else + { + std::ctype::_M_widen_init((int)v15); + v16 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); + v16 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 32))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v16, + LODWORD(a2), + DWORD1(a2), + HIDWORD(a2)); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v18 + *(_DWORD *)(*v18 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), + *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); + } + } + return this; +} +// 4B12C1: variable 'v13' is possibly undefined +// 4B132D: variable 'v5' is possibly undefined +// 4B12B0: using guessed type char var_20[4]; + +//----- (004B14A0) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + int v14; // [esp+28h] [ebp-30h] + _BYTE *v15; // [esp+2Ch] [ebp-2Ch] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v14 = v3[116]; + } + else + { + v15 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v15 ) + std::__throw_bad_cast(); + if ( v15[28] ) + { + v14 = (char)v15[61]; + v9 = v15[61]; + } + else + { + std::ctype::_M_widen_init((int)v15); + v14 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); + v14 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int))(*(_DWORD *)v4 + 12))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v14, + a2); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 4B14B1: variable 'v13' is possibly undefined +// 4B151D: variable 'v5' is possibly undefined +// 4B14A0: using guessed type char var_20[4]; + +//----- (004B1690) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + int v14; // [esp+28h] [ebp-30h] + _BYTE *v15; // [esp+2Ch] [ebp-2Ch] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v14 = v3[116]; + } + else + { + v15 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v15 ) + std::__throw_bad_cast(); + if ( v15[28] ) + { + v14 = (char)v15[61]; + v9 = v15[61]; + } + else + { + std::ctype::_M_widen_init((int)v15); + v14 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); + v14 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int))(*(_DWORD *)v4 + 16))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v14, + a2); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 4B16A1: variable 'v13' is possibly undefined +// 4B170D: variable 'v5' is possibly undefined +// 4B1690: using guessed type char var_20[4]; + +//----- (004B1880) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3) +{ + char *v4; // esi + int v5; // edi + char v6; // dl + char *v7; // esi + int v8; // ecx + char v10; // cl + int v11; // eax + int (__stdcall *v12)(unsigned __int8); // eax + char v13; // al + std::ostream *v14; // [esp+4h] [ebp-64h] + int v15; // [esp+38h] [ebp-30h] + _BYTE *v16; // [esp+3Ch] [ebp-2Ch] + char v17[4]; // [esp+48h] [ebp-20h] BYREF + _DWORD *v18; // [esp+4Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v17, this, v14); + if ( v17[0] ) + { + v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v5 = *((_DWORD *)v4 + 32); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v4[117] ) + { + v15 = v4[116]; + } + else + { + v16 = (_BYTE *)*((_DWORD *)v4 + 31); + if ( !v16 ) + std::__throw_bad_cast(); + if ( v16[28] ) + { + v15 = (char)v16[61]; + v10 = v16[61]; + } + else + { + std::ctype::_M_widen_init((int)v16); + v15 = 32; + v10 = 32; + v12 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v16 + 24); + if ( v12 != std::ctype::do_widen ) + { + v13 = ((int (__thiscall *)(_BYTE *, int))v12)(v16, 32); + v15 = v13; + v10 = v13; + } + } + v4[116] = v10; + v11 = *(_DWORD *)this; + v4[117] = 1; + v4 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int, int))(*(_DWORD *)v5 + 20))( + v5, + *((_DWORD *)v4 + 30), + *((_DWORD *)v4 + 30) == 0, + v4, + v15, + a2, + a3); + if ( v6 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v7 = (char *)v18 + *(_DWORD *)(*v18 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), + *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); + } + } + return this; +} +// 4B189D: variable 'v14' is possibly undefined +// 4B191A: variable 'v6' is possibly undefined +// 4B1880: using guessed type char var_20[4]; + +//----- (004B1A90) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert( + std::ostream::sentry *this, + int a2, + int a3) +{ + char *v4; // esi + int v5; // edi + char v6; // dl + char *v7; // esi + int v8; // ecx + char v10; // cl + int v11; // eax + int (__stdcall *v12)(unsigned __int8); // eax + char v13; // al + std::ostream *v14; // [esp+4h] [ebp-64h] + int v15; // [esp+38h] [ebp-30h] + _BYTE *v16; // [esp+3Ch] [ebp-2Ch] + char v17[4]; // [esp+48h] [ebp-20h] BYREF + _DWORD *v18; // [esp+4Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v17, this, v14); + if ( v17[0] ) + { + v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v5 = *((_DWORD *)v4 + 32); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v4[117] ) + { + v15 = v4[116]; + } + else + { + v16 = (_BYTE *)*((_DWORD *)v4 + 31); + if ( !v16 ) + std::__throw_bad_cast(); + if ( v16[28] ) + { + v15 = (char)v16[61]; + v10 = v16[61]; + } + else + { + std::ctype::_M_widen_init((int)v16); + v15 = 32; + v10 = 32; + v12 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v16 + 24); + if ( v12 != std::ctype::do_widen ) + { + v13 = ((int (__thiscall *)(_BYTE *, int))v12)(v16, 32); + v15 = v13; + v10 = v13; + } + } + v4[116] = v10; + v11 = *(_DWORD *)this; + v4[117] = 1; + v4 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int, int))(*(_DWORD *)v5 + 24))( + v5, + *((_DWORD *)v4 + 30), + *((_DWORD *)v4 + 30) == 0, + v4, + v15, + a2, + a3); + if ( v6 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v7 = (char *)v18 + *(_DWORD *)(*v18 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), + *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); + } + } + return this; +} +// 4B1AAD: variable 'v14' is possibly undefined +// 4B1B2A: variable 'v6' is possibly undefined +// 4B1A90: using guessed type char var_20[4]; + +//----- (004B1CA0) -------------------------------------------------------- +int __thiscall std::ostream::ostream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + std::ios_base *v5; // esi + int v6; // eax + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-24h] + + v2 = this + 1; + std::ios_base::ios_base(this + 1); + this[29] = 0; + *((_WORD *)this + 60) = 0; + v4 = *a2; + this[31] = 0; + v5 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v4 - 12)); + *this = &off_5384A8; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[1] = off_5384BC; + std::ios_base::_M_move((int)v2, v5, v8); + std::ios::_M_cache_locale(v2, (int)(this + 28)); + v6 = *((_DWORD *)v5 + 28); + this[31] = 0; + *((_DWORD *)v5 + 28) = 0; + this[29] = v6; + result = *((unsigned __int16 *)v5 + 58); + *((_WORD *)this + 60) = result; + return result; +} +// 4B1D01: variable 'v8' is possibly undefined +// 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); +// 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); + +//----- (004B1D60) -------------------------------------------------------- +BOOL __thiscall std::ostream::ostream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 1); + std::ios_base::ios_base(this + 1); + this[29] = 0; + *((_WORD *)this + 60) = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + *this = &off_5384A8; + this[1] = off_5384BC; + return std::ios::init(v2, a2); +} +// 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); +// 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); + +//----- (004B1DF0) -------------------------------------------------------- +int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)(a1 + 4)); + result = 0; + *(_DWORD *)(a1 + 116) = 0; + *(_WORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)a1 = &off_5384A8; + *(_DWORD *)(a1 + 4) = off_5384BC; + return result; +} +// 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); +// 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); + +//----- (004B1E50) -------------------------------------------------------- +BOOL __fastcall std::ostream::ostream(int a1) +{ + int v1; // esi + + v1 = a1 + 4; + std::ios_base::ios_base((_DWORD *)(a1 + 4)); + *(_DWORD *)(a1 + 116) = 0; + *(_WORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)a1 = &off_5384A8; + *(_DWORD *)(a1 + 4) = off_5384BC; + return std::ios::init(v1, 0); +} +// 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); +// 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); + +//----- (004B1EE0) -------------------------------------------------------- +int __thiscall std::ostream::ostream(int *this, int *a2, _DWORD *a3) +{ + int v3; // edx + int v4; // eax + _DWORD *v5; // ecx + _DWORD *v6; // ebx + std::ios_base *v7; // esi + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-18h] + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); + *v5 = v4; + v6 = v5; + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move((int)v5, v7, v10); + std::ios::_M_cache_locale(v6, (int)(v6 + 27)); + v8 = *((_DWORD *)v7 + 28); + *((_DWORD *)v7 + 28) = 0; + v6[28] = v8; + *((_BYTE *)v6 + 116) = *((_BYTE *)v7 + 116); + result = *((unsigned __int8 *)v7 + 117); + v6[30] = 0; + *((_BYTE *)v6 + 117) = result; + return result; +} +// 4B1F03: variable 'v10' is possibly undefined + +//----- (004B1F50) -------------------------------------------------------- +BOOL __thiscall std::ostream::ostream(int *this, int *a2, int a3) +{ + int v3; // edx + int v4; // eax + _DWORD *v5; // ecx + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); + *v5 = v4; + return std::ios::init((int)v5, a3); +} + +//----- (004B1F80) -------------------------------------------------------- +int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3) +{ + int v3; // eax + int v4; // edx + int result; // eax + + v3 = *(_DWORD *)this; + v4 = *((_DWORD *)this + 1); + *ecx0 = *(_DWORD *)this; + result = *(_DWORD *)(v3 - 12); + *(_DWORD *)((char *)ecx0 + result) = v4; + return result; +} + +//----- (004B1FA0) -------------------------------------------------------- +BOOL __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this) +{ + int v2; // edx + int v3; // eax + _DWORD *v4; // ecx + + v2 = *(_DWORD *)this; + v3 = *((_DWORD *)this + 1); + *ecx0 = *(_DWORD *)this; + v4 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)); + *v4 = v3; + return std::ios::init((int)v4, 0); +} + +//----- (004B1FC0) -------------------------------------------------------- +void __fastcall std::ostream::~ostream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 1; + *(v2 - 1) = &off_5384A8; + *v2 = &off_539474; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); +// 539474: using guessed type int (*off_539474)(); + +//----- (004B1FF0) -------------------------------------------------------- +void __fastcall std::ostream::~ostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_5384A8; + v1 = a1 + 1; + *v1 = &off_539474; + std::ios_base::~ios_base((int)v1); +} +// 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); +// 539474: using guessed type int (*off_539474)(); + +//----- (004B2010) -------------------------------------------------------- +void __thiscall std::ostream::~ostream(_DWORD *ecx0, std::ostream *this) +{ + int v2; // eax + + v2 = *(_DWORD *)this; + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); +} + +//----- (004B2030) -------------------------------------------------------- +_DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + _DWORD *result; // eax + std::ios_base *v9; // [esp+4h] [ebp-18h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + result = this; + *((_BYTE *)v4 + 117) = v7; + return result; +} +// 4B204D: variable 'v9' is possibly undefined + +//----- (004B20B0) -------------------------------------------------------- +int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)) +{ + return a2(this); +} + +//----- (004B20C0) -------------------------------------------------------- +char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004B20E0) -------------------------------------------------------- +char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004B2110) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2) +{ + char *v3; // ecx + int v4; // eax + char *v5; // esi + int v6; // ecx + std::ostream *v8; // [esp+4h] [ebp-24h] + char v9; // [esp+17h] [ebp-11h] BYREF + char v10[4]; // [esp+18h] [ebp-10h] BYREF + _DWORD *v11; // [esp+1Ch] [ebp-Ch] + + std::ostream::sentry::sentry((int)v10, this, v8); + if ( v10[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( !a2 ) + { + v4 = 1; + goto LABEL_13; + } + if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v3 + 30), &v9) ) + { + v4 = 4; + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); +LABEL_13: + std::ios::clear(v3, *((_DWORD *)v3 + 5) | v4); + } + } + else if ( !a2 ) + { + v4 = 1; + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + goto LABEL_13; + } + v5 = (char *)v11 + *(_DWORD *)(*v11 - 12); + if ( (v5[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v6 = *((_DWORD *)v5 + 30); + if ( v6 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12)), + *(_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12) + 20) | 1); + } + } + return this; +} +// 4B2123: variable 'v8' is possibly undefined +// 4B2110: using guessed type char var_10[4]; + +//----- (004B2260) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2) +{ + return std::ostream::_M_insert(this, a2); +} + +//----- (004B2290) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2) +{ + return std::ostream::_M_insert(this, a2); +} + +//----- (004B22F0) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) +{ + int v2; // eax + + v2 = *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 12) & 0x4A; + if ( v2 == 64 || v2 == 8 ) + return std::ostream::_M_insert(this, a2); + else + return std::ostream::_M_insert(this, (__int16)a2); +} + +//----- (004B2330) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) +{ + return std::ostream::_M_insert(this, a2); +} + +//----- (004B2360) -------------------------------------------------------- +char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2) +{ + return (char *)this - a2; +} + +//----- (004B2370) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004B2380) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004B2390) -------------------------------------------------------- +volatile signed __int32 *__fastcall std::string::_M_leak_hard(volatile signed __int32 **a1) +{ + volatile signed __int32 *result; // eax + unsigned int v3; // [esp+Ch] [ebp-10h] + + result = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_51641C ) + { + if ( *((int *)result - 1) > 0 ) + { + std::string::_M_mutate(a1, 0, 0, 0, v3); + result = *a1; + *((_DWORD *)*a1 - 1) = -1; + } + else + { + result = *a1; + *((_DWORD *)*a1 - 1) = -1; + } + } + return result; +} +// 4B23CF: variable 'v3' is possibly undefined + +//----- (004B23F0) -------------------------------------------------------- +unsigned int *__cdecl std::string::_S_construct(unsigned int a1, char a2) +{ + if ( a1 ) + return std::string::_S_construct(a1, a2); + else + return (unsigned int *)&unk_51641C; +} + +//----- (004B2420) -------------------------------------------------------- +unsigned int *__usercall std::string::_S_construct@(unsigned int a1@, char a2@
) +{ + unsigned int *v4; // esi + unsigned int *result; // eax + + v4 = std::string::_Rep::_S_create(a1, 0); + if ( a1 == 1 ) + { + *((_BYTE *)v4 + 12) = a2; + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v4 + 3; + } + else + { + memset(v4 + 3, a2, a1); + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v4 + 3; + } + v4[2] = 0; + result = v4 + 3; + *v4 = a1; + *((_BYTE *)v4 + a1 + 12) = 0; + return result; +} + +//----- (004B24A0) -------------------------------------------------------- +void *__cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, _BYTE *a2) +{ + void *v2; // edi + size_t Size; // ebp + unsigned int *v4; // eax + unsigned int *v5; // esi + + v2 = &unk_51641C; + if ( a2 != Src ) + { + Size = a2 - Src; + v4 = std::string::_Rep::_S_create(a2 - Src, 0); + v5 = v4; + v2 = v4 + 3; + if ( a2 - Src == 1 ) + *((_BYTE *)v4 + 12) = *Src; + else + memcpy(v4 + 3, Src, Size); + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + v5[2] = 0; + *v5 = Size; + *((_BYTE *)v5 + Size + 12) = 0; + } + } + return v2; +} + +//----- (004B2520) -------------------------------------------------------- +_DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2) +{ + if ( a1 == (_BYTE *)a2 ) + return &unk_51641C; + if ( !a1 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); + return std::string::_S_construct(a1, a2); +} + +//----- (004B2560) -------------------------------------------------------- +_DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2) +{ + if ( a1 == (_BYTE *)a2 ) + return &unk_51641C; + if ( !a1 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); + return std::string::_S_construct(a1, a2); +} + +//----- (004B25A0) -------------------------------------------------------- +_DWORD *__usercall std::string::_S_construct@(_BYTE *a1@, int a2@) +{ + size_t Size; // ebx + unsigned int *v4; // eax + unsigned int *v5; // esi + _DWORD *v6; // ebp + _DWORD *result; // eax + + Size = a2 - (_DWORD)a1; + v4 = std::string::_Rep::_S_create(a2 - (_DWORD)a1, 0); + v5 = v4; + v6 = v4 + 3; + if ( Size == 1 ) + { + *((_BYTE *)v4 + 12) = *a1; + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v6; + } + else + { + memcpy(v4 + 3, a1, Size); + if ( v5 == &std::string::_Rep::_S_empty_rep_storage ) + return v6; + } + v5[2] = 0; + result = v6; + *v5 = Size; + *((_BYTE *)v5 + Size + 12) = 0; + return result; +} + +//----- (004B2620) -------------------------------------------------------- +unsigned int *std::string::_S_empty_rep() +{ + return &std::string::_Rep::_S_empty_rep_storage; +} + +//----- (004B2630) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004B2670) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004B26B0) -------------------------------------------------------- +size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size) +{ + size_t result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = (unsigned __int8)*a2; + *(_BYTE *)this = result; + } + else if ( result ) + { + return (size_t)memcpy(this, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004B26F0) -------------------------------------------------------- +size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size) +{ + size_t result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = (unsigned __int8)*a2; + *(_BYTE *)this = result; + } + else if ( result ) + { + return (size_t)memcpy(this, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004B2730) -------------------------------------------------------- +unsigned int *__fastcall std::string::shrink_to_fit(unsigned int **a1) +{ + unsigned int *result; // eax + unsigned int v2; // [esp+4h] [ebp-18h] + + result = *a1; + if ( *(*a1 - 3) < *(*a1 - 2) ) + return std::string::reserve(a1, 0, v2); + return result; +} +// 4B2730: could not find valid save-restore pair for ebp +// 4B274D: variable 'v2' is possibly undefined + +//----- (004B2770) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::_M_replace_aux@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + size_t Size, + char a5, + char a6) +{ + _BYTE *v7; // edi + unsigned int v9; // [esp+Ch] [ebp-20h] + + if ( Size > a3 + 1073741820 - *((_DWORD *)*a1 - 3) ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); + std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); + if ( !Size ) + return a1; + v7 = (char *)this + (_DWORD)*a1; + if ( Size != 1 ) + { + memset(v7, a5, Size); + return a1; + } + *v7 = a5; + return a1; +} +// 4B27A5: variable 'v9' is possibly undefined + +//----- (004B2800) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::_M_replace_safe@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + _BYTE *Src, + size_t Size, + unsigned int a6) +{ + _BYTE *v7; // edi + unsigned int v9; // [esp+Ch] [ebp-10h] + + std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); + if ( !Size ) + return a1; + v7 = (char *)this + (_DWORD)*a1; + if ( Size != 1 ) + { + memcpy(v7, Src, Size); + return a1; + } + *v7 = *Src; + return a1; +} +// 4B281F: variable 'v9' is possibly undefined + +//----- (004B2870) -------------------------------------------------------- +unsigned int *__cdecl std::string::_S_construct_aux_2(unsigned int a1, char a2) +{ + if ( a1 ) + return std::string::_S_construct(a1, a2); + else + return (unsigned int *)&unk_51641C; +} + +//----- (004B28A0) -------------------------------------------------------- +char *__userpurge std::string::at@(volatile signed __int32 **a1@, std::string *this, unsigned int a3) +{ + volatile signed __int32 *v3; // eax + + v3 = *a1; + if ( (unsigned int)this >= *((_DWORD *)*a1 - 3) ) + std::__throw_out_of_range_fmt( + "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", + (size_t)this, + *((_DWORD *)*a1 - 3)); + if ( *((int *)v3 - 1) >= 0 ) + { + std::string::_M_leak_hard(a1); + v3 = *a1; + } + return (char *)v3 + (_DWORD)this; +} + +//----- (004B28E0) -------------------------------------------------------- +int __fastcall std::string::end(volatile signed __int32 **a1) +{ + if ( *((int *)*a1 - 1) < 0 ) + return (int)*a1 + *((_DWORD *)*a1 - 3); + std::string::_M_leak_hard(a1); + return (int)*a1 + *((_DWORD *)*a1 - 3); +} + +//----- (004B2910) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_destroy(void *this, int a2) +{ + operator delete(this); +} + +//----- (004B2930) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( this != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)this); + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B2980) -------------------------------------------------------- +void __fastcall std::string::_Rep::_M_dispose(volatile signed __int32 *a1) +{ + int v1; // eax + + if ( !_CRT_MT ) + { + v1 = *((_DWORD *)a1 + 2); + *((_DWORD *)a1 + 2) = v1 - 1; + if ( v1 > 0 ) + return; +LABEL_5: + operator delete((void *)a1); + return; + } + if ( _InterlockedExchangeAdd(a1 + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B29C0) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( !_CRT_MT ) + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + if ( v2 > 0 ) + return; +LABEL_5: + std::string::_Rep::_M_destroy((void *)this, a2); + return; + } + if ( _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B2A00) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( !_CRT_MT ) + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + if ( v2 > 0 ) + return; +LABEL_5: + std::string::_Rep::_M_destroy((void *)this, a2); + return; + } + if ( _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B2A40) -------------------------------------------------------- +int __fastcall std::string::_Rep::_M_refcopy(int a1) +{ + if ( (unsigned int *)a1 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); + else + ++*(_DWORD *)(a1 + 8); + } + return a1 + 12; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B2A70) -------------------------------------------------------- +int __fastcall std::string::_Rep::_M_refdata(int a1) +{ + return a1 + 12; +} + +//----- (004B2A80) -------------------------------------------------------- +unsigned int *std::string::_Rep::_S_empty_rep() +{ + return &std::string::_Rep::_S_empty_rep_storage; +} + +//----- (004B2A90) -------------------------------------------------------- +void __fastcall std::string::_Rep::_M_set_leaked(int a1) +{ + *(_DWORD *)(a1 + 8) = -1; +} + +//----- (004B2AA0) -------------------------------------------------------- +void __fastcall std::string::_Rep::_M_set_sharable(int a1) +{ + *(_DWORD *)(a1 + 8) = 0; +} + +//----- (004B2AB0) -------------------------------------------------------- +std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@( + unsigned int *a1@, + std::string::_Rep *this, + unsigned int a3) +{ + std::string::_Rep *result; // eax + + if ( a1 != &std::string::_Rep::_S_empty_rep_storage ) + { + result = this; + a1[2] = 0; + *a1 = (unsigned int)this; + *((_BYTE *)this + (_DWORD)a1 + 12) = 0; + } + return result; +} + +//----- (004B2AE0) -------------------------------------------------------- +unsigned int *__thiscall std::string::_Rep::_M_grab(int this, int a2, int a3) +{ + if ( *(int *)(this + 8) < 0 ) + return std::string::_Rep::_M_clone(this, a2, 0); + if ( (unsigned int *)this != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(this + 8), 1u); + else + ++*(_DWORD *)(this + 8); + } + return (unsigned int *)(this + 12); +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B2B30) -------------------------------------------------------- +unsigned int *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3) +{ + unsigned int *v4; // esi + size_t v5; // eax + + v4 = std::string::_Rep::_S_create(a3 + *(_DWORD *)this, *(_DWORD *)(this + 4)); + v5 = *(_DWORD *)this; + if ( *(_DWORD *)this ) + { + if ( v5 == 1 ) + { + *((_BYTE *)v4 + 12) = *(_BYTE *)(this + 12); + v5 = *(_DWORD *)this; + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v4 + 3; + goto LABEL_7; + } + memcpy(v4 + 3, (const void *)(this + 12), *(_DWORD *)this); + v5 = *(_DWORD *)this; + } + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v4 + 3; +LABEL_7: + *v4 = v5; + v4[2] = 0; + *((_BYTE *)v4 + v5 + 12) = 0; + return v4 + 3; +} + +//----- (004B2BC0) -------------------------------------------------------- +_DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2) +{ + unsigned int v2; // ebx + struct type_info *v3; // eax + _DWORD *result; // eax + void (__cdecl *v5)(void *); // [esp+4h] [ebp-18h] + + v2 = a1; + if ( a1 > 0x3FFFFFFC ) + std::__throw_length_error((std::length_error *)"basic_string::_S_create"); + if ( a1 <= a2 ) + goto LABEL_9; + if ( a1 < 2 * a2 ) + v2 = 2 * a2; + if ( v2 + 29 > 0x1000 && v2 > a2 ) + { + v2 = v2 + 4096 - (((_WORD)v2 + 29) & 0xFFF); + if ( v2 > 0x3FFFFFFC ) + v2 = 1073741820; +LABEL_9: + v3 = (struct type_info *)(v2 + 13); + goto LABEL_10; + } + v3 = (struct type_info *)(v2 + 13); + if ( (int)(v2 + 13) < 0 ) + std::__throw_bad_alloc(); +LABEL_10: + result = operator new(v3, v5); + result[1] = v2; + result[2] = 0; + return result; +} +// 4B2C11: variable 'v5' is possibly undefined + +//----- (004B2C40) -------------------------------------------------------- +char *__fastcall std::string::back(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // esi + + v1 = *a1; + v2 = *((_DWORD *)*a1 - 3) - 1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::string::_M_leak_hard(a1); + v1 = *a1; + } + return (char *)v1 + v2; +} + +//----- (004B2C70) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::rend(volatile signed __int32 **ecx0, volatile signed __int32 **this) +{ + volatile signed __int32 **result; // eax + volatile signed __int32 *v3; // edx + + result = ecx0; + v3 = *this; + if ( *((int *)*this - 1) >= 0 ) + { + std::string::_M_leak_hard(this); + v3 = *this; + result = ecx0; + } + *result = v3; + return result; +} + +//----- (004B2CA0) -------------------------------------------------------- +int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3) +{ + int result; // eax + int v4; // edx + + result = *a1; + if ( *(int *)(*a1 - 4) < 0 ) + *(_DWORD *)(result - 4) = 0; + v4 = *(_DWORD *)this; + if ( *(int *)(*(_DWORD *)this - 4) < 0 ) + *(_DWORD *)(v4 - 4) = 0; + *a1 = v4; + *(_DWORD *)this = result; + return result; +} + +//----- (004B2CD0) -------------------------------------------------------- +volatile signed __int32 *__fastcall std::string::begin(volatile signed __int32 **a1) +{ + volatile signed __int32 *result; // eax + + result = *a1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::string::_M_leak_hard(a1); + return *a1; + } + return result; +} + +//----- (004B2D00) -------------------------------------------------------- +void __fastcall std::string::clear(void **a1) +{ + _DWORD *v1; // eax + int v2; // ebx + void **v3; // [esp+1Ch] [ebp-10h] + + v1 = *a1; + if ( *((int *)*a1 - 1) <= 0 ) + { + if ( v1 != (_DWORD *)&unk_51641C ) + { + *(v1 - 1) = 0; + *(v1 - 3) = 0; + *(_BYTE *)v1 = 0; + } + } + else if ( v1 == (_DWORD *)&unk_51641C ) + { + *a1 = &unk_51641C; + } + else + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *(v1 - 1); + *(v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + { + v3 = a1; + operator delete(v1 - 3); + a1 = v3; + } + *a1 = &unk_51641C; + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B2DA0) -------------------------------------------------------- +char *__thiscall std::string::erase(volatile signed __int32 **this, int a2) +{ + size_t v3; // esi + volatile signed __int32 *v4; // eax + unsigned int v6; // [esp+Ch] [ebp-10h] + + v3 = a2 - (_DWORD)*this; + std::string::_M_mutate(this, v3, 1u, 0, v6); + v4 = *this; + *((_DWORD *)v4 - 1) = -1; + return (char *)v4 + v3; +} +// 4B2DC2: variable 'v6' is possibly undefined + +//----- (004B2DE0) -------------------------------------------------------- +char *__thiscall std::string::erase(volatile signed __int32 **this, char *a2, char *a3) +{ + char *result; // eax + size_t v5; // ebx + volatile signed __int32 *v6; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + result = a2; + if ( a3 != a2 ) + { + v5 = a2 - (char *)*this; + std::string::_M_mutate(this, v5, a3 - a2, 0, v7); + v6 = *this; + *((_DWORD *)v6 - 1) = -1; + return (char *)v6 + v5; + } + return result; +} +// 4B2E15: variable 'v7' is possibly undefined + +//----- (004B2E30) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::erase@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + unsigned int a4) +{ + unsigned int v5; // ecx + unsigned int v6; // edx + unsigned int v8; // [esp+Ch] [ebp-10h] + + v5 = *((_DWORD *)*a1 - 3); + v6 = v5 - (_DWORD)this; + if ( v5 - (unsigned int)this > a3 ) + v6 = a3; + if ( (unsigned int)this > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + (size_t)this, + v5); + std::string::_M_mutate(a1, (size_t)this, v6, 0, v8); + return a1; +} +// 4B2E63: variable 'v8' is possibly undefined + +//----- (004B2EA0) -------------------------------------------------------- +volatile signed __int32 *__fastcall std::string::front(volatile signed __int32 **a1) +{ + volatile signed __int32 *result; // eax + + result = *a1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::string::_M_leak_hard(a1); + return *a1; + } + return result; +} + +//----- (004B2ED0) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const char *a3) +{ + size_t v4; // eax + unsigned int v6; // [esp+8h] [ebp-14h] + + v4 = strlen((const char *)this); + return std::string::append(a1, this, v4, v6); +} +// 4B2EEC: variable 'v6' is possibly undefined + +//----- (004B2F00) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@( + unsigned int **a1@, + std::string *this, + size_t Size, + unsigned int a4) +{ + std::string *v5; // ebp + unsigned int *v6; // eax + int v7; // edi + std::string *v8; // edi + _BYTE *v9; // eax + unsigned int *v10; // eax + char *v12; // ebp + bool v13; // cc + void *Src; // [esp+4h] [ebp-28h] + + v5 = this; + if ( !Size ) + return a1; + v6 = *a1; + v7 = *(*a1 - 3); + if ( Size > 1073741820 - v7 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + v8 = (std::string *)(Size + v7); + if ( (unsigned int)v8 > *(v6 - 2) || (v13 = (int)*(v6 - 1) <= 0, v6 = *a1, !v13) ) + { + if ( v6 <= (unsigned int *)this && this <= (std::string *)((char *)v6 + *(v6 - 3)) ) + { + v12 = (char *)(this - (std::string *)v6); + std::string::reserve(a1, v8, (unsigned int)Src); + v5 = (std::string *)&v12[(_DWORD)*a1]; + v9 = (char *)*a1 + *(*a1 - 3); + if ( Size != 1 ) + goto LABEL_8; + goto LABEL_13; + } + std::string::reserve(a1, v8, (unsigned int)Src); + v6 = *a1; + } + v9 = (char *)v6 + *(v6 - 3); + if ( Size != 1 ) + { +LABEL_8: + memcpy(v9, v5, Size); + goto LABEL_9; + } +LABEL_13: + *v9 = *(_BYTE *)v5; +LABEL_9: + v10 = *a1; + if ( *a1 != (unsigned int *)&unk_51641C ) + { + *(v10 - 1) = 0; + *(v10 - 3) = (unsigned int)v8; + *((_BYTE *)v8 + (_DWORD)v10) = 0; + } + return a1; +} +// 4B2F42: variable 'Src' is possibly undefined + +//----- (004B2FE0) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const std::string *a3) +{ + size_t Size; // esi + size_t v5; // edi + _BYTE *v6; // edx + _BYTE *v7; // eax + unsigned int *v8; // eax + void *Src; // [esp+4h] [ebp-28h] + + Size = *(_DWORD *)(*(_DWORD *)this - 12); + if ( !Size ) + return a1; + v5 = Size + *(*a1 - 3); + if ( v5 <= *(*a1 - 2) && (int)*(*a1 - 1) <= 0 ) + { + v6 = *(_BYTE **)this; + v7 = (char *)*a1 + *(*a1 - 3); + if ( Size == 1 ) + goto LABEL_10; +LABEL_4: + memcpy(v7, v6, Size); + goto LABEL_5; + } + std::string::reserve(a1, (std::string *)(Size + *(*a1 - 3)), (unsigned int)Src); + v6 = *(_BYTE **)this; + v7 = (char *)*a1 + *(*a1 - 3); + if ( Size != 1 ) + goto LABEL_4; +LABEL_10: + *v7 = *v6; +LABEL_5: + v8 = *a1; + if ( *a1 != (unsigned int *)&unk_51641C ) + { + *(v8 - 1) = 0; + *(v8 - 3) = v5; + *((_BYTE *)v8 + v5) = 0; + } + return a1; +} +// 4B3008: variable 'Src' is possibly undefined + +//----- (004B3080) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@( + unsigned int **a1@, + std::string *this, + const std::string *a3, + unsigned int a4, + unsigned int a5) +{ + std::string *v6; // eax + unsigned int v7; // ebx + size_t Size; // ebx + size_t v9; // ebp + _BYTE *v10; // edi + _BYTE *v11; // edx + unsigned int *v12; // eax + void *Src; // [esp+4h] [ebp-28h] + + v6 = this; + v7 = *(_DWORD *)(*(_DWORD *)this - 12); + if ( (unsigned int)a3 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::append", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + Size = v7 - (_DWORD)a3; + if ( Size > a4 ) + { + Size = a4; + if ( !a4 ) + return a1; + } + else if ( !Size ) + { + return a1; + } + v9 = Size + *(*a1 - 3); + if ( *(*a1 - 2) < v9 || (int)*(*a1 - 1) > 0 ) + { + std::string::reserve(a1, (std::string *)(Size + *(*a1 - 3)), (unsigned int)Src); + v6 = this; + } + v10 = (char *)a3 + *(_DWORD *)v6; + v11 = (char *)*a1 + *(*a1 - 3); + if ( Size == 1 ) + *v11 = *v10; + else + memcpy(v11, v10, Size); + v12 = *a1; + if ( *a1 != (unsigned int *)&unk_51641C ) + { + *(v12 - 1) = 0; + *(v12 - 3) = v9; + *((_BYTE *)v12 + v9) = 0; + } + return a1; +} +// 4B30C8: variable 'Src' is possibly undefined + +//----- (004B3160) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, char a3, char a4) +{ + if ( this ) + std::string::append(a1, (size_t)this, a3); + return a1; +} + +//----- (004B3190) -------------------------------------------------------- +unsigned int *__thiscall std::string::append(unsigned int **this, size_t Size, char a3) +{ + unsigned int *v3; // edx + int v4; // esi + std::string *v6; // esi + _BYTE *v7; // eax + unsigned int *result; // eax + int Val; // [esp+4h] [ebp-28h] + + v3 = *this; + v4 = *(*this - 3); + if ( 1073741820 - v4 < Size ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + v6 = (std::string *)(Size + v4); + if ( (unsigned int)v6 <= *(v3 - 2) && (int)*(v3 - 1) <= 0 ) + { + v7 = (char *)*this + *(*this - 3); + if ( Size == 1 ) + goto LABEL_10; +LABEL_4: + memset(v7, a3, Size); + goto LABEL_5; + } + std::string::reserve(this, v6, Val); + v7 = (char *)*this + *(*this - 3); + if ( Size != 1 ) + goto LABEL_4; +LABEL_10: + *v7 = a3; +LABEL_5: + result = *this; + if ( *this != (unsigned int *)&unk_51641C ) + { + *(result - 1) = 0; + *(result - 3) = (unsigned int)v6; + *((_BYTE *)v6 + (_DWORD)result) = 0; + } + return result; +} +// 4B31C1: variable 'Val' is possibly undefined + +//----- (004B3240) -------------------------------------------------------- +#error "4B324A: call analysis failed (funcsize=8)" + +//----- (004B3260) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::assign@( + volatile signed __int32 **a1@, + std::string *this, + const char *a3) +{ + size_t v4; // eax + unsigned int v6; // [esp+8h] [ebp-14h] + + v4 = strlen((const char *)this); + return std::string::assign(a1, this, v4, v6); +} +// 4B327C: variable 'v6' is possibly undefined + +//----- (004B3290) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::assign@( + volatile signed __int32 **a1@, + std::string *this, + size_t Size, + unsigned int a4) +{ + volatile signed __int32 *v4; // eax + unsigned int v5; // ebx + volatile signed __int32 **result; // eax + volatile signed __int32 *v7; // ebx + char *v8; // eax + unsigned int v9; // [esp+10h] [ebp-1Ch] + volatile signed __int32 **v10; // [esp+1Ch] [ebp-10h] + volatile signed __int32 **v11; // [esp+1Ch] [ebp-10h] + + v4 = *a1; + v5 = *((_DWORD *)*a1 - 3); + if ( Size > 0x3FFFFFFC ) + std::__throw_length_error((std::length_error *)"basic_string::assign"); + if ( v4 > (volatile signed __int32 *)this || (char *)v4 + v5 < (char *)this ) + return std::string::_M_replace_safe(a1, 0, v5, this, Size, v9); + if ( *((int *)v4 - 1) > 0 ) + { + v5 = *((_DWORD *)*a1 - 3); + return std::string::_M_replace_safe(a1, 0, v5, this, Size, v9); + } + v7 = *a1; + v8 = (char *)(this - (std::string *)*a1); + if ( Size <= (unsigned int)v8 ) + { + if ( Size != 1 ) + { + if ( Size ) + { + v11 = a1; + memcpy((void *)*a1, this, Size); + a1 = v11; + v7 = *v11; + } + goto LABEL_12; + } + } + else + { + if ( !v8 ) + goto LABEL_12; + if ( Size != 1 ) + { + v10 = a1; + memmove((void *)*a1, this, Size); + a1 = v10; + v7 = *v10; + goto LABEL_12; + } + } + *(_BYTE *)v7 = *(_BYTE *)this; + v7 = *a1; +LABEL_12: + result = a1; + if ( v7 != (volatile signed __int32 *)&unk_51641C ) + { + *((_DWORD *)v7 - 1) = 0; + *((_DWORD *)v7 - 3) = Size; + *((_BYTE *)v7 + Size) = 0; + } + return result; +} +// 4B32C6: variable 'v9' is possibly undefined + +//----- (004B3390) -------------------------------------------------------- +unsigned int **__userpurge std::string::assign@( + unsigned int **a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *v4; // esi + unsigned int *v5; // ecx + volatile signed __int32 *v6; // eax + unsigned int *v7; // edx + int v9; // ecx + char v10[13]; // [esp+1Fh] [ebp-Dh] BYREF + + v4 = *this; + if ( *a1 != *this ) + { + v5 = v4 - 3; + if ( (*(v4 - 1) & 0x80000000) != 0 ) + { + v4 = std::string::_Rep::_M_clone((int)v5, (int)v10, 0); + } + else if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v4 - 1, 1u); + else + ++*(v4 - 1); + } + v6 = (volatile signed __int32 *)*a1; + v7 = *a1 - 3; + if ( *a1 == (unsigned int *)&unk_51641C + || (_CRT_MT + ? (v9 = _InterlockedExchangeAdd(v6 - 1, 0xFFFFFFFF)) + : (v9 = *((_DWORD *)v6 - 1), *((_DWORD *)v6 - 1) = v9 - 1), + v9 > 0) ) + { + *a1 = v4; + } + else + { + operator delete(v7); + *a1 = v4; + } + } + return a1; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4B3390: using guessed type char var_D[13]; + +//----- (004B3450) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::assign@( + volatile signed __int32 **a1@, + std::string *this, + const std::string *a3, + unsigned int a4, + unsigned int a5) +{ + size_t v5; // ebx + unsigned int v7; // [esp+8h] [ebp-14h] + + v5 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; + if ( v5 > a4 ) + v5 = a4; + if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::assign", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + return std::string::assign(a1, (const std::string *)((char *)a3 + *(_DWORD *)this), v5, v7); +} +// 4B347E: variable 'v7' is possibly undefined + +//----- (004B34C0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::assign@( + volatile signed __int32 **a1@, + size_t this, + char a3, + char a4) +{ + char v5; // [esp+10h] [ebp-Ch] + + return std::string::_M_replace_aux(a1, 0, *((_DWORD *)*a1 - 3), this, a3, v5); +} +// 4B34E4: variable 'v5' is possibly undefined + +//----- (004B3500) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *a2, + volatile signed __int32 *a3, + size_t a4, + unsigned int a5) +{ + return std::string::insert(a1, (std::string *)(a2 - (std::string *)*a1), a3, a4, a5); +} + +//----- (004B3510) -------------------------------------------------------- +char *__thiscall std::string::insert(volatile signed __int32 **this, int a2, char a3) +{ + std::string *v4; // esi + volatile signed __int32 *v5; // eax + char v7; // [esp+10h] [ebp-Ch] + + v4 = (std::string *)(a2 - (_DWORD)*this); + std::string::_M_replace_aux(this, v4, 0, 1u, a3, v7); + v5 = *this; + *((_DWORD *)v5 - 1) = -1; + return (char *)v5 + (_DWORD)v4; +} +// 4B353B: variable 'v7' is possibly undefined + +//----- (004B3560) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::insert(volatile signed __int32 **this, int a2, size_t a3, char a4) +{ + char v5; // [esp+10h] [ebp-Ch] + + return std::string::_M_replace_aux(this, (std::string *)(a2 - (_DWORD)*this), 0, a3, a4, v5); +} +// 4B3585: variable 'v5' is possibly undefined + +//----- (004B35A0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + char *Str, + const char *a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen(Str); + return std::string::insert(a1, this, (volatile signed __int32 *)Str, v5, v7); +} +// 4B35C4: variable 'v7' is possibly undefined + +//----- (004B35E0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + volatile signed __int32 *a3, + size_t Size, + unsigned int a5) +{ + volatile signed __int32 *v5; // edx + unsigned int v6; // eax + std::string *v8; // edi + volatile signed __int32 **v9; // ecx + char *Src; // eax + char *v11; // ebp + size_t v12; // esi + char *v13; // ebx + char *v14; // ebp + size_t v15; // eax + unsigned int v16; // [esp+Ch] [ebp-30h] + unsigned int v17; // [esp+10h] [ebp-2Ch] + volatile signed __int32 **v19; // [esp+1Ch] [ebp-20h] + + v5 = *a1; + v6 = *((_DWORD *)*a1 - 3); + if ( (unsigned int)this > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + (size_t)this, + *((_DWORD *)*a1 - 3)); + if ( Size > 1073741820 - v6 ) + std::__throw_length_error((std::length_error *)"basic_string::insert"); + if ( v5 > a3 || a3 > (volatile signed __int32 *)((char *)v5 + v6) || *((int *)v5 - 1) > 0 ) + return std::string::_M_replace_safe(a1, this, 0, a3, Size, v17); + v8 = (std::string *)((char *)a3 - (char *)*a1); + std::string::_M_mutate(a1, (size_t)this, 0, Size, v16); + v9 = a1; + Src = (char *)v8 + (_DWORD)*a1; + v11 = (char *)*a1 + (_DWORD)this; + if ( &Src[Size] > v11 ) + { + if ( Src < v11 ) + { + v12 = this - v8; + if ( this - v8 == 1 ) + { + *v11 = *Src; + } + else if ( v12 ) + { + memcpy(v11, Src, v12); + v9 = a1; + } + v13 = &v11[Size]; + v14 = &v11[v12]; + v15 = Size - v12; + if ( Size - v12 != 1 ) + { + if ( v15 ) + { + v19 = v9; + memcpy(v14, v13, v15); + return v19; + } + return v9; + } + *v14 = *v13; + return v9; + } + else + { + if ( Size != 1 ) + { + if ( Size ) + { + memcpy(v11, &Src[Size], Size); + return a1; + } + return v9; + } + *v11 = Src[1]; + return a1; + } + } + else + { + if ( Size != 1 ) + { + if ( Size ) + { + memcpy(v11, Src, Size); + return a1; + } + return v9; + } + *v11 = *Src; + return a1; + } +} +// 4B3626: variable 'v17' is possibly undefined +// 4B3662: variable 'v16' is possibly undefined + +//----- (004B3790) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + volatile signed __int32 **a3, + const std::string *a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::insert(a1, this, *a3, *((_DWORD *)*a3 - 3), v5); +} +// 4B37AB: variable 'v5' is possibly undefined + +//----- (004B37C0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + _DWORD *a3, + const std::string *a4, + unsigned int a5, + unsigned int a6) +{ + size_t v6; // ebx + unsigned int v8; // [esp+Ch] [ebp-10h] + + v6 = *(_DWORD *)(*a3 - 12) - (_DWORD)a4; + if ( v6 > a5 ) + v6 = a5; + if ( (unsigned int)a4 > *(_DWORD *)(*a3 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + (size_t)a4, + *(_DWORD *)(*a3 - 12)); + return std::string::insert(a1, this, (volatile signed __int32 *)((char *)a4 + *a3), v6, v8); +} +// 4B37F6: variable 'v8' is possibly undefined + +//----- (004B3830) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + size_t a3, + char a4, + char a5) +{ + char v6; // [esp+10h] [ebp-Ch] + + if ( (unsigned int)this > *((_DWORD *)*a1 - 3) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + (size_t)this, + *((_DWORD *)*a1 - 3)); + return std::string::_M_replace_aux(a1, this, 0, a3, a4, v6); +} +// 4B385D: variable 'v6' is possibly undefined + +//----- (004B3890) -------------------------------------------------------- +_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, volatile signed __int32 **this) +{ + _DWORD *result; // eax + volatile signed __int32 *v3; // edx + + result = ecx0; + v3 = *this; + if ( *((int *)*this - 1) >= 0 ) + { + std::string::_M_leak_hard(this); + v3 = *this; + result = ecx0; + } + *result = (char *)v3 + *((_DWORD *)v3 - 3); + return result; +} + +//----- (004B38C0) -------------------------------------------------------- +void __userpurge std::string::resize(unsigned int **a1@, std::string *this, unsigned int a3) +{ + char v3; // [esp+8h] [ebp-14h] + + std::string::resize(a1, (size_t)this, 0, v3); +} +// 4B38D2: variable 'v3' is possibly undefined + +//----- (004B38E0) -------------------------------------------------------- +void __userpurge std::string::resize(unsigned int **a1@, size_t this, char a3, char a4) +{ + unsigned int v4; // edx + unsigned int v5; // [esp+Ch] [ebp-10h] + + v4 = *(*a1 - 3); + if ( this > 0x3FFFFFFC ) + std::__throw_length_error((std::length_error *)"basic_string::resize"); + if ( this > v4 ) + { + std::string::append(a1, this - v4, a3); + } + else if ( this < v4 ) + { + std::string::_M_mutate((volatile signed __int32 **)a1, this, v4 - this, 0, v5); + } +} +// 4B3931: variable 'v5' is possibly undefined + +//----- (004B3950) -------------------------------------------------------- +size_t __cdecl std::string::_M_copy(void *this, const void *Src, size_t Size) +{ + size_t result; // eax + + result = Size; + if ( Size == 1 ) + { + result = *(unsigned __int8 *)Src; + *(_BYTE *)this = result; + } + else if ( Size ) + { + return (size_t)memcpy(this, Src, Size); + } + return result; +} + +//----- (004B3980) -------------------------------------------------------- +std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3) +{ + std::string *result; // eax + + result = this; + *a1 = this; + return result; +} + +//----- (004B3990) -------------------------------------------------------- +volatile signed __int32 *__fastcall std::string::_M_leak(volatile signed __int32 **a1) +{ + volatile signed __int32 *result; // eax + + result = (volatile signed __int32 *)*((_DWORD *)*a1 - 1); + if ( (int)result >= 0 ) + return std::string::_M_leak_hard(a1); + return result; +} + +//----- (004B39B0) -------------------------------------------------------- +size_t __cdecl std::string::_M_move(void *this, const void *Src, size_t Size) +{ + size_t result; // eax + + result = Size; + if ( Size == 1 ) + { + result = *(unsigned __int8 *)Src; + *(_BYTE *)this = result; + } + else if ( Size ) + { + return (size_t)memmove(this, Src, Size); + } + return result; +} + +//----- (004B39E0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); +} + +//----- (004B3A00) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::replace(volatile signed __int32 **this, int a2, int a3, char *Str) +{ + size_t Size; // eax + unsigned int v7; // [esp+10h] [ebp-Ch] + + Size = strlen(Str); + return std::string::replace( + this, + (std::string *)(a2 - (_DWORD)*this), + a3 - a2, + (volatile signed __int32 *)Str, + Size, + v7); +} +// 4B3A31: variable 'v7' is possibly undefined + +//----- (004B3A50) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); +} + +//----- (004B3A70) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t a5, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, a5, a6); +} + +//----- (004B3A90) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::replace( + volatile signed __int32 **this, + int a2, + int a3, + volatile signed __int32 **a4) +{ + unsigned int v5; // [esp+10h] [ebp-Ch] + + return std::string::replace(this, (std::string *)(a2 - (_DWORD)*this), a3 - a2, *a4, *((_DWORD *)*a4 - 3), v5); +} +// 4B3AB8: variable 'v5' is possibly undefined + +//----- (004B3AD0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); +} + +//----- (004B3AF0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); +} + +//----- (004B3B10) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t a5, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, a5, a6); +} + +//----- (004B3B30) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + size_t a4, + char a5, + char a6) +{ + return std::string::_M_replace_aux(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, a5, a6); +} + +//----- (004B3B50) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + char *Str, + const char *a5) +{ + size_t Size; // eax + unsigned int v8; // [esp+10h] [ebp-Ch] + + Size = strlen(Str); + return std::string::replace(a1, this, a3, (volatile signed __int32 *)Str, Size, v8); +} +// 4B3B7C: variable 'v8' is possibly undefined + +//----- (004B3B90) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + volatile signed __int32 *v6; // edi + unsigned int v7; // eax + unsigned int v8; // ebx + volatile signed __int32 **v9; // ecx + volatile signed __int32 *v11; // eax + size_t v12; // edi + _BYTE *v13; // esi + volatile signed __int32 *v14; // edi + int v15; // edx + unsigned int v16; // [esp+Ch] [ebp-3Ch] + unsigned int v17; // [esp+10h] [ebp-38h] + volatile signed __int32 **v20; // [esp+1Ch] [ebp-2Ch] + + v6 = *a1; + v7 = *((_DWORD *)*a1 - 3); + if ( (unsigned int)this > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + (size_t)this, + *((_DWORD *)v6 - 3)); + v8 = v7 - (_DWORD)this; + if ( v7 - (unsigned int)this > a3 ) + v8 = a3; + if ( Size > v8 - v7 + 1073741820 ) + std::__throw_length_error((std::length_error *)"basic_string::replace"); + if ( v6 > a4 || a4 > (volatile signed __int32 *)((char *)v6 + v7) || *((int *)v6 - 1) > 0 ) + return std::string::_M_replace_safe(a1, this, v8, a4, Size, v17); + v11 = *a1; + if ( (std::string *)((unsigned int)a4 + Size) <= (std::string *)((char *)this + (int)*a1) ) + { + v12 = (char *)a4 - (char *)v11; +LABEL_13: + std::string::_M_mutate(a1, (size_t)this, v8, Size, v16); + v9 = a1; + v13 = (char *)this + (_DWORD)*a1; + if ( Size == 1 ) + { + *v13 = *((_BYTE *)*a1 + v12); + } + else if ( Size ) + { + memcpy(v13, (char *)*a1 + v12, Size); + return a1; + } + return v9; + } + if ( a4 >= (volatile signed __int32 *)((char *)v11 + (int)this + v8) ) + { + v12 = Size + (char *)a4 - (char *)v11 - v8; + goto LABEL_13; + } + v14 = std::string::_S_construct(a4, (int)a4 + Size); + v9 = std::string::_M_replace_safe(a1, this, v8, v14, Size, v17); + if ( v14 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v14 - 1); + *((_DWORD *)v14 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + { + v20 = v9; + operator delete((void *)(v14 - 3)); + return v20; + } + } + return v9; +} +// 4B3BE7: variable 'v17' is possibly undefined +// 4B3C4C: variable 'v16' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B3D80) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + volatile signed __int32 **a4, + const std::string *a5) +{ + unsigned int v6; // [esp+10h] [ebp-Ch] + + return std::string::replace(a1, this, a3, *a4, *((_DWORD *)*a4 - 3), v6); +} +// 4B3DA3: variable 'v6' is possibly undefined + +//----- (004B3DC0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + _DWORD *a4, + const std::string *a5, + unsigned int a6, + unsigned int a7) +{ + size_t Size; // ebx + unsigned int v9; // [esp+10h] [ebp-Ch] + + Size = *(_DWORD *)(*a4 - 12) - (_DWORD)a5; + if ( Size > a6 ) + Size = a6; + if ( (unsigned int)a5 > *(_DWORD *)(*a4 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + (size_t)a5, + *(_DWORD *)(*a4 - 12)); + return std::string::replace(a1, this, a3, (volatile signed __int32 *)((char *)a5 + *a4), Size, v9); +} +// 4B3DFE: variable 'v9' is possibly undefined + +//----- (004B3E30) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + size_t a4, + char a5, + char a6) +{ + unsigned int v6; // edx + + v6 = *((_DWORD *)*a1 - 3) - (_DWORD)this; + if ( v6 > a3 ) + v6 = a3; + if ( (unsigned int)this > *((_DWORD *)*a1 - 3) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + (size_t)this, + *((_DWORD *)*a1 - 3)); + return std::string::_M_replace_aux(a1, this, v6, a4, a5, a6); +} + +//----- (004B3EA0) -------------------------------------------------------- +unsigned int *__userpurge std::string::reserve@(unsigned int **a1@, std::string *this, unsigned int a3) +{ + int *v4; // ecx + unsigned int *result; // eax + unsigned int v6; // edx + int v7; // ecx + int *v8; // edx + unsigned int *v9; // ecx + int v10; // esi + unsigned int *v11; // [esp+1Ch] [ebp-20h] + char v12[13]; // [esp+2Fh] [ebp-Dh] BYREF + + v4 = (int *)*a1; + result = (unsigned int *)this; + if ( this == (std::string *)*(v4 - 2) ) + { + if ( *(v4 - 1) <= 0 ) + return result; + v4 = (int *)*a1; + } + v6 = *(v4 - 3); + v7 = (int)(v4 - 3); + if ( (unsigned int)this < v6 ) + result = (unsigned int *)v6; + result = std::string::_Rep::_M_clone(v7, (int)v12, (int)result - v6); + v8 = (int *)*a1; + v9 = *a1 - 3; + if ( *a1 != (unsigned int *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v10 = _InterlockedExchangeAdd(v8 - 1, 0xFFFFFFFF); + } + else + { + v10 = *(v8 - 1); + *(v8 - 1) = v10 - 1; + } + if ( v10 <= 0 ) + { + v11 = result; + operator delete(v9); + result = v11; + } + } + *a1 = result; + return result; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4B3EA0: using guessed type char var_D[13]; + +//----- (004B3F50) -------------------------------------------------------- +void __fastcall std::string::pop_back(volatile signed __int32 **a1) +{ + unsigned int v1; // eax + unsigned int v2; // [esp+Ch] [ebp-10h] + + v1 = *((_DWORD *)*a1 - 3); + if ( v1 - 1 > v1 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + 0xFFFFFFFF, + 0); + std::string::_M_mutate(a1, v1 - 1, 1u, 0, v2); +} +// 4B3F72: variable 'v2' is possibly undefined + +//----- (004B3FB0) -------------------------------------------------------- +char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size) +{ + char *result; // eax + + result = Val; + if ( Val == (char *)1 ) + { + *(_BYTE *)this = Size; + } + else if ( Val ) + { + return (char *)memset(this, (char)Size, (size_t)Val); + } + return result; +} + +//----- (004B3FF0) -------------------------------------------------------- +void __userpurge std::string::_M_mutate( + volatile signed __int32 **a1@, + size_t this, + unsigned int a3, + unsigned int a4, + unsigned int a5) +{ + int v6; // esi + unsigned int v7; // edx + unsigned int v8; // edi + size_t Size; // esi + unsigned int *v10; // eax + int v11; // ecx + unsigned int *v12; // ebp + volatile signed __int32 *v13; // edx + volatile signed __int32 *Src; // eax + volatile signed __int32 *v15; // eax + _BYTE *v16; // eax + _BYTE *v17; // ecx + _BYTE *v18; // edx + int v19; // esi + volatile signed __int32 *v20; // [esp+18h] [ebp-34h] + volatile signed __int32 *v21; // [esp+1Ch] [ebp-30h] + volatile signed __int32 *v22; // [esp+1Ch] [ebp-30h] + + v6 = *((_DWORD *)*a1 - 3); + v7 = *((_DWORD *)*a1 - 2); + v8 = v6 + a4 - a3; + Size = v6 - (a3 + this); + if ( v8 > v7 ) + { +LABEL_4: + v10 = std::string::_Rep::_S_create(v8, v7); + v11 = a3 + this; + v12 = v10; + v13 = (volatile signed __int32 *)(v10 + 3); + if ( this ) + { + Src = *a1; + v13 = (volatile signed __int32 *)(v12 + 3); + if ( this == 1 ) + { + *((_BYTE *)v12 + 12) = *(_BYTE *)Src; + v15 = *a1; + if ( !Size ) + goto LABEL_10; + goto LABEL_8; + } + memcpy(v12 + 3, (const void *)Src, this); + v11 = a3 + this; + v13 = (volatile signed __int32 *)(v12 + 3); + } + v15 = *a1; + if ( !Size ) + goto LABEL_10; +LABEL_8: + v16 = (char *)v15 + v11; + if ( Size == 1 ) + { + *((_BYTE *)v12 + this + a4 + 12) = *v16; + v15 = *a1; + v20 = *a1 - 3; + if ( *a1 == (volatile signed __int32 *)&unk_51641C ) + goto LABEL_11; + goto LABEL_20; + } + v21 = v13; + memcpy((char *)v12 + this + a4 + 12, v16, Size); + v15 = *a1; + v13 = v21; +LABEL_10: + v20 = v15 - 3; + if ( v15 == (volatile signed __int32 *)&unk_51641C ) + { +LABEL_11: + *a1 = v13; + goto LABEL_12; + } +LABEL_20: + if ( _CRT_MT ) + { + v19 = _InterlockedExchangeAdd(v15 - 1, 0xFFFFFFFF); + } + else + { + v19 = *((_DWORD *)v15 - 1); + *((_DWORD *)v15 - 1) = v19 - 1; + } + if ( v19 <= 0 ) + { + v22 = v13; + operator delete((void *)v20); + v13 = v22; + } + goto LABEL_11; + } + if ( *((int *)*a1 - 1) > 0 ) + { + v7 = *((_DWORD *)*a1 - 2); + goto LABEL_4; + } + v13 = *a1; + if ( Size && a4 != a3 ) + { + v17 = (char *)v13 + a3 + this; + v18 = (char *)v13 + this + a4; + if ( Size == 1 ) + { + *v18 = *v17; + v13 = *a1; + v12 = (unsigned int *)(*a1 - 3); +LABEL_12: + if ( v12 == &std::string::_Rep::_S_empty_rep_storage ) + return; +LABEL_19: + *((_DWORD *)v13 - 1) = 0; + *((_DWORD *)v13 - 3) = v8; + *((_BYTE *)v13 + v8) = 0; + return; + } + memmove(v18, v17, Size); + v13 = *a1; + } + if ( v13 - 3 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + goto LABEL_19; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B41E0) -------------------------------------------------------- +unsigned int *__userpurge std::string::push_back@(unsigned int **a1@, std::string *this, char a3) +{ + int v4; // edi + unsigned int *result; // eax + unsigned int v6; // [esp+4h] [ebp-28h] + + v4 = *(*a1 - 3); + if ( v4 + 1 > *(*a1 - 2) || (int)*(*a1 - 1) > 0 ) + std::string::reserve(a1, (std::string *)(v4 + 1), v6); + *((_BYTE *)*a1 + *(*a1 - 3)) = (_BYTE)this; + result = *a1; + if ( *a1 != (unsigned int *)&unk_51641C ) + { + *(result - 1) = 0; + *(result - 3) = v4 + 1; + *((_BYTE *)result + v4 + 1) = 0; + } + return result; +} +// 4B4206: variable 'v6' is possibly undefined + +//----- (004B4250) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_51641C; + return result; +} + +//----- (004B4270) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_51641C; + return result; +} + +//----- (004B4290) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3) +{ + int v3; // eax + _DWORD *result; // eax + + v3 = -1; + if ( Str ) + v3 = (int)&Str[strlen(Str)]; + result = std::string::_S_construct(Str, v3); + *this = result; + return result; +} + +//----- (004B42E0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004B4320) -------------------------------------------------------- +void __thiscall std::string::string(_DWORD *this, int a2) +{ + *this = &unk_51641C; +} + +//----- (004B4330) -------------------------------------------------------- +unsigned int *__userpurge std::string::string@( + unsigned int **a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + unsigned int *v5; // ecx + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + result = *this; + v5 = *this - 3; + if ( (*(*this - 1) & 0x80000000) != 0 ) + { + result = std::string::_Rep::_M_clone((int)v5, (int)v6, 0); + *a1 = result; + } + else + { + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); + else + ++*(result - 1); + } + *a1 = result; + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4B4330: using guessed type char var_D[13]; + +//----- (004B43B0) -------------------------------------------------------- +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3) +{ + unsigned int *result; // eax + unsigned int *v5; // ecx + + result = *a2; + v5 = *a2 - 3; + if ( (*(*a2 - 1) & 0x80000000) != 0 ) + { + result = std::string::_Rep::_M_clone((int)v5, a3, 0); + *this = result; + } + else + { + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B4430) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) +{ + unsigned int v5; // edx + _DWORD *result; // eax + + v5 = *(_DWORD *)(*a2 - 12); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); + *this = result; + return result; +} + +//----- (004B4490) -------------------------------------------------------- +_DWORD *__userpurge std::string::string@( + _DWORD *a1@, + std::string *this, + const std::string *a3, + unsigned int a4, + unsigned int a5) +{ + int v6; // edx + unsigned int v7; // eax + char *v8; // eax + _DWORD *result; // eax + + v6 = *(_DWORD *)this; + v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; + if ( v7 > a4 ) + v7 = a4; + v8 = (char *)a3 + v7 + v6; + if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); + *a1 = result; + return result; +} + +//----- (004B4500) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) +{ + int v6; // edx + unsigned int v7; // eax + int v8; // eax + _DWORD *result; // eax + + v6 = *a2; + v7 = *(_DWORD *)(*a2 - 12) - a3; + if ( v7 > a4 ) + v7 = a4; + v8 = v6 + a3 + v7; + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); + *this = result; + return result; +} + +//----- (004B4570) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004B45B0) -------------------------------------------------------- +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4) +{ + unsigned int *result; // eax + + result = (unsigned int *)&unk_51641C; + if ( a2 ) + { + result = std::string::_S_construct(a2, a3); + *this = result; + } + else + { + *this = (unsigned int *)&unk_51641C; + } + return result; +} + +//----- (004B45F0) -------------------------------------------------------- +void __fastcall std::string::string(_DWORD *a1) +{ + *a1 = &unk_51641C; +} + +//----- (004B4600) -------------------------------------------------------- +void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>( + _DWORD *this, + _BYTE *a2, + _BYTE *a3, + int a4) +{ + void *result; // eax + + result = std::string::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); + *this = result; + return result; +} + +//----- (004B4630) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (004B4660) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (004B4690) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_51641C; + return result; +} + +//----- (004B46B0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_51641C; + return result; +} + +//----- (004B46D0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3) +{ + int v3; // eax + _DWORD *result; // eax + + v3 = -1; + if ( Str ) + v3 = (int)&Str[strlen(Str)]; + result = std::string::_S_construct(Str, v3); + *this = result; + return result; +} + +//----- (004B4720) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004B4760) -------------------------------------------------------- +void __thiscall std::string::string(_DWORD *this, int a2) +{ + *this = &unk_51641C; +} + +//----- (004B4770) -------------------------------------------------------- +unsigned int *__userpurge std::string::string@( + unsigned int **a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + unsigned int *v5; // ecx + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + result = *this; + v5 = *this - 3; + if ( (*(*this - 1) & 0x80000000) != 0 ) + { + result = std::string::_Rep::_M_clone((int)v5, (int)v6, 0); + *a1 = result; + } + else + { + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); + else + ++*(result - 1); + } + *a1 = result; + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4B4770: using guessed type char var_D[13]; + +//----- (004B47F0) -------------------------------------------------------- +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3) +{ + unsigned int *result; // eax + unsigned int *v5; // ecx + + result = *a2; + v5 = *a2 - 3; + if ( (*(*a2 - 1) & 0x80000000) != 0 ) + { + result = std::string::_Rep::_M_clone((int)v5, a3, 0); + *this = result; + } + else + { + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B4870) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) +{ + unsigned int v5; // edx + _DWORD *result; // eax + + v5 = *(_DWORD *)(*a2 - 12); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); + *this = result; + return result; +} + +//----- (004B48D0) -------------------------------------------------------- +_DWORD *__userpurge std::string::string@( + _DWORD *a1@, + std::string *this, + const std::string *a3, + unsigned int a4, + unsigned int a5) +{ + int v6; // edx + unsigned int v7; // eax + char *v8; // eax + _DWORD *result; // eax + + v6 = *(_DWORD *)this; + v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; + if ( v7 > a4 ) + v7 = a4; + v8 = (char *)a3 + v7 + v6; + if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); + *a1 = result; + return result; +} + +//----- (004B4940) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) +{ + int v6; // edx + unsigned int v7; // eax + int v8; // eax + _DWORD *result; // eax + + v6 = *a2; + v7 = *(_DWORD *)(*a2 - 12) - a3; + if ( v7 > a4 ) + v7 = a4; + v8 = v6 + a3 + v7; + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); + *this = result; + return result; +} + +//----- (004B49B0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004B49F0) -------------------------------------------------------- +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4) +{ + unsigned int *result; // eax + + result = (unsigned int *)&unk_51641C; + if ( a2 ) + { + result = std::string::_S_construct(a2, a3); + *this = result; + } + else + { + *this = (unsigned int *)&unk_51641C; + } + return result; +} + +//----- (004B4A30) -------------------------------------------------------- +void __fastcall std::string::string(_DWORD *a1) +{ + *a1 = &unk_51641C; +} + +//----- (004B4A40) -------------------------------------------------------- +void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>( + _DWORD *this, + _BYTE *a2, + _BYTE *a3, + int a4) +{ + void *result; // eax + + result = std::string::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); + *this = result; + return result; +} + +//----- (004B4A70) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (004B4AA0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (004B4AD0) -------------------------------------------------------- +void __fastcall std::string::~string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // ecx + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)(v1 - 3)); + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B4B30) -------------------------------------------------------- +void __fastcall std::string::~string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // ecx + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)(v1 - 3)); + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B4B90) -------------------------------------------------------- +#error "4B4B9A: call analysis failed (funcsize=8)" + +//----- (004B4BB0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *Str) +{ + size_t v3; // eax + unsigned int v5; // [esp+8h] [ebp-14h] + + v3 = strlen((const char *)Str); + return std::string::assign(this, Str, v3, v5); +} +// 4B4BCC: variable 'v5' is possibly undefined + +//----- (004B4BF0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *a2, size_t a3) +{ + unsigned int v5; // [esp+8h] [ebp-14h] + + std::string::assign(this, a2, a3, v5); + return this; +} +// 4B4C05: variable 'v5' is possibly undefined + +//----- (004B4C20) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, char a2) +{ + char v4; // [esp+10h] [ebp-Ch] + + std::string::_M_replace_aux(this, 0, *((_DWORD *)*this - 3), 1u, a2, v4); + return this; +} +// 4B4C47: variable 'v4' is possibly undefined + +//----- (004B4C60) -------------------------------------------------------- +char *__thiscall std::string::operator[](volatile signed __int32 **this, int a2) +{ + volatile signed __int32 *v2; // eax + + v2 = *this; + if ( *((int *)*this - 1) >= 0 ) + { + std::string::_M_leak_hard(this); + v2 = *this; + } + return (char *)v2 + a2; +} + +//----- (004B4C90) -------------------------------------------------------- +unsigned int **__thiscall std::string::operator+=(unsigned int **this, std::string *Str) +{ + size_t v3; // eax + unsigned int v5; // [esp+8h] [ebp-14h] + + v3 = strlen((const char *)Str); + return std::string::append(this, Str, v3, v5); +} +// 4B4CAC: variable 'v5' is possibly undefined + +//----- (004B4CE0) -------------------------------------------------------- +unsigned int **__thiscall std::string::operator+=(unsigned int **this, char a2) +{ + int v3; // edi + unsigned int *v4; // eax + unsigned int v6; // [esp+4h] [ebp-28h] + + v3 = *(*this - 3); + if ( v3 + 1 > *(*this - 2) || (int)*(*this - 1) > 0 ) + std::string::reserve(this, (std::string *)(v3 + 1), v6); + *((_BYTE *)*this + *(*this - 3)) = a2; + v4 = *this; + if ( *this != (unsigned int *)&unk_51641C ) + { + *(v4 - 1) = 0; + *(v4 - 3) = v3 + 1; + *((_BYTE *)v4 + v3 + 1) = 0; + } + return this; +} +// 4B4D06: variable 'v6' is possibly undefined + +//----- (004B4D50) -------------------------------------------------------- +int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *a2, char *a3) +{ + int result; // eax + char *v4; // edx + int v5; // edi + _BYTE *v6; // ecx + int v7; // eax + + result = *((_DWORD *)this + 3); + v4 = (char *)a2 + 1; + *(_BYTE *)a2 = 37; + if ( (result & 0x800) != 0 ) + { + *((_BYTE *)a2 + 1) = 43; + v4 = (char *)a2 + 2; + } + if ( (result & 0x400) != 0 ) + *v4++ = 35; + *(_WORD *)v4 = 10798; + v5 = result & 0x104; + if ( (_BYTE)a3 ) + { + v6 = v4 + 3; + v4[2] = (char)a3; + if ( v5 != 4 ) + goto LABEL_7; +LABEL_12: + *v6 = 102; + v6[1] = 0; + return result; + } + v6 = v4 + 2; + if ( v5 == 4 ) + goto LABEL_12; +LABEL_7: + v7 = (result & 0x4000) == 0 ? 0x20 : 0; + if ( v5 == 256 ) + result = v7 + 69; + else + result = v7 + 71; + v6[1] = 0; + *v6 = result; + return result; +} + +//----- (004B4DF0) -------------------------------------------------------- +void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5384CC; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 4B4DFC: variable 'v2' is possibly undefined +// 5384CC: using guessed type void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this); + +//----- (004B4E20) -------------------------------------------------------- +void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5384CC; + std::exception::~exception(a1); +} +// 4B4E20: variable 'v1' is possibly undefined +// 5384CC: using guessed type void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this); + +//----- (004B4E30) -------------------------------------------------------- +int __cdecl std::money_base::_S_construct_pattern() +{ + return std::money_base::_S_default_pattern; +} +// 533540: using guessed type int std::money_base::_S_default_pattern; + +//----- (004B4E40) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ecx + _DWORD *v6; // eax + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x44, v8); + *v4 = &off_538D0C; + v4[1] = 0; + v4[2] = 0; + v4[3] = 0; + *((_WORD *)v4 + 8) = 0; + *((_BYTE *)v4 + 18) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + *((_BYTE *)v4 + 67) = 0; + this[2] = v4; + } + *((_BYTE *)v4 + 17) = 46; + v5 = std::money_base::_S_atoms; + *(_BYTE *)(this[2] + 18) = 44; + v6 = (_DWORD *)this[2]; + v6[2] = &unk_52F140; + v6[3] = 0; + v6[5] = &unk_52F140; + v6[6] = 0; + v6[7] = &unk_52F140; + v6[8] = 0; + v6[9] = &unk_52F140; + v6[10] = 0; + v6[11] = 0; + v6[12] = std::money_base::_S_default_pattern; + *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; + for ( result = 0; result != 11; ++result ) + *(_BYTE *)(this[2] + result + 56) = v5[result]; + return result; +} +// 4B4EE7: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 533540: using guessed type int std::money_base::_S_default_pattern; +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (004B4F60) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5384E0; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 5384E0: using guessed type int (*off_5384E0)(); + +//----- (004B4FC0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_5384E0; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 5384E0: using guessed type int (*off_5384E0)(); + +//----- (004B5020) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_5384E0; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 5384E0: using guessed type int (*off_5384E0)(); + +//----- (004B5080) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5384E0; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 5384E0: using guessed type int (*off_5384E0)(); + +//----- (004B50E0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_5384E0; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 5384E0: using guessed type int (*off_5384E0)(); + +//----- (004B5140) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_5384E0; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 5384E0: using guessed type int (*off_5384E0)(); + +//----- (004B51A0) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4B51A7: variable 'v2' is possibly undefined + +//----- (004B51D0) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_5384E0; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4B51D7: variable 'v1' is possibly undefined +// 5384E0: using guessed type int (*off_5384E0)(); + +//----- (004B5200) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ecx + _DWORD *v6; // eax + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x44, v8); + *v4 = &off_538D1C; + v4[1] = 0; + v4[2] = 0; + v4[3] = 0; + *((_WORD *)v4 + 8) = 0; + *((_BYTE *)v4 + 18) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + *((_BYTE *)v4 + 67) = 0; + this[2] = v4; + } + *((_BYTE *)v4 + 17) = 46; + v5 = std::money_base::_S_atoms; + *(_BYTE *)(this[2] + 18) = 44; + v6 = (_DWORD *)this[2]; + v6[2] = &unk_52F140; + v6[3] = 0; + v6[5] = &unk_52F140; + v6[6] = 0; + v6[7] = &unk_52F140; + v6[8] = 0; + v6[9] = &unk_52F140; + v6[10] = 0; + v6[11] = 0; + v6[12] = std::money_base::_S_default_pattern; + *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; + for ( result = 0; result != 11; ++result ) + *(_BYTE *)(this[2] + result + 56) = v5[result]; + return result; +} +// 4B52A7: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 533540: using guessed type int std::money_base::_S_default_pattern; +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (004B5320) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_538514; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 538514: using guessed type int (*off_538514)(); + +//----- (004B5380) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_538514; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 538514: using guessed type int (*off_538514)(); + +//----- (004B53E0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_538514; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 538514: using guessed type int (*off_538514)(); + +//----- (004B5440) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_538514; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 538514: using guessed type int (*off_538514)(); + +//----- (004B54A0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_538514; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 538514: using guessed type int (*off_538514)(); + +//----- (004B5500) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_538514; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 538514: using guessed type int (*off_538514)(); + +//----- (004B5560) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4B5567: variable 'v2' is possibly undefined + +//----- (004B5590) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_538514; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4B5597: variable 'v1' is possibly undefined +// 538514: using guessed type int (*off_538514)(); + +//----- (004B55C0) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ebx + int v6; // ecx + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x54, v8); + v4[1] = 0; + *v4 = &off_538D2C; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + *(_DWORD *)((char *)v4 + 18) = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + v4[14] = 0; + *((_BYTE *)v4 + 82) = 0; + this[2] = v4; + } + *(_DWORD *)((char *)v4 + 18) = 2883630; + v4[2] = &unk_52F140; + v5 = std::money_base::_S_atoms; + v4[13] = std::money_base::_S_default_pattern; + v4[3] = 0; + v4[6] = &unk_52F142; + v4[7] = 0; + v4[8] = &unk_52F142; + v4[9] = 0; + v4[10] = &unk_52F142; + v4[11] = 0; + v4[12] = 0; + *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; + v6 = this[2]; + for ( result = 0; result != 11; ++result ) + *(_WORD *)(v6 + 2 * result + 60) = v5[result]; + return result; +} +// 4B565F: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 533540: using guessed type int std::money_base::_S_default_pattern; +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (004B56E0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_538548; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 538548: using guessed type int (*off_538548)(); + +//----- (004B5740) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_538548; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 538548: using guessed type int (*off_538548)(); + +//----- (004B57A0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_538548; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 538548: using guessed type int (*off_538548)(); + +//----- (004B5800) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_538548; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 538548: using guessed type int (*off_538548)(); + +//----- (004B5860) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_538548; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 538548: using guessed type int (*off_538548)(); + +//----- (004B58C0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_538548; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 538548: using guessed type int (*off_538548)(); + +//----- (004B5920) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4B5927: variable 'v2' is possibly undefined + +//----- (004B5950) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_538548; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4B5957: variable 'v1' is possibly undefined +// 538548: using guessed type int (*off_538548)(); + +//----- (004B5980) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ebx + int v6; // ecx + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x54, v8); + v4[1] = 0; + *v4 = &off_538D3C; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + *(_DWORD *)((char *)v4 + 18) = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + v4[14] = 0; + *((_BYTE *)v4 + 82) = 0; + this[2] = v4; + } + *(_DWORD *)((char *)v4 + 18) = 2883630; + v4[2] = &unk_52F140; + v5 = std::money_base::_S_atoms; + v4[13] = std::money_base::_S_default_pattern; + v4[3] = 0; + v4[6] = &unk_52F142; + v4[7] = 0; + v4[8] = &unk_52F142; + v4[9] = 0; + v4[10] = &unk_52F142; + v4[11] = 0; + v4[12] = 0; + *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; + v6 = this[2]; + for ( result = 0; result != 11; ++result ) + *(_WORD *)(v6 + 2 * result + 60) = v5[result]; + return result; +} +// 4B5A1F: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 533540: using guessed type int std::money_base::_S_default_pattern; +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (004B5AA0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_53857C; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 53857C: using guessed type int (*off_53857C)(); + +//----- (004B5B00) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_53857C; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 53857C: using guessed type int (*off_53857C)(); + +//----- (004B5B60) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_53857C; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 53857C: using guessed type int (*off_53857C)(); + +//----- (004B5BC0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_53857C; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 53857C: using guessed type int (*off_53857C)(); + +//----- (004B5C20) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_53857C; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 53857C: using guessed type int (*off_53857C)(); + +//----- (004B5C80) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_53857C; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 53857C: using guessed type int (*off_53857C)(); + +//----- (004B5CE0) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4B5CE7: variable 'v2' is possibly undefined + +//----- (004B5D10) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_53857C; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4B5D17: variable 'v1' is possibly undefined +// 53857C: using guessed type int (*off_53857C)(); + +//----- (004B5D40) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) +{ + _DWORD *result; // eax + void (__cdecl *v4)(void *); // [esp+4h] [ebp-18h] + + result = (_DWORD *)this[2]; + if ( !result ) + { + result = operator new((struct type_info *)0xC8, v4); + result[1] = 0; + *result = &off_538C08; + result[2] = 0; + result[3] = 0; + result[4] = 0; + result[5] = 0; + result[6] = 0; + result[7] = 0; + result[8] = 0; + result[9] = 0; + result[10] = 0; + result[11] = 0; + result[12] = 0; + result[13] = 0; + result[14] = 0; + result[15] = 0; + result[16] = 0; + result[17] = 0; + result[18] = 0; + result[19] = 0; + result[20] = 0; + result[21] = 0; + result[22] = 0; + result[23] = 0; + result[24] = 0; + result[25] = 0; + result[26] = 0; + result[27] = 0; + result[28] = 0; + result[29] = 0; + result[30] = 0; + result[31] = 0; + result[32] = 0; + result[33] = 0; + result[34] = 0; + result[35] = 0; + result[36] = 0; + result[37] = 0; + result[38] = 0; + result[39] = 0; + result[40] = 0; + result[41] = 0; + result[42] = 0; + result[43] = 0; + result[44] = 0; + result[45] = 0; + result[46] = 0; + result[47] = 0; + result[48] = 0; + *((_BYTE *)result + 196) = 0; + this[2] = result; + } + result[2] = "%m/%d/%y"; + result[3] = "%m/%d/%y"; + result[4] = "%H:%M:%S"; + result[5] = "%H:%M:%S"; + result[6] = &off_530836; + result[7] = &off_530836; + result[8] = 5441591; + result[9] = &unk_53083A; + result[10] = &off_530836; + result[11] = "Sunday"; + result[12] = "Monday"; + result[13] = "Tuesday"; + result[14] = "Wednesday"; + result[15] = "Thursday"; + result[16] = "Friday"; + result[17] = "Saturday"; + result[18] = &off_530876; + result[19] = &off_53087A; + result[20] = &off_53087E; + result[21] = &off_530882; + result[22] = &off_530886; + result[23] = &off_53088A; + result[24] = &off_53088E; + result[25] = "January"; + result[26] = "February"; + result[27] = "March"; + result[28] = "April"; + result[29] = "May"; + result[30] = "June"; + result[31] = "July"; + result[32] = "August"; + result[33] = "September"; + result[34] = "October"; + result[35] = "November"; + result[36] = "December"; + result[37] = &off_5308E8; + result[38] = &off_5308EC; + result[39] = &off_5308F0; + result[40] = &off_5308F4; + result[41] = "May"; + result[42] = &off_5308F8; + result[43] = &off_5308FC; + result[44] = &off_530900; + result[45] = &off_530904; + result[46] = &off_530908; + result[47] = &off_53090C; + result[48] = &off_530910; + return result; +} +// 4B5EE1: variable 'v4' is possibly undefined +// 530836: using guessed type void *off_530836; +// 530876: using guessed type void *off_530876; +// 53087A: using guessed type void *off_53087A; +// 53087E: using guessed type void *off_53087E; +// 530882: using guessed type void *off_530882; +// 530886: using guessed type void *off_530886; +// 53088A: using guessed type void *off_53088A; +// 53088E: using guessed type void *off_53088E; +// 5308E8: using guessed type void *off_5308E8; +// 5308EC: using guessed type void *off_5308EC; +// 5308F0: using guessed type void *off_5308F0; +// 5308F4: using guessed type void *off_5308F4; +// 5308F8: using guessed type void *off_5308F8; +// 5308FC: using guessed type void *off_5308FC; +// 530900: using guessed type void *off_530900; +// 530904: using guessed type void *off_530904; +// 530908: using guessed type void *off_530908; +// 53090C: using guessed type void *off_53090C; +// 530910: using guessed type void *off_530910; +// 538C08: using guessed type int (*off_538C08)(); + +//----- (004B6080) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5385B0; + this[1] = a3 != 0; + this[2] = a2; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 5385B0: using guessed type int (*off_5385B0)(); + +//----- (004B60E0) -------------------------------------------------------- +#error "4B6193: call analysis failed (funcsize=61)" + +//----- (004B61C0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) +{ + *this = &off_5385B0; + this[2] = 0; + this[1] = a2 != 0; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 5385B0: using guessed type int (*off_5385B0)(); + +//----- (004B6220) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5385B0; + this[1] = a3 != 0; + this[2] = a2; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 5385B0: using guessed type int (*off_5385B0)(); + +//----- (004B6280) -------------------------------------------------------- +#error "4B6333: call analysis failed (funcsize=61)" + +//----- (004B6360) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) +{ + *this = &off_5385B0; + this[2] = 0; + this[1] = a2 != 0; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 5385B0: using guessed type int (*off_5385B0)(); + +//----- (004B63C0) -------------------------------------------------------- +void __fastcall std::__timepunct::~__timepunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__timepunct::~__timepunct(v2); + operator delete(a1); +} +// 4B63C6: variable 'v2' is possibly undefined + +//----- (004B63E0) -------------------------------------------------------- +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int **v3; // esi + int v4; // ecx + + v2 = v1; + *v1 = &off_5385B0; + v3 = (int **)v1[4]; + if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) + operator delete[](v3); + v4 = v2[2]; + if ( v4 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); + std::locale::facet::~facet(a1); +} +// 4B63E2: variable 'v1' is possibly undefined +// 5385B0: using guessed type int (*off_5385B0)(); + +//----- (004B6430) -------------------------------------------------------- +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int **v3; // esi + int v4; // ecx + + v2 = v1; + *v1 = &off_5385B0; + v3 = (int **)v1[4]; + if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) + operator delete[](v3); + v4 = v2[2]; + if ( v4 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); + std::locale::facet::~facet(a1); +} +// 4B6432: variable 'v1' is possibly undefined +// 5385B0: using guessed type int (*off_5385B0)(); + +//----- (004B6480) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) +{ + _DWORD *result; // eax + void (__cdecl *v4)(void *); // [esp+4h] [ebp-18h] + + result = (_DWORD *)this[2]; + if ( !result ) + { + result = operator new((struct type_info *)0xC8, v4); + result[1] = 0; + *result = &off_538C18; + result[2] = 0; + result[3] = 0; + result[4] = 0; + result[5] = 0; + result[6] = 0; + result[7] = 0; + result[8] = 0; + result[9] = 0; + result[10] = 0; + result[11] = 0; + result[12] = 0; + result[13] = 0; + result[14] = 0; + result[15] = 0; + result[16] = 0; + result[17] = 0; + result[18] = 0; + result[19] = 0; + result[20] = 0; + result[21] = 0; + result[22] = 0; + result[23] = 0; + result[24] = 0; + result[25] = 0; + result[26] = 0; + result[27] = 0; + result[28] = 0; + result[29] = 0; + result[30] = 0; + result[31] = 0; + result[32] = 0; + result[33] = 0; + result[34] = 0; + result[35] = 0; + result[36] = 0; + result[37] = 0; + result[38] = 0; + result[39] = 0; + result[40] = 0; + result[41] = 0; + result[42] = 0; + result[43] = 0; + result[44] = 0; + result[45] = 0; + result[46] = 0; + result[47] = 0; + result[48] = 0; + *((_BYTE *)result + 196) = 0; + this[2] = result; + } + result[2] = &off_530914; + result[3] = &off_530914; + result[4] = "%"; + result[5] = "%"; + result[6] = &unk_530938; + result[7] = &unk_530938; + result[8] = &off_53093A; + result[9] = &off_530940; + result[10] = &unk_530938; + result[11] = &off_530946; + result[12] = &off_530954; + result[13] = &off_530962; + result[14] = &off_530972; + result[15] = &off_530986; + result[16] = &off_530998; + result[17] = &off_5309A6; + result[18] = &off_5309B8; + result[19] = &off_5309C0; + result[20] = &off_5309C8; + result[21] = &off_5309D0; + result[22] = &off_5309D8; + result[23] = &off_5309E0; + result[24] = &off_5309E8; + result[25] = &off_5309F0; + result[26] = &off_530A00; + result[27] = &off_530A12; + result[28] = &off_530A1E; + result[29] = &off_530A2A; + result[30] = &off_530A32; + result[31] = &off_530A3C; + result[32] = &off_530A46; + result[33] = &off_530A54; + result[34] = &off_530A68; + result[35] = &off_530A78; + result[36] = &off_530A8A; + result[37] = &off_530A9C; + result[38] = &off_530AA4; + result[39] = &off_530AAC; + result[40] = &off_530AB4; + result[41] = &off_530A2A; + result[42] = &off_530ABC; + result[43] = &off_530AC4; + result[44] = &off_530ACC; + result[45] = &off_530AD4; + result[46] = &off_530ADC; + result[47] = &off_530AE4; + result[48] = &off_530AEC; + return result; +} +// 4B6621: variable 'v4' is possibly undefined +// 530914: using guessed type void *off_530914; +// 53093A: using guessed type void *off_53093A; +// 530940: using guessed type int (*off_530940)(); +// 530946: using guessed type void *off_530946; +// 530954: using guessed type void *off_530954; +// 530962: using guessed type void *off_530962; +// 530972: using guessed type void *off_530972; +// 530986: using guessed type void *off_530986; +// 530998: using guessed type void *off_530998; +// 5309A6: using guessed type void *off_5309A6; +// 5309B8: using guessed type void *off_5309B8; +// 5309C0: using guessed type void *off_5309C0; +// 5309C8: using guessed type void *off_5309C8; +// 5309D0: using guessed type void *off_5309D0; +// 5309D8: using guessed type void *off_5309D8; +// 5309E0: using guessed type void *off_5309E0; +// 5309E8: using guessed type void *off_5309E8; +// 5309F0: using guessed type void *off_5309F0; +// 530A00: using guessed type void *off_530A00; +// 530A12: using guessed type void *off_530A12; +// 530A1E: using guessed type void *off_530A1E; +// 530A2A: using guessed type void *off_530A2A; +// 530A32: using guessed type void *off_530A32; +// 530A3C: using guessed type void *off_530A3C; +// 530A46: using guessed type void *off_530A46; +// 530A54: using guessed type void *off_530A54; +// 530A68: using guessed type void *off_530A68; +// 530A78: using guessed type void *off_530A78; +// 530A8A: using guessed type void *off_530A8A; +// 530A9C: using guessed type void *off_530A9C; +// 530AA4: using guessed type void *off_530AA4; +// 530AAC: using guessed type void *off_530AAC; +// 530AB4: using guessed type void *off_530AB4; +// 530ABC: using guessed type void *off_530ABC; +// 530AC4: using guessed type void *off_530AC4; +// 530ACC: using guessed type void *off_530ACC; +// 530AD4: using guessed type void *off_530AD4; +// 530ADC: using guessed type void *off_530ADC; +// 530AE4: using guessed type void *off_530AE4; +// 530AEC: using guessed type void *off_530AEC; +// 538C18: using guessed type int (*off_538C18)(); + +//----- (004B67C0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5385C0; + this[1] = a3 != 0; + this[2] = a2; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 5385C0: using guessed type int (*off_5385C0)(); + +//----- (004B6820) -------------------------------------------------------- +#error "4B68D3: call analysis failed (funcsize=61)" + +//----- (004B6900) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) +{ + *this = &off_5385C0; + this[2] = 0; + this[1] = a2 != 0; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 5385C0: using guessed type int (*off_5385C0)(); + +//----- (004B6960) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5385C0; + this[1] = a3 != 0; + this[2] = a2; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 5385C0: using guessed type int (*off_5385C0)(); + +//----- (004B69C0) -------------------------------------------------------- +#error "4B6A73: call analysis failed (funcsize=61)" + +//----- (004B6AA0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) +{ + *this = &off_5385C0; + this[2] = 0; + this[1] = a2 != 0; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 5385C0: using guessed type int (*off_5385C0)(); + +//----- (004B6B00) -------------------------------------------------------- +void __fastcall std::__timepunct::~__timepunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__timepunct::~__timepunct(v2); + operator delete(a1); +} +// 4B6B06: variable 'v2' is possibly undefined + +//----- (004B6B20) -------------------------------------------------------- +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int **v3; // esi + int v4; // ecx + + v2 = v1; + *v1 = &off_5385C0; + v3 = (int **)v1[4]; + if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) + operator delete[](v3); + v4 = v2[2]; + if ( v4 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); + std::locale::facet::~facet(a1); +} +// 4B6B22: variable 'v1' is possibly undefined +// 5385C0: using guessed type int (*off_5385C0)(); + +//----- (004B6B70) -------------------------------------------------------- +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int **v3; // esi + int v4; // ecx + + v2 = v1; + *v1 = &off_5385C0; + v3 = (int **)v1[4]; + if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) + operator delete[](v3); + v4 = v2[2]; + if ( v4 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); + std::locale::facet::~facet(a1); +} +// 4B6B72: variable 'v1' is possibly undefined +// 5385C0: using guessed type int (*off_5385C0)(); + +//----- (004B6BC0) -------------------------------------------------------- +int __thiscall std::logic_error::logic_error(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = &off_5385D0; + this[1] = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = &unk_51641C; + return result; +} +// 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); + +//----- (004B6BE0) -------------------------------------------------------- +_DWORD *__userpurge std::logic_error::logic_error@(int a1@, std::logic_error *this, const char *a3) +{ + _DWORD *v3; // ecx + int v5; // [esp+1Fh] [ebp-9h] BYREF + + v3 = (_DWORD *)(a1 + 4); + *(v3 - 1) = &off_5385D0; + return std::string::string(v3, (char *)this, (int)&v5); +} +// 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); + +//----- (004B6C20) -------------------------------------------------------- +_DWORD *__thiscall std::logic_error::logic_error(_DWORD *this, int a2) +{ + _DWORD *v2; // ecx + unsigned int v4; // [esp+8h] [ebp-10h] + + v2 = this + 1; + *(v2 - 1) = &off_5385D0; + return std::__cow_string::__cow_string(v2, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v4); +} +// 4B6C43: variable 'v4' is possibly undefined +// 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); + +//----- (004B6C60) -------------------------------------------------------- +unsigned int *__userpurge std::logic_error::logic_error@( + int a1@, + unsigned int **this, + const std::logic_error *a3) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + *(_DWORD *)a1 = &off_5385D0; + return std::string::string((unsigned int **)(a1 + 4), this + 1, v4); +} +// 4B6C76: variable 'v4' is possibly undefined +// 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); + +//----- (004B6C90) -------------------------------------------------------- +unsigned int *__userpurge std::logic_error::logic_error@(int a1@, unsigned int **this, const std::string *a3) +{ + unsigned int **v3; // ecx + const std::string *v5; // [esp+4h] [ebp-14h] + + v3 = (unsigned int **)(a1 + 4); + *(v3 - 1) = (unsigned int *)&off_5385D0; + return std::string::string(v3, this, v5); +} +// 4B6CAA: variable 'v5' is possibly undefined +// 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); + +//----- (004B6CD0) -------------------------------------------------------- +void __fastcall std::logic_error::~logic_error(_DWORD *a1) +{ + std::logic_error::~logic_error(a1); + operator delete(a1); +} + +//----- (004B6CF0) -------------------------------------------------------- +void __fastcall std::logic_error::~logic_error(_DWORD *a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + std::exception *v3; // [esp+0h] [ebp-2Ch] + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = (volatile signed __int32 *)a1[1]; + *a1 = &off_5385D0; + if ( v1 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v4); + } + std::exception::~exception(v3); +} +// 4B6D09: variable 'v3' is possibly undefined +// 5385D0: using guessed type void (__cdecl *off_5385D0)(std::logic_error *__hidden this); +// 78A9D4: using guessed type int _CRT_MT; +// 4B6CF0: using guessed type int var_D[3]; + +//----- (004B6D60) -------------------------------------------------------- +int *__thiscall std::logic_error::operator=(int *this, int a2) +{ + std::string *v4; // [esp+4h] [ebp-18h] + + std::string::swap(this + 1, (std::string *)(a2 + 4), v4); + return this; +} +// 4B6D73: variable 'v4' is possibly undefined + +//----- (004B6D90) -------------------------------------------------------- +unsigned int **__thiscall std::logic_error::operator=(unsigned int **this, int a2) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + std::string::assign(this + 1, (unsigned int **)(a2 + 4), v4); + return this; +} +// 4B6DA3: variable 'v4' is possibly undefined + +//----- (004B6DC0) -------------------------------------------------------- +_DWORD *__userpurge std::range_error::range_error@(_DWORD *a1@, std::range_error *this, const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_5385E4; + return result; +} +// 4B6DCD: variable 'v5' is possibly undefined +// 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); + +//----- (004B6DF0) -------------------------------------------------------- +_DWORD *__thiscall std::range_error::range_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::runtime_error::runtime_error(this, a2); + *this = &off_5385E4; + return result; +} +// 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); + +//----- (004B6E20) -------------------------------------------------------- +unsigned int *__userpurge std::range_error::range_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_5385E4; + return result; +} +// 4B6E2D: variable 'v5' is possibly undefined +// 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); + +//----- (004B6E50) -------------------------------------------------------- +void __fastcall std::range_error::~range_error(_DWORD *a1) +{ + *a1 = &off_5385E4; + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} +// 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); + +//----- (004B6E70) -------------------------------------------------------- +void __fastcall std::range_error::~range_error(_DWORD *a1) +{ + *a1 = &off_5385E4; + std::runtime_error::~runtime_error(a1); +} +// 5385E4: using guessed type void (__cdecl *off_5385E4)(std::range_error *__hidden this); + +//----- (004B6E80) -------------------------------------------------------- +int __usercall std::_Destroy_aux::__destroy *>@( + int a1@, + int a2, + int a3) +{ + volatile signed __int32 **v4; // ecx + + while ( a2 != a3 ) + { + v4 = (volatile signed __int32 **)(a2 + 4); + a2 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + return a1; +} + +//----- (004B6EA0) -------------------------------------------------------- +int __usercall std::_Destroy_aux::__destroy *>@( + int a1@, + int a2, + int a3) +{ + volatile signed __int32 **v4; // ecx + + while ( a2 != a3 ) + { + v4 = (volatile signed __int32 **)(a2 + 4); + a2 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + return a1; +} + +//----- (004B6EC0) -------------------------------------------------------- +int __usercall std::_Destroy_aux::__destroy *>@( + int a1@, + int a2, + int a3) +{ + volatile signed __int32 **v4; // ecx + + while ( a2 != a3 ) + { + v4 = (volatile signed __int32 **)(a2 + 4); + a2 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + return a1; +} + +//----- (004B6EE0) -------------------------------------------------------- +void __cdecl std::_Destroy_aux::__destroy(void **a1, char **a2) +{ + char *v3; // edi + char *i; // esi + volatile signed __int32 **v5; // ecx + + while ( a1 != (void **)a2 ) + { + v3 = (char *)a1[1]; + for ( i = (char *)*a1; v3 != i; i += 8 ) + { + v5 = (volatile signed __int32 **)(i + 4); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v5); + } + if ( *a1 ) + operator delete(*a1); + a1 += 3; + } +} + +//----- (004B6F24) -------------------------------------------------------- +int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3) +{ + void **v4; // ecx + + while ( a2 != a3 ) + { + v4 = a2; + a2 += 16; + night::ns_sourcemap::~ns_sourcemap(v4); + } + return a1; +} + +//----- (004B6F44) -------------------------------------------------------- +int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3) +{ + void **v4; // ecx + + while ( a2 != a3 ) + { + v4 = a2; + a2 += 6; + std::string::_M_dispose(v4); + } + return a1; +} + +//----- (004B6F70) -------------------------------------------------------- +void __fastcall __spoils std::`anonymous namespace'::utf16_span( + unsigned int a1, + unsigned __int8 *a2, + unsigned int a3, + char a4) +{ + unsigned int v4; // edi + unsigned int v5; // esi + unsigned int v6; // ebx + unsigned int utf8_code; // eax + unsigned __int8 *v9[6]; // [esp+Ch] [ebp-18h] BYREF + + v4 = a3; + v9[1] = a2; + if ( (a4 & 4) != 0 ) + std::`anonymous namespace'::read_bom((int *)v9); + if ( a1 <= 1 ) + { + v6 = 1; +LABEL_11: + if ( a1 == v6 ) + { + if ( a3 > 0xFFFE ) + v4 = 0xFFFF; + std::`anonymous namespace'::read_utf8_code_point(v9, v4); + } + } + else + { + v5 = 0; + v6 = 1; + while ( 1 ) + { + utf8_code = std::`anonymous namespace'::read_utf8_code_point(v9, a3); + if ( a3 < utf8_code ) + break; + if ( utf8_code <= 0xFFFF ) + v6 = v5; + v5 = v6 + 1; + v6 += 2; + if ( v6 >= a1 ) + goto LABEL_11; + } + } +} + +//----- (004B7020) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_utf16_bom@(int result@, _DWORD *a2@) +{ + int v2; // esi + + if ( (*(_BYTE *)a2 & 4) != 0 ) + { + v2 = result; + result = std::`anonymous namespace'::read_bom( + result, + std::`anonymous namespace'::utf16_bom); + if ( (_BYTE)result ) + { + *a2 &= ~1u; + } + else + { + result = std::`anonymous namespace'::read_bom( + v2, + std::`anonymous namespace'::utf16le_bom); + if ( (_BYTE)result ) + *a2 |= 1u; + } + } + return result; +} +// 533554: using guessed type _WORD std::`anonymous namespace'::utf16le_bom[2]; +// 53355C: using guessed type _WORD std::`anonymous namespace'::utf16_bom[2]; + +//----- (004B7070) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf8_bom@(int *a1@) +{ + int v1; // ecx + + v1 = *a1; + if ( (unsigned int)(a1[1] - *a1) <= 2 ) + return 0; + *(_BYTE *)(v1 + 2) = -65; + *(_WORD *)v1 = -17425; + *a1 += 3; + return 1; +} + +//----- (004B70A0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf16_bom@(int a1@, char a2@
) +{ + _WORD *v2; // ebx + unsigned int v3; // ecx + bool v4; // zf + int v5; // edx + + if ( (a2 & 2) == 0 ) + return 1; + v2 = *(_WORD **)a1; + v3 = *(_DWORD *)(a1 + 4) - *(_DWORD *)a1; + v4 = (a2 & 1) == 0; + v5 = 0; + if ( !v4 ) + { + if ( v3 > 1 ) + { + v5 = 1; + *v2 = -257; + *(_DWORD *)a1 += 2; + } + return v5; + } + if ( v3 <= 1 ) + return v5; + *v2 = -2; + *(_DWORD *)a1 += 2; + return 1; +} + +//----- (004B7100) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_utf8_code_point@( + unsigned __int8 **a1@, + unsigned int a2@) +{ + unsigned __int8 *v2; // ecx + unsigned int v3; // edi + int v4; // ebx + unsigned int v5; // esi + unsigned __int8 v7; // di + unsigned __int8 v8; // di + unsigned __int8 v9; // [esp+7h] [ebp-11h] + + v2 = *a1; + v3 = a1[1] - *a1; + if ( !v3 ) + return -2; + v4 = *v2; + if ( (v4 & 0x80u) == 0 ) + { + v5 = (unsigned __int8)v4; + *a1 = v2 + 1; + return v5; + } + v5 = -1; + if ( (unsigned __int8)v4 <= 0xC1u ) + return v5; + if ( (unsigned __int8)v4 > 0xDFu ) + { + if ( (unsigned __int8)v4 > 0xEFu ) + { + if ( (unsigned __int8)v4 <= 0xF4u ) + { + v5 = -2; + if ( v3 > 3 ) + { + v8 = v2[1]; + v5 = -1; + if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) + { + if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) + { + v5 = -1; + v9 = v2[2]; + if ( (v9 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) + { + v5 = (v9 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; + if ( v5 <= a2 ) + *a1 = v2 + 4; + } + } + } + } + } + } + else + { + v5 = -2; + if ( v3 > 2 ) + { + v7 = v2[1]; + v5 = -1; + if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) + { + v5 = -1; + if ( (v2[2] & 0xC0) == 0x80 ) + { + v5 = (v4 << 12) + (v7 << 6) + v2[2] - 925824; + if ( a2 >= v5 ) + *a1 = v2 + 3; + } + } + } + } + return v5; + } + if ( v3 != 1 ) + { + if ( (v2[1] & 0xC0) == 0x80 ) + { + v5 = (v4 << 6) + v2[1] - 12416; + if ( a2 >= v5 ) + *a1 = v2 + 2; + } + return v5; + } + return -2; +} + +//----- (004B72C0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_utf8_code_point@( + unsigned __int8 **a1@, + unsigned int a2@) +{ + unsigned __int8 *v2; // ecx + unsigned int v3; // edi + int v4; // ebx + unsigned int v5; // esi + unsigned __int8 v7; // di + unsigned __int8 v8; // di + unsigned __int8 v9; // [esp+7h] [ebp-11h] + + v2 = *a1; + v3 = a1[1] - *a1; + if ( !v3 ) + return -2; + v4 = *v2; + if ( (v4 & 0x80u) == 0 ) + { + v5 = (unsigned __int8)v4; + *a1 = v2 + 1; + return v5; + } + v5 = -1; + if ( (unsigned __int8)v4 <= 0xC1u ) + return v5; + if ( (unsigned __int8)v4 > 0xDFu ) + { + if ( (unsigned __int8)v4 > 0xEFu ) + { + if ( (unsigned __int8)v4 <= 0xF4u ) + { + v5 = -2; + if ( v3 > 3 ) + { + v8 = v2[1]; + v5 = -1; + if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) + { + if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) + { + v5 = -1; + v9 = v2[2]; + if ( (v9 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) + { + v5 = (v9 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; + if ( v5 <= a2 ) + *a1 = v2 + 4; + } + } + } + } + } + } + else + { + v5 = -2; + if ( v3 > 2 ) + { + v7 = v2[1]; + v5 = -1; + if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) + { + v5 = -1; + if ( (v2[2] & 0xC0) == 0x80 ) + { + v5 = (v4 << 12) + (v7 << 6) + v2[2] - 925824; + if ( a2 >= v5 ) + *a1 = v2 + 3; + } + } + } + } + return v5; + } + if ( v3 != 1 ) + { + if ( (v2[1] & 0xC0) == 0x80 ) + { + v5 = (v4 << 6) + v2[1] - 12416; + if ( a2 >= v5 ) + *a1 = v2 + 2; + } + return v5; + } + return -2; +} + +//----- (004B7480) -------------------------------------------------------- +unsigned int __usercall std::`anonymous namespace'::read_utf16_code_point@( + unsigned int result@, + unsigned int a2@, + char a3@) +{ + _WORD *v3; // edi + unsigned int v4; // ebx + _DWORD *v5; // esi + int v6; // ecx + int v7; // ecx + unsigned __int16 v8; // bx + + v3 = *(_WORD **)result; + v4 = (unsigned int)(*(_DWORD *)(result + 4) - *(_DWORD *)result) >> 1; + if ( !v4 ) + return -2; + v5 = (_DWORD *)result; + LOWORD(result) = *v3; + v6 = a3 & 1; + if ( !v6 ) + LOWORD(result) = __ROL2__(result, 8); + result = (unsigned __int16)result; + if ( (unsigned int)(unsigned __int16)result - 55296 > 0x3FF ) + { + if ( (unsigned int)(unsigned __int16)result - 56320 > 0x3FF ) + { + v7 = 1; + goto LABEL_7; + } + return -1; + } + if ( v4 == 1 ) + return -2; + v8 = v3[1]; + if ( !v6 ) + v8 = __ROL2__(v8, 8); + if ( (unsigned int)v8 - 56320 > 0x3FF ) + return -1; + v7 = 2; + result = v8 + ((unsigned __int16)result << 10) - 56613888; +LABEL_7: + if ( result <= a2 ) + *v5 = &v3[v7]; + return result; +} + +//----- (004B7530) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@) +{ + _BYTE *v3; // eax + int result; // eax + _BYTE *v5; // esi + int v6; // ebx + _BYTE *v7; // ebx + _BYTE *v8; // ebx + int v9; // esi + + if ( a2 > 0x7F ) + { + if ( a2 > 0x7FF ) + { + if ( a2 <= 0xFFFF ) + { + v8 = *(_BYTE **)a1; + v9 = *(_DWORD *)(a1 + 4); + result = 0; + if ( (unsigned int)(v9 - (_DWORD)v8) > 2 ) + { + *v8 = (a2 >> 12) - 32; + v8[1] = ((a2 >> 6) & 0x3F) + 0x80; + *(_DWORD *)a1 = v8 + 3; + result = 1; + v8[2] = (a2 & 0x3F) + 0x80; + } + } + else + { + result = 0; + if ( a2 <= 0x10FFFF ) + { + v7 = *(_BYTE **)a1; + if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) > 3 ) + { + *v7 = (a2 >> 18) - 16; + v7[1] = ((a2 >> 12) & 0x3F) + 0x80; + v7[2] = ((a2 >> 6) & 0x3F) + 0x80; + *(_DWORD *)a1 = v7 + 4; + result = 1; + v7[3] = (a2 & 0x3F) + 0x80; + } + } + } + } + else + { + v5 = *(_BYTE **)a1; + v6 = *(_DWORD *)(a1 + 4); + result = 0; + if ( (unsigned int)(v6 - (_DWORD)v5) > 1 ) + { + *v5 = (a2 >> 6) - 64; + *(_DWORD *)a1 = v5 + 2; + result = 1; + v5[1] = (a2 & 0x3F) + 0x80; + } + } + } + else + { + v3 = *(_BYTE **)a1; + if ( v3 == *(_BYTE **)(a1 + 4) ) + { + return 0; + } + else + { + *(_DWORD *)a1 = v3 + 1; + *v3 = a2; + return 1; + } + } + return result; +} + +//----- (004B7640) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **a1@, unsigned int a2@) +{ + _BYTE *v3; // eax + int result; // eax + _BYTE *v5; // esi + _BYTE *v6; // ebx + _BYTE *v7; // eax + _BYTE *v8; // esi + _BYTE *v9; // ebx + _BYTE *v10; // ebx + _BYTE *v11; // esi + _BYTE *v12; // ebx + + if ( a2 <= 0x7F ) + { + v3 = *a1; + if ( v3 == a1[1] ) + return 0; + *a1 = v3 + 1; + *v3 = a2; + return 1; + } + if ( a2 <= 0x7FF ) + { + v5 = *a1; + v6 = a1[1]; + result = 0; + if ( (unsigned int)(v6 - v5) <= 1 ) + return result; + *a1 = v5 + 1; + *v5 = (a2 >> 6) - 64; +LABEL_8: + v7 = (*a1)++; + *v7 = (a2 & 0x3F) + 0x80; + return 1; + } + if ( a2 <= 0xFFFF ) + { + v11 = *a1; + v12 = a1[1]; + result = 0; + if ( (unsigned int)(v12 - v11) <= 2 ) + return result; + *a1 = v11 + 1; + *v11 = (a2 >> 12) - 32; + goto LABEL_13; + } + result = 0; + if ( a2 <= 0x10FFFF ) + { + v8 = *a1; + if ( (unsigned int)(a1[1] - *a1) > 3 ) + { + *a1 = v8 + 1; + *v8 = (a2 >> 18) - 16; + v9 = (*a1)++; + *v9 = ((a2 >> 12) & 0x3F) + 0x80; +LABEL_13: + v10 = (*a1)++; + *v10 = ((a2 >> 6) & 0x3F) + 0x80; + goto LABEL_8; + } + } + return result; +} + +//----- (004B7730) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf16_code_point@( + int a1@, + unsigned int a2@, + char a3@) +{ + _WORD *v3; // esi + int result; // eax + unsigned int v5; // ebx + __int16 v6; // dx + __int16 v7; // bx + + v3 = *(_WORD **)a1; + if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) <= 3 ) + return 0; + v5 = a2 >> 10; + v6 = (a2 & 0x3FF) - 9216; + v7 = v5 - 10304; + if ( (a3 & 1) == 0 ) + { + v7 = __ROL2__(v7, 8); + v6 = __ROL2__(v6, 8); + } + *v3 = v7; + *(_DWORD *)a1 = v3 + 2; + result = 1; + v3[1] = v6; + return result; +} + +//----- (004B7780) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::ucs2_in@( + _DWORD *a1@, + int *a2@, + unsigned int a3@, + char a4) +{ + int v7; // edx + unsigned int utf16_code; // eax + _WORD *v9; // ecx + + std::`anonymous namespace'::read_utf16_bom((int)a1, &a4); + if ( a3 > 0xFFFE ) + a3 = 0xFFFF; + if ( !((unsigned int)(a1[1] - *a1) >> 1) ) + return 0; + v7 = *a2; + while ( 1 ) + { + if ( a2[1] == v7 ) + return 1; + utf16_code = std::`anonymous namespace'::read_utf16_code_point((unsigned int)a1, a3, a4); + if ( a3 < utf16_code || utf16_code == -2 ) + break; + v9 = (_WORD *)*a2; + v7 = *a2 + 2; + *a2 = v7; + *v9 = utf16_code; + if ( !((unsigned int)(a1[1] - *a1) >> 1) ) + return 0; + } + return 2; +} + +//----- (004B7810) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::ucs4_in@( + int *a1@, + int *a2@, + unsigned int a3@, + char a4) +{ + int v7; // edx + unsigned int utf8_code; // eax + unsigned int *v9; // ecx + + if ( (a4 & 4) != 0 ) + std::`anonymous namespace'::read_bom(a1); + if ( *a1 == a1[1] ) + return 0; + v7 = *a2; + while ( 1 ) + { + if ( a2[1] == v7 ) + return 1; + utf8_code = std::`anonymous namespace'::read_utf8_code_point((unsigned __int8 **)a1, a3); + if ( utf8_code == -2 ) + return 1; + if ( a3 < utf8_code ) + break; + v9 = (unsigned int *)*a2; + v7 = *a2 + 4; + *a2 = v7; + *v9 = utf8_code; + if ( *a1 == a1[1] ) + return 0; + } + return 2; +} + +//----- (004B7890) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_bom@(int a1@, _WORD *a2@) +{ + _WORD *v2; // ebx + + v2 = *(_WORD **)a1; + if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) <= 1 || *a2 != *v2 ) + return 0; + *(_DWORD *)a1 = v2 + 1; + return 1; +} + +//----- (004B78C0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_bom@(int *a1@) +{ + int v1; // ecx + + v1 = *a1; + if ( (unsigned int)(a1[1] - *a1) <= 2 + || *(_WORD *)v1 != std::`anonymous namespace'::utf8_bom + || *(_BYTE *)(v1 + 2) != 0xBF ) + { + return 0; + } + *a1 = v1 + 3; + return 1; +} +// 533558: using guessed type __int16 std::`anonymous namespace'::utf8_bom; + +//----- (004B7900) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_bom@(int *a1@) +{ + int v1; // ecx + + v1 = *a1; + if ( (unsigned int)(a1[1] - *a1) <= 2 + || *(_WORD *)v1 != std::`anonymous namespace'::utf8_bom + || *(_BYTE *)(v1 + 2) != 0xBF ) + { + return 0; + } + *a1 = v1 + 3; + return 1; +} +// 533558: using guessed type __int16 std::`anonymous namespace'::utf8_bom; + +//----- (004B7940) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::ucs2_out@( + unsigned __int16 **a1@, + _DWORD *a2@, + unsigned int a3@, + char a4) +{ + unsigned __int16 *v4; // ebp + unsigned __int16 *v5; // ecx + _WORD *v6; // ebx + unsigned int v7; // ecx + __int16 v8; // si + + v4 = a1[1]; + v5 = *a1; + if ( *a1 == v4 ) + return 0; + v6 = (_WORD *)*a2; + while ( 1 ) + { + if ( !((unsigned int)(a2[1] - (_DWORD)v6) >> 1) ) + return v4 != v5; + v7 = *v5; + v8 = v7; + if ( v7 - 55296 <= 0x3FF || v7 > a3 ) + break; + if ( (a4 & 1) == 0 ) + v8 = __ROL2__(v7, 8); + *v6 = v8; + v4 = a1[1]; + v6 = (_WORD *)(*a2 + 2); + v5 = *a1 + 1; + *a2 = v6; + *a1 = v5; + if ( v4 == v5 ) + return 0; + } + return 2; +} + +//----- (004B79D0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::utf16_in@( + int *a1@, + _DWORD *a2@, + unsigned int a3@, + char a4, + int a5) +{ + int v8; // edi + _WORD *v9; // eax + __int16 v10; // cx + unsigned int utf8_code; // eax + __int16 v12; // dx + int v14; // [esp+0h] [ebp-18h] + + if ( (a4 & 4) != 0 ) + std::`anonymous namespace'::read_bom(a1); + v8 = a1[1]; + v14 = *a1; + if ( v8 != *a1 ) + { + while ( *a2 != a2[1] ) + { + utf8_code = std::`anonymous namespace'::read_utf8_code_point((unsigned __int8 **)a1, a3); + v12 = utf8_code; + if ( utf8_code == -2 ) + return a5 + 1; + if ( a3 < utf8_code ) + return 2; + if ( utf8_code <= 0xFFFF ) + { + v9 = (_WORD *)*a2; + if ( *a2 == a2[1] ) + goto LABEL_15; + v10 = __ROL2__(v12, 8); + if ( (a4 & 1) != 0 ) + v10 = v12; + *a2 = v9 + 1; + *v9 = v10; + } + else if ( !(unsigned __int8)std::`anonymous namespace'::write_utf16_code_point( + (int)a2, + utf8_code, + a4) ) + { +LABEL_15: + a1[1] = v8; + *a1 = v14; + return 1; + } + v8 = a1[1]; + v14 = *a1; + if ( *a1 == v8 ) + return 0; + } + } + return 0; +} + +//----- (004B7AC0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::ucs2_span@( + unsigned int a1@, + int a2@, + unsigned int a3@, + char a4) +{ + int v7; // ebx + bool v8; // dl + bool v9; // al + + std::`anonymous namespace'::read_utf16_bom(a1, &a4); + if ( a3 > 0xFFFE ) + a3 = 0xFFFF; + v7 = a2 - 1; + if ( a2 ) + { + do + { + v8 = a3 >= std::`anonymous namespace'::read_utf16_code_point(a1, a3, a4); + v9 = v7-- != 0; + } + while ( v9 && v8 ); + } + return *(_DWORD *)a1; +} + +//----- (004B7B20) -------------------------------------------------------- +void __fastcall __spoils std::`anonymous namespace'::ucs2_span( + int a1, + unsigned __int8 *a2, + unsigned int a3, + char a4) +{ + unsigned int v5; // esi + int v6; // ebx + bool v7; // dl + bool v8; // al + unsigned __int8 *v9[6]; // [esp+8h] [ebp-18h] BYREF + + v5 = a3; + v9[1] = a2; + if ( (a4 & 4) != 0 ) + std::`anonymous namespace'::read_bom((int *)v9); + if ( a3 > 0xFFFE ) + v5 = 0xFFFF; + v6 = a1 - 1; + if ( a1 ) + { + do + { + v7 = v5 >= std::`anonymous namespace'::read_utf8_code_point(v9, v5); + v8 = v6-- != 0; + } + while ( v8 && v7 ); + } +} + +//----- (004B7B90) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::utf16_out@( + unsigned __int16 **a1@, + int *a2@, + unsigned int a3@, + char a4, + int a5) +{ + char v6; // al + int *v8; // [esp+0h] [ebp-10h] + unsigned int v9; // [esp+4h] [ebp-Ch] + + if ( (a4 & 2) != 0 + && (v9 = a3, v8 = a2, v6 = std::`anonymous namespace'::write_utf8_bom(a2), a2 = v8, a3 = v9, !v6) ) + { + return 1; + } + else + { + return std::`anonymous namespace'::utf16_out(a1, (_BYTE **)a2, a3, a5); + } +} + +//----- (004B7BE0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::utf16_out@( + unsigned __int16 **a1@, + _BYTE **a2@, + unsigned int a3@, + int a4) +{ + unsigned __int16 *i; // eax + int v8; // eax + int v9; // ebp + unsigned int v10; // edx + + for ( i = *a1; ; *a1 = i ) + { + if ( a1[1] == i ) + return 0; + v10 = *i; + if ( v10 - 55296 <= 0x3FF ) + { + if ( a4 == 1 ) + return 2; + if ( (unsigned int)(a1[1] - i) <= 1 ) + return 0; + v8 = i[1]; + if ( (unsigned int)(v8 - 56320) > 0x3FF ) + return 2; + v9 = 2; + v10 = v8 + (v10 << 10) - 56613888; + if ( v10 > a3 ) + return 2; + } + else + { + if ( v10 - 56320 <= 0x3FF ) + return 2; + v9 = 1; + if ( v10 > a3 ) + return 2; + } + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(a2, v10) ) + break; + i = &(*a1)[v9]; + } + return 1; +} + +//----- (004B7C90) -------------------------------------------------------- +char *__thiscall std::_Vector_base::_M_create_storage(_DWORD *this, unsigned int a2) +{ + char *v2; // eax + char *result; // eax + + v2 = 0; + if ( a2 ) + v2 = (char *)__gnu_cxx::new_allocator::allocate(a2); + *this = v2; + this[1] = v2; + result = &v2[24 * a2]; + this[2] = result; + return result; +} + +//----- (004B7CC0) -------------------------------------------------------- +int __fastcall std::__basic_file::fd(int a1) +{ + return *(_DWORD *)(*(_DWORD *)a1 + 16); +} + +//----- (004B7CD0) -------------------------------------------------------- +int __fastcall std::__basic_file::file(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004B7CE0) -------------------------------------------------------- +_BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4) +{ + unsigned int v4; // edx + const char *Mode; // eax + FILE *v7; // eax + + v4 = (a3 & 0x3D) - 1; + if ( v4 > 0x3B ) + return 0; + Mode = (&CSWTCH_20)[v4]; + if ( !Mode ) + return 0; + if ( *(_DWORD *)this ) + return 0; + v7 = fopen(FileName, Mode); + *(_DWORD *)this = v7; + if ( !v7 ) + return 0; + this[4] = 1; + return this; +} + +//----- (004B7D40) -------------------------------------------------------- +FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3) +{ + FILE *v4; // ecx + unsigned int v5; // edx + char *v6; // esi + int v7; // eax + char v8; // dl + FILE *v9; // eax + wchar_t Mode[2]; // [esp+18h] [ebp-14h] BYREF + int v12; // [esp+1Ch] [ebp-10h] + + v4 = 0; + v5 = (a3 & 0x3D) - 1; + if ( v5 > 0x3B ) + return v4; + v6 = (&CSWTCH_20)[v5]; + if ( !v6 ) + return v4; + v4 = *(FILE **)this; + if ( !*(_DWORD *)this ) + { + *(_DWORD *)Mode = 0; + v7 = 0; + v12 = 0; + v8 = *v6; + do + { + while ( 1 ) + { + while ( 1 ) + { + while ( v8 == 98 ) + { + Mode[v7++] = 98; + v8 = v6[v7]; + if ( !v8 ) + goto LABEL_10; + } + if ( v8 > 98 ) + break; + if ( v8 == 43 ) + { + Mode[v7++] = 43; + v8 = v6[v7]; + if ( !v8 ) + goto LABEL_10; + } + else + { + if ( v8 != 97 ) + return v4; + Mode[v7++] = 97; + v8 = v6[v7]; + if ( !v8 ) + goto LABEL_10; + } + } + if ( v8 != 114 ) + break; + Mode[v7++] = 114; + v8 = v6[v7]; + if ( !v8 ) + goto LABEL_10; + } + if ( v8 != 119 ) + return v4; + Mode[v7++] = 119; + v8 = v6[v7]; + } + while ( v8 ); +LABEL_10: + v9 = _wfopen(FileName, Mode); + *(_DWORD *)this = v9; + v4 = v9; + if ( v9 ) + { + this[4] = 1; + return (FILE *)this; + } + return v4; + } + return 0; +} + +//----- (004B7E90) -------------------------------------------------------- +int __fastcall std::__basic_file::sync(FILE **a1) +{ + return fflush(*a1); +} + +//----- (004B7EB0) -------------------------------------------------------- +int __fastcall std::__basic_file::close(int a1) +{ + int v3; // eax + + if ( !*(_DWORD *)a1 ) + return 0; + if ( *(_BYTE *)(a1 + 4) ) + { + v3 = fclose(*(FILE **)a1); + *(_DWORD *)a1 = 0; + if ( v3 ) + return 0; + else + return a1; + } + else + { + *(_DWORD *)a1 = 0; + return a1; + } +} + +//----- (004B7F10) -------------------------------------------------------- +int __thiscall std::__basic_file::xsgetn(void *this, void *DstBuf, unsigned int MaxCharCount) +{ + int v4; // ebx + + do + v4 = read(*(_DWORD *)(*(_DWORD *)this + 16), DstBuf, MaxCharCount); + while ( v4 == -1 && *_errno() == 4 ); + return v4; +} + +//----- (004B7F60) -------------------------------------------------------- +unsigned int __thiscall std::__basic_file::xsputn(void *this, char *a2, unsigned int a3) +{ + return `anonymous namespace'::xwrite(*(_DWORD *)(*(_DWORD *)this + 16), a2, a3); +} + +//----- (004B7F80) -------------------------------------------------------- +__int64 __thiscall std::__basic_file::seekoff(void *this, __int64 Offset, int Origin) +{ + if ( (unsigned __int64)(Offset + 0x80000000LL) >> 32 ) + return -1LL; + else + return lseek(*(_DWORD *)(*(_DWORD *)this + 16), Offset, Origin); +} + +//----- (004B7FE0) -------------------------------------------------------- +_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3) +{ + int v4; // edi + _BYTE *result; // eax + + if ( !*(_DWORD *)this && Stream ) + { + v4 = *_errno(); + *_errno() = 0; + do + { + if ( !fflush(Stream) ) + { + *_errno() = v4; + result = this; + *(_DWORD *)this = Stream; + this[4] = 0; + return result; + } + } + while ( *_errno() == 4 ); + *_errno() = v4; + } + return 0; +} + +//----- (004B8060) -------------------------------------------------------- +_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, int FileHandle, char a3) +{ + unsigned int v3; // eax + const char *Format; // eax + _BYTE *v5; // ebx + FILE *v7; // eax + + v3 = (a3 & 0x3D) - 1; + if ( v3 > 0x3B ) + return 0; + Format = (&CSWTCH_20)[v3]; + if ( !Format ) + return 0; + if ( *(_DWORD *)this ) + return 0; + v7 = fdopen(FileHandle, Format); + *(_DWORD *)this = v7; + if ( !v7 ) + return 0; + this[4] = 1; + v5 = this; + if ( !FileHandle ) + setvbuf(v7, 0, 4, 0); + return v5; +} + +//----- (004B80E0) -------------------------------------------------------- +unsigned int __thiscall std::__basic_file::xsputn_2( + void *this, + char *a2, + unsigned int a3, + char *a4, + unsigned int a5) +{ + int v5; // eax + unsigned int result; // eax + + v5 = *(_DWORD *)(*(_DWORD *)this + 16); + if ( !a3 ) + return a3 + `anonymous namespace'::xwrite(v5, a4, a5); + result = `anonymous namespace'::xwrite(v5, a2, a3); + if ( a3 == result ) + { + v5 = *(_DWORD *)(*(_DWORD *)this + 16); + return a3 + `anonymous namespace'::xwrite(v5, a4, a5); + } + return result; +} + +//----- (004B8130) -------------------------------------------------------- +int __fastcall std::__basic_file::showmanyc(int a1) +{ + int result; // eax + _off_t st_size; // ebx + struct _stat32 Stat; // [esp+1Ch] [ebp-30h] BYREF + + result = fstat(*(_DWORD *)(*(_DWORD *)a1 + 16), &Stat); + if ( result ) + return 0; + if ( (Stat.st_mode & 0xF000) == 0x8000 ) + { + st_size = Stat.st_size; + return st_size - lseek(*(_DWORD *)(*(_DWORD *)a1 + 16), 0, 1); + } + return result; +} + +//----- (004B81B0) -------------------------------------------------------- +void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2) +{ + *(_DWORD *)this = 0; + this[4] = 0; +} + +//----- (004B81D0) -------------------------------------------------------- +_DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_51641C; + return result; +} + +//----- (004B81F0) -------------------------------------------------------- +_DWORD *__userpurge std::__cow_string::__cow_string@( + _DWORD *a1@, + std::__cow_string *this, + const char *a3, + unsigned int a4) +{ + char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF + + return std::string::string(a1, this, (int)a3, (int)v5); +} +// 4B81F0: using guessed type char var_D[13]; + +//----- (004B8220) -------------------------------------------------------- +_DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, int a2) +{ + unsigned int v3; // [esp+8h] [ebp-14h] + + return std::__cow_string::__cow_string(this, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v3); +} +// 4B8233: variable 'v3' is possibly undefined + +//----- (004B8250) -------------------------------------------------------- +unsigned int *__userpurge std::__cow_string::__cow_string@( + unsigned int **a1@, + unsigned int **this, + const std::__cow_string *a3) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + return std::string::string(a1, this, v4); +} +// 4B825A: variable 'v4' is possibly undefined + +//----- (004B8280) -------------------------------------------------------- +void __fastcall std::__cow_string::__cow_string(_DWORD *a1) +{ + *a1 = &unk_51641C; +} + +//----- (004B8290) -------------------------------------------------------- +void __fastcall std::__cow_string::~__cow_string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v3); + } +} +// 78A9D4: using guessed type int _CRT_MT; +// 4B8290: using guessed type int var_D[3]; + +//----- (004B82F0) -------------------------------------------------------- +int *__thiscall std::__cow_string::operator=(int *this, std::string *a2) +{ + std::string *v4; // [esp+4h] [ebp-18h] + + std::string::swap(this, a2, v4); + return this; +} +// 4B82FD: variable 'v4' is possibly undefined + +//----- (004B8310) -------------------------------------------------------- +unsigned int **__thiscall std::__cow_string::operator=(unsigned int **this, unsigned int **a2) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + std::string::assign(this, a2, v4); + return this; +} +// 4B831D: variable 'v4' is possibly undefined + +//----- (004B8330) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr( + _DWORD *this, + _DWORD *a2) +{ + volatile signed __int32 *result; // eax + + result = (volatile signed __int32 *)a2[1]; + *this = *a2; + this[1] = result; + if ( result ) + return __gnu_cxx::__atomic_add_dispatch(result + 1); + return result; +} + +//----- (004B8354) -------------------------------------------------------- +_DWORD *__thiscall std::__shared_ptr::operator=( + _DWORD *this, + _DWORD *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + + v3 = this + 1; + v4 = a2[1]; + *(v3 - 1) = *a2; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, v4); + return this; +} + +//----- (004B8380) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr( + _DWORD *this, + _DWORD *a2) +{ + volatile signed __int32 *result; // eax + + result = (volatile signed __int32 *)a2[1]; + *this = *a2; + this[1] = result; + if ( result ) + return __gnu_cxx::__atomic_add_dispatch(result + 1); + return result; +} + +//----- (004B83A4) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::__shared_ptr::operator=( + volatile signed __int32 **this, + volatile signed __int32 **a2) +{ + volatile signed __int32 **v3; // ecx + volatile signed __int32 *v4; // eax + + v3 = this + 1; + v4 = a2[1]; + *(v3 - 1) = *a2; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, v4); + return this; +} + +//----- (004B83D0) -------------------------------------------------------- +_DWORD *__thiscall std::__shared_ptr,std::allocator>,(__gnu_cxx::_Lock_policy)2>::operator=( + _DWORD *this, + int *a2) +{ + int v3; // ebx + int v4; // ecx + volatile signed __int32 *v5; // edx + volatile signed __int32 *v8; // [esp+1Ch] [ebp-Ch] BYREF + + v3 = *a2; + v4 = a2[1]; + *a2 = 0; + a2[1] = 0; + *this = v3; + v5 = (volatile signed __int32 *)this[1]; + this[1] = v4; + v8 = v5; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v8); + return this; +} + +//----- (004B8420) -------------------------------------------------------- +_DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + int v3; // ebx + + result = a2; + *this = this + 2; + if ( (_DWORD *)*result == result + 2 ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + } + else + { + *this = *a2; + this[2] = a2[2]; + } + v3 = a2[1]; + *a2 = a2 + 2; + a2[1] = 0; + this[1] = v3; + *((_BYTE *)a2 + 8) = 0; + return result; +} + +//----- (004B8480) -------------------------------------------------------- +unsigned int __userpurge std::__sso_string::__sso_string@( + void **a1@, + std::__sso_string *this, + const char *a3, + unsigned int a4) +{ + int v5; // [esp+8h] [ebp-14h] + + *a1 = a1 + 2; + LOBYTE(v5) = 0; + return std::string::_M_construct(a1, (unsigned __int8 *)this, (size_t)&a3[(_DWORD)this], v5); +} +// 4B849E: variable 'v5' is possibly undefined + +//----- (004B84B0) -------------------------------------------------------- +_BYTE *__thiscall std::__sso_string::__sso_string(_DWORD *this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v3) = 0; + return std::string::_M_construct(this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v3); +} +// 4B84D0: variable 'v3' is possibly undefined + +//----- (004B84E0) -------------------------------------------------------- +_BYTE *__userpurge std::__sso_string::__sso_string@( + _DWORD *a1@, + std::__sso_string *this, + const std::__sso_string *a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *a1 = a1 + 2; + LOBYTE(v4) = 0; + return std::string::_M_construct(a1, *(_BYTE **)this, *(_DWORD *)this + *((_DWORD *)this + 1), v4); +} +// 4B8500: variable 'v4' is possibly undefined + +//----- (004B8510) -------------------------------------------------------- +unsigned int __userpurge std::__sso_string::__sso_string@( + void **a1@, + std::__sso_string **this, + const std::string *a3) +{ + unsigned int v4; // [esp+8h] [ebp-14h] + + return std::__sso_string::__sso_string(a1, *this, *((const char **)*this - 3), v4); +} +// 4B8523: variable 'v4' is possibly undefined + +//----- (004B8540) -------------------------------------------------------- +int __fastcall std::__sso_string::__sso_string(int a1) +{ + int result; // eax + + result = a1 + 8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + return result; +} + +//----- (004B8560) -------------------------------------------------------- +void __fastcall std::__sso_string::~__sso_string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004B8590) -------------------------------------------------------- +_DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int a2) +{ + _BYTE *v3; // eax + _BYTE *Src; // ecx + int v5; // edx + int v6; // ebp + + v3 = (_BYTE *)*this; + Src = *(_BYTE **)a2; + v5 = *(_DWORD *)(a2 + 4); + if ( *(_DWORD *)a2 != a2 + 8 ) + { + if ( v3 == (_BYTE *)(this + 2) ) + { + *this = Src; + this[1] = v5; + this[2] = *(_DWORD *)(a2 + 8); + } + else + { + *this = Src; + v6 = this[2]; + this[1] = v5; + this[2] = *(_DWORD *)(a2 + 8); + if ( v3 ) + { + *(_DWORD *)a2 = v3; + *(_DWORD *)(a2 + 8) = v6; + goto LABEL_5; + } + } + *(_DWORD *)a2 = a2 + 8; + v3 = (_BYTE *)(a2 + 8); + goto LABEL_5; + } + if ( v5 ) + { + if ( v5 == 1 ) + *v3 = *(_BYTE *)(a2 + 8); + else + memcpy(v3, Src, *(_DWORD *)(a2 + 4)); + v5 = *(_DWORD *)(a2 + 4); + v3 = (_BYTE *)*this; + } + this[1] = v5; + v3[v5] = 0; + v3 = *(_BYTE **)a2; +LABEL_5: + *(_DWORD *)(a2 + 4) = 0; + *v3 = 0; + return this; +} + +//----- (004B8640) -------------------------------------------------------- +void *__thiscall std::__sso_string::operator=(void *this, int a2) +{ + std::string::_M_assign((int)this, a2); + return this; +} + +//----- (004B8660) -------------------------------------------------------- +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::ctype::ctype(this, 0, 0, a3); + *this = &off_5385F8; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 5385F8: using guessed type int (*off_5385F8)(); + +//----- (004B8700) -------------------------------------------------------- +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) +{ + return std::ctype_byname::ctype_byname(this, *a2, a3); +} + +//----- (004B8710) -------------------------------------------------------- +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) +{ + return std::ctype_byname::ctype_byname(this, *a2, a3); +} + +//----- (004B8720) -------------------------------------------------------- +void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5385F8; + std::ctype::~ctype(v2); + operator delete(a1); +} +// 4B872C: variable 'v2' is possibly undefined +// 5385F8: using guessed type int (*off_5385F8)(); + +//----- (004B8740) -------------------------------------------------------- +void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5385F8; + std::ctype::~ctype(a1); +} +// 4B8740: variable 'v1' is possibly undefined +// 5385F8: using guessed type int (*off_5385F8)(); + +//----- (004B8750) -------------------------------------------------------- +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) +{ + char result; // al + bool v5; // zf + + result = std::ctype::ctype(this, a3); + *this = &off_538628; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + return std::ctype::_M_initialize_ctype((int)this); + } + } + return result; +} +// 538628: using guessed type int (*off_538628)(); + +//----- (004B87E0) -------------------------------------------------------- +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) +{ + return std::ctype_byname::ctype_byname(this, *a2, a3); +} + +//----- (004B87F0) -------------------------------------------------------- +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) +{ + return std::ctype_byname::ctype_byname(this, *a2, a3); +} + +//----- (004B8800) -------------------------------------------------------- +void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5390EC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + *a1 = &unk_538ED4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4B881F: variable 'v2' is possibly undefined +// 5390EC: using guessed type int (*off_5390EC)(); + +//----- (004B8840) -------------------------------------------------------- +void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_5390EC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + *v2 = &unk_538ED4; + std::locale::facet::~facet(a1); +} +// 4B8844: variable 'v1' is possibly undefined +// 5390EC: using guessed type int (*off_5390EC)(); + +//----- (004B8870) -------------------------------------------------------- +_DWORD *__userpurge std::domain_error::domain_error@(_DWORD *a1@, std::domain_error *this, const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_538668; + return result; +} +// 4B887D: variable 'v5' is possibly undefined +// 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); + +//----- (004B88A0) -------------------------------------------------------- +_DWORD *__thiscall std::domain_error::domain_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::logic_error::logic_error(this, a2); + *this = &off_538668; + return result; +} +// 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); + +//----- (004B88D0) -------------------------------------------------------- +unsigned int *__userpurge std::domain_error::domain_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_538668; + return result; +} +// 4B88DD: variable 'v5' is possibly undefined +// 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); + +//----- (004B8900) -------------------------------------------------------- +void __fastcall std::domain_error::~domain_error(_DWORD *a1) +{ + *a1 = &off_538668; + std::logic_error::~logic_error(a1); + operator delete(a1); +} +// 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); + +//----- (004B8920) -------------------------------------------------------- +void __fastcall std::domain_error::~domain_error(_DWORD *a1) +{ + *a1 = &off_538668; + std::logic_error::~logic_error(a1); +} +// 538668: using guessed type void (__cdecl *off_538668)(std::domain_error *__hidden this); + +//----- (004B8930) -------------------------------------------------------- +_DWORD *__userpurge std::length_error::length_error@(_DWORD *a1@, std::length_error *this, const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_53867C; + return result; +} +// 4B893D: variable 'v5' is possibly undefined +// 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); + +//----- (004B8960) -------------------------------------------------------- +_DWORD *__thiscall std::length_error::length_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::logic_error::logic_error(this, a2); + *this = &off_53867C; + return result; +} +// 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); + +//----- (004B8990) -------------------------------------------------------- +unsigned int *__userpurge std::length_error::length_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_53867C; + return result; +} +// 4B899D: variable 'v5' is possibly undefined +// 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); + +//----- (004B89C0) -------------------------------------------------------- +void __fastcall std::length_error::~length_error(_DWORD *a1) +{ + *a1 = &off_53867C; + std::logic_error::~logic_error(a1); + operator delete(a1); +} +// 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); + +//----- (004B89E0) -------------------------------------------------------- +void __fastcall std::length_error::~length_error(_DWORD *a1) +{ + *a1 = &off_53867C; + std::logic_error::~logic_error(a1); +} +// 53867C: using guessed type void (__cdecl *off_53867C)(std::length_error *__hidden this); + +//----- (004B89F0) -------------------------------------------------------- +_DWORD *__userpurge std::out_of_range::out_of_range@(_DWORD *a1@, std::out_of_range *this, const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_538690; + return result; +} +// 4B89FD: variable 'v5' is possibly undefined +// 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); + +//----- (004B8A20) -------------------------------------------------------- +_DWORD *__thiscall std::out_of_range::out_of_range(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::logic_error::logic_error(this, a2); + *this = &off_538690; + return result; +} +// 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); + +//----- (004B8A50) -------------------------------------------------------- +unsigned int *__userpurge std::out_of_range::out_of_range@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_538690; + return result; +} +// 4B8A5D: variable 'v5' is possibly undefined +// 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); + +//----- (004B8A80) -------------------------------------------------------- +void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) +{ + *a1 = &off_538690; + std::logic_error::~logic_error(a1); + operator delete(a1); +} +// 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); + +//----- (004B8AA0) -------------------------------------------------------- +void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) +{ + *a1 = &off_538690; + std::logic_error::~logic_error(a1); +} +// 538690: using guessed type void (__cdecl *off_538690)(std::out_of_range *__hidden this); + +//----- (004B8AB0) -------------------------------------------------------- +void __fastcall std::system_error::~system_error(_DWORD *a1) +{ + *a1 = &off_5386A4; + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} +// 5386A4: using guessed type void (__cdecl *off_5386A4)(std::system_error *__hidden this); + +//----- (004B8AD0) -------------------------------------------------------- +void __fastcall std::system_error::~system_error(_DWORD *a1) +{ + *a1 = &off_5386A4; + std::runtime_error::~runtime_error(a1); +} +// 5386A4: using guessed type void (__cdecl *off_5386A4)(std::system_error *__hidden this); + +//----- (004B8AE0) -------------------------------------------------------- +void *__fastcall std::_Bvector_base>::_M_deallocate(int a1) +{ + void *result; // eax + int v3; // edx + + result = *(void **)a1; + if ( *(_DWORD *)a1 ) + { + operator delete(result); + *(_DWORD *)(a1 + 8) = 0; + result = *(void **)(a1 + 8); + *(_DWORD *)(a1 + 12) = 0; + v3 = *(_DWORD *)(a1 + 12); + *(_DWORD *)a1 = result; + *(_DWORD *)(a1 + 4) = v3; + *(_DWORD *)(a1 + 16) = 0; + } + return result; +} + +//----- (004B8B20) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + char a10) +{ + int result; // eax + + switch ( a10 ) + { + case 'd': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'x': + case 'y': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'm': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 't': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'w': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + } + return result; +} + +//----- (004B8C90) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + char a10) +{ + int result; // eax + + switch ( a10 ) + { + case 'd': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'x': + case 'y': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'm': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 't': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'w': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + } + return result; +} + +//----- (004B8E00) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + char a10) +{ + int result; // eax + + switch ( a10 ) + { + case 'd': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'x': + case 'y': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'm': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 't': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'w': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + } + return result; +} + +//----- (004B8F70) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + char a10) +{ + int result; // eax + + switch ( a10 ) + { + case 'd': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'x': + case 'y': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'm': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 't': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'w': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + } + return result; +} + +//----- (004B90E0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_get( + int a1, + int *a2, + int a3, + std::string *a4, + int a5, + int a6, + unsigned __int8 a7, + int a8, + _DWORD *a9, + int a10, + int a11) +{ + int v11; // eax + int result; // eax + int v13; // esi + unsigned int *v14; // ecx + int v15; // esi + void (__cdecl *v16)(int); // eax + int v17; // eax + const std::string *v18; // [esp+4h] [ebp-54h] + int v19; // [esp+2Ch] [ebp-2Ch] + int v20; // [esp+3Bh] [ebp-1Dh] BYREF + unsigned int *v21[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v11 = *a2; + if ( a10 ) + return (*(int (__stdcall **)(int, std::string *, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v21[0] = (unsigned int *)&unk_51641C; + v13 = ((__int64 (__stdcall *)(int, std::string *, int, int, _DWORD, int, _DWORD *, unsigned int **))*(_DWORD *)(v11 + 12))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + v21); + if ( *a9 ) + { + v14 = v21[0]; + } + else + { + v16 = *(void (__cdecl **)(int))(a11 + 24); + if ( v16 ) + v16(a11); + std::string::string((unsigned int **)a11, v21, v18); + v14 = v21[0]; + v17 = *(v21[0] - 3); + *(_DWORD *)(a11 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + *(_DWORD *)(a11 + 4) = v17; + } + result = v13; + if ( v14 != (unsigned int *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v14 - 1, 0xFFFFFFFF); + } + else + { + v15 = *(v14 - 1); + *(v14 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + { + v19 = result; + std::string::_Rep::_M_destroy(v14 - 3, (int)&v20); + return v19; + } + } + return result; +} +// 4B91F3: variable 'v18' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9250) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_get( + int a1, + int *a2, + int a3, + int a4, + int a5, + int a6, + unsigned __int8 a7, + int a8, + _DWORD *a9, + int a10, + _DWORD *a11) +{ + int v11; // eax + int result; // eax + int v13; // edi + void (__cdecl *v14)(_DWORD *); // eax + int v15; // edx + int v16; // [esp+8h] [ebp-60h] + void *v17; // [esp+38h] [ebp-30h] BYREF + int v18; // [esp+3Ch] [ebp-2Ch] + char v19[40]; // [esp+40h] [ebp-28h] BYREF + + v11 = *a2; + if ( a10 ) + return (*(int (__stdcall **)(int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v17 = v19; + v18 = 0; + v19[0] = 0; + v13 = ((__int64 (__stdcall *)(int, int, int, int, _DWORD, int, _DWORD *, void **))*(_DWORD *)(v11 + 12))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + &v17); + if ( !*a9 ) + { + v14 = (void (__cdecl *)(_DWORD *))a11[6]; + if ( v14 ) + v14(a11); + v15 = v18; + *a11 = a11 + 2; + LOBYTE(v16) = 0; + std::string::_M_construct(a11, v17, (int)v17 + v15, v16); + a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + } + result = v13; + if ( v17 != v19 ) + { + operator delete(v17); + return v13; + } + return result; +} +// 4B9361: variable 'v16' is possibly undefined + +//----- (004B9390) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_get( + int a1, + int *a2, + int a3, + int a4, + int a5, + int a6, + unsigned __int8 a7, + int a8, + _DWORD *a9, + int a10, + _DWORD *a11) +{ + int v11; // eax + int result; // eax + int v13; // esi + volatile signed __int32 *v14; // ecx + int v15; // esi + void (__cdecl *v16)(_DWORD *); // eax + int v17; // eax + int v18; // [esp+2Ch] [ebp-2Ch] + int v19; // [esp+3Bh] [ebp-1Dh] BYREF + _DWORD v20[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v11 = *a2; + if ( a10 ) + return (*(int (__stdcall **)(int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v20[0] = &unk_51640C; + v13 = ((__int64 (__stdcall *)(int, int, int, int, _DWORD, int, _DWORD *, _DWORD *))*(_DWORD *)(v11 + 12))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + v20); + if ( *a9 ) + { + v14 = (volatile signed __int32 *)v20[0]; + } + else + { + v16 = (void (__cdecl *)(_DWORD *))a11[6]; + if ( v16 ) + v16(a11); + std::wstring::basic_string(a11, v20); + v14 = (volatile signed __int32 *)v20[0]; + v17 = *(_DWORD *)(v20[0] - 12); + a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + a11[1] = v17; + } + result = v13; + if ( v14 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v14 - 1); + *((_DWORD *)v14 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + { + v18 = result; + std::wstring::_Rep::_M_destroy((void *)(v14 - 3), (int)&v19); + return v18; + } + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9500) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_get( + int a1, + int *a2, + int a3, + int a4, + int a5, + int a6, + unsigned __int8 a7, + int a8, + _DWORD *a9, + int a10, + int a11) +{ + int v11; // eax + int result; // eax + int v13; // esi + void (__cdecl *v14)(int); // eax + int v15; // edx + int v16; // [esp+8h] [ebp-60h] + wchar_t *v17; // [esp+38h] [ebp-30h] BYREF + int v18; // [esp+3Ch] [ebp-2Ch] + __int16 v19[20]; // [esp+40h] [ebp-28h] BYREF + + v11 = *a2; + if ( a10 ) + return (*(int (__stdcall **)(int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v17 = (wchar_t *)v19; + v19[0] = 0; + v18 = 0; + v13 = ((__int64 (__stdcall *)(int, int, int, int, _DWORD, int, _DWORD *, wchar_t **))*(_DWORD *)(v11 + 12))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + &v17); + if ( !*a9 ) + { + v14 = *(void (__cdecl **)(int))(a11 + 24); + if ( v14 ) + v14(a11); + v15 = v18; + *(_DWORD *)a11 = a11 + 8; + LOBYTE(v16) = 0; + std::wstring::_M_construct((wchar_t **)a11, v17, (int)&v17[v15], v16); + *(_DWORD *)(a11 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + } + result = v13; + if ( v17 != (wchar_t *)v19 ) + { + operator delete(v17); + return v13; + } + return result; +} +// 4B961A: variable 'v16' is possibly undefined + +//----- (004B9650) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_put( + int a1, + int a2, + int a3, + int a4, + unsigned __int8 a5, + int a6, + char a7, + long double a8, + int a9) +{ + int result; // eax + int v10; // esi + int v12; // [esp+20h] [ebp-38h] + void *v13; // [esp+2Ch] [ebp-2Ch] + char v14; // [esp+3Bh] [ebp-1Dh] BYREF + _DWORD v15[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + if ( !a9 ) + return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( + a2, + a3, + a4, + a5, + a6, + a7, + LODWORD(a8), + DWORD1(a8), + HIDWORD(a8)); + if ( !*(_DWORD *)(a9 + 24) ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::string::string(v15, *(_BYTE **)a9, *(_DWORD *)(a9 + 4), (int)&v14); + result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD *))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + v15); + v13 = (void *)(v15[0] - 12); + if ( (_UNKNOWN *)v15[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v10 = _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF); + } + else + { + v10 = *(_DWORD *)(v15[0] - 4); + *(_DWORD *)(v15[0] - 4) = v10 - 1; + } + if ( v10 <= 0 ) + { + v12 = result; + std::string::_Rep::_M_destroy(v13, (int)&v14); + return v12; + } + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B97B0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_put( + int a1, + int a2, + int a3, + int a4, + unsigned __int8 a5, + int a6, + char a7, + long double a8, + int a9) +{ + unsigned __int8 *v9; // ecx + int result; // eax + int v11; // [esp+8h] [ebp-60h] + int v13; // [esp+28h] [ebp-40h] + void *v14[2]; // [esp+38h] [ebp-30h] BYREF + char v15[40]; // [esp+40h] [ebp-28h] BYREF + + if ( !a9 ) + return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( + a2, + a3, + a4, + a5, + a6, + a7, + LODWORD(a8), + DWORD1(a8), + HIDWORD(a8)); + if ( !*(_DWORD *)(a9 + 24) ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v9 = *(unsigned __int8 **)a9; + LOBYTE(v11) = 0; + v14[0] = v15; + std::string::_M_construct(v14, v9, (size_t)&v9[*(_DWORD *)(a9 + 4)], v11); + result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, void **))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + v14); + if ( v14[0] != v15 ) + { + v13 = result; + operator delete(v14[0]); + return v13; + } + return result; +} +// 4B97F6: variable 'v11' is possibly undefined + +//----- (004B98D0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_put( + int a1, + int a2, + int a3, + int a4, + unsigned __int8 a5, + int a6, + unsigned __int16 a7, + long double a8, + int a9) +{ + int result; // eax + int v10; // esi + int v12; // [esp+20h] [ebp-38h] + void *v13; // [esp+2Ch] [ebp-2Ch] + char v14; // [esp+3Bh] [ebp-1Dh] BYREF + _DWORD v15[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + if ( !a9 ) + return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( + a2, + a3, + a4, + a5, + a6, + a7, + LODWORD(a8), + DWORD1(a8), + HIDWORD(a8)); + if ( !*(_DWORD *)(a9 + 24) ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::wstring::basic_string(v15, *(const wchar_t **)a9, *(_DWORD *)(a9 + 4), (int)&v14); + result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD *))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + v15); + v13 = (void *)(v15[0] - 12); + if ( (_UNKNOWN *)v15[0] != &unk_51640C ) + { + if ( _CRT_MT ) + { + v10 = _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF); + } + else + { + v10 = *(_DWORD *)(v15[0] - 4); + *(_DWORD *)(v15[0] - 4) = v10 - 1; + } + if ( v10 <= 0 ) + { + v12 = result; + std::wstring::_Rep::_M_destroy(v13, (int)&v14); + return v12; + } + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9A30) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_put( + int a1, + int a2, + int a3, + int a4, + unsigned __int8 a5, + int a6, + unsigned __int16 a7, + long double a8, + int a9) +{ + int result; // eax + wchar_t *v10; // [esp+0h] [ebp-68h] + int v11; // [esp+4h] [ebp-64h] + int v12; // [esp+8h] [ebp-60h] + int v14; // [esp+28h] [ebp-40h] + void *v15[2]; // [esp+38h] [ebp-30h] BYREF + char v16[40]; // [esp+40h] [ebp-28h] BYREF + + if ( !a9 ) + return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( + a2, + a3, + a4, + a5, + a6, + a7, + LODWORD(a8), + DWORD1(a8), + HIDWORD(a8)); + if ( !*(_DWORD *)(a9 + 24) ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + LOBYTE(v12) = 0; + v10 = *(wchar_t **)a9; + v11 = *(_DWORD *)a9 + 2 * *(_DWORD *)(a9 + 4); + v15[0] = v16; + std::wstring::_M_construct((wchar_t **)v15, v10, v11, v12); + result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, void **))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + v15); + if ( v15[0] != v16 ) + { + v14 = result; + operator delete(v15[0]); + return v14; + } + return result; +} +// 4B9A7A: variable 'v12' is possibly undefined + +//----- (004B9B50) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_5379B0; + v3 = (volatile signed __int32 *)a1[3]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_539234; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4B9B8E: variable 'v5' is possibly undefined +// 5379B0: using guessed type int (*off_5379B0)(); +// 539234: using guessed type int (*off_539234)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9BB0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_5379CC; + v3 = (volatile signed __int32 *)a1[3]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5382A8; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4B9BEE: variable 'v5' is possibly undefined +// 5379CC: using guessed type int (*off_5379CC)(); +// 5382A8: using guessed type int (*off_5382A8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9C10) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_5379B0; + v4 = (volatile signed __int32 *)v1[3]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_539234; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); + std::locale::facet::~facet(a1); +} +// 4B9C11: variable 'v1' is possibly undefined +// 5379B0: using guessed type int (*off_5379B0)(); +// 539234: using guessed type int (*off_539234)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9C70) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_5379CC; + v4 = (volatile signed __int32 *)v1[3]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5382A8; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); + std::locale::facet::~facet(a1); +} +// 4B9C71: variable 'v1' is possibly undefined +// 5379CC: using guessed type int (*off_5379CC)(); +// 5382A8: using guessed type int (*off_5382A8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9CD0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_5379E8; + v3 = (volatile signed __int32 *)a1[3]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_539250; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4B9D0E: variable 'v5' is possibly undefined +// 5379E8: using guessed type int (*off_5379E8)(); +// 539250: using guessed type int (*off_539250)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9D30) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537A04; + v3 = (volatile signed __int32 *)a1[3]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5382C4; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4B9D6E: variable 'v5' is possibly undefined +// 537A04: using guessed type int (*off_537A04)(); +// 5382C4: using guessed type int (*off_5382C4)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9D90) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_5379E8; + v4 = (volatile signed __int32 *)v1[3]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_539250; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); + std::locale::facet::~facet(a1); +} +// 4B9D91: variable 'v1' is possibly undefined +// 5379E8: using guessed type int (*off_5379E8)(); +// 539250: using guessed type int (*off_539250)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9DF0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537A04; + v4 = (volatile signed __int32 *)v1[3]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5382C4; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); + std::locale::facet::~facet(a1); +} +// 4B9DF1: variable 'v1' is possibly undefined +// 537A04: using guessed type int (*off_537A04)(); +// 5382C4: using guessed type int (*off_5382C4)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9E50) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537A20; + v3 = (volatile signed __int32 *)a1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(v5); + operator delete(a1); +} +// 4B9E7D: variable 'v5' is possibly undefined +// 537A20: using guessed type int (*off_537A20)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9EA0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537A3C; + v3 = (volatile signed __int32 *)a1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(v5); + operator delete(a1); +} +// 4B9ECD: variable 'v5' is possibly undefined +// 537A3C: using guessed type int (*off_537A3C)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9EF0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = _CRT_MT; + *v1 = &off_537A20; + v3 = (volatile signed __int32 *)v1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(a1); +} +// 4B9EFB: variable 'v1' is possibly undefined +// 537A20: using guessed type int (*off_537A20)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9F40) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = _CRT_MT; + *v1 = &off_537A3C; + v3 = (volatile signed __int32 *)v1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(a1); +} +// 4B9F4B: variable 'v1' is possibly undefined +// 537A3C: using guessed type int (*off_537A3C)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9F90) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537A58; + v3 = (volatile signed __int32 *)a1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(v5); + operator delete(a1); +} +// 4B9FBD: variable 'v5' is possibly undefined +// 537A58: using guessed type int (*off_537A58)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004B9FE0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537A74; + v3 = (volatile signed __int32 *)a1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(v5); + operator delete(a1); +} +// 4BA00D: variable 'v5' is possibly undefined +// 537A74: using guessed type int (*off_537A74)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA030) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = _CRT_MT; + *v1 = &off_537A58; + v3 = (volatile signed __int32 *)v1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(a1); +} +// 4BA03B: variable 'v1' is possibly undefined +// 537A58: using guessed type int (*off_537A58)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA080) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = _CRT_MT; + *v1 = &off_537A74; + v3 = (volatile signed __int32 *)v1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(a1); +} +// 4BA08B: variable 'v1' is possibly undefined +// 537A74: using guessed type int (*off_537A74)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA0D0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = a1[4]; + *a1 = &off_537A90; + v3 = (volatile signed __int32 *)a1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(v5); + operator delete(a1); +} +// 4BA107: variable 'v5' is possibly undefined +// 537A90: using guessed type int (*off_537A90)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA130) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = a1[4]; + *a1 = &off_537AB4; + v3 = (volatile signed __int32 *)a1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(v5); + operator delete(a1); +} +// 4BA167: variable 'v5' is possibly undefined +// 537AB4: using guessed type int (*off_537AB4)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA190) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = v1[4]; + *v1 = &off_537A90; + v3 = (volatile signed __int32 *)v1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(a1); +} +// 4BA196: variable 'v1' is possibly undefined +// 537A90: using guessed type int (*off_537A90)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA1E0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = v1[4]; + *v1 = &off_537AB4; + v3 = (volatile signed __int32 *)v1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(a1); +} +// 4BA1E6: variable 'v1' is possibly undefined +// 537AB4: using guessed type int (*off_537AB4)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA230) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = a1[4]; + *a1 = &off_537AD8; + v3 = (volatile signed __int32 *)a1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(v5); + operator delete(a1); +} +// 4BA267: variable 'v5' is possibly undefined +// 537AD8: using guessed type int (*off_537AD8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA290) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = a1[4]; + *a1 = &off_537AFC; + v3 = (volatile signed __int32 *)a1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(v5); + operator delete(a1); +} +// 4BA2C7: variable 'v5' is possibly undefined +// 537AFC: using guessed type int (*off_537AFC)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA2F0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = v1[4]; + *v1 = &off_537AD8; + v3 = (volatile signed __int32 *)v1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(a1); +} +// 4BA2F6: variable 'v1' is possibly undefined +// 537AD8: using guessed type int (*off_537AD8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA340) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = v1[4]; + *v1 = &off_537AFC; + v3 = (volatile signed __int32 *)v1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(a1); +} +// 4BA346: variable 'v1' is possibly undefined +// 537AFC: using guessed type int (*off_537AFC)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA390) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537B20; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5393E8; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA3C3: variable 'v5' is possibly undefined +// 537B20: using guessed type int (*off_537B20)(); +// 5393E8: using guessed type int (*off_5393E8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA3F0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537B48; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_538360; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA423: variable 'v5' is possibly undefined +// 537B48: using guessed type int (*off_537B48)(); +// 538360: using guessed type int (*off_538360)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA450) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537B20; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5393E8; + std::locale::facet::~facet(a1); +} +// 4BA451: variable 'v1' is possibly undefined +// 537B20: using guessed type int (*off_537B20)(); +// 5393E8: using guessed type int (*off_5393E8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA4A0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537B48; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_538360; + std::locale::facet::~facet(a1); +} +// 4BA4A1: variable 'v1' is possibly undefined +// 537B48: using guessed type int (*off_537B48)(); +// 538360: using guessed type int (*off_538360)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA4F0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537B74; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_539410; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA523: variable 'v5' is possibly undefined +// 537B74: using guessed type int (*off_537B74)(); +// 539410: using guessed type int (*off_539410)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA550) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537B9C; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_53838C; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA583: variable 'v5' is possibly undefined +// 537B9C: using guessed type int (*off_537B9C)(); +// 53838C: using guessed type int (*off_53838C)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA5B0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537B74; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_539410; + std::locale::facet::~facet(a1); +} +// 4BA5B1: variable 'v1' is possibly undefined +// 537B74: using guessed type int (*off_537B74)(); +// 539410: using guessed type int (*off_539410)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA600) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537B9C; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_53838C; + std::locale::facet::~facet(a1); +} +// 4BA601: variable 'v1' is possibly undefined +// 537B9C: using guessed type int (*off_537B9C)(); +// 53838C: using guessed type int (*off_53838C)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA650) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537BC8; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5394A8; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA683: variable 'v5' is possibly undefined +// 537BC8: using guessed type int (*off_537BC8)(); +// 5394A8: using guessed type int (*off_5394A8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA6B0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537BE0; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5383B8; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA6E3: variable 'v5' is possibly undefined +// 537BE0: using guessed type int (*off_537BE0)(); +// 5383B8: using guessed type int (*off_5383B8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA710) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537BC8; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5394A8; + std::locale::facet::~facet(a1); +} +// 4BA711: variable 'v1' is possibly undefined +// 537BC8: using guessed type int (*off_537BC8)(); +// 5394A8: using guessed type int (*off_5394A8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA760) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537BE0; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5383B8; + std::locale::facet::~facet(a1); +} +// 4BA761: variable 'v1' is possibly undefined +// 537BE0: using guessed type int (*off_537BE0)(); +// 5383B8: using guessed type int (*off_5383B8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA7B0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537BF8; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5394C0; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA7E3: variable 'v5' is possibly undefined +// 537BF8: using guessed type int (*off_537BF8)(); +// 5394C0: using guessed type int (*off_5394C0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA810) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537C10; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5383D0; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA843: variable 'v5' is possibly undefined +// 537C10: using guessed type int (*off_537C10)(); +// 5383D0: using guessed type int (*off_5383D0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA870) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537BF8; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5394C0; + std::locale::facet::~facet(a1); +} +// 4BA871: variable 'v1' is possibly undefined +// 537BF8: using guessed type int (*off_537BF8)(); +// 5394C0: using guessed type int (*off_5394C0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA8C0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537C10; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5383D0; + std::locale::facet::~facet(a1); +} +// 4BA8C1: variable 'v1' is possibly undefined +// 537C10: using guessed type int (*off_537C10)(); +// 5383D0: using guessed type int (*off_5383D0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA910) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537C28; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5394D8; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA943: variable 'v5' is possibly undefined +// 537C28: using guessed type int (*off_537C28)(); +// 5394D8: using guessed type int (*off_5394D8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA970) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537C40; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5383E8; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BA9A3: variable 'v5' is possibly undefined +// 537C40: using guessed type int (*off_537C40)(); +// 5383E8: using guessed type int (*off_5383E8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BA9D0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537C28; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5394D8; + std::locale::facet::~facet(a1); +} +// 4BA9D1: variable 'v1' is possibly undefined +// 537C28: using guessed type int (*off_537C28)(); +// 5394D8: using guessed type int (*off_5394D8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAA20) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537C40; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5383E8; + std::locale::facet::~facet(a1); +} +// 4BAA21: variable 'v1' is possibly undefined +// 537C40: using guessed type int (*off_537C40)(); +// 5383E8: using guessed type int (*off_5383E8)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAA70) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537C58; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_5394F0; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BAAA3: variable 'v5' is possibly undefined +// 537C58: using guessed type int (*off_537C58)(); +// 5394F0: using guessed type int (*off_5394F0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAAD0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_537C70; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_538400; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4BAB03: variable 'v5' is possibly undefined +// 537C70: using guessed type int (*off_537C70)(); +// 538400: using guessed type int (*off_538400)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAB30) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537C58; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_5394F0; + std::locale::facet::~facet(a1); +} +// 4BAB31: variable 'v1' is possibly undefined +// 537C58: using guessed type int (*off_537C58)(); +// 5394F0: using guessed type int (*off_5394F0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAB80) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_537C70; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_538400; + std::locale::facet::~facet(a1); +} +// 4BAB81: variable 'v1' is possibly undefined +// 537C70: using guessed type int (*off_537C70)(); +// 538400: using guessed type int (*off_538400)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BABD0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_537C88; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4BAC1C: variable 'v5' is possibly undefined +// 537C88: using guessed type int (*off_537C88)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAC40) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_537CBC; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4BAC8C: variable 'v5' is possibly undefined +// 537CBC: using guessed type int (*off_537CBC)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BACB0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_537C88; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4BACB6: variable 'v1' is possibly undefined +// 537C88: using guessed type int (*off_537C88)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAD20) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_537CBC; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4BAD26: variable 'v1' is possibly undefined +// 537CBC: using guessed type int (*off_537CBC)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAD90) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_537CF0; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4BADDC: variable 'v5' is possibly undefined +// 537CF0: using guessed type int (*off_537CF0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAE00) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_537D24; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4BAE4C: variable 'v5' is possibly undefined +// 537D24: using guessed type int (*off_537D24)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAE70) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_537CF0; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4BAE76: variable 'v1' is possibly undefined +// 537CF0: using guessed type int (*off_537CF0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAEE0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_537D24; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4BAEE6: variable 'v1' is possibly undefined +// 537D24: using guessed type int (*off_537D24)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAF50) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_537D58; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4BAF9C: variable 'v5' is possibly undefined +// 537D58: using guessed type int (*off_537D58)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BAFC0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_537D8C; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4BB00C: variable 'v5' is possibly undefined +// 537D8C: using guessed type int (*off_537D8C)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB030) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_537D58; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4BB036: variable 'v1' is possibly undefined +// 537D58: using guessed type int (*off_537D58)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB0A0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_537D8C; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4BB0A6: variable 'v1' is possibly undefined +// 537D8C: using guessed type int (*off_537D8C)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB110) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_537DC0; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4BB15C: variable 'v5' is possibly undefined +// 537DC0: using guessed type int (*off_537DC0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB180) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_537DF4; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4BB1CC: variable 'v5' is possibly undefined +// 537DF4: using guessed type int (*off_537DF4)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB1F0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_537DC0; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4BB1F6: variable 'v1' is possibly undefined +// 537DC0: using guessed type int (*off_537DC0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB260) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_537DF4; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4BB266: variable 'v1' is possibly undefined +// 537DF4: using guessed type int (*off_537DF4)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB2D0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v3); + } +} +// 78A9D4: using guessed type int _CRT_MT; +// 4BB2D0: using guessed type int var_D[3]; + +//----- (004BB330) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004BB360) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)(v1 - 3), (int)v3); + } +} +// 78A9D4: using guessed type int _CRT_MT; +// 4BB360: using guessed type int var_D[3]; + +//----- (004BB3C0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004BB3F0) -------------------------------------------------------- +void __cdecl std::__facet_shims::__messages_get( + int a1, + int a2, + int a3, + std::string *a4, + int a5, + int a6, + _BYTE *a7, + int a8) +{ + void (__cdecl *v8)(int); // eax + volatile signed __int32 *v9; // eax + int v10; // edx + void *v11; // ecx + void *v12; // ecx + int v13; // edx + int v14; // edx + const std::string *v15; // [esp+4h] [ebp-44h] + char v16; // [esp+26h] [ebp-22h] BYREF + char v17[5]; // [esp+27h] [ebp-21h] BYREF + int v18[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::string::string(&v17[1], a7, a8, (int)&v16); + (*(void (__thiscall **)(int *, int, std::string *, int, int, char *))(*(_DWORD *)a2 + 12))( + v18, + a2, + a4, + a5, + a6, + &v17[1]); + v8 = *(void (__cdecl **)(int))(a3 + 24); + if ( v8 ) + v8(a3); + std::string::string((unsigned int **)a3, (unsigned int **)v18, v15); + v9 = (volatile signed __int32 *)v18[0]; + v10 = *(_DWORD *)(v18[0] - 12); + v11 = (void *)(v18[0] - 12); + *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + *(_DWORD *)(a3 + 4) = v10; + if ( v9 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd(v9 - 1, 0xFFFFFFFF); + } + else + { + v13 = *((_DWORD *)v9 - 1); + *((_DWORD *)v9 - 1) = v13 - 1; + } + if ( v13 <= 0 ) + std::string::_Rep::_M_destroy(v11, (int)v17); + } + v12 = (void *)(*(_DWORD *)&v17[1] - 12); + if ( *(_UNKNOWN **)&v17[1] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v17[1] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(*(_DWORD *)&v17[1] - 4); + *(_DWORD *)(*(_DWORD *)&v17[1] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy(v12, (int)v18); + } +} +// 4BB45B: variable 'v15' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB550) -------------------------------------------------------- +void __cdecl std::__facet_shims::__messages_get( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5, + int a6, + unsigned __int8 *a7, + int a8) +{ + void (__cdecl *v8)(_DWORD *); // eax + void *v9; // edx + char *v10; // eax + int v11; // [esp+8h] [ebp-60h] + int v12; // [esp+8h] [ebp-60h] + void *v13[2]; // [esp+20h] [ebp-48h] BYREF + char v14[16]; // [esp+28h] [ebp-40h] BYREF + void *v15[2]; // [esp+38h] [ebp-30h] BYREF + char v16; // [esp+40h] [ebp-28h] BYREF + + v13[0] = v14; + LOBYTE(v11) = 0; + std::string::_M_construct(v13, a7, (size_t)&a7[a8], v11); + (*(void (__thiscall **)(void **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(v15, a2, a4, a5, a6, v13); + v8 = (void (__cdecl *)(_DWORD *))a3[6]; + if ( v8 ) + v8(a3); + v9 = v15[1]; + *a3 = a3 + 2; + LOBYTE(v12) = 0; + std::string::_M_construct(a3, (_BYTE *)v15[0], (int)v15[0] + (unsigned int)v9, v12); + v10 = (char *)v15[0]; + a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + if ( v10 != &v16 ) + operator delete(v10); + if ( v13[0] != v14 ) + operator delete(v13[0]); +} +// 4BB57C: variable 'v11' is possibly undefined +// 4BB5D5: variable 'v12' is possibly undefined + +//----- (004BB640) -------------------------------------------------------- +void __cdecl std::__facet_shims::__messages_get( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5, + int a6, + const wchar_t *a7, + int a8) +{ + void (__cdecl *v8)(_DWORD *); // eax + volatile signed __int32 *v9; // eax + int v10; // edx + void *v11; // ecx + void *v12; // ecx + int v13; // edx + int v14; // edx + char v15; // [esp+26h] [ebp-22h] BYREF + char v16[5]; // [esp+27h] [ebp-21h] BYREF + int v17[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wstring::basic_string(&v16[1], a7, a8, (int)&v15); + (*(void (__thiscall **)(int *, int, int, int, int, char *))(*(_DWORD *)a2 + 12))(v17, a2, a4, a5, a6, &v16[1]); + v8 = (void (__cdecl *)(_DWORD *))a3[6]; + if ( v8 ) + v8(a3); + std::wstring::basic_string(a3, v17); + v9 = (volatile signed __int32 *)v17[0]; + v10 = *(_DWORD *)(v17[0] - 12); + v11 = (void *)(v17[0] - 12); + a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + a3[1] = v10; + if ( v9 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd(v9 - 1, 0xFFFFFFFF); + } + else + { + v13 = *((_DWORD *)v9 - 1); + *((_DWORD *)v9 - 1) = v13 - 1; + } + if ( v13 <= 0 ) + std::wstring::_Rep::_M_destroy(v11, (int)v16); + } + v12 = (void *)(*(_DWORD *)&v16[1] - 12); + if ( *(_UNKNOWN **)&v16[1] != &unk_51640C ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v16[1] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(*(_DWORD *)&v16[1] - 4); + *(_DWORD *)(*(_DWORD *)&v16[1] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::wstring::_Rep::_M_destroy(v12, (int)v17); + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB7A0) -------------------------------------------------------- +void __cdecl std::__facet_shims::__messages_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + wchar_t *a7, + int a8) +{ + void (__cdecl *v8)(int); // eax + wchar_t *v9; // edx + wchar_t *v10; // eax + int v11; // [esp+8h] [ebp-60h] + int v12; // [esp+8h] [ebp-60h] + void *v13[2]; // [esp+20h] [ebp-48h] BYREF + char v14[16]; // [esp+28h] [ebp-40h] BYREF + wchar_t *v15[2]; // [esp+38h] [ebp-30h] BYREF + char v16; // [esp+40h] [ebp-28h] BYREF + + v13[0] = v14; + LOBYTE(v11) = 0; + std::wstring::_M_construct((wchar_t **)v13, a7, (int)&a7[a8], v11); + (*(void (__thiscall **)(wchar_t **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(v15, a2, a4, a5, a6, v13); + v8 = *(void (__cdecl **)(int))(a3 + 24); + if ( v8 ) + v8(a3); + v9 = v15[1]; + *(_DWORD *)a3 = a3 + 8; + LOBYTE(v12) = 0; + std::wstring::_M_construct((wchar_t **)a3, v15[0], (int)&v15[0][(_DWORD)v9], v12); + v10 = v15[0]; + *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + if ( v10 != (wchar_t *)&v16 ) + operator delete(v10); + if ( v13[0] != v14 ) + operator delete(v13[0]); +} +// 4BB7CD: variable 'v11' is possibly undefined +// 4BB827: variable 'v12' is possibly undefined + +//----- (004BB890) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5) +{ + int result; // eax + void *v6; // ecx + int v7; // ebx + int v8; // [esp+1Ch] [ebp-2Ch] + char v9; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::string::string(v10, a3, a4, (int)&v9); + result = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v10, a5); + v6 = (void *)(v10[0] - 12); + if ( (_UNKNOWN *)v10[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v7 = _InterlockedExchangeAdd((volatile signed __int32 *)(v10[0] - 4), 0xFFFFFFFF); + } + else + { + v7 = *(_DWORD *)(v10[0] - 4); + *(_DWORD *)(v10[0] - 4) = v7 - 1; + } + if ( v7 <= 0 ) + { + v8 = result; + std::string::_Rep::_M_destroy(v6, (int)&v9); + return v8; + } + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BB950) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5) +{ + int v5; // ebx + int v7; // [esp+8h] [ebp-40h] + void *v8[2]; // [esp+18h] [ebp-30h] BYREF + char v9[40]; // [esp+20h] [ebp-28h] BYREF + + v8[0] = v9; + LOBYTE(v7) = 0; + std::string::_M_construct(v8, a3, (size_t)&a3[a4], v7); + v5 = (*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, v8, a5); + if ( v8[0] != v9 ) + operator delete(v8[0]); + return v5; +} +// 4BB97B: variable 'v7' is possibly undefined + +//----- (004BB9D0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5) +{ + int result; // eax + void *v6; // ecx + int v7; // ebx + int v8; // [esp+1Ch] [ebp-2Ch] + char v9; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::string::string(v10, a3, a4, (int)&v9); + result = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v10, a5); + v6 = (void *)(v10[0] - 12); + if ( (_UNKNOWN *)v10[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v7 = _InterlockedExchangeAdd((volatile signed __int32 *)(v10[0] - 4), 0xFFFFFFFF); + } + else + { + v7 = *(_DWORD *)(v10[0] - 4); + *(_DWORD *)(v10[0] - 4) = v7 - 1; + } + if ( v7 <= 0 ) + { + v8 = result; + std::string::_Rep::_M_destroy(v6, (int)&v9); + return v8; + } + } + return result; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BBA90) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5) +{ + int v5; // ebx + int v7; // [esp+8h] [ebp-40h] + void *v8[2]; // [esp+18h] [ebp-30h] BYREF + char v9[40]; // [esp+20h] [ebp-28h] BYREF + + v8[0] = v9; + LOBYTE(v7) = 0; + std::string::_M_construct(v8, a3, (size_t)&a3[a4], v7); + v5 = (*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, v8, a5); + if ( v8[0] != v9 ) + operator delete(v8[0]); + return v5; +} +// 4BBABB: variable 'v7' is possibly undefined + +//----- (004BBB10) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) +{ + return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); +} + +//----- (004BBB30) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) +{ + return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); +} + +//----- (004BBB50) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) +{ + return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); +} + +//----- (004BBB70) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) +{ + return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); +} + +//----- (004BBB90) -------------------------------------------------------- +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) +{ + return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); +} + +//----- (004BBBD0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) +{ + return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); +} + +//----- (004BBC10) -------------------------------------------------------- +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) +{ + return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); +} + +//----- (004BBC50) -------------------------------------------------------- +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) +{ + return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); +} + +//----- (004BBC90) -------------------------------------------------------- +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, std::string *a4, int a5) +{ + void (__cdecl *v5)(int); // eax + unsigned int *v6; // eax + int v7; // edx + unsigned int *v8; // ecx + int v9; // edx + const std::string *v10; // [esp+4h] [ebp-24h] + int v11; // [esp+1Bh] [ebp-Dh] BYREF + unsigned int *v12[3]; // [esp+1Ch] [ebp-Ch] BYREF + + (*(void (__thiscall **)(unsigned int **, int, std::string *, int))(*(_DWORD *)a2 + 12))(v12, a2, a4, a5); + v5 = *(void (__cdecl **)(int))(a3 + 24); + if ( v5 ) + v5(a3); + std::string::string((unsigned int **)a3, v12, v10); + v6 = v12[0]; + v7 = *(v12[0] - 3); + v8 = v12[0] - 3; + *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + *(_DWORD *)(a3 + 4) = v7; + if ( v6 != (unsigned int *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v9 = _InterlockedExchangeAdd((volatile signed __int32 *)v6 - 1, 0xFFFFFFFF); + } + else + { + v9 = *(v6 - 1); + *(v6 - 1) = v9 - 1; + } + if ( v9 <= 0 ) + std::string::_Rep::_M_destroy(v8, (int)&v11); + } +} +// 4BBCCD: variable 'v10' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BBD60) -------------------------------------------------------- +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) +{ + void (__cdecl *v5)(_DWORD *); // eax + void *v6; // edx + char *v7; // eax + int v8; // [esp+8h] [ebp-30h] + void *v9[2]; // [esp+18h] [ebp-20h] BYREF + char v10; // [esp+20h] [ebp-18h] BYREF + + (*(void (__thiscall **)(void **, int, int, int))(*(_DWORD *)a2 + 12))(v9, a2, a4, a5); + v5 = (void (__cdecl *)(_DWORD *))a3[6]; + if ( v5 ) + v5(a3); + v6 = v9[1]; + *a3 = a3 + 2; + LOBYTE(v8) = 0; + std::string::_M_construct(a3, (_BYTE *)v9[0], (int)v9[0] + (unsigned int)v6, v8); + v7 = (char *)v9[0]; + a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + if ( v7 != &v10 ) + operator delete(v7); +} +// 4BBDB0: variable 'v8' is possibly undefined + +//----- (004BBE00) -------------------------------------------------------- +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) +{ + void (__cdecl *v5)(_DWORD *); // eax + volatile signed __int32 *v6; // eax + int v7; // edx + void *v8; // ecx + int v9; // edx + int v10; // [esp+1Bh] [ebp-Dh] BYREF + _DWORD v11[3]; // [esp+1Ch] [ebp-Ch] BYREF + + (*(void (__thiscall **)(_DWORD *, int, int, int))(*(_DWORD *)a2 + 12))(v11, a2, a4, a5); + v5 = (void (__cdecl *)(_DWORD *))a3[6]; + if ( v5 ) + v5(a3); + std::wstring::basic_string(a3, v11); + v6 = (volatile signed __int32 *)v11[0]; + v7 = *(_DWORD *)(v11[0] - 12); + v8 = (void *)(v11[0] - 12); + a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + a3[1] = v7; + if ( v6 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v9 = _InterlockedExchangeAdd(v6 - 1, 0xFFFFFFFF); + } + else + { + v9 = *((_DWORD *)v6 - 1); + *((_DWORD *)v6 - 1) = v9 - 1; + } + if ( v9 <= 0 ) + std::wstring::_Rep::_M_destroy(v8, (int)&v10); + } +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BBED0) -------------------------------------------------------- +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, int a4, int a5) +{ + void (__cdecl *v5)(int); // eax + wchar_t *v6; // edx + wchar_t *v7; // eax + int v8; // [esp+8h] [ebp-30h] + wchar_t *v9[2]; // [esp+18h] [ebp-20h] BYREF + char v10; // [esp+20h] [ebp-18h] BYREF + + (*(void (__thiscall **)(wchar_t **, int, int, int))(*(_DWORD *)a2 + 12))(v9, a2, a4, a5); + v5 = *(void (__cdecl **)(int))(a3 + 24); + if ( v5 ) + v5(a3); + v6 = v9[1]; + *(_DWORD *)a3 = a3 + 8; + LOBYTE(v8) = 0; + std::wstring::_M_construct((wchar_t **)a3, v9[0], (int)&v9[0][(_DWORD)v6], v8); + v7 = v9[0]; + *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + if ( v7 != (wchar_t *)&v10 ) + operator delete(v7); +} +// 4BBF21: variable 'v8' is possibly undefined + +//----- (004BBF70) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); +} + +//----- (004BBF80) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); +} + +//----- (004BBF90) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); +} + +//----- (004BBFA0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); +} + +//----- (004BBFB0) -------------------------------------------------------- +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) +{ + char v3; // al + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + std::string *v7; // edi + void *v8; // ecx + char *v9; // edi + std::string *v10; // esi + volatile signed __int32 *v11; // eax + int v12; // edx + int v13; // edx + int v14; // edx + unsigned int v15; // [esp+Ch] [ebp-3Ch] + unsigned int v16; // [esp+Ch] [ebp-3Ch] + unsigned int v17; // [esp+Ch] [ebp-3Ch] + char *v18; // [esp+1Ch] [ebp-2Ch] + char *v19; // [esp+1Ch] [ebp-2Ch] + char v20; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v21[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_BYTE *)(a3 + 37) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_BYTE *)(a3 + 100) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v21, a2); + v18 = *(char **)(v21[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v18 + 1)); + std::string::copy(v21, v5, v18, 0, v15); + *(_DWORD *)(a3 + 8) = v5; + v18[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v18; + v6 = (void *)(v21[0] - 12); + if ( (_UNKNOWN *)v21[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)(v21[0] - 4), 0xFFFFFFFF); + } + else + { + v12 = *(_DWORD *)(v21[0] - 4); + *(_DWORD *)(v21[0] - 4) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v20); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v21, a2); + v19 = *(char **)(v21[0] - 12); + v7 = (std::string *)operator new[]((unsigned int)(v19 + 1)); + std::string::copy(v21, v7, v19, 0, v16); + *(_DWORD *)(a3 + 20) = v7; + v19[(_DWORD)v7] = 0; + *(_DWORD *)(a3 + 24) = v19; + v8 = (void *)(v21[0] - 12); + if ( (_UNKNOWN *)v21[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd((volatile signed __int32 *)(v21[0] - 4), 0xFFFFFFFF); + } + else + { + v13 = *(_DWORD *)(v21[0] - 4); + *(_DWORD *)(v21[0] - 4) = v13 - 1; + } + if ( v13 <= 0 ) + std::string::_Rep::_M_destroy(v8, (int)&v20); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v21, a2); + v9 = *(char **)(v21[0] - 12); + v10 = (std::string *)operator new[]((unsigned int)(v9 + 1)); + std::string::copy(v21, v10, v9, 0, v17); + v11 = (volatile signed __int32 *)v21[0]; + v9[(_DWORD)v10] = 0; + *(_DWORD *)(a3 + 28) = v10; + *(_DWORD *)(a3 + 32) = v9; + if ( v11 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd(v11 - 1, 0xFFFFFFFF); + } + else + { + v14 = *((_DWORD *)v11 - 1); + *((_DWORD *)v11 - 1) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v11 - 3), (int)&v20); + } +} +// 4BC025: variable 'v15' is possibly undefined +// 4BC084: variable 'v16' is possibly undefined +// 4BC0DD: variable 'v17' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BC200) -------------------------------------------------------- +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) +{ + char v3; // al + int v4; // eax + _BYTE *v5; // edi + _BYTE *v6; // edi + int v7; // edi + _BYTE *v8; // esi + char *v9; // eax + unsigned int v10; // [esp+1Ch] [ebp-3Ch] + unsigned int v11; // [esp+1Ch] [ebp-3Ch] + void *v12; // [esp+28h] [ebp-30h] BYREF + int v13; // [esp+2Ch] [ebp-2Ch] + char v14[40]; // [esp+30h] [ebp-28h] BYREF + + *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_BYTE *)(a3 + 37) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_BYTE *)(a3 + 100) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v12, a2); + v10 = v13; + v5 = (_BYTE *)operator new[](v13 + 1); + std::string::copy(&v12, v5, v10, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v10] = 0; + *(_DWORD *)(a3 + 12) = v10; + if ( v12 != v14 ) + operator delete(v12); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v12, a2); + v11 = v13; + v6 = (_BYTE *)operator new[](v13 + 1); + std::string::copy(&v12, v6, v11, 0); + *(_DWORD *)(a3 + 20) = v6; + v6[v11] = 0; + *(_DWORD *)(a3 + 24) = v11; + if ( v12 != v14 ) + operator delete(v12); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v12, a2); + v7 = v13; + v8 = (_BYTE *)operator new[](v13 + 1); + std::string::copy(&v12, v8, v7, 0); + v9 = (char *)v12; + v8[v7] = 0; + *(_DWORD *)(a3 + 28) = v8; + *(_DWORD *)(a3 + 32) = v7; + if ( v9 != v14 ) + operator delete(v9); +} + +//----- (004BC380) -------------------------------------------------------- +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) +{ + __int16 v3; // ax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + int v7; // eax + wchar_t *v8; // edi + volatile signed __int32 *v9; // eax + unsigned int v10; // edi + unsigned int v11; // edi + wchar_t *v12; // esi + void *v13; // ecx + int v14; // edx + int v15; // edx + int v16; // edx + unsigned int v17; // [esp+Ch] [ebp-3Ch] + int v18; // [esp+18h] [ebp-30h] + char *v19; // [esp+1Ch] [ebp-2Ch] + char *v20; // [esp+1Ch] [ebp-2Ch] + char *v21; // [esp+1Ch] [ebp-2Ch] + char v22; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v23[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_WORD *)(a3 + 38) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_BYTE *)(a3 + 164) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v23, a2); + v19 = *(char **)(v23[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v19 + 1)); + std::string::copy(v23, v5, v19, 0, v17); + *(_DWORD *)(a3 + 8) = v5; + v19[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v19; + v6 = (void *)(v23[0] - 12); + if ( (_UNKNOWN *)v23[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(v23[0] - 4); + *(_DWORD *)(v23[0] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v22); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v23, a2); + v20 = *(char **)(v23[0] - 12); + v7 = (int)(v20 + 1); + if ( (unsigned int)(v20 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v18 = v7; + v8 = (wchar_t *)operator new[](2 * v7); + std::wstring::copy(v23, v8, (unsigned int)v20, 0); + *(_DWORD *)(a3 + 20) = v8; + *(_DWORD *)(a3 + 24) = v20; + v9 = (volatile signed __int32 *)v23[0]; + v8[v18 - 1] = 0; + if ( v9 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd(v9 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v9 - 1); + *((_DWORD *)v9 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)(v9 - 3), (int)&v22); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v23, a2); + v10 = *(_DWORD *)(v23[0] - 12) + 1; + v21 = *(char **)(v23[0] - 12); + if ( v10 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v11 = v10; + v12 = (wchar_t *)operator new[](v11 * 2); + std::wstring::copy(v23, v12, (unsigned int)v21, 0); + *(_DWORD *)(a3 + 28) = v12; + v12[v11 - 1] = 0; + *(_DWORD *)(a3 + 32) = v21; + v13 = (void *)(v23[0] - 12); + if ( (_UNKNOWN *)v23[0] != &unk_51640C ) + { + if ( _CRT_MT ) + { + v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF); + } + else + { + v16 = *(_DWORD *)(v23[0] - 4); + *(_DWORD *)(v23[0] - 4) = v16 - 1; + } + if ( v16 <= 0 ) + std::wstring::_Rep::_M_destroy(v13, (int)&v22); + } +} +// 4BC3FA: variable 'v17' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BC640) -------------------------------------------------------- +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) +{ + __int16 v3; // ax + int v4; // eax + _BYTE *v5; // edi + int v6; // eax + wchar_t *v7; // edi + char *v8; // eax + int v9; // edi + int v10; // eax + wchar_t *v11; // esi + int v12; // [esp+18h] [ebp-40h] + unsigned int v13; // [esp+1Ch] [ebp-3Ch] + unsigned int v14; // [esp+1Ch] [ebp-3Ch] + int v15; // [esp+1Ch] [ebp-3Ch] + void *v16; // [esp+28h] [ebp-30h] BYREF + int v17; // [esp+2Ch] [ebp-2Ch] + char v18[40]; // [esp+30h] [ebp-28h] BYREF + + *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_WORD *)(a3 + 38) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_BYTE *)(a3 + 164) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v16, a2); + v13 = v17; + v5 = (_BYTE *)operator new[](v17 + 1); + std::string::copy(&v16, v5, v13, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v13] = 0; + *(_DWORD *)(a3 + 12) = v13; + if ( v16 != v18 ) + operator delete(v16); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v16, a2); + v14 = v17; + v6 = v17 + 1; + if ( (unsigned int)(v17 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v12 = v6; + v7 = (wchar_t *)operator new[](2 * v6); + std::wstring::copy(&v16, v7, v14, 0); + *(_DWORD *)(a3 + 20) = v7; + *(_DWORD *)(a3 + 24) = v14; + v8 = (char *)v16; + v7[v12 - 1] = 0; + if ( v8 != v18 ) + operator delete(v8); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v16, a2); + v9 = v17; + v10 = v17 + 1; + if ( (unsigned int)(v17 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v15 = v10; + v11 = (wchar_t *)operator new[](2 * v10); + std::wstring::copy(&v16, v11, v9, 0); + *(_DWORD *)(a3 + 32) = v9; + *(_DWORD *)(a3 + 28) = v11; + v11[v15 - 1] = 0; + if ( v16 != v18 ) + operator delete(v16); +} + +//----- (004BC7F0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + std::string *v7; // edi + void *v8; // ecx + std::string *v9; // edi + void *v10; // ecx + std::string *v11; // edi + void *v12; // ecx + int result; // eax + int v14; // edx + int v15; // edx + int v16; // edx + int v17; // edx + unsigned int v18; // [esp+Ch] [ebp-3Ch] + unsigned int v19; // [esp+Ch] [ebp-3Ch] + unsigned int v20; // [esp+Ch] [ebp-3Ch] + unsigned int v21; // [esp+Ch] [ebp-3Ch] + char *v22; // [esp+1Ch] [ebp-2Ch] + char *v23; // [esp+1Ch] [ebp-2Ch] + char *v24; // [esp+1Ch] [ebp-2Ch] + char *v25; // [esp+1Ch] [ebp-2Ch] + char v26; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v27[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 44) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_DWORD *)(a3 + 36) = 0; + *(_BYTE *)(a3 + 67) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v27, a2); + v22 = *(char **)(v27[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v22 + 1)); + std::string::copy(v27, v5, v22, 0, v18); + *(_DWORD *)(a3 + 8) = v5; + v22[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v22; + v6 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v27, a2); + v23 = *(char **)(v27[0] - 12); + v7 = (std::string *)operator new[]((unsigned int)(v23 + 1)); + std::string::copy(v27, v7, v23, 0, v19); + *(_DWORD *)(a3 + 20) = v7; + v23[(_DWORD)v7] = 0; + *(_DWORD *)(a3 + 24) = v23; + v8 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v15 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v15 - 1; + } + if ( v15 <= 0 ) + std::string::_Rep::_M_destroy(v8, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v27, a2); + v24 = *(char **)(v27[0] - 12); + v9 = (std::string *)operator new[]((unsigned int)(v24 + 1)); + std::string::copy(v27, v9, v24, 0, v20); + *(_DWORD *)(a3 + 28) = v9; + v24[(_DWORD)v9] = 0; + *(_DWORD *)(a3 + 32) = v24; + v10 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v16 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v16 - 1; + } + if ( v16 <= 0 ) + std::string::_Rep::_M_destroy(v10, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v27, a2); + v25 = *(char **)(v27[0] - 12); + v11 = (std::string *)operator new[]((unsigned int)(v25 + 1)); + std::string::copy(v27, v11, v25, 0, v21); + *(_DWORD *)(a3 + 36) = v11; + v25[(_DWORD)v11] = 0; + *(_DWORD *)(a3 + 40) = v25; + v12 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v17 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v17 - 1; + } + if ( v17 <= 0 ) + std::string::_Rep::_M_destroy(v12, (int)&v26); + } + *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 52) = result; + return result; +} +// 4BC876: variable 'v18' is possibly undefined +// 4BC8D5: variable 'v19' is possibly undefined +// 4BC934: variable 'v20' is possibly undefined +// 4BC993: variable 'v21' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BCB20) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + _BYTE *v5; // edi + _BYTE *v6; // edi + _BYTE *v7; // edi + _BYTE *v8; // edi + int result; // eax + int v10; // [esp+1Ch] [ebp-3Ch] + int v11; // [esp+1Ch] [ebp-3Ch] + int v12; // [esp+1Ch] [ebp-3Ch] + int v13; // [esp+1Ch] [ebp-3Ch] + void *v14; // [esp+28h] [ebp-30h] BYREF + int v15; // [esp+2Ch] [ebp-2Ch] + char v16[40]; // [esp+30h] [ebp-28h] BYREF + + *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 44) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_DWORD *)(a3 + 36) = 0; + *(_BYTE *)(a3 + 67) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v14, a2); + v10 = v15; + v5 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v5, v10, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v10] = 0; + *(_DWORD *)(a3 + 12) = v10; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v14, a2); + v11 = v15; + v6 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v6, v11, 0); + *(_DWORD *)(a3 + 20) = v6; + v6[v11] = 0; + *(_DWORD *)(a3 + 24) = v11; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v14, a2); + v12 = v15; + v7 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v7, v12, 0); + *(_DWORD *)(a3 + 28) = v7; + v7[v12] = 0; + *(_DWORD *)(a3 + 32) = v12; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v14, a2); + v13 = v15; + v8 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v8, v13, 0); + *(_DWORD *)(a3 + 36) = v8; + v8[v13] = 0; + *(_DWORD *)(a3 + 40) = v13; + if ( v14 != v16 ) + operator delete(v14); + *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 52) = result; + return result; +} + +//----- (004BCD30) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + std::string *v7; // edi + void *v8; // ecx + std::string *v9; // edi + void *v10; // ecx + std::string *v11; // edi + void *v12; // ecx + int result; // eax + int v14; // edx + int v15; // edx + int v16; // edx + int v17; // edx + unsigned int v18; // [esp+Ch] [ebp-3Ch] + unsigned int v19; // [esp+Ch] [ebp-3Ch] + unsigned int v20; // [esp+Ch] [ebp-3Ch] + unsigned int v21; // [esp+Ch] [ebp-3Ch] + char *v22; // [esp+1Ch] [ebp-2Ch] + char *v23; // [esp+1Ch] [ebp-2Ch] + char *v24; // [esp+1Ch] [ebp-2Ch] + char *v25; // [esp+1Ch] [ebp-2Ch] + char v26; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v27[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 44) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_DWORD *)(a3 + 36) = 0; + *(_BYTE *)(a3 + 67) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v27, a2); + v22 = *(char **)(v27[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v22 + 1)); + std::string::copy(v27, v5, v22, 0, v18); + *(_DWORD *)(a3 + 8) = v5; + v22[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v22; + v6 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v27, a2); + v23 = *(char **)(v27[0] - 12); + v7 = (std::string *)operator new[]((unsigned int)(v23 + 1)); + std::string::copy(v27, v7, v23, 0, v19); + *(_DWORD *)(a3 + 20) = v7; + v23[(_DWORD)v7] = 0; + *(_DWORD *)(a3 + 24) = v23; + v8 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v15 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v15 - 1; + } + if ( v15 <= 0 ) + std::string::_Rep::_M_destroy(v8, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v27, a2); + v24 = *(char **)(v27[0] - 12); + v9 = (std::string *)operator new[]((unsigned int)(v24 + 1)); + std::string::copy(v27, v9, v24, 0, v20); + *(_DWORD *)(a3 + 28) = v9; + v24[(_DWORD)v9] = 0; + *(_DWORD *)(a3 + 32) = v24; + v10 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v16 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v16 - 1; + } + if ( v16 <= 0 ) + std::string::_Rep::_M_destroy(v10, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v27, a2); + v25 = *(char **)(v27[0] - 12); + v11 = (std::string *)operator new[]((unsigned int)(v25 + 1)); + std::string::copy(v27, v11, v25, 0, v21); + *(_DWORD *)(a3 + 36) = v11; + v25[(_DWORD)v11] = 0; + *(_DWORD *)(a3 + 40) = v25; + v12 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v17 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v17 - 1; + } + if ( v17 <= 0 ) + std::string::_Rep::_M_destroy(v12, (int)&v26); + } + *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 52) = result; + return result; +} +// 4BCDB6: variable 'v18' is possibly undefined +// 4BCE15: variable 'v19' is possibly undefined +// 4BCE74: variable 'v20' is possibly undefined +// 4BCED3: variable 'v21' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BD060) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + _BYTE *v5; // edi + _BYTE *v6; // edi + _BYTE *v7; // edi + _BYTE *v8; // edi + int result; // eax + int v10; // [esp+1Ch] [ebp-3Ch] + int v11; // [esp+1Ch] [ebp-3Ch] + int v12; // [esp+1Ch] [ebp-3Ch] + int v13; // [esp+1Ch] [ebp-3Ch] + void *v14; // [esp+28h] [ebp-30h] BYREF + int v15; // [esp+2Ch] [ebp-2Ch] + char v16[40]; // [esp+30h] [ebp-28h] BYREF + + *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 44) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_DWORD *)(a3 + 36) = 0; + *(_BYTE *)(a3 + 67) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v14, a2); + v10 = v15; + v5 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v5, v10, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v10] = 0; + *(_DWORD *)(a3 + 12) = v10; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v14, a2); + v11 = v15; + v6 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v6, v11, 0); + *(_DWORD *)(a3 + 20) = v6; + v6[v11] = 0; + *(_DWORD *)(a3 + 24) = v11; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v14, a2); + v12 = v15; + v7 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v7, v12, 0); + *(_DWORD *)(a3 + 28) = v7; + v7[v12] = 0; + *(_DWORD *)(a3 + 32) = v12; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v14, a2); + v13 = v15; + v8 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v8, v13, 0); + *(_DWORD *)(a3 + 36) = v8; + v8[v13] = 0; + *(_DWORD *)(a3 + 40) = v13; + if ( v14 != v16 ) + operator delete(v14); + *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 52) = result; + return result; +} + +//----- (004BD270) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + int v7; // eax + wchar_t *v8; // edi + void *v9; // ecx + int v10; // eax + wchar_t *v11; // edi + volatile signed __int32 *v12; // eax + int v13; // eax + wchar_t *v14; // edi + void *v15; // ecx + int result; // eax + int v17; // edx + int v18; // edx + int v19; // edx + int v20; // edx + unsigned int v21; // [esp+Ch] [ebp-3Ch] + int v22; // [esp+18h] [ebp-30h] + int v23; // [esp+18h] [ebp-30h] + int v24; // [esp+18h] [ebp-30h] + char *v25; // [esp+1Ch] [ebp-2Ch] + char *v26; // [esp+1Ch] [ebp-2Ch] + char *v27; // [esp+1Ch] [ebp-2Ch] + char *v28; // [esp+1Ch] [ebp-2Ch] + char v29; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v30[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 48) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 24) = 0; + *(_DWORD *)(a3 + 32) = 0; + *(_DWORD *)(a3 + 40) = 0; + *(_BYTE *)(a3 + 82) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v30, a2); + v25 = *(char **)(v30[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v25 + 1)); + std::string::copy(v30, v5, v25, 0, v21); + *(_DWORD *)(a3 + 8) = v5; + v25[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v25; + v6 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v17 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v17 - 1; + } + if ( v17 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v30, a2); + v26 = *(char **)(v30[0] - 12); + v7 = (int)(v26 + 1); + if ( (unsigned int)(v26 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v22 = v7; + v8 = (wchar_t *)operator new[](2 * v7); + std::wstring::copy(v30, v8, (unsigned int)v26, 0); + *(_DWORD *)(a3 + 24) = v8; + v8[v22 - 1] = 0; + *(_DWORD *)(a3 + 28) = v26; + v9 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_51640C ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v18 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v18 - 1; + } + if ( v18 <= 0 ) + std::wstring::_Rep::_M_destroy(v9, (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v30, a2); + v27 = *(char **)(v30[0] - 12); + v10 = (int)(v27 + 1); + if ( (unsigned int)(v27 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v23 = v10; + v11 = (wchar_t *)operator new[](2 * v10); + std::wstring::copy(v30, v11, (unsigned int)v27, 0); + *(_DWORD *)(a3 + 32) = v11; + *(_DWORD *)(a3 + 36) = v27; + v12 = (volatile signed __int32 *)v30[0]; + v11[v23 - 1] = 0; + if ( v12 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v19 = _InterlockedExchangeAdd(v12 - 1, 0xFFFFFFFF); + } + else + { + v19 = *((_DWORD *)v12 - 1); + *((_DWORD *)v12 - 1) = v19 - 1; + } + if ( v19 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)(v12 - 3), (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v30, a2); + v28 = *(char **)(v30[0] - 12); + v13 = (int)(v28 + 1); + if ( (unsigned int)(v28 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v24 = v13; + v14 = (wchar_t *)operator new[](2 * v13); + std::wstring::copy(v30, v14, (unsigned int)v28, 0); + *(_DWORD *)(a3 + 40) = v14; + v14[v24 - 1] = 0; + *(_DWORD *)(a3 + 44) = v28; + v15 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_51640C ) + { + if ( _CRT_MT ) + { + v20 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v20 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v20 - 1; + } + if ( v20 <= 0 ) + std::wstring::_Rep::_M_destroy(v15, (int)&v29); + } + *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 56) = result; + return result; +} +// 4BD2F8: variable 'v21' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BD610) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + _BYTE *v5; // edi + int v6; // eax + wchar_t *v7; // edi + int v8; // eax + wchar_t *v9; // edi + char *v10; // eax + int v11; // eax + wchar_t *v12; // edi + int result; // eax + int v14; // [esp+18h] [ebp-40h] + int v15; // [esp+18h] [ebp-40h] + int v16; // [esp+18h] [ebp-40h] + int v17; // [esp+1Ch] [ebp-3Ch] + int v18; // [esp+1Ch] [ebp-3Ch] + int v19; // [esp+1Ch] [ebp-3Ch] + int v20; // [esp+1Ch] [ebp-3Ch] + void *v21; // [esp+28h] [ebp-30h] BYREF + int v22; // [esp+2Ch] [ebp-2Ch] + char v23[40]; // [esp+30h] [ebp-28h] BYREF + + *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 48) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 24) = 0; + *(_DWORD *)(a3 + 32) = 0; + *(_DWORD *)(a3 + 40) = 0; + *(_BYTE *)(a3 + 82) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v21, a2); + v17 = v22; + v5 = (_BYTE *)operator new[](v22 + 1); + std::string::copy(&v21, v5, v17, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v17] = 0; + *(_DWORD *)(a3 + 12) = v17; + if ( v21 != v23 ) + operator delete(v21); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v21, a2); + v18 = v22; + v6 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v14 = v6; + v7 = (wchar_t *)operator new[](2 * v6); + std::wstring::copy(&v21, v7, v18, 0); + *(_DWORD *)(a3 + 24) = v7; + v7[v14 - 1] = 0; + *(_DWORD *)(a3 + 28) = v18; + if ( v21 != v23 ) + operator delete(v21); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v21, a2); + v19 = v22; + v8 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v15 = v8; + v9 = (wchar_t *)operator new[](2 * v8); + std::wstring::copy(&v21, v9, v19, 0); + *(_DWORD *)(a3 + 32) = v9; + *(_DWORD *)(a3 + 36) = v19; + v10 = (char *)v21; + v9[v15 - 1] = 0; + if ( v10 != v23 ) + operator delete(v10); + (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v21, a2); + v20 = v22; + v11 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v16 = v11; + v12 = (wchar_t *)operator new[](2 * v11); + std::wstring::copy(&v21, v12, v20, 0); + *(_DWORD *)(a3 + 40) = v12; + v12[v16 - 1] = 0; + *(_DWORD *)(a3 + 44) = v20; + if ( v21 != v23 ) + operator delete(v21); + *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 56) = result; + return result; +} + +//----- (004BD880) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + int v7; // eax + wchar_t *v8; // edi + void *v9; // ecx + int v10; // eax + wchar_t *v11; // edi + volatile signed __int32 *v12; // eax + int v13; // eax + wchar_t *v14; // edi + void *v15; // ecx + int result; // eax + int v17; // edx + int v18; // edx + int v19; // edx + int v20; // edx + unsigned int v21; // [esp+Ch] [ebp-3Ch] + int v22; // [esp+18h] [ebp-30h] + int v23; // [esp+18h] [ebp-30h] + int v24; // [esp+18h] [ebp-30h] + char *v25; // [esp+1Ch] [ebp-2Ch] + char *v26; // [esp+1Ch] [ebp-2Ch] + char *v27; // [esp+1Ch] [ebp-2Ch] + char *v28; // [esp+1Ch] [ebp-2Ch] + char v29; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v30[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 48) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 24) = 0; + *(_DWORD *)(a3 + 32) = 0; + *(_DWORD *)(a3 + 40) = 0; + *(_BYTE *)(a3 + 82) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v30, a2); + v25 = *(char **)(v30[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v25 + 1)); + std::string::copy(v30, v5, v25, 0, v21); + *(_DWORD *)(a3 + 8) = v5; + v25[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v25; + v6 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_51641C ) + { + if ( _CRT_MT ) + { + v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v17 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v17 - 1; + } + if ( v17 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v30, a2); + v26 = *(char **)(v30[0] - 12); + v7 = (int)(v26 + 1); + if ( (unsigned int)(v26 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v22 = v7; + v8 = (wchar_t *)operator new[](2 * v7); + std::wstring::copy(v30, v8, (unsigned int)v26, 0); + *(_DWORD *)(a3 + 24) = v8; + v8[v22 - 1] = 0; + *(_DWORD *)(a3 + 28) = v26; + v9 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_51640C ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v18 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v18 - 1; + } + if ( v18 <= 0 ) + std::wstring::_Rep::_M_destroy(v9, (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v30, a2); + v27 = *(char **)(v30[0] - 12); + v10 = (int)(v27 + 1); + if ( (unsigned int)(v27 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v23 = v10; + v11 = (wchar_t *)operator new[](2 * v10); + std::wstring::copy(v30, v11, (unsigned int)v27, 0); + *(_DWORD *)(a3 + 32) = v11; + *(_DWORD *)(a3 + 36) = v27; + v12 = (volatile signed __int32 *)v30[0]; + v11[v23 - 1] = 0; + if ( v12 != (volatile signed __int32 *)&unk_51640C ) + { + if ( _CRT_MT ) + { + v19 = _InterlockedExchangeAdd(v12 - 1, 0xFFFFFFFF); + } + else + { + v19 = *((_DWORD *)v12 - 1); + *((_DWORD *)v12 - 1) = v19 - 1; + } + if ( v19 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)(v12 - 3), (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v30, a2); + v28 = *(char **)(v30[0] - 12); + v13 = (int)(v28 + 1); + if ( (unsigned int)(v28 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v24 = v13; + v14 = (wchar_t *)operator new[](2 * v13); + std::wstring::copy(v30, v14, (unsigned int)v28, 0); + *(_DWORD *)(a3 + 40) = v14; + v14[v24 - 1] = 0; + *(_DWORD *)(a3 + 44) = v28; + v15 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_51640C ) + { + if ( _CRT_MT ) + { + v20 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v20 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v20 - 1; + } + if ( v20 <= 0 ) + std::wstring::_Rep::_M_destroy(v15, (int)&v29); + } + *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 56) = result; + return result; +} +// 4BD908: variable 'v21' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004BDC20) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + _BYTE *v5; // edi + int v6; // eax + wchar_t *v7; // edi + int v8; // eax + wchar_t *v9; // edi + char *v10; // eax + int v11; // eax + wchar_t *v12; // edi + int result; // eax + int v14; // [esp+18h] [ebp-40h] + int v15; // [esp+18h] [ebp-40h] + int v16; // [esp+18h] [ebp-40h] + int v17; // [esp+1Ch] [ebp-3Ch] + int v18; // [esp+1Ch] [ebp-3Ch] + int v19; // [esp+1Ch] [ebp-3Ch] + int v20; // [esp+1Ch] [ebp-3Ch] + void *v21; // [esp+28h] [ebp-30h] BYREF + int v22; // [esp+2Ch] [ebp-2Ch] + char v23[40]; // [esp+30h] [ebp-28h] BYREF + + *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 48) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 24) = 0; + *(_DWORD *)(a3 + 32) = 0; + *(_DWORD *)(a3 + 40) = 0; + *(_BYTE *)(a3 + 82) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v21, a2); + v17 = v22; + v5 = (_BYTE *)operator new[](v22 + 1); + std::string::copy(&v21, v5, v17, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v17] = 0; + *(_DWORD *)(a3 + 12) = v17; + if ( v21 != v23 ) + operator delete(v21); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v21, a2); + v18 = v22; + v6 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v14 = v6; + v7 = (wchar_t *)operator new[](2 * v6); + std::wstring::copy(&v21, v7, v18, 0); + *(_DWORD *)(a3 + 24) = v7; + v7[v14 - 1] = 0; + *(_DWORD *)(a3 + 28) = v18; + if ( v21 != v23 ) + operator delete(v21); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v21, a2); + v19 = v22; + v8 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v15 = v8; + v9 = (wchar_t *)operator new[](2 * v8); + std::wstring::copy(&v21, v9, v19, 0); + *(_DWORD *)(a3 + 32) = v9; + *(_DWORD *)(a3 + 36) = v19; + v10 = (char *)v21; + v9[v15 - 1] = 0; + if ( v10 != v23 ) + operator delete(v10); + (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v21, a2); + v20 = v22; + v11 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v16 = v11; + v12 = (wchar_t *)operator new[](2 * v11); + std::wstring::copy(&v21, v12, v20, 0); + *(_DWORD *)(a3 + 40) = v12; + v12[v16 - 1] = 0; + *(_DWORD *)(a3 + 44) = v20; + if ( v21 != v23 ) + operator delete(v21); + *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 56) = result; + return result; +} + +//----- (004BDE90) -------------------------------------------------------- +void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, const char *a3) +{ + void (__cdecl ***v4)(_anonymous_namespace_::io_error_category *__hidden); // esi + int (__thiscall *v5)(int, int, int); // eax + unsigned int *v6; // eax + void *v7; // ecx + size_t v8; // eax + unsigned int *v9; // eax + void *v10; // ecx + char *v11; // eax + std::runtime_error *v12[2]; // [esp+28h] [ebp-60h] BYREF + char v13[16]; // [esp+30h] [ebp-58h] BYREF + void *v14[2]; // [esp+40h] [ebp-48h] BYREF + int v15[4]; // [esp+48h] [ebp-40h] BYREF + void *v16[2]; // [esp+58h] [ebp-30h] BYREF + int v17[10]; // [esp+60h] [ebp-28h] BYREF + + v4 = `anonymous namespace'::__io_category_instance(); + v5 = (int (__thiscall *)(int, int, int))(*v4)[4]; + if ( v5 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v12[0] = (std::runtime_error *)v13; + v12[1] = 0; + v13[0] = 0; + std::string::_M_replace((unsigned int *)v12, 0, 0, "iostream error", 0xEu); + } + else + { + v5((int)v12, (int)v4, 1); + } + v6 = std::string::_M_replace((unsigned int *)v12, 0, 0, ": ", 2u); + v14[0] = v15; + if ( (unsigned int *)*v6 == v6 + 2 ) + { + v15[0] = v6[2]; + v15[1] = v6[3]; + v15[2] = v6[4]; + v15[3] = v6[5]; + } + else + { + v14[0] = (void *)*v6; + v15[0] = v6[2]; + } + v7 = (void *)v6[1]; + *((_BYTE *)v6 + 8) = 0; + v14[1] = v7; + *v6 = (unsigned int)(v6 + 2); + v6[1] = 0; + v8 = strlen((const char *)this); + v9 = std::string::_M_replace((unsigned int *)v14, 0, 0, (char *)this, v8); + v16[0] = v17; + if ( (unsigned int *)*v9 == v9 + 2 ) + { + v17[0] = v9[2]; + v17[1] = v9[3]; + v17[2] = v9[4]; + v17[3] = v9[5]; + } + else + { + v16[0] = (void *)*v9; + v17[0] = v9[2]; + } + v10 = (void *)v9[1]; + *((_BYTE *)v9 + 8) = 0; + v16[1] = v10; + *v9 = (unsigned int)(v9 + 2); + v9[1] = 0; + std::runtime_error::runtime_error(a1, (int)v16); + if ( v16[0] != v17 ) + operator delete(v16[0]); + if ( v14[0] != v15 ) + operator delete(v14[0]); + if ( (char *)v12[0] != v13 ) + operator delete(v12[0]); + a1[2] = 1; + a1[3] = v4; + *a1 = &off_5386B8; + v11 = (char *)std::runtime_error::what((int)a1); + std::__construct_ios_failure(a1 + 4, v11); +} +// 5386B8: using guessed type void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this); + +//----- (004BE0E0) -------------------------------------------------------- +void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4) +{ + void (__cdecl ***v5)(_anonymous_namespace_::system_error_category *__hidden); // esi + int (__thiscall *v6)(int, int, int); // eax + unsigned int *v7; // eax + void *v8; // ecx + size_t v9; // eax + unsigned int *v10; // eax + void *v11; // ecx + char *v12; // eax + std::runtime_error *v13; // [esp+28h] [ebp-60h] BYREF + int v14; // [esp+2Ch] [ebp-5Ch] + char v15[16]; // [esp+30h] [ebp-58h] BYREF + void *v16[2]; // [esp+40h] [ebp-48h] BYREF + int v17[4]; // [esp+48h] [ebp-40h] BYREF + void *v18[2]; // [esp+58h] [ebp-30h] BYREF + int v19[10]; // [esp+60h] [ebp-28h] BYREF + + if ( a3 ) + { + v5 = std::_V2::system_category(); + v6 = (int (__thiscall *)(int, int, int))(*v5)[4]; + if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v15[0] = 0; + v13 = (std::runtime_error *)v15; + v14 = 0; + if ( a3 != 1 ) + { + std::string::_M_replace((unsigned int *)&v13, 0, 0, "Unknown error", 0xDu); + goto LABEL_5; + } + goto LABEL_18; + } + } + else + { + v5 = `anonymous namespace'::__io_category_instance(); + v6 = (int (__thiscall *)(int, int, int))(*v5)[4]; + if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v14 = 0; + v13 = (std::runtime_error *)v15; + v15[0] = 0; +LABEL_18: + std::string::_M_replace((unsigned int *)&v13, 0, 0, "iostream error", 0xEu); + a3 = 1; + goto LABEL_5; + } + a3 = 1; + } + v6((int)&v13, (int)v5, a3); +LABEL_5: + v7 = std::string::_M_replace((unsigned int *)&v13, 0, 0, ": ", 2u); + v16[0] = v17; + if ( (unsigned int *)*v7 == v7 + 2 ) + { + v17[0] = v7[2]; + v17[1] = v7[3]; + v17[2] = v7[4]; + v17[3] = v7[5]; + } + else + { + v16[0] = (void *)*v7; + v17[0] = v7[2]; + } + v8 = (void *)v7[1]; + *((_BYTE *)v7 + 8) = 0; + v16[1] = v8; + *v7 = (unsigned int)(v7 + 2); + v7[1] = 0; + v9 = strlen((const char *)this); + v10 = std::string::_M_replace((unsigned int *)v16, 0, 0, (char *)this, v9); + v18[0] = v19; + if ( (unsigned int *)*v10 == v10 + 2 ) + { + v19[0] = v10[2]; + v19[1] = v10[3]; + v19[2] = v10[4]; + v19[3] = v10[5]; + } + else + { + v18[0] = (void *)*v10; + v19[0] = v10[2]; + } + v11 = (void *)v10[1]; + *((_BYTE *)v10 + 8) = 0; + v18[1] = v11; + *v10 = (unsigned int)(v10 + 2); + v10[1] = 0; + std::runtime_error::runtime_error(a1, (int)v18); + if ( v18[0] != v19 ) + operator delete(v18[0]); + if ( v16[0] != v17 ) + operator delete(v16[0]); + if ( v13 != (std::runtime_error *)v15 ) + operator delete(v13); + a1[3] = v5; + *a1 = &off_5386B8; + a1[2] = a3; + v12 = (char *)std::runtime_error::what((int)a1); + std::__construct_ios_failure(a1 + 4, v12); +} +// 5386B8: using guessed type void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this); + +//----- (004BE3B0) -------------------------------------------------------- +void __fastcall std::__ios_failure::~__ios_failure(int a1) +{ + *(_DWORD *)a1 = &off_5386B8; + std::__destroy_ios_failure((int (__fastcall ***)(_DWORD))(a1 + 16)); + *(_DWORD *)a1 = &off_538418; + std::system_error::~system_error((_DWORD *)a1); + operator delete((void *)a1); +} +// 538418: using guessed type int (*off_538418)(); +// 5386B8: using guessed type void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this); + +//----- (004BE3F0) -------------------------------------------------------- +void __fastcall std::__ios_failure::~__ios_failure(int a1) +{ + *(_DWORD *)a1 = &off_5386B8; + std::__destroy_ios_failure((int (__fastcall ***)(_DWORD))(a1 + 16)); + *(_DWORD *)a1 = &off_538418; + std::system_error::~system_error((_DWORD *)a1); +} +// 538418: using guessed type int (*off_538418)(); +// 5386B8: using guessed type void (__cdecl *off_5386B8)(std::__ios_failure *__hidden this); + +//----- (004BE420) -------------------------------------------------------- +void __fastcall std::bad_exception::~bad_exception(void *a1) +{ + operator delete(a1, 4u); +} + +//----- (004BE450) -------------------------------------------------------- +unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int a2) +{ + unsigned int v2; // eax + int v3; // ebx + int v4; // edx + unsigned int result; // eax + + v2 = this[12]; + v3 = (v2 >> 3) & 1; + if ( (v2 & 0x10) != 0 ) + LOBYTE(v2) = 1; + v4 = this[16]; + result = v2 & 1; + this[1] = v4; + this[2] = v4; + if ( a2 > 0 && (_BYTE)v3 ) + { + this[3] = a2 + v4; +LABEL_6: + this[5] = 0; + this[4] = 0; + this[6] = 0; + return result; + } + this[3] = v4; + if ( a2 ) + goto LABEL_6; + if ( !(_BYTE)result ) + goto LABEL_6; + result = this[17]; + if ( result <= 1 ) + goto LABEL_6; + result = v4 + result - 1; + this[5] = v4; + this[4] = v4; + this[6] = result; + return result; +} + +//----- (004BE4D0) -------------------------------------------------------- +int __thiscall std::filebuf::_M_get_ext_pos(int this, int a2) +{ + if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 88) + 24))(*(_DWORD *)(this + 88)) ) + return *(_DWORD *)(this + 8) - *(_DWORD *)(this + 12); + else + return *(_DWORD *)(this + 92) + + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 88) + 28))( + *(_DWORD *)(this + 88), + a2, + *(_DWORD *)(this + 92), + *(_DWORD *)(this + 100), + *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) + - *(_DWORD *)(this + 104); +} + +//----- (004BE530) -------------------------------------------------------- +int __fastcall std::filebuf::_M_create_pback(int a1) +{ + int v1; // eax + int result; // eax + + if ( !*(_BYTE *)(a1 + 84) ) + { + v1 = *(_DWORD *)(a1 + 8); + *(_BYTE *)(a1 + 84) = 1; + *(_DWORD *)(a1 + 76) = v1; + *(_DWORD *)(a1 + 80) = *(_DWORD *)(a1 + 12); + *(_DWORD *)(a1 + 4) = a1 + 75; + *(_DWORD *)(a1 + 8) = a1 + 75; + result = a1 + 76; + *(_DWORD *)(a1 + 12) = a1 + 76; + } + return result; +} + +//----- (004BE560) -------------------------------------------------------- +int __fastcall std::filebuf::_M_destroy_pback(int a1) +{ + bool v1; // zf + int v2; // ebx + int v3; // edx + int result; // eax + + if ( *(_BYTE *)(a1 + 84) ) + { + v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); + v2 = *(_DWORD *)(a1 + 64); + v3 = *(_DWORD *)(a1 + 80); + *(_BYTE *)(a1 + 84) = 0; + result = *(_DWORD *)(a1 + 76) + !v1; + *(_DWORD *)(a1 + 4) = v2; + *(_DWORD *)(a1 + 76) = result; + *(_DWORD *)(a1 + 8) = result; + *(_DWORD *)(a1 + 12) = v3; + } + return result; +} + +//----- (004BE5A0) -------------------------------------------------------- +int __fastcall std::filebuf::_M_terminate_output(_DWORD *a1) +{ + int v1; // esi + int v3; // eax + int v4; // ecx + _DWORD **v5; // eax + _DWORD *v6; // ebx + _DWORD **v7; // ebp + unsigned int v8; // eax + unsigned int v9; // esi + unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] + void *v12; // [esp+2Ch] [ebp-B4h] + int v13; // [esp+30h] [ebp-B0h] + int v14; // [esp+40h] [ebp-A0h] BYREF + char v15[128]; // [esp+44h] [ebp-9Ch] BYREF + char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF + + v1 = 1; + if ( a1[4] < a1[5] ) + { + v3 = (*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, -1); + LOBYTE(v3) = v3 != -1; + v1 = v3; + } + if ( *((_BYTE *)a1 + 74) ) + { + v4 = a1[22]; + if ( !v4 ) + std::__throw_bad_cast(); + v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); + if ( !v11 ) + { + if ( (_BYTE)v1 ) + { + v12 = a1 + 10; + v5 = (_DWORD **)a1; + v6 = a1 + 14; + v7 = v5; + while ( 1 ) + { + v8 = (*(int (__thiscall **)(_DWORD *, _DWORD *, char *, char *, int *))(*v7[22] + 12))( + v7[22], + v6, + v15, + v16, + &v14); + v9 = v8; + if ( v8 == 2 ) + break; + if ( v8 <= 1 && v14 - (int)v15 > 0 ) + { + v13 = v14 - (_DWORD)v15; + if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) + return v11; + if ( v9 == 1 ) + continue; + } + return ((int (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, -1) != -1; + } + return v11; + } + } + } + return v1; +} +// 4BE5A0: using guessed type char var_1C[28]; + +//----- (004BE6B0) -------------------------------------------------------- +bool __thiscall std::filebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3) +{ + int v4; // ecx + unsigned int v5; // esi + int v6; // eax + void *v7; // esp + void *v8; // esp + unsigned int v9; // eax + unsigned int v10; // eax + int v12; // esi + char v13; // [esp+20h] [ebp-38h] + int v14; // [esp+38h] [ebp-20h] BYREF + int v15; // [esp+3Ch] [ebp-1Ch] BYREF + char v16[24]; // [esp+40h] [ebp-18h] BYREF + + v4 = this[22]; + v5 = a3; + if ( !v4 ) + std::__throw_bad_cast(); + if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) + goto LABEL_5; + v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)this[22] + 32))(this[22]) + 27) >> 4); + v7 = alloca(v6); + v8 = alloca(v6); + v9 = (*(int (__thiscall **)(_DWORD, _DWORD *, char *, char *))(*(_DWORD *)this[22] + 8))( + this[22], + this + 14, + a2, + &a2[a3]); + if ( v9 > 1 ) + { + if ( v9 == 3 ) + { +LABEL_5: + v10 = std::__basic_file::xsputn(this + 10, a2, a3); + return v10 == v5; + } +LABEL_11: + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::_M_convert_to_external conversion error"); + } + v13 = v9; + v5 = v14 - (_DWORD)v16; + v10 = std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16); + if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) + return v10 == v5; + if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(*(_DWORD *)this[22] + 8))( + this[22], + &v15, + v15, + this[5], + &v15, + v16, + v14, + &v14) == 2 ) + goto LABEL_11; + v12 = v14 - (_DWORD)v16; + return std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16) == v12; +} + +//----- (004BE820) -------------------------------------------------------- +void __fastcall std::filebuf::_M_destroy_internal_buffer(int a1) +{ + if ( *(_BYTE *)(a1 + 72) ) + { + if ( *(_DWORD *)(a1 + 64) ) + operator delete[](*(void **)(a1 + 64)); + *(_DWORD *)(a1 + 64) = 0; + *(_BYTE *)(a1 + 72) = 0; + } + if ( *(_DWORD *)(a1 + 92) ) + operator delete[](*(void **)(a1 + 92)); + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; +} + +//----- (004BE880) -------------------------------------------------------- +void __fastcall std::filebuf::_M_allocate_internal_buffer(int a1) +{ + if ( !*(_BYTE *)(a1 + 72) && !*(_DWORD *)(a1 + 64) ) + { + *(_DWORD *)(a1 + 64) = operator new[](*(_DWORD *)(a1 + 68)); + *(_BYTE *)(a1 + 72) = 1; + } +} + +//----- (004BE8C0) -------------------------------------------------------- +char *__thiscall std::filebuf::open(char *this, char *a2, int a3) +{ + _BYTE *v3; // esi + + v3 = this + 40; + if ( std::__basic_file::is_open((_DWORD *)this + 10) ) + return 0; + std::__basic_file::open(v3, a2, a3, 436); + if ( !std::__basic_file::is_open(v3) ) + return 0; + else + return std::filebuf::open(this, a3); +} + +//----- (004BE930) -------------------------------------------------------- +char *__thiscall std::filebuf::open(char *this, int a2) +{ + int v3; // eax + int v4; // eax + _DWORD v6[7]; // [esp+20h] [ebp-1Ch] BYREF + + v3 = *((_DWORD *)this + 16); + if ( !this[72] && !v3 ) + { + v3 = operator new[](*((_DWORD *)this + 17)); + this[72] = 1; + *((_DWORD *)this + 16) = v3; + } + *((_DWORD *)this + 1) = v3; + *((_DWORD *)this + 2) = v3; + *((_DWORD *)this + 3) = v3; + v4 = *((_DWORD *)this + 13); + *((_DWORD *)this + 12) = a2; + *(_WORD *)(this + 73) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 14) = v4; + *((_DWORD *)this + 15) = v4; + if ( (a2 & 2) == 0 ) + return this; + (*(void (__thiscall **)(_DWORD *, char *, _DWORD, _DWORD, int, int))(*(_DWORD *)this + 16))(v6, this, 0, 0, 2, a2); + if ( (v6[0] & v6[1]) != -1 ) + return this; + std::filebuf::close((int)this); + return 0; +} + +//----- (004BEA00) -------------------------------------------------------- +char *__thiscall std::filebuf::open(char *this, wchar_t *a2, int a3) +{ + _BYTE *v3; // esi + + v3 = this + 40; + if ( std::__basic_file::is_open((_DWORD *)this + 10) ) + return 0; + std::__basic_file::open(v3, a2, a3); + if ( !std::__basic_file::is_open(v3) ) + return 0; + else + return std::filebuf::open(this, a3); +} + +//----- (004BEA70) -------------------------------------------------------- +char *__thiscall std::filebuf::open(char *this, char *a2, int a3) +{ + return std::filebuf::open(this, *(char **)a2, a3); +} + +//----- (004BEA80) -------------------------------------------------------- +int __thiscall std::filebuf::swap(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + char v15; // dl + int v16; // edx + int v17; // eax + int v18; // edx + int v19; // eax + int v20; // edx + int v21; // eax + int v22; // edx + int v23; // eax + int v24; // edx + int v25; // eax + int v26; // edx + int v27; // eax + int v28; // edx + int v29; // eax + int v30; // edx + int v31; // eax + int v32; // edx + int v33; // eax + int v34; // edx + int v35; // eax + int v36; // edx + int v37; // eax + int v38; // eax + int result; // eax + const std::locale *v40; // [esp+4h] [ebp-48h] + volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] + _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + v41 = (volatile signed __int32 **)(this + 28); + std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); + std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); + std::locale::~locale(v42); + v14 = *(_DWORD *)(this + 40); + *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); + v15 = *(_BYTE *)(a2 + 44); + *(_DWORD *)(a2 + 40) = v14; + LOBYTE(v14) = *(_BYTE *)(this + 44); + *(_BYTE *)(this + 44) = v15; + v16 = *(_DWORD *)(a2 + 48); + *(_BYTE *)(a2 + 44) = v14; + v17 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 48) = v16; + v18 = *(_DWORD *)(a2 + 52); + *(_DWORD *)(a2 + 48) = v17; + v19 = *(_DWORD *)(this + 52); + *(_DWORD *)(this + 52) = v18; + v20 = *(_DWORD *)(a2 + 56); + *(_DWORD *)(a2 + 52) = v19; + v21 = *(_DWORD *)(this + 56); + *(_DWORD *)(this + 56) = v20; + v22 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(a2 + 56) = v21; + v23 = *(_DWORD *)(this + 60); + *(_DWORD *)(this + 60) = v22; + v24 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 60) = v23; + v25 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 64) = v24; + v26 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(a2 + 64) = v25; + v27 = *(_DWORD *)(this + 68); + *(_DWORD *)(this + 68) = v26; + *(_DWORD *)(a2 + 68) = v27; + LOBYTE(v27) = *(_BYTE *)(this + 72); + *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); + v28 = *(_DWORD *)(a2 + 92); + *(_BYTE *)(a2 + 72) = v27; + v29 = *(_DWORD *)(this + 92); + *(_DWORD *)(this + 92) = v28; + v30 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 92) = v29; + v31 = *(_DWORD *)(this + 96); + *(_DWORD *)(this + 96) = v30; + v32 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = v31; + v33 = *(_DWORD *)(this + 100); + *(_DWORD *)(this + 100) = v32; + v34 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = v33; + v35 = *(_DWORD *)(this + 104); + *(_DWORD *)(this + 104) = v34; + LOBYTE(v34) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(a2 + 104) = v35; + LOBYTE(v35) = *(_BYTE *)(this + 73); + *(_BYTE *)(this + 73) = v34; + LOBYTE(v34) = *(_BYTE *)(a2 + 74); + *(_BYTE *)(a2 + 73) = v35; + LOBYTE(v35) = *(_BYTE *)(this + 74); + *(_BYTE *)(this + 74) = v34; + v36 = *(_DWORD *)(a2 + 76); + *(_BYTE *)(a2 + 74) = v35; + v37 = *(_DWORD *)(this + 76); + *(_DWORD *)(this + 76) = v36; + *(_DWORD *)(a2 + 76) = v37; + v38 = *(_DWORD *)(this + 80); + *(_DWORD *)(this + 80) = *(_DWORD *)(a2 + 80); + LOBYTE(v36) = *(_BYTE *)(a2 + 84); + *(_DWORD *)(a2 + 80) = v38; + result = *(unsigned __int8 *)(this + 84); + *(_BYTE *)(this + 84) = v36; + *(_BYTE *)(a2 + 84) = result; + return result; +} +// 4BEAE8: variable 'v40' is possibly undefined + +//----- (004BEC10) -------------------------------------------------------- +int __fastcall std::filebuf::sync(_DWORD *a1) +{ + if ( a1[4] >= a1[5] ) + return 0; + else + return -((*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, -1) == -1); +} + +//----- (004BEC50) -------------------------------------------------------- +int __fastcall std::filebuf::close(int a1) +{ + int v1; // esi + char v3; // di + int v4; // eax + int v5; // eax + + v1 = a1 + 40; + if ( !std::__basic_file::is_open((_DWORD *)(a1 + 40)) ) + return 0; + v3 = std::filebuf::_M_terminate_output((_DWORD *)a1); + *(_DWORD *)(a1 + 48) = 0; + *(_BYTE *)(a1 + 84) = 0; + std::filebuf::_M_destroy_internal_buffer(a1); + *(_WORD *)(a1 + 73) = 0; + v4 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 4) = v4; + *(_DWORD *)(a1 + 8) = v4; + *(_DWORD *)(a1 + 12) = v4; + v5 = *(_DWORD *)(a1 + 52); + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 56) = v5; + *(_DWORD *)(a1 + 60) = v5; + if ( !std::__basic_file::close(v1) ) + return 0; + if ( v3 == 1 ) + return a1; + else + return 0; +} + +//----- (004BED10) -------------------------------------------------------- +char __thiscall std::filebuf::imbue(int this, int a2) +{ + void *v3; // esi + int v4; // eax + int v5; // ecx + int v6; // ecx + int v7; // edi + const void *Src; // eax + int v9; // edi + size_t Size; // edi + int v11; // eax + size_t v12; // edi + int v13; // eax + int v15; // [esp+30h] [ebp-1Ch] BYREF + int v16; // [esp+34h] [ebp-18h] + + if ( (unsigned __int8)std::has_facet>(a2) ) + v3 = std::use_facet>(a2); + else + v3 = 0; + LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)(this + 40)); + if ( !(_BYTE)v4 ) + goto LABEL_13; + if ( !*(_BYTE *)(this + 73) && !*(_BYTE *)(this + 74) ) + { + *(_DWORD *)(this + 88) = v3; + return v4; + } + v5 = *(_DWORD *)(this + 88); + if ( !v5 ) + goto LABEL_24; + v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); + if ( v4 == -1 ) + goto LABEL_18; + if ( !*(_BYTE *)(this + 73) ) + { + if ( !*(_BYTE *)(this + 74) ) + goto LABEL_13; + LOBYTE(v4) = std::filebuf::_M_terminate_output((_DWORD *)this); + if ( (_BYTE)v4 ) + { + v4 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 4) = v4; + *(_DWORD *)(this + 8) = v4; + *(_DWORD *)(this + 12) = v4; + *(_DWORD *)(this + 24) = 0; + goto LABEL_13; + } +LABEL_18: + *(_DWORD *)(this + 88) = 0; + return v4; + } + v6 = *(_DWORD *)(this + 88); + if ( !v6 ) +LABEL_24: + std::__throw_bad_cast(); + LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); + if ( !(_BYTE)v4 ) + { + v7 = *(_DWORD *)(this + 92); + Src = (const void *)(v7 + + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**(_DWORD **)(this + 88) + 28))( + *(_DWORD *)(this + 88), + this + 60, + v7, + *(_DWORD *)(this + 100), + *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4))); + v9 = *(_DWORD *)(this + 104); + *(_DWORD *)(this + 100) = Src; + Size = v9 - (_DWORD)Src; + if ( Size ) + memmove(*(void **)(this + 92), Src, Size); + v11 = *(_DWORD *)(this + 92); + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + v12 = v11 + Size; + *(_DWORD *)(this + 100) = v11; + v13 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 104) = v12; + *(_DWORD *)(this + 4) = v13; + *(_DWORD *)(this + 8) = v13; + *(_DWORD *)(this + 12) = v13; + v4 = *(_DWORD *)(this + 52); + *(_DWORD *)(this + 24) = 0; + *(_DWORD *)(this + 56) = v4; + *(_DWORD *)(this + 60) = v4; + goto LABEL_13; + } + if ( !v3 ) + goto LABEL_18; + LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); + if ( !(_BYTE)v4 ) + { + (*(void (__thiscall **)(int *, int, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( + &v15, + this, + 0, + 0, + 1, + *(_DWORD *)(this + 48)); + LOBYTE(v4) = v15 & v16; + if ( (v15 & v16) == -1 ) + goto LABEL_18; + } +LABEL_13: + *(_DWORD *)(this + 88) = v3; + return v4; +} + +//----- (004BEEF0) -------------------------------------------------------- +int __thiscall std::filebuf::setbuf(int this, __int64 a2) +{ + if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) + return this; + if ( !a2 ) + { + *(_DWORD *)(this + 68) = 1; + return this; + } + if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) + return this; + *(_QWORD *)(this + 64) = a2; + return this; +} + +//----- (004BEF50) -------------------------------------------------------- +int __thiscall std::filebuf::xsgetn(_DWORD *this, char *a2, signed int a3) +{ + char *v4; // edi + signed int v5; // esi + int v6; // eax + int v7; // ebp + char *v8; // ecx + bool v9; // zf + int v10; // edx + int v11; // ecx + int v12; // eax + unsigned int v13; // eax + int v14; // ecx + char v15; // al + int v17; // eax + const void *Src; // eax + size_t Size; // edx + int i; // eax + int v21; // eax + int *v22; // eax + int v23; // [esp+1Ch] [ebp-20h] + int v24; // [esp+1Ch] [ebp-20h] + + v4 = a2; + v5 = a3; + if ( *((_BYTE *)this + 84) ) + { + v6 = this[2]; + v7 = 0; + v8 = (char *)this[1]; + if ( a3 <= 0 || v8 != (char *)v6 ) + goto LABEL_4; + v5 = a3 - 1; + *a2 = *v8; + v6 = this[2] + 1; + v9 = *((_BYTE *)this + 84) == 0; + this[2] = v6; + if ( !v9 ) + { + v8 = (char *)this[1]; + v4 = a2 + 1; + v7 = 1; +LABEL_4: + v9 = v6 == (_DWORD)v8; + v10 = this[16]; + v11 = this[20]; + *((_BYTE *)this + 84) = 0; + v12 = this[19] + !v9; + this[1] = v10; + this[19] = v12; + this[2] = v12; + this[3] = v11; + goto LABEL_5; + } + v4 = a2 + 1; + v7 = 1; + } + else if ( *((_BYTE *)this + 74) ) + { + if ( (*(int (__thiscall **)(_DWORD *, int))(*this + 52))(this, -1) == -1 ) + return 0; + v17 = this[16]; + this[5] = 0; + v7 = 0; + this[4] = 0; + this[1] = v17; + this[2] = v17; + this[3] = v17; + this[6] = 0; + *((_BYTE *)this + 74) = 0; + } + else + { + v7 = 0; + } +LABEL_5: + v13 = this[17]; + if ( v13 < 2 ) + v13 = 2; + if ( v5 <= (int)(v13 - 1) ) + goto LABEL_11; + v14 = this[22]; + if ( !v14 ) + std::__throw_bad_cast(); + v23 = this[12]; + v15 = (*(int (__fastcall **)(int))(*(_DWORD *)v14 + 24))(v14); + if ( (v23 & 8) != 0 && v15 ) + { + Src = (const void *)this[2]; + Size = this[3] - (_DWORD)Src; + if ( Size ) + { + v24 = this[3] - (_DWORD)Src; + memcpy(v4, Src, Size); + this[2] += v24; + v4 += v24; + v7 += v24; + v5 -= v24; + } + for ( i = std::__basic_file::xsgetn(this + 10, v4, v5); ; i = std::__basic_file::xsgetn( + this + 10, + v4, + v5) ) + { + if ( i == -1 ) + { + v22 = _errno(); + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", (char *)*v22); + } + if ( !i ) + break; + v7 += i; + v5 -= i; + if ( !v5 ) + goto LABEL_28; + v4 += i; + } + if ( !v5 ) + { +LABEL_28: + *((_BYTE *)this + 73) = 1; + return v7; + } + v21 = this[16]; + this[5] = 0; + this[4] = 0; + this[1] = v21; + this[2] = v21; + this[3] = v21; + this[6] = 0; + *((_BYTE *)this + 73) = 0; + } + else + { +LABEL_11: + v7 += std::streambuf::xsgetn(this, v4, v5); + } + return v7; +} + +//----- (004BF170) -------------------------------------------------------- +int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, int a3) +{ + int v4; // esi + int v5; // ecx + char v6; // si + int v7; // edx + int v8; // eax + unsigned int v9; // ecx + signed int v10; // esi + signed int v11; // eax + int v12; // edx + int v14; // edx + int v15; // ecx + unsigned int v16; // ecx + + v4 = *(_DWORD *)(this + 48); + if ( (v4 & 0x10) != 0 ) + LOBYTE(v4) = 1; + v5 = *(_DWORD *)(this + 88); + v6 = v4 & 1; + if ( !v5 ) + std::__throw_bad_cast(); + if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) + return std::streambuf::xsputn((_DWORD *)this, a2, a3); + v7 = *(_DWORD *)(this + 20); + v8 = *(_DWORD *)(this + 24) - v7; + if ( !*(_BYTE *)(this + 74) ) + { + v9 = *(_DWORD *)(this + 68); + if ( v9 > 1 ) + v8 = v9 - 1; + } + if ( v8 > 1023 ) + v8 = 1024; + if ( a3 < v8 ) + return std::streambuf::xsputn((_DWORD *)this, a2, a3); + v10 = v7 - *(_DWORD *)(this + 16); + v11 = std::__basic_file::xsputn_2((void *)(this + 40), *(char **)(this + 16), v10, (char *)a2, a3); + if ( v10 + a3 == v11 ) + { + v14 = *(_DWORD *)(this + 64); + v15 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v14; + *(_DWORD *)(this + 8) = v14; + *(_DWORD *)(this + 12) = v14; + if ( ((v15 & 0x10) != 0 || (v15 & 1) != 0) && (v16 = *(_DWORD *)(this + 68), v16 > 1) ) + { + *(_DWORD *)(this + 20) = v14; + *(_DWORD *)(this + 16) = v14; + *(_DWORD *)(this + 24) = v14 + v16 - 1; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + *(_BYTE *)(this + 74) = 1; + } + v12 = 0; + if ( v10 < v11 ) + return v11 - v10; + return v12; +} + +//----- (004BF2A0) -------------------------------------------------------- +_DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) +{ + _DWORD *result; // eax + __int64 v7; // rax + int v8; // ecx + int v9; // ecx + + *this = -1; + this[1] = -1; + this[2] = 0; + if ( !(unsigned __int8)std::filebuf::_M_terminate_output((_DWORD *)a2) ) + return this; + v7 = std::__basic_file::seekoff((void *)(a2 + 40), a3, a4); + if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) + return this; + *this = v7; + result = this; + *(_WORD *)(a2 + 73) = 0; + v8 = *(_DWORD *)(a2 + 92); + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 104) = v8; + *(_DWORD *)(a2 + 100) = v8; + v9 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 4) = v9; + *(_DWORD *)(a2 + 8) = v9; + *(_DWORD *)(a2 + 12) = v9; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = a5; + this[2] = a5; + this[1] = HIDWORD(v7); + return result; +} + +//----- (004BF350) -------------------------------------------------------- +_DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) +{ + int v6; // ecx + int v7; // eax + bool v8; // al + bool v10; // zf + __int64 v11; // rax + __int64 v12; // rax + int v13; // edx + int v14; // ecx + int v15; // eax + unsigned int v16; // esi + unsigned int v17; // edi + __int64 v18; // kr00_8 + __int64 ext_pos; // [esp+28h] [ebp-54h] + bool v20; // [esp+34h] [ebp-48h] + int v21; // [esp+34h] [ebp-48h] + int v22; // [esp+3Ch] [ebp-40h] + int v23; // [esp+4Ch] [ebp-30h] BYREF + int v24[11]; // [esp+50h] [ebp-2Ch] BYREF + + v6 = *(_DWORD *)(a2 + 88); + if ( v6 ) + { + v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); + v22 = v7 & ~(v7 >> 31); + v8 = v7 <= 0; + } + else + { + v22 = 0; + v8 = 1; + } + *this = -1; + this[1] = -1; + this[2] = 0; + v20 = v8 && a3 != 0; + if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v20 ) + return this; + if ( a4 != 1 + || a3 + || *(_BYTE *)(a2 + 74) + && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 88) + 24))(*(_DWORD *)(a2 + 88)) ) + { + if ( *(_BYTE *)(a2 + 84) ) + { + v10 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); + *(_BYTE *)(a2 + 84) = 0; + v13 = *(_DWORD *)(a2 + 80); + v14 = *(_DWORD *)(a2 + 64); + v15 = *(_DWORD *)(a2 + 76) + !v10; + *(_DWORD *)(a2 + 76) = v15; + *(_DWORD *)(a2 + 4) = v14; + *(_DWORD *)(a2 + 8) = v15; + *(_DWORD *)(a2 + 12) = v13; + } + v21 = *(_DWORD *)(a2 + 52); + v23 = v21; + v16 = a3 * v22; + v17 = (unsigned __int64)(a3 * v22) >> 32; + if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) + { + v23 = *(_DWORD *)(a2 + 60); + v18 = std::filebuf::_M_get_ext_pos(a2, (int)&v23) + __PAIR64__(v17, v16); + std::filebuf::_M_seek(v24, a2, v18, 1, v23); + } + else + { + std::filebuf::_M_seek(v24, a2, __SPAIR64__(v17, v16), a4, v21); + } + *this = v24[0]; + this[1] = v24[1]; + this[2] = v24[2]; + return this; + } + v10 = *(_BYTE *)(a2 + 73) == 0; + ext_pos = 0LL; + v23 = *(_DWORD *)(a2 + 52); + if ( !v10 ) + { + v23 = *(_DWORD *)(a2 + 60); + ext_pos = std::filebuf::_M_get_ext_pos(a2, (int)&v23); + } + if ( *(_BYTE *)(a2 + 74) ) + ext_pos = *(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16); + v11 = std::__basic_file::seekoff((void *)(a2 + 40), 0LL, 1); + if ( ((unsigned int)v11 & HIDWORD(v11)) == -1 ) + return this; + v12 = ext_pos + v11; + *this = v12; + LODWORD(v12) = v23; + this[1] = HIDWORD(v12); + this[2] = v12; + return this; +} + +//----- (004BF5B0) -------------------------------------------------------- +_DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) +{ + bool v8; // zf + int v9; // edx + int v10; // ecx + int v11; // eax + int v12[7]; // [esp+30h] [ebp-1Ch] BYREF + + *this = -1; + this[1] = -1; + this[2] = 0; + if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) + { + if ( *(_BYTE *)(a2 + 84) ) + { + v8 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); + *(_BYTE *)(a2 + 84) = 0; + v9 = *(_DWORD *)(a2 + 80); + v10 = *(_DWORD *)(a2 + 64); + v11 = *(_DWORD *)(a2 + 76) + !v8; + *(_DWORD *)(a2 + 76) = v11; + *(_DWORD *)(a2 + 4) = v10; + *(_DWORD *)(a2 + 8) = v11; + *(_DWORD *)(a2 + 12) = v9; + } + std::filebuf::_M_seek(v12, a2, a3, 0, a4); + *this = v12[0]; + this[1] = v12[1]; + this[2] = v12[2]; + } + return this; +} + +//----- (004BF680) -------------------------------------------------------- +int __thiscall std::filebuf::overflow(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // ecx + int ext_pos; // eax + char *v7; // edx + char *v8; // eax + int v9; // eax + int v10; // edx + int result; // eax + unsigned int v12; // eax + unsigned int v13; // edx + int v14; // edx + int v15; // ecx + int v16[7]; // [esp+20h] [ebp-1Ch] BYREF + + if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) + return -1; + if ( *(_BYTE *)(this + 73) ) + { + if ( *(_BYTE *)(this + 84) ) + { + v3 = *(_DWORD *)(this + 80); + v4 = *(_DWORD *)(this + 76) + (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); + *(_DWORD *)(this + 76) = v4; + v5 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 8) = v4; + *(_DWORD *)(this + 4) = v5; + *(_DWORD *)(this + 12) = v3; + *(_BYTE *)(this + 84) = 0; + } + ext_pos = std::filebuf::_M_get_ext_pos(this, this + 60); + std::filebuf::_M_seek(v16, this, ext_pos, 1, *(_DWORD *)(this + 60)); + if ( (v16[0] & v16[1]) == -1 ) + return -1; + } + v7 = *(char **)(this + 16); + v8 = *(char **)(this + 20); + if ( v7 >= v8 ) + { + v12 = *(_DWORD *)(this + 68); + if ( v12 > 1 ) + { + v14 = *(_DWORD *)(this + 64); + v15 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v14; + *(_DWORD *)(this + 8) = v14; + *(_DWORD *)(this + 12) = v14; + if ( (v15 & 0x10) != 0 || (v15 & 1) != 0 ) + { + *(_DWORD *)(this + 20) = v14; + *(_DWORD *)(this + 16) = v14; + *(_DWORD *)(this + 24) = v14 + v12 - 1; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + *(_BYTE *)(this + 74) = 1; + if ( a2 != -1 ) + { + **(_BYTE **)(this + 20) = a2; + result = a2; + ++*(_DWORD *)(this + 20); + return result; + } + } + else + { + LOBYTE(v16[0]) = a2; + if ( a2 != -1 ) + { + if ( std::filebuf::_M_convert_to_external((_DWORD *)this, (char *)v16, 1u) ) + { + *(_BYTE *)(this + 74) = 1; + return a2; + } + return -1; + } + *(_BYTE *)(this + 74) = 1; + } + return 0; + } + if ( a2 != -1 ) + { + *v8 = a2; + v7 = *(char **)(this + 16); + v8 = (char *)(*(_DWORD *)(this + 20) + 1); + *(_DWORD *)(this + 20) = v8; + } + if ( !std::filebuf::_M_convert_to_external((_DWORD *)this, v7, v8 - v7) ) + return -1; + v9 = *(_DWORD *)(this + 64); + v10 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v9; + *(_DWORD *)(this + 8) = v9; + *(_DWORD *)(this + 12) = v9; + if ( ((v10 & 0x10) != 0 || (v10 & 1) != 0) && (v13 = *(_DWORD *)(this + 68), v13 > 1) ) + { + *(_DWORD *)(this + 20) = v9; + *(_DWORD *)(this + 16) = v9; + *(_DWORD *)(this + 24) = v9 + v13 - 1; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + result = a2; + if ( a2 == -1 ) + return 0; + return result; +} + +//----- (004BF870) -------------------------------------------------------- +int __thiscall std::filebuf::pbackfail(char *this, int a2) +{ + unsigned int v3; // eax + char v4; // di + int v5; // edx + int result; // eax + _BYTE *v7; // eax + int v8; // eax + int v9; // eax + int v10[7]; // [esp+24h] [ebp-1Ch] BYREF + + if ( (this[48] & 8) == 0 ) + return -1; + if ( this[74] ) + { + if ( (*(int (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, -1) == -1 ) + return -1; + v9 = *((_DWORD *)this + 16); + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 4) = 0; + v4 = this[84]; + *((_DWORD *)this + 1) = v9; + *((_DWORD *)this + 2) = v9; + *((_DWORD *)this + 3) = v9; + *((_DWORD *)this + 6) = 0; + this[74] = 0; + } + else + { + v3 = *((_DWORD *)this + 2); + v4 = this[84]; + if ( v3 > *((_DWORD *)this + 1) ) + { + *((_DWORD *)this + 2) = v3 - 1; + v5 = *(unsigned __int8 *)(v3 - 1); + goto LABEL_5; + } + } + (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); + if ( (v10[0] & v10[1]) == -1 ) + return -1; + v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); + if ( v5 == -1 ) + return -1; +LABEL_5: + result = 0; + if ( a2 == -1 ) + return result; + result = v5; + if ( v5 == a2 ) + return result; + if ( v4 ) + return -1; + v7 = (_BYTE *)*((_DWORD *)this + 2); + if ( !this[84] ) + { + *((_DWORD *)this + 19) = v7; + v8 = *((_DWORD *)this + 3); + *((_DWORD *)this + 3) = this + 76; + *((_DWORD *)this + 20) = v8; + v7 = this + 75; + *((_DWORD *)this + 1) = this + 75; + *((_DWORD *)this + 2) = this + 75; + this[84] = 1; + } + this[73] = 1; + *v7 = a2; + return a2; +} + +//----- (004BF9A0) -------------------------------------------------------- +int __fastcall std::filebuf::showmanyc(_DWORD *a1) +{ + int v1; // esi + int v2; // ebp + int v4; // ecx + int v5; // esi + int v6; // edi + int v8; // esi + + v1 = a1[12]; + if ( (v1 & 8) == 0 ) + return -1; + v2 = (int)(a1 + 10); + if ( !std::__basic_file::is_open(a1 + 10) ) + return -1; + v4 = a1[22]; + v5 = v1 & 4; + v6 = a1[3] - a1[2]; + if ( !v4 ) + std::__throw_bad_cast(); + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) + return v6; + v8 = std::__basic_file::showmanyc(v2); + return v8 / (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1[22] + 32))(a1[22]) + v6; +} + +//----- (004BFA30) -------------------------------------------------------- +int __fastcall std::filebuf::underflow(int a1) +{ + unsigned __int8 *v2; // eax + int result; // eax + bool v4; // zf + unsigned int v5; // edx + int v6; // ecx + unsigned int v7; // edi + int v8; // ecx + int v9; // eax + signed int v10; // esi + int v11; // ecx + const void *v12; // eax + unsigned int v13; // edx + signed int v14; // edi + signed int v15; // ecx + char *v16; // ebp + int v17; // ecx + char *v18; // eax + void *v19; // edx + int v20; // esi + char v21; // di + int v22; // ebp + char v23; // al + int v24; // eax + int v25; // eax + int v26; // eax + _BYTE *Src; // ecx + unsigned int v28; // eax + size_t Size; // esi + int v30; // eax + int *v31; // eax + unsigned __int8 *v32; // edx + int v33; // eax + char *v34; // eax + char *v35; // eax + char *v36; // eax + unsigned int v37; // [esp+48h] [ebp-34h] + unsigned int v38; // [esp+4Ch] [ebp-30h] + unsigned int v39; // [esp+4Ch] [ebp-30h] + unsigned int v40; // [esp+4Ch] [ebp-30h] + unsigned int v41; // [esp+4Ch] [ebp-30h] + unsigned int v42; // [esp+4Ch] [ebp-30h] + void *v43; // [esp+5Ch] [ebp-20h] BYREF + + if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) + return -1; + if ( *(_BYTE *)(a1 + 74) ) + { + result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, -1); + if ( result == -1 ) + return result; + v2 = *(unsigned __int8 **)(a1 + 64); + v4 = *(_BYTE *)(a1 + 84) == 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v2; + *(_DWORD *)(a1 + 8) = v2; + *(_DWORD *)(a1 + 12) = v2; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 74) = 0; + if ( v4 ) + goto LABEL_4; +LABEL_9: + v4 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; + v5 = *(_DWORD *)(a1 + 80); + *(_BYTE *)(a1 + 84) = 0; + v6 = *(_DWORD *)(a1 + 64); + v2 = (unsigned __int8 *)(*(_DWORD *)(a1 + 76) + !v4); + *(_DWORD *)(a1 + 12) = v5; + *(_DWORD *)(a1 + 76) = v2; + *(_DWORD *)(a1 + 4) = v6; + *(_DWORD *)(a1 + 8) = v2; + if ( (unsigned int)v2 < v5 ) + return *v2; + goto LABEL_10; + } + v2 = *(unsigned __int8 **)(a1 + 8); + if ( *(_BYTE *)(a1 + 84) ) + goto LABEL_9; +LABEL_4: + if ( (unsigned int)v2 < *(_DWORD *)(a1 + 12) ) + return *v2; +LABEL_10: + v7 = *(_DWORD *)(a1 + 68); + if ( v7 < 2 ) + v7 = 2; + v8 = *(_DWORD *)(a1 + 88); + v37 = v7 - 1; + if ( !v8 ) + std::__throw_bad_cast(); + if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) ) + { + v9 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 20))(*(_DWORD *)(a1 + 88)); + if ( v9 <= 0 ) + { + v26 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 32))(*(_DWORD *)(a1 + 88)); + v11 = v7 - 1; + v10 = v7 + v26 - 2; + } + else + { + v10 = v37 * v9; + v11 = v37 * v9; + } + v12 = *(const void **)(a1 + 100); + v13 = 0; + v14 = *(_DWORD *)(a1 + 104) - (_DWORD)v12; + if ( v11 > v14 ) + v13 = v11 - v14; + v15 = *(_DWORD *)(a1 + 96); + if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 12) == *(_DWORD *)(a1 + 4) ) + { + if ( !v14 ) + { + if ( v10 <= v15 ) + { + v16 = *(char **)(a1 + 92); + goto LABEL_22; + } + v42 = v13; + v36 = (char *)operator new[](v10); + v13 = v42; + v16 = v36; +LABEL_61: + if ( *(_DWORD *)(a1 + 92) ) + { + v39 = v13; + operator delete[](*(void **)(a1 + 92)); + v13 = v39; + } + *(_DWORD *)(a1 + 92) = v16; + *(_DWORD *)(a1 + 96) = v10; +LABEL_22: + v17 = *(_DWORD *)(a1 + 56); + v18 = &v16[v14]; + *(_DWORD *)(a1 + 100) = v16; + *(_DWORD *)(a1 + 104) = &v16[v14]; + *(_DWORD *)(a1 + 60) = v17; + if ( v13 ) + { + v20 = 0; + goto LABEL_30; + } + v19 = *(void **)(a1 + 4); + v20 = 0; + v43 = v19; + if ( v18 <= v16 ) + { + while ( 1 ) + { +LABEL_29: + v18 = *(char **)(a1 + 104); + v13 = 1; + v14 = (signed int)&v18[-*(_DWORD *)(a1 + 92)]; +LABEL_30: + if ( (signed int)(v13 + v14) > *(_DWORD *)(a1 + 96) ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow codecvt::max_length() is not valid"); + v24 = std::__basic_file::xsgetn((void *)(a1 + 40), v18, v13); + if ( v24 ) + { + if ( v24 == -1 ) + goto LABEL_49; + v21 = 0; + } + else + { + v21 = 1; + } + v19 = *(void **)(a1 + 4); + v16 = *(char **)(a1 + 100); + v18 = (char *)(*(_DWORD *)(a1 + 104) + v24); + *(_DWORD *)(a1 + 104) = v18; + v43 = v19; + if ( v18 > v16 ) + break; + if ( v20 == 3 ) + goto LABEL_41; + if ( v21 ) + goto LABEL_37; + } + } + else + { + v21 = 0; + } + v20 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, void *, unsigned int, void **))(**(_DWORD **)(a1 + 88) + 16))( + *(_DWORD *)(a1 + 88), + a1 + 56, + v16, + v18, + a1 + 100, + v19, + (unsigned int)v19 + v37, + &v43); + if ( v20 != 3 ) + { + v22 = (int)v43 - *(_DWORD *)(a1 + 4); + if ( v20 != 2 ) + { + v23 = v21 | (v43 != *(void **)(a1 + 4)); + goto LABEL_28; + } + if ( (int)v43 - *(_DWORD *)(a1 + 4) <= 0 ) + { + if ( !v21 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow invalid byte sequence in file"); + goto LABEL_57; + } + goto LABEL_51; + } + v18 = *(char **)(a1 + 104); + v19 = *(void **)(a1 + 4); +LABEL_41: + Src = *(_BYTE **)(a1 + 92); + v28 = v18 - Src; + v22 = v28; + Size = v28; + if ( v37 < v28 ) + { + Size = v37; + v22 = v37; + } + else if ( !v28 ) + { +LABEL_43: + *(_DWORD *)(a1 + 100) = Src; + v20 = 3; + v23 = v21 | (v22 != 0); +LABEL_28: + if ( !v23 ) + goto LABEL_29; + if ( v22 > 0 ) + goto LABEL_51; + if ( v21 ) + { +LABEL_37: + v25 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v25; + *(_DWORD *)(a1 + 8) = v25; + *(_DWORD *)(a1 + 12) = v25; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 0; + if ( v20 == 1 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow incomplete character in file"); + return -1; + } +LABEL_49: + v31 = _errno(); + std::__throw_ios_failure( + (std::__ios_failure *)"basic_filebuf::underflow error reading the file", + (char *)*v31); + } + memcpy(v19, Src, Size); + Src = (_BYTE *)(*(_DWORD *)(a1 + 92) + Size); + goto LABEL_43; + } + if ( v10 <= v15 ) + { + v16 = *(char **)(a1 + 92); + v13 = 0; +LABEL_68: + v40 = v13; + memmove(v16, v12, v14); + v16 = *(char **)(a1 + 92); + v13 = v40; + goto LABEL_22; + } + v35 = (char *)operator new[](v10); + v13 = 0; + v16 = v35; + } + else + { + if ( v10 <= v15 ) + { + v16 = *(char **)(a1 + 92); + if ( !v14 ) + goto LABEL_22; + goto LABEL_68; + } + v38 = v13; + v34 = (char *)operator new[](v10); + v13 = v38; + v16 = v34; + if ( !v14 ) + goto LABEL_61; + } + v41 = v13; + memcpy(v16, *(const void **)(a1 + 100), v14); + v13 = v41; + goto LABEL_61; + } + v30 = std::__basic_file::xsgetn((void *)(a1 + 40), *(void **)(a1 + 4), v37); + v22 = v30; + if ( !v30 ) + { +LABEL_57: + v33 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v33; + *(_DWORD *)(a1 + 8) = v33; + *(_DWORD *)(a1 + 12) = v33; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 0; + return -1; + } + if ( v30 <= 0 ) + goto LABEL_49; +LABEL_51: + v32 = *(unsigned __int8 **)(a1 + 64); + v4 = (*(_BYTE *)(a1 + 48) & 8) == 0; + *(_DWORD *)(a1 + 4) = v32; + *(_DWORD *)(a1 + 8) = v32; + if ( v4 ) + *(_DWORD *)(a1 + 12) = v32; + else + *(_DWORD *)(a1 + 12) = &v32[v22]; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 1; + return *v32; +} + +//----- (004BFEC0) -------------------------------------------------------- +int __thiscall std::filebuf::basic_filebuf(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + int result; // eax + int v10; // edx + int v11; // edx + int v12; // edx + int v13; // edx + int v14; // edx + int v15; // edx + int v16; // edx + const std::locale *v17; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); + v3 = *(_DWORD *)(a2 + 56); + v4 = *(_DWORD *)(a2 + 40); + *(_DWORD *)this = &off_5386E0; + *(_DWORD *)(this + 56) = v3; + v5 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(this + 40) = v4; + LOBYTE(v4) = *(_BYTE *)(a2 + 44); + *(_DWORD *)(this + 60) = v5; + v6 = *(_DWORD *)(a2 + 64); + *(_BYTE *)(this + 44) = v4; + v7 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(this + 64) = v6; + v8 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(this + 48) = v7; + result = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 68) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 72); + *(_DWORD *)(this + 32) = 0; + *(_BYTE *)(this + 72) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(this + 36) = 0; + *(_BYTE *)(this + 73) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 74); + *(_DWORD *)(a2 + 40) = 0; + *(_BYTE *)(a2 + 44) = 0; + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 52) = result; + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(a2 + 68) = 1; + *(_WORD *)(a2 + 72) = 0; + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 75); + *(_DWORD *)(a2 + 4) = 0; + *(_BYTE *)(this + 75) = v8; + v10 = *(_DWORD *)(a2 + 76); + *(_DWORD *)(a2 + 8) = 0; + *(_DWORD *)(this + 76) = v10; + v11 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 76) = 0; + *(_DWORD *)(this + 80) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 84); + *(_DWORD *)(a2 + 80) = 0; + *(_BYTE *)(this + 84) = v11; + v12 = *(_DWORD *)(a2 + 88); + *(_BYTE *)(a2 + 84) = 0; + *(_DWORD *)(this + 88) = v12; + v13 = *(_DWORD *)(a2 + 92); + *(_DWORD *)(a2 + 12) = 0; + *(_DWORD *)(this + 92) = v13; + v14 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 92) = 0; + *(_DWORD *)(this + 96) = v14; + v15 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 100) = v15; + v16 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(this + 104) = v16; + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = result; + *(_DWORD *)(a2 + 60) = result; + return result; +} +// 4BFECE: variable 'v17' is possibly undefined +// 5386E0: using guessed type int (*off_5386E0)(); + +//----- (004C0000) -------------------------------------------------------- +void *__fastcall std::filebuf::basic_filebuf(int a1) +{ + int v1; // esi + _BYTE *v3; // edi + void *result; // eax + + v1 = a1 + 28; + v3 = (_BYTE *)(a1 + 40); + *(_DWORD *)a1 = &off_538A48; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + std::locale::locale((_DWORD *)(a1 + 28)); + *(_DWORD *)a1 = &off_5386E0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::__basic_file::__basic_file(v3, a1 + 32); + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 68) = 512; + *(_DWORD *)(a1 + 72) = 0; + *(_DWORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_BYTE *)(a1 + 84) = 0; + *(_DWORD *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + result = (void *)std::has_facet>(v1); + if ( (_BYTE)result ) + { + result = std::use_facet>(v1); + *(_DWORD *)(a1 + 88) = result; + } + return result; +} +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004C0120) -------------------------------------------------------- +int __thiscall std::filebuf::basic_filebuf(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + int result; // eax + int v10; // edx + int v11; // edx + int v12; // edx + int v13; // edx + int v14; // edx + int v15; // edx + int v16; // edx + const std::locale *v17; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); + v3 = *(_DWORD *)(a2 + 56); + v4 = *(_DWORD *)(a2 + 40); + *(_DWORD *)this = &off_5386E0; + *(_DWORD *)(this + 56) = v3; + v5 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(this + 40) = v4; + LOBYTE(v4) = *(_BYTE *)(a2 + 44); + *(_DWORD *)(this + 60) = v5; + v6 = *(_DWORD *)(a2 + 64); + *(_BYTE *)(this + 44) = v4; + v7 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(this + 64) = v6; + v8 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(this + 48) = v7; + result = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 68) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 72); + *(_DWORD *)(this + 32) = 0; + *(_BYTE *)(this + 72) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(this + 36) = 0; + *(_BYTE *)(this + 73) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 74); + *(_DWORD *)(a2 + 40) = 0; + *(_BYTE *)(a2 + 44) = 0; + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 52) = result; + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(a2 + 68) = 1; + *(_WORD *)(a2 + 72) = 0; + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 75); + *(_DWORD *)(a2 + 4) = 0; + *(_BYTE *)(this + 75) = v8; + v10 = *(_DWORD *)(a2 + 76); + *(_DWORD *)(a2 + 8) = 0; + *(_DWORD *)(this + 76) = v10; + v11 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 76) = 0; + *(_DWORD *)(this + 80) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 84); + *(_DWORD *)(a2 + 80) = 0; + *(_BYTE *)(this + 84) = v11; + v12 = *(_DWORD *)(a2 + 88); + *(_BYTE *)(a2 + 84) = 0; + *(_DWORD *)(this + 88) = v12; + v13 = *(_DWORD *)(a2 + 92); + *(_DWORD *)(a2 + 12) = 0; + *(_DWORD *)(this + 92) = v13; + v14 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 92) = 0; + *(_DWORD *)(this + 96) = v14; + v15 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 100) = v15; + v16 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(this + 104) = v16; + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = result; + *(_DWORD *)(a2 + 60) = result; + return result; +} +// 4C012E: variable 'v17' is possibly undefined +// 5386E0: using guessed type int (*off_5386E0)(); + +//----- (004C0260) -------------------------------------------------------- +void *__fastcall std::filebuf::basic_filebuf(int a1) +{ + int v1; // esi + _BYTE *v3; // edi + void *result; // eax + + v1 = a1 + 28; + v3 = (_BYTE *)(a1 + 40); + *(_DWORD *)a1 = &off_538A48; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + std::locale::locale((_DWORD *)(a1 + 28)); + *(_DWORD *)a1 = &off_5386E0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::__basic_file::__basic_file(v3, a1 + 32); + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 68) = 512; + *(_DWORD *)(a1 + 72) = 0; + *(_DWORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_BYTE *)(a1 + 84) = 0; + *(_DWORD *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + result = (void *)std::has_facet>(v1); + if ( (_BYTE)result ) + { + result = std::use_facet>(v1); + *(_DWORD *)(a1 + 88) = result; + } + return result; +} +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004C0380) -------------------------------------------------------- +void __fastcall std::filebuf::~filebuf(_DWORD **a1) +{ + *a1 = &off_5386E0; + std::filebuf::close((int)a1); + std::__basic_file::~__basic_file(a1 + 10); + *a1 = &off_538A48; + std::locale::~locale(a1 + 7); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004C03D0) -------------------------------------------------------- +void __fastcall std::filebuf::~filebuf(int a1) +{ + *(_DWORD *)a1 = &off_5386E0; + std::filebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004C0410) -------------------------------------------------------- +void __fastcall std::filebuf::~filebuf(int a1) +{ + *(_DWORD *)a1 = &off_5386E0; + std::filebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004C0450) -------------------------------------------------------- +int __thiscall std::filebuf::operator=(int this, int a2) +{ + int v3; // eax + char v4; // dl + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // eax + int v9; // eax + int v10; // eax + int v11; // eax + int v12; // eax + int v13; // eax + int v14; // eax + int v15; // eax + int result; // eax + + std::filebuf::close(this); + std::streambuf::operator=((volatile signed __int32 **)this, a2); + v3 = *(_DWORD *)(this + 40); + *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); + v4 = *(_BYTE *)(a2 + 44); + *(_DWORD *)(a2 + 40) = v3; + LOBYTE(v3) = *(_BYTE *)(this + 44); + *(_BYTE *)(this + 44) = v4; + *(_BYTE *)(a2 + 44) = v3; + v5 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 48) = v5; + *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); + *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); + v6 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(this + 64) = v6; + v7 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(a2 + 68) = 1; + *(_DWORD *)(this + 68) = v7; + LOBYTE(v7) = *(_BYTE *)(a2 + 72); + *(_BYTE *)(a2 + 72) = 0; + *(_BYTE *)(this + 72) = v7; + v8 = *(_DWORD *)(a2 + 92); + *(_DWORD *)(a2 + 92) = 0; + *(_DWORD *)(this + 92) = v8; + v9 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 96) = v9; + v10 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(this + 100) = v10; + v11 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(this + 104) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 73); + *(_BYTE *)(a2 + 73) = 0; + *(_BYTE *)(this + 73) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 74); + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v11; + v12 = *(_DWORD *)(a2 + 76); + *(_DWORD *)(a2 + 76) = 0; + *(_DWORD *)(this + 76) = v12; + v13 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 80) = 0; + *(_DWORD *)(this + 80) = v13; + LOBYTE(v13) = *(_BYTE *)(a2 + 84); + *(_BYTE *)(a2 + 84) = 0; + *(_BYTE *)(this + 84) = v13; + v14 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 4) = v14; + *(_DWORD *)(a2 + 8) = v14; + *(_DWORD *)(a2 + 12) = v14; + v15 = *(_DWORD *)(a2 + 52); + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 56) = v15; + *(_DWORD *)(a2 + 60) = v15; + result = this; + *(_DWORD *)(a2 + 24) = 0; + return result; +} + +//----- (004C0570) -------------------------------------------------------- +unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int a2) +{ + int v2; // eax + bool v3; // bl + int v4; // edx + unsigned int result; // eax + + v2 = this[12]; + v3 = (v2 & 8) != 0; + if ( (v2 & 0x10) != 0 ) + LOBYTE(v2) = 1; + v4 = this[16]; + result = v2 & 1; + this[1] = v4; + this[2] = v4; + if ( a2 > 0 && v3 ) + { + result = v4 + 2 * a2; + this[3] = result; +LABEL_6: + this[5] = 0; + this[4] = 0; + this[6] = 0; + return result; + } + this[3] = v4; + if ( a2 ) + goto LABEL_6; + if ( !(_BYTE)result ) + goto LABEL_6; + result = this[17]; + if ( result <= 1 ) + goto LABEL_6; + result = v4 + 2 * result - 2; + this[5] = v4; + this[4] = v4; + this[6] = result; + return result; +} + +//----- (004C05F0) -------------------------------------------------------- +int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int a2) +{ + if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 92) + 24))(*(_DWORD *)(this + 92)) ) + return (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 12)) >> 1; + else + return *(_DWORD *)(this + 96) + + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 92) + 28))( + *(_DWORD *)(this + 92), + a2, + *(_DWORD *)(this + 96), + *(_DWORD *)(this + 104), + (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1) + - *(_DWORD *)(this + 108); +} + +//----- (004C0660) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_create_pback(int a1) +{ + int v1; // eax + int result; // eax + + if ( !*(_BYTE *)(a1 + 88) ) + { + v1 = *(_DWORD *)(a1 + 8); + *(_BYTE *)(a1 + 88) = 1; + *(_DWORD *)(a1 + 80) = v1; + *(_DWORD *)(a1 + 84) = *(_DWORD *)(a1 + 12); + *(_DWORD *)(a1 + 4) = a1 + 76; + *(_DWORD *)(a1 + 8) = a1 + 76; + result = a1 + 78; + *(_DWORD *)(a1 + 12) = a1 + 78; + } + return result; +} + +//----- (004C0690) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_destroy_pback(int a1) +{ + bool v1; // zf + int v2; // eax + int v3; // ebx + int result; // eax + int v5; // edx + + if ( *(_BYTE *)(a1 + 88) ) + { + v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); + v2 = *(_DWORD *)(a1 + 80); + v3 = *(_DWORD *)(a1 + 64); + *(_BYTE *)(a1 + 88) = 0; + result = v2 + 2 * !v1; + v5 = *(_DWORD *)(a1 + 84); + *(_DWORD *)(a1 + 4) = v3; + *(_DWORD *)(a1 + 80) = result; + *(_DWORD *)(a1 + 8) = result; + *(_DWORD *)(a1 + 12) = v5; + } + return result; +} + +//----- (004C06D0) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_terminate_output(_DWORD *a1) +{ + int v1; // esi + int v3; // eax + int v4; // ecx + _DWORD **v5; // eax + _DWORD *v6; // ebx + _DWORD **v7; // ebp + unsigned int v8; // eax + unsigned int v9; // esi + unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] + void *v12; // [esp+2Ch] [ebp-B4h] + int v13; // [esp+30h] [ebp-B0h] + int v14; // [esp+40h] [ebp-A0h] BYREF + char v15[128]; // [esp+44h] [ebp-9Ch] BYREF + char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF + + v1 = 1; + if ( a1[4] < a1[5] ) + { + v3 = (*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, 0xFFFF); + LOBYTE(v3) = (_WORD)v3 != 0xFFFF; + v1 = v3; + } + if ( *((_BYTE *)a1 + 74) ) + { + v4 = a1[23]; + if ( !v4 ) + std::__throw_bad_cast(); + v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); + if ( !v11 ) + { + if ( (_BYTE)v1 ) + { + v12 = a1 + 10; + v5 = (_DWORD **)a1; + v6 = a1 + 14; + v7 = v5; + while ( 1 ) + { + v8 = (*(int (__thiscall **)(_DWORD *, _DWORD *, char *, char *, int *))(*v7[23] + 12))( + v7[23], + v6, + v15, + v16, + &v14); + v9 = v8; + if ( v8 == 2 ) + break; + if ( v8 <= 1 && v14 - (int)v15 > 0 ) + { + v13 = v14 - (_DWORD)v15; + if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) + return v11; + if ( v9 == 1 ) + continue; + } + return ((unsigned __int16 (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, 0xFFFF) != 0xFFFF; + } + return v11; + } + } + } + return v1; +} +// 4C06D0: using guessed type char var_1C[28]; + +//----- (004C07E0) -------------------------------------------------------- +bool __thiscall std::wfilebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3) +{ + int v4; // ecx + unsigned int v5; // esi + int v6; // eax + void *v7; // esp + void *v8; // esp + unsigned int v9; // eax + unsigned int v10; // eax + int v12; // esi + char v13; // [esp+20h] [ebp-38h] + int v14; // [esp+38h] [ebp-20h] BYREF + int v15; // [esp+3Ch] [ebp-1Ch] BYREF + char v16[24]; // [esp+40h] [ebp-18h] BYREF + + v4 = this[23]; + v5 = a3; + if ( !v4 ) + std::__throw_bad_cast(); + if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) + goto LABEL_5; + v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)this[23] + 32))(this[23]) + 27) >> 4); + v7 = alloca(v6); + v8 = alloca(v6); + v9 = (*(int (__thiscall **)(_DWORD, _DWORD *, char *, char *))(*(_DWORD *)this[23] + 8))( + this[23], + this + 14, + a2, + &a2[2 * a3]); + if ( v9 > 1 ) + { + if ( v9 == 3 ) + { +LABEL_5: + v10 = std::__basic_file::xsputn(this + 10, a2, a3); + return v10 == v5; + } +LABEL_11: + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::_M_convert_to_external conversion error"); + } + v13 = v9; + v5 = v14 - (_DWORD)v16; + v10 = std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16); + if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) + return v10 == v5; + if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(*(_DWORD *)this[23] + 8))( + this[23], + &v15, + v15, + this[5], + &v15, + v16, + v14, + &v14) == 2 ) + goto LABEL_11; + v12 = v14 - (_DWORD)v16; + return std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16) == v12; +} + +//----- (004C0950) -------------------------------------------------------- +void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1) +{ + if ( *(_BYTE *)(a1 + 72) ) + { + if ( *(_DWORD *)(a1 + 64) ) + operator delete[](*(void **)(a1 + 64)); + *(_DWORD *)(a1 + 64) = 0; + *(_BYTE *)(a1 + 72) = 0; + } + if ( *(_DWORD *)(a1 + 96) ) + operator delete[](*(void **)(a1 + 96)); + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + *(_DWORD *)(a1 + 108) = 0; +} + +//----- (004C09B0) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1) +{ + int result; // eax + + if ( !*(_BYTE *)(a1 + 72) ) + { + result = *(_DWORD *)(a1 + 64); + if ( !result ) + return std::wfilebuf::_M_allocate_internal_buffer(a1); + } + return result; +} + +//----- (004C09D0) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1) +{ + unsigned int v1; // eax + int result; // eax + + v1 = *(_DWORD *)(a1 + 68); + if ( v1 > 0x3FFFFFFE ) + std::wfilebuf::_M_allocate_internal_buffer(); + result = operator new[](2 * v1); + *(_BYTE *)(a1 + 72) = 1; + *(_DWORD *)(a1 + 64) = result; + return result; +} + +//----- (004C0A00) -------------------------------------------------------- +char *__thiscall std::wfilebuf::open(int this, char *a2, int a3) +{ + _BYTE *v3; // esi + + v3 = (_BYTE *)(this + 40); + if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) + return 0; + std::__basic_file::open(v3, a2, a3, 436); + if ( !std::__basic_file::is_open(v3) ) + return 0; + if ( !*(_BYTE *)(this + 72) && !*(_DWORD *)(this + 64) ) + std::wfilebuf::_M_allocate_internal_buffer(this); + return std::wfilebuf::open((char *)this, a3); +} + +//----- (004C0A80) -------------------------------------------------------- +char *__thiscall std::wfilebuf::open(char *this, int a2) +{ + int v3; // eax + int v4; // eax + _DWORD v6[7]; // [esp+20h] [ebp-1Ch] BYREF + + *(_WORD *)(this + 73) = 0; + v3 = *((_DWORD *)this + 16); + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 1) = v3; + *((_DWORD *)this + 2) = v3; + *((_DWORD *)this + 3) = v3; + v4 = *((_DWORD *)this + 13); + *((_DWORD *)this + 12) = a2; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 14) = v4; + *((_DWORD *)this + 15) = v4; + if ( (a2 & 2) == 0 ) + return this; + (*(void (__thiscall **)(_DWORD *, char *, _DWORD, _DWORD, int, int))(*(_DWORD *)this + 16))(v6, this, 0, 0, 2, a2); + if ( (v6[0] & v6[1]) != -1 ) + return this; + std::wfilebuf::close((int)this); + return 0; +} + +//----- (004C0B20) -------------------------------------------------------- +char *__thiscall std::wfilebuf::open(int this, wchar_t *a2, int a3) +{ + _BYTE *v3; // esi + + v3 = (_BYTE *)(this + 40); + if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) + return 0; + std::__basic_file::open(v3, a2, a3); + if ( !std::__basic_file::is_open(v3) ) + return 0; + if ( !*(_BYTE *)(this + 72) && !*(_DWORD *)(this + 64) ) + std::wfilebuf::_M_allocate_internal_buffer(this); + return std::wfilebuf::open((char *)this, a3); +} + +//----- (004C0BA0) -------------------------------------------------------- +char *__thiscall std::wfilebuf::open(void *this, char *a2, int a3) +{ + return std::wfilebuf::open((int)this, *(char **)a2, a3); +} + +//----- (004C0BB0) -------------------------------------------------------- +int __thiscall std::wfilebuf::swap(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + char v15; // dl + int v16; // edx + int v17; // eax + int v18; // edx + int v19; // eax + int v20; // edx + int v21; // eax + int v22; // edx + int v23; // eax + int v24; // edx + int v25; // eax + int v26; // edx + int v27; // eax + int v28; // edx + int v29; // eax + int v30; // edx + int v31; // eax + int v32; // edx + int v33; // eax + int v34; // edx + int v35; // eax + int v36; // edx + int v37; // eax + int v38; // eax + int result; // eax + const std::locale *v40; // [esp+4h] [ebp-48h] + volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] + _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + v41 = (volatile signed __int32 **)(this + 28); + std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); + std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); + std::locale::~locale(v42); + v14 = *(_DWORD *)(this + 40); + *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); + v15 = *(_BYTE *)(a2 + 44); + *(_DWORD *)(a2 + 40) = v14; + LOBYTE(v14) = *(_BYTE *)(this + 44); + *(_BYTE *)(this + 44) = v15; + v16 = *(_DWORD *)(a2 + 48); + *(_BYTE *)(a2 + 44) = v14; + v17 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 48) = v16; + v18 = *(_DWORD *)(a2 + 52); + *(_DWORD *)(a2 + 48) = v17; + v19 = *(_DWORD *)(this + 52); + *(_DWORD *)(this + 52) = v18; + v20 = *(_DWORD *)(a2 + 56); + *(_DWORD *)(a2 + 52) = v19; + v21 = *(_DWORD *)(this + 56); + *(_DWORD *)(this + 56) = v20; + v22 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(a2 + 56) = v21; + v23 = *(_DWORD *)(this + 60); + *(_DWORD *)(this + 60) = v22; + v24 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 60) = v23; + v25 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 64) = v24; + v26 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(a2 + 64) = v25; + v27 = *(_DWORD *)(this + 68); + *(_DWORD *)(this + 68) = v26; + *(_DWORD *)(a2 + 68) = v27; + LOBYTE(v27) = *(_BYTE *)(this + 72); + *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); + v28 = *(_DWORD *)(a2 + 96); + *(_BYTE *)(a2 + 72) = v27; + v29 = *(_DWORD *)(this + 96); + *(_DWORD *)(this + 96) = v28; + v30 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = v29; + v31 = *(_DWORD *)(this + 100); + *(_DWORD *)(this + 100) = v30; + v32 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = v31; + v33 = *(_DWORD *)(this + 104); + *(_DWORD *)(this + 104) = v32; + v34 = *(_DWORD *)(a2 + 108); + *(_DWORD *)(a2 + 104) = v33; + v35 = *(_DWORD *)(this + 108); + *(_DWORD *)(this + 108) = v34; + LOBYTE(v34) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(a2 + 108) = v35; + LOBYTE(v35) = *(_BYTE *)(this + 73); + *(_BYTE *)(this + 73) = v34; + LOBYTE(v34) = *(_BYTE *)(a2 + 74); + *(_BYTE *)(a2 + 73) = v35; + LOBYTE(v35) = *(_BYTE *)(this + 74); + *(_BYTE *)(this + 74) = v34; + v36 = *(_DWORD *)(a2 + 80); + *(_BYTE *)(a2 + 74) = v35; + v37 = *(_DWORD *)(this + 80); + *(_DWORD *)(this + 80) = v36; + *(_DWORD *)(a2 + 80) = v37; + v38 = *(_DWORD *)(this + 84); + *(_DWORD *)(this + 84) = *(_DWORD *)(a2 + 84); + LOBYTE(v36) = *(_BYTE *)(a2 + 88); + *(_DWORD *)(a2 + 84) = v38; + result = *(unsigned __int8 *)(this + 88); + *(_BYTE *)(this + 88) = v36; + *(_BYTE *)(a2 + 88) = result; + return result; +} +// 4C0C18: variable 'v40' is possibly undefined + +//----- (004C0D40) -------------------------------------------------------- +int __fastcall std::wfilebuf::sync(_DWORD *a1) +{ + if ( a1[4] >= a1[5] ) + return 0; + else + return -((*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, 0xFFFF) == 0xFFFF); +} + +//----- (004C0D80) -------------------------------------------------------- +int __fastcall std::wfilebuf::close(int a1) +{ + int v1; // esi + char v3; // di + int v4; // eax + int v5; // eax + + v1 = a1 + 40; + if ( !std::__basic_file::is_open((_DWORD *)(a1 + 40)) ) + return 0; + v3 = std::wfilebuf::_M_terminate_output((_DWORD *)a1); + *(_DWORD *)(a1 + 48) = 0; + *(_BYTE *)(a1 + 88) = 0; + std::wfilebuf::_M_destroy_internal_buffer(a1); + *(_WORD *)(a1 + 73) = 0; + v4 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 4) = v4; + *(_DWORD *)(a1 + 8) = v4; + *(_DWORD *)(a1 + 12) = v4; + v5 = *(_DWORD *)(a1 + 52); + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 56) = v5; + *(_DWORD *)(a1 + 60) = v5; + if ( !std::__basic_file::close(v1) ) + return 0; + if ( v3 == 1 ) + return a1; + else + return 0; +} + +//----- (004C0E40) -------------------------------------------------------- +char __thiscall std::wfilebuf::imbue(int this, int a2) +{ + void *v3; // esi + int v4; // eax + int v5; // ecx + int v6; // ecx + int v7; // edi + const void *Src; // eax + int v9; // edi + size_t Size; // edi + int v11; // eax + size_t v12; // edi + int v13; // eax + int v15; // [esp+30h] [ebp-1Ch] BYREF + int v16; // [esp+34h] [ebp-18h] + + if ( (unsigned __int8)std::has_facet>(a2) ) + v3 = std::use_facet>(a2); + else + v3 = 0; + LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)(this + 40)); + if ( !(_BYTE)v4 ) + goto LABEL_13; + if ( !*(_BYTE *)(this + 73) && !*(_BYTE *)(this + 74) ) + { + *(_DWORD *)(this + 92) = v3; + return v4; + } + v5 = *(_DWORD *)(this + 92); + if ( !v5 ) + goto LABEL_24; + v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); + if ( v4 == -1 ) + goto LABEL_18; + if ( !*(_BYTE *)(this + 73) ) + { + if ( !*(_BYTE *)(this + 74) ) + goto LABEL_13; + LOBYTE(v4) = std::wfilebuf::_M_terminate_output((_DWORD *)this); + if ( (_BYTE)v4 ) + { + v4 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 4) = v4; + *(_DWORD *)(this + 8) = v4; + *(_DWORD *)(this + 12) = v4; + *(_DWORD *)(this + 24) = 0; + goto LABEL_13; + } +LABEL_18: + *(_DWORD *)(this + 92) = 0; + return v4; + } + v6 = *(_DWORD *)(this + 92); + if ( !v6 ) +LABEL_24: + std::__throw_bad_cast(); + LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); + if ( !(_BYTE)v4 ) + { + v7 = *(_DWORD *)(this + 96); + Src = (const void *)(v7 + + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**(_DWORD **)(this + 92) + 28))( + *(_DWORD *)(this + 92), + this + 60, + v7, + *(_DWORD *)(this + 104), + (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1)); + v9 = *(_DWORD *)(this + 108); + *(_DWORD *)(this + 104) = Src; + Size = v9 - (_DWORD)Src; + if ( Size ) + memmove(*(void **)(this + 96), Src, Size); + v11 = *(_DWORD *)(this + 96); + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + v12 = v11 + Size; + *(_DWORD *)(this + 104) = v11; + v13 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 108) = v12; + *(_DWORD *)(this + 4) = v13; + *(_DWORD *)(this + 8) = v13; + *(_DWORD *)(this + 12) = v13; + v4 = *(_DWORD *)(this + 52); + *(_DWORD *)(this + 24) = 0; + *(_DWORD *)(this + 56) = v4; + *(_DWORD *)(this + 60) = v4; + goto LABEL_13; + } + if ( !v3 ) + goto LABEL_18; + LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); + if ( !(_BYTE)v4 ) + { + (*(void (__thiscall **)(int *, int, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( + &v15, + this, + 0, + 0, + 1, + *(_DWORD *)(this + 48)); + LOBYTE(v4) = v15 & v16; + if ( (v15 & v16) == -1 ) + goto LABEL_18; + } +LABEL_13: + *(_DWORD *)(this + 92) = v3; + return v4; +} + +//----- (004C1020) -------------------------------------------------------- +int __thiscall std::wfilebuf::setbuf(int this, __int64 a2) +{ + if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) + return this; + if ( !a2 ) + { + *(_DWORD *)(this + 68) = 1; + return this; + } + if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) + return this; + *(_QWORD *)(this + 64) = a2; + return this; +} + +//----- (004C1080) -------------------------------------------------------- +int __thiscall std::wfilebuf::xsgetn(_DWORD *this, wchar_t *a2, signed int a3) +{ + wchar_t *S1; // edi + signed int v5; // esi + wchar_t *v6; // eax + int v7; // ebp + wchar_t *v8; // ecx + bool v9; // zf + int v10; // eax + int v11; // edx + int v12; // eax + int v13; // ecx + unsigned int v14; // eax + int v15; // ecx + char v16; // al + int v18; // eax + const wchar_t *v19; // edx + const wchar_t *S2; // eax + int i; // eax + wchar_t v22; // dx + int v23; // eax + int *v24; // eax + int v25; // [esp+18h] [ebp-24h] + int N; // [esp+18h] [ebp-24h] + int v27; // [esp+1Ch] [ebp-20h] + + S1 = a2; + v5 = a3; + if ( *((_BYTE *)this + 88) ) + { + v6 = (wchar_t *)this[2]; + v7 = 0; + v8 = (wchar_t *)this[1]; + if ( a3 > 0 && v6 == v8 ) + { + v22 = *v6; + v5 = a3 - 1; + ++v6; + S1 = a2 + 1; + v7 = 1; + *a2 = v22; + } + v9 = v8 == v6; + v10 = this[20]; + v11 = this[16]; + *((_BYTE *)this + 88) = 0; + this[1] = v11; + v12 = v10 + 2 * !v9; + v13 = this[21]; + this[20] = v12; + this[2] = v12; + this[3] = v13; +LABEL_6: + v14 = this[17]; + if ( v14 >= 2 ) + goto LABEL_7; +LABEL_16: + v14 = 2; + goto LABEL_7; + } + if ( !*((_BYTE *)this + 74) ) + { + v7 = 0; + goto LABEL_6; + } + if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*this + 52))(this, 0xFFFF) == 0xFFFF ) + return 0; + v18 = this[16]; + this[5] = 0; + v7 = 0; + this[4] = 0; + this[1] = v18; + this[2] = v18; + this[3] = v18; + v14 = this[17]; + this[6] = 0; + *((_BYTE *)this + 74) = 0; + if ( v14 < 2 ) + goto LABEL_16; + if ( v5 <= (int)(v14 - 1) ) + goto LABEL_11; +LABEL_7: + v15 = this[23]; + if ( !v15 ) + std::__throw_bad_cast(); + v25 = this[12]; + v16 = (*(int (__fastcall **)(int))(*(_DWORD *)v15 + 24))(v15); + if ( (v25 & 8) != 0 && v16 ) + { + v19 = (const wchar_t *)this[3]; + S2 = (const wchar_t *)this[2]; + if ( S2 != v19 ) + { + v27 = (char *)v19 - (char *)S2; + N = v19 - S2; + wmemcpy(S1, S2, N); + this[2] += v27; + S1 = (wchar_t *)((char *)S1 + v27); + v7 += N; + v5 -= N; + } + for ( i = std::__basic_file::xsgetn(this + 10, S1, v5); ; i = std::__basic_file::xsgetn( + this + 10, + S1, + v5) ) + { + if ( i == -1 ) + { + v24 = _errno(); + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", (char *)*v24); + } + if ( !i ) + break; + v7 += i; + v5 -= i; + if ( !v5 ) + goto LABEL_26; + S1 += i; + } + if ( !v5 ) + { +LABEL_26: + *((_BYTE *)this + 73) = 1; + return v7; + } + v23 = this[16]; + this[5] = 0; + this[4] = 0; + this[1] = v23; + this[2] = v23; + this[3] = v23; + this[6] = 0; + *((_BYTE *)this + 73) = 0; + } + else + { +LABEL_11: + v7 += std::wstreambuf::xsgetn(this, S1, v5); + } + return v7; +} + +//----- (004C12A0) -------------------------------------------------------- +int __thiscall std::wfilebuf::xsputn(int this, wchar_t *a2, int a3) +{ + int v4; // esi + int v5; // ecx + char v6; // si + int v7; // edx + int v8; // eax + unsigned int v9; // ecx + int v10; // esi + signed int v11; // eax + int v12; // edx + int v14; // edx + int v15; // ecx + unsigned int v16; // ecx + char *v17; // [esp+0h] [ebp-2Ch] + + v4 = *(_DWORD *)(this + 48); + if ( (v4 & 0x10) != 0 ) + LOBYTE(v4) = 1; + v5 = *(_DWORD *)(this + 92); + v6 = v4 & 1; + if ( !v5 ) + std::__throw_bad_cast(); + if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) + return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); + v7 = *(_DWORD *)(this + 20); + v8 = (*(_DWORD *)(this + 24) - v7) >> 1; + if ( !*(_BYTE *)(this + 74) ) + { + v9 = *(_DWORD *)(this + 68); + if ( v9 > 1 ) + v8 = v9 - 1; + } + if ( v8 > 1023 ) + v8 = 1024; + if ( a3 < v8 ) + return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); + v17 = *(char **)(this + 16); + v10 = (v7 - (int)v17) >> 1; + v11 = std::__basic_file::xsputn_2((void *)(this + 40), v17, v10, (char *)a2, a3); + if ( v10 + a3 == v11 ) + { + v14 = *(_DWORD *)(this + 64); + v15 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v14; + *(_DWORD *)(this + 8) = v14; + *(_DWORD *)(this + 12) = v14; + if ( ((v15 & 0x10) != 0 || (v15 & 1) != 0) && (v16 = *(_DWORD *)(this + 68), v16 > 1) ) + { + *(_DWORD *)(this + 20) = v14; + *(_DWORD *)(this + 16) = v14; + *(_DWORD *)(this + 24) = v14 + 2 * v16 - 2; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + *(_BYTE *)(this + 74) = 1; + } + v12 = 0; + if ( v10 < v11 ) + return v11 - v10; + return v12; +} + +//----- (004C13D0) -------------------------------------------------------- +_DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) +{ + _DWORD *result; // eax + __int64 v7; // rax + int v8; // ecx + int v9; // ecx + + *this = -1; + this[1] = -1; + this[2] = 0; + if ( !(unsigned __int8)std::wfilebuf::_M_terminate_output((_DWORD *)a2) ) + return this; + v7 = std::__basic_file::seekoff((void *)(a2 + 40), a3, a4); + if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) + return this; + *this = v7; + result = this; + *(_WORD *)(a2 + 73) = 0; + v8 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 108) = v8; + *(_DWORD *)(a2 + 104) = v8; + v9 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 4) = v9; + *(_DWORD *)(a2 + 8) = v9; + *(_DWORD *)(a2 + 12) = v9; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = a5; + this[2] = a5; + this[1] = HIDWORD(v7); + return result; +} + +//----- (004C1480) -------------------------------------------------------- +_DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) +{ + int v6; // ecx + int v7; // eax + bool v8; // al + bool v10; // zf + __int64 v11; // rax + __int64 v12; // rax + int v13; // eax + int v14; // edx + unsigned int v15; // esi + unsigned int v16; // edi + __int64 v17; // kr00_8 + __int64 ext_pos; // [esp+28h] [ebp-54h] + bool v19; // [esp+34h] [ebp-48h] + int v20; // [esp+34h] [ebp-48h] + int v21; // [esp+3Ch] [ebp-40h] + int v22; // [esp+4Ch] [ebp-30h] BYREF + int v23[11]; // [esp+50h] [ebp-2Ch] BYREF + + v6 = *(_DWORD *)(a2 + 92); + if ( v6 ) + { + v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); + v21 = v7 & ~(v7 >> 31); + v8 = v7 <= 0; + } + else + { + v21 = 0; + v8 = 1; + } + *this = -1; + this[1] = -1; + this[2] = 0; + v19 = v8 && a3 != 0; + if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v19 ) + return this; + if ( a4 != 1 + || a3 + || *(_BYTE *)(a2 + 74) + && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 92) + 24))(*(_DWORD *)(a2 + 92)) ) + { + if ( *(_BYTE *)(a2 + 88) ) + { + v10 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); + *(_BYTE *)(a2 + 88) = 0; + v13 = *(_DWORD *)(a2 + 80) + 2 * !v10; + v14 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 80) = v13; + *(_DWORD *)(a2 + 8) = v13; + *(_DWORD *)(a2 + 12) = v14; + } + v20 = *(_DWORD *)(a2 + 52); + v22 = v20; + v15 = a3 * v21; + v16 = (unsigned __int64)(a3 * v21) >> 32; + if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) + { + v22 = *(_DWORD *)(a2 + 60); + v17 = std::wfilebuf::_M_get_ext_pos(a2, (int)&v22) + __PAIR64__(v16, v15); + std::wfilebuf::_M_seek(v23, a2, v17, 1, v22); + } + else + { + std::wfilebuf::_M_seek(v23, a2, __SPAIR64__(v16, v15), a4, v20); + } + *this = v23[0]; + this[1] = v23[1]; + this[2] = v23[2]; + return this; + } + v10 = *(_BYTE *)(a2 + 73) == 0; + ext_pos = 0LL; + v22 = *(_DWORD *)(a2 + 52); + if ( !v10 ) + { + v22 = *(_DWORD *)(a2 + 60); + ext_pos = std::wfilebuf::_M_get_ext_pos(a2, (int)&v22); + } + if ( *(_BYTE *)(a2 + 74) ) + ext_pos = (*(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16)) >> 1; + v11 = std::__basic_file::seekoff((void *)(a2 + 40), 0LL, 1); + if ( ((unsigned int)v11 & HIDWORD(v11)) == -1 ) + return this; + v12 = ext_pos + v11; + *this = v12; + LODWORD(v12) = v22; + this[1] = HIDWORD(v12); + this[2] = v12; + return this; +} + +//----- (004C16F0) -------------------------------------------------------- +_DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) +{ + bool v8; // zf + int v9; // eax + int v10; // edx + int v11[7]; // [esp+30h] [ebp-1Ch] BYREF + + *this = -1; + this[1] = -1; + this[2] = 0; + if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) + { + if ( *(_BYTE *)(a2 + 88) ) + { + v8 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); + *(_BYTE *)(a2 + 88) = 0; + v9 = *(_DWORD *)(a2 + 80) + 2 * !v8; + v10 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 80) = v9; + *(_DWORD *)(a2 + 8) = v9; + *(_DWORD *)(a2 + 12) = v10; + } + std::wfilebuf::_M_seek(v11, a2, a3, 0, a4); + *this = v11[0]; + this[1] = v11[1]; + this[2] = v11[2]; + } + return this; +} + +//----- (004C17C0) -------------------------------------------------------- +int __thiscall std::wfilebuf::overflow(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // ecx + int ext_pos; // eax + char *v7; // edx + char *v8; // eax + int result; // eax + unsigned int v10; // eax + int v11; // eax + int v12; // edx + int v13; // edx + int v14; // ecx + _WORD *v15; // eax + unsigned int v16; // edx + int v17[7]; // [esp+20h] [ebp-1Ch] BYREF + + if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) + return -1; + if ( *(_BYTE *)(this + 73) ) + { + if ( *(_BYTE *)(this + 88) ) + { + v3 = *(_DWORD *)(this + 80) + 2 * (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); + v4 = *(_DWORD *)(this + 84); + *(_DWORD *)(this + 80) = v3; + v5 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 8) = v3; + *(_DWORD *)(this + 4) = v5; + *(_DWORD *)(this + 12) = v4; + *(_BYTE *)(this + 88) = 0; + } + ext_pos = std::wfilebuf::_M_get_ext_pos(this, this + 60); + std::wfilebuf::_M_seek(v17, this, ext_pos, 1, *(_DWORD *)(this + 60)); + if ( (v17[0] & v17[1]) == -1 ) + return -1; + } + v7 = *(char **)(this + 16); + v8 = *(char **)(this + 20); + if ( v7 < v8 ) + { + if ( (_WORD)a2 != 0xFFFF ) + { + *(_WORD *)v8 = a2; + v8 += 2; + *(_DWORD *)(this + 20) = v8; + } + if ( !std::wfilebuf::_M_convert_to_external((_DWORD *)this, v7, (v8 - v7) >> 1) ) + return -1; + v11 = *(_DWORD *)(this + 64); + v12 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v11; + *(_DWORD *)(this + 8) = v11; + *(_DWORD *)(this + 12) = v11; + if ( ((v12 & 0x10) != 0 || (v12 & 1) != 0) && (v16 = *(_DWORD *)(this + 68), v16 > 1) ) + { + *(_DWORD *)(this + 20) = v11; + *(_DWORD *)(this + 16) = v11; + *(_DWORD *)(this + 24) = v11 + 2 * v16 - 2; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + result = a2; + if ( (_WORD)a2 != 0xFFFF ) + return result; + return 0; + } + v10 = *(_DWORD *)(this + 68); + if ( v10 > 1 ) + { + v13 = *(_DWORD *)(this + 64); + v14 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v13; + *(_DWORD *)(this + 8) = v13; + *(_DWORD *)(this + 12) = v13; + if ( (v14 & 0x10) != 0 || (v14 & 1) != 0 ) + { + *(_DWORD *)(this + 20) = v13; + *(_DWORD *)(this + 16) = v13; + *(_DWORD *)(this + 24) = v13 + 2 * v10 - 2; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + *(_BYTE *)(this + 74) = 1; + if ( (_WORD)a2 != 0xFFFF ) + { + v15 = *(_WORD **)(this + 20); + *v15 = a2; + *(_DWORD *)(this + 20) = v15 + 1; + return a2; + } + return 0; + } + LOWORD(v17[0]) = a2; + if ( (_WORD)a2 == 0xFFFF ) + { + *(_BYTE *)(this + 74) = 1; + return 0; + } + if ( !std::wfilebuf::_M_convert_to_external((_DWORD *)this, (char *)v17, 1u) ) + return -1; + *(_BYTE *)(this + 74) = 1; + return a2; +} + +//----- (004C19A0) -------------------------------------------------------- +int __thiscall std::wfilebuf::pbackfail(char *this, int a2) +{ + unsigned int v3; // eax + char v4; // di + int v5; // edx + int result; // eax + _WORD *v7; // eax + int v8; // eax + int v9; // eax + int v10[7]; // [esp+24h] [ebp-1Ch] BYREF + + if ( (this[48] & 8) == 0 ) + return -1; + if ( this[74] ) + { + if ( (*(unsigned __int16 (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, 0xFFFF) == 0xFFFF ) + return -1; + v9 = *((_DWORD *)this + 16); + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 4) = 0; + v4 = this[88]; + *((_DWORD *)this + 1) = v9; + *((_DWORD *)this + 2) = v9; + *((_DWORD *)this + 3) = v9; + *((_DWORD *)this + 6) = 0; + this[74] = 0; + } + else + { + v3 = *((_DWORD *)this + 2); + v4 = this[88]; + if ( v3 > *((_DWORD *)this + 1) ) + { + *((_DWORD *)this + 2) = v3 - 2; + v5 = *(unsigned __int16 *)(v3 - 2); + goto LABEL_5; + } + } + (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); + if ( (v10[0] & v10[1]) == -1 ) + return -1; + v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); + if ( (_WORD)v5 == 0xFFFF ) + return -1; +LABEL_5: + result = 0; + if ( (_WORD)a2 == 0xFFFF ) + return result; + result = v5; + if ( (_WORD)v5 == (_WORD)a2 ) + return result; + if ( v4 ) + return -1; + v7 = (_WORD *)*((_DWORD *)this + 2); + if ( !this[88] ) + { + *((_DWORD *)this + 20) = v7; + v8 = *((_DWORD *)this + 3); + *((_DWORD *)this + 3) = this + 78; + *((_DWORD *)this + 21) = v8; + v7 = this + 76; + *((_DWORD *)this + 1) = this + 76; + *((_DWORD *)this + 2) = this + 76; + this[88] = 1; + } + this[73] = 1; + *v7 = a2; + return a2; +} + +//----- (004C1AD0) -------------------------------------------------------- +int __fastcall std::wfilebuf::showmanyc(_DWORD *a1) +{ + int v1; // edi + int v2; // ebp + int v4; // ecx + int v5; // edi + int v6; // esi + int v8; // edi + + v1 = a1[12]; + if ( (v1 & 8) == 0 ) + return -1; + v2 = (int)(a1 + 10); + if ( !std::__basic_file::is_open(a1 + 10) ) + return -1; + v4 = a1[23]; + v5 = v1 & 4; + v6 = (a1[3] - a1[2]) >> 1; + if ( !v4 ) + std::__throw_bad_cast(); + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) + return v6; + v8 = std::__basic_file::showmanyc(v2); + return v8 / (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1[23] + 32))(a1[23]) + v6; +} + +//----- (004C1B60) -------------------------------------------------------- +int __fastcall std::wfilebuf::underflow(int a1) +{ + unsigned __int16 *v2; // eax + unsigned int v3; // edi + int v4; // ecx + int v5; // eax + signed int v6; // esi + int v7; // ecx + const void *v8; // eax + unsigned int v9; // edx + signed int v10; // edi + signed int v11; // ecx + char *v12; // ebp + int v13; // ecx + char *v14; // eax + wchar_t *S1; // edx + int v16; // esi + char v17; // di + int v18; // ebp + char v19; // al + int v20; // eax + int v21; // eax + int result; // eax + bool v23; // zf + int v24; // eax + int v25; // ecx + unsigned int v26; // edx + int v27; // eax + int v28; // eax + const wchar_t *S2; // ecx + unsigned int v30; // eax + size_t N; // esi + unsigned __int16 *v32; // eax + int v33; // eax + int *v34; // eax + char *v35; // eax + char *v36; // eax + char *v37; // eax + unsigned int v38; // [esp+44h] [ebp-34h] + unsigned int v39; // [esp+48h] [ebp-30h] + unsigned int v40; // [esp+48h] [ebp-30h] + unsigned int v41; // [esp+48h] [ebp-30h] + unsigned int v42; // [esp+48h] [ebp-30h] + unsigned int v43; // [esp+48h] [ebp-30h] + wchar_t *v44; // [esp+58h] [ebp-20h] BYREF + + if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) + return -1; + if ( *(_BYTE *)(a1 + 74) ) + { + result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, 0xFFFF); + if ( (_WORD)result == 0xFFFF ) + return result; + v2 = *(unsigned __int16 **)(a1 + 64); + v23 = *(_BYTE *)(a1 + 88) == 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v2; + *(_DWORD *)(a1 + 8) = v2; + *(_DWORD *)(a1 + 12) = v2; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 74) = 0; + if ( v23 ) + { +LABEL_4: + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v2 ) + goto LABEL_5; + return *v2; + } + } + else + { + v2 = *(unsigned __int16 **)(a1 + 8); + if ( !*(_BYTE *)(a1 + 88) ) + goto LABEL_4; + } + v23 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; + v24 = *(_DWORD *)(a1 + 80); + *(_BYTE *)(a1 + 88) = 0; + v25 = *(_DWORD *)(a1 + 64); + v2 = (unsigned __int16 *)(v24 + 2 * !v23); + v26 = *(_DWORD *)(a1 + 84); + *(_DWORD *)(a1 + 80) = v2; + *(_DWORD *)(a1 + 4) = v25; + *(_DWORD *)(a1 + 8) = v2; + *(_DWORD *)(a1 + 12) = v26; + if ( v26 > (unsigned int)v2 ) + return *v2; +LABEL_5: + v3 = *(_DWORD *)(a1 + 68); + if ( v3 < 2 ) + v3 = 2; + v4 = *(_DWORD *)(a1 + 92); + v38 = v3 - 1; + if ( !v4 ) + std::__throw_bad_cast(); + if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) + { + v5 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 20))(*(_DWORD *)(a1 + 92)); + if ( v5 <= 0 ) + { + v33 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 32))(*(_DWORD *)(a1 + 92)); + v7 = v3 - 1; + v6 = v3 + v33 - 2; + } + else + { + v6 = v38 * v5; + v7 = v38 * v5; + } + v8 = *(const void **)(a1 + 104); + v9 = 0; + v10 = *(_DWORD *)(a1 + 108) - (_DWORD)v8; + if ( v7 > v10 ) + v9 = v7 - v10; + v11 = *(_DWORD *)(a1 + 100); + if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 12) == *(_DWORD *)(a1 + 4) ) + { + if ( !v10 ) + { + if ( v6 <= v11 ) + { + v12 = *(char **)(a1 + 96); + goto LABEL_17; + } + v43 = v9; + v37 = (char *)operator new[](v6); + v9 = v43; + v12 = v37; +LABEL_62: + if ( *(_DWORD *)(a1 + 96) ) + { + v40 = v9; + operator delete[](*(void **)(a1 + 96)); + v9 = v40; + } + *(_DWORD *)(a1 + 96) = v12; + *(_DWORD *)(a1 + 100) = v6; +LABEL_17: + v13 = *(_DWORD *)(a1 + 56); + v14 = &v12[v10]; + *(_DWORD *)(a1 + 104) = v12; + *(_DWORD *)(a1 + 108) = &v12[v10]; + *(_DWORD *)(a1 + 60) = v13; + if ( v9 ) + { + v16 = 0; + goto LABEL_25; + } + S1 = *(wchar_t **)(a1 + 4); + v16 = 0; + v44 = S1; + if ( v14 <= v12 ) + { + while ( 1 ) + { +LABEL_24: + v14 = *(char **)(a1 + 108); + v9 = 1; + v10 = (signed int)&v14[-*(_DWORD *)(a1 + 96)]; +LABEL_25: + if ( (signed int)(v9 + v10) > *(_DWORD *)(a1 + 100) ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow codecvt::max_length() is not valid"); + v20 = std::__basic_file::xsgetn((void *)(a1 + 40), v14, v9); + if ( v20 ) + { + if ( v20 == -1 ) + goto LABEL_59; + v17 = 0; + } + else + { + v17 = 1; + } + S1 = *(wchar_t **)(a1 + 4); + v12 = *(char **)(a1 + 104); + v14 = (char *)(*(_DWORD *)(a1 + 108) + v20); + *(_DWORD *)(a1 + 108) = v14; + v44 = S1; + if ( v14 > v12 ) + break; + if ( v16 == 3 ) + goto LABEL_44; + if ( v17 ) + goto LABEL_32; + } + } + else + { + v17 = 0; + } + v16 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, wchar_t *, wchar_t *, wchar_t **))(**(_DWORD **)(a1 + 92) + 16))( + *(_DWORD *)(a1 + 92), + a1 + 56, + v12, + v14, + a1 + 104, + S1, + &S1[v38], + &v44); + if ( v16 != 3 ) + { + v18 = ((int)v44 - *(_DWORD *)(a1 + 4)) >> 1; + if ( v16 != 2 ) + { + v19 = v17 | (v44 != *(wchar_t **)(a1 + 4)); +LABEL_23: + if ( !v19 ) + goto LABEL_24; + if ( v18 > 0 ) + goto LABEL_54; + if ( !v17 ) + { +LABEL_59: + v34 = _errno(); + std::__throw_ios_failure( + (std::__ios_failure *)"basic_filebuf::underflow error reading the file", + (char *)*v34); + } +LABEL_32: + v21 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v21; + *(_DWORD *)(a1 + 8) = v21; + *(_DWORD *)(a1 + 12) = v21; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 0; + if ( v16 == 1 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow incomplete character in file"); + return -1; + } + if ( (int)v44 - *(_DWORD *)(a1 + 4) <= 0 ) + { + if ( !v17 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow invalid byte sequence in file"); + goto LABEL_41; + } + goto LABEL_54; + } + v14 = *(char **)(a1 + 108); + S1 = *(wchar_t **)(a1 + 4); +LABEL_44: + S2 = *(const wchar_t **)(a1 + 96); + v30 = v14 - (char *)S2; + v18 = v30; + N = v30; + if ( v38 < v30 ) + { + N = v38; + v18 = v38; + } + else if ( !v30 ) + { +LABEL_46: + *(_DWORD *)(a1 + 104) = S2; + v16 = 3; + v19 = v17 | (v18 != 0); + goto LABEL_23; + } + wmemcpy(S1, S2, N); + S2 = (const wchar_t *)(*(_DWORD *)(a1 + 96) + N); + goto LABEL_46; + } + if ( v6 <= v11 ) + { + v12 = *(char **)(a1 + 96); + v9 = 0; +LABEL_73: + v42 = v9; + memmove(v12, v8, v10); + v12 = *(char **)(a1 + 96); + v9 = v42; + goto LABEL_17; + } + v36 = (char *)operator new[](v6); + v9 = 0; + v12 = v36; + } + else + { + if ( v6 <= v11 ) + { + v12 = *(char **)(a1 + 96); + if ( !v10 ) + goto LABEL_17; + goto LABEL_73; + } + v39 = v9; + v35 = (char *)operator new[](v6); + v9 = v39; + v12 = v35; + if ( !v10 ) + goto LABEL_62; + } + v41 = v9; + memcpy(v12, *(const void **)(a1 + 104), v10); + v9 = v41; + goto LABEL_62; + } + v27 = std::__basic_file::xsgetn((void *)(a1 + 40), *(void **)(a1 + 4), v38); + v18 = v27; + if ( !v27 ) + { +LABEL_41: + v28 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v28; + *(_DWORD *)(a1 + 8) = v28; + *(_DWORD *)(a1 + 12) = v28; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 0; + return -1; + } + if ( v27 <= 0 ) + goto LABEL_59; +LABEL_54: + v32 = *(unsigned __int16 **)(a1 + 64); + v23 = (*(_BYTE *)(a1 + 48) & 8) == 0; + *(_DWORD *)(a1 + 4) = v32; + *(_DWORD *)(a1 + 8) = v32; + if ( v23 ) + *(_DWORD *)(a1 + 12) = v32; + else + *(_DWORD *)(a1 + 12) = &v32[v18]; + *(_DWORD *)(a1 + 20) = 0; + result = *v32; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 1; + return result; +} + +//----- (004C2020) -------------------------------------------------------- +int __thiscall std::wfilebuf::basic_filebuf(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + int result; // eax + int v10; // edx + int v11; // edx + int v12; // edx + int v13; // edx + int v14; // edx + int v15; // edx + int v16; // edx + const std::locale *v17; // [esp+4h] [ebp-18h] + + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); + v3 = *(_DWORD *)(a2 + 56); + v4 = *(_DWORD *)(a2 + 40); + *(_DWORD *)this = &off_538720; + *(_DWORD *)(this + 56) = v3; + v5 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(this + 40) = v4; + LOBYTE(v4) = *(_BYTE *)(a2 + 44); + *(_DWORD *)(this + 60) = v5; + v6 = *(_DWORD *)(a2 + 64); + *(_BYTE *)(this + 44) = v4; + v7 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(this + 64) = v6; + v8 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(this + 48) = v7; + result = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 68) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 72); + *(_DWORD *)(this + 32) = 0; + *(_BYTE *)(this + 72) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(this + 36) = 0; + *(_BYTE *)(this + 73) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 74); + *(_DWORD *)(a2 + 40) = 0; + *(_BYTE *)(a2 + 44) = 0; + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 52) = result; + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(a2 + 68) = 1; + *(_WORD *)(a2 + 72) = 0; + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v8; + LOWORD(v8) = *(_WORD *)(a2 + 76); + *(_DWORD *)(a2 + 4) = 0; + *(_WORD *)(this + 76) = v8; + v10 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 8) = 0; + *(_DWORD *)(this + 80) = v10; + v11 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 80) = 0; + *(_DWORD *)(this + 84) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 88); + *(_DWORD *)(a2 + 84) = 0; + *(_BYTE *)(this + 88) = v11; + v12 = *(_DWORD *)(a2 + 92); + *(_BYTE *)(a2 + 88) = 0; + *(_DWORD *)(this + 92) = v12; + v13 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 12) = 0; + *(_DWORD *)(this + 96) = v13; + v14 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 100) = v14; + v15 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(this + 104) = v15; + v16 = *(_DWORD *)(a2 + 108); + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(a2 + 108) = 0; + *(_DWORD *)(this + 108) = v16; + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = result; + *(_DWORD *)(a2 + 60) = result; + return result; +} +// 4C202E: variable 'v17' is possibly undefined +// 538720: using guessed type int (*off_538720)(); + +//----- (004C2160) -------------------------------------------------------- +void *__fastcall std::wfilebuf::basic_filebuf(int a1) +{ + int v1; // esi + _BYTE *v3; // edi + void *result; // eax + + v1 = a1 + 28; + v3 = (_BYTE *)(a1 + 40); + *(_DWORD *)a1 = &off_538A88; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + std::locale::locale((_DWORD *)(a1 + 28)); + *(_DWORD *)a1 = &off_538720; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::__basic_file::__basic_file(v3, a1 + 32); + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 68) = 512; + *(_WORD *)(a1 + 72) = 0; + *(_BYTE *)(a1 + 74) = 0; + *(_WORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_DWORD *)(a1 + 84) = 0; + *(_BYTE *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + *(_DWORD *)(a1 + 108) = 0; + result = (void *)std::has_facet>(v1); + if ( (_BYTE)result ) + { + result = std::use_facet>(v1); + *(_DWORD *)(a1 + 92) = result; + } + return result; +} +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004C2290) -------------------------------------------------------- +int __thiscall std::wfilebuf::basic_filebuf(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + int result; // eax + int v10; // edx + int v11; // edx + int v12; // edx + int v13; // edx + int v14; // edx + int v15; // edx + int v16; // edx + const std::locale *v17; // [esp+4h] [ebp-18h] + + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); + v3 = *(_DWORD *)(a2 + 56); + v4 = *(_DWORD *)(a2 + 40); + *(_DWORD *)this = &off_538720; + *(_DWORD *)(this + 56) = v3; + v5 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(this + 40) = v4; + LOBYTE(v4) = *(_BYTE *)(a2 + 44); + *(_DWORD *)(this + 60) = v5; + v6 = *(_DWORD *)(a2 + 64); + *(_BYTE *)(this + 44) = v4; + v7 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(this + 64) = v6; + v8 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(this + 48) = v7; + result = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 68) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 72); + *(_DWORD *)(this + 32) = 0; + *(_BYTE *)(this + 72) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(this + 36) = 0; + *(_BYTE *)(this + 73) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 74); + *(_DWORD *)(a2 + 40) = 0; + *(_BYTE *)(a2 + 44) = 0; + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 52) = result; + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(a2 + 68) = 1; + *(_WORD *)(a2 + 72) = 0; + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v8; + LOWORD(v8) = *(_WORD *)(a2 + 76); + *(_DWORD *)(a2 + 4) = 0; + *(_WORD *)(this + 76) = v8; + v10 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 8) = 0; + *(_DWORD *)(this + 80) = v10; + v11 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 80) = 0; + *(_DWORD *)(this + 84) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 88); + *(_DWORD *)(a2 + 84) = 0; + *(_BYTE *)(this + 88) = v11; + v12 = *(_DWORD *)(a2 + 92); + *(_BYTE *)(a2 + 88) = 0; + *(_DWORD *)(this + 92) = v12; + v13 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 12) = 0; + *(_DWORD *)(this + 96) = v13; + v14 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 100) = v14; + v15 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(this + 104) = v15; + v16 = *(_DWORD *)(a2 + 108); + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(a2 + 108) = 0; + *(_DWORD *)(this + 108) = v16; + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = result; + *(_DWORD *)(a2 + 60) = result; + return result; +} +// 4C229E: variable 'v17' is possibly undefined +// 538720: using guessed type int (*off_538720)(); + +//----- (004C23D0) -------------------------------------------------------- +void *__fastcall std::wfilebuf::basic_filebuf(int a1) +{ + int v1; // esi + _BYTE *v3; // edi + void *result; // eax + + v1 = a1 + 28; + v3 = (_BYTE *)(a1 + 40); + *(_DWORD *)a1 = &off_538A88; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + std::locale::locale((_DWORD *)(a1 + 28)); + *(_DWORD *)a1 = &off_538720; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::__basic_file::__basic_file(v3, a1 + 32); + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 68) = 512; + *(_WORD *)(a1 + 72) = 0; + *(_BYTE *)(a1 + 74) = 0; + *(_WORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_DWORD *)(a1 + 84) = 0; + *(_BYTE *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + *(_DWORD *)(a1 + 108) = 0; + result = (void *)std::has_facet>(v1); + if ( (_BYTE)result ) + { + result = std::use_facet>(v1); + *(_DWORD *)(a1 + 92) = result; + } + return result; +} +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004C2500) -------------------------------------------------------- +void __fastcall std::wfilebuf::~wfilebuf(_DWORD **a1) +{ + *a1 = &off_538720; + std::wfilebuf::close((int)a1); + std::__basic_file::~__basic_file(a1 + 10); + *a1 = &off_538A88; + std::locale::~locale(a1 + 7); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004C2550) -------------------------------------------------------- +void __fastcall std::wfilebuf::~wfilebuf(int a1) +{ + *(_DWORD *)a1 = &off_538720; + std::wfilebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004C2590) -------------------------------------------------------- +void __fastcall std::wfilebuf::~wfilebuf(int a1) +{ + *(_DWORD *)a1 = &off_538720; + std::wfilebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004C25D0) -------------------------------------------------------- +int __thiscall std::wfilebuf::operator=(int this, int a2) +{ + int v3; // eax + char v4; // dl + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // eax + int v9; // eax + int v10; // eax + int v11; // eax + int v12; // eax + int v13; // eax + int v14; // eax + int v15; // eax + int result; // eax + + std::wfilebuf::close(this); + std::wstreambuf::operator=((volatile signed __int32 **)this, a2); + v3 = *(_DWORD *)(this + 40); + *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); + v4 = *(_BYTE *)(a2 + 44); + *(_DWORD *)(a2 + 40) = v3; + LOBYTE(v3) = *(_BYTE *)(this + 44); + *(_BYTE *)(this + 44) = v4; + *(_BYTE *)(a2 + 44) = v3; + v5 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 48) = v5; + *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); + *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); + v6 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(this + 64) = v6; + v7 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(a2 + 68) = 1; + *(_DWORD *)(this + 68) = v7; + LOBYTE(v7) = *(_BYTE *)(a2 + 72); + *(_BYTE *)(a2 + 72) = 0; + *(_BYTE *)(this + 72) = v7; + v8 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 96) = v8; + v9 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(this + 100) = v9; + v10 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(this + 104) = v10; + v11 = *(_DWORD *)(a2 + 108); + *(_DWORD *)(a2 + 108) = 0; + *(_DWORD *)(this + 108) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 73); + *(_BYTE *)(a2 + 73) = 0; + *(_BYTE *)(this + 73) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 74); + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v11; + v12 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 80) = 0; + *(_DWORD *)(this + 80) = v12; + v13 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 84) = 0; + *(_DWORD *)(this + 84) = v13; + LOBYTE(v13) = *(_BYTE *)(a2 + 88); + *(_BYTE *)(a2 + 88) = 0; + *(_BYTE *)(this + 88) = v13; + v14 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 4) = v14; + *(_DWORD *)(a2 + 8) = v14; + *(_DWORD *)(a2 + 12) = v14; + v15 = *(_DWORD *)(a2 + 52); + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 56) = v15; + *(_DWORD *)(a2 + 60) = v15; + result = this; + *(_DWORD *)(a2 + 24) = 0; + return result; +} + +//----- (004C26F0) -------------------------------------------------------- +int __thiscall std::fstream::open(char *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 12, a2, a3) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004C2760) -------------------------------------------------------- +int __thiscall std::fstream::open(char *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 12, a2, a3) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004C27D0) -------------------------------------------------------- +int __thiscall std::fstream::open(char *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 12, *a2, a3) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004C2840) -------------------------------------------------------- +int __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return std::filebuf::swap((int)(this + 3), (int)(a2 + 3)); +} +// 4C2864: variable 'v10' is possibly undefined + +//----- (004C28E0) -------------------------------------------------------- +int __fastcall std::fstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::filebuf::close((int)(a1 + 3)); + if ( !result ) + return std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004C2920) -------------------------------------------------------- +bool __fastcall std::fstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 52)); +} + +//----- (004C2930) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + char *v10; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 30; + std::ios_base::ios_base(this + 30); + *this = &unk_533A4C; + *((_WORD *)this + 118) = 0; + v4 = a2[1]; + this[58] = 0; + this[1] = v4; + v5 = *a2; + this[60] = 0; + v6 = *(_DWORD *)(v5 - 12); + this[61] = 0; + this[62] = 0; + this[30] = &unk_533A60; + this[63] = 0; + v10 = (char *)a2 + v6; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); + std::ios::_M_cache_locale(v2, (int)(this + 57)); + this[60] = 0; + v7 = *((_DWORD *)v10 + 28); + *((_DWORD *)v10 + 28) = 0; + this[58] = v7; + *((_WORD *)this + 118) = *((_WORD *)v10 + 58); + a2[1] = 0; + *this = &off_538764; + this[30] = off_53878C; + this[2] = off_538778; + result = std::filebuf::basic_filebuf((int)(this + 3), (int)(a2 + 3)); + this[60] = this + 3; + return result; +} +// 4C29A5: variable 'v9' is possibly undefined +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); + +//----- (004C2A60) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 120); + std::ios_base::ios_base((_DWORD *)this + 30); + *(_DWORD *)this = &unk_533A4C; + *((_DWORD *)this + 58) = 0; + *((_WORD *)this + 118) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 63) = 0; + *((_DWORD *)this + 30) = &unk_533A60; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_533A74; + *((_DWORD *)this + 30) = &unk_533A88; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_538764; + *((_DWORD *)this + 30) = off_53878C; + *((_DWORD *)this + 2) = off_538778; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init(v3, (int)(this + 12)); + v5 = std::filebuf::open(this + 12, a2, a3); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); + +//----- (004C2BD0) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 120); + std::ios_base::ios_base((_DWORD *)this + 30); + *(_DWORD *)this = &unk_533A4C; + *((_DWORD *)this + 58) = 0; + *((_WORD *)this + 118) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 63) = 0; + *((_DWORD *)this + 30) = &unk_533A60; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_533A74; + *((_DWORD *)this + 30) = &unk_533A88; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_538764; + *((_DWORD *)this + 30) = off_53878C; + *((_DWORD *)this + 2) = off_538778; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init(v3, (int)(this + 12)); + v5 = std::filebuf::open(this + 12, a2, a3); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); + +//----- (004C2D40) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 120); + std::ios_base::ios_base((_DWORD *)this + 30); + *(_DWORD *)this = &unk_533A4C; + *((_DWORD *)this + 58) = 0; + *((_WORD *)this + 118) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 63) = 0; + *((_DWORD *)this + 30) = &unk_533A60; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_533A74; + *((_DWORD *)this + 30) = &unk_533A88; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_538764; + *((_DWORD *)this + 30) = off_53878C; + *((_DWORD *)this + 2) = off_538778; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init(v3, (int)(this + 12)); + v5 = std::filebuf::open(this + 12, *a2, a3); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); + +//----- (004C2EB0) -------------------------------------------------------- +BOOL __fastcall std::fstream::basic_fstream(int a1) +{ + int v1; // esi + + v1 = a1 + 120; + std::ios_base::ios_base((_DWORD *)(a1 + 120)); + *(_DWORD *)a1 = &unk_533A4C; + *(_DWORD *)(a1 + 232) = 0; + *(_WORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)(a1 + 252) = 0; + *(_DWORD *)(a1 + 120) = &unk_533A60; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_533A74; + *(_DWORD *)(a1 + 120) = &unk_533A88; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_538764; + *(_DWORD *)(a1 + 120) = off_53878C; + *(_DWORD *)(a1 + 8) = off_538778; + std::filebuf::basic_filebuf(a1 + 12); + return std::ios::init(v1, a1 + 12); +} +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); + +//----- (004C2FC0) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edx + __int16 v6; // ax + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int result; // eax + std::ios_base *v14; // [esp+4h] [ebp-34h] + std::ios_base *v15; // [esp+18h] [ebp-20h] + int v16; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = a3[1]; + v16 = (int)this + *(_DWORD *)(v4 - 12); + v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v16, v15, v14); + std::ios::_M_cache_locale((_DWORD *)v16, v16 + 108); + v5 = *((_DWORD *)v15 + 28); + *((_DWORD *)v15 + 28) = 0; + v6 = *((_WORD *)v15 + 58); + *(_DWORD *)(v16 + 120) = 0; + *(_DWORD *)(v16 + 112) = v5; + *(_WORD *)(v16 + 116) = v6; + v7 = a2[4]; + a3[1] = 0; + v8 = a2[5]; + this[2] = v7; + *(int *)((char *)this + *(_DWORD *)(v7 - 12) + 8) = v8; + v9 = a2[1]; + v10 = a2[6]; + *this = v9; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; + this[2] = a2[7]; + v11 = *a2; + v12 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; + this[2] = a2[9]; + std::filebuf::basic_filebuf((int)(this + 3), (int)(a3 + 3)); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)(this + 3); + return result; +} +// 4C2FFD: variable 'v14' is possibly undefined + +//----- (004C30E0) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, int *a2, char *a3, int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + char *v13; // ecx + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::ios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + *((_DWORD *)this + 2) = a2[9]; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); + v12 = std::filebuf::open(this + 12, a3, a4); + v13 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v12 ) + return std::ios::clear(v13, 0); + else + return std::ios::clear(v13, *((_DWORD *)v13 + 5) | 4); +} + +//----- (004C3230) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, int *a2, wchar_t *a3, int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + char *v13; // ecx + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::ios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + *((_DWORD *)this + 2) = a2[9]; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); + v12 = std::filebuf::open(this + 12, a3, a4); + v13 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v12 ) + return std::ios::clear(v13, 0); + else + return std::ios::clear(v13, *((_DWORD *)v13 + 5) | 4); +} + +//----- (004C3380) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, int *a2, char **a3, int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + char *v13; // ecx + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::ios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + *((_DWORD *)this + 2) = a2[9]; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); + v12 = std::filebuf::open(this + 12, *a3, a4); + v13 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v12 ) + return std::ios::clear(v13, 0); + else + return std::ios::clear(v13, *((_DWORD *)v13 + 5) | 4); +} + +//----- (004C34D0) -------------------------------------------------------- +BOOL __thiscall std::fstream::basic_fstream(int *this, int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // edx + + v3 = a2[2]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[4]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[5]; + std::ios::init((int)v5, 0); + v6 = a2[1]; + v7 = a2[6]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = a2[7]; + v8 = *a2; + v9 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[9]; + std::filebuf::basic_filebuf((int)(this + 3)); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); +} + +//----- (004C35D0) -------------------------------------------------------- +void __fastcall std::fstream::~fstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 3; + *(v2 - 3) = &off_538764; + v2[27] = off_53878C; + *(v2 - 1) = off_538778; + *v2 = &off_5386E0; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 13); + a1[3] = &off_538A48; + std::locale::~locale((_DWORD **)a1 + 10); + a1[2] = &unk_533A74; + *a1 = &unk_533A4C; + a1[1] = 0; + a1[30] = &off_539474; + std::ios_base::~ios_base((int)(a1 + 30)); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004C3650) -------------------------------------------------------- +void __fastcall std::fstream::~fstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 12); + *(v2 - 3) = &off_538764; + v2[27] = off_53878C; + *(v2 - 1) = off_538778; + *v2 = &off_5386E0; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 52); + *(_DWORD *)(a1 + 12) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 40)); + *(_DWORD *)(a1 + 8) = &unk_533A74; + *(_DWORD *)a1 = &unk_533A4C; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 120) = &off_539474; + std::ios_base::~ios_base(a1 + 120); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004C36D0) -------------------------------------------------------- +int __thiscall std::fstream::~fstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // eax + int result; // eax + + v3 = this + 3; + v4 = *a2; + *(v3 - 3) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 12) = a2[8]; + v5 = a2[9]; + *v3 = &off_5386E0; + *(v3 - 1) = v5; + std::filebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 13); + this[3] = &off_538A48; + std::locale::~locale((_DWORD **)this + 10); + v6 = a2[1]; + *this = v6; + *(_DWORD *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[6]; + this[2] = a2[7]; + v7 = a2[4]; + this[2] = v7; + *(_DWORD *)((char *)this + *(_DWORD *)(v7 - 12) + 8) = a2[5]; + v8 = a2[2]; + *this = v8; + result = *(_DWORD *)(v8 - 12); + *(_DWORD *)((char *)this + result) = a2[3]; + this[1] = 0; + return result; +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004C3770) -------------------------------------------------------- +_DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + std::filebuf::operator=((int)(this + 3), (int)(a2 + 3)); + return this; +} +// 4C3794: variable 'v10' is possibly undefined + +//----- (004C3810) -------------------------------------------------------- +int __thiscall std::wfstream::open(int *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 3), a2, a3) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004C3880) -------------------------------------------------------- +int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 3), a2, a3) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004C38F0) -------------------------------------------------------- +int __thiscall std::wfstream::open(int *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 3), *a2, a3) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004C3960) -------------------------------------------------------- +int __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return std::wfilebuf::swap((int)(this + 3), (int)(a2 + 3)); +} +// 4C3984: variable 'v9' is possibly undefined + +//----- (004C3A00) -------------------------------------------------------- +int __fastcall std::wfstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::wfilebuf::close((int)(a1 + 3)); + if ( !result ) + return std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004C3A40) -------------------------------------------------------- +bool __fastcall std::wfstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 52)); +} + +//----- (004C3A50) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + char *v10; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 31; + std::ios_base::ios_base(this + 31); + *((_BYTE *)this + 242) = 0; + *((_WORD *)this + 120) = 0; + v4 = a2[1]; + this[59] = 0; + this[1] = v4; + v5 = *a2; + this[61] = 0; + v6 = *(_DWORD *)(v5 - 12); + *this = &unk_533A9C; + this[62] = 0; + this[31] = &unk_533AB0; + this[63] = 0; + this[64] = 0; + v10 = (char *)a2 + v6; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); + std::wios::_M_cache_locale(v2, (int)(this + 58)); + this[61] = 0; + v7 = *((_DWORD *)v10 + 28); + *((_DWORD *)v10 + 28) = 0; + this[59] = v7; + *((_WORD *)this + 120) = *((_WORD *)v10 + 58); + *((_BYTE *)this + 242) = v10[118]; + a2[1] = 0; + *this = &off_5387A0; + this[31] = off_5387C8; + this[2] = off_5387B4; + result = std::wfilebuf::basic_filebuf((int)(this + 3), (int)(a2 + 3)); + this[61] = this + 3; + return result; +} +// 4C3ACC: variable 'v9' is possibly undefined +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); + +//----- (004C3B90) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 31); + std::ios_base::ios_base(this + 31); + *((_BYTE *)this + 242) = 0; + this[59] = 0; + *((_WORD *)this + 120) = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + this[64] = 0; + *this = &unk_533A9C; + this[31] = &unk_533AB0; + this[1] = 0; + std::wios::init(v3, 0); + this[2] = &unk_533B00; + this[31] = &unk_533B14; + std::wios::init(v3, 0); + *this = &off_5387A0; + this[31] = off_5387C8; + this[2] = off_5387B4; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init(v3, (int)(this + 3)); + v5 = std::wfilebuf::open((int)(this + 3), a2, a3); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); + +//----- (004C3D00) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 31); + std::ios_base::ios_base(this + 31); + *((_BYTE *)this + 242) = 0; + this[59] = 0; + *((_WORD *)this + 120) = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + this[64] = 0; + *this = &unk_533A9C; + this[31] = &unk_533AB0; + this[1] = 0; + std::wios::init(v3, 0); + this[2] = &unk_533B00; + this[31] = &unk_533B14; + std::wios::init(v3, 0); + *this = &off_5387A0; + this[31] = off_5387C8; + this[2] = off_5387B4; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init(v3, (int)(this + 3)); + v5 = std::wfilebuf::open((int)(this + 3), a2, a3); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); + +//----- (004C3E70) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 31); + std::ios_base::ios_base(this + 31); + *((_BYTE *)this + 242) = 0; + this[59] = 0; + *((_WORD *)this + 120) = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + this[64] = 0; + *this = &unk_533A9C; + this[31] = &unk_533AB0; + this[1] = 0; + std::wios::init(v3, 0); + this[2] = &unk_533B00; + this[31] = &unk_533B14; + std::wios::init(v3, 0); + *this = &off_5387A0; + this[31] = off_5387C8; + this[2] = off_5387B4; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init(v3, (int)(this + 3)); + v5 = std::wfilebuf::open((int)(this + 3), *a2, a3); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); + +//----- (004C3FE0) -------------------------------------------------------- +BOOL __fastcall std::wfstream::basic_fstream(int a1) +{ + int v1; // esi + + v1 = a1 + 124; + std::ios_base::ios_base((_DWORD *)(a1 + 124)); + *(_BYTE *)(a1 + 242) = 0; + *(_DWORD *)(a1 + 236) = 0; + *(_WORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)(a1 + 252) = 0; + *(_DWORD *)(a1 + 256) = 0; + *(_DWORD *)a1 = &unk_533A9C; + *(_DWORD *)(a1 + 124) = &unk_533AB0; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_533B00; + *(_DWORD *)(a1 + 124) = &unk_533B14; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_5387A0; + *(_DWORD *)(a1 + 124) = off_5387C8; + *(_DWORD *)(a1 + 8) = off_5387B4; + std::wfilebuf::basic_filebuf(a1 + 12); + return std::wios::init(v1, a1 + 12); +} +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); + +//----- (004C4100) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edx + char v6; // al + int v7; // edx + int v8; // eax + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int result; // eax + std::ios_base *v14; // [esp+4h] [ebp-34h] + std::ios_base *v15; // [esp+18h] [ebp-20h] + int v16; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = a3[1]; + v16 = (int)this + *(_DWORD *)(v4 - 12); + v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v16, v15, v14); + std::wios::_M_cache_locale((_DWORD *)v16, v16 + 108); + v5 = *((_DWORD *)v15 + 28); + *((_DWORD *)v15 + 28) = 0; + *(_DWORD *)(v16 + 120) = 0; + *(_DWORD *)(v16 + 112) = v5; + v6 = *((_BYTE *)v15 + 118); + *(_WORD *)(v16 + 116) = *((_WORD *)v15 + 58); + v7 = a2[5]; + *(_BYTE *)(v16 + 118) = v6; + v8 = a2[4]; + a3[1] = 0; + this[2] = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v7; + v9 = a2[1]; + v10 = a2[6]; + *this = v9; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; + this[2] = a2[7]; + v11 = *a2; + v12 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3), (int)(a3 + 3)); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)(this + 3); + return result; +} +// 4C413D: variable 'v14' is possibly undefined + +//----- (004C4220) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4) +{ + int v5; // eax + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + _DWORD *v13; // ecx + + v5 = a2[2]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = a2[4]; + this[2] = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); + *v7 = a2[5]; + std::wios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *this = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[7]; + v10 = *a2; + v11 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); + v12 = std::wfilebuf::open((int)(this + 3), a3, a4); + v13 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v12 ) + return std::wios::clear(v13, 0); + else + return std::wios::clear(v13, v13[5] | 4); +} + +//----- (004C4370) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4) +{ + int v5; // eax + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + _DWORD *v13; // ecx + + v5 = a2[2]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = a2[4]; + this[2] = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); + *v7 = a2[5]; + std::wios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *this = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[7]; + v10 = *a2; + v11 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); + v12 = std::wfilebuf::open((int)(this + 3), a3, a4); + v13 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v12 ) + return std::wios::clear(v13, 0); + else + return std::wios::clear(v13, v13[5] | 4); +} + +//----- (004C44C0) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4) +{ + int v5; // eax + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + _DWORD *v13; // ecx + + v5 = a2[2]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = a2[4]; + this[2] = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); + *v7 = a2[5]; + std::wios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *this = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[7]; + v10 = *a2; + v11 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); + v12 = std::wfilebuf::open((int)(this + 3), *a3, a4); + v13 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v12 ) + return std::wios::clear(v13, 0); + else + return std::wios::clear(v13, v13[5] | 4); +} + +//----- (004C4610) -------------------------------------------------------- +BOOL __thiscall std::wfstream::basic_fstream(int *this, int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // edx + + v3 = a2[2]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[4]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[5]; + std::wios::init((int)v5, 0); + v6 = a2[1]; + v7 = a2[6]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = a2[7]; + v8 = *a2; + v9 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3)); + return std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); +} + +//----- (004C4710) -------------------------------------------------------- +void __fastcall std::wfstream::~wfstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 3; + *(v2 - 3) = &off_5387A0; + v2[28] = off_5387C8; + *(v2 - 1) = off_5387B4; + *v2 = &off_538720; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 13); + a1[3] = &off_538A88; + std::locale::~locale((_DWORD **)a1 + 10); + a1[2] = &unk_533B00; + *a1 = &unk_533A9C; + a1[1] = 0; + a1[31] = &off_539484; + std::ios_base::~ios_base((int)(a1 + 31)); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004C4790) -------------------------------------------------------- +void __fastcall std::wfstream::~wfstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 12); + *(v2 - 3) = &off_5387A0; + v2[28] = off_5387C8; + *(v2 - 1) = off_5387B4; + *v2 = &off_538720; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 52); + *(_DWORD *)(a1 + 12) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 40)); + *(_DWORD *)(a1 + 8) = &unk_533B00; + *(_DWORD *)a1 = &unk_533A9C; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 124) = &off_539484; + std::ios_base::~ios_base(a1 + 124); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004C4810) -------------------------------------------------------- +int __thiscall std::wfstream::~wfstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // eax + int result; // eax + + v3 = this + 3; + v4 = *a2; + *(v3 - 3) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 12) = a2[8]; + v5 = a2[9]; + *v3 = &off_538720; + *(v3 - 1) = v5; + std::wfilebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 13); + this[3] = &off_538A88; + std::locale::~locale((_DWORD **)this + 10); + v6 = a2[1]; + *this = v6; + *(_DWORD *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[6]; + this[2] = a2[7]; + v7 = a2[4]; + this[2] = v7; + *(_DWORD *)((char *)this + *(_DWORD *)(v7 - 12) + 8) = a2[5]; + v8 = a2[2]; + *this = v8; + result = *(_DWORD *)(v8 - 12); + *(_DWORD *)((char *)this + result) = a2[3]; + this[1] = 0; + return result; +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004C48B0) -------------------------------------------------------- +_DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + std::wfilebuf::operator=((int)(this + 3), (int)(a2 + 3)); + return this; +} +// 4C48D4: variable 'v9' is possibly undefined + +//----- (004C4950) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 48))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C4950: using guessed type int var_1C[7]; + +//----- (004C4A80) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 8))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C4A80: using guessed type int var_1C[7]; + +//----- (004C4BB0) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 40))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C4BB0: using guessed type int var_1C[7]; + +//----- (004C4CE0) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 44))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C4CE0: using guessed type int var_1C[7]; + +//----- (004C4E10) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 36))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C4E10: using guessed type int var_1C[7]; + +//----- (004C4F40) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 20))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C4F40: using guessed type int var_1C[7]; + +//----- (004C5070) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C5070: using guessed type int var_1C[7]; + +//----- (004C51A0) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 24))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C51A0: using guessed type int var_1C[7]; + +//----- (004C52D0) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 16))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C52D0: using guessed type int var_1C[7]; + +//----- (004C5400) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 28))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C5400: using guessed type int var_1C[7]; + +//----- (004C5530) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 32))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4C5530: using guessed type int var_1C[7]; + +//----- (004C5660) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3) +{ + int v4; // ecx + __int16 v5; // ax + + v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); + if ( !v4 ) + std::__throw_bad_cast(); + v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); + return std::wistream::get(this, a2, a3, v5); +} + +//----- (004C56B0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4) +{ + int v6; // ecx + int v8; // eax + _DWORD *v9; // ebx + __int16 *v10; // eax + __int16 v11; // ax + int v12; // edx + __int16 v13; // ax + __int16 *v14; // eax + __int16 *v15; // edx + int v16; // edx + char v17[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v17, this, 1); + if ( !v17[0] ) + { + v6 = this[1]; +LABEL_3: + if ( a3 > 0 ) + *a2 = 0; + if ( v6 ) + return this; + v8 = 4; + goto LABEL_8; + } + v9 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v10 = (__int16 *)v9[2]; + if ( v9[3] <= (unsigned int)v10 ) + v11 = (*(int (__fastcall **)(_DWORD))(*v9 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v11 = *v10; + v6 = this[1]; + v12 = v6 + 1; + if ( a3 <= v6 + 1 ) + { +LABEL_26: + if ( v11 != -1 ) + goto LABEL_3; +LABEL_27: + if ( a3 > 0 ) + *a2 = 0; + v8 = 6; + if ( !v6 ) + goto LABEL_8; +LABEL_30: + v8 = 2; + goto LABEL_8; + } + if ( v11 == -1 ) + goto LABEL_27; + if ( a4 == v11 ) + goto LABEL_3; + while ( 1 ) + { + *a2++ = v11; + this[1] = v12; + v15 = (__int16 *)v9[2]; + if ( (unsigned int)v15 < v9[3] ) + { + v13 = *v15; + v9[2] = v15 + 1; + if ( v13 == -1 ) + goto LABEL_22; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v9 + 40))(v9) == 0xFFFF ) + { +LABEL_22: + v16 = this[1]; + if ( a3 > 0 ) + { + *a2 = 0; + v8 = 2; + if ( v16 ) + goto LABEL_8; + goto LABEL_24; + } + if ( !v16 ) + { + v8 = 6; + goto LABEL_8; + } + goto LABEL_30; + } + v14 = (__int16 *)v9[2]; + if ( (unsigned int)v14 >= v9[3] ) + { + v11 = (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9); + v6 = this[1]; + v12 = v6 + 1; + if ( v6 + 1 >= a3 ) + goto LABEL_26; + } + else + { + v6 = this[1]; + v11 = *v14; + v12 = v6 + 1; + if ( v6 + 1 >= a3 ) + goto LABEL_26; + } + if ( v11 == -1 ) + break; + if ( a4 == v11 ) + { + v8 = 0; + goto LABEL_32; + } + } + v8 = 2; +LABEL_32: + if ( a3 > 0 ) + *a2 = 0; + if ( !v6 ) + { +LABEL_24: + v8 |= 4u; + goto LABEL_8; + } + if ( v8 ) + { +LABEL_8: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8); + return this; + } + return this; +} +// 4C56B0: using guessed type char var_1D[29]; + +//----- (004C5950) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2) +{ + int v3; // ecx + __int16 v4; // ax + + v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); + if ( !v3 ) + std::__throw_bad_cast(); + v4 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 10); + return std::wistream::get(this, a2, v4); +} + +//----- (004C59A0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3) +{ + _DWORD *v4; // ebx + unsigned __int16 *v5; // eax + unsigned __int16 v6; // ax + __int16 *v7; // edx + __int16 v8; // ax + _WORD *v9; // eax + unsigned __int16 *v10; // edx + int v11; // eax + char v13[25]; // [esp+2Fh] [ebp-19h] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v13, this, 1); + if ( v13[0] ) + { + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v5 = (unsigned __int16 *)v4[2]; + if ( v4[3] <= (unsigned int)v5 ) + v6 = (*(int (__fastcall **)(_DWORD))(*v4 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v6 = *v5; + if ( v6 != 0xFFFF ) + { + if ( v6 == a3 ) + goto LABEL_17; + while ( 1 ) + { + v10 = (unsigned __int16 *)a2[5]; + if ( (unsigned int)v10 < a2[6] ) + { + *v10 = v6; + a2[5] = v10 + 1; + } + else if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, v6) == 0xFFFF ) + { + goto LABEL_17; + } + ++this[1]; + v7 = (__int16 *)v4[2]; + if ( (unsigned int)v7 >= v4[3] ) + { + v8 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); + } + else + { + v8 = *v7; + v4[2] = v7 + 1; + } + if ( v8 == -1 ) + break; + v9 = (_WORD *)v4[2]; + v6 = (unsigned int)v9 >= v4[3] ? (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4) : *v9; + if ( v6 == 0xFFFF ) + break; + if ( a3 == v6 ) + goto LABEL_17; + } + } + v11 = this[1] == 0 ? 6 : 2; + goto LABEL_19; + } +LABEL_17: + if ( !this[1] ) + { + v11 = 4; +LABEL_19: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v11); + } + return this; +} +// 4C59A0: using guessed type char var_19[25]; + +//----- (004C5B60) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2) +{ + _DWORD *v3; // ecx + __int16 *v4; // edx + __int16 v5; // ax + int v7; // eax + char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v8, this, 1); + if ( v8[0] ) + { + v3 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v4 = (__int16 *)v3[2]; + if ( v3[3] <= (unsigned int)v4 ) + { + v5 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); + } + else + { + v5 = *v4; + v3[2] = v4 + 1; + } + if ( v5 != -1 ) + { + this[1] = 1; + *a2 = v5; + return this; + } + v7 = this[1] == 0 ? 6 : 2; + } + else + { + if ( this[1] ) + return this; + v7 = 4; + } + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7); + return this; +} +// 4C5B60: using guessed type char var_D[13]; + +//----- (004C5C80) -------------------------------------------------------- +int __fastcall std::wistream::get(_DWORD *a1) +{ + _DWORD *v2; // ecx + unsigned __int16 *v3; // edx + int result; // eax + int v5; // eax + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + a1[1] = 0; + std::wistream::sentry::sentry(v6, a1, 1); + if ( v6[0] ) + { + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (unsigned __int16 *)v2[2]; + if ( v2[3] <= (unsigned int)v3 ) + { + result = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + } + else + { + result = *v3; + v2[2] = v3 + 1; + } + if ( (_WORD)result != 0xFFFF ) + { + a1[1] = 1; + return result; + } + v5 = a1[1] == 0 ? 6 : 2; + } + else + { + if ( a1[1] ) + return -1; + v5 = 4; + } + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v5); + return -1; +} +// 4C5C80: using guessed type char var_D[13]; + +//----- (004C5D90) -------------------------------------------------------- +int __fastcall std::wistream::peek(_DWORD *a1) +{ + _DWORD *v2; // ecx + unsigned __int16 *v3; // eax + int result; // eax + int v5; // [esp+1Ch] [ebp-20h] + char v6[13]; // [esp+2Fh] [ebp-Dh] BYREF + + a1[1] = 0; + std::wistream::sentry::sentry(v6, a1, 1); + if ( !v6[0] ) + return -1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (unsigned __int16 *)v2[2]; + if ( v2[3] <= (unsigned int)v3 ) + result = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); + else + result = *v3; + if ( (_WORD)result == 0xFFFF ) + { + v5 = result; + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); + return v5; + } + return result; +} +// 4C5D90: using guessed type char var_D[13]; + +//----- (004C5E80) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3) +{ + int v4; // eax + char v6[5]; // [esp+1Fh] [ebp-9h] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v6, this, 1); + if ( !v6[0] ) + return this; + v4 = (*(int (__stdcall **)(int, int))(**(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120) + 32))(a2, a3); + this[1] = v4; + if ( a3 == v4 ) + return this; + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 6); + return this; +} +// 4C5E80: using guessed type char var_9[5]; + +//----- (004C5F70) -------------------------------------------------------- +int __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + result = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = result; + return result; +} +// 4C5F91: variable 'v8' is possibly undefined + +//----- (004C6000) -------------------------------------------------------- +int __fastcall std::wistream::sync(_DWORD *a1) +{ + int v2; // ecx + char v4[13]; // [esp+2Fh] [ebp-Dh] BYREF + + std::wistream::sentry::sentry(v4, a1, 1); + if ( !v4[0] ) + return -1; + v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + if ( !v2 ) + return -1; + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) + return 0; + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return -1; +} +// 4C6000: using guessed type char var_D[13]; + +//----- (004C60E0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5) +{ + char *v6; // edi + int *v7; // eax + int v8; // edi + char v10; // [esp+3Fh] [ebp-39h] BYREF + int v11[14]; // [esp+40h] [ebp-38h] BYREF + + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); + std::wistream::sentry::sentry(&v10, this, 1); + if ( v10 ) + { + v6 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v6[20] & 5) == 0 ) + { + v7 = (int *)*((_DWORD *)v6 + 30); + v11[7] = a5; + v8 = *v7; + v11[4] = a2; + v11[6] = a4; + v11[5] = a3; + (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v11, v7, a2, a3, a4, a5, 8); + if ( (v11[0] & v11[1]) == -1 ) + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + } + } + return this; +} + +//----- (004C6230) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4) +{ + char *v5; // edx + char v7; // [esp+2Fh] [ebp-29h] BYREF + int v8[10]; // [esp+30h] [ebp-28h] BYREF + + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); + std::wistream::sentry::sentry(&v7, this, 1); + if ( v7 ) + { + v5 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v5[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( + v8, + *((_DWORD *)v5 + 30), + a2, + a3, + a4, + 8); + if ( (v8[0] & v8[1]) == -1 ) + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + } + } + return this; +} + +//----- (004C6350) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2) +{ + char *v3; // edx + char v5; // [esp+2Fh] [ebp-19h] BYREF + int v6[6]; // [esp+30h] [ebp-18h] BYREF + + *this = -1; + this[1] = -1; + this[2] = 0; + std::wistream::sentry::sentry(&v5, a2, 1); + if ( v5 ) + { + v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); + if ( (v3[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( + v6, + *((_DWORD *)v3 + 30), + 0, + 0, + 1, + 8); + *this = v6[0]; + this[1] = v6[1]; + this[2] = v6[2]; + } + } + return this; +} + +//----- (004C6450) -------------------------------------------------------- +int *__fastcall std::wistream::unget(int *a1) +{ + int v2; // eax + _DWORD *v3; // ecx + _DWORD *v4; // eax + unsigned int v5; // eax + unsigned int v6; // edx + __int16 v7; // ax + char v9[5]; // [esp+1Fh] [ebp-9h] BYREF + + v2 = *a1; + a1[1] = 0; + std::wios::clear( + (int *)((char *)a1 + *(_DWORD *)(v2 - 12)), + *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); + std::wistream::sentry::sentry(v9, a1, 1); + if ( !v9[0] ) + return a1; + v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + if ( v3 ) + { + v5 = v3[2]; + if ( v3[1] >= v5 ) + { + v7 = (*(int (__stdcall **)(int))(*v3 + 44))(0xFFFF); + } + else + { + v6 = v5 - 2; + v7 = *(_WORD *)(v5 - 2); + v3[2] = v6; + } + if ( v7 != -1 ) + return a1; + v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + } + std::wios::clear(v4, v4[5] | 1); + return a1; +} +// 4C6450: using guessed type char var_9[5]; + +//----- (004C6570) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2) +{ + _DWORD *v3; // edi + __int16 *v4; // eax + __int16 v5; // ax + signed int i; // edx + __int16 *v7; // ecx + int v8; // eax + __int16 *v9; // ecx + __int16 v11; // ax + __int16 *v12; // eax + char v13; // [esp+1Ah] [ebp-32h] + char v14; // [esp+1Bh] [ebp-31h] + unsigned int v15; // [esp+1Ch] [ebp-30h] + char v16[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + if ( a2 != 1 ) + { + this[1] = 0; + std::wistream::sentry::sentry(v16, this, 1); + if ( a2 <= 0 ) + return this; + v13 = v16[0]; + if ( !v16[0] ) + return this; + v3 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v4 = (__int16 *)v3[2]; + if ( (unsigned int)v4 >= v3[3] ) + v5 = (*(int (__fastcall **)(_DWORD))(*v3 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v5 = *v4; + v14 = 0; +LABEL_7: + for ( i = this[1]; a2 <= i; i = 0x80000000 ) + { +LABEL_14: + if ( a2 != 0x7FFFFFFF ) + { + if ( v14 ) + this[1] = 0x7FFFFFFF; + if ( v5 != -1 ) + return this; +LABEL_29: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); + return this; + } + if ( v5 == -1 ) + goto LABEL_27; + this[1] = 0x80000000; + v14 = v13; + } + while ( v5 != -1 ) + { + v7 = (__int16 *)v3[2]; + v15 = v3[3]; + v8 = (int)(v15 - (_DWORD)v7) >> 1; + if ( v8 > a2 - i ) + v8 = a2 - i; + if ( v8 <= 1 ) + { + this[1] = i + 1; + if ( v15 <= (unsigned int)v7 ) + { + v11 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); + } + else + { + v11 = *v7; + v3[2] = v7 + 1; + } + if ( v11 != -1 ) + { + v12 = (__int16 *)v3[2]; + if ( (unsigned int)v12 < v3[3] ) + { + v5 = *v12; + i = this[1]; + goto LABEL_7; + } +LABEL_30: + v5 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + i = this[1]; + goto LABEL_7; + } + break; + } + v9 = &v7[v8]; + i += v8; + v3[2] = v9; + this[1] = i; + if ( v15 <= (unsigned int)v9 ) + goto LABEL_30; + v5 = *v9; + if ( a2 <= i ) + goto LABEL_14; + } +LABEL_27: + if ( v14 ) + this[1] = 0x7FFFFFFF; + goto LABEL_29; + } + return std::wistream::ignore(this); +} +// 5069EC: using guessed type int __stdcall std::wistream::ignore(_DWORD); +// 4C6570: using guessed type char var_1D[29]; + +//----- (004C6710) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, wchar_t C) +{ + _DWORD *v4; // ebp + __int16 *v5; // eax + __int16 v6; // ax + signed int i; // edx + const wchar_t *S; // ecx + int N; // edi + wchar_t *v10; // eax + int v11; // edx + __int16 *v12; // eax + int v13; // edi + unsigned int v15; // eax + wchar_t v16; // ax + __int16 *v17; // eax + char v18; // [esp+16h] [ebp-36h] + char v19; // [esp+17h] [ebp-35h] + unsigned int v20; // [esp+1Ch] [ebp-30h] + char v21[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + if ( C == 0xFFFF ) + return std::wistream::ignore(this, a2); + this[1] = 0; + std::wistream::sentry::sentry(v21, this, 1); + if ( a2 <= 0 ) + return this; + v19 = v21[0]; + if ( !v21[0] ) + return this; + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v5 = (__int16 *)v4[2]; + if ( v4[3] <= (unsigned int)v5 ) + v6 = (*(int (__fastcall **)(_DWORD))(*v4 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v6 = *v5; + v18 = 0; + for ( i = this[1]; ; i = 0x80000000 ) + { +LABEL_7: + if ( a2 > i ) + { + while ( v6 != -1 ) + { + if ( v6 == C ) + { + if ( a2 == 0x7FFFFFFF ) + { + if ( !v18 ) + goto LABEL_31; + goto LABEL_26; + } + if ( v18 ) + goto LABEL_26; + goto LABEL_29; + } + S = (const wchar_t *)v4[2]; + v20 = v4[3]; + N = (int)(v20 - (_DWORD)S) >> 1; + if ( N > a2 - i ) + N = a2 - i; + if ( N <= 1 ) + { + this[1] = ++i; + if ( v20 <= (unsigned int)S ) + { + v16 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); + } + else + { + v16 = *S; + v4[2] = S + 1; + } + if ( v16 != 0xFFFF ) + { + v17 = (__int16 *)v4[2]; + if ( (unsigned int)v17 < v4[3] ) + { + v6 = *v17; + i = this[1]; + goto LABEL_7; + } +LABEL_42: + v6 = (*(int (__fastcall **)(_DWORD *, signed int))(*v4 + 36))(v4, i); + i = this[1]; + goto LABEL_7; + } + break; + } + v10 = wmemchr(S, C, N); + v11 = v4[2]; + if ( v10 ) + N = ((int)v10 - v11) >> 1; + v12 = (__int16 *)(v11 + 2 * N); + v13 = this[1] + N; + v4[2] = v12; + i = v13; + this[1] = v13; + if ( v4[3] <= (unsigned int)v12 ) + goto LABEL_42; + v6 = *v12; + if ( a2 <= v13 ) + goto LABEL_17; + } +LABEL_39: + if ( v18 ) + this[1] = 0x7FFFFFFF; + goto LABEL_41; + } +LABEL_17: + if ( a2 != 0x7FFFFFFF ) + { + if ( v18 ) + goto LABEL_26; + goto LABEL_27; + } + if ( v6 == -1 ) + goto LABEL_39; + if ( v6 == C ) + break; + this[1] = 0x80000000; + v18 = v19; + } + if ( !v18 ) + goto LABEL_30; +LABEL_26: + this[1] = 0x7FFFFFFF; +LABEL_27: + if ( v6 == -1 ) + { +LABEL_41: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); + return this; + } + if ( C != v6 ) + return this; +LABEL_29: + i = this[1]; +LABEL_30: + if ( i != 0x7FFFFFFF ) +LABEL_31: + this[1] = i + 1; + v15 = v4[2]; + if ( v15 >= v4[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*v4 + 40))(v4); + return this; + } + v4[2] = v15 + 2; + return this; +} +// 4C6945: variable 'i' is possibly undefined +// 5063E8: using guessed type int __stdcall std::wistream::ignore(_DWORD, _DWORD); +// 4C6710: using guessed type char var_1D[29]; + +//----- (004C69A0) -------------------------------------------------------- +_DWORD *__fastcall std::wistream::ignore(_DWORD *a1) +{ + _DWORD *v2; // ecx + __int16 *v3; // edx + __int16 v4; // ax + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + a1[1] = 0; + std::wistream::sentry::sentry(v6, a1, 1); + if ( !v6[0] ) + return a1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (__int16 *)v2[2]; + if ( v2[3] <= (unsigned int)v3 ) + { + v4 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + } + else + { + v4 = *v3; + v2[2] = v3 + 1; + } + if ( v4 != -1 ) + { + a1[1] = 1; + return a1; + } + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); + return a1; +} +// 4C69A0: using guessed type char var_D[13]; + +//----- (004C6AA0) -------------------------------------------------------- +int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) +{ + char *v4; // ecx + int result; // eax + _DWORD *v6; // ebx + unsigned __int16 *v7; // eax + unsigned __int16 v8; // ax + __int16 v9; // ax + unsigned __int16 *v10; // eax + __int16 *v11; // edx + int v12; // [esp+1Ch] [ebp-1Ch] + + *this = 0; + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + result = *((_DWORD *)v4 + 5); + if ( result ) + return std::wios::clear(v4, result | 4); + result = *((_DWORD *)v4 + 28); + if ( !result ) + { + if ( a3 || (v4[13] & 0x10) == 0 ) + { + *this = 1; + return result; + } + goto LABEL_5; + } + std::wostream::flush(*((_DWORD **)v4 + 28)); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + if ( !a3 && (v4[13] & 0x10) != 0 ) + { +LABEL_5: + v6 = (_DWORD *)*((_DWORD *)v4 + 30); + v7 = (unsigned __int16 *)v6[2]; + if ( v6[3] <= (unsigned int)v7 ) + { + v8 = (*(int (__fastcall **)(_DWORD))(*v6 + 36))(*((_DWORD *)v4 + 30)); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + else + { + v8 = *v7; + } + v12 = *((_DWORD *)v4 + 31); + if ( !v12 ) + std::__throw_bad_cast(); + if ( v8 == 0xFFFF ) + { +LABEL_18: + result = *((_DWORD *)v4 + 5) | 2; + return std::wios::clear(v4, result | 4); + } + while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, v8) ) + { + v11 = (__int16 *)v6[2]; + if ( (unsigned int)v11 < v6[3] ) + { + v9 = *v11; + v6[2] = v11 + 1; + if ( v9 == -1 ) + goto LABEL_17; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == 0xFFFF ) + { + goto LABEL_17; + } + v10 = (unsigned __int16 *)v6[2]; + if ( (unsigned int)v10 >= v6[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + else + v8 = *v10; + if ( v8 == 0xFFFF ) + { +LABEL_17: + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + goto LABEL_18; + } + } + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + result = *((_DWORD *)v4 + 5); + if ( result ) + return std::wios::clear(v4, result | 4); + *this = 1; + return result; +} + +//----- (004C6C80) -------------------------------------------------------- +int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) +{ + char *v4; // ecx + int result; // eax + _DWORD *v6; // ebx + unsigned __int16 *v7; // eax + unsigned __int16 v8; // ax + __int16 v9; // ax + unsigned __int16 *v10; // eax + __int16 *v11; // edx + int v12; // [esp+1Ch] [ebp-1Ch] + + *this = 0; + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + result = *((_DWORD *)v4 + 5); + if ( result ) + return std::wios::clear(v4, result | 4); + result = *((_DWORD *)v4 + 28); + if ( !result ) + { + if ( a3 || (v4[13] & 0x10) == 0 ) + { + *this = 1; + return result; + } + goto LABEL_5; + } + std::wostream::flush(*((_DWORD **)v4 + 28)); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + if ( !a3 && (v4[13] & 0x10) != 0 ) + { +LABEL_5: + v6 = (_DWORD *)*((_DWORD *)v4 + 30); + v7 = (unsigned __int16 *)v6[2]; + if ( v6[3] <= (unsigned int)v7 ) + { + v8 = (*(int (__fastcall **)(_DWORD))(*v6 + 36))(*((_DWORD *)v4 + 30)); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + else + { + v8 = *v7; + } + v12 = *((_DWORD *)v4 + 31); + if ( !v12 ) + std::__throw_bad_cast(); + if ( v8 == 0xFFFF ) + { +LABEL_18: + result = *((_DWORD *)v4 + 5) | 2; + return std::wios::clear(v4, result | 4); + } + while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, v8) ) + { + v11 = (__int16 *)v6[2]; + if ( (unsigned int)v11 < v6[3] ) + { + v9 = *v11; + v6[2] = v11 + 1; + if ( v9 == -1 ) + goto LABEL_17; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == 0xFFFF ) + { + goto LABEL_17; + } + v10 = (unsigned __int16 *)v6[2]; + if ( (unsigned int)v10 >= v6[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + else + v8 = *v10; + if ( v8 == 0xFFFF ) + { +LABEL_17: + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + goto LABEL_18; + } + } + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + result = *((_DWORD *)v4 + 5); + if ( result ) + return std::wios::clear(v4, result | 4); + *this = 1; + return result; +} + +//----- (004C6E60) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3) +{ + int v4; // ecx + wchar_t v5; // ax + + v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); + if ( !v4 ) + std::__throw_bad_cast(); + v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); + return std::wistream::getline(this, S1, a3, v5); +} + +//----- (004C6EB0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3, wchar_t C) +{ + int v5; // esi + int v6; // eax + int v8; // esi + wchar_t *v9; // eax + wchar_t v10; // ax + int v11; // ebx + size_t v12; // edi + wchar_t *v13; // eax + int v14; // edx + int N; // ebx + int v16; // edi + wchar_t *v17; // edx + const wchar_t *S; // ecx + wchar_t v19; // ax + wchar_t *v20; // eax + unsigned int v21; // eax + int v22; // esi + int v23; // [esp+18h] [ebp-44h] + unsigned int v24; // [esp+1Ch] [ebp-40h] + wchar_t *v25; // [esp+24h] [ebp-38h] + char v26[29]; // [esp+3Fh] [ebp-1Dh] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v26, this, 1); + if ( !v26[0] ) + { + v5 = this[1]; + v23 = v5; + if ( a3 > 0 ) + { + *S1 = 0; + if ( !v5 ) + { +LABEL_4: + v6 = 4; + goto LABEL_5; + } + return this; + } + goto LABEL_6; + } + v8 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); + v9 = *(wchar_t **)(v8 + 8); + if ( (unsigned int)v9 >= *(_DWORD *)(v8 + 12) ) + v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v8 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v10 = *v9; + v11 = this[1]; + v23 = v11 + 1; + if ( v11 + 1 < a3 ) + { + if ( v10 != 0xFFFF ) + { + if ( v10 == C ) + { +LABEL_42: + v21 = *(_DWORD *)(v8 + 8); + this[1] = v23; + if ( v21 >= *(_DWORD *)(v8 + 12) ) + { + (*(void (__fastcall **)(int))(*(_DWORD *)v8 + 40))(v8); + v22 = this[1]; + v23 = v22; + if ( a3 > 0 ) + { + *S1 = 0; + if ( !v22 ) + goto LABEL_4; + return this; + } + } + else + { + *(_DWORD *)(v8 + 8) = v21 + 2; + if ( a3 > 0 ) + { + *S1 = 0; + if ( !v23 ) + goto LABEL_4; + return this; + } + } +LABEL_6: + if ( !v23 ) + goto LABEL_4; + return this; + } + while ( 1 ) + { + S = *(const wchar_t **)(v8 + 8); + v24 = *(_DWORD *)(v8 + 12); + N = a3 - v11 - 1; + if ( N > (int)(v24 - (_DWORD)S) >> 1 ) + N = (int)(v24 - (_DWORD)S) >> 1; + if ( N > 1 ) + break; + v25 = S1 + 1; + *S1 = v10; + this[1] = v23; + if ( v24 <= (unsigned int)S ) + { + v19 = (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 40))(v8); + } + else + { + v19 = *S; + *(_DWORD *)(v8 + 8) = S + 1; + } + if ( v19 == 0xFFFF ) + { + v11 = this[1]; + goto LABEL_36; + } + v20 = *(wchar_t **)(v8 + 8); + if ( (unsigned int)v20 >= *(_DWORD *)(v8 + 12) ) + { + v10 = (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 36))(v8); + v11 = this[1]; + ++S1; + goto LABEL_18; + } + v11 = this[1]; + v10 = *v20; + ++S1; + v23 = v11 + 1; + if ( v11 + 1 >= a3 ) + goto LABEL_29; +LABEL_19: + if ( v10 == 0xFFFF ) + { + v25 = S1; +LABEL_36: + v6 = 2; + if ( a3 > 0 ) + *v25 = 0; +LABEL_38: + if ( !v11 ) + v6 |= 4u; + goto LABEL_5; + } + if ( C == v10 ) + goto LABEL_42; + } + v12 = N; + v13 = wmemchr(S, C, N); + v14 = *(_DWORD *)(v8 + 8); + if ( !v13 || (N = ((int)v13 - v14) >> 1, (v12 = N) != 0) ) + { + wmemcpy(S1, *(const wchar_t **)(v8 + 8), v12); + v14 = *(_DWORD *)(v8 + 8); + } + v16 = 2 * v12; + v11 = this[1] + N; + S1 = (wchar_t *)((char *)S1 + v16); + v17 = (wchar_t *)(v16 + v14); + *(_DWORD *)(v8 + 8) = v17; + this[1] = v11; + if ( *(_DWORD *)(v8 + 12) <= (unsigned int)v17 ) + { + v10 = (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 36))(v8); + v11 = this[1]; + } + else + { + v10 = *v17; + } +LABEL_18: + v23 = v11 + 1; + if ( v11 + 1 >= a3 ) + goto LABEL_29; + goto LABEL_19; + } + if ( a3 > 0 ) + { +LABEL_53: + *S1 = 0; + v6 = 2; + if ( !v11 ) + v6 = 6; + goto LABEL_5; + } +LABEL_56: + v6 = 2; + goto LABEL_38; + } +LABEL_29: + if ( v10 == 0xFFFF ) + { + v11 = this[1]; + if ( a3 > 0 ) + goto LABEL_53; + goto LABEL_56; + } + if ( v10 == C ) + goto LABEL_42; + v11 = this[1]; + if ( a3 <= 0 ) + { + v6 = 4; + goto LABEL_38; + } + *S1 = 0; + v6 = 4; +LABEL_5: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v6); + return this; +} +// 4C723A: control flows out of bounds to 506354 +// 50634C: using guessed type int __stdcall std::wistream::getline(_DWORD, _DWORD, _DWORD); +// 4C6EB0: using guessed type char var_1D[29]; + +//----- (004C7250) -------------------------------------------------------- +int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2) +{ + int v3; // eax + _DWORD *v4; // ecx + _DWORD *v5; // eax + unsigned int v6; // edx + __int16 v7; // ax + char v9[9]; // [esp+1Fh] [ebp-9h] BYREF + + v3 = *this; + this[1] = 0; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v3 - 12)), + *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 20) & 0xFFFFFFFD); + std::wistream::sentry::sentry(v9, this, 1); + if ( !v9[0] ) + return this; + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v4 ) + { + v6 = v4[2]; + if ( v4[1] < v6 && (v7 = *(_WORD *)(v6 - 2), a2 == v7) ) + v4[2] = v6 - 2; + else + v7 = (*(int (__stdcall **)(_DWORD))(*v4 + 44))(a2); + if ( v7 != -1 ) + return this; + v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + } + std::wios::clear(v5, v5[5] | 1); + return this; +} +// 4C7250: using guessed type char var_9[9]; + +//----- (004C7380) -------------------------------------------------------- +int __thiscall std::wistream::readsome(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // ecx + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + char v9[5]; // [esp+1Fh] [ebp-9h] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v9, this, 1); + if ( !v9[0] ) + return this[1]; + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v5 = v4[3]; + v6 = v4[2]; + if ( v6 == v5 ) + v7 = (*(int (__fastcall **)(_DWORD *))(*v4 + 28))(v4); + else + v7 = (v5 - v6) >> 1; + if ( v7 <= 0 ) + { + if ( v7 == -1 ) + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); + return this[1]; + } + if ( v7 > a3 ) + v7 = a3; + result = (*(int (__stdcall **)(int, int))(**(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120) + 32))(a2, v7); + this[1] = result; + return result; +} +// 4C7380: using guessed type char var_9[5]; + +//----- (004C74B0) -------------------------------------------------------- +int __thiscall std::wistream::basic_istream(_DWORD *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + std::ios_base *v6; // esi + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + v10 = this + 2; + std::ios_base::ios_base(this + 2); + *((_BYTE *)this + 126) = 0; + *((_WORD *)this + 62) = 0; + v3 = a2[1]; + this[30] = 0; + this[1] = v3; + v4 = *a2; + this[32] = 0; + v5 = *(_DWORD *)(v4 - 12); + *this = &off_5387DC; + this[33] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[2] = off_5387F0; + this[34] = 0; + this[35] = 0; + std::ios_base::_M_move((int)v10, v6, v9); + std::wios::_M_cache_locale(v10, (int)(this + 29)); + this[32] = 0; + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[30] = v7; + *((_WORD *)this + 62) = *((_WORD *)v6 + 58); + result = *((unsigned __int8 *)v6 + 118); + a2[1] = 0; + *((_BYTE *)this + 126) = result; + return result; +} +// 4C7524: variable 'v9' is possibly undefined +// 5387DC: using guessed type int (*off_5387DC)(); +// 5387F0: using guessed type int (*off_5387F0[2])(); + +//----- (004C7590) -------------------------------------------------------- +BOOL __thiscall std::wistream::basic_istream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 2); + std::ios_base::ios_base(this + 2); + this[30] = 0; + *((_WORD *)this + 62) = 0; + *((_BYTE *)this + 126) = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + *this = &off_5387DC; + this[2] = off_5387F0; + this[1] = 0; + return std::wios::init(v2, a2); +} +// 5387DC: using guessed type int (*off_5387DC)(); +// 5387F0: using guessed type int (*off_5387F0[2])(); + +//----- (004C7630) -------------------------------------------------------- +BOOL __fastcall std::wistream::basic_istream(int a1) +{ + int v1; // esi + + v1 = a1 + 8; + std::ios_base::ios_base((_DWORD *)(a1 + 8)); + *(_DWORD *)(a1 + 120) = 0; + *(_WORD *)(a1 + 124) = 0; + *(_BYTE *)(a1 + 126) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)a1 = &off_5387DC; + *(_DWORD *)(a1 + 8) = off_5387F0; + *(_DWORD *)(a1 + 4) = 0; + return std::wios::init(v1, 0); +} +// 5387DC: using guessed type int (*off_5387DC)(); +// 5387F0: using guessed type int (*off_5387F0[2])(); + +//----- (004C76D0) -------------------------------------------------------- +int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3) +{ + int v3; // eax + int v4; // ebx + int v5; // edx + int v6; // ebx + std::ios_base *v7; // esi + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-18h] + + v3 = *a2; + v4 = a2[1]; + v5 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v5) = v4; + this[1] = a3[1]; + v6 = (int)this + *(_DWORD *)(v3 - 12); + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v6, v7, v10); + std::wios::_M_cache_locale((_DWORD *)v6, v6 + 108); + v8 = *((_DWORD *)v7 + 28); + *((_DWORD *)v7 + 28) = 0; + *(_DWORD *)(v6 + 112) = v8; + *(_WORD *)(v6 + 116) = *((_WORD *)v7 + 58); + result = *((unsigned __int8 *)v7 + 118); + *(_DWORD *)(v6 + 120) = 0; + *(_BYTE *)(v6 + 118) = result; + a3[1] = 0; + return result; +} +// 4C7700: variable 'v10' is possibly undefined + +//----- (004C7750) -------------------------------------------------------- +BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3) +{ + int v3; // eax + int v4; // ebx + int v5; // edx + + v3 = *a2; + v4 = a2[1]; + v5 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v5) = v4; + this[1] = 0; + return std::wios::init((int)this + *(_DWORD *)(v3 - 12), a3); +} + +//----- (004C7790) -------------------------------------------------------- +BOOL __thiscall std::wistream::basic_istream(int *this, int *a2) +{ + int v2; // eax + int v3; // ebx + int v4; // edx + + v2 = *a2; + v3 = a2[1]; + v4 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v4) = v3; + this[1] = 0; + return std::wios::init((int)this + *(_DWORD *)(v2 - 12), 0); +} + +//----- (004C77C0) -------------------------------------------------------- +void __fastcall std::wistream::~wistream(char *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 8; + *(v2 - 2) = &off_5387DC; + *(v2 - 1) = 0; + *v2 = &off_539484; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 5387DC: using guessed type int (*off_5387DC)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004C77F0) -------------------------------------------------------- +void __fastcall std::wistream::~wistream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_5387DC; + v1 = a1 + 2; + *(v1 - 1) = 0; + *v1 = &off_539484; + std::ios_base::~ios_base((int)v1); +} +// 5387DC: using guessed type int (*off_5387DC)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004C7810) -------------------------------------------------------- +int __thiscall std::wistream::~wistream(int *this, int *a2) +{ + int v2; // eax + int result; // eax + + v2 = *a2; + *this = *a2; + result = *(_DWORD *)(v2 - 12); + *(int *)((char *)this + result) = a2[1]; + this[1] = 0; + return result; +} + +//----- (004C7830) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return this; +} +// 4C7851: variable 'v9' is possibly undefined + +//----- (004C78C0) -------------------------------------------------------- +int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)) +{ + return a2(this); +} + +//----- (004C78D0) -------------------------------------------------------- +char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004C78F0) -------------------------------------------------------- +char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004C7910) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2) +{ + char *v3; // ecx + int v4; // eax + char v6; // [esp+1Eh] [ebp-Eh] BYREF + char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wistream::sentry::sentry(&v6, this, 0); + if ( !v6 ) + { + if ( !a2 ) + { + v4 = 4; + v3 = (char *)this + *(_DWORD *)(*this - 12); + goto LABEL_9; + } + return this; + } + v3 = (char *)this + *(_DWORD *)(*this - 12); + if ( !a2 ) + { + v4 = 4; + goto LABEL_9; + } + if ( !std::__copy_streambufs_eof>(*((_DWORD **)v3 + 30), a2, v7) ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = v7[0] == 0 ? 4 : 6; + goto LABEL_9; + } + if ( !v7[0] ) + return this; + v4 = 2; + v3 = (char *)this + *(_DWORD *)(*this - 12); +LABEL_9: + std::wios::clear(v3, *((_DWORD *)v3 + 5) | v4); + return this; +} +// 4C7910: using guessed type char var_D[13]; + +//----- (004C7A90) -------------------------------------------------------- +int *__thiscall std::wistream::operator>>(int *this, _DWORD *a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+27h] [ebp-21h] BYREF + int v8; // [esp+28h] [ebp-20h] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8 = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + &v8, + v9); + *a2 = v9[0]; + if ( !v8 ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8); + return this; +} +// 4C7A90: using guessed type int var_1C[7]; + +//----- (004C7BF0) -------------------------------------------------------- +int *__thiscall std::wistream::operator>>(int *this, _WORD *a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + int v6; // eax + char v8; // [esp+27h] [ebp-21h] BYREF + int v9; // [esp+28h] [ebp-20h] BYREF + int v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v8, this, 0); + if ( !v8 ) + return this; + v3 = *this; + v9 = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + &v9, + v10); + v6 = v9; + if ( v10[0] >= -32768 ) + { + if ( v10[0] > 0x7FFF ) + { + v9 |= 4u; + v6 = v9; + *a2 = 0x7FFF; + goto LABEL_9; + } + *a2 = v10[0]; + } + else + { + v6 = v9 | 4; + v9 |= 4u; + *a2 = 0x8000; + } + if ( !v6 ) + return this; +LABEL_9: + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v6); + return this; +} +// 4C7CBB: conditional instruction was optimized away because eax.4>=4u +// 4C7BF0: using guessed type int var_1C[7]; + +//----- (004C7D90) -------------------------------------------------------- +int *__thiscall std::wostream::put(int *this, unsigned __int16 a2) +{ + _DWORD *v3; // ecx + unsigned __int16 *v4; // eax + unsigned __int16 v5; // si + char *v6; // esi + int v7; // ecx + int v9; // [esp+18h] [ebp-20h] BYREF + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v9, this); + if ( (_BYTE)v9 ) + { + v3 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v4 = (unsigned __int16 *)v3[5]; + if ( (unsigned int)v4 >= v3[6] ) + { + v5 = (*(int (__stdcall **)(_DWORD))(*v3 + 52))(a2); + } + else + { + *v4 = a2; + v5 = a2; + v3[5] = v4 + 1; + } + if ( v5 == 0xFFFF ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v10 + *(_DWORD *)(*v10 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), + *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); + } + } + return this; +} + +//----- (004C7EE0) -------------------------------------------------------- +int __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2) +{ + int v2; // ebx + std::ios_base *v3; // esi + int v4; // eax + __int16 v5; // dx + int result; // eax + std::ios_base *v7; // [esp+4h] [ebp-18h] + + v2 = (int)this + *(_DWORD *)(*this - 12); + v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v2, v3, v7); + std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::wios::_M_cache_locale(v3, (int)v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + *(_DWORD *)(v2 + 112) = *((_DWORD *)v3 + 28); + v5 = *((_WORD *)v3 + 58); + *((_DWORD *)v3 + 28) = v4; + LOWORD(v4) = *(_WORD *)(v2 + 116); + *(_WORD *)(v2 + 116) = v5; + LOBYTE(v5) = *((_BYTE *)v3 + 118); + *((_WORD *)v3 + 58) = v4; + result = *(unsigned __int8 *)(v2 + 118); + *(_BYTE *)(v2 + 118) = v5; + *((_BYTE *)v3 + 118) = result; + return result; +} +// 4C7EF8: variable 'v7' is possibly undefined + +//----- (004C7F60) -------------------------------------------------------- +_DWORD *__fastcall std::wostream::flush(_DWORD *a1) +{ + int v2; // ecx + + v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + if ( !v2 || (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) + return a1; + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return a1; +} + +//----- (004C8010) -------------------------------------------------------- +_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) +{ + char *v6; // eax + int *v7; // eax + int v8; // edi + int v10[14]; // [esp+40h] [ebp-38h] BYREF + + v6 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v6[20] & 5) != 0 ) + return this; + v7 = (int *)*((_DWORD *)v6 + 30); + v10[4] = a2; + v10[5] = a3; + v10[7] = a5; + v8 = *v7; + v10[6] = a4; + (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v10, v7, a2, a3, a4, a5, 16); + if ( (v10[0] & v10[1]) != -1 ) + return this; + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + return this; +} + +//----- (004C8130) -------------------------------------------------------- +_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4) +{ + char *v5; // edx + int v7[10]; // [esp+20h] [ebp-28h] BYREF + + v5 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v5[20] & 5) != 0 ) + return this; + (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( + v7, + *((_DWORD *)v5 + 30), + a2, + a3, + a4, + 16); + if ( (v7[0] & v7[1]) != -1 ) + return this; + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + return this; +} + +//----- (004C8220) -------------------------------------------------------- +_DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2) +{ + int v3; // eax + char *v4; // edx + int v6[6]; // [esp+20h] [ebp-18h] BYREF + + *this = -1; + this[1] = -1; + v3 = *a2; + this[2] = 0; + v4 = (char *)a2 + *(_DWORD *)(v3 - 12); + if ( (v4[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v4 + 30) + 16))( + v6, + *((_DWORD *)v4 + 30), + 0, + 0, + 1, + 16); + *this = v6[0]; + this[1] = v6[1]; + this[2] = v6[2]; + } + return this; +} + +//----- (004C8310) -------------------------------------------------------- +int *__thiscall std::wostream::write(int *this, int a2, int a3) +{ + char *v4; // esi + int v5; // ecx + int v7; // [esp+18h] [ebp-10h] BYREF + _DWORD *v8; // [esp+1Ch] [ebp-Ch] + + std::wostream::sentry::sentry(&v7, this); + if ( (_BYTE)v7 + && a3 != (*(int (__stdcall **)(int, int))(**(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120) + 48))(a2, a3) ) + { + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v4 = (char *)v8 + *(_DWORD *)(*v8 - 12); + if ( (v4[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v5 = *((_DWORD *)v4 + 30); + if ( v5 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v8 + *(_DWORD *)(*v8 - 12)), + *(_DWORD *)((char *)v8 + *(_DWORD *)(*v8 - 12) + 20) | 1); + } + } + return this; +} + +//----- (004C8440) -------------------------------------------------------- +int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) +{ + int v3; // eax + char *v4; // ecx + int result; // eax + + *(_BYTE *)this = 0; + v3 = *a2; + this[1] = a2; + v4 = (char *)a2 + *(_DWORD *)(v3 - 12); + result = *((_DWORD *)v4 + 5); + if ( *((_DWORD *)v4 + 28) ) + { + if ( result ) + return std::wios::clear(v4, result | 4); + std::wostream::flush(*((_DWORD **)v4 + 28)); + result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + if ( result ) + return std::wios::clear(v4, result | 4); + *(_BYTE *)this = 1; + return result; +} + +//----- (004C84A0) -------------------------------------------------------- +int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) +{ + int v3; // eax + char *v4; // ecx + int result; // eax + + *(_BYTE *)this = 0; + v3 = *a2; + this[1] = a2; + v4 = (char *)a2 + *(_DWORD *)(v3 - 12); + result = *((_DWORD *)v4 + 5); + if ( *((_DWORD *)v4 + 28) ) + { + if ( result ) + return std::wios::clear(v4, result | 4); + std::wostream::flush(*((_DWORD **)v4 + 28)); + result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + if ( result ) + return std::wios::clear(v4, result | 4); + *(_BYTE *)this = 1; + return result; +} + +//----- (004C8500) -------------------------------------------------------- +char __fastcall std::wostream::sentry::~sentry(int a1) +{ + int v1; // eax + int v3; // ebx + int v4; // ecx + _DWORD *v5; // ecx + + v1 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + if ( (*(_BYTE *)(v1 + 13) & 0x20) != 0 ) + { + v3 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + LOBYTE(v1) = std::uncaught_exception(); + if ( !(_BYTE)v1 ) + { + v4 = *(_DWORD *)(v3 + 120); + if ( v4 ) + { + v1 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); + if ( v1 == -1 ) + { + v5 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); + LOBYTE(v1) = std::wios::clear(v5, v5[5] | 1); + } + } + } + } + return v1; +} + +//----- (004C8570) -------------------------------------------------------- +char __fastcall std::wostream::sentry::~sentry(int a1) +{ + int v1; // eax + int v3; // ebx + int v4; // ecx + _DWORD *v5; // ecx + + v1 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + if ( (*(_BYTE *)(v1 + 13) & 0x20) != 0 ) + { + v3 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + LOBYTE(v1) = std::uncaught_exception(); + if ( !(_BYTE)v1 ) + { + v4 = *(_DWORD *)(v3 + 120); + if ( v4 ) + { + v1 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); + if ( v1 == -1 ) + { + v5 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); + LOBYTE(v1) = std::wios::clear(v5, v5[5] | 1); + } + } + } + } + return v1; +} + +//----- (004C85E0) -------------------------------------------------------- +int __thiscall std::wostream::_M_write(_DWORD *this, int a2, int a3) +{ + int v4; // ecx + int result; // eax + + v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); + result = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 48))(v4, a2, a3); + if ( a3 != result ) + return std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + return result; +} + +//----- (004C8630) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + int v9; // ecx + unsigned __int16 v10; // ax + int v11; // edx + unsigned __int16 v12; // [esp+2Ah] [ebp-2Eh] + int v13; // [esp+38h] [ebp-20h] BYREF + _DWORD *v14; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v13, this); + if ( (_BYTE)v13 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v12 = *((_WORD *)v3 + 58); + } + else + { + v9 = *((_DWORD *)v3 + 31); + if ( !v9 ) + std::__throw_bad_cast(); + v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v10; + v3[118] = 1; + v12 = v10; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int))(*(_DWORD *)v4 + 36))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v12, + a2); + if ( v5 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v14 + *(_DWORD *)(*v14 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), + *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); + } + } + return this; +} +// 4C86AF: variable 'v5' is possibly undefined + +//----- (004C87D0) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2) +{ + char *v3; // esi + unsigned __int16 v4; // ax + char v5; // dl + char *v6; // esi + int v7; // ecx + int v9; // ecx + int v10; // edx + int v11; // [esp+2Ch] [ebp-2Ch] + int v12; // [esp+38h] [ebp-20h] BYREF + _DWORD *v13; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v12, this); + if ( (_BYTE)v12 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v11 = *((_DWORD *)v3 + 32); + if ( !v11 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v4 = *((_WORD *)v3 + 58); + } + else + { + v9 = *((_DWORD *)v3 + 31); + if ( !v9 ) + std::__throw_bad_cast(); + v4 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); + v10 = *this; + *((_WORD *)v3 + 58) = v4; + v3[118] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, _DWORD))(*(_DWORD *)v11 + 8))( + v11, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v4, + a2); + if ( v5 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v13 + *(_DWORD *)(*v13 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12)), + *(_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12) + 20) | 1); + } + } + return this; +} +// 4C8860: variable 'v5' is possibly undefined + +//----- (004C8980) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, double a2) +{ + char *v3; // esi + int v4; // edi + unsigned __int16 v5; // ax + char v6; // dl + char *v7; // esi + int v8; // ecx + int v10; // ecx + int v11; // edx + int v12; // [esp+38h] [ebp-20h] BYREF + _DWORD *v13; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v12, this); + if ( (_BYTE)v12 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v5 = *((_WORD *)v3 + 58); + } + else + { + v10 = *((_DWORD *)v3 + 31); + if ( !v10 ) + std::__throw_bad_cast(); + v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v5; + v3[118] = 1; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v5, + LODWORD(a2), + HIDWORD(a2)); + if ( v6 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v7 = (char *)v13 + *(_DWORD *)(*v13 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12)), + *(_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12) + 20) | 1); + } + } + return this; +} +// 4C8A00: variable 'v6' is possibly undefined + +//----- (004C8B20) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, long double a2) +{ + char *v3; // esi + int v4; // edi + unsigned __int16 v5; // ax + char v6; // dl + char *v7; // esi + int v8; // ecx + int v10; // ecx + int v11; // edx + int v13; // [esp+38h] [ebp-20h] BYREF + _DWORD *v14; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v13, this); + if ( (_BYTE)v13 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v5 = *((_WORD *)v3 + 58); + } + else + { + v10 = *((_DWORD *)v3 + 31); + if ( !v10 ) + std::__throw_bad_cast(); + v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v5; + v3[118] = 1; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 32))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v5, + LODWORD(a2), + DWORD1(a2), + HIDWORD(a2)); + if ( v6 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v7 = (char *)v14 + *(_DWORD *)(*v14 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), + *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); + } + } + return this; +} +// 4C8B9A: variable 'v6' is possibly undefined + +//----- (004C8CC0) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + int v9; // ecx + unsigned __int16 v10; // ax + int v11; // edx + unsigned __int16 v12; // [esp+2Ah] [ebp-2Eh] + int v13; // [esp+38h] [ebp-20h] BYREF + _DWORD *v14; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v13, this); + if ( (_BYTE)v13 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v12 = *((_WORD *)v3 + 58); + } + else + { + v9 = *((_DWORD *)v3 + 31); + if ( !v9 ) + std::__throw_bad_cast(); + v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v10; + v3[118] = 1; + v12 = v10; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int))(*(_DWORD *)v4 + 12))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v12, + a2); + if ( v5 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v14 + *(_DWORD *)(*v14 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), + *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); + } + } + return this; +} +// 4C8D3F: variable 'v5' is possibly undefined + +//----- (004C8E60) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + int v9; // ecx + unsigned __int16 v10; // ax + int v11; // edx + unsigned __int16 v12; // [esp+2Ah] [ebp-2Eh] + int v13; // [esp+38h] [ebp-20h] BYREF + _DWORD *v14; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v13, this); + if ( (_BYTE)v13 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v12 = *((_WORD *)v3 + 58); + } + else + { + v9 = *((_DWORD *)v3 + 31); + if ( !v9 ) + std::__throw_bad_cast(); + v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v10; + v3[118] = 1; + v12 = v10; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int))(*(_DWORD *)v4 + 16))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v12, + a2); + if ( v5 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v14 + *(_DWORD *)(*v14 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), + *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); + } + } + return this; +} +// 4C8EDF: variable 'v5' is possibly undefined + +//----- (004C9000) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) +{ + char *v4; // esi + int v5; // edi + char v6; // dl + char *v7; // esi + int v8; // ecx + int v10; // ecx + unsigned __int16 v11; // ax + int v12; // edx + unsigned __int16 v13; // [esp+2Eh] [ebp-3Ah] + int v14; // [esp+48h] [ebp-20h] BYREF + _DWORD *v15; // [esp+4Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v14, this); + if ( (_BYTE)v14 ) + { + v4 = (char *)this + *(_DWORD *)(*this - 12); + v5 = *((_DWORD *)v4 + 32); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v4[118] ) + { + v13 = *((_WORD *)v4 + 58); + } + else + { + v10 = *((_DWORD *)v4 + 31); + if ( !v10 ) + std::__throw_bad_cast(); + v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); + v12 = *this; + *((_WORD *)v4 + 58) = v11; + v4[118] = 1; + v13 = v11; + v4 = (char *)this + *(_DWORD *)(v12 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int, int))(*(_DWORD *)v5 + 20))( + v5, + *((_DWORD *)v4 + 30), + *((_DWORD *)v4 + 30) == 0, + v4, + v13, + a2, + a3); + if ( v6 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v7 = (char *)v15 + *(_DWORD *)(*v15 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), + *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); + } + } + return this; +} +// 4C909C: variable 'v6' is possibly undefined + +//----- (004C91C0) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) +{ + char *v4; // esi + int v5; // edi + char v6; // dl + char *v7; // esi + int v8; // ecx + int v10; // ecx + unsigned __int16 v11; // ax + int v12; // edx + unsigned __int16 v13; // [esp+2Eh] [ebp-3Ah] + int v14; // [esp+48h] [ebp-20h] BYREF + _DWORD *v15; // [esp+4Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v14, this); + if ( (_BYTE)v14 ) + { + v4 = (char *)this + *(_DWORD *)(*this - 12); + v5 = *((_DWORD *)v4 + 32); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v4[118] ) + { + v13 = *((_WORD *)v4 + 58); + } + else + { + v10 = *((_DWORD *)v4 + 31); + if ( !v10 ) + std::__throw_bad_cast(); + v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); + v12 = *this; + *((_WORD *)v4 + 58) = v11; + v4[118] = 1; + v13 = v11; + v4 = (char *)this + *(_DWORD *)(v12 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int, int))(*(_DWORD *)v5 + 24))( + v5, + *((_DWORD *)v4 + 30), + *((_DWORD *)v4 + 30) == 0, + v4, + v13, + a2, + a3); + if ( v6 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v7 = (char *)v15 + *(_DWORD *)(*v15 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), + *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); + } + } + return this; +} +// 4C925C: variable 'v6' is possibly undefined + +//----- (004C9380) -------------------------------------------------------- +int __thiscall std::wostream::basic_ostream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + std::ios_base *v5; // esi + int v6; // eax + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-24h] + + v2 = this + 1; + std::ios_base::ios_base(this + 1); + this[29] = 0; + *((_WORD *)this + 60) = 0; + v4 = *a2; + *((_BYTE *)this + 122) = 0; + v5 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v4 - 12)); + *this = &off_538804; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[1] = off_538818; + std::ios_base::_M_move((int)v2, v5, v8); + std::wios::_M_cache_locale(v2, (int)(this + 28)); + v6 = *((_DWORD *)v5 + 28); + this[31] = 0; + *((_DWORD *)v5 + 28) = 0; + this[29] = v6; + *((_WORD *)this + 60) = *((_WORD *)v5 + 58); + result = *((unsigned __int8 *)v5 + 118); + *((_BYTE *)this + 122) = result; + return result; +} +// 4C93E5: variable 'v8' is possibly undefined +// 538804: using guessed type int (*off_538804)(); +// 538818: using guessed type int (*off_538818[2])(); + +//----- (004C9450) -------------------------------------------------------- +BOOL __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 1); + std::ios_base::ios_base(this + 1); + this[29] = 0; + *((_WORD *)this + 60) = 0; + *((_BYTE *)this + 122) = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + *this = &off_538804; + this[1] = off_538818; + return std::wios::init(v2, a2); +} +// 538804: using guessed type int (*off_538804)(); +// 538818: using guessed type int (*off_538818[2])(); + +//----- (004C94E0) -------------------------------------------------------- +int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) +{ + int result; // eax + + std::ios_base::ios_base(this + 1); + result = 0; + *((_BYTE *)this + 122) = 0; + this[29] = 0; + *((_WORD *)this + 60) = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + *this = &off_538804; + this[1] = off_538818; + return result; +} +// 538804: using guessed type int (*off_538804)(); +// 538818: using guessed type int (*off_538818[2])(); + +//----- (004C9540) -------------------------------------------------------- +BOOL __fastcall std::wostream::basic_ostream(int a1) +{ + int v1; // esi + + v1 = a1 + 4; + std::ios_base::ios_base((_DWORD *)(a1 + 4)); + *(_DWORD *)(a1 + 116) = 0; + *(_WORD *)(a1 + 120) = 0; + *(_BYTE *)(a1 + 122) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)a1 = &off_538804; + *(_DWORD *)(a1 + 4) = off_538818; + return std::wios::init(v1, 0); +} +// 538804: using guessed type int (*off_538804)(); +// 538818: using guessed type int (*off_538818[2])(); + +//----- (004C95D0) -------------------------------------------------------- +int __thiscall std::wostream::basic_ostream(int *this, int *a2, _DWORD *a3) +{ + int v3; // edx + int v4; // eax + _DWORD *v5; // ecx + _DWORD *v6; // ebx + std::ios_base *v7; // esi + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-18h] + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); + *v5 = v4; + v6 = v5; + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move((int)v5, v7, v10); + std::wios::_M_cache_locale(v6, (int)(v6 + 27)); + v8 = *((_DWORD *)v7 + 28); + *((_DWORD *)v7 + 28) = 0; + v6[28] = v8; + *((_WORD *)v6 + 58) = *((_WORD *)v7 + 58); + result = *((unsigned __int8 *)v7 + 118); + v6[30] = 0; + *((_BYTE *)v6 + 118) = result; + return result; +} +// 4C95F3: variable 'v10' is possibly undefined + +//----- (004C9640) -------------------------------------------------------- +BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) +{ + int v3; // edx + int v4; // eax + _DWORD *v5; // ecx + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); + *v5 = v4; + return std::wios::init((int)v5, a3); +} + +//----- (004C9670) -------------------------------------------------------- +int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) +{ + int v3; // eax + int v4; // edx + int result; // eax + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + result = *(_DWORD *)(v3 - 12); + *(int *)((char *)this + result) = v4; + return result; +} + +//----- (004C9690) -------------------------------------------------------- +BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2) +{ + int v2; // edx + int v3; // eax + _DWORD *v4; // ecx + + v2 = *a2; + v3 = a2[1]; + *this = *a2; + v4 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); + *v4 = v3; + return std::wios::init((int)v4, 0); +} + +//----- (004C96B0) -------------------------------------------------------- +void __fastcall std::wostream::~wostream(char *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 4; + *(v2 - 1) = &off_538804; + *v2 = &off_539484; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 538804: using guessed type int (*off_538804)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004C96E0) -------------------------------------------------------- +void __fastcall std::wostream::~wostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_538804; + v1 = a1 + 1; + *v1 = &off_539484; + std::ios_base::~ios_base((int)v1); +} +// 538804: using guessed type int (*off_538804)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004C9700) -------------------------------------------------------- +int __thiscall std::wostream::~wostream(int *this, int *a2) +{ + int v2; // eax + int result; // eax + + v2 = *a2; + *this = *a2; + result = *(_DWORD *)(v2 - 12); + *(int *)((char *)this + result) = a2[1]; + return result; +} + +//----- (004C9720) -------------------------------------------------------- +_DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + _DWORD *result; // eax + std::ios_base *v8; // [esp+4h] [ebp-18h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + result = this; + *((_BYTE *)v4 + 118) = v6; + return result; +} +// 4C973D: variable 'v8' is possibly undefined + +//----- (004C97A0) -------------------------------------------------------- +int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)) +{ + return a2(this); +} + +//----- (004C97B0) -------------------------------------------------------- +char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004C97D0) -------------------------------------------------------- +char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004C9800) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2) +{ + char *v3; // ecx + int v4; // eax + char *v5; // esi + int v6; // ecx + char v8; // [esp+17h] [ebp-11h] BYREF + int v9; // [esp+18h] [ebp-10h] BYREF + _DWORD *v10; // [esp+1Ch] [ebp-Ch] + + std::wostream::sentry::sentry(&v9, this); + if ( (_BYTE)v9 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + if ( !a2 ) + { + v4 = 1; + goto LABEL_13; + } + if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v3 + 30), &v8) ) + { + v4 = 4; + v3 = (char *)this + *(_DWORD *)(*this - 12); +LABEL_13: + std::wios::clear(v3, *((_DWORD *)v3 + 5) | v4); + } + } + else if ( !a2 ) + { + v4 = 1; + v3 = (char *)this + *(_DWORD *)(*this - 12); + goto LABEL_13; + } + v5 = (char *)v10 + *(_DWORD *)(*v10 - 12); + if ( (v5[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v6 = *((_DWORD *)v5 + 30); + if ( v6 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), + *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); + } + } + return this; +} + +//----- (004C9950) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2) +{ + return std::wostream::_M_insert(this, a2); +} + +//----- (004C9980) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, float a2) +{ + return std::wostream::_M_insert(this, a2); +} + +//----- (004C99E0) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) +{ + int v2; // eax + + v2 = *(int *)((char *)this + *(_DWORD *)(*this - 12) + 12) & 0x4A; + if ( v2 == 64 || v2 == 8 ) + return std::wostream::_M_insert(this, a2); + else + return std::wostream::_M_insert(this, (__int16)a2); +} + +//----- (004C9A20) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) +{ + return std::wostream::_M_insert(this, a2); +} + +//----- (004C9A50) -------------------------------------------------------- +unsigned int __userpurge std::random_device::_M_init_pretr1@( + unsigned int *a1@, + const void **this, + const std::string *a3) +{ + int v4; // eax + unsigned int v5; // ecx + int i; // edx + unsigned int result; // eax + _BYTE *v8; // esi + char **EndPtr; // [esp+4h] [ebp-28h] + char *v10; // [esp+1Ch] [ebp-10h] BYREF + + v4 = std::string::compare(this, (std::string *)"mt19937", (const char *)EndPtr); + v5 = 5489; + if ( v4 ) + { + v8 = *this; + v5 = strtoul((const char *)*this, &v10, 0); + if ( !*v8 || *v10 ) + std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&)"); + } + *a1 = v5; + for ( i = 1; ; v5 = a1[i - 1] ) + { + result = i + 1812433253 * (v5 ^ (v5 >> 30)); + a1[i++] = result; + if ( i == 624 ) + break; + } + a1[624] = 624; + return result; +} +// 4C9A62: variable 'EndPtr' is possibly undefined + +//----- (004C9AF0) -------------------------------------------------------- +FILE *__userpurge std::random_device::_M_init@(FILE **a1@, const void **this, const std::string *a3) +{ + unsigned int v4; // kr00_4 + unsigned int v5; // kr04_4 + unsigned int v6; // kr08_4 + FILE *result; // eax + const char *FileName; // ebx + unsigned int v18; // [esp-4h] [ebp-30h] + char *Mode; // [esp+4h] [ebp-28h] + char *Modea; // [esp+4h] [ebp-28h] + char *Modeb; // [esp+4h] [ebp-28h] + + if ( !std::string::compare(this, (std::string *)"default", Mode) ) + { + v4 = __readeflags(); + v18 = v4; + v5 = __readeflags(); + __writeeflags(v5 ^ 0x200000); + v6 = __readeflags(); + __writeeflags(v18); + if ( ((v5 ^ v6) & 0x200000) == 0 ) + goto LABEL_11; + _EAX = 0; + __asm { cpuid } + if ( _EBX != 1970169159 ) + goto LABEL_11; + if ( _EAX ) + { + _EAX = 1; + __asm { cpuid } + FileName = "/dev/urandom"; + if ( (_ECX & 0x40000000) != 0 ) + { + *a1 = 0; + return result; + } + } + else + { +LABEL_11: + FileName = "/dev/urandom"; + } + } + else + { + FileName = (const char *)*this; + if ( std::string::compare(this, (std::string *)"/dev/urandom", Modea) + && std::string::compare(this, (std::string *)"/dev/random", Modeb) ) + { +LABEL_10: + std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&)"); + } + } + result = fopen(FileName, "rb"); + *a1 = result; + if ( !result ) + goto LABEL_10; + return result; +} +// 4C9B06: variable 'Mode' is possibly undefined +// 4C9B8C: variable 'Modea' is possibly undefined +// 4C9BA1: variable 'Modeb' is possibly undefined + +//----- (004C9BE0) -------------------------------------------------------- +int __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = &off_538828; + this[1] = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = &unk_51641C; + return result; +} +// 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); + +//----- (004C9C00) -------------------------------------------------------- +_DWORD *__userpurge std::runtime_error::runtime_error@(int a1@, std::runtime_error *this, const char *a3) +{ + _DWORD *v3; // ecx + int v5; // [esp+1Fh] [ebp-9h] BYREF + + v3 = (_DWORD *)(a1 + 4); + *(v3 - 1) = &off_538828; + return std::string::string(v3, (char *)this, (int)&v5); +} +// 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); + +//----- (004C9C40) -------------------------------------------------------- +_DWORD *__thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) +{ + _DWORD *v2; // ecx + unsigned int v4; // [esp+8h] [ebp-10h] + + v2 = this + 1; + *(v2 - 1) = &off_538828; + return std::__cow_string::__cow_string(v2, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v4); +} +// 4C9C63: variable 'v4' is possibly undefined +// 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); + +//----- (004C9C80) -------------------------------------------------------- +unsigned int *__userpurge std::runtime_error::runtime_error@( + int a1@, + unsigned int **this, + const std::runtime_error *a3) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + *(_DWORD *)a1 = &off_538828; + return std::string::string((unsigned int **)(a1 + 4), this + 1, v4); +} +// 4C9C96: variable 'v4' is possibly undefined +// 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); + +//----- (004C9CB0) -------------------------------------------------------- +unsigned int *__userpurge std::runtime_error::runtime_error@( + int a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int **v3; // ecx + const std::string *v5; // [esp+4h] [ebp-14h] + + v3 = (unsigned int **)(a1 + 4); + *(v3 - 1) = (unsigned int *)&off_538828; + return std::string::string(v3, this, v5); +} +// 4C9CCA: variable 'v5' is possibly undefined +// 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); + +//----- (004C9CF0) -------------------------------------------------------- +void __fastcall std::runtime_error::~runtime_error(_DWORD *a1) +{ + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} + +//----- (004C9D10) -------------------------------------------------------- +void __fastcall std::runtime_error::~runtime_error(_DWORD *a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + std::exception *v3; // [esp+0h] [ebp-2Ch] + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = (volatile signed __int32 *)a1[1]; + *a1 = &off_538828; + if ( v1 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v4); + } + std::exception::~exception(v3); +} +// 4C9D29: variable 'v3' is possibly undefined +// 538828: using guessed type void (__cdecl *off_538828)(std::runtime_error *__hidden this); +// 78A9D4: using guessed type int _CRT_MT; +// 4C9D10: using guessed type int var_D[3]; + +//----- (004C9D80) -------------------------------------------------------- +int *__thiscall std::runtime_error::operator=(int *this, int a2) +{ + std::string *v4; // [esp+4h] [ebp-18h] + + std::string::swap(this + 1, (std::string *)(a2 + 4), v4); + return this; +} +// 4C9D93: variable 'v4' is possibly undefined + +//----- (004C9DB0) -------------------------------------------------------- +unsigned int **__thiscall std::runtime_error::operator=(unsigned int **this, int a2) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + std::string::assign(this + 1, (unsigned int **)(a2 + 4), v4); + return this; +} +// 4C9DC3: variable 'v4' is possibly undefined + +//----- (004C9DE0) -------------------------------------------------------- +int __thiscall std::ifstream::open(char *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 8, a2, a3 | 8) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004C9E50) -------------------------------------------------------- +int __thiscall std::ifstream::open(char *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 8, a2, a3 | 8) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004C9EC0) -------------------------------------------------------- +int __thiscall std::ifstream::open(char *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 8, *a2, a3 | 8) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004C9F30) -------------------------------------------------------- +int __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return std::filebuf::swap((int)(this + 2), (int)(a2 + 2)); +} +// 4C9F54: variable 'v10' is possibly undefined + +//----- (004C9FD0) -------------------------------------------------------- +int __fastcall std::ifstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::filebuf::close((int)(a1 + 2)); + if ( !result ) + return std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004CA010) -------------------------------------------------------- +bool __fastcall std::ifstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 48)); +} + +//----- (004CA020) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + char *v10; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 29; + std::ios_base::ios_base(this + 29); + *this = &unk_533B28; + *((_WORD *)this + 116) = 0; + v4 = a2[1]; + this[57] = 0; + this[1] = v4; + v5 = *a2; + this[59] = 0; + v6 = *(_DWORD *)(v5 - 12); + this[60] = 0; + this[61] = 0; + this[29] = &unk_533B3C; + this[62] = 0; + v10 = (char *)a2 + v6; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); + std::ios::_M_cache_locale(v2, (int)(this + 56)); + this[59] = 0; + v7 = *((_DWORD *)v10 + 28); + *((_DWORD *)v10 + 28) = 0; + this[57] = v7; + *((_WORD *)this + 116) = *((_WORD *)v10 + 58); + a2[1] = 0; + *this = &off_538840; + this[29] = off_538854; + result = std::filebuf::basic_filebuf((int)(this + 2), (int)(a2 + 2)); + this[59] = this + 2; + return result; +} +// 4CA095: variable 'v9' is possibly undefined +// 538840: using guessed type int (*off_538840)(); +// 538854: using guessed type int (*off_538854[2])(); + +//----- (004CA140) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 116); + std::ios_base::ios_base((_DWORD *)this + 29); + *(_DWORD *)this = &unk_533B28; + *((_DWORD *)this + 57) = 0; + *((_WORD *)this + 116) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 29) = &unk_533B3C; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_538840; + *((_DWORD *)this + 29) = off_538854; + std::filebuf::basic_filebuf((int)(this + 8)); + std::ios::init(v3, (int)(this + 8)); + v5 = std::filebuf::open(this + 8, a2, a3 | 8); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 538840: using guessed type int (*off_538840)(); +// 538854: using guessed type int (*off_538854[2])(); + +//----- (004CA280) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 116); + std::ios_base::ios_base((_DWORD *)this + 29); + *(_DWORD *)this = &unk_533B28; + *((_DWORD *)this + 57) = 0; + *((_WORD *)this + 116) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 29) = &unk_533B3C; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_538840; + *((_DWORD *)this + 29) = off_538854; + std::filebuf::basic_filebuf((int)(this + 8)); + std::ios::init(v3, (int)(this + 8)); + v5 = std::filebuf::open(this + 8, a2, a3 | 8); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 538840: using guessed type int (*off_538840)(); +// 538854: using guessed type int (*off_538854[2])(); + +//----- (004CA3C0) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 116); + std::ios_base::ios_base((_DWORD *)this + 29); + *(_DWORD *)this = &unk_533B28; + *((_DWORD *)this + 57) = 0; + *((_WORD *)this + 116) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 29) = &unk_533B3C; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_538840; + *((_DWORD *)this + 29) = off_538854; + std::filebuf::basic_filebuf((int)(this + 8)); + std::ios::init(v3, (int)(this + 8)); + v5 = std::filebuf::open(this + 8, *a2, a3 | 8); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 538840: using guessed type int (*off_538840)(); +// 538854: using guessed type int (*off_538854[2])(); + +//----- (004CA500) -------------------------------------------------------- +BOOL __fastcall std::ifstream::basic_ifstream(int a1) +{ + int v1; // esi + + v1 = a1 + 116; + std::ios_base::ios_base((_DWORD *)(a1 + 116)); + *(_DWORD *)a1 = &unk_533B28; + *(_DWORD *)(a1 + 228) = 0; + *(_WORD *)(a1 + 232) = 0; + *(_DWORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)(a1 + 116) = &unk_533B3C; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_538840; + *(_DWORD *)(a1 + 116) = off_538854; + std::filebuf::basic_filebuf(a1 + 8); + return std::ios::init(v1, a1 + 8); +} +// 538840: using guessed type int (*off_538840)(); +// 538854: using guessed type int (*off_538854[2])(); + +//----- (004CA5E0) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edx + __int16 v6; // ax + int v7; // edx + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-34h] + std::ios_base *v11; // [esp+18h] [ebp-20h] + int v12; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[1]; + *this = v4; + *(_DWORD *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = a3[1]; + v12 = (int)this + *(_DWORD *)(v4 - 12); + v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v12, v11, v10); + std::ios::_M_cache_locale((_DWORD *)v12, v12 + 108); + v5 = *((_DWORD *)v11 + 28); + *((_DWORD *)v11 + 28) = 0; + v6 = *((_WORD *)v11 + 58); + *(_DWORD *)(v12 + 120) = 0; + *(_DWORD *)(v12 + 112) = v5; + v7 = a2[3]; + *(_WORD *)(v12 + 116) = v6; + v8 = *a2; + a3[1] = 0; + *this = v8; + *(_DWORD *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; + std::filebuf::basic_filebuf((int)(this + 2), (int)(a3 + 2)); + result = *(_DWORD *)(*this - 12); + *(_DWORD *)((char *)this + result + 120) = this + 2; + return result; +} +// 4CA61D: variable 'v10' is possibly undefined + +//----- (004CA6B0) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char *a3, int a4) +{ + char *v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + char *v10; // ecx + + v5 = this + 8; + v6 = a2[1]; + *(_DWORD *)this = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12)] = a2[2]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v6 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v9 = std::filebuf::open(v5, a3, a4 | 8); + v10 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v9 ) + return std::ios::clear(v10, 0); + else + return std::ios::clear(v10, *((_DWORD *)v10 + 5) | 4); +} + +//----- (004CA7A0) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, wchar_t *a3, int a4) +{ + char *v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + char *v10; // ecx + + v5 = this + 8; + v6 = a2[1]; + *(_DWORD *)this = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12)] = a2[2]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v6 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v9 = std::filebuf::open(v5, a3, a4 | 8); + v10 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v9 ) + return std::ios::clear(v10, 0); + else + return std::ios::clear(v10, *((_DWORD *)v10 + 5) | 4); +} + +//----- (004CA890) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char **a3, int a4) +{ + char *v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + char *v10; // ecx + + v5 = this + 8; + v6 = a2[1]; + *(_DWORD *)this = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12)] = a2[2]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v6 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v9 = std::filebuf::open(v5, *a3, a4 | 8); + v10 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v9 ) + return std::ios::clear(v10, 0); + else + return std::ios::clear(v10, *((_DWORD *)v10 + 5) | 4); +} + +//----- (004CA980) -------------------------------------------------------- +BOOL __thiscall std::ifstream::basic_ifstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + int v5; // eax + int v6; // edx + + v3 = (int)(this + 2); + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = *a2; + v6 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; + std::filebuf::basic_filebuf(v3); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), v3); +} + +//----- (004CAA20) -------------------------------------------------------- +void __fastcall std::ifstream::~ifstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 2; + *(v2 - 2) = &off_538840; + v2[27] = off_538854; + *v2 = &off_5386E0; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 12); + a1[2] = &off_538A48; + std::locale::~locale((_DWORD **)a1 + 9); + *a1 = &unk_533B28; + a1[1] = 0; + a1[29] = &off_539474; + std::ios_base::~ios_base((int)(a1 + 29)); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538840: using guessed type int (*off_538840)(); +// 538854: using guessed type int (*off_538854[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004CAAA0) -------------------------------------------------------- +void __fastcall std::ifstream::~ifstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 8); + *(v2 - 2) = &off_538840; + v2[27] = off_538854; + *v2 = &off_5386E0; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 48); + *(_DWORD *)(a1 + 8) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 36)); + *(_DWORD *)a1 = &unk_533B28; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 116) = &off_539474; + std::ios_base::~ios_base(a1 + 116); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538840: using guessed type int (*off_538840)(); +// 538854: using guessed type int (*off_538854[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004CAB10) -------------------------------------------------------- +int __thiscall std::ifstream::~ifstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int result; // eax + + v3 = this + 2; + v4 = *a2; + *(v3 - 2) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 8) = a2[3]; + *v3 = &off_5386E0; + std::filebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 12); + this[2] = &off_538A48; + std::locale::~locale((_DWORD **)this + 9); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(_DWORD *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004CAB80) -------------------------------------------------------- +_DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + std::filebuf::operator=((int)(this + 2), (int)(a2 + 2)); + return this; +} +// 4CABA4: variable 'v10' is possibly undefined + +//----- (004CAC20) -------------------------------------------------------- +int __thiscall std::wifstream::open(int *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004CAC90) -------------------------------------------------------- +int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004CAD00) -------------------------------------------------------- +int __thiscall std::wifstream::open(int *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 2), *a2, a3 | 8) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004CAD70) -------------------------------------------------------- +int __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return std::wfilebuf::swap((int)(this + 2), (int)(a2 + 2)); +} +// 4CAD94: variable 'v9' is possibly undefined + +//----- (004CAE10) -------------------------------------------------------- +int __fastcall std::wifstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::wfilebuf::close((int)(a1 + 2)); + if ( !result ) + return std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004CAE50) -------------------------------------------------------- +bool __fastcall std::wifstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 48)); +} + +//----- (004CAE60) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + char *v10; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 30; + std::ios_base::ios_base(this + 30); + *((_BYTE *)this + 238) = 0; + *((_WORD *)this + 118) = 0; + v4 = a2[1]; + this[58] = 0; + this[1] = v4; + v5 = *a2; + this[60] = 0; + v6 = *(_DWORD *)(v5 - 12); + *this = &unk_533B50; + this[61] = 0; + this[30] = &unk_533B64; + this[62] = 0; + this[63] = 0; + v10 = (char *)a2 + v6; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); + std::wios::_M_cache_locale(v2, (int)(this + 57)); + this[60] = 0; + v7 = *((_DWORD *)v10 + 28); + *((_DWORD *)v10 + 28) = 0; + this[58] = v7; + *((_WORD *)this + 118) = *((_WORD *)v10 + 58); + *((_BYTE *)this + 238) = v10[118]; + a2[1] = 0; + *this = &off_538868; + this[30] = off_53887C; + result = std::wfilebuf::basic_filebuf((int)(this + 2), (int)(a2 + 2)); + this[60] = this + 2; + return result; +} +// 4CAEDC: variable 'v9' is possibly undefined +// 538868: using guessed type int (*off_538868)(); +// 53887C: using guessed type int (*off_53887C[2])(); + +//----- (004CAF90) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 30); + std::ios_base::ios_base(this + 30); + *((_BYTE *)this + 238) = 0; + this[58] = 0; + *((_WORD *)this + 118) = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + *this = &unk_533B50; + this[30] = &unk_533B64; + this[1] = 0; + std::wios::init(v3, 0); + *this = &off_538868; + this[30] = off_53887C; + std::wfilebuf::basic_filebuf((int)(this + 2)); + std::wios::init(v3, (int)(this + 2)); + v5 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 538868: using guessed type int (*off_538868)(); +// 53887C: using guessed type int (*off_53887C[2])(); + +//----- (004CB0D0) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 30); + std::ios_base::ios_base(this + 30); + *((_BYTE *)this + 238) = 0; + this[58] = 0; + *((_WORD *)this + 118) = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + *this = &unk_533B50; + this[30] = &unk_533B64; + this[1] = 0; + std::wios::init(v3, 0); + *this = &off_538868; + this[30] = off_53887C; + std::wfilebuf::basic_filebuf((int)(this + 2)); + std::wios::init(v3, (int)(this + 2)); + v5 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 538868: using guessed type int (*off_538868)(); +// 53887C: using guessed type int (*off_53887C[2])(); + +//----- (004CB210) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 30); + std::ios_base::ios_base(this + 30); + *((_BYTE *)this + 238) = 0; + this[58] = 0; + *((_WORD *)this + 118) = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + *this = &unk_533B50; + this[30] = &unk_533B64; + this[1] = 0; + std::wios::init(v3, 0); + *this = &off_538868; + this[30] = off_53887C; + std::wfilebuf::basic_filebuf((int)(this + 2)); + std::wios::init(v3, (int)(this + 2)); + v5 = std::wfilebuf::open((int)(this + 2), *a2, a3 | 8); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 538868: using guessed type int (*off_538868)(); +// 53887C: using guessed type int (*off_53887C[2])(); + +//----- (004CB350) -------------------------------------------------------- +BOOL __fastcall std::wifstream::basic_ifstream(int a1) +{ + int v1; // esi + + v1 = a1 + 120; + std::ios_base::ios_base((_DWORD *)(a1 + 120)); + *(_BYTE *)(a1 + 238) = 0; + *(_DWORD *)(a1 + 232) = 0; + *(_WORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)(a1 + 252) = 0; + *(_DWORD *)a1 = &unk_533B50; + *(_DWORD *)(a1 + 120) = &unk_533B64; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_538868; + *(_DWORD *)(a1 + 120) = off_53887C; + std::wfilebuf::basic_filebuf(a1 + 8); + return std::wios::init(v1, a1 + 8); +} +// 538868: using guessed type int (*off_538868)(); +// 53887C: using guessed type int (*off_53887C[2])(); + +//----- (004CB440) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edx + char v6; // al + int v7; // edx + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-34h] + std::ios_base *v11; // [esp+18h] [ebp-20h] + int v12; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[1]; + *this = v4; + *(_DWORD *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = a3[1]; + v12 = (int)this + *(_DWORD *)(v4 - 12); + v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v12, v11, v10); + std::wios::_M_cache_locale((_DWORD *)v12, v12 + 108); + v5 = *((_DWORD *)v11 + 28); + *((_DWORD *)v11 + 28) = 0; + *(_DWORD *)(v12 + 120) = 0; + *(_DWORD *)(v12 + 112) = v5; + v6 = *((_BYTE *)v11 + 118); + *(_WORD *)(v12 + 116) = *((_WORD *)v11 + 58); + v7 = a2[3]; + *(_BYTE *)(v12 + 118) = v6; + v8 = *a2; + a3[1] = 0; + *this = v8; + *(_DWORD *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; + std::wfilebuf::basic_filebuf((int)(this + 2), (int)(a3 + 2)); + result = *(_DWORD *)(*this - 12); + *(_DWORD *)((char *)this + result + 120) = this + 2; + return result; +} +// 4CB47D: variable 'v10' is possibly undefined + +//----- (004CB520) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4) +{ + int v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + _DWORD *v10; // ecx + + v5 = (int)(this + 2); + v6 = a2[1]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v6 - 12), 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v9 = std::wfilebuf::open(v5, a3, a4 | 8); + v10 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v9 ) + return std::wios::clear(v10, 0); + else + return std::wios::clear(v10, v10[5] | 4); +} + +//----- (004CB610) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4) +{ + int v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + _DWORD *v10; // ecx + + v5 = (int)(this + 2); + v6 = a2[1]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v6 - 12), 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v9 = std::wfilebuf::open(v5, a3, a4 | 8); + v10 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v9 ) + return std::wios::clear(v10, 0); + else + return std::wios::clear(v10, v10[5] | 4); +} + +//----- (004CB700) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4) +{ + int v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + _DWORD *v10; // ecx + + v5 = (int)(this + 2); + v6 = a2[1]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v6 - 12), 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v9 = std::wfilebuf::open(v5, *a3, a4 | 8); + v10 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v9 ) + return std::wios::clear(v10, 0); + else + return std::wios::clear(v10, v10[5] | 4); +} + +//----- (004CB7F0) -------------------------------------------------------- +BOOL __thiscall std::wifstream::basic_ifstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + int v5; // eax + int v6; // edx + + v3 = (int)(this + 2); + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = *a2; + v6 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; + std::wfilebuf::basic_filebuf(v3); + return std::wios::init((int)this + *(_DWORD *)(*this - 12), v3); +} + +//----- (004CB890) -------------------------------------------------------- +void __fastcall std::wifstream::~wifstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 2; + *(v2 - 2) = &off_538868; + v2[28] = off_53887C; + *v2 = &off_538720; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 12); + a1[2] = &off_538A88; + std::locale::~locale((_DWORD **)a1 + 9); + *a1 = &unk_533B50; + a1[1] = 0; + a1[30] = &off_539484; + std::ios_base::~ios_base((int)(a1 + 30)); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538868: using guessed type int (*off_538868)(); +// 53887C: using guessed type int (*off_53887C[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004CB910) -------------------------------------------------------- +void __fastcall std::wifstream::~wifstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 8); + *(v2 - 2) = &off_538868; + v2[28] = off_53887C; + *v2 = &off_538720; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 48); + *(_DWORD *)(a1 + 8) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 36)); + *(_DWORD *)a1 = &unk_533B50; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 120) = &off_539484; + std::ios_base::~ios_base(a1 + 120); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538868: using guessed type int (*off_538868)(); +// 53887C: using guessed type int (*off_53887C[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004CB980) -------------------------------------------------------- +int __thiscall std::wifstream::~wifstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int result; // eax + + v3 = this + 2; + v4 = *a2; + *(v3 - 2) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 8) = a2[3]; + *v3 = &off_538720; + std::wfilebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 12); + this[2] = &off_538A88; + std::locale::~locale((_DWORD **)this + 9); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(_DWORD *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004CB9F0) -------------------------------------------------------- +_DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + std::wfilebuf::operator=((int)(this + 2), (int)(a2 + 2)); + return this; +} +// 4CBA14: variable 'v9' is possibly undefined + +//----- (004CBA90) -------------------------------------------------------- +int __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + result = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = result; + return result; +} +// 4CBAB1: variable 'v8' is possibly undefined + +//----- (004CBB20) -------------------------------------------------------- +int __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + std::ios_base *v6; // esi + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + v10 = this + 3; + std::ios_base::ios_base(this + 3); + *this = &unk_533B78; + *((_WORD *)this + 64) = 0; + v3 = a2[1]; + this[31] = 0; + this[1] = v3; + v4 = *a2; + *((_BYTE *)this + 130) = 0; + v5 = *(_DWORD *)(v4 - 12); + this[33] = 0; + this[34] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[3] = &unk_533B8C; + this[35] = 0; + this[36] = 0; + std::ios_base::_M_move((int)v10, v6, v9); + std::wios::_M_cache_locale(v10, (int)(this + 30)); + this[33] = 0; + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[31] = v7; + *((_WORD *)this + 64) = *((_WORD *)v6 + 58); + result = *((unsigned __int8 *)v6 + 118); + *((_BYTE *)this + 130) = result; + a2[1] = 0; + *this = &off_538890; + this[3] = off_5388B8; + this[2] = off_5388A4; + return result; +} +// 4CBB9A: variable 'v9' is possibly undefined +// 538890: using guessed type int (*off_538890)(); +// 5388A4: using guessed type int (*off_5388A4[2])(); +// 5388B8: using guessed type int (*off_5388B8[2])(); + +//----- (004CBC20) -------------------------------------------------------- +BOOL __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2) +{ + int v2; // esi + BOOL result; // eax + + v2 = (int)(this + 3); + std::ios_base::ios_base(this + 3); + this[31] = 0; + *((_WORD *)this + 64) = 0; + *((_BYTE *)this + 130) = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + *this = &unk_533B78; + this[3] = &unk_533B8C; + this[1] = 0; + std::wios::init(v2, a2); + this[2] = &unk_533BA0; + this[3] = &unk_533BB4; + result = std::wios::init(v2, a2); + *this = &off_538890; + this[3] = off_5388B8; + this[2] = off_5388A4; + return result; +} +// 538890: using guessed type int (*off_538890)(); +// 5388A4: using guessed type int (*off_5388A4[2])(); +// 5388B8: using guessed type int (*off_5388B8[2])(); + +//----- (004CBD00) -------------------------------------------------------- +BOOL __fastcall std::wiostream::basic_iostream(int a1) +{ + int v1; // esi + BOOL result; // eax + + v1 = a1 + 12; + std::ios_base::ios_base((_DWORD *)(a1 + 12)); + *(_DWORD *)(a1 + 124) = 0; + *(_WORD *)(a1 + 128) = 0; + *(_BYTE *)(a1 + 130) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)(a1 + 144) = 0; + *(_DWORD *)a1 = &unk_533B78; + *(_DWORD *)(a1 + 12) = &unk_533B8C; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_533BA0; + *(_DWORD *)(a1 + 12) = &unk_533BB4; + result = std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_538890; + *(_DWORD *)(a1 + 12) = off_5388B8; + *(_DWORD *)(a1 + 8) = off_5388A4; + return result; +} +// 538890: using guessed type int (*off_538890)(); +// 5388A4: using guessed type int (*off_5388A4[2])(); +// 5388B8: using guessed type int (*off_5388B8[2])(); + +//----- (004CBDE0) -------------------------------------------------------- +int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edi + int v6; // edi + std::ios_base *v7; // ebp + int v8; // eax + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int result; // eax + std::ios_base *v14; // [esp+4h] [ebp-28h] + + v4 = a2[1]; + v5 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; + this[1] = a3[1]; + v6 = (int)this + *(_DWORD *)(v4 - 12); + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v6, v7, v14); + std::wios::_M_cache_locale((_DWORD *)v6, v6 + 108); + v8 = *((_DWORD *)v7 + 28); + *(_DWORD *)(v6 + 120) = 0; + *((_DWORD *)v7 + 28) = 0; + *(_DWORD *)(v6 + 112) = v8; + *(_WORD *)(v6 + 116) = *((_WORD *)v7 + 58); + *(_BYTE *)(v6 + 118) = *((_BYTE *)v7 + 118); + v9 = a2[3]; + a3[1] = 0; + v10 = a2[4]; + this[2] = v9; + *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v10; + v11 = *a2; + v12 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; + result = a2[6]; + this[2] = result; + return result; +} +// 4CBE16: variable 'v14' is possibly undefined + +//----- (004CBE90) -------------------------------------------------------- +int __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3) +{ + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + int result; // eax + + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v4 - 12), a3); + v5 = a2[3]; + this[2] = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); + *v6 = a2[4]; + std::wios::init((int)v6, a3); + v7 = *a2; + v8 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + result = a2[6]; + this[2] = result; + return result; +} + +//----- (004CBF20) -------------------------------------------------------- +int __thiscall std::wiostream::basic_iostream(int *this, int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int result; // eax + + v3 = a2[1]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[3]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[4]; + std::wios::init((int)v5, 0); + v6 = *a2; + v7 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + result = a2[6]; + this[2] = result; + return result; +} + +//----- (004CBFB0) -------------------------------------------------------- +void __fastcall std::wiostream::~basic_iostream(char *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 12; + *(v2 - 1) = &unk_533BA0; + *(v2 - 3) = &unk_533B78; + *(v2 - 2) = 0; + *v2 = &off_539484; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004CBFF0) -------------------------------------------------------- +void __fastcall std::wiostream::~basic_iostream(int a1) +{ + _DWORD *v1; // ecx + + *(_DWORD *)(a1 + 8) = &unk_533BA0; + v1 = (_DWORD *)(a1 + 12); + *(v1 - 3) = &unk_533B78; + *(v1 - 2) = 0; + *v1 = &off_539484; + std::ios_base::~ios_base((int)v1); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004CC020) -------------------------------------------------------- +int __thiscall std::wiostream::~basic_iostream(int *this, int *a2) +{ + int v2; // edx + int v3; // edx + int v4; // edx + int result; // eax + + v2 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v2 - 12)) = a2[5]; + this[2] = a2[6]; + v3 = a2[3]; + this[2] = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 8) = a2[4]; + v4 = a2[1]; + *this = v4; + result = *(_DWORD *)(v4 - 12); + *(int *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} + +//----- (004CC070) -------------------------------------------------------- +_DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return this; +} +// 4CC091: variable 'v9' is possibly undefined + +//----- (004CC100) -------------------------------------------------------- +int __thiscall std::ofstream::open(char *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 4, a2, a3 | 0x10) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004CC170) -------------------------------------------------------- +int __thiscall std::ofstream::open(char *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 4, a2, a3 | 0x10) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004CC1E0) -------------------------------------------------------- +int __thiscall std::ofstream::open(char *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 4, *a2, a3 | 0x10) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004CC250) -------------------------------------------------------- +int __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + *((_BYTE *)v4 + 117) = v7; + return std::filebuf::swap((int)(this + 1), (int)(a2 + 1)); +} +// 4CC274: variable 'v9' is possibly undefined + +//----- (004CC2E0) -------------------------------------------------------- +int __fastcall std::ofstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::filebuf::close((int)(a1 + 1)); + if ( !result ) + return std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004CC320) -------------------------------------------------------- +bool __fastcall std::ofstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 44)); +} + +//----- (004CC330) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // edx + int v6; // eax + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-34h] + char *v9; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 28; + std::ios_base::ios_base(this + 28); + *this = &unk_533BC8; + *((_WORD *)this + 114) = 0; + v4 = *a2; + this[56] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[58] = 0; + this[59] = 0; + this[28] = &unk_533BDC; + this[60] = 0; + this[61] = 0; + v9 = (char *)a2 + v5; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v5), v8); + std::ios::_M_cache_locale(v2, (int)(this + 55)); + *this = &off_5388CC; + this[58] = 0; + v6 = *((_DWORD *)v9 + 28); + this[28] = off_5388E0; + *((_DWORD *)v9 + 28) = 0; + this[56] = v6; + *((_WORD *)this + 114) = *((_WORD *)v9 + 58); + result = std::filebuf::basic_filebuf((int)(this + 1), (int)(a2 + 1)); + this[58] = this + 1; + return result; +} +// 4CC39F: variable 'v8' is possibly undefined +// 5388CC: using guessed type int (*off_5388CC)(); +// 5388E0: using guessed type int (*off_5388E0[2])(); + +//----- (004CC440) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 112); + std::ios_base::ios_base((_DWORD *)this + 28); + *(_DWORD *)this = &unk_533BC8; + *((_DWORD *)this + 56) = 0; + *((_WORD *)this + 114) = 0; + *((_DWORD *)this + 58) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 28) = &unk_533BDC; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_5388CC; + *((_DWORD *)this + 28) = off_5388E0; + std::filebuf::basic_filebuf((int)(this + 4)); + std::ios::init(v3, (int)(this + 4)); + v5 = std::filebuf::open(this + 4, a2, a3 | 0x10); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 5388CC: using guessed type int (*off_5388CC)(); +// 5388E0: using guessed type int (*off_5388E0[2])(); + +//----- (004CC560) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 112); + std::ios_base::ios_base((_DWORD *)this + 28); + *(_DWORD *)this = &unk_533BC8; + *((_DWORD *)this + 56) = 0; + *((_WORD *)this + 114) = 0; + *((_DWORD *)this + 58) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 28) = &unk_533BDC; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_5388CC; + *((_DWORD *)this + 28) = off_5388E0; + std::filebuf::basic_filebuf((int)(this + 4)); + std::ios::init(v3, (int)(this + 4)); + v5 = std::filebuf::open(this + 4, a2, a3 | 0x10); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 5388CC: using guessed type int (*off_5388CC)(); +// 5388E0: using guessed type int (*off_5388E0[2])(); + +//----- (004CC680) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 112); + std::ios_base::ios_base((_DWORD *)this + 28); + *(_DWORD *)this = &unk_533BC8; + *((_DWORD *)this + 56) = 0; + *((_WORD *)this + 114) = 0; + *((_DWORD *)this + 58) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 28) = &unk_533BDC; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_5388CC; + *((_DWORD *)this + 28) = off_5388E0; + std::filebuf::basic_filebuf((int)(this + 4)); + std::ios::init(v3, (int)(this + 4)); + v5 = std::filebuf::open(this + 4, *a2, a3 | 0x10); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 5388CC: using guessed type int (*off_5388CC)(); +// 5388E0: using guessed type int (*off_5388E0[2])(); + +//----- (004CC7B0) -------------------------------------------------------- +BOOL __fastcall std::ofstream::basic_ofstream(int a1) +{ + int v1; // esi + + v1 = a1 + 112; + std::ios_base::ios_base((_DWORD *)(a1 + 112)); + *(_DWORD *)a1 = &unk_533BC8; + *(_DWORD *)(a1 + 224) = 0; + *(_WORD *)(a1 + 228) = 0; + *(_DWORD *)(a1 + 232) = 0; + *(_DWORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 112) = &unk_533BDC; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_5388CC; + *(_DWORD *)(a1 + 112) = off_5388E0; + std::filebuf::basic_filebuf(a1 + 4); + return std::ios::init(v1, a1 + 4); +} +// 5388CC: using guessed type int (*off_5388CC)(); +// 5388E0: using guessed type int (*off_5388E0[2])(); + +//----- (004CC880) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // esi + int v6; // edx + __int16 v7; // ax + int v8; // edx + int v9; // eax + int result; // eax + std::ios_base *v11; // [esp+4h] [ebp-34h] + std::ios_base *v12; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[1]; + *this = v4; + v5 = (int)this + *(_DWORD *)(v4 - 12); + *(_DWORD *)v5 = a2[2]; + v12 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v5, v12, v11); + std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); + *(_DWORD *)(v5 + 120) = 0; + v6 = *((_DWORD *)v12 + 28); + *((_DWORD *)v12 + 28) = 0; + v7 = *((_WORD *)v12 + 58); + *(_DWORD *)(v5 + 112) = v6; + *(_WORD *)(v5 + 116) = v7; + v8 = a2[3]; + v9 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; + std::filebuf::basic_filebuf((int)(this + 1), (int)(a3 + 1)); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)(this + 1); + return result; +} +// 4CC8B5: variable 'v11' is possibly undefined + +//----- (004CC940) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char *a3, int a4) +{ + char *v5; // edi + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + char *v11; // ecx + + v5 = this + 4; + v6 = a2[1]; + *(_DWORD *)this = v6; + v7 = &this[*(_DWORD *)(v6 - 12)]; + *(_DWORD *)v7 = a2[2]; + std::ios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v10 = std::filebuf::open(v5, a3, a4 | 0x10); + v11 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v10 ) + return std::ios::clear(v11, 0); + else + return std::ios::clear(v11, *((_DWORD *)v11 + 5) | 4); +} + +//----- (004CCA20) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, wchar_t *a3, int a4) +{ + char *v5; // edi + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + char *v11; // ecx + + v5 = this + 4; + v6 = a2[1]; + *(_DWORD *)this = v6; + v7 = &this[*(_DWORD *)(v6 - 12)]; + *(_DWORD *)v7 = a2[2]; + std::ios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v10 = std::filebuf::open(v5, a3, a4 | 0x10); + v11 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v10 ) + return std::ios::clear(v11, 0); + else + return std::ios::clear(v11, *((_DWORD *)v11 + 5) | 4); +} + +//----- (004CCB00) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char **a3, int a4) +{ + char *v5; // edi + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + char *v11; // ecx + + v5 = this + 4; + v6 = a2[1]; + *(_DWORD *)this = v6; + v7 = &this[*(_DWORD *)(v6 - 12)]; + *(_DWORD *)v7 = a2[2]; + std::ios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v10 = std::filebuf::open(v5, *a3, a4 | 0x10); + v11 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v10 ) + return std::ios::clear(v11, 0); + else + return std::ios::clear(v11, *((_DWORD *)v11 + 5) | 4); +} + +//----- (004CCBE0) -------------------------------------------------------- +BOOL __thiscall std::ofstream::basic_ofstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + + v3 = (int)(this + 1); + v4 = a2[1]; + *this = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); + *v5 = a2[2]; + std::ios::init((int)v5, 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + std::filebuf::basic_filebuf(v3); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), v3); +} + +//----- (004CCC70) -------------------------------------------------------- +void __fastcall std::ofstream::~ofstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 1; + *(v2 - 1) = &off_5388CC; + v2[27] = off_5388E0; + *v2 = &off_5386E0; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 11); + a1[1] = &off_538A48; + std::locale::~locale((_DWORD **)a1 + 8); + *a1 = &unk_533BC8; + a1[28] = &off_539474; + std::ios_base::~ios_base((int)(a1 + 28)); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 5388CC: using guessed type int (*off_5388CC)(); +// 5388E0: using guessed type int (*off_5388E0[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004CCCE0) -------------------------------------------------------- +void __fastcall std::ofstream::~ofstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 1) = &off_5388CC; + v2[27] = off_5388E0; + *v2 = &off_5386E0; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_533BC8; + *(_DWORD *)(a1 + 112) = &off_539474; + std::ios_base::~ios_base(a1 + 112); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 5388CC: using guessed type int (*off_5388CC)(); +// 5388E0: using guessed type int (*off_5388E0[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004CCD50) -------------------------------------------------------- +int __thiscall std::ofstream::~ofstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int result; // eax + + v3 = this + 1; + v4 = *a2; + *(v3 - 1) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 4) = a2[3]; + *v3 = &off_5386E0; + std::filebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 11); + this[1] = &off_538A48; + std::locale::~locale((_DWORD **)this + 8); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(_DWORD *)((char *)this + result) = a2[2]; + return result; +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004CCDC0) -------------------------------------------------------- +_DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + *((_BYTE *)v4 + 117) = v7; + std::filebuf::operator=((int)(this + 1), (int)(a2 + 1)); + return this; +} +// 4CCDE4: variable 'v9' is possibly undefined + +//----- (004CCE50) -------------------------------------------------------- +int __thiscall std::wofstream::open(int *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004CCEC0) -------------------------------------------------------- +int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004CCF30) -------------------------------------------------------- +int __thiscall std::wofstream::open(int *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 1), *a2, a3 | 0x10) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004CCFA0) -------------------------------------------------------- +int __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + *((_BYTE *)v4 + 118) = v6; + return std::wfilebuf::swap((int)(this + 1), (int)(a2 + 1)); +} +// 4CCFC4: variable 'v8' is possibly undefined + +//----- (004CD030) -------------------------------------------------------- +int __fastcall std::wofstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::wfilebuf::close((int)(a1 + 1)); + if ( !result ) + return std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004CD070) -------------------------------------------------------- +bool __fastcall std::wofstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 44)); +} + +//----- (004CD080) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // edx + int v6; // eax + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-34h] + char *v9; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 29; + std::ios_base::ios_base(this + 29); + *((_BYTE *)this + 234) = 0; + *((_WORD *)this + 116) = 0; + v4 = *a2; + this[57] = 0; + v5 = *(_DWORD *)(v4 - 12); + *this = &unk_533BF0; + this[59] = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + this[29] = &unk_533C04; + v9 = (char *)a2 + v5; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v5), v8); + std::wios::_M_cache_locale(v2, (int)(this + 56)); + *this = &off_5388F4; + this[59] = 0; + v6 = *((_DWORD *)v9 + 28); + this[29] = off_538908; + *((_DWORD *)v9 + 28) = 0; + this[57] = v6; + *((_WORD *)this + 116) = *((_WORD *)v9 + 58); + *((_BYTE *)this + 234) = v9[118]; + result = std::wfilebuf::basic_filebuf((int)(this + 1), (int)(a2 + 1)); + this[59] = this + 1; + return result; +} +// 4CD0F6: variable 'v8' is possibly undefined +// 5388F4: using guessed type int (*off_5388F4)(); +// 538908: using guessed type int (*off_538908[2])(); + +//----- (004CD1A0) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 29); + std::ios_base::ios_base(this + 29); + *((_BYTE *)this + 234) = 0; + this[57] = 0; + *((_WORD *)this + 116) = 0; + this[59] = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + *this = &unk_533BF0; + this[29] = &unk_533C04; + std::wios::init(v3, 0); + *this = &off_5388F4; + this[29] = off_538908; + std::wfilebuf::basic_filebuf((int)(this + 1)); + std::wios::init(v3, (int)(this + 1)); + v5 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 5388F4: using guessed type int (*off_5388F4)(); +// 538908: using guessed type int (*off_538908[2])(); + +//----- (004CD2D0) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 29); + std::ios_base::ios_base(this + 29); + *((_BYTE *)this + 234) = 0; + this[57] = 0; + *((_WORD *)this + 116) = 0; + this[59] = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + *this = &unk_533BF0; + this[29] = &unk_533C04; + std::wios::init(v3, 0); + *this = &off_5388F4; + this[29] = off_538908; + std::wfilebuf::basic_filebuf((int)(this + 1)); + std::wios::init(v3, (int)(this + 1)); + v5 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 5388F4: using guessed type int (*off_5388F4)(); +// 538908: using guessed type int (*off_538908[2])(); + +//----- (004CD400) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 29); + std::ios_base::ios_base(this + 29); + *((_BYTE *)this + 234) = 0; + this[57] = 0; + *((_WORD *)this + 116) = 0; + this[59] = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + *this = &unk_533BF0; + this[29] = &unk_533C04; + std::wios::init(v3, 0); + *this = &off_5388F4; + this[29] = off_538908; + std::wfilebuf::basic_filebuf((int)(this + 1)); + std::wios::init(v3, (int)(this + 1)); + v5 = std::wfilebuf::open((int)(this + 1), *a2, a3 | 0x10); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 5388F4: using guessed type int (*off_5388F4)(); +// 538908: using guessed type int (*off_538908[2])(); + +//----- (004CD530) -------------------------------------------------------- +BOOL __fastcall std::wofstream::basic_ofstream(int a1) +{ + int v1; // esi + + v1 = a1 + 116; + std::ios_base::ios_base((_DWORD *)(a1 + 116)); + *(_BYTE *)(a1 + 234) = 0; + *(_DWORD *)(a1 + 228) = 0; + *(_WORD *)(a1 + 232) = 0; + *(_DWORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)a1 = &unk_533BF0; + *(_DWORD *)(a1 + 116) = &unk_533C04; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_5388F4; + *(_DWORD *)(a1 + 116) = off_538908; + std::wfilebuf::basic_filebuf(a1 + 4); + return std::wios::init(v1, a1 + 4); +} +// 5388F4: using guessed type int (*off_5388F4)(); +// 538908: using guessed type int (*off_538908[2])(); + +//----- (004CD610) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // esi + int v6; // edx + char v7; // al + int v8; // edx + int v9; // eax + int result; // eax + std::ios_base *v11; // [esp+4h] [ebp-34h] + std::ios_base *v12; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[1]; + *this = v4; + v5 = (int)this + *(_DWORD *)(v4 - 12); + *(_DWORD *)v5 = a2[2]; + v12 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v5, v12, v11); + std::wios::_M_cache_locale((_DWORD *)v5, v5 + 108); + *(_DWORD *)(v5 + 120) = 0; + v6 = *((_DWORD *)v12 + 28); + *((_DWORD *)v12 + 28) = 0; + *(_DWORD *)(v5 + 112) = v6; + v7 = *((_BYTE *)v12 + 118); + *(_WORD *)(v5 + 116) = *((_WORD *)v12 + 58); + *(_BYTE *)(v5 + 118) = v7; + v8 = a2[3]; + v9 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; + std::wfilebuf::basic_filebuf((int)(this + 1), (int)(a3 + 1)); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)(this + 1); + return result; +} +// 4CD645: variable 'v11' is possibly undefined + +//----- (004CD6E0) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4) +{ + int v5; // edi + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + _DWORD *v11; // ecx + + v5 = (int)(this + 1); + v6 = a2[1]; + *this = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12)); + *v7 = a2[2]; + std::wios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v10 = std::wfilebuf::open(v5, a3, a4 | 0x10); + v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v10 ) + return std::wios::clear(v11, 0); + else + return std::wios::clear(v11, v11[5] | 4); +} + +//----- (004CD7C0) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4) +{ + int v5; // edi + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + _DWORD *v11; // ecx + + v5 = (int)(this + 1); + v6 = a2[1]; + *this = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12)); + *v7 = a2[2]; + std::wios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v10 = std::wfilebuf::open(v5, a3, a4 | 0x10); + v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v10 ) + return std::wios::clear(v11, 0); + else + return std::wios::clear(v11, v11[5] | 4); +} + +//----- (004CD8A0) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4) +{ + int v5; // edi + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + _DWORD *v11; // ecx + + v5 = (int)(this + 1); + v6 = a2[1]; + *this = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12)); + *v7 = a2[2]; + std::wios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v10 = std::wfilebuf::open(v5, *a3, a4 | 0x10); + v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v10 ) + return std::wios::clear(v11, 0); + else + return std::wios::clear(v11, v11[5] | 4); +} + +//----- (004CD980) -------------------------------------------------------- +BOOL __thiscall std::wofstream::basic_ofstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + + v3 = (int)(this + 1); + v4 = a2[1]; + *this = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); + *v5 = a2[2]; + std::wios::init((int)v5, 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + std::wfilebuf::basic_filebuf(v3); + return std::wios::init((int)this + *(_DWORD *)(*this - 12), v3); +} + +//----- (004CDA10) -------------------------------------------------------- +void __fastcall std::wofstream::~wofstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 1; + *(v2 - 1) = &off_5388F4; + v2[28] = off_538908; + *v2 = &off_538720; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 11); + a1[1] = &off_538A88; + std::locale::~locale((_DWORD **)a1 + 8); + *a1 = &unk_533BF0; + a1[29] = &off_539484; + std::ios_base::~ios_base((int)(a1 + 29)); + operator delete(a1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5388F4: using guessed type int (*off_5388F4)(); +// 538908: using guessed type int (*off_538908[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004CDA80) -------------------------------------------------------- +void __fastcall std::wofstream::~wofstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 1) = &off_5388F4; + v2[28] = off_538908; + *v2 = &off_538720; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_533BF0; + *(_DWORD *)(a1 + 116) = &off_539484; + std::ios_base::~ios_base(a1 + 116); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5388F4: using guessed type int (*off_5388F4)(); +// 538908: using guessed type int (*off_538908[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004CDAF0) -------------------------------------------------------- +int __thiscall std::wofstream::~wofstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int result; // eax + + v3 = this + 1; + v4 = *a2; + *(v3 - 1) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 4) = a2[3]; + *v3 = &off_538720; + std::wfilebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 11); + this[1] = &off_538A88; + std::locale::~locale((_DWORD **)this + 8); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(_DWORD *)((char *)this + result) = a2[2]; + return result; +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004CDB60) -------------------------------------------------------- +_DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + *((_BYTE *)v4 + 118) = v6; + std::wfilebuf::operator=((int)(this + 1), (int)(a2 + 1)); + return this; +} +// 4CDB84: variable 'v8' is possibly undefined + +//----- (004CDBF0) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::codecvt::codecvt(this, a3); + *this = &off_538918; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538918: using guessed type int (*off_538918)(); + +//----- (004CDC90) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_538918; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 538918: using guessed type int (*off_538918)(); + +//----- (004CDD30) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_538918; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 538918: using guessed type int (*off_538918)(); + +//----- (004CDDD0) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::codecvt::codecvt(this, a3); + *this = &off_538918; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538918: using guessed type int (*off_538918)(); + +//----- (004CDE70) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_538918; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 538918: using guessed type int (*off_538918)(); + +//----- (004CDF10) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_538918; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 538918: using guessed type int (*off_538918)(); + +//----- (004CDFB0) -------------------------------------------------------- +void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538918; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4CDFBC: variable 'v2' is possibly undefined +// 538918: using guessed type int (*off_538918)(); + +//----- (004CDFD0) -------------------------------------------------------- +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538918; + std::codecvt::~codecvt(a1); +} +// 4CDFD0: variable 'v1' is possibly undefined +// 538918: using guessed type int (*off_538918)(); + +//----- (004CDFE0) -------------------------------------------------------- +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538918; + std::codecvt::~codecvt(a1); +} +// 4CDFE0: variable 'v1' is possibly undefined +// 538918: using guessed type int (*off_538918)(); + +//----- (004CDFF0) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::codecvt::codecvt(this, a3); + *this = &off_538944; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538944: using guessed type int (*off_538944)(); + +//----- (004CE090) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_538944; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 538944: using guessed type int (*off_538944)(); + +//----- (004CE130) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_538944; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 538944: using guessed type int (*off_538944)(); + +//----- (004CE1D0) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::codecvt::codecvt(this, a3); + *this = &off_538944; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538944: using guessed type int (*off_538944)(); + +//----- (004CE270) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_538944; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 538944: using guessed type int (*off_538944)(); + +//----- (004CE310) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_538944; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 538944: using guessed type int (*off_538944)(); + +//----- (004CE3B0) -------------------------------------------------------- +void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538944; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4CE3BC: variable 'v2' is possibly undefined +// 538944: using guessed type int (*off_538944)(); + +//----- (004CE3D0) -------------------------------------------------------- +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538944; + std::codecvt::~codecvt(a1); +} +// 4CE3D0: variable 'v1' is possibly undefined +// 538944: using guessed type int (*off_538944)(); + +//----- (004CE3E0) -------------------------------------------------------- +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538944; + std::codecvt::~codecvt(a1); +} +// 4CE3E0: variable 'v1' is possibly undefined +// 538944: using guessed type int (*off_538944)(); + +//----- (004CE3F0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_539234; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_538970; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 538970: using guessed type int (*off_538970)(); +// 539234: using guessed type int (*off_539234)(); + +//----- (004CE4B0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_539234; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_538970; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 538970: using guessed type int (*off_538970)(); +// 539234: using guessed type int (*off_539234)(); + +//----- (004CE580) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_539234; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_538970; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 538970: using guessed type int (*off_538970)(); +// 539234: using guessed type int (*off_539234)(); + +//----- (004CE640) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_539234; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_538970; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 538970: using guessed type int (*off_538970)(); +// 539234: using guessed type int (*off_539234)(); + +//----- (004CE710) -------------------------------------------------------- +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539234; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CE729: variable 'v2' is possibly undefined +// 539234: using guessed type int (*off_539234)(); + +//----- (004CE740) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539234; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CE749: variable 'v1' is possibly undefined +// 539234: using guessed type int (*off_539234)(); + +//----- (004CE770) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539234; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CE779: variable 'v1' is possibly undefined +// 539234: using guessed type int (*off_539234)(); + +//----- (004CE7A0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_539250; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_53898C; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 53898C: using guessed type int (*off_53898C)(); +// 539250: using guessed type int (*off_539250)(); + +//----- (004CE860) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_539250; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_53898C; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 53898C: using guessed type int (*off_53898C)(); +// 539250: using guessed type int (*off_539250)(); + +//----- (004CE930) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_539250; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_53898C; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 53898C: using guessed type int (*off_53898C)(); +// 539250: using guessed type int (*off_539250)(); + +//----- (004CE9F0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_539250; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_53898C; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 53898C: using guessed type int (*off_53898C)(); +// 539250: using guessed type int (*off_539250)(); + +//----- (004CEAC0) -------------------------------------------------------- +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539250; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CEAD9: variable 'v2' is possibly undefined +// 539250: using guessed type int (*off_539250)(); + +//----- (004CEAF0) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539250; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CEAF9: variable 'v1' is possibly undefined +// 539250: using guessed type int (*off_539250)(); + +//----- (004CEB20) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539250; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CEB29: variable 'v1' is possibly undefined +// 539250: using guessed type int (*off_539250)(); + +//----- (004CEB50) -------------------------------------------------------- +_DWORD *__userpurge std::overflow_error::overflow_error@( + _DWORD *a1@, + std::overflow_error *this, + const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_5389A8; + return result; +} +// 4CEB5D: variable 'v5' is possibly undefined +// 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); + +//----- (004CEB80) -------------------------------------------------------- +_DWORD *__thiscall std::overflow_error::overflow_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::runtime_error::runtime_error(this, a2); + *this = &off_5389A8; + return result; +} +// 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); + +//----- (004CEBB0) -------------------------------------------------------- +unsigned int *__userpurge std::overflow_error::overflow_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_5389A8; + return result; +} +// 4CEBBD: variable 'v5' is possibly undefined +// 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); + +//----- (004CEBE0) -------------------------------------------------------- +void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) +{ + *a1 = &off_5389A8; + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} +// 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); + +//----- (004CEC00) -------------------------------------------------------- +void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) +{ + *a1 = &off_5389A8; + std::runtime_error::~runtime_error(a1); +} +// 5389A8: using guessed type void (__cdecl *off_5389A8)(std::overflow_error *__hidden this); + +//----- (004CEC10) -------------------------------------------------------- +void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1) +{ + *a1 = 0; + a1[1] = 0; + a1[2] = a1; + a1[3] = a1; + a1[4] = 0; +} + +//----- (004CEC2C) -------------------------------------------------------- +void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1) +{ + *a1 = 0; + a1[1] = 0; + a1[2] = a1; + a1[3] = a1; + a1[4] = 0; +} + +//----- (004CEC48) -------------------------------------------------------- +void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1) +{ + *a1 = 0; + a1[1] = 0; + a1[2] = a1; + a1[3] = a1; + a1[4] = 0; +} + +//----- (004CEC64) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004CEC74) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + void *v1; // ebx + + v1 = *(void **)(a1 + 12); + if ( v1 ) + { + WXML::DOMLib::WXMLDom::~WXMLDom(*(_DWORD *)(a1 + 12)); + operator delete(v1); + } +} + +//----- (004CEC98) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004CECA0) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) +{ + operator delete(a1); +} + +//----- (004CECB4) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004CECC4) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1, int a2) +{ + void ***v2; // ebx + + v2 = *(void ****)(a1 + 12); + if ( v2 ) + { + std::vector::~vector(v2 + 6, a2); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)v2); + operator delete(v2); + } +} + +//----- (004CECF0) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004CECF8) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) +{ + operator delete(a1); +} + +//----- (004CED0C) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004CED1C) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + int v1; // ebx + + v1 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + std::vector>::~vector((void **)(v1 + 52)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v1 + 40)); + std::string::_M_dispose((void **)v1); + operator delete((void *)v1); + } +} + +//----- (004CED50) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004CED58) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( + void *a1) +{ + operator delete(a1); +} + +//----- (004CED6C) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004CED7C) -------------------------------------------------------- +int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + int v1; // ecx + int result; // eax + + v1 = *(_DWORD *)(a1 + 12); + if ( v1 ) + return (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); + return result; +} + +//----- (004CED8C) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004CED94) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) +{ + operator delete(a1); +} + +//----- (004CEDA8) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004CEDB8) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + void *v1; // ebx + + v1 = *(void **)(a1 + 12); + if ( v1 ) + { + std::string::_M_dispose(*(void ***)(a1 + 12)); + operator delete(v1); + } +} + +//----- (004CEDDC) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004CEDE4) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) +{ + operator delete(a1); +} + +//----- (004CEE00) -------------------------------------------------------- +_DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx + + result = this; + v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); + if ( v7 == std::streambuf::seekoff ) + { + *this = -1; + this[1] = -1; + this[2] = 0; + } + else + { + v7(this, a2, a3, a4, a5, a6); + return this; + } + return result; +} + +//----- (004CEE80) -------------------------------------------------------- +_DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) +{ + _DWORD *result; // eax + _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx + + result = this; + v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); + if ( v8 == std::streambuf::seekpos ) + { + *this = -1; + this[1] = -1; + this[2] = 0; + } + else + { + v8(this, a2, a3, a4, a5, a6, a7); + return this; + } + return result; +} + +//----- (004CEF20) -------------------------------------------------------- +int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[2] += a2; + return result; +} + +//----- (004CEF30) -------------------------------------------------------- +int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[5] += a2; + return result; +} + +//----- (004CEF40) -------------------------------------------------------- +int __thiscall std::streambuf::setg(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + this[1] = a2; + this[2] = a3; + result = a4; + this[3] = a4; + return result; +} + +//----- (004CEF60) -------------------------------------------------------- +int __thiscall std::streambuf::setp(_DWORD *this, int a2, int a3) +{ + int result; // eax + + this[5] = a2; + this[4] = a2; + result = a3; + this[6] = a3; + return result; +} + +//----- (004CEF80) -------------------------------------------------------- +void __thiscall std::streambuf::swap(int this, int a2) +{ + volatile signed __int32 **v2; // esi + int v3; // edx + int v4; // ebx + int v5; // edx + int v6; // ebx + int v7; // edx + int v8; // ebx + int v9; // edx + int v10; // ebx + int v11; // edx + int v12; // ebx + int v13; // edx + const std::locale *v14; // [esp+4h] [ebp-28h] + _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF + + v2 = (volatile signed __int32 **)(this + 28); + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); + std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); + std::locale::~locale(v15); +} +// 4CEFE1: variable 'v14' is possibly undefined + +//----- (004CF020) -------------------------------------------------------- +int std::streambuf::sync() +{ + return 0; +} + +//----- (004CF030) -------------------------------------------------------- +int __thiscall std::streambuf::gbump(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[2] += a2; + return result; +} + +//----- (004CF050) -------------------------------------------------------- +int __thiscall std::streambuf::pbump(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[5] += a2; + return result; +} + +//----- (004CF060) -------------------------------------------------------- +int __fastcall std::streambuf::sgetc(_DWORD *a1) +{ + unsigned __int8 *v1; // eax + int result; // eax + int (*v3)(void); // edx + + v1 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + return *v1; + v3 = *(int (**)(void))(*a1 + 36); + result = -1; + if ( v3 != std::streambuf::underflow ) + return v3(); + return result; +} + +//----- (004CF090) -------------------------------------------------------- +int __fastcall std::streambuf::sgetn(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); +} + +//----- (004CF0A0) -------------------------------------------------------- +int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8 a2) +{ + unsigned __int8 *v2; // eax + int v3; // ebx + int (__stdcall *v5)(int); // eax + + v2 = (unsigned __int8 *)this[5]; + v3 = a2; + if ( this[6] > (unsigned int)v2 ) + { + *v2 = a2; + ++this[5]; + return v3; + } + v5 = *(int (__stdcall **)(int))(*this + 52); + if ( v5 == std::streambuf::overflow ) + return -1; + return v5(a2); +} + +//----- (004CF0E0) -------------------------------------------------------- +int __fastcall std::streambuf::sputn(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); +} + +//----- (004CF0F0) -------------------------------------------------------- +int __fastcall std::streambuf::uflow(_DWORD *a1) +{ + int (*v1)(); // eax + unsigned __int8 *v4; // eax + int v5; // edx + + v1 = *(int (**)())(*a1 + 36); + if ( v1 == std::streambuf::underflow ) + return -1; + if ( v1() == -1 ) + return -1; + v4 = (unsigned __int8 *)a1[2]; + v5 = *v4; + a1[2] = v4 + 1; + return v5; +} + +//----- (004CF140) -------------------------------------------------------- +int __fastcall std::streambuf::sbumpc(_DWORD *a1) +{ + unsigned __int8 *v1; // eax + int v2; // edx + int (*v4)(void); // edx + int (*v5)(); // eax + unsigned __int8 *v6; // eax + int v7; // edx + + v1 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + { + v2 = *v1; + a1[2] = v1 + 1; + return v2; + } + v4 = *(int (**)(void))(*a1 + 40); + if ( (char *)v4 != (char *)std::streambuf::uflow ) + return v4(); + v5 = *(int (**)())(*a1 + 36); + if ( v5 == std::streambuf::underflow ) + return -1; + if ( v5() == -1 ) + return -1; + v6 = (unsigned __int8 *)a1[2]; + v7 = *v6; + a1[2] = v6 + 1; + return v7; +} + +//----- (004CF1C0) -------------------------------------------------------- +int __fastcall std::streambuf::sbumpc(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); +} + +//----- (004CF1D0) -------------------------------------------------------- +void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3) +{ + return this; +} + +//----- (004CF1E0) -------------------------------------------------------- +int __fastcall std::streambuf::snextc(_DWORD *a1) +{ + unsigned int v1; // eax + unsigned int v2; // edx + unsigned __int8 *v3; // eax + int (*v5)(void); // edx + int (*v6)(); // eax + int (*v7)(); // eax + int v8; // eax + _DWORD *v9; // ecx + unsigned __int8 *v10; // eax + unsigned int v11; // edx + + v1 = a1[2]; + v2 = a1[3]; + if ( v1 < v2 ) + { + v3 = (unsigned __int8 *)(v1 + 1); + a1[2] = v3; + if ( (unsigned int)v3 < v2 ) + return *v3; + v7 = *(int (**)())(*a1 + 36); + if ( v7 == std::streambuf::underflow ) + return -1; + return v7(); + } + v5 = *(int (**)(void))(*a1 + 40); + if ( (char *)v5 == (char *)std::streambuf::uflow ) + { + v6 = *(int (**)())(*a1 + 36); + if ( v6 == std::streambuf::underflow || v6() == -1 ) + return -1; + v9 = a1; + v11 = a1[3]; + v10 = (unsigned __int8 *)(a1[2] + 1); + a1[2] = v10; + } + else + { + v8 = v5(); + v9 = a1; + if ( v8 == -1 ) + return -1; + v10 = (unsigned __int8 *)a1[2]; + v11 = a1[3]; + } + if ( (unsigned int)v10 < v11 ) + return *v10; + v7 = *(int (**)())(*v9 + 36); + if ( v7 == std::streambuf::underflow ) + return -1; + return v7(); +} + +//----- (004CF2A0) -------------------------------------------------------- +int (*__fastcall std::streambuf::stossc(_DWORD *a1))(void) +{ + unsigned int v1; // eax + int (*result)(void); // eax + int (*v3)(void); // edx + + v1 = a1[2]; + if ( v1 >= a1[3] ) + { + v3 = *(int (**)(void))(*a1 + 40); + if ( (char *)v3 == (char *)std::streambuf::uflow ) + { + result = *(int (**)(void))(*a1 + 36); + if ( result != std::streambuf::underflow ) + { + result = (int (*)(void))result(); + if ( result != (int (*)(void))-1 ) + ++a1[2]; + } + } + else + { + return (int (*)(void))v3(); + } + } + else + { + result = (int (*)(void))(v1 + 1); + a1[2] = result; + } + return result; +} + +//----- (004CF300) -------------------------------------------------------- +int __thiscall std::streambuf::xsgetn(_DWORD *this, char *a2, int a3) +{ + int v5; // esi + const void *Src; // ecx + int v7; // eax + size_t Size; // ebx + char *v10; // ebx + int (__fastcall *v11)(_DWORD *); // edx + int (*v12)(); // eax + _BYTE *v13; // edx + int v14; // eax + char *v15; // [esp+30h] [ebp+4h] + + if ( a3 > 0 ) + { + v5 = 0; + while ( 1 ) + { + Src = (const void *)this[2]; + v7 = this[3] - (_DWORD)Src; + if ( v7 ) + { + Size = a3 - v5; + if ( a3 - v5 > v7 ) + Size = this[3] - (_DWORD)Src; + v5 += Size; + v15 = a2; + memcpy(a2, Src, Size); + this[2] += Size; + if ( a3 <= v5 ) + return v5; + v10 = &v15[Size]; + } + else + { + v10 = a2; + } + v11 = *(int (__fastcall **)(_DWORD *))(*this + 40); + if ( v11 == std::streambuf::uflow ) + { + v12 = *(int (**)())(*this + 36); + if ( v12 == std::streambuf::underflow || ((int (__fastcall *)(_DWORD *))v12)(this) == -1 ) + return v5; + v13 = (_BYTE *)this[2]; + LOBYTE(v14) = *v13; + this[2] = v13 + 1; + } + else + { + v14 = v11(this); + if ( v14 == -1 ) + return v5; + } + ++v5; + *v10 = v14; + a2 = v10 + 1; + if ( a3 <= v5 ) + return v5; + } + } + return 0; +} + +//----- (004CF3D0) -------------------------------------------------------- +int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3) +{ + int v5; // ebx + void *v6; // ecx + int v7; // eax + size_t Size; // edx + int (__stdcall *v10)(int); // eax + size_t v11; // [esp+1Ch] [ebp-20h] + + if ( a3 > 0 ) + { + v5 = 0; + while ( 1 ) + { + v6 = (void *)this[5]; + v7 = this[6] - (_DWORD)v6; + if ( v7 ) + { + Size = a3 - v5; + if ( a3 - v5 > v7 ) + Size = this[6] - (_DWORD)v6; + v11 = Size; + memcpy(v6, a2, Size); + this[5] += v11; + v5 += v11; + if ( a3 <= v5 ) + return v5; + a2 += v11; + } + v10 = *(int (__stdcall **)(int))(*this + 52); + if ( v10 != std::streambuf::overflow && ((int (__thiscall *)(_DWORD *, _DWORD))v10)(this, *a2) != -1 ) + { + ++v5; + ++a2; + if ( a3 > v5 ) + continue; + } + return v5; + } + } + return 0; +} + +//----- (004CF470) -------------------------------------------------------- +int __fastcall std::streambuf::pubsync(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); + if ( v1 == std::streambuf::sync ) + return 0; + else + return v1(); +} + +//----- (004CF490) -------------------------------------------------------- +_DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + + *this = -1; + result = this; + this[1] = -1; + this[2] = 0; + return result; +} + +//----- (004CF4B0) -------------------------------------------------------- +_DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) +{ + _DWORD *result; // eax + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + return result; +} + +//----- (004CF4D0) -------------------------------------------------------- +int __fastcall std::streambuf::sungetc(_DWORD *a1) +{ + unsigned int v1; // eax + int result; // eax + int (__stdcall *v3)(int); // edx + + v1 = a1[2]; + if ( a1[1] >= v1 ) + { + v3 = *(int (__stdcall **)(int))(*a1 + 44); + result = -1; + if ( v3 != std::streambuf::pbackfail ) + return v3(-1); + } + else + { + a1[2] = v1 - 1; + return *(unsigned __int8 *)(v1 - 1); + } + return result; +} + +//----- (004CF520) -------------------------------------------------------- +int __fastcall std::streambuf::in_avail(_DWORD *a1) +{ + int result; // eax + int (*v2)(void); // edx + + result = a1[3] - a1[2]; + if ( !result ) + { + v2 = *(int (**)(void))(*a1 + 28); + if ( v2 != std::streambuf::showmanyc ) + return v2(); + } + return result; +} + +//----- (004CF550) -------------------------------------------------------- +int __stdcall std::streambuf::overflow(int a1) +{ + return -1; +} + +//----- (004CF560) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::streambuf::pubimbue( + volatile signed __int32 **this, + volatile signed __int32 **a2, + volatile signed __int32 **a3) +{ + int (__stdcall *v4)(int); // eax + const std::locale *v6; // [esp+4h] [ebp-24h] + + std::locale::locale(this, a2 + 7, v6); + v4 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); + if ( v4 != std::streambuf::imbue ) + ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v4)(a2, a3); + std::locale::operator=(a2 + 7, a3); + return this; +} +// 4CF574: variable 'v6' is possibly undefined +// 4CF040: using guessed type int __stdcall std::streambuf::imbue(int); + +//----- (004CF5D0) -------------------------------------------------------- +int __stdcall std::streambuf::pbackfail(int a1) +{ + return -1; +} + +//----- (004CF5E0) -------------------------------------------------------- +int __thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3) +{ + int result; // eax + void *(__thiscall *v4)(void *, int, int); // edx + + result = (int)this; + v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); + if ( v4 != std::streambuf::setbuf ) + return ((int (__stdcall *)(int, int))v4)(a2, a3); + return result; +} + +//----- (004CF600) -------------------------------------------------------- +int std::streambuf::showmanyc() +{ + return 0; +} + +//----- (004CF610) -------------------------------------------------------- +int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8 a2) +{ + unsigned int v2; // eax + int result; // eax + + v2 = this[2]; + if ( this[1] < v2 && *(_BYTE *)(v2 - 1) == a2 ) + { + this[2] = v2 - 1; + return *(unsigned __int8 *)(v2 - 1); + } + else + { + result = -1; + if ( *(int (__stdcall **)(int))(*this + 44) != std::streambuf::pbackfail ) + return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, a2); + } + return result; +} + +//----- (004CF650) -------------------------------------------------------- +int std::streambuf::underflow() +{ + return -1; +} + +//----- (004CF660) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( + _DWORD *a1@, + int a2, + const std::locale *a3) +{ + volatile signed __int32 **v3; // ecx + + *a1 = &off_538A48; + v3 = (volatile signed __int32 **)(a1 + 7); + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); +} +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004CF6A0) -------------------------------------------------------- +int __fastcall std::streambuf::basic_streambuf(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_538A48; + v1 = a1 + 7; + *(v1 - 6) = 0; + *(v1 - 5) = 0; + *(v1 - 4) = 0; + *(v1 - 3) = 0; + *(v1 - 2) = 0; + *(v1 - 1) = 0; + return std::locale::locale(v1); +} +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004CF6E0) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( + _DWORD *a1@, + int a2, + const std::locale *a3) +{ + volatile signed __int32 **v3; // ecx + + *a1 = &off_538A48; + v3 = (volatile signed __int32 **)(a1 + 7); + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); +} +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004CF720) -------------------------------------------------------- +int __fastcall std::streambuf::basic_streambuf(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_538A48; + v1 = a1 + 7; + *(v1 - 6) = 0; + *(v1 - 5) = 0; + *(v1 - 4) = 0; + *(v1 - 3) = 0; + *(v1 - 2) = 0; + *(v1 - 1) = 0; + return std::locale::locale(v1); +} +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004CF760) -------------------------------------------------------- +void __fastcall std::streambuf::~streambuf(char *a1) +{ + _DWORD **v2; // ecx + + v2 = (_DWORD **)(a1 + 28); + *(v2 - 7) = &off_538A48; + std::locale::~locale(v2); + operator delete(a1); +} +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004CF790) -------------------------------------------------------- +void __fastcall std::streambuf::~streambuf(int a1) +{ + *(_DWORD *)a1 = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004CF7A0) -------------------------------------------------------- +void __fastcall std::streambuf::~streambuf(int a1) +{ + *(_DWORD *)a1 = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004CF7B0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int a2) +{ + volatile signed __int32 **v3; // ecx + + v3 = this + 7; + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); + return this; +} + +//----- (004CF800) -------------------------------------------------------- +_DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx + + result = this; + v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); + if ( v7 == std::wstreambuf::seekoff ) + { + *this = -1; + this[1] = -1; + this[2] = 0; + } + else + { + v7(this, a2, a3, a4, a5, a6); + return this; + } + return result; +} + +//----- (004CF880) -------------------------------------------------------- +_DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) +{ + _DWORD *result; // eax + _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx + + result = this; + v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); + if ( v8 == std::wstreambuf::seekpos ) + { + *this = -1; + this[1] = -1; + this[2] = 0; + } + else + { + v8(this, a2, a3, a4, a5, a6, a7); + return this; + } + return result; +} + +//----- (004CF920) -------------------------------------------------------- +int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2) +{ + int result; // eax + + result = 2 * a2; + this[2] += 2 * a2; + return result; +} + +//----- (004CF930) -------------------------------------------------------- +int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2) +{ + int result; // eax + + result = 2 * a2; + this[5] += 2 * a2; + return result; +} + +//----- (004CF940) -------------------------------------------------------- +int __thiscall std::wstreambuf::setg(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + this[1] = a2; + this[2] = a3; + result = a4; + this[3] = a4; + return result; +} + +//----- (004CF960) -------------------------------------------------------- +int __thiscall std::wstreambuf::setp(_DWORD *this, int a2, int a3) +{ + int result; // eax + + this[5] = a2; + this[4] = a2; + result = a3; + this[6] = a3; + return result; +} + +//----- (004CF980) -------------------------------------------------------- +void __thiscall std::wstreambuf::swap(int this, int a2) +{ + volatile signed __int32 **v2; // esi + int v3; // edx + int v4; // ebx + int v5; // edx + int v6; // ebx + int v7; // edx + int v8; // ebx + int v9; // edx + int v10; // ebx + int v11; // edx + int v12; // ebx + int v13; // edx + const std::locale *v14; // [esp+4h] [ebp-28h] + _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF + + v2 = (volatile signed __int32 **)(this + 28); + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); + std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); + std::locale::~locale(v15); +} +// 4CF9E1: variable 'v14' is possibly undefined + +//----- (004CFA20) -------------------------------------------------------- +int std::wstreambuf::sync() +{ + return 0; +} + +//----- (004CFA30) -------------------------------------------------------- +int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2) +{ + int result; // eax + + result = 2 * a2; + this[2] += 2 * a2; + return result; +} + +//----- (004CFA50) -------------------------------------------------------- +int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2) +{ + int result; // eax + + result = 2 * a2; + this[5] += 2 * a2; + return result; +} + +//----- (004CFA60) -------------------------------------------------------- +int __fastcall std::wstreambuf::sgetc(_DWORD *a1) +{ + unsigned __int16 *v1; // eax + int result; // eax + int (*v3)(void); // edx + + v1 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + return *v1; + v3 = *(int (**)(void))(*a1 + 36); + result = -1; + if ( v3 != std::wstreambuf::underflow ) + return v3(); + return result; +} + +//----- (004CFA90) -------------------------------------------------------- +int __fastcall std::wstreambuf::sgetn(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); +} + +//----- (004CFAA0) -------------------------------------------------------- +int __thiscall std::wstreambuf::sputc(_DWORD *this, int a2) +{ + _WORD *v2; // eax + int result; // eax + + v2 = (_WORD *)this[5]; + if ( this[6] <= (unsigned int)v2 ) + { + result = -1; + if ( *(int (__stdcall **)(int))(*this + 52) != std::wstreambuf::overflow ) + return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 52))(this, (unsigned __int16)a2); + } + else + { + *v2 = a2; + this[5] = v2 + 1; + return a2; + } + return result; +} + +//----- (004CFAE0) -------------------------------------------------------- +int __fastcall std::wstreambuf::sputn(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); +} + +//----- (004CFAF0) -------------------------------------------------------- +int __fastcall std::wstreambuf::uflow(_DWORD *a1) +{ + int (*v1)(); // eax + unsigned __int16 *v4; // eax + int v5; // edx + + v1 = *(int (**)())(*a1 + 36); + if ( v1 == std::wstreambuf::underflow ) + return -1; + if ( (unsigned __int16)v1() == 0xFFFF ) + return -1; + v4 = (unsigned __int16 *)a1[2]; + v5 = *v4; + a1[2] = v4 + 1; + return v5; +} + +//----- (004CFB40) -------------------------------------------------------- +int __fastcall std::wstreambuf::sbumpc(_DWORD *a1) +{ + unsigned __int16 *v1; // eax + int v2; // edx + int (*v4)(void); // edx + int (*v5)(); // eax + unsigned __int16 *v6; // eax + int v7; // edx + + v1 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + { + v2 = *v1; + a1[2] = v1 + 1; + return v2; + } + v4 = *(int (**)(void))(*a1 + 40); + if ( (char *)v4 != (char *)std::wstreambuf::uflow ) + return v4(); + v5 = *(int (**)())(*a1 + 36); + if ( v5 == std::wstreambuf::underflow ) + return -1; + if ( (unsigned __int16)v5() == 0xFFFF ) + return -1; + v6 = (unsigned __int16 *)a1[2]; + v7 = *v6; + a1[2] = v6 + 1; + return v7; +} + +//----- (004CFBC0) -------------------------------------------------------- +int __fastcall std::wstreambuf::sbumpc(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); +} + +//----- (004CFBD0) -------------------------------------------------------- +void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3) +{ + return this; +} + +//----- (004CFBE0) -------------------------------------------------------- +int __fastcall std::wstreambuf::snextc(_DWORD *a1) +{ + __int16 *v1; // edx + __int16 v2; // ax + unsigned __int16 *v3; // eax + int (*v5)(); // eax + int (*v6)(void); // edx + int (*v7)(); // eax + __int16 v8; // ax + _DWORD *v9; // ecx + unsigned __int16 *v10; // eax + __int16 *v11; // edx + + v1 = (__int16 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + { + v2 = *v1; + a1[2] = v1 + 1; + if ( v2 == -1 ) + return -1; + v3 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v3 < a1[3] ) + return *v3; + v5 = *(int (**)())(*a1 + 36); + if ( v5 == std::wstreambuf::underflow ) + return -1; + return v5(); + } + v6 = *(int (**)(void))(*a1 + 40); + if ( (char *)v6 == (char *)std::wstreambuf::uflow ) + { + v7 = *(int (**)())(*a1 + 36); + if ( v7 == std::wstreambuf::underflow || (unsigned __int16)v7() == 0xFFFF ) + return -1; + v9 = a1; + v11 = (__int16 *)a1[2]; + v8 = *v11; + a1[2] = v11 + 1; + } + else + { + v8 = v6(); + v9 = a1; + } + if ( v8 == -1 ) + return -1; + v10 = (unsigned __int16 *)v9[2]; + if ( (unsigned int)v10 < v9[3] ) + return *v10; + v5 = *(int (**)())(*v9 + 36); + if ( v5 == std::wstreambuf::underflow ) + return -1; + return v5(); +} + +//----- (004CFCA0) -------------------------------------------------------- +int (*__fastcall std::wstreambuf::stossc(_DWORD *a1))(void) +{ + unsigned int v1; // eax + int (*result)(void); // eax + int (*v3)(void); // edx + + v1 = a1[2]; + if ( v1 >= a1[3] ) + { + v3 = *(int (**)(void))(*a1 + 40); + if ( (char *)v3 == (char *)std::wstreambuf::uflow ) + { + result = *(int (**)(void))(*a1 + 36); + if ( result != std::wstreambuf::underflow ) + { + result = (int (*)(void))result(); + if ( (_WORD)result != 0xFFFF ) + a1[2] += 2; + } + } + else + { + return (int (*)(void))v3(); + } + } + else + { + result = (int (*)(void))(v1 + 2); + a1[2] = result; + } + return result; +} + +//----- (004CFD00) -------------------------------------------------------- +int __thiscall std::wstreambuf::xsgetn(_DWORD *this, wchar_t *a2, int a3) +{ + int v5; // esi + const wchar_t *v6; // ebx + const wchar_t *S2; // eax + int v8; // ebx + int v9; // ebx + wchar_t *v11; // ebx + int (__fastcall *v12)(_DWORD *); // edx + int (*v13)(); // eax + wchar_t *v14; // edx + wchar_t v15; // ax + size_t N; // [esp+8h] [ebp-24h] + wchar_t *v17; // [esp+30h] [ebp+4h] + + if ( a3 > 0 ) + { + v5 = 0; + while ( 1 ) + { + v6 = (const wchar_t *)this[3]; + S2 = (const wchar_t *)this[2]; + if ( v6 == S2 ) + { + v11 = a2; + } + else + { + v8 = v6 - S2; + if ( v8 > a3 - v5 ) + v8 = a3 - v5; + N = v8; + v5 += v8; + v9 = v8; + v17 = a2; + wmemcpy(a2, S2, N); + this[2] += v9 * 2; + if ( a3 <= v5 ) + return v5; + v11 = &v17[v9]; + } + v12 = *(int (__fastcall **)(_DWORD *))(*this + 40); + if ( v12 == std::wstreambuf::uflow ) + { + v13 = *(int (**)())(*this + 36); + if ( v13 == std::wstreambuf::underflow || ((unsigned __int16 (__fastcall *)(_DWORD *))v13)(this) == 0xFFFF ) + return v5; + v14 = (wchar_t *)this[2]; + v15 = *v14; + this[2] = v14 + 1; + } + else + { + v15 = v12(this); + } + if ( v15 != 0xFFFF ) + { + ++v5; + *v11 = v15; + a2 = v11 + 1; + if ( a3 > v5 ) + continue; + } + return v5; + } + } + return 0; +} + +//----- (004CFDD0) -------------------------------------------------------- +int __thiscall std::wstreambuf::xsputn(_DWORD *this, wchar_t *a2, int a3) +{ + int v3; // esi + wchar_t *v5; // ebx + wchar_t *S1; // eax + int v7; // ebx + int v8; // ebx + int (__stdcall *v10)(int); // eax + size_t N; // [esp+8h] [ebp-34h] + _DWORD *v12; // [esp+1Ch] [ebp-20h] + _DWORD *v13; // [esp+1Ch] [ebp-20h] + + v3 = 0; + if ( a3 > 0 ) + { + while ( 1 ) + { + v5 = (wchar_t *)this[6]; + S1 = (wchar_t *)this[5]; + if ( v5 != S1 ) + { + v7 = v5 - S1; + if ( v7 > a3 - v3 ) + v7 = a3 - v3; + N = v7; + v3 += v7; + v8 = 2 * v7; + v12 = this; + wmemcpy(S1, a2, N); + this = v12; + v12[5] += v8; + if ( a3 <= v3 ) + return v3; + a2 = (wchar_t *)((char *)a2 + v8); + } + v10 = *(int (__stdcall **)(int))(*this + 52); + if ( v10 != std::wstreambuf::overflow ) + { + v13 = this; + if ( (unsigned __int16)v10(*a2) != 0xFFFF ) + { + ++v3; + ++a2; + this = v13; + if ( a3 > v3 ) + continue; + } + } + return v3; + } + } + return v3; +} + +//----- (004CFE70) -------------------------------------------------------- +int __fastcall std::wstreambuf::pubsync(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); + if ( v1 == std::wstreambuf::sync ) + return 0; + else + return v1(); +} + +//----- (004CFE90) -------------------------------------------------------- +_DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + + *this = -1; + result = this; + this[1] = -1; + this[2] = 0; + return result; +} + +//----- (004CFEB0) -------------------------------------------------------- +_DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) +{ + _DWORD *result; // eax + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + return result; +} + +//----- (004CFED0) -------------------------------------------------------- +int __fastcall std::wstreambuf::sungetc(_DWORD *a1) +{ + unsigned int v1; // eax + unsigned int v2; // edx + int result; // eax + int (__stdcall *v4)(int); // edx + + v1 = a1[2]; + if ( a1[1] >= v1 ) + { + v4 = *(int (__stdcall **)(int))(*a1 + 44); + result = -1; + if ( v4 != std::wstreambuf::pbackfail ) + return v4(0xFFFF); + } + else + { + v2 = v1 - 2; + result = *(unsigned __int16 *)(v1 - 2); + a1[2] = v2; + } + return result; +} + +//----- (004CFF20) -------------------------------------------------------- +int __fastcall std::wstreambuf::in_avail(_DWORD *a1) +{ + int v1; // eax + int v2; // edx + int result; // eax + int (*v4)(void); // edx + + v1 = a1[3]; + v2 = a1[2]; + if ( v1 != v2 ) + return (v1 - v2) >> 1; + v4 = *(int (**)(void))(*a1 + 28); + result = 0; + if ( v4 != std::wstreambuf::showmanyc ) + return v4(); + return result; +} + +//----- (004CFF50) -------------------------------------------------------- +int __stdcall std::wstreambuf::overflow(int a1) +{ + return -1; +} + +//----- (004CFF60) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::wstreambuf::pubimbue( + volatile signed __int32 **this, + volatile signed __int32 **a2, + volatile signed __int32 **a3) +{ + int (__stdcall *v4)(int); // eax + const std::locale *v6; // [esp+4h] [ebp-24h] + + std::locale::locale(this, a2 + 7, v6); + v4 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); + if ( v4 != std::wstreambuf::imbue ) + ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v4)(a2, a3); + std::locale::operator=(a2 + 7, a3); + return this; +} +// 4CFF74: variable 'v6' is possibly undefined +// 4CFA40: using guessed type int __stdcall std::wstreambuf::imbue(int); + +//----- (004CFFD0) -------------------------------------------------------- +int __stdcall std::wstreambuf::pbackfail(int a1) +{ + return -1; +} + +//----- (004CFFE0) -------------------------------------------------------- +int __thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3) +{ + int result; // eax + void *(__thiscall *v4)(void *, int, int); // edx + + result = (int)this; + v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); + if ( v4 != std::wstreambuf::setbuf ) + return ((int (__stdcall *)(int, int))v4)(a2, a3); + return result; +} + +//----- (004D0000) -------------------------------------------------------- +int std::wstreambuf::showmanyc() +{ + return 0; +} + +//----- (004D0010) -------------------------------------------------------- +int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2) +{ + unsigned int v2; // eax + int result; // eax + + v2 = this[2]; + if ( this[1] < v2 && *(_WORD *)(v2 - 2) == (_WORD)a2 ) + { + this[2] = v2 - 2; + return a2; + } + else + { + result = -1; + if ( *(int (__stdcall **)(int))(*this + 44) != std::wstreambuf::pbackfail ) + return (*(int (__stdcall **)(_DWORD))(*this + 44))((unsigned __int16)a2); + } + return result; +} + +//----- (004D0050) -------------------------------------------------------- +int std::wstreambuf::underflow() +{ + return -1; +} + +//----- (004D0060) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( + _DWORD *a1@, + int a2, + const std::locale *a3) +{ + volatile signed __int32 **v3; // ecx + + *a1 = &off_538A88; + v3 = (volatile signed __int32 **)(a1 + 7); + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); +} +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004D00A0) -------------------------------------------------------- +int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_538A88; + v1 = a1 + 7; + *(v1 - 6) = 0; + *(v1 - 5) = 0; + *(v1 - 4) = 0; + *(v1 - 3) = 0; + *(v1 - 2) = 0; + *(v1 - 1) = 0; + return std::locale::locale(v1); +} +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004D00E0) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( + _DWORD *a1@, + int a2, + const std::locale *a3) +{ + volatile signed __int32 **v3; // ecx + + *a1 = &off_538A88; + v3 = (volatile signed __int32 **)(a1 + 7); + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); +} +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004D0120) -------------------------------------------------------- +int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_538A88; + v1 = a1 + 7; + *(v1 - 6) = 0; + *(v1 - 5) = 0; + *(v1 - 4) = 0; + *(v1 - 3) = 0; + *(v1 - 2) = 0; + *(v1 - 1) = 0; + return std::locale::locale(v1); +} +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004D0160) -------------------------------------------------------- +void __fastcall std::wstreambuf::~wstreambuf(char *a1) +{ + _DWORD **v2; // ecx + + v2 = (_DWORD **)(a1 + 28); + *(v2 - 7) = &off_538A88; + std::locale::~locale(v2); + operator delete(a1); +} +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004D0190) -------------------------------------------------------- +void __fastcall std::wstreambuf::~wstreambuf(int a1) +{ + *(_DWORD *)a1 = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004D01A0) -------------------------------------------------------- +void __fastcall std::wstreambuf::~wstreambuf(int a1) +{ + *(_DWORD *)a1 = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004D01B0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int a2) +{ + volatile signed __int32 **v3; // ecx + + v3 = this + 7; + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); + return this; +} + +//----- (004D0200) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_538AC8; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538AC8: using guessed type int (*off_538AC8)(); + +//----- (004D02A0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) +{ + return std::messages_byname::messages_byname(this, *a2, a3); +} + +//----- (004D02B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_538AC8; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538AC8: using guessed type int (*off_538AC8)(); + +//----- (004D0350) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) +{ + return std::messages_byname::messages_byname(this, *a2, a3); +} + +//----- (004D0360) -------------------------------------------------------- +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539368; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D0379: variable 'v2' is possibly undefined +// 539368: using guessed type int (*off_539368)(); + +//----- (004D0390) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539368; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4D0399: variable 'v1' is possibly undefined +// 539368: using guessed type int (*off_539368)(); + +//----- (004D03C0) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539368; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4D03C9: variable 'v1' is possibly undefined +// 539368: using guessed type int (*off_539368)(); + +//----- (004D03F0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_538AE4; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538AE4: using guessed type int (*off_538AE4)(); + +//----- (004D0490) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) +{ + return std::messages_byname::messages_byname(this, *a2, a3); +} + +//----- (004D04A0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_538AE4; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538AE4: using guessed type int (*off_538AE4)(); + +//----- (004D0540) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) +{ + return std::messages_byname::messages_byname(this, *a2, a3); +} + +//----- (004D0550) -------------------------------------------------------- +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539384; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D0569: variable 'v2' is possibly undefined +// 539384: using guessed type int (*off_539384)(); + +//----- (004D0580) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539384; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4D0589: variable 'v1' is possibly undefined +// 539384: using guessed type int (*off_539384)(); + +//----- (004D05B0) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539384; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4D05B9: variable 'v1' is possibly undefined +// 539384: using guessed type int (*off_539384)(); + +//----- (004D05E0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_5393A0; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538B00; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538B00: using guessed type int (*off_538B00)(); +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004D06D0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_5393A0; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538B00; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538B00: using guessed type int (*off_538B00)(); +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004D07C0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_5393A0; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538B00; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538B00: using guessed type int (*off_538B00)(); +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004D08B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_5393A0; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538B00; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538B00: using guessed type int (*off_538B00)(); +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004D09A0) -------------------------------------------------------- +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538B00; + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4D09AC: variable 'v2' is possibly undefined +// 538B00: using guessed type int (*off_538B00)(); + +//----- (004D09C0) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538B00; + std::numpunct::~numpunct(a1); +} +// 4D09C0: variable 'v1' is possibly undefined +// 538B00: using guessed type int (*off_538B00)(); + +//----- (004D09D0) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538B00; + std::numpunct::~numpunct(a1); +} +// 4D09D0: variable 'v1' is possibly undefined +// 538B00: using guessed type int (*off_538B00)(); + +//----- (004D09E0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_5393C4; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538B24; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538B24: using guessed type int (*off_538B24)(); +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004D0AD0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_5393C4; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538B24; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538B24: using guessed type int (*off_538B24)(); +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004D0BC0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_5393C4; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538B24; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538B24: using guessed type int (*off_538B24)(); +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004D0CB0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_5393C4; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538B24; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538B24: using guessed type int (*off_538B24)(); +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004D0DA0) -------------------------------------------------------- +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538B24; + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4D0DAC: variable 'v2' is possibly undefined +// 538B24: using guessed type int (*off_538B24)(); + +//----- (004D0DC0) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538B24; + std::numpunct::~numpunct(a1); +} +// 4D0DC0: variable 'v1' is possibly undefined +// 538B24: using guessed type int (*off_538B24)(); + +//----- (004D0DD0) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538B24; + std::numpunct::~numpunct(a1); +} +// 4D0DD0: variable 'v1' is possibly undefined +// 538B24: using guessed type int (*off_538B24)(); + +//----- (004D0DE0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B48; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B48: using guessed type int (*off_538B48)(); + +//----- (004D0E00) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B48; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B48: using guessed type int (*off_538B48)(); + +//----- (004D0E20) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B48; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B48: using guessed type int (*off_538B48)(); + +//----- (004D0E40) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B48; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B48: using guessed type int (*off_538B48)(); + +//----- (004D0E60) -------------------------------------------------------- +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5393E8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D0E6C: variable 'v2' is possibly undefined +// 5393E8: using guessed type int (*off_5393E8)(); + +//----- (004D0E80) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5393E8; + std::locale::facet::~facet(a1); +} +// 4D0E80: variable 'v1' is possibly undefined +// 5393E8: using guessed type int (*off_5393E8)(); + +//----- (004D0E90) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5393E8; + std::locale::facet::~facet(a1); +} +// 4D0E90: variable 'v1' is possibly undefined +// 5393E8: using guessed type int (*off_5393E8)(); + +//----- (004D0EA0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B70; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B70: using guessed type int (*off_538B70)(); + +//----- (004D0EC0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B70; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B70: using guessed type int (*off_538B70)(); + +//----- (004D0EE0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B70; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B70: using guessed type int (*off_538B70)(); + +//----- (004D0F00) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B70; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B70: using guessed type int (*off_538B70)(); + +//----- (004D0F20) -------------------------------------------------------- +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539410; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D0F2C: variable 'v2' is possibly undefined +// 539410: using guessed type int (*off_539410)(); + +//----- (004D0F40) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539410; + std::locale::facet::~facet(a1); +} +// 4D0F40: variable 'v1' is possibly undefined +// 539410: using guessed type int (*off_539410)(); + +//----- (004D0F50) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539410; + std::locale::facet::~facet(a1); +} +// 4D0F50: variable 'v1' is possibly undefined +// 539410: using guessed type int (*off_539410)(); + +//----- (004D0F60) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B98; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B98: using guessed type int (*off_538B98)(); + +//----- (004D0F80) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B98; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B98: using guessed type int (*off_538B98)(); + +//----- (004D0FA0) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B98; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B98: using guessed type int (*off_538B98)(); + +//----- (004D0FC0) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B98; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B98: using guessed type int (*off_538B98)(); + +//----- (004D0FE0) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B98; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B98: using guessed type int (*off_538B98)(); + +//----- (004D1000) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538B98; + result = a3 != 0; + this[1] = result; + return result; +} +// 538B98: using guessed type int (*off_538B98)(); + +//----- (004D1020) -------------------------------------------------------- +void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539438; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D102C: variable 'v2' is possibly undefined +// 539438: using guessed type int (*off_539438)(); + +//----- (004D1040) -------------------------------------------------------- +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539438; + std::locale::facet::~facet(a1); +} +// 4D1040: variable 'v1' is possibly undefined +// 539438: using guessed type int (*off_539438)(); + +//----- (004D1050) -------------------------------------------------------- +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539438; + std::locale::facet::~facet(a1); +} +// 4D1050: variable 'v1' is possibly undefined +// 539438: using guessed type int (*off_539438)(); + +//----- (004D1060) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538BAC; + result = a3 != 0; + this[1] = result; + return result; +} +// 538BAC: using guessed type int (*off_538BAC)(); + +//----- (004D1080) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538BAC; + result = a3 != 0; + this[1] = result; + return result; +} +// 538BAC: using guessed type int (*off_538BAC)(); + +//----- (004D10A0) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538BAC; + result = a3 != 0; + this[1] = result; + return result; +} +// 538BAC: using guessed type int (*off_538BAC)(); + +//----- (004D10C0) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538BAC; + result = a3 != 0; + this[1] = result; + return result; +} +// 538BAC: using guessed type int (*off_538BAC)(); + +//----- (004D10E0) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538BAC; + result = a3 != 0; + this[1] = result; + return result; +} +// 538BAC: using guessed type int (*off_538BAC)(); + +//----- (004D1100) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538BAC; + result = a3 != 0; + this[1] = result; + return result; +} +// 538BAC: using guessed type int (*off_538BAC)(); + +//----- (004D1120) -------------------------------------------------------- +void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_53944C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D112C: variable 'v2' is possibly undefined +// 53944C: using guessed type int (*off_53944C)(); + +//----- (004D1140) -------------------------------------------------------- +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53944C; + std::locale::facet::~facet(a1); +} +// 4D1140: variable 'v1' is possibly undefined +// 53944C: using guessed type int (*off_53944C)(); + +//----- (004D1150) -------------------------------------------------------- +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53944C; + std::locale::facet::~facet(a1); +} +// 4D1150: variable 'v1' is possibly undefined +// 53944C: using guessed type int (*off_53944C)(); + +//----- (004D1160) -------------------------------------------------------- +_DWORD *__userpurge std::underflow_error::underflow_error@( + _DWORD *a1@, + std::underflow_error *this, + const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_538BC0; + return result; +} +// 4D116D: variable 'v5' is possibly undefined +// 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); + +//----- (004D1190) -------------------------------------------------------- +_DWORD *__thiscall std::underflow_error::underflow_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::runtime_error::runtime_error(this, a2); + *this = &off_538BC0; + return result; +} +// 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); + +//----- (004D11C0) -------------------------------------------------------- +unsigned int *__userpurge std::underflow_error::underflow_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_538BC0; + return result; +} +// 4D11CD: variable 'v5' is possibly undefined +// 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); + +//----- (004D11F0) -------------------------------------------------------- +void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) +{ + *a1 = &off_538BC0; + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} +// 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); + +//----- (004D1210) -------------------------------------------------------- +void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) +{ + *a1 = &off_538BC0; + std::runtime_error::~runtime_error(a1); +} +// 538BC0: using guessed type void (__cdecl *off_538BC0)(std::underflow_error *__hidden this); + +//----- (004D1220) -------------------------------------------------------- +int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1) +{ + signed __int32 v1; // eax + int result; // eax + signed __int32 v3; // eax + int v4; // [esp-1Ch] [ebp-1Ch] + int v5; // [esp-18h] [ebp-18h] + int v6; // [esp-14h] [ebp-14h] + volatile signed __int32 *v7; // [esp-10h] [ebp-10h] + int v8; // [esp-Ch] [ebp-Ch] + int v9; // [esp-8h] [ebp-8h] + + if ( _CRT_MT ) + { + v1 = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); + } + else + { + v1 = *((_DWORD *)a1 + 1); + *((_DWORD *)a1 + 1) = v1 - 1; + } + result = v1 - 1; + if ( !result ) + { + (*(void (__stdcall **)(int, int, int, volatile signed __int32 *, int, int))(*a1 + 8))(v4, v5, v6, a1, v8, v9); + if ( _CRT_MT ) + { + v3 = _InterlockedExchangeAdd(v7 + 2, 0xFFFFFFFF); + } + else + { + v3 = *((_DWORD *)v7 + 2); + *((_DWORD *)v7 + 2) = v3 - 1; + } + result = v3 - 1; + if ( !result ) + return (*(int (__fastcall **)(volatile signed __int32 *))(*v7 + 12))(v7); + } + return result; +} +// 4D124A: variable 'v4' is possibly undefined +// 4D124A: variable 'v5' is possibly undefined +// 4D124A: variable 'v6' is possibly undefined +// 4D124A: variable 'v8' is possibly undefined +// 4D124A: variable 'v9' is possibly undefined +// 4D125C: variable 'v7' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004D1280) -------------------------------------------------------- +void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // esi + _DWORD *(__thiscall *v4)(char *, int); // eax + unsigned int v5; // eax + bool v6; // al + _DWORD *(__thiscall *v7)(_DWORD *, int); // eax + unsigned int v8; // eax + _DWORD *(__thiscall *v9)(int *, int); // eax + unsigned int v10; // eax + int (__fastcall *v11)(int); // eax + char v12; // al + int (__fastcall *v13)(int); // eax + char v14; // al + char v15; // al + char *v16; // esi + void (__thiscall *v17)(_BYTE *, char *, char *, int); // eax + char *v18; // esi + char v19; // al + void (__thiscall *v20)(_BYTE *, char *, char *, int); // eax + volatile signed __int32 *v21; // ecx + volatile signed __int32 *v22; // ecx + unsigned int v23; // [esp+Ch] [ebp-3Ch] + unsigned int v24; // [esp+Ch] [ebp-3Ch] + unsigned int v25; // [esp+Ch] [ebp-3Ch] + std::string *v26; // [esp+10h] [ebp-38h] + std::string *v27; // [esp+14h] [ebp-34h] + std::string *v28; // [esp+18h] [ebp-30h] + _BYTE *v29; // [esp+1Ch] [ebp-2Ch] + char v30[5]; // [esp+23h] [ebp-25h] BYREF + _DWORD *v31; // [esp+28h] [ebp-20h] BYREF + int v32[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = *(_DWORD *(__thiscall **)(char *, int))(*v3 + 16); + if ( (char *)v4 == (char *)std::numpunct::do_grouping ) + std::string::string(&v30[1], *(char **)(v3[2] + 8), (int)v32); + else + v4(&v30[1], (int)v3); + v5 = *(_DWORD *)(*(_DWORD *)&v30[1] - 12); + *(_DWORD *)(this + 12) = v5; + v28 = (std::string *)operator new[](v5); + std::string::copy(&v30[1], v28, *(char **)(this + 12), 0, v23); + v6 = 0; + if ( *(_DWORD *)(this + 12) ) + v6 = (unsigned __int8)(*(_BYTE *)v28 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v6; + v7 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); + if ( v7 == std::numpunct::do_truename ) + std::string::string(&v31, *(char **)(v3[2] + 20), (int)v32); + else + v7(&v31, (int)v3); + v8 = *(v31 - 3); + *(_DWORD *)(this + 24) = v8; + v26 = (std::string *)operator new[](v8); + std::string::copy(&v31, v26, *(char **)(this + 24), 0, v24); + v9 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 24); + if ( v9 == std::numpunct::do_falsename ) + std::string::string(v32, *(char **)(v3[2] + 28), (int)v30); + else + v9(v32, (int)v3); + v10 = *(_DWORD *)(v32[0] - 12); + *(_DWORD *)(this + 32) = v10; + v27 = (std::string *)operator new[](v10); + std::string::copy(v32, v27, *(char **)(this + 32), 0, v25); + v11 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v11 == std::numpunct::do_decimal_point ) + v12 = *(_BYTE *)(v3[2] + 36); + else + v12 = v11((int)v3); + *(_BYTE *)(this + 36) = v12; + v13 = *(int (__fastcall **)(int))(*v3 + 12); + if ( v13 == std::numpunct::do_thousands_sep ) + v14 = *(_BYTE *)(v3[2] + 37); + else + v14 = v13((int)v3); + *(_BYTE *)(this + 37) = v14; + v29 = std::use_facet>(a2); + v15 = v29[28]; + v16 = std::__num_base::_S_atoms_out[0]; + if ( v15 == 1 ) + goto LABEL_16; + if ( v15 ) + { + v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); + if ( (char *)v17 == (char *)std::ctype::do_widen ) + { +LABEL_16: + *(_DWORD *)(this + 38) = *(_DWORD *)v16; + *(_DWORD *)(this + 42) = *((_DWORD *)v16 + 1); + *(_DWORD *)(this + 46) = *((_DWORD *)v16 + 2); + *(_DWORD *)(this + 50) = *((_DWORD *)v16 + 3); + *(_DWORD *)(this + 54) = *((_DWORD *)v16 + 4); + *(_DWORD *)(this + 58) = *((_DWORD *)v16 + 5); + *(_DWORD *)(this + 62) = *((_DWORD *)v16 + 6); + *(_DWORD *)(this + 66) = *((_DWORD *)v16 + 7); + *(_DWORD *)(this + 70) = *((_DWORD *)v16 + 8); + goto LABEL_17; + } + } + else + { + std::ctype::_M_widen_init((int)v29); + v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); + if ( (char *)v17 == (char *)std::ctype::do_widen ) + goto LABEL_16; + } + v17(v29, v16, v16 + 36, this + 38); +LABEL_17: + v18 = std::__num_base::_S_atoms_in[0]; + v19 = v29[28]; + if ( v19 == 1 ) + { +LABEL_20: + *(_DWORD *)(this + 74) = *(_DWORD *)v18; + *(_DWORD *)(this + 78) = *((_DWORD *)v18 + 1); + *(_DWORD *)(this + 82) = *((_DWORD *)v18 + 2); + *(_DWORD *)(this + 86) = *((_DWORD *)v18 + 3); + *(_DWORD *)(this + 90) = *((_DWORD *)v18 + 4); + *(_DWORD *)(this + 94) = *((_DWORD *)v18 + 5); + *(_WORD *)(this + 98) = *((_WORD *)v18 + 12); + goto LABEL_21; + } + if ( v19 ) + { + v20 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); + if ( (char *)v20 == (char *)std::ctype::do_widen ) + goto LABEL_20; + } + else + { + std::ctype::_M_widen_init((int)v29); + v20 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); + if ( (char *)v20 == (char *)std::ctype::do_widen ) + goto LABEL_20; + } + v20(v29, v18, v18 + 26, this + 74); +LABEL_21: + *(_BYTE *)(this + 100) = 1; + *(_DWORD *)(this + 8) = v28; + *(_DWORD *)(this + 20) = v26; + *(_DWORD *)(this + 28) = v27; + if ( (_UNKNOWN *)v32[0] == &unk_51641C ) + { + v21 = v31 - 3; + if ( v31 == (_DWORD *)&unk_51641C ) + goto LABEL_23; + } + else + { + std::string::_Rep::_M_dispose((volatile signed __int32 *)(v32[0] - 12), (int)v30); + v21 = v31 - 3; + if ( v31 == (_DWORD *)&unk_51641C ) + { +LABEL_23: + v22 = (volatile signed __int32 *)(*(_DWORD *)&v30[1] - 12); + if ( *(_UNKNOWN **)&v30[1] == &unk_51641C ) + return; +LABEL_36: + std::string::_Rep::_M_dispose(v22, (int)v30); + return; + } + } + std::string::_Rep::_M_dispose(v21, (int)v30); + v22 = (volatile signed __int32 *)(*(_DWORD *)&v30[1] - 12); + if ( *(_UNKNOWN **)&v30[1] != &unk_51641C ) + goto LABEL_36; +} +// 4D12F1: variable 'v23' is possibly undefined +// 4D136F: variable 'v24' is possibly undefined +// 4D13D0: variable 'v25' is possibly undefined +// 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; + +//----- (004D1790) -------------------------------------------------------- +int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_538BD4; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 16) = 0; + this[1] = a2 != 0; + result = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + *((_WORD *)this + 18) = 0; + *((_BYTE *)this + 100) = 0; + return result; +} +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (004D17E0) -------------------------------------------------------- +int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_538BD4; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 16) = 0; + this[1] = a2 != 0; + result = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + *((_WORD *)this + 18) = 0; + *((_BYTE *)this + 100) = 0; + return result; +} +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (004D1830) -------------------------------------------------------- +void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__numpunct_cache::~__numpunct_cache(v2); + operator delete(a1); +} +// 4D1837: variable 'v2' is possibly undefined + +//----- (004D1860) -------------------------------------------------------- +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + int v2; // ebx + bool v3; // zf + + v2 = v1; + v3 = *(_BYTE *)(v1 + 100) == 0; + *(_DWORD *)v1 = &off_538BD4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( *(_DWORD *)(v2 + 20) ) + operator delete[](*(void **)(v2 + 20)); + if ( *(_DWORD *)(v2 + 28) ) + operator delete[](*(void **)(v2 + 28)); + } + std::locale::facet::~facet(a1); +} +// 4D1861: variable 'v1' is possibly undefined +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (004D18B0) -------------------------------------------------------- +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + int v2; // ebx + bool v3; // zf + + v2 = v1; + v3 = *(_BYTE *)(v1 + 100) == 0; + *(_DWORD *)v1 = &off_538BD4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( *(_DWORD *)(v2 + 20) ) + operator delete[](*(void **)(v2 + 20)); + if ( *(_DWORD *)(v2 + 28) ) + operator delete[](*(void **)(v2 + 28)); + } + std::locale::facet::~facet(a1); +} +// 4D18B1: variable 'v1' is possibly undefined +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (004D1900) -------------------------------------------------------- +void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // esi + _DWORD *(__thiscall *v4)(char *, int); // eax + unsigned int v5; // eax + std::string *v6; // edi + bool v7; // al + _DWORD *(__thiscall *v8)(_DWORD *, int); // eax + unsigned int v9; // eax + _DWORD *(__thiscall *v10)(int *, int); // eax + unsigned int v11; // eax + int v12; // edx + int (__fastcall *v13)(int); // eax + __int16 v14; // ax + int (__fastcall *v15)(int); // eax + __int16 v16; // ax + void *v17; // esi + volatile signed __int32 *v18; // ecx + volatile signed __int32 *v19; // ecx + unsigned int v20; // [esp+Ch] [ebp-3Ch] + wchar_t *v21; // [esp+18h] [ebp-30h] + wchar_t *v22; // [esp+1Ch] [ebp-2Ch] + char v23[5]; // [esp+23h] [ebp-25h] BYREF + _DWORD *v24; // [esp+28h] [ebp-20h] BYREF + int v25[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = *(_DWORD *(__thiscall **)(char *, int))(*v3 + 16); + if ( (char *)v4 == (char *)std::numpunct::do_grouping ) + std::string::string(&v23[1], *(char **)(v3[2] + 8), (int)v25); + else + v4(&v23[1], (int)v3); + v5 = *(_DWORD *)(*(_DWORD *)&v23[1] - 12); + *(_DWORD *)(this + 12) = v5; + v6 = (std::string *)operator new[](v5); + std::string::copy(&v23[1], v6, *(char **)(this + 12), 0, v20); + v7 = 0; + if ( *(_DWORD *)(this + 12) ) + v7 = (unsigned __int8)(*(_BYTE *)v6 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v7; + v8 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); + if ( v8 == std::numpunct::do_truename ) + std::wstring::basic_string(&v24, *(wchar_t **)(v3[2] + 20), (int)v25); + else + v8(&v24, (int)v3); + v9 = *(v24 - 3); + *(_DWORD *)(this + 24) = v9; + if ( v9 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v21 = (wchar_t *)operator new[](2 * v9); + std::wstring::copy(&v24, v21, *(_DWORD *)(this + 24), 0); + v10 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 24); + if ( v10 == std::numpunct::do_falsename ) + std::wstring::basic_string(v25, *(wchar_t **)(v3[2] + 28), (int)v23); + else + v10(v25, (int)v3); + v11 = *(_DWORD *)(v25[0] - 12); + *(_DWORD *)(this + 32) = v11; + if ( v11 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v22 = (wchar_t *)operator new[](2 * v11); + std::wstring::copy(v25, v22, *(_DWORD *)(this + 32), 0); + v12 = *v3; + v13 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v13 == std::numpunct::do_decimal_point ) + { + v14 = *(_WORD *)(v3[2] + 36); + } + else + { + v14 = v13((int)v3); + v12 = *v3; + } + *(_WORD *)(this + 36) = v14; + v15 = *(int (__fastcall **)(int))(v12 + 12); + if ( v15 == std::numpunct::do_thousands_sep ) + v16 = *(_WORD *)(v3[2] + 38); + else + v16 = v15((int)v3); + *(_WORD *)(this + 38) = v16; + v17 = std::use_facet>(a2); + (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v17 + 44))( + v17, + std::__num_base::_S_atoms_out[0], + std::__num_base::_S_atoms_out[0] + 36, + this + 40); + (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v17 + 44))( + v17, + std::__num_base::_S_atoms_in[0], + std::__num_base::_S_atoms_in[0] + 26, + this + 112); + *(_DWORD *)(this + 8) = v6; + *(_BYTE *)(this + 164) = 1; + *(_DWORD *)(this + 20) = v21; + *(_DWORD *)(this + 28) = v22; + if ( (_UNKNOWN *)v25[0] == &unk_51640C ) + { + v18 = v24 - 3; + if ( v24 == (_DWORD *)&unk_51640C ) + goto LABEL_17; + } + else + { + std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v25[0] - 12), (int)v23); + v18 = v24 - 3; + if ( v24 == (_DWORD *)&unk_51640C ) + { +LABEL_17: + v19 = (volatile signed __int32 *)(*(_DWORD *)&v23[1] - 12); + if ( *(_UNKNOWN **)&v23[1] == &unk_51641C ) + return; +LABEL_26: + std::string::_Rep::_M_dispose(v19, (int)v23); + return; + } + } + std::wstring::_Rep::_M_dispose(v18, (int)v23); + v19 = (volatile signed __int32 *)(*(_DWORD *)&v23[1] - 12); + if ( *(_UNKNOWN **)&v23[1] != &unk_51641C ) + goto LABEL_26; +} +// 4D196E: variable 'v20' is possibly undefined +// 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; + +//----- (004D1D40) -------------------------------------------------------- +BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538BE4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + *((_BYTE *)this + 164) = 0; + return result; +} +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (004D1DA0) -------------------------------------------------------- +BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538BE4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + *((_BYTE *)this + 164) = 0; + return result; +} +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (004D1E00) -------------------------------------------------------- +void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__numpunct_cache::~__numpunct_cache(v2); + operator delete(a1); +} +// 4D1E07: variable 'v2' is possibly undefined + +//----- (004D1E30) -------------------------------------------------------- +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + int v2; // ebx + bool v3; // zf + + v2 = v1; + v3 = *(_BYTE *)(v1 + 164) == 0; + *(_DWORD *)v1 = &off_538BE4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( *(_DWORD *)(v2 + 20) ) + operator delete[](*(void **)(v2 + 20)); + if ( *(_DWORD *)(v2 + 28) ) + operator delete[](*(void **)(v2 + 28)); + } + std::locale::facet::~facet(a1); +} +// 4D1E31: variable 'v1' is possibly undefined +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (004D1E80) -------------------------------------------------------- +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + int v2; // ebx + bool v3; // zf + + v2 = v1; + v3 = *(_BYTE *)(v1 + 164) == 0; + *(_DWORD *)v1 = &off_538BE4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( *(_DWORD *)(v2 + 20) ) + operator delete[](*(void **)(v2 + 20)); + if ( *(_DWORD *)(v2 + 28) ) + operator delete[](*(void **)(v2 + 28)); + } + std::locale::facet::~facet(a1); +} +// 4D1E81: variable 'v1' is possibly undefined +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (004D1ED0) -------------------------------------------------------- +_DWORD *__userpurge std::invalid_argument::invalid_argument@( + _DWORD *a1@, + std::invalid_argument *this, + const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_538BF4; + return result; +} +// 4D1EDD: variable 'v5' is possibly undefined +// 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); + +//----- (004D1F00) -------------------------------------------------------- +_DWORD *__thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::logic_error::logic_error(this, a2); + *this = &off_538BF4; + return result; +} +// 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); + +//----- (004D1F30) -------------------------------------------------------- +unsigned int *__userpurge std::invalid_argument::invalid_argument@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_538BF4; + return result; +} +// 4D1F3D: variable 'v5' is possibly undefined +// 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); + +//----- (004D1F60) -------------------------------------------------------- +void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) +{ + *a1 = &off_538BF4; + std::logic_error::~logic_error(a1); + operator delete(a1); +} +// 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); + +//----- (004D1F80) -------------------------------------------------------- +void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) +{ + *a1 = &off_538BF4; + std::logic_error::~logic_error(a1); +} +// 538BF4: using guessed type void (__cdecl *off_538BF4)(std::invalid_argument *__hidden this); + +//----- (004D1F90) -------------------------------------------------------- +int *__fastcall std::_Rb_tree_iterator>>::operator++(int *a1) +{ + *a1 = std::_Rb_tree_increment(*a1); + return a1; +} + +//----- (004D1FB0) -------------------------------------------------------- +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538C08; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + this[4] = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + this[15] = 0; + this[16] = 0; + this[17] = 0; + this[18] = 0; + this[19] = 0; + this[20] = 0; + this[21] = 0; + this[22] = 0; + this[23] = 0; + this[24] = 0; + this[25] = 0; + this[26] = 0; + this[27] = 0; + this[28] = 0; + this[29] = 0; + this[30] = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + this[37] = 0; + this[38] = 0; + this[39] = 0; + this[40] = 0; + this[41] = 0; + this[42] = 0; + this[43] = 0; + this[44] = 0; + this[45] = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + *((_BYTE *)this + 196) = 0; + return result; +} +// 538C08: using guessed type int (*off_538C08)(); + +//----- (004D2150) -------------------------------------------------------- +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538C08; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + this[4] = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + this[15] = 0; + this[16] = 0; + this[17] = 0; + this[18] = 0; + this[19] = 0; + this[20] = 0; + this[21] = 0; + this[22] = 0; + this[23] = 0; + this[24] = 0; + this[25] = 0; + this[26] = 0; + this[27] = 0; + this[28] = 0; + this[29] = 0; + this[30] = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + this[37] = 0; + this[38] = 0; + this[39] = 0; + this[40] = 0; + this[41] = 0; + this[42] = 0; + this[43] = 0; + this[44] = 0; + this[45] = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + *((_BYTE *)this + 196) = 0; + return result; +} +// 538C08: using guessed type int (*off_538C08)(); + +//----- (004D22F0) -------------------------------------------------------- +void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538C08; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D22FC: variable 'v2' is possibly undefined +// 538C08: using guessed type int (*off_538C08)(); + +//----- (004D2310) -------------------------------------------------------- +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538C08; + std::locale::facet::~facet(a1); +} +// 4D2310: variable 'v1' is possibly undefined +// 538C08: using guessed type int (*off_538C08)(); + +//----- (004D2320) -------------------------------------------------------- +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538C08; + std::locale::facet::~facet(a1); +} +// 4D2320: variable 'v1' is possibly undefined +// 538C08: using guessed type int (*off_538C08)(); + +//----- (004D2330) -------------------------------------------------------- +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538C18; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + this[4] = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + this[15] = 0; + this[16] = 0; + this[17] = 0; + this[18] = 0; + this[19] = 0; + this[20] = 0; + this[21] = 0; + this[22] = 0; + this[23] = 0; + this[24] = 0; + this[25] = 0; + this[26] = 0; + this[27] = 0; + this[28] = 0; + this[29] = 0; + this[30] = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + this[37] = 0; + this[38] = 0; + this[39] = 0; + this[40] = 0; + this[41] = 0; + this[42] = 0; + this[43] = 0; + this[44] = 0; + this[45] = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + *((_BYTE *)this + 196) = 0; + return result; +} +// 538C18: using guessed type int (*off_538C18)(); + +//----- (004D24D0) -------------------------------------------------------- +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538C18; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + this[4] = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + this[15] = 0; + this[16] = 0; + this[17] = 0; + this[18] = 0; + this[19] = 0; + this[20] = 0; + this[21] = 0; + this[22] = 0; + this[23] = 0; + this[24] = 0; + this[25] = 0; + this[26] = 0; + this[27] = 0; + this[28] = 0; + this[29] = 0; + this[30] = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + this[37] = 0; + this[38] = 0; + this[39] = 0; + this[40] = 0; + this[41] = 0; + this[42] = 0; + this[43] = 0; + this[44] = 0; + this[45] = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + *((_BYTE *)this + 196) = 0; + return result; +} +// 538C18: using guessed type int (*off_538C18)(); + +//----- (004D2670) -------------------------------------------------------- +void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538C18; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D267C: variable 'v2' is possibly undefined +// 538C18: using guessed type int (*off_538C18)(); + +//----- (004D2690) -------------------------------------------------------- +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538C18; + std::locale::facet::~facet(a1); +} +// 4D2690: variable 'v1' is possibly undefined +// 538C18: using guessed type int (*off_538C18)(); + +//----- (004D26A0) -------------------------------------------------------- +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538C18; + std::locale::facet::~facet(a1); +} +// 4D26A0: variable 'v1' is possibly undefined +// 538C18: using guessed type int (*off_538C18)(); + +//----- (004D26B0) -------------------------------------------------------- +void __fastcall std::bad_function_call::~bad_function_call(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538C28; + std::exception::~exception(v2); + operator delete(a1); +} +// 4D26BC: variable 'v2' is possibly undefined +// 538C28: using guessed type void (__cdecl *off_538C28)(std::bad_function_call *__hidden this); + +//----- (004D26D0) -------------------------------------------------------- +void __cdecl std::bad_function_call::~bad_function_call(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538C28; + std::exception::~exception(a1); +} +// 4D26D0: variable 'v1' is possibly undefined +// 538C28: using guessed type void (__cdecl *off_538C28)(std::bad_function_call *__hidden this); + +//----- (004D26E0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_5384E0; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538C3C; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 5384E0: using guessed type int (*off_5384E0)(); +// 538C3C: using guessed type int (*off_538C3C)(); + +//----- (004D27E0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_5384E0; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538C3C; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 5384E0: using guessed type int (*off_5384E0)(); +// 538C3C: using guessed type int (*off_538C3C)(); + +//----- (004D28E0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_5384E0; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538C3C; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 5384E0: using guessed type int (*off_5384E0)(); +// 538C3C: using guessed type int (*off_538C3C)(); + +//----- (004D29E0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_5384E0; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538C3C; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 5384E0: using guessed type int (*off_5384E0)(); +// 538C3C: using guessed type int (*off_538C3C)(); + +//----- (004D2AE0) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538C3C; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4D2AEC: variable 'v2' is possibly undefined +// 538C3C: using guessed type int (*off_538C3C)(); + +//----- (004D2B00) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538C3C; + std::moneypunct::~moneypunct(a1); +} +// 4D2B00: variable 'v1' is possibly undefined +// 538C3C: using guessed type int (*off_538C3C)(); + +//----- (004D2B10) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538C3C; + std::moneypunct::~moneypunct(a1); +} +// 4D2B10: variable 'v1' is possibly undefined +// 538C3C: using guessed type int (*off_538C3C)(); + +//----- (004D2B20) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_538514; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538C70; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538514: using guessed type int (*off_538514)(); +// 538C70: using guessed type int (*off_538C70)(); + +//----- (004D2C20) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_538514; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538C70; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538514: using guessed type int (*off_538514)(); +// 538C70: using guessed type int (*off_538C70)(); + +//----- (004D2D20) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_538514; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538C70; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538514: using guessed type int (*off_538514)(); +// 538C70: using guessed type int (*off_538C70)(); + +//----- (004D2E20) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_538514; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538C70; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538514: using guessed type int (*off_538514)(); +// 538C70: using guessed type int (*off_538C70)(); + +//----- (004D2F20) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538C70; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4D2F2C: variable 'v2' is possibly undefined +// 538C70: using guessed type int (*off_538C70)(); + +//----- (004D2F40) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538C70; + std::moneypunct::~moneypunct(a1); +} +// 4D2F40: variable 'v1' is possibly undefined +// 538C70: using guessed type int (*off_538C70)(); + +//----- (004D2F50) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538C70; + std::moneypunct::~moneypunct(a1); +} +// 4D2F50: variable 'v1' is possibly undefined +// 538C70: using guessed type int (*off_538C70)(); + +//----- (004D2F60) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_538548; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538CA4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538548: using guessed type int (*off_538548)(); +// 538CA4: using guessed type int (*off_538CA4)(); + +//----- (004D3060) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_538548; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538CA4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538548: using guessed type int (*off_538548)(); +// 538CA4: using guessed type int (*off_538CA4)(); + +//----- (004D3160) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_538548; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538CA4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538548: using guessed type int (*off_538548)(); +// 538CA4: using guessed type int (*off_538CA4)(); + +//----- (004D3260) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_538548; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538CA4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538548: using guessed type int (*off_538548)(); +// 538CA4: using guessed type int (*off_538CA4)(); + +//----- (004D3360) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538CA4; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4D336C: variable 'v2' is possibly undefined +// 538CA4: using guessed type int (*off_538CA4)(); + +//----- (004D3380) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538CA4; + std::moneypunct::~moneypunct(a1); +} +// 4D3380: variable 'v1' is possibly undefined +// 538CA4: using guessed type int (*off_538CA4)(); + +//----- (004D3390) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538CA4; + std::moneypunct::~moneypunct(a1); +} +// 4D3390: variable 'v1' is possibly undefined +// 538CA4: using guessed type int (*off_538CA4)(); + +//----- (004D33A0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_53857C; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538CD8; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 53857C: using guessed type int (*off_53857C)(); +// 538CD8: using guessed type int (*off_538CD8)(); + +//----- (004D34A0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_53857C; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538CD8; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 53857C: using guessed type int (*off_53857C)(); +// 538CD8: using guessed type int (*off_538CD8)(); + +//----- (004D35A0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_53857C; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538CD8; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 53857C: using guessed type int (*off_53857C)(); +// 538CD8: using guessed type int (*off_538CD8)(); + +//----- (004D36A0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_53857C; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538CD8; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 53857C: using guessed type int (*off_53857C)(); +// 538CD8: using guessed type int (*off_538CD8)(); + +//----- (004D37A0) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538CD8; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4D37AC: variable 'v2' is possibly undefined +// 538CD8: using guessed type int (*off_538CD8)(); + +//----- (004D37C0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538CD8; + std::moneypunct::~moneypunct(a1); +} +// 4D37C0: variable 'v1' is possibly undefined +// 538CD8: using guessed type int (*off_538CD8)(); + +//----- (004D37D0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538CD8; + std::moneypunct::~moneypunct(a1); +} +// 4D37D0: variable 'v1' is possibly undefined +// 538CD8: using guessed type int (*off_538CD8)(); + +//----- (004D37E0) -------------------------------------------------------- +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // esi + int (__fastcall *v4)(int); // eax + char v5; // al + int (__fastcall *v6)(int); // eax + char v7; // al + int v8; // edx + int (__fastcall *v9)(int); // eax + int v10; // eax + _DWORD *(__thiscall *v11)(char *, int); // eax + unsigned int v12; // eax + bool v13; // al + _DWORD *(__thiscall *v14)(_DWORD *, int); // eax + unsigned int v15; // eax + _DWORD *(__thiscall *v16)(_DWORD *, int); // eax + unsigned int v17; // eax + _DWORD *(__thiscall *v18)(int *, int); // eax + unsigned int v19; // eax + int (__fastcall *v20)(int); // eax + int v21; // eax + int (__fastcall *v22)(int); // eax + int v23; // eax + _BYTE *v24; // esi + char *v25; // edi + char v26; // al + void (__thiscall *v27)(_BYTE *, char *, char *, int); // eax + volatile signed __int32 *v28; // ecx + volatile signed __int32 *v29; // ecx + unsigned int v30; // [esp+Ch] [ebp-5Ch] + unsigned int v31; // [esp+Ch] [ebp-5Ch] + unsigned int v32; // [esp+Ch] [ebp-5Ch] + unsigned int v33; // [esp+Ch] [ebp-5Ch] + std::string *v34; // [esp+20h] [ebp-48h] + std::string *v35; // [esp+24h] [ebp-44h] + std::string *v36; // [esp+28h] [ebp-40h] + std::string *v37; // [esp+2Ch] [ebp-3Ch] + char v38[5]; // [esp+3Fh] [ebp-29h] BYREF + _DWORD *v39; // [esp+44h] [ebp-24h] BYREF + _DWORD *v40; // [esp+48h] [ebp-20h] BYREF + int v41[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v4 == std::moneypunct::do_decimal_point ) + v5 = *(_BYTE *)(v3[2] + 17); + else + v5 = v4((int)v3); + *(_BYTE *)(this + 17) = v5; + v6 = *(int (__fastcall **)(int))(*v3 + 12); + if ( v6 == std::moneypunct::do_thousands_sep ) + v7 = *(_BYTE *)(v3[2] + 18); + else + v7 = v6((int)v3); + *(_BYTE *)(this + 18) = v7; + v8 = *v3; + v9 = *(int (__fastcall **)(int))(*v3 + 32); + if ( v9 == std::moneypunct::do_frac_digits ) + { + v10 = *(_DWORD *)(v3[2] + 44); + } + else + { + v10 = v9((int)v3); + v8 = *v3; + } + *(_DWORD *)(this + 44) = v10; + v11 = *(_DWORD *(__thiscall **)(char *, int))(v8 + 16); + if ( (char *)v11 == (char *)std::moneypunct::do_grouping ) + std::string::string(&v38[1], *(char **)(v3[2] + 8), (int)v41); + else + v11(&v38[1], (int)v3); + v12 = *(_DWORD *)(*(_DWORD *)&v38[1] - 12); + *(_DWORD *)(this + 12) = v12; + v37 = (std::string *)operator new[](v12); + std::string::copy(&v38[1], v37, *(char **)(this + 12), 0, v30); + v13 = 0; + if ( *(_DWORD *)(this + 12) ) + v13 = (unsigned __int8)(*(_BYTE *)v37 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v13; + v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); + if ( v14 == std::moneypunct::do_curr_symbol ) + std::string::string(&v39, *(char **)(v3[2] + 20), (int)v41); + else + v14(&v39, (int)v3); + v15 = *(v39 - 3); + *(_DWORD *)(this + 24) = v15; + v34 = (std::string *)operator new[](v15); + std::string::copy(&v39, v34, *(char **)(this + 24), 0, v31); + v16 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 24); + if ( v16 == std::moneypunct::do_positive_sign ) + std::string::string(&v40, *(char **)(v3[2] + 28), (int)v41); + else + v16(&v40, (int)v3); + v17 = *(v40 - 3); + *(_DWORD *)(this + 32) = v17; + v35 = (std::string *)operator new[](v17); + std::string::copy(&v40, v35, *(char **)(this + 32), 0, v32); + v18 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 28); + if ( v18 == std::moneypunct::do_negative_sign ) + std::string::string(v41, *(char **)(v3[2] + 36), (int)v38); + else + v18(v41, (int)v3); + v19 = *(_DWORD *)(v41[0] - 12); + *(_DWORD *)(this + 40) = v19; + v36 = (std::string *)operator new[](v19); + std::string::copy(v41, v36, *(char **)(this + 40), 0, v33); + v20 = *(int (__fastcall **)(int))(*v3 + 36); + if ( v20 == std::moneypunct::do_pos_format ) + v21 = *(_DWORD *)(v3[2] + 48); + else + v21 = v20((int)v3); + *(_DWORD *)(this + 48) = v21; + v22 = *(int (__fastcall **)(int))(*v3 + 40); + if ( v22 == std::moneypunct::do_neg_format ) + v23 = *(_DWORD *)(v3[2] + 52); + else + v23 = v22((int)v3); + *(_DWORD *)(this + 52) = v23; + v24 = std::use_facet>(a2); + v25 = std::money_base::_S_atoms; + v26 = v24[28]; + if ( v26 == 1 ) + goto LABEL_24; + if ( v26 ) + { + v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); + if ( (char *)v27 == (char *)std::ctype::do_widen ) + { +LABEL_24: + *(_DWORD *)(this + 56) = *(_DWORD *)v25; + *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); + *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); + *(_BYTE *)(this + 66) = v25[10]; + goto LABEL_25; + } + } + else + { + std::ctype::_M_widen_init((int)v24); + v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); + if ( (char *)v27 == (char *)std::ctype::do_widen ) + goto LABEL_24; + } + v27(v24, v25, v25 + 11, this + 56); +LABEL_25: + *(_BYTE *)(this + 67) = 1; + *(_DWORD *)(this + 8) = v37; + *(_DWORD *)(this + 20) = v34; + *(_DWORD *)(this + 28) = v35; + *(_DWORD *)(this + 36) = v36; + if ( (_UNKNOWN *)v41[0] != &unk_51641C ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)(v41[0] - 12), (int)v38); + if ( v40 == (_DWORD *)&unk_51641C ) + { + v28 = v39 - 3; + if ( v39 == (_DWORD *)&unk_51641C ) + goto LABEL_29; + } + else + { + std::string::_Rep::_M_dispose(v40 - 3, (int)v38); + v28 = v39 - 3; + if ( v39 == (_DWORD *)&unk_51641C ) + { +LABEL_29: + v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); + if ( *(_UNKNOWN **)&v38[1] == &unk_51641C ) + return; +LABEL_44: + std::string::_Rep::_M_dispose(v29, (int)v38); + return; + } + } + std::string::_Rep::_M_dispose(v28, (int)v38); + v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); + if ( *(_UNKNOWN **)&v38[1] != &unk_51641C ) + goto LABEL_44; +} +// 4D389A: variable 'v30' is possibly undefined +// 4D3916: variable 'v31' is possibly undefined +// 4D3975: variable 'v32' is possibly undefined +// 4D39D4: variable 'v33' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; + +//----- (004D3DC0) -------------------------------------------------------- +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_538D0C; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 18) = 0; + this[1] = a2 != 0; + result = 0; + *((_WORD *)this + 8) = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + *((_BYTE *)this + 67) = 0; + return result; +} +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (004D3E40) -------------------------------------------------------- +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_538D0C; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 18) = 0; + this[1] = a2 != 0; + result = 0; + *((_WORD *)this + 8) = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + *((_BYTE *)this + 67) = 0; + return result; +} +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (004D3EC0) -------------------------------------------------------- +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__moneypunct_cache::~__moneypunct_cache(v2); + operator delete(a1); +} +// 4D3EC7: variable 'v2' is possibly undefined + +//----- (004D3EF0) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 67) == 0; + *(_DWORD *)v1 = &off_538D0C; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[5] ) + operator delete[](v2[5]); + if ( v2[7] ) + operator delete[](v2[7]); + if ( v2[9] ) + operator delete[](v2[9]); + } + std::locale::facet::~facet(a1); +} +// 4D3EF1: variable 'v1' is possibly undefined +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (004D3F50) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 67) == 0; + *(_DWORD *)v1 = &off_538D0C; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[5] ) + operator delete[](v2[5]); + if ( v2[7] ) + operator delete[](v2[7]); + if ( v2[9] ) + operator delete[](v2[9]); + } + std::locale::facet::~facet(a1); +} +// 4D3F51: variable 'v1' is possibly undefined +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (004D3FB0) -------------------------------------------------------- +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // esi + int (__fastcall *v4)(int); // eax + char v5; // al + int (__fastcall *v6)(int); // eax + char v7; // al + int v8; // edx + int (__fastcall *v9)(int); // eax + int v10; // eax + _DWORD *(__thiscall *v11)(char *, int); // eax + unsigned int v12; // eax + bool v13; // al + _DWORD *(__thiscall *v14)(_DWORD *, int); // eax + unsigned int v15; // eax + _DWORD *(__thiscall *v16)(_DWORD *, int); // eax + unsigned int v17; // eax + _DWORD *(__thiscall *v18)(int *, int); // eax + unsigned int v19; // eax + int (__fastcall *v20)(int); // eax + int v21; // eax + int (__fastcall *v22)(int); // eax + int v23; // eax + _BYTE *v24; // esi + char *v25; // edi + char v26; // al + void (__thiscall *v27)(_BYTE *, char *, char *, int); // eax + volatile signed __int32 *v28; // ecx + volatile signed __int32 *v29; // ecx + unsigned int v30; // [esp+Ch] [ebp-5Ch] + unsigned int v31; // [esp+Ch] [ebp-5Ch] + unsigned int v32; // [esp+Ch] [ebp-5Ch] + unsigned int v33; // [esp+Ch] [ebp-5Ch] + std::string *v34; // [esp+20h] [ebp-48h] + std::string *v35; // [esp+24h] [ebp-44h] + std::string *v36; // [esp+28h] [ebp-40h] + std::string *v37; // [esp+2Ch] [ebp-3Ch] + char v38[5]; // [esp+3Fh] [ebp-29h] BYREF + _DWORD *v39; // [esp+44h] [ebp-24h] BYREF + _DWORD *v40; // [esp+48h] [ebp-20h] BYREF + int v41[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v4 == std::moneypunct::do_decimal_point ) + v5 = *(_BYTE *)(v3[2] + 17); + else + v5 = v4((int)v3); + *(_BYTE *)(this + 17) = v5; + v6 = *(int (__fastcall **)(int))(*v3 + 12); + if ( v6 == std::moneypunct::do_thousands_sep ) + v7 = *(_BYTE *)(v3[2] + 18); + else + v7 = v6((int)v3); + *(_BYTE *)(this + 18) = v7; + v8 = *v3; + v9 = *(int (__fastcall **)(int))(*v3 + 32); + if ( v9 == std::moneypunct::do_frac_digits ) + { + v10 = *(_DWORD *)(v3[2] + 44); + } + else + { + v10 = v9((int)v3); + v8 = *v3; + } + *(_DWORD *)(this + 44) = v10; + v11 = *(_DWORD *(__thiscall **)(char *, int))(v8 + 16); + if ( (char *)v11 == (char *)std::moneypunct::do_grouping ) + std::string::string(&v38[1], *(char **)(v3[2] + 8), (int)v41); + else + v11(&v38[1], (int)v3); + v12 = *(_DWORD *)(*(_DWORD *)&v38[1] - 12); + *(_DWORD *)(this + 12) = v12; + v37 = (std::string *)operator new[](v12); + std::string::copy(&v38[1], v37, *(char **)(this + 12), 0, v30); + v13 = 0; + if ( *(_DWORD *)(this + 12) ) + v13 = (unsigned __int8)(*(_BYTE *)v37 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v13; + v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); + if ( v14 == std::moneypunct::do_curr_symbol ) + std::string::string(&v39, *(char **)(v3[2] + 20), (int)v41); + else + v14(&v39, (int)v3); + v15 = *(v39 - 3); + *(_DWORD *)(this + 24) = v15; + v34 = (std::string *)operator new[](v15); + std::string::copy(&v39, v34, *(char **)(this + 24), 0, v31); + v16 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 24); + if ( v16 == std::moneypunct::do_positive_sign ) + std::string::string(&v40, *(char **)(v3[2] + 28), (int)v41); + else + v16(&v40, (int)v3); + v17 = *(v40 - 3); + *(_DWORD *)(this + 32) = v17; + v35 = (std::string *)operator new[](v17); + std::string::copy(&v40, v35, *(char **)(this + 32), 0, v32); + v18 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 28); + if ( v18 == std::moneypunct::do_negative_sign ) + std::string::string(v41, *(char **)(v3[2] + 36), (int)v38); + else + v18(v41, (int)v3); + v19 = *(_DWORD *)(v41[0] - 12); + *(_DWORD *)(this + 40) = v19; + v36 = (std::string *)operator new[](v19); + std::string::copy(v41, v36, *(char **)(this + 40), 0, v33); + v20 = *(int (__fastcall **)(int))(*v3 + 36); + if ( v20 == std::moneypunct::do_pos_format ) + v21 = *(_DWORD *)(v3[2] + 48); + else + v21 = v20((int)v3); + *(_DWORD *)(this + 48) = v21; + v22 = *(int (__fastcall **)(int))(*v3 + 40); + if ( v22 == std::moneypunct::do_neg_format ) + v23 = *(_DWORD *)(v3[2] + 52); + else + v23 = v22((int)v3); + *(_DWORD *)(this + 52) = v23; + v24 = std::use_facet>(a2); + v25 = std::money_base::_S_atoms; + v26 = v24[28]; + if ( v26 == 1 ) + goto LABEL_24; + if ( v26 ) + { + v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); + if ( (char *)v27 == (char *)std::ctype::do_widen ) + { +LABEL_24: + *(_DWORD *)(this + 56) = *(_DWORD *)v25; + *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); + *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); + *(_BYTE *)(this + 66) = v25[10]; + goto LABEL_25; + } + } + else + { + std::ctype::_M_widen_init((int)v24); + v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); + if ( (char *)v27 == (char *)std::ctype::do_widen ) + goto LABEL_24; + } + v27(v24, v25, v25 + 11, this + 56); +LABEL_25: + *(_BYTE *)(this + 67) = 1; + *(_DWORD *)(this + 8) = v37; + *(_DWORD *)(this + 20) = v34; + *(_DWORD *)(this + 28) = v35; + *(_DWORD *)(this + 36) = v36; + if ( (_UNKNOWN *)v41[0] != &unk_51641C ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)(v41[0] - 12), (int)v38); + if ( v40 == (_DWORD *)&unk_51641C ) + { + v28 = v39 - 3; + if ( v39 == (_DWORD *)&unk_51641C ) + goto LABEL_29; + } + else + { + std::string::_Rep::_M_dispose(v40 - 3, (int)v38); + v28 = v39 - 3; + if ( v39 == (_DWORD *)&unk_51641C ) + { +LABEL_29: + v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); + if ( *(_UNKNOWN **)&v38[1] == &unk_51641C ) + return; +LABEL_44: + std::string::_Rep::_M_dispose(v29, (int)v38); + return; + } + } + std::string::_Rep::_M_dispose(v28, (int)v38); + v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); + if ( *(_UNKNOWN **)&v38[1] != &unk_51641C ) + goto LABEL_44; +} +// 4D406A: variable 'v30' is possibly undefined +// 4D40E6: variable 'v31' is possibly undefined +// 4D4145: variable 'v32' is possibly undefined +// 4D41A4: variable 'v33' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; + +//----- (004D4590) -------------------------------------------------------- +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_538D1C; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 18) = 0; + this[1] = a2 != 0; + result = 0; + *((_WORD *)this + 8) = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + *((_BYTE *)this + 67) = 0; + return result; +} +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (004D4610) -------------------------------------------------------- +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_538D1C; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 18) = 0; + this[1] = a2 != 0; + result = 0; + *((_WORD *)this + 8) = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + *((_BYTE *)this + 67) = 0; + return result; +} +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (004D4690) -------------------------------------------------------- +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__moneypunct_cache::~__moneypunct_cache(v2); + operator delete(a1); +} +// 4D4697: variable 'v2' is possibly undefined + +//----- (004D46C0) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 67) == 0; + *(_DWORD *)v1 = &off_538D1C; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[5] ) + operator delete[](v2[5]); + if ( v2[7] ) + operator delete[](v2[7]); + if ( v2[9] ) + operator delete[](v2[9]); + } + std::locale::facet::~facet(a1); +} +// 4D46C1: variable 'v1' is possibly undefined +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (004D4720) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 67) == 0; + *(_DWORD *)v1 = &off_538D1C; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[5] ) + operator delete[](v2[5]); + if ( v2[7] ) + operator delete[](v2[7]); + if ( v2[9] ) + operator delete[](v2[9]); + } + std::locale::facet::~facet(a1); +} +// 4D4721: variable 'v1' is possibly undefined +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (004D4780) -------------------------------------------------------- +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // eax + _DWORD *v4; // edx + _DWORD *v5; // esi + int (__fastcall *v6)(int); // eax + int (__fastcall *v7)(int); // eax + int (__fastcall *v8)(int); // eax + _DWORD *(__thiscall *v9)(char *, int); // eax + unsigned int v10; // eax + bool v11; // al + _DWORD *(__thiscall *v12)(_DWORD *, int); // eax + unsigned int v13; // eax + _DWORD *(__thiscall *v14)(_DWORD *, int); // eax + unsigned int v15; // eax + _DWORD *(__thiscall *v16)(int *, int); // eax + unsigned int v17; // eax + int (__fastcall *v18)(int); // eax + int v19; // eax + int (__fastcall *v20)(int); // eax + int v21; // eax + void *v22; // eax + volatile signed __int32 *v23; // ecx + volatile signed __int32 *v24; // ecx + __int16 v25; // ax + __int16 v26; // ax + int v27; // eax + _DWORD *v28; // edx + unsigned int v29; // [esp+Ch] [ebp-4Ch] + wchar_t *v30; // [esp+10h] [ebp-48h] + wchar_t *v31; // [esp+14h] [ebp-44h] + wchar_t *v32; // [esp+18h] [ebp-40h] + std::string *v33; // [esp+1Ch] [ebp-3Ch] + char v34[5]; // [esp+2Fh] [ebp-29h] BYREF + _DWORD *v35; // [esp+34h] [ebp-24h] BYREF + _DWORD *v36; // [esp+38h] [ebp-20h] BYREF + int v37[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = (_DWORD *)*v3; + v5 = v3; + v6 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v6 == std::moneypunct::do_decimal_point ) + { + *(_WORD *)(this + 18) = *(_WORD *)(v5[2] + 18); + v7 = (int (__fastcall *)(int))v4[3]; + if ( v7 == std::moneypunct::do_thousands_sep ) + goto LABEL_3; + } + else + { + v25 = v6((int)v5); + v4 = (_DWORD *)*v5; + *(_WORD *)(this + 18) = v25; + v7 = (int (__fastcall *)(int))v4[3]; + if ( v7 == std::moneypunct::do_thousands_sep ) + { +LABEL_3: + *(_WORD *)(this + 20) = *(_WORD *)(v5[2] + 20); + v8 = (int (__fastcall *)(int))v4[8]; + if ( v8 == std::moneypunct::do_frac_digits ) + goto LABEL_4; +LABEL_28: + v27 = v8((int)v5); + v28 = (_DWORD *)*v5; + *(_DWORD *)(this + 48) = v27; + v9 = (_DWORD *(__thiscall *)(char *, int))v28[4]; + if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) + goto LABEL_5; + goto LABEL_29; + } + } + v26 = v7((int)v5); + v4 = (_DWORD *)*v5; + *(_WORD *)(this + 20) = v26; + v8 = (int (__fastcall *)(int))v4[8]; + if ( v8 != std::moneypunct::do_frac_digits ) + goto LABEL_28; +LABEL_4: + *(_DWORD *)(this + 48) = *(_DWORD *)(v5[2] + 48); + v9 = (_DWORD *(__thiscall *)(char *, int))v4[4]; + if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) + { +LABEL_5: + std::string::string(&v34[1], *(char **)(v5[2] + 8), (int)v37); + goto LABEL_6; + } +LABEL_29: + v9(&v34[1], (int)v5); +LABEL_6: + v10 = *(_DWORD *)(*(_DWORD *)&v34[1] - 12); + *(_DWORD *)(this + 12) = v10; + v33 = (std::string *)operator new[](v10); + std::string::copy(&v34[1], v33, *(char **)(this + 12), 0, v29); + v11 = 0; + if ( *(_DWORD *)(this + 12) ) + v11 = (unsigned __int8)(*(_BYTE *)v33 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v11; + v12 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 20); + if ( v12 == std::moneypunct::do_curr_symbol ) + std::wstring::basic_string(&v35, *(wchar_t **)(v5[2] + 24), (int)v37); + else + v12(&v35, (int)v5); + v13 = *(v35 - 3); + *(_DWORD *)(this + 28) = v13; + if ( v13 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v30 = (wchar_t *)operator new[](2 * v13); + std::wstring::copy(&v35, v30, *(_DWORD *)(this + 28), 0); + v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 24); + if ( v14 == std::moneypunct::do_positive_sign ) + std::wstring::basic_string(&v36, *(wchar_t **)(v5[2] + 32), (int)v37); + else + v14(&v36, (int)v5); + v15 = *(v36 - 3); + *(_DWORD *)(this + 36) = v15; + if ( v15 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v31 = (wchar_t *)operator new[](2 * v15); + std::wstring::copy(&v36, v31, *(_DWORD *)(this + 36), 0); + v16 = *(_DWORD *(__thiscall **)(int *, int))(*v5 + 28); + if ( v16 == std::moneypunct::do_negative_sign ) + std::wstring::basic_string(v37, *(wchar_t **)(v5[2] + 40), (int)v34); + else + v16(v37, (int)v5); + v17 = *(_DWORD *)(v37[0] - 12); + *(_DWORD *)(this + 44) = v17; + if ( v17 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v32 = (wchar_t *)operator new[](2 * v17); + std::wstring::copy(v37, v32, *(_DWORD *)(this + 44), 0); + v18 = *(int (__fastcall **)(int))(*v5 + 36); + if ( v18 == std::moneypunct::do_pos_format ) + v19 = *(_DWORD *)(v5[2] + 52); + else + v19 = v18((int)v5); + *(_DWORD *)(this + 52) = v19; + v20 = *(int (__fastcall **)(int))(*v5 + 40); + if ( v20 == std::moneypunct::do_neg_format ) + v21 = *(_DWORD *)(v5[2] + 56); + else + v21 = v20((int)v5); + *(_DWORD *)(this + 56) = v21; + v22 = std::use_facet>(a2); + (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( + v22, + std::money_base::_S_atoms, + std::money_base::_S_atoms + 11, + this + 60); + *(_BYTE *)(this + 82) = 1; + *(_DWORD *)(this + 8) = v33; + *(_DWORD *)(this + 24) = v30; + *(_DWORD *)(this + 32) = v31; + *(_DWORD *)(this + 40) = v32; + if ( (_UNKNOWN *)v37[0] == &unk_51640C ) + { + v23 = v36 - 3; + if ( v36 == (_DWORD *)&unk_51640C ) + goto LABEL_23; + } + else + { + std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v37[0] - 12), (int)v34); + v23 = v36 - 3; + if ( v36 == (_DWORD *)&unk_51640C ) + goto LABEL_23; + } + std::wstring::_Rep::_M_dispose(v23, (int)v34); +LABEL_23: + if ( v35 == (_DWORD *)&unk_51640C ) + { + v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); + if ( *(_UNKNOWN **)&v34[1] == &unk_51641C ) + return; +LABEL_36: + std::string::_Rep::_M_dispose(v24, (int)v34); + return; + } + std::wstring::_Rep::_M_dispose(v35 - 3, (int)v34); + v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); + if ( *(_UNKNOWN **)&v34[1] != &unk_51641C ) + goto LABEL_36; +} +// 4D4838: variable 'v29' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; + +//----- (004D4D60) -------------------------------------------------------- +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538D2C; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + *(_DWORD *)((char *)this + 18) = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + *((_BYTE *)this + 82) = 0; + return result; +} +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (004D4DE0) -------------------------------------------------------- +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538D2C; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + *(_DWORD *)((char *)this + 18) = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + *((_BYTE *)this + 82) = 0; + return result; +} +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (004D4E60) -------------------------------------------------------- +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__moneypunct_cache::~__moneypunct_cache(v2); + operator delete(a1); +} +// 4D4E67: variable 'v2' is possibly undefined + +//----- (004D4E90) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 82) == 0; + *(_DWORD *)v1 = &off_538D2C; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[6] ) + operator delete[](v2[6]); + if ( v2[8] ) + operator delete[](v2[8]); + if ( v2[10] ) + operator delete[](v2[10]); + } + std::locale::facet::~facet(a1); +} +// 4D4E91: variable 'v1' is possibly undefined +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (004D4EF0) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 82) == 0; + *(_DWORD *)v1 = &off_538D2C; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[6] ) + operator delete[](v2[6]); + if ( v2[8] ) + operator delete[](v2[8]); + if ( v2[10] ) + operator delete[](v2[10]); + } + std::locale::facet::~facet(a1); +} +// 4D4EF1: variable 'v1' is possibly undefined +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (004D4F50) -------------------------------------------------------- +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // eax + _DWORD *v4; // edx + _DWORD *v5; // esi + int (__fastcall *v6)(int); // eax + int (__fastcall *v7)(int); // eax + int (__fastcall *v8)(int); // eax + _DWORD *(__thiscall *v9)(char *, int); // eax + unsigned int v10; // eax + bool v11; // al + _DWORD *(__thiscall *v12)(_DWORD *, int); // eax + unsigned int v13; // eax + _DWORD *(__thiscall *v14)(_DWORD *, int); // eax + unsigned int v15; // eax + _DWORD *(__thiscall *v16)(int *, int); // eax + unsigned int v17; // eax + int (__fastcall *v18)(int); // eax + int v19; // eax + int (__fastcall *v20)(int); // eax + int v21; // eax + void *v22; // eax + volatile signed __int32 *v23; // ecx + volatile signed __int32 *v24; // ecx + __int16 v25; // ax + __int16 v26; // ax + int v27; // eax + _DWORD *v28; // edx + unsigned int v29; // [esp+Ch] [ebp-4Ch] + wchar_t *v30; // [esp+10h] [ebp-48h] + wchar_t *v31; // [esp+14h] [ebp-44h] + wchar_t *v32; // [esp+18h] [ebp-40h] + std::string *v33; // [esp+1Ch] [ebp-3Ch] + char v34[5]; // [esp+2Fh] [ebp-29h] BYREF + _DWORD *v35; // [esp+34h] [ebp-24h] BYREF + _DWORD *v36; // [esp+38h] [ebp-20h] BYREF + int v37[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = (_DWORD *)*v3; + v5 = v3; + v6 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v6 == std::moneypunct::do_decimal_point ) + { + *(_WORD *)(this + 18) = *(_WORD *)(v5[2] + 18); + v7 = (int (__fastcall *)(int))v4[3]; + if ( v7 == std::moneypunct::do_thousands_sep ) + goto LABEL_3; + } + else + { + v25 = v6((int)v5); + v4 = (_DWORD *)*v5; + *(_WORD *)(this + 18) = v25; + v7 = (int (__fastcall *)(int))v4[3]; + if ( v7 == std::moneypunct::do_thousands_sep ) + { +LABEL_3: + *(_WORD *)(this + 20) = *(_WORD *)(v5[2] + 20); + v8 = (int (__fastcall *)(int))v4[8]; + if ( v8 == std::moneypunct::do_frac_digits ) + goto LABEL_4; +LABEL_28: + v27 = v8((int)v5); + v28 = (_DWORD *)*v5; + *(_DWORD *)(this + 48) = v27; + v9 = (_DWORD *(__thiscall *)(char *, int))v28[4]; + if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) + goto LABEL_5; + goto LABEL_29; + } + } + v26 = v7((int)v5); + v4 = (_DWORD *)*v5; + *(_WORD *)(this + 20) = v26; + v8 = (int (__fastcall *)(int))v4[8]; + if ( v8 != std::moneypunct::do_frac_digits ) + goto LABEL_28; +LABEL_4: + *(_DWORD *)(this + 48) = *(_DWORD *)(v5[2] + 48); + v9 = (_DWORD *(__thiscall *)(char *, int))v4[4]; + if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) + { +LABEL_5: + std::string::string(&v34[1], *(char **)(v5[2] + 8), (int)v37); + goto LABEL_6; + } +LABEL_29: + v9(&v34[1], (int)v5); +LABEL_6: + v10 = *(_DWORD *)(*(_DWORD *)&v34[1] - 12); + *(_DWORD *)(this + 12) = v10; + v33 = (std::string *)operator new[](v10); + std::string::copy(&v34[1], v33, *(char **)(this + 12), 0, v29); + v11 = 0; + if ( *(_DWORD *)(this + 12) ) + v11 = (unsigned __int8)(*(_BYTE *)v33 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v11; + v12 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 20); + if ( v12 == std::moneypunct::do_curr_symbol ) + std::wstring::basic_string(&v35, *(wchar_t **)(v5[2] + 24), (int)v37); + else + v12(&v35, (int)v5); + v13 = *(v35 - 3); + *(_DWORD *)(this + 28) = v13; + if ( v13 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v30 = (wchar_t *)operator new[](2 * v13); + std::wstring::copy(&v35, v30, *(_DWORD *)(this + 28), 0); + v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 24); + if ( v14 == std::moneypunct::do_positive_sign ) + std::wstring::basic_string(&v36, *(wchar_t **)(v5[2] + 32), (int)v37); + else + v14(&v36, (int)v5); + v15 = *(v36 - 3); + *(_DWORD *)(this + 36) = v15; + if ( v15 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v31 = (wchar_t *)operator new[](2 * v15); + std::wstring::copy(&v36, v31, *(_DWORD *)(this + 36), 0); + v16 = *(_DWORD *(__thiscall **)(int *, int))(*v5 + 28); + if ( v16 == std::moneypunct::do_negative_sign ) + std::wstring::basic_string(v37, *(wchar_t **)(v5[2] + 40), (int)v34); + else + v16(v37, (int)v5); + v17 = *(_DWORD *)(v37[0] - 12); + *(_DWORD *)(this + 44) = v17; + if ( v17 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v32 = (wchar_t *)operator new[](2 * v17); + std::wstring::copy(v37, v32, *(_DWORD *)(this + 44), 0); + v18 = *(int (__fastcall **)(int))(*v5 + 36); + if ( v18 == std::moneypunct::do_pos_format ) + v19 = *(_DWORD *)(v5[2] + 52); + else + v19 = v18((int)v5); + *(_DWORD *)(this + 52) = v19; + v20 = *(int (__fastcall **)(int))(*v5 + 40); + if ( v20 == std::moneypunct::do_neg_format ) + v21 = *(_DWORD *)(v5[2] + 56); + else + v21 = v20((int)v5); + *(_DWORD *)(this + 56) = v21; + v22 = std::use_facet>(a2); + (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( + v22, + std::money_base::_S_atoms, + std::money_base::_S_atoms + 11, + this + 60); + *(_BYTE *)(this + 82) = 1; + *(_DWORD *)(this + 8) = v33; + *(_DWORD *)(this + 24) = v30; + *(_DWORD *)(this + 32) = v31; + *(_DWORD *)(this + 40) = v32; + if ( (_UNKNOWN *)v37[0] == &unk_51640C ) + { + v23 = v36 - 3; + if ( v36 == (_DWORD *)&unk_51640C ) + goto LABEL_23; + } + else + { + std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v37[0] - 12), (int)v34); + v23 = v36 - 3; + if ( v36 == (_DWORD *)&unk_51640C ) + goto LABEL_23; + } + std::wstring::_Rep::_M_dispose(v23, (int)v34); +LABEL_23: + if ( v35 == (_DWORD *)&unk_51640C ) + { + v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); + if ( *(_UNKNOWN **)&v34[1] == &unk_51641C ) + return; +LABEL_36: + std::string::_Rep::_M_dispose(v24, (int)v34); + return; + } + std::wstring::_Rep::_M_dispose(v35 - 3, (int)v34); + v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); + if ( *(_UNKNOWN **)&v34[1] != &unk_51641C ) + goto LABEL_36; +} +// 4D5008: variable 'v29' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; + +//----- (004D5530) -------------------------------------------------------- +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538D3C; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + *(_DWORD *)((char *)this + 18) = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + *((_BYTE *)this + 82) = 0; + return result; +} +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (004D55B0) -------------------------------------------------------- +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538D3C; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + *(_DWORD *)((char *)this + 18) = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + *((_BYTE *)this + 82) = 0; + return result; +} +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (004D5630) -------------------------------------------------------- +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__moneypunct_cache::~__moneypunct_cache(v2); + operator delete(a1); +} +// 4D5637: variable 'v2' is possibly undefined + +//----- (004D5660) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 82) == 0; + *(_DWORD *)v1 = &off_538D3C; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[6] ) + operator delete[](v2[6]); + if ( v2[8] ) + operator delete[](v2[8]); + if ( v2[10] ) + operator delete[](v2[10]); + } + std::locale::facet::~facet(a1); +} +// 4D5661: variable 'v1' is possibly undefined +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (004D56C0) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 82) == 0; + *(_DWORD *)v1 = &off_538D3C; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[6] ) + operator delete[](v2[6]); + if ( v2[8] ) + operator delete[](v2[8]); + if ( v2[10] ) + operator delete[](v2[10]); + } + std::locale::facet::~facet(a1); +} +// 4D56C1: variable 'v1' is possibly undefined +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (004D5720) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538F5C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D572C: variable 'v2' is possibly undefined + +//----- (004D5740) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538F5C; + std::locale::facet::~facet(a1); +} +// 4D5740: variable 'v1' is possibly undefined + +//----- (004D5750) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538FB4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D575C: variable 'v2' is possibly undefined + +//----- (004D5770) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538FB4; + std::locale::facet::~facet(a1); +} +// 4D5770: variable 'v1' is possibly undefined + +//----- (004D5780) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538DA4; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4D578C: variable 'v2' is possibly undefined +// 538DA4: using guessed type int (*off_538DA4)(); + +//----- (004D57A0) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538DA4; + std::codecvt::~codecvt(a1); +} +// 4D57A0: variable 'v1' is possibly undefined +// 538DA4: using guessed type int (*off_538DA4)(); + +//----- (004D57B0) -------------------------------------------------------- +void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1) +{ + __cxxabiv1::__si_class_type_info *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538DD0; + __cxxabiv1::__si_class_type_info::~__si_class_type_info(v2); + operator delete(a1); +} +// 4D57BC: variable 'v2' is possibly undefined +// 538DD0: using guessed type void (__cdecl *off_538DD0)(std::__iosfail_type_info *__hidden this); + +//----- (004D57D0) -------------------------------------------------------- +void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_538DD0; + __cxxabiv1::__si_class_type_info::~__si_class_type_info(this); +} +// 4D57D0: variable 'v1' is possibly undefined +// 538DD0: using guessed type void (__cdecl *off_538DD0)(std::__iosfail_type_info *__hidden this); + +//----- (004D57E0) -------------------------------------------------------- +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538F5C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D57EC: variable 'v2' is possibly undefined + +//----- (004D5800) -------------------------------------------------------- +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538F5C; + std::locale::facet::~facet(a1); +} +// 4D5800: variable 'v1' is possibly undefined + +//----- (004D5810) -------------------------------------------------------- +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538FB4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D581C: variable 'v2' is possibly undefined + +//----- (004D5830) -------------------------------------------------------- +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538FB4; + std::locale::facet::~facet(a1); +} +// 4D5830: variable 'v1' is possibly undefined + +//----- (004D5840) -------------------------------------------------------- +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538E54; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4D584C: variable 'v2' is possibly undefined +// 538E54: using guessed type int (*off_538E54)(); + +//----- (004D5860) -------------------------------------------------------- +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538E54; + std::codecvt::~codecvt(a1); +} +// 4D5860: variable 'v1' is possibly undefined +// 538E54: using guessed type int (*off_538E54)(); + +//----- (004D5870) -------------------------------------------------------- +_DWORD *__cdecl std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( + int a1, + int a2, + _DWORD *a3) +{ + while ( a1 != a2 ) + { + std::string::basic_string(a3, a1); + a3 += 6; + a1 += 24; + } + return a3; +} + +//----- (004D58CC) -------------------------------------------------------- +_DWORD *__cdecl std::__uninitialized_copy::__uninit_copy( + _DWORD *a1, + _DWORD *a2, + _DWORD *a3) +{ + while ( a1 != a2 ) + { + night::ns_sourcemap::ns_sourcemap(a3, a1); + a1 += 16; + a3 += 16; + } + return a3; +} + +//----- (004D5930) -------------------------------------------------------- +void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538E80; + std::bad_alloc::~bad_alloc(v2); + operator delete(a1, 4u); +} +// 4D593C: variable 'v2' is possibly undefined +// 538E80: using guessed type void (__cdecl *off_538E80)(std::bad_array_new_length *__hidden this); + +//----- (004D5960) -------------------------------------------------------- +void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538E80; + std::bad_alloc::~bad_alloc(a1); +} +// 4D5960: variable 'v1' is possibly undefined +// 538E80: using guessed type void (__cdecl *off_538E80)(std::bad_array_new_length *__hidden this); + +//----- (004D5970) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_destroy( + void *a1) +{ + operator delete(a1); +} + +//----- (004D5980) -------------------------------------------------------- +int __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_dispose( + int a1) +{ + return (**(int (__fastcall ***)(int))(a1 + 12))(a1 + 12); +} + +//----- (004D598C) -------------------------------------------------------- +char *__thiscall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::_M_get_deleter( + char *this, + _DWORD *a2) +{ + char *v2; // ebx + + v2 = this + 12; + if ( a2 != (_DWORD *)&std::_Sp_make_shared_tag::_S_ti(void)::__tag + && !std::type_info::operator==(a2, (int)&`typeinfo for'std::_Sp_make_shared_tag) ) + { + return 0; + } + return v2; +} +// 534780: using guessed type int *`typeinfo for'std::_Sp_make_shared_tag; + +//----- (004D59C0) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr_inplace,std::allocator>,std::allocator,std::allocator>>,(__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr_inplace( + void *a1) +{ + operator delete(a1); +} + +//----- (004D59E0) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538F5C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D59EC: variable 'v2' is possibly undefined + +//----- (004D5A00) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538F5C; + std::locale::facet::~facet(a1); +} +// 4D5A00: variable 'v1' is possibly undefined + +//----- (004D5A10) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538FB4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D5A1C: variable 'v2' is possibly undefined + +//----- (004D5A30) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538FB4; + std::locale::facet::~facet(a1); +} +// 4D5A30: variable 'v1' is possibly undefined + +//----- (004D5A40) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539090; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4D5A4C: variable 'v2' is possibly undefined +// 539090: using guessed type int (*off_539090)(); + +//----- (004D5A60) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539090; + std::codecvt::~codecvt(a1); +} +// 4D5A60: variable 'v1' is possibly undefined +// 539090: using guessed type int (*off_539090)(); + +//----- (004D5A70) -------------------------------------------------------- +void __fastcall std::_V2::error_category::~error_category(void *a1) +{ + operator delete(a1); +} + +//----- (004D5A90) -------------------------------------------------------- +void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this) +{ + return `anonymous namespace'::system_category_instance; +} +// 515F64: using guessed type void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this); + +//----- (004D5AA0) -------------------------------------------------------- +void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this) +{ + return &`anonymous namespace'::generic_category_instance; +} +// 515F68: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); + +//----- (004D5AB0) -------------------------------------------------------- +int __thiscall std::map::erase(_DWORD *this, int a2) +{ + int v3; // eax + int *v4; // edx + int v5; // esi + int *v6; // edi + int *v7; // ecx + int *v8; // eax + int *v10; // [esp+18h] [ebp-20h] + int v11; // [esp+1Ch] [ebp-1Ch] + + v3 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::equal_range( + this, + a2); + v5 = this[5]; + v6 = v4; + v7 = (int *)v3; + if ( v3 == this[3] && v4 == this + 1 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(this[2]); + this[2] = 0; + this[3] = v6; + this[4] = v6; + this[5] = 0; + } + else + { + while ( v6 != v7 ) + { + v10 = v7; + v11 = std::_Rb_tree_increment(v7); + v8 = std::_Rb_tree_rebalance_for_erase(v10, this + 1); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)v8); + --this[5]; + v7 = (int *)v11; + } + } + return v5 - this[5]; +} +// 4D5ACA: variable 'v4' is possibly undefined +// 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); + +//----- (004D5B40) -------------------------------------------------------- +char *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2) +{ + _DWORD *v3; // ebx + _DWORD *v4; // edx + int insert_hint_unique_pos; // eax + _DWORD *v6; // edx + _DWORD *v7; // edi + char v8; // al + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + _DWORD *v11; // [esp+18h] [ebp-20h] + _DWORD *v12; // [esp+18h] [ebp-20h] + _DWORD *v13; // [esp+1Ch] [ebp-1Ch] + _DWORD *v14; // [esp+1Ch] [ebp-1Ch] + + v3 = this + 1; + v4 = (_DWORD *)this[2]; + v13 = this + 1; + while ( v4 ) + { + v11 = v4; + if ( (unsigned __int8)std::operator<((int)(v4 + 4), (int)a2) ) + { + v4 = (_DWORD *)v11[3]; + } + else + { + v3 = v11; + v4 = (_DWORD *)v11[2]; + } + } + if ( v13 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) + { + v12 = v3; + v3 = operator new((struct type_info *)0x98, v10); + std::string::basic_string(v3 + 4, a2); + v3[18] = v3 + 20; + v3[25] = v3 + 27; + v3[32] = v3 + 34; + v3[10] = 0; + v3[11] = 0; + v3[19] = 0; + *((_BYTE *)v3 + 80) = 0; + v3[26] = 0; + *((_BYTE *)v3 + 108) = 0; + v3[33] = 0; + *((_BYTE *)v3 + 136) = 0; + *((_BYTE *)v3 + 68) = 0; + *((_BYTE *)v3 + 124) = 0; + v3[15] = 0; + v3[12] = 0; + v3[13] = 0; + v3[14] = 0; + v3[24] = -1; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + v12, + (int)(v3 + 4)); + v7 = v6; + if ( v6 ) + { + v8 = v13 == v6 || insert_hint_unique_pos != 0; + if ( !v8 ) + v8 = std::operator<((int)(v3 + 4), (int)(v6 + 4)); + std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); + ++this[5]; + } + else + { + v14 = (_DWORD *)insert_hint_unique_pos; + WXML::DOMLib::Token::~Token((int)(v3 + 10)); + std::string::_M_dispose((void **)v3 + 4); + operator delete(v3); + v3 = v14; + } + } + return (char *)(v3 + 10); +} +// 4D5BA8: variable 'v10' is possibly undefined +// 4D5C4C: variable 'v6' is possibly undefined + +//----- (004D5CC4) -------------------------------------------------------- +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) +{ + _DWORD *v3; // ebx + int v4; // eax + _DWORD *inserted; // esi + _DWORD *v6; // ebx + int insert_hint_unique_pos; // eax + _DWORD *v8; // edx + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + + v3 = this + 1; + v4 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( + this[2], + (int)(this + 1), + a2); + inserted = (_DWORD *)v4; + if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<(a2, v4 + 16) ) + { + v6 = operator new((struct type_info *)0x98, v10); + std::string::basic_string(v6 + 4, a2); + v6[18] = v6 + 20; + v6[25] = v6 + 27; + v6[32] = v6 + 34; + v6[10] = 0; + v6[11] = 0; + v6[19] = 0; + *((_BYTE *)v6 + 80) = 0; + v6[26] = 0; + *((_BYTE *)v6 + 108) = 0; + v6[33] = 0; + *((_BYTE *)v6 + 136) = 0; + *((_BYTE *)v6 + 68) = 0; + *((_BYTE *)v6 + 124) = 0; + v6[15] = 0; + v6[12] = 0; + v6[13] = 0; + v6[14] = 0; + v6[24] = -1; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v6 + 4)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v8 ) + inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + this, + insert_hint_unique_pos, + v8, + v6); + else + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)v6); + } + return inserted + 10; +} +// 4D5D06: variable 'v10' is possibly undefined +// 4D5DB1: variable 'v8' is possibly undefined + +//----- (004D5E04) -------------------------------------------------------- +_DWORD *__thiscall std::map::operator[](_DWORD *this, _DWORD *a2) +{ + _DWORD *v3; // ebx + int v4; // eax + _DWORD *inserted; // edi + char *v6; // ebx + int insert_hint_unique_pos; // eax + _DWORD *v8; // edx + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + + v3 = this + 1; + v4 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( + this[2], + (int)(this + 1), + (int)a2); + inserted = (_DWORD *)v4; + if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<((int)a2, v4 + 16) ) + { + v6 = (char *)operator new((struct type_info *)0x40, v10); + std::string::basic_string((_DWORD *)v6 + 4, a2); + *((_DWORD *)v6 + 10) = v6 + 48; + *((_DWORD *)v6 + 11) = 0; + v6[48] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v6 + 16)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v8 ) + { + inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + this, + insert_hint_unique_pos, + v8, + v6); + } + else + { + std::pair::~pair((void **)v6 + 4); + operator delete(v6); + } + } + return inserted + 10; +} +// 4D5E42: variable 'v10' is possibly undefined +// 4D5E86: variable 'v8' is possibly undefined + +//----- (004D5EC0) -------------------------------------------------------- +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) +{ + _DWORD *v3; // esi + int v4; // eax + _DWORD *inserted; // ebx + char *v6; // esi + int insert_hint_unique_pos; // eax + _DWORD *v8; // edx + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + + v3 = this + 1; + v4 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( + this[2], + (int)(this + 1), + a2); + inserted = (_DWORD *)v4; + if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<(a2, v4 + 16) ) + { + v6 = (char *)operator new((struct type_info *)0x40, v10); + std::string::basic_string((_DWORD *)v6 + 4, a2); + *((_DWORD *)v6 + 10) = v6 + 48; + *((_DWORD *)v6 + 11) = 0; + v6[48] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v6 + 16)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v8 ) + { + inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + this, + insert_hint_unique_pos, + v8, + v6); + } + else + { + std::pair::~pair((void **)v6 + 4); + operator delete(v6); + } + } + return inserted + 10; +} +// 4D5F02: variable 'v10' is possibly undefined +// 4D5F46: variable 'v8' is possibly undefined + +//----- (004D5FA4) -------------------------------------------------------- +_DWORD *__thiscall std::map,std::allocator>>>::operator[]( + _DWORD *this, + _DWORD *a2) +{ + _DWORD *v3; // ebx + int v4; // eax + _DWORD *inserted; // edi + _DWORD *v6; // ebx + int insert_hint_unique_pos; // eax + _DWORD *v8; // edx + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + + v3 = this + 1; + v4 = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound( + this[2], + (int)(this + 1), + (int)a2); + inserted = (_DWORD *)v4; + if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<((int)a2, v4 + 16) ) + { + v6 = operator new((struct type_info *)0x30, v10); + std::string::basic_string(v6 + 4, a2); + v6[10] = 0; + v6[11] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v6 + 4)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v8 ) + { + inserted = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node( + this, + insert_hint_unique_pos, + v8, + v6); + } + else + { + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v6 + 11); + std::string::_M_dispose((void **)v6 + 4); + operator delete(v6); + } + } + return inserted + 10; +} +// 4D5FE2: variable 'v10' is possibly undefined +// 4D6023: variable 'v8' is possibly undefined + +//----- (004D6064) -------------------------------------------------------- +_DWORD *__thiscall std::map,std::allocator>>>::operator[]( + _DWORD *this, + int a2) +{ + _DWORD *v3; // esi + int v4; // eax + _DWORD *inserted; // ebx + _DWORD *v6; // esi + int insert_hint_unique_pos; // eax + _DWORD *v8; // edx + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + + v3 = this + 1; + v4 = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_lower_bound( + this[2], + (int)(this + 1), + a2); + inserted = (_DWORD *)v4; + if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<(a2, v4 + 16) ) + { + v6 = operator new((struct type_info *)0x30, v10); + std::string::basic_string(v6 + 4, a2); + v6[10] = 0; + v6[11] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v6 + 4)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v8 ) + { + inserted = std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node( + this, + insert_hint_unique_pos, + v8, + v6); + } + else + { + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v6 + 11); + std::string::_M_dispose((void **)v6 + 4); + operator delete(v6); + } + } + return inserted + 10; +} +// 4D60A6: variable 'v10' is possibly undefined +// 4D60E7: variable 'v8' is possibly undefined + +//----- (004D614C) -------------------------------------------------------- +char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) +{ + _DWORD *v3; // ebx + _DWORD *v4; // edx + int insert_hint_unique_pos; // eax + _DWORD *v6; // edx + _DWORD *v7; // edi + char v8; // al + void *v10; // [esp+0h] [ebp-38h] + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v12; // [esp+18h] [ebp-20h] + _DWORD *v13; // [esp+18h] [ebp-20h] + _DWORD *v14; // [esp+18h] [ebp-20h] + _DWORD *v15; // [esp+1Ch] [ebp-1Ch] + + v3 = this + 1; + v4 = (_DWORD *)this[2]; + v15 = this + 1; + while ( v4 ) + { + v12 = v4; + if ( (unsigned __int8)std::operator<((int)(v4 + 4), (int)a2) ) + { + v4 = (_DWORD *)v12[3]; + } + else + { + v3 = v12; + v4 = (_DWORD *)v12[2]; + } + } + if ( v15 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) + { + v13 = v3; + v3 = operator new((struct type_info *)0x34, v11); + std::string::basic_string(v3 + 4, a2); + v3[10] = 0; + v3[11] = 0; + v3[12] = 0; + insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + this, + v13, + (int)(v3 + 4)); + v7 = (_DWORD *)insert_hint_unique_pos; + if ( v6 ) + { + v8 = insert_hint_unique_pos != 0 || v15 == v6; + if ( v7 == 0 && v15 != v6 ) + { + v14 = v6; + v8 = std::operator<((int)(v3 + 4), (int)(v6 + 4)); + v6 = v14; + } + std::_Rb_tree_insert_and_rebalance(v8, v3, v6, v15); + ++this[5]; + } + else + { + std::_Destroy_aux::__destroy((void **)v3[10], (char **)v3[11]); + if ( v3[10] ) + operator delete((void *)v3[10]); + std::string::_M_dispose((void **)v3 + 4); + v10 = v3; + v3 = v7; + operator delete(v10); + } + } + return (char *)(v3 + 10); +} +// 4D61B4: variable 'v11' is possibly undefined +// 4D61FB: variable 'v6' is possibly undefined + +//----- (004D6284) -------------------------------------------------------- +_DWORD *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *inserted; // edi + _DWORD *v5; // ebx + char v6; // al + _DWORD *v7; // ebx + int insert_hint_unique_pos; // eax + _DWORD *v9; // edx + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v12; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 1; + inserted = this + 1; + v5 = (_DWORD *)this[2]; + while ( v5 ) + { + v12 = v2; + v6 = std::operator<((int)(v5 + 4), (int)a2); + v2 = v12; + if ( v6 ) + { + v5 = (_DWORD *)v5[3]; + } + else + { + inserted = v5; + v5 = (_DWORD *)v5[2]; + } + } + if ( v2 == inserted || (unsigned __int8)std::operator<((int)a2, (int)(inserted + 4)) ) + { + v7 = operator new((struct type_info *)0x34, v11); + std::string::basic_string(v7 + 4, a2); + v7[10] = 0; + v7[11] = 0; + v7[12] = 0; + insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v7 + 4)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v9 ) + { + inserted = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( + this, + insert_hint_unique_pos, + v9, + v7); + } + else + { + std::vector::~vector((void ***)v7 + 10, 0); + std::string::_M_dispose((void **)v7 + 4); + operator delete(v7); + } + } + return inserted + 10; +} +// 4D62E8: variable 'v11' is possibly undefined +// 4D6330: variable 'v9' is possibly undefined + +//----- (004D6370) -------------------------------------------------------- +_DWORD *__thiscall std::map>::operator[](_DWORD *this, int a2) +{ + _DWORD *v3; // esi + int v4; // eax + _DWORD *inserted; // ebx + _DWORD *v6; // esi + int insert_hint_unique_pos; // eax + _DWORD *v8; // edx + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + + v3 = this + 1; + v4 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_lower_bound( + this[2], + (int)(this + 1), + a2); + inserted = (_DWORD *)v4; + if ( (_DWORD *)v4 == v3 || (unsigned __int8)std::operator<(a2, v4 + 16) ) + { + v6 = operator new((struct type_info *)0x34, v10); + std::string::basic_string(v6 + 4, a2); + v6[10] = 0; + v6[11] = 0; + v6[12] = 0; + insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v6 + 4)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v8 ) + { + inserted = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( + this, + insert_hint_unique_pos, + v8, + v6); + } + else + { + std::vector::~vector((void ***)v6 + 10, 0); + std::string::_M_dispose((void **)v6 + 4); + operator delete(v6); + } + } + return inserted + 10; +} +// 4D63B2: variable 'v10' is possibly undefined +// 4D63FA: variable 'v8' is possibly undefined + +//----- (004D6460) -------------------------------------------------------- +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) +{ + _DWORD *v2; // edx + _DWORD *inserted; // ebx + _DWORD *v5; // esi + char v6; // al + void **v7; // esi + int insert_hint_unique_pos; // eax + _DWORD *v9; // edx + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v12; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 1; + inserted = this + 1; + v5 = (_DWORD *)this[2]; + while ( v5 ) + { + v12 = v2; + v6 = std::operator<((int)(v5 + 4), a2); + v2 = v12; + if ( v6 ) + { + v5 = (_DWORD *)v5[3]; + } + else + { + inserted = v5; + v5 = (_DWORD *)v5[2]; + } + } + if ( v2 == inserted || (unsigned __int8)std::operator<(a2, (int)(inserted + 4)) ) + { + v7 = (void **)operator new((struct type_info *)0x2C, v11); + std::string::basic_string(v7 + 4, a2); + v7[10] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v7 + 4)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v9 ) + { + inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + this, + insert_hint_unique_pos, + v9, + v7); + } + else + { + std::string::_M_dispose(v7 + 4); + operator delete(v7); + } + } + return inserted + 10; +} +// 4D64C4: variable 'v11' is possibly undefined +// 4D64FE: variable 'v9' is possibly undefined + +//----- (004D655C) -------------------------------------------------------- +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) +{ + _DWORD *v2; // edi + _DWORD *v3; // ebx + _DWORD *v4; // edi + _DWORD *v5; // edx + int insert_hint_unique_pos; // edi + _DWORD *v7; // esi + char v8; // al + void *v10; // [esp+0h] [ebp-38h] + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v13; // [esp+1Ch] [ebp-1Ch] + + v2 = (_DWORD *)this[2]; + v13 = this + 1; + v3 = this + 1; + while ( v2 ) + { + if ( (unsigned __int8)std::operator<((int)(v2 + 4), a2) ) + { + v2 = (_DWORD *)v2[3]; + } + else + { + v3 = v2; + v2 = (_DWORD *)v2[2]; + } + } + if ( v13 == v3 || (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + { + v4 = v3; + v3 = operator new((struct type_info *)0x2C, v11); + std::string::basic_string(v3 + 4, a2); + v3[10] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + v4, + (int)(v3 + 4)); + v7 = v5; + if ( v5 ) + { + v8 = insert_hint_unique_pos != 0 || v13 == v5; + if ( !v8 ) + v8 = std::operator<((int)(v3 + 4), (int)(v5 + 4)); + std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); + ++this[5]; + } + else + { + std::string::_M_dispose((void **)v3 + 4); + v10 = v3; + v3 = (_DWORD *)insert_hint_unique_pos; + operator delete(v10); + } + } + return v3 + 10; +} +// 4D65C1: variable 'v11' is possibly undefined +// 4D65F5: variable 'v5' is possibly undefined + +//----- (004D6684) -------------------------------------------------------- +_DWORD *__thiscall std::map>>::operator[]( + _DWORD *this, + _DWORD *a2) +{ + _DWORD *v3; // edi + _DWORD *v4; // ebx + _DWORD *v5; // eax + _DWORD *v6; // edx + bool v7; // al + void (__cdecl *v9)(void *); // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + int insert_hint_unique_pos; // [esp+1Ch] [ebp-1Ch] + + v3 = this + 1; + v4 = this + 1; + v5 = (_DWORD *)this[2]; + while ( v5 ) + { + if ( v5[4] < *a2 ) + { + v5 = (_DWORD *)v5[3]; + } + else + { + v4 = v5; + v5 = (_DWORD *)v5[2]; + } + } + if ( v3 == v4 || *a2 < v4[4] ) + { + v10 = v4; + v4 = operator new((struct type_info *)0x2C, v9); + v4[4] = *a2; + std::_Rb_tree_header::_Rb_tree_header(v4 + 6); + insert_hint_unique_pos = std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( + this, + v10, + v4 + 4); + if ( v6 ) + { + v7 = insert_hint_unique_pos != 0 || v3 == v6; + if ( !v7 ) + v7 = v4[4] < v6[4]; + std::_Rb_tree_insert_and_rebalance(v7, v4, v6, v3); + ++this[5]; + } + else + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)(v4 + 5)); + operator delete(v4); + v4 = (_DWORD *)insert_hint_unique_pos; + } + } + return v4 + 5; +} +// 4D66CD: variable 'v9' is possibly undefined +// 4D6705: variable 'v6' is possibly undefined + +//----- (004D675C) -------------------------------------------------------- +char *__thiscall std::map>>::operator[](_DWORD *this, int *a2) +{ + _DWORD *v3; // edi + _DWORD *v4; // ebx + _DWORD *v5; // eax + int v6; // eax + int insert_hint_unique_pos; // eax + _DWORD *v8; // edx + bool v9; // cl + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v12; // [esp+1Ch] [ebp-1Ch] + _DWORD *v13; // [esp+1Ch] [ebp-1Ch] + + v3 = this + 1; + v4 = this + 1; + v5 = (_DWORD *)this[2]; + while ( v5 ) + { + if ( v5[4] < *a2 ) + { + v5 = (_DWORD *)v5[3]; + } + else + { + v4 = v5; + v5 = (_DWORD *)v5[2]; + } + } + if ( v3 == v4 || *a2 < v4[4] ) + { + v12 = v4; + v4 = operator new((struct type_info *)0x2C, v11); + v6 = *a2; + v4[6] = 0; + v4[7] = 0; + v4[4] = v6; + v4[8] = v4 + 6; + v4[9] = v4 + 6; + v4[10] = 0; + insert_hint_unique_pos = std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( + this, + v12, + v4 + 4); + if ( v8 ) + { + v9 = insert_hint_unique_pos != 0 || v3 == v8; + if ( !v9 ) + v9 = v4[4] < v8[4]; + std::_Rb_tree_insert_and_rebalance(v9, v4, v8, v3); + ++this[5]; + } + else + { + v13 = (_DWORD *)insert_hint_unique_pos; + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase((void *)v4[7]); + operator delete(v4); + v4 = v13; + } + } + return (char *)(v4 + 5); +} +// 4D67A5: variable 'v11' is possibly undefined +// 4D67F0: variable 'v8' is possibly undefined + +//----- (004D6854) -------------------------------------------------------- +char *__thiscall std::map::operator[](_DWORD *this, int *a2) +{ + _DWORD *v3; // edi + _DWORD *v4; // ebx + _DWORD *v5; // eax + int v6; // eax + int insert_hint_unique_pos; // eax + _DWORD *v8; // edx + bool v9; // cl + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v12; // [esp+1Ch] [ebp-1Ch] + _DWORD *v13; // [esp+1Ch] [ebp-1Ch] + + v3 = this + 1; + v4 = this + 1; + v5 = (_DWORD *)this[2]; + while ( v5 ) + { + if ( v5[4] < (unsigned int)*a2 ) + { + v5 = (_DWORD *)v5[3]; + } + else + { + v4 = v5; + v5 = (_DWORD *)v5[2]; + } + } + if ( v3 == v4 || (unsigned int)*a2 < v4[4] ) + { + v12 = v4; + v4 = operator new((struct type_info *)0x2C, v11); + v6 = *a2; + v4[6] = 0; + *((_BYTE *)v4 + 28) = 0; + v4[4] = v6; + v4[5] = v4 + 7; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + v12, + v4 + 4); + if ( v8 ) + { + v9 = insert_hint_unique_pos != 0 || v3 == v8; + if ( !v9 ) + v9 = v4[4] < v8[4]; + std::_Rb_tree_insert_and_rebalance(v9, v4, v8, v3); + ++this[5]; + } + else + { + v13 = (_DWORD *)insert_hint_unique_pos; + std::string::_M_dispose((void **)v4 + 5); + operator delete(v4); + v4 = v13; + } + } + return (char *)(v4 + 5); +} +// 4D689D: variable 'v11' is possibly undefined +// 4D68DB: variable 'v8' is possibly undefined + +//----- (004D6938) -------------------------------------------------------- +_DWORD *__thiscall std::set::insert(_DWORD *this, int a2) +{ + int insert_unique_pos; // eax + _DWORD *v4; // edx + _DWORD *v5; // edi + _DWORD *v6; // ebx + void (__cdecl *v8)(void *); // [esp+4h] [ebp-34h] + char v9; // [esp+1Fh] [ebp-19h] + + insert_unique_pos = std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( + this, + a2); + if ( !v4 ) + return (_DWORD *)insert_unique_pos; + v9 = 1; + v5 = v4; + if ( !insert_unique_pos && v4 != this + 1 ) + v9 = std::operator<(a2, (int)(v4 + 4)); + v6 = operator new((struct type_info *)0x28, v8); + std::string::basic_string(v6 + 4, a2); + std::_Rb_tree_insert_and_rebalance(v9, v6, v5, this + 1); + ++this[5]; + return v6; +} +// 4D6951: variable 'v4' is possibly undefined +// 4D6987: variable 'v8' is possibly undefined + +//----- (004D69F8) -------------------------------------------------------- +int __thiscall std::pair::swap(_DWORD *this, _DWORD *a2) +{ + int v2; // ebx + _DWORD v4[34]; // [esp+10h] [ebp-88h] BYREF + + v2 = (int)(this + 6); + std::string::swap(this, a2); + WXML::DOMLib::Token::Token(v4, v2); + WXML::DOMLib::Token::operator=(v2, (int)(a2 + 6)); + WXML::DOMLib::Token::operator=((int)(a2 + 6), (int)v4); + return WXML::DOMLib::Token::~Token((int)v4); +} +// 4D69F8: using guessed type _DWORD var_88[34]; + +//----- (004D6A50) -------------------------------------------------------- +_DWORD *__thiscall std::pair::pair(_DWORD *this, _DWORD *a2) +{ + std::string::basic_string(this, a2); + return WXML::DOMLib::Token::Token(this + 6, (int)(a2 + 6)); +} + +//----- (004D6A7C) -------------------------------------------------------- +_DWORD *__thiscall std::pair::operator=(_DWORD *this, _DWORD *a2) +{ + std::string::operator=(this, a2); + WXML::DOMLib::Token::operator=((int)(this + 6), (int)(a2 + 6)); + return this; +} + +//----- (004D6AB0) -------------------------------------------------------- +int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, _BYTE *a4, int a5, int a6) +{ + char *v6; // edi + size_t Size; // ebx + int result; // eax + size_t v9; // ebp + char *v10; // esi + char v11; // al + char v12; // dl + _BYTE *v13; // eax + _BYTE *v14; // ecx + int (__stdcall *v15)(unsigned __int8); // edx + int (__stdcall *v16)(unsigned __int8); // edx + char v17; // dl + int (__stdcall *v18)(unsigned __int8); // eax + char v19; // dl + int (__stdcall *v20)(unsigned __int8); // eax + int (__stdcall *v21)(unsigned __int8); // eax + void *v22; // [esp+14h] [ebp-28h] + _BYTE *v23; // [esp+1Ch] [ebp-20h] + _BYTE *v24; // [esp+1Ch] [ebp-20h] + _BYTE *v25; // [esp+1Ch] [ebp-20h] + _BYTE *v26; // [esp+1Ch] [ebp-20h] + _BYTE *v27; // [esp+1Ch] [ebp-20h] + + v6 = a3; + v22 = a4; + Size = a5 - a6; + result = a1[3] & 0xB0; + if ( result == 32 ) + { + if ( a6 ) + { + result = (int)memcpy(a3, a4, a6); + if ( !Size ) + return result; + } + else if ( !Size ) + { + return result; + } + return (int)memset(&a3[a6], (char)Src, Size); + } + v9 = a6; + if ( result != 16 ) + goto LABEL_3; + v13 = std::use_facet>((int)(a1 + 27)); + v14 = v13; + if ( v13[28] ) + { + result = (unsigned __int8)*a4; + if ( v14[74] == (_BYTE)result ) + { +LABEL_23: + *a3 = result; + v9 = a6 - 1; + v6 = a3 + 1; + v22 = a4 + 1; + goto LABEL_3; + } + goto LABEL_22; + } + v23 = v13; + std::ctype::_M_widen_init((int)v13); + v14 = v23; + v15 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); + result = 45; + if ( v15 != std::ctype::do_widen ) + { + result = v15(45u); + v14 = v23; + } + if ( *a4 == (_BYTE)result ) + goto LABEL_23; + if ( v14[28] ) + { + result = (unsigned __int8)*a4; +LABEL_22: + if ( v14[72] == (_BYTE)result ) + goto LABEL_23; +LABEL_7: + if ( v14[77] == (_BYTE)result && a6 > 1 ) + { +LABEL_9: + v11 = a4[1]; + if ( v11 == v14[149] ) + { +LABEL_44: + v6 = a3 + 2; + v9 = a6 - 2; + *a3 = *a4; + result = (unsigned __int8)a4[1]; + v22 = a4 + 2; + a3[1] = result; + goto LABEL_3; + } + goto LABEL_10; + } +LABEL_3: + v10 = &v6[Size]; + if ( !Size ) + { + if ( !v9 ) + return result; + return (int)memcpy(v10, v22, v9); + } + goto LABEL_13; + } + v24 = v14; + std::ctype::_M_widen_init((int)v14); + v14 = v24; + v16 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); + result = 43; + if ( v16 != std::ctype::do_widen ) + { + result = v16(43u); + v14 = v24; + } + if ( *a4 == (_BYTE)result ) + goto LABEL_23; + if ( v14[28] ) + { + result = (unsigned __int8)*a4; + goto LABEL_7; + } + v25 = v14; + std::ctype::_M_widen_init((int)v14); + v14 = v25; + v17 = 48; + v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v25 + 24); + if ( v18 != std::ctype::do_widen ) + { + v17 = v18(48u); + v14 = v25; + } + result = (int)a4; + if ( *a4 != v17 || a6 <= 1 ) + goto LABEL_3; + if ( v14[28] ) + goto LABEL_9; + v26 = v14; + std::ctype::_M_widen_init((int)v14); + v14 = v26; + v19 = 120; + v20 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v26 + 24); + if ( v20 != std::ctype::do_widen ) + { + v19 = v20(120u); + v14 = v26; + } + v11 = a4[1]; + if ( v11 == v19 ) + goto LABEL_44; + if ( v14[28] ) + { +LABEL_10: + v12 = v14[117]; + goto LABEL_11; + } + v27 = v14; + std::ctype::_M_widen_init((int)v14); + v21 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v27 + 24); + if ( v21 == std::ctype::do_widen ) + v12 = 88; + else + v12 = v21(88u); + v11 = a4[1]; +LABEL_11: + if ( v12 == v11 ) + goto LABEL_44; + v10 = &a3[Size]; + if ( !Size ) + return (int)memcpy(v10, v22, v9); +LABEL_13: + result = (int)memset(v6, (char)Src, Size); + if ( v9 ) + return (int)memcpy(v10, v22, v9); + return result; +} + +//----- (004D6DD0) -------------------------------------------------------- +int __cdecl std::__pad>::_S_pad( + wchar_t *S1, + wchar_t *S2, + wchar_t *a3, + wchar_t *a4, + int a5, + int a6) +{ + wchar_t *S; // edi + size_t N; // ebx + int result; // eax + size_t v9; // ebp + int v10; // edx + wchar_t *v11; // esi + __int16 v12; // ax + __int16 v13; // ax + wchar_t *v14; // [esp+30h] [ebp-30h] + void *v15; // [esp+3Ch] [ebp-24h] + + S = a3; + v14 = a4; + N = a5 - a6; + result = *((_DWORD *)S1 + 3) & 0xB0; + if ( result == 32 ) + { + if ( a6 ) + { + result = (int)wmemcpy(a3, a4, a6); + if ( !N ) + return result; + } + else if ( !N ) + { + return result; + } + return (int)wmemset(&a3[a6], (wchar_t)S2, N); + } + v9 = a6; + v10 = N; + if ( result != 16 ) + goto LABEL_3; + v15 = std::use_facet>((int)(S1 + 54)); + result = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(45); + v10 = N; + if ( *a4 == (_WORD)result + || (result = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(43), v10 = N, *a4 == (_WORD)result) ) + { + *a3 = result; + v9 = a6 - 1; + S = a3 + 1; + v14 = a4 + 1; + goto LABEL_3; + } + result = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(48); + v10 = N; + if ( *a4 != (_WORD)result || a6 <= 1 ) + { +LABEL_3: + v11 = &S[v10]; + if ( !N ) + { + if ( !v9 ) + return result; + return (int)wmemcpy(v11, v14, v9); + } + goto LABEL_13; + } + v12 = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(120); + v10 = N; + if ( a4[1] == v12 + || (v13 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 40))(v15, 88), v10 = N, a4[1] == v13) ) + { + S = a3 + 2; + v9 = a6 - 2; + *a3 = *a4; + result = a4[1]; + v14 = a4 + 2; + a3[1] = result; + goto LABEL_3; + } + v11 = &a3[N]; + if ( !N ) + return (int)wmemcpy(v11, v14, v9); +LABEL_13: + result = (int)wmemset(S, (wchar_t)S2, N); + if ( v9 ) + return (int)wmemcpy(v11, v14, v9); + return result; +} + +//----- (004D6FF0) -------------------------------------------------------- +void *std::ctype::classic_table() +{ + return &std::ctype::classic_table(void)::_S_classic_table; +} + +//----- (004D7000) -------------------------------------------------------- +int __thiscall std::ctype::ctype(_DWORD *this, void *a2, char a3, int a4) +{ + void *v4; // eax + int result; // eax + + v4 = a2; + *this = &off_5390BC; + this[4] = 0; + this[5] = 0; + this[1] = a4 != 0; + *((_BYTE *)this + 12) = a3 & (a2 != 0); + if ( !a2 ) + v4 = &std::ctype::classic_table(void)::_S_classic_table; + this[6] = v4; + result = 0; + *(_DWORD *)((char *)this + 29) = 0; + *(_DWORD *)((char *)this + 281) = 0; + memset( + (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); + *((_BYTE *)this + 28) = 0; + *(_DWORD *)((char *)this + 285) = 0; + *(_DWORD *)((char *)this + 537) = 0; + memset( + (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); + *((_BYTE *)this + 541) = 0; + return result; +} +// 5390BC: using guessed type int (*off_5390BC)(); + +//----- (004D70B0) -------------------------------------------------------- +int __thiscall std::ctype::ctype(_DWORD *this, int a2, void *a3, char a4, int a5) +{ + void *v5; // eax + int result; // eax + + v5 = a3; + *this = &off_5390BC; + this[4] = 0; + this[5] = 0; + this[1] = a5 != 0; + *((_BYTE *)this + 12) = a4 & (a3 != 0); + if ( !a3 ) + v5 = &std::ctype::classic_table(void)::_S_classic_table; + this[6] = v5; + result = 0; + *(_DWORD *)((char *)this + 29) = 0; + *(_DWORD *)((char *)this + 281) = 0; + memset( + (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); + *((_BYTE *)this + 28) = 0; + *(_DWORD *)((char *)this + 285) = 0; + *(_DWORD *)((char *)this + 537) = 0; + memset( + (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); + *((_BYTE *)this + 541) = 0; + return result; +} +// 5390BC: using guessed type int (*off_5390BC)(); + +//----- (004D7160) -------------------------------------------------------- +void __fastcall std::ctype::~ctype(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::ctype::~ctype(v2); + operator delete(a1); +} +// 4D7166: variable 'v2' is possibly undefined + +//----- (004D7180) -------------------------------------------------------- +void __cdecl std::ctype::~ctype(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_5390BC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + if ( *((_BYTE *)v2 + 12) && v2[6] ) + operator delete[]((void *)v2[6]); + std::locale::facet::~facet(a1); +} +// 4D7184: variable 'v1' is possibly undefined +// 5390BC: using guessed type int (*off_5390BC)(); + +//----- (004D71C0) -------------------------------------------------------- +wctype_t __fastcall std::ctype::_M_initialize_ctype(int a1) +{ + int WCh; // ebx + int v3; // eax + int i; // ebx + int j; // ebx + wctype_t result; // ax + + for ( WCh = 0; WCh != 128; ++WCh ) + { + v3 = wctob(WCh); + if ( v3 == -1 ) + { + *(_BYTE *)(a1 + 12) = 0; + goto LABEL_5; + } + *(_BYTE *)(a1 + WCh + 13) = v3; + } + *(_BYTE *)(a1 + 12) = 1; +LABEL_5: + for ( i = 0; i != 256; ++i ) + *(_WORD *)(a1 + 2 * i + 142) = btowc(i); + for ( j = 0; j != 16; ++j ) + { + *(_WORD *)(a1 + 2 * j + 654) = 1 << j; + result = std::ctype::_M_convert_to_wmask(1 << j); + *(_WORD *)(a1 + 2 * j + 686) = result; + } + return result; +} + +//----- (004D7260) -------------------------------------------------------- +wctype_t __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3) +{ + int v4; // eax + + *this = &off_5390EC; + this[1] = a3 != 0; + v4 = std::locale::facet::_S_clone_c_locale(); + *((_BYTE *)this + 12) = 0; + this[2] = v4; + return std::ctype::_M_initialize_ctype((int)this); +} +// 5390EC: using guessed type int (*off_5390EC)(); + +//----- (004D72A0) -------------------------------------------------------- +wctype_t __thiscall std::ctype::ctype(_DWORD *this, int a2) +{ + *this = &off_5390EC; + this[1] = a2 != 0; + this[2] = std::locale::facet::_S_get_c_locale(); + *((_BYTE *)this + 12) = 0; + return std::ctype::_M_initialize_ctype((int)this); +} +// 5390EC: using guessed type int (*off_5390EC)(); + +//----- (004D72E0) -------------------------------------------------------- +void __fastcall std::ctype::~ctype(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5390EC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + *a1 = &unk_538ED4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D72FF: variable 'v2' is possibly undefined +// 5390EC: using guessed type int (*off_5390EC)(); + +//----- (004D7320) -------------------------------------------------------- +void __cdecl std::ctype::~ctype(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_5390EC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + *v2 = &unk_538ED4; + std::locale::facet::~facet(a1); +} +// 4D7324: variable 'v1' is possibly undefined +// 5390EC: using guessed type int (*off_5390EC)(); + +//----- (004D7350) -------------------------------------------------------- +int __thiscall std::deque>::_M_push_back_aux const&>( + int this, + _DWORD *a2) +{ + int v3; // edx + char *v4; // eax + unsigned int v5; // esi + int v6; // ebx + char *v7; // ecx + char *v8; // ebx + unsigned int v9; // eax + unsigned int v10; // esi + char *v11; // eax + const void *v12; // ecx + int v13; // eax + int v14; // eax + char *v15; // ebx + int v16; // eax + int v17; // ebx + int *v18; // ecx + int result; // eax + void (__cdecl *v20)(void *); // [esp+4h] [ebp-34h] + int v21; // [esp+14h] [ebp-24h] + char *v22; // [esp+18h] [ebp-20h] + int v23; // [esp+1Ch] [ebp-1Ch] + + v3 = *(_DWORD *)(this + 36); + v4 = *(char **)(this + 20); + v23 = v3 - (_DWORD)v4; + v21 = (v3 - (int)v4) >> 2; + if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + + ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) + + ((v21 - 1) << 6) == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); + v5 = *(_DWORD *)(this + 4); + if ( v5 - ((v3 - *(_DWORD *)this) >> 2) <= 1 ) + { + v6 = v21 + 2; + if ( v5 <= 2 * (v21 + 2) ) + { + v9 = v5 + 2; + if ( !v5 ) + v5 = 1; + v10 = v9 + v5; + if ( v10 > 0x1FFFFFFF ) + std::__throw_bad_alloc(); + v11 = (char *)operator new((struct type_info *)(4 * v10), v20); + v12 = *(const void **)(this + 20); + v22 = v11; + v8 = &v11[4 * ((v10 - v6) >> 1)]; + v13 = *(_DWORD *)(this + 36) + 4; + if ( (const void *)v13 != v12 ) + memmove(v8, v12, v13 - (_DWORD)v12); + operator delete(*(void **)this); + *(_DWORD *)(this + 4) = v10; + *(_DWORD *)this = v22; + } + else + { + v7 = (char *)(v3 + 4); + v8 = (char *)(*(_DWORD *)this + 4 * ((v5 - v6) >> 1)); + if ( v4 <= v8 ) + { + if ( v4 != v7 ) + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + else if ( v4 != v7 ) + { + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + } + v14 = *(_DWORD *)v8; + *(_DWORD *)(this + 20) = v8; + v15 = &v8[v23]; + *(_DWORD *)(this + 12) = v14; + *(_DWORD *)(this + 16) = v14 + 512; + v16 = *(_DWORD *)v15; + *(_DWORD *)(this + 36) = v15; + *(_DWORD *)(this + 28) = v16; + *(_DWORD *)(this + 32) = v16 + 512; + } + v17 = *(_DWORD *)(this + 36); + *(_DWORD *)(v17 + 4) = operator new((struct type_info *)0x200, v20); + std::__shared_ptr::__shared_ptr(*(_DWORD **)(this + 24), a2); + v18 = (int *)(*(_DWORD *)(this + 36) + 4); + result = *v18; + *(_DWORD *)(this + 36) = v18; + *(_DWORD *)(this + 28) = result; + *(_DWORD *)(this + 32) = result + 512; + *(_DWORD *)(this + 24) = result; + return result; +} +// 4D743C: variable 'v20' is possibly undefined + +//----- (004D74EC) -------------------------------------------------------- +int __fastcall std::deque>::back(_DWORD *a1) +{ + int v1; // eax + + v1 = a1[6]; + if ( v1 == a1[7] ) + v1 = *(_DWORD *)(a1[9] - 4) + 512; + return v1 - 8; +} + +//----- (004D7504) -------------------------------------------------------- +int __fastcall std::deque>::pop_back(_DWORD *a1) +{ + char *v2; // ecx + int v4; // eax + int v5; // ecx + + v2 = (char *)a1[6]; + if ( v2 == (char *)a1[7] ) + { + operator delete(v2); + v4 = a1[9]; + v5 = *(_DWORD *)(v4 - 4); + a1[9] = v4 - 4; + a1[7] = v5; + a1[8] = v5 + 512; + a1[6] = v5 + 504; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); + } + else + { + a1[6] = v2 - 8; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); + } +} + +//----- (004D755C) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::deque>::push_back( + _DWORD *this, + _DWORD *a2) +{ + int v3; // eax + _DWORD *v4; // ecx + volatile signed __int32 *result; // eax + + v3 = this[8]; + v4 = (_DWORD *)this[6]; + if ( v4 == (_DWORD *)(v3 - 8) ) + return (volatile signed __int32 *)std::deque>::_M_push_back_aux const&>( + (int)this, + a2); + result = std::__shared_ptr::__shared_ptr(v4, a2); + this[6] += 8; + return result; +} + +//----- (004D7594) -------------------------------------------------------- +int __thiscall std::deque>::_M_push_back_aux const&>( + int this, + _DWORD *a2) +{ + int v3; // edx + char *v4; // eax + unsigned int v5; // esi + int v6; // ebx + char *v7; // ecx + char *v8; // ebx + unsigned int v9; // eax + unsigned int v10; // esi + char *v11; // eax + const void *v12; // ecx + int v13; // eax + int v14; // eax + char *v15; // ebx + int v16; // eax + int v17; // ebx + int *v18; // ecx + int result; // eax + void (__cdecl *v20)(void *); // [esp+4h] [ebp-34h] + int v21; // [esp+14h] [ebp-24h] + char *v22; // [esp+18h] [ebp-20h] + int v23; // [esp+1Ch] [ebp-1Ch] + + v3 = *(_DWORD *)(this + 36); + v4 = *(char **)(this + 20); + v23 = v3 - (_DWORD)v4; + v21 = (v3 - (int)v4) >> 2; + if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + + ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) + + ((v21 - 1) << 6) == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); + v5 = *(_DWORD *)(this + 4); + if ( v5 - ((v3 - *(_DWORD *)this) >> 2) <= 1 ) + { + v6 = v21 + 2; + if ( v5 <= 2 * (v21 + 2) ) + { + v9 = v5 + 2; + if ( !v5 ) + v5 = 1; + v10 = v9 + v5; + if ( v10 > 0x1FFFFFFF ) + std::__throw_bad_alloc(); + v11 = (char *)operator new((struct type_info *)(4 * v10), v20); + v12 = *(const void **)(this + 20); + v22 = v11; + v8 = &v11[4 * ((v10 - v6) >> 1)]; + v13 = *(_DWORD *)(this + 36) + 4; + if ( (const void *)v13 != v12 ) + memmove(v8, v12, v13 - (_DWORD)v12); + operator delete(*(void **)this); + *(_DWORD *)(this + 4) = v10; + *(_DWORD *)this = v22; + } + else + { + v7 = (char *)(v3 + 4); + v8 = (char *)(*(_DWORD *)this + 4 * ((v5 - v6) >> 1)); + if ( v4 <= v8 ) + { + if ( v4 != v7 ) + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + else if ( v4 != v7 ) + { + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + } + v14 = *(_DWORD *)v8; + *(_DWORD *)(this + 20) = v8; + v15 = &v8[v23]; + *(_DWORD *)(this + 12) = v14; + *(_DWORD *)(this + 16) = v14 + 512; + v16 = *(_DWORD *)v15; + *(_DWORD *)(this + 36) = v15; + *(_DWORD *)(this + 28) = v16; + *(_DWORD *)(this + 32) = v16 + 512; + } + v17 = *(_DWORD *)(this + 36); + *(_DWORD *)(v17 + 4) = operator new((struct type_info *)0x200, v20); + std::__shared_ptr::__shared_ptr(*(_DWORD **)(this + 24), a2); + v18 = (int *)(*(_DWORD *)(this + 36) + 4); + result = *v18; + *(_DWORD *)(this + 36) = v18; + *(_DWORD *)(this + 28) = result; + *(_DWORD *)(this + 32) = result + 512; + *(_DWORD *)(this + 24) = result; + return result; +} +// 4D7680: variable 'v20' is possibly undefined + +//----- (004D7730) -------------------------------------------------------- +int __fastcall std::deque>::back(_DWORD *a1) +{ + int v1; // eax + + v1 = a1[6]; + if ( v1 == a1[7] ) + v1 = *(_DWORD *)(a1[9] - 4) + 512; + return v1 - 8; +} + +//----- (004D7748) -------------------------------------------------------- +int __fastcall std::deque>::pop_back(_DWORD *a1) +{ + char *v2; // ecx + int v4; // eax + int v5; // ecx + + v2 = (char *)a1[6]; + if ( v2 == (char *)a1[7] ) + { + operator delete(v2); + v4 = a1[9]; + v5 = *(_DWORD *)(v4 - 4); + a1[9] = v4 - 4; + a1[7] = v5; + a1[8] = v5 + 512; + a1[6] = v5 + 504; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); + } + else + { + a1[6] = v2 - 8; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); + } +} + +//----- (004D77A0) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::deque>::push_back( + _DWORD *this, + _DWORD *a2) +{ + int v3; // eax + _DWORD *v4; // ecx + volatile signed __int32 *result; // eax + + v3 = this[8]; + v4 = (_DWORD *)this[6]; + if ( v4 == (_DWORD *)(v3 - 8) ) + return (volatile signed __int32 *)std::deque>::_M_push_back_aux const&>( + (int)this, + a2); + result = std::__shared_ptr::__shared_ptr(v4, a2); + this[6] += 8; + return result; +} + +//----- (004D77D8) -------------------------------------------------------- +int __thiscall std::deque>::_M_push_back_aux const&>( + int this, + _DWORD *a2) +{ + int v3; // ecx + char *v4; // eax + unsigned int v5; // esi + int v6; // ebx + char *v7; // edx + char *v8; // ebx + unsigned int v9; // eax + unsigned int v10; // esi + char *v11; // eax + const void *v12; // edx + int v13; // eax + int v14; // eax + char *v15; // ebx + int v16; // eax + int v17; // ebx + _DWORD *v18; // edx + int v19; // eax + int *v20; // edx + int result; // eax + void (__cdecl *v22)(void *); // [esp+4h] [ebp-34h] + int v23; // [esp+14h] [ebp-24h] + char *v24; // [esp+18h] [ebp-20h] + int v25; // [esp+1Ch] [ebp-1Ch] + + v3 = *(_DWORD *)(this + 36); + v4 = *(char **)(this + 20); + v25 = v3 - (_DWORD)v4; + v23 = (v3 - (int)v4) >> 2; + if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + + ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) + + ((v23 - 1) << 6) == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); + v5 = *(_DWORD *)(this + 4); + if ( v5 - ((v3 - *(_DWORD *)this) >> 2) <= 1 ) + { + v6 = v23 + 2; + if ( v5 <= 2 * (v23 + 2) ) + { + v9 = v5 + 2; + if ( !v5 ) + v5 = 1; + v10 = v9 + v5; + if ( v10 > 0x1FFFFFFF ) + std::__throw_bad_alloc(); + v11 = (char *)operator new((struct type_info *)(4 * v10), v22); + v12 = *(const void **)(this + 20); + v24 = v11; + v8 = &v11[4 * ((v10 - v6) >> 1)]; + v13 = *(_DWORD *)(this + 36) + 4; + if ( (const void *)v13 != v12 ) + memmove(v8, v12, v13 - (_DWORD)v12); + operator delete(*(void **)this); + *(_DWORD *)(this + 4) = v10; + *(_DWORD *)this = v24; + } + else + { + v7 = (char *)(v3 + 4); + v8 = (char *)(*(_DWORD *)this + 4 * ((v5 - v6) >> 1)); + if ( v4 <= v8 ) + { + if ( v4 != v7 ) + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + else if ( v4 != v7 ) + { + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + } + v14 = *(_DWORD *)v8; + *(_DWORD *)(this + 20) = v8; + v15 = &v8[v25]; + *(_DWORD *)(this + 12) = v14; + *(_DWORD *)(this + 16) = v14 + 512; + v16 = *(_DWORD *)v15; + *(_DWORD *)(this + 36) = v15; + *(_DWORD *)(this + 28) = v16; + *(_DWORD *)(this + 32) = v16 + 512; + } + v17 = *(_DWORD *)(this + 36); + *(_DWORD *)(v17 + 4) = operator new((struct type_info *)0x200, v22); + v18 = *(_DWORD **)(this + 24); + *v18 = *a2; + v19 = a2[1]; + v18[1] = v19; + if ( v19 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v19 + 4)); + v20 = (int *)(*(_DWORD *)(this + 36) + 4); + result = *v20; + *(_DWORD *)(this + 36) = v20; + *(_DWORD *)(this + 28) = result; + *(_DWORD *)(this + 32) = result + 512; + *(_DWORD *)(this + 24) = result; + return result; +} +// 4D78C4: variable 'v22' is possibly undefined + +//----- (004D7984) -------------------------------------------------------- +int __fastcall std::deque>::pop_back(_DWORD *a1) +{ + char *v2; // ecx + int v4; // eax + int v5; // ecx + + v2 = (char *)a1[6]; + if ( v2 == (char *)a1[7] ) + { + operator delete(v2); + v4 = a1[9]; + v5 = *(_DWORD *)(v4 - 4); + a1[9] = v4 - 4; + a1[7] = v5; + a1[8] = v5 + 512; + a1[6] = v5 + 504; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); + } + else + { + a1[6] = v2 - 8; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); + } +} + +//----- (004D79DC) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::deque>::push_back( + _DWORD *this, + _DWORD *a2) +{ + _DWORD *v2; // edx + volatile signed __int32 *result; // eax + + v2 = (_DWORD *)this[6]; + if ( v2 == (_DWORD *)(this[8] - 8) ) + return (volatile signed __int32 *)std::deque>::_M_push_back_aux const&>( + (int)this, + a2); + *v2 = *a2; + result = (volatile signed __int32 *)a2[1]; + v2[1] = result; + if ( result ) + result = __gnu_cxx::__atomic_add_dispatch(result + 1); + this[6] += 8; + return result; +} +// 4D7A07: variable 'this' is possibly undefined + +//----- (004D7A1C) -------------------------------------------------------- +#error "4D7BC7: call analysis failed (funcsize=146)" + +//----- (004D7BF0) -------------------------------------------------------- +void __fastcall std::deque::pop_back(_DWORD *a1) +{ + char *v2; // ecx + void **v3; // ecx + int v4; // eax + int v5; // ecx + int v6; // eax + + v2 = (char *)a1[6]; + if ( v2 == (char *)a1[7] ) + { + operator delete(v2); + v4 = a1[9]; + v5 = *(_DWORD *)(v4 - 4); + a1[9] = v4 - 4; + v6 = v5 + 504; + a1[7] = v5; + v3 = (void **)(v5 + 480); + a1[8] = v6; + } + else + { + v3 = (void **)(v2 - 24); + } + a1[6] = v3; + std::string::_M_dispose(v3); +} + +//----- (004D7C40) -------------------------------------------------------- +int std::locale::_S_initialize() +{ + int result; // eax + void (*func)(void); // [esp+4h] [ebp-18h] + + if ( !_CRT_MT ) + { + result = std::locale::_S_classic; + if ( std::locale::_S_classic ) + return result; +LABEL_5: + result = std::locale::_Impl::_Impl( + `anonymous namespace'::c_locale_impl, + (std::locale::_Impl *)2, + (unsigned int)func); + std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; + std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; + return result; + } + __gthr_win32_once(&std::locale::_S_once, std::locale::_S_initialize_once); + result = std::locale::_S_classic; + if ( !std::locale::_S_classic ) + goto LABEL_5; + return result; +} +// 4D7C89: variable 'func' is possibly undefined +// 51533C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; +// 516588: using guessed type int std::locale::_S_classic; +// 5165A4: using guessed type int std::locale::_S_global; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004D7CB0) -------------------------------------------------------- +void std::locale::_S_initialize_once(void) +{ + unsigned int v0; // [esp+4h] [ebp-18h] + + std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, v0); + std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; + std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; +} +// 4D7CBF: variable 'v0' is possibly undefined +// 51533C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; +// 516588: using guessed type int std::locale::_S_classic; +// 5165A4: using guessed type int std::locale::_S_global; + +//----- (004D7CE0) -------------------------------------------------------- +std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this) +{ + std::locale *result; // eax + + result = this; + if ( this && (((unsigned __int8)this & 0x3F) == 0 || ((unsigned int)this & 0xFFFFFFC0) != 0) ) + { + if ( (unsigned int)this - 1 > 4 ) + std::__throw_runtime_error((std::runtime_error *)"locale::_S_normalize_category category not found"); + return (std::locale *)CSWTCH_107[(_DWORD)this - 1]; + } + return result; +} +// 5333C8: using guessed type int CSWTCH_107[6]; + +//----- (004D7D20) -------------------------------------------------------- +int __userpurge std::locale::_Impl::_M_init_extra@( + int a1@, + std::locale::_Impl *this, + std::locale::facet **a3) +{ + int v4; // eax + int v5; // ecx + int v6; // edi + int v7; // eax + int v8; // ecx + int v9; // eax + int v10; // esi + int v11; // eax + int v12; // ecx + int v13; // edi + int v14; // edi + int v15; // edi + int v16; // eax + int v17; // ebx + int result; // eax + int v19; // [esp+1Ch] [ebp-2Ch] + int v20; // [esp+1Ch] [ebp-2Ch] + int v21; // [esp+1Ch] [ebp-2Ch] + int v22; // [esp+1Ch] [ebp-2Ch] + int v23; // [esp+1Ch] [ebp-2Ch] + int v24; // [esp+1Ch] [ebp-2Ch] + int v25; // [esp+1Ch] [ebp-2Ch] + int v26; // [esp+1Ch] [ebp-2Ch] + int v27; // [esp+1Ch] [ebp-2Ch] + int v28; // [esp+20h] [ebp-28h] + int v29; // [esp+24h] [ebp-24h] + int v30; // [esp+24h] [ebp-24h] + int v31; // [esp+28h] [ebp-20h] + int v32; // [esp+28h] [ebp-20h] + int v33; // [esp+28h] [ebp-20h] + int v34; // [esp+28h] [ebp-20h] + int v35; // [esp+28h] [ebp-20h] + int v36; // [esp+28h] [ebp-20h] + int v37; // [esp+28h] [ebp-20h] + int v38; // [esp+28h] [ebp-20h] + int v39; // [esp+28h] [ebp-20h] + int v40; // [esp+2Ch] [ebp-1Ch] + + v4 = *(_DWORD *)this; + v5 = *((_DWORD *)this + 2); + std::`anonymous namespace'::numpunct_c = (int)&off_5393A0; + v6 = *((_DWORD *)this + 1); + v40 = v5; + v29 = v4; + dword_516468 = 1; + dword_51646C = v4; + std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_c, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_516468, 1u); + else + ++dword_516468; + v31 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v31 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_c; + dword_5164E0 = 1; + std::`anonymous namespace'::collate_c = (int)&off_539234; + dword_5164E4 = std::locale::facet::_S_get_c_locale(); + if ( _CRT_MT ) + _InterlockedAdd(&dword_5164E0, 1u); + else + ++dword_5164E0; + v32 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v32 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_c; + dword_5164B0 = 1; + std::`anonymous namespace'::moneypunct_cf = (int)&off_5384E0; + dword_5164B4 = v6; + std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_cf, 0, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_5164B0, 1u); + else + ++dword_5164B0; + v33 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v33 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_cf; + dword_5164BC = 1; + std::`anonymous namespace'::moneypunct_ct = (int)&off_538514; + dword_5164C0 = v40; + std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_ct, 0, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_5164BC, 1u); + else + ++dword_5164BC; + v34 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v34 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_ct; + dword_516490 = 1; + std::`anonymous namespace'::money_get_c = (int)&off_5394A8; + if ( _CRT_MT ) + _InterlockedAdd(&dword_516490, 1u); + else + dword_516490 = 2; + v35 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v35 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = &std::`anonymous namespace'::money_get_c; + dword_5164A0 = 1; + std::`anonymous namespace'::money_put_c = (int)&off_5394D8; + if ( _CRT_MT ) + _InterlockedAdd(&dword_5164A0, 1u); + else + dword_5164A0 = 2; + v36 = *(_DWORD *)(a1 + 4); + v7 = std::locale::id::_M_id(&std::money_put>::id); + v8 = _CRT_MT; + *(_DWORD *)(v36 + 4 * v7) = &std::`anonymous namespace'::money_put_c; + dword_516480 = 1; + std::`anonymous namespace'::time_get_c = (int)&off_5393E8; + if ( v8 ) + _InterlockedAdd(&dword_516480, 1u); + else + dword_516480 = 2; + v37 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v37 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_c; + std::messages::messages(&std::`anonymous namespace'::messages_c, 1); + if ( _CRT_MT ) + _InterlockedAdd(dword_516448, 1u); + else + ++dword_516448[0]; + v38 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v38 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_c; + v9 = *((_DWORD *)this + 3); + dword_516474 = 1; + v10 = *((_DWORD *)this + 5); + v39 = *((_DWORD *)this + 4); + v28 = v9; + std::`anonymous namespace'::numpunct_w = (int)&off_5393C4; + dword_516478 = v9; + std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_w, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_516474, 1u); + else + ++dword_516474; + v19 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v19 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_w; + dword_5164EC = 1; + std::`anonymous namespace'::collate_w = (int)&off_539250; + dword_5164F0 = std::locale::facet::_S_get_c_locale(); + if ( _CRT_MT ) + _InterlockedAdd(&dword_5164EC, 1u); + else + ++dword_5164EC; + v20 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v20 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_w; + dword_5164C8 = 1; + std::`anonymous namespace'::moneypunct_wf = (int)&off_538548; + dword_5164CC = v39; + std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wf, 0, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_5164C8, 1u); + else + ++dword_5164C8; + v21 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v21 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wf; + dword_5164D4 = 1; + std::`anonymous namespace'::moneypunct_wt = (int)&off_53857C; + dword_5164D8 = v10; + std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wt, 0, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_5164D4, 1u); + else + ++dword_5164D4; + v22 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v22 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wt; + dword_516498 = 1; + std::`anonymous namespace'::money_get_w = (int)&off_5394C0; + if ( _CRT_MT ) + _InterlockedAdd(&dword_516498, 1u); + else + dword_516498 = 2; + v23 = *(_DWORD *)(a1 + 4); + v11 = std::locale::id::_M_id(&std::money_get>::id); + v12 = _CRT_MT; + *(_DWORD *)(v23 + 4 * v11) = &std::`anonymous namespace'::money_get_w; + dword_5164A8 = 1; + std::`anonymous namespace'::money_put_w = (int)&off_5394F0; + if ( v12 ) + _InterlockedAdd(&dword_5164A8, 1u); + else + dword_5164A8 = 2; + v24 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v24 + 4 * std::locale::id::_M_id(std::money_put>::id)) = &std::`anonymous namespace'::money_put_w; + dword_516488 = 1; + std::`anonymous namespace'::time_get_w = (int)&off_539410; + if ( _CRT_MT ) + _InterlockedAdd(&dword_516488, 1u); + else + dword_516488 = 2; + v25 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v25 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_w; + std::messages::messages(&std::`anonymous namespace'::messages_w, 1); + if ( _CRT_MT ) + _InterlockedAdd(dword_516458, 1u); + else + ++dword_516458[0]; + v26 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v26 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_w; + v27 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v27 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v29; + v30 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v30 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v6; + v13 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v13 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v40; + v14 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v14 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v28; + v15 = *(_DWORD *)(a1 + 12); + v16 = std::locale::id::_M_id(&std::moneypunct::id); + v17 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v15 + 4 * v16) = v39; + result = std::locale::id::_M_id(&std::moneypunct::id); + *(_DWORD *)(v17 + 4 * result) = v10; + return result; +} +// 51642C: using guessed type int std::moneypunct::id; +// 516430: using guessed type int std::moneypunct::id; +// 516434: using guessed type int std::moneypunct::id; +// 516438: using guessed type int std::moneypunct::id; +// 516444: using guessed type _DWORD std::`anonymous namespace'::messages_c; +// 516448: using guessed type signed __int32 dword_516448[3]; +// 516454: using guessed type _DWORD std::`anonymous namespace'::messages_w; +// 516458: using guessed type signed __int32 dword_516458[3]; +// 516464: using guessed type int std::`anonymous namespace'::numpunct_c; +// 516468: using guessed type int dword_516468; +// 51646C: using guessed type int dword_51646C; +// 516470: using guessed type int std::`anonymous namespace'::numpunct_w; +// 516474: using guessed type int dword_516474; +// 516478: using guessed type int dword_516478; +// 51647C: using guessed type int std::`anonymous namespace'::time_get_c; +// 516480: using guessed type int dword_516480; +// 516484: using guessed type int std::`anonymous namespace'::time_get_w; +// 516488: using guessed type int dword_516488; +// 51648C: using guessed type int std::`anonymous namespace'::money_get_c; +// 516490: using guessed type int dword_516490; +// 516494: using guessed type int std::`anonymous namespace'::money_get_w; +// 516498: using guessed type int dword_516498; +// 51649C: using guessed type int std::`anonymous namespace'::money_put_c; +// 5164A0: using guessed type int dword_5164A0; +// 5164A4: using guessed type int std::`anonymous namespace'::money_put_w; +// 5164A8: using guessed type int dword_5164A8; +// 5164AC: using guessed type int std::`anonymous namespace'::moneypunct_cf; +// 5164B0: using guessed type int dword_5164B0; +// 5164B4: using guessed type int dword_5164B4; +// 5164B8: using guessed type int std::`anonymous namespace'::moneypunct_ct; +// 5164BC: using guessed type int dword_5164BC; +// 5164C0: using guessed type int dword_5164C0; +// 5164C4: using guessed type int std::`anonymous namespace'::moneypunct_wf; +// 5164C8: using guessed type int dword_5164C8; +// 5164CC: using guessed type int dword_5164CC; +// 5164D0: using guessed type int std::`anonymous namespace'::moneypunct_wt; +// 5164D4: using guessed type int dword_5164D4; +// 5164D8: using guessed type int dword_5164D8; +// 5164DC: using guessed type int std::`anonymous namespace'::collate_c; +// 5164E0: using guessed type int dword_5164E0; +// 5164E4: using guessed type int dword_5164E4; +// 5164E8: using guessed type int std::`anonymous namespace'::collate_w; +// 5164EC: using guessed type int dword_5164EC; +// 5164F0: using guessed type int dword_5164F0; +// 516600: using guessed type int std::collate::id; +// 516604: using guessed type int std::collate::id; +// 516620: using guessed type int std::messages::id; +// 516624: using guessed type int std::messages::id; +// 516628: using guessed type int std::numpunct::id; +// 51662C: using guessed type int std::numpunct::id; +// 516630: using guessed type int std::time_get>::id; +// 516634: using guessed type int std::time_get>::id; +// 516640: using guessed type int std::money_get>::id; +// 516644: using guessed type int std::money_get>::id; +// 516648: using guessed type int std::money_put>::id; +// 51664C: using guessed type int std::money_put>::id[5]; +// 5384E0: using guessed type int (*off_5384E0)(); +// 538514: using guessed type int (*off_538514)(); +// 538548: using guessed type int (*off_538548)(); +// 53857C: using guessed type int (*off_53857C)(); +// 539234: using guessed type int (*off_539234)(); +// 539250: using guessed type int (*off_539250)(); +// 5393A0: using guessed type int (*off_5393A0)(); +// 5393C4: using guessed type int (*off_5393C4)(); +// 5393E8: using guessed type int (*off_5393E8)(); +// 539410: using guessed type int (*off_539410)(); +// 5394A8: using guessed type int (*off_5394A8)(); +// 5394C0: using guessed type int (*off_5394C0)(); +// 5394D8: using guessed type int (*off_5394D8)(); +// 5394F0: using guessed type int (*off_5394F0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004D8420) -------------------------------------------------------- +int __userpurge std::locale::_Impl::_M_init_extra@( + int a1@, + std::locale::_Impl *this, + int *a3, + int **a4, + const char *a5, + const char *a6) +{ + _DWORD *v7; // esi + int v8; // eax + void *v9; // esi + _DWORD *v10; // esi + int v11; // eax + _DWORD *v12; // esi + int v13; // eax + void *v14; // eax + void *v15; // eax + void *v16; // eax + int v17; // ecx + volatile signed __int32 *v18; // esi + _DWORD *v19; // esi + int v20; // eax + void *v21; // esi + _DWORD *v22; // esi + int v23; // eax + _DWORD *v24; // esi + int v25; // eax + void *v26; // eax + void *v27; // eax + int v28; // ecx + void *v29; // eax + int v30; // edx + volatile signed __int32 *v31; // esi + int v32; // ebx + int result; // eax + void (__cdecl *v34)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v35)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v36)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v37)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v38)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v39)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v40)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v41)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v42)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v43)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v44)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v45)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v46)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v47)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v48)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v49)(void *); // [esp+4h] [ebp-44h] + int v50; // [esp+1Ch] [ebp-2Ch] + int v51; // [esp+1Ch] [ebp-2Ch] + int v52; // [esp+1Ch] [ebp-2Ch] + int v53; // [esp+1Ch] [ebp-2Ch] + int v54; // [esp+1Ch] [ebp-2Ch] + int v55; // [esp+1Ch] [ebp-2Ch] + int v56; // [esp+1Ch] [ebp-2Ch] + int v57; // [esp+1Ch] [ebp-2Ch] + int v58; // [esp+1Ch] [ebp-2Ch] + int v59; // [esp+1Ch] [ebp-2Ch] + int v60; // [esp+1Ch] [ebp-2Ch] + int v61; // [esp+1Ch] [ebp-2Ch] + int v62; // [esp+1Ch] [ebp-2Ch] + int v63; // [esp+1Ch] [ebp-2Ch] + int v64; // [esp+1Ch] [ebp-2Ch] + + v7 = operator new((struct type_info *)0xC, v34); + v8 = *(_DWORD *)this; + v7[1] = 0; + *v7 = &off_5393A0; + v7[2] = 0; + std::numpunct::_M_initialize_numpunct(v7, v8); + if ( _CRT_MT ) + _InterlockedAdd(v7 + 1, 1u); + else + ++v7[1]; + v50 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v50 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v7; + v9 = operator new((struct type_info *)0xC, v35); + *((_DWORD *)v9 + 1) = 0; + *(_DWORD *)v9 = &off_539234; + *((_DWORD *)v9 + 2) = std::locale::facet::_S_clone_c_locale(); + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v9 + 1, 1u); + else + ++*((_DWORD *)v9 + 1); + v51 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v51 + 4 * std::locale::id::_M_id(&std::collate::id)) = v9; + v10 = operator new((struct type_info *)0xC, v36); + v11 = *(_DWORD *)this; + v10[1] = 0; + *v10 = &off_5384E0; + v10[2] = 0; + std::moneypunct::_M_initialize_moneypunct(v10, v11, 0); + if ( _CRT_MT ) + _InterlockedAdd(v10 + 1, 1u); + else + ++v10[1]; + v52 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v52 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v10; + v12 = operator new((struct type_info *)0xC, v37); + v13 = *(_DWORD *)this; + v12[1] = 0; + *v12 = &off_538514; + v12[2] = 0; + std::moneypunct::_M_initialize_moneypunct(v12, v13, 0); + if ( _CRT_MT ) + _InterlockedAdd(v12 + 1, 1u); + else + ++v12[1]; + v53 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v53 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v12; + v14 = operator new((struct type_info *)8, v38); + *((_DWORD *)v14 + 1) = 0; + *(_DWORD *)v14 = &off_5394A8; + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v14 + 1, 1u); + else + *((_DWORD *)v14 + 1) = 1; + v54 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v54 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v14; + v15 = operator new((struct type_info *)8, v39); + *((_DWORD *)v15 + 1) = 0; + *(_DWORD *)v15 = &off_5394D8; + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v15 + 1, 1u); + else + *((_DWORD *)v15 + 1) = 1; + v55 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v55 + 4 * std::locale::id::_M_id(&std::money_put>::id)) = v15; + v16 = operator new((struct type_info *)8, v40); + v17 = _CRT_MT; + *((_DWORD *)v16 + 1) = 0; + *(_DWORD *)v16 = &off_5393E8; + if ( v17 ) + _InterlockedAdd((volatile signed __int32 *)v16 + 1, 1u); + else + *((_DWORD *)v16 + 1) = 1; + v56 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v56 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v16; + v18 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v41); + std::messages::messages(v18, *(_DWORD *)this, (int)a4, 0); + if ( _CRT_MT ) + _InterlockedAdd(v18 + 1, 1u); + else + ++*((_DWORD *)v18 + 1); + v57 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v57 + 4 * std::locale::id::_M_id(&std::messages::id)) = v18; + v19 = operator new((struct type_info *)0xC, v42); + v20 = *(_DWORD *)this; + v19[1] = 0; + *v19 = &off_5393C4; + v19[2] = 0; + std::numpunct::_M_initialize_numpunct(v19, v20); + if ( _CRT_MT ) + _InterlockedAdd(v19 + 1, 1u); + else + ++v19[1]; + v58 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v58 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v19; + v21 = operator new((struct type_info *)0xC, v43); + *((_DWORD *)v21 + 1) = 0; + *(_DWORD *)v21 = &off_539250; + *((_DWORD *)v21 + 2) = std::locale::facet::_S_clone_c_locale(); + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v21 + 1, 1u); + else + ++*((_DWORD *)v21 + 1); + v59 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v59 + 4 * std::locale::id::_M_id(&std::collate::id)) = v21; + v22 = operator new((struct type_info *)0xC, v44); + v22[1] = 0; + v23 = *a3; + *v22 = &off_538548; + v22[2] = 0; + std::moneypunct::_M_initialize_moneypunct(v22, v23, (int)a5); + if ( _CRT_MT ) + _InterlockedAdd(v22 + 1, 1u); + else + ++v22[1]; + v60 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v60 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v22; + v24 = operator new((struct type_info *)0xC, v45); + v24[1] = 0; + v25 = *a3; + *v24 = &off_53857C; + v24[2] = 0; + std::moneypunct::_M_initialize_moneypunct(v24, v25, (int)a5); + if ( _CRT_MT ) + _InterlockedAdd(v24 + 1, 1u); + else + ++v24[1]; + v61 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v61 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v24; + v26 = operator new((struct type_info *)8, v46); + *((_DWORD *)v26 + 1) = 0; + *(_DWORD *)v26 = &off_5394C0; + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v26 + 1, 1u); + else + *((_DWORD *)v26 + 1) = 1; + v62 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v62 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v26; + v27 = operator new((struct type_info *)8, v47); + v28 = _CRT_MT; + *((_DWORD *)v27 + 1) = 0; + *(_DWORD *)v27 = &off_5394F0; + if ( v28 ) + _InterlockedAdd((volatile signed __int32 *)v27 + 1, 1u); + else + *((_DWORD *)v27 + 1) = 1; + v63 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v63 + 4 * std::locale::id::_M_id(std::money_put>::id)) = v27; + v29 = operator new((struct type_info *)8, v48); + v30 = _CRT_MT; + *((_DWORD *)v29 + 1) = 0; + *(_DWORD *)v29 = &off_539410; + if ( v30 ) + _InterlockedAdd((volatile signed __int32 *)v29 + 1, 1u); + else + *((_DWORD *)v29 + 1) = 1; + v64 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v64 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v29; + v31 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v49); + std::messages::messages(v31, *(_DWORD *)this, (int)a4, 0); + if ( _CRT_MT ) + _InterlockedAdd(v31 + 1, 1u); + else + ++*((_DWORD *)v31 + 1); + v32 = *(_DWORD *)(a1 + 4); + result = std::locale::id::_M_id(&std::messages::id); + *(_DWORD *)(v32 + 4 * result) = v31; + return result; +} +// 4D8435: variable 'v34' is possibly undefined +// 4D848E: variable 'v35' is possibly undefined +// 4D84E3: variable 'v36' is possibly undefined +// 4D8543: variable 'v37' is possibly undefined +// 4D85A3: variable 'v38' is possibly undefined +// 4D85E8: variable 'v39' is possibly undefined +// 4D862D: variable 'v40' is possibly undefined +// 4D8673: variable 'v41' is possibly undefined +// 4D86C7: variable 'v42' is possibly undefined +// 4D871F: variable 'v43' is possibly undefined +// 4D8774: variable 'v44' is possibly undefined +// 4D87D6: variable 'v45' is possibly undefined +// 4D8838: variable 'v46' is possibly undefined +// 4D887D: variable 'v47' is possibly undefined +// 4D88C3: variable 'v48' is possibly undefined +// 4D8909: variable 'v49' is possibly undefined +// 51642C: using guessed type int std::moneypunct::id; +// 516430: using guessed type int std::moneypunct::id; +// 516434: using guessed type int std::moneypunct::id; +// 516438: using guessed type int std::moneypunct::id; +// 516600: using guessed type int std::collate::id; +// 516604: using guessed type int std::collate::id; +// 516620: using guessed type int std::messages::id; +// 516624: using guessed type int std::messages::id; +// 516628: using guessed type int std::numpunct::id; +// 51662C: using guessed type int std::numpunct::id; +// 516630: using guessed type int std::time_get>::id; +// 516634: using guessed type int std::time_get>::id; +// 516640: using guessed type int std::money_get>::id; +// 516644: using guessed type int std::money_get>::id; +// 516648: using guessed type int std::money_put>::id; +// 51664C: using guessed type int std::money_put>::id[5]; +// 5384E0: using guessed type int (*off_5384E0)(); +// 538514: using guessed type int (*off_538514)(); +// 538548: using guessed type int (*off_538548)(); +// 53857C: using guessed type int (*off_53857C)(); +// 539234: using guessed type int (*off_539234)(); +// 539250: using guessed type int (*off_539250)(); +// 5393A0: using guessed type int (*off_5393A0)(); +// 5393C4: using guessed type int (*off_5393C4)(); +// 5393E8: using guessed type int (*off_5393E8)(); +// 539410: using guessed type int (*off_539410)(); +// 5394A8: using guessed type int (*off_5394A8)(); +// 5394C0: using guessed type int (*off_5394C0)(); +// 5394D8: using guessed type int (*off_5394D8)(); +// 5394F0: using guessed type int (*off_5394F0)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004D8A90) -------------------------------------------------------- +void __userpurge std::locale::_Impl::_M_install_cache( + int a1@, + std::locale::_Impl *this, + const std::locale::facet *a3, + unsigned int a4) +{ + int v5; // ebx + int *v6; // ecx + int **v7; // edx + const std::locale::facet *v8; // eax + int v9; // edx + int *v10; // ecx + int v11; // eax + int v12; // edx + int v13; // ebx + _DWORD *v14; // ecx + void (__fastcall *v15)(void *); // eax + int v16; // ecx + volatile signed __int32 *v17; // ebp + int v18; // edx + _DWORD *exception; // eax + + v5 = (int)a3; + if ( !(_BYTE)`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex + && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) + { + if ( _CRT_MT ) + __gthr_win32_mutex_init_function(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); + __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); + atexit(__tcf_0_7); + } + if ( _CRT_MT && __gthr_win32_mutex_lock(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) + { + exception = __cxa_allocate_exception(4u); + *exception = &off_537988; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); + } + v6 = std::locale::_S_twinned_facets; + if ( std::locale::_S_twinned_facets ) + { + while ( 1 ) + { + v8 = (const std::locale::facet *)std::locale::id::_M_id(v6); + v10 = *(int **)(v9 + 4); + if ( v8 == a3 ) + { + v11 = std::locale::id::_M_id(v10); + goto LABEL_9; + } + if ( (const std::locale::facet *)std::locale::id::_M_id(v10) == a3 ) + break; + v6 = v7[2]; + if ( !v6 ) + goto LABEL_15; + } + v18 = std::locale::id::_M_id(*v7); + v11 = (int)a3; + v5 = v18; +LABEL_9: + v12 = *(_DWORD *)(a1 + 12); + v13 = 4 * v5; + v14 = (_DWORD *)(v12 + v13); + if ( *(_DWORD *)(v12 + v13) ) + goto LABEL_10; +LABEL_16: + v17 = (volatile signed __int32 *)((char *)this + 4); + if ( _CRT_MT ) + { + _InterlockedAdd(v17, 1u); + v16 = _CRT_MT; + v12 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v12 + v13) = this; + if ( v11 == -1 ) + goto LABEL_13; + if ( v16 ) + { + _InterlockedAdd(v17, 1u); + v16 = _CRT_MT; + *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * v11) = this; + goto LABEL_13; + } + } + else + { + ++*((_DWORD *)this + 1); + *v14 = this; + if ( v11 == -1 ) + return; + } + ++*((_DWORD *)this + 1); + *(_DWORD *)(v12 + 4 * v11) = this; + return; + } +LABEL_15: + v12 = *(_DWORD *)(a1 + 12); + v13 = 4 * (_DWORD)a3; + v11 = -1; + v14 = (_DWORD *)(v12 + 4 * (_DWORD)a3); + if ( !*v14 ) + goto LABEL_16; +LABEL_10: + if ( this ) + { + v15 = *(void (__fastcall **)(void *))(*(_DWORD *)this + 4); + if ( v15 == std::locale::facet::~facet ) + { + operator delete(this); + v16 = _CRT_MT; + goto LABEL_13; + } + v15(this); + } + v16 = _CRT_MT; +LABEL_13: + if ( v16 ) + { + if ( __gthr_win32_mutex_unlock(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) + std::locale::_Impl::_M_install_cache(this, (void (__cdecl *)(void *))a3); + } +} +// 4D8AED: variable 'v7' is possibly undefined +// 4D8AFC: variable 'v9' is possibly undefined +// 533580: using guessed type int *std::locale::_S_twinned_facets; +// 533CE8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; +// 537988: using guessed type void (__cdecl *off_537988)(__gnu_cxx::__concurrence_lock_error *__hidden this); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004D8CA0) -------------------------------------------------------- +const std::locale::id *__userpurge std::locale::_Impl::_M_install_facet@( + _DWORD *a1@, + std::locale::_Impl *this, + const std::locale::id *a3, + const std::locale::facet *a4) +{ + const std::locale::id *result; // eax + unsigned int v6; // esi + unsigned int v7; // edi + int v8; // eax + unsigned int v9; // ebp + int *v10; // eax + int v11; // edx + int *v12; // ecx + int v13; // ebx + _DWORD *v14; // eax + int v15; // eax + unsigned int v16; // ebp + int v17; // edi + int *v18; // edx + int v19; // ecx + int *v20; // eax + int v21; // ebx + _DWORD *v22; // eax + volatile signed __int32 **v23; // edi + volatile signed __int32 *v24; // eax + int *v25; // ecx + int **v26; // edx + int v27; // edx + int v28; // esi + int v29; // edx + int v30; // ebp + _DWORD *v31; // esi + _DWORD *v32; // ecx + signed __int32 v33; // eax + int v34; // edx + int v35; // edx + unsigned int v36; // esi + volatile signed __int32 *v37; // ecx + signed __int32 v38; // eax + void (*v39)(void); // eax + void (__fastcall *v40)(void *); // edx + int v41; // esi + std::locale::facet **v42; // edx + signed __int32 v43; // eax + void (__fastcall *v44)(void *); // eax + const std::locale::id *v45; // [esp+4h] [ebp-48h] + unsigned int v46; // [esp+1Ch] [ebp-30h] + int v47; // [esp+20h] [ebp-2Ch] + void *v48; // [esp+24h] [ebp-28h] + _DWORD *v49; // [esp+28h] [ebp-24h] + void *v50; // [esp+28h] [ebp-24h] + _DWORD *v51; // [esp+2Ch] [ebp-20h] + + result = a3; + if ( !a3 ) + return result; + v6 = std::locale::id::_M_id((int *)this); + if ( a1[2] - 1 < v6 ) + { + v46 = v6 + 4; + v48 = (void *)a1[1]; + v7 = -1; + if ( v6 + 4 <= 0x1FFFFFFF ) + v7 = 4 * (v6 + 4); + v8 = operator new[](v7); + v9 = a1[2]; + v47 = v8; + if ( v9 ) + { + v10 = (int *)a1[1]; + v11 = v47; + v49 = a1; + v12 = &v10[v9]; + do + { + v13 = *v10++; + v11 += 4; + *(_DWORD *)(v11 - 4) = v13; + } + while ( v10 != v12 ); + a1 = v49; + } + if ( v46 > v9 ) + { + v14 = (_DWORD *)(v47 + 4 * v9); + do + *v14++ = 0; + while ( v14 != (_DWORD *)(v47 + 4 * v6 + 16) ); + } + v50 = (void *)a1[3]; + v15 = operator new[](v7); + v16 = a1[2]; + v17 = v15; + if ( v16 ) + { + v18 = (int *)a1[3]; + v51 = a1; + v19 = v15; + v20 = &v18[v16]; + do + { + v21 = *v18++; + v19 += 4; + *(_DWORD *)(v19 - 4) = v21; + } + while ( v20 != v18 ); + a1 = v51; + } + if ( v46 > v16 ) + { + v22 = (_DWORD *)(v17 + 4 * v16); + do + *v22++ = 0; + while ( (_DWORD *)(v17 + 4 * v6 + 16) != v22 ); + } + a1[3] = v17; + a1[2] = v46; + a1[1] = v47; + if ( v48 ) + operator delete[](v48); + if ( v50 ) + operator delete[](v50); + } + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)a3 + 1, 1u); + else + ++*((_DWORD *)a3 + 1); + v23 = (volatile signed __int32 **)(a1[1] + 4 * v6); + v24 = *v23; + if ( !*v23 ) + goto LABEL_39; + v25 = std::locale::_S_twinned_facets; + if ( !std::locale::_S_twinned_facets ) + { +LABEL_37: + if ( _CRT_MT ) + goto LABEL_52; + goto LABEL_38; + } + while ( 1 ) + { + if ( std::locale::id::_M_id(v25) == v6 ) + { + v28 = a1[1]; + v30 = v28 + 4 * std::locale::id::_M_id(*(int **)(v27 + 4)); + if ( !*(_DWORD *)v30 ) + goto LABEL_51; + v31 = std::locale::facet::_M_sso_shim((volatile signed __int32 *)a3, *(std::locale::facet **)(v29 + 4), v45); + if ( _CRT_MT ) + { + _InterlockedAdd(v31 + 1, 1u); + v32 = *(_DWORD **)v30; + if ( _CRT_MT ) + { + v33 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v30 + 4), 0xFFFFFFFF); +LABEL_35: + if ( v33 == 1 ) + { + v44 = *(void (__fastcall **)(void *))(*v32 + 4); + if ( v44 != std::locale::facet::~facet ) + goto LABEL_71; +LABEL_63: + operator delete(v32); + } + goto LABEL_36; + } + } + else + { + ++v31[1]; + v32 = *(_DWORD **)v30; + } + v33 = v32[1]; + v32[1] = v33 - 1; + goto LABEL_35; + } + if ( std::locale::id::_M_id(*(int **)(v27 + 4)) == v6 ) + break; + v25 = v26[2]; + if ( !v25 ) + goto LABEL_51; + } + v41 = a1[1]; + v30 = v41 + 4 * std::locale::id::_M_id(*v26); + if ( *(_DWORD *)v30 ) + { + v31 = std::locale::facet::_M_cow_shim((volatile signed __int32 *)a3, *v42, v45); + if ( !_CRT_MT ) + { + ++v31[1]; + v32 = *(_DWORD **)v30; + goto LABEL_60; + } + _InterlockedAdd(v31 + 1, 1u); + v32 = *(_DWORD **)v30; + if ( _CRT_MT ) + { + v43 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v30 + 4), 0xFFFFFFFF); + } + else + { +LABEL_60: + v43 = v32[1]; + v32[1] = v43 - 1; + } + if ( v43 == 1 ) + { + v44 = *(void (__fastcall **)(void *))(*v32 + 4); + if ( v44 == std::locale::facet::~facet ) + goto LABEL_63; +LABEL_71: + ((void (*)(void))v44)(); + } +LABEL_36: + *(_DWORD *)v30 = v31; + v24 = *v23; + goto LABEL_37; + } +LABEL_51: + v24 = *v23; + if ( _CRT_MT ) + { +LABEL_52: + if ( _InterlockedExchangeAdd(v24 + 1, 0xFFFFFFFF) == 1 ) + goto LABEL_53; + goto LABEL_39; + } +LABEL_38: + v34 = *((_DWORD *)v24 + 1); + *((_DWORD *)v24 + 1) = v34 - 1; + if ( v34 == 1 ) + { +LABEL_53: + v40 = *(void (__fastcall **)(void *))(*v24 + 4); + if ( v40 == std::locale::facet::~facet ) + operator delete((void *)v24); + else + v40((void *)v24); + } +LABEL_39: + result = a3; + v35 = a1[2]; + *v23 = (volatile signed __int32 *)a3; + if ( v35 ) + { + result = (const std::locale::id *)a1[3]; + v36 = 0; + do + { + v37 = (volatile signed __int32 *)*((_DWORD *)result + v36); + if ( v37 ) + { + if ( _CRT_MT ) + { + v38 = _InterlockedExchangeAdd(v37 + 1, 0xFFFFFFFF); + } + else + { + v38 = *((_DWORD *)v37 + 1); + *((_DWORD *)v37 + 1) = v38 - 1; + } + if ( v38 == 1 ) + { + v39 = *(void (**)(void))(*v37 + 4); + if ( (char *)v39 == (char *)std::locale::facet::~facet ) + operator delete((void *)v37); + else + v39(); + } + result = (const std::locale::id *)a1[3]; + *((_DWORD *)result + v36) = 0; + } + ++v36; + } + while ( a1[2] > v36 ); + } + return result; +} +// 4D8E10: variable 'v27' is possibly undefined +// 4D8E20: variable 'v26' is possibly undefined +// 4D8E50: variable 'v29' is possibly undefined +// 4D8E5A: variable 'v45' is possibly undefined +// 4D8FCE: variable 'v42' is possibly undefined +// 504CD0: using guessed type void __stdcall __noreturn std::locale::_Impl::_M_install_facet(_DWORD, _DWORD); +// 533580: using guessed type int *std::locale::_S_twinned_facets; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004D90B0) -------------------------------------------------------- +const std::locale::id *__userpurge std::locale::_Impl::_M_replace_facet@( + _DWORD *a1@, + std::locale::_Impl *this, + const std::locale::_Impl *a3, + const std::locale::id *a4) +{ + unsigned int v5; // eax + std::locale::_Impl *v6; // ecx + const std::locale::id *v7; // eax + + v5 = std::locale::id::_M_id((int *)a3); + if ( *((_DWORD *)this + 2) - 1 < v5 || (v7 = *(const std::locale::id **)(*((_DWORD *)this + 1) + 4 * v5)) == 0 ) + std::__throw_runtime_error((std::runtime_error *)"locale::_Impl::_M_replace_facet"); + return std::locale::_Impl::_M_install_facet(a1, v6, v7, a4); +} +// 4D90E7: variable 'v6' is possibly undefined + +//----- (004D9100) -------------------------------------------------------- +const std::locale::_Impl *__userpurge std::locale::_Impl::_M_replace_category@( + _DWORD *a1@, + std::locale::_Impl *this, + const std::locale::_Impl **a3, + const std::locale::id *const *a4) +{ + const std::locale::_Impl **v4; // ebx + const std::locale::_Impl *result; // eax + const std::locale::id *v7; // [esp+8h] [ebp-14h] + + v4 = a3; + for ( result = *a3; *v4; result = *v4 ) + { + ++v4; + std::locale::_Impl::_M_replace_facet(a1, this, result, v7); + } + return result; +} +// 4D912C: variable 'v7' is possibly undefined + +//----- (004D9150) -------------------------------------------------------- +void *__userpurge std::locale::_Impl::_Impl@( + _DWORD *a1@, + std::locale::_Impl *this, + const std::locale::_Impl *a3, + unsigned int a4) +{ + unsigned int v4; // edx + unsigned int v6; // eax + int v7; // eax + unsigned int v8; // esi + unsigned int v9; // edx + int v10; // edx + int v11; // ecx + int v12; // eax + int v13; // edx + int v14; // edx + int v15; // ecx + _DWORD *v16; // eax + _DWORD *v17; // edx + int i; // esi + void *result; // eax + unsigned int Size; // ebp + int v21; // eax + int v22; // edx + const void *Src; // edx + void *v24; // eax + _DWORD *v25; // [esp+1Ch] [ebp-20h] + + v4 = -1; + a1[1] = 0; + a1[3] = 0; + a1[4] = 0; + *a1 = a3; + v6 = *((_DWORD *)this + 2); + a1[2] = v6; + if ( v6 <= 0x1FFFFFFF ) + v4 = 4 * v6; + v7 = operator new[](v4); + v8 = a1[2]; + a1[1] = v7; + v9 = v8; + if ( v8 ) + { + v10 = 0; + while ( 1 ) + { + v11 = *(_DWORD *)(*((_DWORD *)this + 1) + 4 * v10); + *(_DWORD *)(v7 + 4 * v10) = v11; + if ( !v11 ) + goto LABEL_6; + if ( !_CRT_MT ) + break; + _InterlockedAdd((volatile signed __int32 *)(v11 + 4), 1u); + v8 = a1[2]; + if ( v8 <= ++v10 ) + { +LABEL_11: + v9 = -1; + if ( v8 <= 0x1FFFFFFF ) + v9 = 4 * v8; + goto LABEL_13; + } +LABEL_7: + v7 = a1[1]; + } + ++*(_DWORD *)(v11 + 4); + v8 = a1[2]; +LABEL_6: + if ( v8 <= ++v10 ) + goto LABEL_11; + goto LABEL_7; + } +LABEL_13: + v12 = operator new[](v9); + v13 = a1[2]; + a1[3] = v12; + if ( v13 ) + { + v14 = 0; + while ( 1 ) + { + v15 = *(_DWORD *)(*((_DWORD *)this + 3) + 4 * v14); + *(_DWORD *)(v12 + 4 * v14) = v15; + if ( !v15 ) + goto LABEL_16; + if ( !_CRT_MT ) + break; + _InterlockedAdd((volatile signed __int32 *)(v15 + 4), 1u); + if ( a1[2] <= (unsigned int)++v14 ) + goto LABEL_21; +LABEL_17: + v12 = a1[3]; + } + ++*(_DWORD *)(v15 + 4); +LABEL_16: + if ( a1[2] <= (unsigned int)++v14 ) + goto LABEL_21; + goto LABEL_17; + } +LABEL_21: + v16 = (_DWORD *)operator new[](0x18u); + a1[4] = v16; + v17 = v16 + 6; + do + *v16++ = 0; + while ( v17 != v16 ); + for ( i = 0; i != 24; i += 4 ) + { + result = *(void **)(*((_DWORD *)this + 4) + i); + if ( !result ) + break; + Size = strlen(*(const char **)(*((_DWORD *)this + 4) + i)) + 1; + v25 = (_DWORD *)(i + a1[4]); + v21 = operator new[](Size); + v22 = *((_DWORD *)this + 4); + *v25 = v21; + Src = *(const void **)(v22 + i); + v24 = *(void **)(a1[4] + i); + result = memcpy(v24, Src, Size); + } + return result; +} +// 504CAC: using guessed type void __stdcall __noreturn std::locale::_Impl::_Impl(_DWORD, _DWORD); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004D92E0) -------------------------------------------------------- +int __userpurge std::locale::_Impl::_Impl@(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3) +{ + _DWORD *v4; // eax + _DWORD *v5; // eax + int *v6; // eax + int v7; // esi + int v8; // esi + int v9; // esi + int v10; // esi + int v11; // esi + int v12; // esi + int v13; // esi + int v14; // eax + int v15; // ebx + int result; // eax + std::locale::facet **v17; // [esp+4h] [ebp-34h] + const std::locale::facet *v18; // [esp+8h] [ebp-30h] + const std::locale::facet *v19; // [esp+8h] [ebp-30h] + const std::locale::facet *v20; // [esp+8h] [ebp-30h] + const std::locale::facet *v21; // [esp+8h] [ebp-30h] + const std::locale::facet *v22; // [esp+8h] [ebp-30h] + const std::locale::facet *v23; // [esp+8h] [ebp-30h] + const std::locale::facet *v24; // [esp+8h] [ebp-30h] + const std::locale::facet *v25; // [esp+8h] [ebp-30h] + const std::locale::facet *v26; // [esp+8h] [ebp-30h] + const std::locale::facet *v27; // [esp+8h] [ebp-30h] + const std::locale::facet *v28; // [esp+8h] [ebp-30h] + const std::locale::facet *v29; // [esp+8h] [ebp-30h] + const std::locale::facet *v30; // [esp+8h] [ebp-30h] + const std::locale::facet *v31; // [esp+8h] [ebp-30h] + const std::locale::facet *v32; // [esp+8h] [ebp-30h] + const std::locale::facet *v33; // [esp+8h] [ebp-30h] + const std::locale::facet *v34; // [esp+8h] [ebp-30h] + const std::locale::facet *v35; // [esp+8h] [ebp-30h] + const std::locale::facet *v36; // [esp+8h] [ebp-30h] + const std::locale::facet *v37; // [esp+8h] [ebp-30h] + const std::locale::facet *v38; // [esp+8h] [ebp-30h] + const std::locale::facet *v39; // [esp+8h] [ebp-30h] + const std::locale::facet *v40; // [esp+8h] [ebp-30h] + const std::locale::facet *v41; // [esp+8h] [ebp-30h] + const std::locale::facet *v42; // [esp+8h] [ebp-30h] + const std::locale::facet *v43; // [esp+8h] [ebp-30h] + const std::locale::facet *v44; // [esp+8h] [ebp-30h] + const std::locale::facet *v45; // [esp+8h] [ebp-30h] + const std::locale::facet *v46; // [esp+8h] [ebp-30h] + const std::locale::facet *v47; // [esp+8h] [ebp-30h] + const std::locale::facet *v48; // [esp+8h] [ebp-30h] + const std::locale::facet *v49; // [esp+8h] [ebp-30h] + int v50[8]; // [esp+18h] [ebp-20h] BYREF + + a1[2] = 48; + *a1 = this; + v4 = &`anonymous namespace'::facet_vec; + do + *v4++ = 0; + while ( v4 != (_DWORD *)&`anonymous namespace'::num_get_c ); + a1[1] = &`anonymous namespace'::facet_vec; + v5 = &`anonymous namespace'::cache_vec; + do + *v5++ = 0; + while ( `anonymous namespace'::codecvt_c != v5 ); + a1[3] = &`anonymous namespace'::cache_vec; + v6 = &`anonymous namespace'::name_vec; + do + *v6++ = 0; + while ( v6 != (int *)&unk_515D7C ); + a1[4] = &`anonymous namespace'::name_vec; + `anonymous namespace'::name_vec = (int)&`anonymous namespace'::name_c; + `anonymous namespace'::name_c = *(_WORD *)std::locale::facet::_S_get_c_name(); + std::ctype::ctype(`anonymous namespace'::ctype_c, 0, 0, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::ctype::id, + (const std::locale::id *)`anonymous namespace'::ctype_c, + v18); + std::codecvt::codecvt(`anonymous namespace'::codecvt_c, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)`anonymous namespace'::codecvt_c, + v19); + dword_5153C4 = 1; + word_5153E4 = 0; + `anonymous namespace'::numpunct_cache_c = (int)&off_538BD4; + dword_5153C8 = 0; + dword_5153CC = 0; + byte_5153D0 = 0; + dword_5153D4 = 0; + dword_5153D8 = 0; + dword_5153DC = 0; + dword_5153E0 = 0; + byte_515424 = 0; + dword_5152AC = 1; + `anonymous namespace'::numpunct_c = &off_538318; + dword_5152B0 = (int)&`anonymous namespace'::numpunct_cache_c; + std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_c, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::numpunct::id, + (const std::locale::id *)&`anonymous namespace'::numpunct_c, + v20); + dword_515F44 = 1; + `anonymous namespace'::num_get_c = &off_53926C; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::num_get>::id, + (const std::locale::id *)&`anonymous namespace'::num_get_c, + v21); + dword_515F54 = 1; + `anonymous namespace'::num_put_c = &off_5392E4; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::num_put>::id, + (const std::locale::id *)&`anonymous namespace'::num_put_c, + v22); + dword_515E5C = 1; + `anonymous namespace'::collate_c = &off_5382A8; + dword_515E60 = std::locale::facet::_S_get_c_locale(); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::collate::id, + (const std::locale::id *)&`anonymous namespace'::collate_c, + v23); + `anonymous namespace'::moneypunct_cache_cf = (int)&off_538D0C; + dword_5156C4 = 1; + dword_5156C8 = 0; + dword_5156CC = 0; + word_5156D0 = 0; + byte_5156D2 = 0; + dword_5156D4 = 0; + dword_5156D8 = 0; + dword_5156DC = 0; + dword_5156E0 = 0; + dword_5156E4 = 0; + dword_5156E8 = 0; + dword_5156EC = 0; + dword_5156F0 = 0; + dword_5156F4 = 0; + byte_515703 = 0; + dword_515354 = 1; + `anonymous namespace'::moneypunct_cf = &off_537E60; + dword_515358 = (int)&`anonymous namespace'::moneypunct_cache_cf; + std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_cf, 0, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::moneypunct::id, + (const std::locale::id *)&`anonymous namespace'::moneypunct_cf, + v24); + `anonymous namespace'::moneypunct_cache_ct = (int)&off_538D1C; + dword_515724 = 1; + dword_515728 = 0; + dword_51572C = 0; + word_515730 = 0; + byte_515732 = 0; + dword_515734 = 0; + dword_515738 = 0; + dword_51573C = 0; + dword_515740 = 0; + dword_515744 = 0; + dword_515748 = 0; + dword_51574C = 0; + dword_515750 = 0; + dword_515754 = 0; + byte_515763 = 0; + dword_515360 = 1; + `anonymous namespace'::moneypunct_ct = &off_537E94; + dword_515364 = (int)&`anonymous namespace'::moneypunct_cache_ct; + std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_ct, 0, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::moneypunct::id, + (const std::locale::id *)&`anonymous namespace'::moneypunct_ct, + v25); + dword_5152F4 = 1; + `anonymous namespace'::money_get_c = &off_5383B8; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::money_get>::id, + (const std::locale::id *)&`anonymous namespace'::money_get_c, + v26); + dword_515304 = 1; + `anonymous namespace'::money_put_c = &off_5383E8; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::money_put>::id, + (const std::locale::id *)&`anonymous namespace'::money_put_c, + v27); + dword_515504 = 1; + `anonymous namespace'::timepunct_cache_c = (int)&off_538C08; + dword_515508 = 0; + dword_51550C = 0; + dword_515510 = 0; + dword_515514 = 0; + dword_515518 = 0; + dword_51551C = 0; + dword_515520 = 0; + dword_515524 = 0; + dword_515528 = 0; + dword_51552C = 0; + dword_515530 = 0; + dword_515534 = 0; + dword_515538 = 0; + dword_51553C = 0; + dword_515540 = 0; + dword_515544 = 0; + dword_515548 = 0; + dword_51554C = 0; + dword_515550 = 0; + dword_515554 = 0; + dword_515558 = 0; + dword_51555C = 0; + dword_515560 = 0; + dword_515564 = 0; + dword_515568 = 0; + dword_51556C = 0; + dword_515570 = 0; + dword_515574 = 0; + dword_515578 = 0; + dword_51557C = 0; + dword_515580 = 0; + dword_515584 = 0; + dword_515588 = 0; + dword_51558C = 0; + dword_515590 = 0; + dword_515594 = 0; + dword_515598 = 0; + dword_51559C = 0; + dword_5155A0 = 0; + dword_5155A4 = 0; + dword_5155A8 = 0; + dword_5155AC = 0; + dword_5155B0 = 0; + dword_5155B4 = 0; + dword_5155B8 = 0; + dword_5155BC = 0; + dword_5155C0 = 0; + byte_5155C4 = 0; + std::__timepunct::__timepunct( + `anonymous namespace'::timepunct_c, + (int)&`anonymous namespace'::timepunct_cache_c, + 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::__timepunct::id, + (const std::locale::id *)`anonymous namespace'::timepunct_c, + v28); + dword_5152C4 = 1; + `anonymous namespace'::time_get_c = &off_538360; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::time_get>::id, + (const std::locale::id *)&`anonymous namespace'::time_get_c, + v29); + dword_5152D4 = 1; + `anonymous namespace'::time_put_c = &off_539438; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::time_put>::id, + (const std::locale::id *)&`anonymous namespace'::time_put_c, + v30); + std::messages::messages(`anonymous namespace'::messages_c, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::messages::id, + (const std::locale::id *)`anonymous namespace'::messages_c, + v31); + std::ctype::ctype(`anonymous namespace'::ctype_w, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::ctype::id, + (const std::locale::id *)`anonymous namespace'::ctype_w, + v32); + std::codecvt::codecvt(`anonymous namespace'::codecvt_w, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)`anonymous namespace'::codecvt_w, + v33); + dword_515444 = 1; + `anonymous namespace'::numpunct_cache_w = (int)&off_538BE4; + dword_515448 = 0; + dword_51544C = 0; + byte_515450 = 0; + dword_515454 = 0; + dword_515458 = 0; + dword_51545C = 0; + dword_515460 = 0; + dword_515464 = 0; + byte_5154E4 = 0; + dword_5152B8 = 1; + `anonymous namespace'::numpunct_w = &off_53833C; + dword_5152BC = (int)&`anonymous namespace'::numpunct_cache_w; + std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_w, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::numpunct::id, + (const std::locale::id *)&`anonymous namespace'::numpunct_w, + v34); + dword_515F4C = 1; + `anonymous namespace'::num_get_w = &off_5392A8; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::num_get>::id, + (const std::locale::id *)&`anonymous namespace'::num_get_w, + v35); + dword_515F5C = 1; + `anonymous namespace'::num_put_w = &off_539314; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::num_put>::id, + (const std::locale::id *)&`anonymous namespace'::num_put_w, + v36); + dword_515E68 = 1; + `anonymous namespace'::collate_w = &off_5382C4; + dword_515E6C = std::locale::facet::_S_get_c_locale(); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::collate::id, + (const std::locale::id *)&`anonymous namespace'::collate_w, + v37); + dword_515784 = 1; + `anonymous namespace'::moneypunct_cache_wf = (int)&off_538D2C; + dword_515788 = 0; + dword_51578C = 0; + byte_515790 = 0; + dword_515792 = 0; + dword_515798 = 0; + dword_51579C = 0; + dword_5157A0 = 0; + dword_5157A4 = 0; + dword_5157A8 = 0; + dword_5157AC = 0; + dword_5157B0 = 0; + dword_5157B4 = 0; + dword_5157B8 = 0; + byte_5157D2 = 0; + dword_51536C = 1; + `anonymous namespace'::moneypunct_wf = &off_537EC8; + dword_515370 = (int)&`anonymous namespace'::moneypunct_cache_wf; + std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wf, 0, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::moneypunct::id, + (const std::locale::id *)&`anonymous namespace'::moneypunct_wf, + v38); + dword_5157E4 = 1; + `anonymous namespace'::moneypunct_cache_wt = (int)&off_538D3C; + dword_5157E8 = 0; + dword_5157EC = 0; + byte_5157F0 = 0; + dword_5157F2 = 0; + dword_5157F8 = 0; + dword_5157FC = 0; + dword_515800 = 0; + dword_515804 = 0; + dword_515808 = 0; + dword_51580C = 0; + dword_515810 = 0; + dword_515814 = 0; + dword_515818 = 0; + byte_515832 = 0; + dword_515378 = 1; + `anonymous namespace'::moneypunct_wt = &off_537EFC; + dword_51537C = (int)&`anonymous namespace'::moneypunct_cache_wt; + std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wt, 0, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::moneypunct::id, + (const std::locale::id *)&`anonymous namespace'::moneypunct_wt, + v39); + dword_5152FC = 1; + `anonymous namespace'::money_get_w = &off_5383D0; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::money_get>::id, + (const std::locale::id *)&`anonymous namespace'::money_get_w, + v40); + dword_51530C = 1; + `anonymous namespace'::money_put_w = &off_538400; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::money_put>::id, + (const std::locale::id *)&`anonymous namespace'::money_put_w, + v41); + dword_5155E4 = 1; + `anonymous namespace'::timepunct_cache_w = (int)&off_538C18; + dword_5155E8 = 0; + dword_5155EC = 0; + dword_5155F0 = 0; + dword_5155F4 = 0; + dword_5155F8 = 0; + dword_5155FC = 0; + dword_515600 = 0; + dword_515604 = 0; + dword_515608 = 0; + dword_51560C = 0; + dword_515610 = 0; + dword_515614 = 0; + dword_515618 = 0; + dword_51561C = 0; + dword_515620 = 0; + dword_515624 = 0; + dword_515628 = 0; + dword_51562C = 0; + dword_515630 = 0; + dword_515634 = 0; + dword_515638 = 0; + dword_51563C = 0; + dword_515640 = 0; + dword_515644 = 0; + dword_515648 = 0; + dword_51564C = 0; + dword_515650 = 0; + dword_515654 = 0; + dword_515658 = 0; + dword_51565C = 0; + dword_515660 = 0; + dword_515664 = 0; + dword_515668 = 0; + dword_51566C = 0; + dword_515670 = 0; + dword_515674 = 0; + dword_515678 = 0; + dword_51567C = 0; + dword_515680 = 0; + dword_515684 = 0; + dword_515688 = 0; + dword_51568C = 0; + dword_515690 = 0; + dword_515694 = 0; + dword_515698 = 0; + dword_51569C = 0; + dword_5156A0 = 0; + byte_5156A4 = 0; + std::__timepunct::__timepunct( + `anonymous namespace'::timepunct_w, + (int)&`anonymous namespace'::timepunct_cache_w, + 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::__timepunct::id, + (const std::locale::id *)`anonymous namespace'::timepunct_w, + v42); + dword_5152CC = 1; + `anonymous namespace'::time_get_w = &off_53838C; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::time_get>::id, + (const std::locale::id *)&`anonymous namespace'::time_get_w, + v43); + dword_5152DC = 1; + `anonymous namespace'::time_put_w = &off_53944C; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::time_put>::id, + (const std::locale::id *)&`anonymous namespace'::time_put_w, + v44); + std::messages::messages(`anonymous namespace'::messages_w, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::messages::id, + (const std::locale::id *)`anonymous namespace'::messages_w, + v45); + dword_5152E4 = 1; + `anonymous namespace'::codecvt_c16 = &off_5391B0; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)&`anonymous namespace'::codecvt_c16, + v46); + dword_5152EC = 1; + `anonymous namespace'::codecvt_c32 = &off_539158; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)&`anonymous namespace'::codecvt_c32, + v47); + dword_515384 = 1; + `anonymous namespace'::codecvt_c16_c8 = &off_539184; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)&`anonymous namespace'::codecvt_c16_c8, + v48); + dword_51538C = 1; + `anonymous namespace'::codecvt_c32_c8 = &off_53912C; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)&`anonymous namespace'::codecvt_c32_c8, + v49); + v50[0] = (int)&`anonymous namespace'::numpunct_cache_c; + v50[1] = (int)&`anonymous namespace'::moneypunct_cache_cf; + v50[2] = (int)&`anonymous namespace'::moneypunct_cache_ct; + v50[3] = (int)&`anonymous namespace'::numpunct_cache_w; + v50[4] = (int)&`anonymous namespace'::moneypunct_cache_wf; + v50[5] = (int)&`anonymous namespace'::moneypunct_cache_wt; + std::locale::_Impl::_M_init_extra((int)a1, (std::locale::_Impl *)v50, v17); + v7 = a1[3]; + *(_DWORD *)(v7 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_c; + v8 = a1[3]; + *(_DWORD *)(v8 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_cf; + v9 = a1[3]; + *(_DWORD *)(v9 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_ct; + v10 = a1[3]; + *(_DWORD *)(v10 + 4 * std::locale::id::_M_id(&std::__timepunct::id)) = &`anonymous namespace'::timepunct_cache_c; + v11 = a1[3]; + *(_DWORD *)(v11 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_w; + v12 = a1[3]; + *(_DWORD *)(v12 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_wf; + v13 = a1[3]; + v14 = std::locale::id::_M_id(&std::moneypunct::id); + v15 = a1[3]; + *(_DWORD *)(v13 + 4 * v14) = &`anonymous namespace'::moneypunct_cache_wt; + result = std::locale::id::_M_id(&std::__timepunct::id); + *(_DWORD *)(v15 + 4 * result) = &`anonymous namespace'::timepunct_cache_w; + return result; +} +// 4D93AC: variable 'v18' is possibly undefined +// 4D93D9: variable 'v19' is possibly undefined +// 4D948B: variable 'v20' is possibly undefined +// 4D94B8: variable 'v21' is possibly undefined +// 4D94E5: variable 'v22' is possibly undefined +// 4D951C: variable 'v23' is possibly undefined +// 4D9608: variable 'v24' is possibly undefined +// 4D96F3: variable 'v25' is possibly undefined +// 4D9720: variable 'v26' is possibly undefined +// 4D974D: variable 'v27' is possibly undefined +// 4D9973: variable 'v28' is possibly undefined +// 4D99A0: variable 'v29' is possibly undefined +// 4D99CD: variable 'v30' is possibly undefined +// 4D99FA: variable 'v31' is possibly undefined +// 4D9A27: variable 'v32' is possibly undefined +// 4D9A54: variable 'v33' is possibly undefined +// 4D9B07: variable 'v34' is possibly undefined +// 4D9B34: variable 'v35' is possibly undefined +// 4D9B61: variable 'v36' is possibly undefined +// 4D9B98: variable 'v37' is possibly undefined +// 4D9C85: variable 'v38' is possibly undefined +// 4D9D72: variable 'v39' is possibly undefined +// 4D9D9F: variable 'v40' is possibly undefined +// 4D9DCC: variable 'v41' is possibly undefined +// 4D9FF2: variable 'v42' is possibly undefined +// 4DA01F: variable 'v43' is possibly undefined +// 4DA04C: variable 'v44' is possibly undefined +// 4DA079: variable 'v45' is possibly undefined +// 4DA0A6: variable 'v46' is possibly undefined +// 4DA0D3: variable 'v47' is possibly undefined +// 4DA100: variable 'v48' is possibly undefined +// 4DA12D: variable 'v49' is possibly undefined +// 4DA167: variable 'v17' is possibly undefined +// 515288: using guessed type _DWORD `anonymous namespace'::messages_c[4]; +// 515298: using guessed type _DWORD `anonymous namespace'::messages_w[4]; +// 5152AC: using guessed type int dword_5152AC; +// 5152B0: using guessed type int dword_5152B0; +// 5152B8: using guessed type int dword_5152B8; +// 5152BC: using guessed type int dword_5152BC; +// 5152C4: using guessed type int dword_5152C4; +// 5152CC: using guessed type int dword_5152CC; +// 5152D4: using guessed type int dword_5152D4; +// 5152DC: using guessed type int dword_5152DC; +// 5152E4: using guessed type int dword_5152E4; +// 5152EC: using guessed type int dword_5152EC; +// 5152F4: using guessed type int dword_5152F4; +// 5152FC: using guessed type int dword_5152FC; +// 515304: using guessed type int dword_515304; +// 51530C: using guessed type int dword_51530C; +// 515310: using guessed type _DWORD `anonymous namespace'::timepunct_c[5]; +// 515324: using guessed type _DWORD `anonymous namespace'::timepunct_w[5]; +// 515354: using guessed type int dword_515354; +// 515358: using guessed type int dword_515358; +// 515360: using guessed type int dword_515360; +// 515364: using guessed type int dword_515364; +// 51536C: using guessed type int dword_51536C; +// 515370: using guessed type int dword_515370; +// 515378: using guessed type int dword_515378; +// 51537C: using guessed type int dword_51537C; +// 515384: using guessed type int dword_515384; +// 51538C: using guessed type int dword_51538C; +// 5153C0: using guessed type int `anonymous namespace'::numpunct_cache_c; +// 5153C4: using guessed type int dword_5153C4; +// 5153C8: using guessed type int dword_5153C8; +// 5153CC: using guessed type int dword_5153CC; +// 5153D0: using guessed type char byte_5153D0; +// 5153D4: using guessed type int dword_5153D4; +// 5153D8: using guessed type int dword_5153D8; +// 5153DC: using guessed type int dword_5153DC; +// 5153E0: using guessed type int dword_5153E0; +// 5153E4: using guessed type __int16 word_5153E4; +// 515424: using guessed type char byte_515424; +// 515440: using guessed type int `anonymous namespace'::numpunct_cache_w; +// 515444: using guessed type int dword_515444; +// 515448: using guessed type int dword_515448; +// 51544C: using guessed type int dword_51544C; +// 515450: using guessed type char byte_515450; +// 515454: using guessed type int dword_515454; +// 515458: using guessed type int dword_515458; +// 51545C: using guessed type int dword_51545C; +// 515460: using guessed type int dword_515460; +// 515464: using guessed type int dword_515464; +// 5154E4: using guessed type char byte_5154E4; +// 515500: using guessed type int `anonymous namespace'::timepunct_cache_c; +// 515504: using guessed type int dword_515504; +// 515508: using guessed type int dword_515508; +// 51550C: using guessed type int dword_51550C; +// 515510: using guessed type int dword_515510; +// 515514: using guessed type int dword_515514; +// 515518: using guessed type int dword_515518; +// 51551C: using guessed type int dword_51551C; +// 515520: using guessed type int dword_515520; +// 515524: using guessed type int dword_515524; +// 515528: using guessed type int dword_515528; +// 51552C: using guessed type int dword_51552C; +// 515530: using guessed type int dword_515530; +// 515534: using guessed type int dword_515534; +// 515538: using guessed type int dword_515538; +// 51553C: using guessed type int dword_51553C; +// 515540: using guessed type int dword_515540; +// 515544: using guessed type int dword_515544; +// 515548: using guessed type int dword_515548; +// 51554C: using guessed type int dword_51554C; +// 515550: using guessed type int dword_515550; +// 515554: using guessed type int dword_515554; +// 515558: using guessed type int dword_515558; +// 51555C: using guessed type int dword_51555C; +// 515560: using guessed type int dword_515560; +// 515564: using guessed type int dword_515564; +// 515568: using guessed type int dword_515568; +// 51556C: using guessed type int dword_51556C; +// 515570: using guessed type int dword_515570; +// 515574: using guessed type int dword_515574; +// 515578: using guessed type int dword_515578; +// 51557C: using guessed type int dword_51557C; +// 515580: using guessed type int dword_515580; +// 515584: using guessed type int dword_515584; +// 515588: using guessed type int dword_515588; +// 51558C: using guessed type int dword_51558C; +// 515590: using guessed type int dword_515590; +// 515594: using guessed type int dword_515594; +// 515598: using guessed type int dword_515598; +// 51559C: using guessed type int dword_51559C; +// 5155A0: using guessed type int dword_5155A0; +// 5155A4: using guessed type int dword_5155A4; +// 5155A8: using guessed type int dword_5155A8; +// 5155AC: using guessed type int dword_5155AC; +// 5155B0: using guessed type int dword_5155B0; +// 5155B4: using guessed type int dword_5155B4; +// 5155B8: using guessed type int dword_5155B8; +// 5155BC: using guessed type int dword_5155BC; +// 5155C0: using guessed type int dword_5155C0; +// 5155C4: using guessed type char byte_5155C4; +// 5155E0: using guessed type int `anonymous namespace'::timepunct_cache_w; +// 5155E4: using guessed type int dword_5155E4; +// 5155E8: using guessed type int dword_5155E8; +// 5155EC: using guessed type int dword_5155EC; +// 5155F0: using guessed type int dword_5155F0; +// 5155F4: using guessed type int dword_5155F4; +// 5155F8: using guessed type int dword_5155F8; +// 5155FC: using guessed type int dword_5155FC; +// 515600: using guessed type int dword_515600; +// 515604: using guessed type int dword_515604; +// 515608: using guessed type int dword_515608; +// 51560C: using guessed type int dword_51560C; +// 515610: using guessed type int dword_515610; +// 515614: using guessed type int dword_515614; +// 515618: using guessed type int dword_515618; +// 51561C: using guessed type int dword_51561C; +// 515620: using guessed type int dword_515620; +// 515624: using guessed type int dword_515624; +// 515628: using guessed type int dword_515628; +// 51562C: using guessed type int dword_51562C; +// 515630: using guessed type int dword_515630; +// 515634: using guessed type int dword_515634; +// 515638: using guessed type int dword_515638; +// 51563C: using guessed type int dword_51563C; +// 515640: using guessed type int dword_515640; +// 515644: using guessed type int dword_515644; +// 515648: using guessed type int dword_515648; +// 51564C: using guessed type int dword_51564C; +// 515650: using guessed type int dword_515650; +// 515654: using guessed type int dword_515654; +// 515658: using guessed type int dword_515658; +// 51565C: using guessed type int dword_51565C; +// 515660: using guessed type int dword_515660; +// 515664: using guessed type int dword_515664; +// 515668: using guessed type int dword_515668; +// 51566C: using guessed type int dword_51566C; +// 515670: using guessed type int dword_515670; +// 515674: using guessed type int dword_515674; +// 515678: using guessed type int dword_515678; +// 51567C: using guessed type int dword_51567C; +// 515680: using guessed type int dword_515680; +// 515684: using guessed type int dword_515684; +// 515688: using guessed type int dword_515688; +// 51568C: using guessed type int dword_51568C; +// 515690: using guessed type int dword_515690; +// 515694: using guessed type int dword_515694; +// 515698: using guessed type int dword_515698; +// 51569C: using guessed type int dword_51569C; +// 5156A0: using guessed type int dword_5156A0; +// 5156A4: using guessed type char byte_5156A4; +// 5156C0: using guessed type int `anonymous namespace'::moneypunct_cache_cf; +// 5156C4: using guessed type int dword_5156C4; +// 5156C8: using guessed type int dword_5156C8; +// 5156CC: using guessed type int dword_5156CC; +// 5156D0: using guessed type __int16 word_5156D0; +// 5156D2: using guessed type char byte_5156D2; +// 5156D4: using guessed type int dword_5156D4; +// 5156D8: using guessed type int dword_5156D8; +// 5156DC: using guessed type int dword_5156DC; +// 5156E0: using guessed type int dword_5156E0; +// 5156E4: using guessed type int dword_5156E4; +// 5156E8: using guessed type int dword_5156E8; +// 5156EC: using guessed type int dword_5156EC; +// 5156F0: using guessed type int dword_5156F0; +// 5156F4: using guessed type int dword_5156F4; +// 515703: using guessed type char byte_515703; +// 515720: using guessed type int `anonymous namespace'::moneypunct_cache_ct; +// 515724: using guessed type int dword_515724; +// 515728: using guessed type int dword_515728; +// 51572C: using guessed type int dword_51572C; +// 515730: using guessed type __int16 word_515730; +// 515732: using guessed type char byte_515732; +// 515734: using guessed type int dword_515734; +// 515738: using guessed type int dword_515738; +// 51573C: using guessed type int dword_51573C; +// 515740: using guessed type int dword_515740; +// 515744: using guessed type int dword_515744; +// 515748: using guessed type int dword_515748; +// 51574C: using guessed type int dword_51574C; +// 515750: using guessed type int dword_515750; +// 515754: using guessed type int dword_515754; +// 515763: using guessed type char byte_515763; +// 515780: using guessed type int `anonymous namespace'::moneypunct_cache_wf; +// 515784: using guessed type int dword_515784; +// 515788: using guessed type int dword_515788; +// 51578C: using guessed type int dword_51578C; +// 515790: using guessed type char byte_515790; +// 515792: using guessed type int dword_515792; +// 515798: using guessed type int dword_515798; +// 51579C: using guessed type int dword_51579C; +// 5157A0: using guessed type int dword_5157A0; +// 5157A4: using guessed type int dword_5157A4; +// 5157A8: using guessed type int dword_5157A8; +// 5157AC: using guessed type int dword_5157AC; +// 5157B0: using guessed type int dword_5157B0; +// 5157B4: using guessed type int dword_5157B4; +// 5157B8: using guessed type int dword_5157B8; +// 5157D2: using guessed type char byte_5157D2; +// 5157E0: using guessed type int `anonymous namespace'::moneypunct_cache_wt; +// 5157E4: using guessed type int dword_5157E4; +// 5157E8: using guessed type int dword_5157E8; +// 5157EC: using guessed type int dword_5157EC; +// 5157F0: using guessed type char byte_5157F0; +// 5157F2: using guessed type int dword_5157F2; +// 5157F8: using guessed type int dword_5157F8; +// 5157FC: using guessed type int dword_5157FC; +// 515800: using guessed type int dword_515800; +// 515804: using guessed type int dword_515804; +// 515808: using guessed type int dword_515808; +// 51580C: using guessed type int dword_51580C; +// 515810: using guessed type int dword_515810; +// 515814: using guessed type int dword_515814; +// 515818: using guessed type int dword_515818; +// 515832: using guessed type char byte_515832; +// 515840: using guessed type __int16 `anonymous namespace'::name_c; +// 515860: using guessed type _DWORD `anonymous namespace'::ctype_c[136]; +// 515A80: using guessed type _DWORD `anonymous namespace'::ctype_w[184]; +// 515D64: using guessed type int `anonymous namespace'::name_vec; +// 515E40: using guessed type _DWORD `anonymous namespace'::codecvt_c[3]; +// 515E4C: using guessed type _DWORD `anonymous namespace'::codecvt_w[3]; +// 515E5C: using guessed type int dword_515E5C; +// 515E60: using guessed type int dword_515E60; +// 515E68: using guessed type int dword_515E68; +// 515E6C: using guessed type int dword_515E6C; +// 515F44: using guessed type int dword_515F44; +// 515F4C: using guessed type int dword_515F4C; +// 515F54: using guessed type int dword_515F54; +// 515F5C: using guessed type int dword_515F5C; +// 51643C: using guessed type int std::__timepunct::id; +// 516440: using guessed type int std::__timepunct::id; +// 5165A8: using guessed type int std::moneypunct::id; +// 5165AC: using guessed type int std::moneypunct::id; +// 5165B0: using guessed type int std::moneypunct::id; +// 5165B4: using guessed type int std::moneypunct::id; +// 5165C8: using guessed type int std::numpunct::id; +// 5165CC: using guessed type int std::numpunct::id; +// 537E60: using guessed type int (*off_537E60)(); +// 537E94: using guessed type int (*off_537E94)(); +// 537EC8: using guessed type int (*off_537EC8)(); +// 537EFC: using guessed type int (*off_537EFC)(); +// 5382A8: using guessed type int (*off_5382A8)(); +// 5382C4: using guessed type int (*off_5382C4)(); +// 538318: using guessed type int (*off_538318)(); +// 53833C: using guessed type int (*off_53833C)(); +// 538360: using guessed type int (*off_538360)(); +// 53838C: using guessed type int (*off_53838C)(); +// 5383B8: using guessed type int (*off_5383B8)(); +// 5383D0: using guessed type int (*off_5383D0)(); +// 5383E8: using guessed type int (*off_5383E8)(); +// 538400: using guessed type int (*off_538400)(); +// 538BD4: using guessed type int (*off_538BD4)(); +// 538BE4: using guessed type int (*off_538BE4)(); +// 538C08: using guessed type int (*off_538C08)(); +// 538C18: using guessed type int (*off_538C18)(); +// 538D0C: using guessed type int (*off_538D0C)(); +// 538D1C: using guessed type int (*off_538D1C)(); +// 538D2C: using guessed type int (*off_538D2C)(); +// 538D3C: using guessed type int (*off_538D3C)(); +// 53912C: using guessed type int (*off_53912C)(); +// 539158: using guessed type int (*off_539158)(); +// 539184: using guessed type int (*off_539184)(); +// 5391B0: using guessed type int (*off_5391B0)(); +// 53926C: using guessed type int (*off_53926C)(); +// 5392A8: using guessed type int (*off_5392A8)(); +// 5392E4: using guessed type int (*off_5392E4)(); +// 539314: using guessed type int (*off_539314)(); +// 539438: using guessed type int (*off_539438)(); +// 53944C: using guessed type int (*off_53944C)(); + +//----- (004DA270) -------------------------------------------------------- +void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1) +{ + _DWORD *v2; // eax + unsigned int v3; // esi + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + void (*v6)(void); // eax + _DWORD *v7; // eax + unsigned int v8; // esi + volatile signed __int32 *v9; // ecx + signed __int32 v10; // eax + void (*v11)(void); // eax + char *v12; // edx + int v13; // esi + + v2 = (_DWORD *)a1[1]; + if ( v2 ) + { + if ( !a1[2] ) + goto LABEL_13; + v3 = 0; + do + { + v4 = (volatile signed __int32 *)v2[v3]; + if ( v4 ) + { + if ( _CRT_MT ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + { + v6 = *(void (**)(void))(*v4 + 4); + if ( (char *)v6 == (char *)std::locale::facet::~facet ) + operator delete((void *)v4); + else + v6(); + } + v2 = (_DWORD *)a1[1]; + } + ++v3; + } + while ( a1[2] > v3 ); + if ( v2 ) +LABEL_13: + operator delete[](v2); + } + v7 = (_DWORD *)a1[3]; + if ( v7 ) + { + if ( !a1[2] ) + goto LABEL_26; + v8 = 0; + do + { + v9 = (volatile signed __int32 *)v7[v8]; + if ( v9 ) + { + if ( _CRT_MT ) + { + v10 = _InterlockedExchangeAdd(v9 + 1, 0xFFFFFFFF); + } + else + { + v10 = *((_DWORD *)v9 + 1); + *((_DWORD *)v9 + 1) = v10 - 1; + } + if ( v10 == 1 ) + { + v11 = *(void (**)(void))(*v9 + 4); + if ( (char *)v11 == (char *)std::locale::facet::~facet ) + operator delete((void *)v9); + else + v11(); + } + v7 = (_DWORD *)a1[3]; + } + ++v8; + } + while ( a1[2] > v8 ); + if ( v7 ) +LABEL_26: + operator delete[](v7); + } + v12 = (char *)a1[4]; + v13 = 0; + if ( v12 ) + { + do + { + if ( *(_DWORD *)&v12[v13] ) + { + operator delete[](*(void **)&v12[v13]); + v12 = (char *)a1[4]; + } + v13 += 4; + } + while ( v13 != 24 ); + if ( v12 ) + operator delete[](v12); + } +} +// 504C5C: using guessed type int std::locale::_Impl::~_Impl(void); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004DA3F0) -------------------------------------------------------- +int *const *std::locale::facet::_S_get_c_name() +{ + return &std::locale::facet::_S_c_name; +} + +//----- (004DA400) -------------------------------------------------------- +int std::locale::facet::_S_get_c_locale() +{ + int result; // eax + + if ( _CRT_MT ) + { + __gthr_win32_once(&std::locale::facet::_S_once, std::locale::facet::_S_initialize_once); + return std::locale::facet::_S_c_locale; + } + else + { + result = std::locale::facet::_S_c_locale; + if ( !std::locale::facet::_S_c_locale ) + { + std::locale::facet::_S_create_c_locale( + (std::locale::facet *)&std::locale::facet::_S_c_locale, + (int **)&std::locale::facet::_S_c_name); + return std::locale::facet::_S_c_locale; + } + } + return result; +} +// 516590: using guessed type int std::locale::facet::_S_c_locale; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004DA470) -------------------------------------------------------- +int __cdecl std::locale::facet::_S_clone_c_locale() +{ + return 0; +} + +//----- (004DA480) -------------------------------------------------------- +int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **a2) +{ + int **result; // eax + + result = a2; + *(_DWORD *)this = 0; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + std::__throw_runtime_error((std::runtime_error *)"locale::facet::_S_create_c_locale name not valid"); + return result; +} + +//----- (004DA4C0) -------------------------------------------------------- +void std::locale::facet::_S_initialize_once(void) +{ + std::locale::facet::_S_create_c_locale( + (std::locale::facet *)&std::locale::facet::_S_c_locale, + (int **)&std::locale::facet::_S_c_name); +} +// 516590: using guessed type int std::locale::facet::_S_c_locale; + +//----- (004DA4F0) -------------------------------------------------------- +std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this) +{ + std::locale::facet *result; // eax + + result = this; + *(_DWORD *)this = 0; + return result; +} + +//----- (004DA500) -------------------------------------------------------- +int __cdecl std::locale::facet::_S_lc_ctype_c_locale() +{ + return 0; +} + +//----- (004DA510) -------------------------------------------------------- +void __fastcall std::locale::facet::~facet(void *a1) +{ + operator delete(a1); +} + +//----- (004DA530) -------------------------------------------------------- +std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2) +{ + __gthread_mutex_t *locale_mutex; // eax + std::locale *v3; // edi + volatile signed __int32 *v4; // eax + std::locale::_Impl *v6; // [esp+4h] [ebp-44h] + __gthread_mutex_t *mutex; // [esp+14h] [ebp-34h] + char *Locale[2]; // [esp+18h] [ebp-30h] BYREF + char v9; // [esp+20h] [ebp-28h] BYREF + + std::locale::_S_initialize(); + locale_mutex = `anonymous namespace'::get_locale_mutex(); + mutex = locale_mutex; + if ( !_CRT_MT ) + { + v3 = (std::locale *)std::locale::_S_global; + v4 = *a2; + if ( *a2 == (volatile signed __int32 *)std::locale::_S_classic ) + goto LABEL_4; + goto LABEL_3; + } + if ( __gthr_win32_mutex_lock(locale_mutex) ) + __gnu_cxx::__throw_concurrence_lock_error(); + v4 = (volatile signed __int32 *)std::locale::_S_classic; + v3 = (std::locale *)std::locale::_S_global; + if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) + { + if ( !_CRT_MT ) + { + v4 = *a2; +LABEL_3: + ++*v4; + goto LABEL_4; + } + _InterlockedAdd(*a2, 1u); + v4 = *a2; + } +LABEL_4: + std::locale::_S_global = (int)v4; + std::locale::name[abi:cxx11]((int)Locale, (int *)a2); + if ( std::string::compare((int)Locale, "*") ) + setlocale(0, Locale[0]); + if ( Locale[0] != &v9 ) + operator delete(Locale[0]); + if ( _CRT_MT && __gthr_win32_mutex_unlock(mutex) ) + std::locale::global(this, (void (__cdecl *)(void *))a2); + std::locale::locale(this, v3, v6); + return this; +} +// 4DA5B6: variable 'v6' is possibly undefined +// 516588: using guessed type int std::locale::_S_classic; +// 5165A4: using guessed type int std::locale::_S_global; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004DA660) -------------------------------------------------------- +_DWORD *std::locale::classic() +{ + std::locale::_Impl *v1; // [esp+4h] [ebp-18h] + + std::locale::_S_initialize(); + std::locale::locale(&`anonymous namespace'::c_locale, (std::locale *)std::locale::_S_classic, v1); + return &`anonymous namespace'::c_locale; +} +// 4DA675: variable 'v1' is possibly undefined +// 515D60: using guessed type _DWORD `anonymous namespace'::c_locale; +// 516588: using guessed type int std::locale::_S_classic; + +//----- (004DA690) -------------------------------------------------------- +std::locale *__userpurge std::locale::locale@(_DWORD *a1@, std::locale *this, std::locale::_Impl *a3) +{ + std::locale *result; // eax + + result = this; + *a1 = this; + return result; +} + +//----- (004DA6A0) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::locale::locale@( + volatile signed __int32 **a1@, + volatile signed __int32 **this, + const std::locale *a3) +{ + volatile signed __int32 *result; // eax + + result = *this; + *a1 = *this; + if ( result != (volatile signed __int32 *)std::locale::_S_classic ) + { + if ( _CRT_MT ) + _InterlockedAdd(result, 1u); + else + ++*result; + } + return result; +} +// 516588: using guessed type int std::locale::_S_classic; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004DA6D0) -------------------------------------------------------- +int __fastcall std::locale::locale(_DWORD *a1) +{ + int result; // eax + __gthread_mutex_t *mutex; // esi + _DWORD *v4; // eax + _DWORD *exception; // eax + + *a1 = 0; + std::locale::_S_initialize(); + result = std::locale::_S_global; + *a1 = std::locale::_S_global; + if ( result != std::locale::_S_classic ) + { + mutex = `anonymous namespace'::get_locale_mutex(); + v4 = (_DWORD *)std::locale::_S_global; + if ( !_CRT_MT ) + goto LABEL_3; + if ( __gthr_win32_mutex_lock(mutex) ) + __gnu_cxx::__throw_concurrence_lock_error(); + v4 = (_DWORD *)std::locale::_S_global; + if ( _CRT_MT ) + { + _InterlockedAdd((volatile signed __int32 *)std::locale::_S_global, 1u); + v4 = (_DWORD *)std::locale::_S_global; + } + else + { +LABEL_3: + ++*v4; + } + *a1 = v4; + result = _CRT_MT; + if ( _CRT_MT ) + { + result = __gthr_win32_mutex_unlock(mutex); + if ( result ) + { + exception = __cxa_allocate_exception(4u); + *exception = &off_53799C; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); + } + } + } + return result; +} +// 516588: using guessed type int std::locale::_S_classic; +// 5165A4: using guessed type int std::locale::_S_global; +// 533CF4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; +// 53799C: using guessed type void (__cdecl *off_53799C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004DA780) -------------------------------------------------------- +void __fastcall std::locale::~locale(_DWORD **a1) +{ + _DWORD *v1; // ebx + int v2; // eax + + v1 = *a1; + if ( *a1 != (_DWORD *)std::locale::_S_classic ) + { + if ( !_CRT_MT ) + { + v2 = (*v1)--; + if ( v2 != 1 ) + return; +LABEL_6: + std::locale::_Impl::~_Impl(v1); + operator delete(v1); + return; + } + if ( _InterlockedExchangeAdd(v1, 0xFFFFFFFF) == 1 ) + goto LABEL_6; + } +} +// 516588: using guessed type int std::locale::_S_classic; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004DA7E0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::locale::operator=( + volatile signed __int32 **this, + volatile signed __int32 **a2) +{ + volatile signed __int32 **result; // eax + int v3; // ecx + volatile signed __int32 *v4; // edx + volatile signed __int32 *v5; // ebx + volatile signed __int32 v6; // edx + volatile signed __int32 **v7; // [esp+1Ch] [ebp-10h] + + result = this; + v3 = std::locale::_S_classic; + v4 = *a2; + if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) + { + if ( _CRT_MT ) + { + _InterlockedAdd(v4, 1u); + v3 = std::locale::_S_classic; + } + else + { + ++*v4; + } + } + v5 = *result; + if ( *result == (volatile signed __int32 *)v3 ) + goto LABEL_7; + if ( _CRT_MT ) + { + if ( _InterlockedExchangeAdd(v5, 0xFFFFFFFF) != 1 ) + goto LABEL_7; + } + else + { + v6 = (*v5)--; + if ( v6 != 1 ) + { +LABEL_7: + *result = *a2; + return result; + } + } + v7 = result; + std::locale::_Impl::~_Impl(v5); + operator delete((void *)v5); + result = v7; + *v7 = *a2; + return result; +} +// 516588: using guessed type int std::locale::_S_classic; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004DA880) -------------------------------------------------------- +char *__thiscall std::vector>::_M_realloc_insert const&>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // ebx + int v4; // eax + bool v5; // cf + unsigned int v6; // ebx + char *v7; // edi + _DWORD *v8; // esi + char *i; // eax + char *v10; // esi + char *v11; // edx + _DWORD *v12; // ecx + volatile signed __int32 **v13; // ecx + char *v14; // esi + char *result; // eax + void (__cdecl *v16)(void *); // [esp+4h] [ebp-44h] + char *v17; // [esp+18h] [ebp-30h] + char *v18; // [esp+1Ch] [ebp-2Ch] + _DWORD *v19; // [esp+20h] [ebp-28h] + char *v20; // [esp+20h] [ebp-28h] + char *v21; // [esp+24h] [ebp-24h] + char *v23; // [esp+2Ch] [ebp-1Ch] + + v21 = this[1]; + v23 = *this; + v3 = (v21 - *this) >> 3; + if ( v3 == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v4 = (v21 - *this) >> 3; + if ( !v3 ) + v4 = 1; + v5 = __CFADD__(v4, v3); + v6 = v4 + v3; + if ( v5 ) + goto LABEL_8; + v7 = 0; + if ( v6 ) + { + if ( v6 <= 0xFFFFFFF ) + { +LABEL_9: + v7 = (char *)operator new((struct type_info *)(8 * v6), v16); + goto LABEL_10; + } +LABEL_8: + v6 = 0xFFFFFFF; + goto LABEL_9; + } +LABEL_10: + v8 = v7; + std::__shared_ptr::__shared_ptr(&v7[a2 - v23], a3); + for ( i = v23; a2 != i; i = v20 + 8 ) + { + v12 = v8; + v8 += 2; + v20 = i; + std::__shared_ptr::__shared_ptr(v12, i); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v20 + 1); + } + v10 = i; + v11 = &v7[i - v23 + 8]; + v19 = v11; + while ( v10 != v21 ) + { + v17 = i; + v18 = v11; + std::__shared_ptr::__shared_ptr(v11, v10); + v13 = (volatile signed __int32 **)(v10 + 4); + v10 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); + i = v17; + v11 = v18 + 8; + } + v14 = (char *)v19 + v10 - i; + if ( v23 ) + operator delete(v23); + *this = v7; + this[1] = v14; + result = &v7[8 * v6]; + this[2] = result; + return result; +} +// 4DA8ED: variable 'v16' is possibly undefined + +//----- (004DA9A0) -------------------------------------------------------- +_DWORD *__thiscall std::vector>::_M_erase(_DWORD *this, _DWORD *a2) +{ + char *v3; // ebx + _DWORD *v4; // ecx + int i; // ebx + _DWORD *v6; // edi + int v7; // ecx + + v3 = (char *)this[1]; + if ( a2 + 2 != (_DWORD *)v3 ) + { + v4 = a2; + for ( i = (v3 - (char *)(a2 + 2)) >> 3; i > 0; --i ) + { + v6 = v4 + 2; + std::__shared_ptr::operator=(v4, v4 + 2); + v4 = v6; + } + } + v7 = this[1]; + this[1] = v7 - 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v7 - 4)); + return a2; +} + +//----- (004DA9F4) -------------------------------------------------------- +char *__thiscall std::vector>::push_back(char **this, _DWORD *a2) +{ + char *v3; // ecx + char *result; // eax + + v3 = this[1]; + if ( v3 == this[2] ) + return std::vector>::_M_realloc_insert const&>( + this, + v3, + a2); + result = (char *)std::__shared_ptr::__shared_ptr(v3, a2); + this[1] += 8; + return result; +} + +//----- (004DAA30) -------------------------------------------------------- +char *__thiscall std::vector>::_M_realloc_insert const&>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // ebx + int v4; // eax + bool v5; // cf + unsigned int v6; // ebx + _DWORD *v7; // esi + char *v8; // edi + int v9; // eax + volatile signed __int32 **v10; // ecx + char *v11; // esi + _DWORD *v12; // edx + int v13; // eax + volatile signed __int32 **v14; // ecx + char *v15; // esi + char *result; // eax + void (__cdecl *v17)(void *); // [esp+4h] [ebp-44h] + _DWORD *v18; // [esp+18h] [ebp-30h] + _DWORD *v19; // [esp+18h] [ebp-30h] + char *v20; // [esp+1Ch] [ebp-2Ch] + char *v22; // [esp+28h] [ebp-20h] + _DWORD *v23; // [esp+2Ch] [ebp-1Ch] + + v20 = this[1]; + v22 = *this; + v3 = (v20 - *this) >> 3; + if ( v3 == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v4 = (v20 - *this) >> 3; + if ( !v3 ) + v4 = 1; + v5 = __CFADD__(v4, v3); + v6 = v4 + v3; + if ( v5 ) + goto LABEL_8; + v23 = 0; + if ( !v6 ) + goto LABEL_10; + if ( v6 > 0xFFFFFFF ) +LABEL_8: + v6 = 0xFFFFFFF; + v23 = operator new((struct type_info *)(8 * v6), v17); +LABEL_10: + v7 = v23; + v8 = v22; + std::__shared_ptr::__shared_ptr( + (_DWORD *)((char *)v23 + a2 - v22), + a3); + while ( a2 != v8 ) + { + *v7 = *(_DWORD *)v8; + v9 = *((_DWORD *)v8 + 1); + v7[1] = v9; + if ( v9 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v9 + 4)); + v10 = (volatile signed __int32 **)(v8 + 4); + v7 += 2; + v8 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); + } + v11 = v8; + v12 = (_DWORD *)((char *)v23 + v8 - v22 + 8); + while ( v11 != v20 ) + { + *v12 = *(_DWORD *)v11; + v13 = *((_DWORD *)v11 + 1); + v12[1] = v13; + if ( v13 ) + { + v18 = v12; + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v13 + 4)); + v12 = v18; + } + v14 = (volatile signed __int32 **)(v11 + 4); + v19 = v12; + v11 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v14); + v12 = v19 + 2; + } + v15 = &v11[(char *)v23 - v22 + 8]; + if ( v22 ) + operator delete(v22); + this[1] = v15; + *this = (char *)v23; + result = (char *)&v23[2 * v6]; + this[2] = result; + return result; +} +// 4DAAA2: variable 'v17' is possibly undefined + +//----- (004DAB6C) -------------------------------------------------------- +char *__thiscall std::vector>::push_back(char **this, _DWORD *a2) +{ + char *v3; // ecx + char *result; // eax + + v3 = this[1]; + if ( v3 == this[2] ) + return std::vector>::_M_realloc_insert const&>( + this, + v3, + a2); + result = (char *)std::__shared_ptr::__shared_ptr(v3, a2); + this[1] += 8; + return result; +} + +//----- (004DABA8) -------------------------------------------------------- +char *__thiscall std::vector>::_M_realloc_insert const&>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // eax + int v4; // edx + bool v5; // cf + unsigned int v6; // eax + int v7; // edi + _DWORD *v8; // ebx + int v9; // eax + _DWORD *v10; // ebx + char *i; // esi + int v12; // eax + volatile signed __int32 **v13; // ecx + char *v14; // ebx + _DWORD *v15; // edx + int v16; // eax + volatile signed __int32 **v17; // ecx + char *v18; // ebx + char *result; // eax + void (__cdecl *v20)(void *); // [esp+4h] [ebp-44h] + _DWORD *v21; // [esp+18h] [ebp-30h] + _DWORD *v22; // [esp+18h] [ebp-30h] + char *v23; // [esp+1Ch] [ebp-2Ch] + char *v25; // [esp+28h] [ebp-20h] + _DWORD *v26; // [esp+2Ch] [ebp-1Ch] + + v23 = this[1]; + v25 = *this; + v3 = (v23 - *this) >> 3; + if ( v3 == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v4 = (v23 - *this) >> 3; + if ( !v3 ) + v4 = 1; + v5 = __CFADD__(v4, v3); + v6 = v4 + v3; + v7 = v6; + if ( v5 ) + goto LABEL_8; + v26 = 0; + if ( !v6 ) + goto LABEL_10; + if ( v6 > 0xFFFFFFF ) +LABEL_8: + v7 = 0xFFFFFFF; + v26 = operator new((struct type_info *)(8 * v7), v20); +LABEL_10: + v8 = (_DWORD *)((char *)v26 + a2 - v25); + *v8 = *a3; + v9 = a3[1]; + v8[1] = v9; + if ( v9 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v9 + 4)); + v10 = v26; + for ( i = v25; a2 != i; i += 8 ) + { + *v10 = *(_DWORD *)i; + v12 = *((_DWORD *)i + 1); + v10[1] = v12; + if ( v12 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v12 + 4)); + v13 = (volatile signed __int32 **)(i + 4); + v10 += 2; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); + } + v14 = i; + v15 = (_DWORD *)((char *)v26 + i - v25 + 8); + while ( v14 != v23 ) + { + *v15 = *(_DWORD *)v14; + v16 = *((_DWORD *)v14 + 1); + v15[1] = v16; + if ( v16 ) + { + v21 = v15; + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v16 + 4)); + v15 = v21; + } + v17 = (volatile signed __int32 **)(v14 + 4); + v22 = v15; + v14 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v17); + v15 = v22 + 2; + } + v18 = &v14[(char *)v26 - v25 + 8]; + if ( v25 ) + operator delete(v25); + this[1] = v18; + *this = (char *)v26; + result = (char *)&v26[2 * v7]; + this[2] = result; + return result; +} +// 4DAC1E: variable 'v20' is possibly undefined + +//----- (004DACF0) -------------------------------------------------------- +char *__thiscall std::vector>::push_back(int this, _DWORD *a2) +{ + int v2; // edx + char *result; // eax + + v2 = *(_DWORD *)(this + 4); + if ( v2 == *(_DWORD *)(this + 8) ) + return std::vector>::_M_realloc_insert const&>( + (char **)this, + (char *)v2, + a2); + result = (char *)a2[1]; + *(_DWORD *)v2 = *a2; + *(_DWORD *)(v2 + 4) = result; + if ( result ) + result = (char *)__gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)result + 1); + *(_DWORD *)(this + 4) += 8; + return result; +} +// 4DAD18: variable 'this' is possibly undefined + +//----- (004DAD34) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::vector>::vector( + volatile signed __int32 **this, + volatile signed __int32 **a2) +{ + int v3; // esi + volatile signed __int32 *v4; // edx + volatile signed __int32 *result; // eax + volatile signed __int32 *v6; // ecx + volatile signed __int32 *v7; // esi + volatile signed __int32 *v8; // edi + void (__cdecl *v9)(void *); // [esp+4h] [ebp-34h] + volatile signed __int32 *v10; // [esp+1Ch] [ebp-1Ch] + + v3 = (char *)a2[1] - (char *)*a2; + *this = 0; + this[1] = 0; + this[2] = 0; + if ( v3 >> 3 ) + { + if ( (unsigned int)(v3 >> 3) > 0xFFFFFFF ) + std::__throw_bad_alloc(); + v4 = (volatile signed __int32 *)operator new((struct type_info *)v3, v9); + } + else + { + v4 = 0; + } + result = *a2; + *this = v4; + this[1] = v4; + v10 = result; + v6 = result; + this[2] = (volatile signed __int32 *)((char *)v4 + v3); + v7 = a2[1]; + v8 = v4; + while ( v7 != v6 ) + { + *v8 = *v6; + result = (volatile signed __int32 *)*((_DWORD *)v6 + 1); + *((_DWORD *)v8 + 1) = result; + if ( result ) + result = __gnu_cxx::__atomic_add_dispatch(result + 1); + v8 += 2; + v6 += 2; + } + this[1] = (volatile signed __int32 *)((char *)v4 + (char *)v7 - (char *)v10); + return result; +} +// 4DAD71: variable 'v9' is possibly undefined +// 4DADAF: variable 'v6' is possibly undefined +// 4DADB7: variable 'v4' is possibly undefined + +//----- (004DADC8) -------------------------------------------------------- +int __thiscall std::vector::_M_realloc_insert( + _DWORD *this, + char *a2, + _DWORD *a3) +{ + int v3; // esi + int v5; // eax + char *v6; // esi + char *v7; // ebx + char *v8; // ebx + char *i; // eax + char *v10; // eax + unsigned int v11; // eax + char *v12; // ebx + char *v13; // eax + void **v14; // edx + void **v15; // edx + int result; // eax + void (__cdecl *v17)(void *); // [esp+4h] [ebp-44h] + char *v18; // [esp+14h] [ebp-34h] + void **v19; // [esp+18h] [ebp-30h] + char *v20; // [esp+1Ch] [ebp-2Ch] + char *v21; // [esp+1Ch] [ebp-2Ch] + char *v22; // [esp+20h] [ebp-28h] + void **v23; // [esp+20h] [ebp-28h] + char *v24; // [esp+24h] [ebp-24h] + unsigned int v25; // [esp+28h] [ebp-20h] + char *v26; // [esp+2Ch] [ebp-1Ch] + + v24 = (char *)this[1]; + v26 = (char *)*this; + v3 = -1227133513 * ((int)&v24[-*this] >> 2); + if ( v3 == 76695844 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = -1227133513 * ((int)&v24[-*this] >> 2); + if ( !v3 ) + v5 = 1; + v25 = v5 - 1227133513 * ((int)&v24[-*this] >> 2); + if ( __CFADD__(v5, v3) ) + goto LABEL_8; + v6 = 0; + if ( v25 ) + { + if ( v25 <= 0x4924924 ) + { +LABEL_9: + v6 = (char *)operator new((struct type_info *)(28 * v25), v17); + goto LABEL_10; + } +LABEL_8: + v25 = 76695844; + goto LABEL_9; + } +LABEL_10: + v7 = &v6[a2 - v26 + 4]; + *((_DWORD *)v7 - 1) = *a3; + std::string::basic_string(v7, (int)(a3 + 1)); + v8 = v26; + for ( i = v6; ; i = v21 ) + { + v10 = i + 28; + if ( a2 == v8 ) + break; + v21 = v10; + *((_DWORD *)v10 - 7) = *(_DWORD *)v8; + v14 = (void **)(v8 + 4); + v8 += 28; + v23 = v14; + std::string::basic_string((_DWORD *)v10 - 6, v14); + std::string::_M_dispose(v23); + } + v11 = (920350135 * ((unsigned int)(a2 - v26) >> 2)) & 0x3FFFFFFF; + v20 = &v26[28 * v11]; + v12 = v20; + v22 = &v6[28 * v11 + 28]; + v13 = v22; + while ( v24 != v12 ) + { + v18 = v13; + *(_DWORD *)v13 = *(_DWORD *)v12; + v15 = (void **)(v12 + 4); + v12 += 28; + v19 = v15; + std::string::basic_string((_DWORD *)v13 + 1, v15); + std::string::_M_dispose(v19); + v13 = v18 + 28; + } + if ( v26 ) + operator delete(v26); + result = 28 * v25; + *this = v6; + this[1] = &v22[28 * ((920350135 * ((unsigned int)(v24 - v20) >> 2)) & 0x3FFFFFFF)]; + this[2] = &v6[28 * v25]; + return result; +} +// 4DAE3F: variable 'v17' is possibly undefined + +//----- (004DAF78) -------------------------------------------------------- +_BYTE *__thiscall std::vector::push_back(_DWORD *this, _DWORD *a2) +{ + char *v3; // ecx + _DWORD *v4; // ecx + _BYTE *result; // eax + + v3 = (char *)this[1]; + if ( v3 == (char *)this[2] ) + return (_BYTE *)std::vector::_M_realloc_insert( + this, + v3, + a2); + v4 = v3 + 4; + *(v4 - 1) = *a2; + result = std::string::basic_string(v4, (int)(a2 + 1)); + this[1] += 28; + return result; +} + +//----- (004DAFC0) -------------------------------------------------------- +void *__thiscall std::vector::_M_realloc_insert( + void **this, + int a2, + WXML::DOMLib::Token *a3) +{ + int v3; // ebx + int v5; // eax + bool v6; // cf + unsigned int v7; // ebx + char *v8; // esi + int v9; // eax + void *result; // eax + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + int v12; // [esp+14h] [ebp-24h] + int v13; // [esp+18h] [ebp-20h] + void *v14; // [esp+1Ch] [ebp-1Ch] + + v12 = (int)this[1]; + v14 = *this; + v3 = -1227133513 * ((v12 - (int)*this) >> 4); + if ( v3 == 19173961 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = -1227133513 * ((v12 - (int)*this) >> 4); + if ( !v3 ) + v5 = 1; + v6 = __CFADD__(v5, v3); + v7 = v5 - 1227133513 * ((v12 - (int)*this) >> 4); + if ( v6 ) + goto LABEL_8; + v8 = 0; + if ( !v7 ) + goto LABEL_10; + if ( v7 > 0x1249249 ) +LABEL_8: + v7 = 19173961; + v8 = (char *)operator new((struct type_info *)(112 * v7), v11); +LABEL_10: + WXML::DOMLib::Token::Token((int)&v8[a2 - (_DWORD)v14], a3, (const WXML::DOMLib::Token *)v11); + v9 = std::__relocate_a_1>( + (int)v14, + a2, + (int)v8); + result = (void *)std::__relocate_a_1>( + a2, + v12, + v9 + 112); + if ( v14 ) + { + v13 = (int)result; + operator delete(v14); + result = (void *)v13; + } + *this = v8; + this[1] = result; + this[2] = &v8[112 * v7]; + return result; +} +// 4DB031: variable 'v11' is possibly undefined + +//----- (004DB0CC) -------------------------------------------------------- +_BYTE *__thiscall std::vector::push_back(int this, WXML::DOMLib::Token *a2) +{ + int v3; // ecx + _BYTE *result; // eax + const WXML::DOMLib::Token *v5; // [esp+4h] [ebp-14h] + + v3 = *(_DWORD *)(this + 4); + if ( v3 == *(_DWORD *)(this + 8) ) + return std::vector::_M_realloc_insert((void **)this, v3, a2); + result = WXML::DOMLib::Token::Token(v3, a2, v5); + *(_DWORD *)(this + 4) += 112; + return result; +} +// 4DB0E3: variable 'v5' is possibly undefined + +//----- (004DB108) -------------------------------------------------------- +int __thiscall std::vector::_M_realloc_insert( + void ***this, + char *a2, + volatile signed __int32 **a3) +{ + int v3; // esi + int v5; // eax + char *v6; // esi + void **v7; // ebx + char *i; // eax + char *v9; // eax + unsigned int v10; // ebx + char *v11; // ebx + char *j; // eax + void *v13; // edx + void **v14; // ecx + int result; // eax + void (__cdecl *v16)(void *); // [esp+4h] [ebp-44h] + char *v17; // [esp+18h] [ebp-30h] + void **v18; // [esp+1Ch] [ebp-2Ch] + char *v19; // [esp+20h] [ebp-28h] + char *v20; // [esp+20h] [ebp-28h] + char *v21; // [esp+24h] [ebp-24h] + unsigned int v22; // [esp+28h] [ebp-20h] + void **v23; // [esp+2Ch] [ebp-1Ch] + + v21 = (char *)this[1]; + v23 = *this; + v3 = -1431655765 * ((v21 - (char *)*this) >> 2); + if ( v3 == 178956970 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = -1431655765 * ((v21 - (char *)*this) >> 2); + if ( !v3 ) + v5 = 1; + v22 = v5 - 1431655765 * ((v21 - (char *)*this) >> 2); + if ( __CFADD__(v5, v3) ) + goto LABEL_8; + v6 = 0; + if ( v22 ) + { + if ( v22 <= 0xAAAAAAA ) + { +LABEL_9: + v6 = (char *)operator new((struct type_info *)(12 * v22), v16); + goto LABEL_10; + } +LABEL_8: + v22 = 178956970; + goto LABEL_9; + } +LABEL_10: + v7 = v23; + std::vector>::vector((volatile signed __int32 **)&v6[a2 - (char *)v23], a3); + for ( i = v6; ; i = v20 ) + { + v9 = i + 12; + if ( a2 == (char *)v7 ) + break; + v13 = *v7; + v14 = v7; + v20 = v9; + v7 += 3; + *((_DWORD *)v9 - 3) = v13; + *((_DWORD *)v9 - 2) = *(v7 - 2); + *((_DWORD *)v9 - 1) = *(v7 - 1); + *(v7 - 1) = 0; + *(v7 - 2) = 0; + *(v7 - 3) = 0; + std::vector>::~vector(v14); + } + v10 = (715827883 * ((unsigned int)(a2 - (char *)v23) >> 2)) & 0x3FFFFFFF; + v18 = &v23[3 * v10]; + v19 = &v6[12 * v10 + 12]; + v11 = v19; + for ( j = (char *)v18; v21 != j; j = v17 + 12 ) + { + v17 = j; + v11 += 12; + *((_DWORD *)v11 - 3) = *(_DWORD *)j; + *((_DWORD *)v11 - 2) = *((_DWORD *)j + 1); + *((_DWORD *)v11 - 1) = *((_DWORD *)j + 2); + *((_DWORD *)j + 2) = 0; + *((_DWORD *)j + 1) = 0; + *(_DWORD *)j = 0; + std::vector>::~vector((void **)j); + } + if ( v23 ) + operator delete(v23); + result = 12 * v22; + *this = (void **)v6; + this[1] = (void **)&v19[12 * ((715827883 * ((unsigned int)(v21 - (char *)v18) >> 2)) & 0x3FFFFFFF)]; + this[2] = (void **)&v6[12 * v22]; + return result; +} +// 4DB17F: variable 'v16' is possibly undefined + +//----- (004DB2C0) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::vector::push_back(int this, volatile signed __int32 **a2) +{ + char *v3; // ecx + volatile signed __int32 *result; // eax + + v3 = *(char **)(this + 4); + if ( v3 == *(char **)(this + 8) ) + return (volatile signed __int32 *)std::vector::_M_realloc_insert( + (void ***)this, + v3, + a2); + result = std::vector>::vector((volatile signed __int32 **)v3, a2); + *(_DWORD *)(this + 4) += 12; + return result; +} + +//----- (004DB2FC) -------------------------------------------------------- +_DWORD *__thiscall std::vector::_M_realloc_insert( + char **this, + char *a2, + WXML::EXPRLib::Token *a3) +{ + int v3; // ebx + int v5; // eax + bool v6; // cf + unsigned int v7; // ebx + int v8; // edx + char *v9; // esi + _DWORD *v10; // eax + _DWORD *result; // eax + void (__cdecl *v12)(void *); // [esp+4h] [ebp-34h] + char *v13; // [esp+18h] [ebp-20h] + _DWORD *v14; // [esp+18h] [ebp-20h] + char *v15; // [esp+1Ch] [ebp-1Ch] + + v13 = this[1]; + v15 = *this; + v3 = -1227133513 * ((v13 - *this) >> 2); + if ( v3 == 76695844 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = -1227133513 * ((v13 - *this) >> 2); + if ( !v3 ) + v5 = 1; + v6 = __CFADD__(v5, v3); + v7 = v5 - 1227133513 * ((v13 - *this) >> 2); + v8 = a2 - v15; + if ( v6 ) + goto LABEL_8; + v9 = 0; + if ( !v7 ) + goto LABEL_10; + if ( v7 > 0x4924924 ) +LABEL_8: + v7 = 76695844; + v9 = (char *)operator new((struct type_info *)(28 * v7), v12); +LABEL_10: + WXML::EXPRLib::Token::Token(v8, &v9[a2 - v15], a3, (const WXML::EXPRLib::Token *)v12); + v10 = std::__relocate_a_1>( + v15, + a2, + v9); + result = std::__relocate_a_1>( + a2, + v13, + v10 + 7); + if ( v15 ) + { + v14 = result; + operator delete(v15); + result = v14; + } + *this = v9; + this[1] = (char *)result; + this[2] = &v9[28 * v7]; + return result; +} +// 4DB36D: variable 'v12' is possibly undefined +// 4DB37F: variable 'v8' is possibly undefined + +//----- (004DB3D0) -------------------------------------------------------- +unsigned int __thiscall std::vector::_M_realloc_insert( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // ebx + int v5; // eax + char *v6; // ebx + char *v7; // edi + int v8; // edx + unsigned int result; // eax + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + _DWORD *v11; // [esp+8h] [ebp-30h] + void **v12; // [esp+14h] [ebp-24h] + char *v13; // [esp+18h] [ebp-20h] + unsigned int v14; // [esp+1Ch] [ebp-1Ch] + + v12 = (void **)this[1]; + v13 = *this; + v3 = ((char *)v12 - *this) >> 6; + if ( v3 == 0x1FFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = ((char *)v12 - *this) >> 6; + if ( !v3 ) + v5 = 1; + v14 = v5 + v3; + if ( __CFADD__(v5, v3) ) + goto LABEL_8; + v6 = 0; + if ( v14 ) + { + if ( v14 <= 0x1FFFFFF ) + { +LABEL_9: + v6 = (char *)operator new((struct type_info *)(v14 << 6), v10); + goto LABEL_10; + } +LABEL_8: + v14 = 0x1FFFFFF; + goto LABEL_9; + } +LABEL_10: + night::ns_sourcemap::ns_sourcemap(&v6[a2 - v13], a3); + v11 = std::__uninitialized_copy::__uninit_copy(v13, a2, v6) + + 16; + v7 = (char *)std::__uninitialized_copy::__uninit_copy( + a2, + v12, + v11); + std::_Destroy_aux::__destroy(v8, (void **)v13, v12); + std::_Vector_base::_M_deallocate(v13); + *this = v6; + this[1] = v7; + result = v14 << 6; + this[2] = &v6[64 * v14]; + return result; +} +// 4DB443: variable 'v10' is possibly undefined +// 4DB4A3: variable 'v8' is possibly undefined + +//----- (004DB50C) -------------------------------------------------------- +int __thiscall std::vector::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= (this[1] - *this) >> 6 ) + std::__throw_out_of_range_fmt( + "vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", + a2, + (this[1] - *this) >> 6); + return *this + (a2 << 6); +} + +//----- (004DB548) -------------------------------------------------------- +int __thiscall std::vector::push_back(char **this, _DWORD *a2) +{ + char *v3; // ecx + int result; // eax + + v3 = this[1]; + if ( v3 == this[2] ) + return std::vector::_M_realloc_insert(this, v3, a2); + result = night::ns_sourcemap::ns_sourcemap(v3, a2); + this[1] += 64; + return result; +} + +//----- (004DB584) -------------------------------------------------------- +void __thiscall std::vector::emplace_back(void ***this, _DWORD *a2) +{ + void **v3; // esi + int v4; // edi + _DWORD *v5; // eax + char *v6; // [esp+10h] [ebp-28h] + void **v7; // [esp+14h] [ebp-24h] + void **v8; // [esp+18h] [ebp-20h] + void **v9; // [esp+1Ch] [ebp-1Ch] + void **v10; // [esp+1Ch] [ebp-1Ch] + + v9 = this[1]; + if ( v9 == this[2] ) + { + v3 = 0; + v4 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); + v8 = *this; + v7 = this[1]; + v6 = (char *)((char *)v9 - (char *)*this); + if ( v4 ) + v3 = (void **)__gnu_cxx::new_allocator::allocate(v4); + std::string::basic_string(&v6[(_DWORD)v3], a2); + v5 = std::__relocate_a_1>(v8, v9, v3); + v10 = (void **)std::__relocate_a_1>(v9, v7, v5 + 6); + std::_Vector_base::_M_deallocate(v8); + *this = v3; + this[2] = &v3[6 * v4]; + this[1] = v10; + } + else + { + std::string::basic_string(v9, a2); + this[1] += 6; + } +} + +//----- (004DB640) -------------------------------------------------------- +#error "4DB6E0: call analysis failed (funcsize=70)" + +//----- (004DB71C) -------------------------------------------------------- +char *__thiscall std::vector::_M_realloc_insert(_DWORD *this, char *a2, _DWORD *a3) +{ + char *v3; // esi + int v4; // eax + int v6; // edx + bool v7; // cf + unsigned int v8; // eax + void **v9; // ebx + _DWORD *i; // ecx + unsigned int v11; // ebx + _DWORD *v12; // edx + void **j; // ebx + void **v14; // ecx + void **v15; // ecx + _DWORD *v16; // ebx + char *result; // eax + void (__cdecl *v18)(void *); // [esp+4h] [ebp-44h] + _DWORD *v19; // [esp+18h] [ebp-30h] + void **v20; // [esp+1Ch] [ebp-2Ch] + char *v21; // [esp+20h] [ebp-28h] + _DWORD *v22; // [esp+24h] [ebp-24h] + _DWORD *v23; // [esp+24h] [ebp-24h] + int v24; // [esp+28h] [ebp-20h] + _DWORD *v25; // [esp+2Ch] [ebp-1Ch] + + v3 = (char *)*this; + v21 = (char *)this[1]; + v4 = -1431655765 * ((int)&v21[-*this] >> 3); + if ( v4 == 89478485 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v6 = -1431655765 * ((v21 - v3) >> 3); + if ( !v4 ) + v6 = 1; + v7 = __CFADD__(v6, v4); + v8 = v6 - 1431655765 * ((v21 - v3) >> 3); + v24 = v8; + if ( v7 ) + goto LABEL_8; + v25 = 0; + if ( v8 ) + { + if ( v8 <= 0x5555555 ) + { +LABEL_9: + v25 = operator new((struct type_info *)(24 * v24), v18); + goto LABEL_10; + } +LABEL_8: + v24 = 89478485; + goto LABEL_9; + } +LABEL_10: + v9 = (void **)v3; + std::string::basic_string((_DWORD *)((char *)v25 + a2 - v3), a3); + for ( i = v25; ; i = v22 ) + { + v22 = i + 6; + if ( a2 == (char *)v9 ) + break; + std::string::basic_string(i, v9); + v14 = v9; + v9 += 6; + std::string::_M_dispose(v14); + } + v11 = (178956971 * ((unsigned int)(a2 - v3) >> 3)) & 0x1FFFFFFF; + v23 = &v25[6 * v11 + 6]; + v12 = v23; + v20 = (void **)&v3[24 * v11]; + for ( j = v20; j != (void **)v21; j += 6 ) + { + v19 = v12; + std::string::basic_string(v12, j); + v15 = j; + std::string::_M_dispose(v15); + v12 = v19 + 6; + } + v16 = &v23[6 * ((178956971 * ((unsigned int)((char *)j - (char *)v20) >> 3)) & 0x1FFFFFFF)]; + if ( v3 ) + operator delete(v3); + this[1] = v16; + *this = v25; + result = (char *)&v25[6 * v24]; + this[2] = result; + return result; +} +// 4DB78C: variable 'v18' is possibly undefined + +//----- (004DB864) -------------------------------------------------------- +_BYTE *__thiscall std::vector::push_back(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + _BYTE *result; // eax + + v3 = (_DWORD *)this[1]; + if ( v3 == (_DWORD *)this[2] ) + return (_BYTE *)std::vector::_M_realloc_insert(v3, a2); + result = std::string::basic_string(v3, a2); + this[1] += 24; + return result; +} +// 4DB640: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); + +//----- (004DB8A0) -------------------------------------------------------- +int __thiscall std::vector::operator=(int this, int *a2) +{ + int v3; // ecx + int v4; // edx + _DWORD *v5; // ebx + _DWORD *v6; // eax + int v7; // edx + int v8; // ebx + void **v9; // esi + int v10; // ebx + int v11; // ecx + int v12; // eax + void **i; // ebx + void **v14; // ecx + int v15; // ebx + _DWORD *v16; // esi + int v18; // [esp+1Ch] [ebp-2Ch] + void **v19; // [esp+20h] [ebp-28h] + int v20; // [esp+24h] [ebp-24h] + void **v21; // [esp+28h] [ebp-20h] + int v22; // [esp+28h] [ebp-20h] + int v23; // [esp+28h] [ebp-20h] + int v24; // [esp+2Ch] [ebp-1Ch] + + if ( a2 != (int *)this ) + { + v3 = a2[1]; + v24 = *a2; + v20 = v3 - *a2; + v4 = -1431655765 * (v20 >> 3); + v21 = *(void ***)this; + if ( -1431655765 * ((*(_DWORD *)(this + 8) - *(_DWORD *)this) >> 3) >= (unsigned int)v4 ) + { + v19 = *(void ***)(this + 4); + v8 = -1431655765 * (((char *)v19 - (char *)v21) >> 3); + if ( v4 > (unsigned int)v8 ) + { + while ( v8 > 0 ) + { + --v8; + std::string::_M_assign((int)v21, v24); + v24 += 24; + v21 += 6; + } + v23 = a2[1]; + v15 = *a2 + *(_DWORD *)(this + 4) - *(_DWORD *)this; + v16 = *(_DWORD **)(this + 4); + while ( v23 != v15 ) + { + std::string::basic_string(v16, v15); + v15 += 24; + v16 += 6; + } + } + else + { + v9 = *(void ***)this; + v10 = -1431655765 * ((v3 - v24) >> 3); + while ( v10 > 0 ) + { + v11 = (int)v9; + v18 = v4; + v9 += 6; + --v10; + std::string::_M_assign(v11, v24); + v24 += 24; + v4 = v18; + } + v12 = v4; + if ( v4 < 0 ) + v12 = 0; + for ( i = &v21[6 * v12]; v19 != i; i += 6 ) + { + v14 = i; + std::string::_M_dispose(v14); + } + } + } + else + { + v5 = 0; + if ( v4 ) + { + v22 = a2[1]; + v6 = __gnu_cxx::new_allocator::allocate(-1431655765 * ((v3 - v24) >> 3)); + v3 = v22; + v5 = v6; + } + std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator>,std::string*>( + v24, + v3, + v5); + std::_Destroy_aux::__destroy(v7, *(void ***)this, *(void ***)(this + 4)); + std::_Vector_base::_M_deallocate(*(void **)this); + *(_DWORD *)this = v5; + *(_DWORD *)(this + 8) = (char *)v5 + v20; + } + *(_DWORD *)(this + 4) = *(_DWORD *)this + v20; + } + return this; +} +// 4DB91B: variable 'v7' is possibly undefined + +//----- (004DBA44) -------------------------------------------------------- +char *__thiscall std::vector::_M_realloc_insert( + void **this, + _BYTE *a2, + _DWORD *a3) +{ + _BYTE *v3; // edi + int v4; // eax + int v5; // edx + bool v6; // cf + unsigned int v7; // eax + signed int v8; // esi + char *v9; // ebx + unsigned int v10; // eax + char *v11; // edx + char *v12; // esi + char *result; // eax + void (__cdecl *v14)(void *); // [esp+4h] [ebp-34h] + _BYTE *Src; // [esp+18h] [ebp-20h] + int v17; // [esp+1Ch] [ebp-1Ch] + + v3 = this[1]; + Src = *this; + v4 = (v3 - (_BYTE *)*this) >> 2; + if ( v4 == 0x1FFFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = (v3 - (_BYTE *)*this) >> 2; + if ( !v4 ) + v5 = 1; + v6 = __CFADD__(v5, v4); + v7 = v5 + v4; + v17 = v7; + v8 = a2 - Src; + if ( v6 ) + goto LABEL_8; + v9 = 0; + if ( !v7 ) + goto LABEL_10; + if ( v7 > 0x1FFFFFFF ) +LABEL_8: + v17 = 0x1FFFFFFF; + v9 = (char *)operator new((struct type_info *)(4 * v17), v14); +LABEL_10: + *(_DWORD *)&v9[v8] = *a3; + if ( v8 > 0 ) + memmove(v9, Src, v8); + v10 = v3 - a2; + v11 = &v9[v8 + 4]; + if ( v3 - a2 > 0 ) + qmemcpy(v11, a2, v10); + v12 = &v11[v10]; + if ( Src ) + operator delete(Src); + *this = v9; + this[1] = v12; + result = &v9[4 * v17]; + this[2] = result; + return result; +} +// 4DBAAF: variable 'v14' is possibly undefined + +//----- (004DBB20) -------------------------------------------------------- +char *__thiscall std::vector::push_back(int this, _DWORD *a2) +{ + int v2; // eax + char *result; // eax + + v2 = *(_DWORD *)(this + 4); + if ( v2 == *(_DWORD *)(this + 8) ) + return std::vector::_M_realloc_insert( + (void **)this, + *(_BYTE **)(this + 4), + a2); + result = (char *)(v2 + 4); + *((_DWORD *)result - 1) = *a2; + *(_DWORD *)(this + 4) = result; + return result; +} + +//----- (004DBB50) -------------------------------------------------------- +char *__thiscall std::vector::emplace_back(void **this, _DWORD *a2) +{ + char *v3; // edi + char *result; // eax + void (__cdecl *v5)(void *); // edx + void *v6; // esi + int v7; // eax + int v8; // edi + char *v9; // [esp+10h] [ebp-28h] + int v10; // [esp+14h] [ebp-24h] + void *v11; // [esp+18h] [ebp-20h] + unsigned int v12; // [esp+1Ch] [ebp-1Ch] + + v3 = (char *)this[1]; + if ( v3 == this[2] ) + { + v12 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); + v11 = *this; + v10 = (int)this[1]; + v9 = (char *)(v3 - (_BYTE *)*this); + if ( v12 ) + { + if ( v12 > 0x1FFFFFFF ) + std::__throw_bad_alloc(); + v6 = operator new((struct type_info *)(4 * v12), v5); + } + else + { + v6 = 0; + } + *(_DWORD *)&v9[(_DWORD)v6] = *a2; + v7 = std::__relocate_a_1(v6, v11, (int)v3); + v8 = std::__relocate_a_1((void *)(v7 + 4), v3, v10); + std::_Vector_base::_M_deallocate(v11); + *this = v6; + this[1] = (void *)v8; + result = (char *)v6 + 4 * v12; + this[2] = result; + } + else + { + *(_DWORD *)v3 = *a2; + result = v3 + 4; + this[1] = v3 + 4; + } + return result; +} +// 4DBBBE: variable 'v5' is possibly undefined + +//----- (004DBC10) -------------------------------------------------------- +int __thiscall std::vector::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= (this[1] - *this) >> 2 ) + std::__throw_out_of_range_fmt( + "vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", + a2, + (this[1] - *this) >> 2); + return *this + 4 * a2; +} + +//----- (004DBC48) -------------------------------------------------------- +char *__thiscall std::vector::push_back(void **this, _DWORD *a2) +{ + char *v3; // edi + char *result; // eax + void (__cdecl *v5)(void *); // edx + void *v6; // esi + int v7; // eax + int v8; // edi + char *v9; // [esp+10h] [ebp-28h] + int v10; // [esp+14h] [ebp-24h] + void *v11; // [esp+18h] [ebp-20h] + unsigned int v12; // [esp+1Ch] [ebp-1Ch] + + v3 = (char *)this[1]; + if ( v3 == this[2] ) + { + v12 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); + v11 = *this; + v10 = (int)this[1]; + v9 = (char *)(v3 - (_BYTE *)*this); + if ( v12 ) + { + if ( v12 > 0x1FFFFFFF ) + std::__throw_bad_alloc(); + v6 = operator new((struct type_info *)(4 * v12), v5); + } + else + { + v6 = 0; + } + *(_DWORD *)&v9[(_DWORD)v6] = *a2; + v7 = std::__relocate_a_1(v6, v11, (int)v3); + v8 = std::__relocate_a_1((void *)(v7 + 4), v3, v10); + std::_Vector_base::_M_deallocate(v11); + *this = v6; + this[1] = (void *)v8; + result = (char *)v6 + 4 * v12; + this[2] = result; + } + else + { + *(_DWORD *)v3 = *a2; + result = v3 + 4; + this[1] = v3 + 4; + } + return result; +} +// 4DBCB6: variable 'v5' is possibly undefined + +//----- (004DBD08) -------------------------------------------------------- +char *__thiscall std::vector>>::_M_realloc_insert> const&>( + void **this, + _BYTE *a2, + _DWORD *a3) +{ + _BYTE *v3; // edi + int v4; // eax + int v5; // edx + bool v6; // cf + unsigned int v7; // eax + signed int v8; // esi + char *v9; // ebx + unsigned int v10; // eax + char *v11; // edx + char *v12; // esi + char *result; // eax + void (__cdecl *v14)(void *); // [esp+4h] [ebp-34h] + _BYTE *Src; // [esp+18h] [ebp-20h] + int v17; // [esp+1Ch] [ebp-1Ch] + + v3 = this[1]; + Src = *this; + v4 = (v3 - (_BYTE *)*this) >> 2; + if ( v4 == 0x1FFFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = (v3 - (_BYTE *)*this) >> 2; + if ( !v4 ) + v5 = 1; + v6 = __CFADD__(v5, v4); + v7 = v5 + v4; + v17 = v7; + v8 = a2 - Src; + if ( v6 ) + goto LABEL_8; + v9 = 0; + if ( !v7 ) + goto LABEL_10; + if ( v7 > 0x1FFFFFFF ) +LABEL_8: + v17 = 0x1FFFFFFF; + v9 = (char *)operator new((struct type_info *)(4 * v17), v14); +LABEL_10: + *(_DWORD *)&v9[v8] = *a3; + if ( v8 > 0 ) + memmove(v9, Src, v8); + v10 = v3 - a2; + v11 = &v9[v8 + 4]; + if ( v3 - a2 > 0 ) + qmemcpy(v11, a2, v10); + v12 = &v11[v10]; + if ( Src ) + operator delete(Src); + *this = v9; + this[1] = v12; + result = &v9[4 * v17]; + this[2] = result; + return result; +} +// 4DBD73: variable 'v14' is possibly undefined + +//----- (004DBDE4) -------------------------------------------------------- +int __thiscall std::vector>>::at( + _DWORD *this, + unsigned int a2) +{ + if ( a2 >= (this[1] - *this) >> 2 ) + std::__throw_out_of_range_fmt( + "vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)", + a2, + (this[1] - *this) >> 2); + return *this + 4 * a2; +} + +//----- (004DBE1C) -------------------------------------------------------- +char *__thiscall std::vector>>::push_back( + int this, + _DWORD *a2) +{ + int v2; // eax + char *result; // eax + + v2 = *(_DWORD *)(this + 4); + if ( v2 == *(_DWORD *)(this + 8) ) + return std::vector>>::_M_realloc_insert> const&>( + (void **)this, + *(_BYTE **)(this + 4), + a2); + result = (char *)(v2 + 4); + *((_DWORD *)result - 1) = *a2; + *(_DWORD *)(this + 4) = result; + return result; +} + +//----- (004DBE4C) -------------------------------------------------------- +char **__thiscall std::vector>::_M_realloc_insert>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // edi + int v4; // eax + bool v5; // cf + unsigned int v6; // edi + char *v7; // esi + int v8; // edx + _DWORD *v9; // ebx + void **v10; // esi + void **v11; // ebx + int v12; // edx + _DWORD *v13; // eax + _DWORD *v14; // ecx + void **v15; // ecx + int v16; // edx + void *v17; // ecx + void **v18; // ecx + int v19; // ebx + char **result; // eax + void (__cdecl *v21)(void *); // [esp+4h] [ebp-44h] + int v22; // [esp+18h] [ebp-30h] + _DWORD *v23; // [esp+1Ch] [ebp-2Ch] + void **v24; // [esp+20h] [ebp-28h] + char *v26; // [esp+28h] [ebp-20h] + char *v27; // [esp+2Ch] [ebp-1Ch] + + v24 = (void **)this[1]; + v26 = *this; + v3 = ((char *)v24 - *this) >> 5; + if ( v3 == 0x3FFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v4 = ((char *)v24 - *this) >> 5; + if ( !v3 ) + v4 = 1; + v5 = __CFADD__(v4, v3); + v6 = v4 + v3; + if ( v5 ) + goto LABEL_8; + v27 = 0; + if ( v6 ) + { + if ( v6 <= 0x3FFFFFF ) + { +LABEL_9: + v27 = (char *)operator new((struct type_info *)(32 * v6), v21); + goto LABEL_10; + } +LABEL_8: + v6 = 0x3FFFFFF; + goto LABEL_9; + } +LABEL_10: + v7 = &v27[a2 - v26]; + std::string::basic_string(v7, a3); + v8 = a3[7]; + v9 = v27; + *((_DWORD *)v7 + 6) = a3[6]; + *((_DWORD *)v7 + 7) = v8; + v10 = (void **)v26; + while ( a2 != (char *)v10 ) + { + v14 = v9; + v9 += 8; + std::string::basic_string(v14, v10); + v15 = v10; + v10 += 8; + v16 = (int)*(v10 - 1); + *(v9 - 2) = *(v10 - 2); + *(v9 - 1) = v16; + std::string::_M_dispose(v15); + } + v11 = v10; + v12 = (int)&v27[(char *)v10 - v26 + 32]; + v13 = (_DWORD *)v12; + while ( v11 != v24 ) + { + v23 = v13; + v22 = v12; + std::string::basic_string(v13, v11); + v17 = v11[7]; + v23[6] = v11[6]; + v23[7] = v17; + v18 = v11; + v11 += 8; + std::string::_M_dispose(v18); + v12 = v22; + v13 = v23 + 8; + } + v19 = v12 + (char *)v11 - (char *)v10; + if ( v26 ) + operator delete(v26); + this[1] = (char *)v19; + *this = v27; + result = this; + this[2] = &v27[32 * v6]; + return result; +} +// 4DBEBF: variable 'v21' is possibly undefined + +//----- (004DBF98) -------------------------------------------------------- +char *__thiscall std::vector>::emplace_back>( + _DWORD *this, + _DWORD *a2) +{ + char *v3; // ecx + char *result; // eax + + v3 = (char *)this[1]; + if ( v3 == (char *)this[2] ) + return std::vector>::_M_realloc_insert>( + this, + v3, + a2); + result = (char *)std::pair::pair(v3, a2); + this[1] += 136; + return result; +} + +//----- (004DBFD8) -------------------------------------------------------- +char *__thiscall std::vector>::_M_realloc_insert>( + _DWORD *this, + char *a2, + _DWORD *a3) +{ + char *v3; // esi + int v4; // eax + int v6; // edx + bool v7; // cf + unsigned int v8; // eax + void **v9; // ebx + _DWORD *i; // ecx + unsigned int v11; // ebx + _DWORD *v12; // edx + void **j; // ebx + void **v14; // ecx + void **v15; // ecx + _DWORD *v16; // ebx + char *result; // eax + void (__cdecl *v18)(void *); // [esp+4h] [ebp-44h] + _DWORD *v19; // [esp+18h] [ebp-30h] + void **v20; // [esp+1Ch] [ebp-2Ch] + char *v21; // [esp+20h] [ebp-28h] + _DWORD *v22; // [esp+24h] [ebp-24h] + _DWORD *v23; // [esp+24h] [ebp-24h] + int v24; // [esp+28h] [ebp-20h] + _DWORD *v25; // [esp+2Ch] [ebp-1Ch] + + v3 = (char *)*this; + v21 = (char *)this[1]; + v4 = -252645135 * ((int)&v21[-*this] >> 3); + if ( v4 == 15790320 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v6 = -252645135 * ((v21 - v3) >> 3); + if ( !v4 ) + v6 = 1; + v7 = __CFADD__(v6, v4); + v8 = v6 - 252645135 * ((v21 - v3) >> 3); + v24 = v8; + if ( v7 ) + goto LABEL_8; + v25 = 0; + if ( v8 ) + { + if ( v8 <= 0xF0F0F0 ) + { +LABEL_9: + v25 = operator new((struct type_info *)(136 * v24), v18); + goto LABEL_10; + } +LABEL_8: + v24 = 15790320; + goto LABEL_9; + } +LABEL_10: + v9 = (void **)v3; + std::pair::pair((_DWORD *)((char *)v25 + a2 - v3), a3); + for ( i = v25; ; i = v22 ) + { + v22 = i + 34; + if ( a2 == (char *)v9 ) + break; + std::pair::pair(i, v9); + v14 = v9; + v9 += 34; + std::pair::~pair(v14); + } + v11 = (284225777 * ((unsigned int)(a2 - v3) >> 3)) & 0x1FFFFFFF; + v23 = &v25[34 * v11 + 34]; + v12 = v23; + v20 = (void **)&v3[136 * v11]; + for ( j = v20; j != (void **)v21; j += 34 ) + { + v19 = v12; + std::pair::pair(v12, j); + v15 = j; + std::pair::~pair(v15); + v12 = v19 + 34; + } + v16 = &v23[34 * ((284225777 * ((unsigned int)((char *)j - (char *)v20) >> 3)) & 0x1FFFFFFF)]; + if ( v3 ) + operator delete(v3); + this[1] = v16; + *this = v25; + result = (char *)&v25[34 * v24]; + this[2] = result; + return result; +} +// 4DC04B: variable 'v18' is possibly undefined + +//----- (004DC13C) -------------------------------------------------------- +int __thiscall std::vector>::emplace_back>(int this, _DWORD *a2) +{ + int v3; // esi + int result; // eax + + v3 = *(_DWORD *)(this + 4); + if ( v3 == *(_DWORD *)(this + 8) ) + return std::vector>::_M_realloc_insert>( + (char **)this, + (char *)v3, + a2); + std::string::basic_string((_DWORD *)v3, a2); + result = a2[6]; + *(_DWORD *)(v3 + 24) = result; + *(_DWORD *)(this + 4) += 28; + return result; +} + +//----- (004DC184) -------------------------------------------------------- +int __thiscall std::vector>::_M_realloc_insert>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // eax + int v5; // esi + BOOL v6; // edx + unsigned int v7; // esi + void **v8; // ebx + _DWORD *v9; // eax + unsigned int v10; // ebx + _DWORD *v11; // edx + void **i; // ebx + void **v13; // ecx + void **v14; // ecx + char *v15; // ebx + int result; // eax + void (__cdecl *v17)(void *); // [esp+4h] [ebp-44h] + _DWORD *v18; // [esp+18h] [ebp-30h] + void **v19; // [esp+1Ch] [ebp-2Ch] + _DWORD *v20; // [esp+20h] [ebp-28h] + _DWORD *v21; // [esp+20h] [ebp-28h] + _DWORD *v22; // [esp+20h] [ebp-28h] + void **v23; // [esp+24h] [ebp-24h] + _DWORD *v24; // [esp+28h] [ebp-20h] + char *v25; // [esp+2Ch] [ebp-1Ch] + + v23 = (void **)this[1]; + v25 = *this; + v3 = -1227133513 * (((char *)v23 - *this) >> 2); + if ( v3 == 76695844 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = -1227133513 * (((char *)v23 - v25) >> 2); + if ( !v3 ) + v5 = 1; + v6 = __CFADD__(v5, v3); + v7 = v5 - 1227133513 * (((char *)v23 - v25) >> 2); + if ( v6 ) + goto LABEL_8; + v24 = 0; + if ( v7 ) + { + if ( v7 <= 0x4924924 ) + { +LABEL_9: + v24 = operator new((struct type_info *)(28 * v7), v17); + goto LABEL_10; + } +LABEL_8: + v7 = 76695844; + goto LABEL_9; + } +LABEL_10: + v20 = (_DWORD *)((char *)v24 + a2 - v25); + std::string::basic_string(v20, a3); + v8 = (void **)v25; + v20[6] = a3[6]; + v9 = v24; + while ( a2 != (char *)v8 ) + { + v22 = v9; + std::string::basic_string(v9, v8); + v13 = v8; + v8 += 7; + v22[6] = *(v8 - 1); + std::string::_M_dispose(v13); + v9 = v22 + 7; + } + v10 = (920350135 * ((unsigned int)(a2 - v25) >> 2)) & 0x3FFFFFFF; + v19 = (void **)&v25[28 * v10]; + v21 = &v24[7 * v10 + 7]; + v11 = v21; + for ( i = v19; i != v23; i += 7 ) + { + v18 = v11; + std::string::basic_string(v11, i); + v18[6] = i[6]; + v14 = i; + std::string::_M_dispose(v14); + v11 = v18 + 7; + } + v15 = (char *)&v21[7 * ((920350135 * ((unsigned int)((char *)i - (char *)v19) >> 2)) & 0x3FFFFFFF)]; + if ( v25 ) + operator delete(v25); + this[1] = v15; + *this = (char *)v24; + result = 28 * v7; + this[2] = (char *)&v24[7 * v7]; + return result; +} +// 4DC1FE: variable 'v17' is possibly undefined + +//----- (004DC2FC) -------------------------------------------------------- +int __thiscall std::vector>::_M_realloc_insert>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // eax + int v5; // esi + bool v6; // cf + unsigned int v7; // eax + int v8; // esi + char *v9; // ebx + char *v10; // eax + char *v11; // ebx + char *v12; // eax + unsigned int v13; // ebx + char *v14; // eax + char *v15; // ebx + void **v16; // edx + void **v17; // edx + char *v18; // ebx + int result; // eax + void (__cdecl *v20)(void *); // [esp+4h] [ebp-44h] + char *v21; // [esp+14h] [ebp-34h] + void **v22; // [esp+18h] [ebp-30h] + char *v23; // [esp+1Ch] [ebp-2Ch] + char *v24; // [esp+1Ch] [ebp-2Ch] + char *v25; // [esp+20h] [ebp-28h] + void **v26; // [esp+20h] [ebp-28h] + char *v27; // [esp+24h] [ebp-24h] + char *v28; // [esp+28h] [ebp-20h] + char *v29; // [esp+2Ch] [ebp-1Ch] + + v27 = this[1]; + v29 = *this; + v3 = -1227133513 * ((v27 - *this) >> 2); + if ( v3 == 76695844 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = -1227133513 * ((v27 - v29) >> 2); + if ( !v3 ) + v5 = 1; + v6 = __CFADD__(v5, v3); + v7 = v5 - 1227133513 * ((v27 - v29) >> 2); + v8 = v7; + if ( v6 ) + goto LABEL_8; + v28 = 0; + if ( v7 ) + { + if ( v7 <= 0x4924924 ) + { +LABEL_9: + v28 = (char *)operator new((struct type_info *)(28 * v8), v20); + goto LABEL_10; + } +LABEL_8: + v8 = 76695844; + goto LABEL_9; + } +LABEL_10: + v9 = &v28[a2 - v29]; + *(_DWORD *)v9 = *a3; + std::string::basic_string((_DWORD *)v9 + 1, a3 + 1); + v10 = v28; + v11 = v29; + while ( 1 ) + { + v12 = v10 + 28; + if ( a2 == v11 ) + break; + v24 = v12; + *((_DWORD *)v12 - 7) = *(_DWORD *)v11; + v16 = (void **)(v11 + 4); + v11 += 28; + v26 = v16; + std::string::basic_string((_DWORD *)v12 - 6, v16); + std::string::_M_dispose(v26); + v10 = v24; + } + v13 = (920350135 * ((unsigned int)(a2 - v29) >> 2)) & 0x3FFFFFFF; + v23 = &v29[28 * v13]; + v25 = &v28[28 * v13 + 28]; + v14 = v25; + v15 = v23; + while ( v15 != v27 ) + { + v21 = v14; + *(_DWORD *)v14 = *(_DWORD *)v15; + v17 = (void **)(v15 + 4); + v15 += 28; + v22 = v17; + std::string::basic_string((_DWORD *)v14 + 1, v17); + std::string::_M_dispose(v22); + v14 = v21 + 28; + } + v18 = &v25[28 * ((920350135 * ((unsigned int)(v15 - v23) >> 2)) & 0x3FFFFFFF)]; + if ( v29 ) + operator delete(v29); + this[1] = v18; + *this = v28; + result = 28 * v8; + this[2] = &v28[28 * v8]; + return result; +} +// 4DC36F: variable 'v20' is possibly undefined + +//----- (004DC478) -------------------------------------------------------- +char *__thiscall std::vector::_M_realloc_insert(void **this, _BYTE *a2, _DWORD *a3) +{ + _BYTE *v3; // edi + int v4; // eax + int v5; // edx + bool v6; // cf + unsigned int v7; // eax + signed int v8; // esi + char *v9; // ebx + unsigned int v10; // eax + char *v11; // edx + char *v12; // esi + char *result; // eax + void (__cdecl *v14)(void *); // [esp+4h] [ebp-34h] + _BYTE *Src; // [esp+18h] [ebp-20h] + int v17; // [esp+1Ch] [ebp-1Ch] + + v3 = this[1]; + Src = *this; + v4 = (v3 - (_BYTE *)*this) >> 2; + if ( v4 == 0x1FFFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = (v3 - (_BYTE *)*this) >> 2; + if ( !v4 ) + v5 = 1; + v6 = __CFADD__(v5, v4); + v7 = v5 + v4; + v17 = v7; + v8 = a2 - Src; + if ( v6 ) + goto LABEL_8; + v9 = 0; + if ( !v7 ) + goto LABEL_10; + if ( v7 > 0x1FFFFFFF ) +LABEL_8: + v17 = 0x1FFFFFFF; + v9 = (char *)operator new((struct type_info *)(4 * v17), v14); +LABEL_10: + *(_DWORD *)&v9[v8] = *a3; + if ( v8 > 0 ) + memmove(v9, Src, v8); + v10 = v3 - a2; + v11 = &v9[v8 + 4]; + if ( v3 - a2 > 0 ) + qmemcpy(v11, a2, v10); + v12 = &v11[v10]; + if ( Src ) + operator delete(Src); + *this = v9; + this[1] = v12; + result = &v9[4 * v17]; + this[2] = result; + return result; +} +// 4DC4E3: variable 'v14' is possibly undefined + +//----- (004DC554) -------------------------------------------------------- +char *__thiscall std::vector::push_back(int this, _DWORD *a2) +{ + int v2; // eax + char *result; // eax + + v2 = *(_DWORD *)(this + 4); + if ( v2 == *(_DWORD *)(this + 8) ) + return std::vector::_M_realloc_insert((void **)this, *(_BYTE **)(this + 4), a2); + result = (char *)(v2 + 4); + *((_DWORD *)result - 1) = *a2; + *(_DWORD *)(this + 4) = result; + return result; +} + +//----- (004DC590) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ecx + _DWORD *v6; // eax + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x44, v8); + *v4 = &off_538D0C; + v4[1] = 0; + v4[2] = 0; + v4[3] = 0; + *((_WORD *)v4 + 8) = 0; + *((_BYTE *)v4 + 18) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + *((_BYTE *)v4 + 67) = 0; + this[2] = v4; + } + *((_BYTE *)v4 + 17) = 46; + v5 = std::money_base::_S_atoms; + *(_BYTE *)(this[2] + 18) = 44; + v6 = (_DWORD *)this[2]; + v6[2] = &unk_52F13C; + v6[3] = 0; + v6[5] = &unk_52F13C; + v6[6] = 0; + v6[7] = &unk_52F13C; + v6[8] = 0; + v6[9] = &unk_52F13C; + v6[10] = 0; + v6[11] = 0; + v6[12] = std::money_base::_S_default_pattern; + *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; + for ( result = 0; result != 11; ++result ) + *(_BYTE *)(this[2] + result + 56) = v5[result]; + return result; +} +// 4DC637: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 533540: using guessed type int std::money_base::_S_default_pattern; +// 538D0C: using guessed type int (*off_538D0C)(); + +//----- (004DC6B0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_537E60; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537E60: using guessed type int (*off_537E60)(); + +//----- (004DC710) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_537E60; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 537E60: using guessed type int (*off_537E60)(); + +//----- (004DC770) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_537E60; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537E60: using guessed type int (*off_537E60)(); + +//----- (004DC7D0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_537E60; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537E60: using guessed type int (*off_537E60)(); + +//----- (004DC830) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_537E60; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 537E60: using guessed type int (*off_537E60)(); + +//----- (004DC890) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_537E60; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537E60: using guessed type int (*off_537E60)(); + +//----- (004DC8F0) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4DC8F7: variable 'v2' is possibly undefined + +//----- (004DC920) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_537E60; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4DC927: variable 'v1' is possibly undefined +// 537E60: using guessed type int (*off_537E60)(); + +//----- (004DC950) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ecx + _DWORD *v6; // eax + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x44, v8); + *v4 = &off_538D1C; + v4[1] = 0; + v4[2] = 0; + v4[3] = 0; + *((_WORD *)v4 + 8) = 0; + *((_BYTE *)v4 + 18) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + *((_BYTE *)v4 + 67) = 0; + this[2] = v4; + } + *((_BYTE *)v4 + 17) = 46; + v5 = std::money_base::_S_atoms; + *(_BYTE *)(this[2] + 18) = 44; + v6 = (_DWORD *)this[2]; + v6[2] = &unk_52F13C; + v6[3] = 0; + v6[5] = &unk_52F13C; + v6[6] = 0; + v6[7] = &unk_52F13C; + v6[8] = 0; + v6[9] = &unk_52F13C; + v6[10] = 0; + v6[11] = 0; + v6[12] = std::money_base::_S_default_pattern; + *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; + for ( result = 0; result != 11; ++result ) + *(_BYTE *)(this[2] + result + 56) = v5[result]; + return result; +} +// 4DC9F7: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 533540: using guessed type int std::money_base::_S_default_pattern; +// 538D1C: using guessed type int (*off_538D1C)(); + +//----- (004DCA70) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_537E94; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537E94: using guessed type int (*off_537E94)(); + +//----- (004DCAD0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_537E94; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 537E94: using guessed type int (*off_537E94)(); + +//----- (004DCB30) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_537E94; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537E94: using guessed type int (*off_537E94)(); + +//----- (004DCB90) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_537E94; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537E94: using guessed type int (*off_537E94)(); + +//----- (004DCBF0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_537E94; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 537E94: using guessed type int (*off_537E94)(); + +//----- (004DCC50) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_537E94; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537E94: using guessed type int (*off_537E94)(); + +//----- (004DCCB0) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4DCCB7: variable 'v2' is possibly undefined + +//----- (004DCCE0) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_537E94; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4DCCE7: variable 'v1' is possibly undefined +// 537E94: using guessed type int (*off_537E94)(); + +//----- (004DCD10) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ebx + int v6; // ecx + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x54, v8); + v4[1] = 0; + *v4 = &off_538D2C; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + *(_DWORD *)((char *)v4 + 18) = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + v4[14] = 0; + *((_BYTE *)v4 + 82) = 0; + this[2] = v4; + } + *(_DWORD *)((char *)v4 + 18) = 2883630; + v4[2] = &unk_52F13C; + v5 = std::money_base::_S_atoms; + v4[13] = std::money_base::_S_default_pattern; + v4[3] = 0; + v4[6] = &unk_52F13E; + v4[7] = 0; + v4[8] = &unk_52F13E; + v4[9] = 0; + v4[10] = &unk_52F13E; + v4[11] = 0; + v4[12] = 0; + *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; + v6 = this[2]; + for ( result = 0; result != 11; ++result ) + *(_WORD *)(v6 + 2 * result + 60) = v5[result]; + return result; +} +// 4DCDAF: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 533540: using guessed type int std::money_base::_S_default_pattern; +// 538D2C: using guessed type int (*off_538D2C)(); + +//----- (004DCE30) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_537EC8; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537EC8: using guessed type int (*off_537EC8)(); + +//----- (004DCE90) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_537EC8; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 537EC8: using guessed type int (*off_537EC8)(); + +//----- (004DCEF0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_537EC8; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537EC8: using guessed type int (*off_537EC8)(); + +//----- (004DCF50) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_537EC8; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537EC8: using guessed type int (*off_537EC8)(); + +//----- (004DCFB0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_537EC8; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 537EC8: using guessed type int (*off_537EC8)(); + +//----- (004DD010) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_537EC8; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537EC8: using guessed type int (*off_537EC8)(); + +//----- (004DD070) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4DD077: variable 'v2' is possibly undefined + +//----- (004DD0A0) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_537EC8; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4DD0A7: variable 'v1' is possibly undefined +// 537EC8: using guessed type int (*off_537EC8)(); + +//----- (004DD0D0) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ebx + int v6; // ecx + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x54, v8); + v4[1] = 0; + *v4 = &off_538D3C; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + *(_DWORD *)((char *)v4 + 18) = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + v4[14] = 0; + *((_BYTE *)v4 + 82) = 0; + this[2] = v4; + } + *(_DWORD *)((char *)v4 + 18) = 2883630; + v4[2] = &unk_52F13C; + v5 = std::money_base::_S_atoms; + v4[13] = std::money_base::_S_default_pattern; + v4[3] = 0; + v4[6] = &unk_52F13E; + v4[7] = 0; + v4[8] = &unk_52F13E; + v4[9] = 0; + v4[10] = &unk_52F13E; + v4[11] = 0; + v4[12] = 0; + *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; + v6 = this[2]; + for ( result = 0; result != 11; ++result ) + *(_WORD *)(v6 + 2 * result + 60) = v5[result]; + return result; +} +// 4DD16F: variable 'v8' is possibly undefined +// 516428: using guessed type char *std::money_base::_S_atoms; +// 533540: using guessed type int std::money_base::_S_default_pattern; +// 538D3C: using guessed type int (*off_538D3C)(); + +//----- (004DD1F0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_537EFC; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537EFC: using guessed type int (*off_537EFC)(); + +//----- (004DD250) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_537EFC; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 537EFC: using guessed type int (*off_537EFC)(); + +//----- (004DD2B0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_537EFC; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537EFC: using guessed type int (*off_537EFC)(); + +//----- (004DD310) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_537EFC; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537EFC: using guessed type int (*off_537EFC)(); + +//----- (004DD370) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_537EFC; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 537EFC: using guessed type int (*off_537EFC)(); + +//----- (004DD3D0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_537EFC; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 537EFC: using guessed type int (*off_537EFC)(); + +//----- (004DD430) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4DD437: variable 'v2' is possibly undefined + +//----- (004DD460) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_537EFC; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4DD467: variable 'v1' is possibly undefined +// 537EFC: using guessed type int (*off_537EFC)(); + +//----- (004DD490) -------------------------------------------------------- +void __thiscall std::string::_M_destroy(void **this, int a2) +{ + operator delete(*this); +} + +//----- (004DD4B0) -------------------------------------------------------- +void __fastcall std::string::_M_dispose(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004DD4E0) -------------------------------------------------------- +unsigned int *__thiscall std::string::_M_replace(unsigned int *this, size_t a2, size_t a3, char *Src, size_t a5) +{ + unsigned int v5; // eax + unsigned int v7; // edi + unsigned int v8; // ecx + bool v9; // cl + unsigned int v10; // eax + unsigned int v12; // eax + size_t v13; // eax + size_t v14; // ebp + size_t v15; // edx + _BYTE *v16; // esi + unsigned int v17; // [esp+1Ch] [ebp-30h] + bool v18; // [esp+1Ch] [ebp-30h] + _BYTE *v19; // [esp+20h] [ebp-2Ch] + size_t Size; // [esp+28h] [ebp-24h] + size_t v21; // [esp+2Ch] [ebp-20h] + + v5 = this[1]; + if ( a5 > a3 + 0x3FFFFFFF - v5 ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); + v21 = a5 - a3; + v7 = v5 + a5 - a3; + v17 = *this; + if ( (unsigned int *)*this == this + 2 ) + v8 = 15; + else + v8 = this[2]; + if ( v8 < v7 ) + { + std::string::_M_mutate((int)this, a2, a3, Src, a5); + goto LABEL_12; + } + v19 = (_BYTE *)(a2 + v17); + Size = v5 - (a3 + a2); + v9 = a3 != a5 && v5 != a3 + a2; + if ( v17 <= (unsigned int)Src && (unsigned int)Src <= v17 + v5 ) + { + if ( a5 && a3 >= a5 ) + { + if ( a5 != 1 ) + { + v18 = a3 != a5 && v5 != a3 + a2; + memmove(v19, Src, a5); + if ( !v18 ) + goto LABEL_12; + goto LABEL_18; + } + *v19 = *Src; + } + if ( !v9 ) + { +LABEL_20: + if ( a3 >= a5 ) + goto LABEL_12; + v12 = (unsigned int)&v19[a3]; + if ( &v19[a3] < &Src[a5] ) + { + if ( v12 > (unsigned int)Src ) + { + v13 = v12 - (_DWORD)Src; + v14 = v13; + if ( v13 == 1 ) + { + *v19 = *Src; + } + else if ( v13 ) + { + memmove(v19, Src, v13); + } + v15 = a5 - v14; + v16 = &v19[a5]; + if ( a5 - v14 == 1 ) + { + v19[v14] = *v16; + } + else if ( v15 ) + { + memcpy(&v19[v14], v16, v15); + } + } + else if ( a5 == 1 ) + { + *v19 = Src[v21]; + } + else + { + memcpy(v19, &Src[v21], a5); + } + goto LABEL_12; + } + if ( a5 != 1 ) + { + memmove(v19, Src, a5); + goto LABEL_12; + } +LABEL_26: + *v19 = *Src; + goto LABEL_12; + } +LABEL_18: + if ( Size == 1 ) + v19[a5] = v19[a3]; + else + memmove(&v19[a5], &v19[a3], Size); + goto LABEL_20; + } + if ( v9 ) + { + if ( Size == 1 ) + v19[a5] = v19[a3]; + else + memmove(&v19[a5], &v19[a3], Size); + } + if ( a5 ) + { + if ( a5 != 1 ) + { + memcpy(v19, Src, a5); + goto LABEL_12; + } + goto LABEL_26; + } +LABEL_12: + v10 = *this; + this[1] = v7; + *(_BYTE *)(v10 + v7) = 0; + return this; +} + +//----- (004DD7E0) -------------------------------------------------------- +int __cdecl std::string::_S_compare(int a1, int a2) +{ + return a1 - a2; +} + +//----- (004DD7F0) -------------------------------------------------------- +int __thiscall std::string::_M_capacity(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[2] = a2; + return result; +} + +//----- (004DD800) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004DD810) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004DD820) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004DD830) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004DD840) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t a2, char a3) +{ + size_t Size; // edx + char v5; // si + _BYTE *result; // eax + size_t v7; // edx + + Size = a2; + v5 = a3; + if ( a2 > 0xF ) + { + result = std::string::_M_create(&a2, 0); + *this = result; + Size = a2; + this[2] = a2; + } + else + { + result = (_BYTE *)*this; + } + if ( !Size ) + goto LABEL_6; + if ( Size != 1 ) + { + memset(result, v5, Size); + Size = a2; + result = (_BYTE *)*this; +LABEL_6: + this[1] = Size; + result[Size] = 0; + return result; + } + *result = v5; + v7 = a2; + result = (_BYTE *)*this; + this[1] = a2; + result[v7] = 0; + return result; +} + +//----- (004DD8E0) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( + _DWORD *this, + _BYTE *Src, + int a3, + int a4) +{ + size_t Size; // ebx + _BYTE *result; // eax + unsigned int v7; // ebx + unsigned int v8; // ebx + unsigned int v9[4]; // [esp+1Ch] [ebp-10h] BYREF + + Size = a3 - (_DWORD)Src; + v9[0] = a3 - (_DWORD)Src; + if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) + { + result = std::string::_M_create(v9, 0); + *this = result; + this[2] = v9[0]; + } + else + { + result = (_BYTE *)*this; + if ( Size == 1 ) + { + *result = *Src; + v7 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v7] = 0; + return result; + } + if ( !Size ) + { + this[1] = 0; + *result = 0; + return result; + } + } + memcpy(result, Src, Size); + v8 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v8] = 0; + return result; +} +// 4DD8E0: using guessed type unsigned int var_10[4]; + +//----- (004DD980) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( + _DWORD *this, + _BYTE *Src, + int a3, + int a4) +{ + size_t Size; // ebx + _BYTE *result; // eax + unsigned int v7; // ebx + unsigned int v8; // ebx + unsigned int v9[4]; // [esp+1Ch] [ebp-10h] BYREF + + Size = a3 - (_DWORD)Src; + v9[0] = a3 - (_DWORD)Src; + if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) + { + result = std::string::_M_create(v9, 0); + *this = result; + this[2] = v9[0]; + } + else + { + result = (_BYTE *)*this; + if ( Size == 1 ) + { + *result = *Src; + v7 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v7] = 0; + return result; + } + if ( !Size ) + { + this[1] = 0; + *result = 0; + return result; + } + } + memcpy(result, Src, Size); + v8 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v8] = 0; + return result; +} +// 4DD980: using guessed type unsigned int var_10[4]; + +//----- (004DDA20) -------------------------------------------------------- +unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *a2, size_t Size, int a4) +{ + unsigned int result; // eax + _BYTE *v6; // edx + unsigned int v7[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + if ( !a2 && Size ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + v7[0] = Size - (_DWORD)a2; + if ( Size - (unsigned int)a2 > 0xF ) + { + *this = std::string::_M_create(v7, 0); + this[2] = (void *)v7[0]; + } + std::string::_S_copy_chars(*this, a2, Size); + result = v7[0]; + v6 = *this; + this[1] = (void *)v7[0]; + v6[result] = 0; + return result; +} +// 4DDA20: using guessed type unsigned int var_1C[7]; + +//----- (004DDAA0) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4) +{ + size_t Size; // ebx + _BYTE *result; // eax + unsigned int v7; // ebx + unsigned int v8; // ebx + unsigned int v9[4]; // [esp+1Ch] [ebp-10h] BYREF + + if ( a3 ) + { + if ( !Src ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + } + Size = a3 - (_DWORD)Src; + v9[0] = a3 - (_DWORD)Src; + if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) + { + result = std::string::_M_create(v9, 0); + *this = result; + this[2] = v9[0]; + } + else + { + result = (_BYTE *)*this; + if ( Size == 1 ) + { + *result = *Src; + v7 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v7] = 0; + return result; + } + if ( !Size ) + { + this[1] = 0; + *result = 0; + return result; + } + } + memcpy(result, Src, Size); + v8 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v8] = 0; + return result; +} +// 4DDAA0: using guessed type unsigned int var_10[4]; + +//----- (004DDB60) -------------------------------------------------------- +int __fastcall std::string::_M_local_data(int a1) +{ + return a1 + 8; +} + +//----- (004DDB70) -------------------------------------------------------- +int __thiscall std::string::_M_set_length(int *this, int a2) +{ + int result; // eax + int v3; // edx + + result = a2; + v3 = *this; + this[1] = a2; + *(_BYTE *)(v3 + a2) = 0; + return result; +} + +//----- (004DDB80) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004DDBC0) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004DDC00) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004DDC40) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004DDC80) -------------------------------------------------------- +void __fastcall std::string::shrink_to_fit(_DWORD *a1) +{ + unsigned int v1; // eax + + if ( (_DWORD *)*a1 == a1 + 2 ) + v1 = 15; + else + v1 = a1[2]; + if ( a1[1] < v1 ) + std::string::reserve(a1, 0); +} +// 4DDC80: could not find valid save-restore pair for ebp + +//----- (004DDCD0) -------------------------------------------------------- +_DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t a2, int a3, size_t a4, char a5) +{ + int v6; // edx + _DWORD *v7; // eax + unsigned int v8; // esi + unsigned int v9; // ebp + size_t Size; // edx + size_t v11; // eax + _BYTE *Src; // ecx + _BYTE *v13; // eax + _BYTE *v14; // eax + + v6 = this[1]; + if ( a4 > a3 + 0x3FFFFFFF - v6 ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); + v7 = (_DWORD *)*this; + v8 = v6 + a4 - a3; + if ( (_DWORD *)*this == this + 2 ) + v9 = 15; + else + v9 = this[2]; + if ( v9 < v8 ) + { + std::string::_M_mutate((int)this, a2, a3, 0, a4); + v7 = (_DWORD *)*this; + if ( !a4 ) + goto LABEL_13; + } + else + { + Size = v6 - (a3 + a2); + if ( !Size || a3 == a4 ) + { +LABEL_9: + if ( !a4 ) + goto LABEL_13; + goto LABEL_10; + } + v11 = (size_t)v7 + a2; + Src = (_BYTE *)(v11 + a3); + v13 = (_BYTE *)(a4 + v11); + if ( Size != 1 ) + { + memmove(v13, Src, Size); + v7 = (_DWORD *)*this; + goto LABEL_9; + } + *v13 = *Src; + v7 = (_DWORD *)*this; + if ( !a4 ) + goto LABEL_13; + } +LABEL_10: + v14 = (char *)v7 + a2; + if ( a4 == 1 ) + *v14 = a5; + else + memset(v14, a5, a4); + v7 = (_DWORD *)*this; +LABEL_13: + this[1] = v8; + *((_BYTE *)v7 + v8) = 0; + return this; +} + +//----- (004DDDF0) -------------------------------------------------------- +int __fastcall std::string::_M_get_allocator(int a1) +{ + return a1; +} + +//----- (004DDE00) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t a2, char a3) +{ + return std::string::_M_construct(this, a2, a3); +} + +//----- (004DDE10) -------------------------------------------------------- +unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= this[1] ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); + return *this + a2; +} + +//----- (004DDE40) -------------------------------------------------------- +int __fastcall std::string::end(_DWORD *a1) +{ + return a1[1] + *a1; +} + +//----- (004DDE50) -------------------------------------------------------- +int __fastcall std::string::back(_DWORD *a1) +{ + return *a1 + a1[1] - 1; +} + +//----- (004DDE60) -------------------------------------------------------- +_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (004DDE70) -------------------------------------------------------- +_BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *a2) +{ + _BYTE *result; // eax + _BYTE *v3; // edi + _BYTE *v4; // esi + _BYTE *v5; // edx + int v6; // ebp + int v7; // edx + int v8; // esi + int v9; // edx + int v10; // edi + int v11; // ebp + int v12; // edi + int v13; // [esp+0h] [ebp-28h] + int v14; // [esp+4h] [ebp-24h] + + result = a2; + if ( this != a2 ) + { + v3 = (_BYTE *)*this; + v4 = (_BYTE *)*a2; + v5 = a2 + 2; + if ( this + 2 == (_DWORD *)*this ) + { + if ( v5 == v4 ) + { + v8 = a2[1]; + if ( this[1] ) + { + if ( !v8 ) + { + a2[2] = this[2]; + a2[3] = this[3]; + a2[4] = this[4]; + a2[5] = this[5]; + a2[1] = this[1]; + result = (_BYTE *)*this; + this[1] = 0; + *result = 0; + return result; + } + v11 = a2[2]; + v12 = a2[3]; + v13 = a2[4]; + v14 = a2[5]; + a2[2] = this[2]; + a2[3] = this[3]; + a2[4] = this[4]; + a2[5] = this[5]; + v9 = this[1]; + this[3] = v12; + this[2] = v11; + this[4] = v13; + this[5] = v14; + v8 = a2[1]; + } + else + { + if ( v8 ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + this[1] = a2[1]; + a2[1] = 0; + result = (_BYTE *)*a2; + *(_BYTE *)*a2 = 0; + return result; + } + v9 = 0; + } + } + else + { + v10 = a2[2]; + a2[2] = this[2]; + a2[3] = this[3]; + a2[4] = this[4]; + a2[5] = this[5]; + *this = v4; + *a2 = v5; + v9 = this[1]; + this[2] = v10; + v8 = a2[1]; + } + } + else + { + v6 = this[2]; + if ( v5 == v4 ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + *a2 = v3; + *this = this + 2; + } + else + { + *this = v4; + v7 = a2[2]; + *a2 = v3; + this[2] = v7; + } + a2[2] = v6; + v8 = a2[1]; + v9 = this[1]; + } + this[1] = v8; + a2[1] = v9; + } + return result; +} + +//----- (004DDFE0) -------------------------------------------------------- +int __fastcall std::string::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004DDFF0) -------------------------------------------------------- +_BYTE *__fastcall std::string::clear(int a1) +{ + _BYTE *result; // eax + + result = *(_BYTE **)a1; + *(_DWORD *)(a1 + 4) = 0; + *result = 0; + return result; +} + +//----- (004DE000) -------------------------------------------------------- +int __thiscall std::string::erase(int *this, int a2) +{ + int v3; // ebx + + v3 = a2 - *this; + std::string::_M_erase(this, v3, 1); + return v3 + *this; +} + +//----- (004DE030) -------------------------------------------------------- +int __thiscall std::string::erase(int *this, _BYTE *a2, int a3) +{ + int v4; // esi + + v4 = (int)&a2[-*this]; + if ( a3 == this[1] + *this ) + { + this[1] = v4; + *a2 = 0; + } + else + { + std::string::_M_erase(this, v4, a3 - (_DWORD)a2); + } + return v4 + *this; +} + +//----- (004DE090) -------------------------------------------------------- +int __thiscall std::string::erase(int *this, int a2) +{ + int v3; // ebx + + v3 = a2 - *this; + std::string::_M_erase(this, v3, 1); + return v3 + *this; +} + +//----- (004DE0C0) -------------------------------------------------------- +int __thiscall std::string::erase(int *this, _BYTE *a2, int a3) +{ + int v4; // esi + + v4 = (int)&a2[-*this]; + if ( a3 == this[1] + *this ) + { + this[1] = v4; + *a2 = 0; + } + else + { + std::string::_M_erase(this, v4, a3 - (_DWORD)a2); + } + return v4 + *this; +} + +//----- (004DE120) -------------------------------------------------------- +int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3) +{ + int *result; // eax + unsigned int v4; // ebx + unsigned int v5; // ebx + int v6; // ecx + + result = this; + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + a2, + v4); + if ( a3 == -1 ) + { + v6 = *this; + result[1] = a2; + *(_BYTE *)(v6 + a2) = 0; + } + else if ( a3 ) + { + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + std::string::_M_erase(this, a2, v5); + return this; + } + return result; +} + +//----- (004DE1A0) -------------------------------------------------------- +int __fastcall std::string::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004DE1B0) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, char *Str) +{ + unsigned int v3; // eax + + v3 = strlen(Str); + if ( 0x3FFFFFFF - this[1] < v3 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, Str, v3); +} + +//----- (004DE200) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3) +{ + if ( a3 > 0x3FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, a2, a3); +} + +//----- (004DE230) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, int a2) +{ + return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); +} + +//----- (004DE260) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // ebx + + v4 = a2[1] - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > a2[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::append", + a3, + a2[1]); + return std::string::_M_append(this, (_BYTE *)(*a2 + a3), v4); +} + +//----- (004DE2C0) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3) +{ + if ( a3 > 0x3FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, a2, a3); +} + +//----- (004DE2F0) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3) +{ + return std::string::_M_replace_aux(this, this[1], 0, a2, a3); +} + +//----- (004DE320) -------------------------------------------------------- +_DWORD *__thiscall std::string::assign(_DWORD *this, int a2) +{ + _BYTE *v3; // eax + _BYTE *Src; // ecx + int v5; // edx + int v6; // ebp + + v3 = (_BYTE *)*this; + Src = *(_BYTE **)a2; + v5 = *(_DWORD *)(a2 + 4); + if ( *(_DWORD *)a2 != a2 + 8 ) + { + if ( v3 == (_BYTE *)(this + 2) ) + { + *this = Src; + this[1] = v5; + this[2] = *(_DWORD *)(a2 + 8); + } + else + { + *this = Src; + v6 = this[2]; + this[1] = v5; + this[2] = *(_DWORD *)(a2 + 8); + if ( v3 ) + { + *(_DWORD *)a2 = v3; + *(_DWORD *)(a2 + 8) = v6; + goto LABEL_5; + } + } + *(_DWORD *)a2 = a2 + 8; + v3 = (_BYTE *)(a2 + 8); + goto LABEL_5; + } + if ( v5 ) + { + if ( v5 == 1 ) + *v3 = *(_BYTE *)(a2 + 8); + else + memcpy(v3, Src, *(_DWORD *)(a2 + 4)); + v5 = *(_DWORD *)(a2 + 4); + v3 = (_BYTE *)*this; + } + this[1] = v5; + v3[v5] = 0; + v3 = *(_BYTE **)a2; +LABEL_5: + *(_DWORD *)(a2 + 4) = 0; + *v3 = 0; + return this; +} + +//----- (004DE3D0) -------------------------------------------------------- +unsigned int *__thiscall std::string::assign(unsigned int *this, char *Str) +{ + size_t v3; // eax + + v3 = strlen(Str); + return std::string::_M_replace(this, 0, this[1], Str, v3); +} + +//----- (004DE410) -------------------------------------------------------- +unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3) +{ + return std::string::_M_replace(this, 0, this[1], a2, a3); +} + +//----- (004DE440) -------------------------------------------------------- +void *__thiscall std::string::assign(void *this, int a2) +{ + std::string::_M_assign((int)this, a2); + return this; +} + +//----- (004DE460) -------------------------------------------------------- +unsigned int *__thiscall std::string::assign(unsigned int *this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // ebx + + v4 = a2[1] - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > a2[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::assign", + a3, + a2[1]); + return std::string::_M_replace(this, 0, this[1], (char *)(*a2 + a3), v4); +} + +//----- (004DE4D0) -------------------------------------------------------- +unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3) +{ + return std::string::_M_replace(this, 0, this[1], a2, a3); +} + +//----- (004DE500) -------------------------------------------------------- +_DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3) +{ + return std::string::_M_replace_aux(this, 0, this[1], a2, a3); +} + +//----- (004DE530) -------------------------------------------------------- +size_t __thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4) +{ + size_t v5; // eax + size_t v6; // ebx + + v5 = this[1]; + v6 = a2 - *this; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + std::string::_M_replace(this, v6, 0, a3, a4); + return v6 + *this; +} + +//----- (004DE5A0) -------------------------------------------------------- +size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) +{ + size_t v4; // ebx + + v4 = a2 - *this; + std::string::_M_replace_aux(this, v4, 0, 1u, a3); + return v4 + *this; +} + +//----- (004DE5E0) -------------------------------------------------------- +size_t __thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) +{ + size_t v5; // ebx + + v5 = a2 - *this; + std::string::_M_replace_aux(this, v5, 0, a3, a4); + return v5 + *this; +} + +//----- (004DE620) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4) +{ + size_t v4; // eax + + v4 = a2 - *this; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::string::_M_replace(this, v4, 0, a3, a4); +} + +//----- (004DE680) -------------------------------------------------------- +size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) +{ + size_t v4; // ebx + + v4 = a2 - *this; + std::string::_M_replace_aux(this, v4, 0, 1u, a3); + return v4 + *this; +} + +//----- (004DE6C0) -------------------------------------------------------- +_DWORD *__thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) +{ + return std::string::_M_replace_aux(this, a2 - *this, 0, a3, a4); +} + +//----- (004DE700) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *Str) +{ + size_t v4; // eax + + v4 = strlen(Str); + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, 0, Str, v4); +} + +//----- (004DE770) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *a3, size_t a4) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, 0, a3, a4); +} + +//----- (004DE7D0) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, int a3) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, 0, *(char **)a3, *(_DWORD *)(a3 + 4)); +} + +//----- (004DE830) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, _DWORD *a3, char *a4, size_t a5) +{ + size_t v5; // ebx + + v5 = a3[1] - (_DWORD)a4; + if ( v5 > a5 ) + v5 = a5; + if ( (unsigned int)a4 > a3[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + (size_t)a4, + a3[1]); + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, 0, &a4[*a3], v5); +} + +//----- (004DE8C0) -------------------------------------------------------- +_DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int a2, size_t a3, char a4) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a2, + this[1]); + return std::string::_M_replace_aux(this, a2, 0, a3, a4); +} + +//----- (004DE920) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert<__gnu_cxx::__normal_iterator>( + unsigned int *this, + int a2, + char *a3, + int a4) +{ + size_t v4; // eax + + v4 = a2 - *this; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::string::_M_replace(this, v4, 0, a3, a4 - (_DWORD)a3); +} + +//----- (004DE980) -------------------------------------------------------- +_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + a2[1]; + return result; +} + +//----- (004DE990) -------------------------------------------------------- +_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2) +{ + return std::string::resize(this, a2, 0); +} + +//----- (004DE9B0) -------------------------------------------------------- +_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2, char a3) +{ + size_t v3; // edx + _DWORD *result; // eax + int v5; // edx + + v3 = this[1]; + result = a2; + if ( v3 < (unsigned int)a2 ) + return std::string::_M_replace_aux(this, v3, 0, (size_t)a2 - v3, a3); + if ( v3 > (unsigned int)a2 ) + { + v5 = *this; + this[1] = (int)a2; + *((_BYTE *)a2 + v5) = 0; + } + return result; +} + +//----- (004DEA00) -------------------------------------------------------- +int __thiscall std::string::_M_data(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004DEA10) -------------------------------------------------------- +size_t __cdecl std::string::_S_copy(void *a1, const void *Src, size_t Size) +{ + size_t result; // eax + + result = Size; + if ( Size == 1 ) + { + result = *(unsigned __int8 *)Src; + *(_BYTE *)a1 = result; + } + else if ( Size ) + { + return (size_t)memcpy(a1, Src, Size); + } + return result; +} + +//----- (004DEA40) -------------------------------------------------------- +size_t __cdecl std::string::_S_move(void *a1, const void *Src, size_t Size) +{ + size_t result; // eax + + result = Size; + if ( Size == 1 ) + { + result = *(unsigned __int8 *)Src; + *(_BYTE *)a1 = result; + } + else if ( Size ) + { + return (size_t)memmove(a1, Src, Size); + } + return result; +} + +//----- (004DEA70) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004DEAF0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004DEB70) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) +{ + size_t v4; // ebx + size_t v5; // edx + size_t v6; // eax + + v4 = this[1]; + v5 = a2 - *this; + v6 = v4 - v5; + if ( a3 - a2 <= v4 - v5 ) + v6 = a3 - a2; + if ( v5 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + v4); + return std::string::_M_replace(this, v5, v6, *(char **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004DEBF0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) +{ + size_t v5; // eax + size_t v6; // ecx + size_t v7; // edx + size_t v8; // esi + + v5 = strlen(Str); + v6 = this[1]; + v7 = a2 - *this; + v8 = v6 - v7; + if ( a3 - a2 <= v6 - v7 ) + v8 = a3 - a2; + if ( v7 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v7, + v6); + return std::string::_M_replace(this, v7, v8, Str, v5); +} + +//----- (004DEC70) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004DECF0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // ebx + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5); +} + +//----- (004DED60) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004DEDE0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // ebx + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5); +} + +//----- (004DEE50) -------------------------------------------------------- +_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) +{ + return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); +} + +//----- (004DEE70) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004DEEF0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) +{ + size_t v5; // eax + size_t v6; // ecx + size_t v7; // edx + size_t v8; // esi + + v5 = strlen(Str); + v6 = this[1]; + v7 = a2 - *this; + v8 = v6 - v7; + if ( a3 - a2 <= v6 - v7 ) + v8 = a3 - a2; + if ( v7 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v7, + v6); + return std::string::_M_replace(this, v7, v8, Str, v5); +} + +//----- (004DEF70) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004DEFF0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // ebx + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5); +} + +//----- (004DF060) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) +{ + size_t v4; // ebx + size_t v5; // edx + size_t v6; // eax + + v4 = this[1]; + v5 = a2 - *this; + v6 = v4 - v5; + if ( a3 - a2 <= v4 - v5 ) + v6 = a3 - a2; + if ( v5 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + v4); + return std::string::_M_replace(this, v5, v6, *(char **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004DF0E0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004DF160) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004DF1E0) -------------------------------------------------------- +_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) +{ + return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); +} + +//----- (004DF200) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *Str) +{ + size_t v5; // eax + size_t v6; // edx + + v5 = strlen(Str); + v6 = this[1] - a2; + if ( v6 > a3 ) + v6 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, v6, Str, v5); +} + +//----- (004DF270) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace( + unsigned int *this, + unsigned int a2, + unsigned int a3, + char *a4, + size_t a5) +{ + size_t v5; // edx + + v5 = this[1] - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, v5, a4, a5); +} + +//----- (004DF2D0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, size_t a3, int a4) +{ + size_t v4; // eax + + v4 = this[1] - a2; + if ( v4 > a3 ) + v4 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, v4, *(char **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004DF340) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace( + unsigned int *this, + unsigned int a2, + size_t a3, + _DWORD *a4, + unsigned int a5, + size_t a6) +{ + size_t v6; // ebx + size_t v7; // esi + + v6 = a4[1] - a5; + if ( v6 > a6 ) + v6 = a6; + if ( a5 > a4[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a5, + a4[1]); + v7 = this[1] - a2; + if ( v7 > a3 ) + v7 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, v7, (char *)(*a4 + a5), v6); +} + +//----- (004DF3E0) -------------------------------------------------------- +_DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5) +{ + unsigned int v5; // edx + + v5 = this[1] - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace_aux(this, a2, v5, a4, a5); +} + +//----- (004DF450) -------------------------------------------------------- +void __thiscall std::string::reserve(_DWORD *this, unsigned int a2) +{ + unsigned int v3; // ecx + unsigned int v4; // eax + _BYTE *v5; // edi + _BYTE *v6; // esi + unsigned int v7; // edx + _BYTE *v8; // eax + _BYTE *Src; // ebp + _BYTE *v10; // edi + int v11; // eax + unsigned int v12; // eax + + v3 = this[1]; + v4 = a2; + if ( a2 < v3 ) + { + a2 = v3; + v4 = v3; + } + v5 = (_BYTE *)*this; + v6 = this + 2; + if ( this + 2 == (_DWORD *)*this ) + v7 = 15; + else + v7 = this[2]; + if ( v7 != v4 ) + { + if ( v7 > 0xF ) + { + if ( v4 > 0xF ) + goto LABEL_8; + } + else if ( v7 < v4 ) + { +LABEL_8: + v8 = std::string::_M_create(&a2, v7); + Src = (_BYTE *)*this; + v10 = v8; + v11 = this[1]; + if ( v11 ) + { + if ( v11 != -1 ) + memcpy(v10, Src, v11 + 1); + } + else + { + *v10 = *Src; + } + if ( Src != v6 ) + operator delete(Src); + v12 = a2; + *this = v10; + this[2] = v12; + return; + } + if ( v6 != v5 ) + { + if ( v3 ) + { + if ( v3 != -1 ) + memcpy(this + 2, v5, v3 + 1); + } + else + { + *((_BYTE *)this + 8) = *v5; + } + operator delete(v5); + *this = v6; + } + } +} + +//----- (004DF560) -------------------------------------------------------- +int __thiscall std::string::_M_erase(int *this, int a2, int a3) +{ + int v4; // eax + int v5; // ecx + _BYTE *Src; // edx + _BYTE *v7; // ecx + int result; // eax + + v4 = this[1]; + v5 = *this; + if ( v4 != a2 + a3 && a3 ) + { + Src = (_BYTE *)(v5 + a2 + a3); + v7 = (_BYTE *)(a2 + v5); + if ( v4 - (a2 + a3) == 1 ) + *v7 = *Src; + else + memmove(v7, Src, v4 - (a2 + a3)); + v5 = *this; + v4 = this[1]; + } + result = v4 - a3; + this[1] = result; + *(_BYTE *)(v5 + result) = 0; + return result; +} + +//----- (004DF5D0) -------------------------------------------------------- +int __fastcall std::string::pop_back(int *a1) +{ + return std::string::_M_erase(a1, a1[1] - 1, 1); +} + +//----- (004DF5F0) -------------------------------------------------------- +_DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size) +{ + _DWORD *v4; // edi + size_t v5; // ecx + _DWORD *v6; // eax + unsigned int v7; // esi + unsigned int v8; // edi + _BYTE *v9; // eax + + v4 = this + 2; + v5 = this[1]; + v6 = (_DWORD *)*this; + v7 = v5 + Size; + if ( (_DWORD *)*this == v4 ) + v8 = 15; + else + v8 = this[2]; + if ( v7 > v8 ) + { + std::string::_M_mutate((int)this, v5, 0, Src, Size); + v6 = (_DWORD *)*this; + } + else if ( Size ) + { + v9 = (char *)v6 + v5; + if ( Size == 1 ) + *v9 = *Src; + else + memcpy(v9, Src, Size); + v6 = (_DWORD *)*this; + } + this[1] = v7; + *((_BYTE *)v6 + v7) = 0; + return this; +} + +//----- (004DF690) -------------------------------------------------------- +void __thiscall std::string::_M_assign(int this, int a2) +{ + _BYTE *v2; // esi + size_t Size; // edi + unsigned int v5; // eax + _BYTE *Src; // eax + unsigned int v7; // eax + int v8; // [esp+1Ch] [ebp-30h] + unsigned int v9[8]; // [esp+2Ch] [ebp-20h] BYREF + + if ( this != a2 ) + { + v2 = *(_BYTE **)this; + Size = *(_DWORD *)(a2 + 4); + if ( this + 8 == *(_DWORD *)this ) + v5 = 15; + else + v5 = *(_DWORD *)(this + 8); + if ( v5 < Size ) + { + v8 = this + 8; + v9[0] = *(_DWORD *)(a2 + 4); + v2 = std::string::_M_create(v9, v5); + if ( v8 != *(_DWORD *)this ) + operator delete(*(void **)this); + v7 = v9[0]; + *(_DWORD *)this = v2; + *(_DWORD *)(this + 8) = v7; + if ( !Size ) + goto LABEL_9; + } + else if ( !Size ) + { +LABEL_9: + *(_DWORD *)(this + 4) = Size; + v2[Size] = 0; + return; + } + Src = *(_BYTE **)a2; + if ( Size == 1 ) + *v2 = *Src; + else + memcpy(v2, Src, Size); + v2 = *(_BYTE **)this; + goto LABEL_9; + } +} +// 4DF690: using guessed type unsigned int var_20[8]; + +//----- (004DF750) -------------------------------------------------------- +void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2) +{ + unsigned int v2; // eax + unsigned int v3; // edx + void (__cdecl *v5)(void *); // [esp+4h] [ebp-18h] + + v2 = *a1; + if ( *a1 > 0x3FFFFFFF ) + std::__throw_length_error((std::length_error *)"basic_string::_M_create"); + if ( v2 > a2 ) + { + v3 = 2 * a2; + if ( v2 < 2 * a2 ) + { + if ( v3 > 0x3FFFFFFF ) + { + *a1 = 0x3FFFFFFF; + return operator new((struct type_info *)0x40000000, v5); + } + *a1 = v3; + v2 = 2 * a2; + } + } + return operator new((struct type_info *)(v2 + 1), v5); +} +// 4DF784: variable 'v5' is possibly undefined + +//----- (004DF7C0) -------------------------------------------------------- +int __thiscall std::string::_M_length(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[1] = a2; + return result; +} + +//----- (004DF7D0) -------------------------------------------------------- +size_t __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5) +{ + _BYTE *v6; // edi + unsigned int v7; // eax + _BYTE *v8; // eax + _BYTE *v9; // ecx + _BYTE *v10; // ebp + _BYTE *v11; // esi + size_t result; // eax + _BYTE *Src; // [esp+4h] [ebp-48h] + size_t v14; // [esp+14h] [ebp-38h] + size_t v15; // [esp+18h] [ebp-34h] + _BYTE *v16; // [esp+18h] [ebp-34h] + _BYTE *v17; // [esp+1Ch] [ebp-30h] + _BYTE *v18; // [esp+1Ch] [ebp-30h] + size_t v19[8]; // [esp+2Ch] [ebp-20h] BYREF + + v15 = Size + a3; + v14 = *(_DWORD *)(this + 4) - (Size + a3); + v6 = (_BYTE *)(this + 8); + v19[0] = *(_DWORD *)(this + 4) + a5 - a3; + if ( this + 8 == *(_DWORD *)this ) + v7 = 15; + else + v7 = *(_DWORD *)(this + 8); + v8 = std::string::_M_create(v19, v7); + v9 = *(_BYTE **)this; + v10 = v8; + if ( Size ) + { + if ( Size == 1 ) + { + *v8 = *v9; + } + else + { + v17 = *(_BYTE **)this; + memcpy(v8, *(const void **)this, Size); + v9 = v17; + } + } + if ( a4 && a5 ) + { + if ( a5 == 1 ) + { + v10[Size] = *a4; + } + else + { + v18 = v9; + memcpy(&v10[Size], a4, a5); + v9 = v18; + } + } + if ( v14 ) + { + v11 = &v10[a5 + Size]; + if ( v14 == 1 ) + { + *v11 = v9[v15]; + } + else + { + Src = &v9[v15]; + v16 = v9; + memcpy(v11, Src, v14); + v9 = v16; + } + } + if ( v6 != v9 ) + operator delete(v9); + result = v19[0]; + *(_DWORD *)this = v10; + *(_DWORD *)(this + 8) = result; + return result; +} +// 4DF7D0: using guessed type size_t var_20[8]; + +//----- (004DF920) -------------------------------------------------------- +void *__cdecl std::string::_S_assign(_BYTE *a1, void *Val, size_t Size) +{ + void *result; // eax + + result = Val; + if ( Val == (void *)1 ) + { + *a1 = Size; + } + else if ( Val ) + { + return memset(a1, (char)Size, (size_t)Val); + } + return result; +} + +//----- (004DF960) -------------------------------------------------------- +_DWORD *__thiscall std::string::push_back(_DWORD *this, char a2) +{ + size_t v3; // esi + _DWORD *v4; // eax + unsigned int v5; // edi + unsigned int v6; // edx + _DWORD *result; // eax + + v3 = this[1]; + v4 = (_DWORD *)*this; + v5 = v3 + 1; + if ( (_DWORD *)*this == this + 2 ) + v6 = 15; + else + v6 = this[2]; + if ( v5 > v6 ) + { + std::string::_M_mutate((int)this, v3, 0, 0, 1u); + v4 = (_DWORD *)*this; + } + *((_BYTE *)v4 + v3) = a2; + result = (_DWORD *)*this; + this[1] = v5; + *((_BYTE *)result + v3 + 1) = 0; + return result; +} + +//----- (004DF9E0) -------------------------------------------------------- +_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + int v3; // ebx + + result = a2; + *this = this + 2; + if ( result + 2 == (_DWORD *)*result ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + } + else + { + *this = *a2; + this[2] = a2[2]; + } + v3 = a2[1]; + *a2 = a2 + 2; + a2[1] = 0; + *((_BYTE *)a2 + 8) = 0; + this[1] = v3; + return result; +} + +//----- (004DFA40) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) +{ + _BYTE *result; // eax + int v4; // ebx + int v5; // ebx + int v6; // edx + + result = (_BYTE *)a2; + *this = this + 2; + if ( result + 8 == *(_BYTE **)result ) + { + this[2] = *(_DWORD *)(a2 + 8); + this[3] = *(_DWORD *)(a2 + 12); + this[4] = *(_DWORD *)(a2 + 16); + this[5] = *(_DWORD *)(a2 + 20); + v6 = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = 0; + result = *(_BYTE **)a2; + this[1] = v6; + *result = 0; + } + else + { + *this = *(_DWORD *)a2; + v4 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + this[1] = v4; + v5 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = 0; + *(_BYTE *)(a2 + 8) = 0; + this[2] = v5; + } + return result; +} + +//----- (004DFAB0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3) +{ + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); +} +// 4DFAE1: variable 'v6' is possibly undefined + +//----- (004DFB00) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); +} + +//----- (004DFB20) -------------------------------------------------------- +char *__thiscall std::string::basic_string(_DWORD *this, int a2) +{ + char *result; // eax + + result = (char *)(this + 2); + this[1] = 0; + *this = this + 2; + *((_BYTE *)this + 8) = 0; + return result; +} + +//----- (004DFB40) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v3) = 0; + return std::string::_M_construct(this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v3); +} +// 4DFB60: variable 'v3' is possibly undefined + +//----- (004DFB70) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v4) = 0; + return std::string::_M_construct<__gnu_cxx::__normal_iterator>( + this, + *(_BYTE **)a2, + *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), + v4); +} +// 4DFB90: variable 'v4' is possibly undefined + +//----- (004DFBA0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) +{ + size_t v4; // eax + + *this = this + 2; + v4 = a2[1]; + if ( Size > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + Size, + a2[1]); + LOBYTE(a4) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), *a2 + v4, a4); +} + +//----- (004DFBF0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) +{ + unsigned int v4; // esi + size_t v5; // eax + unsigned int v6; // eax + + *this = this + 2; + v4 = a4; + v5 = a2[1]; + if ( Size > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + Size, + a2[1]); + v6 = v5 - Size; + LOBYTE(a4) = 0; + if ( v6 > v4 ) + v6 = v4; + return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), Size + *a2 + v6, a4); +} + +//----- (004DFC50) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + *this = this + 2; + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); + v6 = v5 - a3; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + return std::string::_M_construct(this, (unsigned __int8 *)(a3 + *a2), a3 + *a2 + v6, v8); +} +// 4DFC85: variable 'v8' is possibly undefined + +//----- (004DFCC0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); +} + +//----- (004DFCE0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4) +{ + *this = this + 2; + return std::string::_M_construct(this, a2, a3); +} + +//----- (004DFD10) -------------------------------------------------------- +int __fastcall std::string::basic_string(int a1) +{ + int result; // eax + + result = a1 + 8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + return result; +} + +//----- (004DFD30) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( + _DWORD *this, + _BYTE *a2, + int a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); +} + +//----- (004DFD40) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string( + void **this, + unsigned __int8 *a2, + size_t a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, a3, a4); +} + +//----- (004DFD50) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, a3, a4); +} + +//----- (004DFD60) -------------------------------------------------------- +_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + int v3; // ebx + + result = a2; + *this = this + 2; + if ( result + 2 == (_DWORD *)*result ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + } + else + { + *this = *a2; + this[2] = a2[2]; + } + v3 = a2[1]; + *a2 = a2 + 2; + a2[1] = 0; + *((_BYTE *)a2 + 8) = 0; + this[1] = v3; + return result; +} + +//----- (004DFDC0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) +{ + _BYTE *result; // eax + int v4; // ebx + int v5; // ebx + int v6; // edx + + result = (_BYTE *)a2; + *this = this + 2; + if ( result + 8 == *(_BYTE **)result ) + { + this[2] = *(_DWORD *)(a2 + 8); + this[3] = *(_DWORD *)(a2 + 12); + this[4] = *(_DWORD *)(a2 + 16); + this[5] = *(_DWORD *)(a2 + 20); + v6 = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = 0; + result = *(_BYTE **)a2; + this[1] = v6; + *result = 0; + } + else + { + *this = *(_DWORD *)a2; + v4 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + this[1] = v4; + v5 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = 0; + *(_BYTE *)(a2 + 8) = 0; + this[2] = v5; + } + return result; +} + +//----- (004DFE30) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3) +{ + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); +} +// 4DFE61: variable 'v6' is possibly undefined + +//----- (004DFE80) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); +} + +//----- (004DFEA0) -------------------------------------------------------- +char *__thiscall std::string::basic_string(_DWORD *this, int a2) +{ + char *result; // eax + + result = (char *)(this + 2); + this[1] = 0; + *this = this + 2; + *((_BYTE *)this + 8) = 0; + return result; +} + +//----- (004DFEC0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v3) = 0; + return std::string::_M_construct(this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v3); +} +// 4DFEE0: variable 'v3' is possibly undefined + +//----- (004DFEF0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v4) = 0; + return std::string::_M_construct<__gnu_cxx::__normal_iterator>( + this, + *(_BYTE **)a2, + *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), + v4); +} +// 4DFF10: variable 'v4' is possibly undefined + +//----- (004DFF20) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) +{ + size_t v4; // eax + + *this = this + 2; + v4 = a2[1]; + if ( Size > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + Size, + a2[1]); + LOBYTE(a4) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), *a2 + v4, a4); +} + +//----- (004DFF70) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) +{ + unsigned int v4; // esi + size_t v5; // eax + unsigned int v6; // eax + + *this = this + 2; + v4 = a4; + v5 = a2[1]; + if ( Size > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + Size, + a2[1]); + v6 = v5 - Size; + LOBYTE(a4) = 0; + if ( v6 > v4 ) + v6 = v4; + return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), Size + *a2 + v6, a4); +} + +//----- (004DFFD0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + *this = this + 2; + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); + v6 = v5 - a3; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + return std::string::_M_construct(this, (unsigned __int8 *)(a3 + *a2), a3 + *a2 + v6, v8); +} +// 4E0005: variable 'v8' is possibly undefined + +//----- (004E0040) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); +} + +//----- (004E0060) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4) +{ + *this = this + 2; + return std::string::_M_construct(this, a2, a3); +} + +//----- (004E0090) -------------------------------------------------------- +int __fastcall std::string::basic_string(int a1) +{ + int result; // eax + + result = a1 + 8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + return result; +} + +//----- (004E00B0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( + _DWORD *this, + _BYTE *a2, + int a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); +} + +//----- (004E00C0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string( + void **this, + unsigned __int8 *a2, + size_t a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, a3, a4); +} + +//----- (004E00D0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, a3, a4); +} + +//----- (004E00E0) -------------------------------------------------------- +void __fastcall std::string::~string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004E0110) -------------------------------------------------------- +void __fastcall std::string::~string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004E0140) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *a2) +{ + _BYTE *v3; // eax + _DWORD *v4; // ecx + int v5; // edx + int v6; // ebp + + v3 = (_BYTE *)*this; + v4 = (_DWORD *)*a2; + v5 = a2[1]; + if ( a2 + 2 != (_DWORD *)*a2 ) + { + if ( v3 == (_BYTE *)(this + 2) ) + { + *this = v4; + this[1] = v5; + this[2] = a2[2]; + } + else + { + *this = v4; + v6 = this[2]; + this[1] = v5; + this[2] = a2[2]; + if ( v3 ) + { + *a2 = v3; + a2[2] = v6; + goto LABEL_5; + } + } + *a2 = a2 + 2; + v3 = a2 + 2; + goto LABEL_5; + } + if ( v5 ) + { + if ( v5 == 1 ) + *v3 = *((_BYTE *)a2 + 8); + else + memcpy(v3, a2 + 2, a2[1]); + v3 = (_BYTE *)*this; + v5 = a2[1]; + } + this[1] = v5; + v3[v5] = 0; + v3 = (_BYTE *)*a2; +LABEL_5: + a2[1] = 0; + *v3 = 0; + return this; +} + +//----- (004E01F0) -------------------------------------------------------- +unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) +{ + size_t v3; // eax + + v3 = strlen(Str); + return std::string::_M_replace(this, 0, this[1], Str, v3); +} + +//----- (004E0230) -------------------------------------------------------- +void *__thiscall std::string::operator=(void *this, int a2) +{ + std::string::_M_assign((int)this, a2); + return this; +} + +//----- (004E0250) -------------------------------------------------------- +unsigned int *__thiscall std::string::operator=(unsigned int *this, char *a2, size_t a3) +{ + std::string::_M_replace(this, 0, this[1], a2, a3); + return this; +} + +//----- (004E0290) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator=(_DWORD *this, char a2) +{ + std::string::_M_replace_aux(this, 0, this[1], 1u, a2); + return this; +} + +//----- (004E02D0) -------------------------------------------------------- +int __thiscall std::string::operator[](_DWORD *this, int a2) +{ + return a2 + *this; +} + +//----- (004E02E0) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str) +{ + unsigned int v3; // eax + + v3 = strlen(Str); + if ( v3 > 0x3FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, Str, v3); +} + +//----- (004E0330) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) +{ + return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); +} + +//----- (004E0360) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *a2, size_t a3) +{ + if ( a3 > 0x3FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, a2, a3); +} + +//----- (004E0390) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator+=(_DWORD *this, char a2) +{ + _DWORD *result; // eax + char *v3; // ecx + size_t v4; // ebx + char *v5; // edx + unsigned int v6; // esi + unsigned int v7; // ecx + int v8; // edx + _DWORD *v9; // [esp+1Ch] [ebp-10h] + + result = this; + v3 = (char *)(this + 2); + v4 = *((_DWORD *)v3 - 1); + v5 = (char *)*((_DWORD *)v3 - 2); + v6 = v4 + 1; + if ( v5 == v3 ) + v7 = 15; + else + v7 = result[2]; + if ( v6 > v7 ) + { + v9 = result; + std::string::_M_mutate((int)result, v4, 0, 0, 1u); + result = v9; + v5 = (char *)*v9; + } + v5[v4] = a2; + v8 = *result; + result[1] = v6; + *(_BYTE *)(v8 + v4 + 1) = 0; + return result; +} + +//----- (004E0410) -------------------------------------------------------- +void __thiscall std::wstring::_M_destroy(void **this, int a2) +{ + operator delete(*this); +} + +//----- (004E0430) -------------------------------------------------------- +void __fastcall std::wstring::_M_dispose(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004E0460) -------------------------------------------------------- +int __thiscall std::wstring::_M_replace(int this, size_t a2, size_t a3, wchar_t *a4, size_t a5) +{ + int v5; // eax + unsigned int v7; // edi + unsigned int v8; // ecx + bool v9; // cl + const wchar_t *S2; // edx + const wchar_t *v11; // eax + size_t v13; // ecx + wchar_t *v14; // eax + int v15; // eax + int v16; // esi + size_t v17; // esi + const wchar_t *v18; // [esp+1Ch] [ebp-30h] + bool v19; // [esp+1Ch] [ebp-30h] + int v20; // [esp+1Ch] [ebp-30h] + wchar_t *S1; // [esp+20h] [ebp-2Ch] + size_t N; // [esp+28h] [ebp-24h] + size_t v23; // [esp+2Ch] [ebp-20h] + + v5 = *(_DWORD *)(this + 4); + if ( a5 > a3 + 0x1FFFFFFF - v5 ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); + v23 = a5 - a3; + v7 = v5 + a5 - a3; + v18 = *(const wchar_t **)this; + if ( *(_DWORD *)this == this + 8 ) + v8 = 7; + else + v8 = *(_DWORD *)(this + 8); + if ( v8 < v7 ) + { + std::wstring::_M_mutate((const wchar_t **)this, a2, a3, a4, a5); + goto LABEL_12; + } + S1 = (wchar_t *)&v18[a2]; + N = v5 - (a3 + a2); + v9 = a3 != a5 && v5 != a3 + a2; + if ( v18 <= a4 && a4 <= &v18[v5] ) + { + if ( a5 && a3 >= a5 ) + { + if ( a5 != 1 ) + { + v19 = a3 != a5 && v5 != a3 + a2; + wmemmove(S1, a4, a5); + if ( !v19 ) + goto LABEL_12; + goto LABEL_18; + } + *S1 = *a4; + } + if ( !v9 ) + { +LABEL_20: + if ( a3 >= a5 ) + goto LABEL_12; + v13 = a5; + v14 = &S1[a3]; + if ( v14 < &a4[a5] ) + { + if ( v14 > a4 ) + { + v15 = (char *)v14 - (char *)a4; + v20 = v15; + v16 = v15 >> 1; + if ( v15 >> 1 == 1 ) + { + *S1 = *a4; + } + else if ( v16 ) + { + wmemmove(S1, a4, v15 >> 1); + v13 = a5; + } + v17 = a5 - v16; + if ( v17 == 1 ) + { + *(wchar_t *)((char *)S1 + v20) = S1[v13]; + } + else if ( v17 ) + { + wmemcpy((wchar_t *)((char *)S1 + v20), &S1[v13], v17); + } + } + else if ( a5 == 1 ) + { + *S1 = a4[v23]; + } + else + { + wmemcpy(S1, &a4[v23], a5); + } + goto LABEL_12; + } + if ( a5 != 1 ) + { + wmemmove(S1, a4, a5); + goto LABEL_12; + } +LABEL_26: + *S1 = *a4; + goto LABEL_12; + } +LABEL_18: + if ( N == 1 ) + S1[a5] = S1[a3]; + else + wmemmove(&S1[a5], &S1[a3], N); + goto LABEL_20; + } + if ( v9 ) + { + S2 = &S1[a3]; + if ( N == 1 ) + S1[a5] = *S2; + else + wmemmove(&S1[a5], S2, N); + } + if ( a5 ) + { + if ( a5 != 1 ) + { + wmemcpy(S1, a4, a5); + goto LABEL_12; + } + goto LABEL_26; + } +LABEL_12: + v11 = *(const wchar_t **)this; + *(_DWORD *)(this + 4) = v7; + v11[v7] = 0; + return this; +} + +//----- (004E0780) -------------------------------------------------------- +int __cdecl std::wstring::_S_compare(int a1, int a2) +{ + return a1 - a2; +} + +//----- (004E0790) -------------------------------------------------------- +int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[2] = a2; + return result; +} + +//----- (004E07A0) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004E07B0) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004E07C0) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004E07D0) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004E07E0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, size_t a2, wchar_t a3) +{ + size_t N; // edx + wchar_t C; // si + wchar_t *result; // eax + + N = a2; + C = a3; + if ( a2 > 7 ) + { + result = (wchar_t *)std::wstring::_M_create(&a2, 0); + *this = result; + N = a2; + this[2] = (wchar_t *)a2; + } + else + { + result = *this; + } + if ( N ) + { + if ( N == 1 ) + { + *result = C; + } + else + { + wmemset(result, C, N); + N = a2; + result = *this; + } + } + this[1] = (wchar_t *)N; + result[N] = 0; + return result; +} + +//----- (004E0860) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( + wchar_t **this, + wchar_t *S2, + int a3, + int a4) +{ + unsigned int N; // ebx + wchar_t *result; // eax + int v7; // edx + unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF + + N = (a3 - (int)S2) >> 1; + v8[0] = N; + if ( N > 7 ) + { + result = (wchar_t *)std::wstring::_M_create(v8, 0); + *this = result; + this[2] = (wchar_t *)v8[0]; + goto LABEL_8; + } + result = *this; + v7 = (a3 - (int)S2) >> 1; + if ( N != 1 ) + { + if ( !N ) + goto LABEL_4; +LABEL_8: + wmemcpy(result, S2, N); + v7 = v8[0]; + result = *this; + goto LABEL_4; + } + *result = *S2; +LABEL_4: + this[1] = (wchar_t *)v7; + result[v7] = 0; + return result; +} +// 4E0860: using guessed type unsigned int var_10[4]; + +//----- (004E08F0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( + wchar_t **this, + wchar_t *S2, + int a3, + int a4) +{ + unsigned int N; // ebx + wchar_t *result; // eax + int v7; // edx + unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF + + N = (a3 - (int)S2) >> 1; + v8[0] = N; + if ( N > 7 ) + { + result = (wchar_t *)std::wstring::_M_create(v8, 0); + *this = result; + this[2] = (wchar_t *)v8[0]; + goto LABEL_8; + } + result = *this; + v7 = (a3 - (int)S2) >> 1; + if ( N != 1 ) + { + if ( !N ) + goto LABEL_4; +LABEL_8: + wmemcpy(result, S2, N); + v7 = v8[0]; + result = *this; + goto LABEL_4; + } + *result = *S2; +LABEL_4: + this[1] = (wchar_t *)v7; + result[v7] = 0; + return result; +} +// 4E08F0: using guessed type unsigned int var_10[4]; + +//----- (004E0980) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4) +{ + unsigned int N; // ebx + unsigned int v6; // edx + wchar_t *result; // eax + wchar_t *v8; // [esp+1Ch] [ebp-10h] BYREF + + if ( a3 && !S2 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + N = (a3 - (int)S2) >> 1; + v8 = (wchar_t *)N; + v6 = N; + if ( N > 7 ) + { + result = (wchar_t *)std::wstring::_M_create((unsigned int *)&v8, 0); + *this = result; + this[2] = v8; + goto LABEL_10; + } + result = *this; + if ( N != 1 ) + { + if ( !N ) + goto LABEL_6; +LABEL_10: + wmemcpy(result, S2, N); + v6 = (unsigned int)v8; + result = *this; + goto LABEL_6; + } + *result = *S2; +LABEL_6: + this[1] = (wchar_t *)v6; + result[v6] = 0; + return result; +} + +//----- (004E0A30) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4) +{ + unsigned int N; // ebx + unsigned int v6; // edx + wchar_t *result; // eax + wchar_t *v8; // [esp+1Ch] [ebp-10h] BYREF + + if ( a3 && !S2 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + N = (a3 - (int)S2) >> 1; + v8 = (wchar_t *)N; + v6 = N; + if ( N > 7 ) + { + result = (wchar_t *)std::wstring::_M_create((unsigned int *)&v8, 0); + *this = result; + this[2] = v8; + goto LABEL_10; + } + result = *this; + if ( N != 1 ) + { + if ( !N ) + goto LABEL_6; +LABEL_10: + wmemcpy(result, S2, N); + v6 = (unsigned int)v8; + result = *this; + goto LABEL_6; + } + *result = *S2; +LABEL_6: + this[1] = (wchar_t *)v6; + result[v6] = 0; + return result; +} + +//----- (004E0AE0) -------------------------------------------------------- +int __fastcall std::wstring::_M_local_data(int a1) +{ + return a1 + 8; +} + +//----- (004E0AF0) -------------------------------------------------------- +int __thiscall std::wstring::_M_set_length(int *this, int a2) +{ + int result; // eax + int v3; // edx + + result = a2; + v3 = *this; + this[1] = a2; + *(_WORD *)(v3 + 2 * a2) = 0; + return result; +} + +//----- (004E0B10) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004E0B50) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004E0B90) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004E0BD0) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004E0C10) -------------------------------------------------------- +void __fastcall std::wstring::shrink_to_fit(_DWORD *a1) +{ + unsigned int v1; // eax + + if ( (_DWORD *)*a1 == a1 + 2 ) + v1 = 7; + else + v1 = a1[2]; + if ( a1[1] < v1 ) + std::wstring::reserve((int)a1, 0); +} +// 4E0C10: could not find valid save-restore pair for ebp + +//----- (004E0C60) -------------------------------------------------------- +int __thiscall std::wstring::_M_replace_aux(int this, size_t a2, int a3, size_t a4, wchar_t a5) +{ + int v6; // eax + const wchar_t *v7; // ecx + unsigned int v8; // esi + unsigned int v9; // ebp + size_t N; // eax + const wchar_t *v11; // ebp + const wchar_t *S2; // edx + wchar_t *S1; // ebp + + v6 = *(_DWORD *)(this + 4); + if ( a4 > a3 + 0x1FFFFFFF - v6 ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); + v7 = *(const wchar_t **)this; + v8 = v6 + a4 - a3; + if ( *(_DWORD *)this == this + 8 ) + v9 = 7; + else + v9 = *(_DWORD *)(this + 8); + if ( v9 < v8 ) + { + std::wstring::_M_mutate((const wchar_t **)this, a2, a3, 0, a4); + v7 = *(const wchar_t **)this; + if ( !a4 ) + goto LABEL_12; + } + else + { + N = v6 - (a3 + a2); + if ( !N || a3 == a4 ) + { +LABEL_9: + if ( !a4 ) + goto LABEL_12; + goto LABEL_10; + } + v11 = &v7[a2]; + S2 = &v11[a3]; + S1 = (wchar_t *)&v11[a4]; + if ( N != 1 ) + { + wmemmove(S1, S2, N); + v7 = *(const wchar_t **)this; + goto LABEL_9; + } + *S1 = *S2; + if ( !a4 ) + goto LABEL_12; + } +LABEL_10: + if ( a4 == 1 ) + { + v7[a2] = a5; + } + else + { + wmemset((wchar_t *)&v7[a2], a5, a4); + v7 = *(const wchar_t **)this; + } +LABEL_12: + *(_DWORD *)(this + 4) = v8; + v7[v8] = 0; + return this; +} + +//----- (004E0D90) -------------------------------------------------------- +int __fastcall std::wstring::_M_get_allocator(int a1) +{ + return a1; +} + +//----- (004E0DA0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct_aux_2(wchar_t **this, size_t a2, wchar_t a3) +{ + return std::wstring::_M_construct(this, a2, a3); +} + +//----- (004E0DB0) -------------------------------------------------------- +int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= this[1] ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); + return *this + 2 * a2; +} + +//----- (004E0DE0) -------------------------------------------------------- +int __fastcall std::wstring::end(_DWORD *a1) +{ + return *a1 + 2 * a1[1]; +} + +//----- (004E0DF0) -------------------------------------------------------- +int __fastcall std::wstring::back(_DWORD *a1) +{ + return *a1 + 2 * a1[1] - 2; +} + +//----- (004E0E00) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (004E0E10) -------------------------------------------------------- +void __thiscall std::wstring::swap(wchar_t **this, int a2) +{ + wchar_t *v2; // eax + wchar_t *S2; // ebp + wchar_t *v5; // edi + wchar_t *v6; // ecx + wchar_t *v7; // edx + wchar_t *v8; // eax + wchar_t *v9; // edx + wchar_t *v10; // eax + wchar_t *v11; // eax + wchar_t *v12; // [esp+1Ch] [ebp-30h] + wchar_t *v13; // [esp+1Ch] [ebp-30h] + wchar_t S1[22]; // [esp+20h] [ebp-2Ch] BYREF + + if ( this != (wchar_t **)a2 ) + { + v2 = *this; + S2 = (wchar_t *)(this + 2); + v5 = (wchar_t *)(a2 + 8); + v6 = *(wchar_t **)a2; + if ( S2 == v2 ) + { + if ( v5 == v6 ) + { + v8 = *(wchar_t **)(a2 + 4); + if ( this[1] ) + { + if ( !v8 ) + { + wmemcpy((wchar_t *)(a2 + 8), S2, 8u); + *(_DWORD *)(a2 + 4) = this[1]; + v10 = *this; + this[1] = 0; + *v10 = 0; + return; + } + wmemcpy(S1, (const wchar_t *)(a2 + 8), 8u); + wmemcpy((wchar_t *)(a2 + 8), S2, 8u); + wmemcpy(S2, S1, 8u); + v8 = *(wchar_t **)(a2 + 4); + v9 = this[1]; + } + else + { + if ( v8 ) + { + wmemcpy(S2, (const wchar_t *)(a2 + 8), 8u); + this[1] = *(wchar_t **)(a2 + 4); + v11 = *(wchar_t **)a2; + *(_DWORD *)(a2 + 4) = 0; + *v11 = 0; + return; + } + v9 = 0; + } + } + else + { + v12 = *(wchar_t **)(a2 + 8); + wmemcpy((wchar_t *)(a2 + 8), S2, 8u); + *this = *(wchar_t **)a2; + v8 = *(wchar_t **)(a2 + 4); + *(_DWORD *)a2 = v5; + this[2] = v12; + v9 = this[1]; + } + } + else + { + v7 = this[2]; + if ( v5 == v6 ) + { + v13 = this[2]; + wmemcpy(S2, (const wchar_t *)(a2 + 8), 8u); + v7 = v13; + *(_DWORD *)a2 = *this; + *this = S2; + } + else + { + *this = v6; + *(_DWORD *)a2 = v2; + this[2] = *(wchar_t **)(a2 + 8); + } + *(_DWORD *)(a2 + 8) = v7; + v8 = *(wchar_t **)(a2 + 4); + v9 = this[1]; + } + this[1] = v8; + *(_DWORD *)(a2 + 4) = v9; + } +} + +//----- (004E0F90) -------------------------------------------------------- +int __fastcall std::wstring::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004E0FA0) -------------------------------------------------------- +_WORD *__fastcall std::wstring::clear(int a1) +{ + _WORD *result; // eax + + result = *(_WORD **)a1; + *(_DWORD *)(a1 + 4) = 0; + *result = 0; + return result; +} + +//----- (004E0FB0) -------------------------------------------------------- +int __thiscall std::wstring::erase(int *this, int a2) +{ + int v3; // ebx + + v3 = a2 - *this; + std::wstring::_M_erase(this, v3 >> 1, 1); + return v3 + *this; +} + +//----- (004E0FE0) -------------------------------------------------------- +_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) +{ + _WORD *result; // eax + int v5; // esi + int v6; // edi + int v7; // ecx + + result = a2; + v5 = (int)a2 - *this; + v6 = *this + 2 * this[1]; + v7 = v5 >> 1; + if ( a3 == v6 ) + { + this[1] = v7; + *a2 = 0; + } + else + { + std::wstring::_M_erase(this, v7, (a3 - (int)a2) >> 1); + return (_WORD *)(v5 + *this); + } + return result; +} + +//----- (004E1050) -------------------------------------------------------- +int __thiscall std::wstring::erase(int *this, int a2) +{ + int v3; // ebx + + v3 = a2 - *this; + std::wstring::_M_erase(this, v3 >> 1, 1); + return v3 + *this; +} + +//----- (004E1080) -------------------------------------------------------- +_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) +{ + _WORD *result; // eax + int v5; // esi + int v6; // edi + int v7; // ecx + + result = a2; + v5 = (int)a2 - *this; + v6 = *this + 2 * this[1]; + v7 = v5 >> 1; + if ( a3 == v6 ) + { + this[1] = v7; + *a2 = 0; + } + else + { + std::wstring::_M_erase(this, v7, (a3 - (int)a2) >> 1); + return (_WORD *)(v5 + *this); + } + return result; +} + +//----- (004E10F0) -------------------------------------------------------- +int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3) +{ + int *result; // eax + unsigned int v4; // ebx + unsigned int v5; // ebx + int v6; // ecx + + result = this; + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + a2, + v4); + if ( a3 == -1 ) + { + v6 = *this; + result[1] = a2; + *(_WORD *)(v6 + 2 * a2) = 0; + } + else if ( a3 ) + { + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + std::wstring::_M_erase(this, a2, v5); + return this; + } + return result; +} + +//----- (004E1180) -------------------------------------------------------- +int __fastcall std::wstring::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004E1190) -------------------------------------------------------- +int __thiscall std::wstring::append(_DWORD *this, wchar_t *String) +{ + unsigned int v3; // eax + + v3 = wcslen(String); + if ( v3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, String, v3); +} + +//----- (004E11E0) -------------------------------------------------------- +int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3) +{ + if ( a3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, a2, a3); +} + +//----- (004E1210) -------------------------------------------------------- +int __thiscall std::wstring::append(void *this, int a2) +{ + return std::wstring::_M_append((int)this, *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); +} + +//----- (004E1240) -------------------------------------------------------- +int __thiscall std::wstring::append(void *this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // edx + + v4 = a2[1] - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > a2[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::append", + a3, + a2[1]); + return std::wstring::_M_append((int)this, (wchar_t *)(*a2 + 2 * a3), v4); +} + +//----- (004E12A0) -------------------------------------------------------- +int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3) +{ + if ( a3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, a2, a3); +} + +//----- (004E12D0) -------------------------------------------------------- +int __thiscall std::wstring::append(size_t *this, size_t a2, __int16 a3) +{ + return std::wstring::_M_replace_aux((int)this, this[1], 0, a2, a3); +} + +//----- (004E1300) -------------------------------------------------------- +wchar_t **__thiscall std::wstring::assign(wchar_t **this, int a2) +{ + wchar_t *S1; // eax + wchar_t *v4; // edi + wchar_t *v5; // ecx + wchar_t *v6; // edx + wchar_t *v7; // ebp + wchar_t *v9; // [esp+1Ch] [ebp-20h] + + S1 = *this; + v4 = *(wchar_t **)a2; + v5 = (wchar_t *)(a2 + 8); + v6 = *(wchar_t **)(a2 + 4); + if ( *(_DWORD *)a2 != a2 + 8 ) + { + v9 = *(wchar_t **)(a2 + 8); + if ( S1 == (wchar_t *)(this + 2) ) + { + *this = v4; + this[1] = v6; + this[2] = v9; + } + else + { + *this = v4; + v7 = this[2]; + this[1] = v6; + this[2] = v9; + if ( S1 ) + { + *(_DWORD *)a2 = S1; + *(_DWORD *)(a2 + 8) = v7; + goto LABEL_5; + } + } + *(_DWORD *)a2 = v5; + S1 = (wchar_t *)(a2 + 8); + goto LABEL_5; + } + if ( v6 ) + { + if ( v6 == (wchar_t *)1 ) + { + *S1 = *(_WORD *)(a2 + 8); + } + else + { + wmemcpy(S1, (const wchar_t *)(a2 + 8), *(_DWORD *)(a2 + 4)); + v6 = *(wchar_t **)(a2 + 4); + S1 = *this; + v5 = *(wchar_t **)a2; + } + } + this[1] = v6; + S1[(_DWORD)v6] = 0; + S1 = v5; +LABEL_5: + *(_DWORD *)(a2 + 4) = 0; + *S1 = 0; + return this; +} + +//----- (004E13C0) -------------------------------------------------------- +int __thiscall std::wstring::assign(size_t *this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::_M_replace((int)this, 0, this[1], String, v3); +} + +//----- (004E1400) -------------------------------------------------------- +int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3) +{ + return std::wstring::_M_replace((int)this, 0, this[1], a2, a3); +} + +//----- (004E1430) -------------------------------------------------------- +void *__thiscall std::wstring::assign(void *this, int a2) +{ + std::wstring::_M_assign((int)this, a2); + return this; +} + +//----- (004E1450) -------------------------------------------------------- +int __thiscall std::wstring::assign(size_t *this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // edx + + v4 = a2[1] - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > a2[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::assign", + a3, + a2[1]); + return std::wstring::_M_replace((int)this, 0, this[1], (wchar_t *)(*a2 + 2 * a3), v4); +} + +//----- (004E14C0) -------------------------------------------------------- +int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3) +{ + return std::wstring::_M_replace((int)this, 0, this[1], a2, a3); +} + +//----- (004E14F0) -------------------------------------------------------- +int __thiscall std::wstring::assign(int *this, size_t a2, __int16 a3) +{ + return std::wstring::_M_replace_aux((int)this, 0, this[1], a2, a3); +} + +//----- (004E1520) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, int a4) +{ + int v5; // esi + unsigned int v6; // ecx + + v5 = a2 - *this; + v6 = this[1]; + if ( v5 >> 1 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5 >> 1, + v6); + std::wstring::_M_replace((int)this, v5 >> 1, 0, a3, (2 * a4) >> 1); + return v5 + *this; +} + +//----- (004E1590) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4) +{ + int v5; // ebx + + v5 = a2 - *this; + std::wstring::_M_replace_aux((int)this, v5 >> 1, 0, a3, a4); + return v5 + *this; +} + +//----- (004E15E0) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3) +{ + int v4; // ebx + + v4 = a2 - *this; + std::wstring::_M_replace_aux((int)this, v4 >> 1, 0, 1u, a3); + return v4 + *this; +} + +//----- (004E1630) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, size_t a4) +{ + unsigned int v4; // eax + + v4 = (a2 - *this) >> 1; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::wstring::_M_replace((int)this, v4, 0, a3, a4); +} + +//----- (004E1690) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4) +{ + return std::wstring::_M_replace_aux((int)this, (a2 - *this) >> 1, 0, a3, a4); +} + +//----- (004E16D0) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3) +{ + int v4; // ebx + + v4 = a2 - *this; + std::wstring::_M_replace_aux((int)this, v4 >> 1, 0, 1u, a3); + return v4 + *this; +} + +//----- (004E1720) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *String) +{ + size_t v4; // eax + + v4 = wcslen(String); + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, 0, String, v4); +} + +//----- (004E1790) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *a3, size_t a4) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, 0, a3, a4); +} + +//----- (004E17F0) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, int a3) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, 0, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); +} + +//----- (004E1850) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, _DWORD *a3, unsigned int a4, size_t a5) +{ + size_t v5; // edi + + v5 = a3[1] - a4; + if ( v5 > a5 ) + v5 = a5; + if ( a4 > a3[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a4, + a3[1]); + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, 0, (wchar_t *)(*a3 + 2 * a4), v5); +} + +//----- (004E18E0) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, size_t a3, __int16 a4) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a2, + this[1]); + return std::wstring::_M_replace_aux((int)this, a2, 0, a3, a4); +} + +//----- (004E1940) -------------------------------------------------------- +int __thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>( + _DWORD *this, + int a2, + wchar_t *a3, + int a4) +{ + unsigned int v4; // eax + + v4 = (a2 - *this) >> 1; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::wstring::_M_replace((int)this, v4, 0, a3, (a4 - (int)a3) >> 1); +} + +//----- (004E19B0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * a2[1]; + return result; +} + +//----- (004E19D0) -------------------------------------------------------- +int __thiscall std::wstring::resize(int *this, unsigned int a2) +{ + return std::wstring::resize(this, a2, 0); +} + +//----- (004E19F0) -------------------------------------------------------- +int __thiscall std::wstring::resize(int *this, unsigned int a2, wchar_t a3) +{ + size_t v3; // edx + int result; // eax + int v5; // edx + + v3 = this[1]; + result = a2; + if ( v3 < a2 ) + return std::wstring::_M_replace_aux((int)this, v3, 0, a2 - v3, a3); + if ( v3 > a2 ) + { + v5 = *this; + this[1] = a2; + *(_WORD *)(v5 + 2 * a2) = 0; + } + return result; +} + +//----- (004E1A50) -------------------------------------------------------- +int __thiscall std::wstring::_M_data(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004E1A60) -------------------------------------------------------- +size_t __cdecl std::wstring::_S_copy(wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t result; // eax + + result = N; + if ( N == 1 ) + { + result = *S2; + *S1 = result; + } + else if ( N ) + { + return (size_t)wmemcpy(S1, S2, N); + } + return result; +} + +//----- (004E1A90) -------------------------------------------------------- +size_t __cdecl std::wstring::_S_move(wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t result; // eax + + result = N; + if ( N == 1 ) + { + result = *S2; + *S1 = result; + } + else if ( N ) + { + return (size_t)wmemmove(S1, S2, N); + } + return result; +} + +//----- (004E1AC0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004E1B30) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004E1BA0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4) +{ + unsigned int v4; // edx + unsigned int v5; // eax + + v4 = (a2 - *this) >> 1; + v5 = (a3 - a2) >> 1; + if ( v5 > this[1] - v4 ) + v5 = this[1] - v4; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::wstring::_M_replace((int)this, v4, v5, *(wchar_t **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004E1C20) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String) +{ + size_t v5; // eax + unsigned int v6; // ebx + unsigned int v7; // edx + + v5 = wcslen(String); + v6 = (a2 - *this) >> 1; + v7 = (a3 - a2) >> 1; + if ( v7 > this[1] - v6 ) + v7 = this[1] - v6; + if ( v6 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + this[1]); + return std::wstring::_M_replace((int)this, v6, v7, String, v5); +} + +//----- (004E1CA0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004E1D10) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, a5); +} + +//----- (004E1D80) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004E1DF0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, a5); +} + +//----- (004E1E60) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5) +{ + return std::wstring::_M_replace_aux((int)this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); +} + +//----- (004E1E90) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004E1F00) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String) +{ + size_t v5; // eax + unsigned int v6; // ebx + unsigned int v7; // edx + + v5 = wcslen(String); + v6 = (a2 - *this) >> 1; + v7 = (a3 - a2) >> 1; + if ( v7 > this[1] - v6 ) + v7 = this[1] - v6; + if ( v6 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + this[1]); + return std::wstring::_M_replace((int)this, v6, v7, String, v5); +} + +//----- (004E1F80) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004E1FF0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, a5); +} + +//----- (004E2060) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4) +{ + unsigned int v4; // edx + unsigned int v5; // eax + + v4 = (a2 - *this) >> 1; + v5 = (a3 - a2) >> 1; + if ( v5 > this[1] - v4 ) + v5 = this[1] - v4; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::wstring::_M_replace((int)this, v4, v5, *(wchar_t **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004E20E0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004E2150) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004E21C0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5) +{ + return std::wstring::_M_replace_aux((int)this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); +} + +//----- (004E21F0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) +{ + size_t v5; // eax + size_t v6; // edx + + v5 = wcslen(String); + v6 = this[1] - a2; + if ( v6 > a3 ) + v6 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, v6, String, v5); +} + +//----- (004E2260) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t a5) +{ + size_t v5; // edx + + v5 = this[1] - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, v5, a4, a5); +} + +//----- (004E22C0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, int a4) +{ + size_t v4; // eax + + v4 = this[1] - a2; + if ( v4 > a3 ) + v4 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, v4, *(wchar_t **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004E2330) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) +{ + size_t v6; // ebx + size_t v7; // eax + + v6 = a4[1] - a5; + if ( v6 > a6 ) + v6 = a6; + if ( a5 > a4[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a5, + a4[1]); + v7 = this[1] - a2; + if ( v7 > a3 ) + v7 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, v7, (wchar_t *)(*a4 + 2 * a5), v6); +} + +//----- (004E23D0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5) +{ + unsigned int v5; // edx + + v5 = this[1] - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace_aux((int)this, a2, v5, a4, a5); +} + +//----- (004E2440) -------------------------------------------------------- +void __thiscall std::wstring::reserve(int this, unsigned int a2) +{ + unsigned int v3; // ecx + unsigned int v4; // eax + wchar_t *v5; // edi + wchar_t *v6; // esi + unsigned int v7; // edx + wchar_t *v8; // eax + int v9; // edx + wchar_t *S1; // edi + wchar_t *S2; // eax + unsigned int v12; // eax + + v3 = *(_DWORD *)(this + 4); + v4 = a2; + if ( a2 < v3 ) + { + a2 = v3; + v4 = v3; + } + v5 = *(wchar_t **)this; + v6 = (wchar_t *)(this + 8); + if ( this + 8 == *(_DWORD *)this ) + v7 = 7; + else + v7 = *(_DWORD *)(this + 8); + if ( v7 != v4 ) + { + if ( v7 > 7 ) + { + if ( v4 > 7 ) + goto LABEL_8; + } + else if ( v4 > v7 ) + { +LABEL_8: + v8 = (wchar_t *)std::wstring::_M_create(&a2, v7); + v9 = *(_DWORD *)(this + 4); + S1 = v8; + S2 = *(wchar_t **)this; + if ( v9 ) + { + if ( v9 != -1 ) + { + wmemcpy(S1, S2, v9 + 1); + S2 = *(wchar_t **)this; + } + } + else + { + *S1 = *S2; + } + if ( v6 != S2 ) + operator delete(S2); + v12 = a2; + *(_DWORD *)this = S1; + *(_DWORD *)(this + 8) = v12; + return; + } + if ( v6 != v5 ) + { + if ( v3 ) + { + if ( v3 != -1 ) + { + wmemcpy((wchar_t *)(this + 8), *(const wchar_t **)this, v3 + 1); + v5 = *(wchar_t **)this; + } + } + else + { + *(_WORD *)(this + 8) = *v5; + } + operator delete(v5); + *(_DWORD *)this = v6; + } + } +} + +//----- (004E2560) -------------------------------------------------------- +int __thiscall std::wstring::_M_erase(int *this, int a2, int a3) +{ + int v4; // eax + int v5; // ecx + wchar_t *S1; // edi + int result; // eax + + v4 = this[1]; + v5 = *this; + if ( v4 != a2 + a3 && a3 ) + { + S1 = (wchar_t *)(v5 + 2 * a2); + if ( v4 - (a2 + a3) == 1 ) + { + *S1 = *(_WORD *)(v5 + 2 * (a2 + a3)); + } + else + { + wmemmove(S1, (const wchar_t *)(v5 + 2 * (a2 + a3)), v4 - (a2 + a3)); + v5 = *this; + v4 = this[1]; + } + } + result = v4 - a3; + this[1] = result; + *(_WORD *)(v5 + 2 * result) = 0; + return result; +} + +//----- (004E25D0) -------------------------------------------------------- +int __fastcall std::wstring::pop_back(int *a1) +{ + return std::wstring::_M_erase(a1, a1[1] - 1, 1); +} + +//----- (004E25F0) -------------------------------------------------------- +int __thiscall std::wstring::_M_append(int this, wchar_t *S2, size_t N) +{ + int v4; // edi + size_t v5; // ecx + const wchar_t *v6; // eax + unsigned int v7; // esi + unsigned int v8; // edi + wchar_t *S1; // ecx + + v4 = this + 8; + v5 = *(_DWORD *)(this + 4); + v6 = *(const wchar_t **)this; + v7 = v5 + N; + if ( *(_DWORD *)this == v4 ) + v8 = 7; + else + v8 = *(_DWORD *)(this + 8); + if ( v7 > v8 ) + { + std::wstring::_M_mutate((const wchar_t **)this, v5, 0, S2, N); + v6 = *(const wchar_t **)this; + } + else if ( N ) + { + S1 = (wchar_t *)&v6[v5]; + if ( N == 1 ) + { + *S1 = *S2; + } + else + { + wmemcpy(S1, S2, N); + v6 = *(const wchar_t **)this; + } + } + *(_DWORD *)(this + 4) = v7; + v6[v7] = 0; + return this; +} + +//----- (004E2690) -------------------------------------------------------- +void __thiscall std::wstring::_M_assign(int this, int a2) +{ + wchar_t *S1; // esi + size_t N; // edi + unsigned int v5; // eax + const wchar_t *S2; // eax + unsigned int v7; // eax + int v8; // [esp+1Ch] [ebp-30h] + unsigned int v9[8]; // [esp+2Ch] [ebp-20h] BYREF + + if ( this != a2 ) + { + S1 = *(wchar_t **)this; + N = *(_DWORD *)(a2 + 4); + if ( this + 8 == *(_DWORD *)this ) + v5 = 7; + else + v5 = *(_DWORD *)(this + 8); + if ( v5 < N ) + { + v8 = this + 8; + v9[0] = *(_DWORD *)(a2 + 4); + S1 = (wchar_t *)std::wstring::_M_create(v9, v5); + if ( v8 != *(_DWORD *)this ) + operator delete(*(void **)this); + v7 = v9[0]; + *(_DWORD *)this = S1; + *(_DWORD *)(this + 8) = v7; + if ( !N ) + goto LABEL_8; + } + else if ( !N ) + { +LABEL_8: + *(_DWORD *)(this + 4) = N; + S1[N] = 0; + return; + } + S2 = *(const wchar_t **)a2; + if ( N == 1 ) + { + *S1 = *S2; + } + else + { + wmemcpy(S1, S2, N); + S1 = *(wchar_t **)this; + } + goto LABEL_8; + } +} +// 4E2690: using guessed type unsigned int var_20[8]; + +//----- (004E2750) -------------------------------------------------------- +void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2) +{ + unsigned int v2; // eax + unsigned int v3; // edx + void (__cdecl *v5)(void *); // [esp+4h] [ebp-18h] + + v2 = *a1; + if ( *a1 > 0x1FFFFFFF ) + std::__throw_length_error((std::length_error *)"basic_string::_M_create"); + if ( v2 > a2 ) + { + v3 = 2 * a2; + if ( v2 < 2 * a2 ) + { + if ( v3 > 0x1FFFFFFF ) + { + *a1 = 0x1FFFFFFF; + return operator new((struct type_info *)0x40000000, v5); + } + *a1 = v3; + v2 = 2 * a2; + } + } + return operator new((struct type_info *)(2 * (v2 + 1)), v5); +} +// 4E2786: variable 'v5' is possibly undefined + +//----- (004E27C0) -------------------------------------------------------- +int __thiscall std::wstring::_M_length(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[1] = a2; + return result; +} + +//----- (004E27D0) -------------------------------------------------------- +const wchar_t *__thiscall std::wstring::_M_mutate(const wchar_t **this, size_t N, int a3, wchar_t *a4, size_t a5) +{ + const wchar_t *v6; // edx + unsigned int v7; // eax + wchar_t *S1; // esi + const wchar_t *S2; // eax + wchar_t *v10; // eax + const wchar_t *v11; // ebp + wchar_t *v12; // ebx + const wchar_t *result; // eax + size_t v14; // [esp+18h] [ebp-34h] + wchar_t *v15; // [esp+1Ch] [ebp-30h] + unsigned int v16[8]; // [esp+2Ch] [ebp-20h] BYREF + + v6 = this[1]; + v16[0] = (unsigned int)v6 + a5 - a3; + v14 = (size_t)v6 - N - a3; + v15 = (wchar_t *)(this + 2); + if ( this + 2 == (const wchar_t **)*this ) + v7 = 7; + else + v7 = (unsigned int)this[2]; + S1 = (wchar_t *)std::wstring::_M_create(v16, v7); + if ( N ) + { + S2 = *this; + if ( N == 1 ) + *S1 = *S2; + else + wmemcpy(S1, S2, N); + } + if ( a4 && a5 ) + { + if ( a5 == 1 ) + S1[N] = *a4; + else + wmemcpy(&S1[N], a4, a5); + } + v10 = (wchar_t *)*this; + if ( v14 ) + { + v11 = &v10[N + a3]; + v12 = &S1[a5 + N]; + if ( v14 == 1 ) + { + *v12 = *v11; + } + else + { + wmemcpy(v12, v11, v14); + v10 = (wchar_t *)*this; + } + } + if ( v15 != v10 ) + operator delete(v10); + result = (const wchar_t *)v16[0]; + *this = S1; + this[2] = result; + return result; +} +// 4E27D0: using guessed type unsigned int var_20[8]; + +//----- (004E2910) -------------------------------------------------------- +wchar_t *__cdecl std::wstring::_S_assign(wchar_t *a1, size_t C, size_t N) +{ + wchar_t *result; // eax + + result = (wchar_t *)C; + if ( C == 1 ) + { + *a1 = N; + } + else if ( C ) + { + return wmemset(a1, N, C); + } + return result; +} +// 4E2910: using guessed type size_t C; + +//----- (004E2950) -------------------------------------------------------- +const wchar_t *__thiscall std::wstring::push_back(int this, wchar_t a2) +{ + size_t v3; // esi + const wchar_t *result; // eax + unsigned int v5; // edi + unsigned int v6; // edx + + v3 = *(_DWORD *)(this + 4); + result = *(const wchar_t **)this; + v5 = v3 + 1; + if ( *(_DWORD *)this == this + 8 ) + v6 = 7; + else + v6 = *(_DWORD *)(this + 8); + if ( v5 > v6 ) + { + std::wstring::_M_mutate((const wchar_t **)this, v3, 0, 0, 1u); + result = *(const wchar_t **)this; + } + result[v3] = a2; + *(_DWORD *)(this + 4) = v5; + result[v3 + 1] = 0; + return result; +} + +//----- (004E29D0) -------------------------------------------------------- +int __thiscall std::wstring::basic_string(wchar_t *this, int a2) +{ + int v3; // eax + int result; // eax + + *(_DWORD *)this = this + 4; + if ( a2 + 8 == *(_DWORD *)a2 ) + { + wmemcpy(this + 4, (const wchar_t *)(a2 + 8), 8u); + } + else + { + *(_DWORD *)this = *(_DWORD *)a2; + *((_DWORD *)this + 2) = *(_DWORD *)(a2 + 8); + } + v3 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + *(_DWORD *)(a2 + 4) = 0; + *((_DWORD *)this + 1) = v3; + result = 0; + *(_WORD *)(a2 + 8) = 0; + return result; +} + +//----- (004E2A30) -------------------------------------------------------- +_WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3) +{ + wchar_t *S1; // ecx + int v5; // edx + _WORD *result; // eax + int v7; // edx + int v8; // eax + + S1 = this + 4; + *(_DWORD *)this = S1; + if ( a2 + 8 == *(_DWORD *)a2 ) + { + wmemcpy(S1, (const wchar_t *)(a2 + 8), 8u); + v8 = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = 0; + *((_DWORD *)this + 1) = v8; + result = *(_WORD **)a2; + **(_WORD **)a2 = 0; + } + else + { + *(_DWORD *)this = *(_DWORD *)a2; + v5 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + result = 0; + *((_DWORD *)this + 1) = v5; + v7 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = 0; + *(_WORD *)(a2 + 8) = 0; + *((_DWORD *)this + 2) = v7; + } + return result; +} + +//----- (004E2AA0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3) +{ + int v3; // eax + size_t v4; // eax + int v6; // [esp+8h] [ebp-24h] + wchar_t **v7; // [esp+1Ch] [ebp-10h] + + *this = (wchar_t *)(this + 2); + v3 = -2; + if ( String ) + { + v7 = this; + v4 = wcslen(String); + this = v7; + v3 = (int)&String[v4]; + } + LOBYTE(v6) = 0; + return std::wstring::_M_construct(this, String, v3, v6); +} +// 4E2AD5: variable 'v6' is possibly undefined + +//----- (004E2AF0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); +} + +//----- (004E2B10) -------------------------------------------------------- +int __thiscall std::wstring::basic_string(_DWORD *this, int a2) +{ + int result; // eax + + this[1] = 0; + *this = this + 2; + result = 0; + *((_WORD *)this + 4) = 0; + return result; +} + +//----- (004E2B30) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v3) = 0; + return std::wstring::_M_construct(this, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); +} +// 4E2B50: variable 'v3' is possibly undefined + +//----- (004E2B60) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v4) = 0; + return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( + this, + *(wchar_t **)a2, + *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), + v4); +} +// 4E2B80: variable 'v4' is possibly undefined + +//----- (004E2B90) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) +{ + unsigned int v4; // eax + + *this = (wchar_t *)(this + 2); + v4 = *((_DWORD *)a2 + 1); + if ( a3 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *((_DWORD *)a2 + 1)); + LOBYTE(a4) = 0; + return std::wstring::_M_construct( + this, + (wchar_t *)(*(_DWORD *)a2 + 2 * a3), + *(_DWORD *)a2 + 2 * a3 + 2 * (v4 - a3), + a4); +} + +//----- (004E2BF0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) +{ + unsigned int v4; // esi + unsigned int v5; // eax + unsigned int v6; // eax + + *this = (wchar_t *)(this + 2); + v4 = a4; + v5 = *((_DWORD *)a2 + 1); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *((_DWORD *)a2 + 1)); + v6 = v5 - a3; + LOBYTE(a4) = 0; + if ( v6 > v4 ) + v6 = v4; + return std::wstring::_M_construct( + this, + (wchar_t *)(*(_DWORD *)a2 + 2 * a3), + *(_DWORD *)a2 + 2 * a3 + 2 * v6, + a4); +} + +//----- (004E2C60) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); + v6 = v5 - a3; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + return std::wstring::_M_construct(this, (wchar_t *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); +} +// 4E2C97: variable 'v8' is possibly undefined + +//----- (004E2CD0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); +} + +//----- (004E2CF0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4) +{ + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3); +} + +//----- (004E2D20) -------------------------------------------------------- +int __fastcall std::wstring::basic_string(int a1) +{ + int result; // eax + + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + result = 0; + *(_WORD *)(a1 + 8) = 0; + return result; +} + +//----- (004E2D40) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( + wchar_t **this, + wchar_t *a2, + int a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); +} + +//----- (004E2D50) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3, a4); +} + +//----- (004E2D60) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3, a4); +} + +//----- (004E2D70) -------------------------------------------------------- +int __thiscall std::wstring::basic_string(wchar_t *this, int a2) +{ + int v3; // eax + int result; // eax + + *(_DWORD *)this = this + 4; + if ( a2 + 8 == *(_DWORD *)a2 ) + { + wmemcpy(this + 4, (const wchar_t *)(a2 + 8), 8u); + } + else + { + *(_DWORD *)this = *(_DWORD *)a2; + *((_DWORD *)this + 2) = *(_DWORD *)(a2 + 8); + } + v3 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + *(_DWORD *)(a2 + 4) = 0; + *((_DWORD *)this + 1) = v3; + result = 0; + *(_WORD *)(a2 + 8) = 0; + return result; +} + +//----- (004E2DD0) -------------------------------------------------------- +_WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3) +{ + wchar_t *S1; // ecx + int v5; // edx + _WORD *result; // eax + int v7; // edx + int v8; // eax + + S1 = this + 4; + *(_DWORD *)this = S1; + if ( a2 + 8 == *(_DWORD *)a2 ) + { + wmemcpy(S1, (const wchar_t *)(a2 + 8), 8u); + v8 = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = 0; + *((_DWORD *)this + 1) = v8; + result = *(_WORD **)a2; + **(_WORD **)a2 = 0; + } + else + { + *(_DWORD *)this = *(_DWORD *)a2; + v5 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + result = 0; + *((_DWORD *)this + 1) = v5; + v7 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = 0; + *(_WORD *)(a2 + 8) = 0; + *((_DWORD *)this + 2) = v7; + } + return result; +} + +//----- (004E2E40) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3) +{ + int v3; // eax + size_t v4; // eax + int v6; // [esp+8h] [ebp-24h] + wchar_t **v7; // [esp+1Ch] [ebp-10h] + + *this = (wchar_t *)(this + 2); + v3 = -2; + if ( String ) + { + v7 = this; + v4 = wcslen(String); + this = v7; + v3 = (int)&String[v4]; + } + LOBYTE(v6) = 0; + return std::wstring::_M_construct(this, String, v3, v6); +} +// 4E2E75: variable 'v6' is possibly undefined + +//----- (004E2E90) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); +} + +//----- (004E2EB0) -------------------------------------------------------- +int __thiscall std::wstring::basic_string(_DWORD *this, int a2) +{ + int result; // eax + + this[1] = 0; + *this = this + 2; + result = 0; + *((_WORD *)this + 4) = 0; + return result; +} + +//----- (004E2ED0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v3) = 0; + return std::wstring::_M_construct(this, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); +} +// 4E2EF0: variable 'v3' is possibly undefined + +//----- (004E2F00) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v4) = 0; + return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( + this, + *(wchar_t **)a2, + *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), + v4); +} +// 4E2F20: variable 'v4' is possibly undefined + +//----- (004E2F30) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) +{ + unsigned int v4; // eax + + *this = (wchar_t *)(this + 2); + v4 = *((_DWORD *)a2 + 1); + if ( a3 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *((_DWORD *)a2 + 1)); + LOBYTE(a4) = 0; + return std::wstring::_M_construct( + this, + (wchar_t *)(*(_DWORD *)a2 + 2 * a3), + *(_DWORD *)a2 + 2 * a3 + 2 * (v4 - a3), + a4); +} + +//----- (004E2F90) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) +{ + unsigned int v4; // esi + unsigned int v5; // eax + unsigned int v6; // eax + + *this = (wchar_t *)(this + 2); + v4 = a4; + v5 = *((_DWORD *)a2 + 1); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *((_DWORD *)a2 + 1)); + v6 = v5 - a3; + LOBYTE(a4) = 0; + if ( v6 > v4 ) + v6 = v4; + return std::wstring::_M_construct( + this, + (wchar_t *)(*(_DWORD *)a2 + 2 * a3), + *(_DWORD *)a2 + 2 * a3 + 2 * v6, + a4); +} + +//----- (004E3000) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); + v6 = v5 - a3; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + return std::wstring::_M_construct(this, (wchar_t *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); +} +// 4E3037: variable 'v8' is possibly undefined + +//----- (004E3070) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); +} + +//----- (004E3090) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4) +{ + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3); +} + +//----- (004E30C0) -------------------------------------------------------- +int __fastcall std::wstring::basic_string(int a1) +{ + int result; // eax + + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + result = 0; + *(_WORD *)(a1 + 8) = 0; + return result; +} + +//----- (004E30E0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( + wchar_t **this, + wchar_t *a2, + int a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); +} + +//----- (004E30F0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3, a4); +} + +//----- (004E3100) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3, a4); +} + +//----- (004E3110) -------------------------------------------------------- +void __fastcall std::wstring::~wstring(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004E3140) -------------------------------------------------------- +void __fastcall std::wstring::~wstring(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004E3170) -------------------------------------------------------- +wchar_t **__thiscall std::wstring::operator=(wchar_t **this, int a2) +{ + wchar_t *S1; // eax + const wchar_t *S2; // edx + wchar_t *v5; // ecx + wchar_t *v6; // ebp + wchar_t *v8; // [esp+1Ch] [ebp-20h] + + S1 = *this; + S2 = *(const wchar_t **)a2; + v5 = *(wchar_t **)(a2 + 4); + if ( a2 + 8 != *(_DWORD *)a2 ) + { + v8 = *(wchar_t **)(a2 + 8); + if ( S1 == (wchar_t *)(this + 2) ) + { + *this = (wchar_t *)S2; + this[1] = v5; + this[2] = v8; + } + else + { + *this = (wchar_t *)S2; + v6 = this[2]; + this[1] = v5; + this[2] = v8; + if ( S1 ) + { + *(_DWORD *)a2 = S1; + *(_DWORD *)(a2 + 8) = v6; + goto LABEL_5; + } + } + *(_DWORD *)a2 = a2 + 8; + S1 = (wchar_t *)(a2 + 8); + goto LABEL_5; + } + if ( v5 ) + { + if ( v5 == (wchar_t *)1 ) + { + *S1 = *S2; + } + else + { + wmemcpy(S1, S2, *(_DWORD *)(a2 + 4)); + S1 = *this; + v5 = *(wchar_t **)(a2 + 4); + S2 = *(const wchar_t **)a2; + } + } + this[1] = v5; + S1[(_DWORD)v5] = 0; + S1 = (wchar_t *)S2; +LABEL_5: + *(_DWORD *)(a2 + 4) = 0; + *S1 = 0; + return this; +} + +//----- (004E3220) -------------------------------------------------------- +int __thiscall std::wstring::operator=(size_t *this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::_M_replace((int)this, 0, this[1], String, v3); +} + +//----- (004E3260) -------------------------------------------------------- +void *__thiscall std::wstring::operator=(void *this, int a2) +{ + std::wstring::_M_assign((int)this, a2); + return this; +} + +//----- (004E3280) -------------------------------------------------------- +size_t *__thiscall std::wstring::operator=(size_t *this, wchar_t *a2, size_t a3) +{ + std::wstring::_M_replace((int)this, 0, this[1], a2, a3); + return this; +} + +//----- (004E32C0) -------------------------------------------------------- +int *__thiscall std::wstring::operator=(int *this, wchar_t a2) +{ + std::wstring::_M_replace_aux((int)this, 0, this[1], 1u, a2); + return this; +} + +//----- (004E3300) -------------------------------------------------------- +int __thiscall std::wstring::operator[](_DWORD *this, int a2) +{ + return *this + 2 * a2; +} + +//----- (004E3310) -------------------------------------------------------- +int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String) +{ + unsigned int v3; // eax + + v3 = wcslen(String); + if ( v3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, String, v3); +} + +//----- (004E3360) -------------------------------------------------------- +int __thiscall std::wstring::operator+=(void *this, int a2) +{ + return std::wstring::_M_append((int)this, *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); +} + +//----- (004E3390) -------------------------------------------------------- +int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *a2, size_t a3) +{ + if ( a3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, a2, a3); +} + +//----- (004E33C0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::operator+=(char *this, __int16 a2) +{ + _DWORD *result; // eax + char *v3; // ecx + size_t v4; // ebx + char *v5; // edx + unsigned int v6; // esi + unsigned int v7; // ecx + _DWORD *v8; // [esp+1Ch] [ebp-10h] + + result = this; + v3 = this + 8; + v4 = *((_DWORD *)v3 - 1); + v5 = (char *)*((_DWORD *)v3 - 2); + v6 = v4 + 1; + if ( v5 == v3 ) + v7 = 7; + else + v7 = result[2]; + if ( v6 > v7 ) + { + v8 = result; + std::wstring::_M_mutate((const wchar_t **)result, v4, 0, 0, 1u); + result = v8; + v5 = (char *)*v8; + } + *(_WORD *)&v5[2 * v4] = a2; + result[1] = v6; + *(_WORD *)&v5[2 * v4 + 2] = 0; + return result; +} + +//----- (004E3440) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_5382A8; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_537F30; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 537F30: using guessed type int (*off_537F30)(); +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004E3500) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_5382A8; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_537F30; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 537F30: using guessed type int (*off_537F30)(); +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004E35D0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_5382A8; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_537F30; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 537F30: using guessed type int (*off_537F30)(); +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004E3690) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_5382A8; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_537F30; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 537F30: using guessed type int (*off_537F30)(); +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004E3760) -------------------------------------------------------- +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5382A8; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4E3779: variable 'v2' is possibly undefined +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004E3790) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382A8; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4E3799: variable 'v1' is possibly undefined +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004E37C0) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382A8; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4E37C9: variable 'v1' is possibly undefined +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004E37F0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_5382C4; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_537F4C; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 537F4C: using guessed type int (*off_537F4C)(); +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004E38B0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_5382C4; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_537F4C; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 537F4C: using guessed type int (*off_537F4C)(); +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004E3980) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_5382C4; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_537F4C; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 537F4C: using guessed type int (*off_537F4C)(); +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004E3A40) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_5382C4; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_537F4C; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 537F4C: using guessed type int (*off_537F4C)(); +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004E3B10) -------------------------------------------------------- +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5382C4; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4E3B29: variable 'v2' is possibly undefined +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004E3B40) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382C4; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4E3B49: variable 'v1' is possibly undefined +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004E3B70) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382C4; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4E3B79: variable 'v1' is possibly undefined +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004E3BA0) -------------------------------------------------------- +unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) +{ + int v3; // ebx + unsigned int result; // eax + int v5; // esi + unsigned int v6; // edi + + this[2] = -1; + this[3] = -1; + v3 = a2[9]; + *this = a3; + result = a2[1]; + this[4] = -1; + v5 = a2[4]; + this[5] = -1; + this[6] = -1; + this[7] = -1; + this[8] = -1; + this[9] = -1; + this[10] = -1; + this[11] = -1; + this[12] = -1; + this[13] = -1; + if ( !result ) + { + if ( !v5 ) + return result; + goto LABEL_3; + } + *((_QWORD *)this + 1) = (int)(result - v3); + *((_QWORD *)this + 2) = a2[2] - v3; + result = a2[3]; + *((_QWORD *)this + 3) = (int)(result - v3); + if ( v5 ) + { +LABEL_3: + *((_QWORD *)this + 4) = v5 - v3; + v6 = a2[5]; + *((_QWORD *)this + 5) = (int)(v6 - v5); + *((_QWORD *)this + 6) = a2[6] - v3; + if ( result < v6 ) + result = v6; + } + if ( result ) + { + result -= v3; + a2[10] = result; + } + return result; +} + +//----- (004E3C90) -------------------------------------------------------- +unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) +{ + int v3; // ebx + unsigned int result; // eax + int v5; // esi + unsigned int v6; // edi + + this[2] = -1; + this[3] = -1; + v3 = a2[9]; + *this = a3; + result = a2[1]; + this[4] = -1; + v5 = a2[4]; + this[5] = -1; + this[6] = -1; + this[7] = -1; + this[8] = -1; + this[9] = -1; + this[10] = -1; + this[11] = -1; + this[12] = -1; + this[13] = -1; + if ( !result ) + { + if ( !v5 ) + return result; + goto LABEL_3; + } + *((_QWORD *)this + 1) = (int)(result - v3); + *((_QWORD *)this + 2) = a2[2] - v3; + result = a2[3]; + *((_QWORD *)this + 3) = (int)(result - v3); + if ( v5 ) + { +LABEL_3: + *((_QWORD *)this + 4) = v5 - v3; + v6 = a2[5]; + *((_QWORD *)this + 5) = (int)(v6 - v5); + *((_QWORD *)this + 6) = a2[6] - v3; + if ( result < v6 ) + result = v6; + } + if ( result ) + { + result -= v3; + a2[10] = result; + } + return result; +} + +//----- (004E3D80) -------------------------------------------------------- +int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) +{ + int v1; // eax + _DWORD *v2; // esi + int v3; // ebx + int v4; // edx + int v5; // edi + int v6; // edi + int result; // eax + __int64 v8; // rax + int v9; // ebp + int v10; // ebx + int v11; // ecx + + v1 = *(_DWORD *)(a1 + 8); + v2 = *(_DWORD **)a1; + v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); + if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) + { + v4 = *(_DWORD *)(a1 + 24); + v5 = *(_DWORD *)(a1 + 16); + v2[1] = v3 + v1; + v2[2] = v3 + v5; + v2[3] = v3 + v4; + } + v6 = *(_DWORD *)(a1 + 32); + result = v6 & *(_DWORD *)(a1 + 36); + if ( result != -1 ) + { + v8 = *(_QWORD *)(a1 + 40); + v9 = v3 + *(_DWORD *)(a1 + 48); + v10 = v6 + v3; + v2[4] = v10; + v2[6] = v9; + if ( v8 > 0x7FFFFFFF ) + { + v11 = v10 + 0x7FFFFFFF; + do + { + v10 = v11; + v8 -= 0x7FFFFFFFLL; + v11 += 0x7FFFFFFF; + } + while ( v8 > 0x7FFFFFFF ); + } + result = v10 + v8; + v2[5] = result; + } + return result; +} + +//----- (004E3E10) -------------------------------------------------------- +int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) +{ + int v1; // eax + _DWORD *v2; // esi + int v3; // ebx + int v4; // edx + int v5; // edi + int v6; // edi + int result; // eax + __int64 v8; // rax + int v9; // ebp + int v10; // ebx + int v11; // ecx + + v1 = *(_DWORD *)(a1 + 8); + v2 = *(_DWORD **)a1; + v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); + if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) + { + v4 = *(_DWORD *)(a1 + 24); + v5 = *(_DWORD *)(a1 + 16); + v2[1] = v3 + v1; + v2[2] = v3 + v5; + v2[3] = v3 + v4; + } + v6 = *(_DWORD *)(a1 + 32); + result = v6 & *(_DWORD *)(a1 + 36); + if ( result != -1 ) + { + v8 = *(_QWORD *)(a1 + 40); + v9 = v3 + *(_DWORD *)(a1 + 48); + v10 = v6 + v3; + v2[4] = v10; + v2[6] = v9; + if ( v8 > 0x7FFFFFFF ) + { + v11 = v10 + 0x7FFFFFFF; + do + { + v10 = v11; + v8 -= 0x7FFFFFFFLL; + v11 += 0x7FFFFFFF; + } + while ( v8 > 0x7FFFFFFF ); + } + result = v10 + v8; + v2[5] = result; + } + return result; +} + +//----- (004E3EA0) -------------------------------------------------------- +unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1) +{ + unsigned int result; // eax + + result = *(_DWORD *)(a1 + 20); + if ( result && result > *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + { + *(_DWORD *)(a1 + 4) = result; + *(_DWORD *)(a1 + 8) = result; + } + *(_DWORD *)(a1 + 12) = result; + } + return result; +} + +//----- (004E3ED0) -------------------------------------------------------- +int __thiscall std::stringbuf::_M_stringbuf_init(int this, int a2) +{ + unsigned int v2; // edx + + v2 = 0; + *(_DWORD *)(this + 32) = a2; + if ( (a2 & 3) != 0 ) + v2 = *(_DWORD *)(this + 40); + return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v2); +} + +//----- (004E3F10) -------------------------------------------------------- +int __thiscall std::stringbuf::str(int this, int a2) +{ + unsigned int v3; // eax + + std::string::_M_replace((unsigned int *)(this + 36), 0, *(_DWORD *)(this + 40), *(char **)a2, *(_DWORD *)(a2 + 4)); + v3 = 0; + if ( (*(_BYTE *)(this + 32) & 3) != 0 ) + v3 = *(_DWORD *)(this + 40); + return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); +} + +//----- (004E3F70) -------------------------------------------------------- +int __thiscall std::stringbuf::swap(_DWORD *this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // ecx + unsigned int v6; // edi + unsigned int v7; // eax + int v8; // edi + int v9; // edx + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // edx + int v15; // eax + int v16; // edx + int v17; // eax + int v18; // edx + int v19; // eax + int v20; // eax + _DWORD *v21; // edx + int v22; // esi + int v23; // eax + int v24; // ebx + int v25; // edi + __int64 v26; // rcx + int v27; // eax + int v28; // esi + _DWORD *v29; // edx + int v30; // esi + int v31; // eax + int v32; // ebx + int result; // eax + int v34; // edi + __int64 v35; // rcx + int v36; // eax + int v37; // esi + const std::locale *v38; // [esp+4h] [ebp-B4h] + const std::locale *v39; // [esp+4h] [ebp-B4h] + const std::locale *v40; // [esp+4h] [ebp-B4h] + const std::locale *v41; // [esp+4h] [ebp-B4h] + unsigned int v42; // [esp+10h] [ebp-A8h] + int v43; // [esp+14h] [ebp-A4h] + unsigned int v44; // [esp+18h] [ebp-A0h] + unsigned int v45; // [esp+1Ch] [ebp-9Ch] + _DWORD *v46; // [esp+24h] [ebp-94h] BYREF + _DWORD *v47; // [esp+28h] [ebp-90h] BYREF + _DWORD *v48; // [esp+2Ch] [ebp-8Ch] BYREF + _DWORD *v49; // [esp+30h] [ebp-88h] + __int64 v50; // [esp+38h] [ebp-80h] + int v51; // [esp+40h] [ebp-78h] + int v52; // [esp+44h] [ebp-74h] + __int64 v53; // [esp+48h] [ebp-70h] + __int64 v54; // [esp+50h] [ebp-68h] + __int64 v55; // [esp+58h] [ebp-60h] + int v56; // [esp+60h] [ebp-58h] + int v57; // [esp+64h] [ebp-54h] + _DWORD *v58; // [esp+68h] [ebp-50h] + __int64 v59; // [esp+70h] [ebp-48h] + int v60; // [esp+78h] [ebp-40h] + int v61; // [esp+7Ch] [ebp-3Ch] + __int64 v62; // [esp+80h] [ebp-38h] + __int64 v63; // [esp+88h] [ebp-30h] + __int64 v64; // [esp+90h] [ebp-28h] + int v65; // [esp+98h] [ebp-20h] + int v66; // [esp+9Ch] [ebp-1Ch] + + v3 = this[1]; + v50 = -1LL; + v4 = this[9]; + v49 = (_DWORD *)a2; + v5 = this[4]; + v51 = -1; + v52 = -1; + v53 = -1LL; + v54 = -1LL; + v55 = -1LL; + v56 = -1; + v57 = -1; + v43 = v3; + if ( !v3 ) + { + v45 = 0; + if ( !v5 ) + goto LABEL_7; + goto LABEL_3; + } + v50 = v3 - v4; + v51 = this[2] - v4; + v52 = v51 >> 31; + v45 = this[3]; + v53 = (int)(v45 - v4); + if ( v5 ) + { +LABEL_3: + v54 = v5 - v4; + v6 = this[5]; + v55 = (int)(v6 - v5); + v56 = this[6] - v4; + v57 = v56 >> 31; + if ( v45 < v6 ) + v45 = v6; + } + if ( v45 ) + this[10] = v45 - v4; +LABEL_7: + v7 = *(_DWORD *)(a2 + 4); + v8 = *(_DWORD *)(a2 + 16); + v58 = this; + v59 = -1LL; + v9 = *(_DWORD *)(a2 + 36); + v60 = -1; + v61 = -1; + v62 = -1LL; + v63 = -1LL; + v64 = -1LL; + v65 = -1; + v66 = -1; + v44 = v7; + if ( !v7 ) + { + if ( !v8 ) + goto LABEL_13; + goto LABEL_9; + } + v59 = (int)(v7 - v9); + v60 = *(_DWORD *)(a2 + 8) - v9; + v61 = v60 >> 31; + v7 = *(_DWORD *)(a2 + 12); + v62 = (int)(v7 - v9); + if ( v8 ) + { +LABEL_9: + v63 = v8 - v9; + v42 = *(_DWORD *)(a2 + 20); + v64 = (int)(v42 - v8); + v65 = *(_DWORD *)(a2 + 24) - v9; + v66 = v65 >> 31; + if ( v7 < v42 ) + v7 = v42; + } + if ( v7 ) + *(_DWORD *)(a2 + 40) = v7 - v9; +LABEL_13: + this[1] = v44; + v10 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v43; + v11 = this[2]; + this[2] = v10; + v12 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v11; + v13 = this[3]; + this[3] = v12; + v14 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v13; + v15 = this[4]; + this[4] = v14; + v16 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v15; + v17 = this[5]; + this[5] = v16; + v18 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v17; + v19 = this[6]; + this[6] = v18; + *(_DWORD *)(a2 + 24) = v19; + std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)this + 7, v38); + std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v48); + std::locale::~locale(&v48); + std::locale::locale((volatile signed __int32 **)&v46, (volatile signed __int32 **)(a2 + 28), v39); + std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)this + 7, v40); + (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v46); + std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v46); + std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)(a2 + 28), v41); + (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v47); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v47); + std::locale::~locale(&v48); + std::locale::~locale(&v47); + std::locale::~locale(&v46); + v20 = this[8]; + this[8] = *(_DWORD *)(a2 + 32); + *(_DWORD *)(a2 + 32) = v20; + std::string::swap(this + 9, (_DWORD *)(a2 + 36)); + v21 = v58; + v22 = v58[9]; + if ( ((unsigned int)v59 & HIDWORD(v59)) != -1 ) + { + v23 = v62; + v24 = v60; + v58[1] = v22 + v59; + v21[2] = v22 + v24; + v21[3] = v22 + v23; + } + if ( ((unsigned int)v63 & HIDWORD(v63)) != -1 ) + { + v25 = v65; + v26 = v64; + v27 = v22 + v63; + v21[4] = v22 + v63; + v21[6] = v22 + v25; + if ( v26 > 0x7FFFFFFF ) + { + v28 = v27 + 0x7FFFFFFF; + do + { + v27 = v28; + v26 -= 0x7FFFFFFFLL; + v28 += 0x7FFFFFFF; + } + while ( v26 > 0x7FFFFFFF ); + } + v21[5] = v26 + v27; + } + v29 = v49; + v30 = v49[9]; + if ( ((unsigned int)v50 & HIDWORD(v50)) != -1 ) + { + v31 = v53; + v32 = v51; + v49[1] = v30 + v50; + v29[2] = v30 + v32; + v29[3] = v30 + v31; + } + result = v54; + if ( ((unsigned int)v54 & HIDWORD(v54)) != -1 ) + { + v34 = v56; + v35 = v55; + v36 = v30 + v54; + v29[4] = v30 + v54; + v29[6] = v30 + v34; + if ( v35 > 0x7FFFFFFF ) + { + v37 = v36 + 0x7FFFFFFF; + do + { + v36 = v37; + v35 -= 0x7FFFFFFFLL; + v37 += 0x7FFFFFFF; + } + while ( v35 > 0x7FFFFFFF ); + } + result = v35 + v36; + v29[5] = result; + } + return result; +} +// 4E41D2: variable 'v38' is possibly undefined +// 4E420F: variable 'v39' is possibly undefined +// 4E4226: variable 'v40' is possibly undefined +// 4E4260: variable 'v41' is possibly undefined + +//----- (004E4480) -------------------------------------------------------- +_DWORD *__thiscall std::stringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3) +{ + _BYTE *v4; // eax + int v5; // ecx + + if ( !a2 || a3 < 0 ) + return this; + v4 = (_BYTE *)this[9]; + this[10] = 0; + *v4 = 0; + std::stringbuf::_M_sync(this, a2, a3, 0); + return (_DWORD *)v5; +} +// 4E44C8: variable 'v5' is possibly undefined + +//----- (004E44D0) -------------------------------------------------------- +int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) +{ + _DWORD *v4; // edi + int v5; // esi + int result; // eax + int v7; // ebx + int v8; // ebp + int v9; // ebp + int v10; // edx + __int64 v11; // rax + _DWORD *v12; // [esp+0h] [ebp-1Ch] + int v13; // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[9]; + v5 = this[8] & 0x10; + v12 = a2; + result = (int)a2 + this[10]; + v7 = this[8] & 8; + v13 = result; + if ( v4 == this + 11 ) + v8 = 15; + else + v8 = this[11]; + v9 = (int)a2 + v8; + if ( a2 != v4 ) + { + v10 = a3; + a3 = 0; + v13 = v10 + result; + result = v13; + v9 = v13; + } + if ( v7 ) + { + this[1] = a2; + this[2] = (char *)a2 + a3; + result = v13; + this[3] = v13; + } + if ( v5 ) + { + this[6] = v9; + this[4] = a2; + if ( a4 > 0x7FFFFFFFuLL ) + { + v11 = a4 - 0x7FFFFFFFLL; + if ( (a4 + 1) | HIDWORD(v11) ) + { + v12 = (_DWORD *)((char *)a2 + 0x7FFFFFFF); + } + else + { + v12 = (_DWORD *)((char *)a2 - 2); + LODWORD(v11) = 1; + } + a4 = v11; + } + result = (int)v12 + a4; + this[5] = (char *)v12 + a4; + if ( !v7 ) + { + result = v13; + this[1] = v13; + this[2] = v13; + this[3] = v13; + } + } + return result; +} + +//----- (004E45D0) -------------------------------------------------------- +unsigned int *__thiscall std::stringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5) +{ + unsigned int *result; // eax + bool v6; // cl + unsigned int v7; // ebx + int v8; // ebp + unsigned int v9; // esi + _DWORD *v10; // edi + int v11; // edi + unsigned int v12; // esi + unsigned int v13; // edx + int v14; // ebx + __int64 v15; // [esp+0h] [ebp-34h] + unsigned __int8 v16; // [esp+8h] [ebp-2Ch] + char v17; // [esp+16h] [ebp-1Eh] + char v18; // [esp+16h] [ebp-1Eh] + unsigned __int8 v19; // [esp+17h] [ebp-1Dh] + int v20; // [esp+18h] [ebp-1Ch] + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + v15 = a3; + v20 = a2[8] & 8; + v6 = (a5 & v20) != 0; + v7 = (a5 & a2[8]) >> 4; + v16 = (a4 != 1) & v7 & v6; + v17 = ((a5 >> 3) ^ 1) & 1 & v7; + v19 = v6 & ((a5 >> 4) ^ 1); + if ( v19 ) + { + v8 = a2[1]; + if ( !v8 && a3 ) + return result; + v18 = v16 | v17; + } + else + { + v8 = a2[4]; + if ( !v8 && a3 ) + return result; + v18 = v16 | v17; + if ( !v18 ) + return result; + } + v9 = a2[5]; + if ( v9 ) + { + v10 = a2; + if ( v9 > a2[3] ) + { + if ( !v20 ) + { + v10 = a2; + a2[1] = v9; + a2[2] = v9; + } + v10[3] = v9; + } + } + if ( a4 == 1 ) + { + v11 = (unsigned __int64)(a3 + (int)(v9 - v8)) >> 32; + v12 = a3 + v9 - v8; + v15 = a2[2] - v8 + a3; + } + else + { + v11 = HIDWORD(a3); + v12 = a3; + if ( a4 == 2 ) + { + v15 = a2[3] - v8 + a3; + v11 = HIDWORD(v15); + v12 = v15; + } + } + if ( v16 | v19 && v15 >= 0 && a2[3] - v8 >= v15 ) + { + result[2] = 0; + v14 = a2[1] + v15; + *result = v15; + a2[2] = v14; + result[1] = HIDWORD(v15); + } + if ( v11 >= 0 && v18 && a2[3] - v8 >= __SPAIR64__(v11, v12) ) + { + *result = v12; + result[1] = v11; + v13 = a2[4] + v12; + result[2] = 0; + a2[5] = v13; + } + return result; +} + +//----- (004E4810) -------------------------------------------------------- +_DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + int v7; // ecx + int v8; // ebx + unsigned int v9; // ebp + int v10; // [esp+0h] [ebp-2Ch] + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + v7 = a2[8] & 8; + v10 = a6 & a2[8]; + if ( (v7 & a6) != 0 ) + v8 = a2[1]; + else + v8 = a2[4]; + if ( (!a3 || v8) && (v10 & 0x18) != 0 ) + { + v9 = a2[5]; + if ( v9 && a2[3] < v9 ) + { + if ( !v7 ) + { + a2[1] = v9; + a2[2] = v9; + } + a2[3] = v9; + } + if ( a3 >= 0 && a2[3] - v8 >= a3 ) + { + if ( (v7 & a6) != 0 ) + a2[2] = a3 + a2[1]; + if ( (v10 & 0x10) != 0 ) + a2[5] = a2[4] + a3; + *(_QWORD *)result = a3; + result[2] = a4; + } + } + return result; +} + +//----- (004E48F0) -------------------------------------------------------- +int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) +{ + __int64 v4; // rax + int v5; // ebx + int result; // eax + + v4 = a4; + this[6] = a3; + v5 = a2; + for ( this[4] = a2; v4 > 0x7FFFFFFF; v4 -= 0x7FFFFFFFLL ) + v5 += 0x7FFFFFFF; + result = v5 + v4; + this[5] = result; + return result; +} + +//----- (004E4950) -------------------------------------------------------- +int __thiscall std::stringbuf::overflow(int this, int a2) +{ + int v2; // esi + int v4; // ecx + unsigned int v5; // edi + _BYTE *v6; // edx + int result; // eax + _BYTE *v8; // edx + int v9; // edi + int v10; // eax + int v11; // esi + int v12; // eax + unsigned int v13; // eax + int v14; // eax + size_t v15; // esi + _BYTE *v16; // eax + unsigned int v17; // edx + int v18; // [esp+18h] [ebp-40h] + unsigned int v19; // [esp+1Ch] [ebp-3Ch] + unsigned int v20; // [esp+1Ch] [ebp-3Ch] + void *v21; // [esp+28h] [ebp-30h] BYREF + size_t v22; // [esp+2Ch] [ebp-2Ch] + int v23[10]; // [esp+30h] [ebp-28h] BYREF + + v2 = *(_DWORD *)(this + 32); + if ( (v2 & 0x10) == 0 ) + return -1; + if ( a2 == -1 ) + return 0; + v4 = *(_DWORD *)(this + 36); + if ( v4 == this + 44 ) + v19 = 15; + else + v19 = *(_DWORD *)(this + 44); + v5 = *(_DWORD *)(this + 24); + v18 = *(_DWORD *)(this + 16); + v6 = *(_BYTE **)(this + 20); + if ( v5 - v18 >= v19 ) + { + if ( (unsigned int)v6 < v5 ) + { + *v6 = a2; +LABEL_8: + ++*(_DWORD *)(this + 20); + return a2; + } + if ( v19 != 0x3FFFFFFF ) + { + v22 = 0; + v21 = v23; + LOBYTE(v23[0]) = 0; + v13 = 2 * v19; + if ( 2 * v19 <= 0x3FFFFFFF ) + { + if ( v13 < 0x200 ) + v13 = 512; + } + else + { + v13 = 0x3FFFFFFF; + } + std::string::reserve(&v21, v13); + v14 = *(_DWORD *)(this + 16); + v15 = v22; + if ( v14 ) + { + std::string::_M_replace((unsigned int *)&v21, 0, v22, *(char **)(this + 16), *(_DWORD *)(this + 24) - v14); + v15 = v22; + } + v20 = v15 + 1; + v16 = v21; + if ( v21 == v23 ) + v17 = 15; + else + v17 = v23[0]; + if ( v20 > v17 ) + { + std::string::_M_mutate((int)&v21, v15, 0, 0, 1u); + v16 = v21; + } + v16[v15] = a2; + v22 = v15 + 1; + *((_BYTE *)v21 + v20) = 0; + std::string::swap((_DWORD *)(this + 36), &v21); + std::stringbuf::_M_sync( + (_DWORD *)this, + *(_DWORD **)(this + 36), + *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4), + *(_DWORD *)(this + 20) - *(_DWORD *)(this + 16)); + if ( v21 != v23 ) + operator delete(v21); + goto LABEL_8; + } + return -1; + } + *(_DWORD *)(this + 16) = v4; + v8 = &v6[v4 - v18]; + *(_DWORD *)(this + 20) = v8; + *(_DWORD *)(this + 24) = v4 + v19; + if ( (v2 & 8) != 0 ) + { + v9 = *(_DWORD *)(this + 4); + v10 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 4) = v4; + v11 = v4 + v10 - v9 + 1; + v12 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 12) = v11; + *(_DWORD *)(this + 8) = v4 + v12 - v9; + } + *v8 = a2; + result = a2; + ++*(_DWORD *)(this + 20); + return result; +} + +//----- (004E4BB0) -------------------------------------------------------- +int __thiscall std::stringbuf::pbackfail(int this, int a2) +{ + unsigned int v2; // edx + int result; // eax + char v4; // bl + + v2 = *(_DWORD *)(this + 8); + result = a2; + if ( v2 <= *(_DWORD *)(this + 4) ) + return -1; + if ( a2 == -1 ) + { + result = 0; + *(_DWORD *)(this + 8) = v2 - 1; + return result; + } + v4 = *(_BYTE *)(v2 - 1); + if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && v4 != (_BYTE)a2 ) + return -1; + *(_DWORD *)(this + 8) = v2 - 1; + if ( v4 != (_BYTE)a2 ) + *(_BYTE *)(v2 - 1) = a2; + return result; +} + +//----- (004E4C00) -------------------------------------------------------- +int __fastcall std::stringbuf::showmanyc(int a1) +{ + unsigned int v1; // edx + unsigned int v2; // eax + + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + return -1; + v1 = *(_DWORD *)(a1 + 20); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + if ( v1 > v2 ) + { + *(_DWORD *)(a1 + 12) = v1; + v2 = v1; + } + } + return v2 - *(_DWORD *)(a1 + 8); +} + +//----- (004E4C30) -------------------------------------------------------- +int __fastcall std::stringbuf::underflow(int a1) +{ + unsigned int v1; // eax + unsigned int v2; // edx + unsigned __int8 *v3; // eax + + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + return -1; + v1 = *(_DWORD *)(a1 + 20); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + if ( v1 > v2 ) + { + *(_DWORD *)(a1 + 12) = v1; + v2 = v1; + } + } + v3 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v3 < v2 ) + return *v3; + else + return -1; +} + +//----- (004E4C70) -------------------------------------------------------- +int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + int v4; // ecx + int v5; // eax + _DWORD *v6; // edx + int v7; // edx + int v8; // eax + int v9; // ecx + int v10; // eax + const std::locale *v12; // [esp+4h] [ebp-74h] + int v13; // [esp+1Ch] [ebp-5Ch] + __int64 v15; // [esp+30h] [ebp-48h] + int v16; // [esp+38h] [ebp-40h] + int v17; // [esp+40h] [ebp-38h] + __int64 v18; // [esp+48h] [ebp-30h] + int v19; // [esp+50h] [ebp-28h] + int v20; // [esp+58h] [ebp-20h] + + v15 = -1LL; + v16 = -1; + v13 = a2[9]; + v3 = a2[1]; + v17 = -1; + v18 = -1LL; + v19 = -1; + v20 = -1; + if ( !v3 ) + { + v4 = a2[4]; + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v15 = (int)(v3 - v13); + v16 = a2[2] - v13; + v3 = a2[3]; + v17 = v3 - v13; + v4 = a2[4]; + if ( v4 ) + { +LABEL_3: + v18 = v4 - v13; + v19 = a2[5] - v4; + v20 = a2[6] - v13; + if ( v3 < a2[5] ) + v3 = a2[5]; + } + if ( v3 ) + a2[10] = v3 - v13; +LABEL_7: + std::streambuf::basic_streambuf(this, (int)a2, v12); + v5 = a2[8]; + *this = &off_537F68; + this[9] = this + 11; + v6 = (_DWORD *)a2[9]; + this[8] = v5; + if ( v6 == a2 + 11 ) + { + this[11] = a2[11]; + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + } + else + { + this[9] = v6; + this[11] = a2[11]; + } + v7 = a2[10]; + a2[9] = a2 + 11; + a2[10] = 0; + this[10] = v7; + *((_BYTE *)a2 + 44) = 0; + v8 = this[9]; + if ( ((unsigned int)v15 & HIDWORD(v15)) != -1 ) + { + this[1] = v8 + v15; + this[2] = v8 + v16; + this[3] = v8 + v17; + } + if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) + { + v9 = v8 + v20; + v10 = v18 + v8; + this[6] = v9; + this[4] = v10; + this[5] = v19 + v10; + } + return std::stringbuf::_M_sync(a2, (_DWORD *)a2[9], 0, 0); +} +// 4E4DFE: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4E4D5F: variable 'v12' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); + +//----- (004E4EB0) -------------------------------------------------------- +_DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3) +{ + int v4; // eax + _DWORD *v5; // edx + _DWORD *result; // eax + int v7; // edx + const std::locale *v8; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf(this, (int)a2, v8); + v4 = a2[8]; + *this = &off_537F68; + this[9] = this + 11; + v5 = (_DWORD *)a2[9]; + this[8] = v4; + result = a2 + 11; + if ( v5 == a2 + 11 ) + { + this[11] = a2[11]; + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + } + else + { + this[9] = v5; + this[11] = a2[11]; + } + v7 = a2[10]; + a2[9] = result; + a2[10] = 0; + this[10] = v7; + *((_BYTE *)a2 + 44) = 0; + return result; +} +// 4E4EBE: variable 'v8' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); + +//----- (004E4F30) -------------------------------------------------------- +int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3) +{ + int v4; // eax + unsigned __int8 *v5; // edx + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-30h] + + *(_DWORD *)this = &off_538A48; + *(_DWORD *)(this + 4) = 0; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 24) = 0; + std::locale::locale((_DWORD *)(this + 28)); + *(_DWORD *)this = &off_537F68; + v4 = *(_DWORD *)(a2 + 4); + v5 = *(unsigned __int8 **)a2; + *(_DWORD *)(this + 32) = 0; + LOBYTE(v8) = 0; + *(_DWORD *)(this + 36) = this + 44; + std::string::_M_construct((void **)(this + 36), v5, (size_t)&v5[v4], v8); + *(_DWORD *)(this + 32) = a3; + v6 = 0; + if ( (a3 & 3) != 0 ) + v6 = *(_DWORD *)(this + 40); + return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v6); +} +// 4E4FAD: variable 'v8' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E5000) -------------------------------------------------------- +char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + char *result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_538A48; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_537F68; + this[10] = 0; + this[8] = a2; + result = (char *)(this + 11); + this[9] = this + 11; + *((_BYTE *)this + 44) = 0; + return result; +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E5070) -------------------------------------------------------- +int __fastcall std::stringbuf::basic_stringbuf(int a1) +{ + _DWORD *v2; // ecx + int result; // eax + + v2 = (_DWORD *)(a1 + 28); + *(v2 - 7) = &off_538A48; + *(v2 - 6) = 0; + *(v2 - 5) = 0; + *(v2 - 4) = 0; + *(v2 - 3) = 0; + *(v2 - 2) = 0; + *(v2 - 1) = 0; + std::locale::locale(v2); + result = a1 + 44; + *(_BYTE *)(a1 + 44) = 0; + *(_DWORD *)a1 = &off_537F68; + *(_DWORD *)(a1 + 32) = 24; + *(_DWORD *)(a1 + 36) = a1 + 44; + *(_DWORD *)(a1 + 40) = 0; + return result; +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E50E0) -------------------------------------------------------- +int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + int v4; // ecx + int v5; // eax + _DWORD *v6; // edx + int v7; // edx + int v8; // eax + int v9; // ecx + int v10; // eax + const std::locale *v12; // [esp+4h] [ebp-74h] + int v13; // [esp+1Ch] [ebp-5Ch] + __int64 v15; // [esp+30h] [ebp-48h] + int v16; // [esp+38h] [ebp-40h] + int v17; // [esp+40h] [ebp-38h] + __int64 v18; // [esp+48h] [ebp-30h] + int v19; // [esp+50h] [ebp-28h] + int v20; // [esp+58h] [ebp-20h] + + v15 = -1LL; + v16 = -1; + v13 = a2[9]; + v3 = a2[1]; + v17 = -1; + v18 = -1LL; + v19 = -1; + v20 = -1; + if ( !v3 ) + { + v4 = a2[4]; + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v15 = (int)(v3 - v13); + v16 = a2[2] - v13; + v3 = a2[3]; + v17 = v3 - v13; + v4 = a2[4]; + if ( v4 ) + { +LABEL_3: + v18 = v4 - v13; + v19 = a2[5] - v4; + v20 = a2[6] - v13; + if ( v3 < a2[5] ) + v3 = a2[5]; + } + if ( v3 ) + a2[10] = v3 - v13; +LABEL_7: + std::streambuf::basic_streambuf(this, (int)a2, v12); + v5 = a2[8]; + *this = &off_537F68; + this[9] = this + 11; + v6 = (_DWORD *)a2[9]; + this[8] = v5; + if ( v6 == a2 + 11 ) + { + this[11] = a2[11]; + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + } + else + { + this[9] = v6; + this[11] = a2[11]; + } + v7 = a2[10]; + a2[9] = a2 + 11; + a2[10] = 0; + this[10] = v7; + *((_BYTE *)a2 + 44) = 0; + v8 = this[9]; + if ( ((unsigned int)v15 & HIDWORD(v15)) != -1 ) + { + this[1] = v8 + v15; + this[2] = v8 + v16; + this[3] = v8 + v17; + } + if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) + { + v9 = v8 + v20; + v10 = v18 + v8; + this[6] = v9; + this[4] = v10; + this[5] = v19 + v10; + } + return std::stringbuf::_M_sync(a2, (_DWORD *)a2[9], 0, 0); +} +// 4E526E: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4E51CF: variable 'v12' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); + +//----- (004E5320) -------------------------------------------------------- +_DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3) +{ + int v4; // eax + _DWORD *v5; // edx + _DWORD *result; // eax + int v7; // edx + const std::locale *v8; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf(this, (int)a2, v8); + v4 = a2[8]; + *this = &off_537F68; + this[9] = this + 11; + v5 = (_DWORD *)a2[9]; + this[8] = v4; + result = a2 + 11; + if ( v5 == a2 + 11 ) + { + this[11] = a2[11]; + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + } + else + { + this[9] = v5; + this[11] = a2[11]; + } + v7 = a2[10]; + a2[9] = result; + a2[10] = 0; + this[10] = v7; + *((_BYTE *)a2 + 44) = 0; + return result; +} +// 4E532E: variable 'v8' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); + +//----- (004E53A0) -------------------------------------------------------- +int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3) +{ + int v4; // eax + unsigned __int8 *v5; // edx + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-30h] + + *(_DWORD *)this = &off_538A48; + *(_DWORD *)(this + 4) = 0; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 24) = 0; + std::locale::locale((_DWORD *)(this + 28)); + *(_DWORD *)this = &off_537F68; + v4 = *(_DWORD *)(a2 + 4); + v5 = *(unsigned __int8 **)a2; + *(_DWORD *)(this + 32) = 0; + LOBYTE(v8) = 0; + *(_DWORD *)(this + 36) = this + 44; + std::string::_M_construct((void **)(this + 36), v5, (size_t)&v5[v4], v8); + *(_DWORD *)(this + 32) = a3; + v6 = 0; + if ( (a3 & 3) != 0 ) + v6 = *(_DWORD *)(this + 40); + return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v6); +} +// 4E541D: variable 'v8' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E5470) -------------------------------------------------------- +char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + char *result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_538A48; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_537F68; + this[10] = 0; + this[8] = a2; + result = (char *)(this + 11); + this[9] = this + 11; + *((_BYTE *)this + 44) = 0; + return result; +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E54E0) -------------------------------------------------------- +int __fastcall std::stringbuf::basic_stringbuf(int a1) +{ + _DWORD *v2; // ecx + int result; // eax + + v2 = (_DWORD *)(a1 + 28); + *(v2 - 7) = &off_538A48; + *(v2 - 6) = 0; + *(v2 - 5) = 0; + *(v2 - 4) = 0; + *(v2 - 3) = 0; + *(v2 - 2) = 0; + *(v2 - 1) = 0; + std::locale::locale(v2); + result = a1 + 44; + *(_BYTE *)(a1 + 44) = 0; + *(_DWORD *)a1 = &off_537F68; + *(_DWORD *)(a1 + 32) = 24; + *(_DWORD *)(a1 + 36) = a1 + 44; + *(_DWORD *)(a1 + 40) = 0; + return result; +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E5550) -------------------------------------------------------- +void __fastcall std::stringbuf::~stringbuf(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[9]; + *a1 = &off_537F68; + if ( v2 != a1 + 11 ) + operator delete(v2); + *a1 = &off_538A48; + std::locale::~locale((_DWORD **)a1 + 7); + operator delete(a1); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E5590) -------------------------------------------------------- +void __fastcall std::stringbuf::~stringbuf(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 36); + *(_DWORD *)a1 = &off_537F68; + if ( v2 != (void *)(a1 + 44) ) + operator delete(v2); + *(_DWORD *)a1 = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E55C0) -------------------------------------------------------- +int __thiscall std::stringbuf::operator=(int this, int a2) +{ + unsigned int v2; // eax + int v3; // edx + int v4; // ecx + unsigned int v5; // edi + const void *v6; // edx + _BYTE *v7; // eax + int v8; // ebx + _DWORD *v9; // edx + int v10; // eax + int v11; // esi + int v12; // edi + int v13; // edi + unsigned int v14; // esi + int v15; // ebx + int v16; // eax + bool v17; // cc + int v18; // ecx + bool v19; // cf + int v21; // ecx + const std::locale *v22; // [esp+4h] [ebp-74h] + const std::locale *v23; // [esp+4h] [ebp-74h] + int v24; // [esp+18h] [ebp-60h] + _DWORD *v26; // [esp+20h] [ebp-58h] BYREF + _DWORD *v27; // [esp+24h] [ebp-54h] BYREF + _DWORD *v28; // [esp+28h] [ebp-50h] + __int64 v29; // [esp+30h] [ebp-48h] + int v30; // [esp+38h] [ebp-40h] + int v31; // [esp+3Ch] [ebp-3Ch] + __int64 v32; // [esp+40h] [ebp-38h] + __int64 v33; // [esp+48h] [ebp-30h] + __int64 v34; // [esp+50h] [ebp-28h] + int v35; // [esp+58h] [ebp-20h] + int v36; // [esp+5Ch] [ebp-1Ch] + + v28 = (_DWORD *)this; + v2 = *(_DWORD *)(a2 + 4); + v29 = -1LL; + v3 = *(_DWORD *)(a2 + 36); + v30 = -1; + v4 = *(_DWORD *)(a2 + 16); + v31 = -1; + v32 = -1LL; + v33 = -1LL; + v34 = -1LL; + v35 = -1; + v36 = -1; + if ( !v2 ) + { + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v29 = (int)(v2 - v3); + v30 = *(_DWORD *)(a2 + 8) - v3; + v31 = v30 >> 31; + v2 = *(_DWORD *)(a2 + 12); + v32 = (int)(v2 - v3); + if ( v4 ) + { +LABEL_3: + v33 = v4 - v3; + v5 = *(_DWORD *)(a2 + 20); + v34 = (int)(v5 - v4); + v35 = *(_DWORD *)(a2 + 24) - v3; + v36 = v35 >> 31; + if ( v2 < v5 ) + v2 = v5; + } + if ( v2 ) + *(_DWORD *)(a2 + 40) = v2 - v3; +LABEL_7: + std::streambuf::operator=((volatile signed __int32 **)this, a2); + std::locale::locale((volatile signed __int32 **)&v26, (volatile signed __int32 **)(a2 + 28), v22); + std::locale::locale((volatile signed __int32 **)&v27, (volatile signed __int32 **)(this + 28), v23); + (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v26); + std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v26); + std::locale::~locale(&v27); + std::locale::~locale(&v26); + v6 = *(const void **)(a2 + 36); + *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); + v7 = *(_BYTE **)(this + 36); + if ( v6 == (const void *)(a2 + 44) ) + { + v21 = *(_DWORD *)(a2 + 40); + if ( v21 ) + { + if ( v21 == 1 ) + *v7 = *(_BYTE *)(a2 + 44); + else + memcpy(v7, v6, *(_DWORD *)(a2 + 40)); + v21 = *(_DWORD *)(a2 + 40); + v7 = *(_BYTE **)(this + 36); + } + *(_DWORD *)(this + 40) = v21; + v7[v21] = 0; + v7 = *(_BYTE **)(a2 + 36); + } + else + { + v24 = *(_DWORD *)(a2 + 40); + if ( v7 == (_BYTE *)(this + 44) ) + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 40) = v24; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + } + else + { + v8 = *(_DWORD *)(this + 44); + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 40) = v24; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + if ( v7 ) + { + *(_DWORD *)(a2 + 36) = v7; + *(_DWORD *)(a2 + 44) = v8; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 36) = a2 + 44; + v7 = (_BYTE *)(a2 + 44); + } +LABEL_11: + *(_DWORD *)(a2 + 40) = 0; + *v7 = 0; + std::stringbuf::_M_sync((_DWORD *)a2, *(_DWORD **)(a2 + 36), 0, 0); + v9 = v28; + v10 = v28[9]; + if ( ((unsigned int)v29 & HIDWORD(v29)) != -1 ) + { + v11 = v32; + v12 = v30; + v28[1] = v10 + v29; + v9[2] = v10 + v12; + v9[3] = v10 + v11; + } + if ( ((unsigned int)v33 & HIDWORD(v33)) != -1 ) + { + v13 = HIDWORD(v34); + v14 = v34; + v15 = v10 + v35; + v16 = v33 + v10; + v17 = v34 > 0x7FFFFFFF; + v9[4] = v16; + v9[6] = v15; + if ( v17 ) + { + v18 = v16 + 0x7FFFFFFF; + do + { + v19 = __CFADD__(v14, -2147483647); + v14 -= 0x7FFFFFFF; + v16 = v18; + v13 = v19 + v13 - 1; + v18 += 0x7FFFFFFF; + } + while ( __SPAIR64__(v13, v14) > 0x7FFFFFFF ); + } + v9[5] = v14 + v16; + } + return this; +} +// 4E56BE: variable 'v22' is possibly undefined +// 4E56CC: variable 'v23' is possibly undefined + +//----- (004E58F0) -------------------------------------------------------- +unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) +{ + int v3; // ebx + unsigned int result; // eax + int v5; // esi + unsigned int v6; // edi + + this[2] = -1; + this[3] = -1; + v3 = a2[9]; + *this = a3; + result = a2[1]; + this[4] = -1; + v5 = a2[4]; + this[5] = -1; + this[6] = -1; + this[7] = -1; + this[8] = -1; + this[9] = -1; + this[10] = -1; + this[11] = -1; + this[12] = -1; + this[13] = -1; + if ( !result ) + { + if ( !v5 ) + return result; + goto LABEL_3; + } + *((_QWORD *)this + 1) = (int)(result - v3) >> 1; + *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; + result = a2[3]; + *((_QWORD *)this + 3) = (int)(result - v3) >> 1; + if ( v5 ) + { +LABEL_3: + *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); + v6 = a2[5]; + *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; + *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; + if ( result < v6 ) + result = v6; + } + if ( result ) + { + result = (int)(result - v3) >> 1; + a2[10] = result; + } + return result; +} + +//----- (004E59F0) -------------------------------------------------------- +unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) +{ + int v3; // ebx + unsigned int result; // eax + int v5; // esi + unsigned int v6; // edi + + this[2] = -1; + this[3] = -1; + v3 = a2[9]; + *this = a3; + result = a2[1]; + this[4] = -1; + v5 = a2[4]; + this[5] = -1; + this[6] = -1; + this[7] = -1; + this[8] = -1; + this[9] = -1; + this[10] = -1; + this[11] = -1; + this[12] = -1; + this[13] = -1; + if ( !result ) + { + if ( !v5 ) + return result; + goto LABEL_3; + } + *((_QWORD *)this + 1) = (int)(result - v3) >> 1; + *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; + result = a2[3]; + *((_QWORD *)this + 3) = (int)(result - v3) >> 1; + if ( v5 ) + { +LABEL_3: + *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); + v6 = a2[5]; + *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; + *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; + if ( result < v6 ) + result = v6; + } + if ( result ) + { + result = (int)(result - v3) >> 1; + a2[10] = result; + } + return result; +} + +//----- (004E5AF0) -------------------------------------------------------- +int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) +{ + int v1; // eax + _DWORD *v2; // esi + int v3; // ebx + int v4; // edx + int v5; // edi + int v6; // edi + int result; // eax + __int64 v8; // rax + int v9; // ecx + int v10; // ebx + int v11; // ecx + + v1 = *(_DWORD *)(a1 + 8); + v2 = *(_DWORD **)a1; + v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); + if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) + { + v4 = *(_DWORD *)(a1 + 24); + v5 = *(_DWORD *)(a1 + 16); + v2[1] = v3 + 2 * v1; + v2[2] = v3 + 2 * v5; + v2[3] = v3 + 2 * v4; + } + v6 = *(_DWORD *)(a1 + 32); + result = v6 & *(_DWORD *)(a1 + 36); + if ( result != -1 ) + { + v8 = *(_QWORD *)(a1 + 40); + v9 = v3 + 2 * *(_DWORD *)(a1 + 48); + v10 = v3 + 2 * v6; + v2[6] = v9; + v2[4] = v10; + if ( v8 > 0x7FFFFFFF ) + { + v11 = v10 - 2; + do + { + v10 = v11; + v8 -= 0x7FFFFFFFLL; + v11 -= 2; + } + while ( v8 > 0x7FFFFFFF ); + } + result = v10 + 2 * v8; + v2[5] = result; + } + return result; +} + +//----- (004E5B80) -------------------------------------------------------- +int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) +{ + int v1; // eax + _DWORD *v2; // esi + int v3; // ebx + int v4; // edx + int v5; // edi + int v6; // edi + int result; // eax + __int64 v8; // rax + int v9; // ecx + int v10; // ebx + int v11; // ecx + + v1 = *(_DWORD *)(a1 + 8); + v2 = *(_DWORD **)a1; + v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); + if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) + { + v4 = *(_DWORD *)(a1 + 24); + v5 = *(_DWORD *)(a1 + 16); + v2[1] = v3 + 2 * v1; + v2[2] = v3 + 2 * v5; + v2[3] = v3 + 2 * v4; + } + v6 = *(_DWORD *)(a1 + 32); + result = v6 & *(_DWORD *)(a1 + 36); + if ( result != -1 ) + { + v8 = *(_QWORD *)(a1 + 40); + v9 = v3 + 2 * *(_DWORD *)(a1 + 48); + v10 = v3 + 2 * v6; + v2[6] = v9; + v2[4] = v10; + if ( v8 > 0x7FFFFFFF ) + { + v11 = v10 - 2; + do + { + v10 = v11; + v8 -= 0x7FFFFFFFLL; + v11 -= 2; + } + while ( v8 > 0x7FFFFFFF ); + } + result = v10 + 2 * v8; + v2[5] = result; + } + return result; +} + +//----- (004E5C10) -------------------------------------------------------- +unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1) +{ + unsigned int result; // eax + + result = *(_DWORD *)(a1 + 20); + if ( result && result > *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + { + *(_DWORD *)(a1 + 4) = result; + *(_DWORD *)(a1 + 8) = result; + } + *(_DWORD *)(a1 + 12) = result; + } + return result; +} + +//----- (004E5C40) -------------------------------------------------------- +int __thiscall std::wstringbuf::_M_stringbuf_init(int this, int a2) +{ + unsigned int v2; // edx + + v2 = 0; + *(_DWORD *)(this + 32) = a2; + if ( (a2 & 3) != 0 ) + v2 = *(_DWORD *)(this + 40); + return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v2); +} + +//----- (004E5C80) -------------------------------------------------------- +int __thiscall std::wstringbuf::str(int this, int a2) +{ + unsigned int v3; // eax + + std::wstring::_M_replace(this + 36, 0, *(_DWORD *)(this + 40), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); + v3 = 0; + if ( (*(_BYTE *)(this + 32) & 3) != 0 ) + v3 = *(_DWORD *)(this + 40); + return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); +} + +//----- (004E5CE0) -------------------------------------------------------- +int __thiscall std::wstringbuf::swap(_DWORD *this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // ecx + unsigned int v6; // edi + unsigned int v7; // eax + int v8; // edi + int v9; // edx + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // edx + int v15; // eax + int v16; // edx + int v17; // eax + int v18; // edx + int v19; // eax + int v20; // eax + _DWORD *v21; // ecx + int v22; // ebx + int v23; // edx + int v24; // esi + __int64 v25; // rax + int v26; // edi + int v27; // ebx + bool v28; // cf + int v29; // esi + _DWORD *v30; // ecx + int v31; // ebx + int v32; // edx + int v33; // esi + int result; // eax + __int64 v35; // rax + int v36; // edi + int v37; // ebx + int v38; // esi + const std::locale *v39; // [esp+4h] [ebp-B4h] + const std::locale *v40; // [esp+4h] [ebp-B4h] + const std::locale *v41; // [esp+4h] [ebp-B4h] + const std::locale *v42; // [esp+4h] [ebp-B4h] + unsigned int v43; // [esp+10h] [ebp-A8h] + int v44; // [esp+14h] [ebp-A4h] + unsigned int v45; // [esp+18h] [ebp-A0h] + unsigned int v46; // [esp+1Ch] [ebp-9Ch] + _DWORD *v47; // [esp+24h] [ebp-94h] BYREF + _DWORD *v48; // [esp+28h] [ebp-90h] BYREF + _DWORD *v49; // [esp+2Ch] [ebp-8Ch] BYREF + _DWORD *v50; // [esp+30h] [ebp-88h] + int v51; // [esp+38h] [ebp-80h] + int v52; // [esp+3Ch] [ebp-7Ch] + int v53; // [esp+40h] [ebp-78h] + int v54; // [esp+44h] [ebp-74h] + int v55; // [esp+48h] [ebp-70h] + int v56; // [esp+4Ch] [ebp-6Ch] + int v57; // [esp+50h] [ebp-68h] + int v58; // [esp+54h] [ebp-64h] + __int64 v59; // [esp+58h] [ebp-60h] + int v60; // [esp+60h] [ebp-58h] + int v61; // [esp+64h] [ebp-54h] + _DWORD *v62; // [esp+68h] [ebp-50h] + int v63; // [esp+70h] [ebp-48h] + int v64; // [esp+74h] [ebp-44h] + int v65; // [esp+78h] [ebp-40h] + int v66; // [esp+7Ch] [ebp-3Ch] + __int64 v67; // [esp+80h] [ebp-38h] + int v68; // [esp+88h] [ebp-30h] + int v69; // [esp+8Ch] [ebp-2Ch] + __int64 v70; // [esp+90h] [ebp-28h] + int v71; // [esp+98h] [ebp-20h] + int v72; // [esp+9Ch] [ebp-1Ch] + + v3 = this[1]; + v51 = -1; + v4 = this[9]; + v52 = -1; + v50 = (_DWORD *)a2; + v5 = this[4]; + v53 = -1; + v54 = -1; + v55 = -1; + v56 = -1; + v57 = -1; + v58 = -1; + v59 = -1LL; + v60 = -1; + v61 = -1; + v44 = v3; + if ( !v3 ) + { + v46 = 0; + if ( !v5 ) + goto LABEL_7; + goto LABEL_3; + } + v51 = (v3 - v4) >> 1; + v52 = (v3 - v4) >> 31; + v53 = (this[2] - v4) >> 1; + v54 = v53 >> 31; + v46 = this[3]; + v55 = (int)(v46 - v4) >> 1; + v56 = (int)(v46 - v4) >> 31; + if ( v5 ) + { +LABEL_3: + v57 = (v5 - v4) >> 1; + v58 = (v5 - v4) >> 31; + v6 = this[5]; + v59 = (int)(v6 - v5) >> 1; + v60 = (this[6] - v4) >> 1; + v61 = v60 >> 31; + if ( v46 < v6 ) + v46 = v6; + } + if ( v46 ) + this[10] = (int)(v46 - v4) >> 1; +LABEL_7: + v7 = *(_DWORD *)(a2 + 4); + v8 = *(_DWORD *)(a2 + 16); + v62 = this; + v63 = -1; + v9 = *(_DWORD *)(a2 + 36); + v64 = -1; + v65 = -1; + v66 = -1; + v67 = -1LL; + v68 = -1; + v69 = -1; + v70 = -1LL; + v71 = -1; + v72 = -1; + v45 = v7; + if ( !v7 ) + { + if ( !v8 ) + goto LABEL_13; + goto LABEL_9; + } + v63 = (int)(v7 - v9) >> 1; + v64 = (int)(v7 - v9) >> 31; + v65 = (*(_DWORD *)(a2 + 8) - v9) >> 1; + v66 = v65 >> 31; + v7 = *(_DWORD *)(a2 + 12); + v67 = (int)(v7 - v9) >> 1; + if ( v8 ) + { +LABEL_9: + v68 = (v8 - v9) >> 1; + v69 = (v8 - v9) >> 31; + v43 = *(_DWORD *)(a2 + 20); + v70 = (int)(v43 - v8) >> 1; + v71 = (*(_DWORD *)(a2 + 24) - v9) >> 1; + v72 = v71 >> 31; + if ( v7 < v43 ) + v7 = v43; + } + if ( v7 ) + *(_DWORD *)(a2 + 40) = (int)(v7 - v9) >> 1; +LABEL_13: + this[1] = v45; + v10 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v44; + v11 = this[2]; + this[2] = v10; + v12 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v11; + v13 = this[3]; + this[3] = v12; + v14 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v13; + v15 = this[4]; + this[4] = v14; + v16 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v15; + v17 = this[5]; + this[5] = v16; + v18 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v17; + v19 = this[6]; + this[6] = v18; + *(_DWORD *)(a2 + 24) = v19; + std::locale::locale((volatile signed __int32 **)&v49, (volatile signed __int32 **)this + 7, v39); + std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v49); + std::locale::~locale(&v49); + std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)(a2 + 28), v40); + std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)this + 7, v41); + (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v47); + std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v47); + std::locale::locale((volatile signed __int32 **)&v49, (volatile signed __int32 **)(a2 + 28), v42); + (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v48); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v48); + std::locale::~locale(&v49); + std::locale::~locale(&v48); + std::locale::~locale(&v47); + v20 = this[8]; + this[8] = *(_DWORD *)(a2 + 32); + *(_DWORD *)(a2 + 32) = v20; + std::wstring::swap((wchar_t **)this + 9, a2 + 36); + v21 = v62; + v22 = v62[9]; + if ( (v63 & v64) != -1 ) + { + v23 = v67; + v24 = v65; + v62[1] = v22 + 2 * v63; + v21[2] = v22 + 2 * v24; + v21[3] = v22 + 2 * v23; + } + if ( (v68 & v69) != -1 ) + { + v25 = v70; + v26 = v22 + 2 * v71; + v27 = v22 + 2 * v68; + v28 = (unsigned int)v70 > 0x7FFFFFFF; + v21[4] = v27; + v21[6] = v26; + if ( v28 + HIDWORD(v25) > 0 ) + { + v29 = v27 - 2; + do + { + v27 = v29; + v25 -= 0x7FFFFFFFLL; + v29 -= 2; + } + while ( v25 > 0x7FFFFFFF ); + } + v21[5] = v27 + 2 * v25; + } + v30 = v50; + v31 = v50[9]; + if ( (v51 & v52) != -1 ) + { + v32 = v55; + v33 = v53; + v50[1] = v31 + 2 * v51; + v30[2] = v31 + 2 * v33; + v30[3] = v31 + 2 * v32; + } + result = v57 & v58; + if ( (v57 & v58) != -1 ) + { + v35 = v59; + v36 = v31 + 2 * v60; + v37 = v31 + 2 * v57; + v28 = (unsigned int)v59 > 0x7FFFFFFF; + v30[4] = v37; + v30[6] = v36; + if ( v28 + HIDWORD(v35) > 0 ) + { + v38 = v37 - 2; + do + { + v37 = v38; + v35 -= 0x7FFFFFFFLL; + v38 -= 2; + } + while ( v35 > 0x7FFFFFFF ); + } + result = v37 + 2 * v35; + v30[5] = result; + } + return result; +} +// 4E5F5E: variable 'v39' is possibly undefined +// 4E5F9B: variable 'v40' is possibly undefined +// 4E5FB2: variable 'v41' is possibly undefined +// 4E5FEC: variable 'v42' is possibly undefined + +//----- (004E6200) -------------------------------------------------------- +_DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3) +{ + _WORD *v4; // eax + int v5; // ecx + + if ( !a2 || a3 < 0 ) + return this; + v4 = (_WORD *)this[9]; + this[10] = 0; + *v4 = 0; + std::wstringbuf::_M_sync(this, a2, a3, 0); + return (_DWORD *)v5; +} +// 4E624A: variable 'v5' is possibly undefined + +//----- (004E6260) -------------------------------------------------------- +int __thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) +{ + int result; // eax + _DWORD *v5; // esi + int v6; // ebx + int v7; // edx + int v8; // edi + int v9; // edi + int v10; // esi + int v11; // edi + int v12; // [esp+0h] [ebp-1Ch] + + result = (int)a2; + v5 = (_DWORD *)this[9]; + v6 = this[8] & 0x10; + v7 = (int)a2 + 2 * this[10]; + v12 = this[8] & 8; + if ( v5 == this + 11 ) + v8 = 14; + else + v8 = 2 * this[11]; + v9 = (int)a2 + v8; + if ( a2 != v5 ) + { + v10 = a3; + a3 = 0; + v7 += 2 * v10; + v9 = v7; + } + if ( v12 ) + { + this[1] = a2; + this[3] = v7; + this[2] = (char *)a2 + 2 * a3; + } + if ( v6 ) + { + this[6] = v9; + this[4] = a2; + if ( a4 > 0x7FFFFFFF ) + { + v11 = a4 - 0x7FFFFFFF; + if ( (((unsigned __int64)a4 - 0x7FFFFFFF) >> 32) | (a4 + 1) ) + { + result = (int)a2 - 2; + } + else + { + result = (int)(a2 - 1); + v11 = 1; + } + a4 = v11; + } + this[5] = result + 2 * a4; + result = v12; + if ( !v12 ) + { + this[1] = v7; + this[2] = v7; + this[3] = v7; + } + } + return result; +} + +//----- (004E6350) -------------------------------------------------------- +unsigned int *__thiscall std::wstringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5) +{ + unsigned int *result; // eax + bool v6; // cl + unsigned int v7; // ebx + int v8; // ebp + unsigned int v9; // esi + _DWORD *v10; // edi + int v11; // edi + unsigned int v12; // esi + int v13; // edx + int v14; // edx + int v15; // esi + bool v16; // cf + __int64 v17; // [esp+0h] [ebp-34h] + unsigned __int8 v18; // [esp+8h] [ebp-2Ch] + char v19; // [esp+16h] [ebp-1Eh] + char v20; // [esp+16h] [ebp-1Eh] + unsigned __int8 v21; // [esp+17h] [ebp-1Dh] + int v22; // [esp+18h] [ebp-1Ch] + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + v17 = a3; + v22 = a2[8] & 8; + v6 = (a5 & v22) != 0; + v7 = (a5 & a2[8]) >> 4; + v18 = (a4 != 1) & v7 & v6; + v19 = ((a5 >> 3) ^ 1) & 1 & v7; + v21 = v6 & ((a5 >> 4) ^ 1); + if ( v21 ) + { + v8 = a2[1]; + if ( !v8 && a3 ) + return result; + v20 = v18 | v19; + } + else + { + v8 = a2[4]; + if ( !v8 && a3 ) + return result; + v20 = v18 | v19; + if ( !v20 ) + return result; + } + v9 = a2[5]; + if ( v9 ) + { + v10 = a2; + if ( v9 > a2[3] ) + { + if ( !v22 ) + { + v10 = a2; + a2[1] = v9; + a2[2] = v9; + } + v10[3] = v9; + } + } + if ( a4 == 1 ) + { + v11 = (unsigned __int64)(a3 + ((int)(v9 - v8) >> 1)) >> 32; + v12 = a3 + ((int)(v9 - v8) >> 1); + v17 = ((a2[2] - v8) >> 1) + a3; + } + else + { + v11 = HIDWORD(a3); + v12 = a3; + if ( a4 == 2 ) + { + v15 = (a2[3] - v8) >> 1; + v16 = __CFADD__(v15, (_DWORD)a3); + LODWORD(v17) = v15 + a3; + v12 = v15 + a3; + HIDWORD(v17) = ((a2[3] - v8) >> 31) + v16 + HIDWORD(a3); + v11 = HIDWORD(v17); + } + } + if ( v18 | v21 && v17 >= 0 && (a2[3] - v8) >> 1 >= v17 ) + { + result[2] = 0; + v14 = a2[1] + 2 * v17; + result[1] = HIDWORD(v17); + a2[2] = v14; + *result = v17; + } + if ( v11 >= 0 && v20 && __SPAIR64__((a2[3] - v8) >> 31, (a2[3] - v8) >> 1) >= __SPAIR64__(v11, v12) ) + { + *result = v12; + result[1] = v11; + v13 = a2[4] + 2 * v12; + result[2] = 0; + a2[5] = v13; + } + return result; +} + +//----- (004E65A0) -------------------------------------------------------- +_DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + int v7; // ecx + int v8; // ebx + unsigned int v9; // ebp + int v10; // [esp+0h] [ebp-2Ch] + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + v7 = a2[8] & 8; + v10 = a6 & a2[8]; + if ( (v7 & a6) != 0 ) + v8 = a2[1]; + else + v8 = a2[4]; + if ( (!a3 || v8) && (v10 & 0x18) != 0 ) + { + v9 = a2[5]; + if ( v9 && a2[3] < v9 ) + { + if ( !v7 ) + { + a2[1] = v9; + a2[2] = v9; + } + a2[3] = v9; + } + if ( a3 >= 0 && __SPAIR64__((a2[3] - v8) >> 31, (a2[3] - v8) >> 1) >= a3 ) + { + if ( (v7 & a6) != 0 ) + a2[2] = a2[1] + 2 * a3; + if ( (v10 & 0x10) != 0 ) + a2[5] = a2[4] + 2 * a3; + *(_QWORD *)result = a3; + result[2] = a4; + } + } + return result; +} + +//----- (004E6690) -------------------------------------------------------- +int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) +{ + __int64 v4; // rax + int v5; // ebx + int result; // eax + + v4 = a4; + this[6] = a3; + v5 = a2; + for ( this[4] = a2; v4 > 0x7FFFFFFF; v4 -= 0x7FFFFFFFLL ) + v5 -= 2; + result = v5 + 2 * v4; + this[5] = result; + return result; +} + +//----- (004E66F0) -------------------------------------------------------- +int __thiscall std::wstringbuf::overflow(int this, int a2) +{ + int v2; // edi + unsigned int v4; // edx + _WORD *v5; // eax + int v7; // edx + int v8; // edx + unsigned int v9; // edx + wchar_t *v10; // edx + _WORD *v11; // eax + unsigned int v12; // edx + int v13; // [esp+14h] [ebp-44h] + unsigned int v14; // [esp+18h] [ebp-40h] + size_t v15; // [esp+1Ch] [ebp-3Ch] + int v16; // [esp+1Ch] [ebp-3Ch] + void *v17; // [esp+28h] [ebp-30h] BYREF + int v18; // [esp+2Ch] [ebp-2Ch] + int v19[10]; // [esp+30h] [ebp-28h] BYREF + + v13 = *(_DWORD *)(this + 32); + if ( (v13 & 0x10) == 0 ) + return -1; + if ( (_WORD)a2 != 0xFFFF ) + { + v2 = *(_DWORD *)(this + 36); + if ( v2 == this + 44 ) + v4 = 7; + else + v4 = *(_DWORD *)(this + 44); + v14 = *(_DWORD *)(this + 24); + v15 = *(_DWORD *)(this + 16); + v5 = *(_WORD **)(this + 20); + if ( (int)(v14 - v15) >> 1 < v4 ) + { + *(_DWORD *)(this + 16) = v2; + v5 = (_WORD *)((char *)v5 + v2 - v15); + *(_DWORD *)(this + 24) = v2 + 2 * v4; + *(_DWORD *)(this + 20) = v5; + if ( (v13 & 8) != 0 ) + { + v7 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 12) = v2 + *(_DWORD *)(this + 12) - *(_DWORD *)(this + 4) + 2; + v8 = v2 + v7 - *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = v2; + *(_DWORD *)(this + 8) = v8; + } + goto LABEL_7; + } + if ( (unsigned int)v5 < v14 ) + { +LABEL_7: + *v5 = a2; +LABEL_8: + *(_DWORD *)(this + 20) = v5 + 1; + return a2; + } + if ( v4 != 0x1FFFFFFF ) + { + v9 = 2 * v4; + v18 = 0; + v17 = v19; + LOWORD(v19[0]) = 0; + if ( v9 <= 0x1FFFFFFF ) + { + if ( v9 < 0x200 ) + v9 = 512; + } + else + { + v9 = 0x1FFFFFFF; + } + std::wstring::reserve((int)&v17, v9); + v10 = *(wchar_t **)(this + 16); + v16 = v18; + if ( v10 ) + { + std::wstring::_M_replace((int)&v17, 0, v18, v10, (*(_DWORD *)(this + 24) - (int)v10) >> 1); + v16 = v18; + } + v11 = v17; + if ( v17 == v19 ) + v12 = 7; + else + v12 = v19[0]; + if ( v16 + 1 > v12 ) + { + std::wstring::_M_mutate((const wchar_t **)&v17, v16, 0, 0, 1u); + v11 = v17; + } + v11[v16] = a2; + v18 = v16 + 1; + v11[v16 + 1] = 0; + std::wstring::swap((wchar_t **)(this + 36), (int)&v17); + std::wstringbuf::_M_sync( + (_DWORD *)this, + *(_DWORD **)(this + 36), + (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1, + (*(_DWORD *)(this + 20) - *(_DWORD *)(this + 16)) >> 1); + if ( v17 != v19 ) + operator delete(v17); + v5 = *(_WORD **)(this + 20); + goto LABEL_8; + } + return -1; + } + return 0; +} + +//----- (004E6950) -------------------------------------------------------- +int __thiscall std::wstringbuf::pbackfail(int this, int a2) +{ + unsigned int v2; // eax + int v3; // edx + int v4; // esi + + v2 = *(_DWORD *)(this + 8); + v3 = -1; + if ( v2 <= *(_DWORD *)(this + 4) ) + return v3; + if ( (_WORD)a2 == 0xFFFF ) + { + *(_DWORD *)(this + 8) = v2 - 2; + return 0; + } + v4 = *(unsigned __int16 *)(v2 - 2); + if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && (_WORD)v4 != (_WORD)a2 ) + return v3; + *(_DWORD *)(this + 8) = v2 - 2; + v3 = v4; + if ( (_WORD)v4 == (_WORD)a2 ) + return v3; + *(_WORD *)(v2 - 2) = a2; + return a2; +} + +//----- (004E69B0) -------------------------------------------------------- +int __fastcall std::wstringbuf::showmanyc(int a1) +{ + unsigned int v1; // edx + unsigned int v2; // eax + + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + return -1; + v1 = *(_DWORD *)(a1 + 20); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + if ( v1 > v2 ) + { + *(_DWORD *)(a1 + 12) = v1; + v2 = v1; + } + } + return (int)(v2 - *(_DWORD *)(a1 + 8)) >> 1; +} + +//----- (004E69E0) -------------------------------------------------------- +int __fastcall std::wstringbuf::underflow(int a1) +{ + unsigned int v1; // eax + unsigned int v2; // edx + unsigned __int16 *v3; // eax + + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + return -1; + v1 = *(_DWORD *)(a1 + 20); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + if ( v1 > v2 ) + { + *(_DWORD *)(a1 + 12) = v1; + v2 = v1; + } + } + v3 = *(unsigned __int16 **)(a1 + 8); + if ( v2 > (unsigned int)v3 ) + return *v3; + else + return -1; +} + +//----- (004E6A10) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2) +{ + unsigned int v3; // eax + int v4; // ecx + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // esi + int v9; // edi + int v10; // esi + const std::locale *v12; // [esp+4h] [ebp-74h] + int v13; // [esp+1Ch] [ebp-5Ch] + int v15; // [esp+30h] [ebp-48h] + int v16; // [esp+34h] [ebp-44h] + int v17; // [esp+38h] [ebp-40h] + int v18; // [esp+40h] [ebp-38h] + int v19; // [esp+48h] [ebp-30h] + int v20; // [esp+4Ch] [ebp-2Ch] + int v21; // [esp+50h] [ebp-28h] + int v22; // [esp+58h] [ebp-20h] + + v15 = -1; + v16 = -1; + v17 = -1; + v13 = *(_DWORD *)(a2 + 36); + v3 = *(_DWORD *)(a2 + 4); + v18 = -1; + v19 = -1; + v20 = -1; + v21 = -1; + v22 = -1; + if ( !v3 ) + { + v4 = *(_DWORD *)(a2 + 16); + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v15 = (int)(v3 - v13) >> 1; + v16 = (int)(v3 - v13) >> 31; + v17 = (*(_DWORD *)(a2 + 8) - v13) >> 1; + v3 = *(_DWORD *)(a2 + 12); + v18 = (int)(v3 - v13) >> 1; + v4 = *(_DWORD *)(a2 + 16); + if ( v4 ) + { +LABEL_3: + v19 = (v4 - v13) >> 1; + v20 = (v4 - v13) >> 31; + v21 = (*(_DWORD *)(a2 + 20) - v4) >> 1; + v22 = (*(_DWORD *)(a2 + 24) - v13) >> 1; + if ( v3 < *(_DWORD *)(a2 + 20) ) + v3 = *(_DWORD *)(a2 + 20); + } + if ( v3 ) + *(_DWORD *)(a2 + 40) = (int)(v3 - v13) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v12); + v5 = *(_DWORD *)(a2 + 32); + *(_DWORD *)this = &off_537FA8; + *(_DWORD *)(this + 36) = this + 44; + *(_DWORD *)(this + 32) = v5; + v6 = *(_DWORD *)(a2 + 36); + if ( v6 == a2 + 44 ) + { + wmemcpy((wchar_t *)(this + 44), (const wchar_t *)(a2 + 44), 8u); + } + else + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + } + v7 = *(_DWORD *)(a2 + 40); + *(_DWORD *)(a2 + 36) = a2 + 44; + *(_DWORD *)(a2 + 40) = 0; + *(_DWORD *)(this + 40) = v7; + *(_WORD *)(a2 + 44) = 0; + v8 = *(_DWORD *)(this + 36); + if ( (v15 & v16) != -1 ) + { + *(_DWORD *)(this + 4) = v8 + 2 * v15; + *(_DWORD *)(this + 8) = v8 + 2 * v17; + *(_DWORD *)(this + 12) = v8 + 2 * v18; + } + if ( (v20 & v19) != -1 ) + { + v9 = v8 + 2 * v22; + v10 = v8 + 2 * v19; + *(_DWORD *)(this + 24) = v9; + *(_DWORD *)(this + 16) = v10; + *(_DWORD *)(this + 20) = v10 + 2 * v21; + } + return std::wstringbuf::_M_sync((_DWORD *)a2, *(_DWORD **)(a2 + 36), 0, 0); +} +// 4E6BBF: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4E6B0D: variable 'v12' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); + +//----- (004E6C80) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3) +{ + const wchar_t *v4; // edi + int v5; // eax + _DWORD *v6; // eax + int v7; // eax + int result; // eax + wchar_t *S2; // [esp+4h] [ebp-18h] + + v4 = (const wchar_t *)(a2 + 11); + std::wstreambuf::basic_streambuf((_DWORD *)this, (int)a2, (const std::locale *)S2); + v5 = a2[8]; + *(_DWORD *)this = &off_537FA8; + *(_DWORD *)(this + 36) = this + 44; + *(_DWORD *)(this + 32) = v5; + v6 = (_DWORD *)a2[9]; + if ( v6 == a2 + 11 ) + { + wmemcpy((wchar_t *)(this + 44), v4, 8u); + } + else + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 44) = a2[11]; + } + v7 = a2[10]; + a2[9] = v4; + a2[10] = 0; + *(_DWORD *)(this + 40) = v7; + result = 0; + *((_WORD *)a2 + 22) = 0; + return result; +} +// 4E6C92: variable 'S2' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); + +//----- (004E6D00) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3) +{ + int v4; // edx + unsigned int v5; // eax + wchar_t *v7; // [esp+0h] [ebp-28h] + int v8; // [esp+8h] [ebp-20h] + + *(_DWORD *)this = &off_538A88; + *(_DWORD *)(this + 4) = 0; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 24) = 0; + std::locale::locale((_DWORD *)(this + 28)); + *(_DWORD *)this = &off_537FA8; + *(_DWORD *)(this + 32) = 0; + v4 = *(_DWORD *)(a2 + 4); + LOBYTE(v8) = 0; + v7 = *(wchar_t **)a2; + *(_DWORD *)(this + 36) = this + 44; + std::wstring::_M_construct((wchar_t **)(this + 36), v7, (int)&v7[v4], v8); + *(_DWORD *)(this + 32) = a3; + v5 = 0; + if ( (a3 & 3) != 0 ) + v5 = *(_DWORD *)(this + 40); + return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v5); +} +// 4E6D78: variable 'v8' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004E6DD0) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_538A88; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_537FA8; + this[10] = 0; + this[8] = a2; + this[9] = this + 11; + result = 0; + *((_WORD *)this + 22) = 0; + return result; +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004E6E40) -------------------------------------------------------- +int __fastcall std::wstringbuf::basic_stringbuf(int a1) +{ + _DWORD *v2; // ecx + int result; // eax + + v2 = (_DWORD *)(a1 + 28); + *(v2 - 7) = &off_538A88; + *(v2 - 6) = 0; + *(v2 - 5) = 0; + *(v2 - 4) = 0; + *(v2 - 3) = 0; + *(v2 - 2) = 0; + *(v2 - 1) = 0; + std::locale::locale(v2); + *(_DWORD *)a1 = &off_537FA8; + *(_DWORD *)(a1 + 36) = a1 + 44; + result = 0; + *(_DWORD *)(a1 + 32) = 24; + *(_DWORD *)(a1 + 40) = 0; + *(_WORD *)(a1 + 44) = 0; + return result; +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004E6EB0) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2) +{ + unsigned int v3; // eax + int v4; // ecx + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // esi + int v9; // edi + int v10; // esi + const std::locale *v12; // [esp+4h] [ebp-74h] + int v13; // [esp+1Ch] [ebp-5Ch] + int v15; // [esp+30h] [ebp-48h] + int v16; // [esp+34h] [ebp-44h] + int v17; // [esp+38h] [ebp-40h] + int v18; // [esp+40h] [ebp-38h] + int v19; // [esp+48h] [ebp-30h] + int v20; // [esp+4Ch] [ebp-2Ch] + int v21; // [esp+50h] [ebp-28h] + int v22; // [esp+58h] [ebp-20h] + + v15 = -1; + v16 = -1; + v17 = -1; + v13 = *(_DWORD *)(a2 + 36); + v3 = *(_DWORD *)(a2 + 4); + v18 = -1; + v19 = -1; + v20 = -1; + v21 = -1; + v22 = -1; + if ( !v3 ) + { + v4 = *(_DWORD *)(a2 + 16); + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v15 = (int)(v3 - v13) >> 1; + v16 = (int)(v3 - v13) >> 31; + v17 = (*(_DWORD *)(a2 + 8) - v13) >> 1; + v3 = *(_DWORD *)(a2 + 12); + v18 = (int)(v3 - v13) >> 1; + v4 = *(_DWORD *)(a2 + 16); + if ( v4 ) + { +LABEL_3: + v19 = (v4 - v13) >> 1; + v20 = (v4 - v13) >> 31; + v21 = (*(_DWORD *)(a2 + 20) - v4) >> 1; + v22 = (*(_DWORD *)(a2 + 24) - v13) >> 1; + if ( v3 < *(_DWORD *)(a2 + 20) ) + v3 = *(_DWORD *)(a2 + 20); + } + if ( v3 ) + *(_DWORD *)(a2 + 40) = (int)(v3 - v13) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v12); + v5 = *(_DWORD *)(a2 + 32); + *(_DWORD *)this = &off_537FA8; + *(_DWORD *)(this + 36) = this + 44; + *(_DWORD *)(this + 32) = v5; + v6 = *(_DWORD *)(a2 + 36); + if ( v6 == a2 + 44 ) + { + wmemcpy((wchar_t *)(this + 44), (const wchar_t *)(a2 + 44), 8u); + } + else + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + } + v7 = *(_DWORD *)(a2 + 40); + *(_DWORD *)(a2 + 36) = a2 + 44; + *(_DWORD *)(a2 + 40) = 0; + *(_DWORD *)(this + 40) = v7; + *(_WORD *)(a2 + 44) = 0; + v8 = *(_DWORD *)(this + 36); + if ( (v15 & v16) != -1 ) + { + *(_DWORD *)(this + 4) = v8 + 2 * v15; + *(_DWORD *)(this + 8) = v8 + 2 * v17; + *(_DWORD *)(this + 12) = v8 + 2 * v18; + } + if ( (v20 & v19) != -1 ) + { + v9 = v8 + 2 * v22; + v10 = v8 + 2 * v19; + *(_DWORD *)(this + 24) = v9; + *(_DWORD *)(this + 16) = v10; + *(_DWORD *)(this + 20) = v10 + 2 * v21; + } + return std::wstringbuf::_M_sync((_DWORD *)a2, *(_DWORD **)(a2 + 36), 0, 0); +} +// 4E705F: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4E6FAD: variable 'v12' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); + +//----- (004E7120) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3) +{ + const wchar_t *v4; // edi + int v5; // eax + _DWORD *v6; // eax + int v7; // eax + int result; // eax + wchar_t *S2; // [esp+4h] [ebp-18h] + + v4 = (const wchar_t *)(a2 + 11); + std::wstreambuf::basic_streambuf((_DWORD *)this, (int)a2, (const std::locale *)S2); + v5 = a2[8]; + *(_DWORD *)this = &off_537FA8; + *(_DWORD *)(this + 36) = this + 44; + *(_DWORD *)(this + 32) = v5; + v6 = (_DWORD *)a2[9]; + if ( v6 == a2 + 11 ) + { + wmemcpy((wchar_t *)(this + 44), v4, 8u); + } + else + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 44) = a2[11]; + } + v7 = a2[10]; + a2[9] = v4; + a2[10] = 0; + *(_DWORD *)(this + 40) = v7; + result = 0; + *((_WORD *)a2 + 22) = 0; + return result; +} +// 4E7132: variable 'S2' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); + +//----- (004E71A0) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3) +{ + int v4; // edx + unsigned int v5; // eax + wchar_t *v7; // [esp+0h] [ebp-28h] + int v8; // [esp+8h] [ebp-20h] + + *(_DWORD *)this = &off_538A88; + *(_DWORD *)(this + 4) = 0; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 24) = 0; + std::locale::locale((_DWORD *)(this + 28)); + *(_DWORD *)this = &off_537FA8; + *(_DWORD *)(this + 32) = 0; + v4 = *(_DWORD *)(a2 + 4); + LOBYTE(v8) = 0; + v7 = *(wchar_t **)a2; + *(_DWORD *)(this + 36) = this + 44; + std::wstring::_M_construct((wchar_t **)(this + 36), v7, (int)&v7[v4], v8); + *(_DWORD *)(this + 32) = a3; + v5 = 0; + if ( (a3 & 3) != 0 ) + v5 = *(_DWORD *)(this + 40); + return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v5); +} +// 4E7218: variable 'v8' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004E7270) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_538A88; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_537FA8; + this[10] = 0; + this[8] = a2; + this[9] = this + 11; + result = 0; + *((_WORD *)this + 22) = 0; + return result; +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004E72E0) -------------------------------------------------------- +int __fastcall std::wstringbuf::basic_stringbuf(int a1) +{ + _DWORD *v2; // ecx + int result; // eax + + v2 = (_DWORD *)(a1 + 28); + *(v2 - 7) = &off_538A88; + *(v2 - 6) = 0; + *(v2 - 5) = 0; + *(v2 - 4) = 0; + *(v2 - 3) = 0; + *(v2 - 2) = 0; + *(v2 - 1) = 0; + std::locale::locale(v2); + *(_DWORD *)a1 = &off_537FA8; + *(_DWORD *)(a1 + 36) = a1 + 44; + result = 0; + *(_DWORD *)(a1 + 32) = 24; + *(_DWORD *)(a1 + 40) = 0; + *(_WORD *)(a1 + 44) = 0; + return result; +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004E7350) -------------------------------------------------------- +void __fastcall std::wstringbuf::~wstringbuf(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[9]; + *a1 = &off_537FA8; + if ( v2 != a1 + 11 ) + operator delete(v2); + *a1 = &off_538A88; + std::locale::~locale((_DWORD **)a1 + 7); + operator delete(a1); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004E7390) -------------------------------------------------------- +void __fastcall std::wstringbuf::~wstringbuf(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 36); + *(_DWORD *)a1 = &off_537FA8; + if ( v2 != (void *)(a1 + 44) ) + operator delete(v2); + *(_DWORD *)a1 = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004E73C0) -------------------------------------------------------- +int __thiscall std::wstringbuf::operator=(int this, int a2) +{ + unsigned int v2; // eax + int v3; // edx + int v4; // ecx + unsigned int v5; // edi + int v6; // ecx + wchar_t *v7; // edx + wchar_t *v8; // eax + int v9; // ebx + _DWORD *v10; // ecx + int v11; // esi + int v12; // edx + int v13; // edi + __int64 v14; // rax + int v15; // edi + int v16; // esi + int v17; // edi + int v19; // ecx + const std::locale *v20; // [esp+4h] [ebp-74h] + const std::locale *v21; // [esp+4h] [ebp-74h] + int v22; // [esp+18h] [ebp-60h] + _DWORD *v24; // [esp+20h] [ebp-58h] BYREF + _DWORD *v25; // [esp+24h] [ebp-54h] BYREF + _DWORD *v26; // [esp+28h] [ebp-50h] + int v27; // [esp+30h] [ebp-48h] + int v28; // [esp+34h] [ebp-44h] + int v29; // [esp+38h] [ebp-40h] + int v30; // [esp+3Ch] [ebp-3Ch] + __int64 v31; // [esp+40h] [ebp-38h] + int v32; // [esp+48h] [ebp-30h] + int v33; // [esp+4Ch] [ebp-2Ch] + __int64 v34; // [esp+50h] [ebp-28h] + int v35; // [esp+58h] [ebp-20h] + int v36; // [esp+5Ch] [ebp-1Ch] + + v26 = (_DWORD *)this; + v2 = *(_DWORD *)(a2 + 4); + v27 = -1; + v28 = -1; + v3 = *(_DWORD *)(a2 + 36); + v29 = -1; + v4 = *(_DWORD *)(a2 + 16); + v30 = -1; + v31 = -1LL; + v32 = -1; + v33 = -1; + v34 = -1LL; + v35 = -1; + v36 = -1; + if ( !v2 ) + { + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v27 = (int)(v2 - v3) >> 1; + v28 = (int)(v2 - v3) >> 31; + v29 = (*(_DWORD *)(a2 + 8) - v3) >> 1; + v30 = v29 >> 31; + v2 = *(_DWORD *)(a2 + 12); + v31 = (int)(v2 - v3) >> 1; + if ( v4 ) + { +LABEL_3: + v32 = (v4 - v3) >> 1; + v33 = (v4 - v3) >> 31; + v5 = *(_DWORD *)(a2 + 20); + v34 = (int)(v5 - v4) >> 1; + v35 = (*(_DWORD *)(a2 + 24) - v3) >> 1; + v36 = v35 >> 31; + if ( v2 < v5 ) + v2 = v5; + } + if ( v2 ) + *(_DWORD *)(a2 + 40) = (int)(v2 - v3) >> 1; +LABEL_7: + std::wstreambuf::operator=((volatile signed __int32 **)this, a2); + std::locale::locale((volatile signed __int32 **)&v24, (volatile signed __int32 **)(a2 + 28), v20); + std::locale::locale((volatile signed __int32 **)&v25, (volatile signed __int32 **)(this + 28), v21); + (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v24); + std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v24); + std::locale::~locale(&v25); + std::locale::~locale(&v24); + v6 = *(_DWORD *)(a2 + 36); + v7 = (wchar_t *)(a2 + 44); + *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); + v8 = *(wchar_t **)(this + 36); + if ( v6 == a2 + 44 ) + { + v19 = *(_DWORD *)(a2 + 40); + if ( v19 ) + { + if ( v19 == 1 ) + { + *v8 = *(_WORD *)(a2 + 44); + } + else + { + wmemcpy(v8, (const wchar_t *)(a2 + 44), *(_DWORD *)(a2 + 40)); + v19 = *(_DWORD *)(a2 + 40); + v7 = *(wchar_t **)(a2 + 36); + v8 = *(wchar_t **)(this + 36); + } + } + *(_DWORD *)(this + 40) = v19; + v8[v19] = 0; + v8 = v7; + } + else + { + v22 = *(_DWORD *)(a2 + 40); + if ( v8 == (wchar_t *)(this + 44) ) + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 40) = v22; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + } + else + { + v9 = *(_DWORD *)(this + 44); + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 40) = v22; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + if ( v8 ) + { + *(_DWORD *)(a2 + 36) = v8; + *(_DWORD *)(a2 + 44) = v9; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 36) = v7; + v8 = (wchar_t *)(a2 + 44); + } +LABEL_11: + *(_DWORD *)(a2 + 40) = 0; + *v8 = 0; + std::wstringbuf::_M_sync((_DWORD *)a2, v8, 0, 0); + v10 = v26; + v11 = v26[9]; + if ( (v27 & v28) != -1 ) + { + v12 = v31; + v13 = v29; + v26[1] = v11 + 2 * v27; + v10[2] = v11 + 2 * v13; + v10[3] = v11 + 2 * v12; + } + if ( (v33 & v32) != -1 ) + { + v14 = v34; + v15 = v11 + 2 * v35; + v16 = v11 + 2 * v32; + v10[6] = v15; + v10[4] = v16; + if ( v14 > 0x7FFFFFFF ) + { + v17 = v16 - 2; + do + { + v16 = v17; + v14 -= 0x7FFFFFFFLL; + v17 -= 2; + } + while ( v14 > 0x7FFFFFFF ); + } + v10[5] = v16 + 2 * v14; + } + return this; +} +// 4E74CC: variable 'v20' is possibly undefined +// 4E74DA: variable 'v21' is possibly undefined + +//----- (004E76F0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_537FE8; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 537FE8: using guessed type int (*off_537FE8)(); + +//----- (004E7790) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + return std::messages_byname::messages_byname(this, (int **)*a2, a3); +} + +//----- (004E77A0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_537FE8; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 537FE8: using guessed type int (*off_537FE8)(); + +//----- (004E7840) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + return std::messages_byname::messages_byname(this, (int **)*a2, a3); +} + +//----- (004E7850) -------------------------------------------------------- +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5382E0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4E7869: variable 'v2' is possibly undefined +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004E7880) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382E0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4E7889: variable 'v1' is possibly undefined +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004E78B0) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382E0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4E78B9: variable 'v1' is possibly undefined +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004E78E0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_538004; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538004: using guessed type int (*off_538004)(); + +//----- (004E7980) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + return std::messages_byname::messages_byname(this, (int **)*a2, a3); +} + +//----- (004E7990) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_538004; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 538004: using guessed type int (*off_538004)(); + +//----- (004E7A30) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + return std::messages_byname::messages_byname(this, (int **)*a2, a3); +} + +//----- (004E7A40) -------------------------------------------------------- +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5382FC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4E7A59: variable 'v2' is possibly undefined +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004E7A70) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382FC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4E7A79: variable 'v1' is possibly undefined +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004E7AA0) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382FC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4E7AA9: variable 'v1' is possibly undefined +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004E7AD0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_538318; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538020; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538020: using guessed type int (*off_538020)(); +// 538318: using guessed type int (*off_538318)(); + +//----- (004E7BC0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_538318; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538020; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538020: using guessed type int (*off_538020)(); +// 538318: using guessed type int (*off_538318)(); + +//----- (004E7CB0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_538318; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538020; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538020: using guessed type int (*off_538020)(); +// 538318: using guessed type int (*off_538318)(); + +//----- (004E7DA0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_538318; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538020; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538020: using guessed type int (*off_538020)(); +// 538318: using guessed type int (*off_538318)(); + +//----- (004E7E90) -------------------------------------------------------- +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538020; + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4E7E9C: variable 'v2' is possibly undefined +// 538020: using guessed type int (*off_538020)(); + +//----- (004E7EB0) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538020; + std::numpunct::~numpunct(a1); +} +// 4E7EB0: variable 'v1' is possibly undefined +// 538020: using guessed type int (*off_538020)(); + +//----- (004E7EC0) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538020; + std::numpunct::~numpunct(a1); +} +// 4E7EC0: variable 'v1' is possibly undefined +// 538020: using guessed type int (*off_538020)(); + +//----- (004E7ED0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_53833C; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538044; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538044: using guessed type int (*off_538044)(); +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004E7FC0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_53833C; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538044; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538044: using guessed type int (*off_538044)(); +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004E80B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_53833C; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538044; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 538044: using guessed type int (*off_538044)(); +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004E81A0) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_53833C; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_538044; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 538044: using guessed type int (*off_538044)(); +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004E8290) -------------------------------------------------------- +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538044; + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4E829C: variable 'v2' is possibly undefined +// 538044: using guessed type int (*off_538044)(); + +//----- (004E82B0) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538044; + std::numpunct::~numpunct(a1); +} +// 4E82B0: variable 'v1' is possibly undefined +// 538044: using guessed type int (*off_538044)(); + +//----- (004E82C0) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538044; + std::numpunct::~numpunct(a1); +} +// 4E82C0: variable 'v1' is possibly undefined +// 538044: using guessed type int (*off_538044)(); + +//----- (004E82D0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538068; + result = a3 != 0; + this[1] = result; + return result; +} +// 538068: using guessed type int (*off_538068)(); + +//----- (004E82F0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538068; + result = a3 != 0; + this[1] = result; + return result; +} +// 538068: using guessed type int (*off_538068)(); + +//----- (004E8310) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538068; + result = a3 != 0; + this[1] = result; + return result; +} +// 538068: using guessed type int (*off_538068)(); + +//----- (004E8330) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538068; + result = a3 != 0; + this[1] = result; + return result; +} +// 538068: using guessed type int (*off_538068)(); + +//----- (004E8350) -------------------------------------------------------- +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538360; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4E835C: variable 'v2' is possibly undefined +// 538360: using guessed type int (*off_538360)(); + +//----- (004E8370) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538360; + std::locale::facet::~facet(a1); +} +// 4E8370: variable 'v1' is possibly undefined +// 538360: using guessed type int (*off_538360)(); + +//----- (004E8380) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538360; + std::locale::facet::~facet(a1); +} +// 4E8380: variable 'v1' is possibly undefined +// 538360: using guessed type int (*off_538360)(); + +//----- (004E8390) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538094; + result = a3 != 0; + this[1] = result; + return result; +} +// 538094: using guessed type int (*off_538094)(); + +//----- (004E83B0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538094; + result = a3 != 0; + this[1] = result; + return result; +} +// 538094: using guessed type int (*off_538094)(); + +//----- (004E83D0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538094; + result = a3 != 0; + this[1] = result; + return result; +} +// 538094: using guessed type int (*off_538094)(); + +//----- (004E83F0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_538094; + result = a3 != 0; + this[1] = result; + return result; +} +// 538094: using guessed type int (*off_538094)(); + +//----- (004E8410) -------------------------------------------------------- +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_53838C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4E841C: variable 'v2' is possibly undefined +// 53838C: using guessed type int (*off_53838C)(); + +//----- (004E8430) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53838C; + std::locale::facet::~facet(a1); +} +// 4E8430: variable 'v1' is possibly undefined +// 53838C: using guessed type int (*off_53838C)(); + +//----- (004E8440) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53838C; + std::locale::facet::~facet(a1); +} +// 4E8440: variable 'v1' is possibly undefined +// 53838C: using guessed type int (*off_53838C)(); + +//----- (004E8450) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_537E60; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_5380C0; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 537E60: using guessed type int (*off_537E60)(); +// 5380C0: using guessed type int (*off_5380C0)(); + +//----- (004E8550) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_537E60; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_5380C0; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 537E60: using guessed type int (*off_537E60)(); +// 5380C0: using guessed type int (*off_5380C0)(); + +//----- (004E8650) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_537E60; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_5380C0; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 537E60: using guessed type int (*off_537E60)(); +// 5380C0: using guessed type int (*off_5380C0)(); + +//----- (004E8750) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_537E60; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_5380C0; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 537E60: using guessed type int (*off_537E60)(); +// 5380C0: using guessed type int (*off_5380C0)(); + +//----- (004E8850) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5380C0; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4E885C: variable 'v2' is possibly undefined +// 5380C0: using guessed type int (*off_5380C0)(); + +//----- (004E8870) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5380C0; + std::moneypunct::~moneypunct(a1); +} +// 4E8870: variable 'v1' is possibly undefined +// 5380C0: using guessed type int (*off_5380C0)(); + +//----- (004E8880) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5380C0; + std::moneypunct::~moneypunct(a1); +} +// 4E8880: variable 'v1' is possibly undefined +// 5380C0: using guessed type int (*off_5380C0)(); + +//----- (004E8890) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_537E94; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_5380F4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 537E94: using guessed type int (*off_537E94)(); +// 5380F4: using guessed type int (*off_5380F4)(); + +//----- (004E8990) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_537E94; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_5380F4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 537E94: using guessed type int (*off_537E94)(); +// 5380F4: using guessed type int (*off_5380F4)(); + +//----- (004E8A90) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_537E94; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_5380F4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 537E94: using guessed type int (*off_537E94)(); +// 5380F4: using guessed type int (*off_5380F4)(); + +//----- (004E8B90) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_537E94; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_5380F4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 537E94: using guessed type int (*off_537E94)(); +// 5380F4: using guessed type int (*off_5380F4)(); + +//----- (004E8C90) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5380F4; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4E8C9C: variable 'v2' is possibly undefined +// 5380F4: using guessed type int (*off_5380F4)(); + +//----- (004E8CB0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5380F4; + std::moneypunct::~moneypunct(a1); +} +// 4E8CB0: variable 'v1' is possibly undefined +// 5380F4: using guessed type int (*off_5380F4)(); + +//----- (004E8CC0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5380F4; + std::moneypunct::~moneypunct(a1); +} +// 4E8CC0: variable 'v1' is possibly undefined +// 5380F4: using guessed type int (*off_5380F4)(); + +//----- (004E8CD0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_537EC8; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538128; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 537EC8: using guessed type int (*off_537EC8)(); +// 538128: using guessed type int (*off_538128)(); + +//----- (004E8DD0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_537EC8; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538128; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 537EC8: using guessed type int (*off_537EC8)(); +// 538128: using guessed type int (*off_538128)(); + +//----- (004E8ED0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_537EC8; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538128; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 537EC8: using guessed type int (*off_537EC8)(); +// 538128: using guessed type int (*off_538128)(); + +//----- (004E8FD0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_537EC8; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_538128; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 537EC8: using guessed type int (*off_537EC8)(); +// 538128: using guessed type int (*off_538128)(); + +//----- (004E90D0) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538128; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4E90DC: variable 'v2' is possibly undefined +// 538128: using guessed type int (*off_538128)(); + +//----- (004E90F0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538128; + std::moneypunct::~moneypunct(a1); +} +// 4E90F0: variable 'v1' is possibly undefined +// 538128: using guessed type int (*off_538128)(); + +//----- (004E9100) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538128; + std::moneypunct::~moneypunct(a1); +} +// 4E9100: variable 'v1' is possibly undefined +// 538128: using guessed type int (*off_538128)(); + +//----- (004E9110) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_537EFC; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_53815C; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 537EFC: using guessed type int (*off_537EFC)(); +// 53815C: using guessed type int (*off_53815C)(); + +//----- (004E9210) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_537EFC; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_53815C; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 537EFC: using guessed type int (*off_537EFC)(); +// 53815C: using guessed type int (*off_53815C)(); + +//----- (004E9310) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_537EFC; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_53815C; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 537EFC: using guessed type int (*off_537EFC)(); +// 53815C: using guessed type int (*off_53815C)(); + +//----- (004E9410) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_537EFC; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_53815C; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 537EFC: using guessed type int (*off_537EFC)(); +// 53815C: using guessed type int (*off_53815C)(); + +//----- (004E9510) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_53815C; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4E951C: variable 'v2' is possibly undefined +// 53815C: using guessed type int (*off_53815C)(); + +//----- (004E9530) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53815C; + std::moneypunct::~moneypunct(a1); +} +// 4E9530: variable 'v1' is possibly undefined +// 53815C: using guessed type int (*off_53815C)(); + +//----- (004E9540) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53815C; + std::moneypunct::~moneypunct(a1); +} +// 4E9540: variable 'v1' is possibly undefined +// 53815C: using guessed type int (*off_53815C)(); + +//----- (004E9550) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 12); + std::string::_M_replace((unsigned int *)(this + 48), 0, *(_DWORD *)(this + 52), *(char **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 44) & 3) != 0 ) + v4 = *(_DWORD *)(this + 52); + return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); +} + +//----- (004E95C0) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::swap( + _DWORD *this, + _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return std::stringbuf::swap(this + 3, (int)(a2 + 3)); +} +// 4E95E4: variable 'v10' is possibly undefined + +//----- (004E9660) -------------------------------------------------------- +char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + _DWORD *this, + _DWORD *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + std::ios_base *v6; // esi + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + int v11; // eax + _DWORD *v12; // edx + int v13; // edx + int v14; // eax + int v15; // ecx + int v16; // eax + char *result; // eax + std::ios_base *v18; // [esp+4h] [ebp-84h] + const std::locale *v19; // [esp+4h] [ebp-84h] + _DWORD *v20; // [esp+1Ch] [ebp-6Ch] + _DWORD *v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + __int64 v23; // [esp+40h] [ebp-48h] + int v24; // [esp+48h] [ebp-40h] + int v25; // [esp+50h] [ebp-38h] + __int64 v26; // [esp+58h] [ebp-30h] + int v27; // [esp+60h] [ebp-28h] + int v28; // [esp+68h] [ebp-20h] + + v21 = this + 18; + std::ios_base::ios_base(this + 18); + *this = &unk_533844; + *((_WORD *)this + 94) = 0; + v3 = a2[1]; + this[46] = 0; + this[1] = v3; + v4 = *a2; + this[48] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[49] = 0; + this[50] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[18] = &unk_533858; + this[51] = 0; + std::ios_base::_M_move((int)v21, v6, v18); + std::ios::_M_cache_locale(v21, (int)(this + 45)); + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[48] = 0; + this[46] = v7; + v20 = a2 + 3; + *((_WORD *)this + 94) = *((_WORD *)v6 + 58); + v8 = a2[12]; + v22 = this + 3; + v9 = a2[4]; + a2[1] = 0; + v23 = -1LL; + *this = &off_538194; + this[18] = off_5381BC; + this[2] = off_5381A8; + v24 = -1; + v25 = -1; + v26 = -1LL; + v27 = -1; + v28 = -1; + if ( !v9 ) + { + v10 = a2[7]; + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v23 = (int)(v9 - v8); + v24 = a2[5] - v8; + v9 = a2[6]; + v25 = v9 - v8; + v10 = a2[7]; + if ( v10 ) + { +LABEL_3: + v26 = v10 - v8; + v27 = a2[8] - v10; + v28 = a2[9] - v8; + if ( v9 < a2[8] ) + v9 = a2[8]; + } + if ( v9 ) + a2[13] = v9 - v8; +LABEL_7: + std::streambuf::basic_streambuf(v22, (int)v20, v19); + this[3] = &off_537F68; + v11 = a2[11]; + this[12] = this + 14; + this[11] = v11; + v12 = (_DWORD *)a2[12]; + if ( v12 == a2 + 14 ) + { + this[14] = a2[14]; + this[15] = a2[15]; + this[16] = a2[16]; + this[17] = a2[17]; + } + else + { + this[12] = v12; + this[14] = a2[14]; + } + v13 = a2[13]; + a2[12] = a2 + 14; + a2[13] = 0; + this[13] = v13; + *((_BYTE *)a2 + 56) = 0; + v14 = this[12]; + if ( ((unsigned int)v23 & HIDWORD(v23)) != -1 ) + { + this[4] = v14 + v23; + this[5] = v14 + v24; + this[6] = v14 + v25; + } + if ( ((unsigned int)v26 & HIDWORD(v26)) != -1 ) + { + v15 = v14 + v28; + v16 = v26 + v14; + this[9] = v15; + this[7] = v16; + this[8] = v27 + v16; + } + std::stringbuf::_M_sync(v20, (_DWORD *)a2[12], 0, 0); + result = (char *)(this + 3); + this[48] = v22; + return result; +} +// 4E98D4: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4E96D9: variable 'v18' is possibly undefined +// 4E9829: variable 'v19' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); + +//----- (004E99F0) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int a2, + int a3) +{ + int v3; // esi + unsigned __int8 *v5; // edx + int v6; // eax + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 72); + std::ios_base::ios_base((_DWORD *)this + 18); + *(_DWORD *)this = &unk_533844; + *((_DWORD *)this + 46) = 0; + *((_WORD *)this + 94) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 51) = 0; + *((_DWORD *)this + 18) = &unk_533858; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_53386C; + *((_DWORD *)this + 18) = &unk_533880; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_538194; + *((_DWORD *)this + 18) = off_5381BC; + *((_DWORD *)this + 2) = off_5381A8; + *((_DWORD *)this + 3) = &off_538A48; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + *((_DWORD *)this + 9) = 0; + std::locale::locale((_DWORD *)this + 10); + *((_DWORD *)this + 3) = &off_537F68; + v5 = *(unsigned __int8 **)a2; + v6 = *(_DWORD *)(a2 + 4); + *((_DWORD *)this + 11) = 0; + LOBYTE(v9) = 0; + *((_DWORD *)this + 12) = this + 56; + std::string::_M_construct((void **)this + 12, v5, (size_t)&v5[v6], v9); + *((_DWORD *)this + 11) = a3; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 13); + std::stringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v7); + return std::ios::init(v3, (int)(this + 12)); +} +// 4E9B0A: variable 'v9' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E9BB0) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + _DWORD *this, + int a2) +{ + int v2; // esi + + v2 = (int)(this + 18); + std::ios_base::ios_base(this + 18); + *this = &unk_533844; + this[46] = 0; + *((_WORD *)this + 94) = 0; + this[48] = 0; + this[49] = 0; + this[50] = 0; + this[51] = 0; + this[18] = &unk_533858; + this[1] = 0; + std::ios::init(v2, 0); + this[2] = &unk_53386C; + this[18] = &unk_533880; + std::ios::init(v2, 0); + *this = &off_538194; + this[18] = off_5381BC; + this[2] = off_5381A8; + this[3] = &off_538A48; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + *((_BYTE *)this + 56) = 0; + this[3] = &off_537F68; + this[11] = a2; + this[12] = this + 14; + this[13] = 0; + return std::ios::init(v2, (int)(this + 3)); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E9D20) -------------------------------------------------------- +BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 72; + std::ios_base::ios_base((_DWORD *)(a1 + 72)); + *(_DWORD *)a1 = &unk_533844; + *(_DWORD *)(a1 + 184) = 0; + *(_WORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 200) = 0; + *(_DWORD *)(a1 + 204) = 0; + *(_DWORD *)(a1 + 72) = &unk_533858; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_53386C; + *(_DWORD *)(a1 + 72) = &unk_533880; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_538194; + *(_DWORD *)(a1 + 72) = off_5381BC; + *(_DWORD *)(a1 + 8) = off_5381A8; + *(_DWORD *)(a1 + 12) = &off_538A48; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::locale::locale((_DWORD *)(a1 + 40)); + *(_BYTE *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 12) = &off_537F68; + *(_DWORD *)(a1 + 44) = 24; + *(_DWORD *)(a1 + 48) = a1 + 56; + *(_DWORD *)(a1 + 52) = 0; + return std::ios::init(v1, a1 + 12); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004E9E90) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2, + _DWORD *a3) +{ + int v4; // eax + int v5; // esi + int v6; // edx + __int16 v7; // ax + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + int v12; // eax + int v13; // edx + unsigned int v14; // eax + int v15; // ecx + int v16; // eax + _DWORD *v17; // edx + int v18; // edx + int v19; // eax + int v20; // edi + int v21; // eax + int result; // eax + std::ios_base *v23; // [esp+4h] [ebp-84h] + const std::locale *v24; // [esp+4h] [ebp-84h] + _DWORD *v25; // [esp+1Ch] [ebp-6Ch] + std::ios_base *v26; // [esp+20h] [ebp-68h] + int v27; // [esp+20h] [ebp-68h] + _DWORD *v28; // [esp+28h] [ebp-60h] + __int64 v29; // [esp+40h] [ebp-48h] + int v30; // [esp+48h] [ebp-40h] + int v31; // [esp+50h] [ebp-38h] + __int64 v32; // [esp+58h] [ebp-30h] + int v33; // [esp+60h] [ebp-28h] + int v34; // [esp+68h] [ebp-20h] + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = a3[1]; + v26 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + v5 = (int)this + *(_DWORD *)(v4 - 12); + std::ios_base::_M_move(v5, v26, v23); + std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); + *(_DWORD *)(v5 + 120) = 0; + v6 = *((_DWORD *)v26 + 28); + *((_DWORD *)v26 + 28) = 0; + v7 = *((_WORD *)v26 + 58); + *(_DWORD *)(v5 + 112) = v6; + *(_WORD *)(v5 + 116) = v7; + v8 = a2[4]; + v9 = a2[5]; + a3[1] = 0; + this[2] = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v9; + v10 = a2[1]; + v11 = a2[6]; + *this = v10; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + this[2] = a2[7]; + v12 = *a2; + v13 = a2[8]; + *this = *a2; + v29 = -1LL; + *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; + v25 = a3 + 3; + this[2] = a2[9]; + v28 = this + 3; + v30 = -1; + v27 = a3[12]; + v14 = a3[4]; + v31 = -1; + v32 = -1LL; + v33 = -1; + v34 = -1; + if ( !v14 ) + { + v15 = a3[7]; + if ( !v15 ) + goto LABEL_7; + goto LABEL_3; + } + v29 = (int)(v14 - v27); + v30 = a3[5] - v27; + v14 = a3[6]; + v31 = v14 - v27; + v15 = a3[7]; + if ( v15 ) + { +LABEL_3: + v32 = v15 - v27; + v33 = a3[8] - v15; + v34 = a3[9] - v27; + if ( v14 < a3[8] ) + v14 = a3[8]; + } + if ( v14 ) + a3[13] = v14 - v27; +LABEL_7: + std::streambuf::basic_streambuf(v28, (int)v25, v24); + this[3] = (int)&off_537F68; + v16 = a3[11]; + this[12] = (int)(this + 14); + this[11] = v16; + v17 = (_DWORD *)a3[12]; + if ( v17 == a3 + 14 ) + { + this[14] = a3[14]; + this[15] = a3[15]; + this[16] = a3[16]; + this[17] = a3[17]; + } + else + { + this[12] = (int)v17; + this[14] = a3[14]; + } + v18 = a3[13]; + a3[12] = a3 + 14; + a3[13] = 0; + this[13] = v18; + *((_BYTE *)a3 + 56) = 0; + v19 = this[12]; + if ( ((unsigned int)v29 & HIDWORD(v29)) != -1 ) + { + this[4] = v19 + v29; + this[5] = v19 + v30; + this[6] = v19 + v31; + } + if ( ((unsigned int)v32 & HIDWORD(v32)) != -1 ) + { + v20 = v19 + v34; + v21 = v32 + v19; + this[9] = v20; + this[7] = v21; + this[8] = v33 + v21; + } + std::stringbuf::_M_sync(v25, (_DWORD *)a3[12], 0, 0); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)v28; + return result; +} +// 4EA0F7: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4E9ECA: variable 'v23' is possibly undefined +// 4EA040: variable 'v24' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); + +//----- (004EA200) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int *a2, + int a3, + int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + int v12; // eax + unsigned __int8 *v13; // edx + int v14; // eax + unsigned int v15; // eax + int v17; // [esp+8h] [ebp-30h] + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::ios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + v12 = a2[9]; + *((_DWORD *)this + 3) = &off_538A48; + *((_DWORD *)this + 2) = v12; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + *((_DWORD *)this + 9) = 0; + std::locale::locale((_DWORD *)this + 10); + *((_DWORD *)this + 3) = &off_537F68; + v13 = *(unsigned __int8 **)a3; + v14 = *(_DWORD *)(a3 + 4); + *((_DWORD *)this + 11) = 0; + LOBYTE(v17) = 0; + *((_DWORD *)this + 12) = this + 56; + std::string::_M_construct((void **)this + 12, v13, (size_t)&v13[v14], v17); + *((_DWORD *)this + 11) = a4; + v15 = 0; + if ( (a4 & 3) != 0 ) + v15 = *((_DWORD *)this + 13); + std::stringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v15); + return std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); +} +// 4EA2F1: variable 'v17' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EA3B0) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2, + int a3) +{ + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // eax + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = a2[4]; + this[2] = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); + *v6 = a2[5]; + std::ios::init((int)v6, 0); + v7 = a2[1]; + v8 = a2[6]; + *this = v7; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + this[2] = a2[7]; + v9 = *a2; + v10 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; + v11 = a2[9]; + this[3] = (int)&off_538A48; + this[2] = v11; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + *((_BYTE *)this + 56) = 0; + this[13] = 0; + this[11] = a3; + this[12] = (int)(this + 14); + v12 = *this; + this[3] = (int)&off_537F68; + return std::ios::init((int)this + *(_DWORD *)(v12 - 12), (int)(this + 3)); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EA510) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // eax + int v12; // ecx + + v3 = a2[2]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[4]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[5]; + std::ios::init((int)v5, 0); + v6 = a2[1]; + v7 = a2[6]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = a2[7]; + v8 = *a2; + v9 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + v10 = a2[9]; + this[3] = (int)&off_538A48; + this[2] = v10; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + *((_BYTE *)this + 56) = 0; + this[12] = (int)(this + 14); + v11 = *this; + this[13] = 0; + this[3] = (int)&off_537F68; + v12 = *(_DWORD *)(v11 - 12); + this[11] = 24; + return std::ios::init((int)this + v12, (int)(this + 3)); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EA670) -------------------------------------------------------- +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[12]; + *a1 = &off_538194; + a1[18] = off_5381BC; + a1[2] = off_5381A8; + a1[3] = &off_537F68; + if ( v2 != a1 + 14 ) + operator delete(v2); + a1[3] = &off_538A48; + std::locale::~locale((_DWORD **)a1 + 10); + a1[2] = &unk_53386C; + *a1 = &unk_533844; + a1[1] = 0; + a1[18] = &off_539474; + std::ios_base::~ios_base((int)(a1 + 18)); + operator delete(a1); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004EA6F0) -------------------------------------------------------- +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 48); + *(_DWORD *)a1 = &off_538194; + *(_DWORD *)(a1 + 72) = off_5381BC; + *(_DWORD *)(a1 + 8) = off_5381A8; + *(_DWORD *)(a1 + 12) = &off_537F68; + if ( v2 != (void *)(a1 + 56) ) + operator delete(v2); + *(_DWORD *)(a1 + 12) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 40)); + *(_DWORD *)(a1 + 8) = &unk_53386C; + *(_DWORD *)a1 = &unk_533844; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 72) = &off_539474; + std::ios_base::~ios_base(a1 + 72); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004EA760) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( + char *this, + int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // eax + int v6; // eax + int v7; // eax + int result; // eax + + v3 = *a2; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; + v4 = a2[9]; + *((_DWORD *)this + 3) = &off_537F68; + *((_DWORD *)this + 2) = v4; + if ( *((char **)this + 12) != this + 56 ) + operator delete(*((void **)this + 12)); + *((_DWORD *)this + 3) = &off_538A48; + std::locale::~locale((_DWORD **)this + 10); + v5 = a2[1]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; + *((_DWORD *)this + 2) = a2[7]; + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; + v7 = a2[2]; + *(_DWORD *)this = v7; + result = *(_DWORD *)(v7 - 12); + *(_DWORD *)&this[result] = a2[3]; + *((_DWORD *)this + 1) = 0; + return result; +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EA7F0) -------------------------------------------------------- +char *__thiscall std::basic_stringstream,std::allocator>::operator=( + char *this, + int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + char *v11; // eax + const void *v12; // edx + int v13; // esi + _DWORD *v14; // edx + int v15; // eax + int v16; // ebx + int v17; // edi + __int64 v18; // rcx + int v19; // edi + int v20; // eax + int v21; // edi + int v23; // ecx + std::ios_base *v24; // [esp+4h] [ebp-74h] + const std::locale *v25; // [esp+4h] [ebp-74h] + const std::locale *v26; // [esp+4h] [ebp-74h] + unsigned int v27; // [esp+10h] [ebp-68h] + int v28; // [esp+14h] [ebp-64h] + _DWORD *v30; // [esp+20h] [ebp-58h] BYREF + _DWORD *v31; // [esp+24h] [ebp-54h] BYREF + _DWORD *v32; // [esp+28h] [ebp-50h] + __int64 v33; // [esp+30h] [ebp-48h] + int v34; // [esp+38h] [ebp-40h] + int v35; // [esp+3Ch] [ebp-3Ch] + __int64 v36; // [esp+40h] [ebp-38h] + __int64 v37; // [esp+48h] [ebp-30h] + __int64 v38; // [esp+50h] [ebp-28h] + int v39; // [esp+58h] [ebp-20h] + int v40; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v24); + std::ios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v33 = -1LL; + *(_DWORD *)(v2 + 112) = v5; + *(_DWORD *)(v3 + 112) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 116); + LOBYTE(v5) = *(_BYTE *)(v2 + 116); + v34 = -1; + *(_BYTE *)(v2 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 117); + *(_BYTE *)(v2 + 117) = v4; + *(_BYTE *)(v3 + 117) = v5; + v6 = *(_DWORD *)(a2 + 4); + v35 = -1; + v7 = *((_DWORD *)this + 1); + LODWORD(v36) = -1; + *((_DWORD *)this + 1) = v6; + *(_DWORD *)(a2 + 4) = v7; + v32 = this + 12; + HIDWORD(v36) = -1; + v37 = -1LL; + v38 = -1LL; + v39 = -1; + v40 = -1; + v8 = *(_DWORD *)(a2 + 48); + v9 = *(_DWORD *)(a2 + 16); + if ( !v9 ) + { + v10 = *(_DWORD *)(a2 + 28); + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v33 = (int)(v9 - v8); + v34 = *(_DWORD *)(a2 + 20) - v8; + v35 = v34 >> 31; + v9 = *(_DWORD *)(a2 + 24); + v36 = (int)(v9 - v8); + v10 = *(_DWORD *)(a2 + 28); + if ( v10 ) + { +LABEL_3: + v37 = v10 - v8; + v27 = *(_DWORD *)(a2 + 32); + v38 = (int)(v27 - v10); + v39 = *(_DWORD *)(a2 + 36) - v8; + v40 = v39 >> 31; + if ( v9 < v27 ) + v9 = v27; + } + if ( v9 ) + *(_DWORD *)(a2 + 52) = v9 - v8; +LABEL_7: + std::streambuf::operator=((volatile signed __int32 **)this + 3, a2 + 12); + std::locale::locale((volatile signed __int32 **)&v31, (volatile signed __int32 **)(a2 + 40), v25); + std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)this + 10, v26); + std::locale::operator=((volatile signed __int32 **)this + 10, (volatile signed __int32 **)&v31); + std::locale::~locale(&v30); + std::locale::~locale(&v31); + *((_DWORD *)this + 11) = *(_DWORD *)(a2 + 44); + v11 = (char *)*((_DWORD *)this + 12); + v12 = *(const void **)(a2 + 48); + if ( v12 == (const void *)(a2 + 56) ) + { + v23 = *(_DWORD *)(a2 + 52); + if ( v23 ) + { + if ( v23 == 1 ) + *v11 = *(_BYTE *)(a2 + 56); + else + memcpy(v11, v12, *(_DWORD *)(a2 + 52)); + v23 = *(_DWORD *)(a2 + 52); + v11 = (char *)*((_DWORD *)this + 12); + } + *((_DWORD *)this + 13) = v23; + v11[v23] = 0; + v11 = *(char **)(a2 + 48); + } + else + { + v28 = *(_DWORD *)(a2 + 52); + if ( v11 == this + 56 ) + { + *((_DWORD *)this + 12) = v12; + *((_DWORD *)this + 13) = v28; + *((_DWORD *)this + 14) = *(_DWORD *)(a2 + 56); + } + else + { + v13 = *((_DWORD *)this + 14); + *((_DWORD *)this + 12) = v12; + *((_DWORD *)this + 13) = v28; + *((_DWORD *)this + 14) = *(_DWORD *)(a2 + 56); + if ( v11 ) + { + *(_DWORD *)(a2 + 48) = v11; + *(_DWORD *)(a2 + 56) = v13; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 48) = a2 + 56; + v11 = (char *)(a2 + 56); + } +LABEL_11: + *(_DWORD *)(a2 + 52) = 0; + *v11 = 0; + std::stringbuf::_M_sync((_DWORD *)(a2 + 12), *(_DWORD **)(a2 + 48), 0, 0); + v14 = v32; + v15 = v32[9]; + if ( ((unsigned int)v33 & HIDWORD(v33)) != -1 ) + { + v16 = v36; + v17 = v34; + v32[1] = v15 + v33; + v14[2] = v15 + v17; + v14[3] = v15 + v16; + } + if ( ((unsigned int)v37 & HIDWORD(v37)) != -1 ) + { + v18 = v38; + v19 = v15 + v39; + v20 = v37 + v15; + v14[6] = v19; + v14[4] = v20; + if ( v18 > 0x7FFFFFFF ) + { + v21 = v20 + 0x7FFFFFFF; + do + { + v20 = v21; + v18 -= 0x7FFFFFFFLL; + v21 += 0x7FFFFFFF; + } + while ( v18 > 0x7FFFFFFF ); + } + v14[5] = v18 + v20; + } + return this; +} +// 4EA810: variable 'v24' is possibly undefined +// 4EA96E: variable 'v25' is possibly undefined +// 4EA982: variable 'v26' is possibly undefined + +//----- (004EAB80) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::str( + int this, + int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 12); + std::wstring::_M_replace(this + 48, 0, *(_DWORD *)(this + 52), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 44) & 3) != 0 ) + v4 = *(_DWORD *)(this + 52); + return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); +} + +//----- (004EABF0) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::swap( + _DWORD *this, + _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return std::wstringbuf::swap(this + 3, (int)(a2 + 3)); +} +// 4EAC14: variable 'v9' is possibly undefined + +//----- (004EAC90) -------------------------------------------------------- +char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + int v6; // esi + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + unsigned int v11; // esi + int v12; // eax + int *v13; // eax + int v14; // eax + int v15; // edx + int v16; // ecx + int v17; // edx + char *result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + _DWORD *v21; // [esp+1Ch] [ebp-6Ch] + _DWORD *v22; // [esp+20h] [ebp-68h] + _DWORD *v23; // [esp+28h] [ebp-60h] + int v24; // [esp+40h] [ebp-48h] + int v25; // [esp+44h] [ebp-44h] + int v26; // [esp+48h] [ebp-40h] + int v27; // [esp+50h] [ebp-38h] + int v28; // [esp+58h] [ebp-30h] + int v29; // [esp+5Ch] [ebp-2Ch] + __int64 v30; // [esp+60h] [ebp-28h] + int v31; // [esp+68h] [ebp-20h] + + v22 = this + 72; + std::ios_base::ios_base((_DWORD *)this + 18); + v3 = a2[1]; + *(_DWORD *)this = &unk_533894; + *((_DWORD *)this + 46) = 0; + *((_DWORD *)this + 1) = v3; + v4 = *a2; + *((_WORD *)this + 94) = 0; + v5 = *(_DWORD *)(v4 - 12); + this[190] = 0; + *((_DWORD *)this + 48) = 0; + v6 = (int)a2 + v5; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 51) = 0; + *((_DWORD *)this + 18) = &unk_5338A8; + std::ios_base::_M_move((int)v22, (std::ios_base *)v6, v19); + std::wios::_M_cache_locale(v22, (int)(this + 180)); + v7 = *(_DWORD *)(v6 + 112); + *(_DWORD *)(v6 + 112) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 46) = v7; + v21 = a2 + 3; + v8 = a2[12]; + *((_WORD *)this + 94) = *(_WORD *)(v6 + 116); + v24 = -1; + this[190] = *(_BYTE *)(v6 + 118); + v23 = this + 12; + v9 = a2[4]; + a2[1] = 0; + v25 = -1; + *(_DWORD *)this = &off_5381D0; + *((_DWORD *)this + 18) = off_5381F8; + *((_DWORD *)this + 2) = off_5381E4; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + LODWORD(v30) = -1; + v31 = -1; + if ( !v9 ) + { + v10 = a2[7]; + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v9 - v8) >> 1; + v25 = (int)(v9 - v8) >> 31; + v26 = (a2[5] - v8) >> 1; + v9 = a2[6]; + v27 = (int)(v9 - v8) >> 1; + v10 = a2[7]; + if ( v10 ) + { +LABEL_3: + v11 = a2[8]; + v28 = (v10 - v8) >> 1; + v29 = (v10 - v8) >> 31; + v30 = (int)(v11 - v10) >> 1; + v31 = (a2[9] - v8) >> 1; + if ( v9 < v11 ) + v9 = a2[8]; + } + if ( v9 ) + a2[13] = (int)(v9 - v8) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v23, (int)v21, v20); + *((_DWORD *)this + 3) = &off_537FA8; + v12 = a2[11]; + *((_DWORD *)this + 12) = this + 56; + *((_DWORD *)this + 11) = v12; + v13 = (int *)a2[12]; + if ( v13 == a2 + 14 ) + { + wmemcpy((wchar_t *)this + 28, (const wchar_t *)a2 + 28, 8u); + } + else + { + *((_DWORD *)this + 12) = v13; + *((_DWORD *)this + 14) = a2[14]; + } + v14 = a2[13]; + a2[12] = (int)(a2 + 14); + a2[13] = 0; + *((_DWORD *)this + 13) = v14; + *((_WORD *)a2 + 28) = 0; + v15 = *((_DWORD *)this + 12); + if ( (v24 & v25) != -1 ) + { + *((_DWORD *)this + 4) = v15 + 2 * v24; + *((_DWORD *)this + 5) = v15 + 2 * v26; + *((_DWORD *)this + 6) = v15 + 2 * v27; + } + if ( (v28 & v29) != -1 ) + { + v16 = v15 + 2 * v31; + v17 = v15 + 2 * v28; + *((_DWORD *)this + 9) = v16; + *((_DWORD *)this + 7) = v17; + *((_DWORD *)this + 8) = 2 * v30 + v17; + } + std::wstringbuf::_M_sync(v21, (_DWORD *)a2[12], 0, 0); + result = this + 12; + *((_DWORD *)this + 48) = v23; + return result; +} +// 4EAF36: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4EAD10: variable 'v19' is possibly undefined +// 4EAE78: variable 'v20' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); + +//----- (004EB030) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int a2, + int a3) +{ + int v3; // esi + wchar_t *v5; // edx + int v6; // eax + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 72); + std::ios_base::ios_base((_DWORD *)this + 18); + this[190] = 0; + *((_DWORD *)this + 46) = 0; + *((_WORD *)this + 94) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 51) = 0; + *(_DWORD *)this = &unk_533894; + *((_DWORD *)this + 18) = &unk_5338A8; + *((_DWORD *)this + 1) = 0; + std::wios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_5338F8; + *((_DWORD *)this + 18) = &unk_53390C; + std::wios::init(v3, 0); + *(_DWORD *)this = &off_5381D0; + *((_DWORD *)this + 18) = off_5381F8; + *((_DWORD *)this + 2) = off_5381E4; + *((_DWORD *)this + 3) = &off_538A88; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + *((_DWORD *)this + 9) = 0; + std::locale::locale((_DWORD *)this + 10); + *((_DWORD *)this + 3) = &off_537FA8; + v5 = *(wchar_t **)a2; + v6 = *(_DWORD *)(a2 + 4); + *((_DWORD *)this + 11) = 0; + LOBYTE(v9) = 0; + *((_DWORD *)this + 12) = this + 56; + std::wstring::_M_construct((wchar_t **)this + 12, v5, (int)&v5[v6], v9); + *((_DWORD *)this + 11) = a3; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 13); + std::wstringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v7); + return std::wios::init(v3, (int)(this + 12)); +} +// 4EB154: variable 'v9' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EB200) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + _DWORD *this, + int a2) +{ + int v2; // esi + + v2 = (int)(this + 18); + std::ios_base::ios_base(this + 18); + *((_BYTE *)this + 190) = 0; + this[46] = 0; + *((_WORD *)this + 94) = 0; + this[48] = 0; + this[49] = 0; + this[50] = 0; + this[51] = 0; + *this = &unk_533894; + this[18] = &unk_5338A8; + this[1] = 0; + std::wios::init(v2, 0); + this[2] = &unk_5338F8; + this[18] = &unk_53390C; + std::wios::init(v2, 0); + *this = &off_5381D0; + this[18] = off_5381F8; + this[2] = off_5381E4; + this[3] = &off_538A88; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + this[3] = &off_537FA8; + this[11] = a2; + this[12] = this + 14; + this[13] = 0; + *((_WORD *)this + 28) = 0; + return std::wios::init(v2, (int)(this + 3)); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EB370) -------------------------------------------------------- +BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream( + int a1) +{ + int v1; // esi + + v1 = a1 + 72; + std::ios_base::ios_base((_DWORD *)(a1 + 72)); + *(_BYTE *)(a1 + 190) = 0; + *(_DWORD *)(a1 + 184) = 0; + *(_WORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 200) = 0; + *(_DWORD *)(a1 + 204) = 0; + *(_DWORD *)a1 = &unk_533894; + *(_DWORD *)(a1 + 72) = &unk_5338A8; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_5338F8; + *(_DWORD *)(a1 + 72) = &unk_53390C; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_5381D0; + *(_DWORD *)(a1 + 72) = off_5381F8; + *(_DWORD *)(a1 + 8) = off_5381E4; + *(_DWORD *)(a1 + 12) = &off_538A88; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::locale::locale((_DWORD *)(a1 + 40)); + *(_DWORD *)(a1 + 48) = a1 + 56; + *(_DWORD *)(a1 + 12) = &off_537FA8; + *(_DWORD *)(a1 + 44) = 24; + *(_DWORD *)(a1 + 52) = 0; + *(_WORD *)(a1 + 56) = 0; + return std::wios::init(v1, a1 + 12); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EB4E0) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int *a2, + _DWORD *a3) +{ + int v4; // eax + int v5; // ecx + int v6; // edx + int v7; // esi + int v8; // edx + char v9; // al + int v10; // edx + int v11; // eax + int v12; // eax + int v13; // edx + int v14; // eax + int v15; // edx + unsigned int v16; // eax + int v17; // ecx + int v18; // eax + const wchar_t *v19; // edi + _DWORD *v20; // eax + int v21; // eax + int v22; // edx + int v23; // ecx + int v24; // edx + int result; // eax + std::ios_base *v26; // [esp+4h] [ebp-84h] + const std::locale *v27; // [esp+4h] [ebp-84h] + _DWORD *v28; // [esp+1Ch] [ebp-6Ch] + std::ios_base *v29; // [esp+20h] [ebp-68h] + int v30; // [esp+20h] [ebp-68h] + _DWORD *v31; // [esp+28h] [ebp-60h] + int v32; // [esp+40h] [ebp-48h] + int v33; // [esp+44h] [ebp-44h] + int v34; // [esp+48h] [ebp-40h] + int v35; // [esp+50h] [ebp-38h] + int v36; // [esp+58h] [ebp-30h] + int v37; // [esp+5Ch] [ebp-2Ch] + int v38; // [esp+60h] [ebp-28h] + int v39; // [esp+68h] [ebp-20h] + + v4 = a2[2]; + v5 = a2[3]; + v6 = *(_DWORD *)(v4 - 12); + *(_DWORD *)this = v4; + *(_DWORD *)&this[v6] = v5; + *((_DWORD *)this + 1) = a3[1]; + v29 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + v7 = (int)&this[*(_DWORD *)(v4 - 12)]; + std::ios_base::_M_move(v7, v29, v26); + std::wios::_M_cache_locale((_DWORD *)v7, v7 + 108); + *(_DWORD *)(v7 + 120) = 0; + v8 = *((_DWORD *)v29 + 28); + *((_DWORD *)v29 + 28) = 0; + *(_DWORD *)(v7 + 112) = v8; + v9 = *((_BYTE *)v29 + 118); + *(_WORD *)(v7 + 116) = *((_WORD *)v29 + 58); + v10 = a2[5]; + *(_BYTE *)(v7 + 118) = v9; + v11 = a2[4]; + a3[1] = 0; + *((_DWORD *)this + 2) = v11; + v28 = a3 + 3; + *(_DWORD *)&this[*(_DWORD *)(v11 - 12) + 8] = v10; + v12 = a2[1]; + v13 = a2[6]; + *(_DWORD *)this = v12; + *(_DWORD *)&this[*(_DWORD *)(v12 - 12)] = v13; + *((_DWORD *)this + 2) = a2[7]; + v14 = *a2; + v15 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v14 - 12)] = v15; + *((_DWORD *)this + 2) = a2[9]; + v31 = this + 12; + v32 = -1; + v30 = a3[12]; + v16 = a3[4]; + v33 = -1; + v34 = -1; + v35 = -1; + v36 = -1; + v37 = -1; + v38 = -1; + v39 = -1; + if ( !v16 ) + { + v17 = a3[7]; + if ( !v17 ) + goto LABEL_7; + goto LABEL_3; + } + v32 = (int)(v16 - v30) >> 1; + v33 = (int)(v16 - v30) >> 31; + v34 = (a3[5] - v30) >> 1; + v16 = a3[6]; + v35 = (int)(v16 - v30) >> 1; + v17 = a3[7]; + if ( v17 ) + { +LABEL_3: + v36 = (v17 - v30) >> 1; + v37 = (v17 - v30) >> 31; + v38 = (a3[8] - v17) >> 1; + v39 = (a3[9] - v30) >> 1; + if ( v16 < a3[8] ) + v16 = a3[8]; + } + if ( v16 ) + a3[13] = (int)(v16 - v30) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v31, (int)v28, v27); + *((_DWORD *)this + 3) = &off_537FA8; + v18 = a3[11]; + *((_DWORD *)this + 12) = this + 56; + v19 = (const wchar_t *)(a3 + 14); + *((_DWORD *)this + 11) = v18; + v20 = (_DWORD *)a3[12]; + if ( v20 == a3 + 14 ) + { + wmemcpy((wchar_t *)this + 28, v19, 8u); + } + else + { + *((_DWORD *)this + 12) = v20; + *((_DWORD *)this + 14) = a3[14]; + } + v21 = a3[13]; + a3[12] = v19; + a3[13] = 0; + *((_DWORD *)this + 13) = v21; + *((_WORD *)a3 + 28) = 0; + v22 = *((_DWORD *)this + 12); + if ( (v32 & v33) != -1 ) + { + *((_DWORD *)this + 4) = v22 + 2 * v32; + *((_DWORD *)this + 5) = v22 + 2 * v34; + *((_DWORD *)this + 6) = v22 + 2 * v35; + } + if ( (v36 & v37) != -1 ) + { + v23 = v22 + 2 * v39; + v24 = v22 + 2 * v36; + *((_DWORD *)this + 9) = v23; + *((_DWORD *)this + 7) = v24; + *((_DWORD *)this + 8) = 2 * v38 + v24; + } + std::wstringbuf::_M_sync(v28, (_DWORD *)a3[12], 0, 0); + result = *(_DWORD *)(*(_DWORD *)this - 12); + *(_DWORD *)&this[result + 120] = v31; + return result; +} +// 4EB767: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4EB51E: variable 'v26' is possibly undefined +// 4EB6A9: variable 'v27' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); + +//----- (004EB860) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int *a2, + int a3, + int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + int v12; // eax + wchar_t *v13; // edx + int v14; // eax + unsigned int v15; // eax + int v17; // [esp+8h] [ebp-30h] + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::wios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::wios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + v12 = a2[9]; + *((_DWORD *)this + 3) = &off_538A88; + *((_DWORD *)this + 2) = v12; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + *((_DWORD *)this + 9) = 0; + std::locale::locale((_DWORD *)this + 10); + *((_DWORD *)this + 3) = &off_537FA8; + v13 = *(wchar_t **)a3; + v14 = *(_DWORD *)(a3 + 4); + *((_DWORD *)this + 11) = 0; + LOBYTE(v17) = 0; + *((_DWORD *)this + 12) = this + 56; + std::wstring::_M_construct((wchar_t **)this + 12, v13, (int)&v13[v14], v17); + *((_DWORD *)this + 11) = a4; + v15 = 0; + if ( (a4 & 3) != 0 ) + v15 = *((_DWORD *)this + 13); + std::wstringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v15); + return std::wios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); +} +// 4EB954: variable 'v17' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EBA10) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2, + int a3) +{ + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = a2[4]; + this[2] = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); + *v6 = a2[5]; + std::wios::init((int)v6, 0); + v7 = a2[1]; + v8 = a2[6]; + *this = v7; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + this[2] = a2[7]; + v9 = *a2; + v10 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; + v11 = a2[9]; + this[3] = (int)&off_538A88; + this[2] = v11; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + this[13] = 0; + this[3] = (int)&off_537FA8; + this[11] = a3; + this[12] = (int)(this + 14); + *((_WORD *)this + 28) = 0; + return std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EBB70) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // eax + int v12; // ecx + + v3 = a2[2]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[4]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[5]; + std::wios::init((int)v5, 0); + v6 = a2[1]; + v7 = a2[6]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = a2[7]; + v8 = *a2; + v9 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + v10 = a2[9]; + this[3] = (int)&off_538A88; + this[2] = v10; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + this[13] = 0; + this[12] = (int)(this + 14); + *((_WORD *)this + 28) = 0; + v11 = *this; + this[3] = (int)&off_537FA8; + v12 = *(_DWORD *)(v11 - 12); + this[11] = 24; + return std::wios::init((int)this + v12, (int)(this + 3)); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EBCD0) -------------------------------------------------------- +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[12]; + *a1 = &off_5381D0; + a1[18] = off_5381F8; + a1[2] = off_5381E4; + a1[3] = &off_537FA8; + if ( v2 != a1 + 14 ) + operator delete(v2); + a1[3] = &off_538A88; + std::locale::~locale((_DWORD **)a1 + 10); + a1[2] = &unk_5338F8; + *a1 = &unk_533894; + a1[1] = 0; + a1[18] = &off_539484; + std::ios_base::~ios_base((int)(a1 + 18)); + operator delete(a1); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004EBD50) -------------------------------------------------------- +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 48); + *(_DWORD *)a1 = &off_5381D0; + *(_DWORD *)(a1 + 72) = off_5381F8; + *(_DWORD *)(a1 + 8) = off_5381E4; + *(_DWORD *)(a1 + 12) = &off_537FA8; + if ( v2 != (void *)(a1 + 56) ) + operator delete(v2); + *(_DWORD *)(a1 + 12) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 40)); + *(_DWORD *)(a1 + 8) = &unk_5338F8; + *(_DWORD *)a1 = &unk_533894; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 72) = &off_539484; + std::ios_base::~ios_base(a1 + 72); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004EBDC0) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( + char *this, + int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // eax + int v6; // eax + int v7; // eax + int result; // eax + + v3 = *a2; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; + v4 = a2[9]; + *((_DWORD *)this + 3) = &off_537FA8; + *((_DWORD *)this + 2) = v4; + if ( *((char **)this + 12) != this + 56 ) + operator delete(*((void **)this + 12)); + *((_DWORD *)this + 3) = &off_538A88; + std::locale::~locale((_DWORD **)this + 10); + v5 = a2[1]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; + *((_DWORD *)this + 2) = a2[7]; + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; + v7 = a2[2]; + *(_DWORD *)this = v7; + result = *(_DWORD *)(v7 - 12); + *(_DWORD *)&this[result] = a2[3]; + *((_DWORD *)this + 1) = 0; + return result; +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EBE50) -------------------------------------------------------- +char *__thiscall std::basic_stringstream,std::allocator>::operator=( + char *this, + int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + unsigned int v11; // esi + int v12; // ecx + wchar_t *v13; // eax + wchar_t *v14; // edx + int v15; // esi + _DWORD *v16; // ecx + int v17; // ebx + int v18; // edx + int v19; // edi + __int64 v20; // rax + int v21; // edi + int v22; // ebx + int v23; // edi + int v25; // eax + int v26; // ecx + std::ios_base *v27; // [esp+4h] [ebp-74h] + const std::locale *v28; // [esp+4h] [ebp-74h] + const std::locale *v29; // [esp+4h] [ebp-74h] + int v30; // [esp+14h] [ebp-64h] + _DWORD *v32; // [esp+20h] [ebp-58h] BYREF + _DWORD *v33; // [esp+24h] [ebp-54h] BYREF + _DWORD *v34; // [esp+28h] [ebp-50h] + int v35; // [esp+30h] [ebp-48h] + int v36; // [esp+34h] [ebp-44h] + int v37; // [esp+38h] [ebp-40h] + int v38; // [esp+3Ch] [ebp-3Ch] + __int64 v39; // [esp+40h] [ebp-38h] + int v40; // [esp+48h] [ebp-30h] + int v41; // [esp+4Ch] [ebp-2Ch] + __int64 v42; // [esp+50h] [ebp-28h] + int v43; // [esp+58h] [ebp-20h] + int v44; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v27); + std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v35 = -1; + v36 = -1; + *(_DWORD *)(v2 + 112) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_DWORD *)(v3 + 112) = v4; + LOWORD(v4) = *(_WORD *)(v2 + 116); + *(_WORD *)(v2 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 118); + *(_WORD *)(v3 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 118); + v37 = -1; + *(_BYTE *)(v2 + 118) = v4; + *(_BYTE *)(v3 + 118) = v5; + v6 = *(_DWORD *)(a2 + 4); + v38 = -1; + v7 = *((_DWORD *)this + 1); + LODWORD(v39) = -1; + *((_DWORD *)this + 1) = v6; + *(_DWORD *)(a2 + 4) = v7; + v34 = this + 12; + HIDWORD(v39) = -1; + v40 = -1; + v41 = -1; + v42 = -1LL; + v43 = -1; + v44 = -1; + v8 = *(_DWORD *)(a2 + 48); + v9 = *(_DWORD *)(a2 + 16); + if ( !v9 ) + { + v10 = *(_DWORD *)(a2 + 28); + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v35 = (int)(v9 - v8) >> 1; + v36 = (int)(v9 - v8) >> 31; + v37 = (*(_DWORD *)(a2 + 20) - v8) >> 1; + v38 = v37 >> 31; + v9 = *(_DWORD *)(a2 + 24); + v39 = (int)(v9 - v8) >> 1; + v10 = *(_DWORD *)(a2 + 28); + if ( v10 ) + { +LABEL_3: + v40 = (v10 - v8) >> 1; + v41 = (v10 - v8) >> 31; + v11 = *(_DWORD *)(a2 + 32); + v42 = (int)(v11 - v10) >> 1; + v43 = (*(_DWORD *)(a2 + 36) - v8) >> 1; + v44 = v43 >> 31; + if ( v9 < v11 ) + v9 = v11; + } + if ( v9 ) + *(_DWORD *)(a2 + 52) = (int)(v9 - v8) >> 1; +LABEL_7: + std::wstreambuf::operator=((volatile signed __int32 **)this + 3, a2 + 12); + std::locale::locale((volatile signed __int32 **)&v33, (volatile signed __int32 **)(a2 + 40), v28); + std::locale::locale((volatile signed __int32 **)&v32, (volatile signed __int32 **)this + 10, v29); + std::locale::operator=((volatile signed __int32 **)this + 10, (volatile signed __int32 **)&v33); + std::locale::~locale(&v32); + std::locale::~locale(&v33); + v12 = *(_DWORD *)(a2 + 48); + *((_DWORD *)this + 11) = *(_DWORD *)(a2 + 44); + v13 = (wchar_t *)*((_DWORD *)this + 12); + v14 = (wchar_t *)(a2 + 56); + if ( v12 == a2 + 56 ) + { + v26 = *(_DWORD *)(a2 + 52); + if ( v26 ) + { + if ( v26 == 1 ) + { + *v13 = *(_WORD *)(a2 + 56); + } + else + { + wmemcpy(v13, (const wchar_t *)(a2 + 56), *(_DWORD *)(a2 + 52)); + v26 = *(_DWORD *)(a2 + 52); + v14 = *(wchar_t **)(a2 + 48); + v13 = (wchar_t *)*((_DWORD *)this + 12); + } + } + *((_DWORD *)this + 13) = v26; + v13[v26] = 0; + v13 = v14; + } + else + { + v30 = *(_DWORD *)(a2 + 52); + if ( v13 == (wchar_t *)(this + 56) ) + { + *((_DWORD *)this + 13) = v30; + v25 = *(_DWORD *)(a2 + 56); + *((_DWORD *)this + 12) = v12; + *((_DWORD *)this + 14) = v25; + } + else + { + v15 = *((_DWORD *)this + 14); + *((_DWORD *)this + 12) = v12; + *((_DWORD *)this + 13) = v30; + *((_DWORD *)this + 14) = *(_DWORD *)(a2 + 56); + if ( v13 ) + { + *(_DWORD *)(a2 + 48) = v13; + *(_DWORD *)(a2 + 56) = v15; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 48) = v14; + v13 = (wchar_t *)(a2 + 56); + } +LABEL_11: + *(_DWORD *)(a2 + 52) = 0; + *v13 = 0; + std::wstringbuf::_M_sync((_DWORD *)(a2 + 12), v13, 0, 0); + v16 = v34; + v17 = v34[9]; + if ( (v35 & v36) != -1 ) + { + v18 = v39; + v19 = v37; + v34[1] = v17 + 2 * v35; + v16[2] = v17 + 2 * v19; + v16[3] = v17 + 2 * v18; + } + if ( (v41 & v40) != -1 ) + { + v20 = v42; + v21 = v17 + 2 * v43; + v22 = v17 + 2 * v40; + v16[6] = v21; + v16[4] = v22; + if ( v20 > 0x7FFFFFFF ) + { + v23 = v22 - 2; + do + { + v22 = v23; + v20 -= 0x7FFFFFFFLL; + v23 -= 2; + } + while ( v20 > 0x7FFFFFFF ); + } + v16[5] = v22 + 2 * v20; + } + return this; +} +// 4EBE70: variable 'v27' is possibly undefined +// 4EBFDA: variable 'v28' is possibly undefined +// 4EBFEE: variable 'v29' is possibly undefined + +//----- (004EC1E0) -------------------------------------------------------- +int __thiscall std::istringstream::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 8); + std::string::_M_replace((unsigned int *)(this + 44), 0, *(_DWORD *)(this + 48), *(char **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 40) & 3) != 0 ) + v4 = *(_DWORD *)(this + 48); + return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); +} + +//----- (004EC250) -------------------------------------------------------- +int __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return std::stringbuf::swap(this + 2, (int)(a2 + 2)); +} +// 4EC274: variable 'v10' is possibly undefined + +//----- (004EC2F0) -------------------------------------------------------- +char *__thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + std::ios_base *v6; // esi + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + int v11; // eax + _DWORD *v12; // edx + int v13; // edx + int v14; // eax + int v15; // ecx + int v16; // eax + char *result; // eax + std::ios_base *v18; // [esp+4h] [ebp-84h] + const std::locale *v19; // [esp+4h] [ebp-84h] + _DWORD *v20; // [esp+1Ch] [ebp-6Ch] + _DWORD *v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + __int64 v23; // [esp+40h] [ebp-48h] + int v24; // [esp+48h] [ebp-40h] + int v25; // [esp+50h] [ebp-38h] + __int64 v26; // [esp+58h] [ebp-30h] + int v27; // [esp+60h] [ebp-28h] + int v28; // [esp+68h] [ebp-20h] + + v21 = this + 17; + std::ios_base::ios_base(this + 17); + *this = &unk_533920; + *((_WORD *)this + 92) = 0; + v3 = a2[1]; + this[45] = 0; + this[1] = v3; + v4 = *a2; + this[47] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[48] = 0; + this[49] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[17] = &unk_533934; + this[50] = 0; + std::ios_base::_M_move((int)v21, v6, v18); + std::ios::_M_cache_locale(v21, (int)(this + 44)); + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[47] = 0; + this[45] = v7; + v20 = a2 + 2; + *((_WORD *)this + 92) = *((_WORD *)v6 + 58); + v8 = a2[11]; + v22 = this + 2; + v9 = a2[3]; + a2[1] = 0; + v23 = -1LL; + *this = &off_53820C; + this[17] = off_538220; + v24 = -1; + v25 = -1; + v26 = -1LL; + v27 = -1; + v28 = -1; + if ( !v9 ) + { + v10 = a2[6]; + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v23 = (int)(v9 - v8); + v24 = a2[4] - v8; + v9 = a2[5]; + v25 = v9 - v8; + v10 = a2[6]; + if ( v10 ) + { +LABEL_3: + v26 = v10 - v8; + v27 = a2[7] - v10; + v28 = a2[8] - v8; + if ( v9 < a2[7] ) + v9 = a2[7]; + } + if ( v9 ) + a2[12] = v9 - v8; +LABEL_7: + std::streambuf::basic_streambuf(v22, (int)v20, v19); + this[2] = &off_537F68; + v11 = a2[10]; + this[11] = this + 13; + this[10] = v11; + v12 = (_DWORD *)a2[11]; + if ( v12 == a2 + 13 ) + { + this[13] = a2[13]; + this[14] = a2[14]; + this[15] = a2[15]; + this[16] = a2[16]; + } + else + { + this[11] = v12; + this[13] = a2[13]; + } + v13 = a2[12]; + a2[11] = a2 + 13; + a2[12] = 0; + this[12] = v13; + *((_BYTE *)a2 + 52) = 0; + v14 = this[11]; + if ( ((unsigned int)v23 & HIDWORD(v23)) != -1 ) + { + this[3] = v14 + v23; + this[4] = v14 + v24; + this[5] = v14 + v25; + } + if ( ((unsigned int)v26 & HIDWORD(v26)) != -1 ) + { + v15 = v14 + v28; + v16 = v26 + v14; + this[8] = v15; + this[6] = v16; + this[7] = v27 + v16; + } + std::stringbuf::_M_sync(v20, (_DWORD *)a2[11], 0, 0); + result = (char *)(this + 2); + this[47] = v22; + return result; +} +// 4EC55D: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4EC369: variable 'v18' is possibly undefined +// 4EC4B2: variable 'v19' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 53820C: using guessed type int (*off_53820C)(); +// 538220: using guessed type int (*off_538220[2])(); + +//----- (004EC660) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(char *this, int a2, int a3) +{ + int v3; // esi + int v5; // eax + unsigned __int8 *v6; // edx + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 68); + std::ios_base::ios_base((_DWORD *)this + 17); + *(_DWORD *)this = &unk_533920; + *((_DWORD *)this + 45) = 0; + *((_WORD *)this + 92) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 17) = &unk_533934; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_53820C; + *((_DWORD *)this + 17) = off_538220; + *((_DWORD *)this + 2) = &off_538A48; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + std::locale::locale((_DWORD *)this + 9); + *((_DWORD *)this + 2) = &off_537F68; + *((_DWORD *)this + 10) = 0; + v5 = *(_DWORD *)(a2 + 4); + v6 = *(unsigned __int8 **)a2; + LOBYTE(v9) = 0; + *((_DWORD *)this + 11) = this + 52; + std::string::_M_construct((void **)this + 11, v6, (size_t)&v6[v5], v9); + *((_DWORD *)this + 10) = a3 | 8; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 12); + std::stringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v7); + return std::ios::init(v3, (int)(this + 8)); +} +// 4EC75A: variable 'v9' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 53820C: using guessed type int (*off_53820C)(); +// 538220: using guessed type int (*off_538220[2])(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EC7F0) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 17); + std::ios_base::ios_base(this + 17); + *this = &unk_533920; + this[45] = 0; + *((_WORD *)this + 92) = 0; + this[47] = 0; + this[48] = 0; + this[49] = 0; + this[50] = 0; + this[17] = &unk_533934; + this[1] = 0; + std::ios::init(v2, 0); + *this = &off_53820C; + this[17] = off_538220; + this[2] = &off_538A48; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + *((_BYTE *)this + 52) = 0; + this[2] = &off_537F68; + this[12] = 0; + this[10] = a2 | 8; + this[11] = this + 13; + return std::ios::init(v2, (int)(this + 2)); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53820C: using guessed type int (*off_53820C)(); +// 538220: using guessed type int (*off_538220[2])(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EC920) -------------------------------------------------------- +BOOL __fastcall std::istringstream::basic_istringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 68; + std::ios_base::ios_base((_DWORD *)(a1 + 68)); + *(_DWORD *)a1 = &unk_533920; + *(_DWORD *)(a1 + 180) = 0; + *(_WORD *)(a1 + 184) = 0; + *(_DWORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 200) = 0; + *(_DWORD *)(a1 + 68) = &unk_533934; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_53820C; + *(_DWORD *)(a1 + 68) = off_538220; + *(_DWORD *)(a1 + 8) = &off_538A48; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + std::locale::locale((_DWORD *)(a1 + 36)); + *(_BYTE *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 8) = &off_537F68; + *(_DWORD *)(a1 + 40) = 8; + *(_DWORD *)(a1 + 44) = a1 + 52; + *(_DWORD *)(a1 + 48) = 0; + return std::ios::init(v1, a1 + 8); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53820C: using guessed type int (*off_53820C)(); +// 538220: using guessed type int (*off_538220[2])(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004ECA50) -------------------------------------------------------- +int __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3) +{ + int v3; // eax + int v4; // esi + int v5; // edx + __int16 v6; // ax + int v7; // edx + int v8; // eax + int v9; // edx + unsigned int v10; // eax + int v11; // ecx + unsigned int v12; // esi + _DWORD *v13; // edx + int v14; // edx + int v15; // eax + int v16; // ecx + int v17; // eax + int result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + std::ios_base *v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + __int64 v24; // [esp+40h] [ebp-48h] + int v25; // [esp+48h] [ebp-40h] + int v26; // [esp+50h] [ebp-38h] + __int64 v27; // [esp+58h] [ebp-30h] + int v28; // [esp+60h] [ebp-28h] + int v29; // [esp+68h] [ebp-20h] + + v3 = a2[1]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[2]; + this[1] = a3[1]; + v4 = (int)this + *(_DWORD *)(v3 - 12); + v21 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v4, v21, v19); + std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); + *(_DWORD *)(v4 + 120) = 0; + v5 = *((_DWORD *)v21 + 28); + *((_DWORD *)v21 + 28) = 0; + v6 = *((_WORD *)v21 + 58); + *(_DWORD *)(v4 + 112) = v5; + *(_WORD *)(v4 + 116) = v6; + a3[1] = 0; + v7 = a2[3]; + v8 = *a2; + *this = *a2; + v24 = -1LL; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; + v9 = a3[11]; + v22 = this + 2; + v25 = -1; + v26 = -1; + v27 = -1LL; + v28 = -1; + v29 = -1; + v10 = a3[3]; + if ( !v10 ) + { + v11 = a3[6]; + if ( !v11 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v10 - v9); + v25 = a3[4] - v9; + v10 = a3[5]; + v26 = v10 - v9; + v11 = a3[6]; + if ( v11 ) + { +LABEL_3: + v12 = a3[7]; + v27 = v11 - v9; + v28 = v12 - v11; + v29 = a3[8] - v9; + if ( v10 < v12 ) + v10 = a3[7]; + } + if ( v10 ) + a3[12] = v10 - v9; +LABEL_7: + std::streambuf::basic_streambuf(v22, (int)(a3 + 2), v20); + this[10] = a3[10]; + this[2] = (int)&off_537F68; + this[11] = (int)(this + 13); + v13 = (_DWORD *)a3[11]; + if ( v13 == a3 + 13 ) + { + this[13] = a3[13]; + this[14] = a3[14]; + this[15] = a3[15]; + this[16] = a3[16]; + } + else + { + this[11] = (int)v13; + this[13] = a3[13]; + } + v14 = a3[12]; + a3[11] = a3 + 13; + a3[12] = 0; + this[12] = v14; + *((_BYTE *)a3 + 52) = 0; + v15 = this[11]; + if ( ((unsigned int)v24 & HIDWORD(v24)) != -1 ) + { + this[3] = v15 + v24; + this[4] = v15 + v25; + this[5] = v15 + v26; + } + if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) + { + v16 = v15 + v29; + v17 = v27 + v15; + this[8] = v16; + this[6] = v17; + this[7] = v28 + v17; + } + std::stringbuf::_M_sync(a3 + 2, (_DWORD *)a3[11], 0, 0); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)v22; + return result; +} +// 4ECC74: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4ECA8F: variable 'v19' is possibly undefined +// 4ECBCB: variable 'v20' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); + +//----- (004ECD60) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(char *this, int *a2, int a3, int a4) +{ + int v5; // eax + int v6; // edi + int v7; // eax + int v8; // ecx + int v9; // eax + unsigned __int8 *v10; // edx + unsigned int v11; // eax + int v13; // [esp+8h] [ebp-30h] + + v5 = a2[1]; + v6 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = v6; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + *((_DWORD *)this + 2) = &off_538A48; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + std::locale::locale((_DWORD *)this + 9); + *((_DWORD *)this + 2) = &off_537F68; + *((_DWORD *)this + 10) = 0; + v9 = *(_DWORD *)(a3 + 4); + v10 = *(unsigned __int8 **)a3; + LOBYTE(v13) = 0; + *((_DWORD *)this + 11) = this + 52; + std::string::_M_construct((void **)this + 11, v10, (size_t)&v10[v9], v13); + *((_DWORD *)this + 10) = a4 | 8; + v11 = 0; + if ( (a4 & 3) != 0 ) + v11 = *((_DWORD *)this + 12); + std::stringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v11); + return std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 8)); +} +// 4ECE19: variable 'v13' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004ECEB0) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3) +{ + int v4; // edi + int v5; // eax + int v6; // eax + int v7; // edx + + v4 = (int)(this + 2); + v5 = a2[1]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[2]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = (int)&off_538A48; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + *((_BYTE *)this + 52) = 0; + this[12] = 0; + this[2] = (int)&off_537F68; + this[10] = a3 | 8; + this[11] = (int)(this + 13); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), v4); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004ECFA0) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // ecx + + v3 = (int)(this + 2); + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = *a2; + v6 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; + this[2] = (int)&off_538A48; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + *((_BYTE *)this + 52) = 0; + this[11] = (int)(this + 13); + v7 = *this; + this[12] = 0; + this[2] = (int)&off_537F68; + v8 = *(_DWORD *)(v7 - 12); + this[10] = 8; + return std::ios::init((int)this + v8, v3); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004ED090) -------------------------------------------------------- +void __fastcall std::istringstream::~istringstream(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[11]; + *a1 = &off_53820C; + a1[17] = off_538220; + a1[2] = &off_537F68; + if ( v2 != a1 + 13 ) + operator delete(v2); + a1[2] = &off_538A48; + std::locale::~locale((_DWORD **)a1 + 9); + *a1 = &unk_533920; + a1[1] = 0; + a1[17] = &off_539474; + std::ios_base::~ios_base((int)(a1 + 17)); + operator delete(a1); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53820C: using guessed type int (*off_53820C)(); +// 538220: using guessed type int (*off_538220[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004ED100) -------------------------------------------------------- +void __fastcall std::istringstream::~istringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 44); + *(_DWORD *)a1 = &off_53820C; + *(_DWORD *)(a1 + 68) = off_538220; + *(_DWORD *)(a1 + 8) = &off_537F68; + if ( v2 != (void *)(a1 + 52) ) + operator delete(v2); + *(_DWORD *)(a1 + 8) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 36)); + *(_DWORD *)a1 = &unk_533920; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 68) = &off_539474; + std::ios_base::~ios_base(a1 + 68); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53820C: using guessed type int (*off_53820C)(); +// 538220: using guessed type int (*off_538220[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004ED160) -------------------------------------------------------- +int __thiscall std::istringstream::~istringstream(int *this, int *a2) +{ + int v3; // eax + char *v4; // eax + int v5; // eax + int result; // eax + + v3 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + v4 = (char *)this[11]; + this[2] = (int)&off_537F68; + if ( v4 != (char *)(this + 13) ) + operator delete(v4); + this[2] = (int)&off_538A48; + std::locale::~locale((_DWORD **)this + 9); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(int *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004ED1C0) -------------------------------------------------------- +char *__thiscall std::istringstream::operator=(char *this, int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + char *v11; // eax + const void *v12; // edx + int v13; // esi + _DWORD *v14; // edx + int v15; // eax + int v16; // ebx + int v17; // edi + __int64 v18; // rcx + int v19; // edi + int v20; // eax + int v21; // edi + int v23; // ecx + std::ios_base *v24; // [esp+4h] [ebp-74h] + const std::locale *v25; // [esp+4h] [ebp-74h] + const std::locale *v26; // [esp+4h] [ebp-74h] + unsigned int v27; // [esp+10h] [ebp-68h] + int v28; // [esp+14h] [ebp-64h] + _DWORD *v30; // [esp+20h] [ebp-58h] BYREF + _DWORD *v31; // [esp+24h] [ebp-54h] BYREF + _DWORD *v32; // [esp+28h] [ebp-50h] + __int64 v33; // [esp+30h] [ebp-48h] + int v34; // [esp+38h] [ebp-40h] + int v35; // [esp+3Ch] [ebp-3Ch] + __int64 v36; // [esp+40h] [ebp-38h] + __int64 v37; // [esp+48h] [ebp-30h] + __int64 v38; // [esp+50h] [ebp-28h] + int v39; // [esp+58h] [ebp-20h] + int v40; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v24); + std::ios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v33 = -1LL; + *(_DWORD *)(v2 + 112) = v5; + *(_DWORD *)(v3 + 112) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 116); + LOBYTE(v5) = *(_BYTE *)(v2 + 116); + v34 = -1; + *(_BYTE *)(v2 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 117); + *(_BYTE *)(v2 + 117) = v4; + *(_BYTE *)(v3 + 117) = v5; + v6 = *(_DWORD *)(a2 + 4); + v35 = -1; + v7 = *((_DWORD *)this + 1); + LODWORD(v36) = -1; + *((_DWORD *)this + 1) = v6; + *(_DWORD *)(a2 + 4) = v7; + v32 = this + 8; + HIDWORD(v36) = -1; + v37 = -1LL; + v38 = -1LL; + v39 = -1; + v40 = -1; + v8 = *(_DWORD *)(a2 + 44); + v9 = *(_DWORD *)(a2 + 12); + if ( !v9 ) + { + v10 = *(_DWORD *)(a2 + 24); + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v33 = (int)(v9 - v8); + v34 = *(_DWORD *)(a2 + 16) - v8; + v35 = v34 >> 31; + v9 = *(_DWORD *)(a2 + 20); + v36 = (int)(v9 - v8); + v10 = *(_DWORD *)(a2 + 24); + if ( v10 ) + { +LABEL_3: + v37 = v10 - v8; + v27 = *(_DWORD *)(a2 + 28); + v38 = (int)(v27 - v10); + v39 = *(_DWORD *)(a2 + 32) - v8; + v40 = v39 >> 31; + if ( v9 < v27 ) + v9 = v27; + } + if ( v9 ) + *(_DWORD *)(a2 + 48) = v9 - v8; +LABEL_7: + std::streambuf::operator=((volatile signed __int32 **)this + 2, a2 + 8); + std::locale::locale((volatile signed __int32 **)&v31, (volatile signed __int32 **)(a2 + 36), v25); + std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)this + 9, v26); + std::locale::operator=((volatile signed __int32 **)this + 9, (volatile signed __int32 **)&v31); + std::locale::~locale(&v30); + std::locale::~locale(&v31); + *((_DWORD *)this + 10) = *(_DWORD *)(a2 + 40); + v11 = (char *)*((_DWORD *)this + 11); + v12 = *(const void **)(a2 + 44); + if ( v12 == (const void *)(a2 + 52) ) + { + v23 = *(_DWORD *)(a2 + 48); + if ( v23 ) + { + if ( v23 == 1 ) + *v11 = *(_BYTE *)(a2 + 52); + else + memcpy(v11, v12, *(_DWORD *)(a2 + 48)); + v23 = *(_DWORD *)(a2 + 48); + v11 = (char *)*((_DWORD *)this + 11); + } + *((_DWORD *)this + 12) = v23; + v11[v23] = 0; + v11 = *(char **)(a2 + 44); + } + else + { + v28 = *(_DWORD *)(a2 + 48); + if ( v11 == this + 52 ) + { + *((_DWORD *)this + 11) = v12; + *((_DWORD *)this + 12) = v28; + *((_DWORD *)this + 13) = *(_DWORD *)(a2 + 52); + } + else + { + v13 = *((_DWORD *)this + 13); + *((_DWORD *)this + 11) = v12; + *((_DWORD *)this + 12) = v28; + *((_DWORD *)this + 13) = *(_DWORD *)(a2 + 52); + if ( v11 ) + { + *(_DWORD *)(a2 + 44) = v11; + *(_DWORD *)(a2 + 52) = v13; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 44) = a2 + 52; + v11 = (char *)(a2 + 52); + } +LABEL_11: + *(_DWORD *)(a2 + 48) = 0; + *v11 = 0; + std::stringbuf::_M_sync((_DWORD *)(a2 + 8), *(_DWORD **)(a2 + 44), 0, 0); + v14 = v32; + v15 = v32[9]; + if ( ((unsigned int)v33 & HIDWORD(v33)) != -1 ) + { + v16 = v36; + v17 = v34; + v32[1] = v15 + v33; + v14[2] = v15 + v17; + v14[3] = v15 + v16; + } + if ( ((unsigned int)v37 & HIDWORD(v37)) != -1 ) + { + v18 = v38; + v19 = v15 + v39; + v20 = v37 + v15; + v14[6] = v19; + v14[4] = v20; + if ( v18 > 0x7FFFFFFF ) + { + v21 = v20 + 0x7FFFFFFF; + do + { + v20 = v21; + v18 -= 0x7FFFFFFFLL; + v21 += 0x7FFFFFFF; + } + while ( v18 > 0x7FFFFFFF ); + } + v14[5] = v18 + v20; + } + return this; +} +// 4ED1E0: variable 'v24' is possibly undefined +// 4ED33E: variable 'v25' is possibly undefined +// 4ED352: variable 'v26' is possibly undefined + +//----- (004ED550) -------------------------------------------------------- +int __thiscall std::wistringstream::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 8); + std::wstring::_M_replace(this + 44, 0, *(_DWORD *)(this + 48), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 40) & 3) != 0 ) + v4 = *(_DWORD *)(this + 48); + return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); +} + +//----- (004ED5C0) -------------------------------------------------------- +int __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return std::wstringbuf::swap(this + 2, (int)(a2 + 2)); +} +// 4ED5E4: variable 'v9' is possibly undefined + +//----- (004ED660) -------------------------------------------------------- +char *__thiscall std::wistringstream::basic_istringstream(char *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + int v6; // esi + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + unsigned int v11; // esi + int v12; // eax + int *v13; // eax + int v14; // eax + int v15; // edx + int v16; // ecx + int v17; // edx + char *result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + _DWORD *v21; // [esp+1Ch] [ebp-6Ch] + _DWORD *v22; // [esp+20h] [ebp-68h] + _DWORD *v23; // [esp+28h] [ebp-60h] + int v24; // [esp+40h] [ebp-48h] + int v25; // [esp+44h] [ebp-44h] + int v26; // [esp+48h] [ebp-40h] + int v27; // [esp+50h] [ebp-38h] + int v28; // [esp+58h] [ebp-30h] + int v29; // [esp+5Ch] [ebp-2Ch] + __int64 v30; // [esp+60h] [ebp-28h] + int v31; // [esp+68h] [ebp-20h] + + v22 = this + 68; + std::ios_base::ios_base((_DWORD *)this + 17); + v3 = a2[1]; + *(_DWORD *)this = &unk_533948; + *((_DWORD *)this + 45) = 0; + *((_DWORD *)this + 1) = v3; + v4 = *a2; + *((_WORD *)this + 92) = 0; + v5 = *(_DWORD *)(v4 - 12); + this[186] = 0; + *((_DWORD *)this + 47) = 0; + v6 = (int)a2 + v5; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 17) = &unk_53395C; + std::ios_base::_M_move((int)v22, (std::ios_base *)v6, v19); + std::wios::_M_cache_locale(v22, (int)(this + 176)); + v7 = *(_DWORD *)(v6 + 112); + *(_DWORD *)(v6 + 112) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 45) = v7; + v21 = a2 + 2; + v8 = a2[11]; + *((_WORD *)this + 92) = *(_WORD *)(v6 + 116); + v24 = -1; + this[186] = *(_BYTE *)(v6 + 118); + v23 = this + 8; + v9 = a2[3]; + a2[1] = 0; + v25 = -1; + *(_DWORD *)this = &off_538234; + *((_DWORD *)this + 17) = off_538248; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + LODWORD(v30) = -1; + v31 = -1; + if ( !v9 ) + { + v10 = a2[6]; + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v9 - v8) >> 1; + v25 = (int)(v9 - v8) >> 31; + v26 = (a2[4] - v8) >> 1; + v9 = a2[5]; + v27 = (int)(v9 - v8) >> 1; + v10 = a2[6]; + if ( v10 ) + { +LABEL_3: + v11 = a2[7]; + v28 = (v10 - v8) >> 1; + v29 = (v10 - v8) >> 31; + v30 = (int)(v11 - v10) >> 1; + v31 = (a2[8] - v8) >> 1; + if ( v9 < v11 ) + v9 = a2[7]; + } + if ( v9 ) + a2[12] = (int)(v9 - v8) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v23, (int)v21, v20); + *((_DWORD *)this + 2) = &off_537FA8; + v12 = a2[10]; + *((_DWORD *)this + 11) = this + 52; + *((_DWORD *)this + 10) = v12; + v13 = (int *)a2[11]; + if ( v13 == a2 + 13 ) + { + wmemcpy((wchar_t *)this + 26, (const wchar_t *)a2 + 26, 8u); + } + else + { + *((_DWORD *)this + 11) = v13; + *((_DWORD *)this + 13) = a2[13]; + } + v14 = a2[12]; + a2[11] = (int)(a2 + 13); + a2[12] = 0; + *((_DWORD *)this + 12) = v14; + *((_WORD *)a2 + 26) = 0; + v15 = *((_DWORD *)this + 11); + if ( (v24 & v25) != -1 ) + { + *((_DWORD *)this + 3) = v15 + 2 * v24; + *((_DWORD *)this + 4) = v15 + 2 * v26; + *((_DWORD *)this + 5) = v15 + 2 * v27; + } + if ( (v28 & v29) != -1 ) + { + v16 = v15 + 2 * v31; + v17 = v15 + 2 * v28; + *((_DWORD *)this + 8) = v16; + *((_DWORD *)this + 6) = v17; + *((_DWORD *)this + 7) = 2 * v30 + v17; + } + std::wstringbuf::_M_sync(v21, (_DWORD *)a2[11], 0, 0); + result = this + 8; + *((_DWORD *)this + 47) = v23; + return result; +} +// 4ED8FF: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4ED6E0: variable 'v19' is possibly undefined +// 4ED841: variable 'v20' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 538234: using guessed type int (*off_538234)(); +// 538248: using guessed type int (*off_538248[2])(); + +//----- (004EDA00) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int a2, int a3) +{ + int v3; // esi + int v5; // eax + wchar_t *v6; // edx + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 68); + std::ios_base::ios_base((_DWORD *)this + 17); + this[186] = 0; + *((_DWORD *)this + 45) = 0; + *((_WORD *)this + 92) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *(_DWORD *)this = &unk_533948; + *((_DWORD *)this + 17) = &unk_53395C; + *((_DWORD *)this + 1) = 0; + std::wios::init(v3, 0); + *(_DWORD *)this = &off_538234; + *((_DWORD *)this + 17) = off_538248; + *((_DWORD *)this + 2) = &off_538A88; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + std::locale::locale((_DWORD *)this + 9); + *((_DWORD *)this + 2) = &off_537FA8; + *((_DWORD *)this + 10) = 0; + v5 = *(_DWORD *)(a2 + 4); + v6 = *(wchar_t **)a2; + LOBYTE(v9) = 0; + *((_DWORD *)this + 11) = this + 52; + std::wstring::_M_construct((wchar_t **)this + 11, v6, (int)&v6[v5], v9); + *((_DWORD *)this + 10) = a3 | 8; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 12); + std::wstringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v7); + return std::wios::init(v3, (int)(this + 8)); +} +// 4EDB04: variable 'v9' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 538234: using guessed type int (*off_538234)(); +// 538248: using guessed type int (*off_538248[2])(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EDBA0) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 17); + std::ios_base::ios_base(this + 17); + *((_BYTE *)this + 186) = 0; + this[45] = 0; + *((_WORD *)this + 92) = 0; + this[47] = 0; + this[48] = 0; + this[49] = 0; + this[50] = 0; + *this = &unk_533948; + this[17] = &unk_53395C; + this[1] = 0; + std::wios::init(v2, 0); + *this = &off_538234; + this[17] = off_538248; + this[2] = &off_538A88; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + this[2] = &off_537FA8; + this[12] = 0; + this[10] = a2 | 8; + this[11] = this + 13; + *((_WORD *)this + 26) = 0; + return std::wios::init(v2, (int)(this + 2)); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538234: using guessed type int (*off_538234)(); +// 538248: using guessed type int (*off_538248[2])(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EDCE0) -------------------------------------------------------- +BOOL __fastcall std::wistringstream::basic_istringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 68; + std::ios_base::ios_base((_DWORD *)(a1 + 68)); + *(_BYTE *)(a1 + 186) = 0; + *(_DWORD *)(a1 + 180) = 0; + *(_WORD *)(a1 + 184) = 0; + *(_DWORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 200) = 0; + *(_DWORD *)a1 = &unk_533948; + *(_DWORD *)(a1 + 68) = &unk_53395C; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_538234; + *(_DWORD *)(a1 + 68) = off_538248; + *(_DWORD *)(a1 + 8) = &off_538A88; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + std::locale::locale((_DWORD *)(a1 + 36)); + *(_DWORD *)(a1 + 44) = a1 + 52; + *(_DWORD *)(a1 + 8) = &off_537FA8; + *(_DWORD *)(a1 + 40) = 8; + *(_DWORD *)(a1 + 48) = 0; + *(_WORD *)(a1 + 52) = 0; + return std::wios::init(v1, a1 + 8); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538234: using guessed type int (*off_538234)(); +// 538248: using guessed type int (*off_538248[2])(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EDE20) -------------------------------------------------------- +int __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3) +{ + int v3; // eax + int v4; // esi + int v5; // edx + char v6; // al + int v7; // edx + int v8; // eax + unsigned int v9; // eax + int v10; // edx + int v11; // ecx + unsigned int v12; // esi + int v13; // eax + int v14; // eax + int v15; // edx + int v16; // ecx + int v17; // edx + int result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + int v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + int v24; // [esp+40h] [ebp-48h] + int v25; // [esp+44h] [ebp-44h] + int v26; // [esp+48h] [ebp-40h] + int v27; // [esp+50h] [ebp-38h] + int v28; // [esp+58h] [ebp-30h] + int v29; // [esp+5Ch] [ebp-2Ch] + __int64 v30; // [esp+60h] [ebp-28h] + int v31; // [esp+68h] [ebp-20h] + + v3 = a2[1]; + *(_DWORD *)this = v3; + *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[2]; + *((_DWORD *)this + 1) = *(_DWORD *)(a3 + 4); + v4 = (int)&this[*(_DWORD *)(v3 - 12)]; + v21 = a3 + *(_DWORD *)(*(_DWORD *)a3 - 12); + std::ios_base::_M_move(v4, (std::ios_base *)v21, v19); + std::wios::_M_cache_locale((_DWORD *)v4, v4 + 108); + *(_DWORD *)(v4 + 120) = 0; + v5 = *(_DWORD *)(v21 + 112); + *(_DWORD *)(v21 + 112) = 0; + *(_DWORD *)(v4 + 112) = v5; + v6 = *(_BYTE *)(v21 + 118); + *(_WORD *)(v4 + 116) = *(_WORD *)(v21 + 116); + *(_BYTE *)(v4 + 118) = v6; + *(_DWORD *)(a3 + 4) = 0; + v7 = a2[3]; + v8 = *a2; + *(_DWORD *)this = *a2; + v24 = -1; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v7; + v22 = this + 8; + v25 = -1; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + LODWORD(v30) = -1; + v31 = -1; + v9 = *(_DWORD *)(a3 + 12); + v10 = *(_DWORD *)(a3 + 44); + if ( !v9 ) + { + v11 = *(_DWORD *)(a3 + 24); + if ( !v11 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v9 - v10) >> 1; + v25 = (int)(v9 - v10) >> 31; + v26 = (*(_DWORD *)(a3 + 16) - v10) >> 1; + v9 = *(_DWORD *)(a3 + 20); + v27 = (int)(v9 - v10) >> 1; + v11 = *(_DWORD *)(a3 + 24); + if ( v11 ) + { +LABEL_3: + v12 = *(_DWORD *)(a3 + 28); + v28 = (v11 - v10) >> 1; + v29 = (v11 - v10) >> 31; + v30 = (int)(v12 - v11) >> 1; + v31 = (*(_DWORD *)(a3 + 32) - v10) >> 1; + if ( v9 < v12 ) + v9 = *(_DWORD *)(a3 + 28); + } + if ( v9 ) + *(_DWORD *)(a3 + 48) = (int)(v9 - v10) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v22, a3 + 8, v20); + *((_DWORD *)this + 10) = *(_DWORD *)(a3 + 40); + *((_DWORD *)this + 2) = &off_537FA8; + *((_DWORD *)this + 11) = this + 52; + v13 = *(_DWORD *)(a3 + 44); + if ( v13 == a3 + 52 ) + { + wmemcpy((wchar_t *)this + 26, (const wchar_t *)(a3 + 52), 8u); + } + else + { + *((_DWORD *)this + 11) = v13; + *((_DWORD *)this + 13) = *(_DWORD *)(a3 + 52); + } + v14 = *(_DWORD *)(a3 + 48); + *(_DWORD *)(a3 + 44) = a3 + 52; + *(_DWORD *)(a3 + 48) = 0; + *((_DWORD *)this + 12) = v14; + *(_WORD *)(a3 + 52) = 0; + v15 = *((_DWORD *)this + 11); + if ( (v24 & v25) != -1 ) + { + *((_DWORD *)this + 3) = v15 + 2 * v24; + *((_DWORD *)this + 4) = v15 + 2 * v26; + *((_DWORD *)this + 5) = v15 + 2 * v27; + } + if ( (v28 & v29) != -1 ) + { + v16 = v15 + 2 * v31; + v17 = v15 + 2 * v28; + *((_DWORD *)this + 8) = v16; + *((_DWORD *)this + 6) = v17; + *((_DWORD *)this + 7) = 2 * v30 + v17; + } + std::wstringbuf::_M_sync((_DWORD *)(a3 + 8), *(_DWORD **)(a3 + 44), 0, 0); + result = *(_DWORD *)(*(_DWORD *)this - 12); + *(_DWORD *)&this[result + 120] = v22; + return result; +} +// 4EE070: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4EDE5F: variable 'v19' is possibly undefined +// 4EDFB0: variable 'v20' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); + +//----- (004EE150) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3, int a4) +{ + int v5; // eax + int v6; // edi + int v7; // eax + int v8; // ecx + int v9; // eax + wchar_t *v10; // edx + unsigned int v11; // eax + int v13; // [esp+8h] [ebp-30h] + + v5 = a2[1]; + v6 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = v6; + *((_DWORD *)this + 1) = 0; + std::wios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + *((_DWORD *)this + 2) = &off_538A88; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + std::locale::locale((_DWORD *)this + 9); + *((_DWORD *)this + 2) = &off_537FA8; + *((_DWORD *)this + 10) = 0; + v9 = *(_DWORD *)(a3 + 4); + v10 = *(wchar_t **)a3; + LOBYTE(v13) = 0; + *((_DWORD *)this + 11) = this + 52; + std::wstring::_M_construct((wchar_t **)this + 11, v10, (int)&v10[v9], v13); + *((_DWORD *)this + 10) = a4 | 8; + v11 = 0; + if ( (a4 & 3) != 0 ) + v11 = *((_DWORD *)this + 12); + std::wstringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v11); + return std::wios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 8)); +} +// 4EE20C: variable 'v13' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EE2B0) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3) +{ + int v4; // edi + int v5; // eax + int v6; // eax + int v7; // edx + + v4 = (int)(this + 2); + v5 = a2[1]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = (int)&off_538A88; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + this[12] = 0; + this[2] = (int)&off_537FA8; + this[10] = a3 | 8; + this[11] = (int)(this + 13); + *((_WORD *)this + 26) = 0; + return std::wios::init((int)this + *(_DWORD *)(*this - 12), v4); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EE3A0) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // ecx + + v3 = (int)(this + 2); + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = *a2; + v6 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; + this[2] = (int)&off_538A88; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + this[12] = 0; + this[11] = (int)(this + 13); + *((_WORD *)this + 26) = 0; + v7 = *this; + this[2] = (int)&off_537FA8; + v8 = *(_DWORD *)(v7 - 12); + this[10] = 8; + return std::wios::init((int)this + v8, v3); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EE490) -------------------------------------------------------- +void __fastcall std::wistringstream::~wistringstream(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[11]; + *a1 = &off_538234; + a1[17] = off_538248; + a1[2] = &off_537FA8; + if ( v2 != a1 + 13 ) + operator delete(v2); + a1[2] = &off_538A88; + std::locale::~locale((_DWORD **)a1 + 9); + *a1 = &unk_533948; + a1[1] = 0; + a1[17] = &off_539484; + std::ios_base::~ios_base((int)(a1 + 17)); + operator delete(a1); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538234: using guessed type int (*off_538234)(); +// 538248: using guessed type int (*off_538248[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004EE500) -------------------------------------------------------- +void __fastcall std::wistringstream::~wistringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 44); + *(_DWORD *)a1 = &off_538234; + *(_DWORD *)(a1 + 68) = off_538248; + *(_DWORD *)(a1 + 8) = &off_537FA8; + if ( v2 != (void *)(a1 + 52) ) + operator delete(v2); + *(_DWORD *)(a1 + 8) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 36)); + *(_DWORD *)a1 = &unk_533948; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 68) = &off_539484; + std::ios_base::~ios_base(a1 + 68); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538234: using guessed type int (*off_538234)(); +// 538248: using guessed type int (*off_538248[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004EE560) -------------------------------------------------------- +int __thiscall std::wistringstream::~wistringstream(int *this, int *a2) +{ + int v3; // eax + char *v4; // eax + int v5; // eax + int result; // eax + + v3 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + v4 = (char *)this[11]; + this[2] = (int)&off_537FA8; + if ( v4 != (char *)(this + 13) ) + operator delete(v4); + this[2] = (int)&off_538A88; + std::locale::~locale((_DWORD **)this + 9); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(int *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004EE5C0) -------------------------------------------------------- +char *__thiscall std::wistringstream::operator=(char *this, int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + unsigned int v11; // esi + int v12; // ecx + wchar_t *v13; // eax + wchar_t *v14; // edx + int v15; // esi + _DWORD *v16; // ecx + int v17; // ebx + int v18; // edx + int v19; // edi + __int64 v20; // rax + int v21; // edi + int v22; // ebx + int v23; // edi + int v25; // eax + int v26; // ecx + std::ios_base *v27; // [esp+4h] [ebp-74h] + const std::locale *v28; // [esp+4h] [ebp-74h] + const std::locale *v29; // [esp+4h] [ebp-74h] + int v30; // [esp+14h] [ebp-64h] + _DWORD *v32; // [esp+20h] [ebp-58h] BYREF + _DWORD *v33; // [esp+24h] [ebp-54h] BYREF + _DWORD *v34; // [esp+28h] [ebp-50h] + int v35; // [esp+30h] [ebp-48h] + int v36; // [esp+34h] [ebp-44h] + int v37; // [esp+38h] [ebp-40h] + int v38; // [esp+3Ch] [ebp-3Ch] + __int64 v39; // [esp+40h] [ebp-38h] + int v40; // [esp+48h] [ebp-30h] + int v41; // [esp+4Ch] [ebp-2Ch] + __int64 v42; // [esp+50h] [ebp-28h] + int v43; // [esp+58h] [ebp-20h] + int v44; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v27); + std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v35 = -1; + v36 = -1; + *(_DWORD *)(v2 + 112) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_DWORD *)(v3 + 112) = v4; + LOWORD(v4) = *(_WORD *)(v2 + 116); + *(_WORD *)(v2 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 118); + *(_WORD *)(v3 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 118); + v37 = -1; + *(_BYTE *)(v2 + 118) = v4; + *(_BYTE *)(v3 + 118) = v5; + v6 = *(_DWORD *)(a2 + 4); + v38 = -1; + v7 = *((_DWORD *)this + 1); + LODWORD(v39) = -1; + *((_DWORD *)this + 1) = v6; + *(_DWORD *)(a2 + 4) = v7; + v34 = this + 8; + HIDWORD(v39) = -1; + v40 = -1; + v41 = -1; + v42 = -1LL; + v43 = -1; + v44 = -1; + v8 = *(_DWORD *)(a2 + 44); + v9 = *(_DWORD *)(a2 + 12); + if ( !v9 ) + { + v10 = *(_DWORD *)(a2 + 24); + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v35 = (int)(v9 - v8) >> 1; + v36 = (int)(v9 - v8) >> 31; + v37 = (*(_DWORD *)(a2 + 16) - v8) >> 1; + v38 = v37 >> 31; + v9 = *(_DWORD *)(a2 + 20); + v39 = (int)(v9 - v8) >> 1; + v10 = *(_DWORD *)(a2 + 24); + if ( v10 ) + { +LABEL_3: + v40 = (v10 - v8) >> 1; + v41 = (v10 - v8) >> 31; + v11 = *(_DWORD *)(a2 + 28); + v42 = (int)(v11 - v10) >> 1; + v43 = (*(_DWORD *)(a2 + 32) - v8) >> 1; + v44 = v43 >> 31; + if ( v9 < v11 ) + v9 = v11; + } + if ( v9 ) + *(_DWORD *)(a2 + 48) = (int)(v9 - v8) >> 1; +LABEL_7: + std::wstreambuf::operator=((volatile signed __int32 **)this + 2, a2 + 8); + std::locale::locale((volatile signed __int32 **)&v33, (volatile signed __int32 **)(a2 + 36), v28); + std::locale::locale((volatile signed __int32 **)&v32, (volatile signed __int32 **)this + 9, v29); + std::locale::operator=((volatile signed __int32 **)this + 9, (volatile signed __int32 **)&v33); + std::locale::~locale(&v32); + std::locale::~locale(&v33); + v12 = *(_DWORD *)(a2 + 44); + *((_DWORD *)this + 10) = *(_DWORD *)(a2 + 40); + v13 = (wchar_t *)*((_DWORD *)this + 11); + v14 = (wchar_t *)(a2 + 52); + if ( v12 == a2 + 52 ) + { + v26 = *(_DWORD *)(a2 + 48); + if ( v26 ) + { + if ( v26 == 1 ) + { + *v13 = *(_WORD *)(a2 + 52); + } + else + { + wmemcpy(v13, (const wchar_t *)(a2 + 52), *(_DWORD *)(a2 + 48)); + v26 = *(_DWORD *)(a2 + 48); + v14 = *(wchar_t **)(a2 + 44); + v13 = (wchar_t *)*((_DWORD *)this + 11); + } + } + *((_DWORD *)this + 12) = v26; + v13[v26] = 0; + v13 = v14; + } + else + { + v30 = *(_DWORD *)(a2 + 48); + if ( v13 == (wchar_t *)(this + 52) ) + { + *((_DWORD *)this + 12) = v30; + v25 = *(_DWORD *)(a2 + 52); + *((_DWORD *)this + 11) = v12; + *((_DWORD *)this + 13) = v25; + } + else + { + v15 = *((_DWORD *)this + 13); + *((_DWORD *)this + 11) = v12; + *((_DWORD *)this + 12) = v30; + *((_DWORD *)this + 13) = *(_DWORD *)(a2 + 52); + if ( v13 ) + { + *(_DWORD *)(a2 + 44) = v13; + *(_DWORD *)(a2 + 52) = v15; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 44) = v14; + v13 = (wchar_t *)(a2 + 52); + } +LABEL_11: + *(_DWORD *)(a2 + 48) = 0; + *v13 = 0; + std::wstringbuf::_M_sync((_DWORD *)(a2 + 8), v13, 0, 0); + v16 = v34; + v17 = v34[9]; + if ( (v35 & v36) != -1 ) + { + v18 = v39; + v19 = v37; + v34[1] = v17 + 2 * v35; + v16[2] = v17 + 2 * v19; + v16[3] = v17 + 2 * v18; + } + if ( (v41 & v40) != -1 ) + { + v20 = v42; + v21 = v17 + 2 * v43; + v22 = v17 + 2 * v40; + v16[6] = v21; + v16[4] = v22; + if ( v20 > 0x7FFFFFFF ) + { + v23 = v22 - 2; + do + { + v22 = v23; + v20 -= 0x7FFFFFFFLL; + v23 -= 2; + } + while ( v20 > 0x7FFFFFFF ); + } + v16[5] = v22 + 2 * v20; + } + return this; +} +// 4EE5E0: variable 'v27' is possibly undefined +// 4EE74A: variable 'v28' is possibly undefined +// 4EE75E: variable 'v29' is possibly undefined + +//----- (004EE950) -------------------------------------------------------- +int __thiscall std::ostringstream::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 4); + std::string::_M_replace((unsigned int *)(this + 40), 0, *(_DWORD *)(this + 44), *(char **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 36) & 3) != 0 ) + v4 = *(_DWORD *)(this + 44); + return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); +} + +//----- (004EE9C0) -------------------------------------------------------- +int __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + *((_BYTE *)v4 + 117) = v7; + return std::stringbuf::swap(this + 1, (int)(a2 + 1)); +} +// 4EE9E4: variable 'v9' is possibly undefined + +//----- (004EEA50) -------------------------------------------------------- +char *__thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2) +{ + int v3; // eax + int v4; // esi + std::ios_base *v5; // esi + int v6; // eax + int v7; // edx + unsigned int v8; // eax + int v9; // ecx + int v10; // eax + _DWORD *v11; // edx + int v12; // edx + int v13; // eax + int v14; // ecx + int v15; // eax + char *result; // eax + std::ios_base *v17; // [esp+4h] [ebp-84h] + const std::locale *v18; // [esp+4h] [ebp-84h] + _DWORD *v19; // [esp+1Ch] [ebp-6Ch] + _DWORD *v20; // [esp+20h] [ebp-68h] + _DWORD *v21; // [esp+28h] [ebp-60h] + __int64 v22; // [esp+40h] [ebp-48h] + int v23; // [esp+48h] [ebp-40h] + int v24; // [esp+50h] [ebp-38h] + __int64 v25; // [esp+58h] [ebp-30h] + int v26; // [esp+60h] [ebp-28h] + int v27; // [esp+68h] [ebp-20h] + + v20 = this + 16; + std::ios_base::ios_base(this + 16); + *this = &unk_533970; + *((_WORD *)this + 90) = 0; + v3 = *a2; + this[44] = 0; + v4 = *(_DWORD *)(v3 - 12); + this[46] = 0; + this[47] = 0; + v5 = (std::ios_base *)((char *)a2 + v4); + this[16] = &unk_533984; + this[48] = 0; + this[49] = 0; + std::ios_base::_M_move((int)v20, v5, v17); + std::ios::_M_cache_locale(v20, (int)(this + 43)); + v6 = *((_DWORD *)v5 + 28); + *((_DWORD *)v5 + 28) = 0; + v19 = a2 + 1; + this[44] = v6; + LOWORD(v6) = *((_WORD *)v5 + 58); + this[46] = 0; + *((_WORD *)this + 90) = v6; + v7 = a2[10]; + v21 = this + 1; + v8 = a2[2]; + *this = &off_53825C; + this[16] = off_538270; + v22 = -1LL; + v23 = -1; + v24 = -1; + v25 = -1LL; + v26 = -1; + v27 = -1; + if ( !v8 ) + { + v9 = a2[5]; + if ( !v9 ) + goto LABEL_7; + goto LABEL_3; + } + v22 = (int)(v8 - v7); + v23 = a2[3] - v7; + v8 = a2[4]; + v24 = v8 - v7; + v9 = a2[5]; + if ( v9 ) + { +LABEL_3: + v25 = v9 - v7; + v26 = a2[6] - v9; + v27 = a2[7] - v7; + if ( v8 < a2[6] ) + v8 = a2[6]; + } + if ( v8 ) + a2[11] = v8 - v7; +LABEL_7: + std::streambuf::basic_streambuf(v21, (int)v19, v18); + this[1] = &off_537F68; + v10 = a2[9]; + this[10] = this + 12; + this[9] = v10; + v11 = (_DWORD *)a2[10]; + if ( v11 == a2 + 12 ) + { + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + this[15] = a2[15]; + } + else + { + this[10] = v11; + this[12] = a2[12]; + } + v12 = a2[11]; + a2[10] = a2 + 12; + a2[11] = 0; + this[11] = v12; + *((_BYTE *)a2 + 48) = 0; + v13 = this[10]; + if ( ((unsigned int)v22 & HIDWORD(v22)) != -1 ) + { + this[2] = v13 + v22; + this[3] = v13 + v23; + this[4] = v13 + v24; + } + if ( ((unsigned int)v25 & HIDWORD(v25)) != -1 ) + { + v14 = v13 + v27; + v15 = v25 + v13; + this[7] = v14; + this[5] = v15; + this[6] = v26 + v15; + } + std::stringbuf::_M_sync(v19, (_DWORD *)a2[10], 0, 0); + result = (char *)(this + 1); + this[46] = v21; + return result; +} +// 4EECB0: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4EEAC3: variable 'v17' is possibly undefined +// 4EEC05: variable 'v18' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 53825C: using guessed type int (*off_53825C)(); +// 538270: using guessed type int (*off_538270[2])(); + +//----- (004EEDB0) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int a2, int a3) +{ + int v3; // esi + int v5; // eax + unsigned __int8 *v6; // edx + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 64); + std::ios_base::ios_base((_DWORD *)this + 16); + *(_DWORD *)this = &unk_533970; + *((_DWORD *)this + 44) = 0; + *((_WORD *)this + 90) = 0; + *((_DWORD *)this + 46) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 16) = &unk_533984; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_53825C; + *((_DWORD *)this + 16) = off_538270; + *((_DWORD *)this + 1) = &off_538A48; + *((_DWORD *)this + 2) = 0; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + std::locale::locale((_DWORD *)this + 8); + *((_DWORD *)this + 1) = &off_537F68; + *((_DWORD *)this + 9) = 0; + v5 = *(_DWORD *)(a2 + 4); + v6 = *(unsigned __int8 **)a2; + LOBYTE(v9) = 0; + *((_DWORD *)this + 10) = this + 48; + std::string::_M_construct((void **)this + 10, v6, (size_t)&v6[v5], v9); + *((_DWORD *)this + 9) = a3 | 0x10; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 11); + std::stringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v7); + return std::ios::init(v3, (int)(this + 4)); +} +// 4EEEA3: variable 'v9' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 53825C: using guessed type int (*off_53825C)(); +// 538270: using guessed type int (*off_538270[2])(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EEF40) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 16); + std::ios_base::ios_base(this + 16); + *this = &unk_533970; + this[44] = 0; + *((_WORD *)this + 90) = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + this[49] = 0; + this[16] = &unk_533984; + std::ios::init(v2, 0); + *this = &off_53825C; + this[16] = off_538270; + this[1] = &off_538A48; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + *((_BYTE *)this + 48) = 0; + this[1] = &off_537F68; + this[11] = 0; + this[9] = a2 | 0x10; + this[10] = this + 12; + return std::ios::init(v2, (int)(this + 1)); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53825C: using guessed type int (*off_53825C)(); +// 538270: using guessed type int (*off_538270[2])(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EF060) -------------------------------------------------------- +BOOL __fastcall std::ostringstream::basic_ostringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 64; + std::ios_base::ios_base((_DWORD *)(a1 + 64)); + *(_DWORD *)a1 = &unk_533970; + *(_DWORD *)(a1 + 176) = 0; + *(_WORD *)(a1 + 180) = 0; + *(_DWORD *)(a1 + 184) = 0; + *(_DWORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 64) = &unk_533984; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_53825C; + *(_DWORD *)(a1 + 64) = off_538270; + *(_DWORD *)(a1 + 4) = &off_538A48; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + std::locale::locale((_DWORD *)(a1 + 32)); + *(_BYTE *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 4) = &off_537F68; + *(_DWORD *)(a1 + 36) = 16; + *(_DWORD *)(a1 + 40) = a1 + 48; + *(_DWORD *)(a1 + 44) = 0; + return std::ios::init(v1, a1 + 4); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53825C: using guessed type int (*off_53825C)(); +// 538270: using guessed type int (*off_538270[2])(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EF180) -------------------------------------------------------- +int __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3) +{ + int v3; // eax + int v4; // esi + int v5; // edx + __int16 v6; // ax + int v7; // edx + int v8; // eax + int v9; // edx + unsigned int v10; // eax + int v11; // ecx + unsigned int v12; // esi + _DWORD *v13; // edx + int v14; // edx + int v15; // eax + int v16; // ecx + int v17; // eax + int result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + std::ios_base *v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + __int64 v24; // [esp+40h] [ebp-48h] + int v25; // [esp+48h] [ebp-40h] + int v26; // [esp+50h] [ebp-38h] + __int64 v27; // [esp+58h] [ebp-30h] + int v28; // [esp+60h] [ebp-28h] + int v29; // [esp+68h] [ebp-20h] + + v3 = a2[1]; + *this = v3; + v4 = (int)this + *(_DWORD *)(v3 - 12); + *(_DWORD *)v4 = a2[2]; + v21 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v4, v21, v19); + std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); + *(_DWORD *)(v4 + 120) = 0; + v5 = *((_DWORD *)v21 + 28); + *((_DWORD *)v21 + 28) = 0; + v6 = *((_WORD *)v21 + 58); + *(_DWORD *)(v4 + 112) = v5; + *(_WORD *)(v4 + 116) = v6; + v7 = a2[3]; + v8 = *a2; + *this = *a2; + v24 = -1LL; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; + v9 = a3[10]; + v22 = this + 1; + v10 = a3[2]; + v25 = -1; + v26 = -1; + v27 = -1LL; + v28 = -1; + v29 = -1; + if ( !v10 ) + { + v11 = a3[5]; + if ( !v11 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v10 - v9); + v25 = a3[3] - v9; + v10 = a3[4]; + v26 = v10 - v9; + v11 = a3[5]; + if ( v11 ) + { +LABEL_3: + v12 = a3[6]; + v27 = v11 - v9; + v28 = v12 - v11; + v29 = a3[7] - v9; + if ( v10 < v12 ) + v10 = a3[6]; + } + if ( v10 ) + a3[11] = v10 - v9; +LABEL_7: + std::streambuf::basic_streambuf(v22, (int)(a3 + 1), v20); + this[9] = a3[9]; + this[1] = (int)&off_537F68; + this[10] = (int)(this + 12); + v13 = (_DWORD *)a3[10]; + if ( v13 == a3 + 12 ) + { + this[12] = a3[12]; + this[13] = a3[13]; + this[14] = a3[14]; + this[15] = a3[15]; + } + else + { + this[10] = (int)v13; + this[12] = a3[12]; + } + v14 = a3[11]; + a3[10] = a3 + 12; + a3[11] = 0; + this[11] = v14; + *((_BYTE *)a3 + 48) = 0; + v15 = this[10]; + if ( ((unsigned int)v24 & HIDWORD(v24)) != -1 ) + { + this[2] = v15 + v24; + this[3] = v15 + v25; + this[4] = v15 + v26; + } + if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) + { + v16 = v15 + v29; + v17 = v27 + v15; + this[7] = v16; + this[5] = v17; + this[6] = v28 + v17; + } + std::stringbuf::_M_sync(a3 + 1, (_DWORD *)a3[10], 0, 0); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)v22; + return result; +} +// 4EF391: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4EF1B3: variable 'v19' is possibly undefined +// 4EF2E8: variable 'v20' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); + +//----- (004EF480) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4) +{ + int v5; // eax + char *v6; // ecx + int v7; // eax + int v8; // ecx + int v9; // eax + unsigned __int8 *v10; // edx + unsigned int v11; // eax + int v13; // [esp+8h] [ebp-30h] + + v5 = a2[1]; + *(_DWORD *)this = v5; + v6 = &this[*(_DWORD *)(v5 - 12)]; + *(_DWORD *)v6 = a2[2]; + std::ios::init((int)v6, 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + *((_DWORD *)this + 1) = &off_538A48; + *((_DWORD *)this + 2) = 0; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + std::locale::locale((_DWORD *)this + 8); + *((_DWORD *)this + 1) = &off_537F68; + *((_DWORD *)this + 9) = 0; + v9 = *(_DWORD *)(a3 + 4); + v10 = *(unsigned __int8 **)a3; + LOBYTE(v13) = 0; + *((_DWORD *)this + 10) = this + 48; + std::string::_M_construct((void **)this + 10, v10, (size_t)&v10[v9], v13); + *((_DWORD *)this + 9) = a4 | 0x10; + v11 = 0; + if ( (a4 & 3) != 0 ) + v11 = *((_DWORD *)this + 11); + std::stringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v11); + return std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 4)); +} +// 4EF52E: variable 'v13' is possibly undefined +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EF5C0) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3) +{ + int v4; // edi + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + + v4 = (int)(this + 1); + v5 = a2[1]; + *this = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); + *v6 = a2[2]; + std::ios::init((int)v6, 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + this[1] = (int)&off_538A48; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + *((_BYTE *)this + 48) = 0; + this[11] = 0; + this[1] = (int)&off_537F68; + this[9] = a3 | 0x10; + this[10] = (int)(this + 12); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), v4); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EF6A0) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // ecx + + v3 = (int)(this + 1); + v4 = a2[1]; + *this = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); + *v5 = a2[2]; + std::ios::init((int)v5, 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[1] = (int)&off_538A48; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + *((_BYTE *)this + 48) = 0; + this[10] = (int)(this + 12); + v8 = *this; + this[11] = 0; + this[1] = (int)&off_537F68; + v9 = *(_DWORD *)(v8 - 12); + this[9] = 16; + return std::ios::init((int)this + v9, v3); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EF780) -------------------------------------------------------- +void __fastcall std::ostringstream::~ostringstream(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[10]; + *a1 = &off_53825C; + a1[16] = off_538270; + a1[1] = &off_537F68; + if ( v2 != a1 + 12 ) + operator delete(v2); + a1[1] = &off_538A48; + std::locale::~locale((_DWORD **)a1 + 8); + *a1 = &unk_533970; + a1[16] = &off_539474; + std::ios_base::~ios_base((int)(a1 + 16)); + operator delete(a1); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53825C: using guessed type int (*off_53825C)(); +// 538270: using guessed type int (*off_538270[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004EF7E0) -------------------------------------------------------- +void __fastcall std::ostringstream::~ostringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 40); + *(_DWORD *)a1 = &off_53825C; + *(_DWORD *)(a1 + 64) = off_538270; + *(_DWORD *)(a1 + 4) = &off_537F68; + if ( v2 != (void *)(a1 + 48) ) + operator delete(v2); + *(_DWORD *)(a1 + 4) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_533970; + *(_DWORD *)(a1 + 64) = &off_539474; + std::ios_base::~ios_base(a1 + 64); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53825C: using guessed type int (*off_53825C)(); +// 538270: using guessed type int (*off_538270[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004EF840) -------------------------------------------------------- +int __thiscall std::ostringstream::~ostringstream(int *this, int *a2) +{ + int v3; // eax + char *v4; // eax + int v5; // eax + int result; // eax + + v3 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + v4 = (char *)this[10]; + this[1] = (int)&off_537F68; + if ( v4 != (char *)(this + 12) ) + operator delete(v4); + this[1] = (int)&off_538A48; + std::locale::~locale((_DWORD **)this + 8); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(int *)((char *)this + result) = a2[2]; + return result; +} +// 537F68: using guessed type int (*off_537F68)(); +// 538A48: using guessed type int (*off_538A48)(); + +//----- (004EF8A0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::ostringstream::operator=(volatile signed __int32 **this, int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + unsigned int v7; // eax + int v8; // ecx + const void *v9; // edx + volatile signed __int32 *v10; // eax + volatile signed __int32 *v11; // esi + _DWORD *v12; // edx + int v13; // eax + int v14; // ebx + int v15; // edi + __int64 v16; // rcx + int v17; // edi + int v18; // eax + int v19; // edi + volatile signed __int32 *v21; // ecx + std::ios_base *v22; // [esp+4h] [ebp-74h] + const std::locale *v23; // [esp+4h] [ebp-74h] + const std::locale *v24; // [esp+4h] [ebp-74h] + unsigned int v25; // [esp+10h] [ebp-68h] + volatile signed __int32 *v26; // [esp+14h] [ebp-64h] + _DWORD *v28; // [esp+20h] [ebp-58h] BYREF + _DWORD *v29; // [esp+24h] [ebp-54h] BYREF + _DWORD *v30; // [esp+28h] [ebp-50h] + __int64 v31; // [esp+30h] [ebp-48h] + int v32; // [esp+38h] [ebp-40h] + int v33; // [esp+3Ch] [ebp-3Ch] + __int64 v34; // [esp+40h] [ebp-38h] + __int64 v35; // [esp+48h] [ebp-30h] + __int64 v36; // [esp+50h] [ebp-28h] + int v37; // [esp+58h] [ebp-20h] + int v38; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)this + *((_DWORD *)*this - 3); + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v22); + std::ios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v31 = -1LL; + *(_DWORD *)(v2 + 112) = v5; + *(_DWORD *)(v3 + 112) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 116); + LOBYTE(v5) = *(_BYTE *)(v2 + 116); + v32 = -1; + *(_BYTE *)(v2 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 117); + *(_BYTE *)(v2 + 117) = v4; + *(_BYTE *)(v3 + 117) = v5; + v33 = -1; + v6 = *(_DWORD *)(a2 + 40); + v30 = this + 1; + v7 = *(_DWORD *)(a2 + 8); + v34 = -1LL; + v35 = -1LL; + v36 = -1LL; + v37 = -1; + v38 = -1; + if ( !v7 ) + { + v8 = *(_DWORD *)(a2 + 20); + if ( !v8 ) + goto LABEL_7; + goto LABEL_3; + } + v31 = (int)(v7 - v6); + v32 = *(_DWORD *)(a2 + 12) - v6; + v33 = v32 >> 31; + v7 = *(_DWORD *)(a2 + 16); + v34 = (int)(v7 - v6); + v8 = *(_DWORD *)(a2 + 20); + if ( v8 ) + { +LABEL_3: + v35 = v8 - v6; + v25 = *(_DWORD *)(a2 + 24); + v36 = (int)(v25 - v8); + v37 = *(_DWORD *)(a2 + 28) - v6; + v38 = v37 >> 31; + if ( v7 < v25 ) + v7 = v25; + } + if ( v7 ) + *(_DWORD *)(a2 + 44) = v7 - v6; +LABEL_7: + std::streambuf::operator=(this + 1, a2 + 4); + std::locale::locale((volatile signed __int32 **)&v29, (volatile signed __int32 **)(a2 + 32), v23); + std::locale::locale((volatile signed __int32 **)&v28, this + 8, v24); + std::locale::operator=(this + 8, (volatile signed __int32 **)&v29); + std::locale::~locale(&v28); + std::locale::~locale(&v29); + v9 = *(const void **)(a2 + 40); + this[9] = *(volatile signed __int32 **)(a2 + 36); + v10 = this[10]; + if ( v9 == (const void *)(a2 + 48) ) + { + v21 = *(volatile signed __int32 **)(a2 + 44); + if ( v21 ) + { + if ( v21 == (volatile signed __int32 *)1 ) + *(_BYTE *)v10 = *(_BYTE *)(a2 + 48); + else + memcpy((void *)v10, v9, *(_DWORD *)(a2 + 44)); + v21 = *(volatile signed __int32 **)(a2 + 44); + v10 = this[10]; + } + this[11] = v21; + *((_BYTE *)v21 + (_DWORD)v10) = 0; + v10 = *(volatile signed __int32 **)(a2 + 40); + } + else + { + v26 = *(volatile signed __int32 **)(a2 + 44); + if ( v10 == (volatile signed __int32 *)(this + 12) ) + { + this[10] = (volatile signed __int32 *)v9; + this[11] = v26; + this[12] = *(volatile signed __int32 **)(a2 + 48); + } + else + { + v11 = this[12]; + this[10] = (volatile signed __int32 *)v9; + this[11] = v26; + this[12] = *(volatile signed __int32 **)(a2 + 48); + if ( v10 ) + { + *(_DWORD *)(a2 + 40) = v10; + *(_DWORD *)(a2 + 48) = v11; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 40) = a2 + 48; + v10 = (volatile signed __int32 *)(a2 + 48); + } +LABEL_11: + *(_DWORD *)(a2 + 44) = 0; + *(_BYTE *)v10 = 0; + std::stringbuf::_M_sync((_DWORD *)(a2 + 4), *(_DWORD **)(a2 + 40), 0, 0); + v12 = v30; + v13 = v30[9]; + if ( ((unsigned int)v31 & HIDWORD(v31)) != -1 ) + { + v14 = v34; + v15 = v32; + v30[1] = v13 + v31; + v12[2] = v13 + v15; + v12[3] = v13 + v14; + } + if ( ((unsigned int)v35 & HIDWORD(v35)) != -1 ) + { + v16 = v36; + v17 = v13 + v37; + v18 = v35 + v13; + v12[6] = v17; + v12[4] = v18; + if ( v16 > 0x7FFFFFFF ) + { + v19 = v18 + 0x7FFFFFFF; + do + { + v18 = v19; + v16 -= 0x7FFFFFFFLL; + v19 += 0x7FFFFFFF; + } + while ( v16 > 0x7FFFFFFF ); + } + v12[5] = v16 + v18; + } + return this; +} +// 4EF8C0: variable 'v22' is possibly undefined +// 4EFA12: variable 'v23' is possibly undefined +// 4EFA26: variable 'v24' is possibly undefined + +//----- (004EFC10) -------------------------------------------------------- +int __thiscall std::wostringstream::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 4); + std::wstring::_M_replace(this + 40, 0, *(_DWORD *)(this + 44), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 36) & 3) != 0 ) + v4 = *(_DWORD *)(this + 44); + return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); +} + +//----- (004EFC80) -------------------------------------------------------- +int __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + *((_BYTE *)v4 + 118) = v6; + return std::wstringbuf::swap(this + 1, (int)(a2 + 1)); +} +// 4EFCA4: variable 'v8' is possibly undefined + +//----- (004EFD10) -------------------------------------------------------- +char *__thiscall std::wostringstream::basic_ostringstream(char *this, int *a2) +{ + int v3; // eax + int v4; // esi + int v5; // esi + int v6; // eax + int v7; // edx + unsigned int v8; // eax + int v9; // ecx + int v10; // eax + int *v11; // eax + int v12; // eax + int v13; // edx + int v14; // ecx + int v15; // edx + char *result; // eax + std::ios_base *v17; // [esp+4h] [ebp-84h] + const std::locale *v18; // [esp+4h] [ebp-84h] + _DWORD *v19; // [esp+1Ch] [ebp-6Ch] + _DWORD *v20; // [esp+20h] [ebp-68h] + _DWORD *v21; // [esp+28h] [ebp-60h] + int v22; // [esp+40h] [ebp-48h] + int v23; // [esp+44h] [ebp-44h] + int v24; // [esp+48h] [ebp-40h] + int v25; // [esp+50h] [ebp-38h] + int v26; // [esp+58h] [ebp-30h] + int v27; // [esp+5Ch] [ebp-2Ch] + int v28; // [esp+60h] [ebp-28h] + int v29; // [esp+68h] [ebp-20h] + + v20 = this + 64; + std::ios_base::ios_base((_DWORD *)this + 16); + v3 = *a2; + this[182] = 0; + *((_DWORD *)this + 44) = 0; + v4 = *(_DWORD *)(v3 - 12); + *(_DWORD *)this = &unk_533998; + *((_WORD *)this + 90) = 0; + v5 = (int)a2 + v4; + *((_DWORD *)this + 46) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 16) = &unk_5339AC; + std::ios_base::_M_move((int)v20, (std::ios_base *)v5, v17); + std::wios::_M_cache_locale(v20, (int)(this + 172)); + v6 = *(_DWORD *)(v5 + 112); + *(_DWORD *)(v5 + 112) = 0; + v19 = a2 + 1; + v7 = a2[10]; + *((_DWORD *)this + 44) = v6; + LOWORD(v6) = *(_WORD *)(v5 + 116); + *((_DWORD *)this + 46) = 0; + *((_WORD *)this + 90) = v6; + LOBYTE(v6) = *(_BYTE *)(v5 + 118); + *(_DWORD *)this = &off_538284; + this[182] = v6; + v21 = this + 4; + v8 = a2[2]; + *((_DWORD *)this + 16) = off_538298; + v22 = -1; + v23 = -1; + v24 = -1; + v25 = -1; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + if ( !v8 ) + { + v9 = a2[5]; + if ( !v9 ) + goto LABEL_7; + goto LABEL_3; + } + v22 = (int)(v8 - v7) >> 1; + v23 = (int)(v8 - v7) >> 31; + v24 = (a2[3] - v7) >> 1; + v8 = a2[4]; + v25 = (int)(v8 - v7) >> 1; + v9 = a2[5]; + if ( v9 ) + { +LABEL_3: + v26 = (v9 - v7) >> 1; + v27 = (v9 - v7) >> 31; + v28 = (a2[6] - v9) >> 1; + v29 = (a2[7] - v7) >> 1; + if ( v8 < a2[6] ) + v8 = a2[6]; + } + if ( v8 ) + a2[11] = (int)(v8 - v7) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v21, (int)v19, v18); + *((_DWORD *)this + 1) = &off_537FA8; + v10 = a2[9]; + *((_DWORD *)this + 10) = this + 48; + *((_DWORD *)this + 9) = v10; + v11 = (int *)a2[10]; + if ( v11 == a2 + 12 ) + { + wmemcpy((wchar_t *)this + 24, (const wchar_t *)a2 + 24, 8u); + } + else + { + *((_DWORD *)this + 10) = v11; + *((_DWORD *)this + 12) = a2[12]; + } + v12 = a2[11]; + a2[10] = (int)(a2 + 12); + a2[11] = 0; + *((_DWORD *)this + 11) = v12; + *((_WORD *)a2 + 24) = 0; + v13 = *((_DWORD *)this + 10); + if ( (v22 & v23) != -1 ) + { + *((_DWORD *)this + 2) = v13 + 2 * v22; + *((_DWORD *)this + 3) = v13 + 2 * v24; + *((_DWORD *)this + 4) = v13 + 2 * v25; + } + if ( (v26 & v27) != -1 ) + { + v14 = v13 + 2 * v29; + v15 = v13 + 2 * v26; + *((_DWORD *)this + 7) = v14; + *((_DWORD *)this + 5) = v15; + *((_DWORD *)this + 6) = 2 * v28 + v15; + } + std::wstringbuf::_M_sync(v19, (_DWORD *)a2[10], 0, 0); + result = this + 4; + *((_DWORD *)this + 46) = v21; + return result; +} +// 4EFFA2: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4EFD8A: variable 'v17' is possibly undefined +// 4EFEE4: variable 'v18' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 538284: using guessed type int (*off_538284)(); +// 538298: using guessed type int (*off_538298[2])(); + +//----- (004F0090) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int a2, int a3) +{ + int v3; // esi + int v5; // eax + wchar_t *v6; // edx + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 64); + std::ios_base::ios_base((_DWORD *)this + 16); + this[182] = 0; + *((_DWORD *)this + 44) = 0; + *((_WORD *)this + 90) = 0; + *((_DWORD *)this + 46) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *(_DWORD *)this = &unk_533998; + *((_DWORD *)this + 16) = &unk_5339AC; + std::wios::init(v3, 0); + *(_DWORD *)this = &off_538284; + *((_DWORD *)this + 16) = off_538298; + *((_DWORD *)this + 1) = &off_538A88; + *((_DWORD *)this + 2) = 0; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + std::locale::locale((_DWORD *)this + 8); + *((_DWORD *)this + 1) = &off_537FA8; + *((_DWORD *)this + 9) = 0; + v5 = *(_DWORD *)(a2 + 4); + v6 = *(wchar_t **)a2; + LOBYTE(v9) = 0; + *((_DWORD *)this + 10) = this + 48; + std::wstring::_M_construct((wchar_t **)this + 10, v6, (int)&v6[v5], v9); + *((_DWORD *)this + 9) = a3 | 0x10; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 11); + std::wstringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v7); + return std::wios::init(v3, (int)(this + 4)); +} +// 4F018D: variable 'v9' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 538284: using guessed type int (*off_538284)(); +// 538298: using guessed type int (*off_538298[2])(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004F0220) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 16); + std::ios_base::ios_base(this + 16); + *((_BYTE *)this + 182) = 0; + this[44] = 0; + *((_WORD *)this + 90) = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + this[49] = 0; + *this = &unk_533998; + this[16] = &unk_5339AC; + std::wios::init(v2, 0); + *this = &off_538284; + this[16] = off_538298; + this[1] = &off_538A88; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + this[1] = &off_537FA8; + this[11] = 0; + this[9] = a2 | 0x10; + this[10] = this + 12; + *((_WORD *)this + 24) = 0; + return std::wios::init(v2, (int)(this + 1)); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538284: using guessed type int (*off_538284)(); +// 538298: using guessed type int (*off_538298[2])(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004F0350) -------------------------------------------------------- +BOOL __fastcall std::wostringstream::basic_ostringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 64; + std::ios_base::ios_base((_DWORD *)(a1 + 64)); + *(_BYTE *)(a1 + 182) = 0; + *(_DWORD *)(a1 + 176) = 0; + *(_WORD *)(a1 + 180) = 0; + *(_DWORD *)(a1 + 184) = 0; + *(_DWORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)a1 = &unk_533998; + *(_DWORD *)(a1 + 64) = &unk_5339AC; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_538284; + *(_DWORD *)(a1 + 64) = off_538298; + *(_DWORD *)(a1 + 4) = &off_538A88; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + std::locale::locale((_DWORD *)(a1 + 32)); + *(_DWORD *)(a1 + 40) = a1 + 48; + *(_DWORD *)(a1 + 4) = &off_537FA8; + *(_DWORD *)(a1 + 36) = 16; + *(_DWORD *)(a1 + 44) = 0; + *(_WORD *)(a1 + 48) = 0; + return std::wios::init(v1, a1 + 4); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538284: using guessed type int (*off_538284)(); +// 538298: using guessed type int (*off_538298[2])(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004F0480) -------------------------------------------------------- +int __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3) +{ + int v3; // eax + int v4; // esi + int v5; // edx + char v6; // al + int v7; // edx + int v8; // eax + int v9; // edx + unsigned int v10; // eax + int v11; // ecx + unsigned int v12; // esi + int v13; // eax + int v14; // eax + int v15; // edx + int v16; // ecx + int v17; // edx + int result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + int v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + int v24; // [esp+40h] [ebp-48h] + int v25; // [esp+44h] [ebp-44h] + int v26; // [esp+48h] [ebp-40h] + int v27; // [esp+50h] [ebp-38h] + int v28; // [esp+58h] [ebp-30h] + int v29; // [esp+5Ch] [ebp-2Ch] + __int64 v30; // [esp+60h] [ebp-28h] + int v31; // [esp+68h] [ebp-20h] + + v3 = a2[1]; + *(_DWORD *)this = v3; + v4 = (int)&this[*(_DWORD *)(v3 - 12)]; + *(_DWORD *)v4 = a2[2]; + v21 = a3 + *(_DWORD *)(*(_DWORD *)a3 - 12); + std::ios_base::_M_move(v4, (std::ios_base *)v21, v19); + std::wios::_M_cache_locale((_DWORD *)v4, v4 + 108); + *(_DWORD *)(v4 + 120) = 0; + v5 = *(_DWORD *)(v21 + 112); + *(_DWORD *)(v21 + 112) = 0; + *(_DWORD *)(v4 + 112) = v5; + v6 = *(_BYTE *)(v21 + 118); + *(_WORD *)(v4 + 116) = *(_WORD *)(v21 + 116); + *(_BYTE *)(v4 + 118) = v6; + v7 = a2[3]; + v8 = *a2; + *(_DWORD *)this = *a2; + v24 = -1; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v7; + v22 = this + 4; + v25 = -1; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + LODWORD(v30) = -1; + v31 = -1; + v9 = *(_DWORD *)(a3 + 40); + v10 = *(_DWORD *)(a3 + 8); + if ( !v10 ) + { + v11 = *(_DWORD *)(a3 + 20); + if ( !v11 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v10 - v9) >> 1; + v25 = (int)(v10 - v9) >> 31; + v26 = (*(_DWORD *)(a3 + 12) - v9) >> 1; + v10 = *(_DWORD *)(a3 + 16); + v27 = (int)(v10 - v9) >> 1; + v11 = *(_DWORD *)(a3 + 20); + if ( v11 ) + { +LABEL_3: + v12 = *(_DWORD *)(a3 + 24); + v28 = (v11 - v9) >> 1; + v29 = (v11 - v9) >> 31; + v30 = (int)(v12 - v11) >> 1; + v31 = (*(_DWORD *)(a3 + 28) - v9) >> 1; + if ( v10 < v12 ) + v10 = *(_DWORD *)(a3 + 24); + } + if ( v10 ) + *(_DWORD *)(a3 + 44) = (int)(v10 - v9) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v22, a3 + 4, v20); + *((_DWORD *)this + 9) = *(_DWORD *)(a3 + 36); + *((_DWORD *)this + 1) = &off_537FA8; + *((_DWORD *)this + 10) = this + 48; + v13 = *(_DWORD *)(a3 + 40); + if ( v13 == a3 + 48 ) + { + wmemcpy((wchar_t *)this + 24, (const wchar_t *)(a3 + 48), 8u); + } + else + { + *((_DWORD *)this + 10) = v13; + *((_DWORD *)this + 12) = *(_DWORD *)(a3 + 48); + } + v14 = *(_DWORD *)(a3 + 44); + *(_DWORD *)(a3 + 40) = a3 + 48; + *(_DWORD *)(a3 + 44) = 0; + *((_DWORD *)this + 11) = v14; + *(_WORD *)(a3 + 48) = 0; + v15 = *((_DWORD *)this + 10); + if ( (v24 & v25) != -1 ) + { + *((_DWORD *)this + 2) = v15 + 2 * v24; + *((_DWORD *)this + 3) = v15 + 2 * v26; + *((_DWORD *)this + 4) = v15 + 2 * v27; + } + if ( (v28 & v29) != -1 ) + { + v16 = v15 + 2 * v31; + v17 = v15 + 2 * v28; + *((_DWORD *)this + 7) = v16; + *((_DWORD *)this + 5) = v17; + *((_DWORD *)this + 6) = 2 * v30 + v17; + } + std::wstringbuf::_M_sync((_DWORD *)(a3 + 4), *(_DWORD **)(a3 + 40), 0, 0); + result = *(_DWORD *)(*(_DWORD *)this - 12); + *(_DWORD *)&this[result + 120] = v22; + return result; +} +// 4F06BD: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4F04B3: variable 'v19' is possibly undefined +// 4F05FD: variable 'v20' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); + +//----- (004F07A0) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4) +{ + int v5; // eax + char *v6; // ecx + int v7; // eax + int v8; // ecx + int v9; // eax + wchar_t *v10; // edx + unsigned int v11; // eax + int v13; // [esp+8h] [ebp-30h] + + v5 = a2[1]; + *(_DWORD *)this = v5; + v6 = &this[*(_DWORD *)(v5 - 12)]; + *(_DWORD *)v6 = a2[2]; + std::wios::init((int)v6, 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + *((_DWORD *)this + 1) = &off_538A88; + *((_DWORD *)this + 2) = 0; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + std::locale::locale((_DWORD *)this + 8); + *((_DWORD *)this + 1) = &off_537FA8; + *((_DWORD *)this + 9) = 0; + v9 = *(_DWORD *)(a3 + 4); + v10 = *(wchar_t **)a3; + LOBYTE(v13) = 0; + *((_DWORD *)this + 10) = this + 48; + std::wstring::_M_construct((wchar_t **)this + 10, v10, (int)&v10[v9], v13); + *((_DWORD *)this + 9) = a4 | 0x10; + v11 = 0; + if ( (a4 & 3) != 0 ) + v11 = *((_DWORD *)this + 11); + std::wstringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v11); + return std::wios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 4)); +} +// 4F0851: variable 'v13' is possibly undefined +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004F08F0) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3) +{ + int v4; // edi + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + + v4 = (int)(this + 1); + v5 = a2[1]; + *this = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); + *v6 = a2[2]; + std::wios::init((int)v6, 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + this[1] = (int)&off_538A88; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + this[11] = 0; + this[1] = (int)&off_537FA8; + this[9] = a3 | 0x10; + this[10] = (int)(this + 12); + *((_WORD *)this + 24) = 0; + return std::wios::init((int)this + *(_DWORD *)(*this - 12), v4); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004F09D0) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // ecx + + v3 = (int)(this + 1); + v4 = a2[1]; + *this = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); + *v5 = a2[2]; + std::wios::init((int)v5, 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[1] = (int)&off_538A88; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + this[11] = 0; + this[10] = (int)(this + 12); + *((_WORD *)this + 24) = 0; + v8 = *this; + this[1] = (int)&off_537FA8; + v9 = *(_DWORD *)(v8 - 12); + this[9] = 16; + return std::wios::init((int)this + v9, v3); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004F0AB0) -------------------------------------------------------- +void __fastcall std::wostringstream::~wostringstream(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[10]; + *a1 = &off_538284; + a1[16] = off_538298; + a1[1] = &off_537FA8; + if ( v2 != a1 + 12 ) + operator delete(v2); + a1[1] = &off_538A88; + std::locale::~locale((_DWORD **)a1 + 8); + *a1 = &unk_533998; + a1[16] = &off_539484; + std::ios_base::~ios_base((int)(a1 + 16)); + operator delete(a1); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538284: using guessed type int (*off_538284)(); +// 538298: using guessed type int (*off_538298[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004F0B10) -------------------------------------------------------- +void __fastcall std::wostringstream::~wostringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 40); + *(_DWORD *)a1 = &off_538284; + *(_DWORD *)(a1 + 64) = off_538298; + *(_DWORD *)(a1 + 4) = &off_537FA8; + if ( v2 != (void *)(a1 + 48) ) + operator delete(v2); + *(_DWORD *)(a1 + 4) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_533998; + *(_DWORD *)(a1 + 64) = &off_539484; + std::ios_base::~ios_base(a1 + 64); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538284: using guessed type int (*off_538284)(); +// 538298: using guessed type int (*off_538298[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004F0B70) -------------------------------------------------------- +int __thiscall std::wostringstream::~wostringstream(int *this, int *a2) +{ + int v3; // eax + char *v4; // eax + int v5; // eax + int result; // eax + + v3 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + v4 = (char *)this[10]; + this[1] = (int)&off_537FA8; + if ( v4 != (char *)(this + 12) ) + operator delete(v4); + this[1] = (int)&off_538A88; + std::locale::~locale((_DWORD **)this + 8); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(int *)((char *)this + result) = a2[2]; + return result; +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004F0BD0) -------------------------------------------------------- +char *__thiscall std::wostringstream::operator=(char *this, int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + unsigned int v7; // eax + int v8; // ecx + unsigned int v9; // esi + int v10; // ecx + wchar_t *v11; // eax + wchar_t *v12; // edx + int v13; // esi + _DWORD *v14; // ecx + int v15; // ebx + int v16; // edx + int v17; // edi + __int64 v18; // rax + int v19; // edi + int v20; // ebx + int v21; // edi + int v23; // ecx + std::ios_base *v24; // [esp+4h] [ebp-74h] + const std::locale *v25; // [esp+4h] [ebp-74h] + const std::locale *v26; // [esp+4h] [ebp-74h] + int v27; // [esp+14h] [ebp-64h] + _DWORD *v29; // [esp+20h] [ebp-58h] BYREF + _DWORD *v30; // [esp+24h] [ebp-54h] BYREF + _DWORD *v31; // [esp+28h] [ebp-50h] + int v32; // [esp+30h] [ebp-48h] + int v33; // [esp+34h] [ebp-44h] + int v34; // [esp+38h] [ebp-40h] + int v35; // [esp+3Ch] [ebp-3Ch] + __int64 v36; // [esp+40h] [ebp-38h] + int v37; // [esp+48h] [ebp-30h] + int v38; // [esp+4Ch] [ebp-2Ch] + __int64 v39; // [esp+50h] [ebp-28h] + int v40; // [esp+58h] [ebp-20h] + int v41; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v24); + std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v32 = -1; + v33 = -1; + *(_DWORD *)(v2 + 112) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_DWORD *)(v3 + 112) = v4; + LOWORD(v4) = *(_WORD *)(v2 + 116); + *(_WORD *)(v2 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 118); + *(_WORD *)(v3 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 118); + v34 = -1; + *(_BYTE *)(v2 + 118) = v4; + *(_BYTE *)(v3 + 118) = v5; + v35 = -1; + v6 = *(_DWORD *)(a2 + 40); + v31 = this + 4; + v7 = *(_DWORD *)(a2 + 8); + v36 = -1LL; + v37 = -1; + v38 = -1; + v39 = -1LL; + v40 = -1; + v41 = -1; + if ( !v7 ) + { + v8 = *(_DWORD *)(a2 + 20); + if ( !v8 ) + goto LABEL_7; + goto LABEL_3; + } + v32 = (int)(v7 - v6) >> 1; + v33 = (int)(v7 - v6) >> 31; + v34 = (*(_DWORD *)(a2 + 12) - v6) >> 1; + v35 = v34 >> 31; + v7 = *(_DWORD *)(a2 + 16); + v36 = (int)(v7 - v6) >> 1; + v8 = *(_DWORD *)(a2 + 20); + if ( v8 ) + { +LABEL_3: + v37 = (v8 - v6) >> 1; + v38 = (v8 - v6) >> 31; + v9 = *(_DWORD *)(a2 + 24); + v39 = (int)(v9 - v8) >> 1; + v40 = (*(_DWORD *)(a2 + 28) - v6) >> 1; + v41 = v40 >> 31; + if ( v7 < v9 ) + v7 = v9; + } + if ( v7 ) + *(_DWORD *)(a2 + 44) = (int)(v7 - v6) >> 1; +LABEL_7: + std::wstreambuf::operator=((volatile signed __int32 **)this + 1, a2 + 4); + std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)(a2 + 32), v25); + std::locale::locale((volatile signed __int32 **)&v29, (volatile signed __int32 **)this + 8, v26); + std::locale::operator=((volatile signed __int32 **)this + 8, (volatile signed __int32 **)&v30); + std::locale::~locale(&v29); + std::locale::~locale(&v30); + v10 = *(_DWORD *)(a2 + 40); + *((_DWORD *)this + 9) = *(_DWORD *)(a2 + 36); + v11 = (wchar_t *)*((_DWORD *)this + 10); + v12 = (wchar_t *)(a2 + 48); + if ( v10 == a2 + 48 ) + { + v23 = *(_DWORD *)(a2 + 44); + if ( v23 ) + { + if ( v23 == 1 ) + { + *v11 = *(_WORD *)(a2 + 48); + } + else + { + wmemcpy(v11, (const wchar_t *)(a2 + 48), *(_DWORD *)(a2 + 44)); + v23 = *(_DWORD *)(a2 + 44); + v12 = *(wchar_t **)(a2 + 40); + v11 = (wchar_t *)*((_DWORD *)this + 10); + } + } + *((_DWORD *)this + 11) = v23; + v11[v23] = 0; + v11 = v12; + } + else + { + v27 = *(_DWORD *)(a2 + 44); + if ( v11 == (wchar_t *)(this + 48) ) + { + *((_DWORD *)this + 10) = v10; + *((_DWORD *)this + 11) = v27; + *((_DWORD *)this + 12) = *(_DWORD *)(a2 + 48); + } + else + { + v13 = *((_DWORD *)this + 12); + *((_DWORD *)this + 10) = v10; + *((_DWORD *)this + 11) = v27; + *((_DWORD *)this + 12) = *(_DWORD *)(a2 + 48); + if ( v11 ) + { + *(_DWORD *)(a2 + 40) = v11; + *(_DWORD *)(a2 + 48) = v13; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 40) = v12; + v11 = (wchar_t *)(a2 + 48); + } +LABEL_11: + *(_DWORD *)(a2 + 44) = 0; + *v11 = 0; + std::wstringbuf::_M_sync((_DWORD *)(a2 + 4), v11, 0, 0); + v14 = v31; + v15 = v31[9]; + if ( (v32 & v33) != -1 ) + { + v16 = v36; + v17 = v34; + v31[1] = v15 + 2 * v32; + v14[2] = v15 + 2 * v17; + v14[3] = v15 + 2 * v16; + } + if ( (v38 & v37) != -1 ) + { + v18 = v39; + v19 = v15 + 2 * v40; + v20 = v15 + 2 * v37; + v14[6] = v19; + v14[4] = v20; + if ( v18 > 0x7FFFFFFF ) + { + v21 = v20 - 2; + do + { + v20 = v21; + v18 -= 0x7FFFFFFFLL; + v21 -= 2; + } + while ( v18 > 0x7FFFFFFF ); + } + v14[5] = v20 + 2 * v18; + } + return this; +} +// 4F0BF0: variable 'v24' is possibly undefined +// 4F0D4E: variable 'v25' is possibly undefined +// 4F0D62: variable 'v26' is possibly undefined + +//----- (004F0F50) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_5382A8; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004F0F80) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_5382A8; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004F0FC0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_5382A8; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004F0FF0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_5382A8; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004F1030) -------------------------------------------------------- +void __fastcall std::collate::~collate(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5382A8; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1049: variable 'v2' is possibly undefined +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004F1060) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382A8; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F1069: variable 'v1' is possibly undefined +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004F1090) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382A8; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F1099: variable 'v1' is possibly undefined +// 5382A8: using guessed type int (*off_5382A8)(); + +//----- (004F10C0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_5382C4; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004F10F0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_5382C4; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004F1130) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_5382C4; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004F1160) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_5382C4; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004F11A0) -------------------------------------------------------- +void __fastcall std::collate::~collate(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5382C4; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F11B9: variable 'v2' is possibly undefined +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004F11D0) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382C4; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F11D9: variable 'v1' is possibly undefined +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004F1200) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382C4; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F1209: variable 'v1' is possibly undefined +// 5382C4: using guessed type int (*off_5382C4)(); + +//----- (004F1230) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_5382E0; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004F1270) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_5382E0; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004F12B0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_5382E0; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004F12F0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_5382E0; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004F1330) -------------------------------------------------------- +void __fastcall std::messages::~messages(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5382E0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1349: variable 'v2' is possibly undefined +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004F1360) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382E0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F1369: variable 'v1' is possibly undefined +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004F1390) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382E0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F1399: variable 'v1' is possibly undefined +// 5382E0: using guessed type int (*off_5382E0)(); + +//----- (004F13C0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_5382FC; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004F1400) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_5382FC; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004F1440) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_5382FC; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004F1480) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_5382FC; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004F14C0) -------------------------------------------------------- +void __fastcall std::messages::~messages(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5382FC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F14D9: variable 'v2' is possibly undefined +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004F14F0) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382FC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F14F9: variable 'v1' is possibly undefined +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004F1520) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5382FC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F1529: variable 'v1' is possibly undefined +// 5382FC: using guessed type int (*off_5382FC)(); + +//----- (004F1550) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) +{ + _DWORD *v3; // eax + char *v4; // ecx + int i; // eax + char *v6; // esi + int j; // eax + _DWORD *result; // eax + void (__cdecl *v9)(void *); // [esp+4h] [ebp-18h] + + v3 = (_DWORD *)this[2]; + if ( !v3 ) + { + v3 = operator new((struct type_info *)0x68, v9); + v3[1] = 0; + *v3 = &off_538BD4; + v3[2] = 0; + v3[3] = 0; + *((_BYTE *)v3 + 16) = 0; + v3[5] = 0; + v3[6] = 0; + v3[7] = 0; + v3[8] = 0; + *((_WORD *)v3 + 18) = 0; + *((_BYTE *)v3 + 100) = 0; + this[2] = v3; + } + v3[2] = &unk_52F144; + v4 = std::__num_base::_S_atoms_out[0]; + v3[3] = 0; + *((_BYTE *)v3 + 16) = 0; + *((_BYTE *)v3 + 36) = 46; + *(_BYTE *)(this[2] + 37) = 44; + for ( i = 0; i != 36; ++i ) + *(_BYTE *)(this[2] + i + 38) = v4[i]; + v6 = std::__num_base::_S_atoms_in[0]; + for ( j = 0; j != 26; ++j ) + *(_BYTE *)(this[2] + j + 74) = v6[j]; + result = (_DWORD *)this[2]; + result[5] = "true"; + result[6] = 4; + result[7] = "false"; + result[8] = 5; + return result; +} +// 4F15F2: variable 'v9' is possibly undefined +// 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (004F1650) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_538318; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 538318: using guessed type int (*off_538318)(); + +//----- (004F16A0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_538318; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 538318: using guessed type int (*off_538318)(); + +//----- (004F16F0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_538318; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 538318: using guessed type int (*off_538318)(); + +//----- (004F1740) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_538318; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 538318: using guessed type int (*off_538318)(); + +//----- (004F1790) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_538318; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 538318: using guessed type int (*off_538318)(); + +//----- (004F17E0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_538318; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 538318: using guessed type int (*off_538318)(); + +//----- (004F1830) -------------------------------------------------------- +void __fastcall std::numpunct::~numpunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4F1837: variable 'v2' is possibly undefined + +//----- (004F1860) -------------------------------------------------------- +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_538318; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4F1867: variable 'v1' is possibly undefined +// 538318: using guessed type int (*off_538318)(); + +//----- (004F1890) -------------------------------------------------------- +int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) +{ + _DWORD *v2; // edx + char *v3; // ebx + int v4; // eax + char *v5; // ebx + int result; // eax + _DWORD *v7; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-28h] + + v2 = (_DWORD *)this[2]; + if ( !v2 ) + { + v7 = operator new((struct type_info *)0xA8, v8); + v7[1] = 0; + v2 = v7; + *v7 = &off_538BE4; + v7[2] = 0; + v7[3] = 0; + *((_BYTE *)v7 + 16) = 0; + v7[5] = 0; + v7[6] = 0; + v7[7] = 0; + v7[8] = 0; + v7[9] = 0; + *((_BYTE *)v7 + 164) = 0; + this[2] = v7; + } + v2[2] = &unk_52F144; + v3 = std::__num_base::_S_atoms_out[0]; + v4 = 0; + v2[3] = 0; + *((_BYTE *)v2 + 16) = 0; + v2[9] = 2883630; + do + { + *((_WORD *)v2 + v4 + 20) = v3[v4]; + ++v4; + } + while ( v4 != 36 ); + v5 = std::__num_base::_S_atoms_in[0]; + for ( result = 0; result != 26; ++result ) + *((_WORD *)v2 + result + 56) = v5[result]; + v2[5] = &off_52F150; + v2[6] = 4; + v2[7] = &off_52F15A; + v2[8] = 5; + return result; +} +// 4F1920: variable 'v8' is possibly undefined +// 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; +// 52F150: using guessed type void *off_52F150; +// 52F15A: using guessed type void *off_52F15A; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (004F1980) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_53833C; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004F19D0) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_53833C; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004F1A20) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_53833C; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004F1A70) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_53833C; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004F1AC0) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_53833C; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004F1B10) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_53833C; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004F1B60) -------------------------------------------------------- +void __fastcall std::numpunct::~numpunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4F1B67: variable 'v2' is possibly undefined + +//----- (004F1B90) -------------------------------------------------------- +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_53833C; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4F1B97: variable 'v1' is possibly undefined +// 53833C: using guessed type int (*off_53833C)(); + +//----- (004F1BC0) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538360; + result = a2 != 0; + this[1] = result; + return result; +} +// 538360: using guessed type int (*off_538360)(); + +//----- (004F1BE0) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538360; + result = a2 != 0; + this[1] = result; + return result; +} +// 538360: using guessed type int (*off_538360)(); + +//----- (004F1C00) -------------------------------------------------------- +void __fastcall std::time_get>::~time_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538360; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1C0C: variable 'v2' is possibly undefined +// 538360: using guessed type int (*off_538360)(); + +//----- (004F1C20) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538360; + std::locale::facet::~facet(a1); +} +// 4F1C20: variable 'v1' is possibly undefined +// 538360: using guessed type int (*off_538360)(); + +//----- (004F1C30) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538360; + std::locale::facet::~facet(a1); +} +// 4F1C30: variable 'v1' is possibly undefined +// 538360: using guessed type int (*off_538360)(); + +//----- (004F1C40) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_53838C; + result = a2 != 0; + this[1] = result; + return result; +} +// 53838C: using guessed type int (*off_53838C)(); + +//----- (004F1C60) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_53838C; + result = a2 != 0; + this[1] = result; + return result; +} +// 53838C: using guessed type int (*off_53838C)(); + +//----- (004F1C80) -------------------------------------------------------- +void __fastcall std::time_get>::~time_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_53838C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1C8C: variable 'v2' is possibly undefined +// 53838C: using guessed type int (*off_53838C)(); + +//----- (004F1CA0) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53838C; + std::locale::facet::~facet(a1); +} +// 4F1CA0: variable 'v1' is possibly undefined +// 53838C: using guessed type int (*off_53838C)(); + +//----- (004F1CB0) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53838C; + std::locale::facet::~facet(a1); +} +// 4F1CB0: variable 'v1' is possibly undefined +// 53838C: using guessed type int (*off_53838C)(); + +//----- (004F1CC0) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5383B8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5383B8: using guessed type int (*off_5383B8)(); + +//----- (004F1CE0) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5383B8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5383B8: using guessed type int (*off_5383B8)(); + +//----- (004F1D00) -------------------------------------------------------- +void __fastcall std::money_get>::~money_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5383B8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1D0C: variable 'v2' is possibly undefined +// 5383B8: using guessed type int (*off_5383B8)(); + +//----- (004F1D20) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5383B8; + std::locale::facet::~facet(a1); +} +// 4F1D20: variable 'v1' is possibly undefined +// 5383B8: using guessed type int (*off_5383B8)(); + +//----- (004F1D30) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5383B8; + std::locale::facet::~facet(a1); +} +// 4F1D30: variable 'v1' is possibly undefined +// 5383B8: using guessed type int (*off_5383B8)(); + +//----- (004F1D40) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5383D0; + result = a2 != 0; + this[1] = result; + return result; +} +// 5383D0: using guessed type int (*off_5383D0)(); + +//----- (004F1D60) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5383D0; + result = a2 != 0; + this[1] = result; + return result; +} +// 5383D0: using guessed type int (*off_5383D0)(); + +//----- (004F1D80) -------------------------------------------------------- +void __fastcall std::money_get>::~money_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5383D0; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1D8C: variable 'v2' is possibly undefined +// 5383D0: using guessed type int (*off_5383D0)(); + +//----- (004F1DA0) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5383D0; + std::locale::facet::~facet(a1); +} +// 4F1DA0: variable 'v1' is possibly undefined +// 5383D0: using guessed type int (*off_5383D0)(); + +//----- (004F1DB0) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5383D0; + std::locale::facet::~facet(a1); +} +// 4F1DB0: variable 'v1' is possibly undefined +// 5383D0: using guessed type int (*off_5383D0)(); + +//----- (004F1DC0) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5383E8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5383E8: using guessed type int (*off_5383E8)(); + +//----- (004F1DE0) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5383E8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5383E8: using guessed type int (*off_5383E8)(); + +//----- (004F1E00) -------------------------------------------------------- +void __fastcall std::money_put>::~money_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5383E8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1E0C: variable 'v2' is possibly undefined +// 5383E8: using guessed type int (*off_5383E8)(); + +//----- (004F1E20) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5383E8; + std::locale::facet::~facet(a1); +} +// 4F1E20: variable 'v1' is possibly undefined +// 5383E8: using guessed type int (*off_5383E8)(); + +//----- (004F1E30) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5383E8; + std::locale::facet::~facet(a1); +} +// 4F1E30: variable 'v1' is possibly undefined +// 5383E8: using guessed type int (*off_5383E8)(); + +//----- (004F1E40) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538400; + result = a2 != 0; + this[1] = result; + return result; +} +// 538400: using guessed type int (*off_538400)(); + +//----- (004F1E60) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_538400; + result = a2 != 0; + this[1] = result; + return result; +} +// 538400: using guessed type int (*off_538400)(); + +//----- (004F1E80) -------------------------------------------------------- +void __fastcall std::money_put>::~money_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_538400; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1E8C: variable 'v2' is possibly undefined +// 538400: using guessed type int (*off_538400)(); + +//----- (004F1EA0) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538400; + std::locale::facet::~facet(a1); +} +// 4F1EA0: variable 'v1' is possibly undefined +// 538400: using guessed type int (*off_538400)(); + +//----- (004F1EB0) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_538400; + std::locale::facet::~facet(a1); +} +// 4F1EB0: variable 'v1' is possibly undefined +// 538400: using guessed type int (*off_538400)(); + +//----- (004F1EC0) -------------------------------------------------------- +void **__cdecl std::to_string(void **this, unsigned int a2) +{ + __gnu_cxx::__to_xstring( + this, + (int (__cdecl *)(unsigned __int8 *, int, int, char *))vsnprintf, + 16, + 5356005, + a2); + return this; +} + +//----- (004F1F00) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538F30; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1F0C: variable 'v2' is possibly undefined + +//----- (004F1F20) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538F30; + std::locale::facet::~facet(a1); +} +// 4F1F20: variable 'v1' is possibly undefined + +//----- (004F1F30) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538F5C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1F3C: variable 'v2' is possibly undefined + +//----- (004F1F50) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538F5C; + std::locale::facet::~facet(a1); +} +// 4F1F50: variable 'v1' is possibly undefined + +//----- (004F1F60) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538F88; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1F6C: variable 'v2' is possibly undefined + +//----- (004F1F80) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538F88; + std::locale::facet::~facet(a1); +} +// 4F1F80: variable 'v1' is possibly undefined + +//----- (004F1F90) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_538FB4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F1F9C: variable 'v2' is possibly undefined + +//----- (004F1FB0) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_538FB4; + std::locale::facet::~facet(a1); +} +// 4F1FB0: variable 'v1' is possibly undefined + +//----- (004F1FC0) -------------------------------------------------------- +int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_5391DC; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 5391DC: using guessed type int (*off_5391DC)(); + +//----- (004F1FF0) -------------------------------------------------------- +int __thiscall std::codecvt::codecvt(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_5391DC; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 5391DC: using guessed type int (*off_5391DC)(); + +//----- (004F2030) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4F2037: variable 'v2' is possibly undefined + +//----- (004F2060) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_5391DC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + *v2 = &unk_538FE0; + std::locale::facet::~facet(a1); +} +// 4F2065: variable 'v1' is possibly undefined +// 5391DC: using guessed type int (*off_5391DC)(); + +//----- (004F20A0) -------------------------------------------------------- +int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_539208; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 539208: using guessed type int (*off_539208)(); + +//----- (004F20D0) -------------------------------------------------------- +int __thiscall std::codecvt::codecvt(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_539208; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539208: using guessed type int (*off_539208)(); + +//----- (004F2110) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4F2117: variable 'v2' is possibly undefined + +//----- (004F2140) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_539208; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + *v2 = &unk_53900C; + std::locale::facet::~facet(a1); +} +// 4F2145: variable 'v1' is possibly undefined +// 539208: using guessed type int (*off_539208)(); + +//----- (004F2180) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_539234; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 539234: using guessed type int (*off_539234)(); + +//----- (004F21B0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_539234; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539234: using guessed type int (*off_539234)(); + +//----- (004F21F0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_539234; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 539234: using guessed type int (*off_539234)(); + +//----- (004F2220) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_539234; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539234: using guessed type int (*off_539234)(); + +//----- (004F2260) -------------------------------------------------------- +void __fastcall std::collate::~collate(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539234; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F2279: variable 'v2' is possibly undefined +// 539234: using guessed type int (*off_539234)(); + +//----- (004F2290) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539234; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F2299: variable 'v1' is possibly undefined +// 539234: using guessed type int (*off_539234)(); + +//----- (004F22C0) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539234; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F22C9: variable 'v1' is possibly undefined +// 539234: using guessed type int (*off_539234)(); + +//----- (004F22F0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_539250; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 539250: using guessed type int (*off_539250)(); + +//----- (004F2320) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_539250; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539250: using guessed type int (*off_539250)(); + +//----- (004F2360) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_539250; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 539250: using guessed type int (*off_539250)(); + +//----- (004F2390) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_539250; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539250: using guessed type int (*off_539250)(); + +//----- (004F23D0) -------------------------------------------------------- +void __fastcall std::collate::~collate(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539250; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F23E9: variable 'v2' is possibly undefined +// 539250: using guessed type int (*off_539250)(); + +//----- (004F2400) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539250; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F2409: variable 'v1' is possibly undefined +// 539250: using guessed type int (*off_539250)(); + +//----- (004F2430) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539250; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F2439: variable 'v1' is possibly undefined +// 539250: using guessed type int (*off_539250)(); + +//----- (004F2460) -------------------------------------------------------- +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_53926C; + result = a2 != 0; + this[1] = result; + return result; +} +// 53926C: using guessed type int (*off_53926C)(); + +//----- (004F2480) -------------------------------------------------------- +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_53926C; + result = a2 != 0; + this[1] = result; + return result; +} +// 53926C: using guessed type int (*off_53926C)(); + +//----- (004F24A0) -------------------------------------------------------- +void __fastcall std::num_get>::~num_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_53926C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F24AC: variable 'v2' is possibly undefined +// 53926C: using guessed type int (*off_53926C)(); + +//----- (004F24C0) -------------------------------------------------------- +void __cdecl std::num_get>::~num_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53926C; + std::locale::facet::~facet(a1); +} +// 4F24C0: variable 'v1' is possibly undefined +// 53926C: using guessed type int (*off_53926C)(); + +//----- (004F24D0) -------------------------------------------------------- +void __cdecl std::num_get>::~num_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53926C; + std::locale::facet::~facet(a1); +} +// 4F24D0: variable 'v1' is possibly undefined +// 53926C: using guessed type int (*off_53926C)(); + +//----- (004F24E0) -------------------------------------------------------- +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5392A8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5392A8: using guessed type int (*off_5392A8)(); + +//----- (004F2500) -------------------------------------------------------- +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5392A8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5392A8: using guessed type int (*off_5392A8)(); + +//----- (004F2520) -------------------------------------------------------- +void __fastcall std::num_get>::~num_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5392A8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F252C: variable 'v2' is possibly undefined +// 5392A8: using guessed type int (*off_5392A8)(); + +//----- (004F2540) -------------------------------------------------------- +void __cdecl std::num_get>::~num_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5392A8; + std::locale::facet::~facet(a1); +} +// 4F2540: variable 'v1' is possibly undefined +// 5392A8: using guessed type int (*off_5392A8)(); + +//----- (004F2550) -------------------------------------------------------- +void __cdecl std::num_get>::~num_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5392A8; + std::locale::facet::~facet(a1); +} +// 4F2550: variable 'v1' is possibly undefined +// 5392A8: using guessed type int (*off_5392A8)(); + +//----- (004F2560) -------------------------------------------------------- +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5392E4; + result = a2 != 0; + this[1] = result; + return result; +} +// 5392E4: using guessed type int (*off_5392E4)(); + +//----- (004F2580) -------------------------------------------------------- +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5392E4; + result = a2 != 0; + this[1] = result; + return result; +} +// 5392E4: using guessed type int (*off_5392E4)(); + +//----- (004F25A0) -------------------------------------------------------- +void __fastcall std::num_put>::~num_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5392E4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F25AC: variable 'v2' is possibly undefined +// 5392E4: using guessed type int (*off_5392E4)(); + +//----- (004F25C0) -------------------------------------------------------- +void __cdecl std::num_put>::~num_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5392E4; + std::locale::facet::~facet(a1); +} +// 4F25C0: variable 'v1' is possibly undefined +// 5392E4: using guessed type int (*off_5392E4)(); + +//----- (004F25D0) -------------------------------------------------------- +void __cdecl std::num_put>::~num_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5392E4; + std::locale::facet::~facet(a1); +} +// 4F25D0: variable 'v1' is possibly undefined +// 5392E4: using guessed type int (*off_5392E4)(); + +//----- (004F25E0) -------------------------------------------------------- +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_539314; + result = a2 != 0; + this[1] = result; + return result; +} +// 539314: using guessed type int (*off_539314)(); + +//----- (004F2600) -------------------------------------------------------- +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_539314; + result = a2 != 0; + this[1] = result; + return result; +} +// 539314: using guessed type int (*off_539314)(); + +//----- (004F2620) -------------------------------------------------------- +void __fastcall std::num_put>::~num_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539314; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F262C: variable 'v2' is possibly undefined +// 539314: using guessed type int (*off_539314)(); + +//----- (004F2640) -------------------------------------------------------- +void __cdecl std::num_put>::~num_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539314; + std::locale::facet::~facet(a1); +} +// 4F2640: variable 'v1' is possibly undefined +// 539314: using guessed type int (*off_539314)(); + +//----- (004F2650) -------------------------------------------------------- +void __cdecl std::num_put>::~num_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539314; + std::locale::facet::~facet(a1); +} +// 4F2650: variable 'v1' is possibly undefined +// 539314: using guessed type int (*off_539314)(); + +//----- (004F2660) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F26E0) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree,std::less,std::allocator>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F27DC) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::less,std::allocator>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::less,std::allocator>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F2820) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F28A0) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F299C) -------------------------------------------------------- +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( + void *a1) +{ + void *v2; // edi + void *v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void **)a1 + 3)); + v2 = (void *)*((_DWORD *)a1 + 2); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)a1 + 11); + std::string::_M_dispose((void **)a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F29E8) -------------------------------------------------------- +void __stdcall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase( + void *a1) +{ + void *v2; // edi + void *v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(*((void **)a1 + 3)); + v2 = (void *)*((_DWORD *)a1 + 2); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)a1 + 11); + std::string::_M_dispose((void **)a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F2A34) -------------------------------------------------------- +void **__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + _DWORD *this, + int a2) +{ + void **v3; // ebx + void *v4; // edx + _DWORD *v5; // edi + _DWORD *v6; // edx + char v7; // al + _DWORD *v8; // ecx + int v9; // eax + _DWORD *v10; // edi + char v11; // al + char v13; // al + void (__cdecl *v14)(void *); // [esp+4h] [ebp-34h] + _DWORD *v15; // [esp+14h] [ebp-24h] + _DWORD *v16; // [esp+14h] [ebp-24h] + _DWORD *v17; // [esp+14h] [ebp-24h] + _DWORD *v18; // [esp+18h] [ebp-20h] + void **v19; // [esp+1Ch] [ebp-1Ch] + + v3 = (void **)operator new((struct type_info *)0x30, v14); + v19 = v3 + 4; + std::string::basic_string(v3 + 4, a2); + v4 = *(void **)(a2 + 28); + v5 = (_DWORD *)this[2]; + v3[10] = *(void **)(a2 + 24); + v3[11] = v4; + v6 = this + 1; + v18 = this + 1; + v7 = 1; + while ( v5 ) + { + v7 = std::operator<((int)v19, (int)(v5 + 4)); + if ( v7 ) + v8 = (_DWORD *)v5[2]; + else + v8 = (_DWORD *)v5[3]; + v6 = v5; + v5 = v8; + } + if ( v7 ) + { + if ( (_DWORD *)this[3] == v6 ) + goto LABEL_14; + v15 = v6; + v9 = std::_Rb_tree_decrement(v6); + v6 = v15; + v10 = (_DWORD *)v9; + } + else + { + v10 = v6; + } + v16 = v6; + v11 = std::operator<((int)(v10 + 4), (int)v19); + v6 = v16; + if ( !v11 ) + { + std::string::_M_dispose(v19); + operator delete(v3); + return (void **)v10; + } +LABEL_14: + v13 = 1; + if ( v18 != v6 ) + { + v17 = v6; + v13 = std::operator<((int)v19, (int)(v6 + 4)); + v6 = v17; + } + std::_Rb_tree_insert_and_rebalance(v13, v3, v6, v18); + ++this[5]; + return v3; +} +// 4F2A49: variable 'v14' is possibly undefined + +//----- (004F2B64) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F2BA8) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::equal_range( + _DWORD *this, + int a2) +{ + _DWORD *v2; // ebx + int i; // esi + int v4; // edi + char v5; // al + int v6; // ecx + int v8; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 1; + for ( i = this[2]; ; i = v4 ) + { + if ( !i ) + return (int)v2; + if ( (unsigned __int8)std::operator<(i + 16, a2) ) + { + v4 = *(_DWORD *)(i + 12); + i = (int)v2; + goto LABEL_5; + } + v5 = std::operator<(a2, i + 16); + v4 = *(_DWORD *)(i + 8); + if ( !v5 ) + break; +LABEL_5: + v2 = (_DWORD *)i; + } + v6 = *(_DWORD *)(i + 12); + while ( v6 ) + { + v8 = v6; + if ( (unsigned __int8)std::operator<(a2, v6 + 16) ) + v6 = *(_DWORD *)(v8 + 8); + else + v6 = *(_DWORD *)(v8 + 12); + } + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound( + v4, + i, + a2); +} + +//----- (004F2C40) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + _DWORD *this, + int a2, + _DWORD *a3, + _DWORD *a4) +{ + char v4; // al + _DWORD *v6; // ebx + _DWORD *result; // eax + + v4 = 1; + v6 = this + 1; + if ( !a2 && a3 != v6 ) + v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); + std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); + result = a4; + ++this[5]; + return result; +} + +//----- (004F2C9C) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + _DWORD *this, + char **a2) +{ + void **v2; // eax + int v3; // edi + void **v4; // ebx + int insert_unique_pos; // eax + _DWORD *v6; // edx + int v7; // esi + void (__cdecl *v9)(void *); // [esp+4h] [ebp-34h] + + v2 = (void **)operator new((struct type_info *)0x98, v9); + v3 = (int)(v2 + 4); + v4 = v2; + std::string::basic_string(v2 + 4, *a2); + WXML::DOMLib::Token::Token(v4 + 10, (int)(a2 + 1)); + insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + v3); + v7 = insert_unique_pos; + if ( v6 ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + this, + insert_unique_pos, + v6, + v4); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node(v4); + return (_DWORD *)v7; +} +// 4F2CB2: variable 'v9' is possibly undefined +// 4F2CE8: variable 'v6' is possibly undefined + +//----- (004F2D40) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F2DC0) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F2EBC) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + _DWORD *this, + int a2) +{ + _DWORD *v2; // esi + _DWORD *v3; // edi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + return v2; + return v3; +} + +//----- (004F2F1C) -------------------------------------------------------- +int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( + int a1) +{ + int result; // eax + int v2; // esi + int v3; // [esp+20h] [ebp+8h] + + for ( result = a1; result; result = v2 ) + { + v3 = result; + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(result + 12)); + v2 = *(_DWORD *)(v3 + 8); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_drop_node((void **)v3); + } + return result; +} + +//----- (004F2F58) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + _DWORD *this, + int a2, + _DWORD *a3, + _DWORD *a4) +{ + char v4; // al + _DWORD *v6; // ebx + _DWORD *result; // eax + + v4 = 1; + v6 = this + 1; + if ( !a2 && a3 != v6 ) + v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); + std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); + result = a4; + ++this[5]; + return result; +} + +//----- (004F2FB4) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F3034) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F3130) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::pair::~pair(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F3174) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F31F4) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F32F0) -------------------------------------------------------- +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( + void *a1) +{ + void *v2; // edi + void *v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void **)a1 + 3)); + v2 = (void *)*((_DWORD *)a1 + 2); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)a1 + 11); + std::string::_M_dispose((void **)a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F333C) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_insert_node( + _DWORD *this, + int a2, + _DWORD *a3, + _DWORD *a4) +{ + char v4; // al + _DWORD *v6; // ebx + _DWORD *result; // eax + + v4 = 1; + v6 = this + 1; + if ( !a2 && a3 != v6 ) + v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); + std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); + result = a4; + ++this[5]; + return result; +} + +//----- (004F3398) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F3418) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F3514) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase( + void *a1) +{ + void *v2; // edi + void *v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::allocator>>>,std::_Select1st,std::allocator>>>>,std::less,std::allocator,std::allocator>>>>>::_M_erase(*((void **)a1 + 3)); + v2 = (void *)*((_DWORD *)a1 + 2); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)a1 + 11); + std::string::_M_dispose((void **)a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F3560) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F35E0) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F36DC) -------------------------------------------------------- +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( + void **a1) +{ + void **v2; // esi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::vector::~vector(a1 + 10); + std::string::_M_dispose(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F3728) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F37A8) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F38A4) -------------------------------------------------------- +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( + void *a1) +{ + void *v2; // esi + void *v3; // [esp+0h] [ebp-38h] + + while ( a1 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void **)a1 + 3)); + v2 = (void *)*((_DWORD *)a1 + 2); + std::_Destroy_aux::__destroy(*((void ***)a1 + 10), *((char ***)a1 + 11)); + if ( *((_DWORD *)a1 + 10) ) + operator delete(*((void **)a1 + 10)); + std::string::_M_dispose((void **)a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F390C) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( + _DWORD *this, + int a2, + _DWORD *a3, + _DWORD *a4) +{ + char v4; // al + _DWORD *v6; // ebx + _DWORD *result; // eax + + v4 = 1; + v6 = this + 1; + if ( !a2 && a3 != v6 ) + v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); + std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); + result = a4; + ++this[5]; + return result; +} + +//----- (004F3968) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F39E8) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F3AE4) -------------------------------------------------------- +_DWORD *__stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( + int *a1, + int a2, + int a3) +{ + _DWORD *v3; // ebx + int v4; // eax + int *i; // edi + _DWORD *v6; // esi + int v7; // eax + _DWORD *v9; // [esp+1Ch] [ebp-1Ch] + + v3 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(a1); + v3[1] = a2; + v4 = a1[3]; + if ( v4 ) + v3[3] = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( + v4, + v3, + a3); + v9 = v3; + for ( i = (int *)a1[2]; i; i = (int *)i[2] ) + { + v6 = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_clone_node>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>(i); + v9[2] = v6; + v6[1] = v9; + v7 = i[3]; + if ( v7 ) + v6[3] = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( + v7, + v6, + a3); + v9 = v6; + } + return v3; +} + +//----- (004F3BA0) -------------------------------------------------------- +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( + void *a1) +{ + void *v2; // esi + int v3; // edx + void *v4; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void **)a1 + 3)); + v2 = (void *)*((_DWORD *)a1 + 2); + std::vector::~vector((void ***)a1 + 10, v3); + std::string::_M_dispose((void **)a1 + 4); + v4 = a1; + a1 = v2; + operator delete(v4); + } +} +// 4F3BC6: variable 'v3' is possibly undefined + +//----- (004F3BEC) -------------------------------------------------------- +int *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree( + _DWORD *this, + int a2) +{ + int v3; // edx + int *result; // eax + int *v5; // edx + int *v6; // ecx + int *v7; // edx + int *v8; // ecx + int v9; // edx + int v10[3]; // [esp+1Ch] [ebp-Ch] BYREF + + std::_Rb_tree_header::_Rb_tree_header(this + 1); + result = *(int **)(a2 + 8); + if ( result ) + { + v10[0] = (int)this; + result = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_copy>,std::_Select1st>>,std::less,std::allocator>>>::_Alloc_node>( + result, + v3, + (int)v10); + v5 = result; + do + { + v6 = v5; + v5 = (int *)v5[2]; + } + while ( v5 ); + this[3] = v6; + v7 = result; + do + { + v8 = v7; + v7 = (int *)v7[3]; + } + while ( v7 ); + v9 = *(_DWORD *)(a2 + 20); + this[4] = v8; + this[2] = result; + this[5] = v9; + } + return result; +} +// 4F3C1D: variable 'v3' is possibly undefined +// 4F3BEC: using guessed type int var_C[3]; + +//----- (004F3C54) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + _DWORD *this, + int a2, + _DWORD *a3, + _DWORD *a4) +{ + char v4; // al + _DWORD *v6; // ebx + _DWORD *result; // eax + + v4 = 1; + v6 = this + 1; + if ( !a2 && a3 != v6 ) + v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); + std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); + result = a4; + ++this[5]; + return result; +} + +//----- (004F3CB0) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F3D30) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F3E2C) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F3E70) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004F3EF0) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004F3FEC) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + _DWORD *this, + int a2) +{ + _DWORD *v2; // esi + _DWORD *v3; // edi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + return v2; + return v3; +} + +//----- (004F404C) -------------------------------------------------------- +int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( + int a1, + int a2, + int a3) +{ + int v3; // ebx + int v4; // eax + int i; // edi + int v6; // esi + int v7; // eax + int v9; // [esp+1Ch] [ebp-1Ch] + + v3 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); + *(_DWORD *)(v3 + 4) = a2; + v4 = *(_DWORD *)(a1 + 12); + if ( v4 ) + *(_DWORD *)(v3 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( + v4, + v3, + a3); + v9 = v3; + for ( i = *(_DWORD *)(a1 + 8); i; i = *(_DWORD *)(i + 8) ) + { + v6 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); + *(_DWORD *)(v9 + 8) = v6; + *(_DWORD *)(v6 + 4) = v9; + v7 = *(_DWORD *)(i + 12); + if ( v7 ) + *(_DWORD *)(v6 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( + v7, + v6, + a3); + v9 = v6; + } + return v3; +} +// 40306C: using guessed type int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); + +//----- (004F4108) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F414C) -------------------------------------------------------- +void **__thiscall std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_emplace_unique,std::string>>( + _DWORD *this, + _DWORD *a2) +{ + _DWORD *v3; // eax + _DWORD *v4; // edx + void **v5; // ebx + char *v6; // eax + void *v7; // ecx + void *v8; // eax + _DWORD *v9; // esi + _DWORD *v10; // edx + bool v11; // al + _DWORD *v12; // ecx + int v13; // eax + _DWORD *v14; // esi + bool v15; // al + bool v17; // al + void (__cdecl *v18)(void *); // [esp+4h] [ebp-34h] + _DWORD *v19; // [esp+10h] [ebp-28h] + _DWORD *v20; // [esp+10h] [ebp-28h] + _DWORD *v21; // [esp+14h] [ebp-24h] + _DWORD *v22; // [esp+18h] [ebp-20h] + int v23; // [esp+1Ch] [ebp-1Ch] + + v3 = operator new((struct type_info *)0x40, v18); + v4 = (_DWORD *)a2[2]; + v5 = (void **)v3; + v23 = (int)(v3 + 4); + v6 = (char *)(v3 + 5); + if ( v4 ) + { + v7 = (void *)a2[1]; + v5[6] = v4; + v5[5] = v7; + v5[7] = (void *)a2[3]; + v5[8] = (void *)a2[4]; + v4[1] = v6; + v8 = (void *)a2[5]; + a2[2] = 0; + v5[9] = v8; + a2[3] = a2 + 1; + a2[4] = a2 + 1; + a2[5] = 0; + } + else + { + v5[5] = 0; + v5[6] = 0; + v5[7] = v6; + v5[8] = v6; + v5[9] = 0; + } + std::string::basic_string(v5 + 10, a2 + 6); + v9 = (_DWORD *)this[2]; + v22 = this + 1; + v10 = this + 1; + v11 = 1; + while ( v9 ) + { + v11 = std::operator<(v23, (int)(v9 + 4)); + if ( v11 ) + v12 = (_DWORD *)v9[2]; + else + v12 = (_DWORD *)v9[3]; + v10 = v9; + v9 = v12; + } + if ( v11 ) + { + if ( (_DWORD *)this[3] == v10 ) + goto LABEL_16; + v19 = v10; + v13 = std::_Rb_tree_decrement(v10); + v10 = v19; + v14 = (_DWORD *)v13; + } + else + { + v14 = v10; + } + v20 = v10; + v15 = std::operator<((int)(v14 + 4), v23); + v10 = v20; + if ( !v15 ) + { + std::string::_M_dispose(v5 + 10); + std::_Rb_tree,std::less,std::allocator>::~_Rb_tree(v23); + operator delete(v5); + return (void **)v14; + } +LABEL_16: + v17 = 1; + if ( v22 != v10 ) + { + v21 = v10; + v17 = std::operator<(v23, (int)(v10 + 4)); + v10 = v21; + } + std::_Rb_tree_insert_and_rebalance(v17, v5, v10, v22); + ++this[5]; + return v5; +} +// 4F4161: variable 'v18' is possibly undefined + +//----- (004F42B8) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_erase( + void **a1) +{ + void **v2; // esi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::pair const,std::string>,std::_Select1st const,std::string>>,std::less>,std::allocator const,std::string>>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 10); + std::_Rb_tree,std::less,std::allocator>::~_Rb_tree((int)(a1 + 4)); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F4304) -------------------------------------------------------- +int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( + _DWORD *this, + _DWORD *a2) +{ + char v2; // dl + _DWORD *v3; // ebx + _DWORD *i; // eax + _DWORD *v5; // edi + int result; // eax + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + if ( *a2 >= i[4] ) + { + v5 = (_DWORD *)i[3]; + v2 = 0; + } + else + { + v5 = (_DWORD *)i[2]; + v2 = 1; + } + v3 = i; + } + if ( !v2 ) + { + result = (int)v3; +LABEL_11: + if ( *(_DWORD *)(result + 16) >= *a2 ) + return result; + return 0; + } + if ( (_DWORD *)this[3] != v3 ) + { + result = std::_Rb_tree_decrement(v3); + goto LABEL_11; + } + return 0; +} + +//----- (004F4364) -------------------------------------------------------- +int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int *a3) +{ + int v3; // edi + int result; // eax + int v5; // eax + int v6; // edx + _DWORD *v7; // [esp+1Ch] [ebp-1Ch] + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && *(_DWORD *)(this[4] + 16) < *a3 ) + return 0; + return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( + this, + a3); + } + v3 = *a3; + if ( *a3 >= a2[4] ) + { + if ( *a3 <= a2[4] ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v8 = this; + result = std::_Rb_tree_increment((int)a2); + this = v8; + if ( v3 < *(_DWORD *)(result + 16) ) + { + if ( !a2[3] ) + return 0; + return result; + } + return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v7 = this; + v5 = std::_Rb_tree_decrement(a2); + this = v7; + v6 = v5; + if ( v3 <= *(_DWORD *)(v5 + 16) ) + return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v6 + 12) ) + return 0; + return result; +} + +//----- (004F4404) -------------------------------------------------------- +void __stdcall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[7]); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F444C) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + _DWORD *this, + _DWORD *a2) +{ + char v2; // dl + _DWORD *v3; // ebx + _DWORD *i; // eax + _DWORD *v5; // edi + int result; // eax + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + if ( *a2 >= i[4] ) + { + v5 = (_DWORD *)i[3]; + v2 = 0; + } + else + { + v5 = (_DWORD *)i[2]; + v2 = 1; + } + v3 = i; + } + if ( !v2 ) + { + result = (int)v3; +LABEL_11: + if ( *(_DWORD *)(result + 16) >= *a2 ) + return result; + return 0; + } + if ( (_DWORD *)this[3] != v3 ) + { + result = std::_Rb_tree_decrement(v3); + goto LABEL_11; + } + return 0; +} + +//----- (004F44AC) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + unsigned int *a3) +{ + unsigned int v3; // edi + int result; // eax + int v5; // eax + int v6; // edx + _DWORD *v7; // [esp+1Ch] [ebp-1Ch] + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && *(_DWORD *)(this[4] + 16) < *a3 ) + return 0; + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + v3 = *a3; + if ( *a3 >= a2[4] ) + { + if ( *a3 <= a2[4] ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v8 = this; + result = std::_Rb_tree_increment((int)a2); + this = v8; + if ( v3 < *(_DWORD *)(result + 16) ) + { + if ( !a2[3] ) + return 0; + return result; + } + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v7 = this; + v5 = std::_Rb_tree_decrement(a2); + this = v7; + v6 = v5; + if ( v3 <= *(_DWORD *)(v5 + 16) ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v6 + 12) ) + return 0; + return result; +} + +//----- (004F454C) -------------------------------------------------------- +int __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( + int a1, + int a2, + int a3) +{ + int v3; // ebx + int v4; // eax + int i; // edi + int v6; // esi + int v7; // eax + int v9; // [esp+1Ch] [ebp-1Ch] + + v3 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); + *(_DWORD *)(v3 + 4) = a2; + v4 = *(_DWORD *)(a1 + 12); + if ( v4 ) + *(_DWORD *)(v3 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( + v4, + v3, + a3); + v9 = v3; + for ( i = *(_DWORD *)(a1 + 8); i; i = *(_DWORD *)(i + 8) ) + { + v6 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(); + *(_DWORD *)(v9 + 8) = v6; + *(_DWORD *)(v6 + 4) = v9; + v7 = *(_DWORD *)(i + 12); + if ( v7 ) + *(_DWORD *)(v6 + 12) = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_copy,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>( + v7, + v6, + a3); + v9 = v6; + } + return v3; +} +// 403000: using guessed type int std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_clone_node,std::_Select1st>,std::less,std::allocator>>::_Alloc_node>(void); + +//----- (004F4608) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 5); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004F464C) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( + _DWORD *this, + _DWORD *a2) +{ + _DWORD *v3; // ebx + _DWORD *v4; // eax + char v5; // cl + _DWORD *v6; // edx + int result; // eax + bool v8; // cl + _DWORD *v9; // edi + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + char v11; // [esp+1Bh] [ebp-1Dh] + _DWORD *v12; // [esp+1Ch] [ebp-1Ch] + _DWORD *v13; // [esp+1Ch] [ebp-1Ch] + + v3 = this + 1; + v4 = (_DWORD *)this[2]; + v12 = this + 1; + v5 = 1; + while ( v4 ) + { + if ( *a2 >= v4[4] ) + { + v6 = (_DWORD *)v4[3]; + v5 = 0; + } + else + { + v6 = (_DWORD *)v4[2]; + v5 = 1; + } + v3 = v4; + v4 = v6; + } + if ( !v5 ) + { + result = (int)v3; +LABEL_11: + if ( *(_DWORD *)(result + 16) >= *a2 ) + return result; + goto LABEL_12; + } + if ( (_DWORD *)this[3] != v3 ) + { + result = std::_Rb_tree_decrement(v3); + goto LABEL_11; + } +LABEL_12: + v8 = 1; + if ( v12 != v3 ) + v8 = *a2 < v3[4]; + v11 = v8; + v9 = v12; + v13 = operator new((struct type_info *)0x14, v10); + v13[4] = *a2; + std::_Rb_tree_insert_and_rebalance(v11, v13, v3, v9); + ++this[5]; + return (int)v13; +} +// 4F46BB: variable 'v10' is possibly undefined + +//----- (004F46F8) -------------------------------------------------------- +_DWORD *__stdcall std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>( + int *a1, + int a2, + int a3) +{ + _DWORD *v3; // ebx + int v4; // eax + int v5; // eax + int v6; // eax + int *i; // edi + _DWORD *v8; // esi + int v9; // eax + int v10; // eax + void (__cdecl *v12)(void *); // [esp+4h] [ebp-34h] + void (__cdecl *v13)(void *); // [esp+4h] [ebp-34h] + _DWORD *v14; // [esp+1Ch] [ebp-1Ch] + + v3 = operator new((struct type_info *)0x14, v12); + v4 = a1[4]; + v3[2] = 0; + v3[4] = v4; + v5 = *a1; + v3[3] = 0; + *v3 = v5; + v3[1] = a2; + v6 = a1[3]; + if ( v6 ) + v3[3] = std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>( + v6, + v3, + a3); + v14 = v3; + for ( i = (int *)a1[2]; i; i = (int *)i[2] ) + { + v8 = operator new((struct type_info *)0x14, v13); + v8[4] = i[4]; + v9 = *i; + v8[2] = 0; + *v8 = v9; + v8[3] = 0; + v14[2] = v8; + v8[1] = v14; + v10 = i[3]; + if ( v10 ) + v8[3] = std::_Rb_tree,std::less,std::allocator>::_M_copy,std::less,std::allocator>::_Alloc_node>( + v10, + v8, + a3); + v14 = v8; + } + return v3; +} +// 4F470E: variable 'v12' is possibly undefined +// 4F476B: variable 'v13' is possibly undefined + +//----- (004F47F4) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::less,std::allocator>::_M_erase( + void **a1) +{ + void **v2; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::less,std::allocator>::_M_erase(a1[3]); + v2 = a1; + a1 = (void **)a1[2]; + operator delete(v2); + } +} + +//----- (004F4830) -------------------------------------------------------- +void __fastcall std::bad_cast::~bad_cast(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539344; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 4F483C: variable 'v2' is possibly undefined +// 539344: using guessed type void (__cdecl *off_539344)(std::bad_cast *__hidden this); + +//----- (004F4860) -------------------------------------------------------- +void __cdecl std::bad_cast::~bad_cast(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539344; + std::exception::~exception(a1); +} +// 4F4860: variable 'v1' is possibly undefined +// 539344: using guessed type void (__cdecl *off_539344)(std::bad_cast *__hidden this); + +//----- (004F4870) -------------------------------------------------------- +int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, int this, char a3, bool a4) +{ + int *v5; // esi + char *v6; // eax + int v7; // ebp + _DWORD *v8; // eax + int v9; // edx + _DWORD *v10; // ebp + int *v11; // edi + int v12; // ebp + int *v13; // eax + int *v14; // ecx + int v15; // edi + int v16; // ebp + char *v17; // edx + int v18; // eax + int v20; // [esp+14h] [ebp-28h] + int v21; // [esp+18h] [ebp-24h] + int *v22; // [esp+1Ch] [ebp-20h] + + if ( (unsigned int)this > 0x7FFFFFFE ) + { + v17 = "ios_base::_M_grow_words is not valid"; + } + else + { + v5 = a1 + 9; + if ( this <= 7 ) + { + v20 = 8; +LABEL_22: + a1[26] = v5; + a1[25] = v20; + return &v5[2 * this]; + } + v6 = (char *)(this + 1); + v20 = this + 1; + if ( this + 1 > 0xFFFFFFF ) + std::ios_base::_M_grow_words(); + v7 = 8 * (_DWORD)v6; + v21 = operator new[](8 * (_DWORD)v6); + if ( v21 ) + { + v8 = (_DWORD *)v21; + v9 = v21; + v10 = (_DWORD *)(v21 + v7); + do + { + *v8 = 0; + v8 += 2; + *(v8 - 1) = 0; + } + while ( v10 != v8 ); + v11 = (int *)a1[26]; + v12 = a1[25]; + v13 = v11; + v14 = &v11[2 * v12]; + if ( v12 > 0 ) + { + v22 = (int *)a1[26]; + do + { + v15 = *v13; + v16 = v13[1]; + v13 += 2; + v9 += 8; + *(_DWORD *)(v9 - 8) = v15; + *(_DWORD *)(v9 - 4) = v16; + } + while ( v14 != v13 ); + v11 = v22; + } + if ( v5 != v11 ) + { + if ( v11 ) + operator delete[](v11); + } + v5 = (int *)v21; + goto LABEL_22; + } + v17 = "ios_base::_M_grow_words allocation failed"; + } + v18 = a1[5] | 1; + a1[5] = v18; + if ( (v18 & a1[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)v17); + if ( a3 ) + a1[8] = 0; + else + a1[7] = 0; + return a1 + 7; +} + +//----- (004F49C0) -------------------------------------------------------- +int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this) +{ + int v1; // esi + + v1 = (unsigned __int8)std::ios_base::Init::_S_synced_with_stdio; + if ( (_BYTE)this == 1 || !std::ios_base::Init::_S_synced_with_stdio ) + return (unsigned __int8)std::ios_base::Init::_S_synced_with_stdio; + std::ios_base::Init::Init(); + std::ios_base::Init::_S_synced_with_stdio = 0; + __gnu_internal::buf_cout_sync = &off_538A48; + std::locale::~locale((_DWORD **)&dword_51601C); + __gnu_internal::buf_cin_sync = &off_538A48; + std::locale::~locale((_DWORD **)&dword_515F9C); + __gnu_internal::buf_cerr_sync = &off_538A48; + std::locale::~locale((_DWORD **)&dword_515FDC); + __gnu_internal::buf_wcout_sync = &off_538A88; + std::locale::~locale((_DWORD **)&dword_5160DC); + __gnu_internal::buf_wcin_sync = &off_538A88; + std::locale::~locale((_DWORD **)&dword_51605C); + __gnu_internal::buf_wcerr_sync = &off_538A88; + std::locale::~locale((_DWORD **)&dword_51609C); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cout, &__iob[1], 16, 512); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cin, (FILE *)__iob[0]._ptr, 8, 512); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cerr, &__iob[2], 16, 512); + std::ios::rdbuf(dword_516844, (int)__gnu_internal::buf_cout); + std::ios::rdbuf(dword_516668, (int)__gnu_internal::buf_cin); + std::ios::rdbuf(&dword_516704, (int)__gnu_internal::buf_cerr); + std::ios::rdbuf(dword_5167A4, (int)__gnu_internal::buf_cerr); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcout, &__iob[1], 16, 512); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcin, (FILE *)__iob[0]._ptr, 8, 512); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcerr, &__iob[2], 16, 512); + std::wios::rdbuf(dword_516AC4, (int)__gnu_internal::buf_wcout); + std::wios::rdbuf(dword_5168E8, (int)__gnu_internal::buf_wcin); + std::wios::rdbuf(&dword_516984, (int)__gnu_internal::buf_wcerr); + std::wios::rdbuf(dword_516A24, (int)__gnu_internal::buf_wcerr); + std::ios_base::Init::~Init(); + return v1; +} +// 515F9C: using guessed type _DWORD dword_515F9C; +// 515FDC: using guessed type _DWORD dword_515FDC; +// 51601C: using guessed type _DWORD dword_51601C; +// 51605C: using guessed type _DWORD dword_51605C; +// 51609C: using guessed type _DWORD dword_51609C; +// 5160DC: using guessed type _DWORD dword_5160DC; +// 51661C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; +// 516668: using guessed type int dword_516668[28]; +// 516704: using guessed type int dword_516704; +// 5167A4: using guessed type int dword_5167A4[28]; +// 516844: using guessed type int dword_516844[28]; +// 5168E8: using guessed type int dword_5168E8[28]; +// 516984: using guessed type int dword_516984; +// 516A24: using guessed type int dword_516A24[28]; +// 516AC4: using guessed type int dword_516AC4[28]; +// 538A48: using guessed type int (*off_538A48)(); +// 538A88: using guessed type int (*off_538A88)(); + +//----- (004F4C00) -------------------------------------------------------- +int __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2) +{ + int **i; // ebx + int result; // eax + + for ( i = (int **)this[6]; i; i = (int **)*i ) + result = ((int (__cdecl *)(int, _DWORD *, int *))i[1])(a2, this, i[2]); + return result; +} +// 505C10: using guessed type int __stdcall std::ios_base::_M_call_callbacks(_DWORD); + +//----- (004F4C40) -------------------------------------------------------- +_DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3) +{ + _DWORD *result; // eax + int v5; // edx + void (__cdecl *v6)(void *); // [esp+4h] [ebp-18h] + + result = operator new((struct type_info *)0x10, v6); + v5 = this[6]; + result[3] = 0; + *result = v5; + this[6] = result; + result[1] = a2; + result[2] = a3; + return result; +} +// 4F4C4D: variable 'v6' is possibly undefined + +//----- (004F4C80) -------------------------------------------------------- +void __fastcall std::ios_base::_M_dispose_callbacks(int a1) +{ + volatile signed __int32 *v2; // eax + int v3; // edx + volatile signed __int32 *v4; // esi + + v2 = *(volatile signed __int32 **)(a1 + 24); + if ( v2 ) + { + while ( 1 ) + { + if ( _CRT_MT ) + { + if ( _InterlockedExchangeAdd(v2 + 3, 0xFFFFFFFF) ) + break; + } + else + { + v3 = *((_DWORD *)v2 + 3); + *((_DWORD *)v2 + 3) = v3 - 1; + if ( v3 ) + break; + } + v4 = (volatile signed __int32 *)*v2; + operator delete((void *)v2); + if ( !v4 ) + break; + v2 = v4; + } + } + *(_DWORD *)(a1 + 24) = 0; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004F4CE0) -------------------------------------------------------- +int std::ios_base::Init::Init() +{ + int result; // eax + + if ( _CRT_MT ) + { + result = _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 1u); + if ( result ) + return result; + } + else + { + result = std::ios_base::Init::_S_refcount++; + if ( result ) + return result; + } + std::ios_base::Init::_S_synced_with_stdio = 1; + __gnu_internal::buf_cout_sync = &off_538A48; + dword_516004 = 0; + dword_516008 = 0; + dword_51600C = 0; + dword_516010 = 0; + dword_516014 = 0; + dword_516018 = 0; + std::locale::locale(&dword_51601C); + __gnu_internal::buf_cout_sync = &off_5378F4; + dword_516024 = -1; + __gnu_internal::buf_cin_sync = &off_538A48; + dword_516020 = (int)&__iob[1]; + dword_515F84 = 0; + dword_515F88 = 0; + dword_515F8C = 0; + dword_515F90 = 0; + dword_515F94 = 0; + dword_515F98 = 0; + std::locale::locale(&dword_515F9C); + __gnu_internal::buf_cin_sync = &off_5378F4; + dword_515FA0 = (int)__iob[0]._ptr; + dword_515FA4 = -1; + __gnu_internal::buf_cerr_sync = &off_538A48; + dword_515FC4 = 0; + dword_515FC8 = 0; + dword_515FCC = 0; + dword_515FD0 = 0; + dword_515FD4 = 0; + dword_515FD8 = 0; + std::locale::locale(&dword_515FDC); + __gnu_internal::buf_cerr_sync = &off_5378F4; + dword_515FE0 = (int)&__iob[2]; + dword_515FE4 = -1; + std::ios_base::ios_base(dword_516844); + dword_5168B4 = 0; + word_5168B8 = 0; + dword_5168BC = 0; + dword_5168C0 = 0; + dword_5168C4 = 0; + dword_5168C8 = 0; + std::cout = (int)&off_5384A8; + dword_516844[0] = (int)off_5384BC; + std::ios::init((int)dword_516844, (int)&__gnu_internal::buf_cout_sync); + std::ios_base::ios_base(dword_516668); + word_5166DC = 0; + dword_5166D8 = 0; + dword_5166E0 = 0; + dword_5166E4 = 0; + dword_5166E8 = 0; + dword_5166EC = 0; + std::cin = (int)&off_538480; + dword_516668[0] = (int)off_538494; + dword_516664 = 0; + std::ios::init((int)dword_516668, (int)&__gnu_internal::buf_cin_sync); + std::ios_base::ios_base(&dword_516704); + dword_516774 = 0; + word_516778 = 0; + dword_51677C = 0; + dword_516780 = 0; + dword_516784 = 0; + dword_516788 = 0; + std::cerr = (int)&off_5384A8; + dword_516704 = (int)off_5384BC; + std::ios::init((int)&dword_516704, (int)&__gnu_internal::buf_cerr_sync); + std::ios_base::ios_base(dword_5167A4); + dword_516814 = 0; + word_516818 = 0; + dword_51681C = 0; + dword_516820 = 0; + dword_516824 = 0; + dword_516828 = 0; + std::clog = (int)&off_5384A8; + dword_5167A4[0] = (int)off_5384BC; + std::ios::init((int)dword_5167A4, (int)&__gnu_internal::buf_cerr_sync); + dword_516710 |= 0x2000u; + dword_5166D8 = (int)&std::cout; + dword_516774 = (int)&std::cout; + __gnu_internal::buf_wcout_sync = &off_538A88; + dword_5160C4 = 0; + dword_5160C8 = 0; + dword_5160CC = 0; + dword_5160D0 = 0; + dword_5160D4 = 0; + dword_5160D8 = 0; + std::locale::locale(&dword_5160DC); + __gnu_internal::buf_wcout_sync = &off_537934; + dword_5160E0 = (int)&__iob[1]; + word_5160E4 = -1; + __gnu_internal::buf_wcin_sync = &off_538A88; + dword_516044 = 0; + dword_516048 = 0; + dword_51604C = 0; + dword_516050 = 0; + dword_516054 = 0; + dword_516058 = 0; + std::locale::locale(&dword_51605C); + dword_516060 = (int)__iob[0]._ptr; + word_516064 = -1; + __gnu_internal::buf_wcin_sync = &off_537934; + __gnu_internal::buf_wcerr_sync = &off_538A88; + dword_516084 = 0; + dword_516088 = 0; + dword_51608C = 0; + dword_516090 = 0; + dword_516094 = 0; + dword_516098 = 0; + std::locale::locale(&dword_51609C); + __gnu_internal::buf_wcerr_sync = &off_537934; + word_5160A4 = -1; + dword_5160A0 = (int)&__iob[2]; + std::ios_base::ios_base(dword_516AC4); + dword_516B34 = 0; + word_516B38 = 0; + byte_516B3A = 0; + dword_516B3C = 0; + dword_516B40 = 0; + dword_516B44 = 0; + dword_516B48 = 0; + std::wcout = (int)&off_538804; + dword_516AC4[0] = (int)off_538818; + std::wios::init((int)dword_516AC4, (int)&__gnu_internal::buf_wcout_sync); + std::ios_base::ios_base(dword_5168E8); + dword_516958 = 0; + word_51695C = 0; + byte_51695E = 0; + dword_516960 = 0; + dword_516964 = 0; + dword_516968 = 0; + dword_51696C = 0; + std::wcin = (int)&off_5387DC; + dword_5168E8[0] = (int)off_5387F0; + dword_5168E4 = 0; + std::wios::init((int)dword_5168E8, (int)&__gnu_internal::buf_wcin_sync); + std::ios_base::ios_base(&dword_516984); + word_5169F8 = 0; + dword_5169F4 = 0; + byte_5169FA = 0; + dword_5169FC = 0; + dword_516A00 = 0; + dword_516A04 = 0; + dword_516A08 = 0; + std::wcerr = (int)&off_538804; + dword_516984 = (int)off_538818; + std::wios::init((int)&dword_516984, (int)&__gnu_internal::buf_wcerr_sync); + std::ios_base::ios_base(dword_516A24); + dword_516A94 = 0; + word_516A98 = 0; + byte_516A9A = 0; + dword_516A9C = 0; + dword_516AA0 = 0; + dword_516AA4 = 0; + dword_516AA8 = 0; + std::wclog = (int)&off_538804; + dword_516A24[0] = (int)off_538818; + std::wios::init((int)dword_516A24, (int)&__gnu_internal::buf_wcerr_sync); + result = _CRT_MT; + dword_516990 |= 0x2000u; + dword_516958 = (int)&std::wcout; + dword_5169F4 = (int)&std::wcout; + if ( _CRT_MT ) + _InterlockedAdd(&std::ios_base::Init::_S_refcount, 1u); + else + ++std::ios_base::Init::_S_refcount; + return result; +} +// 4F4CE0: could not find valid save-restore pair for ebp +// 515F84: using guessed type int dword_515F84; +// 515F88: using guessed type int dword_515F88; +// 515F8C: using guessed type int dword_515F8C; +// 515F90: using guessed type int dword_515F90; +// 515F94: using guessed type int dword_515F94; +// 515F98: using guessed type int dword_515F98; +// 515F9C: using guessed type _DWORD dword_515F9C; +// 515FA0: using guessed type int dword_515FA0; +// 515FA4: using guessed type int dword_515FA4; +// 515FC4: using guessed type int dword_515FC4; +// 515FC8: using guessed type int dword_515FC8; +// 515FCC: using guessed type int dword_515FCC; +// 515FD0: using guessed type int dword_515FD0; +// 515FD4: using guessed type int dword_515FD4; +// 515FD8: using guessed type int dword_515FD8; +// 515FDC: using guessed type _DWORD dword_515FDC; +// 515FE0: using guessed type int dword_515FE0; +// 515FE4: using guessed type int dword_515FE4; +// 516004: using guessed type int dword_516004; +// 516008: using guessed type int dword_516008; +// 51600C: using guessed type int dword_51600C; +// 516010: using guessed type int dword_516010; +// 516014: using guessed type int dword_516014; +// 516018: using guessed type int dword_516018; +// 51601C: using guessed type _DWORD dword_51601C; +// 516020: using guessed type int dword_516020; +// 516024: using guessed type int dword_516024; +// 516044: using guessed type int dword_516044; +// 516048: using guessed type int dword_516048; +// 51604C: using guessed type int dword_51604C; +// 516050: using guessed type int dword_516050; +// 516054: using guessed type int dword_516054; +// 516058: using guessed type int dword_516058; +// 51605C: using guessed type _DWORD dword_51605C; +// 516060: using guessed type int dword_516060; +// 516064: using guessed type __int16 word_516064; +// 516084: using guessed type int dword_516084; +// 516088: using guessed type int dword_516088; +// 51608C: using guessed type int dword_51608C; +// 516090: using guessed type int dword_516090; +// 516094: using guessed type int dword_516094; +// 516098: using guessed type int dword_516098; +// 51609C: using guessed type _DWORD dword_51609C; +// 5160A0: using guessed type int dword_5160A0; +// 5160A4: using guessed type __int16 word_5160A4; +// 5160C4: using guessed type int dword_5160C4; +// 5160C8: using guessed type int dword_5160C8; +// 5160CC: using guessed type int dword_5160CC; +// 5160D0: using guessed type int dword_5160D0; +// 5160D4: using guessed type int dword_5160D4; +// 5160D8: using guessed type int dword_5160D8; +// 5160DC: using guessed type _DWORD dword_5160DC; +// 5160E0: using guessed type int dword_5160E0; +// 5160E4: using guessed type __int16 word_5160E4; +// 516618: using guessed type int std::ios_base::Init::_S_refcount; +// 51661C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; +// 516660: using guessed type int std::cin; +// 516664: using guessed type int dword_516664; +// 516668: using guessed type int dword_516668[28]; +// 5166D8: using guessed type int dword_5166D8; +// 5166DC: using guessed type __int16 word_5166DC; +// 5166E0: using guessed type int dword_5166E0; +// 5166E4: using guessed type int dword_5166E4; +// 5166E8: using guessed type int dword_5166E8; +// 5166EC: using guessed type int dword_5166EC; +// 516700: using guessed type int std::cerr; +// 516704: using guessed type int dword_516704; +// 516710: using guessed type int dword_516710; +// 516774: using guessed type int dword_516774; +// 516778: using guessed type __int16 word_516778; +// 51677C: using guessed type int dword_51677C; +// 516780: using guessed type int dword_516780; +// 516784: using guessed type int dword_516784; +// 516788: using guessed type int dword_516788; +// 5167A0: using guessed type int std::clog; +// 5167A4: using guessed type int dword_5167A4[28]; +// 516814: using guessed type int dword_516814; +// 516818: using guessed type __int16 word_516818; +// 51681C: using guessed type int dword_51681C; +// 516820: using guessed type int dword_516820; +// 516824: using guessed type int dword_516824; +// 516828: using guessed type int dword_516828; +// 516840: using guessed type int std::cout; +// 516844: using guessed type int dword_516844[28]; +// 5168B4: using guessed type int dword_5168B4; +// 5168B8: using guessed type __int16 word_5168B8; +// 5168BC: using guessed type int dword_5168BC; +// 5168C0: using guessed type int dword_5168C0; +// 5168C4: using guessed type int dword_5168C4; +// 5168C8: using guessed type int dword_5168C8; +// 5168E0: using guessed type int std::wcin; +// 5168E4: using guessed type int dword_5168E4; +// 5168E8: using guessed type int dword_5168E8[28]; +// 516958: using guessed type int dword_516958; +// 51695C: using guessed type __int16 word_51695C; +// 51695E: using guessed type char byte_51695E; +// 516960: using guessed type int dword_516960; +// 516964: using guessed type int dword_516964; +// 516968: using guessed type int dword_516968; +// 51696C: using guessed type int dword_51696C; +// 516980: using guessed type int std::wcerr; +// 516984: using guessed type int dword_516984; +// 516990: using guessed type int dword_516990; +// 5169F4: using guessed type int dword_5169F4; +// 5169F8: using guessed type __int16 word_5169F8; +// 5169FA: using guessed type char byte_5169FA; +// 5169FC: using guessed type int dword_5169FC; +// 516A00: using guessed type int dword_516A00; +// 516A04: using guessed type int dword_516A04; +// 516A08: using guessed type int dword_516A08; +// 516A20: using guessed type int std::wclog; +// 516A24: using guessed type int dword_516A24[28]; +// 516A94: using guessed type int dword_516A94; +// 516A98: using guessed type __int16 word_516A98; +// 516A9A: using guessed type char byte_516A9A; +// 516A9C: using guessed type int dword_516A9C; +// 516AA0: using guessed type int dword_516AA0; +// 516AA4: using guessed type int dword_516AA4; +// 516AA8: using guessed type int dword_516AA8; +// 516AC0: using guessed type int std::wcout; +// 516AC4: using guessed type int dword_516AC4[28]; +// 516B34: using guessed type int dword_516B34; +// 516B38: using guessed type __int16 word_516B38; +// 516B3A: using guessed type char byte_516B3A; +// 516B3C: using guessed type int dword_516B3C; +// 516B40: using guessed type int dword_516B40; +// 516B44: using guessed type int dword_516B44; +// 516B48: using guessed type int dword_516B48; +// 5378F4: using guessed type int (*off_5378F4)(); +// 537934: using guessed type int (*off_537934)(); +// 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); +// 538494: using guessed type void (__cdecl *off_538494[2])(std::istream *__hidden this); +// 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); +// 5384BC: using guessed type void (__cdecl *off_5384BC[2])(std::ostream *__hidden this); +// 5387DC: using guessed type int (*off_5387DC)(); +// 5387F0: using guessed type int (*off_5387F0[2])(); +// 538804: using guessed type int (*off_538804)(); +// 538818: using guessed type int (*off_538818[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 538A88: using guessed type int (*off_538A88)(); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004F53E0) -------------------------------------------------------- +void __cdecl std::ios_base::Init::~Init() +{ + int v0; // eax + + if ( !_CRT_MT ) + { + v0 = std::ios_base::Init::_S_refcount--; + if ( v0 != 2 ) + return; +LABEL_5: + std::ostream::flush(&std::cout); + std::ostream::flush(&std::cerr); + std::ostream::flush(&std::clog); + std::wostream::flush(&std::wcout); + std::wostream::flush(&std::wcerr); + std::wostream::flush(&std::wclog); + return; + } + if ( _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 0xFFFFFFFF) == 2 ) + goto LABEL_5; +} +// 516618: using guessed type int std::ios_base::Init::_S_refcount; +// 516700: using guessed type int std::cerr; +// 5167A0: using guessed type int std::clog; +// 516840: using guessed type int std::cout; +// 516980: using guessed type int std::wcerr; +// 516A20: using guessed type int std::wclog; +// 516AC0: using guessed type int std::wcout; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004F5460) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::ios_base::imbue( + volatile signed __int32 **ecx0, + volatile signed __int32 **this, + volatile signed __int32 **a3) +{ + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::locale::locale(ecx0, this + 27, v5); + std::locale::operator=(this + 27, a3); + std::ios_base::_M_call_callbacks(this, 1); + return ecx0; +} +// 4F5472: variable 'v5' is possibly undefined + +//----- (004F54B0) -------------------------------------------------------- +int std::ios_base::xalloc() +{ + int result; // eax + + if ( _CRT_MT ) + return _InterlockedExchangeAdd(&std::ios_base::xalloc(void)::_S_top, 1u) + 4; + result = std::ios_base::xalloc(void)::_S_top + 4; + ++std::ios_base::xalloc(void)::_S_top; + return result; +} +// 516B9C: using guessed type int std::ios_base::xalloc(void)::_S_top; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004F54F0) -------------------------------------------------------- +void __fastcall std::ios_base::_M_init(int a1) +{ + _DWORD *v2[4]; // [esp+1Ch] [ebp-10h] BYREF + + *(_DWORD *)(a1 + 4) = 6; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 4098; + std::locale::locale(v2); + std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)v2); + std::locale::~locale(v2); +} + +//----- (004F5540) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::ios_base::_M_move@( + int a1@, + std::ios_base *this, + std::ios_base *a3) +{ + int v3; // edi + int v5; // eax + int v6; // eax + std::ios_base *v7; // eax + int v8; // eax + int v10; // edx + _DWORD *v11; // eax + int *v12; // ecx + int v13; // ebp + int v14; // edi + + v3 = a1 + 36; + *(_DWORD *)(a1 + 4) = *((_DWORD *)this + 1); + *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); + *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); + *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); + *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); + v5 = *((_DWORD *)this + 6); + *((_DWORD *)this + 6) = 0; + *(_DWORD *)(a1 + 24) = v5; + v6 = *(_DWORD *)(a1 + 104); + if ( v6 != a1 + 36 && v6 ) + operator delete[](*(void **)(a1 + 104)); + v7 = (std::ios_base *)*((_DWORD *)this + 26); + if ( v7 == (std::ios_base *)((char *)this + 36) ) + { + *(_DWORD *)(a1 + 104) = v3; + v10 = 0; + *(_DWORD *)(a1 + 100) = 8; + while ( 1 ) + { + v11 = (_DWORD *)(v3 + v10); + v12 = (int *)(v10 + *((_DWORD *)this + 26)); + v10 += 8; + v13 = *v12; + v14 = v12[1]; + *v12 = 0; + v12[1] = 0; + *v11 = v13; + v11[1] = v14; + if ( v10 == 64 ) + break; + v3 = *(_DWORD *)(a1 + 104); + } + } + else + { + *((_DWORD *)this + 26) = (char *)this + 36; + *(_DWORD *)(a1 + 104) = v7; + v8 = *((_DWORD *)this + 25); + *((_DWORD *)this + 25) = 8; + *(_DWORD *)(a1 + 100) = v8; + } + return std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)this + 27); +} + +//----- (004F5610) -------------------------------------------------------- +void __userpurge std::ios_base::_M_swap(int a1@, std::ios_base *this, std::ios_base *a3) +{ + char *v3; // esi + int v4; // eax + char *v5; // edi + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // edx + int v15; // eax + char *v16; // edx + char *v17; // eax + int i; // esi + int v19; // ebp + int v20; // edi + int v21; // edx + volatile signed __int32 **v22; // esi + int v23; // eax + std::ios_base *v24; // edi + std::ios_base *v25; // ebp + int v26; // eax + int v27; // ecx + const std::locale *v28; // [esp+4h] [ebp-48h] + int v29; // [esp+1Ch] [ebp-30h] + _DWORD *v30[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = (char *)(a1 + 36); + v4 = *(_DWORD *)(a1 + 4); + v5 = (char *)this + 36; + *(_DWORD *)(a1 + 4) = *((_DWORD *)this + 1); + v6 = *((_DWORD *)this + 2); + *((_DWORD *)this + 1) = v4; + v7 = *(_DWORD *)(a1 + 8); + *(_DWORD *)(a1 + 8) = v6; + v8 = *((_DWORD *)this + 3); + *((_DWORD *)this + 2) = v7; + v9 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(a1 + 12) = v8; + v10 = *((_DWORD *)this + 4); + *((_DWORD *)this + 3) = v9; + v11 = *(_DWORD *)(a1 + 16); + *(_DWORD *)(a1 + 16) = v10; + v12 = *((_DWORD *)this + 5); + *((_DWORD *)this + 4) = v11; + v13 = *(_DWORD *)(a1 + 20); + *(_DWORD *)(a1 + 20) = v12; + v14 = *((_DWORD *)this + 6); + *((_DWORD *)this + 5) = v13; + v15 = *(_DWORD *)(a1 + 24); + *(_DWORD *)(a1 + 24) = v14; + v16 = *(char **)(a1 + 104); + *((_DWORD *)this + 6) = v15; + v17 = (char *)*((_DWORD *)this + 26); + if ( v16 != (char *)(a1 + 36) ) + { +LABEL_7: + if ( v17 != v5 ) + { + *(_DWORD *)(a1 + 104) = v17; + *((_DWORD *)this + 26) = v16; +LABEL_9: + v23 = *(_DWORD *)(a1 + 100); + *(_DWORD *)(a1 + 100) = *((_DWORD *)this + 25); + *((_DWORD *)this + 25) = v23; + goto LABEL_5; + } + if ( v16 != v3 ) + { + v24 = (std::ios_base *)a1; + v25 = this; +LABEL_11: + v26 = 0; + v29 = a1; + do + { + v27 = *((_DWORD *)v25 + 2 * v26 + 10); + *((_DWORD *)v24 + 2 * v26 + 9) = *((_DWORD *)v25 + 2 * v26 + 9); + *((_DWORD *)v24 + 2 * v26++ + 10) = v27; + } + while ( v26 != 8 ); + a1 = v29; + *((_DWORD *)v25 + 26) = v16; + *((_DWORD *)v24 + 26) = v3; + goto LABEL_9; + } +LABEL_10: + v3 = (char *)this + 36; + v16 = (char *)*((_DWORD *)this + 26); + v24 = this; + v25 = (std::ios_base *)a1; + goto LABEL_11; + } + if ( v17 != v5 ) + { + if ( v16 == v3 ) + goto LABEL_10; + goto LABEL_7; + } + for ( i = 0; i != 8; ++i ) + { + v19 = *(_DWORD *)(a1 + 8 * i + 36); + v20 = *(_DWORD *)(a1 + 8 * i + 40); + v21 = *((_DWORD *)this + 2 * i + 10); + *(_DWORD *)(a1 + 8 * i + 36) = *((_DWORD *)this + 2 * i + 9); + *(_DWORD *)(a1 + 8 * i + 40) = v21; + *((_DWORD *)this + 2 * i + 9) = v19; + *((_DWORD *)this + 2 * i + 10) = v20; + } +LABEL_5: + v22 = (volatile signed __int32 **)(a1 + 108); + std::locale::locale((volatile signed __int32 **)v30, (volatile signed __int32 **)(a1 + 108), v28); + std::locale::operator=(v22, (volatile signed __int32 **)this + 27); + std::locale::operator=((volatile signed __int32 **)this + 27, (volatile signed __int32 **)v30); + std::locale::~locale(v30); +} +// 4F56B7: variable 'v28' is possibly undefined + +//----- (004F5760) -------------------------------------------------------- +int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *Str, int *a3) +{ + int v4; // esi + int v5; // edx + int (__thiscall *v6)(int, int, int); // eax + unsigned int *v7; // eax + void *v8; // ecx + size_t v9; // eax + unsigned int *v10; // eax + void *v11; // ecx + int result; // eax + int v13; // [esp+1Ch] [ebp-6Ch] + void *v14[2]; // [esp+28h] [ebp-60h] BYREF + char v15[16]; // [esp+30h] [ebp-58h] BYREF + void *v16[2]; // [esp+40h] [ebp-48h] BYREF + int v17[4]; // [esp+48h] [ebp-40h] BYREF + void *v18[2]; // [esp+58h] [ebp-30h] BYREF + int v19[10]; // [esp+60h] [ebp-28h] BYREF + + v4 = a3[1]; + v5 = *a3; + v13 = *a3; + v6 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 16); + if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v14[1] = 0; + v14[0] = v15; + v15[0] = 0; + if ( v5 == 1 ) + std::string::_M_replace((unsigned int *)v14, 0, 0, "iostream error", 0xEu); + else + std::string::_M_replace((unsigned int *)v14, 0, 0, "Unknown error", 0xDu); + } + else + { + v6((int)v14, v4, v13); + } + v7 = std::string::_M_replace((unsigned int *)v14, 0, 0, ": ", 2u); + v16[0] = v17; + if ( (unsigned int *)*v7 == v7 + 2 ) + { + v17[0] = v7[2]; + v17[1] = v7[3]; + v17[2] = v7[4]; + v17[3] = v7[5]; + } + else + { + v16[0] = (void *)*v7; + v17[0] = v7[2]; + } + v8 = (void *)v7[1]; + *((_BYTE *)v7 + 8) = 0; + v16[1] = v8; + *v7 = (unsigned int)(v7 + 2); + v7[1] = 0; + v9 = strlen(Str); + v10 = std::string::_M_replace((unsigned int *)v16, 0, 0, Str, v9); + v18[0] = v19; + if ( (unsigned int *)*v10 == v10 + 2 ) + { + v19[0] = v10[2]; + v19[1] = v10[3]; + v19[2] = v10[4]; + v19[3] = v10[5]; + } + else + { + v18[0] = (void *)*v10; + v19[0] = v10[2]; + } + v11 = (void *)v10[1]; + *((_BYTE *)v10 + 8) = 0; + v18[1] = v11; + *v10 = (unsigned int)(v10 + 2); + v10[1] = 0; + std::runtime_error::runtime_error(this, (int)v18); + if ( v18[0] != v19 ) + operator delete(v18[0]); + if ( v16[0] != v17 ) + operator delete(v16[0]); + if ( v14[0] != v15 ) + operator delete(v14[0]); + result = v13; + this[3] = v4; + *this = &off_538418; + this[2] = v13; + return result; +} +// 538418: using guessed type int (*off_538418)(); + +//----- (004F5990) -------------------------------------------------------- +void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2) +{ + void (__cdecl ***v3)(_anonymous_namespace_::io_error_category *__hidden); // esi + int (__thiscall *v4)(int, int, int); // eax + unsigned int v5; // edi + unsigned int v6; // ecx + unsigned int v7; // ecx + unsigned int *v8; // eax + unsigned int *v9; // edx + void *v10; // ecx + void *v11; // ecx + int v12; // [esp+8h] [ebp-80h] + void *v13; // [esp+28h] [ebp-60h] BYREF + size_t v14; // [esp+2Ch] [ebp-5Ch] + int v15[4]; // [esp+30h] [ebp-58h] BYREF + void *v16; // [esp+40h] [ebp-48h] BYREF + size_t v17; // [esp+44h] [ebp-44h] + int v18[4]; // [esp+48h] [ebp-40h] BYREF + void *v19[2]; // [esp+58h] [ebp-30h] BYREF + int v20[10]; // [esp+60h] [ebp-28h] BYREF + + v3 = `anonymous namespace'::__io_category_instance(); + v4 = (int (__thiscall *)(int, int, int))(*v3)[4]; + if ( v4 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v16 = v18; + v17 = 0; + LOBYTE(v18[0]) = 0; + std::string::_M_replace((unsigned int *)&v16, 0, 0, "iostream error", 0xEu); + } + else + { + v4((int)&v16, (int)v3, 1); + } + v13 = v15; + LOBYTE(v12) = 0; + std::string::_M_construct(&v13, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v12); + if ( v14 == 0x3FFFFFFF || v14 == 1073741822 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v13, ": ", 2u); + v5 = v17 + v14; + if ( v13 == v15 ) + v6 = 15; + else + v6 = v15[0]; + if ( v5 > v6 && (v16 == v18 ? (v7 = 15) : (v7 = v18[0]), v5 <= v7) ) + { + v8 = std::string::_M_replace((unsigned int *)&v16, 0, 0, (char *)v13, v14); + v9 = v8 + 2; + v19[0] = v20; + v10 = (void *)*v8; + if ( (unsigned int *)*v8 != v8 + 2 ) + goto LABEL_11; + } + else + { + v8 = std::string::_M_append(&v13, v16, v17); + v9 = v8 + 2; + v19[0] = v20; + v10 = (void *)*v8; + if ( (unsigned int *)*v8 != v8 + 2 ) + { +LABEL_11: + v19[0] = v10; + v20[0] = v8[2]; + goto LABEL_12; + } + } + v20[0] = v8[2]; + v20[1] = v8[3]; + v20[2] = v8[4]; + v20[3] = v8[5]; +LABEL_12: + v11 = (void *)v8[1]; + *((_BYTE *)v8 + 8) = 0; + v19[1] = v11; + *v8 = (unsigned int)v9; + v8[1] = 0; + std::runtime_error::runtime_error(this, (int)v19); + if ( v19[0] != v20 ) + operator delete(v19[0]); + if ( v13 != v15 ) + operator delete(v13); + if ( v16 != v18 ) + operator delete(v16); + this[2] = 1; + this[3] = v3; + *this = &off_538418; +} +// 4F5A12: variable 'v12' is possibly undefined +// 538418: using guessed type int (*off_538418)(); + +//----- (004F5C00) -------------------------------------------------------- +int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3) +{ + int v4; // edi + int v5; // edx + int (__thiscall *v6)(int, int, int); // eax + unsigned int v7; // edx + unsigned int v8; // esi + unsigned int v9; // esi + unsigned int *v10; // eax + unsigned int *v11; // edx + void *v12; // ecx + void *v13; // ecx + int result; // eax + int v15; // [esp+8h] [ebp-90h] + int v16; // [esp+28h] [ebp-70h] + void *v17; // [esp+38h] [ebp-60h] BYREF + size_t v18; // [esp+3Ch] [ebp-5Ch] + int v19[4]; // [esp+40h] [ebp-58h] BYREF + void *v20; // [esp+50h] [ebp-48h] BYREF + size_t v21; // [esp+54h] [ebp-44h] + int v22[4]; // [esp+58h] [ebp-40h] BYREF + void *v23[2]; // [esp+68h] [ebp-30h] BYREF + int v24[10]; // [esp+70h] [ebp-28h] BYREF + + v4 = a3[1]; + v5 = *a3; + v16 = *a3; + v6 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 16); + if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v21 = 0; + v20 = v22; + LOBYTE(v22[0]) = 0; + if ( v5 == 1 ) + std::string::_M_replace((unsigned int *)&v20, 0, 0, "iostream error", 0xEu); + else + std::string::_M_replace((unsigned int *)&v20, 0, 0, "Unknown error", 0xDu); + } + else + { + v6((int)&v20, v4, v16); + } + v17 = v19; + LOBYTE(v15) = 0; + std::string::_M_construct(&v17, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v15); + if ( v18 == 0x3FFFFFFF || v18 == 1073741822 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v17, ": ", 2u); + v7 = v21 + v18; + if ( v17 == v19 ) + v8 = 15; + else + v8 = v19[0]; + if ( v7 > v8 && (v20 == v22 ? (v9 = 15) : (v9 = v22[0]), v7 <= v9) ) + { + v10 = std::string::_M_replace((unsigned int *)&v20, 0, 0, (char *)v17, v18); + v11 = v10 + 2; + v23[0] = v24; + v12 = (void *)*v10; + if ( (unsigned int *)*v10 != v10 + 2 ) + goto LABEL_12; + } + else + { + v10 = std::string::_M_append(&v17, v20, v21); + v11 = v10 + 2; + v23[0] = v24; + v12 = (void *)*v10; + if ( (unsigned int *)*v10 != v10 + 2 ) + { +LABEL_12: + v23[0] = v12; + v24[0] = v10[2]; + goto LABEL_13; + } + } + v24[0] = v10[2]; + v24[1] = v10[3]; + v24[2] = v10[4]; + v24[3] = v10[5]; +LABEL_13: + v13 = (void *)v10[1]; + *((_BYTE *)v10 + 8) = 0; + v23[1] = v13; + *v10 = (unsigned int)v11; + v10[1] = 0; + std::runtime_error::runtime_error(this, (int)v23); + if ( v23[0] != v24 ) + operator delete(v23[0]); + if ( v17 != v19 ) + operator delete(v17); + if ( v20 != v22 ) + operator delete(v20); + result = v16; + this[3] = v4; + *this = &off_538418; + this[2] = v16; + return result; +} +// 4F5C98: variable 'v15' is possibly undefined +// 538418: using guessed type int (*off_538418)(); + +//----- (004F5EB0) -------------------------------------------------------- +void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1) +{ + *a1 = &off_538418; + std::system_error::~system_error(a1); + operator delete(a1); +} +// 538418: using guessed type int (*off_538418)(); + +//----- (004F5ED0) -------------------------------------------------------- +void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1) +{ + *a1 = &off_538418; + std::system_error::~system_error(a1); +} +// 538418: using guessed type int (*off_538418)(); + +//----- (004F5EE0) -------------------------------------------------------- +unsigned int *__userpurge std::ios_base::failure::failure@( + int a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int **v3; // ecx + const std::string *v5; // [esp+4h] [ebp-24h] + + v3 = (unsigned int **)(a1 + 4); + *(v3 - 1) = (unsigned int *)&off_53842C; + return std::string::string(v3, this, v5); +} +// 4F5EFB: variable 'v5' is possibly undefined +// 53842C: using guessed type void (__cdecl *off_53842C)(std::ios_base::failure *__hidden this); + +//----- (004F5F20) -------------------------------------------------------- +void __fastcall std::ios_base::failure::~failure(_DWORD *a1) +{ + std::ios_base::failure::~failure(a1); + operator delete(a1); +} + +//----- (004F5F40) -------------------------------------------------------- +void __fastcall std::ios_base::failure::~failure(_DWORD *a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + std::exception *v3; // [esp+0h] [ebp-2Ch] + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = (volatile signed __int32 *)a1[1]; + *a1 = &off_53842C; + if ( v1 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v4); + } + std::exception::~exception(v3); +} +// 4F5F59: variable 'v3' is possibly undefined +// 53842C: using guessed type void (__cdecl *off_53842C)(std::ios_base::failure *__hidden this); +// 78A9D4: using guessed type int _CRT_MT; +// 4F5F40: using guessed type int var_D[3]; + +//----- (004F5FB0) -------------------------------------------------------- +int __fastcall std::ios_base::ios_base(_DWORD *a1) +{ + _DWORD *v1; // ebx + _DWORD *v2; // eax + _DWORD *v3; // ecx + + v1 = a1 + 9; + *a1 = &off_539358; + v2 = a1 + 9; + a1[1] = 0; + a1[2] = 0; + a1[3] = 0; + a1[4] = 0; + a1[5] = 0; + a1[6] = 0; + a1[7] = 0; + a1[8] = 0; + do + { + *v2 = 0; + v2 += 2; + *(v2 - 1) = 0; + } + while ( a1 + 25 != v2 ); + a1[25] = 8; + v3 = a1 + 27; + *(v3 - 1) = v1; + return std::locale::locale(v3); +} +// 539358: using guessed type void (__cdecl *off_539358)(std::ios_base *__hidden this); + +//----- (004F6030) -------------------------------------------------------- +void __fastcall std::ios_base::~ios_base(void *a1) +{ + std::ios_base::~ios_base((int)a1); + operator delete(a1); +} + +//----- (004F6050) -------------------------------------------------------- +void __fastcall std::ios_base::~ios_base(int a1) +{ + void *v2; // eax + + *(_DWORD *)a1 = &off_539358; + std::ios_base::_M_call_callbacks((_DWORD *)a1, 0); + std::ios_base::_M_dispose_callbacks(a1); + v2 = *(void **)(a1 + 104); + if ( v2 != (void *)(a1 + 36) ) + { + if ( v2 ) + operator delete[](v2); + *(_DWORD *)(a1 + 104) = 0; + } + std::locale::~locale((_DWORD **)(a1 + 108)); +} +// 539358: using guessed type void (__cdecl *off_539358)(std::ios_base *__hidden this); + +//----- (004F60A0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_539368; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539368: using guessed type int (*off_539368)(); + +//----- (004F60E0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_539368; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539368: using guessed type int (*off_539368)(); + +//----- (004F6120) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_539368; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539368: using guessed type int (*off_539368)(); + +//----- (004F6160) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_539368; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539368: using guessed type int (*off_539368)(); + +//----- (004F61A0) -------------------------------------------------------- +void __fastcall std::messages::~messages(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539368; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F61B9: variable 'v2' is possibly undefined +// 539368: using guessed type int (*off_539368)(); + +//----- (004F61D0) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539368; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F61D9: variable 'v1' is possibly undefined +// 539368: using guessed type int (*off_539368)(); + +//----- (004F6200) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539368; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F6209: variable 'v1' is possibly undefined +// 539368: using guessed type int (*off_539368)(); + +//----- (004F6230) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_539384; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539384: using guessed type int (*off_539384)(); + +//----- (004F6270) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_539384; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539384: using guessed type int (*off_539384)(); + +//----- (004F62B0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_539384; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539384: using guessed type int (*off_539384)(); + +//----- (004F62F0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_539384; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 539384: using guessed type int (*off_539384)(); + +//----- (004F6330) -------------------------------------------------------- +void __fastcall std::messages::~messages(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539384; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F6349: variable 'v2' is possibly undefined +// 539384: using guessed type int (*off_539384)(); + +//----- (004F6360) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539384; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F6369: variable 'v1' is possibly undefined +// 539384: using guessed type int (*off_539384)(); + +//----- (004F6390) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539384; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4F6399: variable 'v1' is possibly undefined +// 539384: using guessed type int (*off_539384)(); + +//----- (004F63C0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) +{ + _DWORD *v3; // eax + char *v4; // ecx + int i; // eax + char *v6; // esi + int j; // eax + _DWORD *result; // eax + void (__cdecl *v9)(void *); // [esp+4h] [ebp-18h] + + v3 = (_DWORD *)this[2]; + if ( !v3 ) + { + v3 = operator new((struct type_info *)0x68, v9); + v3[1] = 0; + *v3 = &off_538BD4; + v3[2] = 0; + v3[3] = 0; + *((_BYTE *)v3 + 16) = 0; + v3[5] = 0; + v3[6] = 0; + v3[7] = 0; + v3[8] = 0; + *((_WORD *)v3 + 18) = 0; + *((_BYTE *)v3 + 100) = 0; + this[2] = v3; + } + v3[2] = &unk_52F168; + v4 = std::__num_base::_S_atoms_out[0]; + v3[3] = 0; + *((_BYTE *)v3 + 16) = 0; + *((_BYTE *)v3 + 36) = 46; + *(_BYTE *)(this[2] + 37) = 44; + for ( i = 0; i != 36; ++i ) + *(_BYTE *)(this[2] + i + 38) = v4[i]; + v6 = std::__num_base::_S_atoms_in[0]; + for ( j = 0; j != 26; ++j ) + *(_BYTE *)(this[2] + j + 74) = v6[j]; + result = (_DWORD *)this[2]; + result[5] = "true"; + result[6] = 4; + result[7] = "false"; + result[8] = 5; + return result; +} +// 4F6462: variable 'v9' is possibly undefined +// 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; +// 538BD4: using guessed type int (*off_538BD4)(); + +//----- (004F64C0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5393A0; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004F6510) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5393A0; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004F6560) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_5393A0; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004F65B0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5393A0; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004F6600) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5393A0; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004F6650) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_5393A0; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004F66A0) -------------------------------------------------------- +void __fastcall std::numpunct::~numpunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4F66A7: variable 'v2' is possibly undefined + +//----- (004F66D0) -------------------------------------------------------- +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_5393A0; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4F66D7: variable 'v1' is possibly undefined +// 5393A0: using guessed type int (*off_5393A0)(); + +//----- (004F6700) -------------------------------------------------------- +int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) +{ + _DWORD *v2; // edx + char *v3; // ebx + int v4; // eax + char *v5; // ebx + int result; // eax + _DWORD *v7; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-28h] + + v2 = (_DWORD *)this[2]; + if ( !v2 ) + { + v7 = operator new((struct type_info *)0xA8, v8); + v7[1] = 0; + v2 = v7; + *v7 = &off_538BE4; + v7[2] = 0; + v7[3] = 0; + *((_BYTE *)v7 + 16) = 0; + v7[5] = 0; + v7[6] = 0; + v7[7] = 0; + v7[8] = 0; + v7[9] = 0; + *((_BYTE *)v7 + 164) = 0; + this[2] = v7; + } + v2[2] = &unk_52F168; + v3 = std::__num_base::_S_atoms_out[0]; + v4 = 0; + v2[3] = 0; + *((_BYTE *)v2 + 16) = 0; + v2[9] = 2883630; + do + { + *((_WORD *)v2 + v4 + 20) = v3[v4]; + ++v4; + } + while ( v4 != 36 ); + v5 = std::__num_base::_S_atoms_in[0]; + for ( result = 0; result != 26; ++result ) + *((_WORD *)v2 + result + 56) = v5[result]; + v2[5] = &off_52F174; + v2[6] = 4; + v2[7] = &off_52F17E; + v2[8] = 5; + return result; +} +// 4F6790: variable 'v8' is possibly undefined +// 516420: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 516424: using guessed type char *std::__num_base::_S_atoms_out[2]; +// 52F174: using guessed type void *off_52F174; +// 52F17E: using guessed type void *off_52F17E; +// 538BE4: using guessed type int (*off_538BE4)(); + +//----- (004F67F0) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5393C4; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004F6840) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5393C4; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004F6890) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_5393C4; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004F68E0) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5393C4; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004F6930) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_5393C4; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004F6980) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_5393C4; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004F69D0) -------------------------------------------------------- +void __fastcall std::numpunct::~numpunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4F69D7: variable 'v2' is possibly undefined + +//----- (004F6A00) -------------------------------------------------------- +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_5393C4; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4F6A07: variable 'v1' is possibly undefined +// 5393C4: using guessed type int (*off_5393C4)(); + +//----- (004F6A30) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5393E8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5393E8: using guessed type int (*off_5393E8)(); + +//----- (004F6A50) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5393E8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5393E8: using guessed type int (*off_5393E8)(); + +//----- (004F6A70) -------------------------------------------------------- +void __fastcall std::time_get>::~time_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5393E8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F6A7C: variable 'v2' is possibly undefined +// 5393E8: using guessed type int (*off_5393E8)(); + +//----- (004F6A90) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5393E8; + std::locale::facet::~facet(a1); +} +// 4F6A90: variable 'v1' is possibly undefined +// 5393E8: using guessed type int (*off_5393E8)(); + +//----- (004F6AA0) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5393E8; + std::locale::facet::~facet(a1); +} +// 4F6AA0: variable 'v1' is possibly undefined +// 5393E8: using guessed type int (*off_5393E8)(); + +//----- (004F6AB0) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_539410; + result = a2 != 0; + this[1] = result; + return result; +} +// 539410: using guessed type int (*off_539410)(); + +//----- (004F6AD0) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_539410; + result = a2 != 0; + this[1] = result; + return result; +} +// 539410: using guessed type int (*off_539410)(); + +//----- (004F6AF0) -------------------------------------------------------- +void __fastcall std::time_get>::~time_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539410; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F6AFC: variable 'v2' is possibly undefined +// 539410: using guessed type int (*off_539410)(); + +//----- (004F6B10) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539410; + std::locale::facet::~facet(a1); +} +// 4F6B10: variable 'v1' is possibly undefined +// 539410: using guessed type int (*off_539410)(); + +//----- (004F6B20) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539410; + std::locale::facet::~facet(a1); +} +// 4F6B20: variable 'v1' is possibly undefined +// 539410: using guessed type int (*off_539410)(); + +//----- (004F6B30) -------------------------------------------------------- +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_539438; + result = a2 != 0; + this[1] = result; + return result; +} +// 539438: using guessed type int (*off_539438)(); + +//----- (004F6B50) -------------------------------------------------------- +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_539438; + result = a2 != 0; + this[1] = result; + return result; +} +// 539438: using guessed type int (*off_539438)(); + +//----- (004F6B70) -------------------------------------------------------- +void __fastcall std::time_put>::~time_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539438; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F6B7C: variable 'v2' is possibly undefined +// 539438: using guessed type int (*off_539438)(); + +//----- (004F6B90) -------------------------------------------------------- +void __cdecl std::time_put>::~time_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539438; + std::locale::facet::~facet(a1); +} +// 4F6B90: variable 'v1' is possibly undefined +// 539438: using guessed type int (*off_539438)(); + +//----- (004F6BA0) -------------------------------------------------------- +void __cdecl std::time_put>::~time_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539438; + std::locale::facet::~facet(a1); +} +// 4F6BA0: variable 'v1' is possibly undefined +// 539438: using guessed type int (*off_539438)(); + +//----- (004F6BB0) -------------------------------------------------------- +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_53944C; + result = a2 != 0; + this[1] = result; + return result; +} +// 53944C: using guessed type int (*off_53944C)(); + +//----- (004F6BD0) -------------------------------------------------------- +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_53944C; + result = a2 != 0; + this[1] = result; + return result; +} +// 53944C: using guessed type int (*off_53944C)(); + +//----- (004F6BF0) -------------------------------------------------------- +void __fastcall std::time_put>::~time_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_53944C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F6BFC: variable 'v2' is possibly undefined +// 53944C: using guessed type int (*off_53944C)(); + +//----- (004F6C10) -------------------------------------------------------- +void __cdecl std::time_put>::~time_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53944C; + std::locale::facet::~facet(a1); +} +// 4F6C10: variable 'v1' is possibly undefined +// 53944C: using guessed type int (*off_53944C)(); + +//----- (004F6C20) -------------------------------------------------------- +void __cdecl std::time_put>::~time_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_53944C; + std::locale::facet::~facet(a1); +} +// 4F6C20: variable 'v1' is possibly undefined +// 53944C: using guessed type int (*off_53944C)(); + +//----- (004F6C30) -------------------------------------------------------- +void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_539460; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 4F6C3C: variable 'v2' is possibly undefined +// 539460: using guessed type void (__cdecl *off_539460)(std::bad_alloc *__hidden this); + +//----- (004F6C60) -------------------------------------------------------- +void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_539460; + std::exception::~exception(a1); +} +// 4F6C60: variable 'v1' is possibly undefined +// 539460: using guessed type void (__cdecl *off_539460)(std::bad_alloc *__hidden this); + +//----- (004F6C70) -------------------------------------------------------- +int __thiscall std::ios::exceptions(_DWORD *this, int a2) +{ + this[4] = a2; + return std::ios::clear(this, this[5]); +} + +//----- (004F6C90) -------------------------------------------------------- +int __thiscall std::ios::_M_setstate(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[5] |= a2; + if ( (a2 & this[4]) != 0 ) + __cxa_rethrow(); + return result; +} + +//----- (004F6CB0) -------------------------------------------------------- +void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int a2) +{ + void *result; // eax + + if ( (unsigned __int8)std::has_facet>(a2) ) + { + this[31] = std::use_facet>(a2); + if ( (unsigned __int8)std::has_facet>>(a2) ) + goto LABEL_3; +LABEL_6: + this[32] = 0; + result = (void *)std::has_facet>>(a2); + if ( (_BYTE)result ) + goto LABEL_4; + goto LABEL_7; + } + this[31] = 0; + if ( !(unsigned __int8)std::has_facet>>(a2) ) + goto LABEL_6; +LABEL_3: + this[32] = std::use_facet>>(a2); + result = (void *)std::has_facet>>(a2); + if ( (_BYTE)result ) + { +LABEL_4: + result = std::use_facet>>(a2); + this[33] = result; + return result; + } +LABEL_7: + this[33] = 0; + return result; +} + +//----- (004F6D50) -------------------------------------------------------- +int __thiscall std::ios::tie(_DWORD *this, int a2) +{ + int result; // eax + + result = this[28]; + this[28] = a2; + return result; +} + +//----- (004F6D60) -------------------------------------------------------- +int __thiscall std::ios::fill(int this, char a2) +{ + int result; // eax + _BYTE *v4; // edi + int (__stdcall *v5)(unsigned __int8); // edx + + if ( *(_BYTE *)(this + 117) ) + { + result = *(unsigned __int8 *)(this + 116); + *(_BYTE *)(this + 116) = a2; + } + else + { + v4 = *(_BYTE **)(this + 124); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v4[28] ) + { + result = (unsigned __int8)v4[61]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); + v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); + result = 32; + if ( v5 != std::ctype::do_widen ) + result = ((int (__thiscall *)(_BYTE *, int))v5)(v4, 32); + } + *(_BYTE *)(this + 117) = 1; + *(_BYTE *)(this + 116) = a2; + } + return result; +} + +//----- (004F6DE0) -------------------------------------------------------- +BOOL __thiscall std::ios::init(int this, int a2) +{ + BOOL result; // eax + + std::ios_base::_M_init(this); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + *(_DWORD *)(this + 120) = a2; + *(_WORD *)(this + 116) = 0; + result = a2 == 0; + *(_DWORD *)(this + 112) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = result; + return result; +} + +//----- (004F6E30) -------------------------------------------------------- +int __thiscall std::ios::move(int this, std::ios_base *a2) +{ + int v3; // eax + int result; // eax + std::ios_base *v5; // [esp+4h] [ebp-18h] + + std::ios_base::_M_move(this, a2, v5); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + v3 = *((_DWORD *)a2 + 28); + *((_DWORD *)a2 + 28) = 0; + *(_DWORD *)(this + 112) = v3; + *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); + result = *((unsigned __int8 *)a2 + 117); + *(_DWORD *)(this + 120) = 0; + *(_BYTE *)(this + 117) = result; + return result; +} +// 4F6E3E: variable 'v5' is possibly undefined + +//----- (004F6E80) -------------------------------------------------------- +int __thiscall std::ios::move(int this, std::ios_base *a2) +{ + int v3; // eax + int result; // eax + std::ios_base *v5; // [esp+4h] [ebp-18h] + + std::ios_base::_M_move(this, a2, v5); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + v3 = *((_DWORD *)a2 + 28); + *((_DWORD *)a2 + 28) = 0; + *(_DWORD *)(this + 112) = v3; + *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); + result = *((unsigned __int8 *)a2 + 117); + *(_DWORD *)(this + 120) = 0; + *(_BYTE *)(this + 117) = result; + return result; +} +// 4F6E8E: variable 'v5' is possibly undefined + +//----- (004F6ED0) -------------------------------------------------------- +int __thiscall std::ios::swap(int this, std::ios_base *a2) +{ + int v3; // eax + char v4; // dl + char v5; // dl + int result; // eax + std::ios_base *v7; // [esp+4h] [ebp-18h] + + std::ios_base::_M_swap(this, a2, v7); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + std::ios::_M_cache_locale(a2, (int)a2 + 108); + v3 = *(_DWORD *)(this + 112); + *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); + v4 = *((_BYTE *)a2 + 116); + *((_DWORD *)a2 + 28) = v3; + LOBYTE(v3) = *(_BYTE *)(this + 116); + *(_BYTE *)(this + 116) = v4; + v5 = *((_BYTE *)a2 + 117); + *((_BYTE *)a2 + 116) = v3; + result = *(unsigned __int8 *)(this + 117); + *(_BYTE *)(this + 117) = v5; + *((_BYTE *)a2 + 117) = result; + return result; +} +// 4F6EDE: variable 'v7' is possibly undefined + +//----- (004F6F40) -------------------------------------------------------- +int __thiscall std::ios::clear(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + if ( !this[30] ) + result = a2 | 1; + this[5] = result; + if ( (result & this[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); + return result; +} + +//----- (004F6F80) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::ios::imbue( + volatile signed __int32 **this, + volatile signed __int32 **a2, + volatile signed __int32 **a3) +{ + volatile signed __int32 **v4; // esi + const std::locale *v6; // [esp+4h] [ebp-44h] + const std::locale *v7; // [esp+4h] [ebp-44h] + _DWORD *v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::locale::locale(this, a2 + 27, v6); + std::ios_base::imbue((volatile signed __int32 **)v8, a2, a3); + std::locale::~locale(v8); + std::ios::_M_cache_locale(a2, (int)a3); + v4 = (volatile signed __int32 **)a2[30]; + if ( v4 ) + { + std::locale::locale((volatile signed __int32 **)v8, v4 + 7, v7); + (*((void (__thiscall **)(volatile signed __int32 **, volatile signed __int32 **))*v4 + 2))(v4, a3); + std::locale::operator=(v4 + 7, a3); + std::locale::~locale(v8); + } + return this; +} +// 4F6F97: variable 'v6' is possibly undefined +// 4F6FDB: variable 'v7' is possibly undefined + +//----- (004F7030) -------------------------------------------------------- +int __thiscall std::ios::rdbuf(_DWORD *this, int a2) +{ + int v2; // edx + BOOL v3; // eax + + v2 = this[30]; + this[30] = a2; + v3 = a2 == 0; + this[5] = v3; + if ( (v3 & this[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); + return v2; +} + +//----- (004F7070) -------------------------------------------------------- +int __thiscall std::ios::copyfmt(int this, _DWORD *a2) +{ + _DWORD *v3; // esi + int v4; // eax + _DWORD *v5; // eax + int v6; // ebp + int v7; // edi + int v8; // edx + _DWORD *v9; // eax + int v10; // ebp + int v11; // ecx + int v12; // edx + int v13; // esi + int v14; // eax + bool v15; // zf + char v16; // dl + _DWORD *v18; // edx + int v19; // ecx + _BYTE *v20; // edi + _BYTE *v21; // edi + int (__stdcall *v22)(unsigned __int8); // eax + int (__stdcall *v23)(unsigned __int8); // eax + const std::locale *v24; // [esp+4h] [ebp-48h] + _DWORD *v25; // [esp+1Ch] [ebp-30h] + _DWORD *v26; // [esp+1Ch] [ebp-30h] + unsigned __int8 v27; // [esp+1Ch] [ebp-30h] + _DWORD *v28[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = a2; + if ( (_DWORD *)this != a2 ) + { + v4 = a2[25]; + if ( v4 > 8 ) + { + if ( v4 > 0xFFFFFFF ) + __cxa_throw_bad_array_new_length(); + v6 = this + 36; + v5 = (_DWORD *)operator new[](8 * v4); + v18 = v5; + v19 = a2[25] - 1; + if ( v19 >= 0 ) + { + do + { + --v19; + *v18 = 0; + v18 += 2; + *(v18 - 1) = 0; + } + while ( v19 != -1 ); + } + } + else + { + v5 = (_DWORD *)(this + 36); + v6 = this + 36; + } + v7 = a2[6]; + if ( v7 ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); + else + ++*(_DWORD *)(v7 + 12); + } + v25 = v5; + std::ios_base::_M_call_callbacks((_DWORD *)this, 0); + v8 = *(_DWORD *)(this + 104); + v9 = v25; + if ( v8 != v6 ) + { + if ( v8 ) + { + operator delete[](*(void **)(this + 104)); + v9 = v25; + } + *(_DWORD *)(this + 104) = 0; + } + v26 = v9; + std::ios_base::_M_dispose_callbacks(this); + v10 = a2[25]; + *(_DWORD *)(this + 24) = v7; + if ( v10 > 0 ) + { + v11 = a2[26]; + v12 = 0; + do + { + v13 = *(_DWORD *)(v11 + v12 * 4 + 4); + v26[v12] = *(_DWORD *)(v11 + v12 * 4); + v26[v12 + 1] = v13; + v12 += 2; + } + while ( v12 != 2 * v10 ); + v3 = a2; + } + *(_DWORD *)(this + 104) = v26; + v14 = v3[3]; + *(_DWORD *)(this + 100) = v10; + v15 = *((_BYTE *)v3 + 117) == 0; + *(_DWORD *)(this + 12) = v14; + *(_DWORD *)(this + 8) = v3[2]; + *(_DWORD *)(this + 4) = v3[1]; + *(_DWORD *)(this + 112) = v3[28]; + if ( v15 ) + { + v20 = (_BYTE *)v3[31]; + if ( !v20 ) + goto LABEL_35; + if ( v20[28] ) + { + v16 = v20[61]; + } + else + { + std::ctype::_M_widen_init(v3[31]); + v16 = 32; + v23 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v20 + 24); + if ( v23 != std::ctype::do_widen ) + v16 = ((int (__fastcall *)(_BYTE *, int, int))v23)(v20, 32, 32); + } + *((_BYTE *)v3 + 116) = v16; + *((_BYTE *)v3 + 117) = 1; + if ( *(_BYTE *)(this + 117) ) + goto LABEL_17; + } + else + { + v16 = *((_BYTE *)v3 + 116); + if ( *(_BYTE *)(this + 117) ) + { +LABEL_17: + *(_BYTE *)(this + 116) = v16; + std::locale::locale((volatile signed __int32 **)v28, (volatile signed __int32 **)v3 + 27, v24); + std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v28); + std::locale::~locale(v28); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + std::ios_base::_M_call_callbacks((_DWORD *)this, 2); + *(_DWORD *)(this + 16) = v3[4]; + std::ios::clear((_DWORD *)this, *(_DWORD *)(this + 20)); + return this; + } + } + v21 = *(_BYTE **)(this + 124); + if ( v21 ) + { + if ( !v21[28] ) + { + v27 = v16; + std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); + v16 = v27; + v22 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v21 + 24); + if ( v22 != std::ctype::do_widen ) + { + ((void (__fastcall *)(_BYTE *, _DWORD, int))v22)(v21, v27, 32); + v16 = v27; + } + } + *(_BYTE *)(this + 117) = 1; + goto LABEL_17; + } +LABEL_35: + std::__throw_bad_cast(); + } + return this; +} +// 4F717D: variable 'v24' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004F72F0) -------------------------------------------------------- +int __thiscall std::ios::setstate(_DWORD *this, int a2) +{ + return std::ios::clear(this, this[5] | a2); +} + +//----- (004F7300) -------------------------------------------------------- +int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[30] = a2; + return result; +} + +//----- (004F7310) -------------------------------------------------------- +BOOL __thiscall std::ios::basic_ios(int this, int a2) +{ + std::ios_base::ios_base((_DWORD *)this); + *(_DWORD *)this = &off_539474; + *(_WORD *)(this + 116) = 0; + *(_DWORD *)(this + 112) = 0; + *(_DWORD *)(this + 120) = 0; + *(_DWORD *)(this + 124) = 0; + *(_DWORD *)(this + 128) = 0; + *(_DWORD *)(this + 132) = 0; + return std::ios::init(this, a2); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004F7380) -------------------------------------------------------- +int __fastcall std::ios::basic_ios(int a1) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)a1); + result = 0; + *(_DWORD *)a1 = &off_539474; + *(_DWORD *)(a1 + 112) = 0; + *(_WORD *)(a1 + 116) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + return result; +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004F73D0) -------------------------------------------------------- +BOOL __thiscall std::ios::basic_ios(int this, int a2) +{ + std::ios_base::ios_base((_DWORD *)this); + *(_DWORD *)this = &off_539474; + *(_WORD *)(this + 116) = 0; + *(_DWORD *)(this + 112) = 0; + *(_DWORD *)(this + 120) = 0; + *(_DWORD *)(this + 124) = 0; + *(_DWORD *)(this + 128) = 0; + *(_DWORD *)(this + 132) = 0; + return std::ios::init(this, a2); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004F7440) -------------------------------------------------------- +int __fastcall std::ios::basic_ios(int a1) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)a1); + result = 0; + *(_DWORD *)a1 = &off_539474; + *(_DWORD *)(a1 + 112) = 0; + *(_WORD *)(a1 + 116) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + return result; +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004F7490) -------------------------------------------------------- +void __fastcall std::ios::~ios(_DWORD *a1) +{ + *a1 = &off_539474; + std::ios_base::~ios_base((int)a1); + operator delete(a1); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004F74B0) -------------------------------------------------------- +void __fastcall std::ios::~ios(int a1) +{ + *(_DWORD *)a1 = &off_539474; + std::ios_base::~ios_base(a1); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004F74C0) -------------------------------------------------------- +void __fastcall std::ios::~ios(int a1) +{ + *(_DWORD *)a1 = &off_539474; + std::ios_base::~ios_base(a1); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004F74D0) -------------------------------------------------------- +int __thiscall std::wios::exceptions(_DWORD *this, int a2) +{ + this[4] = a2; + return std::wios::clear(this, this[5]); +} + +//----- (004F74F0) -------------------------------------------------------- +int __thiscall std::wios::_M_setstate(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[5] |= a2; + if ( (a2 & this[4]) != 0 ) + __cxa_rethrow(); + return result; +} + +//----- (004F7510) -------------------------------------------------------- +void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int a2) +{ + void *result; // eax + + if ( (unsigned __int8)std::has_facet>(a2) ) + { + this[31] = std::use_facet>(a2); + if ( (unsigned __int8)std::has_facet>>(a2) ) + goto LABEL_3; +LABEL_6: + this[32] = 0; + result = (void *)std::has_facet>>(a2); + if ( (_BYTE)result ) + goto LABEL_4; + goto LABEL_7; + } + this[31] = 0; + if ( !(unsigned __int8)std::has_facet>>(a2) ) + goto LABEL_6; +LABEL_3: + this[32] = std::use_facet>>(a2); + result = (void *)std::has_facet>>(a2); + if ( (_BYTE)result ) + { +LABEL_4: + result = std::use_facet>>(a2); + this[33] = result; + return result; + } +LABEL_7: + this[33] = 0; + return result; +} + +//----- (004F75B0) -------------------------------------------------------- +int __thiscall std::wios::tie(_DWORD *this, int a2) +{ + int result; // eax + + result = this[28]; + this[28] = a2; + return result; +} + +//----- (004F75C0) -------------------------------------------------------- +int __thiscall std::wios::fill(int this, __int16 a2) +{ + int result; // eax + int v4; // ecx + + if ( *(_BYTE *)(this + 118) ) + { + result = *(unsigned __int16 *)(this + 116); + *(_WORD *)(this + 116) = a2; + } + else + { + v4 = *(_DWORD *)(this + 124); + if ( !v4 ) + std::__throw_bad_cast(); + result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); + *(_WORD *)(this + 116) = a2; + *(_BYTE *)(this + 118) = 1; + } + return result; +} + +//----- (004F7620) -------------------------------------------------------- +BOOL __thiscall std::wios::init(int this, int a2) +{ + BOOL result; // eax + + std::ios_base::_M_init(this); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + *(_DWORD *)(this + 120) = a2; + *(_WORD *)(this + 116) = 0; + result = a2 == 0; + *(_BYTE *)(this + 118) = 0; + *(_DWORD *)(this + 112) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = result; + return result; +} + +//----- (004F7670) -------------------------------------------------------- +int __thiscall std::wios::move(int this, std::ios_base *a2) +{ + int v3; // eax + int result; // eax + std::ios_base *v5; // [esp+4h] [ebp-18h] + + std::ios_base::_M_move(this, a2, v5); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + v3 = *((_DWORD *)a2 + 28); + *((_DWORD *)a2 + 28) = 0; + *(_DWORD *)(this + 112) = v3; + *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); + result = *((unsigned __int8 *)a2 + 118); + *(_DWORD *)(this + 120) = 0; + *(_BYTE *)(this + 118) = result; + return result; +} +// 4F767E: variable 'v5' is possibly undefined + +//----- (004F76D0) -------------------------------------------------------- +int __thiscall std::wios::move(int this, std::ios_base *a2) +{ + int v3; // eax + int result; // eax + std::ios_base *v5; // [esp+4h] [ebp-18h] + + std::ios_base::_M_move(this, a2, v5); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + v3 = *((_DWORD *)a2 + 28); + *((_DWORD *)a2 + 28) = 0; + *(_DWORD *)(this + 112) = v3; + *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); + result = *((unsigned __int8 *)a2 + 118); + *(_DWORD *)(this + 120) = 0; + *(_BYTE *)(this + 118) = result; + return result; +} +// 4F76DE: variable 'v5' is possibly undefined + +//----- (004F7730) -------------------------------------------------------- +int __thiscall std::wios::swap(int this, std::ios_base *a2) +{ + int v3; // eax + __int16 v4; // dx + int result; // eax + std::ios_base *v6; // [esp+4h] [ebp-18h] + + std::ios_base::_M_swap(this, a2, v6); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + std::wios::_M_cache_locale(a2, (int)a2 + 108); + v3 = *(_DWORD *)(this + 112); + *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); + v4 = *((_WORD *)a2 + 58); + *((_DWORD *)a2 + 28) = v3; + LOWORD(v3) = *(_WORD *)(this + 116); + *(_WORD *)(this + 116) = v4; + LOBYTE(v4) = *((_BYTE *)a2 + 118); + *((_WORD *)a2 + 58) = v3; + result = *(unsigned __int8 *)(this + 118); + *(_BYTE *)(this + 118) = v4; + *((_BYTE *)a2 + 118) = result; + return result; +} +// 4F773E: variable 'v6' is possibly undefined + +//----- (004F77A0) -------------------------------------------------------- +int __thiscall std::wios::clear(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + if ( !this[30] ) + result = a2 | 1; + this[5] = result; + if ( (result & this[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); + return result; +} + +//----- (004F77E0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::wios::imbue( + volatile signed __int32 **this, + volatile signed __int32 **a2, + volatile signed __int32 **a3) +{ + volatile signed __int32 **v4; // esi + const std::locale *v6; // [esp+4h] [ebp-44h] + const std::locale *v7; // [esp+4h] [ebp-44h] + _DWORD *v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::locale::locale(this, a2 + 27, v6); + std::ios_base::imbue((volatile signed __int32 **)v8, a2, a3); + std::locale::~locale(v8); + std::wios::_M_cache_locale(a2, (int)a3); + v4 = (volatile signed __int32 **)a2[30]; + if ( v4 ) + { + std::locale::locale((volatile signed __int32 **)v8, v4 + 7, v7); + (*((void (__thiscall **)(volatile signed __int32 **, volatile signed __int32 **))*v4 + 2))(v4, a3); + std::locale::operator=(v4 + 7, a3); + std::locale::~locale(v8); + } + return this; +} +// 4F77F7: variable 'v6' is possibly undefined +// 4F783B: variable 'v7' is possibly undefined + +//----- (004F7890) -------------------------------------------------------- +int __thiscall std::wios::rdbuf(_DWORD *this, int a2) +{ + int v2; // edx + BOOL v3; // eax + + v2 = this[30]; + this[30] = a2; + v3 = a2 == 0; + this[5] = v3; + if ( (v3 & this[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); + return v2; +} + +//----- (004F78D0) -------------------------------------------------------- +int __thiscall std::wios::copyfmt(int this, _DWORD *a2) +{ + _DWORD *v3; // esi + int v4; // eax + _DWORD *v5; // eax + int v6; // ebp + int v7; // edi + int v8; // edx + _DWORD *v9; // eax + int v10; // ebp + int v11; // ecx + int v12; // edx + int v13; // esi + int v14; // eax + bool v15; // zf + __int16 v16; // di + _DWORD *v18; // edx + int v19; // ecx + int v20; // ecx + __int16 v21; // ax + int v22; // ecx + const std::locale *v23; // [esp+8h] [ebp-48h] + _DWORD *v24; // [esp+20h] [ebp-30h] + _DWORD *v25; // [esp+20h] [ebp-30h] + _DWORD *v26[8]; // [esp+30h] [ebp-20h] BYREF + + v3 = a2; + if ( (_DWORD *)this != a2 ) + { + v4 = a2[25]; + if ( v4 > 8 ) + { + if ( v4 > 0xFFFFFFF ) + __cxa_throw_bad_array_new_length(); + v6 = this + 36; + v5 = (_DWORD *)operator new[](8 * v4); + v18 = v5; + v19 = a2[25] - 1; + if ( v19 >= 0 ) + { + do + { + --v19; + *v18 = 0; + v18 += 2; + *(v18 - 1) = 0; + } + while ( v19 != -1 ); + } + } + else + { + v5 = (_DWORD *)(this + 36); + v6 = this + 36; + } + v7 = a2[6]; + if ( v7 ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); + else + ++*(_DWORD *)(v7 + 12); + } + v24 = v5; + std::ios_base::_M_call_callbacks((_DWORD *)this, 0); + v8 = *(_DWORD *)(this + 104); + v9 = v24; + if ( v8 != v6 ) + { + if ( v8 ) + { + operator delete[](*(void **)(this + 104)); + v9 = v24; + } + *(_DWORD *)(this + 104) = 0; + } + v25 = v9; + std::ios_base::_M_dispose_callbacks(this); + v10 = a2[25]; + *(_DWORD *)(this + 24) = v7; + if ( v10 > 0 ) + { + v11 = a2[26]; + v12 = 0; + do + { + v13 = *(_DWORD *)(v11 + v12 * 4 + 4); + v25[v12] = *(_DWORD *)(v11 + v12 * 4); + v25[v12 + 1] = v13; + v12 += 2; + } + while ( v12 != 2 * v10 ); + v3 = a2; + } + *(_DWORD *)(this + 104) = v25; + v14 = v3[3]; + *(_DWORD *)(this + 100) = v10; + v15 = *((_BYTE *)v3 + 118) == 0; + *(_DWORD *)(this + 12) = v14; + *(_DWORD *)(this + 8) = v3[2]; + *(_DWORD *)(this + 4) = v3[1]; + *(_DWORD *)(this + 112) = v3[28]; + if ( v15 ) + { + v20 = v3[31]; + if ( !v20 ) + goto LABEL_28; + v21 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v20 + 40))(v20, 32); + *((_BYTE *)v3 + 118) = 1; + v15 = *(_BYTE *)(this + 118) == 0; + *((_WORD *)v3 + 58) = v21; + v16 = v21; + if ( !v15 ) + goto LABEL_17; + } + else + { + v16 = *((_WORD *)v3 + 58); + if ( *(_BYTE *)(this + 118) ) + { +LABEL_17: + *(_WORD *)(this + 116) = v16; + std::locale::locale((volatile signed __int32 **)v26, (volatile signed __int32 **)v3 + 27, v23); + std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v26); + std::locale::~locale(v26); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + std::ios_base::_M_call_callbacks((_DWORD *)this, 2); + *(_DWORD *)(this + 16) = v3[4]; + std::wios::clear((_DWORD *)this, *(_DWORD *)(this + 20)); + return this; + } + } + v22 = *(_DWORD *)(this + 124); + if ( v22 ) + { + (*(void (__thiscall **)(int, int))(*(_DWORD *)v22 + 40))(v22, 32); + *(_BYTE *)(this + 118) = 1; + goto LABEL_17; + } +LABEL_28: + std::__throw_bad_cast(); + } + return this; +} +// 4F79DE: variable 'v23' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004F7B00) -------------------------------------------------------- +int __thiscall std::wios::setstate(_DWORD *this, int a2) +{ + return std::wios::clear(this, this[5] | a2); +} + +//----- (004F7B10) -------------------------------------------------------- +int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[30] = a2; + return result; +} + +//----- (004F7B20) -------------------------------------------------------- +BOOL __thiscall std::wios::basic_ios(int this, int a2) +{ + std::ios_base::ios_base((_DWORD *)this); + *(_DWORD *)this = &off_539484; + *(_WORD *)(this + 116) = 0; + *(_DWORD *)(this + 112) = 0; + *(_BYTE *)(this + 118) = 0; + *(_DWORD *)(this + 120) = 0; + *(_DWORD *)(this + 124) = 0; + *(_DWORD *)(this + 128) = 0; + *(_DWORD *)(this + 132) = 0; + return std::wios::init(this, a2); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004F7BA0) -------------------------------------------------------- +int __fastcall std::wios::basic_ios(int a1) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)a1); + result = 0; + *(_DWORD *)a1 = &off_539484; + *(_DWORD *)(a1 + 112) = 0; + *(_WORD *)(a1 + 116) = 0; + *(_BYTE *)(a1 + 118) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + return result; +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004F7BF0) -------------------------------------------------------- +BOOL __thiscall std::wios::basic_ios(int this, int a2) +{ + std::ios_base::ios_base((_DWORD *)this); + *(_DWORD *)this = &off_539484; + *(_WORD *)(this + 116) = 0; + *(_DWORD *)(this + 112) = 0; + *(_BYTE *)(this + 118) = 0; + *(_DWORD *)(this + 120) = 0; + *(_DWORD *)(this + 124) = 0; + *(_DWORD *)(this + 128) = 0; + *(_DWORD *)(this + 132) = 0; + return std::wios::init(this, a2); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004F7C70) -------------------------------------------------------- +int __fastcall std::wios::basic_ios(int a1) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)a1); + result = 0; + *(_DWORD *)a1 = &off_539484; + *(_DWORD *)(a1 + 112) = 0; + *(_WORD *)(a1 + 116) = 0; + *(_BYTE *)(a1 + 118) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + return result; +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004F7CC0) -------------------------------------------------------- +void __fastcall std::wios::~wios(_DWORD *a1) +{ + *a1 = &off_539484; + std::ios_base::~ios_base((int)a1); + operator delete(a1); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004F7CE0) -------------------------------------------------------- +void __fastcall std::wios::~wios(int a1) +{ + *(_DWORD *)a1 = &off_539484; + std::ios_base::~ios_base(a1); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004F7CF0) -------------------------------------------------------- +void __fastcall std::wios::~wios(int a1) +{ + *(_DWORD *)a1 = &off_539484; + std::ios_base::~ios_base(a1); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004F7D00) -------------------------------------------------------- +void __fastcall std::exception::~exception(void *a1) +{ + operator delete(a1, 4u); +} + +//----- (004F7D30) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5394A8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5394A8: using guessed type int (*off_5394A8)(); + +//----- (004F7D50) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5394A8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5394A8: using guessed type int (*off_5394A8)(); + +//----- (004F7D70) -------------------------------------------------------- +void __fastcall std::money_get>::~money_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5394A8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F7D7C: variable 'v2' is possibly undefined +// 5394A8: using guessed type int (*off_5394A8)(); + +//----- (004F7D90) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5394A8; + std::locale::facet::~facet(a1); +} +// 4F7D90: variable 'v1' is possibly undefined +// 5394A8: using guessed type int (*off_5394A8)(); + +//----- (004F7DA0) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5394A8; + std::locale::facet::~facet(a1); +} +// 4F7DA0: variable 'v1' is possibly undefined +// 5394A8: using guessed type int (*off_5394A8)(); + +//----- (004F7DB0) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5394C0; + result = a2 != 0; + this[1] = result; + return result; +} +// 5394C0: using guessed type int (*off_5394C0)(); + +//----- (004F7DD0) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5394C0; + result = a2 != 0; + this[1] = result; + return result; +} +// 5394C0: using guessed type int (*off_5394C0)(); + +//----- (004F7DF0) -------------------------------------------------------- +void __fastcall std::money_get>::~money_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5394C0; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F7DFC: variable 'v2' is possibly undefined +// 5394C0: using guessed type int (*off_5394C0)(); + +//----- (004F7E10) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5394C0; + std::locale::facet::~facet(a1); +} +// 4F7E10: variable 'v1' is possibly undefined +// 5394C0: using guessed type int (*off_5394C0)(); + +//----- (004F7E20) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5394C0; + std::locale::facet::~facet(a1); +} +// 4F7E20: variable 'v1' is possibly undefined +// 5394C0: using guessed type int (*off_5394C0)(); + +//----- (004F7E30) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5394D8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5394D8: using guessed type int (*off_5394D8)(); + +//----- (004F7E50) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5394D8; + result = a2 != 0; + this[1] = result; + return result; +} +// 5394D8: using guessed type int (*off_5394D8)(); + +//----- (004F7E70) -------------------------------------------------------- +void __fastcall std::money_put>::~money_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5394D8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F7E7C: variable 'v2' is possibly undefined +// 5394D8: using guessed type int (*off_5394D8)(); + +//----- (004F7E90) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5394D8; + std::locale::facet::~facet(a1); +} +// 4F7E90: variable 'v1' is possibly undefined +// 5394D8: using guessed type int (*off_5394D8)(); + +//----- (004F7EA0) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5394D8; + std::locale::facet::~facet(a1); +} +// 4F7EA0: variable 'v1' is possibly undefined +// 5394D8: using guessed type int (*off_5394D8)(); + +//----- (004F7EB0) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5394F0; + result = a2 != 0; + this[1] = result; + return result; +} +// 5394F0: using guessed type int (*off_5394F0)(); + +//----- (004F7ED0) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_5394F0; + result = a2 != 0; + this[1] = result; + return result; +} +// 5394F0: using guessed type int (*off_5394F0)(); + +//----- (004F7EF0) -------------------------------------------------------- +void __fastcall std::money_put>::~money_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_5394F0; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4F7EFC: variable 'v2' is possibly undefined +// 5394F0: using guessed type int (*off_5394F0)(); + +//----- (004F7F10) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5394F0; + std::locale::facet::~facet(a1); +} +// 4F7F10: variable 'v1' is possibly undefined +// 5394F0: using guessed type int (*off_5394F0)(); + +//----- (004F7F20) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_5394F0; + std::locale::facet::~facet(a1); +} +// 4F7F20: variable 'v1' is possibly undefined +// 5394F0: using guessed type int (*off_5394F0)(); + +//----- (004F7F30) -------------------------------------------------------- +void __fastcall std::type_info::~type_info(void *a1) +{ + operator delete(a1, 8u); +} + +//----- (004F7F60) -------------------------------------------------------- +void __cdecl std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + _DWORD *a1, + int a2, + _DWORD *a3, + unsigned __int8 (__cdecl **a4)(int, int)) +{ + void *v4[34]; // [esp+20h] [ebp-128h] BYREF + void *v5[40]; // [esp+A8h] [ebp-A0h] BYREF + + std::pair::pair(v4, a3); + std::pair::operator=(a3, a1); + std::pair::pair(v5, v4); + std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + (int)a1, + 0, + -252645135 * ((a2 - (int)a1) >> 3), + v5, + *a4); + std::pair::~pair(v5); + std::pair::~pair(v4); +} + +//----- (004F8000) -------------------------------------------------------- +void __noreturn std::unexpected(void) +{ + __cxxabiv1::__unexpected(__cxxabiv1::__unexpected_handler); +} + +//----- (004F8010) -------------------------------------------------------- +void __cdecl std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + int a1, + int a2, + unsigned __int8 (__cdecl **a3)(int, int)) +{ + int v3; // ebx + int i; // esi + void *v5[34]; // [esp+20h] [ebp-128h] BYREF + void *v6[40]; // [esp+A8h] [ebp-A0h] BYREF + + if ( a2 - a1 > 136 ) + { + v3 = -252645135 * ((a2 - a1) >> 3); + for ( i = (v3 - 2) / 2; ; --i ) + { + std::pair::pair(v5, (_DWORD *)(a1 + 136 * i)); + std::pair::pair(v6, v5); + std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + a1, + i, + v3, + v6, + *a3); + std::pair::~pair(v6); + if ( !i ) + break; + std::pair::~pair(v5); + } + std::pair::~pair(v5); + } +} + +//----- (004F80E0) -------------------------------------------------------- +void __cdecl std::__adjust_heap<__gnu_cxx::__normal_iterator *,std::vector>>,int,std::pair,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + int a1, + int a2, + int a3, + _DWORD *a4, + unsigned __int8 (__cdecl *a5)(int, int)) +{ + int v5; // ebx + int v6; // esi + int v7; // ecx + int i; // eax + int v9; // [esp+1Ch] [ebp-ACh] + void *v10[40]; // [esp+28h] [ebp-A0h] BYREF + + v5 = a2; + while ( (a3 - 1) / 2 > v5 ) + { + v6 = 2 * (v5 + 1); + if ( a5(a1 + 272 * (v5 + 1), a1 + 136 * (v6 - 1)) ) + --v6; + v7 = 136 * v5; + v5 = v6; + std::pair::operator=((_DWORD *)(a1 + v7), (_DWORD *)(a1 + 136 * v6)); + } + if ( (a3 & 1) == 0 && (a3 - 2) / 2 == v5 ) + { + std::pair::operator=( + (_DWORD *)(a1 + 136 * v5), + (_DWORD *)(a1 + 136 * (2 * v5 + 1))); + v5 = 2 * v5 + 1; + } + std::pair::pair(v10, a4); + for ( i = v5 - 1; ; i = v9 - 1 ) + { + v9 = i / 2; + if ( a2 >= v5 || !a5(a1 + 136 * v9, (int)v10) ) + break; + std::pair::operator=((_DWORD *)(a1 + 136 * v5), (_DWORD *)(a1 + 136 * v9)); + v5 = v9; + } + std::pair::operator=((_DWORD *)(a1 + 136 * v5), v10); + std::pair::~pair(v10); +} + +//----- (004F8240) -------------------------------------------------------- +int __cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5) +{ + _BYTE *v6; // ebx + unsigned int v7; // eax + int v9; // eax + int v10; // eax + + if ( a5 ) + { + v6 = a1; + do + { + *--v6 = *(_BYTE *)(a3 + a2 % 0xA + 4); + v7 = a2; + a2 /= 0xAu; + } + while ( v7 > 9 ); + } + else if ( (a4 & 0x4A) == 64 ) + { + v6 = a1; + do + { + --v6; + v10 = a2 & 7; + a2 >>= 3; + *v6 = *(_BYTE *)(a3 + v10 + 4); + } + while ( a2 ); + } + else + { + v6 = a1; + do + { + --v6; + v9 = a2 & 0xF; + a2 >>= 4; + *v6 = *(_BYTE *)(a3 + ((a4 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + v9); + } + while ( a2 ); + } + return a1 - v6; +} + +//----- (004F82F0) -------------------------------------------------------- +int __cdecl std::__int_to_char(_BYTE *a1, UDItype n, int a3, __int16 a4, char a5) +{ + unsigned __int64 v5; // rdi + _BYTE *v6; // ebx + unsigned __int64 v7; // kr08_8 + char v9; // al + char v10; // al + unsigned __int64 v11; // [esp+18h] [ebp-24h] + + v5 = __PAIR64__(n, HIDWORD(n)); + if ( a5 ) + { + v6 = a1; + do + { + --v6; + v11 = __PAIR64__(v5, HIDWORD(v5)); + *v6 = *(_BYTE *)(a3 + __PAIR64__(v5, HIDWORD(v5)) % 0xA + 4); + v7 = __PAIR64__(v5, HIDWORD(v5)) / 0xA; + LODWORD(v5) = (__PAIR64__(v5, HIDWORD(v5)) / 0xA) >> 32; + HIDWORD(v5) = v7; + } + while ( v11 > 9 ); + } + else if ( (a4 & 0x4A) == 64 ) + { + v6 = a1; + do + { + v10 = BYTE4(v5); + HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 3; + --v6; + LODWORD(v5) = (unsigned int)v5 >> 3; + *v6 = *(_BYTE *)(a3 + (v10 & 7) + 4); + } + while ( v5 ); + } + else + { + v6 = a1; + do + { + v9 = BYTE4(v5); + HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 4; + --v6; + LODWORD(v5) = (unsigned int)v5 >> 4; + *v6 = *(_BYTE *)(a3 + ((a4 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + (v9 & 0xF)); + } + while ( v5 ); + } + return a1 - v6; +} + +//----- (004F83F0) -------------------------------------------------------- +int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, int a3, __int16 a4, char a5) +{ + _WORD *v6; // ebx + unsigned int v7; // eax + int v9; // eax + int v10; // eax + + if ( a5 ) + { + v6 = a1; + do + { + *--v6 = *(_WORD *)(a3 + 2 * (a2 % 0xA) + 8); + v7 = a2; + a2 /= 0xAu; + } + while ( v7 > 9 ); + } + else if ( (a4 & 0x4A) == 64 ) + { + v6 = a1; + do + { + --v6; + v10 = a2 & 7; + a2 >>= 3; + *v6 = *(_WORD *)(a3 + 2 * v10 + 8); + } + while ( a2 ); + } + else + { + v6 = a1; + do + { + --v6; + v9 = ((a4 & 0x4000) == 0 ? 4 : 20) + (a2 & 0xF); + a2 >>= 4; + *v6 = *(_WORD *)(a3 + 2 * v9); + } + while ( a2 ); + } + return a1 - v6; +} + +//----- (004F84B0) -------------------------------------------------------- +int __cdecl std::__int_to_char(_WORD *a1, UDItype n, int a3, __int16 a4, char a5) +{ + unsigned __int64 v5; // rdi + _WORD *v6; // ebx + unsigned __int64 v7; // kr08_8 + char v9; // al + char v10; // al + unsigned __int64 v11; // [esp+18h] [ebp-24h] + + v5 = __PAIR64__(n, HIDWORD(n)); + if ( a5 ) + { + v6 = a1; + do + { + --v6; + v11 = __PAIR64__(v5, HIDWORD(v5)); + *v6 = *(_WORD *)(a3 + 2 * (__PAIR64__(v5, HIDWORD(v5)) % 0xA) + 8); + v7 = __PAIR64__(v5, HIDWORD(v5)) / 0xA; + LODWORD(v5) = (__PAIR64__(v5, HIDWORD(v5)) / 0xA) >> 32; + HIDWORD(v5) = v7; + } + while ( v11 > 9 ); + } + else if ( (a4 & 0x4A) == 64 ) + { + v6 = a1; + do + { + v10 = BYTE4(v5); + HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 3; + --v6; + LODWORD(v5) = (unsigned int)v5 >> 3; + *v6 = *(_WORD *)(a3 + 2 * (v10 & 7) + 8); + } + while ( v5 ); + } + else + { + v6 = a1; + do + { + v9 = BYTE4(v5); + HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 4; + --v6; + LODWORD(v5) = (unsigned int)v5 >> 4; + *v6 = *(_WORD *)(a3 + 2 * (((a4 & 0x4000) == 0 ? 4 : 20) + (v9 & 0xF))); + } + while ( v5 ); + } + return a1 - v6; +} + +//----- (004F85C0) -------------------------------------------------------- +void (*std::get_terminate(void))(void) +{ + return __cxxabiv1::__terminate_handler; +} + +//----- (004F85D0) -------------------------------------------------------- +__int32 __cdecl std::set_terminate(void (*a1)(void)) +{ + return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__terminate_handler, (__int32)a1); +} + +//----- (004F85E0) -------------------------------------------------------- +_BYTE *__cdecl std::__add_grouping(_BYTE *a1, char a2, char *a3, int a4, _BYTE *a5, _BYTE *a6) +{ + _BYTE *v6; // edi + _BYTE *v7; // esi + _BYTE *v8; // ecx + int v9; // edx + unsigned int v10; // ebx + char *v11; // edi + int v12; // ebp + int v13; // ebx + int v14; // edx + _BYTE *result; // eax + int v16; // ebx + _BYTE *v17; // ebp + char v18; // dl + _BYTE *v19; // edi + int v20; // eax + _BYTE *v21; // esi + int v22; // edx + _BYTE *v23; // ebp + char v24; // dl + _BYTE *v25; // edi + int v26; // eax + _BYTE *v27; // esi + int v28; // edx + char *v29; // [esp+4h] [ebp-1Ch] + int v30; // [esp+8h] [ebp-18h] + int v31; // [esp+8h] [ebp-18h] + unsigned int v32; // [esp+Ch] [ebp-14h] + _BYTE *v33; // [esp+38h] [ebp+18h] + _BYTE *v34; // [esp+38h] [ebp+18h] + + v6 = a1; + v7 = a5; + v8 = a6; + v9 = *a3; + if ( (unsigned __int8)(v9 - 1) > 0x7Du || a6 - a5 <= v9 ) + { + if ( a6 == a5 ) + return a1; + v13 = -1; + v14 = -1; + v12 = 0; + v32 = 0; + v29 = a3; + goto LABEL_10; + } + v10 = 0; + v30 = 0; + do + { + v8 -= v9; + if ( a4 - 1 > v10 ) + ++v10; + else + ++v30; + v11 = &a3[v10]; + v9 = a3[v10]; + } + while ( v8 - a5 > v9 && (unsigned __int8)(v9 - 1) <= 0x7Du ); + v12 = v30; + v32 = v10; + v13 = v10 - 1; + v29 = v11; + v6 = a1; + v14 = v30 - 1; + if ( a5 != v8 ) + { +LABEL_10: + result = &v6[v8 - a5]; + do + *v6++ = *v7++; + while ( v6 != result ); + goto LABEL_12; + } + result = a1; +LABEL_12: + if ( v12 ) + { + v33 = v8; + v31 = v13; + v16 = v14; + do + { + v17 = result + 1; + *result = a2; + v18 = *v29; + if ( *v29 <= 0 ) + { + ++result; + } + else + { + v19 = result + 1; + v20 = (int)&result[(unsigned __int8)(v18 - 1) + 2]; + v21 = v33; + do + *v19++ = *v21++; + while ( v19 != (_BYTE *)v20 ); + v22 = (char)(v18 - 1) + 1; + v33 += v22; + result = &v17[v22]; + } + --v16; + } + while ( v16 != -1 ); + v13 = v31; + v8 = v33; + } + if ( v32 ) + { + v34 = v8; + do + { + v23 = result + 1; + *result = a2; + v24 = a3[v13]; + if ( v24 <= 0 ) + { + ++result; + } + else + { + v25 = result + 1; + v26 = (int)&result[(unsigned __int8)(v24 - 1) + 2]; + v27 = v34; + do + *v25++ = *v27++; + while ( v25 != (_BYTE *)v26 ); + v28 = (char)(v24 - 1) + 1; + v34 += v28; + result = &v23[v28]; + } + --v13; + } + while ( v13 != -1 ); + } + return result; +} + +//----- (004F87B0) -------------------------------------------------------- +_WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, _WORD *a5, _WORD *a6) +{ + _WORD *v6; // eax + int v7; // edx + int v8; // ebp + unsigned int v9; // esi + int v10; // ecx + int v11; // ebx + _WORD *v12; // edi + _WORD *v13; // esi + _WORD *v14; // edx + _WORD *result; // eax + _WORD *v16; // edi + int v17; // ebx + _WORD *v18; // ebp + char v19; // cl + _WORD *v20; // edx + int v21; // eax + _WORD *v22; // esi + _WORD *v23; // edi + int v24; // eax + _WORD *v25; // edx + _WORD *v26; // edi + _WORD *v27; // ebp + char v28; // cl + _WORD *v29; // edx + int v30; // eax + _WORD *v31; // esi + _WORD *v32; // edi + int v33; // eax + _WORD *v34; // edx + char *v35; // [esp+4h] [ebp-1Ch] + unsigned int v36; // [esp+8h] [ebp-18h] + int v37; // [esp+Ch] [ebp-14h] + + v6 = a6; + v7 = *a3; + if ( a6 - a5 <= v7 || (unsigned __int8)(v7 - 1) > 0x7Du ) + { + if ( a6 == a5 ) + return a1; + v36 = 0; + v10 = -1; + v8 = 0; + v35 = a3; + v11 = -1; + goto LABEL_10; + } + v8 = 0; + v9 = 0; + do + { + v6 -= v7; + if ( a4 - 1 > v9 ) + ++v9; + else + ++v8; + v7 = a3[v9]; + } + while ( v6 - a5 > v7 && (unsigned __int8)(v7 - 1) <= 0x7Du ); + v35 = &a3[v9]; + v10 = v8 - 1; + v36 = v9; + v11 = v9 - 1; + if ( a5 != v6 ) + { +LABEL_10: + v12 = a1; + v13 = a5; + do + *v12++ = *v13++; + while ( v6 != v13 ); + v14 = v13; + result = (_WORD *)((char *)a1 + (char *)v13 - (char *)a5); + goto LABEL_13; + } + v14 = a5; + result = a1; +LABEL_13: + if ( v8 ) + { + v37 = v11; + v16 = v14; + v17 = v10; + do + { + v18 = result + 1; + *result = a2; + v19 = *v35; + if ( *v35 <= 0 ) + { + ++result; + } + else + { + v20 = v16; + v21 = (int)&result[(unsigned __int8)(v19 - 1) + 2]; + v22 = v16; + v23 = v18; + do + *v23++ = *v22++; + while ( v23 != (_WORD *)v21 ); + v24 = 2 * (char)(v19 - 1) + 2; + v25 = (_WORD *)((char *)v20 + v24); + result = (_WORD *)((char *)v18 + v24); + v16 = v25; + } + --v17; + } + while ( v17 != -1 ); + v11 = v37; + v14 = v16; + } + if ( v36 ) + { + v26 = v14; + do + { + v27 = result + 1; + *result = a2; + v28 = a3[v11]; + if ( v28 <= 0 ) + { + ++result; + } + else + { + v29 = v26; + v30 = (int)&result[(unsigned __int8)(v28 - 1) + 2]; + v31 = v26; + v32 = v27; + do + *v32++ = *v31++; + while ( v32 != (_WORD *)v30 ); + v33 = 2 * (char)(v28 - 1) + 2; + v34 = (_WORD *)((char *)v29 + v33); + result = (_WORD *)((char *)v27 + v33); + v26 = v34; + } + --v11; + } + while ( v11 != -1 ); + } + return result; +} + +//----- (004F8990) -------------------------------------------------------- +void __cdecl std::__convert_to_v(char *String, double *a2, _DWORD *a3) +{ + char *v3; // ebx + unsigned int Size; // esi + void *Locale; // edi + long double v6; // fst7 + char *v7; // eax + char *EndPtr; // [esp+1Ch] [ebp-20h] BYREF + + v3 = setlocale(0, 0); + Size = strlen(v3) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v3, Size); + setlocale(0, "C"); + v6 = strtod(String, &EndPtr); + v7 = EndPtr; + *a2 = v6; + if ( v7 == String || *v7 ) + { + *a2 = 0.0; + *a3 = 4; + } + else if ( v6 < -1.797693134862316e308 || v6 > 1.797693134862316e308 ) + { + if ( v6 <= 0.0 ) + *a2 = -1.797693134862316e308; + else + *a2 = 1.797693134862316e308; + *a3 = 4; + } + setlocale(0, (const char *)Locale); + operator delete[](Locale); +} + +//----- (004F8AC0) -------------------------------------------------------- +void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3) +{ + char *v3; // ebx + unsigned int Size; // esi + void *Locale; // edi + long double v6; // fst7 + char *v7; // eax + long double v8; // fst7 + char *EndPtr; // [esp+1Ch] [ebp-20h] BYREF + + v3 = setlocale(0, 0); + Size = strlen(v3) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v3, Size); + setlocale(0, "C"); + v6 = strtold(String, &EndPtr); + v7 = EndPtr; + *a2 = v6; + if ( v7 == String || *v7 ) + { + *a2 = 0.0; + *a3 = 4; + } + else if ( v6 < -1.189731495357231765e4932 || v6 > 1.189731495357231765e4932 ) + { + if ( v6 <= 0.0 ) + v8 = -1.189731495357231765e4932; + else + v8 = 1.189731495357231765e4932; + *a2 = v8; + *a3 = 4; + } + setlocale(0, (const char *)Locale); + operator delete[](Locale); +} + +//----- (004F8BE0) -------------------------------------------------------- +void __cdecl std::__convert_to_v(char *String, float *a2, _DWORD *a3) +{ + char *v3; // ebx + unsigned int Size; // esi + void *Locale; // edi + long double v6; // fst7 + char *v7; // eax + char *EndPtr; // [esp+1Ch] [ebp-20h] BYREF + + v3 = setlocale(0, 0); + Size = strlen(v3) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v3, Size); + setlocale(0, "C"); + v6 = strtof(String, &EndPtr); + v7 = EndPtr; + *a2 = v6; + if ( v7 == String || *v7 ) + { + *a2 = 0.0; + *a3 = 4; + } + else if ( v6 < -3.4028235e38 || v6 > 3.4028235e38 ) + { + if ( v6 <= 0.0 ) + *a2 = -3.4028235e38; + else + *a2 = 3.4028235e38; + *a3 = 4; + } + setlocale(0, (const char *)Locale); + operator delete[](Locale); +} + +//----- (004F8D10) -------------------------------------------------------- +void (*std::get_unexpected(void))(void) +{ + return __cxxabiv1::__unexpected_handler; +} + +//----- (004F8D20) -------------------------------------------------------- +__int32 __cdecl std::set_unexpected(void (*a1)(void)) +{ + return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__unexpected_handler, (__int32)a1); +} + +//----- (004F8D30) -------------------------------------------------------- +int std::get_new_handler(void) +{ + return `anonymous namespace'::__new_handler; +} +// 515338: using guessed type int `anonymous namespace'::__new_handler; + +//----- (004F8D40) -------------------------------------------------------- +__int32 __cdecl std::set_new_handler(void (*a1)(void)) +{ + return _InterlockedExchange(&`anonymous namespace'::__new_handler, (__int32)a1); +} +// 515338: using guessed type int `anonymous namespace'::__new_handler; + +//----- (004F8D50) -------------------------------------------------------- +int std::__convert_from_v(int *const *a1, char *Buffer, size_t BufferCount, char *Format, ...) +{ + char *v4; // ebx + unsigned int v6; // edi + void *Locale; // esi + int v8; // ebx + va_list va; // [esp+30h] [ebp+14h] BYREF + + va_start(va, Format); + v4 = setlocale(4, 0); + if ( *v4 == 67 && !v4[1] ) + return vsnprintf_2(Buffer, BufferCount, Format, va); + v6 = strlen(v4) + 1; + Locale = (void *)operator new[](v6); + memcpy(Locale, v4, v6); + setlocale(4, "C"); + v8 = vsnprintf_2(Buffer, BufferCount, Format, va); + setlocale(4, (const char *)Locale); + operator delete[](Locale); + return v8; +} + +//----- (004F8E30) -------------------------------------------------------- +void __cdecl std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + char *a1, + char *a2, + int (__cdecl *a3)(void **, char *)) +{ + char *i; // edi + char *v4; // esi + _DWORD *v5; // ecx + int v6; // edi + _DWORD *v7; // [esp+1Ch] [ebp-ACh] + void *v8[40]; // [esp+28h] [ebp-A0h] BYREF + + if ( a1 != a2 ) + { + for ( i = a1 + 136; i != a2; i = v4 ) + { + v4 = i + 136; + if ( (unsigned __int8)a3((void **)i, a1) ) + { + std::pair::pair(v8, i); + v5 = i + 136; + v6 = -252645135 * ((i - a1) >> 3); + while ( v6 > 0 ) + { + --v6; + v7 = v5 - 34; + std::pair::operator=(v5 - 34, v5 - 68); + v5 = v7; + } + std::pair::operator=(a1, v8); + std::pair::~pair(v8); + } + else + { + std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>( + i, + (int (__cdecl *)(void **, _DWORD *))a3); + } + } + } +} + +//----- (004F8EEC) -------------------------------------------------------- +int __cdecl std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + _DWORD *a1, + int a2, + int a3, + unsigned __int8 (__cdecl *a4)(int, int)) +{ + int result; // eax + char *i; // ebx + char *v6; // eax + int v7; // ebx + unsigned __int8 v8; // al + _DWORD *v9; // ebx + _DWORD *v10; // edi + _DWORD *v11; // edx + unsigned __int8 v12; // al + _DWORD *v13; // [esp+0h] [ebp-48h] + int v14; // [esp+4h] [ebp-44h] + _DWORD *v15; // [esp+18h] [ebp-30h] + _DWORD *v16; // [esp+18h] [ebp-30h] + unsigned __int8 (__cdecl *v18)(int, int); // [esp+28h] [ebp-20h] BYREF + unsigned __int8 (__cdecl *v19)(int, int); // [esp+2Ch] [ebp-1Ch] BYREF + + while ( 1 ) + { + result = a2 - (_DWORD)a1; + if ( a2 - (int)a1 <= 2176 ) + return result; + if ( !a3 ) + { + v18 = a4; + v19 = a4; + std::__make_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + (int)a1, + a2, + &v19); + for ( i = (char *)a2; + ; + std::__pop_heap<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + a1, + (int)i, + i, + &v18) ) + { + v6 = i; + i -= 136; + result = v6 - (char *)a1; + if ( result <= 136 ) + break; + } + return result; + } + --a3; + v15 = &a1[34 * ((-252645135 * (result >> 3)) >> 1)]; + v7 = a2 - 136; + v8 = a4((int)(a1 + 34), (int)v15); + v14 = a2 - 136; + if ( v8 ) + { + if ( a4((int)v15, v14) ) + goto LABEL_14; + if ( a4((int)(a1 + 34), v7) ) + goto LABEL_13; + } + else if ( !a4((int)(a1 + 34), v14) ) + { + if ( !a4((int)v15, v7) ) + { +LABEL_14: + v13 = v15; + goto LABEL_15; + } +LABEL_13: + v13 = (_DWORD *)(a2 - 136); + goto LABEL_15; + } + v13 = a1 + 34; +LABEL_15: + v9 = a1 + 34; + std::pair::swap(a1, v13); + v10 = (_DWORD *)a2; + while ( 1 ) + { + if ( a4((int)v9, (int)a1) ) + goto LABEL_17; + v11 = v10 - 34; + do + { + v10 = v11; + v16 = v11; + v12 = a4((int)a1, (int)v11); + v11 = v16 - 34; + } + while ( v12 ); + if ( v9 >= v10 ) + break; + std::pair::swap(v9, v10); +LABEL_17: + v9 += 34; + } + std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + v9, + a2, + a3, + a4); + a2 = (int)v9; + } +} + +//----- (004F9070) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::__ostream_insert>( + std::ostream::sentry *a1, + int a2, + int a3) +{ + int v3; // eax + char *v4; // esi + int v5; // edi + int v6; // edi + _DWORD *v7; // ecx + unsigned __int8 *v8; // eax + char *v9; // esi + int v10; // ecx + int v12; // eax + int v13; // edx + int v14; // eax + int v15; // edi + _DWORD *v16; // ecx + unsigned __int8 *v17; // eax + int (__stdcall *v18)(unsigned __int8); // eax + int (__stdcall *v19)(unsigned __int8); // eax + std::ostream *v20; // [esp+4h] [ebp-44h] + _BYTE *v21; // [esp+10h] [ebp-38h] + int v22; // [esp+14h] [ebp-34h] + int v23; // [esp+18h] [ebp-30h] + _BYTE *v24; // [esp+18h] [ebp-30h] + unsigned __int8 v25; // [esp+1Fh] [ebp-29h] + unsigned __int8 v26; // [esp+1Fh] [ebp-29h] + char v27[4]; // [esp+28h] [ebp-20h] BYREF + _DWORD *v28; // [esp+2Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v27, a1, v20); + if ( v27[0] ) + { + v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v4 = (char *)a1 + v3; + v5 = *(_DWORD *)((char *)a1 + v3 + 8); + v23 = v5; + if ( a3 >= v5 ) + { + v12 = (*(int (__cdecl **)(int, int))(**((_DWORD **)v4 + 30) + 48))(a2, a3); + v4 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); + if ( a3 == v12 ) + goto LABEL_11; + std::ios::clear((std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *((_DWORD *)v4 + 5) | 1); +LABEL_20: + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + } + else + { + v22 = *((_DWORD *)v4 + 3) & 0xB0; + if ( v22 != 32 ) + { + v6 = v5 - a3; + if ( v4[117] ) + { + v25 = v4[116]; + } + else + { + v21 = (_BYTE *)*((_DWORD *)v4 + 31); + if ( !v21 ) + std::__throw_bad_cast(); + if ( v21[28] ) + { + v25 = v21[61]; + } + else + { + std::ctype::_M_widen_init((int)v21); + v25 = 32; + v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v21 + 24); + if ( v18 != std::ctype::do_widen ) + v25 = ((int (__thiscall *)(_BYTE *, int))v18)(v21, 32); + } + v4[117] = 1; + v4[116] = v25; + v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); + } + while ( 1 ) + { + v7 = *(_DWORD **)((char *)a1 + v3 + 120); + v8 = (unsigned __int8 *)v7[5]; + if ( (unsigned int)v8 < v7[6] ) + { + *v8 = v25; + ++v7[5]; + } + else if ( (*(int (__cdecl **)(_DWORD))(*v7 + 52))(v25) == -1 ) + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + v4 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); + if ( !*((_DWORD *)v4 + 5) ) + goto LABEL_23; + goto LABEL_11; + } + v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); + if ( !--v6 ) + { + v4 = (char *)a1 + v3; + break; + } + } + } + if ( !*((_DWORD *)v4 + 5) ) + { +LABEL_23: + v13 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v4 + 30) + 48))(*((_DWORD *)v4 + 30), a2, a3); + v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v4 = (char *)a1 + v14; + if ( a3 != v13 ) + { + std::ios::clear((std::ostream::sentry *)((char *)a1 + v14), *((_DWORD *)v4 + 5) | 1); + v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v4 = (char *)a1 + v14; + } + if ( v22 == 32 && !*((_DWORD *)v4 + 5) ) + { + v15 = v23 - a3; + if ( v4[117] ) + { + v26 = v4[116]; + } + else + { + v24 = (_BYTE *)*((_DWORD *)v4 + 31); + if ( !v24 ) + std::__throw_bad_cast(); + if ( v24[28] ) + { + v26 = v24[61]; + } + else + { + std::ctype::_M_widen_init((int)v24); + v26 = 32; + v19 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); + if ( v19 != std::ctype::do_widen ) + v26 = ((int (__thiscall *)(_BYTE *, int))v19)(v24, 32); + } + v4[117] = 1; + v4[116] = v26; + v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); + } + do + { + v16 = *(_DWORD **)((char *)a1 + v14 + 120); + v17 = (unsigned __int8 *)v16[5]; + if ( (unsigned int)v17 < v16[6] ) + { + *v17 = v26; + ++v16[5]; + } + else if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v16 + 52))(v16, v26) == -1 ) + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + goto LABEL_20; + } + v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); + --v15; + } + while ( v15 ); + v4 = (char *)a1 + v14; + } + } +LABEL_11: + *((_DWORD *)v4 + 2) = 0; + } + } + v9 = (char *)v28 + *(_DWORD *)(*v28 - 12); + if ( (v9[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v10 = *((_DWORD *)v9 + 30); + if ( v10 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v10 + 24))(v10) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v28 + *(_DWORD *)(*v28 - 12)), + *(_DWORD *)((char *)v28 + *(_DWORD *)(*v28 - 12) + 20) | 1); + } + } + return a1; +} +// 4F9082: variable 'v20' is possibly undefined +// 4F9070: using guessed type char var_20[4]; + +//----- (004F9430) -------------------------------------------------------- +int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3) +{ + char *v3; // esi + int v4; // eax + char *v5; // ecx + unsigned int v6; // eax + _DWORD *v7; // edx + unsigned int v8; // eax + __int16 v9; // ax + char *v10; // esi + int v11; // ecx + int v13; // eax + int v14; // eax + char *v15; // esi + unsigned int v16; // eax + unsigned __int16 v17; // ax + _DWORD *v18; // edx + unsigned int v19; // eax + int v20; // ecx + unsigned __int16 v21; // ax + int v22; // eax + int v23; // ecx + unsigned __int16 v24; // ax + int v25; // eax + int v26; // [esp+20h] [ebp-38h] + int v27; // [esp+24h] [ebp-34h] + int v28; // [esp+28h] [ebp-30h] + int v29; // [esp+28h] [ebp-30h] + unsigned __int16 v30; // [esp+2Eh] [ebp-2Ah] + unsigned __int16 v31; // [esp+2Eh] [ebp-2Ah] + int v32; // [esp+38h] [ebp-20h] BYREF + _DWORD *v33; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v32, a1); + if ( (_BYTE)v32 ) + { + v3 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v4 = *((_DWORD *)v3 + 2); + v5 = v3; + v27 = v4; + if ( a3 >= v4 ) + { + v13 = (*(int (__cdecl **)(int, int))(**((_DWORD **)v3 + 30) + 48))(a2, a3); + v5 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( a3 != v13 ) + { + std::wios::clear(v5, *((_DWORD *)v5 + 5) | 1); +LABEL_20: + *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; + goto LABEL_12; + } + goto LABEL_11; + } + v26 = *((_DWORD *)v3 + 3) & 0xB0; + if ( v26 == 32 ) + { + if ( *((_DWORD *)v3 + 5) ) + { +LABEL_11: + *((_DWORD *)v5 + 2) = 0; + goto LABEL_12; + } + } + else + { + v28 = v4 - a3; + if ( v3[118] ) + { + v30 = *((_WORD *)v3 + 58); + } + else + { + v20 = *((_DWORD *)v3 + 31); + if ( !v20 ) + std::__throw_bad_cast(); + v21 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v20 + 40))(v20, 32); + *((_WORD *)v3 + 58) = v21; + v30 = v21; + v22 = *a1; + v3[118] = 1; + v3 = (char *)a1 + *(_DWORD *)(v22 - 12); + } + do + { + v7 = (_DWORD *)*((_DWORD *)v3 + 30); + v5 = v3; + v8 = v7[5]; + if ( v8 < v7[6] ) + { + v6 = v8 + 2; + *(_WORD *)(v6 - 2) = v30; + v7[5] = v6; + if ( v30 == 0xFFFF ) + goto LABEL_10; + } + else + { + v9 = (*(int (__thiscall **)(_DWORD, _DWORD))(*v7 + 52))(*((_DWORD *)v3 + 30), v30); + v3 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v5 = v3; + if ( v9 == -1 ) + { +LABEL_10: + std::wios::clear(v3, *((_DWORD *)v3 + 5) | 1); + v5 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !*((_DWORD *)v5 + 5) ) + goto LABEL_22; + goto LABEL_11; + } + } + --v28; + } + while ( v28 ); + if ( *((_DWORD *)v3 + 5) ) + goto LABEL_11; + } +LABEL_22: + v14 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v5 + 30) + 48))(*((_DWORD *)v5 + 30), a2, a3); + v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v5 = v15; + if ( a3 != v14 ) + { + std::wios::clear(v15, *((_DWORD *)v15 + 5) | 1); + v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v5 = v15; + } + if ( v26 == 32 && !*((_DWORD *)v15 + 5) ) + { + v29 = v27 - a3; + if ( v15[118] ) + { + v31 = *((_WORD *)v15 + 58); + } + else + { + v23 = *((_DWORD *)v15 + 31); + if ( !v23 ) + std::__throw_bad_cast(); + v24 = (*(int (__cdecl **)(int))(*(_DWORD *)v23 + 40))(32); + *((_WORD *)v15 + 58) = v24; + v31 = v24; + v25 = *a1; + v15[118] = 1; + v15 = (char *)a1 + *(_DWORD *)(v25 - 12); + } + while ( 1 ) + { + v18 = (_DWORD *)*((_DWORD *)v15 + 30); + v5 = v15; + v19 = v18[5]; + if ( v19 < v18[6] ) + { + v16 = v19 + 2; + *(_WORD *)(v16 - 2) = v31; + v18[5] = v16; + v17 = v31; + } + else + { + v17 = (*(int (__thiscall **)(_DWORD, _DWORD))(*v18 + 52))(*((_DWORD *)v15 + 30), v31); + v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v5 = v15; + } + if ( v17 == 0xFFFF ) + break; + if ( !--v29 ) + goto LABEL_11; + } + std::wios::clear(v15, *((_DWORD *)v15 + 5) | 1); + goto LABEL_20; + } + goto LABEL_11; + } +LABEL_12: + v10 = (char *)v33 + *(_DWORD *)(*v33 - 12); + if ( (v10[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v11 = *((_DWORD *)v10 + 30); + if ( v11 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v11 + 24))(v11) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v33 + *(_DWORD *)(*v33 - 12)), + *(_DWORD *)((char *)v33 + *(_DWORD *)(*v33 - 12) + 20) | 1); + } + } + return a1; +} + +//----- (004F97B0) -------------------------------------------------------- +int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) +{ + char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF + + return std::__copy_streambufs_eof>(a1, a2, v3); +} +// 4F97B0: using guessed type char var_D[13]; + +//----- (004F97E0) -------------------------------------------------------- +int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) +{ + char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF + + return std::__copy_streambufs_eof>(a1, a2, v3); +} +// 4F97E0: using guessed type char var_D[13]; + +//----- (004F9810) -------------------------------------------------------- +int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3) +{ + return std::__verify_grouping_impl(a1, a2, *(const char **)a3, *(_DWORD *)(a3 + 4)); +} + +//----- (004F9850) -------------------------------------------------------- +int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3) +{ + return std::__verify_grouping_impl(a1, a2, *a3, *((_DWORD *)*a3 - 3)); +} + +//----- (004F9880) -------------------------------------------------------- +void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden this) +{ + return `anonymous namespace'::__io_category_instance(); +} + +//----- (004F9890) -------------------------------------------------------- +int __cdecl std::_Rb_tree_decrement(_DWORD *a1) +{ + return std::local_Rb_tree_decrement(a1); +} + +//----- (004F98A0) -------------------------------------------------------- +int __cdecl std::_Rb_tree_decrement(_DWORD *a1) +{ + return std::local_Rb_tree_decrement(a1); +} + +//----- (004F98C0) -------------------------------------------------------- +int __cdecl std::_Rb_tree_increment(int a1) +{ + int v1; // eax + int v2; // edx + int result; // eax + + v1 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + do + { + v2 = v1; + v1 = *(_DWORD *)(v1 + 8); + } + while ( v1 ); + return v2; + } + result = *(_DWORD *)(a1 + 4); + if ( a1 == *(_DWORD *)(result + 12) ) + { + do + { + v2 = result; + result = *(_DWORD *)(result + 4); + } + while ( *(_DWORD *)(result + 12) == v2 ); + if ( result == *(_DWORD *)(v2 + 12) ) + return v2; + } + return result; +} + +//----- (004F9910) -------------------------------------------------------- +bool std::uncaught_exception(void) +{ + return __cxa_get_globals()[1] != 0; +} + +//----- (004F9930) -------------------------------------------------------- +int std::uncaught_exceptions(void) +{ + return __cxa_get_globals()[1]; +} + +//----- (004F9940) -------------------------------------------------------- +int __cdecl std::_Rb_tree_black_count(_DWORD *a1, _DWORD *a2) +{ + _DWORD *v2; // eax + int v3; // edx + + v2 = a1; + v3 = 0; + if ( a1 ) + { + while ( 1 ) + { + v3 += *v2 == 1; + if ( v2 == a2 ) + break; + v2 = (_DWORD *)v2[1]; + } + } + return v3; +} + +//----- (004F9970) -------------------------------------------------------- +int __cdecl std::_Rb_tree_rotate_left(int a1, _DWORD *a2) +{ + int result; // eax + int v3; // edx + int v4; // ecx + int v5; // ecx + + result = a1; + v3 = *(_DWORD *)(a1 + 12); + v4 = *(_DWORD *)(v3 + 8); + *(_DWORD *)(a1 + 12) = v4; + if ( v4 ) + *(_DWORD *)(v4 + 4) = a1; + v5 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v3 + 4) = v5; + if ( a1 == *a2 ) + { + *a2 = v3; + *(_DWORD *)(v3 + 8) = a1; + *(_DWORD *)(a1 + 4) = v3; + } + else + { + if ( a1 == *(_DWORD *)(v5 + 8) ) + *(_DWORD *)(v5 + 8) = v3; + else + *(_DWORD *)(v5 + 12) = v3; + *(_DWORD *)(v3 + 8) = a1; + *(_DWORD *)(a1 + 4) = v3; + } + return result; +} + +//----- (004F99D0) -------------------------------------------------------- +int __cdecl std::_Rb_tree_rotate_right(int a1, _DWORD *a2) +{ + int result; // eax + int v3; // edx + int v4; // ecx + int v5; // ecx + + result = a1; + v3 = *(_DWORD *)(a1 + 8); + v4 = *(_DWORD *)(v3 + 12); + *(_DWORD *)(a1 + 8) = v4; + if ( v4 ) + *(_DWORD *)(v4 + 4) = a1; + v5 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v3 + 4) = v5; + if ( a1 == *a2 ) + { + *a2 = v3; + *(_DWORD *)(v3 + 12) = a1; + *(_DWORD *)(a1 + 4) = v3; + } + else + { + if ( a1 == *(_DWORD *)(v5 + 12) ) + *(_DWORD *)(v5 + 12) = v3; + else + *(_DWORD *)(v5 + 8) = v3; + *(_DWORD *)(v3 + 12) = a1; + *(_DWORD *)(a1 + 4) = v3; + } + return result; +} + +//----- (004F9A30) -------------------------------------------------------- +int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) +{ + _BYTE *v3; // ecx + unsigned int v4; // ebx + int v5; // eax + int v6; // edi + int v7; // ebx + int v8; // eax + _BYTE *v9; // ecx + unsigned int v10; // ecx + + v3 = (_BYTE *)a1[2]; + v4 = a1[3]; + *a3 = 1; + if ( v4 <= (unsigned int)v3 ) + { + v6 = 0; + v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v5 == -1 ) + return v6; + v4 = a1[3]; + v3 = (_BYTE *)a1[2]; + } + else + { + LOBYTE(v5) = *v3; + } + v6 = 0; + while ( 1 ) + { + v7 = v4 - (_DWORD)v3; + if ( v7 > 1 ) + break; + while ( 1 ) + { + v9 = (_BYTE *)a2[5]; + if ( (unsigned int)v9 >= a2[6] ) + { + if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, (unsigned __int8)v5) == -1 ) + goto LABEL_17; + } + else + { + *v9 = v5; + ++a2[5]; + } + v10 = a1[2]; + v4 = a1[3]; + ++v6; + if ( v10 >= v4 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1) == -1 ) + return v6; + v3 = (_BYTE *)a1[2]; + v4 = a1[3]; + } + else + { + v3 = (_BYTE *)(v10 + 1); + a1[2] = v3; + } + if ( (unsigned int)v3 < v4 ) + break; +LABEL_6: + v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v5 == -1 ) + return v6; + v3 = (_BYTE *)a1[2]; + v7 = a1[3] - (_DWORD)v3; + if ( v7 > 1 ) + goto LABEL_5; + } + LOBYTE(v5) = *v3; + } +LABEL_5: + v8 = (*(int (__thiscall **)(_DWORD *, _BYTE *, int))(*a2 + 48))(a2, v3, v7); + a1[2] += v8; + v6 += v8; + if ( v7 <= v8 ) + goto LABEL_6; +LABEL_17: + *a3 = 0; + return v6; +} + +//----- (004F9B30) -------------------------------------------------------- +int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) +{ + unsigned __int16 *v3; // eax + unsigned __int16 v4; // ax + int v5; // edi + int v6; // esi + int v7; // eax + int v8; // esi + unsigned __int16 *v9; // ecx + __int16 *v10; // ecx + __int16 v11; // ax + unsigned __int16 *v12; // eax + + *a3 = 1; + v3 = (unsigned __int16 *)a1[2]; + if ( a1[3] <= (unsigned int)v3 ) + v4 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v4 = *v3; + v5 = 0; + if ( v4 == 0xFFFF ) + return v5; + while ( 1 ) + { + while ( 1 ) + { + v8 = a1[3] - a1[2]; + if ( v8 <= 2 ) + break; + v6 = v8 >> 1; + v7 = (*(int (__thiscall **)(_DWORD *, _DWORD, int))(*a2 + 48))(a2, a1[2], v6); + a1[2] += 2 * v7; + v5 += v7; + if ( v6 > v7 ) + goto LABEL_17; +LABEL_6: + v4 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v4 == 0xFFFF ) + return v5; + } + v9 = (unsigned __int16 *)a2[5]; + if ( (unsigned int)v9 < a2[6] ) + { + *v9 = v4; + a2[5] = v9 + 1; + goto LABEL_10; + } + if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, v4) == 0xFFFF ) + break; +LABEL_10: + v10 = (__int16 *)a1[2]; + ++v5; + if ( (unsigned int)v10 >= a1[3] ) + { + v11 = (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + } + else + { + v11 = *v10; + a1[2] = v10 + 1; + } + if ( v11 == -1 ) + return v5; + v12 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v12 >= a1[3] ) + goto LABEL_6; + v4 = *v12; + if ( v4 == 0xFFFF ) + return v5; + } +LABEL_17: + *a3 = 0; + return v5; +} + +//----- (004F9C30) -------------------------------------------------------- +int __cdecl std::__destroy_ios_failure(int (__fastcall ***a1)(_DWORD)) +{ + return (**a1)(a1); +} + +//----- (004F9C40) -------------------------------------------------------- +int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4) +{ + const char *v4; // ecx + int v5; // eax + unsigned int v6; // ebp + unsigned int v7; // edx + char v8; // bl + char v9; // cl + bool v10; // cl + bool v11; // di + char v12; // bl + char v13; // dl + char v15; // [esp+3h] [ebp-11h] + unsigned __int8 v16; // [esp+3h] [ebp-11h] + + v4 = a3; + v5 = a4 - 1; + v6 = a2 - 1; + if ( a2 - 1 > a4 - 1 ) + v6 = a4 - 1; + v7 = 0; + if ( v6 ) + { + do + { + v8 = a3[v5--]; + v9 = a1[v7++]; + v15 = v9; + v10 = v8 != v9; + v11 = v10; + } + while ( v7 < v6 && !v10 ); + v4 = a3; + v16 = v8 == v15; + } + else + { + v16 = 1; + v11 = 0; + } + v12 = a1[v6]; + if ( v5 && !v11 ) + { + do + v13 = v4[v5--]; + while ( v5 && v13 == v12 ); + v16 = v13 == v12; + } + if ( (unsigned __int8)(v12 - 1) <= 0x7Du ) + v16 &= *v4 <= (unsigned __int8)v12; + return v16; +} + +//----- (004F9D10) -------------------------------------------------------- +void __cdecl std::__construct_ios_failure(void *a1, char *a2) +{ + unsigned int *v2; // ecx + int v3; // edx + const std::string *v4; // [esp+4h] [ebp-28h] + int v5; // [esp+1Ah] [ebp-12h] BYREF + unsigned int *v6[4]; // [esp+1Ch] [ebp-10h] BYREF + + std::string::string(v6, a2, (int)&v5); + std::ios_base::failure::failure((int)a1, v6, v4); + if ( (_UNKNOWN *)v6[0] != &unk_51641C ) + { + v2 = v6[0] - 3; + if ( _CRT_MT ) + { + v3 = _InterlockedExchangeAdd((volatile signed __int32 *)v6[0] - 1, 0xFFFFFFFF); + } + else + { + v3 = *(v6[0] - 1); + *(v6[0] - 1) = v3 - 1; + } + if ( v3 <= 0 ) + std::string::_Rep::_M_destroy(v2, (int)&v5 + 1); + } +} +// 4F9D38: variable 'v4' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (004F9D90) -------------------------------------------------------- +bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *a1) +{ + return std::type_info::operator==(a1, (int)&`typeinfo for'std::ios_base::failure); +} +// 53437C: using guessed type int *`typeinfo for'std::ios_base::failure; + +//----- (004F9DB0) -------------------------------------------------------- +void __noreturn std::__throw_out_of_range_fmt(char *Str, ...) +{ + size_t v1; // eax + unsigned int v2; // edx + int v3; // eax + void *v4; // esp + void *v5; // esp + _DWORD *exception; // ebx + const char *v7; // [esp+4h] [ebp-14h] + char v8[8]; // [esp+10h] [ebp-8h] BYREF + va_list va; // [esp+24h] [ebp+Ch] BYREF + + va_start(va, Str); + v1 = strlen(Str); + v2 = v1 + 512; + v3 = 16 * ((v1 + 539) >> 4); + v4 = alloca(v3); + v5 = alloca(v3); + __gnu_cxx::__snprintf_lite(v8, v2, Str, va); + exception = __cxa_allocate_exception(8u); + std::out_of_range::out_of_range(exception, (std::out_of_range *)v8, v7); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::out_of_range, + (void (__cdecl *)(void *))std::out_of_range::~out_of_range); +} +// 4F9E0C: variable 'v7' is possibly undefined +// 5344E4: using guessed type int *`typeinfo for'std::out_of_range; + +//----- (004F9E40) -------------------------------------------------------- +void __cdecl std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>( + _DWORD *a1, + int (__cdecl *a2)(void **, _DWORD *)) +{ + _DWORD *v2; // ebx + _DWORD *v3; // esi + _DWORD *v4; // edi + char v5; // al + void *v6[40]; // [esp+18h] [ebp-A0h] BYREF + + v2 = a1 - 34; + std::pair::pair(v6, a1); + while ( 1 ) + { + v3 = v2 + 34; + v4 = v2; + v5 = a2(v6, v2); + v2 -= 34; + if ( !v5 ) + break; + std::pair::operator=(v3, v4); + } + std::pair::operator=(v3, v6); + std::pair::~pair(v6); +} + +//----- (004F9ED0) -------------------------------------------------------- +int *__cdecl std::_Rb_tree_rebalance_for_erase(int *a1, _DWORD *a2) +{ + int *v2; // ebp + int *v3; // edi + int *v4; // eax + int *v5; // ecx + int *v6; // edx + int *v7; // eax + int *v8; // ebp + int v9; // edi + int v10; // edi + int *v11; // ebp + int v12; // edi + int *v13; // edi + int *v14; // ecx + _DWORD *v15; // edi + int *v16; // ecx + int *v17; // ebp + int v18; // edi + int *v19; // edi + _DWORD *v20; // edi + int *v21; // ebp + int v22; // ecx + int v23; // ecx + int v25; // ecx + int *v26; // ecx + int *v27; // ebp + int *v28; // ecx + int *v29; // edi + _DWORD *v30; // edi + int v31; // edi + int v32; // edi + int *v33; // ebp + _DWORD *v34; // edi + int v35; // ecx + int v36; // ecx + _DWORD *v37; // edi + int v38; // edi + int v39; // edi + _DWORD *v40; // edi + _DWORD *v41; // [esp+0h] [ebp-14h] + _DWORD *v42; // [esp+0h] [ebp-14h] + + v2 = (int *)a1[2]; + v3 = (int *)a1[3]; + if ( !v2 ) + goto LABEL_76; + if ( !v3 ) + { + v7 = (int *)a1[1]; + goto LABEL_56; + } + v4 = (int *)a1[3]; + do + { + v5 = v4; + v4 = (int *)v4[2]; + } + while ( v4 ); + v6 = (int *)v5[3]; + if ( v5 == a1 ) + { + v3 = (int *)v5[3]; +LABEL_76: + v7 = (int *)a1[1]; + if ( !v3 ) + { + v6 = 0; + goto LABEL_57; + } + v2 = v3; +LABEL_56: + v2[1] = (int)v7; + v6 = v2; +LABEL_57: + if ( (int *)a2[1] == a1 ) + { + a2[1] = v6; + } + else + { + v25 = a1[1]; + if ( *(int **)(v25 + 8) == a1 ) + *(_DWORD *)(v25 + 8) = v6; + else + *(_DWORD *)(v25 + 12) = v6; + } + if ( (int *)a2[2] == a1 ) + { + v28 = v6; + if ( a1[3] ) + { + do + { + v29 = v28; + v28 = (int *)v28[2]; + } + while ( v28 ); + a2[2] = v29; + } + else + { + a2[2] = a1[1]; + } + } + v10 = *a1; + if ( (int *)a2[3] == a1 ) + { + v26 = v6; + if ( a1[2] ) + { + do + { + v27 = v26; + v26 = (int *)v26[3]; + } + while ( v26 ); + a2[3] = v27; + } + else + { + a2[3] = a1[1]; + } + } + goto LABEL_14; + } + v2[1] = (int)v5; + v7 = v3; + v5[2] = (int)v2; + if ( v5 != v3 ) + { + v7 = (int *)v5[1]; + v8 = v7; + if ( v6 ) + { + v6[1] = (int)v7; + v8 = (int *)v5[1]; + } + v8[2] = (int)v6; + v5[3] = (int)v3; + *(_DWORD *)(a1[3] + 4) = v5; + } + if ( (int *)a2[1] == a1 ) + { + a2[1] = v5; + v9 = a1[1]; + } + else + { + v9 = a1[1]; + if ( *(int **)(v9 + 8) == a1 ) + *(_DWORD *)(v9 + 8) = v5; + else + *(_DWORD *)(v9 + 12) = v5; + } + v5[1] = v9; + v10 = *v5; + *v5 = *a1; + *a1 = v10; +LABEL_14: + if ( !v10 ) + return a1; + if ( (int *)a2[1] == v6 ) + { +LABEL_53: + if ( v6 ) + goto LABEL_68; + return a1; + } + while ( 1 ) + { + if ( v6 && *v6 != 1 ) + goto LABEL_68; + v14 = (int *)v7[2]; + if ( v14 != v6 ) + break; + v14 = (int *)v7[3]; + v17 = (int *)v14[2]; + if ( !*v14 ) + { + *v14 = 1; + *v7 = 0; + v7[3] = (int)v17; + if ( v17 ) + v17[1] = (int)v7; + v18 = v7[1]; + v14[1] = v18; + if ( v7 == (int *)a2[1] ) + { + a2[1] = v14; + v19 = (int *)v7[3]; + } + else if ( v7 == *(int **)(v18 + 8) ) + { + *(_DWORD *)(v18 + 8) = v14; + v19 = v17; + } + else + { + *(_DWORD *)(v18 + 12) = v14; + v19 = (int *)v7[3]; + } + v14[2] = (int)v7; + v17 = (int *)v19[2]; + v7[1] = (int)v14; + v14 = v19; + } + if ( v17 && *v17 != 1 ) + { + v37 = (_DWORD *)v14[3]; + v41 = v37; + if ( !v37 || *v37 == 1 ) + { + v38 = v17[3]; + *v17 = 1; + *v14 = 0; + v14[2] = v38; + if ( v38 ) + *(_DWORD *)(v38 + 4) = v14; + v39 = v14[1]; + v17[1] = v39; + if ( v14 == (int *)a2[1] ) + { + a2[1] = v17; + } + else if ( v14 == *(int **)(v39 + 12) ) + { + *(_DWORD *)(v39 + 12) = v17; + } + else + { + *(_DWORD *)(v39 + 8) = v17; + } + v17[3] = (int)v14; + v14[1] = (int)v17; + v21 = (int *)v7[3]; + v40 = (_DWORD *)v21[3]; + *v21 = *v7; + v41 = v40; + *v7 = 1; + if ( !v40 ) + goto LABEL_47; + goto LABEL_46; + } +LABEL_45: + v21 = (int *)v7[3]; + *v14 = *v7; + *v7 = 1; +LABEL_46: + *v41 = 1; +LABEL_47: + v22 = v21[2]; + v7[3] = v22; + if ( v22 ) + *(_DWORD *)(v22 + 4) = v7; + v23 = v7[1]; + v21[1] = v23; + if ( v7 == (int *)a2[1] ) + { + a2[1] = v21; + } + else if ( v7 == *(int **)(v23 + 8) ) + { + *(_DWORD *)(v23 + 8) = v21; + } + else + { + *(_DWORD *)(v23 + 12) = v21; + } + v21[2] = (int)v7; + v7[1] = (int)v21; + goto LABEL_53; + } + v20 = (_DWORD *)v14[3]; + if ( v20 && *v20 != 1 ) + { + v41 = (_DWORD *)v14[3]; + goto LABEL_45; + } +LABEL_28: + *v14 = 0; + v16 = (int *)a2[1]; + v6 = v7; + if ( v7 == v16 ) + goto LABEL_69; + v7 = (int *)v7[1]; + } + v11 = (int *)v14[3]; + if ( !*v14 ) + { + *v14 = 1; + *v7 = 0; + v7[2] = (int)v11; + if ( v11 ) + v11[1] = (int)v7; + v12 = v7[1]; + v14[1] = v12; + if ( v7 == (int *)a2[1] ) + { + a2[1] = v14; + v13 = (int *)v7[2]; + } + else if ( v7 == *(int **)(v12 + 12) ) + { + *(_DWORD *)(v12 + 12) = v14; + v13 = v11; + } + else + { + *(_DWORD *)(v12 + 8) = v14; + v13 = (int *)v7[2]; + } + v14[3] = (int)v7; + v11 = (int *)v13[3]; + v7[1] = (int)v14; + v14 = v13; + } + if ( !v11 || *v11 == 1 ) + { + v15 = (_DWORD *)v14[2]; + if ( v15 && *v15 != 1 ) + { + v42 = (_DWORD *)v14[2]; + goto LABEL_90; + } + goto LABEL_28; + } + v30 = (_DWORD *)v14[2]; + v42 = v30; + if ( v30 && *v30 != 1 ) + { +LABEL_90: + v33 = (int *)v7[2]; + *v14 = *v7; + *v7 = 1; + goto LABEL_91; + } + v31 = v11[2]; + *v11 = 1; + *v14 = 0; + v14[3] = v31; + if ( v31 ) + *(_DWORD *)(v31 + 4) = v14; + v32 = v14[1]; + v11[1] = v32; + if ( v14 == (int *)a2[1] ) + { + a2[1] = v11; + } + else if ( v14 == *(int **)(v32 + 8) ) + { + *(_DWORD *)(v32 + 8) = v11; + } + else + { + *(_DWORD *)(v32 + 12) = v11; + } + v11[2] = (int)v14; + v14[1] = (int)v11; + v33 = (int *)v7[2]; + v34 = (_DWORD *)v33[2]; + *v33 = *v7; + v42 = v34; + *v7 = 1; + if ( v34 ) +LABEL_91: + *v42 = 1; + v35 = v33[3]; + v7[2] = v35; + if ( v35 ) + *(_DWORD *)(v35 + 4) = v7; + v36 = v7[1]; + v33[1] = v36; + if ( v7 == (int *)a2[1] ) + { + a2[1] = v33; + } + else if ( v7 == *(int **)(v36 + 12) ) + { + *(_DWORD *)(v36 + 12) = v33; + } + else + { + *(_DWORD *)(v36 + 8) = v33; + } + v33[3] = (int)v7; + v7[1] = (int)v33; + if ( !v6 ) + return a1; +LABEL_68: + v16 = v6; +LABEL_69: + *v16 = 1; + return a1; +} + +//----- (004FA390) -------------------------------------------------------- +_DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4) +{ + _DWORD *v4; // ecx + _DWORD *v5; // edi + _DWORD *result; // eax + _DWORD *v7; // edx + _DWORD *v8; // eax + _DWORD *v9; // ebx + _DWORD *v10; // ebp + int v11; // edx + int v12; // ebx + int v13; // ebx + int v14; // edx + int v15; // edx + int v16; // edi + int v17; // ebx + _DWORD *v18; // ebx + int v19; // ebx + _DWORD *v20; // ebx + _DWORD *v21; // edi + + v4 = a2; + a2[1] = a3; + a2[2] = 0; + a2[3] = 0; + *a2 = 0; + if ( !a1 ) + { + a3[3] = a2; + if ( (_DWORD *)a4[3] == a3 ) + { + v5 = (_DWORD *)a4[1]; + a4[3] = a2; + result = v5; +LABEL_6: + if ( a2 == v5 ) + { +LABEL_18: + *result = 1; + return result; + } + while ( 1 ) + { + while ( 1 ) + { + v7 = (_DWORD *)v4[1]; + if ( *v7 ) + goto LABEL_18; + v8 = (_DWORD *)v7[1]; + v9 = (_DWORD *)v8[2]; + if ( v7 != v9 ) + { + if ( !v9 || *v9 ) + { + if ( (_DWORD *)v7[2] == v4 ) + { + v16 = v4[3]; + v17 = v7[1]; + v7[2] = v16; + if ( v16 ) + { + *(_DWORD *)(v16 + 4) = v7; + v17 = v7[1]; + } + v4[1] = v17; + if ( v7 == (_DWORD *)a4[1] ) + { + a4[1] = v4; + } + else if ( v7 == *(_DWORD **)(v17 + 12) ) + { + *(_DWORD *)(v17 + 12) = v4; + } + else + { + *(_DWORD *)(v17 + 8) = v4; + } + v18 = v4; + v4[3] = v7; + v7[1] = v4; + v4 = v7; + v7 = v18; + } + *v7 = 1; + v11 = v8[3]; + *v8 = 0; + v12 = *(_DWORD *)(v11 + 8); + v8[3] = v12; + if ( v12 ) + *(_DWORD *)(v12 + 4) = v8; + v13 = v8[1]; + *(_DWORD *)(v11 + 4) = v13; + if ( v8 == (_DWORD *)a4[1] ) + { + a4[1] = v11; + } + else if ( v8 == *(_DWORD **)(v13 + 8) ) + { + *(_DWORD *)(v13 + 8) = v11; + } + else + { + *(_DWORD *)(v13 + 12) = v11; + } + *(_DWORD *)(v11 + 8) = v8; + v8[1] = v11; + v5 = (_DWORD *)a4[1]; + } + else + { + *v7 = 1; + v4 = v8; + *v9 = 1; + *v8 = 0; + } + goto LABEL_11; + } + v10 = (_DWORD *)v8[3]; + if ( !v10 || *v10 ) + break; + v4 = (_DWORD *)v7[1]; + *v7 = 1; + *v10 = 1; + *v8 = 0; + result = v5; + if ( v5 == v4 ) + { +LABEL_17: + result = v4; + goto LABEL_18; + } + } + if ( (_DWORD *)v7[3] == v4 ) + break; +LABEL_29: + *v7 = 1; + v14 = v9[3]; + *v8 = 0; + v8[2] = v14; + if ( v14 ) + *(_DWORD *)(v14 + 4) = v8; + v15 = v8[1]; + v9[1] = v15; + if ( v8 == (_DWORD *)a4[1] ) + { + a4[1] = v9; + } + else if ( v8 == *(_DWORD **)(v15 + 12) ) + { + *(_DWORD *)(v15 + 12) = v9; + } + else + { + *(_DWORD *)(v15 + 8) = v9; + } + v9[3] = v8; + v8[1] = v9; + v5 = (_DWORD *)a4[1]; +LABEL_11: + result = v5; + if ( v5 == v4 ) + goto LABEL_17; + } + v19 = v4[2]; + v7[3] = v19; + if ( v19 ) + { + *(_DWORD *)(v19 + 4) = v7; + v20 = (_DWORD *)v7[1]; + v4[1] = v20; + if ( v7 != (_DWORD *)a4[1] ) + { + if ( v7 != (_DWORD *)v20[2] ) + { + v20[3] = v4; +LABEL_48: + v21 = v4; + v4[2] = v7; + v9 = (_DWORD *)v8[2]; + v7[1] = v4; + v4 = v7; + v7 = v21; + goto LABEL_29; + } +LABEL_54: + v20[2] = v4; + goto LABEL_48; + } + } + else + { + v4[1] = v8; + v20 = v8; + if ( v7 != (_DWORD *)a4[1] ) + goto LABEL_54; + } + a4[1] = v4; + goto LABEL_48; + } +LABEL_5: + v5 = (_DWORD *)a4[1]; + result = v5; + goto LABEL_6; + } + a3[2] = a2; + if ( a4 != a3 ) + { + if ( (_DWORD *)a4[2] == a3 ) + a4[2] = a2; + goto LABEL_5; + } + result = a2; + a4[1] = a2; + a4[3] = a2; + *a2 = 1; + return result; +} + +//----- (004FA630) -------------------------------------------------------- +_DWORD *__cdecl std::ws>(_DWORD *a1) +{ + _DWORD *v1; // esi + _DWORD *v2; // edi + _BYTE *v3; // eax + unsigned int v4; // eax + unsigned int v5; // edx + const std::locale *v7; // [esp+4h] [ebp-28h] + _DWORD *v8[4]; // [esp+1Ch] [ebp-10h] BYREF + + std::locale::locale( + (volatile signed __int32 **)v8, + (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), + v7); + v1 = std::use_facet>((int)v8); + std::locale::~locale(v8); + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (_BYTE *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + goto LABEL_5; +LABEL_11: + v3 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); + if ( v3 == (_BYTE *)-1 ) + { +LABEL_9: + std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); + } + else + { + while ( (*(_BYTE *)(v1[6] + 2 * (unsigned __int8)v3) & 0x20) != 0 ) + { + v4 = v2[2]; + v5 = v2[3]; + if ( v4 < v5 ) + { + v3 = (_BYTE *)(v4 + 1); + v2[2] = v3; + } + else + { + if ( (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2) == -1 ) + goto LABEL_9; + v3 = (_BYTE *)v2[2]; + v5 = v2[3]; + } + if ( (unsigned int)v3 >= v5 ) + goto LABEL_11; +LABEL_5: + LOBYTE(v3) = *v3; + } + } + return a1; +} +// 4FA64F: variable 'v7' is possibly undefined + +//----- (004FA700) -------------------------------------------------------- +_DWORD *__cdecl std::ws>(_DWORD *a1) +{ + void *v1; // edi + _DWORD *v2; // ebx + unsigned __int16 *v3; // eax + __int16 v4; // ax + unsigned __int16 i; // ax + __int16 *v6; // edx + const std::locale *v8; // [esp+Ch] [ebp-28h] + _DWORD *v9[4]; // [esp+24h] [ebp-10h] BYREF + + std::locale::locale( + (volatile signed __int32 **)v9, + (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), + v8); + v1 = std::use_facet>((int)v9); + std::locale::~locale(v9); + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (unsigned __int16 *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + goto LABEL_5; +LABEL_12: + for ( i = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); i != 0xFFFF; i = *v3 ) + { + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v1 + 8))(v1, 32, i) ) + return a1; + v6 = (__int16 *)v2[2]; + if ( (unsigned int)v6 < v2[3] ) + { + v4 = *v6; + v2[2] = v6 + 1; + if ( v4 == -1 ) + break; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v2 + 40))(v2) == 0xFFFF ) + { + break; + } + v3 = (unsigned __int16 *)v2[2]; + if ( (unsigned int)v3 >= v2[3] ) + goto LABEL_12; +LABEL_5: + ; + } + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); + return a1; +} +// 4FA71F: variable 'v8' is possibly undefined + +//----- (004FA7F0) -------------------------------------------------------- +std::ios_base *__cdecl std::hex(std::ios_base *a1) +{ + *((_DWORD *)a1 + 3) = *((_DWORD *)a1 + 3) & 0xFFFFFFB5 | 8; + return a1; +} + +//----- (004FA810) -------------------------------------------------------- +_DWORD *__cdecl std::endl>(std::ostream::sentry *a1) +{ + int v1; // eax + _BYTE *v2; // ebx + int v3; // eax + std::ostream::sentry *v4; // eax + int (__stdcall *v6)(unsigned __int8); // edx + char v7; // [esp+4h] [ebp-18h] + + v1 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v2 = *(_BYTE **)((char *)a1 + v1 + 124); + if ( !v2 ) + std::__throw_bad_cast(); + if ( v2[28] ) + { + v3 = (char)v2[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v1 + 124)); + v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); + v3 = 10; + if ( v6 != std::ctype::do_widen ) + v3 = ((char (__thiscall *)(_BYTE *, int))v6)(v2, 10); + } + v4 = std::ostream::put(a1, (std::ostream *)v3, v7); + return std::ostream::flush(v4); +} +// 4FA835: variable 'v7' is possibly undefined + +//----- (004FA890) -------------------------------------------------------- +_DWORD *__cdecl std::endl>(int *a1) +{ + int v1; // ecx + unsigned __int16 v2; // ax + int *v3; // eax + + v1 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); + if ( !v1 ) + std::__throw_bad_cast(); + v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 40))(v1, 10); + v3 = std::wostream::put(a1, v2); + return std::wostream::flush(v3); +} + +//----- (004FA8E0) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1) +{ + char v2; // [esp+4h] [ebp-18h] + + return std::ostream::put(a1, 0, v2); +} +// 4FA8EE: variable 'v2' is possibly undefined + +//----- (004FA900) -------------------------------------------------------- +int *__cdecl std::ends>(int *a1) +{ + return std::wostream::put(a1, 0); +} + +//----- (004FA920) -------------------------------------------------------- +void __cdecl std::sort<__gnu_cxx::__normal_iterator *,std::vector>>,bool (*)(std::pair const&,std::pair const&)>( + char *a1, + char *a2, + unsigned __int8 (__cdecl *a3)(int, int)) +{ + unsigned int v3; // eax + char *v4; // ebx + char *v5; // [esp+0h] [ebp-38h] + + if ( a1 != a2 ) + { + _BitScanReverse(&v3, -252645135 * ((a2 - a1) >> 3)); + std::__introsort_loop<__gnu_cxx::__normal_iterator *,std::vector>>,int,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + a1, + (int)a2, + 2 * (31 - (v3 ^ 0x1F)), + a3); + if ( a2 - a1 <= 2176 ) + { + std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + a1, + a2, + (int (__cdecl *)(void **, char *))a3); + } + else + { + v4 = a1 + 2176; + std::__insertion_sort<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Iter_comp_iter const&,std::pair const&)>>( + a1, + a1 + 2176, + (int (__cdecl *)(void **, char *))a3); + while ( v4 != a2 ) + { + v5 = v4; + v4 += 136; + std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator *,std::vector>>,__gnu_cxx::__ops::_Val_comp_iter const&,std::pair const&)>>( + v5, + (int (__cdecl *)(void **, _DWORD *))a3); + } + } + } +} + +//----- (004FA9D0) -------------------------------------------------------- +_DWORD *__cdecl std::flush>(_DWORD *a1) +{ + return std::ostream::flush(a1); +} + +//----- (004FA9E0) -------------------------------------------------------- +_DWORD *__cdecl std::flush>(_DWORD *a1) +{ + return std::wostream::flush(a1); +} + +//----- (004FA9F0) -------------------------------------------------------- +std::istream::sentry *__cdecl std::getline,std::allocator>( + std::istream::sentry *a1, + _DWORD *a2) +{ + int v2; // eax + _BYTE *v3; // ebx + unsigned __int8 v4; // al + int (__stdcall *v6)(unsigned __int8); // edx + + v2 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v3 = *(_BYTE **)((char *)a1 + v2 + 124); + if ( !v3 ) + std::__throw_bad_cast(); + if ( v3[28] ) + { + v4 = v3[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v2 + 124)); + v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); + v4 = 10; + if ( v6 != std::ctype::do_widen ) + v4 = ((int (__thiscall *)(_BYTE *, int))v6)(v3, 10); + } + return std::getline,std::allocator>(a1, a2, v4); +} + +//----- (004FAA70) -------------------------------------------------------- +std::istream::sentry *__cdecl std::getline,std::allocator>( + std::istream::sentry *a1, + _DWORD *a2, + unsigned __int8 a3) +{ + int v3; // edx + _BYTE *v5; // eax + _DWORD *v6; // esi + unsigned __int8 *v7; // eax + int v8; // eax + _BYTE *v9; // eax + signed int v10; // ebx + unsigned __int8 *v11; // eax + unsigned int v12; // ecx + char *v13; // edx + signed int v14; // ecx + unsigned int v15; // ebx + _BYTE *v16; // eax + unsigned int v17; // edx + _BYTE *v18; // eax + unsigned int v19; // eax + unsigned int v20; // edx + bool v21; // [esp+8h] [ebp-50h] + _BYTE *v22; // [esp+24h] [ebp-34h] + char v23; // [esp+24h] [ebp-34h] + size_t v24; // [esp+28h] [ebp-30h] + unsigned int v25; // [esp+2Ch] [ebp-2Ch] + unsigned int v26; // [esp+2Ch] [ebp-2Ch] + char v27[25]; // [esp+3Fh] [ebp-19h] BYREF + + std::istream::sentry::sentry(v27, a1, (std::istream *)1, v21); + if ( !v27[0] ) + { +LABEL_2: + v3 = 4; +LABEL_3: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v3); + return a1; + } + v5 = (_BYTE *)*a2; + a2[1] = 0; + *v5 = 0; + v6 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v7 = (unsigned __int8 *)v6[2]; + if ( (unsigned int)v7 >= v6[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + else + v8 = *v7; + v25 = 0; + do + { + while ( 1 ) + { + if ( v8 == -1 ) + { + if ( !v25 ) + { + v3 = 6; + goto LABEL_3; + } +LABEL_34: + v3 = 2; + goto LABEL_3; + } + v12 = v6[3]; + v13 = (char *)v6[2]; + if ( a3 == v8 ) + goto LABEL_29; + v14 = v12 - (_DWORD)v13; + v10 = 0x3FFFFFFF - v25; + if ( (int)(0x3FFFFFFF - v25) > v14 ) + v10 = v14; + v24 = a2[1]; + if ( v10 <= 1 ) + break; + v22 = (_BYTE *)v6[2]; + v9 = memchr(v13, (char)a3, v10); + if ( v9 ) + v10 = v9 - v22; + if ( v10 > 0x3FFFFFFF - v24 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(a2, v22, v10); + v25 += v10; + v11 = (unsigned __int8 *)(v10 + v6[2]); + v6[2] = v11; + if ( v6[3] <= (unsigned int)v11 ) + goto LABEL_25; +LABEL_12: + v8 = *v11; + if ( v25 > 0x3FFFFFFE ) + goto LABEL_26; + } + v23 = v8; + v15 = v24 + 1; + v16 = (_BYTE *)*a2; + if ( (_DWORD *)*a2 == a2 + 2 ) + v17 = 15; + else + v17 = a2[2]; + if ( v15 > v17 ) + { + std::string::_M_mutate((int)a2, v24, 0, 0, 1u); + v16 = (_BYTE *)*a2; + } + ++v25; + v16[v24] = v23; + v18 = (_BYTE *)*a2; + a2[1] = v15; + v18[v24 + 1] = 0; + v19 = v6[2]; + v20 = v6[3]; + if ( v19 >= v20 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == -1 ) + goto LABEL_34; + v11 = (unsigned __int8 *)v6[2]; + v20 = v6[3]; + } + else + { + v11 = (unsigned __int8 *)(v19 + 1); + v6[2] = v11; + } + if ( v20 > (unsigned int)v11 ) + goto LABEL_12; +LABEL_25: + v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + } + while ( v25 <= 0x3FFFFFFE ); +LABEL_26: + if ( v8 == -1 ) + goto LABEL_34; + v3 = 4; + if ( a3 != v8 ) + goto LABEL_3; + v13 = (char *)v6[2]; + v12 = v6[3]; +LABEL_29: + v26 = v25 + 1; + if ( v12 <= (unsigned int)v13 ) + { + (*(void (__fastcall **)(_DWORD *))(*v6 + 40))(v6); + if ( v26 ) + return a1; + goto LABEL_2; + } + v6[2] = v13 + 1; + if ( !v26 ) + goto LABEL_2; + return a1; +} +// 4FAD12: control flows out of bounds to 5060B3 +// 4FAA93: variable 'v21' is possibly undefined +// 5060AC: using guessed type int std::getline,std::allocator>(void); +// 4FAA70: using guessed type char var_19[25]; + +//----- (004FAD20) -------------------------------------------------------- +_DWORD *__cdecl std::getline,std::allocator>(_DWORD *a1, int a2, wchar_t a3) +{ + int v3; // eax + _DWORD *v5; // ebx + wchar_t *v6; // eax + wchar_t v7; // si + unsigned int v8; // esi + wchar_t *v9; // eax + wchar_t *v10; // edx + wchar_t *v11; // eax + const wchar_t *v12; // edx + int v13; // eax + size_t v14; // edi + const wchar_t *v15; // eax + unsigned int v16; // ecx + wchar_t v17; // ax + unsigned int v18; // [esp+24h] [ebp-34h] + unsigned int v19; // [esp+2Ch] [ebp-2Ch] + unsigned int v20; // [esp+2Ch] [ebp-2Ch] + char v21[25]; // [esp+3Fh] [ebp-19h] BYREF + + std::wistream::sentry::sentry(v21, a1, 1); + if ( !v21[0] ) + { +LABEL_2: + v3 = 4; +LABEL_3: + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v3); + return a1; + } + *(_DWORD *)(a2 + 4) = 0; + **(_WORD **)a2 = 0; + v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v6 = (wchar_t *)v5[2]; + if ( (unsigned int)v6 >= v5[3] ) + v7 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); + else + v7 = *v6; + v19 = 0; + do + { + while ( 1 ) + { + if ( v7 == 0xFFFF ) + { + if ( !v19 ) + { + v3 = 6; + goto LABEL_3; + } +LABEL_34: + v3 = 2; + goto LABEL_3; + } + v12 = (const wchar_t *)v5[2]; + v18 = v5[3]; + if ( a3 == v7 ) + goto LABEL_29; + v13 = (v5[3] - (int)v12) >> 1; + if ( v13 > (int)(0x1FFFFFFF - v19) ) + v13 = 0x1FFFFFFF - v19; + if ( v13 <= 1 ) + break; + v8 = v13; + v9 = wmemchr(v12, a3, v13); + v10 = (wchar_t *)v5[2]; + if ( v9 ) + v8 = v9 - v10; + if ( 0x1FFFFFFF - *(_DWORD *)(a2 + 4) < v8 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append(a2, v10, v8); + v19 += v8; + v11 = (wchar_t *)(v5[2] + 2 * v8); + v5[2] = v11; + if ( v5[3] <= (unsigned int)v11 ) + goto LABEL_25; +LABEL_12: + v7 = *v11; + if ( v19 > 0x1FFFFFFE ) + goto LABEL_26; + } + v14 = *(_DWORD *)(a2 + 4); + v15 = *(const wchar_t **)a2; + if ( *(_DWORD *)a2 == a2 + 8 ) + v16 = 7; + else + v16 = *(_DWORD *)(a2 + 8); + if ( v14 + 1 > v16 ) + { + std::wstring::_M_mutate((const wchar_t **)a2, v14, 0, 0, 1u); + v12 = (const wchar_t *)v5[2]; + v18 = v5[3]; + v15 = *(const wchar_t **)a2; + } + v15[v14] = v7; + ++v19; + *(_DWORD *)(a2 + 4) = v14 + 1; + v15[v14 + 1] = 0; + if ( v18 <= (unsigned int)v12 ) + { + if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v5 + 40))(v5) == 0xFFFF ) + goto LABEL_34; + } + else + { + v17 = *v12; + v5[2] = v12 + 1; + if ( v17 == 0xFFFF ) + goto LABEL_34; + } + v11 = (wchar_t *)v5[2]; + if ( (unsigned int)v11 < v5[3] ) + goto LABEL_12; +LABEL_25: + v7 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); + } + while ( v19 <= 0x1FFFFFFE ); +LABEL_26: + if ( v7 == 0xFFFF ) + goto LABEL_34; + v3 = 4; + if ( v7 != a3 ) + goto LABEL_3; + v12 = (const wchar_t *)v5[2]; + v18 = v5[3]; +LABEL_29: + v20 = v19 + 1; + if ( v18 <= (unsigned int)v12 ) + { + (*(void (__fastcall **)(_DWORD *))(*v5 + 40))(v5); + if ( v20 ) + return a1; + goto LABEL_2; + } + v5[2] = v12 + 1; + if ( !v20 ) + goto LABEL_2; + return a1; +} +// 4FAFF9: control flows out of bounds to 506137 +// 506130: using guessed type int std::getline,std::allocator>(void); +// 4FAD20: using guessed type char var_19[25]; + +//----- (004FB010) -------------------------------------------------------- +int __cdecl std::setfill(unsigned __int8 a1) +{ + return a1; +} + +//----- (004FB020) -------------------------------------------------------- +int __cdecl std::setfill(unsigned __int16 a1) +{ + return a1; +} + +//----- (004FB030) -------------------------------------------------------- +int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( + int a1, + int a2, + int a3) +{ + int v3; // ebx + int v4; // esi + int v5; // eax + int i; // [esp+1Ch] [ebp-1Ch] + + v3 = a1; + for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) + { + v4 = v3; + if ( i <= 0 ) + break; + if ( std::operator==(v3, a3) ) + return v3; + v4 = v3 + 24; + if ( std::operator==(v3 + 24, a3) ) + return v4; + v4 = v3 + 48; + if ( std::operator==(v3 + 48, a3) ) + return v4; + v4 = v3 + 72; + v3 += 96; + if ( std::operator==(v4, a3) ) + return v4; + } + v5 = a2 - v3; + if ( a2 - v3 != 48 ) + { + if ( v5 != 72 ) + { + if ( v5 != 24 ) + return a2; + goto LABEL_17; + } + if ( std::operator==(v3, a3) ) + return v3; + v4 = v3 + 24; + } + if ( std::operator==(v4, a3) ) + return v4; + v4 += 24; +LABEL_17: + if ( std::operator==(v4, a3) ) + return v4; + return a2; +} + +//----- (004FB110) -------------------------------------------------------- +int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( + int a1, + int a2, + char **a3) +{ + int v3; // ebx + int i; // edi + int v5; // edx + bool v6; // al + int v7; // edx + bool v8; // al + int v9; // edx + bool v10; // al + int v11; // eax + bool v12; // al + int v14; // [esp+1Ch] [ebp-1Ch] + int v15; // [esp+1Ch] [ebp-1Ch] + int v16; // [esp+1Ch] [ebp-1Ch] + + v3 = a1; + for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) + { + v5 = v3; + if ( i <= 0 ) + break; + if ( std::operator==(v3, *a3) ) + return v3; + v6 = std::operator==(v3 + 24, *a3); + v7 = v3 + 24; + if ( v6 ) + return v7; + v8 = std::operator==(v3 + 48, *a3); + v7 = v3 + 48; + if ( v8 ) + return v7; + v9 = v3 + 72; + v3 += 96; + v14 = v9; + v10 = std::operator==(v9, *a3); + v7 = v14; + if ( v10 ) + return v7; + } + v11 = a2 - v3; + if ( a2 - v3 != 48 ) + { + if ( v11 != 72 ) + { + if ( v11 != 24 ) + return a2; + goto LABEL_17; + } + if ( std::operator==(v3, *a3) ) + return v3; + v5 = v3 + 24; + } + v15 = v5; + v12 = std::operator==(v5, *a3); + v7 = v15; + if ( !v12 ) + { + v5 = v15 + 24; +LABEL_17: + v16 = v5; + if ( std::operator==(v5, *a3) ) + return v16; + return a2; + } + return v7; +} + +//----- (004FB224) -------------------------------------------------------- +int __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>( + int a1, + int a2, + int a3) +{ + int v3; // ebx + int v4; // esi + int v5; // eax + int i; // [esp+1Ch] [ebp-1Ch] + + v3 = a1; + for ( i = (-1431655765 * ((a2 - a1) >> 3)) >> 2; ; --i ) + { + v4 = v3; + if ( i <= 0 ) + break; + if ( std::operator==(v3, a3) ) + return v3; + v4 = v3 + 24; + if ( std::operator==(v3 + 24, a3) ) + return v4; + v4 = v3 + 48; + if ( std::operator==(v3 + 48, a3) ) + return v4; + v4 = v3 + 72; + v3 += 96; + if ( std::operator==(v4, a3) ) + return v4; + } + v5 = a2 - v3; + if ( a2 - v3 != 48 ) + { + if ( v5 != 72 ) + { + if ( v5 != 24 ) + return a2; + goto LABEL_17; + } + if ( std::operator==(v3, a3) ) + return v3; + v4 = v3 + 24; + } + if ( std::operator==(v4, a3) ) + return v4; + v4 += 24; +LABEL_17: + if ( std::operator==(v4, a3) ) + return v4; + return a2; +} + +//----- (004FB310) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0) != 0; + } + return v2; +} +// 4FB359: variable 'v2' is possibly undefined +// 5165A8: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534118: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FB360) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0) != 0; + } + return v2; +} +// 4FB3A9: variable 'v2' is possibly undefined +// 5165B0: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534158: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FB3B0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0) != 0; + } + return v2; +} +// 4FB3F9: variable 'v2' is possibly undefined +// 5165B8: using guessed type int std::collate::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534290: using guessed type int *`typeinfo for'std::collate; + +//----- (004FB400) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0) != 0; + } + return v2; +} +// 4FB449: variable 'v2' is possibly undefined +// 5165BC: using guessed type int std::collate::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 53429C: using guessed type int *`typeinfo for'std::collate; + +//----- (004FB450) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0) != 0; + } + return v2; +} +// 4FB499: variable 'v2' is possibly undefined +// 5165C0: using guessed type int std::messages::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5342A8: using guessed type int *`typeinfo for'std::messages; + +//----- (004FB4A0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0) != 0; + } + return v2; +} +// 4FB4E9: variable 'v2' is possibly undefined +// 5165C4: using guessed type int std::messages::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5342C8: using guessed type int *`typeinfo for'std::messages; + +//----- (004FB4F0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0) != 0; + } + return v2; +} +// 4FB539: variable 'v2' is possibly undefined +// 5165C8: using guessed type int std::numpunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5342E8: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004FB540) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0) != 0; + } + return v2; +} +// 4FB589: variable 'v2' is possibly undefined +// 5165CC: using guessed type int std::numpunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5342F4: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004FB590) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0) != 0; + } + return v2; +} +// 4FB5D9: variable 'v2' is possibly undefined +// 5165D0: using guessed type int std::time_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534300: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004FB5E0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0) != 0; + } + return v2; +} +// 4FB629: variable 'v2' is possibly undefined +// 5165D4: using guessed type int std::time_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534320: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004FB630) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0) != 0; + } + return v2; +} +// 4FB679: variable 'v2' is possibly undefined +// 5165D8: using guessed type int std::money_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534340: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004FB680) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0) != 0; + } + return v2; +} +// 4FB6C9: variable 'v2' is possibly undefined +// 5165DC: using guessed type int std::money_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 53434C: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004FB6D0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0) != 0; + } + return v2; +} +// 4FB719: variable 'v2' is possibly undefined +// 5165E0: using guessed type int std::money_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534358: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004FB720) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0) != 0; + } + return v2; +} +// 4FB769: variable 'v2' is possibly undefined +// 5165E4: using guessed type int std::money_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534364: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004FB770) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0) != 0; + } + return v2; +} +// 4FB7B9: variable 'v2' is possibly undefined +// 51642C: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5343F4: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FB7C0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0) != 0; + } + return v2; +} +// 4FB809: variable 'v2' is possibly undefined +// 516434: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534434: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FB810) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::__timepunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::__timepunct, + 0) != 0; + } + return v2; +} +// 4FB859: variable 'v2' is possibly undefined +// 51643C: using guessed type int std::__timepunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 53447C: using guessed type int *`typeinfo for'std::__timepunct; + +//----- (004FB860) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::__timepunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::__timepunct, + 0) != 0; + } + return v2; +} +// 4FB8A9: variable 'v2' is possibly undefined +// 516440: using guessed type int std::__timepunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534488: using guessed type int *`typeinfo for'std::__timepunct; + +//----- (004FB8B0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::ctype::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::ctype, + 0) != 0; + } + return v2; +} +// 4FB8F9: variable 'v2' is possibly undefined +// 516580: using guessed type int std::ctype::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534924: using guessed type int *`typeinfo for'std::ctype; + +//----- (004FB900) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::ctype::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::ctype, + 0) != 0; + } + return v2; +} +// 4FB949: variable 'v2' is possibly undefined +// 516584: using guessed type int std::ctype::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534944: using guessed type int *`typeinfo for'std::ctype; + +//----- (004FB950) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::codecvt::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::codecvt, + 0) != 0; + } + return v2; +} +// 4FB999: variable 'v2' is possibly undefined +// 5165F8: using guessed type int std::codecvt::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534980: using guessed type int *`typeinfo for'std::codecvt; + +//----- (004FB9A0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::codecvt::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::codecvt, + 0) != 0; + } + return v2; +} +// 4FB9E9: variable 'v2' is possibly undefined +// 5165FC: using guessed type int std::codecvt::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 53498C: using guessed type int *`typeinfo for'std::codecvt; + +//----- (004FB9F0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0) != 0; + } + return v2; +} +// 4FBA39: variable 'v2' is possibly undefined +// 516600: using guessed type int std::collate::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534998: using guessed type int *`typeinfo for'std::collate; + +//----- (004FBA40) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0) != 0; + } + return v2; +} +// 4FBA89: variable 'v2' is possibly undefined +// 516604: using guessed type int std::collate::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349A4: using guessed type int *`typeinfo for'std::collate; + +//----- (004FBA90) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::num_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_get>, + 0) != 0; + } + return v2; +} +// 4FBAD9: variable 'v2' is possibly undefined +// 516608: using guessed type int std::num_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349B0: using guessed type int *`typeinfo for'std::num_get>; + +//----- (004FBAE0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::num_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_get>, + 0) != 0; + } + return v2; +} +// 4FBB29: variable 'v2' is possibly undefined +// 51660C: using guessed type int std::num_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349BC: using guessed type int *`typeinfo for'std::num_get>; + +//----- (004FBB30) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::num_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_put>, + 0) != 0; + } + return v2; +} +// 4FBB79: variable 'v2' is possibly undefined +// 516610: using guessed type int std::num_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349C8: using guessed type int *`typeinfo for'std::num_put>; + +//----- (004FBB80) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::num_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_put>, + 0) != 0; + } + return v2; +} +// 4FBBC9: variable 'v2' is possibly undefined +// 516614: using guessed type int std::num_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349D4: using guessed type int *`typeinfo for'std::num_put>; + +//----- (004FBBD0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0) != 0; + } + return v2; +} +// 4FBC19: variable 'v2' is possibly undefined +// 516620: using guessed type int std::messages::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349F4: using guessed type int *`typeinfo for'std::messages; + +//----- (004FBC20) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0) != 0; + } + return v2; +} +// 4FBC69: variable 'v2' is possibly undefined +// 516624: using guessed type int std::messages::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A14: using guessed type int *`typeinfo for'std::messages; + +//----- (004FBC70) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0) != 0; + } + return v2; +} +// 4FBCB9: variable 'v2' is possibly undefined +// 516628: using guessed type int std::numpunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A34: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004FBCC0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0) != 0; + } + return v2; +} +// 4FBD09: variable 'v2' is possibly undefined +// 51662C: using guessed type int std::numpunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A40: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004FBD10) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0) != 0; + } + return v2; +} +// 4FBD59: variable 'v2' is possibly undefined +// 516630: using guessed type int std::time_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A4C: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004FBD60) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0) != 0; + } + return v2; +} +// 4FBDA9: variable 'v2' is possibly undefined +// 516634: using guessed type int std::time_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A6C: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004FBDB0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_put>, + 0) != 0; + } + return v2; +} +// 4FBDF9: variable 'v2' is possibly undefined +// 516638: using guessed type int std::time_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A8C: using guessed type int *`typeinfo for'std::time_put>; + +//----- (004FBE00) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_put>, + 0) != 0; + } + return v2; +} +// 4FBE49: variable 'v2' is possibly undefined +// 51663C: using guessed type int std::time_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A98: using guessed type int *`typeinfo for'std::time_put>; + +//----- (004FBE50) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0) != 0; + } + return v2; +} +// 4FBE99: variable 'v2' is possibly undefined +// 516640: using guessed type int std::money_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534AD0: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004FBEA0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0) != 0; + } + return v2; +} +// 4FBEE9: variable 'v2' is possibly undefined +// 516644: using guessed type int std::money_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534ADC: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004FBEF0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0) != 0; + } + return v2; +} +// 4FBF39: variable 'v2' is possibly undefined +// 516648: using guessed type int std::money_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534AE8: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004FBF40) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(std::money_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0) != 0; + } + return v2; +} +// 4FBF89: variable 'v2' is possibly undefined +// 51664C: using guessed type int std::money_put>::id[5]; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534AF4: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004FBF90) -------------------------------------------------------- +void __noreturn std::terminate(void) +{ + __cxxabiv1::__terminate(__cxxabiv1::__terminate_handler); +} + +//----- (004FBFA0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165A8: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534118: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FC000) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165AC: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534138: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FC060) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165B0: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534158: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FC0C0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165B4: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534178: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FC120) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165B8: using guessed type int std::collate::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534290: using guessed type int *`typeinfo for'std::collate; + +//----- (004FC180) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165BC: using guessed type int std::collate::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 53429C: using guessed type int *`typeinfo for'std::collate; + +//----- (004FC1E0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165C0: using guessed type int std::messages::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5342A8: using guessed type int *`typeinfo for'std::messages; + +//----- (004FC240) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165C4: using guessed type int std::messages::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5342C8: using guessed type int *`typeinfo for'std::messages; + +//----- (004FC2A0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165C8: using guessed type int std::numpunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5342E8: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004FC300) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165CC: using guessed type int std::numpunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5342F4: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004FC360) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165D0: using guessed type int std::time_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534300: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004FC3C0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165D4: using guessed type int std::time_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534320: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004FC420) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165D8: using guessed type int std::money_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534340: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004FC480) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165DC: using guessed type int std::money_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 53434C: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004FC4E0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165E0: using guessed type int std::money_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534358: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004FC540) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165E4: using guessed type int std::money_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534364: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004FC5A0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 51642C: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5343F4: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FC600) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516430: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534414: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FC660) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516434: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534434: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FC6C0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516438: using guessed type int std::moneypunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534454: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004FC720) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::__timepunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::__timepunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 51643C: using guessed type int std::__timepunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 53447C: using guessed type int *`typeinfo for'std::__timepunct; + +//----- (004FC780) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::__timepunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::__timepunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516440: using guessed type int std::__timepunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534488: using guessed type int *`typeinfo for'std::__timepunct; + +//----- (004FC7E0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::ctype::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::ctype, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516580: using guessed type int std::ctype::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534924: using guessed type int *`typeinfo for'std::ctype; + +//----- (004FC840) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::ctype::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::ctype, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516584: using guessed type int std::ctype::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534944: using guessed type int *`typeinfo for'std::ctype; + +//----- (004FC8A0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::codecvt::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::codecvt, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165F8: using guessed type int std::codecvt::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534980: using guessed type int *`typeinfo for'std::codecvt; + +//----- (004FC900) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::codecvt::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::codecvt, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 5165FC: using guessed type int std::codecvt::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 53498C: using guessed type int *`typeinfo for'std::codecvt; + +//----- (004FC960) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516600: using guessed type int std::collate::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534998: using guessed type int *`typeinfo for'std::collate; + +//----- (004FC9C0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516604: using guessed type int std::collate::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349A4: using guessed type int *`typeinfo for'std::collate; + +//----- (004FCA20) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::num_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516608: using guessed type int std::num_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349B0: using guessed type int *`typeinfo for'std::num_get>; + +//----- (004FCA80) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::num_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 51660C: using guessed type int std::num_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349BC: using guessed type int *`typeinfo for'std::num_get>; + +//----- (004FCAE0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::num_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516610: using guessed type int std::num_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349C8: using guessed type int *`typeinfo for'std::num_put>; + +//----- (004FCB40) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::num_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516614: using guessed type int std::num_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349D4: using guessed type int *`typeinfo for'std::num_put>; + +//----- (004FCBA0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516620: using guessed type int std::messages::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 5349F4: using guessed type int *`typeinfo for'std::messages; + +//----- (004FCC00) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516624: using guessed type int std::messages::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A14: using guessed type int *`typeinfo for'std::messages; + +//----- (004FCC60) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516628: using guessed type int std::numpunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A34: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004FCCC0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 51662C: using guessed type int std::numpunct::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A40: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004FCD20) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516630: using guessed type int std::time_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A4C: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004FCD80) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516634: using guessed type int std::time_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A6C: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004FCDE0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516638: using guessed type int std::time_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A8C: using guessed type int *`typeinfo for'std::time_put>; + +//----- (004FCE40) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 51663C: using guessed type int std::time_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534A98: using guessed type int *`typeinfo for'std::time_put>; + +//----- (004FCEA0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516640: using guessed type int std::money_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534AD0: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004FCF00) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516644: using guessed type int std::money_get>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534ADC: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004FCF60) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 516648: using guessed type int std::money_put>::id; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534AE8: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004FCFC0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(std::money_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 51664C: using guessed type int std::money_put>::id[5]; +// 534110: using guessed type int *`typeinfo for'std::locale::facet; +// 534AF4: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004FD020) -------------------------------------------------------- +int __usercall std::local_Rb_tree_decrement@(_DWORD *a1@) +{ + int v2; // edx + int result; // eax + int v4; // edx + + if ( !*a1 && *(_DWORD **)(a1[1] + 4) == a1 ) + return a1[3]; + v2 = a1[2]; + if ( v2 ) + { + do + { + result = v2; + v2 = *(_DWORD *)(v2 + 12); + } + while ( v2 ); + } + else + { + result = a1[1]; + if ( a1 == *(_DWORD **)(result + 8) ) + { + do + { + v4 = result; + result = *(_DWORD *)(result + 4); + } + while ( *(_DWORD *)(result + 8) == v4 ); + } + } + return result; +} + +//----- (004FD080) -------------------------------------------------------- +bool __cdecl std::operator==(int a1, int a2) +{ + bool result; // al + int v3; // edx + + result = 0; + v3 = *(_DWORD *)(a1 + 4); + if ( v3 == *(_DWORD *)(a2 + 4) ) + { + result = 1; + if ( v3 ) + return memcmp(*(const void **)a1, *(const void **)a2, *(_DWORD *)(a1 + 4)) == 0; + } + return result; +} + +//----- (004FD0BC) -------------------------------------------------------- +bool __cdecl std::operator==(char *a1, int a2) +{ + return std::string::compare(a2, a1) == 0; +} + +//----- (004FD0D8) -------------------------------------------------------- +bool __cdecl std::operator==(int a1, char *a2) +{ + return std::string::compare(a1, a2) == 0; +} + +//----- (004FD100) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) +{ + int v2; // eax + + if ( Str ) + { + v2 = strlen(Str); + std::__ostream_insert>(a1, (int)Str, v2); + } + else + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + return a1; +} + +//----- (004FD160) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) +{ + int v2; // eax + + if ( Str ) + { + v2 = strlen(Str); + std::__ostream_insert>(a1, (int)Str, v2); + } + else + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + return a1; +} + +//----- (004FD1C0) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) +{ + int v2; // eax + + if ( Str ) + { + v2 = strlen(Str); + std::__ostream_insert>(a1, (int)Str, v2); + } + else + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + return a1; +} + +//----- (004FD220) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) +{ + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + LOBYTE(v3[0]) = a2; + return std::__ostream_insert>(a1, (int)v3, 1); +} +// 4FD220: using guessed type int var_D[3]; + +//----- (004FD250) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) +{ + int v3[4]; // [esp+1Ch] [ebp-10h] BYREF + + LOBYTE(v3[0]) = a2; + return std::__ostream_insert>(a1, (int)v3, 1); +} +// 4FD250: using guessed type int var_10[4]; + +//----- (004FD280) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) +{ + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + LOBYTE(v3[0]) = a2; + return std::__ostream_insert>(a1, (int)v3, 1); +} +// 4FD280: using guessed type int var_D[3]; + +//----- (004FD2B0) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; + return result; +} + +//----- (004FD2D0) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; + return result; +} + +//----- (004FD2F0) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; + return result; +} + +//----- (004FD310) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; + return result; +} + +//----- (004FD330) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + int v2; // ecx + + v2 = 64; + if ( a2 != 8 ) + { + v2 = 2; + if ( a2 != 10 ) + v2 = 8 * (a2 == 16); + } + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; + return a1; +} + +//----- (004FD370) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, char a2) +{ + char *v2; // esi + _BYTE *v4; // edi + int (__stdcall *v5)(unsigned __int8); // eax + + v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !v2[117] ) + { + v4 = (_BYTE *)*((_DWORD *)v2 + 31); + if ( !v4 ) + std::__throw_bad_cast(); + if ( !v4[28] ) + { + std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); + v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); + if ( v5 != std::ctype::do_widen ) + ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); + } + v2[117] = 1; + } + v2[116] = a2; + return a1; +} + +//----- (004FD3E0) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2) +{ + return std::__ostream_insert>(a1, *a2, a2[1]); +} + +//----- (004FD410) -------------------------------------------------------- +int *__cdecl std::operator<<>(int *a1, wchar_t *String) +{ + int v2; // eax + + if ( String ) + { + v2 = wcslen(String); + std::__ostream_insert>(a1, (int)String, v2); + } + else + { + std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + } + return a1; +} + +//----- (004FD470) -------------------------------------------------------- +int *__cdecl std::operator<<>(int *a1, char *Str) +{ + char *v2; // ebx + size_t v3; // eax + _WORD *v4; // esi + int v5; // ecx + int v7; // [esp+14h] [ebp-24h] + _WORD *v8; // [esp+18h] [ebp-20h] + + v2 = Str; + if ( Str ) + { + v3 = strlen(Str); + if ( v3 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v7 = v3; + v8 = (_WORD *)operator new[](2 * v3); + v4 = v8; + if ( v7 ) + { + do + { + v5 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); + if ( !v5 ) + std::__throw_bad_cast(); + *v4++ = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 40))(v5, *v2++); + } + while ( &Str[v7] != v2 ); + } + std::__ostream_insert>(a1, (int)v8, v7); + operator delete[](v8); + return a1; + } + else + { + std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return a1; + } +} + +//----- (004FD5D0) -------------------------------------------------------- +int *__cdecl std::operator<<>(int *a1, __int16 a2) +{ + __int16 v3[8]; // [esp+1Ch] [ebp-10h] BYREF + + v3[0] = a2; + return std::__ostream_insert>(a1, (int)v3, 1); +} +// 4FD5D0: using guessed type __int16 var_10[8]; + +//----- (004FD600) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; + return result; +} + +//----- (004FD620) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; + return result; +} + +//----- (004FD640) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; + return result; +} + +//----- (004FD660) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; + return result; +} + +//----- (004FD680) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + int v2; // ecx + + v2 = 64; + if ( a2 != 8 ) + { + v2 = 2; + if ( a2 != 10 ) + v2 = 8 * (a2 == 16); + } + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; + return a1; +} + +//----- (004FD6C0) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, __int16 a2) +{ + char *v2; // esi + int v4; // ecx + + v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !v2[118] ) + { + v4 = *((_DWORD *)v2 + 31); + if ( !v4 ) + std::__throw_bad_cast(); + (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); + v2[118] = 1; + } + *((_WORD *)v2 + 58) = a2; + return a1; +} + +//----- (004FD720) -------------------------------------------------------- +int *__cdecl std::operator<<>(int *a1, char a2) +{ + int v2; // ecx + __int16 v4[7]; // [esp+22h] [ebp-Eh] BYREF + + v2 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); + if ( !v2 ) + std::__throw_bad_cast(); + v4[0] = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); + return std::__ostream_insert>(a1, (int)v4, 1); +} +// 4FD720: using guessed type __int16 var_E[7]; + +//----- (004FD770) -------------------------------------------------------- +unsigned int __cdecl std::operator<(int a1, int a2) +{ + return (unsigned int)std::string::compare(a1, a2) >> 31; +} + +//----- (004FD78C) -------------------------------------------------------- +bool __cdecl std::operator<(int a1, int a2) +{ + int v2; // ebx + int v3; // esi + int v4; // edi + unsigned int v5; // eax + + v2 = *(_DWORD *)(a2 + 12); + v3 = *(_DWORD *)(a1 + 12); + v4 = a2 + 4; + while ( a1 + 4 != v3 ) + { + if ( v4 == v2 ) + return 0; + v5 = *(_DWORD *)(v2 + 16); + if ( *(_DWORD *)(v3 + 16) < v5 ) + return 1; + if ( *(_DWORD *)(v3 + 16) > v5 ) + return 0; + v3 = std::_Rb_tree_increment(v3); + v2 = std::_Rb_tree_increment(v2); + } + return v4 != v2; +} +// 4F98B0: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); + +//----- (004FD7E8) -------------------------------------------------------- +int __cdecl std::operator!=(char *a1, int a2) +{ + int v2; // eax + + LOBYTE(v2) = std::operator==(a1, a2); + return v2 ^ 1; +} +// 4FD801: variable 'v2' is possibly undefined + +//----- (004FD808) -------------------------------------------------------- +int __cdecl std::operator!=(int a1, char *a2) +{ + int v2; // eax + + LOBYTE(v2) = std::operator==(a1, a2); + return v2 ^ 1; +} +// 4FD821: variable 'v2' is possibly undefined + +//----- (004FD828) -------------------------------------------------------- +int __cdecl std::operator!=(int a1, int a2) +{ + int v2; // eax + + LOBYTE(v2) = std::operator==(a1, a2); + return v2 ^ 1; +} +// 4FD841: variable 'v2' is possibly undefined + +//----- (004FD848) -------------------------------------------------------- +_DWORD *__cdecl std::operator+(_DWORD *a1, _DWORD *a2, unsigned int *a3) +{ + unsigned int v3; // ebx + unsigned int v4; // edx + unsigned int v5; // ebx + _DWORD *v6; // eax + + v3 = 15; + v4 = a2[1] + a3[1]; + if ( (_DWORD *)*a2 != a2 + 2 ) + v3 = a2[2]; + if ( v4 <= v3 ) + goto LABEL_8; + v5 = 15; + if ( (unsigned int *)*a3 != a3 + 2 ) + v5 = a3[2]; + if ( v4 > v5 ) +LABEL_8: + v6 = std::string::append(a2, (int)a3); + else + v6 = std::string::insert(a3, 0, (int)a2); + std::string::basic_string(a1, v6); + return a1; +} + +//----- (004FD8B8) -------------------------------------------------------- +_DWORD *__cdecl std::operator+(_DWORD *a1, char *a2, unsigned int *a3) +{ + unsigned int *v3; // eax + + v3 = std::string::insert(a3, 0, a2); + std::string::basic_string(a1, v3); + return a1; +} + +//----- (004FD8E8) -------------------------------------------------------- +int __cdecl std::operator+(int a1, char *a2, int a3) +{ + unsigned int v3; // kr04_4 + + v3 = strlen(a2) + 1; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + std::string::reserve((_DWORD *)a1, v3 - 1 + *(_DWORD *)(a3 + 4)); + std::string::append((_DWORD *)a1, a2, v3 - 1); + std::string::append((_DWORD *)a1, a3); + return a1; +} + +//----- (004FD960) -------------------------------------------------------- +_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, char *a3) +{ + std::string::basic_string(a1, a2); + std::string::append(a1, a3); + return a1; +} + +//----- (004FD9A0) -------------------------------------------------------- +_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3) +{ + std::string::basic_string(a1, a2); + std::string::append(a1, a3); + return a1; +} + +//----- (004FD9E0) -------------------------------------------------------- +int __cdecl std::operator+(int a1, char a2, int a3) +{ + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + std::string::reserve((_DWORD *)a1, *(_DWORD *)(a3 + 4) + 1); + std::string::append((_DWORD *)a1, 1u, a2); + std::string::append((_DWORD *)a1, a3); + return a1; +} + +//----- (004FDA50) -------------------------------------------------------- +unsigned int **__cdecl std::operator+(unsigned int **a1, char *Str, std::string *a3) +{ + size_t v3; // eax + size_t v4; // esi + unsigned int v6; // [esp+4h] [ebp-24h] + const std::string *v7; // [esp+4h] [ebp-24h] + unsigned int v8; // [esp+8h] [ebp-20h] + + v3 = strlen(Str); + *a1 = (unsigned int *)&unk_51641C; + v4 = v3; + std::string::reserve(a1, (std::string *)(v3 + *(_DWORD *)(*(_DWORD *)a3 - 12)), v6); + std::string::append(a1, (std::string *)Str, v4, v8); + std::string::append(a1, a3, v7); + return a1; +} +// 4FDA7E: variable 'v6' is possibly undefined +// 4FDA92: variable 'v8' is possibly undefined +// 4FDA9F: variable 'v7' is possibly undefined + +//----- (004FDAD0) -------------------------------------------------------- +unsigned int **__cdecl std::operator+(unsigned int **a1, unsigned int **a2, std::string *a3) +{ + unsigned int *v3; // eax + unsigned int *v4; // ecx + const std::string *v6; // [esp+4h] [ebp-24h] + char v7[9]; // [esp+1Fh] [ebp-9h] BYREF + + v3 = *a2; + v4 = *a2 - 3; + if ( (*(*a2 - 1) & 0x80000000) != 0 ) + { + v3 = std::string::_Rep::_M_clone((int)v4, (int)v7, 0); + } + else if ( v4 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v3 - 1, 1u); + else + ++*(v3 - 1); + } + *a1 = v3; + std::string::append(a1, a3, v6); + return a1; +} +// 4FDAFC: variable 'v6' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; +// 4FDAD0: using guessed type char var_9[9]; + +//----- (004FDB70) -------------------------------------------------------- +unsigned int **__cdecl std::operator+(unsigned int **a1, char a2, std::string *a3) +{ + unsigned int v4; // [esp+4h] [ebp-24h] + const std::string *v5; // [esp+4h] [ebp-24h] + + *a1 = (unsigned int *)&unk_51641C; + std::string::reserve(a1, (std::string *)(*(_DWORD *)(*(_DWORD *)a3 - 12) + 1), v4); + std::string::append(a1, 1u, a2); + std::string::append(a1, a3, v5); + return a1; +} +// 4FDB95: variable 'v4' is possibly undefined +// 4FDBBC: variable 'v5' is possibly undefined + +//----- (004FDBF0) -------------------------------------------------------- +int __cdecl std::operator+(int a1, wchar_t *String, int a3) +{ + size_t v3; // eax + size_t v4; // esi + + v3 = wcslen(String); + *(_DWORD *)(a1 + 4) = 0; + v4 = v3; + *(_DWORD *)a1 = a1 + 8; + *(_WORD *)(a1 + 8) = 0; + std::wstring::reserve(a1, v3 + *(_DWORD *)(a3 + 4)); + if ( v4 > 0x1FFFFFFF - *(_DWORD *)(a1 + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append(a1, String, v4); + std::wstring::_M_append(a1, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); + return a1; +} + +//----- (004FDCA0) -------------------------------------------------------- +wchar_t **__cdecl std::operator+(wchar_t **a1, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-20h] + + *a1 = (wchar_t *)(a1 + 2); + LOBYTE(v4) = 0; + std::wstring::_M_construct(a1, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v4); + std::wstring::_M_append((int)a1, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); + return a1; +} +// 4FDCCD: variable 'v4' is possibly undefined + +//----- (004FDD10) -------------------------------------------------------- +int __cdecl std::operator+(int a1, wchar_t a2, int a3) +{ + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_WORD *)(a1 + 8) = 0; + std::wstring::reserve(a1, *(_DWORD *)(a3 + 4) + 1); + std::wstring::_M_replace_aux(a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); + std::wstring::_M_append(a1, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); + return a1; +} + +//----- (004FDDB0) -------------------------------------------------------- +void **__cdecl std::operator+(void **a1, wchar_t *String, const wchar_t **a3) +{ + size_t v3; // eax + size_t v4; // esi + + v3 = wcslen(String); + *a1 = &unk_51640C; + v4 = v3; + std::wstring::reserve(a1, (char *)(v3 + *((_DWORD *)*a3 - 3))); + std::wstring::append(a1, String, v4); + std::wstring::append(a1, a3); + return a1; +} + +//----- (004FDE30) -------------------------------------------------------- +void **__cdecl std::operator+(void **a1, _DWORD *a2, const wchar_t **a3) +{ + _DWORD *v3; // eax + void *v4; // ecx + char v6[9]; // [esp+1Fh] [ebp-9h] BYREF + + v3 = (_DWORD *)*a2; + v4 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + v3 = std::wstring::_Rep::_M_clone((int)v4, (int)v6, 0); + } + else if ( v4 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(v3 - 1, 1u); + else + ++*(v3 - 1); + } + *a1 = v3; + std::wstring::append(a1, a3); + return a1; +} +// 78A9D4: using guessed type int _CRT_MT; +// 4FDE30: using guessed type char var_9[9]; + +//----- (004FDED0) -------------------------------------------------------- +void **__cdecl std::operator+(void **a1, wchar_t a2, const wchar_t **a3) +{ + *a1 = &unk_51640C; + std::wstring::reserve(a1, (char *)(*((_DWORD *)*a3 - 3) + 1)); + std::wstring::append(a1, 1u, a2); + std::wstring::append(a1, a3); + return a1; +} + +//----- (004FDF90) -------------------------------------------------------- +std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2) +{ + char *v2; // eax + _DWORD *v3; // ebx + _BYTE *v4; // eax + int v5; // edi + int v6; // ecx + char *v7; // esi + int v8; // edx + unsigned int v9; // edx + int v11; // edx + int v12; // eax + unsigned int v13; // eax + _BYTE *v14; // esi + unsigned int v15; // edx + int v16; // ebp + size_t v17; // edx + const std::locale *Src; // [esp+4h] [ebp-58h] + bool Size; // [esp+8h] [ebp-54h] + unsigned int v20; // [esp+1Ch] [ebp-40h] + unsigned int v21; // [esp+1Ch] [ebp-40h] + int v22; // [esp+20h] [ebp-3Ch] + _DWORD *v23; // [esp+24h] [ebp-38h] + int v24; // [esp+28h] [ebp-34h] + size_t v25; // [esp+2Ch] [ebp-30h] + char v26; // [esp+3Bh] [ebp-21h] BYREF + _DWORD *v27[8]; // [esp+3Ch] [ebp-20h] BYREF + + std::istream::sentry::sentry(&v26, a1, 0, Size); + if ( !v26 ) + { + v11 = *(_DWORD *)a1; + v12 = 4; + goto LABEL_22; + } + v2 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); + v22 = *((_DWORD *)v2 + 2); + if ( v22 <= 0 ) + v22 = 0x7FFFFFFF; + std::locale::locale((volatile signed __int32 **)v27, (volatile signed __int32 **)v2 + 27, Src); + v23 = std::use_facet>((int)v27); + std::locale::~locale(v27); + v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v4 = (_BYTE *)v3[2]; + if ( v3[3] <= (unsigned int)v4 ) + { + v4 = (_BYTE *)(*(int (__fastcall **)(_DWORD))(*v3 + 36))(*(_DWORD *)((char *)a1 + + *(_DWORD *)(*(_DWORD *)a1 - 12) + + 120)); + v24 = v22 - 1; + if ( v22 == 1 ) + { + if ( v4 != (_BYTE *)-1 ) + goto LABEL_41; + } + else if ( v4 != (_BYTE *)-1 ) + { + goto LABEL_6; + } + *a2 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v12 = 6; + goto LABEL_22; + } + LOBYTE(v4) = *v4; + v24 = v22 - 1; + if ( v22 == 1 ) + { +LABEL_41: + *a2 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v12 = 4; + goto LABEL_22; + } +LABEL_6: + v5 = 0; + do + { + while ( 1 ) + { + v6 = v23[6]; + if ( (*(_BYTE *)(v6 + 2 * (unsigned __int8)v4) & 0x20) != 0 ) + { + *a2 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + if ( !v5 ) + { + v12 = 4; + goto LABEL_22; + } + return a1; + } + v7 = (char *)v3[2]; + v20 = v3[3]; + v8 = v22 - v5 - 1; + if ( v8 > (int)(v20 - (_DWORD)v7) ) + v8 = v20 - (_DWORD)v7; + if ( v8 <= 1 ) + break; + v9 = (unsigned int)&v7[v8]; + v4 = v7 + 1; + if ( v9 <= (unsigned int)(v7 + 1) ) + { + v16 = 1; + v17 = 1; +LABEL_27: + v5 += v16; + v25 = v17; + memcpy(a2, v7, v17); + a2 += v25; + v21 = v3[3]; + v4 = (_BYTE *)(v25 + v3[2]); + v3[2] = v4; + if ( v21 <= (unsigned int)v4 ) + { +LABEL_28: + v4 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + goto LABEL_29; + } + goto LABEL_17; + } + do + { + if ( (*(_BYTE *)(v6 + 2 * (unsigned __int8)*v4) & 0x20) != 0 ) + break; + ++v4; + } + while ( v9 > (unsigned int)v4 ); + v16 = v4 - v7; + v17 = v4 - v7; + if ( v4 != v7 ) + goto LABEL_27; + a2 += v17; + v5 += v16; + v3[2] = v4; + if ( v20 <= (unsigned int)v4 ) + goto LABEL_28; +LABEL_17: + LOBYTE(v4) = *v4; +LABEL_18: + if ( v5 >= v24 ) + goto LABEL_19; + } + ++v5; + *a2 = (char)v4; + v13 = v3[2]; + v14 = a2 + 1; + v15 = v3[3]; + if ( v13 >= v15 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3) == -1 ) + goto LABEL_33; + v4 = (_BYTE *)v3[2]; + v15 = v3[3]; + } + else + { + v4 = (_BYTE *)(v13 + 1); + v3[2] = v4; + } + if ( (unsigned int)v4 < v15 ) + { + ++a2; + LOBYTE(v4) = *v4; + goto LABEL_18; + } + v4 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + ++a2; +LABEL_29: + if ( v5 >= v24 ) + { + if ( v4 == (_BYTE *)-1 ) + { + *a2 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v12 = 2; + goto LABEL_22; + } +LABEL_19: + *a2 = 0; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + return a1; + } + } + while ( v4 != (_BYTE *)-1 ); + v14 = a2; +LABEL_33: + *v14 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v12 = v5 == 0 ? 6 : 2; +LABEL_22: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v11 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(v11 - 12) + 20) | v12); + return a1; +} +// 4FE2F3: control flows out of bounds to 5062B2 +// 4FDFAA: variable 'Size' is possibly undefined +// 4FDFE7: variable 'Src' is possibly undefined +// 5062B0: using guessed type int std::operator>>>(void); + +//----- (004FE310) -------------------------------------------------------- +std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2) +{ + _DWORD *v2; // ecx + char *v3; // eax + char v4; // dl + int v6; // eax + bool v7; // [esp+8h] [ebp-24h] + char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF + + std::istream::sentry::sentry(v8, a1, 0, v7); + if ( !v8[0] ) + return a1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v3 = (char *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + { + v4 = *v3; + v2[2] = v3 + 1; +LABEL_4: + *a2 = v4; + return a1; + } + v6 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + if ( v6 != -1 ) + { + v4 = v6; + goto LABEL_4; + } + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); + return a1; +} +// 4FE327: variable 'v7' is possibly undefined +// 4FE310: using guessed type char var_D[13]; + +//----- (004FE400) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; + return result; +} + +//----- (004FE420) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; + return result; +} + +//----- (004FE440) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; + return result; +} + +//----- (004FE460) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; + return result; +} + +//----- (004FE480) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + int v2; // ecx + + v2 = 64; + if ( a2 != 8 ) + { + v2 = 2; + if ( a2 != 10 ) + v2 = 8 * (a2 == 16); + } + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; + return a1; +} + +//----- (004FE4C0) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, char a2) +{ + char *v2; // esi + _BYTE *v4; // edi + int (__stdcall *v5)(unsigned __int8); // eax + + v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !v2[117] ) + { + v4 = (_BYTE *)*((_DWORD *)v2 + 31); + if ( !v4 ) + std::__throw_bad_cast(); + if ( !v4[28] ) + { + std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); + v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); + if ( v5 != std::ctype::do_widen ) + ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); + } + v2[117] = 1; + } + v2[116] = a2; + return a1; +} + +//----- (004FE530) -------------------------------------------------------- +std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2) +{ + int v2; // edx + int v3; // eax + _BYTE *v5; // eax + char *v6; // eax + _DWORD *v7; // esi + unsigned __int8 *v8; // eax + int v9; // ebx + _BYTE *v10; // ecx + int v11; // edx + unsigned int v12; // edx + unsigned __int8 *v13; // eax + size_t v14; // ebx + unsigned __int8 *v15; // eax + _BYTE *v16; // eax + unsigned int v17; // edx + unsigned int v18; // eax + unsigned int v19; // edx + const std::locale *v20; // [esp+4h] [ebp-54h] + bool v21; // [esp+8h] [ebp-50h] + _DWORD *v22; // [esp+1Ch] [ebp-3Ch] + int v23; // [esp+20h] [ebp-38h] + unsigned int v24; // [esp+20h] [ebp-38h] + int v25; // [esp+24h] [ebp-34h] + size_t v26; // [esp+28h] [ebp-30h] + unsigned int v27; // [esp+2Ch] [ebp-2Ch] + char v28; // [esp+3Bh] [ebp-1Dh] BYREF + _DWORD *v29[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v28, a1, 0, v21); + if ( !v28 ) + { + v2 = *(_DWORD *)a1; + v3 = 4; + goto LABEL_3; + } + v5 = (_BYTE *)*a2; + a2[1] = 0; + *v5 = 0; + v6 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); + v25 = *((_DWORD *)v6 + 2); + if ( v25 <= 0 ) + v25 = 0x3FFFFFFF; + std::locale::locale((volatile signed __int32 **)v29, (volatile signed __int32 **)v6 + 27, v20); + v22 = std::use_facet>((int)v29); + std::locale::~locale(v29); + v7 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v8 = (unsigned __int8 *)v7[2]; + if ( v7[3] <= (unsigned int)v8 ) + v9 = (*(int (__fastcall **)(_DWORD))(*v7 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); + else + v9 = *v8; + v27 = 0; + while ( 1 ) + { + if ( v9 == -1 ) + { + v2 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v3 = v27 == 0 ? 6 : 2; + goto LABEL_3; + } + v23 = v22[6]; + if ( (*(_BYTE *)(v23 + 2 * (unsigned __int8)v9) & 0x20) != 0 ) + break; + v10 = (_BYTE *)v7[2]; + v11 = v7[3] - (_DWORD)v10; + if ( v11 > (int)(v25 - v27) ) + v11 = v25 - v27; + v26 = a2[1]; + if ( v11 <= 1 ) + { + v24 = v26 + 1; + v16 = (_BYTE *)*a2; + if ( (_DWORD *)*a2 == a2 + 2 ) + v17 = 15; + else + v17 = a2[2]; + if ( v24 > v17 ) + { + std::string::_M_mutate((int)a2, v26, 0, 0, 1u); + v16 = (_BYTE *)*a2; + } + ++v27; + v16[v26] = v9; + a2[1] = v24; + *(_BYTE *)(*a2 + v26 + 1) = 0; + v18 = v7[2]; + v19 = v7[3]; + if ( v18 >= v19 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) + { + v2 = *(_DWORD *)a1; +LABEL_37: + *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 8) = 0; + v3 = 2; + goto LABEL_3; + } + v15 = (unsigned __int8 *)v7[2]; + v19 = v7[3]; + } + else + { + v15 = (unsigned __int8 *)(v18 + 1); + v7[2] = v15; + } + if ( (unsigned int)v15 >= v19 ) + { +LABEL_33: + v9 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_23; + } + } + else + { + v12 = (unsigned int)&v10[v11]; + v13 = v10 + 1; + if ( v12 <= (unsigned int)(v10 + 1) ) + { + v14 = 1; + } + else + { + do + { + if ( (*(_BYTE *)(v23 + 2 * *v13) & 0x20) != 0 ) + break; + ++v13; + } + while ( v12 > (unsigned int)v13 ); + v14 = v13 - v10; + } + if ( 0x3FFFFFFF - v26 < v14 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(a2, v10, v14); + v27 += v14; + v15 = (unsigned __int8 *)(v14 + v7[2]); + v7[2] = v15; + if ( v7[3] <= (unsigned int)v15 ) + goto LABEL_33; + } + v9 = *v15; +LABEL_23: + if ( v27 >= v25 ) + { + v2 = *(_DWORD *)a1; + if ( v9 != -1 ) + { + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + return a1; + } + goto LABEL_37; + } + } + v2 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + if ( v27 ) + return a1; + v3 = 4; +LABEL_3: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) | v3); + return a1; +} +// 4FE82C: control flows out of bounds to 50601A +// 4FE831: control flows out of bounds to 506041 +// 4FE54D: variable 'v21' is possibly undefined +// 4FE5BA: variable 'v20' is possibly undefined + +//----- (004FE840) -------------------------------------------------------- +int *__cdecl std::operator>>>(int *a1, _WORD *a2) +{ + _WORD *v2; // esi + int v3; // eax + char *v4; // eax + _DWORD *v5; // ebx + unsigned __int16 *v6; // eax + unsigned __int16 v7; // di + int v8; // eax + __int16 v9; // ax + unsigned __int16 *v10; // eax + __int16 *v11; // edx + int v12; // edx + char *v13; // edx + char *v15; // edx + char *v16; // edx + const std::locale *v17; // [esp+4h] [ebp-44h] + _WORD *v18; // [esp+14h] [ebp-34h] + void *v19; // [esp+18h] [ebp-30h] + int v20; // [esp+1Ch] [ebp-2Ch] + int v21; // [esp+1Ch] [ebp-2Ch] + char v22; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD *v23[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v2 = a2; + std::wistream::sentry::sentry(&v22, a1, 0); + v3 = *a1; + if ( !v22 ) + { +LABEL_18: + v12 = 4; + goto LABEL_19; + } + v4 = (char *)a1 + *(_DWORD *)(v3 - 12); + v20 = *((_DWORD *)v4 + 2); + if ( v20 <= 0 ) + v20 = 0x7FFFFFFF; + std::locale::locale((volatile signed __int32 **)v23, (volatile signed __int32 **)v4 + 27, v17); + v19 = std::use_facet>((int)v23); + std::locale::~locale(v23); + v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v6 = (unsigned __int16 *)v5[2]; + if ( v5[3] <= (unsigned int)v6 ) + v7 = (*(int (__fastcall **)(_DWORD))(*v5 + 36))(*(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120)); + else + v7 = *v6; + if ( v20 == 1 ) + { + v3 = *a1; + v16 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *a2 = 0; + *((_DWORD *)v16 + 2) = 0; + if ( v7 == 0xFFFF ) + { + v12 = 6; + goto LABEL_19; + } + goto LABEL_18; + } + if ( v7 == 0xFFFF ) + { + *a2 = 0; + v3 = *a1; + *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; + v12 = 6; + goto LABEL_19; + } + v8 = (int)&a2[v20 - 1]; + v21 = 0; + v18 = (_WORD *)v8; + while ( 1 ) + { + if ( (*(unsigned __int8 (__stdcall **)(int, _DWORD))(*(_DWORD *)v19 + 8))(32, v7) ) + { + v3 = *a1; + v13 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *v2 = 0; + *((_DWORD *)v13 + 2) = 0; + if ( v21 ) + return a1; + goto LABEL_18; + } + ++v2; + ++v21; + v11 = (__int16 *)v5[2]; + *(v2 - 1) = v7; + if ( (unsigned int)v11 < v5[3] ) + { + v9 = *v11; + v5[2] = v11 + 1; + if ( v9 == -1 ) + goto LABEL_16; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v5 + 40))(v5) == 0xFFFF ) + { +LABEL_16: + *v2 = 0; + v3 = *a1; + *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; + v12 = 2; + goto LABEL_19; + } + v10 = (unsigned __int16 *)v5[2]; + if ( (unsigned int)v10 < v5[3] ) + { + v7 = *v10; + if ( v2 == v18 ) + break; + goto LABEL_12; + } + v7 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); + if ( v2 == v18 ) + break; +LABEL_12: + if ( v7 == 0xFFFF ) + goto LABEL_16; + } + v3 = *a1; + v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *v2 = 0; + *((_DWORD *)v15 + 2) = 0; + if ( v7 != 0xFFFF ) + return a1; + v12 = 2; +LABEL_19: + std::wios::clear((int *)((char *)a1 + *(_DWORD *)(v3 - 12)), *(int *)((char *)a1 + *(_DWORD *)(v3 - 12) + 20) | v12); + return a1; +} +// 4FE895: variable 'v17' is possibly undefined + +//----- (004FEB30) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2) +{ + _DWORD *v2; // ecx + __int16 *v3; // edx + __int16 v4; // ax + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wistream::sentry::sentry(v6, a1, 0); + if ( !v6[0] ) + return a1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (__int16 *)v2[2]; + if ( v2[3] <= (unsigned int)v3 ) + { + v4 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + } + else + { + v4 = *v3; + v2[2] = v3 + 1; + } + if ( v4 != -1 ) + { + *a2 = v4; + return a1; + } + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 6); + return a1; +} +// 4FEB30: using guessed type char var_D[13]; + +//----- (004FEC20) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; + return result; +} + +//----- (004FEC40) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; + return result; +} + +//----- (004FEC60) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; + return result; +} + +//----- (004FEC80) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; + return result; +} + +//----- (004FECA0) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + int v2; // ecx + + v2 = 64; + if ( a2 != 8 ) + { + v2 = 2; + if ( a2 != 10 ) + v2 = 8 * (a2 == 16); + } + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; + return a1; +} + +//----- (004FECE0) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, __int16 a2) +{ + char *v2; // esi + int v4; // ecx + + v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !v2[118] ) + { + v4 = *((_DWORD *)v2 + 31); + if ( !v4 ) + std::__throw_bad_cast(); + (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); + v2[118] = 1; + } + *((_WORD *)v2 + 58) = a2; + return a1; +} + +//----- (004FED40) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 1) = &unk_5339E8; + *(v2 - 3) = &unk_5339C0; + *(v2 - 2) = 0; + *v2 = &off_539474; + std::ios_base::~ios_base((int)v2); + operator delete((void *)(a1 - 8)); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004FED80) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &unk_5339E8; + v1 = a1 + 1; + *(v1 - 3) = &unk_5339C0; + *(v1 - 2) = 0; + *v1 = &off_539474; + std::ios_base::~ios_base((int)v1); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004FEDB0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) +{ + void *v1; // esi + _DWORD *v3; // ecx + + v1 = (void *)(a1 - 8); + v3 = (_DWORD *)(a1 + 4); + *(v3 - 3) = &off_538764; + v3[27] = off_53878C; + *(v3 - 1) = off_538778; + *v3 = &off_5386E0; + std::filebuf::close((int)v3); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_533A74; + *(_DWORD *)(a1 - 8) = &unk_533A4C; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 112) = &off_539474; + std::ios_base::~ios_base(a1 + 112); + operator delete(v1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FEE40) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 3) = &off_538764; + v2[27] = off_53878C; + *(v2 - 1) = off_538778; + *v2 = &off_5386E0; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_533A74; + *(_DWORD *)(a1 - 8) = &unk_533A4C; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 112) = &off_539474; + std::ios_base::~ios_base(a1 + 112); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FEEC0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) +{ + void *v1; // esi + _DWORD *v3; // ecx + + v1 = (void *)(a1 - 8); + v3 = (_DWORD *)(a1 + 4); + *(v3 - 3) = &off_5387A0; + v3[28] = off_5387C8; + *(v3 - 1) = off_5387B4; + *v3 = &off_538720; + std::wfilebuf::close((int)v3); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_533B00; + *(_DWORD *)(a1 - 8) = &unk_533A9C; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 116) = &off_539484; + std::ios_base::~ios_base(a1 + 116); + operator delete(v1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FEF50) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 3) = &off_5387A0; + v2[28] = off_5387C8; + *(v2 - 1) = off_5387B4; + *v2 = &off_538720; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_533B00; + *(_DWORD *)(a1 - 8) = &unk_533A9C; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 116) = &off_539484; + std::ios_base::~ios_base(a1 + 116); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FEFD0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 1) = &unk_533BA0; + *(v2 - 3) = &unk_533B78; + *(v2 - 2) = 0; + *v2 = &off_539484; + std::ios_base::~ios_base((int)v2); + operator delete((void *)(a1 - 8)); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF010) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &unk_533BA0; + v1 = a1 + 1; + *(v1 - 3) = &unk_533B78; + *(v1 - 2) = 0; + *v1 = &off_539484; + std::ios_base::~ios_base((int)v1); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF040) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v1; // esi + void *v3; // eax + + v1 = (void *)(a1 - 8); + v3 = *(void **)(a1 + 40); + *(_DWORD *)(a1 - 8) = &off_538194; + *(_DWORD *)(a1 + 64) = off_5381BC; + *(_DWORD *)a1 = off_5381A8; + *(_DWORD *)(a1 + 4) = &off_537F68; + if ( v3 != (void *)(a1 + 48) ) + operator delete(v3); + *(_DWORD *)(a1 + 4) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_53386C; + *(_DWORD *)(a1 - 8) = &unk_533844; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 64) = &off_539474; + std::ios_base::~ios_base(a1 + 64); + operator delete(v1); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF0C0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 40); + *(_DWORD *)(a1 - 8) = &off_538194; + *(_DWORD *)(a1 + 64) = off_5381BC; + *(_DWORD *)a1 = off_5381A8; + *(_DWORD *)(a1 + 4) = &off_537F68; + if ( v2 != (void *)(a1 + 48) ) + operator delete(v2); + *(_DWORD *)(a1 + 4) = &off_538A48; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_53386C; + *(_DWORD *)(a1 - 8) = &unk_533844; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 64) = &off_539474; + std::ios_base::~ios_base(a1 + 64); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF130) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v1; // esi + void *v3; // eax + + v1 = (void *)(a1 - 8); + v3 = *(void **)(a1 + 40); + *(_DWORD *)(a1 - 8) = &off_5381D0; + *(_DWORD *)(a1 + 64) = off_5381F8; + *(_DWORD *)a1 = off_5381E4; + *(_DWORD *)(a1 + 4) = &off_537FA8; + if ( v3 != (void *)(a1 + 48) ) + operator delete(v3); + *(_DWORD *)(a1 + 4) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_5338F8; + *(_DWORD *)(a1 - 8) = &unk_533894; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 64) = &off_539484; + std::ios_base::~ios_base(a1 + 64); + operator delete(v1); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF1B0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 40); + *(_DWORD *)(a1 - 8) = &off_5381D0; + *(_DWORD *)(a1 + 64) = off_5381F8; + *(_DWORD *)a1 = off_5381E4; + *(_DWORD *)(a1 + 4) = &off_537FA8; + if ( v2 != (void *)(a1 + 48) ) + operator delete(v2); + *(_DWORD *)(a1 + 4) = &off_538A88; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_5338F8; + *(_DWORD *)(a1 - 8) = &unk_533894; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 64) = &off_539484; + std::ios_base::~ios_base(a1 + 64); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF220) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v1[2] = &unk_5339E8; + *v1 = &unk_5339C0; + v1[1] = 0; + v1[3] = &off_539474; + std::ios_base::~ios_base((int)(v1 + 3)); + operator delete(v1); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF260) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v1[2] = &unk_5339E8; + v1 += 3; + *(v1 - 3) = &unk_5339C0; + *(v1 - 2) = 0; + *v1 = &off_539474; + std::ios_base::~ios_base((int)v1); +} +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF290) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_538480; + v1[1] = 0; + v1[2] = &off_539474; + std::ios_base::~ios_base((int)(v1 + 2)); + operator delete(v1); +} +// 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF2D0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_538480; + v1 += 2; + *(v1 - 1) = 0; + *v1 = &off_539474; + std::ios_base::~ios_base((int)v1); +} +// 538480: using guessed type void (__cdecl *off_538480)(std::istream *__hidden this); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF2F0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_5384A8; + v1[1] = &off_539474; + std::ios_base::~ios_base((int)(v1 + 1)); + operator delete(v1); +} +// 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF320) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1++ = &off_5384A8; + *v1 = &off_539474; + std::ios_base::~ios_base((int)v1); +} +// 5384A8: using guessed type void (__cdecl *off_5384A8)(std::ostream *__hidden this); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF340) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_538764; + *((_DWORD *)v1 + 30) = off_53878C; + *((_DWORD *)v1 + 2) = off_538778; + *((_DWORD *)v1 + 3) = &off_5386E0; + std::filebuf::close((int)(v1 + 12)); + std::__basic_file::~__basic_file(v1 + 52); + *((_DWORD *)v1 + 3) = &off_538A48; + std::locale::~locale((_DWORD **)v1 + 10); + *((_DWORD *)v1 + 2) = &unk_533A74; + *(_DWORD *)v1 = &unk_533A4C; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 30) = &off_539474; + std::ios_base::~ios_base((int)(v1 + 120)); + operator delete(v1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF3D0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_538764; + *((_DWORD *)v1 + 30) = off_53878C; + *((_DWORD *)v1 + 2) = off_538778; + *((_DWORD *)v1 + 3) = &off_5386E0; + std::filebuf::close((int)(v1 + 12)); + std::__basic_file::~__basic_file(v1 + 52); + *((_DWORD *)v1 + 3) = &off_538A48; + std::locale::~locale((_DWORD **)v1 + 10); + *((_DWORD *)v1 + 2) = &unk_533A74; + *(_DWORD *)v1 = &unk_533A4C; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 30) = &off_539474; + std::ios_base::~ios_base((int)(v1 + 120)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538764: using guessed type int (*off_538764)(); +// 538778: using guessed type int (*off_538778[2])(); +// 53878C: using guessed type int (*off_53878C[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF450) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_5387A0; + *((_DWORD *)v1 + 31) = off_5387C8; + *((_DWORD *)v1 + 2) = off_5387B4; + *((_DWORD *)v1 + 3) = &off_538720; + std::wfilebuf::close((int)(v1 + 12)); + std::__basic_file::~__basic_file(v1 + 52); + *((_DWORD *)v1 + 3) = &off_538A88; + std::locale::~locale((_DWORD **)v1 + 10); + *((_DWORD *)v1 + 2) = &unk_533B00; + *(_DWORD *)v1 = &unk_533A9C; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 31) = &off_539484; + std::ios_base::~ios_base((int)(v1 + 124)); + operator delete(v1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF4E0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_5387A0; + *((_DWORD *)v1 + 31) = off_5387C8; + *((_DWORD *)v1 + 2) = off_5387B4; + *((_DWORD *)v1 + 3) = &off_538720; + std::wfilebuf::close((int)(v1 + 12)); + std::__basic_file::~__basic_file(v1 + 52); + *((_DWORD *)v1 + 3) = &off_538A88; + std::locale::~locale((_DWORD **)v1 + 10); + *((_DWORD *)v1 + 2) = &unk_533B00; + *(_DWORD *)v1 = &unk_533A9C; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 31) = &off_539484; + std::ios_base::~ios_base((int)(v1 + 124)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5387A0: using guessed type int (*off_5387A0)(); +// 5387B4: using guessed type int (*off_5387B4[2])(); +// 5387C8: using guessed type int (*off_5387C8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF560) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_5387DC; + v1[1] = 0; + v1[2] = &off_539484; + std::ios_base::~ios_base((int)(v1 + 2)); + operator delete(v1); +} +// 5387DC: using guessed type int (*off_5387DC)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF5A0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_5387DC; + v1 += 2; + *(v1 - 1) = 0; + *v1 = &off_539484; + std::ios_base::~ios_base((int)v1); +} +// 5387DC: using guessed type int (*off_5387DC)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF5C0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_538804; + v1[1] = &off_539484; + std::ios_base::~ios_base((int)(v1 + 1)); + operator delete(v1); +} +// 538804: using guessed type int (*off_538804)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF5F0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1++ = &off_538804; + *v1 = &off_539484; + std::ios_base::~ios_base((int)v1); +} +// 538804: using guessed type int (*off_538804)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF610) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_538840; + *((_DWORD *)v1 + 29) = off_538854; + *((_DWORD *)v1 + 2) = &off_5386E0; + std::filebuf::close((int)(v1 + 8)); + std::__basic_file::~__basic_file(v1 + 48); + *((_DWORD *)v1 + 2) = &off_538A48; + std::locale::~locale((_DWORD **)v1 + 9); + *(_DWORD *)v1 = &unk_533B28; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 29) = &off_539474; + std::ios_base::~ios_base((int)(v1 + 116)); + operator delete(v1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538840: using guessed type int (*off_538840)(); +// 538854: using guessed type int (*off_538854[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF690) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_538840; + *((_DWORD *)v1 + 29) = off_538854; + *((_DWORD *)v1 + 2) = &off_5386E0; + std::filebuf::close((int)(v1 + 8)); + std::__basic_file::~__basic_file(v1 + 48); + *((_DWORD *)v1 + 2) = &off_538A48; + std::locale::~locale((_DWORD **)v1 + 9); + *(_DWORD *)v1 = &unk_533B28; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 29) = &off_539474; + std::ios_base::~ios_base((int)(v1 + 116)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 538840: using guessed type int (*off_538840)(); +// 538854: using guessed type int (*off_538854[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF700) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_538868; + *((_DWORD *)v1 + 30) = off_53887C; + *((_DWORD *)v1 + 2) = &off_538720; + std::wfilebuf::close((int)(v1 + 8)); + std::__basic_file::~__basic_file(v1 + 48); + *((_DWORD *)v1 + 2) = &off_538A88; + std::locale::~locale((_DWORD **)v1 + 9); + *(_DWORD *)v1 = &unk_533B50; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 30) = &off_539484; + std::ios_base::~ios_base((int)(v1 + 120)); + operator delete(v1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538868: using guessed type int (*off_538868)(); +// 53887C: using guessed type int (*off_53887C[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF780) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_538868; + *((_DWORD *)v1 + 30) = off_53887C; + *((_DWORD *)v1 + 2) = &off_538720; + std::wfilebuf::close((int)(v1 + 8)); + std::__basic_file::~__basic_file(v1 + 48); + *((_DWORD *)v1 + 2) = &off_538A88; + std::locale::~locale((_DWORD **)v1 + 9); + *(_DWORD *)v1 = &unk_533B50; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 30) = &off_539484; + std::ios_base::~ios_base((int)(v1 + 120)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 538868: using guessed type int (*off_538868)(); +// 53887C: using guessed type int (*off_53887C[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF7F0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v1[2] = &unk_533BA0; + *v1 = &unk_533B78; + v1[1] = 0; + v1[3] = &off_539484; + std::ios_base::~ios_base((int)(v1 + 3)); + operator delete(v1); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF830) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v1[2] = &unk_533BA0; + v1 += 3; + *(v1 - 3) = &unk_533B78; + *(v1 - 2) = 0; + *v1 = &off_539484; + std::ios_base::~ios_base((int)v1); +} +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF860) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_5388CC; + *((_DWORD *)v1 + 28) = off_5388E0; + *((_DWORD *)v1 + 1) = &off_5386E0; + std::filebuf::close((int)(v1 + 4)); + std::__basic_file::~__basic_file(v1 + 44); + *((_DWORD *)v1 + 1) = &off_538A48; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_533BC8; + *((_DWORD *)v1 + 28) = &off_539474; + std::ios_base::~ios_base((int)(v1 + 112)); + operator delete(v1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 5388CC: using guessed type int (*off_5388CC)(); +// 5388E0: using guessed type int (*off_5388E0[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF8D0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_5388CC; + *((_DWORD *)v1 + 28) = off_5388E0; + *((_DWORD *)v1 + 1) = &off_5386E0; + std::filebuf::close((int)(v1 + 4)); + std::__basic_file::~__basic_file(v1 + 44); + *((_DWORD *)v1 + 1) = &off_538A48; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_533BC8; + *((_DWORD *)v1 + 28) = &off_539474; + std::ios_base::~ios_base((int)(v1 + 112)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 5386E0: using guessed type int (*off_5386E0)(); +// 5388CC: using guessed type int (*off_5388CC)(); +// 5388E0: using guessed type int (*off_5388E0[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FF940) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_5388F4; + *((_DWORD *)v1 + 29) = off_538908; + *((_DWORD *)v1 + 1) = &off_538720; + std::wfilebuf::close((int)(v1 + 4)); + std::__basic_file::~__basic_file(v1 + 44); + *((_DWORD *)v1 + 1) = &off_538A88; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_533BF0; + *((_DWORD *)v1 + 29) = &off_539484; + std::ios_base::~ios_base((int)(v1 + 116)); + operator delete(v1); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5388F4: using guessed type int (*off_5388F4)(); +// 538908: using guessed type int (*off_538908[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FF9B0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_5388F4; + *((_DWORD *)v1 + 29) = off_538908; + *((_DWORD *)v1 + 1) = &off_538720; + std::wfilebuf::close((int)(v1 + 4)); + std::__basic_file::~__basic_file(v1 + 44); + *((_DWORD *)v1 + 1) = &off_538A88; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_533BF0; + *((_DWORD *)v1 + 29) = &off_539484; + std::ios_base::~ios_base((int)(v1 + 116)); +} +// 4B81C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 538720: using guessed type int (*off_538720)(); +// 5388F4: using guessed type int (*off_5388F4)(); +// 538908: using guessed type int (*off_538908[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FFA20) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[12]; + *v1 = &off_538194; + v3 = v1; + v1[18] = off_5381BC; + v1[2] = off_5381A8; + v1[3] = &off_537F68; + if ( v2 != v1 + 14 ) + operator delete(v2); + v3[3] = &off_538A48; + std::locale::~locale((_DWORD **)v3 + 10); + v3[2] = &unk_53386C; + *v3 = &unk_533844; + v3[1] = 0; + v3[18] = &off_539474; + std::ios_base::~ios_base((int)(v3 + 18)); + operator delete(v3); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FFAA0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[12]; + *v1 = &off_538194; + v3 = v1; + v1[18] = off_5381BC; + v1[2] = off_5381A8; + v1[3] = &off_537F68; + if ( v2 != v1 + 14 ) + operator delete(v2); + v3[3] = &off_538A48; + std::locale::~locale((_DWORD **)v3 + 10); + v3[2] = &unk_53386C; + *v3 = &unk_533844; + v3[1] = 0; + v3[18] = &off_539474; + std::ios_base::~ios_base((int)(v3 + 18)); +} +// 537F68: using guessed type int (*off_537F68)(); +// 538194: using guessed type int (*off_538194)(); +// 5381A8: using guessed type int (*off_5381A8[2])(); +// 5381BC: using guessed type int (*off_5381BC[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FFB10) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[12]; + *v1 = &off_5381D0; + v3 = v1; + v1[18] = off_5381F8; + v1[2] = off_5381E4; + v1[3] = &off_537FA8; + if ( v2 != v1 + 14 ) + operator delete(v2); + v3[3] = &off_538A88; + std::locale::~locale((_DWORD **)v3 + 10); + v3[2] = &unk_5338F8; + *v3 = &unk_533894; + v3[1] = 0; + v3[18] = &off_539484; + std::ios_base::~ios_base((int)(v3 + 18)); + operator delete(v3); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FFB90) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[12]; + *v1 = &off_5381D0; + v3 = v1; + v1[18] = off_5381F8; + v1[2] = off_5381E4; + v1[3] = &off_537FA8; + if ( v2 != v1 + 14 ) + operator delete(v2); + v3[3] = &off_538A88; + std::locale::~locale((_DWORD **)v3 + 10); + v3[2] = &unk_5338F8; + *v3 = &unk_533894; + v3[1] = 0; + v3[18] = &off_539484; + std::ios_base::~ios_base((int)(v3 + 18)); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 5381D0: using guessed type int (*off_5381D0)(); +// 5381E4: using guessed type int (*off_5381E4[2])(); +// 5381F8: using guessed type int (*off_5381F8[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FFC00) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[11]; + *v1 = &off_53820C; + v3 = v1; + v1[17] = off_538220; + v1[2] = &off_537F68; + if ( v2 != v1 + 13 ) + operator delete(v2); + v3[2] = &off_538A48; + std::locale::~locale((_DWORD **)v3 + 9); + *v3 = &unk_533920; + v3[1] = 0; + v3[17] = &off_539474; + std::ios_base::~ios_base((int)(v3 + 17)); + operator delete(v3); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53820C: using guessed type int (*off_53820C)(); +// 538220: using guessed type int (*off_538220[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FFC70) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[11]; + *v1 = &off_53820C; + v3 = v1; + v1[17] = off_538220; + v1[2] = &off_537F68; + if ( v2 != v1 + 13 ) + operator delete(v2); + v3[2] = &off_538A48; + std::locale::~locale((_DWORD **)v3 + 9); + *v3 = &unk_533920; + v3[1] = 0; + v3[17] = &off_539474; + std::ios_base::~ios_base((int)(v3 + 17)); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53820C: using guessed type int (*off_53820C)(); +// 538220: using guessed type int (*off_538220[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FFCD0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[11]; + *v1 = &off_538234; + v3 = v1; + v1[17] = off_538248; + v1[2] = &off_537FA8; + if ( v2 != v1 + 13 ) + operator delete(v2); + v3[2] = &off_538A88; + std::locale::~locale((_DWORD **)v3 + 9); + *v3 = &unk_533948; + v3[1] = 0; + v3[17] = &off_539484; + std::ios_base::~ios_base((int)(v3 + 17)); + operator delete(v3); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538234: using guessed type int (*off_538234)(); +// 538248: using guessed type int (*off_538248[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FFD40) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[11]; + *v1 = &off_538234; + v3 = v1; + v1[17] = off_538248; + v1[2] = &off_537FA8; + if ( v2 != v1 + 13 ) + operator delete(v2); + v3[2] = &off_538A88; + std::locale::~locale((_DWORD **)v3 + 9); + *v3 = &unk_533948; + v3[1] = 0; + v3[17] = &off_539484; + std::ios_base::~ios_base((int)(v3 + 17)); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538234: using guessed type int (*off_538234)(); +// 538248: using guessed type int (*off_538248[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FFDA0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[10]; + *v1 = &off_53825C; + v3 = v1; + v1[16] = off_538270; + v1[1] = &off_537F68; + if ( v2 != v1 + 12 ) + operator delete(v2); + v3[1] = &off_538A48; + std::locale::~locale((_DWORD **)v3 + 8); + *v3 = &unk_533970; + v3[16] = &off_539474; + std::ios_base::~ios_base((int)(v3 + 16)); + operator delete(v3); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53825C: using guessed type int (*off_53825C)(); +// 538270: using guessed type int (*off_538270[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FFE10) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) +{ + char *v1; // ebx + char *v2; // eax + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v2 = (char *)*((_DWORD *)v1 + 10); + *(_DWORD *)v1 = &off_53825C; + *((_DWORD *)v1 + 16) = off_538270; + *((_DWORD *)v1 + 1) = &off_537F68; + if ( v2 != v1 + 48 ) + operator delete(v2); + *((_DWORD *)v1 + 1) = &off_538A48; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_533970; + *((_DWORD *)v1 + 16) = &off_539474; + std::ios_base::~ios_base((int)(v1 + 64)); +} +// 537F68: using guessed type int (*off_537F68)(); +// 53825C: using guessed type int (*off_53825C)(); +// 538270: using guessed type int (*off_538270[2])(); +// 538A48: using guessed type int (*off_538A48)(); +// 539474: using guessed type int (*off_539474)(); + +//----- (004FFE70) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[10]; + *v1 = &off_538284; + v3 = v1; + v1[16] = off_538298; + v1[1] = &off_537FA8; + if ( v2 != v1 + 12 ) + operator delete(v2); + v3[1] = &off_538A88; + std::locale::~locale((_DWORD **)v3 + 8); + *v3 = &unk_533998; + v3[16] = &off_539484; + std::ios_base::~ios_base((int)(v3 + 16)); + operator delete(v3); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538284: using guessed type int (*off_538284)(); +// 538298: using guessed type int (*off_538298[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FFEE0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) +{ + char *v1; // ebx + char *v2; // eax + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v2 = (char *)*((_DWORD *)v1 + 10); + *(_DWORD *)v1 = &off_538284; + *((_DWORD *)v1 + 16) = off_538298; + *((_DWORD *)v1 + 1) = &off_537FA8; + if ( v2 != v1 + 48 ) + operator delete(v2); + *((_DWORD *)v1 + 1) = &off_538A88; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_533998; + *((_DWORD *)v1 + 16) = &off_539484; + std::ios_base::~ios_base((int)(v1 + 64)); +} +// 537FA8: using guessed type int (*off_537FA8)(); +// 538284: using guessed type int (*off_538284)(); +// 538298: using guessed type int (*off_538298[2])(); +// 538A88: using guessed type int (*off_538A88)(); +// 539484: using guessed type int (*off_539484)(); + +//----- (004FFF40) -------------------------------------------------------- +int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1) +{ + int v2; // ecx + int result; // eax + int v4; // edx + int v5; // edx + + v2 = *a1; + *(_DWORD *)(v2 + 48) = 0; + *(_BYTE *)(v2 + 84) = 0; + std::filebuf::_M_destroy_internal_buffer(v2); + result = *a1; + *(_WORD *)(result + 73) = 0; + v4 = *(_DWORD *)(result + 64); + *(_DWORD *)(result + 20) = 0; + *(_DWORD *)(result + 4) = v4; + *(_DWORD *)(result + 8) = v4; + *(_DWORD *)(result + 12) = v4; + v5 = *(_DWORD *)(result + 52); + *(_DWORD *)(result + 16) = 0; + *(_DWORD *)(result + 24) = 0; + *(_DWORD *)(result + 56) = v5; + *(_DWORD *)(result + 60) = v5; + return result; +} + +//----- (004FFF90) -------------------------------------------------------- +int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1) +{ + int v2; // ecx + int result; // eax + int v4; // edx + int v5; // edx + + v2 = *a1; + *(_DWORD *)(v2 + 48) = 0; + *(_BYTE *)(v2 + 88) = 0; + std::wfilebuf::_M_destroy_internal_buffer(v2); + result = *a1; + *(_WORD *)(result + 73) = 0; + v4 = *(_DWORD *)(result + 64); + *(_DWORD *)(result + 20) = 0; + *(_DWORD *)(result + 4) = v4; + *(_DWORD *)(result + 8) = v4; + *(_DWORD *)(result + 12) = v4; + v5 = *(_DWORD *)(result + 52); + *(_DWORD *)(result + 16) = 0; + *(_DWORD *)(result + 24) = 0; + *(_DWORD *)(result + 56) = v5; + *(_DWORD *)(result + 60) = v5; + return result; +} + +//----- (00500020) -------------------------------------------------------- +int __cdecl operator new[](unsigned int a1) +{ + return operator new[](a1); +} +// 505E70: using guessed type int operator new[](void); + +//----- (00500040) -------------------------------------------------------- +void *__cdecl operator new(struct type_info *a1, void (__cdecl *a2)(void *)) +{ + size_t Size; // ebx + void *result; // eax + void (*new_handler)(void); // eax + + Size = (size_t)a1; + if ( !a1 ) + Size = 1; + while ( 1 ) + { + result = malloc(Size); + if ( result ) + break; + new_handler = (void (*)(void))std::get_new_handler(); + if ( !new_handler ) + operator new(a1, a2); + new_handler(); + } + return result; +} + +//----- (00500080) -------------------------------------------------------- +unsigned int *__cxa_allocate_dependent_exception() +{ + unsigned int *v0; // eax + unsigned int *v1; // edx + + v0 = (unsigned int *)malloc(0x50u); + if ( v0 ) + { + v1 = v0; + } + else + { + v1 = `anonymous namespace'::pool::allocate(80); + if ( !v1 ) + std::terminate(); + } + *v1 = 0; + v1[19] = 0; + memset( + (void *)((unsigned int)(v1 + 1) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)v1 - ((unsigned int)(v1 + 1) & 0xFFFFFFFC) + 80) >> 2)); + return v1; +} + +//----- (005000E0) -------------------------------------------------------- +void *__cdecl __cxa_allocate_exception(size_t thrown_size) +{ + unsigned int *v1; // eax + unsigned int *v2; // edx + + v1 = (unsigned int *)malloc(thrown_size + 96); + if ( v1 ) + { + v2 = v1; + } + else + { + v2 = `anonymous namespace'::pool::allocate(thrown_size + 96); + if ( !v2 ) + std::terminate(); + } + *v2 = 0; + v2[23] = 0; + memset( + (void *)((unsigned int)(v2 + 1) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)v2 - ((unsigned int)(v2 + 1) & 0xFFFFFFFC) + 96) >> 2)); + return v2 + 24; +} + +//----- (00500140) -------------------------------------------------------- +void *__cdecl __cxa_begin_catch(void *a1) +{ + char **globals; // eax + char *v2; // edx + char *v3; // edi + int v5; // ecx + int v6; // ebx + + globals = (char **)__cxa_get_globals(); + v2 = *globals; + v3 = (char *)a1 - 48; + if ( (unsigned __int64)(*(_QWORD *)a1 - 0x474E5543432B2B00LL) <= 1 ) + { + v5 = *((_DWORD *)a1 - 7); + v6 = v5 + 1; + if ( v5 < 0 ) + v6 = 1 - v5; + *((_DWORD *)a1 - 7) = v6; + --globals[1]; + if ( v2 != v3 ) + { + *((_DWORD *)a1 - 8) = v2; + *globals = v3; + } + return (void *)*((_DWORD *)a1 - 2); + } + else + { + if ( v2 ) + std::terminate(); + *globals = v3; + return 0; + } +} + +//----- (005001D0) -------------------------------------------------------- +void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *a1) +{ + if ( a1 ) + { + __cxa_begin_catch(a1); + if ( !(((unsigned int)(LODWORD(a1->exception_class) - 1126902528) > 1) + + ((a1->exception_class - 0x474E5543432B2B00LL) >> 32)) ) + __cxxabiv1::__terminate(*((void (**)(void))&a1[-2].private_2 + 3)); + } + std::terminate(); +} + +//----- (00500220) -------------------------------------------------------- +void __cdecl __noreturn __cxa_call_unexpected(void *a1) +{ + __cxa_begin_catch(a1); + __cxxabiv1::__unexpected(*((void (**)(void))a1 - 10)); +} +// 504978: using guessed type void __noreturn __cxa_call_unexpected_cold(void); + +//----- (00500260) -------------------------------------------------------- +struct type_info *__cxa_current_exception_type(void) +{ + struct type_info *result; // eax + int v1; // edx + + result = (struct type_info *)*__cxa_get_globals(); + if ( result ) + { + v1 = *((_DWORD *)result + 12); + result = *(struct type_info **)result; + if ( (v1 & 1) != 0 ) + return (struct type_info *)*((_DWORD *)result - 20); + } + return result; +} + +//----- (00500280) -------------------------------------------------------- +void __noreturn __cxa_deleted_virtual(void) +{ + write(2, "deleted virtual method called\n", 0x1Eu); + std::terminate(); +} + +//----- (005002B0) -------------------------------------------------------- +void __cxa_end_catch(void) +{ + int *globals_fast; // eax + int v1; // edx + int v2; // ecx + int v3; // ecx + + globals_fast = (int *)__cxa_get_globals_fast(); + v1 = *globals_fast; + if ( *globals_fast ) + { + if ( ((unsigned int)(*(_DWORD *)(v1 + 48) - 1126902528) > 1) + + ((unsigned __int64)(*(_QWORD *)(v1 + 48) - 0x474E5543432B2B00LL) >> 32) ) + { + *globals_fast = 0; + _Unwind_DeleteException((_Unwind_Exception *)(v1 + 48)); + return; + } + v2 = *(_DWORD *)(v1 + 20); + if ( v2 < 0 ) + { + v3 = v2 + 1; + if ( !v3 ) + *globals_fast = *(_DWORD *)(v1 + 16); + } + else + { + v3 = v2 - 1; + if ( !v3 ) + { + *globals_fast = *(_DWORD *)(v1 + 16); + _Unwind_DeleteException((_Unwind_Exception *)(v1 + 48)); + return; + } + if ( v3 == -1 ) + std::terminate(); + } + *(_DWORD *)(v1 + 20) = v3; + } +} + +//----- (00500350) -------------------------------------------------------- +_DWORD *__cdecl __cxa_free_dependent_exception(unsigned int a1) +{ + struct type_info *v2; // [esp+0h] [ebp-Ch] + void (__cdecl *v3)(void *); // [esp+4h] [ebp-8h] + + if ( a1 <= dword_51539C || a1 >= dword_5153A0 + dword_51539C ) + return (_DWORD *)__mingw_free(a1); + else + return `anonymous namespace'::pool::free(a1, v2, v3); +} +// 50036B: variable 'v2' is possibly undefined +// 50036B: variable 'v3' is possibly undefined +// 51539C: using guessed type int dword_51539C; +// 5153A0: using guessed type int dword_5153A0; + +//----- (00500390) -------------------------------------------------------- +void __cdecl __cxa_free_exception(void *a1) +{ + char *v1; // eax + struct type_info *v2; // [esp+0h] [ebp-Ch] + void (__cdecl *v3)(void *); // [esp+4h] [ebp-8h] + + v1 = (char *)a1 - 96; + if ( (char *)a1 - 96 <= (char *)dword_51539C || (unsigned int)v1 >= dword_5153A0 + dword_51539C ) + __mingw_free((unsigned int)a1 - 96); + else + `anonymous namespace'::pool::free((int)v1, v2, v3); +} +// 5003AE: variable 'v2' is possibly undefined +// 5003AE: variable 'v3' is possibly undefined +// 51539C: using guessed type int dword_51539C; +// 5153A0: using guessed type int dword_5153A0; + +//----- (005003D0) -------------------------------------------------------- +void *__cdecl __cxa_get_exception_ptr(void *a1) +{ + return (void *)*((_DWORD *)a1 - 2); +} + +//----- (005003E0) -------------------------------------------------------- +_DWORD *__cxa_get_globals() +{ + _DWORD *v0; // ebx + _DWORD *ptr; // eax + + v0 = &eh_globals; + if ( byte_51526C ) + { + v0 = __gthr_win32_getspecific(init); + if ( !v0 ) + { + ptr = malloc(8u); + v0 = ptr; + if ( !ptr || __gthr_win32_setspecific(init, ptr) ) + std::terminate(); + *v0 = 0; + v0[1] = 0; + } + } + return v0; +} +// 51526C: using guessed type char byte_51526C; + +//----- (00500450) -------------------------------------------------------- +void *__cxa_get_globals_fast() +{ + if ( byte_51526C ) + return __gthr_win32_getspecific(init); + else + return &eh_globals; +} +// 51526C: using guessed type char byte_51526C; + +//----- (00500480) -------------------------------------------------------- +void __cdecl __cxa_guard_abort(__guard *a1) +{ + *((_BYTE *)a1 + 1) = 0; + if ( _CRT_MT ) + { + if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) + __cxa_guard_abort_cold(); + } +} +// 504AC0: using guessed type void __noreturn __cxa_guard_abort_cold(void); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (005004C0) -------------------------------------------------------- +int __cdecl __cxa_guard_acquire(__guard *a1) +{ + int result; // eax + void (__cdecl *v2)(void *); // [esp+24h] [ebp+8h] + + if ( *(_BYTE *)a1 ) + return 0; + result = _CRT_MT; + if ( _CRT_MT ) + { + __gthr_win32_once(&`anonymous namespace'::get_static_mutex(void)::once, `anonymous namespace'::init); + if ( _CRT_MT ) + { + if ( __gthr_win32_recursive_mutex_lock(`anonymous namespace'::static_mutex) ) + __cxa_guard_acquire_cold((struct type_info *)a1, v2); + if ( !*(_BYTE *)a1 ) + goto LABEL_9; + if ( _CRT_MT && __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) + __gnu_cxx::__throw_concurrence_unlock_error(); + } + else if ( !*(_BYTE *)a1 ) + { +LABEL_9: + if ( *((_BYTE *)a1 + 1) ) + __cxxabiv1::throw_recursive_init_exception(); + goto LABEL_5; + } + return 0; + } + if ( *(_BYTE *)a1 ) + return result; + if ( *((_BYTE *)a1 + 1) ) + __cxxabiv1::throw_recursive_init_exception(); +LABEL_5: + *((_BYTE *)a1 + 1) = 1; + return 1; +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00500570) -------------------------------------------------------- +void __cdecl __cxa_guard_release(__guard *a1) +{ + *((_BYTE *)a1 + 1) = 0; + *(_BYTE *)a1 = 1; + if ( _CRT_MT ) + { + if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) + __cxa_guard_release_cold(); + } +} +// 504AD8: using guessed type void __noreturn __cxa_guard_release_cold(void); +// 78A9D4: using guessed type int _CRT_MT; + +//----- (005005B0) -------------------------------------------------------- +int __cdecl __cxa_init_primary_exception(int a1, int a2, int a3) +{ + void (*terminate)(void); // eax + int result; // eax + + *(_DWORD *)(a1 - 80) = a2; + *(_DWORD *)(a1 - 96) = 0; + *(_DWORD *)(a1 - 76) = a3; + *(_DWORD *)(a1 - 72) = std::get_unexpected(); + terminate = std::get_terminate(); + *(_DWORD *)(a1 - 32) = 1126902528; + *(_DWORD *)(a1 - 68) = terminate; + result = a1 - 96; + *(_DWORD *)(a1 - 28) = 1196315971; + *(_DWORD *)(a1 - 24) = __gxx_exception_cleanup; + return result; +} + +//----- (00500600) -------------------------------------------------------- +void __noreturn __cxa_pure_virtual(void) +{ + write(2, "pure virtual method called\n", 0x1Bu); + std::terminate(); +} + +//----- (00500630) -------------------------------------------------------- +void __noreturn __cxa_rethrow(void) +{ + int *globals; // eax + int v1; // edx + + globals = __cxa_get_globals(); + v1 = *globals; + ++globals[1]; + if ( v1 ) + { + if ( ((unsigned int)(*(_DWORD *)(v1 + 48) - 1126902528) > 1) + + ((unsigned __int64)(*(_QWORD *)(v1 + 48) - 0x474E5543432B2B00LL) >> 32) ) + { + *globals = 0; + } + else + { + *(_DWORD *)(v1 + 20) = -*(_DWORD *)(v1 + 20); + } + _Unwind_Resume_or_Rethrow((int)globals, v1, (_Unwind_Exception *)(v1 + 48)); + } + std::terminate(); +} + +//----- (00500690) -------------------------------------------------------- +void __cdecl __noreturn __cxa_throw(void *a1, struct type_info *lptinfo, void (__cdecl *a3)(void *)) +{ + _DWORD *globals; // eax + _DWORD *v4; // ebx + void (*terminate)(void); // eax + + globals = __cxa_get_globals(); + ++globals[1]; + *((_DWORD *)a1 - 24) = 0; + v4 = (char *)a1 - 32; + *((_DWORD *)a1 - 20) = lptinfo; + *((_DWORD *)a1 - 19) = a3; + *((_DWORD *)a1 - 18) = std::get_unexpected(); + terminate = std::get_terminate(); + *v4 = 1126902528; + *((_DWORD *)a1 - 17) = terminate; + v4[1] = 1196315971; + v4[2] = __gxx_exception_cleanup; + *((_DWORD *)a1 - 24) = 1; + _Unwind_RaiseException((_Unwind_Exception *)a1 - 1); + __cxa_begin_catch((char *)a1 - 32); + std::terminate(); +} + +//----- (00500700) -------------------------------------------------------- +void *__cdecl __dynamic_cast( + const void *lpsrc, + const struct __class_type_info *lpstype, + const struct __class_type_info *lpdtype, + ptrdiff_t s2d) +{ + int v4; // edx + int v5; // ecx + int *v6; // edx + int v7; // eax + char *v8; // edx + void *result; // eax + char *v10; // [esp+48h] [ebp-30h] BYREF + int v11; // [esp+4Ch] [ebp-2Ch] + int v12; // [esp+50h] [ebp-28h] + int v13; // [esp+54h] [ebp-24h] + int v14; // [esp+58h] [ebp-20h] + + v4 = *(_DWORD *)(*(_DWORD *)lpsrc - 8); + v5 = *(_DWORD *)(*(_DWORD *)lpsrc - 4); + v10 = 0; + v11 = 0; + v6 = (int *)((char *)lpsrc + v4); + v12 = 0; + v7 = *v6; + v13 = 0; + v14 = 16; + if ( *(_DWORD *)(v7 - 4) != v5 ) + return 0; + (*(void (__thiscall **)(int, ptrdiff_t, int, const struct __class_type_info *, int *, const struct __class_type_info *, const void *, char **))(*(_DWORD *)v5 + 28))( + v5, + s2d, + 6, + lpdtype, + v6, + lpstype, + lpsrc, + &v10); + v8 = v10; + result = v10; + if ( !v10 ) + return 0; + if ( (v13 & 6) != 6 && ((unsigned __int8)v12 & (unsigned __int8)v11 & 6) != 6 ) + { + if ( (v12 & 5) == 4 || v13 ) + return 0; + if ( s2d < 0 ) + { + if ( s2d == -2 + || ((*(int (__thiscall **)(const struct __class_type_info *, ptrdiff_t, char *, const struct __class_type_info *, const void *))(*(_DWORD *)lpdtype + 32))( + lpdtype, + s2d, + v10, + lpstype, + lpsrc) & 6) != 6 ) + { + return 0; + } + return v10; + } + else if ( lpsrc != &v10[s2d] ) + { + return 0; + } + return v8; + } + return result; +} + +//----- (00500810) -------------------------------------------------------- +int __cdecl __gxx_personality_v0(int a1, int a2, __int64 a3, _Unwind_Exception *a4, _Unwind_Context *context) +{ + int result; // eax + int *v6; // ebx + _Unwind_Ptr IPInfo; // eax + unsigned int v8; // esi + char v9; // bp + int *v10; // eax + char *encoded_value_with_base; // eax + char v12; // bl + int *v13; // ebp + int *v14; // eax + char *v15; // eax + char v16; // bl + int *v17; // ebp + int *v18; // eax + int *v19; // ecx + int v20; // ebp + char *v21; // eax + int v22; // ecx + char v23; // dl + int v24; // eax + int *v25; // edx + char *v26; // ebx + int v27; // ebp + unsigned int v28; // ecx + char v29; // dl + int v30; // eax + char *v31; // edx + int v32; // esi + unsigned int v33; // ecx + char *v34; // edi + char v35; // bl + int v36; // eax + char *v37; // eax + char v38; // di + char *v39; // ebx + int v40; // ecx + char *v41; // edi + char *v42; // edx + int v43; // esi + char v44; // bl + int v45; // eax + int v46; // eax + char v47; // al + int ttype_entry; // eax + _Unwind_Exception *v49; // eax + _Unwind_Exception_Cleanup_Fn exception_cleanup; // [esp+18h] [ebp-74h] + _Unwind_Word v51; // [esp+1Ch] [ebp-70h] + bool v52; // [esp+22h] [ebp-6Ah] + char v53; // [esp+23h] [ebp-69h] + _Unwind_Word val; // [esp+24h] [ebp-68h] + unsigned __int64 v55; // [esp+28h] [ebp-64h] + char *private_2; // [esp+30h] [ebp-5Ch] + int **v57; // [esp+34h] [ebp-58h] + int v58; // [esp+3Ch] [ebp-50h] + _Unwind_Exception *v59; // [esp+44h] [ebp-48h] BYREF + int ip_before_insn; // [esp+48h] [ebp-44h] BYREF + unsigned __int8 v61[4]; // [esp+4Ch] [ebp-40h] BYREF + unsigned __int8 v62[4]; // [esp+50h] [ebp-3Ch] BYREF + unsigned __int8 v63[4]; // [esp+54h] [ebp-38h] BYREF + int v64; // [esp+58h] [ebp-34h] BYREF + int v65; // [esp+5Ch] [ebp-30h] + _Unwind_Ptr v66; // [esp+60h] [ebp-2Ch] + int v67; // [esp+64h] [ebp-28h] + unsigned int v68; // [esp+68h] [ebp-24h] + char v69; // [esp+6Ch] [ebp-20h] + char v70; // [esp+6Dh] [ebp-1Fh] + + v59 = 0; + ip_before_insn = 0; + if ( a1 != 1 ) + return 3; + v55 = a3 - 0x474E5543432B2B00LL; + v52 = ((unsigned int)v55 > 1) + HIDWORD(v55) == 0; + v53 = v52 && a2 == 6; + if ( v53 ) + { + val = *(&a4[-1].private_2 + 1); + if ( val ) + { + exception_cleanup = a4[-1].exception_cleanup; + private_2 = (char *)a4[-1].private_2; + goto LABEL_5; + } + goto LABEL_19; + } + private_2 = (char *)_Unwind_GetLanguageSpecificData(context); + if ( !private_2 ) + return 8; + v6 = (int *)parse_lsda_header(context, private_2, (int)&v64); + v66 = base_of_encoded_value(v69, context); + IPInfo = _Unwind_GetIPInfo(context, &ip_before_insn); + v8 = (__PAIR64__(IPInfo, ip_before_insn) - 1) >> 32; + if ( (unsigned int)v6 >= v68 ) + { +LABEL_15: + if ( (a2 & 1) != 0 ) + { + exception_cleanup = 0; + val = 0; + v51 = 0; +LABEL_17: + result = 6; + if ( v55 <= 1 ) + { + v25 = (int *)v59; + a4[-1].exception_cleanup = exception_cleanup; + *(&a4[-1].private_2 + 2) = (_Unwind_Word)v25; + a4[-1].private_1 = v51; + a4[-1].private_2 = (_Unwind_Word)private_2; + *(&a4[-1].private_2 + 1) = val; + } + return result; + } + if ( (a2 & 8) != 0 || __PAIR64__(a2 & 8, 1) < v55 ) + std::terminate(); +LABEL_19: + __cxa_call_terminate(a4); + } + while ( 1 ) + { + v9 = v70; + v10 = (int *)base_of_encoded_value(v70, 0); + encoded_value_with_base = read_encoded_value_with_base(v9, v10, v6, (int *)v61); + v12 = v70; + v13 = (int *)encoded_value_with_base; + v14 = (int *)base_of_encoded_value(v70, 0); + v15 = read_encoded_value_with_base(v12, v14, v13, (int *)v62); + v16 = v70; + v17 = (int *)v15; + v18 = (int *)base_of_encoded_value(v70, 0); + v19 = v17; + v20 = 0; + v21 = read_encoded_value_with_base(v16, v18, v19, (int *)v63); + v22 = 0; + v6 = (int *)v21; + do + { + v23 = *(_BYTE *)v6; + v6 = (int *)((char *)v6 + 1); + v24 = (v23 & 0x7F) << v22; + v22 += 7; + v20 |= v24; + } + while ( v23 < 0 ); + if ( v64 + *(_DWORD *)v61 > v8 ) + goto LABEL_15; + if ( *(_DWORD *)v62 + v64 + *(_DWORD *)v61 > v8 ) + break; + if ( v68 <= (unsigned int)v6 ) + goto LABEL_15; + } + if ( !*(_DWORD *)v63 ) + return 8; + val = v65 + *(_DWORD *)v63; + if ( !v20 ) + { + if ( v65 + *(_DWORD *)v63 ) + goto LABEL_23; + return 8; + } + v51 = v68 + v20 - 1; + if ( !val ) + return 8; + if ( v68 + v20 == 1 ) + { +LABEL_23: + exception_cleanup = (_Unwind_Exception_Cleanup_Fn)(a2 & 1); + if ( (a2 & 1) == 0 ) + goto LABEL_7; + return 8; + } + v57 = &`typeinfo for'__cxxabiv1::__forced_unwind; + if ( (a2 & 8) == 0 ) + { + v57 = &`typeinfo for'__cxxabiv1::__foreign_exception; + if ( __PAIR64__(a2 & 8, 1) >= v55 ) + { + v49 = a4 + 1; + if ( (a4->exception_class & 1) != 0 ) + v49 = (_Unwind_Exception *)a4[-2].private_2; + v59 = v49; + v57 = (int **)v49[-3].private_2; + } + } + while ( 1 ) + { + v26 = (char *)v51; + v27 = 0; + v28 = 0; + do + { + v29 = *v26++; + v30 = (v29 & 0x7F) << v28; + v28 += 7; + v27 |= v30; + } + while ( v29 < 0 ); + if ( v28 <= 0x1F && (v29 & 0x40) != 0 ) + v27 |= -(1 << v28); + exception_cleanup = (_Unwind_Exception_Cleanup_Fn)v27; + v31 = v26; + v32 = 0; + v33 = 0; + v34 = v26; + do + { + v35 = *v31++; + v36 = (v35 & 0x7F) << v33; + v33 += 7; + v32 |= v36; + } + while ( v35 < 0 ); + v37 = v34; + v38 = v35; + v39 = v37; + if ( v33 <= 0x1F && (v38 & 0x40) != 0 ) + v32 |= -(1 << v33); + if ( !v27 ) + { + v53 = 1; + goto LABEL_53; + } + if ( v27 <= 0 ) + break; + ttype_entry = get_ttype_entry((int)&v64, v27); + if ( !ttype_entry || v57 && (unsigned __int8)get_adjusted_ptr(ttype_entry, (int)v57, (int **)&v59) ) + goto LABEL_59; +LABEL_53: + if ( !v32 ) + { + if ( v53 ) + goto LABEL_23; + return 8; + } + v51 = (_Unwind_Word)&v39[v32]; + } + if ( (a2 & 8) == 0 && v52 && v57 ) + { + v47 = check_exception_spec((int)&v64, (int)v57, (int *)v59, v27) ^ 1; + } + else + { + v58 = v32; + v40 = 0; + v41 = v37; + v42 = (char *)(v67 + ~v27); + v43 = 0; + do + { + v44 = *v42++; + v45 = (v44 & 0x7F) << v40; + v40 += 7; + v43 |= v45; + } + while ( v44 < 0 ); + v46 = v43; + v32 = v58; + v39 = v41; + v47 = v46 == 0; + } + if ( !v47 ) + goto LABEL_53; +LABEL_59: + if ( (a2 & 1) != 0 ) + goto LABEL_17; + if ( (a2 & 8) != 0 || v55 > 1 ) + { + if ( v27 < 0 ) + std::unexpected(); + goto LABEL_7; + } +LABEL_5: + if ( (int)exception_cleanup < 0 ) + { + parse_lsda_header(context, private_2, (int)&v64); + v66 = base_of_encoded_value(v69, context); + *(&a4[-1].private_2 + 1) = base_of_encoded_value(v69, context); + } +LABEL_7: + _Unwind_SetGR((int)context, 0, (int)a4); + _Unwind_SetGR((int)context, 2, (int)exception_cleanup); + _Unwind_SetIP(context, val); + return 7; +} +// 504968: using guessed type void __noreturn __gxx_personality_v0_cold(void); +// 533C0C: using guessed type int *`typeinfo for'__cxxabiv1::__forced_unwind; +// 533C20: using guessed type int *`typeinfo for'__cxxabiv1::__foreign_exception; + +//----- (00500DD0) -------------------------------------------------------- +void __cdecl __tcf_0_5() +{ + if ( _CRT_MT ) + __gthr_win32_mutex_destroy(&`anonymous namespace'::emergency_pool); +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00500E00) -------------------------------------------------------- +void __cdecl __tcf_0_6() +{ + if ( byte_51526C ) + __gthr_win32_key_delete(init); +} +// 51526C: using guessed type char byte_51526C; + +//----- (00500E30) -------------------------------------------------------- +void __cdecl __tcf_0_7() +{ + if ( _CRT_MT ) + __gthr_win32_mutex_destroy(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00500E60) -------------------------------------------------------- +void __cdecl __tcf_0_8() +{ + if ( _CRT_MT ) + __gthr_win32_mutex_destroy(&`anonymous namespace'::get_locale_mutex(void)::locale_mutex); +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00500E90) -------------------------------------------------------- +void __cdecl __tcf_0_9(std::_V2::error_category *a1) +{ + `anonymous namespace'::__io_category_instance(void)::__ec = &off_5377AC; + std::_V2::error_category::~error_category(a1); +} +// 516B70: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); +// 5377AC: using guessed type void (__cdecl *off_5377AC)(_anonymous_namespace_::io_error_category *__hidden this); + +//----- (00500ED0) -------------------------------------------------------- +int __cdecl main(int argc, const char **argv, const char **envp) +{ + int v3; // ebx + std::_Rb_tree_header *v4; // ecx + char **v5; // edi + int v6; // eax + bool v7; // dl + std::_Rb_tree_header *v8; // ecx + int v9; // edi + int v10; // ebx + _DWORD *v11; // eax + _BYTE *v12; // edx + char v13; // al + char v14; // al + _BYTE **v15; // eax + _BYTE **v16; // eax + std::_Rb_tree_header *v17; // esi + std::_Rb_tree_header *v18; // eax + std::_Rb_tree_header *v19; // edx + int v20; // edx + char *v21; // eax + _BYTE *v22; // eax + int v23; // eax + std::_Rb_tree_header *v24; // ecx + char v25; // dl + int v26; // ebx + char *v27; // ecx + int v28; // edx + int v29; // eax + int v30; // eax + std::_Rb_tree_header *v31; // ecx + FILE *v32; // ebx + int JsonDict; // eax + char *i; // ebx + int v35; // edi + char *v36; // esi + std::_Rb_tree_header *v38; // [esp-70h] [ebp-418h] + std::_Rb_tree_header *v39; // [esp-70h] [ebp-418h] + std::_Rb_tree_header *v40; // [esp-70h] [ebp-418h] + char v41; // [esp+6h] [ebp-3A2h] + char v42; // [esp+7h] [ebp-3A1h] + char v43; // [esp+8h] [ebp-3A0h] + char v44; // [esp+Ah] [ebp-39Eh] + const char **v45; // [esp+Ch] [ebp-39Ch] + int v46; // [esp+10h] [ebp-398h] + int v47; // [esp+18h] [ebp-390h] + bool excb; // [esp+1Ch] [ebp-38Ch] + unsigned int exc; // [esp+1Ch] [ebp-38Ch] + int exca; // [esp+1Ch] [ebp-38Ch] + char *FileName; // [esp+28h] [ebp-380h] + int v52[3]; // [esp+2Ch] [ebp-37Ch] BYREF + int v53; // [esp+38h] [ebp-370h] BYREF + int v54; // [esp+3Ch] [ebp-36Ch] + int v55; // [esp+40h] [ebp-368h] + char *v56; // [esp+44h] [ebp-364h] BYREF + int v57; // [esp+48h] [ebp-360h] + int v58; // [esp+4Ch] [ebp-35Ch] + int v59[2]; // [esp+50h] [ebp-358h] BYREF + char v60; // [esp+58h] [ebp-350h] BYREF + char *v61; // [esp+68h] [ebp-340h] BYREF + int v62; // [esp+6Ch] [ebp-33Ch] + char v63; // [esp+70h] [ebp-338h] BYREF + int v64; // [esp+80h] [ebp-328h] BYREF + int v65[6]; // [esp+98h] [ebp-310h] BYREF + char v66[24]; // [esp+B0h] [ebp-2F8h] BYREF + int v67; // [esp+C8h] [ebp-2E0h] BYREF + int v68; // [esp+218h] [ebp-190h] BYREF + int v69; // [esp+21Ch] [ebp-18Ch] + int v70; // [esp+220h] [ebp-188h] + int v71; // [esp+230h] [ebp-178h] BYREF + char *String[2]; // [esp+248h] [ebp-160h] BYREF + int v73; // [esp+250h] [ebp-158h] BYREF + int v74; // [esp+260h] [ebp-148h] BYREF + char v75; // [esp+264h] [ebp-144h] BYREF + char *v76; // [esp+26Ch] [ebp-13Ch] + char *v77; // [esp+278h] [ebp-130h] BYREF + int v78; // [esp+290h] [ebp-118h] BYREF + int v79; // [esp+294h] [ebp-114h] + char v80[16]; // [esp+298h] [ebp-110h] BYREF + char *Format; // [esp+2A8h] [ebp-100h] BYREF + int v82; // [esp+2ACh] [ebp-FCh] + int v83; // [esp+2B0h] [ebp-F8h] BYREF + int v84; // [esp+2C0h] [ebp-E8h] BYREF + char v85[192]; // [esp+2D8h] [ebp-D0h] BYREF + int *p_argc; // [esp+398h] [ebp-10h] + + p_argc = &argc; + v46 = argc; + v45 = argv; + __main(); + FileName = 0; + v59[0] = (int)&v60; + memset(v52, 0, sizeof(v52)); + v59[1] = 0; + v60 = 0; + v61 = &v63; + v62 = 0; + v63 = 0; + v53 = 0; + v54 = 0; + v55 = 0; + v56 = 0; + v57 = 0; + v58 = 0; + std::_Rb_tree_header::_Rb_tree_header(v38); + std::string::basic_string("$gwx"); + std::string::basic_string(" "); + v3 = 1; + std::_Rb_tree_header::_Rb_tree_header(v4); + while ( v3 < v46 ) + { + std::string::basic_string("--config-path"); + v5 = (char **)&v45[v3]; + v6 = std::string::compare(*v5); + v7 = 0; + if ( !v6 ) + v7 = v3 + 1 < v46; + excb = v7; + std::string::_M_dispose(&v84); + if ( excb ) + { + std::string::operator=((char *)v45[++v3]); + v39 = v8; + } + else + { + std::string::basic_string(*v5); + v39 = (std::_Rb_tree_header *)std::vector::emplace_back(&v84); + std::string::_M_dispose(&v84); + } + ++v3; + } + if ( v62 ) + { + v79 = 0; + v78 = (int)v80; + v80[0] = 0; + ReadFile(v61, (int)&v78); + while ( v79 ) + { + std::string::basic_string("\n"); + GetNextArg(&v84, &v78, &Format); + v39 = (std::_Rb_tree_header *)std::vector::emplace_back(&v84); + std::string::_M_dispose(&v84); + std::string::_M_dispose(&Format); + } + std::string::_M_dispose(&v78); + } + v9 = 0; + exc = 0; + v41 = 0; + v42 = 0; + v43 = 0; + v47 = -1431655765 * ((v54 - v53) >> 3); + v44 = 0; + while ( v9 < v47 ) + { + v10 = 24 * v9; + v11 = (_DWORD *)(v53 + 24 * v9); + v12 = (_BYTE *)*v11; + if ( *(_BYTE *)*v11 != 45 ) + { + std::vector::push_back(v11); + goto LABEL_86; + } + v13 = v12[1]; + switch ( v13 ) + { + case 'd': + v14 = v12[2]; + if ( !v14 ) + { + exc |= 2u; + goto LABEL_90; + } + if ( v14 == 115 ) + { + exc |= 4u; + goto LABEL_90; + } + break; + case 's': + if ( v12[2] == 116 ) + { + exc |= 8u; + goto LABEL_90; + } + if ( v9 + 1 < v47 ) + { + v39 = (std::_Rb_tree_header *)std::vector::push_back(v53 + v10 + 24); + goto LABEL_90; + } + break; + case 'v': + if ( v12[2] == 98 ) + exc |= 0x10u; + else + v44 = 1; + goto LABEL_90; + case 'x': + if ( v12[2] == 99 && v9 + 1 < v47 ) + { + v15 = (_BYTE **)(v53 + v10 + 24); + if ( **v15 != 45 ) + { + ++v9; + v39 = (std::_Rb_tree_header *)std::string::_M_assign(v15); + } + goto LABEL_90; + } + break; + case 'c': + if ( v12[2] == 99 && v9 + 1 < v47 ) + { + v16 = (_BYTE **)(v53 + v10 + 24); + if ( **v16 != 45 ) + { + std::string::_M_assign(v16); + v39 = (std::_Rb_tree_header *)v9++; + } + goto LABEL_90; + } + break; + case 'o': + if ( v9 + 1 < v47 ) + { + ++v9; + FileName = *(char **)(v53 + v10 + 24); + goto LABEL_90; + } + break; + case 'g': + if ( v12[2] == 110 && v9 + 1 < v47 ) + { + std::string::_M_assign(v53 + v10 + 24); + ++v9; + v39 = (std::_Rb_tree_header *)v10; + goto LABEL_90; + } + break; + case 'p': + exc |= 0x20u; + goto LABEL_90; + case 't': + exc |= 1u; + goto LABEL_90; + case 'i': + exc |= 0x40u; + goto LABEL_90; + } + std::string::basic_string("--split"); + v17 = (std::_Rb_tree_header *)std::operator==(v10 + v53, &v84); + if ( (_BYTE)v17 ) + { + v18 = (std::_Rb_tree_header *)(v9 + 1); + LOBYTE(v18) = v9 + 1 < v47; + v17 = v18; + } + std::string::_M_dispose(&v84); + if ( (_BYTE)v17 ) + { + ++v9; + std::string::_M_assign(v53 + v10 + 24); +LABEL_86: + v39 = v19; + goto LABEL_90; + } + v20 = *(_DWORD *)(v53 + 24 * v9); + if ( *(_BYTE *)(v20 + 1) == 99 && *(_BYTE *)(v20 + 2) == 98 ) + { + ++v9; + LOBYTE(v83) = 0; + Format = (char *)&v83; + v21 = *(char **)(v53 + v10 + 24); + exc |= 0x80u; + v82 = 0; + ReadFile(v21, (int)&Format); + if ( v82 ) + { + std::string::basic_string("life_cycle_callback_content"); + std::map::operator[](&v84); + v39 = (std::_Rb_tree_header *)std::string::_M_assign(&Format); + std::string::_M_dispose(&v84); + } + std::string::_M_dispose(&Format); + } + else if ( !std::string::compare("--pm") && v9 + 1 < v47 ) + { + std::string::basic_string("plain_text_marker"); + std::map::operator[](&v84); + std::string::_M_assign(v53 + v10 + 24); + v39 = (std::_Rb_tree_header *)(v53 + v10 + 24); + std::string::_M_dispose(&v84); + ++v9; + } + else + { + v22 = *(_BYTE **)(v10 + v53); + if ( v22[1] == 108 && v22[2] == 108 ) + { + v25 = v22[3]; + if ( v25 != 119 && v25 != 97 ) + { + fprintf(&__iob[2], "Error: expected -llw or -lla, but got %s", *(const char **)(v10 + v53)); + exca = -1; + goto LABEL_114; + } + if ( !std::string::compare(" ") ) + std::string::basic_string(","); + else + std::string::basic_string(v66); + ++v9; + Split(&v68, v53 + v10 + 24, &v84); + v26 = v68; + v27 = v56; + v68 = 0; + v28 = v57; + v56 = (char *)v26; + Format = v27; + v57 = v69; + v83 = v58; + v82 = v28; + v58 = v70; + v69 = 0; + v70 = 0; + std::vector::~vector(&Format); + std::vector::~vector(&v68); + std::string::_M_dispose(&v84); + } + else + { + v23 = std::string::compare("--wxs"); + v39 = v24; + if ( v23 ) + { + v29 = std::string::compare("--gdc"); + v39 = v17; + if ( v29 ) + { + v30 = std::string::compare("--wxs-env"); + v39 = v31; + if ( !v30 ) + v41 = 1; + } + else + { + v42 = 1; + } + } + else + { + v43 = 1; + } + } + } +LABEL_90: + ++v9; + } + if ( v44 ) + { + std::string::basic_string("global"); + WXML::Compiler::GetVersionInfo(&Format, &v84); + std::string::_M_dispose(&v84); + if ( FileName && *FileName ) + v32 = fopen(FileName, "w"); + else + v32 = &__iob[1]; + fprintf(v32, "%s\n", Format); + fclose(v32); + std::string::_M_dispose(&Format); + } + if ( v43 ) + { + String[1] = 0; + String[0] = (char *)&v73; + LOBYTE(v73) = 0; + std::_Rb_tree_header::_Rb_tree_header(v39); + std::_Rb_tree_header::_Rb_tree_header(v40); + if ( ReadFile(*(char **)v52[0], (int)String) ) + { + fprintf(&__iob[2], "Failed to read input from %s", *(const char **)v52[0]); + exca = -1; + } + else + { + JsonDict = GetJsonDict(String, &v74); + exca = JsonDict; + if ( JsonDict ) + { + fprintf(&__iob[2], "Failed to read JSON at position %d (%c)", ~JsonDict, String[0][~JsonDict]); +LABEL_106: + exca = -2; + } + else + { + for ( i = v76; i != &v75; i = (char *)std::_Rb_tree_increment(i) ) + { + std::string::basic_string(i + 16); + std::string::basic_string(i + 40); + v78 = (int)v80; + v79 = 0; + v80[0] = 0; + if ( night::compile_ns_no_wrapper(&v84, v85, 1, &v78, 0) ) + { + fprintf(&__iob[2], "Error in file %s: %s\n", (const char *)v84, (const char *)v78); + std::string::_M_dispose(&v78); + std::pair::~pair(&v84); + goto LABEL_106; + } + v35 = snprintf(0, 0, WXML::GlassEaselWxs::sWrapper, v78) + 1; + v36 = (char *)operator new[](v35); + snprintf(v36, v35, WXML::GlassEaselWxs::sWrapper, v78); + std::string::basic_string(v36); + std::map::operator[](&v84); + std::string::operator=(&Format); + std::string::_M_dispose(&Format); + operator delete[](v36); + std::string::_M_dispose(&v78); + std::pair::~pair(&v84); + } + DictToJsonString(&v71, &v77); + main::{lambda(std::string const&)#1}::operator()(); + std::string::_M_dispose(&v71); + } + } + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(&v77); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(&v74); + std::string::_M_dispose(String); + } + else if ( v42 || v41 ) + { + main::{lambda(std::string const&)#1}::operator()(); + exca = 0; + } + else + { + exca = Usage(v46, v45); + } +LABEL_114: + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(&v67); + std::string::_M_dispose(v66); + std::string::_M_dispose(v65); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(&v64); + std::vector::~vector(&v56); + std::vector::~vector(&v53); + std::string::_M_dispose(&v61); + std::string::_M_dispose(v59); + std::vector::~vector(v52); + return exca; +} +// 501A5E: conditional instruction was optimized away because %var_37C.4==0 +// 500FA1: variable 'v38' is possibly undefined +// 500FD7: variable 'v4' is possibly undefined +// 501062: variable 'v8' is possibly undefined +// 501508: variable 'v24' is possibly undefined +// 501681: variable 'v31' is possibly undefined +// 50169D: variable 'v19' is possibly undefined +// 501782: variable 'v39' is possibly undefined +// 50178D: variable 'v40' is possibly undefined +// 4015F0: using guessed type int main::{lambda(std::string const&)#1}::operator()(void); +// 401664: using guessed type int __fastcall std::pair::~pair(_DWORD); +// 4016F6: using guessed type _DWORD __stdcall std::string::basic_string(_DWORD); +// 4019B7: using guessed type _DWORD __cdecl GetNextArg(_DWORD, _DWORD, _DWORD); +// 401ABA: using guessed type int __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(_DWORD); +// 401ACE: using guessed type int __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_lower_bound(_DWORD, _DWORD, _DWORD); +// 401B0A: using guessed type int __fastcall std::vector::~vector(_DWORD); +// 401B30: using guessed type _DWORD __cdecl Split(_DWORD, _DWORD, _DWORD); +// 401BF0: using guessed type int __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(_DWORD); +// 402415: using guessed type _DWORD __cdecl WXML::Rewrite::ToStringCode(_DWORD, _DWORD); +// 40CDD5: using guessed type _DWORD __cdecl night::compile_ns_no_wrapper(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); +// 40ECE0: using guessed type _DWORD __cdecl WXML::Compiler::GetVersionInfo(_DWORD, _DWORD); +// 40EF78: using guessed type _DWORD __cdecl WXML::Compiler::WXMLHelperCode[abi:cxx11](_DWORD); +// 410A55: using guessed type int __cdecl WXML::Compiler::Compile(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); +// 44DD60: using guessed type int __main(void); +// 45EA6C: using guessed type _DWORD __cdecl GetJsonDict(_DWORD, _DWORD); +// 45EEBC: using guessed type _DWORD __cdecl DictToJsonString(_DWORD, _DWORD); +// 4711C0: using guessed type _DWORD __stdcall std::string::substr(_DWORD, _DWORD, _DWORD); +// 4723B0: using guessed type _DWORD __stdcall std::stringbuf::str(_DWORD); +// 4D5E04: using guessed type _DWORD __stdcall std::map::operator[](_DWORD); +// 4D5EC0: using guessed type _DWORD __stdcall std::map::operator[](_DWORD); +// 4D6284: using guessed type _DWORD __stdcall std::map>::operator[](_DWORD); +// 4DB584: using guessed type _DWORD __stdcall std::vector::emplace_back(_DWORD); +// 4DB864: using guessed type _DWORD __stdcall std::vector::push_back(_DWORD); +// 4DB8A0: using guessed type _DWORD __stdcall std::vector::operator=(_DWORD); +// 4DD4B0: using guessed type int __fastcall std::string::_M_dispose(_DWORD); +// 4DE230: using guessed type _DWORD __stdcall std::string::append(_DWORD); +// 4DF690: using guessed type _DWORD __stdcall std::string::_M_assign(_DWORD); +// 4DF9E0: using guessed type _DWORD __stdcall std::string::basic_string(_DWORD); +// 4DFB40: using guessed type _DWORD __stdcall std::string::basic_string(_DWORD); +// 4E0140: using guessed type _DWORD __stdcall std::string::operator=(_DWORD); +// 4E0330: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); +// 4E9D20: using guessed type int __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD); +// 4EA6F0: using guessed type int __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD); +// 4F390C: using guessed type _DWORD __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node(_DWORD, _DWORD, _DWORD); +// 4F39E8: using guessed type __int64 __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD, _DWORD); +// 4F3BEC: using guessed type _DWORD __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_Rb_tree(_DWORD); +// 4F98C0: using guessed type _DWORD __cdecl std::_Rb_tree_increment(_DWORD); +// 4FB224: using guessed type _DWORD __cdecl std::__find_if<__gnu_cxx::__normal_iterator>,__gnu_cxx::__ops::_Iter_equals_val>(_DWORD, _DWORD, _DWORD); +// 4FD080: using guessed type _DWORD __cdecl std::operator==(_DWORD, _DWORD); +// 4FD770: using guessed type _DWORD __cdecl std::operator<(_DWORD, _DWORD); +// 4FD848: using guessed type _DWORD __cdecl std::operator+(_DWORD, _DWORD, _DWORD); +// 500ED0: using guessed type int var_310[6]; +// 500ED0: using guessed type char var_D0[192]; + +//----- (00502E49) -------------------------------------------------------- +int _GLOBAL__sub_I_sCliVersion() +{ + std::ios_base::Init::Init(); + atexit(__tcf_2); + std::string::basic_string((void **)&night::nsv_, (char *)&off_517814); + atexit(__tcf_3); + std::string::basic_string((void **)&night::nst_, (char *)&off_517818); + atexit(__tcf_4); + std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); + atexit(__tcf_5); + std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); + atexit(__tcf_6); + std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)&off_517826); + atexit(__tcf_7); + std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)&off_51782A); + atexit(__tcf_8); + std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)&off_51782E); + atexit(__tcf_9); + std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); + atexit(__tcf_10); + std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); + atexit(__tcf_11); + std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); + atexit(__tcf_12); + std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); + atexit(__tcf_13); + std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); + atexit(__tcf_14); + std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); + atexit(__tcf_15); + std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); + atexit(__tcf_16); + std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); + atexit(__tcf_17); + std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)&off_517868); + atexit(__tcf_18); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); + atexit(__tcf_19); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); + atexit(__tcf_20); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); + atexit(__tcf_21); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); + atexit(__tcf_22); + std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); + atexit(__tcf_23); + std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); + atexit(__tcf_24); + std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); + atexit(__tcf_25); + std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)&off_5178A8); + atexit(__tcf_26); + std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); + atexit(__tcf_27); + std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); + atexit(__tcf_28); + std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); + atexit(__tcf_29); + std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); + atexit(__tcf_30); + std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); + atexit(__tcf_31); + std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); + atexit(__tcf_32); + std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); + atexit(__tcf_33); + std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); + atexit(__tcf_34); + std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); + atexit(__tcf_35); + std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); + atexit(__tcf_36); + std::string::basic_string( + (void **)&night::NS_BUILTIN_ALL_OP, + " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); + atexit(__tcf_37); + std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); + atexit(__tcf_38); + std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); + atexit(__tcf_39); + std::string::basic_string( + (void **)&night::NS_BUILTIN_KW, + " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" + "ile do break continue switch case default "); + atexit(__tcf_40); + std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); + atexit(__tcf_41); + std::string::basic_string((void **)&WXML::GlassEaselWxs::sGitHash, "541c39f8b49d62929ed72f2363ee6c90f3c35e04"); + atexit(__tcf_42); + std::string::basic_string( + (void **)&WXML::GlassEaselWxs::sWrapper, + "function n(nv_require,nv_exports,nv_module){%s}const t={nv_exports:{}};n((function(n){n.startsWith(\"p_\")&&(n=\"/\"" + "+n.slice(2)),n.endsWith(\".wxs\")&&(n=n.slice(0,n.length-4));const t=gdc(require(n),\"nv_\");return function(){retur" + "n t}}),t.nv_exports,t),Object.assign(module,gdc(t,void 0));"); + atexit(__tcf_43); + std::string::basic_string( + (void **)&WXML::GlassEaselWxs::sGenFuncDeepCopy, + "var gdc=function(){var e=function(){return void 0!==this?this:\"undefined\"!=typeof globalThis?globalThis:\"undefine" + "d\"!=typeof self?self:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:{}}();return function(" + "n,t,o,i=e){if(null==n)return n;if(\"undefined\"!=typeof __wxCodeSpace__&&\"function\"==typeof __wxCodeSpace__.isWxsS" + "tateObject&&__wxCodeSpace__.isWxsStateObject(n))return n;if(\"string\"==typeof n||\"boolean\"==typeof n||\"number\"=" + "=typeof n)return n;if(Array.isArray(n)){const e=[];for(let i=0;i~!?"); + atexit(__tcf_33_0); + std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); + atexit(__tcf_34_0); + std::string::basic_string( + (void **)night::NS_BUILTIN_ALL_OP, + " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); + atexit(__tcf_35_0); + std::string::basic_string((void **)night::NS_BUILTIN_PUNC, ".,;(){}[]:"); + atexit(__tcf_36_0); + std::string::basic_string((void **)night::NS_BUILTIN_SPACE, " \t\r\n"); + atexit(__tcf_37_0); + std::string::basic_string( + (void **)night::NS_BUILTIN_KW, + " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" + "ile do break continue switch case default "); + atexit(__tcf_38_0); + std::string::basic_string((void **)night::NS_BUILTIN_TYPE, " Number Math Date "); + atexit(__tcf_39_0); + std::string::basic_string((void **)&night::std_v_n, "new std::vector"); + atexit(__tcf_40_0); + std::string::basic_string((void **)&night::std_v_v_n, "new std::vector*>"); + return atexit(__tcf_41_0); +} +// 51C33E: using guessed type void *off_51C33E; +// 51C342: using guessed type void *off_51C342; +// 586AB0: using guessed type int night::NS_BUILTIN_TYPE[6]; +// 586AC8: using guessed type int night::NS_BUILTIN_KW[6]; +// 586AE0: using guessed type int night::NS_BUILTIN_SPACE[6]; +// 586AF8: using guessed type int night::NS_BUILTIN_PUNC[6]; +// 586B10: using guessed type int night::NS_BUILTIN_ALL_OP[6]; +// 586B40: using guessed type int night::NS_BUILTIN_OP[6]; +// 586E40: using guessed type void *night::nsv_; + +//----- (0050384C) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 50384C: using guessed type unsigned int var_1C[7]; + +//----- (005038BD) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN5night9sourcemap21gen_sourcemap_contentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapIS6_jSt4lessIS6_ESaISt4pairIS7_jEEES9_IjS6_SA_IjESaISC_IKjS6_EEERSt6vectorINS_12ns_sourcemapESaISM_EEiRS6_PS6_() +{ + std::string::basic_string((void **)&night::nsv_, (char *)&off_51C55B); + atexit(__tcf_0); + std::string::basic_string((void **)&night::nst_, (char *)&off_51C55F); + atexit(__tcf_1_0); + std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); + atexit(__tcf_2_1); + std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); + atexit(__tcf_3_1); + std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)&off_51C56D); + atexit(__tcf_4_1); + std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)&off_51C571); + atexit(__tcf_5_1); + std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)&off_51C575); + atexit(__tcf_6_1); + std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); + atexit(__tcf_7_1); + std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); + atexit(__tcf_8_1); + std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); + atexit(__tcf_9_1); + std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); + atexit(__tcf_10_1); + std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); + atexit(__tcf_11_1); + std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); + atexit(__tcf_12_1); + std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); + atexit(__tcf_13_1); + std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); + atexit(__tcf_14_1); + std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)&off_51C5AF); + atexit(__tcf_15_1); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); + atexit(__tcf_16_1); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); + atexit(__tcf_17_1); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); + atexit(__tcf_18_1); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); + atexit(__tcf_19_1); + std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); + atexit(__tcf_20_1); + std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); + atexit(__tcf_21_1); + std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); + atexit(__tcf_22_1); + std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)&off_51C5EF); + atexit(__tcf_23_1); + std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); + atexit(__tcf_24_1); + std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); + atexit(__tcf_25_1); + std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); + atexit(__tcf_26_1); + std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); + atexit(__tcf_27_1); + std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); + atexit(__tcf_28_1); + std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); + atexit(__tcf_29_1); + std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); + atexit(__tcf_30_1); + std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); + atexit(__tcf_31_1); + std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); + atexit(__tcf_32_1); + std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); + atexit(__tcf_33_1); + std::string::basic_string( + (void **)&night::NS_BUILTIN_ALL_OP, + " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); + atexit(__tcf_34_1); + std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); + atexit(__tcf_35_1); + std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); + atexit(__tcf_36_1); + std::string::basic_string( + (void **)&night::NS_BUILTIN_KW, + " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" + "ile do break continue switch case default "); + atexit(__tcf_37_1); + std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); + return atexit(__tcf_38_1); +} +// 51C55B: using guessed type void *off_51C55B; +// 51C55F: using guessed type void *off_51C55F; +// 51C56D: using guessed type void *off_51C56D; +// 51C571: using guessed type void *off_51C571; +// 51C575: using guessed type void *off_51C575; +// 51C5AF: using guessed type void *off_51C5AF; +// 51C5EF: using guessed type void *off_51C5EF; + +//----- (00503D58) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 503D58: using guessed type unsigned int var_1C[7]; + +//----- (00503DC9) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN5night3str12path_combineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_RS6_() +{ + std::string::basic_string((void **)&night::nsv_, (char *)&off_51C7CF); + atexit(__tcf_1_1); + std::string::basic_string((void **)&night::nst_, (char *)&off_51C7D3); + atexit(__tcf_2_2); + std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); + atexit(__tcf_3_2); + std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); + atexit(__tcf_4_2); + std::string::basic_string((void **)&night::NS_TYPE_VAR, (char *)&off_51C7E1); + atexit(__tcf_5_2); + std::string::basic_string((void **)&night::NS_TYPE_STR, (char *)&off_51C7E5); + atexit(__tcf_6_2); + std::string::basic_string((void **)&night::NS_TYPE_NUM, (char *)&off_51C7E9); + atexit(__tcf_7_2); + std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); + atexit(__tcf_8_2); + std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); + atexit(__tcf_9_2); + std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); + atexit(__tcf_10_2); + std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); + atexit(__tcf_11_2); + std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); + atexit(__tcf_12_2); + std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); + atexit(__tcf_13_2); + std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); + atexit(__tcf_14_2); + std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); + atexit(__tcf_15_2); + std::string::basic_string((void **)&night::NS_TYPE_K_V, (char *)&off_51C823); + atexit(__tcf_16_2); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); + atexit(__tcf_17_2); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); + atexit(__tcf_18_2); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); + atexit(__tcf_19_2); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); + atexit(__tcf_20_2); + std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); + atexit(__tcf_21_2); + std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); + atexit(__tcf_22_2); + std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); + atexit(__tcf_23_2); + std::string::basic_string((void **)&night::NS_TYPE_FOR, (char *)&off_51C863); + atexit(__tcf_24_2); + std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); + atexit(__tcf_25_2); + std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); + atexit(__tcf_26_2); + std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); + atexit(__tcf_27_2); + std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); + atexit(__tcf_28_2); + std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); + atexit(__tcf_29_2); + std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); + atexit(__tcf_30_2); + std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); + atexit(__tcf_31_2); + std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); + atexit(__tcf_32_2); + std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); + atexit(__tcf_33_2); + std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); + atexit(__tcf_34_2); + std::string::basic_string( + (void **)&night::NS_BUILTIN_ALL_OP, + " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); + atexit(__tcf_35_2); + std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); + atexit(__tcf_36_2); + std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); + atexit(__tcf_37_2); + std::string::basic_string( + (void **)&night::NS_BUILTIN_KW, + " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" + "ile do break continue switch case default "); + atexit(__tcf_38_2); + std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); + return atexit(__tcf_39_1); +} +// 51C7CF: using guessed type void *off_51C7CF; +// 51C7D3: using guessed type void *off_51C7D3; +// 51C7E1: using guessed type void *off_51C7E1; +// 51C7E5: using guessed type void *off_51C7E5; +// 51C7E9: using guessed type void *off_51C7E9; +// 51C823: using guessed type void *off_51C823; +// 51C863: using guessed type void *off_51C863; + +//----- (00504264) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXML8Compiler9GetFuncIdERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS7_ESaISt4pairIKS7_iEEERSB_() +{ + std::ios_base::Init::Init(); + atexit(__tcf_2_3); + std::string::basic_string((void **)&night::nsv_, (unsigned __int8 *)&off_52DA7A); + atexit(__tcf_3_3); + std::string::basic_string((void **)&night::nst_, (unsigned __int8 *)&off_52DA7E); + atexit(__tcf_4_3); + std::string::basic_string((void **)&night::NS_TYPE_SKIP, "skip"); + atexit(__tcf_5_3); + std::string::basic_string((void **)&night::NS_TYPE_BOOL, "bool"); + atexit(__tcf_6_3); + std::string::basic_string((void **)&night::NS_TYPE_VAR, (unsigned __int8 *)&off_52DA8C); + atexit(__tcf_7_3); + std::string::basic_string((void **)&night::NS_TYPE_STR, (unsigned __int8 *)&off_52DA90); + atexit(__tcf_8_3); + std::string::basic_string((void **)&night::NS_TYPE_NUM, (unsigned __int8 *)&off_52DA94); + atexit(__tcf_9_3); + std::string::basic_string((void **)&night::NS_TYPE_B_TYPE, "builtin_type"); + atexit(__tcf_10_3); + std::string::basic_string((void **)&night::NS_TYPE_KW, "kw"); + atexit(__tcf_11_3); + std::string::basic_string((void **)&night::NS_TYPE_PUNC, "punc"); + atexit(__tcf_12_3); + std::string::basic_string((void **)&night::NS_TYPE_OP, "op"); + atexit(__tcf_13_3); + std::string::basic_string((void **)&night::NS_TYPE_OP_SELF, "op_self"); + atexit(__tcf_14_3); + std::string::basic_string((void **)&night::NS_TYPE_BINARY, "binary"); + atexit(__tcf_15_3); + std::string::basic_string((void **)&night::NS_TYPE_ASSIGN, "assign"); + atexit(__tcf_16_3); + std::string::basic_string((void **)&night::NS_TYPE_TERNARY, "ternary"); + atexit(__tcf_17_3); + std::string::basic_string((void **)&night::NS_TYPE_K_V, (unsigned __int8 *)&off_52DACE); + atexit(__tcf_18_3); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_DOT, "obj_dot"); + atexit(__tcf_19_3); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_PROPERTY, "obj_property"); + atexit(__tcf_20_3); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_SELF_OP, "obj_self_op"); + atexit(__tcf_21_3); + std::string::basic_string((void **)&night::NS_TYPE_OBJ_BLOCK, "obj_block"); + atexit(__tcf_22_3); + std::string::basic_string((void **)&night::NS_TYPE_ARRAY, "array"); + atexit(__tcf_23_3); + std::string::basic_string((void **)&night::NS_TYPE_BRACKET, "bracket"); + atexit(__tcf_24_3); + std::string::basic_string((void **)&night::NS_TYPE_IF, "if"); + atexit(__tcf_25_3); + std::string::basic_string((void **)&night::NS_TYPE_FOR, (unsigned __int8 *)&off_52DB0E); + atexit(__tcf_26_3); + std::string::basic_string((void **)&night::NS_TYPE_WHILE, "while"); + atexit(__tcf_27_3); + std::string::basic_string((void **)&night::NS_TYPE_DO_WHILE, "do_while"); + atexit(__tcf_28_3); + std::string::basic_string((void **)&night::NS_TYPE_SWITCH, "switch"); + atexit(__tcf_29_3); + std::string::basic_string((void **)&night::NS_TYPE_PROG, "prog"); + atexit(__tcf_30_3); + std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM, "prog_no_sem"); + atexit(__tcf_31_3); + std::string::basic_string((void **)&night::NS_TYPE_PROG_NO_SEM_REQUIRE, "prog_no_sem_require"); + atexit(__tcf_32_3); + std::string::basic_string((void **)&night::NS_TYPE_FUNC, "function"); + atexit(__tcf_33_3); + std::string::basic_string((void **)&night::NS_TYPE_CALL, "call"); + atexit(__tcf_34_3); + std::string::basic_string((void **)&night::NS_BUILTIN_OP, "+-*/%=&^|<>~!?"); + atexit(__tcf_35_3); + std::string::basic_string((void **)&night::NS_BUILTIN_OP_SELF, "~!"); + atexit(__tcf_36_3); + std::string::basic_string( + (void **)&night::NS_BUILTIN_ALL_OP, + " = ? + - * / % ++ -- + - ~ ! << >> >>> & ^ | < > <= >= == != === !== *= /= %= += -= <<= >>= >>>= &= ^= |= && || "); + atexit(__tcf_37_3); + std::string::basic_string((void **)&night::NS_BUILTIN_PUNC, ".,;(){}[]:"); + atexit(__tcf_38_3); + std::string::basic_string((void **)&night::NS_BUILTIN_SPACE, " \t\r\n"); + atexit(__tcf_39_2); + std::string::basic_string( + (void **)&night::NS_BUILTIN_KW, + " delete void typeof null undefined NaN Infinity var if else true false require this function arguments return for wh" + "ile do break continue switch case default "); + atexit(__tcf_40_1); + std::string::basic_string((void **)&night::NS_BUILTIN_TYPE, " Number Math Date "); + return atexit(__tcf_41_1); +} +// 52DA7A: using guessed type void *off_52DA7A; +// 52DA7E: using guessed type void *off_52DA7E; +// 52DA8C: using guessed type void *off_52DA8C; +// 52DA90: using guessed type void *off_52DA90; +// 52DA94: using guessed type void *off_52DA94; +// 52DACE: using guessed type void *off_52DACE; +// 52DB0E: using guessed type void *off_52DB0E; + +//----- (00504714) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXML6DOMLib7WXMLDom12componentCntE() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_1_2); +} + +//----- (00504734) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXML6DOMLib7Machine5ResetEv() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_0_0); +} + +//----- (00504754) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXML8Compiler24CalculateOutputChunkKeysERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKS7_RKSt3mapIS7_S9_St4lessIS7_ESaISt4pairISC_S9_EEESM_RSK_() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_0_1); +} + +//----- (00504774) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXML7EXPRLib7OPShort5CONSTE() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_1_3); +} + +//----- (00504794) -------------------------------------------------------- +int _GLOBAL__sub_I__ZNK4WXML7EXPRLib5Token12GetTokenNameEv() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_0_3); +} + +//----- (005047B4) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXML7EXPRLib12TransitTable13GetExprNTTypeEv() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_1_4); +} + +//----- (005047D4) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXML16StringTemplating4DealEPKcRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorINS0_5TokenESaISB_EERb() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_0_4); +} + +//----- (005047F4) -------------------------------------------------------- +#error "5047FB: call analysis failed (funcsize=7)" + +//----- (00504838) -------------------------------------------------------- +void __cdecl __noreturn `anonymous namespace'::pool::allocate() +{ + __gnu_cxx::__throw_concurrence_lock_error(); +} + +//----- (00504880) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv() +{ + _DWORD *v0; // eax + + if ( _CRT_MT ) + __gthr_win32_mutex_init_function(&`anonymous namespace'::emergency_pool); + dword_5153A0 = 18944; + v0 = malloc(0x4A00u); + dword_51539C = (int)v0; + if ( v0 ) + { + dword_515398 = (int)v0; + *v0 = 18944; + v0[1] = 0; + } + else + { + dword_5153A0 = 0; + dword_515398 = 0; + } + return atexit(__tcf_0_5); +} +// 515398: using guessed type int dword_515398; +// 51539C: using guessed type int dword_51539C; +// 5153A0: using guessed type int dword_5153A0; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00504900) -------------------------------------------------------- +int _GLOBAL__sub_I___cxa_get_globals_fast() +{ + byte_51526C = 0; + if ( _CRT_MT ) + byte_51526C = __gthr_win32_key_create(&init, (void (*)(void *))eh_globals_dtor) == 0; + return atexit(__tcf_0_6); +} +// 51526C: using guessed type char byte_51526C; +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00504968) -------------------------------------------------------- +#error "50496B: call analysis failed (funcsize=3)" + +//----- (00504978) -------------------------------------------------------- +#error "50497B: call analysis failed (funcsize=37)" + +//----- (00504A18) -------------------------------------------------------- +#error "504A1B: call analysis failed (funcsize=3)" + +//----- (00504A28) -------------------------------------------------------- +void __noreturn __cxxabiv1::throw_recursive_init_exception(void) +{ + _DWORD *exception; // ebx + + exception = __cxa_allocate_exception(4u); + __gnu_cxx::recursive_init_error::recursive_init_error(exception); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::recursive_init_error, + (void (__cdecl *)(void *))__gnu_cxx::recursive_init_error::~recursive_init_error); +} +// 533CDC: using guessed type int *`typeinfo for'__gnu_cxx::recursive_init_error; + +//----- (00504A5C) -------------------------------------------------------- +#error "504A63: call analysis failed (funcsize=7)" + +//----- (00504AF0) -------------------------------------------------------- +#error "504AF7: call analysis failed (funcsize=7)" + +//----- (00504B1C) -------------------------------------------------------- +#error "504B33: call analysis failed (funcsize=5)" + +//----- (00504BFC) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +void __usercall std::ios_base::Init::~Init(void *a1@) +{ + __cxa_begin_catch(a1); + __cxa_end_catch(); +} +// 504C07: positive sp value 1C has been found + +//----- (00504C0C) -------------------------------------------------------- +#error "504C17: call analysis failed (funcsize=4)" + +//----- (00504C1C) -------------------------------------------------------- +#error "504C26: call analysis failed (funcsize=7)" + +//----- (00504C34) -------------------------------------------------------- +#error "504C41: call analysis failed (funcsize=13)" + +//----- (00504C5C) -------------------------------------------------------- +#error "504C5F: call analysis failed (funcsize=5)" + +//----- (00504CAC) -------------------------------------------------------- +#error "504CAF: call analysis failed (funcsize=5)" + +//----- (00504CD0) -------------------------------------------------------- +#error "504CD3: call analysis failed (funcsize=6)" + +//----- (00504D88) -------------------------------------------------------- +#error "504D8F: call analysis failed (funcsize=7)" + +//----- (00504E14) -------------------------------------------------------- +#error "504E1B: call analysis failed (funcsize=4)" + +//----- (00504E28) -------------------------------------------------------- +#error "504E2D: call analysis failed (funcsize=9)" + +//----- (00504F0C) -------------------------------------------------------- +#error "504F13: call analysis failed (funcsize=7)" + +//----- (00504F60) -------------------------------------------------------- +#error "504F62: call analysis failed (funcsize=4)" + +//----- (00504F70) -------------------------------------------------------- +#error "504F73: call analysis failed (funcsize=4)" + +//----- (00504F80) -------------------------------------------------------- +#error "504F82: call analysis failed (funcsize=4)" + +//----- (00504F90) -------------------------------------------------------- +#error "504F93: call analysis failed (funcsize=4)" + +//----- (00504FA0) -------------------------------------------------------- +#error "504FA2: call analysis failed (funcsize=4)" + +//----- (00504FB0) -------------------------------------------------------- +#error "504FB3: call analysis failed (funcsize=4)" + +//----- (00504FC0) -------------------------------------------------------- +#error "504FC2: call analysis failed (funcsize=4)" + +//----- (00504FD0) -------------------------------------------------------- +#error "504FD3: call analysis failed (funcsize=4)" + +//----- (00504FE0) -------------------------------------------------------- +#error "504FE2: call analysis failed (funcsize=4)" + +//----- (00504FF0) -------------------------------------------------------- +#error "504FF3: call analysis failed (funcsize=4)" + +//----- (00505000) -------------------------------------------------------- +#error "505002: call analysis failed (funcsize=4)" + +//----- (00505010) -------------------------------------------------------- +#error "505013: call analysis failed (funcsize=4)" + +//----- (00505020) -------------------------------------------------------- +#error "505022: call analysis failed (funcsize=4)" + +//----- (00505030) -------------------------------------------------------- +#error "505033: call analysis failed (funcsize=4)" + +//----- (00505040) -------------------------------------------------------- +#error "505042: call analysis failed (funcsize=4)" + +//----- (00505050) -------------------------------------------------------- +#error "505053: call analysis failed (funcsize=4)" + +//----- (00505060) -------------------------------------------------------- +#error "505062: call analysis failed (funcsize=4)" + +//----- (00505070) -------------------------------------------------------- +#error "505073: call analysis failed (funcsize=4)" + +//----- (00505080) -------------------------------------------------------- +#error "505082: call analysis failed (funcsize=4)" + +//----- (00505090) -------------------------------------------------------- +#error "505093: call analysis failed (funcsize=4)" + +//----- (005050A0) -------------------------------------------------------- +#error "5050A2: call analysis failed (funcsize=4)" + +//----- (005050B0) -------------------------------------------------------- +#error "5050B3: call analysis failed (funcsize=4)" + +//----- (005050C0) -------------------------------------------------------- +#error "5050C2: call analysis failed (funcsize=4)" + +//----- (005050D0) -------------------------------------------------------- +#error "5050D3: call analysis failed (funcsize=4)" + +//----- (005050E0) -------------------------------------------------------- +#error "5050E5: call analysis failed (funcsize=4)" + +//----- (00505170) -------------------------------------------------------- +#error "505172: call analysis failed (funcsize=6)" + +//----- (0050521C) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +void __usercall __noreturn std::locale::name(int a1@, void **a2@, int a3@, _Unwind_Exception *a4@) +{ + volatile signed __int32 *v4; // eax + char *v5; // ecx + + v4 = (volatile signed __int32 *)*a2; + v5 = (char *)*a2 - 12; + if ( *a2 != &unk_51641C ) + { + if ( _CRT_MT ) + { + a1 = _InterlockedExchangeAdd(v4 - 1, 0xFFFFFFFF); + } + else + { + a1 = *((_DWORD *)v4 - 1); + *((_DWORD *)v4 - 1) = a1 - 1; + } + if ( a1 <= 0 ) + std::string::_Rep::_M_destroy(v5, a3 - 25); + } + _Unwind_Resume((int)v4, a1, a4); +} +// 505248: positive sp value 4 has been found +// 50524C: variable 'v4' is possibly undefined +// 50524C: variable 'a1' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (0050525C) -------------------------------------------------------- +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + } + if ( v2 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)this, a2); +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00505290) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)this, a2); +} +// 78A9D4: using guessed type int _CRT_MT; + +//----- (005052C4) -------------------------------------------------------- +#error "5052D3: call analysis failed (funcsize=7)" + +//----- (005052D8) -------------------------------------------------------- +#error "5052E7: call analysis failed (funcsize=7)" + +//----- (005052EC) -------------------------------------------------------- +#error "5052FB: call analysis failed (funcsize=7)" + +//----- (00505300) -------------------------------------------------------- +#error "50530F: call analysis failed (funcsize=7)" + +//----- (00505314) -------------------------------------------------------- +#error "505323: call analysis failed (funcsize=7)" + +//----- (00505328) -------------------------------------------------------- +#error "505337: call analysis failed (funcsize=7)" + +//----- (0050533C) -------------------------------------------------------- +#error "50534B: call analysis failed (funcsize=7)" + +//----- (00505350) -------------------------------------------------------- +#error "50535F: call analysis failed (funcsize=7)" + +//----- (00505364) -------------------------------------------------------- +#error "505366: call analysis failed (funcsize=6)" + +//----- (005054AC) -------------------------------------------------------- +#error "5054B4: call analysis failed (funcsize=5)" + +//----- (005054C4) -------------------------------------------------------- +#error "5054CD: call analysis failed (funcsize=8)" + +//----- (005054E8) -------------------------------------------------------- +#error "5054EA: call analysis failed (funcsize=4)" + +//----- (00505500) -------------------------------------------------------- +void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() +{ + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::money_get>::id ) + `guard variable for'std::money_get>::id = 1; + if ( !`guard variable for'std::money_put>::id ) + `guard variable for'std::money_put>::id = 1; + if ( !`guard variable for'std::numpunct::id ) + `guard variable for'std::numpunct::id = 1; + if ( !`guard variable for'std::time_get>::id ) + `guard variable for'std::time_get>::id = 1; + if ( !`guard variable for'std::messages::id ) + `guard variable for'std::messages::id = 1; + if ( !`guard variable for'std::collate::id ) + `guard variable for'std::collate::id = 1; +} +// 515130: using guessed type char `guard variable for'std::moneypunct::id; +// 515138: using guessed type char `guard variable for'std::moneypunct::id; +// 515150: using guessed type char `guard variable for'std::collate::id; +// 515160: using guessed type char `guard variable for'std::messages::id; +// 515170: using guessed type char `guard variable for'std::numpunct::id; +// 515180: using guessed type char `guard variable for'std::time_get>::id; +// 515190: using guessed type char `guard variable for'std::money_get>::id; +// 5151A0: using guessed type char `guard variable for'std::money_put>::id; + +//----- (00505590) -------------------------------------------------------- +#error "50559F: call analysis failed (funcsize=7)" + +//----- (005055A4) -------------------------------------------------------- +#error "5055B3: call analysis failed (funcsize=7)" + +//----- (005055B8) -------------------------------------------------------- +#error "5055C7: call analysis failed (funcsize=7)" + +//----- (005055CC) -------------------------------------------------------- +#error "5055DB: call analysis failed (funcsize=7)" + +//----- (005055E0) -------------------------------------------------------- +#error "5055EF: call analysis failed (funcsize=7)" + +//----- (005055F4) -------------------------------------------------------- +#error "505603: call analysis failed (funcsize=7)" + +//----- (00505608) -------------------------------------------------------- +#error "505617: call analysis failed (funcsize=7)" + +//----- (0050561C) -------------------------------------------------------- +#error "50562E: call analysis failed (funcsize=8)" + +//----- (00505634) -------------------------------------------------------- +#error "505636: call analysis failed (funcsize=6)" + +//----- (00505780) -------------------------------------------------------- +void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() +{ + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::money_get>::id ) + `guard variable for'std::money_get>::id = 1; + if ( !`guard variable for'std::money_put>::id ) + `guard variable for'std::money_put>::id = 1; + if ( !`guard variable for'std::numpunct::id ) + `guard variable for'std::numpunct::id = 1; + if ( !`guard variable for'std::time_get>::id ) + `guard variable for'std::time_get>::id = 1; + if ( !`guard variable for'std::messages::id ) + `guard variable for'std::messages::id = 1; + if ( !`guard variable for'std::collate::id ) + `guard variable for'std::collate::id = 1; +} +// 515140: using guessed type char `guard variable for'std::moneypunct::id; +// 515148: using guessed type char `guard variable for'std::moneypunct::id; +// 515158: using guessed type char `guard variable for'std::collate::id; +// 515168: using guessed type char `guard variable for'std::messages::id; +// 515178: using guessed type char `guard variable for'std::numpunct::id; +// 515188: using guessed type char `guard variable for'std::time_get>::id; +// 515198: using guessed type char `guard variable for'std::money_get>::id; +// 5151A8: using guessed type char `guard variable for'std::money_put>::id; + +//----- (00505818) -------------------------------------------------------- +void __noreturn std::__throw_bad_exception(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_5386CC; + __cxa_throw(exception, (struct type_info *)&`typeinfo for'std::bad_exception, std::bad_exception::~bad_exception); +} +// 534508: using guessed type int *`typeinfo for'std::bad_exception; +// 5386CC: using guessed type void (__cdecl *off_5386CC)(std::bad_exception *__hidden this); + +//----- (00505848) -------------------------------------------------------- +void __noreturn std::__throw_bad_alloc(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_539460; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_alloc, + (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); +} +// 534AA4: using guessed type int *`typeinfo for'std::bad_alloc; +// 539460: using guessed type void (__cdecl *off_539460)(std::bad_alloc *__hidden this); + +//----- (00505878) -------------------------------------------------------- +void __noreturn std::__throw_bad_cast(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_539344; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_cast, + (void (__cdecl *)(void *))std::bad_cast::~bad_cast); +} +// 5349E0: using guessed type int *`typeinfo for'std::bad_cast; +// 539344: using guessed type void (__cdecl *off_539344)(std::bad_cast *__hidden this); + +//----- (005058A8) -------------------------------------------------------- +void __noreturn std::__throw_bad_typeid(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_5384CC; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_typeid, + (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); +} +// 5343D8: using guessed type int `typeinfo for'std::bad_typeid; +// 5384CC: using guessed type void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this); + +//----- (005058D8) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_logic_error(std::logic_error *a1) +{ + void *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::logic_error::logic_error(a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::logic_error, + (void (__cdecl *)(void *))std::logic_error::~logic_error); +} +// 5058F6: variable 'v2' is possibly undefined +// 534494: using guessed type int *`typeinfo for'std::logic_error; + +//----- (00505928) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_domain_error(std::domain_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::domain_error::domain_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::domain_error, + (void (__cdecl *)(void *))std::domain_error::~domain_error); +} +// 505946: variable 'v2' is possibly undefined +// 5344CC: using guessed type int *`typeinfo for'std::domain_error; + +//----- (00505978) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::invalid_argument::invalid_argument(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::invalid_argument, + (void (__cdecl *)(void *))std::invalid_argument::~invalid_argument); +} +// 505996: variable 'v2' is possibly undefined +// 5346F0: using guessed type int *`typeinfo for'std::invalid_argument; + +//----- (005059C8) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_length_error(std::length_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::length_error::length_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::length_error, + (void (__cdecl *)(void *))std::length_error::~length_error); +} +// 5059E6: variable 'v2' is possibly undefined +// 5344D8: using guessed type int *`typeinfo for'std::length_error; + +//----- (00505A18) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::out_of_range::out_of_range(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::out_of_range, + (void (__cdecl *)(void *))std::out_of_range::~out_of_range); +} +// 505A36: variable 'v2' is possibly undefined +// 5344E4: using guessed type int *`typeinfo for'std::out_of_range; + +//----- (00505A68) -------------------------------------------------------- +#error "505A6B: call analysis failed (funcsize=4)" + +//----- (00505A78) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *a1) +{ + void *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::runtime_error::runtime_error((int)exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::runtime_error, + (void (__cdecl *)(void *))std::runtime_error::~runtime_error); +} +// 505A96: variable 'v2' is possibly undefined +// 53457C: using guessed type int *`typeinfo for'std::runtime_error; + +//----- (00505AC8) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_range_error(std::range_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::range_error::range_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::range_error, + (void (__cdecl *)(void *))std::range_error::~range_error); +} +// 505AE6: variable 'v2' is possibly undefined +// 5344A0: using guessed type int *`typeinfo for'std::range_error; + +//----- (00505B18) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::overflow_error::overflow_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::overflow_error, + (void (__cdecl *)(void *))std::overflow_error::~overflow_error); +} +// 505B36: variable 'v2' is possibly undefined +// 534608: using guessed type int *`typeinfo for'std::overflow_error; + +//----- (00505B68) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::underflow_error::underflow_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::underflow_error, + (void (__cdecl *)(void *))std::underflow_error::~underflow_error); +} +// 505B86: variable 'v2' is possibly undefined +// 5346C0: using guessed type int *`typeinfo for'std::underflow_error; + +//----- (00505BB8) -------------------------------------------------------- +void __noreturn std::__throw_bad_function_call(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_538C28; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_function_call, + (void (__cdecl *)(void *))std::bad_function_call::~bad_function_call); +} +// 534714: using guessed type int *`typeinfo for'std::bad_function_call; +// 538C28: using guessed type void (__cdecl *off_538C28)(std::bad_function_call *__hidden this); + +//----- (00505BE8) -------------------------------------------------------- +#error "505C09: call analysis failed (funcsize=9)" + +//----- (00505C10) -------------------------------------------------------- +#error "505C13: call analysis failed (funcsize=4)" + +//----- (00505C40) -------------------------------------------------------- +void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj() +{ + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::money_get>::id ) + `guard variable for'std::money_get>::id = 1; + if ( !`guard variable for'std::money_put>::id ) + `guard variable for'std::money_put>::id = 1; + if ( !`guard variable for'std::numpunct::id ) + `guard variable for'std::numpunct::id = 1; + if ( !`guard variable for'std::num_get>::id ) + `guard variable for'std::num_get>::id = 1; + if ( !`guard variable for'std::num_put>::id ) + `guard variable for'std::num_put>::id = 1; + if ( !`guard variable for'std::__timepunct::id ) + `guard variable for'std::__timepunct::id = 1; + if ( !`guard variable for'std::time_put>::id ) + `guard variable for'std::time_put>::id = 1; + if ( !`guard variable for'std::time_get>::id ) + `guard variable for'std::time_get>::id = 1; + if ( !`guard variable for'std::messages::id ) + `guard variable for'std::messages::id = 1; + if ( !`guard variable for'std::collate::id ) + `guard variable for'std::collate::id = 1; +} +// 515100: using guessed type char `guard variable for'std::moneypunct::id; +// 515108: using guessed type char `guard variable for'std::moneypunct::id; +// 515120: using guessed type char `guard variable for'std::__timepunct::id; +// 5151B0: using guessed type char `guard variable for'std::collate::id; +// 5151C0: using guessed type char `guard variable for'std::num_get>::id; +// 5151D0: using guessed type char `guard variable for'std::num_put>::id; +// 5151E0: using guessed type char `guard variable for'std::messages::id; +// 5151F0: using guessed type char `guard variable for'std::numpunct::id; +// 515200: using guessed type char `guard variable for'std::time_get>::id; +// 515210: using guessed type char `guard variable for'std::time_put>::id; +// 515220: using guessed type char `guard variable for'std::money_get>::id; +// 515230: using guessed type char `guard variable for'std::money_put>::id; + +//----- (00505D10) -------------------------------------------------------- +void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj() +{ + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::money_get>::id ) + `guard variable for'std::money_get>::id = 1; + if ( !`guard variable for'std::money_put>::id ) + `guard variable for'std::money_put>::id = 1; + if ( !`guard variable for'std::numpunct::id ) + `guard variable for'std::numpunct::id = 1; + if ( !`guard variable for'std::num_get>::id ) + `guard variable for'std::num_get>::id = 1; + if ( !`guard variable for'std::num_put>::id ) + `guard variable for'std::num_put>::id = 1; + if ( !`guard variable for'std::__timepunct::id ) + `guard variable for'std::__timepunct::id = 1; + if ( !`guard variable for'std::time_put>::id ) + `guard variable for'std::time_put>::id = 1; + if ( !`guard variable for'std::time_get>::id ) + `guard variable for'std::time_get>::id = 1; + if ( !`guard variable for'std::messages::id ) + `guard variable for'std::messages::id = 1; + if ( !`guard variable for'std::collate::id ) + `guard variable for'std::collate::id = 1; +} +// 515110: using guessed type char `guard variable for'std::moneypunct::id; +// 515118: using guessed type char `guard variable for'std::moneypunct::id; +// 515128: using guessed type char `guard variable for'std::__timepunct::id; +// 5151B8: using guessed type char `guard variable for'std::collate::id; +// 5151C8: using guessed type char `guard variable for'std::num_get>::id; +// 5151D8: using guessed type char `guard variable for'std::num_put>::id; +// 5151E8: using guessed type char `guard variable for'std::messages::id; +// 5151F8: using guessed type char `guard variable for'std::numpunct::id; +// 515208: using guessed type char `guard variable for'std::time_get>::id; +// 515218: using guessed type char `guard variable for'std::time_put>::id; +// 515228: using guessed type char `guard variable for'std::money_get>::id; +// 515238: using guessed type char `guard variable for'std::money_put>::id; + +//----- (00505DE0) -------------------------------------------------------- +void __noreturn __cxa_bad_cast(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_539344; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_cast, + (void (__cdecl *)(void *))std::bad_cast::~bad_cast); +} +// 5349E0: using guessed type int *`typeinfo for'std::bad_cast; +// 539344: using guessed type void (__cdecl *off_539344)(std::bad_cast *__hidden this); + +//----- (00505E10) -------------------------------------------------------- +void __noreturn __cxa_bad_typeid(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_5384CC; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_typeid, + (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); +} +// 5343D8: using guessed type int `typeinfo for'std::bad_typeid; +// 5384CC: using guessed type void (__cdecl *off_5384CC)(std::bad_typeid *__hidden this); + +//----- (00505E40) -------------------------------------------------------- +void __noreturn __cxa_throw_bad_array_new_length(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_538E80; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_array_new_length, + (void (__cdecl *)(void *))std::bad_array_new_length::~bad_array_new_length); +} +// 5347E8: using guessed type int *`typeinfo for'std::bad_array_new_length; +// 538E80: using guessed type void (__cdecl *off_538E80)(std::bad_array_new_length *__hidden this); + +//----- (00505E70) -------------------------------------------------------- +#error "505E73: call analysis failed (funcsize=5)" + +//----- (00505E84) -------------------------------------------------------- +#error "505EA7: call analysis failed (funcsize=8)" + +//----- (00505F4C) -------------------------------------------------------- +#error "505F59: call analysis failed (funcsize=5)" + +//----- (00505F60) -------------------------------------------------------- +#error "505F6D: call analysis failed (funcsize=5)" + +//----- (00505F74) -------------------------------------------------------- +#error "505F81: call analysis failed (funcsize=5)" + +//----- (00505F88) -------------------------------------------------------- +#error "505F90: call analysis failed (funcsize=5)" + +//----- (00505FA0) -------------------------------------------------------- +#error "505FA8: call analysis failed (funcsize=5)" + +//----- (00505FB8) -------------------------------------------------------- +#error "505FBB: call analysis failed (funcsize=4)" + +//----- (00505FC8) -------------------------------------------------------- +#error "505FCB: call analysis failed (funcsize=4)" + +//----- (00505FD8) -------------------------------------------------------- +#error "505FE0: call analysis failed (funcsize=5)" + +//----- (00505FF0) -------------------------------------------------------- +#error "505FF8: call analysis failed (funcsize=5)" + +//----- (00506008) -------------------------------------------------------- +#error "50604A: call analysis failed (funcsize=34)" + +//----- (005060AC) -------------------------------------------------------- +#error "5060DA: call analysis failed (funcsize=27)" + +//----- (00506130) -------------------------------------------------------- +#error "50615E: call analysis failed (funcsize=27)" + +//----- (005061B4) -------------------------------------------------------- +#error "5061DA: call analysis failed (funcsize=30)" + +//----- (00506244) -------------------------------------------------------- +#error "506265: call analysis failed (funcsize=22)" + +//----- (005062B0) -------------------------------------------------------- +#error "5062EA: call analysis failed (funcsize=30)" + +//----- (0050634C) -------------------------------------------------------- +#error "506376: call analysis failed (funcsize=32)" + +//----- (005063E8) -------------------------------------------------------- +#error "506409: call analysis failed (funcsize=22)" + +//----- (00506454) -------------------------------------------------------- +#error "506461: call analysis failed (funcsize=5)" + +//----- (00506468) -------------------------------------------------------- +#error "50646A: call analysis failed (funcsize=4)" + +//----- (00506478) -------------------------------------------------------- +#error "50647A: call analysis failed (funcsize=4)" + +//----- (00506488) -------------------------------------------------------- +#error "506495: call analysis failed (funcsize=5)" + +//----- (0050649C) -------------------------------------------------------- +#error "5064A9: call analysis failed (funcsize=5)" + +//----- (005064B0) -------------------------------------------------------- +#error "5064B2: call analysis failed (funcsize=4)" + +//----- (005064C0) -------------------------------------------------------- +#error "5064C2: call analysis failed (funcsize=4)" + +//----- (005064D0) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +void __usercall __noreturn std::_V2::error_category::_M_message( + int a1@, + _Unwind_Exception *a2@, + int a3@) +{ + volatile signed __int32 *v3; // eax + + v3 = *(volatile signed __int32 **)(a3 - 12); + if ( v3 != (volatile signed __int32 *)&unk_51641C ) + { + if ( _CRT_MT ) + { + a1 = _InterlockedExchangeAdd(v3 - 1, 0xFFFFFFFF); + } + else + { + a1 = *((_DWORD *)v3 - 1); + *((_DWORD *)v3 - 1) = a1 - 1; + } + if ( a1 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v3 - 3), a3 - 13); + } + _Unwind_Resume((int)v3, a1, a2); +} +// 5064FD: positive sp value 4 has been found +// 506501: variable 'v3' is possibly undefined +// 506501: variable 'a1' is possibly undefined +// 78A9D4: using guessed type int _CRT_MT; + +//----- (00506514) -------------------------------------------------------- +#error "506517: call analysis failed (funcsize=3)" + +//----- (00506530) -------------------------------------------------------- +#error "50653C: call analysis failed (funcsize=4)" + +//----- (00506544) -------------------------------------------------------- +#error "506550: call analysis failed (funcsize=4)" + +//----- (00506558) -------------------------------------------------------- +#error "506564: call analysis failed (funcsize=4)" + +//----- (0050656C) -------------------------------------------------------- +#error "506578: call analysis failed (funcsize=4)" + +//----- (00506580) -------------------------------------------------------- +#error "50658C: call analysis failed (funcsize=4)" + +//----- (00506594) -------------------------------------------------------- +#error "5065A0: call analysis failed (funcsize=4)" + +//----- (005065A8) -------------------------------------------------------- +#error "5065B4: call analysis failed (funcsize=4)" + +//----- (005065BC) -------------------------------------------------------- +#error "5065C8: call analysis failed (funcsize=4)" + +//----- (005065D0) -------------------------------------------------------- +#error "5065DC: call analysis failed (funcsize=4)" + +//----- (005065E4) -------------------------------------------------------- +#error "5065F0: call analysis failed (funcsize=4)" + +//----- (005065F8) -------------------------------------------------------- +#error "506604: call analysis failed (funcsize=4)" + +//----- (0050660C) -------------------------------------------------------- +#error "506618: call analysis failed (funcsize=4)" + +//----- (00506620) -------------------------------------------------------- +#error "50662C: call analysis failed (funcsize=4)" + +//----- (00506634) -------------------------------------------------------- +#error "506640: call analysis failed (funcsize=4)" + +//----- (00506648) -------------------------------------------------------- +#error "506654: call analysis failed (funcsize=4)" + +//----- (0050665C) -------------------------------------------------------- +#error "506668: call analysis failed (funcsize=4)" + +//----- (00506670) -------------------------------------------------------- +#error "50667C: call analysis failed (funcsize=4)" + +//----- (00506684) -------------------------------------------------------- +#error "506690: call analysis failed (funcsize=4)" + +//----- (00506698) -------------------------------------------------------- +#error "5066A1: call analysis failed (funcsize=7)" + +//----- (005066B0) -------------------------------------------------------- +#error "5066BA: call analysis failed (funcsize=18)" + +//----- (00506718) -------------------------------------------------------- +#error "506722: call analysis failed (funcsize=18)" + +//----- (00506780) -------------------------------------------------------- +#error "50678B: call analysis failed (funcsize=7)" + +//----- (005067D4) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(0x18u); + std::__ios_failure::__ios_failure(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::__ios_failure, + (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); +} +// 5067F2: variable 'v2' is possibly undefined +// 5344FC: using guessed type int *`typeinfo for'std::__ios_failure; + +//----- (00506824) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1, char *a2) +{ + _DWORD *exception; // ebx + int v3; // [esp+8h] [ebp-10h] + + exception = __cxa_allocate_exception(0x18u); + std::__ios_failure::__ios_failure(exception, a1, (int)a2, v3); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::__ios_failure, + (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); +} +// 506849: variable 'v3' is possibly undefined +// 5344FC: using guessed type int *`typeinfo for'std::__ios_failure; + +//----- (0050687C) -------------------------------------------------------- +#error "50687E: call analysis failed (funcsize=4)" + +//----- (0050688C) -------------------------------------------------------- +#error "50688E: call analysis failed (funcsize=4)" + +//----- (0050689C) -------------------------------------------------------- +#error "5068A9: call analysis failed (funcsize=8)" + +//----- (005068B8) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_system_error(int a1) +{ + _DWORD *exception; // esi + void *v2[2]; // [esp+18h] [ebp-30h] BYREF + char v3; // [esp+20h] [ebp-28h] BYREF + + exception = __cxa_allocate_exception(0x10u); + `anonymous namespace'::system_error_category::message[abi:cxx11]( + v2, + (int)&`anonymous namespace'::generic_category_instance, + a1); + std::runtime_error::runtime_error(exception, (int)v2); + if ( v2[0] != &v3 ) + operator delete(v2[0]); + *exception = &off_5386A4; + exception[2] = a1; + exception[3] = &`anonymous namespace'::generic_category_instance; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::system_error, + (void (__cdecl *)(void *))std::system_error::~system_error); +} +// 515F68: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); +// 5344F0: using guessed type int *`typeinfo for'std::system_error; +// 5386A4: using guessed type void (__cdecl *off_5386A4)(std::system_error *__hidden this); + +//----- (00506960) -------------------------------------------------------- +int _GLOBAL__sub_I__ZSt20__throw_system_errori() +{ + atexit(__tcf_0_10); + return atexit(__tcf_1_5); +} + +//----- (00506980) -------------------------------------------------------- +#error "5069A1: call analysis failed (funcsize=22)" + +//----- (005069EC) -------------------------------------------------------- +#error "506A0D: call analysis failed (funcsize=22)" + +//----- (00506A58) -------------------------------------------------------- +void __cdecl __noreturn d_type_cold( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + int a10, + int a11) +{ + BUG(); +} + +//----- (00506AEC) -------------------------------------------------------- +#error "506AEE: call analysis failed (funcsize=7)" + +// nfuncs=4970 queued=4720 decompiled=4720 lumina nreq=0 worse=0 better=0 +#error "There were 138 decompilation failure(s) on 4720 function(s)" diff --git a/test/wcsc.disassembly.cpp b/test/wcsc.disassembly.cpp index 8fdc919..24329db 100644 --- a/test/wcsc.disassembly.cpp +++ b/test/wcsc.disassembly.cpp @@ -1,181102 +1,173435 @@ -/* This file was generated by the Hex-Rays decompiler version 7.7.0.220118. - Copyright (c) 2007-2021 Hex-Rays - - Detected compiler: GNU C++ -*/ - -#include -#include - -#include - - -//------------------------------------------------------------------------- -// Function declarations - -#define __thiscall __cdecl // Test compile in C mode - -void __cdecl __mingw_invalidParameterHandler(const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t pReserved); -int pre_c_init(); // idb -void pre_cpp_init(); // idb -// int __usercall __tmainCRTStartup@(int@, int@, int@, int@, char); -int __cdecl atexit(_PVFV func); -int __gcc_register_frame(); -void __gcc_deregister_frame(void); // idb -int printf(char *, ...); -int fprintf(_iobuf *, char *, ...); -void __tcf_1(void); // idb -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int@); -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int); -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str); -int __thiscall std::string::basic_string(void **this, char *Str); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int@); -int __cdecl Usage(int, const char **); -int __cdecl ReadFile(char *FileName, unsigned int **a2); -int __cdecl Trim(int, int); -int __cdecl GetNextArg(int, int *, int); -int __cdecl EscapeToJsonString(int, int); -int __cdecl DictToJsonString(int, int); -void __tcf_3(void); // idb -int snprintf(FILE *, int, int, ...); -// void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase(int@); -int __thiscall WXSS::CSSTreeLib::LexicalChecker::Traval(_DWORD **this, _DWORD *); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int@); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int@); -// void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(int@); -char *__cdecl WXSS::RemoveQuote(char *, char **); -int __stdcall WXSS::XCompiler::DealRPX(int *, int); -int __thiscall WXSS::XCompiler::GetHostRule(_DWORD *this, _DWORD *); -int __thiscall WXSS::XCompiler::ShowTree(_DWORD *this, _DWORD *); -void __tcf_1_0(void); // idb -void __tcf_2(void); // idb -// void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int@); -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); -int __thiscall WXSS::XCompiler::GetCompiled(int *this, int a2, unsigned int **a3); -struct _Unwind_Exception *__thiscall WXSS::XCompiler::GetJSCompiled(int *this, int, _DWORD *); -struct _Unwind_Exception *__thiscall WXSS::XCompiler::GetWellFormattedJSCompiled(int *this, int, _DWORD *); -void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int); -// void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int@); -void __fastcall std::deque::~deque(int); -int __thiscall WXSS::XCompiler::GenExpr(int this, int, int, WXSS::Token *); -int __thiscall WXSS::XCompiler::GetPageCss(char *this, int *, _DWORD *, int); -int __thiscall WXSS::XCompiler::MarkImported(int this, int); -void *__thiscall WXSS::XCompiler::GetCommHead(int this, char **a2, _DWORD *a3, char a4, int *a5); -void __fastcall std::deque>::~deque(int); -struct _Unwind_Exception *__cdecl WXSS::LintAndParseCSS(int *a1, char **a2, unsigned int **a3, unsigned int **a4, char a5, char a6, char a7, char a8, int a9); -void __thiscall WXSS::XCompiler::XCompiler(char *this, _DWORD *, char, int); -struct _Unwind_Exception *__cdecl WXSS::LintAndParseCSSList(_DWORD *a1, int a2, unsigned int **a3, int a4, int a5, char a6, char a7, char a8, int a9); -struct _Unwind_Exception *__cdecl WXSS::NewLintAndParseCSSList(_DWORD *a1, char **a2, unsigned int **a3, int a4, int a5, char a6, int a7, int *a8); -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str); -void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, char **a2); -int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int **a3); -_DWORD __stdcall std::string::operator+=(_DWORD); // weak -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str); -int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*)[266], bool *, int *); -int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *); -int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *); -int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *); -int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *, int *); -std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int, int, int); -std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int *, int); -int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int, int, int); -int __cdecl WXML::Rewrite::ToStringCode3(int, int *); -int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int, int, int); -int __cdecl WXML::Rewrite::ToStringCode2(int, int *); -void __cdecl WXML::Rewrite::ToStringCode(int *, int); -int __cdecl WXML::Rewrite::ToStringCode(int, int *); -int __thiscall std::string::basic_string(void **this, char *Str); -void __cdecl WXML::Rewrite::GetToken(int, int); -BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int **a2, char *a3, char *Str); -int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int **a2, int *a3, int a4, int a5); -int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size); -int __thiscall std::string::basic_string(void **this, char *Str); -std::ostream::sentry *__cdecl WXML::RenderStrToken(_DWORD *, int); -char __cdecl WXML::IsFloat(WXML *this); -char __cdecl WXML::IsFloat(int); -void __cdecl WXML::StrSplitList4RPX(char *a1, char *Str, char *SubStr, void **a4); -void __cdecl WXML::StrSplitList4ClassSuffix(char *a1, char *Str, void **a3); -void __cdecl WXML::GetStrForMakingCSS(char **, int); -void __tcf_1_1(void); // idb -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int); -int __thiscall std::string::basic_string(void **this, char *Str); -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str); -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(int *this, int); -// void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int@); -// void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(_DWORD *@); -void __tcf_0(void); // idb -void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int); -// _DWORD *__usercall std::__relocate_a_1>@(_DWORD *@, _DWORD *@, _DWORD *@); -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); -int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, unsigned int **a4, int a5); -void __tcf_0_0(void); // idb -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int); -void __thiscall WXSS::Tokenizer::Tokenizer(int this, char *Str, int); -void WXSS::Tokenizer::InitTransitTable(); -int WXSS::Tokenizer::InitSubStrCheckingCaluseTable(); -int __cdecl WXSS::Tokenizer::TryGetAnotherTypeByAnySubStr(int, int, int, int); -// volatile signed __int32 **__usercall std::__relocate_a_1>@(volatile signed __int32 **@, volatile signed __int32 **@, volatile signed __int32 **@); -int __thiscall WXSS::Tokenizer::GetTokens(int *this, int a2, unsigned int **a3, int a4); -void __tcf_1_2(void); // idb -int __thiscall std::string::basic_string(void **this, char *Str); -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str); -int WXSS::CSSTreeLib::TransitTable::GetTopType(); -void __thiscall std::vector::_M_move_assign(void ***this, void ***a2); -// void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(int@); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=(_DWORD *this, _DWORD *); -void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int); -// _DWORD *__usercall d_make_comp@(_DWORD *@, int@, int@, int); -// _DWORD *__usercall d_make_name@(_DWORD *@, int@, int@); -// int __usercall d_number@(int@); -// int __usercall d_call_offset@(int@, int@); -// _DWORD *__usercall d_ref_qualifier@(_DWORD *@, _DWORD *@); -// int __usercall d_discriminator@(int@); -// int __usercall d_count_templates_scopes@(int result@, int *@, int@); -// _DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int@); -void __cdecl d_growable_string_callback_adapter(void *Src, size_t Size, int); -int sprintf_constprop_0(FILE *, int, ...); -// BOOL __usercall next_is_type_qual_isra_0@(char *@); -// int __usercall d_append_char@(int@, char@
); -// _DWORD *__usercall d_lookup_template_argument@(int@, int@); -// size_t __usercall d_append_string@(int@, const char *Str@); -// _DWORD *__usercall d_find_pack@(int@, _DWORD *@, int@); -// _DWORD *__usercall d_template_param@(_DWORD *@); -// size_t __usercall d_append_num@(int@, int@); -// _DWORD *__usercall d_source_name@(int@); -// _DWORD *__usercall d_substitution@(int@, char@
); -// int __usercall d_print_java_identifier@(int result@, char *a2@, int a3@); -// int *__usercall d_type@(_DWORD *@, int, int, int, int, int, int, int, int, int, int, int); -// _DWORD *__usercall d_operator_name@(_DWORD *@); -// int __usercall d_parmlist@(_DWORD *@); -// _DWORD *__usercall d_bare_function_type@(_DWORD *@, int@); -// _DWORD *__usercall d_function_type@(int@); -// _DWORD *__usercall d_unqualified_name@(_DWORD *@); -// int *__usercall d_name@(_DWORD *@); -// unsigned int *__usercall d_encoding_part_0@(int@, int@); -// _DWORD *__usercall d_special_name@(_DWORD *@); -// unsigned int *__usercall d_expr_primary@(_DWORD *@); -// unsigned int *__usercall d_expression_1@(_DWORD *@); -// _DWORD *__usercall d_exprlist@(_DWORD *@, char@
); -// int **__usercall d_cv_qualifiers@(_DWORD *@, int **@, int@); -// unsigned int *__usercall d_template_arg@(_DWORD *a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12); -// _DWORD *__usercall d_template_args_1@(_DWORD *@); -// unsigned int __usercall d_print_comp_inner@(unsigned int result@, int@); -// int __usercall d_print_comp@(int result@, int@); -// int __usercall d_print_mod@(int@, _DWORD *@); -// unsigned int __usercall d_print_function_type@(unsigned int a1@, int a2@, int **a3); -// unsigned int __usercall d_print_mod_list@(unsigned int result@, int **a2@, int a3); -// int __usercall d_print_array_type@(unsigned int a1@, int a2@, int **a3); -// int __usercall d_print_conversion@(int@, int@); -// int __usercall d_print_expr_op@(int@, _DWORD *@); -// BOOL __usercall d_demangle_callback_constprop_0@(char *@, void (__cdecl *)(char *, int, int)@, int@); -// int __usercall d_print_subexpr@(unsigned int a1@, _DWORD *a2@); -// int __usercall d_maybe_print_fold_expression@(unsigned int a1@, int a2@); -char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus); -unsigned int __cdecl __gcclibcxx_demangle_callback(char *, void (__cdecl *)(char *, int, int), int); -void __do_global_dtors(void); // idb -int __do_global_ctors(); -int __main(); -int _setargv(); -int __stdcall __dyn_tls_dtor(int, unsigned int, int); -int __stdcall __dyn_tls_init(int, int, int); -int __cdecl _matherr(struct _exception *Except); -void __cdecl fpreset(); -void __noreturn __report_error(char *Format, ...); -// _DWORD *__usercall mark_section_writable@(const void *@); -void _pei386_runtime_relocator(); -int (__cdecl *__cdecl __mingw_raise_matherr(int, int, double, double, double))(_DWORD); -void __cdecl __mingw_setusermatherr(_UserMathErrorFunctionPointer UserMathErrorFunction); -LONG __stdcall _gnu_exception_handler(_EXCEPTION_POINTERS *); -void __mingwthr_run_key_dtors_part_0(); -int __cdecl ___w64_mingwthr_add_key_dtor(int, int); -int __cdecl ___w64_mingwthr_remove_key_dtor(int); -int __cdecl __mingw_TLScallback(int, unsigned int); -int __cdecl _FindPESection(int, unsigned int); -const char *__cdecl _FindPESectionByName(char *Str); -int __cdecl __mingw_GetSectionForAddress(int); -int __mingw_GetSectionCount(); -int __cdecl _FindPESectionExec(int); -int _GetPEImageBase(); -BOOL __cdecl _IsNonwritableInCurrentImage(int); -int __cdecl __mingw_enum_import_library_names(int); -int __cdecl __gthr_win32_once(int, void (*)(void)); -int __cdecl __gthr_win32_key_create(int *, int); -DWORD __cdecl __gthr_win32_key_delete(DWORD dwTlsIndex); -LPVOID __cdecl __gthr_win32_getspecific(DWORD dwTlsIndex); -DWORD __cdecl __gthr_win32_setspecific(DWORD dwTlsIndex, LPVOID lpTlsValue); -HANDLE __cdecl __gthr_win32_mutex_init_function(_DWORD *); -int __cdecl __gthr_win32_mutex_destroy(int); -int __cdecl __gthr_win32_mutex_lock(int); -BOOL __cdecl __gthr_win32_mutex_unlock(int); -HANDLE __cdecl __gthr_win32_recursive_mutex_init_function(_DWORD *); -DWORD __cdecl __gthr_win32_recursive_mutex_lock(int); -int __cdecl __gthr_win32_recursive_mutex_trylock(int); -BOOL __cdecl __gthr_win32_recursive_mutex_unlock(int); -int __cdecl __gthr_win32_recursive_mutex_destroy(int); -// int __usercall _Unwind_RaiseException_Phase2@(_DWORD *@, _DWORD *@, int *@); -BOOL fc_key_init(); -void fc_key_init_once(); -LPVOID _Unwind_SjLj_GetContext(); -// int __usercall uw_install_context_constprop_0@(int@); -// int __usercall _Unwind_ForcedUnwind_Phase2@(_DWORD *@, void ***@, int *@); -void __cdecl _Unwind_SjLj_Register(struct SjLj_Function_Context *lpfctx); -void __cdecl _Unwind_SjLj_Unregister(struct SjLj_Function_Context *lpfctx); -void __cdecl _Unwind_SetGR(struct _Unwind_Context *lpuctx, int r, _Unwind_Word v); -int __cdecl _Unwind_GetIPInfo(int, _DWORD *); -int __cdecl _Unwind_SetIP(int, int); -int __cdecl _Unwind_GetLanguageSpecificData(int); -int _Unwind_GetRegionStart(); -int _Unwind_GetDataRelBase(); -int _Unwind_GetTextRelBase(); -_Unwind_Reason_Code __cdecl _Unwind_SjLj_RaiseException(struct _Unwind_Exception *lpuexcpt); -_Unwind_Reason_Code __cdecl _Unwind_SjLj_ForcedUnwind(struct _Unwind_Exception *lpuexcpt, _Unwind_Stop_Fn pfnstop, void *pdata); -void __cdecl _Unwind_SjLj_Resume(struct _Unwind_Exception *lpuexcpt); -_Unwind_Reason_Code __cdecl _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *lpuexcpt); -void __cdecl _Unwind_DeleteException(struct _Unwind_Exception *lpuexcpt); -_Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn pfntrace, void *lpdata); -void __cdecl emutls_destroy(int *); -// _DWORD *__usercall emutls_alloc@(size_t *@); -DWORD emutls_init(); -_DWORD *__cdecl __emutls_get_address(size_t *); -unsigned int *__cdecl __emutls_register_common(unsigned int *, unsigned int, unsigned int, unsigned int); -long double __cdecl __mingw_strtod(unsigned __int8 *, unsigned __int8 **); -long double __cdecl __mingw_strtof(unsigned __int8 *, unsigned __int8 **); -wint_t __cdecl btowc(int Ch); -int __cdecl __asctoe64(char *Str, long double *); -long double __cdecl strtold(const char *String, char **EndPtr); -int __cdecl wctob(wint_t WCh); -wctype_t __cdecl wctype(const char *name); -FILE *__cdecl fopen64(const char *FileName, const char *Mode); -int __cdecl fseeko64(FILE *Stream, fpos_t, int); -fpos_t __cdecl ftello64(FILE *Stream); -__int64 __cdecl lseek64(int FileHandle, __int64 Offset, int Origin); -int __cdecl __mingw_vfprintf(FILE *Stream, char *, int *); -int __cdecl __mingw_vsnprintf(FILE *, int, char *, int *); -int __cdecl __mingw_vsprintf(FILE *, char *, int *); -int *__cdecl __increment_D2A(int *); -// int __usercall rvOK_constprop_0_isra_0@(int *@, int *@, char *@, double, int, int, _DWORD *); -_DWORD *__cdecl __decrement_D2A(int); -int *__cdecl __set_ones_D2A(int *, int); -int __cdecl __strtodg(unsigned __int8 *, unsigned __int8 **, int *, int *, void *); -int *__cdecl __sum_D2A(int *, int *); -// unsigned int __usercall __m16m@(unsigned __int16@, int@, int@); -// BOOL __usercall __eshift_part_0@(__int16 *@, int@); -__int16 *__cdecl __emovi(int, int); -unsigned int __cdecl __eaddm(int, int); -unsigned int __cdecl __esubm(int, int); -BOOL __cdecl __edivm(int, int *); -int __cdecl __emulm(int, int); -__int16 *__cdecl __toe64(_WORD *, int); -int __cdecl __ecmp(int, int); -int __cdecl __enormlz(_WORD *); -__int16 __cdecl __emdnorm(int, int, int, int, int, int); -int __cdecl __emovo(_WORD *, int); -__int16 __cdecl __emul(int, int, int); -// int *__usercall __pformat_cvt@(unsigned int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7); -// int __usercall __pformat_putc@(int@, int@); -// int __usercall __pformat_wputchars@(int@, int@, int@); -// int __usercall __pformat_putchars@(_BYTE *@, int@, int@); -// int __usercall __pformat_puts@(char *@, int@); -// int __usercall __pformat_emit_inf_or_nan@(int@, int@, int@); -// int __usercall __pformat_xint@(int@, __int64, int, int, int); -int __cdecl __pformat_int(__int64, int, int, int); -// int __usercall __pformat_emit_radix_point@(int@); -// int __usercall __pformat_emit_float@(int@, char *@, int@, int); -// int __usercall __pformat_emit_efloat@(int@, char *@, int@, _DWORD *); -// void __usercall __pformat_efloat(_DWORD *@, long double); -// void __usercall __pformat_float(int@, long double); -// void __usercall __pformat_gfloat(_DWORD *@, long double); -// int __usercall __pformat_xldouble@(int@, long double); -int __cdecl __mingw_pformat(__int16, FILE *, int, char *, int *); -int *__cdecl __rv_alloc_D2A(int); -int *__cdecl __nrv_alloc_D2A(char *a1, char **a2, int a3); -void __cdecl __freedtoa(_DWORD *); -unsigned int __cdecl __quorem_D2A(int, int); -int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, unsigned int a5, int a6, int *a7, char **a8); -int __cdecl __gethex_D2A(unsigned __int8 **, int *, int *, int **, int); -int __cdecl __rshift_D2A(int, int); -int __cdecl __trailz_D2A(int); -int __mingw_hexdig_init_D2A(); -int __cdecl __hexnan_D2A(unsigned __int8 **, int *, int *); -// void __usercall dtoa_lock(int@); -void dtoa_lock_cleanup(void); // idb -int *__cdecl __Balloc_D2A(int); -void __cdecl __Bfree_D2A(void *Block); -int *__cdecl __multadd_D2A(int *, int, int); -_DWORD *__cdecl __i2b_D2A(int); -int *__cdecl __mult_D2A(int, int); -int *__cdecl __pow5mult_D2A(int *, int); -int *__cdecl __lshift_D2A(int *, int); -int __cdecl __cmp_D2A(int, int); -int *__cdecl __diff_D2A(int, int); -long double __cdecl __b2d_D2A(int, _DWORD *); -int *__cdecl __d2b_D2A(double, _DWORD *, _DWORD *); -int *__cdecl __s2b_D2A(int, int, int, int, int); -long double __cdecl __ratio_D2A(int, int); -int __cdecl __match_D2A(char **, char *); -size_t __cdecl __copybits_D2A(char *, int Val, size_t Size); -int __cdecl __any_on_D2A(int, int); -size_t __cdecl strnlen(const char *String, size_t MaxCount); -size_t __cdecl wcsnlen(const wchar_t *Source, size_t MaxCount); -// size_t __cdecl wcsxfrm(wchar_t *Destination, const wchar_t *Source, size_t MaxCount); -// size_t __cdecl wcslen(const wchar_t *String); -// size_t __cdecl wcsftime(wchar_t *Buffer, size_t SizeInWords, const wchar_t *Format, const struct tm *Tm); -// int __cdecl wcscoll(const wchar_t *String1, const wchar_t *String2); -// int __cdecl vfprintf(FILE *const Stream, const char *const Format, va_list ArgList); -// wint_t __cdecl ungetwc(wint_t Character, FILE *Stream); -// int __cdecl ungetc(int Character, FILE *Stream); -// wint_t __cdecl towupper(wint_t C); -// wint_t __cdecl towlower(wint_t C); -// size_t __cdecl strxfrm(char *Destination, const char *Source, size_t MaxCount); -// char *__cdecl strstr(const char *Str, const char *SubStr); -// char *__cdecl strncpy(char *Destination, const char *Source, size_t Count); -// int __cdecl strncmp(const char *Str1, const char *Str2, size_t MaxCount); -// size_t __cdecl strlen(const char *Str); -// size_t __cdecl strftime(char *Buffer, size_t SizeInBytes, const char *Format, const struct tm *Tm); -// char *__cdecl strerror(int ErrorMessage); -// char *__cdecl strcpy(char *Destination, const char *Source); -// int __cdecl strcoll(const char *String1, const char *String2); -// int __cdecl strcmp(const char *Str1, const char *Str2); -// _crt_signal_t __cdecl signal(int Signal, _crt_signal_t Function); -// int __cdecl setvbuf(FILE *Stream, char *Buffer, int Mode, size_t Size); -// char *__cdecl setlocale(int Category, const char *Locale); -// void *__cdecl realloc(void *Block, size_t Size); -// wint_t __cdecl putwc(wchar_t Character, FILE *Stream); -// int __cdecl putc(int Character, FILE *Stream); -// void *__cdecl memset(void *, int Val, size_t Size); -// void *__cdecl memmove(void *, const void *Src, size_t Size); -// void *__cdecl memcpy(void *, const void *Src, size_t Size); -// int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size); -// void *__cdecl memchr(const void *Buf, int Val, size_t MaxCount); -// void *__cdecl malloc(size_t Size); -// struct lconv *__cdecl localeconv(); -// int __cdecl iswctype(wint_t C, wctype_t Type); -// int __cdecl isspace(int C); -// wint_t __cdecl getwc(FILE *Stream); -// int __cdecl getc(FILE *Stream); -// size_t __cdecl fwrite(const void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); -// int __cdecl fsetpos(FILE *Stream, const fpos_t *Position); -// void __cdecl free(void *Block); -// size_t __cdecl fread(void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); -// int __cdecl fputs(const char *Buffer, FILE *Stream); -// int __cdecl fputc(int Character, FILE *Stream); -// int fprintf(FILE *const Stream, const char *const Format, ...); -// FILE *__cdecl fopen(const char *FileName, const char *Mode); -// char *__cdecl fgets(char *Buffer, int MaxCount, FILE *Stream); -// int __cdecl fgetpos(FILE *Stream, fpos_t *Position); -// int __cdecl fflush(FILE *Stream); -// int __cdecl fclose(FILE *Stream); -// void __cdecl __noreturn exit(int Code); -// void *__cdecl calloc(size_t Count, size_t Size); -// int __cdecl atoi(const char *String); -// void __cdecl __noreturn abort(); -// int __cdecl write(int FileHandle, const void *Buf, unsigned int MaxCharCount); -// int __cdecl _strnicmp(const char *String1, const char *String2, size_t MaxCount); -// int __cdecl read(int FileHandle, void *DstBuf, unsigned int MaxCharCount); -// _onexit_t __cdecl _onexit(_onexit_t Func); -// void __cdecl _initterm(_PVFV *First, _PVFV *Last); -// int __cdecl _fileno(FILE *Stream); -// int __cdecl fileno(FILE *Stream); -// __int64 __cdecl _filelengthi64(int FileHandle); -// FILE *__cdecl fdopen(int FileHandle, const char *Format); -// int *__cdecl _errno(); -// int __cdecl close(int FileHandle); -// void __cdecl _cexit(); -// int __cdecl _amsg_exit(_DWORD); weak -// void __cdecl __set_app_type(_crt_app_type Type); -// int *__cdecl __p__fmode(); -// int *__cdecl __p__commode(); -// char **__cdecl __p__acmdln(); -// int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak -int __cdecl __mbrtowc_cp(LPWSTR lpWideCharStr, BYTE *lpMultiByteStr, int, int *, UINT CodePage, unsigned int); -size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State); -size_t __cdecl mbsrtowcs(wchar_t *Dest, const char **PSrc, size_t Count, mbstate_t *State); -size_t __cdecl mbrlen(const char *Ch, size_t SizeInBytes, mbstate_t *State); -int __cdecl __wcrtomb_cp(LPSTR lpMultiByteStr, __int16 a2, UINT CodePage, int cbMultiByte); -size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State); -size_t __cdecl wcsrtombs(char *Dest, const wchar_t **PSource, size_t Count, mbstate_t *State); -FILE *__cdecl __acrt_iob_func(unsigned int Ix); -_invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler Handler); -int __cdecl mingw_rand_s(int); -int __cdecl init_rand_s(int); -void __cdecl _lock_file(FILE *Stream); -void __cdecl _unlock_file(FILE *Stream); -int __cdecl ___mb_cur_max_func(); -int msvcrt___lc_codepage_func(); -int setlocale_codepage_hack(); -int init_codepage_func(); -unsigned int __cdecl ___lc_codepage_func(); -// char *__cdecl strchr(const char *Str, int Val); -// void __cdecl _unlock(FILE *Stream); weak -// int __cdecl _lock(_DWORD); weak -int __cdecl __mingwthr_key_dtor(int, int); -int __cdecl _txnal_cow_string_D1(); -void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *Block); -void __cdecl _txnal_cow_string_C1_for_exceptions(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt11logic_errorC2EPKc(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **); -void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int); -int _ZGTtNSt11logic_errorD2Ev(); -void __cdecl _ZGTtNSt11range_errorC2EPKc(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **); -void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int); -int _ZGTtNSt11range_errorD2Ev(); -void __cdecl _ZGTtNSt12domain_errorC2EPKc(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **); -void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int); -int _ZGTtNSt12domain_errorD2Ev(); -void __cdecl _ZGTtNSt12length_errorC2EPKc(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **); -void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int); -int _ZGTtNSt12length_errorD2Ev(); -void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **); -void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int); -int _ZGTtNSt12out_of_rangeD2Ev(); -void __cdecl _ZGTtNSt13runtime_errorC2EPKc(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **); -void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int); -int _ZGTtNSt13runtime_errorD2Ev(); -void __cdecl _ZGTtNSt14overflow_errorC2EPKc(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **); -void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int); -int _ZGTtNSt14overflow_errorD2Ev(); -void __cdecl _ZGTtNSt15underflow_errorC2EPKc(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **); -void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int); -int _ZGTtNSt15underflow_errorD2Ev(); -void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(struct _Unwind_Exception **); -void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(struct _Unwind_Exception **); -void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int); -int _ZGTtNSt16invalid_argumentD2Ev(); -// int __usercall get_adjusted_ptr@(int@, int@, int **@); -// char *__usercall parse_lsda_header@(int@, char *@, int@); -// int __usercall check_exception_spec@(int@, int@, int *@, int); -// int __usercall base_of_encoded_value@(char@); -void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code, void (**)(void)); -// char *__usercall read_encoded_value_with_base@(char a1@, char *a2@, char *a3@, int *a4); -void __cdecl __noreturn __cxxabiv1::__terminate(void (*)(void)); // idb -void __cdecl __noreturn __cxxabiv1::__unexpected(void (*)(void)); // idb -void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *Block); -void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *); -void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *__hidden this); // idb -void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *Block); -void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *); -void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *__hidden this); // idb -void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *); -_DWORD *__cdecl `anonymous namespace'::get_locale_mutex(); -void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *); -void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *Block); -void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *Block); -// void __usercall `anonymous namespace'::pool::free(int@); -// void __usercall `anonymous namespace'::pool::allocate(int a1@); -HANDLE `anonymous namespace'::init(); -int __stdcall zcc::shared_ptr::shared_ptr(void *Block); // idb -int __stdcall zcc::shared_ptr::shared_ptr(void *Block); // idb -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int); -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int); -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int); -int __stdcall zcc::shared_ptr::shared_ptr(void *Block); // idb -void __fastcall WXSS::CSSTreeLib::NonTerminal::~NonTerminal(void *); -char __stdcall WXSS::CSSTreeLib::MarkHostRule::MarkGood(WXSS::CSSTreeLib::MarkHostRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::MarkHostRule::~MarkHostRule(void *); -bool __stdcall WXSS::CSSTreeLib::AttrDebugRule::MarkGood(WXSS::CSSTreeLib::AttrDebugRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::AttrDebugRule::~AttrDebugRule(void *); -// char __userpurge WXSS::CSSTreeLib::BlackListRule::MarkGood@(int@, WXSS::CSSTreeLib::BlackListRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(void *); -void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(int); -void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(int this, WXSS::Token *, unsigned __int8); -void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(int this, WXSS::Token *); -unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(int this, int, int); -int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int); -int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int); -void __stdcall WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo(int *a1, unsigned int *a2, int a3); -bool __stdcall WXSS::CSSTreeLib::RuleDebugRule::MarkGood(WXSS::CSSTreeLib::RuleDebugRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::RuleDebugRule::~RuleDebugRule(void *); -int *WXSS::CSSTreeLib::LexicalChecker::GetInstance(); -int *WXSS::CSSTreeLib::LexicalChecker::GetInstance(); -// void __userpurge WXSS::CSSTreeLib::LexicalChecker::Init(int@, WXSS::CSSTreeLib::LexicalChecker *this, bool); -char __stdcall WXSS::CSSTreeLib::ReWriteRpxRule::MarkGood(WXSS::CSSTreeLib::ReWriteRpxRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::ReWriteRpxRule::~ReWriteRpxRule(void *); -char __stdcall WXSS::CSSTreeLib::MarkSelectorRule::MarkGood(WXSS::CSSTreeLib::MarkSelectorRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::MarkSelectorRule::~MarkSelectorRule(void *); -char __stdcall WXSS::CSSTreeLib::RewriteImgUrlRule::MarkGood(WXSS::CSSTreeLib::RewriteImgUrlRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::RewriteImgUrlRule::~RewriteImgUrlRule(void *); -char __stdcall WXSS::CSSTreeLib::RewriteSelectorRule::MarkGood(WXSS::CSSTreeLib::RewriteSelectorRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::RewriteSelectorRule::~RewriteSelectorRule(void *); -void __fastcall WXSS::CSSTreeLib::EPS::~EPS(void *); -int __fastcall WXSS::CSSTreeLib::Action::Action(int); -void __fastcall WXSS::CSSTreeLib::Action::~Action(void **); -void __fastcall WXSS::CSSTreeLib::Action::~Action(void **); -void __thiscall WXSS::CSSTreeLib::Action::~Action(void **ecx0, WXSS::CSSTreeLib::Action *this); -_DWORD WXSS::CSSTreeLib::Parser::Parser(WXSS::CSSTreeLib::Parser *__hidden this); // idb -void __fastcall WXSS::CSSTreeLib::Parser::~Parser(int); -// char __userpurge WXSS::CSSTreeLib::AndRules::MarkGood@(int@, WXSS::CSSTreeLib::AndRules *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(void *); -void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(int); -int __fastcall WXSS::CSSTreeLib::Terminal::Terminal(int); -void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **); -void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **); -void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this); -void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this); -char __stdcall WXSS::CSSTreeLib::TrueRule::MarkGood(WXSS::CSSTreeLib::TrueRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::TrueRule::~TrueRule(void *); -// char __userpurge WXSS::CSSTreeLib::ChildRule::MarkGood@(int@, WXSS::CSSTreeLib::ChildRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *); -void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *); -int __stdcall WXSS::CSSTreeLib::FalseRule::MarkGood(WXSS::CSSTreeLib::FalseRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::FalseRule::~FalseRule(void *); -// int __userpurge WXSS::CSSTreeLib::RuleChain::MarkGood@(int@, WXSS::CSSTreeLib::RuleChain *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(void *); -void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(int); -// char __userpurge WXSS::CSSTreeLib::SPNotRule::MarkGood@(int@, WXSS::CSSTreeLib::SPNotRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *); -void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(void *); -void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(int); -_DWORD *__thiscall WXSS::Token::operator=(_DWORD *this, int); -int __thiscall WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(char *this, int, char *Source, int); -void __fastcall WXSS::XCompiler::~XCompiler(int); -void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(int *); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *, int, int); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int, int); -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *, int, int); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int, int); -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *, int, int); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int, int); -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *, int, int); -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int, int); -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *); -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *); -int __cdecl __gnu_cxx::__concat_size_t(char *, unsigned int, unsigned int); -int __cdecl __gnu_cxx::__snprintf_lite(char *, unsigned int, const char *, char *); -int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int); -int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int); -int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int); -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount); -size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount); -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int, fpos_t, int, int); -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **, fpos_t, int, int, int); -int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, int Character); -int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int); -int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int); -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *); -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int); -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *); -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int); -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block); -int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int); -int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int); -int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int); -wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int); -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int, int); -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int, int); -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int, fpos_t, int, int); -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **, fpos_t, int, int, int); -__int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character); -int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character); -wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int); -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *); -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int); -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *); -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int); -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block); -int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int); -void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *); -void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *); -void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *); -void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *); -void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *); -void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *); -void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *); -void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *); // idb -void __noreturn __gnu_cxx::__verbose_terminate_handler(void); // idb -void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void); // idb -void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void); // idb -void __gnu_cxx::__freeres(void); -// char __userpurge __cxxabiv1::__class_type_info::__do_catch@(_DWORD *@, __cxxabiv1::__class_type_info *this, const std::type_info *, void **, unsigned int); -bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int, int, _DWORD *); -// int __userpurge __cxxabiv1::__class_type_info::__do_upcast@(int *@, __cxxabiv1::__class_type_info *this, const __class_type_info *, void **); -int __thiscall __cxxabiv1::__class_type_info::__do_dyncast(_DWORD *this, int, int, int, int, int, int, _DWORD *); -char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int, int, _DWORD *); -int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast(_DWORD *this, int, int, int, int, int, int, _DWORD *); -// int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@(int@, __cxxabiv1::__si_class_type_info *this, const __cxxabiv1::__class_type_info *, const void *, const __cxxabiv1::__class_type_info *, const void *); -int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int, _DWORD *, _DWORD *); -int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, char *a5, int a6, char *a7, int *a8); -// int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@(_DWORD *@, __cxxabiv1::__vmi_class_type_info *this, const __cxxabiv1::__class_type_info *, const void *, const __cxxabiv1::__class_type_info *, const void *); -int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int, int); -_DWORD *__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11](_DWORD *this, int, int ErrorMessage); -const char *__fastcall WXSS::Token::GetLiteral(_DWORD *); -int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int); -int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int); -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *, unsigned int, int); -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD **, unsigned int); -int __thiscall std::wstring::find_last_of(_DWORD *this, __int16, unsigned int); -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD **a2, unsigned int a3); -unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int, unsigned int, std::length_error *); -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3); -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD **a2, unsigned int a3); -int __thiscall std::wstring::find_last_not_of(_DWORD *this, __int16, unsigned int); -int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int); -int __thiscall std::wstring::find_first_not_of(int *this, _WORD *, unsigned int, int); -int __thiscall std::wstring::find_first_not_of(_DWORD *this, _DWORD *, unsigned int); -int __thiscall std::wstring::find_first_not_of(int *this, __int16, unsigned int); -int __thiscall std::wstring::at(int *this, unsigned int); -int __thiscall std::wstring::copy(int *this, _WORD *, unsigned int, unsigned int); -unsigned int __thiscall std::wstring::find(int *this, wchar_t *String, int a3); -unsigned int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4); -unsigned int __thiscall std::wstring::find(int *this, _WORD **a2, unsigned int a3); -int __thiscall std::wstring::find(int *this, __int16, unsigned int); -int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int); -int __thiscall std::wstring::rfind(_DWORD *this, _WORD *, unsigned int, unsigned int); -int __thiscall std::wstring::rfind(_DWORD *this, _WORD **, unsigned int); -int __thiscall std::wstring::rfind(_DWORD *this, __int16, unsigned int); -_DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *, unsigned int, unsigned int); -int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String); -int __thiscall std::wstring::compare(_DWORD *this, _WORD **); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int, unsigned int, wchar_t *String); -int __thiscall std::wstring::compare(int *this, unsigned int, unsigned int, _WORD *, unsigned int); -int __thiscall std::wstring::compare(int *this, unsigned int, unsigned int, _WORD **); -int __thiscall std::wstring::compare(int *this, unsigned int, unsigned int, _DWORD *, unsigned int, unsigned int); -unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int, const char *); -// int __userpurge std::string::_M_disjunct@(_DWORD *@, std::string *this, const char *); -// const char *__userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4); -// const char *__userpurge std::string::find_last_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); -// const char *__userpurge std::string::find_last_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); -// int __userpurge std::string::find_last_of@(_DWORD *@, std::string *this, unsigned int, unsigned int); -// int __userpurge std::string::find_first_of@(int *@, std::string *this, const char *, unsigned int); -// int __userpurge std::string::find_first_of@(int *@, std::string *this, const char *, size_t MaxCount, unsigned int); -// int __userpurge std::string::find_first_of@(int *@, std::string *this, const std::string *, unsigned int); -// char *__userpurge std::string::find_first_of@(int *@, std::string *this, unsigned int, unsigned int); -// char *__userpurge std::string::_M_check_length@(_DWORD *@, std::string *this, unsigned int, std::length_error *, const char *); -// int __userpurge std::string::find_last_not_of@(int *@, std::string *this, const char *, unsigned int); -// int __userpurge std::string::find_last_not_of@(int *@, std::string *this, const char *, size_t MaxCount, unsigned int); -// int __userpurge std::string::find_last_not_of@(int *@, std::string *this, const std::string *, unsigned int); -// int __userpurge std::string::find_last_not_of@(_DWORD *@, std::string *this, unsigned int, unsigned int); -// int __userpurge std::string::find_first_not_of@(int *@, std::string *this, const char *, unsigned int); -// int __userpurge std::string::find_first_not_of@(int *@, std::string *this, const char *, size_t MaxCount, unsigned int); -// int __userpurge std::string::find_first_not_of@(int *@, std::string *this, const std::string *, unsigned int); -// int __userpurge std::string::find_first_not_of@(int *@, std::string *this, unsigned int, unsigned int); -// char *__userpurge std::string::at@(int *@, std::string *this, unsigned int); -// size_t __userpurge std::string::copy@(_DWORD *a1@, std::string *this, size_t a3, unsigned int a4, unsigned int a5); -// int __userpurge std::string::find@(int *@, std::string *this, char *, unsigned int); -// int __userpurge std::string::find@(int *@, std::string *this, const char *, size_t Size, unsigned int); -// int __userpurge std::string::find@(int *@, std::string **this, const std::string *, unsigned int); -// char *__userpurge std::string::find@(int *@, std::string *this, unsigned int, unsigned int); -// int __userpurge std::string::rfind@(int *@, std::string *this, char *, unsigned int); -// int __userpurge std::string::rfind@(int *@, std::string *this, const char *, size_t Size, unsigned int); -// int __userpurge std::string::rfind@(int *@, std::string *this, const std::string *, unsigned int); -// int __userpurge std::string::rfind@(_DWORD *@, std::string *this, unsigned int, unsigned int); -int *__thiscall std::string::substr(int *ecx0, std::string *this, unsigned int, unsigned int); -// int __userpurge std::string::compare@(const void **@, std::string *this, const char *); -// int __userpurge std::string::compare@(const void **@, const void **this, const std::string *); -// int __userpurge std::string::compare@(int *@, std::string *this, unsigned int, char *Str, const char *); -// int __userpurge std::string::compare@(int *@, std::string *this, size_t, void *Buf2, const char *, unsigned int); -// int __userpurge std::string::compare@(int *@, std::string *this, unsigned int, const void **, const std::string *); -// int __userpurge std::string::compare@(_DWORD *@, std::string *this, unsigned int, _DWORD *, const std::string *, unsigned int, unsigned int); -// std::string *__userpurge std::string::_M_check@(_DWORD *@, std::string *this, const char *, const char *); -int __fastcall std::error_code::default_error_condition(int); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int); -int __fastcall std::moneypunct::do_neg_format(int); -int __fastcall std::moneypunct::do_pos_format(int); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int); -int __fastcall std::moneypunct::do_frac_digits(int); -int __fastcall std::moneypunct::do_decimal_point(int); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int); -int __fastcall std::moneypunct::do_thousands_sep(int); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int); -int __fastcall std::moneypunct::do_neg_format(int); -int __fastcall std::moneypunct::do_pos_format(int); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int); -int __fastcall std::moneypunct::do_frac_digits(int); -int __fastcall std::moneypunct::do_decimal_point(int); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int); -int __fastcall std::moneypunct::do_thousands_sep(int); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int); -int __fastcall std::moneypunct::do_neg_format(int); -int __fastcall std::moneypunct::do_pos_format(int); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int); -int __fastcall std::moneypunct::do_frac_digits(int); -int __fastcall std::moneypunct::do_decimal_point(int); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int); -int __fastcall std::moneypunct::do_thousands_sep(int); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int); -int __fastcall std::moneypunct::do_neg_format(int); -int __fastcall std::moneypunct::do_pos_format(int); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int); -int __fastcall std::moneypunct::do_frac_digits(int); -int __fastcall std::moneypunct::do_decimal_point(int); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int); -int __fastcall std::moneypunct::do_thousands_sep(int); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *); -void __thiscall std::__timepunct::_M_put(const char **this, char *Buffer, size_t SizeInBytes, char *Format, struct tm *Tm); -void __thiscall std::__timepunct::_M_put(const char **this, wchar_t *Buffer, size_t SizeInWords, wchar_t *Format, struct tm *Tm); -struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *); -struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *); -int __fastcall std::runtime_error::what(int); -bool __fastcall std::__basic_file::is_open(_DWORD *); -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int, int, int, int); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int, int, int); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int, std::string *, int); -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int, int, int, int); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int, int, int); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int, int, int); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int, std::string *, int, int, int); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int, int, int, int, _BYTE **); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int, int); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, _BYTE **, int); -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int); -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int, int, int, int, int); -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int, int, int, int, _WORD **); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int, int); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, _BYTE **, int); -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int); -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int, int, int, int, int, int, int); -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int); -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int, int, int, int, int, int, int); -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int); -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int, int, int, int, int, int, int); -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int, int, int, int, int, int, int); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(int *this, __int64, int, int, unsigned __int8, int, int *, void **); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, __int64, int, int, unsigned __int8, int, _DWORD *, int *); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, __int64, int, int, unsigned __int8, int, _DWORD *, long double *); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, __int64, int, int, unsigned __int8, int, int *, long double *); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int, int, int, int, unsigned __int8, int, _DWORD *, int); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int, int, int, int, unsigned __int8, int, _DWORD *, int *); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int, int, int, int, unsigned __int8, int, _DWORD *, long double *); -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int, int, int, int, unsigned __int8, int, _DWORD *, long double *); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int, int, unsigned __int8, int, char, int); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int, int, unsigned __int8, int, char, std::string *); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int, int, unsigned __int8, int, char, long double); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int, int, unsigned __int8, int, char, long double); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int, int, unsigned __int8, int, unsigned __int16, int); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int, int, unsigned __int8, int, unsigned __int16, _DWORD *); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int, int, unsigned __int8, int, __int16, long double); -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int, int, unsigned __int8, int, __int16, long double); -volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int); -volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int); -int __thiscall std::__codecvt_utf8_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, int a6, int a7, _DWORD *a8); -int __thiscall std::__codecvt_utf8_base::do_out(int this, int, unsigned int *, unsigned int *, unsigned int **, _BYTE *, _BYTE *, _DWORD *); -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int, unsigned __int8 *, unsigned __int8 *, int); -int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int, unsigned __int8 *, unsigned __int8 *, unsigned __int8 **, char *, char *, char **); -int __thiscall std::__codecvt_utf8_base::do_out(int this, int, unsigned __int16 *, unsigned __int16 *, unsigned __int16 **, _BYTE *, _BYTE *, _DWORD *); -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int, unsigned __int8 *, unsigned __int8 *, int); -int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int, unsigned __int8 *, unsigned __int8 *, unsigned __int8 **, char *, char *, char **); -int __thiscall std::__codecvt_utf8_base::do_out(int this, int, unsigned __int16 *, unsigned __int16 *, unsigned __int16 **, _BYTE *, _BYTE *, _DWORD *); -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int, unsigned __int8 *, unsigned __int8 *, int); -// char __userpurge std::__iosfail_type_info::__do_upcast@(int *@, std::__iosfail_type_info *this, const __cxxabiv1::__class_type_info *, void **); -bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int); -unsigned int __fastcall std::istreambuf_iterator::_M_get(int a1); -bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int); -int __fastcall std::istreambuf_iterator::_M_get(int); -unsigned int __thiscall std::__codecvt_utf16_base::do_in(_DWORD *this, int a2, char *a3, char *a4, int *a5, int a6, int a7, _DWORD *a8); -int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int, unsigned int *, unsigned int *, unsigned int **, _WORD *, int, _DWORD *); -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, char *a3, int a4, int a5); -int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int, unsigned __int16 *, unsigned __int16 *, unsigned __int16 **, int, int, int *); -int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int, unsigned __int16 *, unsigned __int16 *, unsigned __int16 **, _WORD *, int, int *); -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, unsigned __int16 *a3, int a4, int a5); -int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int, unsigned __int16 *, unsigned __int16 *, unsigned __int16 **, int, int, int *); -int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int, unsigned __int16 *, unsigned __int16 *, unsigned __int16 **, _WORD *, int, int *); -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, unsigned __int16 *a3, int a4, int a5); -int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); -int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, char *a3, char *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int, unsigned __int8 *, unsigned __int8 *, unsigned int); -int __thiscall std::__codecvt_utf8_utf16_base::do_in(_DWORD *this, int, unsigned __int8 *, unsigned __int8 *, unsigned __int8 **, char *, char *, char **); -int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int, unsigned __int16 *, unsigned __int16 *, unsigned __int16 **, _BYTE *, _BYTE *, _DWORD *); -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int, unsigned __int8 *, unsigned __int8 *, unsigned int); -int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int, unsigned __int8 *, unsigned __int8 *, unsigned __int8 **, char *, char *, char **); -int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, char *a3, char *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _DWORD *a8); -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int, unsigned __int8 *, unsigned __int8 *, unsigned int); -_DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int, int); -void *__thiscall std::_V2::error_category::_M_message(void *ecx0, std::_V2::error_category *this, int); -int __thiscall std::_V2::error_category::equivalent(void *this, int, _DWORD *); -BOOL __thiscall std::map>::count(_DWORD *this, int); -unsigned __int8 *__thiscall std::ctype::do_tolower(_DWORD *this, unsigned __int8 *, unsigned __int8 *); -int __thiscall std::ctype::do_tolower(_DWORD *this, int); -unsigned __int8 *__thiscall std::ctype::do_toupper(_DWORD *this, unsigned __int8 *, unsigned __int8 *); -int __thiscall std::ctype::do_toupper(_DWORD *this, int); -int __fastcall std::ctype::_M_widen_init(int); -int __fastcall std::ctype::_M_narrow_init(int); -_BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *, void *); -int __thiscall std::ctype::narrow(_BYTE *this, int, int); -_BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *, void *); -int __stdcall std::ctype::do_widen(unsigned __int8); -_BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *, int, void *); -int __stdcall std::ctype::do_narrow(unsigned __int8, int); -wint_t *__thiscall std::ctype::do_scan_is(_WORD *this, unsigned __int16, wint_t *, unsigned int); -unsigned int __stdcall std::ctype::do_tolower(wint_t *, unsigned int); -wint_t __stdcall std::ctype::do_tolower(wint_t C); -unsigned int __stdcall std::ctype::do_toupper(wint_t *, unsigned int); -wint_t __stdcall std::ctype::do_toupper(wint_t C); -wint_t *__thiscall std::ctype::do_scan_not(_WORD *this, unsigned __int16, wint_t *, unsigned int); -int __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16); -unsigned int __thiscall std::ctype::do_is(char *this, wint_t *, unsigned int, _WORD *); -int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16, wint_t C); -unsigned __int8 *__thiscall std::ctype::do_widen(_WORD *this, unsigned __int8 *, unsigned __int8 *, int); -unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *, unsigned int, char, int); -int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int); -int __fastcall std::locale::id::_M_id(volatile signed __int32 *); -int *__thiscall std::locale::name[abi:cxx11](int *this, int a2); -int *__thiscall std::locale::name(int *ecx0, std::locale *this); -// _DWORD *__userpurge std::locale::facet::_M_cow_shim@(volatile signed __int32 *@, std::locale::facet *this, const std::locale::id *); -// _DWORD *__userpurge std::locale::facet::_M_sso_shim@(volatile signed __int32 *@, std::locale::facet *this, const std::locale::id *); -BOOL __thiscall std::locale::operator==(void *this, int); -unsigned int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int, std::length_error *); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int); -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *); -int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int); -unsigned int __thiscall std::string::find_last_of(int *this, char *Str, unsigned int); -unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int, size_t MaxCount); -unsigned int __thiscall std::string::find_last_of(int *this, int a2, unsigned int a3); -int __thiscall std::string::find_last_of(int *this, char, unsigned int); -unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, unsigned int); -unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int, size_t MaxCount); -int __thiscall std::string::find_first_of(_DWORD *this, int, unsigned int); -char *__thiscall std::string::find_first_of(int *this, char, unsigned int); -unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int, unsigned int, std::length_error *); -int __thiscall std::string::find_last_not_of(int *this, char *Str, unsigned int); -int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int, size_t MaxCount); -int __thiscall std::string::find_last_not_of(int *this, int, unsigned int); -int __thiscall std::string::find_last_not_of(int *this, char, unsigned int); -unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, unsigned int); -unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int, size_t MaxCount); -unsigned int __thiscall std::string::find_first_not_of(int *this, int a2, unsigned int a3); -int __thiscall std::string::find_first_not_of(_DWORD *this, char, unsigned int); -unsigned int __thiscall std::string::at(_DWORD *this, unsigned int); -size_t __thiscall std::string::copy(_DWORD *this, _BYTE *, size_t, unsigned int); -unsigned int __thiscall std::string::find(int *this, char *Str, int); -unsigned int __thiscall std::string::find(int *this, char *Buf2, unsigned int, size_t Size); -unsigned int __thiscall std::string::find(int *this, int, int); -char *__thiscall std::string::find(int *this, char, unsigned int); -int __thiscall std::string::rfind(int *this, char *Str, int); -int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int, size_t Size); -int __thiscall std::string::rfind(int *this, int, unsigned int); -int __thiscall std::string::rfind(int *this, char, unsigned int); -_DWORD *__thiscall std::string::substr(_DWORD *this, _DWORD *, unsigned int, unsigned int); -int __thiscall std::string::compare(int this, char *Str); -int __thiscall std::string::compare(int this, int); -int __thiscall std::string::compare(_DWORD *this, unsigned int, unsigned int, char *Str); -int __thiscall std::string::compare(_DWORD *this, unsigned int, size_t, void *Buf2, unsigned int); -int __thiscall std::string::compare(_DWORD *this, unsigned int, size_t, int); -int __thiscall std::string::compare(_DWORD *this, unsigned int, size_t, _DWORD *, unsigned int, size_t); -unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int, const char *); -bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int); -int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int); -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *, unsigned int, int); -int __thiscall std::wstring::find_last_of(_DWORD *this, int, unsigned int); -int __thiscall std::wstring::find_last_of(int *this, __int16, unsigned int); -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, unsigned int a3); -unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int, unsigned int, std::length_error *); -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3); -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4); -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, unsigned int a3); -int __thiscall std::wstring::find_last_not_of(int *this, __int16, unsigned int); -int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int); -int __thiscall std::wstring::find_first_not_of(int *this, _WORD *, unsigned int, int); -int __thiscall std::wstring::find_first_not_of(int *this, _DWORD *, unsigned int); -int __thiscall std::wstring::find_first_not_of(_DWORD *this, __int16, unsigned int); -unsigned int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); -int __thiscall std::wstring::copy(_DWORD *this, _WORD *, unsigned int, unsigned int); -unsigned int __thiscall std::wstring::find(int *this, wchar_t *String, int a3); -unsigned int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4); -unsigned int __thiscall std::wstring::find(int *this, int a2, unsigned int a3); -int __thiscall std::wstring::find(_DWORD *this, __int16, unsigned int); -int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int); -int __thiscall std::wstring::rfind(_DWORD *this, _WORD *, unsigned int, unsigned int); -int __thiscall std::wstring::rfind(_DWORD *this, int, unsigned int); -int __thiscall std::wstring::rfind(int *this, __int16, unsigned int); -_DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *, unsigned int, unsigned int); -int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String); -int __thiscall std::wstring::compare(_DWORD *this, int); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int, unsigned int, wchar_t *String); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int, unsigned int, _WORD *, unsigned int); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int, unsigned int, int); -int __thiscall std::wstring::compare(_DWORD *this, unsigned int, unsigned int, _DWORD *, unsigned int, unsigned int); -unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int, const char *); -int __thiscall std::stringbuf::str(int this, int); -int __thiscall std::wstringbuf::str(int this, _DWORD *); -int __thiscall std::basic_stringstream,std::allocator>::str(int this, int); -int __thiscall std::basic_stringstream,std::allocator>::str(int this, _DWORD *); -int __thiscall std::istringstream::str(int this, int); -int __thiscall std::wistringstream::str(int this, _DWORD *); -int __thiscall std::ostringstream::str(int this, int); -int __thiscall std::wostringstream::str(int this, _DWORD *); -int __stdcall std::collate::_M_compare(char *, char *); // idb -int __stdcall std::collate::do_compare(_BYTE *, int, _BYTE *, int); -size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); -_DWORD *__thiscall std::collate::do_transform(_DWORD *this, int a2, _BYTE *a3, int a4); -int __thiscall std::collate::hash(void *this, char *, char *); -int __stdcall std::collate::do_hash(char *, char *); -void *__thiscall std::collate::transform(void *this, int, int, int); -int __stdcall std::collate::_M_compare(wchar_t *, wchar_t *); // idb -int __stdcall std::collate::do_compare(_WORD *, int, _WORD *, int); -size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); -_DWORD *__thiscall std::collate::do_transform(_DWORD *this, int a2, _WORD *a3, int a4); -int __thiscall std::collate::hash(void *this, unsigned __int16 *, unsigned int); -int __stdcall std::collate::do_hash(unsigned __int16 *, unsigned int); -void *__thiscall std::collate::transform(void *this, int, int, int); -void *__thiscall std::messages::get(void *this, int, int, int, int, int); -int __thiscall std::messages::open(void *this, int, int); -int __thiscall std::messages::open(void *this, int, int, int); -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int, int, int, int, int); -int __stdcall std::messages::do_open(int, int); -void *__thiscall std::messages::get(void *this, int, int, int, int, int); -int __thiscall std::messages::open(void *this, int, int); -int __thiscall std::messages::open(void *this, int, int, int); -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int, int, int, int, int); -int __stdcall std::messages::do_open(int, int); -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_date(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_time(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *, int, _DWORD *, int, int, _DWORD *, int); -_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *, int, _DWORD *, int, int *, signed int, int, unsigned int, int, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *, int, _DWORD *, int, int, _DWORD *, int); -unsigned __int64 __stdcall std::time_get>::_M_extract_name(unsigned __int64, _DWORD *, int, _DWORD *, int, int, int, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *, int, _DWORD *, int, int, _DWORD *, int); -_DWORD *__stdcall std::time_get>::_M_extract_via_format(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char *); -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *, int, _DWORD *, int, unsigned int *, int, unsigned int, int, _DWORD *); -_DWORD *__thiscall std::time_get>::get(void *this, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, unsigned __int8 *, unsigned __int8 *); -_DWORD *__thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); -_DWORD *__stdcall std::time_get>::do_get(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); -int *__stdcall std::time_get>::do_get_date(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *); -int *__stdcall std::time_get>::do_get_time(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *, unsigned __int16, _DWORD *, __int16, int, _DWORD *, int); -_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *, unsigned __int16, _DWORD *, __int16, int *, signed int, int, unsigned int, int, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *, int, _DWORD *, __int16, int, _DWORD *, int); -int *__stdcall std::time_get>::_M_extract_name(int *a1, int a2, _DWORD *a3, int a4, int **a5, int a6, int a7, int a8, _DWORD *a9); -_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *, int, _DWORD *, __int16, int, _DWORD *, int); -int *__stdcall std::time_get>::_M_extract_via_format(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, wchar_t *String); -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *, int, _DWORD *, __int16, unsigned int *, int, unsigned int, int, _DWORD *); -int *__thiscall std::time_get>::get(void *this, int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, unsigned __int16 *, unsigned __int16 *); -int *__thiscall std::time_get>::get(void *this, int *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); -int *__stdcall std::time_get>::do_get(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); -_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *); -_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *); -__int64 __stdcall std::money_get>::do_get(__int64, _DWORD *, int, char, int, _DWORD *, int *); -__int64 __stdcall std::money_get>::do_get(__int64, _DWORD *, int, char, int, _DWORD *, long double *); -_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *, __int16, _DWORD *, __int16, int, _DWORD *, _DWORD *); -_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *, __int16, _DWORD *, __int16, int, _DWORD *, _DWORD *); -struct _Unwind_Exception *__stdcall std::money_get>::do_get(_DWORD *, __int16, _DWORD *, __int16, char, int, _DWORD *, int *); -struct _Unwind_Exception *__stdcall std::money_get>::do_get(_DWORD *, __int16, _DWORD *, __int16, char, int, _DWORD *, long double *); -int __thiscall std::money_put>::put(void *this, __int64, unsigned __int8, int, char, int); -__int64 __stdcall std::money_put>::do_put(__int64, char, int, char, int); -__int64 __thiscall std::money_put>::do_put(void *this, __int64, int, int, int, long double); -__int64 __stdcall std::money_put>::_M_insert(__int64, int, char, int); -__int64 __stdcall std::money_put>::_M_insert(__int64, int, char, int); -int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, __int16 a5, int a6); -__int64 __stdcall std::money_put>::do_put(__int64, char, int, __int16, int); -__int64 __thiscall std::money_put>::do_put(void *this, __int64, int, int, int, long double); -__int64 __stdcall std::money_put>::_M_insert(__int64, int, __int16, int); -__int64 __stdcall std::money_put>::_M_insert(__int64, int, __int16, int); -int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, int a5, int a6, _DWORD *a7); -int __stdcall std::codecvt::do_out(int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); -unsigned __int8 *__stdcall std::codecvt::do_length(int, unsigned __int8 *, unsigned __int8 *, int); -int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, int a5, int a6, _DWORD *a7); -int __stdcall std::codecvt::do_out(int, unsigned int *, unsigned int *, unsigned int **, _BYTE *, _BYTE *, _DWORD *); -unsigned __int8 *__stdcall std::codecvt::do_length(int, unsigned __int8 *, unsigned __int8 *, int); -int __stdcall std::codecvt::do_in(int, unsigned __int8 *, unsigned __int8 *, unsigned __int8 **, char *, char *, char **); -int __stdcall std::codecvt::do_out(int a1, char *a2, char *a3, unsigned __int16 **a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); -unsigned __int8 *__stdcall std::codecvt::do_length(int, unsigned __int8 *, unsigned __int8 *, unsigned int); -int __stdcall std::codecvt::do_in(int, unsigned __int8 *, unsigned __int8 *, unsigned __int8 **, char *, char *, char **); -int __stdcall std::codecvt::do_out(int, unsigned __int16 *, unsigned __int16 *, unsigned __int16 **, _BYTE *, _BYTE *, _BYTE **); -unsigned __int8 *__stdcall std::codecvt::do_length(int, unsigned __int8 *, unsigned __int8 *, unsigned int); -BOOL __cdecl std::codecvt::do_encoding(); -int __cdecl std::codecvt::do_max_length(); -int __stdcall std::codecvt::do_in(unsigned int *, char *, unsigned int, char **, wchar_t *, unsigned int, wchar_t **); -int __stdcall std::codecvt::do_out(unsigned int *, wchar_t *, unsigned int, wchar_t **, char *, unsigned int, char **); -int __stdcall std::codecvt::do_length(unsigned int *, char *, unsigned int, int); -int __stdcall std::collate::_M_compare(char *, char *); // idb -int __stdcall std::collate::do_compare(void *, _BYTE *, void *, int); -size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); -unsigned int *__thiscall std::collate::do_transform(unsigned int *this, int a2, _BYTE *a3, int a4); -int __thiscall std::collate::hash(void *this, char *, char *); -int __stdcall std::collate::do_hash(char *, char *); -void *__thiscall std::collate::transform(void *this, int, int, int); -int __stdcall std::collate::_M_compare(wchar_t *, wchar_t *); // idb -int __stdcall std::collate::do_compare(void *, _WORD *, void *, int); -size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); -unsigned int *__thiscall std::collate::do_transform(unsigned int *this, int a2, _WORD *a3, int a4); -int __thiscall std::collate::hash(void *this, unsigned __int16 *, unsigned int); -int __stdcall std::collate::do_hash(unsigned __int16 *, unsigned int); -void *__thiscall std::collate::transform(void *this, int, int, int); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, int, _DWORD *, int, int, _DWORD *, int *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, int, _DWORD *, int, int, _DWORD *, int *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, int, _DWORD *, int, int, _DWORD *, int *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, int, _DWORD *, int, int, _DWORD *, _WORD *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, int, _DWORD *, int, int, _DWORD *, int *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64, _DWORD *, int, int, _DWORD *, _WORD *); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *); -unsigned __int64 __stdcall std::num_get>::_M_extract_float(unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *); -int __thiscall std::num_get>::get(void *this, unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, unsigned __int64, _DWORD *, int, int, _DWORD *, _WORD *); -int __thiscall std::num_get>::get(void *this, unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *); -unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *); -unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64, _DWORD *, int, int, int *, _BYTE *); -int __stdcall std::num_get>::do_get(unsigned __int64, _DWORD *, int, int, _DWORD *, double *); -int __stdcall std::num_get>::do_get(unsigned __int64, _DWORD *, int, int, _DWORD *, long double *); -int __stdcall std::num_get>::do_get(unsigned __int64, _DWORD *, int, int, _DWORD *, float *); -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, unsigned __int16, _DWORD *, __int16, int, _DWORD *, int *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, unsigned __int16, _DWORD *, __int16, int, _DWORD *, int *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, unsigned __int16, _DWORD *, __int16, int, _DWORD *, int *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, unsigned __int16, _DWORD *, __int16, int, _DWORD *, _WORD *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, unsigned __int16, _DWORD *, __int16, int, _DWORD *, int *); -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *, unsigned __int16, _DWORD *, __int16, int, _DWORD *, _DWORD *); -__int64 __stdcall std::num_get>::_M_extract_int(__int64, _DWORD *, __int16, int, _DWORD *, int *); -__int64 __stdcall std::num_get>::_M_extract_int(__int64, _DWORD *, __int16, int, _DWORD *, int *); -__int64 __stdcall std::num_get>::_M_extract_int(__int64, _DWORD *, __int16, int, _DWORD *, int *); -__int64 __stdcall std::num_get>::_M_extract_int(__int64, _DWORD *, __int16, int, _DWORD *, _WORD *); -__int64 __stdcall std::num_get>::_M_extract_int(__int64, _DWORD *, __int16, int, _DWORD *, _DWORD *); -__int64 __stdcall std::num_get>::_M_extract_int(__int64, _DWORD *, __int16, int, _DWORD *, _DWORD *); -__int64 __stdcall std::num_get>::_M_extract_float(__int64, _DWORD *, __int16, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, __int64, _DWORD *, int, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, __int64, _DWORD *, int, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, __int64, _DWORD *, int, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, __int64, _DWORD *, int, int, _DWORD *, int *); -int __thiscall std::num_get>::get(void *this, __int64, _DWORD *, int, int, _DWORD *, _WORD *); -int __thiscall std::num_get>::get(void *this, __int64, _DWORD *, int, int, _DWORD *, _DWORD *); -int __thiscall std::num_get>::get(void *this, __int64, _DWORD *, int, int, _DWORD *, _DWORD *); -int __stdcall std::num_get>::do_get(__int64, _DWORD *, __int16, int, _DWORD *, _DWORD *); -__int64 __stdcall std::num_get>::do_get(__int64, _DWORD *, __int16, int, int *, _BYTE *); -std::locale::facet *__stdcall std::num_get>::do_get(__int64, _DWORD *, __int16, int, _DWORD *, double *); -std::locale::facet *__stdcall std::num_get>::do_get(__int64, _DWORD *, __int16, int, _DWORD *, long double *); -std::locale::facet *__stdcall std::num_get>::do_get(__int64, _DWORD *, __int16, int, _DWORD *, float *); -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak -_BYTE *__stdcall std::num_put>::_M_group_int(char *, int, char, int, _BYTE *, _BYTE *, _DWORD *); -int __stdcall std::num_put>::_M_insert_int(int, int, int *, int, int); -int __stdcall std::num_put>::_M_insert_int(int, int, _DWORD *, int, int); -int __stdcall std::num_put>::_M_insert_int(int, int, int *, int, __int64); -int __stdcall std::num_put>::_M_insert_int(int, int, _DWORD *, int, int, int); -_BYTE *__stdcall std::num_put>::_M_group_float(char *, int, char, char *Src, int, _BYTE *, _DWORD *); -int __thiscall std::num_put>::_M_insert_float(void *this, int, int, int *, int, char, double); -int __thiscall std::num_put>::_M_insert_float(void *this, int, int, int *, int, char, long double); -int __thiscall std::num_put>::put(void *this, int, int, _DWORD *, char, int); -int __thiscall std::num_put>::put(void *this, int, int, int *, char, double); -int __thiscall std::num_put>::put(void *this, int, int, int *, char, long double); -int __thiscall std::num_put>::put(void *this, int, int, int *, char, int); -int __thiscall std::num_put>::put(void *this, int, int, _DWORD *, char, int); -int __thiscall std::num_put>::put(void *this, int, int, int *, char, __int64); -int __thiscall std::num_put>::put(void *this, int, int, _DWORD *, char, int, int); -int __stdcall std::num_put>::_M_pad(char a1, int a2, _DWORD *a3, char *a4, char *a5, int *a6); -int __stdcall std::num_put>::do_put(int, int, _DWORD *, char, int); -int *__stdcall std::num_put>::do_put(int *, int, int *, int, int); -int __thiscall std::num_put>::do_put(void *this, int, int, int *, char, double); -int __thiscall std::num_put>::do_put(void *this, int, int, int *, char, long double); -int __stdcall std::num_put>::do_put(int, int, int *, char, int); -int __stdcall std::num_put>::do_put(int, int, _DWORD *, char, int); -int __stdcall std::num_put>::do_put(int, int, int *, char, __int64); -int __stdcall std::num_put>::do_put(int, int, _DWORD *, char, int, int); -int __stdcall std::num_put>::_M_group_int(char *, int, __int16, int, _WORD *, char *, int *); -int __stdcall std::num_put>::_M_insert_int(int, int, _DWORD *, int, int); -int __stdcall std::num_put>::_M_insert_int(int, int, _DWORD *, int, int); -int __stdcall std::num_put>::_M_insert_int(int, int, _DWORD *, int, __int64); -int __stdcall std::num_put>::_M_insert_int(int, int, _DWORD *, int, int, int); -int __stdcall std::num_put>::_M_group_float(char *, int, __int16, char *Src, _WORD *, char *, _DWORD *); -int *__thiscall std::num_put>::_M_insert_float(void *this, int *, int, std::__num_base *, int, void *, double); -int __thiscall std::num_put>::_M_insert_float(void *this, int, int, int *, int, char, long double); -int __thiscall std::num_put>::put(void *this, int, int, _DWORD *, unsigned __int16, int); -int *__thiscall std::num_put>::put(void *this, int *, int, std::__num_base *, unsigned __int16, double); -int __thiscall std::num_put>::put(void *this, int, int, int *, unsigned __int16, long double); -int __thiscall std::num_put>::put(void *this, int, int, _DWORD *, unsigned __int16, int); -int __thiscall std::num_put>::put(void *this, int, int, _DWORD *, unsigned __int16, int); -int __thiscall std::num_put>::put(void *this, int, int, _DWORD *, unsigned __int16, __int64); -int __thiscall std::num_put>::put(void *this, int, int, _DWORD *, unsigned __int16, int, int); -_WORD *__stdcall std::num_put>::_M_pad(__int16 a1, int a2, _DWORD *a3, _WORD *Size, _WORD *a5, int *a6); -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, __int16 a4, int a5); -int __stdcall std::num_put>::do_put(int, int, _DWORD *, unsigned __int16, int); -int *__thiscall std::num_put>::do_put(void *this, int *a2, int a3, std::__num_base *a4, __int16 a5, double a6); -int __thiscall std::num_put>::do_put(void *this, int a2, int a3, int *a4, __int16 a5, long double a6); -int __stdcall std::num_put>::do_put(int, int, _DWORD *, unsigned __int16, int); -int __stdcall std::num_put>::do_put(int, int, _DWORD *, unsigned __int16, int); -int __stdcall std::num_put>::do_put(int, int, _DWORD *, unsigned __int16, __int64); -int __stdcall std::num_put>::do_put(int, int, _DWORD *, unsigned __int16, int, int); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int); -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int, int); -void *__thiscall std::messages::get(void *this, int, int, int, int, int); -int __thiscall std::messages::open(void *this, int, int); -int __thiscall std::messages::open(void *this, int, int, int); -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int, int, int, int, std::string *); -int __stdcall std::messages::do_open(int, int); -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int, int); -void *__thiscall std::messages::get(void *this, int, int, int, int, int); -int __thiscall std::messages::open(void *this, int, int); -int __thiscall std::messages::open(void *this, int, int, int); -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int, int, int, int, _DWORD *); -int __stdcall std::messages::do_open(int, int); -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int); -int __fastcall std::numpunct::do_decimal_point(int); -int __fastcall std::numpunct::do_thousands_sep(int); -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int); -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int); -int __fastcall std::numpunct::do_decimal_point(int); -int __fastcall std::numpunct::do_thousands_sep(int); -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *); -int __stdcall std::time_get>::do_get_date(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *); -int __stdcall std::time_get>::do_get_time(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *, int, _DWORD *, int, int, _DWORD *, int); -_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *, int, _DWORD *, int, int *, signed int, int, unsigned int, int, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_weekday(unsigned __int64, _DWORD *, int, int, _DWORD *, int); -unsigned __int64 __stdcall std::time_get>::_M_extract_name(unsigned __int64, _DWORD *, int, int **, int, int, int, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_monthname(unsigned __int64, _DWORD *, int, int, _DWORD *, int); -unsigned __int64 __stdcall std::time_get>::_M_extract_via_format(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *, char *); -int __stdcall std::time_get>::_M_extract_wday_or_month(unsigned __int64, _DWORD *, int, unsigned int *, int, unsigned int, int, _DWORD *); -_DWORD *__stdcall std::time_get>::get(_DWORD *a1, unsigned int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, unsigned __int8 *a8, unsigned __int8 *a9); -int __stdcall std::time_get>::get(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); -int __stdcall std::time_get>::do_get(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); -_DWORD *__stdcall std::time_get>::do_get_date(__int64, _DWORD *, int, int, _DWORD *, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_time(__int64, _DWORD *, int, int, _DWORD *, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *, unsigned __int16, _DWORD *, __int16, int, _DWORD *, int); -_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *, unsigned __int16, _DWORD *, __int16, int *, signed int, int, unsigned int, int, _DWORD *); -_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *, int, _DWORD *, __int16, int, _DWORD *, int); -int *__stdcall std::time_get>::_M_extract_name(int *a1, int a2, _DWORD *a3, int a4, int **a5, int a6, int a7, int a8, _DWORD *a9); -_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *, int, _DWORD *, __int16, int, _DWORD *, int); -__int64 __stdcall std::time_get>::_M_extract_via_format(__int64, _DWORD *, int, int, _DWORD *, _DWORD *, wchar_t *); -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *, int, _DWORD *, __int16, unsigned int *, int, unsigned int, int, _DWORD *); -_DWORD *__thiscall std::time_get>::get(void *this, _DWORD *, int, _DWORD *, int, _DWORD *, _DWORD *, _DWORD *, unsigned __int16 *, unsigned __int16 *); -_DWORD *__stdcall std::time_get>::get(__int64, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); -_DWORD *__stdcall std::time_get>::do_get(__int64, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); -_DWORD *__thiscall std::time_put>::put(void *this, _DWORD *, int, int, char, int, unsigned __int8 *, unsigned __int8 *); -int __stdcall std::time_put>::do_put(int, char, int, int, struct tm *, char, char); -_DWORD *__thiscall std::time_put>::put(void *this, _DWORD *, int, int, unsigned __int16, int, unsigned __int16 *, unsigned __int16 *); -int __stdcall std::time_put>::do_put(int, char, int, int, struct tm *, char, char); -int __fastcall std::ios::fill(int); -int __thiscall std::ios::widen(int *this, int); -int __thiscall std::ios::narrow(_DWORD *this, int, int); -int __fastcall std::wios::fill(int); -int __thiscall std::wios::widen(_DWORD *this, char); -int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16, char); -unsigned __int64 __stdcall std::money_get>::_M_extract(unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -unsigned __int64 __stdcall std::money_get>::_M_extract(unsigned __int64, _DWORD *, int, int, _DWORD *, int *); -unsigned __int64 __stdcall std::money_get>::do_get(unsigned __int64, _DWORD *, int, char, int, _DWORD *, int *); -unsigned __int64 __stdcall std::money_get>::do_get(unsigned __int64, _DWORD *, int, char, int, _DWORD *, long double *); -__int64 __stdcall std::money_get>::_M_extract(__int64, _DWORD *, __int16, int, _DWORD *, int *); -__int64 __stdcall std::money_get>::_M_extract(__int64, _DWORD *, __int16, int, _DWORD *, int *); -struct _Unwind_Exception *__stdcall std::money_get>::do_get(__int64, _DWORD *, __int16, char, int, _DWORD *, int *); -struct _Unwind_Exception *__stdcall std::money_get>::do_get(__int64, _DWORD *, __int16, char, int, _DWORD *, long double *); -int __thiscall std::money_put>::put(void *this, __int64, unsigned __int8, int, char, struct _Unwind_Exception **); -__int64 __stdcall std::money_put>::do_put(__int64, char, int, char, struct _Unwind_Exception **); -__int64 __thiscall std::money_put>::do_put(void *this, __int64, int, int, int, long double); -__int64 __stdcall std::money_put>::_M_insert(__int64, int, char, struct _Unwind_Exception **); -__int64 __stdcall std::money_put>::_M_insert(__int64, int, char, struct _Unwind_Exception **); -int __thiscall std::money_put>::put(void *this, __int64 a2, unsigned __int8 a3, int a4, __int16 a5, char **a6); -__int64 __stdcall std::money_put>::do_put(__int64, char, int, __int16, char **); -__int64 __thiscall std::money_put>::do_put(void *this, __int64, int, int, int, long double); -__int64 __stdcall std::money_put>::_M_insert(__int64, int, __int16, char **); -__int64 __stdcall std::money_put>::_M_insert(__int64, int, __int16, char **); -// bool __userpurge std::type_info::__do_catch@(std::type_info *@, std::type_info *this, const type_info *, void **, unsigned int); -bool __thiscall std::type_info::operator==(_DWORD *this, int); -int *__fastcall std::wstring::_M_leak_hard(int **); -_DWORD *__cdecl std::wstring::_S_construct(unsigned int, __int16); -_DWORD *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(_WORD *Src, int); -_DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int); -_DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int); -int __cdecl std::wstring::_S_copy_chars(_WORD *, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *, unsigned __int16 *Src, size_t Size); -void __fastcall std::wstring::shrink_to_fit(int *); -int **__thiscall std::wstring::_M_replace_aux(int **this, int, int, unsigned int, __int16); -int **__thiscall std::wstring::_M_replace_safe(int **this, int, int, _WORD *Src, int); -_DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int, __int16); -char *__thiscall std::wstring::at(int **this, unsigned int); -char *__fastcall std::wstring::end(int **); -void __thiscall std::wstring::_Rep::_M_destroy(void *Block, int); -void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *Block, int); -_DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int, int); -_DWORD *__thiscall std::wstring::_Rep::_M_clone(int *this, int, int); -_DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int, unsigned int); -char *__fastcall std::wstring::back(int **); -int **__thiscall std::wstring::rend(int **this, int **); -int __thiscall std::wstring::swap(int *this, int *); -int *__fastcall std::wstring::begin(int **); -int __fastcall std::wstring::clear(int **); -char *__thiscall std::wstring::erase(int **this, int); -char *__thiscall std::wstring::erase(int **this, char *, int); -int **__thiscall std::wstring::erase(int **this, unsigned int, unsigned int); -int *__fastcall std::wstring::front(int **); -unsigned int *__thiscall std::wstring::append(unsigned int *this, wchar_t *String); -unsigned int *__thiscall std::wstring::append(unsigned int *this, char *a2, unsigned int a3); -int *__thiscall std::wstring::append(int *this, _DWORD *); -int *__thiscall std::wstring::append(int *this, _DWORD *, unsigned int, unsigned int); -int *__thiscall std::wstring::append(int *this, unsigned int, __int16); -_DWORD *__thiscall std::wstring::assign(_DWORD *this, int *); -int **__thiscall std::wstring::assign(int **this, wchar_t *String); -int **__thiscall std::wstring::assign(int **this, char *Src, unsigned int); -int *__thiscall std::wstring::assign(int *this, _DWORD *); -int **__thiscall std::wstring::assign(int **this, _DWORD *, unsigned int, unsigned int); -int **__thiscall std::wstring::assign(int **this, unsigned int, __int16); -int __thiscall std::wstring::insert(int **this, int, unsigned int, unsigned __int16); -_WORD *__thiscall std::wstring::insert(int **this, int, __int16); -int **__thiscall std::wstring::insert(int **this, int, wchar_t *String); -int **__thiscall std::wstring::insert(int **this, unsigned int a2, char *Src, unsigned int a4); -int **__thiscall std::wstring::insert(int **this, int a2, char **a3); -int **__thiscall std::wstring::insert(int **this, int, _DWORD *, unsigned int, unsigned int); -int **__thiscall std::wstring::insert(int **this, unsigned int, unsigned int, __int16); -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, int **); -int *__thiscall std::wstring::resize(int *this, unsigned int); -int *__thiscall std::wstring::resize(int *this, unsigned int, __int16); -int *__fastcall std::wstring::_M_leak(int **); -int **__thiscall std::wstring::replace(int **this, int, int, _WORD *, int); -int **__thiscall std::wstring::replace(int **this, int, int, wchar_t *String); -int **__thiscall std::wstring::replace(int **this, int, int, _WORD *, int); -int **__thiscall std::wstring::replace(int **this, int, int, _WORD **); -int **__thiscall std::wstring::replace(int **this, int, int, _WORD *, int); -int **__thiscall std::wstring::replace(int **this, int, int, _WORD *, int); -int **__thiscall std::wstring::replace(int **this, int, int, unsigned int, __int16); -int **__thiscall std::wstring::replace(int **this, int, int, wchar_t *String); -int **__thiscall std::wstring::replace(int **this, unsigned int, unsigned int, _WORD *Src, unsigned int); -int **__thiscall std::wstring::replace(int **this, int, int, _WORD **); -int **__thiscall std::wstring::replace(int **this, int, int, _DWORD *, unsigned int, unsigned int); -int **__thiscall std::wstring::replace(int **this, unsigned int, unsigned int, unsigned int, __int16); -void __thiscall std::wstring::reserve(int *this, unsigned int); -int __fastcall std::wstring::pop_back(int **); -int __cdecl std::wstring::_M_assign(_WORD *, int, __int16); -int __thiscall std::wstring::_M_mutate(int **this, int, int, int); -int __thiscall std::wstring::push_back(int *this, __int16); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *, int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *, unsigned int, unsigned int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *, unsigned int, unsigned int, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *, int, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int, __int16, int); -_WORD *__fastcall std::wstring::basic_string(_DWORD *); -int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int, int); -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int, int); -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *, int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *, unsigned int, unsigned int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *, unsigned int, unsigned int, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *, int, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int, __int16, int); -_WORD *__fastcall std::wstring::basic_string(_DWORD *); -int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int, int); -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int, int); -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int, int); -void __fastcall std::wstring::~wstring(int *); -void __fastcall std::wstring::~wstring(int *); -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, int *); -int **__thiscall std::wstring::operator=(int **this, wchar_t *String); -int *__thiscall std::wstring::operator=(int *this, _DWORD *); -int **__thiscall std::wstring::operator=(int **this, char *, int); -int **__thiscall std::wstring::operator=(int **this, __int16); -char *__thiscall std::wstring::operator[](int **this, int); -unsigned int *__thiscall std::wstring::operator+=(unsigned int *this, wchar_t *String); -int *__thiscall std::wstring::operator+=(int *this, __int16); -// void __userpurge std::iostream::swap(_DWORD *@, std::iostream *this, std::iostream *); -void __thiscall std::iostream::iostream(_DWORD *this, int *); -void __thiscall std::iostream::iostream(_DWORD *this, int); -void __fastcall std::iostream::iostream(int); -int __thiscall std::iostream::iostream(int *this, int *, _DWORD *); -void __thiscall std::iostream::iostream(int *this, int *, int); -void __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this); -void __fastcall std::iostream::~iostream(_DWORD *); -void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this); -_DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int); -// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *@, std::istream *this, char *, int); -// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *@, std::istream *this, char *, unsigned __int8, char); -std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *); -std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *, unsigned __int8); -// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *@, std::istream *this, char *); -int __fastcall std::istream::get(std::istream::sentry *); -struct _Unwind_Exception *__fastcall std::istream::peek(std::istream::sentry *a1); -// std::istream::sentry *__userpurge std::istream::read@(std::istream::sentry *@, std::istream *this, char *, int); -// void __userpurge std::istream::swap(_DWORD *@, std::istream *this, std::istream *); -int __fastcall std::istream::sync(std::istream::sentry *); -std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int, int, int, int); -std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int, int, int); -_DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this); -std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *); -// std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *@, std::istream *this, int); -// std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *@, std::istream *this, int, int); -std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *); -// void __userpurge std::istream::sentry::sentry(_BYTE *@, std::istream::sentry *this, std::istream *, bool); -// void __userpurge std::istream::sentry::sentry(_BYTE *@, std::istream::sentry *this, std::istream *, bool); -// std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *@, std::istream *this, char *, int); -// std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *a1@, std::istream *this, char *a3, char a4, char a5); -// std::istream::sentry *__userpurge std::istream::putback@(std::istream::sentry *@, std::istream *this, char); -// struct _Unwind_Exception *__userpurge std::istream::readsome@(std::istream::sentry *@, std::istream *this, char *, int); -void __thiscall std::istream::istream(_DWORD *this, int *); -void __thiscall std::istream::istream(_DWORD *this, int); -void __fastcall std::istream::istream(int); -int __thiscall std::istream::istream(int *this, int *, _DWORD *); -BOOL __thiscall std::istream::istream(int *this, int *, int); -BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this); -void __fastcall std::istream::~istream(_DWORD *); -_DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::istream::operator>>(void *this, int (__cdecl *)(void *)); -char *__thiscall std::istream::operator>>(char *this, void (__cdecl *)(char *)); -char *__thiscall std::istream::operator>>(char *this, void (__cdecl *)(char *)); -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *); -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *); -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *); -// std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *@, std::ostream *this, char); -// void __userpurge std::ostream::swap(_DWORD *@, std::ostream *this, std::ostream *); -_DWORD *__fastcall std::ostream::flush(_DWORD *); -_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int, int, int, int); -_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int, int, int); -_DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this); -// std::ostream::sentry *__userpurge std::ostream::write@(std::ostream::sentry *@, std::ostream *this, const char *, int); -// int __userpurge std::ostream::sentry::sentry@(int@, std::ostream::sentry *this, std::ostream *); -// int __userpurge std::ostream::sentry::sentry@(int@, std::ostream::sentry *this, std::ostream *); -void __fastcall std::ostream::sentry::~sentry(int); -void __fastcall std::ostream::sentry::~sentry(int); -// const char *__userpurge std::ostream::_M_write@(_DWORD *@, std::ostream *this, const char *, int); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int, int); -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int, int); -void __thiscall std::ostream::ostream(_DWORD *this, _DWORD *); -void __thiscall std::ostream::ostream(_DWORD *this, int); -// int __userpurge std::ostream::ostream@(int@, std::ostream *this, std::iostream *); -void __fastcall std::ostream::ostream(int); -int __thiscall std::ostream::ostream(_DWORD *this, _DWORD *, _DWORD *); -BOOL __thiscall std::ostream::ostream(int *this, int *, int); -void __fastcall std::ostream::~ostream(_DWORD *); -_DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::ostream::operator<<(void *this, int (__cdecl *)(void *)); -char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *)(char *)); -char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *)(char *)); -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *); -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float); -_DWORD __stdcall std::ostream::operator<<(_DWORD); // weak -char *__fastcall std::string::_M_leak_hard(char **); -_DWORD *__cdecl std::string::_S_construct(size_t Size, char); -int __cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, int); -int __cdecl std::string::_S_construct(_BYTE *Src, int); -int __cdecl std::string::_S_construct(_BYTE *Src, int); -void __fastcall std::string::shrink_to_fit(int *); -// char **__userpurge std::string::_M_replace_aux@(char **@, std::string *this, unsigned int, size_t Size, char, char); -// char **__userpurge std::string::_M_replace_safe@(char **@, std::string *this, unsigned int, _BYTE *Src, size_t Size, unsigned int); -_DWORD *__cdecl std::string::_S_construct_aux_2(size_t Size, char); -// char *__userpurge std::string::at@(char **a1@, std::string *this, unsigned int a3); -char *__fastcall std::string::end(char **); -void __thiscall std::string::_Rep::_M_destroy(void *Block, int); -void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *Block, int); -volatile signed __int32 *__thiscall std::string::_Rep::_M_grab(volatile signed __int32 *this, int, int); -_DWORD *__thiscall std::string::_Rep::_M_clone(int this, int, int); -_DWORD *__cdecl std::string::_Rep::_S_create(unsigned int, unsigned int); -char *__fastcall std::string::back(char **); -char **__thiscall std::string::rend(char **ecx0, char **this); -// int __userpurge std::string::swap@(int *@, std::string *this, std::string *); -char *__fastcall std::string::begin(char **); -void __fastcall std::string::clear(char **); -char *__thiscall std::string::erase(char **this, int); -char *__thiscall std::string::erase(char **this, char *, char *); -// char **__userpurge std::string::erase@(char **@, std::string *this, unsigned int, unsigned int); -char *__fastcall std::string::front(char **); -// unsigned int *__userpurge std::string::append@(unsigned int *a1@, std::string *this, const char *a3); -// unsigned int *__userpurge std::string::append@(unsigned int *a1@, std::string *this, size_t Size, unsigned int a4); -// int *__userpurge std::string::append@(int *@, std::string *this, const std::string *); -// int *__userpurge std::string::append@(int *@, std::string *this, const std::string *, size_t, unsigned int); -// int *__userpurge std::string::append@(int *@, size_t this, char, char); -_DWORD *__thiscall std::string::assign(_DWORD *this, int *); -// char **__userpurge std::string::assign@(char **@, std::string *this, const char *); -// char **__userpurge std::string::assign@(char **@, std::string *this, size_t Size, unsigned int); -// int *__userpurge std::string::assign@(int *@, std::string *this, const std::string *); -// char **__userpurge std::string::assign@(char **@, std::string *this, const std::string *, size_t, unsigned int); -// char **__userpurge std::string::assign@(char **@, size_t this, char, char); -char *__thiscall std::string::insert(char **this, int, char); -void __thiscall std::string::insert(char **this, int, size_t Size, char); -// char **__userpurge std::string::insert@(char **@, std::string *this, char *Str, const char *); -// char **__userpurge std::string::insert@(char **a1@, size_t this, char *Src, size_t Size, unsigned int a5); -// char **__userpurge std::string::insert@(char **@, std::string *this, char **, const std::string *); -// char **__userpurge std::string::insert@(char **@, std::string *this, _DWORD *, const std::string *, size_t, unsigned int); -// char **__userpurge std::string::insert@(char **@, std::string *this, size_t Size, char, char); -_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, char **this); -// void __userpurge std::string::resize(int *@, std::string *this, unsigned int); -// void __userpurge std::string::resize(int *@, size_t this, char, char); -char *__fastcall std::string::_M_leak(char **); -char **__thiscall std::string::replace(char **this, int, int, char *Str); -char **__thiscall std::string::replace(char **this, int, int, char **); -char **__thiscall std::string::replace(char **this, int, int, size_t Size, char); -// char **__userpurge std::string::replace@(char **@, std::string *this, unsigned int, char *Str, const char *); -// char **__userpurge std::string::replace@(char **a1@, size_t this, size_t a3, char *Src, size_t Size, unsigned int a6); -// char **__userpurge std::string::replace@(char **@, std::string *this, unsigned int, char **, const std::string *); -// char **__userpurge std::string::replace@(char **@, std::string *this, unsigned int, _DWORD *, const std::string *, size_t, unsigned int); -// char **__userpurge std::string::replace@(char **@, std::string *this, unsigned int, size_t, char, char); -// void __userpurge std::string::reserve(int *@, std::string *this, unsigned int); -void __fastcall std::string::pop_back(char **); -// void __userpurge std::string::_M_mutate(char **@, size_t this, unsigned int, unsigned int, unsigned int); -// int __userpurge std::string::push_back@(int *@, std::string *this, char); -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *); -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *, int); -int __thiscall std::string::string(_DWORD *this, char *Str, int); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int); -_BYTE *__thiscall std::string::string(_DWORD *this, int); -// _DWORD *__userpurge std::string::string@(_DWORD *@, std::string *this, const std::string *); -_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *, int); -int __thiscall std::string::string(int *this, _DWORD *, unsigned int, int); -// int __userpurge std::string::string@(int *@, std::string *this, const std::string *, unsigned int, unsigned int); -int __thiscall std::string::string(int *this, int *, unsigned int, unsigned int, int); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int); -char *__thiscall std::string::string(char **this, size_t Size, char *a3, int a4); -_BYTE *__fastcall std::string::string(_DWORD *); -int __thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, unsigned __int8 *Src, int, int); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int, int); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int, int); -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *); -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *, int); -int __thiscall std::string::string(_DWORD *this, char *Str, int); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int); -_BYTE *__thiscall std::string::string(_DWORD *this, int); -// _DWORD *__userpurge std::string::string@(_DWORD *@, std::string *this, const std::string *); -_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *, int); -int __thiscall std::string::string(int *this, _DWORD *, unsigned int, int); -// int __userpurge std::string::string@(int *@, std::string *this, const std::string *, unsigned int, unsigned int); -int __thiscall std::string::string(int *this, int *, unsigned int, unsigned int, int); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int); -char *__thiscall std::string::string(char **this, size_t Size, char *a3, int a4); -_BYTE *__fastcall std::string::string(_DWORD *); -int __thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, unsigned __int8 *Src, int, int); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int, int); -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int, int); -void __fastcall std::string::~string(int *); -void __fastcall std::string::~string(int *); -_DWORD *__thiscall std::string::operator=(_DWORD *this, int *); -char **__thiscall std::string::operator=(char **this, std::string *Str); -int *__thiscall std::string::operator=(int *this, _DWORD *); -char **__thiscall std::string::operator=(char **this, std::string *, size_t); -char **__thiscall std::string::operator=(char **this, char); -char *__thiscall std::string::operator[](char **this, int); -unsigned int *__thiscall std::string::operator+=(unsigned int *this, std::string *Str); -int *__thiscall std::string::operator+=(int *this, char); -int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *, char *); -void __fastcall std::bad_typeid::~bad_typeid(_DWORD *); -void __cdecl std::bad_typeid::~bad_typeid(std::exception *); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int, char *Str1, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int, char *Str1, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int); -void __fastcall std::__timepunct::~__timepunct(_DWORD *Block); -void __fastcall std::__timepunct::~__timepunct(_DWORD *); -void __fastcall std::__timepunct::~__timepunct(_DWORD *); -_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int, char *Str1, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int, char *Str1, int); -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int); -void __fastcall std::__timepunct::~__timepunct(_DWORD *Block); -void __fastcall std::__timepunct::~__timepunct(_DWORD *); -void __fastcall std::__timepunct::~__timepunct(_DWORD *); -// void __userpurge std::logic_error::logic_error(_DWORD *@, std::logic_error *this, const char *); -void __thiscall std::logic_error::logic_error(_DWORD *this, int); -// void __userpurge std::logic_error::logic_error(_DWORD *@, std::logic_error *this, const std::logic_error *); -// void __userpurge std::logic_error::logic_error(_DWORD *@, std::logic_error *this, const std::string *); -void __fastcall std::logic_error::~logic_error(void *); -void __cdecl std::logic_error::~logic_error(std::exception *); -int *__thiscall std::logic_error::operator=(int *this, int); -int *__thiscall std::logic_error::operator=(int *this, int); -// void __userpurge std::range_error::range_error(_DWORD *@, std::range_error *this, const char *); -void __thiscall std::range_error::range_error(_DWORD *this, int); -// void __userpurge std::range_error::range_error(_DWORD *@, std::range_error *this, const std::string *); -void __fastcall std::range_error::~range_error(_DWORD *); -void __cdecl std::range_error::~range_error(std::exception *); -// int __usercall std::_Destroy_aux::__destroy *>@(int@, int, int); -// int __usercall std::_Destroy_aux::__destroy *>@(int@, int, int); -// int __usercall std::_Destroy_aux::__destroy@(int@, void **, void **); -// unsigned __int8 *__usercall std::`anonymous namespace'::utf16_span@(unsigned __int8 *@, unsigned __int8 *@, unsigned int@, unsigned int, char); -int __cdecl std::`anonymous namespace'::__x86_rdrand(); -int __cdecl std::`anonymous namespace'::__x86_rdseed(std::_anonymous_namespace_ *this); -int __cdecl std::`anonymous namespace'::__winxp_rand_s(); -// int __usercall std::`anonymous namespace'::read_utf16_bom@(int@, int *@); -int __cdecl std::`anonymous namespace'::__x86_rdseed_rdrand(); -// int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **@, unsigned int@); -// int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **@, unsigned int@); -// int __usercall std::`anonymous namespace'::write_utf8_code_point@(int@, unsigned int@); -// int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **@, unsigned int@); -// int __usercall std::`anonymous namespace'::ucs2_in@(unsigned __int16 **@, int *@, unsigned int@, char); -// int __usercall std::`anonymous namespace'::ucs2_out@(unsigned __int16 **@, _DWORD *@, unsigned int@, char); -// int __usercall std::`anonymous namespace'::utf16_in@(unsigned __int8 **@, char **@, unsigned int@, char, int); -// int __usercall std::`anonymous namespace'::utf16_out@(unsigned __int16 **@, _BYTE **@, unsigned int@, int); -int __fastcall std::__basic_file::fd(FILE **); -_BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char, int); -FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char); -int __fastcall std::__basic_file::sync(FILE **); -int __fastcall std::__basic_file::close(int); -int __thiscall std::__basic_file::xsgetn(FILE **this, void *DstBuf, unsigned int MaxCharCount); -unsigned int __thiscall std::__basic_file::xsputn(FILE **this, char *, unsigned int); -__int64 __thiscall std::__basic_file::seekoff(FILE **this, __int64, int); -void __cdecl __noreturn sub_4AA025(int, int, int, int, int, int, int, int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int); // idb -_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int); -FILE **__thiscall std::__basic_file::sys_open(FILE **this, int FileHandle, char); -int __thiscall std::__basic_file::xsputn_2(FILE **this, char *, unsigned int, char *, unsigned int); -int __fastcall std::__basic_file::showmanyc(FILE **); -void __thiscall std::__basic_file::__basic_file(_BYTE *this, int); -FILE *__fastcall std::__basic_file::~__basic_file(int); -void __thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *); -// int __userpurge std::__cow_string::__cow_string@(_DWORD *@, std::__cow_string *this, size_t, unsigned int); -int __thiscall std::__cow_string::__cow_string(_DWORD *this, int); -// void __userpurge std::__cow_string::__cow_string(_DWORD *@, std::__cow_string *this, const std::__cow_string *); -_DWORD *__fastcall std::__cow_string::__cow_string(_DWORD *); -void __fastcall std::__cow_string::~__cow_string(int *); -int *__thiscall std::__cow_string::operator=(int *this, std::string *); -int *__thiscall std::__cow_string::operator=(int *this, std::string *); -void __thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *); -void __thiscall std::__shared_ptr::__shared_ptr(int *this, int *); -volatile signed __int32 **__thiscall std::__shared_ptr::operator=(volatile signed __int32 **this, volatile signed __int32 **); -int __thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *); -void __thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *); -volatile signed __int32 **__thiscall std::__shared_ptr::operator=(volatile signed __int32 **this, volatile signed __int32 **); -_DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *); -// _BYTE *__userpurge std::__sso_string::__sso_string@(int@, std::__sso_string *this, size_t Size, unsigned int); -_BYTE *__thiscall std::__sso_string::__sso_string(char *this, int); -// void __userpurge std::__sso_string::__sso_string(_DWORD *@, std::__sso_string *this, const std::__sso_string *); -// _BYTE *__userpurge std::__sso_string::__sso_string@(int@, std::__sso_string **this, const std::string *); -void __fastcall std::__sso_string::~__sso_string(void **); -_DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int); -void *__thiscall std::__sso_string::operator=(void *this, int); -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **, int); -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block); -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **, int); -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block); -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *); -// void __userpurge std::domain_error::domain_error(_DWORD *@, std::domain_error *this, const char *); -void __thiscall std::domain_error::domain_error(_DWORD *this, int); -// void __userpurge std::domain_error::domain_error(_DWORD *@, std::domain_error *this, const std::string *); -void __fastcall std::domain_error::~domain_error(_DWORD *); -void __cdecl std::domain_error::~domain_error(std::exception *); -// void __userpurge std::length_error::length_error(_DWORD *@, std::length_error *this, const char *); -void __thiscall std::length_error::length_error(_DWORD *this, int); -// void __userpurge std::length_error::length_error(_DWORD *@, std::length_error *this, const std::string *); -void __fastcall std::length_error::~length_error(_DWORD *); -void __cdecl std::length_error::~length_error(std::exception *); -// void __userpurge std::out_of_range::out_of_range(_DWORD *@, std::out_of_range *this, const char *); -void __thiscall std::out_of_range::out_of_range(_DWORD *this, int); -// void __userpurge std::out_of_range::out_of_range(_DWORD *@, std::out_of_range *this, const std::string *); -void __fastcall std::out_of_range::~out_of_range(_DWORD *); -void __cdecl std::out_of_range::~out_of_range(std::exception *); -void __thiscall std::system_error::system_error(_DWORD *this, int, int, char *Str); -void __thiscall std::system_error::system_error(_DWORD *this, int, int, int); -void __fastcall std::system_error::~system_error(_DWORD *); -void __cdecl std::system_error::~system_error(std::exception *); -int __cdecl std::__facet_shims::__time_get(int, int, int, int, int, int, int, int, int, char); -int __cdecl std::__facet_shims::__time_get(int, int, int, int, int, int, int, int, int, char); -int __cdecl std::__facet_shims::__time_get(int, int, int, int, int, int, int, int, int, char); -int __cdecl std::__facet_shims::__time_get(int, int, int, int, int, int, int, int, int, char); -__int64 __cdecl std::__facet_shims::__money_get(int, int, __int64, int, int, unsigned __int8, int, _DWORD *, int, _DWORD *); -__int64 __cdecl std::__facet_shims::__money_get(int, int *, __int64, int, int, unsigned __int8, int, _DWORD *, int, _DWORD *); -struct _Unwind_Exception *__cdecl std::__facet_shims::__money_get(int, int, int, int, int, int, unsigned __int8, int, _DWORD *, int, _DWORD *); -struct _Unwind_Exception *__cdecl std::__facet_shims::__money_get(int, int *, int, int, int, int, unsigned __int8, int, _DWORD *, int, _DWORD *); -__int64 __cdecl std::__facet_shims::__money_put(int, int, int, int, unsigned __int8, int, char, long double, int); -__int64 __cdecl std::__facet_shims::__money_put(int, int, int, int, unsigned __int8, int, char, long double, int); -__int64 __cdecl std::__facet_shims::__money_put(int, int, int, int, unsigned __int8, int, unsigned __int16, long double, int); -__int64 __cdecl std::__facet_shims::__money_put(int, int, int, int, unsigned __int8, int, unsigned __int16, long double, int); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *); -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *); -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *); -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *); -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *); -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *); -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *); -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *); -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *); -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *); -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block); -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *); -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *); -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *); -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *); -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block); -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *); -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block); -void __cdecl std::__facet_shims::__messages_get(int, int, _DWORD *, std::string *, int, int, unsigned __int8 *, size_t); -void __cdecl std::__facet_shims::__messages_get(int, int, _DWORD *, int, int, int, _BYTE *, int); -void __cdecl std::__facet_shims::__messages_get(int, int, _DWORD *, int, int, int, _WORD *, int); -void __cdecl std::__facet_shims::__messages_get(int, int, _DWORD *, int, int, int, _WORD *, int); -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int, int, unsigned __int8 *, size_t, int); -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int, int, _BYTE *, int, int); -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int, int, unsigned __int8 *, size_t, int); -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int, int, _BYTE *, int, int); -int __cdecl std::__facet_shims::__messages_close(int, int, int); -int __cdecl std::__facet_shims::__messages_close(int, int, int); -int __cdecl std::__facet_shims::__messages_close(int, int, int); -int __cdecl std::__facet_shims::__messages_close(int, int, int); -int __cdecl std::__facet_shims::__collate_compare(int, int, int, int, int, int); -int __cdecl std::__facet_shims::__collate_compare(int, int, int, int, int, int); -int __cdecl std::__facet_shims::__collate_compare(int, int, int, int, int, int); -int __cdecl std::__facet_shims::__collate_compare(int, int, int, int, int, int); -void __cdecl std::__facet_shims::__collate_transform(int, int, _DWORD *, std::string *, int); -void __cdecl std::__facet_shims::__collate_transform(int, int, _DWORD *, int, int); -void __cdecl std::__facet_shims::__collate_transform(int, int, _DWORD *, int, int); -void __cdecl std::__facet_shims::__collate_transform(int, int, _DWORD *, int, int); -int __cdecl std::__facet_shims::__time_get_dateorder(int, int); -int __cdecl std::__facet_shims::__time_get_dateorder(int, int); -int __cdecl std::__facet_shims::__time_get_dateorder(int, int); -int __cdecl std::__facet_shims::__time_get_dateorder(int, int); -void __cdecl std::__facet_shims::__numpunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__numpunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__numpunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__numpunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int, int *, int); -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int, int *, int); -// void __userpurge std::__ios_failure::__ios_failure(_DWORD *@, std::__ios_failure *this, int, int); -void __fastcall std::__ios_failure::~__ios_failure(void (__cdecl ***a1)(std::ios_base::failure *__hidden this)); -void __fastcall std::__ios_failure::~__ios_failure(void (__cdecl ***a1)(std::ios_base::failure *__hidden this)); -void __fastcall std::bad_exception::~bad_exception(void *Block); -void __cdecl std::bad_exception::~bad_exception(void *); // idb -unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int); -int __thiscall std::filebuf::_M_get_ext_pos(int this, int); -int __fastcall std::filebuf::_M_destroy_pback(int); -int __fastcall std::filebuf::_M_terminate_output(int); -bool __thiscall std::filebuf::_M_convert_to_external(int this, char *, unsigned int); -void __fastcall std::filebuf::_M_destroy_internal_buffer(int); -void __fastcall std::filebuf::_M_allocate_internal_buffer(int); -_DWORD *__thiscall std::filebuf::open(_DWORD *this, char *, int); -_DWORD *__thiscall std::filebuf::open(_DWORD *this, wchar_t *, int); -int __thiscall std::filebuf::swap(int this, int); -int __fastcall std::filebuf::sync(_DWORD *); -struct _Unwind_Exception *__fastcall std::filebuf::close(struct _Unwind_Exception *); -char __thiscall std::filebuf::imbue(char *this, int a2); -int __thiscall std::filebuf::setbuf(int this, __int64); -int __thiscall std::filebuf::xsgetn(_DWORD *this, char *, signed int); -int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *, signed int); -_DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int, __int64, int, int); -_DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int, __int64, int, int); -_DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int, __int64, int, int, int); -int __thiscall std::filebuf::overflow(int this, int); -int __thiscall std::filebuf::pbackfail(char *this, int); -int __fastcall std::filebuf::showmanyc(_DWORD *); -int __fastcall std::filebuf::underflow(int); -int __thiscall std::filebuf::basic_filebuf(int this, std::locale *); -void __fastcall std::filebuf::basic_filebuf(int); -int __thiscall std::filebuf::basic_filebuf(int this, std::locale *); -void __fastcall std::filebuf::basic_filebuf(int); -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *); -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *); -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *); -int __thiscall std::filebuf::operator=(int this, int); -unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int); -int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int); -int __fastcall std::wfilebuf::_M_destroy_pback(int); -int __fastcall std::wfilebuf::_M_terminate_output(int); -bool __thiscall std::wfilebuf::_M_convert_to_external(int this, char *, unsigned int); -void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int); -void __fastcall std::wfilebuf::_M_allocate_internal_buffer(int); -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *, int); -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, wchar_t *, int); -int __thiscall std::wfilebuf::swap(int this, int); -int __fastcall std::wfilebuf::sync(_DWORD *); -struct _Unwind_Exception *__fastcall std::wfilebuf::close(struct _Unwind_Exception *); -char __thiscall std::wfilebuf::imbue(char *this, int a2); -int __thiscall std::wfilebuf::setbuf(int this, __int64); -int __thiscall std::wfilebuf::xsgetn(_DWORD *this, char *, signed int); -int __thiscall std::wfilebuf::xsputn(int this, char *, signed int); -_DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int, __int64, int, int); -_DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int, __int64, int, int); -_DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int, __int64, int, int, int); -int __thiscall std::wfilebuf::overflow(int this, int); -int __thiscall std::wfilebuf::pbackfail(char *this, int); -int __fastcall std::wfilebuf::showmanyc(_DWORD *); -int __fastcall std::wfilebuf::underflow(int); -int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *); -void __fastcall std::wfilebuf::basic_filebuf(int); -int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *); -void __fastcall std::wfilebuf::basic_filebuf(int); -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *); -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *); -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *); -int __thiscall std::wfilebuf::operator=(int this, int); -int __thiscall std::fstream::open(int *this, char *, int); -int __thiscall std::fstream::open(int *this, wchar_t *, int); -int __thiscall std::fstream::open(int *this, char **, int); -void __thiscall std::fstream::swap(_DWORD *this, _DWORD *); -struct _Unwind_Exception *__fastcall std::fstream::close(_DWORD *); -void __thiscall std::fstream::basic_fstream(_DWORD *this, int *); -void __thiscall std::fstream::basic_fstream(_DWORD *this, char *, int); -void __thiscall std::fstream::basic_fstream(_DWORD *this, wchar_t *, int); -void __thiscall std::fstream::basic_fstream(_DWORD *this, char **, int); -void __fastcall std::fstream::basic_fstream(int); -void __thiscall std::fstream::basic_fstream(int *this, int *, _DWORD *); -void __thiscall std::fstream::basic_fstream(int *this, int *, char *, int); -void __thiscall std::fstream::basic_fstream(int *this, int *, wchar_t *, int); -void __thiscall std::fstream::basic_fstream(int *this, int *, char **, int); -void __thiscall std::fstream::basic_fstream(int *this, int *); -void __fastcall std::fstream::~fstream(_DWORD *); -void __fastcall std::fstream::~fstream(int); -void __thiscall std::fstream::~fstream(int *this, int *); -_DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::wfstream::open(int *this, char *, int); -int __thiscall std::wfstream::open(int *this, wchar_t *, int); -int __thiscall std::wfstream::open(int *this, char **, int); -void __thiscall std::wfstream::swap(_DWORD *this, _DWORD *); -struct _Unwind_Exception *__fastcall std::wfstream::close(_DWORD *); -void __thiscall std::wfstream::basic_fstream(_DWORD *this, int *); -void __thiscall std::wfstream::basic_fstream(_DWORD *this, char *, int); -void __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *, int); -void __thiscall std::wfstream::basic_fstream(_DWORD *this, char **, int); -void __fastcall std::wfstream::basic_fstream(int); -void __thiscall std::wfstream::basic_fstream(int *this, int *, _DWORD *); -void __thiscall std::wfstream::basic_fstream(int *this, int *, char *, int); -void __thiscall std::wfstream::basic_fstream(int *this, int *, wchar_t *, int); -void __thiscall std::wfstream::basic_fstream(int *this, int *, char **, int); -void __thiscall std::wfstream::basic_fstream(int *this, int *); -void __fastcall std::wfstream::~wfstream(_DWORD *); -void __fastcall std::wfstream::~wfstream(int); -void __thiscall std::wfstream::~wfstream(int *this, int *); -_DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -char *__thiscall std::wistream::_M_extract(char *this, int a2); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *, int); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *, int, __int16); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *, __int16); -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *); -int __fastcall std::wistream::get(_DWORD *); -int __fastcall std::wistream::peek(_DWORD *); -_DWORD *__thiscall std::wistream::read(_DWORD *this, int, int); -void __thiscall std::wistream::swap(_DWORD *this, _DWORD *); -int __fastcall std::wistream::sync(_DWORD *); -_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int, int, int, int); -_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int, int, int); -_DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *); -int *__fastcall std::wistream::unget(int *); -_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int); -_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int, __int16); -_DWORD *__fastcall std::wistream::ignore(_DWORD *); -void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *, char); -void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *, char); -_DWORD *__thiscall std::wistream::getline(_DWORD *this, char *, int); -_DWORD *__thiscall std::wistream::getline(_DWORD *this, char *, int, __int16); -int *__thiscall std::wistream::putback(int *this, unsigned __int16); -struct _Unwind_Exception *__thiscall std::wistream::readsome(_DWORD *this, int, int); -void __thiscall std::wistream::basic_istream(_DWORD *this, int *); -void __thiscall std::wistream::basic_istream(_DWORD *this, int); -void __fastcall std::wistream::basic_istream(int); -int __thiscall std::wistream::basic_istream(int *this, int *, _DWORD *); -BOOL __thiscall std::wistream::basic_istream(int *this, int *, int); -BOOL __thiscall std::wistream::basic_istream(int *this, int *); -void __fastcall std::wistream::~wistream(char *Block); -_DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::wistream::operator>>(void *this, int (__cdecl *)(void *)); -char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *)(char *)); -char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *)(char *)); -_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *); -char *__thiscall std::wistream::operator>>(char *this, _DWORD *a2); -char *__thiscall std::wistream::operator>>(char *this, _WORD *a2); -int *__thiscall std::wostream::put(int *this, unsigned __int16); -void __thiscall std::wostream::swap(_DWORD *this, _DWORD *); -_DWORD *__fastcall std::wostream::flush(_DWORD *); -_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int, int, int, int); -_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int, int, int); -_DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *); -int *__thiscall std::wostream::write(int *this, int, int); -int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *); -int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *); -void __fastcall std::wostream::sentry::~sentry(int); -void __fastcall std::wostream::sentry::~sentry(int); -int __thiscall std::wostream::_M_write(_DWORD *this, int, int); -int *__thiscall std::wostream::_M_insert(int *this, int); -int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8); -int *__thiscall std::wostream::_M_insert(int *this, double); -int *__thiscall std::wostream::_M_insert(int *this, long double); -int *__thiscall std::wostream::_M_insert(int *this, int); -int *__thiscall std::wostream::_M_insert(int *this, int); -int *__thiscall std::wostream::_M_insert(int *this, int, int); -int *__thiscall std::wostream::_M_insert(int *this, int, int); -void __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *); -void __thiscall std::wostream::basic_ostream(_DWORD *this, int); -int __thiscall std::wostream::basic_ostream(_DWORD *this, int); -void __fastcall std::wostream::basic_ostream(int); -int __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *, _DWORD *); -BOOL __thiscall std::wostream::basic_ostream(int *this, int *, int); -void __fastcall std::wostream::~wostream(char *Block); -_DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::wostream::operator<<(void *this, int (__cdecl *)(void *)); -char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *)(char *)); -char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *)(char *)); -int *__thiscall std::wostream::operator<<(int *this, _DWORD *); -int *__thiscall std::wostream::operator<<(int *this, float); -void __thiscall std::random_device::_M_init_pretr1(_DWORD *this, unsigned __int8 **); -// void __userpurge std::random_device::_M_init_pretr1(_DWORD *@, std::random_device **this, const std::string *); -int __fastcall std::random_device::_M_fini(int *); -// void __userpurge std::random_device::_M_init(_DWORD *@, std::random_device *this, const char *, unsigned int); -void *__thiscall std::random_device::_M_init(_DWORD *this, int); -// void __userpurge std::random_device::_M_init(_DWORD *@, std::random_device **this, const std::string *); -int __fastcall std::random_device::_M_getval(int); -// void __userpurge std::runtime_error::runtime_error(_DWORD *@, std::runtime_error *this, const char *); -void __thiscall std::runtime_error::runtime_error(_DWORD *this, int); -// void __userpurge std::runtime_error::runtime_error(_DWORD *@, std::runtime_error *this, const std::runtime_error *); -// void __userpurge std::runtime_error::runtime_error(_DWORD *@, std::runtime_error *this, const std::string *); -void __fastcall std::runtime_error::~runtime_error(void *); -void __cdecl std::runtime_error::~runtime_error(std::exception *); -int *__thiscall std::runtime_error::operator=(int *this, int); -int *__thiscall std::runtime_error::operator=(int *this, int); -int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **); -int __thiscall std::ifstream::open(int *this, char *, int); -int __thiscall std::ifstream::open(int *this, wchar_t *, int); -int __thiscall std::ifstream::open(int *this, char **, int); -void __thiscall std::ifstream::swap(_DWORD *this, _DWORD *); -struct _Unwind_Exception *__fastcall std::ifstream::close(_DWORD *); -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *); -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char *, int); -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, wchar_t *, int); -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char **, int); -void __fastcall std::ifstream::basic_ifstream(int); -void __thiscall std::ifstream::basic_ifstream(int *this, int *, _DWORD *); -void __thiscall std::ifstream::basic_ifstream(int *this, int *, char *, int); -void __thiscall std::ifstream::basic_ifstream(int *this, int *, wchar_t *, int); -void __thiscall std::ifstream::basic_ifstream(int *this, int *, char **, int); -void __thiscall std::ifstream::basic_ifstream(int *this, int *); -void __fastcall std::ifstream::~ifstream(_DWORD *); -void __fastcall std::ifstream::~ifstream(int); -void __thiscall std::ifstream::~ifstream(int *this, int *); -_DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::wifstream::open(int *this, char *, int); -int __thiscall std::wifstream::open(int *this, wchar_t *, int); -int __thiscall std::wifstream::open(int *this, char **, int); -void __thiscall std::wifstream::swap(_DWORD *this, _DWORD *); -struct _Unwind_Exception *__fastcall std::wifstream::close(_DWORD *); -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *); -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *, int); -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *, int); -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **, int); -void __fastcall std::wifstream::basic_ifstream(int); -void __thiscall std::wifstream::basic_ifstream(int *this, int *, _DWORD *); -void __thiscall std::wifstream::basic_ifstream(int *this, int *, char *, int); -void __thiscall std::wifstream::basic_ifstream(int *this, int *, wchar_t *, int); -void __thiscall std::wifstream::basic_ifstream(int *this, int *, char **, int); -void __thiscall std::wifstream::basic_ifstream(int *this, int *); -void __fastcall std::wifstream::~wifstream(_DWORD *); -void __fastcall std::wifstream::~wifstream(int); -void __thiscall std::wifstream::~wifstream(int *this, int *); -_DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *); -void __thiscall std::wiostream::swap(_DWORD *this, _DWORD *); -void __thiscall std::wiostream::basic_iostream(_DWORD *this, int *); -void __thiscall std::wiostream::basic_iostream(_DWORD *this, int); -void __fastcall std::wiostream::basic_iostream(int); -int __thiscall std::wiostream::basic_iostream(int *this, int *, _DWORD *); -void __thiscall std::wiostream::basic_iostream(int *this, int *, int); -void __thiscall std::wiostream::basic_iostream(int *this, int *); -void __fastcall std::wiostream::~basic_iostream(char *Block); -int __thiscall std::wiostream::~basic_iostream(int *this, int *); -_DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::ofstream::open(int *this, char *, int); -int __thiscall std::ofstream::open(int *this, wchar_t *, int); -int __thiscall std::ofstream::open(int *this, char **, int); -void __thiscall std::ofstream::swap(_DWORD *this, _DWORD *); -struct _Unwind_Exception *__fastcall std::ofstream::close(_DWORD *); -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, _DWORD *); -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char *, int); -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, wchar_t *, int); -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char **, int); -void __fastcall std::ofstream::basic_ofstream(int); -void __thiscall std::ofstream::basic_ofstream(int *this, int *, _DWORD *); -void __thiscall std::ofstream::basic_ofstream(int *this, int *, char *, int); -void __thiscall std::ofstream::basic_ofstream(int *this, int *, wchar_t *, int); -void __thiscall std::ofstream::basic_ofstream(int *this, int *, char **, int); -void __thiscall std::ofstream::basic_ofstream(int *this, int *); -void __fastcall std::ofstream::~ofstream(_DWORD *); -void __fastcall std::ofstream::~ofstream(int); -void __thiscall std::ofstream::~ofstream(int *this, int *); -_DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::wofstream::open(int *this, char *, int); -int __thiscall std::wofstream::open(int *this, wchar_t *, int); -int __thiscall std::wofstream::open(int *this, char **, int); -void __thiscall std::wofstream::swap(_DWORD *this, _DWORD *); -struct _Unwind_Exception *__fastcall std::wofstream::close(_DWORD *); -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, _DWORD *); -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *, int); -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *, int); -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **, int); -void __fastcall std::wofstream::basic_ofstream(int); -void __thiscall std::wofstream::basic_ofstream(int *this, int *, _DWORD *); -void __thiscall std::wofstream::basic_ofstream(int *this, int *, char *, int); -void __thiscall std::wofstream::basic_ofstream(int *this, int *, wchar_t *, int); -void __thiscall std::wofstream::basic_ofstream(int *this, int *, char **, int); -void __thiscall std::wofstream::basic_ofstream(int *this, int *); -void __fastcall std::wofstream::~wofstream(_DWORD *); -void __fastcall std::wofstream::~wofstream(int); -void __thiscall std::wofstream::~wofstream(int *this, int *); -_DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***, int); -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***, int); -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***, int); -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***, int); -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); -void __fastcall std::collate_byname::~collate_byname(_DWORD *); -void __fastcall std::collate_byname::~collate_byname(_DWORD *); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***, int); -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); -void __fastcall std::collate_byname::~collate_byname(_DWORD *); -void __fastcall std::collate_byname::~collate_byname(_DWORD *); -// void __userpurge std::overflow_error::overflow_error(_DWORD *@, std::overflow_error *this, const char *); -void __thiscall std::overflow_error::overflow_error(_DWORD *this, int); -// void __userpurge std::overflow_error::overflow_error(_DWORD *@, std::overflow_error *this, const std::string *); -void __fastcall std::overflow_error::~overflow_error(_DWORD *); -void __cdecl std::overflow_error::~overflow_error(std::exception *); -void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_dispose(int); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_dispose(int); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_dispose(int); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block); -void __fastcall std::_Sp_counted_ptr::_M_dispose(int); -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block); -_DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int, int, int, int, int); -_DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int, int, int, int, int, int); -void __thiscall std::streambuf::swap(int this, int); -int __stdcall std::streambuf::imbue(int); // weak -int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8); -int __fastcall std::streambuf::uflow(_DWORD *); -int __fastcall std::streambuf::sbumpc(_DWORD *); -void *__thiscall std::streambuf::setbuf(void *this, int, int); -int __fastcall std::streambuf::snextc(_DWORD *); -int (*__fastcall std::streambuf::stossc(_DWORD *))(void); -int __thiscall std::streambuf::xsgetn(_DWORD *this, char *, int); -int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *, int); -_DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int, int, int, int, int); -_DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int, int, int, int, int, int); -int __fastcall std::streambuf::sungetc(_DWORD *); -int __stdcall std::streambuf::overflow(int); -volatile signed __int32 **__thiscall std::streambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **, volatile signed __int32 **); -int __stdcall std::streambuf::pbackfail(int); -void *__thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3); -int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8); -int std::streambuf::underflow(); -// volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *@, std::locale *, const std::locale *); -void __fastcall std::streambuf::~streambuf(char *Block); -volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int); -_DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int, int, int, int, int); -_DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int, int, int, int, int, int); -void __thiscall std::wstreambuf::swap(int this, int); -int __stdcall std::wstreambuf::imbue(int); // weak -int __thiscall std::wstreambuf::sputc(_DWORD *this, int); -int __fastcall std::wstreambuf::uflow(_DWORD *); -int __fastcall std::wstreambuf::sbumpc(_DWORD *); -void *__thiscall std::wstreambuf::setbuf(void *this, int, int); -int __fastcall std::wstreambuf::snextc(_DWORD *); -int (*__fastcall std::wstreambuf::stossc(_DWORD *))(void); -int __thiscall std::wstreambuf::xsgetn(_DWORD *this, char *, int); -int __thiscall std::wstreambuf::xsputn(_DWORD *this, char *, int); -_DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int, int, int, int, int); -_DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int, int, int, int, int, int); -int __fastcall std::wstreambuf::sungetc(_DWORD *); -int __stdcall std::wstreambuf::overflow(int); -volatile signed __int32 **__thiscall std::wstreambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **, volatile signed __int32 **); -int __stdcall std::wstreambuf::pbackfail(int); -void *__thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3); -int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int); -int std::wstreambuf::underflow(); -// volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *@, std::locale *, const std::locale *); -void __fastcall std::wstreambuf::~wstreambuf(char *Block); -volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **, int); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **, int); -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); -void __fastcall std::messages_byname::~messages_byname(_DWORD *); -void __fastcall std::messages_byname::~messages_byname(_DWORD *); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **, int); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **, int); -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); -void __fastcall std::messages_byname::~messages_byname(_DWORD *); -void __fastcall std::messages_byname::~messages_byname(_DWORD *); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block); -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block); -void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block); -void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block); -// void __userpurge std::underflow_error::underflow_error(_DWORD *@, std::underflow_error *this, const char *); -void __thiscall std::underflow_error::underflow_error(_DWORD *this, int); -// void __userpurge std::underflow_error::underflow_error(_DWORD *@, std::underflow_error *this, const std::string *); -void __fastcall std::underflow_error::~underflow_error(_DWORD *); -void __cdecl std::underflow_error::~underflow_error(std::exception *); -int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *); -void __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(int); -void __thiscall std::__numpunct_cache::_M_cache(int this, int); -void __fastcall std::__numpunct_cache::~__numpunct_cache(void *); -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *); -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *); -void __thiscall std::__numpunct_cache::_M_cache(int this, int); -void __fastcall std::__numpunct_cache::~__numpunct_cache(void *); -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *); -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *); -// void __userpurge std::invalid_argument::invalid_argument(_DWORD *@, std::invalid_argument *this, const char *); -void __thiscall std::invalid_argument::invalid_argument(_DWORD *this, int); -// void __userpurge std::invalid_argument::invalid_argument(_DWORD *@, std::invalid_argument *this, const std::string *); -void __fastcall std::invalid_argument::~invalid_argument(_DWORD *); -void __cdecl std::invalid_argument::~invalid_argument(std::exception *); -void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block); -void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __thiscall std::__moneypunct_cache::_M_cache(int this, int); -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *); -void __thiscall std::__moneypunct_cache::_M_cache(int this, int); -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *); -void __thiscall std::__moneypunct_cache::_M_cache(int this, int); -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *); -void __thiscall std::__moneypunct_cache::_M_cache(int this, int); -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *); -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *); -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block); -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block); -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block); -void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *); -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block); -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block); -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block); -void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *); -void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *); -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block); -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block); -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block); -void __fastcall std::_V2::error_category::~error_category(void *Block); -void __cdecl std::_V2::error_category::~error_category(std::_V2::error_category *__hidden this); // idb -void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this); -char *__thiscall std::map>::operator[](_DWORD *this, int); -char *__thiscall std::map::operator[](_DWORD *this, int); -char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *); -char *__thiscall std::map>::operator[](_DWORD *this, int); -void **__thiscall std::map::operator[](void **this, int); -void **__thiscall std::map::operator[](void **this, int); -_DWORD *__thiscall std::map>>::operator[](_DWORD *this, _DWORD *); -void __thiscall std::pair>::pair(_DWORD *this, _DWORD *); -void __thiscall std::pair>::pair,true>(_DWORD *this, int); -void __fastcall std::pair>::~pair(int); -void __fastcall std::pair::~pair(void **); -int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, char *a4, int a5, int a6); -_WORD *__cdecl std::__pad>::_S_pad(_DWORD *, void *Src, _WORD *Size, _WORD *, int, int); -int __thiscall std::ctype::ctype(_DWORD *this, void **, char, int); -int __thiscall std::ctype::ctype(_DWORD *this, int, void **, char, int); -void __fastcall std::ctype::~ctype(void **Block); -void __fastcall std::ctype::~ctype(int); -int __fastcall std::ctype::_M_initialize_ctype(int); -int __thiscall std::ctype::ctype(_DWORD *this, char, int); -void __thiscall std::ctype::ctype(_DWORD *this, int); -void __fastcall std::ctype::~ctype(_DWORD *Block); -void __fastcall std::ctype::~ctype(_DWORD *); -int __fastcall std::deque>::back(_DWORD *); -int __fastcall std::deque>::pop_back(_DWORD *); -void __thiscall std::deque>::push_back(int this, int *); -int __fastcall std::deque>::pop_back(_DWORD *); -void __thiscall std::deque>::push_back(int this, int *); -void __thiscall std::deque::_M_push_back_aux(int this, int); -void __thiscall std::deque::push_back(_DWORD *this, int); -std::locale *std::locale::_S_initialize(); -std::locale *std::locale::_S_initialize_once(); -std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this); -// void __userpurge std::locale::_Impl::_M_init_extra(int@, std::locale::_Impl *this, std::locale::facet **); -// void __userpurge std::locale::_Impl::_M_init_extra(int@, std::locale::_Impl *this, int *, int **, const char *, const char *); -// void __userpurge std::locale::_Impl::_M_install_cache(int@, std::locale::_Impl *this, const std::locale::facet *, unsigned int); -// void __userpurge std::locale::_Impl::_M_install_facet(_DWORD *@, std::locale::_Impl *this, const std::locale::id *, const std::locale::facet *); -// void __userpurge std::locale::_Impl::_M_replace_facet(_DWORD *@, std::locale::_Impl *this, const std::locale::_Impl *, const std::locale::id *); -// int __userpurge std::locale::_Impl::_M_replace_category@(int result@, _DWORD *@, std::locale::_Impl *this, volatile signed __int32 **, const std::locale::id *const *); -// void __userpurge std::locale::_Impl::_Impl(_DWORD *@, std::locale::_Impl *this, const std::locale::_Impl *, unsigned int); -// void __userpurge std::locale::_Impl::_Impl(_DWORD *@, std::locale::_Impl *this, unsigned int); -void __fastcall std::locale::_Impl::~_Impl(_DWORD *); -int *const *std::locale::facet::_S_get_c_name(); -int std::locale::facet::_S_get_c_locale(); -int __cdecl std::locale::facet::_S_clone_c_locale(); -int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **); -int **std::locale::facet::_S_initialize_once(); -std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this); -void __fastcall std::locale::facet::~facet(void *Block); -void __cdecl std::locale::facet::~facet(std::locale::facet *__hidden this); // idb -std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **); -_DWORD *std::locale::classic(); -// std::locale *__userpurge std::locale::locale@(_DWORD *@, std::locale *this, std::locale::_Impl *); -// volatile signed __int32 *__userpurge std::locale::locale@(volatile signed __int32 **@, volatile signed __int32 **this, const std::locale *); -void __fastcall std::locale::locale(_DWORD *); -void __fastcall std::locale::~locale(_DWORD **); -volatile signed __int32 **__thiscall std::locale::operator=(volatile signed __int32 **this, volatile signed __int32 **); -char *__thiscall std::vector>::_M_realloc_insert const&>(void **this, char *a2, _DWORD *a3); -void __thiscall std::vector>::push_back(void **this, _DWORD *a2); -char *__thiscall std::vector>::_M_realloc_insert const&>(void **this, char *a2, _DWORD *a3); -char *__thiscall std::vector>::push_back(void **this, _DWORD *a2); -void __thiscall std::vector>::vector(_DWORD *this, _DWORD *); -void __fastcall std::vector>::~vector(void **); -char *__thiscall std::vector>::_M_realloc_insert const&>(void **this, char *a2, _DWORD *a3); -void __thiscall std::vector>::push_back(void **this, _DWORD *a2); -void __fastcall std::vector>::~vector(void **); -void __thiscall std::vector::_M_realloc_insert(struct _Unwind_Exception **this, void **, _DWORD *); -void __thiscall std::vector::push_back(int this, _DWORD *); -void __fastcall std::vector::~vector(void ***); -char *__thiscall std::vector::_M_realloc_insert(char **this, char *, int *); -char *__thiscall std::vector::push_back(int this, int *); -void __fastcall std::vector::~vector(void **); -_DWORD *__thiscall std::vector::emplace_back(char **this, _DWORD *a2); -void __thiscall std::vector::_M_realloc_insert(char **this, char *a2, int a3); -unsigned int __thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3); -void __thiscall std::vector::push_back(char **this, int a2); -void __fastcall std::vector::~vector(void ***); -char *__thiscall std::vector>::emplace_back>(void **this, _DWORD *a2); -char *__thiscall std::vector>::_M_realloc_insert>(void **this, char *a2, _DWORD *a3); -void __fastcall std::vector>::~vector(void **); -void __thiscall std::vector>>::emplace_back>>(char **this, _DWORD *); -char *__thiscall std::vector>>::_M_realloc_insert>>(char **this, char *a2, _DWORD *a3); -char *__thiscall std::vector>::_M_realloc_insert>(void **this, char *a2, _DWORD *a3); -void __fastcall std::vector>::~vector(void **); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int, int, int); -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -void __fastcall std::moneypunct::~moneypunct(_DWORD *); -void __thiscall std::string::_M_destroy(void **this, int); -void __fastcall std::string::_M_dispose(void **); -unsigned int **__thiscall std::string::_M_replace(unsigned int **this, size_t a2, size_t a3, char *Src, size_t a5); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t Size, char); -_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int, int); -_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int, int); -int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int, int); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int); -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int, int); -int __cdecl std::string::_S_copy_chars(_BYTE *, unsigned __int8 *Src, size_t Size); -void __fastcall std::string::shrink_to_fit(_DWORD *); -_DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t, int, size_t, char); -_BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t Size, char); -unsigned int __thiscall std::string::at(_DWORD *this, unsigned int); -_BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *); -char *__thiscall std::string::erase(int *this, char *); -_BYTE *__thiscall std::string::erase(int *this, _BYTE *a2, int a3); -int __thiscall std::string::erase(int *this, int); -_BYTE *__thiscall std::string::erase(int *this, _BYTE *a2, int a3); -int *__thiscall std::string::erase(int *this, unsigned int, unsigned int); -_DWORD *__thiscall std::string::append(_DWORD *this, char *Str); -_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size); -_DWORD *__thiscall std::string::append(_DWORD *this, int); -_DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, size_t a4); -_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size); -_DWORD *__thiscall std::string::append(_DWORD *this, size_t, char); -_DWORD *__thiscall std::string::assign(_DWORD *this, int); -unsigned int **__thiscall std::string::assign(unsigned int **this, char *Str); -unsigned int **__thiscall std::string::assign(unsigned int **this, char *a2, size_t a3); -void *__thiscall std::string::assign(void *this, int); -unsigned int **__thiscall std::string::assign(unsigned int **this, _DWORD *a2, unsigned int a3, size_t a4); -unsigned int **__thiscall std::string::assign(unsigned int **this, char *a2, size_t a3); -_DWORD *__thiscall std::string::assign(_DWORD *this, size_t, char); -size_t __thiscall std::string::insert(unsigned int **this, int a2, char *a3, size_t a4); -size_t __thiscall std::string::insert(_DWORD *this, int, char); -size_t __thiscall std::string::insert(_DWORD *this, int, size_t, char); -unsigned int **__thiscall std::string::insert(unsigned int **this, int a2, char *a3, size_t a4); -size_t __thiscall std::string::insert(_DWORD *this, int, char); -_DWORD *__thiscall std::string::insert(_DWORD *this, int, size_t, char); -unsigned int **__thiscall std::string::insert(unsigned int **this, unsigned int a2, char *Str); -unsigned int **__thiscall std::string::insert(unsigned int **this, unsigned int a2, char *a3, size_t a4); -unsigned int **__thiscall std::string::insert(unsigned int **this, unsigned int a2, int a3); -unsigned int **__thiscall std::string::insert(unsigned int **this, unsigned int a2, _DWORD *a3, char *a4, size_t a5); -_DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int, size_t, char); -unsigned int **__thiscall std::string::insert<__gnu_cxx::__normal_iterator>(unsigned int **this, int a2, char *a3, int a4); -_DWORD *__thiscall std::string::resize(int *this, _DWORD *); -_DWORD *__thiscall std::string::resize(int *this, _DWORD *, char); -int __cdecl std::string::_S_copy(_BYTE *, unsigned __int8 *Src, int Size); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, int a4); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *Str); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *Str); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, int a4); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, unsigned int a2, unsigned int a3, char *Str); -unsigned int **__thiscall std::string::replace(unsigned int **this, unsigned int a2, unsigned int a3, char *a4, size_t a5); -unsigned int **__thiscall std::string::replace(unsigned int **this, unsigned int a2, unsigned int a3, int a4); -unsigned int **__thiscall std::string::replace(unsigned int **this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, size_t a6); -_DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int, unsigned int, size_t, char); -void __thiscall std::string::reserve(_DWORD *this, unsigned int); -int __thiscall std::string::_M_erase(int *this, int, int); -_DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size); -void __thiscall std::string::_M_assign(int this, int); -void *__stdcall std::string::_M_create(unsigned int *, unsigned int); -int __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5); -_DWORD *__thiscall std::string::push_back(_DWORD *this, char); -_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, int, int); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int); -_BYTE *__thiscall std::string::basic_string(char *this, int); -_BYTE *__thiscall std::string::basic_string(char *this, int, int); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *, unsigned int, unsigned int, int); -_BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char, int); -_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(char *this, char *Src, int, int); -_BYTE *__thiscall std::string::basic_string(char *this, char *Src, int, int); -_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, int, int); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int); -_BYTE *__thiscall std::string::basic_string(char *this, int); -_BYTE *__thiscall std::string::basic_string(char *this, int, int); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *, unsigned int, unsigned int, int); -_BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char, int); -_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(char *this, char *Src, int, int); -_BYTE *__thiscall std::string::basic_string(char *this, char *Src, int, int); -void __fastcall std::string::~string(void **); -void __fastcall std::string::~string(void **); -_DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *); -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str); -void *__thiscall std::string::operator=(void *this, int); -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *a2, size_t a3); -_DWORD *__thiscall std::string::operator=(_DWORD *this, char); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, int); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *Src, size_t Size); -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char); -void __thiscall std::wstring::_M_destroy(void **this, int); -void __fastcall std::wstring::_M_dispose(void **); -unsigned int **__thiscall std::wstring::_M_replace(unsigned int **this, int a2, unsigned int a3, char *Src, unsigned int a5); -int __thiscall std::wstring::_M_construct(_DWORD *this, unsigned int, __int16); -_WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int, int); -_WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _WORD *Src, int, int); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int, int); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int, int); -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int); -int __cdecl std::wstring::_S_copy_chars(_WORD *, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *, unsigned __int16 *Src, size_t Size); -int __cdecl std::wstring::_S_copy_chars(_WORD *, unsigned __int16 *Src, size_t Size); -void __fastcall std::wstring::shrink_to_fit(_DWORD *); -_DWORD *__thiscall std::wstring::_M_replace_aux(_DWORD *this, int, int, unsigned int, __int16); -int __thiscall std::wstring::_M_construct_aux_2(_DWORD *this, unsigned int, __int16); -unsigned int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); -_WORD *__thiscall std::wstring::swap(_DWORD *this, _DWORD *); -char *__thiscall std::wstring::erase(int *this, char *); -_WORD *__thiscall std::wstring::erase(int *this, _WORD *, int); -int __thiscall std::wstring::erase(int *this, int); -_WORD *__thiscall std::wstring::erase(int *this, _WORD *, int); -int *__thiscall std::wstring::erase(int *this, unsigned int, unsigned int); -_DWORD *__thiscall std::wstring::append(_DWORD *this, wchar_t *String); -_DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int); -_DWORD *__thiscall std::wstring::append(_DWORD *this, int); -_DWORD *__thiscall std::wstring::append(_DWORD *this, _DWORD *, unsigned int, unsigned int); -_DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int); -_DWORD *__thiscall std::wstring::append(_DWORD *this, unsigned int, __int16); -_DWORD *__thiscall std::wstring::assign(_DWORD *this, _DWORD *); -unsigned int **__thiscall std::wstring::assign(unsigned int **this, wchar_t *String); -unsigned int **__thiscall std::wstring::assign(unsigned int **this, char *a2, int a3); -void *__thiscall std::wstring::assign(void *this, int); -unsigned int **__thiscall std::wstring::assign(unsigned int **this, _DWORD *a2, unsigned int a3, unsigned int a4); -unsigned int **__thiscall std::wstring::assign(unsigned int **this, char *a2, int a3); -_DWORD *__thiscall std::wstring::assign(_DWORD *this, unsigned int, __int16); -unsigned int __thiscall std::wstring::insert(unsigned int **this, int a2, char *a3, int a4); -int __thiscall std::wstring::insert(_DWORD *this, int, unsigned int, __int16); -int __thiscall std::wstring::insert(_DWORD *this, int, __int16); -unsigned int **__thiscall std::wstring::insert(unsigned int **this, int a2, char *a3, int a4); -_DWORD *__thiscall std::wstring::insert(_DWORD *this, int, unsigned int, __int16); -int __thiscall std::wstring::insert(_DWORD *this, int, __int16); -unsigned int **__thiscall std::wstring::insert(unsigned int **this, unsigned int a2, wchar_t *String); -unsigned int **__thiscall std::wstring::insert(unsigned int **this, unsigned int a2, char *a3, int a4); -unsigned int **__thiscall std::wstring::insert(unsigned int **this, unsigned int a2, int a3); -unsigned int **__thiscall std::wstring::insert(unsigned int **this, unsigned int a2, _DWORD *a3, unsigned int a4, unsigned int a5); -_DWORD *__thiscall std::wstring::insert(_DWORD *this, unsigned int, unsigned int, __int16); -unsigned int **__thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>(unsigned int **this, int a2, char *a3, int a4); -_DWORD *__thiscall std::wstring::resize(int *this, unsigned int); -_DWORD *__thiscall std::wstring::resize(int *this, unsigned int, __int16); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, int a4); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, wchar_t *String); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, wchar_t *String); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, int a4); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, unsigned int a2, unsigned int a3, wchar_t *String); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, unsigned int a2, unsigned int a3, char *a4, int a5); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, unsigned int a2, unsigned int a3, int a4); -unsigned int **__thiscall std::wstring::replace(unsigned int **this, unsigned int a2, unsigned int a3, _DWORD *a4, unsigned int a5, unsigned int a6); -_DWORD *__thiscall std::wstring::replace(_DWORD *this, unsigned int, unsigned int, unsigned int, __int16); -void __thiscall std::wstring::reserve(int this, unsigned int); -int __thiscall std::wstring::_M_erase(int *this, int, int); -_DWORD *__thiscall std::wstring::_M_append(_DWORD *this, _WORD *Src, int); -void __thiscall std::wstring::_M_assign(int this, int); -void *__stdcall std::wstring::_M_create(unsigned int *, unsigned int); -int __thiscall std::wstring::_M_mutate(int this, int a2, int a3, _WORD *a4, int a5); -int __cdecl std::wstring::_S_assign(_WORD *, int, __int16); -_DWORD *__thiscall std::wstring::push_back(_DWORD *this, __int16); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, unsigned int, unsigned int, int); -int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int, __int16, int); -_WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _WORD *Src, int, int); -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, unsigned int, int); -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *, unsigned int, unsigned int, int); -int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int, __int16, int); -_WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _WORD *Src, int, int); -void __fastcall std::wstring::~wstring(void **); -void __fastcall std::wstring::~wstring(void **); -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, int); -unsigned int **__thiscall std::wstring::operator=(unsigned int **this, wchar_t *String); -void *__thiscall std::wstring::operator=(void *this, int); -unsigned int **__thiscall std::wstring::operator=(unsigned int **this, char *a2, int a3); -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, __int16); -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String); -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, int); -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, _WORD *Src, unsigned int); -char *__thiscall std::wstring::operator+=(char *this, __int16 a2); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***, int); -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); -void __fastcall std::collate_byname::~collate_byname(_DWORD *); -void __fastcall std::collate_byname::~collate_byname(_DWORD *); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **, int); -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***, int); -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block); -void __fastcall std::collate_byname::~collate_byname(_DWORD *); -void __fastcall std::collate_byname::~collate_byname(_DWORD *); -unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *, int); -unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *, int); -int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int); -int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int); -_DWORD *__thiscall std::stringbuf::_M_stringbuf_init(_DWORD *this, int); -int __thiscall std::stringbuf::str(int this, int); -void __thiscall std::stringbuf::swap(volatile signed __int32 **this, _DWORD *a2); -_DWORD *__thiscall std::stringbuf::setbuf(int this, _DWORD *, int); -int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *, int, unsigned int); -_DWORD *__thiscall std::stringbuf::seekoff(_DWORD *this, _DWORD *, __int64, int, unsigned int); -_DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *, __int64, int, int, int); -int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int, int, __int64); -int __thiscall std::stringbuf::overflow(_DWORD *this, int); -int __thiscall std::stringbuf::pbackfail(int this, int); -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *); -std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **, int); -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int, int); -char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int); -int __fastcall std::stringbuf::basic_stringbuf(int); -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *); -std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **, int); -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int, int); -char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int); -int __fastcall std::stringbuf::basic_stringbuf(int); -void __fastcall std::stringbuf::~stringbuf(_DWORD *Block); -void __fastcall std::stringbuf::~stringbuf(int); -_DWORD *__thiscall std::stringbuf::operator=(_DWORD *this, int a2); -unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *, int); -unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *, int); -int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int); -int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int); -_DWORD *__thiscall std::wstringbuf::_M_stringbuf_init(_DWORD *this, int); -_DWORD *__thiscall std::wstringbuf::str(int this, int a2); -void __thiscall std::wstringbuf::swap(volatile signed __int32 **this, _DWORD *a2); -_DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *, int); -_DWORD *__thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); -_DWORD *__thiscall std::wstringbuf::seekoff(_DWORD *this, int, __int64, int, unsigned int); -_DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *, __int64, int, int, int); -int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int, int, __int64); -int __thiscall std::wstringbuf::overflow(_DWORD *this, unsigned __int16); -int __thiscall std::wstringbuf::pbackfail(int this, int); -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *); -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **, int); -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int, int); -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int); -int __fastcall std::wstringbuf::basic_stringbuf(int); -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *); -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **, int); -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int, int); -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int); -int __fastcall std::wstringbuf::basic_stringbuf(int); -void __fastcall std::wstringbuf::~wstringbuf(_DWORD *Block); -void __fastcall std::wstringbuf::~wstringbuf(int); -_DWORD *__thiscall std::wstringbuf::operator=(_DWORD *this, int a2); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **, int); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **, int); -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); -void __fastcall std::messages_byname::~messages_byname(_DWORD *); -void __fastcall std::messages_byname::~messages_byname(_DWORD *); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **, int); -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **, int); -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block); -void __fastcall std::messages_byname::~messages_byname(_DWORD *); -void __fastcall std::messages_byname::~messages_byname(_DWORD *); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **, int); -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block); -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block); -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **, int); -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, struct _Unwind_Exception **, int); -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block); -int __thiscall std::basic_stringstream,std::allocator>::str(int this, int); -void __thiscall std::basic_stringstream,std::allocator>::swap(volatile signed __int32 **this, _DWORD *a2); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int *); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int, int); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int); -void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *, _DWORD *); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *, int, int); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *, int); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *); -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *Block); -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int); -int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *); -_DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); -void __thiscall std::basic_stringstream,std::allocator>::swap(volatile signed __int32 **this, _DWORD *a2); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, _DWORD *); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int, int); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int); -void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *, _DWORD *); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *, int, int); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *, int); -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *); -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *Block); -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int); -int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *); -_DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=(_DWORD *this, _DWORD *); -int __thiscall std::istringstream::str(int this, int); -void __thiscall std::istringstream::swap(volatile signed __int32 **this, _DWORD *a2); -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *); -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int, int); -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int); -void __fastcall std::istringstream::basic_istringstream(int); -void __thiscall std::istringstream::basic_istringstream(int *this, int *, _DWORD *); -void __thiscall std::istringstream::basic_istringstream(int *this, int *, int, int); -void __thiscall std::istringstream::basic_istringstream(int *this, int *, int); -void __thiscall std::istringstream::basic_istringstream(int *this, int *); -void __fastcall std::istringstream::~istringstream(_DWORD *Block); -void __fastcall std::istringstream::~istringstream(int); -int __thiscall std::istringstream::~istringstream(int *this, int *); -_DWORD *__thiscall std::istringstream::operator=(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::wistringstream::str(int this, int a2); -void __thiscall std::wistringstream::swap(volatile signed __int32 **this, _DWORD *a2); -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, _DWORD *); -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int, int); -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int); -void __fastcall std::wistringstream::basic_istringstream(int); -void __thiscall std::wistringstream::basic_istringstream(int *this, int *, _DWORD *); -void __thiscall std::wistringstream::basic_istringstream(int *this, int *, int, int); -void __thiscall std::wistringstream::basic_istringstream(int *this, int *, int); -void __thiscall std::wistringstream::basic_istringstream(int *this, int *); -void __fastcall std::wistringstream::~wistringstream(_DWORD *Block); -void __fastcall std::wistringstream::~wistringstream(int); -int __thiscall std::wistringstream::~wistringstream(int *this, int *); -_DWORD *__thiscall std::wistringstream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::ostringstream::str(int this, int); -void __thiscall std::ostringstream::swap(volatile signed __int32 **this, _DWORD *a2); -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *); -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int, int); -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int); -void __fastcall std::ostringstream::basic_ostringstream(int); -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *, _DWORD *); -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *, int, int); -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *, int); -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *); -void __fastcall std::ostringstream::~ostringstream(_DWORD *Block); -void __fastcall std::ostringstream::~ostringstream(int); -int __thiscall std::ostringstream::~ostringstream(int *this, int *); -_DWORD *__thiscall std::ostringstream::operator=(_DWORD *this, _DWORD *); -_DWORD *__thiscall std::wostringstream::str(int this, int a2); -void __thiscall std::wostringstream::swap(volatile signed __int32 **this, _DWORD *a2); -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, _DWORD *); -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int, int); -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int); -void __fastcall std::wostringstream::basic_ostringstream(int); -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *, _DWORD *); -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *, int, int); -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *, int); -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *); -void __fastcall std::wostringstream::~wostringstream(_DWORD *Block); -void __fastcall std::wostringstream::~wostringstream(int); -int __thiscall std::wostringstream::~wostringstream(int *this, int *); -_DWORD *__thiscall std::wostringstream::operator=(_DWORD *this, _DWORD *); -int __thiscall std::collate::collate(_DWORD *this, char, int); -void __thiscall std::collate::collate(_DWORD *this, int); -int __thiscall std::collate::collate(_DWORD *this, char, int); -void __thiscall std::collate::collate(_DWORD *this, int); -void __fastcall std::collate::~collate(_DWORD *Block); -void __fastcall std::collate::~collate(_DWORD *); -void __fastcall std::collate::~collate(_DWORD *); -int __thiscall std::collate::collate(_DWORD *this, char, int); -void __thiscall std::collate::collate(_DWORD *this, int); -int __thiscall std::collate::collate(_DWORD *this, char, int); -void __thiscall std::collate::collate(_DWORD *this, int); -void __fastcall std::collate::~collate(_DWORD *Block); -void __fastcall std::collate::~collate(_DWORD *); -void __fastcall std::collate::~collate(_DWORD *); -void __thiscall std::messages::messages(_DWORD *this, int, int, int); -void __thiscall std::messages::messages(_DWORD *this, int); -void __thiscall std::messages::messages(_DWORD *this, int, int, int); -void __thiscall std::messages::messages(_DWORD *this, int); -void __fastcall std::messages::~messages(_DWORD *Block); -void __fastcall std::messages::~messages(_DWORD *); -void __fastcall std::messages::~messages(_DWORD *); -void __thiscall std::messages::messages(_DWORD *this, int, int, int); -void __thiscall std::messages::messages(_DWORD *this, int); -void __thiscall std::messages::messages(_DWORD *this, int, int, int); -void __thiscall std::messages::messages(_DWORD *this, int); -void __fastcall std::messages::~messages(_DWORD *Block); -void __fastcall std::messages::~messages(_DWORD *); -void __fastcall std::messages::~messages(_DWORD *); -_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int); -void __fastcall std::numpunct::~numpunct(_DWORD *); -void __fastcall std::numpunct::~numpunct(_DWORD *); -int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int); -void __fastcall std::numpunct::~numpunct(_DWORD *); -void __fastcall std::numpunct::~numpunct(_DWORD *); -void __fastcall std::time_get>::~time_get(_DWORD *Block); -void __fastcall std::time_get>::~time_get(_DWORD *Block); -void __fastcall std::money_get>::~money_get(_DWORD *Block); -void __fastcall std::money_get>::~money_get(_DWORD *Block); -void __fastcall std::money_put>::~money_put(_DWORD *Block); -void __fastcall std::money_put>::~money_put(_DWORD *Block); -void __fastcall std::codecvt::~codecvt(_DWORD *Block); -void __fastcall std::codecvt::~codecvt(_DWORD *Block); -void __fastcall std::codecvt::~codecvt(_DWORD *Block); -void __fastcall std::codecvt::~codecvt(_DWORD *Block); -int __thiscall std::codecvt::codecvt(_DWORD *this, char, int); -void __thiscall std::codecvt::codecvt(_DWORD *this, int); -void __fastcall std::codecvt::~codecvt(_DWORD *); -void __fastcall std::codecvt::~codecvt(_DWORD *); -int __thiscall std::codecvt::codecvt(_DWORD *this, char, int); -void __thiscall std::codecvt::codecvt(_DWORD *this, int); -void __fastcall std::codecvt::~codecvt(_DWORD *); -void __fastcall std::codecvt::~codecvt(_DWORD *); -int __thiscall std::collate::collate(_DWORD *this, char, int); -void __thiscall std::collate::collate(_DWORD *this, int); -int __thiscall std::collate::collate(_DWORD *this, char, int); -void __thiscall std::collate::collate(_DWORD *this, int); -void __fastcall std::collate::~collate(_DWORD *Block); -void __fastcall std::collate::~collate(_DWORD *); -void __fastcall std::collate::~collate(_DWORD *); -int __thiscall std::collate::collate(_DWORD *this, char, int); -void __thiscall std::collate::collate(_DWORD *this, int); -int __thiscall std::collate::collate(_DWORD *this, char, int); -void __thiscall std::collate::collate(_DWORD *this, int); -void __fastcall std::collate::~collate(_DWORD *Block); -void __fastcall std::collate::~collate(_DWORD *); -void __fastcall std::collate::~collate(_DWORD *); -void __fastcall std::num_get>::~num_get(_DWORD *Block); -void __fastcall std::num_get>::~num_get(_DWORD *Block); -void __fastcall std::num_put>::~num_put(_DWORD *Block); -void __fastcall std::num_put>::~num_put(_DWORD *Block); -char *__thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique(_DWORD *this, int); -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node(_DWORD *this, int, _DWORD *, _DWORD *); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int); -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find(_DWORD *this, int); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node(_DWORD *this, int, _DWORD *, _DWORD *); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>(_DWORD *this, _DWORD *); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int); -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int); -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int); -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int); -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int); -_DWORD *__thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos(_DWORD *this, _DWORD *a2); -_DWORD *__thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int *a3); -void __fastcall std::bad_cast::~bad_cast(_DWORD *); -void __cdecl std::bad_cast::~bad_cast(std::exception *); -// int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, unsigned int this, char a3, bool a4); -int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this); -void __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int); -_DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int, int); -void __fastcall std::ios_base::_M_dispose_callbacks(int); -void std::ios_base::Init::Init(); -void std::ios_base::Init::Init(); -void __cdecl std::ios_base::Init::~Init(); -volatile signed __int32 **__thiscall std::ios_base::imbue(volatile signed __int32 **ecx0, volatile signed __int32 **this, volatile signed __int32 **); -void __fastcall std::ios_base::_M_init(int); -// volatile signed __int32 **__userpurge std::ios_base::_M_move@(int@, std::ios_base *this, std::ios_base *); -// void __userpurge std::ios_base::_M_swap(std::ios_base **a1@, std::ios_base *this, std::ios_base *a3); -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *, int *); -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int); -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int, int *); -void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *Block); -// void __userpurge std::ios_base::failure::failure(_DWORD *@, std::ios_base::failure *this, const std::string *); -void __fastcall std::ios_base::failure::~failure(_DWORD *); -void __cdecl std::ios_base::failure::~failure(std::ios_base::failure *__hidden this); // idb -void __fastcall std::ios_base::ios_base(_DWORD *); -void __fastcall std::ios_base::~ios_base(int); -void __fastcall std::ios_base::~ios_base(int); -void __thiscall std::messages::messages(_DWORD *this, int, int, int); -void __thiscall std::messages::messages(_DWORD *this, int); -void __thiscall std::messages::messages(_DWORD *this, int, int, int); -void __thiscall std::messages::messages(_DWORD *this, int); -void __fastcall std::messages::~messages(_DWORD *Block); -void __fastcall std::messages::~messages(_DWORD *); -void __fastcall std::messages::~messages(_DWORD *); -void __thiscall std::messages::messages(_DWORD *this, int, int, int); -void __thiscall std::messages::messages(_DWORD *this, int); -void __thiscall std::messages::messages(_DWORD *this, int, int, int); -void __thiscall std::messages::messages(_DWORD *this, int); -void __fastcall std::messages::~messages(_DWORD *Block); -void __fastcall std::messages::~messages(_DWORD *); -void __fastcall std::messages::~messages(_DWORD *); -_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int); -void __fastcall std::numpunct::~numpunct(_DWORD *); -void __fastcall std::numpunct::~numpunct(_DWORD *); -int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int, int); -void __thiscall std::numpunct::numpunct(_DWORD *this, int); -void __fastcall std::numpunct::~numpunct(_DWORD *); -void __fastcall std::numpunct::~numpunct(_DWORD *); -void __fastcall std::time_get>::~time_get(_DWORD *Block); -void __fastcall std::time_get>::~time_get(_DWORD *Block); -void __fastcall std::time_put>::~time_put(_DWORD *Block); -void __fastcall std::time_put>::~time_put(_DWORD *Block); -void __fastcall std::bad_alloc::~bad_alloc(_DWORD *); -void __cdecl std::bad_alloc::~bad_alloc(std::exception *); -int __thiscall std::ios::exceptions(_DWORD *this, int); -int __thiscall std::ios::_M_setstate(_DWORD *this, int); -void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int); -int __thiscall std::ios::fill(int this, char); -BOOL __thiscall std::ios::init(int this, int); -int __thiscall std::ios::move(int this, std::ios_base *); -int __thiscall std::ios::move(int this, std::ios_base *); -void __thiscall std::ios::swap(int this, std::ios_base *); -int __thiscall std::ios::clear(_DWORD *this, int); -volatile signed __int32 **__thiscall std::ios::imbue(volatile signed __int32 **this, volatile signed __int32 **, volatile signed __int32 **); -int __thiscall std::ios::rdbuf(_DWORD *this, int); -int __thiscall std::ios::copyfmt(int this, _DWORD *); -int __thiscall std::ios::setstate(_DWORD *this, int); -void __thiscall std::ios::basic_ios(int this, int); -int __fastcall std::ios::basic_ios(int); -void __thiscall std::ios::basic_ios(int this, int); -int __fastcall std::ios::basic_ios(int); -void __fastcall std::ios::~ios(_DWORD *Block); -int __thiscall std::wios::exceptions(_DWORD *this, int); -int __thiscall std::wios::_M_setstate(_DWORD *this, int); -void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int); -int __thiscall std::wios::fill(int this, __int16); -BOOL __thiscall std::wios::init(int this, int); -int __thiscall std::wios::move(int this, std::ios_base *); -int __thiscall std::wios::move(int this, std::ios_base *); -void __thiscall std::wios::swap(int this, std::ios_base *); -int __thiscall std::wios::clear(_DWORD *this, int); -volatile signed __int32 **__thiscall std::wios::imbue(volatile signed __int32 **this, volatile signed __int32 **, volatile signed __int32 **); -int __thiscall std::wios::rdbuf(_DWORD *this, int); -int __thiscall std::wios::copyfmt(int this, _DWORD *); -int __thiscall std::wios::setstate(_DWORD *this, int); -void __thiscall std::wios::basic_ios(int this, int); -int __fastcall std::wios::basic_ios(int); -void __thiscall std::wios::basic_ios(int this, int); -int __fastcall std::wios::basic_ios(int); -void __fastcall std::wios::~wios(_DWORD *Block); -void __fastcall std::exception::~exception(void *Block); -void __cdecl std::exception::~exception(std::exception *__hidden this); // idb -void __fastcall std::money_get>::~money_get(_DWORD *Block); -void __fastcall std::money_get>::~money_get(_DWORD *Block); -void __fastcall std::money_put>::~money_put(_DWORD *Block); -void __fastcall std::money_put>::~money_put(_DWORD *Block); -void __fastcall std::type_info::~type_info(void *Block); -void __cdecl std::type_info::~type_info(std::type_info *__hidden this); // idb -void __noreturn std::unexpected(void); // idb -_BYTE *__cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5); -_BYTE *__cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, unsigned int a3, int a4, __int16 a5, char a6); -int __cdecl std::__int_to_char(_WORD *, unsigned int, int, __int16, char); -int __cdecl std::__int_to_char(_WORD *, unsigned int, unsigned int, int, __int16, char); -void (*std::get_terminate(void))(void); -_BYTE *__cdecl std::__add_grouping(_BYTE *, char, char *, int, _BYTE *, _BYTE *); -_WORD *__cdecl std::__add_grouping(_WORD *, __int16, char *, int, char *, char *); -void __cdecl std::__convert_to_v(unsigned __int8 *, double *, _DWORD *); -void __cdecl std::__convert_to_v(char *String, long double *, _DWORD *); -void __cdecl std::__convert_to_v(unsigned __int8 *, float *, _DWORD *); -void (*std::get_unexpected(void))(void); -int std::get_new_handler(void); -int std::__convert_from_v(int *const *, char *, int, char *, ...); -std::ostream::sentry *__cdecl std::__ostream_insert>(std::ostream::sentry *, int, int); -int *__cdecl std::__ostream_insert>(int *, int, int); -int __cdecl std::__copy_streambufs>(_DWORD *, _DWORD *); -int __cdecl std::__copy_streambufs>(_DWORD *, _DWORD *); -int __cdecl std::__verify_grouping(char *, unsigned int, int); -int __cdecl std::__verify_grouping(char *, unsigned int, const char **); -void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden); -int __cdecl std::_Rb_tree_decrement(_DWORD *); -int __cdecl std::_Rb_tree_increment(int); -int __cdecl std::_Rb_tree_increment(int); -bool std::uncaught_exception(void); -int std::uncaught_exceptions(void); -int __cdecl std::_Rb_tree_black_count(_DWORD *, _DWORD *); -int __cdecl std::_Rb_tree_rotate_left(int, _DWORD *); -int __cdecl std::_Rb_tree_rotate_right(int, _DWORD *); -int __cdecl std::__copy_streambufs_eof>(_DWORD *, _DWORD *, _BYTE *); -int __cdecl std::__copy_streambufs_eof>(_DWORD *, _DWORD *, _BYTE *); -void __cdecl std::__destroy_ios_failure(void (__cdecl ***a1)(std::ios_base::failure *__hidden this)); -int __cdecl std::__verify_grouping_impl(const char *, unsigned int, const char *, unsigned int); -void __cdecl std::__construct_ios_failure(_DWORD *, char *); -bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *); -void __noreturn std::__throw_out_of_range_fmt(char *Str, ...); -int *__cdecl std::_Rb_tree_rebalance_for_erase(int *, _DWORD *); -_DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char, _DWORD *, _DWORD *, _DWORD *); -_DWORD *__cdecl std::ws>(_DWORD *); -_DWORD *__cdecl std::ws>(_DWORD *); -std::ios_base *__cdecl std::hex(std::ios_base *); -_DWORD *__cdecl std::endl>(std::ostream::sentry *); -_DWORD *__cdecl std::endl>(int *); -std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *); -int *__cdecl std::ends>(int *); -std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *, _DWORD *); -std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *a1, _DWORD *a2, char a3); -_DWORD *__cdecl std::getline,std::allocator>(_DWORD *, _DWORD *, __int16); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -int __cdecl std::has_facet>>(int); -void __noreturn std::terminate(void); // idb -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -void *__cdecl std::use_facet>>(int); -bool __cdecl std::operator==(int, int); -bool __cdecl std::operator==(int, char *); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *, char *Str); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *, char *Str); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *, char *Str); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *, char); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *, char); -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *, char); -_DWORD *__cdecl std::operator<<>(_DWORD *, int); -_DWORD *__cdecl std::operator<<>(_DWORD *, char); -std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *, int *); -int *__cdecl std::operator<<>(int *, wchar_t *String); -int *__cdecl std::operator<<>(int *, char *Str); -int *__cdecl std::operator<<>(int *, __int16); -_DWORD *__cdecl std::operator<<>(_DWORD *, int); -_DWORD *__cdecl std::operator<<>(_DWORD *, __int16); -int *__cdecl std::operator<<>(int *, char); -unsigned int __cdecl std::operator<(int, int); -int __cdecl std::operator+(int, char *Str, int); // idb -_DWORD *__cdecl std::operator+(_DWORD *, int, int); -int __cdecl std::operator+(int, char, int); -int *__cdecl std::operator+(int *, char *Str, std::string *); -int *__cdecl std::operator+(int *, _DWORD *, std::string *); -int *__cdecl std::operator+(int *, char, std::string *); -int __cdecl std::operator+(int, wchar_t *String, int); // idb -_DWORD *__cdecl std::operator+(_DWORD *, int, int); -int __cdecl std::operator+(int, __int16, int); -int *__cdecl std::operator+(int *, wchar_t *String, _DWORD *); -int *__cdecl std::operator+(int *, _DWORD *, _DWORD *); -int *__cdecl std::operator+(int *, __int16, _DWORD *); -std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *, char *); -std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *, _BYTE *); -_DWORD *__cdecl std::operator>>>(_DWORD *, int); -_DWORD *__cdecl std::operator>>>(_DWORD *, char); -std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *, _DWORD *); -int *__cdecl std::operator>>>(int *, _WORD *); -_DWORD *__cdecl std::operator>>>(_DWORD *, _WORD *); -_DWORD *__cdecl std::operator>>>(_DWORD *, int); -_DWORD *__cdecl std::operator>>>(_DWORD *, __int16); -void __fastcall `non-virtual thunk to'std::iostream::~iostream(int); -void __fastcall `non-virtual thunk to'std::fstream::~fstream(int); -void __fastcall `non-virtual thunk to'std::fstream::~fstream(int); -void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int); -void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int); -void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int); -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int); -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int); -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int); -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int); -void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *); -void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *); -void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *); -void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *); -void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *); -void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *); -void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *); -void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *); -void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *); -void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *); -void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *); -void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *); -void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *); -void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *); -void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *); -void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *); -void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *); -void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *); -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *); -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *); -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *); -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *); -void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *); -void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *); -void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *); -void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *); -void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *); -void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *); -void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *); -void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *); -int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *); -int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *); -void __cdecl operator delete[](void *Block); -void __cdecl operator delete(void *Block); -void __cdecl operator delete(void *Block); -_DWORD __cdecl operator new[](unsigned int); // idb -int __cdecl operator new[](unsigned int); -void *__cdecl operator new(size_t); -_DWORD *__cxa_allocate_dependent_exception(); -void *__cdecl __cxa_allocate_exception(size_t thrown_size); -void *__cdecl __cxa_begin_catch(void *); -void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *); -void __cdecl __noreturn __cxa_call_unexpected(void *); -struct type_info *__cxa_current_exception_type(void); -void __noreturn __cxa_deleted_virtual(void); -void __cxa_end_catch(void); -void __cdecl __cxa_free_dependent_exception(char *Block); -void __cdecl __cxa_free_exception(void *); -_DWORD *__cxa_get_globals(); -_DWORD *__cxa_get_globals_fast(); -void __cdecl __cxa_guard_abort(__guard *); -int __cdecl __cxa_guard_acquire(__guard *); -void __cdecl __cxa_guard_release(__guard *); -int __cdecl __cxa_init_primary_exception(int, int, int); -void __noreturn __cxa_pure_virtual(void); -void __noreturn __cxa_rethrow(void); -void __cdecl __noreturn __cxa_throw(void *, struct type_info *lptinfo, void (__cdecl *)(void *)); -void *__cdecl __dynamic_cast(const void *lpsrc, const struct __class_type_info *lpstype, const struct __class_type_info *lpdtype, ptrdiff_t s2d); -int __cdecl __gxx_personality_sj0(int, int, __int64, _Unwind_Exception *v, struct _Unwind_Context *lpuctx); -void __tcf_0_1(void); // idb -void __tcf_0_2(void); // idb -void __tcf_0_3(void); // idb -void __cdecl __tcf_0_4(std::_V2::error_category *); -void __tcf_0_5(void); // idb -void __tcf_1_3(void); // idb -int __cdecl main(int argc, const char **argv, const char **envp); -int _GLOBAL__sub_I__Z5UsageiPPKc(); -int _GLOBAL__sub_I__ZN4WXSS11RemoveQuoteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(); -int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib6Parser5ParseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_RS7_S9_(); -int _GLOBAL__sub_I__ZN4WXSS9Tokenizer2TTE(); -int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib12TransitTable10GetTopTypeEv(); -void __noreturn __cxxabiv1::throw_recursive_init_exception(void); // idb -void __noreturn std::__throw_bad_exception(void); // idb -void __noreturn std::__throw_bad_alloc(void); // idb -void __noreturn std::__throw_bad_cast(void); // idb -void __noreturn std::__throw_bad_typeid(void); // idb -void __cdecl __noreturn std::__throw_logic_error(std::logic_error *); // idb -void __cdecl __noreturn std::__throw_domain_error(std::domain_error *); // idb -void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *); // idb -void __cdecl __noreturn std::__throw_length_error(std::length_error *); // idb -void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *); // idb -void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *); // idb -void __cdecl __noreturn std::__throw_range_error(std::range_error *); // idb -void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *); // idb -void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *); // idb -void __cdecl __noreturn d_type_cold(int, int, int, int, int, int, int, int, int, int, int); -int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv(); -void __noreturn __cxa_bad_cast(void); -void __noreturn __cxa_bad_typeid(void); -void __noreturn __cxa_throw_bad_array_new_length(void); -void __cdecl __noreturn std::__throw_ios_failure(char *); -void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *, std::runtime_error *); // idb -void __cdecl __noreturn std::__throw_system_error(int); // idb -int _GLOBAL__sub_I__ZSt20__throw_system_errori(); -int __cdecl ____mb_cur_max_func(); -unsigned int __cdecl ____lc_codepage_func(); -// int __stdcall _IAT_start__(_DWORD); weak - -//------------------------------------------------------------------------- -// Data declarations - -int __CTOR_LIST__[] = { -1 }; // weak -DWORD _data_start__ = 10u; // idb -int WXML::RPX::acceptNum(char const*,int &)::canAccept[266] = -{ - 65536, - 1, - 0, - 16777472, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 0, - 5305940, - 5305948, - 5305859, - 5305866, - 5305877, - 5305896, - 5305957, - 5305967, - 5305982, - 5305994, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // idb -int WXML::RPX::acceptStr(char const*,int &)::canAccept[266] = -{ - 0, - 16777472, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 0, - 5305940, - 5305948, - 5305859, - 5305866, - 5305877, - 5305896, - 5305957, - 5305967, - 5305982, - 5305994, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // idb -int WXML::RPX::acceptID(char const*,int &)::canAccept[266] = -{ - 1210319104, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 0, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 0, - -162267136, - -161742768, - -167575472, - -167116720, - -166395824, - -165150640, - -161152944, - -160497584, - -159514544, - -158728112, - 80, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // idb -char *WXSS::Tokenizer::DIRECTIVES = "@import"; // idb -int *data_1 = &dword_505ACC; // weak -int _CRT_MT = 2; // weak -int once_0 = 0; // weak -int dword_50B0F8 = -1; // weak -int use_fc_key = -1; // weak -int once_0_0 = 0; // weak -int dword_50B104 = -1; // weak -int fpi_0[6] = { 53, -1074, 971, 1, 0, 14 }; // weak -int fpi0_0[6] = { 24, -149, 104, 1, 0, 14 }; // weak -int _MINGW_INSTALL_DEBUG_MATHERR = -1; // weak -int fpi_0_0[6] = { 64, -16445, 16320, 1, 0, 14 }; // weak -void *pmem_next = &private_mem; // weak -FILE *(__cdecl *___acrt_iob_func)(unsigned int Ix) = &__acrt_iob_func; -int (__cdecl *_rand_s)(int) = &init_rand_s; // weak -__guard `guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex = 0; // idb -__guard `guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec = 0; // idb -__guard `guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex = 0; // idb -__guard `guard variable for'WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret = 0; // idb -__guard `guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; // idb -__guard `guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; // idb -void (*__cxxabiv1::__terminate_handler)(void) = &__gnu_cxx::__verbose_terminate_handler; // idb -void (*__cxxabiv1::__unexpected_handler)(void) = &std::terminate; // idb -_DWORD `anonymous namespace'::fake_mutex[4] = { 0, 0, 0, 0 }; // weak -_DWORD `anonymous namespace'::messages_c[4] = { 0, 0, 0, 0 }; // weak -_DWORD `anonymous namespace'::messages_w[4] = { 0, 0, 0, 0 }; // weak -_UNKNOWN `anonymous namespace'::numpunct_c; // weak -int dword_50B324 = 0; // weak -int dword_50B328 = 0; // weak -_UNKNOWN `anonymous namespace'::numpunct_w; // weak -int dword_50B330 = 0; // weak -int dword_50B334 = 0; // weak -_UNKNOWN `anonymous namespace'::time_get_c; // weak -int dword_50B33C = 0; // weak -_UNKNOWN `anonymous namespace'::time_get_w; // weak -int dword_50B344 = 0; // weak -_UNKNOWN `anonymous namespace'::time_put_c; // weak -int dword_50B34C = 0; // weak -_UNKNOWN `anonymous namespace'::time_put_w; // weak -int dword_50B354 = 0; // weak -_UNKNOWN `anonymous namespace'::codecvt_c16; // weak -int dword_50B35C = 0; // weak -_UNKNOWN `anonymous namespace'::codecvt_c32; // weak -int dword_50B364 = 0; // weak -_UNKNOWN `anonymous namespace'::money_get_c; // weak -int dword_50B36C = 0; // weak -_UNKNOWN `anonymous namespace'::money_get_w; // weak -int dword_50B374 = 0; // weak -_UNKNOWN `anonymous namespace'::money_put_c; // weak -int dword_50B37C = 0; // weak -_UNKNOWN `anonymous namespace'::money_put_w; // weak -int dword_50B384 = 0; // weak -_DWORD `anonymous namespace'::timepunct_c[5] = { 0, 0, 0, 0, 0 }; // weak -_DWORD `anonymous namespace'::timepunct_w[5] = { 0, 0, 0, 0, 0 }; // weak -_DWORD `anonymous namespace'::c_locale_impl[5] = { 0, 0, 0, 0, 0 }; // weak -_UNKNOWN `anonymous namespace'::moneypunct_cf; // weak -int dword_50B3CC = 0; // weak -int dword_50B3D0 = 0; // weak -_UNKNOWN `anonymous namespace'::moneypunct_ct; // weak -int dword_50B3D8 = 0; // weak -int dword_50B3DC = 0; // weak -_UNKNOWN `anonymous namespace'::moneypunct_wf; // weak -int dword_50B3E4 = 0; // weak -int dword_50B3E8 = 0; // weak -_UNKNOWN `anonymous namespace'::moneypunct_wt; // weak -int dword_50B3F0 = 0; // weak -int dword_50B3F4 = 0; // weak -_UNKNOWN `anonymous namespace'::codecvt_c16_c8; // weak -int dword_50B3FC = 0; // weak -_UNKNOWN `anonymous namespace'::codecvt_c32_c8; // weak -int dword_50B404 = 0; // weak -_DWORD `anonymous namespace'::emergency_pool[2] = { 0, 0 }; // weak -int dword_50B410 = 0; // weak -void *Block = NULL; // idb -int dword_50B418 = 0; // weak -int `anonymous namespace'::numpunct_cache_c = 0; // weak -int dword_50B424 = 0; // weak -int dword_50B428 = 0; // weak -int dword_50B42C = 0; // weak -char byte_50B430 = '\0'; // weak -int dword_50B434 = 0; // weak -int dword_50B438 = 0; // weak -int dword_50B43C = 0; // weak -int dword_50B440 = 0; // weak -__int16 word_50B444 = 0; // weak -char byte_50B484 = '\0'; // weak -int `anonymous namespace'::numpunct_cache_w = 0; // weak -int dword_50B4A4 = 0; // weak -int dword_50B4A8 = 0; // weak -int dword_50B4AC = 0; // weak -char byte_50B4B0 = '\0'; // weak -int dword_50B4B4 = 0; // weak -int dword_50B4B8 = 0; // weak -int dword_50B4BC = 0; // weak -int dword_50B4C0 = 0; // weak -int dword_50B4C4 = 0; // weak -char byte_50B544 = '\0'; // weak -int `anonymous namespace'::timepunct_cache_c = 0; // weak -int dword_50B564 = 0; // weak -int dword_50B568 = 0; // weak -int dword_50B56C = 0; // weak -int dword_50B570 = 0; // weak -int dword_50B574 = 0; // weak -int dword_50B578 = 0; // weak -int dword_50B57C = 0; // weak -int dword_50B580 = 0; // weak -int dword_50B584 = 0; // weak -int dword_50B588 = 0; // weak -int dword_50B58C = 0; // weak -int dword_50B590 = 0; // weak -int dword_50B594 = 0; // weak -int dword_50B598 = 0; // weak -int dword_50B59C = 0; // weak -int dword_50B5A0 = 0; // weak -int dword_50B5A4 = 0; // weak -int dword_50B5A8 = 0; // weak -int dword_50B5AC = 0; // weak -int dword_50B5B0 = 0; // weak -int dword_50B5B4 = 0; // weak -int dword_50B5B8 = 0; // weak -int dword_50B5BC = 0; // weak -int dword_50B5C0 = 0; // weak -int dword_50B5C4 = 0; // weak -int dword_50B5C8 = 0; // weak -int dword_50B5CC = 0; // weak -int dword_50B5D0 = 0; // weak -int dword_50B5D4 = 0; // weak -int dword_50B5D8 = 0; // weak -int dword_50B5DC = 0; // weak -int dword_50B5E0 = 0; // weak -int dword_50B5E4 = 0; // weak -int dword_50B5E8 = 0; // weak -int dword_50B5EC = 0; // weak -int dword_50B5F0 = 0; // weak -int dword_50B5F4 = 0; // weak -int dword_50B5F8 = 0; // weak -int dword_50B5FC = 0; // weak -int dword_50B600 = 0; // weak -int dword_50B604 = 0; // weak -int dword_50B608 = 0; // weak -int dword_50B60C = 0; // weak -int dword_50B610 = 0; // weak -int dword_50B614 = 0; // weak -int dword_50B618 = 0; // weak -int dword_50B61C = 0; // weak -int dword_50B620 = 0; // weak -char byte_50B624 = '\0'; // weak -int `anonymous namespace'::timepunct_cache_w = 0; // weak -int dword_50B644 = 0; // weak -int dword_50B648 = 0; // weak -int dword_50B64C = 0; // weak -int dword_50B650 = 0; // weak -int dword_50B654 = 0; // weak -int dword_50B658 = 0; // weak -int dword_50B65C = 0; // weak -int dword_50B660 = 0; // weak -int dword_50B664 = 0; // weak -int dword_50B668 = 0; // weak -int dword_50B66C = 0; // weak -int dword_50B670 = 0; // weak -int dword_50B674 = 0; // weak -int dword_50B678 = 0; // weak -int dword_50B67C = 0; // weak -int dword_50B680 = 0; // weak -int dword_50B684 = 0; // weak -int dword_50B688 = 0; // weak -int dword_50B68C = 0; // weak -int dword_50B690 = 0; // weak -int dword_50B694 = 0; // weak -int dword_50B698 = 0; // weak -int dword_50B69C = 0; // weak -int dword_50B6A0 = 0; // weak -int dword_50B6A4 = 0; // weak -int dword_50B6A8 = 0; // weak -int dword_50B6AC = 0; // weak -int dword_50B6B0 = 0; // weak -int dword_50B6B4 = 0; // weak -int dword_50B6B8 = 0; // weak -int dword_50B6BC = 0; // weak -int dword_50B6C0 = 0; // weak -int dword_50B6C4 = 0; // weak -int dword_50B6C8 = 0; // weak -int dword_50B6CC = 0; // weak -int dword_50B6D0 = 0; // weak -int dword_50B6D4 = 0; // weak -int dword_50B6D8 = 0; // weak -int dword_50B6DC = 0; // weak -int dword_50B6E0 = 0; // weak -int dword_50B6E4 = 0; // weak -int dword_50B6E8 = 0; // weak -int dword_50B6EC = 0; // weak -int dword_50B6F0 = 0; // weak -int dword_50B6F4 = 0; // weak -int dword_50B6F8 = 0; // weak -int dword_50B6FC = 0; // weak -int dword_50B700 = 0; // weak -char byte_50B704 = '\0'; // weak -int `anonymous namespace'::moneypunct_cache_cf = 0; // weak -int dword_50B724 = 0; // weak -int dword_50B728 = 0; // weak -int dword_50B72C = 0; // weak -__int16 word_50B730 = 0; // weak -char byte_50B732 = '\0'; // weak -int dword_50B734 = 0; // weak -int dword_50B738 = 0; // weak -int dword_50B73C = 0; // weak -int dword_50B740 = 0; // weak -int dword_50B744 = 0; // weak -int dword_50B748 = 0; // weak -int dword_50B74C = 0; // weak -int dword_50B750 = 0; // weak -int dword_50B754 = 0; // weak -char byte_50B763 = '\0'; // weak -int `anonymous namespace'::moneypunct_cache_ct = 0; // weak -int dword_50B784 = 0; // weak -int dword_50B788 = 0; // weak -int dword_50B78C = 0; // weak -__int16 word_50B790 = 0; // weak -char byte_50B792 = '\0'; // weak -int dword_50B794 = 0; // weak -int dword_50B798 = 0; // weak -int dword_50B79C = 0; // weak -int dword_50B7A0 = 0; // weak -int dword_50B7A4 = 0; // weak -int dword_50B7A8 = 0; // weak -int dword_50B7AC = 0; // weak -int dword_50B7B0 = 0; // weak -int dword_50B7B4 = 0; // weak -char byte_50B7C3 = '\0'; // weak -int `anonymous namespace'::moneypunct_cache_wf = 0; // weak -int dword_50B7E4 = 0; // weak -int dword_50B7E8 = 0; // weak -int dword_50B7EC = 0; // weak -char byte_50B7F0 = '\0'; // weak -int dword_50B7F2 = 0; // weak -int dword_50B7F8 = 0; // weak -int dword_50B7FC = 0; // weak -int dword_50B800 = 0; // weak -int dword_50B804 = 0; // weak -int dword_50B808 = 0; // weak -int dword_50B80C = 0; // weak -int dword_50B810 = 0; // weak -int dword_50B814 = 0; // weak -int dword_50B818 = 0; // weak -char byte_50B832 = '\0'; // weak -int `anonymous namespace'::moneypunct_cache_wt = 0; // weak -int dword_50B844 = 0; // weak -int dword_50B848 = 0; // weak -int dword_50B84C = 0; // weak -char byte_50B850 = '\0'; // weak -int dword_50B852 = 0; // weak -int dword_50B858 = 0; // weak -int dword_50B85C = 0; // weak -int dword_50B860 = 0; // weak -int dword_50B864 = 0; // weak -int dword_50B868 = 0; // weak -int dword_50B86C = 0; // weak -int dword_50B870 = 0; // weak -int dword_50B874 = 0; // weak -int dword_50B878 = 0; // weak -char byte_50B892 = '\0'; // weak -__int16 `anonymous namespace'::name_c = 0; // weak -_DWORD `anonymous namespace'::ctype_c[136] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -_DWORD `anonymous namespace'::ctype_w[184] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -_DWORD `anonymous namespace'::c_locale = 0; // weak -int `anonymous namespace'::name_vec = 0; // weak -int dword_50BDC8 = 0; // weak -int dword_50BDCC = 0; // weak -int dword_50BDD0 = 0; // weak -int dword_50BDD4 = 0; // weak -int dword_50BDD8 = 0; // weak -_UNKNOWN `anonymous namespace'::cache_vec; // weak -_DWORD `anonymous namespace'::codecvt_c[3] = { 0, 0, 0 }; // weak -_DWORD `anonymous namespace'::codecvt_w[3] = { 0, 0, 0 }; // weak -_UNKNOWN `anonymous namespace'::collate_c; // weak -int dword_50BEBC = 0; // weak -int dword_50BEC0 = 0; // weak -_UNKNOWN `anonymous namespace'::collate_w; // weak -int dword_50BEC8 = 0; // weak -int dword_50BECC = 0; // weak -_UNKNOWN `anonymous namespace'::facet_vec; // weak -_UNKNOWN `anonymous namespace'::num_get_c; // weak -int dword_50BFA4 = 0; // weak -_UNKNOWN `anonymous namespace'::num_get_w; // weak -int dword_50BFAC = 0; // weak -_UNKNOWN `anonymous namespace'::num_put_c; // weak -int dword_50BFB4 = 0; // weak -_UNKNOWN `anonymous namespace'::num_put_w; // weak -int dword_50BFBC = 0; // weak -int `anonymous namespace'::static_mutex = 0; // weak -void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this) = &off_519A1C; // weak -_UNKNOWN __gnu_internal::buf_cin_sync; // weak -int dword_50BFE4 = 0; // weak -int dword_50BFE8 = 0; // weak -int dword_50BFEC = 0; // weak -int dword_50BFF0 = 0; // weak -int dword_50BFF4 = 0; // weak -int dword_50BFF8 = 0; // weak -_DWORD dword_50BFFC = 0; // weak -int dword_50C000 = 0; // weak -int dword_50C004 = 0; // weak -_UNKNOWN __gnu_internal::buf_cerr_sync; // weak -int dword_50C024 = 0; // weak -int dword_50C028 = 0; // weak -int dword_50C02C = 0; // weak -int dword_50C030 = 0; // weak -int dword_50C034 = 0; // weak -int dword_50C038 = 0; // weak -_DWORD dword_50C03C = 0; // weak -int dword_50C040 = 0; // weak -int dword_50C044 = 0; // weak -_UNKNOWN __gnu_internal::buf_cout_sync; // weak -int dword_50C064 = 0; // weak -int dword_50C068 = 0; // weak -int dword_50C06C = 0; // weak -int dword_50C070 = 0; // weak -int dword_50C074 = 0; // weak -int dword_50C078 = 0; // weak -_DWORD dword_50C07C = 0; // weak -int dword_50C080 = 0; // weak -int dword_50C084 = 0; // weak -_UNKNOWN __gnu_internal::buf_wcin_sync; // weak -int dword_50C0A4 = 0; // weak -int dword_50C0A8 = 0; // weak -int dword_50C0AC = 0; // weak -int dword_50C0B0 = 0; // weak -int dword_50C0B4 = 0; // weak -int dword_50C0B8 = 0; // weak -_DWORD dword_50C0BC = 0; // weak -int dword_50C0C0 = 0; // weak -__int16 word_50C0C4 = 0; // weak -_UNKNOWN __gnu_internal::buf_wcerr_sync; // weak -int dword_50C0E4 = 0; // weak -int dword_50C0E8 = 0; // weak -int dword_50C0EC = 0; // weak -int dword_50C0F0 = 0; // weak -int dword_50C0F4 = 0; // weak -int dword_50C0F8 = 0; // weak -_DWORD dword_50C0FC = 0; // weak -int dword_50C100 = 0; // weak -__int16 word_50C104 = 0; // weak -_UNKNOWN __gnu_internal::buf_wcout_sync; // weak -int dword_50C124 = 0; // weak -int dword_50C128 = 0; // weak -int dword_50C12C = 0; // weak -int dword_50C130 = 0; // weak -int dword_50C134 = 0; // weak -int dword_50C138 = 0; // weak -_DWORD dword_50C13C = 0; // weak -int dword_50C140 = 0; // weak -__int16 word_50C144 = 0; // weak -char __gnu_internal::buf_cin[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_cerr[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_cout[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_wcin[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_wcerr[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char __gnu_internal::buf_wcout[128] = -{ - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0', - '\0' -}; // weak -char *std::__num_base::_S_atoms_in[3] = -{ - "-+xX0123456789abcdefABCDEF", - "-+xX0123456789abcdef0123456789ABCDEF", - "-0123456789" -}; // weak -char *std::__num_base::_S_atoms_out[2] = { "-+xX0123456789abcdef0123456789ABCDEF", "-0123456789" }; // weak -char *std::money_base::_S_atoms = "-0123456789"; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::__timepunct::id = 0; // weak -signed __int32 std::__timepunct::id = 0; // weak -_DWORD std::`anonymous namespace'::messages_c = 0; // weak -signed __int32 dword_50C4A8[3] = { 0, 0, 0 }; // weak -_DWORD std::`anonymous namespace'::messages_w = 0; // weak -signed __int32 dword_50C4B8[3] = { 0, 0, 0 }; // weak -int std::`anonymous namespace'::numpunct_c = 0; // weak -int dword_50C4C8 = 0; // weak -int dword_50C4CC = 0; // weak -int std::`anonymous namespace'::numpunct_w = 0; // weak -int dword_50C4D4 = 0; // weak -int dword_50C4D8 = 0; // weak -int std::`anonymous namespace'::time_get_c = 0; // weak -int dword_50C4E0 = 0; // weak -int std::`anonymous namespace'::time_get_w = 0; // weak -int dword_50C4E8 = 0; // weak -int std::`anonymous namespace'::money_get_c = 0; // weak -int dword_50C4F0 = 0; // weak -int std::`anonymous namespace'::money_get_w = 0; // weak -int dword_50C4F8 = 0; // weak -int std::`anonymous namespace'::money_put_c = 0; // weak -int dword_50C500 = 0; // weak -int std::`anonymous namespace'::money_put_w = 0; // weak -int dword_50C508 = 0; // weak -int std::`anonymous namespace'::moneypunct_cf = 0; // weak -int dword_50C510 = 0; // weak -int dword_50C514 = 0; // weak -int std::`anonymous namespace'::moneypunct_ct = 0; // weak -int dword_50C51C = 0; // weak -int dword_50C520 = 0; // weak -int std::`anonymous namespace'::moneypunct_wf = 0; // weak -int dword_50C528 = 0; // weak -int dword_50C52C = 0; // weak -int std::`anonymous namespace'::moneypunct_wt = 0; // weak -int dword_50C534 = 0; // weak -int dword_50C538 = 0; // weak -int std::`anonymous namespace'::collate_c = 0; // weak -int dword_50C540 = 0; // weak -int dword_50C544 = 0; // weak -int std::`anonymous namespace'::collate_w = 0; // weak -int dword_50C54C = 0; // weak -int dword_50C550 = 0; // weak -void *std::__timepunct_cache::_S_timezones[2] = { &off_51445E, &off_514462 }; // weak -wchar_t *std::__timepunct_cache::_S_timezones[14] = -{ - L"GMT", - &off_5143FC, - &off_514404, - &off_51440E, - &off_514416, - &off_51441E, - &off_514426, - &off_51442E, - &off_514436, - &off_51443E, - &off_514446, - &off_51444E, - &off_51441E, - &off_514456 -}; // weak -signed __int32 std::ctype::id = 0; // weak -signed __int32 std::ctype::id = 0; // weak -int std::locale::_S_classic = 0; // weak -int std::locale::id::_S_refcount = 0; // weak -int std::locale::facet::_S_c_locale = 0; // weak -_UNKNOWN std::locale::facet::_S_once; // weak -_UNKNOWN std::locale::_S_once; // weak -int std::locale::_S_global = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::moneypunct::id = 0; // weak -signed __int32 std::collate::id = 0; // weak -signed __int32 std::collate::id = 0; // weak -signed __int32 std::messages::id = 0; // weak -signed __int32 std::messages::id = 0; // weak -signed __int32 std::numpunct::id = 0; // weak -signed __int32 std::numpunct::id = 0; // weak -signed __int32 std::time_get>::id = 0; // weak -signed __int32 std::time_get>::id = 0; // weak -signed __int32 std::money_get>::id = 0; // weak -signed __int32 std::money_get>::id = 0; // weak -signed __int32 std::money_put>::id = 0; // weak -signed __int32 std::money_put>::id = 0; // weak -_UNKNOWN std::codecvt::id; // weak -_UNKNOWN std::codecvt::id; // weak -_UNKNOWN std::codecvt::id; // weak -_UNKNOWN std::codecvt::id; // weak -signed __int32 std::codecvt::id = 0; // weak -signed __int32 std::codecvt::id = 0; // weak -signed __int32 std::collate::id = 0; // weak -signed __int32 std::collate::id = 0; // weak -signed __int32 std::num_get>::id = 0; // weak -signed __int32 std::num_get>::id = 0; // weak -signed __int32 std::num_put>::id = 0; // weak -signed __int32 std::num_put>::id = 0; // weak -int std::ios_base::Init::_S_refcount = 0; // weak -char std::ios_base::Init::_S_synced_with_stdio = '\x01'; // weak -signed __int32 std::messages::id = 0; // weak -signed __int32 std::messages::id = 0; // weak -signed __int32 std::numpunct::id = 0; // weak -signed __int32 std::numpunct::id = 0; // weak -signed __int32 std::time_get>::id = 0; // weak -signed __int32 std::time_get>::id = 0; // weak -signed __int32 std::time_put>::id = 0; // weak -signed __int32 std::time_put>::id = 0; // weak -signed __int32 std::money_get>::id = 0; // weak -signed __int32 std::money_get>::id = 0; // weak -signed __int32 std::money_put>::id = 0; // weak -signed __int32 std::money_put>::id[5] = { 0, 0, 0, 0, 0 }; // weak -int std::cin = 0; // weak -int dword_50C6C4 = 0; // weak -int dword_50C6C8[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_50C738 = 0; // weak -__int16 word_50C73C = 0; // weak -int dword_50C740 = 0; // weak -int dword_50C744 = 0; // weak -int dword_50C748 = 0; // weak -int dword_50C74C = 0; // weak -int std::cerr = 0; // weak -int dword_50C764 = 0; // weak -int dword_50C770 = 0; // weak -int dword_50C7D4 = 0; // weak -__int16 word_50C7D8 = 0; // weak -int dword_50C7DC = 0; // weak -int dword_50C7E0 = 0; // weak -int dword_50C7E4 = 0; // weak -int dword_50C7E8 = 0; // weak -int std::clog = 0; // weak -int dword_50C804[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_50C874 = 0; // weak -__int16 word_50C878 = 0; // weak -int dword_50C87C = 0; // weak -int dword_50C880 = 0; // weak -int dword_50C884 = 0; // weak -int dword_50C888 = 0; // weak -int std::cout = 0; // weak -int dword_50C8A4[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_50C914 = 0; // weak -__int16 word_50C918 = 0; // weak -int dword_50C91C = 0; // weak -int dword_50C920 = 0; // weak -int dword_50C924 = 0; // weak -int dword_50C928 = 0; // weak -int std::wcin = 0; // weak -int dword_50C944 = 0; // weak -int dword_50C948[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_50C9B8 = 0; // weak -__int16 word_50C9BC = 0; // weak -char byte_50C9BE = '\0'; // weak -int dword_50C9C0 = 0; // weak -int dword_50C9C4 = 0; // weak -int dword_50C9C8 = 0; // weak -int dword_50C9CC = 0; // weak -int std::wcerr = 0; // weak -int dword_50C9E4 = 0; // weak -int dword_50C9F0 = 0; // weak -int dword_50CA54 = 0; // weak -__int16 word_50CA58 = 0; // weak -char byte_50CA5A = '\0'; // weak -int dword_50CA5C = 0; // weak -int dword_50CA60 = 0; // weak -int dword_50CA64 = 0; // weak -int dword_50CA68 = 0; // weak -int std::wclog = 0; // weak -int dword_50CA84[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_50CAF4 = 0; // weak -__int16 word_50CAF8 = 0; // weak -char byte_50CAFA = '\0'; // weak -int dword_50CAFC = 0; // weak -int dword_50CB00 = 0; // weak -int dword_50CB04 = 0; // weak -int dword_50CB08 = 0; // weak -int std::wcout = 0; // weak -int dword_50CB24[28] = -{ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; // weak -int dword_50CB94 = 0; // weak -__int16 word_50CB98 = 0; // weak -char byte_50CB9A = '\0'; // weak -int dword_50CB9C = 0; // weak -int dword_50CBA0 = 0; // weak -int dword_50CBA4 = 0; // weak -int dword_50CBA8 = 0; // weak -_DWORD `anonymous namespace'::get_locale_mutex(void)::locale_mutex[2] = { 0, 0 }; // weak -_UNKNOWN `anonymous namespace'::get_static_mutex(void)::once; // weak -void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this) = &off_5199CC; // weak -_DWORD `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex[2] = { 0, 0 }; // weak -_UNKNOWN WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret; // weak -int dword_50CBE0 = 0; // weak -int dword_50CBE4 = 0; // weak -int dword_50CBE8 = 0; // weak -int dword_50CBEC = 0; // weak -int dword_50CBF0 = 0; // weak -char byte_50CBF4 = '\0'; // weak -int WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; // weak -int dword_50CBFC = 0; // weak -int dword_50CC00 = 0; // weak -int WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; // weak -int dword_50CC08 = 0; // weak -int dword_50CC0C = 0; // weak -char __gnu_cxx::__verbose_terminate_handler(void)::terminating = '\0'; // weak -size_t __emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global[4] = { 8u, 4u, 0u, 0u }; // weak -const char byte_50D216 = '\0'; // idb -const char asc_50D21C[] = "{\x00\"\x00,"; // idb -const char off_50DF84[] = { 'n', 'o', 't', '\0' }; // idb -const char byte_50DF9A = '\0'; // idb -const char asc_50E043[1] = "f"; // idb -void *off_50E044 = &unk_6D6F72; // weak -const char off_50EEF5[] = { ')', '\0', ']', '\0' }; // idb -_UNKNOWN unk_50F119; // weak -const char byte_50F1AA = '\0'; // idb -const char off_50F1AB[] = { 'r', 'p', 'x', '\0' }; // idb -const char off_50F1C8[] = { 'u', 'r', 'l', '\0' }; // idb -const char off_50F2CC[] = { '[', '1', ']', '\0' }; // idb -void *off_50F38C = (void *)0x444924; // weak -const char Source[] = { 'u', 'r', 'l', '\0' }; // idb -const char off_50F508[] = { 'r', 'p', 'x', '\0' }; // idb -const char byte_50F50C = '\0'; // idb -const char byte_50F6E6 = '\0'; // idb -const char asc_50F6EC[] = ";\x00:\x00}\x00$\x00+"; // idb -const char off_50F6FF[] = { '$', 'I', 'D', '\0' }; // idb -const char off_50F7B4[] = { '=', '\0', '{', '\0' }; // idb -const char off_50F7EE[] = { '*', '\0', '|', '\0' }; // idb -_UNKNOWN unk_5110A4; // weak -_UNKNOWN unk_5110A6; // weak -_UNKNOWN unk_5110A8; // weak -_UNKNOWN unk_5110AA; // weak -_UNKNOWN unk_5110AC; // weak -void *off_5110B8 = &unk_720074; // weak -void *off_5110C2 = &unk_610066; // weak -_UNKNOWN unk_5110D0; // weak -void *off_5110DC = &unk_720074; // weak -void *off_5110E6 = &unk_610066; // weak -_UNKNOWN unk_51183A; // weak -_UNKNOWN unk_511B8A; // weak -_BYTE byte_511F66[2] = { 0, 0 }; // weak -_UNKNOWN unk_5121D0; // weak -char byte_512239[] = { '0' }; // weak -_UNKNOWN unk_5125A2; // weak -void *off_512ECB = &unk_647473; // weak -void *off_513197 = &unk_6C6C75; // weak -_UNKNOWN unk_513574; // weak -_UNKNOWN unk_513576; // weak -_UNKNOWN unk_5137C4; // weak -void *cplus_demangle_operators = &unk_5137C4; // weak -void **off_513FC0 = &off_513E55; // weak -char *off_514128 = "decimal32"; // weak -char *off_51413C = "decimal64"; // weak -char *off_514150 = "decimal128"; // weak -char *off_514164 = "half"; // weak -char *off_514178 = "char8_t"; // weak -char *off_51418C = "char16_t"; // weak -char *off_5141A0 = "char32_t"; // weak -char *off_5141B4 = "decltype(nullptr)"; // weak -void *off_514522 = &loc_4D4100; // weak -_UNKNOWN unk_514526; // weak -void *off_514562 = &unk_6E7553; // weak -void *off_514566 = &unk_6E6F4D; // weak -void *off_51456A = &unk_657554; // weak -void *off_51456E = &unk_646557; // weak -void *off_514572 = &unk_756854; // weak -void *off_514576 = &unk_697246; // weak -void *off_51457A = &unk_746153; // weak -void *off_51459B = &unk_79614D; // weak -void *off_5145D4 = &unk_6E614A; // weak -void *off_5145D8 = &unk_626546; // weak -void *off_5145DC = &unk_72614D; // weak -void *off_5145E0 = &unk_727041; // weak -void *off_5145E4 = &unk_6E754A; // weak -void *off_5145E8 = &unk_6C754A; // weak -void *off_5145EC = &unk_677541; // weak -void *off_5145F0 = &unk_706553; // weak -void *off_5145F4 = &unk_74634F; // weak -void *off_5145F8 = &unk_766F4E; // weak -void *off_5145FC = &unk_636544; // weak -void *off_514600 = &unk_6D0025; // weak -_UNKNOWN unk_514624; // weak -void *off_514626 = (void *)0x4D0041; // weak -void *off_51462C = (void *)0x4D0050; // weak -void *off_514632 = &unk_750053; // weak -void *off_514640 = &unk_6F004D; // weak -void *off_51464E = &unk_750054; // weak -void *off_51465E = &unk_650057; // weak -void *off_514672 = &unk_680054; // weak -void *off_514684 = &unk_720046; // weak -void *off_514692 = &unk_610053; // weak -void *off_5146A4 = &unk_750053; // weak -void *off_5146AC = &unk_6F004D; // weak -void *off_5146B4 = &unk_750054; // weak -void *off_5146BC = &unk_650057; // weak -void *off_5146C4 = &unk_680054; // weak -void *off_5146CC = &unk_720046; // weak -void *off_5146D4 = &unk_610053; // weak -void *off_5146DC = &unk_61004A; // weak -void *off_5146EC = &unk_650046; // weak -void *off_5146FE = &unk_61004D; // weak -void *off_51470A = &unk_700041; // weak -void *off_514716 = &unk_61004D; // weak -void *off_51471E = &unk_75004A; // weak -void *off_514728 = &unk_75004A; // weak -void *off_514732 = &unk_750041; // weak -void *off_514740 = &unk_650053; // weak -void *off_514754 = &unk_63004F; // weak -void *off_514764 = &unk_6F004E; // weak -void *off_514776 = &unk_650044; // weak -void *off_514788 = &unk_61004A; // weak -void *off_514790 = &unk_650046; // weak -void *off_514798 = &unk_61004D; // weak -void *off_5147A0 = &unk_700041; // weak -void *off_5147A8 = &unk_75004A; // weak -void *off_5147B0 = &unk_75004A; // weak -void *off_5147B8 = &unk_750041; // weak -void *off_5147C0 = &unk_650053; // weak -void *off_5147C8 = &unk_63004F; // weak -void *off_5147D0 = &unk_6F004E; // weak -void *off_5147D8 = &unk_650044; // weak -const char byte_5147E0[4] = { '\0', '\0', '\0', '\0' }; // idb -int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD) = &__dyn_tls_init; // weak -char *CSWTCH_1[6] = -{ - "Argument domain error (DOMAIN)", - "Argument singularity (SIGN)", - "Overflow range error (OVERFLOW)", - "The result is too small to be represented (UNDERFLOW)", - "Total loss of significance (TLOSS)", - "Partial loss of significance (PLOSS)" -}; // weak -const char String1[] = { 'I', 'N', 'F', '\0' }; // idb -const char off_514C0A[] = { 'N', 'A', 'N', '\0' }; // idb -_UNKNOWN unk_514C14; // weak -_UNKNOWN __etens; // weak -_UNKNOWN unk_514CB0; // weak -int __eone = 0; // weak -char *cmap = "alnum"; // weak -__int16 word_514D44[] = { 263 }; // weak -int fivesbits[23] = -{ - 0, - 3, - 5, - 7, - 10, - 12, - 14, - 17, - 19, - 21, - 24, - 26, - 28, - 31, - 33, - 35, - 38, - 40, - 42, - 45, - 47, - 49, - 52 -}; // weak -void *off_514F07 = &loc_4E614E; // weak -void *off_514F0B = &unk_666E49; // weak -const wchar_t String = 40u; // idb -void *off_515099 = &loc_4E614E; // weak -_UNKNOWN unk_5150F4; // weak -double dbl_5150F8[4] = { 3.369835408745143e30, 0.0, 0.0, 0.0 }; // weak -int dword_51511C[] = { 0 }; // weak -double dbl_515138[] = { 0.0 }; // weak -double __tens_D2A[24] = -{ - 1.0, - 10.0, - 100.0, - 1000.0, - 10000.0, - 100000.0, - 1000000.0, - 1.0e7, - 1.0e8, - 1.0e9, - 1.0e10, - 1.0e11, - 1.0e12, - 1.0e13, - 1.0e14, - 1.0e15, - 1.0e16, - 1.0e17, - 1.0e18, - 1.0e19, - 1.0e20, - 1.0e21, - 1.0e22, - 0.0 -}; // weak -double __tinytens_D2A[4] = { 1.0e-16, 1.0e-32, 1.0e-64, 1.0e-128 }; // weak -double __bigtens_D2A[4] = { 1.0e16, 1.0e32, 1.0e64, 1.0e128 }; // weak -const WCHAR ModuleName = 109u; // idb -const WCHAR LibFileName = 97u; // idb -const WCHAR off_5152CC = 109u; // idb -int CSWTCH_112[7] = { 4, 1, 16, 2, 8, 0, 0 }; // weak -char *const CSWTCH_18 = "a"; // idb -int std::money_base::_S_default_pattern = 67109634; // weak -__int16 std::`anonymous namespace'::utf8_bom = -17425; // weak -char **std::locale::_S_categories = &__gnu_cxx::category_names; // weak -int std::locale::_S_twinned_facets[24] = -{ - 5293704, - 5293608, - 5293664, - 5293592, - 5293712, - 5293616, - 5293728, - 5293624, - 5293736, - 5293632, - 5293196, - 5293576, - 5293200, - 5293580, - 5293696, - 5293600, - 5293708, - 5293612, - 5293668, - 5293596, - 5293716, - 5293620, - 5293732, - 5293628 -}; // weak -int *const std::locale::facet::_S_c_name = (int *const)0x43; // idb -_UNKNOWN unk_515784; // weak -_UNKNOWN unk_515798; // weak -_UNKNOWN unk_5157AC; // weak -_UNKNOWN unk_5157C0; // weak -_UNKNOWN unk_5157D4; // weak -_UNKNOWN unk_5157E8; // weak -_UNKNOWN unk_515838; // weak -_UNKNOWN unk_51584C; // weak -_UNKNOWN unk_515860; // weak -_UNKNOWN unk_515874; // weak -_UNKNOWN unk_515888; // weak -_UNKNOWN unk_51589C; // weak -_UNKNOWN unk_5158B0; // weak -_UNKNOWN unk_5158C4; // weak -_UNKNOWN unk_5158D8; // weak -_UNKNOWN unk_5158EC; // weak -_UNKNOWN unk_515900; // weak -_UNKNOWN unk_515914; // weak -_UNKNOWN unk_515928; // weak -_UNKNOWN unk_51593C; // weak -_UNKNOWN unk_51598C; // weak -_UNKNOWN unk_5159A0; // weak -_UNKNOWN unk_5159B4; // weak -_UNKNOWN unk_5159C8; // weak -_UNKNOWN unk_5159DC; // weak -_UNKNOWN unk_5159F0; // weak -_UNKNOWN unk_515A40; // weak -_UNKNOWN unk_515A54; // weak -_UNKNOWN unk_515A68; // weak -_UNKNOWN unk_515A7C; // weak -_UNKNOWN unk_515A90; // weak -_UNKNOWN unk_515AA4; // weak -_UNKNOWN unk_515AB8; // weak -_UNKNOWN unk_515ACC; // weak -_UNKNOWN unk_515AE0; // weak -_UNKNOWN unk_515AF4; // weak -_UNKNOWN unk_515B08; // weak -_UNKNOWN unk_515B1C; // weak -_UNKNOWN unk_515B30; // weak -_UNKNOWN unk_515B44; // weak -int *`typeinfo for'__cxxabiv1::__forced_unwind = &off_519934; // weak -int *`typeinfo for'__cxxabiv1::__foreign_exception = &off_519934; // weak -int *`typeinfo for'__gnu_cxx::recursive_init_error = &off_519974; // weak -int *`typeinfo for'__gnu_cxx::__concurrence_lock_error = &off_519974; // weak -int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error = &off_519974; // weak -int *`typeinfo for'std::locale::facet::__shim = &off_519934; // weak -int *`typeinfo for'std::locale::facet = &off_519934; // weak -int *`typeinfo for'std::moneypunct = &off_5199A0; // weak -int *`typeinfo for'std::moneypunct = &off_5199A0; // weak -int *`typeinfo for'std::moneypunct = &off_5199A0; // weak -int *`typeinfo for'std::moneypunct = &off_5199A0; // weak -int *`typeinfo for'std::collate = &off_519974; // weak -int *`typeinfo for'std::collate = &off_519974; // weak -int *`typeinfo for'std::messages = &off_5199A0; // weak -int *`typeinfo for'std::messages = &off_5199A0; // weak -int *`typeinfo for'std::numpunct = &off_519974; // weak -int *`typeinfo for'std::numpunct = &off_519974; // weak -int *`typeinfo for'std::time_get> = &off_5199A0; // weak -int *`typeinfo for'std::time_get> = &off_5199A0; // weak -int *`typeinfo for'std::money_get> = &off_519974; // weak -int *`typeinfo for'std::money_get> = &off_519974; // weak -int *`typeinfo for'std::money_put> = &off_519974; // weak -int *`typeinfo for'std::money_put> = &off_519974; // weak -int *`typeinfo for'std::ios_base::failure = &off_519974; // weak -int `typeinfo for'std::bad_typeid = 5347700; // weak -int *`typeinfo for'std::moneypunct = &off_5199A0; // weak -int *`typeinfo for'std::moneypunct = &off_5199A0; // weak -int *`typeinfo for'std::moneypunct = &off_5199A0; // weak -int *`typeinfo for'std::moneypunct = &off_5199A0; // weak -int *`typeinfo for'std::__timepunct = &off_519974; // weak -int *`typeinfo for'std::__timepunct = &off_519974; // weak -int *`typeinfo for'std::logic_error = &off_519974; // weak -int *`typeinfo for'std::range_error = &off_519974; // weak -int *`typeinfo for'std::domain_error = &off_519974; // weak -int *`typeinfo for'std::length_error = &off_519974; // weak -int *`typeinfo for'std::out_of_range = &off_519974; // weak -int *`typeinfo for'std::system_error = &off_519974; // weak -int *`typeinfo for'std::__ios_failure = &off_51B148; // weak -int *`typeinfo for'std::bad_exception = &off_519974; // weak -int *`typeinfo for'std::runtime_error = &off_519974; // weak -int *`typeinfo for'std::overflow_error = &off_519974; // weak -int *`typeinfo for'std::underflow_error = &off_519974; // weak -int *`typeinfo for'std::invalid_argument = &off_519974; // weak -int *`typeinfo for'std::bad_array_new_length = &off_519974; // weak -int *`typeinfo for'std::ctype = &off_5199A0; // weak -int *`typeinfo for'std::ctype = &off_519974; // weak -int *`typeinfo for'std::codecvt = &off_519974; // weak -int *`typeinfo for'std::codecvt = &off_519974; // weak -int *`typeinfo for'std::collate = &off_519974; // weak -int *`typeinfo for'std::collate = &off_519974; // weak -int *`typeinfo for'std::num_get> = &off_519974; // weak -int *`typeinfo for'std::num_get> = &off_519974; // weak -int *`typeinfo for'std::num_put> = &off_519974; // weak -int *`typeinfo for'std::num_put> = &off_519974; // weak -int *`typeinfo for'std::bad_cast = &off_519974; // weak -int *`typeinfo for'std::messages = &off_5199A0; // weak -int *`typeinfo for'std::messages = &off_5199A0; // weak -int *`typeinfo for'std::numpunct = &off_519974; // weak -int *`typeinfo for'std::numpunct = &off_519974; // weak -int *`typeinfo for'std::time_get> = &off_5199A0; // weak -int *`typeinfo for'std::time_get> = &off_5199A0; // weak -int *`typeinfo for'std::time_put> = &off_519974; // weak -int *`typeinfo for'std::time_put> = &off_519974; // weak -int *`typeinfo for'std::bad_alloc = &off_519974; // weak -int *`typeinfo for'std::money_get> = &off_519974; // weak -int *`typeinfo for'std::money_get> = &off_519974; // weak -int *`typeinfo for'std::money_put> = &off_519974; // weak -int *`typeinfo for'std::money_put> = &off_519974; // weak -void (__cdecl *off_519934)(__cxxabiv1::__class_type_info *__hidden this) = &__cxxabiv1::__class_type_info::~__class_type_info; // weak -void (__cdecl *off_519974)(__cxxabiv1::__si_class_type_info *__hidden this) = &__cxxabiv1::__si_class_type_info::~__si_class_type_info; // weak -void (__cdecl *off_5199A0)(__cxxabiv1::__vmi_class_type_info *__hidden this) = &__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info; // weak -void (__cdecl *off_5199CC)(_anonymous_namespace_::io_error_category *__hidden this) = &`anonymous namespace'::io_error_category::~io_error_category; // weak -void (__cdecl *off_519A44)(WXSS::CSSTreeLib::NonTerminal *__hidden this) = &WXSS::CSSTreeLib::NonTerminal::~NonTerminal; // weak -void (__cdecl *off_519A58)(WXSS::CSSTreeLib::MarkHostRule *__hidden this) = &WXSS::CSSTreeLib::MarkHostRule::~MarkHostRule; // weak -void (__cdecl *off_519A70)(WXSS::CSSTreeLib::AttrDebugRule *__hidden this) = &WXSS::CSSTreeLib::AttrDebugRule::~AttrDebugRule; // weak -void (__cdecl *off_519A88)(WXSS::CSSTreeLib::BlackListRule *__hidden this) = &WXSS::CSSTreeLib::BlackListRule::~BlackListRule; // weak -void (__cdecl *off_519AA0)(WXSS::CSSTreeLib::RuleDebugRule *__hidden this) = &WXSS::CSSTreeLib::RuleDebugRule::~RuleDebugRule; // weak -void (__cdecl *off_519AB8)(WXSS::CSSTreeLib::ReWriteRpxRule *__hidden this) = &WXSS::CSSTreeLib::ReWriteRpxRule::~ReWriteRpxRule; // weak -void (__cdecl *off_519AD0)(WXSS::CSSTreeLib::MarkSelectorRule *__hidden this) = &WXSS::CSSTreeLib::MarkSelectorRule::~MarkSelectorRule; // weak -void (__cdecl *off_519AE8)(WXSS::CSSTreeLib::RewriteImgUrlRule *__hidden this) = &WXSS::CSSTreeLib::RewriteImgUrlRule::~RewriteImgUrlRule; // weak -void (__cdecl *off_519B00)(WXSS::CSSTreeLib::RewriteSelectorRule *__hidden this) = &WXSS::CSSTreeLib::RewriteSelectorRule::~RewriteSelectorRule; // weak -void (__cdecl *off_519B18)(WXSS::CSSTreeLib::EPS *__hidden this) = &WXSS::CSSTreeLib::EPS::~EPS; // weak -void (__cdecl *off_519B2C)(WXSS::CSSTreeLib::Action *__hidden this) = &WXSS::CSSTreeLib::Action::~Action; // weak -void (__cdecl *off_519B40)(WXSS::CSSTreeLib::AndRules *__hidden this) = &WXSS::CSSTreeLib::AndRules::~AndRules; // weak -void (__cdecl *off_519B58)(WXSS::CSSTreeLib::Terminal *__hidden this) = &WXSS::CSSTreeLib::Terminal::~Terminal; // weak -void (__cdecl *off_519B6C)(WXSS::CSSTreeLib::TrueRule *__hidden this) = &WXSS::CSSTreeLib::TrueRule::~TrueRule; // weak -void (__cdecl *off_519B84)(WXSS::CSSTreeLib::ChildRule *__hidden this) = &WXSS::CSSTreeLib::ChildRule::~ChildRule; // weak -void (__cdecl *off_519B9C)(WXSS::CSSTreeLib::FalseRule *__hidden this) = &WXSS::CSSTreeLib::FalseRule::~FalseRule; // weak -void (__cdecl *off_519BB4)(WXSS::CSSTreeLib::RuleChain *__hidden this) = &WXSS::CSSTreeLib::RuleChain::~RuleChain; // weak -void (__cdecl *off_519BCC)(WXSS::CSSTreeLib::SPNotRule *__hidden this) = &WXSS::CSSTreeLib::SPNotRule::~SPNotRule; // weak -int (*off_519BE4[2])() = -{ - &__gnu_cxx::stdio_filebuf::~stdio_filebuf, - &__gnu_cxx::stdio_filebuf::~stdio_filebuf -}; // weak -int (*off_519C24[2])() = -{ - &__gnu_cxx::stdio_filebuf::~stdio_filebuf, - &__gnu_cxx::stdio_filebuf::~stdio_filebuf -}; // weak -int (*off_519C64)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak -int (*off_519CA4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak -void (__cdecl *off_519CE4)(__gnu_cxx::recursive_init_error *__hidden this) = &__gnu_cxx::recursive_init_error::~recursive_init_error; // weak -void (__cdecl *off_519CF8)(__gnu_cxx::__concurrence_lock_error *__hidden this) = &__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error; // weak -void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this) = &__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error; // weak -int (*off_519D20)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak -int (*off_519D3C)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak -int (*off_519D58)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak -int (*off_519D74)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak -int (*off_519D90)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak -int (*off_519DAC)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak -int (*off_519DC8)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak -int (*off_519DE4)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak -int (*off_519E00)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak -int (*off_519E24)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak -int (*off_519E48)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak -int (*off_519E6C)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak -int (*off_519E90)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak -int (*off_519EB8)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak -int (*off_519EE4)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak -int (*off_519F0C)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak -int (*off_519F38)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak -int (*off_519F50)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak -int (*off_519F68)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak -int (*off_519F80)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak -int (*off_519F98)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak -int (*off_519FB0)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak -int (*off_519FC8)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak -int (*off_519FE0)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak -int (*off_519FF8)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_51A02C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_51A060)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_51A094)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_51A0C8)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_51A0FC)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_51A130)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (*off_51A164)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak -int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak -int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak -int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak -int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::moneypunct::~moneypunct; // weak -int (*off_51A2A0)() = &std::collate_byname::~collate_byname; // weak -int (*off_51A2BC)() = &std::collate_byname::~collate_byname; // weak -int (*off_51A2D8)() = &std::stringbuf::~stringbuf; // weak -int (*off_51A318)() = &std::wstringbuf::~wstringbuf; // weak -int (*off_51A358)() = &std::messages_byname::~messages_byname; // weak -int (*off_51A374)() = &std::messages_byname::~messages_byname; // weak -int (*off_51A390)() = &std::numpunct_byname::~numpunct_byname; // weak -int (*off_51A3B4)() = &std::numpunct_byname::~numpunct_byname; // weak -int (*off_51A430)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_51A464)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_51A498)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_51A4CC)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_51A504)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak -int (*off_51A518[2])() = -{ - &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, - &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream -}; // weak -int (*off_51A52C[2])() = -{ - &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, - &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream -}; // weak -int (*off_51A540)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak -int (*off_51A554[2])() = -{ - &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, - &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream -}; // weak -int (*off_51A568[2])() = -{ - &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, - &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream -}; // weak -int (*off_51A57C)() = &std::istringstream::~istringstream; // weak -int (*off_51A590[2])() = -{ - &`virtual thunk to'std::istringstream::~istringstream, - &`virtual thunk to'std::istringstream::~istringstream -}; // weak -int (*off_51A5A4)() = &std::wistringstream::~wistringstream; // weak -int (*off_51A5B8[2])() = -{ - &`virtual thunk to'std::wistringstream::~wistringstream, - &`virtual thunk to'std::wistringstream::~wistringstream -}; // weak -int (*off_51A5CC)() = &std::ostringstream::~ostringstream; // weak -int (*off_51A5E0[2])() = -{ - &`virtual thunk to'std::ostringstream::~ostringstream, - &`virtual thunk to'std::ostringstream::~ostringstream -}; // weak -int (*off_51A5F4)() = &std::wostringstream::~wostringstream; // weak -int (*off_51A608[2])() = -{ - &`virtual thunk to'std::wostringstream::~wostringstream, - &`virtual thunk to'std::wostringstream::~wostringstream -}; // weak -int (*off_51A618)() = &std::collate::~collate; // weak -int (*off_51A634)() = &std::collate::~collate; // weak -int (*off_51A650)() = &std::messages::~messages; // weak -int (*off_51A66C)() = &std::messages::~messages; // weak -int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::numpunct::~numpunct; // weak -int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::numpunct::~numpunct; // weak -int (*off_51A6D0)() = &std::time_get>::~time_get; // weak -int (*off_51A6FC)() = &std::time_get>::~time_get; // weak -int (*off_51A728)() = &std::money_get>::~money_get; // weak -int (*off_51A740)() = &std::money_get>::~money_get; // weak -int (*off_51A758)() = &std::money_put>::~money_put; // weak -int (*off_51A770)() = &std::money_put>::~money_put; // weak -int (*off_51A788)() = &std::ios_base::failure[abi:cxx11]::~failure; // weak -void (__cdecl *off_51A79C)(std::ios_base::failure *__hidden this) = &std::ios_base::failure::~failure; // weak -void (__cdecl *off_51A7B4)(std::iostream *__hidden this) = &std::iostream::~iostream; // weak -void (__cdecl *off_51A7C8[2])(std::iostream *__hidden this) = -{ - &`non-virtual thunk to'std::iostream::~iostream, - &`non-virtual thunk to'std::iostream::~iostream -}; // weak -void (__cdecl *off_51A7DC[2])(std::iostream *__hidden this) = -{ - &`virtual thunk to'std::iostream::~iostream, - &`virtual thunk to'std::iostream::~iostream -}; // weak -void (__cdecl *off_51A7F0)(std::istream *__hidden this) = &std::istream::~istream; // weak -void (__cdecl *off_51A804[2])(std::istream *__hidden this) = -{ - &`virtual thunk to'std::istream::~istream, - &`virtual thunk to'std::istream::~istream -}; // weak -void (__cdecl *off_51A818)(std::ostream *__hidden this) = &std::ostream::~ostream; // weak -void (__cdecl *off_51A82C[2])(std::ostream *__hidden this) = -{ - &`virtual thunk to'std::ostream::~ostream, - &`virtual thunk to'std::ostream::~ostream -}; // weak -void (__cdecl *off_51A83C)(std::bad_typeid *__hidden this) = &std::bad_typeid::~bad_typeid; // weak -int (*off_51A850)() = &std::moneypunct::~moneypunct; // weak -int (*off_51A884)() = &std::moneypunct::~moneypunct; // weak -int (*off_51A8B8)() = &std::moneypunct::~moneypunct; // weak -int (*off_51A8EC)() = &std::moneypunct::~moneypunct; // weak -int (*off_51A920)() = &std::__timepunct::~__timepunct; // weak -int (*off_51A930)() = &std::__timepunct::~__timepunct; // weak -void (__cdecl *off_51A940)(std::logic_error *__hidden this) = &std::logic_error::~logic_error; // weak -void (__cdecl *off_51A954)(std::range_error *__hidden this) = &std::range_error::~range_error; // weak -int (*off_51A968)() = &std::ctype_byname::~ctype_byname; // weak -int (*off_51A998)() = &std::ctype_byname::~ctype_byname; // weak -void (__cdecl *off_51A9D8)(std::domain_error *__hidden this) = &std::domain_error::~domain_error; // weak -void (__cdecl *off_51A9EC)(std::length_error *__hidden this) = &std::length_error::~length_error; // weak -void (__cdecl *off_51AA00)(std::out_of_range *__hidden this) = &std::out_of_range::~out_of_range; // weak -void (__cdecl *off_51AA14)(std::system_error *__hidden this) = &std::system_error::~system_error; // weak -void (__cdecl *off_51AA28)(std::__ios_failure *__hidden this) = &std::__ios_failure::~__ios_failure; // weak -void (__cdecl *off_51AA3C)(std::bad_exception *__hidden this) = &std::bad_exception::~bad_exception; // weak -int (*off_51AA50[2])() = { &std::filebuf::~filebuf, &std::filebuf::~filebuf }; // weak -int (*off_51AA90[2])() = { &std::wfilebuf::~wfilebuf, &std::wfilebuf::~wfilebuf }; // weak -int (*off_51AAD4[2])() = { &std::fstream::~fstream, &std::fstream::~fstream }; // weak -int (*off_51AAE8[2])() = -{ - &`non-virtual thunk to'std::fstream::~fstream, - &`non-virtual thunk to'std::fstream::~fstream -}; // weak -int (*off_51AAFC[2])() = -{ - &`virtual thunk to'std::fstream::~fstream, - &`virtual thunk to'std::fstream::~fstream -}; // weak -int (*off_51AB10[2])() = { &std::wfstream::~wfstream, &std::wfstream::~wfstream }; // weak -int (*off_51AB24[2])() = -{ - &`non-virtual thunk to'std::wfstream::~wfstream, - &`non-virtual thunk to'std::wfstream::~wfstream -}; // weak -int (*off_51AB38[2])() = -{ - &`virtual thunk to'std::wfstream::~wfstream, - &`virtual thunk to'std::wfstream::~wfstream -}; // weak -int (*off_51AB4C)() = &std::wistream::~wistream; // weak -int (*off_51AB60[2])() = -{ - &`virtual thunk to'std::wistream::~wistream, - &`virtual thunk to'std::wistream::~wistream -}; // weak -int (*off_51AB74)() = &std::wostream::~wostream; // weak -int (*off_51AB88[2])() = -{ - &`virtual thunk to'std::wostream::~wostream, - &`virtual thunk to'std::wostream::~wostream -}; // weak -void (__cdecl *off_51AB98)(std::runtime_error *__hidden this) = &std::runtime_error::~runtime_error; // weak -int (*off_51ABB0[2])() = { &std::ifstream::~ifstream, &std::ifstream::~ifstream }; // weak -int (*off_51ABC4[2])() = -{ - &`virtual thunk to'std::ifstream::~ifstream, - &`virtual thunk to'std::ifstream::~ifstream -}; // weak -int (*off_51ABD8[2])() = { &std::wifstream::~wifstream, &std::wifstream::~wifstream }; // weak -int (*off_51ABEC[2])() = -{ - &`virtual thunk to'std::wifstream::~wifstream, - &`virtual thunk to'std::wifstream::~wifstream -}; // weak -int (*off_51AC00)() = &std::wiostream::~basic_iostream; // weak -int (*off_51AC14[2])() = -{ - &`non-virtual thunk to'std::wiostream::~basic_iostream, - &`non-virtual thunk to'std::wiostream::~basic_iostream -}; // weak -int (*off_51AC28[2])() = -{ - &`virtual thunk to'std::wiostream::~basic_iostream, - &`virtual thunk to'std::wiostream::~basic_iostream -}; // weak -int (*off_51AC3C[2])() = { &std::ofstream::~ofstream, &std::ofstream::~ofstream }; // weak -int (*off_51AC50[2])() = -{ - &`virtual thunk to'std::ofstream::~ofstream, - &`virtual thunk to'std::ofstream::~ofstream -}; // weak -int (*off_51AC64[2])() = { &std::wofstream::~wofstream, &std::wofstream::~wofstream }; // weak -int (*off_51AC78[2])() = -{ - &`virtual thunk to'std::wofstream::~wofstream, - &`virtual thunk to'std::wofstream::~wofstream -}; // weak -int (*off_51AC88)() = &std::codecvt_byname::~codecvt_byname; // weak -int (*off_51ACB4)() = &std::codecvt_byname::~codecvt_byname; // weak -int (*off_51ACE0)() = &std::collate_byname::~collate_byname; // weak -int (*off_51ACFC)() = &std::collate_byname::~collate_byname; // weak -void (__cdecl *off_51AD18)(std::overflow_error *__hidden this) = &std::overflow_error::~overflow_error; // weak -int (*off_51AD2C)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak -int (*off_51AD64)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak -int (*off_51AD80)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak -int (*off_51AD9C)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak -int (*off_51ADB8)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak -int (*off_51ADD4)() = &std::streambuf::~streambuf; // weak -int (*off_51AE14)() = &std::wstreambuf::~wstreambuf; // weak -int (*off_51AE54)() = &std::messages_byname::~messages_byname; // weak -int (*off_51AE70)() = &std::messages_byname::~messages_byname; // weak -int (*off_51AE8C)() = &std::numpunct_byname::~numpunct_byname; // weak -int (*off_51AEB0)() = &std::numpunct_byname::~numpunct_byname; // weak -void (__cdecl *off_51AF4C)(std::underflow_error *__hidden this) = &std::underflow_error::~underflow_error; // weak -int (*off_51AF60)() = &std::__numpunct_cache::~__numpunct_cache; // weak -int (*off_51AF70)() = &std::__numpunct_cache::~__numpunct_cache; // weak -void (__cdecl *off_51AF80)(std::invalid_argument *__hidden this) = &std::invalid_argument::~invalid_argument; // weak -int (*off_51AF94)() = &std::__timepunct_cache::~__timepunct_cache; // weak -int (*off_51AFA4)() = &std::__timepunct_cache::~__timepunct_cache; // weak -int (*off_51AFB4)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_51AFE8)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_51B01C)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_51B050)() = &std::moneypunct_byname::~moneypunct_byname; // weak -int (*off_51B084)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak -int (*off_51B094)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak -int (*off_51B0A4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak -int (*off_51B0B4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak -int (*off_51B11C)() = &std::__codecvt_utf8_base::~__codecvt_utf8_base; // weak -void (__cdecl *off_51B148)(std::__iosfail_type_info *__hidden this) = &std::__iosfail_type_info::~__iosfail_type_info; // weak -int (*off_51B1CC)() = &std::__codecvt_utf16_base::~__codecvt_utf16_base; // weak -void (__cdecl *off_51B1F8)(std::bad_array_new_length *__hidden this) = &std::bad_array_new_length::~bad_array_new_length; // weak -_UNKNOWN unk_51B24C; // weak -_UNKNOWN unk_51B28C; // weak -_UNKNOWN unk_51B2B8; // weak -_UNKNOWN unk_51B2E4; // weak -_UNKNOWN unk_51B310; // weak -_UNKNOWN unk_51B33C; // weak -_UNKNOWN unk_51B368; // weak -int (*off_51B3EC)() = &std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base; // weak -int (*off_51B418)() = &std::ctype::~ctype; // weak -int (*off_51B448)() = &std::ctype::~ctype; // weak -int (*off_51B488)() = &std::codecvt::~codecvt; // weak -int (*off_51B4B4)() = &std::codecvt::~codecvt; // weak -int (*off_51B4E0)() = &std::codecvt::~codecvt; // weak -int (*off_51B50C)() = &std::codecvt::~codecvt; // weak -int (__cdecl *off_51B538)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::codecvt::~codecvt; // weak -int (__cdecl *off_51B564)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int) = &std::codecvt::~codecvt; // weak -int (*off_51B590)() = &std::collate::~collate; // weak -int (*off_51B5AC)() = &std::collate::~collate; // weak -int (*off_51B5C8)() = &std::num_get>::~num_get; // weak -int (*off_51B604)() = &std::num_get>::~num_get; // weak -int (*off_51B640)() = &std::num_put>::~num_put; // weak -int (*off_51B670)() = &std::num_put>::~num_put; // weak -void (__cdecl *off_51B6A0)(std::bad_cast *__hidden this) = &std::bad_cast::~bad_cast; // weak -void (__cdecl *off_51B6B4)(std::ios_base *__hidden this) = &std::ios_base::~ios_base; // weak -int (*off_51B6C4)() = &std::messages::~messages; // weak -int (*off_51B6E0)() = &std::messages::~messages; // weak -int (*off_51B6FC)() = &std::numpunct::~numpunct; // weak -int (*off_51B720)() = &std::numpunct::~numpunct; // weak -int (*off_51B744)() = &std::time_get>::~time_get; // weak -int (*off_51B76C)() = &std::time_get>::~time_get; // weak -int (*off_51B794)() = &std::time_put>::~time_put; // weak -int (*off_51B7A8)() = &std::time_put>::~time_put; // weak -void (__cdecl *off_51B7BC)(std::bad_alloc *__hidden this) = &std::bad_alloc::~bad_alloc; // weak -int (*off_51B7D0)() = &std::ios::~ios; // weak -int (*off_51B7E0)() = &std::wios::~wios; // weak -int (*off_51B804)() = &std::money_get>::~money_get; // weak -int (*off_51B81C)() = &std::money_get>::~money_get; // weak -int (*off_51B834)() = &std::money_put>::~money_put; // weak -int (*off_51B84C)() = &std::money_put>::~money_put; // weak -void *std::ctype::classic_table(void)::_S_classic_table = &unk_1000100; // weak -_TCHAR *__mingw_winmain_lpCmdLine; // idb -HINSTANCE __mingw_winmain_hInstance; // idb -_startupinfo startinfo; // idb -int has_cctor; // idb -int managedapp; // idb -int mainret; // idb -char **envp; // idb -char **argv; // idb -int argc; // idb -_UNKNOWN WXML::RPX::acceptNum(char const*,int &)::nextPos; // weak -int dword_51D0EC; // weak -int dword_51D0F4; // weak -int dword_51D0F8; // weak -int dword_51D100[264]; // weak -int dword_51D520; // weak -int dword_51D528[264]; // weak -int dword_51D948; // weak -int dword_51D950[266]; // weak -int dword_51DD78[266]; // weak -int dword_51E1A0[218]; // weak -char WXML::RPX::acceptNum(char const*,int &)::inited; // weak -_UNKNOWN WXML::RPX::acceptStr(char const*,int &)::nextPos; // weak -int dword_51E5A8; // weak -int dword_51E5BC; // weak -int dword_51E948[34]; // weak -int dword_51E9D0; // weak -int dword_51EAB8; // weak -int dword_51ED70[39]; // weak -int dword_51EE0C; // weak -int dword_51EEE0; // weak -int dword_51F198[266]; // weak -int dword_51F5C0[532]; // weak -char WXML::RPX::acceptStr(char const*,int &)::inited; // weak -_UNKNOWN WXML::RPX::acceptID(char const*,int &)::nextPos; // weak -int dword_51FF24[30]; // weak -int dword_51FF9C; // weak -int dword_51FFA4[217]; // weak -int dword_520308; // weak -int dword_52030C; // weak -int dword_520310; // weak -int dword_520314; // weak -int dword_520318; // weak -int dword_52031C; // weak -int dword_520320; // weak -int dword_520324; // weak -int dword_520328; // weak -int dword_52032C; // weak -int dword_52034C[30]; // weak -int dword_5203C4; // weak -int dword_5203CC[169]; // weak -char WXML::RPX::acceptID(char const*,int &)::inited; // weak -_UNKNOWN WXSS::Tokenizer::SCC; // weak -int dword_5206B8[1786]; // weak -int WXSS::Tokenizer::TT[]; // weak -int dword_522AA0[]; // weak -_UNKNOWN unk_7FFFFF; // weak -_UNKNOWN unk_1440001; // weak -int WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited; // weak -int __native_startup_lock; // weak -int __native_startup_state; // weak -int _dowildcard; // weak -int mingw_initcharmax; // weak -int _newmode; // weak -int mingw_initltssuo_force; // weak -int mingw_initltsdyn_force; // weak -int mingw_initltsdrot_force; // weak -int _commode; -int mingw_app_type; // weak -int was_init_0; // weak -int maxSections; // weak -int the_secs; // weak -int (__cdecl *stUserMathErr)(_DWORD); // weak -int _fmode; -int (__stdcall *__mingw_oldexcpt_handler)(_DWORD); // weak -void *key_dtor_list; // idb -int __mingwthr_cs_init; // weak -struct _RTL_CRITICAL_SECTION __mingwthr_cs; // idb -DWORD fc_key; // idb -int fc_static; // weak -int emutls_size; // weak -DWORD emutls_key; // idb -int emutls_mutex; // weak -HANDLE hHandle; // idb -char __hexdig_D2A[48]; // weak -char byte_1522390; // weak -int p5s; // weak -_UNKNOWN private_mem; // weak -int freelist[]; // weak -int dword_1522D84; // weak -int dtoa_CS_init; // weak -struct _RTL_CRITICAL_SECTION dtoa_CritSec; // idb -struct _RTL_CRITICAL_SECTION CriticalSection; // idb -_UNKNOWN bss_1; // weak -_UNKNOWN internal_mbstate_1; // weak -_UNKNOWN internal_mbstate_2; // weak -int (__stdcall *pRtlGenRandom)(_DWORD, _DWORD); // weak -int msvcrt__lc_codepage; // weak -// extern HANDLE (__stdcall *CreateSemaphoreW)(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName); -// extern void (__stdcall *DeleteCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); -// extern void (__stdcall *EnterCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); -// extern DWORD (__stdcall *GetCurrentThreadId)(); -// extern DWORD (__stdcall *GetLastError)(); -// extern HMODULE (__stdcall *GetModuleHandleW)(LPCWSTR lpModuleName); -// extern FARPROC (__stdcall *GetProcAddress)(HMODULE hModule, LPCSTR lpProcName); -// extern void (__stdcall *GetStartupInfoA)(LPSTARTUPINFOA lpStartupInfo); -// extern void (__stdcall *InitializeCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); -// extern BOOL (__stdcall *IsDBCSLeadByteEx)(UINT CodePage, BYTE TestChar); -// extern void (__stdcall *LeaveCriticalSection)(LPCRITICAL_SECTION lpCriticalSection); -// extern HMODULE (__stdcall *LoadLibraryW)(LPCWSTR lpLibFileName); -// extern int (__stdcall *MultiByteToWideChar)(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); -// extern BOOL (__stdcall *ReleaseSemaphore)(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); -// extern void (__stdcall *SetLastError)(DWORD dwErrCode); -// extern LPTOP_LEVEL_EXCEPTION_FILTER (__stdcall *SetUnhandledExceptionFilter)(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); -// extern void (__stdcall *Sleep)(DWORD dwMilliseconds); -// extern DWORD (__stdcall *TlsAlloc)(); -// extern BOOL (__stdcall *TlsFree)(DWORD dwTlsIndex); -// extern LPVOID (__stdcall *TlsGetValue)(DWORD dwTlsIndex); -// extern BOOL (__stdcall *TlsSetValue)(DWORD dwTlsIndex, LPVOID lpTlsValue); -// extern BOOL (__stdcall *VirtualProtect)(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); -// extern SIZE_T (__stdcall *VirtualQuery)(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); -// extern DWORD (__stdcall *WaitForSingleObject)(HANDLE hHandle, DWORD dwMilliseconds); -// extern int (__stdcall *WideCharToMultiByte)(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar); -// extern _UNKNOWN ___initenv; weak -// extern int *(__cdecl *__errno)(); -// extern int (__cdecl *__fstat64)(int FileHandle, struct _stat64 *Stat); -// extern int (__cdecl *__stricmp)(const char *String1, const char *String2); -// extern FILE *(__cdecl *__wfopen)(const wchar_t *FileName, const wchar_t *Mode); -// extern int (__cdecl *_isalpha)(int C); -_PVFV __xc_a = NULL; // idb -_PVFV __xc_z = NULL; // idb -_PVFV __crt_xc_end__ = NULL; // idb -_PVFV __xi_z = NULL; // idb - - -//----- (00401010) -------------------------------------------------------- -int pre_c_init() -{ - BOOL v0; // eax - __int16 v2; // dx - - v0 = 0; - mingw_initltsdrot_force = 1; - mingw_initltsdyn_force = 1; - mingw_initltssuo_force = 1; - mingw_initcharmax = 1; - if ( MEMORY[0x400000] == 23117 && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 ) - { - v2 = *(_WORD *)(MEMORY[0x40003C] + 4194328); - if ( v2 == 267 ) - { - if ( *(_DWORD *)(MEMORY[0x40003C] + 4194420) > 0xEu ) - v0 = *(_DWORD *)(MEMORY[0x40003C] + 4194536) != 0; - } - else if ( v2 == 523 && *(_DWORD *)(MEMORY[0x40003C] + 4194436) > 0xEu ) - { - v0 = *(_DWORD *)(MEMORY[0x40003C] + 4194552) != 0; - } - } - managedapp = v0; - if ( mingw_app_type ) - __set_app_type(_crt_gui_app); - else - __set_app_type(_crt_console_app); - *__p__fmode() = _fmode; - *__p__commode() = _commode; - _setargv(); - if ( _MINGW_INSTALL_DEBUG_MATHERR == 1 ) - __mingw_setusermatherr(_matherr); - return 0; -} -// 50B138: using guessed type int _MINGW_INSTALL_DEBUG_MATHERR; -// 15222D4: using guessed type int mingw_initcharmax; -// 15222DC: using guessed type int mingw_initltssuo_force; -// 15222E0: using guessed type int mingw_initltsdyn_force; -// 15222E4: using guessed type int mingw_initltsdrot_force; -// 15222F0: using guessed type int mingw_app_type; - -//----- (00401130) -------------------------------------------------------- -void pre_cpp_init() -{ - startinfo.newmode = _newmode; - __getmainargs(&argc, &argv, &envp, _dowildcard, &startinfo); -} -// 43FE38: using guessed type int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); -// 15222D0: using guessed type int _dowildcard; -// 15222D8: using guessed type int _newmode; - -//----- (00401170) -------------------------------------------------------- -// write access to const memory has been detected, the output may be wrong! -int __usercall __tmainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5) -{ - signed __int32 v5; // edi - signed __int32 v6; // eax - __int32 v7; // ebx - char **v8; // eax - char v9; // cl - _TCHAR *v10; // eax - char v11; // dl - char v12; // dl - DWORD wShowWindow; // eax - int v14; // ebx - size_t v15; // esi - char **v16; // eax - char **v17; // ebx - const char **v18; // edi - const char *v19; // eax - size_t Size; // esi - char *v21; // eax - int result; // eax - size_t v23; // [esp+14h] [ebp-7Ch] - char **v24; // [esp+18h] [ebp-78h] - const char **v25; // [esp+1Ch] [ebp-74h] - struct _STARTUPINFOA v26; // [esp+2Ch] [ebp-64h] BYREF - char *v27; // [esp+78h] [ebp-18h] - int v28; // [esp+7Ch] [ebp-14h] - int v29; // [esp+80h] [ebp-10h] - int v30; // [esp+84h] [ebp-Ch] - int v31; // [esp+88h] [ebp-8h] - int v32; // [esp+8Ch] [ebp-4h] - int retaddr; // [esp+90h] [ebp+0h] - - v32 = retaddr; - v31 = a2; - v30 = a3; - v29 = a4; - v28 = a1; - v27 = &a5; - memset(&v26, 0, sizeof(v26)); - if ( mingw_app_type ) - GetStartupInfoA(&v26); - v5 = *((_DWORD *)NtCurrentTeb() + 1); - while ( 1 ) - { - v6 = _InterlockedCompareExchange(&__native_startup_lock, v5, 0); - if ( !v6 ) - { - v7 = 0; - if ( __native_startup_state == 1 ) - goto LABEL_40; - goto LABEL_8; - } - if ( v5 == v6 ) - break; - Sleep(0x3E8u); - } - v7 = 1; - if ( __native_startup_state == 1 ) - { -LABEL_40: - _amsg_exit(31); - if ( __native_startup_state == 1 ) - goto LABEL_41; -LABEL_11: - if ( v7 ) - goto LABEL_12; - goto LABEL_42; - } -LABEL_8: - if ( __native_startup_state ) - { - has_cctor = 1; - } - else - { - __native_startup_state = 1; - _initterm(&__crt_xc_end__, &__xi_z); - } - if ( __native_startup_state != 1 ) - goto LABEL_11; -LABEL_41: - _initterm(&__xc_a, &__xc_z); - __native_startup_state = 2; - if ( v7 ) - goto LABEL_12; -LABEL_42: - _InterlockedExchange(&__native_startup_lock, v7); -LABEL_12: - if ( __dyn_tls_init_callback ) - __dyn_tls_init_callback(0, 2, 0); - _pei386_runtime_relocator(); - __mingw_oldexcpt_handler = (int (__stdcall *)(_DWORD))SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)_gnu_exception_handler); - _set_invalid_parameter_handler(__mingw_invalidParameterHandler); - fpreset(); - __mingw_winmain_hInstance = (HINSTANCE)0x400000; - v8 = __p__acmdln(); - v9 = 0; - v10 = *v8; - if ( !v10 ) - goto LABEL_27; - while ( 1 ) - { - v11 = *v10; - if ( *v10 <= 32 ) - break; - if ( v11 == 34 ) - v9 ^= 1u; -LABEL_19: - ++v10; - } - if ( !v11 ) - goto LABEL_26; - if ( (v9 & 1) != 0 ) - { - v9 = 1; - goto LABEL_19; - } - do - v12 = *++v10; - while ( v12 && v12 <= 32 ); -LABEL_26: - __mingw_winmain_lpCmdLine = v10; -LABEL_27: - if ( mingw_app_type ) - { - wShowWindow = 10; - if ( (v26.dwFlags & 1) != 0 ) - wShowWindow = v26.wShowWindow; - _data_start__ = wShowWindow; - } - v14 = argc; - v15 = 4 * argc + 4; - v16 = (char **)malloc(v15); - v24 = v16; - if ( v14 > 0 ) - { - v17 = v16; - v18 = (const char **)argv; - v23 = v15 - 4; - v25 = (const char **)((char *)argv + v15 - 4); - do - { - v19 = *v18; - ++v17; - ++v18; - Size = strlen(v19) + 1; - v21 = (char *)malloc(Size); - *(v17 - 1) = v21; - memcpy(v21, *(v18 - 1), Size); - } - while ( v25 != v18 ); - v16 = (char **)((char *)v24 + v23); - } - *v16 = 0; - argv = v24; - __main(); - ___initenv = envp; - result = main(argc, (const char **)argv, ___initenv); - mainret = result; - if ( !managedapp ) - exit(result); - if ( !has_cctor ) - { - _cexit(); - return mainret; - } - return result; -} -// 40137A: write access to const memory at 1523268 has been detected -// 401170: could not find valid save-restore pair for ebx -// 401170: could not find valid save-restore pair for ebp -// 401170: could not find valid save-restore pair for edi -// 401170: could not find valid save-restore pair for esi -// 4012B2: conditional instruction was optimized away because dl.1!=0 -// 43FE08: using guessed type int __cdecl _amsg_exit(_DWORD); -// 514980: using guessed type int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD); -// 15222C8: using guessed type int __native_startup_lock; -// 15222CC: using guessed type int __native_startup_state; -// 15222F0: using guessed type int mingw_app_type; -// 1522308: using guessed type int (__stdcall *__mingw_oldexcpt_handler)(_DWORD); - -//----- (004014B0) -------------------------------------------------------- -int __usercall WinMainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5) -{ - mingw_app_type = 1; - return __tmainCRTStartup(a1, a2, a3, a4, a5); -} -// 15222F0: using guessed type int mingw_app_type; - -//----- (004014C0) -------------------------------------------------------- -int __usercall mainCRTStartup@(int a1@, int a2@, int a3@, int a4@, char a5) -{ - mingw_app_type = 0; - return __tmainCRTStartup(a1, a2, a3, a4, a5); -} -// 15222F0: using guessed type int mingw_app_type; - -//----- (004014D0) -------------------------------------------------------- -int __cdecl atexit(_PVFV func) -{ - return -(_onexit((_onexit_t)func) == 0); -} - -//----- (004014F0) -------------------------------------------------------- -int __gcc_register_frame() -{ - return atexit(__gcc_deregister_frame); -} - -//----- (00401520) -------------------------------------------------------- -int printf(char *a1, ...) -{ - FILE *v1; // eax - va_list va; // [esp+24h] [ebp+Ch] BYREF - - va_start(va, a1); - v1 = ___acrt_iob_func(1u); - return __mingw_vfprintf(v1, a1, (int *)va); -} - -//----- (00401550) -------------------------------------------------------- -int fprintf(_iobuf *a1, char *a2, ...) -{ - va_list va; // [esp+28h] [ebp+10h] BYREF - - va_start(va, a2); - return __mingw_vfprintf(a1, a2, (int *)va); -} - -//----- (00401571) -------------------------------------------------------- -void __tcf_1(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (0040157C) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (004015B0) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 **v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 **v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = (unsigned __int8 **)*this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = (unsigned __int8 **)*this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == this + 2 ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 401617: variable 'v9' is possibly undefined - -//----- (00401638) -------------------------------------------------------- -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, (size_t)this[1], Str, v2); -} - -//----- (00401676) -------------------------------------------------------- -int __thiscall std::string::basic_string(void **this, char *Str) -{ - char *v3; // edi - int result; // eax - int v5; // edx - int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = strlen(Str); - v3 = &Str[v6[0]]; - if ( v6[0] > 0xFu ) - { - *this = std::string::_M_create((unsigned int *)v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); - result = v6[0]; - v5 = (int)*this; - this[1] = (void *)v6[0]; - *(_BYTE *)(v5 + result) = 0; - return result; -} -// 401676: using guessed type size_t var_1C[7]; - -//----- (004016F4) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00401734) -------------------------------------------------------- -int __cdecl Usage(int a1, const char **a2) -{ - printf("*** WeChat Stylesheet Compiler, Version %s ***\n", "v0.4me_20190328_db"); - printf( - "Usage: %s [-lc] [-o OUTPUT] [-s ] [-st] [-js] [-db] [-cp ] [-pc ] <[-sd ] | [import_css_files..]>\n", - *a2); - printf(" -lc: need to lint the css\n"); - printf(" -sd: 'someclass { font-size: 18px }'\n"); - printf(" -s: read from stdin\n"); - printf(" -o: output destination (default stdout)\n"); - printf(" -st: print tree\n"); - printf(" -db: add debug attr\n"); - printf(" -js: js formate output\n"); - printf(" -cp: add class prefix\n"); - printf(" -pc: page wxss files count\n"); - return 0; -} - -//----- (004017D3) -------------------------------------------------------- -int __cdecl ReadFile(char *FileName, unsigned int **a2) -{ - FILE *v2; // eax - FILE *v3; // ebx - int v4; // edi - char Buffer[4]; // [esp+10h] [ebp-418h] BYREF - char v7[1020]; // [esp+14h] [ebp-414h] BYREF - - std::string::operator=(a2, (char *)&byte_50D216); - v2 = ___acrt_iob_func(0); - if ( FileName ) - v2 = fopen(FileName, "r"); - v3 = v2; - v4 = -1; - if ( v2 ) - { - *(_DWORD *)Buffer = 0; - memset(v7, 0, sizeof(v7)); - while ( fgets(Buffer, 1024, v3) ) - std::string::append(a2, Buffer); - v4 = 0; - if ( FileName ) - fclose(v3); - } - return v4; -} - -//----- (00401879) -------------------------------------------------------- -int __cdecl Trim(int a1, int a2) -{ - unsigned int v2; // eax - void *v4[6]; // [esp+50h] [ebp-38h] BYREF - void *v5[8]; // [esp+68h] [ebp-20h] BYREF - - std::string::basic_string((char *)a1, a2); - while ( *(_DWORD *)(a1 + 4) > 1u && **(_BYTE **)a1 == 32 ) - { - std::string::substr(v4, (_DWORD *)a1, 1u, 0xFFFFFFFF); - std::string::operator=((unsigned __int8 **)a1, (int)v4); - std::string::_M_dispose(v4); - } - while ( 1 ) - { - v2 = *(_DWORD *)(a1 + 4); - if ( v2 <= 1 || *(_BYTE *)(*(_DWORD *)a1 + v2 - 1) != 32 ) - break; - std::string::substr(v5, (_DWORD *)a1, 0, v2 - 1); - std::string::operator=((unsigned __int8 **)a1, (int)v5); - std::string::_M_dispose(v5); - } - return a1; -} - -//----- (0040199E) -------------------------------------------------------- -int __cdecl GetNextArg(int a1, int *a2, int a3) -{ - unsigned int v3; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-90h] - void *v6[2]; // [esp+58h] [ebp-50h] BYREF - char v7; // [esp+60h] [ebp-48h] BYREF - void *v8[6]; // [esp+70h] [ebp-38h] BYREF - void *v9[8]; // [esp+88h] [ebp-20h] BYREF - - v3 = std::string::find(a2, *(char **)a3, 0); - v6[1] = 0; - lpuexcpt = (struct _Unwind_Exception *)v3; - v6[0] = &v7; - v7 = 0; - if ( v3 == -1 ) - { - std::string::_M_assign((int)v6, (int)a2); - std::string::operator=((unsigned int **)a2, (char *)&byte_50D216); - } - else - { - std::string::substr(v8, a2, 0, v3); - std::string::operator=((unsigned __int8 **)v6, (int)v8); - std::string::_M_dispose(v8); - std::string::substr(v9, a2, (unsigned int)lpuexcpt + *(_DWORD *)(a3 + 4), 0xFFFFFFFF); - std::string::operator=((unsigned __int8 **)a2, (int)v9); - std::string::_M_dispose(v9); - } - Trim(a1, (int)v6); - std::string::_M_dispose(v6); - return a1; -} - -//----- (00401B15) -------------------------------------------------------- -int __cdecl EscapeToJsonString(int a1, int a2) -{ - unsigned __int8 v2; // al - char *v3; // eax - char *v4; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-110h] - unsigned __int8 v7; // [esp+57h] [ebp-D1h] BYREF - int v8; // [esp+58h] [ebp-D0h] BYREF - char v9[204]; // [esp+5Ch] [ebp-CCh] BYREF - - std::ostringstream::basic_ostringstream((int)&v8); - for ( lpuexcpt = *(struct _Unwind_Exception **)a2; - lpuexcpt != (struct _Unwind_Exception *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 4)); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v2 = *(_BYTE *)lpuexcpt; - if ( *(_BYTE *)lpuexcpt == 92 || v2 == 34 || v2 <= 0x1Fu ) - { - v3 = (char *)std::operator<<>((std::ostream::sentry *)&v8, "\\u"); - v4 = std::ostream::operator<<(v3, (void (__cdecl *)(char *))std::hex); - *(_DWORD *)&v4[*(_DWORD *)(*(_DWORD *)v4 - 12) + 8] = 4; - std::operator<<>(v4, 48); - std::ostream::operator<<(*(char *)lpuexcpt); - } - else - { - v7 = *(_BYTE *)lpuexcpt; - std::__ostream_insert>((std::ostream::sentry *)&v8, (int)&v7, 1); - } - } - std::stringbuf::str(a1, (int)v9); - std::ostringstream::~ostringstream((int)&v8); - return a1; -} -// 4A2900: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 401B15: using guessed type char var_CC[204]; - -//----- (00401CB0) -------------------------------------------------------- -int __cdecl DictToJsonString(int a1, int a2) -{ - char v2; // al - std::ostream::sentry *v3; // eax - std::ostream::sentry *v4; // eax - std::ostream::sentry *v6; // [esp+14h] [ebp-124h] - std::ostream::sentry *v7; // [esp+14h] [ebp-124h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-120h] - char *v9[6]; // [esp+50h] [ebp-E8h] BYREF - char v10[4]; // [esp+68h] [ebp-D0h] BYREF - char v11[204]; // [esp+6Ch] [ebp-CCh] BYREF - - std::ostringstream::basic_ostringstream((int)v10); - std::operator<<>((std::ostream::sentry *)v10, (char *)asc_50D21C); - lpuexcpt = *(struct _Unwind_Exception **)(a2 + 12); - v2 = 1; - while ( (struct _Unwind_Exception *)(a2 + 4) != lpuexcpt ) - { - if ( !v2 ) - std::operator<<>((std::ostream::sentry *)v10, (char *)&asc_50D21C[4]); - v6 = std::operator<<>((std::ostream::sentry *)v10, (char *)&asc_50D21C[2]); - EscapeToJsonString((int)v9, (int)lpuexcpt + 16); - v3 = std::operator<<>(v6, v9[0]); - std::operator<<>(v3, "\":"); - std::string::_M_dispose((void **)v9); - v7 = std::operator<<>((std::ostream::sentry *)v10, (char *)&asc_50D21C[2]); - EscapeToJsonString((int)v9, (int)lpuexcpt + 40); - v4 = std::operator<<>(v7, v9[0]); - std::operator<<>(v4, (char *)&asc_50D21C[2]); - std::string::_M_dispose((void **)v9); - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcpt); - v2 = 0; - } - std::operator<<>((std::ostream::sentry *)v10, "}"); - std::stringbuf::str(a1, (int)v11); - std::ostringstream::~ostringstream((int)v10); - return a1; -} -// 401CB0: using guessed type char var_D0[4]; -// 401CB0: using guessed type char var_CC[204]; - -//----- (00401F3C) -------------------------------------------------------- -void __tcf_3(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (00401F46) -------------------------------------------------------- -int snprintf(FILE *a1, int a2, int a3, ...) -{ - va_list va; // [esp+2Ch] [ebp+14h] BYREF - - va_start(va, a3); - return __mingw_vsnprintf( - a1, - a2, - "var BASE_DEVICE_WIDTH = 750;\n" - "var isIOS=navigator.userAgent.match(\"iPhone\");\n" - "var deviceWidth = window.screen.width || 375;\n" - "var deviceDPR = window.devicePixelRatio || 2;\n" - "var checkDeviceWidth = window.__checkDeviceWidth__ || function() {\n" - "var newDeviceWidth = window.screen.width || 375\n" - "var newDeviceDPR = window.devicePixelRatio || 2\n" - "var newDeviceHeight = window.screen.height || 375\n" - "if (window.screen.orientation && /^landscape/.test(window.screen.orientation.type || '')) newDeviceWidth = ne" - "wDeviceHeight\n" - "if (newDeviceWidth !== deviceWidth || newDeviceDPR !== deviceDPR) {\n" - "deviceWidth = newDeviceWidth\n" - "deviceDPR = newDeviceDPR\n" - "}\n" - "}\n" - "checkDeviceWidth()\n" - "var eps = 1e-4;\n" - "var transformRPX = window.__transformRpx__ || function(number, newDeviceWidth) {\n" - "if ( number === 0 ) return 0;\n" - "number = number / BASE_DEVICE_WIDTH * ( newDeviceWidth || deviceWidth );\n" - "number = Math.floor(number + eps);\n" - "if (number === 0) {\n" - "if (deviceDPR === 1 || !isIOS) {\n" - "return 1;\n" - "} else {\n" - "return 0.5;\n" - "}\n" - "}\n" - "return number;\n" - "}\n" - "window.__rpxRecalculatingFuncs__ = window.__rpxRecalculatingFuncs__ || [];\n" - "var __COMMON_STYLESHEETS__ = __COMMON_STYLESHEETS__||{}\n" - "%s\n" - "var setCssToHead = function(file, _xcInvalid, info) {\n" - "var Ca = {};\n" - "var css_id;\n" - "var info = info || {};\n" - "var _C = __COMMON_STYLESHEETS__\n" - "function makeup(file, opt) {\n" - "var _n = typeof(file) === \"string\";\n" - "if ( _n && Ca.hasOwnProperty(file)) return \"\";\n" - "if ( _n ) Ca[file] = 1;\n" - "var ex = _n ? _C[file] : file;\n" - "var res=\"\";\n" - "for (var i = ex.length - 1; i >= 0; i--) {\n" - "var content = ex[i];\n" - "if (typeof(content) === \"object\")\n" - "{\n" - "var op = content[0];\n" - "if ( op == 0 )\n" - "res = transformRPX(content[1], opt.deviceWidth) + \"px\" + res;\n" - "else if ( op == 1)\n" - "res = opt.suffix + res;\n" - "else if ( op == 2 )\n" - "res = makeup(content[1], opt) + res;\n" - "}\n" - "else\n" - "res = content + res\n" - "}\n" - "return res;\n" - "}\n" - "var styleSheetManager = window.__styleSheetManager2__\n" - "var rewritor = function(suffix, opt, style){\n" - "opt = opt || {};\n" - "suffix = suffix || \"\";\n" - "opt.suffix = suffix;\n" - "if ( opt.allowIllegalSelector != undefined && _xcInvalid != undefined )\n" - "{\n" - "if ( opt.allowIllegalSelector )\n" - "console.warn( \"For developer:\" + _xcInvalid );\n" - "else\n" - "{\n" - "console.error( _xcInvalid );\n" - "}\n" - "}\n" - "Ca={};\n" - "css = makeup(file, opt);\n" - "if (styleSheetManager) {\n" - "var key = (info.path || Math.random()) + ':' + suffix\n" - "if (!style) {\n" - "styleSheetManager.addItem(key, info.path);\n" - "window.__rpxRecalculatingFuncs__.push(function(size){\n" - "opt.deviceWidth = size.width;\n" - "rewritor(suffix, opt, true);\n" - "});\n" - "}\n" - "styleSheetManager.setCss(key, css);\n" - "return;\n" - "}\n" - "if ( !style )\n" - "{\n" - "var head = document.head || document.getElementsByTagName('head')[0];\n" - "style = document.createElement('style');\n" - "style.type = 'text/css';\n" - "style.setAttribute( \"wxss:path\", info.path );\n" - "head.appendChild(style);\n" - "window.__rpxRecalculatingFuncs__.push(function(size){\n" - "opt.deviceWidth = size.width;\n" - "rewritor(suffix, opt, style);\n" - "});\n" - "}\n" - "if (style.styleSheet) {\n" - "style.styleSheet.cssText = css;\n" - "} else {\n" - "if ( style.childNodes.length == 0 )\n" - "style.appendChild(document.createTextNode(css));\n" - "else\n" - "style.childNodes[0].nodeValue = css;\n" - "}\n" - "}\n" - "return rewritor;\n" - "}\n", - (int *)va); -} - -//----- (00401F70) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::less,std::allocator>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::less,std::allocator>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00401FA4) -------------------------------------------------------- -int __thiscall WXSS::CSSTreeLib::LexicalChecker::Traval(_DWORD **this, _DWORD *a2) -{ - int result; // eax - - if ( *(_BYTE *)this ) - // this->offset_4->offset_8(this->offset_4, a2) - return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this[1] + 8))(this[1], *a2); - return result; -} - -//----- (00401FC4) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00401FF8) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0040202C) -------------------------------------------------------- -void __usercall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(_DWORD *)(a1 + 8); - std::string::_M_dispose((void **)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0040206C) -------------------------------------------------------- -char *__cdecl WXSS::RemoveQuote(char *a1, char **a2) -{ - char *v2; // edx - char v3; // cl - int v5; // [esp+1Fh] [ebp-9h] BYREF - - v2 = a2[1]; - if ( (unsigned int)v2 <= 2 ) - { - std::string::basic_string(a1, (char *)&byte_50DF9A, (int)&v5); - } - else - { - v3 = **a2; - if ( v3 == '\''/*39*/ || v3 == '"'/*34*/ ) - std::string::substr(a1, a2, 1u, (unsigned int)(v2 - 2)); - else - std::string::basic_string(a1, (int)a2); - } - return a1; -} - -//----- (004020D6) -------------------------------------------------------- -int __stdcall WXSS::XCompiler::DealRPX(int *a1, int a2) -{ - void *v3[8]; // [esp+58h] [ebp-20h] BYREF - - WXML::Rewrite::ToStringCode2((int)v3, a1); - WXML::GetStrForMakingCSS((char **)v3, a2); - std::string::_M_dispose(v3); - std::string::operator=((unsigned int **)a1, (char *)&byte_50DF9A); - return 0; -} - -//----- (00402184) -------------------------------------------------------- -int __thiscall WXSS::XCompiler::GetHostRule(_DWORD *this, _DWORD *a2) -{ - struct _Unwind_Exception *i; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-140h] - void *v6[2]; // [esp+50h] [ebp-108h] BYREF - char v7; // [esp+58h] [ebp-100h] BYREF - void *v8[6]; // [esp+68h] [ebp-F0h] BYREF - char v9[8]; // [esp+80h] [ebp-D8h] BYREF - char v10[4]; // [esp+88h] [ebp-D0h] BYREF - char v11[204]; // [esp+8Ch] [ebp-CCh] BYREF - - v6[1] = 0; // std::string - v6[0] = &v7; - v7 = 0; - - // this[11] -> this->offset_44 - for ( i = (struct _Unwind_Exception *)this[11]; ; i = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcpt) ) - { - lpuexcpt = i; - // this->offset_36 - if ( i == (struct _Unwind_Exception *)(this + 9) ) - break; - WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(*((_DWORD *)i + 10), (WXSS::Token *)v6); - } - std::basic_stringstream,std::allocator>::basic_stringstream((int)v9); - std::operator<<>((std::ostream::sentry *)v10, "setCssToHead(["); - WXSS::XCompiler::DealRPX((int *)v6, (int)v9); - std::operator<<>((std::ostream::sentry *)v10, "])"); - std::stringbuf::str((int)v8, (int)v11); - std::string::operator=(a2, v8); - std::string::_M_dispose(v8); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v9); - std::string::_M_dispose(v6); - return 0; -} -// 402184: using guessed type char var_D0[4]; -// 402184: using guessed type char var_CC[204]; - -//----- (0040234C) -------------------------------------------------------- -int __thiscall WXSS::XCompiler::ShowTree(_DWORD *this, _DWORD *a2) -{ - struct _Unwind_Exception *i; // eax - _DWORD *v3; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-130h] - int v7[6]; // [esp+58h] [ebp-F0h] BYREF - void *v8[3]; // [esp+70h] [ebp-D8h] BYREF - char v9[204]; // [esp+7Ch] [ebp-CCh] BYREF - - for ( i = (struct _Unwind_Exception *)this[11]; ; i = (struct _Unwind_Exception *)std::_Rb_tree_increment((int)lpuexcpt) ) - { - lpuexcpt = i; - if ( i == (struct _Unwind_Exception *)(this + 9) ) - break; - std::operator+((int)v7, "\n/* ", (int)i + 16); - v3 = std::string::append(v7, " */\n"); - std::string::basic_string(v8, v3); - std::string::operator+=(a2, (int)v8); - std::string::_M_dispose(v8); - std::string::_M_dispose((void **)v7); - std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); - WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(*((_DWORD *)lpuexcpt + 10), 0, (int)v8); - std::stringbuf::str((int)v7, (int)v9); - std::string::operator+=(a2, (int)v7); - std::string::_M_dispose((void **)v7); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); - } - return 0; -} -// 40234C: using guessed type char var_CC[204]; - -//----- (00402559) -------------------------------------------------------- -void __tcf_1_0(void) -{ - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)&dword_50CC0C); -} -// 50CC0C: using guessed type int dword_50CC0C; - -//----- (00402563) -------------------------------------------------------- -void __tcf_2(void) -{ - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)&dword_50CC00); -} -// 50CC00: using guessed type int dword_50CC00; - -//----- (0040256E) -------------------------------------------------------- -void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(_DWORD *)(a1 + 8); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 44)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (004025AA) -------------------------------------------------------- -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( - volatile signed __int32 **this, - volatile signed __int32 *a2) -{ - if ( *this != a2 ) - { - if ( a2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)a2); - if ( *this ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); - *this = a2; - } -} - -//----- (004025D6) -------------------------------------------------------- -int __thiscall WXSS::XCompiler::GetCompiled(int *this, int a2, unsigned int **a3) -{ - bool v3; // zf - int *v4; // eax - int v5; // edx - char *v6; // eax - char *v7; // eax - int v8; // edx - int v9; // eax - int *v10; // edx - char *v11; // eax - int *v13; // [esp+18h] [ebp-90h] - int v14; // [esp+1Ch] [ebp-8Ch] - int *v15; // [esp+20h] [ebp-88h] - int v16; // [esp+24h] [ebp-84h] - unsigned int i; // [esp+24h] [ebp-84h] - int v19; // [esp+68h] [ebp-40h] BYREF - volatile signed __int32 *v20; // [esp+6Ch] [ebp-3Ch] BYREF - void *v21[6]; // [esp+70h] [ebp-38h] BYREF - void *v22[2]; // [esp+88h] [ebp-20h] BYREF - char v23; // [esp+90h] [ebp-18h] BYREF - - v14 = *this; // this->offset_0 - if ( *this ) - return 6; - v13 = this + 27; // this->offset_108 - v16 = this[28]; // this->offset_112 - v15 = this + 27; // this->offset_108 - while ( v16 ) - { - v3 = (unsigned __int8)std::operator<(v16 + 16, a2) == 0; - v4 = v15; - if ( v3 ) - v4 = (int *)v16; - v5 = *(_DWORD *)(v16 + 12); - v15 = v4; - if ( v3 ) - v5 = *(_DWORD *)(v16 + 8); - v16 = v5; - } - - if ( v13 == v15 || (unsigned __int8)std::operator<(a2, (int)(v15 + 4)) ) - { - // end == find - if ( this + 9 == std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( - this + 8, - a2) ) - { - v14 = 1; - std::string::operator=(a3, (char *)&byte_50DF9A); // '\0' - } - else - { - std::string::operator=(a3, (char *)&byte_50DF9A); // '\0' - v7 = std::map>::operator[](this + 8, a2); - std::__shared_ptr::__shared_ptr(&v19, v7); - for ( i = 0; ; ++i ) - { - v8 = *(_DWORD *)(v19 + 120); - if ( (*(_DWORD *)(v19 + 124) - v8) >> 3 <= i ) - break; - if ( std::operator==(*(_DWORD *)(v8 + 8 * i), "DIRECTIVE") - && (v9 = *(_DWORD *)(*(_DWORD *)(v19 + 120) + 8 * i), - v10 = *(int **)(v9 + 120), - (unsigned int)(*(_DWORD *)(v9 + 124) - (_DWORD)v10) > 8) - && std::operator==(*v10, "@import") - && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v19 + 120) + 8 * i) + 140) ) - { - std::string::basic_string((char *)v21, *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v19 + 120) + 8 * i) + 140)); - v22[0] = &v23; - v22[1] = 0; - v23 = 0; - WXSS::XCompiler::GetCompiled(this, (int)v21, (WXSS::Token *)v22); - std::string::operator+=(a3, (int)v22); - std::string::_M_dispose(v22); - std::string::_M_dispose(v21); - } - else - { - WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode( - *(_DWORD *)(*(_DWORD *)(v19 + 120) + 8 * i), - (WXSS::Token *)a3, - 1u); - } - } - // 26 * 4 = 104 - v11 = std::map::operator[](this + 26, a2); - std::string::_M_assign((int)v11, (int)a3); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v20); - } - } - else - { - v6 = std::map::operator[](this + 26, a2); - std::string::_M_assign((int)a3, (int)v6); - } - return v14; -} - -//----- (0040292E) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall WXSS::XCompiler::GetJSCompiled(int *this, int a2, _DWORD *a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] - void *v5[2]; // [esp+50h] [ebp-38h] BYREF - char v6; // [esp+58h] [ebp-30h] BYREF - void *v7[8]; // [esp+68h] [ebp-20h] BYREF - - v6 = 0; - v5[0] = &v6; - v5[1] = 0; - lpuexcpt = (struct _Unwind_Exception *)WXSS::XCompiler::GetCompiled(this, a2, (unsigned int **)v5); - if ( !lpuexcpt ) - { - WXML::Rewrite::ToStringCode2((int)v7, (int *)v5); - std::string::operator=(a3, v7); - std::string::_M_dispose(v7); - } - std::string::_M_dispose(v5); - return lpuexcpt; -} - -//----- (004029FC) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall WXSS::XCompiler::GetWellFormattedJSCompiled(int *this, int a2, _DWORD *a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-140h] - void *v5[2]; // [esp+50h] [ebp-108h] BYREF - char v6; // [esp+58h] [ebp-100h] BYREF - void *v7[6]; // [esp+68h] [ebp-F0h] BYREF - char v8[8]; // [esp+80h] [ebp-D8h] BYREF - char v9[4]; // [esp+88h] [ebp-D0h] BYREF - char v10[204]; // [esp+8Ch] [ebp-CCh] BYREF - - v5[0] = &v6; - v5[1] = 0; - v6 = 0; - - lpuexcpt = WXSS::XCompiler::GetJSCompiled(this, a2, v5); - if ( !lpuexcpt ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); - std::operator<<>( - (std::ostream::sentry *)v9, - "var BASE_DEVICE_WIDTH = 750;\n" - "var isIOS=navigator.userAgent.match(\"iPhone\");\n" - "var deviceWidth = window.screen.width || 375;\n" - "var deviceDPR = window.devicePixelRatio || 2;\n" - "var checkDeviceWidth = window.__checkDeviceWidth__ || function() {\n" - "var newDeviceWidth = window.screen.width || 375\n" - "var newDeviceDPR = window.devicePixelRatio || 2\n" - "var newDeviceHeight = window.screen.height || 375\n" - "if (window.screen.orientation && /^landscape/.test(window.screen.orientation.type || '')) newDeviceWidth = newDevi" - "ceHeight\n" - "if (newDeviceWidth !== deviceWidth || newDeviceDPR !== deviceDPR) {\n" - "deviceWidth = newDeviceWidth\n" - "deviceDPR = newDeviceDPR\n" - "}\n" - "}\n" - "checkDeviceWidth()\n" - "var eps = 1e-4;\n" - "var transformRPX = window.__transformRpx__ || function(number, newDeviceWidth) {\n" - "if ( number === 0 ) return 0;\n" - "number = number / BASE_DEVICE_WIDTH * ( newDeviceWidth || deviceWidth );\n" - "number = Math.floor(number + eps);\n" - "if (number === 0) {\n" - "if (deviceDPR === 1 || !isIOS) {\n" - "return 1;\n" - "} else {\n" - "return 0.5;\n" - "}\n" - "}\n" - "return number;\n" - "}\n" - "window.__rpxRecalculatingFuncs__ = window.__rpxRecalculatingFuncs__ || [];\n" - "var __COMMON_STYLESHEETS__ = __COMMON_STYLESHEETS__||{}\n" - "%s\n" - "var setCssToHead = function(file, _xcInvalid, info) {\n" - "var Ca = {};\n" - "var css_id;\n" - "var info = info || {};\n" - "var _C = __COMMON_STYLESHEETS__\n" - "function makeup(file, opt) {\n" - "var _n = typeof(file) === \"string\";\n" - "if ( _n && Ca.hasOwnProperty(file)) return \"\";\n" - "if ( _n ) Ca[file] = 1;\n" - "var ex = _n ? _C[file] : file;\n" - "var res=\"\";\n" - "for (var i = ex.length - 1; i >= 0; i--) {\n" - "var content = ex[i];\n" - "if (typeof(content) === \"object\")\n" - "{\n" - "var op = content[0];\n" - "if ( op == 0 )\n" - "res = transformRPX(content[1], opt.deviceWidth) + \"px\" + res;\n" - "else if ( op == 1)\n" - "res = opt.suffix + res;\n" - "else if ( op == 2 )\n" - "res = makeup(content[1], opt) + res;\n" - "}\n" - "else\n" - "res = content + res\n" - "}\n" - "return res;\n" - "}\n" - "var styleSheetManager = window.__styleSheetManager2__\n" - "var rewritor = function(suffix, opt, style){\n" - "opt = opt || {};\n" - "suffix = suffix || \"\";\n" - "opt.suffix = suffix;\n" - "if ( opt.allowIllegalSelector != undefined && _xcInvalid != undefined )\n" - "{\n" - "if ( opt.allowIllegalSelector )\n" - "console.warn( \"For developer:\" + _xcInvalid );\n" - "else\n" - "{\n" - "console.error( _xcInvalid );\n" - "}\n" - "}\n" - "Ca={};\n" - "css = makeup(file, opt);\n" - "if (styleSheetManager) {\n" - "var key = (info.path || Math.random()) + ':' + suffix\n" - "if (!style) {\n" - "styleSheetManager.addItem(key, info.path);\n" - "window.__rpxRecalculatingFuncs__.push(function(size){\n" - "opt.deviceWidth = size.width;\n" - "rewritor(suffix, opt, true);\n" - "});\n" - "}\n" - "styleSheetManager.setCss(key, css);\n" - "return;\n" - "}\n" - "if ( !style )\n" - "{\n" - "var head = document.head || document.getElementsByTagName('head')[0];\n" - "style = document.createElement('style');\n" - "style.type = 'text/css';\n" - "style.setAttribute( \"wxss:path\", info.path );\n" - "head.appendChild(style);\n" - "window.__rpxRecalculatingFuncs__.push(function(size){\n" - "opt.deviceWidth = size.width;\n" - "rewritor(suffix, opt, style);\n" - "});\n" - "}\n" - "if (style.styleSheet) {\n" - "style.styleSheet.cssText = css;\n" - "} else {\n" - "if ( style.childNodes.length == 0 )\n" - "style.appendChild(document.createTextNode(css));\n" - "else\n" - "style.childNodes[0].nodeValue = css;\n" - "}\n" - "}\n" - "return rewritor;\n" - "}\n" - "setCssToHead(["); - WXML::GetStrForMakingCSS((char **)v5, (int)v8); - std::operator<<>( - (std::ostream::sentry *)v9, - "])( typeof __wxAppSuffixCode__ == \"undefined\"? undefined : __wxAppSuffixCode__ );"); - std::stringbuf::str((int)v7, (int)v10); - std::string::operator=(a3, v7); - std::string::_M_dispose(v7); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); - } - std::string::_M_dispose(v5); - return lpuexcpt; -} -// 4029FC: using guessed type char var_D0[4]; -// 4029FC: using guessed type char var_CC[204]; - -//----- (00402B9C) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1) -{ - int v2; // edx - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 160)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 152)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 144)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 136)); - std::_Destroy_aux::__destroy *>( - v2, - *(_DWORD *)(a1 + 120), - *(_DWORD *)(a1 + 124)); - if ( *(_DWORD *)(a1 + 120) ) - operator delete(*(void **)(a1 + 120)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 32)); - std::string::_M_dispose((void **)a1); -} -// 402BDE: variable 'v2' is possibly undefined - -//----- (00402C06) -------------------------------------------------------- -void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(_DWORD *)(a1 + 8); - std::vector::~vector((void ***)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00402C46) -------------------------------------------------------- -void __fastcall std::deque::~deque(int a1) -{ - void **v2; // edi - int v3; // edx - void ***v4; // esi - void **v5; // eax - void **v6; // edx - int v7; // edx - void **v8; // esi - unsigned int v9; // edi - void *v10; // eax - void **v11; // [esp+1Ch] [ebp-2Ch] - void **v12; // [esp+20h] [ebp-28h] - void **v13; // [esp+24h] [ebp-24h] - unsigned int v14; // [esp+28h] [ebp-20h] - int v15; // [esp+2Ch] [ebp-1Ch] - - v2 = *(void ***)(a1 + 24); - v13 = *(void ***)(a1 + 16); - v3 = *(_DWORD *)(a1 + 20); - v12 = *(void ***)(a1 + 28); - v15 = v3; - v4 = (void ***)(v3 + 4); - v14 = *(_DWORD *)(a1 + 36); - v5 = *(void ***)(a1 + 8); - while ( v14 > (unsigned int)v4 ) - { - v6 = *v4; - v11 = v5; - ++v4; - std::_Destroy_aux::__destroy((int)v6, v6, v6 + 126); - v5 = v11; - } - if ( v15 == v14 ) - { - std::_Destroy_aux::__destroy(v3, v5, v2); - } - else - { - std::_Destroy_aux::__destroy((int)v13, v5, v13); - std::_Destroy_aux::__destroy(v7, v12, v2); - } - if ( *(_DWORD *)a1 ) - { - v8 = *(void ***)(a1 + 20); - v9 = *(_DWORD *)(a1 + 36) + 4; - while ( v9 > (unsigned int)v8 ) - { - v10 = *v8++; - operator delete(v10); - } - operator delete(*(void **)a1); - } -} -// 402CB4: variable 'v7' is possibly undefined -// 402CBD: variable 'v3' is possibly undefined - -//----- (00402CF6) -------------------------------------------------------- -int __thiscall WXSS::XCompiler::GenExpr(int this, int a2, int a3, WXSS::Token *a4) -{ - int v4; // edx - int v5; // eax - int *v6; // edx - std::ostream::sentry *v7; // eax - int *v8; // eax - std::ostream::sentry *v9; // eax - std::ostream::sentry *v10; // eax - char *v11; // eax - std::ostream::sentry *v13; // [esp+10h] [ebp-78h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] - void *v16[6]; // [esp+50h] [ebp-38h] BYREF - int v17; // [esp+68h] [ebp-20h] BYREF - volatile signed __int32 *v18; // [esp+6Ch] [ebp-1Ch] BYREF - - for ( lpuexcpt = 0; ; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v4 = *(_DWORD *)(*(_DWORD *)a2 + 120); - if ( (unsigned int)lpuexcpt >= (*(_DWORD *)(*(_DWORD *)a2 + 124) - v4) >> 3 ) - break; - if ( std::operator==(*(_DWORD *)(v4 + 8 * (_DWORD)lpuexcpt), "DIRECTIVE") - && (v5 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * (_DWORD)lpuexcpt), // cur - v6 = *(int **)(v5 + 120), // cur->offset_120 - (unsigned int)(*(_DWORD *)(v5 + 124) - (_DWORD)v6) > 8) - && std::operator==(*v6, "@import") - && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * (_DWORD)lpuexcpt) + 140) ) - { - std::string::basic_string( - (char *)v16, - *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * (_DWORD)lpuexcpt) + 140)); - if ( (unsigned int)*std::map::operator[]((void **)(this + 128), (int)v16) > 1 ) - { - WXSS::XCompiler::DealRPX((int *)a4, a3); - v7 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "[2,"); - v13 = std::operator<<>(v7, "\""); - v8 = (int *)std::map::operator[]((_DWORD *)(this + 152), (int)v16); - WXML::Rewrite::ToStringCode2((int)&v17, v8); - v9 = std::operator<<(v13, &v17); - v10 = std::operator<<>(v9, "\""); - std::operator<<>(v10, "],"); - std::string::_M_dispose((void **)&v17); - } - else - { - v11 = std::map>::operator[]( - (_DWORD *)(this + 32), - (int)v16); - std::__shared_ptr::__shared_ptr(&v17, v11); - WXSS::XCompiler::GenExpr(this, (int)&v17, a3, a4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v18); - } - std::string::_M_dispose(v16); - } - else - { - WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode( - *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * (_DWORD)lpuexcpt), - a4, - 1u); - } - } - return 0; -} - -//----- (00402F86) -------------------------------------------------------- -int __thiscall WXSS::XCompiler::GetPageCss(char *this, int *a2, _DWORD *a3, int a4) -{ - std::ostream::sentry *v4; // eax - std::ostream::sentry *v5; // eax - int v6; // eax - volatile signed __int32 *v7; // ecx - std::ostream::sentry *v8; // eax - std::ostream::sentry *v9; // eax - std::ostream::sentry *v10; // eax - std::ostream::sentry *v11; // eax - int *v12; // eax - std::ostream::sentry *v13; // eax - std::ostream::sentry *v14; // eax - char *v15; // eax - std::ostream::sentry *v16; // eax - std::ostream::sentry *v17; // eax - std::ostream::sentry *v18; // eax - std::ostream::sentry *v19; // eax - std::ostream::sentry *v21; // [esp+1Ch] [ebp-16Ch] - int v22; // [esp+20h] [ebp-168h] - std::ostream::sentry *v23; // [esp+24h] [ebp-164h] - std::ostream::sentry *v24; // [esp+24h] [ebp-164h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-160h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-160h] - int v28; // [esp+60h] [ebp-128h] - volatile signed __int32 *v29; // [esp+64h] [ebp-124h] BYREF - int v30; // [esp+68h] [ebp-120h] BYREF - int v31; // [esp+6Ch] [ebp-11Ch] - char v32; // [esp+70h] [ebp-118h] BYREF - void *v33; // [esp+80h] [ebp-108h] BYREF - volatile signed __int32 *v34; // [esp+84h] [ebp-104h] BYREF - int v35; // [esp+98h] [ebp-F0h] BYREF - int v36; // [esp+9Ch] [ebp-ECh] - char v37; // [esp+A0h] [ebp-E8h] BYREF - char v38[8]; // [esp+B0h] [ebp-D8h] BYREF - char v39[4]; // [esp+B8h] [ebp-D0h] BYREF - char v40[204]; // [esp+BCh] [ebp-CCh] BYREF - - // GetPageCss - 0 - v22 = *(_DWORD *)this; - if ( *(_DWORD *)this ) - return 6; - // GetPageCss - 5 - v23 = (std::ostream::sentry *)(this + 32); - if ( this + 36 == (char *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>> - ::find( - (_DWORD *)this + 8, // this->offset_32 - (int)a2) ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)v38); - std::operator<<>((std::ostream::sentry *)v39, "setCssToHead([],undefined,{"); - v4 = std::operator<<>((std::ostream::sentry *)v39, "path:"); - lpuexcpta = std::operator<<>(v4, "\""); - WXML::Rewrite::ToStringCode2((int)&v35, a2); - v5 = std::operator<<(lpuexcpta, &v35); - std::operator<<>(v5, "\""); - std::string::_M_dispose((void **)&v35); - std::operator<<>((std::ostream::sentry *)v39, "})"); - std::stringbuf::str((int)&v35, (int)v40); - std::string::operator=(a3, &v35); - std::string::_M_dispose((void **)&v35); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v38); - return 1; - } - else - { - // GetPageCss - 10 - v30 = (int)&v32; // std::string - v31 = 0; - v32 = 0; - - if ( *(_DWORD *)(*(_DWORD *)std::map>::operator[]( - v23, // this->offset_32 - (int)a2) - + 156) - && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)std::map>::operator[]( - v23, // this->offset_32 - (int)a2) - + 156) - + 12) != -1 ) - { - v6 = *(_DWORD *)std::map>::operator[](v23, (int)a2); - v7 = *(volatile signed __int32 **)(v6 + 160); - v28 = *(_DWORD *)(v6 + 156); - v29 = v7; - if ( v7 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)v7); - std::basic_stringstream,std::allocator>::basic_stringstream((int)v38); - v21 = std::operator<<>( - (std::ostream::sentry *)v39, - "Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors.("); - WXML::Rewrite::ToStringCode2((int)&v35, a2); - v8 = std::operator<<(v21, &v35); - std::operator<<>(v8, ":"); - v9 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(v28 + 20)); - std::operator<<>(v9, ":"); - v10 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(v28 + 24)); - std::operator<<>(v10, (char *)off_50EEF5); // {')','\0',']','\0'} - std::string::_M_dispose((void **)&v35); - std::stringbuf::str((int)&v33, (int)v40); - std::string::operator=(&v30, &v33); - std::string::_M_dispose(&v33); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v38); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v29); - } - std::basic_stringstream,std::allocator>::basic_stringstream((int)v38); - std::operator<<>((std::ostream::sentry *)v39, "setCssToHead(["); - // this->offset_128 - if ( (unsigned int)*std::map::operator[]((void **)this + 32, (int)a2) <= 1 ) - { - v35 = (int)&v37; // std::string - v36 = 0; - v37 = 0; - - v15 = std::map>::operator[](v23, (int)a2); - std::__shared_ptr::__shared_ptr(&v33, v15); - WXSS::XCompiler::GenExpr((int)this, (int)&v33, (int)v38, (WXSS::Token *)&v35); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v34); - if ( v36 ) - WXSS::XCompiler::DealRPX(&v35, (int)v38); - } - else - { - v11 = std::operator<<>((std::ostream::sentry *)v39, "[2,"); - v24 = std::operator<<>(v11, "\""); - v12 = (int *)std::map::operator[]((_DWORD *)this + 38, (int)a2); - WXML::Rewrite::ToStringCode2((int)&v35, v12); - v13 = std::operator<<(v24, &v35); - v14 = std::operator<<>(v13, "\""); - std::operator<<>(v14, (char *)&off_50EEF5[2]); // ']' - } - std::string::_M_dispose((void **)&v35); - std::operator<<>((std::ostream::sentry *)v39, (char *)&off_50EEF5[2]); - if ( v31 ) - { - v16 = std::operator<<>((std::ostream::sentry *)v39, ",\""); - v17 = std::operator<<(v16, &v30); - std::operator<<>(v17, "\""); - } - else - { - std::operator<<>((std::ostream::sentry *)v39, ",undefined"); - } - std::operator<<>((std::ostream::sentry *)v39, ",{"); - v18 = std::operator<<>((std::ostream::sentry *)v39, "path:"); - lpuexcptb = std::operator<<>(v18, "\""); - WXML::Rewrite::ToStringCode2((int)&v35, a2); - v19 = std::operator<<(lpuexcptb, &v35); - std::operator<<>(v19, "\""); - std::string::_M_dispose((void **)&v35); - std::operator<<>((std::ostream::sentry *)v39, "}"); - std::operator<<>((std::ostream::sentry *)v39, (char *)off_50EEF5); // ")" - std::stringbuf::str((int)&v35, (int)v40); - std::string::operator=(a3, &v35); - std::string::_M_dispose((void **)&v35); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v38); - std::string::_M_dispose((void **)&v30); - } - return v22; -} -// 4A2900: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 402F86: using guessed type char var_D0[4]; - -//----- (0040373E) -------------------------------------------------------- -int __thiscall WXSS::XCompiler::MarkImported(int this, int a2) -{ - void *v2; // eax - char *v3; // ecx - void *v4; // eax - volatile signed __int32 **v5; // ecx - void **v6; // eax - char *v7; // eax - char *v8; // eax - int v11; // [esp+24h] [ebp-84h] - unsigned int i; // [esp+24h] [ebp-84h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-80h] - void *v14[6]; // [esp+60h] [ebp-48h] BYREF - void *v15[2]; // [esp+78h] [ebp-30h] BYREF - void **v16; // [esp+80h] [ebp-28h] - void *Block; // [esp+84h] [ebp-24h] - int v18; // [esp+88h] [ebp-20h] - char *v19; // [esp+8Ch] [ebp-1Ch] - void **v20; // [esp+90h] [ebp-18h] - void *v21; // [esp+94h] [ebp-14h] - int v22; // [esp+98h] [ebp-10h] - char *v23; // [esp+9Ch] [ebp-Ch] - - lpuexcpt = (struct _Unwind_Exception *)(this + 32); - if ( std::map>::count((_DWORD *)(this + 32), a2) ) - { - v15[1] = (void *)8; - v15[0] = operator new(0x20u); // size: 32 - - v2 = operator new(0x1F8u); - Block = v2; - v21 = v2; - v3 = (char *)v15[0] + 12; - *((_DWORD *)v15[0] + 3) = v2; - v19 = v3; - v16 = (void **)v2; - v20 = (void **)v2; - v23 = v3; - v18 = (int)v2 + 504; // v2->offset_504 - v22 = (int)v2 + 504; - std::deque::push_back(v15, a2); - while ( v16 != v20 ) - { - std::string::basic_string((char *)v14, (int)v16); // front - if ( v16 == (void **)(v18 - 24) ) - { - std::string::_M_dispose(v16); - operator delete(Block); - v4 = (void *)*((_DWORD *)v19 + 1); - v19 += 4; - Block = v4; - v18 = (int)v4 + 504; - v16 = (void **)v4; - } - else - { - std::string::_M_dispose(v16); - v16 += 6; // 后移24字节 - } - if ( *(_DWORD *)(*(_DWORD *)std::map>::operator[]( - lpuexcpt, // this->offset_32 - (int)v14) - + 156) - && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)std::map>::operator[]( - lpuexcpt, // this->offset_32 - (int)v14) - + 156) - + 12) != -1 ) - { - v11 = *(_DWORD *)std::map>::operator[]( - lpuexcpt, // this->offset_32 - (int)v14); - v5 = (volatile signed __int32 **)(*(_DWORD *)std::map>::operator[]( - lpuexcpt, // this->offset_32 - a2) - + 160); - // 160 - 1 * 4 = 156 - *(v5 - 1) = *(volatile signed __int32 **)(v11 + 156); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v5, *(volatile signed __int32 **)(v11 + 160)); - } - v6 = std::map::operator[]((void **)(this + 128), (int)v14); - *v6 = (char *)*v6 + 1; - for ( i = 0; ; ++i ) - { - v7 = std::map>::operator[]((_DWORD *)(this + 56), (int)v14); - if ( -1431655765 * ((*((_DWORD *)v7 + 1) - *(_DWORD *)v7) >> 3) <= i ) - break; - v8 = std::map>::operator[]((_DWORD *)(this + 56), (int)v14); - std::deque::push_back(v15, *(_DWORD *)v8 + 24 * i); - } - std::string::_M_dispose(v14); - } - std::deque::~deque((int)v15); - } - return 0; -} - -//----- (00403AB6) -------------------------------------------------------- -void *__thiscall WXSS::XCompiler::GetCommHead(int this, char **a2, _DWORD *a3, char a4, int *a5) -{ - int j; // eax - int insert_unique_pos; // eax - _DWORD *v7; // edx - int k; // eax - int *v9; // eax - std::ostream::sentry *v10; // eax - std::ostream::sentry *v11; // eax - std::ostream::sentry *v12; // eax - std::ostream::sentry *v13; // eax - _DWORD *v14; // eax - void *Block; // [esp+20h] [ebp-198h] - void *Blocka; // [esp+20h] [ebp-198h] - void **Blockb; // [esp+20h] [ebp-198h] - void *Blockc; // [esp+20h] [ebp-198h] - unsigned int i; // [esp+24h] [ebp-194h] - int v21; // [esp+24h] [ebp-194h] - int v22; // [esp+24h] [ebp-194h] - unsigned int v23; // [esp+24h] [ebp-194h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-190h] - char *v26; // [esp+68h] [ebp-150h] BYREF - int v27; // [esp+6Ch] [ebp-14Ch] - char v28; // [esp+70h] [ebp-148h] BYREF - int v29; // [esp+80h] [ebp-138h] BYREF - volatile signed __int32 *v30; // [esp+84h] [ebp-134h] BYREF - char v31; // [esp+88h] [ebp-130h] BYREF - int v32[6]; // [esp+98h] [ebp-120h] BYREF - const char *v33; // [esp+B0h] [ebp-108h] BYREF - int v34; // [esp+B4h] [ebp-104h] - char v35; // [esp+B8h] [ebp-100h] BYREF - void *v36[6]; // [esp+C8h] [ebp-F0h] BYREF - char v37[8]; // [esp+E0h] [ebp-D8h] BYREF - char v38[4]; // [esp+E8h] [ebp-D0h] BYREF - char v39[204]; // [esp+ECh] [ebp-CCh] BYREF - - if ( a4 - && std::map>::count((_DWORD *)(this + 32), (int)a5) ) - { - std::vector::push_back(a2, (int)a5); - } - for ( i = 0; i < -1431655765 * ((a2[1] - *a2) >> 3); ++i ) - { - Block = (void *)WXSS::XCompiler::MarkImported(this, (int)&(*a2)[24 * i]); - if ( Block ) - return Block; - } - std::basic_stringstream,std::allocator>::basic_stringstream((int)v37); - for ( j = *(_DWORD *)(this + 44); ; j = std::_Rb_tree_increment(v21) ) - { - v21 = j; - if ( this + 36 == j ) - break; - Blocka = (void *)(j + 16); - if ( (unsigned int)*std::map::operator[]((void **)(this + 128), j + 16) > 1 ) - { - std::string::basic_string((char *)&v33, (int)Blocka); // first - std::string::basic_string((char *)v36, (int)Blocka); // first - Blockb = (void **)operator new(0x40u); - std::string::basic_string(Blockb + 4, &v33); - std::string::basic_string(Blockb + 10, v36); - insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - (_DWORD *)(this + 152), - (int)(Blockb + 4)); - if ( v7 ) - { - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - (_DWORD *)(this + 152), - insert_unique_pos, - v7, - Blockb); - } - else - { - std::string::_M_dispose(Blockb + 10); - std::string::_M_dispose(Blockb + 4); - operator delete(Blockb); - } - std::string::_M_dispose(v36); - std::string::_M_dispose((void **)&v33); - } - } - for ( k = *(_DWORD *)(this + 44); ; k = std::_Rb_tree_increment(v22) ) - { - v22 = k; - if ( this + 36 == k ) - break; - Blockc = (void *)(k + 16); - if ( (unsigned int)*std::map::operator[]((void **)(this + 128), k + 16) > 1 ) - { - v9 = (int *)std::map::operator[]((_DWORD *)(this + 152), (int)Blockc); - WXML::Rewrite::ToStringCode2((int)v32, v9); - v10 = std::operator<<>( - (std::ostream::sentry *)v38, - "if (!__COMMON_STYLESHEETS__.hasOwnProperty('"); - v11 = std::operator<<(v10, v32); - std::operator<<>(v11, "'))"); - v12 = std::operator<<>((std::ostream::sentry *)v38, "__COMMON_STYLESHEETS__['"); - v13 = std::operator<<(v12, v32); - std::operator<<>(v13, "']=["); - v33 = &v35; // std::string - v34 = 0; - v35 = 0; - std::__shared_ptr::__shared_ptr( - &v29, - (_DWORD *)(v22 + 40)); - WXSS::XCompiler::GenExpr(this, (int)&v29, (int)v37, (WXSS::Token *)&v33); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); - if ( v34 ) - WXSS::XCompiler::DealRPX((int *)&v33, (int)v37); - std::operator<<>((std::ostream::sentry *)v38, "];"); - std::string::_M_dispose((void **)&v33); - std::string::_M_dispose((void **)v32); - } - } - v26 = &v28; // std::String - v27 = 0; - v28 = 0; - if ( a4 ) - { - WXSS::XCompiler::GetPageCss((char *)this, a5, &v26, 1); - if ( v27 ) - { - std::string::basic_string((char *)v32, (int)&v26); - std::string::append(v32, "();"); - std::string::operator=(&v26, v32); - std::string::_M_dispose((void **)v32); - } - } - v29 = (int)&v31; // std::string - v30 = 0; - v31 = 0; - WXSS::XCompiler::GetHostRule((_DWORD *)this, &v29); - if ( v30 ) - std::string::operator+=(&v29, "();"); - std::stringbuf::str((int)&v33, (int)v39); - v23 = v34 + 3022; - std::string::_M_dispose((void **)&v33); - lpuexcpta = (struct _Unwind_Exception *)operator new[](v23); - std::stringbuf::str((int)&v33, (int)v39); - snprintf( - (FILE *)lpuexcpta, - v23, - (int)"var BASE_DEVICE_WIDTH = 750;\n" - "var isIOS=navigator.userAgent.match(\"iPhone\");\n" - "var deviceWidth = window.screen.width || 375;\n" - "var deviceDPR = window.devicePixelRatio || 2;\n" - "var checkDeviceWidth = window.__checkDeviceWidth__ || function() {\n" - "var newDeviceWidth = window.screen.width || 375\n" - "var newDeviceDPR = window.devicePixelRatio || 2\n" - "var newDeviceHeight = window.screen.height || 375\n" - "if (window.screen.orientation && /^landscape/.test(window.screen.orientation.type || '')) newDeviceWidth = newD" - "eviceHeight\n" - "if (newDeviceWidth !== deviceWidth || newDeviceDPR !== deviceDPR) {\n" - "deviceWidth = newDeviceWidth\n" - "deviceDPR = newDeviceDPR\n" - "}\n" - "}\n" - "checkDeviceWidth()\n" - "var eps = 1e-4;\n" - "var transformRPX = window.__transformRpx__ || function(number, newDeviceWidth) {\n" - "if ( number === 0 ) return 0;\n" - "number = number / BASE_DEVICE_WIDTH * ( newDeviceWidth || deviceWidth );\n" - "number = Math.floor(number + eps);\n" - "if (number === 0) {\n" - "if (deviceDPR === 1 || !isIOS) {\n" - "return 1;\n" - "} else {\n" - "return 0.5;\n" - "}\n" - "}\n" - "return number;\n" - "}\n" - "window.__rpxRecalculatingFuncs__ = window.__rpxRecalculatingFuncs__ || [];\n" - "var __COMMON_STYLESHEETS__ = __COMMON_STYLESHEETS__||{}\n" - "%s\n" - "var setCssToHead = function(file, _xcInvalid, info) {\n" - "var Ca = {};\n" - "var css_id;\n" - "var info = info || {};\n" - "var _C = __COMMON_STYLESHEETS__\n" - "function makeup(file, opt) {\n" - "var _n = typeof(file) === \"string\";\n" - "if ( _n && Ca.hasOwnProperty(file)) return \"\";\n" - "if ( _n ) Ca[file] = 1;\n" - "var ex = _n ? _C[file] : file;\n" - "var res=\"\";\n" - "for (var i = ex.length - 1; i >= 0; i--) {\n" - "var content = ex[i];\n" - "if (typeof(content) === \"object\")\n" - "{\n" - "var op = content[0];\n" - "if ( op == 0 )\n" - "res = transformRPX(content[1], opt.deviceWidth) + \"px\" + res;\n" - "else if ( op == 1)\n" - "res = opt.suffix + res;\n" - "else if ( op == 2 )\n" - "res = makeup(content[1], opt) + res;\n" - "}\n" - "else\n" - "res = content + res\n" - "}\n" - "return res;\n" - "}\n" - "var styleSheetManager = window.__styleSheetManager2__\n" - "var rewritor = function(suffix, opt, style){\n" - "opt = opt || {};\n" - "suffix = suffix || \"\";\n" - "opt.suffix = suffix;\n" - "if ( opt.allowIllegalSelector != undefined && _xcInvalid != undefined )\n" - "{\n" - "if ( opt.allowIllegalSelector )\n" - "console.warn( \"For developer:\" + _xcInvalid );\n" - "else\n" - "{\n" - "console.error( _xcInvalid );\n" - "}\n" - "}\n" - "Ca={};\n" - "css = makeup(file, opt);\n" - "if (styleSheetManager) {\n" - "var key = (info.path || Math.random()) + ':' + suffix\n" - "if (!style) {\n" - "styleSheetManager.addItem(key, info.path);\n" - "window.__rpxRecalculatingFuncs__.push(function(size){\n" - "opt.deviceWidth = size.width;\n" - "rewritor(suffix, opt, true);\n" - "});\n" - "}\n" - "styleSheetManager.setCss(key, css);\n" - "return;\n" - "}\n" - "if ( !style )\n" - "{\n" - "var head = document.head || document.getElementsByTagName('head')[0];\n" - "style = document.createElement('style');\n" - "style.type = 'text/css';\n" - "style.setAttribute( \"wxss:path\", info.path );\n" - "head.appendChild(style);\n" - "window.__rpxRecalculatingFuncs__.push(function(size){\n" - "opt.deviceWidth = size.width;\n" - "rewritor(suffix, opt, style);\n" - "});\n" - "}\n" - "if (style.styleSheet) {\n" - "style.styleSheet.cssText = css;\n" - "} else {\n" - "if ( style.childNodes.length == 0 )\n" - "style.appendChild(document.createTextNode(css));\n" - "else\n" - "style.childNodes[0].nodeValue = css;\n" - "}\n" - "}\n" - "return rewritor;\n" - "}\n", - v33); - std::string::_M_dispose((void **)&v33); - std::operator+((int)v32, (char *)lpuexcpta, (int)&v29); - v14 = std::string::append(v32, (int)&v26); - std::string::basic_string(&v33, v14); - std::string::operator=(a3, &v33); - std::string::_M_dispose((void **)&v33); - std::string::_M_dispose((void **)v32); - operator delete[](lpuexcpta); - std::string::_M_dispose((void **)&v29); - std::string::_M_dispose((void **)&v26); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v37); - return 0; -} -// 403CDA: variable 'v7' is possibly undefined -// 403AB6: using guessed type char var_D0[4]; - -//----- (0040428A) -------------------------------------------------------- -void __fastcall std::deque>::~deque(int a1) -{ - int v2; // edi - int v3; // edx - int *v4; // esi - int v5; // eax - int v6; // edx - int v7; // edx - void **v8; // esi - unsigned int v9; // edi - void *v10; // eax - int v11; // [esp+1Ch] [ebp-2Ch] - int v12; // [esp+20h] [ebp-28h] - int v13; // [esp+24h] [ebp-24h] - unsigned int v14; // [esp+28h] [ebp-20h] - int v15; // [esp+2Ch] [ebp-1Ch] - - v2 = *(_DWORD *)(a1 + 24); - v13 = *(_DWORD *)(a1 + 16); - v3 = *(_DWORD *)(a1 + 20); - v12 = *(_DWORD *)(a1 + 28); - v15 = v3; - v4 = (int *)(v3 + 4); - v14 = *(_DWORD *)(a1 + 36); - v5 = *(_DWORD *)(a1 + 8); - while ( v14 > (unsigned int)v4 ) - { - v6 = *v4; - v11 = v5; - ++v4; - std::_Destroy_aux::__destroy *>(v6, v6, v6 + 512); - v5 = v11; - } - if ( v15 == v14 ) - { - std::_Destroy_aux::__destroy *>(v3, v5, v2); - } - else - { - std::_Destroy_aux::__destroy *>(v13, v5, v13); - std::_Destroy_aux::__destroy *>(v7, v12, v2); - } - if ( *(_DWORD *)a1 ) - { - v8 = *(void ***)(a1 + 20); - v9 = *(_DWORD *)(a1 + 36) + 4; - while ( v9 > (unsigned int)v8 ) - { - v10 = *v8++; - operator delete(v10); - } - operator delete(*(void **)a1); - } -} -// 4042F8: variable 'v7' is possibly undefined -// 404301: variable 'v3' is possibly undefined - -//----- (00404339) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl WXSS::LintAndParseCSS( - int *a1, - char **a2, - unsigned int **a3, - unsigned int **a4, - char a5, - char a6, - char a7, - char a8, - int a9) -{ - int *v9; // eax - WXSS::CSSTreeLib::Parser *v11; // [esp+0h] [ebp-1B8h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-190h] - volatile signed __int32 *v13; // [esp+68h] [ebp-150h] BYREF - volatile signed __int32 *v14; // [esp+6Ch] [ebp-14Ch] BYREF - void *v15[6]; // [esp+70h] [ebp-148h] BYREF - int v16[22]; // [esp+88h] [ebp-130h] BYREF - void *v17; // [esp+E0h] [ebp-D8h] BYREF - volatile signed __int32 *v18; // [esp+E4h] [ebp-D4h] BYREF - char v19[204]; // [esp+ECh] [ebp-CCh] BYREF - - WXSS::CSSTreeLib::Parser::Parser(v11); - lpuexcpt = (struct _Unwind_Exception *)WXSS::CSSTreeLib::Parser::Parse((int)v16, a2, a1, a4, a9); - if ( !lpuexcpt ) - { - v13 = 0; - v14 = 0; - std::__shared_ptr::__shared_ptr(&v17, v16); - std::__shared_ptr::operator=( - &v13, - (volatile signed __int32 **)&v17); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v18); - std::string::operator=(a3, "/*"); - std::string::operator+=(a3, "v0.4me_20190328_db"); - std::string::operator+=(a3, "*/\n"); - if ( a6 ) - { - if ( a8 ) - v9 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); - else - v9 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); - WXSS::CSSTreeLib::LexicalChecker::Traval((_DWORD **)v9, &v13); - } - if ( a5 ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v17); - WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream((int)v13, 0, (int)&v17); - std::stringbuf::str((int)v15, (int)v19); - std::string::operator+=(a3, (int)v15); - std::string::_M_dispose(v15); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v17); - } - else if ( a7 ) - { - WXML::Rewrite::ToStringCode2((int)&v17, (int *)a3); - std::string::operator+=(a3, (int)&v17); - std::string::_M_dispose(&v17); - } - else - { - WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode((int)v13, (WXSS::Token *)a3, 1u); - } - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v14); - } - WXSS::CSSTreeLib::Parser::~Parser((int)v16); - return lpuexcpt; -} -// 4043AE: variable 'v11' is possibly undefined -// 404339: using guessed type _DWORD var_130[22]; -// 404339: using guessed type char var_CC[204]; - -//----- (00404670) -------------------------------------------------------- -void __thiscall WXSS::XCompiler::XCompiler(char *this, _DWORD *a2, char a3, int a4) -{ - int *v4; // eax - _DWORD *i; // eax - int v6; // edx - int v7; // eax - int *v8; // edx - char *Literal; // eax - char *v10; // eax - int insert_unique_pos; // eax - _DWORD *v12; // edx - int j; // eax - int k; // eax - bool v15; // zf - char *v16; // eax - int v17; // edx - int v18; // edx - void **v19; // eax - int *v20; // eax - bool v21; // zf - int *v22; // eax - int v23; // edx - void **v24; // eax - char *v25; // eax - char *v26; // eax - void **v27; // eax - void **v28; // eax - WXSS::CSSTreeLib::Parser *v29; // [esp+0h] [ebp-158h] - bool v30; // [esp+1Bh] [ebp-13Dh] - int *v31; // [esp+20h] [ebp-138h] - int v32; // [esp+20h] [ebp-138h] - char *v33; // [esp+24h] [ebp-134h] - char *v34; // [esp+28h] [ebp-130h] - char *v35; // [esp+2Ch] [ebp-12Ch] - int *v36; // [esp+2Ch] [ebp-12Ch] - void **v37; // [esp+30h] [ebp-128h] - int v38; // [esp+34h] [ebp-124h] - int v39; // [esp+34h] [ebp-124h] - int v40; // [esp+34h] [ebp-124h] - void *v41; // [esp+34h] [ebp-124h] - _DWORD *v42; // [esp+38h] [ebp-120h] - char *v43; // [esp+38h] [ebp-120h] - int v44; // [esp+38h] [ebp-120h] - int v45; // [esp+38h] [ebp-120h] - unsigned int ii; // [esp+38h] [ebp-120h] - unsigned int v47; // [esp+3Ch] [ebp-11Ch] - int v48; // [esp+3Ch] [ebp-11Ch] - int v49; // [esp+3Ch] [ebp-11Ch] - unsigned int m; // [esp+3Ch] [ebp-11Ch] - int v51; // [esp+3Ch] [ebp-11Ch] - unsigned int n; // [esp+3Ch] [ebp-11Ch] - _DWORD *Block; // [esp+40h] [ebp-118h] - _DWORD *Blocka; // [esp+40h] [ebp-118h] - char *v55; // [esp+44h] [ebp-114h] - int v57; // [esp+80h] [ebp-D8h] BYREF - volatile signed __int32 *v58; // [esp+84h] [ebp-D4h] BYREF - int v59; // [esp+88h] [ebp-D0h] BYREF - volatile signed __int32 *v60; // [esp+8Ch] [ebp-CCh] BYREF - int *v61; // [esp+90h] [ebp-C8h] BYREF - int *v62; // [esp+94h] [ebp-C4h] - int v63; // [esp+98h] [ebp-C0h] BYREF - void *v64; // [esp+A8h] [ebp-B0h] BYREF - int v65; // [esp+ACh] [ebp-ACh] BYREF - int v66; // [esp+B0h] [ebp-A8h] - int *v67; // [esp+B4h] [ebp-A4h] - int *v68; // [esp+B8h] [ebp-A0h] - int v69; // [esp+BCh] [ebp-9Ch] - int v70; // [esp+C0h] [ebp-98h] BYREF v70->offset_0 - int v71; // [esp+C4h] [ebp-94h] BYREF v70->offset_4 - int v72[3]; // [esp+C8h] [ebp-90h] BYREF v70->offset_8, v70->offset_12, v70->offset_16 - int v73; // [esp+D4h] [ebp-84h] v70->offset_20 - int v74[6]; // [esp+D8h] [ebp-80h] BYREF - int v75; // [esp+F0h] [ebp-68h] BYREF - volatile signed __int32 *v76; // [esp+F4h] [ebp-64h] BYREF - void *v77[24]; // [esp+F8h] [ebp-60h] BYREF - - // char* this - v55 = this + 8; // this->offset_8 - this[16] = 0; - - // this->offset_8 std::string - *((_DWORD *)this + 2) = this + 16; - // this->offset_12 - *((_DWORD *)this + 3) = 0; - - // this->offset_36 - *((_DWORD *)this + 9) = 0; - // this->offset_40 - *((_DWORD *)this + 10) = 0; - // offset_44 - *((_DWORD *)this + 11) = this + 36; - *((_DWORD *)this + 12) = this + 36; - *((_DWORD *)this + 13) = 0; - v34 = this + 56; - *((_DWORD *)this + 15) = 0; - *((_DWORD *)this + 16) = 0; - v35 = this + 60; - *((_DWORD *)this + 19) = 0; - *((_DWORD *)this + 17) = this + 60; - *((_DWORD *)this + 18) = this + 60; - v37 = (void **)(this + 80); - *((_DWORD *)this + 21) = 0; - *((_DWORD *)this + 22) = 0; - *((_DWORD *)this + 23) = this + 84; - *((_DWORD *)this + 24) = this + 84; - *((_DWORD *)this + 25) = 0; - *((_DWORD *)this + 29) = this + 108; - *((_DWORD *)this + 30) = this + 108; - *((_DWORD *)this + 27) = 0; - *((_DWORD *)this + 28) = 0; - *((_DWORD *)this + 31) = 0; - *((_DWORD *)this + 35) = this + 132; - *((_DWORD *)this + 36) = this + 132; - *((_DWORD *)this + 33) = 0; - *((_DWORD *)this + 34) = 0; - *((_DWORD *)this + 37) = 0; - *((_DWORD *)this + 39) = 0; - *((_DWORD *)this + 40) = 0; - *((_DWORD *)this + 41) = this + 156; - *((_DWORD *)this + 42) = this + 156; - *((_DWORD *)this + 43) = 0; - // XCompiler - 0 - if ( a3 ) - v4 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); - else - v4 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); - v31 = v4; - *(_DWORD *)this = 0; - *((_DWORD *)this + 1) = 0; - - // a2->offset_12 - for ( i = (_DWORD *)a2[3]; ; i = (_DWORD *)std::_Rb_tree_increment(v38) ) - { - v38 = (int)i; - Block = a2 + 1; - // a2->offset_4 - if ( a2 + 1 == i ) // end - break; - WXSS::CSSTreeLib::Parser::Parser(v29); - - v61 = &v63; // std::string - v62 = 0; - LOBYTE(v63) = 0; - - // int v38 - v42 = (_DWORD *)(v38 + 16); - v47 = WXSS::CSSTreeLib::Parser::Parse((int)v77, (char **)(v38 + 40), (int *)(v38 + 16), (unsigned int **)&v61, a4); - if ( v47 ) - { - ++*((_DWORD *)this + 1); - std::string::operator+=(v55, (int)&v61); - std::string::operator+=(v55, "\n"); - *(_DWORD *)this = v47; - } - else - { - std::__shared_ptr::__shared_ptr(&v57, v77); - WXSS::CSSTreeLib::LexicalChecker::Traval((_DWORD **)v31, &v57); - while ( 1 ) - { - v6 = *(_DWORD *)(v57 + 120); - if ( (*(_DWORD *)(v57 + 124) - v6) >> 3 <= v47 ) - break; - if ( std::operator==(*(_DWORD *)(v6 + 8 * v47), "DIRECTIVE") ) - { - v7 = *(_DWORD *)(*(_DWORD *)(v57 + 120) + 8 * v47); // current - v8 = *(int **)(v7 + 120); - if ( (unsigned int)(*(_DWORD *)(v7 + 124) - (_DWORD)v8) > 8 && std::operator==(*v8, "@import") ) - { - Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)(*(_DWORD *)(*(_DWORD *)( - *(_DWORD *)(*(_DWORD *)(v57 + 120) + 8 * v47) // current - + 120) // v8 - + 8) - + 24)); - std::string::basic_string(v74, Literal, (int)&v70); - WXSS::RemoveQuote((char *)&v64, (char **)v74); - std::string::_M_dispose((void **)v74); - - v70 = (int)v72; - v71 = 0; - LOBYTE(v72[0]) = 0; - - std::string::substr(v74, &v64, 0, 1u); - v30 = std::operator==((int)v74, "/"); - std::string::_M_dispose((void **)v74); - if ( v30 ) - { - std::string::basic_string(v74, ".", (int)&v59); - std::string::operator+=(v74, (int)&v64); - if ( Block != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a2, - (int)v74) ) - std::string::_M_assign((int)&v70, (int)v74); - std::string::operator+=(v74, ".wxss"); - if ( Block != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a2, - (int)v74) ) - std::string::_M_assign((int)&v70, (int)v74); - std::string::_M_dispose((void **)v74); - } - if ( !v71 ) - MMBizWxaAppComm::PathCombine(v42, &v64, (unsigned int **)&v70); - if ( Block == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a2, - (int)&v70) ) - std::string::operator+=(&v70, ".wxss"); - if ( Block == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a2, - (int)&v70) ) - { - std::string::operator+=(v55, "path `"); - std::string::operator+=(v55, (int)&v64); - std::string::operator+=(v55, "` not found from `"); - std::string::operator+=(v55, (int)v42); - std::string::operator+=(v55, "`.\n"); - ++*((_DWORD *)this + 1); - *(_DWORD *)this = 3; - } - else - { - v10 = std::map>::operator[](v34, (int)v42); - std::vector::push_back((char **)v10, (int)&v70); - v33 = (char *)operator new(0x18u); - std::string::basic_string(v33, (int)&v70); - zcc::shared_ptr::shared_ptr(v33); - std::__shared_ptr::operator=( - (volatile signed __int32 **)(*(_DWORD *)(*(_DWORD *)(v57 + 120) + 8 * v47) + 140), - (volatile signed __int32 **)&v59); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v60); - } - std::string::_M_dispose((void **)&v70); - std::string::_M_dispose(&v64); - } - } - ++v47; - } - std::string::basic_string((char *)v74, (int)v42); - std::__shared_ptr::__shared_ptr(&v75, &v57); - // _DWORD *Blocka - Blocka = operator new(0x30u); - // Blocka->offset_16 - std::string::basic_string(Blocka + 4, v74); - // Blocka->offset_40 - std::__shared_ptr::__shared_ptr(Blocka + 10, &v75); - insert_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>> - ::_M_get_insert_unique_pos( - (_DWORD *)this + 8, // this->offset_32 - (int)(Blocka + 4)); - if ( v12 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( - (_DWORD *)this + 8, - insert_unique_pos, - v12, - Blocka); - } - else - { - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)Blocka + 11); - std::string::_M_dispose((void **)Blocka + 4); - operator delete(Blocka); - } - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v76); - std::string::_M_dispose((void **)v74); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v58); - } - std::string::_M_dispose((void **)&v61); - WXSS::CSSTreeLib::Parser::~Parser((int)v77); - } - // end for - // XCompiler - 5 - - if ( !*(_DWORD *)this ) - { - v65 = 0; - v66 = 0; - v67 = &v65; - v68 = &v65; - v69 = 0; - for ( j = a2[3]; ; j = std::_Rb_tree_increment(v48) ) - { - v48 = j; - // Block -> a2->offset_4 - if ( Block == (_DWORD *)j ) - break; - *std::map::operator[](&v64, j + 16) = 0; - } - // a2->offset_12 - for ( k = a2[3]; ; k = std::_Rb_tree_increment(v39) ) - { - v39 = k; - // Block -> a2->offset_4 - if ( Block == (_DWORD *)k ) // end - break; - v32 = k + 16; // first - v49 = *((_DWORD *)this + 16); // this->offset_64 - v43 = v35; - while ( v49 ) - { - v15 = (unsigned __int8)std::operator<(v49 + 16, v32) == 0; - v16 = v43; - if ( v15 ) - v16 = (char *)v49; - v17 = *(_DWORD *)(v49 + 12); - v43 = v16; - if ( v15 ) - v17 = *(_DWORD *)(v49 + 8); - v49 = v17; - } - if ( v35 != v43 && !(unsigned __int8)std::operator<(v32, (int)(v43 + 16)) ) - { - for ( m = 0; ; ++m ) - { - // v43->offset_40 second - v18 = *((_DWORD *)v43 + 10); - // second->size - if ( -1431655765 * ((*((_DWORD *)v43 + 11) - v18) >> 3) <= m ) - break; - v19 = std::map::operator[](&v64, 24 * m + v18); - *v19 = (char *)*v19 + 1; - } - } - } - // XCompiler - 5 - 0 - // std::set v70; - v71 = 0; - v72[0] = 0; - v72[1] = (int)&v71; - v72[2] = (int)&v71; - v73 = 0; // v70.size() - while ( 1 ) - { - // int *v20 - v20 = v67; - // v61 -> std::vector - v61 = 0; - v62 = 0; - v63 = 0; - while ( 1 ) - { - v44 = (int)v20; // 动态指针 - if ( v20 == &v65 ) // v65 end - break; - if ( !v20[10] ) // v20->offset_40 - second - { - v40 = (int)(v20 + 4); // v20->offset_16 - first std::string - v51 = v72[0]; - v36 = &v71; - while ( v51 ) - { - v21 = (unsigned __int8)std::operator<(v51 + 16, v40) == 0; - v22 = v36; - if ( v21 ) - v22 = (int *)v51; - v23 = *(_DWORD *)(v51 + 12); - v36 = v22; - if ( v21 ) - v23 = *(_DWORD *)(v51 + 8); - v51 = v23; - } - // v71 end - if ( v36 == &v71 || (unsigned __int8)std::operator<(v40, (int)(v36 + 4)) ) - { - std::vector::push_back((char **)&v61, v40); - std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( - &v70, - v40); - } - } - v20 = (int *)std::_Rb_tree_increment(v44); - } - // std::vector - if ( v62 == v61 ) // end - break; - for ( n = 0; -1431655765 * (((char *)v62 - (char *)v61) >> 3) > n; ++n ) - { - std::string::basic_string((char *)v74, (int)&v61[6 * n]); - v45 = 0; - if ( Block != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a2, - (int)v74) ) // v74 ->cur - v45 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - a2, - (int)v74)[11]; - v24 = std::map::operator[](v37, (int)v74); - *v24 = (char *)*v24 + v45; - for ( ii = 0; ; ++ii ) - { - v25 = std::map>::operator[](v34, (int)v74); - if ( -1431655765 * ((*((_DWORD *)v25 + 1) - *(_DWORD *)v25) >> 3) <= ii ) - break; - v26 = std::map>::operator[](v34, (int)v74); - std::string::basic_string((char *)v77, *(_DWORD *)v26 + 24 * ii); - v27 = std::map::operator[](&v64, (int)v77); - *v27 = (char *)*v27 - 1; - v41 = *std::map::operator[](v37, (int)v74); - v28 = std::map::operator[](v37, (int)v77); - *v28 = (char *)*v28 + (_DWORD)v41; - std::string::_M_dispose(v77); - } - std::string::_M_dispose((void **)v74); - } - std::vector::~vector((void ***)&v61); - } - // XCompiler - 5 - 5 - // a2->offset_20 - if ( a2[5] != v73 ) - { - std::string::operator+=( - v55, - "I don't know what will happen if a snake eats its tail, but a file can not import itself."); - *(_DWORD *)this = 4; - ++*((_DWORD *)this + 1); - } - std::vector::~vector((void ***)&v61); - std::_Rb_tree,std::less,std::allocator>::_M_erase(v72[0]); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(v66); - } -} -// 404863: variable 'v29' is possibly undefined -// 404DFF: variable 'v12' is possibly undefined - -//----- (00405507) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl WXSS::LintAndParseCSSList( - _DWORD *a1, - int a2, - unsigned int **a3, - int a4, - int a5, - char a6, - char a7, - char a8, - int a9) -{ - struct _Unwind_Exception *WellFormattedJSCompiled; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-F0h] - int v12[2]; // [esp+50h] [ebp-B8h] BYREF - char v13[176]; // [esp+58h] [ebp-B0h] BYREF - - WXSS::XCompiler::XCompiler((char *)v12, a1, a7, a9); - std::string::_M_assign(a4, (int)v13); - lpuexcpt = (struct _Unwind_Exception *)v12[0]; - if ( !v12[0] ) - { - std::string::operator=(a3, "/*"); - std::string::operator+=(a3, "v0.4me_20190328_db"); - std::string::operator+=(a3, "*/\n"); - if ( a8 ) - { - WellFormattedJSCompiled = (struct _Unwind_Exception *)WXSS::XCompiler::ShowTree(v12, a3); - } - else if ( a6 ) - { - WellFormattedJSCompiled = WXSS::XCompiler::GetWellFormattedJSCompiled(v12, a2, a3); - } - else - { - WellFormattedJSCompiled = (struct _Unwind_Exception *)WXSS::XCompiler::GetCompiled(v12, a2, a3); - } - lpuexcpt = WellFormattedJSCompiled; - } - WXSS::XCompiler::~XCompiler((int)v12); - return lpuexcpt; -} -// 405507: using guessed type char var_B0[176]; - -//----- (00405699) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl WXSS::NewLintAndParseCSSList( - _DWORD *a1, - char **a2, - unsigned int **a3, - int a4, - int a5, - char a6, - int a7, - int *a8) -{ - unsigned int **v8; // eax - _DWORD *v9; // eax - char *v10; // edx - _DWORD *v11; // eax - unsigned int v12; // edx - char *v13; // eax - unsigned int v14; // edx - _DWORD *v15; // eax - _DWORD *v16; // eax - int PageCss; // [esp+20h] [ebp-1A8h] - unsigned int i; // [esp+24h] [ebp-1A4h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-1A0h] - void *v21[2]; // [esp+68h] [ebp-160h] BYREF - char v22; // [esp+70h] [ebp-158h] BYREF - void *v23[2]; // [esp+80h] [ebp-148h] BYREF - char v24; // [esp+88h] [ebp-140h] BYREF - int v25[6]; // [esp+98h] [ebp-130h] BYREF - void *v26[2]; // [esp+B0h] [ebp-118h] BYREF - unsigned int v27; // [esp+B8h] [ebp-110h] BYREF - void *v28[2]; // [esp+C8h] [ebp-100h] BYREF - unsigned int v29; // [esp+D0h] [ebp-F8h] BYREF - void *v30[6]; // [esp+E0h] [ebp-E8h] BYREF - void *v31[6]; // [esp+F8h] [ebp-D0h] BYREF - int v32[2]; // [esp+110h] [ebp-B8h] BYREF - char v33[176]; // [esp+118h] [ebp-B0h] BYREF - - WXSS::XCompiler::XCompiler((char *)v32, a1, a6, a7); - std::string::_M_assign(a4, (int)v33); - lpuexcpt = (struct _Unwind_Exception *)v32[0]; - if ( !v32[0] ) - { - v21[0] = &v22; // std::string - v21[1] = 0; - v22 = 0; - - lpuexcpt = (struct _Unwind_Exception *)WXSS::XCompiler::GetCommHead((int)v32, a2, v21, 1, a8); - if ( !lpuexcpt ) - { - std::string::operator=(a3, "version=v0.4me_20190328_db="); - WXML::Rewrite::ToStringCode2((int)v28, (int *)v21); - v8 = std::string::insert((unsigned int **)v28, 0, "comm="); - std::string::basic_string(v30, v8); - v9 = std::string::append(v30, "="); - std::string::basic_string(v31, v9); - std::string::operator+=(a3, (int)v31); - std::string::_M_dispose(v31); - std::string::_M_dispose(v30); - std::string::_M_dispose(v28); - for ( i = 0; ; ++i ) - { - v10 = *a2; - if ( -1431655765 * ((a2[1] - *a2) >> 3) <= i ) - break; - - v23[0] = &v24; // std::string - v23[1] = 0; - v24 = 0; - - PageCss = WXSS::XCompiler::GetPageCss((char *)v32, (int *)&v10[24 * i], v23, 2); - if ( PageCss ) - { - std::string::_M_dispose(v23); - lpuexcpt = (struct _Unwind_Exception *)PageCss; - break; - } - WXML::Rewrite::ToStringCode2((int)v28, (int *)v23); - // byte_50DF9A '\0' - std::operator+((int)v25, (char *)&byte_50DF9A, (int)&(*a2)[24 * i]); - v11 = std::string::append(v25, "="); - std::string::basic_string(v26, v11); - v12 = 15; - v13 = (char *)v26[1] + (unsigned int)v28[1]; - if ( v26[0] != &v27 ) - v12 = v27; - if ( (unsigned int)v13 <= v12 ) - goto LABEL_14; - v14 = 15; - if ( v28[0] != &v29 ) - v14 = v29; - if ( (unsigned int)v13 > v14 ) - LABEL_14: - v15 = std::string::append(v26, (int)v28); - else - v15 = std::string::insert((unsigned int **)v28, 0, (int)v26); - std::string::basic_string(v30, v15); - v16 = std::string::append(v30, "="); - std::string::basic_string(v31, v16); - std::string::operator+=(a3, (int)v31); - std::string::_M_dispose(v31); - std::string::_M_dispose(v30); - std::string::_M_dispose(v26); - std::string::_M_dispose((void **)v25); - std::string::_M_dispose(v28); - std::string::_M_dispose(v23); - } - } - std::string::_M_dispose(v21); - } - WXSS::XCompiler::~XCompiler((int)v32); - return lpuexcpt; -} -// 405699: using guessed type char var_B0[176]; - -//----- (00405BB4) -------------------------------------------------------- -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, (size_t)this[1], Str, v2); -} - -//----- (00405BF1) -------------------------------------------------------- -void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, char **a2) -{ - int v2; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - void *v4[8]; // [esp+58h] [ebp-20h] BYREF - - lpuexcpt = 0; - v2 = -1; - while ( a1[1] > (int)lpuexcpt ) - { - if ( *((_BYTE *)lpuexcpt + *a1) == 47 ) - { - if ( (int)lpuexcpt - v2 > 1 ) - { - std::string::substr(v4, a1, v2 + 1, (unsigned int)lpuexcpt - v2 - 1); - std::vector::emplace_back(a2, v4); - std::string::_M_dispose(v4); - } - v2 = (int)lpuexcpt; - } - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - } - if ( (int)lpuexcpt - v2 > 1 ) - { - std::string::substr(v4, a1, v2 + 1, (unsigned int)lpuexcpt - v2 - 1); - std::vector::emplace_back(a2, v4); - std::string::_M_dispose(v4); - } -} - -//----- (00405D10) -------------------------------------------------------- -int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int **a3) -{ - bool v3; // zf - int v4; // eax - char *v6; // [esp+0h] [ebp-88h] - int v7; // [esp+14h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-70h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-70h] - char *v10; // [esp+50h] [ebp-38h] BYREF - char *v11; // [esp+54h] [ebp-34h] - char *v12; // [esp+58h] [ebp-30h] - char *v13; // [esp+5Ch] [ebp-2Ch] BYREF - int v14; // [esp+60h] [ebp-28h] - int v15; // [esp+64h] [ebp-24h] - void *v16; // [esp+68h] [ebp-20h] BYREF - size_t v17; // [esp+6Ch] [ebp-1Ch] - char v18[24]; // [esp+70h] [ebp-18h] BYREF - - v10 = 0; - v11 = 0; - v3 = a2[1] == 0; - v12 = 0; - v13 = 0; - v14 = 0; - v15 = 0; - if ( v3 || *(_BYTE *)*a2 != 47 ) - { - MMBizWxaAppComm::SplitBySlash(a1, &v10); - v4 = a1[1]; - if ( v4 ) - { - if ( *(_BYTE *)(*a1 + v4 - 1) != 47 ) - { - v11 -= 24; - std::string::_M_dispose((void **)v11); - } - } - } - MMBizWxaAppComm::SplitBySlash(a2, &v13); - for ( lpuexcpt = 0; - (unsigned int)lpuexcpt < -1431655765 * ((v14 - (int)v13) >> 3); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v7 = 24 * (_DWORD)lpuexcpt; - if ( !std::string::compare((int)&v13[24 * (_DWORD)lpuexcpt], "..") ) - { - if ( v10 != v11 ) - { - v11 -= 24; - std::string::_M_dispose((void **)v11); - } - } - else if ( std::string::compare((int)&v13[v7], ".") ) - { - if ( v11 == v12 ) - { - std::vector::_M_realloc_insert(&v10, v11, (int)&v13[v7]); - } - else - { - std::string::basic_string(v11, (int)&v13[v7]); - v11 += 24; - } - } - } - if ( a1[1] && *(_BYTE *)*a1 == 47 || a2[1] && *(_BYTE *)*a2 == 47 ) - v6 = "/"; - else - v6 = (char *)&unk_50F119; - std::string::operator=(a3, v6); - for ( lpuexcpta = 0; - (unsigned int)lpuexcpta < -1431655765 * ((v11 - v10) >> 3); - lpuexcpta = (struct _Unwind_Exception *)((char *)lpuexcpta + 1) ) - { - if ( lpuexcpta ) - { - v16 = v18; - std::string::_S_copy_chars(v18, "/", (size_t)""); - v17 = 1; - *((_BYTE *)v16 + 1) = 0; - std::string::_M_append(a3, v16, v17); - std::string::_M_dispose(&v16); - } - std::string::_M_append(a3, *(_BYTE **)&v10[24 * (_DWORD)lpuexcpta], *(_DWORD *)&v10[24 * (_DWORD)lpuexcpta + 4]); - } - std::vector::~vector((void ***)&v13); - std::vector::~vector((void ***)&v10); - return 0; -} - -//----- (00405FC6) -------------------------------------------------------- -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, (size_t)this[1], Str, v2); -} - -//----- (00406003) -------------------------------------------------------- -int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*a2)[266], bool *a3, int *a4) -{ - int v4; // eax - int i; // edx - int v7; // esi - int result; // eax - - v4 = 0; - for ( i = *(_DWORD *)a3; ; --i ) - { - v7 = v4; - if ( i <= 0 ) - break; - v4 = *((_DWORD *)this + 266 * v4 + *(unsigned __int8 *)a4); - if ( v4 == -1 ) - break; - a4 = (int *)((char *)a4 + 1); - } - result = -1; - if ( *((_BYTE *)*a2 + v7) ) - { - *(_DWORD *)a3 = i; - return 0; - } - return result; -} - -//----- (00406046) -------------------------------------------------------- -int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *a2) -{ - int v2; // eax - - if ( !WXML::RPX::acceptID(char const*,int &)::inited ) - { - memset(&WXML::RPX::acceptID(char const*,int &)::nextPos, 255, 0x850u); - v2 = 0; - dword_51FF9C = 1; - dword_5203C4 = 1; - do - { - dword_51FFA4[v2] = 1; - dword_51FF24[v2] = 1; - dword_5203CC[v2] = 1; - dword_52034C[v2++] = 1; - } - while ( v2 != 26 ); - dword_520308 = 1; - dword_52030C = 1; - dword_520310 = 1; - dword_520314 = 1; - dword_520318 = 1; - dword_52031C = 1; - dword_520320 = 1; - dword_520324 = 1; - dword_520328 = 1; - dword_52032C = 1; - WXML::RPX::acceptID(char const*,int &)::inited = 1; - } - return WXML::RPX::accept( - (WXML::RPX *)&WXML::RPX::acceptID(char const*,int &)::nextPos, - (int (*)[266])WXML::RPX::acceptID(char const*,int &)::canAccept, - a2, - (int *)this); -} -// 51FF24: using guessed type int dword_51FF24[30]; -// 51FF9C: using guessed type int dword_51FF9C; -// 51FFA4: using guessed type int dword_51FFA4[217]; -// 520308: using guessed type int dword_520308; -// 52030C: using guessed type int dword_52030C; -// 520310: using guessed type int dword_520310; -// 520314: using guessed type int dword_520314; -// 520318: using guessed type int dword_520318; -// 52031C: using guessed type int dword_52031C; -// 520320: using guessed type int dword_520320; -// 520324: using guessed type int dword_520324; -// 520328: using guessed type int dword_520328; -// 52032C: using guessed type int dword_52032C; -// 52034C: using guessed type int dword_52034C[30]; -// 5203C4: using guessed type int dword_5203C4; -// 5203CC: using guessed type int dword_5203CC[169]; -// 520670: using guessed type char WXML::RPX::acceptID(char const*,int &)::inited; - -//----- (00406145) -------------------------------------------------------- -int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *a2) -{ - int i; // eax - - if ( !WXML::RPX::acceptStr(char const*,int &)::inited ) - { - memset(&WXML::RPX::acceptStr(char const*,int &)::nextPos, 255, 0x18F0u); - for ( i = 0; i != 256; ++i ) - { - dword_51E948[i] = 1; - dword_51ED70[i] = 2; - dword_51F198[i] = 1; - dword_51F5C0[i] = 2; - } - dword_51E5A8 = 1; - dword_51E5BC = 2; - dword_51EAB8 = 3; - dword_51EEE0 = 4; - dword_51E9D0 = 5; - dword_51EE0C = 5; - WXML::RPX::acceptStr(char const*,int &)::inited = 1; - } - return WXML::RPX::accept( - (WXML::RPX *)&WXML::RPX::acceptStr(char const*,int &)::nextPos, - (int (*)[266])WXML::RPX::acceptStr(char const*,int &)::canAccept, - a2, - (int *)this); -} -// 51E5A8: using guessed type int dword_51E5A8; -// 51E5BC: using guessed type int dword_51E5BC; -// 51E948: using guessed type int dword_51E948[34]; -// 51E9D0: using guessed type int dword_51E9D0; -// 51EAB8: using guessed type int dword_51EAB8; -// 51ED70: using guessed type int dword_51ED70[39]; -// 51EE0C: using guessed type int dword_51EE0C; -// 51EEE0: using guessed type int dword_51EEE0; -// 51F198: using guessed type int dword_51F198[266]; -// 51F5C0: using guessed type int dword_51F5C0[532]; -// 51FE10: using guessed type char WXML::RPX::acceptStr(char const*,int &)::inited; - -//----- (0040620A) -------------------------------------------------------- -int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *a2) -{ - int v2; // eax - - if ( !WXML::RPX::acceptNum(char const*,int &)::inited ) - { - memset(&WXML::RPX::acceptNum(char const*,int &)::nextPos, 255, 0x14C8u); - v2 = 0; - dword_51D0EC = 1; - dword_51D0F4 = 1; - dword_51D0F8 = 3; - dword_51D520 = 3; - dword_51D948 = 4; - do - { - dword_51D100[v2] = 2; - dword_51D528[v2] = 2; - dword_51D950[v2] = 2; - dword_51DD78[v2] = 4; - dword_51E1A0[v2++] = 4; - } - while ( v2 != 10 ); - WXML::RPX::acceptNum(char const*,int &)::inited = 1; - } - return WXML::RPX::accept( - (WXML::RPX *)&WXML::RPX::acceptNum(char const*,int &)::nextPos, - (int (*)[266])WXML::RPX::acceptNum(char const*,int &)::canAccept, - a2, - (int *)this); -} -// 51D0EC: using guessed type int dword_51D0EC; -// 51D0F4: using guessed type int dword_51D0F4; -// 51D0F8: using guessed type int dword_51D0F8; -// 51D100: using guessed type int dword_51D100[264]; -// 51D520: using guessed type int dword_51D520; -// 51D528: using guessed type int dword_51D528[264]; -// 51D948: using guessed type int dword_51D948; -// 51D950: using guessed type int dword_51D950[266]; -// 51DD78: using guessed type int dword_51DD78[266]; -// 51E1A0: using guessed type int dword_51E1A0[218]; -// 51E508: using guessed type char WXML::RPX::acceptNum(char const*,int &)::inited; - -//----- (004062CE) -------------------------------------------------------- -int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *a2, int *a3) -{ - WXML::RPX *v3; // ebx - int v4; // edi - int v5; // esi - - v3 = this; - v4 = *(_DWORD *)a2; - v5 = *(_DWORD *)a2 - 1; - *(_DWORD *)a2 = v5; - switch ( *((_BYTE *)this + 1) ) - { - case '(': - *a3 = 3; - break; - case ')': - *a3 = 4; - break; - case '+': - *a3 = 1; - break; - case ',': - *a3 = 6; - break; - case '-': - *a3 = 2; - break; - case '.': - *a3 = 5; - break; - default: - *(_DWORD *)a2 = v4; - if ( *(_BYTE *)this == 32 || *(_BYTE *)this == 9 ) - { - while ( *(int *)a2 > 0 && (*(_BYTE *)v3 == 32 || *(_BYTE *)v3 == 9) ) - { - v3 = (WXML::RPX *)((char *)v3 + 1); - --*(_DWORD *)a2; - } - *a3 = 7; - } - else - { - *(_DWORD *)a2 = v5; - *a3 = 0; - } - break; - } - return 0; -} - -//----- (00406366) -------------------------------------------------------- -std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3) -{ - int i; // ebx - char v4; // dl - std::ostream::sentry *result; // eax - char v6; // dl - int v7; // [esp+1Fh] [ebp-9h] BYREF - - for ( i = 0; i < a2; ++i ) - { - v4 = *(_BYTE *)(a1 + i); - if ( v4 == 39 ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x27"); - continue; - } - if ( v4 <= 39 ) - { - if ( v4 == 34 ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x22"); - continue; - } - if ( v4 > 34 ) - { - if ( v4 == 38 ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x26"); - continue; - } - } - else - { - if ( v4 == 10 ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\n"); - continue; - } - if ( v4 == 13 ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\r"); - continue; - } - } - goto LABEL_31; - } - if ( v4 == 62 ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3e"); - continue; - } - if ( v4 <= 62 ) - { - if ( v4 == 60 ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3c"); - continue; - } - if ( v4 == 61 ) - { - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3d"); - continue; - } -LABEL_31: - LOBYTE(v7) = *(_BYTE *)(a1 + i); - result = std::__ostream_insert>((std::ostream::sentry *)(a3 + 8), (int)&v7, 1); - continue; - } - if ( v4 != 92 ) - goto LABEL_31; - v6 = *(_BYTE *)(a1 + i + 1); - if ( (unsigned __int8)(v6 - 92) > 0x18u ) - { - if ( v6 == 39 || v6 == 34 ) - { -LABEL_29: - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\"); - continue; - } - } - else if ( (((unsigned int)&unk_1440001 >> (v6 - 92)) & 1) != 0 ) - { - goto LABEL_29; - } - result = std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x5c"); - } - return result; -} - -//----- (0040647D) -------------------------------------------------------- -std::ostream::sentry *__cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) -{ - return WXML::Rewrite::ToStringCode(*a1, a1[1], a2); -} - -//----- (004064A0) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3) -{ - char v3; // al - char *v5; // [esp+4h] [ebp-134h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-120h] - char v7; // [esp+5Fh] [ebp-D9h] BYREF - _BYTE v8[8]; // [esp+60h] [ebp-D8h] BYREF - char v9[4]; // [esp+68h] [ebp-D0h] BYREF - char v10[204]; // [esp+6Ch] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); - for ( lpuexcpt = 0; (int)lpuexcpt < a3; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v3 = *((_BYTE *)lpuexcpt + a2); - if ( v3 == 61 ) - { - v5 = "\\x3d"; - goto LABEL_12; - } - if ( v3 > 61 ) - { - if ( v3 == 62 ) - { - v5 = "\\x3e"; - goto LABEL_12; - } - } - else - { - if ( v3 == 38 ) - { - v5 = "\\x26"; - goto LABEL_12; - } - if ( v3 == 60 ) - { - v5 = "\\x3c"; -LABEL_12: - std::operator<<>((std::ostream::sentry *)v9, v5); - continue; - } - } - v7 = *((_BYTE *)lpuexcpt + a2); - std::__ostream_insert>((std::ostream::sentry *)v9, (int)&v7, 1); - } - std::stringbuf::str(a1, (int)v10); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); - return a1; -} -// 4064A0: using guessed type char var_D0[4]; -// 4064A0: using guessed type char var_CC[204]; - -//----- (0040661C) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2) -{ - WXML::Rewrite::ToStringCode3[abi:cxx11](a1, *a2, a2[1]); - return a1; -} - -//----- (00406642) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3) -{ - char v3; // al - char *v5; // [esp+4h] [ebp-134h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-120h] - char v7; // [esp+5Fh] [ebp-D9h] BYREF - _BYTE v8[8]; // [esp+60h] [ebp-D8h] BYREF - char v9[4]; // [esp+68h] [ebp-D0h] BYREF - char v10[204]; // [esp+6Ch] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); - for ( lpuexcpt = 0; (int)lpuexcpt < a3; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v3 = *((_BYTE *)lpuexcpt + a2); - if ( v3 == 39 ) - { - v5 = "\\x27"; - goto LABEL_22; - } - if ( v3 > 39 ) - { - if ( v3 == 62 ) - { - v5 = "\\x3e"; - goto LABEL_22; - } - if ( v3 > 62 ) - { - if ( v3 == 92 ) - { - v5 = "\\\\"; - goto LABEL_22; - } - } - else - { - if ( v3 == 60 ) - { - v5 = "\\x3c"; - goto LABEL_22; - } - if ( v3 == 61 ) - { - v5 = "\\x3d"; - goto LABEL_22; - } - } - } - else - { - if ( v3 == 34 ) - { - v5 = "\\x22"; - goto LABEL_22; - } - if ( v3 > 34 ) - { - if ( v3 == 38 ) - { - v5 = "\\x26"; - goto LABEL_22; - } - } - else - { - if ( v3 == 10 ) - { - v5 = "\\n"; - goto LABEL_22; - } - if ( v3 == 13 ) - { - v5 = "\\r"; -LABEL_22: - std::operator<<>((std::ostream::sentry *)v9, v5); - continue; - } - } - } - v7 = *((_BYTE *)lpuexcpt + a2); - std::__ostream_insert>((std::ostream::sentry *)v9, (int)&v7, 1); - } - std::stringbuf::str(a1, (int)v10); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); - return a1; -} -// 406642: using guessed type char var_D0[4]; -// 406642: using guessed type char var_CC[204]; - -//----- (0040680E) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2) -{ - WXML::Rewrite::ToStringCode2[abi:cxx11](a1, *a2, a2[1]); - return a1; -} - -//----- (00406834) -------------------------------------------------------- -void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) -{ - void *v2; // ecx - _BYTE *v3; // eax - size_t v4; // eax - _BYTE *v5; // edx - int v6; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-130h] - void *Src; // [esp+58h] [ebp-F0h] BYREF - size_t Size; // [esp+5Ch] [ebp-ECh] - int v10[4]; // [esp+60h] [ebp-E8h] BYREF - char v11[12]; // [esp+70h] [ebp-D8h] BYREF - char v12[200]; // [esp+7Ch] [ebp-CCh] BYREF - - std::basic_stringstream,std::allocator>::basic_stringstream((int)v11); - WXML::Rewrite::ToStringCode(*a1, a1[1], (int)v11); - std::stringbuf::str((int)&Src, (int)v12); - v2 = Src; - v3 = *(_BYTE **)a2; - if ( Src == v10 ) - { - if ( Size ) - std::string::_S_copy(v3, (unsigned __int8 *)Src, Size); - v4 = Size; - v5 = *(_BYTE **)a2; - *(_DWORD *)(a2 + 4) = Size; - v5[v4] = 0; - } - else - { - if ( v3 == (_BYTE *)(a2 + 8) ) - v3 = 0; - else - lpuexcpt = *(struct _Unwind_Exception **)(a2 + 8); - *(_DWORD *)(a2 + 4) = Size; - v6 = v10[0]; - *(_DWORD *)a2 = v2; - *(_DWORD *)(a2 + 8) = v6; - if ( v3 ) - { - Src = v3; - v10[0] = (int)lpuexcpt; - } - else - { - Src = v10; - } - } - Size = 0; - *(_BYTE *)Src = 0; - std::string::_M_dispose(&Src); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v11); -} -// 40694C: variable 'lpuexcpt' is possibly undefined -// 406834: using guessed type char var_CC[200]; - -//----- (004069CD) -------------------------------------------------------- -int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2) -{ - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - WXML::Rewrite::ToStringCode(a2, a1); - return a1; -} - -//----- (00406A56) -------------------------------------------------------- -int __thiscall std::string::basic_string(void **this, char *Str) -{ - size_t v2; // eax - size_t v3; // eax - void **v5; // [esp+1Ch] [ebp-Ch] - - *this = this + 2; - v2 = -1; - if ( Str ) - { - v5 = this; - v3 = strlen(Str); - this = v5; - v2 = (size_t)&Str[v3]; - } - return std::string::_M_construct(this, (unsigned __int8 *)Str, v2); -} - -//----- (00406A91) -------------------------------------------------------- -void __cdecl WXML::Rewrite::GetToken(int a1, int a2) -{ - int v2; // eax - int v3; // ecx - _DWORD *v4; // ecx - int v5; // [esp+10h] [ebp-88h] - WXML::RPX *v6; // [esp+14h] [ebp-84h] - int lpuexcpt; // [esp+18h] [ebp-80h] - int v8; // [esp+54h] [ebp-44h] BYREF - bool v9[4]; // [esp+58h] [ebp-40h] BYREF - void *v10[2]; // [esp+5Ch] [ebp-3Ch] BYREF - char v11; // [esp+64h] [ebp-34h] BYREF - int v12; // [esp+74h] [ebp-24h] BYREF - void *v13[8]; // [esp+78h] [ebp-20h] BYREF - - v6 = *(WXML::RPX **)a1; - v2 = *(_DWORD *)(a1 + 4); - while ( 1 ) - { - v5 = v2; // 剩余长度 - if ( v2 <= 0 ) - break; - v8 = -1; - *(_DWORD *)v9 = v2; - lpuexcpt = WXML::RPX::acceptID(v6, v9); - if ( lpuexcpt ) - { - lpuexcpt = 1; - if ( WXML::RPX::acceptNum(v6, v9) ) - { - lpuexcpt = 2; - if ( WXML::RPX::acceptStr(v6, v9) ) - { - lpuexcpt = 3; - if ( !WXML::RPX::acceptSymbol(v6, (char *)v9, &v8) ) - lpuexcpt = (v8 == 7) + 3; - } - } - } - v10[0] = &v11; - std::string::_M_construct(v10, (unsigned __int8 *)v6, (size_t)v6 + v5 - *(_DWORD *)v9); - v12 = lpuexcpt; - std::string::basic_string(v13, v10); - v3 = *(_DWORD *)(a2 + 4); - if ( v3 == *(_DWORD *)(a2 + 8) ) - { - std::vector>::_M_realloc_insert>( - (void **)a2, - *(char **)(a2 + 4), - &v12); - } - else - { - v4 = (_DWORD *)(v3 + 4); - *(v4 - 1) = v12; - std::string::basic_string(v4, v13); - *(_DWORD *)(a2 + 4) += 28; - } - std::string::_M_dispose(v13); - std::string::_M_dispose(v10); - v2 = *(_DWORD *)v9; // 剩余长度 - // v6 + v5 最后一个字符后的指针 - v6 = (WXML::RPX *)((char *)v6 + v5 - *(_DWORD *)v9); // 当前指针位置 - } -} - -//----- (00406C6E) -------------------------------------------------------- -BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int **a2, char *a3, char *Str) -{ - int v4; // eax - int v5; // eax - _DWORD *v6; // eax - _DWORD *v7; // eax - char *v8; // eax - unsigned int v9; // edx - unsigned int v10; // edx - _DWORD *v11; // eax - char v12; // dl - size_t v13; // eax - int v15; // [esp+1Ch] [ebp-DCh] - char *v16; // [esp+1Ch] [ebp-DCh] - char v17; // [esp+23h] [ebp-D5h] - int v18; // [esp+24h] [ebp-D4h] - char *v19; // [esp+24h] [ebp-D4h] - unsigned int lpuexcpt; // [esp+28h] [ebp-D0h] - BOOL lpuexcpta; // [esp+28h] [ebp-D0h] - char *v22; // [esp+6Ch] [ebp-8Ch] BYREF - char *v23; // [esp+70h] [ebp-88h] - int v24; // [esp+74h] [ebp-84h] - void *v25[6]; // [esp+78h] [ebp-80h] BYREF - void *v26[6]; // [esp+90h] [ebp-68h] BYREF - void *v27[2]; // [esp+A8h] [ebp-50h] BYREF - unsigned int v28; // [esp+B0h] [ebp-48h] BYREF - void *v29[2]; // [esp+C0h] [ebp-38h] BYREF - unsigned int v30; // [esp+C8h] [ebp-30h] BYREF - void *v31[7]; // [esp+D8h] [ebp-20h] BYREF - - v22 = 0; - v23 = 0; - v24 = 0; - WXML::Rewrite::GetToken(a1, (int)&v22); - std::string::operator=(a2, (char *)&byte_50F1AA); // '\0' - v17 = 1; - for ( lpuexcpt = 1; lpuexcpt < -1227133513 * ((v23 - v22) >> 2); ++lpuexcpt ) - { - v4 = 28 * (lpuexcpt - 1); - v18 = v4; // pre - if ( *(_DWORD *)&v22[v4] == 1 - && (v5 = v4 + 28, v15 = v5, !*(_DWORD *)&v22[v5]) // cur - && !std::string::compare((int)&v22[v5 + 4], (char *)off_50F1AB) ) - { - std::string::basic_string(v29, Str); // a4 - v16 = &v22[v15 + 4]; // cur - v19 = &v22[v18 + 4]; // pre - std::string::basic_string(v25, a3); - v6 = std::string::append(v25, (int)v19); - std::string::basic_string(v26, v6); - v7 = std::string::append(v26, (int)v16); - std::string::basic_string(v27, v7); - v8 = (char *)v27[1] + (unsigned int)v29[1]; - v9 = 15; - if ( v27[0] != &v28 ) - v9 = v28; - if ( (unsigned int)v8 <= v9 ) - goto LABEL_15; - v10 = 15; - if ( v29[0] != &v30 ) - v10 = v30; - if ( (unsigned int)v8 > v10 ) -LABEL_15: - v11 = std::string::append(v27, (int)v29); - else - v11 = std::string::insert((unsigned int **)v29, 0, (int)v27); - std::string::basic_string(v31, v11); - std::string::operator+=(v31); - std::string::_M_dispose(v31); - std::string::_M_dispose(v27); - std::string::_M_dispose(v26); - std::string::_M_dispose(v25); - std::string::_M_dispose(v29); - v12 = v17; - if ( ++lpuexcpt == -1227133513 * ((v23 - v22) >> 2) ) - v12 = 0; - v17 = v12; - } - else - { - std::string::operator+=(&v22[v18 + 4]); - } - } - if ( v22 != v23 && v17 ) - std::string::operator+=(v23 - 24); - v13 = (size_t)a2[1]; - if ( v13 == *(_DWORD *)(a1 + 4) ) - { - lpuexcpta = 0; - if ( v13 ) - lpuexcpta = memcmp(*a2, *(const void **)a1, v13) != 0; - } - else - { - lpuexcpta = 1; - } - std::vector>::~vector((void **)&v22); - return lpuexcpta; -} -// 405FC0: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); - -//----- (0040704C) -------------------------------------------------------- -int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int **a2, int *a3, int a4, int a5) -{ - char *v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // eax - std::ostream::sentry *v8; // eax - std::ostream::sentry *v9; // eax - std::ostream::sentry *v10; // eax - _DWORD *v11; // eax - char v12; // dl - int v14; // [esp+18h] [ebp-160h] - unsigned __int8 v15; // [esp+1Ch] [ebp-15Ch] - std::ostream::sentry *v16; // [esp+1Ch] [ebp-15Ch] - char v17; // [esp+23h] [ebp-155h] - char *Str1; // [esp+24h] [ebp-154h] - char *Str1a; // [esp+24h] [ebp-154h] - unsigned int lpuexcpt; // [esp+28h] [ebp-150h] - char *v21; // [esp+64h] [ebp-114h] BYREF - _BYTE *v22; // [esp+68h] [ebp-110h] - int v23; // [esp+6Ch] [ebp-10Ch] - char *v24; // [esp+70h] [ebp-108h] BYREF - int v25; // [esp+74h] [ebp-104h] - int v26; // [esp+88h] [ebp-F0h] BYREF - int v27; // [esp+8Ch] [ebp-ECh] - char v28; // [esp+90h] [ebp-E8h] BYREF - void *v29[2]; // [esp+A0h] [ebp-D8h] BYREF - char v30[4]; // [esp+A8h] [ebp-D0h] BYREF - char v31[200]; // [esp+ACh] [ebp-CCh] BYREF - - v21 = 0; - v22 = 0; - v23 = 0; - WXML::Rewrite::GetToken(a1, (int)&v21); - std::string::operator=(a2, (char *)&byte_50F1AA); // '\0' - v17 = 1; - lpuexcpt = 1; - v15 = 0; - while ( lpuexcpt < -1227133513 * ((v22 - v21) >> 2) ) - { - Str1 = (char *)(28 * (lpuexcpt - 1)); - if ( !std::string::compare((int)&Str1[(_DWORD)v21 + 4], (char *)off_50F1C8) // "url" - && !std::string::compare((int)&Str1[(_DWORD)v21 + 32], "(") ) - { - // v24怎么填数据进去的? - std::string::basic_string((void **)&v24, (char *)&byte_50F1AA); // '\0' - while ( -1227133513 * ((v22 - v21) >> 2) > ++lpuexcpt ) - { - if ( !std::string::compare((int)&v21[28 * lpuexcpt + 4], ")") ) - { - v14 = v25; - for ( Str1a = v24; &v24[v25] - Str1a > 0 && (*Str1a == ' '/*32*/ || *Str1a == '\t'/*9*/); ++Str1a ) - ; - if ( !strncmp(Str1a, "http://", 7u) - || !strncmp(Str1a, "https://", 8u) - || !strncmp(Str1a, "//", 2u) - || !strncmp(Str1a, "data:", 5u) ) - { - v26 = (int)&v28; - v27 = 0; - v28 = 0; - - std::string::reserve(&v26, v14 + 4); - if ( (unsigned int)(0x3FFFFFFF - v27) <= 3 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v26, "url(", 4u); - std::string::append(&v26, (int)&v24); - v11 = std::string::append(&v26, ")"); - std::string::basic_string(v29, v11); - std::string::operator+=(v29); - std::string::_M_dispose(v29); - std::string::_M_dispose((void **)&v26); - } - else - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)v29); - v16 = std::operator<<>((std::ostream::sentry *)v30, "url("); - std::string::basic_string((void **)&v26, Str1a); - v6 = std::operator<<(v16, &v26); - v7 = std::operator<<>(v6, "-do-not-use-local-path-"); - v8 = std::operator<<(v7, a3); - std::operator<<>(v8, "&"); - v9 = (std::ostream::sentry *)std::ostream::operator<<(a4); - std::operator<<>(v9, "&"); - v10 = (std::ostream::sentry *)std::ostream::operator<<(a5); - std::operator<<>(v10, ")"); - std::string::_M_dispose((void **)&v26); - std::stringbuf::str((int)&v26, (int)v31); - std::string::operator+=(&v26); - std::string::_M_dispose((void **)&v26); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v29); - v15 = 1; - } - v12 = v17; - if ( ++lpuexcpt == -1227133513 * ((v22 - v21) >> 2) ) - v12 = 0; - v17 = v12; - break; - } - v5 = &v21[28 * lpuexcpt]; - if ( *(_DWORD *)v5 != 4 ) - { - if ( *(_DWORD *)v5 == 2 ) - { - std::string::substr(v29, (_DWORD *)v5 + 1, 1u, *((_DWORD *)v5 + 2) - 2); - std::string::operator+=(v29); - std::string::_M_dispose(v29); - } - else - { - std::string::operator+=(v5 + 4); - } - } - } - std::string::_M_dispose((void **)&v24); - } - else - { - std::string::operator+=(&Str1[(_DWORD)v21 + 4]); - } - ++lpuexcpt; - } - if ( v22 != v21 && v17 ) - std::string::operator+=(v22 - 24); - std::vector>::~vector((void **)&v21); - return v15; -} -// 405FC0: using guessed type _DWORD __stdcall std::string::operator+=(_DWORD); -// 4A2900: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 40704C: using guessed type char var_D0[4]; -// 40704C: using guessed type char var_CC[200]; - -//----- (004076D8) -------------------------------------------------------- -int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - int v5; // edx - int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - if ( !Src && Size ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = Size - (_DWORD)Src; - if ( Size - (unsigned int)Src > 0xF ) - { - *this = std::string::_M_create((unsigned int *)v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, Src, Size); - result = v6[0]; - v5 = (int)*this; - this[1] = (void *)v6[0]; - *(_BYTE *)(v5 + result) = 0; - return result; -} -// 4076D8: using guessed type unsigned int var_1C[7]; - -//----- (00407750) -------------------------------------------------------- -int __thiscall std::string::basic_string(void **this, char *Str) -{ - size_t v2; // eax - size_t v3; // eax - void **v5; // [esp+1Ch] [ebp-Ch] - - *this = this + 2; - v2 = -1; - if ( Str ) - { - v5 = this; - v3 = strlen(Str); - this = v5; - v2 = (size_t)&Str[v3]; - } - return std::string::_M_construct(this, (unsigned __int8 *)Str, v2); -} - -//----- (0040778B) -------------------------------------------------------- -std::ostream::sentry *__cdecl WXML::RenderStrToken(_DWORD *a1, int a2) -{ - std::ostream::sentry *result; // eax - std::ostream::sentry *v3; // eax - std::ostream::sentry *v4; // eax - char *v5; // [esp+24h] [ebp+Ch] - - result = (std::ostream::sentry *)a2; - if ( *a1 ) - { - if ( *a1 != 1 ) - return result; - v4 = std::operator<<>((std::ostream::sentry *)(a2 + 8), "\""); - v3 = std::operator<<(v4, a1 + 1); - v5 = "\","; - } - else - { - v3 = std::operator<<((std::ostream::sentry *)(a2 + 8), a1 + 1); - v5 = ","; - } - return std::operator<<>(v3, v5); -} - -//----- (004077F8) -------------------------------------------------------- -char __cdecl WXML::IsFloat(WXML *this) -{ - int v1; // edx - char v2; // cl - char v3; // al - - v1 = ((*(_BYTE *)this - '+'/*43*/) & 0xFD) == 0; - v2 = 0; - while ( 1 ) - { - v3 = *((_BYTE *)this + v1); - if ( !v3 ) - return 1; - if ( v3 != 46 ) - break; - if ( v2 ) - return 0; - v2 = 1; - LABEL_7: - ++v1; - } - if ( (unsigned __int8)(v3 - 48) <= 9u ) - goto LABEL_7; - return 0; -} - -//----- (00407833) -------------------------------------------------------- -char __cdecl WXML::IsFloat(int a1) -{ - if ( *(_DWORD *)(a1 + 4) ) - return WXML::IsFloat(*(WXML **)a1); - else - return 0; -} - -//----- (0040784B) -------------------------------------------------------- -void __cdecl WXML::StrSplitList4RPX(char *a1, char *Str, char *SubStr, void **a4) -{ - char *v4; // eax - _DWORD *v5; // eax - size_t v6; // [esp+1Ch] [ebp-BCh] - size_t v7; // [esp+20h] [ebp-B8h] - char *Size; // [esp+24h] [ebp-B4h] - char *lpuexcpt; // [esp+28h] [ebp-B0h] - void *v10; // [esp+6Ch] [ebp-6Ch] BYREF - size_t v11; // [esp+70h] [ebp-68h] - char v12; // [esp+74h] [ebp-64h] BYREF - char *v13; // [esp+84h] [ebp-54h] BYREF - int v14; // [esp+88h] [ebp-50h] - char v15; // [esp+8Ch] [ebp-4Ch] BYREF - void *v16[2]; // [esp+9Ch] [ebp-3Ch] BYREF - char v17[16]; // [esp+A4h] [ebp-34h] BYREF - int v18; // [esp+B4h] [ebp-24h] BYREF - void *v19[8]; // [esp+B8h] [ebp-20h] BYREF - - if ( SubStr != 0 && Str != 0 && a1 ) - { - v7 = strlen(Str); - v6 = strlen(SubStr); - while ( 1 ) - { - v4 = strstr(a1, Str); - lpuexcpt = v4; - if ( !v4 ) - break; - if ( a1 != v4 ) - { - v16[0] = v17; - std::string::_M_construct(v16, (unsigned __int8 *)a1, (size_t)v4); - v18 = 1; - std::string::basic_string(v19, v16); - std::vector>::emplace_back>( - a4, - &v18); - std::string::_M_dispose(v19); - std::string::_M_dispose(v16); - } - - a1 = &lpuexcpt[v7]; - Size = strstr(&lpuexcpt[v7], SubStr); - if ( !Size ) - { - std::string::basic_string(v16, lpuexcpt); - v18 = 1; - std::string::basic_string(v19, v16); - std::vector>::emplace_back>( - a4, - &v18); - goto LABEL_17; - } - v10 = &v12; - std::string::_M_construct(&v10, (unsigned __int8 *)a1, (size_t)Size); - if ( WXML::IsFloat((int)&v10) ) - { - v13 = &v15; - v14 = 0; - v15 = 0; - std::string::reserve(&v13, v11 + 3); - if ( (unsigned int)(0x3FFFFFFF - v14) <= 2 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v13, "[0,", 3u); - std::string::_M_append(&v13, v10, v11); - v5 = std::string::append(&v13, "]"); - std::string::basic_string(v16, v5); - v18 = 0; - std::string::basic_string(v19, v16); - std::vector>::emplace_back>( - a4, - &v18); - std::string::_M_dispose(v19); - std::string::_M_dispose(v16); - std::string::_M_dispose((void **)&v13); - a1 = &Size[v6]; - } - else - { - v16[0] = v17; - std::string::_M_construct(v16, (unsigned __int8 *)lpuexcpt, (size_t)a1); - v18 = 1; - std::string::basic_string(v19, v16); - std::vector>::emplace_back>( - a4, - &v18); - std::string::_M_dispose(v19); - std::string::_M_dispose(v16); - } - std::string::_M_dispose(&v10); - } - if ( !*a1 ) - return; - std::string::basic_string(v16, a1); - v18 = 1; - std::string::basic_string(v19, v16); - std::vector>::emplace_back>(a4, &v18); -LABEL_17: - std::string::_M_dispose(v19); - std::string::_M_dispose(v16); - } -} - -//----- (00407C6A) -------------------------------------------------------- -void __cdecl WXML::StrSplitList4ClassSuffix(char *a1, char *Str, void **a3) -{ - char *v3; // eax - size_t i; // [esp+14h] [ebp-84h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-80h] - void *v6[2]; // [esp+5Ch] [ebp-3Ch] BYREF - char v7; // [esp+64h] [ebp-34h] BYREF - int v8; // [esp+74h] [ebp-24h] BYREF - void *v9[8]; // [esp+78h] [ebp-20h] BYREF - - if ( a1 && Str ) - { - for ( i = strlen(Str); ; a1 = (char *)lpuexcpt + i ) - { - v3 = strstr(a1, Str); - lpuexcpt = (struct _Unwind_Exception *)v3; - if ( !v3 ) - break; - if ( a1 != v3 ) - { - v6[0] = &v7; - std::string::_M_construct(v6, (unsigned __int8 *)a1, (size_t)v3); - v8 = 1; - std::string::basic_string(v9, v6); - std::vector>::emplace_back>(a3, &v8); - std::string::_M_dispose(v9); - std::string::_M_dispose(v6); - } - v8 = 0; - std::string::basic_string(v9, (char *)off_50F2CC); // "[1]" - std::vector>::emplace_back>(a3, &v8); - std::string::_M_dispose(v9); - } - if ( *a1 ) - { - std::string::basic_string(v6, a1); - v8 = 1; - std::string::basic_string(v9, v6); - std::vector>::emplace_back>(a3, &v8); - std::string::_M_dispose(v9); - std::string::_M_dispose(v6); - } - } -} - -//----- (00407E33) -------------------------------------------------------- -void __cdecl WXML::GetStrForMakingCSS(char **a1, int a2) -{ - char *v2; // eax - _DWORD *v3; // eax - char *v4; // eax - unsigned int i; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - int v7; // [esp+58h] [ebp-20h] BYREF - int v8; // [esp+5Ch] [ebp-1Ch] - int v9; // [esp+60h] [ebp-18h] - int v10; // [esp+64h] [ebp-14h] BYREF - int v11; // [esp+68h] [ebp-10h] - int v12; // [esp+6Ch] [ebp-Ch] - - v2 = *a1; - v7 = 0; - v8 = 0; - v9 = 0; - WXML::StrSplitList4RPX(v2, "%%?", "rpx?%%", (void **)&v7); - for ( lpuexcpt = 0; - -1227133513 * ((v8 - v7) >> 2) > (unsigned int)lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v3 = (_DWORD *)(v7 + 28 * (_DWORD)lpuexcpt); - if ( *v3 == 1 ) - { - v4 = (char *)v3[1]; - v10 = 0; - v11 = 0; - v12 = 0; - WXML::StrSplitList4ClassSuffix(v4, "%%HERESUFFIX%%", (void **)&v10); - for ( i = 0; -1227133513 * ((v11 - v10) >> 2) > i; ++i ) - WXML::RenderStrToken((_DWORD *)(28 * i + v10), a2); - std::vector>::~vector((void **)&v10); - } - else if ( !*v3 ) - { - WXML::RenderStrToken(v3, a2); - } - } - std::vector>::~vector((void **)&v7); -} - -//----- (00407FB8) -------------------------------------------------------- -void __tcf_1_1(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (00407FC2) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 **v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 **v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = (unsigned __int8 **)*this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = (unsigned __int8 **)*this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == this + 2 ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 408029: variable 'v9' is possibly undefined - -//----- (0040804A) -------------------------------------------------------- -int __thiscall std::string::basic_string(void **this, char *Str) -{ - char *v3; // edi - int result; // eax - int v5; // edx - int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = strlen(Str); - v3 = &Str[v6[0]]; - if ( v6[0] > 0xFu ) - { - *this = std::string::_M_create((unsigned int *)v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); - result = v6[0]; - v5 = (int)*this; - this[1] = (void *)v6[0]; - *(_BYTE *)(v5 + result) = 0; - return result; -} -// 40804A: using guessed type size_t var_1C[7]; - -//----- (004080C8) -------------------------------------------------------- -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, (size_t)this[1], Str, v2); -} - -//----- (00408106) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str) -{ - unsigned int v2; // eax - - v2 = strlen(Str); - if ( v2 > 0x3FFFFFFF - this[1] ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - return std::string::_M_append(this, Str, v2); -} - -//----- (0040814C) -------------------------------------------------------- -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(int *this, int a2) -{ - *this = a2; - if ( a2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(a2); -} - -//----- (00408166) -------------------------------------------------------- -void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( - int a1@) -{ - void **v2; // esi - char *v3; // edi - volatile signed __int32 **v4; // ecx - char *v5; // [esp+10h] [ebp-28h] - char **v6; // [esp+14h] [ebp-24h] - int v7; // [esp+1Ch] [ebp-1Ch] - - while ( a1 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(void ***)(a1 + 40); - v7 = *(_DWORD *)(a1 + 8); - v6 = *(char ***)(a1 + 44); - while ( v6 != (char **)v2 ) - { - v3 = (char *)*v2; - v5 = (char *)v2[1]; - while ( v5 != v3 ) - { - v4 = (volatile signed __int32 **)(v3 + 4); - v3 += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - if ( *v2 ) - operator delete(*v2); - v2 += 3; - } - if ( *(_DWORD *)(a1 + 40) ) - operator delete(*(void **)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - operator delete((void *)a1); - a1 = v7; - } -} - -//----- (004081F0) -------------------------------------------------------- -void __usercall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase( - _DWORD *a1@) -{ - _DWORD *v2; // esi - _DWORD *v3; // [esp+0h] [ebp-18h] - - while ( a1 ) - { - std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase((_DWORD *)a1[3]); - v2 = (_DWORD *)a1[2]; - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[7]); - v3 = a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (00408224) -------------------------------------------------------- -void __tcf_0(void) -{ - std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase((_DWORD *)dword_50CBE4); -} -// 50CBE4: using guessed type int dword_50CBE4; - -//----- (0040822C) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1) -{ - int v2; // edi - int i; // esi - volatile signed __int32 **v4; // ecx - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 160)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 152)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 144)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 136)); - v2 = *(_DWORD *)(a1 + 124); - for ( i = *(_DWORD *)(a1 + 120); v2 != i; i += 8 ) - { - v4 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - if ( *(_DWORD *)(a1 + 120) ) - operator delete(*(void **)(a1 + 120)); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 32)); - std::string::_M_dispose((void **)a1); -} - -//----- (0040829F) -------------------------------------------------------- -_DWORD *__usercall std::__relocate_a_1>@( - _DWORD *a1@, - _DWORD *a2@, - _DWORD *a3@) -{ - int v4; // esi - _DWORD *v5; // edi - int *v6; // ecx - _DWORD *v8; // [esp+18h] [ebp-20h] - - while ( a1 != a2 ) - { - v4 = a1[2]; - v8 = a1; - v5 = a3 + 7; - *a3 = *a1; - a3[1] = a1[1]; - v6 = a3 + 2; - a3 += 23; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v6, v4); - *(a3 - 20) = v8[3]; - *(a3 - 19) = v8[4]; - *(a3 - 18) = v8[5]; - *(a3 - 17) = v8[6]; - qmemcpy(v5, v8 + 7, 0x40u); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v8 + 2); - a1 = v8 + 23; - } - return a3; -} - -//----- (00408314) -------------------------------------------------------- -void __thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( - volatile signed __int32 **this, - volatile signed __int32 *a2) -{ - if ( *this != a2 ) - { - if ( a2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)a2); - if ( *this ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); - *this = a2; - } -} - -//----- (00408340) -------------------------------------------------------- -int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, unsigned int **a4, int a5) -{ - int v5; // eax - int v6; // ecx - _DWORD *v7; // eax - _DWORD *v8; // eax - _DWORD *v9; // edi - volatile signed __int32 *v10; // eax - int v11; // edx - int v12; // ecx - volatile signed __int32 *v13; // edx - _DWORD *v14; // eax - volatile signed __int32 *v15; // eax - int v16; // edx - int v17; // ecx - volatile signed __int32 *v18; // edx - volatile signed __int32 *v19; // eax - int *v20; // edi - char *v21; // edx - char *v22; // ecx - int v23; // ecx - int v24; // esi - int v25; // eax - int v26; // eax - int v27; // eax - _DWORD *v28; // edi - volatile signed __int32 **v29; // ecx - int i; // eax - int v31; // eax - volatile signed __int32 **v32; // ecx - std::ostream::sentry *v33; // eax - std::ostream::sentry *v34; // eax - std::ostream::sentry *v35; // eax - char *v36; // ecx - std::ostream::sentry *v37; // eax - std::ostream::sentry *v38; // eax - std::ostream::sentry *v39; // eax - std::ostream::sentry *v40; // edx - char *v41; // eax - char **v42; // ecx - std::ostream::sentry *v43; // eax - int *v44; // eax - int *v45; // eax - void **v46; // ecx - _DWORD *v47; // eax - int *v48; // eax - int v49; // edx - int v50; // eax - int v51; // edx - int v52; // edx - _DWORD *v53; // eax - _DWORD *v54; // ecx - bool v55; // sf - char *v56; // eax - char *v57; // edx - char *v58; // eax - std::ostream::sentry *v59; // eax - std::ostream::sentry *v60; // eax - std::ostream::sentry *v61; // eax - std::ostream::sentry *v62; // edx - char *v63; // eax - char **v64; // ecx - std::ostream::sentry *v65; // eax - int v66; // esi - int v67; // ecx - int *v68; // eax - int v69; // edx - volatile signed __int32 *v70; // eax - volatile signed __int32 *v72; // [esp+0h] [ebp-278h] - int v73; // [esp+0h] [ebp-278h] - int v74; // [esp+4h] [ebp-274h] - unsigned int v75; // [esp+20h] [ebp-258h] - int v76; // [esp+24h] [ebp-254h] - char *v77; // [esp+24h] [ebp-254h] - _DWORD *v78; // [esp+28h] [ebp-250h] - char *v79; // [esp+2Ch] [ebp-24Ch] - int Tokens; // [esp+30h] [ebp-248h] - void *v81; // [esp+34h] [ebp-244h] - void *v82; // [esp+3Ch] [ebp-23Ch] - _DWORD *v83; // [esp+3Ch] [ebp-23Ch] - char *v84; // [esp+3Ch] [ebp-23Ch] - char *j; // [esp+3Ch] [ebp-23Ch] - int *v86; // [esp+3Ch] [ebp-23Ch] - char *v87; // [esp+3Ch] [ebp-23Ch] - char *Str; // [esp+40h] [ebp-238h] - char *Stra; // [esp+40h] [ebp-238h] - char *Strb; // [esp+40h] [ebp-238h] - char *Strc; // [esp+40h] [ebp-238h] - struct _Unwind_Exception *lpuexcpte; // [esp+48h] [ebp-230h] - struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-230h] - struct _Unwind_Exception *lpuexcptf; // [esp+48h] [ebp-230h] - struct _Unwind_Exception *lpuexcptg; // [esp+48h] [ebp-230h] - struct _Unwind_Exception *lpuexcpta; // [esp+48h] [ebp-230h] - struct _Unwind_Exception *lpuexcpth; // [esp+48h] [ebp-230h] - struct _Unwind_Exception *lpuexcptb; // [esp+48h] [ebp-230h] - struct _Unwind_Exception *lpuexcptc; // [esp+48h] [ebp-230h] - int lpuexcptd; // [esp+48h] [ebp-230h] - struct _Unwind_Exception *v102; // [esp+80h] [ebp-1F8h] BYREF - volatile signed __int32 *v103; // [esp+84h] [ebp-1F4h] BYREF - struct _Unwind_Exception *v104; // [esp+88h] [ebp-1F0h] BYREF - volatile signed __int32 *v105; // [esp+8Ch] [ebp-1ECh] BYREF - int v106; // [esp+90h] [ebp-1E8h] - volatile signed __int32 *v107; // [esp+94h] [ebp-1E4h] BYREF - int v108; // [esp+98h] [ebp-1E0h] - volatile signed __int32 *v109; // [esp+9Ch] [ebp-1DCh] BYREF - char *v110; // [esp+A0h] [ebp-1D8h] - volatile signed __int32 *v111; // [esp+A4h] [ebp-1D4h] BYREF - _DWORD *v112; // [esp+A8h] [ebp-1D0h] - volatile signed __int32 *v113; // [esp+ACh] [ebp-1CCh] BYREF - int v114; // [esp+B0h] [ebp-1C8h] - volatile signed __int32 *v115; // [esp+B4h] [ebp-1C4h] BYREF - char *v116; // [esp+B8h] [ebp-1C0h] - volatile signed __int32 *v117; // [esp+BCh] [ebp-1BCh] BYREF - char *v118; // [esp+C0h] [ebp-1B8h] BYREF - char *v119; // [esp+C4h] [ebp-1B4h] - char *v120; // [esp+C8h] [ebp-1B0h] - char v121[24]; // [esp+CCh] [ebp-1ACh] BYREF - char v122[24]; // [esp+E4h] [ebp-194h] BYREF - struct _Unwind_Exception *v123; // [esp+FCh] [ebp-17Ch] BYREF - volatile signed __int32 *v124[5]; // [esp+100h] [ebp-178h] BYREF - void *v125[6]; // [esp+114h] [ebp-164h] BYREF - void *v126; // [esp+12Ch] [ebp-14Ch] BYREF - int v127; // [esp+144h] [ebp-134h] BYREF v127->offset_0 - volatile signed __int32 *v128; // [esp+148h] [ebp-130h] BYREF v127->offset_4 - volatile signed __int32 *v129; // [esp+14Ch] [ebp-12Ch] BYREF v127->offset_8 - int v130; // [esp+150h] [ebp-128h] v127->offset_12 - int v131; // [esp+154h] [ebp-124h] v127->offset_16 - int v132; // [esp+158h] [ebp-120h] v127->offset_20 - int v133; // [esp+15Ch] [ebp-11Ch] v127->offset_24 - char v134[64]; // [esp+160h] [ebp-118h] BYREF v127->offset_28 - _DWORD *v135; // [esp+1A0h] [ebp-D8h] BYREF - volatile signed __int32 *v136; // [esp+1A4h] [ebp-D4h] BYREF - char v137[4]; // [esp+1A8h] [ebp-D0h] BYREF - char v138[204]; // [esp+1ACh] [ebp-CCh] BYREF - - // Parse - 0 - WXSS::Tokenizer::Tokenizer((int)v125, *a2, (int)a3); - v118 = 0; - v119 = 0; - v120 = 0; - Tokens = WXSS::Tokenizer::GetTokens((int *)v125, (int)&v118, a4, -1); - if ( Tokens ) - goto LABEL_107; // 销毁数据,返回Tokens - - // int this - while ( *(_DWORD *)(this + 16) != *(_DWORD *)(this + 32) ) - std::deque>::pop_back((_DWORD *)(this + 8)); - while ( *(_DWORD *)(this + 56) != *(_DWORD *)(this + 72) ) - std::deque>::pop_back((_DWORD *)(this + 48)); - - if ( !(_BYTE)`guard variable for WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret - && __cxa_guard_acquire(&`guard variable for WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret) ) - { - dword_50CBE0 = 0; - dword_50CBE4 = 0; - dword_50CBE8 = (int)&dword_50CBE0; - dword_50CBEC = (int)&dword_50CBE0; - dword_50CBF0 = 0; - byte_50CBF4 = 0; - __cxa_guard_release(&`guard variable for WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret); - atexit(__tcf_0); - } - WXSS::CSSTreeLib::TransitTable::Init((int)&WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret); - - // Parse - 5 - lpuexcpte = (struct _Unwind_Exception *)operator new(0xB0u); // 176 - WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)lpuexcpte); - zcc::shared_ptr::shared_ptr(lpuexcpte); - *(_DWORD *)this = v127; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(this + 4), v128); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v128); - - std::string::operator=(*(unsigned int ***)this, "RULES"); - lpuexcpt = (struct _Unwind_Exception *)v119; - if ( v118 == v119 ) - goto LABEL_107; // 销毁数据,返回Tokens - v132 = 0; - v133 = 0; - v134[0] = 0; // v127.offset_28 - v130 = 0; // v127.offset_12 - v131 = 0; // v127.offset_16 - v5 = *((_DWORD *)v119 - 18); // 18 * 4 = 72 - v128 = 0; // v127.offset_4 - v132 = v5; // v127.offset_20 - v129 = 0; - v127 = 8; // v127.offset_0 - v133 = *((_DWORD *)v119 - 17); // v127.offset_24 - if ( v119 == v120 ) - { - std::vector::_M_realloc_insert(&v118, v119, &v127); - v74 = v6; - } - else - { - *(_DWORD *)v119 = 8; - *((_DWORD *)lpuexcpt + 1) = v128; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count((int *)lpuexcpt + 2, (int)v129); - *((_DWORD *)lpuexcpt + 3) = v130; - v119 += 92; - *((_DWORD *)lpuexcpt + 4) = v131; - *((_DWORD *)lpuexcpt + 5) = v132; - *((_DWORD *)lpuexcpt + 6) = v133; - qmemcpy((char *)lpuexcpt + 28, v134, 0x40u); // 64字节 - } - - // Parse - 10 - v7 = operator new(0x78u); // 120 - *v7 = &off_519B58; - // v7->offset_4 = v7->offset_12 - v7[1] = v7 + 3; // std::string - // v7->offset_8 = 0 - v7[2] = 0; - // v7->offset_12 = 0 - *((_BYTE *)v7 + 12) = 0; - - // v7->offset_32 = 0 - v7[8] = 0; - // v7->offset_36 = 0 - v7[9] = 0; - // v7->offset_56 = 0 - *((_BYTE *)v7 + 56) = 0; - // v7->offset_28 = 1 - v7[7] = 1; - v7[10] = 0; - v7[11] = 0; - v7[12] = 0; - v7[13] = 0; - zcc::shared_ptr::shared_ptr(&v102, (int)v7); - lpuexcptf = v102; - std::string::basic_string((void **)&v135, "$"); - // lpuexcptf->offset_4 = "$" - std::string::_M_assign((int)lpuexcptf + 4, (int)&v135); - std::string::_M_dispose((void **)&v135); - - // int this - v78 = (_DWORD *)(this + 8); - std::deque>::push_back(this + 8, (int *)&v102); - - v8 = operator new(8u); - *v8 = &off_519A44; - v8[1] = 0; - zcc::shared_ptr::shared_ptr(&v104, (int)v8); - lpuexcptg = v104; - *((_DWORD *)lpuexcptg + 1) = WXSS::CSSTreeLib::TransitTable::GetTopType(); - std::deque>::push_back(this + 8, (int *)&v104); - - // Parse - 15 - v9 = operator new(0x48u); // 0x48 -> 72 = 24 * 3 std::string[3] - v106 = 0; - memset(v9, 0, 0x48u); - v107 = 0; - v112 = v9; - v113 = 0; - // v9->offset_0 = &v9->offset_8 std::string - *v9 = v9 + 2; - // v9->offset_24 = v9->offset_32 std::string - v9[6] = v9 + 8; - // v9->offset_48 = v9->offset_56 std::string - v9[12] = v9 + 14; - /* - v9: - std::string offset_0; - std::string offset_24; - std::string offset_48; - */ - - v10 = (volatile signed __int32 *)operator new(0x10u); // 0x10 -> 16 - v11 = (int)v112; - // v10->offset_4 - *((_DWORD *)v10 + 1) = 1; - v12 = v106; - // v10->offset_8 - *((_DWORD *)v10 + 2) = 1; - // v10->offset_0 - *v10 = (volatile signed __int32)&off_51AD2C; - // v10->offset_12 - *((_DWORD *)v10 + 3) = v9; - - v106 = v11; // = v112 = v9 = std::string[3] - v13 = v107; - v112 = (_DWORD *)v12; - v107 = v10; - v113 = v13; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v113); - std::string::_M_assign(v106, (int)a3); - std::string::_M_assign(v106 + 24, a5); - - v14 = operator new(0x5Cu); // 0x5C -> 92 - // v14->offset_4 - v14[1] = 0; - // v14->offset_8 - v14[2] = 0; - // v14->offset_28 - *((_BYTE *)v14 + 28) = 0; - // v14->offset_0 = 1 - *v14 = 1; - v14[3] = 0; - v14[4] = 0; - v14[5] = 0; - v14[6] = 0; - v81 = v14; - v108 = 0; - v109 = 0; - v114 = (int)v14; - v115 = 0; - - v15 = (volatile signed __int32 *)operator new(0x10u); // 0x10 -> 16 - v16 = v114; - // v15->offset_4 - *((_DWORD *)v15 + 1) = 1; - v17 = v108; - // v15->offset_8 - *((_DWORD *)v15 + 2) = 1; - // v15->offset_0 - *v15 = (volatile signed __int32)&off_51AD9C; - // v15->offset_12 - *((_DWORD *)v15 + 3) = v81; - - v108 = v16; - v18 = v109; - v114 = v17; - v109 = v15; - v115 = v18; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); - *(_DWORD *)(v108 + 12) = -1; // v14->offset_12 - - v79 = (char *)operator new(0x18u); // 0x18 -> 24 - std::string::basic_string(v79, (int)a3); - v110 = 0; - v111 = 0; - v116 = v79; - v117 = 0; - - v19 = (volatile signed __int32 *)operator new(0x10u); // 0x10 ->16 - v20 = (int *)v79; - v21 = v116; - // v19->offset_4 - *((_DWORD *)v19 + 1) = 1; - v22 = v110; - // v19->offset_8 - *((_DWORD *)v19 + 2) = 1; - // v19->offset_0 - *v19 = (volatile signed __int32)&off_51ADB8; - // v19->offset_12 - *((_DWORD *)v19 + 3) = v79; - v110 = v21; - v116 = v22; - v117 = v111; - v111 = v19; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v117); - v23 = v108; - - // v108 - v14, v110 - v79 - *(_DWORD *)(v108 + 4) = v110; - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(v23 + 8), v111); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v111); - v116 = 0; - v117 = 0; - v75 = 0; - - // Parse - 20 - while ( 1 ) - { - v24 = this; - - v25 = *(_DWORD *)(this + 32); // it_finish - // this->offset_16 -> it_start, v75 索引 - if ( *(_DWORD *)(this + 16) == v25 || v75 >= -373475417 * ((v119 - v118) >> 2) ) - break; - if ( v25 == *(_DWORD *)(this + 36) ) - v25 = *(_DWORD *)(*(_DWORD *)(this + 44) - 4) + 512; - - v72 = *(volatile signed __int32 **)(v25 - 4); - v116 = *(char **)(v25 - 8); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v117, v72); - - lpuexcpta = (struct _Unwind_Exception *)&v118[92 * v75]; // cur - switch ( *(_DWORD *)lpuexcpta ) - { - case 1: - Str = (char *)lpuexcpta + 28; - break; - case 2: - Str = "$VALUE"; - break; - case 3: - Str = "$STRING"; - break; - case 4: - Str = "$NAME"; - break; - case 5: - Str = (char *)&off_50F38C; // "$ID" - break; - case 6: - Str = "$MULTI_EXPR"; - break; - case 7: - Str = "$$"; - break; - case 9: - Str = "$ESV"; - break; - default: - Str = "$"; - break; - } - // Parse - 20-0 - if ( (*(int (__thiscall **)(char *, int, int))(*(_DWORD *)v116 + 8))(v116, v26, v74) == 1 ) - { - v27 = *((_DWORD *)v116 + 1); - if ( *Str != *(_BYTE *)v27 || strcmp(Str + 1, (const char *)(v27 + 1)) ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v135); - if ( *Str != '$'/*36*/ || Str[1] ) - { - v37 = std::operator<<((std::ostream::sentry *)v137, a3); - std::operator<<>(v37, "("); - v38 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 5)); - std::operator<<>(v38, ":"); - v39 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 6)); - v40 = std::operator<<>(v39, "): error at token `"); - v41 = (char *)lpuexcpta + 28; - if ( *(_DWORD *)lpuexcpta != 1 ) - { - v41 = "$"; - if ( *(_DWORD *)lpuexcpta != 8 ) - { - v42 = (char **)*((_DWORD *)lpuexcpta + 1); - v41 = "UNKNOWN"; - if ( v42 ) - v41 = *v42; - } - } - v43 = std::operator<<>(v40, v41); - std::operator<<>(v43, "`"); - std::stringbuf::str((int)v122, (int)v138); - std::string::operator=((unsigned __int8 **)a4, (int)v122); - v36 = v122; - } - else - { - v33 = std::operator<<((std::ostream::sentry *)v137, a3); - std::operator<<>(v33, "("); - v34 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 5)); - std::operator<<>(v34, ":"); - v35 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 6)); - std::operator<<>(v35, "): unexpected end of input or bad input"); - std::stringbuf::str((int)v121, (int)v138); - std::string::operator=((unsigned __int8 **)a4, (int)v121); - v36 = v121; - } - LABEL_48:// 销毁数据,返回-1 - std::string::_M_dispose((void **)v36); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v135); - Tokens = -1; - goto LABEL_106;// 销毁数据,返回Tokens - } - ++v75; - std::deque>::pop_back(v78); - if ( *Str != '$'/*36*/ || Str[1] ) - { - v82 = operator new(0xB0u); - WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v82); - zcc::shared_ptr::shared_ptr(v82); - v83 = v135; - v28 = v135; - v29 = (volatile signed __int32 **)(v135 + 8); - // lpuexcpta -> cur - // v135->offset_24 - v135[6] = *(_DWORD *)lpuexcpta; - v28[7] = *((_DWORD *)lpuexcpta + 1); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v29, *((volatile signed __int32 **)lpuexcpta + 2)); - v83[9] = *((_DWORD *)lpuexcpta + 3); - // v83->offset_36 = cur->offset_12 - v83[10] = *((_DWORD *)lpuexcpta + 4); - v83[11] = *((_DWORD *)lpuexcpta + 5); - v83[12] = *((_DWORD *)lpuexcpta + 6); - // v83->offset_48 - for ( i = 0; i != 64; ++i ) // Token里面的 - *((_BYTE *)v83 + i + 52) = *((_BYTE *)lpuexcpta + i + 28); - - std::string::operator=((unsigned int **)v83, Str); - // v83->offset_0 - - v31 = *((_DWORD *)lpuexcpta + 3); - v83[41] = v31; - // v83->offset_164 - - v83[42] = *((_DWORD *)lpuexcpta + 4) + v31; - // v83->offset_168 - - v83[37] = v106; // v9 - // v83->offset_148 - - // v83->offset_152 - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v83 + 38, v107); - v20 = v83; - v83[39] = v108; // v14 - // v83->offset_156 - - // v83->offset_160 - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v83 + 40, v109); - std::deque>::push_back(this + 48, (int *)&v135); - v32 = &v136; - goto LABEL_59; - } - } - // Parse - 20-5 - else if ( (*(int (__fastcall **)(char *))(*(_DWORD *)v116 + 8))(v116) == 3 ) - { - std::deque>::pop_back(v78); - v84 = v116; - v76 = *((_DWORD *)v116 + 7); - if ( v76 == 2 ) - { - v20 = *(int **)(this + 56); - if ( *(int **)(this + 72) == v20 ) - { - std::string::operator=(a4, "interal error: "); - std::string::operator+=(a4, "1001"); - Tokens = 1001; - goto LABEL_106;// 销毁数据,返回Tokens - } - v44 = (int *)std::deque>::back((_DWORD *)(this + 48)); - std::__shared_ptr::__shared_ptr((int *)&v123, v44); - std::deque>::pop_back((_DWORD *)(this + 48)); - if ( *(_DWORD *)(this + 72) == *(_DWORD *)(this + 56) ) - { - std::string::operator=(a4, "interal error: "); - std::string::operator+=(a4, "1002"); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v124); - Tokens = 1002; - goto LABEL_106;// 销毁数据,返回Tokens - } - v45 = (int *)std::deque>::back((_DWORD *)(this + 48)); - std::__shared_ptr::__shared_ptr((int *)&v135, v45); - v46 = (void **)v135; - // offset_124 offset_120 - if ( v135[31] == v135[30] ) - // offset_164 - v135[41] = *((_DWORD *)v123 + 41); - std::vector>::push_back(v46 + 30, &v123); - // v135->offset_168 - v135[42] = *((_DWORD *)v123 + 42); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v136); - } - else - { - Stra = (char *)*((_DWORD *)v116 + 8); - lpuexcpth = (struct _Unwind_Exception *)operator new(0xB0u); - WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)lpuexcpth); - zcc::shared_ptr::shared_ptr(lpuexcpth); - lpuexcptb = v123; - std::string::_M_assign((int)v123, (int)(v84 + 4)); - for ( j = 0; ; ++j ) - { - v20 = (int *)Stra; - if ( (int)j >= (int)Stra ) - break; - if ( *(_DWORD *)(this + 72) == *(_DWORD *)(this + 56) ) - { - std::string::operator=(a4, "interal error: "); - std::string::operator+=(a4, "1003"); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v124); - Tokens = 1003; - goto LABEL_106;// 销毁数据,返回Tokens - } - v47 = (_DWORD *)std::deque>::back((_DWORD *)(this + 48)); - std::vector>::push_back((void **)lpuexcptb + 30, v47); - std::deque>::pop_back((_DWORD *)(this + 48)); - } - if ( (int)Stra > 0 ) - { - v20 = (int *)lpuexcptb; // v123 - v48 = (int *)*((_DWORD *)v123 + 30); - v49 = v48[2 * (_DWORD)Stra - 2]; - v50 = *v48; - // v123->offset_164 - *((_DWORD *)lpuexcptb + 41) = *(_DWORD *)(v49 + 164); - // v123->offset_168 - *((_DWORD *)lpuexcptb + 42) = *(_DWORD *)(v50 + 168); - // v123->offset_148 - *((_DWORD *)lpuexcptb + 37) = v106; // v9 - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)lpuexcptb + 38, v107); - // v123->offset_156 - *((_DWORD *)lpuexcptb + 39) = v108; // v14 - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)lpuexcptb + 40, v109); - } - if ( !v76 ) - { - // lpuexcptb -> v123 - v51 = *((_DWORD *)lpuexcptb + 31); // end - if ( *((_DWORD *)lpuexcptb + 30) != v51 ) - { - v20 = (int *)(v51 - 8); - Strb = (char *)*((_DWORD *)lpuexcptb + 30); - for ( lpuexcptc = (struct _Unwind_Exception *)(v51 - 8); // end - lpuexcptc > (struct _Unwind_Exception *)Strb; // begin - lpuexcptc = (struct _Unwind_Exception *)((char *)lpuexcptc - 8) ) - { - std::__shared_ptr::__shared_ptr( - (int *)&v135, - (int *)Strb); - v20 = (int *)Strb; // pre - *(_DWORD *)Strb = *(_DWORD *)lpuexcptc; // suf - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( - (volatile signed __int32 **)Strb + 1, - *((volatile signed __int32 **)lpuexcptc + 1)); - *(_DWORD *)lpuexcptc = v135; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( - (volatile signed __int32 **)lpuexcptc + 1, - v136); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v136); - Strb += 8; - } - } - } - std::deque>::push_back(this + 48, (int *)&v123); - } - v32 = v124; // 只是为了销毁 - LABEL_59: - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v32); - } // end == 3 - // Parse - 20-10 - else if ( (*(int (__fastcall **)(char *))(*(_DWORD *)v116 + 8))(v116) == 2 ) - { - // int *v86 - v86 = &dword_50CBE0; - v52 = *((_DWORD *)v116 + 1); - v53 = (_DWORD *)dword_50CBE4; - while ( v53 ) - { - v24 = (int)v86; - v54 = (_DWORD *)v53[3]; - if ( v52 <= v53[4] ) - v54 = (_DWORD *)v53[2]; - if ( v52 <= v53[4] ) - v24 = (int)v53; - v53 = v54; - v86 = (int *)v24; - } - if ( v86 != &dword_50CBE0 && v52 < v86[4] ) - v86 = &dword_50CBE0; - v73 = std::string::basic_string((void **)&v135, Str); - - v77 = (char *)(v86 + 6); - // v77 = v86->offset_24 - - v87 = (char *)v86[7]; - // v87 = v86->offset_28 - - Strc = v77; - while ( v87 ) - { - v24 = (int)v87; - v55 = std::string::compare((int)(v87 + 16), (int)&v135) < 0; - v56 = Strc; - v73 = (int)v20; - v57 = (char *)*((_DWORD *)v87 + 3); - if ( !v55 ) - { - v57 = (char *)*((_DWORD *)v87 + 2); - v56 = v87; - } - v87 = v57; - Strc = v56; - } - if ( v77 != Strc ) - { - v55 = std::string::compare((int)&v135, (int)(Strc + 16)) < 0; - v58 = Strc; - if ( v55 ) - v58 = v77; - v73 = v24; - Strc = v58; - } - std::string::_M_dispose((void **)&v135); - v20 = (int *)v77; // end - if ( Strc == v77 || *((_DWORD *)Strc + 11) == *((_DWORD *)Strc + 10) ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v135); - v59 = std::operator<<((std::ostream::sentry *)v137, a3); - std::operator<<>(v59, "("); - v60 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 5)); // cur - std::operator<<>(v60, ":"); - v61 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 6)); - v62 = std::operator<<>(v61, "): unexpected token `"); - v63 = (char *)lpuexcpta + 28; - if ( *(_DWORD *)lpuexcpta != 1 ) - { - v63 = "$"; - if ( *(_DWORD *)lpuexcpta != 8 ) - { - v64 = (char **)*((_DWORD *)lpuexcpta + 1); - v63 = "UNKNOWN"; - if ( v64 ) - v63 = *v64; - } - } - v65 = std::operator<<>(v62, v63); - std::operator<<>(v65, "`"); - std::stringbuf::str((int)&v123, (int)v138); - std::string::operator=((unsigned __int8 **)a4, (int)&v123); - v36 = (char *)&v123; - goto LABEL_48;// 销毁数据,返回-1 - } - // this->offset_8 - std::deque>::pop_back(v78); - for ( lpuexcptd = ((*(_DWORD *)(*((_DWORD *)Strc + 10) + 4) - **((_DWORD **)Strc + 10)) >> 3) - 1; - lpuexcptd >= 0; - --lpuexcptd ) - { - v66 = lpuexcptd; - v67 = *(_DWORD *)(**((_DWORD **)Strc + 10) + 8 * lpuexcptd); - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v67 + 8))(v67, v73) == 4 ) - break; - - // zcc::shared_ptr - v20 = (int *)(**((_DWORD **)Strc + 10) + 8 * lpuexcptd); - std::deque>::push_back((int)v78, v20); - v73 = v66; - } - } // end == 2 - } - - // Parse - 25 - if ( *(_DWORD *)(this + 72) == *(_DWORD *)(this + 56) ) - { - std::string::operator=(a4, "interal error: "); - std::string::operator+=(a4, "1004"); - Tokens = 1004; - } - else - { - // int this - v68 = (int *)std::deque>::back((_DWORD *)(this + 48)); - v69 = *v68; - v70 = (volatile signed __int32 *)v68[1]; - *(_DWORD *)this = v69; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(this + 4), v70); - } - // Parse - 30 - LABEL_106: - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v117); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v109); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v107); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v105); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v103); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v129); -LABEL_107: - std::vector::~vector((void **)&v118); - std::string::_M_dispose(&v126); - std::string::_M_dispose(v125); - return Tokens; -} -// 409494: conditional instruction was optimized away because sf.1==0 -// 408652: variable 'v6' is possibly undefined -// 408BB5: variable 'v26' is possibly undefined -// 408BB5: variable 'v74' is possibly undefined -// 4A2900: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 50CBE0: using guessed type int dword_50CBE0; -// 50CBE4: using guessed type int dword_50CBE4; -// 50CBE8: using guessed type int dword_50CBE8; -// 50CBEC: using guessed type int dword_50CBEC; -// 50CBF0: using guessed type int dword_50CBF0; -// 50CBF4: using guessed type char byte_50CBF4; -// 50F38C: using guessed type void *off_50F38C; -// 519A44: using guessed type void (__cdecl *off_519A44)(WXSS::CSSTreeLib::NonTerminal *__hidden this); -// 519B58: using guessed type void (__cdecl *off_519B58)(WXSS::CSSTreeLib::Terminal *__hidden this); -// 51AD2C: using guessed type int (*off_51AD2C)(); -// 51AD9C: using guessed type int (*off_51AD9C)(); -// 51ADB8: using guessed type int (*off_51ADB8)(); -// 408340: using guessed type char var_D0[4]; - -//----- (00409984) -------------------------------------------------------- -void __tcf_0_0(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (0040998E) -------------------------------------------------------- -unsigned __int8 *__thiscall std::string::operator=(unsigned __int8 **this, int a2) -{ - unsigned __int8 **v3; // eax - unsigned __int8 *v4; // ecx - unsigned __int8 *v5; // edx - unsigned __int8 *v6; // eax - unsigned __int8 **v7; // edx - unsigned __int8 *result; // eax - unsigned __int8 *v9; // [esp+18h] [ebp-20h] - - v3 = (unsigned __int8 **)*this; - v4 = *(unsigned __int8 **)a2; - v5 = *(unsigned __int8 **)(a2 + 4); - if ( *(_DWORD *)a2 == a2 + 8 ) - { - if ( v5 ) - std::string::_S_copy(v3, v4, *(_DWORD *)(a2 + 4)); - v6 = *(unsigned __int8 **)(a2 + 4); - v7 = (unsigned __int8 **)*this; - this[1] = v6; - v6[(_DWORD)v7] = 0; - } - else - { - if ( v3 == this + 2 ) - v3 = 0; - else - v9 = this[2]; - *this = v4; - this[1] = v5; - this[2] = *(unsigned __int8 **)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v9; - } - else - { - *(_DWORD *)a2 = a2 + 8; - } - } - result = *(unsigned __int8 **)a2; - *(_DWORD *)(a2 + 4) = 0; - *result = 0; - return result; -} -// 4099F5: variable 'v9' is possibly undefined - -//----- (00409A16) -------------------------------------------------------- -void __thiscall WXSS::Tokenizer::Tokenizer(int this, char *Str, int a3) -{ - size_t v3; // eax - int v4; // [esp+14h] [ebp-44h] - - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - *(_BYTE *)(this + 8) = 0; - - v4 = this + 24; - *(_DWORD *)(this + 24) = this + 32; - *(_DWORD *)(this + 28) = 0; - *(_BYTE *)(this + 32) = 0; - - v3 = strlen(Str); - std::string::_M_replace((unsigned int **)this, 0, 0, Str, v3); - std::string::_M_assign(v4, a3); -} - -//----- (00409AF4) -------------------------------------------------------- -void WXSS::Tokenizer::InitTransitTable() -{ - const char *i; // edx - int v1; // eax - const char *j; // edx - int v3; // eax - const char *k; // edx - int v5; // eax - const char *m; // edx - int v7; // eax - const char *v8; // edx - int v9; // eax - const char *v10; // edx - int v11; // eax - const char *n; // edx - int v13; // eax - const char *v14; // edx - int v15; // eax - const char *ii; // edx - int v17; // eax - const char *jj; // edx - int v19; // eax - const char *v20; // edx - int v21; // eax - const char *kk; // edx - int v23; // eax - const char *v24; // edx - int v25; // eax - const char *mm; // edx - int v27; // eax - const char *nn; // edx - int v29; // eax - const char *i1; // edx - int v31; // eax - const char *i2; // edx - int v33; // eax - - if ( !WXSS::Tokenizer::InitTransitTable(void)::bInited ) - { - // InitTransitTable - 0 - WXSS::Tokenizer::InitTransitTable(void)::bInited = 1; - for ( i = " \n\t\r"; ; ++i ) - { - v1 = *i; - if ( !(_BYTE)v1 ) - break; - dword_5232A0[2 * v1] = 134217729; - dword_5232A4[2 * v1] = 0; - } - for ( j = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; ; ++j ) - { - v3 = *j; - if ( !(_BYTE)v3 ) - break; - dword_5232A0[2 * v3] = 2; - dword_5232A4[2 * v3] = 0; - } - for ( k = "0123456789"; ; ++k ) - { - v5 = *k; - if ( !(_BYTE)v5 ) - break; - dword_5232A0[2 * v5] = 5; - dword_5232A4[2 * v5] = 0; - } - // InitTransitTable - 5 - for ( m = "#*,{}[]:()~=|>\"+^@;"; ; ++m ) - { - v7 = *m; - if ( !(_BYTE)v7 ) - break; - dword_5232A0[2 * v7] = 1114113; - dword_5232A4[2 * v7] = 0; - } - dword_523678 = 1114116; - dword_52367C = 0; - dword_5232A0[0] = 1; - dword_5232A4[0] = 0; - dword_5233B0 = 6; - dword_5233B4 = 0; - dword_5233D8 = 7; - dword_5233DC = 0; - dword_5234A0 = 23; - dword_5234A4 = 0; - dword_5233B8 = 3; - dword_5233BC = 0; - dword_523AA0 = -1; - dword_523AA4 = -1; - dword_5233C0 = 33619969; - dword_5233C4 = 0; - dword_53A678 = 88211481; - dword_53A67C = 0; - dword_53A2A0 = -1; - dword_53A2A4 = -1; - dword_53AAA0 = 24; - dword_53AAA4 = 0; - dword_53B678 = 1114113; - dword_53B67C = 0; - dword_53BAA0 = -1; - dword_53BAA4 = -1; - // InitTransitTable - 10 - v8 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; - while ( 1 ) - { - v9 = *v8; - if ( !(_BYTE)v9 ) - break; - dword_5392A0[2 * v9] = 2; - ++v8; - dword_5392A4[2 * v9] = 0; - } - dword_539AA0 = 68288513; - v10 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; - dword_539AA4 = 0; - while ( 1 ) - { - v11 = *v10; - if ( !(_BYTE)v11 ) - break; - dword_5272A0[2 * v11] = 5; - ++v10; - dword_5272A4[2 * v11] = 0; - } - // InitTransitTable - 15 - for ( n = "0123456789"; ; ++n ) - { - v13 = *n; - if ( !(_BYTE)v13 ) - break; - dword_5272A0[2 * v13] = 5; - dword_5272A4[2 * v13] = 0; - } - dword_5273C8 = 589825; - v14 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; - dword_5273CC = 0; - dword_527AA0 = 67502081; - dword_527AA4 = 0; - dword_5283B0 = 327681; - dword_5283B4 = 0; - dword_528AA0 = 6; - dword_528AA4 = 0; - dword_5293D8 = 327681; - dword_5293DC = 0; - dword_529AA0 = 7; - dword_529AA4 = 0; - dword_523418 = 134217743; - dword_52341C = 0; - dword_5313F0 = 16; - dword_5313F4 = 0; - dword_531AA0 = 134217729; - dword_531AA4 = 0; - dword_5323F0 = 17; - dword_5323F4 = 0; - dword_532AA0 = 16; - dword_532AA4 = 0; - dword_533418 = 134217729; - dword_53341C = 0; - dword_5333F0 = 67108880; - dword_5333F4 = 0; - dword_533AA0 = 16; - dword_533AA4 = 0; - dword_526418 = 134217746; - dword_52641C = 0; - dword_5343F0 = 19; - dword_5343F4 = 0; - dword_534AA0 = 134217732; - dword_534AA4 = 0; - dword_5353F0 = 20; - dword_5353F4 = 0; - dword_535AA0 = 19; - dword_535AA4 = 0; - dword_536418 = 134217732; - dword_53641C = 0; - dword_5363F0 = 67108883; - dword_5363F4 = 0; - dword_536AA0 = 19; - dword_536AA4 = 0; - // InitTransitTable - 20 - while ( 1 ) - { - v15 = *v14; - if ( !(_BYTE)v15 ) - break; - dword_5242A0[2 * v15] = 2; - ++v14; - dword_5242A4[2 * v15] = 0; - } - for ( ii = "0123456789"; ; ++ii ) - { - v17 = *ii; - if ( !(_BYTE)v17 ) - break; - dword_5242A0[2 * v17] = 2; - dword_5242A4[2 * v17] = 0; - } - for ( jj = " \n\t\r"; ; ++jj ) - { - v19 = *jj; - if ( !(_BYTE)v19 ) - break; - dword_5242A0[2 * v19] = 67764225; - dword_5242A4[2 * v19] = 0; - } - // InitTransitTable - 25 - dword_5243B0 = 67764225; - v20 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; - dword_5243B4 = 0; - dword_524AA0 = 67764225; - dword_524AA4 = 0; - while ( 1 ) - { - v21 = *v20; - if ( !(_BYTE)v21 ) - break; - dword_5252A0[2 * v21] = 3; - ++v20; - dword_5252A4[2 * v21] = 0; - } - for ( kk = "0123456789"; ; ++kk ) - { - v23 = *kk; - if ( !(_BYTE)v23 ) - break; - dword_5252A0[2 * v23] = 3; - dword_5252A4[2 * v23] = 0; - } - // InitTransitTable - 30 - dword_525AA0 = 69337089; - v24 = " \n\t\r"; - dword_525AA4 = 0; - while ( 1 ) - { - v25 = *v24; - if ( !(_BYTE)v25 ) - break; - dword_5262A0[2 * v25] = 134217732; - ++v24; - dword_5262A4[2 * v25] = 0; - } - for ( mm = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; ; ++mm ) - { - v27 = *mm; - if ( !(_BYTE)v27 ) - break; - dword_5262A0[2 * v27] = 8; - dword_5262A4[2 * v27] = 0; - } - for ( nn = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; ; ++nn ) - { - v29 = *nn; - if ( !(_BYTE)v29 ) - break; - dword_52A2A0[2 * v29] = 8; - dword_52A2A4[2 * v29] = 0; - } - // InitTransitTable - 35 - for ( i1 = "0123456789"; ; ++i1 ) - { - v31 = *i1; - if ( !(_BYTE)v31 ) - break; - dword_52A2A0[2 * v31] = 8; - dword_52A2A4[2 * v31] = 0; - } - for ( i2 = " \n\t\r"; ; ++i2 ) - { - v33 = *i2; - if ( !(_BYTE)v33 ) - break; - dword_52A2A0[2 * v33] = 67764228; - dword_52A2A4[2 * v33] = 0; - } - dword_52A470 = 67764228; - dword_52A474 = 0; - dword_52A688 = 67764228; - dword_52A68C = 0; - dword_52A478 = 67764228; - dword_52A47C = 0; - dword_52AAA0 = -1; - dword_52AAA4 = -1; - dword_526470 = 1114121; - dword_526474 = 0; - dword_526478 = 1114116; - dword_52647C = 0; - dword_526688 = 1114113; - dword_52668C = 0; - dword_526AA0 = -1; - dword_526AA4 = -1; - dword_52B478 = 84279300; - dword_52B47C = 0; - dword_52B688 = 84279300; - dword_52B68C = 0; - dword_52B3E0 = 10; - dword_52B3E4 = 0; - dword_52B3B0 = 11; - dword_52B3B4 = 0; - dword_52B3D8 = 13; - dword_52B3DC = 0; - dword_52C3E8 = 9; - dword_52C3EC = 0; - dword_52C3B0 = 12; - dword_52C3B4 = 0; - dword_52C3D8 = 14; - dword_52C3DC = 0; - dword_52CAA0 = 10; - dword_52CAA4 = 0; - dword_52D3B0 = 9; - dword_52D3B4 = 0; - dword_52F3D8 = 9; - dword_52F3DC = 0; - dword_52E3B0 = 10; - dword_52E3B4 = 0; - dword_5303D8 = 10; - dword_5303DC = 0; - dword_52DAA0 = 11; - dword_52DAA4 = 0; - dword_52FAA0 = 13; - dword_52FAA4 = 0; - dword_52EAA0 = 12; - dword_52EAA4 = 0; - dword_530AA0 = 14; - dword_530AA4 = 0; - dword_52BAA0 = 9; - dword_52BAA4 = 0; - // InitTransitTable - 40 - } -} -// 5232A0: using guessed type int dword_5232A0[]; -// 5232A4: using guessed type int dword_5232A4[67]; -// 5233B0: using guessed type int dword_5233B0; -// 5233B4: using guessed type int dword_5233B4; -// 5233B8: using guessed type int dword_5233B8; -// 5233BC: using guessed type int dword_5233BC; -// 5233C0: using guessed type int dword_5233C0; -// 5233C4: using guessed type int dword_5233C4; -// 5233D8: using guessed type int dword_5233D8; -// 5233DC: using guessed type int dword_5233DC; -// 523418: using guessed type int dword_523418; -// 52341C: using guessed type int dword_52341C; -// 5234A0: using guessed type int dword_5234A0; -// 5234A4: using guessed type int dword_5234A4; -// 523678: using guessed type int dword_523678; -// 52367C: using guessed type int dword_52367C; -// 523AA0: using guessed type int dword_523AA0; -// 523AA4: using guessed type int dword_523AA4; -// 5242A0: using guessed type int dword_5242A0[]; -// 5242A4: using guessed type int dword_5242A4[67]; -// 5243B0: using guessed type int dword_5243B0; -// 5243B4: using guessed type int dword_5243B4; -// 524AA0: using guessed type int dword_524AA0; -// 524AA4: using guessed type int dword_524AA4; -// 5252A0: using guessed type int dword_5252A0[]; -// 5252A4: using guessed type int dword_5252A4[511]; -// 525AA0: using guessed type int dword_525AA0; -// 525AA4: using guessed type int dword_525AA4; -// 5262A0: using guessed type int dword_5262A0[]; -// 5262A4: using guessed type int dword_5262A4[93]; -// 526418: using guessed type int dword_526418; -// 52641C: using guessed type int dword_52641C; -// 526470: using guessed type int dword_526470; -// 526474: using guessed type int dword_526474; -// 526478: using guessed type int dword_526478; -// 52647C: using guessed type int dword_52647C; -// 526688: using guessed type int dword_526688; -// 52668C: using guessed type int dword_52668C; -// 526AA0: using guessed type int dword_526AA0; -// 526AA4: using guessed type int dword_526AA4; -// 5272A0: using guessed type int dword_5272A0[]; -// 5272A4: using guessed type int dword_5272A4[73]; -// 5273C8: using guessed type int dword_5273C8; -// 5273CC: using guessed type int dword_5273CC; -// 527AA0: using guessed type int dword_527AA0; -// 527AA4: using guessed type int dword_527AA4; -// 5283B0: using guessed type int dword_5283B0; -// 5283B4: using guessed type int dword_5283B4; -// 528AA0: using guessed type int dword_528AA0; -// 528AA4: using guessed type int dword_528AA4; -// 5293D8: using guessed type int dword_5293D8; -// 5293DC: using guessed type int dword_5293DC; -// 529AA0: using guessed type int dword_529AA0; -// 529AA4: using guessed type int dword_529AA4; -// 52A2A0: using guessed type int dword_52A2A0[]; -// 52A2A4: using guessed type int dword_52A2A4[115]; -// 52A470: using guessed type int dword_52A470; -// 52A474: using guessed type int dword_52A474; -// 52A478: using guessed type int dword_52A478; -// 52A47C: using guessed type int dword_52A47C; -// 52A688: using guessed type int dword_52A688; -// 52A68C: using guessed type int dword_52A68C; -// 52AAA0: using guessed type int dword_52AAA0; -// 52AAA4: using guessed type int dword_52AAA4; -// 52B3B0: using guessed type int dword_52B3B0; -// 52B3B4: using guessed type int dword_52B3B4; -// 52B3D8: using guessed type int dword_52B3D8; -// 52B3DC: using guessed type int dword_52B3DC; -// 52B3E0: using guessed type int dword_52B3E0; -// 52B3E4: using guessed type int dword_52B3E4; -// 52B478: using guessed type int dword_52B478; -// 52B47C: using guessed type int dword_52B47C; -// 52B688: using guessed type int dword_52B688; -// 52B68C: using guessed type int dword_52B68C; -// 52BAA0: using guessed type int dword_52BAA0; -// 52BAA4: using guessed type int dword_52BAA4; -// 52C3B0: using guessed type int dword_52C3B0; -// 52C3B4: using guessed type int dword_52C3B4; -// 52C3D8: using guessed type int dword_52C3D8; -// 52C3DC: using guessed type int dword_52C3DC; -// 52C3E8: using guessed type int dword_52C3E8; -// 52C3EC: using guessed type int dword_52C3EC; -// 52CAA0: using guessed type int dword_52CAA0; -// 52CAA4: using guessed type int dword_52CAA4; -// 52D3B0: using guessed type int dword_52D3B0; -// 52D3B4: using guessed type int dword_52D3B4; -// 52DAA0: using guessed type int dword_52DAA0; -// 52DAA4: using guessed type int dword_52DAA4; -// 52E3B0: using guessed type int dword_52E3B0; -// 52E3B4: using guessed type int dword_52E3B4; -// 52EAA0: using guessed type int dword_52EAA0; -// 52EAA4: using guessed type int dword_52EAA4; -// 52F3D8: using guessed type int dword_52F3D8; -// 52F3DC: using guessed type int dword_52F3DC; -// 52FAA0: using guessed type int dword_52FAA0; -// 52FAA4: using guessed type int dword_52FAA4; -// 5303D8: using guessed type int dword_5303D8; -// 5303DC: using guessed type int dword_5303DC; -// 530AA0: using guessed type int dword_530AA0; -// 530AA4: using guessed type int dword_530AA4; -// 5313F0: using guessed type int dword_5313F0; -// 5313F4: using guessed type int dword_5313F4; -// 531AA0: using guessed type int dword_531AA0; -// 531AA4: using guessed type int dword_531AA4; -// 5323F0: using guessed type int dword_5323F0; -// 5323F4: using guessed type int dword_5323F4; -// 532AA0: using guessed type int dword_532AA0; -// 532AA4: using guessed type int dword_532AA4; -// 5333F0: using guessed type int dword_5333F0; -// 5333F4: using guessed type int dword_5333F4; -// 533418: using guessed type int dword_533418; -// 53341C: using guessed type int dword_53341C; -// 533AA0: using guessed type int dword_533AA0; -// 533AA4: using guessed type int dword_533AA4; -// 5343F0: using guessed type int dword_5343F0; -// 5343F4: using guessed type int dword_5343F4; -// 534AA0: using guessed type int dword_534AA0; -// 534AA4: using guessed type int dword_534AA4; -// 5353F0: using guessed type int dword_5353F0; -// 5353F4: using guessed type int dword_5353F4; -// 535AA0: using guessed type int dword_535AA0; -// 535AA4: using guessed type int dword_535AA4; -// 5363F0: using guessed type int dword_5363F0; -// 5363F4: using guessed type int dword_5363F4; -// 536418: using guessed type int dword_536418; -// 53641C: using guessed type int dword_53641C; -// 536AA0: using guessed type int dword_536AA0; -// 536AA4: using guessed type int dword_536AA4; -// 5392A0: using guessed type int dword_5392A0[]; -// 5392A4: using guessed type int dword_5392A4[511]; -// 539AA0: using guessed type int dword_539AA0; -// 539AA4: using guessed type int dword_539AA4; -// 53A2A0: using guessed type int dword_53A2A0; -// 53A2A4: using guessed type int dword_53A2A4; -// 53A678: using guessed type int dword_53A678; -// 53A67C: using guessed type int dword_53A67C; -// 53AAA0: using guessed type int dword_53AAA0; -// 53AAA4: using guessed type int dword_53AAA4; -// 53B678: using guessed type int dword_53B678; -// 53B67C: using guessed type int dword_53B67C; -// 53BAA0: using guessed type int dword_53BAA0; -// 53BAA4: using guessed type int dword_53BAA4; -// 15222A4: using guessed type char WXSS::Tokenizer::InitTransitTable(void)::bInited; - -//----- (0040A292) -------------------------------------------------------- -int WXSS::Tokenizer::InitSubStrCheckingCaluseTable() -{ - int result; // eax - char v1[56]; // [esp+14h] [ebp-38h] BYREF - - if ( !WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited ) - { - WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited = 1; - // url - WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 9, (char *)Source, 9); - qmemcpy(&WXSS::Tokenizer::SCC, v1, 0x1Cu); - // "rpx" - WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 9, (char *)off_50F508, 9); - qmemcpy((char *)&WXSS::Tokenizer::SCC + 28, v1, 0x1Cu); - WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 10, (char *)Source, 9); - qmemcpy((char *)&WXSS::Tokenizer::SCC + 56, v1, 0x1Cu); - // "rpx" - WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 10, (char *)off_50F508, 9); - qmemcpy((char *)&WXSS::Tokenizer::SCC + 84, v1, 0x1Cu); - // "\0" - result = WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 0, (char *)&byte_50F50C, 0); - qmemcpy((char *)&WXSS::Tokenizer::SCC + 112, v1, 0x1Cu); - } - return result; -} -// 15222A0: using guessed type int WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited; - -//----- (0040A39E) -------------------------------------------------------- -int __cdecl WXSS::Tokenizer::TryGetAnotherTypeByAnySubStr(int a1, int a2, int a3, int a4) -{ - char *v4; // ebx - int v5; // esi - unsigned int v6; // edi - unsigned int v7; // ecx - - if ( !a4 ) - { - v4 = (char *)&WXSS::Tokenizer::SCC; - v5 = 0; - v6 = a2 + 1; - while ( *(_DWORD *)v4 ) - { - if ( a3 == *(_DWORD *)v4 ) - { - v7 = *((_DWORD *)v4 + 1); - if ( v6 >= v7 && !strncmp(v4 + 8, (const char *)(a1 + v6 - v7), *((_DWORD *)v4 + 1)) ) - return dword_5206B8[7 * v5]; // InitSubStrCheckingCaluseTable中初始化的 - } - ++v5; - v4 += 28; - } - } - return a4; -} -// 5206B8: using guessed type int dword_5206B8[1786]; - -//----- (0040A409) -------------------------------------------------------- -volatile signed __int32 **__usercall std::__relocate_a_1>@( - volatile signed __int32 **a1@, - volatile signed __int32 **a2@, - volatile signed __int32 **a3@) -{ - volatile signed __int32 *v4; // ecx - volatile signed __int32 **v5; // edi - volatile signed __int32 **v7; // [esp+8h] [ebp-20h] - volatile signed __int32 **v8; // [esp+8h] [ebp-20h] - - while ( a1 != a2 ) - { - *a3 = *a1; - a3[1] = a1[1]; - v4 = a1[2]; - a3[2] = v4; - if ( v4 ) - { - v7 = a1; - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)v4); - a1 = v7; - } - v5 = a3 + 7; - v8 = a1; - a3 += 23; - *(a3 - 20) = a1[3]; - *(a3 - 19) = a1[4]; - *(a3 - 18) = a1[5]; - *(a3 - 17) = a1[6]; - qmemcpy(v5, a1 + 7, 0x40u); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(a1 + 2); - a1 = v8 + 23; - } - return a3; -} - -//----- (0040A480) -------------------------------------------------------- -int __thiscall WXSS::Tokenizer::GetTokens(int *this, int a2, unsigned int **a3, int a4) -{ - int v4; // eax - unsigned int v5; // eax - volatile signed __int32 **v6; // ecx - size_t v7; // eax - struct _Unwind_Exception *v8; // ebx - int AnotherTypeByAnySubStr; // eax - unsigned __int8 v10; // cl - struct _Unwind_Exception *v11; // ebx - std::ostream::sentry *v12; // eax - std::ostream::sentry *v13; // eax - std::ostream::sentry *v14; // eax - std::ostream::sentry *v15; // eax - std::ostream::sentry *v16; // eax - std::ostream::sentry *v17; // eax - std::ostream::sentry *v18; // eax - char i; // al - char j; // cl - unsigned __int8 v21; // cl - int v22; // eax - volatile signed __int32 *v23; // eax - int v24; // ecx - const char **v25; // edx - volatile signed __int32 *v26; // edx - std::ostream::sentry *v27; // eax - std::ostream::sentry *v28; // eax - const char *v29; // eax - int v30; // ebx - char *v31; // ebx - int v33; // [esp+14h] [ebp-1C4h] - int v35; // [esp+1Ch] [ebp-1BCh] - unsigned int v36; // [esp+20h] [ebp-1B8h] - int v37; // [esp+24h] [ebp-1B4h] - int v38; // [esp+24h] [ebp-1B4h] - unsigned int v39; // [esp+24h] [ebp-1B4h] - int k; // [esp+24h] [ebp-1B4h] - int v41; // [esp+28h] [ebp-1B0h] - int v42; // [esp+2Ch] [ebp-1ACh] - int v43; // [esp+30h] [ebp-1A8h] - char v44; // [esp+37h] [ebp-1A1h] - int v45; // [esp+38h] [ebp-1A0h] - int v46; // [esp+3Ch] [ebp-19Ch] - int v47; // [esp+3Ch] [ebp-19Ch] - _BYTE **Block; // [esp+40h] [ebp-198h] - char *String1; // [esp+44h] [ebp-194h] - char *String1a; // [esp+44h] [ebp-194h] - unsigned __int8 *String1b; // [esp+44h] [ebp-194h] - volatile signed __int32 *String1c; // [esp+44h] [ebp-194h] - char *String1d; // [esp+44h] [ebp-194h] - struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-190h] BYREF - const char **v55; // [esp+84h] [ebp-154h] - volatile signed __int32 *v56; // [esp+88h] [ebp-150h] BYREF - void *v57[6]; // [esp+8Ch] [ebp-14Ch] BYREF - void *v58; // [esp+A4h] [ebp-134h] BYREF v58.0ffset_0 - const char **v59; // [esp+A8h] [ebp-130h] v58.0ffset_4 - volatile signed __int32 *v60; // [esp+ACh] [ebp-12Ch] BYREF v58.0ffset_8 - char *v61; // [esp+B0h] [ebp-128h] v58.0ffset_12 - unsigned int v62; // [esp+B4h] [ebp-124h] v58.0ffset_16 - int v63; // [esp+B8h] [ebp-120h] v58.0ffset_20 - int v64; // [esp+BCh] [ebp-11Ch] v58.0ffset_24 - char Destination[64]; // [esp+C0h] [ebp-118h] BYREF v58.0ffset_28 28 + 64 = 92 - int v66; // [esp+100h] [ebp-D8h] BYREF - volatile signed __int32 *v67; // [esp+104h] [ebp-D4h] BYREF - volatile signed __int32 *v68; // [esp+108h] [ebp-D0h] BYREF - char *v69; // [esp+10Ch] [ebp-CCh] BYREF - unsigned int v70; // [esp+110h] [ebp-C8h] - int v71; // [esp+114h] [ebp-C4h] - int v72; // [esp+118h] [ebp-C0h] - char v73[184]; // [esp+11Ch] [ebp-BCh] BYREF - - // GetTokens - 0 - WXSS::Tokenizer::InitTransitTable(); - WXSS::Tokenizer::InitSubStrCheckingCaluseTable(); - v36 = this[1]; - v4 = 1; - if ( a4 > 0 ) - v4 = a4; - v42 = v4; - v45 = *this; - - // this->offset_0.length() / 7 - v5 = v36 / 7; - if ( v36 > 0x9BD37A9 ) - std::__throw_length_error((std::length_error *)"vector::reserve"); - - v6 = *(volatile signed __int32 ***)a2; // begin - lpuexcpt = *(struct _Unwind_Exception **)(a2 + 8); // end - if ( v5 > -373475417 * ((lpuexcpt - (struct _Unwind_Exception *)v6) >> 2) ) - { - lpuexcpt = 0; - v7 = 92 * v5; - String1 = (char *)v7; - v46 = *(_DWORD *)(a2 + 4) - (_DWORD)v6; - if ( v36 > 6 ) - lpuexcpt = (struct _Unwind_Exception *)operator new(v7); - std::__relocate_a_1>( - *(volatile signed __int32 ***)a2, - *(volatile signed __int32 ***)(a2 + 4), - (volatile signed __int32 **)lpuexcpt); - if ( *(_DWORD *)a2 ) - operator delete(*(void **)a2); - v8 = lpuexcpt; - *(_DWORD *)a2 = lpuexcpt; - *(_DWORD *)(a2 + 4) = (char *)v8 + v46; - *(_DWORD *)(a2 + 8) = (char *)lpuexcpt + (_DWORD)String1; - } - // GetTokens - 5 - v33 = 4194305; - AnotherTypeByAnySubStr = 0; - v37 = 1; - v41 = 1; - v35 = 1; - v47 = 0; - for ( String1a = 0; ; String1a = v31 ) - { - if ( v47 > (int)v36 ) - return 0; - if ( !--v33 ) - { - std::string::_M_replace(a3, 0, (size_t)a3[1], "something must be wrong", 0x17u); - return -1; - } - v10 = *(_BYTE *)(v45 + v47); - if ( v47 == v36 ) - v10 = 0; - v44 = v10; - lpuexcpt = (struct _Unwind_Exception *)WXSS::Tokenizer::TT[1024 * v42 + 2 * v10]; - v11 = lpuexcpt; - AnotherTypeByAnySubStr = WXSS::Tokenizer::TryGetAnotherTypeByAnySubStr(v45, v47, v42, AnotherTypeByAnySubStr); - if ( !v11 ) - { - lpuexcpt = (struct _Unwind_Exception *)dword_522AA0[1024 * v42]; - if ( !lpuexcpt ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v66); - std::operator<<>((std::ostream::sentry *)&v68, "no transition for "); - v12 = (std::ostream::sentry *)std::ostream::operator<<(v42); - v13 = std::operator<<>(v12, " with input "); - std::operator<<>(v13, v44); - std::stringbuf::str((int)&v58, (int)&v69); - std::string::operator=((unsigned __int8 **)a3, (int)&v58); - std::string::_M_dispose(&v58); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v66); - return -1; - } - } - if ( lpuexcpt == (struct _Unwind_Exception *)-1 ) - break; - v42 = (unsigned __int16)lpuexcpt; - if ( ((unsigned int)lpuexcpt & 0x30000) != 0 ) - { - v43 = (((unsigned int)lpuexcpt & 0x20000) == 0) + v47 - 1; - if ( !AnotherTypeByAnySubStr ) - { - AnotherTypeByAnySubStr = 2; - if ( !_bittest((const signed __int32 *)&lpuexcpt, 0x12u) ) - { - AnotherTypeByAnySubStr = 4; - if ( !_bittest((const signed __int32 *)&lpuexcpt, 0x13u) ) - { - AnotherTypeByAnySubStr = 6; - if ( !_bittest((const signed __int32 *)&lpuexcpt, 0x16u) ) - { - AnotherTypeByAnySubStr = 5; - if ( !_bittest((const signed __int32 *)&lpuexcpt, 0x15u) ) - AnotherTypeByAnySubStr = ((unsigned int)lpuexcpt & 0x2000000) == 0 ? 1 : 7; - } - } - } - } - if ( (int)String1a <= v43 ) - { - v58 = (void *)AnotherTypeByAnySubStr; // v58.0ffset_0 - v59 = 0; // v58.0ffset_4 - v61 = String1a; // v58.0ffset_12 - v60 = 0; - v63 = v35; // v58.0ffset_20 - Destination[0] = 0; - v64 = v37; // // v58.0ffset_24 - v62 = (((unsigned int)lpuexcpt & 0x20000) == 0) + v47 - (_DWORD)String1a; // v58.offset_16 - if ( AnotherTypeByAnySubStr == 1 ) - { - strncpy(Destination, &String1a[v45], (((unsigned int)lpuexcpt & 0x20000) == 0) + v47 - (_DWORD)String1a); - Destination[v43 - (_DWORD)String1a + 1] = 0; - } - else - { - v38 = (((unsigned int)lpuexcpt & 0x20000) == 0) + v47 - 1; - if ( _bittest((const signed __int32 *)&lpuexcpt, 0x18u) ) - { - for ( i = String1a[v45]; - (char *)v43 != String1a && (unsigned __int8)(i - 10) <= 0x16u && ((0x400009u >> (i - 10)) & 1) != 0; - i = String1a[v45] ) - { - if ( i == 10 ) - ++v63; - ++String1a; - } - v38 = (((unsigned int)lpuexcpt & 0x20000) == 0) + v47 - 1; - // v45 -> this->offset_0 - for ( j = *(_BYTE *)(v45 + v43); (int)String1a < v38; j = *(_BYTE *)(v45 + v38) ) - { - v21 = j - 10; - if ( v21 > 0x16u || ((0x400009u >> v21) & 1) == 0 ) - break; - --v38; - } - } - v61 = String1a; - Block = (_BYTE **)operator new(0x18u); // std::string - v39 = v38 - (_DWORD)String1a + 1; - String1b = (unsigned __int8 *)&String1a[v45]; - *Block = Block + 2; - if ( &String1b[v39] && !String1b ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v66 = v39; - if ( v39 > 0xF ) // 大于16 新开辟一个空间 - { - *Block = std::string::_M_create((unsigned int *)&v66, 0); - Block[2] = (_BYTE *)v66; - } - std::string::_S_copy_chars(*Block, String1b, (size_t)&String1b[v39]); - v22 = v66; - Block[1] = (_BYTE *)v66; - (*Block)[v22] = 0; - v55 = 0; - v56 = 0; - v66 = (int)Block; // std::string - v67 = 0; - v23 = (volatile signed __int32 *)operator new(0x10u); - v24 = (int)v55; - *((_DWORD *)v23 + 1) = 1; - *((_DWORD *)v23 + 2) = 1; - *((_DWORD *)v23 + 3) = Block; - v25 = (const char **)v66; - *v23 = (volatile signed __int32)&off_51ADB8; - v55 = v25; - v26 = v56; - v66 = v24; - v56 = v23; - v67 = v26; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v67); - v59 = v55; - String1c = v56; - if ( v56 != v60 ) - { - if ( v56 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy((int)v56); - if ( v60 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v60); - v60 = String1c; - } - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v56); - v62 = v39; - } - if ( v58 != (void *)1 ) - { - if ( !v59 ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v66); - std::operator<<>((std::ostream::sentry *)&v68, "pos: "); - v27 = (std::ostream::sentry *)std::ostream::operator<<(v47); - v28 = std::operator<<>(v27, "f739 error"); - std::endl>(v28); - std::stringbuf::str((int)v57, (int)&v69); - std::string::operator=((unsigned __int8 **)a3, (int)v57); - std::string::_M_dispose(v57); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v66); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v60); - return -1; - } - if ( v58 == (void *)4 ) - { - String1d = (char *)*v59; - if ( !__stricmp(*v59, "@media") - || !__stricmp(String1d, "@keyframes") - || !__stricmp(String1d, "@-webkit-keyframes") - || !__stricmp(String1d, "@supports") ) - { - v42 = 24; - } - for ( k = 0; (&WXSS::Tokenizer::DIRECTIVES)[k]; ++k ) - { - if ( !__stricmp(String1d, (&WXSS::Tokenizer::DIRECTIVES)[k]) ) - { - v73[0] = 0; - v67 = 0; // v66.offset_4; - v29 = (&WXSS::Tokenizer::DIRECTIVES)[k]; - v68 = 0; // v66.offset_8; - v66 = 1; // v66.offset_0; - v69 = 0; // v66.offset_12; - v70 = 0; // v66.offset_16; - v71 = 0; // v66.offset_20; - v72 = 0; // v66.offset_24; - strcpy(v73, v29); - v69 = v61; // v66.offset_12; - v71 = v63; // v66.offset_20; - v72 = v64; // v66.offset_24; - v70 = v62; // v66.offset_16; - std::vector::push_back(a2, &v66); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v68); - goto LABEL_77; - } - } - } - }// end if - std::vector::push_back(a2, (int *)&v58); - LABEL_77: - String1a = (char *)(v43 + 1); - v37 = v41 + 1; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v60); - }// end if - AnotherTypeByAnySubStr = 0; - }// end if - if ( _bittest((const signed __int32 *)&lpuexcpt, 0x1Au) ) - { - --v47; - } - else - { - if ( v44 == 10 ) - { - ++v35; - v41 = 0; - } - ++v41; - } - ++v47; - v30 = v37; - if ( ((unsigned int)lpuexcpt & 0x8000000) != 0 ) - v30 = v41; - v37 = v30; - v31 = String1a; - if ( ((unsigned int)lpuexcpt & 0x8000000) != 0 ) - v31 = (char *)v47; - } - // for end - - // GetTokens - 10 - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v66); - v14 = std::operator<<((std::ostream::sentry *)&v68, this + 6); - std::operator<<>(v14, "("); - v15 = (std::ostream::sentry *)std::ostream::operator<<(v35); - std::operator<<>(v15, ":"); - v16 = (std::ostream::sentry *)std::ostream::operator<<(v41); - v17 = std::operator<<>(v16, "): unexpected `"); - v18 = std::operator<<>(v17, v44); - std::operator<<>(v18, "` at pos "); - std::ostream::operator<<(v47 + 1); - if ( !v47 && (unsigned __int8)v44 > 0xFDu ) - std::operator<<>( - (std::ostream::sentry *)&v68, - " (shoud you check if there's any BOM at the begin of file)"); - std::stringbuf::str((int)&v58, (int)&v69); - std::string::operator=((unsigned __int8 **)a3, (int)&v58); - std::string::_M_dispose(&v58); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v66); - return (int)lpuexcpt; -} -// 4A2900: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 51ADB8: using guessed type int (*off_51ADB8)(); -// 5222A0: using guessed type int WXSS::Tokenizer::TT[]; -// 522AA0: using guessed type int dword_522AA0[]; -// 40A480: using guessed type char Destination[64]; -// 40A480: using guessed type char var_BC[184]; - -//----- (0040B118) -------------------------------------------------------- -void __tcf_1_2(void) -{ - std::ios_base::Init::~Init(); -} - -//----- (0040B122) -------------------------------------------------------- -int __thiscall std::string::basic_string(void **this, char *Str) -{ - char *v3; // edi - int result; // eax - int v5; // edx - int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = strlen(Str); - v3 = &Str[v6[0]]; - if ( v6[0] > 0xFu ) - { - *this = std::string::_M_create((unsigned int *)v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, (unsigned __int8 *)Str, (size_t)v3); - result = v6[0]; - v5 = (int)*this; - this[1] = (void *)v6[0]; - *(_BYTE *)(v5 + result) = 0; - return result; -} -// 40B122: using guessed type size_t var_1C[7]; - -//----- (0040B1A0) -------------------------------------------------------- -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str) -{ - size_t v2; // eax - - v2 = strlen(Str); - return std::string::_M_replace(this, 0, (size_t)this[1], Str, v2); -} - -//----- (0040B1DE) -------------------------------------------------------- -int WXSS::CSSTreeLib::TransitTable::GetTopType() -{ - return 25; -} - -//----- (0040B1E4) -------------------------------------------------------- -void __thiscall std::vector::_M_move_assign(void ***this, void ***a2) -{ - void **v2; // ebx - void **v3; // edx - void **v4; // edi - int v5; // edi - void **v6[9]; // [esp+4h] [ebp-24h] BYREF - - v2 = this[1]; - v3 = this[2]; - v4 = *a2; - v6[0] = *this; - v6[1] = v2; - *this = v4; - v5 = (int)a2[1]; - v6[2] = v3; - this[1] = (void **)v5; - this[2] = a2[2]; - *a2 = 0; - a2[1] = 0; - a2[2] = 0; - std::vector::~vector(v6); -} - -//----- (0040B238) -------------------------------------------------------- -void __usercall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( - int a1@) -{ - int v2; // esi - void *v3; // [esp+0h] [ebp-28h] - - while ( a1 ) - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 12)); - v2 = *(_DWORD *)(a1 + 8); - std::vector::~vector((void ***)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 16)); - v3 = (void *)a1; - a1 = v2; - operator delete(v3); - } -} - -//----- (0040B278) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - _DWORD *this, - _DWORD *a2) -{ - int result; // eax - int v4; // edi - - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(this[2]); - this[2] = 0; - this[3] = this + 1; - this[4] = this + 1; - result = a2[2]; - this[5] = 0; - if ( result ) - { - v4 = a2[1]; - this[2] = result; - this[1] = v4; - this[3] = a2[3]; - this[4] = a2[4]; - *(_DWORD *)(result + 4) = this + 1; - result = a2[5]; - this[5] = result; - a2[2] = 0; - a2[3] = a2 + 1; - a2[4] = a2 + 1; - a2[5] = 0; - } - return result; -} - -//----- (0040B2EC) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1) -{ - _DWORD *v1; // eax - _DWORD *v2; // eax - _DWORD *v3; // eax - _DWORD *v4; // eax - int v5; // eax - _DWORD *v6; // eax - int v7; // eax - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - _DWORD *v11; // eax - int v12; // eax - _DWORD *v13; // eax - _DWORD *v14; // eax - int v15; // eax - _DWORD *v16; // eax - _DWORD *v17; // eax - _DWORD *v18; // eax - _DWORD *v19; // eax - _DWORD *v20; // eax - int v21; // eax - _DWORD *v22; // eax - int v23; // eax - _DWORD *v24; // eax - _DWORD *v25; // eax - _DWORD *v26; // eax - _DWORD *v27; // eax - _DWORD *v28; // eax - int v29; // eax - _DWORD *v30; // eax - _DWORD *v31; // eax - _DWORD *v32; // eax - _DWORD *v33; // eax - int v34; // eax - _DWORD *v35; // eax - _DWORD *v36; // eax - _DWORD *v37; // eax - int v38; // eax - _DWORD *v39; // eax - _DWORD *v40; // eax - _DWORD *v41; // eax - _DWORD *v42; // eax - _DWORD *v43; // eax - int v44; // eax - _DWORD *v45; // eax - _DWORD *v46; // eax - _DWORD *v47; // eax - int v48; // eax - _DWORD *v49; // eax - _DWORD *v50; // eax - _DWORD *v51; // eax - int v52; // eax - _DWORD *v53; // eax - _DWORD *v54; // eax - _DWORD *v55; // eax - int v56; // eax - _DWORD *v57; // eax - _DWORD *v58; // eax - _DWORD *v59; // eax - int v60; // eax - _DWORD *v61; // eax - _DWORD *v62; // eax - _DWORD *v63; // eax - int v64; // eax - _DWORD *v65; // eax - _DWORD *v66; // eax - _DWORD *v67; // eax - int v68; // eax - _DWORD *v69; // eax - _DWORD *v70; // eax - _DWORD *v71; // eax - int v72; // eax - _DWORD *v73; // eax - _DWORD *v74; // eax - _DWORD *v75; // eax - _DWORD *v76; // eax - _DWORD *v77; // eax - int v78; // eax - _DWORD *v79; // eax - _DWORD *v80; // eax - _DWORD *v81; // eax - int v82; // eax - _DWORD *v83; // eax - _DWORD *v84; // eax - _DWORD *v85; // eax - _DWORD *v86; // eax - int v87; // eax - _DWORD *v88; // eax - int v89; // eax - _DWORD *v90; // eax - _DWORD *v91; // eax - _DWORD *v92; // eax - _DWORD *v93; // eax - int v94; // eax - _DWORD *v95; // eax - _DWORD *v96; // eax - _DWORD *v97; // eax - _DWORD *v98; // eax - int v99; // eax - _DWORD *v100; // eax - _DWORD *v101; // eax - int v102; // eax - _DWORD *v103; // eax - _DWORD *v104; // eax - int v105; // eax - _DWORD *v106; // eax - int v107; // eax - _DWORD *v108; // eax - _DWORD *v109; // eax - _DWORD *v110; // eax - _DWORD *v111; // eax - int v112; // eax - _DWORD *v113; // eax - _DWORD *v114; // eax - _DWORD *v115; // eax - _DWORD *v116; // eax - _DWORD *v117; // eax - _DWORD *v118; // eax - _DWORD *v119; // eax - _DWORD *v120; // eax - _DWORD *v121; // eax - _DWORD *v122; // eax - int v123; // eax - _DWORD *v124; // eax - _DWORD *v125; // eax - _DWORD *v126; // eax - _DWORD *v127; // eax - _DWORD *v128; // eax - _DWORD *v129; // eax - int v130; // eax - _DWORD *v131; // eax - int v132; // eax - _DWORD *v133; // eax - _DWORD *v134; // eax - _DWORD *v135; // eax - _DWORD *v136; // eax - _DWORD *v137; // eax - _DWORD *v138; // eax - int v139; // eax - _DWORD *v140; // eax - int v141; // eax - _DWORD *v142; // eax - _DWORD *v143; // eax - int v144; // eax - _DWORD *v145; // eax - _DWORD *v146; // eax - int v147; // eax - _DWORD *v148; // eax - _DWORD *v149; // eax - _DWORD *v150; // eax - _DWORD *v151; // eax - _DWORD *v152; // eax - _DWORD *v153; // eax - _DWORD *v154; // eax - _DWORD *v155; // eax - _DWORD *v156; // eax - _DWORD *v157; // eax - int v158; // eax - _DWORD *v159; // eax - _DWORD *v160; // eax - _DWORD *v161; // eax - int v162; // eax - _DWORD *v163; // eax - _DWORD *v164; // eax - _DWORD *v165; // eax - int v166; // eax - _DWORD *v167; // eax - _DWORD *v168; // eax - _DWORD *v169; // eax - int v170; // eax - _DWORD *v171; // eax - _DWORD *v172; // eax - _DWORD *v173; // eax - int v174; // eax - _DWORD *v175; // eax - _DWORD *v176; // eax - _DWORD *v177; // eax - _DWORD *v178; // eax - _DWORD *v179; // eax - int v180; // eax - _DWORD *v181; // eax - _DWORD *v182; // eax - _DWORD *v183; // eax - _DWORD *v184; // eax - _DWORD *v185; // eax - int v186; // eax - _DWORD *v187; // eax - _DWORD *v188; // eax - _DWORD *v189; // eax - int v190; // eax - int v191; // eax - _DWORD *v192; // eax - _DWORD *v193; // eax - _DWORD *v194; // eax - _DWORD *v195; // eax - int v196; // eax - _DWORD *v197; // eax - _DWORD *v198; // eax - _DWORD *v199; // eax - _DWORD *v200; // eax - int v201; // eax - _DWORD *v202; // eax - _DWORD *v203; // eax - _DWORD *v204; // eax - int v205; // eax - int v206; // eax - _DWORD *v207; // eax - _DWORD *v208; // eax - _DWORD *v209; // eax - int v210; // eax - int v211; // eax - _DWORD *v212; // eax - _DWORD *v213; // eax - _DWORD *v214; // eax - _DWORD *v215; // eax - int v216; // eax - _DWORD *v217; // eax - _DWORD *v218; // eax - _DWORD *v219; // eax - int v220; // eax - _DWORD *v221; // eax - _DWORD *v222; // eax - _DWORD *v223; // eax - _DWORD *v224; // eax - int v225; // eax - _DWORD *v226; // eax - _DWORD *v227; // eax - _DWORD *v228; // eax - _DWORD *v229; // eax - int v230; // eax - _DWORD *v231; // eax - _DWORD *v232; // eax - _DWORD *v233; // eax - int v234; // eax - int v235; // eax - _DWORD *v236; // eax - _DWORD *v237; // eax - _DWORD *v238; // eax - _DWORD *v239; // eax - int v240; // eax - _DWORD *v241; // eax - _DWORD *v242; // eax - _DWORD *v243; // eax - _DWORD *v244; // eax - int v245; // eax - _DWORD *v246; // eax - int v247; // eax - _DWORD *v248; // eax - _DWORD *v249; // eax - _DWORD *v250; // eax - _DWORD *v251; // eax - _DWORD *v252; // eax - _DWORD *v253; // eax - int v254; // eax - _DWORD *v255; // eax - _DWORD *v256; // eax - _DWORD *v257; // eax - _DWORD *v258; // eax - _DWORD *v259; // eax - _DWORD *v260; // eax - _DWORD *v261; // eax - _DWORD *v262; // eax - int v263; // eax - _DWORD *v264; // eax - _DWORD *v265; // eax - int v266; // eax - _DWORD *v267; // eax - _DWORD *v268; // eax - _DWORD *v269; // eax - _DWORD *v270; // eax - _DWORD *v271; // eax - _DWORD *v272; // eax - _DWORD *v273; // eax - _DWORD *v274; // eax - _DWORD *v275; // eax - _DWORD *v276; // eax - _DWORD *v277; // eax - _DWORD *v278; // eax - _DWORD *v279; // eax - int v280; // eax - _DWORD *v281; // eax - _DWORD *v282; // eax - _DWORD *v283; // eax - _DWORD *v284; // eax - _DWORD *v285; // eax - _DWORD *v286; // eax - int v287; // eax - _DWORD *v288; // eax - int v289; // eax - _DWORD *v290; // eax - _DWORD *v291; // eax - _DWORD *v292; // eax - int v293; // eax - _DWORD *v294; // eax - int v295; // eax - _DWORD *v296; // eax - _DWORD *v297; // eax - _DWORD *v298; // eax - int v299; // eax - _DWORD *v300; // eax - int v301; // eax - _DWORD *v302; // eax - _DWORD *v303; // eax - _DWORD *v304; // eax - _DWORD *v305; // eax - int v306; // eax - _DWORD *v307; // eax - _DWORD *v308; // eax - int v309; // eax - _DWORD *v310; // eax - _DWORD *v311; // eax - int v312; // eax - _DWORD *v313; // eax - _DWORD *v314; // eax - int v315; // eax - _DWORD *v316; // eax - _DWORD *v317; // eax - int v318; // eax - _DWORD *v319; // eax - _DWORD *v320; // eax - int v321; // eax - _DWORD *v322; // eax - _DWORD *v323; // eax - int v324; // eax - _DWORD *v325; // eax - _DWORD *v326; // eax - int v327; // eax - _DWORD *v328; // eax - _DWORD *v329; // eax - int v330; // eax - _DWORD *v331; // eax - _DWORD *v332; // eax - int v333; // eax - _DWORD *v334; // eax - _DWORD *v335; // eax - int v336; // eax - _DWORD *v337; // eax - _DWORD *v338; // eax - _DWORD *v339; // eax - int v340; // eax - _DWORD *v341; // eax - int v342; // eax - _DWORD *v343; // eax - _DWORD *v344; // eax - _DWORD *v345; // eax - _DWORD *v346; // eax - int v347; // eax - _DWORD *v348; // eax - _DWORD *v349; // eax - int v350; // eax - _DWORD *v351; // eax - _DWORD *v352; // eax - int v353; // eax - _DWORD *v354; // eax - _DWORD *v355; // eax - int v356; // eax - _DWORD *v357; // eax - _DWORD *v358; // eax - int v359; // eax - _DWORD *v360; // eax - _DWORD *v361; // eax - int v362; // eax - _DWORD *v363; // eax - _DWORD *v364; // eax - int v365; // eax - _DWORD *v366; // eax - _DWORD *v367; // eax - int v368; // eax - _DWORD *v369; // eax - _DWORD *v370; // eax - int v371; // eax - _DWORD *v372; // eax - _DWORD *v373; // eax - int v374; // eax - _DWORD *v375; // eax - int v376; // eax - _DWORD *v377; // eax - _DWORD *v378; // eax - int v379; // eax - _DWORD *v380; // eax - _DWORD *v381; // eax - int v382; // eax - _DWORD *v383; // eax - _DWORD *v384; // eax - int v385; // eax - _DWORD *v386; // eax - _DWORD *v387; // eax - int v388; // eax - _DWORD *v389; // eax - _DWORD *v390; // eax - _DWORD *v391; // eax - _DWORD *v392; // eax - int v393; // eax - _DWORD *v394; // eax - _DWORD *v395; // eax - int v396; // eax - _DWORD *v397; // eax - _DWORD *v398; // eax - int v399; // eax - _DWORD *v400; // eax - _DWORD *v401; // eax - int v402; // eax - _DWORD *v403; // eax - _DWORD *v404; // eax - int v405; // eax - _DWORD *v406; // eax - _DWORD *v407; // eax - int v408; // eax - _DWORD *v409; // eax - _DWORD *v410; // eax - int v411; // eax - _DWORD *v412; // eax - _DWORD *v413; // eax - int v414; // eax - _DWORD *v415; // eax - _DWORD *v416; // eax - int v417; // eax - _DWORD *v418; // eax - _DWORD *v419; // eax - int v420; // eax - _DWORD *v421; // eax - int v422; // eax - _DWORD *v423; // eax - _DWORD *v424; // eax - int v425; // eax - _DWORD *v426; // eax - _DWORD *v427; // eax - int v428; // eax - _DWORD *v429; // eax - _DWORD *v430; // eax - int v431; // eax - _DWORD *v432; // eax - _DWORD *v433; // eax - int v434; // eax - _DWORD *v435; // eax - _DWORD *v436; // eax - _DWORD *v437; // eax - _DWORD *v438; // eax - int v439; // eax - _DWORD *v440; // eax - int v441; // eax - _DWORD *v442; // eax - int v443; // eax - _DWORD *v444; // eax - _DWORD *v445; // eax - _DWORD *v446; // eax - _DWORD *v447; // eax - _DWORD *v448; // eax - _DWORD *v449; // eax - int v450; // eax - _DWORD *v451; // eax - _DWORD *v452; // eax - int v453; // eax - _DWORD *v454; // eax - _DWORD *v455; // eax - _DWORD *v456; // eax - _DWORD *v457; // eax - _DWORD *v458; // eax - _DWORD *v459; // eax - _DWORD *v460; // eax - _DWORD *v461; // eax - int v462; // eax - _DWORD *v463; // eax - _DWORD *v464; // eax - _DWORD *v465; // eax - _DWORD *v466; // eax - _DWORD *v467; // eax - int v468; // eax - _DWORD *v469; // eax - _DWORD *v470; // eax - _DWORD *v471; // eax - int v472; // eax - _DWORD *v473; // eax - _DWORD *v474; // eax - _DWORD *v475; // eax - int v476; // eax - _DWORD *v477; // eax - _DWORD *v478; // eax - _DWORD *v479; // eax - int v480; // eax - _DWORD *v481; // eax - _DWORD *v482; // eax - _DWORD *v483; // eax - int v484; // eax - _DWORD *v485; // eax - _DWORD *v486; // eax - _DWORD *v487; // eax - int v488; // eax - _DWORD *v489; // eax - _DWORD *v490; // eax - _DWORD *v491; // eax - _DWORD *v492; // eax - _DWORD *v493; // eax - _DWORD *v494; // eax - _DWORD *v495; // eax - _DWORD *v496; // eax - _DWORD *v497; // eax - _DWORD *v498; // eax - _DWORD *v499; // eax - _DWORD *v500; // eax - _DWORD *v501; // eax - _DWORD *v502; // eax - _DWORD *v503; // eax - _DWORD *v504; // eax - _DWORD *v505; // eax - _DWORD *v506; // eax - _DWORD *v507; // eax - _DWORD *v508; // eax - _DWORD *v509; // eax - _DWORD *v510; // eax - _DWORD *v511; // eax - _DWORD *v512; // eax - _DWORD *v513; // eax - _DWORD *v514; // eax - _DWORD *v515; // eax - _DWORD *v516; // eax - _DWORD *v517; // eax - _DWORD *v518; // eax - _DWORD *v519; // eax - _DWORD *v520; // eax - _DWORD *v521; // eax - int v522; // eax - _DWORD *v523; // eax - int v524; // eax - _DWORD *v525; // eax - _DWORD *v526; // eax - int v527; // eax - _DWORD *v528; // eax - _DWORD *v529; // eax - int v530; // eax - _DWORD *v531; // eax - _DWORD *v532; // eax - _DWORD *v533; // eax - _DWORD *v534; // eax - int v535; // eax - _DWORD *v536; // eax - _DWORD *v537; // eax - int v538; // eax - _DWORD *v539; // eax - _DWORD *v540; // eax - int v541; // eax - _DWORD *v542; // eax - _DWORD *v543; // eax - int v544; // eax - _DWORD *v545; // eax - _DWORD *v546; // eax - int v547; // eax - _DWORD *v548; // eax - _DWORD *v549; // eax - int v550; // eax - _DWORD *v551; // eax - int v552; // eax - _DWORD *v553; // eax - _DWORD *v554; // eax - int v555; // eax - _DWORD *v556; // eax - _DWORD *v557; // eax - int v558; // eax - _DWORD *v559; // eax - _DWORD *v560; // eax - int v561; // eax - _DWORD *v562; // eax - _DWORD *v563; // eax - int v564; // eax - _DWORD *v565; // eax - _DWORD *v566; // eax - _DWORD *v567; // eax - int v568; // eax - _DWORD *v569; // eax - _DWORD *v570; // eax - _DWORD *v571; // eax - _DWORD *v572; // eax - _DWORD *v573; // eax - _DWORD *v574; // eax - _DWORD *v575; // eax - _DWORD *v576; // eax - _DWORD *v577; // eax - _DWORD *v578; // eax - _DWORD *v579; // eax - _DWORD *v580; // eax - _DWORD *v581; // eax - _DWORD *v582; // eax - _DWORD *v583; // eax - int v584; // eax - _DWORD *v585; // eax - _DWORD *v586; // eax - int v587; // eax - _DWORD *v588; // eax - _DWORD *v589; // eax - _DWORD *v590; // eax - _DWORD *v591; // eax - _DWORD *v592; // eax - _DWORD *v593; // eax - _DWORD *v594; // eax - _DWORD *v595; // eax - int v596; // eax - _DWORD *v597; // eax - _DWORD *v598; // eax - _DWORD *v599; // eax - _DWORD *v600; // eax - int v601; // eax - _DWORD *v602; // eax - _DWORD *v603; // eax - _DWORD *v604; // eax - _DWORD *v605; // eax - _DWORD *v606; // eax - _DWORD *v607; // eax - _DWORD *v608; // eax - _DWORD *v609; // eax - _DWORD *v610; // eax - _DWORD *v611; // eax - int v612; // eax - _DWORD *v613; // eax - _DWORD *v614; // eax - _DWORD *v615; // eax - _DWORD *v616; // eax - _DWORD *v617; // eax - _DWORD *v618; // eax - _DWORD *v619; // eax - _DWORD *v620; // eax - _DWORD *v621; // eax - _DWORD *v622; // eax - void *v623; // [esp+10h] [ebp-A8h] - int v624; // [esp+10h] [ebp-A8h] - void *v625; // [esp+10h] [ebp-A8h] - int v626; // [esp+10h] [ebp-A8h] - void *v627; // [esp+10h] [ebp-A8h] - int v628; // [esp+10h] [ebp-A8h] - void *v629; // [esp+10h] [ebp-A8h] - int v630; // [esp+10h] [ebp-A8h] - void *v631; // [esp+10h] [ebp-A8h] - int v632; // [esp+10h] [ebp-A8h] - void *v633; // [esp+10h] [ebp-A8h] - int v634; // [esp+10h] [ebp-A8h] - void *v635; // [esp+10h] [ebp-A8h] - int v636; // [esp+10h] [ebp-A8h] - void *v637; // [esp+10h] [ebp-A8h] - int v638; // [esp+10h] [ebp-A8h] - void *v639; // [esp+10h] [ebp-A8h] - int v640; // [esp+10h] [ebp-A8h] - void *v641; // [esp+10h] [ebp-A8h] - int v642; // [esp+10h] [ebp-A8h] - void *v643; // [esp+10h] [ebp-A8h] - int v644; // [esp+10h] [ebp-A8h] - void *v645; // [esp+10h] [ebp-A8h] - int v646; // [esp+10h] [ebp-A8h] - void *v647; // [esp+10h] [ebp-A8h] - int v648; // [esp+10h] [ebp-A8h] - void *v649; // [esp+10h] [ebp-A8h] - int v650; // [esp+10h] [ebp-A8h] - void *v651; // [esp+10h] [ebp-A8h] - int v652; // [esp+10h] [ebp-A8h] - void *v653; // [esp+10h] [ebp-A8h] - int v654; // [esp+10h] [ebp-A8h] - void *v655; // [esp+10h] [ebp-A8h] - int v656; // [esp+10h] [ebp-A8h] - void *v657; // [esp+10h] [ebp-A8h] - int v658; // [esp+10h] [ebp-A8h] - void *v659; // [esp+10h] [ebp-A8h] - int v660; // [esp+10h] [ebp-A8h] - void *v661; // [esp+10h] [ebp-A8h] - int v662; // [esp+10h] [ebp-A8h] - void *v663; // [esp+10h] [ebp-A8h] - int v664; // [esp+10h] [ebp-A8h] - void *v665; // [esp+10h] [ebp-A8h] - int v666; // [esp+10h] [ebp-A8h] - void *v667; // [esp+10h] [ebp-A8h] - int v668; // [esp+10h] [ebp-A8h] - void *v669; // [esp+10h] [ebp-A8h] - int v670; // [esp+10h] [ebp-A8h] - void *v671; // [esp+10h] [ebp-A8h] - int v672; // [esp+10h] [ebp-A8h] - void *v673; // [esp+10h] [ebp-A8h] - int v674; // [esp+10h] [ebp-A8h] - void *v675; // [esp+10h] [ebp-A8h] - int v676; // [esp+10h] [ebp-A8h] - void *v677; // [esp+10h] [ebp-A8h] - int v678; // [esp+10h] [ebp-A8h] - void *v679; // [esp+10h] [ebp-A8h] - int v680; // [esp+10h] [ebp-A8h] - void *v681; // [esp+10h] [ebp-A8h] - int v682; // [esp+10h] [ebp-A8h] - void *v683; // [esp+10h] [ebp-A8h] - int v684; // [esp+10h] [ebp-A8h] - void *v685; // [esp+10h] [ebp-A8h] - int v686; // [esp+10h] [ebp-A8h] - void *v687; // [esp+10h] [ebp-A8h] - int v688; // [esp+10h] [ebp-A8h] - void *v689; // [esp+10h] [ebp-A8h] - int v690; // [esp+10h] [ebp-A8h] - void *v691; // [esp+10h] [ebp-A8h] - int v692; // [esp+10h] [ebp-A8h] - void *v693; // [esp+10h] [ebp-A8h] - int v694; // [esp+10h] [ebp-A8h] - void *v695; // [esp+10h] [ebp-A8h] - int v696; // [esp+10h] [ebp-A8h] - void *v697; // [esp+10h] [ebp-A8h] - int v698; // [esp+10h] [ebp-A8h] - void *v699; // [esp+10h] [ebp-A8h] - int v700; // [esp+10h] [ebp-A8h] - void *v701; // [esp+10h] [ebp-A8h] - int v702; // [esp+10h] [ebp-A8h] - void *v703; // [esp+10h] [ebp-A8h] - int v704; // [esp+10h] [ebp-A8h] - void *v705; // [esp+10h] [ebp-A8h] - int v706; // [esp+10h] [ebp-A8h] - void *v707; // [esp+10h] [ebp-A8h] - int v708; // [esp+10h] [ebp-A8h] - void *v709; // [esp+10h] [ebp-A8h] - int v710; // [esp+10h] [ebp-A8h] - void *v711; // [esp+10h] [ebp-A8h] - int v712; // [esp+10h] [ebp-A8h] - void *v713; // [esp+10h] [ebp-A8h] - int v714; // [esp+10h] [ebp-A8h] - void *v715; // [esp+10h] [ebp-A8h] - int v716; // [esp+10h] [ebp-A8h] - void *v717; // [esp+10h] [ebp-A8h] - int v718; // [esp+10h] [ebp-A8h] - void *v719; // [esp+10h] [ebp-A8h] - int v720; // [esp+10h] [ebp-A8h] - void *v721; // [esp+10h] [ebp-A8h] - int v722; // [esp+10h] [ebp-A8h] - void *v723; // [esp+10h] [ebp-A8h] - int v724; // [esp+10h] [ebp-A8h] - void *v725; // [esp+10h] [ebp-A8h] - int v726; // [esp+10h] [ebp-A8h] - void *v727; // [esp+10h] [ebp-A8h] - int v728; // [esp+10h] [ebp-A8h] - void *v729; // [esp+10h] [ebp-A8h] - int v730; // [esp+10h] [ebp-A8h] - void *v731; // [esp+10h] [ebp-A8h] - int v732; // [esp+10h] [ebp-A8h] - void *v733; // [esp+10h] [ebp-A8h] - int v734; // [esp+10h] [ebp-A8h] - void *v735; // [esp+10h] [ebp-A8h] - int v736; // [esp+10h] [ebp-A8h] - void *v737; // [esp+10h] [ebp-A8h] - int v738; // [esp+10h] [ebp-A8h] - void *v739; // [esp+10h] [ebp-A8h] - int v740; // [esp+10h] [ebp-A8h] - void *v741; // [esp+10h] [ebp-A8h] - int v742; // [esp+10h] [ebp-A8h] - void *v743; // [esp+10h] [ebp-A8h] - int v744; // [esp+10h] [ebp-A8h] - void *v745; // [esp+10h] [ebp-A8h] - int v746; // [esp+10h] [ebp-A8h] - void *v747; // [esp+10h] [ebp-A8h] - int v748; // [esp+10h] [ebp-A8h] - void *v749; // [esp+10h] [ebp-A8h] - int v750; // [esp+10h] [ebp-A8h] - void *v751; // [esp+10h] [ebp-A8h] - int v752; // [esp+10h] [ebp-A8h] - void *v753; // [esp+10h] [ebp-A8h] - int v754; // [esp+10h] [ebp-A8h] - void *v755; // [esp+10h] [ebp-A8h] - int v756; // [esp+10h] [ebp-A8h] - void *v757; // [esp+10h] [ebp-A8h] - int v758; // [esp+10h] [ebp-A8h] - void *v759; // [esp+10h] [ebp-A8h] - int v760; // [esp+10h] [ebp-A8h] - void *v761; // [esp+10h] [ebp-A8h] - int v762; // [esp+10h] [ebp-A8h] - void *v763; // [esp+10h] [ebp-A8h] - int v764; // [esp+10h] [ebp-A8h] - void *v765; // [esp+10h] [ebp-A8h] - int v766; // [esp+10h] [ebp-A8h] - void *v767; // [esp+10h] [ebp-A8h] - int v768; // [esp+10h] [ebp-A8h] - void *v769; // [esp+10h] [ebp-A8h] - int v770; // [esp+10h] [ebp-A8h] - void *v771; // [esp+10h] [ebp-A8h] - int v772; // [esp+10h] [ebp-A8h] - void *v773; // [esp+10h] [ebp-A8h] - int v774; // [esp+10h] [ebp-A8h] - void *v775; // [esp+10h] [ebp-A8h] - int v776; // [esp+10h] [ebp-A8h] - void *v777; // [esp+10h] [ebp-A8h] - int v778; // [esp+10h] [ebp-A8h] - void *v779; // [esp+10h] [ebp-A8h] - int v780; // [esp+10h] [ebp-A8h] - void *v781; // [esp+10h] [ebp-A8h] - int v782; // [esp+10h] [ebp-A8h] - void *v783; // [esp+10h] [ebp-A8h] - int v784; // [esp+10h] [ebp-A8h] - void *v785; // [esp+10h] [ebp-A8h] - int v786; // [esp+10h] [ebp-A8h] - void *v787; // [esp+10h] [ebp-A8h] - int v788; // [esp+10h] [ebp-A8h] - void *v789; // [esp+10h] [ebp-A8h] - int v790; // [esp+10h] [ebp-A8h] - void *v791; // [esp+10h] [ebp-A8h] - int v792; // [esp+10h] [ebp-A8h] - void *v793; // [esp+10h] [ebp-A8h] - int v794; // [esp+10h] [ebp-A8h] - void *v795; // [esp+10h] [ebp-A8h] - int v796; // [esp+10h] [ebp-A8h] - void *v797; // [esp+10h] [ebp-A8h] - int v798; // [esp+10h] [ebp-A8h] - void *v799; // [esp+10h] [ebp-A8h] - int v800; // [esp+10h] [ebp-A8h] - void *v801; // [esp+10h] [ebp-A8h] - int v802; // [esp+10h] [ebp-A8h] - void *v803; // [esp+10h] [ebp-A8h] - int v804; // [esp+10h] [ebp-A8h] - void *v805; // [esp+10h] [ebp-A8h] - int v806; // [esp+10h] [ebp-A8h] - void *v807; // [esp+10h] [ebp-A8h] - int v808; // [esp+10h] [ebp-A8h] - void *v809; // [esp+10h] [ebp-A8h] - int v810; // [esp+10h] [ebp-A8h] - void *v811; // [esp+10h] [ebp-A8h] - int v812; // [esp+10h] [ebp-A8h] - void *v813; // [esp+10h] [ebp-A8h] - int v814; // [esp+10h] [ebp-A8h] - void *v815; // [esp+10h] [ebp-A8h] - int v816; // [esp+10h] [ebp-A8h] - void *v817; // [esp+10h] [ebp-A8h] - int v818; // [esp+10h] [ebp-A8h] - void *v819; // [esp+10h] [ebp-A8h] - int v820; // [esp+10h] [ebp-A8h] - void *v821; // [esp+10h] [ebp-A8h] - int v822; // [esp+10h] [ebp-A8h] - void *v823; // [esp+10h] [ebp-A8h] - int v824; // [esp+10h] [ebp-A8h] - void *v825; // [esp+10h] [ebp-A8h] - int v826; // [esp+10h] [ebp-A8h] - void *v827; // [esp+10h] [ebp-A8h] - int v828; // [esp+10h] [ebp-A8h] - void *v829; // [esp+10h] [ebp-A8h] - int v830; // [esp+10h] [ebp-A8h] - void *v831; // [esp+10h] [ebp-A8h] - int v832; // [esp+10h] [ebp-A8h] - void *v833; // [esp+10h] [ebp-A8h] - int v834; // [esp+10h] [ebp-A8h] - void *v835; // [esp+10h] [ebp-A8h] - int v836; // [esp+10h] [ebp-A8h] - void *v837; // [esp+10h] [ebp-A8h] - int v838; // [esp+10h] [ebp-A8h] - void *v839; // [esp+10h] [ebp-A8h] - int v840; // [esp+10h] [ebp-A8h] - void *v841; // [esp+10h] [ebp-A8h] - int v842; // [esp+10h] [ebp-A8h] - void *v843; // [esp+10h] [ebp-A8h] - int v844; // [esp+10h] [ebp-A8h] - void *v845; // [esp+10h] [ebp-A8h] - int v846; // [esp+10h] [ebp-A8h] - void *v847; // [esp+10h] [ebp-A8h] - int v848; // [esp+10h] [ebp-A8h] - void *v849; // [esp+10h] [ebp-A8h] - int v850; // [esp+10h] [ebp-A8h] - void *v851; // [esp+10h] [ebp-A8h] - int v852; // [esp+10h] [ebp-A8h] - void *v853; // [esp+10h] [ebp-A8h] - int v854; // [esp+10h] [ebp-A8h] - void *v855; // [esp+10h] [ebp-A8h] - int v856; // [esp+10h] [ebp-A8h] - void *v857; // [esp+10h] [ebp-A8h] - int v858; // [esp+10h] [ebp-A8h] - void *v859; // [esp+10h] [ebp-A8h] - int v860; // [esp+10h] [ebp-A8h] - void *v861; // [esp+10h] [ebp-A8h] - int v862; // [esp+10h] [ebp-A8h] - void *v863; // [esp+10h] [ebp-A8h] - int v864; // [esp+10h] [ebp-A8h] - void *v865; // [esp+10h] [ebp-A8h] - int v866; // [esp+10h] [ebp-A8h] - void *v867; // [esp+10h] [ebp-A8h] - int v868; // [esp+10h] [ebp-A8h] - void *v869; // [esp+10h] [ebp-A8h] - int v870; // [esp+10h] [ebp-A8h] - void *v871; // [esp+10h] [ebp-A8h] - int v872; // [esp+10h] [ebp-A8h] - void *v873; // [esp+10h] [ebp-A8h] - int v874; // [esp+10h] [ebp-A8h] - void *v875; // [esp+10h] [ebp-A8h] - int v876; // [esp+10h] [ebp-A8h] - void *v877; // [esp+10h] [ebp-A8h] - int v878; // [esp+10h] [ebp-A8h] - void *v879; // [esp+10h] [ebp-A8h] - int v880; // [esp+10h] [ebp-A8h] - void *v881; // [esp+10h] [ebp-A8h] - int v882; // [esp+10h] [ebp-A8h] - void *v883; // [esp+10h] [ebp-A8h] - int v884; // [esp+10h] [ebp-A8h] - void *v885; // [esp+10h] [ebp-A8h] - int v886; // [esp+10h] [ebp-A8h] - void *v887; // [esp+10h] [ebp-A8h] - int v888; // [esp+10h] [ebp-A8h] - void *v889; // [esp+10h] [ebp-A8h] - int v890; // [esp+10h] [ebp-A8h] - void *v891; // [esp+10h] [ebp-A8h] - int v892; // [esp+10h] [ebp-A8h] - void *v893; // [esp+10h] [ebp-A8h] - int v894; // [esp+10h] [ebp-A8h] - void *v895; // [esp+10h] [ebp-A8h] - int v896; // [esp+10h] [ebp-A8h] - void *v897; // [esp+10h] [ebp-A8h] - int v898; // [esp+10h] [ebp-A8h] - void *v899; // [esp+10h] [ebp-A8h] - int v900; // [esp+10h] [ebp-A8h] - void *v901; // [esp+10h] [ebp-A8h] - int v902; // [esp+10h] [ebp-A8h] - void *v903; // [esp+10h] [ebp-A8h] - int v904; // [esp+10h] [ebp-A8h] - void *v905; // [esp+10h] [ebp-A8h] - int v906; // [esp+10h] [ebp-A8h] - void *v907; // [esp+10h] [ebp-A8h] - int v908; // [esp+10h] [ebp-A8h] - void *v909; // [esp+10h] [ebp-A8h] - int v910; // [esp+10h] [ebp-A8h] - void *v911; // [esp+10h] [ebp-A8h] - int v912; // [esp+10h] [ebp-A8h] - void *v913; // [esp+10h] [ebp-A8h] - int v914; // [esp+10h] [ebp-A8h] - void *v915; // [esp+10h] [ebp-A8h] - int v916; // [esp+10h] [ebp-A8h] - void *v917; // [esp+10h] [ebp-A8h] - int v918; // [esp+10h] [ebp-A8h] - void *v919; // [esp+10h] [ebp-A8h] - int v920; // [esp+10h] [ebp-A8h] - void *v921; // [esp+10h] [ebp-A8h] - int v922; // [esp+10h] [ebp-A8h] - void *v923; // [esp+10h] [ebp-A8h] - int v924; // [esp+10h] [ebp-A8h] - void *v925; // [esp+10h] [ebp-A8h] - int v926; // [esp+10h] [ebp-A8h] - void *v927; // [esp+10h] [ebp-A8h] - int v928; // [esp+10h] [ebp-A8h] - void *v929; // [esp+10h] [ebp-A8h] - int v930; // [esp+10h] [ebp-A8h] - void *v931; // [esp+10h] [ebp-A8h] - int v932; // [esp+10h] [ebp-A8h] - void *v933; // [esp+10h] [ebp-A8h] - int v934; // [esp+10h] [ebp-A8h] - void *v935; // [esp+10h] [ebp-A8h] - int v936; // [esp+10h] [ebp-A8h] - void *v937; // [esp+10h] [ebp-A8h] - int v938; // [esp+10h] [ebp-A8h] - void *v939; // [esp+10h] [ebp-A8h] - int v940; // [esp+10h] [ebp-A8h] - void *v941; // [esp+10h] [ebp-A8h] - int v942; // [esp+10h] [ebp-A8h] - void *v943; // [esp+10h] [ebp-A8h] - int v944; // [esp+10h] [ebp-A8h] - void *v945; // [esp+10h] [ebp-A8h] - int v946; // [esp+10h] [ebp-A8h] - void *v947; // [esp+10h] [ebp-A8h] - int v948; // [esp+10h] [ebp-A8h] - void *v949; // [esp+10h] [ebp-A8h] - int v950; // [esp+10h] [ebp-A8h] - void *v951; // [esp+10h] [ebp-A8h] - int v952; // [esp+10h] [ebp-A8h] - void *v953; // [esp+10h] [ebp-A8h] - int v954; // [esp+10h] [ebp-A8h] - void *v955; // [esp+10h] [ebp-A8h] - int v956; // [esp+10h] [ebp-A8h] - void *v957; // [esp+10h] [ebp-A8h] - int v958; // [esp+10h] [ebp-A8h] - void *v959; // [esp+10h] [ebp-A8h] - int v960; // [esp+10h] [ebp-A8h] - void *v961; // [esp+10h] [ebp-A8h] - int v962; // [esp+10h] [ebp-A8h] - void *v963; // [esp+10h] [ebp-A8h] - int v964; // [esp+10h] [ebp-A8h] - void *v965; // [esp+10h] [ebp-A8h] - int v966; // [esp+10h] [ebp-A8h] - void *v967; // [esp+10h] [ebp-A8h] - int v968; // [esp+10h] [ebp-A8h] - void *v969; // [esp+10h] [ebp-A8h] - int v970; // [esp+10h] [ebp-A8h] - void *v971; // [esp+10h] [ebp-A8h] - int v972; // [esp+10h] [ebp-A8h] - void *v973; // [esp+10h] [ebp-A8h] - int v974; // [esp+10h] [ebp-A8h] - void *v975; // [esp+10h] [ebp-A8h] - int v976; // [esp+10h] [ebp-A8h] - void *v977; // [esp+10h] [ebp-A8h] - int v978; // [esp+10h] [ebp-A8h] - void *v979; // [esp+10h] [ebp-A8h] - int v980; // [esp+10h] [ebp-A8h] - void *v981; // [esp+10h] [ebp-A8h] - int v982; // [esp+10h] [ebp-A8h] - void *v983; // [esp+10h] [ebp-A8h] - int v984; // [esp+10h] [ebp-A8h] - void *v985; // [esp+10h] [ebp-A8h] - int v986; // [esp+10h] [ebp-A8h] - void *v987; // [esp+10h] [ebp-A8h] - int v988; // [esp+10h] [ebp-A8h] - void *v989; // [esp+10h] [ebp-A8h] - int v990; // [esp+10h] [ebp-A8h] - void *v991; // [esp+10h] [ebp-A8h] - int v992; // [esp+10h] [ebp-A8h] - void *v993; // [esp+10h] [ebp-A8h] - int v994; // [esp+10h] [ebp-A8h] - void *v995; // [esp+10h] [ebp-A8h] - int v996; // [esp+10h] [ebp-A8h] - void *v997; // [esp+10h] [ebp-A8h] - int v998; // [esp+10h] [ebp-A8h] - void *v999; // [esp+10h] [ebp-A8h] - int v1000; // [esp+10h] [ebp-A8h] - void *v1001; // [esp+10h] [ebp-A8h] - int v1002; // [esp+10h] [ebp-A8h] - void *v1003; // [esp+10h] [ebp-A8h] - int v1004; // [esp+10h] [ebp-A8h] - void *v1005; // [esp+10h] [ebp-A8h] - int v1006; // [esp+10h] [ebp-A8h] - void *v1007; // [esp+10h] [ebp-A8h] - int v1008; // [esp+10h] [ebp-A8h] - void *v1009; // [esp+10h] [ebp-A8h] - int v1010; // [esp+10h] [ebp-A8h] - void *v1011; // [esp+10h] [ebp-A8h] - int v1012; // [esp+10h] [ebp-A8h] - void *v1013; // [esp+10h] [ebp-A8h] - int v1014; // [esp+10h] [ebp-A8h] - void *v1015; // [esp+10h] [ebp-A8h] - int v1016; // [esp+10h] [ebp-A8h] - void *v1017; // [esp+10h] [ebp-A8h] - int v1018; // [esp+10h] [ebp-A8h] - void *v1019; // [esp+10h] [ebp-A8h] - int v1020; // [esp+10h] [ebp-A8h] - void *v1021; // [esp+10h] [ebp-A8h] - int v1022; // [esp+10h] [ebp-A8h] - void *v1023; // [esp+10h] [ebp-A8h] - int v1024; // [esp+10h] [ebp-A8h] - void *v1025; // [esp+10h] [ebp-A8h] - int v1026; // [esp+10h] [ebp-A8h] - void *v1027; // [esp+10h] [ebp-A8h] - int v1028; // [esp+10h] [ebp-A8h] - void *v1029; // [esp+10h] [ebp-A8h] - int v1030; // [esp+10h] [ebp-A8h] - void *v1031; // [esp+10h] [ebp-A8h] - int v1032; // [esp+10h] [ebp-A8h] - void *v1033; // [esp+10h] [ebp-A8h] - int v1034; // [esp+10h] [ebp-A8h] - void *v1035; // [esp+10h] [ebp-A8h] - int v1036; // [esp+10h] [ebp-A8h] - void *v1037; // [esp+10h] [ebp-A8h] - int v1038; // [esp+10h] [ebp-A8h] - void *v1039; // [esp+10h] [ebp-A8h] - int v1040; // [esp+10h] [ebp-A8h] - void *v1041; // [esp+10h] [ebp-A8h] - int v1042; // [esp+10h] [ebp-A8h] - void *v1043; // [esp+10h] [ebp-A8h] - int v1044; // [esp+10h] [ebp-A8h] - void *v1045; // [esp+10h] [ebp-A8h] - int v1046; // [esp+10h] [ebp-A8h] - void *v1047; // [esp+10h] [ebp-A8h] - int v1048; // [esp+10h] [ebp-A8h] - void *v1049; // [esp+10h] [ebp-A8h] - int v1050; // [esp+10h] [ebp-A8h] - void *v1051; // [esp+10h] [ebp-A8h] - int v1052; // [esp+10h] [ebp-A8h] - void *v1053; // [esp+10h] [ebp-A8h] - int v1054; // [esp+10h] [ebp-A8h] - void *v1055; // [esp+10h] [ebp-A8h] - int v1056; // [esp+10h] [ebp-A8h] - void *v1057; // [esp+10h] [ebp-A8h] - int v1058; // [esp+10h] [ebp-A8h] - void *v1059; // [esp+10h] [ebp-A8h] - int v1060; // [esp+10h] [ebp-A8h] - void *v1061; // [esp+10h] [ebp-A8h] - int v1062; // [esp+10h] [ebp-A8h] - void *v1063; // [esp+10h] [ebp-A8h] - int v1064; // [esp+10h] [ebp-A8h] - void *v1065; // [esp+10h] [ebp-A8h] - int v1066; // [esp+10h] [ebp-A8h] - void *v1067; // [esp+10h] [ebp-A8h] - int v1068; // [esp+10h] [ebp-A8h] - void *v1069; // [esp+10h] [ebp-A8h] - int v1070; // [esp+10h] [ebp-A8h] - void *v1071; // [esp+10h] [ebp-A8h] - int v1072; // [esp+10h] [ebp-A8h] - void *v1073; // [esp+10h] [ebp-A8h] - int v1074; // [esp+10h] [ebp-A8h] - void *v1075; // [esp+10h] [ebp-A8h] - int v1076; // [esp+10h] [ebp-A8h] - void *v1077; // [esp+10h] [ebp-A8h] - int v1078; // [esp+10h] [ebp-A8h] - void *v1079; // [esp+10h] [ebp-A8h] - int v1080; // [esp+10h] [ebp-A8h] - void *v1081; // [esp+10h] [ebp-A8h] - int v1082; // [esp+10h] [ebp-A8h] - void *v1083; // [esp+10h] [ebp-A8h] - int v1084; // [esp+10h] [ebp-A8h] - void *v1085; // [esp+10h] [ebp-A8h] - int v1086; // [esp+10h] [ebp-A8h] - void *v1087; // [esp+10h] [ebp-A8h] - int v1088; // [esp+10h] [ebp-A8h] - void *v1089; // [esp+10h] [ebp-A8h] - int v1090; // [esp+10h] [ebp-A8h] - void *v1091; // [esp+10h] [ebp-A8h] - int v1092; // [esp+10h] [ebp-A8h] - void *v1093; // [esp+10h] [ebp-A8h] - int v1094; // [esp+10h] [ebp-A8h] - void *v1095; // [esp+10h] [ebp-A8h] - int v1096; // [esp+10h] [ebp-A8h] - void *v1097; // [esp+10h] [ebp-A8h] - int v1098; // [esp+10h] [ebp-A8h] - void *v1099; // [esp+10h] [ebp-A8h] - int v1100; // [esp+10h] [ebp-A8h] - void *v1101; // [esp+10h] [ebp-A8h] - int v1102; // [esp+10h] [ebp-A8h] - void *v1103; // [esp+10h] [ebp-A8h] - int v1104; // [esp+10h] [ebp-A8h] - void *v1105; // [esp+10h] [ebp-A8h] - int v1106; // [esp+10h] [ebp-A8h] - void *v1107; // [esp+10h] [ebp-A8h] - int v1108; // [esp+10h] [ebp-A8h] - void *v1109; // [esp+10h] [ebp-A8h] - int v1110; // [esp+10h] [ebp-A8h] - void *v1111; // [esp+10h] [ebp-A8h] - int v1112; // [esp+10h] [ebp-A8h] - void *v1113; // [esp+10h] [ebp-A8h] - int v1114; // [esp+10h] [ebp-A8h] - void *v1115; // [esp+10h] [ebp-A8h] - int v1116; // [esp+10h] [ebp-A8h] - void *v1117; // [esp+10h] [ebp-A8h] - int v1118; // [esp+10h] [ebp-A8h] - void *v1119; // [esp+10h] [ebp-A8h] - int v1120; // [esp+10h] [ebp-A8h] - void *v1121; // [esp+10h] [ebp-A8h] - int v1122; // [esp+10h] [ebp-A8h] - void *v1123; // [esp+10h] [ebp-A8h] - int v1124; // [esp+10h] [ebp-A8h] - void *v1125; // [esp+10h] [ebp-A8h] - int v1126; // [esp+10h] [ebp-A8h] - void *v1127; // [esp+10h] [ebp-A8h] - int v1128; // [esp+10h] [ebp-A8h] - void *v1129; // [esp+10h] [ebp-A8h] - int v1130; // [esp+10h] [ebp-A8h] - void *v1131; // [esp+10h] [ebp-A8h] - int v1132; // [esp+10h] [ebp-A8h] - void *v1133; // [esp+10h] [ebp-A8h] - int v1134; // [esp+10h] [ebp-A8h] - void *v1135; // [esp+10h] [ebp-A8h] - int v1136; // [esp+10h] [ebp-A8h] - void *v1137; // [esp+10h] [ebp-A8h] - int v1138; // [esp+10h] [ebp-A8h] - void *v1139; // [esp+10h] [ebp-A8h] - int v1140; // [esp+10h] [ebp-A8h] - void *v1141; // [esp+10h] [ebp-A8h] - int v1142; // [esp+10h] [ebp-A8h] - void *v1143; // [esp+10h] [ebp-A8h] - int v1144; // [esp+10h] [ebp-A8h] - void *v1145; // [esp+10h] [ebp-A8h] - int v1146; // [esp+10h] [ebp-A8h] - void *v1147; // [esp+10h] [ebp-A8h] - int v1148; // [esp+10h] [ebp-A8h] - void *v1149; // [esp+10h] [ebp-A8h] - int v1150; // [esp+10h] [ebp-A8h] - void *v1151; // [esp+10h] [ebp-A8h] - int v1152; // [esp+10h] [ebp-A8h] - void *v1153; // [esp+10h] [ebp-A8h] - int v1154; // [esp+10h] [ebp-A8h] - void *v1155; // [esp+10h] [ebp-A8h] - int v1156; // [esp+10h] [ebp-A8h] - void *v1157; // [esp+10h] [ebp-A8h] - int v1158; // [esp+10h] [ebp-A8h] - void *v1159; // [esp+10h] [ebp-A8h] - int v1160; // [esp+10h] [ebp-A8h] - void *v1161; // [esp+10h] [ebp-A8h] - int v1162; // [esp+10h] [ebp-A8h] - void *v1163; // [esp+10h] [ebp-A8h] - int v1164; // [esp+10h] [ebp-A8h] - void *v1165; // [esp+10h] [ebp-A8h] - int v1166; // [esp+10h] [ebp-A8h] - void *v1167; // [esp+10h] [ebp-A8h] - int v1168; // [esp+10h] [ebp-A8h] - void *v1169; // [esp+10h] [ebp-A8h] - int v1170; // [esp+10h] [ebp-A8h] - void *v1171; // [esp+10h] [ebp-A8h] - int v1172; // [esp+10h] [ebp-A8h] - void *v1173; // [esp+10h] [ebp-A8h] - int v1174; // [esp+10h] [ebp-A8h] - void *v1175; // [esp+10h] [ebp-A8h] - int v1176; // [esp+10h] [ebp-A8h] - void *v1177; // [esp+10h] [ebp-A8h] - int v1178; // [esp+10h] [ebp-A8h] - void *v1179; // [esp+10h] [ebp-A8h] - int v1180; // [esp+10h] [ebp-A8h] - void *v1181; // [esp+10h] [ebp-A8h] - int v1182; // [esp+10h] [ebp-A8h] - void *v1183; // [esp+10h] [ebp-A8h] - int v1184; // [esp+10h] [ebp-A8h] - void *v1185; // [esp+10h] [ebp-A8h] - int v1186; // [esp+10h] [ebp-A8h] - void *v1187; // [esp+10h] [ebp-A8h] - int v1188; // [esp+10h] [ebp-A8h] - void *v1189; // [esp+10h] [ebp-A8h] - int v1190; // [esp+10h] [ebp-A8h] - void *v1191; // [esp+10h] [ebp-A8h] - int v1192; // [esp+10h] [ebp-A8h] - void *v1193; // [esp+10h] [ebp-A8h] - int v1194; // [esp+10h] [ebp-A8h] - void *v1195; // [esp+10h] [ebp-A8h] - int v1196; // [esp+10h] [ebp-A8h] - void *v1197; // [esp+10h] [ebp-A8h] - int v1198; // [esp+10h] [ebp-A8h] - void *v1199; // [esp+10h] [ebp-A8h] - int v1200; // [esp+10h] [ebp-A8h] - void *v1201; // [esp+10h] [ebp-A8h] - int v1202; // [esp+10h] [ebp-A8h] - void *v1203; // [esp+10h] [ebp-A8h] - int v1204; // [esp+10h] [ebp-A8h] - void *v1205; // [esp+10h] [ebp-A8h] - int v1206; // [esp+10h] [ebp-A8h] - char *v1207; // [esp+14h] [ebp-A4h] - char *v1208; // [esp+14h] [ebp-A4h] - char *v1209; // [esp+14h] [ebp-A4h] - char *v1210; // [esp+14h] [ebp-A4h] - char *v1211; // [esp+14h] [ebp-A4h] - char *v1212; // [esp+14h] [ebp-A4h] - char *v1213; // [esp+14h] [ebp-A4h] - char *v1214; // [esp+14h] [ebp-A4h] - char *v1215; // [esp+14h] [ebp-A4h] - char *v1216; // [esp+14h] [ebp-A4h] - char *v1217; // [esp+14h] [ebp-A4h] - char *v1218; // [esp+14h] [ebp-A4h] - char *v1219; // [esp+14h] [ebp-A4h] - char *v1220; // [esp+14h] [ebp-A4h] - char *v1221; // [esp+14h] [ebp-A4h] - char *v1222; // [esp+14h] [ebp-A4h] - char *v1223; // [esp+14h] [ebp-A4h] - char *v1224; // [esp+14h] [ebp-A4h] - char *v1225; // [esp+14h] [ebp-A4h] - char *v1226; // [esp+14h] [ebp-A4h] - char *v1227; // [esp+14h] [ebp-A4h] - char *v1228; // [esp+14h] [ebp-A4h] - char *v1229; // [esp+14h] [ebp-A4h] - char *v1230; // [esp+14h] [ebp-A4h] - char *v1231; // [esp+14h] [ebp-A4h] - char *v1232; // [esp+14h] [ebp-A4h] - char *v1233; // [esp+14h] [ebp-A4h] - char *v1234; // [esp+14h] [ebp-A4h] - char *v1235; // [esp+14h] [ebp-A4h] - char *v1236; // [esp+14h] [ebp-A4h] - char *v1237; // [esp+14h] [ebp-A4h] - char *v1238; // [esp+14h] [ebp-A4h] - char *v1239; // [esp+14h] [ebp-A4h] - char *v1240; // [esp+14h] [ebp-A4h] - char *v1241; // [esp+14h] [ebp-A4h] - char *v1242; // [esp+14h] [ebp-A4h] - char *v1243; // [esp+14h] [ebp-A4h] - char *v1244; // [esp+14h] [ebp-A4h] - char *v1245; // [esp+14h] [ebp-A4h] - char *v1246; // [esp+14h] [ebp-A4h] - char *v1247; // [esp+14h] [ebp-A4h] - char *v1248; // [esp+14h] [ebp-A4h] - char *v1249; // [esp+14h] [ebp-A4h] - char *v1250; // [esp+14h] [ebp-A4h] - char *v1251; // [esp+14h] [ebp-A4h] - char *v1252; // [esp+14h] [ebp-A4h] - char *v1253; // [esp+14h] [ebp-A4h] - char *v1254; // [esp+14h] [ebp-A4h] - char *v1255; // [esp+14h] [ebp-A4h] - char *v1256; // [esp+14h] [ebp-A4h] - char *v1257; // [esp+14h] [ebp-A4h] - char *v1258; // [esp+14h] [ebp-A4h] - char *v1259; // [esp+14h] [ebp-A4h] - char *v1260; // [esp+14h] [ebp-A4h] - char *v1261; // [esp+14h] [ebp-A4h] - char *v1262; // [esp+14h] [ebp-A4h] - char *v1263; // [esp+14h] [ebp-A4h] - char *v1264; // [esp+14h] [ebp-A4h] - char *v1265; // [esp+14h] [ebp-A4h] - char *v1266; // [esp+14h] [ebp-A4h] - char *v1267; // [esp+14h] [ebp-A4h] - char *v1268; // [esp+14h] [ebp-A4h] - char *v1269; // [esp+14h] [ebp-A4h] - char *v1270; // [esp+14h] [ebp-A4h] - char *v1271; // [esp+14h] [ebp-A4h] - char *v1272; // [esp+14h] [ebp-A4h] - char *v1273; // [esp+14h] [ebp-A4h] - char *v1274; // [esp+14h] [ebp-A4h] - char *v1275; // [esp+14h] [ebp-A4h] - char *v1276; // [esp+14h] [ebp-A4h] - char *v1277; // [esp+14h] [ebp-A4h] - char *v1278; // [esp+14h] [ebp-A4h] - char *v1279; // [esp+14h] [ebp-A4h] - char *v1280; // [esp+14h] [ebp-A4h] - char *v1281; // [esp+14h] [ebp-A4h] - char *v1282; // [esp+14h] [ebp-A4h] - char *v1283; // [esp+14h] [ebp-A4h] - char *v1284; // [esp+14h] [ebp-A4h] - char *v1285; // [esp+14h] [ebp-A4h] - char *v1286; // [esp+14h] [ebp-A4h] - char *v1287; // [esp+14h] [ebp-A4h] - char *v1288; // [esp+14h] [ebp-A4h] - char *v1289; // [esp+14h] [ebp-A4h] - char *v1290; // [esp+14h] [ebp-A4h] - char *v1291; // [esp+14h] [ebp-A4h] - char *v1292; // [esp+14h] [ebp-A4h] - char *v1293; // [esp+14h] [ebp-A4h] - char *v1294; // [esp+14h] [ebp-A4h] - char *v1295; // [esp+14h] [ebp-A4h] - char *v1296; // [esp+14h] [ebp-A4h] - char *v1297; // [esp+14h] [ebp-A4h] - char *v1298; // [esp+14h] [ebp-A4h] - char *v1299; // [esp+14h] [ebp-A4h] - char *v1300; // [esp+14h] [ebp-A4h] - char *v1301; // [esp+14h] [ebp-A4h] - char *v1302; // [esp+14h] [ebp-A4h] - char *v1303; // [esp+14h] [ebp-A4h] - char *v1304; // [esp+14h] [ebp-A4h] - char *v1305; // [esp+14h] [ebp-A4h] - char *v1306; // [esp+14h] [ebp-A4h] - char *v1307; // [esp+14h] [ebp-A4h] - char *v1308; // [esp+14h] [ebp-A4h] - char *v1309; // [esp+14h] [ebp-A4h] - char *v1310; // [esp+14h] [ebp-A4h] - char *v1311; // [esp+14h] [ebp-A4h] - char *v1312; // [esp+14h] [ebp-A4h] - char *v1313; // [esp+14h] [ebp-A4h] - char *v1314; // [esp+14h] [ebp-A4h] - char *v1315; // [esp+14h] [ebp-A4h] - char *v1316; // [esp+14h] [ebp-A4h] - char *v1317; // [esp+14h] [ebp-A4h] - char *v1318; // [esp+14h] [ebp-A4h] - char *v1319; // [esp+14h] [ebp-A4h] - char *v1320; // [esp+14h] [ebp-A4h] - char *v1321; // [esp+14h] [ebp-A4h] - char *v1322; // [esp+14h] [ebp-A4h] - char *v1323; // [esp+14h] [ebp-A4h] - char *v1324; // [esp+14h] [ebp-A4h] - char *v1325; // [esp+14h] [ebp-A4h] - char *v1326; // [esp+14h] [ebp-A4h] - char *v1327; // [esp+14h] [ebp-A4h] - char *v1328; // [esp+14h] [ebp-A4h] - char *v1329; // [esp+14h] [ebp-A4h] - char *v1330; // [esp+14h] [ebp-A4h] - char *v1331; // [esp+14h] [ebp-A4h] - char *v1332; // [esp+14h] [ebp-A4h] - char *v1333; // [esp+14h] [ebp-A4h] - char *v1334; // [esp+14h] [ebp-A4h] - char *v1335; // [esp+14h] [ebp-A4h] - char *v1336; // [esp+14h] [ebp-A4h] - char *v1337; // [esp+14h] [ebp-A4h] - char *v1338; // [esp+14h] [ebp-A4h] - char *v1339; // [esp+14h] [ebp-A4h] - char *v1340; // [esp+14h] [ebp-A4h] - char *v1341; // [esp+14h] [ebp-A4h] - char *v1342; // [esp+14h] [ebp-A4h] - char *v1343; // [esp+14h] [ebp-A4h] - char *v1344; // [esp+14h] [ebp-A4h] - char *v1345; // [esp+14h] [ebp-A4h] - char *v1346; // [esp+14h] [ebp-A4h] - char *v1347; // [esp+14h] [ebp-A4h] - char *v1348; // [esp+14h] [ebp-A4h] - char *v1349; // [esp+14h] [ebp-A4h] - char *v1350; // [esp+14h] [ebp-A4h] - char *v1351; // [esp+14h] [ebp-A4h] - char *v1352; // [esp+14h] [ebp-A4h] - char *v1353; // [esp+14h] [ebp-A4h] - char *v1354; // [esp+14h] [ebp-A4h] - char *v1355; // [esp+14h] [ebp-A4h] - char *v1356; // [esp+14h] [ebp-A4h] - char *v1357; // [esp+14h] [ebp-A4h] - char *v1358; // [esp+14h] [ebp-A4h] - char *v1359; // [esp+14h] [ebp-A4h] - char *v1360; // [esp+14h] [ebp-A4h] - char *v1361; // [esp+14h] [ebp-A4h] - char *v1362; // [esp+14h] [ebp-A4h] - char *v1363; // [esp+14h] [ebp-A4h] - char *v1364; // [esp+14h] [ebp-A4h] - char *v1365; // [esp+14h] [ebp-A4h] - char *v1366; // [esp+14h] [ebp-A4h] - char *v1367; // [esp+14h] [ebp-A4h] - char *v1368; // [esp+14h] [ebp-A4h] - char *v1369; // [esp+14h] [ebp-A4h] - char *v1370; // [esp+14h] [ebp-A4h] - char *v1371; // [esp+14h] [ebp-A4h] - char *v1372; // [esp+14h] [ebp-A4h] - char *v1373; // [esp+14h] [ebp-A4h] - char *v1374; // [esp+14h] [ebp-A4h] - char *v1375; // [esp+14h] [ebp-A4h] - char *v1376; // [esp+14h] [ebp-A4h] - char *v1377; // [esp+14h] [ebp-A4h] - char *v1378; // [esp+14h] [ebp-A4h] - char *v1379; // [esp+14h] [ebp-A4h] - char *v1380; // [esp+14h] [ebp-A4h] - char *v1381; // [esp+14h] [ebp-A4h] - char *v1382; // [esp+14h] [ebp-A4h] - char *v1383; // [esp+14h] [ebp-A4h] - char *v1384; // [esp+14h] [ebp-A4h] - char *v1385; // [esp+14h] [ebp-A4h] - char *v1386; // [esp+14h] [ebp-A4h] - char *v1387; // [esp+14h] [ebp-A4h] - char *v1388; // [esp+14h] [ebp-A4h] - char *v1389; // [esp+14h] [ebp-A4h] - char *v1390; // [esp+14h] [ebp-A4h] - char *v1391; // [esp+14h] [ebp-A4h] - char *v1392; // [esp+14h] [ebp-A4h] - char *v1393; // [esp+14h] [ebp-A4h] - char *v1394; // [esp+14h] [ebp-A4h] - char *v1395; // [esp+14h] [ebp-A4h] - char *v1396; // [esp+14h] [ebp-A4h] - char *v1397; // [esp+14h] [ebp-A4h] - char *v1398; // [esp+14h] [ebp-A4h] - char *v1399; // [esp+14h] [ebp-A4h] - char *lpuexcpta; // [esp+18h] [ebp-A0h] - int v1402; // [esp+54h] [ebp-64h] BYREF - volatile signed __int32 *v1403; // [esp+58h] [ebp-60h] BYREF - int v1404; // [esp+5Ch] [ebp-5Ch] BYREF - volatile signed __int32 *v1405; // [esp+60h] [ebp-58h] BYREF - int v1406; // [esp+64h] [ebp-54h] BYREF - volatile signed __int32 *v1407; // [esp+68h] [ebp-50h] BYREF - int v1408; // [esp+6Ch] [ebp-4Ch] BYREF - volatile signed __int32 *v1409; // [esp+70h] [ebp-48h] BYREF - int v1410; // [esp+74h] [ebp-44h] BYREF - volatile signed __int32 *v1411; // [esp+78h] [ebp-40h] BYREF - int v1412; // [esp+7Ch] [ebp-3Ch] BYREF - volatile signed __int32 *v1413; // [esp+80h] [ebp-38h] BYREF - int v1414; // [esp+84h] [ebp-34h] BYREF - volatile signed __int32 *v1415; // [esp+88h] [ebp-30h] BYREF - int v1416; // [esp+8Ch] [ebp-2Ch] BYREF - volatile signed __int32 *v1417; // [esp+90h] [ebp-28h] BYREF - int v1418; // [esp+94h] [ebp-24h] - _DWORD *v1419; // [esp+98h] [ebp-20h] BYREF - volatile signed __int32 *v1420; // [esp+9Ch] [ebp-1Ch] BYREF - int v1421; // [esp+A0h] [ebp-18h] - - // int a1 - if ( !*(_BYTE *)(a1 + 24) ) - { - // TransitTable::Init - 0 - *(_BYTE *)(a1 + 24) = 1; - // =======================1================ - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v2 = std::map>>::operator[]((_DWORD *)a1, v1); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v2, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 1; - v3 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1207 = std::map>::operator[](v3, &v1419); // "$NAME" - std::vector::_M_move_assign((void ***)v1207, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - - v1416 = 0; // std::vector> - v1417 = 0; - v1418 = 0; - v4 = operator new(4u); - *v4 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v4); - std::vector>::push_back((void **)&v1416, &v1412); - v623 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v623); // off_519B2C - zcc::shared_ptr::shared_ptr(&v1414, (int)v623); - v624 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0' - std::string::_M_assign(v624 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v5 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v5 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1207, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - - // TransitTable::Init - 5 - v1416 = 0; // std::vector v1416 - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); // ";" ";\000:\000}\000$\000+" - v1414 = 1; - // v6 = this->offset_0[1] - v6 = std::map>>::operator[]((_DWORD *)a1, &v1414); - // v1208 = v6[";"] - v1208 = std::map>::operator[](v6, &v1419); // ";" - // v6[";"] = std::vector - std::vector::_M_move_assign((void ***)v1208, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - // std::vector> v1416 - v1417 = 0; - v1418 = 0; - - v625 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v625); // off_519B58 - zcc::shared_ptr::shared_ptr(&v1412, (int)v625); - v626 = v1412; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); // ";" ";\000:\000}\000$\000+" - std::string::_M_assign(v626 + 4, (int)&v1419); - // v1412->offset_4 = ";" - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - - v627 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v627);// off_519B2C - zcc::shared_ptr::shared_ptr(&v1414, (int)v627); - v628 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0' - std::string::_M_assign(v628 + 36, (int)&v1419); // v1414->offset_36 - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - // v1414->offset_4 = "ATTR" - v7 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - // v1414->offset_28 = 0 - *(_DWORD *)(v7 + 32) = 2; - // v1414->offset_32 = 2 - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1208, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - - // TransitTable::Init - 10 - v1416 = 0; // std::vector - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); // ":" - v1414 = 1; - v8 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1209 = std::map>::operator[](v8, &v1419); // ":" - std::vector::_M_move_assign((void ***)v1209, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - - v1416 = 0; // std::vector> - v1417 = 0; - v1418 = 0; - v629 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v629);// off_519B58 - zcc::shared_ptr::shared_ptr(&v1414, (int)v629); - v630 = v1414; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); // ":" - std::string::_M_assign(v630 + 4, (int)&v1419); // ":" - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - - v9 = operator new(8u); - *v9 = &off_519A44; - v9[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v9); - v1419[1] = 30; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1209, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - - // TransitTable::Init - 15 - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); // "}" - v1414 = 1; - v10 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1210 = std::map>::operator[](v10, &v1419);// "}" - std::vector::_M_move_assign((void ***)v1210, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - - v1416 = 0; - v1417 = 0; - v1418 = 0; - v11 = operator new(4u); - *v11 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v11); - std::vector>::push_back((void **)&v1416, &v1412); - - v631 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v631);// off_519B2C - zcc::shared_ptr::shared_ptr(&v1414, (int)v631); - v632 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0' - std::string::_M_assign(v632 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v12 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v12 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - - std::vector::push_back((int)v1210, &v1416); - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - - // TransitTable::Init - 20 - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); // "$" - v1414 = 1; - v13 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1211 = std::map>::operator[](v13, &v1419); // "$" - std::vector::_M_move_assign((void ***)v1211, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - - v1416 = 0; - v1417 = 0; - v1418 = 0; - v14 = operator new(4u); - *v14 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v14); - std::vector>::push_back((void **)&v1416, &v1412); - - v633 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v633); // off_519B2C - zcc::shared_ptr::shared_ptr(&v1414, (int)v633); - v634 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0' - std::string::_M_assign(v634 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v15 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v15 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1211, &v1416); - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - - // TransitTable::Init - 25 - // =======================2================ - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 2; - v17 = std::map>>::operator[]((_DWORD *)a1, v16); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v17, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 2; - v18 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1212 = std::map>::operator[](v18, &v1419); - std::vector::_M_move_assign((void ***)v1212, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - - v1416 = 0; - v1417 = 0; - v1418 = 0; - v635 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v635); // off_519B58 - zcc::shared_ptr::shared_ptr(&v1414, (int)v635); - v636 = v1414; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v636 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - - v19 = operator new(8u); - *v19 = &off_519A44; - v19[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v19); - v1419[1] = 27; - std::vector>::push_back((void **)&v1416, &v1419); - - std::vector::push_back((int)v1212, &v1416); - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - - // TransitTable::Init - 30 - v1416 = 0; - v1417 = 0; - v1418 = 0; - // ";\000:\000}\000$\000+" - // 01 23 45 67 8 - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); // "+" - v1414 = 2; - v20 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1213 = std::map>::operator[](v20, &v1419); - std::vector::_M_move_assign((void ***)v1213, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - - v1416 = 0; - v1417 = 0; - v1418 = 0; - v637 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v637);// off_519B58 - zcc::shared_ptr::shared_ptr(&v1410, (int)v637); - v638 = v1410; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); // "+" - std::string::_M_assign(v638 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - - v639 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v639);// off_519B58 - zcc::shared_ptr::shared_ptr(&v1412, (int)v639); - v640 = v1412; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v640 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - - v641 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v641); // off_519B2C - zcc::shared_ptr::shared_ptr(&v1414, (int)v641); - v642 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0' - std::string::_M_assign(v642 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v21 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v21 + 32) = 2; - - std::vector>::push_back((void **)&v1416, &v1414); - - std::vector::push_back((int)v1213, &v1416); - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - - // TransitTable::Init - 35 - v1416 = 0; - v1417 = 0; - v1418 = 0; - // {'$','I','D','\0'} - // 0 1 2 3 - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); // "$" - v1414 = 2; - v22 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1214 = std::map>::operator[](v22, &v1419); - std::vector::_M_move_assign((void ***)v1214, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - - v1416 = 0; - v1417 = 0; - v1418 = 0; - v643 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v643);// off_519B58 - zcc::shared_ptr::shared_ptr(&v1412, (int)v643); - v644 = v1412; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); // "$" - std::string::_M_assign(v644 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - - v645 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v645); // off_519B2C - zcc::shared_ptr::shared_ptr(&v1414, (int)v645); - v646 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0' - std::string::_M_assign(v646 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v23 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v23 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1214, &v1416); - - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - - // TransitTable::Init - 40 - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 2; - v24 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1215 = std::map>::operator[](v24, &v1419); - std::vector::_M_move_assign((void ***)v1215, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v647 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v647);// off_519B58 - zcc::shared_ptr::shared_ptr(&v1412, (int)v647); - v648 = v1412; - std::string::basic_string((void **)&v1419, "["); - std::string::_M_assign(v648 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v649 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v649);// off_519B58 - zcc::shared_ptr::shared_ptr(&v1414, (int)v649); - v650 = v1414; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v650 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v25 = operator new(8u); - *v25 = &off_519A44; - v25[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v25); - v1419[1] = 28; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1215, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - // TransitTable::Init - 45 - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 2; - v26 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1216 = std::map>::operator[](v26, &v1419); - std::vector::_M_move_assign((void ***)v1216, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v651 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v651);// off_519B58 - zcc::shared_ptr::shared_ptr(&v1414, (int)v651); - v652 = v1414; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - std::string::_M_assign(v652 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v27 = operator new(8u); - *v27 = &off_519A44; - v27[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v27); - v1419[1] = 5; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1216, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - // TransitTable::Init - 50 - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 2; - v28 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1217 = std::map>::operator[](v28, &v1419); - std::vector::_M_move_assign((void ***)v1217, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v653 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v653); - zcc::shared_ptr::shared_ptr(&v1410, (int)v653); - v654 = v1410; - std::string::basic_string((void **)&v1419, ">"); - std::string::_M_assign(v654 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v655 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v655); - zcc::shared_ptr::shared_ptr(&v1412, (int)v655); - v656 = v1412; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v656 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v657 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v657); // off_519B2C - zcc::shared_ptr::shared_ptr(&v1414, (int)v657); - v658 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v658 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v29 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v29 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1217, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - - // TransitTable::Init - 55 - // =======================================3 - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 3; - v31 = std::map>>::operator[]((_DWORD *)a1, v30); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v31, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 3; - v32 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1218 = std::map>::operator[](v32, &v1419); - std::vector::_M_move_assign((void ***)v1218, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v33 = operator new(8u); - *v33 = &off_519A44; - v33[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v33); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v659 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v659); - zcc::shared_ptr::shared_ptr(&v1414, (int)v659); - v660 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v660 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v34 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v34 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v35 = operator new(8u); - *v35 = &off_519A44; - v35[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v35); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1218, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@charset"); - v1414 = 3; - v36 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1219 = std::map>::operator[](v36, &v1419); - std::vector::_M_move_assign((void ***)v1219, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v37 = operator new(8u); - *v37 = &off_519A44; - v37[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v37); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v661 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v661); - zcc::shared_ptr::shared_ptr(&v1414, (int)v661); - v662 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v662 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v38 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v38 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v39 = operator new(8u); - *v39 = &off_519A44; - v39[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v39); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1219, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 3; - v40 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1220 = std::map>::operator[](v40, &v1419); - std::vector::_M_move_assign((void ***)v1220, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v41 = operator new(4u); - *v41 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v41); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1220, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 3; - v42 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1221 = std::map>::operator[](v42, &v1419); - std::vector::_M_move_assign((void ***)v1221, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v43 = operator new(8u); - *v43 = &off_519A44; - v43[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v43); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v663 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v663); - zcc::shared_ptr::shared_ptr(&v1414, (int)v663); - v664 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v664 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v44 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v44 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v45 = operator new(8u); - *v45 = &off_519A44; - v45[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v45); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1221, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@media"); - v1414 = 3; - v46 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1222 = std::map>::operator[](v46, &v1419); - std::vector::_M_move_assign((void ***)v1222, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v47 = operator new(8u); - *v47 = &off_519A44; - v47[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v47); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v665 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v665); - zcc::shared_ptr::shared_ptr(&v1414, (int)v665); - v666 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v666 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v48 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v48 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v49 = operator new(8u); - *v49 = &off_519A44; - v49[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v49); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1222, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@keyframes"); - v1414 = 3; - v50 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1223 = std::map>::operator[](v50, &v1419); - std::vector::_M_move_assign((void ***)v1223, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v51 = operator new(8u); - *v51 = &off_519A44; - v51[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v51); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v667 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v667); - zcc::shared_ptr::shared_ptr(&v1414, (int)v667); - v668 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v668 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v52 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v52 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v53 = operator new(8u); - *v53 = &off_519A44; - v53[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v53); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1223, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@supports"); - v1414 = 3; - v54 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1224 = std::map>::operator[](v54, &v1419); - std::vector::_M_move_assign((void ***)v1224, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v55 = operator new(8u); - *v55 = &off_519A44; - v55[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v55); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v669 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v669); - zcc::shared_ptr::shared_ptr(&v1414, (int)v669); - v670 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v670 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v56 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v56 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v57 = operator new(8u); - *v57 = &off_519A44; - v57[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v57); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1224, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@-webkit-keyframes"); - v1414 = 3; - v58 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1225 = std::map>::operator[](v58, &v1419); - std::vector::_M_move_assign((void ***)v1225, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v59 = operator new(8u); - *v59 = &off_519A44; - v59[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v59); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v671 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v671); - zcc::shared_ptr::shared_ptr(&v1414, (int)v671); - v672 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v672 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v60 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v60 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v61 = operator new(8u); - *v61 = &off_519A44; - v61[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v61); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1225, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@import"); - v1414 = 3; - v62 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1226 = std::map>::operator[](v62, &v1419); - std::vector::_M_move_assign((void ***)v1226, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v63 = operator new(8u); - *v63 = &off_519A44; - v63[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v63); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v673 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v673); - zcc::shared_ptr::shared_ptr(&v1414, (int)v673); - v674 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v674 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v64 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v64 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v65 = operator new(8u); - *v65 = &off_519A44; - v65[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v65); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1226, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 3; - v66 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1227 = std::map>::operator[](v66, &v1419); - std::vector::_M_move_assign((void ***)v1227, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v67 = operator new(8u); - *v67 = &off_519A44; - v67[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v67); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v675 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v675); - zcc::shared_ptr::shared_ptr(&v1414, (int)v675); - v676 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v676 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v68 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v68 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v69 = operator new(8u); - *v69 = &off_519A44; - v69[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v69); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1227, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 3; - v70 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1228 = std::map>::operator[](v70, &v1419); - std::vector::_M_move_assign((void ***)v1228, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v71 = operator new(8u); - *v71 = &off_519A44; - v71[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v71); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v677 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v677); - zcc::shared_ptr::shared_ptr(&v1414, (int)v677); - v678 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v678 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v72 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v72 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v73 = operator new(8u); - *v73 = &off_519A44; - v73[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v73); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1228, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - v1414 = 3; - v74 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1229 = std::map>::operator[](v74, &v1419); - std::vector::_M_move_assign((void ***)v1229, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v75 = operator new(4u); - *v75 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v75); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1229, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 3; - v76 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1230 = std::map>::operator[](v76, &v1419); - std::vector::_M_move_assign((void ***)v1230, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v77 = operator new(8u); - *v77 = &off_519A44; - v77[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v77); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v679 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v679); - zcc::shared_ptr::shared_ptr(&v1414, (int)v679); - v680 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v680 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v78 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v78 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v79 = operator new(8u); - *v79 = &off_519A44; - v79[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v79); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1230, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 3; - v80 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1231 = std::map>::operator[](v80, &v1419); - std::vector::_M_move_assign((void ***)v1231, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v81 = operator new(8u); - *v81 = &off_519A44; - v81[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v81); - *(_DWORD *)(v1412 + 4) = 14; - std::vector>::push_back((void **)&v1416, &v1412); - v681 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v681); - zcc::shared_ptr::shared_ptr(&v1414, (int)v681); - v682 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v682 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v82 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v82 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v83 = operator new(8u); - *v83 = &off_519A44; - v83[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v83); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1231, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - - // =======================================4 - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 4; - v85 = std::map>>::operator[]((_DWORD *)a1, v84); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v85, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 4; - v86 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1232 = std::map>::operator[](v86, &v1419); - std::vector::_M_move_assign((void ***)v1232, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v683 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v683); - zcc::shared_ptr::shared_ptr(&v1410, (int)v683); - v684 = v1410; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v684 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v685 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v685); - zcc::shared_ptr::shared_ptr(&v1412, (int)v685); - v686 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v686 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v687 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v687); - zcc::shared_ptr::shared_ptr(&v1414, (int)v687); - v688 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v688 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v87 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v87 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1232, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$VALUE"); - v1414 = 4; - v88 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1233 = std::map>::operator[](v88, &v1419); - std::vector::_M_move_assign((void ***)v1233, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v689 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v689); - zcc::shared_ptr::shared_ptr(&v1410, (int)v689); - v690 = v1410; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v690 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v691 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v691); - zcc::shared_ptr::shared_ptr(&v1412, (int)v691); - v692 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v692 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v693 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v693); - zcc::shared_ptr::shared_ptr(&v1414, (int)v693); - v694 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v694 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v89 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v89 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1233, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - - // =======================================5 - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 5; - v91 = std::map>>::operator[]((_DWORD *)a1, v90); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v91, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "nth-last-child"); - v1414 = 5; - v92 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1234 = std::map>::operator[](v92, &v1419); - std::vector::_M_move_assign((void ***)v1234, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v695 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v695); - zcc::shared_ptr::shared_ptr(&v1406, (int)v695); - v696 = v1406; - std::string::basic_string((void **)&v1419, "nth-last-child"); - std::string::_M_assign(v696 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v697 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v697); - zcc::shared_ptr::shared_ptr(&v1408, (int)v697); - v698 = v1408; - std::string::basic_string((void **)&v1419, "("); - std::string::_M_assign(v698 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v93 = operator new(8u); - *v93 = &off_519A44; - v93[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v93); - *(_DWORD *)(v1410 + 4) = 29; - std::vector>::push_back((void **)&v1416, &v1410); - v699 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v699); - zcc::shared_ptr::shared_ptr(&v1412, (int)v699); - v700 = v1412; - std::string::basic_string((void **)&v1419, ")"); - std::string::_M_assign(v700 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v701 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v701); - zcc::shared_ptr::shared_ptr(&v1414, (int)v701); - v702 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v702 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v94 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v94 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1234, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 5; - v95 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1235 = std::map>::operator[](v95, &v1419); - std::vector::_M_move_assign((void ***)v1235, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v703 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v703); - zcc::shared_ptr::shared_ptr(&v1414, (int)v703); - v704 = v1414; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v704 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v96 = operator new(8u); - *v96 = &off_519A44; - v96[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v96); - v1419[1] = 18; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1235, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "nth-last-of-type"); - v1414 = 5; - v97 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1236 = std::map>::operator[](v97, &v1419); - std::vector::_M_move_assign((void ***)v1236, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v705 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v705); - zcc::shared_ptr::shared_ptr(&v1406, (int)v705); - v706 = v1406; - std::string::basic_string((void **)&v1419, "nth-last-of-type"); - std::string::_M_assign(v706 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v707 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v707); - zcc::shared_ptr::shared_ptr(&v1408, (int)v707); - v708 = v1408; - std::string::basic_string((void **)&v1419, "("); - std::string::_M_assign(v708 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v98 = operator new(8u); - *v98 = &off_519A44; - v98[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v98); - *(_DWORD *)(v1410 + 4) = 29; - std::vector>::push_back((void **)&v1416, &v1410); - v709 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v709); - zcc::shared_ptr::shared_ptr(&v1412, (int)v709); - v710 = v1412; - std::string::basic_string((void **)&v1419, ")"); - std::string::_M_assign(v710 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v711 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v711); - zcc::shared_ptr::shared_ptr(&v1414, (int)v711); - v712 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v712 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v99 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v99 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1236, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "nth-child"); - v1414 = 5; - v100 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1237 = std::map>::operator[](v100, &v1419); - std::vector::_M_move_assign((void ***)v1237, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v713 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v713); - zcc::shared_ptr::shared_ptr(&v1406, (int)v713); - v714 = v1406; - std::string::basic_string((void **)&v1419, "nth-child"); - std::string::_M_assign(v714 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v715 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v715); - zcc::shared_ptr::shared_ptr(&v1408, (int)v715); - v716 = v1408; - std::string::basic_string((void **)&v1419, "("); - std::string::_M_assign(v716 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v101 = operator new(8u); - *v101 = &off_519A44; - v101[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v101); - *(_DWORD *)(v1410 + 4) = 29; - std::vector>::push_back((void **)&v1416, &v1410); - v717 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v717); - zcc::shared_ptr::shared_ptr(&v1412, (int)v717); - v718 = v1412; - std::string::basic_string((void **)&v1419, ")"); - std::string::_M_assign(v718 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v719 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v719); - zcc::shared_ptr::shared_ptr(&v1414, (int)v719); - v720 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v720 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v102 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v102 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1237, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "nth-of-type"); - v1414 = 5; - v103 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1238 = std::map>::operator[](v103, &v1419); - std::vector::_M_move_assign((void ***)v1238, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v721 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v721); - zcc::shared_ptr::shared_ptr(&v1406, (int)v721); - v722 = v1406; - std::string::basic_string((void **)&v1419, "nth-of-type"); - std::string::_M_assign(v722 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v723 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v723); - zcc::shared_ptr::shared_ptr(&v1408, (int)v723); - v724 = v1408; - std::string::basic_string((void **)&v1419, "("); - std::string::_M_assign(v724 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v104 = operator new(8u); - *v104 = &off_519A44; - v104[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v104); - *(_DWORD *)(v1410 + 4) = 29; - std::vector>::push_back((void **)&v1416, &v1410); - v725 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v725); - zcc::shared_ptr::shared_ptr(&v1412, (int)v725); - v726 = v1412; - std::string::basic_string((void **)&v1419, ")"); - std::string::_M_assign(v726 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v727 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v727); - zcc::shared_ptr::shared_ptr(&v1414, (int)v727); - v728 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v728 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v105 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v105 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1238, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 5; - v106 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1239 = std::map>::operator[](v106, &v1419); - std::vector::_M_move_assign((void ***)v1239, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v729 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v729); - zcc::shared_ptr::shared_ptr(&v1410, (int)v729); - v730 = v1410; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - std::string::_M_assign(v730 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v731 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v731); - zcc::shared_ptr::shared_ptr(&v1412, (int)v731); - v732 = v1412; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v732 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v733 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v733); - zcc::shared_ptr::shared_ptr(&v1414, (int)v733); - v734 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v734 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v107 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v107 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1239, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - - // =======================================6 - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 6; - v109 = std::map>>::operator[]((_DWORD *)a1, v108); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v109, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 6; - v110 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1240 = std::map>::operator[](v110, &v1419); - std::vector::_M_move_assign((void ***)v1240, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v111 = operator new(8u); - *v111 = &off_519A44; - v111[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v111); - *(_DWORD *)(v1412 + 4) = 10; - std::vector>::push_back((void **)&v1416, &v1412); - v735 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v735); - zcc::shared_ptr::shared_ptr(&v1414, (int)v735); - v736 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v736 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTRS"); - v112 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v112 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v113 = operator new(8u); - *v113 = &off_519A44; - v113[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v113); - v1419[1] = 6; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1240, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - v1414 = 6; - v114 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1241 = std::map>::operator[](v114, &v1419); - std::vector::_M_move_assign((void ***)v1241, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v115 = operator new(4u); - *v115 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v115); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1241, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 6; - v116 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1242 = std::map>::operator[](v116, &v1419); - std::vector::_M_move_assign((void ***)v1242, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v117 = operator new(4u); - *v117 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v117); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1242, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - - // =======================================7 - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 7; - v119 = std::map>>::operator[]((_DWORD *)a1, v118); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v119, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ")"); - v1414 = 7; - v120 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1243 = std::map>::operator[](v120, &v1419); - std::vector::_M_move_assign((void ***)v1243, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v121 = operator new(4u); - *v121 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v121); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1243, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 7; - v122 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1244 = std::map>::operator[](v122, &v1419); - std::vector::_M_move_assign((void ***)v1244, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v737 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v737); - zcc::shared_ptr::shared_ptr(&v1410, (int)v737); - v738 = v1410; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - std::string::_M_assign(v738 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v739 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v739); - zcc::shared_ptr::shared_ptr(&v1412, (int)v739); - v740 = v1412; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v740 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v741 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v741); - zcc::shared_ptr::shared_ptr(&v1414, (int)v741); - v742 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v742 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "EXPRESS"); - v123 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v123 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - v124 = operator new(8u); - *v124 = &off_519A44; - v124[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v124); - v1419[1] = 7; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1244, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 7; - v125 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1245 = std::map>::operator[](v125, &v1419); - std::vector::_M_move_assign((void ***)v1245, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v126 = operator new(4u); - *v126 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v126); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1245, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - - // =======================================8 - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 8; - v128 = std::map>>::operator[]((_DWORD *)a1, v127); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v128, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 8; - v129 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1246 = std::map>::operator[](v129, &v1419); - std::vector::_M_move_assign((void ***)v1246, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v743 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v743); - zcc::shared_ptr::shared_ptr(&v1410, (int)v743); - v744 = v1410; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v744 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v745 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v745); - zcc::shared_ptr::shared_ptr(&v1412, (int)v745); - v746 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v746 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v747 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v747); - zcc::shared_ptr::shared_ptr(&v1414, (int)v747); - v748 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v748 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v130 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v130 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1246, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$VALUE"); - v1414 = 8; - v131 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1247 = std::map>::operator[](v131, &v1419); - std::vector::_M_move_assign((void ***)v1247, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v749 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v749); - zcc::shared_ptr::shared_ptr(&v1410, (int)v749); - v750 = v1410; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v750 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v751 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v751); - zcc::shared_ptr::shared_ptr(&v1412, (int)v751); - v752 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v752 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v753 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v753); - zcc::shared_ptr::shared_ptr(&v1414, (int)v753); - v754 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v754 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v132 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v132 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1247, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F7B4); - v1414 = 8; - v133 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1248 = std::map>::operator[](v133, &v1419); - std::vector::_M_move_assign((void ***)v1248, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v755 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v755); - zcc::shared_ptr::shared_ptr(&v1414, (int)v755); - v756 = v1414; - std::string::basic_string((void **)&v1419, (char *)off_50F7B4); - std::string::_M_assign(v756 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v134 = operator new(8u); - *v134 = &off_519A44; - v134[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v134); - v1419[1] = 16; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1248, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - - // =======================================9 - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 9; - v136 = std::map>>::operator[]((_DWORD *)a1, v135); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v136, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 9; - v137 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1249 = std::map>::operator[](v137, &v1419); - std::vector::_M_move_assign((void ***)v1249, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v138 = operator new(4u); - *v138 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v138); - std::vector>::push_back((void **)&v1416, &v1412); - v757 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v757); - zcc::shared_ptr::shared_ptr(&v1414, (int)v757); - v758 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v758 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v139 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v139 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1249, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - v1414 = 9; - v140 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1250 = std::map>::operator[](v140, &v1419); - std::vector::_M_move_assign((void ***)v1250, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v759 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v759); - zcc::shared_ptr::shared_ptr(&v1412, (int)v759); - v760 = v1412; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - std::string::_M_assign(v760 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v761 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v761); - zcc::shared_ptr::shared_ptr(&v1414, (int)v761); - v762 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v762 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v141 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v141 + 32) = 4; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1250, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - v1414 = 9; - v142 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1251 = std::map>::operator[](v142, &v1419); - std::vector::_M_move_assign((void ***)v1251, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v143 = operator new(4u); - *v143 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v143); - std::vector>::push_back((void **)&v1416, &v1412); - v763 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v763); - zcc::shared_ptr::shared_ptr(&v1414, (int)v763); - v764 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v764 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v144 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v144 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1251, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 9; - v145 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1252 = std::map>::operator[](v145, &v1419); - std::vector::_M_move_assign((void ***)v1252, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v146 = operator new(4u); - *v146 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v146); - std::vector>::push_back((void **)&v1416, &v1412); - v765 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v765); - zcc::shared_ptr::shared_ptr(&v1414, (int)v765); - v766 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v766 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v147 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v147 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1252, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 10; - v149 = std::map>>::operator[]((_DWORD *)a1, v148); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v149, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 10; - v150 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1253 = std::map>::operator[](v150, &v1419); - std::vector::_M_move_assign((void ***)v1253, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v767 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v767); - zcc::shared_ptr::shared_ptr(&v1414, (int)v767); - v768 = v1414; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v768 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v151 = operator new(8u); - *v151 = &off_519A44; - v151[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v151); - v1419[1] = 1; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1253, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 11; - v153 = std::map>>::operator[]((_DWORD *)a1, v152); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v153, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 11; - v154 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1254 = std::map>::operator[](v154, &v1419); - std::vector::_M_move_assign((void ***)v1254, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v155 = operator new(4u); - *v155 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v155); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1254, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 11; - v156 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1255 = std::map>::operator[](v156, &v1419); - std::vector::_M_move_assign((void ***)v1255, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v157 = operator new(8u); - *v157 = &off_519A44; - v157[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v157); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v769 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v769); - zcc::shared_ptr::shared_ptr(&v1414, (int)v769); - v770 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v770 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v158 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v158 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v159 = operator new(8u); - *v159 = &off_519A44; - v159[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v159); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1255, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 11; - v160 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1256 = std::map>::operator[](v160, &v1419); - std::vector::_M_move_assign((void ***)v1256, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v161 = operator new(8u); - *v161 = &off_519A44; - v161[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v161); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v771 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v771); - zcc::shared_ptr::shared_ptr(&v1414, (int)v771); - v772 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v772 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v162 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v162 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v163 = operator new(8u); - *v163 = &off_519A44; - v163[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v163); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1256, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 11; - v164 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1257 = std::map>::operator[](v164, &v1419); - std::vector::_M_move_assign((void ***)v1257, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v165 = operator new(8u); - *v165 = &off_519A44; - v165[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v165); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v773 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v773); - zcc::shared_ptr::shared_ptr(&v1414, (int)v773); - v774 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v774 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v166 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v166 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v167 = operator new(8u); - *v167 = &off_519A44; - v167[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v167); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1257, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 11; - v168 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1258 = std::map>::operator[](v168, &v1419); - std::vector::_M_move_assign((void ***)v1258, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v169 = operator new(8u); - *v169 = &off_519A44; - v169[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v169); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v775 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v775); - zcc::shared_ptr::shared_ptr(&v1414, (int)v775); - v776 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v776 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v170 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v170 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v171 = operator new(8u); - *v171 = &off_519A44; - v171[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v171); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1258, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 11; - v172 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1259 = std::map>::operator[](v172, &v1419); - std::vector::_M_move_assign((void ***)v1259, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v173 = operator new(8u); - *v173 = &off_519A44; - v173[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v173); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v777 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v777); - zcc::shared_ptr::shared_ptr(&v1414, (int)v777); - v778 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v778 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v174 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v174 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v175 = operator new(8u); - *v175 = &off_519A44; - v175[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v175); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1259, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - v1414 = 11; - v176 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1260 = std::map>::operator[](v176, &v1419); - std::vector::_M_move_assign((void ***)v1260, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v177 = operator new(4u); - *v177 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v177); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1260, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 11; - v178 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1261 = std::map>::operator[](v178, &v1419); - std::vector::_M_move_assign((void ***)v1261, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v179 = operator new(8u); - *v179 = &off_519A44; - v179[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v179); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v779 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v779); - zcc::shared_ptr::shared_ptr(&v1414, (int)v779); - v780 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v780 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v180 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v180 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v181 = operator new(8u); - *v181 = &off_519A44; - v181[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v181); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1261, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 12; - v183 = std::map>>::operator[]((_DWORD *)a1, v182); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v183, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@charset"); - v1414 = 12; - v184 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1262 = std::map>::operator[](v184, &v1419); - std::vector::_M_move_assign((void ***)v1262, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v781 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v781); - zcc::shared_ptr::shared_ptr(&v1408, (int)v781); - v782 = v1408; - std::string::basic_string((void **)&v1419, "@charset"); - std::string::_M_assign(v782 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v783 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v783); - zcc::shared_ptr::shared_ptr(&v1410, (int)v783); - v784 = v1410; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v784 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v185 = operator new(8u); - *v185 = &off_519A44; - v185[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v185); - *(_DWORD *)(v1412 + 4) = 20; - std::vector>::push_back((void **)&v1416, &v1412); - v785 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v785); - zcc::shared_ptr::shared_ptr(&v1414, (int)v785); - v786 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v786 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v186 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v186 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v187 = operator new(8u); - *v187 = &off_519A44; - v187[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v187); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1262, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@-webkit-keyframes"); - v1414 = 12; - v188 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1263 = std::map>::operator[](v188, &v1419); - std::vector::_M_move_assign((void ***)v1263, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v787 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v787); - zcc::shared_ptr::shared_ptr(&v1402, (int)v787); - v788 = v1402; - std::string::basic_string((void **)&v1419, "@-webkit-keyframes"); - std::string::_M_assign(v788 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1402); - v789 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v789); - zcc::shared_ptr::shared_ptr(&v1404, (int)v789); - v790 = v1404; - std::string::basic_string((void **)&v1419, "$MULTI_EXPR"); - std::string::_M_assign(v790 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1404); - v791 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v791); - zcc::shared_ptr::shared_ptr(&v1406, (int)v791); - v792 = v1406; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v792 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v189 = operator new(8u); - *v189 = &off_519A44; - v189[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v189); - *(_DWORD *)(v1408 + 4) = 12; - std::vector>::push_back((void **)&v1416, &v1408); - v793 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v793); - zcc::shared_ptr::shared_ptr(&v1410, (int)v793); - v794 = v1410; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v794 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v795 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v795); - zcc::shared_ptr::shared_ptr(&v1412, (int)v795); - v796 = v1412; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v796 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1412 + 4), "MULTIRULE"); - v190 = v1412; - *(_DWORD *)(v1412 + 28) = 0; - *(_DWORD *)(v190 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1412); - v797 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v797); - zcc::shared_ptr::shared_ptr(&v1414, (int)v797); - v798 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v798 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v191 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v191 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v192 = operator new(8u); - *v192 = &off_519A44; - v192[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v192); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1263, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1405); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1403); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 12; - v193 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1264 = std::map>::operator[](v193, &v1419); - std::vector::_M_move_assign((void ***)v1264, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v194 = operator new(8u); - *v194 = &off_519A44; - v194[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v194); - *(_DWORD *)(v1408 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1408); - v799 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v799); - zcc::shared_ptr::shared_ptr(&v1410, (int)v799); - v800 = v1410; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v800 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v195 = operator new(8u); - *v195 = &off_519A44; - v195[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v195); - *(_DWORD *)(v1412 + 4) = 22; - std::vector>::push_back((void **)&v1416, &v1412); - v801 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v801); - zcc::shared_ptr::shared_ptr(&v1414, (int)v801); - v802 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v802 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v196 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v196 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v197 = operator new(8u); - *v197 = &off_519A44; - v197[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v197); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1264, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 12; - v198 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1265 = std::map>::operator[](v198, &v1419); - std::vector::_M_move_assign((void ***)v1265, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v199 = operator new(8u); - *v199 = &off_519A44; - v199[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v199); - *(_DWORD *)(v1408 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1408); - v803 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v803); - zcc::shared_ptr::shared_ptr(&v1410, (int)v803); - v804 = v1410; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v804 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v200 = operator new(8u); - *v200 = &off_519A44; - v200[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v200); - *(_DWORD *)(v1412 + 4) = 22; - std::vector>::push_back((void **)&v1416, &v1412); - v805 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v805); - zcc::shared_ptr::shared_ptr(&v1414, (int)v805); - v806 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v806 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v201 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v201 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v202 = operator new(8u); - *v202 = &off_519A44; - v202[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v202); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1265, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@keyframes"); - v1414 = 12; - v203 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1266 = std::map>::operator[](v203, &v1419); - std::vector::_M_move_assign((void ***)v1266, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v807 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v807); - zcc::shared_ptr::shared_ptr(&v1402, (int)v807); - v808 = v1402; - std::string::basic_string((void **)&v1419, "@keyframes"); - std::string::_M_assign(v808 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1402); - v809 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v809); - zcc::shared_ptr::shared_ptr(&v1404, (int)v809); - v810 = v1404; - std::string::basic_string((void **)&v1419, "$MULTI_EXPR"); - std::string::_M_assign(v810 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1404); - v811 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v811); - zcc::shared_ptr::shared_ptr(&v1406, (int)v811); - v812 = v1406; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v812 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v204 = operator new(8u); - *v204 = &off_519A44; - v204[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v204); - *(_DWORD *)(v1408 + 4) = 12; - std::vector>::push_back((void **)&v1416, &v1408); - v813 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v813); - zcc::shared_ptr::shared_ptr(&v1410, (int)v813); - v814 = v1410; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v814 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v815 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v815); - zcc::shared_ptr::shared_ptr(&v1412, (int)v815); - v816 = v1412; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v816 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1412 + 4), "MULTIRULE"); - v205 = v1412; - *(_DWORD *)(v1412 + 28) = 0; - *(_DWORD *)(v205 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1412); - v817 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v817); - zcc::shared_ptr::shared_ptr(&v1414, (int)v817); - v818 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v818 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v206 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v206 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v207 = operator new(8u); - *v207 = &off_519A44; - v207[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v207); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1266, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1405); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1403); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@supports"); - v1414 = 12; - v208 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1267 = std::map>::operator[](v208, &v1419); - std::vector::_M_move_assign((void ***)v1267, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v819 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v819); - zcc::shared_ptr::shared_ptr(&v1402, (int)v819); - v820 = v1402; - std::string::basic_string((void **)&v1419, "@supports"); - std::string::_M_assign(v820 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1402); - v821 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v821); - zcc::shared_ptr::shared_ptr(&v1404, (int)v821); - v822 = v1404; - std::string::basic_string((void **)&v1419, "$MULTI_EXPR"); - std::string::_M_assign(v822 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1404); - v823 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v823); - zcc::shared_ptr::shared_ptr(&v1406, (int)v823); - v824 = v1406; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v824 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v209 = operator new(8u); - *v209 = &off_519A44; - v209[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v209); - *(_DWORD *)(v1408 + 4) = 12; - std::vector>::push_back((void **)&v1416, &v1408); - v825 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v825); - zcc::shared_ptr::shared_ptr(&v1410, (int)v825); - v826 = v1410; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v826 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v827 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v827); - zcc::shared_ptr::shared_ptr(&v1412, (int)v827); - v828 = v1412; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v828 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1412 + 4), "MULTIRULE"); - v210 = v1412; - *(_DWORD *)(v1412 + 28) = 0; - *(_DWORD *)(v210 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1412); - v829 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v829); - zcc::shared_ptr::shared_ptr(&v1414, (int)v829); - v830 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v830 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v211 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v211 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v212 = operator new(8u); - *v212 = &off_519A44; - v212[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v212); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1267, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1405); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1403); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 12; - v213 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1268 = std::map>::operator[](v213, &v1419); - std::vector::_M_move_assign((void ***)v1268, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v214 = operator new(8u); - *v214 = &off_519A44; - v214[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v214); - *(_DWORD *)(v1408 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1408); - v831 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v831); - zcc::shared_ptr::shared_ptr(&v1410, (int)v831); - v832 = v1410; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v832 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v215 = operator new(8u); - *v215 = &off_519A44; - v215[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v215); - *(_DWORD *)(v1412 + 4) = 22; - std::vector>::push_back((void **)&v1416, &v1412); - v833 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v833); - zcc::shared_ptr::shared_ptr(&v1414, (int)v833); - v834 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v834 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v216 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v216 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v217 = operator new(8u); - *v217 = &off_519A44; - v217[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v217); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1268, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@import"); - v1414 = 12; - v218 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1269 = std::map>::operator[](v218, &v1419); - std::vector::_M_move_assign((void ***)v1269, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v835 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v835); - zcc::shared_ptr::shared_ptr(&v1408, (int)v835); - v836 = v1408; - std::string::basic_string((void **)&v1419, "@import"); - std::string::_M_assign(v836 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v837 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v837); - zcc::shared_ptr::shared_ptr(&v1410, (int)v837); - v838 = v1410; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v838 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v219 = operator new(8u); - *v219 = &off_519A44; - v219[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v219); - *(_DWORD *)(v1412 + 4) = 21; - std::vector>::push_back((void **)&v1416, &v1412); - v839 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v839); - zcc::shared_ptr::shared_ptr(&v1414, (int)v839); - v840 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v840 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v220 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v220 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v221 = operator new(8u); - *v221 = &off_519A44; - v221[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v221); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1269, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 12; - v222 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1270 = std::map>::operator[](v222, &v1419); - std::vector::_M_move_assign((void ***)v1270, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v223 = operator new(8u); - *v223 = &off_519A44; - v223[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v223); - *(_DWORD *)(v1408 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1408); - v841 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v841); - zcc::shared_ptr::shared_ptr(&v1410, (int)v841); - v842 = v1410; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v842 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v224 = operator new(8u); - *v224 = &off_519A44; - v224[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v224); - *(_DWORD *)(v1412 + 4) = 22; - std::vector>::push_back((void **)&v1416, &v1412); - v843 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v843); - zcc::shared_ptr::shared_ptr(&v1414, (int)v843); - v844 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v844 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v225 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v225 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v226 = operator new(8u); - *v226 = &off_519A44; - v226[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v226); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1270, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 12; - v227 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1271 = std::map>::operator[](v227, &v1419); - std::vector::_M_move_assign((void ***)v1271, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v228 = operator new(8u); - *v228 = &off_519A44; - v228[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v228); - *(_DWORD *)(v1408 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1408); - v845 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v845); - zcc::shared_ptr::shared_ptr(&v1410, (int)v845); - v846 = v1410; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v846 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v229 = operator new(8u); - *v229 = &off_519A44; - v229[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v229); - *(_DWORD *)(v1412 + 4) = 22; - std::vector>::push_back((void **)&v1416, &v1412); - v847 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v847); - zcc::shared_ptr::shared_ptr(&v1414, (int)v847); - v848 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v848 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v230 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v230 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v231 = operator new(8u); - *v231 = &off_519A44; - v231[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v231); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1271, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@media"); - v1414 = 12; - v232 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1272 = std::map>::operator[](v232, &v1419); - std::vector::_M_move_assign((void ***)v1272, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v849 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v849); - zcc::shared_ptr::shared_ptr(&v1402, (int)v849); - v850 = v1402; - std::string::basic_string((void **)&v1419, "@media"); - std::string::_M_assign(v850 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1402); - v851 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v851); - zcc::shared_ptr::shared_ptr(&v1404, (int)v851); - v852 = v1404; - std::string::basic_string((void **)&v1419, "$MULTI_EXPR"); - std::string::_M_assign(v852 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1404); - v853 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v853); - zcc::shared_ptr::shared_ptr(&v1406, (int)v853); - v854 = v1406; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v854 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v233 = operator new(8u); - *v233 = &off_519A44; - v233[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v233); - *(_DWORD *)(v1408 + 4) = 12; - std::vector>::push_back((void **)&v1416, &v1408); - v855 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v855); - zcc::shared_ptr::shared_ptr(&v1410, (int)v855); - v856 = v1410; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v856 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v857 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v857); - zcc::shared_ptr::shared_ptr(&v1412, (int)v857); - v858 = v1412; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v858 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1412 + 4), "MULTIRULE"); - v234 = v1412; - *(_DWORD *)(v1412 + 28) = 0; - *(_DWORD *)(v234 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1412); - v859 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v859); - zcc::shared_ptr::shared_ptr(&v1414, (int)v859); - v860 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v860 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v235 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v235 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v236 = operator new(8u); - *v236 = &off_519A44; - v236[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v236); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1272, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1405); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1403); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 12; - v237 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1273 = std::map>::operator[](v237, &v1419); - std::vector::_M_move_assign((void ***)v1273, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v238 = operator new(8u); - *v238 = &off_519A44; - v238[1] = 0; - zcc::shared_ptr::shared_ptr(&v1408, (int)v238); - *(_DWORD *)(v1408 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1408); - v861 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v861); - zcc::shared_ptr::shared_ptr(&v1410, (int)v861); - v862 = v1410; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v862 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v239 = operator new(8u); - *v239 = &off_519A44; - v239[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v239); - *(_DWORD *)(v1412 + 4) = 22; - std::vector>::push_back((void **)&v1416, &v1412); - v863 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v863); - zcc::shared_ptr::shared_ptr(&v1414, (int)v863); - v864 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v864 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULES"); - v240 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v240 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v241 = operator new(8u); - *v241 = &off_519A44; - v241[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v241); - v1419[1] = 3; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1273, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 13; - v243 = std::map>>::operator[]((_DWORD *)a1, v242); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v243, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 13; - v244 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1274 = std::map>::operator[](v244, &v1419); - std::vector::_M_move_assign((void ***)v1274, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v865 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v865); - zcc::shared_ptr::shared_ptr(&v1410, (int)v865); - v866 = v1410; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v866 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v867 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v867); - zcc::shared_ptr::shared_ptr(&v1412, (int)v867); - v868 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v868 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v869 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v869); - zcc::shared_ptr::shared_ptr(&v1414, (int)v869); - v870 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v870 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v245 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v245 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1274, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$VALUE"); - v1414 = 13; - v246 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1275 = std::map>::operator[](v246, &v1419); - std::vector::_M_move_assign((void ***)v1275, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v871 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v871); - zcc::shared_ptr::shared_ptr(&v1410, (int)v871); - v872 = v1410; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v872 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v873 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v873); - zcc::shared_ptr::shared_ptr(&v1412, (int)v873); - v874 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v874 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v875 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v875); - zcc::shared_ptr::shared_ptr(&v1414, (int)v875); - v876 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v876 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v247 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v247 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1275, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 14; - v249 = std::map>>::operator[]((_DWORD *)a1, v248); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v249, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@charset"); - v1414 = 14; - v250 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1276 = std::map>::operator[](v250, &v1419); - std::vector::_M_move_assign((void ***)v1276, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v877 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v877); - zcc::shared_ptr::shared_ptr(&v1412, (int)v877); - v878 = v1412; - std::string::basic_string((void **)&v1419, "@charset"); - std::string::_M_assign(v878 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v879 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v879); - zcc::shared_ptr::shared_ptr(&v1414, (int)v879); - v880 = v1414; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v880 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v251 = operator new(8u); - *v251 = &off_519A44; - v251[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v251); - v1419[1] = 20; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1276, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@-webkit-keyframes"); - v1414 = 14; - v252 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1277 = std::map>::operator[](v252, &v1419); - std::vector::_M_move_assign((void ***)v1277, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v881 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v881); - zcc::shared_ptr::shared_ptr(&v1404, (int)v881); - v882 = v1404; - std::string::basic_string((void **)&v1419, "@-webkit-keyframes"); - std::string::_M_assign(v882 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1404); - v883 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v883); - zcc::shared_ptr::shared_ptr(&v1406, (int)v883); - v884 = v1406; - std::string::basic_string((void **)&v1419, "$MULTI_EXPR"); - std::string::_M_assign(v884 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v885 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v885); - zcc::shared_ptr::shared_ptr(&v1408, (int)v885); - v886 = v1408; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v886 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v253 = operator new(8u); - *v253 = &off_519A44; - v253[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v253); - *(_DWORD *)(v1410 + 4) = 12; - std::vector>::push_back((void **)&v1416, &v1410); - v887 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v887); - zcc::shared_ptr::shared_ptr(&v1412, (int)v887); - v888 = v1412; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v888 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v889 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v889); - zcc::shared_ptr::shared_ptr(&v1414, (int)v889); - v890 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v890 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "MULTIRULE"); - v254 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v254 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1277, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1405); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 14; - v255 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1278 = std::map>::operator[](v255, &v1419); - std::vector::_M_move_assign((void ***)v1278, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v256 = operator new(8u); - *v256 = &off_519A44; - v256[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v256); - *(_DWORD *)(v1412 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1412); - v891 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v891); - zcc::shared_ptr::shared_ptr(&v1414, (int)v891); - v892 = v1414; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v892 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v257 = operator new(8u); - *v257 = &off_519A44; - v257[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v257); - v1419[1] = 22; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1278, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 14; - v258 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1279 = std::map>::operator[](v258, &v1419); - std::vector::_M_move_assign((void ***)v1279, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v259 = operator new(8u); - *v259 = &off_519A44; - v259[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v259); - *(_DWORD *)(v1412 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1412); - v893 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v893); - zcc::shared_ptr::shared_ptr(&v1414, (int)v893); - v894 = v1414; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v894 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v260 = operator new(8u); - *v260 = &off_519A44; - v260[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v260); - v1419[1] = 22; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1279, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@keyframes"); - v1414 = 14; - v261 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1280 = std::map>::operator[](v261, &v1419); - std::vector::_M_move_assign((void ***)v1280, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v895 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v895); - zcc::shared_ptr::shared_ptr(&v1404, (int)v895); - v896 = v1404; - std::string::basic_string((void **)&v1419, "@keyframes"); - std::string::_M_assign(v896 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1404); - v897 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v897); - zcc::shared_ptr::shared_ptr(&v1406, (int)v897); - v898 = v1406; - std::string::basic_string((void **)&v1419, "$MULTI_EXPR"); - std::string::_M_assign(v898 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v899 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v899); - zcc::shared_ptr::shared_ptr(&v1408, (int)v899); - v900 = v1408; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v900 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v262 = operator new(8u); - *v262 = &off_519A44; - v262[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v262); - *(_DWORD *)(v1410 + 4) = 12; - std::vector>::push_back((void **)&v1416, &v1410); - v901 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v901); - zcc::shared_ptr::shared_ptr(&v1412, (int)v901); - v902 = v1412; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v902 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v903 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v903); - zcc::shared_ptr::shared_ptr(&v1414, (int)v903); - v904 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v904 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "MULTIRULE"); - v263 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v263 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1280, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1405); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@supports"); - v1414 = 14; - v264 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1281 = std::map>::operator[](v264, &v1419); - std::vector::_M_move_assign((void ***)v1281, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v905 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v905); - zcc::shared_ptr::shared_ptr(&v1404, (int)v905); - v906 = v1404; - std::string::basic_string((void **)&v1419, "@supports"); - std::string::_M_assign(v906 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1404); - v907 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v907); - zcc::shared_ptr::shared_ptr(&v1406, (int)v907); - v908 = v1406; - std::string::basic_string((void **)&v1419, "$MULTI_EXPR"); - std::string::_M_assign(v908 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v909 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v909); - zcc::shared_ptr::shared_ptr(&v1408, (int)v909); - v910 = v1408; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v910 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v265 = operator new(8u); - *v265 = &off_519A44; - v265[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v265); - *(_DWORD *)(v1410 + 4) = 12; - std::vector>::push_back((void **)&v1416, &v1410); - v911 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v911); - zcc::shared_ptr::shared_ptr(&v1412, (int)v911); - v912 = v1412; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v912 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v913 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v913); - zcc::shared_ptr::shared_ptr(&v1414, (int)v913); - v914 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v914 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "MULTIRULE"); - v266 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v266 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1281, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1405); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 14; - v267 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1282 = std::map>::operator[](v267, &v1419); - std::vector::_M_move_assign((void ***)v1282, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v268 = operator new(8u); - *v268 = &off_519A44; - v268[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v268); - *(_DWORD *)(v1412 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1412); - v915 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v915); - zcc::shared_ptr::shared_ptr(&v1414, (int)v915); - v916 = v1414; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v916 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v269 = operator new(8u); - *v269 = &off_519A44; - v269[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v269); - v1419[1] = 22; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1282, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@import"); - v1414 = 14; - v270 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1283 = std::map>::operator[](v270, &v1419); - std::vector::_M_move_assign((void ***)v1283, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v917 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v917); - zcc::shared_ptr::shared_ptr(&v1412, (int)v917); - v918 = v1412; - std::string::basic_string((void **)&v1419, "@import"); - std::string::_M_assign(v918 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v919 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v919); - zcc::shared_ptr::shared_ptr(&v1414, (int)v919); - v920 = v1414; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v920 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v271 = operator new(8u); - *v271 = &off_519A44; - v271[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v271); - v1419[1] = 21; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1283, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 14; - v272 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1284 = std::map>::operator[](v272, &v1419); - std::vector::_M_move_assign((void ***)v1284, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v273 = operator new(8u); - *v273 = &off_519A44; - v273[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v273); - *(_DWORD *)(v1412 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1412); - v921 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v921); - zcc::shared_ptr::shared_ptr(&v1414, (int)v921); - v922 = v1414; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v922 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v274 = operator new(8u); - *v274 = &off_519A44; - v274[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v274); - v1419[1] = 22; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1284, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 14; - v275 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1285 = std::map>::operator[](v275, &v1419); - std::vector::_M_move_assign((void ***)v1285, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v276 = operator new(8u); - *v276 = &off_519A44; - v276[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v276); - *(_DWORD *)(v1412 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1412); - v923 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v923); - zcc::shared_ptr::shared_ptr(&v1414, (int)v923); - v924 = v1414; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v924 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v277 = operator new(8u); - *v277 = &off_519A44; - v277[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v277); - v1419[1] = 22; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1285, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@media"); - v1414 = 14; - v278 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1286 = std::map>::operator[](v278, &v1419); - std::vector::_M_move_assign((void ***)v1286, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v925 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v925); - zcc::shared_ptr::shared_ptr(&v1404, (int)v925); - v926 = v1404; - std::string::basic_string((void **)&v1419, "@media"); - std::string::_M_assign(v926 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1404); - v927 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v927); - zcc::shared_ptr::shared_ptr(&v1406, (int)v927); - v928 = v1406; - std::string::basic_string((void **)&v1419, "$MULTI_EXPR"); - std::string::_M_assign(v928 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1406); - v929 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v929); - zcc::shared_ptr::shared_ptr(&v1408, (int)v929); - v930 = v1408; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v930 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v279 = operator new(8u); - *v279 = &off_519A44; - v279[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v279); - *(_DWORD *)(v1410 + 4) = 12; - std::vector>::push_back((void **)&v1416, &v1410); - v931 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v931); - zcc::shared_ptr::shared_ptr(&v1412, (int)v931); - v932 = v1412; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v932 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v933 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v933); - zcc::shared_ptr::shared_ptr(&v1414, (int)v933); - v934 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v934 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "MULTIRULE"); - v280 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v280 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1286, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1405); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 14; - v281 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1287 = std::map>::operator[](v281, &v1419); - std::vector::_M_move_assign((void ***)v1287, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v282 = operator new(8u); - *v282 = &off_519A44; - v282[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v282); - *(_DWORD *)(v1412 + 4) = 24; - std::vector>::push_back((void **)&v1416, &v1412); - v935 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v935); - zcc::shared_ptr::shared_ptr(&v1414, (int)v935); - v936 = v1414; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - std::string::_M_assign(v936 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v283 = operator new(8u); - *v283 = &off_519A44; - v283[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v283); - v1419[1] = 22; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1287, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 15; - v285 = std::map>>::operator[]((_DWORD *)a1, v284); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v285, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 15; - v286 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1288 = std::map>::operator[](v286, &v1419); - std::vector::_M_move_assign((void ***)v1288, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v937 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v937); - zcc::shared_ptr::shared_ptr(&v1410, (int)v937); - v938 = v1410; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v938 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v939 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v939); - zcc::shared_ptr::shared_ptr(&v1412, (int)v939); - v940 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v940 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v941 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v941); - zcc::shared_ptr::shared_ptr(&v1414, (int)v941); - v942 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v942 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v287 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v287 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1288, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$VALUE"); - v1414 = 15; - v288 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1289 = std::map>::operator[](v288, &v1419); - std::vector::_M_move_assign((void ***)v1289, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v943 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v943); - zcc::shared_ptr::shared_ptr(&v1410, (int)v943); - v944 = v1410; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v944 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v945 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v945); - zcc::shared_ptr::shared_ptr(&v1412, (int)v945); - v946 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v946 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v947 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v947); - zcc::shared_ptr::shared_ptr(&v1414, (int)v947); - v948 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v948 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v289 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v289 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1289, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 16; - v291 = std::map>>::operator[]((_DWORD *)a1, v290); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v291, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 16; - v292 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1290 = std::map>::operator[](v292, &v1419); - std::vector::_M_move_assign((void ***)v1290, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v949 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v949); - zcc::shared_ptr::shared_ptr(&v1410, (int)v949); - v950 = v1410; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v950 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v951 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v951); - zcc::shared_ptr::shared_ptr(&v1412, (int)v951); - v952 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v952 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v953 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v953); - zcc::shared_ptr::shared_ptr(&v1414, (int)v953); - v954 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v954 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v293 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v293 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1290, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$VALUE"); - v1414 = 16; - v294 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1291 = std::map>::operator[](v294, &v1419); - std::vector::_M_move_assign((void ***)v1291, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v955 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v955); - zcc::shared_ptr::shared_ptr(&v1410, (int)v955); - v956 = v1410; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v956 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v957 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v957); - zcc::shared_ptr::shared_ptr(&v1412, (int)v957); - v958 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v958 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v959 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v959); - zcc::shared_ptr::shared_ptr(&v1414, (int)v959); - v960 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v960 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v295 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v295 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1291, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 17; - v297 = std::map>>::operator[]((_DWORD *)a1, v296); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v297, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 17; - v298 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1292 = std::map>::operator[](v298, &v1419); - std::vector::_M_move_assign((void ***)v1292, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v961 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v961); - zcc::shared_ptr::shared_ptr(&v1410, (int)v961); - v962 = v1410; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v962 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v963 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v963); - zcc::shared_ptr::shared_ptr(&v1412, (int)v963); - v964 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v964 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v965 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v965); - zcc::shared_ptr::shared_ptr(&v1414, (int)v965); - v966 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v966 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v299 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v299 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1292, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$VALUE"); - v1414 = 17; - v300 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1293 = std::map>::operator[](v300, &v1419); - std::vector::_M_move_assign((void ***)v1293, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v967 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v967); - zcc::shared_ptr::shared_ptr(&v1410, (int)v967); - v968 = v1410; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v968 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v969 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v969); - zcc::shared_ptr::shared_ptr(&v1412, (int)v969); - v970 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v970 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v971 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v971); - zcc::shared_ptr::shared_ptr(&v1414, (int)v971); - v972 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v972 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v301 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v301 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1293, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 18; - v303 = std::map>>::operator[]((_DWORD *)a1, v302); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v303, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 18; - v304 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1294 = std::map>::operator[](v304, &v1419); - std::vector::_M_move_assign((void ***)v1294, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v305 = operator new(4u); - *v305 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v305); - std::vector>::push_back((void **)&v1416, &v1412); - v973 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v973); - zcc::shared_ptr::shared_ptr(&v1414, (int)v973); - v974 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v974 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v306 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v306 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1294, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ")"); - v1414 = 18; - v307 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1295 = std::map>::operator[](v307, &v1419); - std::vector::_M_move_assign((void ***)v1295, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v308 = operator new(4u); - *v308 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v308); - std::vector>::push_back((void **)&v1416, &v1412); - v975 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v975); - zcc::shared_ptr::shared_ptr(&v1414, (int)v975); - v976 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v976 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v309 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v309 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1295, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "("); - v1414 = 18; - v310 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1296 = std::map>::operator[](v310, &v1419); - std::vector::_M_move_assign((void ***)v1296, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v977 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v977); - zcc::shared_ptr::shared_ptr(&v1408, (int)v977); - v978 = v1408; - std::string::basic_string((void **)&v1419, "("); - std::string::_M_assign(v978 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1408); - v311 = operator new(8u); - *v311 = &off_519A44; - v311[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v311); - *(_DWORD *)(v1410 + 4) = 2; - std::vector>::push_back((void **)&v1416, &v1410); - v979 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v979); - zcc::shared_ptr::shared_ptr(&v1412, (int)v979); - v980 = v1412; - std::string::basic_string((void **)&v1419, ")"); - std::string::_M_assign(v980 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v981 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v981); - zcc::shared_ptr::shared_ptr(&v1414, (int)v981); - v982 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v982 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v312 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v312 + 32) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1296, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 18; - v313 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1297 = std::map>::operator[](v313, &v1419); - std::vector::_M_move_assign((void ***)v1297, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v314 = operator new(4u); - *v314 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v314); - std::vector>::push_back((void **)&v1416, &v1412); - v983 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v983); - zcc::shared_ptr::shared_ptr(&v1414, (int)v983); - v984 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v984 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v315 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v315 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1297, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ","); - v1414 = 18; - v316 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1298 = std::map>::operator[](v316, &v1419); - std::vector::_M_move_assign((void ***)v1298, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v317 = operator new(4u); - *v317 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v317); - std::vector>::push_back((void **)&v1416, &v1412); - v985 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v985); - zcc::shared_ptr::shared_ptr(&v1414, (int)v985); - v986 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v986 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v318 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v318 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1298, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 18; - v319 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1299 = std::map>::operator[](v319, &v1419); - std::vector::_M_move_assign((void ***)v1299, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v320 = operator new(4u); - *v320 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v320); - std::vector>::push_back((void **)&v1416, &v1412); - v987 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v987); - zcc::shared_ptr::shared_ptr(&v1414, (int)v987); - v988 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v988 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v321 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v321 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1299, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 18; - v322 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1300 = std::map>::operator[](v322, &v1419); - std::vector::_M_move_assign((void ***)v1300, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v323 = operator new(4u); - *v323 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v323); - std::vector>::push_back((void **)&v1416, &v1412); - v989 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v989); - zcc::shared_ptr::shared_ptr(&v1414, (int)v989); - v990 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v990 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v324 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v324 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1300, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - v1414 = 18; - v325 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1301 = std::map>::operator[](v325, &v1419); - std::vector::_M_move_assign((void ***)v1301, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v326 = operator new(4u); - *v326 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v326); - std::vector>::push_back((void **)&v1416, &v1412); - v991 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v991); - zcc::shared_ptr::shared_ptr(&v1414, (int)v991); - v992 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v992 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v327 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v327 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1301, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 18; - v328 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1302 = std::map>::operator[](v328, &v1419); - std::vector::_M_move_assign((void ***)v1302, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v329 = operator new(4u); - *v329 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v329); - std::vector>::push_back((void **)&v1416, &v1412); - v993 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v993); - zcc::shared_ptr::shared_ptr(&v1414, (int)v993); - v994 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v994 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v330 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v330 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1302, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 18; - v331 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1303 = std::map>::operator[](v331, &v1419); - std::vector::_M_move_assign((void ***)v1303, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v332 = operator new(4u); - *v332 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v332); - std::vector>::push_back((void **)&v1416, &v1412); - v995 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v995); - zcc::shared_ptr::shared_ptr(&v1414, (int)v995); - v996 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v996 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v333 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v333 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1303, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 18; - v334 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1304 = std::map>::operator[](v334, &v1419); - std::vector::_M_move_assign((void ***)v1304, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v335 = operator new(4u); - *v335 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v335); - std::vector>::push_back((void **)&v1416, &v1412); - v997 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v997); - zcc::shared_ptr::shared_ptr(&v1414, (int)v997); - v998 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v998 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "F_SELECTOR"); - v336 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v336 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1304, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 19; - v338 = std::map>>::operator[]((_DWORD *)a1, v337); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v338, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 19; - v339 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1305 = std::map>::operator[](v339, &v1419); - std::vector::_M_move_assign((void ***)v1305, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v999 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v999); - zcc::shared_ptr::shared_ptr(&v1410, (int)v999); - v1000 = v1410; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v1000 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v1001 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1001); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1001); - v1002 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v1002 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1003 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1003); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1003); - v1004 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1004 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v340 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v340 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1305, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$VALUE"); - v1414 = 19; - v341 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1306 = std::map>::operator[](v341, &v1419); - std::vector::_M_move_assign((void ***)v1306, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1005 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1005); - zcc::shared_ptr::shared_ptr(&v1410, (int)v1005); - v1006 = v1410; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v1006 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v1007 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1007); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1007); - v1008 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v1008 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1009 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1009); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1009); - v1010 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1010 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v342 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v342 + 32) = 6; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1306, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 20; - v344 = std::map>>::operator[]((_DWORD *)a1, v343); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v344, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 20; - v345 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1307 = std::map>::operator[](v345, &v1419); - std::vector::_M_move_assign((void ***)v1307, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v346 = operator new(4u); - *v346 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v346); - std::vector>::push_back((void **)&v1416, &v1412); - v1011 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1011); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1011); - v1012 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1012 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v347 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v347 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1307, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@charset"); - v1414 = 20; - v348 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1308 = std::map>::operator[](v348, &v1419); - std::vector::_M_move_assign((void ***)v1308, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v349 = operator new(4u); - *v349 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v349); - std::vector>::push_back((void **)&v1416, &v1412); - v1013 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1013); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1013); - v1014 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1014 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v350 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v350 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1308, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 20; - v351 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1309 = std::map>::operator[](v351, &v1419); - std::vector::_M_move_assign((void ***)v1309, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v352 = operator new(4u); - *v352 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v352); - std::vector>::push_back((void **)&v1416, &v1412); - v1015 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1015); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1015); - v1016 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1016 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v353 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v353 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1309, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 20; - v354 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1310 = std::map>::operator[](v354, &v1419); - std::vector::_M_move_assign((void ***)v1310, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v355 = operator new(4u); - *v355 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v355); - std::vector>::push_back((void **)&v1416, &v1412); - v1017 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1017); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1017); - v1018 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1018 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v356 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v356 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1310, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@media"); - v1414 = 20; - v357 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1311 = std::map>::operator[](v357, &v1419); - std::vector::_M_move_assign((void ***)v1311, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v358 = operator new(4u); - *v358 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v358); - std::vector>::push_back((void **)&v1416, &v1412); - v1019 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1019); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1019); - v1020 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1020 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v359 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v359 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1311, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@keyframes"); - v1414 = 20; - v360 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1312 = std::map>::operator[](v360, &v1419); - std::vector::_M_move_assign((void ***)v1312, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v361 = operator new(4u); - *v361 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v361); - std::vector>::push_back((void **)&v1416, &v1412); - v1021 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1021); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1021); - v1022 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1022 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v362 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v362 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1312, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@supports"); - v1414 = 20; - v363 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1313 = std::map>::operator[](v363, &v1419); - std::vector::_M_move_assign((void ***)v1313, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v364 = operator new(4u); - *v364 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v364); - std::vector>::push_back((void **)&v1416, &v1412); - v1023 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1023); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1023); - v1024 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1024 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v365 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v365 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1313, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@-webkit-keyframes"); - v1414 = 20; - v366 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1314 = std::map>::operator[](v366, &v1419); - std::vector::_M_move_assign((void ***)v1314, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v367 = operator new(4u); - *v367 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v367); - std::vector>::push_back((void **)&v1416, &v1412); - v1025 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1025); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1025); - v1026 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1026 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v368 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v368 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1314, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 20; - v369 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1315 = std::map>::operator[](v369, &v1419); - std::vector::_M_move_assign((void ***)v1315, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v370 = operator new(4u); - *v370 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v370); - std::vector>::push_back((void **)&v1416, &v1412); - v1027 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1027); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1027); - v1028 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1028 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v371 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v371 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1315, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@import"); - v1414 = 20; - v372 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1316 = std::map>::operator[](v372, &v1419); - std::vector::_M_move_assign((void ***)v1316, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v373 = operator new(4u); - *v373 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v373); - std::vector>::push_back((void **)&v1416, &v1412); - v1029 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1029); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1029); - v1030 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1030 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v374 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v374 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1316, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - v1414 = 20; - v375 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1317 = std::map>::operator[](v375, &v1419); - std::vector::_M_move_assign((void ***)v1317, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1031 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1031); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1031); - v1032 = v1412; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - std::string::_M_assign(v1032 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1033 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1033); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1033); - v1034 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1034 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v376 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v376 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1317, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 20; - v377 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1318 = std::map>::operator[](v377, &v1419); - std::vector::_M_move_assign((void ***)v1318, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v378 = operator new(4u); - *v378 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v378); - std::vector>::push_back((void **)&v1416, &v1412); - v1035 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1035); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1035); - v1036 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1036 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v379 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v379 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1318, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - v1414 = 20; - v380 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1319 = std::map>::operator[](v380, &v1419); - std::vector::_M_move_assign((void ***)v1319, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v381 = operator new(4u); - *v381 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v381); - std::vector>::push_back((void **)&v1416, &v1412); - v1037 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1037); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1037); - v1038 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1038 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v382 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v382 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1319, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 20; - v383 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1320 = std::map>::operator[](v383, &v1419); - std::vector::_M_move_assign((void ***)v1320, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v384 = operator new(4u); - *v384 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v384); - std::vector>::push_back((void **)&v1416, &v1412); - v1039 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1039); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1039); - v1040 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1040 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v385 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v385 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1320, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 20; - v386 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1321 = std::map>::operator[](v386, &v1419); - std::vector::_M_move_assign((void ***)v1321, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v387 = operator new(4u); - *v387 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v387); - std::vector>::push_back((void **)&v1416, &v1412); - v1041 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1041); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1041); - v1042 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1042 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v388 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v388 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1321, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 21; - v390 = std::map>>::operator[]((_DWORD *)a1, v389); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v390, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 21; - v391 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1322 = std::map>::operator[](v391, &v1419); - std::vector::_M_move_assign((void ***)v1322, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v392 = operator new(4u); - *v392 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v392); - std::vector>::push_back((void **)&v1416, &v1412); - v1043 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1043); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1043); - v1044 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1044 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v393 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v393 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1322, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@charset"); - v1414 = 21; - v394 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1323 = std::map>::operator[](v394, &v1419); - std::vector::_M_move_assign((void ***)v1323, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v395 = operator new(4u); - *v395 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v395); - std::vector>::push_back((void **)&v1416, &v1412); - v1045 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1045); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1045); - v1046 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1046 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v396 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v396 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1323, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 21; - v397 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1324 = std::map>::operator[](v397, &v1419); - std::vector::_M_move_assign((void ***)v1324, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v398 = operator new(4u); - *v398 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v398); - std::vector>::push_back((void **)&v1416, &v1412); - v1047 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1047); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1047); - v1048 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1048 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v399 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v399 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1324, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 21; - v400 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1325 = std::map>::operator[](v400, &v1419); - std::vector::_M_move_assign((void ***)v1325, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v401 = operator new(4u); - *v401 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v401); - std::vector>::push_back((void **)&v1416, &v1412); - v1049 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1049); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1049); - v1050 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1050 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v402 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v402 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1325, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@media"); - v1414 = 21; - v403 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1326 = std::map>::operator[](v403, &v1419); - std::vector::_M_move_assign((void ***)v1326, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v404 = operator new(4u); - *v404 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v404); - std::vector>::push_back((void **)&v1416, &v1412); - v1051 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1051); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1051); - v1052 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1052 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v405 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v405 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1326, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@keyframes"); - v1414 = 21; - v406 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1327 = std::map>::operator[](v406, &v1419); - std::vector::_M_move_assign((void ***)v1327, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v407 = operator new(4u); - *v407 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v407); - std::vector>::push_back((void **)&v1416, &v1412); - v1053 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1053); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1053); - v1054 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1054 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v408 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v408 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1327, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@supports"); - v1414 = 21; - v409 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1328 = std::map>::operator[](v409, &v1419); - std::vector::_M_move_assign((void ***)v1328, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v410 = operator new(4u); - *v410 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v410); - std::vector>::push_back((void **)&v1416, &v1412); - v1055 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1055); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1055); - v1056 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1056 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v411 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v411 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1328, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@-webkit-keyframes"); - v1414 = 21; - v412 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1329 = std::map>::operator[](v412, &v1419); - std::vector::_M_move_assign((void ***)v1329, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v413 = operator new(4u); - *v413 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v413); - std::vector>::push_back((void **)&v1416, &v1412); - v1057 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1057); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1057); - v1058 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1058 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v414 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v414 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1329, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 21; - v415 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1330 = std::map>::operator[](v415, &v1419); - std::vector::_M_move_assign((void ***)v1330, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v416 = operator new(4u); - *v416 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v416); - std::vector>::push_back((void **)&v1416, &v1412); - v1059 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1059); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1059); - v1060 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1060 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v417 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v417 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1330, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@import"); - v1414 = 21; - v418 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1331 = std::map>::operator[](v418, &v1419); - std::vector::_M_move_assign((void ***)v1331, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v419 = operator new(4u); - *v419 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v419); - std::vector>::push_back((void **)&v1416, &v1412); - v1061 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1061); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1061); - v1062 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1062 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v420 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v420 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1331, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - v1414 = 21; - v421 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1332 = std::map>::operator[](v421, &v1419); - std::vector::_M_move_assign((void ***)v1332, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1063 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1063); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1063); - v1064 = v1412; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - std::string::_M_assign(v1064 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1065 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1065); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1065); - v1066 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1066 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v422 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v422 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1332, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 21; - v423 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1333 = std::map>::operator[](v423, &v1419); - std::vector::_M_move_assign((void ***)v1333, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v424 = operator new(4u); - *v424 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v424); - std::vector>::push_back((void **)&v1416, &v1412); - v1067 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1067); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1067); - v1068 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1068 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v425 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v425 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1333, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - v1414 = 21; - v426 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1334 = std::map>::operator[](v426, &v1419); - std::vector::_M_move_assign((void ***)v1334, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v427 = operator new(4u); - *v427 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v427); - std::vector>::push_back((void **)&v1416, &v1412); - v1069 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1069); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1069); - v1070 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1070 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v428 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v428 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1334, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 21; - v429 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1335 = std::map>::operator[](v429, &v1419); - std::vector::_M_move_assign((void ***)v1335, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v430 = operator new(4u); - *v430 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v430); - std::vector>::push_back((void **)&v1416, &v1412); - v1071 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1071); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1071); - v1072 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1072 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v431 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v431 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1335, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 21; - v432 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1336 = std::map>::operator[](v432, &v1419); - std::vector::_M_move_assign((void ***)v1336, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v433 = operator new(4u); - *v433 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v433); - std::vector>::push_back((void **)&v1416, &v1412); - v1073 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1073); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1073); - v1074 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1074 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "DIRECTIVE"); - v434 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v434 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1336, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 22; - v436 = std::map>>::operator[]((_DWORD *)a1, v435); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v436, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 22; - v437 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1337 = std::map>::operator[](v437, &v1419); - std::vector::_M_move_assign((void ***)v1337, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1075 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1075); - zcc::shared_ptr::shared_ptr(&v1404, (int)v1075); - v1076 = v1404; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v1076 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1404); - v438 = operator new(8u); - *v438 = &off_519A44; - v438[1] = 0; - zcc::shared_ptr::shared_ptr(&v1406, (int)v438); - *(_DWORD *)(v1406 + 4) = 1; - std::vector>::push_back((void **)&v1416, &v1406); - v1077 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1077); - zcc::shared_ptr::shared_ptr(&v1408, (int)v1077); - v1078 = v1408; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1078 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1408 + 4), "ATTRS"); - v439 = v1408; - *(_DWORD *)(v1408 + 28) = 0; - *(_DWORD *)(v439 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1408); - v440 = operator new(8u); - *v440 = &off_519A44; - v440[1] = 0; - zcc::shared_ptr::shared_ptr(&v1410, (int)v440); - *(_DWORD *)(v1410 + 4) = 6; - std::vector>::push_back((void **)&v1416, &v1410); - v1079 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1079); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1079); - v1080 = v1412; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v1080 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1081 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1081); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1081); - v1082 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1082 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULE"); - v441 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v441 + 32) = 4; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1337, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1409); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1407); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1405); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - v1414 = 22; - v442 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1338 = std::map>::operator[](v442, &v1419); - std::vector::_M_move_assign((void ***)v1338, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1083 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1083); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1083); - v1084 = v1412; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - std::string::_M_assign(v1084 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1085 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1085); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1085); - v1086 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1086 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "RULE"); - v443 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v443 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1338, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 23; - v445 = std::map>>::operator[]((_DWORD *)a1, v444); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v445, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 23; - v446 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1339 = std::map>::operator[](v446, &v1419); - std::vector::_M_move_assign((void ***)v1339, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1087 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1087); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1087); - v1088 = v1412; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v1088 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v447 = operator new(8u); - *v447 = &off_519A44; - v447[1] = 0; - zcc::shared_ptr::shared_ptr(&v1414, (int)v447); - *(_DWORD *)(v1414 + 4) = 27; - std::vector>::push_back((void **)&v1416, &v1414); - v448 = operator new(8u); - *v448 = &off_519A44; - v448[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v448); - v1419[1] = 32; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1339, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 23; - v449 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1340 = std::map>::operator[](v449, &v1419); - std::vector::_M_move_assign((void ***)v1340, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1089 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1089); - zcc::shared_ptr::shared_ptr(&v1410, (int)v1089); - v1090 = v1410; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - std::string::_M_assign(v1090 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v1091 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1091); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1091); - v1092 = v1412; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v1092 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1093 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1093); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1093); - v1094 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1094 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v450 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v450 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v451 = operator new(8u); - *v451 = &off_519A44; - v451[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v451); - v1419[1] = 32; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1340, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 23; - v452 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1341 = std::map>::operator[](v452, &v1419); - std::vector::_M_move_assign((void ***)v1341, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1095 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1095); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1095); - v1096 = v1412; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - std::string::_M_assign(v1096 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1097 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1097); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1097); - v1098 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1098 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v453 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v453 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v454 = operator new(8u); - *v454 = &off_519A44; - v454[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v454); - v1419[1] = 32; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1341, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 23; - v455 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1342 = std::map>::operator[](v455, &v1419); - std::vector::_M_move_assign((void ***)v1342, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1099 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1099); - zcc::shared_ptr::shared_ptr(&v1410, (int)v1099); - v1100 = v1410; - std::string::basic_string((void **)&v1419, "["); - std::string::_M_assign(v1100 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v1101 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1101); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1101); - v1102 = v1412; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v1102 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v456 = operator new(8u); - *v456 = &off_519A44; - v456[1] = 0; - zcc::shared_ptr::shared_ptr(&v1414, (int)v456); - *(_DWORD *)(v1414 + 4) = 28; - std::vector>::push_back((void **)&v1416, &v1414); - v457 = operator new(8u); - *v457 = &off_519A44; - v457[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v457); - v1419[1] = 32; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1342, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 23; - v458 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1343 = std::map>::operator[](v458, &v1419); - std::vector::_M_move_assign((void ***)v1343, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1103 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1103); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1103); - v1104 = v1412; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - std::string::_M_assign(v1104 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v459 = operator new(8u); - *v459 = &off_519A44; - v459[1] = 0; - zcc::shared_ptr::shared_ptr(&v1414, (int)v459); - *(_DWORD *)(v1414 + 4) = 5; - std::vector>::push_back((void **)&v1416, &v1414); - v460 = operator new(8u); - *v460 = &off_519A44; - v460[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v460); - v1419[1] = 32; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1343, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 23; - v461 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1344 = std::map>::operator[](v461, &v1419); - std::vector::_M_move_assign((void ***)v1344, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1105 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1105); - zcc::shared_ptr::shared_ptr(&v1410, (int)v1105); - v1106 = v1410; - std::string::basic_string((void **)&v1419, ">"); - std::string::_M_assign(v1106 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v1107 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1107); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1107); - v1108 = v1412; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v1108 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1109 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1109); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1109); - v1110 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1110 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v462 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v462 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - v463 = operator new(8u); - *v463 = &off_519A44; - v463[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v463); - v1419[1] = 32; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1344, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 24; - v465 = std::map>>::operator[]((_DWORD *)a1, v464); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v465, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 24; - v466 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1345 = std::map>::operator[](v466, &v1419); - std::vector::_M_move_assign((void ***)v1345, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v467 = operator new(8u); - *v467 = &off_519A44; - v467[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v467); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v1111 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1111); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1111); - v1112 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1112 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTORS"); - v468 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v468 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v469 = operator new(8u); - *v469 = &off_519A44; - v469[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v469); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1345, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 24; - v470 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1346 = std::map>::operator[](v470, &v1419); - std::vector::_M_move_assign((void ***)v1346, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v471 = operator new(8u); - *v471 = &off_519A44; - v471[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v471); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v1113 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1113); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1113); - v1114 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1114 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTORS"); - v472 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v472 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v473 = operator new(8u); - *v473 = &off_519A44; - v473[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v473); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1346, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 24; - v474 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1347 = std::map>::operator[](v474, &v1419); - std::vector::_M_move_assign((void ***)v1347, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v475 = operator new(8u); - *v475 = &off_519A44; - v475[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v475); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v1115 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1115); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1115); - v1116 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1116 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTORS"); - v476 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v476 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v477 = operator new(8u); - *v477 = &off_519A44; - v477[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v477); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1347, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 24; - v478 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1348 = std::map>::operator[](v478, &v1419); - std::vector::_M_move_assign((void ***)v1348, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v479 = operator new(8u); - *v479 = &off_519A44; - v479[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v479); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v1117 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1117); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1117); - v1118 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1118 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTORS"); - v480 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v480 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v481 = operator new(8u); - *v481 = &off_519A44; - v481[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v481); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1348, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 24; - v482 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1349 = std::map>::operator[](v482, &v1419); - std::vector::_M_move_assign((void ***)v1349, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v483 = operator new(8u); - *v483 = &off_519A44; - v483[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v483); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v1119 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1119); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1119); - v1120 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1120 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTORS"); - v484 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v484 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v485 = operator new(8u); - *v485 = &off_519A44; - v485[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v485); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1349, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 24; - v486 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1350 = std::map>::operator[](v486, &v1419); - std::vector::_M_move_assign((void ***)v1350, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v487 = operator new(8u); - *v487 = &off_519A44; - v487[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v487); - *(_DWORD *)(v1412 + 4) = 23; - std::vector>::push_back((void **)&v1416, &v1412); - v1121 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1121); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1121); - v1122 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1122 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTORS"); - v488 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v488 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v489 = operator new(8u); - *v489 = &off_519A44; - v489[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v489); - v1419[1] = 11; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1350, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 25; - v491 = std::map>>::operator[]((_DWORD *)a1, v490); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v491, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 25; - v492 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1351 = std::map>::operator[](v492, &v1419); - std::vector::_M_move_assign((void ***)v1351, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v493 = operator new(8u); - *v493 = &off_519A44; - v493[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v493); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1351, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@charset"); - v1414 = 25; - v494 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1352 = std::map>::operator[](v494, &v1419); - std::vector::_M_move_assign((void ***)v1352, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v495 = operator new(8u); - *v495 = &off_519A44; - v495[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v495); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1352, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 25; - v496 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1353 = std::map>::operator[](v496, &v1419); - std::vector::_M_move_assign((void ***)v1353, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v497 = operator new(4u); - *v497 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v497); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1353, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 25; - v498 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1354 = std::map>::operator[](v498, &v1419); - std::vector::_M_move_assign((void ***)v1354, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v499 = operator new(8u); - *v499 = &off_519A44; - v499[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v499); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1354, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@media"); - v1414 = 25; - v500 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1355 = std::map>::operator[](v500, &v1419); - std::vector::_M_move_assign((void ***)v1355, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v501 = operator new(8u); - *v501 = &off_519A44; - v501[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v501); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1355, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@keyframes"); - v1414 = 25; - v502 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1356 = std::map>::operator[](v502, &v1419); - std::vector::_M_move_assign((void ***)v1356, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v503 = operator new(8u); - *v503 = &off_519A44; - v503[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v503); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1356, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@supports"); - v1414 = 25; - v504 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1357 = std::map>::operator[](v504, &v1419); - std::vector::_M_move_assign((void ***)v1357, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v505 = operator new(8u); - *v505 = &off_519A44; - v505[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v505); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1357, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@-webkit-keyframes"); - v1414 = 25; - v506 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1358 = std::map>::operator[](v506, &v1419); - std::vector::_M_move_assign((void ***)v1358, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v507 = operator new(8u); - *v507 = &off_519A44; - v507[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v507); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1358, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "@import"); - v1414 = 25; - v508 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1359 = std::map>::operator[](v508, &v1419); - std::vector::_M_move_assign((void ***)v1359, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v509 = operator new(8u); - *v509 = &off_519A44; - v509[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v509); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1359, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 25; - v510 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1360 = std::map>::operator[](v510, &v1419); - std::vector::_M_move_assign((void ***)v1360, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v511 = operator new(8u); - *v511 = &off_519A44; - v511[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v511); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1360, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 25; - v512 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1361 = std::map>::operator[](v512, &v1419); - std::vector::_M_move_assign((void ***)v1361, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v513 = operator new(8u); - *v513 = &off_519A44; - v513[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v513); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1361, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 25; - v514 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1362 = std::map>::operator[](v514, &v1419); - std::vector::_M_move_assign((void ***)v1362, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v515 = operator new(8u); - *v515 = &off_519A44; - v515[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v515); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1362, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 25; - v516 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1363 = std::map>::operator[](v516, &v1419); - std::vector::_M_move_assign((void ***)v1363, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v517 = operator new(8u); - *v517 = &off_519A44; - v517[1] = 0; - zcc::shared_ptr::shared_ptr(&v1416, (int)v517); - *(_DWORD *)(v1416 + 4) = 12; - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1363, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 26; - v519 = std::map>>::operator[]((_DWORD *)a1, v518); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v519, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 26; - v520 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1364 = std::map>::operator[](v520, &v1419); - std::vector::_M_move_assign((void ***)v1364, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v521 = operator new(4u); - *v521 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v521); - std::vector>::push_back((void **)&v1416, &v1412); - v1123 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1123); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1123); - v1124 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1124 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v522 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v522 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1364, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - v1414 = 26; - v523 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1365 = std::map>::operator[](v523, &v1419); - std::vector::_M_move_assign((void ***)v1365, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1125 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1125); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1125); - v1126 = v1412; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - std::string::_M_assign(v1126 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1127 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1127); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1127); - v1128 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1128 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v524 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v524 + 32) = 4; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1365, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); - v1414 = 26; - v525 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1366 = std::map>::operator[](v525, &v1419); - std::vector::_M_move_assign((void ***)v1366, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v526 = operator new(4u); - *v526 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v526); - std::vector>::push_back((void **)&v1416, &v1412); - v1129 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1129); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1129); - v1130 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1130 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v527 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v527 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1366, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 26; - v528 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1367 = std::map>::operator[](v528, &v1419); - std::vector::_M_move_assign((void ***)v1367, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v529 = operator new(4u); - *v529 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v529); - std::vector>::push_back((void **)&v1416, &v1412); - v1131 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1131); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1131); - v1132 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1132 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v530 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v530 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1367, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 27; - v532 = std::map>>::operator[]((_DWORD *)a1, v531); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v532, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 27; - v533 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1368 = std::map>::operator[](v533, &v1419); - std::vector::_M_move_assign((void ***)v1368, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v534 = operator new(4u); - *v534 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v534); - std::vector>::push_back((void **)&v1416, &v1412); - v1133 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1133); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1133); - v1134 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1134 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v535 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v535 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1368, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 27; - v536 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1369 = std::map>::operator[](v536, &v1419); - std::vector::_M_move_assign((void ***)v1369, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v537 = operator new(4u); - *v537 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v537); - std::vector>::push_back((void **)&v1416, &v1412); - v1135 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1135); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1135); - v1136 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1136 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v538 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v538 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1369, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ")"); - v1414 = 27; - v539 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1370 = std::map>::operator[](v539, &v1419); - std::vector::_M_move_assign((void ***)v1370, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v540 = operator new(4u); - *v540 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v540); - std::vector>::push_back((void **)&v1416, &v1412); - v1137 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1137); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1137); - v1138 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1138 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v541 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v541 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1370, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 27; - v542 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1371 = std::map>::operator[](v542, &v1419); - std::vector::_M_move_assign((void ***)v1371, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v543 = operator new(4u); - *v543 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v543); - std::vector>::push_back((void **)&v1416, &v1412); - v1139 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1139); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1139); - v1140 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1140 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v544 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v544 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1371, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ","); - v1414 = 27; - v545 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1372 = std::map>::operator[](v545, &v1419); - std::vector::_M_move_assign((void ***)v1372, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v546 = operator new(4u); - *v546 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v546); - std::vector>::push_back((void **)&v1416, &v1412); - v1141 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1141); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1141); - v1142 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1142 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v547 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v547 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1372, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 27; - v548 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1373 = std::map>::operator[](v548, &v1419); - std::vector::_M_move_assign((void ***)v1373, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v549 = operator new(4u); - *v549 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v549); - std::vector>::push_back((void **)&v1416, &v1412); - v1143 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1143); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1143); - v1144 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1144 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v550 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v550 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1373, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "~"); - v1414 = 27; - v551 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1374 = std::map>::operator[](v551, &v1419); - std::vector::_M_move_assign((void ***)v1374, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1145 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1145); - zcc::shared_ptr::shared_ptr(&v1410, (int)v1145); - v1146 = v1410; - std::string::basic_string((void **)&v1419, "~"); - std::string::_M_assign(v1146 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v1147 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1147); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1147); - v1148 = v1412; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v1148 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1149 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1149); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1149); - v1150 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1150 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v552 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v552 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1374, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - v1414 = 27; - v553 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1375 = std::map>::operator[](v553, &v1419); - std::vector::_M_move_assign((void ***)v1375, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v554 = operator new(4u); - *v554 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v554); - std::vector>::push_back((void **)&v1416, &v1412); - v1151 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1151); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1151); - v1152 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1152 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v555 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v555 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1375, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 27; - v556 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1376 = std::map>::operator[](v556, &v1419); - std::vector::_M_move_assign((void ***)v1376, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v557 = operator new(4u); - *v557 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v557); - std::vector>::push_back((void **)&v1416, &v1412); - v1153 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1153); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1153); - v1154 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1154 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v558 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v558 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1376, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 27; - v559 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1377 = std::map>::operator[](v559, &v1419); - std::vector::_M_move_assign((void ***)v1377, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v560 = operator new(4u); - *v560 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v560); - std::vector>::push_back((void **)&v1416, &v1412); - v1155 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1155); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1155); - v1156 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1156 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v561 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v561 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1377, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 27; - v562 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1378 = std::map>::operator[](v562, &v1419); - std::vector::_M_move_assign((void ***)v1378, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v563 = operator new(4u); - *v563 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1412, (int)v563); - std::vector>::push_back((void **)&v1416, &v1412); - v1157 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1157); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1157); - v1158 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1158 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v564 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v564 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1378, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 28; - v566 = std::map>>::operator[]((_DWORD *)a1, v565); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v566, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "]"); - v1414 = 28; - v567 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1379 = std::map>::operator[](v567, &v1419); - std::vector::_M_move_assign((void ***)v1379, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1159 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1159); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1159); - v1160 = v1412; - std::string::basic_string((void **)&v1419, "]"); - std::string::_M_assign(v1160 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1161 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1161); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1161); - v1162 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1162 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "U_SELECTOR"); - v568 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v568 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1379, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$$"); - v1414 = 28; - v569 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1380 = std::map>::operator[](v569, &v1419); - std::vector::_M_move_assign((void ***)v1380, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1163 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1163); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1163); - v1164 = v1412; - std::string::basic_string((void **)&v1419, "$$"); - std::string::_M_assign(v1164 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1165 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1165); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1165); - v1166 = v1414; - std::string::basic_string((void **)&v1419, (char *)off_50F7B4); - std::string::_M_assign(v1166 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v570 = operator new(8u); - *v570 = &off_519A44; - v570[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v570); - v1419[1] = 17; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1380, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F7EE); - v1414 = 28; - v571 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1381 = std::map>::operator[](v571, &v1419); - std::vector::_M_move_assign((void ***)v1381, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1167 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1167); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1167); - v1168 = v1412; - std::string::basic_string((void **)&v1419, (char *)off_50F7EE); - std::string::_M_assign(v1168 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1169 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1169); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1169); - v1170 = v1414; - std::string::basic_string((void **)&v1419, (char *)off_50F7B4); - std::string::_M_assign(v1170 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v572 = operator new(8u); - *v572 = &off_519A44; - v572[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v572); - v1419[1] = 19; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1381, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "~"); - v1414 = 28; - v573 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1382 = std::map>::operator[](v573, &v1419); - std::vector::_M_move_assign((void ***)v1382, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1171 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1171); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1171); - v1172 = v1414; - std::string::basic_string((void **)&v1419, "~"); - std::string::_M_assign(v1172 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v574 = operator new(8u); - *v574 = &off_519A44; - v574[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v574); - v1419[1] = 8; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1382, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F7B4); - v1414 = 28; - v575 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1383 = std::map>::operator[](v575, &v1419); - std::vector::_M_move_assign((void ***)v1383, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1173 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1173); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1173); - v1174 = v1414; - std::string::basic_string((void **)&v1419, (char *)off_50F7B4); - std::string::_M_assign(v1174 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v576 = operator new(8u); - *v576 = &off_519A44; - v576[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v576); - v1419[1] = 13; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1383, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&off_50F7EE[2]); - v1414 = 28; - v577 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1384 = std::map>::operator[](v577, &v1419); - std::vector::_M_move_assign((void ***)v1384, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1175 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1175); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1175); - v1176 = v1412; - std::string::basic_string((void **)&v1419, (char *)&off_50F7EE[2]); - std::string::_M_assign(v1176 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1177 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1177); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1177); - v1178 = v1414; - std::string::basic_string((void **)&v1419, (char *)off_50F7B4); - std::string::_M_assign(v1178 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v578 = operator new(8u); - *v578 = &off_519A44; - v578[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v578); - v1419[1] = 4; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1384, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "^"); - v1414 = 28; - v579 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1385 = std::map>::operator[](v579, &v1419); - std::vector::_M_move_assign((void ***)v1385, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1179 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1179); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1179); - v1180 = v1412; - std::string::basic_string((void **)&v1419, "^"); - std::string::_M_assign(v1180 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1181 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1181); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1181); - v1182 = v1414; - std::string::basic_string((void **)&v1419, (char *)off_50F7B4); - std::string::_M_assign(v1182 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v580 = operator new(8u); - *v580 = &off_519A44; - v580[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v580); - v1419[1] = 15; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1385, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 29; - v582 = std::map>>::operator[]((_DWORD *)a1, v581); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v582, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 29; - v583 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1386 = std::map>::operator[](v583, &v1419); - std::vector::_M_move_assign((void ***)v1386, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1183 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1183); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1183); - v1184 = v1412; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v1184 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1185 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1185); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1185); - v1186 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1186 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "EXPRESS"); - v584 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v584 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v585 = operator new(8u); - *v585 = &off_519A44; - v585[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v585); - v1419[1] = 7; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1386, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$VALUE"); - v1414 = 29; - v586 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1387 = std::map>::operator[](v586, &v1419); - std::vector::_M_move_assign((void ***)v1387, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1187 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1187); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1187); - v1188 = v1412; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v1188 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1189 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1189); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1189); - v1190 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1190 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "EXPRESS"); - v587 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v587 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v588 = operator new(8u); - *v588 = &off_519A44; - v588[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v588); - v1419[1] = 7; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1387, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 30; - v590 = std::map>>::operator[]((_DWORD *)a1, v589); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v590, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$VALUE"); - v1414 = 30; - v591 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1388 = std::map>::operator[](v591, &v1419); - std::vector::_M_move_assign((void ***)v1388, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1191 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1191); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1191); - v1192 = v1414; - std::string::basic_string((void **)&v1419, "$VALUE"); - std::string::_M_assign(v1192 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v592 = operator new(8u); - *v592 = &off_519A44; - v592[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v592); - v1419[1] = 26; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1388, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$ESV"); - v1414 = 30; - v593 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1389 = std::map>::operator[](v593, &v1419); - std::vector::_M_move_assign((void ***)v1389, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1193 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1193); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1193); - v1194 = v1414; - std::string::basic_string((void **)&v1419, "$ESV"); - std::string::_M_assign(v1194 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1414); - v594 = operator new(8u); - *v594 = &off_519A44; - v594[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v594); - v1419[1] = 9; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1389, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - v1414 = 30; - v595 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1390 = std::map>::operator[](v595, &v1419); - std::vector::_M_move_assign((void ***)v1390, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1195 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1195); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1195); - v1196 = v1412; - std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); - std::string::_M_assign(v1196 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1197 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1197); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1197); - v1198 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1198 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTR"); - v596 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v596 + 32) = 3; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1390, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 31; - v598 = std::map>>::operator[]((_DWORD *)a1, v597); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v598, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 31; - v599 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1391 = std::map>::operator[](v599, &v1419); - std::vector::_M_move_assign((void ***)v1391, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1199 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1199); - zcc::shared_ptr::shared_ptr(&v1410, (int)v1199); - v1200 = v1410; - std::string::basic_string((void **)&v1419, "$NAME"); - std::string::_M_assign(v1200 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1410); - v600 = operator new(8u); - *v600 = &off_519A44; - v600[1] = 0; - zcc::shared_ptr::shared_ptr(&v1412, (int)v600); - *(_DWORD *)(v1412 + 4) = 1; - std::vector>::push_back((void **)&v1416, &v1412); - v1201 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1201); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1201); - v1202 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1202 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "ATTRS"); - v601 = v1414; - *(_DWORD *)(v1414 + 28) = 0; - *(_DWORD *)(v601 + 32) = 1; - std::vector>::push_back((void **)&v1416, &v1414); - v602 = operator new(8u); - *v602 = &off_519A44; - v602[1] = 0; - zcc::shared_ptr::shared_ptr(&v1419, (int)v602); - v1419[1] = 6; - std::vector>::push_back((void **)&v1416, &v1419); - std::vector::push_back((int)v1391, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411); - std::vector>::~vector((void **)&v1416); - std::_Rb_tree_header::_Rb_tree_header(&v1420); - v1416 = 32; - v604 = std::map>>::operator[]((_DWORD *)a1, v603); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::operator=( - v604, - &v1419); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); - v1414 = 32; - v605 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1392 = std::map>::operator[](v605, &v1419); - std::vector::_M_move_assign((void ***)v1392, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v606 = operator new(4u); - *v606 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v606); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1392, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)off_50F6FF); - v1414 = 32; - v607 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1393 = std::map>::operator[](v607, &v1419); - std::vector::_M_move_assign((void ***)v1393, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v608 = operator new(4u); - *v608 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v608); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1393, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); - v1414 = 32; - v609 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1394 = std::map>::operator[](v609, &v1419); - std::vector::_M_move_assign((void ***)v1394, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v610 = operator new(4u); - *v610 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v610); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1394, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ","); - v1414 = 32; - v611 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1395 = std::map>::operator[](v611, &v1419); - std::vector::_M_move_assign((void ***)v1395, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - v1203 = operator new(0x78u); - WXSS::CSSTreeLib::Terminal::Terminal((int)v1203); - zcc::shared_ptr::shared_ptr(&v1412, (int)v1203); - v1204 = v1412; - std::string::basic_string((void **)&v1419, ","); - std::string::_M_assign(v1204 + 4, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::vector>::push_back((void **)&v1416, &v1412); - v1205 = operator new(0x3Cu); - WXSS::CSSTreeLib::Action::Action((int)v1205); - zcc::shared_ptr::shared_ptr(&v1414, (int)v1205); - v1206 = v1414; - std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); - std::string::_M_assign(v1206 + 36, (int)&v1419); - std::string::_M_dispose((void **)&v1419); - std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR"); - v612 = v1414; - *(_DWORD *)(v1414 + 28) = 2; - *(_DWORD *)(v612 + 32) = 2; - std::vector>::push_back((void **)&v1416, &v1414); - std::vector::push_back((int)v1395, &v1416); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413); - std::vector>::~vector((void **)&v1416); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "$NAME"); - v1414 = 32; - v613 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1396 = std::map>::operator[](v613, &v1419); - std::vector::_M_move_assign((void ***)v1396, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v614 = operator new(4u); - *v614 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v614); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1396, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&off_50F7B4[2]); - v1414 = 32; - v615 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1397 = std::map>::operator[](v615, &v1419); - std::vector::_M_move_assign((void ***)v1397, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v616 = operator new(4u); - *v616 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v616); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1397, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); - v1414 = 32; - v617 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1398 = std::map>::operator[](v617, &v1419); - std::vector::_M_move_assign((void ***)v1398, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v618 = operator new(4u); - *v618 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v618); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1398, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, "["); - v1414 = 32; - v619 = std::map>>::operator[]((_DWORD *)a1, &v1414); - v1399 = std::map>::operator[](v619, &v1419); - std::vector::_M_move_assign((void ***)v1399, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v620 = operator new(4u); - *v620 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v620); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)v1399, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - v1416 = 0; - v1417 = 0; - v1418 = 0; - std::string::basic_string((void **)&v1419, ">"); - v1414 = 32; - v621 = std::map>>::operator[]((_DWORD *)a1, &v1414); - lpuexcpta = std::map>::operator[](v621, &v1419); - std::vector::_M_move_assign((void ***)lpuexcpta, (void ***)&v1416); - std::string::_M_dispose((void **)&v1419); - std::vector::~vector((void ***)&v1416); - v1419 = 0; - v1420 = 0; - v1421 = 0; - v622 = operator new(4u); - *v622 = &off_519B18; - zcc::shared_ptr::shared_ptr(&v1416, (int)v622); - std::vector>::push_back((void **)&v1419, &v1416); - std::vector::push_back((int)lpuexcpta, &v1419); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417); - std::vector>::~vector((void **)&v1419); - } -} -// 40B360: variable 'v1' is possibly undefined -// 40BC87: variable 'v16' is possibly undefined -// 40C9B2: variable 'v30' is possibly undefined -// 40E537: variable 'v84' is possibly undefined -// 40EAC6: variable 'v90' is possibly undefined -// 40FD89: variable 'v108' is possibly undefined -// 4101E5: variable 'v118' is possibly undefined -// 41071D: variable 'v127' is possibly undefined -// 410E53: variable 'v135' is possibly undefined -// 4115D3: variable 'v148' is possibly undefined -// 4117BB: variable 'v152' is possibly undefined -// 41269E: variable 'v182' is possibly undefined -// 415427: variable 'v242' is possibly undefined -// 4159B6: variable 'v248' is possibly undefined -// 417AC7: variable 'v284' is possibly undefined -// 418056: variable 'v290' is possibly undefined -// 4185E5: variable 'v296' is possibly undefined -// 418B74: variable 'v302' is possibly undefined -// 419FF0: variable 'v337' is possibly undefined -// 41A57F: variable 'v343' is possibly undefined -// 41BFFD: variable 'v389' is possibly undefined -// 41DA7B: variable 'v435' is possibly undefined -// 41E0CE: variable 'v444' is possibly undefined -// 41EFD9: variable 'v464' is possibly undefined -// 41FCBC: variable 'v490' is possibly undefined -// 420AC9: variable 'v518' is possibly undefined -// 421249: variable 'v531' is possibly undefined -// 422675: variable 'v565' is possibly undefined -// 423509: variable 'v581' is possibly undefined -// 423A0C: variable 'v589' is possibly undefined -// 423FAC: variable 'v597' is possibly undefined -// 42429E: variable 'v603' is possibly undefined -// 519A44: using guessed type void (__cdecl *off_519A44)(WXSS::CSSTreeLib::NonTerminal *__hidden this); -// 519B18: using guessed type void (__cdecl *off_519B18)(WXSS::CSSTreeLib::EPS *__hidden this); - -//----- (0042A1F0) -------------------------------------------------------- -_DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4) -{ - int v5; // ebx - _DWORD *v6; // ecx - _DWORD *result; // eax - - switch ( a2 ) - { - case 0: - case 5: - case 6: - case 7: - case 8: - case 24: - case 39: - case 44: - case 50: - case 51: - case 65: - case 66: - case 70: - case 71: - case 72: - return 0; - case 1: - case 2: - case 3: - case 4: - case 11: - case 33: - case 43: - case 45: - case 55: - case 56: - case 57: - case 58: - case 59: - case 61: - case 62: - case 64: - case 76: - case 78: - if ( a3 ) - goto LABEL_3; - return 0; - case 9: - case 10: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 34: - case 35: - case 36: - case 37: - case 38: - case 40: - case 48: - case 52: - case 53: - case 54: - case 60: - case 63: - case 67: - case 68: - case 69: - case 73: - case 74: - case 75: - if ( !a3 ) - return 0; - goto LABEL_4; - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 41: - case 46: - case 47: - case 77: - case 79: - case 80: - goto LABEL_4; - case 42: - case 49: -LABEL_3: - if ( !a4 ) - return 0; -LABEL_4: - v5 = a1[5]; - if ( v5 >= a1[6] ) - return 0; - v6 = (_DWORD *)(a1[4] + 20 * v5); - v6[1] = 0; - v6[2] = 0; - a1[5] = v5 + 1; - *v6 = a2; - v6[4] = a4; - result = v6; - v6[3] = a3; - return result; - default: - return 0; - } -} - -//----- (0042A270) -------------------------------------------------------- -_DWORD *__usercall d_make_name@(_DWORD *a1@, int a2@, int a3@) -{ - int v4; // ecx - _DWORD *v6; // edx - _DWORD *result; // eax - - v4 = a1[5]; - if ( v4 >= a1[6] ) - return 0; - v6 = (_DWORD *)(a1[4] + 20 * v4); - v6[1] = 0; - v6[2] = 0; - a1[5] = v4 + 1; - if ( !a2 || a3 <= 0 ) - return 0; - v6[1] = 0; - result = v6; - v6[2] = 0; - *v6 = 0; - v6[3] = a2; - v6[4] = a3; - return result; -} - -//----- (0042A2D0) -------------------------------------------------------- -int __usercall d_number@(int a1@) -{ - char *v1; // ebx - char v2; // cl - _BYTE *v3; // ebx - signed int v4; // esi - int v5; // ecx - int v7; // [esp+0h] [ebp-14h] - - v1 = *(char **)(a1 + 12); - v2 = *v1; - if ( *v1 != 110 ) - { - if ( (unsigned __int8)(v2 - 48) <= 9u ) - { - v7 = 0; - goto LABEL_4; - } - return 0; - } - *(_DWORD *)(a1 + 12) = v1 + 1; - v2 = v1[1]; - if ( (unsigned __int8)(v2 - 48) > 9u ) - return 0; - v7 = 1; - ++v1; -LABEL_4: - v3 = v1 + 1; - v4 = 0; - v5 = (char)(v2 - 48); - while ( 1 ) - { - *(_DWORD *)(a1 + 12) = v3; - v4 = v5 + 10 * v4; - LOBYTE(v5) = *v3 - 48; - if ( (unsigned __int8)v5 > 9u ) - break; - v5 = (char)v5; - ++v3; - if ( (int)((0x7FFFFFFF - (char)v5) / 0xAu) < v4 ) - return -1; - } - if ( v7 ) - return -v4; - return v4; -} - -//----- (0042A3A0) -------------------------------------------------------- -int __usercall d_call_offset@(int a1@, int a2@) -{ - _BYTE *v3; // eax - _BYTE *v4; // eax - _BYTE *v6; // eax - - if ( !a2 ) - { - v3 = *(_BYTE **)(a1 + 12); - if ( !*v3 ) - return 0; - *(_DWORD *)(a1 + 12) = v3 + 1; - a2 = (char)*v3; - } - if ( a2 != 104 ) - { - if ( a2 != 118 ) - return 0; - d_number(a1); - v4 = *(_BYTE **)(a1 + 12); - if ( *v4 != 95 ) - return 0; - *(_DWORD *)(a1 + 12) = v4 + 1; - } - d_number(a1); - v6 = *(_BYTE **)(a1 + 12); - if ( *v6 != 95 ) - return 0; - *(_DWORD *)(a1 + 12) = v6 + 1; - return 1; -} - -//----- (0042A400) -------------------------------------------------------- -_DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@) -{ - _DWORD *result; // eax - char *v4; // edx - char v5; // cl - int v6; // ebp - int v7; // esi - int v8; // edi - - result = a2; - v4 = (char *)a1[3]; - v5 = *v4; - if ( *v4 == 82 || v5 == 79 ) - { - v6 = a1[11]; - v7 = 32; - v8 = v6 + 3; - if ( v5 == 82 ) - { - v8 = v6 + 2; - v7 = 31; - } - a1[11] = v8; - a1[3] = v4 + 1; - return d_make_comp(a1, v7, (int)result, 0); - } - return result; -} - -//----- (0042A470) -------------------------------------------------------- -int __usercall d_discriminator@(int a1@) -{ - _BYTE *v2; // eax - int v3; // edx - int result; // eax - int v5; // eax - _BYTE *v6; // edx - - v2 = *(_BYTE **)(a1 + 12); - if ( *v2 != 95 ) - return 1; - *(_DWORD *)(a1 + 12) = v2 + 1; - if ( v2[1] != 95 ) - { - v3 = d_number(a1); - result = 0; - if ( v3 < 0 ) - return result; - return 1; - } - *(_DWORD *)(a1 + 12) = v2 + 2; - v5 = d_number(a1); - if ( v5 < 0 ) - return 0; - if ( v5 <= 9 ) - return 1; - v6 = *(_BYTE **)(a1 + 12); - result = 0; - if ( *v6 == 95 ) - { - *(_DWORD *)(a1 + 12) = v6 + 1; - return 1; - } - return result; -} - -//----- (0042A4D0) -------------------------------------------------------- -int __usercall d_count_templates_scopes@(int result@, int *a2@, int a3@) -{ - _DWORD *v3; // esi - int *v4; // ebx - int v5; // edx - int *v6; // eax - int v7; // ecx - - if ( a2 ) - { - v3 = (_DWORD *)result; - v4 = a2; - while ( 2 ) - { - result = v4[2]; - if ( result <= 1 ) - { - v5 = v3[71]; - if ( v5 <= 1024 ) - { - v4[2] = result + 1; - result = *v4; - switch ( *v4 ) - { - case 1: - case 2: - case 3: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 37: - case 38: - case 40: - case 41: - case 42: - case 43: - case 45: - case 46: - case 47: - case 48: - case 49: - case 52: - case 53: - case 54: - case 55: - case 56: - case 57: - case 58: - case 59: - case 60: - case 61: - case 62: - case 63: - case 64: - case 67: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - case 80: - goto LABEL_11; - case 4: - ++v3[81]; -LABEL_11: - v6 = (int *)v4[3]; - goto LABEL_12; - case 7: - case 8: - case 51: - v4 = (int *)v4[4]; - goto LABEL_7; - case 35: - case 36: - v6 = (int *)v4[3]; - if ( *v6 == 5 ) - ++v3[78]; -LABEL_12: - v3[71] = v5 + 1; - d_count_templates_scopes((int)v3, v6, a3); - result = d_count_templates_scopes((int)v3, (int *)v4[4], v7); - --v3[71]; - return result; - case 44: - case 68: - case 69: - case 70: - case 71: - v4 = (int *)v4[3]; -LABEL_7: - if ( !v4 ) - return result; - continue; - default: - return result; - } - } - } - break; - } - } - return result; -} -// 42A54A: variable 'v7' is possibly undefined - -//----- (0042A580) -------------------------------------------------------- -_DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@) -{ - if ( result ) - { - while ( *result == 47 ) - { - if ( a2 <= 0 ) - { - if ( a2 ) - return 0; - return (_DWORD *)result[3]; - } - result = (_DWORD *)result[4]; - --a2; - if ( !result ) - return result; - } - } - return 0; -} - -//----- (0042A5D0) -------------------------------------------------------- -void __cdecl d_growable_string_callback_adapter(void *Src, size_t Size, int a3) -{ - size_t v3; // ebx - int v4; // edx - size_t v5; // eax - void *v6; // eax - - v3 = *(_DWORD *)(a3 + 8); - v4 = *(_DWORD *)(a3 + 12); - v5 = Size + *(_DWORD *)(a3 + 4) + 1; - if ( v5 > v3 ) - { - if ( v4 ) - return; - if ( v3 || (v3 = 2, v5 > 2) ) - { - do - v3 *= 2; - while ( v5 > v3 ); - } - v6 = realloc(*(void **)a3, v3); - if ( !v6 ) - { - free(*(void **)a3); - *(_DWORD *)a3 = 0; - *(_DWORD *)(a3 + 4) = 0; - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 12) = 1; - return; - } - *(_DWORD *)a3 = v6; - v4 = *(_DWORD *)(a3 + 12); - *(_DWORD *)(a3 + 8) = v3; - } - if ( !v4 ) - { - memcpy((void *)(*(_DWORD *)a3 + *(_DWORD *)(a3 + 4)), Src, Size); - *(_BYTE *)(*(_DWORD *)(a3 + 4) + Size + *(_DWORD *)a3) = 0; - *(_DWORD *)(a3 + 4) += Size; - } -} - -//----- (0042A690) -------------------------------------------------------- -int sprintf_constprop_0(FILE *a1, int a2, ...) -{ - va_list va; // [esp+28h] [ebp+Ch] BYREF - - va_start(va, a2); - return __mingw_vsprintf(a1, "%d", (int *)va); -} - -//----- (0042A6C0) -------------------------------------------------------- -BOOL __usercall next_is_type_qual_isra_0@(char *a1@) -{ - char v2; // al - - v2 = *a1; - if ( v2 == 86 || v2 == 114 || v2 == 75 ) - return 1; - if ( v2 == 68 ) - return (a1[1] & 0xDF) == 79 || (unsigned __int8)(a1[1] - 119) <= 1u; - return 0; -} - -//----- (0042A720) -------------------------------------------------------- -int __usercall d_append_char@(int a1@, char a2@
) -{ - int result; // eax - int v4; // ecx - int v5; // eax - char v6; // [esp+1Ch] [ebp-10h] - - result = *(_DWORD *)(a1 + 256); - if ( result == 255 ) - { - v5 = *(_DWORD *)(a1 + 268); - v6 = a2; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v5); - ++*(_DWORD *)(a1 + 296); - a2 = v6; - result = 0; - v4 = 1; - } - else - { - v4 = result + 1; - } - *(_DWORD *)(a1 + 256) = v4; - *(_BYTE *)(a1 + result) = a2; - *(_BYTE *)(a1 + 260) = a2; - return result; -} - -//----- (0042A790) -------------------------------------------------------- -_DWORD *__usercall d_lookup_template_argument@(int a1@, int a2@) -{ - _DWORD *result; // eax - int v4; // edx - - result = *(_DWORD **)(a1 + 272); - if ( result ) - { - v4 = *(_DWORD *)(a2 + 12); - result = *(_DWORD **)(result[1] + 16); - if ( v4 >= 0 && result ) - { - while ( 1 ) - { - if ( *result != 47 ) - return 0; - if ( !v4 ) - break; - result = (_DWORD *)result[4]; - --v4; - if ( !result ) - return result; - } - return (_DWORD *)result[3]; - } - } - else - { - *(_DWORD *)(a1 + 280) = 1; - } - return result; -} - -//----- (0042A7F0) -------------------------------------------------------- -size_t __usercall d_append_string@(int a1@, const char *Str@) -{ - const char *v3; // ebx - size_t result; // eax - size_t v5; // edi - const char *v6; // edi - size_t v7; // ecx - char v8; // dl - int v9; // eax - char v10; // [esp+1Fh] [ebp-Dh] - - v3 = Str; - result = strlen(Str); - if ( result ) - { - v5 = result; - result = *(_DWORD *)(a1 + 256); - v6 = &v3[v5]; - do - { - v8 = *v3; - if ( result == 255 ) - { - v9 = *(_DWORD *)(a1 + 268); - v10 = *v3; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); - ++*(_DWORD *)(a1 + 296); - v8 = v10; - v7 = 0; - result = 1; - } - else - { - v7 = result++; - } - ++v3; - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v7) = v8; - *(_BYTE *)(a1 + 260) = v8; - } - while ( v6 != v3 ); - } - return result; -} - -//----- (0042A890) -------------------------------------------------------- -_DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@) -{ - _DWORD *v4; // ebx - _DWORD *result; // eax - int v6; // edx - - if ( !a2 ) - return 0; - v4 = a2; - while ( 2 ) - { - switch ( *v4 ) - { - case 0: - case 6: - case 0x18: - case 0x27: - case 0x2C: - case 0x32: - case 0x41: - case 0x42: - case 0x46: - case 0x47: - case 0x48: - case 0x4B: - case 0x4C: - return 0; - case 5: - result = *(_DWORD **)(a1 + 272); - if ( result ) - { - v6 = v4[3]; - result = *(_DWORD **)(result[1] + 16); - if ( v6 >= 0 ) - { - if ( !result ) - return 0; - while ( 1 ) - { - if ( *result != 47 ) - return 0; - if ( !v6 ) - break; - result = (_DWORD *)result[4]; - --v6; - if ( !result ) - return 0; - } - result = (_DWORD *)result[3]; - } - if ( !result || *result != 47 ) - return 0; - } - else - { - *(_DWORD *)(a1 + 280) = 1; - } - break; - case 7: - case 8: - case 0x33: - goto LABEL_10; - default: - result = d_find_pack(a1, (_DWORD *)v4[3], a3); - if ( result ) - return result; -LABEL_10: - v4 = (_DWORD *)v4[4]; - if ( !v4 ) - return 0; - continue; - } - return result; - } -} -// 42A8CD: variable 'a3' is possibly undefined - -//----- (0042A930) -------------------------------------------------------- -_DWORD *__usercall d_template_param@(_DWORD *a1@) -{ - _BYTE *v2; // eax - char v3; // dl - int v4; // ecx - _BYTE *v5; // eax - int v6; // edx - _DWORD *result; // eax - - v2 = (_BYTE *)a1[3]; - if ( *v2 != 84 ) - return 0; - a1[3] = v2 + 1; - v3 = v2[1]; - if ( v3 == 95 ) - { - v4 = 0; - a1[3] = v2 + 2; - } - else - { - if ( v3 == 110 ) - return 0; - v4 = d_number((int)a1) + 1; - if ( v4 < 0 ) - return 0; - v5 = (_BYTE *)a1[3]; - if ( *v5 != 95 ) - return 0; - a1[3] = v5 + 1; - } - v6 = a1[5]; - if ( v6 < a1[6] ) - { - result = (_DWORD *)(a1[4] + 20 * v6); - result[1] = 0; - result[2] = 0; - a1[5] = v6 + 1; - *result = 5; - result[3] = v4; - return result; - } - return 0; -} - -//----- (0042A9C0) -------------------------------------------------------- -size_t __usercall d_append_num@(int a1@, int a2@) -{ - FILE *p_Str; // ebx - size_t result; // eax - size_t v5; // edi - FILE *v6; // edi - size_t v7; // ecx - char ptr; // dl - int v9; // eax - char v10; // [esp+1Fh] [ebp-2Dh] - FILE Str; // [esp+27h] [ebp-25h] BYREF - - p_Str = &Str; - sprintf_constprop_0(&Str, (int)"%d", a2); - result = strlen((const char *)&Str); - if ( result ) - { - v5 = result; - result = *(_DWORD *)(a1 + 256); - v6 = (FILE *)((char *)&Str + v5); - do - { - ptr = (char)p_Str->_ptr; - if ( result == 255 ) - { - v9 = *(_DWORD *)(a1 + 268); - v10 = (char)p_Str->_ptr; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); - ++*(_DWORD *)(a1 + 296); - ptr = v10; - v7 = 0; - result = 1; - } - else - { - v7 = result++; - } - p_Str = (FILE *)((char *)p_Str + 1); - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v7) = ptr; - *(_BYTE *)(a1 + 260) = ptr; - } - while ( v6 != p_Str ); - } - return result; -} -// 42A9C0: using guessed type FILE var_25; - -//----- (0042AA70) -------------------------------------------------------- -_DWORD *__usercall d_source_name@(int a1@) -{ - int v2; // eax - int v3; // ebp - int v4; // ecx - _BYTE *v5; // eax - _DWORD *result; // eax - int v7; // edx - int v8; // eax - char v9; // [esp+3h] [ebp-11h] - - v2 = d_number(a1); - if ( v2 > 0 ) - { - v3 = *(_DWORD *)(a1 + 12); - v4 = v2; - if ( v2 > *(_DWORD *)(a1 + 4) - v3 ) - goto LABEL_18; - v5 = (_BYTE *)(v3 + v2); - *(_DWORD *)(a1 + 12) = v3 + v4; - if ( (*(_BYTE *)(a1 + 8) & 4) != 0 && *v5 == 36 ) - { - *(_DWORD *)(a1 + 12) = v5 + 1; - if ( v4 <= 9 ) - goto LABEL_7; - } - else if ( v4 <= 9 ) - { - goto LABEL_7; - } - if ( *(_DWORD *)v3 == 1330399071 && *(_DWORD *)(v3 + 4) == 1598832962 ) - { - v9 = *(_BYTE *)(v3 + 8); - if ( (v9 == 95 || v9 == 46 || v9 == 36) && *(_BYTE *)(v3 + 9) == 78 ) - { - v7 = *(_DWORD *)(a1 + 20); - *(_DWORD *)(a1 + 44) = *(_DWORD *)(a1 + 44) + 22 - v4; - if ( v7 < *(_DWORD *)(a1 + 24) ) - { - v8 = *(_DWORD *)(a1 + 16); - *(_DWORD *)(a1 + 20) = v7 + 1; - result = (_DWORD *)(v8 + 20 * v7); - result[1] = 0; - result[2] = 0; - *result = 0; - result[3] = "(anonymous namespace)"; - result[4] = 21; - goto LABEL_8; - } -LABEL_18: - result = 0; - goto LABEL_8; - } - } -LABEL_7: - result = d_make_name((_DWORD *)a1, v3, v4); -LABEL_8: - *(_DWORD *)(a1 + 40) = result; - return result; - } - return 0; -} - -//----- (0042AB80) -------------------------------------------------------- -_DWORD *__usercall d_substitution@(int a1@, char a2@
) -{ - _BYTE *v3; // eax - int v5; // edx - BOOL v6; // eax - char v7; // cl - const char *v8; // eax - _DWORD *comp; // esi - unsigned int v11; // eax - unsigned int i; // ecx - char *v13; // eax - unsigned int v14; // ecx - int v15; // esi - int v16; // edx - int v17; // ebp - int v18; // edi - _DWORD *v19; // edi - int v20; // ecx - int v21; // eax - _BYTE *v22; // eax - int v23; // edi - _DWORD *v24; // eax - int v25; // eax - BOOL v26; // [esp+4h] [ebp-18h] - int v27; // [esp+8h] [ebp-14h] - - v3 = *(_BYTE **)(a1 + 12); - if ( *v3 != 83 ) - return 0; - *(_DWORD *)(a1 + 12) = v3 + 1; - LOBYTE(v5) = v3[1]; - if ( !(_BYTE)v5 ) - { -LABEL_3: - v26 = (*(_BYTE *)(a1 + 8) & 8) != 0; - if ( (*(_BYTE *)(a1 + 8) & 8) == 0 && (a2 & 1) != 0 ) - { - v6 = 1; - if ( (unsigned __int8)(**(_BYTE **)(a1 + 12) - 67) > 1u ) - v6 = (*(_BYTE *)(a1 + 8) & 8) != 0; - v26 = v6; - } - v7 = 116; - v8 = "t"; - while ( (_BYTE)v5 != v7 ) - { - v8 += 28; - if ( v8 == (const char *)&unk_5137C4 ) - return 0; - v7 = *v8; - } - v15 = *((_DWORD *)v8 + 5); - v16 = *(_DWORD *)(a1 + 20); - v17 = *(_DWORD *)(a1 + 24); - if ( v15 ) - { - v27 = *((_DWORD *)v8 + 6); - if ( v16 >= v17 ) - { - v19 = 0; - } - else - { - v18 = 5 * v16++; - v19 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 4 * v18); - v19[1] = 0; - v19[2] = 0; - *(_DWORD *)(a1 + 20) = v16; - *v19 = 24; - v19[3] = v15; - v19[4] = v27; - } - *(_DWORD *)(a1 + 40) = v19; - } - if ( v26 ) - { - v20 = *((_DWORD *)v8 + 3); - v21 = *((_DWORD *)v8 + 4); - } - else - { - v20 = *((_DWORD *)v8 + 1); - v21 = *((_DWORD *)v8 + 2); - } - *(_DWORD *)(a1 + 44) += v21; - if ( v16 >= v17 ) - { - comp = 0; - } - else - { - comp = (_DWORD *)(*(_DWORD *)(a1 + 16) + 20 * v16); - comp[1] = 0; - comp[2] = 0; - *(_DWORD *)(a1 + 20) = v16 + 1; - *comp = 24; - comp[3] = v20; - comp[4] = v21; - } - v22 = *(_BYTE **)(a1 + 12); - if ( *v22 != 66 ) - return comp; - v23 = *(_DWORD *)(a1 + 40); - do - { - *(_DWORD *)(a1 + 12) = v22 + 1; - v24 = d_source_name(a1); - comp = d_make_comp((_DWORD *)a1, 76, (int)comp, (int)v24); - v22 = *(_BYTE **)(a1 + 12); - } - while ( *v22 == 66 ); - *(_DWORD *)(a1 + 40) = v23; - if ( comp ) - { - v25 = *(_DWORD *)(a1 + 32); - if ( v25 < *(_DWORD *)(a1 + 36) ) - { - *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v25) = comp; - *(_DWORD *)(a1 + 32) = v25 + 1; - return comp; - } - } - return 0; - } - *(_DWORD *)(a1 + 12) = v3 + 2; - v5 = (char)v3[1]; - if ( (unsigned __int8)(v5 - 48) > 9u ) - { - if ( (_BYTE)v5 != 95 ) - { - if ( (unsigned __int8)(v5 - 65) > 0x19u ) - goto LABEL_3; -LABEL_16: - v11 = 0; - if ( (unsigned __int8)(v5 - 48) > 9u ) - goto LABEL_22; -LABEL_17: - for ( i = v5 + 36 * v11 - 48; v11 <= i; i = v5 + 36 * v11 - 55 ) - { - v13 = *(char **)(a1 + 12); - v5 = *v13; - if ( (_BYTE)v5 ) - { - *(_DWORD *)(a1 + 12) = v13 + 1; - v5 = *v13; - if ( (_BYTE)v5 == 95 ) - { - v14 = i + 1; - goto LABEL_26; - } - } - v11 = i; - if ( (unsigned __int8)(v5 - 48) <= 9u ) - goto LABEL_17; -LABEL_22: - if ( (unsigned __int8)(v5 - 65) > 0x19u ) - return 0; - } - return 0; - } - } - else if ( (_BYTE)v5 != 95 ) - { - goto LABEL_16; - } - v14 = 0; -LABEL_26: - if ( *(_DWORD *)(a1 + 32) <= v14 ) - return 0; - return *(_DWORD **)(*(_DWORD *)(a1 + 28) + 4 * v14); -} - -//----- (0042ADC0) -------------------------------------------------------- -int __usercall d_print_java_identifier@(int result@, char *a2@, int a3@) -{ - unsigned int v3; // edi - int v4; // ebx - char *i; // ebp - int v6; // ecx - char v7; // dl - unsigned int v8; // esi - _BYTE *v9; // ebx - int v10; // eax - char v11; // cl - int v12; // eax - _BYTE *v13; // esi - int v14; // eax - int v15; // [esp+14h] [ebp-28h] - char v16; // [esp+14h] [ebp-28h] - unsigned int v17; // [esp+14h] [ebp-28h] - int v18; // [esp+18h] [ebp-24h] - char *v19; // [esp+1Ch] [ebp-20h] - - v3 = (unsigned int)&a2[a3]; - if ( a2 < &a2[a3] ) - { - v4 = result; - for ( i = a2; v3 > (unsigned int)i; ++i ) - { - v7 = *i; - result = *(_DWORD *)(v4 + 256); - if ( (int)(v3 - (_DWORD)i) <= 3 || v7 != 95 || i[1] != 95 || i[2] != 85 || v3 <= (unsigned int)(i + 3) ) - { -LABEL_3: - if ( result == 255 ) - { - v12 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v16 = v7; - (*(void (__cdecl **)(int, int, int))(v4 + 264))(v4, 255, v12); - ++*(_DWORD *)(v4 + 296); - v7 = v16; - result = 0; - v6 = 1; - } - else - { - v6 = result + 1; - } - *(_DWORD *)(v4 + 256) = v6; - *(_BYTE *)(v4 + result) = v7; - *(_BYTE *)(v4 + 260) = v7; - continue; - } - v18 = v4; - v8 = 0; - v9 = i + 3; - v15 = result; - while ( 1 ) - { - v11 = *v9; - LOBYTE(v10) = *v9 - 48; - if ( (unsigned __int8)v10 <= 9u ) - { - v10 = (char)v10; - goto LABEL_15; - } - if ( (unsigned __int8)(v11 - 65) > 5u ) - break; - v10 = (char)(v11 - 55); -LABEL_15: - ++v9; - v8 = v10 + 16 * v8; - if ( (_BYTE *)v3 == v9 ) - { - result = v15; - v4 = v18; - goto LABEL_3; - } - } - if ( (unsigned __int8)(v11 - 97) <= 5u ) - { - v10 = (char)(v11 - 87); - goto LABEL_15; - } - result = v15; - v17 = v8; - v13 = v9; - v19 = v9; - v4 = v18; - if ( v3 <= (unsigned int)v13 || v17 > 0xFF || v11 != 95 ) - goto LABEL_3; - if ( result == 255 ) - { - v14 = *(_DWORD *)(v18 + 268); - *(_BYTE *)(v18 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(v18 + 264))(v18, 255, v14); - ++*(_DWORD *)(v18 + 296); - result = 0; - } - i = v19; - *(_DWORD *)(v18 + 256) = result + 1; - *(_BYTE *)(v18 + result) = v17; - *(_BYTE *)(v18 + 260) = v17; - } - } - return result; -} - -//----- (0042AF70) -------------------------------------------------------- -int *__usercall d_type@( - _DWORD *a1@, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - int a10, - int a11, - int a12) -{ - char *v13; // esi - int v14; // edi - unsigned int *v15; // eax - unsigned int *name; // esi - int *result; // eax - int **v18; // esi - int *v19; // eax - int *v20; // edx - int *v21; // ecx - int v22; // edx - int v23; // edx - int v24; // ecx - int v25; // edx - int v26; // edx - char v27; // al - _BYTE *v28; // edx - int *v29; // eax - int *v30; // eax - int *v31; // eax - int *v32; // eax - _DWORD *v33; // eax - int *v34; // eax - int *comp; // esi - _BYTE *v36; // eax - int *v37; // eax - _BYTE *v38; // esi - int v39; // ecx - _DWORD *v40; // ecx - _BYTE *v41; // edx - char v42; // al - char *v43; // esi - char *v44; // ecx - int *v45; // eax - int *v46; // esi - int *v47; // eax - int v48; // esi - unsigned int *v49; // eax - _BYTE *v50; // edx - int v51; // eax - int *v52; // edi - unsigned __int8 v53; // al - char *v54; // eax - char v55; // dl - int v56; // edx - int v57; // eax - int v58; // edx - int v59; // eax - int v60; // edx - int v61; // edx - int v62; // edx - int v63; // edx - int v64; // eax - unsigned int *v65; // esi - _BYTE *v66; // eax - int *v67; // eax - int v68; // edx - int v69; // edx - int v70; // edx - int *v71; // eax - int v72; // edx - _DWORD *v73; // eax - int v74; // ebp - int v75; // edi - _DWORD *v76; // ecx - int *v77; // edx - int v78; // eax - int v79; // edi - unsigned int *v80; // eax - int v81; // [esp+0h] [ebp-4Ch] - _DWORD *v82; // [esp+0h] [ebp-4Ch] - int v83; // [esp+0h] [ebp-4Ch] - int v84; // [esp+4h] [ebp-48h] - int v85; // [esp+4h] [ebp-48h] - int v86; // [esp+8h] [ebp-44h] - int v87; // [esp+8h] [ebp-44h] - int v88; // [esp+Ch] [ebp-40h] - int v89; // [esp+Ch] [ebp-40h] - int v90; // [esp+10h] [ebp-3Ch] - int v91; // [esp+10h] [ebp-3Ch] - int v92; // [esp+14h] [ebp-38h] - int v93; // [esp+14h] [ebp-38h] - int v94; // [esp+18h] [ebp-34h] - int v95; // [esp+18h] [ebp-34h] - int v96; // [esp+1Ch] [ebp-30h] - int v97; // [esp+1Ch] [ebp-30h] - int v98; // [esp+1Ch] [ebp-30h] - int v99; // [esp+20h] [ebp-2Ch] - int v100; // [esp+20h] [ebp-2Ch] - int v101; // [esp+24h] [ebp-28h] - int v102; // [esp+24h] [ebp-28h] - int v103; // [esp+28h] [ebp-24h] - int v104; // [esp+28h] [ebp-24h] - int *v105; // [esp+2Ch] [ebp-20h] BYREF - - v13 = (char *)a1[3]; - if ( next_is_type_qual_isra_0(v13) ) - { - v18 = d_cv_qualifiers(a1, &v105, 0); - if ( v18 ) - { - v19 = *(_BYTE *)a1[3] == 70 - ? d_function_type((int)a1) - : d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - *v18 = v19; - v20 = v19; - if ( v19 ) - { - result = v105; - if ( (unsigned int)(*v20 - 31) <= 1 ) - { - v21 = (int *)v20[3]; - v20[3] = (int)v105; - v105 = *v18; - *v18 = v21; - result = v105; - } - if ( result ) - { - v22 = a1[8]; - if ( v22 < a1[9] ) - { - *(_DWORD *)(a1[7] + 4 * v22) = result; - a1[8] = v22 + 1; - return result; - } - } - } - } - } - else - { - switch ( *v13 ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'N': - case 'Z': - result = d_name(a1); - v105 = result; - goto LABEL_19; - case 'A': - v41 = v13 + 1; - a1[3] = v13 + 1; - v42 = v13[1]; - if ( v42 == 95 ) - { - name = 0; -LABEL_53: - a1[3] = v41 + 1; - v45 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - result = d_make_comp(a1, 42, (int)name, (int)v45); - v105 = result; - goto LABEL_19; - } - if ( (unsigned __int8)(v42 - 48) > 9u ) - { - v14 = a1[12]; - a1[12] = 1; - v15 = d_expression_1(a1); - a1[12] = v14; - name = v15; - if ( !v15 ) - return 0; -LABEL_52: - v41 = (_BYTE *)a1[3]; - if ( *v41 != 95 ) - return 0; - goto LABEL_53; - } - v43 = v13 + 2; - do - { - v44 = v43; - a1[3] = v43++; - } - while ( (unsigned __int8)(*v44 - 48) <= 9u ); - name = d_make_name(a1, (int)v41, v44 - v41); - if ( name ) - goto LABEL_52; - break; - case 'C': - a1[3] = v13 + 1; - v34 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - result = d_make_comp(a1, 37, (int)v34, 0); - v105 = result; - goto LABEL_19; - case 'D': - a1[3] = v13 + 1; - if ( !v13[1] ) - return 0; - a1[3] = v13 + 2; - switch ( v13[1] ) - { - case 'F': - v51 = a1[5]; - if ( v51 >= a1[6] ) - { - MEMORY[0] = 0; - BUG(); - } - v52 = (int *)(a1[4] + 20 * v51); - v52[1] = 0; - v52[2] = 0; - v105 = v52; - a1[5] = v51 + 1; - *v52 = 44; - v53 = v13[2] - 48; - *((_WORD *)v52 + 8) = v53 <= 9u; - if ( v53 <= 9u ) - { - d_number((int)a1); - v52 = v105; - } - v52[3] = (int)d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - if ( !v105[3] ) - return 0; - d_number((int)a1); - v54 = (char *)a1[3]; - v55 = *v54; - if ( *v54 ) - { - a1[3] = v54 + 1; - v55 = *v54; - } - result = v105; - *((_WORD *)v105 + 9) = v55 == 115; - return result; - case 'T': - case 't': - v48 = a1[12]; - a1[12] = 1; - v49 = d_expression_1(a1); - a1[12] = v48; - result = d_make_comp(a1, 67, (int)v49, 0); - v105 = result; - if ( result ) - { - v50 = (_BYTE *)a1[3]; - if ( *v50 ) - { - a1[3] = v50 + 1; - if ( *v50 == 69 ) - goto LABEL_20; - } - } - return 0; - case 'a': - v58 = a1[5]; - if ( v58 >= a1[6] ) - return 0; - v59 = a1[4]; - a1[5] = v58 + 1; - result = (int *)(v59 + 20 * v58); - result[1] = 0; - result[2] = 0; - *result = 0; - result[3] = (int)"auto"; - result[4] = 4; - return result; - case 'c': - v56 = a1[5]; - if ( v56 >= a1[6] ) - return 0; - v57 = a1[4]; - a1[5] = v56 + 1; - result = (int *)(v57 + 20 * v56); - result[1] = 0; - result[2] = 0; - *result = 0; - result[3] = (int)"decltype(auto)"; - result[4] = 14; - return result; - case 'd': - v68 = a1[5]; - if ( v68 >= a1[6] ) - { - v105 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v68); - result[1] = 0; - result[2] = 0; - a1[5] = v68 + 1; - *result = 39; - result[3] = (int)&off_51413C; - a1[11] += 9; - return result; - case 'e': - v63 = a1[5]; - if ( v63 >= a1[6] ) - { - v105 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v63); - result[1] = 0; - result[2] = 0; - a1[5] = v63 + 1; - *result = 39; - result[3] = (int)&off_514150; - a1[11] += 10; - return result; - case 'f': - v61 = a1[5]; - if ( v61 >= a1[6] ) - { - v105 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v61); - result[1] = 0; - result[2] = 0; - a1[5] = v61 + 1; - *result = 39; - result[3] = (int)&off_514128; - a1[11] += 9; - return result; - case 'h': - v60 = a1[5]; - if ( v60 >= a1[6] ) - { - v105 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v60); - result[1] = 0; - result[2] = 0; - a1[5] = v60 + 1; - *result = 39; - result[3] = (int)&off_514164; - a1[11] += 4; - return result; - case 'i': - v72 = a1[5]; - if ( v72 >= a1[6] ) - { - v105 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v72); - result[1] = 0; - result[2] = 0; - a1[5] = v72 + 1; - *result = 39; - result[3] = (int)&off_5141A0; - a1[11] += 8; - return result; - case 'n': - v69 = a1[5]; - if ( v69 >= a1[6] ) - { - v105 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v69); - result[1] = 0; - result[2] = 0; - a1[5] = v69 + 1; - *result = 39; - result[3] = (int)&off_5141B4; - a1[11] += 17; - return result; - case 'p': - v71 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - result = d_make_comp(a1, 75, (int)v71, 0); - v105 = result; - goto LABEL_19; - case 's': - v62 = a1[5]; - if ( v62 >= a1[6] ) - { - v105 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v62); - result[1] = 0; - result[2] = 0; - a1[5] = v62 + 1; - *result = 39; - result[3] = (int)&off_51418C; - a1[11] += 8; - return result; - case 'u': - v70 = a1[5]; - if ( v70 >= a1[6] ) - { - v105 = 0; - BUG(); - } - result = (int *)(a1[4] + 20 * v70); - result[1] = 0; - result[2] = 0; - a1[5] = v70 + 1; - *result = 39; - result[3] = (int)&off_514178; - a1[11] += 7; - return result; - case 'v': - if ( v13[2] == 95 ) - { - v79 = a1[12]; - a1[12] = 1; - a1[3] = v13 + 3; - v80 = d_expression_1(a1); - a1[12] = v79; - v65 = v80; - if ( !v80 ) - return 0; - } - else - { - v64 = a1[5]; - if ( v64 >= a1[6] ) - return 0; - v65 = (unsigned int *)(a1[4] + 20 * v64); - v65[1] = 0; - v65[2] = 0; - a1[5] = v64 + 1; - *v65 = 66; - v65[3] = d_number((int)a1); - } - v66 = (_BYTE *)a1[3]; - if ( *v66 != 95 ) - return 0; - a1[3] = v66 + 1; - v67 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - result = d_make_comp(a1, 45, (int)v65, (int)v67); - v105 = result; - break; - default: - return 0; - } - goto LABEL_19; - case 'F': - result = d_function_type((int)a1); - v105 = result; - goto LABEL_19; - case 'G': - a1[3] = v13 + 1; - v32 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - result = d_make_comp(a1, 38, (int)v32, 0); - v105 = result; - goto LABEL_19; - case 'M': - a1[3] = v13 + 1; - v46 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - if ( !v46 ) - return 0; - v47 = d_type(a1, v83, v85, v87, v89, v91, v93, v95, v97, v100, v102, v104); - if ( !v47 ) - return 0; - result = d_make_comp(a1, 43, (int)v46, (int)v47); - v105 = result; - goto LABEL_19; - case 'O': - a1[3] = v13 + 1; - v31 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - result = d_make_comp(a1, 36, (int)v31, 0); - v105 = result; - goto LABEL_19; - case 'P': - a1[3] = v13 + 1; - v30 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - result = d_make_comp(a1, 34, (int)v30, 0); - v105 = result; - goto LABEL_19; - case 'R': - a1[3] = v13 + 1; - v29 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - result = d_make_comp(a1, 35, (int)v29, 0); - v105 = result; - goto LABEL_19; - case 'S': - v27 = v13[1]; - if ( (unsigned __int8)(v27 - 48) <= 9u || v27 == 95 || (unsigned __int8)(v27 - 65) <= 0x19u ) - { - result = d_substitution((int)a1, 0); - v28 = (_BYTE *)a1[3]; - v105 = result; - if ( *v28 != 73 ) - return result; - a1[3] = v28 + 1; - v82 = d_template_args_1(a1); - result = d_make_comp(a1, 4, (int)v105, (int)v82); - goto LABEL_27; - } - result = d_name(a1); - v105 = result; - if ( !result ) - return 0; - if ( *result == 24 ) - return result; - goto LABEL_20; - case 'T': - result = d_template_param(a1); - v38 = (_BYTE *)a1[3]; - v105 = result; - if ( *v38 != 73 ) - goto LABEL_19; - if ( a1[13] ) - { - v74 = a1[5]; - v75 = a1[8]; - v98 = a1[11]; - a1[3] = v38 + 1; - v76 = d_template_args_1(a1); - if ( *(_BYTE *)a1[3] == 73 ) - { - v77 = v105; - if ( !v105 ) - return 0; - v78 = a1[8]; - if ( v78 >= a1[9] ) - return 0; - *(_DWORD *)(a1[7] + 4 * v78) = v105; - a1[8] = v78 + 1; - result = d_make_comp(a1, 4, (int)v77, (int)v76); - v105 = result; - } - else - { - a1[3] = v38; - a1[5] = v74; - a1[11] = v98; - result = v105; - a1[8] = v75; - } - } - else - { - if ( !result ) - return 0; - v39 = a1[8]; - if ( v39 >= a1[9] ) - return 0; - *(_DWORD *)(a1[7] + 4 * v39) = result; - a1[8] = v39 + 1; - v40 = 0; - if ( (unsigned __int8)(*v38 - 73) <= 1u ) - { - a1[3] = v38 + 1; - v40 = d_template_args_1(a1); - } - result = d_make_comp(a1, 4, (int)v105, (int)v40); -LABEL_27: - v105 = result; - } -LABEL_19: - if ( !result ) - return 0; -LABEL_20: - v26 = a1[8]; - if ( v26 < a1[9] ) - { - *(_DWORD *)(a1[7] + 4 * v26) = result; - result = v105; - a1[8] = v26 + 1; - return result; - } - return 0; - case 'U': - a1[3] = v13 + 1; - v105 = d_source_name((int)a1); - comp = v105; - v36 = (_BYTE *)a1[3]; - if ( *v36 == 73 ) - { - a1[3] = v36 + 1; - v73 = d_template_args_1(a1); - comp = d_make_comp(a1, 4, (int)v105, (int)v73); - } - v37 = d_type(a1, v81, v84, v86, v88, v90, v92, v94, v96, v99, v101, v103); - result = d_make_comp(a1, 33, (int)v37, (int)comp); - v105 = result; - goto LABEL_19; - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'l': - case 'm': - case 'n': - case 'o': - case 's': - case 't': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - v23 = a1[5]; - v24 = 20 * (char)(*v13 - 97) + 5324576; - if ( v23 >= a1[6] ) - d_type_cold(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); - result = (int *)(a1[4] + 20 * v23); - result[1] = 0; - result[2] = 0; - a1[5] = v23 + 1; - v25 = *(_DWORD *)(v24 + 4); - *result = 39; - result[3] = v24; - a1[11] += v25; - a1[3] = v13 + 1; - return result; - case 'u': - a1[3] = v13 + 1; - v33 = d_source_name((int)a1); - result = d_make_comp(a1, 40, (int)v33, 0); - v105 = result; - goto LABEL_19; - default: - return 0; - } - } - return 0; -} -// 42AFED: variable 'v81' is possibly undefined -// 42AFED: variable 'v84' is possibly undefined -// 42AFED: variable 'v86' is possibly undefined -// 42AFED: variable 'v88' is possibly undefined -// 42AFED: variable 'v90' is possibly undefined -// 42AFED: variable 'v92' is possibly undefined -// 42AFED: variable 'v94' is possibly undefined -// 42AFED: variable 'v96' is possibly undefined -// 42AFED: variable 'v99' is possibly undefined -// 42AFED: variable 'v101' is possibly undefined -// 42AFED: variable 'v103' is possibly undefined -// 42B3C3: variable 'v83' is possibly undefined -// 42B3C3: variable 'v85' is possibly undefined -// 42B3C3: variable 'v87' is possibly undefined -// 42B3C3: variable 'v89' is possibly undefined -// 42B3C3: variable 'v91' is possibly undefined -// 42B3C3: variable 'v93' is possibly undefined -// 42B3C3: variable 'v95' is possibly undefined -// 42B3C3: variable 'v97' is possibly undefined -// 42B3C3: variable 'v100' is possibly undefined -// 42B3C3: variable 'v102' is possibly undefined -// 42B3C3: variable 'v104' is possibly undefined -// 514128: using guessed type char *off_514128; -// 51413C: using guessed type char *off_51413C; -// 514150: using guessed type char *off_514150; -// 514164: using guessed type char *off_514164; -// 514178: using guessed type char *off_514178; -// 51418C: using guessed type char *off_51418C; -// 5141A0: using guessed type char *off_5141A0; -// 5141B4: using guessed type char *off_5141B4; - -//----- (0042B8F0) -------------------------------------------------------- -_DWORD *__usercall d_operator_name@(_DWORD *a1@) -{ - unsigned __int8 *v2; // eax - unsigned __int8 v3; // si - unsigned __int8 v4; // cl - int v5; // edx - unsigned __int8 v6; // bp - void **v7; // edi - _BYTE *v8; // ecx - bool v9; // cc - _DWORD *result; // eax - int v11; // edx - char v12; // bl - _DWORD *v13; // eax - int v14; // edx - _DWORD *v15; // ecx - int v16; // ebx - int *v17; // eax - int v18; // [esp+0h] [ebp-3Ch] - int v19; // [esp+4h] [ebp-38h] - int v20; // [esp+8h] [ebp-34h] - int v21; // [esp+Ch] [ebp-30h] - int v22; // [esp+10h] [ebp-2Ch] - int v23; // [esp+14h] [ebp-28h] - int v24; // [esp+18h] [ebp-24h] - int v25; // [esp+18h] [ebp-24h] - int v26; // [esp+1Ch] [ebp-20h] - _DWORD *v27; // [esp+1Ch] [ebp-20h] - int v28; // [esp+20h] [ebp-1Ch] - int v29; // [esp+24h] [ebp-18h] - int v30; // [esp+28h] [ebp-14h] - - v2 = (unsigned __int8 *)a1[3]; - if ( !*v2 ) - { - v4 = 0; - v3 = 0; - goto LABEL_3; - } - a1[3] = v2 + 1; - v3 = *v2; - v4 = v2[1]; - if ( !v4 ) - { -LABEL_3: - v27 = a1; - v5 = 0; - v6 = v4; - v25 = 69; - while ( 1 ) - { - v7 = &cplus_demangle_operators + 4 * v5 + 4 * ((v25 - v5) / 2); - v8 = *v7; - v9 = *(_BYTE *)*v7 <= v3; - if ( *(_BYTE *)*v7 == v3 ) - { - v9 = v8[1] <= v6; - if ( v8[1] == v6 ) - break; - } - if ( v9 ) - v5 += (v25 - v5) / 2 + 1; - else - v25 = v5 + (v25 - v5) / 2; - if ( v5 == v25 ) - return 0; - } - v11 = v27[5]; - if ( v11 < v27[6] ) - { - result = (_DWORD *)(v27[4] + 20 * v11); - result[1] = 0; - result[2] = 0; - v27[5] = v11 + 1; - *result = 50; - result[3] = v7; - return result; - } - return 0; - } - a1[3] = v2 + 2; - v4 = v2[1]; - if ( v3 == 118 ) - { - v12 = v4 - 48; - if ( (unsigned __int8)(v4 - 48) > 9u ) - goto LABEL_3; - v13 = d_source_name((int)a1); - v14 = a1[5]; - v15 = v13; - if ( v14 >= a1[6] ) - return 0; - result = (_DWORD *)(a1[4] + 20 * v14); - result[1] = 0; - result[2] = 0; - a1[5] = v14 + 1; - if ( !v15 ) - return 0; - result[1] = 0; - result[2] = 0; - *result = 51; - result[3] = v12; - result[4] = v15; - } - else - { - if ( v4 != 118 || v3 != 99 ) - goto LABEL_3; - v16 = a1[13]; - a1[13] = a1[12] == 0; - v17 = d_type(a1, v18, v19, v20, v21, v22, v23, v24, v26, v28, v29, v30); - if ( a1[13] ) - result = d_make_comp(a1, 53, (int)v17, 0); - else - result = d_make_comp(a1, 52, (int)v17, 0); - a1[13] = v16; - } - return result; -} -// 42BA71: variable 'v18' is possibly undefined -// 42BA71: variable 'v19' is possibly undefined -// 42BA71: variable 'v20' is possibly undefined -// 42BA71: variable 'v21' is possibly undefined -// 42BA71: variable 'v22' is possibly undefined -// 42BA71: variable 'v23' is possibly undefined -// 42BA71: variable 'v24' is possibly undefined -// 42BA71: variable 'v26' is possibly undefined -// 42BA71: variable 'v28' is possibly undefined -// 42BA71: variable 'v29' is possibly undefined -// 42BA71: variable 'v30' is possibly undefined -// 5139A0: using guessed type void *cplus_demangle_operators; - -//----- (0042BAB0) -------------------------------------------------------- -int __usercall d_parmlist@(_DWORD *a1@) -{ - char *v2; // ebp - char v3; // al - int *v4; // esi - _DWORD *comp; // eax - int *v6; // ecx - int result; // eax - _DWORD *v8; // edx - int v9; // edx - int v10; // [esp+0h] [ebp-3Ch] - int v11; // [esp+4h] [ebp-38h] - int v12; // [esp+8h] [ebp-34h] - int v13; // [esp+Ch] [ebp-30h] - int v14; // [esp+10h] [ebp-2Ch] - int v15; // [esp+14h] [ebp-28h] - int v16; // [esp+18h] [ebp-24h] - int v17[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = (char *)a1[3]; - v17[0] = 0; - v3 = *v2; - if ( v3 == 0 || v3 == 69 ) - return 0; - v4 = v17; - if ( v3 == 46 ) - return 0; - do - { - if ( (v3 == 82 || v3 == 79) && v2[1] == 69 ) - break; - v6 = d_type(a1, v10, v11, v12, v13, v14, v15, v16, v17[0], v17[1], v17[2], v17[3]); - if ( !v6 ) - return 0; - comp = d_make_comp(a1, 46, (int)v6, 0); - *v4 = (int)comp; - if ( !comp ) - return 0; - v2 = (char *)a1[3]; - v4 = comp + 4; - v3 = *v2; - if ( *v2 == 69 || *v2 == 0 ) - break; - } - while ( v3 != 46 ); - result = v17[0]; - if ( !v17[0] ) - return 0; - if ( !*(_DWORD *)(v17[0] + 16) ) - { - v8 = *(_DWORD **)(v17[0] + 12); - if ( *v8 == 39 ) - { - v9 = v8[3]; - if ( *(_DWORD *)(v9 + 16) == 9 ) - { - a1[11] -= *(_DWORD *)(v9 + 4); - *(_DWORD *)(result + 12) = 0; - } - } - } - return result; -} -// 42BB31: variable 'v10' is possibly undefined -// 42BB31: variable 'v11' is possibly undefined -// 42BB31: variable 'v12' is possibly undefined -// 42BB31: variable 'v13' is possibly undefined -// 42BB31: variable 'v14' is possibly undefined -// 42BB31: variable 'v15' is possibly undefined -// 42BB31: variable 'v16' is possibly undefined -// 42BAB0: using guessed type int var_20[8]; - -//----- (0042BB80) -------------------------------------------------------- -#error "42BB95: call analysis failed (funcsize=40)" - -//----- (0042BBF0) -------------------------------------------------------- -_DWORD *__usercall d_function_type@(int a1@) -{ - unsigned int v2; // ecx - _BYTE *v3; // edx - _DWORD *result; // eax - _DWORD *v5; // eax - _BYTE *v6; // edx - - if ( (*(_BYTE *)(a1 + 10) & 4) != 0 ) - { - v3 = *(_BYTE **)(a1 + 12); - if ( *v3 == 70 ) - goto LABEL_8; - return 0; - } - v2 = *(_DWORD *)(a1 + 56); - if ( v2 > 0x800 ) - return 0; - v3 = *(_BYTE **)(a1 + 12); - *(_DWORD *)(a1 + 56) = v2 + 1; - result = 0; - if ( *v3 != 70 ) - { -LABEL_4: - *(_DWORD *)(a1 + 56) = v2; - return result; - } -LABEL_8: - *(_DWORD *)(a1 + 12) = v3 + 1; - if ( v3[1] == 89 ) - *(_DWORD *)(a1 + 12) = v3 + 2; - v5 = d_bare_function_type((_DWORD *)a1, 1); - result = d_ref_qualifier((_DWORD *)a1, v5); - v6 = *(_BYTE **)(a1 + 12); - if ( *v6 == 69 ) - *(_DWORD *)(a1 + 12) = v6 + 1; - else - result = 0; - if ( (*(_BYTE *)(a1 + 10) & 4) == 0 ) - { - v2 = *(_DWORD *)(a1 + 56) - 1; - goto LABEL_4; - } - return result; -} - -//----- (0042BC80) -------------------------------------------------------- -_DWORD *__usercall d_unqualified_name@(_DWORD *a1@) -{ - char *v2; // eax - char v3; // cl - _DWORD *v4; // eax - _DWORD *comp; // esi - char v6; // dl - char v8; // dl - char *v9; // ecx - char v10; // dl - int v11; // eax - bool v12; // sf - int v13; // ecx - int v14; // eax - int v15; // edx - int v16; // edi - _DWORD *v17; // eax - int v18; // eax - int v19; // edx - _BYTE *v20; // eax - _DWORD *v21; // eax - _DWORD *v22; // edi - int v23; // edx - int v24; // ecx - int v25; // edi - char v26; // dl - int v27; // eax - int v28; // ecx - int v29; // edx - int v30; // ecx - int v31; // edi - int v32; // eax - int v33; // edx - int v34; // [esp+0h] [ebp-3Ch] - int v35; // [esp+4h] [ebp-38h] - int v36; // [esp+8h] [ebp-34h] - int v37; // [esp+Ch] [ebp-30h] - int v38; // [esp+10h] [ebp-2Ch] - int v39; // [esp+14h] [ebp-28h] - int v40; // [esp+18h] [ebp-24h] - int v41; // [esp+1Ch] [ebp-20h] - int v42; // [esp+20h] [ebp-1Ch] - int v43; // [esp+24h] [ebp-18h] - int v44; // [esp+28h] [ebp-14h] - - v2 = (char *)a1[3]; - v3 = *v2; - if ( (unsigned __int8)(*v2 - 48) > 9u ) - { - if ( (unsigned __int8)(v3 - 97) <= 0x19u ) - { - if ( v3 == 111 && v2[1] == 110 ) - a1[3] = v2 + 2; - v4 = d_operator_name(a1); - comp = v4; - if ( v4 ) - { - if ( *v4 == 50 ) - { - v18 = v4[3]; - v19 = *(_DWORD *)(v18 + 8); - v20 = *(_BYTE **)v18; - a1[11] += v19 + 7; - if ( *v20 == 108 && v20[1] == 105 && !v20[2] ) - { - v21 = d_source_name((int)a1); - comp = d_make_comp(a1, 55, (int)comp, (int)v21); - v2 = (char *)a1[3]; - v6 = *v2; - goto LABEL_7; - } - } - } -LABEL_6: - v2 = (char *)a1[3]; - v6 = *v2; - goto LABEL_7; - } - if ( (unsigned __int8)(v3 - 67) > 1u ) - { - if ( v3 != 76 ) - { - if ( v3 != 85 ) - return 0; - v8 = v2[1]; - if ( v8 == 108 ) - { - v9 = v2 + 1; - a1[3] = v2 + 1; - v6 = v2[1]; - if ( v6 == 108 ) - { - a1[3] = v2 + 2; - v25 = d_parmlist(a1); - v2 = (char *)a1[3]; - v6 = *v2; - if ( !v25 || v6 != 69 ) - goto LABEL_43; - a1[3] = v2 + 1; - v26 = v2[1]; - if ( v26 == 95 ) - { - v2 += 2; - v28 = 0; - a1[3] = v2; - } - else - { - if ( v26 == 110 ) - return 0; - v27 = d_number((int)a1); - v12 = v27 + 1 < 0; - v28 = v27 + 1; - v2 = (char *)a1[3]; - v6 = *v2; - if ( v12 || v6 != 95 ) - goto LABEL_43; - a1[3] = ++v2; - } - v29 = a1[5]; - if ( v29 < a1[6] ) - { - comp = (_DWORD *)(a1[4] + 20 * v29); - comp[1] = 0; - comp[2] = 0; - a1[5] = v29 + 1; - v15 = a1[8]; - *comp = 70; - comp[3] = v25; - comp[4] = v28; - if ( v15 < a1[9] ) - goto LABEL_22; - } - goto LABEL_64; - } - } - else - { - if ( v8 != 116 ) - return 0; - v9 = v2 + 1; - a1[3] = v2 + 1; - v6 = v2[1]; - if ( v6 == 116 ) - { - a1[3] = v2 + 2; - v10 = v2[2]; - if ( v10 == 95 ) - { - v13 = 0; - a1[3] = v2 + 3; -LABEL_20: - v14 = a1[5]; - if ( v14 < a1[6] ) - { - comp = (_DWORD *)(a1[4] + 20 * v14); - v15 = a1[8]; - comp[1] = 0; - comp[2] = 0; - a1[5] = v14 + 1; - v2 = (char *)a1[3]; - *comp = 72; - comp[3] = v13; - if ( v15 < a1[9] ) - { -LABEL_22: - *(_DWORD *)(a1[7] + 4 * v15) = comp; - a1[8] = v15 + 1; - v6 = *v2; - goto LABEL_7; - } - goto LABEL_64; - } - goto LABEL_71; - } - if ( v10 != 110 ) - { - v11 = d_number((int)a1); - v12 = v11 + 1 < 0; - v13 = v11 + 1; - v2 = (char *)a1[3]; - v6 = *v2; - if ( !v12 && v6 == 95 ) - { - a1[3] = v2 + 1; - goto LABEL_20; - } -LABEL_43: - comp = 0; - goto LABEL_7; - } - return 0; - } - } - v2 = v9; - comp = 0; - goto LABEL_7; - } - a1[3] = v2 + 1; - comp = d_source_name((int)a1); - if ( comp && d_discriminator((int)a1) ) - goto LABEL_6; - return 0; - } - v22 = (_DWORD *)a1[10]; - v41 = (int)v22; - if ( v22 && (!*v22 || *v22 == 24) ) - { - a1[11] += v22[4]; - v6 = *v2; - v3 = *v2; - if ( *v2 != 67 ) - { - if ( v6 != 68 ) - goto LABEL_43; - goto LABEL_40; - } - } - else if ( v3 != 67 ) - { -LABEL_40: - switch ( v2[1] ) - { - case '0': - v23 = 1; - goto LABEL_46; - case '1': - v23 = 2; - goto LABEL_46; - case '2': - v23 = 3; - goto LABEL_46; - case '4': - v23 = 4; - goto LABEL_46; - case '5': - v23 = 5; -LABEL_46: - v24 = a1[5]; - a1[3] = v2 + 2; - if ( v24 < a1[6] && (comp = (_DWORD *)(a1[4] + 20 * v24), comp[1] = 0, comp[2] = 0, a1[5] = v24 + 1, v22) ) - { - comp[1] = 0; - comp[2] = 0; - *comp = 8; - comp[3] = v23; - comp[4] = v22; - v6 = v2[2]; - v2 += 2; - } - else - { - v6 = v2[2]; - comp = 0; - v2 += 2; - } - break; - default: - v6 = v3; - comp = 0; - break; - } -LABEL_7: - if ( v6 != 66 ) - return comp; - goto LABEL_24; - } - v30 = v2[1]; - if ( (_BYTE)v30 == 73 ) - { - a1[3] = v2 + 1; - v33 = v2[2]; - if ( (unsigned __int8)(v33 - 49) > 4u ) - { - v6 = v2[1]; - comp = 0; - ++v2; - goto LABEL_7; - } - v31 = v33 - 48; - a1[3] = v2 + 3; - d_type(a1, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44); - v41 = a1[10]; - } - else - { - if ( (unsigned __int8)(v30 - 49) > 4u ) - return 0; - v31 = v30 - 48; - a1[3] = v2 + 2; - } - v32 = a1[5]; - if ( v32 < a1[6] ) - { - comp = (_DWORD *)(a1[4] + 20 * v32); - comp[1] = 0; - comp[2] = 0; - a1[5] = v32 + 1; - if ( v41 ) - { - comp[1] = 0; - comp[2] = 0; - *comp = 7; - comp[3] = v31; - comp[4] = v41; - goto LABEL_6; - } - } -LABEL_71: - v2 = (char *)a1[3]; -LABEL_64: - v6 = *v2; - comp = 0; - goto LABEL_7; - } - comp = d_source_name((int)a1); - v2 = (char *)a1[3]; - if ( *v2 != 66 ) - return comp; -LABEL_24: - v16 = a1[10]; - do - { - a1[3] = v2 + 1; - v17 = d_source_name((int)a1); - comp = d_make_comp(a1, 76, (int)comp, (int)v17); - v2 = (char *)a1[3]; - } - while ( *v2 == 66 ); - a1[10] = v16; - return comp; -} -// 42C122: variable 'v34' is possibly undefined -// 42C122: variable 'v35' is possibly undefined -// 42C122: variable 'v36' is possibly undefined -// 42C122: variable 'v37' is possibly undefined -// 42C122: variable 'v38' is possibly undefined -// 42C122: variable 'v39' is possibly undefined -// 42C122: variable 'v40' is possibly undefined -// 42C122: variable 'v42' is possibly undefined -// 42C122: variable 'v43' is possibly undefined -// 42C122: variable 'v44' is possibly undefined - -//----- (0042C160) -------------------------------------------------------- -int *__usercall d_name@(_DWORD *a1@) -{ - char *v2; // edx - char v3; // al - int *v4; // esi - _BYTE *v5; // eax - char v7; // al - _DWORD *v8; // esi - _BYTE *v9; // eax - char v10; // dl - int *v11; // eax - int *v12; // edi - _BYTE *v13; // eax - int v14; // edx - _DWORD *v15; // ecx - _DWORD *v17; // edx - int v18; // eax - int v19; // ecx - _DWORD *v20; // ecx - int *comp; // eax - int v22; // edx - _DWORD *v23; // eax - int **v24; // ebp - unsigned __int8 *v25; // edx - _DWORD *v26; // eax - int *v27; // edi - int v28; // ebx - _DWORD *v29; // esi - unsigned int v30; // eax - int *v31; // eax - int v32; // edx - int v33; // eax - int v34; // ecx - char v35; // dl - int v36; // ebp - _BYTE *v37; // eax - int *v38; // edx - int v39; // eax - _DWORD *v40; // ebx - int *v41; // eax - _BYTE *v42; // eax - _DWORD *v43; // eax - int v44; // eax - int v45; // edx - int v46; // eax - int v47; // [esp+0h] [ebp-4Ch] - int v48; // [esp+4h] [ebp-48h] - int v49; // [esp+8h] [ebp-44h] - int v50; // [esp+Ch] [ebp-40h] - int v51; // [esp+10h] [ebp-3Ch] - int v52; // [esp+14h] [ebp-38h] - int v53; // [esp+18h] [ebp-34h] - int *v54; // [esp+1Ch] [ebp-30h] - int *v55; // [esp+1Ch] [ebp-30h] - int v56; // [esp+20h] [ebp-2Ch] - int v57; // [esp+24h] [ebp-28h] - int v58; // [esp+28h] [ebp-24h] - int *v59; // [esp+2Ch] [ebp-20h] BYREF - - v2 = (char *)a1[3]; - v3 = *v2; - if ( *v2 == 85 ) - return d_unqualified_name(a1); - if ( v3 > 85 ) - { - if ( v3 != 90 ) - goto LABEL_21; - a1[3] = v2 + 1; - v7 = v2[1]; - if ( v7 == 71 || v7 == 84 ) - v8 = d_special_name(a1); - else - v8 = d_encoding_part_0((int)a1, 0); - if ( !v8 ) - return 0; - v9 = (_BYTE *)a1[3]; - if ( *v9 != 69 ) - return 0; - a1[3] = v9 + 1; - v10 = v9[1]; - if ( v10 == 115 ) - { - a1[3] = v9 + 2; - if ( !d_discriminator((int)a1) ) - return 0; - v44 = a1[5]; - if ( v44 < a1[6] ) - { - v45 = a1[4]; - a1[5] = v44 + 1; - v12 = (int *)(v45 + 20 * v44); - v12[1] = 0; - v12[2] = 0; - *v12 = 0; - v12[3] = (int)"string literal"; - v12[4] = 14; - goto LABEL_18; - } - } - else - { - if ( v10 != 100 ) - { - v11 = d_name(a1); - v12 = v11; - if ( v11 && ((*v11 - 70) & 0xFFFFFFFD) != 0 && !d_discriminator((int)a1) ) - return 0; - goto LABEL_18; - } - a1[3] = v9 + 2; - v35 = v9[2]; - if ( v35 == 95 ) - { - v36 = 0; - a1[3] = v9 + 3; - } - else - { - if ( v35 == 110 ) - return 0; - v36 = d_number((int)a1) + 1; - if ( v36 < 0 ) - return 0; - v37 = (_BYTE *)a1[3]; - if ( *v37 != 95 ) - return 0; - a1[3] = v37 + 1; - } - v38 = d_name(a1); - if ( v38 ) - { - if ( ((*v38 - 70) & 0xFFFFFFFD) != 0 ) - { - v55 = v38; - v46 = d_discriminator((int)a1); - v38 = v55; - if ( !v46 ) - return 0; - } - } - v39 = a1[5]; - if ( v39 < a1[6] ) - { - v12 = (int *)(a1[4] + 20 * v39); - v12[1] = 0; - v12[2] = 0; - a1[5] = v39 + 1; - *v12 = 71; - v12[4] = v36; - v12[3] = (int)v38; - goto LABEL_18; - } - } - v12 = 0; -LABEL_18: - if ( *v8 == 3 ) - { - v43 = (_DWORD *)v8[4]; - if ( *v43 == 41 ) - v43[3] = 0; - } - return d_make_comp(a1, 2, (int)v8, (int)v12); - } - if ( v3 != 78 ) - { - if ( v3 == 83 ) - { - if ( v2[1] != 116 ) - { - v4 = d_substitution((int)a1, 0); - v5 = (_BYTE *)a1[3]; - if ( *v5 != 73 ) - return v4; - goto LABEL_62; - } - a1[3] = v2 + 2; - v17 = d_unqualified_name(a1); - v18 = a1[5]; - if ( v18 >= a1[6] ) - { - v20 = 0; - } - else - { - v19 = a1[4]; - a1[5] = v18 + 1; - v20 = (_DWORD *)(v19 + 20 * v18); - v20[1] = 0; - v20[2] = 0; - *v20 = 0; - v20[3] = &off_512ECB; - v20[4] = 3; - } - comp = d_make_comp(a1, 1, (int)v20, (int)v17); - a1[11] += 3; - v4 = comp; - v5 = (_BYTE *)a1[3]; - if ( *v5 == 73 ) - { - if ( !v4 ) - return 0; - v22 = a1[8]; - if ( v22 >= a1[9] ) - return 0; - *(_DWORD *)(a1[7] + 4 * v22) = v4; - a1[8] = v22 + 1; - if ( (unsigned __int8)(*v5 - 73) > 1u ) - { - v23 = 0; - return d_make_comp(a1, 4, (int)v4, (int)v23); - } -LABEL_62: - a1[3] = v5 + 1; - v23 = d_template_args_1(a1); - return d_make_comp(a1, 4, (int)v4, (int)v23); - } - return v4; - } -LABEL_21: - v4 = d_unqualified_name(a1); - v13 = (_BYTE *)a1[3]; - if ( *v13 != 73 ) - return v4; - if ( !v4 ) - return 0; - v14 = a1[8]; - if ( v14 >= a1[9] ) - return 0; - *(_DWORD *)(a1[7] + 4 * v14) = v4; - v15 = 0; - a1[8] = v14 + 1; - if ( (unsigned __int8)(*v13 - 73) <= 1u ) - { - a1[3] = v13 + 1; - v15 = d_template_args_1(a1); - } - return d_make_comp(a1, 4, (int)v4, (int)v15); - } - a1[3] = v2 + 1; - v24 = d_cv_qualifiers(a1, &v59, 1); - if ( !v24 ) - return 0; - v54 = d_ref_qualifier(a1, 0); - if ( !*(_BYTE *)a1[3] ) - { -LABEL_51: - *v24 = 0; - return 0; - } - v25 = (unsigned __int8 *)a1[3]; - v26 = a1; - v27 = 0; - v28 = *v25; - v29 = v26; - while ( 1 ) - { - if ( (_BYTE)v28 == 68 ) - { - if ( (v25[1] & 0xDF) == 84 ) - v31 = d_type(v29, v47, v48, v49, v50, v51, v52, v53, (int)v54, v56, v57, v58); - else - v31 = d_unqualified_name(v29); -LABEL_55: - v32 = 1; - if ( v27 ) - goto LABEL_44; - goto LABEL_56; - } - v30 = v28 - 48; - if ( (unsigned __int8)(v28 - 48) <= 0x1Cu ) - goto LABEL_58; - if ( (unsigned __int8)(v28 - 97) <= 0x19u ) - break; - if ( (_BYTE)v28 == 85 ) - { - v31 = d_unqualified_name(v29); - if ( v27 ) - { -LABEL_43: - v32 = 1; -LABEL_44: - v27 = d_make_comp(v29, v32, (int)v27, (int)v31); - goto LABEL_45; - } -LABEL_56: - v25 = (unsigned __int8 *)v29[3]; - v27 = v31; - goto LABEL_46; - } - if ( (_BYTE)v28 != 83 ) - goto LABEL_75; - v31 = d_substitution((int)v29, 1); - if ( v27 ) - goto LABEL_43; - v25 = (unsigned __int8 *)v29[3]; - v27 = v31; -LABEL_50: - v28 = *v25; - if ( !(_BYTE)v28 ) - goto LABEL_51; - } - do - { - v31 = d_unqualified_name(v29); - if ( v27 ) - goto LABEL_43; - v27 = v31; -LABEL_45: - v25 = (unsigned __int8 *)v29[3]; - if ( (_BYTE)v28 == 83 ) - goto LABEL_50; -LABEL_46: - LOBYTE(v28) = *v25; - if ( *v25 != 69 ) - { - if ( !v27 ) - goto LABEL_51; - v33 = v29[8]; - if ( v33 >= v29[9] ) - goto LABEL_51; - *(_DWORD *)(v29[7] + 4 * v33) = v27; - v29[8] = v33 + 1; - goto LABEL_50; - } - v30 = 21; -LABEL_58: - v34 = 268960767; - } - while ( _bittest(&v34, v30) ); - if ( (_BYTE)v28 == 73 ) - { - if ( !v27 ) - goto LABEL_51; - v29[3] = v25 + 1; - v31 = d_template_args_1(v29); - v32 = 4; - goto LABEL_44; - } -LABEL_75: - if ( (_BYTE)v28 == 84 ) - { - v31 = d_template_param(v29); - goto LABEL_55; - } - if ( (_BYTE)v28 != 69 ) - { - if ( !v27 || (_BYTE)v28 != 77 ) - goto LABEL_51; - v29[3] = ++v25; - goto LABEL_50; - } - *v24 = v27; - v40 = v29; - if ( v27 ) - { - if ( v54 ) - { - v41 = v59; - v59 = v54; - v54[3] = (int)v41; - } - v42 = (_BYTE *)v29[3]; - if ( *v42 == 69 ) - { - v4 = v59; - v40[3] = v42 + 1; - return v4; - } - } - return 0; -} -// 42C475: variable 'v47' is possibly undefined -// 42C475: variable 'v48' is possibly undefined -// 42C475: variable 'v49' is possibly undefined -// 42C475: variable 'v50' is possibly undefined -// 42C475: variable 'v51' is possibly undefined -// 42C475: variable 'v52' is possibly undefined -// 42C475: variable 'v53' is possibly undefined -// 42C475: variable 'v54' is possibly undefined -// 42C475: variable 'v56' is possibly undefined -// 42C475: variable 'v57' is possibly undefined -// 42C475: variable 'v58' is possibly undefined -// 512ECB: using guessed type void *off_512ECB; - -//----- (0042C730) -------------------------------------------------------- -unsigned int *__usercall d_encoding_part_0@(int a1@, int a2@) -{ - int *v4; // eax - int *v5; // ebx - int v6; // eax - int *i; // edx - int v8; // eax - char v10; // al - unsigned int *v11; // edx - unsigned int v12; // eax - int v13; // edx - _DWORD *v14; // eax - unsigned int *v15; // edx - unsigned int v16; // eax - - v4 = d_name((_DWORD *)a1); - if ( !v4 ) - return 0; - v5 = v4; - if ( !a2 || (*(_BYTE *)(a1 + 8) & 1) != 0 ) - { - v10 = **(_BYTE **)(a1 + 12); - if ( v10 && v10 != 69 ) - { - v11 = (unsigned int *)v5; - while ( 1 ) - { - v12 = *v11; - if ( *v11 == 4 ) - break; - if ( *v11 > 4 ) - { - if ( v12 != 77 ) - { - if ( v12 <= 0x4D ) - { - if ( v12 - 28 > 4 ) - { -LABEL_21: - v13 = 0; - goto LABEL_22; - } - } - else if ( v12 - 79 > 1 ) - { - goto LABEL_21; - } - } - v11 = (unsigned int *)v11[3]; - } - else - { - if ( v12 != 2 ) - goto LABEL_21; - v11 = (unsigned int *)v11[4]; - } - if ( !v11 ) - goto LABEL_21; - } - v15 = (unsigned int *)v11[3]; - if ( v15 ) - { - while ( 1 ) - { - v16 = *v15; - if ( *v15 > 8 ) - break; - if ( v16 > 6 ) - goto LABEL_21; - if ( v16 - 1 <= 1 ) - { - v15 = (unsigned int *)v15[4]; - if ( v15 ) - continue; - } - goto LABEL_42; - } - v13 = v16 != 53; - } - else - { -LABEL_42: - v13 = 1; - } -LABEL_22: - v14 = d_bare_function_type((_DWORD *)a1, v13); - if ( !v14 ) - return 0; - if ( !a2 && *v5 == 2 && *v14 == 41 ) - v14[3] = 0; - return d_make_comp((_DWORD *)a1, 3, (int)v5, (int)v14); - } - return (unsigned int *)v5; - } - while ( 1 ) - { - v6 = *v5; - if ( *v5 == 77 ) - goto LABEL_27; - if ( (unsigned int)*v5 <= 0x4D ) - break; - if ( (unsigned int)(v6 - 79) > 1 ) - return (unsigned int *)v5; -LABEL_27: - v5 = (int *)v5[3]; - } - if ( (unsigned int)(v6 - 28) <= 4 ) - goto LABEL_27; - if ( v6 != 2 ) - return (unsigned int *)v5; - for ( i = (int *)v5[4]; i; v5[4] = (int)i ) - { - v8 = *i; - if ( *i != 77 ) - { - if ( (unsigned int)*i > 0x4D ) - { - if ( (unsigned int)(v8 - 79) > 1 ) - return (unsigned int *)v5; - } - else if ( (unsigned int)(v8 - 28) > 4 ) - { - return (unsigned int *)v5; - } - } - i = (int *)i[3]; - } - return 0; -} - -//----- (0042C900) -------------------------------------------------------- -_DWORD *__usercall d_special_name@(_DWORD *a1@) -{ - int v2; // ecx - _BYTE *v3; // eax - char v4; // dl - int v5; // eax - _BYTE *v6; // edx - _BYTE *v7; // esi - int v8; // edi - _DWORD *comp; // ebp - char v10; // al - int v11; // edx - _DWORD *name; // eax - _DWORD *result; // eax - char v14; // al - int *v15; // edi - int v16; // eax - _DWORD *v17; // esi - char v18; // al - _DWORD *v19; // ecx - int *v20; // eax - bool v21; // zf - char v22; // al - _DWORD *v23; // ecx - _DWORD *v24; // ecx - int *v25; // eax - int *v26; // eax - int *v27; // esi - _BYTE *v28; // eax - int *v29; // eax - int *v30; // eax - unsigned int *v31; // eax - char v32; // al - _DWORD *v33; // ecx - char v34; // al - _DWORD *v35; // ecx - char v36; // al - _DWORD *v37; // ecx - int *v38; // eax - int *v39; // eax - int *v40; // eax - int *v41; // eax - int *v42; // eax - int v43; // ecx - char v44; // al - int v45; // [esp+0h] [ebp-3Ch] - int v46; // [esp+0h] [ebp-3Ch] - int v47; // [esp+4h] [ebp-38h] - int v48; // [esp+4h] [ebp-38h] - int v49; // [esp+8h] [ebp-34h] - int v50; // [esp+8h] [ebp-34h] - int v51; // [esp+Ch] [ebp-30h] - int v52; // [esp+Ch] [ebp-30h] - int v53; // [esp+10h] [ebp-2Ch] - int v54; // [esp+10h] [ebp-2Ch] - int v55; // [esp+14h] [ebp-28h] - int v56; // [esp+14h] [ebp-28h] - int v57; // [esp+18h] [ebp-24h] - int v58; // [esp+18h] [ebp-24h] - int v59; // [esp+1Ch] [ebp-20h] - int v60; // [esp+1Ch] [ebp-20h] - int v61; // [esp+1Ch] [ebp-20h] - int v62; // [esp+1Ch] [ebp-20h] - int v63; // [esp+20h] [ebp-1Ch] - int v64; // [esp+20h] [ebp-1Ch] - int v65; // [esp+24h] [ebp-18h] - int v66; // [esp+24h] [ebp-18h] - int v67; // [esp+28h] [ebp-14h] - int v68; // [esp+28h] [ebp-14h] - - v2 = a1[11]; - a1[11] = v2 + 20; - v3 = (_BYTE *)a1[3]; - if ( *v3 == 84 ) - { - a1[3] = v3 + 1; - if ( v3[1] ) - { - a1[3] = v3 + 2; - v14 = v3[1] - 65; - switch ( v14 ) - { - case 0: - v31 = d_template_arg(a1, v45, v47, v49, v51, v53, v55, v57, v59, v63, v65, v67); - result = d_make_comp(a1, 48, (int)v31, 0); - break; - case 2: - v27 = d_type(a1, v45, v47, v49, v51, v53, v55, v57, v59, v63, v65, v67); - if ( d_number((int)a1) < 0 ) - return 0; - v28 = (_BYTE *)a1[3]; - if ( *v28 != 95 ) - return 0; - a1[3] = v28 + 1; - v29 = d_type(a1, v46, v48, v50, v52, v54, v56, v58, v61, v64, v66, v68); - a1[11] += 5; - result = d_make_comp(a1, 11, (int)v29, (int)v27); - break; - case 5: - v26 = d_type(a1, v45, v47, v49, v51, v53, v55, v57, v59, v63, v65, v67); - result = d_make_comp(a1, 14, (int)v26, 0); - break; - case 7: - v30 = d_name(a1); - result = d_make_comp(a1, 20, (int)v30, 0); - break; - case 8: - v25 = d_type(a1, v45, v47, v49, v51, v53, v55, v57, v59, v63, v65, v67); - result = d_make_comp(a1, 12, (int)v25, 0); - break; - case 9: - v42 = d_type(a1, v45, v47, v49, v51, v53, v55, v57, v59, v63, v65, v67); - result = d_make_comp(a1, 18, (int)v42, 0); - break; - case 18: - v41 = d_type(a1, v45, v47, v49, v51, v53, v55, v57, v59, v63, v65, v67); - result = d_make_comp(a1, 13, (int)v41, 0); - break; - case 19: - a1[11] = v2 + 10; - v40 = d_type(a1, v45, v47, v49, v51, v53, v55, v57, v59, v63, v65, v67); - result = d_make_comp(a1, 10, (int)v40, 0); - break; - case 21: - a1[11] = v2 + 15; - v39 = d_type(a1, v45, v47, v49, v51, v53, v55, v57, v59, v63, v65, v67); - result = d_make_comp(a1, 9, (int)v39, 0); - break; - case 22: - v38 = d_name(a1); - result = d_make_comp(a1, 21, (int)v38, 0); - break; - case 34: - if ( !d_call_offset((int)a1, 0) || !d_call_offset((int)a1, 0) ) - return 0; - v36 = *(_BYTE *)a1[3]; - if ( v36 == 71 || v36 == 84 ) - v37 = d_special_name(a1); - else - v37 = d_encoding_part_0((int)a1, 0); - result = d_make_comp(a1, 17, (int)v37, 0); - break; - case 39: - if ( !d_call_offset((int)a1, 104) ) - return 0; - v34 = *(_BYTE *)a1[3]; - if ( v34 == 71 || v34 == 84 ) - v35 = d_special_name(a1); - else - v35 = d_encoding_part_0((int)a1, 0); - result = d_make_comp(a1, 15, (int)v35, 0); - break; - case 53: - if ( !d_call_offset((int)a1, 118) ) - return 0; - v32 = *(_BYTE *)a1[3]; - if ( v32 == 71 || v32 == 84 ) - v33 = d_special_name(a1); - else - v33 = d_encoding_part_0((int)a1, 0); - result = d_make_comp(a1, 16, (int)v33, 0); - break; - default: - return 0; - } - return result; - } - return 0; - } - if ( *v3 != 71 ) - return 0; - a1[3] = v3 + 1; - if ( !v3[1] ) - return 0; - a1[3] = v3 + 2; - v4 = v3[1]; - if ( v4 == 84 ) - { - if ( !v3[2] ) - goto LABEL_86; - a1[3] = v3 + 3; - v21 = v3[2] == 110; - v22 = v3[3]; - if ( v21 ) - { - if ( v22 == 71 || v22 == 84 ) - v24 = d_special_name(a1); - else - v24 = d_encoding_part_0((int)a1, 0); - return d_make_comp(a1, 74, (int)v24, 0); - } - if ( v22 == 71 || v22 == 84 ) - v23 = d_special_name(a1); - else -LABEL_86: - v23 = d_encoding_part_0((int)a1, 0); - return d_make_comp(a1, 73, (int)v23, 0); - } - if ( v4 <= 84 ) - { - if ( v4 == 65 ) - { - v18 = v3[2]; - if ( v18 == 71 || v18 == 84 ) - v19 = d_special_name(a1); - else - v19 = d_encoding_part_0((int)a1, 0); - return d_make_comp(a1, 23, (int)v19, 0); - } - if ( v4 == 82 ) - { - v15 = d_name(a1); - v16 = a1[5]; - if ( v16 >= a1[6] ) - { - v17 = 0; - } - else - { - v17 = (_DWORD *)(a1[4] + 20 * v16); - v17[1] = 0; - v17[2] = 0; - a1[5] = v16 + 1; - *v17 = 66; - v17[3] = d_number((int)a1); - } - return d_make_comp(a1, 22, (int)v15, (int)v17); - } - return 0; - } - if ( v4 != 86 ) - { - if ( v4 == 114 ) - { - v5 = d_number((int)a1); - if ( v5 > 1 ) - { - v6 = (_BYTE *)a1[3]; - if ( *v6 ) - { - v7 = v6 + 1; - a1[3] = v6 + 1; - if ( *v6 == 95 ) - { - v8 = v5 - 1; - comp = 0; - while ( *v7 ) - { - if ( *v7 == 36 ) - { - v10 = v7[1]; - switch ( v10 ) - { - case 'S': - v60 = 47; - break; - case '_': - v60 = 46; - break; - case '$': - v60 = 36; - break; - default: - return 0; - } - v11 = a1[5]; - v7 = (_BYTE *)(a1[3] + 2); - if ( v11 >= a1[6] ) - { - a1[3] = v7; - return 0; - } - v8 -= 2; - name = (_DWORD *)(a1[4] + 20 * v11); - name[1] = 0; - name[2] = 0; - a1[5] = v11 + 1; - *name = 65; - name[3] = v60; - a1[3] = v7; - } - else - { - v43 = 0; - do - { - if ( ++v43 >= v8 ) - break; - v44 = v7[v43]; - if ( !v44 ) - break; - } - while ( v44 != 36 ); - v62 = v43; - name = d_make_name(a1, (int)v7, v43); - v7 = (_BYTE *)(v62 + a1[3]); - v8 -= v62; - a1[3] = v7; - if ( !name ) - return 0; - } - if ( comp ) - { - comp = d_make_comp(a1, 64, (int)comp, (int)name); - if ( !comp ) - return 0; - } - else - { - comp = name; - } - if ( v8 <= 0 ) - return d_make_comp(a1, 63, (int)comp, 0); - } - } - } - } - } - return 0; - } - v20 = d_name(a1); - return d_make_comp(a1, 19, (int)v20, 0); -} -// 42CBF5: variable 'v45' is possibly undefined -// 42CBF5: variable 'v47' is possibly undefined -// 42CBF5: variable 'v49' is possibly undefined -// 42CBF5: variable 'v51' is possibly undefined -// 42CBF5: variable 'v53' is possibly undefined -// 42CBF5: variable 'v55' is possibly undefined -// 42CBF5: variable 'v57' is possibly undefined -// 42CBF5: variable 'v59' is possibly undefined -// 42CBF5: variable 'v63' is possibly undefined -// 42CBF5: variable 'v65' is possibly undefined -// 42CBF5: variable 'v67' is possibly undefined -// 42CC61: variable 'v46' is possibly undefined -// 42CC61: variable 'v48' is possibly undefined -// 42CC61: variable 'v50' is possibly undefined -// 42CC61: variable 'v52' is possibly undefined -// 42CC61: variable 'v54' is possibly undefined -// 42CC61: variable 'v56' is possibly undefined -// 42CC61: variable 'v58' is possibly undefined -// 42CC61: variable 'v61' is possibly undefined -// 42CC61: variable 'v64' is possibly undefined -// 42CC61: variable 'v66' is possibly undefined -// 42CC61: variable 'v68' is possibly undefined - -//----- (0042CF30) -------------------------------------------------------- -unsigned int *__usercall d_expr_primary@(_DWORD *a1@) -{ - _BYTE *v1; // edx - char *v3; // eax - char v4; // cl - int *v5; // eax - int v6; // ebp - char *v7; // edx - char v8; // cl - int v9; // esi - char *v10; // eax - char *v11; // edi - char v13; // al - _DWORD *comp; // ebp - char v15; // dl - int v16; // eax - int v17; // ecx - _DWORD *name; // eax - int v19; // [esp+0h] [ebp-2Ch] - int v20; // [esp+4h] [ebp-28h] - int v21; // [esp+8h] [ebp-24h] - int v22; // [esp+Ch] [ebp-20h] - int v23; // [esp+10h] [ebp-1Ch] - int v24; // [esp+14h] [ebp-18h] - int v25; // [esp+18h] [ebp-14h] - int v26; // [esp+1Ch] [ebp-10h] - int v27; // [esp+20h] [ebp-Ch] - int v28; // [esp+24h] [ebp-8h] - int v29; // [esp+28h] [ebp-4h] - - v1 = (_BYTE *)a1[3]; - if ( *v1 != 76 ) - return 0; - v3 = v1 + 1; - a1[3] = v1 + 1; - v4 = v1[1]; - if ( v4 == 95 ) - { - v3 = v1 + 2; - a1[3] = v1 + 2; - v15 = v1[2]; - if ( v15 != 90 ) - { - comp = 0; - goto LABEL_17; - } - goto LABEL_14; - } - if ( v4 == 90 ) - { -LABEL_14: - a1[3] = v3 + 1; - v13 = v3[1]; - if ( v13 == 71 || v13 == 84 ) - { - comp = d_special_name(a1); - v3 = (char *)a1[3]; - v15 = *v3; - } - else - { - comp = d_encoding_part_0((int)a1, 0); - v3 = (char *)a1[3]; - v15 = *v3; - } - goto LABEL_17; - } - v5 = d_type(a1, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29); - v6 = (int)v5; - if ( !v5 ) - return 0; - v7 = (char *)a1[3]; - if ( *v5 == 39 ) - { - v16 = v5[3]; - if ( *(_DWORD *)(v16 + 16) ) - a1[11] -= *(_DWORD *)(v16 + 4); - v8 = *v7; - if ( !strcmp(*(const char **)v16, "decltype(nullptr)") ) - { - if ( v8 == 69 ) - { - a1[3] = v7 + 1; - return (unsigned int *)v6; - } - v9 = 61; - if ( v8 != 110 ) - goto LABEL_9; - goto LABEL_24; - } - } - else - { - v8 = *v7; - } - v9 = 61; - if ( v8 == 110 ) - { -LABEL_24: - v9 = 62; - a1[3] = v7 + 1; - v8 = *++v7; - } - if ( v8 != 69 ) - { -LABEL_9: - v10 = v7 + 1; - while ( v8 ) - { - a1[3] = v10; - v11 = v10; - v8 = *v10++; - if ( v8 == 69 ) - { - v17 = v11 - v7; - goto LABEL_28; - } - } - return 0; - } - v17 = 0; -LABEL_28: - name = d_make_name(a1, (int)v7, v17); - comp = d_make_comp(a1, v9, v6, (int)name); - v3 = (char *)a1[3]; - v15 = *v3; -LABEL_17: - if ( v15 != 69 ) - return 0; - a1[3] = v3 + 1; - return comp; -} -// 42CF5B: variable 'v19' is possibly undefined -// 42CF5B: variable 'v20' is possibly undefined -// 42CF5B: variable 'v21' is possibly undefined -// 42CF5B: variable 'v22' is possibly undefined -// 42CF5B: variable 'v23' is possibly undefined -// 42CF5B: variable 'v24' is possibly undefined -// 42CF5B: variable 'v25' is possibly undefined -// 42CF5B: variable 'v26' is possibly undefined -// 42CF5B: variable 'v27' is possibly undefined -// 42CF5B: variable 'v28' is possibly undefined -// 42CF5B: variable 'v29' is possibly undefined - -//----- (0042D0F0) -------------------------------------------------------- -unsigned int *__usercall d_expression_1@(_DWORD *a1@) -{ - char *v2; // edx - char v3; // al - _DWORD *v4; // esi - _BYTE *v5; // eax - int *v7; // eax - int v8; // esi - int v9; // eax - int v10; // eax - char v11; // al - unsigned int *v12; // eax - char v13; // al - int v14; // eax - _BYTE *v15; // edx - int v16; // edx - int v17; // eax - _BYTE *v18; // edx - int v19; // esi - char **v20; // edx - char *v21; // edi - int v22; // eax - int v23; // ebp - unsigned int *v24; // eax - _DWORD *v25; // edi - void *v26; // ebp - _DWORD *v27; // eax - _DWORD *v28; // eax - _DWORD *v29; // eax - _DWORD *v30; // eax - int *v31; // esi - _DWORD *v32; // edi - _BYTE *v33; // eax - _DWORD *v35; // eax - _DWORD *v36; // eax - _DWORD *v37; // eax - int *v38; // eax - char v39; // dl - _BYTE *v40; // edx - char *v41; // eax - void *v42; // ebp - int v43; // eax - _DWORD *v44; // edi - _DWORD *v45; // eax - unsigned __int8 v46; // al - char *v47; // eax - char v48; // dl - _BYTE *v49; // eax - _DWORD *v50; // eax - _BYTE *v51; // eax - char v52; // al - int v53; // [esp+0h] [ebp-2Ch] - _DWORD *comp; // [esp+0h] [ebp-2Ch] - int v55; // [esp+4h] [ebp-28h] - int v56; // [esp+8h] [ebp-24h] - int v57; // [esp+Ch] [ebp-20h] - int v58; // [esp+10h] [ebp-1Ch] - int v59; // [esp+14h] [ebp-18h] - int v60; // [esp+18h] [ebp-14h] - int v61; // [esp+1Ch] [ebp-10h] - int v62; // [esp+20h] [ebp-Ch] - int v63; // [esp+24h] [ebp-8h] - int v64; // [esp+28h] [ebp-4h] - - v2 = (char *)a1[3]; - v3 = *v2; - if ( *v2 == 76 ) - return d_expr_primary(a1); - if ( v3 != 84 ) - { - if ( v3 == 115 ) - { - v11 = v2[1]; - if ( v11 == 114 ) - { - a1[3] = v2 + 2; - v31 = d_type(a1, v53, v55, v56, v57, v58, v59, v60, v61, v62, v63, v64); - v32 = d_unqualified_name(a1); - v33 = (_BYTE *)a1[3]; - if ( *v33 != 73 ) - return d_make_comp(a1, 1, (int)v31, (int)v32); - a1[3] = v33 + 1; - v37 = d_template_args_1(a1); - comp = d_make_comp(a1, 4, (int)v32, (int)v37); - return d_make_comp(a1, 1, (int)v31, (int)comp); - } - if ( v11 == 112 ) - { - a1[3] = v2 + 2; - v12 = d_expression_1(a1); - return d_make_comp(a1, 75, (int)v12, 0); - } - } - else if ( v3 == 102 ) - { - if ( v2[1] == 112 ) - { - a1[3] = v2 + 2; - v13 = v2[2]; - switch ( v13 ) - { - case 'T': - a1[3] = v2 + 3; - v16 = 0; - break; - case '_': - a1[3] = v2 + 3; - v16 = 1; - break; - case 'n': - return 0; - default: - v14 = d_number((int)a1); - if ( v14 + 1 < 0 ) - return 0; - v15 = (_BYTE *)a1[3]; - if ( *v15 != 95 ) - return 0; - a1[3] = v15 + 1; - if ( v14 == 2147483646 ) - return 0; - v16 = v14 + 2; - break; - } - v17 = a1[5]; - if ( v17 < a1[6] ) - { - v4 = (_DWORD *)(a1[4] + 20 * v17); - v4[1] = 0; - v4[2] = 0; - a1[5] = v17 + 1; - *v4 = 6; - v4[3] = v16; - return v4; - } - return 0; - } - } - else - { - if ( (unsigned __int8)(v3 - 48) <= 9u ) - goto LABEL_6; - if ( v3 == 111 ) - { - if ( v2[1] == 110 ) - { - a1[3] = v2 + 2; -LABEL_6: - v4 = d_unqualified_name(a1); - if ( v4 ) - { - v5 = (_BYTE *)a1[3]; - if ( *v5 == 73 ) - { - a1[3] = v5 + 1; - v30 = d_template_args_1(a1); - return d_make_comp(a1, 4, (int)v4, (int)v30); - } - return v4; - } - return 0; - } - } - else if ( (v3 == 105 || v3 == 116) && v2[1] == 108 ) - { - v18 = v2 + 2; - v19 = 0; - a1[3] = v18; - if ( v3 == 116 ) - { - v38 = d_type(a1, v53, v55, v56, v57, v58, v59, v60, v61, v62, v63, v64); - v18 = (_BYTE *)a1[3]; - v19 = (int)v38; - } - if ( *v18 && v18[1] ) - { - v36 = d_exprlist(a1, 69); - return d_make_comp(a1, 49, v19, (int)v36); - } - return 0; - } - } - v7 = d_operator_name(a1); - v8 = (int)v7; - if ( !v7 ) - return 0; - v9 = *v7; - if ( v9 != 50 ) - { - if ( v9 == 52 ) - { - v51 = (_BYTE *)a1[3]; - if ( *v51 == 95 ) - { - a1[3] = v51 + 1; - v35 = d_exprlist(a1, 69); - return d_make_comp(a1, 55, v8, (int)v35); - } - goto LABEL_65; - } - if ( v9 == 51 ) - { - v10 = *(_DWORD *)(v8 + 12); - if ( v10 <= 1 ) - { - if ( !v10 ) - return d_make_comp(a1, 54, v8, 0); - if ( v10 == 1 ) - { -LABEL_65: - v35 = d_expression_1(a1); - return d_make_comp(a1, 55, v8, (int)v35); - } - } - } - return 0; - } - v20 = *(char ***)(v8 + 12); - v21 = *v20; - a1[11] += v20[2] - 2; - v22 = (unsigned __int8)*v21; - if ( v22 == 115 && v21[1] == 116 && !v21[2] ) - { - v35 = d_type(a1, v53, v55, v56, v57, v58, v59, v60, v61, v62, v63, v64); - return d_make_comp(a1, 55, v8, (int)v35); - } - v23 = (int)v20[3]; - if ( v23 == 1 ) - { - v39 = *v21; - if ( (*v21 == 112 || v39 == 109) && v39 == v21[1] ) - { - v40 = (_BYTE *)a1[3]; - if ( *v40 == 95 ) - { - v23 = 0; - a1[3] = v40 + 1; - v22 = (unsigned __int8)*v21; - } - } - else - { - v23 = 0; - } - if ( v22 == 115 && v21[1] == 80 && !v21[2] ) - v35 = d_template_args_1(a1); - else - v35 = d_expression_1(a1); - if ( v23 ) - v35 = d_make_comp(a1, 57, (int)v35, (int)v35); - return d_make_comp(a1, 55, v8, (int)v35); - } - if ( v23 <= 1 ) - { - if ( !v23 ) - return d_make_comp(a1, 54, v8, 0); - return 0; - } - if ( v23 == 2 ) - { - v41 = **(char ***)(v8 + 12); - if ( v41[1] == 99 && ((v52 = *v41, (unsigned __int8)(v52 - 99) <= 1u) || (unsigned __int8)(v52 - 114) <= 1u) ) - { - v42 = d_type(a1, v53, v55, v56, v57, v58, v59, v60, v61, v62, v63, v64); - } - else if ( *v21 == 102 ) - { - v42 = d_operator_name(a1); - } - else - { - v42 = d_expression_1(a1); - } - v43 = (unsigned __int8)*v21; - if ( v43 == 99 && v21[1] == 108 && !v21[2] ) - { - v44 = d_exprlist(a1, 69); - } - else if ( v43 == 100 && v21[1] == 116 && !v21[2] || v43 == 112 && v21[1] == 116 && !v21[2] ) - { - v44 = d_unqualified_name(a1); - v49 = (_BYTE *)a1[3]; - if ( *v49 == 73 ) - { - a1[3] = v49 + 1; - v50 = d_template_args_1(a1); - v44 = d_make_comp(a1, 4, (int)v44, (int)v50); - } - } - else - { - v44 = d_expression_1(a1); - } - v45 = d_make_comp(a1, 57, (int)v42, (int)v44); - return d_make_comp(a1, 56, v8, (int)v45); - } - if ( v23 != 3 ) - return 0; - if ( v22 == 113 && v21[1] == 117 && !v21[2] ) - { - v24 = d_expression_1(a1); - } - else - { - if ( *v21 != 102 ) - { - if ( *v21 != 110 ) - return 0; - v46 = v21[1]; - if ( v46 != 119 && v46 != 97 ) - return 0; - v25 = d_exprlist(a1, 95); - v26 = d_type(a1, v53, v55, v56, v57, v58, v59, v60, v61, v62, v63, v64); - v47 = (char *)a1[3]; - v48 = *v47; - if ( *v47 == 69 ) - { - a1[3] = v47 + 1; - v27 = 0; - } - else if ( v48 == 112 ) - { - if ( v47[1] != 105 ) - return 0; - a1[3] = v47 + 2; - v27 = d_exprlist(a1, 69); - } - else - { - if ( v48 != 105 || v47[1] != 108 ) - return 0; - v27 = d_expression_1(a1); - } - goto LABEL_53; - } - v24 = d_operator_name(a1); - } - v25 = v24; - v26 = d_expression_1(a1); - v27 = d_expression_1(a1); - if ( !v27 ) - return 0; -LABEL_53: - v28 = d_make_comp(a1, 60, (int)v26, (int)v27); - v29 = d_make_comp(a1, 59, (int)v25, (int)v28); - return d_make_comp(a1, 58, v8, (int)v29); - } - return d_template_param(a1); -} -// 42D4D2: variable 'v53' is possibly undefined -// 42D4D2: variable 'v55' is possibly undefined -// 42D4D2: variable 'v56' is possibly undefined -// 42D4D2: variable 'v57' is possibly undefined -// 42D4D2: variable 'v58' is possibly undefined -// 42D4D2: variable 'v59' is possibly undefined -// 42D4D2: variable 'v60' is possibly undefined -// 42D4D2: variable 'v61' is possibly undefined -// 42D4D2: variable 'v62' is possibly undefined -// 42D4D2: variable 'v63' is possibly undefined -// 42D4D2: variable 'v64' is possibly undefined - -//----- (0042D7A0) -------------------------------------------------------- -_DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
) -{ - _BYTE *v4; // eax - int *v5; // esi - _DWORD *comp; // eax - _BYTE *v7; // eax - int v8; // ebp - unsigned int *v9; // eax - int v11; // [esp+1Ch] [ebp-20h] BYREF - - v4 = (_BYTE *)a1[3]; - v11 = 0; - v5 = &v11; - if ( *v4 == a2 ) - { - a1[3] = v4 + 1; - return d_make_comp(a1, 46, 0, 0); - } - else - { - do - { - v8 = a1[12]; - a1[12] = 1; - v9 = d_expression_1(a1); - a1[12] = v8; - if ( !v9 ) - return 0; - comp = d_make_comp(a1, 46, (int)v9, 0); - *v5 = (int)comp; - if ( !comp ) - return 0; - v5 = comp + 4; - v7 = (_BYTE *)a1[3]; - } - while ( *v7 != a2 ); - a1[3] = v7 + 1; - return (_DWORD *)v11; - } -} - -//----- (0042D850) -------------------------------------------------------- -int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@) -{ - int **v3; // esi - char *v5; // ebp - char i; // di - char v7; // al - int v8; // edi - unsigned int *v9; // eax - _BYTE *v10; // edx - int v11; // edx - _DWORD *comp; // eax - int *v14; // eax - int v15; // edx - _BYTE *v16; // edx - int **v17; // eax - int v18; // [esp+1Ch] [ebp-30h] - int v19; // [esp+20h] [ebp-2Ch] - int v20; // [esp+24h] [ebp-28h] - char v21; // [esp+28h] [ebp-24h] - - v3 = a2; - v21 = a3; - v20 = a3 == 0 ? 27 : 30; - v19 = a3 == 0 ? 26 : 29; - v18 = a3 == 0 ? 25 : 28; - v5 = (char *)a1[3]; - for ( i = *v5; next_is_type_qual_isra_0(v5); i = *v5 ) - { - a1[3] = v5 + 1; - switch ( i ) - { - case 'r': - a1[11] += 9; - v11 = v18; - v9 = 0; - break; - case 'V': - a1[11] += 9; - v11 = v19; - v9 = 0; - break; - case 'K': - a1[11] += 6; - v11 = v20; - v9 = 0; - break; - default: - if ( !v5[1] ) - return 0; - a1[3] = v5 + 2; - v7 = v5[1]; - if ( v7 == 120 ) - { - a1[11] += 17; - v9 = 0; - v11 = 77; - } - else if ( (v7 & 0xDF) == 79 ) - { - a1[11] += 9; - if ( v7 == 79 ) - { - v8 = a1[12]; - a1[12] = 1; - v9 = d_expression_1(a1); - a1[12] = v8; - if ( !v9 ) - return 0; - v10 = (_BYTE *)a1[3]; - if ( *v10 != 69 ) - return 0; - a1[3] = v10 + 1; - v11 = 79; - } - else - { - v9 = 0; - v11 = 79; - } - } - else - { - if ( v7 != 119 ) - return 0; - a1[11] += 6; - v9 = (unsigned int *)d_parmlist(a1); - if ( !v9 ) - return 0; - v16 = (_BYTE *)a1[3]; - if ( *v16 != 69 ) - return 0; - a1[3] = v16 + 1; - v11 = 80; - } - break; - } - comp = d_make_comp(a1, v11, 0, (int)v9); - *v3 = comp; - if ( !comp ) - return 0; - v5 = (char *)a1[3]; - v3 = (int **)(comp + 3); - } - if ( (v21 & 1) == 0 && i == 70 && v3 != a2 ) - { - v14 = *a2; - v15 = **a2; - if ( v15 != 26 ) - goto LABEL_34; -LABEL_21: - *v14 = 29; - while ( 1 ) - { - v17 = (int **)(v14 + 3); - if ( v3 == v17 ) - break; - v14 = *v17; - v15 = *v14; - if ( *v14 == 26 ) - goto LABEL_21; -LABEL_34: - if ( v15 == 27 ) - { - *v14 = 30; - } - else if ( v15 == 25 ) - { - *v14 = 28; - } - } - } - return v3; -} - -//----- (0042DA70) -------------------------------------------------------- -unsigned int *__usercall d_template_arg@( - _DWORD *a1@, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - int a10, - int a11, - int a12) -{ - char *v13; // edx - char v14; // al - unsigned int *result; // eax - int v16; // esi - _BYTE *v17; // edx - - v13 = (char *)a1[3]; - v14 = *v13; - if ( *v13 == 76 ) - return d_expr_primary(a1); - if ( v14 <= 76 ) - { - if ( (unsigned __int8)(v14 - 73) <= 1u ) - { - a1[3] = v13 + 1; - return d_template_args_1(a1); - } - return (unsigned int *)d_type(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); - } - if ( v14 != 88 ) - return (unsigned int *)d_type(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); - v16 = a1[12]; - a1[12] = 1; - a1[3] = v13 + 1; - result = d_expression_1(a1); - v17 = (_BYTE *)a1[3]; - a1[12] = v16; - if ( *v17 != 69 ) - return 0; - a1[3] = v17 + 1; - return result; -} - -//----- (0042DB00) -------------------------------------------------------- -_DWORD *__usercall d_template_args_1@(_DWORD *a1@) -{ - int v2; // edi - _BYTE *v3; // eax - int *v4; // esi - _DWORD *comp; // eax - _BYTE *v6; // eax - unsigned int *v7; // ecx - int v9; // [esp+1Ch] [ebp-10h] BYREF - - v2 = a1[10]; - v3 = (_BYTE *)a1[3]; - if ( *v3 == 69 ) - { - a1[3] = v3 + 1; - return d_make_comp(a1, 47, 0, 0); - } - else - { - v9 = 0; - v4 = &v9; - do - { - v7 = d_template_arg(a1); - if ( !v7 ) - return 0; - comp = d_make_comp(a1, 47, (int)v7, 0); - *v4 = (int)comp; - if ( !comp ) - return 0; - v4 = comp + 4; - v6 = (_BYTE *)a1[3]; - } - while ( *v6 != 69 ); - a1[10] = v2; - a1[3] = v6 + 1; - return (_DWORD *)v9; - } -} - -//----- (0042DBB0) -------------------------------------------------------- -unsigned int __usercall d_print_comp_inner@(unsigned int result@, int a2@) -{ - unsigned int v2; // ebx - int v3; // edi - unsigned int v4; // ebp - _DWORD *v5; // esi - unsigned int *v6; // edi - FILE *v7; // edx - int v8; // ecx - int v9; // eax - int v10; // edx - char *v11; // eax - int v12; // eax - int v13; // ecx - char *v14; // eax - int v15; // edx - char *v16; // eax - int v17; // ecx - int v18; // edx - _DWORD *v19; // ecx - unsigned int v20; // edi - int v21; // eax - int v22; // edx - int v23; // eax - int v24; // edx - char v25; // dl - int v26; // ecx - unsigned int v27; // edi - const char *v28; // ebp - char i14; // al - unsigned int v30; // edx - const char *v31; // edi - int v32; // eax - char i; // dl - int v34; // ecx - int v35; // eax - int v36; // eax - const char *v37; // edi - char i15; // dl - int v39; // ecx - int v40; // eax - int v41; // ebp - char **v42; // edx - FILE *v43; // ebp - int v44; // eax - const char *v45; // edi - char jj; // dl - int v47; // ecx - int v48; // eax - int v49; // eax - const char *v50; // edi - char ii; // dl - int v52; // ecx - int v53; // eax - int v54; // eax - const char *v55; // edi - char i6; // dl - int v57; // ecx - int v58; // eax - int v59; // eax - const char *v60; // edi - char i5; // dl - int v62; // ecx - int v63; // eax - int v64; // eax - const char *v65; // edi - char i4; // dl - int v67; // ecx - int v68; // eax - const char *v69; // edi - int v70; // eax - char i29; // dl - int v72; // ecx - int v73; // eax - _DWORD *v74; // eax - int v75; // ecx - const char *v76; // esi - char i28; // dl - unsigned int v78; // ecx - int v79; // eax - int v80; // eax - const char *v81; // edi - char i27; // dl - int v83; // ecx - int v84; // eax - int v85; // eax - const char *v86; // edi - char i26; // dl - int v88; // ecx - int v89; // eax - int v90; // eax - const char *v91; // edi - char i25; // dl - int v93; // ecx - int v94; // eax - int v95; // eax - const char *v96; // edi - char i2; // dl - int v98; // ecx - int v99; // eax - int v100; // eax - const char *v101; // edi - char i1; // dl - int v103; // ecx - int v104; // eax - int v105; // eax - const char *v106; // edi - char nn; // dl - int v108; // ecx - int v109; // eax - int v110; // eax - const char *v111; // edi - char mm; // dl - int v113; // ecx - int v114; // eax - int v115; // eax - const char *v116; // edi - char i3; // dl - int v118; // ecx - int v119; // eax - int v120; // edx - int v121; // ecx - const char *v122; // edi - int v123; // eax - char i30; // dl - int v125; // ecx - int v126; // eax - char *v127; // ebp - unsigned int v128; // edi - unsigned int v129; // ecx - char *v130; // ebp - int v131; // eax - unsigned int v132; // edx - _DWORD *v133; // ecx - int v134; // edi - char *v135; // esi - char *v136; // edi - unsigned int v137; // ecx - char v138; // dl - int v139; // eax - int v140; // ecx - char *v141; // eax - _DWORD *v142; // eax - unsigned __int8 *v143; // edx - int v144; // eax - int v145; // ecx - int v146; // ecx - unsigned __int8 *v147; // eax - int v148; // edx - int v149; // ebp - const char *v150; // esi - char k; // dl - unsigned int v152; // ecx - int v153; // eax - int v154; // eax - const char *v155; // edi - char i11; // dl - int v157; // ecx - int v158; // eax - int v159; // eax - const char *v160; // edi - char i9; // dl - int v162; // ecx - int v163; // eax - int v164; // eax - const char *v165; // edi - char i8; // dl - int v167; // ecx - int v168; // eax - int v169; // eax - const char *v170; // edi - char i7; // dl - int v172; // ecx - int v173; // eax - int v174; // ecx - int **v175; // eax - int v176; // eax - char *base; // ecx - int v178; // eax - const char *v179; // edi - char j; // dl - int v181; // ecx - int v182; // eax - int v183; // edi - int v184; // ebp - int v185; // eax - int v186; // edx - int v187; // edx - int v188; // ecx - int v189; // edx - const char *v190; // esi - char i13; // dl - unsigned int v192; // ecx - int v193; // eax - int v194; // eax - const char *v195; // edi - char n; // dl - int v197; // ecx - int v198; // eax - int v199; // eax - const char *v200; // edi - char i20; // dl - int v202; // ecx - int v203; // eax - int v204; // eax - const char *v205; // edi - char i24; // dl - int v207; // ecx - int v208; // eax - int v209; // eax - int v210; // edi - _DWORD *v211; // ecx - int v212; // eax - _DWORD *v213; // ebp - int v214; // esi - int v215; // eax - const char *v216; // edi - char i21; // dl - int v218; // ecx - int v219; // eax - FILE *v220; // esi - unsigned int v221; // edi - FILE *v222; // edi - unsigned int v223; // ecx - char v224; // dl - int v225; // eax - int v226; // eax - const char *v227; // edi - char i22; // dl - int v229; // ecx - int v230; // eax - int v231; // eax - const char *v232; // edi - char i17; // dl - int v234; // ecx - int v235; // eax - int v236; // eax - const char *v237; // edi - char i16; // dl - int v239; // ecx - int v240; // eax - int v241; // edi - const char *v242; // esi - char v243; // dl - int v244; // ebp - unsigned int v245; // ecx - int v246; // eax - int v247; // ecx - int v248; // esi - int v249; // eax - int v250; // edx - int v251; // edx - _DWORD *v252; // edi - int v253; // eax - int v254; // eax - _DWORD *v255; // ecx - int v256; // eax - const char *v257; // edi - char i23; // dl - int v259; // ecx - int v260; // eax - int v261; // edi - char *v262; // esi - char *v263; // edi - unsigned int v264; // ecx - char v265; // dl - int v266; // eax - int v267; // edi - char *v268; // esi - char *v269; // edi - unsigned int v270; // ecx - char v271; // dl - int v272; // eax - int v273; // edx - bool v274; // cf - const char *v275; // edi - int v276; // eax - char kk; // dl - int v278; // ecx - int v279; // eax - _DWORD *v280; // edi - FILE *v281; // esi - size_t v282; // ebp - int v283; // eax - FILE *v284; // ebp - int v285; // ecx - char ptr; // dl - int v287; // eax - char *v288; // esi - int v289; // edi - char *v290; // edi - unsigned int v291; // ecx - char v292; // dl - int v293; // eax - int v294; // ecx - const char *v295; // edi - int v296; // eax - char v297; // dl - int v298; // ecx - int v299; // eax - int v300; // eax - FILE *v301; // esi - size_t v302; // edi - FILE *v303; // edi - unsigned int v304; // ecx - char v305; // dl - int v306; // eax - int v307; // eax - int v308; // edx - const char *v309; // edi - int v310; // eax - char i10; // dl - int v312; // ecx - int v313; // eax - int v314; // eax - FILE *v315; // esi - size_t v316; // edi - FILE *v317; // edi - unsigned int v318; // ecx - char v319; // dl - int v320; // eax - int v321; // ebp - int v322; // eax - int v323; // edx - _DWORD *charbuf; // ecx - int v325; // eax - char v326; // al - const char *v327; // esi - char i12; // dl - unsigned int v329; // ecx - int v330; // eax - int v331; // ecx - _DWORD *v332; // esi - int v333; // eax - FILE *v334; // esi - unsigned int v335; // edi - FILE *v336; // edi - unsigned int v337; // ecx - char v338; // dl - int v339; // eax - FILE *v340; // esi - size_t v341; // edi - FILE *v342; // edi - unsigned int v343; // ecx - char v344; // dl - int v345; // eax - const char *v346; // esi - char m; // dl - unsigned int v348; // ecx - int v349; // eax - int v350; // eax - char *v351; // eax - char *v352; // eax - char *v353; // eax - unsigned __int8 *v354; // ebp - int v355; // edx - int v356; // ecx - _DWORD *i18; // eax - int v358; // ecx - int v359; // eax - int v360; // ecx - int v361; // eax - _DWORD *pack; // eax - int v363; // ecx - int i19; // edx - int v365; // eax - int v366; // eax - int v367; // eax - int v368; // eax - int v369; // eax - int v370; // eax - int v371; // eax - int v372; // eax - _DWORD *v373; // eax - int v374; // edi - _DWORD *v375; // ecx - int v376; // edx - _DWORD *v377; // ebp - _DWORD *v378; // edx - int v379; // edx - char v380; // al - int v381; // eax - int v382; // edx - FILE *v383; // esi - unsigned int v384; // edi - FILE *v385; // edi - unsigned int v386; // ecx - char v387; // dl - int v388; // eax - int v389; // eax - int v390; // eax - const char *v391; // edx - int v392; // edx - int v393; // eax - unsigned int v394; // edi - int v395; // eax - int v396; // eax - bool v397; // zf - _DWORD *v398; // ecx - int v399; // ebp - int *v400; // ebp - int v401; // edx - int v402; // edi - char *Str2; // [esp+4h] [ebp-88h] - int v404; // [esp+8h] [ebp-84h] - char *v405; // [esp+10h] [ebp-7Ch] - char v406; // [esp+10h] [ebp-7Ch] - char v407; // [esp+10h] [ebp-7Ch] - char v408; // [esp+10h] [ebp-7Ch] - char v409; // [esp+10h] [ebp-7Ch] - char v410; // [esp+10h] [ebp-7Ch] - char v411; // [esp+10h] [ebp-7Ch] - char v412; // [esp+10h] [ebp-7Ch] - char v413; // [esp+10h] [ebp-7Ch] - char v414; // [esp+10h] [ebp-7Ch] - char v415; // [esp+10h] [ebp-7Ch] - char v416; // [esp+10h] [ebp-7Ch] - char v417; // [esp+10h] [ebp-7Ch] - char v418; // [esp+10h] [ebp-7Ch] - char v419; // [esp+10h] [ebp-7Ch] - char v420; // [esp+10h] [ebp-7Ch] - char v421; // [esp+10h] [ebp-7Ch] - char v422; // [esp+10h] [ebp-7Ch] - char v423; // [esp+10h] [ebp-7Ch] - char v424; // [esp+10h] [ebp-7Ch] - char v425; // [esp+10h] [ebp-7Ch] - char v426; // [esp+10h] [ebp-7Ch] - char v427; // [esp+10h] [ebp-7Ch] - char v428; // [esp+10h] [ebp-7Ch] - char v429; // [esp+10h] [ebp-7Ch] - char v430; // [esp+10h] [ebp-7Ch] - char v431; // [esp+10h] [ebp-7Ch] - char v432; // [esp+10h] [ebp-7Ch] - char v433; // [esp+10h] [ebp-7Ch] - char v434; // [esp+10h] [ebp-7Ch] - char v435; // [esp+10h] [ebp-7Ch] - _DWORD *v436; // [esp+10h] [ebp-7Ch] - char v437; // [esp+10h] [ebp-7Ch] - char v438; // [esp+10h] [ebp-7Ch] - char v439; // [esp+10h] [ebp-7Ch] - char v440; // [esp+10h] [ebp-7Ch] - char v441; // [esp+10h] [ebp-7Ch] - char v442; // [esp+10h] [ebp-7Ch] - char v443; // [esp+10h] [ebp-7Ch] - char v444; // [esp+10h] [ebp-7Ch] - char v445; // [esp+10h] [ebp-7Ch] - char v446; // [esp+10h] [ebp-7Ch] - char v447; // [esp+10h] [ebp-7Ch] - char v448; // [esp+10h] [ebp-7Ch] - char v449; // [esp+10h] [ebp-7Ch] - char v450; // [esp+10h] [ebp-7Ch] - char v451; // [esp+10h] [ebp-7Ch] - char v452; // [esp+10h] [ebp-7Ch] - char v453; // [esp+10h] [ebp-7Ch] - char v454; // [esp+10h] [ebp-7Ch] - char v455; // [esp+10h] [ebp-7Ch] - char v456; // [esp+10h] [ebp-7Ch] - int v457; // [esp+10h] [ebp-7Ch] - char v458; // [esp+10h] [ebp-7Ch] - int v459; // [esp+10h] [ebp-7Ch] - unsigned int v460; // [esp+14h] [ebp-78h] - int v461; // [esp+14h] [ebp-78h] - int v462; // [esp+14h] [ebp-78h] - char *v463; // [esp+14h] [ebp-78h] - FILE *v464; // [esp+18h] [ebp-74h] - int v465; // [esp+1Ch] [ebp-70h] - int v466[2]; // [esp+28h] [ebp-64h] BYREF - FILE Str[2]; // [esp+30h] [ebp-5Ch] BYREF - - v2 = result; - if ( !a2 ) - goto LABEL_7; - v3 = *(_DWORD *)(result + 280); - if ( v3 ) - return result; - v4 = *(_DWORD *)a2; - v5 = (_DWORD *)a2; - switch ( *(_DWORD *)a2 ) - { - case 0: - v261 = *(_DWORD *)(a2 + 16); - v262 = *(char **)(a2 + 12); - if ( v261 ) - { - result = *(_DWORD *)(result + 256); - v263 = &v262[v261]; - do - { - v265 = *v262; - if ( result == 255 ) - { - v266 = *(_DWORD *)(v2 + 268); - v444 = *v262; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v266); - ++*(_DWORD *)(v2 + 296); - v265 = v444; - v264 = v4; - result = 1; - } - else - { - v264 = result++; - } - ++v262; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v264) = v265; - *(_BYTE *)(v2 + 260) = v265; - } - while ( v263 != v262 ); - } - return result; - case 1: - case 2: - v31 = "::"; - d_print_comp(result, *(_DWORD *)(a2 + 12)); - v32 = *(_DWORD *)(v2 + 256); - for ( i = 58; ; i = *v31 ) - { - if ( v32 == 255 ) - { - v35 = *(_DWORD *)(v2 + 268); - v407 = i; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v35); - ++*(_DWORD *)(v2 + 296); - i = v407; - v34 = 0; - v32 = 1; - } - else - { - v34 = v32++; - } - ++v31; - *(_DWORD *)(v2 + 256) = v32; - *(_BYTE *)(v2 + v34) = i; - *(_BYTE *)(v2 + 260) = i; - if ( "" == v31 ) - break; - } - v280 = (_DWORD *)v5[4]; - if ( *v280 == 71 ) - { - v281 = Str; - d_append_string(v2, "{default arg#"); - sprintf_constprop_0(Str, (int)"%d", v280[4] + 1); - v282 = strlen((const char *)Str); - if ( v282 ) - { - v283 = *(_DWORD *)(v2 + 256); - v284 = (FILE *)((char *)Str + v282); - do - { - ptr = (char)v281->_ptr; - if ( v283 == 255 ) - { - v287 = *(_DWORD *)(v2 + 268); - v447 = (char)v281->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v287); - ++*(_DWORD *)(v2 + 296); - ptr = v447; - v285 = 0; - v283 = 1; - } - else - { - v285 = v283++; - } - v281 = (FILE *)((char *)v281 + 1); - *(_DWORD *)(v2 + 256) = v283; - *(_BYTE *)(v2 + v285) = ptr; - *(_BYTE *)(v2 + 260) = ptr; - } - while ( v284 != v281 ); - } - d_append_string(v2, "}::"); - v8 = v280[3]; - } - else - { - v8 = v5[4]; - } - return d_print_comp(v2, v8); - case 3: - result = *(_DWORD *)(result + 276); - v6 = *(unsigned int **)(a2 + 12); - *(_DWORD *)(v2 + 276) = 0; - v465 = result; - if ( !v6 ) - goto LABEL_7; - v41 = 0; - v461 = *(_DWORD *)(v2 + 272); - v7 = Str; - result = 0; - while ( 2 ) - { - v7->_ptr = (char *)result; - ++v41; - v7->_base = 0; - v7->_flag = v461; - result = *v6; - v464 = v7; - v7->_cnt = (int)v6; - if ( result == 77 ) - goto LABEL_4; - if ( result > 0x4D ) - { - v274 = result == 79; - result -= 79; - if ( !v274 && result != 1 ) - { - *(_DWORD *)(v2 + 276) = v7; - goto LABEL_85; - } - } - else if ( result - 28 > 4 ) - { - *(_DWORD *)(v2 + 276) = v7; - if ( result == 2 ) - { - v6 = (unsigned int *)v6[4]; - result = *v6; - if ( *v6 == 71 ) - { - v6 = (unsigned int *)v6[3]; - if ( !v6 ) - goto LABEL_7; - result = *v6; - } - v42 = &Str[0]._ptr + 4 * v41; - while ( 1 ) - { - if ( result != 77 ) - { - if ( result > 0x4D ) - { - v274 = result == 79; - result -= 79; - if ( !v274 && result != 1 ) - goto LABEL_85; - } - else if ( result - 28 > 4 ) - { - break; - } - } - if ( v41 == 4 ) - goto LABEL_7; - v351 = *(v42 - 3); - *(v42 - 3) = (char *)v6; - ++v41; - *(_DWORD *)(v2 + 276) = v42; - v42[1] = v351; - v352 = *(v42 - 2); - *(v42 - 2) = 0; - v6 = (unsigned int *)v6[3]; - v42[2] = v352; - v42[3] = *(v42 - 1); - v353 = (char *)(v42 - 4); - v42 += 4; - *(v42 - 4) = v353; - result = v461; - *(v42 - 5) = (char *)v461; - if ( !v6 ) - goto LABEL_7; - result = *v6; - } - } - if ( result == 4 ) - { - v466[1] = (int)v6; - v466[0] = v461; - *(_DWORD *)(v2 + 272) = v466; - } -LABEL_85: - d_print_comp(v2, *(_DWORD *)(a2 + 16)); - if ( *v6 == 4 ) - *(_DWORD *)(v2 + 272) = v466[0]; - v43 = (FILE *)((char *)Str + 16 * v41); - do - { - if ( !v43[-1]._bufsiz ) - { - v322 = *(_DWORD *)(v2 + 256); - if ( v322 == 255 ) - { - v381 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v381); - ++*(_DWORD *)(v2 + 296); - v323 = 1; - v322 = 0; - } - else - { - v323 = v322 + 1; - } - *(_DWORD *)(v2 + 256) = v323; - charbuf = (_DWORD *)v43[-1]._charbuf; - *(_BYTE *)(v2 + v322) = 32; - *(_BYTE *)(v2 + 260) = 32; - d_print_mod(v2, charbuf); - } - v43 = (FILE *)((char *)v43 - 16); - } - while ( Str != v43 ); - result = v465; - *(_DWORD *)(v2 + 276) = v465; - return result; - } -LABEL_4: - v6 = (unsigned int *)v6[3]; - if ( v6 ) - { - result = (unsigned int)v7; - v7 = (FILE *)((char *)v7 + 16); - if ( v41 == 4 ) - { - *(_DWORD *)(v2 + 276) = v464; - goto LABEL_7; - } - continue; - } - break; - } - *(_DWORD *)(v2 + 276) = v7; - goto LABEL_7; - case 4: - v183 = *(_DWORD *)(result + 328); - v184 = *(_DWORD *)(result + 276); - *(_DWORD *)(result + 328) = a2; - *(_DWORD *)(result + 276) = 0; - d_print_comp(result, *(_DWORD *)(a2 + 12)); - if ( *(_BYTE *)(v2 + 260) == 60 ) - d_append_char(v2, 32); - v185 = *(_DWORD *)(v2 + 256); - if ( v185 == 255 ) - { - v371 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v371); - ++*(_DWORD *)(v2 + 296); - v186 = 1; - v185 = 0; - } - else - { - v186 = v185 + 1; - } - *(_DWORD *)(v2 + 256) = v186; - *(_BYTE *)(v2 + v185) = 60; - *(_BYTE *)(v2 + 260) = 60; - d_print_comp(v2, v5[4]); - if ( *(_BYTE *)(v2 + 260) == 62 ) - d_append_char(v2, 32); - result = *(_DWORD *)(v2 + 256); - if ( result == 255 ) - { - v370 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v370); - ++*(_DWORD *)(v2 + 296); - v187 = 1; - result = 0; - } - else - { - v187 = result + 1; - } - *(_DWORD *)(v2 + 256) = v187; - *(_BYTE *)(v2 + result) = 62; - *(_BYTE *)(v2 + 260) = 62; - *(_DWORD *)(v2 + 276) = v184; - *(_DWORD *)(v2 + 328) = v183; - return result; - case 5: - if ( *(_DWORD *)(result + 288) ) - { - v178 = *(_DWORD *)(result + 256); - v179 = "auto:"; - for ( j = 97; ; j = *v179 ) - { - if ( v178 == 255 ) - { - v182 = *(_DWORD *)(v2 + 268); - v431 = j; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v182); - ++*(_DWORD *)(v2 + 296); - j = v431; - v181 = 0; - v178 = 1; - } - else - { - v181 = v178++; - } - ++v179; - *(_DWORD *)(v2 + 256) = v178; - *(_BYTE *)(v2 + v181) = j; - *(_BYTE *)(v2 + 260) = j; - if ( v179 == "" ) - break; - } - v333 = v5[3]; - v334 = Str; - sprintf_constprop_0(Str, (int)"%d", v333 + 1); - result = strlen((const char *)Str); - v335 = result; - if ( result ) - { - result = *(_DWORD *)(v2 + 256); - v336 = (FILE *)((char *)Str + v335); - do - { - v338 = (char)v334->_ptr; - if ( result == 255 ) - { - v339 = *(_DWORD *)(v2 + 268); - v454 = (char)v334->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v339); - ++*(_DWORD *)(v2 + 296); - v338 = v454; - v337 = 0; - result = 1; - } - else - { - v337 = result++; - } - v334 = (FILE *)((char *)v334 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v337) = v338; - *(_BYTE *)(v2 + 260) = v338; - } - while ( v334 != v336 ); - } - return result; - } - result = (unsigned int)d_lookup_template_argument(result, a2); - v331 = result; - if ( result ) - { - if ( *(_DWORD *)result != 47 - || (v382 = *(_DWORD *)(v2 + 292), v382 < 0) - || (result = (unsigned int)d_index_template_argument_part_0((_DWORD *)result, v382), (v331 = result) != 0) ) - { - v332 = *(_DWORD **)(v2 + 272); - *(_DWORD *)(v2 + 272) = *v332; - result = d_print_comp(v2, v331); - *(_DWORD *)(v2 + 272) = v332; - return result; - } - } - goto LABEL_7; - case 6: - v149 = *(_DWORD *)(a2 + 12); - result = *(_DWORD *)(result + 256); - if ( v149 ) - { - v150 = "parm#"; - for ( k = 123; ; k = *v150++ ) - { - if ( result == 255 ) - { - v153 = *(_DWORD *)(v2 + 268); - v426 = k; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v153); - ++*(_DWORD *)(v2 + 296); - k = v426; - v152 = 0; - result = 1; - } - else - { - v152 = result++; - } - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v152) = k; - *(_BYTE *)(v2 + 260) = k; - if ( v150 == "" ) - break; - } - v340 = Str; - sprintf_constprop_0(Str, (int)"%d", v149); - v341 = strlen((const char *)Str); - result = *(_DWORD *)(v2 + 256); - if ( v341 ) - { - v342 = (FILE *)((char *)Str + v341); - do - { - v344 = (char)v340->_ptr; - if ( result == 255 ) - { - v345 = *(_DWORD *)(v2 + 268); - v455 = (char)v340->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v345); - ++*(_DWORD *)(v2 + 296); - v344 = v455; - v343 = 0; - result = 1; - } - else - { - v343 = result++; - } - v340 = (FILE *)((char *)v340 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v343) = v344; - *(_BYTE *)(v2 + 260) = v344; - } - while ( v342 != v340 ); - } - if ( result == 255 ) - { - v390 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v390); - ++*(_DWORD *)(v2 + 296); - result = 0; - } - *(_DWORD *)(v2 + 256) = result + 1; - *(_BYTE *)(v2 + result) = 125; - *(_BYTE *)(v2 + 260) = 125; - } - else - { - v346 = "this"; - for ( m = 116; ; m = *v346 ) - { - if ( result == 255 ) - { - v349 = *(_DWORD *)(v2 + 268); - v456 = m; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v349); - ++*(_DWORD *)(v2 + 296); - m = v456; - v348 = 0; - result = 1; - } - else - { - v348 = result++; - } - ++v346; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v348) = m; - *(_BYTE *)(v2 + 260) = m; - if ( v346 == "" ) - break; - } - } - return result; - case 7: - goto LABEL_14; - case 8: - v9 = *(_DWORD *)(result + 256); - if ( v9 == 255 ) - { - v367 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v367); - ++*(_DWORD *)(v2 + 296); - v10 = 1; - v9 = 0; - } - else - { - v10 = v9 + 1; - } - *(_DWORD *)(v2 + 256) = v10; - *(_BYTE *)(v2 + v9) = 126; - *(_BYTE *)(v2 + 260) = 126; - goto LABEL_14; - case 9: - v194 = *(_DWORD *)(result + 256); - v195 = "table for "; - for ( n = 118; ; n = *v195++ ) - { - if ( v194 == 255 ) - { - v198 = *(_DWORD *)(v2 + 268); - v433 = n; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v198); - ++*(_DWORD *)(v2 + 296); - n = v433; - v197 = 0; - v194 = 1; - } - else - { - v197 = v194++; - } - *(_DWORD *)(v2 + 256) = v194; - *(_BYTE *)(v2 + v197) = n; - *(_BYTE *)(v2 + 260) = n; - if ( v195 == "" ) - break; - } - goto LABEL_9; - case 0xA: - v49 = *(_DWORD *)(result + 256); - v50 = "TT for "; - for ( ii = 86; ; ii = *v50++ ) - { - if ( v49 == 255 ) - { - v53 = *(_DWORD *)(v2 + 268); - v410 = ii; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v53); - ++*(_DWORD *)(v2 + 296); - ii = v410; - v52 = 0; - v49 = 1; - } - else - { - v52 = v49++; - } - *(_DWORD *)(v2 + 256) = v49; - *(_BYTE *)(v2 + v52) = ii; - *(_BYTE *)(v2 + 260) = ii; - if ( v50 == "" ) - break; - } - goto LABEL_9; - case 0xB: - v44 = *(_DWORD *)(result + 256); - v45 = "onstruction vtable for "; - for ( jj = 99; ; jj = *v45++ ) - { - if ( v44 == 255 ) - { - v48 = *(_DWORD *)(v2 + 268); - v409 = jj; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v48); - ++*(_DWORD *)(v2 + 296); - jj = v409; - v47 = 0; - v44 = 1; - } - else - { - v47 = v44++; - } - *(_DWORD *)(v2 + 256) = v44; - *(_BYTE *)(v2 + v47) = jj; - *(_BYTE *)(v2 + 260) = jj; - if ( v45 == "" ) - break; - } - v275 = "-in-"; - d_print_comp(v2, v5[3]); - v276 = *(_DWORD *)(v2 + 256); - for ( kk = 45; ; kk = *v275 ) - { - if ( v276 == 255 ) - { - v279 = *(_DWORD *)(v2 + 268); - v446 = kk; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v279); - ++*(_DWORD *)(v2 + 296); - kk = v446; - v278 = 0; - v276 = 1; - } - else - { - v278 = v276++; - } - ++v275; - *(_DWORD *)(v2 + 256) = v276; - *(_BYTE *)(v2 + v278) = kk; - *(_BYTE *)(v2 + 260) = kk; - if ( v275 == "" ) - break; - } - goto LABEL_14; - case 0xC: - v110 = *(_DWORD *)(result + 256); - v111 = "ypeinfo for "; - for ( mm = 116; ; mm = *v111++ ) - { - if ( v110 == 255 ) - { - v114 = *(_DWORD *)(v2 + 268); - v422 = mm; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v114); - ++*(_DWORD *)(v2 + 296); - mm = v422; - v113 = 0; - v110 = 1; - } - else - { - v113 = v110++; - } - *(_DWORD *)(v2 + 256) = v110; - *(_BYTE *)(v2 + v113) = mm; - *(_BYTE *)(v2 + 260) = mm; - if ( v111 == "" ) - break; - } - goto LABEL_9; - case 0xD: - v105 = *(_DWORD *)(result + 256); - v106 = "ypeinfo name for "; - for ( nn = 116; ; nn = *v106++ ) - { - if ( v105 == 255 ) - { - v109 = *(_DWORD *)(v2 + 268); - v421 = nn; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v109); - ++*(_DWORD *)(v2 + 296); - nn = v421; - v108 = 0; - v105 = 1; - } - else - { - v108 = v105++; - } - *(_DWORD *)(v2 + 256) = v105; - *(_BYTE *)(v2 + v108) = nn; - *(_BYTE *)(v2 + 260) = nn; - if ( v106 == "" ) - break; - } - goto LABEL_9; - case 0xE: - v100 = *(_DWORD *)(result + 256); - v101 = "ypeinfo fn for "; - for ( i1 = 116; ; i1 = *v101++ ) - { - if ( v100 == 255 ) - { - v104 = *(_DWORD *)(v2 + 268); - v420 = i1; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v104); - ++*(_DWORD *)(v2 + 296); - i1 = v420; - v103 = 0; - v100 = 1; - } - else - { - v103 = v100++; - } - *(_DWORD *)(v2 + 256) = v100; - *(_BYTE *)(v2 + v103) = i1; - *(_BYTE *)(v2 + 260) = i1; - if ( v101 == "" ) - break; - } - goto LABEL_9; - case 0xF: - v95 = *(_DWORD *)(result + 256); - v96 = "on-virtual thunk to "; - for ( i2 = 110; ; i2 = *v96++ ) - { - if ( v95 == 255 ) - { - v99 = *(_DWORD *)(v2 + 268); - v419 = i2; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v99); - ++*(_DWORD *)(v2 + 296); - i2 = v419; - v98 = 0; - v95 = 1; - } - else - { - v98 = v95++; - } - *(_DWORD *)(v2 + 256) = v95; - *(_BYTE *)(v2 + v98) = i2; - *(_BYTE *)(v2 + 260) = i2; - if ( v96 == "" ) - break; - } - goto LABEL_9; - case 0x10: - v115 = *(_DWORD *)(result + 256); - v116 = "irtual thunk to "; - for ( i3 = 118; ; i3 = *v116++ ) - { - if ( v115 == 255 ) - { - v119 = *(_DWORD *)(v2 + 268); - v423 = i3; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v119); - ++*(_DWORD *)(v2 + 296); - i3 = v423; - v118 = 0; - v115 = 1; - } - else - { - v118 = v115++; - } - *(_DWORD *)(v2 + 256) = v115; - *(_BYTE *)(v2 + v118) = i3; - *(_BYTE *)(v2 + 260) = i3; - if ( v116 == "" ) - break; - } - goto LABEL_9; - case 0x11: - v64 = *(_DWORD *)(result + 256); - v65 = "ovariant return thunk to "; - for ( i4 = 99; ; i4 = *v65++ ) - { - if ( v64 == 255 ) - { - v68 = *(_DWORD *)(v2 + 268); - v413 = i4; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v68); - ++*(_DWORD *)(v2 + 296); - i4 = v413; - v67 = 0; - v64 = 1; - } - else - { - v67 = v64++; - } - *(_DWORD *)(v2 + 256) = v64; - *(_BYTE *)(v2 + v67) = i4; - *(_BYTE *)(v2 + 260) = i4; - if ( v65 == "" ) - break; - } - goto LABEL_9; - case 0x12: - v59 = *(_DWORD *)(result + 256); - v60 = "ava Class for "; - for ( i5 = 106; ; i5 = *v60++ ) - { - if ( v59 == 255 ) - { - v63 = *(_DWORD *)(v2 + 268); - v412 = i5; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v63); - ++*(_DWORD *)(v2 + 296); - i5 = v412; - v62 = 0; - v59 = 1; - } - else - { - v62 = v59++; - } - *(_DWORD *)(v2 + 256) = v59; - *(_BYTE *)(v2 + v62) = i5; - *(_BYTE *)(v2 + 260) = i5; - if ( v60 == "" ) - break; - } - goto LABEL_9; - case 0x13: - v54 = *(_DWORD *)(result + 256); - v55 = "uard variable for "; - for ( i6 = 103; ; i6 = *v55++ ) - { - if ( v54 == 255 ) - { - v58 = *(_DWORD *)(v2 + 268); - v411 = i6; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v58); - ++*(_DWORD *)(v2 + 296); - i6 = v411; - v57 = 0; - v54 = 1; - } - else - { - v57 = v54++; - } - *(_DWORD *)(v2 + 256) = v54; - *(_BYTE *)(v2 + v57) = i6; - *(_BYTE *)(v2 + 260) = i6; - if ( v55 == "" ) - break; - } - goto LABEL_9; - case 0x14: - v169 = *(_DWORD *)(result + 256); - v170 = "LS init function for "; - for ( i7 = 84; ; i7 = *v170++ ) - { - if ( v169 == 255 ) - { - v173 = *(_DWORD *)(v2 + 268); - v430 = i7; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v173); - ++*(_DWORD *)(v2 + 296); - i7 = v430; - v172 = 0; - v169 = 1; - } - else - { - v172 = v169++; - } - *(_DWORD *)(v2 + 256) = v169; - *(_BYTE *)(v2 + v172) = i7; - *(_BYTE *)(v2 + 260) = i7; - if ( v170 == "" ) - break; - } - goto LABEL_9; - case 0x15: - v164 = *(_DWORD *)(result + 256); - v165 = "LS wrapper function for "; - for ( i8 = 84; ; i8 = *v165++ ) - { - if ( v164 == 255 ) - { - v168 = *(_DWORD *)(v2 + 268); - v429 = i8; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v168); - ++*(_DWORD *)(v2 + 296); - i8 = v429; - v167 = 0; - v164 = 1; - } - else - { - v167 = v164++; - } - *(_DWORD *)(v2 + 256) = v164; - *(_BYTE *)(v2 + v167) = i8; - *(_BYTE *)(v2 + 260) = i8; - if ( v165 == "" ) - break; - } - goto LABEL_9; - case 0x16: - v159 = *(_DWORD *)(result + 256); - v160 = "eference temporary #"; - for ( i9 = 114; ; i9 = *v160++ ) - { - if ( v159 == 255 ) - { - v163 = *(_DWORD *)(v2 + 268); - v428 = i9; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v163); - ++*(_DWORD *)(v2 + 296); - i9 = v428; - v162 = 0; - v159 = 1; - } - else - { - v162 = v159++; - } - *(_DWORD *)(v2 + 256) = v159; - *(_BYTE *)(v2 + v162) = i9; - *(_BYTE *)(v2 + 260) = i9; - if ( v160 == "" ) - break; - } - v309 = " for "; - d_print_comp(v2, v5[4]); - v310 = *(_DWORD *)(v2 + 256); - for ( i10 = 32; ; i10 = *v309 ) - { - if ( v310 == 255 ) - { - v313 = *(_DWORD *)(v2 + 268); - v451 = i10; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v313); - ++*(_DWORD *)(v2 + 296); - i10 = v451; - v312 = 0; - v310 = 1; - } - else - { - v312 = v310++; - } - ++v309; - *(_DWORD *)(v2 + 256) = v310; - *(_BYTE *)(v2 + v312) = i10; - *(_BYTE *)(v2 + 260) = i10; - if ( v309 == "" ) - break; - } - goto LABEL_9; - case 0x17: - v154 = *(_DWORD *)(result + 256); - v155 = "idden alias for "; - for ( i11 = 104; ; i11 = *v155++ ) - { - if ( v154 == 255 ) - { - v158 = *(_DWORD *)(v2 + 268); - v427 = i11; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v158); - ++*(_DWORD *)(v2 + 296); - i11 = v427; - v157 = 0; - v154 = 1; - } - else - { - v157 = v154++; - } - *(_DWORD *)(v2 + 256) = v154; - *(_BYTE *)(v2 + v157) = i11; - *(_BYTE *)(v2 + 260) = i11; - if ( v155 == "" ) - break; - } - goto LABEL_9; - case 0x18: - v134 = *(_DWORD *)(a2 + 16); - v135 = *(char **)(a2 + 12); - if ( v134 ) - { - result = *(_DWORD *)(result + 256); - v136 = &v135[v134]; - do - { - v138 = *v135; - if ( result == 255 ) - { - v139 = *(_DWORD *)(v2 + 268); - v425 = *v135; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v139); - ++*(_DWORD *)(v2 + 296); - v138 = v425; - v137 = 0; - result = 1; - } - else - { - v137 = result++; - } - ++v135; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v137) = v138; - *(_BYTE *)(v2 + 260) = v138; - } - while ( v136 != v135 ); - } - return result; - case 0x19: - case 0x1A: - case 0x1B: - v14 = *(char **)(result + 276); - v405 = v14; - if ( !v14 ) - goto LABEL_36; - while ( 2 ) - { - if ( *((_DWORD *)v14 + 2) ) - goto LABEL_26; - v15 = **((_DWORD **)v14 + 1); - if ( (unsigned int)(v15 - 25) > 2 ) - { - v3 = 0; - goto LABEL_36; - } - if ( v4 != v15 ) - { -LABEL_26: - v14 = *(char **)v14; - if ( !v14 ) - goto LABEL_36; - continue; - } - break; - } -LABEL_9: - v8 = v5[3]; - return d_print_comp(v2, v8); - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x25: - case 0x26: - case 0x4D: - case 0x4F: - case 0x50: - v11 = *(char **)(result + 276); - goto LABEL_16; - case 0x23: - case 0x24: - result = *(_DWORD *)(a2 + 12); - v18 = *(_DWORD *)result; - if ( *(_DWORD *)(v2 + 288) ) - goto LABEL_33; - v3 = 0; - if ( v18 != 5 ) - goto LABEL_33; - v374 = *(_DWORD *)(v2 + 308); - if ( v374 <= 0 ) - goto LABEL_621; - v375 = *(_DWORD **)(v2 + 304); - v376 = 0; - break; - case 0x27: - result = *(_DWORD *)(a2 + 12); - v267 = *(_DWORD *)(result + 4); - v268 = *(char **)result; - if ( v267 ) - { - result = *(_DWORD *)(v2 + 256); - v269 = &v268[v267]; - do - { - v271 = *v268; - if ( result == 255 ) - { - v272 = *(_DWORD *)(v2 + 268); - v445 = *v268; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v272); - ++*(_DWORD *)(v2 + 296); - v271 = v445; - v270 = 0; - result = 1; - } - else - { - v270 = result++; - } - ++v268; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v270) = v271; - *(_BYTE *)(v2 + 260) = v271; - } - while ( v268 != v269 ); - } - return result; - case 0x28: - goto LABEL_9; - case 0x29: - v174 = *(_DWORD *)(a2 + 12); - v175 = *(int ***)(result + 276); - if ( !v174 ) - return d_print_function_type(v2, (int)v5, v175); - Str[0]._ptr = (char *)v175; - *(_DWORD *)(v2 + 276) = Str; - v176 = *(_DWORD *)(v2 + 272); - Str[0]._cnt = (int)v5; - Str[0]._flag = v176; - Str[0]._base = 0; - d_print_comp(v2, v174); - result = (unsigned int)Str[0]._ptr; - base = Str[0]._base; - *(_DWORD *)(v2 + 276) = Str[0]._ptr; - if ( !base ) - { - d_append_char(v2, 32); - v175 = *(int ***)(v2 + 276); - return d_print_function_type(v2, (int)v5, v175); - } - return result; - case 0x2A: - v127 = *(char **)(result + 276); - Str[0]._cnt = a2; - v128 = 1; - v129 = (unsigned int)v127; - v463 = v127; - Str[0]._ptr = v127; - v130 = (char *)Str; - *(_DWORD *)(result + 276) = Str; - v131 = *(_DWORD *)(result + 272); - Str[0]._base = 0; - Str[0]._flag = v131; - result = v129; - if ( v129 ) - { - do - { - if ( (unsigned int)(**(_DWORD **)(result + 4) - 25) > 2 ) - break; - if ( !*(_DWORD *)(result + 8) ) - { - if ( v128 > 3 ) - goto LABEL_7; - v132 = v128++; - v132 *= 16; - *(char **)((char *)&Str[0]._ptr + v132) = *(char **)result; - v133 = (char **)((char *)&Str[0]._ptr + v132); - v133[1] = *(_DWORD *)(result + 4); - v133[2] = *(_DWORD *)(result + 8); - v133[3] = *(_DWORD *)(result + 12); - *(char **)((char *)&Str[0]._ptr + v132) = v130; - v130 = (char *)Str + v132; - *(_DWORD *)(v2 + 276) = (char *)Str + v132; - *(_DWORD *)(result + 8) = 1; - } - result = *(_DWORD *)result; - } - while ( result ); - d_print_comp(v2, v5[4]); - *(_DWORD *)(v2 + 276) = v463; - result = (unsigned int)Str[0]._base; - if ( Str[0]._base ) - return result; - while ( v128 != 1 ) - { - --v128; - d_print_mod(v2, *((_DWORD **)&Str[0]._cnt + 4 * v128)); - } - } - else - { - result = d_print_comp(v2, v5[4]); - v397 = Str[0]._base == 0; - *(_DWORD *)(v2 + 276) = 0; - if ( !v397 ) - return result; - } - return d_print_array_type(v2, (int)v5, *(int ***)(v2 + 276)); - case 0x2B: - case 0x2D: - v16 = *(char **)(result + 276); - Str[0]._cnt = a2; - v17 = *(_DWORD *)(a2 + 16); - Str[0]._base = 0; - Str[0]._ptr = v16; - *(_DWORD *)(v2 + 276) = Str; - Str[0]._flag = *(_DWORD *)(v2 + 272); - d_print_comp(v2, v17); - if ( !Str[0]._base ) - d_print_mod(v2, v5); - result = (unsigned int)Str[0]._ptr; - *(_DWORD *)(v2 + 276) = Str[0]._ptr; - return result; - case 0x2C: - if ( *(_WORD *)(a2 + 18) ) - d_append_string(result, "_Sat "); - v188 = v5[3]; - if ( *(void ****)(v188 + 12) == &off_513FC0 ) - { - result = *(_DWORD *)(v2 + 256); - } - else - { - d_print_comp(v2, v188); - v189 = *(_DWORD *)(v2 + 256); - if ( v189 == 255 ) - { - v389 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v389); - ++*(_DWORD *)(v2 + 296); - v189 = 0; - } - result = v189 + 1; - *(_DWORD *)(v2 + 256) = v189 + 1; - *(_BYTE *)(v2 + v189) = 32; - *(_BYTE *)(v2 + 260) = 32; - } - if ( *((_WORD *)v5 + 8) ) - { - v327 = "Accum"; - for ( i12 = 95; ; i12 = *v327++ ) - { - if ( result == 255 ) - { - v330 = *(_DWORD *)(v2 + 268); - v453 = i12; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v330); - ++*(_DWORD *)(v2 + 296); - i12 = v453; - v329 = 0; - result = 1; - } - else - { - v329 = result++; - } - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v329) = i12; - *(_BYTE *)(v2 + 260) = i12; - if ( v327 == "" ) - break; - } - } - else - { - v190 = "Fract"; - for ( i13 = 95; ; i13 = *v190++ ) - { - if ( result == 255 ) - { - v193 = *(_DWORD *)(v2 + 268); - v432 = i13; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v193); - ++*(_DWORD *)(v2 + 296); - i13 = v432; - v192 = 0; - result = 1; - } - else - { - v192 = result++; - } - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v192) = i13; - *(_BYTE *)(v2 + 260) = i13; - if ( v190 == "" ) - break; - } - } - return result; - case 0x2E: - case 0x2F: - v26 = *(_DWORD *)(a2 + 12); - if ( v26 ) - d_print_comp(result, v26); - result = v5[4]; - if ( result ) - { - v27 = *(_DWORD *)(v2 + 256); - if ( v27 > 0xFD ) - { - *(_BYTE *)(v2 + v27) = 0; - Str2 = (char *)v27; - v27 = 0; - (*(void (__cdecl **)(unsigned int, char *, _DWORD))(v2 + 264))(v2, Str2, *(_DWORD *)(v2 + 268)); - ++*(_DWORD *)(v2 + 296); - *(_DWORD *)(v2 + 256) = 0; - } - v28 = ", "; - for ( i14 = 44; ; i14 = *v28 ) - { - if ( v27 == 255 ) - { - v27 = 1; - v406 = i14; - v404 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v404); - ++*(_DWORD *)(v2 + 296); - i14 = v406; - v30 = 0; - } - else - { - v30 = v27++; - } - ++v28; - *(_DWORD *)(v2 + 256) = v27; - *(_BYTE *)(v2 + v30) = i14; - *(_BYTE *)(v2 + 260) = i14; - if ( v28 == "" ) - break; - } - v321 = *(_DWORD *)(v2 + 296); - result = d_print_comp(v2, v5[4]); - if ( *(_DWORD *)(v2 + 296) == v321 && *(_DWORD *)(v2 + 256) == v27 ) - *(_DWORD *)(v2 + 256) = v27 - 2; - } - return result; - case 0x30: - v36 = *(_DWORD *)(result + 256); - v37 = "emplate parameter object for "; - for ( i15 = 116; ; i15 = *v37++ ) - { - if ( v36 == 255 ) - { - v40 = *(_DWORD *)(v2 + 268); - v408 = i15; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v40); - ++*(_DWORD *)(v2 + 296); - i15 = v408; - v39 = 0; - v36 = 1; - } - else - { - v39 = v36++; - } - *(_DWORD *)(v2 + 256) = v36; - *(_BYTE *)(v2 + v39) = i15; - *(_BYTE *)(v2 + 260) = i15; - if ( v37 == "" ) - break; - } - goto LABEL_9; - case 0x31: - v247 = *(_DWORD *)(a2 + 12); - v248 = v5[4]; - if ( v247 ) - d_print_comp(result, v247); - v249 = *(_DWORD *)(v2 + 256); - if ( v249 == 255 ) - { - v365 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v365); - ++*(_DWORD *)(v2 + 296); - v250 = 1; - v249 = 0; - } - else - { - v250 = v249 + 1; - } - *(_DWORD *)(v2 + 256) = v250; - *(_BYTE *)(v2 + v249) = 123; - *(_BYTE *)(v2 + 260) = 123; - d_print_comp(v2, v248); - result = *(_DWORD *)(v2 + 256); - if ( result != 255 ) - goto LABEL_365; - goto LABEL_437; - case 0x32: - v241 = *(_DWORD *)(a2 + 12); - result = *(_DWORD *)(result + 256); - v242 = "perator"; - v243 = 111; - v244 = *(_DWORD *)(v241 + 8); - while ( 1 ) - { - if ( result == 255 ) - { - v246 = *(_DWORD *)(v2 + 268); - v442 = v243; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v246); - ++*(_DWORD *)(v2 + 296); - v243 = v442; - v245 = 0; - result = 1; - } - else - { - v245 = result++; - } - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v245) = v243; - *(_BYTE *)(v2 + 260) = v243; - if ( v242 == "" ) - break; - v243 = *v242++; - } - v288 = *(char **)(v241 + 4); - if ( (unsigned __int8)(*v288 - 97) <= 0x19u ) - { - if ( result == 255 ) - { - v393 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v393); - ++*(_DWORD *)(v2 + 296); - v288 = *(char **)(v241 + 4); - result = 0; - } - *(_DWORD *)(v2 + 256) = result + 1; - *(_BYTE *)(v2 + result) = 32; - *(_BYTE *)(v2 + 260) = 32; - } - v289 = v244 - 1; - if ( v288[v244 - 1] != 32 ) - v289 = v244; - if ( v289 ) - { - result = *(_DWORD *)(v2 + 256); - v290 = &v288[v289]; - do - { - v292 = *v288; - if ( result == 255 ) - { - v293 = *(_DWORD *)(v2 + 268); - v448 = *v288; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v293); - ++*(_DWORD *)(v2 + 296); - v292 = v448; - v291 = 0; - result = 1; - } - else - { - v291 = result++; - } - ++v288; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v291) = v292; - *(_BYTE *)(v2 + 260) = v292; - } - while ( v290 != v288 ); - } - return result; - case 0x33: - v236 = *(_DWORD *)(result + 256); - v237 = "perator "; - for ( i16 = 111; ; i16 = *v237++ ) - { - if ( v236 == 255 ) - { - v240 = *(_DWORD *)(v2 + 268); - v441 = i16; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v240); - ++*(_DWORD *)(v2 + 296); - i16 = v441; - v239 = 0; - v236 = 1; - } - else - { - v239 = v236++; - } - *(_DWORD *)(v2 + 256) = v236; - *(_BYTE *)(v2 + v239) = i16; - *(_BYTE *)(v2 + 260) = i16; - if ( v237 == "" ) - break; - } - goto LABEL_14; - case 0x35: - v231 = *(_DWORD *)(result + 256); - v232 = "perator "; - for ( i17 = 111; ; i17 = *v232++ ) - { - if ( v231 == 255 ) - { - v235 = *(_DWORD *)(v2 + 268); - v440 = i17; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v235); - ++*(_DWORD *)(v2 + 296); - i17 = v440; - v234 = 0; - v231 = 1; - } - else - { - v234 = v231++; - } - *(_DWORD *)(v2 + 256) = v231; - *(_BYTE *)(v2 + v234) = i17; - *(_BYTE *)(v2 + 260) = i17; - if ( v232 == "" ) - break; - } - return d_print_conversion(v2, (int)v5); - case 0x36: - v255 = *(_DWORD **)(a2 + 12); - return d_print_expr_op(v2, v255); - case 0x37: - v252 = *(_DWORD **)(a2 + 12); - v214 = *(_DWORD *)(a2 + 16); - if ( *v252 != 50 ) - { - if ( *v252 == 52 ) - { - v253 = *(_DWORD *)(result + 256); - if ( v253 == 255 ) - { - v396 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v396); - ++*(_DWORD *)(v2 + 296); - v253 = 0; - } - *(_DWORD *)(v2 + 256) = v253 + 1; - *(_BYTE *)(v2 + v253) = 40; - *(_BYTE *)(v2 + 260) = 40; - d_print_comp(v2, v252[3]); - v254 = *(_DWORD *)(v2 + 256); - if ( v254 == 255 ) - { - v395 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v395); - ++*(_DWORD *)(v2 + 296); - v254 = 0; - } - *(_DWORD *)(v2 + 256) = v254 + 1; - *(_BYTE *)(v2 + v254) = 41; - *(_BYTE *)(v2 + 260) = 41; - } - else - { - d_print_expr_op(result, v252); - } - return d_print_subexpr(v2, (_DWORD *)v214); - } - v354 = *(unsigned __int8 **)v252[3]; - v355 = *v354 - 97; - if ( *v354 == 97 ) - { - v355 = v354[1] - 100; - if ( v354[1] == 100 ) - v355 = v354[2]; - } - v356 = *(_DWORD *)v214; - if ( !v355 && v356 == 3 ) - { - if ( **(_DWORD **)(v214 + 12) == 1 && **(_DWORD **)(v214 + 16) == 41 ) - v214 = *(_DWORD *)(v214 + 12); - } - else if ( v356 == 57 ) - { - d_print_subexpr(result, *(_DWORD **)(v214 + 12)); - v255 = v252; - return d_print_expr_op(v2, v255); - } - if ( *v354 == 115 ) - { - if ( v354[1] == 90 && !v354[2] ) - { - for ( i18 = d_find_pack(result, (_DWORD *)v214, v354[2]); i18; ++v358 ) - { - if ( *i18 != 47 ) - break; - if ( !i18[3] ) - break; - i18 = (_DWORD *)i18[4]; - } - return d_append_num(v2, v358); - } - if ( v354[1] == 80 ) - { - v360 = 0; - if ( !v354[2] ) - { - do - { - if ( *(_DWORD *)v214 != 47 ) - break; - v361 = *(_DWORD *)(v214 + 12); - if ( !v361 ) - break; - if ( *(_DWORD *)v361 == 75 ) - { - pack = d_find_pack(v2, *(_DWORD **)(v361 + 12), v360); - for ( i19 = 0; pack; ++i19 ) - { - if ( *pack != 47 ) - break; - if ( !pack[3] ) - break; - pack = (_DWORD *)pack[4]; - } - v360 = i19 + v363; - } - else - { - ++v360; - } - v214 = *(_DWORD *)(v214 + 16); - } - while ( v214 ); - v383 = Str; - sprintf_constprop_0(Str, (int)"%d", v360); - result = strlen((const char *)Str); - v384 = result; - if ( result ) - { - result = *(_DWORD *)(v2 + 256); - v385 = (FILE *)((char *)Str + v384); - do - { - v387 = (char)v383->_ptr; - if ( result == 255 ) - { - v388 = *(_DWORD *)(v2 + 268); - v458 = (char)v383->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v388); - ++*(_DWORD *)(v2 + 296); - v387 = v458; - v386 = 0; - result = 1; - } - else - { - v386 = result++; - } - v383 = (FILE *)((char *)v383 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v386) = v387; - *(_BYTE *)(v2 + 260) = v387; - } - while ( v383 != v385 ); - } - return result; - } - } - } - d_print_expr_op(result, v252); - v359 = *v354; - if ( v359 == 103 && v354[1] == 115 ) - { - v8 = v214; - if ( !v354[2] ) - return d_print_comp(v2, v8); - } - if ( v359 == 115 && v354[1] == 116 && !v354[2] ) - { - d_append_char(v2, 40); - d_print_comp(v2, v214); - v25 = 41; - return d_append_char(v2, v25); - } - return d_print_subexpr(v2, (_DWORD *)v214); - case 0x38: - result = *(_DWORD *)(a2 + 16); - if ( *(_DWORD *)result != 57 ) - goto LABEL_7; - v140 = *(_DWORD *)(a2 + 12); - v141 = **(char ***)(v140 + 12); - if ( v141[1] == 99 ) - { - v380 = *v141; - if ( (unsigned __int8)(v380 - 99) <= 1u || (unsigned __int8)(v380 - 114) <= 1u ) - { - d_print_expr_op(v2, (_DWORD *)v140); - d_append_char(v2, 60); - d_print_comp(v2, *(_DWORD *)(v5[4] + 12)); - d_append_string(v2, ">("); - d_print_comp(v2, *(_DWORD *)(v5[4] + 16)); - v25 = 41; - return d_append_char(v2, v25); - } - } - result = d_maybe_print_fold_expression(v2, (int)v5); - if ( !result ) - { - v142 = (_DWORD *)v5[3]; - if ( *v142 == 50 ) - { - v392 = v142[3]; - if ( *(_DWORD *)(v392 + 8) == 1 && **(_BYTE **)(v392 + 4) == 62 ) - { - d_append_char(v2, 40); - v142 = (_DWORD *)v5[3]; - } - } - v143 = *(unsigned __int8 **)v142[3]; - v144 = *v143 - 99; - if ( *v143 == 99 ) - { - v144 = v143[1] - 108; - if ( v143[1] == 108 ) - v144 = v143[2]; - } - v145 = *(_DWORD *)(v5[4] + 12); - if ( !v144 && *(_DWORD *)v145 == 3 ) - { - if ( **(_DWORD **)(v145 + 16) != 41 ) - *(_DWORD *)(v2 + 280) = 1; - d_print_subexpr(v2, *(_DWORD **)(v145 + 12)); - } - else - { - d_print_subexpr(v2, (_DWORD *)v145); - } - v146 = v5[3]; - v147 = **(unsigned __int8 ***)(v146 + 12); - v148 = *v147; - if ( v148 == 105 && v147[1] == 120 && !v147[2] ) - { - d_append_char(v2, 91); - d_print_comp(v2, *(_DWORD *)(v5[4] + 16)); - d_append_char(v2, 93); - } - else - { - if ( v148 != 99 || v147[1] != 108 || v147[2] ) - d_print_expr_op(v2, (_DWORD *)v146); - d_print_subexpr(v2, *(_DWORD **)(v5[4] + 16)); - } - result = v5[3]; - if ( *(_DWORD *)result == 50 ) - { - result = *(_DWORD *)(result + 12); - if ( *(_DWORD *)(result + 8) == 1 ) - { - result = *(_DWORD *)(result + 4); - v25 = 41; - if ( *(_BYTE *)result == 62 ) - return d_append_char(v2, v25); - } - } - } - return result; - case 0x3A: - result = *(_DWORD *)(a2 + 16); - if ( *(_DWORD *)result != 59 ) - goto LABEL_7; - result = *(_DWORD *)(result + 16); - if ( *(_DWORD *)result != 60 ) - goto LABEL_7; - result = d_maybe_print_fold_expression(v2, a2); - if ( result ) - return result; - v209 = v5[4]; - v210 = v5[3]; - v211 = *(_DWORD **)(v209 + 12); - v212 = *(_DWORD *)(v209 + 16); - v213 = *(_DWORD **)(v212 + 12); - v214 = *(_DWORD *)(v212 + 16); - v436 = v211; - if ( !strcmp(**(const char ***)(v210 + 12), "qu") ) - { - d_print_subexpr(v2, v436); - d_print_expr_op(v2, (_DWORD *)v210); - d_print_subexpr(v2, v213); - d_append_string(v2, " : "); - } - else - { - d_append_string(v2, "new "); - if ( v436[3] ) - { - d_print_subexpr(v2, v436); - d_append_char(v2, 32); - } - result = d_print_comp(v2, (int)v213); - if ( !v214 ) - return result; - } - return d_print_subexpr(v2, (_DWORD *)v214); - case 0x3D: - case 0x3E: - v19 = *(_DWORD **)(a2 + 12); - if ( *v19 == 39 ) - { - v20 = *(_DWORD *)(v19[3] + 16); - if ( v20 > 6 ) - { - if ( v20 == 7 ) - { - v325 = v5[4]; - if ( !*(_DWORD *)v325 && *(_DWORD *)(v325 + 16) == 1 && v4 == 61 ) - { - v326 = **(_BYTE **)(v325 + 12); - if ( v326 == 48 ) - { - v391 = "false"; - return d_append_string(v2, v391); - } - if ( v326 == 49 ) - { - v391 = "true"; - return d_append_string(v2, v391); - } - } - } - } - else if ( v20 ) - { - v373 = (_DWORD *)v5[4]; - if ( !*v373 ) - { - if ( v4 == 62 ) - { - d_append_char(v2, 45); - v373 = (_DWORD *)v5[4]; - } - result = d_print_comp(v2, (int)v373); - switch ( v20 ) - { - case 2u: - v25 = 117; - return d_append_char(v2, v25); - case 3u: - v25 = 108; - return d_append_char(v2, v25); - case 4u: - v391 = "ul"; - return d_append_string(v2, v391); - case 5u: - v391 = "ll"; - return d_append_string(v2, v391); - case 6u: - v391 = (const char *)&off_513197; - return d_append_string(v2, v391); - default: - return result; - } - return result; - } - } - } - else - { - v20 = 0; - } - v21 = *(_DWORD *)(v2 + 256); - if ( v21 == 255 ) - { - v372 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v372); - v19 = (_DWORD *)v5[3]; - v22 = 1; - v21 = 0; - ++*(_DWORD *)(v2 + 296); - } - else - { - v22 = v21 + 1; - } - *(_DWORD *)(v2 + 256) = v22; - *(_BYTE *)(v2 + v21) = 40; - *(_BYTE *)(v2 + 260) = 40; - d_print_comp(v2, (int)v19); - v23 = *(_DWORD *)(v2 + 256); - if ( v23 == 255 ) - { - v369 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v369); - ++*(_DWORD *)(v2 + 296); - v24 = 1; - v23 = 0; - } - else - { - v24 = v23 + 1; - } - *(_DWORD *)(v2 + 256) = v24; - *(_BYTE *)(v2 + v23) = 41; - *(_BYTE *)(v2 + 260) = 41; - if ( *v5 == 62 ) - d_append_char(v2, 45); - if ( v20 != 8 ) - { -LABEL_14: - v8 = v5[4]; - return d_print_comp(v2, v8); - } - d_append_char(v2, 91); - d_print_comp(v2, v5[4]); - v25 = 93; - return d_append_char(v2, v25); - case 0x3F: - v199 = *(_DWORD *)(result + 256); - v200 = "ava resource "; - for ( i20 = 106; ; i20 = *v200++ ) - { - if ( v199 == 255 ) - { - v203 = *(_DWORD *)(v2 + 268); - v434 = i20; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v203); - ++*(_DWORD *)(v2 + 296); - i20 = v434; - v202 = 0; - v199 = 1; - } - else - { - v202 = v199++; - } - *(_DWORD *)(v2 + 256) = v199; - *(_BYTE *)(v2 + v202) = i20; - *(_BYTE *)(v2 + 260) = i20; - if ( v200 == "" ) - break; - } - goto LABEL_9; - case 0x40: - d_print_comp(result, *(_DWORD *)(a2 + 12)); - goto LABEL_14; - case 0x41: - result = *(_DWORD *)(result + 256); - v120 = *(_DWORD *)(a2 + 12); - if ( result == 255 ) - { - v366 = *(_DWORD *)(v2 + 268); - v457 = *(_DWORD *)(a2 + 12); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v366); - ++*(_DWORD *)(v2 + 296); - LOBYTE(v120) = v457; - result = 0; - v121 = 1; - } - else - { - v121 = result + 1; - } - *(_DWORD *)(v2 + 256) = v121; - *(_BYTE *)(v2 + result) = v120; - *(_BYTE *)(v2 + 260) = v120; - return result; - case 0x42: - v220 = Str; - sprintf_constprop_0(Str, (int)"%d", *(_DWORD *)(a2 + 12)); - result = strlen((const char *)Str); - v221 = result; - if ( result ) - { - result = *(_DWORD *)(v2 + 256); - v222 = (FILE *)((char *)Str + v221); - do - { - v224 = (char)v220->_ptr; - if ( result == 255 ) - { - v225 = *(_DWORD *)(v2 + 268); - v438 = (char)v220->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v225); - ++*(_DWORD *)(v2 + 296); - v224 = v438; - v223 = 0; - result = 1; - } - else - { - v223 = result++; - } - v220 = (FILE *)((char *)v220 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v223) = v224; - *(_BYTE *)(v2 + 260) = v224; - } - while ( v222 != v220 ); - } - return result; - case 0x43: - v215 = *(_DWORD *)(result + 256); - v216 = "ecltype ("; - for ( i21 = 100; ; i21 = *v216++ ) - { - if ( v215 == 255 ) - { - v219 = *(_DWORD *)(v2 + 268); - v437 = i21; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v219); - ++*(_DWORD *)(v2 + 296); - i21 = v437; - v218 = 0; - v215 = 1; - } - else - { - v218 = v215++; - } - *(_DWORD *)(v2 + 256) = v215; - *(_BYTE *)(v2 + v218) = i21; - *(_BYTE *)(v2 + 260) = i21; - if ( v216 == "" ) - break; - } - d_print_comp(v2, v5[3]); - result = *(_DWORD *)(v2 + 256); - if ( result == 255 ) - { - v368 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v368); - ++*(_DWORD *)(v2 + 296); - v308 = 1; - result = 0; - } - else - { - v308 = result + 1; - } - *(_DWORD *)(v2 + 256) = v308; - *(_BYTE *)(v2 + result) = 41; - *(_BYTE *)(v2 + 260) = 41; - return result; - case 0x44: - v226 = *(_DWORD *)(result + 256); - v227 = "lobal constructors keyed to "; - for ( i22 = 103; ; i22 = *v227++ ) - { - if ( v226 == 255 ) - { - v230 = *(_DWORD *)(v2 + 268); - v439 = i22; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v230); - ++*(_DWORD *)(v2 + 296); - i22 = v439; - v229 = 0; - v226 = 1; - } - else - { - v229 = v226++; - } - *(_DWORD *)(v2 + 256) = v226; - *(_BYTE *)(v2 + v229) = i22; - *(_BYTE *)(v2 + 260) = i22; - if ( v227 == "" ) - break; - } - goto LABEL_9; - case 0x45: - v256 = *(_DWORD *)(result + 256); - v257 = "lobal destructors keyed to "; - for ( i23 = 103; ; i23 = *v257++ ) - { - if ( v256 == 255 ) - { - v260 = *(_DWORD *)(v2 + 268); - v443 = i23; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v260); - ++*(_DWORD *)(v2 + 296); - i23 = v443; - v259 = 0; - v256 = 1; - } - else - { - v259 = v256++; - } - *(_DWORD *)(v2 + 256) = v256; - *(_BYTE *)(v2 + v259) = i23; - *(_BYTE *)(v2 + 260) = i23; - if ( v257 == "" ) - break; - } - goto LABEL_9; - case 0x46: - v204 = *(_DWORD *)(result + 256); - v205 = "lambda("; - for ( i24 = 123; ; i24 = *v205++ ) - { - if ( v204 == 255 ) - { - v208 = *(_DWORD *)(v2 + 268); - v435 = i24; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v208); - ++*(_DWORD *)(v2 + 296); - i24 = v435; - v207 = 0; - v204 = 1; - } - else - { - v207 = v204++; - } - *(_DWORD *)(v2 + 256) = v204; - *(_BYTE *)(v2 + v207) = i24; - *(_BYTE *)(v2 + 260) = i24; - if ( v205 == "" ) - break; - } - v294 = v5[3]; - v295 = ")#"; - ++*(_DWORD *)(v2 + 288); - d_print_comp(v2, v294); - v296 = *(_DWORD *)(v2 + 256); - v297 = 41; - --*(_DWORD *)(v2 + 288); - while ( 1 ) - { - if ( v296 == 255 ) - { - v299 = *(_DWORD *)(v2 + 268); - v449 = v297; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v299); - ++*(_DWORD *)(v2 + 296); - v297 = v449; - v298 = 0; - v296 = 1; - } - else - { - v298 = v296++; - } - ++v295; - *(_DWORD *)(v2 + 256) = v296; - *(_BYTE *)(v2 + v298) = v297; - *(_BYTE *)(v2 + 260) = v297; - if ( v295 == "" ) - break; - v297 = *v295; - } - v300 = v5[4]; - v301 = Str; - sprintf_constprop_0(Str, (int)"%d", v300 + 1); - v302 = strlen((const char *)Str); - result = *(_DWORD *)(v2 + 256); - if ( v302 ) - { - v303 = (FILE *)((char *)Str + v302); - do - { - v305 = (char)v301->_ptr; - if ( result == 255 ) - { - v306 = *(_DWORD *)(v2 + 268); - v450 = (char)v301->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v306); - ++*(_DWORD *)(v2 + 296); - v305 = v450; - v304 = 0; - result = 1; - } - else - { - v304 = result++; - } - v301 = (FILE *)((char *)v301 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v304) = v305; - *(_BYTE *)(v2 + 260) = v305; - } - while ( v303 != v301 ); - } - goto LABEL_436; - case 0x48: - v90 = *(_DWORD *)(result + 256); - v91 = "unnamed type#"; - for ( i25 = 123; ; i25 = *v91++ ) - { - if ( v90 == 255 ) - { - v94 = *(_DWORD *)(v2 + 268); - v418 = i25; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v94); - ++*(_DWORD *)(v2 + 296); - i25 = v418; - v93 = 0; - v90 = 1; - } - else - { - v93 = v90++; - } - *(_DWORD *)(v2 + 256) = v90; - *(_BYTE *)(v2 + v93) = i25; - *(_BYTE *)(v2 + 260) = i25; - if ( v91 == "" ) - break; - } - v314 = v5[3]; - v315 = Str; - sprintf_constprop_0(Str, (int)"%d", v314 + 1); - v316 = strlen((const char *)Str); - result = *(_DWORD *)(v2 + 256); - if ( v316 ) - { - v317 = (FILE *)((char *)Str + v316); - do - { - v319 = (char)v315->_ptr; - if ( result == 255 ) - { - v320 = *(_DWORD *)(v2 + 268); - v452 = (char)v315->_ptr; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v320); - ++*(_DWORD *)(v2 + 296); - v319 = v452; - v318 = 0; - result = 1; - } - else - { - v318 = result++; - } - v315 = (FILE *)((char *)v315 + 1); - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v318) = v319; - *(_BYTE *)(v2 + 260) = v319; - } - while ( v317 != v315 ); - } -LABEL_436: - if ( result == 255 ) - { -LABEL_437: - v307 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v307); - ++*(_DWORD *)(v2 + 296); - v251 = 1; - result = 0; - } - else - { -LABEL_365: - v251 = result + 1; - } - *(_DWORD *)(v2 + 256) = v251; - *(_BYTE *)(v2 + result) = 125; - *(_BYTE *)(v2 + 260) = 125; - return result; - case 0x49: - v85 = *(_DWORD *)(result + 256); - v86 = "ransaction clone for "; - for ( i26 = 116; ; i26 = *v86++ ) - { - if ( v85 == 255 ) - { - v89 = *(_DWORD *)(v2 + 268); - v417 = i26; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v89); - ++*(_DWORD *)(v2 + 296); - i26 = v417; - v88 = 0; - v85 = 1; - } - else - { - v88 = v85++; - } - *(_DWORD *)(v2 + 256) = v85; - *(_BYTE *)(v2 + v88) = i26; - *(_BYTE *)(v2 + 260) = i26; - if ( v86 == "" ) - break; - } - goto LABEL_9; - case 0x4A: - v80 = *(_DWORD *)(result + 256); - v81 = "on-transaction clone for "; - for ( i27 = 110; ; i27 = *v81++ ) - { - if ( v80 == 255 ) - { - v84 = *(_DWORD *)(v2 + 268); - v416 = i27; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v84); - ++*(_DWORD *)(v2 + 296); - i27 = v416; - v83 = 0; - v80 = 1; - } - else - { - v83 = v80++; - } - *(_DWORD *)(v2 + 256) = v80; - *(_BYTE *)(v2 + v83) = i27; - *(_BYTE *)(v2 + 260) = i27; - if ( v81 == "" ) - break; - } - goto LABEL_9; - case 0x4B: - v74 = d_find_pack(result, *(_DWORD **)(a2 + 12), 0); - if ( !v74 ) - { - d_print_subexpr(v2, (_DWORD *)v5[3]); - v391 = "..."; - return d_append_string(v2, v391); - } - while ( *v74 == 47 && v74[3] ) - { - v74 = (_DWORD *)v74[4]; - if ( !v74 ) - { - v465 = v75; - v462 = v75 + 1; - v464 = (FILE *)v5[3]; - do - { -LABEL_135: - *(_DWORD *)(v2 + 292) = v3; - result = d_print_comp(v2, (int)v464); - if ( v465 > v3 ) - { - result = *(_DWORD *)(v2 + 256); - v76 = ", "; - for ( i28 = 44; ; i28 = *v76 ) - { - if ( result == 255 ) - { - v79 = *(_DWORD *)(v2 + 268); - v415 = i28; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v79); - ++*(_DWORD *)(v2 + 296); - i28 = v415; - v78 = 0; - result = 1; - } - else - { - v78 = result++; - } - ++v76; - *(_DWORD *)(v2 + 256) = result; - *(_BYTE *)(v2 + v78) = i28; - *(_BYTE *)(v2 + 260) = i28; - if ( "" == v76 ) - break; - } - } - ++v3; - } - while ( v3 < v462 ); - return result; - } - ++v75; - } - result = v5[3]; - v462 = v75; - v464 = (FILE *)result; - if ( !v75 ) - return result; - v465 = v75 - 1; - goto LABEL_135; - case 0x4C: - v69 = "[abi:"; - d_print_comp(result, *(_DWORD *)(a2 + 12)); - v70 = *(_DWORD *)(v2 + 256); - for ( i29 = 91; ; i29 = *v69 ) - { - if ( v70 == 255 ) - { - v73 = *(_DWORD *)(v2 + 268); - v414 = i29; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v73); - ++*(_DWORD *)(v2 + 296); - i29 = v414; - v72 = 0; - v70 = 1; - } - else - { - v72 = v70++; - } - ++v69; - *(_DWORD *)(v2 + 256) = v70; - *(_BYTE *)(v2 + v72) = i29; - *(_BYTE *)(v2 + 260) = i29; - if ( v69 == "" ) - break; - } - goto LABEL_394; - case 0x4E: - v122 = "[clone "; - d_print_comp(result, *(_DWORD *)(a2 + 12)); - v123 = *(_DWORD *)(v2 + 256); - for ( i30 = 32; ; i30 = *v122++ ) - { - if ( v123 == 255 ) - { - v126 = *(_DWORD *)(v2 + 268); - v424 = i30; - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v126); - ++*(_DWORD *)(v2 + 296); - i30 = v424; - v125 = 0; - v123 = 1; - } - else - { - v125 = v123++; - } - *(_DWORD *)(v2 + 256) = v123; - *(_BYTE *)(v2 + v125) = i30; - *(_BYTE *)(v2 + 260) = i30; - if ( v122 == "" ) - break; - } -LABEL_394: - d_print_comp(v2, v5[4]); - result = *(_DWORD *)(v2 + 256); - if ( result == 255 ) - { - v350 = *(_DWORD *)(v2 + 268); - *(_BYTE *)(v2 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(v2 + 264))(v2, 255, v350); - ++*(_DWORD *)(v2 + 296); - v273 = 1; - result = 0; - } - else - { - v273 = result + 1; - } - *(_DWORD *)(v2 + 256) = v273; - *(_BYTE *)(v2 + result) = 93; - *(_BYTE *)(v2 + 260) = 93; - return result; - default: - goto LABEL_7; - } - do - { - if ( result == *v375 ) - { - v377 = *(_DWORD **)(v2 + 300); - v378 = v377; - if ( !v377 ) - { -LABEL_606: - v394 = *(_DWORD *)(v2 + 272); - *(_DWORD *)(v2 + 272) = v375[1]; - v460 = v394; - v3 = 1; - result = (unsigned int)d_lookup_template_argument(v2, result); - if ( !result ) - goto LABEL_607; -LABEL_578: - v18 = *(_DWORD *)result; - if ( *(_DWORD *)result == 47 ) - { - v379 = *(_DWORD *)(v2 + 292); - if ( v379 < 0 ) - { - v405 = *(char **)(v2 + 276); - if ( *v5 != 47 ) - goto LABEL_36; - goto LABEL_463; - } - result = (unsigned int)d_index_template_argument_part_0((_DWORD *)result, v379); - if ( !result ) - { - if ( !v3 ) - goto LABEL_7; -LABEL_607: - result = v460; - *(_DWORD *)(v2 + 272) = v460; - goto LABEL_7; - } - v18 = *(_DWORD *)result; - } -LABEL_33: - v405 = *(char **)(v2 + 276); - if ( v18 != 35 && *v5 != v18 ) - { - if ( v18 == 36 ) - { - v13 = *(_DWORD *)(result + 12); - Str[0]._cnt = (int)v5; - Str[0]._base = 0; - Str[0]._ptr = v405; - *(_DWORD *)(v2 + 276) = Str; - Str[0]._flag = *(_DWORD *)(v2 + 272); - if ( v13 ) - goto LABEL_18; - goto LABEL_17; - } -LABEL_36: - v11 = v405; -LABEL_16: - Str[0]._ptr = v11; - *(_DWORD *)(v2 + 276) = Str; - v12 = *(_DWORD *)(v2 + 272); - Str[0]._cnt = (int)v5; - Str[0]._base = 0; - Str[0]._flag = v12; -LABEL_17: - v13 = v5[3]; -LABEL_18: - d_print_comp(v2, v13); - if ( !Str[0]._base ) - d_print_mod(v2, v5); - result = (unsigned int)Str[0]._ptr; - *(_DWORD *)(v2 + 276) = Str[0]._ptr; - if ( v3 ) - { - result = v460; - *(_DWORD *)(v2 + 272) = v460; - } - return result; - } -LABEL_463: - v5 = (_DWORD *)result; - goto LABEL_36; - } - while ( *v378 != result && (v377 == v378 || (_DWORD *)*v378 != v5) ) - { - v378 = (_DWORD *)v378[1]; - if ( !v378 ) - goto LABEL_606; - } -LABEL_577: - v3 = 0; - result = (unsigned int)d_lookup_template_argument(v2, result); - if ( !result ) - goto LABEL_7; - goto LABEL_578; - } - ++v376; - v375 += 2; - } - while ( v376 != v374 ); -LABEL_621: - if ( *(_DWORD *)(v2 + 312) <= v374 ) - goto LABEL_7; - v398 = *(_DWORD **)(v2 + 272); - v399 = *(_DWORD *)(v2 + 304) + 8 * v374; - *(_DWORD *)(v2 + 308) = v374 + 1; - v400 = (int *)(v399 + 4); - *(v400 - 1) = result; - if ( !v398 ) - { -LABEL_630: - *v400 = 0; - goto LABEL_577; - } - v401 = *(_DWORD *)(v2 + 320); - v464 = (FILE *)result; - v459 = *(_DWORD *)(v2 + 324); - while ( v459 > v401 ) - { - result = v398[1]; - v402 = *(_DWORD *)(v2 + 316) + 8 * v401++; - *(_DWORD *)(v2 + 320) = v401; - *(_DWORD *)(v402 + 4) = result; - *v400 = v402; - v398 = (_DWORD *)*v398; - v400 = (int *)v402; - if ( !v398 ) - { - result = (unsigned int)v464; - goto LABEL_630; - } - } -LABEL_7: - *(_DWORD *)(v2 + 280) = 1; - return result; -} -// 430443: conditional instruction was optimized away because eax.4==73 -// 42DCBF: variable 'v460' is possibly undefined -// 42E470: variable 'v75' is possibly undefined -// 4303BA: variable 'v358' is possibly undefined -// 4304AE: variable 'v363' is possibly undefined -// 513197: using guessed type void *off_513197; -// 513FC0: using guessed type void **off_513FC0; - -//----- (00430D00) -------------------------------------------------------- -int __usercall d_print_comp@(int result@, int a2@) -{ - _DWORD *v2; // esi - int v4; // edx - int v5; // eax - int v6; // [esp+8h] [ebp-14h] BYREF - int v7; // [esp+Ch] [ebp-10h] - - v2 = (_DWORD *)result; - if ( a2 && (result = *(_DWORD *)(a2 + 4), result <= 1) && (v4 = v2[71], v4 <= 1024) ) - { - v6 = a2; - *(_DWORD *)(a2 + 4) = result + 1; - v5 = v2[75]; - v2[71] = v4 + 1; - v7 = v5; - v2[75] = &v6; - d_print_comp_inner((unsigned int)v2, a2); - result = v7; - v2[75] = v7; - --*(_DWORD *)(a2 + 4); - --v2[71]; - } - else - { - v2[70] = 1; - } - return result; -} - -//----- (00430D90) -------------------------------------------------------- -int __usercall d_print_mod@(int a1@, _DWORD *a2@) -{ - _DWORD *v2; // esi - int result; // eax - const char *v5; // esi - char i; // dl - int v7; // ecx - int v8; // eax - const char *v9; // esi - char j; // dl - int v11; // ecx - int v12; // eax - const char *v13; // esi - char k; // dl - int v15; // ecx - int v16; // eax - const char *v17; // edi - char i1; // dl - int v19; // ecx - int v20; // eax - int v21; // edx - int v22; // edx - int v23; // eax - int v24; // edx - int v25; // edx - const char *v26; // esi - char m; // dl - int v28; // ecx - int v29; // eax - const char *v30; // esi - char n; // dl - int v32; // ecx - int v33; // eax - const char *v34; // esi - char ii; // dl - int v36; // ecx - int v37; // eax - int v38; // ecx - const char *v39; // esi - char jj; // dl - int v41; // ecx - int v42; // eax - int v43; // eax - const char *v44; // edi - char kk; // dl - int v46; // ecx - int v47; // eax - const char *v48; // esi - char mm; // dl - int v50; // ecx - int v51; // eax - const char *v52; // edi - char nn; // dl - int v54; // ecx - int v55; // eax - int v56; // ecx - int v57; // edx - int v58; // edx - int v59; // eax - int v60; // edx - int v61; // edx - int v62; // eax - int v63; // eax - int v64; // eax - int v65; // eax - int v66; // eax - int v67; // eax - int v68; // eax - int v69; // eax - char v70; // [esp+1Fh] [ebp-1Dh] - char v71; // [esp+1Fh] [ebp-1Dh] - char v72; // [esp+1Fh] [ebp-1Dh] - char v73; // [esp+1Fh] [ebp-1Dh] - char v74; // [esp+1Fh] [ebp-1Dh] - char v75; // [esp+1Fh] [ebp-1Dh] - char v76; // [esp+1Fh] [ebp-1Dh] - char v77; // [esp+1Fh] [ebp-1Dh] - char v78; // [esp+1Fh] [ebp-1Dh] - char v79; // [esp+1Fh] [ebp-1Dh] - char v80; // [esp+1Fh] [ebp-1Dh] - - v2 = a2; - switch ( *a2 ) - { - case 3: - a2 = (_DWORD *)a2[3]; - return d_print_comp(a1, (int)a2); - case 0x19: - case 0x1C: - result = *(_DWORD *)(a1 + 256); - v5 = "restrict"; - for ( i = 32; ; i = *v5++ ) - { - if ( result == 255 ) - { - v8 = *(_DWORD *)(a1 + 268); - v70 = i; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v8); - ++*(_DWORD *)(a1 + 296); - i = v70; - v7 = 0; - result = 1; - } - else - { - v7 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v7) = i; - *(_BYTE *)(a1 + 260) = i; - if ( v5 == "" ) - break; - } - return result; - case 0x1A: - case 0x1D: - result = *(_DWORD *)(a1 + 256); - v9 = "volatile"; - for ( j = 32; ; j = *v9++ ) - { - if ( result == 255 ) - { - v12 = *(_DWORD *)(a1 + 268); - v71 = j; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v12); - ++*(_DWORD *)(a1 + 296); - j = v71; - v11 = 0; - result = 1; - } - else - { - v11 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v11) = j; - *(_BYTE *)(a1 + 260) = j; - if ( v9 == "" ) - break; - } - return result; - case 0x1B: - case 0x1E: - result = *(_DWORD *)(a1 + 256); - v13 = "const"; - for ( k = 32; ; k = *v13++ ) - { - if ( result == 255 ) - { - v16 = *(_DWORD *)(a1 + 268); - v72 = k; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v16); - ++*(_DWORD *)(a1 + 296); - k = v72; - v15 = 0; - result = 1; - } - else - { - v15 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v15) = k; - *(_BYTE *)(a1 + 260) = k; - if ( v13 == "" ) - break; - } - return result; - case 0x1F: - v21 = *(_DWORD *)(a1 + 256); - if ( v21 == 255 ) - { - v65 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v65); - *(_BYTE *)a1 = 32; - result = 1; - ++*(_DWORD *)(a1 + 296); -LABEL_38: - v25 = result + 1; - goto LABEL_39; - } - result = v21 + 1; - *(_DWORD *)(a1 + 256) = v21 + 1; - *(_BYTE *)(a1 + v21) = 32; - *(_BYTE *)(a1 + 260) = 32; -LABEL_37: - if ( result != 255 ) - goto LABEL_38; - v67 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v67); - ++*(_DWORD *)(a1 + 296); - v25 = 1; - result = 0; -LABEL_39: - *(_DWORD *)(a1 + 256) = v25; - *(_BYTE *)(a1 + result) = 38; - *(_BYTE *)(a1 + 260) = 38; - return result; - case 0x20: - v22 = *(_DWORD *)(a1 + 256); - if ( v22 == 255 ) - { - v64 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v64); - ++*(_DWORD *)(a1 + 296); - result = 1; - v22 = 0; - } - else - { - result = v22 + 1; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v22) = 32; - *(_BYTE *)(a1 + 260) = 32; - goto LABEL_42; - case 0x21: - v23 = *(_DWORD *)(a1 + 256); - if ( v23 == 255 ) - { - v63 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v63); - ++*(_DWORD *)(a1 + 296); - v24 = 1; - v23 = 0; - } - else - { - v24 = v23 + 1; - } - *(_DWORD *)(a1 + 256) = v24; - *(_BYTE *)(a1 + v23) = 32; - *(_BYTE *)(a1 + 260) = 32; - a2 = (_DWORD *)v2[4]; - return d_print_comp(a1, (int)a2); - case 0x22: - result = *(_DWORD *)(a1 + 256); - if ( result == 255 ) - { - v69 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v69); - ++*(_DWORD *)(a1 + 296); - v61 = 1; - result = 0; - } - else - { - v61 = result + 1; - } - *(_DWORD *)(a1 + 256) = v61; - *(_BYTE *)(a1 + result) = 42; - *(_BYTE *)(a1 + 260) = 42; - return result; - case 0x23: - result = *(_DWORD *)(a1 + 256); - goto LABEL_37; - case 0x24: - result = *(_DWORD *)(a1 + 256); -LABEL_42: - v26 = "&&"; - for ( m = 38; ; m = *v26 ) - { - if ( result == 255 ) - { - v29 = *(_DWORD *)(a1 + 268); - v74 = m; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v29); - ++*(_DWORD *)(a1 + 296); - m = v74; - v28 = 0; - result = 1; - } - else - { - v28 = result++; - } - ++v26; - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v28) = m; - *(_BYTE *)(a1 + 260) = m; - if ( v26 == "" ) - break; - } - return result; - case 0x25: - result = *(_DWORD *)(a1 + 256); - v30 = "_Complex"; - for ( n = 32; ; n = *v30++ ) - { - if ( result == 255 ) - { - v33 = *(_DWORD *)(a1 + 268); - v75 = n; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v33); - ++*(_DWORD *)(a1 + 296); - n = v75; - v32 = 0; - result = 1; - } - else - { - v32 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v32) = n; - *(_BYTE *)(a1 + 260) = n; - if ( v30 == "" ) - break; - } - return result; - case 0x26: - result = *(_DWORD *)(a1 + 256); - v34 = "_Imaginary"; - for ( ii = 32; ; ii = *v34++ ) - { - if ( result == 255 ) - { - v37 = *(_DWORD *)(a1 + 268); - v76 = ii; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v37); - ++*(_DWORD *)(a1 + 296); - ii = v76; - v36 = 0; - result = 1; - } - else - { - v36 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v36) = ii; - *(_BYTE *)(a1 + 260) = ii; - if ( v34 == "" ) - break; - } - return result; - case 0x2B: - if ( *(_BYTE *)(a1 + 260) != 40 ) - { - v59 = *(_DWORD *)(a1 + 256); - if ( v59 == 255 ) - { - v68 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v68); - ++*(_DWORD *)(a1 + 296); - v60 = 1; - v59 = 0; - } - else - { - v60 = v59 + 1; - } - *(_DWORD *)(a1 + 256) = v60; - *(_BYTE *)(a1 + v59) = 32; - *(_BYTE *)(a1 + 260) = 32; - } - v38 = v2[3]; - v39 = "::*"; - d_print_comp(a1, v38); - result = *(_DWORD *)(a1 + 256); - for ( jj = 58; ; jj = *v39 ) - { - if ( result == 255 ) - { - v42 = *(_DWORD *)(a1 + 268); - v77 = jj; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v42); - ++*(_DWORD *)(a1 + 296); - jj = v77; - v41 = 0; - result = 1; - } - else - { - v41 = result++; - } - ++v39; - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v41) = jj; - *(_BYTE *)(a1 + 260) = jj; - if ( v39 == "" ) - break; - } - return result; - case 0x2D: - v43 = *(_DWORD *)(a1 + 256); - v44 = "__vector("; - for ( kk = 32; ; kk = *v44++ ) - { - if ( v43 == 255 ) - { - v47 = *(_DWORD *)(a1 + 268); - v78 = kk; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v47); - ++*(_DWORD *)(a1 + 296); - kk = v78; - v46 = 0; - v43 = 1; - } - else - { - v46 = v43++; - } - *(_DWORD *)(a1 + 256) = v43; - *(_BYTE *)(a1 + v46) = kk; - *(_BYTE *)(a1 + 260) = kk; - if ( v44 == "" ) - break; - } - v56 = v2[3]; - goto LABEL_90; - case 0x4D: - result = *(_DWORD *)(a1 + 256); - v48 = "transaction_safe"; - for ( mm = 32; ; mm = *v48++ ) - { - if ( result == 255 ) - { - v51 = *(_DWORD *)(a1 + 268); - v79 = mm; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v51); - ++*(_DWORD *)(a1 + 296); - mm = v79; - v50 = 0; - result = 1; - } - else - { - v50 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v50) = mm; - *(_BYTE *)(a1 + 260) = mm; - if ( v48 == "" ) - break; - } - return result; - case 0x4F: - result = *(_DWORD *)(a1 + 256); - v52 = "noexcept"; - for ( nn = 32; ; nn = *v52++ ) - { - if ( result == 255 ) - { - v55 = *(_DWORD *)(a1 + 268); - v80 = nn; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v55); - ++*(_DWORD *)(a1 + 296); - nn = v80; - v54 = 0; - result = 1; - } - else - { - v54 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v54) = nn; - *(_BYTE *)(a1 + 260) = nn; - if ( v52 == "" ) - break; - } - goto LABEL_85; - case 0x50: - result = *(_DWORD *)(a1 + 256); - v17 = "throw"; - for ( i1 = 32; ; i1 = *v17++ ) - { - if ( result == 255 ) - { - v20 = *(_DWORD *)(a1 + 268); - v73 = i1; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); - ++*(_DWORD *)(a1 + 296); - i1 = v73; - v19 = 0; - result = 1; - } - else - { - v19 = result++; - } - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v19) = i1; - *(_BYTE *)(a1 + 260) = i1; - if ( v17 == "" ) - break; - } -LABEL_85: - v56 = v2[4]; - if ( v56 ) - { - if ( result == 255 ) - { - v62 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v62); - v56 = v2[4]; - v57 = 1; - result = 0; - ++*(_DWORD *)(a1 + 296); - } - else - { - v57 = result + 1; - } - *(_DWORD *)(a1 + 256) = v57; - *(_BYTE *)(a1 + result) = 40; - *(_BYTE *)(a1 + 260) = 40; -LABEL_90: - d_print_comp(a1, v56); - result = *(_DWORD *)(a1 + 256); - if ( result == 255 ) - { - v66 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v66); - ++*(_DWORD *)(a1 + 296); - v58 = 1; - result = 0; - } - else - { - v58 = result + 1; - } - *(_DWORD *)(a1 + 256) = v58; - *(_BYTE *)(a1 + result) = 41; - *(_BYTE *)(a1 + 260) = 41; - } - return result; - default: - return d_print_comp(a1, (int)a2); - } -} - -//----- (004316F0) -------------------------------------------------------- -unsigned int __usercall d_print_function_type@(unsigned int a1@, int a2@, int **a3) -{ - int **v5; // edx - char v6; // dl - int v7; // eax - int v8; // edx - int v9; // ebp - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // ecx - int v14; // edx - unsigned int result; // eax - int v16; // eax - int v17; // eax - int v18; // eax - int v19; // eax - int v20; // eax - - if ( !a3 ) - goto LABEL_17; - v5 = a3; - while ( 2 ) - { - if ( v5[2] ) - { -LABEL_17: - v9 = *(_DWORD *)(a1 + 276); - *(_DWORD *)(a1 + 276) = 0; - d_print_mod_list(a1, a3, 0); - v11 = *(_DWORD *)(a1 + 256); - if ( v11 != 255 ) - { -LABEL_11: - v12 = v11 + 1; - *(_DWORD *)(a1 + 256) = v11 + 1; - *(_BYTE *)(a1 + v11) = 40; - *(_BYTE *)(a1 + 260) = 40; - v13 = *(_DWORD *)(a2 + 16); - if ( !v13 ) - goto LABEL_13; - goto LABEL_12; - } - goto LABEL_18; - } - switch ( *v5[1] ) - { - case 25: - case 26: - case 27: - case 33: - case 37: - case 38: - case 43: - v6 = *(_BYTE *)(a1 + 260); - v7 = *(_DWORD *)(a1 + 256); - goto LABEL_6; - case 34: - case 35: - case 36: - v6 = *(_BYTE *)(a1 + 260); - v7 = *(_DWORD *)(a1 + 256); - if ( (*(_BYTE *)(a1 + 260) & 0xFD) == 40 ) - { - if ( v7 == 255 ) - goto LABEL_22; - goto LABEL_8; - } -LABEL_6: - if ( v6 != 32 ) - { - if ( v7 == 255 ) - { - v20 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v20); - *(_BYTE *)a1 = 32; - v7 = 1; - ++*(_DWORD *)(a1 + 296); - goto LABEL_8; - } - *(_DWORD *)(a1 + 256) = v7 + 1; - *(_BYTE *)(a1 + v7++) = 32; - *(_BYTE *)(a1 + 260) = 32; - } - if ( v7 != 255 ) - { -LABEL_8: - v8 = v7 + 1; - goto LABEL_9; - } -LABEL_22: - v17 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v17); - ++*(_DWORD *)(a1 + 296); - v8 = 1; - v7 = 0; -LABEL_9: - *(_DWORD *)(a1 + 256) = v8; - *(_BYTE *)(a1 + v7) = 40; - v9 = *(_DWORD *)(a1 + 276); - *(_BYTE *)(a1 + 260) = 40; - *(_DWORD *)(a1 + 276) = 0; - d_print_mod_list(a1, a3, 0); - v10 = *(_DWORD *)(a1 + 256); - if ( v10 != 255 ) - { - v11 = v10 + 1; - *(_DWORD *)(a1 + 256) = v10 + 1; - *(_BYTE *)(a1 + v10) = 41; - *(_BYTE *)(a1 + 260) = 41; - if ( v10 != 254 ) - goto LABEL_11; -LABEL_18: - v16 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v16); - *(_BYTE *)a1 = 40; - *(_BYTE *)(a1 + 260) = 40; - v13 = *(_DWORD *)(a2 + 16); - ++*(_DWORD *)(a1 + 296); - *(_DWORD *)(a1 + 256) = 1; - if ( !v13 ) - { - v12 = 1; - goto LABEL_14; - } - goto LABEL_12; - } - v19 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v19); - *(_BYTE *)(a1 + 260) = 40; - *(_WORD *)a1 = 10281; - v13 = *(_DWORD *)(a2 + 16); - v12 = 2; - ++*(_DWORD *)(a1 + 296); - *(_DWORD *)(a1 + 256) = 2; - if ( !v13 ) - goto LABEL_14; -LABEL_12: - d_print_comp(a1, v13); - v12 = *(_DWORD *)(a1 + 256); -LABEL_13: - if ( v12 == 255 ) - { - v18 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v18); - ++*(_DWORD *)(a1 + 296); - v14 = 1; - v12 = 0; - goto LABEL_15; - } -LABEL_14: - v14 = v12 + 1; -LABEL_15: - *(_DWORD *)(a1 + 256) = v14; - *(_BYTE *)(a1 + v12) = 41; - *(_BYTE *)(a1 + 260) = 41; - result = d_print_mod_list(a1, a3, 1); - *(_DWORD *)(a1 + 276) = v9; - return result; - default: - v5 = (int **)*v5; - if ( !v5 ) - goto LABEL_17; - continue; - } - } -} - -//----- (00431A30) -------------------------------------------------------- -unsigned int __usercall d_print_mod_list@(unsigned int result@, int **a2@, int a3) -{ - int **v3; // edi - unsigned int v4; // ebx - int *v5; // edx - int v6; // esi - unsigned int *v7; // ecx - bool v8; // cf - int *v9; // eax - int v10; // ebp - int v11; // ecx - int v12; // eax - const char *v13; // ebp - char i; // dl - int v15; // ecx - int v16; // eax - unsigned int *v17; // ebp - unsigned int v18; // edx - char *v19; // edi - char j; // dl - int v21; // ecx - int v22; // eax - FILE *p_Str; // edi - size_t v24; // edx - int v25; // eax - FILE *v26; // esi - int v27; // ecx - char ptr; // dl - int v29; // eax - const char *v30; // edi - char k; // dl - int v32; // ecx - int v33; // eax - char v34; // [esp+1Bh] [ebp-41h] - char v35; // [esp+1Bh] [ebp-41h] - char v36; // [esp+1Bh] [ebp-41h] - char v37; // [esp+1Bh] [ebp-41h] - int v38; // [esp+1Ch] [ebp-40h] - FILE Str; // [esp+27h] [ebp-35h] BYREF - - v3 = a2; - v4 = result; - if ( a2 ) - { - while ( 1 ) - { - if ( *(_DWORD *)(v4 + 280) ) - return result; - result = (unsigned int)v3[2]; - if ( !result ) - break; -LABEL_7: - v3 = (int **)*v3; - if ( !v3 ) - return result; - } - v7 = (unsigned int *)v3[1]; - result = *v7; - if ( !a3 ) - { - if ( result == 77 ) - goto LABEL_7; - if ( result > 0x4D ) - { - v8 = result == 79; - result -= 79; - if ( v8 || result == 1 ) - goto LABEL_7; - v9 = v3[3]; - v6 = *(_DWORD *)(v4 + 272); - v3[2] = (int *)1; - *(_DWORD *)(v4 + 272) = v9; - goto LABEL_6; - } - if ( result - 28 <= 4 ) - goto LABEL_7; - } - v5 = v3[3]; - v6 = *(_DWORD *)(v4 + 272); - v3[2] = (int *)1; - *(_DWORD *)(v4 + 272) = v5; - switch ( result ) - { - case 0x29u: - result = d_print_function_type(v4, (int)v7, *v3); - *(_DWORD *)(v4 + 272) = v6; - return result; - case 0x2Au: - result = d_print_array_type(v4, (int)v7, (int **)*v3); - *(_DWORD *)(v4 + 272) = v6; - return result; - case 2u: - v10 = *(_DWORD *)(v4 + 276); - v11 = v7[3]; - *(_DWORD *)(v4 + 276) = 0; - d_print_comp(v4, v11); - *(_DWORD *)(v4 + 276) = v10; - v12 = *(_DWORD *)(v4 + 256); - v13 = "::"; - for ( i = 58; ; i = *v13 ) - { - if ( v12 == 255 ) - { - v16 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v34 = i; - (*(void (__cdecl **)(unsigned int, int, int))(v4 + 264))(v4, 255, v16); - ++*(_DWORD *)(v4 + 296); - i = v34; - v15 = 0; - v12 = 1; - } - else - { - v15 = v12++; - } - ++v13; - *(_DWORD *)(v4 + 256) = v12; - *(_BYTE *)(v4 + v15) = i; - *(_BYTE *)(v4 + 260) = i; - if ( v13 == "" ) - break; - } - v17 = (unsigned int *)v3[1][4]; - v18 = *v17; - if ( *v17 == 71 ) - { - v19 = "{default arg#" + 1; - for ( j = 123; ; j = *v19++ ) - { - if ( v12 == 255 ) - { - v22 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v35 = j; - (*(void (__cdecl **)(unsigned int, int, int))(v4 + 264))(v4, 255, v22); - ++*(_DWORD *)(v4 + 296); - j = v35; - v21 = 0; - v12 = 1; - } - else - { - v21 = v12++; - } - *(_DWORD *)(v4 + 256) = v12; - *(_BYTE *)(v4 + v21) = j; - *(_BYTE *)(v4 + 260) = j; - if ( v19 == "" ) - break; - } - p_Str = &Str; - sprintf_constprop_0(&Str, (int)"%d", v17[4] + 1); - v24 = strlen((const char *)&Str); - v25 = *(_DWORD *)(v4 + 256); - if ( v24 ) - { - v38 = v6; - v26 = (FILE *)((char *)&Str + v24); - do - { - ptr = (char)p_Str->_ptr; - if ( v25 == 255 ) - { - v29 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v36 = ptr; - (*(void (__cdecl **)(unsigned int, int, int))(v4 + 264))(v4, 255, v29); - ++*(_DWORD *)(v4 + 296); - ptr = v36; - v27 = 0; - v25 = 1; - } - else - { - v27 = v25++; - } - p_Str = (FILE *)((char *)p_Str + 1); - *(_DWORD *)(v4 + 256) = v25; - *(_BYTE *)(v4 + v27) = ptr; - *(_BYTE *)(v4 + 260) = ptr; - } - while ( p_Str != v26 ); - v6 = v38; - } - v30 = "}::"; - for ( k = 125; ; k = *v30 ) - { - if ( v25 == 255 ) - { - v33 = *(_DWORD *)(v4 + 268); - *(_BYTE *)(v4 + 255) = 0; - v37 = k; - (*(void (__cdecl **)(unsigned int, int, int))(v4 + 264))(v4, 255, v33); - ++*(_DWORD *)(v4 + 296); - k = v37; - v32 = 0; - v25 = 1; - } - else - { - v32 = v25++; - } - *(_DWORD *)(v4 + 256) = v25; - ++v30; - *(_BYTE *)(v4 + v32) = k; - *(_BYTE *)(v4 + 260) = k; - if ( v30 == "" ) - break; - } - goto LABEL_32; - } - while ( 1 ) - { - if ( v18 != 77 ) - { - if ( v18 > 0x4D ) - { - if ( v18 - 79 > 1 ) - { -LABEL_30: - result = d_print_comp(v4, (int)v17); - *(_DWORD *)(v4 + 272) = v6; - return result; - } - } - else if ( v18 - 28 > 4 ) - { - goto LABEL_30; - } - } -LABEL_32: - v17 = (unsigned int *)v17[3]; - v18 = *v17; - } - } -LABEL_6: - result = d_print_mod(v4, v7); - *(_DWORD *)(v4 + 272) = v6; - goto LABEL_7; - } - return result; -} -// 431A30: using guessed type FILE var_35; - -//----- (00431D90) -------------------------------------------------------- -int __usercall d_print_array_type@(unsigned int a1@, int a2@, int **a3) -{ - int **v5; // eax - int v6; // eax - int v7; // edx - int result; // eax - int v9; // ecx - int v10; // edx - int v11; // eax - int v12; // eax - int v13; // eax - char *v14; // esi - char i; // dl - int v16; // ecx - int v17; // eax - int v18; // edx - int v19; // eax - int v20; // eax - char v21; // [esp+1Fh] [ebp-1Dh] - - v5 = a3; - if ( !a3 ) - { -LABEL_5: - v6 = *(_DWORD *)(a1 + 256); - if ( v6 == 255 ) - goto LABEL_25; -LABEL_6: - v7 = v6 + 1; - *(_DWORD *)(a1 + 256) = v6 + 1; - *(_BYTE *)(a1 + v6) = 32; - *(_BYTE *)(a1 + 260) = 32; - if ( v6 == 254 ) - goto LABEL_14; - goto LABEL_7; - } - while ( v5[2] ) - { - v5 = (int **)*v5; - if ( !v5 ) - { - d_print_mod_list(a1, a3, 0); - goto LABEL_5; - } - } - if ( *v5[1] == 42 ) - { - d_print_mod_list(a1, a3, 0); - v7 = *(_DWORD *)(a1 + 256); - if ( v7 == 255 ) - { -LABEL_14: - v11 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v11); - *(_BYTE *)a1 = 91; - *(_BYTE *)(a1 + 260) = 91; - v9 = *(_DWORD *)(a2 + 12); - ++*(_DWORD *)(a1 + 296); - *(_DWORD *)(a1 + 256) = 1; - if ( !v9 ) - { - result = 1; - goto LABEL_10; - } - goto LABEL_8; - } -LABEL_7: - result = v7 + 1; - *(_DWORD *)(a1 + 256) = v7 + 1; - *(_BYTE *)(a1 + v7) = 91; - *(_BYTE *)(a1 + 260) = 91; - v9 = *(_DWORD *)(a2 + 12); - if ( !v9 ) - goto LABEL_9; - goto LABEL_8; - } - v13 = *(_DWORD *)(a1 + 256); - v14 = (char *)&unk_513574; - for ( i = 32; ; i = *v14 ) - { - if ( v13 == 255 ) - { - v17 = *(_DWORD *)(a1 + 268); - v21 = i; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v17); - ++*(_DWORD *)(a1 + 296); - i = v21; - v16 = 0; - v13 = 1; - } - else - { - v16 = v13++; - } - *(_DWORD *)(a1 + 256) = v13; - ++v14; - *(_BYTE *)(a1 + v16) = i; - *(_BYTE *)(a1 + 260) = i; - if ( &unk_513576 == (_UNKNOWN *)v14 ) - break; - } - d_print_mod_list(a1, a3, 0); - v18 = *(_DWORD *)(a1 + 256); - if ( v18 == 255 ) - { - v20 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v20); - *(_BYTE *)a1 = 41; - v6 = 1; - ++*(_DWORD *)(a1 + 296); - goto LABEL_6; - } - v6 = v18 + 1; - *(_DWORD *)(a1 + 256) = v18 + 1; - *(_BYTE *)(a1 + v18) = 41; - *(_BYTE *)(a1 + 260) = 41; - if ( v18 != 254 ) - goto LABEL_6; -LABEL_25: - v19 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v19); - *(_BYTE *)(a1 + 260) = 91; - *(_WORD *)a1 = 23328; - v9 = *(_DWORD *)(a2 + 12); - result = 2; - ++*(_DWORD *)(a1 + 296); - *(_DWORD *)(a1 + 256) = 2; - if ( !v9 ) - goto LABEL_10; -LABEL_8: - d_print_comp(a1, v9); - result = *(_DWORD *)(a1 + 256); -LABEL_9: - if ( result == 255 ) - { - v12 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v12); - ++*(_DWORD *)(a1 + 296); - v10 = 1; - result = 0; - goto LABEL_11; - } -LABEL_10: - v10 = result + 1; -LABEL_11: - *(_DWORD *)(a1 + 256) = v10; - *(_BYTE *)(a1 + result) = 93; - *(_BYTE *)(a1 + 260) = 93; - return result; -} - -//----- (00432070) -------------------------------------------------------- -int __usercall d_print_conversion@(int a1@, int a2@) -{ - int v4; // eax - int v5; // edx - _DWORD *v6; // ecx - int result; // eax - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - int v15; // eax - int v16[5]; // [esp+18h] [ebp-14h] BYREF - - v4 = *(_DWORD *)(a1 + 328); - if ( v4 ) - { - v5 = *(_DWORD *)(a1 + 272); - v16[1] = v4; - v16[0] = v5; - *(_DWORD *)(a1 + 272) = v16; - } - v6 = *(_DWORD **)(a2 + 12); - if ( *v6 == 4 ) - { - d_print_comp(a1, v6[3]); - if ( *(_DWORD *)(a1 + 328) ) - *(_DWORD *)(a1 + 272) = v16[0]; - v8 = *(_DWORD *)(a1 + 256); - if ( *(_BYTE *)(a1 + 260) == 60 ) - { - if ( v8 == 255 ) - { - v14 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v14); - *(_BYTE *)a1 = 32; - v8 = 1; - ++*(_DWORD *)(a1 + 296); - goto LABEL_11; - } - *(_DWORD *)(a1 + 256) = v8 + 1; - *(_BYTE *)(a1 + v8++) = 32; - *(_BYTE *)(a1 + 260) = 32; - } - if ( v8 == 255 ) - { - v13 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v13); - ++*(_DWORD *)(a1 + 296); - v9 = 1; - v8 = 0; -LABEL_12: - *(_DWORD *)(a1 + 256) = v9; - *(_BYTE *)(a1 + v8) = 60; - *(_BYTE *)(a1 + 260) = 60; - d_print_comp(a1, *(_DWORD *)(*(_DWORD *)(a2 + 12) + 16)); - if ( *(_BYTE *)(a1 + 260) == 62 ) - { - v12 = *(_DWORD *)(a1 + 256); - if ( v12 == 255 ) - { - v15 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v15); - *(_BYTE *)a1 = 32; - result = 1; - ++*(_DWORD *)(a1 + 296); - goto LABEL_15; - } - result = v12 + 1; - *(_DWORD *)(a1 + 256) = v12 + 1; - *(_BYTE *)(a1 + v12) = 32; - *(_BYTE *)(a1 + 260) = 32; - } - else - { - result = *(_DWORD *)(a1 + 256); - } - if ( result == 255 ) - { - v11 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v11); - ++*(_DWORD *)(a1 + 296); - v10 = 1; - result = 0; - goto LABEL_16; - } -LABEL_15: - v10 = result + 1; -LABEL_16: - *(_DWORD *)(a1 + 256) = v10; - *(_BYTE *)(a1 + result) = 62; - *(_BYTE *)(a1 + 260) = 62; - return result; - } -LABEL_11: - v9 = v8 + 1; - goto LABEL_12; - } - result = d_print_comp(a1, (int)v6); - if ( *(_DWORD *)(a1 + 328) ) - { - result = v16[0]; - *(_DWORD *)(a1 + 272) = v16[0]; - } - return result; -} - -//----- (004322C0) -------------------------------------------------------- -int __usercall d_print_expr_op@(int a1@, _DWORD *a2@) -{ - int result; // eax - int v4; // edi - char *v5; // esi - char *v6; // edi - int v7; // ecx - char v8; // dl - int v9; // eax - char v10; // [esp+1Fh] [ebp-Dh] - - if ( *a2 != 50 ) - return d_print_comp(a1, (int)a2); - result = a2[3]; - v4 = *(_DWORD *)(result + 8); - v5 = *(char **)(result + 4); - if ( v4 ) - { - result = *(_DWORD *)(a1 + 256); - v6 = &v5[v4]; - do - { - v8 = *v5; - if ( result == 255 ) - { - v9 = *(_DWORD *)(a1 + 268); - v10 = *v5; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); - ++*(_DWORD *)(a1 + 296); - v8 = v10; - v7 = 0; - result = 1; - } - else - { - v7 = result++; - } - ++v5; - *(_DWORD *)(a1 + 256) = result; - *(_BYTE *)(a1 + v7) = v8; - *(_BYTE *)(a1 + 260) = v8; - } - while ( v5 != v6 ); - } - return result; -} - -//----- (00432370) -------------------------------------------------------- -BOOL __usercall d_demangle_callback_constprop_0@( - char *a1@, - void (__cdecl *a2)(char *, int, int)@, - int a3@) -{ - char v4; // al - bool v5; // zf - int v6; // esi - char v7; // al - char v8; // al - size_t v9; // eax - int v10; // edx - int v11; // ecx - int v12; // ecx - int v13; // eax - void *v14; // esp - void *v15; // esp - int *v16; // edi - int v17; // eax - void *v18; // esp - void *v19; // esp - size_t v20; // eax - int v21; // edx - int *comp; // edi - int v23; // ecx - char v24; // al - int v25; // eax - int v26; // edx - int v27; // eax - void *v28; // esp - void *v29; // esp - int v30; // eax - void *v31; // esp - void *v32; // esp - int v33; // eax - int v34; // edx - char v36; // al - char *v37; // edx - int v38; // eax - char v39; // al - char *v40; // ecx - int *v41; // esi - _DWORD *name; // eax - int *v43; // eax - char v44; // al - int v45[3]; // [esp+0h] [ebp-1D8h] BYREF - int v46[3]; // [esp+Ch] [ebp-1CCh] BYREF - int v47; // [esp+18h] [ebp-1C0h] - int v48; // [esp+1Ch] [ebp-1BCh] - int *v49; // [esp+20h] [ebp-1B8h] - int *v50; // [esp+24h] [ebp-1B4h] - int v51; // [esp+28h] [ebp-1B0h] - void (__cdecl *v52)(char *, int, int); // [esp+2Ch] [ebp-1ACh] - int v53[2]; // [esp+38h] [ebp-1A0h] BYREF - int v54; // [esp+40h] [ebp-198h] - char *Str; // [esp+44h] [ebp-194h] - int *v56; // [esp+48h] [ebp-190h] - int v57; // [esp+4Ch] [ebp-18Ch] - size_t v58; // [esp+50h] [ebp-188h] - int *v59; // [esp+54h] [ebp-184h] - int v60; // [esp+58h] [ebp-180h] - size_t v61; // [esp+5Ch] [ebp-17Ch] - int v62; // [esp+60h] [ebp-178h] - int v63; // [esp+64h] [ebp-174h] - int v64; // [esp+68h] [ebp-170h] - int v65; // [esp+6Ch] [ebp-16Ch] - int v66; // [esp+70h] [ebp-168h] - char v67[256]; // [esp+74h] [ebp-164h] BYREF - int v68; // [esp+174h] [ebp-64h] - char v69; // [esp+178h] [ebp-60h] - void (__cdecl *v70)(char *, int, int); // [esp+17Ch] [ebp-5Ch] - int v71; // [esp+180h] [ebp-58h] - int v72; // [esp+184h] [ebp-54h] - int v73; // [esp+188h] [ebp-50h] - int v74; // [esp+18Ch] [ebp-4Ch] - int v75; // [esp+190h] [ebp-48h] - int v76; // [esp+194h] [ebp-44h] - int v77; // [esp+198h] [ebp-40h] - int v78; // [esp+19Ch] [ebp-3Ch] - int v79; // [esp+1A0h] [ebp-38h] - int *v80; // [esp+1A4h] [ebp-34h] - int v81; // [esp+1A8h] [ebp-30h] - int v82; // [esp+1ACh] [ebp-2Ch] - int *v83; // [esp+1B0h] [ebp-28h] - int v84; // [esp+1B4h] [ebp-24h] - int v85; // [esp+1B8h] [ebp-20h] - int v86; // [esp+1BCh] [ebp-1Ch] - - v4 = *a1; - v52 = a2; - v51 = a3; - LOBYTE(v50) = v4; - if ( v4 != 95 || (v6 = 1, a1[1] != 90) ) - { - v5 = memcmp(a1, "_GLOBAL_", 8u) == 0; - v6 = 0; - if ( v5 ) - { - v7 = a1[8]; - if ( v7 == 95 || v7 == 46 || v7 == 36 ) - { - v8 = a1[9]; - if ( v8 == 68 || (v6 = 0, v8 == 73) ) - { - v6 = 0; - if ( a1[10] == 95 ) - v6 = (v8 != 73) + 2; - } - } - } - } - v9 = strlen(a1); - v53[0] = (int)a1; - v10 = 2 * v9; - v54 = 17; - v53[1] = (int)&a1[v9]; - v11 = 0; - Str = a1; - v58 = 2 * v9; - v57 = 0; - v61 = v9; - v60 = 0; - v62 = 0; - v63 = 0; - v64 = 0; - v65 = 0; - v66 = 0; - if ( 2 * v9 <= 0x800 ) - { - v12 = 4 * v9; - v49 = v45; - v13 = 16 * ((40 * v9 + 15) >> 4); - v14 = alloca(v13); - v15 = alloca(v13); - v16 = v46; - v48 = ((unsigned int)v46 + 3) >> 2; - v17 = 16 * ((unsigned int)(v12 + 15) >> 4); - v18 = alloca(v17); - v19 = alloca(v17); - v56 = v46; - v59 = v46; - if ( v6 != 1 ) - { - if ( (unsigned int)(v6 - 2) > 1 ) - { - comp = d_type(v53, v45[0], v45[1], v45[2], v46[0], v46[1], v46[2], v47, v48, (int)v49, (int)v50, v51); - v24 = *Str; - } - else - { - v5 = a1[11] == 95; - Str = a1 + 11; - if ( v5 && a1[12] == 90 ) - { - Str = a1 + 13; - v44 = a1[13]; - if ( v44 == 71 || v44 == 84 ) - v16 = d_special_name(v53); - else - v16 = (int *)d_encoding_part_0((int)v53, 0); - } - else - { - v47 = v10; - v50 = (int *)(a1 + 11); - v20 = strlen(a1 + 11); - if ( v47 > 0 && (v57 = 1, v21 = v48, *(_DWORD *)(4 * v48 + 4) = 0, *(_DWORD *)(4 * v21 + 8) = 0, v20) ) - { - *(_DWORD *)(4 * v21 + 0xC) = a1 + 11; - *(_DWORD *)(4 * v21) = 0; - *(_DWORD *)(4 * v21 + 0x10) = v20; - } - else - { - v16 = 0; - } - } - comp = d_make_comp(v53, (v6 != 2) + 68, (int)v16, 0); - Str += strlen(Str); - v24 = *Str; - } - goto LABEL_16; - } - if ( (_BYTE)v50 != 95 || a1[1] != 90 ) - return 0; - Str = a1 + 2; - v36 = a1[2]; - if ( v36 == 71 || v36 == 84 ) - comp = d_special_name(v53); - else - comp = (int *)d_encoding_part_0((int)v53, 1); - v24 = *Str; - if ( (v54 & 1) == 0 || v24 != 46 ) - { -LABEL_16: - if ( !v24 && comp ) - { - v68 = 0; - v69 = 0; - v70 = v52; - v72 = 0; - v71 = v51; - v73 = 0; - v77 = 0; - v78 = 0; - v74 = 0; - v75 = 0; - v76 = 0; - v79 = 0; - v80 = 0; - v81 = 0; - v82 = 0; - v83 = 0; - v84 = 0; - v85 = 0; - d_count_templates_scopes((int)v67, comp, v23); - if ( v75 <= 2047 ) - v75 = 0; - v25 = v82; - v86 = 0; - v26 = v82 * v85; - if ( v82 <= 0 ) - v25 = 1; - v85 *= v82; - v27 = 16 * ((unsigned int)(8 * v25 + 15) >> 4); - v28 = alloca(v27); - v29 = alloca(v27); - v80 = v46; - if ( v26 <= 0 ) - v26 = 1; - v30 = 16 * ((unsigned int)(8 * v26 + 15) >> 4); - v31 = alloca(v30); - v32 = alloca(v30); - v83 = v46; - d_print_comp((int)v67, (int)comp); - v33 = v68; - v34 = v71; - v67[v68] = 0; - v70(v67, v33, v34); - return v74 == 0; - } - return 0; - } - v50 = v53; - v37 = Str; - while ( 1 ) - { - v38 = (unsigned __int8)v37[1]; - v23 = v38 - 97; - if ( (unsigned __int8)(v38 - 97) <= 0x19u || (_BYTE)v38 == 95 ) - break; - if ( (unsigned __int8)(v38 - 48) > 9u ) - { - v24 = *v37; - goto LABEL_16; - } - v39 = *v37; - v40 = v37; -LABEL_44: - while ( v39 == 46 && (unsigned __int8)(v40[1] - 48) <= 9u ) - { - v39 = v40[2]; - for ( v40 += 2; (unsigned __int8)(v39 - 48) <= 9u; ++v40 ) - v39 = v40[1]; - } - v41 = v50; - Str = v40; - name = d_make_name(v50, (int)v37, v40 - v37); - v43 = d_make_comp(v41, 78, (int)comp, (int)name); - v37 = Str; - comp = v43; - v24 = *Str; - if ( *Str != 46 ) - goto LABEL_16; - } - v39 = v37[2]; - v40 = v37 + 2; - if ( (unsigned __int8)(v39 - 97) > 0x19u ) - goto LABEL_57; - while ( 1 ) - { - do - v39 = *++v40; - while ( (unsigned __int8)(v39 - 97) <= 0x19u ); -LABEL_57: - if ( v39 != 95 ) - goto LABEL_44; - } - } - return v11; -} -// 432631: variable 'v23' is possibly undefined -// 432370: using guessed type char var_164[256]; - -//----- (004328E0) -------------------------------------------------------- -int __usercall d_print_subexpr@(unsigned int a1@, _DWORD *a2@) -{ - int v4; // edi - int result; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // [esp+18h] [ebp-14h] BYREF - int v14; // [esp+1Ch] [ebp-10h] - - if ( *a2 == 49 || *a2 <= 1u || *a2 == 6 ) - { - v4 = 1; - } - else - { - v9 = *(_DWORD *)(a1 + 256); - if ( v9 == 255 ) - { - v12 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v12); - ++*(_DWORD *)(a1 + 296); - v10 = 1; - v9 = 0; - } - else - { - v10 = v9 + 1; - } - *(_DWORD *)(a1 + 256) = v10; - v4 = 0; - *(_BYTE *)(a1 + v9) = 40; - *(_BYTE *)(a1 + 260) = 40; - } - result = a2[1]; - if ( result > 1 || (v6 = *(_DWORD *)(a1 + 284), v6 > 1024) ) - { - *(_DWORD *)(a1 + 280) = 1; - if ( v4 ) - return result; - } - else - { - v13 = a2; - a2[1] = result + 1; - v7 = *(_DWORD *)(a1 + 300); - *(_DWORD *)(a1 + 284) = v6 + 1; - v14 = v7; - *(_DWORD *)(a1 + 300) = &v13; - d_print_comp_inner(a1, (int)a2); - result = v14; - *(_DWORD *)(a1 + 300) = v14; - --a2[1]; - --*(_DWORD *)(a1 + 284); - if ( v4 ) - return result; - } - result = *(_DWORD *)(a1 + 256); - if ( result == 255 ) - { - v11 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v11); - ++*(_DWORD *)(a1 + 296); - v8 = 1; - result = 0; - } - else - { - v8 = result + 1; - } - *(_DWORD *)(a1 + 256) = v8; - *(_BYTE *)(a1 + result) = 41; - *(_BYTE *)(a1 + 260) = 41; - return result; -} - -//----- (00432A50) -------------------------------------------------------- -int __usercall d_maybe_print_fold_expression@(unsigned int a1@, int a2@) -{ - _BYTE *v3; // eax - int v4; // edx - _DWORD *v5; // esi - _DWORD *v6; // edi - _DWORD *v7; // ebp - int v8; // edx - char v9; // al - int v10; // eax - int v11; // edx - _DWORD *v12; // ecx - const char *v13; // edi - int v14; // eax - char k; // dl - int v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - int v20; // eax - int v21; // edx - int v22; // eax - int v23; // edx - const char *v24; // esi - int v25; // eax - char j; // dl - int v27; // ecx - int v28; // eax - int v29; // eax - const char *v30; // esi - char i; // dl - int v32; // ecx - int v33; // eax - int v34; // eax - int v35; // eax - int v36; // eax - int v37; // [esp+18h] [ebp-24h] - char v38; // [esp+1Fh] [ebp-1Dh] - char v39; // [esp+1Fh] [ebp-1Dh] - char v40; // [esp+1Fh] [ebp-1Dh] - - v3 = **(_BYTE ***)(*(_DWORD *)(a2 + 12) + 12); - if ( *v3 != 102 ) - return 0; - v4 = *(_DWORD *)(a2 + 16); - v5 = 0; - v6 = *(_DWORD **)(v4 + 16); - v7 = *(_DWORD **)(v4 + 12); - if ( *v6 == 60 ) - { - v5 = (_DWORD *)v6[4]; - v6 = (_DWORD *)v6[3]; - } - v8 = *(_DWORD *)(a1 + 292); - *(_DWORD *)(a1 + 292) = -1; - v9 = v3[1]; - v37 = v8; - if ( v9 == 108 ) - { - v29 = *(_DWORD *)(a1 + 256); - v30 = "(..."; - for ( i = 40; ; i = *v30 ) - { - if ( v29 == 255 ) - { - v33 = *(_DWORD *)(a1 + 268); - v40 = i; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v33); - ++*(_DWORD *)(a1 + 296); - i = v40; - v32 = 0; - v29 = 1; - } - else - { - v32 = v29++; - } - *(_DWORD *)(a1 + 256) = v29; - ++v30; - *(_BYTE *)(a1 + v32) = i; - *(_BYTE *)(a1 + 260) = i; - if ( v30 == "" ) - break; - } - d_print_expr_op(a1, v7); - v19 = v6; - goto LABEL_18; - } - if ( v9 > 108 ) - { - if ( v9 == 114 ) - { - v22 = *(_DWORD *)(a1 + 256); - if ( v22 == 255 ) - { - v35 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v35); - ++*(_DWORD *)(a1 + 296); - v23 = 1; - v22 = 0; - } - else - { - v23 = v22 + 1; - } - *(_DWORD *)(a1 + 256) = v23; - v24 = "...)"; - *(_BYTE *)(a1 + v22) = 40; - *(_BYTE *)(a1 + 260) = 40; - d_print_subexpr(a1, v6); - d_print_expr_op(a1, v7); - v25 = *(_DWORD *)(a1 + 256); - for ( j = 46; ; j = *v24 ) - { - if ( v25 == 255 ) - { - v28 = *(_DWORD *)(a1 + 268); - v39 = j; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v28); - ++*(_DWORD *)(a1 + 296); - j = v39; - v27 = 0; - v25 = 1; - } - else - { - v27 = v25++; - } - ++v24; - *(_DWORD *)(a1 + 256) = v25; - *(_BYTE *)(a1 + v27) = j; - *(_BYTE *)(a1 + 260) = j; - if ( v24 == "" ) - break; - } - } - goto LABEL_21; - } - if ( v9 == 76 || v9 == 82 ) - { - v10 = *(_DWORD *)(a1 + 256); - if ( v10 == 255 ) - { - v36 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v36); - ++*(_DWORD *)(a1 + 296); - v11 = 1; - v10 = 0; - } - else - { - v11 = v10 + 1; - } - *(_DWORD *)(a1 + 256) = v11; - v12 = v6; - v13 = "..."; - *(_BYTE *)(a1 + v10) = 40; - *(_BYTE *)(a1 + 260) = 40; - d_print_subexpr(a1, v12); - d_print_expr_op(a1, v7); - v14 = *(_DWORD *)(a1 + 256); - for ( k = 46; ; k = *v13 ) - { - if ( v14 == 255 ) - { - v17 = *(_DWORD *)(a1 + 268); - v38 = k; - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v17); - ++*(_DWORD *)(a1 + 296); - k = v38; - v16 = 0; - v14 = 1; - } - else - { - v16 = v14++; - } - ++v13; - *(_DWORD *)(a1 + 256) = v14; - *(_BYTE *)(a1 + v16) = k; - *(_BYTE *)(a1 + 260) = k; - if ( v13 == "" ) - break; - } - d_print_expr_op(a1, v7); - v19 = v5; -LABEL_18: - d_print_subexpr(a1, v19); - v20 = *(_DWORD *)(a1 + 256); - if ( v20 == 255 ) - { - v34 = *(_DWORD *)(a1 + 268); - *(_BYTE *)(a1 + 255) = 0; - (*(void (__cdecl **)(unsigned int, int, int))(a1 + 264))(a1, 255, v34); - ++*(_DWORD *)(a1 + 296); - v21 = 1; - v20 = 0; - } - else - { - v21 = v20 + 1; - } - *(_DWORD *)(a1 + 256) = v21; - *(_BYTE *)(a1 + v20) = 41; - *(_BYTE *)(a1 + 260) = 41; - } -LABEL_21: - *(_DWORD *)(a1 + 292) = v37; - return 1; -} - -//----- (00432E00) -------------------------------------------------------- -char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus) -{ - char *v4; // edi - size_t v5; // ebp - size_t v6; // eax - char *Str; // [esp+0h] [ebp-3Ch] - char *Src[2]; // [esp+10h] [ebp-2Ch] BYREF - size_t v10; // [esp+18h] [ebp-24h] - int v11; // [esp+1Ch] [ebp-20h] - - if ( !lpmangled || lpout && !lpoutlen ) - { - if ( lpstatus ) - *lpstatus = -3; - return 0; - } - Src[0] = 0; - Src[1] = 0; - v10 = 0; - v11 = 0; - if ( !d_demangle_callback_constprop_0( - (char *)lpmangled, - (void (__cdecl *)(char *, int, int))d_growable_string_callback_adapter, - (int)Src) ) - { - free(Src[0]); - if ( !lpstatus ) - return 0; - goto LABEL_25; - } - v4 = Src[0]; - if ( v11 ) - { - v5 = 1; - if ( Src[0] ) - goto LABEL_7; - if ( !lpstatus ) - return 0; - goto LABEL_16; - } - v5 = v10; - if ( Src[0] ) - { -LABEL_7: - if ( lpout ) - { - v6 = strlen(Src[0]); - if ( v6 < *lpoutlen ) - { - memcpy(lpout, Src[0], v6 + 1); - Str = v4; - v4 = lpout; - free(Str); - goto LABEL_10; - } - free(lpout); - } - else if ( !lpoutlen ) - { -LABEL_10: - if ( lpstatus ) - *lpstatus = 0; - return v4; - } - *lpoutlen = v5; - goto LABEL_10; - } - if ( lpstatus ) - { - if ( v10 == 1 ) - { -LABEL_16: - *lpstatus = -1; - return 0; - } -LABEL_25: - *lpstatus = -2; - return 0; - } - return 0; -} - -//----- (00432F50) -------------------------------------------------------- -unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, void (__cdecl *a2)(char *, int, int), int a3) -{ - if ( a1 && a2 ) - return !d_demangle_callback_constprop_0(a1, a2, a3) ? 0xFFFFFFFE : 0; - else - return -3; -} - -//----- (00432F90) -------------------------------------------------------- -void __do_global_dtors(void) -{ - void (*v0)(void); // eax - - v0 = (void (*)(void))*data_1; - if ( *data_1 ) - { - do - { - v0(); - v0 = (void (*)(void))data_1[1]; - ++data_1; - } - while ( v0 ); - } -} -// 50B0E0: using guessed type int *data_1; - -//----- (00432FD0) -------------------------------------------------------- -int __do_global_ctors() -{ - int v0; // ebx - int v2; // eax - - v0 = __CTOR_LIST__[0]; - if ( __CTOR_LIST__[0] == -1 ) - { - v2 = 0; - do - v0 = v2++; - while ( __CTOR_LIST__[v2] ); - } - for ( ; v0; --v0 ) - ((void (*)(void))__CTOR_LIST__[v0])(); - return atexit(__do_global_dtors); -} -// 505A90: using guessed type int __CTOR_LIST__[]; - -//----- (00433030) -------------------------------------------------------- -int __main() -{ - int result; // eax - - result = bss_0; - if ( !bss_0 ) - { - bss_0 = 1; - return __do_global_ctors(); - } - return result; -} -// 15222C4: using guessed type int bss_0; - -//----- (00433060) -------------------------------------------------------- -int _setargv() -{ - return 0; -} - -//----- (00433070) -------------------------------------------------------- -int __stdcall __dyn_tls_dtor(int a1, unsigned int a2, int a3) -{ - if ( a2 != 3 && a2 ) - return 1; - __mingw_TLScallback(a1, a2); - return 1; -} - -//----- (004330C0) -------------------------------------------------------- -int __stdcall __dyn_tls_init(int a1, int a2, int a3) -{ - if ( _CRT_MT != 2 ) - _CRT_MT = 2; - if ( a2 == 2 || a2 != 1 ) - return 1; - __mingw_TLScallback(a1, 1u); - return 1; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00433160) -------------------------------------------------------- -int __tlregdtor() -{ - return 0; -} - -//----- (00433170) -------------------------------------------------------- -int __cdecl _matherr(struct _exception *Except) -{ - const char *v1; // ebx - unsigned int v2; // edx - char *name; // esi - FILE *v4; // eax - double arg1; // [esp+38h] [ebp-24h] - double arg2; // [esp+40h] [ebp-1Ch] - double retval; // [esp+48h] [ebp-14h] - - v1 = "Unknown error"; - v2 = Except->type - 1; - if ( v2 <= 5 ) - v1 = CSWTCH_1[v2]; - name = Except->name; - retval = Except->retval; - arg2 = Except->arg2; - arg1 = Except->arg1; - v4 = __acrt_iob_func(2u); - fprintf(v4, "_matherr(): %s in %s(%g, %g) (retval=%g)\n", v1, name, arg1, arg2, retval); - return 0; -} -// 514AB8: using guessed type char *CSWTCH_1[6]; - -//----- (004331F0) -------------------------------------------------------- -void __cdecl fpreset() -{ - __asm { fninit } -} - -//----- (00433200) -------------------------------------------------------- -void __noreturn __report_error(char *Format, ...) -{ - FILE *Stream; // eax - FILE *v2; // eax - va_list ArgList; // [esp+24h] [ebp+8h] BYREF - - va_start(ArgList, Format); - Stream = __acrt_iob_func(2u); - fwrite("Mingw-w64 runtime failure:\n", 1u, 0x1Bu, Stream); - v2 = __acrt_iob_func(2u); - vfprintf(v2, Format, ArgList); - abort(); -} - -//----- (00433260) -------------------------------------------------------- -_DWORD *__usercall mark_section_writable@(const void *a1@) -{ - int v2; // esi - int v3; // ecx - _DWORD *result; // eax - int SectionForAddress; // edi - int v6; // ebx - _DWORD *v7; // eax - const void *lpAddress; // eax - DWORD v9; // eax - SIZE_T RegionSize; // ecx - PVOID BaseAddress; // edx - DWORD *lpflOldProtect; // ebx - DWORD LastError; // eax - struct _MEMORY_BASIC_INFORMATION Buffer; // [esp+14h] [ebp-28h] BYREF - - v2 = maxSections; - if ( maxSections <= 0 ) - { - v2 = 0; -LABEL_6: - SectionForAddress = __mingw_GetSectionForAddress((int)a1); - if ( !SectionForAddress ) - __report_error("Address %p has no image-section", a1); - v6 = 20 * v2; - v7 = (_DWORD *)(20 * v2 + the_secs); - v7[4] = SectionForAddress; - *v7 = 0; - lpAddress = (const void *)(*(_DWORD *)(SectionForAddress + 12) + _GetPEImageBase()); - *(_DWORD *)(the_secs + 20 * v2 + 12) = lpAddress; - if ( !VirtualQuery(lpAddress, &Buffer, 0x1Cu) ) - __report_error( - " VirtualQuery failed for %d bytes at address %p", - *(_DWORD *)(SectionForAddress + 8), - *(const void **)(the_secs + v6 + 12)); - result = (_DWORD *)Buffer.Protect; - if ( ((Buffer.Protect - 64) & 0xFFFFFFBF) != 0 && ((Buffer.Protect - 4) & 0xFFFFFFFB) != 0 ) - { - v9 = 4; - RegionSize = Buffer.RegionSize; - if ( Buffer.Protect != 2 ) - v9 = 64; - BaseAddress = Buffer.BaseAddress; - lpflOldProtect = (DWORD *)(the_secs + v6); - lpflOldProtect[2] = Buffer.RegionSize; - lpflOldProtect[1] = (DWORD)BaseAddress; - result = (_DWORD *)VirtualProtect(BaseAddress, RegionSize, v9, lpflOldProtect); - if ( !result ) - { - LastError = GetLastError(); - __report_error(" VirtualProtect failed with code 0x%x", LastError); - } - } - ++maxSections; - } - else - { - v3 = 0; - result = (_DWORD *)(the_secs + 12); - while ( *result > (unsigned int)a1 || (unsigned int)a1 >= *(_DWORD *)(result[1] + 8) + *result ) - { - ++v3; - result += 5; - if ( v3 == maxSections ) - goto LABEL_6; - } - } - return result; -} -// 15222F8: using guessed type int maxSections; -// 15222FC: using guessed type int the_secs; - -//----- (004333C0) -------------------------------------------------------- -void _pei386_runtime_relocator() -{ - int v0; // eax - void *v1; // esp - void *v2; // esp - int v3; // [esp+10h] [ebp-38h] BYREF - - if ( !was_init_0 ) - { - was_init_0 = 1; - v0 = 16 * ((unsigned int)(20 * __mingw_GetSectionCount() + 27) >> 4); - v1 = alloca(v0); - maxSections = 0; - v2 = alloca(v0); - the_secs = (int)&v3; - } -} -// 15222F4: using guessed type int was_init_0; -// 15222F8: using guessed type int maxSections; -// 15222FC: using guessed type int the_secs; - -//----- (00433640) -------------------------------------------------------- -int (__cdecl *__cdecl __mingw_raise_matherr(int a1, int a2, double a3, double a4, double a5))(_DWORD) -{ - int (__cdecl *result)(_DWORD); // eax - int v6[2]; // [esp+10h] [ebp-2Ch] BYREF - double v7; // [esp+18h] [ebp-24h] - double v8; // [esp+20h] [ebp-1Ch] - double v9; // [esp+28h] [ebp-14h] - - result = stUserMathErr; - if ( stUserMathErr ) - { - v7 = a3; - v8 = a4; - v6[0] = a1; - v9 = a5; - v6[1] = a2; - return (int (__cdecl *)(_DWORD))stUserMathErr(v6); - } - return result; -} -// 1522300: using guessed type int (__cdecl *stUserMathErr)(_DWORD); - -//----- (004336A0) -------------------------------------------------------- -void __cdecl __mingw_setusermatherr(_UserMathErrorFunctionPointer UserMathErrorFunction) -{ - stUserMathErr = (int (__cdecl *)(_DWORD))UserMathErrorFunction; - __setusermatherr(UserMathErrorFunction); -} -// 1522300: using guessed type int (__cdecl *stUserMathErr)(_DWORD); - -//----- (004336B0) -------------------------------------------------------- -LONG __stdcall _gnu_exception_handler(_EXCEPTION_POINTERS *a1) -{ - DWORD ExceptionCode; // eax - _crt_signal_t v2; // eax - _crt_signal_t v4; // eax - _crt_signal_t v5; // eax - - ExceptionCode = a1->ExceptionRecord->ExceptionCode; - if ( ExceptionCode == -1073741677 ) - { -LABEL_6: - v2 = signal(8, 0); - if ( v2 == (_crt_signal_t)1 ) - { - signal(8, (_crt_signal_t)1); - fpreset(); - return -1; - } -LABEL_7: - if ( v2 ) - { - v2(8); - return -1; - } - goto LABEL_8; - } - if ( ExceptionCode > 0xC0000093 ) - { - if ( ExceptionCode == -1073741676 ) - { - v2 = signal(8, 0); - if ( v2 == (_crt_signal_t)1 ) - { - signal(8, (_crt_signal_t)1); - return -1; - } - goto LABEL_7; - } - if ( ExceptionCode != -1073741674 ) - goto LABEL_8; -LABEL_18: - v5 = signal(4, 0); - if ( v5 == (_crt_signal_t)1 ) - { - signal(4, (_crt_signal_t)1); - return -1; - } - if ( v5 ) - { - v5(4); - return -1; - } - goto LABEL_8; - } - if ( ExceptionCode == -1073741795 ) - goto LABEL_18; - if ( ExceptionCode <= 0xC000001D ) - { - if ( ExceptionCode == -1073741819 ) - { - v4 = signal(11, 0); - if ( v4 == (_crt_signal_t)1 ) - { - signal(11, (_crt_signal_t)1); - return -1; - } - if ( v4 ) - { - v4(11); - return -1; - } - } - goto LABEL_8; - } - if ( ExceptionCode + 1073741683 <= 4 ) - goto LABEL_6; -LABEL_8: - if ( __mingw_oldexcpt_handler ) - return __mingw_oldexcpt_handler(a1); - else - return 0; -} -// 1522308: using guessed type int (__stdcall *__mingw_oldexcpt_handler)(_DWORD); - -//----- (00433860) -------------------------------------------------------- -void __mingwthr_run_key_dtors_part_0() -{ - DWORD *v0; // ebx - LPVOID Value; // esi - - EnterCriticalSection(&__mingwthr_cs); - v0 = (DWORD *)key_dtor_list; - if ( key_dtor_list ) - { - do - { - Value = TlsGetValue(*v0); - if ( !GetLastError() && Value ) - ((void (__cdecl *)(LPVOID))v0[1])(Value); - v0 = (DWORD *)v0[2]; - } - while ( v0 ); - } - LeaveCriticalSection(&__mingwthr_cs); -} - -//----- (004338D0) -------------------------------------------------------- -int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2) -{ - int result; // eax - _DWORD *v3; // eax - _DWORD *v4; // ebx - void *v5; // eax - - result = __mingwthr_cs_init; - if ( __mingwthr_cs_init ) - { - v3 = calloc(1u, 0xCu); - v4 = v3; - if ( v3 ) - { - *v3 = a1; - v3[1] = a2; - EnterCriticalSection(&__mingwthr_cs); - v5 = key_dtor_list; - key_dtor_list = v4; - v4[2] = v5; - LeaveCriticalSection(&__mingwthr_cs); - return 0; - } - else - { - return -1; - } - } - return result; -} -// 1522310: using guessed type int __mingwthr_cs_init; - -//----- (00433950) -------------------------------------------------------- -int __cdecl ___w64_mingwthr_remove_key_dtor(int a1) -{ - _DWORD *v2; // eax - _DWORD *v3; // ecx - int v4; // edx - - if ( !__mingwthr_cs_init ) - return 0; - EnterCriticalSection(&__mingwthr_cs); - v2 = key_dtor_list; - if ( key_dtor_list ) - { - v3 = 0; - while ( 1 ) - { - v4 = v2[2]; - if ( *v2 == a1 ) - break; - v3 = v2; - if ( !v4 ) - goto LABEL_11; - v2 = (_DWORD *)v2[2]; - } - if ( v3 ) - v3[2] = v4; - else - key_dtor_list = (void *)v2[2]; - free(v2); - } -LABEL_11: - LeaveCriticalSection(&__mingwthr_cs); - return 0; -} -// 1522310: using guessed type int __mingwthr_cs_init; - -//----- (004339E0) -------------------------------------------------------- -int __cdecl __mingw_TLScallback(int a1, unsigned int a2) -{ - void *v3; // ebx - void *Block; // eax - - if ( a2 == 2 ) - { - fpreset(); - return 1; - } - else - { - if ( a2 > 2 ) - { - if ( a2 == 3 && __mingwthr_cs_init ) - __mingwthr_run_key_dtors_part_0(); - } - else if ( a2 ) - { - if ( !__mingwthr_cs_init ) - InitializeCriticalSection(&__mingwthr_cs); - __mingwthr_cs_init = 1; - } - else - { - if ( __mingwthr_cs_init ) - __mingwthr_run_key_dtors_part_0(); - if ( __mingwthr_cs_init == 1 ) - { - v3 = key_dtor_list; - while ( v3 ) - { - Block = v3; - v3 = (void *)*((_DWORD *)v3 + 2); - free(Block); - } - key_dtor_list = 0; - __mingwthr_cs_init = 0; - DeleteCriticalSection(&__mingwthr_cs); - } - } - return 1; - } -} -// 1522310: using guessed type int __mingwthr_cs_init; - -//----- (00433AD0) -------------------------------------------------------- -BOOL __cdecl _ValidateImageBase(int a1) -{ - int v1; // eax - - if ( *(_WORD *)a1 == 23117 && (v1 = *(_DWORD *)(a1 + 60) + a1, *(_DWORD *)v1 == 17744) ) - return *(_WORD *)(v1 + 24) == 267; - else - return 0; -} - -//----- (00433B00) -------------------------------------------------------- -int __cdecl _FindPESection(int a1, unsigned int a2) -{ - int v2; // edx - int v3; // esi - int result; // eax - int v5; // ecx - unsigned int v6; // edx - - v2 = *(_DWORD *)(a1 + 60) + a1; - v3 = *(unsigned __int16 *)(v2 + 6); - result = v2 + *(unsigned __int16 *)(v2 + 20) + 24; - if ( !*(_WORD *)(v2 + 6) ) - return 0; - v5 = 0; - while ( 1 ) - { - v6 = *(_DWORD *)(result + 12); - if ( v6 <= a2 && *(_DWORD *)(result + 8) + v6 > a2 ) - break; - ++v5; - result += 40; - if ( v5 == v3 ) - return 0; - } - return result; -} - -//----- (00433B40) -------------------------------------------------------- -const char *__cdecl _FindPESectionByName(char *Str) -{ - const char *v1; // ebx - int v2; // ebp - int v3; // esi - - v1 = 0; - if ( strlen(Str) > 8 - || MEMORY[0x400000] != 23117 - || *(_DWORD *)(MEMORY[0x40003C] + 0x400000) != 17744 - || *(_WORD *)(MEMORY[0x40003C] + 4194328) != 267 ) - { - return v1; - } - v2 = *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310); - v1 = (const char *)(MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24); - if ( *(_WORD *)(MEMORY[0x40003C] + 4194310) ) - { - v3 = 0; - while ( strncmp(v1, Str, 8u) ) - { - ++v3; - v1 += 40; - if ( v2 == v3 ) - return 0; - } - return v1; - } - return 0; -} - -//----- (00433BE0) -------------------------------------------------------- -int __cdecl __mingw_GetSectionForAddress(int a1) -{ - int result; // eax - unsigned int v2; // ebx - int v3; // ecx - unsigned int v4; // edx - - result = 0; - if ( MEMORY[0x400000] == 23117 - && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 - && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) - { - result = MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24; - v2 = a1 - 0x400000; - if ( *(_WORD *)(MEMORY[0x40003C] + 4194310) ) - { - v3 = 0; - while ( 1 ) - { - v4 = *(_DWORD *)(result + 12); - if ( v2 >= v4 && v2 < *(_DWORD *)(result + 8) + v4 ) - break; - ++v3; - result += 40; - if ( v3 == *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) ) - return 0; - } - } - else - { - return 0; - } - } - return result; -} - -//----- (00433C60) -------------------------------------------------------- -int __mingw_GetSectionCount() -{ - int result; // eax - - result = 0; - if ( MEMORY[0x400000] == 23117 - && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 - && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) - { - return *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310); - } - return result; -} - -//----- (00433CA0) -------------------------------------------------------- -int __cdecl _FindPESectionExec(int a1) -{ - int result; // eax - int v3; // edx - - result = 0; - if ( MEMORY[0x400000] == 23117 - && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 - && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) - { - result = MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24; - if ( *(_WORD *)(MEMORY[0x40003C] + 4194310) ) - { - v3 = 0; - do - { - if ( (*(_BYTE *)(result + 39) & 0x20) != 0 ) - { - if ( !a1 ) - return result; - --a1; - } - ++v3; - result += 40; - } - while ( *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) != v3 ); - } - return 0; - } - return result; -} - -//----- (00433D20) -------------------------------------------------------- -int _GetPEImageBase() -{ - int result; // eax - - result = 0; - if ( MEMORY[0x400000] == 23117 - && *(_DWORD *)(MEMORY[0x40003C] + 0x400000) == 17744 - && *(_WORD *)(MEMORY[0x40003C] + 4194328) == 267 ) - { - return 0x400000; - } - return result; -} - -//----- (00433D60) -------------------------------------------------------- -BOOL __cdecl _IsNonwritableInCurrentImage(int a1) -{ - _DWORD *v2; // eax - unsigned int v3; // ebx - int v4; // ecx - unsigned int v5; // edx - - if ( MEMORY[0x400000] != 23117 - || *(_DWORD *)(MEMORY[0x40003C] + 0x400000) != 17744 - || *(_WORD *)(MEMORY[0x40003C] + 4194328) != 267 ) - { - return 0; - } - v2 = (_DWORD *)(MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24); - v3 = a1 - 0x400000; - if ( !*(_WORD *)(MEMORY[0x40003C] + 4194310) ) - return 0; - v4 = 0; - while ( 1 ) - { - v5 = v2[3]; - if ( v3 >= v5 && v3 < v2[2] + v5 ) - break; - ++v4; - v2 += 10; - if ( *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) == v4 ) - return 0; - } - return v2[9] >= 0; -} - -//----- (00433DF0) -------------------------------------------------------- -int __cdecl __mingw_enum_import_library_names(int a1) -{ - unsigned int v3; // eax - int v4; // edx - int v5; // esi - unsigned int v6; // ecx - unsigned int i; // eax - - if ( MEMORY[0x400000] != 23117 ) - return 0; - if ( *(_DWORD *)(MEMORY[0x40003C] + 0x400000) != 17744 ) - return 0; - if ( *(_WORD *)(MEMORY[0x40003C] + 4194328) != 267 ) - return 0; - v3 = *(_DWORD *)(MEMORY[0x40003C] + 4194432); - if ( !v3 ) - return 0; - v4 = MEMORY[0x40003C] + 0x400000 + *(unsigned __int16 *)(MEMORY[0x40003C] + 4194324) + 24; - if ( !*(_WORD *)(MEMORY[0x40003C] + 4194310) ) - return 0; - v5 = 0; - while ( 1 ) - { - v6 = *(_DWORD *)(v4 + 12); - if ( v3 >= v6 && v3 < *(_DWORD *)(v4 + 8) + v6 ) - break; - ++v5; - v4 += 40; - if ( v5 == *(unsigned __int16 *)(MEMORY[0x40003C] + 4194310) ) - return 0; - } - for ( i = v3 + 0x400000; *(_DWORD *)(i + 4) || *(_DWORD *)(i + 12); i += 20 ) - { - if ( a1 <= 0 ) - return *(_DWORD *)(i + 12) + 0x400000; - --a1; - } - return 0; -} - -//----- (00434140) -------------------------------------------------------- -int __cdecl __gthr_win32_once(int a1, void (*a2)(void)) -{ - if ( !a1 || !a2 ) - return 22; - if ( *(_DWORD *)a1 ) - return 0; - if ( _InterlockedAdd((volatile signed __int32 *)(a1 + 4), 1u) ) - { - while ( !*(_DWORD *)a1 ) - Sleep(0); - return 0; - } - a2(); - *(_DWORD *)a1 = 1; - return 0; -} - -//----- (004341C0) -------------------------------------------------------- -int __cdecl __gthr_win32_key_create(int *a1, int a2) -{ - int v2; // eax - - v2 = TlsAlloc(); - if ( v2 == -1 ) - return GetLastError(); - *a1 = v2; - return __mingwthr_key_dtor(v2, a2); -} - -//----- (00434200) -------------------------------------------------------- -DWORD __cdecl __gthr_win32_key_delete(DWORD dwTlsIndex) -{ - if ( TlsFree(dwTlsIndex) ) - return 0; - else - return GetLastError(); -} - -//----- (00434230) -------------------------------------------------------- -LPVOID __cdecl __gthr_win32_getspecific(DWORD dwTlsIndex) -{ - DWORD LastError; // esi - LPVOID Value; // ebx - - LastError = GetLastError(); - Value = TlsGetValue(dwTlsIndex); - SetLastError(LastError); - return Value; -} - -//----- (00434270) -------------------------------------------------------- -DWORD __cdecl __gthr_win32_setspecific(DWORD dwTlsIndex, LPVOID lpTlsValue) -{ - if ( TlsSetValue(dwTlsIndex, lpTlsValue) ) - return 0; - else - return GetLastError(); -} - -//----- (004342B0) -------------------------------------------------------- -HANDLE __cdecl __gthr_win32_mutex_init_function(_DWORD *a1) -{ - HANDLE result; // eax - - *a1 = -1; - result = CreateSemaphoreW(0, 0, 0xFFFF, 0); - a1[1] = result; - return result; -} - -//----- (004342F0) -------------------------------------------------------- -int __cdecl __gthr_win32_mutex_destroy(int a1) -{ - return _IAT_start__(*(_DWORD *)(a1 + 4)); -} -// 15231F8: using guessed type int __stdcall _IAT_start__(_DWORD); - -//----- (00434310) -------------------------------------------------------- -int __cdecl __gthr_win32_mutex_lock(int a1) -{ - if ( !_InterlockedAdd((volatile signed __int32 *)a1, 1u) || !WaitForSingleObject(*(HANDLE *)(a1 + 4), 0xFFFFFFFF) ) - return 0; - _InterlockedSub((volatile signed __int32 *)a1, 1u); - return 1; -} - -//----- (00434360) -------------------------------------------------------- -BOOL __cdecl __gthr_win32_mutex_trylock(volatile signed __int32 *a1) -{ - return _InterlockedCompareExchange(a1, 0, -1) >= 0; -} - -//----- (00434380) -------------------------------------------------------- -BOOL __cdecl __gthr_win32_mutex_unlock(int a1) -{ - return _InterlockedDecrement((volatile signed __int32 *)a1) >= 0 && !ReleaseSemaphore(*(HANDLE *)(a1 + 4), 1, 0); -} - -//----- (004343D0) -------------------------------------------------------- -HANDLE __cdecl __gthr_win32_recursive_mutex_init_function(_DWORD *a1) -{ - HANDLE result; // eax - - *a1 = -1; - a1[1] = 0; - a1[2] = 0; - result = CreateSemaphoreW(0, 0, 0xFFFF, 0); - a1[3] = result; - return result; -} - -//----- (00434420) -------------------------------------------------------- -DWORD __cdecl __gthr_win32_recursive_mutex_lock(int a1) -{ - DWORD CurrentThreadId; // eax - DWORD v2; // esi - DWORD result; // eax - - CurrentThreadId = GetCurrentThreadId(); - v2 = CurrentThreadId; - if ( _InterlockedAdd((volatile signed __int32 *)a1, 1u) ) - { - if ( *(_DWORD *)(a1 + 8) == CurrentThreadId ) - { - _InterlockedSub((volatile signed __int32 *)a1, 1u); - result = 0; - ++*(_DWORD *)(a1 + 4); - } - else - { - result = WaitForSingleObject(*(HANDLE *)(a1 + 12), 0xFFFFFFFF); - if ( result ) - { - _InterlockedSub((volatile signed __int32 *)a1, 1u); - return 1; - } - else - { - *(_DWORD *)(a1 + 4) = 1; - *(_DWORD *)(a1 + 8) = v2; - } - } - } - else - { - *(_DWORD *)(a1 + 4) = 1; - *(_DWORD *)(a1 + 8) = CurrentThreadId; - return 0; - } - return result; -} - -//----- (004344A0) -------------------------------------------------------- -int __cdecl __gthr_win32_recursive_mutex_trylock(int a1) -{ - DWORD CurrentThreadId; // edx - int result; // eax - - CurrentThreadId = GetCurrentThreadId(); - if ( _InterlockedCompareExchange((volatile signed __int32 *)a1, 0, -1) < 0 ) - { - *(_DWORD *)(a1 + 4) = 1; - result = 0; - *(_DWORD *)(a1 + 8) = CurrentThreadId; - } - else - { - result = 1; - if ( *(_DWORD *)(a1 + 8) == CurrentThreadId ) - { - ++*(_DWORD *)(a1 + 4); - return 0; - } - } - return result; -} - -//----- (004344F0) -------------------------------------------------------- -BOOL __cdecl __gthr_win32_recursive_mutex_unlock(int a1) -{ - bool v1; // zf - - v1 = (*(_DWORD *)(a1 + 4))-- == 1; - if ( v1 && (*(_DWORD *)(a1 + 8) = 0, _InterlockedDecrement((volatile signed __int32 *)a1) >= 0) ) - return !ReleaseSemaphore(*(HANDLE *)(a1 + 12), 1, 0); - else - return 0; -} - -//----- (00434550) -------------------------------------------------------- -int __cdecl __gthr_win32_recursive_mutex_destroy(int a1) -{ - _IAT_start__(*(_DWORD *)(a1 + 12)); - return 0; -} -// 15231F8: using guessed type int __stdcall _IAT_start__(_DWORD); - -//----- (00434570) -------------------------------------------------------- -int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, _DWORD *a2@, int *a3@) -{ - int v3; // edi - _DWORD *v6; // eax - int v7; // ecx - int v8; // ebp - int result; // eax - int (__cdecl *v10)(int, int, _DWORD, _DWORD, _DWORD *, _DWORD *); // [esp+28h] [ebp-24h] - - v3 = 1; - v6 = (_DWORD *)*a2; - if ( !*a2 ) - return 2; - while ( 1 ) - { - v10 = (int (__cdecl *)(int, int, _DWORD, _DWORD, _DWORD *, _DWORD *))v6[6]; - if ( v6 == (_DWORD *)a1[4] ) - { - if ( !v10 ) - goto LABEL_14; - v7 = 6; - v8 = 4; - } - else - { - v7 = 2; - v8 = 0; - if ( !v10 ) - goto LABEL_8; - } - result = v10(1, v7, *a1, a1[1], a1, a2); - if ( result == 7 ) - break; - if ( result != 8 ) - return 2; - if ( v8 ) -LABEL_14: - abort(); - v6 = (_DWORD *)*a2; -LABEL_8: - v6 = (_DWORD *)*v6; - ++v3; - *a2 = v6; - if ( !v6 ) - return 2; - } - *a3 = v3; - return result; -} - -//----- (00434630) -------------------------------------------------------- -BOOL fc_key_init() -{ - int v0; // eax - DWORD LastError; // eax - BOOL result; // eax - - v0 = TlsAlloc(); - if ( v0 == -1 ) - { - LastError = GetLastError(); - } - else - { - fc_key = v0; - LastError = __mingwthr_key_dtor(v0, 0); - } - result = LastError == 0; - use_fc_key = result; - return result; -} -// 50B0FC: using guessed type int use_fc_key; - -//----- (00434670) -------------------------------------------------------- -void fc_key_init_once() -{ - int v0; // eax - DWORD LastError; // eax - - if ( !_CRT_MT ) - goto LABEL_4; - if ( once_0 ) - { - if ( use_fc_key < 0 ) -LABEL_4: - use_fc_key = 0; - } - else if ( _InterlockedAdd(&dword_50B0F8, 1u) ) - { - while ( !once_0 ) - Sleep(0); - if ( use_fc_key < 0 ) - use_fc_key = 0; - } - else - { - v0 = TlsAlloc(); - if ( v0 == -1 ) - { - LastError = GetLastError(); - } - else - { - fc_key = v0; - LastError = __mingwthr_key_dtor(v0, 0); - } - once_0 = 1; - use_fc_key = LastError == 0; - } -} -// 50B0F0: using guessed type int _CRT_MT; -// 50B0F4: using guessed type int once_0; -// 50B0F8: using guessed type int dword_50B0F8; -// 50B0FC: using guessed type int use_fc_key; - -//----- (00434750) -------------------------------------------------------- -LPVOID _Unwind_SjLj_GetContext() -{ - int v0; // ebx - DWORD dwTlsIndex; // ebx - DWORD LastError; // esi - LPVOID Value; // ebx - - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - v0 = fc_static; - if ( !use_fc_key ) - return (LPVOID)v0; - } - else - { - v0 = fc_static; - if ( !use_fc_key ) - return (LPVOID)v0; - } - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = TlsGetValue(dwTlsIndex); - SetLastError(LastError); - return Value; -} -// 50B0FC: using guessed type int use_fc_key; -// 1522344: using guessed type int fc_static; - -//----- (004347C0) -------------------------------------------------------- -int __usercall uw_install_context_constprop_0@(int a1@) -{ - void *v2; // esi - int v3; // eax - - v2 = *(void **)a1; - v3 = use_fc_key; - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - v3 = use_fc_key; - } - if ( v3 ) - { - if ( !TlsSetValue(fc_key, v2) ) - GetLastError(); - } - else - { - fc_static = (int)v2; - } - return (*(int (**)(void))(*(_DWORD *)a1 + 36))(); -} -// 50B0FC: using guessed type int use_fc_key; -// 1522344: using guessed type int fc_static; - -//----- (00434820) -------------------------------------------------------- -int __usercall _Unwind_ForcedUnwind_Phase2@(_DWORD *a1@, void ***a2@, int *a3@) -{ - int v4; // esi - void **i; // eax - int (__cdecl *v7)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // ebp - int result; // eax - void *lpTlsValue; // ecx - int v10; // eax - int (__cdecl *v11)(int, int, _DWORD, _DWORD, _DWORD *, void ***, int); // [esp+20h] [ebp-2Ch] - int v12; // [esp+24h] [ebp-28h] - void *v13; // [esp+28h] [ebp-24h] - - v4 = 1; - v11 = (int (__cdecl *)(int, int, _DWORD, _DWORD, _DWORD *, void ***, int))a1[3]; - v12 = a1[4]; - for ( i = *a2; i; *a2 = i ) - { - while ( 1 ) - { - v7 = (int (__cdecl *)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))i[6]; - if ( v11(1, 10, *a1, a1[1], a1, a2, v12) ) - return 2; - if ( v7 ) - { - result = v7(1, 10, *a1, a1[1], a1, a2); - if ( result == 7 ) - goto LABEL_17; - if ( result != 8 ) - return 2; - } - lpTlsValue = **a2; - v10 = use_fc_key; - if ( use_fc_key < 0 ) - { - v13 = **a2; - fc_key_init_once(); - v10 = use_fc_key; - lpTlsValue = v13; - } - if ( v10 ) - break; - fc_static = (int)lpTlsValue; -LABEL_4: - ++v4; - i = (void **)**a2; - *a2 = i; - if ( !i ) - goto LABEL_14; - } - if ( TlsSetValue(fc_key, lpTlsValue) ) - goto LABEL_4; - GetLastError(); - ++v4; - i = (void **)**a2; - } -LABEL_14: - if ( v11(1, 26, *a1, a1[1], a1, a2, v12) ) - return 2; - result = 5; -LABEL_17: - *a3 = v4; - return result; -} -// 50B0FC: using guessed type int use_fc_key; -// 1522344: using guessed type int fc_static; - -//----- (004349B0) -------------------------------------------------------- -void __cdecl _Unwind_SjLj_Register(struct SjLj_Function_Context *lpfctx) -{ - int v1; // eax - struct SjLj_Function_Context *v2; // eax - DWORD dwTlsIndex; // esi - DWORD LastError; // edi - struct SjLj_Function_Context *Value; // esi - DWORD v6; // eax - - v1 = use_fc_key; - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - v1 = use_fc_key; - } - if ( v1 ) - { - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = (struct SjLj_Function_Context *)TlsGetValue(dwTlsIndex); - SetLastError(LastError); - v6 = fc_key; - lpfctx->prev = Value; - if ( !TlsSetValue(v6, lpfctx) ) - GetLastError(); - } - else - { - v2 = (struct SjLj_Function_Context *)fc_static; - fc_static = (int)lpfctx; - lpfctx->prev = v2; - } -} -// 50B0FC: using guessed type int use_fc_key; -// 1522344: using guessed type int fc_static; - -//----- (00434A40) -------------------------------------------------------- -void __cdecl _Unwind_SjLj_Unregister(struct SjLj_Function_Context *lpfctx) -{ - struct SjLj_Function_Context *lpTlsValue; // ebx - int v2; // eax - - lpTlsValue = lpfctx->prev; - v2 = use_fc_key; - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - v2 = use_fc_key; - } - if ( v2 ) - { - if ( !TlsSetValue(fc_key, lpTlsValue) ) - GetLastError(); - } - else - { - fc_static = (int)lpTlsValue; - } -} -// 50B0FC: using guessed type int use_fc_key; -// 1522344: using guessed type int fc_static; - -//----- (00434AA0) -------------------------------------------------------- -_Unwind_Word __cdecl _Unwind_GetGR(struct _Unwind_Context *lpuctx, int r) -{ - return *(_DWORD *)(*(_DWORD *)lpuctx + 4 * r + 8); -} - -//----- (00434AB0) -------------------------------------------------------- -int __cdecl _Unwind_GetCFA(int a1) -{ - int result; // eax - - result = 0; - if ( *(_DWORD *)a1 ) - return *(_DWORD *)(*(_DWORD *)a1 + 40); - return result; -} - -//----- (00434AC0) -------------------------------------------------------- -void __cdecl _Unwind_SetGR(struct _Unwind_Context *lpuctx, int r, _Unwind_Word v) -{ - *(_DWORD *)(*(_DWORD *)lpuctx + 4 * r + 8) = v; -} - -//----- (00434AE0) -------------------------------------------------------- -int __cdecl _Unwind_GetIP(int a1) -{ - return *(_DWORD *)(*(_DWORD *)a1 + 4) + 1; -} - -//----- (00434AF0) -------------------------------------------------------- -int __cdecl _Unwind_GetIPInfo(int a1, _DWORD *a2) -{ - int result; // eax - - *a2 = 0; - result = 0; - if ( *(_DWORD *)a1 ) - return *(_DWORD *)(*(_DWORD *)a1 + 4) + 1; - return result; -} - -//----- (00434B10) -------------------------------------------------------- -int __cdecl _Unwind_SetIP(int a1, int a2) -{ - int result; // eax - - result = a2 - 1; - *(_DWORD *)(*(_DWORD *)a1 + 4) = a2 - 1; - return result; -} - -//----- (00434B30) -------------------------------------------------------- -int __cdecl _Unwind_GetLanguageSpecificData(int a1) -{ - return *(_DWORD *)(*(_DWORD *)a1 + 28); -} - -//----- (00434B40) -------------------------------------------------------- -int _Unwind_GetRegionStart() -{ - return 0; -} - -//----- (00434B50) -------------------------------------------------------- -int _Unwind_FindEnclosingFunction() -{ - return 0; -} - -//----- (00434B60) -------------------------------------------------------- -int _Unwind_GetDataRelBase() -{ - return 0; -} - -//----- (00434B70) -------------------------------------------------------- -int _Unwind_GetTextRelBase() -{ - return 0; -} - -//----- (00434B80) -------------------------------------------------------- -_Unwind_Reason_Code __cdecl _Unwind_SjLj_RaiseException(struct _Unwind_Exception *lpuexcpt) -{ - _DWORD *Value; // esi - _DWORD *v2; // eax - int (__cdecl *v3)(int, int, _DWORD, _DWORD, struct _Unwind_Exception *, _DWORD **); // ecx - int v4; // eax - _Unwind_Reason_Code result; // eax - DWORD dwTlsIndex; // esi - DWORD LastError; // edi - _DWORD *v8; // eax - _DWORD *v9; // [esp+28h] [ebp-14h] BYREF - int v10[4]; // [esp+2Ch] [ebp-10h] BYREF - - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - Value = (_DWORD *)fc_static; - if ( !use_fc_key ) - goto LABEL_3; -LABEL_12: - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = TlsGetValue(dwTlsIndex); - SetLastError(LastError); - goto LABEL_3; - } - Value = (_DWORD *)fc_static; - if ( use_fc_key ) - goto LABEL_12; -LABEL_3: - v9 = Value; - if ( !Value ) - return 5; - v2 = Value; - while ( 1 ) - { - v3 = (int (__cdecl *)(int, int, _DWORD, _DWORD, struct _Unwind_Exception *, _DWORD **))v2[6]; - if ( !v3 ) - goto LABEL_8; - v4 = v3(1, 1, *(_DWORD *)lpuexcpt, *((_DWORD *)lpuexcpt + 1), lpuexcpt, &v9); - if ( v4 == 6 ) - break; - if ( v4 != 8 ) - return 3; -LABEL_8: - v2 = (_DWORD *)*v9; - v9 = v2; - if ( !v2 ) - return 5; - } - v8 = v9; - *((_DWORD *)lpuexcpt + 3) = 0; - v9 = Value; - *((_DWORD *)lpuexcpt + 4) = v8; - result = _Unwind_RaiseException_Phase2(lpuexcpt, &v9, v10); - if ( result != _URC_INSTALL_CONTEXT ) - return result; - uw_install_context_constprop_0((int)&v9); - return 3; -} -// 50B0FC: using guessed type int use_fc_key; -// 1522344: using guessed type int fc_static; -// 434B80: using guessed type int var_10[4]; - -//----- (00434C90) -------------------------------------------------------- -_Unwind_Reason_Code __cdecl _Unwind_SjLj_ForcedUnwind( - struct _Unwind_Exception *lpuexcpt, - _Unwind_Stop_Fn pfnstop, - void *pdata) -{ - void **Value; // esi - _Unwind_Reason_Code result; // eax - DWORD dwTlsIndex; // esi - DWORD LastError; // edi - void **v7; // [esp+18h] [ebp-14h] BYREF - int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - Value = (void **)fc_static; - if ( !use_fc_key ) - goto LABEL_3; - } - else - { - Value = (void **)fc_static; - if ( !use_fc_key ) - goto LABEL_3; - } - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = (void **)TlsGetValue(dwTlsIndex); - SetLastError(LastError); -LABEL_3: - v7 = Value; - *((_DWORD *)lpuexcpt + 3) = pfnstop; - *((_DWORD *)lpuexcpt + 4) = pdata; - result = _Unwind_ForcedUnwind_Phase2(lpuexcpt, &v7, v8); - if ( result == _URC_INSTALL_CONTEXT ) - { - uw_install_context_constprop_0((int)&v7); - _Unwind_SjLj_Resume(lpuexcpt); - } - return result; -} -// 50B0FC: using guessed type int use_fc_key; -// 1522344: using guessed type int fc_static; -// 434C90: using guessed type int var_10[4]; - -//----- (00434D30) -------------------------------------------------------- -void __cdecl __noreturn _Unwind_SjLj_Resume(struct _Unwind_Exception *lpuexcpt) -{ - LPVOID Context; // eax - int *v2; // ecx - void ***v3; // edx - struct _Unwind_Exception *v4; // eax - int i; // eax - LPVOID v6; // [esp+8h] [ebp-14h] BYREF - int v7[4]; // [esp+Ch] [ebp-10h] BYREF - - Context = _Unwind_SjLj_GetContext(); - v2 = v7; - v3 = (void ***)&v6; - v6 = Context; - v4 = lpuexcpt; - if ( *((_DWORD *)lpuexcpt + 3) ) - goto LABEL_5; - for ( i = _Unwind_RaiseException_Phase2(lpuexcpt, &v6, v7); ; i = _Unwind_ForcedUnwind_Phase2(v4, v3, v2) ) - { - if ( i != 7 ) - abort(); - v4 = (struct _Unwind_Exception *)uw_install_context_constprop_0((int)&v6); -LABEL_5: - ; - } -} -// 434D66: variable 'v3' is possibly undefined -// 434D66: variable 'v2' is possibly undefined -// 434D30: using guessed type int var_10[4]; - -//----- (00434D80) -------------------------------------------------------- -_Unwind_Reason_Code __cdecl __noreturn _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *lpuexcpt) -{ - void **Context; // [esp+8h] [ebp-14h] BYREF - int v3[4]; // [esp+Ch] [ebp-10h] BYREF - - if ( *((_DWORD *)lpuexcpt + 3) ) - { - Context = (void **)_Unwind_SjLj_GetContext(); - if ( _Unwind_ForcedUnwind_Phase2(lpuexcpt, &Context, v3) == 7 ) - uw_install_context_constprop_0((int)&Context); - abort(); - } - return _Unwind_SjLj_RaiseException(lpuexcpt); -} -// 434D80: using guessed type int var_10[4]; - -//----- (00434DD0) -------------------------------------------------------- -void __cdecl _Unwind_DeleteException(struct _Unwind_Exception *lpuexcpt) -{ - void (__cdecl *v1)(int, struct _Unwind_Exception *); // eax - - v1 = (void (__cdecl *)(int, struct _Unwind_Exception *))*((_DWORD *)lpuexcpt + 2); - if ( v1 ) - v1(1, lpuexcpt); -} - -//----- (00434DF0) -------------------------------------------------------- -_Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn pfntrace, void *lpdata) -{ - LPVOID Value; // ebx - DWORD dwTlsIndex; // ebx - DWORD LastError; // ebp - int v6[8]; // [esp+1Ch] [ebp-20h] BYREF - - if ( use_fc_key < 0 ) - { - fc_key_init_once(); - Value = (LPVOID)fc_static; - if ( !use_fc_key ) - goto LABEL_3; -LABEL_11: - dwTlsIndex = fc_key; - LastError = GetLastError(); - Value = TlsGetValue(dwTlsIndex); - SetLastError(LastError); - goto LABEL_3; - } - Value = (LPVOID)fc_static; - if ( use_fc_key ) - goto LABEL_11; -LABEL_3: - v6[0] = (int)Value; - while ( Value ) - { - if ( pfntrace((struct _Unwind_Context *)v6, lpdata) ) - return 3; - Value = *(LPVOID *)v6[0]; - v6[0] = *(_DWORD *)v6[0]; - } - if ( pfntrace((struct _Unwind_Context *)v6, lpdata) == _URC_NO_REASON ) - return 5; - return 3; -} -// 50B0FC: using guessed type int use_fc_key; -// 1522344: using guessed type int fc_static; - -//----- (00434EB0) -------------------------------------------------------- -void __cdecl emutls_destroy(int *a1) -{ - int v1; // edi - int v2; // ebx - int v3; // eax - - v1 = *a1; - if ( *a1 ) - { - v2 = 0; - do - { - v3 = a1[v2 + 1]; - if ( v3 ) - free(*(void **)(v3 - 4)); - ++v2; - } - while ( v1 != v2 ); - } - free(a1); -} - -//----- (00434F00) -------------------------------------------------------- -_DWORD *__usercall emutls_alloc@(size_t *a1@) -{ - size_t v2; // ebp - int v3; // edi - _DWORD *v4; // eax - _DWORD *v5; // ebx - const void *Src; // eax - void *v8; // eax - size_t v9; // [esp+8h] [ebp-24h] - - v2 = a1[1]; - v3 = *a1; - if ( v2 > 4 ) - { - v8 = malloc(v2 + v3 + 3); - if ( v8 ) - { - v5 = (_DWORD *)(-v2 & ((unsigned int)v8 + v2 + 3)); - *(v5 - 1) = v8; - Src = (const void *)a1[3]; - v9 = v3; - if ( Src ) - goto LABEL_4; - goto LABEL_7; - } -LABEL_8: - abort(); - } - v4 = malloc(v3 + 4); - if ( !v4 ) - goto LABEL_8; - *v4 = v4; - v5 = v4 + 1; - Src = (const void *)a1[3]; - v9 = v3; - if ( Src ) - { -LABEL_4: - memcpy(v5, Src, v9); - return v5; - } -LABEL_7: - memset(v5, 0, v9); - return v5; -} - -//----- (00434FA0) -------------------------------------------------------- -DWORD emutls_init() -{ - int v0; // eax - DWORD result; // eax - - emutls_mutex = -1; - hHandle = CreateSemaphoreW(0, 0, 0xFFFF, 0); - v0 = TlsAlloc(); - if ( v0 == -1 ) - { - result = GetLastError(); - } - else - { - emutls_key = v0; - result = __mingwthr_key_dtor(v0, (int)emutls_destroy); - } - if ( result ) - abort(); - return result; -} -// 1522350: using guessed type int emutls_mutex; - -//----- (00435020) -------------------------------------------------------- -_DWORD *__cdecl __emutls_get_address(size_t *a1) -{ - _DWORD *result; // eax - unsigned int v2; // edi - DWORD dwTlsIndex; // ebx - DWORD LastError; // esi - unsigned int *Value; // ebx - unsigned int v6; // edx - unsigned int v7; // edi - unsigned int *v8; // eax - int v9; // ecx - unsigned int *v10; // eax - int v11; // [esp+18h] [ebp-24h] - unsigned int v12; // [esp+1Ch] [ebp-20h] - - if ( !_CRT_MT ) - { - result = (_DWORD *)a1[2]; - if ( !result ) - { - result = emutls_alloc(a1); - a1[2] = (size_t)result; - } - return result; - } - v2 = a1[2]; - if ( !v2 ) - { - if ( !_CRT_MT ) - goto LABEL_27; - if ( once_0_0 ) - goto LABEL_38; - if ( _InterlockedAdd(&dword_50B104, 1u) ) - { - while ( !once_0_0 ) - Sleep(0); - } - else - { - emutls_init(); - once_0_0 = 1; - } - if ( _CRT_MT ) - { -LABEL_38: - if ( _InterlockedAdd(&emutls_mutex, 1u) && WaitForSingleObject(hHandle, 0xFFFFFFFF) ) - _InterlockedSub(&emutls_mutex, 1u); - v2 = a1[2]; - if ( v2 ) - goto LABEL_14; - } - else - { -LABEL_27: - v2 = a1[2]; - if ( v2 ) - goto LABEL_5; - } - v2 = emutls_size + 1; - emutls_size = v2; - a1[2] = v2; -LABEL_14: - if ( _CRT_MT && _InterlockedDecrement(&emutls_mutex) >= 0 ) - ReleaseSemaphore(hHandle, 1, 0); - } -LABEL_5: - dwTlsIndex = emutls_key; - LastError = GetLastError(); - Value = (unsigned int *)TlsGetValue(dwTlsIndex); - SetLastError(LastError); - if ( !Value ) - { - v8 = (unsigned int *)calloc(v2 + 33, 4u); - Value = v8; - if ( v8 ) - { - *v8 = v2 + 32; - goto LABEL_19; - } -LABEL_35: - abort(); - } - v6 = *Value; - if ( *Value < v2 ) - { - v9 = 2 * v6; - v12 = *Value; - if ( v2 > 2 * v6 ) - v9 = v2 + 32; - v11 = v9; - v10 = (unsigned int *)realloc(Value, 4 * v9 + 4); - Value = v10; - if ( v10 ) - { - *v10 = v11; - memset(&v10[v12 + 1], 0, 4 * (v11 - v12)); -LABEL_19: - if ( !TlsSetValue(emutls_key, Value) ) - GetLastError(); - goto LABEL_7; - } - goto LABEL_35; - } -LABEL_7: - v7 = v2 - 1; - result = (_DWORD *)Value[v7 + 1]; - if ( !result ) - { - result = emutls_alloc(a1); - Value[v7 + 1] = (unsigned int)result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50B100: using guessed type int once_0_0; -// 50B104: using guessed type int dword_50B104; -// 1522348: using guessed type int emutls_size; -// 1522350: using guessed type int emutls_mutex; - -//----- (004352C0) -------------------------------------------------------- -unsigned int *__cdecl __emutls_register_common(unsigned int *a1, unsigned int a2, unsigned int a3, unsigned int a4) -{ - unsigned int *result; // eax - - result = a1; - if ( *a1 < a2 ) - { - *a1 = a2; - a1[3] = 0; - } - if ( a1[1] < a3 ) - a1[1] = a3; - if ( a4 ) - { - if ( *a1 == a2 ) - a1[3] = a4; - } - return result; -} - -//----- (00435300) -------------------------------------------------------- -long double __cdecl __mingw_strtod(unsigned __int8 *a1, unsigned __int8 **a2) -{ - char v2; // al - double v4; // [esp+28h] [ebp-24h] - int v5; // [esp+34h] [ebp-18h] BYREF - double v6; // [esp+38h] [ebp-14h] BYREF - - v2 = __strtodg(a1, a2, fpi_0, &v5, &v6); - switch ( v2 & 7 ) - { - case 0: - case 6: - v4 = 0.0; - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 1: - LODWORD(v4) = LODWORD(v6); - HIDWORD(v4) = HIDWORD(v6) & 0xFFEFFFFF | ((v5 + 1075) << 20); - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 2: - v4 = v6; - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 3: - v4 = INFINITY; - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 4: - v4 = NAN; - if ( (v2 & 8) != 0 ) - goto LABEL_4; - break; - case 5: - *(_QWORD *)&v4 = *(_QWORD *)&v6 | 0x7FF0000000000000LL; - goto LABEL_3; - default: -LABEL_3: - if ( (v2 & 8) != 0 ) -LABEL_4: - HIDWORD(v4) |= 0x80000000; - break; - } - return v4; -} -// 43535A: variable 'v4' is possibly undefined -// 50B108: using guessed type int fpi_0[6]; - -//----- (00435420) -------------------------------------------------------- -long double __cdecl __mingw_strtof(unsigned __int8 *a1, unsigned __int8 **a2) -{ - char v2; // al - float v3; // edx - float v5; // [esp+38h] [ebp-14h] BYREF - int v6[4]; // [esp+3Ch] [ebp-10h] BYREF - - v2 = __strtodg(a1, a2, fpi0_0, v6, &v5); - switch ( v2 & 7 ) - { - case 1: - case 5: - LODWORD(v3) = (unsigned int)&unk_7FFFFF & LODWORD(v5) | ((v6[0] + 150) << 23); - break; - case 2: - v3 = v5; - break; - case 3: - v3 = INFINITY; - break; - case 4: - v3 = NAN; - break; - default: - v3 = 0.0; - break; - } - if ( (v2 & 8) != 0 ) - LODWORD(v3) |= 0x80000000; - return v3; -} -// 50B120: using guessed type int fpi0_0[6]; -// 435420: using guessed type int var_10[4]; - -//----- (004354C0) -------------------------------------------------------- -wint_t __cdecl btowc(int Ch) -{ - wint_t result; // ax - unsigned int CodePage; // eax - CHAR MultiByteStr; // [esp+2Dh] [ebp-Fh] BYREF - __int16 WideCharStr[7]; // [esp+2Eh] [ebp-Eh] BYREF - - result = -1; - if ( Ch != -1 ) - { - MultiByteStr = Ch; - WideCharStr[0] = -1; - CodePage = ___lc_codepage_func(); - MultiByteToWideChar(CodePage, 8u, &MultiByteStr, 1, (LPWSTR)WideCharStr, 1); - return WideCharStr[0]; - } - return result; -} -// 4354C0: using guessed type WCHAR WideCharStr[7]; - -//----- (00435530) -------------------------------------------------------- -int __cdecl __asctoe64(char *Str, long double *a2) -{ - char *v2; // edi - size_t v3; // eax - char *v4; // esi - int v5; // eax - void *v6; // esp - void *v7; // esp - int i; // esi - int v9; // ebx - int v10; // eax - int *v11; // edx - char *v12; // esi - char *v13; // eax - char v14; // al - char *v15; // esi - char *v16; // ebx - char *v18; // edx - char v19; // al - int v20; // edx - __int16 *v21; // ebx - int v22; // ecx - __int16 v23; // ax - int v24; // ecx - __int16 *v25; // ebx - __int16 j; // ax - __int16 v27; // ax - __int16 *v28; // ecx - __int16 v29; // ax - int v30; // esi - char *v31; // esi - int v32; // eax - char v33; // al - int v34; // ecx - int v35; // edx - int v36; // ebx - int v37; // edx - __int16 *v38; // ecx - __int16 k; // ax - __int16 v40; // ax - int v41; // edx - __int16 *v42; // ecx - __int16 v43; // ax - __int16 *v44; // edx - __int16 v45; // ax - bool v46; // zf - int v47; // eax - long double v48; // fst6 - __int16 v49; // fps - int v54; // eax - char *v55; // ebx - int v56; // esi - __int64 *v57; // eax - int v58; // edi - int v59; // ebx - int v60; // ebx - int v61; // eax - int v62; // ebx - int v63; // [esp+0h] [ebp-B8h] - int v64; // [esp+20h] [ebp-98h] BYREF - int v65; // [esp+28h] [ebp-90h] - int v66; // [esp+2Ch] [ebp-8Ch] - int v67; // [esp+30h] [ebp-88h] - int v68; // [esp+34h] [ebp-84h] - __int64 *v69; // [esp+38h] [ebp-80h] - int v70; // [esp+3Ch] [ebp-7Ch] - char *v71; // [esp+40h] [ebp-78h] - unsigned __int16 v72; // [esp+46h] [ebp-72h] - int v73; // [esp+48h] [ebp-70h] - int v74; // [esp+4Ch] [ebp-6Ch] - int *v75; // [esp+50h] [ebp-68h] - int v76; // [esp+54h] [ebp-64h] - int v77; // [esp+58h] [ebp-60h] - char *String2; // [esp+5Ch] [ebp-5Ch] - __int64 v79; // [esp+6Ah] [ebp-4Eh] BYREF - int v80; // [esp+72h] [ebp-46h] - int v81; // [esp+76h] [ebp-42h] - __int16 v82; // [esp+7Ah] [ebp-3Eh] BYREF - __int64 v83; // [esp+7Ch] [ebp-3Ch] BYREF - int v84; // [esp+84h] [ebp-34h] - int v85; // [esp+88h] [ebp-30h] - __int16 v86; // [esp+8Ch] [ebp-2Ch] BYREF - char v87[2]; // [esp+8Eh] [ebp-2Ah] BYREF - unsigned __int16 v88; // [esp+90h] [ebp-28h] - - v2 = Str; - LOBYTE(v74) = *localeconv()->decimal_point; - v3 = strlen(Str); - v4 = (char *)(v3 + 2); - v5 = 16 * ((v3 + 29) >> 4); - v6 = alloca(v5); - v7 = alloca(v5); - String2 = v4; - v75 = &v64; - for ( i = 0; ; ++i ) - { - v9 = (unsigned __int8)*v2; - v10 = isspace(v9); - if ( !v10 ) - break; - ++v2; - } - v67 = i; - v11 = v75; - v68 = 0; - v12 = String2; - while ( 1 ) - { - v11 = (int *)((char *)v11 + 1); - *((_BYTE *)v11 - 1) = v9; - if ( !(_BYTE)v9 ) - break; - if ( (int)v12 <= ++v10 ) - break; - LOBYTE(v9) = v2[v10]; - } - v13 = (char *)v75; - *(_BYTE *)v11 = 0; - v14 = *v13; - if ( v14 == 45 ) - { - String2 = (char *)v75 + 1; - v72 = -1; - } - else - { - v72 = 0; - String2 = (char *)v75 + (v14 == 43); - } - if ( !_strnicmp(String1, String2, 3u) ) - { - v31 = String2; - v16 = String2 + 3; - v32 = _strnicmp("INITY", String2 + 3, 5u); - HIDWORD(v79) = 0; - v80 = 0; - if ( !v32 ) - v16 = v31 + 8; - v81 = 0; - v82 = 0; - WORD1(v79) = 0x7FFF; - goto LABEL_13; - } - v15 = String2; - if ( !_strnicmp(off_514C0A, String2, 3u) ) - { - *(_DWORD *)((char *)&v79 + 2) = 0x7FFF; - v80 = 0; - v16 = v15 + 3; - HIWORD(v79) = -16384; - v81 = 0; - v82 = 0; -LABEL_13: - LOWORD(v79) = v72; - __toe64(&v79, (int)a2); - return v67 + v16 - (char *)v75; - } - v18 = String2; - v79 = 0LL; - v19 = *String2; - v80 = 0; - v81 = 0; - v82 = 0; - if ( v19 == 48 ) - { - do - v19 = *++v18; - while ( v19 == 48 ); - String2 = v18; - v65 = 1; - } - else - { - v65 = 0; - } - v70 = 0; - v73 = 0; - v66 = 0; - v71 = 0; - v76 = 0; - while ( 1 ) - { - v77 = v19 - 48; - if ( (unsigned int)v77 <= 9 ) - { - v20 = WORD2(v79); - if ( WORD2(v79) ) - { - v66 |= v77; - v71 = (char *)((__PAIR64__((unsigned int)v71, v76) - 1) >> 32); - } - else - { - v21 = &v82; - v71 += -(v76 == 0) + 1; - v22 = 0; - do - { - if ( *v21 < 0 ) - v22 |= 1u; - v23 = 2 * *v21; - if ( (v22 & 2) != 0 ) - v23 |= 1u; - --v21; - v22 *= 2; - v21[1] = v23; - } - while ( v21 != (__int16 *)((char *)&v79 + 2) ); - v24 = 0; - v69 = &v83; - v86 = 0; - v25 = &v86; - v83 = v79; - v84 = v80; - v85 = v81; - for ( j = 0; ; j = *v25 ) - { - if ( j < 0 ) - v24 |= 1u; - v27 = 2 * j; - if ( (v24 & 2) != 0 ) - v27 |= 1u; - --v25; - v24 *= 2; - v25[1] = v27; - if ( v25 == (__int16 *)((char *)&v83 + 2) ) - break; - } - v28 = &v86; - do - { - if ( *v28 < 0 ) - v20 |= 1u; - v29 = 2 * *v28; - if ( (v20 & 2) != 0 ) - v29 |= 1u; - --v28; - v20 *= 2; - v28[1] = v29; - } - while ( v28 != (__int16 *)((char *)&v83 + 2) ); - v30 = (int)v69; - __eaddm((int)v69, (int)&v79); - *(_DWORD *)v30 = 0; - *(_DWORD *)(v30 + 4) = 0; - *(_DWORD *)(v30 + 8) = 0; - *(_DWORD *)(v30 + 12) = 0; - *(_WORD *)(v30 + 16) = 0; - HIWORD(v85) = v77; - __eaddm(v30, (int)&v79); - } - ++v70; - v73 |= v77; - goto LABEL_23; - } - if ( (_BYTE)v74 != v19 ) - break; - if ( v76 ) - { - v76 = v65 | v70; - goto LABEL_66; - } - v76 = 1; -LABEL_23: - v19 = *++String2; - } - v76 = v65 | v70; - if ( (v19 & 0xDF) == 69 ) - { - if ( v65 | v70 ) - { - v33 = String2[1]; - if ( v33 == 45 ) - { - v34 = -1; - v16 = String2 + 2; - v33 = String2[2]; - } - else - { - v16 = String2 + 1; - v34 = 1; - } - if ( v33 == 43 ) - v33 = *++v16; - if ( (unsigned __int8)(v33 - 48) <= 9u ) - { - v35 = v68; - do - { - if ( v35 <= 4977 ) - v35 = (char)(v33 - 48) + 10 * v35; - v33 = *++v16; - } - while ( (unsigned __int8)(v33 - 48) <= 9u ); - v68 = v35; - if ( v34 == -1 ) - { - if ( v35 > 4977 ) - { - v82 = 0; - v79 = v72; - v80 = 0; - v81 = 0; - __toe64(&v79, (int)a2); - if ( !v73 ) - return v67 + v16 - (char *)v75; - String2 = v16; - goto LABEL_93; - } - String2 = v16; - v68 = -v35; - } - else - { - if ( v68 > 4977 ) - { - v79 = 0LL; - v82 = 0; - v80 = 0; - v81 = 0; - if ( !v73 ) - goto LABEL_13; - WORD1(v79) = 0x7FFF; - LOWORD(v79) = v72; - __toe64(&v79, (int)a2); - String2 = v16; - goto LABEL_93; - } - String2 = v16; - } - } - } - else - { - v68 = 0; - } - } -LABEL_66: - v77 = v68 - (_DWORD)v71; - if ( v68 - (int)v71 > 0 ) - { - while ( 1 ) - { - v36 = WORD2(v79); - if ( WORD2(v79) ) - break; - v37 = 0; - v38 = &v86; - v86 = 0; - v83 = v79; - v84 = v80; - v85 = v81; - for ( k = 0; ; k = *v38 ) - { - if ( k < 0 ) - v37 |= 1u; - v40 = 2 * k; - if ( (v37 & 2) != 0 ) - v40 |= 1u; - --v38; - v37 *= 2; - v38[1] = v40; - if ( v38 == (__int16 *)((char *)&v83 + 2) ) - break; - } - v41 = 0; - v42 = &v86; - do - { - if ( *v42 < 0 ) - v41 |= 1u; - v43 = 2 * *v42; - if ( (v41 & 2) != 0 ) - v43 |= 1u; - --v42; - v41 *= 2; - v42[1] = v43; - } - while ( v42 != (__int16 *)((char *)&v83 + 2) ); - __eaddm((int)&v79, (int)&v83); - v44 = &v86; - do - { - if ( *v44 < 0 ) - v36 |= 1u; - v45 = 2 * *v44; - if ( (v36 & 2) != 0 ) - v45 |= 1u; - --v44; - v36 *= 2; - v44[1] = v45; - } - while ( v44 != (__int16 *)((char *)&v83 + 2) ); - if ( WORD2(v83) ) - break; - v46 = v77-- == 1; - v82 = 0; - v79 = v83; - v80 = v84; - v81 = v85; - if ( v46 ) - { - v47 = __enormlz(&v79); - if ( v47 > 80 ) - goto LABEL_108; - __emdnorm((int)&v79, v66, 0, 16462 - v47, 64, 80); - v74 = WORD1(v79); - goto LABEL_91; - } - } - v54 = __enormlz(&v79); - if ( v54 > 80 ) - goto LABEL_108; - __emdnorm((int)&v79, v66, 0, 16462 - v54, 64, 80); - v70 = 1; - v74 = WORD1(v79); - v71 = v87; -LABEL_101: - v55 = (char *)&unk_514CB0; - v56 = 1; - v83 = (unsigned int)__eone; - v84 = 1073709056; - v57 = &v83; - v58 = v77; - do - { - while ( (v56 & v58) == 0 ) - { - v55 -= 12; - v56 *= 2; - if ( v55 == (char *)&unk_514C14 ) - goto LABEL_105; - } - v56 *= 2; - v63 = (int)v55; - v55 -= 12; - v77 = (int)v57; - __emul(v63, (int)v57, (int)v57); - v57 = (__int64 *)v77; - } - while ( v55 != (char *)&unk_514C14 ); -LABEL_105: - __emovi((int)v57, (int)v71); - if ( v70 == -1 ) - { - v60 = v74 - v88; - v77 = __edivm((int)v71, (int *)&v79); - v74 = v60 + 0x3FFF; - } - else - { - v59 = v74 + v88; - v77 = __emulm((int)v71, (int)&v79); - v74 = v59 - 16382; - } - goto LABEL_91; - } - v61 = __enormlz(&v79); - if ( v61 > 80 ) - { -LABEL_108: - v79 = 0LL; - v80 = 0; - v81 = 0; - v82 = 0; - } - else - { - __emdnorm((int)&v79, v66, 0, 16462 - v61, 64, 80); - v74 = WORD1(v79); - if ( v77 ) - { - if ( v77 < -4096 ) - { - v71 = v87; - __emovi((int)&__etens, (int)v87); - v62 = v74 - v88; - __edivm((int)v87, (int *)&v79); - v70 = -1; - v74 = v62 + 0x3FFF; - v77 = -4096 - v77; - } - else - { - v70 = -1; - v77 = (int)&v71[-v68]; - v71 = v87; - } - goto LABEL_101; - } -LABEL_91: - __emdnorm((int)&v79, v77, 0, v74, 64, 64); - } - LOWORD(v79) = v72; - __toe64(&v79, (int)a2); - if ( !v73 ) - goto LABEL_95; -LABEL_93: - v48 = *a2; - _FST7 = v48; - if ( v48 == 0.0 ) - goto LABEL_98; - __asm { fxam } - if ( (v49 & 0x4500) == 1280 ) -LABEL_98: - *_errno() = 34; -LABEL_95: - if ( !v76 ) - return v76; - v16 = String2; - return v67 + v16 - (char *)v75; -} -// 514CBC: using guessed type int __eone; - -//----- (00435F00) -------------------------------------------------------- -long double __cdecl strtold(const char *String, char **EndPtr) -{ - int v2; // eax - LONG_DOUBLE_12 v4[2]; // [esp+14h] [ebp-18h] BYREF - - memset(v4, 0, 12); - v2 = __asctoe64((char *)String, (long double *)&v4[0].value); - if ( EndPtr ) - *EndPtr = (char *)&String[v2]; - return *(long double *)v4; -} -// 435F00: using guessed type long double var_18[2]; - -//----- (00435F50) -------------------------------------------------------- -int __cdecl wctob(wint_t WCh) -{ - unsigned int CodePage; // eax - CHAR MultiByteStr; // [esp+29h] [ebp-13h] BYREF - WCHAR WideCharStr; // [esp+2Ah] [ebp-12h] BYREF - BOOL UsedDefaultChar; // [esp+2Ch] [ebp-10h] BYREF - - UsedDefaultChar = 0; - WideCharStr = WCh; - CodePage = ___lc_codepage_func(); - if ( !WideCharToMultiByte(CodePage, 0, &WideCharStr, 1, &MultiByteStr, 1, 0, &UsedDefaultChar) || UsedDefaultChar ) - return -1; - else - return MultiByteStr; -} - -//----- (00435FD0) -------------------------------------------------------- -wctype_t __cdecl wctype(const char *name) -{ - const char *Str2; // eax - int v2; // ebx - - Str2 = "alnum"; - v2 = 0; - while ( strcmp(name, Str2) ) - { - if ( ++v2 == 11 ) - return 0; - Str2 = (&cmap)[2 * v2]; - } - return word_514D44[4 * v2]; -} -// 514D40: using guessed type char *cmap; -// 514D44: using guessed type __int16 word_514D44[]; - -//----- (00436030) -------------------------------------------------------- -int __cdecl fseeko64(FILE *Stream, fpos_t a2, int a3) -{ - int v4; // eax - fpos_t Position[4]; // [esp+18h] [ebp-24h] BYREF - - switch ( a3 ) - { - case 1: - if ( !fgetpos(Stream, Position) ) - { - Position[0] += a2; - return fsetpos(Stream, Position); - } - return -1; - case 2: - fflush(Stream); - v4 = _fileno(Stream); - Position[0] = _filelengthi64(v4) + a2; - return fsetpos(Stream, Position); - case 0: - Position[0] = a2; - return fsetpos(Stream, Position); - default: - *_errno() = 22; - return -1; - } -} - -//----- (004360F0) -------------------------------------------------------- -fpos_t __cdecl ftello64(FILE *Stream) -{ - __int64 Position[2]; // [esp+18h] [ebp-14h] BYREF - - if ( fgetpos(Stream, Position) ) - return -1LL; - else - return Position[0]; -} -// 4360F0: using guessed type fpos_t var_14[2]; - -//----- (00436140) -------------------------------------------------------- -int __cdecl __mingw_vfprintf(FILE *Stream, char *a2, int *a3) -{ - int v3; // ebx - - _lock_file(Stream); - v3 = __mingw_pformat(24576, Stream, 0, a2, a3); - _unlock_file(Stream); - return v3; -} - -//----- (00436190) -------------------------------------------------------- -int __cdecl __mingw_vsnprintf(FILE *a1, int a2, char *a3, int *a4) -{ - int v4; // eax - bool v5; // cc - int v6; // edx - int v7; // eax - - if ( !a2 ) - return __mingw_pformat(0, a1, 0, a3, a4); - v4 = __mingw_pformat(0, a1, a2 - 1, a3, a4); - v5 = a2 - 1 <= v4; - v6 = v4; - v7 = a2 - 1; - if ( !v5 ) - v7 = v6; - *((_BYTE *)&a1->_ptr + v7) = 0; - return v6; -} - -//----- (00436210) -------------------------------------------------------- -int __cdecl __mingw_vsprintf(FILE *a1, char *a2, int *a3) -{ - int result; // eax - - result = __mingw_pformat(0x4000, a1, 0, a2, a3); - *((_BYTE *)&a1->_ptr + result) = 0; - return result; -} - -//----- (00436250) -------------------------------------------------------- -int *__cdecl __increment_D2A(int *a1) -{ - int *v1; // ebx - int v2; // esi - int *v3; // eax - int *result; // eax - int *v5; // edi - - v1 = a1; - v2 = a1[4]; - v3 = a1 + 5; - do - { - if ( *v3 != -1 ) - { - ++*v3; - return a1; - } - *v3++ = 0; - } - while ( &a1[v2 + 5] > v3 ); - if ( v2 >= a1[2] ) - { - v5 = __Balloc_D2A(a1[1] + 1); - memcpy(v5 + 3, a1 + 3, 4 * a1[4] + 8); - v1 = v5; - __Bfree_D2A(a1); - v2 = v5[4]; - } - v1[4] = v2 + 1; - result = v1; - v1[v2 + 5] = 1; - return result; -} - -//----- (004362F0) -------------------------------------------------------- -int __usercall rvOK_constprop_0_isra_0@( - int *a1@, - int *a2@, - char *a3@, - double a4, - int a5, - int a6, - _DWORD *a7) -{ - int *v8; // eax - int v9; // ecx - int v10; // edi - int *Size; // ebx - int v12; // eax - int v13; // edx - int v14; // eax - unsigned int v15; // edx - int v16; // ebp - int v18; // eax - int v19; // esi - int v20; // eax - int v21; // eax - int v22; // edx - int *v23; // eax - int v26; // [esp+24h] [ebp-38h] - int v27; // [esp+28h] [ebp-34h] - int v28; // [esp+2Ch] [ebp-30h] - int v29; // [esp+2Ch] [ebp-30h] - int v30; // [esp+38h] [ebp-24h] BYREF - int v31[8]; // [esp+3Ch] [ebp-20h] BYREF - - v8 = __d2b_D2A(a4, v31, &v30); - v9 = v30; - v10 = *a1; - Size = v8; - v12 = v30 - *a1; - v13 = v12 + v31[0]; - v30 = v12; - v31[0] += v12; - if ( v12 <= 0 ) - { - if ( !a5 ) - { - v16 = 0; - goto LABEL_14; - } - v27 = 0; - v26 = 0; - if ( !v12 ) - goto LABEL_18; - Size = __lshift_D2A(Size, v10 - v9); - goto LABEL_37; - } - if ( v10 == 53 ) - { - v16 = 0; - if ( !a5 || a1[3] != 1 ) - goto LABEL_14; - v27 = __any_on_D2A((int)Size, v12); - if ( !v27 ) - { - __rshift_D2A((int)Size, v30); - v26 = 0; - v13 = v31[0]; - goto LABEL_18; - } - } - else - { - if ( a6 != 1 ) - { - if ( a6 == 2 ) - { - v27 = __any_on_D2A((int)Size, v12); - __rshift_D2A((int)Size, v30); -LABEL_6: - Size = __increment_D2A(Size); - v14 = v10 & 0x1F; - if ( (v10 & 0x1F) != 0 ) - v14 = 32 - v14; - _BitScanReverse(&v15, Size[Size[4] + 4]); - if ( (v15 ^ 0x1F) == v14 ) - { - v26 = 32; - v13 = v31[0]; - } - else - { - if ( !v27 ) - v27 = Size[5] & 1; - __rshift_D2A((int)Size, 1); - v26 = 32; - v13 = ++v31[0]; - } - goto LABEL_18; - } - if ( v12 == 1 ) - { - v16 = 0; - if ( !a5 ) - goto LABEL_14; - v22 = ((unsigned int)Size[5] >> 1) & 1; - } - else - { - v22 = ((unsigned int)Size[((v12 - 1) >> 5) + 5] >> (v12 - 1)) & 1; - } - v29 = v22; - v27 = __any_on_D2A((int)Size, v12); - v26 = v27 != 0 ? 0x10 : 0; - __rshift_D2A((int)Size, v30); - if ( v29 ) - goto LABEL_6; - goto LABEL_37; - } - v27 = __any_on_D2A((int)Size, v12); - if ( !v27 ) - { - __rshift_D2A((int)Size, v30); - v26 = 0; - goto LABEL_37; - } - } - __rshift_D2A((int)Size, v30); - v26 = 16; -LABEL_37: - v13 = v31[0]; -LABEL_18: - v18 = a1[1]; - if ( v18 <= v13 ) - { - v21 = a1[2]; - if ( v21 < v13 ) - { - v31[0] = v21 + 1; - *a7 = 163; - v26 = 0; - *_errno() = 34; - v13 = v31[0]; - Size[4] = 0; - } - goto LABEL_30; - } - v31[0] = a1[1]; - v28 = v18 - v13; - if ( v10 < v18 - v13 || (v16 = a1[4]) != 0 ) - { - Size[4] = 0; - v13 = v18; - v26 = 0; - *a7 = 80; -LABEL_30: - v16 = 1; - *a2 = v13; - __copybits_D2A(a3, v10, (size_t)Size); - *a7 |= v26; - goto LABEL_14; - } - if ( v28 - 1 > 0 && !v27 ) - v27 = __any_on_D2A((int)Size, v28 - 1); - if ( a5 | v27 ) - { - v19 = Size[((v28 - 1) >> 5) + 5] & (1 << (v28 - 1)); - __rshift_D2A((int)Size, v28); - *a7 = 2; - if ( v19 ) - { - v23 = __increment_D2A(Size); - v26 = 96; - v13 = v31[0]; - Size = v23; - } - else - { - v13 = v31[0]; - v20 = 80; - if ( !v27 ) - v20 = v26; - v26 = v20; - } - goto LABEL_30; - } -LABEL_14: - __Bfree_D2A(Size); - return v16; -} -// 4362F0: using guessed type int var_20[8]; - -//----- (004366D0) -------------------------------------------------------- -_DWORD *__cdecl __decrement_D2A(int a1) -{ - _DWORD *result; // eax - unsigned int v2; // ecx - - result = (_DWORD *)(a1 + 20); - v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); - while ( !*result ) - { - *result++ = -1; - if ( v2 <= (unsigned int)result ) - return result; - } - --*result; - return result; -} - -//----- (00436710) -------------------------------------------------------- -int *__cdecl __set_ones_D2A(int *a1, int a2) -{ - int *v2; // ebx - int v3; // edi - int *v4; // edi - int v5; // eax - int v6; // eax - unsigned int v7; // eax - size_t Size; // ebp - unsigned int v10; // eax - size_t v11; // edx - - v2 = a1; - v3 = (a2 + 31) >> 5; - if ( a1[1] < v3 ) - { - __Bfree_D2A(a1); - v2 = __Balloc_D2A(v3); - } - v4 = v2 + 5; - v5 = a2 >> 5; - if ( (a2 & 0x1F) != 0 ) - { - v6 = v5 + 1; - v2[4] = v6; - v7 = (unsigned int)&v4[v6]; - if ( v7 > (unsigned int)v4 ) - { - Size = 4 * ((v7 - (unsigned int)v2 - 21) >> 2) + 4; - if ( (unsigned int)v2 + 21 > v7 ) - Size = 4; - v4 = (int *)((char *)v4 + Size); - memset(v2 + 5, 255, Size); - } - *(v4 - 1) = (unsigned int)*(v4 - 1) >> (32 - (a2 & 0x1F)); - return v2; - } - v2[4] = v5; - v10 = (unsigned int)&v4[v5]; - if ( (unsigned int)v4 >= v10 ) - return v2; - v11 = 4 * ((v10 - (unsigned int)v2 - 21) >> 2) + 4; - if ( v10 < (unsigned int)v2 + 21 ) - v11 = 4; - memset(v2 + 5, 255, v11); - return v2; -} - -//----- (00436800) -------------------------------------------------------- -int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, void *a5) -{ - char *decimal_point; // edi - unsigned __int8 *v6; // ebp - signed __int8 v7; // cl - int v8; // eax - int v9; // ebx - int v10; // edi - unsigned __int8 *v11; // edx - int result; // eax - unsigned __int8 *v13; // edi - size_t v14; // eax - unsigned __int8 *v15; // edx - unsigned __int8 *v16; // esi - int v17; // ecx - unsigned __int8 *v18; // edx - unsigned __int8 *v19; // esi - int v20; // esi - int v21; // edx - unsigned __int8 *v22; // eax - int v23; // eax - int v24; // eax - int v25; // esi - char *v26; // ebx - int v27; // esi - int v28; // edx - int v29; // ecx - int v30; // eax - int v31; // edi - long double v32; // fst7 - int v36; // eax - int v37; // eax - int v38; // ecx - char v39; // al - signed int v40; // esi - long double v41; // fst7 - int *v42; // eax - int v43; // esi - int v44; // edx - int v45; // eax - int v46; // edi - int v47; // edi - int v48; // edx - int v49; // edi - int v50; // edi - int v51; // eax - int *v52; // eax - int v53; // edx - int *v54; // ebx - int v55; // eax - int *v56; // edi - int v57; // esi - int v58; // ebp - int v59; // ebx - int v60; // eax - int v61; // ebx - int v62; // esi - int v63; // edx - int v64; // esi - int v65; // ebp - bool v66; // cc - int v67; // eax - int *v68; // eax - int *v69; // ebp - int v70; // ebx - int v71; // eax - int v72; // eax - int v73; // eax - int *v74; // edx - int *v75; // ebx - _DWORD *v76; // esi - int *v77; // eax - int v78; // edx - unsigned int v79; // ecx - long double v80; // fst7 - long double v81; // fst5 - int v82; // eax - unsigned __int8 *v83; // edx - int v84; // esi - int v85; // esi - int v86; // edi - int v87; // edx - int v88; // esi - int v89; // ecx - int v90; // ecx - int v91; // edx - char v92; // dl - int v93; // eax - long double v94; // fst6 - int v95; // edx - int v96; // ecx - int v97; // edi - int v98; // esi - int v99; // esi - int v100; // ecx - long double v101; // fst6 - char v102; // cl - int v103; // eax - int v104; // ecx - int *v105; // eax - long double v106; // fst7 - int *v107; // eax - int v108; // edx - unsigned int v109; // ecx - bool v110; // zf - int *v111; // eax - long double v112; // fst6 - long double v113; // fst5 - long double v114; // fst6 - int v115; // ebx - int *v116; // eax - int *v117; // esi - int v120; // eax - int v121; // edx - size_t v122; // esi - _DWORD *v123; // eax - int v124; // eax - int v125; // edi - int v126; // ebx - int v127; // esi - int v128; // ecx - int v129; // edx - unsigned int v130; // edi - size_t v131; // edx - int v133; // eax - size_t v134; // eax - int v135; // ecx - double Str; // [esp+0h] [ebp-CCh] - int Size; // [esp+8h] [ebp-C4h] - int v138; // [esp+Ch] [ebp-C0h] - int v139; // [esp+20h] [ebp-ACh] - double v140; // [esp+20h] [ebp-ACh] - int *v141; // [esp+20h] [ebp-ACh] - int v142; // [esp+2Ch] [ebp-A0h] - void *v143; // [esp+2Ch] [ebp-A0h] - int *v144; // [esp+2Ch] [ebp-A0h] - int Val; // [esp+30h] [ebp-9Ch] - char *v146; // [esp+34h] [ebp-98h] - int v147; // [esp+34h] [ebp-98h] - int v148; // [esp+34h] [ebp-98h] - int v149; // [esp+34h] [ebp-98h] - int v150; // [esp+38h] [ebp-94h] - int v151; // [esp+38h] [ebp-94h] - unsigned __int8 *v152; // [esp+38h] [ebp-94h] - int v153; // [esp+40h] [ebp-8Ch] - int v154; // [esp+40h] [ebp-8Ch] - double v155; // [esp+40h] [ebp-8Ch] - int v156; // [esp+48h] [ebp-84h] - int v157; // [esp+48h] [ebp-84h] - int v158; // [esp+4Ch] [ebp-80h] - unsigned __int8 *v159; // [esp+4Ch] [ebp-80h] - int v160; // [esp+4Ch] [ebp-80h] - int *v161; // [esp+4Ch] [ebp-80h] - BOOL v162; // [esp+4Ch] [ebp-80h] - int v163; // [esp+4Ch] [ebp-80h] - int v164; // [esp+50h] [ebp-7Ch] - double v165; // [esp+50h] [ebp-7Ch] - int v166; // [esp+50h] [ebp-7Ch] - unsigned __int8 *i; // [esp+58h] [ebp-74h] - int v168; // [esp+58h] [ebp-74h] - int v169; // [esp+5Ch] [ebp-70h] - int v170; // [esp+5Ch] [ebp-70h] - int v171; // [esp+60h] [ebp-6Ch] - int v172; // [esp+64h] [ebp-68h] - int v173; // [esp+68h] [ebp-64h] - int v174; // [esp+6Ch] [ebp-60h] - int v175; // [esp+70h] [ebp-5Ch] - int *v176; // [esp+74h] [ebp-58h] - int v177; // [esp+78h] [ebp-54h] - void *Src; // [esp+7Ch] [ebp-50h] - int v179; // [esp+80h] [ebp-4Ch] - int v180; // [esp+84h] [ebp-48h] - int v181; // [esp+88h] [ebp-44h] - int v182; // [esp+94h] [ebp-38h] BYREF - int v183; // [esp+98h] [ebp-34h] BYREF - int v184; // [esp+9Ch] [ebp-30h] BYREF - int v185; // [esp+A0h] [ebp-2Ch] BYREF - int v186; // [esp+A4h] [ebp-28h] BYREF - unsigned __int8 *v187; // [esp+A8h] [ebp-24h] BYREF - size_t v188; // [esp+ACh] [ebp-20h] BYREF - - decimal_point = localeconv()->decimal_point; - v184 = 0; - v153 = strlen(decimal_point); - v188 = 0; - Val = *a3; - v187 = a1; - v6 = a1; - while ( 2 ) - { - v7 = *v6; - switch ( *v6 ) - { - case 0u: - goto LABEL_12; - case 9u: - case 0xAu: - case 0xBu: - case 0xCu: - case 0xDu: - case 0x20u: - v187 = ++v6; - continue; - case 0x2Bu: - v173 = 0; - goto LABEL_225; - case 0x2Du: - v173 = 1; -LABEL_225: - v187 = v6 + 1; - v7 = v6[1]; - if ( v7 ) - { - ++v6; -LABEL_4: - v139 = 0; - if ( v7 == 48 ) - { - v22 = v6 + 1; - if ( (v6[1] & 0xDF) == 88 ) - { - v184 = __gethex_D2A(&v187, a3, a4, (int **)&v188, v173); - if ( v184 != 6 ) - goto LABEL_79; - v187 = a1; - v14 = v188; - if ( a2 ) - *a2 = a1; - goto LABEL_35; - } - do - { - v187 = v22; - v6 = v22; - v7 = *v22++; - } - while ( v7 == 48 ); - v14 = 0; - if ( !v7 ) - goto LABEL_31; - v139 = 1; - } - v180 = a3[4]; - v8 = v7; - if ( (unsigned int)(v7 - 48) > 9 ) - { - v142 = 0; - v11 = v6; - v9 = 0; - v156 = 0; - } - else - { - v146 = decimal_point; - v9 = 0; - v142 = 0; - v10 = 0; - do - { - if ( v9 <= 8 ) - { - v10 = v8 + 10 * v10 - 48; - } - else if ( v9 <= 15 ) - { - v142 = v8 + 10 * v142 - 48; - } - v11 = &v6[++v9]; - v187 = &v6[v9]; - v8 = (char)v6[v9]; - v7 = v6[v9]; - } - while ( (unsigned int)(v8 - 48) <= 9 ); - v156 = v10; - decimal_point = v146; - } - if ( *decimal_point == v7 ) - { - if ( !decimal_point[1] ) - { - v82 = 1; -LABEL_182: - v83 = &v11[v82]; - v187 = v83; - v8 = (char)*v83; - if ( v9 ) - { - v84 = v8 - 48; - v147 = v9; - v13 = 0; - for ( i = 0; (unsigned int)(v8 - 48) <= 9; v84 = v8 - 48 ) - { - v163 = v84; - ++v13; - v152 = v187; - if ( v84 ) - { - i = &i[(_DWORD)v13]; - v124 = v147 + 1; - if ( v13 == (unsigned __int8 *)1 ) - { - v128 = v147++; - } - else - { - v125 = (int)&v13[v147]; - v166 = v9; - v170 = v84; - v126 = v147; - v127 = v142; - v128 = v125 - 1; - v147 = v125; - v129 = v156; - while ( 1 ) - { - v130 = v126; - v126 = v124; - if ( v130 <= 8 ) - { - v129 *= 10; - } - else if ( v124 <= 16 ) - { - v127 *= 10; - } - if ( v124 == v128 ) - break; - ++v124; - } - v156 = v129; - v9 = v166; - v142 = v127; - v84 = v170; - } - if ( v128 <= 8 ) - { -LABEL_223: - v13 = 0; - v156 = v163 + 10 * v156; - } - else - { - v13 = 0; - if ( v147 <= 16 ) - v142 = v84 + 10 * v142; - } - } - v187 = v152 + 1; - v8 = (char)v152[1]; - } - } - else - { - if ( v8 == 48 ) - { - v104 = 1 - (_DWORD)v83; - do - { - v13 = &v83[v104]; - v187 = ++v83; - v8 = (char)*v83; - } - while ( v8 == 48 ); - } - else - { - v13 = 0; - } - if ( (unsigned int)(v8 - 49) <= 8 ) - { - v6 = v187; - v147 = 1; - v163 = v8 - 48; - v152 = v187; - i = v13 + 1; - goto LABEL_223; - } - i = 0; - v147 = 0; - } - v150 = 1; -LABEL_20: - if ( (v8 & 0xFFFFFFDF) != 69 ) - { - v158 = 0; - goto LABEL_22; - } - if ( !(v139 | (unsigned int)v13 | v147) ) - goto LABEL_30; - a1 = v187++; - v8 = (char)a1[1]; - if ( (_BYTE)v8 == 43 ) - { - v164 = 0; - } - else - { - if ( (_BYTE)v8 != 45 ) - { - v164 = 0; - goto LABEL_41; - } - v164 = 1; - } - v187 = a1 + 2; - v8 = (char)a1[2]; -LABEL_41: - if ( (unsigned int)(v8 - 48) > 9 ) - { - v158 = 0; - v187 = a1; - } - else - { - if ( v8 == 48 ) - { - v15 = v187 + 1; - do - { - v187 = v15; - v8 = (char)*v15++; - } - while ( v8 == 48 ); - } - v158 = 0; - if ( (unsigned int)(v8 - 49) <= 8 ) - { - v16 = v187; - v17 = v8 - 48; - v159 = v187++; - v8 = (char)v159[1]; - if ( (unsigned int)(v8 - 48) > 9 ) - goto LABEL_289; - v18 = v16 + 2; - do - { - v187 = v18; - v19 = v18++; - v17 = v8 + 10 * v17 - 48; - v8 = (char)*(v18 - 1); - } - while ( (unsigned int)(v8 - 48) <= 9 ); - v20 = v19 - v159; - v160 = 19999; - if ( v20 <= 8 ) - { -LABEL_289: - v121 = 19999; - if ( v17 <= 19999 ) - v121 = v17; - v160 = v121; - } - v21 = -v160; - if ( !v164 ) - v21 = v160; - v158 = v21; - } - } -LABEL_22: - if ( !v147 ) - { - if ( (unsigned int)v13 | v139 ) - goto LABEL_79; - if ( v150 ) - goto LABEL_30; - if ( v8 != 105 ) - { - if ( v8 > 105 ) - { - if ( v8 != 110 ) - goto LABEL_30; -LABEL_29: - if ( !__match_D2A((char **)&v187, "an") ) - goto LABEL_30; - v184 = 4; - *a4 = a3[2] + 1; - if ( *v187 != 40 ) - goto LABEL_79; - v184 = __hexnan_D2A(&v187, a3, (int *)a5); -LABEL_233: - *a4 = a3[2] + 1; - v14 = v188; - goto LABEL_31; - } - if ( v8 != 73 ) - { - if ( v8 != 78 ) - { -LABEL_30: - v184 = 6; - v187 = a1; - v14 = v188; - goto LABEL_31; - } - goto LABEL_29; - } - } - if ( !__match_D2A((char **)&v187, "nf") ) - goto LABEL_30; - --v187; - if ( !__match_D2A((char **)&v187, "inity") ) - ++v187; - v184 = 3; - goto LABEL_233; - } - v184 = 1; - v175 = v158 - (_DWORD)i; - v30 = a3[3] & 3; - v172 = v30 - v173; - if ( v30 != 2 ) - { - v172 = v173 + 1; - if ( v30 != 3 ) - v172 = v30 == 0; - } - v31 = 16; - v32 = (long double)(unsigned int)v156; - if ( !v9 ) - v9 = v147; - if ( v147 <= 16 ) - v31 = v147; - v140 = v32; - if ( v147 > 9 ) - v140 = v32 * dbl_5150F8[v31] + (long double)(unsigned int)v142; - if ( Val > 53 || v147 > 15 ) - { - v37 = v158 - (_DWORD)i; - goto LABEL_106; - } - if ( !v175 ) - { - v36 = rvOK_constprop_0_isra_0(a3, a4, (char *)a5, v140, 1, v172, &v184); - goto LABEL_98; - } - if ( v175 <= 0 ) - { - v37 = v158 - (_DWORD)i; - if ( v175 < -22 ) - goto LABEL_106; - Str = v140 / __tens_D2A[(_DWORD)&i[-v158]]; - } - else - { - if ( v175 <= 22 ) - { - _EDX = LODWORD(v140); - if ( LODWORD(v140) ) - { - __asm { tzcnt ecx, edx } - v143 = (void *)(53 - _ECX); - } - else - { - _ECX = HIDWORD(v140) | 0x100000; - __asm { tzcnt ecx, ecx } - v143 = (void *)(21 - _ECX); - } - v138 = v172; - Size = (int)v143 + fivesbits[v175] <= 53; - Str = v140 * __tens_D2A[v175]; - v140 = Str; - goto LABEL_97; - } - v40 = v175 + v147 - v31; - if ( 37 - v147 < v175 ) - goto LABEL_107; - Str = v140 * __tens_D2A[15 - v147] * __tens_D2A[v175 - (15 - v147)]; - } - Size = 0; - v140 = Str; - v138 = v172; -LABEL_97: - v36 = rvOK_constprop_0_isra_0(a3, a4, (char *)a5, Str, Size, v138, &v184); -LABEL_98: - if ( v36 ) - goto LABEL_79; - v37 = 0; -LABEL_106: - v40 = v37 + v147 - v31; - if ( v40 <= 0 ) - { - if ( v40 ) - { - v85 = -v40; - if ( (v85 & 0xF) != 0 ) - v140 = v140 / __tens_D2A[v85 & 0xF]; - v40 = v85 & 0xFFFFFFF0; - if ( v40 ) - { - v86 = v40 >> 4; - if ( v40 <= 255 ) - { - v90 = 0; - } - else - { - v87 = v40 >> 4; - v88 = 0; - do - { - v87 -= 16; - v89 = HIDWORD(v140) >> 20; - HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; - v90 = v88 + (v89 & 0x7FF) - 1023; - v88 = v90; - v140 = v140 * 1.0e-256; - } - while ( v87 > 15 ); - v86 &= 0xFu; - } - v91 = (HIDWORD(v140) >> 20) & 0x7FF; - HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; - v40 = v90 + v91 - 1023; - if ( v86 ) - { - v92 = 0; - v93 = 0; - v94 = v140; - do - { - if ( (v86 & 1) != 0 ) - { - v94 = v94 * __tinytens_D2A[v93]; - v92 = 1; - } - ++v93; - v86 >>= 1; - } - while ( v86 ); - if ( !v92 ) - v94 = v140; - v41 = v94; - goto LABEL_111; - } - } - } - goto LABEL_110; - } -LABEL_107: - if ( (v40 & 0xF) != 0 ) - v140 = v140 * __tens_D2A[v40 & 0xF]; - v40 &= 0xFFFFFFF0; - if ( v40 ) - { - v95 = v40 >> 4; - if ( v40 <= 255 ) - { - v99 = 0; - } - else - { - v96 = v40 >> 4; - v97 = 0; - do - { - v96 -= 16; - v98 = HIDWORD(v140) >> 20; - HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; - v99 = v97 + (v98 & 0x7FF) - 1023; - v97 = v99; - v140 = v140 * 1.0e256; - } - while ( v96 > 15 ); - v95 &= 0xFu; - } - v100 = (HIDWORD(v140) >> 20) & 0x7FF; - HIDWORD(v140) = HIDWORD(v140) & 0x800FFFFF | 0x3FF00000; - v41 = v140; - v40 = v99 + v100 - 1023; - if ( v95 ) - { - v101 = v140; - v102 = 0; - v103 = 0; - do - { - if ( (v95 & 1) != 0 ) - { - v101 = v101 * __bigtens_D2A[v103]; - v102 = 1; - } - ++v103; - v95 >>= 1; - } - while ( v95 ); - if ( !v102 ) - v101 = v140; - v41 = v101; - } - goto LABEL_111; - } -LABEL_110: - v41 = v140; -LABEL_111: - v42 = __d2b_D2A(v41, &v186, &v185); - v43 = v186 + v40; - v188 = (size_t)v42; - v44 = (int)v42; - v45 = v185; - v186 = v43; - v46 = v185 - Val; - if ( v185 - Val > 0 ) - { - __rshift_D2A(v44, v185 - Val); - v45 = Val; - v186 += v46; - v43 = v186; - v185 = Val; - } - v47 = v45 + v43 - Val; - v181 = v47; - if ( a3[2] + 1 < v47 ) - { - v151 = 0; - goto LABEL_264; - } - v48 = a3[1]; - v171 = v48; - if ( v47 >= v48 ) - { - v151 = 0; - } - else - { - v49 = v43 - v48; - if ( v43 - v48 > 0 ) - { - v105 = __lshift_D2A((int *)v188, v43 - v48); - v185 += v49; - v188 = (size_t)v105; - } - else if ( v43 != v48 ) - { - v50 = v45 + v49; - v14 = v188; - v185 = v50; - if ( v50 > 0 ) - { - __rshift_D2A(v188, v48 - v43); - } - else - { - if ( v50 < -1 ) - { - *(_DWORD *)(v188 + 16) = 0; - *(_DWORD *)(v14 + 20) = 0; - *a4 = v48; - if ( !v180 ) - { - v29 = 80; - goto LABEL_78; - } - goto LABEL_260; - } - v185 = 1; - *(_DWORD *)(v188 + 16) = 1; - *(_DWORD *)(v14 + 20) = 1; - } - } - v186 = v171; - if ( v180 ) - { - v51 = v181; - v151 = 1; - v181 = v171; - if ( v51 + 1 < v171 ) - { - v14 = v188; - *(_DWORD *)(v188 + 16) = 0; - *(_DWORD *)(v14 + 20) = 0; - *a4 = v171; - goto LABEL_260; - } - } - else - { - v151 = 1; - v181 = v171; - } - } - v52 = __s2b_D2A((int)v6, v9, v147, v156, v153); - v53 = 0; - v149 = 0; - v54 = v52; - v176 = v52; - v55 = (int)&i[-v158]; - if ( v175 >= 0 ) - v55 = 0; - if ( v175 >= 0 ) - v53 = v158 - (_DWORD)i; - v157 = v55; - Src = v54 + 3; - v174 = v53; - v177 = Val + 1; - while ( 1 ) - { - v144 = __Balloc_D2A(v176[1]); - memcpy(v144 + 3, Src, 4 * v176[4] + 8); - v56 = __Balloc_D2A(*(_DWORD *)(v188 + 4)); - memcpy(v56 + 3, (const void *)(v188 + 12), 4 * *(_DWORD *)(v188 + 16) + 8); - v57 = v185; - v58 = v186; - v59 = v186 + v149; - v154 = v185 - v149; - v141 = __i2b_D2A(1); - if ( v59 < 0 ) - { - v60 = v174 - v59; - v61 = v157; - } - else - { - v60 = v174; - v61 = v157 + v59; - } - v62 = v58 + v57 - Val; - v63 = v177 - v154; - if ( v171 > v62 ) - v63 = v177 - v154 + v62 - v171; - v64 = v61 + v63; - v65 = v60 + v63; - v66 = v61 + v63 <= v60 + v63; - v67 = v60 + v63; - if ( v66 ) - v67 = v61 + v63; - if ( v61 <= v67 ) - v67 = v61; - if ( v67 > 0 ) - { - v64 -= v67; - v65 -= v67; - v61 -= v67; - } - if ( v157 > 0 ) - { - v141 = __pow5mult_D2A(v141, v157); - v161 = __mult_D2A((int)v141, (int)v56); - __Bfree_D2A(v56); - v56 = v161; - } - if ( v64 - v149 > 0 ) - { - v56 = __lshift_D2A(v56, v64 - v149); - } - else if ( v64 != v149 ) - { - __rshift_D2A((int)v56, v149 - v64); - } - if ( v175 > 0 ) - v144 = __pow5mult_D2A(v144, v174); - if ( v65 > 0 ) - v144 = __lshift_D2A(v144, v65); - if ( v61 > 0 ) - v141 = __lshift_D2A(v141, v61); - v68 = __diff_D2A((int)v56, (int)v144); - v69 = v68; - if ( v68[4] <= 1 && !v68[5] ) - goto LABEL_62; - v70 = v68[3]; - v68[3] = 0; - v71 = __cmp_D2A((int)v68, (int)v141); - if ( v172 && v71 <= 0 ) - { - v72 = v172 & 1; - v149 = v70 ^ v72; - if ( v72 == v70 ) - { - v184 = v72 == 0 ? 33 : 17; - goto LABEL_62; - } - if ( v70 ) - { - v184 = 33; - v155 = 1.0; - v168 = 0; - v165 = 1.0; - v179 = 32; - v162 = 0; - goto LABEL_162; - } - v184 = 17; - if ( v181 != v171 ) - { - v73 = Val; - v74 = (int *)v188; - if ( Val > 31 ) - { - while ( !*(_DWORD *)(v188 + 4 * v70 + 20) ) - { - v73 -= 32; - ++v70; - if ( v73 <= 31 ) - goto LABEL_266; - } - } - else - { - v73 = Val; -LABEL_266: - if ( v73 <= 1 ) - goto LABEL_268; - v117 = (int *)(v188 + 4 * v70 + 20); - _EBX = *v117; - __asm { tzcnt ecx, ebx } - *v117 = (unsigned int)*v117 >> _ECX; - if ( v73 - 1 <= _ECX ) - { -LABEL_268: - v186 = v181 - 1; - v185 = Val; - v188 = (size_t)__set_ones_D2A(v74, Val); - goto LABEL_62; - } - } - } - } - else - { - if ( v71 < 0 ) - { - if ( v70 ) - { - v184 = 17; - goto LABEL_62; - } - v184 = 33; - if ( v154 > 1 || v181 == v171 || (v151 & 1) != 0 ) - { -LABEL_62: - if ( v151 ) - goto LABEL_63; - goto LABEL_277; - } - v69 = __lshift_D2A(v69, 1); - if ( __cmp_D2A((int)v69, (int)v141) <= 0 ) - goto LABEL_277; - v184 = 17; - v151 = 0; -LABEL_303: - v186 -= Val; - v185 = Val; - v188 = (size_t)__set_ones_D2A((int *)v188, Val); - goto LABEL_62; - } - if ( !v71 ) - { - if ( v70 ) - { - if ( !v151 ) - goto LABEL_344; - v122 = v188; - v123 = (_DWORD *)(v188 + 20); - while ( v188 + 20 + 4 * (v185 >> 5) > (unsigned int)v123 ) - { - if ( *v123++ != -1 ) - goto LABEL_344; - } - if ( (v185 & 0x1F) != 0 && (*v123 | (-1 << (v185 & 0x1F))) != -1 ) - { -LABEL_344: - v184 = 17; - goto LABEL_335; - } - *(_DWORD *)(v188 + 16) = 1; - *(_DWORD *)(v122 + 20) = 1; - v185 = 1; - v186 = Val + v171 - 1; - v120 = v151; - v184 = 33; -LABEL_278: - v151 = Val - v120; - if ( Val != v120 ) - { - if ( Val - v120 <= 0 ) - __rshift_D2A(v188, v120 - Val); - else - v188 = (size_t)__lshift_D2A((int *)v188, v151); - v23 = v186 - v151; - v151 = 0; - v186 = v23; -LABEL_64: - *a4 = v23; - __Bfree_D2A(v56); - __Bfree_D2A(v144); - __Bfree_D2A(v141); - __Bfree_D2A(v176); - __Bfree_D2A(v69); - if ( a3[2] >= v186 ) - goto LABEL_265; - v24 = a3[3] & 3; - switch ( v24 ) - { - case 2: - if ( !v173 ) - goto LABEL_264; - break; - case 3: - if ( v173 ) - goto LABEL_264; - break; - case 1: -LABEL_264: - v184 = 163; - *(_DWORD *)(v188 + 16) = 0; - *_errno() = 34; - *a4 = a3[2] + 1; -LABEL_265: - v14 = v188; -LABEL_73: - if ( !v151 ) - goto LABEL_31; - if ( !v180 ) - { - v28 = v184 & 0x30; - v29 = v184 & 0xFFFFFFF8; - if ( *(int *)(v14 + 16) > 0 ) - v29 |= 2u; - v184 = v29; - if ( v28 ) - { -LABEL_78: - v184 = v29 | 0x40; - *_errno() = 34; - } -LABEL_79: - v14 = v188; -LABEL_31: - if ( a2 ) - *a2 = v187; - if ( v173 ) - v184 |= 8u; -LABEL_35: - if ( v14 ) - { - __copybits_D2A((char *)a5, Val, v14); - __Bfree_D2A((void *)v188); - } - return v184; - } -LABEL_260: - *(_DWORD *)(v14 + 16) = 0; - v184 = 80; - *_errno() = 34; - v14 = v188; - goto LABEL_31; - default: - break; - } - __Bfree_D2A((void *)v188); - v188 = 0; - v184 = 17; - *a4 = a3[2]; - v25 = *a3; - v26 = (char *)a5 + 4 * ((*a3 + 31) >> 5); - if ( a5 < v26 ) - memset(a5, 255, 4 * ((unsigned int)&v26[~(unsigned int)a5] >> 2) + 4); - v27 = v25 & 0x1F; - if ( v27 ) - *((_DWORD *)v26 - 1) >>= 32 - v27; - v14 = 0; - goto LABEL_73; - } -LABEL_63: - v23 = v186; - goto LABEL_64; - } - if ( v154 != 1 ) - { - v184 = 33; -LABEL_335: - if ( Val <= v154 || (v151 & 1) != 0 ) - { - v131 = v188; - if ( (*(_BYTE *)(v188 + 20) & 1) != 0 ) - { - if ( v70 ) - { - v134 = (size_t)__increment_D2A((int *)v188); - v135 = *(_DWORD *)(v134 + 16); - v188 = v134; - _BitScanReverse(&v134, *(_DWORD *)(v134 + 4 * v135 + 16)); - if ( (-v185 & 0x1F) != (v134 ^ 0x1F) ) - ++v185; - v184 = 33; - } - else if ( v154 == 1 ) - { -LABEL_330: - *(_DWORD *)(v131 + 16) = 0; - v184 = 80; - v186 = v171; - } - else - { - __decrement_D2A(v188); - v184 = 17; - } - } - goto LABEL_62; - } -LABEL_277: - v120 = v185; - goto LABEL_278; - } - v184 = 1; - if ( v181 == v171 ) - { - v184 = 33; - if ( *(_DWORD *)(v188 + 16) == 1 ) - { - v133 = 1; - if ( *(_DWORD *)(v188 + 20) != 1 ) - v133 = v180; - v180 = v133; - } - goto LABEL_62; - } - goto LABEL_303; - } - v106 = __ratio_D2A((int)v69, (int)v141); - if ( v106 > 2.0 ) - { - v112 = v106 * 0.5; - v179 = v70 == 0 ? 32 : 16; - v162 = v70 == 0; - v165 = v112; - if ( v112 >= 2147483647.0 ) - { - v168 = 0; - v155 = v112; - goto LABEL_257; - } - v168 = (int)v112; - v113 = (long double)(int)v112; - v155 = v113; - v114 = v112 - v113; - v165 = v114; - if ( v172 == 1 ) - { - if ( v70 ) - goto LABEL_257; - } - else - { - if ( v172 != 2 ) - { - if ( v114 < 0.5 ) - { -LABEL_257: - v149 = 0; - goto LABEL_162; - } -LABEL_274: - ++v168; - v179 = 48 - v179; - v155 = (double)v168; - goto LABEL_257; - } - if ( !v70 ) - goto LABEL_257; - } - if ( v165 <= 0.0 ) - goto LABEL_257; - goto LABEL_274; - } - if ( v70 ) - { - v168 = 0; - v155 = 1.0; - v179 = 32; - v165 = 1.0; - v149 = 0; - v162 = 0; - goto LABEL_162; - } - v149 = 0; - } - if ( v154 <= 1 && (v151 & 1) != 0 ) - { - v151 = 1; - v131 = v188; - goto LABEL_330; - } - v168 = 0; - v155 = 1.0; - v179 = 16; - v165 = 1.0; - v162 = 1; -LABEL_162: - v169 = v185 + v186; - if ( v185 < Val && (v151 & 1) == 0 ) - { - v115 = Val - v185; - v116 = __lshift_D2A((int *)v188, Val - v185); - v186 -= v115; - v188 = (size_t)v116; - v185 = Val; - } - v75 = __d2b_D2A(v155, &v182, &v183); - if ( v182 < 0 ) - { - __rshift_D2A((int)v75, -v182); - } - else if ( v182 ) - { - v75 = __lshift_D2A(v75, v182); - } - v76 = (_DWORD *)v188; - if ( v162 ) - { - v77 = __diff_D2A(v188, (int)v75); - v188 = (size_t)v77; - if ( !v151 ) - { - v78 = v76[4]; - if ( v77[4] <= v78 - 1 - || (_BitScanReverse(&v79, v77[v78 + 4]), - _BitScanReverse((unsigned int *)&v78, v76[v78 + 4]), - (v78 ^ 0x1F) < (int)(v79 ^ 0x1F)) ) - { - if ( v181 != v171 ) - { - v111 = __lshift_D2A(v77, 1); - --v186; - --v181; - v188 = (size_t)v111; - __Bfree_D2A(v75); - __Bfree_D2A(v76); -LABEL_251: - v151 = 0; - v149 = __trailz_D2A(v188); - goto LABEL_180; - } - --v185; - v151 = v162; - } - } - } - else - { - v107 = __sum_D2A((int *)v188, v75); - v108 = v107[4]; - v188 = (size_t)v107; - if ( v76[4] <= v108 - 1 - || (_BitScanReverse(&v109, v107[v108 + 4]), - _BitScanReverse((unsigned int *)&v108, v76[v108 + 4]), - (v108 ^ 0x1F) > (int)(v109 ^ 0x1F)) ) - { - if ( v151 ) - { - v110 = ++v185 == Val; - v151 = !v110; - } - else - { - __rshift_D2A((int)v107, 1); - ++v186; - ++v181; - v168 = 0; - } - } - } - __Bfree_D2A(v75); - __Bfree_D2A(v76); - if ( v149 ) - goto LABEL_62; - if ( v186 + v185 == v169 && v168 ) - { - v80 = v155 * 5.0e-16; - v81 = v165 - 0.5; - if ( -v80 <= v81 ) - { - if ( v81 > v80 && 1.0 - v80 > v165 ) - { -LABEL_61: - v184 |= v179; - goto LABEL_62; - } - } - else if ( v165 > v80 ) - { - goto LABEL_61; - } - } - if ( !v151 ) - goto LABEL_251; -LABEL_180: - __Bfree_D2A(v56); - __Bfree_D2A(v144); - __Bfree_D2A(v141); - __Bfree_D2A(v69); - } - } - v148 = v8; - v38 = 1; - v39 = decimal_point[1]; - while ( v11[v38] == v39 ) - { - v39 = decimal_point[++v38]; - if ( !v39 ) - { - v82 = v38; - goto LABEL_182; - } - } - v8 = v148; - } - v147 = v9; - v13 = 0; - i = 0; - v150 = 0; - goto LABEL_20; - } -LABEL_12: - result = 6; - v184 = 6; - if ( !a2 ) - return result; - *a2 = a1; - return v184; - default: - v173 = 0; - goto LABEL_4; - } - } -} -// 514E80: using guessed type int fivesbits[23]; -// 5150F8: using guessed type double dbl_5150F8[4]; -// 515140: using guessed type double __tens_D2A[24]; -// 515200: using guessed type double __tinytens_D2A[4]; -// 515240: using guessed type double __bigtens_D2A[4]; - -//----- (004383D0) -------------------------------------------------------- -int *__cdecl __sum_D2A(int *a1, int *a2) -{ - int *v2; // esi - int *v3; // ebx - unsigned int *v4; // ebp - int *v5; // eax - int v6; // edi - int *v7; // ecx - unsigned int *v8; // edi - unsigned int v9; // esi - unsigned int v10; // eax - unsigned int v11; // ebx - unsigned int v12; // edx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // edi - unsigned int *v16; // ebx - char *i; // edx - unsigned int v18; // ecx - unsigned int v19; // eax - unsigned int v20; // ecx - int *v22; // ebx - unsigned int v23; // [esp+18h] [ebp-34h] - int *v24; // [esp+1Ch] [ebp-30h] - int v25; // [esp+20h] [ebp-2Ch] - int v26; // [esp+24h] [ebp-28h] - int *v27; // [esp+28h] [ebp-24h] - int *v28; // [esp+2Ch] [ebp-20h] - - v2 = a2; - v3 = a1; - if ( a1[4] < a2[4] ) - { - v3 = a2; - v2 = a1; - } - v4 = (unsigned int *)(v3 + 5); - v5 = __Balloc_D2A(v3[1]); - v6 = v3[4]; - v27 = v3 + 5; - v7 = v5 + 5; - v24 = v5; - v5[4] = v6; - v28 = v5 + 5; - v26 = v2[4]; - v23 = (unsigned int)&v5[v26 + 5]; - v25 = v6; - v8 = (unsigned int *)(v2 + 5); - v9 = 0; - do - { - v10 = *v4; - v11 = *v8; - ++v4; - ++v8; - ++v7; - v12 = v9 + (unsigned __int16)v10 + (unsigned __int16)v11; - *((_WORD *)v7 - 2) = v12; - v13 = HIWORD(v12) + HIWORD(v11) + HIWORD(v10); - *((_WORD *)v7 - 1) = v13; - v9 = HIWORD(v13); - } - while ( v23 > (unsigned int)v7 ); - v14 = 4 * ((v23 - (unsigned int)v24 - 21) >> 2) + 4; - if ( v23 < (unsigned int)v24 + 21 ) - v14 = 4; - v15 = v23 + 4 * (v25 - v26); - v16 = (unsigned int *)((char *)v27 + v14); - for ( i = (char *)v28 + v14; v15 > (unsigned int)i; v9 = HIWORD(v20) ) - { - v18 = *v16; - i += 4; - ++v16; - v19 = v9 + (unsigned __int16)v18; - *((_WORD *)i - 2) = v19; - v20 = HIWORD(v19) + HIWORD(v18); - *((_WORD *)i - 1) = v20; - } - if ( v9 ) - { - if ( v25 == v24[2] ) - { - v22 = __Balloc_D2A(v24[1] + 1); - memcpy(v22 + 3, v24 + 3, 4 * v24[4] + 8); - __Bfree_D2A(v24); - v24 = v22; - v25 = v22[4]; - } - v24[4] = v25 + 1; - v24[v25 + 5] = 1; - } - return v24; -} - -//----- (00438560) -------------------------------------------------------- -unsigned int __usercall __m16m@(unsigned __int16 a1@, int a2@, int a3@) -{ - int v3; // edi - unsigned __int16 *v4; // ecx - char *v5; // edx - unsigned int result; // eax - int v7; // eax - unsigned int v8; // eax - unsigned int v9; // ebx - int v10; // ebp - unsigned int v11; // eax - char v13[10]; // [esp+16h] [ebp-1Eh] BYREF - int v14; // [esp+20h] [ebp-14h] BYREF - - v3 = a1; - v4 = (unsigned __int16 *)(a2 + 16); - v14 = 0; - v5 = (char *)&v14 + 2; - do - { - while ( 1 ) - { - v7 = *v4; - v5 -= 2; - --v4; - if ( (_WORD)v7 ) - break; - result = 0; - *((_WORD *)v5 - 1) = 0; - if ( v5 == v13 ) - goto LABEL_5; - } - v8 = v3 * v7; - v9 = *((unsigned __int16 *)v5 + 1) + (unsigned __int16)v8; - v10 = *(unsigned __int16 *)v5; - *((_WORD *)v5 + 1) = v9; - v11 = HIWORD(v9) + v10 + HIWORD(v8); - *(_WORD *)v5 = v11; - result = HIWORD(v11); - *((_WORD *)v5 - 1) = result; - } - while ( v5 != v13 ); -LABEL_5: - *(_DWORD *)(a3 + 4) = *(_DWORD *)v5; - *(_DWORD *)(a3 + 8) = *((_DWORD *)v5 + 1); - *(_DWORD *)(a3 + 12) = *((_DWORD *)v5 + 2); - *(_WORD *)(a3 + 16) = *((_WORD *)v5 + 6); - return result; -} - -//----- (004385F0) -------------------------------------------------------- -BOOL __usercall __eshift_part_0@(__int16 *a1@, int a2@) -{ - int v2; // esi - __int16 *v4; // ebp - __int16 *v5; // eax - int v6; // esi - __int16 *Src; // edi - __int16 *v8; // edi - __int16 *i; // ecx - __int16 *v10; // ebx - int v11; // edx - __int16 v12; // ax - __int16 *v14; // edx - __int16 v15; // di - unsigned __int16 v16; // ax - __int16 v17; // bp - int v18; // ecx - __int16 *v19; // edx - unsigned __int16 v20; // bp - __int16 *v21; // edi - __int16 *v22; // eax - __int16 v23; // dx - unsigned int v24; // eax - int v25; // esi - unsigned __int16 v26; // ax - int v27; // edi - __int16 *v28; // ecx - int v29; // edx - __int16 v30; // ax - __int16 v31; // cx - __int16 *v32; // edx - unsigned __int16 v33; // ax - __int16 v34; // bp - char v35; // [esp+14h] [ebp-28h] - int v36; // [esp+14h] [ebp-28h] - __int16 *v37; // [esp+14h] [ebp-28h] - unsigned __int16 v38; // [esp+1Ah] [ebp-22h] - __int16 *v39; // [esp+1Ch] [ebp-20h] - - v2 = a2; - if ( a2 < 0 ) - { - v18 = -a2; - v36 = -a2; - if ( a2 >= -15 ) - { - if ( a2 >= -7 ) - { - v21 = a1 + 2; - v38 = 0; - goto LABEL_28; - } - v26 = 0; - v21 = a1 + 2; - } - else - { - v19 = a1 + 8; - v20 = 0; - v21 = a1 + 2; - do - { - v37 = v19; - v20 |= a1[8]; - v22 = v19; - do - { - v23 = *--v22; - v22[1] = v23; - } - while ( v22 != v21 ); - v18 -= 16; - v19 = v37; - a1[2] = 0; - } - while ( v18 > 15 ); - v38 = v20; - v24 = -((-16 - v2) & 0xFFFFFFF0); - if ( v2 >= -15 ) - v24 = 0; - v25 = -16 - v2 + v24; - v26 = v20; - v36 = v25; - if ( v25 <= 7 ) - { -LABEL_27: - if ( !v36 ) - return v38 != 0; -LABEL_28: - v39 = v21; - v27 = v38; - do - { - v28 = v39; - v29 = 0; - v38 = v27 | a1[8] & 1; - v27 |= a1[8] & 1; - do - { - if ( (*v28 & 1) != 0 ) - v29 |= 1u; - v30 = (unsigned __int16)*v28 >> 1; - if ( (v29 & 2) != 0 ) - v30 |= 0x8000u; - ++v28; - v29 *= 2; - *(v28 - 1) = v30; - } - while ( v28 != a1 + 9 ); - --v36; - } - while ( v36 ); - return v38 != 0; - } - } - v31 = 0; - v38 = v26 | *((unsigned __int8 *)a1 + 16); - v32 = v21; - do - { - v33 = *v32; - v34 = v31; - ++v32; - v31 = v33 << 8; - *(v32 - 1) = v34 | HIBYTE(v33); - } - while ( v32 != a1 + 9 ); - v36 -= 8; - goto LABEL_27; - } - v4 = a1 + 2; - v5 = a1 + 3; - if ( a2 > 15 ) - { - v35 = a2; - v6 = a2; - Src = v5; - do - { - v6 -= 16; - memmove(v4, Src, 0xCu); - a1[8] = 0; - } - while ( v6 > 15 ); - v2 = v35 & 0xF; - } - if ( v2 > 7 ) - { - v14 = a1 + 8; - v15 = 0; - do - { - v16 = *v14; - v17 = v15; - --v14; - v15 = HIBYTE(v16); - v14[1] = v17 | (v16 << 8); - } - while ( v14 != a1 + 1 ); - v2 -= 8; - } - v8 = a1 + 8; - for ( i = a1 + 1; v2; --v2 ) - { - v10 = v8; - v11 = 0; - do - { - if ( *v10 < 0 ) - v11 |= 1u; - v12 = 2 * *v10; - if ( (v11 & 2) != 0 ) - v12 |= 1u; - --v10; - v11 *= 2; - v10[1] = v12; - } - while ( v10 != i ); - } - return 0; -} - -//----- (00438830) -------------------------------------------------------- -__int16 *__cdecl __emovi(int a1, int a2) -{ - __int16 *result; // eax - __int16 v3; // dx - int v4; // edx - __int16 v5; // di - int v6; // edx - int v7; // edx - __int16 v8; // bx - - *(_WORD *)a2 = *(__int16 *)(a1 + 10) >> 15; - result = (__int16 *)(a1 + 8); - v3 = *(_WORD *)(a1 + 10) & 0x7FFF; - *(_WORD *)(a2 + 2) = v3; - if ( v3 == 0x7FFF ) - { - if ( (*(_WORD *)(a1 + 10) & 0x7FFF) == 0x7FFF ) - { - v6 = a1; - while ( 1 ) - { - v6 += 2; - if ( *(_WORD *)(v6 - 2) ) - break; - if ( a1 + 10 == v6 ) - goto LABEL_6; - } - v7 = a2 + 6; - *(_WORD *)(a2 + 4) = 0; - do - { - v8 = *result--; - v7 += 2; - *(_WORD *)(v7 - 2) = v8; - } - while ( (__int16 *)(a1 - 4) != result ); - } - else - { -LABEL_6: - *(_DWORD *)(a2 + 4) = 0; - *(_DWORD *)(a2 + 8) = 0; - *(_DWORD *)(a2 + 12) = 0; - *(_WORD *)(a2 + 16) = 0; - } - } - else - { - v4 = a2 + 6; - *(_WORD *)(a2 + 4) = 0; - do - { - v5 = *result--; - v4 += 2; - *(_WORD *)(v4 - 2) = v5; - } - while ( result != (__int16 *)(a1 - 2) ); - *(_WORD *)(a2 + 16) = 0; - } - return result; -} - -//----- (00438900) -------------------------------------------------------- -unsigned int __cdecl __eaddm(int a1, int a2) -{ - int v2; // edx - unsigned int v3; // ecx - unsigned int result; // eax - - v2 = 7; - v3 = 0; - do - { - result = v3 + *(unsigned __int16 *)(a2 + 2 * v2 + 2) + *(unsigned __int16 *)(a1 + 2 * v2 + 2); - *(_WORD *)(a2 + 2 * v2 + 2) = result; - v3 = HIWORD(result) & 1; - --v2; - } - while ( v2 ); - return result; -} - -//----- (00438940) -------------------------------------------------------- -unsigned int __cdecl __esubm(int a1, int a2) -{ - int v2; // edx - unsigned int v3; // ecx - unsigned int result; // eax - - v2 = 7; - v3 = 0; - do - { - result = *(unsigned __int16 *)(a2 + 2 * v2 + 2) - v3 - *(unsigned __int16 *)(a1 + 2 * v2 + 2); - *(_WORD *)(a2 + 2 * v2 + 2) = result; - v3 = HIWORD(result) & 1; - --v2; - } - while ( v2 ); - return result; -} - -//----- (00438980) -------------------------------------------------------- -BOOL __cdecl __edivm(int a1, int *a2) -{ - int v2; // edx - int v3; // eax - int *v4; // ecx - __int16 v5; // ax - unsigned int v6; // eax - unsigned __int16 v7; // ax - int v8; // eax - unsigned __int16 v9; // bx - int v10; // edx - int v11; // ecx - unsigned int v12; // eax - int *v13; // esi - __int16 v14; // ax - int v16; // ecx - char *v17; // edx - int v18; // esi - int v19; // ebx - int v20; // eax - unsigned int v21; // ecx - int v22; // eax - unsigned __int16 v23; // bx - int v24; // ecx - char *v25; // edx - int v26; // eax - unsigned int v27; // ecx - __int16 *v28; // [esp+14h] [ebp-68h] - __int16 v29; // [esp+24h] [ebp-58h] - unsigned int v30; // [esp+28h] [ebp-54h] - int v31; // [esp+3Ah] [ebp-42h] - int v32; // [esp+3Eh] [ebp-3Eh] BYREF - int v33; // [esp+42h] [ebp-3Ah] - int v34; // [esp+46h] [ebp-36h] - __int16 v35; // [esp+4Ah] [ebp-32h] - __int16 v36; // [esp+4Ch] [ebp-30h] BYREF - char v37[14]; // [esp+4Eh] [ebp-2Eh] BYREF - char v38[32]; // [esp+5Ch] [ebp-20h] BYREF - - v2 = 0; - v32 = 0; - v33 = 0; - v3 = *a2; - v34 = 0; - v35 = 0; - v4 = a2 + 1; - v31 = v3; - do - { - if ( (*(_WORD *)v4 & 1) != 0 ) - v2 |= 1u; - v5 = *(_WORD *)v4 >> 1; - if ( (v2 & 2) != 0 ) - v5 |= 0x8000u; - v4 = (int *)((char *)v4 + 2); - v2 *= 2; - *((_WORD *)v4 - 1) = v5; - } - while ( (int *)((char *)a2 + 18) != v4 ); - v30 = *(unsigned __int16 *)(a1 + 6); - v28 = (__int16 *)&v32; - do - { - v6 = *((unsigned __int16 *)a2 + 3) + (*((unsigned __int16 *)a2 + 2) << 16); - if ( 0xFFFF * v30 < v6 ) - { - v7 = -1; - v29 = -1; - } - else - { - v29 = v6 / v30; - v7 = v29; - } - __m16m(v7, a1, (int)&v36); - v8 = 2; - while ( 1 ) - { - v9 = *((_WORD *)a2 + v8); - if ( *(_WORD *)&v37[2 * v8 - 2] != v9 ) - break; - if ( ++v8 == 9 ) - goto LABEL_13; - } - if ( *(unsigned __int16 *)&v37[2 * v8 - 2] > v9 ) - { - v16 = 0; - v17 = v38; - v18 = a1 + 16; - v19 = a1 + 16; - do - { - v20 = *(unsigned __int16 *)v17; - v17 -= 2; - v19 -= 2; - v21 = v20 - v16 - *(unsigned __int16 *)(v19 + 2); - *((_WORD *)v17 + 1) = v21; - v16 = HIWORD(v21) & 1; - } - while ( v17 != v37 ); - v22 = 2; - while ( 1 ) - { - v23 = *((_WORD *)a2 + v22); - if ( *(_WORD *)&v37[2 * v22 - 2] != v23 ) - break; - if ( ++v22 == 9 ) - goto LABEL_26; - } - if ( *(unsigned __int16 *)&v37[2 * v22 - 2] <= v23 ) - { -LABEL_26: - --v29; - goto LABEL_13; - } - v29 -= 2; - v24 = 0; - v25 = v38; - do - { - v26 = *(unsigned __int16 *)v25; - v25 -= 2; - v18 -= 2; - v27 = v26 - v24 - *(unsigned __int16 *)(v18 + 2); - *((_WORD *)v25 + 1) = v27; - v24 = HIWORD(v27) & 1; - } - while ( v25 != v37 ); - } -LABEL_13: - v10 = 7; - v11 = 0; - do - { - v12 = *((unsigned __int16 *)a2 + v10 + 1) - v11 - *(unsigned __int16 *)&v37[2 * v10]; - *((_WORD *)a2 + v10 + 1) = v12; - v11 = HIWORD(v12) & 1; - --v10; - } - while ( v10 ); - *v28 = v29; - memmove(a2 + 1, (char *)a2 + 6, 0xCu); - ++v28; - *((_WORD *)a2 + 8) = 0; - } - while ( v28 != &v36 ); - v13 = a2 + 1; - v14 = 0; - do - { - v13 = (int *)((char *)v13 + 2); - v14 |= *((_WORD *)v13 - 1); - } - while ( (int *)((char *)a2 + 18) != v13 ); - *a2 = v31; - a2[1] = v32; - a2[2] = v33; - a2[3] = v34; - *((_WORD *)a2 + 8) = v35; - return v14 != 0; -} -// 438980: using guessed type _WORD var_30[1]; - -//----- (00438C20) -------------------------------------------------------- -int __cdecl __emulm(int a1, int a2) -{ - unsigned __int16 v2; // bp - int v3; // edx - unsigned __int16 *v4; // ebx - unsigned __int16 v5; // ax - int v6; // esi - __int16 *v7; // ecx - char *v8; // edx - int v9; // edi - int v10; // eax - unsigned int v11; // esi - char v13[2]; // [esp+2Ch] [ebp-40h] BYREF - char v14; // [esp+2Eh] [ebp-3Eh] BYREF - char v15; // [esp+3Ch] [ebp-30h] BYREF - int v16; // [esp+3Eh] [ebp-2Eh] - int Src; // [esp+42h] [ebp-2Ah] BYREF - int v18; // [esp+46h] [ebp-26h] - int v19; // [esp+4Ah] [ebp-22h] - __int16 v20; // [esp+4Eh] [ebp-1Eh] BYREF - - v2 = 0; - Src = 0; - v18 = 0; - v3 = *(_DWORD *)a2; - v4 = (unsigned __int16 *)(a1 + 16); - v19 = 0; - v16 = v3; - v20 = 0; - do - { - v5 = *v4--; - if ( v5 ) - { - v6 = 0; - __m16m(v5, a2, (int)v13); - v7 = &v20; - v8 = &v15; - do - { - v9 = (unsigned __int16)*v7; - v10 = *(unsigned __int16 *)v8; - v8 -= 2; - --v7; - v11 = v6 + v9 + v10; - v7[1] = v11; - v6 = HIWORD(v11) & 1; - } - while ( v8 != &v14 ); - } - v2 |= v20; - memmove((char *)&Src + 2, &Src, 0xCu); - LOWORD(Src) = 0; - } - while ( v4 != (unsigned __int16 *)(a1 + 4) ); - *(_DWORD *)a2 = v16; - *(_DWORD *)(a2 + 4) = Src; - *(_DWORD *)(a2 + 8) = v18; - *(_DWORD *)(a2 + 12) = v19; - *(_WORD *)(a2 + 16) = v20; - return v2; -} -// 438C20: using guessed type char var_40[2]; - -//----- (00438D30) -------------------------------------------------------- -__int16 *__cdecl __toe64(_WORD *a1, int a2) -{ - int v2; // edx - __int16 *result; // eax - int v4; // edx - __int16 v5; // bx - __int16 v6; // bx - _WORD *v7; // ebx - __int16 v8; // ax - _WORD *v9; // edx - __int16 *v10; // ebx - - v2 = (unsigned __int16)a1[1]; - result = a1 + 3; - if ( (a1[1] & 0x7FFF) == 0x7FFF ) - { - v9 = a1 + 3; - do - { - if ( *v9 ) - { - *(_DWORD *)a2 = 0; - *(_DWORD *)(a2 + 4) = -1073741824; - *(_DWORD *)(a2 + 8) = 0x7FFF; - return result; - } - ++v9; - } - while ( a1 + 9 != v9 ); - *(_WORD *)(a2 + 10) = 0; - v4 = a2 + 6; - if ( *a1 ) - goto LABEL_8; - goto LABEL_4; - } - if ( !(_WORD)v2 ) - { - v7 = a1 + 2; - do - { - if ( (*v7 & 1) != 0 ) - v2 |= 1u; - v8 = *v7 >> 1; - if ( (v2 & 2) != 0 ) - v8 |= 0x8000u; - ++v7; - v2 *= 2; - *(v7 - 1) = v8; - } - while ( a1 + 9 != v7 ); - result = a1 + 3; - *(_WORD *)(a2 + 10) = 0; - v4 = a2 + 6; - if ( !*a1 ) - goto LABEL_4; -LABEL_8: - v5 = a1[1] | 0x8000; - goto LABEL_5; - } - *(_WORD *)(a2 + 10) = 0; - v4 = a2 + 6; - if ( *a1 ) - goto LABEL_8; -LABEL_4: - v5 = a1[1]; -LABEL_5: - *(_WORD *)(a2 + 8) = v5; - if ( (a1[1] & 0x7FFF) == 0x7FFF ) - { - v10 = result; - while ( !*v10 ) - { - if ( a1 + 9 == ++v10 ) - { - *(_DWORD *)a2 = 0; - *(_DWORD *)(a2 + 4) = 0x80000000; - return result; - } - } - } - do - { - v6 = *result++; - v4 -= 2; - *(_WORD *)(v4 + 2) = v6; - } - while ( result != a1 + 7 ); - return result; -} - -//----- (00438E80) -------------------------------------------------------- -int __cdecl __ecmp(int a1, int a2) -{ - int v2; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // edx - unsigned __int16 v8; // si - unsigned __int16 v9; // cx - __int16 v10[9]; // [esp+14h] [ebp-30h] BYREF - __int16 v11[15]; // [esp+26h] [ebp-1Eh] BYREF - - if ( (*(_WORD *)(a1 + 10) & 0x7FFF) == 0x7FFF ) - { - v4 = a1; - while ( 1 ) - { - v4 += 2; - if ( *(_WORD *)(v4 - 2) ) - return -2; - if ( a1 + 10 == v4 ) - { - if ( (*(_WORD *)(a2 + 10) & 0x7FFF) != 0x7FFF ) - goto LABEL_3; - goto LABEL_13; - } - } - } - if ( (*(_WORD *)(a2 + 10) & 0x7FFF) == 0x7FFF ) - { -LABEL_13: - v5 = a2; - do - { - v5 += 2; - if ( *(_WORD *)(v5 - 2) ) - return -2; - } - while ( a2 + 10 != v5 ); - } -LABEL_3: - __emovi(a1, (int)v10); - __emovi(a2, (int)v11); - if ( v10[0] == v11[0] ) - { - v6 = 1; - v7 = v10[0] == 0 ? 1 : -1; - while ( 1 ) - { - v8 = v10[v6++]; - v9 = v10[v6 + 8]; - if ( v8 != v9 ) - break; - if ( v6 == 8 ) - return 0; - } - if ( v8 <= v9 ) - return v10[0] == 0 ? 1 : -1; - return v7; - } - else - { - v2 = 1; - while ( !v10[v2] && !v11[v2] ) - { - if ( ++v2 == 8 ) - return 0; - } - return v10[0] == 0 ? 1 : -1; - } -} -// 438E80: using guessed type __int16 var_1E[15]; - -//----- (00438FC0) -------------------------------------------------------- -BOOL __cdecl __eshift(__int16 *a1, int a2) -{ - return a2 && __eshift_part_0(a1, a2); -} - -//----- (00438FE0) -------------------------------------------------------- -int __cdecl __enormlz(_WORD *a1) -{ - unsigned __int16 v1; // ax - __int16 v2; // dx - int v3; // ecx - __int16 *j; // eax - unsigned __int16 *v5; // edx - __int16 v6; // si - unsigned __int16 v7; // ax - __int16 v8; // di - __int16 *v9; // esi - int v10; // edx - __int16 v11; // ax - unsigned __int16 *v13; // esi - int v14; // edx - unsigned __int16 v15; // ax - unsigned __int16 *v16; // ecx - __int16 i; // dx - __int16 v18; // si - - v1 = a1[2]; - if ( v1 ) - { - v3 = 0; - if ( (v1 & 0xFF00) != 0 ) - { - v16 = a1 + 2; - for ( i = 0; ; i = v18 ) - { - ++v16; - v18 = v1 << 8; - *(v16 - 1) = i | HIBYTE(v1); - if ( a1 + 9 == v16 ) - break; - v1 = *v16; - } - v1 = a1[2]; - v3 = -8; - } - while ( v1 ) - { - v13 = a1 + 2; - v14 = 0; - while ( 1 ) - { - if ( (v1 & 1) != 0 ) - v14 |= 1u; - v15 = v1 >> 1; - if ( (v14 & 2) != 0 ) - v15 |= 0x8000u; - ++v13; - v14 *= 2; - *(v13 - 1) = v15; - if ( a1 + 9 == v13 ) - break; - v1 = *v13; - } - if ( --v3 == -81 ) - break; - v1 = a1[2]; - } - } - else - { - v2 = a1[3]; - v3 = 0; - if ( v2 >= 0 ) - { - if ( v2 ) - { -LABEL_9: - while ( (v2 & 0xFF00) == 0 ) - { - v5 = a1 + 8; - v6 = 0; - do - { - v7 = *v5; - v8 = v6; - --v5; - v6 = HIBYTE(v7); - v5[1] = v8 | (v7 << 8); - } - while ( v5 != a1 + 1 ); - v2 = a1[3]; - v3 += 8; - } - while ( v2 >= 0 ) - { - v9 = a1 + 8; - v10 = 0; - do - { - if ( *v9 < 0 ) - v10 |= 1u; - v11 = 2 * *v9; - if ( (v10 & 2) != 0 ) - v11 |= 1u; - --v9; - v10 *= 2; - v9[1] = v11; - } - while ( a1 + 1 != v9 ); - if ( ++v3 > 96 ) - break; - v2 = a1[3]; - } - } - else - { - while ( 1 ) - { - for ( j = a1 + 3; ; v2 = *j ) - { - *(++j - 2) = v2; - if ( a1 + 9 == j ) - break; - } - v3 += 16; - a1[8] = 0; - if ( v3 == 96 ) - break; - v2 = a1[3]; - if ( v2 ) - goto LABEL_9; - } - } - } - } - return v3; -} - -//----- (00439190) -------------------------------------------------------- -__int16 __cdecl __emdnorm(int a1, int a2, int a3, int a4, int a5, int a6) -{ - int v6; // eax - int v7; // esi - bool v8; // dl - __int16 v9; // ax - bool v10; // zf - int v11; // eax - int v12; // edx - int v13; // ecx - unsigned int v14; // eax - __int16 *v15; // ecx - int v16; // edx - __int16 v17; // ax - _WORD *v18; // ecx - int v19; // edx - _WORD *v20; // ecx - int v21; // edx - __int16 v22; // ax - bool v24; // [esp+13h] [ebp-49h] - __int16 *v25; // [esp+14h] [ebp-48h] - int v26; // [esp+18h] [ebp-44h] - int v27; // [esp+1Ch] [ebp-40h] - int v28[3]; // [esp+2Eh] [ebp-2Eh] - int v29; // [esp+3Ah] [ebp-22h] - __int16 v30; // [esp+3Eh] [ebp-1Eh] - - v30 = 0; - v29 = 0x10000; - HIWORD(v28[0]) = 0; - v28[1] = 0; - v28[2] = 0; - v6 = __enormlz((_WORD *)a1); - v7 = a4 - v6; - if ( v6 > 80 && v7 <= 32766 ) - goto LABEL_19; - if ( v7 >= 0 ) - { - if ( !a5 ) - goto LABEL_9; - v8 = v7 <= 0 && a6 != 80; - v24 = v8; - if ( a6 != 64 ) - goto LABEL_6; - v29 = 1; - v25 = (__int16 *)(a1 + 14); - if ( !v8 ) - { - v26 = 6; - v9 = *(_WORD *)(a1 + 14); - goto LABEL_46; - } - v26 = 6; - v27 = 7; -LABEL_52: - v20 = (_WORD *)(a1 + 4); - v21 = 0; - a2 |= *(_WORD *)(a1 + 16) & 1; - do - { - if ( (*v20 & 1) != 0 ) - v21 |= 1u; - v22 = *v20 >> 1; - if ( (v21 & 2) != 0 ) - v22 |= 0x8000u; - ++v20; - v21 *= 2; - *(v20 - 1) = v22; - } - while ( v20 != (_WORD *)(a1 + 18) ); - v9 = *v25; - if ( a6 > 79 || v27 != 7 ) - { -LABEL_49: - *v25 = 0; - if ( v9 >= 0 ) - goto LABEL_27; - goto LABEL_22; - } -LABEL_46: - if ( *(_WORD *)(a1 + 16) ) - v9 |= 1u; - *(_WORD *)(a1 + 16) = 0; - goto LABEL_49; - } - if ( v7 < -80 ) - { -LABEL_19: - *(_DWORD *)(a1 + 2) = 0; - *(_DWORD *)(a1 + 6) = 0; - *(_DWORD *)(a1 + 10) = 0; - *(_DWORD *)(a1 + 14) = 0; - return v6; - } - v10 = !__eshift_part_0((__int16 *)a1, a4 - v6); - v11 = 1; - if ( v10 ) - v11 = a2; - a2 = v11; - if ( !a5 ) - goto LABEL_35; - v24 = a6 != 80; - if ( a6 == 64 ) - { - v29 = 1; - v25 = (__int16 *)(a1 + 14); - v26 = 6; - v27 = 7; - goto LABEL_52; - } -LABEL_6: - v25 = (__int16 *)(a1 + 16); - if ( v24 ) - { - v26 = 7; - v27 = 8; - goto LABEL_52; - } - v9 = *(_WORD *)(a1 + 16); - *(_WORD *)(a1 + 16) = 0; - if ( v9 >= 0 ) - goto LABEL_8; - v26 = 7; -LABEL_22: - if ( v9 != (__int16)0x8000 ) - goto LABEL_25; - if ( a2 ) - { - if ( !a3 ) - { -LABEL_25: - v12 = 7; - v13 = 0; - do - { - v14 = v13 + *(unsigned __int16 *)(a1 + 2 * v12 + 2) + *((unsigned __int16 *)v28 + v12 + 1); - *(_WORD *)(a1 + 2 * v12 + 2) = v14; - v13 = HIWORD(v14) & 1; - --v12; - } - while ( v12 ); - } - } - else if ( (*(_BYTE *)(a1 + 2 * v26) & 1) != 0 ) - { - goto LABEL_25; - } -LABEL_27: - if ( !v24 ) - { -LABEL_8: - LOWORD(v6) = *(_WORD *)(a1 + 4); - if ( !(_WORD)v6 ) - goto LABEL_9; - goto LABEL_36; - } - v15 = (__int16 *)(a1 + 16); - v16 = 0; - do - { - if ( *v15 < 0 ) - v16 |= 1u; - v17 = 2 * *v15; - if ( (v16 & 2) != 0 ) - v17 |= 1u; - --v15; - v16 *= 2; - v15[1] = v17; - } - while ( v15 != (__int16 *)(a1 + 2) ); - LOWORD(v6) = *(_WORD *)(a1 + 4); - if ( (_WORD)v6 ) - { -LABEL_36: - v18 = (_WORD *)(a1 + 4); - v19 = 0; - while ( 1 ) - { - if ( (v6 & 1) != 0 ) - v19 |= 1u; - LOWORD(v6) = (unsigned __int16)v6 >> 1; - if ( (v19 & 2) != 0 ) - LOWORD(v6) = v6 | 0x8000; - ++v18; - v19 *= 2; - *(v18 - 1) = v6; - if ( (_WORD *)(a1 + 18) == v18 ) - break; - LOWORD(v6) = *v18; - } - ++v7; -LABEL_9: - *(_WORD *)(a1 + 16) = 0; - if ( v7 > 32766 ) - { - *(_DWORD *)(a1 + 4) = 0; - *(_WORD *)(a1 + 2) = 0x7FFF; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - return v6; - } - goto LABEL_10; - } -LABEL_35: - *(_WORD *)(a1 + 16) = 0; -LABEL_10: - LOWORD(v6) = 0; - if ( v7 < 0 ) - LOWORD(v7) = 0; - *(_WORD *)(a1 + 2) = v7; - return v6; -} - -//----- (00439510) -------------------------------------------------------- -int __cdecl __emovo(_WORD *a1, int a2) -{ - int result; // eax - __int16 v3; // dx - __int16 *v4; // edx - __int16 v5; // bx - _WORD *v6; // ebx - - result = a2; - v3 = a1[1]; - if ( *a1 ) - v3 = a1[1] | 0x8000; - *(_WORD *)(a2 + 10) = v3; - if ( a1[1] == 0x7FFF ) - { - v6 = a1 + 3; - while ( !*v6 ) - { - if ( a1 + 9 == ++v6 ) - { - *(_DWORD *)a2 = 0; - *(_DWORD *)(a2 + 4) = 0; - *(_WORD *)(a2 + 8) = 0; - *(_WORD *)(a2 + 10) = v3 | 0x7FFF; - return result; - } - } - *(_DWORD *)a2 = 0; - *(_DWORD *)(a2 + 4) = 0; - *(_DWORD *)(a2 + 8) = 2147467264; - } - else - { - v4 = a1 + 3; - result = a2 + 8; - do - { - v5 = *v4++; - result -= 2; - *(_WORD *)(result + 2) = v5; - } - while ( v4 != a1 + 8 ); - } - return result; -} - -//----- (004395A0) -------------------------------------------------------- -__int16 __cdecl __emul(int a1, int a2, int a3) -{ - int v3; // edx - int v4; // ebx - __int16 v5; // bp - int v6; // ecx - int v7; // eax - int v8; // esi - int v9; // eax - _WORD *v10; // eax - int v11; // eax - int v12; // ecx - int v13; // eax - int v14; // eax - _WORD *v15; // eax - int v16; // ebx - int v17; // ebp - char *v18; // eax - int v19; // eax - unsigned __int16 v20; // cx - unsigned int v21; // eax - unsigned int v22; // edx - bool v23; // zf - __int16 v24; // ax - char *v25; // eax - int v26; // eax - __int16 v28; // [esp+2Ch] [ebp-50h] - __int16 v29; // [esp+2Eh] [ebp-4Eh] - __int16 v30; // [esp+3Ch] [ebp-40h] BYREF - unsigned __int16 v31; // [esp+3Eh] [ebp-3Eh] - char v32; // [esp+40h] [ebp-3Ch] BYREF - char v33; // [esp+4Ch] [ebp-30h] BYREF - __int16 v34; // [esp+4Eh] [ebp-2Eh] BYREF - unsigned __int16 v35; // [esp+50h] [ebp-2Ch] - char v36; // [esp+52h] [ebp-2Ah] BYREF - char v37; // [esp+5Eh] [ebp-1Eh] BYREF - - v3 = a1; - v4 = a2; - v5 = *(_WORD *)(a1 + 10) & 0x7FFF; - if ( v5 == 0x7FFF ) - { - v12 = a1 + 10; - v13 = a1; - do - { - v13 += 2; - if ( *(_WORD *)(v13 - 2) ) - { - *(_DWORD *)a3 = *(_DWORD *)a1; - *(_DWORD *)(a3 + 4) = *(_DWORD *)(a1 + 4); - v11 = *(_DWORD *)(a1 + 8); - *(_DWORD *)(a3 + 8) = v11; - return v11; - } - } - while ( v13 != v12 ); - v29 = *(_WORD *)(a2 + 10); - v28 = v29 & 0x7FFF; - if ( (v29 & 0x7FFF) == 0x7FFF ) - goto LABEL_3; - goto LABEL_18; - } - v29 = *(_WORD *)(a2 + 10); - if ( (v29 & 0x7FFF) == 0x7FFF ) - { -LABEL_3: - v6 = a2 + 10; - v7 = a2; - do - { - v7 += 2; - if ( *(_WORD *)(v7 - 2) ) - { - *(_DWORD *)a3 = *(_DWORD *)a2; - *(_DWORD *)(a3 + 4) = *(_DWORD *)(a2 + 4); - v11 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a3 + 8) = v11; - return v11; - } - } - while ( v7 != v6 ); - v8 = 0; - if ( v5 != 0x7FFF ) - goto LABEL_7; - v12 = a1 + 10; - v28 = 0x7FFF; -LABEL_18: - v14 = a1; - while ( 1 ) - { - v14 += 2; - if ( *(_WORD *)(v14 - 2) ) - break; - if ( v14 == v12 ) - { - v15 = (_WORD *)(a2 + 2); - while ( !*v15 ) - { - if ( ++v15 == (_WORD *)(a2 + 16) ) - { -LABEL_13: - LOWORD(v11) = a3; - *(_DWORD *)a3 = 0; - *(_DWORD *)(a3 + 4) = 0; - *(_DWORD *)(a3 + 8) = 2147467264; - return v11; - } - } - if ( v28 != 0x7FFF ) - goto LABEL_41; - v8 = 1; - v6 = a2 + 10; - goto LABEL_7; - } - } - if ( v28 != 0x7FFF ) - goto LABEL_27; - v8 = 0; - v6 = a2 + 10; -LABEL_7: - v9 = a2; - while ( 1 ) - { - v9 += 2; - if ( *(_WORD *)(v9 - 2) ) - break; - if ( v9 == v6 ) - { - v10 = (_WORD *)(a1 + 2); - while ( !*v10 ) - { - if ( (_WORD *)(a1 + 16) == ++v10 ) - goto LABEL_13; - } - goto LABEL_33; - } - } - if ( !v8 ) - goto LABEL_27; -LABEL_33: - v28 = 0x7FFF; - if ( v5 == 0x7FFF ) - { - v12 = a1 + 10; -LABEL_41: - while ( 1 ) - { - v3 += 2; - if ( *(_WORD *)(v3 - 2) ) - break; - if ( v3 == v12 ) - goto LABEL_34; - } - v21 = 0; - } - else - { -LABEL_34: - v21 = (unsigned int)*(__int16 *)(a1 + 10) >> 31; - } - if ( v28 == 0x7FFF ) - { - while ( 1 ) - { - v4 += 2; - if ( *(_WORD *)(v4 - 2) ) - break; - if ( v4 == a2 + 10 ) - goto LABEL_36; - } - v22 = 0; - } - else - { -LABEL_36: - v22 = (unsigned int)v29 >> 31; - } - v23 = v22 == v21; - v24 = 0x8000; - if ( v23 ) - v24 = 0; - *(_DWORD *)a3 = 0; - LOWORD(v11) = v24 | 0x7FFF; - *(_DWORD *)(a3 + 4) = 0; - *(_WORD *)(a3 + 8) = 0; - *(_WORD *)(a3 + 10) = v11; - return v11; - } -LABEL_27: - __emovi(a1, (int)&v30); - __emovi(a2, (int)&v34); - v16 = v31; - v17 = v35; - if ( v31 ) - { - v20 = v35; -LABEL_52: - v25 = &v36; - if ( v20 ) - { -LABEL_56: - v26 = __emulm((int)&v30, (int)&v34); - __emdnorm((int)&v34, v26, 0, v16 + v17 - 16382, 64, 80); - v34 = -(v30 != v34); - LOWORD(v11) = __emovo(&v34, a3); - return v11; - } - while ( v25 != &v37 ) - { - v25 += 2; - if ( *((_WORD *)v25 - 1) ) - { - v17 -= __enormlz(&v34); - goto LABEL_56; - } - } - } - else - { - v18 = &v32; - while ( v18 != &v33 ) - { - v18 += 2; - if ( *((_WORD *)v18 - 1) ) - { - v19 = __enormlz(&v30); - v20 = v35; - v16 = -v19; - goto LABEL_52; - } - } - } - LOWORD(v11) = a3; - *(_DWORD *)a3 = 0; - *(_DWORD *)(a3 + 4) = 0; - *(_DWORD *)(a3 + 8) = 0; - return v11; -} - -//----- (00439950) -------------------------------------------------------- -int *__usercall __pformat_cvt@(unsigned int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7) -{ - char v10; // c2 - char v11; // c3 - char v12; // c0 - __int16 v13; // cx - int v14; // ebx - int v15; // eax - long double v17; // [esp+20h] [ebp-2Ch] BYREF - int v18; // [esp+2Ch] [ebp-20h] - int v19; // [esp+38h] [ebp-14h] BYREF - char *v20; // [esp+3Ch] [ebp-10h] BYREF - - *(_QWORD *)&v17 = a2; - HIDWORD(v17) = a3; - _FST7 = v17; - v18 = a4; - __asm { fxam } - if ( v12 ) - { - if ( !v10 ) - { - v19 = 4; - v14 = 0; - v15 = 0; - goto LABEL_7; - } - v19 = 3; - v13 = WORD4(v17); - v14 = 0; - } - else - { - v13 = WORD4(v17); - if ( v10 ) - { - if ( v11 ) - { - v19 = 2; - v14 = -16445; - } - else - { - v19 = 1; - v14 = (__int16)((WORD4(v17) & 0x7FFF) - 16446); - } - } - else - { - v19 = 0; - v14 = 0; - } - } - v15 = v13 & 0x8000; -LABEL_7: - *a7 = v15; - return __gdtoa(fpi_0_0, v14, (int *)&v17, &v19, a1, a5, a6, &v20); -} -// 439984: variable 'v12' is possibly undefined -// 439989: variable 'v10' is possibly undefined -// 439A0B: variable 'v11' is possibly undefined -// 50B13C: using guessed type int fpi_0_0[6]; - -//----- (00439A50) -------------------------------------------------------- -int __usercall __pformat_putc@(int a1@, int a2@) -{ - int v4; // edx - int v5; // eax - int result; // eax - - v4 = *(_DWORD *)(a2 + 4); - if ( (v4 & 0x4000) == 0 ) - { - v5 = *(_DWORD *)(a2 + 32); - if ( *(_DWORD *)(a2 + 36) <= v5 ) - goto LABEL_5; - } - if ( (v4 & 0x2000) == 0 ) - { - *(_BYTE *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 32)) = a1; - v5 = *(_DWORD *)(a2 + 32); -LABEL_5: - result = v5 + 1; - *(_DWORD *)(a2 + 32) = result; - return result; - } - fputc(a1, *(FILE **)a2); - result = *(_DWORD *)(a2 + 32) + 1; - *(_DWORD *)(a2 + 32) = result; - return result; -} - -//----- (00439AB0) -------------------------------------------------------- -int __usercall __pformat_wputchars@(int a1@, int a2@, int a3@) -{ - int v5; // eax - int result; // eax - signed int v7; // eax - char *v8; // ebp - char *v9; // esi - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // eax - int v15; // [esp+1Ch] [ebp-40h] - mbstate_t State; // [esp+28h] [ebp-34h] BYREF - char Dest[44]; // [esp+30h] [ebp-2Ch] BYREF - - wcrtomb(Dest, 0, &State); - v5 = *(_DWORD *)(a3 + 12); - if ( v5 >= 0 && a2 > v5 ) - a2 = *(_DWORD *)(a3 + 12); - result = *(_DWORD *)(a3 + 8); - if ( result <= a2 ) - { - *(_DWORD *)(a3 + 8) = -1; - goto LABEL_6; - } - v13 = result - a2; - *(_DWORD *)(a3 + 8) = v13; - if ( (*(_BYTE *)(a3 + 5) & 4) == 0 ) - { - *(_DWORD *)(a3 + 8) = v13 - 1; - do - { - __pformat_putc(32, a3); - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - } - while ( result ); -LABEL_6: - if ( a2 <= 0 ) - { - *(_DWORD *)(a3 + 8) = -2; - return result; - } - goto LABEL_7; - } - if ( a2 > 0 ) - { -LABEL_7: - v15 = a2; - while ( 1 ) - { - a1 += 2; - v7 = wcrtomb(Dest, *(_WORD *)(a1 - 2), &State); - if ( v7 <= 0 ) - goto LABEL_19; - v8 = &Dest[v7]; - v9 = Dest; - do - { - while ( 1 ) - { - v11 = *(_DWORD *)(a3 + 4); - ++v9; - if ( (v11 & 0x4000) == 0 ) - { - v10 = *(_DWORD *)(a3 + 32); - if ( *(_DWORD *)(a3 + 36) <= v10 ) - goto LABEL_11; - } - v12 = *(v9 - 1); - if ( (v11 & 0x2000) != 0 ) - break; - *(_BYTE *)(*(_DWORD *)a3 + *(_DWORD *)(a3 + 32)) = v12; - v10 = *(_DWORD *)(a3 + 32); -LABEL_11: - *(_DWORD *)(a3 + 32) = v10 + 1; - if ( v9 == v8 ) - goto LABEL_16; - } - fputc(v12, *(FILE **)a3); - ++*(_DWORD *)(a3 + 32); - } - while ( v9 != v8 ); -LABEL_16: - if ( !--v15 ) - { - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - if ( result > 0 ) - goto LABEL_18; - return result; - } - } - } - *(_DWORD *)(a3 + 8) = v13 - 1; - do - { -LABEL_18: - __pformat_putc(32, a3); -LABEL_19: - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - } - while ( result > 0 ); - return result; -} -// 439AB0: using guessed type char var_2C[44]; - -//----- (00439C10) -------------------------------------------------------- -int __usercall __pformat_putchars@(_BYTE *a1@, int a2@, int a3@) -{ - int v3; // edi - int v6; // eax - int result; // eax - int v8; // eax - _BYTE *v9; // edi - int v10; // edx - FILE *Stream; // ecx - int v12; // edx - int v13; // eax - int v14; // edx - - v3 = a2; - v6 = *(_DWORD *)(a3 + 12); - if ( v6 >= 0 && a2 > v6 ) - v3 = *(_DWORD *)(a3 + 12); - result = *(_DWORD *)(a3 + 8); - if ( result > v3 ) - { - v13 = result - v3; - *(_DWORD *)(a3 + 8) = v13; - v14 = v13; - v8 = *(_DWORD *)(a3 + 4); - if ( (v8 & 0x400) != 0 ) - { - if ( !v3 ) - { - *(_DWORD *)(a3 + 8) = v14 - 1; - goto LABEL_21; - } - goto LABEL_8; - } - *(_DWORD *)(a3 + 8) = v14 - 1; - do - { - __pformat_putc(32, a3); - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - } - while ( result ); - } - else - { - *(_DWORD *)(a3 + 8) = -1; - } - if ( !v3 ) - { - *(_DWORD *)(a3 + 8) = -2; - return result; - } - v8 = *(_DWORD *)(a3 + 4); -LABEL_8: - v9 = &a1[v3 - 1]; - while ( 1 ) - { - if ( (v8 & 0x4000) != 0 || (v10 = *(_DWORD *)(a3 + 32), *(_DWORD *)(a3 + 36) > v10) ) - { - Stream = *(FILE **)a3; - if ( (v8 & 0x2000) != 0 ) - fputc((char)*a1, Stream); - else - *((_BYTE *)&Stream->_ptr + *(_DWORD *)(a3 + 32)) = *a1; - v10 = *(_DWORD *)(a3 + 32); - } - *(_DWORD *)(a3 + 32) = v10 + 1; - if ( v9 == a1 ) - break; - v8 = *(_DWORD *)(a3 + 4); - ++a1; - } - while ( 1 ) - { - result = *(_DWORD *)(a3 + 8); - *(_DWORD *)(a3 + 8) = result - 1; - if ( result <= 0 ) - break; - v8 = *(_DWORD *)(a3 + 4); -LABEL_21: - if ( (v8 & 0x4000) != 0 || (v12 = *(_DWORD *)(a3 + 32), *(_DWORD *)(a3 + 36) > v12) ) - { - if ( (v8 & 0x2000) != 0 ) - fputc(32, *(FILE **)a3); - else - *(_BYTE *)(*(_DWORD *)a3 + *(_DWORD *)(a3 + 32)) = 32; - v12 = *(_DWORD *)(a3 + 32); - } - *(_DWORD *)(a3 + 32) = v12 + 1; - } - return result; -} - -//----- (00439D50) -------------------------------------------------------- -int __usercall __pformat_puts@(char *a1@, int a2@) -{ - char *String; // ebx - signed int MaxCount; // eax - int v5; // eax - - String = a1; - if ( !a1 ) - String = "(null)"; - MaxCount = *(_DWORD *)(a2 + 12); - if ( MaxCount < 0 ) - v5 = strlen(String); - else - v5 = strnlen(String, MaxCount); - return __pformat_putchars(String, v5, a2); -} - -//----- (00439DB0) -------------------------------------------------------- -int __usercall __pformat_emit_inf_or_nan@(int a1@, int a2@, int a3@) -{ - int v5; // ebx - char *v6; // ecx - char v7; // bl - int i; // edx - char v10; // [esp+Ch] [ebp-20h] BYREF - char v11[31]; // [esp+Dh] [ebp-1Fh] BYREF - - *(_DWORD *)(a3 + 12) = -1; - v5 = *(_DWORD *)(a3 + 4); - if ( a1 ) - { - v10 = 45; - v6 = v11; - } - else if ( (v5 & 0x100) != 0 ) - { - v10 = 43; - v6 = v11; - } - else if ( (v5 & 0x40) != 0 ) - { - v10 = 32; - v6 = v11; - } - else - { - v6 = &v10; - } - v7 = v5 & 0x20; - for ( i = 0; i != 3; ++i ) - v6[i] = v7 | *(_BYTE *)(a2 + i) & 0xDF; - return __pformat_putchars(&v10, v6 + 3 - &v10, a3); -} - -//----- (00439E40) -------------------------------------------------------- -int __usercall __pformat_xint@(int a1@, __int64 a2, int a3, int a4, int a5) -{ - int v5; // ebx - int v6; // ecx - int v7; // edi - int v8; // ecx - int v9; // eax - void *v10; // esp - char v11; // cl - void *v12; // esp - int v13; // ebx - unsigned __int64 v14; // rdi - char v15; // al - char v16; // cl - char *v17; // esi - int v18; // eax - int result; // eax - int v20; // edi - bool v21; // zf - unsigned int v22; // edx - int v23; // edi - int v24; // eax - int v25; // eax - int v26; // esi - int v27; // eax - int v28; // eax - int v29; // eax - void *v30; // esp - void *v31; // esp - int v32; // ecx - int v33; // eax - int v34; // edx - size_t v35; // edi - size_t v36; // eax - size_t v37; // ecx - int v38; // edi - int v39; // ecx - unsigned int v40; // eax - int v41; // eax - void *v42; // esp - void *v43; // esp - int v44; // eax - int v45; // eax - void *v46; // esp - void *v47; // esp - int v48; // eax - void *v49; // [esp+0h] [ebp-68h] - FILE *v50; // [esp+4h] [ebp-64h] - _BYTE v51[8]; // [esp+10h] [ebp-58h] BYREF - int v52; // [esp+18h] [ebp-50h] - int v53; // [esp+1Ch] [ebp-4Ch] - __int64 v54; // [esp+20h] [ebp-48h] - int v55; // [esp+28h] [ebp-40h] - int v56; // [esp+2Ch] [ebp-3Ch] - char *v57; // [esp+30h] [ebp-38h] - size_t v58; // [esp+34h] [ebp-34h] - size_t Size; // [esp+38h] [ebp-30h] - size_t v60; // [esp+3Ch] [ebp-2Ch] - __int64 v61; // [esp+40h] [ebp-28h] - int v62; // [esp+48h] [ebp-20h] - int v63; // [esp+4Ch] [ebp-1Ch] - - v56 = a1; - v5 = a5; - v61 = a2; - v54 = a2; - v62 = a3; - v63 = a4; - if ( a1 == 111 ) - { - v39 = 0; - v7 = *(_DWORD *)(a5 + 4); - v55 = *(_DWORD *)(a5 + 12); - if ( v55 >= 0 ) - v39 = v55; - v8 = v39 + 24; - if ( (v7 & 0x1000) != 0 ) - { - if ( *(_WORD *)(a5 + 28) ) - { - v60 = 3; -LABEL_46: - v53 = *(_DWORD *)(a5 + 8); - v28 = v8 / 3u + v8; - if ( v28 < v53 ) - v28 = v53; - v29 = 16 * ((unsigned int)(v28 + 27) >> 4); - v30 = alloca(v29); - v31 = alloca(v29); - v57 = v51; - if ( v56 != 111 ) - { - v11 = 15; - goto LABEL_50; - } -LABEL_75: - v11 = 7; - goto LABEL_8; - } - v48 = v8; - v53 = *(_DWORD *)(a5 + 8); - if ( v8 < v53 ) - v48 = v53; - v40 = v48 + 27; - } - else - { - v53 = *(_DWORD *)(a5 + 8); - if ( v53 >= v8 ) - v8 = v53; - v40 = v8 + 27; - } - v41 = 16 * (v40 >> 4); - v42 = alloca(v41); - v43 = alloca(v41); - v60 = 3; - v57 = v51; - goto LABEL_75; - } - v6 = 0; - v7 = *(_DWORD *)(a5 + 4); - v55 = *(_DWORD *)(a5 + 12); - if ( v55 >= 0 ) - v6 = v55; - v8 = v6 + 18; - if ( (v7 & 0x1000) != 0 ) - { - v21 = *(_WORD *)(a5 + 28) == 0; - v60 = 4; - if ( v21 ) - { - v44 = v8; - v53 = *(_DWORD *)(a5 + 8); - if ( v8 < v53 ) - v44 = v53; - v45 = 16 * ((unsigned int)(v44 + 27) >> 4); - v46 = alloca(v45); - v11 = 15; - v47 = alloca(v45); - v57 = v51; -LABEL_50: - if ( v54 ) - goto LABEL_9; -LABEL_51: - v17 = v57; - goto LABEL_52; - } - goto LABEL_46; - } - v53 = *(_DWORD *)(a5 + 8); - if ( v53 >= v8 ) - v8 = v53; - v9 = 16 * ((unsigned int)(v8 + 27) >> 4); - v10 = alloca(v9); - v11 = 15; - v12 = alloca(v9); - v60 = 4; - v57 = v51; -LABEL_8: - if ( !v54 ) - goto LABEL_51; -LABEL_9: - LOBYTE(Size) = v11; - v52 = v7; - v13 = (int)v57; - v14 = __PAIR64__(v54, HIDWORD(v54)); - LOBYTE(v58) = v56 & 0x20; - do - { - ++v13; - v15 = v58 | ((BYTE4(v14) & Size) + 55); - v16 = v60; - if ( (unsigned __int8)((BYTE4(v14) & Size) + 48) < 0x3Au ) - v15 = (BYTE4(v14) & Size) + 48; - HIDWORD(v14) = __PAIR64__(v14, HIDWORD(v14)) >> v60; - *(_BYTE *)(v13 - 1) = v15; - LODWORD(v14) = (unsigned int)v14 >> v16; - if ( (v16 & 0x20) != 0 ) - HIDWORD(v14) = v14; - if ( (v16 & 0x20) != 0 ) - LODWORD(v14) = 0; - } - while ( v14 ); - v17 = (char *)v13; - v7 = v52; - v5 = a5; - if ( v17 == v57 ) - { -LABEL_52: - v32 = v55; - v33 = v7; - v34 = v17 - v57; - BYTE1(v33) = BYTE1(v7) & 0xF7; - *(_DWORD *)(v5 + 4) = v33; - v18 = v32 - v34; - if ( v32 <= 0 ) - goto LABEL_78; - goto LABEL_53; - } - if ( v55 <= 0 || (v18 = v55 - (v17 - v57), v18 <= 0) ) - { - if ( v56 != 111 || (v52 & 0x800) == 0 ) - goto LABEL_21; - *v17++ = 48; -LABEL_78: - if ( v17 == v57 ) - { - result = 0; - if ( v55 ) - goto LABEL_56; -LABEL_22: - v20 = v53; - if ( result < v53 ) - goto LABEL_57; - goto LABEL_23; - } -LABEL_21: - result = v17 - v57; - goto LABEL_22; - } -LABEL_53: - v35 = 1; - v49 = v17; - if ( v18 > 0 ) - v35 = v18; - v17 += v35; - memset(v49, 48, v35); - if ( v17 != v57 ) - goto LABEL_21; -LABEL_56: - v20 = v53; - *v17 = 48; - result = ++v17 - v57; - if ( result < v20 ) - { -LABEL_57: - v21 = v56 == 111; - v36 = v20 - result; - Size = v36; - *(_DWORD *)(v5 + 8) = v36; - v23 = *(_DWORD *)(v5 + 4); - if ( v21 ) - { - if ( v55 >= 0 || (*(_DWORD *)(v5 + 4) & 0x600) != 512 ) - { - v37 = Size - 1; - if ( (v23 & 0x400) != 0 ) - { - if ( v17 > v57 ) - { -LABEL_88: - v58 = v37; - v22 = (unsigned int)v57; - goto LABEL_31; - } -LABEL_84: - v26 = v37; - goto LABEL_40; - } - goto LABEL_64; - } - } - else - { - if ( (v23 & 0x800) != 0 ) - { - Size = v36 - 2; - if ( (int)(v36 - 2) <= 0 || v55 >= 0 ) - goto LABEL_61; - } - else if ( v55 >= 0 ) - { - goto LABEL_86; - } - if ( (v23 & 0x600) != 512 ) - { - if ( (v23 & 0x800) == 0 ) - { -LABEL_86: - v37 = Size - 1; - if ( (v23 & 0x400) != 0 ) - goto LABEL_87; -LABEL_64: - v38 = v37; - do - { - __pformat_putc(32, v5); - result = v38--; - } - while ( result > 0 ); -LABEL_66: - if ( v17 > v57 ) - { - v23 = *(_DWORD *)(v5 + 4); - v22 = (unsigned int)v57; - Size = -1; - v58 = -2; - goto LABEL_31; - } - return result; - } -LABEL_61: - result = (unsigned __int8)v56; - v17[1] = 48; - v17 += 2; - *(v17 - 2) = result; - goto LABEL_62; - } - } - v58 = Size - 1; - v60 = Size; - result = (int)memset(v17, 48, Size); - v17 += v60; - Size = v58 - Size; - if ( v56 == 111 || (v23 & 0x800) == 0 ) - { -LABEL_62: - if ( (int)Size > 0 ) - { - v23 = *(_DWORD *)(v5 + 4); - v37 = Size - 1; - if ( (v23 & 0x400) == 0 ) - goto LABEL_64; -LABEL_87: - if ( v57 < v17 ) - goto LABEL_88; - goto LABEL_84; - } - goto LABEL_26; - } - goto LABEL_61; - } -LABEL_23: - v21 = v56 == 111; - *(_DWORD *)(v5 + 8) = -1; - if ( v21 ) - goto LABEL_66; - Size = -1; - if ( (*(_BYTE *)(v5 + 5) & 8) != 0 ) - { - result = (unsigned __int8)v56; - v17[1] = 48; - v17 += 2; - *(v17 - 2) = result; - } -LABEL_26: - v22 = (unsigned int)v57; - if ( v17 <= v57 ) - return result; - v23 = *(_DWORD *)(v5 + 4); - v58 = Size - 1; -LABEL_31: - while ( 1 ) - { - --v17; - if ( (v23 & 0x4000) != 0 ) - break; - v24 = *(_DWORD *)(v5 + 32); - if ( *(_DWORD *)(v5 + 36) > v24 ) - break; -LABEL_29: - result = v24 + 1; - *(_DWORD *)(v5 + 32) = result; - if ( (unsigned int)v17 <= v22 ) - goto LABEL_35; -LABEL_30: - v23 = *(_DWORD *)(v5 + 4); - } - v25 = *v17; - if ( (v23 & 0x2000) == 0 ) - { - *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = v25; - v24 = *(_DWORD *)(v5 + 32); - goto LABEL_29; - } - v50 = *(FILE **)v5; - v60 = v22; - fputc(v25, v50); - v22 = v60; - result = *(_DWORD *)(v5 + 32) + 1; - *(_DWORD *)(v5 + 32) = result; - if ( (unsigned int)v17 > v22 ) - goto LABEL_30; -LABEL_35: - if ( (int)Size > 0 ) - { - v23 = *(_DWORD *)(v5 + 4); - v26 = v58; -LABEL_40: - while ( 2 ) - { - if ( (v23 & 0x4000) != 0 || (v27 = *(_DWORD *)(v5 + 32), *(_DWORD *)(v5 + 36) > v27) ) - { - if ( (v23 & 0x2000) != 0 ) - { - fputc(32, *(FILE **)v5); - ++*(_DWORD *)(v5 + 32); - result = v26 - 1; - if ( v26 <= 0 ) - return result; - goto LABEL_39; - } - *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = 32; - v27 = *(_DWORD *)(v5 + 32); - } - *(_DWORD *)(v5 + 32) = v27 + 1; - result = v26 - 1; - if ( v26 <= 0 ) - return result; -LABEL_39: - v23 = *(_DWORD *)(v5 + 4); - v26 = result; - continue; - } - } - return result; -} - -//----- (0043A3F0) -------------------------------------------------------- -int __cdecl __pformat_int(__int64 a1, int a2, int a3, int a4) -{ - int v4; // ecx - int v5; // ebx - int v6; // esi - int v7; // ecx - int v8; // eax - void *v9; // esp - void *v10; // esp - unsigned int v11; // edi - int v12; // esi - char *v13; // ebx - char *v14; // ecx - unsigned __int64 v15; // kr08_8 - char *v16; // edi - char *v17; // esi - int v18; // eax - size_t v19; // edx - int v20; // eax - int v21; // edx - unsigned int v22; // ecx - int v23; // edi - char *v24; // esi - int v25; // eax - int v26; // eax - int result; // eax - int v28; // edx - int v29; // ecx - int v30; // edx - int v31; // eax - int v32; // eax - signed int v33; // ecx - int v34; // ecx - int v36; // [esp+10h] [ebp-48h] BYREF - int v37; // [esp+18h] [ebp-40h] - char *v38; // [esp+1Ch] [ebp-3Ch] - __int64 v39; // [esp+20h] [ebp-38h] - int v40; // [esp+28h] [ebp-30h] - char *v41; // [esp+2Ch] [ebp-2Ch] - __int64 v42; // [esp+30h] [ebp-28h] - int v43; // [esp+38h] [ebp-20h] - int v44; // [esp+3Ch] [ebp-1Ch] - - v4 = 0; - v5 = a4; - v42 = a1; - v6 = *(_DWORD *)(a4 + 4); - v43 = a2; - v44 = a3; - v39 = a1; - v37 = *(_DWORD *)(a4 + 12); - if ( v37 >= 0 ) - v4 = v37; - v7 = v4 + 23; - if ( (v6 & 0x1000) != 0 && *(_WORD *)(a4 + 28) ) - v7 += v7 / 3u; - v40 = *(_DWORD *)(a4 + 8); - if ( v40 >= v7 ) - v7 = v40; - v8 = 16 * ((unsigned int)(v7 + 27) >> 4); - v9 = alloca(v8); - v10 = alloca(v8); - v41 = (char *)&v36; - if ( (v6 & 0x80) != 0 ) - { - if ( v39 < 0 ) - { - v12 = -(int)v39; - v11 = (unsigned __int64)-v39 >> 32; -LABEL_12: - v38 = v41 + 1; - v13 = v41; - while ( 1 ) - { - if ( v41 == v13 ) - { - v14 = v41; - v13 = v38; - } - else - { - v14 = v13 + 1; - if ( (*(_BYTE *)(a4 + 5) & 0x10) != 0 && *(_WORD *)(a4 + 28) && ((v13 - v41) & 0x80000003) == 3 ) - { - *v13 = 44; - v13 += 2; - } - else - { - v14 = v13++; - } - } - LODWORD(v39) = v14; - *v14 = __PAIR64__(v11, v12) % 0xA + 48; - if ( __PAIR64__(v11, v12) <= 9 ) - break; - v15 = __PAIR64__(v11, v12) / 0xA; - v11 = (__PAIR64__(v11, v12) / 0xA) >> 32; - v12 = v15; - } - v16 = v13; - v17 = v13; - v5 = a4; - if ( v37 > 0 ) - { - v18 = v37 - (v16 - v41); - if ( v18 <= 0 ) - goto LABEL_26; - goto LABEL_23; - } - if ( v41 != v16 ) - goto LABEL_27; - goto LABEL_64; - } - *(_DWORD *)(a4 + 4) = v6 & 0xFFFFFF7F; - } - v11 = HIDWORD(v39); - v12 = v39; - if ( v39 ) - goto LABEL_12; - v17 = v41; - v18 = v37; - if ( v37 > 0 ) - { -LABEL_23: - v19 = 1; - if ( v18 > 0 ) - v19 = v18; - LODWORD(v39) = v19; - memset(v17, 48, v19); - v17 += v39; -LABEL_26: - if ( v41 != v17 ) - goto LABEL_27; - goto LABEL_68; - } -LABEL_64: - if ( !v37 ) - { - v21 = *(_DWORD *)(v5 + 4); - if ( v40 <= 0 ) - goto LABEL_33; - if ( (v21 & 0x1C0) == 0 ) - goto LABEL_32; - goto LABEL_30; - } -LABEL_68: - *v17++ = 48; -LABEL_27: - if ( v40 <= 0 ) - goto LABEL_61; - v40 -= v17 - v41; - v20 = v40; - v21 = *(_DWORD *)(v5 + 4); - *(_DWORD *)(v5 + 8) = v40; - if ( v20 <= 0 ) - goto LABEL_33; - if ( (v21 & 0x1C0) != 0 ) -LABEL_30: - *(_DWORD *)(v5 + 8) = v40 - 1; - if ( v37 >= 0 || (v21 & 0x600) != 512 ) - { -LABEL_32: - if ( (v21 & 0x400) != 0 ) - goto LABEL_33; - v31 = *(_DWORD *)(v5 + 8); - *(_DWORD *)(v5 + 8) = v31 - 1; - if ( v31 <= 0 ) - goto LABEL_33; - do - { - __pformat_putc(32, v5); - v32 = *(_DWORD *)(v5 + 8); - *(_DWORD *)(v5 + 8) = v32 - 1; - } - while ( v32 > 0 ); -LABEL_61: - v21 = *(_DWORD *)(v5 + 4); - goto LABEL_33; - } - v33 = *(_DWORD *)(v5 + 8); - *(_DWORD *)(v5 + 8) = v33 - 1; - if ( v33 > 0 ) - { - v40 = v21; - LODWORD(v39) = v33; - memset(v17, 48, v33); - v34 = v39; - LOWORD(v21) = v40; - *(_DWORD *)(v5 + 8) = -1; - v17 += v34; - } -LABEL_33: - if ( (v21 & 0x80u) == 0 ) - { - if ( (v21 & 0x100) != 0 ) - { - *v17 = 43; - v22 = (unsigned int)(v17 + 1); - } - else - { - v22 = (unsigned int)v17; - if ( (v21 & 0x40) != 0 ) - { - *v17 = 32; - v22 = (unsigned int)(v17 + 1); - } - } - } - else - { - *v17 = 45; - v22 = (unsigned int)(v17 + 1); - } - v23 = (int)v41; - if ( v22 > (unsigned int)v41 ) - { - v24 = (char *)v22; - while ( 1 ) - { - --v24; - if ( (v21 & 0x4000) == 0 ) - { - v25 = *(_DWORD *)(v5 + 32); - if ( *(_DWORD *)(v5 + 36) <= v25 ) - goto LABEL_38; - } - v26 = *v24; - if ( (v21 & 0x2000) == 0 ) - break; - fputc(v26, *(FILE **)v5); - ++*(_DWORD *)(v5 + 32); - if ( (char *)v23 == v24 ) - goto LABEL_44; -LABEL_39: - v21 = *(_DWORD *)(v5 + 4); - } - *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = v26; - v25 = *(_DWORD *)(v5 + 32); -LABEL_38: - *(_DWORD *)(v5 + 32) = v25 + 1; - if ( (char *)v23 == v24 ) - goto LABEL_44; - goto LABEL_39; - } -LABEL_44: - result = *(_DWORD *)(v5 + 8); - while ( 1 ) - { - v28 = result--; - *(_DWORD *)(v5 + 8) = result; - if ( v28 <= 0 ) - break; - v29 = *(_DWORD *)(v5 + 4); - if ( (v29 & 0x4000) != 0 || (v30 = *(_DWORD *)(v5 + 32), *(_DWORD *)(v5 + 36) > v30) ) - { - if ( (v29 & 0x2000) != 0 ) - fputc(32, *(FILE **)v5); - else - *(_BYTE *)(*(_DWORD *)v5 + *(_DWORD *)(v5 + 32)) = 32; - v30 = *(_DWORD *)(v5 + 32); - result = *(_DWORD *)(v5 + 8); - } - *(_DWORD *)(v5 + 32) = v30 + 1; - } - return result; -} - -//----- (0043A810) -------------------------------------------------------- -int __usercall __pformat_emit_radix_point@(int a1@) -{ - wchar_t v2; // dx - int v3; // eax - int v4; // eax - void *v5; // esp - void *v6; // esp - char *v7; // esi - signed int v8; // eax - char *v9; // edi - int result; // eax - int v11; // edx - FILE *v12; // ecx - struct lconv *v13; // eax - signed int v14; // eax - int v15; // [esp+0h] [ebp-48h] BYREF - char Dest[12]; // [esp+10h] [ebp-38h] BYREF - int *v17; // [esp+1Ch] [ebp-2Ch] - wchar_t DstCh; // [esp+26h] [ebp-22h] BYREF - mbstate_t State; // [esp+28h] [ebp-20h] BYREF - - if ( *(_DWORD *)(a1 + 16) == -3 ) - { - State._Wchar = 0; - *(_DWORD *)&State._Byte = 0; - v13 = localeconv(); - v14 = mbrtowc(&DstCh, v13->decimal_point, 0x10u, &State); - if ( v14 <= 0 ) - { - v2 = *(_WORD *)(a1 + 20); - } - else - { - v2 = DstCh; - *(_WORD *)(a1 + 20) = DstCh; - } - *(_DWORD *)(a1 + 16) = v14; - } - else - { - v2 = *(_WORD *)(a1 + 20); - } - if ( !v2 ) - return __pformat_putc(46, a1); - v3 = *(_DWORD *)(a1 + 16); - v17 = &v15; - v4 = 16 * ((unsigned int)(v3 + 15) >> 4); - v5 = alloca(v4); - v6 = alloca(v4); - State._Wchar = 0; - v7 = Dest; - *(_DWORD *)&State._Byte = 0; - v8 = wcrtomb(Dest, v2, &State); - if ( v8 > 0 ) - { - v9 = &Dest[v8]; - while ( 1 ) - { - result = *(_DWORD *)(a1 + 4); - ++v7; - if ( (result & 0x4000) == 0 ) - { - v11 = *(_DWORD *)(a1 + 32); - if ( *(_DWORD *)(a1 + 36) <= v11 ) - goto LABEL_7; - } - v12 = *(FILE **)a1; - if ( (result & 0x2000) != 0 ) - { - result = fputc(*(v7 - 1), v12); - ++*(_DWORD *)(a1 + 32); - if ( v7 == v9 ) - return result; - } - else - { - result = *(_DWORD *)(a1 + 32); - *((_BYTE *)&v12->_ptr + result) = *(v7 - 1); - v11 = *(_DWORD *)(a1 + 32); -LABEL_7: - *(_DWORD *)(a1 + 32) = v11 + 1; - if ( v7 == v9 ) - return result; - } - } - } - return __pformat_putc(46, a1); -} -// 43A810: using guessed type char Dest[12]; - -//----- (0043A960) -------------------------------------------------------- -int __usercall __pformat_emit_float@(int a1@, char *a2@, int a3@, int a4) -{ - int v7; // ecx - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // eax - char v12; // dl - int v13; // eax - int v14; // eax - int v15; // ecx - int v16; // eax - int v17; // eax - int result; // eax - char v19; // dl - int v20; // eax - int v21; // eax - int v22; // eax - int v23; // edx - unsigned int v24; // [esp+Ch] [ebp-20h] - - v7 = *(_DWORD *)(a4 + 8); - if ( a3 <= 0 ) - { - if ( v7 <= 0 ) - { - if ( v7 ) - { - *(_DWORD *)(a4 + 8) = -1; - goto LABEL_9; - } - } - else - { - --v7; - } - v14 = *(_DWORD *)(a4 + 12); - if ( v7 <= v14 ) - { - *(_DWORD *)(a4 + 8) = -1; - goto LABEL_9; - } - } - else if ( a3 > v7 || (v14 = *(_DWORD *)(a4 + 12), v7 -= a3, v7 <= v14) ) - { - *(_DWORD *)(a4 + 8) = -1; - v8 = -1; - if ( (*(_BYTE *)(a4 + 5) & 0x10) == 0 ) - goto LABEL_9; -LABEL_4: - if ( !*(_WORD *)(a4 + 28) ) - goto LABEL_28; - goto LABEL_5; - } - v8 = v7 - v14; - *(_DWORD *)(a4 + 8) = v8; - if ( v14 > 0 || (v21 = *(_DWORD *)(a4 + 4), (v21 & 0x800) != 0) ) - { - *(_DWORD *)(a4 + 8) = --v8; - if ( a3 <= 0 || (*(_BYTE *)(a4 + 5) & 0x10) == 0 ) - goto LABEL_28; - goto LABEL_4; - } - if ( a3 > 0 && (v21 & 0x1000) != 0 && *(_WORD *)(a4 + 28) ) - { -LABEL_5: - v9 = v8; - v24 = (a3 + 2) / 3u; - if ( v24 != 1 ) - { - while ( v9 > 0 ) - { - *(_DWORD *)(a4 + 8) = --v9; - if ( !(v9 + v24 - 1 - v8) ) - { - v8 = v9; - goto LABEL_28; - } - } - goto LABEL_9; - } -LABEL_28: - if ( v8 > 0 ) - goto LABEL_29; -LABEL_9: - if ( !a1 ) - { -LABEL_10: - v10 = *(_DWORD *)(a4 + 4); - goto LABEL_11; - } - goto LABEL_52; - } -LABEL_29: - if ( a1 ) - { - v15 = v8 - 1; - *(_DWORD *)(a4 + 8) = v15; - if ( v15 && (*(_DWORD *)(a4 + 4) & 0x600) == 0 ) - goto LABEL_33; -LABEL_52: - __pformat_putc(45, a4); - goto LABEL_14; - } - v10 = *(_DWORD *)(a4 + 4); - if ( (v10 & 0x1C0) != 0 ) - { - v15 = v8 - 1; - *(_DWORD *)(a4 + 8) = v15; - if ( v15 && (v10 & 0x600) == 0 ) - { -LABEL_33: - *(_DWORD *)(a4 + 8) = v15 - 1; - do - { -LABEL_34: - __pformat_putc(32, a4); - v16 = *(_DWORD *)(a4 + 8); - *(_DWORD *)(a4 + 8) = v16 - 1; - } - while ( v16 > 0 ); - if ( a1 ) - goto LABEL_52; - goto LABEL_10; - } - } - else if ( (v10 & 0x600) == 0 ) - { - v23 = *(_DWORD *)(a4 + 8); - *(_DWORD *)(a4 + 8) = v23 - 1; - if ( v23 > 0 ) - goto LABEL_34; - } -LABEL_11: - if ( (v10 & 0x100) != 0 ) - { - __pformat_putc(43, a4); - } - else if ( (v10 & 0x40) != 0 ) - { - __pformat_putc(32, a4); - } -LABEL_14: - v11 = *(_DWORD *)(a4 + 8); - if ( v11 > 0 && (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) - { - *(_DWORD *)(a4 + 8) = v11 - 1; - do - { - __pformat_putc(48, a4); - v22 = *(_DWORD *)(a4 + 8); - *(_DWORD *)(a4 + 8) = v22 - 1; - } - while ( v22 > 0 ); - } - if ( a3 <= 0 ) - { - __pformat_putc(48, a4); - v17 = *(_DWORD *)(a4 + 12); - if ( v17 > 0 || (*(_BYTE *)(a4 + 5) & 8) != 0 ) - { - __pformat_emit_radix_point(a4); - if ( !a3 ) - goto LABEL_44; - v17 = *(_DWORD *)(a4 + 12); - } - else if ( !a3 ) - { -LABEL_39: - result = v17 - 1; - *(_DWORD *)(a4 + 12) = result; - return result; - } - *(_DWORD *)(a4 + 12) = a3 + v17; - do - { - __pformat_putc(48, a4); - ++a3; - } - while ( a3 ); - } - else - { - while ( 1 ) - { - v12 = *a2; - v13 = 48; - if ( *a2 ) - { - ++a2; - v13 = v12; - } - __pformat_putc(v13, a4); - if ( !--a3 ) - break; - if ( (*(_BYTE *)(a4 + 5) & 0x10) != 0 && *(_WORD *)(a4 + 28) && (unsigned int)(-1431655765 * a3) <= 0x55555555 ) - __pformat_wputchars(a4 + 28, 1, a4); - } - v17 = *(_DWORD *)(a4 + 12); - if ( v17 <= 0 && (*(_BYTE *)(a4 + 5) & 8) == 0 ) - goto LABEL_39; - __pformat_emit_radix_point(a4); - } -LABEL_44: - while ( 1 ) - { - result = *(_DWORD *)(a4 + 12); - *(_DWORD *)(a4 + 12) = result - 1; - if ( result <= 0 ) - break; - v19 = *a2; - v20 = 48; - if ( *a2 ) - { - ++a2; - v20 = v19; - } - __pformat_putc(v20, a4); - } - return result; -} - -//----- (0043AD10) -------------------------------------------------------- -int __usercall __pformat_emit_efloat@(int a1@, char *a2@, int a3@, _DWORD *a4) -{ - int v4; // ecx - int i; // ebx - int v6; // eax - int v7; // ecx - int v8; // eax - int v9; // edx - __int64 v12; // [esp+30h] [ebp-2Ch] - int v13; // [esp+38h] [ebp-24h] - int v14; // [esp+3Ch] [ebp-20h] - - v12 = a3 - 1; - v4 = (int)v12 / 10; - for ( i = 1; v4; v4 /= 10 ) - ++i; - v6 = a4[10]; - if ( v6 == -1 ) - { - a4[10] = 2; - v6 = 2; - } - v7 = a4[2]; - if ( i < v6 ) - i = v6; - v8 = v7 - (i + 2); - if ( v7 <= i + 2 ) - v8 = -1; - a4[2] = v8; - __pformat_emit_float(a1, a2, 1, (int)a4); - a4[3] = a4[10]; - v9 = a4[1]; - a4[1] = v9 | 0x1C0; - __pformat_putc(v9 & 0x20 | 0x45, (int)a4); - a4[2] += i + 1; - return __pformat_int(v12, v13, v14, (int)a4); -} -// 43ADF2: variable 'v13' is possibly undefined -// 43ADF2: variable 'v14' is possibly undefined - -//----- (0043AE00) -------------------------------------------------------- -void __usercall __pformat_efloat(_DWORD *a1@, long double a2) -{ - int v3; // eax - int v4; // eax - int *v5; // eax - int *v6; // esi - int v7; // [esp+28h] [ebp-24h] BYREF - int v8; // [esp+2Ch] [ebp-20h] BYREF - long double v9; // [esp+30h] [ebp-1Ch] - int v10; // [esp+3Ch] [ebp-10h] - - v3 = a1[3]; - if ( v3 < 0 ) - { - a1[3] = 6; - v4 = 7; - } - else - { - v4 = v3 + 1; - } - v9 = a2; - v5 = __pformat_cvt(2u, *(__int64 *)&v9, SHIDWORD(v9), v10, v4, &v8, &v7); - v6 = v5; - if ( v8 == -32768 ) - __pformat_emit_inf_or_nan(v7, (int)v5, (int)a1); - else - __pformat_emit_efloat(v7, (char *)v5, v8, a1); - __freedtoa(v6); -} - -//----- (0043AEB0) -------------------------------------------------------- -void __usercall __pformat_float(int a1@, long double a2) -{ - int v3; // eax - int *v4; // eax - int *v5; // esi - int v6; // eax - int v7; // edx - int v8; // ecx - int v9; // edx - int v10; // [esp+28h] [ebp-24h] BYREF - int v11; // [esp+2Ch] [ebp-20h] BYREF - long double v12; // [esp+30h] [ebp-1Ch] - int v13; // [esp+3Ch] [ebp-10h] - - v3 = *(_DWORD *)(a1 + 12); - if ( v3 < 0 ) - { - *(_DWORD *)(a1 + 12) = 6; - v3 = 6; - } - v12 = a2; - v4 = __pformat_cvt(3u, *(__int64 *)&v12, SHIDWORD(v12), v13, v3, &v11, &v10); - v5 = v4; - if ( v11 == -32768 ) - { - __pformat_emit_inf_or_nan(v10, (int)v4, a1); - } - else - { - __pformat_emit_float(v10, (char *)v4, v11, a1); - v6 = *(_DWORD *)(a1 + 8); - while ( 1 ) - { - v7 = v6--; - *(_DWORD *)(a1 + 8) = v6; - if ( v7 <= 0 ) - break; - v8 = *(_DWORD *)(a1 + 4); - if ( (v8 & 0x4000) != 0 || (v9 = *(_DWORD *)(a1 + 32), *(_DWORD *)(a1 + 36) > v9) ) - { - if ( (v8 & 0x2000) != 0 ) - fputc(32, *(FILE **)a1); - else - *(_BYTE *)(*(_DWORD *)a1 + *(_DWORD *)(a1 + 32)) = 32; - v9 = *(_DWORD *)(a1 + 32); - v6 = *(_DWORD *)(a1 + 8); - } - *(_DWORD *)(a1 + 32) = v9 + 1; - } - } - __freedtoa(v5); -} - -//----- (0043AFA0) -------------------------------------------------------- -void __usercall __pformat_gfloat(_DWORD *a1@, long double a2) -{ - int v3; // eax - int *v4; // eax - int v5; // edi - int *Str; // esi - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // eax - int v12; // edx - int v13; // [esp+28h] [ebp-24h] BYREF - int v14; // [esp+2Ch] [ebp-20h] BYREF - long double v15; // [esp+30h] [ebp-1Ch] - int v16; // [esp+3Ch] [ebp-10h] - - v3 = a1[3]; - if ( v3 < 0 ) - { - a1[3] = 6; - v3 = 6; - } - else if ( !v3 ) - { - a1[3] = 1; - v3 = 1; - } - v15 = a2; - v4 = __pformat_cvt(2u, *(__int64 *)&v15, SHIDWORD(v15), v16, v3, &v14, &v13); - v5 = v14; - Str = v4; - if ( v14 == -32768 ) - { - __pformat_emit_inf_or_nan(v13, (int)v4, (int)a1); - __freedtoa(Str); - } - else - { - v7 = a1[1] & 0x800; - if ( v14 < -3 || (v8 = a1[3], v14 > v8) ) - { - if ( v7 ) - v10 = a1[3] - 1; - else - v10 = strlen((const char *)Str) - 1; - a1[3] = v10; - __pformat_emit_efloat(v13, (char *)Str, v5, a1); - __freedtoa(Str); - } - else - { - if ( v7 ) - { - a1[3] = v8 - v14; - } - else - { - v11 = strlen((const char *)Str) - v14; - a1[3] = v11; - if ( v11 < 0 ) - { - v12 = a1[2]; - if ( v12 > 0 ) - a1[2] = v12 + v11; - } - } - __pformat_emit_float(v13, (char *)Str, v5, (int)a1); - while ( 1 ) - { - v9 = a1[2]; - a1[2] = v9 - 1; - if ( v9 <= 0 ) - break; - __pformat_putc(32, (int)a1); - } - __freedtoa(Str); - } - } -} - -//----- (0043B130) -------------------------------------------------------- -int __usercall __pformat_xldouble@(int a1@, long double a2) -{ - __int16 v3; // fps - __int16 v5; // fps - int v9; // ebp - unsigned int v10; // edi - char *v11; // eax - char *v12; // esi - int v13; // edx - int v14; // eax - int v15; // edi - int v16; // ecx - int v17; // ebp - int v18; // eax - int v19; // eax - int v20; // eax - int v21; // eax - char v22; // cl - __int64 v23; // rax - unsigned int v24; // edi - unsigned int v25; // esi - unsigned __int64 v26; // kr08_8 - char v27; // cl - unsigned int v28; // esi - int v29; // edi - int v30; // ecx - __int16 v31; // dx - char v32; // cl - char v33; // al - unsigned int v34; // eax - int v35; // ecx - int v37; // eax - int v38; // eax - __int16 v39; // dx - int v40; // ecx - int v41; // esi - int v42; // eax - unsigned int v43; // [esp+24h] [ebp-88h] - int v44; // [esp+24h] [ebp-88h] - int v45; // [esp+2Ch] [ebp-80h] - __int16 v46; // [esp+30h] [ebp-7Ch] - char *v47; // [esp+30h] [ebp-7Ch] - int v48; // [esp+34h] [ebp-78h] - __int64 v51[2]; // [esp+68h] [ebp-44h] BYREF - char v52; // [esp+78h] [ebp-34h] BYREF - char v53; // [esp+79h] [ebp-33h] BYREF - - _FST7 = a2; - __asm { fxam } - if ( (v3 & 0x4500) == 256 ) - return __pformat_emit_inf_or_nan(0, (int)&off_514F07, a1); - if ( (SWORD4(a2) & 0x8000u) != 0 ) - *(_DWORD *)(a1 + 4) |= 0x80u; - __asm { fxam } - if ( (v5 & 0x4500) == 1280 ) - return __pformat_emit_inf_or_nan(WORD4(a2) & 0x8000, (int)&off_514F0B, a1); - v9 = DWORD1(a2); - v10 = LODWORD(a2); - v46 = WORD4(a2) & 0x7FFF; - if ( (WORD4(a2) & 0x7FFF) != 0 ) - { - v46 -= 0x3FFF; - v43 = *(_DWORD *)(a1 + 12); - if ( v43 <= 0xE ) - goto LABEL_40; - v45 = *(_DWORD *)(a1 + 4); - if ( !*(_QWORD *)&a2 ) - goto LABEL_9; - goto LABEL_53; - } - if ( !*(_QWORD *)&a2 ) - { - v43 = *(_DWORD *)(a1 + 12); - if ( v43 > 0xE ) - { - v45 = *(_DWORD *)(a1 + 4); -LABEL_9: - if ( *(int *)(a1 + 12) > 0 || (v11 = &v52, (v45 & 0x800) != 0) ) - { - v52 = 46; - v11 = &v53; - } - *v11 = 48; - v12 = v11 + 1; - v48 = *(_DWORD *)(a1 + 8); - if ( v48 > 0 ) - goto LABEL_12; -LABEL_87: - v17 = 2; - v44 = v46; - if ( (v45 & 0x80u) == 0 ) - goto LABEL_21; - goto LABEL_88; - } - do - { - v9 = __PAIR64__(v9, v10) >> 31; - v10 *= 2; -LABEL_40: - ; - } - while ( v9 >= 0 ); - goto LABEL_41; - } - if ( (SDWORD1(a2) & 0x80000000) != 0 ) - { - v46 = -16382; - } - else - { - v38 = -16383; - do - { - v9 = __PAIR64__(v9, v10) >> 31; - v39 = v38; - v10 *= 2; - --v38; - } - while ( v9 >= 0 ); - v46 = v39; - } - v43 = *(_DWORD *)(a1 + 12); - if ( v43 <= 0xE ) - { -LABEL_41: - v22 = 4 * (14 - v43); - v23 = 4LL << (v22 & 0x1F); - if ( (v22 & 0x20) != 0 ) - HIDWORD(v23) = 4LL << (v22 & 0x1F); - if ( (v22 & 0x20) != 0 ) - LODWORD(v23) = 0; - v26 = v23 + (__PAIR64__(v9, v10) >> 1); - v24 = HIDWORD(v26); - v25 = v26; - if ( (v26 & 0x8000000000000000LL) != 0LL ) - { - ++v46; - } - else - { - v24 = v26 >> 31; - v25 = 2 * v26; - } - v27 = 4 * (15 - v43); - v28 = __PAIR64__(v24, v25) >> v27; - v29 = v24 >> v27; - v30 = v27 & 0x20; - if ( v30 ) - v28 = v29; - if ( v30 ) - v29 = 0; - v9 = v29; - v10 = v28; - } - v45 = *(_DWORD *)(a1 + 4); -LABEL_53: - v12 = &v52; - v31 = v46; - do - { - v34 = v10 & 0xF; - if ( v10 & 0xFFFFFFF0 | v9 ) - { - v10 = __PAIR64__(v9, v10) >> 4; - v9 = (unsigned int)v9 >> 4; - v35 = *(_DWORD *)(a1 + 12); - if ( v35 > 0 ) - *(_DWORD *)(a1 + 12) = v35 - 1; - } - else - { - if ( v12 > &v52 || (v45 & 0x800) != 0 || *(int *)(a1 + 12) > 0 ) - *v12++ = 46; - if ( v9 | v10 ^ 1 ) - { - v40 = (unsigned __int16)(v31 - 1); - v47 = v12; - v41 = v10 & 0xF; - do - { - v10 = __PAIR64__(v9, v10) >> 1; - v9 = (unsigned int)v9 >> 1; - v31 = v40--; - } - while ( v10 ^ 1 | v9 ); - v34 = v41; - v10 = 0; - v12 = v47; - v9 = 0; - } - else - { - v10 = 0; - v9 = 0; - } - } - if ( v34 ) - { - v32 = v34; - if ( v34 <= 9 ) -LABEL_56: - v33 = v32 + 48; - else - v33 = v45 & 0x20 | (v34 + 55); - *v12++ = v33; - continue; - } - v32 = 0; - if ( v12 > &v52 || *(int *)(a1 + 12) >= 0 ) - goto LABEL_56; - } - while ( v10 | v9 ); - v46 = v31; - if ( v12 == &v52 ) - goto LABEL_9; - v48 = *(_DWORD *)(a1 + 8); - if ( v48 <= 0 ) - goto LABEL_87; -LABEL_12: - v13 = *(_DWORD *)(a1 + 12); - v14 = v12 - &v52; - if ( v13 > 0 ) - v14 = v12 - &v52 + v13; - v44 = v46; - v15 = v14 - (((v45 & 0x1C0) == 0) - 6); - v16 = v46 / 10; - if ( v16 ) - { - do - { - ++v15; - v16 /= 10; - } - while ( v16 ); - v17 = (__int16)(v15 + 2 - (v14 - (((v45 & 0x1C0) == 0) - 6))); - } - else - { - v17 = 2; - } - if ( v48 <= v15 ) - { - *(_DWORD *)(a1 + 8) = -1; - } - else - { - v18 = v48 - v15; - if ( (v45 & 0x600) != 0 ) - { - *(_DWORD *)(a1 + 8) = v18; - } - else - { - *(_DWORD *)(a1 + 8) = v18 - 1; - if ( v18 > 0 ) - { - do - { - __pformat_putc(32, a1); - v42 = *(_DWORD *)(a1 + 8); - *(_DWORD *)(a1 + 8) = v42 - 1; - } - while ( v42 > 0 ); - v45 = *(_DWORD *)(a1 + 4); - } - } - } - if ( (v45 & 0x80u) != 0 ) - { -LABEL_88: - __pformat_putc(45, a1); - goto LABEL_24; - } -LABEL_21: - if ( (v45 & 0x100) != 0 ) - { - __pformat_putc(43, a1); - } - else if ( (v45 & 0x40) != 0 ) - { - __pformat_putc(32, a1); - } -LABEL_24: - __pformat_putc(48, a1); - __pformat_putc(*(_DWORD *)(a1 + 4) & 0x20 | 0x58, a1); - v19 = *(_DWORD *)(a1 + 8); - if ( v19 > 0 && (*(_BYTE *)(a1 + 5) & 2) != 0 ) - { - *(_DWORD *)(a1 + 8) = v19 - 1; - do - { - __pformat_putc(48, a1); - v20 = *(_DWORD *)(a1 + 8); - *(_DWORD *)(a1 + 8) = v20 - 1; - } - while ( v20 > 0 ); - } - if ( v12 > &v52 ) - { - do - { - v21 = *--v12; - if ( v21 == 46 ) - { - __pformat_emit_radix_point(a1); - } - else if ( v21 == 44 ) - { - LOWORD(v51[0]) = *(_WORD *)(a1 + 28); - if ( LOWORD(v51[0]) ) - __pformat_wputchars((int)v51, 1, a1); - } - else - { - __pformat_putc(v21, a1); - } - } - while ( v12 != &v52 ); - } - while ( 1 ) - { - v37 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(a1 + 12) = v37 - 1; - if ( v37 <= 0 ) - break; - __pformat_putc(48, a1); - } - __pformat_putc(*(_DWORD *)(a1 + 4) & 0x20 | 0x50, a1); - *(_DWORD *)(a1 + 8) += v17; - *(_DWORD *)(a1 + 4) |= 0x1C0u; - v51[0] = v44; - v51[1] = v44 >> 31; - return __pformat_int(v44, v44 >> 31, v44 >> 31, a1); -} -// 514F07: using guessed type void *off_514F07; -// 514F0B: using guessed type void *off_514F0B; - -//----- (0043B750) -------------------------------------------------------- -int __cdecl __mingw_pformat(__int16 a1, FILE *a2, int a3, char *a4, int *a5) -{ - int v6; // eax - int result; // eax - char *v8; // ebp - char v9; // cl - int v10; // edx - char v11; // al - char *v12; // esi - unsigned int v13; // ecx - char *v14; // ebx - int v15; // ebp - int *v16; // eax - unsigned int v17; // edx - int v18; // eax - __int64 v19; // rax - mbstate_t v20; // rax - char *v21; // eax - int *v22; // esi - int *v23; // esi - int v24; // eax - long double v25; // fst7 - char *v26; // eax - long double v27; // fst7 - long double v28; // fst7 - int v29; // eax - int v30; // edx - long double v31; // fst7 - int v32; // eax - unsigned int v33; // eax - int v34; // eax - long double v35; // fst7 - long double v36; // fst7 - long double v37; // fst7 - long double v38; // fst7 - int v39; // eax - const wchar_t *v40; // edi - int v41; // eax - unsigned int v42; // eax - int v43; // edx - struct lconv *v44; // eax - signed int v45; // eax - unsigned int v46; // edi - __int64 v47; // [esp+0h] [ebp-ACh] - __int64 v48; // [esp+8h] [ebp-A4h] - int v49; // [esp+28h] [ebp-84h] - int v50; // [esp+2Ch] [ebp-80h] - size_t *v51; // [esp+30h] [ebp-7Ch] - char *v52; // [esp+34h] [ebp-78h] - int ErrorMessage; // [esp+38h] [ebp-74h] - wchar_t DstCh; // [esp+4Eh] [ebp-5Eh] BYREF - mbstate_t v55; // [esp+50h] [ebp-5Ch] BYREF - __int64 v56; // [esp+58h] [ebp-54h] - FILE *Stream; // [esp+64h] [ebp-48h] BYREF - int v58; // [esp+68h] [ebp-44h] - int v59; // [esp+6Ch] [ebp-40h] BYREF - size_t MaxCount[2]; // [esp+70h] [ebp-3Ch] BYREF - __int16 v61; // [esp+78h] [ebp-34h] - int v62; // [esp+7Ch] [ebp-30h] - wchar_t v63; // [esp+80h] [ebp-2Ch] - int v64; // [esp+84h] [ebp-28h] - int v65; // [esp+88h] [ebp-24h] - int v66; // [esp+8Ch] [ebp-20h] - - v6 = *_errno(); - v59 = -1; - MaxCount[0] = -1; - ErrorMessage = v6; - MaxCount[1] = -3; - Stream = a2; - v61 = 0; - v62 = 0; - v50 = a1 & 0x6000; - v58 = v50; - v63 = 0; - v65 = a3; - result = *a4; - v64 = 0; - v66 = -1; - if ( result ) - { - v8 = a4 + 1; - v9 = result; - while ( 1 ) - { - if ( result == 37 ) - { - MaxCount[0] = -1; - v59 = -1; - v58 = a1 & 0x6000; - v11 = *v8; - if ( !*v8 ) - return v64; - v49 = 0; - v12 = v8; - v13 = 0; - v51 = (size_t *)&v59; - v52 = v8; - while ( 2 ) - { - v14 = v12 + 1; - v15 = v11; - switch ( v11 ) - { - case ' ': - if ( v13 ) - goto LABEL_104; - v11 = v12[1]; - v58 |= 0x40u; - ++v12; - goto LABEL_16; - case '#': - if ( v13 ) - goto LABEL_104; - v11 = v12[1]; - v58 |= 0x800u; - ++v12; - goto LABEL_16; - case '%': - v8 = v12 + 1; - __pformat_putc(37, (int)&Stream); - break; - case '\'': - if ( v13 ) - goto LABEL_104; - v58 |= 0x1000u; - v55._Wchar = 0; - v44 = localeconv(); - v45 = mbrtowc(&DstCh, v44->thousands_sep, 0x10u, &v55); - v13 = 0; - if ( v45 > 0 ) - v63 = DstCh; - v62 = v45; - v11 = *++v12; - goto LABEL_16; - case '*': - if ( !v51 ) - goto LABEL_92; - if ( (v13 & 0xFFFFFFFD) != 0 ) - { - v11 = v12[1]; - v51 = 0; - ++v12; - v13 = 4; - } - else - { - v39 = *a5; - *v51 = *a5; - if ( v39 >= 0 ) - goto LABEL_100; - if ( v13 ) - { - MaxCount[0] = -1; -LABEL_100: - v11 = v12[1]; - v51 = 0; - ++a5; - ++v12; - goto LABEL_16; - } - v11 = v12[1]; - v59 = -v59; - ++a5; - ++v12; - v58 |= 0x400u; - v51 = 0; - } - goto LABEL_16; - case '+': - if ( v13 ) - goto LABEL_104; - v11 = v12[1]; - v58 |= 0x100u; - ++v12; - goto LABEL_16; - case '-': - if ( v13 ) - goto LABEL_104; - v11 = v12[1]; - v58 |= 0x400u; - ++v12; - goto LABEL_16; - case '.': - if ( v13 <= 1 ) - { - v11 = v12[1]; - MaxCount[0] = 0; - ++v12; - v51 = MaxCount; - v13 = 2; - } - else - { -LABEL_92: - v11 = v12[1]; - v13 = 4; - ++v12; - } - goto LABEL_16; - case '0': - if ( v13 ) - { - if ( v13 > 3 ) - goto LABEL_116; - v15 = 48; -LABEL_113: - if ( v13 == 2 ) - v13 = 3; -LABEL_23: - if ( v51 ) - { - if ( (*v51 & 0x80000000) == 0 ) - { - *v51 = v15 + 10 * *v51 - 48; - v11 = *++v12; - goto LABEL_16; - } - *v51 = v15 - 48; - } -LABEL_104: - v11 = *++v12; - } - else - { - v11 = v12[1]; - v58 |= 0x200u; - ++v12; - } - goto LABEL_16; - case 'A': - if ( (v58 & 4) == 0 ) - goto LABEL_90; - goto LABEL_48; - case 'C': - MaxCount[0] = -1; - v23 = a5 + 1; - goto LABEL_80; - case 'E': - if ( (v58 & 4) == 0 ) - goto LABEL_82; - goto LABEL_73; - case 'F': - if ( (v58 & 4) == 0 ) - goto LABEL_84; - goto LABEL_64; - case 'G': - if ( (v58 & 4) == 0 ) - goto LABEL_86; - goto LABEL_66; - case 'I': - v11 = v12[1]; - if ( v11 == 54 ) - { - if ( v12[2] != 52 ) - { -LABEL_116: - v8 = v52; - __pformat_putc(37, (int)&Stream); - break; - } - v11 = v12[3]; - v49 = 3; - v12 += 3; - v13 = 4; - } - else if ( v11 == 51 ) - { - if ( v12[2] != 50 ) - goto LABEL_116; - v11 = v12[3]; - v49 = 2; - v12 += 3; - v13 = 4; - } - else - { - v49 = 0; - ++v12; - v13 = 4; - } -LABEL_16: - if ( !v11 ) - return v64; - continue; - case 'L': - v11 = v12[1]; - v58 |= 4u; - ++v12; - v13 = 4; - goto LABEL_16; - case 'S': - v22 = a5 + 1; - goto LABEL_106; - case 'X': - case 'o': - case 'u': - case 'x': - if ( v49 == 3 ) - { - v42 = *a5; - v43 = a5[1]; - a5 += 2; - v55._Wchar = v42; - *(_DWORD *)&v55._Byte = v43; - } - else - { - v16 = a5 + 1; - if ( v49 == 2 ) - { - v46 = *a5; - *(_DWORD *)&v55._Byte = 0; - v55._Wchar = v46; - a5 = v16; - } - else - { - v17 = *a5; - if ( v49 == 1 ) - { - *(_DWORD *)&v55._Byte = 0; - ++a5; - v55._Wchar = (unsigned __int16)v17; - } - else - { - if ( v49 == 5 ) - v17 = (unsigned __int8)v17; - v55._Wchar = v17; - ++a5; - *(_DWORD *)&v55._Byte = 0; - } - } - } - v47 = (__int64)v55; - v48 = v56; - if ( v15 == 117 ) - goto LABEL_41; - v18 = v15; - v8 = v12 + 1; - __pformat_xint(v18, *(_QWORD *)&v55, v56, SHIDWORD(v56), (int)&Stream); - goto LABEL_9; - case 'a': - v58 |= 0x20u; - if ( (v58 & 4) != 0 ) - { -LABEL_48: - v25 = *(long double *)a5; - v8 = v12 + 1; - a5 += 3; - __pformat_xldouble((int)&Stream, v25); - } - else - { -LABEL_90: - v38 = *(double *)a5; - v8 = v12 + 1; - a5 += 2; - __pformat_xldouble((int)&Stream, v38); - } - goto LABEL_9; - case 'c': - MaxCount[0] = -1; - v23 = a5 + 1; - if ( (unsigned int)(v49 - 2) <= 1 ) - { -LABEL_80: - v34 = *a5; - a5 = v23; - v8 = v14; - LOWORD(v55._Wchar) = v34; - __pformat_wputchars((int)&v55, 1, (int)&Stream); - } - else - { - v24 = *a5++; - v8 = v14; - LOBYTE(v55._Wchar) = v24; - __pformat_putchars(&v55, 1, (int)&Stream); - } - goto LABEL_9; - case 'd': - case 'i': - v58 |= 0x80u; - if ( v49 == 3 ) - { - v20 = *(mbstate_t *)a5; - a5 += 2; - v55 = v20; - } - else - { - LODWORD(v19) = *a5; - if ( v49 == 2 ) - goto LABEL_39; - if ( v49 != 1 ) - { - if ( v49 == 5 ) - LODWORD(v19) = (char)v19; -LABEL_39: - v19 = (int)v19; - v55 = (mbstate_t)(int)v19; - ++a5; - goto LABEL_40; - } - ++a5; - v19 = (__int16)v19; - v55 = (mbstate_t)(__int16)v19; - } -LABEL_40: - v56 = *(int *)&v20._Byte >> 31; - v47 = (__int64)v55; - v48 = v56; -LABEL_41: - __pformat_int(v47, v48, SHIDWORD(v48), (int)&Stream); -LABEL_42: - v8 = v12 + 1; - break; - case 'e': - v58 |= 0x20u; - if ( (v58 & 4) != 0 ) - { -LABEL_73: - v31 = *(long double *)a5; - v8 = v12 + 1; - a5 += 3; - __pformat_efloat(&Stream, v31); - } - else - { -LABEL_82: - v35 = *(double *)a5; - v8 = v12 + 1; - a5 += 2; - __pformat_efloat(&Stream, v35); - } - goto LABEL_9; - case 'f': - v58 |= 0x20u; - if ( (v58 & 4) != 0 ) - { -LABEL_64: - v27 = *(long double *)a5; - v8 = v12 + 1; - a5 += 3; - __pformat_float((int)&Stream, v27); - } - else - { -LABEL_84: - v36 = *(double *)a5; - v8 = v12 + 1; - a5 += 2; - __pformat_float((int)&Stream, v36); - } - goto LABEL_9; - case 'g': - v58 |= 0x20u; - if ( (v58 & 4) != 0 ) - { -LABEL_66: - v28 = *(long double *)a5; - v8 = v12 + 1; - a5 += 3; - __pformat_gfloat(&Stream, v28); - } - else - { -LABEL_86: - v37 = *(double *)a5; - v8 = v12 + 1; - a5 += 2; - __pformat_gfloat(&Stream, v37); - } - goto LABEL_9; - case 'h': - v11 = v12[1]; - if ( v11 == 104 ) - { - v11 = v12[2]; - v49 = 5; - v12 += 2; - } - else - { - v49 = 1; - ++v12; - } - v13 = 4; - goto LABEL_16; - case 'j': - v11 = v12[1]; - v49 = 3; - ++v12; - v13 = 4; - goto LABEL_16; - case 'l': - v11 = v12[1]; - if ( v11 == 108 ) - { - v11 = v12[2]; - v49 = 3; - v12 += 2; - } - else - { - v49 = 2; - ++v12; - } - v13 = 4; - goto LABEL_16; - case 'm': - v8 = v12 + 1; - v26 = strerror(ErrorMessage); - __pformat_puts(v26, (int)&Stream); - goto LABEL_9; - case 'n': - v29 = *a5++; - v30 = v64; - switch ( v49 ) - { - case 5: - *(_BYTE *)v29 = v64; - v8 = v12 + 1; - break; - case 1: - *(_WORD *)v29 = v64; - v8 = v12 + 1; - break; - case 2: - *(_DWORD *)v29 = v64; - v8 = v12 + 1; - break; - default: - *(_DWORD *)v29 = v64; - if ( v49 != 3 ) - goto LABEL_42; - v8 = v12 + 1; - *(_DWORD *)(v29 + 4) = v30 >> 31; - break; - } - goto LABEL_9; - case 'p': - if ( !v13 ) - { - v32 = a1 & 0x6000; - if ( v58 == v50 ) - { - BYTE1(v32) = BYTE1(v50) | 2; - MaxCount[0] = 8; - v58 = v32; - } - } - v33 = *a5; - *(_DWORD *)&v55._Byte = 0; - v8 = v12 + 1; - ++a5; - v55._Wchar = v33; - v56 = 0LL; - __pformat_xint(120, v33, 0, 0, (int)&Stream); - goto LABEL_9; - case 's': - v21 = (char *)*a5; - v22 = a5 + 1; - if ( (unsigned int)(v49 - 2) <= 1 ) - { -LABEL_106: - v40 = (const wchar_t *)*a5; - if ( !v40 ) - v40 = &String; - if ( (MaxCount[0] & 0x80000000) != 0 ) - v41 = wcslen(v40); - else - v41 = wcsnlen(v40, MaxCount[0]); - v8 = v14; - __pformat_wputchars((int)v40, v41, (int)&Stream); - a5 = v22; - } - else - { - ++a5; - v8 = v14; - __pformat_puts(v21, (int)&Stream); - } - goto LABEL_9; - case 't': - case 'z': - v49 = 0; - v11 = v12[1]; - v13 = 4; - ++v12; - goto LABEL_16; - default: - if ( (unsigned __int8)(v11 - 48) > 9u || v13 > 3 ) - goto LABEL_116; - if ( v13 ) - goto LABEL_113; - v13 = 1; - goto LABEL_23; - } - break; - } - } - else - { - if ( (v58 & 0x4000) != 0 || (v10 = v64, v65 > v64) ) - { - if ( (v58 & 0x2000) != 0 ) - fputc(result, Stream); - else - *((_BYTE *)&Stream->_ptr + v64) = v9; - v10 = v64; - } - v64 = v10 + 1; - } -LABEL_9: - v9 = *v8++; - result = v9; - if ( !v9 ) - return v64; - } - } - return result; -} - -//----- (0043C0F0) -------------------------------------------------------- -int *__cdecl __rv_alloc_D2A(int a1) -{ - int v1; // ebx - int v2; // eax - int *v3; // eax - - v1 = 0; - if ( a1 > 19 ) - { - v2 = 4; - do - { - v2 *= 2; - ++v1; - } - while ( v2 + 15 < a1 ); - } - v3 = __Balloc_D2A(v1); - *v3 = v1; - return v3 + 1; -} - -//----- (0043C130) -------------------------------------------------------- -int *__cdecl __nrv_alloc_D2A(char *a1, char **a2, int a3) -{ - int v3; // eax - int v4; // edi - int *v5; // eax - char *v6; // edx - char v7; // cl - int *v8; // edi - char *v9; // eax - char v10; // cl - - if ( a3 <= 19 ) - { - v4 = 0; - } - else - { - v3 = 4; - v4 = 0; - do - { - v3 *= 2; - ++v4; - } - while ( a3 > v3 + 15 ); - } - v5 = __Balloc_D2A(v4); - v6 = a1 + 1; - *v5 = v4; - v7 = *a1; - v8 = v5 + 1; - *((_BYTE *)v5 + 4) = *a1; - v9 = (char *)(v5 + 1); - if ( v7 ) - { - do - { - v10 = *v6; - ++v9; - ++v6; - *v9 = v10; - } - while ( v10 ); - } - if ( a2 ) - *a2 = v9; - return v8; -} - -//----- (0043C1B0) -------------------------------------------------------- -void __cdecl __freedtoa(_DWORD *a1) -{ - int v1; // ecx - - v1 = *(a1 - 1); - *a1 = v1; - a1[1] = 1 << v1; - __Bfree_D2A(a1 - 1); -} - -//----- (0043C1D0) -------------------------------------------------------- -unsigned int __cdecl __quorem_D2A(int a1, int a2) -{ - int v2; // ebx - unsigned int result; // eax - int v4; // eax - unsigned int v5; // ebx - _DWORD *v6; // ecx - unsigned int v7; // esi - __int64 v8; // kr00_8 - bool v9; // cf - int v10; // eax - int v11; // ecx - _DWORD *v12; // esi - unsigned int v13; // ebp - __int64 v14; // rcx - int v15; // eax - _DWORD *v16; // edx - unsigned int v17; // eax - int v18; // edx - __int64 v19; // [esp+18h] [ebp-54h] - __int64 v20; // [esp+18h] [ebp-54h] - _DWORD *v21; // [esp+2Ch] [ebp-40h] - unsigned __int64 v22; // [esp+30h] [ebp-3Ch] - int v23; // [esp+38h] [ebp-34h] - unsigned int v24; // [esp+3Ch] [ebp-30h] - unsigned int v25; // [esp+40h] [ebp-2Ch] - int v26; // [esp+44h] [ebp-28h] - _DWORD *v27; // [esp+4Ch] [ebp-20h] - - v2 = *(_DWORD *)(a2 + 16); - result = 0; - v26 = v2; - if ( *(_DWORD *)(a1 + 16) >= v2 ) - { - v23 = v2 - 1; - v4 = 4 * (v2 - 1); - v21 = (_DWORD *)(a2 + 20 + v4); - v27 = (_DWORD *)(a1 + 20 + v4); - v25 = a1 + 20; - v24 = *v27 / (unsigned int)(*v21 + 1); - if ( *v27 >= (unsigned int)(*v21 + 1) ) - { - v22 = 0LL; - v5 = a2 + 20; - v6 = (_DWORD *)(a1 + 20); - v19 = 0LL; - do - { - v5 += 4; - v7 = *(_DWORD *)(v5 - 4) * v24 + v22; - v22 = (*(unsigned int *)(v5 - 4) * (unsigned __int64)v24 + v22) >> 32; - v8 = v19 + v7; - v9 = *v6 < (unsigned int)v8; - v10 = *v6++ - v8; - *(v6 - 1) = v10; - v19 = -(char)(v9 + BYTE4(v8)) & 1; - } - while ( (unsigned int)v21 >= v5 ); - if ( !*v27 ) - { - if ( v25 < (unsigned int)(v27 - 1) ) - { - v11 = v23; - do - { - if ( v27[v11 - v26] ) - break; - --v11; - } - while ( v26 - 2 - (((unsigned int)v27 - a1 - 25) >> 2) != v11 ); - v23 = v11; - } - *(_DWORD *)(a1 + 16) = v23; - } - } - if ( __cmp_D2A(a1, a2) >= 0 ) - { - v12 = (_DWORD *)(a1 + 20); - ++v24; - v20 = 0LL; - v13 = a2 + 20; - do - { - v13 += 4; - v14 = v20 + *(unsigned int *)(v13 - 4); - v9 = *v12 < (unsigned int)v14; - v15 = *v12++ - v14; - *(v12 - 1) = v15; - v20 = -(char)(v9 + BYTE4(v14)) & 1; - } - while ( (unsigned int)v21 >= v13 ); - v16 = (_DWORD *)(v25 + 4 * v23); - if ( !*v16 ) - { - if ( v25 < (unsigned int)(v16 - 1) ) - { - v17 = v23 - 1 - (((unsigned int)v16 - a1 - 25) >> 2); - v18 = v23; - do - { - if ( *(_DWORD *)(v25 + 4 * v18 - 4) ) - break; - --v18; - } - while ( v18 != v17 ); - v23 = v18; - } - *(_DWORD *)(a1 + 16) = v23; - } - } - return v24; - } - return result; -} - -//----- (0043C3F0) -------------------------------------------------------- -int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, unsigned int a5, int a6, int *a7, char **a8) -{ - int v8; // esi - int v9; // eax - int v11; // edi - int v12; // edx - int i; // eax - int *v14; // ebp - int *v15; // eax - int *v16; // edx - int *v17; // ecx - int v18; // ebx - int v19; // ebx - int v20; // ebx - int v21; // eax - unsigned int v22; // edx - int v23; // eax - double v24; // rax - int v25; // ecx - int v26; // eax - signed int v27; // edx - long double v28; // fst7 - int v29; // eax - int v30; // eax - int v31; // eax - long double v32; // fst7 - double v33; // rax - int v34; // esi - long double v35; // fst6 - long double v36; // fst5 - int *v37; // eax - long double v38; // fst6 - long double v39; // fst7 - long double v40; // fst6 - char v41; // dl - long double v42; // rt0 - long double v43; // fst5 - char v44; // dl - int *v45; // ebx - int *n; // ecx - int v47; // edi - int v48; // ecx - int v49; // eax - int v50; // edi - int *v51; // esi - int v52; // eax - int v53; // eax - bool v54; // bl - int v55; // edi - char v56; // bl - int v57; // ebx - int v58; // eax - int v59; // eax - bool v60; // dl - double v61; // rax - long double v62; // fst6 - long double v63; // fst7 - unsigned int v64; // ebx - int v65; // ebx - int *v66; // ebx - int v67; // eax - int *v68; // edi - unsigned int v69; // eax - int v70; // edi - int *v71; // edx - int v72; // ecx - int *v73; // ecx - int v74; // eax - int v75; // eax - int *v76; // eax - unsigned int v77; // eax - int v78; // edx - char v79; // al - int *v80; // ebx - int *v81; // edx - int v82; // ecx - long double v83; // fst5 - bool v84; // zf - long double m; // fst6 - long double v86; // fst6 - long double v87; // fst5 - int v88; // edx - int v89; // eax - bool v90; // zf - bool v91; // cc - long double v92; // fst6 - bool v93; // di - long double v94; // fst5 - int v95; // edx - bool v96; // cl - int *v97; // edx - int *v98; // edi - int *k; // esi - int *v100; // eax - int v101; // eax - int *v102; // ecx - double v103; // rax - int *v104; // ebx - char v105; // dl - int v106; // edi - int v107; // eax - long double v108; // fst6 - int v109; // edx - int v110; // [esp+18h] [ebp-A4h] - int *v111; // [esp+18h] [ebp-A4h] - int v112; // [esp+18h] [ebp-A4h] - int *v113; // [esp+18h] [ebp-A4h] - int *v114; // [esp+18h] [ebp-A4h] - unsigned int v115; // [esp+28h] [ebp-94h] - bool v116; // [esp+28h] [ebp-94h] - int v117; // [esp+2Ch] [ebp-90h] - int *j; // [esp+30h] [ebp-8Ch] - int v119; // [esp+34h] [ebp-88h] - int v120; // [esp+34h] [ebp-88h] - int v121; // [esp+34h] [ebp-88h] - int v122; // [esp+38h] [ebp-84h] - double v123; // [esp+38h] [ebp-84h] - int *v124; // [esp+38h] [ebp-84h] - int *v125; // [esp+38h] [ebp-84h] - int v126; // [esp+40h] [ebp-7Ch] - int v127; // [esp+4Ch] [ebp-70h] - char v128; // [esp+4Ch] [ebp-70h] - int v129; // [esp+50h] [ebp-6Ch] - int v130; // [esp+50h] [ebp-6Ch] - double v131; // [esp+50h] [ebp-6Ch] - int v132; // [esp+58h] [ebp-64h] - int v133; // [esp+58h] [ebp-64h] - int *v134; // [esp+5Ch] [ebp-60h] - int v135; // [esp+60h] [ebp-5Ch] - int v136; // [esp+60h] [ebp-5Ch] - int *v137; // [esp+60h] [ebp-5Ch] - int v138; // [esp+64h] [ebp-58h] - int v139; // [esp+68h] [ebp-54h] - int v140; // [esp+6Ch] [ebp-50h] - int v141; // [esp+70h] [ebp-4Ch] - int v142; // [esp+74h] [ebp-48h] - bool v143; // [esp+78h] [ebp-44h] - bool v144; // [esp+78h] [ebp-44h] - int v145; // [esp+7Ch] [ebp-40h] - int v146; // [esp+80h] [ebp-3Ch] - int v147; // [esp+88h] [ebp-34h] - int v148[8]; // [esp+9Ch] [ebp-20h] BYREF - - v110 = a5; - v119 = a6; - v8 = *a4; - *a4 &= 0xFFFFFFCF; - v9 = v8 & 7; - if ( v9 == 3 ) - { - *a7 = -32768; - return __nrv_alloc_D2A("Infinity", a8, 8); - } - v117 = v8 & 4; - if ( (v8 & 4) == 0 ) - { - if ( (v8 & 7) != 0 ) - { - if ( (unsigned int)(v9 - 1) > 1 ) - return 0; - v11 = *a1; - v12 = 0; - for ( i = 32; v11 > i; ++v12 ) - i *= 2; - v122 = (v11 - 1) >> 5; - v14 = __Balloc_D2A(v12); - v15 = a3; - v16 = v14 + 5; - v17 = &a3[v122]; - do - { - v18 = *v15++; - *v16++ = v18; - } - while ( v17 >= v15 ); - v19 = v122 * 4 + 4; - if ( (char *)v17 + 1 < (char *)a3 + 1 ) - v19 = 4; - v20 = v19 >> 2; - do - { - v21 = v20--; - if ( v14[v20 + 5] ) - { - _BitScanReverse(&v22, v14[v20 + 5]); - v14[4] = v21; - v20 = 32 * v21 - (v22 ^ 0x1F); - goto LABEL_18; - } - } - while ( v20 ); - v14[4] = 0; -LABEL_18: - v23 = __trailz_D2A((int)v14); - v148[0] = v23; - v135 = a2; - if ( v23 ) - { - __rshift_D2A((int)v14, v23); - v135 = v148[0] + a2; - v20 -= v148[0]; - } - if ( v14[4] ) - { - v24 = __b2d_D2A((int)v14, v148); - LODWORD(v123) = LODWORD(v24); - v25 = v20 + v135 - 1; - v26 = HIDWORD(v24) & 0xFFFFF | 0x3FF00000; - HIDWORD(v123) = v26; - v27 = abs32(v25) - 1077; - v28 = (v123 - 1.5) * 0.289529654602168 + 0.1760912590558 + (long double)v25 * 0.301029995663981; - if ( v27 > 0 ) - v28 = v28 + (long double)v27 * 7.0e-17; - v127 = (int)v28; - if ( v28 < 0.0 && (long double)v127 != v28 ) - --v127; - HIDWORD(v123) = (v25 << 20) + v26; - v132 = -v135; - if ( (unsigned int)v127 > 0x16 ) - { - v142 = 1; - } - else - { - if ( __tens_D2A[v127] <= (long double)v123 ) - { - v142 = 0; - v138 = 0; - if ( v135 <= 0 ) - goto LABEL_69; -LABEL_110: - v132 = 0; - v138 = v135; -LABEL_33: - if ( v127 < 0 ) - { - v29 = v127; - v138 -= v127; - v127 = 0; - v140 = v29; - v141 = -v29; - goto LABEL_35; - } -LABEL_69: - v141 = 0; - v132 += v127; - v140 = v127; -LABEL_35: - if ( a5 > 9 ) - { - v110 = 0; - } - else - { - if ( (int)a5 > 5 ) - { - v143 = 0; - v110 = a5 - 4; - } - else - { - v143 = (unsigned int)(v20 + v135 + 1021) <= 0x7F7; - } - switch ( v110 ) - { - case 4: - v139 = 1; - goto LABEL_42; - case 5: - v139 = 1; -LABEL_128: - v145 = v140 + a6; - v30 = v140 + a6 + 1; - v126 = v30; - if ( v30 <= 0 ) - { - v148[0] = 1; - v30 = 1; - } - else - { - v148[0] = v140 + a6 + 1; - } - goto LABEL_45; - case 2: - v139 = 0; -LABEL_42: - v30 = 1; - if ( a6 > 0 ) - v30 = a6; - v148[0] = v30; - v145 = v30; - v126 = v30; - v119 = v30; -LABEL_45: - v134 = __rv_alloc_D2A(v30); - v129 = a1[3]; - v84 = v129 == 1; - v130 = v129 - 1; - v144 = v143 && (unsigned int)v126 <= 0xE; - if ( v84 ) - goto LABEL_50; - goto LABEL_46; - case 3: - v139 = 0; - goto LABEL_128; - } - } - v148[0] = (int)((long double)v11 * 0.30103) + 3; - v134 = __rv_alloc_D2A(v148[0]); - v121 = a1[3]; - v130 = v121 - 1; - if ( v121 == 1 ) - { - if ( v135 < 0 ) - { - v106 = v11 - v20; - v119 = 0; - v48 = v106 + 1; - v126 = -1; - v49 = a1[1]; - v148[0] = v106 + 1; - v145 = -1; - if ( v49 <= v135 - v106 ) - goto LABEL_79; - goto LABEL_76; - } - if ( a1[5] >= v140 ) - { - v126 = -1; - v63 = __tens_D2A[v140]; - goto LABEL_198; - } - v119 = 0; - v145 = -1; - v126 = -1; -LABEL_75: - v47 = v11 - v20; - v48 = v47 + 1; - v49 = a1[1]; - v148[0] = v47 + 1; - if ( v135 - v47 >= v49 ) - { -LABEL_168: - if ( v110 > 1 ) - goto LABEL_169; -LABEL_79: - v132 += v48; - v50 = v141; - v136 = v138; - v138 += v48; -LABEL_80: - v139 = 1; - v51 = __i2b_D2A(1); -LABEL_81: - if ( v136 > 0 && v132 > 0 ) - { - v52 = v132; - if ( v136 <= v132 ) - v52 = v136; - v138 -= v52; - v148[0] = v52; - v136 -= v52; - v132 -= v52; - } - if ( v141 ) - { - if ( v139 ) - { - if ( v50 > 0 ) - { - v51 = __pow5mult_D2A(v51, v50); - v124 = __mult_D2A((int)v51, (int)v14); - __Bfree_D2A(v14); - v14 = v124; - } - v53 = v141 - v50; - if ( v141 == v50 ) - goto LABEL_91; - } - else - { - v53 = v141; - } - v14 = __pow5mult_D2A(v14, v53); - } -LABEL_91: - v125 = __i2b_D2A(1); - v54 = v110 <= 1 && v20 == 1; - if ( v127 > 0 ) - { - v125 = __pow5mult_D2A(v125, v127); - if ( !v54 || a2 <= a1[1] + 1 ) - { - v55 = 0; -LABEL_136: - _BitScanReverse(&v64, v125[v125[4] + 4]); - v56 = v64 ^ 0x1F; -LABEL_94: - v57 = (v56 - (_BYTE)v132 - 4) & 0x1F; - v148[0] = v57; - v58 = v57; - if ( v57 + v138 > 0 ) - { - v14 = __lshift_D2A(v14, v57 + v138); - v58 = v148[0]; - } - v59 = v132 + v58; - if ( v59 > 0 ) - v125 = __lshift_D2A(v125, v59); - v60 = v110 > 2; - if ( v142 && (v116 = v110 > 2, v75 = __cmp_D2A((int)v14, (int)v125), v60 = v110 > 2, v75 < 0) ) - { - v14 = __multadd_D2A(v14, 10, 0); - if ( !v139 ) - { - if ( v145 > 0 || !v116 ) - { - v120 = v140; - v126 = v145; -LABEL_177: - v68 = v134; - v148[0] = 1; - while ( 1 ) - { - v68 = (int *)((char *)v68 + 1); - v77 = __quorem_D2A((int)v14, (int)v125) + 48; - *((_BYTE *)v68 - 1) = v77; - if ( v148[0] >= v126 ) - break; - v76 = __multadd_D2A(v14, 10, 0); - ++v148[0]; - v14 = v76; - } - LOBYTE(v115) = v77; - v73 = 0; -LABEL_181: - if ( v130 ) - { - v78 = v14[4]; - v79 = *((_BYTE *)v68 - 1); - if ( v130 != 2 ) - { - if ( v78 > 1 || v14[5] ) - { -LABEL_185: - v80 = v134; - goto LABEL_188; - } -LABEL_191: - while ( v79 == 48 ) - { - v79 = *((_BYTE *)v68 - 2); - v68 = (int *)((char *)v68 - 1); - } - goto LABEL_160; - } - } - else - { - v113 = v73; - v14 = __lshift_D2A(v14, 1); - v89 = __cmp_D2A((int)v14, (int)v125); - v73 = v113; - v90 = v89 == 0; - v91 = v89 <= 0; - v79 = *((_BYTE *)v68 - 1); - if ( !v91 || v90 && (v115 & 1) != 0 ) - goto LABEL_185; - v78 = v14[4]; - } - if ( v78 <= 1 ) - { - v109 = 16; - if ( !v14[5] ) - v109 = v117; - v117 = v109; - } - else - { - v117 = 16; - } - goto LABEL_191; - } - goto LABEL_263; - } - v51 = __multadd_D2A(v51, 10, 0); - if ( v145 <= 0 && v116 ) - { -LABEL_263: - --v140; - v126 = v145; - goto LABEL_101; - } - v120 = v140; - v126 = v145; - } - else - { - if ( v126 <= 0 && v60 ) - { -LABEL_101: - if ( !v126 ) - { - v125 = __multadd_D2A(v125, 5, 0); - if ( __cmp_D2A((int)v14, (int)v125) > 0 ) - { - v45 = v134; - v120 = v140 + 2; -LABEL_104: - v134 = (int *)((char *)v134 + 1); - *(_BYTE *)v45 = 49; - v117 = 32; - goto LABEL_105; - } - } -LABEL_133: - v45 = v134; - v117 = 16; - v120 = -v119; -LABEL_105: - __Bfree_D2A(v125); - if ( !v51 ) - { -LABEL_107: - __Bfree_D2A(v14); - *(_BYTE *)v134 = 0; - *a7 = v120; - if ( a8 ) - *a8 = (char *)v134; - *a4 |= v117; - return v45; - } -LABEL_106: - __Bfree_D2A(v51); - goto LABEL_107; - } - v120 = v140 + 1; - if ( !v139 ) - goto LABEL_177; - } - v65 = v136 + v57; - if ( v65 > 0 ) - v51 = __lshift_D2A(v51, v65); - v66 = v51; - if ( v55 ) - { - v104 = __Balloc_D2A(v51[1]); - memcpy(v104 + 3, v51 + 3, 4 * v51[4] + 8); - v66 = __lshift_D2A(v104, 1); - } - v148[0] = 1; - for ( j = v134; ; j = (int *)((char *)j + 1) ) - { - v69 = __quorem_D2A((int)v14, (int)v125); - v115 = v69 + 48; - v128 = v69; - v70 = __cmp_D2A((int)v14, (int)v51); - v71 = __diff_D2A((int)v125, (int)v66); - if ( v71[3] ) - { - __Bfree_D2A(v71); - v67 = 1; - } - else - { - v137 = v71; - v133 = __cmp_D2A((int)v14, (int)v71); - __Bfree_D2A(v137); - v67 = v133 | v110; - if ( v133 | v110 ) - { - v67 = v133; - } - else if ( !(v130 | *a3 & 1) ) - { - v72 = v70; - v68 = (int *)((char *)j + 1); - if ( v115 == 57 ) - goto LABEL_262; - if ( v72 <= 0 ) - { - if ( v14[4] <= 1 ) - { - if ( v14[5] ) - v67 = 16; - } - else - { - v67 = 16; - } - } - else - { - LOBYTE(v115) = v128 + 49; - v67 = 32; - } - v117 = v67; - *(_BYTE *)j = v115; - v73 = v51; - v51 = v66; - goto LABEL_160; - } - } - if ( v70 < 0 || !(v110 | v70) && (*(_BYTE *)a3 & 1) == 0 ) - break; - v68 = (int *)((char *)j + 1); - if ( v67 > 0 && v130 != 2 ) - { - if ( v115 == 57 ) - goto LABEL_262; - v73 = v51; - v117 = 32; - v51 = v66; - *(_BYTE *)j = v115 + 1; - goto LABEL_160; - } - *(_BYTE *)j = v115; - if ( v148[0] == v126 ) - { - v73 = v51; - v51 = v66; - goto LABEL_181; - } - v14 = __multadd_D2A(v14, 10, 0); - if ( v51 == v66 ) - { - v51 = __multadd_D2A(v51, 10, 0); - v66 = v51; - } - else - { - v51 = __multadd_D2A(v51, 10, 0); - v66 = __multadd_D2A(v66, 10, 0); - } - ++v148[0]; - } - v68 = (int *)((char *)j + 1); - if ( v130 ) - { - if ( v14[4] <= 1 && !v14[5] ) - { - if ( v67 <= 0 ) - { - v73 = v51; - v51 = v66; - goto LABEL_240; - } -LABEL_257: - v14 = __lshift_D2A(v14, 1); - v107 = __cmp_D2A((int)v14, (int)v125); - if ( v107 <= 0 && (v107 || (v115 & 1) == 0) ) - { - v130 = 32; - goto LABEL_260; - } - if ( v115 != 57 ) - { - v130 = 32; - LOBYTE(v115) = v128 + 49; - goto LABEL_260; - } -LABEL_262: - v73 = v51; - v51 = v66; - v80 = v134; - *(_BYTE *)j = 57; - v79 = 57; - while ( 1 ) - { -LABEL_188: - v81 = (int *)((char *)v68 - 1); - if ( v79 != 57 ) - { - v117 = 32; - *(_BYTE *)v81 = v79 + 1; - goto LABEL_160; - } - if ( v81 == v80 ) - break; - v79 = *((_BYTE *)v68 - 2); - v68 = (int *)((char *)v68 - 1); - } - ++v120; - v117 = 32; - *(_BYTE *)v134 = 49; -LABEL_160: - v111 = v73; - __Bfree_D2A(v125); - if ( !v51 ) - { - v45 = v134; - v134 = v68; - goto LABEL_107; - } - if ( !v111 || v111 == v51 ) - { - v45 = v134; - v134 = v68; - } - else - { - __Bfree_D2A(v111); - v45 = v134; - v134 = v68; - } - goto LABEL_106; - } - if ( v130 != 2 ) - { - v98 = v51; - for ( k = (int *)((char *)j + 1); ; k = (int *)((char *)k + 1) ) - { - v101 = __cmp_D2A((int)v125, (int)v66); - v102 = k; - if ( v101 <= 0 ) - break; - *((_BYTE *)k - 1) = v115; - v100 = __multadd_D2A(v66, 10, 0); - if ( v98 == v66 ) - v98 = v100; - v114 = v100; - v14 = __multadd_D2A(v14, 10, 0); - j = k; - v115 = __quorem_D2A((int)v14, (int)v125) + 48; - v66 = v114; - } - v51 = v98; - v68 = v102; - if ( v115 != 57 ) - { - v117 = 32; - v73 = v51; - v51 = v66; - LOBYTE(v115) = v115 + 1; - goto LABEL_240; - } - goto LABEL_262; - } - } - else - { - if ( v67 > 0 ) - goto LABEL_257; -LABEL_260: - if ( v14[4] <= 1 ) - { - v73 = v51; - v51 = v66; - if ( v14[5] ) - v117 = 16; - else - v117 = v130; -LABEL_240: - *(_BYTE *)j = v115; - goto LABEL_160; - } - } - v73 = v51; - v117 = 16; - v51 = v66; - goto LABEL_240; - } - } - else - { - v55 = 0; - if ( !v54 || a1[1] + 1 >= a2 ) - { -LABEL_93: - v56 = 31; - if ( !v127 ) - goto LABEL_94; - goto LABEL_136; - } - } - ++v138; - v55 = 1; - ++v132; - goto LABEL_93; - } -LABEL_76: - if ( ((v110 - 3) & 0xFFFFFFFD) != 0 ) - { - v48 = v135 - v49 + 1; - v148[0] = v48; - if ( v126 <= 0 || v110 <= 1 || v48 <= v126 ) - goto LABEL_79; -LABEL_169: - v74 = v126 - 1; - if ( v141 < v126 - 1 ) - { - v50 = 0; - v88 = v74 - v141; - v141 = v126 - 1; - v127 += v88; - } - else - { - v50 = v141 - v74; - } - if ( v126 < 0 ) - { - v148[0] = 0; - v136 = v138 - v126; - } - else - { - v132 += v126; - v148[0] = v126; - v136 = v138; - v138 += v126; - } - goto LABEL_80; - } - goto LABEL_168; - } - v119 = 0; - v144 = 0; - v139 = 1; - v145 = -1; - v126 = -1; -LABEL_46: - v31 = 2; - if ( v130 >= 0 ) - v31 = v130; - v130 = v31; - if ( (v8 & 8) == 0 ) - goto LABEL_119; - v130 = 3 - v31; -LABEL_50: - if ( v144 && !(v140 | v130) ) - { - v32 = v123; - v148[0] = 0; - if ( v142 && v32 < 1.0 ) - { - if ( v126 ) - { - v34 = v145; - if ( v145 <= 0 ) - { -LABEL_118: - v130 = 0; - goto LABEL_119; - } - v32 = v32 * 10.0; - v146 = -1; - v103 = v32 * 3.0 + 7.0; - LODWORD(v131) = LODWORD(v103); - HIDWORD(v131) = HIDWORD(v103) - 54525952; -LABEL_56: - v35 = v131; - v36 = dbl_515138[v34]; - if ( v139 ) - { - v37 = (int *)((char *)v134 + 1); - *(_BYTE *)v134 = (int)v32 + 48; - v38 = 0.5 / v36 - v35; - v39 = v32 - (long double)(int)v32; - if ( v38 > v39 ) - { -LABEL_265: - v45 = v134; - v134 = v37; - v120 = v146 + 1; - if ( 0.0 == v39 ) - { - v117 = 0; - goto LABEL_107; - } - goto LABEL_215; - } - while ( 1 ) - { - v43 = v38; - if ( v38 > 1.0 - v39 ) - break; - if ( ++v148[0] >= v34 ) - goto LABEL_118; - v37 = (int *)((char *)v37 + 1); - v40 = v39 * 10.0; - v41 = (int)v40; - v42 = v40 - (long double)(int)v40; - v38 = v43 * 10.0; - v39 = v42; - *((_BYTE *)v37 - 1) = v41 + 48; - if ( v38 > v42 ) - goto LABEL_265; - } - v44 = *((_BYTE *)v37 - 1); -LABEL_63: - v45 = v134; - n = v37; - v120 = v146 + 1; - goto LABEL_64; - } - v92 = v35 * v36; - v37 = v134; - v147 = v11; - v93 = 0; - v148[0] = 1; - v94 = v32; - while ( 1 ) - { - v95 = (int)v94; - if ( (int)v94 ) - { - v93 = v144; - v94 = v94 - (long double)(int)v94; - } - v37 = (int *)((char *)v37 + 1); - v44 = v95 + 48; - *((_BYTE *)v37 - 1) = v44; - if ( v148[0] == v34 ) - break; - v94 = v94 * 10.0; - v93 = v144; - ++v148[0]; - } - v96 = v93; - v11 = v147; - if ( !v96 ) - v94 = v32; - if ( v94 > v92 + 0.5 ) - goto LABEL_63; - if ( 0.5 - v92 > v94 ) - { - v45 = v134; - if ( 0.0 == v94 ) - v117 = 0; - else - v117 = 16; - v82 = v146 + 1; - goto LABEL_228; - } - goto LABEL_118; - } - v61 = v32 + v32 + 7.0; - LODWORD(v131) = LODWORD(v61); - HIDWORD(v131) = HIDWORD(v61) - 54525952; - } - else - { - v33 = v32 + v32 + 7.0; - LODWORD(v131) = LODWORD(v33); - HIDWORD(v131) = HIDWORD(v33) - 54525952; - if ( v126 ) - { - v146 = 0; - v34 = v126; - goto LABEL_56; - } - } - v62 = v32 - 5.0; - if ( v62 > v131 ) - { - v120 = 2; - v45 = v134; - v51 = 0; - v125 = 0; - goto LABEL_104; - } - if ( -v131 > v62 ) - { -LABEL_132: - v125 = 0; - v51 = 0; - goto LABEL_133; - } - goto LABEL_118; - } -LABEL_119: - if ( v135 >= 0 && a1[5] >= v140 ) - { - v63 = __tens_D2A[v140]; - if ( v119 < 0 ) - { - v51 = (int *)v126; - if ( v126 <= 0 ) - { - if ( !v126 && v63 * 5.0 < v123 ) - { - v125 = 0; - v45 = v134; - v120 = v140 + 2; - goto LABEL_104; - } - goto LABEL_132; - } - } -LABEL_198: - v148[0] = 1; - v82 = v140 + 1; - v120 = v140 + 1; - v37 = (int *)((char *)v134 + 1); - v112 = (int)(v123 / v63); - *(_BYTE *)v134 = v112 + 48; - v83 = v123 - (long double)v112 * v63; - v84 = v83 == 0.0; - for ( m = v83; ; m = v87 ) - { - if ( v84 ) - { - v45 = v134; - v134 = v37; - goto LABEL_107; - } - if ( v148[0] == v126 ) - break; - v86 = m * 10.0; - v37 = (int *)((char *)v37 + 1); - ++v148[0]; - v112 = (int)(v86 / v63); - *((_BYTE *)v37 - 1) = v112 + 48; - v87 = v86 - (long double)v112 * v63; - v84 = v87 == 0.0; - } - if ( v130 ) - { - if ( v130 == 1 ) - { - v44 = *((_BYTE *)v37 - 1); - v45 = v134; - n = v37; - goto LABEL_64; - } - v45 = v134; - v134 = v37; -LABEL_215: - v117 = 16; - goto LABEL_107; - } - v108 = m + m; - v44 = *((_BYTE *)v37 - 1); - if ( v108 > v63 ) - { - v45 = v134; - for ( n = v37; ; n = v37 ) - { -LABEL_64: - v37 = (int *)((char *)n - 1); - if ( v44 != 57 ) - { - v134 = n; - v105 = v44 + 1; - goto LABEL_252; - } - if ( v37 == v45 ) - break; - v44 = *((_BYTE *)n - 2); -LABEL_67: - ; - } - ++v120; - v105 = 49; - v134 = n; - *(_BYTE *)v45 = 48; -LABEL_252: - *(_BYTE *)v37 = v105; - v117 = 32; - goto LABEL_107; - } - v45 = v134; - if ( v108 == v63 && (v112 & 1) != 0 ) - goto LABEL_67; - v117 = 16; - do - { -LABEL_228: - v97 = v37; - v37 = (int *)((char *)v37 - 1); - } - while ( *((_BYTE *)v97 - 1) == 48 ); - v134 = v97; - v120 = v82; - goto LABEL_107; - } - if ( !v139 ) - { - v50 = v141; - v51 = 0; - v136 = v138; - goto LABEL_81; - } - goto LABEL_75; - } - v142 = 0; - --v127; - } - v138 = 0; - if ( v135 <= 0 ) - goto LABEL_33; - goto LABEL_110; - } - __Bfree_D2A(v14); - } - *a7 = 1; - return __nrv_alloc_D2A("0", a8, 1); - } - if ( v9 != 4 ) - return 0; - *a7 = -32768; - return __nrv_alloc_D2A((char *)&off_515099, a8, 3); -} -// 515099: using guessed type void *off_515099; -// 515138: using guessed type double dbl_515138[]; -// 515140: using guessed type double __tens_D2A[24]; -// 43C3F0: using guessed type int var_20[8]; - -//----- (0043DB40) -------------------------------------------------------- -int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5) -{ - char *decimal_point; // edi - int v6; // ebx - unsigned __int8 v7; // cl - unsigned __int8 *v8; // eax - int v9; // edx - int v10; // ebp - unsigned __int8 *v11; // ebx - char v12; // al - int v13; // edx - unsigned __int8 v14; // bp - unsigned __int8 *v15; // esi - unsigned __int8 *v16; // eax - int v17; // esi - int v18; // eax - int v19; // ebx - int v20; // ebp - int v21; // esi - int v22; // edx - int j; // eax - int *v24; // edi - int v25; // ebx - int v26; // ecx - unsigned __int8 v27; // dl - unsigned __int8 v28; // dl - int v29; // ecx - bool v30; // zf - int v31; // eax - int v32; // edx - int i; // eax - int v34; // eax - int v35; // edx - unsigned __int8 *v36; // ecx - unsigned int *v37; // edi - char v38; // cl - int v39; // eax - int v40; // eax - unsigned int v41; // ebp - int *v42; // ebx - unsigned int v43; // eax - int *v44; // edx - int v45; // eax - int v46; // edx - int v47; // edx - int v48; // edi - int v49; // edx - int v50; // edx - int v51; // ecx - int v52; // ecx - unsigned int v53; // esi - unsigned int v54; // eax - unsigned int v55; // eax - int v56; // ebx - int v57; // ebx - int v58; // edi - int v59; // esi - int v60; // eax - int v61; // ebx - int v62; // eax - int v64; // ebx - int v65; // edx - char v66; // dl - int v67; // eax - int v68; // ecx - int v69; // ebx - int v70; // ecx - int v71; // esi - unsigned int v72; // eax - int v73; // edi - unsigned __int8 *v74; // ecx - int v75; // eax - int v76; // eax - int Val; // [esp+4h] [ebp-48h] - int v78; // [esp+14h] [ebp-38h] - unsigned int v79; // [esp+14h] [ebp-38h] - int v80; // [esp+18h] [ebp-34h] - BOOL v81; // [esp+18h] [ebp-34h] - unsigned int v82; // [esp+18h] [ebp-34h] - unsigned __int8 *v83; // [esp+1Ch] [ebp-30h] - char *v84; // [esp+1Ch] [ebp-30h] - int v85; // [esp+20h] [ebp-2Ch] - int *v86; // [esp+24h] [ebp-28h] - unsigned __int8 *v87; // [esp+24h] [ebp-28h] - char *v88; // [esp+24h] [ebp-28h] - _DWORD *v89; // [esp+28h] [ebp-24h] - int v90; // [esp+28h] [ebp-24h] - int v91; // [esp+2Ch] [ebp-20h] - - decimal_point = localeconv()->decimal_point; - if ( !byte_1522390 ) - __mingw_hexdig_init_D2A(); - *a4 = 0; - v6 = (int)*a1; - v7 = (*a1)[2]; - if ( v7 == 48 ) - { - v8 = (unsigned __int8 *)(v6 + 3); - v9 = -2 - v6; - do - { - v10 = (int)&v8[v9]; - v11 = v8; - v7 = *v8++; - } - while ( v7 == 48 ); - } - else - { - v11 = (unsigned __int8 *)(v6 + 2); - v10 = 0; - } - if ( __hexdig_D2A[v7] ) - { - v79 = (unsigned int)v11; - ++v10; - v16 = 0; - v81 = 0; - goto LABEL_31; - } - v12 = *decimal_point; - v13 = 0; - if ( *decimal_point ) - { - v80 = v10; - v14 = v7; - do - { - if ( v12 != v7 ) - { - v7 = v14; - v10 = v80; - goto LABEL_12; - } - v12 = decimal_point[++v13]; - v7 = v11[v13]; - v15 = &v11[v13]; - } - while ( v12 ); - v10 = v80; - v16 = &v11[v13]; - if ( __hexdig_D2A[v7] ) - { - if ( v7 == 48 ) - { - v11 += v13; - do - v27 = *++v11; - while ( v27 == 48 ); - v79 = (unsigned int)v11; - v10 = 1; - v81 = __hexdig_D2A[v27] == 0; - if ( !__hexdig_D2A[v27] ) - { -LABEL_32: - if ( v27 != *decimal_point ) - { - v28 = *v11; - v29 = 4 * (v16 - v11); - v30 = v16 == 0; - v31 = 0; - if ( !v30 ) - v31 = v29; - v85 = v31; -LABEL_36: - if ( (v28 & 0xDF) != 80 ) - goto LABEL_37; -LABEL_53: - v83 = v11; - v11 = (unsigned __int8 *)v79; - goto LABEL_54; - } - if ( v16 ) - { - v85 = 4 * (v16 - v11); - if ( (*v11 & 0xDF) != 80 ) - { -LABEL_37: - *a1 = v11; - if ( !v81 ) - { -LABEL_38: - v32 = 0; - for ( i = (int)&v11[-v79 - 1]; i > 7; ++v32 ) - i >>= 1; - v86 = __Balloc_D2A(v32); - v89 = v86 + 5; - if ( decimal_point[1] ) - { - v34 = 0; - do - ++v34; - while ( decimal_point[v34 + 1] ); - v91 = v34; - } - else - { - v91 = 0; - } - if ( (unsigned int)v11 <= v79 ) - { - v37 = (unsigned int *)(v86 + 5); - v53 = 0; - v42 = v86 + 6; - v55 = 32; - } - else - { - v35 = 0; - v36 = v11; - v84 = &decimal_point[v91]; - v37 = (unsigned int *)(v86 + 5); - v82 = 0; - do - { - while ( 1 ) - { - v40 = *(v36 - 1); - v41 = (unsigned int)(v36 - 1); - v42 = (int *)(v37 + 1); - if ( (_BYTE)v40 != *v84 ) - break; - v36 = (unsigned __int8 *)(v41 - v91); - if ( v41 - v91 <= v79 ) - goto LABEL_68; - } - if ( v35 == 32 ) - { - v43 = v82; - v44 = (int *)(v37 + 2); - v82 = 0; - *v37++ = v43; - v40 = *(v36 - 1); - v42 = v44; - v38 = 0; - v35 = 4; - } - else - { - v38 = v35; - v35 += 4; - } - v39 = (__hexdig_D2A[v40] & 0xF) << v38; - v36 = (unsigned __int8 *)v41; - v82 |= v39; - } - while ( v41 > v79 ); -LABEL_68: - v53 = v82; - _BitScanReverse(&v54, v82); - v55 = v54 ^ 0x1F; - } - *v37 = v53; - v56 = v42 - v89; - v86[4] = v56; - v57 = 32 * v56 - v55; - v58 = *a2; - if ( v57 > *a2 ) - { - v69 = v57 - v58; - v59 = __any_on_D2A((int)v86, v69); - if ( v59 ) - { - v59 = 1; - if ( (v89[(v69 - 1) >> 5] & (1 << (v69 - 1))) != 0 ) - { - if ( v69 == 1 || (v59 = 3, !__any_on_D2A((int)v86, v69 - 1)) ) - v59 = 2; - } - } - __rshift_D2A((int)v86, v69); - v85 += v69; - } - else - { - v59 = 0; - if ( v57 < *a2 ) - { - v85 -= v58 - v57; - v86 = __lshift_D2A(v86, v58 - v57); - v89 = v86 + 5; - } - } - if ( a2[2] < v85 ) - { -LABEL_110: - __Bfree_D2A(v86); - goto LABEL_111; - } - v60 = a2[1]; - if ( v60 <= v85 ) - { - v61 = 1; - goto LABEL_75; - } - v64 = v60 - v85; - if ( v58 > v60 - v85 ) - { - v70 = v64 - 1; - if ( v59 ) - { - v59 = 1; - } - else if ( v64 != 1 ) - { - v76 = __any_on_D2A((int)v86, v64 - 1); - v70 = v64 - 1; - v59 = v76; - } - Val = v64; - if ( (v89[v70 >> 5] & (1 << v70)) != 0 ) - v59 |= 2u; - v58 -= v64; - v61 = 2; - __rshift_D2A((int)v86, Val); - v85 = a2[1]; -LABEL_75: - if ( !v59 ) - { -LABEL_80: - *a4 = v86; - *a3 = v85; - return v61; - } - v62 = a2[3]; - if ( v62 == 2 ) - { - a5 = 1 - a5; - } - else if ( v62 != 3 ) - { - if ( v62 != 1 || (v59 & 2) == 0 || ((*v89 | v59) & 1) == 0 ) - goto LABEL_79; -LABEL_128: - v71 = v86[4]; - v86 = __increment_D2A(v86); - v72 = (unsigned int)(v86 + 5); - if ( v61 == 2 ) - { - v61 = 34; - if ( *a2 - 1 == v58 ) - v61 = ((*(_DWORD *)(v72 + 4 * (v58 >> 5)) & (1 << v58)) == 0) + 33; - goto LABEL_80; - } - if ( v86[4] <= v71 - && ((v73 = v58 & 0x1F) == 0 - || (_BitScanReverse(&v72, *(_DWORD *)(v72 + 4 * v71 - 4)), 32 - v73 <= (int)(v72 ^ 0x1F))) - || (__rshift_D2A((int)v86, 1), ++v85, a2[2] >= v85) ) - { - v61 = 33; - goto LABEL_80; - } - goto LABEL_110; - } - if ( !a5 ) - { -LABEL_79: - v61 |= 0x10u; - goto LABEL_80; - } - goto LABEL_128; - } - v65 = a2[3]; - if ( v65 == 2 ) - { - if ( !a5 ) - goto LABEL_141; - } - else if ( v65 == 3 ) - { - if ( a5 ) - goto LABEL_141; - } - else if ( v65 == 1 && v58 == v64 ) - { - if ( v58 == 1 ) - { -LABEL_141: - v86[4] = 1; - *v89 = 1; - goto LABEL_93; - } - if ( __any_on_D2A((int)v86, v58 - 1) ) - { - v60 = a2[1]; - goto LABEL_141; - } - } - __Bfree_D2A(v86); -LABEL_99: - *_errno() = 34; - return 80; - } - return 0; - } - goto LABEL_53; - } - v66 = decimal_point[1]; - if ( v66 ) - { - v67 = 1; - while ( v11[v67] == v66 ) - { - v66 = decimal_point[++v67]; - v68 = v67; - if ( !v66 ) - goto LABEL_151; - } - v28 = *v11; - } - else - { - v68 = 1; -LABEL_151: - v74 = &v11[v68]; - v11 = v74; - v28 = *v74; - if ( __hexdig_D2A[*v74] ) - { - do - { - v75 = *++v11; - v28 = v75; - } - while ( __hexdig_D2A[v75] ); - v85 = 4 * (v74 - v11); - goto LABEL_36; - } - } - v85 = 0; - goto LABEL_36; - } - } - else - { - v81 = 0; - v11 += v13; - v10 = 1; - v79 = (unsigned int)v15; - } - do - { -LABEL_31: - v26 = *++v11; - v27 = v26; - } - while ( __hexdig_D2A[v26] ); - goto LABEL_32; - } - } - else - { -LABEL_12: - v16 = v11; - } - v83 = v16; - if ( (v7 & 0xDF) != 80 ) - { - v81 = 1; - v17 = 0; - v85 = 0; - v78 = 0; - goto LABEL_15; - } - v85 = 0; - v81 = 1; -LABEL_54: - v45 = v83[1]; - if ( (_BYTE)v45 == 43 ) - { - v78 = 0; - } - else - { - if ( (_BYTE)v45 != 45 ) - { - v78 = 0; - v87 = v83 + 1; - goto LABEL_57; - } - v78 = 1; - } - v45 = v83[2]; - v87 = v83 + 2; -LABEL_57: - v46 = (unsigned __int8)__hexdig_D2A[v45]; - v17 = 0; - v16 = v83; - if ( (unsigned __int8)(v46 - 1) <= 0x18u ) - { - v90 = v46 - 16; - v16 = v87 + 1; - v47 = (unsigned __int8)__hexdig_D2A[v87[1]]; - if ( (unsigned __int8)(__hexdig_D2A[v87[1]] - 1) <= 0x18u ) - { - v88 = decimal_point; - v48 = v47; - v49 = v90; - do - { - v30 = (v49 & 0xF8000000) == 0; - v50 = 5 * v49; - if ( !v30 ) - v17 = 1; - v51 = v16[1]; - v49 = v48 + 2 * v50 - 16; - ++v16; - v48 = (unsigned __int8)__hexdig_D2A[v51]; - } - while ( (unsigned __int8)(__hexdig_D2A[v51] - 1) <= 0x18u ); - v90 = v49; - decimal_point = v88; - } - v52 = -v90; - if ( !v78 ) - v52 = v90; - v85 += v52; - } -LABEL_15: - if ( !v10 ) - v16 = v11 - 1; - *a1 = v16; - if ( v81 ) - return 0; - if ( !v17 ) - { - v79 = (unsigned int)v11; - v11 = v83; - goto LABEL_38; - } - v18 = a2[3]; - if ( v78 ) - { - if ( v18 == 2 ) - { - if ( a5 ) - goto LABEL_99; - } - else if ( v18 != 3 || !a5 ) - { - goto LABEL_99; - } - v86 = __Balloc_D2A(0); - v86[4] = 1; - v86[5] = 1; - v60 = a2[1]; -LABEL_93: - v25 = 98; - *a4 = v86; - *a3 = v60; - *_errno() = 34; - return v25; - } - if ( v18 == 2 ) - { - if ( !a5 ) - goto LABEL_111; - goto LABEL_23; - } - if ( v18 == 3 ) - { - if ( a5 ) - goto LABEL_111; - goto LABEL_23; - } - if ( v18 != 1 ) - { -LABEL_23: - v19 = *a2 & 0x1F; - v20 = *a2 >> 5; - v21 = v20 - ((v19 == 0) - 1); - v22 = 0; - for ( j = v21 >> 1; j; j >>= 1 ) - ++v22; - v24 = __Balloc_D2A(v22); - *a4 = v24; - v24[4] = v21; - if ( v20 > 0 ) - { - memset(v24 + 5, 255, 4 * v20); - v78 = v20; - } - if ( v21 > v20 ) - v24[v78 + 5] = 32 >> (32 - v19); - v25 = 17; - *a3 = a2[1]; - return v25; - } -LABEL_111: - *_errno() = 34; - return 163; -} -// 1522390: using guessed type char byte_1522390; - -//----- (0043E520) -------------------------------------------------------- -int __cdecl __rshift_D2A(int a1, int a2) -{ - int v2; // ebx - _DWORD *v3; // ebp - unsigned int v4; // ebx - _DWORD *v5; // esi - char v6; // di - int *v7; // edx - int v8; // eax - int v9; // esi - int v10; // ebx - _DWORD *v11; // edx - int result; // eax - _DWORD *v13; // edi - unsigned int v14; // [esp+0h] [ebp-24h] - int v15; // [esp+4h] [ebp-20h] - int v16; // [esp+8h] [ebp-1Ch] - - v2 = *(_DWORD *)(a1 + 16); - v16 = a2 >> 5; - v15 = v2; - if ( v2 <= a2 >> 5 ) - goto LABEL_8; - v3 = (_DWORD *)(a1 + 20); - v4 = a1 + 20 + 4 * v2; - v5 = (_DWORD *)(a1 + 20 + 4 * (a2 >> 5)); - v6 = a2 & 0x1F; - if ( (a2 & 0x1F) == 0 ) - { - v13 = (_DWORD *)(a1 + 20); - if ( v4 > (unsigned int)v5 ) - { - do - *v13++ = *v5++; - while ( v4 > (unsigned int)v5 ); - v11 = &v3[v15 - v16]; - goto LABEL_13; - } -LABEL_8: - *(_DWORD *)(a1 + 16) = 0; -LABEL_9: - result = a1; - *(_DWORD *)(a1 + 20) = 0; - return result; - } - v7 = v5 + 1; - v8 = *v5 >> v6; - if ( v4 <= (unsigned int)(v5 + 1) ) - { - *(_DWORD *)(a1 + 20) = v8; - if ( v8 ) - { - v11 = (_DWORD *)(a1 + 20); -LABEL_7: - ++v11; - goto LABEL_13; - } - goto LABEL_8; - } - v14 = v4; - v9 = a1 + 20; - do - { - v10 = *v7; - v9 += 4; - ++v7; - *(_DWORD *)(v9 - 4) = (v10 << (32 - v6)) | v8; - v8 = (unsigned int)*(v7 - 1) >> v6; - } - while ( v14 > (unsigned int)v7 ); - v3 = (_DWORD *)(a1 + 20); - v11 = (_DWORD *)(a1 + 20 + 4 * (v15 - v16) - 4); - *v11 = v8; - if ( v8 ) - goto LABEL_7; -LABEL_13: - result = v11 - v3; - *(_DWORD *)(a1 + 16) = result; - if ( v11 == v3 ) - goto LABEL_9; - return result; -} - -//----- (0043E630) -------------------------------------------------------- -int __cdecl __trailz_D2A(int a1) -{ - int *v1; // eax - unsigned int v2; // ebx - int v3; // edx - - v1 = (int *)(a1 + 20); - v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); - v3 = 0; - if ( a1 + 20 < v2 ) - { - while ( 1 ) - { - _ECX = *v1; - if ( *v1 ) - break; - ++v1; - v3 += 32; - if ( v2 <= (unsigned int)v1 ) - return v3; - } - if ( v2 > (unsigned int)v1 ) - { - __asm { tzcnt ecx, ecx } - v3 += _ECX; - } - } - return v3; -} - -//----- (0043E670) -------------------------------------------------------- -int __mingw_hexdig_init_D2A() -{ - const char *v0; // edx - int v1; // eax - int v2; // ecx - char *v3; // edx - int v4; // eax - int v5; // ecx - int v6; // edx - int result; // eax - char v8; // cl - - v0 = "123456789"; - v1 = 48; - do - { - v2 = (int)&(v0++)[16 - (_DWORD)"123456789"]; - __hexdig_D2A[v1] = v2; - v1 = *((unsigned __int8 *)v0 - 1); - } - while ( (_BYTE)v1 ); - v3 = (char *)&unk_5150F4; - v4 = 97; - do - { - v5 = (int)&(v3++)[26 - (_DWORD)&unk_5150F4]; - __hexdig_D2A[v4] = v5; - v4 = (unsigned __int8)*(v3 - 1); - } - while ( (_BYTE)v4 ); - v6 = 5329147; - result = 65; - do - { - v8 = v6++ + 31; - __hexdig_D2A[result] = v8; - result = *(unsigned __int8 *)(v6 - 1); - } - while ( (_BYTE)result ); - return result; -} - -//----- (0043E6F0) -------------------------------------------------------- -int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3) -{ - int *v3; // edx - unsigned __int8 *v4; // ebx - unsigned int v5; // eax - unsigned __int8 v6; // dl - unsigned int v7; // edx - unsigned __int8 *v8; // eax - int *v9; // ebp - int v10; // esi - int *v11; // edi - char v12; // cl - int *v13; // ebx - int v14; // edx - unsigned int v15; // eax - int v16; // edx - int v17; // eax - int *v18; // eax - unsigned int v19; // edi - int *v20; // ebp - int *v21; // edi - int *v22; // esi - unsigned int v23; // eax - size_t Size; // edx - int v25; // eax - int *v26; // eax - int v29; // edx - unsigned __int8 i; // dl - int *v31; // ecx - int *v32; // edx - int v33; // eax - unsigned int v34; // ebx - char v35; // [esp+10h] [ebp-3Ch] - char v36; // [esp+10h] [ebp-3Ch] - int v37; // [esp+14h] [ebp-38h] - int v38; // [esp+18h] [ebp-34h] - int *v39; // [esp+1Ch] [ebp-30h] - unsigned __int8 *v40; // [esp+20h] [ebp-2Ch] - int *v41; // [esp+28h] [ebp-24h] - int v42; // [esp+2Ch] [ebp-20h] - - if ( !byte_1522390 ) - __mingw_hexdig_init_D2A(); - v42 = *a2 & 0x1F; - v3 = &a3[*a2 >> 5]; - if ( v42 ) - { - v39 = &a3[*a2 >> 5]; - v41 = v3 + 1; - } - else - { - v41 = &a3[*a2 >> 5]; - v39 = v3 - 1; - } - *(v41 - 1) = 0; - v4 = *a1; - v5 = (*a1)[1]; - v6 = (*a1)[1]; - if ( !v6 ) - return 4; - while ( v5 <= 0x20 ) - { - v5 = v4[2]; - ++v4; - v6 = v5; - if ( !v5 ) - return 4; - } - if ( v6 == 48 && (v4[2] & 0xDF) == 88 && (v7 = v4[3], (unsigned __int8)v7 > 0x20u) ) - { - v8 = v4 + 3; - v4 += 2; - } - else - { - v7 = v4[1]; - v8 = v4 + 1; - if ( !v4[1] ) - return 4; - } - v9 = v39; - v38 = 0; - v10 = 0; - v37 = 0; - v11 = v39; - do - { - while ( 1 ) - { - v12 = __hexdig_D2A[v7]; - if ( v12 ) - break; - if ( v7 > 0x20 ) - { - v31 = v11; - v19 = (unsigned int)v9; - v20 = v31; - if ( v7 == 41 && v37 ) - { - *a1 = v4 + 2; - goto LABEL_25; - } - while ( 1 ) - { - ++v8; - if ( v7 == 41 ) - break; - v7 = (char)*v8; - if ( !*v8 ) - return 4; - } - *a1 = v8; - return 4; - } - if ( v37 > v38 ) - { - if ( v11 < v9 && v10 <= 7 ) - { - v40 = v8; - v13 = v11; - v35 = 4 * (8 - v10); - v14 = *v11; - do - { - v15 = v13[1]; - ++v13; - v16 = (v15 << (32 - v35)) | v14; - v17 = v15 >> v35; - *(v13 - 1) = v16; - *v13 = v17; - v14 = v17; - } - while ( v13 < v9 ); - v8 = v40; - } - if ( v11 <= a3 ) - { - v7 = v8[1]; - v4 = v8; - v10 = 8; - goto LABEL_23; - } - v9 = v11 - 1; - *(v11 - 1) = 0; - v10 = 0; - v38 = v37; - --v11; - } - for ( i = v8[1]; i <= 0x20u; ++v8 ) - i = v8[2]; - if ( i != 48 ) - goto LABEL_49; - if ( (v8[2] & 0xDF) != 88 ) - goto LABEL_49; - v7 = v8[3]; - if ( (unsigned __int8)v7 <= 0x20u ) - goto LABEL_49; - v4 = v8 + 2; - v8 += 3; - } - ++v10; - ++v37; - if ( v10 > 8 ) - { - if ( v11 <= a3 ) - goto LABEL_49; - *(v11 - 1) = 0; - v29 = 0; - --v11; - v10 = 1; - } - else - { - v29 = 16 * *v11; - } - *v11 = v29 | v12 & 0xF; -LABEL_49: - v7 = v8[1]; - v4 = v8; -LABEL_23: - ++v8; - } - while ( v7 ); - v18 = v11; - v19 = (unsigned int)v9; - v20 = v18; - if ( !v37 ) - return 4; -LABEL_25: - if ( v19 > (unsigned int)v20 && v10 <= 7 ) - { - v32 = v20; - v36 = 4 * (8 - v10); - v33 = *v20; - do - { - v34 = v32[1]; - *v32++ = (v34 << (32 - v36)) | v33; - v33 = v34 >> v36; - *v32 = v34 >> v36; - } - while ( (unsigned int)v32 < v19 ); - } - if ( a3 >= v20 ) - { - v25 = *(v41 - 1); - if ( v42 ) - { - v25 &= 0xFFFFFFFF >> (32 - v42); - *(v41 - 1) = v25; - } - } - else - { - v21 = a3; - v22 = v20; - do - *v21++ = *v22++; - while ( v39 >= v22 ); - v23 = 4 * ((unsigned int)((char *)v39 - (char *)v20) >> 2) + 4; - if ( (char *)v39 + 1 < (char *)v20 + 1 ) - v23 = 4; - Size = 4 * ((unsigned int)((char *)v39 - ((char *)a3 + v23)) >> 2) + 4; - if ( (char *)a3 + v23 + 1 > (char *)v39 + 1 ) - Size = 4; - memset((char *)a3 + v23, 0, Size); - v25 = *(v41 - 1); - } - if ( v25 ) - return 5; - if ( v39 != a3 ) - { - v26 = v39; - while ( 1 ) - { - if ( *--v26 ) - return 5; - if ( a3 == v26 ) - { - v39 = v26; - break; - } - } - } - *v39 = 1; - return 5; -} -// 1522390: using guessed type char byte_1522390; - -//----- (0043EB10) -------------------------------------------------------- -void __usercall dtoa_lock(int a1@) -{ - int v2; // eax - __int32 v3; // eax - - if ( dtoa_CS_init == 2 ) - goto LABEL_9; - if ( dtoa_CS_init ) - { - if ( dtoa_CS_init != 1 ) - return; - do - { -LABEL_4: - Sleep(1u); - v2 = dtoa_CS_init; - } - while ( dtoa_CS_init == 1 ); - goto LABEL_5; - } - v3 = _InterlockedExchange(&dtoa_CS_init, 1); - if ( !v3 ) - { - InitializeCriticalSection(&dtoa_CritSec); - InitializeCriticalSection(&CriticalSection); - atexit(dtoa_lock_cleanup); - dtoa_CS_init = 2; - goto LABEL_9; - } - if ( v3 == 2 ) - { - dtoa_CS_init = 2; - goto LABEL_9; - } - v2 = dtoa_CS_init; - if ( dtoa_CS_init == 1 ) - goto LABEL_4; -LABEL_5: - if ( v2 == 2 ) -LABEL_9: - EnterCriticalSection((LPCRITICAL_SECTION)(24 * a1 + 22162880)); -} -// 1522DA8: using guessed type int dtoa_CS_init; - -//----- (0043EBF0) -------------------------------------------------------- -void dtoa_lock_cleanup(void) -{ - if ( _InterlockedExchange(&dtoa_CS_init, 3) == 2 ) - { - DeleteCriticalSection(&dtoa_CritSec); - DeleteCriticalSection(&CriticalSection); - } -} -// 1522DA8: using guessed type int dtoa_CS_init; - -//----- (0043EC30) -------------------------------------------------------- -int *__cdecl __Balloc_D2A(int a1) -{ - int v1; // esi - int *result; // eax - bool v3; // zf - int *v4; // [esp+1Ch] [ebp-10h] - - dtoa_lock(0); - if ( a1 > 9 ) - goto LABEL_2; - result = (int *)freelist[a1]; - if ( result ) - { - v3 = dtoa_CS_init == 2; - freelist[a1] = *result; - if ( !v3 ) - goto LABEL_4; -LABEL_8: - v4 = result; - LeaveCriticalSection(&dtoa_CritSec); - result = v4; - goto LABEL_4; - } - result = (int *)pmem_next; - v1 = 1 << a1; - if ( ((unsigned int)(4 * (1 << a1) + 27) >> 3) + (((_BYTE *)pmem_next - (_BYTE *)&private_mem) >> 3) > 0x120 ) - { -LABEL_2: - v1 = 1 << a1; - result = (int *)malloc((4 * (1 << a1) + 27) & 0xFFFFFFF8); - if ( !result ) - return result; - } - else - { - pmem_next = (char *)pmem_next + ((4 * (1 << a1) + 27) & 0xFFFFFFF8); - } - v3 = dtoa_CS_init == 2; - result[1] = a1; - result[2] = v1; - if ( v3 ) - goto LABEL_8; -LABEL_4: - result[4] = 0; - result[3] = 0; - return result; -} -// 50B154: using guessed type void *pmem_next; -// 1522D80: using guessed type int freelist[]; -// 1522DA8: using guessed type int dtoa_CS_init; - -//----- (0043ED20) -------------------------------------------------------- -void __cdecl __Bfree_D2A(void *Block) -{ - int v1; // eax - bool v2; // zf - int v3; // edx - - if ( Block ) - { - if ( *((int *)Block + 1) <= 9 ) - { - dtoa_lock(0); - v1 = *((_DWORD *)Block + 1); - v2 = dtoa_CS_init == 2; - v3 = freelist[v1]; - freelist[v1] = (int)Block; - *(_DWORD *)Block = v3; - if ( v2 ) - LeaveCriticalSection(&dtoa_CritSec); - } - else - { - free(Block); - } - } -} -// 1522D80: using guessed type int freelist[]; -// 1522DA8: using guessed type int dtoa_CS_init; - -//----- (0043ED90) -------------------------------------------------------- -int *__cdecl __multadd_D2A(int *a1, int a2, int a3) -{ - int v3; // ecx - __int64 v4; // rdi - unsigned __int64 v5; // rax - int *v6; // ebp - int *v8; // eax - int v9; // [esp+1Ch] [ebp-20h] - - v3 = 0; - HIDWORD(v4) = a3; - LODWORD(v4) = a3 >> 31; - v9 = a1[4]; - do - { - v5 = __PAIR64__(v4, HIDWORD(v4)) + a2 * (unsigned __int64)(unsigned int)a1[v3 + 5]; - a1[v3 + 5] = v5; - LODWORD(v4) = 0; - ++v3; - HIDWORD(v4) = HIDWORD(v5); - } - while ( v9 > v3 ); - v6 = a1; - if ( v4 ) - { - if ( a1[2] <= v9 ) - { - v8 = __Balloc_D2A(a1[1] + 1); - v6 = v8; - if ( v8 ) - { - memcpy(v8 + 3, a1 + 3, 4 * a1[4] + 8); - __Bfree_D2A(a1); - v6[v9 + 5] = HIDWORD(v4); - v6[4] = v9 + 1; - } - } - else - { - v6 = a1; - a1[v9 + 5] = HIDWORD(v5); - a1[4] = v9 + 1; - } - } - return v6; -} - -//----- (0043EE70) -------------------------------------------------------- -_DWORD *__cdecl __i2b_D2A(int a1) -{ - _DWORD *result; // eax - bool v2; // zf - _DWORD *v3; // [esp+1Ch] [ebp-10h] - - dtoa_lock(0); - result = (_DWORD *)dword_1522D84; - if ( dword_1522D84 ) - { - dword_1522D84 = *(_DWORD *)dword_1522D84; - if ( dtoa_CS_init != 2 ) - { -LABEL_3: - result[3] = 0; - result[4] = 1; - result[5] = a1; - return result; - } -LABEL_8: - v3 = result; - LeaveCriticalSection(&dtoa_CritSec); - result = v3; - goto LABEL_3; - } - result = pmem_next; - if ( (unsigned int)((((_BYTE *)pmem_next - (_BYTE *)&private_mem) >> 3) + 4) <= 0x120 ) - { - pmem_next = (char *)pmem_next + 32; -LABEL_7: - v2 = dtoa_CS_init == 2; - result[1] = 1; - result[2] = 2; - if ( !v2 ) - goto LABEL_3; - goto LABEL_8; - } - result = malloc(0x20u); - if ( result ) - goto LABEL_7; - return result; -} -// 50B154: using guessed type void *pmem_next; -// 1522D84: using guessed type int dword_1522D84; -// 1522DA8: using guessed type int dtoa_CS_init; - -//----- (0043EF20) -------------------------------------------------------- -int *__cdecl __mult_D2A(int a1, int a2) -{ - int v2; // edi - int v3; // ebx - int v4; // esi - int v5; // ebp - int *v6; // eax - unsigned int v7; // eax - unsigned int v8; // edx - unsigned int v9; // esi - unsigned int *v10; // ebp - unsigned __int64 v11; // rax - int v12; // eax - unsigned int v14; // [esp+14h] [ebp-48h] - unsigned int v15; // [esp+18h] [ebp-44h] - unsigned int v16; // [esp+1Ch] [ebp-40h] - unsigned int v17; // [esp+20h] [ebp-3Ch] - unsigned int *v18; // [esp+24h] [ebp-38h] - unsigned int v19; // [esp+28h] [ebp-34h] - int v20; // [esp+2Ch] [ebp-30h] - int *v21; // [esp+30h] [ebp-2Ch] - unsigned int *v22; // [esp+34h] [ebp-28h] - unsigned int v23; // [esp+3Ch] [ebp-20h] - - v2 = a1; - v3 = a2; - v4 = *(_DWORD *)(a1 + 16); - v5 = *(_DWORD *)(a2 + 16); - if ( v4 >= v5 ) - { - v5 = *(_DWORD *)(a1 + 16); - v4 = *(_DWORD *)(a2 + 16); - v3 = a1; - v2 = a2; - } - v20 = v5 + v4; - v6 = __Balloc_D2A(*(_DWORD *)(v3 + 4) + (*(_DWORD *)(v3 + 8) < v5 + v4)); - v21 = v6; - if ( v6 ) - { - v22 = (unsigned int *)(v6 + 5); - v7 = (unsigned int)&v6[v20 + 5]; - if ( (unsigned int)v22 < v7 ) - memset(v22, 0, 4 * ((v7 - (unsigned int)v21 - 21) >> 2) + 4); - v17 = v3 + 20 + 4 * v5; - v15 = v2 + 20; - v19 = v2 + 20 + 4 * v4; - if ( v2 + 20 < v19 ) - { - v8 = 4; - if ( v17 >= v3 + 21 ) - v8 = 4 * ((unsigned int)(4 * v5 - 1) >> 2) + 4; - v23 = v8; - v18 = v22; - do - { - while ( 1 ) - { - v15 += 4; - if ( *(_DWORD *)(v15 - 4) ) - break; - ++v18; - if ( v19 <= v15 ) - goto LABEL_15; - } - v16 = *(_DWORD *)(v15 - 4); - v9 = 0; - v14 = v3 + 20; - v10 = v18; - do - { - v14 += 4; - v11 = v9 + *v10++ + *(unsigned int *)(v14 - 4) * (unsigned __int64)v16; - v9 = HIDWORD(v11); - *(v10 - 1) = v11; - } - while ( v17 > v14 ); - LODWORD(v11) = v18++; - *(_DWORD *)(v11 + v23) = HIDWORD(v11); - } - while ( v19 > v15 ); - } -LABEL_15: - if ( v20 > 0 ) - { - v12 = v20; - do - { - if ( v22[v12 - 1] ) - break; - --v12; - } - while ( v12 ); - v20 = v12; - } - v21[4] = v20; - } - return v21; -} - -//----- (0043F0D0) -------------------------------------------------------- -int *__cdecl __pow5mult_D2A(int *a1, int a2) -{ - int *v2; // edi - int v3; // ebx - int *v4; // ebp - int **v5; // esi - int *v6; // edi - int *v7; // eax - int *v8; // edi - int v10; // eax - bool v11; // zf - int v12; // edx - int *v13; // eax - int *v14; // eax - int *Block; // [esp+0h] [ebp-3Ch] - - v2 = a1; - if ( (a2 & 3) == 0 || (v2 = __multadd_D2A(a1, dword_51511C[a2 & 3], 0)) != 0 ) - { - v3 = a2 >> 2; - v4 = v2; - if ( a2 >> 2 ) - { - v5 = (int **)p5s; - if ( !p5s ) - { - dtoa_lock(1); - v5 = (int **)p5s; - if ( !p5s ) - { - v14 = __Balloc_D2A(1); - v5 = (int **)v14; - if ( !v14 ) - { - p5s = 0; - return 0; - } - v14[5] = 625; - v14[4] = 1; - p5s = (int)v14; - *v14 = 0; - } - if ( dtoa_CS_init == 2 ) - LeaveCriticalSection(&CriticalSection); - } - v4 = v2; - if ( (v3 & 1) != 0 ) - goto LABEL_9; -LABEL_5: - v3 >>= 1; - if ( v3 ) - { - while ( 1 ) - { - v6 = *v5; - if ( *v5 ) - goto LABEL_7; - dtoa_lock(1); - v6 = *v5; - if ( !*v5 ) - { - v13 = __mult_D2A((int)v5, (int)v5); - *v5 = v13; - v6 = v13; - if ( !v13 ) - return 0; - *v13 = 0; - } - if ( dtoa_CS_init != 2 ) - { -LABEL_7: - v5 = (int **)v6; - } - else - { - v5 = (int **)v6; - LeaveCriticalSection(&CriticalSection); - } - if ( (v3 & 1) == 0 ) - goto LABEL_5; -LABEL_9: - v7 = __mult_D2A((int)v4, (int)v5); - v8 = v7; - if ( !v7 ) - return 0; - if ( !v4 ) - { - v4 = v7; - goto LABEL_5; - } - if ( v4[1] <= 9 ) - { - dtoa_lock(0); - v10 = v4[1]; - v11 = dtoa_CS_init == 2; - v12 = freelist[v10]; - freelist[v10] = (int)v4; - *v4 = v12; - v4 = v8; - if ( v11 ) - LeaveCriticalSection(&dtoa_CritSec); - goto LABEL_5; - } - Block = v4; - v4 = v7; - free(Block); - v3 >>= 1; - if ( !v3 ) - return v4; - } - } - } - return v4; - } - return 0; -} -// 51511C: using guessed type int dword_51511C[]; -// 1522460: using guessed type int p5s; -// 1522D80: using guessed type int freelist[]; -// 1522DA8: using guessed type int dtoa_CS_init; - -//----- (0043F2B0) -------------------------------------------------------- -int *__cdecl __lshift_D2A(int *a1, int a2) -{ - int v2; // edx - int v3; // esi - int i; // eax - int *v5; // eax - int *v6; // edi - int *v7; // esi - int *v8; // edx - char v9; // cl - int *v10; // ebp - unsigned int v11; // eax - int v12; // ebx - int v13; // ebx - unsigned int v14; // ecx - int *v16; // edi - int *v17; // esi - int *v18; // [esp+1Ch] [ebp-30h] - int v19; // [esp+20h] [ebp-2Ch] - - v2 = a1[1]; - v3 = a2 >> 5; - v19 = (a2 >> 5) + a1[4]; - for ( i = a1[2]; v19 + 1 > i; ++v2 ) - i *= 2; - v5 = __Balloc_D2A(v2); - v18 = v5; - if ( v5 ) - { - v6 = v5 + 5; - if ( v3 > 0 ) - { - v6 += v3; - memset(v5 + 5, 0, 4 * v3); - } - v7 = a1 + 5; - v8 = &a1[a1[4] + 5]; - v9 = a2 & 0x1F; - if ( (a2 & 0x1F) != 0 ) - { - v10 = v6; - v11 = 0; - do - { - v12 = *v7; - ++v10; - ++v7; - *(v10 - 1) = (v12 << v9) | v11; - v11 = (unsigned int)*(v7 - 1) >> (32 - v9); - } - while ( v8 > v7 ); - v13 = v19 + 1; - v14 = 4 * ((unsigned int)((char *)v8 - (char *)a1 - 21) >> 2) + 4; - if ( v8 < (int *)((char *)a1 + 21) ) - v14 = 4; - if ( !v11 ) - v13 = v19; - *(int *)((char *)v6 + v14) = v11; - v19 = v13; - } - else - { - do - { - *v6 = *v7; - v17 = v7 + 1; - v16 = v6 + 1; - if ( v8 <= v17 ) - break; - *v16 = *v17; - v7 = v17 + 1; - v6 = v16 + 1; - } - while ( v8 > v7 ); - } - v18[4] = v19; - __Bfree_D2A(a1); - } - return v18; -} - -//----- (0043F3F0) -------------------------------------------------------- -int __cdecl __cmp_D2A(int a1, int a2) -{ - int v2; // eax - int v3; // ebx - int v4; // edx - _DWORD *v5; // eax - _DWORD *v6; // edx - - v2 = *(_DWORD *)(a2 + 16); - v3 = *(_DWORD *)(a1 + 16) - v2; - if ( !v3 ) - { - v4 = 4 * v2; - v5 = (_DWORD *)(a1 + 20 + 4 * v2); - v6 = (_DWORD *)(a2 + v4 + 20); - while ( *--v5 == *--v6 ) - { - if ( a1 + 20 >= (unsigned int)v5 ) - return v3; - } - return *v5 < *v6 ? -1 : 1; - } - return v3; -} - -//----- (0043F440) -------------------------------------------------------- -int *__cdecl __diff_D2A(int a1, int a2) -{ - int v2; // esi - int v3; // eax - int v4; // ebx - int v5; // edx - _DWORD *v6; // eax - _DWORD *v7; // edx - int *v8; // eax - int *v9; // edi - int v10; // eax - int v11; // ebx - int v12; // esi - unsigned int v13; // ebp - __int64 v14; // rcx - __int64 v15; // rax - unsigned __int64 v16; // rax - int v17; // edx - unsigned int v18; // ebx - unsigned int v19; // eax - unsigned int v20; // ebx - int v21; // ebx - int v22; // eax - unsigned int *v23; // ecx - int v24; // ebp - int v25; // ebx - unsigned int v26; // eax - unsigned __int64 v27; // rax - int v28; // eax - int v29; // edx - int v31; // [esp+18h] [ebp-44h] - int *v32; // [esp+24h] [ebp-38h] - int v33; // [esp+24h] [ebp-38h] - unsigned int v34; // [esp+28h] [ebp-34h] - int *v35; // [esp+2Ch] [ebp-30h] - unsigned int v36; // [esp+30h] [ebp-2Ch] - int v37; // [esp+34h] [ebp-28h] - int v38; // [esp+38h] [ebp-24h] - int *v39; // [esp+3Ch] [ebp-20h] - - v2 = a1; - v3 = *(_DWORD *)(a2 + 16); - v4 = *(_DWORD *)(a1 + 16) - v3; - if ( v4 ) - { - v4 = 0; - if ( *(_DWORD *)(a1 + 16) - v3 < 0 ) - { -LABEL_24: - v4 = 1; - v2 = a2; - a2 = a1; - } -LABEL_6: - v8 = __Balloc_D2A(*(_DWORD *)(v2 + 4)); - v35 = v8; - v9 = v8; - if ( v8 ) - { - v8[3] = v4; - v10 = *(_DWORD *)(v2 + 16); - v11 = v2 + 20; - v12 = 0; - v38 = v11; - v37 = v10; - v36 = v11 + 4 * v10; - v31 = v11; - v13 = a2 + 20; - v34 = a2 + 20 + 4 * *(_DWORD *)(a2 + 16); - v39 = v9 + 5; - v32 = v9 + 5; - do - { - v31 += 4; - v13 += 4; - v14 = *(unsigned int *)(v13 - 4); - v15 = *(unsigned int *)(v31 - 4) - (unsigned __int64)(unsigned int)v12 - v14; - LODWORD(v14) = *(_DWORD *)(v31 - 4) - v12 - v14; - v16 = __PAIR64__(HIDWORD(v15), (unsigned int)++v32) & 0x1FFFFFFFFLL; - v12 = HIDWORD(v16); - *(_DWORD *)(v16 - 4) = v14; - v17 = v14; - } - while ( v34 > v13 ); - v18 = v34 - a2 - 21; - v19 = v18 & 0xFFFFFFFC; - v20 = v18 >> 2; - if ( v34 < a2 + 21 ) - v19 = 0; - v21 = 4 * v20 + 4; - v22 = (int)v39 + v19; - if ( v34 < a2 + 21 ) - v21 = 4; - v23 = (unsigned int *)(v21 + v38); - v33 = v21 + v38; - if ( v36 > v21 + v38 ) - { - v24 = (int)v39 + v21; - v25 = (int)v39 + v21; - do - { - v26 = *v23++; - v27 = v26 - (unsigned __int64)(unsigned int)v12; - v25 += 4; - v12 = BYTE4(v27) & 1; - v17 = v27; - *(_DWORD *)(v25 - 4) = v27; - } - while ( v36 > (unsigned int)v23 ); - v22 = v24 + ((v36 - 1 - v33) & 0xFFFFFFFC); - } - if ( !v17 ) - { - v28 = v22 - 4 * v37; - v29 = v37; - do - --v29; - while ( !*(_DWORD *)(v28 + 4 * v29) ); - v37 = v29; - } - v35[4] = v37; - } - return v35; - } - else - { - v5 = 4 * v3; - v6 = (_DWORD *)(a1 + 20 + 4 * v3); - v7 = (_DWORD *)(a2 + v5 + 20); - do - { - if ( *--v6 != *--v7 ) - { - if ( *v6 < *v7 ) - goto LABEL_24; - goto LABEL_6; - } - } - while ( a1 + 20 < (unsigned int)v6 ); - v35 = __Balloc_D2A(0); - if ( !v35 ) - return v35; - v35[4] = 1; - v35[5] = 0; - return v35; - } -} - -//----- (0043F670) -------------------------------------------------------- -long double __cdecl __b2d_D2A(int a1, _DWORD *a2) -{ - unsigned int v2; // esi - int v3; // ebx - unsigned int v4; // edx - unsigned int v5; // ebp - unsigned int v6; // eax - signed int v7; // eax - int v8; // eax - unsigned int v9; // edi - int v11; // edi - int v12; // edx - double v13; // [esp+0h] [ebp-1Ch] - double v14; // [esp+0h] [ebp-1Ch] - - v2 = a1 + 20; - v3 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); - v4 = *(_DWORD *)(v3 - 4); - v5 = v3 - 4; - _BitScanReverse(&v6, v4); - v7 = v6 ^ 0x1F; - *a2 = 32 - v7; - if ( v7 > 10 ) - { - v8 = v7 - 11; - if ( v2 >= v5 ) - { - v9 = 0; - if ( v8 ) - { - v9 = 0; - HIDWORD(v13) = (v4 << v8) | 0x3FF00000; - goto LABEL_5; - } - } - else - { - v9 = *(_DWORD *)(v3 - 8); - if ( v8 ) - { - v12 = (v9 >> (32 - v8)) | (v4 << v8); - v9 <<= v8; - HIDWORD(v13) = v12 | 0x3FF00000; - if ( v2 < v3 - 8 ) - v9 |= *(_DWORD *)(v3 - 12) >> (32 - v8); - goto LABEL_5; - } - } - HIDWORD(v13) = v4 | 0x3FF00000; -LABEL_5: - LODWORD(v13) = v9; - return v13; - } - v11 = 0; - if ( v2 < v5 ) - v11 = *(_DWORD *)(v3 - 8) >> (11 - v7); - LODWORD(v14) = v11 | (v4 << (v7 + 21)); - HIDWORD(v14) = (v4 >> (11 - v7)) | 0x3FF00000; - return v14; -} - -//----- (0043F780) -------------------------------------------------------- -int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3) -{ - int *v3; // edx - int v6; // eax - int v8; // esi - int v9; // ebx - unsigned int v10; // eax - - v3 = __Balloc_D2A(1); - if ( !v3 ) - return v3; - _ESI = LODWORD(a1); - _EBX = HIDWORD(a1) & 0xFFFFF; - v6 = (HIDWORD(a1) >> 20) & 0x7FF; - if ( v6 ) - _EBX = HIDWORD(a1) & 0xFFFFF | 0x100000; - if ( LODWORD(a1) ) - { - __asm { tzcnt edi, esi } - v8 = LODWORD(a1) >> _EDI; - if ( _EDI ) - { - v8 |= _EBX << (32 - _EDI); - _EBX >>= _EDI; - } - v3[6] = _EBX; - v9 = 1 - ((_EBX == 0) - 1); - v3[5] = v8; - v3[4] = v9; - if ( !v6 ) - goto LABEL_8; - } - else - { - v3[4] = 1; - __asm { tzcnt ecx, ebx } - _EDI = _ECX + 32; - v3[5] = _EBX >> _ECX; - v9 = 1; - if ( !v6 ) - { -LABEL_8: - *a2 = _EDI - 1074; - _BitScanReverse(&v10, v3[v9 + 4]); - *a3 = 32 * v9 - (v10 ^ 0x1F); - return v3; - } - } - *a2 = v6 + _EDI - 1075; - *a3 = 53 - _EDI; - return v3; -} - -//----- (0043F880) -------------------------------------------------------- -int __cdecl __strcp_D2A(__int64 a1) -{ - __int64 v1; // rax - char v2; // cl - char v3; // cl - - v1 = a1 + 0x100000000LL; - v2 = *(_BYTE *)HIDWORD(a1); - *(_BYTE *)a1 = *(_BYTE *)HIDWORD(a1); - if ( v2 ) - { - do - { - v3 = *(_BYTE *)HIDWORD(v1); - LODWORD(v1) = v1 + 1; - ++HIDWORD(v1); - *(_BYTE *)v1 = v3; - } - while ( v3 ); - } - return v1; -} - -//----- (0043F8B0) -------------------------------------------------------- -int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5) -{ - int v5; // edi - int v6; // eax - int v7; // edx - int *result; // eax - char *v9; // ebx - int v10; // edx - char *v11; // ebx - char *v12; // esi - int v13; // edx - - v5 = a2; - if ( a3 <= 9 ) - { - v7 = 0; - } - else - { - v6 = 1; - v7 = 0; - do - { - v6 *= 2; - ++v7; - } - while ( (a3 + 8) / 9 > v6 ); - } - result = __Balloc_D2A(v7); - result[4] = 1; - result[5] = a4; - if ( a2 <= 9 ) - { - v11 = (char *)(a1 + a5 + 9); - v5 = 9; - } - else - { - v9 = (char *)(a1 + 9); - do - { - v10 = *v9++; - result = __multadd_D2A(result, 10, v10 - 48); - } - while ( v9 != (char *)(a2 + a1) ); - v11 = &v9[a5]; - } - if ( a3 > v5 ) - { - v12 = &v11[a3 - v5]; - do - { - v13 = *v11++; - result = __multadd_D2A(result, 10, v13 - 48); - } - while ( v12 != v11 ); - } - return result; -} - -//----- (0043F9A0) -------------------------------------------------------- -long double __cdecl __ratio_D2A(int a1, int a2) -{ - int v2; // eax - double v4; // [esp+10h] [ebp-3Ch] - double v5; // [esp+18h] [ebp-34h] - double v6; // [esp+20h] [ebp-2Ch] - double v7; // [esp+28h] [ebp-24h] - int v8; // [esp+38h] [ebp-14h] BYREF - int v9[4]; // [esp+3Ch] [ebp-10h] BYREF - - v4 = __b2d_D2A(a1, &v8); - v6 = v4; - v5 = __b2d_D2A(a2, v9); - v7 = v5; - v2 = v8 + 32 * (*(_DWORD *)(a1 + 16) - *(_DWORD *)(a2 + 16)) - v9[0]; - if ( v2 <= 0 ) - { - HIDWORD(v7) = HIDWORD(v5) - (v2 << 20); - return v4 / v7; - } - else - { - HIDWORD(v6) = HIDWORD(v4) + (v2 << 20); - return v6 / v5; - } -} -// 43F9A0: using guessed type int var_10[4]; - -//----- (0043FA60) -------------------------------------------------------- -int __cdecl __match_D2A(char **a1, char *a2) -{ - char *v3; // edx - int v4; // eax - int v5; // ebx - - v3 = *a1; - do - { - v5 = *a2++; - ++v3; - if ( !v5 ) - { - *a1 = v3; - return 1; - } - v4 = *v3; - if ( (unsigned int)(v4 - 65) < 0x1A ) - v4 += 32; - } - while ( v4 == v5 ); - return 0; -} - -//----- (0043FAB0) -------------------------------------------------------- -size_t __cdecl __copybits_D2A(char *a1, int Val, size_t Size) -{ - char *v3; // ecx - _DWORD *v4; // esi - size_t result; // eax - char *v6; // edi - - v3 = a1; - v4 = (_DWORD *)(Size + 20); - result = Size + 20 + 4 * *(_DWORD *)(Size + 16); - if ( Size + 20 < result ) - { - v6 = a1; - do - { - *(_DWORD *)v6 = *v4++; - v6 += 4; - } - while ( result > (unsigned int)v4 ); - result = (result - Size - 21) >> 2; - v3 = &a1[4 * result + 4]; - } - if ( &a1[4 * ((Val - 1) >> 5) + 4] > v3 ) - return (size_t)memset(v3, 0, 4 * ((unsigned int)(&a1[4 * ((Val - 1) >> 5) + 3] - v3) >> 2) + 4); - return result; -} - -//----- (0043FB30) -------------------------------------------------------- -int __cdecl __any_on_D2A(int a1, int a2) -{ - int v2; // esi - unsigned int v3; // edx - _DWORD *v4; // eax - int v6; // ecx - - v2 = *(_DWORD *)(a1 + 16); - v3 = a1 + 20; - if ( v2 < a2 >> 5 ) - { - v4 = (_DWORD *)(v3 + 4 * v2); - goto LABEL_4; - } - v4 = (_DWORD *)(v3 + 4 * (a2 >> 5)); - if ( v2 > a2 >> 5 && (a2 & 0x1F) != 0 ) - { - v6 = 1; - if ( *v4 != *v4 >> (a2 & 0x1F) << (a2 & 0x1F) ) - return v6; - } - do - { -LABEL_4: - if ( (unsigned int)v4 <= v3 ) - return 0; - } - while ( !*--v4 ); - return 1; -} - -//----- (0043FBA0) -------------------------------------------------------- -size_t __cdecl strnlen(const char *String, size_t MaxCount) -{ - size_t v2; // edx - const char *v3; // eax - - v2 = 0; - v3 = String; - if ( MaxCount ) - { - do - { - if ( !*v3 ) - break; - v2 = ++v3 - String; - } - while ( v3 - String < MaxCount ); - } - return v2; -} - -//----- (0043FBD0) -------------------------------------------------------- -size_t __cdecl wcsnlen(const wchar_t *Source, size_t MaxCount) -{ - size_t v2; // edx - size_t v3; // eax - - v2 = MaxCount; - v3 = 0; - if ( MaxCount ) - { - while ( Source[v3] ) - { - if ( MaxCount == ++v3 ) - return v2; - } - return v3; - } - return v2; -} - -//----- (0043FE40) -------------------------------------------------------- -int __cdecl __mbrtowc_cp(LPWSTR lpWideCharStr, BYTE *lpMultiByteStr, int a3, int *a4, UINT CodePage, unsigned int a6) -{ - int v6; // edx - BYTE TestChar; // al - int v8; // eax - int v10; // [esp+2Ch] [ebp-10h] BYREF - - if ( !lpMultiByteStr ) - return 0; - if ( !a3 ) - return -2; - v6 = *a4; - TestChar = *lpMultiByteStr; - *a4 = 0; - v10 = v6; - if ( !TestChar ) - { - *lpWideCharStr = 0; - return 0; - } - if ( a6 <= 1 ) - goto LABEL_11; - if ( (_BYTE)v6 ) - { - BYTE1(v10) = TestChar; - v8 = MultiByteToWideChar(CodePage, 8u, (LPCCH)&v10, 2, lpWideCharStr, 1); -LABEL_9: - if ( v8 ) - return 2; -LABEL_19: - *_errno() = 42; - return -1; - } - if ( !IsDBCSLeadByteEx(CodePage, TestChar) ) - { -LABEL_11: - if ( !CodePage ) - { - *lpWideCharStr = *lpMultiByteStr; - return 1; - } - if ( MultiByteToWideChar(CodePage, 8u, (LPCCH)lpMultiByteStr, 1, lpWideCharStr, 1) ) - return 1; - goto LABEL_19; - } - if ( a3 != 1 ) - { - v8 = MultiByteToWideChar(CodePage, 8u, (LPCCH)lpMultiByteStr, 2, lpWideCharStr, 1); - goto LABEL_9; - } - *(_BYTE *)a4 = *lpMultiByteStr; - return -2; -} - -//----- (0043FFE0) -------------------------------------------------------- -size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State) -{ - wchar_t *v4; // ebx - mbstate_t *v5; // esi - unsigned int v7; // [esp+10h] [ebp-2Ch] - unsigned int v8; // [esp+14h] [ebp-28h] - WCHAR v9; // [esp+2Eh] [ebp-Eh] BYREF - - v4 = DstCh; - v5 = State; - v9 = 0; - if ( !DstCh ) - v4 = &v9; - v8 = ___mb_cur_max_func(); - v7 = ___lc_codepage_func(); - if ( !State ) - v5 = (mbstate_t *)&internal_mbstate_2; - return __mbrtowc_cp(v4, (BYTE *)SrcCh, SizeInBytes, (int *)v5, v7, v8); -} - -//----- (00440040) -------------------------------------------------------- -size_t __cdecl mbsrtowcs(wchar_t *Dest, const char **PSrc, size_t Count, mbstate_t *State) -{ - mbstate_t *v4; // eax - int v5; // eax - unsigned int v6; // esi - BYTE *v7; // eax - unsigned int v8; // edi - wchar_t *v9; // ebx - int i; // eax - BYTE *v11; // ecx - unsigned int v13; // ebx - size_t v14; // esi - int v15; // eax - unsigned int v16; // [esp+28h] [ebp-34h] - __int16 v17[15]; // [esp+3Eh] [ebp-1Eh] BYREF - mbstate_t *Statea; // [esp+6Ch] [ebp+10h] - - v4 = (mbstate_t *)&internal_mbstate_1; - if ( State ) - v4 = State; - Statea = v4; - v16 = ___lc_codepage_func(); - v5 = ___mb_cur_max_func(); - if ( !PSrc ) - return 0; - v6 = v5; - v7 = (BYTE *)*PSrc; - if ( !*PSrc ) - return 0; - if ( Dest ) - { - v8 = 0; - if ( Count ) - { - v9 = Dest; - for ( i = __mbrtowc_cp(Dest, v7, Count, (int *)Statea, v16, v6); - i > 0; - i = __mbrtowc_cp(v9, v11, Count - v8, (int *)Statea, v16, v6) ) - { - v8 += i; - ++v9; - v11 = (BYTE *)&(*PSrc)[i]; - *PSrc = (const char *)v11; - if ( Count <= v8 ) - return v8; - } - if ( Count > v8 && !i ) - *PSrc = 0; - } - return v8; - } - else - { - v13 = v6; - v17[0] = 0; - v14 = 0; - while ( 1 ) - { - v15 = __mbrtowc_cp((LPWSTR)v17, &v7[v14], v13, (int *)Statea, v16, v13); - if ( v15 <= 0 ) - break; - v14 += v15; - v7 = (BYTE *)*PSrc; - } - return v14; - } -} -// 440040: using guessed type WCHAR var_1E[15]; - -//----- (00440180) -------------------------------------------------------- -size_t __cdecl mbrlen(const char *Ch, size_t SizeInBytes, mbstate_t *State) -{ - mbstate_t *v3; // ebx - unsigned int v5; // [esp+10h] [ebp-2Ch] - unsigned int v6; // [esp+14h] [ebp-28h] - __int16 v7[7]; // [esp+2Eh] [ebp-Eh] BYREF - - v3 = State; - v7[0] = 0; - v6 = ___mb_cur_max_func(); - v5 = ___lc_codepage_func(); - if ( !State ) - v3 = (mbstate_t *)&bss_1; - return __mbrtowc_cp((LPWSTR)v7, (BYTE *)Ch, SizeInBytes, (int *)v3, v5, v6); -} -// 440180: using guessed type WCHAR var_E[7]; - -//----- (004401E0) -------------------------------------------------------- -int __cdecl __wcrtomb_cp(LPSTR lpMultiByteStr, __int16 a2, UINT CodePage, int cbMultiByte) -{ - int result; // eax - __int16 WideCharStr[8]; // [esp+2Ch] [ebp-20h] BYREF - BOOL UsedDefaultChar; // [esp+3Ch] [ebp-10h] BYREF - - WideCharStr[0] = a2; - if ( !CodePage ) - { - if ( (unsigned __int16)a2 <= 0xFFu ) - { - *lpMultiByteStr = a2; - return 1; - } -LABEL_7: - *_errno() = 42; - return -1; - } - UsedDefaultChar = 0; - result = WideCharToMultiByte(CodePage, 0, (LPCWCH)WideCharStr, 1, lpMultiByteStr, cbMultiByte, 0, &UsedDefaultChar); - if ( !result || UsedDefaultChar ) - goto LABEL_7; - return result; -} -// 4401E0: using guessed type WCHAR WideCharStr[8]; - -//----- (00440280) -------------------------------------------------------- -size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State) -{ - char *v3; // ebx - int v4; // edi - unsigned int v5; // eax - CHAR v7; // [esp+1Bh] [ebp-11h] BYREF - - v3 = Dest; - if ( !Dest ) - v3 = &v7; - v4 = ___mb_cur_max_func(); - v5 = ___lc_codepage_func(); - return __wcrtomb_cp(v3, Source, v5, v4); -} - -//----- (004402D0) -------------------------------------------------------- -size_t __cdecl wcsrtombs(char *Dest, const wchar_t **PSource, size_t Count, mbstate_t *State) -{ - size_t v4; // ebx - char *v5; // esi - int v6; // edi - const wchar_t *v7; // ebp - __int16 *v8; // ebx - int v9; // ebp - size_t v10; // edi - int v11; // eax - int v13; // ebp - __int16 *i; // edi - int v15; // eax - unsigned int v16; // [esp+1Ch] [ebp-30h] - char v18[33]; // [esp+2Bh] [ebp-21h] BYREF - - v4 = 0; - v5 = Dest; - v16 = ___lc_codepage_func(); - v6 = ___mb_cur_max_func(); - v7 = *PSource; - if ( !*PSource ) - return v4; - if ( !Dest ) - { - v13 = v6; - for ( i = (__int16 *)*PSource; ; ++i ) - { - v15 = __wcrtomb_cp(v18, *i, v16, v13); - if ( v15 <= 0 ) - break; - v4 += v15; - if ( !v18[v15 - 1] ) - return v4 - 1; - } - return -1; - } - if ( Count ) - { - v8 = (__int16 *)*PSource; - v9 = v6; - v10 = 0; - while ( 1 ) - { - v11 = __wcrtomb_cp(v5, *v8, v16, v9); - if ( v11 <= 0 ) - return -1; - v5 += v11; - v10 += v11; - if ( !*(v5 - 1) ) - { - *PSource = 0; - return v10 - 1; - } - ++v8; - if ( Count <= v10 ) - { - v7 = (const wchar_t *)v8; - v4 = v10; - break; - } - } - } - *PSource = v7; - return v4; -} -// 4402D0: using guessed type CHAR var_21[33]; - -//----- (004403F0) -------------------------------------------------------- -FILE *__cdecl __acrt_iob_func(unsigned int Ix) -{ - return &__iob[Ix]; -} - -//----- (00440400) -------------------------------------------------------- -_invalid_parameter_handler __cdecl _get_invalid_parameter_handler() -{ - return (_invalid_parameter_handler)handler; -} -// 1522E0C: using guessed type int handler; - -//----- (00440410) -------------------------------------------------------- -_invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_invalid_parameter_handler Handler) -{ - return (_invalid_parameter_handler)_InterlockedExchange(&handler, (__int32)Handler); -} -// 1522E0C: using guessed type int handler; - -//----- (00440420) -------------------------------------------------------- -int __cdecl mingw_rand_s(int a1) -{ - char v1; // dl - int result; // eax - - if ( !a1 ) - return 22; - if ( !pRtlGenRandom ) - return 22; - v1 = pRtlGenRandom(a1, 4); - result = 0; - if ( !v1 ) - return 22; - return result; -} -// 1522E10: using guessed type int (__stdcall *pRtlGenRandom)(_DWORD, _DWORD); - -//----- (00440470) -------------------------------------------------------- -int __cdecl init_rand_s(int a1) -{ - HMODULE ModuleHandleW; // eax - int (__cdecl *rand_s)(int); // eax - HMODULE LibraryW; // eax - - ModuleHandleW = GetModuleHandleW(&ModuleName); - rand_s = (int (__cdecl *)(int))GetProcAddress(ModuleHandleW, "rand_s"); - if ( !rand_s ) - { - LibraryW = LoadLibraryW(&LibFileName); - pRtlGenRandom = (int (__stdcall *)(_DWORD, _DWORD))GetProcAddress(LibraryW, "SystemFunction036"); - rand_s = mingw_rand_s; - } - _rand_s = rand_s; - return rand_s(a1); -} -// 50B164: using guessed type int (__cdecl *_rand_s)(int); -// 1522E10: using guessed type int (__stdcall *pRtlGenRandom)(_DWORD, _DWORD); - -//----- (004404F0) -------------------------------------------------------- -void __cdecl _lock_file(FILE *Stream) -{ - FILE *v1; // eax - - if ( Stream >= __acrt_iob_func(0) && Stream <= __acrt_iob_func(0x13u) ) - { - v1 = __acrt_iob_func(0); - _lock(Stream - v1 + 16); - Stream->_flag |= 0x8000u; - } - else - { - EnterCriticalSection((LPCRITICAL_SECTION)&Stream[1]); - } -} -// 4406D0: using guessed type int __cdecl _lock(_DWORD); - -//----- (00440560) -------------------------------------------------------- -void __cdecl _unlock_file(FILE *Stream) -{ - FILE *v1; // eax - - if ( Stream >= __acrt_iob_func(0) && Stream <= __acrt_iob_func(0x13u) ) - { - Stream->_flag &= ~0x8000u; - v1 = __acrt_iob_func(0); - _unlock((FILE *)(Stream - v1 + 16)); - } - else - { - LeaveCriticalSection((LPCRITICAL_SECTION)&Stream[1]); - } -} -// 4406C8: using guessed type void __cdecl _unlock(FILE *Stream); - -//----- (004405D0) -------------------------------------------------------- -int __cdecl ___mb_cur_max_func() -{ - return ___mb_cur_max; -} - -//----- (004405E0) -------------------------------------------------------- -int msvcrt___lc_codepage_func() -{ - return *(_DWORD *)msvcrt__lc_codepage; -} -// 1522E14: using guessed type int msvcrt__lc_codepage; - -//----- (004405F0) -------------------------------------------------------- -int setlocale_codepage_hack() -{ - char *v0; // eax - char *v1; // eax - int v2; // edx - - v0 = setlocale(2, 0); - v1 = strchr(v0, 46); - v2 = 0; - if ( v1 ) - return atoi(v1 + 1); - return v2; -} - -//----- (00440630) -------------------------------------------------------- -int init_codepage_func() -{ - HMODULE ModuleHandleW; // eax - HMODULE v1; // ebx - unsigned int (__cdecl *___lc_codepage_func)(); // eax - - ModuleHandleW = GetModuleHandleW(&off_5152CC); - if ( ModuleHandleW ) - { - v1 = ModuleHandleW; - ___lc_codepage_func = (unsigned int (__cdecl *)())GetProcAddress(ModuleHandleW, "___lc_codepage_func"); - if ( ___lc_codepage_func ) - { -LABEL_3: - *(_DWORD *)____lc_codepage_func = ___lc_codepage_func; - return ___lc_codepage_func(); - } - msvcrt__lc_codepage = (int)GetProcAddress(v1, "__lc_codepage"); - if ( msvcrt__lc_codepage ) - { - ___lc_codepage_func = (unsigned int (__cdecl *)())msvcrt___lc_codepage_func; - goto LABEL_3; - } - } - *(_DWORD *)____lc_codepage_func = setlocale_codepage_hack; - return setlocale_codepage_hack(); -} -// 1522E14: using guessed type int msvcrt__lc_codepage; - -//----- (004406F0) -------------------------------------------------------- -int __cdecl __mingwthr_key_dtor(int a1, int a2) -{ - if ( a2 ) - return ___w64_mingwthr_add_key_dtor(a1, a2); - else - return 0; -} - -//----- (00440710) -------------------------------------------------------- -int __cdecl _txnal_cow_string_D1() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (00440740) -------------------------------------------------------- -void __cdecl __noreturn _txnal_cow_string_c_str() -{ - JUMPOUT(0); -} -// 440744: control flows out of bounds to 0 - -//----- (00440750) -------------------------------------------------------- -void __cdecl __noreturn _txnal_sso_string_c_str() -{ - JUMPOUT(0); -} -// 440754: control flows out of bounds to 0 - -//----- (00440760) -------------------------------------------------------- -char *__cdecl _txnal_logic_error_get_msg(char *a1) -{ - return a1 + 4; -} - -//----- (00440770) -------------------------------------------------------- -void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *Block) -{ - int v1; // eax - int v2[3]; // [esp+1Fh] [ebp-Dh] BYREF - - if ( !_CRT_MT ) - { - v1 = *((_DWORD *)Block + 2); - *((_DWORD *)Block + 2) = v1 - 1; - if ( v1 > 0 ) - return; -LABEL_5: - std::string::_Rep::_M_destroy((void *)Block, (int)v2); - return; - } - if ( _InterlockedExchangeAdd(Block + 2, 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; -// 440770: using guessed type int var_D[3]; - -//----- (004407C0) -------------------------------------------------------- -char *__cdecl _txnal_runtime_error_get_msg(char *a1) -{ - return a1 + 4; -} - -//----- (004407D0) -------------------------------------------------------- -void __cdecl _txnal_cow_string_C1_for_exceptions(struct _Unwind_Exception **a1) -{ - int v1; // eax - int v2; // ecx - int lpuexcpt; // [esp+14h] [ebp-48h] - struct _Unwind_Exception *lpuexcpta; // [esp+14h] [ebp-48h] - - lpuexcpt = 1; - while ( (unsigned __int8)MEMORY[0]() ) - ++lpuexcpt; - v1 = MEMORY[0](lpuexcpt + 12); - v2 = lpuexcpt; - *(_DWORD *)(v1 + 8) = 0; - v1 += 12; - *(_DWORD *)(v1 - 8) = lpuexcpt - 1; - *(_DWORD *)(v1 - 12) = lpuexcpt - 1; - lpuexcpta = (struct _Unwind_Exception *)v1; - MEMORY[0](v2); - *a1 = lpuexcpta; -} - -//----- (004408F0) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1) -{ - JUMPOUT(0); -} -// 4408F7: control flows out of bounds to 0 - -//----- (00440910) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1) -{ - JUMPOUT(0); -} -// 440917: control flows out of bounds to 0 - -//----- (00440930) -------------------------------------------------------- -void __cdecl _ZGTtNSt11logic_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::logic_error::~logic_error(v1); -} -// 4409C2: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 440930: using guessed type int var_C[3]; - -//----- (00440A20) -------------------------------------------------------- -void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::logic_error::~logic_error(v1); -} -// 440AB6: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 440A20: using guessed type int var_C[3]; - -//----- (00440B10) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 440B48: control flows out of bounds to 0 - -//----- (00440B50) -------------------------------------------------------- -int _ZGTtNSt11logic_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (00440B90) -------------------------------------------------------- -void __cdecl _ZGTtNSt11range_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51AB98; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51A954; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::range_error::~range_error(v1); -} -// 440C29: variable 'v1' is possibly undefined -// 51A954: using guessed type void (__cdecl *off_51A954)(std::range_error *__hidden this); -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 440B90: using guessed type int var_C[3]; - -//----- (00440C90) -------------------------------------------------------- -void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51AB98; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51A954; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::range_error::~range_error(v1); -} -// 440D2D: variable 'v1' is possibly undefined -// 51A954: using guessed type void (__cdecl *off_51A954)(std::range_error *__hidden this); -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 440C90: using guessed type int var_C[3]; - -//----- (00440D90) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 440DC8: control flows out of bounds to 0 - -//----- (00440DD0) -------------------------------------------------------- -int _ZGTtNSt11range_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (00440E10) -------------------------------------------------------- -void __cdecl _ZGTtNSt12domain_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51A9D8; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::domain_error::~domain_error(v1); -} -// 440EA9: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9D8: using guessed type void (__cdecl *off_51A9D8)(std::domain_error *__hidden this); -// 440E10: using guessed type int var_C[3]; - -//----- (00440F10) -------------------------------------------------------- -void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51A9D8; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::domain_error::~domain_error(v1); -} -// 440FAD: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9D8: using guessed type void (__cdecl *off_51A9D8)(std::domain_error *__hidden this); -// 440F10: using guessed type int var_C[3]; - -//----- (00441010) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 441048: control flows out of bounds to 0 - -//----- (00441050) -------------------------------------------------------- -int _ZGTtNSt12domain_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (00441090) -------------------------------------------------------- -void __cdecl _ZGTtNSt12length_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51A9EC; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::length_error::~length_error(v1); -} -// 441129: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9EC: using guessed type void (__cdecl *off_51A9EC)(std::length_error *__hidden this); -// 441090: using guessed type int var_C[3]; - -//----- (00441190) -------------------------------------------------------- -void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51A9EC; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::length_error::~length_error(v1); -} -// 44122D: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9EC: using guessed type void (__cdecl *off_51A9EC)(std::length_error *__hidden this); -// 441190: using guessed type int var_C[3]; - -//----- (00441290) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 4412C8: control flows out of bounds to 0 - -//----- (004412D0) -------------------------------------------------------- -int _ZGTtNSt12length_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (00441310) -------------------------------------------------------- -void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51AA00; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::out_of_range::~out_of_range(v1); -} -// 4413A9: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AA00: using guessed type void (__cdecl *off_51AA00)(std::out_of_range *__hidden this); -// 441310: using guessed type int var_C[3]; - -//----- (00441410) -------------------------------------------------------- -void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51AA00; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::out_of_range::~out_of_range(v1); -} -// 4414AD: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AA00: using guessed type void (__cdecl *off_51AA00)(std::out_of_range *__hidden this); -// 441410: using guessed type int var_C[3]; - -//----- (00441510) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 441548: control flows out of bounds to 0 - -//----- (00441550) -------------------------------------------------------- -int _ZGTtNSt12out_of_rangeD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (00441590) -------------------------------------------------------- -void __cdecl _ZGTtNSt13runtime_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51AB98; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::runtime_error::~runtime_error(v1); -} -// 441622: variable 'v1' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 441590: using guessed type int var_C[3]; - -//----- (00441680) -------------------------------------------------------- -void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - _BYTE v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51AB98; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::runtime_error::~runtime_error(v1); -} -// 441716: variable 'v1' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 441680: using guessed type int var_C[3]; - -//----- (00441770) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 4417A8: control flows out of bounds to 0 - -//----- (004417B0) -------------------------------------------------------- -int _ZGTtNSt13runtime_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (004417F0) -------------------------------------------------------- -void __cdecl _ZGTtNSt14overflow_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51AB98; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51AD18; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::overflow_error::~overflow_error(v1); -} -// 441889: variable 'v1' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AD18: using guessed type void (__cdecl *off_51AD18)(std::overflow_error *__hidden this); -// 4417F0: using guessed type int var_C[3]; - -//----- (004418F0) -------------------------------------------------------- -void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51AB98; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51AD18; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::overflow_error::~overflow_error(v1); -} -// 44198D: variable 'v1' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AD18: using guessed type void (__cdecl *off_51AD18)(std::overflow_error *__hidden this); -// 4418F0: using guessed type int var_C[3]; - -//----- (004419F0) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 441A28: control flows out of bounds to 0 - -//----- (00441A30) -------------------------------------------------------- -int _ZGTtNSt14overflow_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (00441A70) -------------------------------------------------------- -void __cdecl _ZGTtNSt15underflow_errorC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51AB98; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51AF4C; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::underflow_error::~underflow_error(v1); -} -// 441B09: variable 'v1' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AF4C: using guessed type void (__cdecl *off_51AF4C)(std::underflow_error *__hidden this); -// 441A70: using guessed type int var_C[3]; - -//----- (00441B70) -------------------------------------------------------- -void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51AB98; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51AF4C; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::underflow_error::~underflow_error(v1); -} -// 441C0D: variable 'v1' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AF4C: using guessed type void (__cdecl *off_51AF4C)(std::underflow_error *__hidden this); -// 441B70: using guessed type int var_C[3]; - -//----- (00441C70) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 441CA8: control flows out of bounds to 0 - -//----- (00441CB0) -------------------------------------------------------- -int _ZGTtNSt15underflow_errorD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (00441CF0) -------------------------------------------------------- -void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51AF80; - MEMORY[0](8); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::invalid_argument::~invalid_argument(v1); -} -// 441D89: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AF80: using guessed type void (__cdecl *off_51AF80)(std::invalid_argument *__hidden this); -// 441CF0: using guessed type int var_C[3]; - -//----- (00441DF0) -------------------------------------------------------- -void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE( - struct _Unwind_Exception **a1) -{ - std::exception *v1; // [esp+0h] [ebp-68h] - char v2[5]; // [esp+57h] [ebp-11h] BYREF - int v3[3]; // [esp+5Ch] [ebp-Ch] BYREF - - *(_DWORD *)&v2[1] = &off_51A940; - std::string::string(v3, (char *)byte_5147E0, (int)v2); - *(_DWORD *)&v2[1] = &off_51AF80; - MEMORY[0](8); - MEMORY[0](); - _txnal_cow_string_C1_for_exceptions(a1 + 1); - std::invalid_argument::~invalid_argument(v1); -} -// 441E8D: variable 'v1' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AF80: using guessed type void (__cdecl *off_51AF80)(std::invalid_argument *__hidden this); -// 441DF0: using guessed type int var_C[3]; - -//----- (00441EF0) -------------------------------------------------------- -void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1) -{ - int v1; // eax - - v1 = MEMORY[0](); - MEMORY[0](1, 0, v1 - 12); - JUMPOUT(0); -} -// 441F28: control flows out of bounds to 0 - -//----- (00441F30) -------------------------------------------------------- -int _ZGTtNSt16invalid_argumentD2Ev() -{ - int v0; // eax - - v0 = MEMORY[0](); - return MEMORY[0](1, 0, v0 - 12); -} - -//----- (00441F70) -------------------------------------------------------- -int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@) -{ - int result; // eax - int *v7; // [esp+1Ch] [ebp-10h] BYREF - - v7 = *a3; - if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2) ) - v7 = (int *)*v7; - result = (*(int (__thiscall **)(int, int, int **, int))(*(_DWORD *)a1 + 16))(a1, a2, &v7, 1); - if ( (_BYTE)result ) - *a3 = v7; - return result; -} - -//----- (00441FD0) -------------------------------------------------------- -char *__usercall parse_lsda_header@(int a1@, char *a2@, int a3@) -{ - int RegionStart; // eax - char v7; // dl - char *v8; // ebp - char v9; // al - char *v10; // esi - int v11; // edi - int v12; // ecx - char v13; // dl - int v14; // eax - char *v15; // edx - int v16; // edi - int v17; // ecx - char v18; // si - int v19; // eax - char *result; // eax - char v21; // di - char *v22; // eax - char *encoded_value_with_base; // ebp - char v24; // al - - RegionStart = 0; - if ( a1 ) - RegionStart = _Unwind_GetRegionStart(); - *(_DWORD *)a3 = RegionStart; - v7 = *a2; - v8 = a2 + 1; - if ( *a2 == -1 ) - { - *(_DWORD *)(a3 + 4) = RegionStart; - v9 = *v8; - v10 = a2 + 2; - *(_BYTE *)(a3 + 20) = *v8; - if ( v9 != -1 ) - goto LABEL_5; -LABEL_12: - *(_DWORD *)(a3 + 12) = 0; - goto LABEL_8; - } - v21 = *a2; - v22 = (char *)base_of_encoded_value(v7); - encoded_value_with_base = read_encoded_value_with_base(v21, v22, v8, (int *)(a3 + 4)); - v24 = *encoded_value_with_base; - v10 = encoded_value_with_base + 1; - *(_BYTE *)(a3 + 20) = *encoded_value_with_base; - if ( v24 == -1 ) - goto LABEL_12; -LABEL_5: - v11 = 0; - v12 = 0; - do - { - v13 = *v10++; - v14 = (v13 & 0x7F) << v12; - v12 += 7; - v11 |= v14; - } - while ( v13 < 0 ); - *(_DWORD *)(a3 + 12) = &v10[v11]; -LABEL_8: - v15 = v10 + 1; - v16 = 0; - v17 = 0; - *(_BYTE *)(a3 + 21) = *v10; - do - { - v18 = *v15++; - v19 = (v18 & 0x7F) << v17; - v17 += 7; - v16 |= v19; - } - while ( v18 < 0 ); - result = v15; - *(_DWORD *)(a3 + 16) = &v15[v16]; - return result; -} - -//----- (004420B0) -------------------------------------------------------- -int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4) -{ - char *v6; // ebx - int v7; // ebp - int v8; // ecx - char v9; // dl - int v10; // eax - char v11; // al - unsigned __int8 v12; // dl - int v13; // ecx - int result; // eax - int *v15; // [esp+1Ch] [ebp-30h] BYREF - int v16[8]; // [esp+2Ch] [ebp-20h] BYREF - - v15 = a3; - v6 = (char *)(*(_DWORD *)(a1 + 12) + ~a4); - while ( 1 ) - { - v7 = 0; - v8 = 0; - do - { - v9 = *v6++; - v10 = (v9 & 0x7F) << v8; - v8 += 7; - v7 |= v10; - } - while ( v9 < 0 ); - if ( !v7 ) - return 0; - v11 = *(_BYTE *)(a1 + 20); - if ( v11 == -1 ) - { - v13 = 0; - } - else - { - v12 = v11 & 7; - if ( (v11 & 7) == 2 ) - { - v13 = -2 * v7; - } - else - { - if ( v12 <= 2u ) - { - if ( v12 ) -LABEL_18: - abort(); - } - else if ( v12 != 3 ) - { - if ( v12 != 4 ) - goto LABEL_18; - v13 = -8 * v7; - goto LABEL_11; - } - v13 = -4 * v7; - } - } -LABEL_11: - read_encoded_value_with_base(v11, *(char **)(a1 + 8), (char *)(*(_DWORD *)(a1 + 12) + v13), v16); - result = get_adjusted_ptr(v16[0], a2, &v15); - if ( (_BYTE)result ) - return result; - } -} -// 4420B0: using guessed type int var_20[8]; - -//----- (00442190) -------------------------------------------------------- -int __usercall base_of_encoded_value@(char a1@) -{ - unsigned __int8 v1; // dl - - if ( a1 == -1 ) - return 0; - v1 = a1 & 0x70; - if ( (a1 & 0x70) == 48 ) - return _Unwind_GetDataRelBase(); - if ( v1 <= 0x30u ) - { - if ( v1 == 32 ) - return _Unwind_GetTextRelBase(); - if ( v1 > 0x20u || (a1 & 0x60) != 0 ) -LABEL_11: - abort(); - return 0; - } - if ( v1 != 64 ) - { - if ( v1 != 80 ) - goto LABEL_11; - return 0; - } - return _Unwind_GetRegionStart(); -} - -//----- (00442210) -------------------------------------------------------- -void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, void (**a2)(void)) -{ - void (*v2)(void); // edx - - if ( (unsigned int)a1 > _URC_FOREIGN_EXCEPTION_CAUGHT ) - __cxxabiv1::__terminate(*(a2 - 9)); - if ( !_InterlockedSub((volatile signed __int32 *)a2 - 16, 1u) ) - { - v2 = *(a2 - 11); - if ( v2 ) - v2(); - __cxa_free_exception(a2 + 8); - } -} - -//----- (00442260) -------------------------------------------------------- -char *__usercall read_encoded_value_with_base@(char a1@, char *a2@, char *a3@, int *a4) -{ - char *v4; // esi - int v6; // edx - char *result; // eax - unsigned int v8; // eax - int v9; // edx - int v10; // ecx - int v11; // ebp - char v12; // dl - int v13; // edi - unsigned int v14; // ecx - int v15; // ebp - char v16; // dl - int v17; // edi - char v18; // di - - v4 = a3; - if ( a1 == 80 ) - { - v8 = (unsigned int)(a3 + 3) & 0xFFFFFFFC; - v9 = *(_DWORD *)v8; - result = (char *)(v8 + 4); - *a4 = v9; - } - else - { - switch ( a1 & 0xF ) - { - case 0: - case 3: - case 0xB: - v6 = *(_DWORD *)a3; - result = a3 + 4; - goto LABEL_4; - case 1: - result = a3; - v10 = 0; - v11 = 0; - do - { - v12 = *result++; - v13 = (v12 & 0x7F) << v10; - v10 += 7; - v11 |= v13; - } - while ( v12 < 0 ); - v6 = v11; - goto LABEL_4; - case 2: - v6 = *(unsigned __int16 *)a3; - result = a3 + 2; - goto LABEL_4; - case 4: - case 0xC: - v6 = *(_DWORD *)a3; - result = a3 + 8; - goto LABEL_4; - case 9: - result = a3; - v14 = 0; - v15 = 0; - do - { - v16 = *result++; - v17 = (v16 & 0x7F) << v14; - v14 += 7; - v15 |= v17; - } - while ( v16 < 0 ); - v18 = v16; - v6 = v15; - if ( v14 > 0x1F || (v18 & 0x40) == 0 ) - goto LABEL_4; - v6 = (-1 << v14) | v15; - goto LABEL_5; - case 0xA: - v6 = *(__int16 *)a3; - result = a3 + 2; -LABEL_4: - if ( !v6 ) - goto LABEL_8; -LABEL_5: - if ( (a1 & 0x70) != 16 ) - v4 = a2; - v6 += (int)v4; - if ( a1 < 0 ) - *a4 = *(_DWORD *)v6; - else -LABEL_8: - *a4 = v6; - break; - default: - abort(); - } - } - return result; -} - -//----- (004423B0) -------------------------------------------------------- -void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)) -{ - a1(); - abort(); -} - -//----- (00442460) -------------------------------------------------------- -void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)) -{ - a1(); - std::terminate(); -} - -//----- (00442470) -------------------------------------------------------- -void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *Block) -{ - operator delete(Block); -} - -//----- (004424A0) -------------------------------------------------------- -void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1) -{ - std::type_info *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_519934; - std::type_info::~type_info(Block); - operator delete(a1); -} -// 4424AC: variable 'Block' is possibly undefined -// 519934: using guessed type void (__cdecl *off_519934)(__cxxabiv1::__class_type_info *__hidden this); - -//----- (004424D0) -------------------------------------------------------- -void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_519934; - std::type_info::~type_info(this); -} -// 4424D0: variable 'v1' is possibly undefined -// 519934: using guessed type void (__cdecl *off_519934)(__cxxabiv1::__class_type_info *__hidden this); - -//----- (004424E0) -------------------------------------------------------- -void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *Block) -{ - operator delete(Block); -} - -//----- (00442510) -------------------------------------------------------- -void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1) -{ - __cxxabiv1::__class_type_info *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_519974; - __cxxabiv1::__class_type_info::~__class_type_info(Block); - operator delete(a1); -} -// 44251C: variable 'Block' is possibly undefined -// 519974: using guessed type void (__cdecl *off_519974)(__cxxabiv1::__si_class_type_info *__hidden this); - -//----- (00442540) -------------------------------------------------------- -void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_519974; - __cxxabiv1::__class_type_info::~__class_type_info(this); -} -// 442540: variable 'v1' is possibly undefined -// 519974: using guessed type void (__cdecl *off_519974)(__cxxabiv1::__si_class_type_info *__hidden this); - -//----- (00442550) -------------------------------------------------------- -void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1) -{ - __cxxabiv1::__class_type_info *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_5199A0; - __cxxabiv1::__class_type_info::~__class_type_info(Block); - operator delete(a1); -} -// 44255C: variable 'Block' is possibly undefined -// 5199A0: using guessed type void (__cdecl *off_5199A0)(__cxxabiv1::__vmi_class_type_info *__hidden this); - -//----- (00442580) -------------------------------------------------------- -void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_5199A0; - __cxxabiv1::__class_type_info::~__class_type_info(this); -} -// 442580: variable 'v1' is possibly undefined -// 5199A0: using guessed type void (__cdecl *off_5199A0)(__cxxabiv1::__vmi_class_type_info *__hidden this); - -//----- (00442590) -------------------------------------------------------- -_DWORD *__cdecl `anonymous namespace'::get_locale_mutex() -{ - if ( !(_BYTE)`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex - && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex) ) - { - if ( _CRT_MT ) - __gthr_win32_mutex_init_function(`anonymous namespace'::get_locale_mutex(void)::locale_mutex); - __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex); - atexit(__tcf_0_2); - } - return `anonymous namespace'::get_locale_mutex(void)::locale_mutex; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50CBC0: using guessed type _DWORD `anonymous namespace'::get_locale_mutex(void)::locale_mutex[2]; - -//----- (00442660) -------------------------------------------------------- -void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1) -{ - std::_V2::error_category *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_5199CC; - std::_V2::error_category::~error_category(Block); - operator delete(a1); -} -// 44266C: variable 'Block' is possibly undefined -// 5199CC: using guessed type void (__cdecl *off_5199CC)(_anonymous_namespace_::io_error_category *__hidden this); - -//----- (00442680) -------------------------------------------------------- -void __cdecl `anonymous namespace'::io_error_category::~io_error_category( - _anonymous_namespace_::io_error_category *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_5199CC; - std::_V2::error_category::~error_category(this); -} -// 442680: variable 'v1' is possibly undefined -// 5199CC: using guessed type void (__cdecl *off_5199CC)(_anonymous_namespace_::io_error_category *__hidden this); - -//----- (00442690) -------------------------------------------------------- -void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *Block) -{ - operator delete(Block); -} - -//----- (004426B0) -------------------------------------------------------- -void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *Block) -{ - operator delete(Block); -} - -//----- (004426D0) -------------------------------------------------------- -void __usercall `anonymous namespace'::pool::free(int a1@) -{ - int v1; // esi - int *v2; // eax - _DWORD *v3; // edi - int v4; // ecx - int *v5; // ebx - int *v6; // edx - int *v7; // ebp - int v8; // edx - int v9; // eax - _DWORD *exception; // eax - int v12; // [esp+18h] [ebp-54h] - - v1 = _CRT_MT; - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_lock((int)`anonymous namespace'::emergency_pool) ) - __gnu_cxx::__throw_concurrence_lock_error(); - v1 = _CRT_MT; - } - v2 = (int *)dword_50B410; - v3 = (_DWORD *)(a1 - 16); - if ( !dword_50B410 - || (v4 = *(_DWORD *)(a1 - 16), v5 = (_DWORD *)((char *)v3 + v4), v12 = v4, dword_50B410 > (unsigned int)v3 + v4) ) - { - *(_DWORD *)(a1 - 12) = dword_50B410; - dword_50B410 = a1 - 16; - goto LABEL_18; - } - v6 = *(int **)(dword_50B410 + 4); - if ( (_DWORD *)dword_50B410 == (_DWORD *)((char *)v3 + v4) ) - { - *(_DWORD *)(a1 - 16) = *(_DWORD *)dword_50B410 + v4; - *(_DWORD *)(a1 - 12) = v6; - dword_50B410 = a1 - 16; -LABEL_18: - if ( !v1 ) - return; - goto LABEL_15; - } - v7 = &dword_50B410; - if ( v6 ) - { - while ( 1 ) - { - if ( v5 >= v6 ) - { - if ( v5 == v6 ) - { - v12 = *v5 + v4; - v2[1] = v5[1]; - } - v2 = (int *)*v7; - goto LABEL_13; - } - v7 = v2 + 1; - if ( !v6[1] ) - break; - v2 = v6; - v6 = (int *)v6[1]; - } - v2 = (int *)v2[1]; - v8 = *v2; - if ( v3 != (int *)((char *)v2 + *v2) ) - goto LABEL_14; - goto LABEL_22; - } -LABEL_13: - v8 = *v2; - if ( v3 == (int *)((char *)v2 + *v2) ) - { -LABEL_22: - *v2 = v12 + v8; - goto LABEL_18; - } -LABEL_14: - *(_DWORD *)(a1 - 12) = v2[1]; - v9 = *v7; - *(_DWORD *)(a1 - 16) = v12; - *(_DWORD *)(v9 + 4) = v3; - if ( !v1 ) - return; -LABEL_15: - if ( __gthr_win32_mutex_unlock((int)`anonymous namespace'::emergency_pool) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_519D0C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } -} -// 50B0F0: using guessed type int _CRT_MT; -// 50B408: using guessed type _DWORD `anonymous namespace'::emergency_pool[2]; -// 50B410: using guessed type int dword_50B410; -// 515CD4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 519D0C: using guessed type void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (004428A0) -------------------------------------------------------- -void __usercall `anonymous namespace'::pool::allocate(int a1@) -{ - unsigned int v1; // eax - unsigned int v2; // eax - int *v3; // ebx - unsigned int v4; // ecx - unsigned int *v5; // edx - unsigned int *v6; // esi - unsigned int v7; // esi - unsigned int *v8; // ecx - unsigned int v9; // eax - _DWORD *exception; // eax - unsigned int *v12; // [esp+18h] [ebp-44h] - - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_lock((int)`anonymous namespace'::emergency_pool) ) - __gnu_cxx::__throw_concurrence_lock_error(); - v9 = a1 + 16; - v12 = (unsigned int *)dword_50B410; - if ( v9 < 8 ) - v9 = 8; - v2 = (v9 + 15) & 0xFFFFFFF0; - if ( !dword_50B410 ) - { -LABEL_10: - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_unlock((int)`anonymous namespace'::emergency_pool) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_519D0C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - } - return; - } -LABEL_5: - v3 = &dword_50B410; - while ( 1 ) - { - v4 = *v12; - v5 = v12; - v6 = (unsigned int *)v12[1]; - v12 = v6; - if ( v4 >= v2 ) - break; - v3 = (int *)(v5 + 1); - if ( !v6 ) - goto LABEL_10; - } - v7 = v4 - v2; - if ( v4 - v2 > 7 ) - { - v8 = (unsigned int *)((char *)v5 + v2); - *v8 = v7; - v8[1] = (unsigned int)v12; - *(_DWORD *)*v3 = v2; - *v3 = (int)v5 + v2; - } - else - { - *v5 = v4; - *v3 = (int)v12; - } - goto LABEL_10; - } - v1 = a1 + 16; - v12 = (unsigned int *)dword_50B410; - if ( v1 < 8 ) - v1 = 8; - v2 = (v1 + 15) & 0xFFFFFFF0; - if ( dword_50B410 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50B408: using guessed type _DWORD `anonymous namespace'::emergency_pool[2]; -// 50B410: using guessed type int dword_50B410; -// 515CD4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 519D0C: using guessed type void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00442A50) -------------------------------------------------------- -HANDLE `anonymous namespace'::init() -{ - HANDLE result; // eax - - result = (HANDLE)_CRT_MT; - if ( _CRT_MT ) - result = __gthr_win32_recursive_mutex_init_function(`anonymous namespace'::fake_mutex); - `anonymous namespace'::static_mutex = (int)`anonymous namespace'::fake_mutex; - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50B2F0: using guessed type _DWORD `anonymous namespace'::fake_mutex[4]; -// 50BFC0: using guessed type int `anonymous namespace'::static_mutex; - -//----- (00442A90) -------------------------------------------------------- -#error "442B92: call analysis failed (funcsize=68)" - -//----- (00442B98) -------------------------------------------------------- -#error "442C9A: call analysis failed (funcsize=68)" - -//----- (00442CA0) -------------------------------------------------------- -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // edx - volatile signed __int32 *v5; // [esp+5Ch] [ebp-Ch] BYREF - - v5 = 0; - *this = 0; - this[1] = 0; - v2 = operator new(0x10u); - v2[1] = 1; - v2[2] = 1; - v2[3] = a2; - *v2 = &off_51AD64; - *this = a2; - v3 = (volatile signed __int32 *)this[1]; - this[1] = v2; - v5 = v3; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v5); -} -// 51AD64: using guessed type int (*off_51AD64)(); - -//----- (00442DA0) -------------------------------------------------------- -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // edx - volatile signed __int32 *v5; // [esp+5Ch] [ebp-Ch] BYREF - - v5 = 0; - *this = 0; - this[1] = 0; - v2 = operator new(0x10u); - v2[1] = 1; - v2[2] = 1; - v2[3] = a2; - *v2 = &off_51AD64; - *this = a2; - v3 = (volatile signed __int32 *)this[1]; - this[1] = v2; - v5 = v3; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v5); -} -// 51AD64: using guessed type int (*off_51AD64)(); - -//----- (00442EA0) -------------------------------------------------------- -void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // edx - volatile signed __int32 *v5; // [esp+5Ch] [ebp-Ch] BYREF - - v5 = 0; - *this = 0; - this[1] = 0; - v2 = operator new(0x10u); - v2[1] = 1; - v2[2] = 1; - v2[3] = a2; - *v2 = &off_51AD80; - *this = a2; - v3 = (volatile signed __int32 *)this[1]; - this[1] = v2; - v5 = v3; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v5); -} -// 51AD80: using guessed type int (*off_51AD80)(); - -//----- (00442FA0) -------------------------------------------------------- -#error "4430A2: call analysis failed (funcsize=68)" - -//----- (004430A8) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::NonTerminal::~NonTerminal(void *a1) -{ - operator delete(a1); -} - -// off_519A58 -//----- (004430BC) -------------------------------------------------------- -char __stdcall WXSS::CSSTreeLib::MarkHostRule::MarkGood( - WXSS::CSSTreeLib::MarkHostRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a2) -{ - int **v2; // edx - int v3; // eax - struct _Unwind_Exception *v4; // edx - const char *Literal; // eax - _DWORD *v6; // eax - char *v7; // eax - unsigned int **v8; // eax - unsigned int v10; // [esp+10h] [ebp-A8h] - int **v11; // [esp+14h] [ebp-A4h] - int v12; // [esp+14h] [ebp-A4h] - struct _Unwind_Exception **v13; // [esp+14h] [ebp-A4h] - int *lpuexcpt; // [esp+18h] [ebp-A0h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-A0h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-A0h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-A0h] - char v18[5]; // [esp+57h] [ebp-61h] BYREF - volatile signed __int32 *v19; // [esp+5Ch] [ebp-5Ch] BYREF - int v20; // [esp+60h] [ebp-58h] BYREF - volatile signed __int32 *v21; // [esp+64h] [ebp-54h] BYREF - void *v22[6]; // [esp+68h] [ebp-50h] BYREF - void *v23[6]; // [esp+80h] [ebp-38h] BYREF - void *v24; // [esp+98h] [ebp-20h] BYREF - volatile signed __int32 *v25; // [esp+9Ch] [ebp-1Ch] BYREF - - for ( lpuexcpt = (int *)*((_DWORD *)this + 30); *((int **)this + 31) != lpuexcpt; lpuexcpt += 2 ) - { - if ( std::operator==(*lpuexcpt, "SELECTORS") ) - { - v2 = *(int ***)(*lpuexcpt + 120); - v11 = v2; - if ( *(_DWORD *)(*lpuexcpt + 124) - (_DWORD)v2 == 8 ) - { - v3 = **v2; - if ( *(_BYTE *)v3 == 'F'/*70*/ && !strcmp((const char *)(v3 + 1), "_SELECTOR") ) - { - // v2 - std::__shared_ptr::__shared_ptr(&v18[1], v11); - v4 = *(struct _Unwind_Exception **)(*(_DWORD *)&v18[1] + 120); - lpuexcpta = v4; - v10 = *(_DWORD *)(*(_DWORD *)&v18[1] + 124) - (_DWORD)v4; // size - if ( v10 > 8 ) - { - v12 = *((_DWORD *)v4 + 2); - if ( !strcmp(*(const char **)v12, "$NAME") ) - { - Literal = WXSS::Token::GetLiteral((_DWORD *)(v12 + 24)); - if ( !strncmp(Literal, "host", 4u) ) - { - *((_DWORD *)this + 43) = 1; - if ( v10 == 40 ) - { - lpuexcptb = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpta + 6); - if ( !strcmp(*(const char **)lpuexcptb, "SELECTOR") ) - { - v13 = (struct _Unwind_Exception **)*((_DWORD *)lpuexcptb + 30); - if ( *((struct _Unwind_Exception ***)lpuexcptb + 31) != v13 ) - { - lpuexcptc = *v13; - if ( !strcmp(*(const char **)*v13, "$NAME") - && *WXSS::Token::GetLiteral((_DWORD *)lpuexcptc + 6) == '.'/*46*/ ) - { - *((_DWORD *)this + 43) = 2; - std::__shared_ptr::__shared_ptr( - &v20, - v13); - if ( !*(_DWORD *)(v20 + 132) ) - { - v6 = operator new(0x18u); // std::string - *v6 = v6 + 2; - v6[1] = 0; - *((_BYTE *)v6 + 8) = 0; - zcc::shared_ptr::shared_ptr(v6); - std::__shared_ptr::operator=( - (volatile signed __int32 **)(v20 + 132), - (volatile signed __int32 **)&v24); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v25); - } - v7 = (char *)WXSS::Token::GetLiteral((_DWORD *)(v20 + 24)); - std::string::basic_string(v22, v7, (int)v18); - std::string::substr(v23, v22, 1u, 0xFFFFFFFF); - v8 = std::string::insert((unsigned int **)v23, 0, ".%%HERESUFFIX%%"); - std::string::basic_string(&v24, v8); - std::string::operator=(*(_DWORD **)(v20 + 132), &v24); - std::string::_M_dispose(&v24); - std::string::_M_dispose(v23); - std::string::_M_dispose(v22); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v21); - } - } - } - } - } - } - } - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v19); - return 1; - } - } - } - } - return 1; -} - -//----- (00443448) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::MarkHostRule::~MarkHostRule(void *a1) -{ - operator delete(a1); -} - -// off_519A70 -//----- (0044345C) -------------------------------------------------------- -bool __stdcall WXSS::CSSTreeLib::AttrDebugRule::MarkGood( - WXSS::CSSTreeLib::AttrDebugRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a2) -{ - int v2; // edx - char *Literal; // eax - std::ostream::sentry *v4; // eax - char *v5; // eax - std::ostream::sentry *v6; // eax - unsigned int **v7; // edx - int v9; // [esp+1Ch] [ebp-13Ch] - void *Block; // [esp+20h] [ebp-138h] - bool v11; // [esp+26h] [ebp-132h] - bool v12; // [esp+27h] [ebp-131h] - bool v13; // [esp+27h] [ebp-131h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-130h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-130h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-130h] - struct _Unwind_Exception *lpuexcptc; // [esp+28h] [ebp-130h] - unsigned int **v18; // [esp+60h] [ebp-F8h] BYREF - volatile signed __int32 *v19; // [esp+64h] [ebp-F4h] BYREF - volatile signed __int32 *v20; // [esp+68h] [ebp-F0h] BYREF - volatile signed __int32 *v21; // [esp+6Ch] [ebp-ECh] BYREF - volatile signed __int32 *v22; // [esp+70h] [ebp-E8h] BYREF - volatile signed __int32 *v23; // [esp+74h] [ebp-E4h] BYREF - volatile signed __int32 *v24; // [esp+78h] [ebp-E0h] BYREF - volatile signed __int32 *v25; // [esp+7Ch] [ebp-DCh] BYREF - char v26[8]; // [esp+80h] [ebp-D8h] BYREF - char v27[4]; // [esp+88h] [ebp-D0h] BYREF - char v28[204]; // [esp+8Ch] [ebp-CCh] BYREF - - v9 = *((_DWORD *)this + 42); - lpuexcpta = (struct _Unwind_Exception *)operator new(0xB0u); - WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)lpuexcpta); - zcc::shared_ptr::shared_ptr(lpuexcpta); - std::basic_stringstream,std::allocator>::basic_stringstream((int)v26); - v20 = 0; - v21 = 0; - v22 = 0; - v23 = 0; - lpuexcpt = 0; - v11 = 0; - v12 = 0; - while ( 1 ) - { - v2 = *((_DWORD *)this + 30); - // lpuexcpt 索引 - if ( (*((_DWORD *)this + 31) - v2) >> 3 <= (unsigned int)lpuexcpt ) - break; - if ( !v12 ) - { - v12 = std::operator==(*(_DWORD *)(v2 + 8 * (_DWORD)lpuexcpt), "$NAME"); - if ( v12 ) - std::__shared_ptr::operator=( - &v20, - (volatile signed __int32 **)(*((_DWORD *)this + 30) + 8 * (_DWORD)lpuexcpt)); - } - if ( !v11 ) - { - v11 = std::operator==(*(_DWORD *)(*((_DWORD *)this + 30) + 8 * (_DWORD)lpuexcpt), "$ESV"); - if ( v11 ) - std::__shared_ptr::operator=( - &v22, - (volatile signed __int32 **)(*((_DWORD *)this + 30) + 8 * (_DWORD)lpuexcpt)); - } - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - } - v13 = v11 && v12; - if ( v13 ) - { - lpuexcptb = std::operator<<>((std::ostream::sentry *)v27, ";wxcs_style_"); - Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)v20 + 6); - v4 = std::operator<<>(lpuexcptb, Literal); - lpuexcptc = std::operator<<>(v4, " : "); - v5 = (char *)WXSS::Token::GetLiteral((_DWORD *)v22 + 6); - v6 = std::operator<<>(lpuexcptc, v5); - std::operator<<>(v6, ";"); - - std::string::operator=(v18, "FAKE_ATTR"); - Block = operator new(0x18u); - std::stringbuf::str((int)Block, (int)v28); - zcc::shared_ptr::shared_ptr(Block); - std::__shared_ptr::operator=((volatile signed __int32 **)v18 + 7, &v24); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v25); - v7 = v18; - // v18->offset_24 - v18[6] = (unsigned int *)3; - - // v18->offset_164 - v7[41] = (unsigned int *)(v9 + 1); - // v18->offset_168 - v7[42] = (unsigned int *)(v9 + 2); - std::vector>::push_back((void **)this + 30, &v18); - *((_BYTE *)this + 116) = 1; - } - else - { - *((_BYTE *)this + 116) = 0; - } - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v23); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v21); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v26); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v19); - return v13; -} -// 44345C: using guessed type char var_D0[4]; -// 44345C: using guessed type char var_CC[204]; - -//----- (00443848) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::AttrDebugRule::~AttrDebugRule(void *a1) -{ - operator delete(a1); -} - -// off_519A88 -//----- (0044385C) -------------------------------------------------------- -char __userpurge WXSS::CSSTreeLib::BlackListRule::MarkGood@( - int a1@, - WXSS::CSSTreeLib::BlackListRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a3) -{ - unsigned int v4; // ebx - const char *Literal; // edx - int v6; // ecx - int v7; // eax - const char *v9; // [esp+1Ch] [ebp-1Ch] - - v4 = 0; - Literal = WXSS::Token::GetLiteral((_DWORD *)this + 6); - while ( 1 ) - { - v6 = *(_DWORD *)(a1 + 4); - if ( -1431655765 * ((*(_DWORD *)(a1 + 8) - v6) >> 3) <= v4 ) - break; - v9 = Literal; - v7 = __stricmp(*(const char **)(v6 + 24 * v4), Literal); - Literal = v9; - if ( !v7 ) - { - *((_BYTE *)this + 116) = 0; - return v7; - } - ++v4; - } - LOBYTE(v7) = *((_BYTE *)this + 116); - return v7; -} - -//----- (004438C0) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(void *a1) -{ - WXSS::CSSTreeLib::BlackListRule::~BlackListRule((int)a1); - operator delete(a1); -} - -//----- (004438DC) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(int a1) -{ - *(_DWORD *)a1 = &off_519A88; - std::vector::~vector((void ***)(a1 + 4)); -} -// 519A88: using guessed type void (__cdecl *off_519A88)(WXSS::CSSTreeLib::BlackListRule *__hidden this); - -//----- (004438EC) -------------------------------------------------------- -void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(int this, WXSS::Token *a2, unsigned __int8 a3) -{ - unsigned int v4; // esi - char *Literal; // eax - int v6; // edx - int v7; // ecx - - if ( *(_BYTE *)(this + 116) ) - { - v4 = *(_DWORD *)(this + 172); - if ( !v4 ) - { - if ( *(_DWORD *)(this + 132) && a3 ) - { - std::string::operator+=(a2, *(_DWORD *)(this + 132)); - } - else - { - Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)(this + 24)); - std::string::operator+=(a2, Literal); - } - while ( 1 ) - { - v7 = *(_DWORD *)(this + 120); - if ( (*(_DWORD *)(this + 124) - v7) >> 3 <= v4 ) - break; - v6 = 8 * v4; - if ( v4 - && *(_DWORD *)(*(_DWORD *)(v7 + 8 * v4) + 164) > *(_DWORD *)(*(_DWORD *)(v7 + 8 * v4 - 8) + 168) - && *(_BYTE *)(*(_DWORD *)a2 + *((_DWORD *)a2 + 1) - 1) != '\n'/*10*/ ) - { - std::string::operator+=(a2, " "); - v6 = 8 * v4; - } - ++v4; - WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(*(_DWORD *)(this + 120) + v6), a2, a3); - } - if ( std::operator==(this, "MEDIA_RULE") - || std::operator==(this, "RULE") - || std::operator==(this, "DIRECTIVE") ) - { - std::string::operator+=(a2, "\n"); - } - } - } -} - -//----- (00443A14) -------------------------------------------------------- -void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(int this, WXSS::Token *a2) -{ - int v2; // eax - int v3; // edx - unsigned int **v4; // eax - _DWORD *v5; // eax - int v6; // edx - bool v7; // zf - int v8; // eax - unsigned int **v9; // eax - _DWORD *v10; // eax - int v11; // edx - unsigned int v12; // [esp+14h] [ebp-A4h] - void *v14[6]; // [esp+50h] [ebp-68h] BYREF - void *v15[6]; // [esp+68h] [ebp-50h] BYREF - void *v16[6]; // [esp+80h] [ebp-38h] BYREF - void *v17[8]; // [esp+98h] [ebp-20h] BYREF - - v12 = 0; - v2 = *(_DWORD *)(this + 172); - if ( v2 == 1 ) - { - while ( 1 ) - { - v3 = *(_DWORD *)(this + 120); // begin - if ( (*(_DWORD *)(this + 124) - v3) >> 3 <= v12 ) - break; - if ( std::operator==(*(_DWORD *)(v3 + 8 * v12), "SELECTORS") ) - { - std::string::substr(v14, *(_DWORD **)(this + 148), 2u, *(_DWORD *)(*(_DWORD *)(this + 148) + 4) - 7); - WXML::Rewrite::ToStringCode2((int)v15, (int *)v14); - v4 = std::string::insert((unsigned int **)v15, 0, "[is=\""); - std::string::basic_string(v16, v4); - v5 = std::string::append(v16, "\"]"); - std::string::basic_string(v17, v5); - std::string::operator+=(a2, (int)v17); - std::string::_M_dispose(v17); - std::string::_M_dispose(v16); - std::string::_M_dispose(v15); - std::string::_M_dispose(v14); - } - else - { - WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(*(_DWORD *)(this + 120) + 8 * v12), a2, 1u); - } - ++v12; - } - LABEL_9: - std::string::operator+=(a2, "\n"); - return; - } - if ( v2 == 2 ) - { - while ( 1 ) - { - v6 = *(_DWORD *)(this + 120); // begin - if ( (*(_DWORD *)(this + 124) - v6) >> 3 <= v12 ) - break; - v7 = !std::operator==(*(_DWORD *)(v6 + 8 * v12), "SELECTORS"); - v8 = *(_DWORD *)(this + 120); - if ( v7 ) - { - WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(v8 + 8 * v12), a2, 1u); - } - else - { - WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode( - *(_DWORD *)(*(_DWORD *)(**(_DWORD **)(*(_DWORD *)(v8 + 8 * v12) + 120) + 120) + 24), - a2, - 1u); - std::string::substr(v14, *(_DWORD **)(this + 148), 2u, *(_DWORD *)(*(_DWORD *)(this + 148) + 4) - 7); - WXML::Rewrite::ToStringCode2((int)v15, (int *)v14); - v9 = std::string::insert((unsigned int **)v15, 0, "[is=\""); - std::string::basic_string(v16, v9); - v10 = std::string::append(v16, "\"]"); - std::string::basic_string(v17, v10); - std::string::operator+=(a2, (int)v17); - std::string::_M_dispose(v17); - std::string::_M_dispose(v16); - std::string::_M_dispose(v15); - std::string::_M_dispose(v14); - } - ++v12; - } - goto LABEL_9; - } - while ( 1 ) - { - v11 = *(_DWORD *)(this + 120); // begin - if ( (*(_DWORD *)(this + 124) - v11) >> 3 <= v12 ) - break; - WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(*(_DWORD *)(v11 + 8 * v12++), a2); - } -} - -//----- (00443E2C) -------------------------------------------------------- -unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(int this, int a2, int a3) -{ - int i; // esi - std::ostream::sentry *v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // esi - unsigned int v8; // esi - int v9; // edx - unsigned int result; // eax - int v11; // ecx - std::ostream::sentry *v12; // [esp+0h] [ebp-28h] - std::ostream::sentry *v13; // [esp+0h] [ebp-28h] - char *v14; // [esp+4h] [ebp-24h] - char *Literal; // [esp+4h] [ebp-24h] - - for ( i = 0; i < a2; ++i ) - { - if ( *(_BYTE *)(this + 116) ) - v14 = " "; - else - v14 = "- "; - std::operator<<>((std::ostream::sentry *)(a3 + 8), v14); - } - v12 = (std::ostream::sentry *)(a3 + 8); - if ( *(_DWORD *)(this + 132) ) - { - v5 = std::operator<<(v12, (int *)this); - v13 = std::operator<<>(v5, ": "); - std::operator<<>(v13, **(char ***)(this + 132)); - } - else - { - v6 = std::operator<<(v12, (int *)this); - v7 = std::operator<<>(v6, ": "); - Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)(this + 24)); - std::operator<<>(v7, Literal); - } - v8 = 0; - std::endl>((std::ostream::sentry *)(a3 + 8)); - while ( 1 ) - { - v9 = *(_DWORD *)(this + 120); - result = (*(_DWORD *)(this + 124) - v9) >> 3; - if ( result <= v8 ) - break; - v11 = *(_DWORD *)(v9 + 8 * v8++); - WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(v11, a2 + 1, a3); - } - return result; -} - -//----- (00443F08) -------------------------------------------------------- -int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1) -{ - int result; // eax - - result = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - *(_BYTE *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 24) = 1; // this->offset_24 - *(_DWORD *)(a1 + 36) = 0; - *(_DWORD *)(a1 + 40) = 0; - *(_DWORD *)(a1 + 44) = 0; - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)(a1 + 144) = 0; - *(_DWORD *)(a1 + 148) = 0; - *(_DWORD *)(a1 + 152) = 0; - *(_DWORD *)(a1 + 156) = 0; - *(_DWORD *)(a1 + 160) = 0; - *(_BYTE *)(a1 + 116) = 1; - *(_DWORD *)(a1 + 172) = 0; - *(_DWORD *)(a1 + 168) = 0; - *(_DWORD *)(a1 + 164) = 0; - return result; -} - -//----- (00443FD8) -------------------------------------------------------- -int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1) -{ - int result; // eax - - result = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - *(_BYTE *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 24) = 1; - *(_DWORD *)(a1 + 36) = 0; - *(_DWORD *)(a1 + 40) = 0; - *(_DWORD *)(a1 + 44) = 0; - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)(a1 + 144) = 0; - *(_DWORD *)(a1 + 148) = 0; - *(_DWORD *)(a1 + 152) = 0; - *(_DWORD *)(a1 + 156) = 0; - *(_DWORD *)(a1 + 160) = 0; - *(_BYTE *)(a1 + 116) = 1; - *(_DWORD *)(a1 + 172) = 0; - *(_DWORD *)(a1 + 168) = 0; - *(_DWORD *)(a1 + 164) = 0; - return result; -} - -//----- (004440A8) -------------------------------------------------------- -void __stdcall WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo(int *a1, unsigned int *a2, int a3) -{ - int v3; // ecx - std::ostream::sentry *v4; // eax - std::ostream::sentry *v5; // eax - unsigned int **v6; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-154h] - void *Block; // [esp+18h] [ebp-150h] - unsigned int **v9; // [esp+50h] [ebp-118h] BYREF - volatile signed __int32 *v10; // [esp+54h] [ebp-114h] BYREF - volatile signed __int32 *v11; // [esp+58h] [ebp-110h] BYREF - volatile signed __int32 *v12; // [esp+5Ch] [ebp-10Ch] BYREF - int v13[2]; // [esp+60h] [ebp-108h] BYREF - char v14; // [esp+68h] [ebp-100h] BYREF - void *v15[2]; // [esp+78h] [ebp-F0h] BYREF - char v16; // [esp+80h] [ebp-E8h] BYREF - char v17[8]; // [esp+90h] [ebp-D8h] BYREF - char v18[4]; // [esp+98h] [ebp-D0h] BYREF - char v19[204]; // [esp+9Ch] [ebp-CCh] BYREF - - v13[0] = (int)&v14; // std::string - v13[1] = 0; - v14 = 0; - - v15[0] = &v16; // std::string - v15[1] = 0; - v16 = 0; - - v3 = *a1; - WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(v3, (WXSS::Token *)v13, 0); - WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*a1, (WXSS::Token *)v15, 1u); - if ( !std::operator==((int)v13, (int)v15) ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)v17); - v4 = std::operator<<>((std::ostream::sentry *)v18, ";wxcs_originclass: "); - v5 = std::operator<<(v4, v13); - std::operator<<>(v5, ";"); - lpuexcpt = (struct _Unwind_Exception *)operator new(0xB0u); - WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)lpuexcpt); - zcc::shared_ptr::shared_ptr(lpuexcpt); - std::string::operator=(v9, "FAKE_ATTR"); - Block = operator new(0x18u); - std::stringbuf::str((int)Block, (int)v19); - zcc::shared_ptr::shared_ptr(Block); - std::__shared_ptr::operator=((volatile signed __int32 **)v9 + 7, &v11); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v12); - v6 = v9; - v9[41] = a2; // v9->offset_164 - v6[42] = (unsigned int *)((char *)a2 + 1); - // v9->offset_168 - v6[6] = (unsigned int *)3; - std::vector>::push_back((void **)(*(_DWORD *)a3 + 120), &v9); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v10); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v17); - } - std::string::_M_dispose(v15); - std::string::_M_dispose((void **)v13); -} -// 4440A8: using guessed type char var_D0[4]; -// 4440A8: using guessed type char var_CC[204]; - -// off_519AA0 -//----- (00444380) -------------------------------------------------------- -bool __stdcall WXSS::CSSTreeLib::RuleDebugRule::MarkGood( - WXSS::CSSTreeLib::RuleDebugRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a2) -{ - int v2; // edx - int v3; // eax - std::ostream::sentry *v4; // eax - std::ostream::sentry *v5; // eax - std::ostream::sentry *v6; // eax - std::ostream::sentry *v7; // eax - unsigned int **v8; // edx - void *Block; // [esp+14h] [ebp-154h] - int v11; // [esp+18h] [ebp-150h] - int v12; // [esp+1Ch] [ebp-14Ch] - bool v13; // [esp+1Ch] [ebp-14Ch] - bool v14; // [esp+20h] [ebp-148h] - int *v15; // [esp+20h] [ebp-148h] - bool v16; // [esp+24h] [ebp-144h] - int *v17; // [esp+24h] [ebp-144h] - void *v18; // [esp+24h] [ebp-144h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-140h] - bool lpuexcpta; // [esp+28h] [ebp-140h] - volatile signed __int32 *v21; // [esp+68h] [ebp-100h] BYREF - volatile signed __int32 *v22; // [esp+6Ch] [ebp-FCh] BYREF - volatile signed __int32 *v23; // [esp+70h] [ebp-F8h] BYREF - volatile signed __int32 *v24; // [esp+74h] [ebp-F4h] BYREF - volatile signed __int32 *v25; // [esp+78h] [ebp-F0h] BYREF - volatile signed __int32 *v26; // [esp+7Ch] [ebp-ECh] BYREF - unsigned int **v27; // [esp+80h] [ebp-E8h] BYREF - volatile signed __int32 *v28; // [esp+84h] [ebp-E4h] BYREF - volatile signed __int32 *v29; // [esp+88h] [ebp-E0h] BYREF - volatile signed __int32 *v30; // [esp+8Ch] [ebp-DCh] BYREF - int v31; // [esp+90h] [ebp-D8h] BYREF - volatile signed __int32 *v32; // [esp+94h] [ebp-D4h] BYREF - char v33[4]; // [esp+98h] [ebp-D0h] BYREF - char v34[204]; // [esp+9Ch] [ebp-CCh] BYREF - - v16 = 0; - v21 = 0; - v22 = 0; - v23 = 0; - v24 = 0; - for ( lpuexcpt = 0; ; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v2 = *((_DWORD *)this + 30); - if ( (*((_DWORD *)this + 31) - v2) >> 3 <= (unsigned int)lpuexcpt ) - break; - v12 = 8 * (_DWORD)lpuexcpt; - // cur - v14 = std::operator==(*(_DWORD *)(v2 + 8 * (_DWORD)lpuexcpt), "ATTRS"); - v3 = *((_DWORD *)this + 30); - if ( v14 ) - { - std::__shared_ptr::operator=( - &v21, - (volatile signed __int32 **)(v12 + v3)); - v16 = v14; - } - else if ( std::operator==(*(_DWORD *)(v3 + 8 * (_DWORD)lpuexcpt), "{") ) - { - std::__shared_ptr::operator=( - &v23, - (volatile signed __int32 **)(*((_DWORD *)this + 30) + v12)); - } - } - if ( !v16 ) - std::__shared_ptr::operator=(&v21, &v23); - lpuexcpta = 0; - v25 = 0; - v26 = 0; - v11 = *((_DWORD *)v21 + 42); - v17 = (int *)*((_DWORD *)this + 30); - do - { - if ( *((int **)this + 31) == v17 ) - break; - v13 = std::operator==(*v17, "SELECTORS"); - if ( v13 ) - { - std::__shared_ptr::__shared_ptr(&v31, &v21); - std::__shared_ptr::__shared_ptr(&v29, v17); - // WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo(zcc::shared_ptr,int,zcc::shared_ptr) - WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo((int *)&v29, (unsigned int *)(v11 + 1), (int)&v31); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v32); - v15 = *(int **)(*v17 + 120); - while ( !lpuexcpta ) - { - if ( *(int **)(*v17 + 124) == v15 ) // end == v15 - // lpuexcpta = false - // v13 = true - goto LABEL_16; - if ( std::operator==(*v15, "SELECTOR") - || std::operator==(*v15, "U_SELECTOR") - || (lpuexcpta = std::operator==(*v15, "F_SELECTOR")) ) - { - std::__shared_ptr::operator=( - &v25, - *(volatile signed __int32 ***)(*v15 + 120)); - // v13 -> true; break - lpuexcpta = v13; - } - v15 += 2; // next - } - // lpuexcpta = true - v13 = lpuexcpta; - } - LABEL_16: - v17 += 2; // next - } - while ( !v13 ); - if ( lpuexcpta ) - { - std::basic_stringstream,std::allocator>::basic_stringstream((int)&v31); - v4 = std::operator<<>((std::ostream::sentry *)v33, ";wxcs_fileinfo: "); - v5 = std::operator<<(v4, *((int **)this + 37)); - std::operator<<>(v5, " "); - v6 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v25 + 11)); - std::operator<<>(v6, " "); - v7 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v25 + 12)); - std::operator<<>(v7, ";"); - - v18 = operator new(0xB0u); - WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v18); - zcc::shared_ptr::shared_ptr(v18); - std::string::operator=(v27, "FAKE_ATTR"); - Block = operator new(0x18u); - std::stringbuf::str((int)Block, (int)v34); - zcc::shared_ptr::shared_ptr(Block); - std::__shared_ptr::operator=((volatile signed __int32 **)v27 + 7, &v29); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); - v8 = v27; - // v18->offset_24 - v27[6] = (unsigned int *)3; - // v18->offset_164 - v8[41] = (unsigned int *)(v11 + 2); - // v18->offset_168 - v8[42] = (unsigned int *)(v11 + 3); - std::vector>::push_back((void **)v21 + 30, &v27); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v28); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v31); - *((_BYTE *)this + 116) = 1; - } - else - { - *((_BYTE *)this + 116) = 0; - } - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v26); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v24); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v22); - return lpuexcpta; -} -// 4A2900: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); -// 444380: using guessed type char var_D0[4]; -// 444380: using guessed type char var_CC[204]; - -//----- (0044494C) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::RuleDebugRule::~RuleDebugRule(void *a1) -{ - operator delete(a1); -} - -//----- (00444960) -------------------------------------------------------- -int *WXSS::CSSTreeLib::LexicalChecker::GetInstance() -{ - bool v1; // [esp+4h] [ebp-14h] - - if ( !(_BYTE)`guard variable for WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc - && __cxa_guard_acquire(&`guard variable for WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc) ) - { - WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; - dword_50CBFC = 0; - dword_50CC00 = 0; - __cxa_guard_release(&`guard variable for WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc); - atexit(__tcf_2); - } - WXSS::CSSTreeLib::LexicalChecker::Init((int)&WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc, 0, v1); - return &WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; -} -// 4449C1: variable 'v1' is possibly undefined -// 50CBF8: using guessed type int WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; -// 50CBFC: using guessed type int dword_50CBFC; -// 50CC00: using guessed type int dword_50CC00; - -//----- (004449D0) -------------------------------------------------------- -int *WXSS::CSSTreeLib::LexicalChecker::GetInstance() -{ - bool v1; // [esp+4h] [ebp-14h] - - if ( !(_BYTE)`guard variable for WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc - && __cxa_guard_acquire(&`guard variable for WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc) ) - { - WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; - dword_50CC08 = 0; - dword_50CC0C = 0; - __cxa_guard_release(&`guard variable for WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc); - atexit(__tcf_1_0); - } - WXSS::CSSTreeLib::LexicalChecker::Init( - (int)&WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc, - (WXSS::CSSTreeLib::LexicalChecker *)1, - v1); - return &WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; -} -// 444A31: variable 'v1' is possibly undefined -// 50CC04: using guessed type int WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; -// 50CC08: using guessed type int dword_50CC08; -// 50CC0C: using guessed type int dword_50CC0C; - -//----- (00444A40) -------------------------------------------------------- -void __userpurge WXSS::CSSTreeLib::LexicalChecker::Init(int a1@, WXSS::CSSTreeLib::LexicalChecker *this, bool a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // eax - _DWORD *v5; // eax - _DWORD *v6; // eax - _DWORD *v7; // eax - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - _DWORD *v11; // eax - _DWORD *v12; // eax - _DWORD *v13; // eax - _DWORD *v14; // eax - _DWORD *v15; // eax - _DWORD *v16; // eax - _DWORD *v17; // eax - _DWORD *v18; // eax - _DWORD *v19; // eax - volatile signed __int32 **v20; // ecx - _DWORD *v21; // eax - _DWORD *v22; // eax - _DWORD *v23; // eax - _DWORD *v24; // eax - _DWORD *v25; // eax - _DWORD *v26; // eax - _DWORD *v27; // eax - _DWORD *v28; // eax - _DWORD *v29; // eax - _DWORD *v30; // eax - int v31; // [esp+10h] [ebp-118h] - int v32; // [esp+14h] [ebp-114h] - int v33; // [esp+14h] [ebp-114h] - int v34; // [esp+14h] [ebp-114h] - int v35; // [esp+1Ch] [ebp-10Ch] - char **v36; // [esp+1Ch] [ebp-10Ch] - int v37; // [esp+1Ch] [ebp-10Ch] - int v38; // [esp+20h] [ebp-108h] - int v39; // [esp+20h] [ebp-108h] - char **v40; // [esp+20h] [ebp-108h] - int v41; // [esp+20h] [ebp-108h] - int v42; // [esp+20h] [ebp-108h] - int v43; // [esp+20h] [ebp-108h] - void **v44; // [esp+24h] [ebp-104h] - void **v45; // [esp+24h] [ebp-104h] - char **v46; // [esp+24h] [ebp-104h] - void **v47; // [esp+24h] [ebp-104h] - char **v48; // [esp+24h] [ebp-104h] - int v49; // [esp+24h] [ebp-104h] - void **v50; // [esp+24h] [ebp-104h] - int v51; // [esp+24h] [ebp-104h] - int v53; // [esp+64h] [ebp-C4h] BYREF - volatile signed __int32 *v54; // [esp+68h] [ebp-C0h] BYREF - int v55; // [esp+6Ch] [ebp-BCh] BYREF - volatile signed __int32 *v56; // [esp+70h] [ebp-B8h] BYREF - int v57; // [esp+74h] [ebp-B4h] BYREF - volatile signed __int32 *v58; // [esp+78h] [ebp-B0h] BYREF - int v59; // [esp+7Ch] [ebp-ACh] BYREF - volatile signed __int32 *v60; // [esp+80h] [ebp-A8h] BYREF - int v61; // [esp+84h] [ebp-A4h] BYREF - volatile signed __int32 *v62; // [esp+88h] [ebp-A0h] BYREF - int v63; // [esp+8Ch] [ebp-9Ch] BYREF - volatile signed __int32 *v64; // [esp+90h] [ebp-98h] BYREF - int v65; // [esp+94h] [ebp-94h] BYREF - volatile signed __int32 *v66; // [esp+98h] [ebp-90h] BYREF - void **v67; // [esp+9Ch] [ebp-8Ch] BYREF - volatile signed __int32 *v68; // [esp+A0h] [ebp-88h] BYREF - int v69; // [esp+A4h] [ebp-84h] BYREF - volatile signed __int32 *v70; // [esp+A8h] [ebp-80h] BYREF - int v71; // [esp+ACh] [ebp-7Ch] BYREF - volatile signed __int32 *v72; // [esp+B0h] [ebp-78h] BYREF - void **v73; // [esp+B4h] [ebp-74h] BYREF - volatile signed __int32 *v74; // [esp+B8h] [ebp-70h] BYREF - int v75; // [esp+BCh] [ebp-6Ch] BYREF - volatile signed __int32 *v76; // [esp+C0h] [ebp-68h] BYREF - int v77; // [esp+C4h] [ebp-64h] BYREF - volatile signed __int32 *v78; // [esp+C8h] [ebp-60h] BYREF - int v79; // [esp+CCh] [ebp-5Ch] BYREF - volatile signed __int32 *v80; // [esp+D0h] [ebp-58h] BYREF - int v81; // [esp+D4h] [ebp-54h] BYREF - volatile signed __int32 *v82; // [esp+D8h] [ebp-50h] BYREF - int v83; // [esp+DCh] [ebp-4Ch] BYREF - volatile signed __int32 *v84; // [esp+E0h] [ebp-48h] BYREF - int v85; // [esp+E4h] [ebp-44h] BYREF - volatile signed __int32 *v86; // [esp+E8h] [ebp-40h] BYREF - int v87; // [esp+ECh] [ebp-3Ch] BYREF - volatile signed __int32 *v88; // [esp+F0h] [ebp-38h] BYREF - int v89; // [esp+F4h] [ebp-34h] BYREF - int v90; // [esp+F8h] [ebp-30h] BYREF - volatile signed __int32 *v91; // [esp+FCh] [ebp-2Ch] BYREF - void *v92; // [esp+100h] [ebp-28h] BYREF - volatile signed __int32 *v93[9]; // [esp+104h] [ebp-24h] BYREF - - // Init - 0 - if ( !*(_BYTE *)a1 ) - { - v3 = operator new(4u); - *v3 = &off_519B6C; - zcc::shared_ptr::shared_ptr(&v53, (int)v3); - v4 = operator new(4u); - *v4 = &off_519B9C; - zcc::shared_ptr::shared_ptr(&v55, (int)v4); - v5 = operator new(0x10u); - *v5 = &off_519BB4; - v5[1] = 0; - v5[2] = 0; - v5[3] = 0; - zcc::shared_ptr::shared_ptr(&v92, (int)v5); - // Init - 5 - // this->offset_4 - *(_DWORD *)(a1 + 4) = v92; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(a1 + 8), v93[0]); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v93); - v44 = *(void ***)(a1 + 4); // this->offset_4 - v6 = operator new(0x10u); - *v6 = &off_519B84; - v6[1] = 0; - v6[2] = 0; - v6[3] = 0; - zcc::shared_ptr::shared_ptr(&v57, (int)v6); - v38 = v57; - std::vector>::push_back(++v44, &v57); - std::vector>::push_back(v44, &v53); - v7 = operator new(0x10u); - *v7 = &off_519B84; - v7[1] = 0; - v7[2] = 0; - v7[3] = 0; - zcc::shared_ptr::shared_ptr(&v59, (int)v7); - v32 = v59; - v8 = operator new(0x10u); - *v8 = &off_519B40; - v8[1] = 0; - v8[2] = 0; - v8[3] = 0; - zcc::shared_ptr::shared_ptr(&v61, (int)v8); - // int v61 - v45 = (void **)(v61 + 4); - // Init - 10 - std::vector>::push_back((void **)(v61 + 4), &v59); - if ( (_BYTE)this ) // bool参数 - { - v9 = operator new(4u); - *v9 = &off_519AA0; - zcc::shared_ptr::shared_ptr(&v92, (int)v9); - std::vector>::push_back(v45, &v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v93); - } - v10 = operator new(4u); - *v10 = &off_519A58; - zcc::shared_ptr::shared_ptr(&v63, (int)v10); - std::vector>::push_back(v45, &v63); - v89 = (int)"RULE"; - // int v38 - v57 - v46 = (char **)(v38 + 4); - std::__shared_ptr::__shared_ptr(&v90, &v61); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - (char **)(v38 + 4), - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - // Init - 15 - v11 = operator new(0x10u); - *v11 = &off_519B84; - v11[1] = 0; - v11[2] = 0; - v11[3] = 0; - zcc::shared_ptr::shared_ptr(&v65, (int)v11); - v89 = (int)"MULTIRULE"; - v39 = v65; - std::__shared_ptr::__shared_ptr(&v90, &v65); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - v46, - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - - v89 = (int)"RULES"; - // v90 = this->offset_4 - std::__shared_ptr::__shared_ptr(&v90, (_DWORD *)(a1 + 4)); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - (char **)(v39 + 4), - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - // Init - 20 - v12 = operator new(0x10u); - *v12 = &off_519BB4; - v12[1] = 0; - v12[2] = 0; - v12[3] = 0; - zcc::shared_ptr::shared_ptr(&v67, (int)v12); - v47 = v67; - v13 = operator new(0x10u); - *v13 = &off_519B84; - v13[1] = 0; - v13[2] = 0; - v13[3] = 0; - zcc::shared_ptr::shared_ptr(&v69, (int)v13); - v35 = v69; - v14 = operator new(4u); - *v14 = &off_519AD0; - zcc::shared_ptr::shared_ptr(&v71, (int)v14); - std::vector>::push_back(++v47, &v69); - std::vector>::push_back(v47, &v71); - v89 = (int)"SELECTORS"; - v40 = (char **)(v32 + 4); - std::__shared_ptr::__shared_ptr(&v90, &v67); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - (char **)(v32 + 4), - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - // Init - 25 - v15 = operator new(0x10u); - *v15 = &off_519B84; - v15[1] = 0; - v15[2] = 0; - v15[3] = 0; - zcc::shared_ptr::shared_ptr(&v77, (int)v15); - - v89 = (int)"SELECTOR"; - v33 = v77; - // v35 - v69 - v48 = (char **)(v35 + 4); - std::__shared_ptr::__shared_ptr(&v90, &v77); - - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - (char **)(v35 + 4), - &v92); - - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - - v16 = operator new(4u); - *v16 = &off_519B00; - zcc::shared_ptr::shared_ptr(&v79, (int)v16); - - v89 = (int)"$NAME"; - // v33 - v77 - v36 = (char **)(v33 + 4); - std::__shared_ptr::__shared_ptr(&v90, &v79); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - (char **)(v33 + 4), - &v92); - - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - - // Init - 30 - v17 = operator new(0x10u); - *v17 = &off_519B40; - v17[1] = 0; - v17[2] = 0; - v17[3] = 0; - zcc::shared_ptr::shared_ptr(&v81, (int)v17); - v89 = (int)"F_SELECTOR"; - v34 = v81; - std::__shared_ptr::__shared_ptr(&v90, &v81); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - v48, // v69 - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - - v18 = operator new(0x10u); - *v18 = &off_519B84; - v18[1] = 0; - v18[2] = 0; - v18[3] = 0; - zcc::shared_ptr::shared_ptr(&v83, (int)v18); - v31 = v83; - v19 = operator new(0xCu); - *v19 = &off_519BCC; - v19[1] = 0; - v19[2] = 0; - zcc::shared_ptr::shared_ptr(&v85, (int)v19); - v20 = (volatile signed __int32 **)(v85 + 8); - *(_DWORD *)(v85 + 4) = v77; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v20, v78); - std::vector>::push_back((void **)(v34 + 4), &v83); - std::vector>::push_back((void **)(v34 + 4), &v85); - // Init - 35 - v21 = operator new(0x10u); - *v21 = &off_519A88; - v21[1] = 0; - v21[2] = 0; - v21[3] = 0; - zcc::shared_ptr::shared_ptr(&v87, (int)v21); - v49 = v87; - std::string::basic_string(&v92, "root", (int)&v89); - if ( *(_DWORD *)(v49 + 8) == *(_DWORD *)(v49 + 12) ) - { - std::vector::_M_realloc_insert((char **)(v49 + 4), *(char **)(v49 + 8), &v92); - } - else - { - std::string::basic_string(*(_DWORD **)(v49 + 8), &v92); - *(_DWORD *)(v49 + 8) += 24; - } - std::string::_M_dispose(&v92); - v89 = (int)"$NAME"; - std::__shared_ptr::__shared_ptr(&v90, &v87); // v87 - std::pair>::pair,true>( - &v92, - (int)&v89); // v87 - std::vector>>::emplace_back>>( - (char **)(v31 + 4), // v83 - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - v89 = (int)"SELECTOR"; - std::__shared_ptr::__shared_ptr(&v90, &v77); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - v36, // v77 - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v88); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v86); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v84); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v82); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v80); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v78); - // Init - 40 - v22 = operator new(0x10u); - *v22 = &off_519BB4; - v22[1] = 0; - v22[2] = 0; - v22[3] = 0; - zcc::shared_ptr::shared_ptr(&v73, (int)v22); - v89 = (int)"ATTRS"; - v50 = v73; - std::__shared_ptr::__shared_ptr(&v90, &v73); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - v40, // v59 - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - - v23 = operator new(0x10u); - *v23 = &off_519B84; - v23[1] = 0; - v23[2] = 0; - v23[3] = 0; - zcc::shared_ptr::shared_ptr(&v75, (int)v23); - v41 = v75; - std::vector>::push_back(++v50, &v75); - std::vector>::push_back(v50, &v53); - - v24 = operator new(0x10u); - *v24 = &off_519BB4; - v24[1] = 0; - v24[2] = 0; - v24[3] = 0; - zcc::shared_ptr::shared_ptr(&v77, (int)v24); - v89 = (int)"ATTR"; - v37 = v77; - std::__shared_ptr::__shared_ptr(&v90, &v77); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - (char **)(v41 + 4), - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - - // Init - 45 - v25 = operator new(0x10u); - *v25 = &off_519B40; - v25[1] = 0; - v25[2] = 0; - v25[3] = 0; - zcc::shared_ptr::shared_ptr(&v79, (int)v25); - - v42 = v79; - v26 = operator new(0x10u); - *v26 = &off_519B84; - v26[1] = 0; - v26[2] = 0; - v26[3] = 0; - zcc::shared_ptr::shared_ptr(&v81, (int)v26); - - v51 = v81; - v27 = operator new(4u); - *v27 = &off_519AB8; - zcc::shared_ptr::shared_ptr(&v83, (int)v27); - v89 = (int)"$ESV"; - std::__shared_ptr::__shared_ptr(&v90, &v83); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - (char **)(v51 + 4), // v26->offset_4 - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - - std::vector>::push_back((void **)(v42 + 4), &v81); - if ( (_BYTE)this ) - { - v28 = operator new(4u); - *v28 = &off_519A70; - zcc::shared_ptr::shared_ptr(&v92, (int)v28); - // v25->offset_4 - std::vector>::push_back((void **)(v42 + 4), &v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v93); - } - // v24->offset_4, v79 - v25 - std::vector>::push_back((void **)(v37 + 4), &v79); - // Init - 50 - v29 = operator new(0x10u); - *v29 = &off_519B84; - v29[1] = 0; - v29[2] = 0; - v29[3] = 0; - zcc::shared_ptr::shared_ptr(&v85, (int)v29); - v43 = v85; - v30 = operator new(4u); - *v30 = &off_519AE8; - zcc::shared_ptr::shared_ptr(&v87, (int)v30); - v89 = (int)"$ESV"; - std::__shared_ptr::__shared_ptr(&v90, &v87); - std::pair>::pair,true>( - &v92, - (int)&v89); - std::vector>>::emplace_back>>( - (char **)(v43 + 4), // v29->offset_4 - &v92); - std::pair>::~pair((int)&v92); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v91); - - // v24->offset_4 - std::vector>::push_back((void **)(v37 + 4), &v85); - std::vector>::push_back((void **)(v37 + 4), &v53); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v88); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v86); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v84); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v82); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v80); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v78); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v76); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v74); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v72); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v70); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v68); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v66); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v64); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v62); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v60); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v58); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v56); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v54); - // Init - 55 - *(_BYTE *)a1 = 1; - } -} -// 519A58: using guessed type void (__cdecl *off_519A58)(WXSS::CSSTreeLib::MarkHostRule *__hidden this); -// 519A70: using guessed type void (__cdecl *off_519A70)(WXSS::CSSTreeLib::AttrDebugRule *__hidden this); -// 519A88: using guessed type void (__cdecl *off_519A88)(WXSS::CSSTreeLib::BlackListRule *__hidden this); -// 519AA0: using guessed type void (__cdecl *off_519AA0)(WXSS::CSSTreeLib::RuleDebugRule *__hidden this); -// 519AB8: using guessed type void (__cdecl *off_519AB8)(WXSS::CSSTreeLib::ReWriteRpxRule *__hidden this); -// 519AD0: using guessed type void (__cdecl *off_519AD0)(WXSS::CSSTreeLib::MarkSelectorRule *__hidden this); -// 519AE8: using guessed type void (__cdecl *off_519AE8)(WXSS::CSSTreeLib::RewriteImgUrlRule *__hidden this); -// 519B00: using guessed type void (__cdecl *off_519B00)(WXSS::CSSTreeLib::RewriteSelectorRule *__hidden this); -// 519B40: using guessed type void (__cdecl *off_519B40)(WXSS::CSSTreeLib::AndRules *__hidden this); -// 519B6C: using guessed type void (__cdecl *off_519B6C)(WXSS::CSSTreeLib::TrueRule *__hidden this); -// 519B84: using guessed type void (__cdecl *off_519B84)(WXSS::CSSTreeLib::ChildRule *__hidden this); -// 519B9C: using guessed type void (__cdecl *off_519B9C)(WXSS::CSSTreeLib::FalseRule *__hidden this); -// 519BB4: using guessed type void (__cdecl *off_519BB4)(WXSS::CSSTreeLib::RuleChain *__hidden this); -// 519BCC: using guessed type void (__cdecl *off_519BCC)(WXSS::CSSTreeLib::SPNotRule *__hidden this); - -//----- (00445B90) -------------------------------------------------------- -char __stdcall WXSS::CSSTreeLib::ReWriteRpxRule::MarkGood( - WXSS::CSSTreeLib::ReWriteRpxRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a2) -{ - char *Literal; // eax - char lpuexcpt; // [esp+14h] [ebp-84h] - char *Block; // [esp+18h] [ebp-80h] - volatile signed __int32 *v6; // [esp+58h] [ebp-40h] BYREF - volatile signed __int32 *v7; // [esp+5Ch] [ebp-3Ch] BYREF - int v8[6]; // [esp+60h] [ebp-38h] BYREF - int v9[2]; // [esp+78h] [ebp-20h] BYREF - char v10; // [esp+80h] [ebp-18h] BYREF - - Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)this + 6); - std::string::basic_string(v8, Literal, (int)v9); - v9[1] = 0; - v9[0] = (int)&v10; - v10 = 0; - lpuexcpt = 0; - if ( WXML::Rewrite::RewriteRPX((int)v8, (unsigned int **)v9, "%%?", "?%%") ) - { - Block = (char *)operator new(0x18u); - std::string::basic_string(Block, (int)v9); - zcc::shared_ptr::shared_ptr(Block); - std::__shared_ptr::operator=((volatile signed __int32 **)this + 33, &v6); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v7); - lpuexcpt = 1; - } - std::string::_M_dispose((void **)v9); - std::string::_M_dispose((void **)v8); - return lpuexcpt; -} - -//----- (00445CFC) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::ReWriteRpxRule::~ReWriteRpxRule(void *a1) -{ - operator delete(a1); -} - -//----- (00445D10) -------------------------------------------------------- -char __stdcall WXSS::CSSTreeLib::MarkSelectorRule::MarkGood( - WXSS::CSSTreeLib::MarkSelectorRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a2) -{ - int v2; // edx - int v3; // eax - const char *Literal; // eax - _DWORD *v5; // ecx - char *v6; // eax - _BYTE *v7; // eax - char v8; // al - int v9; // eax - _DWORD *v10; // eax - _DWORD **v12; // [esp+18h] [ebp-60h] - _DWORD **v13; // [esp+1Ch] [ebp-5Ch] - int v14; // [esp+20h] [ebp-58h] - _DWORD *v15; // [esp+20h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-54h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-54h] - char *Str; // [esp+28h] [ebp-50h] - char *Stra; // [esp+28h] [ebp-50h] - char *Strb; // [esp+28h] [ebp-50h] - char *Strc; // [esp+28h] [ebp-50h] - char *Strd; // [esp+28h] [ebp-50h] - char *v23; // [esp+68h] [ebp-10h] BYREF - volatile signed __int32 *v24[3]; // [esp+6Ch] [ebp-Ch] BYREF - - // MarkSelectorRule - 0 - for ( lpuexcpt = 0; ; lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1) ) - { - v2 = *((_DWORD *)this + 30); - if ( (unsigned int)lpuexcpt >= (*((_DWORD *)this + 31) - v2) >> 3 ) - goto LABEL_39; - Str = *(char **)(v2 + 8 * (_DWORD)lpuexcpt); // cur - v14 = *(_DWORD *)Str; // cur - // MarkSelectorRule - 5 - if ( lpuexcpt ) - { - if ( *((_DWORD *)Str + 41) <= *(_DWORD *)(*(_DWORD *)(v2 + 8 * (_DWORD)lpuexcpt - 8) + 168) ) - break; - } - // MarkSelectorRule - 10 - if ( *(_BYTE *)v14 != 'F'/*70*/ || strcmp((const char *)(v14 + 1), "_SELECTOR") ) - break; - v3 = *((_DWORD *)Str + 30); // cur->offset_120 - // MarkSelectorRule - 15 - if ( (unsigned int)(*((_DWORD *)Str + 31) - v3) <= 8 ) // size - goto LABEL_14; - // MarkSelectorRule - 20 - std::__shared_ptr::__shared_ptr( - &v23, - (_DWORD *)(v3 + 8)); - Stra = v23; - if ( **(_BYTE **)v23 != '$'/*36*/ - || strcmp((const char *)(*(_DWORD *)v23 + 1), "NAME") - || (Literal = WXSS::Token::GetLiteral((_DWORD *)Stra + 6), *Literal != 'h'/*104*/) - || strcmp(Literal + 1, "ost") ) - { - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v24); -LABEL_14: - v5 = (_DWORD *)*((_DWORD *)this + 39); - v6 = *(char **)(*((_DWORD *)this + 30) + 8 * (_DWORD)lpuexcpt); // cur - goto LABEL_36; - } - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v24); -LABEL_38: - ; - } // end for - if ( *(_BYTE *)v14 == 'F'/*70*/ ) - { - if ( strcmp((const char *)(v14 + 1), "_SELECTOR") ) - goto LABEL_35; - goto LABEL_38; // continue; - } - v13 = (_DWORD **)*((_DWORD *)Str + 30); // cur->offset_120 - if ( *(_BYTE *)v14 == 'S'/*83*/ && !strcmp((const char *)(v14 + 1), "ELECTOR") ) - { - v12 = (_DWORD **)*((_DWORD *)Str + 31); - while ( 1 ) - { - if ( v12 == v13 ) - goto LABEL_38; // continue; - v15 = *v13; - v7 = (_BYTE *)**v13; - if ( *v7 == '$'/*36*/ ) - { - Strb = v7 + 1; - if ( !strcmp(v7 + 1, "NAME") ) - { - Strc = (char *)WXSS::Token::GetLiteral(v15 + 6); - v8 = *Strc; - if ( *Strc == '.'/*46*/ || v8 == '@'/*64*/ ) - goto LABEL_34; - if ( v8 == 'f'/*102*/ ) - { - v9 = strcmp(Strc + 1, (const char *)&off_50E044); // orm -LABEL_30: - if ( !v9 ) - goto LABEL_34; // continue; - } - else if ( v8 == 't'/*116*/ ) - { - v9 = strcmp(Strc + 1, "o"); - goto LABEL_30; - } - if ( Strc[strlen(Strc) - 1] != '%'/*37*/ ) - goto LABEL_32; - goto LABEL_34; // continue; - } - if ( !strcmp(Strb, "ID") ) - { -LABEL_32: - v5 = (_DWORD *)*((_DWORD *)this + 39); - v10 = v15; - goto LABEL_37; - } - } -LABEL_34: - v13 += 2; - } - } -LABEL_35: - v5 = (_DWORD *)*((_DWORD *)this + 39); // a2->offset_156 - v6 = Str; -LABEL_36: - v10 = (_DWORD *)**((_DWORD **)v6 + 30); -LABEL_37: - WXSS::Token::operator=(v5, (int)(v10 + 6)); -LABEL_39: - lpuexcpta = (struct _Unwind_Exception *)*((_DWORD *)this + 37); - // a2->offset_148 - Strd = (char *)operator new(0x18u); - std::string::basic_string(Strd, (int)lpuexcpta); - zcc::shared_ptr::shared_ptr(Strd); - std::__shared_ptr::operator=( - (volatile signed __int32 **)(*((_DWORD *)this + 39) + 4), // a2->offset_156->offset_4 - (volatile signed __int32 **)&v23); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v24); - return 1; -} -// 50E044: using guessed type void *off_50E044; - -//----- (00446034) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::MarkSelectorRule::~MarkSelectorRule(void *a1) -{ - operator delete(a1); -} - -//----- (00446048) -------------------------------------------------------- -char __stdcall WXSS::CSSTreeLib::RewriteImgUrlRule::MarkGood( - WXSS::CSSTreeLib::RewriteImgUrlRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a2) -{ - char *Literal; // eax - int v4; // [esp+20h] [ebp-98h] - int v5; // [esp+20h] [ebp-98h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-94h] - char lpuexcpt; // [esp+24h] [ebp-94h] - char *Block; // [esp+28h] [ebp-90h] - void *v9[6]; // [esp+68h] [ebp-50h] BYREF - void *v10[2]; // [esp+80h] [ebp-38h] BYREF - char v11; // [esp+88h] [ebp-30h] BYREF - int v12; // [esp+98h] [ebp-20h] BYREF - volatile signed __int32 *v13; // [esp+9Ch] [ebp-1Ch] BYREF - - Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)this + 6); - std::string::basic_string(v9, Literal, (int)&v12); - - v10[0] = &v11; - v10[1] = 0; - - v11 = 0; - lpuexcpta = (struct _Unwind_Exception *)*((_DWORD *)this + 12); - v4 = *((_DWORD *)this + 11); - std::string::basic_string((char *)&v12, *((_DWORD *)this + 37)); - // WXML::Rewrite::RewriteImg(std::string const&,std::string&,std::string,int,int) - v5 = WXML::Rewrite::RewriteImg((int)v9, (unsigned int **)v10, &v12, v4, (int)lpuexcpta); - std::string::_M_dispose((void **)&v12); - if ( !v5 ) - goto LABEL_4; - lpuexcpt = 0; - if ( v5 == 1 ) - { - Block = (char *)operator new(0x18u); - std::string::basic_string(Block, (int)v10); - zcc::shared_ptr::shared_ptr(Block); - std::__shared_ptr::operator=( - (volatile signed __int32 **)this + 33, - (volatile signed __int32 **)&v12); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v13); -LABEL_4: - lpuexcpt = 1; - } - std::string::_M_dispose(v10); - std::string::_M_dispose(v9); - return lpuexcpt; -} - -//----- (00446254) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::RewriteImgUrlRule::~RewriteImgUrlRule(void *a1) -{ - operator delete(a1); -} - -//----- (00446268) -------------------------------------------------------- -char __stdcall WXSS::CSSTreeLib::RewriteSelectorRule::MarkGood( - WXSS::CSSTreeLib::RewriteSelectorRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a2) -{ - char *Literal; // eax - _DWORD *v4; // [esp+1Ch] [ebp-BCh] - char *v5; // [esp+20h] [ebp-B8h] - char *Block; // [esp+24h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-B0h] - bool lpuexcptb; // [esp+28h] [ebp-B0h] - char lpuexcpta; // [esp+28h] [ebp-B0h] - volatile signed __int32 *v10; // [esp+60h] [ebp-78h] BYREF - volatile signed __int32 *v11; // [esp+64h] [ebp-74h] BYREF - int v12; // [esp+68h] [ebp-70h] BYREF - volatile signed __int32 *v13; // [esp+6Ch] [ebp-6Ch] BYREF - char *v14; // [esp+70h] [ebp-68h] BYREF - int v15; // [esp+74h] [ebp-64h] - char v16; // [esp+78h] [ebp-60h] BYREF - _BYTE *v17; // [esp+88h] [ebp-50h] BYREF - unsigned int v18; // [esp+8Ch] [ebp-4Ch] - char *String1[6]; // [esp+A0h] [ebp-38h] BYREF - int v20; // [esp+B8h] [ebp-20h] BYREF - volatile signed __int32 *v21; // [esp+BCh] [ebp-1Ch] BYREF - - v14 = &v16; // std::string - v15 = 0; - v16 = 0; - - Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)this + 6); - if ( Literal ) - { - lpuexcpt = 0; - std::string::basic_string(&v17, Literal, (int)&v20); - while ( (unsigned int)lpuexcpt < v18 ) - { - if ( *((_BYTE *)lpuexcpt + (_DWORD)v17) == '.'/*46*/ - && (unsigned int)lpuexcpt + 1 < v18 - && (unsigned int)(*((char *)lpuexcpt + (_DWORD)v17 + 1) - '0'/*48*/) > 9 ) - { - std::string::operator+=(&v14, ".%%HERESUFFIX%%"); - } - else - { - std::string::push_back(&v14, *((_BYTE *)lpuexcpt + (_DWORD)v17)); - } - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - } - // v15 -> v14.length() - if ( *((_DWORD *)this + 10) != v15 ) - { - Block = (char *)operator new(0x18u); - std::string::basic_string(Block, (int)&v14); - zcc::shared_ptr::shared_ptr(Block); - std::__shared_ptr::operator=((volatile signed __int32 **)this + 33, &v10); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v11); - } - std::string::basic_string(String1, v14, (int)&v20); - if ( !__stricmp(String1[0], "page") ) - { - v4 = operator new(0x18u); - std::string::basic_string(v4, "body", (int)&v12); - zcc::shared_ptr::shared_ptr(v4); - std::__shared_ptr::operator=( - (volatile signed __int32 **)this + 33, - (volatile signed __int32 **)&v20); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v21); - } - else if ( __stricmp(String1[0], asc_50E043) ) // "from" - { - if ( __stricmp(String1[0], "to") ) - { - if ( __stricmp(String1[0], off_50DF84) ) // { 'n', 'o', 't', '\0' } - { - if ( String1[1] ) - { - if ( _isalpha(*String1[0]) ) - { - std::string::substr(&v20, String1, 0, 3u); - lpuexcptb = std::operator==((int)&v20, "wx-"); - std::string::_M_dispose((void **)&v20); - if ( !lpuexcptb ) - { - std::string::basic_string(&v20, "wx-", (int)&v12); - std::string::operator+=(&v20, (int)String1); - v5 = (char *)operator new(0x18u); - std::string::basic_string(v5, (int)&v20); - zcc::shared_ptr::shared_ptr(v5); - std::__shared_ptr::operator=( - (volatile signed __int32 **)this + 33, - (volatile signed __int32 **)&v12); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v13); - std::string::_M_dispose((void **)&v20); - } - } - } - } - } - } - *((_BYTE *)this + 116) = 1; - std::string::_M_dispose((void **)String1); - std::string::_M_dispose((void **)&v17); - lpuexcpta = 1; - } - else - { - lpuexcpta = 0; - } - std::string::_M_dispose((void **)&v14); - return lpuexcpta; -} - -//----- (00446700) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::RewriteSelectorRule::~RewriteSelectorRule(void *a1) -{ - operator delete(a1); -} - -//----- (00446714) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::EPS::~EPS(void *a1) -{ - operator delete(a1); -} - -//----- (00446728) off_519B2C-------------------------------------------------------- -int __fastcall WXSS::CSSTreeLib::Action::Action(int a1) -{ - // size: 0x3C - 60 - int result; // eax - - *(_DWORD *)a1 = &off_519B2C; - *(_DWORD *)(a1 + 4) = a1 + 12; // std::string offset_4 - result = a1 + 44; - *(_DWORD *)(a1 + 8) = 0; - *(_BYTE *)(a1 + 12) = 0; - - *(_DWORD *)(a1 + 36) = a1 + 44; // std::string - *(_DWORD *)(a1 + 40) = 0; - - *(_BYTE *)(a1 + 44) = 0; - *(_DWORD *)(a1 + 28) = 0; - return result; -} -// 519B2C: using guessed type void (__cdecl *off_519B2C)(WXSS::CSSTreeLib::Action *__hidden this); - -//----- (00446758) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1) -{ - WXSS::CSSTreeLib::Action::~Action(a1); - operator delete(a1); -} - -//----- (00446774) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1) -{ - WXSS::CSSTreeLib::Action::~Action(a1, (WXSS::CSSTreeLib::Action *)2); -} - -//----- (0044678C) -------------------------------------------------------- -void __thiscall WXSS::CSSTreeLib::Action::~Action(void **ecx0, WXSS::CSSTreeLib::Action *this) -{ - void **v3; // ecx - - v3 = ecx0 + 9; - *(v3 - 9) = &off_519B2C; - std::string::_M_dispose(v3); - std::string::_M_dispose(ecx0 + 1); -} -// 519B2C: using guessed type void (__cdecl *off_519B2C)(WXSS::CSSTreeLib::Action *__hidden this); - -//----- (004467B0) -------------------------------------------------------- -#error "446A05: call analysis failed (funcsize=158)" - -//----- (00446A70) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::Parser::~Parser(int a1) -{ - int v2; // edi - int *v3; // esi - int v4; // eax - int v5; // edx - int v6; // edx - void **v7; // esi - unsigned int v8; // edi - void *v9; // eax - int v10; // [esp+1Ch] [ebp-2Ch] - int v11; // [esp+20h] [ebp-28h] - int v12; // [esp+24h] [ebp-24h] - unsigned int v13; // [esp+28h] [ebp-20h] - int v14; // [esp+2Ch] [ebp-1Ch] - - v2 = *(_DWORD *)(a1 + 72); - v12 = *(_DWORD *)(a1 + 64); - v11 = *(_DWORD *)(a1 + 76); - v14 = *(_DWORD *)(a1 + 68); - v3 = (int *)(v14 + 4); - v13 = *(_DWORD *)(a1 + 84); - v4 = *(_DWORD *)(a1 + 56); - while ( v13 > (unsigned int)v3 ) - { - v5 = *v3; - v10 = v4; - ++v3; - std::_Destroy_aux::__destroy *>(v5, v5, v5 + 512); - v4 = v10; - } - if ( v14 == v13 ) - { - std::_Destroy_aux::__destroy *>(v13, v4, v2); - } - else - { - std::_Destroy_aux::__destroy *>(v13, v4, v12); - std::_Destroy_aux::__destroy *>(v6, v11, v2); - } - if ( *(_DWORD *)(a1 + 48) ) - { - v7 = *(void ***)(a1 + 68); - v8 = *(_DWORD *)(a1 + 84) + 4; - while ( v8 > (unsigned int)v7 ) - { - v9 = *v7++; - operator delete(v9); - } - operator delete(*(void **)(a1 + 48)); - } - std::deque>::~deque(a1 + 8); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); -} -// 446ADE: variable 'v6' is possibly undefined - -//----- (00446B30) -------------------------------------------------------- -char __userpurge WXSS::CSSTreeLib::AndRules::MarkGood@( - int a1@, - WXSS::CSSTreeLib::AndRules *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a3) -{ - unsigned int v4; // ebx - int v5; // edx - int v6; // ecx - char result; // al - - v4 = 0; - while ( 1 ) - { - v5 = *(_DWORD *)(a1 + 4); - if ( (*(_DWORD *)(a1 + 8) - v5) >> 3 <= v4 ) - break; - v6 = *(_DWORD *)(v5 + 8 * v4++); - result = (*(int (__thiscall **)(int, WXSS::CSSTreeLib::AndRules *))(*(_DWORD *)v6 + 8))(v6, this); - if ( !result ) - goto LABEL_6; - } - result = 1; -LABEL_6: - *((_BYTE *)this + 116) = result; - return result; -} - -//----- (00446B74) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(void *a1) -{ - WXSS::CSSTreeLib::AndRules::~AndRules((int)a1); - operator delete(a1); -} - -//----- (00446B90) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(int a1) -{ - *(_DWORD *)a1 = &off_519B40; - std::vector>::~vector((void **)(a1 + 4)); -} -// 519B40: using guessed type void (__cdecl *off_519B40)(WXSS::CSSTreeLib::AndRules *__hidden this); - -//----- (00446BA0) -------------------------------------------------------- -int __fastcall WXSS::CSSTreeLib::Terminal::Terminal(int a1) -{ - int result; // eax - - result = a1 + 12; - *(_DWORD *)a1 = &off_519B58; - *(_DWORD *)(a1 + 4) = a1 + 12; - *(_DWORD *)(a1 + 8) = 0; - *(_BYTE *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - *(_BYTE *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 28) = 1; - *(_DWORD *)(a1 + 40) = 0; - *(_DWORD *)(a1 + 44) = 0; - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - return result; -} -// 519B58: using guessed type void (__cdecl *off_519B58)(WXSS::CSSTreeLib::Terminal *__hidden this); - -//----- (00446BF0) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1) -{ - WXSS::CSSTreeLib::Terminal::~Terminal(a1); - operator delete(a1); -} - -//----- (00446C0C) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1) -{ - WXSS::CSSTreeLib::Terminal::~Terminal(a1, (WXSS::CSSTreeLib::Terminal *)2); -} - -//----- (00446C24) -------------------------------------------------------- -void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this) -{ - volatile signed __int32 **v3; // ecx - - v3 = (volatile signed __int32 **)(ecx0 + 9); - *(v3 - 9) = (volatile signed __int32 *)&off_519B58; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); - std::string::_M_dispose(ecx0 + 1); -} -// 519B58: using guessed type void (__cdecl *off_519B58)(WXSS::CSSTreeLib::Terminal *__hidden this); - -//----- (00446C48) -------------------------------------------------------- -void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this) -{ - volatile signed __int32 **v3; // ecx - - v3 = (volatile signed __int32 **)(ecx0 + 9); - *(v3 - 9) = (volatile signed __int32 *)&off_519B58; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); - std::string::_M_dispose(ecx0 + 1); -} -// 519B58: using guessed type void (__cdecl *off_519B58)(WXSS::CSSTreeLib::Terminal *__hidden this); - -//----- (00446C6C) -------------------------------------------------------- -char __stdcall WXSS::CSSTreeLib::TrueRule::MarkGood( - WXSS::CSSTreeLib::TrueRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a2) -{ - *((_BYTE *)this + 116) = 1; - return 1; -} - -//----- (00446C7C) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::TrueRule::~TrueRule(void *a1) -{ - operator delete(a1); -} - -// off_519B84 -//----- (00446C90) -------------------------------------------------------- -char __userpurge WXSS::CSSTreeLib::ChildRule::MarkGood@( - int a1@, - WXSS::CSSTreeLib::ChildRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a3) -{ - unsigned int v3; // edi - int i; // ebx - char result; // al - int v6; // [esp+10h] [ebp-28h] - char v8; // [esp+1Fh] [ebp-19h] - - v3 = 0; - v8 = 1; - // a2->offset_124 a2->offset_120 - while ( (*((_DWORD *)this + 31) - *((_DWORD *)this + 30)) >> 3 > v3 ) - { - for ( i = *(_DWORD *)(a1 + 4); *(_DWORD *)(a1 + 8) != i; i += 32 ) - { - v6 = *(_DWORD *)(*((_DWORD *)this + 30) + 8 * v3); - if ( std::operator==(i, v6) ) - // i => a1->offset_4 - v8 &= (*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(i + 24) + 8))(*(_DWORD *)(i + 24), v6); - } - ++v3; - } - result = v8; - *((_BYTE *)this + 116) = v8; - return result; -} - -//----- (00446D10) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1) -{ - WXSS::CSSTreeLib::ChildRule::~ChildRule(a1); - operator delete(a1); -} - -//----- (00446D2C) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1) -{ - int v2; // edi - int v3; // esi - int v4; // ecx - - v2 = a1[2]; - v3 = a1[1]; - *a1 = &off_519B84; - while ( v2 != v3 ) - { - v4 = v3; - v3 += 32; - std::pair>::~pair(v4); - } - if ( a1[1] ) - operator delete((void *)a1[1]); -} -// 519B84: using guessed type void (__cdecl *off_519B84)(WXSS::CSSTreeLib::ChildRule *__hidden this); - -//----- (00446D6C) -------------------------------------------------------- -int __stdcall WXSS::CSSTreeLib::FalseRule::MarkGood( - WXSS::CSSTreeLib::FalseRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a2) -{ - *((_BYTE *)this + 116) = 0; - return 0; -} - -//----- (00446D7C) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::FalseRule::~FalseRule(void *a1) -{ - operator delete(a1); -} - -//----- (00446D90) -------------------------------------------------------- -int __userpurge WXSS::CSSTreeLib::RuleChain::MarkGood@( - int a1@, - WXSS::CSSTreeLib::RuleChain *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a3) -{ - int result; // eax - unsigned int i; // ebx - int v6; // ecx - int v7; // ecx - - result = 0; - for ( i = 0; ; ++i ) - { - v6 = *(_DWORD *)(a1 + 4); - if ( (*(_DWORD *)(a1 + 8) - v6) >> 3 <= i ) - break; - v7 = *(_DWORD *)(v6 + 8 * i); - result = (*(int (__thiscall **)(int, WXSS::CSSTreeLib::RuleChain *))(*(_DWORD *)v7 + 8))(v7, this); - } - *((_BYTE *)this + 116) = result; - return result; -} - -//----- (00446DD0) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(void *a1) -{ - WXSS::CSSTreeLib::RuleChain::~RuleChain((int)a1); - operator delete(a1); -} - -//----- (00446DEC) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(int a1) -{ - *(_DWORD *)a1 = &off_519BB4; - std::vector>::~vector((void **)(a1 + 4)); -} -// 519BB4: using guessed type void (__cdecl *off_519BB4)(WXSS::CSSTreeLib::RuleChain *__hidden this); - -//----- (00446DFC) -------------------------------------------------------- -char __userpurge WXSS::CSSTreeLib::SPNotRule::MarkGood@( - int a1@, - WXSS::CSSTreeLib::SPNotRule *this, - WXSS::CSSTreeLib::CSSSyntaxTree *a3) -{ - int v3; // edx - const char *Literal; // eax - - v3 = *((_DWORD *)this + 30); - if ( *((_DWORD *)this + 31) - v3 == 40 ) - { - Literal = WXSS::Token::GetLiteral((_DWORD *)(*(_DWORD *)(v3 + 8) + 24)); - // off_50DF84 -> { 'n', 'o', 't', '\0' } - if ( !__stricmp(Literal, off_50DF84) && !__stricmp(**(const char ***)(*((_DWORD *)this + 30) + 24), "SELECTOR") ) - (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 8))( - *(_DWORD *)(a1 + 4), - *(_DWORD *)(*((_DWORD *)this + 30) + 24)); - } - return 1; -} - -//----- (00446E70) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(void *a1) -{ - WXSS::CSSTreeLib::SPNotRule::~SPNotRule((int)a1); - operator delete(a1); -} - -//----- (00446E8C) -------------------------------------------------------- -void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(int a1) -{ - *(_DWORD *)a1 = &off_519BCC; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 8)); -} -// 519BCC: using guessed type void (__cdecl *off_519BCC)(WXSS::CSSTreeLib::SPNotRule *__hidden this); - -//----- (00446E9C) -------------------------------------------------------- -_DWORD *__thiscall WXSS::Token::operator=(_DWORD *this, int a2) -{ - volatile signed __int32 **v3; // ecx - int i; // eax - - v3 = (volatile signed __int32 **)(this + 1); - *(v3 - 1) = *(volatile signed __int32 **)a2; - std::__shared_ptr::operator=(v3, (volatile signed __int32 **)(a2 + 4)); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - this[6] = *(_DWORD *)(a2 + 24); - for ( i = 28; i != 92; ++i ) - *((_BYTE *)this + i) = *(_BYTE *)(a2 + i); - return this; -} - -//----- (00446EF4) -------------------------------------------------------- -int __thiscall WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(char *this, int a2, char *Source, int a4) -{ - int result; // eax - - *(_DWORD *)this = a2; - strcpy(this + 8, Source); - *((_DWORD *)this + 1) = strlen(Source); - result = a4; - *((_DWORD *)this + 6) = a4; - return result; -} - -//----- (00446F30) -------------------------------------------------------- -void __fastcall WXSS::XCompiler::~XCompiler(int a1) -{ - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(a1 + 152); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(a1 + 128); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(a1 + 104); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(a1 + 80); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 64)); - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 40)); - std::string::_M_dispose((void **)(a1 + 8)); -} - -//----- (00446F80) -------------------------------------------------------- -void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(int *a1) -{ - _DWORD *exception; // eax - - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_unlock(*a1) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_519D0C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - } -} -// 50B0F0: using guessed type int _CRT_MT; -// 515CD4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 519D0C: using guessed type void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00447040) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) -{ - return std::__basic_file::fd((FILE **)(a1 + 40)); -} - -//----- (00447050) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) -{ - return std::__basic_file::file(a1 + 40); -} - -//----- (00447070) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) -{ - int v4; // eax - - std::filebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_519BE4; - std::__basic_file::sys_open(this + 40, a2, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::filebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 519BE4: using guessed type int (*off_519BE4[2])(); - -//----- (00447170) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) -{ - int v4; // eax - - std::filebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_519BE4; - std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::filebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 519BE4: using guessed type int (*off_519BE4[2])(); - -//----- (00447280) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) -{ - std::filebuf::basic_filebuf((int)a1); - *a1 = off_519BE4; -} -// 519BE4: using guessed type int (*off_519BE4[2])(); - -//----- (004472A0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) -{ - int v4; // eax - - std::filebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_519BE4; - std::__basic_file::sys_open(this + 40, a2, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::filebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 519BE4: using guessed type int (*off_519BE4[2])(); - -//----- (004473A0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) -{ - int v4; // eax - - std::filebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_519BE4; - std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::filebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 519BE4: using guessed type int (*off_519BE4[2])(); - -//----- (004474B0) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) -{ - std::filebuf::basic_filebuf((int)a1); - *a1 = off_519BE4; -} -// 519BE4: using guessed type int (*off_519BE4[2])(); - -//----- (004474D0) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA50; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)a1 + 7); - operator delete(a1); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (00447580) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA50; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (00447620) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA50; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004476C0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) -{ - return std::__basic_file::fd((FILE **)(a1 + 40)); -} - -//----- (004476D0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) -{ - return std::__basic_file::file(a1 + 40); -} - -//----- (004476F0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) -{ - int v4; // eax - - std::wfilebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_519C24; - std::__basic_file::sys_open(this + 40, a2, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::wfilebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 519C24: using guessed type int (*off_519C24[2])(); - -//----- (004477F0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) -{ - int v4; // eax - - std::wfilebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_519C24; - std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::wfilebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 519C24: using guessed type int (*off_519C24[2])(); - -//----- (00447900) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) -{ - std::wfilebuf::basic_filebuf((int)a1); - *a1 = off_519C24; -} -// 519C24: using guessed type int (*off_519C24[2])(); - -//----- (00447920) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) -{ - int v4; // eax - - std::wfilebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_519C24; - std::__basic_file::sys_open(this + 40, a2, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::wfilebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 519C24: using guessed type int (*off_519C24[2])(); - -//----- (00447A20) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int FileHandle, int a3, int a4) -{ - int v4; // eax - - std::wfilebuf::basic_filebuf((int)this); - *(_DWORD *)this = off_519C24; - std::__basic_file::sys_open((FILE **)this + 10, FileHandle, a3); - if ( std::__basic_file::is_open((_DWORD *)this + 10) ) - { - *((_DWORD *)this + 12) = a3; - *((_DWORD *)this + 17) = a4; - std::wfilebuf::_M_allocate_internal_buffer((int)this); - *(_WORD *)(this + 73) = 0; - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 6) = 0; - } -} -// 519C24: using guessed type int (*off_519C24[2])(); - -//----- (00447B30) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) -{ - std::wfilebuf::basic_filebuf((int)a1); - *a1 = off_519C24; -} -// 519C24: using guessed type int (*off_519C24[2])(); - -//----- (00447B50) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA90; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)a1 + 7); - operator delete(a1); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (00447C00) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA90; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (00447CA0) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA90; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (00447D40) -------------------------------------------------------- -int __cdecl __gnu_cxx::__concat_size_t(char *a1, unsigned int a2, unsigned int a3) -{ - void *v4; // esp - void *v5; // esp - _BYTE *v6; // ebx - unsigned int v7; // eax - int v8; // esi - int v10; // [esp-10h] [ebp-48h] BYREF - _BYTE v11[28]; // [esp-4h] [ebp-3Ch] BYREF - int *v12; // [esp+18h] [ebp-20h] - _BYTE *v13; // [esp+1Ch] [ebp-1Ch] - - v4 = alloca(32); - v5 = alloca(32); - v12 = &v10; - v13 = v11; - v6 = v11; - do - { - *--v6 = byte_512239[a3 % 0xA]; - v7 = a3; - a3 /= 0xAu; - } - while ( v7 > 9 ); - v8 = v13 - v6; - if ( v13 - v6 > a2 ) - return -1; - memcpy(a1, (char *)v12 - v8 + 12, v13 - v6); - return v8; -} - -//----- (00447DD0) -------------------------------------------------------- -int __cdecl __gnu_cxx::__snprintf_lite(char *a1, unsigned int a2, const char *a3, char *a4) -{ - const char *Src; // edx - const char *v5; // esi - const char *v7; // edi - char *v8; // ebx - char v9; // al - char v10; // al - char *v11; // ebp - int v12; // eax - int result; // eax - char *v14; // ebp - char *v15; // ecx - char v16; // al - char *v17; // [esp+30h] [ebp+4h] - - Src = a1; - v5 = a3; - v7 = &a1[a2 - 1]; - v8 = a1; - v9 = *a3; - if ( !*a3 ) - { - result = 0; - goto LABEL_17; - } - if ( a1 >= v7 ) -LABEL_26: - __gnu_cxx::__throw_insufficient_space(Src, v8); - while ( 1 ) - { - if ( v9 != 37 ) - goto LABEL_4; - v10 = v5[1]; - if ( v10 == 115 ) - { - v14 = a4 + 4; - v15 = *(char **)a4; - v16 = *v15; - if ( *v15 ) - { - if ( v7 <= v8 ) - { - v7 = v8; -LABEL_24: - __gnu_cxx::__throw_insufficient_space(Src, v7); - } - while ( 1 ) - { - ++v15; - *v8++ = v16; - v16 = *v15; - if ( !*v15 ) - break; - if ( v7 == v8 ) - goto LABEL_24; - } - } - v5 += 2; - a4 = v14; - goto LABEL_6; - } - if ( v10 != 122 ) - { - if ( v10 == 37 ) - ++v5; - else -LABEL_4: - v10 = *v5; - *v8 = v10; - ++v5; - ++v8; -LABEL_6: - v9 = *v5; - if ( !*v5 ) - break; - goto LABEL_7; - } - if ( v5[2] != 117 ) - goto LABEL_4; - v11 = a4 + 4; - v17 = (char *)Src; - v12 = __gnu_cxx::__concat_size_t(v8, v7 - v8, *(_DWORD *)a4); - Src = v17; - if ( v12 <= 0 ) - goto LABEL_26; - v5 += 3; - v8 += v12; - a4 = v11; - v9 = *v5; - if ( !*v5 ) - break; -LABEL_7: - if ( v8 >= v7 ) - goto LABEL_26; - } - result = v8 - Src; -LABEL_17: - *v8 = 0; - return result; -} - -//----- (00447EF0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) -{ - return *(_DWORD *)(a1 + 32); -} - -//----- (00447F00) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - int v15; // edx - int result; // eax - const std::locale *v17; // [esp+4h] [ebp-48h] - volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] - _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - v18 = (volatile signed __int32 **)(this + 28); - std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); - std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); - std::locale::~locale(v19); - v14 = *(_DWORD *)(this + 32); - *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); - v15 = *(_DWORD *)(a2 + 36); - *(_DWORD *)(a2 + 32) = v14; - result = *(_DWORD *)(this + 36); - *(_DWORD *)(this + 36) = v15; - *(_DWORD *)(a2 + 36) = result; - return result; -} -// 447F68: variable 'v17' is possibly undefined - -//----- (00447FC0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) -{ - return fflush(*(FILE **)(a1 + 32)); -} - -//----- (00447FE0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) -{ - int result; // eax - - result = getc(*(FILE **)(a1 + 32)); - *(_DWORD *)(a1 + 36) = result; - return result; -} - -//----- (00448000) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount) -{ - int result; // eax - int v5; // edx - - result = fread(Buffer, 1u, ElementCount, *(FILE **)(this + 32)); - v5 = -1; - if ( result > 0 ) - v5 = (unsigned __int8)Buffer[result - 1]; - *(_DWORD *)(this + 36) = v5; - return result; -} - -//----- (00448050) -------------------------------------------------------- -size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount) -{ - return fwrite(Buffer, 1u, ElementCount, this[8]); -} - -//----- (00448080) -------------------------------------------------------- -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, fpos_t a3, int a4, int a5) -{ - int v6; // ecx - fpos_t v8; // rax - - *this = -1; - this[1] = -1; - this[2] = 0; - v6 = 0; - if ( a4 ) - v6 = (a4 != 1) + 1; - if ( !fseeko64(*(FILE **)(a2 + 32), a3, v6) ) - { - v8 = ftello64((FILE *)*(_DWORD *)(a2 + 32)); - this[2] = 0; - *(_QWORD *)this = v8; - } - return this; -} - -//----- (00448110) -------------------------------------------------------- -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( - _DWORD *this, - FILE **a2, - fpos_t a3, - int a4, - int a5, - int a6) -{ - _DWORD *(__thiscall *file)(_DWORD *, int, fpos_t, int, int); // edi - fpos_t v9; // rax - - file = (_DWORD *(__thiscall *)(_DWORD *, int, fpos_t, int, int))(*a2)->_file; - if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - if ( !fseeko64(a2[8], a3, 0) ) - { - v9 = ftello64(a2[8]); - this[2] = 0; - *(_QWORD *)this = v9; - } - return this; - } - else - { - ((void (__thiscall *)(_DWORD *, FILE **, _DWORD, _DWORD, _DWORD, int))file)(this, a2, a3, HIDWORD(a3), 0, a6); - return this; - } -} - -//----- (004481F0) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, int Character) -{ - if ( Character == -1 ) - return -(fflush(this[8]) != 0); - else - return putc(Character, this[8]); -} - -//----- (00448230) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2) -{ - int result; // eax - - result = a2; - if ( a2 != -1 || (result = *(_DWORD *)(this + 36), result != -1) ) - result = ungetc(result, *(FILE **)(this + 32)); - *(_DWORD *)(this + 36) = -1; - return result; -} - -//----- (00448270) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) -{ - int v2; // eax - - v2 = getc(*(FILE **)(a1 + 32)); - return ungetc(v2, *(FILE **)(a1 + 32)); -} - -//----- (004482A0) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *a2) -{ - int v3; // eax - int v4; // eax - const std::locale *v5; // [esp+8h] [ebp-58h] - - std::streambuf::basic_streambuf(this, a2, v5); - v3 = *((_DWORD *)a2 + 8); - *this = &off_519C64; - *((_DWORD *)a2 + 8) = 0; - this[8] = v3; - v4 = *((_DWORD *)a2 + 9); - *((_DWORD *)a2 + 9) = -1; - this[9] = v4; -} -// 4482D5: variable 'v5' is possibly undefined -// 519C64: using guessed type int (*off_519C64)(); - -//----- (00448310) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_51ADD4; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - result = a2; - *this = &off_519C64; - this[9] = -1; - this[8] = a2; - return result; -} -// 519C64: using guessed type int (*off_519C64)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (00448370) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, std::locale *a2) -{ - int v3; // eax - int v4; // eax - const std::locale *v5; // [esp+8h] [ebp-58h] - - std::streambuf::basic_streambuf(this, a2, v5); - v3 = *((_DWORD *)a2 + 8); - *this = &off_519C64; - *((_DWORD *)a2 + 8) = 0; - this[8] = v3; - v4 = *((_DWORD *)a2 + 9); - *((_DWORD *)a2 + 9) = -1; - this[9] = v4; -} -// 4483A5: variable 'v5' is possibly undefined -// 519C64: using guessed type int (*off_519C64)(); - -//----- (004483E0) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_51ADD4; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - result = a2; - *this = &off_519C64; - this[9] = -1; - this[8] = a2; - return result; -} -// 519C64: using guessed type int (*off_519C64)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (00448440) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block) -{ - char *v2; // ecx - - v2 = Block + 28; - *((_DWORD *)v2 - 7) = &off_51ADD4; - std::locale::~locale((_DWORD **)v2); - operator delete(Block); -} -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (00448470) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) -{ - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (00448480) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) -{ - int v3; // eax - int v4; // eax - - std::streambuf::operator=((volatile signed __int32 **)this, a2); - v3 = *(_DWORD *)(a2 + 32); - *(_DWORD *)(a2 + 32) = 0; - *(_DWORD *)(this + 32) = v3; - v4 = *(_DWORD *)(a2 + 36); - *(_DWORD *)(a2 + 36) = -1; - *(_DWORD *)(this + 36) = v4; - return this; -} - -//----- (004484F0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) -{ - return *(_DWORD *)(a1 + 32); -} - -//----- (00448500) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - __int16 v15; // dx - int result; // eax - const std::locale *v17; // [esp+4h] [ebp-48h] - volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] - _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - v18 = (volatile signed __int32 **)(this + 28); - std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); - std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); - std::locale::~locale(v19); - v14 = *(_DWORD *)(this + 32); - *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); - v15 = *(_WORD *)(a2 + 36); - *(_DWORD *)(a2 + 32) = v14; - result = *(unsigned __int16 *)(this + 36); - *(_WORD *)(this + 36) = v15; - *(_WORD *)(a2 + 36) = result; - return result; -} -// 448568: variable 'v17' is possibly undefined - -//----- (004485C0) -------------------------------------------------------- -int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) -{ - return fflush(*(FILE **)(a1 + 32)); -} - -//----- (004485E0) -------------------------------------------------------- -wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) -{ - wint_t result; // ax - - result = getwc(*(FILE **)(a1 + 32)); - *(_WORD *)(a1 + 36) = result; - return result; -} - -//----- (00448600) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int a2, int a3) -{ - int v4; // edi - wint_t v5; // ax - - v4 = 0; - if ( a3 ) - { - while ( 1 ) - { - v5 = getwc(*(FILE **)(this + 32)); - if ( v5 == 0xFFFF ) - break; - *(_WORD *)(a2 + 2 * v4++) = v5; - if ( a3 == v4 ) - goto LABEL_7; - } - if ( !v4 ) - goto LABEL_6; -LABEL_7: - *(_WORD *)(this + 36) = *(_WORD *)(a2 + 2 * v4 - 2); - return v4; - } - else - { -LABEL_6: - *(_WORD *)(this + 36) = -1; - return 0; - } -} - -//----- (00448680) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int a2, int a3) -{ - int i; // ebx - - if ( !a3 ) - return 0; - for ( i = 0; i != a3; ++i ) - { - if ( putwc(*(_WORD *)(a2 + 2 * i), this[8]) == 0xFFFF ) - break; - } - return i; -} - -//----- (004486D0) -------------------------------------------------------- -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, fpos_t a3, int a4, int a5) -{ - int v6; // ecx - fpos_t v8; // rax - - *this = -1; - this[1] = -1; - this[2] = 0; - v6 = 0; - if ( a4 ) - v6 = (a4 != 1) + 1; - if ( !fseeko64(*(FILE **)(a2 + 32), a3, v6) ) - { - v8 = ftello64((FILE *)*(_DWORD *)(a2 + 32)); - this[2] = 0; - *(_QWORD *)this = v8; - } - return this; -} - -//----- (00448760) -------------------------------------------------------- -_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( - _DWORD *this, - FILE **a2, - fpos_t a3, - int a4, - int a5, - int a6) -{ - _DWORD *(__thiscall *file)(_DWORD *, int, fpos_t, int, int); // edi - fpos_t v9; // rax - - file = (_DWORD *(__thiscall *)(_DWORD *, int, fpos_t, int, int))(*a2)->_file; - if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - if ( !fseeko64(a2[8], a3, 0) ) - { - v9 = ftello64(a2[8]); - this[2] = 0; - *(_QWORD *)this = v9; - } - return this; - } - else - { - ((void (__thiscall *)(_DWORD *, FILE **, _DWORD, _DWORD, _DWORD, int))file)(this, a2, a3, HIDWORD(a3), 0, a6); - return this; - } -} - -//----- (00448840) -------------------------------------------------------- -__int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character) -{ - int v2; // eax - - if ( Character == 0xFFFF ) - return -(fflush(this[8]) != 0); - else - LOWORD(v2) = putwc(Character, this[8]); - return v2; -} - -//----- (00448880) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character) -{ - int result; // eax - - if ( Character == 0xFFFF ) - { - result = *(unsigned __int16 *)(this + 36); - if ( (_WORD)result != 0xFFFF ) - LOWORD(result) = ungetwc(*(_WORD *)(this + 36), *(FILE **)(this + 32)); - *(_WORD *)(this + 36) = -1; - } - else - { - LOWORD(result) = ungetwc(Character, *(FILE **)(this + 32)); - *(_WORD *)(this + 36) = -1; - } - return result; -} - -//----- (004488F0) -------------------------------------------------------- -wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) -{ - wint_t v2; // ax - - v2 = getwc(*(FILE **)(a1 + 32)); - return ungetwc(v2, *(FILE **)(a1 + 32)); -} - -//----- (00448920) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *a2) -{ - int v3; // eax - const std::locale *v4; // [esp+8h] [ebp-58h] - - std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v4); - v3 = *((_DWORD *)a2 + 8); - *(_DWORD *)this = &off_519CA4; - *((_DWORD *)a2 + 8) = 0; - *(_DWORD *)(this + 32) = v3; - *(_WORD *)(this + 36) = *((_WORD *)a2 + 18); - *((_WORD *)a2 + 18) = -1; -} -// 448955: variable 'v4' is possibly undefined -// 519CA4: using guessed type int (*off_519CA4)(); - -//----- (004489A0) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_51AE14; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_519CA4; - this[8] = a2; - result = -1; - *((_WORD *)this + 18) = -1; - return result; -} -// 519CA4: using guessed type int (*off_519CA4)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (00448A00) -------------------------------------------------------- -void __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, std::locale *a2) -{ - int v3; // eax - const std::locale *v4; // [esp+8h] [ebp-58h] - - std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v4); - v3 = *((_DWORD *)a2 + 8); - *(_DWORD *)this = &off_519CA4; - *((_DWORD *)a2 + 8) = 0; - *(_DWORD *)(this + 32) = v3; - *(_WORD *)(this + 36) = *((_WORD *)a2 + 18); - *((_WORD *)a2 + 18) = -1; -} -// 448A35: variable 'v4' is possibly undefined -// 519CA4: using guessed type int (*off_519CA4)(); - -//----- (00448A80) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_51AE14; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_519CA4; - this[8] = a2; - result = -1; - *((_WORD *)this + 18) = -1; - return result; -} -// 519CA4: using guessed type int (*off_519CA4)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (00448AE0) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *Block) -{ - char *v2; // ecx - - v2 = Block + 28; - *((_DWORD *)v2 - 7) = &off_51AE14; - std::locale::~locale((_DWORD **)v2); - operator delete(Block); -} -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (00448B10) -------------------------------------------------------- -void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) -{ - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (00448B20) -------------------------------------------------------- -int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) -{ - int v3; // eax - - std::wstreambuf::operator=((volatile signed __int32 **)this, a2); - v3 = *(_DWORD *)(a2 + 32); - *(_DWORD *)(a2 + 32) = 0; - *(_DWORD *)(this + 32) = v3; - LOWORD(v3) = *(_WORD *)(a2 + 36); - *(_WORD *)(a2 + 36) = -1; - *(_WORD *)(this + 36) = v3; - return this; -} - -//----- (00448B90) -------------------------------------------------------- -void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1) -{ - *a1 = &off_519CE4; -} -// 519CE4: using guessed type void (__cdecl *off_519CE4)(__gnu_cxx::recursive_init_error *__hidden this); - -//----- (00448BA0) -------------------------------------------------------- -void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_519CE4; - std::exception::~exception(Block); - operator delete(a1); -} -// 448BAC: variable 'Block' is possibly undefined -// 519CE4: using guessed type void (__cdecl *off_519CE4)(__gnu_cxx::recursive_init_error *__hidden this); - -//----- (00448BD0) -------------------------------------------------------- -void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_519CE4; - std::exception::~exception(a1); -} -// 448BD0: variable 'v1' is possibly undefined -// 519CE4: using guessed type void (__cdecl *off_519CE4)(__gnu_cxx::recursive_init_error *__hidden this); - -//----- (00448BE0) -------------------------------------------------------- -void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_519CF8; - std::exception::~exception(Block); - operator delete(a1); -} -// 448BEC: variable 'Block' is possibly undefined -// 519CF8: using guessed type void (__cdecl *off_519CF8)(__gnu_cxx::__concurrence_lock_error *__hidden this); - -//----- (00448C10) -------------------------------------------------------- -void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_519CF8; - std::exception::~exception(a1); -} -// 448C10: variable 'v1' is possibly undefined -// 519CF8: using guessed type void (__cdecl *off_519CF8)(__gnu_cxx::__concurrence_lock_error *__hidden this); - -//----- (00448C20) -------------------------------------------------------- -void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_519D0C; - std::exception::~exception(Block); - operator delete(a1); -} -// 448C2C: variable 'Block' is possibly undefined -// 519D0C: using guessed type void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00448C50) -------------------------------------------------------- -void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_519D0C; - std::exception::~exception(a1); -} -// 448C50: variable 'v1' is possibly undefined -// 519D0C: using guessed type void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00448C60) -------------------------------------------------------- -void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *a2) -{ - void *v2; // esp - void *v3; // esp - int v4[38]; // [esp+10h] [ebp-98h] BYREF - - HIBYTE(v4[5]) = unk_5121D0; - strcpy((char *)&v4[31], " "); - strcpy( - (char *)&v4[6], - "ot enough space for format expansion (Please submit full bug report at https://gcc.gnu.org/bugs/):\n "); - v2 = alloca(a2 - Src + 117); - v3 = alloca(a2 - Src + 117); - qmemcpy(v4, (char *)&v4[5] + 3, 0x68u); - memcpy(&v4[26], Src, a2 - Src); - *((_BYTE *)&v4[26] + v4[3]) = 0; - std::__throw_logic_error((std::logic_error *)v4); -} - -//----- (00448CF0) -------------------------------------------------------- -void __noreturn __gnu_cxx::__verbose_terminate_handler(void) -{ - struct type_info *v0; // eax - _BYTE *v1; // edx - bool v2; // zf - FILE *v3; // eax - FILE *v4; // eax - FILE *v5; // eax - FILE *v6; // eax - FILE *v7; // eax - FILE *v8; // eax - FILE *(__cdecl *v9)(unsigned int); // [esp+10h] [ebp-5Ch] - char *Block; // [esp+14h] [ebp-58h] - char *Buffer; // [esp+18h] [ebp-54h] - int status[4]; // [esp+5Ch] [ebp-10h] BYREF - - if ( !__gnu_cxx::__verbose_terminate_handler(void)::terminating ) - { - __gnu_cxx::__verbose_terminate_handler(void)::terminating = 1; - v0 = __cxa_current_exception_type(); - if ( v0 ) - { - v1 = (_BYTE *)*((_DWORD *)v0 + 1); - v2 = *v1 == 42; - status[0] = -1; - Buffer = &v1[v2]; - Block = __cxa_demangle(Buffer, 0, 0, status); - v9 = ___acrt_iob_func; - v3 = ___acrt_iob_func(2u); - fwrite("terminate called after throwing an instance of '", 1u, 0x30u, v3); - if ( status[0] ) - { - v4 = v9(2u); - fputs(Buffer, v4); - } - else - { - v6 = v9(2u); - fputs(Block, v6); - } - v5 = v9(2u); - fwrite("'\n", 1u, 2u, v5); - if ( !status[0] ) - free(Block); - __cxa_rethrow(); - } - v7 = ___acrt_iob_func(2u); - fwrite("terminate called without an active exception\n", 1u, 0x2Du, v7); - abort(); - } - v8 = ___acrt_iob_func(2u); - fwrite("terminate called recursively\n", 1u, 0x1Du, v8); - abort(); -} -// 50CC10: using guessed type char __gnu_cxx::__verbose_terminate_handler(void)::terminating; -// 448CF0: using guessed type int status[4]; - -//----- (00448FC0) -------------------------------------------------------- -void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_519CF8; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); -} -// 515CC8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; -// 519CF8: using guessed type void (__cdecl *off_519CF8)(__gnu_cxx::__concurrence_lock_error *__hidden this); - -//----- (00448FF0) -------------------------------------------------------- -void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_519D0C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); -} -// 515CD4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 519D0C: using guessed type void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (00449020) -------------------------------------------------------- -void __gnu_cxx::__freeres(void) -{ - if ( Block ) - { - free(Block); - Block = 0; - } -} - -//----- (00449050) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00449060) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00449070) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00449080) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (00449090) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (004490A0) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (004490B0) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (004490C0) -------------------------------------------------------- -bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) -{ - return *a1 == *a2; -} - -//----- (004490D0) -------------------------------------------------------- -char __userpurge __cxxabiv1::__class_type_info::__do_catch@( - _DWORD *a1@, - __cxxabiv1::__class_type_info *this, - const std::type_info *a3, - void **a4, - unsigned int a5) -{ - char result; // al - - result = std::type_info::operator==(a1, (int)this); - if ( !result && (unsigned int)a4 <= 3 ) - return (*(int (__thiscall **)(__cxxabiv1::__class_type_info *, _DWORD *, const std::type_info *))(*(_DWORD *)this + 20))( - this, - a1, - a3); - return result; -} - -//----- (00449110) -------------------------------------------------------- -bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int a2, int a3, _DWORD *a4) -{ - bool result; // al - - result = std::type_info::operator==(this, a2); - if ( result ) - { - a4[3] = 8; - a4[1] = 6; - *a4 = a3; - } - return result; -} - -//----- (00449150) -------------------------------------------------------- -int __userpurge __cxxabiv1::__class_type_info::__do_upcast@( - int *a1@, - __cxxabiv1::__class_type_info *this, - const __class_type_info *a3, - void **a4) -{ - int v4; // eax - int v5; // edx - int v6; // edx - int v8; // [esp+10h] [ebp-1Ch] BYREF - int v9; // [esp+14h] [ebp-18h] - int v10; // [esp+18h] [ebp-14h] - int v11; // [esp+1Ch] [ebp-10h] - - v4 = *a1; - v8 = 0; - v5 = *(_DWORD *)a3; - v9 = 0; - v10 = 16; - v11 = 0; - (*(void (__thiscall **)(int *, __cxxabiv1::__class_type_info *, int, int *))(v4 + 24))(a1, this, v5, &v8); - v6 = 0; - if ( (v9 & 6) == 6 ) - { - v6 = 1; - *(_DWORD *)a3 = v8; - } - return v6; -} - -//----- (004491C0) -------------------------------------------------------- -int __thiscall __cxxabiv1::__class_type_info::__do_dyncast( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - _DWORD *a8) -{ - bool v9; // al - _DWORD *v10; // [esp+1Ch] [ebp-10h] - - if ( a5 == a7 && (v10 = this, v9 = std::type_info::operator==(this, a6), this = v10, v9) ) - { - a8[2] = a3; - return 0; - } - else - { - if ( std::type_info::operator==(this, a4) ) - { - *a8 = a5; - a8[3] = 1; - a8[1] = a3; - } - return 0; - } -} - -//----- (00449230) -------------------------------------------------------- -int __stdcall __cxxabiv1::__class_type_info::__do_find_public_src( - __cxxabiv1::__class_type_info *this, - const __cxxabiv1::__class_type_info *a2, - const void *a3, - const __cxxabiv1::__class_type_info *a4, - const void *a5) -{ - return 5 * (a4 == a2) + 1; -} - -//----- (00449250) -------------------------------------------------------- -char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int a2, int a3, _DWORD *a4) -{ - char result; // al - - result = __cxxabiv1::__class_type_info::__do_upcast((_DWORD *)this, a2, a3, a4); - if ( !result ) - return (*(int (__thiscall **)(_DWORD, int, int, _DWORD *))(**(_DWORD **)(this + 8) + 24))( - *(_DWORD *)(this + 8), - a2, - a3, - a4); - return result; -} - -//----- (004492B0) -------------------------------------------------------- -int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - _DWORD *a8) -{ - bool v8; // al - _DWORD *v9; // ecx - int v10; // edx - bool v12; // al - - v8 = std::type_info::operator==(this, a4); - v9 = this; - v10 = a7; - if ( v8 ) - { - *a8 = a5; - a8[1] = a3; - if ( a2 < 0 ) - { - if ( a2 == -2 ) - a8[3] = 1; - } - else - { - a8[3] = 5 * (a7 == a2 + a5) + 1; - } - } - else - { - if ( a5 != a7 ) - return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( - v9[2], - a2, - a3, - a4, - a5, - a6, - v10, - a8); - v12 = std::type_info::operator==(this, a6); - v9 = this; - v10 = a7; - if ( !v12 ) - return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( - v9[2], - a2, - a3, - a4, - a5, - a6, - v10, - a8); - a8[2] = a3; - } - return 0; -} - -//----- (004493B0) -------------------------------------------------------- -int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@( - int a1@, - __cxxabiv1::__si_class_type_info *this, - const __cxxabiv1::__class_type_info *a3, - const void *a4, - const __cxxabiv1::__class_type_info *a5, - const void *a6) -{ - __cxxabiv1::__si_class_type_info *v7; // edx - bool v9; // al - - v7 = this; - if ( a5 == a3 && (v9 = std::type_info::operator==((_DWORD *)a1, (int)a4), v7 = this, v9) ) - return 6; - else - return (*(int (__thiscall **)(_DWORD, __cxxabiv1::__si_class_type_info *, const __cxxabiv1::__class_type_info *, const void *, const __cxxabiv1::__class_type_info *))(**(_DWORD **)(a1 + 8) + 32))( - *(_DWORD *)(a1 + 8), - v7, - a3, - a4, - a5); -} - -//----- (00449420) -------------------------------------------------------- -int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4) -{ - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // ebx - bool v9; // cf - int v10; // eax - int v11; // esi - char *v12; // edx - int v13; // eax - int v14; // eax - int v15; // ecx - int v16; // eax - _DWORD *v17; // ecx - int result; // eax - bool v19; // al - char v20; // [esp+13h] [ebp-39h] - unsigned __int8 v21; // [esp+13h] [ebp-39h] - int v22; // [esp+18h] [ebp-34h] - int v23; // [esp+20h] [ebp-2Ch] BYREF - int v24; // [esp+24h] [ebp-28h] - int v25; // [esp+28h] [ebp-24h] - _DWORD *v26; // [esp+2Ch] [ebp-20h] - - LOBYTE(v5) = __cxxabiv1::__class_type_info::__do_upcast(this, a2, (int)a3, a4); - v6 = v5; - if ( (_BYTE)v5 ) - return v6; - v22 = a4[2]; - if ( (v22 & 0x10) != 0 ) - v22 = this[2]; - v7 = this[3]; - v8 = v7 - 1; - if ( !v7 ) - { -LABEL_34: - LOBYTE(v6) = a4[1] != 0; - return v6; - } - while ( 1 ) - { - while ( 1 ) - { - v23 = 0; - v24 = 0; - v25 = v22; - v10 = this[2 * v8 + 5]; - v26 = 0; - v11 = v10 & 2; - v6 = v10 & 1; - v20 = v10 & 1; - if ( !(v11 | v22 & 1) ) - goto LABEL_9; - v12 = 0; - if ( a3 ) - { - v13 = v10 >> 8; - if ( v20 ) - v13 = *(_DWORD *)(*a3 + v13); - v12 = (char *)a3 + v13; - } - v6 = (*(int (__thiscall **)(_DWORD, int, char *, int *))(*(_DWORD *)this[2 * v8 + 4] + 24))( - this[2 * v8 + 4], - a2, - v12, - &v23); - if ( !(_BYTE)v6 ) - goto LABEL_9; - if ( v26 == (_DWORD *)8 && v20 ) - v26 = (_DWORD *)this[2 * v8 + 4]; - if ( !v11 && v24 > 3 ) - v24 &= ~2u; - v14 = a4[3]; - if ( v14 ) - break; - v15 = v25; - *a4 = v23; - v16 = v24; - a4[2] = v15; - v17 = v26; - a4[1] = v16; - a4[3] = v17; - if ( v16 <= 3 ) - return v6; - if ( (v16 & 2) != 0 ) - { - if ( (this[2] & 1) == 0 ) - return v6; - goto LABEL_9; - } - if ( (v16 & 1) == 0 || (this[2] & 2) == 0 ) - return v6; - v9 = v8-- == 0; - if ( v9 ) - goto LABEL_34; - } - if ( *a4 != v23 ) - break; - if ( !*a4 ) - { - if ( v26 == (_DWORD *)8 || v14 == 8 || (v21 = v6, v19 = std::type_info::operator==(v26, a4[3]), v6 = v21, !v19) ) - { - a4[1] = 2; - return v6; - } - } - a4[1] |= v24; -LABEL_9: - v9 = v8-- == 0; - if ( v9 ) - goto LABEL_34; - } - *a4 = 0; - result = v6; - a4[1] = 2; - return result; -} -// 449448: variable 'v5' is possibly undefined - -//----- (00449650) -------------------------------------------------------- -int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast( - _DWORD *this, - int a2, - int a3, - int a4, - char *a5, - int a6, - char *a7, - int *a8) -{ - char *v8; // eax - int v9; // eax - int v10; // edi - int v11; // esi - int v12; // ebx - int v13; // edx - int v14; // eax - bool v15; // cf - int v16; // eax - int v17; // ecx - int v18; // eax - int v19; // edx - unsigned __int8 v20; // si - int v21; // eax - int v22; // edx - int v24; // eax - int v25; // eax - int v27; // [esp+40h] [ebp-58h] - int v28; // [esp+44h] [ebp-54h] - char v29; // [esp+44h] [ebp-54h] - char *v30; // [esp+48h] [ebp-50h] - int v31; // [esp+4Ch] [ebp-4Ch] - int v32; // [esp+54h] [ebp-44h] - unsigned __int8 v33; // [esp+59h] [ebp-3Fh] - char v34; // [esp+5Ah] [ebp-3Eh] - char v35; // [esp+5Bh] [ebp-3Dh] - int v36; // [esp+68h] [ebp-30h] BYREF - int v37; // [esp+6Ch] [ebp-2Ch] - int v38; // [esp+70h] [ebp-28h] - int v39; // [esp+74h] [ebp-24h] - int v40; // [esp+78h] [ebp-20h] - - if ( (a8[4] & 0x10) != 0 ) - a8[4] = this[2]; - if ( a5 == a7 && std::type_info::operator==(this, a6) ) - { - a8[2] = a3; - return 0; - } - if ( std::type_info::operator==(this, a4) ) - { - *a8 = (int)a5; - a8[1] = a3; - if ( a2 >= 0 ) - { - a8[3] = 5 * (a7 == &a5[a2]) + 1; - return 0; - } - v33 = 0; - if ( a2 == -2 ) - a8[3] = 1; - return v33; - } - v8 = 0; - v33 = 0; - v35 = 0; - v34 = 1; - if ( a2 >= 0 ) - v8 = &a7[-a2]; - v30 = v8; - while ( 1 ) - { - v9 = this[3]; - v10 = v9 - 1; - if ( v9 ) - break; -LABEL_59: - v35 &= v34; - if ( !v35 ) - return v33; - v34 = 0; - } - while ( 1 ) - { - while ( 1 ) - { - v16 = a8[4]; - v36 = 0; - v37 = 0; - v17 = a3; - v29 = v16; - v40 = v16; - v38 = 0; - v18 = this[2 * v10 + 5]; - v39 = 0; - v19 = v18 >> 8; - if ( (v18 & 1) != 0 ) - { - v17 = a3 | 1; - v19 = *(_DWORD *)(*(_DWORD *)a5 + v19); - } - if ( !v30 || v34 != v30 < &a5[v19] ) - break; - v35 = 1; -LABEL_30: - v15 = v10-- == 0; - if ( v15 ) - goto LABEL_59; - } - if ( (v18 & 2) != 0 ) - break; - if ( a2 != -2 || (v29 & 3) != 0 ) - { - v17 &= ~2u; - break; - } - v15 = v10-- == 0; - if ( v15 ) - goto LABEL_59; - } - v20 = (*(int (__thiscall **)(_DWORD, int, int, int, char *, int, char *, int *))(*(_DWORD *)this[2 * v10 + 4] + 28))( - this[2 * v10 + 4], - a2, - v17, - a4, - &a5[v19], - a6, - a7, - &v36); - v12 = v39; - v21 = v38 | a8[2]; - v28 = v21; - v22 = v39; - a8[2] = v21; - if ( (v22 & 0xFFFFFFFB) == 2 ) - { - v25 = v36; - a8[3] = v12; - *a8 = v25; - a8[1] = v37; - return v20; - } - v13 = v36; - v27 = *a8; - if ( v33 ) - { - if ( !v27 ) - { - if ( !v36 ) - goto LABEL_29; - v11 = a8[3]; - if ( v21 <= 3 ) - goto LABEL_43; - goto LABEL_15; - } - } - else if ( !*a8 ) - { - v24 = v37; - *a8 = v36; - a8[1] = v24; - if ( v13 && v28 ) - { - v33 = v20; - if ( (this[2] & 1) == 0 ) - return v33; - } - else - { - v33 = v20; - } - goto LABEL_29; - } - if ( v36 == v27 ) - { - a8[1] |= v37; - goto LABEL_29; - } - if ( !v36 && !v20 ) - { -LABEL_29: - if ( v28 == 4 ) - return v33; - goto LABEL_30; - } - v11 = a8[3]; - if ( v21 <= 3 ) - goto LABEL_43; -LABEL_15: - if ( (v21 & 1) == 0 || (a8[4] & 2) == 0 ) - { - if ( !v11 ) - v11 = 1; - if ( !v12 ) - v12 = 1; - v31 = v11; - v32 = v12; - goto LABEL_22; - } -LABEL_43: - v31 = v11; - v32 = v12; - if ( v11 > 0 ) - goto LABEL_44; - if ( v12 <= 3 || (v12 & 1) != 0 && (this[2] & 2) != 0 ) - { - if ( a2 < 0 ) - { - if ( a2 != -2 ) - { - v11 = (*(int (__fastcall **)(int, int, int, int, int, char *))(*(_DWORD *)a4 + 32))(a4, v36, a2, v27, a6, a7); - v31 = v11; -LABEL_44: - if ( v12 <= 0 ) - { - if ( v11 > 3 && ((v11 & 1) == 0 || (this[2] & 2) == 0) ) - { - if ( (v11 ^ 1) > 3 ) - { -LABEL_80: - v12 = v11; - v14 = v31 & 2; - goto LABEL_26; - } -LABEL_55: - v28 = a8[2]; -LABEL_56: - *a8 = 0; - a8[3] = 1; - v33 = 1; - goto LABEL_29; - } - v13 = v36; - if ( a2 < 0 ) - { - if ( a2 != -2 ) - { - v12 = (*(int (__thiscall **)(int, int, int, int, char *))(*(_DWORD *)a4 + 32))(a4, a2, v36, a6, a7); - v32 = v12; - if ( (v12 ^ v31) <= 3 ) - goto LABEL_51; -LABEL_23: - v13 = v36; - if ( v12 <= 3 ) - { - v12 = v11; - v14 = v11 & 2; - goto LABEL_26; - } - goto LABEL_24; - } -LABEL_79: - if ( (v31 ^ 1) > 3 ) - goto LABEL_80; - goto LABEL_55; - } - if ( a7 != (char *)(v36 + a2) ) - goto LABEL_79; - if ( (v11 ^ 6) <= 3 ) - { - v32 = 6; -LABEL_51: - if ( (v31 & v32) > 3 ) - { - *a8 = 0; - a8[3] = 2; - return 1; - } - goto LABEL_55; - } -LABEL_99: - v14 = 2; - v12 = 6; - goto LABEL_25; - } -LABEL_22: - if ( (v12 ^ v31) <= 3 ) - goto LABEL_51; - goto LABEL_23; - } - if ( v12 <= 0 ) - { -LABEL_78: - v31 = 1; - v11 = 1; - goto LABEL_79; - } - } - else - { - if ( a7 == (char *)(a2 + v27) ) - { - v31 = 6; - v11 = 6; - if ( v12 <= 0 ) - goto LABEL_80; - goto LABEL_22; - } - if ( v12 <= 0 ) - { - if ( a7 == (char *)(v36 + a2) ) - goto LABEL_99; - goto LABEL_78; - } - } - v11 = 1; - if ( (v12 ^ 1) <= 3 ) - goto LABEL_56; - goto LABEL_23; - } - if ( (v12 ^ 1) <= 3 ) - goto LABEL_56; -LABEL_24: - v14 = v12 & 2; -LABEL_25: - *a8 = v13; - v33 = 0; - a8[1] = v37; -LABEL_26: - a8[3] = v12; - if ( !v14 && (v12 & 1) != 0 ) - { - v28 = a8[2]; - goto LABEL_29; - } - return 0; -} - -//----- (00449D00) -------------------------------------------------------- -int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@( - _DWORD *a1@, - __cxxabiv1::__vmi_class_type_info *this, - const __cxxabiv1::__class_type_info *a3, - const void *a4, - const __cxxabiv1::__class_type_info *a5, - const void *a6) -{ - int v7; // eax - int v8; // ebx - int v9; // edx - int v10; // eax - int result; // eax - bool v13; // dl - char v14; // [esp+1Fh] [ebp-1Dh] - - if ( a3 != a5 || (v13 = std::type_info::operator==(a1, (int)a4), result = 6, !v13) ) - { - v7 = a1[3]; - v8 = v7 - 1; - if ( !v7 ) - return 1; - while ( 1 ) - { - v9 = a1[2 * v8 + 5]; - if ( (v9 & 2) != 0 ) - { - v10 = v9 >> 8; - v14 = v9 & 1; - if ( (v9 & 1) != 0 ) - { - if ( this == (__cxxabiv1::__vmi_class_type_info *)-3 ) - goto LABEL_8; - v10 = *(_DWORD *)(*(_DWORD *)a3 + v10); - } - result = (*(int (__thiscall **)(_DWORD, __cxxabiv1::__vmi_class_type_info *, char *, const void *, const __cxxabiv1::__class_type_info *))(*(_DWORD *)a1[2 * v8 + 4] + 32))( - a1[2 * v8 + 4], - this, - (char *)a3 + v10, - a4, - a5); - if ( result > 3 ) - { - if ( v14 ) - return result | 1; - return result; - } - } -LABEL_8: - if ( v8-- == 0 ) - return 1; - } - } - return result; -} - -//----- (00449DE0) -------------------------------------------------------- -const char *`anonymous namespace'::io_error_category::name() -{ - return "iostream"; -} - -//----- (00449DF0) -------------------------------------------------------- -int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3) -{ - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_BYTE *)(this + 8) = 0; - if ( a3 == 1 ) - std::string::_M_replace((unsigned int **)this, 0, 0, "iostream error", 0xEu); - else - std::string::_M_replace((unsigned int **)this, 0, 0, "Unknown error", 0xDu); - return this; -} - -//----- (00449EE0) -------------------------------------------------------- -_anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition( - _anonymous_namespace_::system_error_category *this, - int a2) -{ - return this; -} - -//----- (00449F40) -------------------------------------------------------- -const char *`anonymous namespace'::system_error_category::name() -{ - return "system"; -} - -//----- (00449F50) -------------------------------------------------------- -const char *`anonymous namespace'::generic_error_category::name() -{ - return "generic"; -} - -//----- (00449F60) -------------------------------------------------------- -_DWORD *__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11]( - _DWORD *this, - int a2, - int ErrorMessage) -{ - _DWORD *v4; // edi - char *v5; // eax - char *Src; // esi - size_t v7; // eax - size_t Size; // ebp - _DWORD *v10; // eax - int v11[8]; // [esp+1Ch] [ebp-20h] BYREF - - v4 = this + 2; - v5 = strerror(ErrorMessage); - *this = v4; - if ( !v5 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Src = v5; - v7 = strlen(v5); - v11[0] = v7; - Size = v7; - if ( v7 > 0xF ) - { - v10 = std::string::_M_create((unsigned int *)v11, 0); - *this = v10; - v4 = v10; - this[2] = v11[0]; - goto LABEL_9; - } - if ( v7 != 1 ) - { - if ( !v7 ) - goto LABEL_5; -LABEL_9: - memcpy(v4, Src, Size); - v7 = v11[0]; - v4 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Src; -LABEL_5: - this[1] = v7; - *((_BYTE *)v4 + v7) = 0; - return this; -} -// 449F60: using guessed type size_t var_20[8]; - -//----- (0044A010) -------------------------------------------------------- -int WXSS::CSSTreeLib::NonTerminal::GetClass() -{ - return 2; -} - -//----- (0044A018) -------------------------------------------------------- -int WXSS::CSSTreeLib::EPS::GetClass() -{ - return 4; -} - -//----- (0044A020) -------------------------------------------------------- -int WXSS::CSSTreeLib::Rule::GetClass() -{ - return 0; -} - -//----- (0044A024) -------------------------------------------------------- -int WXSS::CSSTreeLib::Action::GetClass() -{ - return 3; -} - -//----- (0044A02C) -------------------------------------------------------- -int WXSS::CSSTreeLib::Terminal::GetClass() -{ - return 1; -} - -//----- (0044A034) -------------------------------------------------------- -const char *__fastcall WXSS::Token::GetLiteral(_DWORD *a1) -{ - const char *result; // eax - int v2; // edx - - if ( *a1 == 1 ) - return (const char *)(a1 + 7); - result = "$"; - if ( *a1 != 8 ) - { - v2 = a1[1]; - result = "UNKNOWN"; - if ( v2 ) - return *(const char **)v2; - } - return result; -} - -//----- (0044A060) -------------------------------------------------------- -const char *__gnu_cxx::__concurrence_lock_error::what() -{ - return "__gnu_cxx::__concurrence_lock_error"; -} - -//----- (0044A070) -------------------------------------------------------- -const char *__gnu_cxx::__concurrence_unlock_error::what() -{ - return "__gnu_cxx::__concurrence_unlock_error"; -} - -//----- (0044A080) -------------------------------------------------------- -int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) -{ - int v2; // eax - int v3; // edx - - v2 = *this; - v3 = 1; - if ( *this <= a2 ) - { - v3 = *(_DWORD *)(v2 - 12); - LOBYTE(v3) = v2 + 2 * v3 < a2; - } - return v3; -} - -//----- (0044A0B0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_last_of(this, String, a3, v4); -} - -//----- (0044A0F0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // ebx - int v5; // eax - unsigned int v6; // eax - _WORD *v7; // eax - int v8; // edx - - v4 = a3; - v5 = *(_DWORD *)(*this - 12); - if ( !v5 || !a4 ) - return -1; - v6 = v5 - 1; - if ( v6 <= a3 ) - v4 = v6; - while ( !a2 ) - { -LABEL_9: - if ( v4-- == 0 ) - return v4; - } - v7 = a2; - v8 = a4; - while ( *(_WORD *)(*this + 2 * v4) != *v7 ) - { - ++v7; - if ( !--v8 ) - goto LABEL_9; - } - return v4; -} - -//----- (0044A160) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::find_last_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (0044A190) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - - result = -1; - v4 = *(_DWORD *)(*this - 12); - if ( v4 ) - { - result = v4 - 1; - if ( a3 <= v4 - 1 ) - result = a3; - do - { - if ( a2 == *(_WORD *)(*this + 2 * result) ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (0044A1D0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_first_of(this, String, a3, v4); -} - -//----- (0044A210) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // ebp - int v6; // edx - _WORD *v7; // eax - - if ( !a4 ) - return -1; - v4 = a3; - v5 = *(_DWORD *)(*this - 12); - if ( v5 <= a3 ) - return -1; - while ( !a2 ) - { -LABEL_7: - if ( v5 <= ++v4 ) - return -1; - } - v6 = a4; - v7 = a2; - while ( *(_WORD *)(*this + 2 * v4) != *v7 ) - { - ++v7; - if ( !--v6 ) - goto LABEL_7; - } - return v4; -} - -//----- (0044A270) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::find_first_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (0044A2A0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(int *this, __int16 a2, unsigned int a3) -{ - return std::wstring::find(this, a2, a3); -} - -//----- (0044A2B0) -------------------------------------------------------- -void *__thiscall std::wstring::get_allocator(void *this, int a2) -{ - return this; -} - -//----- (0044A2C0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) -{ - unsigned int result; // eax - - result = a2 + 536870910 - *(_DWORD *)(*this - 12); - if ( result < a3 ) - std::__throw_length_error(a4); - return result; -} - -//----- (0044A2F0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_last_not_of(this, String, a3, v4); -} - -//----- (0044A330) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // ebx - int v5; // eax - unsigned int v6; // eax - _WORD *v7; // eax - int v8; // edx - - v4 = -1; - v5 = *(_DWORD *)(*this - 12); - if ( v5 ) - { - v6 = v5 - 1; - v4 = a3; - if ( v6 <= a3 ) - v4 = v6; - while ( a4 && a2 ) - { - v7 = a2; - v8 = a4; - while ( *(_WORD *)(*this + 2 * v4) != *v7 ) - { - ++v7; - if ( !--v8 ) - return v4; - } - if ( v4-- == 0 ) - return v4; - } - } - return v4; -} - -//----- (0044A3A0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::find_last_not_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (0044A3D0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(_DWORD *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - - result = -1; - v4 = *(_DWORD *)(*this - 12); - if ( v4 ) - { - result = v4 - 1; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_WORD *)(*this + 2 * result) != a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (0044A410) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int a3) -{ - unsigned int v4; // ebx - size_t v5; // eax - int v6; // esi - unsigned int v7; // edi - size_t v8; // ebp - __int16 v9; // cx - wchar_t *v10; // eax - size_t v11; // edx - - v4 = a3; - v5 = wcslen(String); - v6 = *this; - v7 = *(_DWORD *)(v6 - 12); - if ( a3 < v7 ) - { - v8 = v5; - if ( !v5 ) - return v4; - v9 = *(_WORD *)(v6 + 2 * a3); - if ( !String ) - return v4; - while ( 1 ) - { - v10 = String; - v11 = v8; - while ( v9 != *v10 ) - { - ++v10; - if ( !--v11 ) - return v4; - } - if ( ++v4 == v7 ) - break; - v9 = *(_WORD *)(v6 + 2 * v4); - } - } - return -1; -} - -//----- (0044A4A0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4) -{ - int v4; // esi - unsigned int v5; // ebx - unsigned int v6; // edi - __int16 v7; // cx - _WORD *v8; // eax - int v9; // edx - - v4 = *this; - v5 = a3; - v6 = *(_DWORD *)(*this - 12); - if ( a3 < v6 ) - { - if ( !a4 ) - return v5; - v7 = *(_WORD *)(v4 + 2 * a3); - if ( !a2 ) - return v5; - while ( 1 ) - { - v8 = a2; - v9 = a4; - while ( v7 != *v8 ) - { - ++v8; - if ( !--v9 ) - return v5; - } - if ( v6 == ++v5 ) - break; - v7 = *(_WORD *)(v4 + 2 * v5); - } - } - return -1; -} - -//----- (0044A520) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(_DWORD *this, _DWORD *a2, unsigned int a3) -{ - unsigned int v3; // ebx - unsigned int v4; // esi - int v5; // edx - _WORD *i; // eax - - v3 = a3; - v4 = *(_DWORD *)(*this - 12); - if ( a3 < v4 ) - { - if ( !*(_DWORD *)(*a2 - 12) ) - return v3; - do - { - v5 = *(_DWORD *)(*a2 - 12); - for ( i = (_WORD *)*a2; *(_WORD *)(*this + 2 * v3) != *i; ++i ) - { - if ( !--v5 ) - return v3; - } - ++v3; - } - while ( v3 != v4 ); - } - return -1; -} - -//----- (0044A590) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3) -{ - int v3; // edx - int result; // eax - unsigned int v5; // ecx - - v3 = *this; - result = a3; - v5 = *(_DWORD *)(*this - 12); - if ( a3 >= v5 ) - return -1; - while ( *(_WORD *)(v3 + 2 * result) == a2 ) - { - if ( ++result == v5 ) - return -1; - } - return result; -} - -//----- (0044A5D0) -------------------------------------------------------- -int __thiscall std::wstring::at(int *this, unsigned int a2) -{ - int v2; // edx - unsigned int v3; // ecx - - v2 = *this; - v3 = *(_DWORD *)(*this - 12); - if ( a2 >= v3 ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, v3); - return v2 + 2 * a2; -} - -//----- (0044A600) -------------------------------------------------------- -int __fastcall std::wstring::end(_DWORD *a1) -{ - return *a1 + 2 * *(_DWORD *)(*a1 - 12); -} - -//----- (0044A610) -------------------------------------------------------- -int __fastcall std::wstring::_Rep::_M_is_leaked(int a1) -{ - return *(_DWORD *)(a1 + 8) >> 31; -} - -//----- (0044A620) -------------------------------------------------------- -bool __fastcall std::wstring::_Rep::_M_is_shared(int a1) -{ - return *(_DWORD *)(a1 + 8) > 0; -} - -//----- (0044A630) -------------------------------------------------------- -int __fastcall std::wstring::back(_DWORD *a1) -{ - return *a1 + 2 * *(_DWORD *)(*a1 - 12) - 2; -} - -//----- (0044A640) -------------------------------------------------------- -int __fastcall std::wstring::cend(_DWORD *a1) -{ - return *a1 + 2 * *(_DWORD *)(*a1 - 12); -} - -//----- (0044A650) -------------------------------------------------------- -int __thiscall std::wstring::copy(int *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - int v4; // ecx - unsigned int v5; // ebx - unsigned int v6; // ebx - _WORD *Src; // eax - - v4 = *this; - v5 = *(_DWORD *)(v4 - 12); - if ( a4 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::copy", - a4, - *(_DWORD *)(v4 - 12)); - v6 = v5 - a4; - if ( v6 > a3 ) - v6 = a3; - if ( !v6 ) - return v6; - Src = (_WORD *)(v4 + 2 * a4); - if ( v6 != 1 ) - { - memcpy(a2, Src, 2 * v6); - return v6; - } - *a2 = *Src; - return 1; -} - -//----- (0044A6D0) -------------------------------------------------------- -int __fastcall std::wstring::data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044A6E0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find(int *this, wchar_t *String, int a3) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::find(this, String, a3, v4); -} - -//----- (0044A720) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // edx - _WORD *v5; // eax - int v6; // edi - unsigned int v7; // edx - unsigned int v8; // edx - int v10; // edx - __int16 v11; // bx - unsigned int v12; // edx - int v13; // ecx - int v14; // [esp+4h] [ebp-14h] - - v14 = *this; - v4 = *(_DWORD *)(*this - 12); - if ( a4 ) - { - if ( v4 > a3 && (v5 = (_WORD *)(v14 + 2 * a3), v6 = v14 + 2 * v4, v7 = v4 - a3, a4 <= v7) && (v8 = 1 - a4 + v7) != 0 ) - { -LABEL_5: - while ( *a2 != *v5 ) - { - ++v5; - if ( !--v8 ) - return -1; - } - if ( a2 != v5 ) - { - v10 = 0; - while ( v10 != a4 - 1 ) - { - v11 = v5[++v10]; - if ( v11 != a2[v10] ) - { - v12 = (v6 - (int)++v5) >> 1; - if ( a4 <= v12 ) - { - v8 = 1 - a4 + v12; - if ( v8 ) - goto LABEL_5; - } - return -1; - } - } - } - return ((int)v5 - v14) >> 1; - } - else - { - return -1; - } - } - else - { - v13 = -1; - if ( v4 >= a3 ) - return a3; - return v13; - } -} - -//----- (0044A810) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find(int *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::find(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (0044A840) -------------------------------------------------------- -int __thiscall std::wstring::find(int *this, __int16 a2, unsigned int a3) -{ - int v3; // ebx - int result; // eax - unsigned int v5; // edx - int v6; // edx - _WORD *i; // eax - - v3 = *this; - result = -1; - v5 = *(_DWORD *)(*this - 12); - if ( a3 < v5 ) - { - v6 = v5 - a3; - for ( i = (_WORD *)(v3 + 2 * a3); *i != a2; ++i ) - { - if ( !--v6 ) - return -1; - } - return ((int)i - v3) >> 1; - } - return result; -} - -//----- (0044A890) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (0044A8A0) -------------------------------------------------------- -int __fastcall std::wstring::size(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12); -} - -//----- (0044A8B0) -------------------------------------------------------- -int __fastcall std::wstring::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044A8C0) -------------------------------------------------------- -int __fastcall std::wstring::c_str(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044A8D0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (0044A8E0) -------------------------------------------------------- -bool __fastcall std::wstring::empty(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) == 0; -} - -//----- (0044A8F0) -------------------------------------------------------- -int __fastcall std::wstring::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044A900) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::rfind(this, String, a3, v4); -} - -//----- (0044A940) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - int v4; // ebx - unsigned int v5; // esi - unsigned int v6; // eax - unsigned int v7; // eax - _WORD *v8; // esi - _WORD *v9; // eax - _WORD *v10; // edx - unsigned int v11; // ecx - - v4 = -1; - v5 = a3; - v6 = *(_DWORD *)(*this - 12); - if ( a4 <= v6 ) - { - v7 = v6 - a4; - if ( v7 <= a3 ) - v5 = v7; - v4 = v5; - v8 = (_WORD *)(*this + 2 * v5); - if ( a4 ) - { - while ( 1 ) - { - v9 = v8; - if ( v8 == a2 ) - break; - if ( a2 ) - { - v10 = a2; - v11 = a4; - while ( *v9 == *v10 ) - { - ++v9; - ++v10; - if ( !--v11 ) - return v4; - } - } - --v8; - if ( !v4 ) - return -1; - --v4; - } - } - } - return v4; -} -// 44A9A9: conditional instruction was optimized away because %arg_8.4!=0 - -//----- (0044A9C0) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, _WORD **a2, unsigned int a3) -{ - return std::wstring::rfind(this, *a2, a3, *((_DWORD *)*a2 - 3)); -} - -//----- (0044A9F0) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - - result = -1; - v4 = *(_DWORD *)(*this - 12); - if ( v4 ) - { - result = v4 - 1; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_WORD *)(*this + 2 * result) == a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (0044AA30) -------------------------------------------------------- -int __fastcall std::wstring::_M_rep(_DWORD *a1) -{ - return *a1 - 12; -} - -//----- (0044AA40) -------------------------------------------------------- -int __fastcall std::wstring::cbegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044AA50) -------------------------------------------------------- -int __fastcall std::wstring::length(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12); -} - -//----- (0044AA60) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); - return result; -} - -//----- (0044AA80) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // eax - unsigned int v6; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::substr", - a3, - *(_DWORD *)(*a2 - 12)); - v6 = v5 - a3; - if ( v6 > a4 ) - v6 = a4; - *this = std::wstring::_S_construct((_WORD *)(*a2 + 2 * a3), *a2 + 2 * (a3 + v6)); - return this; -} - -//----- (0044AAF0) -------------------------------------------------------- -int __fastcall std::wstring::_M_data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044AB00) -------------------------------------------------------- -int __fastcall std::wstring::_M_iend(_DWORD *a1) -{ - return *a1 + 2 * *(_DWORD *)(*a1 - 12); -} - -//----- (0044AB10) -------------------------------------------------------- -int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String) -{ - wchar_t *v3; // ebx - size_t v4; // esi - size_t v5; // edx - size_t v6; // eax - _DWORD *v7; // edx - size_t v9; // [esp+18h] [ebp-24h] - size_t v10; // [esp+1Ch] [ebp-20h] - - v3 = String; - v4 = *((_DWORD *)*this - 3); - v5 = wcslen(String); - v10 = v5; - v6 = v4; - if ( v5 <= v4 ) - v6 = v5; - v9 = v6; - if ( !v6 ) - return v4 - v10; - v7 = *this; - if ( String == *this ) - return v4 - v10; - if ( (v7 != 0) != (String != 0) ) - return String == 0 ? 1 : -1; - while ( *(_WORD *)v7 == *v3 ) - { - v7 = (_DWORD *)((char *)v7 + 2); - ++v3; - if ( !--v9 ) - return v4 - v10; - } - return *(_WORD *)v7 < *v3 ? -1 : 1; -} - -//----- (0044ABB0) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, _WORD **a2) -{ - _WORD *v2; // eax - _DWORD *v3; // edx - unsigned int v4; // ebx - unsigned int v5; // esi - unsigned int v6; // ecx - - v2 = (_WORD *)*this; - v3 = *a2; - v4 = *(_DWORD *)(*this - 12); - v5 = *((_DWORD *)*a2 - 3); - v6 = v4; - if ( v5 <= v4 ) - v6 = *((_DWORD *)*a2 - 3); - if ( !v6 || v3 == (_DWORD *)v2 ) - return v4 - v5; - while ( *v2 == *(_WORD *)v3 ) - { - ++v2; - v3 = (_DWORD *)((char *)v3 + 2); - if ( !--v6 ) - return v4 - v5; - } - return *v2 < *(_WORD *)v3 ? -1 : 1; -} - -//----- (0044AC00) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) -{ - unsigned int v4; // eax - unsigned int v5; // ebx - wchar_t *v6; // esi - unsigned int v7; // ebx - unsigned int v9; // ebx - size_t v10; // ecx - size_t v11; // eax - wchar_t *v12; // edx - unsigned int v14; // [esp+1Ch] [ebp-20h] - - v4 = a3; - v5 = *(_DWORD *)(*this - 12); - v6 = String; - if ( a2 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - *(_DWORD *)(*this - 12)); - v7 = v5 - a2; - if ( v7 <= a3 ) - v4 = v7; - v9 = v4; - v14 = v4; - v10 = wcslen(String); - v11 = v9; - if ( v10 <= v9 ) - v11 = v10; - if ( !v11 ) - return v14 - v10; - v12 = (wchar_t *)(*this + 2 * a2); - if ( v12 == String ) - return v14 - v10; - if ( (v12 != 0) != (String != 0) ) - return String == 0 ? 1 : -1; - while ( *v12 == *v6 ) - { - ++v12; - ++v6; - if ( !--v11 ) - return v14 - v10; - } - return *v12 < *v6 ? -1 : 1; -} - -//----- (0044ACE0) -------------------------------------------------------- -int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _WORD *a4, unsigned int a5) -{ - int v5; // esi - unsigned int v6; // eax - _WORD *v7; // ecx - unsigned int v8; // eax - unsigned int v9; // edi - _WORD *v10; // edx - int v11; // esi - - v5 = *this; - v6 = *(_DWORD *)(*this - 12); - v7 = a4; - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - v6); - v8 = v6 - a2; - if ( v8 > a3 ) - v8 = a3; - v9 = a5; - if ( v8 <= a5 ) - v9 = v8; - if ( !v9 ) - return v8 - a5; - v10 = (_WORD *)(v5 + 2 * a2); - if ( v10 == a4 ) - return v8 - a5; - v11 = 1; - if ( !a4 ) - return v11; - while ( *v10 == *v7 ) - { - ++v10; - ++v7; - if ( !--v9 ) - return v8 - a5; - } - return *v10 < *v7 ? -1 : 1; -} - -//----- (0044AD80) -------------------------------------------------------- -int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, _WORD **a4) -{ - int v4; // esi - unsigned int v5; // eax - unsigned int v6; // eax - _DWORD *v7; // edx - unsigned int v8; // ecx - unsigned int v9; // edi - _WORD *v10; // ebx - - v4 = *this; - v5 = *(_DWORD *)(*this - 12); - if ( a2 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - *(_DWORD *)(*this - 12)); - v6 = v5 - a2; - if ( v6 > a3 ) - v6 = a3; - v7 = *a4; - v8 = v6; - v9 = *((_DWORD *)*a4 - 3); - if ( v9 <= v6 ) - v8 = *((_DWORD *)*a4 - 3); - if ( !v8 ) - return v6 - v9; - v10 = (_WORD *)(v4 + 2 * a2); - if ( v10 == (_WORD *)v7 ) - return v6 - v9; - while ( *v10 == *(_WORD *)v7 ) - { - ++v10; - v7 = (_DWORD *)((char *)v7 + 2); - if ( !--v8 ) - return v6 - v9; - } - return *v10 < *(_WORD *)v7 ? -1 : 1; -} - -//----- (0044AE10) -------------------------------------------------------- -int __thiscall std::wstring::compare( - int *this, - unsigned int a2, - unsigned int a3, - _DWORD *a4, - unsigned int a5, - unsigned int a6) -{ - int v6; // edi - unsigned int v7; // eax - unsigned int v8; // edx - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // esi - _WORD *v12; // ebx - _WORD *v13; // ecx - - v6 = *this; - v7 = *(_DWORD *)(*this - 12); - if ( a2 > v7 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - *(_DWORD *)(v6 - 12)); - v8 = *(_DWORD *)(*a4 - 12); - if ( a5 > v8 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a5, - *(_DWORD *)(*a4 - 12)); - v9 = v7 - a2; - if ( v9 > a3 ) - v9 = a3; - v10 = v8 - a5; - if ( v10 > a6 ) - v10 = a6; - v11 = v9; - if ( v10 <= v9 ) - v11 = v10; - if ( !v11 ) - return v9 - v10; - v12 = (_WORD *)(*a4 + 2 * a5); - v13 = (_WORD *)(v6 + 2 * a2); - if ( v12 == v13 ) - return v9 - v10; - while ( *v13 == *v12 ) - { - ++v13; - ++v12; - if ( !--v11 ) - return v9 - v10; - } - return *v13 < *v12 ? -1 : 1; -} - -//----- (0044AED0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); - return result; -} - -//----- (0044AEF0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) -{ - unsigned int result; // eax - unsigned int v4; // edx - - result = a2; - v4 = *(_DWORD *)(*this - 12); - if ( v4 < a2 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v4); - return result; -} - -//----- (0044AF30) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) -{ - unsigned int result; // eax - - result = *(_DWORD *)(*this - 12) - a2; - if ( result > a3 ) - return a3; - return result; -} - -//----- (0044AF50) -------------------------------------------------------- -int __fastcall std::wstring::capacity(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 8); -} - -//----- (0044AF60) -------------------------------------------------------- -int std::wstring::max_size() -{ - return 536870910; -} - -//----- (0044AF70) -------------------------------------------------------- -int __fastcall std::wstring::_M_ibegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044AF80) -------------------------------------------------------- -int __thiscall std::wstring::operator[](_DWORD *this, int a2) -{ - return *this + 2 * a2; -} - -//----- (0044AF90) -------------------------------------------------------- -int __fastcall std::istream::gcount(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (0044AFA0) -------------------------------------------------------- -int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1) -{ - return *a1; -} - -//----- (0044AFB0) -------------------------------------------------------- -int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1) -{ - return *a1; -} - -//----- (0044AFC0) -------------------------------------------------------- -int __userpurge std::string::_M_disjunct@(_DWORD *a1@, std::string *this, const char *a3) -{ - int v3; // edx - - v3 = 1; - if ( *a1 <= (unsigned int)this ) - LOBYTE(v3) = *(_DWORD *)(*a1 - 12) + *a1 < (unsigned int)this; - return v3; -} - -//----- (0044AFE0) -------------------------------------------------------- -const char *__userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4) -{ - size_t v5; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v5 = strlen((const char *)this); - return std::string::find_last_of(a1, this, a3, v5, v7); -} -// 44B004: variable 'v7' is possibly undefined - -//----- (0044B020) -------------------------------------------------------- -const char *__userpurge std::string::find_last_of@( - int *a1@, - std::string *this, - const char *a3, - size_t MaxCount, - unsigned int a5) -{ - int v5; // esi - const char *v6; // ebx - int v7; // eax - unsigned int v8; // eax - - v5 = *a1; - v6 = a3; - v7 = *(_DWORD *)(*a1 - 12); - if ( !v7 || !MaxCount ) - return (const char *)-1; - v8 = v7 - 1; - if ( v8 <= (unsigned int)a3 ) - v6 = (const char *)v8; - do - { - if ( memchr(this, v6[v5], MaxCount) ) - break; - } - while ( v6-- != 0 ); - return v6; -} - -//----- (0044B0A0) -------------------------------------------------------- -const char *__userpurge std::string::find_last_of@( - int *a1@, - std::string **this, - const std::string *a3, - unsigned int a4) -{ - unsigned int v5; // [esp+Ch] [ebp-10h] - - return std::string::find_last_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); -} -// 44B0BB: variable 'v5' is possibly undefined - -//----- (0044B0D0) -------------------------------------------------------- -int __userpurge std::string::find_last_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - int result; // eax - int v5; // ebx - - result = -1; - v5 = *(_DWORD *)(*a1 - 12); - if ( v5 ) - { - result = v5 - 1; - if ( a3 <= v5 - 1 ) - result = a3; - do - { - if ( (_BYTE)this == *(_BYTE *)(*a1 + result) ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (0044B110) -------------------------------------------------------- -int __userpurge std::string::find_first_of@(int *a1@, std::string *this, const char *a3, unsigned int a4) -{ - size_t v6; // eax - int v7; // edi - size_t MaxCount; // ebx - unsigned int v10; // [esp+1Ch] [ebp-20h] - - v6 = strlen((const char *)this); - if ( v6 ) - { - v7 = *a1; - MaxCount = v6; - v10 = *(_DWORD *)(v7 - 12); - while ( v10 > (unsigned int)a3 ) - { - if ( memchr(this, a3[v7], MaxCount) ) - return (int)a3; - ++a3; - } - } - return -1; -} - -//----- (0044B180) -------------------------------------------------------- -int __userpurge std::string::find_first_of@( - int *a1@, - std::string *this, - const char *a3, - size_t MaxCount, - unsigned int a5) -{ - int v6; // esi - unsigned int v7; // edi - - if ( MaxCount ) - { - v6 = *a1; - v7 = *(_DWORD *)(*a1 - 12); - while ( v7 > (unsigned int)a3 ) - { - if ( memchr(this, a3[v6], MaxCount) ) - return (int)a3; - ++a3; - } - } - return -1; -} - -//----- (0044B1F0) -------------------------------------------------------- -int __userpurge std::string::find_first_of@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4) -{ - const void *Buf; // esi - size_t MaxCount; // ebx - int v7; // edi - unsigned int v9; // [esp+1Ch] [ebp-20h] - - Buf = *(const void **)this; - MaxCount = *(_DWORD *)(*(_DWORD *)this - 12); - if ( MaxCount ) - { - v7 = *a1; - v9 = *(_DWORD *)(*a1 - 12); - while ( v9 > (unsigned int)a3 ) - { - if ( memchr(Buf, *((char *)a3 + v7), MaxCount) ) - return (int)a3; - a3 = (const std::string *)((char *)a3 + 1); - } - } - return -1; -} - -//----- (0044B260) -------------------------------------------------------- -char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - int v4; // ebx - int v5; // esi - unsigned int v6; // edx - char *v7; // eax - - v4 = -1; - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( a3 < v6 ) - { - v7 = (char *)memchr((const void *)(v5 + a3), (char)this, v6 - a3); - if ( v7 ) - return &v7[-v5]; - } - return (char *)v4; -} - -//----- (0044B2B0) -------------------------------------------------------- -void *__thiscall std::string::get_allocator(void *ecx0, std::string *this) -{ - return ecx0; -} - -//----- (0044B2C0) -------------------------------------------------------- -char *__userpurge std::string::_M_check_length@( - _DWORD *a1@, - std::string *this, - unsigned int a3, - std::length_error *a4, - const char *a5) -{ - char *result; // eax - - result = (char *)this - *(_DWORD *)(*a1 - 12) + 1073741820; - if ( (unsigned int)result < a3 ) - std::__throw_length_error(a4); - return result; -} - -//----- (0044B2F0) -------------------------------------------------------- -int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const char *a3, unsigned int a4) -{ - int v4; // ebx - int v5; // esi - int v6; // ebp - size_t v7; // eax - const char *v8; // ecx - size_t MaxCount; // edi - - v4 = -1; - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( v6 ) - { - v7 = strlen((const char *)this); - v8 = (const char *)(v6 - 1); - if ( (unsigned int)a3 <= v6 - 1 ) - v8 = a3; - MaxCount = v7; - v4 = (int)v8; - do - { - if ( !MaxCount ) - break; - if ( !memchr(this, *(char *)(v5 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - } - return v4; -} - -//----- (0044B360) -------------------------------------------------------- -int __userpurge std::string::find_last_not_of@( - int *a1@, - std::string *this, - const char *a3, - size_t MaxCount, - unsigned int a5) -{ - int v5; // ebx - int v6; // edi - const char *v7; // edx - int v8; // eax - unsigned int v9; // eax - - v5 = -1; - v6 = *a1; - v7 = a3; - v8 = *(_DWORD *)(*a1 - 12); - if ( v8 ) - { - v9 = v8 - 1; - if ( v9 <= (unsigned int)a3 ) - v7 = (const char *)v9; - v5 = (int)v7; - do - { - if ( !MaxCount ) - break; - if ( !memchr(this, *(char *)(v6 + v5), MaxCount) ) - break; - } - while ( v5-- != 0 ); - } - return v5; -} - -//----- (0044B3C0) -------------------------------------------------------- -int __userpurge std::string::find_last_not_of@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4) -{ - int v4; // ebx - int v5; // edi - int v6; // eax - const std::string *v7; // eax - _DWORD *Buf; // ebp - size_t MaxCount; // esi - - v4 = -1; - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( v6 ) - { - v7 = (const std::string *)(v6 - 1); - Buf = *(_DWORD **)this; - if ( a3 <= v7 ) - v7 = a3; - MaxCount = *(Buf - 3); - v4 = (int)v7; - do - { - if ( !MaxCount ) - break; - if ( !memchr(Buf, *(char *)(v5 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - } - return v4; -} - -//----- (0044B420) -------------------------------------------------------- -int __userpurge std::string::find_last_not_of@( - _DWORD *a1@, - std::string *this, - unsigned int a3, - unsigned int a4) -{ - int result; // eax - int v5; // ebx - - result = -1; - v5 = *(_DWORD *)(*a1 - 12); - if ( v5 ) - { - result = v5 - 1; - if ( v5 - 1 > a3 ) - result = a3; - do - { - if ( *(_BYTE *)(*a1 + result) != (_BYTE)this ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (0044B460) -------------------------------------------------------- -int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const char *a3, unsigned int a4) -{ - const char *v5; // edi - size_t v6; // eax - int v7; // esi - unsigned int v8; // ebp - size_t MaxCount; // ebx - - v5 = a3; - v6 = strlen((const char *)this); - v7 = *a1; - v8 = *(_DWORD *)(v7 - 12); - if ( (unsigned int)a3 >= v8 ) - return -1; - MaxCount = v6; - if ( v6 ) - { - while ( memchr(this, v5[v7], MaxCount) ) - { - if ( ++v5 == (const char *)v8 ) - return -1; - } - } - return (int)v5; -} - -//----- (0044B4D0) -------------------------------------------------------- -int __userpurge std::string::find_first_not_of@( - int *a1@, - std::string *this, - const char *a3, - size_t MaxCount, - unsigned int a5) -{ - int v5; // ebx - const char *v6; // ebp - unsigned int v7; // edi - - v5 = *a1; - v6 = a3; - v7 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)a3 >= v7 ) - return -1; - if ( MaxCount ) - { - while ( memchr(this, v6[v5], MaxCount) ) - { - if ( ++v6 == (const char *)v7 ) - return -1; - } - } - return (int)v6; -} - -//----- (0044B530) -------------------------------------------------------- -int __userpurge std::string::find_first_not_of@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4) -{ - int v4; // esi - const std::string *v5; // ebp - const void *Buf; // ebx - size_t MaxCount; // edi - unsigned int v9; // [esp+1Ch] [ebp-20h] - - v4 = *a1; - v5 = a3; - Buf = *(const void **)this; - MaxCount = *(_DWORD *)(*(_DWORD *)this - 12); - v9 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)a3 >= v9 ) - return -1; - if ( MaxCount ) - { - while ( memchr(Buf, *((char *)v5 + v4), MaxCount) ) - { - v5 = (const std::string *)((char *)v5 + 1); - if ( v5 == (const std::string *)v9 ) - return -1; - } - } - return (int)v5; -} - -//----- (0044B5A0) -------------------------------------------------------- -int __userpurge std::string::find_first_not_of@( - int *a1@, - std::string *this, - unsigned int a3, - unsigned int a4) -{ - int v4; // edx - int result; // eax - unsigned int v6; // ecx - - v4 = *a1; - result = a3; - v6 = *(_DWORD *)(*a1 - 12); - if ( a3 >= v6 ) - return -1; - while ( *(_BYTE *)(v4 + result) == (_BYTE)this ) - { - if ( ++result == v6 ) - return -1; - } - return result; -} - -//----- (0044B5E0) -------------------------------------------------------- -char *__userpurge std::string::at@(int *a1@, std::string *this, unsigned int a3) -{ - int v3; // eax - unsigned int v4; // ecx - - v3 = *a1; - v4 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this >= v4 ) - std::__throw_out_of_range_fmt( - "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", - (size_t)this, - v4); - return (char *)this + v3; -} - -//----- (0044B610) -------------------------------------------------------- -int __fastcall std::string::end(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) + *a1; -} - -//----- (0044B620) -------------------------------------------------------- -int __fastcall std::string::_Rep::_M_is_leaked(int a1) -{ - return *(_DWORD *)(a1 + 8) >> 31; -} - -//----- (0044B630) -------------------------------------------------------- -bool __fastcall std::string::_Rep::_M_is_shared(int a1) -{ - return *(_DWORD *)(a1 + 8) > 0; -} - -//----- (0044B640) -------------------------------------------------------- -int __fastcall std::string::back(_DWORD *a1) -{ - return *a1 + *(_DWORD *)(*a1 - 12) - 1; -} - -//----- (0044B650) -------------------------------------------------------- -int __fastcall std::string::cend(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) + *a1; -} - -//----- (0044B660) -------------------------------------------------------- -size_t __userpurge std::string::copy@( - _DWORD *a1@, - std::string *this, - size_t a3, - unsigned int a4, - unsigned int a5) -{ - unsigned int v5; // ebx - size_t Size; // ebx - _BYTE *Src; // eax - - v5 = *(_DWORD *)(*a1 - 12); - if ( a4 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::copy", - a4, - *(_DWORD *)(*a1 - 12)); - Size = v5 - a4; - if ( Size > a3 ) - Size = a3; - if ( !Size ) - return Size; - Src = (_BYTE *)(*a1 + a4); - if ( Size != 1 ) - { - memcpy(this, Src, Size); - return Size; - } - *(_BYTE *)this = *Src; - return 1; -} - -//----- (0044B6E0) -------------------------------------------------------- -int __fastcall std::string::data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044B6F0) -------------------------------------------------------- -int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4) -{ - size_t Size; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - Size = strlen((const char *)this); - return std::string::find(a1, this, a3, Size, v7); -} -// 44B714: variable 'v7' is possibly undefined - -//----- (0044B730) -------------------------------------------------------- -int __userpurge std::string::find@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5) -{ - int v5; // edi - unsigned int v6; // edx - int v7; // ecx - int v8; // ebp - size_t v9; // edx - const char *Buf; // eax - size_t MaxCount; // edx - int Val; // ebp - const char *v13; // edi - int v15; // ecx - int v16; // [esp+18h] [ebp-24h] - int v17; // [esp+1Ch] [ebp-20h] - - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( Size ) - { - v7 = -1; - if ( v6 > (unsigned int)a3 ) - { - v8 = v5 + v6; - v9 = v6 - (_DWORD)a3; - Buf = &a3[v5]; - v16 = v8; - if ( Size <= v9 ) - { - MaxCount = 1 - Size + v9; - if ( MaxCount ) - { - v17 = v5; - Val = *(char *)this; - while ( 1 ) - { - v13 = (const char *)memchr(Buf, Val, MaxCount); - if ( !v13 ) - return -1; - if ( !memcmp(v13, this, Size) ) - break; - Buf = v13 + 1; - if ( Size <= v16 - (int)(v13 + 1) ) - { - MaxCount = v16 - (_DWORD)v13 - Size; - if ( MaxCount ) - continue; - } - return -1; - } - return (int)&v13[-v17]; - } - } - } - return v7; - } - else - { - v15 = -1; - if ( v6 >= (unsigned int)a3 ) - return (int)a3; - return v15; - } -} - -//----- (0044B800) -------------------------------------------------------- -int __userpurge std::string::find@(int *a1@, std::string **this, const std::string *a3, unsigned int a4) -{ - unsigned int v5; // [esp+Ch] [ebp-10h] - - return std::string::find(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); -} -// 44B81B: variable 'v5' is possibly undefined - -//----- (0044B830) -------------------------------------------------------- -char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - int v4; // ebx - int v5; // esi - unsigned int v6; // edx - char *v7; // eax - - v4 = -1; - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( a3 < v6 ) - { - v7 = (char *)memchr((const void *)(v5 + a3), (char)this, v6 - a3); - if ( v7 ) - return &v7[-v5]; - } - return (char *)v4; -} - -//----- (0044B880) -------------------------------------------------------- -_DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this) -{ - _DWORD *result; // eax - - result = ecx0; - *ecx0 = *(_DWORD *)this; - return result; -} - -//----- (0044B890) -------------------------------------------------------- -int __fastcall std::string::size(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12); -} - -//----- (0044B8A0) -------------------------------------------------------- -int __fastcall std::string::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044B8B0) -------------------------------------------------------- -int __fastcall std::string::c_str(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044B8C0) -------------------------------------------------------- -_DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this) -{ - _DWORD *result; // eax - - result = ecx0; - *ecx0 = *(_DWORD *)this; - return result; -} - -//----- (0044B8D0) -------------------------------------------------------- -bool __fastcall std::string::empty(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) == 0; -} - -//----- (0044B8E0) -------------------------------------------------------- -int __fastcall std::string::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044B8F0) -------------------------------------------------------- -int __userpurge std::string::rfind@(int *a1@, std::string *this, char *a3, unsigned int a4) -{ - size_t v5; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v5 = strlen((const char *)this); - return std::string::rfind(a1, this, a3, v5, v7); -} -// 44B914: variable 'v7' is possibly undefined - -//----- (0044B930) -------------------------------------------------------- -int __userpurge std::string::rfind@( - int *a1@, - std::string *this, - const char *a3, - size_t Size, - unsigned int a5) -{ - int v5; // ebx - int v6; // ebp - size_t v7; // eax - const char *v8; // edx - unsigned int v9; // eax - - v5 = -1; - v6 = *a1; - v7 = *(_DWORD *)(*a1 - 12); - v8 = a3; - if ( Size <= v7 ) - { - v9 = v7 - Size; - if ( v9 <= (unsigned int)a3 ) - v8 = (const char *)v9; - v5 = (int)v8; - if ( Size ) - { - while ( memcmp((const void *)(v6 + v5), this, Size) ) - { - if ( !v5 ) - return -1; - --v5; - } - } - } - return v5; -} -// 44B981: conditional instruction was optimized away because %arg_8.4!=0 - -//----- (0044B9A0) -------------------------------------------------------- -int __userpurge std::string::rfind@(int *a1@, std::string *this, const std::string *a3, unsigned int a4) -{ - int v4; // ebx - int v5; // ebp - const std::string *v6; // edx - const void *Buf2; // edi - size_t v8; // eax - size_t Size; // esi - unsigned int v10; // eax - - v4 = -1; - v5 = *a1; - v6 = a3; - Buf2 = *(const void **)this; - v8 = *(_DWORD *)(*a1 - 12); - Size = *(_DWORD *)(*(_DWORD *)this - 12); - if ( Size <= v8 ) - { - v10 = v8 - Size; - if ( v10 <= (unsigned int)a3 ) - v6 = (const std::string *)v10; - v4 = (int)v6; - if ( Size ) - { - while ( memcmp((const void *)(v5 + v4), Buf2, Size) ) - { - if ( !v4 ) - return -1; - --v4; - } - } - } - return v4; -} -// 44B9F2: conditional instruction was optimized away because esi.4!=0 - -//----- (0044BA10) -------------------------------------------------------- -int __userpurge std::string::rfind@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - int result; // eax - int v5; // ebx - - result = -1; - v5 = *(_DWORD *)(*a1 - 12); - if ( v5 ) - { - result = v5 - 1; - if ( v5 - 1 > a3 ) - result = a3; - do - { - if ( *(_BYTE *)(*a1 + result) == (_BYTE)this ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (0044BA50) -------------------------------------------------------- -int __fastcall std::string::_M_rep(_DWORD *a1) -{ - return *a1 - 12; -} - -//----- (0044BA60) -------------------------------------------------------- -int __fastcall std::string::cbegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044BA70) -------------------------------------------------------- -int __fastcall std::string::length(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12); -} - -//----- (0044BA80) -------------------------------------------------------- -_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this) -{ - _DWORD *result; // eax - - result = ecx0; - *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; - return result; -} - -//----- (0044BA90) -------------------------------------------------------- -int *__thiscall std::string::substr(int *ecx0, std::string *this, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // eax - unsigned int v6; // eax - - v5 = *(_DWORD *)(*(_DWORD *)this - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::substr", - a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - v6 = v5 - a3; - if ( v6 > a4 ) - v6 = a4; - *ecx0 = std::string::_S_construct((_BYTE *)(a3 + *(_DWORD *)this), *(_DWORD *)this + a3 + v6); - return ecx0; -} - -//----- (0044BB00) -------------------------------------------------------- -int __fastcall std::string::_M_data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044BB10) -------------------------------------------------------- -int __fastcall std::string::_M_iend(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 12) + *a1; -} - -//----- (0044BB20) -------------------------------------------------------- -int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3) -{ - _DWORD *v3; // edi - size_t v4; // esi - size_t v5; // ebx - size_t Size; // eax - int result; // eax - - v3 = *a1; - v4 = *((_DWORD *)*a1 - 3); - v5 = strlen((const char *)this); - Size = v4; - if ( v5 <= v4 ) - Size = v5; - if ( !Size ) - return v4 - v5; - result = memcmp(v3, this, Size); - if ( !result ) - return v4 - v5; - return result; -} - -//----- (0044BB70) -------------------------------------------------------- -int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3) -{ - _DWORD *Buf1; // eax - size_t v4; // esi - size_t Size; // ecx - size_t v6; // ebx - int result; // eax - - Buf1 = *a1; - v4 = *((_DWORD *)*a1 - 3); - Size = v4; - v6 = *((_DWORD *)*this - 3); - if ( v6 <= v4 ) - Size = *((_DWORD *)*this - 3); - if ( !Size ) - return v4 - v6; - result = memcmp(Buf1, *this, Size); - if ( !result ) - return v4 - v6; - return result; -} - -//----- (0044BBB0) -------------------------------------------------------- -int __userpurge std::string::compare@( - int *a1@, - std::string *this, - unsigned int a3, - char *Str, - const char *a5) -{ - int v5; // ebp - unsigned int v6; // ebx - unsigned int v7; // ebx - size_t v8; // edi - size_t Size; // eax - int result; // eax - - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)this, - *(_DWORD *)(*a1 - 12)); - v7 = v6 - (_DWORD)this; - if ( v7 > a3 ) - v7 = a3; - v8 = strlen(Str); - Size = v7; - if ( v8 <= v7 ) - Size = v8; - if ( !Size ) - return v7 - v8; - result = memcmp((char *)this + v5, Str, Size); - if ( !result ) - return v7 - v8; - return result; -} - -//----- (0044BC30) -------------------------------------------------------- -int __userpurge std::string::compare@( - int *a1@, - std::string *this, - size_t a3, - void *Buf2, - const char *a5, - unsigned int a6) -{ - int v6; // eax - unsigned int v7; // ebx - unsigned int v8; // ebx - const char *Size; // ecx - int result; // eax - - v6 = *a1; - v7 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this > v7 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)this, - *(_DWORD *)(*a1 - 12)); - v8 = v7 - (_DWORD)this; - Size = a5; - if ( v8 > a3 ) - v8 = a3; - if ( v8 <= (unsigned int)a5 ) - Size = (const char *)v8; - if ( !Size ) - return v8 - (_DWORD)a5; - result = memcmp((char *)this + v6, Buf2, (size_t)Size); - if ( !result ) - return v8 - (_DWORD)a5; - return result; -} - -//----- (0044BCA0) -------------------------------------------------------- -int __userpurge std::string::compare@( - int *a1@, - std::string *this, - unsigned int a3, - const void **a4, - const std::string *a5) -{ - int v5; // eax - unsigned int v6; // ebx - unsigned int v7; // ebx - _DWORD *Buf2; // ecx - unsigned int v9; // esi - size_t Size; // edi - int result; // eax - - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)this, - *(_DWORD *)(*a1 - 12)); - v7 = v6 - (_DWORD)this; - Buf2 = *a4; - if ( v7 > a3 ) - v7 = a3; - v9 = *(Buf2 - 3); - Size = v7; - if ( v9 <= v7 ) - Size = *(Buf2 - 3); - if ( !Size ) - return v7 - v9; - result = memcmp((char *)this + v5, Buf2, Size); - if ( !result ) - return v7 - v9; - return result; -} - -//----- (0044BD20) -------------------------------------------------------- -int __userpurge std::string::compare@( - _DWORD *a1@, - std::string *this, - unsigned int a3, - _DWORD *a4, - const std::string *a5, - unsigned int a6, - unsigned int a7) -{ - unsigned int v7; // ebx - unsigned int v8; // ebp - unsigned int v9; // eax - unsigned int v10; // ebx - unsigned int v11; // eax - size_t Size; // eax - int result; // eax - - v7 = *(_DWORD *)(*a1 - 12); - v8 = a6; - if ( (unsigned int)this > v7 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)this, - *(_DWORD *)(*a1 - 12)); - v9 = *(_DWORD *)(*a4 - 12); - if ( (unsigned int)a5 > v9 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - (size_t)a5, - *(_DWORD *)(*a4 - 12)); - v10 = v7 - (_DWORD)this; - if ( v10 > a3 ) - v10 = a3; - v11 = v9 - (_DWORD)a5; - if ( v11 <= a6 ) - v8 = v11; - Size = v10; - if ( v8 <= v10 ) - Size = v8; - if ( !Size ) - return v10 - v8; - result = memcmp((char *)this + *a1, (char *)a5 + *a4, Size); - if ( !result ) - return v10 - v8; - return result; -} - -//----- (0044BDD0) -------------------------------------------------------- -_DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this) -{ - _DWORD *result; // eax - - result = ecx0; - *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; - return result; -} - -//----- (0044BDE0) -------------------------------------------------------- -std::string *__userpurge std::string::_M_check@( - _DWORD *a1@, - std::string *this, - const char *a3, - const char *a4) -{ - std::string *result; // eax - unsigned int v5; // edx - - result = this; - v5 = *(_DWORD *)(*a1 - 12); - if ( v5 < (unsigned int)this ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, (size_t)this, v5); - return result; -} - -//----- (0044BE20) -------------------------------------------------------- -unsigned int __userpurge std::string::_M_limit@( - _DWORD *a1@, - std::string *this, - unsigned int a3, - unsigned int a4) -{ - unsigned int result; // eax - - result = *(_DWORD *)(*a1 - 12) - (_DWORD)this; - if ( result > a3 ) - return a3; - return result; -} - -//----- (0044BE40) -------------------------------------------------------- -int __fastcall std::string::capacity(_DWORD *a1) -{ - return *(_DWORD *)(*a1 - 8); -} - -//----- (0044BE50) -------------------------------------------------------- -int std::string::max_size() -{ - return 1073741820; -} - -//----- (0044BE60) -------------------------------------------------------- -int __fastcall std::string::_M_ibegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (0044BE70) -------------------------------------------------------- -int __thiscall std::string::operator[](_DWORD *this, int a2) -{ - return a2 + *this; -} - -//----- (0044BE80) -------------------------------------------------------- -const char *std::bad_typeid::what() -{ - return "std::bad_typeid"; -} - -//----- (0044BE90) -------------------------------------------------------- -int __fastcall std::error_code::default_error_condition(int a1) -{ - return (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 20))(*(_DWORD *)(a1 + 4), *(_DWORD *)a1); -} - -//----- (0044BEB0) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (0044BED0) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (0044BEF0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - std::string::string(this, *(char **)(a2[2] + 20), (int)v5); - else - v3(a2); - return this; -} -// 44BEF0: using guessed type int var_D[3]; - -//----- (0044BF50) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 44BF50: using guessed type int var_D[3]; - -//----- (0044BF80) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 44); - else - return v1(); -} - -//----- (0044BFA0) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 17); - else - return v1(); -} - -//----- (0044BFC0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (0044BFD0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (0044BFE0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - std::string::string(this, *(char **)(a2[2] + 36), (int)v5); - else - v3(a2); - return this; -} -// 44BFE0: using guessed type int var_D[3]; - -//----- (0044C040) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - std::string::string(this, *(char **)(a2[2] + 28), (int)v5); - else - v3(a2); - return this; -} -// 44C040: using guessed type int var_D[3]; - -//----- (0044C0A0) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 18); - else - return v1(); -} - -//----- (0044C0C0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); - return this; -} -// 44C0C0: using guessed type int var_D[3]; - -//----- (0044C0F0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); -} - -//----- (0044C100) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); -} - -//----- (0044C110) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); - return this; -} -// 44C110: using guessed type int var_D[3]; - -//----- (0044C140) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); - return this; -} -// 44C140: using guessed type int var_D[3]; - -//----- (0044C170) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (0044C180) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 44C180: using guessed type int var_D[3]; - -//----- (0044C1E0) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (0044C200) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (0044C220) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - std::string::string(this, *(char **)(a2[2] + 20), (int)v5); - else - v3(a2); - return this; -} -// 44C220: using guessed type int var_D[3]; - -//----- (0044C280) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 44C280: using guessed type int var_D[3]; - -//----- (0044C2B0) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 44); - else - return v1(); -} - -//----- (0044C2D0) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 17); - else - return v1(); -} - -//----- (0044C2F0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (0044C300) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (0044C310) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - std::string::string(this, *(char **)(a2[2] + 36), (int)v5); - else - v3(a2); - return this; -} -// 44C310: using guessed type int var_D[3]; - -//----- (0044C370) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - std::string::string(this, *(char **)(a2[2] + 28), (int)v5); - else - v3(a2); - return this; -} -// 44C370: using guessed type int var_D[3]; - -//----- (0044C3D0) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 18); - else - return v1(); -} - -//----- (0044C3F0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); - return this; -} -// 44C3F0: using guessed type int var_D[3]; - -//----- (0044C420) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); -} - -//----- (0044C430) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); -} - -//----- (0044C440) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); - return this; -} -// 44C440: using guessed type int var_D[3]; - -//----- (0044C470) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); - return this; -} -// 44C470: using guessed type int var_D[3]; - -//----- (0044C4A0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (0044C4B0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 44C4B0: using guessed type int var_D[3]; - -//----- (0044C510) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 56); - else - return v1(); -} - -//----- (0044C530) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (0044C550) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); - else - v3(a2); - return this; -} -// 44C550: using guessed type int var_D[3]; - -//----- (0044C5B0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 44C5B0: using guessed type int var_D[3]; - -//----- (0044C5E0) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (0044C600) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 18); - else - return v1(); -} - -//----- (0044C620) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); -} - -//----- (0044C630) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (0044C640) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); - else - v3(a2); - return this; -} -// 44C640: using guessed type int var_D[3]; - -//----- (0044C6A0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); - else - v3(a2); - return this; -} -// 44C6A0: using guessed type int var_D[3]; - -//----- (0044C700) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 20); - else - return v1(); -} - -//----- (0044C720) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); - return this; -} -// 44C720: using guessed type int var_D[3]; - -//----- (0044C750) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (0044C760) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (0044C770) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); - return this; -} -// 44C770: using guessed type int var_D[3]; - -//----- (0044C7A0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); - return this; -} -// 44C7A0: using guessed type int var_D[3]; - -//----- (0044C7D0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); -} - -//----- (0044C7E0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 44C7E0: using guessed type int var_D[3]; - -//----- (0044C840) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 56); - else - return v1(); -} - -//----- (0044C860) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (0044C880) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); - else - v3(a2); - return this; -} -// 44C880: using guessed type int var_D[3]; - -//----- (0044C8E0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 44C8E0: using guessed type int var_D[3]; - -//----- (0044C910) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (0044C930) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 18); - else - return v1(); -} - -//----- (0044C950) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); -} - -//----- (0044C960) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (0044C970) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); - else - v3(a2); - return this; -} -// 44C970: using guessed type int var_D[3]; - -//----- (0044C9D0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); - else - v3(a2); - return this; -} -// 44C9D0: using guessed type int var_D[3]; - -//----- (0044CA30) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 20); - else - return v1(); -} - -//----- (0044CA50) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); - return this; -} -// 44CA50: using guessed type int var_D[3]; - -//----- (0044CA80) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (0044CA90) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (0044CAA0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); - return this; -} -// 44CAA0: using guessed type int var_D[3]; - -//----- (0044CAD0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); - return this; -} -// 44CAD0: using guessed type int var_D[3]; - -//----- (0044CB00) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); -} - -//----- (0044CB10) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 44CB10: using guessed type int var_D[3]; - -//----- (0044CB80) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 8); - a2[1] = *(_DWORD *)(v2 + 12); - return result; -} - -//----- (0044CBA0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 16); - a2[1] = *(_DWORD *)(v2 + 20); - return result; -} - -//----- (0044CBC0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[18]; - a2[1] = v2[19]; - a2[2] = v2[20]; - a2[3] = v2[21]; - a2[4] = v2[22]; - a2[5] = v2[23]; - a2[6] = v2[24]; - return result; -} - -//----- (0044CC00) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 24); - a2[1] = *(_DWORD *)(v2 + 28); - return result; -} - -//----- (0044CC20) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[37]; - a2[1] = v2[38]; - a2[2] = v2[39]; - a2[3] = v2[40]; - a2[4] = v2[41]; - a2[5] = v2[42]; - a2[6] = v2[43]; - a2[7] = v2[44]; - a2[8] = v2[45]; - a2[9] = v2[46]; - a2[10] = v2[47]; - a2[11] = v2[48]; - return result; -} - -//----- (0044CCA0) -------------------------------------------------------- -void __thiscall std::__timepunct::_M_put( - const char **this, - char *Buffer, - size_t SizeInBytes, - char *Format, - struct tm *Tm) -{ - char *v5; // eax - char *v6; // edx - char *Src; // [esp+10h] [ebp-4Ch] - char *Srca; // [esp+10h] [ebp-4Ch] - unsigned int Size; // [esp+14h] [ebp-48h] - size_t v10; // [esp+14h] [ebp-48h] - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - v5 = (char *)operator new[](Size); - v6 = Src; - Srca = v5; - memcpy(v5, v6, Size); - setlocale(0, this[4]); - v10 = strftime(Buffer, SizeInBytes, Format, Tm); - setlocale(0, Srca); - operator delete[](Srca); - if ( !v10 ) - *Buffer = 0; -} - -//----- (0044CDD0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[11]; - a2[1] = v2[12]; - a2[2] = v2[13]; - a2[3] = v2[14]; - a2[4] = v2[15]; - a2[5] = v2[16]; - a2[6] = v2[17]; - return result; -} - -//----- (0044CE10) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 32); - a2[1] = *(_DWORD *)(v2 + 36); - return result; -} - -//----- (0044CE30) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[25]; - a2[1] = v2[26]; - a2[2] = v2[27]; - a2[3] = v2[28]; - a2[4] = v2[29]; - a2[5] = v2[30]; - a2[6] = v2[31]; - a2[7] = v2[32]; - a2[8] = v2[33]; - a2[9] = v2[34]; - a2[10] = v2[35]; - a2[11] = v2[36]; - return result; -} - -//----- (0044CEA0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 8); - a2[1] = *(_DWORD *)(v2 + 12); - return result; -} - -//----- (0044CEC0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 16); - a2[1] = *(_DWORD *)(v2 + 20); - return result; -} - -//----- (0044CEE0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[18]; - a2[1] = v2[19]; - a2[2] = v2[20]; - a2[3] = v2[21]; - a2[4] = v2[22]; - a2[5] = v2[23]; - a2[6] = v2[24]; - return result; -} - -//----- (0044CF20) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 24); - a2[1] = *(_DWORD *)(v2 + 28); - return result; -} - -//----- (0044CF40) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[37]; - a2[1] = v2[38]; - a2[2] = v2[39]; - a2[3] = v2[40]; - a2[4] = v2[41]; - a2[5] = v2[42]; - a2[6] = v2[43]; - a2[7] = v2[44]; - a2[8] = v2[45]; - a2[9] = v2[46]; - a2[10] = v2[47]; - a2[11] = v2[48]; - return result; -} - -//----- (0044CFC0) -------------------------------------------------------- -void __thiscall std::__timepunct::_M_put( - const char **this, - wchar_t *Buffer, - size_t SizeInWords, - wchar_t *Format, - struct tm *Tm) -{ - char *v5; // eax - char *v6; // edx - char *Src; // [esp+10h] [ebp-4Ch] - char *Srca; // [esp+10h] [ebp-4Ch] - unsigned int Size; // [esp+14h] [ebp-48h] - size_t v10; // [esp+14h] [ebp-48h] - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - v5 = (char *)operator new[](Size); - v6 = Src; - Srca = v5; - memcpy(v5, v6, Size); - setlocale(0, this[4]); - v10 = wcsftime(Buffer, SizeInWords, Format, Tm); - setlocale(0, Srca); - operator delete[](Srca); - if ( !v10 ) - *Buffer = 0; -} - -//----- (0044D0F0) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[11]; - a2[1] = v2[12]; - a2[2] = v2[13]; - a2[3] = v2[14]; - a2[4] = v2[15]; - a2[5] = v2[16]; - a2[6] = v2[17]; - return result; -} - -//----- (0044D130) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) -{ - int v2; // edx - _DWORD *result; // eax - - v2 = this[2]; - result = a2; - *a2 = *(_DWORD *)(v2 + 32); - a2[1] = *(_DWORD *)(v2 + 36); - return result; -} - -//----- (0044D150) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) -{ - _DWORD *v2; // edx - _DWORD *result; // eax - - v2 = (_DWORD *)this[2]; - result = a2; - *a2 = v2[25]; - a2[1] = v2[26]; - a2[2] = v2[27]; - a2[3] = v2[28]; - a2[4] = v2[29]; - a2[5] = v2[30]; - a2[6] = v2[31]; - a2[7] = v2[32]; - a2[8] = v2[33]; - a2[9] = v2[34]; - a2[10] = v2[35]; - a2[11] = v2[36]; - return result; -} - -//----- (0044D1B0) -------------------------------------------------------- -struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1) -{ - unsigned int v2; // [esp+8h] [ebp-60h] - std::locale::_Impl *v3; // [esp+1Ch] [ebp-4Ch] - std::locale::facet *v4; // [esp+20h] [ebp-48h] - int v5; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] - - v4 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); - v5 = *(_DWORD *)(*a1 + 12) + 4 * (_DWORD)v4; - lpuexcpt = *(struct _Unwind_Exception **)v5; - if ( !*(_DWORD *)v5 ) - { - v3 = (std::locale::_Impl *)operator new(0x68u); - *((_DWORD *)v3 + 1) = 0; - *(_DWORD *)v3 = &off_51AF60; - *((_DWORD *)v3 + 2) = 0; - *((_DWORD *)v3 + 3) = 0; - *((_BYTE *)v3 + 16) = 0; - *((_DWORD *)v3 + 5) = 0; - *((_DWORD *)v3 + 6) = 0; - *((_DWORD *)v3 + 7) = 0; - *((_DWORD *)v3 + 8) = 0; - *((_WORD *)v3 + 18) = 0; - *((_BYTE *)v3 + 100) = 0; - std::__numpunct_cache::_M_cache((int)v3, (int)a1); - std::locale::_Impl::_M_install_cache(*a1, v3, v4, v2); - return *(struct _Unwind_Exception **)v5; - } - return lpuexcpt; -} -// 44D2A3: variable 'v2' is possibly undefined -// 50C688: using guessed type signed __int32 std::numpunct::id; -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (0044D320) -------------------------------------------------------- -struct _Unwind_Exception *__stdcall std::__use_cache>::operator()(int *a1) -{ - _DWORD *v2; // eax - unsigned int v3; // [esp+8h] [ebp-60h] - std::locale::_Impl *v4; // [esp+1Ch] [ebp-4Ch] - std::locale::facet *v5; // [esp+20h] [ebp-48h] - int v6; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] - - v5 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); - v6 = *(_DWORD *)(*a1 + 12) + 4 * (_DWORD)v5; - lpuexcpt = *(struct _Unwind_Exception **)v6; - if ( !*(_DWORD *)v6 ) - { - v2 = operator new(0xA8u); - v2[1] = 0; - *v2 = &off_51AF70; - v2[2] = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[5] = 0; - v2[6] = 0; - v2[7] = 0; - v2[8] = 0; - v2[9] = 0; - *((_BYTE *)v2 + 164) = 0; - v4 = (std::locale::_Impl *)v2; - std::__numpunct_cache::_M_cache((int)v2, (int)a1); - std::locale::_Impl::_M_install_cache(*a1, v4, v5, v3); - return *(struct _Unwind_Exception **)v6; - } - return lpuexcpt; -} -// 44D417: variable 'v3' is possibly undefined -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (0044D490) -------------------------------------------------------- -int __fastcall std::runtime_error::what(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (0044D4A0) -------------------------------------------------------- -bool __fastcall std::__basic_file::is_open(_DWORD *a1) -{ - return *a1 != 0; -} - -//----- (0044D4B0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( - int *this, - int a2, - int a3, - int a4, - int a5) -{ - int v6; // [esp+0h] [ebp-2Ch] - - LOBYTE(v6) = 0; - return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); -} -// 44D4DE: variable 'v6' is possibly undefined - -//----- (0044D4F0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( - int *this, - int a2, - int a3, - int a4, - int a5) -{ - int v6; // [esp+0h] [ebp-2Ch] - - LOBYTE(v6) = 0; - return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); -} -// 44D51E: variable 'v6' is possibly undefined - -//----- (0044D530) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( - _DWORD *this, - int a2, - int a3, - int a4) -{ - int v5; // [esp+0h] [ebp-88h] - void *v7; // [esp+63h] [ebp-25h] BYREF - unsigned __int8 *v8[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v9)(unsigned __int8 **); // [esp+7Ch] [ebp-Ch] - - v9 = 0; - LOBYTE(v5) = 0; - std::__facet_shims::__collate_transform(v5, *(_DWORD *)(a2 + 12), v8, a3, a4); - if ( !v9 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::string::string(this, v8[0], (size_t)v8[1], (int)&v7); - if ( v9 ) - v9(v8); - return this; -} -// 44D593: variable 'v5' is possibly undefined - -//----- (0044D630) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( - _DWORD *this, - int a2, - std::string *a3, - int a4) -{ - _BYTE *v4; // eax - int v6; // [esp+0h] [ebp-88h] - void *v8[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v9)(void **); // [esp+7Ch] [ebp-Ch] - - v9 = 0; - LOBYTE(v6) = 0; - std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), v8, a3, a4); - if ( !v9 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v4 = v8[0]; - *this = this + 2; - std::string::_M_construct(this, v4, (int)&v4[(unsigned int)v8[1]]); - if ( v9 ) - v9(v8); - return this; -} -// 44D693: variable 'v6' is possibly undefined - -//----- (0044D730) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( - int *this, - int a2, - int a3, - int a4, - int a5) -{ - int v6; // [esp+0h] [ebp-2Ch] - - LOBYTE(v6) = 0; - return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); -} -// 44D75E: variable 'v6' is possibly undefined - -//----- (0044D770) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( - int *this, - int a2, - int a3, - int a4, - int a5) -{ - int v6; // [esp+0h] [ebp-2Ch] - - LOBYTE(v6) = 0; - return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); -} -// 44D79E: variable 'v6' is possibly undefined - -//----- (0044D7B0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( - _DWORD *this, - int a2, - int a3, - int a4) -{ - int v5; // [esp+0h] [ebp-88h] - void *v7; // [esp+63h] [ebp-25h] BYREF - _WORD *v8[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v9)(_WORD **); // [esp+7Ch] [ebp-Ch] - - v9 = 0; - LOBYTE(v5) = 0; - std::__facet_shims::__collate_transform(v5, *(_DWORD *)(a2 + 12), v8, a3, a4); - if ( !v9 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::wstring::basic_string(this, v8[0], (int)v8[1], (int)&v7); - if ( v9 ) - v9(v8); - return this; -} -// 44D813: variable 'v5' is possibly undefined - -//----- (0044D8B0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( - _DWORD *this, - int a2, - int a3, - int a4) -{ - _WORD *v4; // eax - int v6; // [esp+0h] [ebp-88h] - void *v8[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v9)(void **); // [esp+7Ch] [ebp-Ch] - - v9 = 0; - LOBYTE(v6) = 0; - std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), v8, a3, a4); - if ( !v9 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v4 = v8[0]; - *this = this + 2; - std::wstring::_M_construct(this, v4, (int)&v4[(int)v8[1]]); - if ( v9 ) - v9(v8); - return this; -} -// 44D913: variable 'v6' is possibly undefined - -//----- (0044D9B0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( - _DWORD *this, - int a2, - std::string *a3, - int a4, - int a5, - int a6) -{ - _BYTE *v6; // eax - int v8; // [esp+0h] [ebp-88h] - void *v10[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v11)(void **); // [esp+7Ch] [ebp-Ch] - - v11 = 0; - LOBYTE(v8) = 0; - std::__facet_shims::__messages_get( - v8, - *(_DWORD *)(a2 + 16), - v10, - a3, - a4, - a5, - *(unsigned __int8 **)a6, - *(_DWORD *)(a6 + 4)); - if ( !v11 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v6 = v10[0]; - *this = this + 2; - std::string::_M_construct(this, v6, (int)&v6[(unsigned int)v10[1]]); - if ( v11 ) - v11(v10); - return this; -} -// 44DA2D: variable 'v8' is possibly undefined - -//----- (0044DAD0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - _BYTE **a6) -{ - int v7; // [esp+0h] [ebp-88h] - void *v9; // [esp+63h] [ebp-25h] BYREF - unsigned __int8 *v10[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v11)(unsigned __int8 **); // [esp+7Ch] [ebp-Ch] - - v11 = 0; - LOBYTE(v7) = 0; - std::__facet_shims::__messages_get(v7, *(_DWORD *)(a2 + 16), v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); - if ( !v11 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::string::string(this, v10[0], (size_t)v10[1], (int)&v9); - if ( v11 ) - v11(v10); - return this; -} -// 44DB4A: variable 'v7' is possibly undefined - -//----- (0044DBE0) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( - int *this, - int a2, - int a3) -{ - int v4; // [esp+0h] [ebp-2Ch] - - LOBYTE(v4) = 0; - return std::__facet_shims::__messages_open(v4, this[4], *(unsigned __int8 **)a2, *(_DWORD *)(a2 + 4), a3); -} -// 44DC07: variable 'v4' is possibly undefined - -//----- (0044DC20) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( - int *this, - _BYTE **a2, - int a3) -{ - int v4; // [esp+0h] [ebp-2Ch] - - LOBYTE(v4) = 0; - return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); -} -// 44DC47: variable 'v4' is possibly undefined - -//----- (0044DC60) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) -{ - int v3; // [esp+0h] [ebp-1Ch] - - LOBYTE(v3) = 0; - return std::__facet_shims::__messages_close(v3, this[4], a2); -} -// 44DC76: variable 'v3' is possibly undefined - -//----- (0044DC90) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) -{ - int v3; // [esp+0h] [ebp-1Ch] - - LOBYTE(v3) = 0; - return std::__facet_shims::__messages_close(v3, this[4], a2); -} -// 44DCA6: variable 'v3' is possibly undefined - -//----- (0044DCC0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - int a6) -{ - _WORD *v6; // eax - int v8; // [esp+0h] [ebp-88h] - void *v10[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v11)(void **); // [esp+7Ch] [ebp-Ch] - - v11 = 0; - LOBYTE(v8) = 0; - std::__facet_shims::__messages_get( - v8, - *(_DWORD *)(a2 + 16), - v10, - a3, - a4, - a5, - *(_WORD **)a6, - *(_DWORD *)(a6 + 4)); - if ( !v11 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v6 = v10[0]; - *this = this + 2; - std::wstring::_M_construct(this, v6, (int)&v6[(int)v10[1]]); - if ( v11 ) - v11(v10); - return this; -} -// 44DD3D: variable 'v8' is possibly undefined - -//----- (0044DDE0) -------------------------------------------------------- -_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - _WORD **a6) -{ - int v7; // [esp+0h] [ebp-88h] - void *v9; // [esp+63h] [ebp-25h] BYREF - _WORD *v10[6]; // [esp+64h] [ebp-24h] BYREF - void (__cdecl *v11)(_WORD **); // [esp+7Ch] [ebp-Ch] - - v11 = 0; - LOBYTE(v7) = 0; - std::__facet_shims::__messages_get(v7, *(_DWORD *)(a2 + 16), v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); - if ( !v11 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::wstring::basic_string(this, v10[0], (int)v10[1], (int)&v9); - if ( v11 ) - v11(v10); - return this; -} -// 44DE5A: variable 'v7' is possibly undefined - -//----- (0044DEF0) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( - int *this, - int a2, - int a3) -{ - int v4; // [esp+0h] [ebp-2Ch] - - LOBYTE(v4) = 0; - return std::__facet_shims::__messages_open(v4, this[4], *(unsigned __int8 **)a2, *(_DWORD *)(a2 + 4), a3); -} -// 44DF17: variable 'v4' is possibly undefined - -//----- (0044DF30) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( - int *this, - _BYTE **a2, - int a3) -{ - int v4; // [esp+0h] [ebp-2Ch] - - LOBYTE(v4) = 0; - return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); -} -// 44DF57: variable 'v4' is possibly undefined - -//----- (0044DF70) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) -{ - int v3; // [esp+0h] [ebp-1Ch] - - LOBYTE(v3) = 0; - return std::__facet_shims::__messages_close(v3, this[4], a2); -} -// 44DF86: variable 'v3' is possibly undefined - -//----- (0044DFA0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) -{ - int v3; // [esp+0h] [ebp-1Ch] - - LOBYTE(v3) = 0; - return std::__facet_shims::__messages_close(v3, this[4], a2); -} -// 44DFB6: variable 'v3' is possibly undefined - -//----- (0044DFD0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); -} -// 44E01E: variable 'v9' is possibly undefined - -//----- (0044E030) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); -} -// 44E07E: variable 'v9' is possibly undefined - -//----- (0044E090) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); -} -// 44E0DE: variable 'v9' is possibly undefined - -//----- (0044E0F0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); -} -// 44E13E: variable 'v9' is possibly undefined - -//----- (0044E150) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); -} -// 44E19E: variable 'v9' is possibly undefined - -//----- (0044E1B0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); -} -// 44E1FE: variable 'v9' is possibly undefined - -//----- (0044E210) -------------------------------------------------------- -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) -{ - int v2; // [esp+0h] [ebp-1Ch] - - LOBYTE(v2) = 0; - return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); -} -// 44E21E: variable 'v2' is possibly undefined - -//----- (0044E230) -------------------------------------------------------- -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) -{ - int v2; // [esp+0h] [ebp-1Ch] - - LOBYTE(v2) = 0; - return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); -} -// 44E23E: variable 'v2' is possibly undefined - -//----- (0044E250) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); -} -// 44E29E: variable 'v9' is possibly undefined - -//----- (0044E2B0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); -} -// 44E2FE: variable 'v9' is possibly undefined - -//----- (0044E310) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); -} -// 44E35E: variable 'v9' is possibly undefined - -//----- (0044E370) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); -} -// 44E3BE: variable 'v9' is possibly undefined - -//----- (0044E3D0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); -} -// 44E41E: variable 'v9' is possibly undefined - -//----- (0044E430) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); -} -// 44E47E: variable 'v9' is possibly undefined - -//----- (0044E490) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); -} -// 44E4DE: variable 'v9' is possibly undefined - -//----- (0044E4F0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); -} -// 44E53E: variable 'v9' is possibly undefined - -//----- (0044E550) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); -} -// 44E59E: variable 'v9' is possibly undefined - -//----- (0044E5B0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); -} -// 44E5FE: variable 'v9' is possibly undefined - -//----- (0044E610) -------------------------------------------------------- -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) -{ - int v2; // [esp+0h] [ebp-1Ch] - - LOBYTE(v2) = 0; - return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); -} -// 44E61E: variable 'v2' is possibly undefined - -//----- (0044E630) -------------------------------------------------------- -int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) -{ - int v2; // [esp+0h] [ebp-1Ch] - - LOBYTE(v2) = 0; - return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); -} -// 44E63E: variable 'v2' is possibly undefined - -//----- (0044E650) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); -} -// 44E69E: variable 'v9' is possibly undefined - -//----- (0044E6B0) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); -} -// 44E6FE: variable 'v9' is possibly undefined - -//----- (0044E710) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); -} -// 44E75E: variable 'v9' is possibly undefined - -//----- (0044E770) -------------------------------------------------------- -int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( - int *this, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8) -{ - int v9; // [esp+0h] [ebp-3Ch] - - LOBYTE(v9) = 0; - return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); -} -// 44E7BE: variable 'v9' is possibly undefined - -//----- (0044E7D0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - int *this, - __int64 a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - int *a7, - void **a8) -{ - void (__cdecl *v8)(void **); // eax - void *v10; // edx - int *v11; // eax - void *v12; // ebx - void *v13; // esi - int v14; // [esp+0h] [ebp-C8h] - int v15; // [esp+78h] [ebp-50h] BYREF - void *Block; // [esp+7Ch] [ebp-4Ch] BYREF - size_t Size; // [esp+80h] [ebp-48h] - int v18[4]; // [esp+84h] [ebp-44h] BYREF - void *v19[6]; // [esp+94h] [ebp-34h] BYREF - void (__cdecl *v20)(void **); // [esp+ACh] [ebp-1Ch] - __int64 v21; // [esp+D0h] [ebp+8h] - - v20 = 0; - v15 = 0; - LOBYTE(v14) = 0; - v21 = std::__facet_shims::__money_get(v14, this[2], a2, a3, a4, a5, a6, &v15, 0, v19); - v8 = v20; - if ( v15 ) - { - *a7 = v15; - goto LABEL_3; - } - if ( !v20 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - Block = v18; - std::string::_M_construct(&Block, (_BYTE *)v19[0], (int)v19[0] + (unsigned int)v19[1]); - v10 = (void *)Size; - v11 = (int *)*a8; - if ( Block == v18 ) - { - if ( Size ) - { - if ( Size == 1 ) - *(_BYTE *)v11 = v18[0]; - else - memcpy(v11, v18, Size); - v10 = (void *)Size; - v11 = (int *)*a8; - } - a8[1] = v10; - *((_BYTE *)v10 + (_DWORD)v11) = 0; - v11 = (int *)Block; - goto LABEL_11; - } - v12 = (void *)v18[0]; - if ( v11 == (int *)(a8 + 2) ) - { - *a8 = Block; - a8[1] = v10; - a8[2] = v12; - goto LABEL_15; - } - v13 = a8[2]; - *a8 = Block; - a8[1] = v10; - a8[2] = v12; - if ( !v11 ) - { -LABEL_15: - Block = v18; - v11 = v18; - goto LABEL_11; - } - Block = v11; - v18[0] = (int)v13; -LABEL_11: - Size = 0; - *(_BYTE *)v11 = 0; - if ( Block != v18 ) - operator delete(Block); - v8 = v20; -LABEL_3: - if ( v8 ) - v8(v19); - return v21; -} -// 44E881: variable 'v14' is possibly undefined - -//----- (0044EA30) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - __int64 a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - _DWORD *a7, - int *a8) -{ - void (__cdecl *v8)(void **); // eax - int v10; // ecx - int v11; // eax - int v12; // [esp+0h] [ebp-A8h] - std::string *v13; // [esp+4h] [ebp-A4h] - char v14[5]; // [esp+7Bh] [ebp-2Dh] BYREF - int v15; // [esp+80h] [ebp-28h] BYREF - void *v16[6]; // [esp+84h] [ebp-24h] BYREF - void (__cdecl *v17)(void **); // [esp+9Ch] [ebp-Ch] - __int64 v18; // [esp+B0h] [ebp+8h] - - v17 = 0; - *(_DWORD *)&v14[1] = 0; - LOBYTE(v12) = 0; - v18 = std::__facet_shims::__money_get(v12, (int *)this[2], a2, a3, a4, a5, a6, &v14[1], 0, v16); - v8 = v17; - if ( *(_DWORD *)&v14[1] ) - { - *a7 = *(_DWORD *)&v14[1]; - } - else - { - if ( !v17 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::string::string(&v15, (unsigned __int8 *)v16[0], (size_t)v16[1], (int)v14); - std::string::swap(a8, (std::string *)&v15, v13); - v10 = v15; - if ( _CRT_MT ) - { - v11 = _InterlockedExchangeAdd((volatile signed __int32 *)(v15 - 4), 0xFFFFFFFF); - } - else - { - v11 = *(_DWORD *)(v15 - 4); - *(_DWORD *)(v15 - 4) = v11 - 1; - } - if ( v11 <= 0 ) - std::string::_Rep::_M_destroy((void *)(v10 - 12), (int)v14); - v8 = v17; - } - if ( v8 ) - v8(v16); - return v18; -} -// 44EACC: variable 'v12' is possibly undefined -// 44EB43: variable 'v13' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0044EBD0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - __int64 a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - _DWORD *a7, - long double *a8) -{ - __int64 result; // rax - int v9; // [esp+0h] [ebp-5Ch] - int *v10; // [esp+4h] [ebp-58h] - int v11; // [esp+3Ch] [ebp-20h] BYREF - LONG_DOUBLE_12 v12[2]; // [esp+40h] [ebp-1Ch] BYREF - - LOBYTE(v9) = 0; - v10 = (int *)this[2]; - v11 = 0; - result = std::__facet_shims::__money_get(v9, v10, a2, a3, a4, a5, a6, &v11, (int)v12, 0); - if ( v11 ) - *a7 = v11; - else - *a8 = *(long double *)v12; - return result; -} -// 44EC31: variable 'v9' is possibly undefined -// 44EBD0: using guessed type long double var_1C[2]; - -//----- (0044EC60) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - __int64 a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - int *a7, - long double *a8) -{ - __int64 result; // rax - int v9; // [esp+0h] [ebp-5Ch] - int v10; // [esp+4h] [ebp-58h] - int v11; // [esp+3Ch] [ebp-20h] BYREF - LONG_DOUBLE_12 v12[2]; // [esp+40h] [ebp-1Ch] BYREF - - LOBYTE(v9) = 0; - v10 = this[2]; - v11 = 0; - result = std::__facet_shims::__money_get(v9, v10, a2, a3, a4, a5, a6, &v11, (int)v12, 0); - if ( v11 ) - *a7 = v11; - else - *a8 = *(long double *)v12; - return result; -} -// 44ECC1: variable 'v9' is possibly undefined -// 44EC60: using guessed type long double var_1C[2]; - -//----- (0044ECF0) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - int a9) -{ - int v9; // eax - void (__cdecl *v10)(void **); // eax - int *v12; // ebx - int v13; // edx - int *v14; // eax - int v15; // ebx - int v16; // esi - int v17; // ecx - int v18; // [esp+0h] [ebp-D8h] - struct _Unwind_Exception *lpuexcpt; // [esp+40h] [ebp-98h] - int v20; // [esp+88h] [ebp-50h] BYREF - int *v21; // [esp+8Ch] [ebp-4Ch] BYREF - int v22; // [esp+90h] [ebp-48h] - int Src[4]; // [esp+94h] [ebp-44h] BYREF - void *v24[6]; // [esp+A4h] [ebp-34h] BYREF - void (__cdecl *v25)(void **); // [esp+BCh] [ebp-1Ch] - - v9 = this[2]; - LOBYTE(v18) = 0; - v25 = 0; - v20 = 0; - lpuexcpt = std::__facet_shims::__money_get(v18, v9, a2, a3, a4, a5, a6, a7, &v20, 0, v24); - v10 = v25; - if ( v20 ) - { - *a8 = v20; - goto LABEL_3; - } - if ( !v25 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - v21 = Src; - std::wstring::_M_construct(&v21, (_WORD *)v24[0], (int)v24[0] + 2 * (int)v24[1]); - v12 = Src; - v13 = v22; - v14 = *(int **)a9; - if ( v21 == Src ) - { - v17 = 2 * v22; - if ( v22 ) - { - if ( v22 == 1 ) - { - *(_WORD *)v14 = Src[0]; - v17 = 2; - } - else - { - memcpy(v14, Src, 2 * v22); - v13 = v22; - v12 = v21; - v14 = *(int **)a9; - v17 = 2 * v22; - } - } - *(_DWORD *)(a9 + 4) = v13; - *(_WORD *)((char *)v14 + v17) = 0; - v14 = v12; - goto LABEL_11; - } - v15 = Src[0]; - if ( v14 == (int *)(a9 + 8) ) - { - *(_DWORD *)a9 = v21; - *(_DWORD *)(a9 + 4) = v13; - *(_DWORD *)(a9 + 8) = v15; - } - else - { - v16 = *(_DWORD *)(a9 + 8); - *(_DWORD *)a9 = v21; - *(_DWORD *)(a9 + 4) = v13; - *(_DWORD *)(a9 + 8) = v15; - if ( v14 ) - { - v21 = v14; - Src[0] = v16; -LABEL_11: - v22 = 0; - *(_WORD *)v14 = 0; - if ( v14 != Src ) - operator delete(v14); - } - } - v10 = v25; -LABEL_3: - if ( v10 ) - v10(v24); - return lpuexcpt; -} -// 44EDB9: variable 'v18' is possibly undefined - -//----- (0044EF70) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - int *a9) -{ - int *v9; // eax - void (__cdecl *v10)(void **); // eax - int v12; // ecx - int v13; // eax - int v14; // [esp+0h] [ebp-B8h] - struct _Unwind_Exception *lpuexcpt; // [esp+40h] [ebp-78h] - char v16[5]; // [esp+8Bh] [ebp-2Dh] BYREF - int v17; // [esp+90h] [ebp-28h] BYREF - void *v18[6]; // [esp+94h] [ebp-24h] BYREF - void (__cdecl *v19)(void **); // [esp+ACh] [ebp-Ch] - - v9 = (int *)this[2]; - LOBYTE(v14) = 0; - v19 = 0; - *(_DWORD *)&v16[1] = 0; - lpuexcpt = std::__facet_shims::__money_get(v14, v9, a2, a3, a4, a5, a6, a7, &v16[1], 0, v18); - v10 = v19; - if ( *(_DWORD *)&v16[1] ) - { - *a8 = *(_DWORD *)&v16[1]; - } - else - { - if ( !v19 ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::wstring::basic_string(&v17, (_WORD *)v18[0], (int)v18[1], (int)v16); - std::wstring::swap(a9, &v17); - v12 = v17; - if ( _CRT_MT ) - { - v13 = _InterlockedExchangeAdd((volatile signed __int32 *)(v17 - 4), 0xFFFFFFFF); - } - else - { - v13 = *(_DWORD *)(v17 - 4); - *(_DWORD *)(v17 - 4) = v13 - 1; - } - if ( v13 <= 0 ) - std::wstring::_Rep::_M_destroy((void *)(v12 - 12), (int)v16); - v10 = v19; - } - if ( v10 ) - v10(v18); - return lpuexcpt; -} -// 44F01F: variable 'v14' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0044F140) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - long double *a9) -{ - struct _Unwind_Exception *v9; // ecx - int v11; // [esp+0h] [ebp-6Ch] - int *v12; // [esp+4h] [ebp-68h] - int v13; // [esp+4Ch] [ebp-20h] BYREF - LONG_DOUBLE_12 v14[2]; // [esp+50h] [ebp-1Ch] BYREF - - LOBYTE(v11) = 0; - v12 = (int *)this[2]; - v13 = 0; - v9 = std::__facet_shims::__money_get(v11, v12, a2, a3, a4, a5, a6, a7, &v13, (int)v14, 0); - if ( v13 ) - *a8 = v13; - else - *a9 = *(long double *)v14; - return v9; -} -// 44F1AD: variable 'v11' is possibly undefined -// 44F140: using guessed type long double var_1C[2]; - -//----- (0044F200) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( - _DWORD *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - long double *a9) -{ - struct _Unwind_Exception *v9; // ecx - int v11; // [esp+0h] [ebp-6Ch] - int v12; // [esp+4h] [ebp-68h] - int v13; // [esp+4Ch] [ebp-20h] BYREF - LONG_DOUBLE_12 v14[2]; // [esp+50h] [ebp-1Ch] BYREF - - LOBYTE(v11) = 0; - v12 = this[2]; - v13 = 0; - v9 = std::__facet_shims::__money_get(v11, v12, a2, a3, a4, a5, a6, a7, &v13, (int)v14, 0); - if ( v13 ) - *a8 = v13; - else - *a9 = *(long double *)v14; - return v9; -} -// 44F26D: variable 'v11' is possibly undefined -// 44F200: using guessed type long double var_1C[2]; - -//----- (0044F2C0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6, - int a7) -{ - int *v7; // eax - _BYTE *v8; // edx - size_t v9; // ebx - int v11; // [esp+0h] [ebp-A8h] - void *Src; // [esp+30h] [ebp-78h] - int Size; // [esp+40h] [ebp-68h] - __int64 Sizea; // [esp+40h] [ebp-68h] - int v16; // [esp+80h] [ebp-28h] BYREF - int v17[2]; // [esp+84h] [ebp-24h] BYREF - int v18[4]; // [esp+8Ch] [ebp-1Ch] BYREF - void (__cdecl *v19)(void **); // [esp+9Ch] [ebp-Ch] - - v7 = v18; - v19 = 0; - v8 = *(_BYTE **)a7; - v9 = *(_DWORD *)(a7 + 4); - v17[0] = (int)v18; - Src = v8; - Size = v9; - if ( &v8[v9] && !v8 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v16 = v9; - if ( v9 > 0xF ) - { - v7 = (int *)std::string::_M_create((unsigned int *)&v16, 0); - v17[0] = (int)v7; - v18[0] = v16; -LABEL_12: - memcpy(v7, Src, v9); - Size = v16; - v7 = (int *)v17[0]; - goto LABEL_6; - } - if ( v9 == 1 ) - { - LOBYTE(v18[0]) = *v8; - goto LABEL_6; - } - if ( v9 ) - goto LABEL_12; -LABEL_6: - v17[1] = Size; - *((_BYTE *)v7 + Size) = 0; - v19 = std::__facet_shims::`anonymous namespace'::__destroy_string; - LOBYTE(v11) = 0; - Sizea = std::__facet_shims::__money_put(v11, this[2], a2, a3, a4, a5, a6, 0.0, (int)v17); - if ( v19 ) - v19((void **)v17); - return Sizea; -} -// 44F3AB: variable 'v11' is possibly undefined - -//----- (0044F4A0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6, - std::string *a7) -{ - int v8; // [esp+0h] [ebp-A8h] - const std::string *v9; // [esp+4h] [ebp-A4h] - __int64 lpuexcpt; // [esp+40h] [ebp-68h] - int v12[6]; // [esp+84h] [ebp-24h] BYREF - void (__cdecl *v13)(int *); // [esp+9Ch] [ebp-Ch] - - v13 = 0; - std::string::string(v12, a7, v9); - v12[1] = *(_DWORD *)(*(_DWORD *)a7 - 12); - v13 = std::__facet_shims::`anonymous namespace'::__destroy_string; - LOBYTE(v8) = 0; - lpuexcpt = std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, 0.0, (int)v12); - if ( v13 ) - v13(v12); - return lpuexcpt; -} -// 44F4F5: variable 'v9' is possibly undefined -// 44F54F: variable 'v8' is possibly undefined - -//----- (0044F5C0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6, - long double a7) -{ - int v8; // [esp+0h] [ebp-3Ch] - - LOBYTE(v8) = 0; - return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); -} -// 44F608: variable 'v8' is possibly undefined - -//----- (0044F620) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6, - long double a7) -{ - int v8; // [esp+0h] [ebp-3Ch] - - LOBYTE(v8) = 0; - return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); -} -// 44F668: variable 'v8' is possibly undefined - -//----- (0044F680) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - unsigned __int16 a6, - int a7) -{ - int v8; // [esp+0h] [ebp-A8h] - __int64 lpuexcpt; // [esp+40h] [ebp-68h] - int v11[2]; // [esp+84h] [ebp-24h] BYREF - char v12; // [esp+8Ch] [ebp-1Ch] BYREF - void (__cdecl *v13)(void **); // [esp+9Ch] [ebp-Ch] - - v13 = 0; - v11[0] = (int)&v12; - std::wstring::_M_construct(v11, *(_WORD **)a7, *(_DWORD *)a7 + 2 * *(_DWORD *)(a7 + 4)); - v13 = std::__facet_shims::`anonymous namespace'::__destroy_string; - LOBYTE(v8) = 0; - lpuexcpt = std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, 0.0, (int)v11); - if ( v13 ) - v13((void **)v11); - return lpuexcpt; -} -// 44F739: variable 'v8' is possibly undefined - -//----- (0044F7A0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - unsigned __int16 a6, - _DWORD *a7) -{ - int v8; // [esp+0h] [ebp-A8h] - __int64 lpuexcpt; // [esp+40h] [ebp-68h] - int v11[6]; // [esp+84h] [ebp-24h] BYREF - void (__cdecl *v12)(int *); // [esp+9Ch] [ebp-Ch] - - v12 = 0; - std::wstring::basic_string(v11, a7); - v11[1] = *(_DWORD *)(*a7 - 12); - v12 = std::__facet_shims::`anonymous namespace'::__destroy_string; - LOBYTE(v8) = 0; - lpuexcpt = std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, 0.0, (int)v11); - if ( v12 ) - v12(v11); - return lpuexcpt; -} -// 44F84F: variable 'v8' is possibly undefined - -//----- (0044F8C0) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - __int16 a6, - long double a7) -{ - int v8; // [esp+0h] [ebp-3Ch] - - LOBYTE(v8) = 0; - return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); -} -// 44F908: variable 'v8' is possibly undefined - -//----- (0044F920) -------------------------------------------------------- -__int64 __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( - int *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - __int16 a6, - long double a7) -{ - int v8; // [esp+0h] [ebp-3Ch] - - LOBYTE(v8) = 0; - return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); -} -// 44F968: variable 'v8' is possibly undefined - -//----- (0044F980) -------------------------------------------------------- -const char *_ZGTtNKSt13bad_exception4whatEv() -{ - return "std::bad_exception"; -} - -//----- (0044F990) -------------------------------------------------------- -bool __fastcall std::filebuf::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 40)); -} - -//----- (0044F9A0) -------------------------------------------------------- -bool __fastcall std::wfilebuf::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 40)); -} - -//----- (0044F9B0) -------------------------------------------------------- -int __fastcall std::fstream::rdbuf(int a1) -{ - return a1 + 12; -} - -//----- (0044F9C0) -------------------------------------------------------- -bool __fastcall std::fstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 52)); -} - -//----- (0044F9D0) -------------------------------------------------------- -int __fastcall std::wfstream::rdbuf(int a1) -{ - return a1 + 12; -} - -//----- (0044F9E0) -------------------------------------------------------- -bool __fastcall std::wfstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 52)); -} - -//----- (0044F9F0) -------------------------------------------------------- -int __fastcall std::wistream::gcount(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (0044FA00) -------------------------------------------------------- -int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1) -{ - return *a1; -} - -//----- (0044FA10) -------------------------------------------------------- -int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1) -{ - return *a1; -} - -//----- (0044FA20) -------------------------------------------------------- -long double std::random_device::_M_getentropy() -{ - return 0.0; -} - -//----- (0044FA30) -------------------------------------------------------- -int __fastcall std::ifstream::rdbuf(int a1) -{ - return a1 + 8; -} - -//----- (0044FA40) -------------------------------------------------------- -bool __fastcall std::ifstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 48)); -} - -//----- (0044FA50) -------------------------------------------------------- -int __fastcall std::wifstream::rdbuf(int a1) -{ - return a1 + 8; -} - -//----- (0044FA60) -------------------------------------------------------- -bool __fastcall std::wifstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 48)); -} - -//----- (0044FA70) -------------------------------------------------------- -int __fastcall std::ofstream::rdbuf(int a1) -{ - return a1 + 4; -} - -//----- (0044FA80) -------------------------------------------------------- -bool __fastcall std::ofstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 44)); -} - -//----- (0044FA90) -------------------------------------------------------- -int __fastcall std::wofstream::rdbuf(int a1) -{ - return a1 + 4; -} - -//----- (0044FAA0) -------------------------------------------------------- -bool __fastcall std::wofstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 44)); -} - -//----- (0044FAB0) -------------------------------------------------------- -int __fastcall std::streambuf::gptr(int a1) -{ - return *(_DWORD *)(a1 + 8); -} - -//----- (0044FAC0) -------------------------------------------------------- -int __fastcall std::streambuf::pptr(int a1) -{ - return *(_DWORD *)(a1 + 20); -} - -//----- (0044FAD0) -------------------------------------------------------- -int __fastcall std::streambuf::eback(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (0044FAE0) -------------------------------------------------------- -int __fastcall std::streambuf::egptr(int a1) -{ - return *(_DWORD *)(a1 + 12); -} - -//----- (0044FAF0) -------------------------------------------------------- -int __fastcall std::streambuf::epptr(int a1) -{ - return *(_DWORD *)(a1 + 24); -} - -//----- (0044FB00) -------------------------------------------------------- -int __fastcall std::streambuf::pbase(int a1) -{ - return *(_DWORD *)(a1 + 16); -} - -//----- (0044FB10) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2) -{ - const std::locale *v4; // [esp+4h] [ebp-18h] - - std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); - return this; -} -// 44FB20: variable 'v4' is possibly undefined - -//----- (0044FB40) -------------------------------------------------------- -int __fastcall std::wstreambuf::gptr(int a1) -{ - return *(_DWORD *)(a1 + 8); -} - -//----- (0044FB50) -------------------------------------------------------- -int __fastcall std::wstreambuf::pptr(int a1) -{ - return *(_DWORD *)(a1 + 20); -} - -//----- (0044FB60) -------------------------------------------------------- -int __fastcall std::wstreambuf::eback(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (0044FB70) -------------------------------------------------------- -int __fastcall std::wstreambuf::egptr(int a1) -{ - return *(_DWORD *)(a1 + 12); -} - -//----- (0044FB80) -------------------------------------------------------- -int __fastcall std::wstreambuf::epptr(int a1) -{ - return *(_DWORD *)(a1 + 24); -} - -//----- (0044FB90) -------------------------------------------------------- -int __fastcall std::wstreambuf::pbase(int a1) -{ - return *(_DWORD *)(a1 + 16); -} - -//----- (0044FBA0) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2) -{ - const std::locale *v4; // [esp+4h] [ebp-18h] - - std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); - return this; -} -// 44FBB0: variable 'v4' is possibly undefined - -//----- (0044FBD0) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0044FBF0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; -} - -//----- (0044FC10) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_in( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - int a6, - int a7, - _DWORD *a8) -{ - unsigned int v8; // edi - unsigned __int8 *v9; // edx - unsigned int v11; // eax - int result; // eax - unsigned __int8 *v13; // [esp+8h] [ebp-14h] BYREF - unsigned __int8 *v14; // [esp+Ch] [ebp-10h] - - v8 = *(_DWORD *)(this + 8); - v9 = a3; - v13 = a3; - v14 = a4; - if ( (*(_BYTE *)(this + 12) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v9 = a3 + 3; - v13 = a3 + 3; - } - if ( a4 == v9 ) - { -LABEL_14: - result = 0; - } - else - { - while ( 1 ) - { - if ( a7 == a6 ) - { - v9 = v13; - result = 1; - goto LABEL_9; - } - v11 = std::`anonymous namespace'::read_utf8_code_point(&v13, v8); - v9 = v13; - if ( v11 == -2 ) - { - result = 1; - goto LABEL_9; - } - if ( v8 < v11 ) - break; - a6 += 4; - *(_DWORD *)(a6 - 4) = v11; - if ( v14 == v9 ) - goto LABEL_14; - } - result = 2; - } -LABEL_9: - *a5 = v9; - *a8 = a6; - return result; -} -// 515494: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (0044FCE0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_out( - int this, - int a2, - unsigned int *a3, - unsigned int *a4, - unsigned int **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned int v8; // edi - _BYTE *v9; // eax - unsigned int *v10; // ebx - int v11; // ecx - _BYTE *v13[5]; // [esp+8h] [ebp-14h] BYREF - - v8 = *(_DWORD *)(this + 8); - v9 = a6; - v10 = a3; - v13[0] = a6; - v13[1] = a7; - if ( (*(_BYTE *)(this + 12) & 2) != 0 ) - { - v11 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_8; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v13[0] = a6 + 3; - } - if ( a3 == a4 ) - { -LABEL_11: - v9 = v13[0]; - v11 = 0; - } - else - { - while ( 1 ) - { - if ( v8 < *v10 ) - { - v9 = v13[0]; - v11 = 2; - goto LABEL_8; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v13, *v10) ) - break; - if ( a4 == ++v10 ) - goto LABEL_11; - } - v9 = v13[0]; - v11 = 1; - } -LABEL_8: - *a5 = v10; - *a8 = v9; - return v11; -} - -//----- (0044FD90) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - int a5) -{ - unsigned int v5; // esi - int v6; // ebx - unsigned int utf8_code; // eax - bool v8; // dl - unsigned __int8 *v10[5]; // [esp+8h] [ebp-14h] BYREF - - v5 = *(_DWORD *)(this + 8); - v10[0] = a3; - v10[1] = a4; - if ( (*(_BYTE *)(this + 12) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v10[0] = a3 + 3; - } - v6 = a5 - 1; - if ( a5 ) - { - do - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v10, v5); - v8 = v6-- != 0; - } - while ( v5 >= utf8_code && v8 ); - } - return (unsigned __int8 *)(v10[0] - a3); -} -// 515494: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (0044FE20) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0044FE40) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 3 : 6; -} - -//----- (0044FE60) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_in( - _DWORD *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - char *a6, - char *a7, - char **a8) -{ - int v8; // eax - unsigned int v9; // ecx - int result; // eax - unsigned __int8 *v11[2]; // [esp+8h] [ebp-10h] BYREF - char *v12[2]; // [esp+10h] [ebp-8h] BYREF - - v11[0] = a3; - v11[1] = a4; - v12[0] = a6; - v12[1] = a7; - v8 = this[3]; - v9 = this[2]; - if ( v9 >= 0xFFFF ) - v9 = 0xFFFF; - result = std::`anonymous namespace'::utf16_in(v11, v12, v9, v8 & 6 | 1, 1); - *a5 = v11[0]; - *a8 = v12[0]; - return result; -} - -//----- (0044FED0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_out( - int this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned __int16 *v8; // ebx - _BYTE *v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // ecx - unsigned __int16 *v14[2]; // [esp+4h] [ebp-1Ch] BYREF - _BYTE *v15[5]; // [esp+Ch] [ebp-14h] BYREF - - v8 = a3; - v9 = a6; - v14[1] = a4; - v10 = *(_DWORD *)(this + 8); - v14[0] = a3; - v15[0] = a6; - v15[1] = a7; - if ( v10 >= 0xFFFF ) - v10 = 0xFFFF; - if ( (*(_BYTE *)(this + 12) & 2) != 0 ) - { - v12 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_5; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v15[0] = a6 + 3; - } - v11 = std::`anonymous namespace'::utf16_out(v14, v15, v10, 1); - v8 = v14[0]; - v12 = v11; - v9 = v15[0]; -LABEL_5: - *a5 = v8; - *a8 = v9; - return v12; -} - -//----- (0044FF70) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - int a5) -{ - unsigned int v5; // esi - int v6; // ebx - unsigned int utf8_code; // eax - bool v8; // dl - unsigned __int8 *v10[5]; // [esp+8h] [ebp-14h] BYREF - - v5 = *(_DWORD *)(this + 8); - v10[0] = a3; - v10[1] = a4; - if ( (*(_BYTE *)(this + 12) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v10[0] = a3 + 3; - } - v6 = a5 - 1; - if ( v5 >= 0xFFFF ) - v5 = 0xFFFF; - if ( a5 ) - { - do - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v10, v5); - v8 = v6-- != 0; - } - while ( v5 >= utf8_code && v8 ); - } - return (unsigned __int8 *)(v10[0] - a3); -} -// 515494: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (00450010) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00450030) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 3 : 6; -} - -//----- (00450050) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_in( - _DWORD *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - char *a6, - char *a7, - char **a8) -{ - unsigned int v8; // ecx - int result; // eax - unsigned __int8 *v10[2]; // [esp+8h] [ebp-10h] BYREF - char *v11[2]; // [esp+10h] [ebp-8h] BYREF - - v8 = this[3]; - v10[0] = a3; - v10[1] = a4; - v11[0] = a6; - v11[1] = a7; - if ( v8 >= 0xFFFF ) - v8 = 0xFFFF; - result = std::`anonymous namespace'::utf16_in(v10, v11, v8, 1, 1); - *a5 = v10[0]; - *a8 = v11[0]; - return result; -} - -//----- (004500C0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_base::do_out( - int this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned __int16 *v8; // ebx - _BYTE *v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // ecx - _BYTE *v14[2]; // [esp+4h] [ebp-1Ch] BYREF - unsigned __int16 *v15[5]; // [esp+Ch] [ebp-14h] BYREF - - v8 = a3; - v9 = a6; - v15[1] = a4; - v10 = *(_DWORD *)(this + 12); - v14[0] = a6; - v14[1] = a7; - v15[0] = a3; - if ( v10 >= 0xFFFF ) - v10 = 0xFFFF; - if ( (*(_BYTE *)(this + 16) & 2) != 0 ) - { - v12 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_5; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v14[0] = a6 + 3; - } - v11 = std::`anonymous namespace'::utf16_out(v15, v14, v10, 1); - v8 = v15[0]; - v12 = v11; - v9 = v14[0]; -LABEL_5: - *a5 = v8; - *a8 = v9; - return v12; -} - -//----- (00450160) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - int a5) -{ - unsigned int v5; // esi - int v6; // ebx - unsigned int utf8_code; // eax - bool v8; // dl - unsigned __int8 *v10[5]; // [esp+8h] [ebp-14h] BYREF - - v5 = *(_DWORD *)(this + 12); - v10[0] = a3; - v10[1] = a4; - if ( (*(_BYTE *)(this + 16) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v10[0] = a3 + 3; - } - v6 = a5 - 1; - if ( v5 >= 0xFFFF ) - v5 = 0xFFFF; - if ( a5 ) - { - do - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v10, v5); - v8 = v6-- != 0; - } - while ( v5 >= utf8_code && v8 ); - } - return (unsigned __int8 *)(v10[0] - a3); -} -// 515494: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (00450200) -------------------------------------------------------- -char __userpurge std::__iosfail_type_info::__do_upcast@( - int *a1@, - std::__iosfail_type_info *this, - const __cxxabiv1::__class_type_info *a3, - void **a4) -{ - char result; // al - - result = std::__is_ios_failure_handler(this); - if ( !result ) - return __cxxabiv1::__class_type_info::__do_upcast(a1, this, a3, a4); - *(_DWORD *)a3 += 16; - return result; -} - -//----- (00450250) -------------------------------------------------------- -bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - unsigned __int8 v4; // dl - _DWORD *v5; // ecx - char v6; // bl - char v7; // di - unsigned __int8 v9; // di - int v10; // eax - int v11; // eax - unsigned __int8 v12; // [esp+Fh] [ebp-Dh] - - v3 = (_DWORD *)*this; - v4 = this[1] == -1; - if ( (v4 & (v3 != 0)) != 0 ) - { - v9 = v4 & (v3 != 0); - v4 = 0; - if ( v3[2] >= v3[3] ) - { - v10 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); - v4 = 0; - if ( v10 == -1 ) - { - *this = 0; - v4 = v9; - } - } - } - v5 = *(_DWORD **)a2; - v6 = *(_DWORD *)(a2 + 4) == -1; - v7 = v6 & (*(_DWORD *)a2 != 0); - if ( v7 ) - { - v6 = 0; - if ( v5[2] >= v5[3] ) - { - v12 = v4; - v11 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); - v4 = v12; - if ( v11 == -1 ) - { - *(_DWORD *)a2 = 0; - v6 = v7; - } - } - } - return v6 == (char)v4; -} - -//----- (004502F0) -------------------------------------------------------- -unsigned int __fastcall std::istreambuf_iterator::_M_get(int a1) -{ - unsigned int result; // eax - _DWORD *v3; // ecx - unsigned __int8 *v4; // eax - - result = *(_DWORD *)(a1 + 4); - v3 = *(_DWORD **)a1; - if ( __PAIR64__(result, (unsigned int)v3) > 0xFFFFFFFF00000000LL ) - { - v4 = (unsigned __int8 *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - { - result = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); - if ( result == -1 ) - *(_DWORD *)a1 = 0; - } - else - { - return *v4; - } - } - return result; -} - -//----- (00450340) -------------------------------------------------------- -bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2) -{ - _DWORD *v3; // ecx - unsigned __int8 v4; // dl - _DWORD *v5; // edi - unsigned __int8 v6; // al - unsigned __int8 v7; // bl - unsigned __int8 v9; // di - _WORD *v10; // eax - __int16 v11; // ax - __int16 *v12; // eax - __int16 v13; // cx - __int16 v14; // ax - unsigned __int8 v15; // [esp+Fh] [ebp-Dh] - - v3 = *(_DWORD **)this; - v4 = this[2] == 0xFFFF; - if ( (v4 & (v3 != 0)) != 0 ) - { - v9 = v4 & (v3 != 0); - v10 = (_WORD *)v3[2]; - v11 = (unsigned int)v10 >= v3[3] ? (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3) : *v10; - v4 = 0; - if ( v11 == -1 ) - { - *(_DWORD *)this = 0; - v4 = v9; - } - } - v5 = *(_DWORD **)a2; - v6 = *(_WORD *)(a2 + 4) == 0xFFFF; - v7 = v6 & (*(_DWORD *)a2 != 0); - if ( v7 ) - { - v12 = (__int16 *)v5[2]; - if ( (unsigned int)v12 >= v5[3] ) - { - v15 = v4; - v14 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); - v4 = v15; - v13 = v14; - } - else - { - v13 = *v12; - } - v6 = 0; - if ( v13 == -1 ) - { - *(_DWORD *)a2 = 0; - v6 = v7; - } - } - return v4 == v6; -} - -//----- (004503E0) -------------------------------------------------------- -int __fastcall std::istreambuf_iterator::_M_get(int a1) -{ - int result; // eax - _DWORD *v3; // ecx - unsigned __int16 *v4; // eax - - result = *(unsigned __int16 *)(a1 + 4); - v3 = *(_DWORD **)a1; - if ( (_WORD)result == 0xFFFF && v3 ) - { - v4 = (unsigned __int16 *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - result = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); - else - result = *v4; - if ( (_WORD)result == 0xFFFF ) - *(_DWORD *)a1 = 0; - } - return result; -} - -//----- (00450430) -------------------------------------------------------- -int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00450450) -------------------------------------------------------- -int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 6; -} - -//----- (00450470) -------------------------------------------------------- -unsigned int __thiscall std::__codecvt_utf16_base::do_in( - _DWORD *this, - int a2, - char *a3, - char *a4, - int *a5, - int a6, - int a7, - _DWORD *a8) -{ - unsigned int v8; // esi - char *v10; // ecx - unsigned int v11; // edx - int v12; // edi - unsigned __int16 v13; // dx - unsigned __int16 v14; // bp - unsigned int v15; // eax - int v16; // edx - __int16 v17; // bp - int v18; // eax - int v20; // [esp+0h] [ebp-24h] - int v21; // [esp+8h] [ebp-1Ch] BYREF - char *v22; // [esp+Ch] [ebp-18h] BYREF - char *v23; // [esp+10h] [ebp-14h] - - v8 = this[2]; - v22 = a3; - v23 = a4; - v21 = this[3]; - std::`anonymous namespace'::read_utf16_bom((int)&v22, &v21); - v10 = v22; - v20 = (int)v23; - v11 = (unsigned int)(v23 - v22) >> 1; - if ( !v11 ) - { -LABEL_20: - *a5 = (int)v10; - *a8 = a6; - return 2 * (a4 != v10); - } - v12 = v21 & 1; - while ( a7 != a6 ) - { - LOWORD(v15) = *(_WORD *)v10; - v17 = __ROL2__(*(_WORD *)v10, 8); - if ( !v12 ) - LOWORD(v15) = v17; - v15 = (unsigned __int16)v15; - if ( (unsigned int)(unsigned __int16)v15 - 55296 <= 0x3FF ) - { - if ( v11 == 1 ) - goto LABEL_16; - v13 = *((_WORD *)v10 + 1); - v14 = __ROL2__(v13, 8); - if ( !v12 ) - v13 = v14; - if ( (unsigned int)v13 - 56320 <= 0x3FF ) - { - v15 = v13 + ((unsigned __int16)v15 << 10) - 56613888; - v16 = 2; - if ( v8 < v15 ) - goto LABEL_15; - goto LABEL_8; - } -LABEL_18: - v10 = v22; - v18 = (int)v22; - if ( v8 != -1 ) - { - v11 = 2; - goto LABEL_17; - } - a6 += 4; - *(_DWORD *)(a6 - 4) = -1; - v11 = (unsigned int)(v20 - (_DWORD)v10) >> 1; - if ( !v11 ) - goto LABEL_20; - } - else - { - if ( (unsigned int)(unsigned __int16)v15 - 56320 <= 0x3FF ) - goto LABEL_18; - v16 = 1; - if ( v8 < (unsigned __int16)v15 ) - { -LABEL_15: - v11 = 2; -LABEL_16: - v18 = (int)v22; -LABEL_17: - *a5 = v18; - *a8 = a6; - return v11; - } -LABEL_8: - v10 += 2 * v16; - a6 += 4; - *(_DWORD *)(a6 - 4) = v15; - v22 = v10; - v11 = (unsigned int)(v20 - (_DWORD)v10) >> 1; - if ( !v11 ) - goto LABEL_20; - } - } - *a5 = (int)v22; - *a8 = a7; - return 1; -} - -//----- (00450610) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_out( - _DWORD *this, - int a2, - unsigned int *a3, - unsigned int *a4, - unsigned int **a5, - _WORD *a6, - int a7, - _DWORD *a8) -{ - int v8; // edi - unsigned int v9; // ebx - unsigned int *v10; // eax - _WORD *v11; // edx - int v12; // esi - unsigned int v13; // esi - unsigned int v14; // edi - unsigned int v16; // edi - __int16 v17; // si - __int16 v18; // di - __int16 v19; // di - unsigned int v20; // [esp+0h] [ebp-14h] - int v21; // [esp+0h] [ebp-14h] - - v8 = this[3]; - v9 = this[2]; - v10 = a3; - v11 = a6; - if ( (v8 & 2) != 0 ) - { - v20 = a7 - (_DWORD)a6; - v12 = 1; - if ( (v8 & 1) != 0 ) - { - if ( v20 <= 1 ) - goto LABEL_11; - v11 = a6 + 1; - *a6 = -257; - } - else - { - if ( v20 <= 1 ) - goto LABEL_11; - v11 = a6 + 1; - *a6 = -2; - } - } - if ( a3 == a4 ) - { -LABEL_17: - v12 = 0; - } - else - { - v21 = v8 & 1; - while ( 1 ) - { - v13 = *v10; - if ( v9 < *v10 ) - break; - v14 = (unsigned int)(a7 - (_DWORD)v11) >> 1; - if ( v13 > 0xFFFF ) - { - if ( v14 <= 1 ) - { -LABEL_10: - v12 = 1; - goto LABEL_11; - } - v16 = v13 >> 10; - v17 = (v13 & 0x3FF) - 9216; - v18 = v16 - 10304; - if ( !v21 ) - { - v18 = __ROL2__(v18, 8); - v17 = __ROL2__(v17, 8); - } - *v11 = v18; - v11 += 2; - *(v11 - 1) = v17; - } - else - { - if ( !v14 ) - goto LABEL_10; - v19 = __ROL2__(v13, 8); - if ( !v21 ) - LOWORD(v13) = v19; - *v11++ = v13; - } - if ( a4 == ++v10 ) - goto LABEL_17; - } - v12 = 2; - } -LABEL_11: - *a5 = v10; - *a8 = v11; - return v12; -} - -//----- (00450740) -------------------------------------------------------- -char *__thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, char *a3, int a4, int a5) -{ - unsigned int v5; // ebx - char *v6; // ecx - int v7; // esi - unsigned int v8; // edx - unsigned int v9; // eax - __int16 v10; // bp - unsigned __int16 v11; // dx - unsigned __int16 v12; // bp - int v13; // edx - bool v15; // dl - bool v16; // al - int v17; // [esp+8h] [ebp-1Ch] BYREF - char *v18; // [esp+Ch] [ebp-18h] BYREF - int v19; // [esp+10h] [ebp-14h] - - v5 = this[2]; - v18 = a3; - v19 = a4; - v17 = this[3]; - std::`anonymous namespace'::read_utf16_bom((int)&v18, &v17); - if ( a5 ) - { - v6 = v18; - v7 = a5 - 1; - v8 = (unsigned int)(v19 - (_DWORD)v18) >> 1; - if ( v8 ) - goto LABEL_3; -LABEL_17: - v9 = -2; - while ( 1 ) - { - v15 = v5 >= v9; - v16 = v7-- != 0; - if ( !v16 || !v15 ) - return (char *)(v6 - a3); - v8 = (unsigned int)(v19 - (_DWORD)v6) >> 1; - if ( !v8 ) - goto LABEL_17; -LABEL_3: - LOWORD(v9) = *(_WORD *)v6; - v10 = __ROL2__(*(_WORD *)v6, 8); - if ( (v17 & 1) == 0 ) - LOWORD(v9) = v10; - v9 = (unsigned __int16)v9; - if ( (unsigned int)(unsigned __int16)v9 - 55296 > 0x3FF ) - { - if ( (unsigned int)(unsigned __int16)v9 - 56320 <= 0x3FF ) - goto LABEL_18; - v13 = 1; - if ( v5 < (unsigned __int16)v9 ) - return (char *)(v6 - a3); -LABEL_14: - v6 += 2 * v13; - v18 = v6; - } - else - { - if ( v8 == 1 ) - goto LABEL_17; - v11 = *((_WORD *)v6 + 1); - v12 = __ROL2__(v11, 8); - if ( (v17 & 1) == 0 ) - v11 = v12; - if ( (unsigned int)v11 - 56320 <= 0x3FF ) - { - v9 = v11 + ((unsigned __int16)v9 << 10) - 56613888; - v13 = 2; - if ( v5 < v9 ) - return (char *)(v6 - a3); - goto LABEL_14; - } -LABEL_18: - v9 = -1; - } - } - } - return (char *)(v18 - a3); -} - -//----- (00450880) -------------------------------------------------------- -int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (004508A0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 2 : 4; -} - -//----- (004508C0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_in( - unsigned int *this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - int a6, - int a7, - int *a8) -{ - unsigned int v8; // edx - int result; // eax - unsigned __int16 *v10; // edx - int v11; // esi - unsigned __int16 *v12[2]; // [esp+4h] [ebp-18h] BYREF - int v13[4]; // [esp+Ch] [ebp-10h] BYREF - - v8 = this[3]; - v12[0] = a3; - v12[1] = a4; - v13[0] = a6; - v13[1] = a7; - result = std::`anonymous namespace'::ucs2_in(v12, v13, this[2], v8); - v10 = v12[0]; - v11 = v13[0]; - *a5 = v12[0]; - *a8 = v11; - if ( !result && v10 != a4 ) - return 2; - return result; -} - -//----- (00450930) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_out( - _DWORD *this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _WORD *a6, - int a7, - int *a8) -{ - unsigned int v8; // edi - unsigned __int16 *v9; // edx - _WORD *v10; // eax - int v11; // esi - unsigned int v12; // ebx - int v13; // ecx - int v14; // eax - unsigned __int16 *v16[2]; // [esp+4h] [ebp-1Ch] BYREF - int v17[5]; // [esp+Ch] [ebp-14h] BYREF - - v8 = this[2]; - v9 = a3; - v10 = a6; - v16[1] = a4; - v11 = this[3]; - v16[0] = a3; - v17[0] = (int)a6; - v17[1] = a7; - if ( (v11 & 2) == 0 ) - goto LABEL_5; - v12 = a7 - (_DWORD)a6; - v13 = 1; - if ( (v11 & 1) == 0 ) - { - if ( v12 <= 1 ) - goto LABEL_6; - *a6 = -2; - v17[0] = (int)(a6 + 1); - goto LABEL_5; - } - if ( v12 > 1 ) - { - *a6 = -257; - v17[0] = (int)(a6 + 1); -LABEL_5: - v14 = std::`anonymous namespace'::ucs2_out(v16, v17, v8, v11); - v9 = v16[0]; - v13 = v14; - v10 = (_WORD *)v17[0]; - } -LABEL_6: - *a5 = v9; - *a8 = (int)v10; - return v13; -} - -//----- (004509E0) -------------------------------------------------------- -char *__thiscall std::__codecvt_utf16_base::do_length( - _DWORD *this, - int a2, - unsigned __int16 *a3, - int a4, - int a5) -{ - unsigned int v5; // esi - unsigned __int16 *v6; // edx - int v7; // ecx - unsigned __int16 v8; // ax - unsigned __int16 v9; // bx - bool v11; // al - int v12; // [esp+4h] [ebp-1Ch] BYREF - unsigned __int16 *v13; // [esp+8h] [ebp-18h] BYREF - int v14; // [esp+Ch] [ebp-14h] - - v5 = this[2]; - v13 = a3; - v14 = a4; - v12 = this[3]; - std::`anonymous namespace'::read_utf16_bom((int)&v13, &v12); - v6 = v13; - if ( v5 >= 0xFFFF ) - v5 = 0xFFFF; - if ( a5 ) - { - v7 = a5 - 1; - do - { - if ( !((unsigned int)(v14 - (_DWORD)v6) >> 1) ) - break; - v8 = *v6; - v9 = __ROL2__(*v6, 8); - if ( (v12 & 1) == 0 ) - v8 = v9; - if ( (unsigned __int16)(v8 + 10240) <= 0x7FFu ) - break; - if ( v5 < v8 ) - break; - ++v6; - v11 = v7 != 0; - v13 = v6; - --v7; - } - while ( v11 ); - } - return (char *)((char *)v6 - (char *)a3); -} - -//----- (00450AA0) -------------------------------------------------------- -int __stdcall std::__codecvt_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00450AC0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 2 : 4; -} - -//----- (00450AE0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_in( - unsigned int *this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - int a6, - int a7, - int *a8) -{ - unsigned int v8; // edx - int result; // eax - unsigned __int16 *v10; // edx - int v11; // esi - unsigned __int16 *v12[2]; // [esp+4h] [ebp-18h] BYREF - int v13[4]; // [esp+Ch] [ebp-10h] BYREF - - v8 = this[4]; - v12[0] = a3; - v12[1] = a4; - v13[0] = a6; - v13[1] = a7; - result = std::`anonymous namespace'::ucs2_in(v12, v13, this[3], v8); - v10 = v12[0]; - v11 = v13[0]; - *a5 = v12[0]; - *a8 = v11; - if ( !result && v10 != a4 ) - return 2; - return result; -} - -//----- (00450B50) -------------------------------------------------------- -int __thiscall std::__codecvt_utf16_base::do_out( - _DWORD *this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _WORD *a6, - int a7, - int *a8) -{ - unsigned int v8; // edi - unsigned __int16 *v9; // edx - _WORD *v10; // eax - int v11; // esi - unsigned int v12; // ebx - int v13; // ecx - int v14; // eax - int v16[2]; // [esp+4h] [ebp-1Ch] BYREF - unsigned __int16 *v17[5]; // [esp+Ch] [ebp-14h] BYREF - - v8 = this[3]; - v9 = a3; - v10 = a6; - v17[1] = a4; - v11 = this[4]; - v16[0] = (int)a6; - v16[1] = a7; - v17[0] = a3; - if ( (v11 & 2) == 0 ) - goto LABEL_5; - v12 = a7 - (_DWORD)a6; - v13 = 1; - if ( (v11 & 1) == 0 ) - { - if ( v12 <= 1 ) - goto LABEL_6; - *a6 = -2; - v16[0] = (int)(a6 + 1); - goto LABEL_5; - } - if ( v12 > 1 ) - { - *a6 = -257; - v16[0] = (int)(a6 + 1); -LABEL_5: - v14 = std::`anonymous namespace'::ucs2_out(v17, v16, v8, v11); - v9 = v17[0]; - v13 = v14; - v10 = (_WORD *)v16[0]; - } -LABEL_6: - *a5 = v9; - *a8 = (int)v10; - return v13; -} - -//----- (00450C00) -------------------------------------------------------- -char *__thiscall std::__codecvt_utf16_base::do_length( - _DWORD *this, - int a2, - unsigned __int16 *a3, - int a4, - int a5) -{ - unsigned int v5; // esi - unsigned __int16 *v6; // edx - int v7; // ecx - unsigned __int16 v8; // ax - unsigned __int16 v9; // bx - bool v11; // al - int v12; // [esp+4h] [ebp-1Ch] BYREF - unsigned __int16 *v13; // [esp+8h] [ebp-18h] BYREF - int v14; // [esp+Ch] [ebp-14h] - - v5 = this[3]; - v13 = a3; - v14 = a4; - v12 = this[4]; - std::`anonymous namespace'::read_utf16_bom((int)&v13, &v12); - v6 = v13; - if ( v5 >= 0xFFFF ) - v5 = 0xFFFF; - if ( a5 ) - { - v7 = a5 - 1; - do - { - if ( !((unsigned int)(v14 - (_DWORD)v6) >> 1) ) - break; - v8 = *v6; - v9 = __ROL2__(*v6, 8); - if ( (v12 & 1) == 0 ) - v8 = v9; - if ( (unsigned __int16)(v8 + 10240) <= 0x7FFu ) - break; - if ( v5 < v8 ) - break; - ++v6; - v11 = v7 != 0; - v13 = v6; - --v7; - } - while ( v11 ); - } - return (char *)((char *)v6 - (char *)a3); -} - -//----- (00450CC0) -------------------------------------------------------- -const char *std::bad_array_new_length::what() -{ - return "std::bad_array_new_length"; -} - -//----- (00450CD0) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00450CF0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; -} - -//----- (00450D10) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_in( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - char *a6, - char *a7, - char **a8) -{ - unsigned int v8; // edi - unsigned __int8 *v9; // ebp - unsigned int v11; // eax - int result; // eax - unsigned __int8 *v13; // [esp+8h] [ebp-18h] BYREF - unsigned __int8 *v14; // [esp+Ch] [ebp-14h] - - v8 = *(_DWORD *)(this + 8); - v9 = a3; - v13 = a3; - v14 = a4; - if ( (*(_BYTE *)(this + 12) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v9 = a3 + 3; - v13 = a3 + 3; - } - if ( a4 == v9 ) - { -LABEL_13: - result = 0; - } - else - { - while ( 1 ) - { - if ( a7 == a6 ) - { - v9 = v13; - result = 0; - goto LABEL_11; - } - v11 = std::`anonymous namespace'::read_utf8_code_point(&v13, v8); - if ( v11 == -2 ) - { - v9 = v13; - result = 1; - goto LABEL_11; - } - if ( v8 < v11 ) - break; - if ( v11 <= 0xFFFF ) - { - *(_DWORD *)a6 = v11; - v9 = v13; - a6 += 4; - if ( v14 == v13 ) - goto LABEL_13; - } - else - { - if ( (unsigned int)(a7 - a6) <= 4 ) - { - result = 1; - goto LABEL_11; - } - v9 = v13; - a6 += 8; - *((_DWORD *)a6 - 1) = (unsigned __int16)((v11 & 0x3FF) - 9216); - *((_DWORD *)a6 - 2) = (unsigned __int16)((v11 >> 10) - 10304); - if ( v14 == v9 ) - goto LABEL_13; - } - } - v9 = v13; - result = 2; - } -LABEL_11: - *a5 = v9; - *a8 = a6; - return result; -} -// 515494: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (00450E60) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_out( - int this, - int a2, - char *a3, - char *a4, - unsigned int **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned int v8; // edi - _BYTE *v9; // eax - unsigned int *v10; // ebx - char *v11; // ecx - unsigned int v12; // eax - int v13; // ebp - unsigned int v14; // edx - int v15; // ecx - _BYTE *v17[6]; // [esp+8h] [ebp-18h] BYREF - - v8 = *(_DWORD *)(this + 8); - v9 = a6; - v10 = (unsigned int *)a3; - v17[0] = a6; - v17[1] = a7; - if ( (*(_BYTE *)(this + 12) & 2) != 0 ) - { - v15 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_13; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v17[0] = a6 + 3; - } - v11 = (char *)(a4 - a3); - if ( a3 == a4 ) - { -LABEL_16: - v9 = v17[0]; - v15 = 0; - } - else - { - while ( 1 ) - { - v14 = *v10; - if ( *v10 - 55296 <= 0x3FF ) - { - if ( (unsigned int)v11 <= 4 ) - goto LABEL_16; - v12 = v10[1]; - if ( v12 - 56320 > 0x3FF || (v13 = 2, v14 = v12 + (v14 << 10) - 56613888, v8 < v14) ) - { -LABEL_12: - v9 = v17[0]; - v15 = 2; - goto LABEL_13; - } - } - else - { - if ( v14 - 56320 <= 0x3FF ) - goto LABEL_12; - v13 = 1; - if ( v8 < v14 ) - goto LABEL_12; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v17, v14) ) - break; - v10 += v13; - v11 = (char *)(a4 - (char *)v10); - if ( a4 == (char *)v10 ) - goto LABEL_16; - } - v9 = v17[0]; - v15 = 1; - } -LABEL_13: - *a5 = v10; - *a8 = v9; - return v15; -} - -//----- (00450F70) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length( - unsigned int *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned int a5) -{ - return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a3, a4, a5, this[2], this[3]) - a3); -} - -//----- (00450FA0) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00450FC0) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; -} - -//----- (00450FE0) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_in( - _DWORD *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - char *a6, - char *a7, - char **a8) -{ - unsigned int v8; // edx - int result; // eax - unsigned __int8 *v10[2]; // [esp+8h] [ebp-10h] BYREF - char *v11[2]; // [esp+10h] [ebp-8h] BYREF - - v8 = this[2]; - v10[0] = a3; - v10[1] = a4; - v11[0] = a6; - v11[1] = a7; - result = std::`anonymous namespace'::utf16_in(v10, v11, v8, this[3] & 6 | 1, 0); - *a5 = v10[0]; - *a8 = v11[0]; - return result; -} - -//----- (00451050) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_out( - int this, - int a2, - unsigned __int16 *a3, - unsigned __int16 *a4, - unsigned __int16 **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned __int16 *v8; // ebx - _BYTE *v9; // eax - unsigned int v10; // esi - int v11; // eax - int v12; // edx - unsigned __int16 *v14[2]; // [esp+4h] [ebp-18h] BYREF - _BYTE *v15[4]; // [esp+Ch] [ebp-10h] BYREF - - v8 = a3; - v9 = a6; - v14[1] = a4; - v10 = *(_DWORD *)(this + 8); - v14[0] = a3; - v15[0] = a6; - v15[1] = a7; - if ( (*(_BYTE *)(this + 12) & 2) != 0 ) - { - v12 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_3; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v15[0] = a6 + 3; - } - v11 = std::`anonymous namespace'::utf16_out(v14, v15, v10, 0); - v8 = v14[0]; - v12 = v11; - v9 = v15[0]; -LABEL_3: - *a5 = v8; - *a8 = v9; - return v12; -} - -//----- (004510E0) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length( - unsigned int *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned int a5) -{ - return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a3, a4, a5, this[2], this[3]) - a3); -} - -//----- (00451110) -------------------------------------------------------- -int __stdcall std::__codecvt_utf8_utf16_base::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00451130) -------------------------------------------------------- -int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) -{ - return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 4 : 7; -} - -//----- (00451150) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_in( - int this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned __int8 **a5, - char *a6, - char *a7, - char **a8) -{ - unsigned int v8; // edi - unsigned __int8 *v9; // ebp - unsigned int v11; // eax - int result; // eax - unsigned __int8 *v13; // [esp+8h] [ebp-18h] BYREF - unsigned __int8 *v14; // [esp+Ch] [ebp-14h] - - v8 = *(_DWORD *)(this + 12); - v9 = a3; - v13 = a3; - v14 = a4; - if ( (*(_BYTE *)(this + 16) & 4) != 0 - && (unsigned int)(a4 - a3) > 2 - && *(_WORD *)a3 == std::`anonymous namespace'::utf8_bom - && a3[2] == 0xBF ) - { - v9 = a3 + 3; - v13 = a3 + 3; - } - if ( v9 == a4 ) - { -LABEL_13: - result = 0; - } - else - { - while ( 1 ) - { - if ( a7 == a6 ) - { - v9 = v13; - result = 0; - goto LABEL_11; - } - v11 = std::`anonymous namespace'::read_utf8_code_point(&v13, v8); - if ( v11 == -2 ) - { - v9 = v13; - result = 1; - goto LABEL_11; - } - if ( v8 < v11 ) - break; - if ( v11 <= 0xFFFF ) - { - *(_WORD *)a6 = v11; - v9 = v13; - a6 += 2; - if ( v14 == v13 ) - goto LABEL_13; - } - else - { - if ( (unsigned int)(a7 - a6) <= 2 ) - { - result = 1; - goto LABEL_11; - } - v9 = v13; - a6 += 4; - *((_WORD *)a6 - 1) = (v11 & 0x3FF) - 9216; - *((_WORD *)a6 - 2) = (v11 >> 10) - 10304; - if ( v14 == v9 ) - goto LABEL_13; - } - } - v9 = v13; - result = 2; - } -LABEL_11: - *a5 = v9; - *a8 = a6; - return result; -} -// 515494: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (00451290) -------------------------------------------------------- -int __thiscall std::__codecvt_utf8_utf16_base::do_out( - int this, - int a2, - char *a3, - char *a4, - unsigned __int16 **a5, - _BYTE *a6, - _BYTE *a7, - _DWORD *a8) -{ - unsigned int v8; // edi - _BYTE *v9; // eax - unsigned __int16 *v10; // ebx - char *v11; // ecx - int v12; // eax - int v13; // ebp - unsigned int v14; // edx - int v15; // ecx - _BYTE *v17[6]; // [esp+8h] [ebp-18h] BYREF - - v8 = *(_DWORD *)(this + 12); - v9 = a6; - v10 = (unsigned __int16 *)a3; - v17[0] = a6; - v17[1] = a7; - if ( (*(_BYTE *)(this + 16) & 2) != 0 ) - { - v15 = 1; - if ( (unsigned int)(a7 - a6) <= 2 ) - goto LABEL_13; - a6[2] = -65; - *(_WORD *)a6 = -17425; - v17[0] = a6 + 3; - } - v11 = (char *)(a4 - a3); - if ( a3 == a4 ) - { -LABEL_16: - v9 = v17[0]; - v15 = 0; - } - else - { - while ( 1 ) - { - v14 = *v10; - if ( v14 - 55296 <= 0x3FF ) - { - if ( (unsigned int)v11 <= 2 ) - goto LABEL_16; - v12 = v10[1]; - if ( (unsigned int)(v12 - 56320) > 0x3FF || (v13 = 2, v14 = v12 + (v14 << 10) - 56613888, v8 < v14) ) - { -LABEL_12: - v9 = v17[0]; - v15 = 2; - goto LABEL_13; - } - } - else - { - if ( v14 - 56320 <= 0x3FF ) - goto LABEL_12; - v13 = 1; - if ( v8 < v14 ) - goto LABEL_12; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v17, v14) ) - break; - v10 += v13; - v11 = (char *)(a4 - (char *)v10); - if ( a4 == (char *)v10 ) - goto LABEL_16; - } - v9 = v17[0]; - v15 = 1; - } -LABEL_13: - *a5 = v10; - *a8 = v9; - return v15; -} - -//----- (004513B0) -------------------------------------------------------- -unsigned __int8 *__thiscall std::__codecvt_utf8_utf16_base::do_length( - unsigned int *this, - int a2, - unsigned __int8 *a3, - unsigned __int8 *a4, - unsigned int a5) -{ - return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a3, a4, a5, this[3], this[4]) - a3); -} - -//----- (004513E0) -------------------------------------------------------- -_DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3) -{ - unsigned int v4; // [esp+8h] [ebp-70h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v7; // [esp+60h] [ebp-18h] BYREF - - (*(void (__thiscall **)(void **, int, int))(*(_DWORD *)a2 + 16))(Block, a2, a3); - std::__cow_string::__cow_string(this, (std::__cow_string *)Block[0], (size_t)Block[1], v4); - if ( Block[0] != &v7 ) - operator delete(Block[0]); - return this; -} -// 45144C: variable 'v4' is possibly undefined - -//----- (004514B0) -------------------------------------------------------- -void *__thiscall std::_V2::error_category::_M_message(void *ecx0, std::_V2::error_category *this, int a3) -{ - int v3; // ecx - int v4; // eax - unsigned int v6; // [esp+8h] [ebp-60h] - char v8[13]; // [esp+5Bh] [ebp-Dh] BYREF - - (*(void (__thiscall **)(char *, std::_V2::error_category *, int))(*(_DWORD *)this + 12))(&v8[1], this, a3); - std::__sso_string::__sso_string((int)ecx0, *(std::__sso_string **)&v8[1], *(_DWORD *)(*(_DWORD *)&v8[1] - 12), v6); - v3 = *(_DWORD *)&v8[1]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v8[1] - 4), 0xFFFFFFFF) > 0 ) - return ecx0; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v8); - return ecx0; - } - v4 = *(_DWORD *)(*(_DWORD *)&v8[1] - 4); - *(_DWORD *)(*(_DWORD *)&v8[1] - 4) = v4 - 1; - if ( v4 <= 0 ) - goto LABEL_5; - return ecx0; -} -// 45151C: variable 'v6' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004515A0) -------------------------------------------------------- -bool __userpurge std::_V2::error_category::equivalent@( - int a1@, - std::_V2::error_category *this, - const std::error_code *a3, - int a4) -{ - bool result; // al - - result = 0; - if ( *((_DWORD *)this + 1) == a1 ) - return *(_DWORD *)this == (_DWORD)a3; - return result; -} - -//----- (004515C0) -------------------------------------------------------- -int __thiscall std::_V2::error_category::equivalent(void *this, int a2, _DWORD *a3) -{ - int v3; // eax - int v4; // edx - int v5; // ecx - int v6; // edx - - v3 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)this + 20))(this, a2); - v5 = v4; - v6 = 0; - if ( a3[1] == v5 ) - LOBYTE(v6) = *a3 == v3; - return v6; -} -// 4515D4: variable 'v4' is possibly undefined - -//----- (00451600) -------------------------------------------------------- -std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition( - std::_V2::error_category *this, - int a2) -{ - return this; -} - -//----- (00451610) -------------------------------------------------------- -BOOL __thiscall std::map>::count(_DWORD *this, int a2) -{ - _DWORD *v2; // esi - _DWORD *v3; // ebx - _DWORD *i; // edi - char v5; // al - _DWORD *v6; // edx - - v2 = this + 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v5 = std::operator<((int)(i + 4), a2); - v6 = (_DWORD *)i[3]; - if ( !v5 ) - v6 = (_DWORD *)i[2]; - if ( !v5 ) - v3 = i; - } - if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) - v3 = v2; - return v2 != v3; -} - -//----- (00451680) -------------------------------------------------------- -unsigned __int8 *__thiscall std::ctype::do_tolower(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *a3) -{ - unsigned __int8 *v3; // ebx - unsigned __int8 v5; // al - int (__thiscall *v6)(_DWORD *, int); // edx - - v3 = a2; - if ( a2 < a3 ) - { - do - { - while ( 1 ) - { - v6 = *(int (__thiscall **)(_DWORD *, int))(*this + 16); - v5 = *v3; - if ( v6 == std::ctype::do_tolower ) - break; - *v3++ = v6(this, (char)v5); - if ( a3 == v3 ) - return a3; - } - if ( (*(_BYTE *)(this[6] + 2 * v5) & 1) != 0 ) - v5 += 32; - *v3++ = v5; - } - while ( a3 != v3 ); - } - return a3; -} - -//----- (004516F0) -------------------------------------------------------- -int __thiscall std::ctype::do_tolower(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 1) != 0 ) - return a2 + 32; - return result; -} - -//----- (00451710) -------------------------------------------------------- -unsigned __int8 *__thiscall std::ctype::do_toupper(_DWORD *this, unsigned __int8 *a2, unsigned __int8 *a3) -{ - unsigned __int8 *v3; // ebx - unsigned __int8 v5; // al - int (__thiscall *v6)(_DWORD *, int); // edx - - v3 = a2; - if ( a2 < a3 ) - { - do - { - while ( 1 ) - { - v6 = *(int (__thiscall **)(_DWORD *, int))(*this + 8); - v5 = *v3; - if ( v6 == std::ctype::do_toupper ) - break; - *v3++ = v6(this, (char)v5); - if ( a3 == v3 ) - return a3; - } - if ( (*(_BYTE *)(this[6] + 2 * v5) & 2) != 0 ) - v5 -= 32; - *v3++ = v5; - } - while ( a3 != v3 ); - } - return a3; -} - -//----- (00451780) -------------------------------------------------------- -int __thiscall std::ctype::do_toupper(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 2) != 0 ) - return a2 - 32; - return result; -} - -//----- (004517A0) -------------------------------------------------------- -int __fastcall std::ctype::_M_widen_init(int a1) -{ - int i; // eax - char *Buf2; // edx - void (__thiscall *v4)(int, _DWORD *, char *, int); // eax - int result; // eax - char *v6; // [esp+1Ch] [ebp-120h] - _DWORD Buf1[64]; // [esp+20h] [ebp-11Ch] BYREF - char v8[28]; // [esp+120h] [ebp-1Ch] BYREF - - for ( i = 0; i != 256; ++i ) - *((_BYTE *)Buf1 + i) = i; - Buf2 = (char *)(a1 + 29); - v4 = *(void (__thiscall **)(int, _DWORD *, char *, int))(*(_DWORD *)a1 + 28); - if ( (char *)v4 == (char *)std::ctype::do_widen ) - { - *(_DWORD *)(a1 + 29) = Buf1[0]; - *(_DWORD *)(a1 + 281) = Buf1[63]; - qmemcpy( - (void *)((a1 + 33) & 0xFFFFFFFC), - (const void *)((char *)Buf1 - &Buf2[-((a1 + 33) & 0xFFFFFFFC)]), - 4 * ((unsigned int)&Buf2[-((a1 + 33) & 0xFFFFFFFC) + 256] >> 2)); - } - else - { - v6 = (char *)(a1 + 29); - v4(a1, Buf1, v8, a1 + 29); - Buf2 = v6; - } - *(_BYTE *)(a1 + 28) = 1; - result = memcmp(Buf1, Buf2, 0x100u); - if ( result ) - *(_BYTE *)(a1 + 28) = 2; - return result; -} -// 4517A0: using guessed type char var_1C[28]; - -//----- (00451850) -------------------------------------------------------- -int __fastcall std::ctype::_M_narrow_init(int a1) -{ - int i; // eax - char *Buf2; // edx - void (__thiscall *v4)(int, _DWORD *, char *, _DWORD, int); // eax - int result; // eax - int (__thiscall *v6)(int, _DWORD *, char *, int, char *); // eax - char *v7; // [esp+1Ch] [ebp-130h] - char v8; // [esp+2Fh] [ebp-11Dh] BYREF - _DWORD Buf1[64]; // [esp+30h] [ebp-11Ch] BYREF - char v10[28]; // [esp+130h] [ebp-1Ch] BYREF - - for ( i = 0; i != 256; ++i ) - *((_BYTE *)Buf1 + i) = i; - Buf2 = (char *)(a1 + 285); - v4 = *(void (__thiscall **)(int, _DWORD *, char *, _DWORD, int))(*(_DWORD *)a1 + 36); - if ( (char *)v4 == (char *)std::ctype::do_narrow ) - { - *(_DWORD *)(a1 + 285) = Buf1[0]; - *(_DWORD *)(a1 + 537) = Buf1[63]; - qmemcpy( - (void *)((a1 + 289) & 0xFFFFFFFC), - (const void *)((char *)Buf1 - &Buf2[-((a1 + 289) & 0xFFFFFFFC)]), - 4 * ((unsigned int)&Buf2[-((a1 + 289) & 0xFFFFFFFC) + 256] >> 2)); - } - else - { - v7 = (char *)(a1 + 285); - v4(a1, Buf1, v10, 0, a1 + 285); - Buf2 = v7; - } - *(_BYTE *)(a1 + 541) = 1; - result = memcmp(Buf1, Buf2, 0x100u); - if ( result - || ((v6 = *(int (__thiscall **)(int, _DWORD *, char *, int, char *))(*(_DWORD *)a1 + 36), - (char *)v6 != (char *)std::ctype::do_narrow) - ? (result = v6(a1, Buf1, (char *)Buf1 + 1, 1, &v8)) - : (result = LOBYTE(Buf1[0]), v8 = Buf1[0]), - v8 == 1) ) - { - *(_BYTE *)(a1 + 541) = 2; - } - return result; -} -// 451850: using guessed type char var_1C[28]; - -//----- (00451960) -------------------------------------------------------- -_BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *a3, void *a4) -{ - char v4; // al - _BYTE *(__stdcall *v5)(_BYTE *, _BYTE *, void *); // eax - - v4 = this[28]; - if ( v4 == 1 ) - goto LABEL_4; - if ( v4 ) - { - v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); - if ( v5 == std::ctype::do_widen ) - goto LABEL_4; - return v5(Src, a3, a4); - } - std::ctype::_M_widen_init((int)this); - v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); - if ( v5 != std::ctype::do_widen ) - return v5(Src, a3, a4); -LABEL_4: - if ( Src == a3 ) - return Src; - memcpy(a4, Src, a3 - Src); - return a3; -} - -//----- (004519F0) -------------------------------------------------------- -int __thiscall std::ctype::narrow(_BYTE *this, int a2, int a3) -{ - int result; // eax - int v5; // ecx - int (__stdcall *v6)(unsigned __int8, int); // eax - - result = (unsigned __int8)this[(unsigned __int8)a2 + 285]; - if ( !(_BYTE)result ) - { - v5 = a2; - v6 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)this + 32); - if ( v6 != std::ctype::do_narrow ) - v5 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v6)(this, (char)a2, (char)a3); - result = a3; - if ( (_BYTE)a3 != (_BYTE)v5 ) - { - this[(unsigned __int8)a2 + 285] = v5; - return v5; - } - } - return result; -} - -//----- (00451A60) -------------------------------------------------------- -_BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3) -{ - if ( a2 != Src ) - memcpy(a3, Src, a2 - Src); - return a2; -} - -//----- (00451AA0) -------------------------------------------------------- -int __stdcall std::ctype::do_widen(unsigned __int8 a1) -{ - return a1; -} - -//----- (00451AB0) -------------------------------------------------------- -_BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4) -{ - if ( a2 != Src ) - memcpy(a4, Src, a2 - Src); - return a2; -} - -//----- (00451AF0) -------------------------------------------------------- -int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2) -{ - return a1; -} - -//----- (00451B00) -------------------------------------------------------- -wint_t *__thiscall std::ctype::do_scan_is(_WORD *this, unsigned __int16 a2, wint_t *a3, unsigned int a4) -{ - _WORD *v4; // edi - wint_t C; // si - int (__thiscall *v6)(_WORD *, unsigned __int16, wint_t); // eax - _WORD *v7; // ebp - wint_t *v9; // [esp+14h] [ebp-28h] - - if ( (unsigned int)a3 >= a4 ) - return a3; - v9 = a3; - v4 = this + 343; - while ( 1 ) - { - C = *v9; - v6 = *(int (__thiscall **)(_WORD *, unsigned __int16, wint_t))(*(_DWORD *)this + 8); - if ( v6 == std::ctype::do_is ) - break; - if ( (unsigned __int8)v6(this, a2, *v9) ) - return v9; -LABEL_10: - if ( a4 <= (unsigned int)++v9 ) - return v9; - } - v7 = this + 327; - while ( (*v7 & a2) == 0 || !iswctype(C, v7[16]) ) - { - if ( v4 == ++v7 ) - goto LABEL_10; - } - return v9; -} - -//----- (00451BE0) -------------------------------------------------------- -unsigned int __stdcall std::ctype::do_tolower(wint_t *a1, unsigned int a2) -{ - wint_t *v2; // ebx - wint_t C; // ax - - v2 = a1; - if ( (unsigned int)a1 < a2 ) - { - do - { - C = *v2++; - *(v2 - 1) = towlower(C); - } - while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); - } - return a2; -} - -//----- (00451C30) -------------------------------------------------------- -wint_t __stdcall std::ctype::do_tolower(wint_t C) -{ - return towlower(C); -} - -//----- (00451C50) -------------------------------------------------------- -unsigned int __stdcall std::ctype::do_toupper(wint_t *a1, unsigned int a2) -{ - wint_t *v2; // ebx - wint_t C; // ax - - v2 = a1; - if ( (unsigned int)a1 < a2 ) - { - do - { - C = *v2++; - *(v2 - 1) = towupper(C); - } - while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); - } - return a2; -} - -//----- (00451CA0) -------------------------------------------------------- -wint_t __stdcall std::ctype::do_toupper(wint_t C) -{ - return towupper(C); -} - -//----- (00451CC0) -------------------------------------------------------- -wint_t *__thiscall std::ctype::do_scan_not(_WORD *this, unsigned __int16 a2, wint_t *a3, unsigned int a4) -{ - _WORD *v4; // ebp - wint_t C; // si - int (__thiscall *v6)(_WORD *, unsigned __int16, wint_t); // eax - _WORD *v7; // edi - wint_t *v9; // [esp+14h] [ebp-28h] - - if ( (unsigned int)a3 >= a4 ) - return a3; - v9 = a3; - v4 = this + 343; - do - { - while ( 1 ) - { - C = *v9; - v6 = *(int (__thiscall **)(_WORD *, unsigned __int16, wint_t))(*(_DWORD *)this + 8); - if ( v6 == std::ctype::do_is ) - break; - if ( (unsigned __int8)v6(this, a2, *v9) ) - { - if ( a4 > (unsigned int)++v9 ) - continue; - } - return v9; - } - v7 = this + 327; - while ( (*v7 & a2) == 0 || !iswctype(C, v7[16]) ) - { - if ( v4 == ++v7 ) - return v9; - } - ++v9; - } - while ( a4 > (unsigned int)v9 ); - return v9; -} - -//----- (00451DA0) -------------------------------------------------------- -int __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1) -{ - int v1; // edx - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - int v12; // eax - int v13; // eax - int v14; // eax - - if ( a1 > 0x40u ) - { - switch ( a1 ) - { - case 0x200u: - LOWORD(v13) = wctype("punct"); - return v13; - case 0x20Cu: - LOWORD(v3) = wctype("graph"); - return v3; - case 0x100u: - LOWORD(v4) = wctype("cntrl"); - return v4; - case 0x400u: - LOWORD(v14) = wctype("blank"); - return v14; - default: - return 0; - } - } - else - { - v1 = 0; - if ( a1 ) - { - switch ( a1 ) - { - case 1u: - LOWORD(v6) = wctype("upper"); - v1 = v6; - break; - case 2u: - LOWORD(v7) = wctype("lower"); - v1 = v7; - break; - case 4u: - LOWORD(v8) = wctype("alpha"); - v1 = v8; - break; - case 8u: - LOWORD(v9) = wctype("digit"); - v1 = v9; - break; - case 0xCu: - LOWORD(v10) = wctype("alnum"); - v1 = v10; - break; - case 0x10u: - LOWORD(v11) = wctype("xdigit"); - v1 = v11; - break; - case 0x20u: - LOWORD(v12) = wctype("space"); - v1 = v12; - break; - case 0x40u: - LOWORD(v5) = wctype("print"); - v1 = v5; - break; - default: - return 0; - } - } - } - return v1; -} -// 451DF4: variable 'v3' is possibly undefined -// 451E16: variable 'v4' is possibly undefined -// 451E2C: variable 'v5' is possibly undefined -// 451E3C: variable 'v6' is possibly undefined -// 451E4C: variable 'v7' is possibly undefined -// 451E64: variable 'v8' is possibly undefined -// 451E7C: variable 'v9' is possibly undefined -// 451E94: variable 'v10' is possibly undefined -// 451EAC: variable 'v11' is possibly undefined -// 451EC4: variable 'v12' is possibly undefined -// 451EDC: variable 'v13' is possibly undefined -// 451EF9: variable 'v14' is possibly undefined - -//----- (00451F00) -------------------------------------------------------- -unsigned int __thiscall std::ctype::do_is(char *this, wint_t *a2, unsigned int a3, _WORD *a4) -{ - wint_t *v4; // ebx - char *v5; // edi - char *v6; // ebp - __int16 v7; // si - _WORD *v8; // eax - char *v10; // [esp+1Ch] [ebp-20h] - - v4 = a2; - if ( (unsigned int)a2 < a3 ) - { - v5 = this + 686; - v10 = this + 654; - do - { - v6 = v10; - v7 = 0; - do - { - if ( iswctype(*v4, *((_WORD *)v6 + 16)) ) - v7 |= *(_WORD *)v6; - v6 += 2; - } - while ( v6 != v5 ); - v8 = a4; - ++v4; - ++a4; - *v8 = v7; - } - while ( a3 > (unsigned int)v4 ); - } - return a3; -} - -//----- (00451F80) -------------------------------------------------------- -int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16 a2, wint_t C) -{ - _WORD *v3; // esi - _WORD *v4; // ebx - - v3 = this + 343; - v4 = this + 327; - do - { - if ( (*v4 & a2) != 0 && iswctype(C, v4[16]) ) - return 1; - ++v4; - } - while ( v4 != v3 ); - return 0; -} - -//----- (00451FF0) -------------------------------------------------------- -unsigned __int8 *__thiscall std::ctype::do_widen( - _WORD *this, - unsigned __int8 *a2, - unsigned __int8 *a3, - int a4) -{ - unsigned __int8 *v4; // eax - int v7; // ecx - - v4 = a2; - if ( a2 < a3 ) - { - do - { - v7 = *v4++; - a4 += 2; - *(_WORD *)(a4 - 2) = this[v7 + 71]; - } - while ( a3 != v4 ); - } - return a3; -} - -//----- (00452030) -------------------------------------------------------- -int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2) -{ - return this[a2 + 71]; -} - -//----- (00452040) -------------------------------------------------------- -unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, int a5) -{ - wint_t *v5; // esi - int v6; // ebx - unsigned int v8; // ebp - int v9; // ecx - int v10; // eax - int v12; // eax - - v5 = a2; - v6 = a5; - if ( this[12] ) - { - if ( (unsigned int)a2 < a3 ) - { - v8 = a5 + ((a3 - 1 - (unsigned int)a2) >> 1) + 1; - do - { - while ( 1 ) - { - v9 = *v5; - if ( (unsigned __int16)v9 > 0x7Fu ) - break; - ++v6; - ++v5; - *(_BYTE *)(v6 - 1) = this[v9 + 13]; - if ( v8 == v6 ) - return a3; - } - v10 = wctob(*v5); - if ( v10 == -1 ) - LOBYTE(v10) = a4; - ++v6; - ++v5; - *(_BYTE *)(v6 - 1) = v10; - } - while ( v8 != v6 ); - } - return a3; - } - if ( (unsigned int)a2 >= a3 ) - return a3; - do - { - v12 = wctob(*v5); - if ( v12 == -1 ) - LOBYTE(v12) = a4; - ++v6; - ++v5; - *(_BYTE *)(v6 - 1) = v12; - } - while ( v6 != a5 + ((a3 - 1 - (unsigned int)a2) >> 1) + 1 ); - return a3; -} - -//----- (00452120) -------------------------------------------------------- -int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3) -{ - int result; // eax - - if ( WCh <= 0x7Fu && this[12] ) - return (unsigned __int8)this[WCh + 13]; - result = wctob(WCh); - if ( result == -1 ) - return a3; - return result; -} - -//----- (00452160) -------------------------------------------------------- -int __fastcall std::locale::id::_M_id(volatile signed __int32 *a1) -{ - int v1; // eax - - v1 = *a1; - if ( *a1 ) - return v1 - 1; - if ( !_CRT_MT ) - { - v1 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v1; - *a1 = v1; - return v1 - 1; - } - _InterlockedCompareExchange(a1, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - return *a1 - 1; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C5EC: using guessed type int std::locale::id::_S_refcount; - -//----- (004521B0) -------------------------------------------------------- -int *__thiscall std::locale::name[abi:cxx11](int *this, int a2) -{ - int v2; // eax - unsigned int v3; // eax - int v4; // eax - unsigned int v5; // edx - unsigned int v6; // eax - int v7; // eax - unsigned int v8; // edx - unsigned int v9; // eax - int v10; // eax - unsigned int v11; // edx - unsigned int v12; // eax - size_t v14; // eax - const char *v15; // [esp+0h] [ebp-68h] - char *Str; // [esp+14h] [ebp-54h] - int *v17; // [esp+18h] [ebp-50h] - size_t v18; // [esp+1Ch] [ebp-4Ch] - size_t v19; // [esp+1Ch] [ebp-4Ch] - size_t v20; // [esp+1Ch] [ebp-4Ch] - char *Str1; // [esp+20h] [ebp-48h] - char *Str1a; // [esp+20h] [ebp-48h] - char *Str1b; // [esp+20h] [ebp-48h] - char *Str1c; // [esp+20h] [ebp-48h] - char *Str1d; // [esp+20h] [ebp-48h] - char *Str1e; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcptb; // [esp+24h] [ebp-44h] - int lpuexcptc; // [esp+24h] [ebp-44h] - - this[1] = 0; - *this = (int)(this + 2); - *((_BYTE *)this + 8) = 0; - v17 = this + 2; - v18 = *(_DWORD *)(*(_DWORD *)a2 + 16); - Str = *(char **)v18; - if ( *(_DWORD *)v18 ) - { - if ( *(_DWORD *)(v18 + 4) ) - { - lpuexcpt = 0; - Str1 = *(char **)v18; - while ( 1 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v15 = Str1; - Str1 = *(char **)(v18 + 4 * (_DWORD)lpuexcpt); - v2 = strcmp(v15, Str1); - if ( (unsigned int)lpuexcpt > 4 ) - break; - if ( v2 ) - goto LABEL_6; - } - if ( !v2 ) - goto LABEL_26; -LABEL_6: - std::string::reserve(this, 0x80u); - v3 = strlen(*std::locale::_S_categories); - if ( v3 > 0x3FFFFFFF - this[1] ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(this, *std::locale::_S_categories, v3); - Str1a = (char *)this[1]; - lpuexcpta = (struct _Unwind_Exception *)(Str1a + 1); - v4 = *this; - if ( v17 == (int *)*this ) - v5 = 15; - else - v5 = this[2]; - if ( (unsigned int)lpuexcpta > v5 ) - { - std::string::_M_mutate((int)this, (size_t)Str1a, 0, 0, 1u); - v4 = *this; - } - Str1a[v4] = 61; - this[1] = (int)lpuexcpta; - Str1a[*this + 1] = 0; - lpuexcptb = **(struct _Unwind_Exception ***)(*(_DWORD *)a2 + 16); - v6 = strlen((const char *)lpuexcptb); - if ( v6 > 0x3FFFFFFF - this[1] ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(this, lpuexcptb, v6); - for ( lpuexcptc = 1; lpuexcptc != 6; ++lpuexcptc ) - { - v19 = this[1]; - Str1b = (char *)(v19 + 1); - v7 = *this; - if ( v17 == (int *)*this ) - v8 = 15; - else - v8 = this[2]; - if ( (unsigned int)Str1b > v8 ) - { - std::string::_M_mutate((int)this, v19, 0, 0, 1u); - v7 = *this; - } - *(_BYTE *)(v7 + v19) = 59; - this[1] = (int)Str1b; - *(_BYTE *)(*this + v19 + 1) = 0; - Str1c = std::locale::_S_categories[lpuexcptc]; - v9 = strlen(Str1c); - if ( v9 > 0x3FFFFFFF - this[1] ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(this, Str1c, v9); - v10 = *this; - v20 = this[1]; - Str1d = (char *)(v20 + 1); - if ( v17 == (int *)*this ) - v11 = 15; - else - v11 = this[2]; - if ( (unsigned int)Str1d > v11 ) - { - std::string::_M_mutate((int)this, v20, 0, 0, 1u); - v10 = *this; - } - *(_BYTE *)(v10 + v20) = 61; - this[1] = (int)Str1d; - *(_BYTE *)(*this + v20 + 1) = 0; - Str1e = *(char **)(*(_DWORD *)(*(_DWORD *)a2 + 16) + lpuexcptc * 4); - v12 = strlen(Str1e); - if ( v12 > 0x3FFFFFFF - this[1] ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(this, Str1e, v12); - } - } - else - { -LABEL_26: - v14 = strlen(Str); - std::string::_M_replace((unsigned int **)this, 0, 0, Str, v14); - } - } - else - { - std::string::_M_replace_aux(this, 0, 0, 1u, 42); - } - return this; -} -// 5154AC: using guessed type char **std::locale::_S_categories; - -//----- (00452650) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__thiscall std::locale::name(int *ecx0, std::locale *this) -{ - _DWORD *v2; // eax - int v3; // edx - int v4; // eax - size_t v5; // eax - int v6; // eax - size_t v7; // eax - int v8; // eax - size_t v9; // eax - int v10; // eax - size_t v11; // eax - size_t v13; // eax - const char *v14; // [esp-4h] [ebp-7Ch] - unsigned int v15; // [esp+0h] [ebp-78h] - unsigned int v16; // [esp+0h] [ebp-78h] - unsigned int v17; // [esp+0h] [ebp-78h] - unsigned int v18; // [esp+0h] [ebp-78h] - unsigned int v19; // [esp+4h] [ebp-74h] - unsigned int v20; // [esp+4h] [ebp-74h] - unsigned int v21; // [esp+4h] [ebp-74h] - char v22; // [esp+Ch] [ebp-6Ch] - char *Str; // [esp+18h] [ebp-60h] - int v24; // [esp+1Ch] [ebp-5Ch] - int v25; // [esp+1Ch] [ebp-5Ch] - int v26; // [esp+1Ch] [ebp-5Ch] - char *Str1; // [esp+20h] [ebp-58h] - char *Str1a; // [esp+20h] [ebp-58h] - char *Str1b; // [esp+20h] [ebp-58h] - char *Str1d; // [esp+20h] [ebp-58h] - char *Str1c; // [esp+20h] [ebp-58h] - char *Str1e; // [esp+20h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-54h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-54h] - struct _Unwind_Exception *lpuexcptc; // [esp+24h] [ebp-54h] - int lpuexcptb; // [esp+24h] [ebp-54h] - unsigned int v38[2]; // [esp+6Fh] [ebp-9h] BYREF - - v2 = std::string::_S_construct(0, 0); - v3 = *(_DWORD *)this; - *ecx0 = (int)v2; - v24 = *(_DWORD *)(v3 + 16); - Str = *(char **)v24; - if ( *(_DWORD *)v24 ) - { - if ( *(_DWORD *)(v24 + 4) ) - { - lpuexcpt = 0; - Str1 = *(char **)v24; - while ( 1 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v14 = Str1; - Str1 = *(char **)(v24 + 4 * (_DWORD)lpuexcpt); - v4 = strcmp(v14, Str1); - if ( (unsigned int)lpuexcpt > 4 ) - break; - if ( v4 ) - goto LABEL_6; - } - if ( !v4 ) - goto LABEL_19; -LABEL_6: - std::string::reserve(ecx0, (std::string *)0x80, v15); - v5 = strlen(*std::locale::_S_categories); - std::string::append((unsigned int *)ecx0, (std::string *)*std::locale::_S_categories, v5, (unsigned int)v38); - Str1a = *(char **)(*ecx0 - 12); - lpuexcpta = (struct _Unwind_Exception *)(Str1a + 1); - if ( (unsigned int)(Str1a + 1) > *(_DWORD *)(*ecx0 - 8) || *(int *)(*ecx0 - 4) > 0 ) - std::string::reserve(ecx0, lpuexcpta, v16); - *(_BYTE *)(*ecx0 + *(_DWORD *)(*ecx0 - 12)) = 61; - v6 = *ecx0; - *(_DWORD *)(v6 - 12) = lpuexcpta; - *(_DWORD *)(v6 - 4) = 0; - Str1a[v6 + 1] = 0; - lpuexcptc = **(struct _Unwind_Exception ***)(*(_DWORD *)this + 16); - v7 = strlen((const char *)lpuexcptc); - std::string::append((unsigned int *)ecx0, lpuexcptc, v7, v19); - for ( lpuexcptb = 1; lpuexcptb != 6; ++lpuexcptb ) - { - v25 = *(_DWORD *)(*ecx0 - 12); - Str1b = (char *)(v25 + 1); - if ( (unsigned int)(v25 + 1) > *(_DWORD *)(*ecx0 - 8) || *(int *)(*ecx0 - 4) > 0 ) - std::string::reserve(ecx0, (std::string *)Str1b, v17); - *(_BYTE *)(*ecx0 + *(_DWORD *)(*ecx0 - 12)) = 59; - v8 = *ecx0; - *(_DWORD *)(v8 - 12) = Str1b; - *(_DWORD *)(v8 - 4) = 0; - *(_BYTE *)(v8 + v25 + 1) = 0; - Str1d = std::locale::_S_categories[lpuexcptb]; - v9 = strlen(Str1d); - std::string::append((unsigned int *)ecx0, (std::string *)Str1d, v9, v20); - v26 = *(_DWORD *)(*ecx0 - 12); - Str1c = (char *)(v26 + 1); - if ( (unsigned int)(v26 + 1) > *(_DWORD *)(*ecx0 - 8) || *(int *)(*ecx0 - 4) > 0 ) - std::string::reserve(ecx0, (std::string *)Str1c, v18); - *(_BYTE *)(*ecx0 + *(_DWORD *)(*ecx0 - 12)) = 61; - v10 = *ecx0; - *(_DWORD *)(v10 - 12) = Str1c; - *(_DWORD *)(v10 - 4) = 0; - *(_BYTE *)(v10 + v26 + 1) = 0; - Str1e = *(char **)(*(_DWORD *)(*(_DWORD *)this + 16) + lpuexcptb * 4); - v11 = strlen(Str1e); - std::string::append((unsigned int *)ecx0, (std::string *)Str1e, v11, v21); - } - } - else - { -LABEL_19: - v13 = strlen(Str); - std::string::assign((char **)ecx0, (std::string *)Str, v13, (unsigned int)v38); - } - } - else - { - std::string::_M_replace_aux((char **)ecx0, 0, *(v2 - 3), 1u, 42, v22); - } - return ecx0; -} -// 4529A6: positive sp value 4 has been found -// 45271E: variable 'v15' is possibly undefined -// 45277B: variable 'v16' is possibly undefined -// 4527CF: variable 'v19' is possibly undefined -// 45280B: variable 'v17' is possibly undefined -// 452860: variable 'v20' is possibly undefined -// 452895: variable 'v18' is possibly undefined -// 4528ED: variable 'v21' is possibly undefined -// 452980: variable 'v22' is possibly undefined -// 5154AC: using guessed type char **std::locale::_S_categories; - -//----- (004529C0) -------------------------------------------------------- -_DWORD *__userpurge std::locale::facet::_M_cow_shim@( - volatile signed __int32 *a1@, - std::locale::facet *this, - const std::locale::id *a3) -{ - void *v3; // eax - _WORD *v5; // eax - _DWORD *v6; // eax - int v7; // ecx - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - int c_locale; // eax - int v12; // edx - _DWORD *v13; // eax - _DWORD *v14; // eax - _WORD *v15; // eax - _DWORD *v16; // eax - int v17; // ecx - _WORD *v18; // eax - _DWORD *v19; // eax - int v20; // ecx - int v21; // edx - _DWORD *v22; // eax - _DWORD *v23; // eax - _DWORD *v24; // eax - _DWORD *v25; // eax - _DWORD *v26; // eax - _DWORD *v27; // eax - _DWORD *v28; // eax - int v29; // ecx - _DWORD *v30; // eax - _DWORD *v31; // eax - int v32; // edx - int v33; // [esp+0h] [ebp-78h] - int v34; // [esp+0h] [ebp-78h] - int v35; // [esp+0h] [ebp-78h] - int v36; // [esp+0h] [ebp-78h] - int v37; // [esp+0h] [ebp-78h] - int v38; // [esp+0h] [ebp-78h] - int v39; // [esp+30h] [ebp-48h] - int v40; // [esp+30h] [ebp-48h] - int v41; // [esp+30h] [ebp-48h] - int v42; // [esp+30h] [ebp-48h] - int v43; // [esp+30h] [ebp-48h] - int v44; // [esp+30h] [ebp-48h] - _DWORD *Block; // [esp+34h] [ebp-44h] - - v3 = __dynamic_cast( - (const void *)a1, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, - -2); - if ( v3 ) - return *(_DWORD **)v3; - if ( this == (std::locale::facet *)&std::numpunct::id ) - { - v5 = operator new(0x68u); - v5[18] = 0; - *((_DWORD *)v5 + 1) = 0; - *(_DWORD *)v5 = &off_51AF60; - *((_DWORD *)v5 + 2) = 0; - *((_DWORD *)v5 + 3) = 0; - *((_BYTE *)v5 + 16) = 0; - *((_DWORD *)v5 + 5) = 0; - *((_DWORD *)v5 + 6) = 0; - *((_DWORD *)v5 + 7) = 0; - *((_DWORD *)v5 + 8) = 0; - *((_BYTE *)v5 + 100) = 0; - v39 = (int)v5; - v6 = operator new(0x14u); - v6[1] = 0; - *v6 = &off_51B6FC; - Block = v6; - v6[2] = v39; - std::numpunct::_M_initialize_numpunct(v6, 0); - v7 = _CRT_MT; - Block[3] = a1; - if ( v7 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519E00; - Block[4] = v39; - LOBYTE(v33) = 0; - std::__facet_shims::__numpunct_fill_cache(v33, (int *)a1, v39); - } - else if ( this == (std::locale::facet *)&std::collate::id ) - { - v10 = operator new(0x10u); - v10[1] = 0; - *v10 = &off_51B590; - Block = v10; - c_locale = std::locale::facet::_S_get_c_locale(); - v12 = _CRT_MT; - Block[2] = c_locale; - Block[3] = a1; - if ( v12 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519D20; - } - else if ( this == (std::locale::facet *)&std::time_get>::id ) - { - v8 = operator new(0xCu); - Block = v8; - v8[1] = 0; - *v8 = &off_51B744; - v8[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v8 = &off_519E90; - } - else if ( this == (std::locale::facet *)&std::money_get>::id ) - { - v13 = operator new(0xCu); - Block = v13; - v13[1] = 0; - *v13 = &off_51B804; - v13[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v13 = &off_519F38; - } - else if ( this == (std::locale::facet *)&std::money_put>::id ) - { - v14 = operator new(0xCu); - Block = v14; - v14[1] = 0; - *v14 = &off_51B834; - v14[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v14 = &off_519F98; - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v15 = operator new(0x44u); - v15[8] = 0; - *(_DWORD *)v15 = &off_51B094; - *((_DWORD *)v15 + 1) = 0; - *((_DWORD *)v15 + 2) = 0; - *((_DWORD *)v15 + 3) = 0; - *((_BYTE *)v15 + 18) = 0; - *((_DWORD *)v15 + 5) = 0; - *((_DWORD *)v15 + 6) = 0; - *((_DWORD *)v15 + 7) = 0; - *((_DWORD *)v15 + 8) = 0; - *((_DWORD *)v15 + 9) = 0; - *((_DWORD *)v15 + 10) = 0; - *((_DWORD *)v15 + 11) = 0; - *((_DWORD *)v15 + 12) = 0; - *((_DWORD *)v15 + 13) = 0; - *((_BYTE *)v15 + 67) = 0; - v40 = (int)v15; - v16 = operator new(0x14u); - v16[1] = 0; - *v16 = &off_51A884; - Block = v16; - v16[2] = v40; - std::moneypunct::_M_initialize_moneypunct(v16, 0, 0); - v17 = _CRT_MT; - Block[3] = a1; - if ( v17 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_51A060; - Block[4] = v40; - LOBYTE(v34) = 0; - std::__facet_shims::__moneypunct_fill_cache(v34, (int *)a1, v40); - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v18 = operator new(0x44u); - v18[8] = 0; - *(_DWORD *)v18 = &off_51B084; - *((_DWORD *)v18 + 1) = 0; - *((_DWORD *)v18 + 2) = 0; - *((_DWORD *)v18 + 3) = 0; - *((_BYTE *)v18 + 18) = 0; - *((_DWORD *)v18 + 5) = 0; - *((_DWORD *)v18 + 6) = 0; - *((_DWORD *)v18 + 7) = 0; - *((_DWORD *)v18 + 8) = 0; - *((_DWORD *)v18 + 9) = 0; - *((_DWORD *)v18 + 10) = 0; - *((_DWORD *)v18 + 11) = 0; - *((_DWORD *)v18 + 12) = 0; - *((_DWORD *)v18 + 13) = 0; - *((_BYTE *)v18 + 67) = 0; - v41 = (int)v18; - v19 = operator new(0x14u); - v19[1] = 0; - *v19 = &off_51A850; - Block = v19; - v19[2] = v41; - std::moneypunct::_M_initialize_moneypunct(v19, 0, 0); - v20 = _CRT_MT; - Block[3] = a1; - if ( v20 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519FF8; - Block[4] = v41; - LOBYTE(v35) = 0; - std::__facet_shims::__moneypunct_fill_cache(v35, (int *)a1, v41); - } - else if ( this == (std::locale::facet *)&std::messages::id ) - { - Block = operator new(0x14u); - std::messages::messages(Block, 0); - v21 = _CRT_MT; - Block[4] = a1; - if ( v21 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519D90; - } - else if ( this == (std::locale::facet *)&std::numpunct::id ) - { - v22 = operator new(0xA8u); - v22[1] = 0; - *v22 = &off_51AF70; - v22[2] = 0; - v22[3] = 0; - *((_BYTE *)v22 + 16) = 0; - v22[5] = 0; - v22[6] = 0; - v22[7] = 0; - v22[8] = 0; - v22[9] = 0; - *((_BYTE *)v22 + 164) = 0; - v42 = (int)v22; - v23 = operator new(0x14u); - v23[1] = 0; - *v23 = &off_51B720; - Block = v23; - v23[2] = v42; - std::numpunct::_M_initialize_numpunct(v23, 0); - Block[3] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519E48; - Block[4] = v42; - LOBYTE(v36) = 0; - std::__facet_shims::__numpunct_fill_cache(v36, (int *)a1, v42); - } - else if ( this == (std::locale::facet *)&std::collate::id ) - { - v9 = operator new(0x10u); - v9[1] = 0; - *v9 = &off_51B5AC; - Block = v9; - v9[2] = std::locale::facet::_S_get_c_locale(); - Block[3] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519D58; - } - else if ( this == (std::locale::facet *)&std::time_get>::id ) - { - v24 = operator new(0xCu); - Block = v24; - v24[1] = 0; - *v24 = &off_51B76C; - v24[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v24 = &off_519EE4; - } - else if ( this == (std::locale::facet *)&std::money_get>::id ) - { - v25 = operator new(0xCu); - Block = v25; - v25[1] = 0; - *v25 = &off_51B81C; - v25[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v25 = &off_519F68; - } - else if ( this == (std::locale::facet *)std::money_put>::id ) - { - v26 = operator new(0xCu); - Block = v26; - v26[1] = 0; - *v26 = &off_51B84C; - v26[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v26 = &off_519FC8; - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v27 = operator new(0x54u); - v27[1] = 0; - *v27 = &off_51B0B4; - v27[2] = 0; - v27[3] = 0; - *((_BYTE *)v27 + 16) = 0; - *(_DWORD *)((char *)v27 + 18) = 0; - v27[6] = 0; - v27[7] = 0; - v27[8] = 0; - v27[9] = 0; - v27[10] = 0; - v27[11] = 0; - v27[12] = 0; - v27[13] = 0; - v27[14] = 0; - *((_BYTE *)v27 + 82) = 0; - v43 = (int)v27; - v28 = operator new(0x14u); - v28[1] = 0; - *v28 = &off_51A8EC; - Block = v28; - v28[2] = v43; - std::moneypunct::_M_initialize_moneypunct(v28, 0, 0); - v29 = _CRT_MT; - Block[3] = a1; - if ( v29 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_51A130; - Block[4] = v43; - LOBYTE(v37) = 0; - std::__facet_shims::__moneypunct_fill_cache(v37, (int *)a1, v43); - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v30 = operator new(0x54u); - v30[1] = 0; - *v30 = &off_51B0A4; - v30[2] = 0; - v30[3] = 0; - *((_BYTE *)v30 + 16) = 0; - *(_DWORD *)((char *)v30 + 18) = 0; - v30[6] = 0; - v30[7] = 0; - v30[8] = 0; - v30[9] = 0; - v30[10] = 0; - v30[11] = 0; - v30[12] = 0; - v30[13] = 0; - v30[14] = 0; - *((_BYTE *)v30 + 82) = 0; - v44 = (int)v30; - v31 = operator new(0x14u); - v31[1] = 0; - *v31 = &off_51A8B8; - Block = v31; - v31[2] = v44; - std::moneypunct::_M_initialize_moneypunct(v31, 0, 0); - v32 = _CRT_MT; - Block[3] = a1; - if ( v32 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_51A0C8; - Block[4] = v44; - LOBYTE(v38) = 0; - std::__facet_shims::__moneypunct_fill_cache(v38, (int *)a1, v44); - } - else - { - if ( this != (std::locale::facet *)&std::messages::id ) - std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); - Block = operator new(0x14u); - std::messages::messages(Block, 0); - Block[4] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519DC8; - } - return Block; -} -// 452C3D: variable 'v33' is possibly undefined -// 452F18: variable 'v34' is possibly undefined -// 453030: variable 'v35' is possibly undefined -// 45317E: variable 'v36' is possibly undefined -// 45339A: variable 'v37' is possibly undefined -// 4534B8: variable 'v38' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C48C: using guessed type signed __int32 std::moneypunct::id; -// 50C490: using guessed type signed __int32 std::moneypunct::id; -// 50C494: using guessed type signed __int32 std::moneypunct::id; -// 50C498: using guessed type signed __int32 std::moneypunct::id; -// 50C660: using guessed type signed __int32 std::collate::id; -// 50C664: using guessed type signed __int32 std::collate::id; -// 50C680: using guessed type signed __int32 std::messages::id; -// 50C684: using guessed type signed __int32 std::messages::id; -// 50C688: using guessed type signed __int32 std::numpunct::id; -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 50C690: using guessed type signed __int32 std::time_get>::id; -// 50C694: using guessed type signed __int32 std::time_get>::id; -// 50C6A0: using guessed type signed __int32 std::money_get>::id; -// 50C6A4: using guessed type signed __int32 std::money_get>::id; -// 50C6A8: using guessed type signed __int32 std::money_put>::id; -// 50C6AC: using guessed type signed __int32 std::money_put>::id[5]; -// 5160E8: using guessed type int *`typeinfo for'std::locale::facet::__shim; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 519D20: using guessed type int (*off_519D20)(); -// 519D58: using guessed type int (*off_519D58)(); -// 519D90: using guessed type int (*off_519D90)(); -// 519DC8: using guessed type int (*off_519DC8)(); -// 519E00: using guessed type int (*off_519E00)(); -// 519E48: using guessed type int (*off_519E48)(); -// 519E90: using guessed type int (*off_519E90)(); -// 519EE4: using guessed type int (*off_519EE4)(); -// 519F38: using guessed type int (*off_519F38)(); -// 519F68: using guessed type int (*off_519F68)(); -// 519F98: using guessed type int (*off_519F98)(); -// 519FC8: using guessed type int (*off_519FC8)(); -// 519FF8: using guessed type int (*off_519FF8)(); -// 51A060: using guessed type int (*off_51A060)(); -// 51A0C8: using guessed type int (*off_51A0C8)(); -// 51A130: using guessed type int (*off_51A130)(); -// 51A850: using guessed type int (*off_51A850)(); -// 51A884: using guessed type int (*off_51A884)(); -// 51A8B8: using guessed type int (*off_51A8B8)(); -// 51A8EC: using guessed type int (*off_51A8EC)(); -// 51AF60: using guessed type int (*off_51AF60)(); -// 51AF70: using guessed type int (*off_51AF70)(); -// 51B084: using guessed type int (*off_51B084)(); -// 51B094: using guessed type int (*off_51B094)(); -// 51B0A4: using guessed type int (*off_51B0A4)(); -// 51B0B4: using guessed type int (*off_51B0B4)(); -// 51B590: using guessed type int (*off_51B590)(); -// 51B5AC: using guessed type int (*off_51B5AC)(); -// 51B6FC: using guessed type int (*off_51B6FC)(); -// 51B720: using guessed type int (*off_51B720)(); -// 51B744: using guessed type int (*off_51B744)(); -// 51B76C: using guessed type int (*off_51B76C)(); -// 51B804: using guessed type int (*off_51B804)(); -// 51B81C: using guessed type int (*off_51B81C)(); -// 51B834: using guessed type int (*off_51B834)(); -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (00453660) -------------------------------------------------------- -_DWORD *__userpurge std::locale::facet::_M_sso_shim@( - volatile signed __int32 *a1@, - std::locale::facet *this, - const std::locale::id *a3) -{ - void *v3; // eax - _WORD *v5; // eax - _DWORD *v6; // eax - int v7; // ecx - _DWORD *v8; // eax - _DWORD *v9; // eax - _DWORD *v10; // eax - int c_locale; // eax - int v12; // edx - _DWORD *v13; // eax - _DWORD *v14; // eax - _WORD *v15; // eax - _DWORD *v16; // eax - int v17; // ecx - _WORD *v18; // eax - _DWORD *v19; // eax - int v20; // ecx - int v21; // edx - _DWORD *v22; // eax - _DWORD *v23; // eax - _DWORD *v24; // eax - _DWORD *v25; // eax - _DWORD *v26; // eax - _DWORD *v27; // eax - _DWORD *v28; // eax - int v29; // ecx - _DWORD *v30; // eax - _DWORD *v31; // eax - int v32; // edx - int v33; // [esp+0h] [ebp-78h] - int v34; // [esp+0h] [ebp-78h] - int v35; // [esp+0h] [ebp-78h] - int v36; // [esp+0h] [ebp-78h] - int v37; // [esp+0h] [ebp-78h] - int v38; // [esp+0h] [ebp-78h] - int v39; // [esp+30h] [ebp-48h] - int v40; // [esp+30h] [ebp-48h] - int v41; // [esp+30h] [ebp-48h] - int v42; // [esp+30h] [ebp-48h] - int v43; // [esp+30h] [ebp-48h] - int v44; // [esp+30h] [ebp-48h] - _DWORD *Block; // [esp+34h] [ebp-44h] - - v3 = __dynamic_cast( - (const void *)a1, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, - -2); - if ( v3 ) - return *(_DWORD **)v3; - if ( this == (std::locale::facet *)&std::numpunct::id ) - { - v5 = operator new(0x68u); - v5[18] = 0; - *((_DWORD *)v5 + 1) = 0; - *(_DWORD *)v5 = &off_51AF60; - *((_DWORD *)v5 + 2) = 0; - *((_DWORD *)v5 + 3) = 0; - *((_BYTE *)v5 + 16) = 0; - *((_DWORD *)v5 + 5) = 0; - *((_DWORD *)v5 + 6) = 0; - *((_DWORD *)v5 + 7) = 0; - *((_DWORD *)v5 + 8) = 0; - *((_BYTE *)v5 + 100) = 0; - v39 = (int)v5; - v6 = operator new(0x14u); - v6[1] = 0; - *v6 = &off_51A688; - Block = v6; - v6[2] = v39; - std::numpunct::_M_initialize_numpunct(v6, 0); - v7 = _CRT_MT; - Block[3] = a1; - if ( v7 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519E24; - Block[4] = v39; - LOBYTE(v33) = 0; - std::__facet_shims::__numpunct_fill_cache(v33, (int *)a1, v39); - } - else if ( this == (std::locale::facet *)&std::collate::id ) - { - v10 = operator new(0x10u); - v10[1] = 0; - *v10 = &off_51A618; - Block = v10; - c_locale = std::locale::facet::_S_get_c_locale(); - v12 = _CRT_MT; - Block[2] = c_locale; - Block[3] = a1; - if ( v12 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519D3C; - } - else if ( this == (std::locale::facet *)&std::time_get>::id ) - { - v8 = operator new(0xCu); - Block = v8; - v8[1] = 0; - *v8 = &off_51A6D0; - v8[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v8 = &off_519EB8; - } - else if ( this == (std::locale::facet *)&std::money_get>::id ) - { - v13 = operator new(0xCu); - Block = v13; - v13[1] = 0; - *v13 = &off_51A728; - v13[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v13 = &off_519F50; - } - else if ( this == (std::locale::facet *)&std::money_put>::id ) - { - v14 = operator new(0xCu); - Block = v14; - v14[1] = 0; - *v14 = &off_51A758; - v14[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v14 = &off_519FB0; - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v15 = operator new(0x44u); - v15[8] = 0; - *(_DWORD *)v15 = &off_51B094; - *((_DWORD *)v15 + 1) = 0; - *((_DWORD *)v15 + 2) = 0; - *((_DWORD *)v15 + 3) = 0; - *((_BYTE *)v15 + 18) = 0; - *((_DWORD *)v15 + 5) = 0; - *((_DWORD *)v15 + 6) = 0; - *((_DWORD *)v15 + 7) = 0; - *((_DWORD *)v15 + 8) = 0; - *((_DWORD *)v15 + 9) = 0; - *((_DWORD *)v15 + 10) = 0; - *((_DWORD *)v15 + 11) = 0; - *((_DWORD *)v15 + 12) = 0; - *((_DWORD *)v15 + 13) = 0; - *((_BYTE *)v15 + 67) = 0; - v40 = (int)v15; - v16 = operator new(0x14u); - v16[1] = 0; - *v16 = &off_51A204; - Block = v16; - v16[2] = v40; - std::moneypunct::_M_initialize_moneypunct(v16, 0, 0); - v17 = _CRT_MT; - Block[3] = a1; - if ( v17 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_51A094; - Block[4] = v40; - LOBYTE(v34) = 0; - std::__facet_shims::__moneypunct_fill_cache(v34, (int *)a1, v40); - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v18 = operator new(0x44u); - v18[8] = 0; - *(_DWORD *)v18 = &off_51B084; - *((_DWORD *)v18 + 1) = 0; - *((_DWORD *)v18 + 2) = 0; - *((_DWORD *)v18 + 3) = 0; - *((_BYTE *)v18 + 18) = 0; - *((_DWORD *)v18 + 5) = 0; - *((_DWORD *)v18 + 6) = 0; - *((_DWORD *)v18 + 7) = 0; - *((_DWORD *)v18 + 8) = 0; - *((_DWORD *)v18 + 9) = 0; - *((_DWORD *)v18 + 10) = 0; - *((_DWORD *)v18 + 11) = 0; - *((_DWORD *)v18 + 12) = 0; - *((_DWORD *)v18 + 13) = 0; - *((_BYTE *)v18 + 67) = 0; - v41 = (int)v18; - v19 = operator new(0x14u); - v19[1] = 0; - *v19 = &off_51A1D0; - Block = v19; - v19[2] = v41; - std::moneypunct::_M_initialize_moneypunct(v19, 0, 0); - v20 = _CRT_MT; - Block[3] = a1; - if ( v20 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_51A02C; - Block[4] = v41; - LOBYTE(v35) = 0; - std::__facet_shims::__moneypunct_fill_cache(v35, (int *)a1, v41); - } - else if ( this == (std::locale::facet *)&std::messages::id ) - { - Block = operator new(0x14u); - std::messages::messages(Block, 0); - v21 = _CRT_MT; - Block[4] = a1; - if ( v21 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519DAC; - } - else if ( this == (std::locale::facet *)&std::numpunct::id ) - { - v22 = operator new(0xA8u); - v22[1] = 0; - *v22 = &off_51AF70; - v22[2] = 0; - v22[3] = 0; - *((_BYTE *)v22 + 16) = 0; - v22[5] = 0; - v22[6] = 0; - v22[7] = 0; - v22[8] = 0; - v22[9] = 0; - *((_BYTE *)v22 + 164) = 0; - v42 = (int)v22; - v23 = operator new(0x14u); - v23[1] = 0; - *v23 = &off_51A6AC; - Block = v23; - v23[2] = v42; - std::numpunct::_M_initialize_numpunct(v23, 0); - Block[3] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519E6C; - Block[4] = v42; - LOBYTE(v36) = 0; - std::__facet_shims::__numpunct_fill_cache(v36, (int *)a1, v42); - } - else if ( this == (std::locale::facet *)&std::collate::id ) - { - v9 = operator new(0x10u); - v9[1] = 0; - *v9 = &off_51A634; - Block = v9; - v9[2] = std::locale::facet::_S_get_c_locale(); - Block[3] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519D74; - } - else if ( this == (std::locale::facet *)&std::time_get>::id ) - { - v24 = operator new(0xCu); - Block = v24; - v24[1] = 0; - *v24 = &off_51A6FC; - v24[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v24 = &off_519F0C; - } - else if ( this == (std::locale::facet *)&std::money_get>::id ) - { - v25 = operator new(0xCu); - Block = v25; - v25[1] = 0; - *v25 = &off_51A740; - v25[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v25 = &off_519F80; - } - else if ( this == (std::locale::facet *)&std::money_put>::id ) - { - v26 = operator new(0xCu); - Block = v26; - v26[1] = 0; - *v26 = &off_51A770; - v26[2] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *v26 = &off_519FE0; - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v27 = operator new(0x54u); - v27[1] = 0; - *v27 = &off_51B0B4; - v27[2] = 0; - v27[3] = 0; - *((_BYTE *)v27 + 16) = 0; - *(_DWORD *)((char *)v27 + 18) = 0; - v27[6] = 0; - v27[7] = 0; - v27[8] = 0; - v27[9] = 0; - v27[10] = 0; - v27[11] = 0; - v27[12] = 0; - v27[13] = 0; - v27[14] = 0; - *((_BYTE *)v27 + 82) = 0; - v43 = (int)v27; - v28 = operator new(0x14u); - v28[1] = 0; - *v28 = &off_51A26C; - Block = v28; - v28[2] = v43; - std::moneypunct::_M_initialize_moneypunct(v28, 0, 0); - v29 = _CRT_MT; - Block[3] = a1; - if ( v29 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_51A164; - Block[4] = v43; - LOBYTE(v37) = 0; - std::__facet_shims::__moneypunct_fill_cache(v37, (int *)a1, v43); - } - else if ( this == (std::locale::facet *)&std::moneypunct::id ) - { - v30 = operator new(0x54u); - v30[1] = 0; - *v30 = &off_51B0A4; - v30[2] = 0; - v30[3] = 0; - *((_BYTE *)v30 + 16) = 0; - *(_DWORD *)((char *)v30 + 18) = 0; - v30[6] = 0; - v30[7] = 0; - v30[8] = 0; - v30[9] = 0; - v30[10] = 0; - v30[11] = 0; - v30[12] = 0; - v30[13] = 0; - v30[14] = 0; - *((_BYTE *)v30 + 82) = 0; - v44 = (int)v30; - v31 = operator new(0x14u); - v31[1] = 0; - *v31 = &off_51A238; - Block = v31; - v31[2] = v44; - std::moneypunct::_M_initialize_moneypunct(v31, 0, 0); - v32 = _CRT_MT; - Block[3] = a1; - if ( v32 ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_51A0FC; - Block[4] = v44; - LOBYTE(v38) = 0; - std::__facet_shims::__moneypunct_fill_cache(v38, (int *)a1, v44); - } - else - { - if ( this != (std::locale::facet *)&std::messages::id ) - std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); - Block = operator new(0x14u); - std::messages::messages(Block, 0); - Block[4] = a1; - if ( _CRT_MT ) - _InterlockedAdd(a1 + 1, 1u); - else - ++*((_DWORD *)a1 + 1); - *Block = &off_519DE4; - } - return Block; -} -// 4538DD: variable 'v33' is possibly undefined -// 453BB8: variable 'v34' is possibly undefined -// 453CD0: variable 'v35' is possibly undefined -// 453E1E: variable 'v36' is possibly undefined -// 45403A: variable 'v37' is possibly undefined -// 454158: variable 'v38' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C608: using guessed type signed __int32 std::moneypunct::id; -// 50C60C: using guessed type signed __int32 std::moneypunct::id; -// 50C610: using guessed type signed __int32 std::moneypunct::id; -// 50C614: using guessed type signed __int32 std::moneypunct::id; -// 50C618: using guessed type signed __int32 std::collate::id; -// 50C61C: using guessed type signed __int32 std::collate::id; -// 50C620: using guessed type signed __int32 std::messages::id; -// 50C624: using guessed type signed __int32 std::messages::id; -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 50C630: using guessed type signed __int32 std::time_get>::id; -// 50C634: using guessed type signed __int32 std::time_get>::id; -// 50C638: using guessed type signed __int32 std::money_get>::id; -// 50C63C: using guessed type signed __int32 std::money_get>::id; -// 50C640: using guessed type signed __int32 std::money_put>::id; -// 50C644: using guessed type signed __int32 std::money_put>::id; -// 5160E8: using guessed type int *`typeinfo for'std::locale::facet::__shim; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 519D3C: using guessed type int (*off_519D3C)(); -// 519D74: using guessed type int (*off_519D74)(); -// 519DAC: using guessed type int (*off_519DAC)(); -// 519DE4: using guessed type int (*off_519DE4)(); -// 519E24: using guessed type int (*off_519E24)(); -// 519E6C: using guessed type int (*off_519E6C)(); -// 519EB8: using guessed type int (*off_519EB8)(); -// 519F0C: using guessed type int (*off_519F0C)(); -// 519F50: using guessed type int (*off_519F50)(); -// 519F80: using guessed type int (*off_519F80)(); -// 519FB0: using guessed type int (*off_519FB0)(); -// 519FE0: using guessed type int (*off_519FE0)(); -// 51A02C: using guessed type int (*off_51A02C)(); -// 51A094: using guessed type int (*off_51A094)(); -// 51A0FC: using guessed type int (*off_51A0FC)(); -// 51A164: using guessed type int (*off_51A164)(); -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A618: using guessed type int (*off_51A618)(); -// 51A634: using guessed type int (*off_51A634)(); -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A6D0: using guessed type int (*off_51A6D0)(); -// 51A6FC: using guessed type int (*off_51A6FC)(); -// 51A728: using guessed type int (*off_51A728)(); -// 51A740: using guessed type int (*off_51A740)(); -// 51A758: using guessed type int (*off_51A758)(); -// 51A770: using guessed type int (*off_51A770)(); -// 51AF60: using guessed type int (*off_51AF60)(); -// 51AF70: using guessed type int (*off_51AF70)(); -// 51B084: using guessed type int (*off_51B084)(); -// 51B094: using guessed type int (*off_51B094)(); -// 51B0A4: using guessed type int (*off_51B0A4)(); -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (00454300) -------------------------------------------------------- -int __fastcall std::locale::facet::_M_remove_reference(volatile signed __int32 *a1) -{ - int result; // eax - - if ( _CRT_MT ) - { - result = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); - } - else - { - result = *((_DWORD *)a1 + 1); - *((_DWORD *)a1 + 1) = result - 1; - } - if ( result == 1 ) - return (*(int (__fastcall **)(volatile signed __int32 *))(*a1 + 4))(a1); - return result; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00454340) -------------------------------------------------------- -BOOL __thiscall std::locale::operator==(void *this, int a2) -{ - const char **v2; // ecx - const char **Block; // [esp+10h] [ebp-78h] - char *Blocka; // [esp+10h] [ebp-78h] - const char **v6; // [esp+14h] [ebp-74h] - char *v7; // [esp+14h] [ebp-74h] - bool lpuexcpta; // [esp+18h] [ebp-70h] - char *v10; // [esp+50h] [ebp-38h] BYREF - size_t Size; // [esp+54h] [ebp-34h] - char v12; // [esp+58h] [ebp-30h] BYREF - void *Buf2[2]; // [esp+68h] [ebp-20h] BYREF - char v14; // [esp+70h] [ebp-18h] BYREF - - if ( *(_DWORD *)this == *(_DWORD *)a2 ) - return 1; - v6 = *(const char ***)(*(_DWORD *)this + 16); - if ( *v6 && (v2 = *(const char ***)(*(_DWORD *)a2 + 16), Block = v2, *v2) && !strcmp(*v6, *v2) ) - { - if ( !v6[1] && !Block[1] ) - return 1; - std::locale::name[abi:cxx11]((int *)Buf2, a2); - std::locale::name[abi:cxx11]((int *)&v10, (int)this); - lpuexcpta = 0; - Blocka = v10; - v7 = (char *)Buf2[0]; - if ( (void *)Size == Buf2[1] ) - { - lpuexcpta = 1; - if ( Size ) - lpuexcpta = memcmp(v10, Buf2[0], Size) == 0; - } - if ( Blocka != &v12 ) - { - operator delete(Blocka); - v7 = (char *)Buf2[0]; - } - if ( v7 != &v14 ) - operator delete(v7); - } - else - { - return 0; - } - return lpuexcpta; -} - -//----- (00454500) -------------------------------------------------------- -unsigned int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3) -{ - int v3; // ebx - unsigned int v4; // edx - unsigned int v5; // eax - int v6; // ecx - bool v7; // cf - unsigned int v8; // eax - - v3 = 89478485; - v4 = a2; - v5 = -1431655765 * ((this[1] - *this) >> 3); - if ( 89478485 - v5 < a2 ) - std::__throw_length_error(a3); - v6 = 89478485; - if ( a2 < v5 ) - v4 = v5; - v7 = __CFADD__(v4, v5); - v8 = v4 + v5; - if ( !v7 ) - { - if ( v8 <= 0x5555555 ) - return v8; - return v3; - } - return v6; -} - -//----- (00454560) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (00454580) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (004545A0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - { - Str = *(char **)(a2[2] + 20); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4545E4: variable 'v7' is possibly undefined - -//----- (00454620) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 454620: using guessed type size_t var_20[8]; - -//----- (004546D0) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 44); - else - return v1(); -} - -//----- (004546F0) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 17); - else - return v1(); -} - -//----- (00454710) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (00454720) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (00454730) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - { - Str = *(char **)(a2[2] + 36); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 454774: variable 'v7' is possibly undefined - -//----- (004547B0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - { - Str = *(char **)(a2[2] + 28); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4547F4: variable 'v7' is possibly undefined - -//----- (00454830) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 18); - else - return v1(); -} - -//----- (00454850) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 20); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 454850: using guessed type size_t var_20[8]; - -//----- (00454900) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); -} - -//----- (00454910) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); -} - -//----- (00454920) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 36); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 454920: using guessed type size_t var_20[8]; - -//----- (004549D0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 28); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 4549D0: using guessed type size_t var_20[8]; - -//----- (00454A80) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (00454A90) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 454AD4: variable 'v7' is possibly undefined - -//----- (00454B10) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (00454B30) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (00454B50) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - { - Str = *(char **)(a2[2] + 20); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 454B94: variable 'v7' is possibly undefined - -//----- (00454BD0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 454BD0: using guessed type size_t var_20[8]; - -//----- (00454C80) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 44); - else - return v1(); -} - -//----- (00454CA0) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 17); - else - return v1(); -} - -//----- (00454CC0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (00454CD0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (00454CE0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - { - Str = *(char **)(a2[2] + 36); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 454D24: variable 'v7' is possibly undefined - -//----- (00454D60) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - { - Str = *(char **)(a2[2] + 28); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 454DA4: variable 'v7' is possibly undefined - -//----- (00454DE0) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 18); - else - return v1(); -} - -//----- (00454E00) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 20); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 454E00: using guessed type size_t var_20[8]; - -//----- (00454EB0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); -} - -//----- (00454EC0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); -} - -//----- (00454ED0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 36); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 454ED0: using guessed type size_t var_20[8]; - -//----- (00454F80) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 28); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 454F80: using guessed type size_t var_20[8]; - -//----- (00455030) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (00455040) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 455084: variable 'v7' is possibly undefined - -//----- (004550C0) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 56); - else - return v1(); -} - -//----- (004550E0) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (00455100) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - { - String = *(wchar_t **)(a2[2] + 24); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 455145: variable 'v7' is possibly undefined - -//----- (00455180) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - _DWORD *v2; // esi - const char *Str; // edi - size_t v5; // eax - size_t Size; // ebp - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 455180: using guessed type size_t var_20[8]; - -//----- (00455230) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (00455250) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 18); - else - return v1(); -} - -//----- (00455270) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); -} - -//----- (00455280) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (00455290) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - { - String = *(wchar_t **)(a2[2] + 40); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4552D5: variable 'v7' is possibly undefined - -//----- (00455310) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - { - String = *(wchar_t **)(a2[2] + 32); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 455355: variable 'v7' is possibly undefined - -//----- (00455390) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 20); - else - return v1(); -} - -//----- (004553B0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 4553E8: variable 'v6' is possibly undefined - -//----- (00455400) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (00455410) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (00455420) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 455458: variable 'v6' is possibly undefined - -//----- (00455470) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 4554A8: variable 'v6' is possibly undefined - -//----- (004554C0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); -} - -//----- (004554D0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - std::string::_M_construct(this, Str, v5); - return this; - } - else - { - v3(a2); - return this; - } -} - -//----- (00455540) -------------------------------------------------------- -int __fastcall std::moneypunct::neg_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 40); - if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) - return *(_DWORD *)(a1[2] + 56); - else - return v1(); -} - -//----- (00455560) -------------------------------------------------------- -int __fastcall std::moneypunct::pos_format(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 36); - if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) - return *(_DWORD *)(a1[2] + 52); - else - return v1(); -} - -//----- (00455580) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) - { - String = *(wchar_t **)(a2[2] + 24); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4555C5: variable 'v7' is possibly undefined - -//----- (00455600) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) -{ - _DWORD *v2; // esi - const char *Str; // edi - size_t v5; // eax - size_t Size; // ebp - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 455600: using guessed type size_t var_20[8]; - -//----- (004556B0) -------------------------------------------------------- -int __fastcall std::moneypunct::frac_digits(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 32); - if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) - return *(_DWORD *)(a1[2] + 48); - else - return v1(); -} - -//----- (004556D0) -------------------------------------------------------- -int __fastcall std::moneypunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 18); - else - return v1(); -} - -//----- (004556F0) -------------------------------------------------------- -int __fastcall std::moneypunct::do_neg_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); -} - -//----- (00455700) -------------------------------------------------------- -int __fastcall std::moneypunct::do_pos_format(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); -} - -//----- (00455710) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); - if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) - { - String = *(wchar_t **)(a2[2] + 40); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 455755: variable 'v7' is possibly undefined - -//----- (00455790) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) - { - String = *(wchar_t **)(a2[2] + 32); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4557D5: variable 'v7' is possibly undefined - -//----- (00455810) -------------------------------------------------------- -int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 20); - else - return v1(); -} - -//----- (00455830) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 455868: variable 'v6' is possibly undefined - -//----- (00455880) -------------------------------------------------------- -int __fastcall std::moneypunct::do_frac_digits(int a1) -{ - return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); -} - -//----- (00455890) -------------------------------------------------------- -int __fastcall std::moneypunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); -} - -//----- (004558A0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 4558D8: variable 'v6' is possibly undefined - -//----- (004558F0) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 455928: variable 'v6' is possibly undefined - -//----- (00455940) -------------------------------------------------------- -int __fastcall std::moneypunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); -} - -//----- (00455950) -------------------------------------------------------- -_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - std::string::_M_construct(this, Str, v5); - return this; - } - else - { - v3(a2); - return this; - } -} - -//----- (004559C0) -------------------------------------------------------- -int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int a2) -{ - int v2; // edx - - v2 = 1; - if ( *this <= a2 ) - LOBYTE(v2) = this[1] + *this < a2; - return v2; -} - -//----- (004559E0) -------------------------------------------------------- -bool __fastcall std::string::_M_is_local(_DWORD *a1) -{ - return a1 + 2 == (_DWORD *)*a1; -} - -//----- (004559F0) -------------------------------------------------------- -unsigned int __thiscall std::string::find_last_of(int *this, char *Str, unsigned int a3) -{ - unsigned int v4; // ebx - size_t MaxCount; // esi - int v6; // eax - unsigned int v7; // eax - int v8; // ebp - - v4 = a3; - MaxCount = strlen(Str); - v6 = this[1]; - if ( !v6 || !MaxCount ) - return -1; - v7 = v6 - 1; - v8 = *this; - if ( a3 > v7 ) - v4 = v7; - do - { - if ( memchr(Str, *(char *)(v8 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - return v4; -} - -//----- (00455A70) -------------------------------------------------------- -unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) -{ - int v4; // eax - unsigned int v5; // ebx - unsigned int v6; // eax - int v7; // ebp - - v4 = this[1]; - v5 = a3; - if ( !v4 || !MaxCount ) - return -1; - v6 = v4 - 1; - v7 = *this; - if ( v6 <= a3 ) - v5 = v6; - do - { - if ( memchr(Buf, *(char *)(v7 + v5), MaxCount) ) - break; - } - while ( v5-- != 0 ); - return v5; -} - -//----- (00455AF0) -------------------------------------------------------- -unsigned int __thiscall std::string::find_last_of(int *this, int a2, unsigned int a3) -{ - int v3; // eax - unsigned int v4; // ebx - size_t MaxCount; // esi - unsigned int v6; // eax - const void *Buf; // ebp - int v8; // edi - - v3 = this[1]; - v4 = a3; - MaxCount = *(_DWORD *)(a2 + 4); - if ( !v3 || !MaxCount ) - return -1; - v6 = v3 - 1; - Buf = *(const void **)a2; - v8 = *this; - if ( a3 > v6 ) - v4 = v6; - do - { - if ( memchr(Buf, *(char *)(v8 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - return v4; -} - -//----- (00455B70) -------------------------------------------------------- -int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( a3 <= v4 - 1 ) - result = a3; - do - { - if ( a2 == *(_BYTE *)(v5 + result) ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00455BB0) -------------------------------------------------------- -int __fastcall std::string::_M_local_data(int a1) -{ - return a1 + 8; -} - -//----- (00455BC0) -------------------------------------------------------- -unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, unsigned int a3) -{ - size_t v5; // eax - size_t MaxCount; // ebx - unsigned int v8; // [esp+1Ch] [ebp-20h] - - v5 = strlen(Str); - if ( v5 ) - { - MaxCount = v5; - v8 = this[1]; - while ( v8 > a3 ) - { - if ( memchr(Str, *(char *)(*this + a3), MaxCount) ) - return a3; - ++a3; - } - } - return -1; -} - -//----- (00455C40) -------------------------------------------------------- -unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount) -{ - unsigned int v5; // edi - - if ( MaxCount ) - { - v5 = this[1]; - while ( v5 > a3 ) - { - if ( memchr(Buf, *(char *)(*this + a3), MaxCount) ) - return a3; - ++a3; - } - } - return -1; -} - -//----- (00455CB0) -------------------------------------------------------- -int __thiscall std::string::find_first_of(_DWORD *this, int a2, unsigned int a3) -{ - size_t MaxCount; // esi - const void *Buf; // ebp - unsigned int v8; // [esp+1Ch] [ebp-20h] - - MaxCount = *(_DWORD *)(a2 + 4); - Buf = *(const void **)a2; - if ( MaxCount ) - { - v8 = this[1]; - while ( v8 > a3 ) - { - if ( memchr(Buf, *(char *)(*this + a3), MaxCount) ) - return a3; - ++a3; - } - } - return -1; -} - -//----- (00455D20) -------------------------------------------------------- -char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3) -{ - int v3; // ebx - unsigned int v4; // edx - int v5; // esi - char *v6; // eax - - v3 = -1; - v4 = this[1]; - if ( a3 < v4 ) - { - v5 = *this; - v6 = (char *)memchr((const void *)(*this + a3), a2, v4 - a3); - if ( v6 ) - return &v6[-v5]; - } - return (char *)v3; -} - -//----- (00455D70) -------------------------------------------------------- -void *__thiscall std::string::get_allocator(void *this, int a2) -{ - return this; -} - -//----- (00455D80) -------------------------------------------------------- -unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) -{ - unsigned int result; // eax - - result = a2 + 0x3FFFFFFF - this[1]; - if ( result < a3 ) - std::__throw_length_error(a4); - return result; -} - -//----- (00455DB0) -------------------------------------------------------- -int __fastcall std::string::_M_get_allocator(int a1) -{ - return a1; -} - -//----- (00455DC0) -------------------------------------------------------- -int __thiscall std::string::find_last_not_of(int *this, char *Str, unsigned int a3) -{ - int v3; // ebx - int v4; // ebp - size_t MaxCount; // esi - unsigned int v6; // edx - int v9; // [esp+1Ch] [ebp-20h] - - v3 = -1; - v9 = this[1]; - if ( v9 ) - { - v4 = *this; - MaxCount = strlen(Str); - v6 = v9 - 1; - if ( a3 <= v9 - 1 ) - v6 = a3; - v3 = v6; - do - { - if ( !MaxCount ) - break; - if ( !memchr(Str, *(char *)(v4 + v3), MaxCount) ) - break; - } - while ( v3-- != 0 ); - } - return v3; -} - -//----- (00455E30) -------------------------------------------------------- -int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) -{ - int v4; // ebx - int v5; // eax - unsigned int v6; // edx - unsigned int v7; // eax - int v8; // ebp - - v4 = -1; - v5 = this[1]; - v6 = a3; - if ( v5 ) - { - v7 = v5 - 1; - v8 = *this; - if ( v7 <= a3 ) - v6 = v7; - v4 = v6; - do - { - if ( !MaxCount ) - break; - if ( !memchr(Buf, *(char *)(v8 + v4), MaxCount) ) - break; - } - while ( v4-- != 0 ); - } - return v4; -} - -//----- (00455E90) -------------------------------------------------------- -int __thiscall std::string::find_last_not_of(int *this, int a2, unsigned int a3) -{ - int v3; // ebx - int v4; // eax - unsigned int v5; // eax - size_t MaxCount; // esi - int v7; // ebp - const void *Buf; // edi - - v3 = -1; - v4 = this[1]; - if ( v4 ) - { - v5 = v4 - 1; - MaxCount = *(_DWORD *)(a2 + 4); - v7 = *this; - Buf = *(const void **)a2; - if ( a3 <= v5 ) - v5 = a3; - v3 = v5; - do - { - if ( !MaxCount ) - break; - if ( !memchr(Buf, *(char *)(v7 + v3), MaxCount) ) - break; - } - while ( v3-- != 0 ); - } - return v3; -} - -//----- (00455EF0) -------------------------------------------------------- -int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_BYTE *)(v5 + result) != a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00455F30) -------------------------------------------------------- -unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, unsigned int a3) -{ - unsigned int v4; // esi - size_t v5; // eax - unsigned int v6; // edi - int v7; // ebp - size_t MaxCount; // ebx - - v4 = a3; - v5 = strlen(Str); - v6 = this[1]; - if ( a3 >= v6 ) - return -1; - v7 = *this; - MaxCount = v5; - if ( v5 ) - { - while ( memchr(Str, *(char *)(v7 + v4), MaxCount) ) - { - if ( ++v4 == v6 ) - return -1; - } - } - return v4; -} - -//----- (00455FA0) -------------------------------------------------------- -unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) -{ - unsigned int v4; // esi - unsigned int v5; // edi - int v6; // ebp - - v4 = this[1]; - v5 = a3; - if ( a3 >= v4 ) - return -1; - v6 = *this; - if ( MaxCount ) - { - while ( memchr(Buf, *(char *)(v6 + v5), MaxCount) ) - { - if ( ++v5 == v4 ) - return -1; - } - } - return v5; -} - -//----- (00456000) -------------------------------------------------------- -unsigned int __thiscall std::string::find_first_not_of(int *this, int a2, unsigned int a3) -{ - unsigned int v3; // esi - unsigned int v4; // ebp - size_t MaxCount; // ebx - int v6; // edi - void *i; // eax - void *Buf; // [esp+1Ch] [ebp-20h] - - v3 = this[1]; - v4 = a3; - MaxCount = *(_DWORD *)(a2 + 4); - if ( a3 >= v3 ) - return -1; - v6 = *this; - if ( MaxCount ) - { - Buf = *(void **)a2; - for ( i = memchr(*(const void **)a2, *(char *)(v6 + a3), MaxCount); i; i = memchr(Buf, *(char *)(v6 + v4), MaxCount) ) - { - if ( v3 == ++v4 ) - return -1; - } - } - return v4; -} - -//----- (00456070) -------------------------------------------------------- -int __thiscall std::string::find_first_not_of(_DWORD *this, char a2, unsigned int a3) -{ - int result; // eax - unsigned int v4; // edx - - result = a3; - v4 = this[1]; - if ( a3 >= v4 ) - return -1; - while ( *(_BYTE *)(*this + result) == a2 ) - { - if ( ++result == v4 ) - return -1; - } - return result; -} - -//----- (004560B0) -------------------------------------------------------- -unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) -{ - if ( a2 >= this[1] ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); - return *this + a2; -} - -//----- (004560E0) -------------------------------------------------------- -int __fastcall std::string::end(_DWORD *a1) -{ - return a1[1] + *a1; -} - -//----- (004560F0) -------------------------------------------------------- -int __fastcall std::string::back(_DWORD *a1) -{ - return *a1 + a1[1] - 1; -} - -//----- (00456100) -------------------------------------------------------- -int __fastcall std::string::cend(_DWORD *a1) -{ - return a1[1] + *a1; -} - -//----- (00456110) -------------------------------------------------------- -size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, size_t a3, unsigned int a4) -{ - unsigned int v4; // ebx - size_t Size; // ebx - _BYTE *Src; // eax - - v4 = this[1]; - if ( a4 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::copy", - a4, - this[1]); - Size = v4 - a4; - if ( Size > a3 ) - Size = a3; - if ( !Size ) - return Size; - Src = (_BYTE *)(*this + a4); - if ( Size != 1 ) - { - memcpy(a2, Src, Size); - return Size; - } - *a2 = *Src; - return 1; -} - -//----- (00456190) -------------------------------------------------------- -int __fastcall std::string::data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004561A0) -------------------------------------------------------- -unsigned int __thiscall std::string::find(int *this, char *Str, int a3) -{ - size_t Size; // eax - - Size = strlen(Str); - return std::string::find(this, Str, a3, Size); -} - -//----- (004561E0) -------------------------------------------------------- -unsigned int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size) -{ - unsigned int v4; // edx - int v6; // ecx - const void *Buf; // eax - int v8; // edi - size_t v9; // edx - size_t MaxCount; // edx - int Val; // ebp - char *v12; // edi - int v14; // ecx - int v15; // [esp+18h] [ebp-24h] - int v16; // [esp+1Ch] [ebp-20h] - - v4 = this[1]; - if ( Size ) - { - v6 = -1; - if ( v4 > a3 ) - { - v16 = *this; - Buf = (const void *)(*this + a3); - v8 = v4 + v16; - v9 = v4 - a3; - v15 = v8; - if ( Size <= v9 ) - { - MaxCount = 1 - Size + v9; - if ( MaxCount ) - { - Val = *Buf2; - while ( 1 ) - { - v12 = (char *)memchr(Buf, Val, MaxCount); - if ( !v12 ) - return -1; - if ( !memcmp(v12, Buf2, Size) ) - break; - Buf = v12 + 1; - if ( Size <= v15 - (int)(v12 + 1) ) - { - MaxCount = v15 - (_DWORD)v12 - Size; - if ( MaxCount ) - continue; - } - return -1; - } - return (unsigned int)&v12[-v16]; - } - } - } - return v6; - } - else - { - v14 = -1; - if ( v4 >= a3 ) - return a3; - return v14; - } -} - -//----- (004562B0) -------------------------------------------------------- -unsigned int __thiscall std::string::find(int *this, int a2, int a3) -{ - return std::string::find(this, *(char **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (004562E0) -------------------------------------------------------- -char *__thiscall std::string::find(int *this, char a2, unsigned int a3) -{ - int v3; // ebx - unsigned int v4; // edx - int v5; // esi - char *v6; // eax - - v3 = -1; - v4 = this[1]; - if ( a3 < v4 ) - { - v5 = *this; - v6 = (char *)memchr((const void *)(*this + a3), a2, v4 - a3); - if ( v6 ) - return &v6[-v5]; - } - return (char *)v3; -} - -//----- (00456330) -------------------------------------------------------- -_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (00456340) -------------------------------------------------------- -int __fastcall std::string::size(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (00456350) -------------------------------------------------------- -int __fastcall std::string::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00456360) -------------------------------------------------------- -int __fastcall std::string::c_str(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00456370) -------------------------------------------------------- -_DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (00456380) -------------------------------------------------------- -bool __fastcall std::string::empty(int a1) -{ - return *(_DWORD *)(a1 + 4) == 0; -} - -//----- (00456390) -------------------------------------------------------- -int __fastcall std::string::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004563A0) -------------------------------------------------------- -int __thiscall std::string::rfind(int *this, char *Str, int a3) -{ - size_t v4; // eax - - v4 = strlen(Str); - return std::string::rfind(this, Str, a3, v4); -} - -//----- (004563E0) -------------------------------------------------------- -int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size) -{ - int v4; // ebx - unsigned int v5; // eax - unsigned int v6; // edx - unsigned int v7; // eax - int v8; // ebp - - v4 = -1; - v5 = this[1]; - v6 = a3; - if ( Size <= v5 ) - { - v7 = v5 - Size; - v8 = *this; - if ( v7 <= a3 ) - v6 = v7; - v4 = v6; - if ( Size ) - { - while ( memcmp((const void *)(v8 + v4), Buf2, Size) ) - { - if ( !v4 ) - return -1; - --v4; - } - } - } - return v4; -} -// 456431: conditional instruction was optimized away because %arg_8.4!=0 - -//----- (00456450) -------------------------------------------------------- -int __thiscall std::string::rfind(int *this, int a2, unsigned int a3) -{ - int v3; // ebx - unsigned int v4; // eax - unsigned int v5; // edx - size_t Size; // esi - unsigned int v7; // eax - const void *Buf2; // edi - int v9; // ebp - - v3 = -1; - v4 = this[1]; - v5 = a3; - Size = *(_DWORD *)(a2 + 4); - if ( Size <= v4 ) - { - v7 = v4 - Size; - Buf2 = *(const void **)a2; - v9 = *this; - if ( v7 <= a3 ) - v5 = v7; - v3 = v5; - if ( Size ) - { - while ( memcmp((const void *)(v9 + v3), Buf2, Size) ) - { - if ( !v3 ) - return -1; - --v3; - } - } - } - return v3; -} -// 4564A2: conditional instruction was optimized away because esi.4!=0 - -//----- (004564C0) -------------------------------------------------------- -int __thiscall std::string::rfind(int *this, char a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_BYTE *)(v5 + result) == a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00456500) -------------------------------------------------------- -int __fastcall std::string::cbegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00456510) -------------------------------------------------------- -int __fastcall std::string::length(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (00456520) -------------------------------------------------------- -_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + a2[1]; - return result; -} - -//----- (00456530) -------------------------------------------------------- -_DWORD *__thiscall std::string::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::substr", - a3, - a2[1]); - v6 = v5 - a3; - *this = this + 2; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, v8); - return this; -} -// 45656B: variable 'v8' is possibly undefined - -//----- (004565A0) -------------------------------------------------------- -int __fastcall std::string::_M_data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004565B0) -------------------------------------------------------- -int __thiscall std::string::compare(int this, char *Str) -{ - size_t v3; // edi - size_t v4; // ebx - size_t Size; // eax - int result; // eax - - v3 = *(_DWORD *)(this + 4); - v4 = strlen(Str); - Size = v3; - if ( v4 <= v3 ) - Size = v4; - if ( !Size ) - return v3 - v4; - result = memcmp(*(const void **)this, Str, Size); - if ( !result ) - return v3 - v4; - return result; -} - -//----- (00456600) -------------------------------------------------------- -int __thiscall std::string::compare(int this, int a2) -{ - size_t v2; // esi - size_t Size; // edx - size_t v4; // ebx - int result; // eax - - v2 = *(_DWORD *)(this + 4); - Size = v2; - v4 = *(_DWORD *)(a2 + 4); - if ( v4 <= v2 ) - Size = *(_DWORD *)(a2 + 4); - if ( !Size ) - return v2 - v4; - result = memcmp(*(const void **)this, *(const void **)a2, Size); - if ( !result ) - return v2 - v4; - return result; -} - -//----- (00456640) -------------------------------------------------------- -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, char *Str) -{ - unsigned int v4; // ebx - unsigned int v5; // ebx - size_t v7; // edi - size_t Size; // eax - int result; // eax - - v4 = this[1]; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v5 = v4 - a2; - if ( v5 > a3 ) - v5 = a3; - v7 = strlen(Str); - Size = v5; - if ( v7 <= v5 ) - Size = v7; - if ( !Size ) - return v5 - v7; - result = memcmp((const void *)(*this + a2), Str, Size); - if ( !result ) - return v5 - v7; - return result; -} - -//----- (004566C0) -------------------------------------------------------- -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, void *Buf2, unsigned int a5) -{ - unsigned int v5; // ebx - unsigned int v6; // ebx - size_t Size; // edx - int result; // eax - - v5 = this[1]; - if ( a2 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v6 = v5 - a2; - if ( v6 > a3 ) - v6 = a3; - Size = a5; - if ( v6 <= a5 ) - Size = v6; - if ( !Size ) - return v6 - a5; - result = memcmp((const void *)(*this + a2), Buf2, Size); - if ( !result ) - return v6 - a5; - return result; -} - -//----- (00456730) -------------------------------------------------------- -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, int a4) -{ - unsigned int v4; // ebx - size_t v5; // ebx - size_t v6; // esi - size_t Size; // edi - int result; // eax - - v4 = this[1]; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v5 = v4 - a2; - if ( v5 > a3 ) - v5 = a3; - v6 = *(_DWORD *)(a4 + 4); - Size = v5; - if ( v6 <= v5 ) - Size = *(_DWORD *)(a4 + 4); - if ( !Size ) - return v5 - v6; - result = memcmp((const void *)(*this + a2), *(const void **)a4, Size); - if ( !result ) - return v5 - v6; - return result; -} - -//----- (004567A0) -------------------------------------------------------- -int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) -{ - unsigned int v6; // ebx - size_t v7; // edi - unsigned int v8; // eax - size_t v9; // ebx - size_t v10; // eax - size_t Size; // eax - int result; // eax - - v6 = this[1]; - v7 = a6; - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - v6); - v8 = a4[1]; - if ( a5 > v8 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a5, - a4[1]); - v9 = v6 - a2; - if ( v9 > a3 ) - v9 = a3; - v10 = v8 - a5; - if ( v10 <= a6 ) - v7 = v10; - Size = v9; - if ( v7 <= v9 ) - Size = v7; - if ( !Size ) - return v9 - v7; - result = memcmp((const void *)(*this + a2), (const void *)(*a4 + a5), Size); - if ( !result ) - return v9 - v7; - return result; -} - -//----- (00456850) -------------------------------------------------------- -_DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + a2[1]; - return result; -} - -//----- (00456860) -------------------------------------------------------- -unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int a2, const char *a3) -{ - unsigned int v3; // edx - unsigned int result; // eax - - v3 = this[1]; - result = a2; - if ( a2 > v3 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); - return result; -} - -//----- (00456890) -------------------------------------------------------- -unsigned int __thiscall std::string::_M_limit(_DWORD *this, int a2, unsigned int a3) -{ - unsigned int result; // eax - - result = this[1] - a2; - if ( result > a3 ) - return a3; - return result; -} - -//----- (004568B0) -------------------------------------------------------- -int __fastcall std::string::capacity(_DWORD *a1) -{ - if ( (_DWORD *)*a1 == a1 + 2 ) - return 15; - else - return a1[2]; -} - -//----- (004568D0) -------------------------------------------------------- -int std::string::max_size() -{ - return 0x3FFFFFFF; -} - -//----- (004568E0) -------------------------------------------------------- -int __thiscall std::string::operator[](_DWORD *this, int a2) -{ - return a2 + *this; -} - -//----- (004568F0) -------------------------------------------------------- -bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) -{ - bool result; // al - - result = 1; - if ( *this <= a2 ) - return *this + 2 * this[1] < a2; - return result; -} - -//----- (00456910) -------------------------------------------------------- -bool __fastcall std::wstring::_M_is_local(_DWORD *a1) -{ - return a1 + 2 == (_DWORD *)*a1; -} - -//----- (00456920) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_last_of(this, String, a3, v4); -} - -//----- (00456960) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - int v4; // eax - unsigned int v5; // ebx - unsigned int v6; // eax - _WORD *v7; // eax - int v8; // edx - - v4 = this[1]; - v5 = a3; - if ( !v4 || !a4 ) - return -1; - v6 = v4 - 1; - if ( v6 <= a3 ) - v5 = v6; - while ( !a2 ) - { -LABEL_9: - if ( v5-- == 0 ) - return v5; - } - v7 = a2; - v8 = a4; - while ( *(_WORD *)(*this + 2 * v5) != *v7 ) - { - ++v7; - if ( !--v8 ) - goto LABEL_9; - } - return v5; -} - -//----- (004569D0) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, unsigned int a3) -{ - return std::wstring::find_last_of(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (00456A00) -------------------------------------------------------- -int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( a3 <= v4 - 1 ) - result = a3; - do - { - if ( a2 == *(_WORD *)(v5 + 2 * result) ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00456A40) -------------------------------------------------------- -int __fastcall std::wstring::_M_local_data(int a1) -{ - return a1 + 8; -} - -//----- (00456A50) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_first_of(this, String, a3, v4); -} - -//----- (00456A90) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // ebp - unsigned int v5; // ebx - int v6; // edx - _WORD *v7; // eax - - if ( !a4 ) - return -1; - v4 = this[1]; - v5 = a3; - if ( v4 <= a3 ) - return -1; - while ( !a2 ) - { -LABEL_7: - if ( v4 <= ++v5 ) - return -1; - } - v6 = a4; - v7 = a2; - while ( *(_WORD *)(*this + 2 * v5) != *v7 ) - { - ++v7; - if ( !--v6 ) - goto LABEL_7; - } - return v5; -} - -//----- (00456AF0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, unsigned int a3) -{ - return std::wstring::find_first_of(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (00456B20) -------------------------------------------------------- -int __thiscall std::wstring::find_first_of(_DWORD *this, __int16 a2, unsigned int a3) -{ - return std::wstring::find(this, a2, a3); -} - -//----- (00456B30) -------------------------------------------------------- -void *__thiscall std::wstring::get_allocator(void *this, int a2) -{ - return this; -} - -//----- (00456B40) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) -{ - unsigned int result; // eax - - result = a2 + 0x1FFFFFFF - this[1]; - if ( result < a3 ) - std::__throw_length_error(a4); - return result; -} - -//----- (00456B70) -------------------------------------------------------- -int __fastcall std::wstring::_M_get_allocator(int a1) -{ - return a1; -} - -//----- (00456B80) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3) -{ - int v4; // eax - - v4 = wcslen(String); - return std::wstring::find_last_not_of(this, String, a3, v4); -} - -//----- (00456BC0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, _WORD *a2, unsigned int a3, int a4) -{ - int v4; // eax - unsigned int v5; // ebx - unsigned int v6; // eax - _WORD *v7; // eax - int v8; // edx - - v4 = this[1]; - v5 = -1; - if ( v4 ) - { - v6 = v4 - 1; - v5 = a3; - if ( v6 <= a3 ) - v5 = v6; - while ( a4 && a2 ) - { - v7 = a2; - v8 = a4; - while ( *(_WORD *)(*this + 2 * v5) != *v7 ) - { - ++v7; - if ( !--v8 ) - return v5; - } - if ( v5-- == 0 ) - return v5; - } - } - return v5; -} - -//----- (00456C30) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, unsigned int a3) -{ - return std::wstring::find_last_not_of(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (00456C60) -------------------------------------------------------- -int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_WORD *)(v5 + 2 * result) != a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (00456CA0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, wchar_t *String, unsigned int a3) -{ - unsigned int v4; // ebx - size_t v5; // eax - unsigned int v6; // esi - int v7; // ebp - size_t v8; // edi - __int16 v9; // cx - wchar_t *v10; // eax - size_t v11; // edx - - v4 = a3; - v5 = wcslen(String); - v6 = this[1]; - if ( a3 < v6 ) - { - v7 = *this; - v8 = v5; - if ( !v5 ) - return v4; - v9 = *(_WORD *)(v7 + 2 * a3); - if ( !String ) - return v4; - while ( 1 ) - { - v10 = String; - v11 = v8; - while ( v9 != *v10 ) - { - ++v10; - if ( !--v11 ) - return v4; - } - if ( ++v4 == v6 ) - break; - v9 = *(_WORD *)(v7 + 2 * v4); - } - } - return -1; -} - -//----- (00456D30) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, _WORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // esi - int v6; // edi - __int16 v7; // cx - _WORD *v8; // eax - int v9; // edx - - v4 = a3; - v5 = this[1]; - if ( a3 < v5 ) - { - v6 = *this; - if ( !a4 ) - return v4; - v7 = *(_WORD *)(*this + 2 * a3); - if ( !a2 ) - return v4; - while ( 1 ) - { - v8 = a2; - v9 = a4; - while ( v7 != *v8 ) - { - ++v8; - if ( !--v9 ) - return v4; - } - if ( ++v4 == v5 ) - break; - v7 = *(_WORD *)(v6 + 2 * v4); - } - } - return -1; -} - -//----- (00456DB0) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(int *this, _DWORD *a2, unsigned int a3) -{ - unsigned int v3; // esi - unsigned int v4; // ebx - int v5; // edi - __int16 v6; // cx - _WORD *v7; // eax - int v8; // edx - - v3 = this[1]; - v4 = a3; - if ( a3 < v3 ) - { - v5 = *this; - if ( !a2[1] ) - return v4; - v6 = *(_WORD *)(*this + 2 * a3); - if ( !*a2 ) - return v4; - while ( 1 ) - { - v7 = (_WORD *)*a2; - v8 = a2[1]; - while ( v6 != *v7 ) - { - ++v7; - if ( !--v8 ) - return v4; - } - if ( ++v4 == v3 ) - break; - v6 = *(_WORD *)(v5 + 2 * v4); - } - } - return -1; -} - -//----- (00456E30) -------------------------------------------------------- -int __thiscall std::wstring::find_first_not_of(_DWORD *this, __int16 a2, unsigned int a3) -{ - int result; // eax - unsigned int v4; // edx - - result = a3; - v4 = this[1]; - if ( a3 >= v4 ) - return -1; - while ( *(_WORD *)(*this + 2 * result) == a2 ) - { - if ( ++result == v4 ) - return -1; - } - return result; -} - -//----- (00456E80) -------------------------------------------------------- -unsigned int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) -{ - if ( a2 >= this[1] ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); - return *this + 2 * a2; -} - -//----- (00456EB0) -------------------------------------------------------- -int __fastcall std::wstring::end(_DWORD *a1) -{ - return *a1 + 2 * a1[1]; -} - -//----- (00456EC0) -------------------------------------------------------- -int __fastcall std::wstring::back(_DWORD *a1) -{ - return *a1 + 2 * a1[1] - 2; -} - -//----- (00456ED0) -------------------------------------------------------- -int __fastcall std::wstring::cend(_DWORD *a1) -{ - return *a1 + 2 * a1[1]; -} - -//----- (00456EE0) -------------------------------------------------------- -int __thiscall std::wstring::copy(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // ebx - _WORD *Src; // eax - - v4 = this[1]; - if ( a4 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::copy", - a4, - this[1]); - v5 = v4 - a4; - if ( v5 > a3 ) - v5 = a3; - if ( !v5 ) - return v5; - Src = (_WORD *)(*this + 2 * a4); - if ( v5 != 1 ) - { - memcpy(a2, Src, 2 * v5); - return v5; - } - *a2 = *Src; - return 1; -} - -//----- (00456F60) -------------------------------------------------------- -int __fastcall std::wstring::data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00456F70) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find(int *this, wchar_t *String, int a3) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::find(this, String, a3, v4); -} - -//----- (00456FB0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find(int *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // ebx - _WORD *v5; // eax - unsigned int v6; // edx - int v8; // edx - __int16 v9; // bx - unsigned int v10; // edx - int v11; // ecx - int v12; // [esp+0h] [ebp-18h] - int v13; // [esp+4h] [ebp-14h] - - v4 = this[1]; - if ( a4 ) - { - if ( v4 > a3 && (v13 = *this, v5 = (_WORD *)(*this + 2 * a3), a4 <= v4 - a3) && (v6 = 1 - a4 + v4 - a3, v5) && v6 ) - { - v12 = v13 + 2 * v4; -LABEL_7: - while ( *a2 != *v5 ) - { - ++v5; - if ( !--v6 ) - return -1; - } - if ( a2 != v5 ) - { - v8 = 0; - while ( a4 - 1 != v8 ) - { - v9 = v5[++v8]; - if ( v9 != a2[v8] ) - { - v10 = (v12 - (int)++v5) >> 1; - if ( a4 <= v10 ) - { - v6 = 1 - a4 + v10; - if ( v6 ) - goto LABEL_7; - } - return -1; - } - } - } - return ((int)v5 - v13) >> 1; - } - else - { - return -1; - } - } - else - { - v11 = -1; - if ( v4 >= a3 ) - return a3; - return v11; - } -} - -//----- (004570B0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::find(int *this, int a2, unsigned int a3) -{ - return std::wstring::find(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (004570E0) -------------------------------------------------------- -int __thiscall std::wstring::find(_DWORD *this, __int16 a2, unsigned int a3) -{ - unsigned int v3; // eax - int v4; // eax - _WORD *v5; // edx - - v3 = this[1]; - if ( a3 >= v3 ) - return -1; - v4 = v3 - a3; - v5 = (_WORD *)(*this + 2 * a3); - if ( !v5 ) - return -1; - while ( *v5 != a2 ) - { - ++v5; - if ( !--v4 ) - return -1; - } - return ((int)v5 - *this) >> 1; -} - -//----- (00457140) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (00457150) -------------------------------------------------------- -int __fastcall std::wstring::size(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (00457160) -------------------------------------------------------- -int __fastcall std::wstring::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00457170) -------------------------------------------------------- -int __fastcall std::wstring::c_str(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00457180) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (00457190) -------------------------------------------------------- -bool __fastcall std::wstring::empty(int a1) -{ - return *(_DWORD *)(a1 + 4) == 0; -} - -//----- (004571A0) -------------------------------------------------------- -int __fastcall std::wstring::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004571B0) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, wchar_t *String, int a3) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::rfind(this, String, a3, v4); -} - -//----- (004571F0) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, _WORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // eax - unsigned int v6; // eax - _WORD *v7; // esi - _WORD *v8; // eax - _WORD *v9; // edx - unsigned int v10; // ecx - - v4 = -1; - v5 = this[1]; - if ( a4 <= v5 ) - { - v6 = v5 - a4; - v4 = a3; - if ( v6 <= a3 ) - v4 = v6; - v7 = (_WORD *)(*this + 2 * v4); - if ( a4 ) - { - while ( 1 ) - { - v8 = v7; - if ( v7 == a2 ) - break; - if ( (v7 != 0) == (a2 != 0) ) - { - v9 = a2; - v10 = a4; - while ( *v8 == *v9 ) - { - ++v8; - ++v9; - if ( !--v10 ) - return v4; - } - } - --v7; - if ( !v4 ) - return -1; - --v4; - } - } - } - return v4; -} -// 457261: conditional instruction was optimized away because %arg_8.4!=0 - -//----- (00457280) -------------------------------------------------------- -int __thiscall std::wstring::rfind(_DWORD *this, int a2, unsigned int a3) -{ - return std::wstring::rfind(this, *(_WORD **)a2, a3, *(_DWORD *)(a2 + 4)); -} - -//----- (004572B0) -------------------------------------------------------- -int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3) -{ - int result; // eax - int v4; // ebx - int v5; // ecx - - result = -1; - v4 = this[1]; - if ( v4 ) - { - result = v4 - 1; - v5 = *this; - if ( v4 - 1 > a3 ) - result = a3; - do - { - if ( *(_WORD *)(v5 + 2 * result) == a2 ) - break; - } - while ( result-- != 0 ); - } - return result; -} - -//----- (004572F0) -------------------------------------------------------- -int __fastcall std::wstring::cbegin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00457300) -------------------------------------------------------- -int __fastcall std::wstring::length(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (00457310) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * a2[1]; - return result; -} - -//----- (00457330) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::substr(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::substr", - a3, - a2[1]); - v6 = v5 - a3; - *this = this + 2; - if ( v6 > a4 ) - v6 = a4; - LOBYTE(v8) = 0; - std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); - return this; -} -// 45736D: variable 'v8' is possibly undefined - -//----- (004573A0) -------------------------------------------------------- -int __fastcall std::wstring::_M_data(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004573B0) -------------------------------------------------------- -int __thiscall std::wstring::compare(wchar_t **this, wchar_t *String) -{ - wchar_t *v3; // esi - wchar_t *v4; // ebx - size_t v5; // edx - wchar_t *v6; // eax - wchar_t *v7; // edx - wchar_t *v9; // [esp+18h] [ebp-24h] - size_t v10; // [esp+1Ch] [ebp-20h] - - v3 = this[1]; - v4 = String; - v5 = wcslen(String); - v10 = v5; - v6 = v3; - if ( v5 <= (unsigned int)v3 ) - v6 = (wchar_t *)v5; - v9 = v6; - if ( !v6 ) - return (int)v3 - v10; - v7 = *this; - if ( String == *this ) - return (int)v3 - v10; - if ( (v7 != 0) != (String != 0) ) - return String == 0 ? 1 : -1; - while ( *v7 == *v4 ) - { - ++v7; - ++v4; - v9 = (wchar_t *)((char *)v9 - 1); - if ( !v9 ) - return (int)v3 - v10; - } - return *v7 < *v4 ? -1 : 1; -} - -//----- (00457450) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, int a2) -{ - unsigned int v2; // ebx - unsigned int v3; // esi - _WORD *v4; // eax - _WORD *v5; // ecx - unsigned int v7; // [esp+0h] [ebp-18h] - unsigned int v8; // [esp+4h] [ebp-14h] - - v2 = this[1]; - v8 = v2; - v3 = *(_DWORD *)(a2 + 4); - if ( v3 <= v2 ) - v2 = *(_DWORD *)(a2 + 4); - v7 = v2; - if ( !v2 ) - return v8 - v3; - v4 = *(_WORD **)a2; - v5 = (_WORD *)*this; - if ( *(_WORD **)a2 == v5 ) - return v8 - v3; - if ( (v5 != 0) != (v4 != 0) ) - return v4 == 0 ? 1 : -1; - while ( *v5 == *v4 ) - { - ++v5; - ++v4; - if ( !--v7 ) - return v8 - v3; - } - return *v5 < *v4 ? -1 : 1; -} - -//----- (004574F0) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) -{ - unsigned int v4; // ebx - unsigned int v5; // eax - wchar_t *v6; // esi - unsigned int v7; // ebx - unsigned int v9; // ebx - size_t v10; // ecx - size_t v11; // eax - wchar_t *v12; // edx - unsigned int v14; // [esp+1Ch] [ebp-20h] - - v4 = this[1]; - v5 = a3; - v6 = String; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v7 = v4 - a2; - if ( v7 <= a3 ) - v5 = v7; - v9 = v5; - v14 = v5; - v10 = wcslen(String); - v11 = v9; - if ( v10 <= v9 ) - v11 = v10; - if ( !v11 ) - return v14 - v10; - v12 = (wchar_t *)(*this + 2 * a2); - if ( v12 == String ) - return v14 - v10; - if ( (v12 != 0) != (String != 0) ) - return String == 0 ? 1 : -1; - while ( *v12 == *v6 ) - { - ++v12; - ++v6; - if ( !--v11 ) - return v14 - v10; - } - return *v12 < *v6 ? -1 : 1; -} - -//----- (004575D0) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, _WORD *a4, unsigned int a5) -{ - unsigned int v6; // eax - unsigned int v7; // edi - _WORD *v8; // ecx - unsigned int v9; // eax - unsigned int v10; // ebx - unsigned int v11; // edi - _WORD *v12; // edx - unsigned int v14; // [esp+1Ch] [ebp-20h] - - v6 = this[1]; - v7 = a3; - v8 = a4; - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - v6); - v9 = v6 - a2; - v10 = a5; - if ( v9 <= a3 ) - v7 = v9; - if ( v7 <= a5 ) - v10 = v7; - v14 = v7; - v11 = v10; - if ( !v10 ) - return v14 - a5; - v12 = (_WORD *)(*this + 2 * a2); - if ( v12 == a4 ) - return v14 - a5; - if ( (v12 != 0) != (a4 != 0) ) - return a4 == 0 ? 1 : -1; - while ( *v12 == *v8 ) - { - ++v12; - ++v8; - if ( !--v11 ) - return v14 - a5; - } - return *v12 < *v8 ? -1 : 1; -} - -//----- (004576A0) -------------------------------------------------------- -int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - unsigned int v5; // ebx - unsigned int v6; // eax - unsigned int v7; // esi - unsigned int v8; // eax - _WORD *v9; // edx - _WORD *v10; // ecx - unsigned int v12; // [esp+18h] [ebp-24h] - - v4 = this[1]; - v5 = a3; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - v4); - v6 = v4 - a2; - v7 = *(_DWORD *)(a4 + 4); - if ( v6 <= a3 ) - v5 = v6; - v8 = v5; - if ( v7 <= v5 ) - v8 = *(_DWORD *)(a4 + 4); - v12 = v8; - if ( !v8 ) - return v5 - v7; - v9 = *(_WORD **)a4; - v10 = (_WORD *)(*this + 2 * a2); - if ( v10 == *(_WORD **)a4 ) - return v5 - v7; - if ( (v10 != 0) != (v9 != 0) ) - return v9 == 0 ? 1 : -1; - while ( *v10 == *v9 ) - { - ++v10; - ++v9; - if ( !--v12 ) - return v5 - v7; - } - return *v10 < *v9 ? -1 : 1; -} - -//----- (00457770) -------------------------------------------------------- -int __thiscall std::wstring::compare( - _DWORD *this, - unsigned int a2, - unsigned int a3, - _DWORD *a4, - unsigned int a5, - unsigned int a6) -{ - unsigned int v6; // eax - unsigned int v7; // edi - unsigned int v8; // edx - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // edx - unsigned int v12; // ebx - _WORD *v13; // esi - _WORD *i; // ecx - - v6 = this[1]; - v7 = a6; - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a2, - this[1]); - v8 = a4[1]; - if ( a5 > v8 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::compare", - a5, - a4[1]); - v9 = v6 - a2; - if ( v9 > a3 ) - v9 = a3; - v10 = v8 - a5; - if ( v10 <= a6 ) - v7 = v10; - v11 = v9; - if ( v7 <= v9 ) - v11 = v7; - if ( !v11 ) - return v9 - v7; - v12 = *this + 2 * a2; - v13 = (_WORD *)(*a4 + 2 * a5); - if ( v13 == (_WORD *)v12 ) - return v9 - v7; - if ( (v12 != 0) != (v13 != 0) ) - return v13 == 0 ? 1 : -1; - for ( i = (_WORD *)(*this + 2 * a2); *i == *v13; ++i ) - { - ++v13; - if ( !--v11 ) - return v9 - v7; - } - return *i < *v13 ? -1 : 1; -} - -//----- (00457880) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * a2[1]; - return result; -} - -//----- (004578A0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) -{ - unsigned int v3; // edx - unsigned int result; // eax - - v3 = this[1]; - result = a2; - if ( a2 > v3 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); - return result; -} - -//----- (004578D0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) -{ - unsigned int result; // eax - - result = this[1] - a2; - if ( result > a3 ) - return a3; - return result; -} - -//----- (004578F0) -------------------------------------------------------- -int __fastcall std::wstring::capacity(_DWORD *a1) -{ - if ( (_DWORD *)*a1 == a1 + 2 ) - return 7; - else - return a1[2]; -} - -//----- (00457910) -------------------------------------------------------- -int std::wstring::max_size() -{ - return 0x1FFFFFFF; -} - -//----- (00457920) -------------------------------------------------------- -int __thiscall std::wstring::operator[](_DWORD *this, int a2) -{ - return *this + 2 * a2; -} - -//----- (00457930) -------------------------------------------------------- -int __thiscall std::stringbuf::str(int this, int a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_BYTE *)(this + 8) = 0; - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - v3 = *(_DWORD *)(a2 + 20); - if ( v3 ) - { - v4 = *(_DWORD *)(a2 + 12); - v5 = *(_DWORD *)(a2 + 16); - if ( v3 > v4 ) - std::string::_M_replace((unsigned int **)this, 0, 0, *(char **)(a2 + 16), v3 - v5); - else - std::string::_M_replace((unsigned int **)this, 0, 0, *(char **)(a2 + 16), v4 - v5); - } - else - { - std::string::_M_assign(this, a2 + 36); - } - return this; -} - -//----- (00457A50) -------------------------------------------------------- -int __thiscall std::wstringbuf::str(int this, _DWORD *a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_WORD *)(this + 8) = 0; - v3 = a2[5]; - if ( v3 ) - { - v4 = a2[3]; - v5 = a2[4]; - if ( v3 > v4 ) - std::wstring::_M_replace((unsigned int **)this, 0, 0, (char *)a2[4], (int)(v3 - v5) >> 1); - else - std::wstring::_M_replace((unsigned int **)this, 0, 0, (char *)a2[4], (int)(v4 - v5) >> 1); - } - else - { - std::wstring::_M_assign(this, (int)(a2 + 9)); - } - return this; -} - -//----- (00457B80) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_BYTE *)(this + 8) = 0; - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - v3 = *(_DWORD *)(a2 + 32); - if ( v3 ) - { - v4 = *(_DWORD *)(a2 + 24); - v5 = *(_DWORD *)(a2 + 28); - if ( v3 > v4 ) - std::string::_M_replace((unsigned int **)this, 0, 0, *(char **)(a2 + 28), v3 - v5); - else - std::string::_M_replace((unsigned int **)this, 0, 0, *(char **)(a2 + 28), v4 - v5); - } - else - { - std::string::_M_assign(this, a2 + 48); - } - return this; -} - -//----- (00457CA0) -------------------------------------------------------- -int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) -{ - return a1 + 12; -} - -//----- (00457CB0) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::str( - int this, - _DWORD *a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_WORD *)(this + 8) = 0; - v3 = a2[8]; - if ( v3 ) - { - v4 = a2[6]; - v5 = a2[7]; - if ( v3 > v4 ) - std::wstring::_M_replace((unsigned int **)this, 0, 0, (char *)a2[7], (int)(v3 - v5) >> 1); - else - std::wstring::_M_replace((unsigned int **)this, 0, 0, (char *)a2[7], (int)(v4 - v5) >> 1); - } - else - { - std::wstring::_M_assign(this, (int)(a2 + 12)); - } - return this; -} - -//----- (00457DE0) -------------------------------------------------------- -int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) -{ - return a1 + 12; -} - -//----- (00457DF0) -------------------------------------------------------- -int __thiscall std::istringstream::str(int this, int a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_BYTE *)(this + 8) = 0; - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - v3 = *(_DWORD *)(a2 + 28); - if ( v3 ) - { - v4 = *(_DWORD *)(a2 + 20); - v5 = *(_DWORD *)(a2 + 24); - if ( v3 > v4 ) - std::string::_M_replace((unsigned int **)this, 0, 0, *(char **)(a2 + 24), v3 - v5); - else - std::string::_M_replace((unsigned int **)this, 0, 0, *(char **)(a2 + 24), v4 - v5); - } - else - { - std::string::_M_assign(this, a2 + 44); - } - return this; -} - -//----- (00457F10) -------------------------------------------------------- -int __fastcall std::istringstream::rdbuf(int a1) -{ - return a1 + 8; -} - -//----- (00457F20) -------------------------------------------------------- -int __thiscall std::wistringstream::str(int this, _DWORD *a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_WORD *)(this + 8) = 0; - v3 = a2[7]; - if ( v3 ) - { - v4 = a2[5]; - v5 = a2[6]; - if ( v3 > v4 ) - std::wstring::_M_replace((unsigned int **)this, 0, 0, (char *)a2[6], (int)(v3 - v5) >> 1); - else - std::wstring::_M_replace((unsigned int **)this, 0, 0, (char *)a2[6], (int)(v4 - v5) >> 1); - } - else - { - std::wstring::_M_assign(this, (int)(a2 + 11)); - } - return this; -} - -//----- (00458050) -------------------------------------------------------- -int __fastcall std::wistringstream::rdbuf(int a1) -{ - return a1 + 8; -} - -//----- (00458060) -------------------------------------------------------- -int __thiscall std::ostringstream::str(int this, int a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_BYTE *)(this + 8) = 0; - *(_DWORD *)this = this + 8; - *(_DWORD *)(this + 4) = 0; - v3 = *(_DWORD *)(a2 + 24); - if ( v3 ) - { - v4 = *(_DWORD *)(a2 + 16); - v5 = *(_DWORD *)(a2 + 20); - if ( v3 > v4 ) - std::string::_M_replace((unsigned int **)this, 0, 0, *(char **)(a2 + 20), v3 - v5); - else - std::string::_M_replace((unsigned int **)this, 0, 0, *(char **)(a2 + 20), v4 - v5); - } - else - { - std::string::_M_assign(this, a2 + 40); - } - return this; -} - -//----- (00458180) -------------------------------------------------------- -int __fastcall std::ostringstream::rdbuf(int a1) -{ - return a1 + 4; -} - -//----- (00458190) -------------------------------------------------------- -int __thiscall std::wostringstream::str(int this, _DWORD *a2) -{ - unsigned int v3; // eax - unsigned int v4; // edx - int v5; // ecx - - *(_DWORD *)(this + 4) = 0; - *(_DWORD *)this = this + 8; - *(_WORD *)(this + 8) = 0; - v3 = a2[6]; - if ( v3 ) - { - v4 = a2[4]; - v5 = a2[5]; - if ( v3 > v4 ) - std::wstring::_M_replace((unsigned int **)this, 0, 0, (char *)a2[5], (int)(v3 - v5) >> 1); - else - std::wstring::_M_replace((unsigned int **)this, 0, 0, (char *)a2[5], (int)(v4 - v5) >> 1); - } - else - { - std::wstring::_M_assign(this, (int)(a2 + 10)); - } - return this; -} - -//----- (004582C0) -------------------------------------------------------- -int __fastcall std::wostringstream::rdbuf(int a1) -{ - return a1 + 4; -} - -//----- (004582D0) -------------------------------------------------------- -int __stdcall std::collate::_M_compare(char *String1, char *String2) -{ - int v2; // eax - - v2 = strcoll(String1, String2); - return (v2 >> 30) | (v2 != 0); -} - -//----- (00458300) -------------------------------------------------------- -int __stdcall std::collate::do_compare(_BYTE *a1, int a2, _BYTE *a3, int a4) -{ - int i; // eax - char *v5; // eax - int v7; // [esp+8h] [ebp-90h] - int v8; // [esp+8h] [ebp-90h] - char *v9; // [esp+14h] [ebp-84h] - int v10; // [esp+1Ch] [ebp-7Ch] - char *v11; // [esp+20h] [ebp-78h] - char *v12; // [esp+24h] [ebp-74h] - char *Str; // [esp+28h] [ebp-70h] - char *Stra; // [esp+28h] [ebp-70h] - void *v15[2]; // [esp+60h] [ebp-38h] BYREF - char v16[16]; // [esp+68h] [ebp-30h] BYREF - void *Block[2]; // [esp+78h] [ebp-20h] BYREF - char v18[20]; // [esp+80h] [ebp-18h] BYREF - - LOBYTE(v7) = 0; - v15[0] = v16; - std::string::_M_construct(v15, a1, a2, v7); - Block[0] = v18; - LOBYTE(v8) = 0; - std::string::_M_construct(Block, a3, a4, v8); - Str = (char *)v15[0]; - v9 = (char *)v15[1] + (unsigned int)v15[0]; - v12 = (char *)Block[0]; - v11 = (char *)Block[1] + (unsigned int)Block[0]; - for ( i = std::collate::_M_compare((char *)v15[0], (char *)Block[0]); - ; - i = std::collate::_M_compare(Str, v5 + 1) ) - { - v10 = i; - if ( i ) - break; - Stra = &Str[strlen(Str)]; - v5 = &v12[strlen(v12)]; - if ( v9 == Stra ) - { - if ( v11 == v5 ) - break; - if ( v9 == Stra ) - { - v10 = -1; - break; - } - } - if ( v11 == v5 ) - { - v10 = 1; - break; - } - v12 = v5 + 1; - Str = Stra + 1; - } - if ( Block[0] != v18 ) - operator delete(Block[0]); - if ( v15[0] != v16 ) - operator delete(v15[0]); - return v10; -} -// 458355: variable 'v7' is possibly undefined -// 45837F: variable 'v8' is possibly undefined - -//----- (00458490) -------------------------------------------------------- -size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) -{ - return strxfrm(Destination, Source, MaxCount); -} - -//----- (004584C0) -------------------------------------------------------- -_DWORD *__thiscall std::collate::do_transform(_DWORD *this, int a2, _BYTE *a3, int a4) -{ - unsigned int i; // eax - char *v5; // eax - int v6; // eax - unsigned int v7; // edx - int v9; // [esp+8h] [ebp-90h] - _DWORD *v10; // [esp+1Ch] [ebp-7Ch] - char *v11; // [esp+20h] [ebp-78h] - size_t v12; // [esp+24h] [ebp-74h] - unsigned int v13; // [esp+28h] [ebp-70h] - char *Block; // [esp+2Ch] [ebp-6Ch] - unsigned int v15; // [esp+30h] [ebp-68h] - char *Str; // [esp+34h] [ebp-64h] - void *v18[2]; // [esp+78h] [ebp-20h] BYREF - char v19[20]; // [esp+80h] [ebp-18h] BYREF - - this[1] = 0; - *this = this + 2; - *((_BYTE *)this + 8) = 0; - v18[0] = v19; - LOBYTE(v9) = 0; - v10 = this + 2; - std::string::_M_construct(v18, a3, a4, v9); - Str = (char *)v18[0]; - v11 = (char *)v18[1] + (unsigned int)v18[0]; - v15 = 2 * (a4 - (_DWORD)a3); - Block = (char *)operator new[](v15); - for ( i = std::collate::_M_transform(Block, Str, v15); ; i = std::collate::_M_transform(Block, Str, v15) ) - { - if ( v15 <= i ) - { - v15 = i + 1; - operator delete[](Block); - Block = (char *)operator new[](v15); - i = std::collate::_M_transform(Block, Str, v15); - } - if ( i > 0x3FFFFFFF - this[1] ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(this, Block, i); - v5 = &Str[strlen(Str)]; - if ( v11 == v5 ) - break; - Str = v5 + 1; - v12 = this[1]; - v13 = v12 + 1; - v6 = *this; - if ( v10 == (_DWORD *)*this ) - v7 = 15; - else - v7 = this[2]; - if ( v13 > v7 ) - { - std::string::_M_mutate((int)this, v12, 0, 0, 1u); - v6 = *this; - } - *(_BYTE *)(v6 + v12) = 0; - this[1] = v13; - *(_BYTE *)(*this + v12 + 1) = 0; - } - operator delete[](Block); - if ( v18[0] != v19 ) - operator delete(v18[0]); - return this; -} -// 45852B: variable 'v9' is possibly undefined - -//----- (00458770) -------------------------------------------------------- -int __thiscall std::collate::hash(void *this, char *a2, char *a3) -{ - char *v3; // edx - int (__stdcall *v4)(char *, char *); // eax - int result; // eax - int v6; // ecx - - v3 = a2; - v4 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); - if ( v4 != std::collate::do_hash ) - return v4(a2, a3); - result = 0; - if ( a2 < a3 ) - { - do - { - v6 = *v3++; - result = v6 + __ROL4__(result, 7); - } - while ( a3 != v3 ); - } - return result; -} - -//----- (004587C0) -------------------------------------------------------- -int __fastcall std::collate::compare(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (004587D0) -------------------------------------------------------- -int __stdcall std::collate::do_hash(char *a1, char *a2) -{ - char *v2; // edx - int result; // eax - int v4; // ecx - - v2 = a1; - result = 0; - if ( a1 < a2 ) - { - do - { - v4 = *v2++; - result = v4 + __ROL4__(result, 7); - } - while ( a2 != v2 ); - } - return result; -} - -//----- (00458800) -------------------------------------------------------- -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) -{ - (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); - return this; -} - -//----- (00458830) -------------------------------------------------------- -int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) -{ - int v2; // eax - - v2 = wcscoll(String1, String2); - return (v2 >> 30) | (v2 != 0); -} - -//----- (00458860) -------------------------------------------------------- -int __stdcall std::collate::do_compare(_WORD *a1, int a2, _WORD *a3, int a4) -{ - int i; // eax - wchar_t *v5; // eax - int v7; // [esp+8h] [ebp-90h] - int v8; // [esp+8h] [ebp-90h] - wchar_t *v9; // [esp+14h] [ebp-84h] - int v10; // [esp+1Ch] [ebp-7Ch] - char *v11; // [esp+20h] [ebp-78h] - wchar_t *v12; // [esp+24h] [ebp-74h] - wchar_t *String; // [esp+28h] [ebp-70h] - wchar_t *Stringa; // [esp+28h] [ebp-70h] - void *v15[2]; // [esp+60h] [ebp-38h] BYREF - char v16[16]; // [esp+68h] [ebp-30h] BYREF - void *Block[2]; // [esp+78h] [ebp-20h] BYREF - char v18[20]; // [esp+80h] [ebp-18h] BYREF - - LOBYTE(v7) = 0; - v15[0] = v16; - std::wstring::_M_construct(v15, a1, a2, v7); - Block[0] = v18; - LOBYTE(v8) = 0; - std::wstring::_M_construct(Block, a3, a4, v8); - String = (wchar_t *)v15[0]; - v9 = (wchar_t *)((char *)v15[0] + 2 * (int)v15[1]); - v12 = (wchar_t *)Block[0]; - v11 = (char *)Block[0] + 2 * (int)Block[1]; - for ( i = std::collate::_M_compare((wchar_t *)v15[0], (wchar_t *)Block[0]); - ; - i = std::collate::_M_compare(String, v5 + 1) ) - { - v10 = i; - if ( i ) - break; - Stringa = &String[wcslen(String)]; - v5 = &v12[wcslen(v12)]; - if ( v9 == Stringa ) - { - if ( v11 == (char *)v5 ) - break; - if ( v9 == Stringa ) - { - v10 = -1; - break; - } - } - if ( v11 == (char *)v5 ) - { - v10 = 1; - break; - } - v12 = v5 + 1; - String = Stringa + 1; - } - if ( Block[0] != v18 ) - operator delete(Block[0]); - if ( v15[0] != v16 ) - operator delete(v15[0]); - return v10; -} -// 4588B5: variable 'v7' is possibly undefined -// 4588DF: variable 'v8' is possibly undefined - -//----- (00458A00) -------------------------------------------------------- -size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) -{ - return wcsxfrm(Destination, Source, MaxCount); -} - -//----- (00458A30) -------------------------------------------------------- -_DWORD *__thiscall std::collate::do_transform(_DWORD *this, int a2, _WORD *a3, int a4) -{ - unsigned int i; // eax - wchar_t *v5; // eax - int v6; // eax - unsigned int v7; // edx - int v9; // [esp+8h] [ebp-90h] - _DWORD *v10; // [esp+1Ch] [ebp-7Ch] - char *v11; // [esp+20h] [ebp-78h] - int v12; // [esp+24h] [ebp-74h] - unsigned int v13; // [esp+28h] [ebp-70h] - wchar_t *Block; // [esp+2Ch] [ebp-6Ch] - wchar_t *String; // [esp+30h] [ebp-68h] - size_t lpuexcpt; // [esp+38h] [ebp-60h] - void *v18[2]; // [esp+78h] [ebp-20h] BYREF - char v19[20]; // [esp+80h] [ebp-18h] BYREF - - this[1] = 0; - *this = this + 2; - v10 = this + 2; - *((_WORD *)this + 4) = 0; - v18[0] = v19; - LOBYTE(v9) = 0; - std::wstring::_M_construct(v18, a3, a4, v9); - String = (wchar_t *)v18[0]; - v11 = (char *)v18[0] + 2 * (int)v18[1]; - lpuexcpt = a4 - (_DWORD)a3; - if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - Block = (wchar_t *)operator new[](2 * (a4 - (_DWORD)a3)); - for ( i = std::collate::_M_transform(Block, String, lpuexcpt); - ; - i = std::collate::_M_transform(Block, String, lpuexcpt) ) - { - if ( lpuexcpt <= i ) - { - lpuexcpt = i + 1; - operator delete[](Block); - if ( lpuexcpt > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - Block = (wchar_t *)operator new[](2 * lpuexcpt); - i = std::collate::_M_transform(Block, String, lpuexcpt); - } - if ( i > 0x1FFFFFFF - this[1] ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(this, Block, i); - v5 = &String[wcslen(String)]; - if ( v11 == (char *)v5 ) - break; - String = v5 + 1; - v12 = this[1]; - v13 = v12 + 1; - v6 = *this; - if ( v10 == (_DWORD *)*this ) - v7 = 7; - else - v7 = this[2]; - if ( v13 > v7 ) - { - std::wstring::_M_mutate((int)this, v12, 0, 0, 1); - v6 = *this; - } - *(_WORD *)(v6 + 2 * v12) = 0; - this[1] = v13; - *(_WORD *)(v6 + 2 * v12 + 2) = 0; - } - operator delete[](Block); - if ( v18[0] != v19 ) - operator delete(v18[0]); - return this; -} -// 458A9D: variable 'v9' is possibly undefined - -//----- (00458D20) -------------------------------------------------------- -int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3) -{ - unsigned __int16 *v3; // edx - int (__stdcall *v4)(unsigned __int16 *, unsigned int); // eax - int result; // eax - int v6; // ecx - - v3 = a2; - v4 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); - if ( v4 != std::collate::do_hash ) - return v4(a2, a3); - result = 0; - if ( (unsigned int)a2 < a3 ) - { - do - { - v6 = *v3++; - result = v6 + __ROL4__(result, 7); - } - while ( a3 > (unsigned int)v3 ); - } - return result; -} - -//----- (00458D70) -------------------------------------------------------- -int __fastcall std::collate::compare(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (00458D80) -------------------------------------------------------- -int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) -{ - unsigned __int16 *v2; // edx - int result; // eax - int v4; // ecx - - v2 = a1; - for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) - v4 = *v2++; - return result; -} - -//----- (00458DB0) -------------------------------------------------------- -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) -{ - (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); - return this; -} - -//----- (00458DE0) -------------------------------------------------------- -int __stdcall std::messages::_M_convert_to_char(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00458DF0) -------------------------------------------------------- -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) -{ - _DWORD *result; // eax - - this[1] = 0; - result = this; - *this = this + 2; - *((_BYTE *)this + 8) = 0; - return result; -} - -//----- (00458E10) -------------------------------------------------------- -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) -{ - (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); - return this; -} - -//----- (00458E50) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3) -{ - int (__stdcall *v3)(int, int); // eax - - v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v3 == std::messages::do_open ) - return 0; - else - return v3(a2, a3); -} - -//----- (00458E70) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3, int a4) -{ - int (__stdcall *v4)(int, int); // edx - - v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v4 == std::messages::do_open ) - return 0; - else - return v4(a2, a3); -} - -//----- (00458EB0) -------------------------------------------------------- -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) -{ - int (__stdcall *result)(int); // eax - - result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); - if ( result != std::messages::do_close ) - return (int (__stdcall *)(int))result(a2); - return result; -} -// 458F90: using guessed type int __stdcall std::messages::do_close(int); - -//----- (00458ED0) -------------------------------------------------------- -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _DWORD *v6; // eax - _BYTE *Src; // edi - size_t Size; // esi - int v11[4]; // [esp+1Ch] [ebp-10h] BYREF - - v6 = this + 2; - *this = this + 2; - Src = *(_BYTE **)a6; - Size = *(_DWORD *)(a6 + 4); - if ( Size + *(_DWORD *)a6 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v11[0] = *(_DWORD *)(a6 + 4); - if ( Size > 0xF ) - { - v6 = std::string::_M_create((unsigned int *)v11, 0); - *this = v6; - this[2] = v11[0]; - goto LABEL_10; - } - if ( Size != 1 ) - { - if ( !Size ) - goto LABEL_6; -LABEL_10: - memcpy(v6, Src, Size); - Size = v11[0]; - v6 = (_DWORD *)*this; - goto LABEL_6; - } - *((_BYTE *)this + 8) = *Src; -LABEL_6: - this[1] = Size; - *((_BYTE *)v6 + Size) = 0; - return this; -} -// 458ED0: using guessed type size_t var_10[4]; - -//----- (00458F80) -------------------------------------------------------- -int __stdcall std::messages::do_open(int a1, int a2) -{ - return 0; -} - -//----- (00458FA0) -------------------------------------------------------- -int __stdcall std::messages::_M_convert_to_char(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00458FB0) -------------------------------------------------------- -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) -{ - _DWORD *result; // eax - - this[1] = 0; - result = this; - *this = this + 2; - *((_WORD *)this + 4) = 0; - return result; -} - -//----- (00458FD0) -------------------------------------------------------- -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) -{ - (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); - return this; -} - -//----- (00459010) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3) -{ - int (__stdcall *v3)(int, int); // eax - - v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v3 == std::messages::do_open ) - return 0; - else - return v3(a2, a3); -} - -//----- (00459030) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3, int a4) -{ - int (__stdcall *v4)(int, int); // edx - - v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v4 == std::messages::do_open ) - return 0; - else - return v4(a2, a3); -} - -//----- (00459070) -------------------------------------------------------- -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) -{ - int (__stdcall *result)(int); // eax - - result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); - if ( result != std::messages::do_close ) - return (int (__stdcall *)(int))result(a2); - return result; -} -// 459160: using guessed type int __stdcall std::messages::do_close(int); - -//----- (00459090) -------------------------------------------------------- -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _WORD *v6; // eax - _WORD *Src; // ebp - signed int Size; // esi - int v10; // edi - int v11; // edx - int v13[8]; // [esp+1Ch] [ebp-20h] BYREF - - v6 = this + 2; - *this = this + 2; - Src = *(_WORD **)a6; - Size = 2 * *(_DWORD *)(a6 + 4); - if ( Size + *(_DWORD *)a6 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v10 = Size >> 1; - v13[0] = Size >> 1; - if ( (unsigned int)Size > 0xE ) - { - v6 = std::wstring::_M_create((unsigned int *)v13, 0); - *this = v6; - this[2] = v13[0]; - } - if ( v10 == 1 ) - { - *v6 = *Src; - } - else if ( v10 ) - { - memcpy(v6, Src, Size); - v6 = (_WORD *)*this; - } - v11 = v13[0]; - this[1] = v13[0]; - v6[v11] = 0; - return this; -} -// 459090: using guessed type unsigned int var_20[8]; - -//----- (00459150) -------------------------------------------------------- -int __stdcall std::messages::do_open(int a1, int a2) -{ - return 0; -} - -//----- (00459170) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 459170: using guessed type size_t var_20[8]; - -//----- (00459220) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 20); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 459220: using guessed type size_t var_20[8]; - -//----- (004592D0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) -{ - _DWORD *v2; // ebp - const char *Str; // edi - size_t v5; // eax - size_t Size; // esi - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 28); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 4592D0: using guessed type size_t var_20[8]; - -//----- (00459380) -------------------------------------------------------- -int __fastcall std::numpunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 36); - else - return v1(); -} - -//----- (004593A0) -------------------------------------------------------- -int __fastcall std::numpunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 37); - else - return v1(); -} - -//----- (004593C0) -------------------------------------------------------- -int __fastcall std::numpunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); -} - -//----- (004593D0) -------------------------------------------------------- -int __fastcall std::numpunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); -} - -//----- (004593E0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::numpunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 459424: variable 'v7' is possibly undefined - -//----- (00459460) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::numpunct::do_truename ) - { - Str = *(char **)(a2[2] + 20); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4594A4: variable 'v7' is possibly undefined - -//----- (004594E0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::numpunct::do_falsename ) - { - Str = *(char **)(a2[2] + 28); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - LOBYTE(v7) = 0; - std::string::_M_construct(this, Str, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 459524: variable 'v7' is possibly undefined - -//----- (00459560) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) -{ - _DWORD *v2; // esi - const char *Str; // edi - size_t v5; // eax - size_t Size; // ebp - _DWORD *v8; // eax - int v9[8]; // [esp+1Ch] [ebp-20h] BYREF - - v2 = this + 2; - Str = *(const char **)(*(_DWORD *)(a2 + 8) + 8); - *this = this + 2; - if ( !Str ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v5 = strlen(Str); - v9[0] = v5; - Size = v5; - if ( v5 > 0xF ) - { - v8 = std::string::_M_create((unsigned int *)v9, 0); - *this = v8; - v2 = v8; - this[2] = v9[0]; - goto LABEL_9; - } - if ( v5 != 1 ) - { - if ( !v5 ) - goto LABEL_5; -LABEL_9: - memcpy(v2, Str, Size); - v5 = v9[0]; - v2 = (_DWORD *)*this; - goto LABEL_5; - } - *((_BYTE *)this + 8) = *Str; -LABEL_5: - this[1] = v5; - *((_BYTE *)v2 + v5) = 0; - return this; -} -// 459560: using guessed type size_t var_20[8]; - -//----- (00459610) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 459648: variable 'v6' is possibly undefined - -//----- (00459660) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) -{ - wchar_t *String; // esi - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28); - *this = this + 2; - v4 = -2; - if ( String ) - v4 = (int)&String[wcslen(String)]; - LOBYTE(v6) = 0; - std::wstring::_M_construct(this, String, v4, v6); - return this; -} -// 459698: variable 'v6' is possibly undefined - -//----- (004596B0) -------------------------------------------------------- -int __fastcall std::numpunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 36); - else - return v1(); -} - -//----- (004596D0) -------------------------------------------------------- -int __fastcall std::numpunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 38); - else - return v1(); -} - -//----- (004596F0) -------------------------------------------------------- -int __fastcall std::numpunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); -} - -//----- (00459700) -------------------------------------------------------- -int __fastcall std::numpunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); -} - -//----- (00459710) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - char *Str; // esi - int v5; // eax - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::numpunct::do_grouping ) - { - Str = *(char **)(a2[2] + 8); - *this = this + 2; - v5 = -1; - if ( Str ) - v5 = (int)&Str[strlen(Str)]; - std::string::_M_construct(this, Str, v5); - return this; - } - else - { - v3(a2); - return this; - } -} - -//----- (00459780) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::numpunct::do_truename ) - { - String = *(wchar_t **)(a2[2] + 20); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 4597C5: variable 'v7' is possibly undefined - -//----- (00459800) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - wchar_t *String; // esi - int v5; // eax - int v7; // [esp+8h] [ebp-14h] - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::numpunct::do_falsename ) - { - String = *(wchar_t **)(a2[2] + 28); - *this = this + 2; - v5 = -2; - if ( String ) - v5 = (int)&String[wcslen(String)]; - LOBYTE(v7) = 0; - std::wstring::_M_construct(this, String, v5, v7); - return this; - } - else - { - v3(a2); - return this; - } -} -// 459845: variable 'v7' is possibly undefined - -//----- (00459880) -------------------------------------------------------- -int __fastcall std::time_get>::date_order(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); - if ( v1 == std::time_get>::do_date_order ) - return 0; - else - return v1(); -} - -//----- (004598A0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_date( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _DWORD *v7; // eax - _DWORD *v8; // esi - int v9; // edx - char v10; // dl - char v11; // al - int v13; // eax - int v14; // eax - char v15; // [esp+28h] [ebp-24h] - char v16; // [esp+28h] [ebp-24h] - - v7 = std::use_facet>(a5 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - *(char **)(v7[2] + 8)); - v10 = v9 == -1; - v15 = v10 & (v8 != 0); - if ( v15 ) - { - v10 = 0; - if ( v8[2] >= v8[3] ) - { - v14 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v10 = 0; - if ( v14 == -1 ) - v10 = v15; - if ( v14 == -1 ) - v8 = 0; - } - } - v11 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v11 = 0; - if ( a3[2] >= a3[3] ) - { - v16 = v10; - v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v10 = v16; - v11 = v13 == -1; - } - } - } - if ( v10 == v11 ) - *a6 |= 2u; - return v8; -} -// 459909: variable 'v9' is possibly undefined - -//----- (004599B0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_time( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _DWORD *v7; // eax - _DWORD *v8; // esi - int v9; // edx - char v10; // dl - char v11; // al - int v13; // eax - int v14; // eax - char v15; // [esp+28h] [ebp-24h] - char v16; // [esp+28h] [ebp-24h] - - v7 = std::use_facet>(a5 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - *(char **)(v7[2] + 16)); - v10 = v9 == -1; - v15 = v10 & (v8 != 0); - if ( v15 ) - { - v10 = 0; - if ( v8[2] >= v8[3] ) - { - v14 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v10 = 0; - if ( v14 == -1 ) - v10 = v15; - if ( v14 == -1 ) - v8 = 0; - } - } - v11 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v11 = 0; - if ( a3[2] >= a3[3] ) - { - v16 = v10; - v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v10 = v16; - v11 = v13 == -1; - } - } - } - if ( v10 == v11 ) - *a6 |= 2u; - return v8; -} -// 459A19: variable 'v9' is possibly undefined - -//----- (00459AC0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_year( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int a7) -{ - int v7; // edx - _DWORD *v8; // ebx - int v9; // eax - char v10; // si - char v11; // al - int v13; // eax - bool v14; // zf - _DWORD *v15; // eax - _DWORD *v16; // [esp+34h] [ebp-38h] - char v17; // [esp+38h] [ebp-34h] - int v18; // [esp+48h] [ebp-24h] BYREF - int v19[8]; // [esp+4Ch] [ebp-20h] BYREF - - v19[0] = 0; - v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v18, 0, 9999, 4u, a5, v19); - v16 = v8; - if ( v19[0] ) - { - *a6 |= 4u; - } - else - { - v9 = v18 - 1900; - if ( v18 < 0 ) - v9 = v18 + 100; - *(_DWORD *)(a7 + 20) = v9; - } - v10 = v7 == -1; - v17 = (v8 != 0) & v10; - if ( v17 ) - { - v10 = 0; - if ( v8[2] >= v8[3] ) - { - v13 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v14 = v13 == -1; - if ( v13 == -1 ) - v10 = v17; - v15 = 0; - if ( !v14 ) - v15 = v8; - v16 = v15; - } - } - v11 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v11 = 0; - if ( a3[2] >= a3[3] ) - v11 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - } - if ( v10 == v11 ) - *a6 |= 2u; - return v16; -} -// 459B53: variable 'v7' is possibly undefined -// 459AC0: using guessed type int var_20[8]; - -//----- (00459C10) -------------------------------------------------------- -int __fastcall std::time_get>::get_weekday(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); -} - -//----- (00459C20) -------------------------------------------------------- -int std::time_get>::do_date_order() -{ - return 0; -} - -//----- (00459C30) -------------------------------------------------------- -int __fastcall std::time_get>::get_monthname(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); -} - -//----- (00459C40) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_num( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int *a5, - signed int a6, - int a7, - unsigned int a8, - int a9, - _DWORD *a10) -{ - unsigned int v10; // ebp - int v12; // eax - int v13; // edi - char v14; // al - unsigned __int8 v15; // al - unsigned int v16; // eax - bool v17; // dl - char v18; // bl - int v19; // ebx - char v20; // dl - int (__stdcall *v21)(unsigned __int8, int); // eax - int v23; // eax - char *v24; // eax - int v25; // eax - int v26; // eax - unsigned int v28; // [esp+20h] [ebp-2Ch] - _BYTE *v29; // [esp+24h] [ebp-28h] - bool v31; // [esp+2Fh] [ebp-1Dh] - - v10 = 10; - v29 = std::use_facet>(a9 + 108); - if ( a8 != 2 ) - { - v12 = 1; - if ( a8 == 4 ) - v12 = 1000; - v10 = v12; - } - v28 = 0; - v13 = 0; - while ( 1 ) - { - v17 = a2 == -1; - v18 = v17 && a1 != 0; - if ( v18 ) - { - if ( a1[2] >= a1[3] ) - { - v25 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v17 = a2 == -1; - if ( v25 != -1 ) - v18 = 0; - if ( v25 == -1 ) - a1 = 0; - } - else - { - v18 = 0; - } - } - else - { - v18 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v31 = v17; - v23 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v17 = v31; - if ( v23 == -1 ) - { - a3 = 0; - v18 ^= 1u; - } - } - } - else - { - v18 ^= a4 == -1; - } - if ( v28 >= a8 || !v18 ) - break; - if ( a1 && v17 ) - { - v24 = (char *)a1[2]; - if ( (unsigned int)v24 >= a1[3] ) - { - v26 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v26 == -1 ) - { - v20 = -1; - v19 = 255; - a1 = 0; - } - else - { - v19 = (unsigned __int8)v26; - v20 = v26; - } - } - else - { - v19 = (unsigned __int8)*v24; - v20 = *v24; - } - } - else - { - v19 = (unsigned __int8)a2; - v20 = a2; - } - v14 = v29[v19 + 285]; - if ( !v14 ) - { - v21 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v29 + 32); - if ( v21 != std::ctype::do_narrow ) - v20 = v21(v20, 42); - if ( v20 == 42 ) - goto LABEL_27; - v29[v19 + 285] = v20; - v14 = v20; - } - v15 = v14 - 48; - if ( v15 > 9u ) - goto LABEL_27; - v13 = (char)v15 + 10 * v13; - if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) - goto LABEL_27; - v16 = a1[2]; - v10 /= 0xAu; - if ( v16 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v16 + 1; - ++v28; - a2 = -1; - } - if ( v28 == a8 ) - { -LABEL_30: - *a5 = v13; - return a1; - } -LABEL_27: - if ( a8 == 4 && v28 == 2 ) - { - v13 -= 100; - goto LABEL_30; - } - *a10 |= 4u; - return a1; -} - -//----- (00459F00) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_weekday( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // dl - char v14; // al - int v16; // eax - int v17; // eax - char v18; // [esp+34h] [ebp-68h] - char v19; // [esp+34h] [ebp-68h] - _DWORD *v20; // [esp+38h] [ebp-64h] - unsigned int v21; // [esp+40h] [ebp-5Ch] BYREF - int v22; // [esp+44h] [ebp-58h] BYREF - int v23[21]; // [esp+48h] [ebp-54h] BYREF - - v22 = 0; - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v23[0] = v7[18]; - v23[1] = v7[19]; - v23[2] = v7[20]; - v23[3] = v7[21]; - v23[4] = v7[22]; - v23[5] = v7[23]; - v23[6] = v7[24]; - v23[7] = v7[11]; - v23[8] = v7[12]; - v23[9] = v7[13]; - v23[10] = v7[14]; - v23[11] = v7[15]; - v8 = v7[16]; - v9 = v7[17]; - v23[12] = v8; - v23[13] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v21, - (int)v23, - 7u, - a5, - &v22); - v12 = v11; - if ( v22 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 24) = v21; - v13 = v10 == -1; - v18 = v13 & (v11 != 0); - if ( v18 ) - { - v13 = 0; - if ( v11[2] >= v11[3] ) - { - v12 = 0; - v20 = v11; - v17 = (*(int (**)(void))(*v11 + 36))(); - v13 = 0; - if ( v17 != -1 ) - v12 = v20; - if ( v17 == -1 ) - v13 = v18; - } - } - v14 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v14 = 0; - if ( a3[2] >= a3[3] ) - { - v19 = v13; - v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v13 = v19; - v14 = v16 == -1; - } - } - } - if ( v13 == v14 ) - *a6 |= 2u; - return v12; -} -// 45A00F: variable 'v10' is possibly undefined - -//----- (0045A0C0) -------------------------------------------------------- -unsigned __int64 __stdcall std::time_get>::_M_extract_name( - unsigned __int64 a1, - _DWORD *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - int a7, - _DWORD *a8) -{ - int v8; // eax - void *v9; // esp - void *v10; // esp - unsigned __int8 v11; // dl - unsigned __int8 v12; // bl - int v14; // edx - int v15; // esi - unsigned int v16; // ebx - int v17; // edi - char v18; // al - int v19; // ecx - int *v20; // edi - size_t v21; // eax - unsigned int v22; // esi - unsigned int v23; // ebx - size_t v24; // eax - unsigned int v25; // eax - char v26; // si - unsigned __int8 v27; // dl - int *v28; // ecx - unsigned int v29; // eax - unsigned int i; // esi - unsigned int v31; // eax - int v32; // eax - const char *v33; // edi - const char *v34; // esi - size_t v35; // eax - unsigned int v36; // ebx - unsigned __int8 v37; // dl - char v38; // dl - char v39; // di - _BYTE *v40; // eax - char v41; // di - int v42; // eax - bool v43; // zf - int v44; // eax - int v45; // eax - bool v46; // zf - _DWORD *v47; // eax - int v48; // eax - _BYTE *v49; // eax - int v50; // eax - int v51; // eax - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - int v55; // eax - bool v56; // zf - int v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - char v61; // al - int v62; // eax - int v63; // eax - int v64; // eax - int v65; // eax - int v66; // eax - bool v67; // zf - _DWORD *v68; // eax - int v69; // [esp+10h] [ebp-38h] BYREF - void *v70; // [esp+14h] [ebp-34h] - _DWORD *v71; // [esp+18h] [ebp-30h] - int v72; // [esp+1Ch] [ebp-2Ch] - unsigned __int8 v73; // [esp+22h] [ebp-26h] - unsigned __int8 v74; // [esp+23h] [ebp-25h] - unsigned __int64 v75; // [esp+24h] [ebp-24h] - const char *v76; // [esp+2Ch] [ebp-1Ch] - - v72 = HIDWORD(a1); - v75 = a1; - v71 = a2; - v70 = std::use_facet>(a7 + 108); - v8 = 16 * ((unsigned int)(4 * a6 + 27) >> 4); - v9 = alloca(v8); - v10 = alloca(v8); - LOBYTE(v76) = HIDWORD(a1) == -1; - if ( ((unsigned __int8)v76 & ((_DWORD)a1 != 0)) != 0 ) - { - if ( *(_DWORD *)(v75 + 8) >= *(_DWORD *)(v75 + 12) ) - { - v54 = *(_DWORD *)v75; - v74 = (unsigned __int8)v76 & ((_DWORD)a1 != 0); - v55 = (*(int (__fastcall **)(_DWORD))(v54 + 36))(v75); - v11 = v74; - v56 = v55 == -1; - if ( v55 != -1 ) - v11 = 0; - v57 = 0; - if ( !v56 ) - v57 = v75; - LODWORD(v75) = v57; - } - else - { - v11 = 0; - } - } - else - { - v11 = (unsigned __int8)v76; - } - v74 = a3 == -1; - v12 = v74 & (a2 != 0); - if ( v12 ) - { - if ( a2[2] >= a2[3] ) - { - v50 = *a2; - v73 = v11; - v51 = (*(int (__fastcall **)(_DWORD *))(v50 + 36))(a2); - v11 = v73; - v52 = v51 == -1; - if ( v51 != -1 ) - v12 = 0; - v53 = 0; - if ( !v52 ) - v53 = a2; - v71 = v53; - } - else - { - v12 = 0; - } - } - else - { - v12 = v74; - } - if ( v12 == v11 ) - goto LABEL_6; - if ( (_DWORD)v75 && (_BYTE)v76 ) - { - v49 = *(_BYTE **)(v75 + 8); - if ( (unsigned int)v49 >= *(_DWORD *)(v75 + 12) ) - { - v58 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v75 + 36))(v75); - v59 = v58 == -1; - v60 = v58; - v61 = -1; - if ( !v59 ) - v61 = v60; - LOBYTE(v76) = v61; - v62 = 0; - if ( !v59 ) - v62 = v75; - LODWORD(v75) = v62; - } - else - { - LOBYTE(v76) = *v49; - } - } - else - { - LOBYTE(v76) = v72; - } - if ( !a6 ) - { -LABEL_6: - *a8 |= 4u; - return v75; - } - v72 = (int)&v69; - v14 = a5; - v15 = 0; - v16 = 0; - v17 = (int)v70; - do - { - while ( 1 ) - { - v19 = **(char **)(v14 + 4 * v15); - if ( (_BYTE)v19 == (_BYTE)v76 ) - break; - a5 = v14; - v18 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v17 + 8))(v17, v19); - v14 = a5; - if ( v18 == (_BYTE)v76 ) - break; - if ( a6 == ++v15 ) - goto LABEL_17; - } - *(_DWORD *)(v72 + 4 * v16++) = v15++; - } - while ( a6 != v15 ); -LABEL_17: - v76 = 0; - v20 = (int *)v72; - if ( v16 <= 1 ) - goto LABEL_39; - do - { - v72 = *v20; - v21 = strlen(*(const char **)(a5 + 4 * v72)); - HIDWORD(v75) = v16; - v22 = v21; - v23 = 1; - do - { - v24 = strlen(*(const char **)(a5 + 4 * v20[v23])); - if ( v22 > v24 ) - v22 = v24; - ++v23; - } - while ( v23 < HIDWORD(v75) ); - v16 = HIDWORD(v75); - v25 = *(_DWORD *)(v75 + 8); - if ( v25 >= *(_DWORD *)(v75 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v75 + 40))(v75); - else - *(_DWORD *)(v75 + 8) = v25 + 1; - if ( (unsigned int)++v76 >= v22 ) - goto LABEL_57; - v26 = 0; - if ( *(_DWORD *)(v75 + 8) >= *(_DWORD *)(v75 + 12) ) - { - v26 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v75 + 36))(v75) == -1; - v48 = 0; - if ( !v26 ) - v48 = v75; - LODWORD(v75) = v48; - } - if ( (v74 & (v71 != 0)) != 0 ) - { - if ( v71[2] < v71[3] ) - { - if ( !v26 ) - goto LABEL_57; - goto LABEL_29; - } - v44 = *v71; - BYTE4(v75) = v74 & (v71 != 0); - v45 = (*(int (__fastcall **)(_DWORD *))(v44 + 36))(v71); - v27 = BYTE4(v75); - v46 = v45 == -1; - if ( v45 != -1 ) - v27 = 0; - v47 = 0; - if ( !v46 ) - v47 = v71; - v71 = v47; - } - else - { - v27 = v74; - } - if ( v26 == v27 ) - goto LABEL_57; -LABEL_29: - v28 = (int *)v75; - v29 = v72; - for ( i = 0; ; v29 = v20[i] ) - { - v14 = (unsigned __int8)v76[*(_DWORD *)(a5 + 4 * v29)]; - LOBYTE(v29) = -1; - if ( v28 ) - { - v29 = v28[2]; - if ( v29 >= v28[3] ) - { - v42 = *v28; - LOBYTE(v75) = v14; - HIDWORD(v75) = v28; - v29 = (*(int (**)(void))(v42 + 36))(); - v43 = v29 == -1; - if ( v29 == -1 ) - LOBYTE(v29) = -1; - v28 = (int *)HIDWORD(v75); - if ( v43 ) - v28 = 0; - v14 = (unsigned __int8)v75; - } - else - { - LOBYTE(v29) = *(_BYTE *)v29; - } - } - if ( (_BYTE)v14 == (_BYTE)v29 ) - break; - v20[i] = v20[--v16]; - if ( v16 <= i ) - goto LABEL_37; -LABEL_31: - ; - } - if ( v16 > ++i ) - goto LABEL_31; -LABEL_37: - LODWORD(v75) = v28; - } - while ( v16 > 1 ); - HIDWORD(v75) = -1; -LABEL_39: - if ( v16 != 1 ) - goto LABEL_6; - v31 = *(_DWORD *)(v75 + 8); - if ( v31 >= *(_DWORD *)(v75 + 12) ) - (*(void (__fastcall **)(_DWORD, int))(*(_DWORD *)v75 + 40))(v75, v14); - else - *(_DWORD *)(v75 + 8) = v31 + 1; - v32 = *v20; - v33 = *(const char **)(a5 + 4 * *v20); - v72 = v32; - v34 = v76 + 1; - v35 = strlen(v33); - HIDWORD(v75) = v35; - if ( (unsigned int)(v76 + 1) < v35 ) - { - v76 = v33; - v36 = v75; - while ( 1 ) - { - v41 = 0; - if ( *(_DWORD *)(v36 + 8) >= *(_DWORD *)(v36 + 12) ) - { - v41 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v36 + 36))(v36) == -1; - if ( v41 ) - v36 = 0; - } - if ( (v74 & (v71 != 0)) != 0 ) - { - if ( v71[2] >= v71[3] ) - { - v65 = *v71; - LOBYTE(v75) = v74 & (v71 != 0); - v66 = (*(int (__fastcall **)(_DWORD *))(v65 + 36))(v71); - v37 = v75; - v67 = v66 == -1; - if ( v66 != -1 ) - v37 = 0; - v68 = 0; - if ( !v67 ) - v68 = v71; - v71 = v68; - } - else - { - v37 = 0; - } - } - else - { - v37 = v74; - } - if ( v41 == v37 ) - { -LABEL_95: - v75 = v36 | 0xFFFFFFFF00000000LL; - goto LABEL_6; - } - v38 = -1; - v39 = v34[(_DWORD)v76]; - if ( v36 ) - { - v40 = *(_BYTE **)(v36 + 8); - if ( (unsigned int)v40 < *(_DWORD *)(v36 + 12) ) - { - if ( v39 != *v40 ) - goto LABEL_95; - goto LABEL_49; - } - v63 = *(_DWORD *)v36; - LOBYTE(v75) = -1; - v64 = (*(int (__fastcall **)(unsigned int))(v63 + 36))(v36); - v38 = v75; - if ( v64 != -1 ) - v38 = v64; - if ( v64 == -1 ) - v36 = 0; - } - if ( v39 != v38 ) - goto LABEL_95; - v40 = *(_BYTE **)(v36 + 8); - if ( (unsigned int)v40 >= *(_DWORD *)(v36 + 12) ) - { - (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v36 + 40))(v36); - goto LABEL_50; - } -LABEL_49: - *(_DWORD *)(v36 + 8) = v40 + 1; -LABEL_50: - if ( ++v34 == (const char *)HIDWORD(v75) ) - { - LODWORD(v75) = v36; - goto LABEL_98; - } - } - } - if ( v34 != (const char *)v35 ) - { -LABEL_57: - HIDWORD(v75) = -1; - goto LABEL_6; - } -LABEL_98: - HIDWORD(v75) = -1; - *a4 = v72; - return v75; -} - -//----- (0045A5F0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_monthname( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // edx - int v9; // edx - int v10; // edx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // dl - char v14; // al - int v16; // eax - int v17; // eax - char v18; // [esp+34h] [ebp-98h] - char v19; // [esp+34h] [ebp-98h] - _DWORD *v20; // [esp+38h] [ebp-94h] - unsigned int v21; // [esp+48h] [ebp-84h] BYREF - int v22; // [esp+4Ch] [ebp-80h] BYREF - int v23[31]; // [esp+50h] [ebp-7Ch] BYREF - - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v23[0] = v7[37]; - v23[1] = v7[38]; - v23[2] = v7[39]; - v23[3] = v7[40]; - v23[4] = v7[41]; - v23[5] = v7[42]; - v23[6] = v7[43]; - v23[7] = v7[44]; - v23[8] = v7[45]; - v23[9] = v7[46]; - v23[10] = v7[47]; - v23[11] = v7[48]; - v23[12] = v7[25]; - v23[13] = v7[26]; - v23[14] = v7[27]; - v23[15] = v7[28]; - v8 = v7[29]; - v22 = 0; - v23[16] = v8; - v23[17] = v7[30]; - v23[18] = v7[31]; - v23[19] = v7[32]; - v23[20] = v7[33]; - v23[21] = v7[34]; - v9 = v7[35]; - v23[23] = v7[36]; - v23[22] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v21, - (int)v23, - 0xCu, - a5, - &v22); - v12 = v11; - if ( v22 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 16) = v21; - v13 = v10 == -1; - v18 = v13 & (v11 != 0); - if ( v18 ) - { - v13 = 0; - if ( v11[2] >= v11[3] ) - { - v12 = 0; - v20 = v11; - v17 = (*(int (**)(void))(*v11 + 36))(); - v13 = 0; - if ( v17 != -1 ) - v12 = v20; - if ( v17 == -1 ) - v13 = v18; - } - } - v14 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v14 = 0; - if ( a3[2] >= a3[3] ) - { - v19 = v13; - v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v13 = v19; - v14 = v16 == -1; - } - } - } - if ( v13 == v14 ) - *a6 |= 2u; - return v12; -} -// 45A79C: variable 'v10' is possibly undefined - -//----- (0045A850) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_via_format( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - char *a8) -{ - size_t v8; // esi - _BYTE *v10; // edi - bool v11; // bl - char v12; // dl - char v13; // cl - char v14; // al - int (__stdcall *v15)(unsigned __int8, int); // eax - char v16; // dl - int v17; // eax - int v18; // edx - char v19; // al - int (__stdcall *v20)(unsigned __int8, int); // eax - char v21; // al - int v23; // eax - _BYTE *v24; // eax - int v25; // esi - int (__stdcall *v26)(unsigned __int8, int); // eax - int v27; // edx - int v28; // eax - _DWORD *v29; // eax - int v30; // eax - unsigned __int64 v31; // kr00_8 - char v32; // al - void (__fastcall *v33)(_BYTE *, int, const char *, const char *, int *); // eax - _DWORD *v34; // eax - int v35; // edx - int v36; // edx - char v37; // al - void (__fastcall *v38)(_BYTE *, int, const char *, const char *, int *); // eax - int v39; // edx - _DWORD *v40; // eax - unsigned __int8 *v41; // eax - int v42; // ebx - int v43; // edx - char v44; // al - int (__stdcall *v45)(unsigned __int8, int); // eax - unsigned int v46; // eax - unsigned __int8 *v47; // eax - int v48; // eax - unsigned __int64 v49; // rax - char v50; // si - int v51; // esi - char v52; // dl - int v53; // esi - char v54; // dl - _DWORD *v55; // eax - int v56; // edx - int v57; // edx - _DWORD *v58; // eax - int v59; // eax - unsigned __int64 v60; // kr08_8 - _DWORD *v61; // eax - int v62; // edx - char v63; // al - void (__fastcall *v64)(_BYTE *, int, const char *, void *, int *); // eax - _DWORD *v65; // eax - _DWORD *v66; // eax - int v67; // edx - unsigned __int8 *v68; // eax - int v69; // eax - int v70; // edx - unsigned __int8 *v71; // eax - int v72; // ebx - char v73; // al - int (__stdcall *v74)(unsigned __int8, int); // eax - int v75; // eax - bool v76; // zf - _DWORD *v77; // eax - int v78; // eax - int v79; // eax - int (__stdcall *v80)(unsigned __int8); // eax - char *v81; // ecx - int (__stdcall *v82)(unsigned __int8); // eax - __int64 v83; // rax - _BYTE *v84; // eax - _BYTE *v85; // eax - char *Str; // [esp+0h] [ebp-BCh] - int v87; // [esp+14h] [ebp-A8h] - int v88; // [esp+20h] [ebp-9Ch] - size_t v90; // [esp+38h] [ebp-84h] - char v91; // [esp+38h] [ebp-84h] - char *v93; // [esp+44h] [ebp-78h] - int v94; // [esp+44h] [ebp-78h] - bool v95; // [esp+44h] [ebp-78h] - size_t v96; // [esp+48h] [ebp-74h] - int v97; // [esp+4Ch] [ebp-70h] - char v98; // [esp+4Ch] [ebp-70h] - _DWORD *v99; // [esp+54h] [ebp-68h] - char v100; // [esp+5Ah] [ebp-62h] - char v101; // [esp+5Ah] [ebp-62h] - bool v102; // [esp+5Bh] [ebp-61h] - int v103; // [esp+5Ch] [ebp-60h] - int v104; // [esp+68h] [ebp-54h] BYREF - int v105; // [esp+6Ch] [ebp-50h] BYREF - int v106[3]; // [esp+70h] [ebp-4Ch] BYREF - int v107; // [esp+7Ch] [ebp-40h] - int v108; // [esp+80h] [ebp-3Ch] - int v109; // [esp+84h] [ebp-38h] - int v110; // [esp+88h] [ebp-34h] - int v111; // [esp+8Ch] [ebp-30h] - int v112; // [esp+90h] [ebp-2Ch] - int v113; // [esp+94h] [ebp-28h] - int v114; // [esp+98h] [ebp-24h] - int v115; // [esp+9Ch] [ebp-20h] - - v8 = 0; - v99 = std::use_facet>(a5 + 108); - v10 = std::use_facet>(a5 + 108); - v104 = 0; - v96 = strlen(a8); - while ( 1 ) - { - v11 = a2 == -1; - if ( v11 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v75 = (*(int (__thiscall **)(_DWORD *, char *))(*a1 + 36))(a1, Str); - v12 = v11 && a1 != 0; - if ( v75 != -1 ) - v12 = 0; - if ( v75 == -1 ) - a1 = 0; - } - else - { - v12 = 0; - } - } - else - { - v12 = a2 == -1; - } - v100 = a4 == -1; - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v91 = v12; - v23 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v12 = v91; - if ( v23 == -1 ) - { - a3 = 0; - v12 = v91 ^ 1; - } - } - } - else - { - v12 ^= v100; - } - if ( v8 >= v96 || !v12 ) - break; - if ( v104 ) - goto LABEL_32; - v93 = &a8[v8]; - v90 = v8 + 1; - v97 = (unsigned __int8)a8[v8]; - v13 = a8[v8]; - v14 = v10[v97 + 285]; - if ( v14 ) - { -LABEL_15: - if ( v14 != 37 ) - goto LABEL_16; - v94 = (unsigned __int8)a8[v8 + 1]; - v18 = v94; - v19 = v10[v94 + 285]; - if ( !v19 ) - { - v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v20 != std::ctype::do_narrow ) - v18 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v10, (char)v94, 0); - if ( !(_BYTE)v18 ) - { -LABEL_47: - v104 |= 4u; - goto LABEL_48; - } - v10[v94 + 285] = v18; - v19 = v18; - } - v105 = 0; - if ( (v19 == 69 || v19 == 79) - && (v90 = v8 + 2, v25 = (unsigned __int8)a8[v8 + 2], v19 = v10[v25 + 285], v18 = v25, !v19) ) - { - v26 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v26 != std::ctype::do_narrow ) - v18 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v26)(v10, (char)v25, 0); - if ( !(_BYTE)v18 ) - goto LABEL_47; - v10[v25 + 285] = v18; - v21 = v18 - 65; - if ( (unsigned __int8)(v18 - 65) > 0x38u ) - goto LABEL_47; - } - else - { - v21 = v19 - 65; - } - switch ( v21 ) - { - case 0: - v65 = (_DWORD *)v99[2]; - v106[0] = v65[11]; - v106[1] = v65[12]; - v106[2] = v65[13]; - v107 = v65[14]; - v108 = v65[15]; - v109 = v65[16]; - v59 = v65[17]; - goto LABEL_114; - case 1: - v40 = (_DWORD *)v99[2]; - v106[0] = v40[25]; - v106[1] = v40[26]; - v106[2] = v40[27]; - v107 = v40[28]; - v108 = v40[29]; - v109 = v40[30]; - v110 = v40[31]; - v111 = v40[32]; - v112 = v40[33]; - v113 = v40[34]; - v114 = v40[35]; - v30 = v40[36]; - goto LABEL_57; - case 2: - case 24: - case 56: - a1 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 0, - 9999, - 4u, - a5, - &v104); - a2 = v27; - if ( !v104 ) - { - v28 = v105 - 1900; - if ( v105 < 0 ) - v28 = v105 + 100; - a7[5] = v28; - } - break; - case 3: - v32 = v10[28]; - if ( v32 == 1 ) - goto LABEL_156; - if ( !v32 ) - std::ctype::_M_widen_init((int)v10); - v33 = *(void (__fastcall **)(_BYTE *, int, const char *, const char *, int *))(*(_DWORD *)v10 + 28); - if ( (char *)v33 == (char *)std::ctype::do_widen ) -LABEL_156: - strcpy((char *)v106, "%m/%d/%y"); - else - v33(v10, v18, "%m/%d/%y", "%H:%M", v106); - goto LABEL_155; - case 7: - v34 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 0, - 23, - 2u, - a5, - &v104); - goto LABEL_65; - case 8: - v34 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 1, - 12, - 2u, - a5, - &v104); -LABEL_65: - a1 = v34; - a2 = v35; - if ( !v104 ) - a7[2] = v105; - break; - case 12: - a1 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 0, - 59, - 2u, - a5, - &v104); - a2 = v36; - if ( !v104 ) - a7[1] = v105; - break; - case 17: - v37 = v10[28]; - if ( v37 == 1 ) - goto LABEL_157; - if ( !v37 ) - std::ctype::_M_widen_init((int)v10); - v38 = *(void (__fastcall **)(_BYTE *, int, const char *, const char *, int *))(*(_DWORD *)v10 + 28); - if ( (char *)v38 == (char *)std::ctype::do_widen ) -LABEL_157: - strcpy((char *)v106, "%H:%M"); - else - v38(v10, v18, "%H:%M", "%H:%M:%S", v106); - goto LABEL_155; - case 18: - a1 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 0, - 60, - 2u, - a5, - &v104); - a2 = v39; - if ( !v104 ) - *a7 = v105; - break; - case 19: - v63 = v10[28]; - if ( v63 == 1 ) - goto LABEL_154; - if ( !v63 ) - std::ctype::_M_widen_init((int)v10); - v64 = *(void (__fastcall **)(_BYTE *, int, const char *, void *, int *))(*(_DWORD *)v10 + 28); - if ( (char *)v64 == (char *)std::ctype::do_widen ) -LABEL_154: - strcpy((char *)v106, "%H:%M:%S"); - else - v64(v10, v18, "%H:%M:%S", &unk_51183A, v106); -LABEL_155: - v61 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - &v104, - a7, - (char *)v106); - goto LABEL_117; - case 23: - v61 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - &v104, - a7, - *(char **)(v99[2] + 16)); - goto LABEL_117; - case 25: - if ( a1 && a2 == -1 ) - { - v47 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v47 >= a1[3] ) - { - v48 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); - if ( v48 == -1 ) - { - v48 = 255; - a1 = 0; - } - else - { - v48 = (unsigned __int8)v48; - } - } - else - { - v48 = *v47; - } - } - else - { - v48 = (unsigned __int8)a2; - } - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * v48) & 1) == 0 ) - goto LABEL_47; - v49 = std::time_get>::_M_extract_name( - __PAIR64__(a2, (unsigned int)a1), - a3, - a4, - v106, - (int)std::__timepunct_cache::_S_timezones, - 14, - a5, - &v104); - a1 = (_DWORD *)v49; - v95 = HIDWORD(v49) == -1; - v103 = HIDWORD(v49); - a2 = HIDWORD(v49); - BYTE4(v49) = v95; - v102 = v95 && (_DWORD)v49 != 0; - if ( v102 ) - { - BYTE4(v49) = 0; - if ( *(_DWORD *)(v49 + 8) >= *(_DWORD *)(v49 + 12) ) - { - LODWORD(v49) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v49 + 36))(v49); - BYTE4(v49) = 0; - if ( (_DWORD)v49 == -1 ) - { - BYTE4(v49) = v102; - a1 = 0; - v102 = 0; - } - } - } - v50 = v100 & (a3 != 0); - if ( v50 ) - { - v100 = 0; - if ( a3[2] >= a3[3] ) - { - v98 = BYTE4(v49); - LODWORD(v49) = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - BYTE4(v49) = v98; - v76 = (_DWORD)v49 == -1; - if ( (_DWORD)v49 != -1 ) - v50 = 0; - v100 = v50; - v77 = 0; - if ( !v76 ) - v77 = a3; - a3 = v77; - } - } - if ( BYTE4(v49) != v100 && !(v106[0] | v104) ) - { - LOBYTE(v51) = v103; - if ( v102 ) - { - v84 = (_BYTE *)a1[2]; - if ( (unsigned int)v84 >= a1[3] ) - { - v51 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v51 == -1 ) - a1 = 0; - } - else - { - LOBYTE(v51) = *v84; - } - } - if ( v10[28] ) - { - v52 = v10[74]; - } - else - { - std::ctype::_M_widen_init((int)v10); - v52 = 45; - v80 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); - if ( v80 != std::ctype::do_widen ) - { - v52 = ((int (__fastcall *)(_BYTE *, int, int))v80)(v10, 45, 45); - Str = v81; - } - } - if ( (_BYTE)v51 == v52 ) - goto LABEL_112; - if ( a1 && v95 ) - { - v85 = (_BYTE *)a1[2]; - if ( (unsigned int)v85 >= a1[3] ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v53 == -1 ) - a1 = 0; - } - else - { - LOBYTE(v53) = *v85; - } - } - else - { - LOBYTE(v53) = v103; - } - if ( v10[28] ) - { - v54 = v10[72]; - } - else - { - std::ctype::_M_widen_init((int)v10); - v54 = 43; - v82 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); - if ( v82 != std::ctype::do_widen ) - { - v83 = ((__int64 (__fastcall *)(_BYTE *, int, int))v82)(v10, 43, 43); - Str = (char *)HIDWORD(v83); - v54 = v83; - } - } - if ( (_BYTE)v53 == v54 ) - { -LABEL_112: - v55 = std::time_get>::_M_extract_num( - a1, - v103, - a3, - a4, - v106, - 0, - 23, - 2u, - a5, - &v104); - a1 = std::time_get>::_M_extract_num( - v55, - v56, - a3, - a4, - v106, - 0, - 59, - 2u, - a5, - &v104); - a2 = v57; - } - } - break; - case 32: - v58 = (_DWORD *)v99[2]; - v106[0] = v58[18]; - v106[1] = v58[19]; - v106[2] = v58[20]; - v107 = v58[21]; - v108 = v58[22]; - v109 = v58[23]; - v59 = v58[24]; -LABEL_114: - v110 = v59; - v60 = std::time_get>::_M_extract_name( - __PAIR64__(a2, (unsigned int)a1), - a3, - a4, - &v105, - (int)v106, - 7, - a5, - &v104); - a2 = HIDWORD(v60); - a1 = (_DWORD *)v60; - if ( !v104 ) - a7[6] = v105; - break; - case 33: - case 39: - v29 = (_DWORD *)v99[2]; - v106[0] = v29[37]; - v106[1] = v29[38]; - v106[2] = v29[39]; - v107 = v29[40]; - v108 = v29[41]; - v109 = v29[42]; - v110 = v29[43]; - v111 = v29[44]; - v112 = v29[45]; - v113 = v29[46]; - v114 = v29[47]; - v30 = v29[48]; -LABEL_57: - v115 = v30; - v31 = std::time_get>::_M_extract_name( - __PAIR64__(a2, (unsigned int)a1), - a3, - a4, - &v105, - (int)v106, - 12, - a5, - &v104); - a2 = HIDWORD(v31); - a1 = (_DWORD *)v31; - if ( !v104 ) - a7[4] = v105; - break; - case 34: - v61 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - &v104, - a7, - *(char **)(v99[2] + 24)); - goto LABEL_117; - case 35: - v88 = a5; - v87 = 1; - goto LABEL_126; - case 36: - if ( a1 && a2 == -1 ) - { - v68 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v68 < a1[3] ) - { - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * *v68) & 0x20) != 0 ) - goto LABEL_133; - goto LABEL_164; - } - v69 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); - if ( v69 == -1 ) - a1 = 0; - } - else - { - LOBYTE(v69) = a2; - } - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)v69) & 0x20) != 0 ) - { - v68 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v68 < a1[3] ) -LABEL_133: - a1[2] = v68 + 1; - else - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - v66 = std::time_get>::_M_extract_num( - a1, - -1, - a3, - a4, - &v105, - 1, - 9, - 1u, - a5, - &v104); - goto LABEL_127; - } -LABEL_164: - v88 = a5; - v87 = 10; -LABEL_126: - v66 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - v87, - 31, - 2u, - v88, - &v104); -LABEL_127: - a1 = v66; - a2 = v67; - if ( !v104 ) - a7[3] = v105; - break; - case 44: - a1 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v105, - 1, - 12, - 2u, - a5, - &v104); - a2 = v70; - if ( !v104 ) - a7[4] = v105 - 1; - break; - case 45: - if ( a1 && a2 == -1 ) - { - v41 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v41 >= a1[3] ) - { - v79 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); - if ( v79 == -1 ) - { - v42 = 255; - v43 = -1; - a1 = 0; - } - else - { - v43 = v79; - v42 = (unsigned __int8)v79; - } - } - else - { - v42 = *v41; - v43 = v42; - } - } - else - { - v43 = a2; - v42 = (unsigned __int8)a2; - } - v44 = v10[v42 + 285]; - if ( v44 ) - goto LABEL_88; - v45 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v45 != std::ctype::do_narrow ) - v43 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v45)(v10, (char)v43, 0); - if ( (_BYTE)v43 ) - { - v10[v42 + 285] = v43; - v44 = v43; -LABEL_88: - if ( v44 == 10 ) - goto LABEL_89; - } - goto LABEL_47; - case 51: - if ( a1 && a2 == -1 ) - { - v71 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v71 >= a1[3] ) - { - v78 = (*(int (__fastcall **)(_DWORD *, int))(*a1 + 36))(a1, v18); - if ( v78 == -1 ) - { - v72 = 255; - v43 = -1; - a1 = 0; - } - else - { - v43 = v78; - v72 = (unsigned __int8)v78; - } - } - else - { - v72 = *v71; - v43 = v72; - } - } - else - { - v43 = a2; - v72 = (unsigned __int8)a2; - } - v73 = v10[v72 + 285]; - if ( v73 ) - goto LABEL_151; - v74 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v74 != std::ctype::do_narrow ) - v43 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v74)(v10, (char)v43, 0); - if ( !(_BYTE)v43 ) - goto LABEL_47; - v10[v72 + 285] = v43; - v73 = v43; -LABEL_151: - if ( v73 != 9 ) - goto LABEL_47; -LABEL_89: - v46 = a1[2]; - if ( v46 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *, int))(*a1 + 40))(a1, v43); - else - a1[2] = v46 + 1; - a2 = -1; - break; - case 55: - v61 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - &v104, - a7, - *(char **)(v99[2] + 8)); -LABEL_117: - a1 = v61; - a2 = v62; - break; - default: - goto LABEL_47; - } -LABEL_48: - v8 = v90 + 1; - } - else - { - v15 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v15 != std::ctype::do_narrow ) - v13 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v15)(v10, (char)v97, 0); - if ( v13 ) - { - v10[v97 + 285] = v13; - v14 = v13; - goto LABEL_15; - } -LABEL_16: - v16 = *v93; - if ( !a1 || a2 != -1 ) - { - LOBYTE(v17) = a2; - goto LABEL_19; - } - v24 = (_BYTE *)a1[2]; - if ( (unsigned int)v24 >= a1[3] ) - { - v101 = *v93; - v17 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v16 = v101; - if ( v17 == -1 ) - a1 = 0; -LABEL_19: - if ( v16 != (_BYTE)v17 ) - goto LABEL_20; - v24 = (_BYTE *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - { -LABEL_40: - a1[2] = v24 + 1; - goto LABEL_41; - } - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_41: - a2 = -1; - ++v8; - } - else - { - if ( v16 == *v24 ) - goto LABEL_40; -LABEL_20: - v104 |= 4u; - ++v8; - } - } - } - if ( v104 || v8 != v96 ) -LABEL_32: - *a6 |= 4u; - return a1; -} -// 45ABC8: variable 'v27' is possibly undefined -// 45AD40: variable 'v18' is possibly undefined -// 45ADA6: variable 'v35' is possibly undefined -// 45AE59: variable 'v36' is possibly undefined -// 45AF1F: variable 'v39' is possibly undefined -// 45B207: variable 'v56' is possibly undefined -// 45B211: variable 'v57' is possibly undefined -// 45B337: variable 'v62' is possibly undefined -// 45B439: variable 'v67' is possibly undefined -// 45B560: variable 'v70' is possibly undefined -// 45B689: variable 'Str' is possibly undefined -// 45B884: variable 'v81' is possibly undefined -// 50C560: using guessed type void *std::__timepunct_cache::_S_timezones[2]; - -//----- (0045B970) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - unsigned int *a5, - int a6, - unsigned int a7, - int a8, - _DWORD *a9) -{ - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // dl - char v13; // bl - unsigned int v14; // esi - unsigned int v15; // edi - char v16; // dl - char v17; // bl - unsigned int v18; // edx - unsigned int *v19; // ecx - unsigned int v20; // eax - char *v22; // eax - unsigned int v23; // eax - int v24; // edx - unsigned int v25; // ebx - int v26; // esi - char v27; // al - int v28; // ecx - unsigned int v29; // eax - int v30; // eax - void *v31; // esp - void *v32; // esp - int v33; // ebx - int v34; // eax - int v35; // eax - _DWORD *v36; // ebx - int v37; // eax - char v38; // dl - bool v39; // zf - _DWORD *v40; // eax - int v41; // eax - bool v42; // zf - _DWORD *v43; // eax - _DWORD *v44; // ebx - int v45; // eax - int v46; // eax - char v47; // dl - bool v48; // zf - _DWORD *v49; // eax - _BYTE *v50; // eax - int v51; // eax - int v52; // eax - bool v53; // zf - _DWORD *v54; // eax - _DWORD *v55; // edi - int v56; // eax - bool v57; // zf - char v58; // si - char v59; // al - _DWORD *v60; // eax - _BYTE v61[12]; // [esp+10h] [ebp-48h] BYREF - _DWORD *v62; // [esp+1Ch] [ebp-3Ch] - _DWORD *v63; // [esp+20h] [ebp-38h] - int v64; // [esp+24h] [ebp-34h] - _DWORD *v65; // [esp+28h] [ebp-30h] - bool v66; // [esp+2Eh] [ebp-2Ah] - char v67; // [esp+2Fh] [ebp-29h] - char *v68; // [esp+30h] [ebp-28h] - unsigned int *v69; // [esp+34h] [ebp-24h] - unsigned int *v70; // [esp+38h] [ebp-20h] - _DWORD *v71; // [esp+3Ch] [ebp-1Ch] - - v65 = a1; - v64 = a2; - v63 = a3; - v68 = (char *)std::use_facet>(a8 + 108); - v9 = 16 * ((8 * a7 + 27) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v70 = (unsigned int *)v61; - v12 = a2 == -1; - LOBYTE(v71) = v12 & (a1 != 0); - if ( (_BYTE)v71 ) - { - v12 = 0; - if ( v65[2] >= v65[3] ) - { - v34 = *v65; - LOBYTE(v69) = 0; - v35 = (*(int (__fastcall **)(_DWORD *))(v34 + 36))(v65); - v12 = (char)v69; - if ( v35 == -1 ) - { - v12 = (char)v71; - v65 = 0; - LOBYTE(v71) = 0; - } - } - } - v66 = a4 == -1; - v13 = v66 && a3 != 0; - if ( v13 ) - { - if ( a3[2] >= a3[3] ) - { - v51 = *a3; - LOBYTE(v69) = v12; - v52 = (*(int (__fastcall **)(_DWORD *))(v51 + 36))(a3); - v12 = (char)v69; - v53 = v52 == -1; - if ( v52 != -1 ) - v13 = 0; - v54 = 0; - if ( !v53 ) - v54 = a3; - v63 = v54; - } - else - { - v13 = 0; - } - } - else - { - v13 = v66; - } - if ( v12 == v13 ) - { - v62 = 0; - v14 = 0; - v15 = 0; - goto LABEL_6; - } - if ( (_BYTE)v71 ) - { - v50 = (_BYTE *)v65[2]; - if ( (unsigned int)v50 >= v65[3] ) - { - v55 = v65; - v56 = (*(int (__fastcall **)(_DWORD *))(*v65 + 36))(v65); - v57 = v56 == -1; - v58 = v56; - v59 = -1; - if ( !v57 ) - v59 = v58; - LOBYTE(v71) = v59; - v60 = 0; - if ( !v57 ) - v60 = v55; - v65 = v60; - } - else - { - LOBYTE(v71) = *v50; - } - } - else - { - LOBYTE(v71) = a2; - } - v14 = 2 * a7; - if ( !(2 * a7) ) - { - v62 = 0; - v15 = 0; - goto LABEL_6; - } - v69 = (unsigned int *)(2 * a7); - v24 = a6; - v25 = 0; - v15 = 0; - v26 = (int)v68; - do - { - while ( 1 ) - { - v28 = **(char **)(v24 + 4 * v25); - if ( (_BYTE)v28 == (_BYTE)v71 ) - break; - a6 = v24; - v27 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v26 + 8))(v26, v28); - v24 = a6; - if ( v27 == (_BYTE)v71 ) - break; - if ( (unsigned int *)++v25 == v69 ) - goto LABEL_50; - } - v70[v15++] = v25++; - } - while ( (unsigned int *)v25 != v69 ); -LABEL_50: - v62 = 0; - v14 = 0; - if ( v15 ) - { - v29 = v65[2]; - if ( v29 >= v65[3] ) - (*(void (__fastcall **)(_DWORD *, int))(*v65 + 40))(v65, v24); - else - v65[2] = v29 + 1; - v30 = 16 * ((4 * v15 + 27) >> 4); - v31 = alloca(v30); - v14 = 0; - v32 = alloca(v30); - v71 = (_DWORD *)v15; - v62 = v61; - v69 = (unsigned int *)v61; - v33 = (int)v70; - do - { - v69[v14] = strlen(*(const char **)(a6 + 4 * *(_DWORD *)(v33 + 4 * v14))); - ++v14; - } - while ( v71 != (_DWORD *)v14 ); - v64 = -1; - v15 = 1; - } -LABEL_6: - while ( 2 ) - { - v16 = v64 == -1; - LOBYTE(v71) = v16 & (v65 != 0); - if ( (_BYTE)v71 ) - { - if ( v65[2] >= v65[3] ) - { - v44 = v65; - v45 = *v65; - LOBYTE(v69) = v64 == -1; - v46 = (*(int (__fastcall **)(_DWORD *))(v45 + 36))(v65); - v47 = (char)v71; - v48 = v46 == -1; - if ( v46 != -1 ) - v47 = 0; - v49 = 0; - if ( !v48 ) - v49 = v44; - LOBYTE(v71) = v47; - v16 = (char)v69; - v65 = v49; - } - else - { - LOBYTE(v71) = 0; - } - } - else - { - LOBYTE(v71) = v64 == -1; - } - v17 = v66 && v63 != 0; - if ( v17 ) - { - if ( v63[2] < v63[3] ) - { - if ( !(_BYTE)v71 ) - break; - goto LABEL_11; - } - LOBYTE(v69) = v16; - v41 = (*(int (__fastcall **)(_DWORD *))(*v63 + 36))(v63); - v16 = (char)v69; - v42 = v41 == -1; - if ( v41 != -1 ) - v17 = 0; - v43 = 0; - if ( !v42 ) - v43 = v63; - v63 = v43; - } - else - { - v17 = v66; - } - if ( (_BYTE)v71 == v17 ) - break; -LABEL_11: - if ( v65 && v16 ) - { - v22 = (char *)v65[2]; - if ( (unsigned int)v22 >= v65[3] ) - { - v36 = v65; - v37 = (*(int (__fastcall **)(_DWORD *))(*v65 + 36))(v65); - v38 = -1; - v39 = v37 == -1; - if ( v37 != -1 ) - v38 = v37; - v40 = 0; - if ( !v39 ) - v40 = v36; - v67 = v38; - v65 = v40; - } - else - { - v67 = *v22; - } - } - else - { - v67 = v64; - } - if ( !v14 ) - { -LABEL_30: - *a9 |= 4u; - return v65; - } - v18 = 0; - v68 = 0; - v71 = v62; - do - { - while ( 1 ) - { - v19 = &v71[v18]; - if ( *v19 > v15 ) - break; - ++v68; - ++v18; -LABEL_17: - if ( v14 <= v18 ) - goto LABEL_21; - } - v69 = &v70[v18]; - if ( v67 == *(_BYTE *)(*(_DWORD *)(a6 + 4 * *v69) + v15) ) - { - ++v18; - goto LABEL_17; - } - *v69 = v70[--v14]; - *v19 = v71[v14]; - } - while ( v14 > v18 ); -LABEL_21: - if ( v68 != (char *)v14 ) - { - v20 = v65[2]; - if ( v20 >= v65[3] ) - (*(void (__fastcall **)(_DWORD *))(*v65 + 40))(v65); - else - v65[2] = v20 + 1; - v64 = -1; - ++v15; - continue; - } - break; - } - if ( v14 != 1 ) - { - if ( v14 == 2 && (*v62 == v15 || v62[1] == v15) ) - goto LABEL_39; - goto LABEL_30; - } - if ( *v62 != v15 ) - goto LABEL_30; -LABEL_39: - v23 = *v70; - if ( *v70 >= a7 ) - v23 = *v70 - a7; - *a5 = v23; - return v65; -} - -//----- (0045BE10) -------------------------------------------------------- -_DWORD *__thiscall std::time_get>::get( - void *this, - _DWORD *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - _DWORD *a7, - _DWORD *a8, - unsigned __int8 *a9, - unsigned __int8 *a10) -{ - unsigned __int8 *v10; // edi - _DWORD *v12; // ebp - int v13; // edx - char v14; // dl - char v15; // bl - char v16; // dl - char v17; // bl - unsigned int v18; // eax - char v19; // dl - char v20; // bl - char v21; // bl - signed __int8 v22; // dl - int (__stdcall *v23)(unsigned __int8, int); // eax - unsigned __int8 v24; // dl - int (__stdcall *v25)(unsigned __int8, int); // eax - int v26; // ecx - __int64 (__thiscall *v27)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int); // eax - _BYTE *v28; // eax - char v29; // dl - _BYTE *v30; // edi - _DWORD *v31; // eax - int v32; // edx - char v33; // bl - char v34; // dl - char v35; // al - unsigned __int8 *i; // edi - int j; // ebp - bool v39; // al - bool v40; // di - char v41; // dl - char v42; // bl - int v43; // eax - unsigned __int8 *v44; // eax - int v45; // edi - char v46; // al - int (__stdcall *v47)(unsigned __int8, int); // eax - int (__stdcall *v48)(unsigned __int8); // eax - __int64 v49; // kr00_8 - char *v50; // eax - int v51; // eax - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - char *v55; // eax - signed __int8 v56; // al - int v57; // eax - int v58; // eax - bool v59; // zf - _DWORD *v60; // eax - int v61; // eax - int v62; // eax - bool v63; // [esp+4Bh] [ebp-51h] - bool v65; // [esp+50h] [ebp-4Ch] - char v66; // [esp+50h] [ebp-4Ch] - _DWORD *v67; // [esp+50h] [ebp-4Ch] - char v68; // [esp+50h] [ebp-4Ch] - char v70; // [esp+54h] [ebp-48h] - bool v71; // [esp+54h] [ebp-48h] - int v72; // [esp+58h] [ebp-44h] - unsigned __int8 *v73; // [esp+58h] [ebp-44h] - char v74; // [esp+58h] [ebp-44h] - int v76; // [esp+60h] [ebp-3Ch] - unsigned __int8 v77; // [esp+60h] [ebp-3Ch] - int v78; // [esp+68h] [ebp-34h] - char v79; // [esp+7Ch] [ebp-20h] BYREF - char v80; // [esp+7Dh] [ebp-1Fh] - char v81; // [esp+7Eh] [ebp-1Eh] - char v82; // [esp+7Fh] [ebp-1Dh] - unsigned __int8 *v83; // [esp+BCh] [ebp+20h] - - v10 = a9; - v12 = std::use_facet>(a6 + 108); - *a7 = 0; - if ( a9 == a10 ) - return a2; - v63 = a5 == -1; - while ( 1 ) - { - v65 = a3 == -1; - if ( !v65 || a2 == 0 ) - { - v19 = a3 == -1; - goto LABEL_19; - } - if ( a2[2] >= a2[3] ) - { - v57 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v19 = v65 && a2 != 0; - if ( v57 != -1 ) - v19 = 0; - if ( v57 == -1 ) - a2 = 0; -LABEL_19: - v20 = v63 && a4 != 0; - if ( !v20 ) - goto LABEL_20; - goto LABEL_84; - } - v19 = 0; - v20 = v63 && a4 != 0; - if ( !v20 ) - { -LABEL_20: - v20 = a5 == -1; - goto LABEL_21; - } -LABEL_84: - if ( a4[2] >= a4[3] ) - { - v74 = v19; - v58 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v19 = v74; - v59 = v58 == -1; - if ( v58 != -1 ) - v20 = 0; - v60 = 0; - if ( !v59 ) - v60 = a4; - a4 = v60; -LABEL_21: - if ( v19 == v20 ) - goto LABEL_86; - goto LABEL_22; - } - if ( !v19 ) - { -LABEL_86: - *a7 = 6; - return a2; - } -LABEL_22: - v21 = *((_BYTE *)v12 + *v10 + 285); - v72 = *v10; - v22 = *v10; - if ( !v21 ) - { - v23 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); - if ( v23 != std::ctype::do_narrow ) - v22 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v23)(v12, v22, 0); - if ( !v22 ) - goto LABEL_3; - v21 = v22; - *((_BYTE *)v12 + v72 + 285) = v22; - } - if ( v21 == 37 ) - { - v73 = v10 + 1; - if ( a10 == v10 + 1 ) - break; - v76 = v10[1]; - v24 = v10[1]; - v66 = *((_BYTE *)v12 + v76 + 285); - if ( !v66 ) - { - v25 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); - if ( v25 != std::ctype::do_narrow ) - v24 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v25)(v12, (char)v76, 0); - if ( !v24 ) - { - v66 = 0; - v26 = 0; - v78 = 0; - goto LABEL_37; - } - v66 = v24; - *((_BYTE *)v12 + v76 + 285) = v24; - } - v24 = v66; - if ( v66 == 69 || v66 == 79 ) - { - v73 = v10 + 2; - if ( a10 == v10 + 2 ) - break; - v45 = v10[2]; - v46 = *((_BYTE *)v12 + v45 + 285); - v78 = v66; - v24 = v45; - if ( v46 ) - { - v26 = v46; - v24 = *((_BYTE *)v12 + v45 + 285); - } - else - { - v26 = (char)v45; - v47 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); - if ( v47 != std::ctype::do_narrow ) - { - v56 = ((int (__fastcall *)(_DWORD *, int, _DWORD, _DWORD))v47)(v12, v45, (char)v45, 0); - v26 = v56; - v24 = v56; - } - if ( v24 ) - *((_BYTE *)v12 + v45 + 285) = v24; - } - } - else - { - v78 = 0; - v26 = v66; - v66 = 0; - } -LABEL_37: - v77 = v24; - v27 = *(__int64 (__thiscall **)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int))(*(_DWORD *)this + 32); - if ( (char *)v27 == (char *)std::time_get>::do_get ) - { - v28 = std::use_facet>(a6 + 108); - v29 = v77; - v30 = v28; - *a7 = 0; - if ( v28[28] ) - { - v21 = v28[66]; - } - else - { - std::ctype::_M_widen_init((int)v28); - v29 = v77; - v48 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v30 + 24); - if ( v48 != std::ctype::do_widen ) - { - v21 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v48)(v30, v77, 37); - v29 = v77; - } - } - v79 = v21; - if ( v66 ) - { - v81 = v29; - v82 = 0; - v80 = v66; - } - else - { - v80 = v29; - v81 = 0; - } - v31 = std::time_get>::_M_extract_via_format( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - &v79); - a2 = v31; - v33 = v32 == -1; - a3 = v32; - v34 = v33 & (v31 != 0); - if ( v34 ) - { - v33 = 0; - if ( v31[2] >= v31[3] ) - { - v68 = v34; - if ( (*(int (__fastcall **)(_DWORD *))(*v31 + 36))(v31) == -1 ) - { - v33 = v68; - a2 = 0; - } - } - } - if ( a4 && a5 == -1 ) - { - v35 = 0; - if ( a4[2] >= a4[3] ) - v35 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4) == -1; - } - else - { - v35 = a5 == -1; - } - if ( v35 == v33 ) - *a7 |= 2u; - } - else - { - v49 = v27(this, a2, a3, a4, a5, a6, a7, a8, v26, v78); - a3 = HIDWORD(v49); - a2 = (_DWORD *)v49; - } - v10 = v73 + 1; - if ( a10 == v73 + 1 ) - return a2; - goto LABEL_16; - } -LABEL_3: - v13 = v12[6]; - if ( (*(_BYTE *)(v13 + 2 * *v10) & 0x20) != 0 ) - { - for ( i = v10 + 1; a10 != i; ++i ) - { - if ( (*(_BYTE *)(v13 + 2 * *i) & 0x20) == 0 ) - break; - } - v83 = i; - v67 = v12; - for ( j = a3; ; j = -1 ) - { - v39 = j == -1; - v40 = v39; - if ( v39 && a2 != 0 ) - { - if ( a2[2] >= a2[3] ) - { - v71 = v39 && a2 != 0; - v54 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v41 = v71; - if ( v54 != -1 ) - v41 = 0; - if ( v54 == -1 ) - a2 = 0; - } - else - { - v41 = 0; - } - } - else - { - v41 = j == -1; - } - v42 = v63 && a4 != 0; - if ( !v42 ) - break; - if ( a4[2] >= a4[3] ) - { - v70 = v41; - v51 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v41 = v70; - v52 = v51 == -1; - if ( v51 != -1 ) - v42 = 0; - v53 = 0; - if ( !v52 ) - v53 = a4; - a4 = v53; -LABEL_59: - if ( v41 == v42 ) - goto LABEL_72; - goto LABEL_60; - } - if ( !v41 ) - { -LABEL_72: - a3 = j; - v10 = v83; - v12 = v67; - goto LABEL_15; - } -LABEL_60: - if ( a2 && v40 ) - { - v44 = (unsigned __int8 *)a2[2]; - if ( (unsigned int)v44 < a2[3] ) - { - if ( (*(_BYTE *)(v67[6] + 2 * *v44) & 0x20) == 0 ) - { - a3 = -1; - v10 = v83; - v12 = v67; - goto LABEL_15; - } -LABEL_65: - a2[2] = v44 + 1; - continue; - } - v43 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - if ( v43 == -1 ) - a2 = 0; - } - else - { - LOBYTE(v43) = j; - } - if ( (*(_BYTE *)(v67[6] + 2 * (unsigned __int8)v43) & 0x20) == 0 ) - goto LABEL_72; - v44 = (unsigned __int8 *)a2[2]; - if ( (unsigned int)v44 < a2[3] ) - goto LABEL_65; - (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); - } - v42 = a5 == -1; - goto LABEL_59; - } - if ( a2 && a3 == -1 ) - { - v50 = (char *)a2[2]; - if ( (unsigned int)v50 >= a2[3] ) - { - v61 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v14 = v61; - if ( v61 == -1 ) - v14 = -1; - if ( v61 == -1 ) - a2 = 0; - } - else - { - v14 = *v50; - } - } - else - { - v14 = a3; - } - v15 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, v14); - if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, (char)*v10) != v15 ) - { - if ( a2 && a3 == -1 ) - { - v55 = (char *)a2[2]; - if ( (unsigned int)v55 >= a2[3] ) - { - v62 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v16 = v62; - if ( v62 == -1 ) - v16 = -1; - if ( v62 == -1 ) - a2 = 0; - } - else - { - v16 = *v55; - } - } - else - { - v16 = a3; - } - v17 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, v16); - if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, (char)*v10) != v17 ) - break; - } - v18 = a2[2]; - if ( v18 >= a2[3] ) - (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); - else - a2[2] = v18 + 1; - a3 = -1; - ++v10; -LABEL_15: - if ( a10 == v10 ) - return a2; -LABEL_16: - if ( *a7 ) - return a2; - } - *a7 = 4; - return a2; -} -// 45C571: conditional instruction was optimized away because eax.4==FFFFFFFF -// 45C107: variable 'v32' is possibly undefined - -//----- (0045C6A0) -------------------------------------------------------- -_DWORD *__thiscall std::time_get>::get( - void *this, - _DWORD *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - _DWORD *a7, - _DWORD *a8, - char a9, - char a10) -{ - _DWORD *(__stdcall *v10)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // eax - _BYTE *v11; // eax - char v12; // dl - _DWORD *v13; // esi - int v14; // edx - char v15; // dl - char v16; // al - int (__stdcall *v18)(unsigned __int8); // eax - int v19; // eax - int v20; // eax - char v21; // [esp+24h] [ebp-48h] - char v22; // [esp+28h] [ebp-44h] - _BYTE *v23; // [esp+3Ch] [ebp-30h] - char v24; // [esp+4Ch] [ebp-20h] BYREF - char v25; // [esp+4Dh] [ebp-1Fh] - char v26; // [esp+4Eh] [ebp-1Eh] - char v27; // [esp+4Fh] [ebp-1Dh] - - v10 = *(_DWORD *(__stdcall **)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); - if ( v10 != std::time_get>::do_get ) - return (_DWORD *)((int (__thiscall *)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( - this, - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - a10); - v11 = std::use_facet>(a6 + 108); - *a7 = 0; - if ( v11[28] ) - { - v12 = v11[66]; - } - else - { - v23 = v11; - std::ctype::_M_widen_init((int)v11); - v12 = 37; - v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); - if ( v18 != std::ctype::do_widen ) - v12 = v18(37u); - } - v24 = v12; - if ( a10 ) - { - v27 = 0; - v25 = a10; - v26 = a9; - } - else - { - v26 = 0; - v25 = a9; - } - v13 = std::time_get>::_M_extract_via_format(a2, a3, a4, a5, a6, a7, a8, &v24); - v15 = v14 == -1; - v22 = v15 & (v13 != 0); - if ( v22 ) - { - v15 = 0; - if ( v13[2] >= v13[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13); - v15 = 0; - if ( v20 == -1 ) - v15 = v22; - if ( v20 == -1 ) - v13 = 0; - } - } - v16 = a5 == -1; - if ( a4 ) - { - if ( a5 == -1 ) - { - v16 = 0; - if ( a4[2] >= a4[3] ) - { - v21 = v15; - v19 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v15 = v21; - v16 = v19 == -1; - } - } - } - if ( v15 == v16 ) - *a7 |= 2u; - return v13; -} -// 45C781: variable 'v14' is possibly undefined - -//----- (0045C8E0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - char a8, - char a9) -{ - _BYTE *v9; // ebp - char v10; // dl - _DWORD *v11; // esi - int v12; // edx - char v13; // dl - char v14; // bp - char v15; // al - int (__stdcall *v17)(unsigned __int8); // eax - int v18; // eax - int v19; // eax - char v20; // [esp+20h] [ebp-3Ch] - char v21; // [esp+3Ch] [ebp-20h] BYREF - char v22; // [esp+3Dh] [ebp-1Fh] - char v23; // [esp+3Eh] [ebp-1Eh] - char v24; // [esp+3Fh] [ebp-1Dh] - - v9 = std::use_facet>(a5 + 108); - *a6 = 0; - if ( v9[28] ) - { - v10 = v9[66]; - } - else - { - std::ctype::_M_widen_init((int)v9); - v10 = 37; - v17 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v9 + 24); - if ( v17 != std::ctype::do_widen ) - v10 = ((int (__fastcall *)(_BYTE *, int, int))v17)(v9, 37, 37); - } - v21 = v10; - if ( a9 ) - { - v24 = 0; - v22 = a9; - v23 = a8; - } - else - { - v23 = 0; - v22 = a8; - } - v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, a7, &v21); - v13 = v12 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v13 = 0; - if ( v11[2] >= v11[3] ) - { - v19 = (*(int (__fastcall **)(_DWORD *))(*v11 + 36))(v11); - v13 = 0; - if ( v19 == -1 ) - { - v13 = v14; - v11 = 0; - } - } - } - v15 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v15 = 0; - if ( a3[2] >= a3[3] ) - { - v20 = v13; - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v13 = v20; - v15 = v18 == -1; - } - } - } - if ( v13 == v15 ) - *a6 |= 2u; - return v11; -} -// 45CA89: conditional instruction was optimized away because eax.4==FFFFFFFF -// 45C99D: variable 'v12' is possibly undefined - -//----- (0045CAA0) -------------------------------------------------------- -int __fastcall std::time_get>::get_date(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); -} - -//----- (0045CAB0) -------------------------------------------------------- -int __fastcall std::time_get>::get_time(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); -} - -//----- (0045CAC0) -------------------------------------------------------- -int __fastcall std::time_get>::get_year(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); -} - -//----- (0045CAD0) -------------------------------------------------------- -int __fastcall std::time_get>::date_order(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); - if ( v1 == std::time_get>::do_date_order ) - return 0; - else - return v1(); -} - -//----- (0045CAF0) -------------------------------------------------------- -int *__stdcall std::time_get>::do_get_date( - int *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _DWORD *v7; // eax - int *v8; // ecx - int *v9; // ebp - __int16 v10; // dx - _BOOL2 v11; // bx - bool v12; // cl - __int16 *v14; // eax - __int16 v15; // ax - bool v16; // si - __int16 *v17; // eax - __int16 v18; // ax - int *v19; // [esp+30h] [ebp-2Ch] - - v7 = std::use_facet>(a5 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - *(wchar_t **)(v7[2] + 8)); - v9 = v8; - v11 = v10 == -1; - if ( v11 && v8 != 0 ) - { - v16 = v11 && v8 != 0; - v17 = (__int16 *)v8[2]; - if ( (unsigned int)v17 >= v8[3] ) - { - v19 = v8; - v18 = (*(int (**)(void))(*v8 + 36))(); - v8 = v19; - } - else - { - v18 = *v17; - } - LOBYTE(v11) = 0; - v9 = 0; - if ( v18 == -1 ) - LOBYTE(v11) = v16; - if ( v18 != -1 ) - v9 = v8; - } - v12 = (_WORD)a4 == 0xFFFF; - if ( a3 && (_WORD)a4 == 0xFFFF ) - { - v14 = (__int16 *)a3[2]; - if ( (unsigned int)v14 >= a3[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v15 = *v14; - v12 = v15 == -1; - } - if ( v11 == v12 ) - *a6 |= 2u; - return v9; -} -// 45CB6F: variable 'v10' is possibly undefined - -//----- (0045CC20) -------------------------------------------------------- -int *__stdcall std::time_get>::do_get_time( - int *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _DWORD *v7; // eax - int *v8; // ecx - int *v9; // ebp - __int16 v10; // dx - _BOOL2 v11; // bx - bool v12; // cl - __int16 *v14; // eax - __int16 v15; // ax - bool v16; // si - __int16 *v17; // eax - __int16 v18; // ax - int *v19; // [esp+30h] [ebp-2Ch] - - v7 = std::use_facet>(a5 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - *(wchar_t **)(v7[2] + 16)); - v9 = v8; - v11 = v10 == -1; - if ( v11 && v8 != 0 ) - { - v16 = v11 && v8 != 0; - v17 = (__int16 *)v8[2]; - if ( (unsigned int)v17 >= v8[3] ) - { - v19 = v8; - v18 = (*(int (**)(void))(*v8 + 36))(); - v8 = v19; - } - else - { - v18 = *v17; - } - LOBYTE(v11) = 0; - v9 = 0; - if ( v18 == -1 ) - LOBYTE(v11) = v16; - if ( v18 != -1 ) - v9 = v8; - } - v12 = (_WORD)a4 == 0xFFFF; - if ( a3 && (_WORD)a4 == 0xFFFF ) - { - v14 = (__int16 *)a3[2]; - if ( (unsigned int)v14 >= a3[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v15 = *v14; - v12 = v15 == -1; - } - if ( v11 == v12 ) - *a6 |= 2u; - return v9; -} -// 45CC9F: variable 'v10' is possibly undefined - -//----- (0045CD50) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_year( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - __int16 v7; // dx - _DWORD *v8; // ecx - _DWORD *v9; // ebp - int v10; // ebx - char v11; // bl - char v12; // cl - __int16 *v14; // eax - __int16 v15; // ax - __int16 *v16; // eax - __int16 v17; // ax - bool v18; // zf - _DWORD *v19; // eax - char v20; // [esp+40h] [ebp-3Ch] - _DWORD *v21; // [esp+44h] [ebp-38h] - int v22; // [esp+58h] [ebp-24h] BYREF - int v23[8]; // [esp+5Ch] [ebp-20h] BYREF - - v23[0] = 0; - v8 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v22, - 0, - 9999, - 4u, - a5, - v23); - v9 = v8; - if ( v23[0] ) - { - *a6 |= 4u; - } - else - { - v10 = v22 + 100; - if ( v22 >= 0 ) - v10 = v22 - 1900; - *(_DWORD *)(a7 + 20) = v10; - } - v11 = v7 == -1; - v20 = v11 & (v8 != 0); - if ( v20 ) - { - v16 = (__int16 *)v8[2]; - if ( (unsigned int)v16 >= v8[3] ) - { - v21 = v8; - v17 = (*(int (**)(void))(*v8 + 36))(); - v8 = v21; - } - else - { - v17 = *v16; - } - v18 = v17 == -1; - v11 = 0; - if ( v17 == -1 ) - v11 = v20; - v19 = 0; - if ( !v18 ) - v19 = v8; - v9 = v19; - } - v12 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v14 = (__int16 *)a3[2]; - if ( (unsigned int)v14 >= a3[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v15 = *v14; - v12 = v15 == -1; - } - if ( v12 == v11 ) - *a6 |= 2u; - return v9; -} -// 45CE0D: variable 'v7' is possibly undefined -// 45CD50: using guessed type int var_20[8]; - -//----- (0045CEC0) -------------------------------------------------------- -int __fastcall std::time_get>::get_weekday(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); -} - -//----- (0045CED0) -------------------------------------------------------- -int std::time_get>::do_date_order() -{ - return 0; -} - -//----- (0045CEE0) -------------------------------------------------------- -int __fastcall std::time_get>::get_monthname(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); -} - -//----- (0045CEF0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_num( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int *a5, - signed int a6, - int a7, - unsigned int a8, - int a9, - _DWORD *a10) -{ - unsigned int v10; // ebp - int v12; // eax - int v13; // edi - char v14; // dl - char v15; // bl - int v16; // edx - unsigned __int8 v17; // al - unsigned int v18; // eax - __int16 *v19; // eax - __int16 v20; // ax - __int16 *v21; // eax - __int16 v22; // ax - bool v23; // zf - _DWORD *v24; // eax - unsigned __int16 *v26; // eax - bool v27; // [esp+1Bh] [ebp-31h] - unsigned int v28; // [esp+1Ch] [ebp-30h] - void *v30; // [esp+24h] [ebp-28h] - char v32; // [esp+2Eh] [ebp-1Eh] - char v33; // [esp+2Fh] [ebp-1Dh] - - v10 = 10; - v30 = std::use_facet>(a9 + 108); - if ( a8 != 2 ) - { - v12 = 1; - if ( a8 == 4 ) - v12 = 1000; - v10 = v12; - } - v28 = 0; - v32 = a4 == -1; - v13 = 0; - while ( 1 ) - { - v27 = a2 == 0xFFFF; - v14 = v27 && a1 != 0; - if ( v14 ) - break; - v14 = a2 == 0xFFFF; - v15 = v32 & (a3 != 0); - if ( v15 ) - goto LABEL_26; -LABEL_7: - if ( v14 == v32 ) - goto LABEL_33; -LABEL_8: - if ( v28 >= a8 ) - goto LABEL_33; - if ( a1 && a2 == 0xFFFF ) - { - v26 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v26 >= a1[3] ) - v16 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v16 = *v26; - if ( (_WORD)v16 == 0xFFFF ) - a1 = 0; - } - else - { - v16 = a2; - } - v17 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v30 + 48))(v30, v16, 42) - 48; - if ( v17 > 9u ) - goto LABEL_34; - v13 = (char)v17 + 10 * v13; - if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) - goto LABEL_34; - v18 = a1[2]; - v10 /= 0xAu; - if ( v18 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v18 + 2; - ++v28; - a2 = -1; - } - v19 = (__int16 *)a1[2]; - if ( (unsigned int)v19 >= a1[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v14 = v27 && a1 != 0; - } - else - { - v20 = *v19; - } - if ( v20 == -1 ) - a1 = 0; - if ( v20 != -1 ) - v14 = 0; - v15 = v32 & (a3 != 0); - if ( !v15 ) - goto LABEL_7; -LABEL_26: - v21 = (__int16 *)a3[2]; - if ( (unsigned int)v21 >= a3[3] ) - { - v33 = v14; - v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v14 = v33; - } - else - { - v22 = *v21; - } - v23 = v22 == -1; - v24 = 0; - if ( !v23 ) - v24 = a3; - a3 = v24; - if ( !v23 ) - v15 = 0; - if ( v14 != v15 ) - goto LABEL_8; -LABEL_33: - if ( v28 == a8 ) - { -LABEL_37: - *a5 = v13; - return a1; - } -LABEL_34: - if ( a8 == 4 && v28 == 2 ) - { - v13 -= 100; - goto LABEL_37; - } - *a10 |= 4u; - return a1; -} - -//----- (0045D170) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_weekday( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // ecx - int v9; // eax - __int16 v10; // dx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // bl - char v14; // si - char v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - _DWORD *v21; // [esp+40h] [ebp-6Ch] - unsigned int v22; // [esp+50h] [ebp-5Ch] BYREF - int v23; // [esp+54h] [ebp-58h] BYREF - int v24[21]; // [esp+58h] [ebp-54h] BYREF - - v23 = 0; - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v24[0] = v7[18]; - v24[1] = v7[19]; - v24[2] = v7[20]; - v24[3] = v7[21]; - v24[4] = v7[22]; - v24[5] = v7[23]; - v24[6] = v7[24]; - v24[7] = v7[11]; - v24[8] = v7[12]; - v24[9] = v7[13]; - v24[10] = v7[14]; - v24[11] = v7[15]; - v8 = v7[16]; - v9 = v7[17]; - v24[12] = v8; - v24[13] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v22, - (int)v24, - 7u, - a5, - &v23); - v12 = v11; - if ( v23 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 24) = v22; - v13 = v10 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v19 = (__int16 *)v11[2]; - if ( (unsigned int)v19 >= v11[3] ) - { - v21 = v11; - v20 = (*(int (**)(void))(*v11 + 36))(); - v11 = v21; - } - else - { - v20 = *v19; - } - v13 = 0; - v12 = 0; - if ( v20 == -1 ) - v13 = v14; - if ( v20 != -1 ) - v12 = v11; - } - v15 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v12; -} -// 45D29D: variable 'v10' is possibly undefined - -//----- (0045D360) -------------------------------------------------------- -int *__stdcall std::time_get>::_M_extract_name( - int *a1, - int a2, - _DWORD *a3, - int a4, - int **a5, - int a6, - int a7, - int a8, - _DWORD *a9) -{ - void *v9; // edi - int v10; // eax - void *v11; // esp - void *v12; // esp - int *v13; // edx - char v14; // bl - int v15; // eax - int v17; // ebx - int v18; // edx - size_t v19; // esi - __int16 v20; // ax - int v21; // ecx - int *v22; // edx - int *v23; // ebx - int *v24; // edi - size_t v25; // eax - unsigned int v26; // ebx - unsigned int v27; // esi - size_t v28; // eax - unsigned int v29; // edi - unsigned int v30; // eax - __int16 *v31; // eax - __int16 v32; // ax - bool v33; // zf - int v34; // eax - char v35; // di - char v36; // dl - int *v37; // ecx - size_t v38; // edi - int i; // eax - __int16 v40; // ax - __int16 *v41; // eax - unsigned int v42; // eax - int *v43; // ebx - const wchar_t *v44; // edi - unsigned int v45; // ebx - int *v46; // esi - unsigned int v47; // eax - __int16 *v48; // eax - __int16 v49; // ax - char v50; // di - char v51; // dl - wchar_t v52; // di - __int16 v53; // ax - _WORD *v54; // eax - __int16 *v55; // eax - __int16 v56; // ax - bool v57; // zf - _DWORD *v58; // eax - int v59; // eax - __int16 *v60; // eax - __int16 v61; // ax - bool v62; // zf - int *v63; // eax - char v64; // cl - __int16 *v65; // eax - __int16 v66; // ax - bool v67; // zf - _DWORD *v68; // eax - _WORD *v69; // eax - int v70; // eax - int v71; // eax - int v72; // eax - __int16 v73; // ax - __int16 *v74; // eax - __int16 v75; // ax - bool v76; // zf - _DWORD *v77; // eax - int v78; // [esp+10h] [ebp-38h] BYREF - _DWORD *v79; // [esp+14h] [ebp-34h] - bool v80; // [esp+1Bh] [ebp-2Dh] - int v81; // [esp+1Ch] [ebp-2Ch] - int *v82; // [esp+20h] [ebp-28h] - int *v83; // [esp+24h] [ebp-24h] - const wchar_t *v84; // [esp+28h] [ebp-20h] - size_t v85; // [esp+2Ch] [ebp-1Ch] - - v81 = a4; - v78 = a2; - LOWORD(v84) = a2; - v82 = a1; - v79 = a3; - v9 = std::use_facet>(a8 + 108); - v10 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); - v11 = alloca(v10); - v12 = alloca(v10); - v13 = &v78; - LOBYTE(v85) = (_WORD)a2 == 0xFFFF; - LOBYTE(v83) = v85 & (a1 != 0); - if ( (_BYTE)v83 ) - { - v60 = (__int16 *)a1[2]; - if ( (unsigned int)v60 >= a1[3] ) - { - v72 = *a1; - v82 = &v78; - v61 = (*(int (__fastcall **)(int *))(v72 + 36))(a1); - v13 = v82; - } - else - { - v61 = *v60; - } - v62 = v61 == -1; - v63 = 0; - v64 = (char)v83; - if ( !v62 ) - v63 = a1; - v82 = v63; - if ( !v62 ) - v64 = 0; - LOBYTE(v83) = v64; - } - else - { - LOBYTE(v83) = v85; - } - v80 = (_WORD)v81 == 0xFFFF; - v14 = v80 && a3 != 0; - if ( v14 ) - { - v65 = (__int16 *)a3[2]; - if ( (unsigned int)v65 >= a3[3] ) - { - v71 = *a3; - v81 = (int)v13; - v66 = (*(int (__fastcall **)(_DWORD *))(v71 + 36))(a3); - v13 = (int *)v81; - } - else - { - v66 = *v65; - } - v67 = v66 == -1; - v68 = 0; - if ( !v67 ) - v68 = a3; - v79 = v68; - if ( !v67 ) - v14 = 0; - } - else - { - v14 = v80; - } - if ( v14 == (_BYTE)v83 ) - goto LABEL_6; - if ( v82 && (_BYTE)v85 ) - { - v69 = (_WORD *)v82[2]; - if ( (unsigned int)v69 >= v82[3] ) - { - v83 = v13; - v73 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); - v13 = v83; - LOWORD(v85) = v73; - } - else - { - LOWORD(v85) = *v69; - } - v70 = 0; - if ( (_WORD)v85 != 0xFFFF ) - v70 = (int)v82; - v82 = (int *)v70; - } - else - { - LOWORD(v85) = (_WORD)v84; - } - if ( !a7 ) - goto LABEL_6; - v83 = v13; - v17 = 0; - v18 = a6; - v19 = 0; - do - { - while ( 1 ) - { - v21 = **(unsigned __int16 **)(v18 + 4 * v17); - if ( (_WORD)v21 == (_WORD)v85 ) - break; - a6 = v18; - v20 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v21); - v18 = a6; - if ( v20 == (_WORD)v85 ) - break; - if ( a7 == ++v17 ) - goto LABEL_17; - } - v83[v19++] = v17++; - } - while ( a7 != v17 ); -LABEL_17: - v22 = v83; - v83 = 0; - if ( v19 <= 1 ) - goto LABEL_44; - v23 = v22; - do - { - v24 = v23; - v81 = *v23; - v25 = wcslen(*(const wchar_t **)(a6 + 4 * v81)); - v85 = v19; - v26 = 1; - v27 = v25; - do - { - v28 = wcslen(*(const wchar_t **)(a6 + 4 * v24[v26])); - if ( v27 > v28 ) - v27 = v28; - ++v26; - } - while ( v26 < v85 ); - v23 = v24; - v29 = v27; - v19 = v85; - v30 = v82[2]; - if ( v30 >= v82[3] ) - (*(void (__fastcall **)(int *))(*v82 + 40))(v82); - else - v82[2] = v30 + 2; - v83 = (int *)((char *)v83 + 1); - if ( (unsigned int)v83 >= v29 ) - goto LABEL_73; - v31 = (__int16 *)v82[2]; - if ( (unsigned int)v31 >= v82[3] ) - v32 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); - else - v32 = *v31; - v33 = v32 == -1; - v34 = 0; - if ( !v33 ) - v34 = (int)v82; - v82 = (int *)v34; - v35 = v33; - v36 = v80 && v79 != 0; - if ( v36 ) - { - v55 = (__int16 *)v79[2]; - if ( (unsigned int)v55 >= v79[3] ) - { - LOBYTE(v85) = v80 && v79 != 0; - v56 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); - v36 = v85; - } - else - { - v56 = *v55; - } - v57 = v56 == -1; - v58 = 0; - if ( !v57 ) - v58 = v79; - v79 = v58; - if ( !v57 ) - v36 = 0; - if ( v35 == v36 ) - goto LABEL_73; - } - else if ( v33 == v80 ) - { - goto LABEL_73; - } - v37 = v82; - v38 = 0; - v84 = (const wchar_t *)(2 * (_DWORD)v83); - for ( i = v81; ; i = v23[v38] ) - { - LOWORD(v85) = *(const wchar_t *)((char *)v84 + *(_DWORD *)(a6 + 4 * i)); - v40 = -1; - if ( v37 ) - { - v41 = (__int16 *)v37[2]; - if ( (unsigned int)v41 >= v37[3] ) - { - v59 = *v37; - v82 = v37; - v40 = (*(int (**)(void))(v59 + 36))(); - v37 = v82; - } - else - { - v40 = *v41; - } - if ( v40 == -1 ) - v37 = 0; - } - if ( (_WORD)v85 == v40 ) - break; - v23[v38] = v23[--v19]; - if ( v19 <= v38 ) - goto LABEL_42; -LABEL_34: - ; - } - if ( v19 > ++v38 ) - goto LABEL_34; -LABEL_42: - v82 = v37; - } - while ( v19 > 1 ); - LOWORD(v84) = -1; - v22 = v23; -LABEL_44: - if ( v19 == 1 ) - { - v42 = v82[2]; - if ( v42 >= v82[3] ) - { - v85 = (size_t)v22; - (*(void (__fastcall **)(int *))(*v82 + 40))(v82); - v22 = (int *)v85; - } - else - { - v82[2] = v42 + 2; - } - v43 = v83; - v44 = *(const wchar_t **)(a6 + 4 * *v22); - v83 = (int *)*v22; - v45 = (unsigned int)v43 + 1; - v85 = wcslen(v44); - if ( v45 < v85 ) - { - v84 = v44; - v46 = v82; - do - { - v48 = (__int16 *)v46[2]; - if ( (unsigned int)v48 >= v46[3] ) - v49 = (*(int (__fastcall **)(int *))(*v46 + 36))(v46); - else - v49 = *v48; - v50 = v49 == -1; - if ( v49 == -1 ) - v46 = 0; - v51 = v80 && v79 != 0; - if ( v51 ) - { - v74 = (__int16 *)v79[2]; - if ( (unsigned int)v74 >= v79[3] ) - { - LOBYTE(v82) = v80 && v79 != 0; - v75 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); - v51 = (char)v82; - } - else - { - v75 = *v74; - } - v76 = v75 == -1; - v77 = 0; - if ( !v76 ) - v77 = v79; - v79 = v77; - if ( !v76 ) - v51 = 0; - } - else - { - v51 = v80; - } - if ( v51 == v50 ) - goto LABEL_108; - v52 = v84[v45]; - v53 = -1; - if ( v46 ) - { - v54 = (_WORD *)v46[2]; - v53 = (unsigned int)v54 >= v46[3] ? (*(int (__fastcall **)(int *))(*v46 + 36))(v46) : *v54; - if ( v53 == -1 ) - v46 = 0; - } - if ( v52 != v53 ) - { -LABEL_108: - v82 = v46; - LOWORD(v84) = -1; - goto LABEL_6; - } - v47 = v46[2]; - if ( v47 >= v46[3] ) - (*(void (__fastcall **)(int *))(*v46 + 40))(v46); - else - v46[2] = v47 + 2; - ++v45; - } - while ( v45 < v85 ); - v82 = v46; - } - if ( v85 == v45 ) - { - *a5 = v83; - LOWORD(v84) = -1; - goto LABEL_7; - } -LABEL_73: - LOWORD(v84) = -1; - } -LABEL_6: - *a9 |= 4u; -LABEL_7: - HIWORD(v15) = HIWORD(v78); - LOWORD(v15) = (_WORD)v84; - v78 = v15; - return v82; -} - -//----- (0045D8B0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_monthname( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // ecx - int v9; // ecx - __int16 v10; // dx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // bl - char v14; // si - char v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - _DWORD *v21; // [esp+40h] [ebp-9Ch] - unsigned int v22; // [esp+58h] [ebp-84h] BYREF - int v23; // [esp+5Ch] [ebp-80h] BYREF - int v24[31]; // [esp+60h] [ebp-7Ch] BYREF - - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v24[0] = v7[37]; - v24[1] = v7[38]; - v24[2] = v7[39]; - v24[3] = v7[40]; - v24[4] = v7[41]; - v24[5] = v7[42]; - v24[6] = v7[43]; - v24[7] = v7[44]; - v24[8] = v7[45]; - v24[9] = v7[46]; - v24[10] = v7[47]; - v24[11] = v7[48]; - v24[12] = v7[25]; - v24[13] = v7[26]; - v24[14] = v7[27]; - v24[15] = v7[28]; - v8 = v7[29]; - v23 = 0; - v24[16] = v8; - v24[17] = v7[30]; - v24[18] = v7[31]; - v24[19] = v7[32]; - v24[20] = v7[33]; - v24[21] = v7[34]; - v9 = v7[35]; - v24[23] = v7[36]; - v24[22] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v22, - (int)v24, - 0xCu, - a5, - &v23); - v12 = v11; - if ( v23 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 16) = v22; - v13 = v10 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v19 = (__int16 *)v11[2]; - if ( (unsigned int)v19 >= v11[3] ) - { - v21 = v11; - v20 = (*(int (**)(void))(*v11 + 36))(); - v11 = v21; - } - else - { - v20 = *v19; - } - v13 = 0; - v12 = 0; - if ( v20 == -1 ) - v13 = v14; - if ( v20 != -1 ) - v12 = v11; - } - v15 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v12; -} -// 45DA7A: variable 'v10' is possibly undefined - -//----- (0045DB40) -------------------------------------------------------- -int *__stdcall std::time_get>::_M_extract_via_format( - int *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - wchar_t *String) -{ - int v8; // ebp - void *v9; // esi - size_t v10; // edi - char v11; // dl - char v12; // bl - size_t v13; // ebx - char v14; // al - unsigned __int8 v15; // al - wchar_t v16; // bx - unsigned __int16 v17; // ax - __int16 *v19; // eax - __int16 v20; // ax - bool v21; // zf - int *v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - bool v25; // zf - _DWORD *v26; // eax - unsigned int v27; // eax - unsigned __int16 *v28; // eax - int *v29; // edi - unsigned __int16 v30; // dx - int *v31; // eax - _DWORD *v32; // eax - int *v33; // eax - unsigned __int16 v34; // dx - _DWORD *v35; // eax - int *v36; // eax - unsigned __int16 v37; // dx - unsigned __int16 v38; // dx - int *v39; // eax - unsigned __int16 v40; // dx - unsigned __int16 v41; // dx - unsigned __int16 v42; // dx - unsigned __int16 v43; // dx - unsigned __int16 v44; // ax - int *v45; // eax - unsigned __int16 v46; // dx - unsigned __int16 v47; // di - char v48; // dl - char v49; // bl - unsigned __int16 v50; // bx - _DWORD *v51; // eax - unsigned __int16 v52; // dx - unsigned __int16 v53; // dx - int *v54; // eax - unsigned __int16 v55; // dx - int *v56; // eax - unsigned __int16 v57; // dx - unsigned __int16 v58; // dx - _DWORD *v59; // eax - _DWORD *v60; // eax - unsigned __int16 v61; // dx - unsigned __int16 v62; // ax - unsigned int v63; // eax - unsigned __int16 v64; // dx - unsigned __int16 v65; // dx - unsigned __int16 v66; // ax - unsigned int v67; // eax - unsigned __int16 v68; // ax - unsigned __int16 v69; // dx - unsigned __int16 *v70; // eax - int *v71; // edi - unsigned __int16 *v72; // eax - int *v73; // edi - unsigned __int16 *v74; // eax - int *v75; // edi - unsigned __int16 *v76; // eax - int *v77; // edi - __int16 *v78; // eax - __int16 v79; // ax - bool v80; // zf - _DWORD *v81; // eax - _WORD *v82; // edx - __int16 v83; // ax - unsigned __int16 *v84; // eax - int *v85; // eax - unsigned __int16 *v86; // eax - int *v87; // eax - bool v88; // [esp+5Fh] [ebp-12Dh] - bool v89; // [esp+5Fh] [ebp-12Dh] - size_t v92; // [esp+68h] [ebp-124h] - char v93; // [esp+68h] [ebp-124h] - size_t v94; // [esp+6Ch] [ebp-120h] - bool v95; // [esp+70h] [ebp-11Ch] - _DWORD *v96; // [esp+7Ch] [ebp-110h] - unsigned __int16 v97; // [esp+80h] [ebp-10Ch] - unsigned __int16 v98; // [esp+84h] [ebp-108h] - bool v99; // [esp+86h] [ebp-106h] - char v100; // [esp+87h] [ebp-105h] - int v101; // [esp+138h] [ebp-54h] BYREF - int *v102; // [esp+13Ch] [ebp-50h] BYREF - wchar_t v103[2]; // [esp+140h] [ebp-4Ch] BYREF - int v104; // [esp+144h] [ebp-48h] - int v105; // [esp+148h] [ebp-44h] - int v106; // [esp+14Ch] [ebp-40h] - int v107; // [esp+150h] [ebp-3Ch] - int v108; // [esp+154h] [ebp-38h] - int v109; // [esp+158h] [ebp-34h] - int v110; // [esp+15Ch] [ebp-30h] - int v111; // [esp+160h] [ebp-2Ch] - int v112; // [esp+164h] [ebp-28h] - int v113; // [esp+168h] [ebp-24h] - int v114; // [esp+16Ch] [ebp-20h] - - HIWORD(v8) = HIWORD(a2); - v98 = a2; - v96 = std::use_facet>(a5 + 108); - v9 = std::use_facet>(a5 + 108); - v101 = 0; - v94 = wcslen(String); - v99 = (_WORD)a4 == 0xFFFF; - v10 = 0; - while ( 1 ) - { - v88 = v98 == 0xFFFF; - v11 = v88 && a1 != 0; - if ( v11 ) - { - v19 = (__int16 *)a1[2]; - if ( (unsigned int)v19 >= a1[3] ) - { - v20 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - v11 = v88 && a1 != 0; - } - else - { - v20 = *v19; - } - v21 = v20 == -1; - v22 = 0; - if ( !v21 ) - v22 = a1; - a1 = v22; - if ( !v21 ) - v11 = 0; - v12 = v99 && a3 != 0; - if ( !v12 ) - { -LABEL_4: - v12 = (_WORD)a4 == 0xFFFF; - goto LABEL_5; - } - } - else - { - v11 = v98 == 0xFFFF; - v12 = v99 && a3 != 0; - if ( !v12 ) - goto LABEL_4; - } - v23 = (__int16 *)a3[2]; - if ( (unsigned int)v23 >= a3[3] ) - { - v93 = v11; - v24 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v11 = v93; - } - else - { - v24 = *v23; - } - v25 = v24 == -1; - v26 = 0; - if ( !v25 ) - v26 = a3; - a3 = v26; - if ( !v25 ) - v12 = 0; -LABEL_5: - if ( v11 == v12 || v10 >= v94 ) - break; - if ( v101 ) - goto LABEL_22; - v13 = v10; - v92 = v10 + 1; - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v10], 0) == 37 ) - { - v14 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v13 + 1], 0); - v102 = 0; - if ( v14 == 69 || v14 == 79 ) - { - v92 = v10 + 2; - v15 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v13 + 2], 0) - 65; - if ( v15 > 0x38u ) - { -LABEL_19: - v101 |= 4u; - goto LABEL_20; - } - } - else - { - v15 = v14 - 65; - } - switch ( v15 ) - { - case 0u: - LOWORD(v8) = v98; - v59 = (_DWORD *)v96[2]; - *(_DWORD *)v103 = v59[11]; - v104 = v59[12]; - v105 = v59[13]; - v106 = v59[14]; - v107 = v59[15]; - v108 = v59[16]; - v109 = v59[17]; - v36 = std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - &v102, - (int)v103, - 7, - a5, - &v101); - goto LABEL_56; - case 1u: - LOWORD(v8) = v98; - v60 = (_DWORD *)v96[2]; - *(_DWORD *)v103 = v60[25]; - v104 = v60[26]; - v105 = v60[27]; - v106 = v60[28]; - v107 = v60[29]; - v108 = v60[30]; - v109 = v60[31]; - v110 = v60[32]; - v111 = v60[33]; - v112 = v60[34]; - v113 = v60[35]; - v114 = v60[36]; - v33 = std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - &v102, - (int)v103, - 12, - a5, - &v101); - goto LABEL_53; - case 2u: - case 0x18u: - case 0x38u: - a1 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 0, - 9999, - 4u, - a5, - &v101); - v98 = v30; - if ( !v101 ) - { - v31 = v102 - 475; - if ( (int)v102 < 0 ) - v31 = v102 + 25; - a7[5] = v31; - } - break; - case 3u: - (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( - v9, - "%m/%d/%y", - "%H:%M", - v103); - LOWORD(v8) = v98; - a1 = std::time_get>::_M_extract_via_format( - a1, - v8, - a3, - a4, - a5, - &v101, - a7, - v103); - v98 = v61; - break; - case 7u: - v54 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 0, - 23, - 2u, - a5, - &v101); - goto LABEL_83; - case 8u: - v54 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 1, - 12, - 2u, - a5, - &v101); -LABEL_83: - a1 = v54; - v98 = v55; - if ( !v101 ) - a7[2] = v102; - break; - case 0xCu: - v56 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 0, - 59, - 2u, - a5, - &v101); - v98 = v57; - a1 = v56; - if ( !v101 ) - a7[1] = v102; - break; - case 0x11u: - (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( - v9, - "%H:%M", - "%H:%M:%S", - v103); - LOWORD(v8) = v98; - a1 = std::time_get>::_M_extract_via_format( - a1, - v8, - a3, - a4, - a5, - &v101, - a7, - v103); - v98 = v58; - break; - case 0x12u: - a1 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 0, - 60, - 2u, - a5, - &v101); - v98 = v41; - if ( !v101 ) - *a7 = v102; - break; - case 0x13u: - (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v9 + 44))( - v9, - "%H:%M:%S", - &unk_511B8A, - v103); - LOWORD(v8) = v98; - a1 = std::time_get>::_M_extract_via_format( - a1, - v8, - a3, - a4, - a5, - &v101, - a7, - v103); - v98 = v42; - break; - case 0x17u: - LOWORD(v8) = v98; - a1 = std::time_get>::_M_extract_via_format( - a1, - v8, - a3, - a4, - a5, - &v101, - a7, - *(wchar_t **)(v96[2] + 16)); - v98 = v43; - break; - case 0x19u: - if ( a1 && v98 == 0xFFFF ) - { - v76 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v76 >= a1[3] ) - v44 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v44 = *v76; - v77 = 0; - if ( v44 != 0xFFFF ) - v77 = a1; - a1 = v77; - } - else - { - v44 = v98; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 8))(v9, 1, v44) ) - goto LABEL_19; - LOWORD(v8) = v98; - v45 = std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - (int **)v103, - (int)std::__timepunct_cache::_S_timezones, - 14, - a5, - &v101); - v47 = v46; - v89 = v46 == 0xFFFF; - v97 = v46; - a1 = v45; - v48 = v89; - v98 = v47; - v95 = v89 && v45 != 0; - if ( v95 ) - { - v82 = (_WORD *)v45[2]; - v83 = (unsigned int)v82 >= v45[3] ? (*(int (__fastcall **)(int *))(*v45 + 36))(v45) : *v82; - v48 = 0; - if ( v83 == -1 ) - { - v48 = v95; - a1 = 0; - v95 = 0; - } - } - v49 = v99 && a3 != 0; - if ( v49 ) - { - v78 = (__int16 *)a3[2]; - if ( (unsigned int)v78 >= a3[3] ) - { - v100 = v48; - v79 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v48 = v100; - } - else - { - v79 = *v78; - } - v80 = v79 == -1; - v81 = 0; - if ( !v80 ) - v81 = a3; - a3 = v81; - if ( !v80 ) - v49 = 0; - } - else - { - v49 = (_WORD)a4 == 0xFFFF; - } - if ( v48 != v49 && !(*(_DWORD *)v103 | v101) ) - { - v50 = v47; - if ( v95 ) - { - v84 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v84 >= a1[3] ) - v50 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v50 = *v84; - v85 = 0; - if ( v50 != 0xFFFF ) - v85 = a1; - a1 = v85; - } - if ( (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 45) == v50 ) - goto LABEL_81; - if ( a1 && v89 ) - { - v86 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v86 >= a1[3] ) - v47 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v47 = *v86; - v87 = 0; - if ( v47 != 0xFFFF ) - v87 = a1; - a1 = v87; - } - if ( (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 43) == v47 ) - { -LABEL_81: - v51 = std::time_get>::_M_extract_num( - a1, - v97, - a3, - a4, - (int *)v103, - 0, - 23, - 2u, - a5, - &v101); - a1 = std::time_get>::_M_extract_num( - v51, - v52, - a3, - a4, - (int *)v103, - 0, - 59, - 2u, - a5, - &v101); - v98 = v53; - } - } - break; - case 0x20u: - LOWORD(v8) = v98; - v35 = (_DWORD *)v96[2]; - *(_DWORD *)v103 = v35[18]; - v104 = v35[19]; - v105 = v35[20]; - v106 = v35[21]; - v107 = v35[22]; - v108 = v35[23]; - v109 = v35[24]; - v36 = std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - &v102, - (int)v103, - 7, - a5, - &v101); -LABEL_56: - a1 = v36; - v98 = v37; - if ( !v101 ) - a7[6] = v102; - break; - case 0x21u: - case 0x27u: - LOWORD(v8) = v98; - v32 = (_DWORD *)v96[2]; - *(_DWORD *)v103 = v32[37]; - v104 = v32[38]; - v105 = v32[39]; - v106 = v32[40]; - v107 = v32[41]; - v108 = v32[42]; - v109 = v32[43]; - v110 = v32[44]; - v111 = v32[45]; - v112 = v32[46]; - v113 = v32[47]; - v114 = v32[48]; - v33 = std::time_get>::_M_extract_name( - a1, - v8, - a3, - a4, - &v102, - (int)v103, - 12, - a5, - &v101); -LABEL_53: - a1 = v33; - v98 = v34; - if ( !v101 ) - a7[4] = v102; - break; - case 0x22u: - LOWORD(v8) = v98; - a1 = std::time_get>::_M_extract_via_format( - a1, - v8, - a3, - a4, - a5, - &v101, - a7, - *(wchar_t **)(v96[2] + 24)); - v98 = v38; - break; - case 0x23u: - v39 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 1, - 31, - 2u, - a5, - &v101); - goto LABEL_60; - case 0x24u: - if ( a1 && v98 == 0xFFFF ) - { - v74 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v74 >= a1[3] ) - v62 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v62 = *v74; - v75 = 0; - if ( v62 != 0xFFFF ) - v75 = a1; - a1 = v75; - } - else - { - v62 = v98; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 8))(v9, 32, v62) ) - { - v63 = a1[2]; - if ( v63 >= a1[3] ) - (*(void (__fastcall **)(int *))(*a1 + 40))(a1); - else - a1[2] = v63 + 2; - a1 = std::time_get>::_M_extract_num( - a1, - 0xFFFFu, - a3, - a4, - (int *)&v102, - 1, - 9, - 1u, - a5, - &v101); - v98 = v64; - } - else - { - v39 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 10, - 31, - 2u, - a5, - &v101); -LABEL_60: - a1 = v39; - v98 = v40; - } - if ( !v101 ) - a7[3] = v102; - break; - case 0x2Cu: - a1 = std::time_get>::_M_extract_num( - a1, - v98, - a3, - a4, - (int *)&v102, - 1, - 12, - 2u, - a5, - &v101); - v98 = v65; - if ( !v101 ) - a7[4] = (char *)v102 - 1; - break; - case 0x2Du: - if ( a1 && v98 == 0xFFFF ) - { - v70 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v70 >= a1[3] ) - v66 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v66 = *v70; - v71 = 0; - if ( v66 != 0xFFFF ) - v71 = a1; - a1 = v71; - } - else - { - v66 = v98; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, v66, 0) != 10 ) - goto LABEL_19; - goto LABEL_105; - case 0x33u: - if ( a1 && v98 == 0xFFFF ) - { - v72 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v72 >= a1[3] ) - v68 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v68 = *v72; - v73 = 0; - if ( v68 != 0xFFFF ) - v73 = a1; - a1 = v73; - } - else - { - v68 = v98; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, v68, 0) != 9 ) - goto LABEL_19; -LABEL_105: - v67 = a1[2]; - if ( v67 >= a1[3] ) - (*(void (__fastcall **)(int *))(*a1 + 40))(a1); - else - a1[2] = v67 + 2; - v98 = -1; - break; - case 0x37u: - LOWORD(v8) = v98; - a1 = std::time_get>::_M_extract_via_format( - a1, - v8, - a3, - a4, - a5, - &v101, - a7, - *(wchar_t **)(v96[2] + 8)); - v98 = v69; - break; - default: - goto LABEL_19; - } -LABEL_20: - v10 = v92 + 1; - } - else - { - v16 = String[v10]; - if ( a1 && v98 == 0xFFFF ) - { - v28 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v28 >= a1[3] ) - v17 = (*(int (__fastcall **)(int *))(*a1 + 36))(a1); - else - v17 = *v28; - v29 = 0; - if ( v17 != 0xFFFF ) - v29 = a1; - a1 = v29; - } - else - { - v17 = v98; - } - if ( v16 == v17 ) - { - v27 = a1[2]; - if ( v27 >= a1[3] ) - (*(void (__fastcall **)(int *))(*a1 + 40))(a1); - else - a1[2] = v27 + 2; - v10 = v92; - v98 = -1; - } - else - { - v101 |= 4u; - v10 = v92; - } - } - } - if ( v10 != v94 || v101 ) -LABEL_22: - *a6 |= 4u; - return a1; -} -// 45DEC3: variable 'v30' is possibly undefined -// 45E017: variable 'v34' is possibly undefined -// 45E103: variable 'v37' is possibly undefined -// 45E196: variable 'v38' is possibly undefined -// 45E21A: variable 'v40' is possibly undefined -// 45E2C5: variable 'v41' is possibly undefined -// 45E371: variable 'v42' is possibly undefined -// 45E3EB: variable 'v43' is possibly undefined -// 45E48C: variable 'v46' is possibly undefined -// 45E605: variable 'v52' is possibly undefined -// 45E61C: variable 'v53' is possibly undefined -// 45E6B1: variable 'v55' is possibly undefined -// 45E7BB: variable 'v57' is possibly undefined -// 45E87A: variable 'v58' is possibly undefined -// 45EACF: variable 'v61' is possibly undefined -// 45EBA0: variable 'v64' is possibly undefined -// 45EC2B: variable 'v65' is possibly undefined -// 45ED58: variable 'v69' is possibly undefined -// 50C5A0: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[14]; - -//----- (0045F020) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - unsigned int *a5, - int a6, - unsigned int a7, - int a8, - _DWORD *a9) -{ - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // dl - char v13; // di - char v14; // bl - unsigned int v15; // edi - unsigned int *v16; // esi - char v17; // dl - char v18; // bl - unsigned int v19; // edx - unsigned int *v20; // ecx - unsigned int v21; // ebx - unsigned int v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - bool v25; // zf - _DWORD *v26; // eax - __int16 *v28; // eax - __int16 v29; // ax - bool v30; // zf - _DWORD *v31; // eax - __int16 *v32; // eax - _DWORD *v33; // eax - unsigned int v34; // eax - __int16 v35; // si - int v36; // edx - unsigned int v37; // ebx - int v38; // edi - __int16 v39; // ax - int v40; // ecx - unsigned int v41; // eax - unsigned int v42; // eax - int v43; // eax - void *v44; // esp - void *v45; // esp - int v46; // ebx - __int16 *v47; // eax - __int16 v48; // ax - bool v49; // zf - _DWORD *v50; // eax - _WORD *v51; // eax - __int16 v52; // ax - __int16 *v53; // eax - _DWORD *v54; // eax - int v55; // eax - _DWORD v56[2]; // [esp+10h] [ebp-48h] BYREF - _DWORD *v57; // [esp+18h] [ebp-40h] - char v58; // [esp+1Fh] [ebp-39h] - _DWORD *v59; // [esp+20h] [ebp-38h] - unsigned int v60; // [esp+24h] [ebp-34h] - __int16 v61; // [esp+28h] [ebp-30h] - __int16 v62; // [esp+2Ah] [ebp-2Eh] - int v63; // [esp+2Ch] [ebp-2Ch] - unsigned int *v64; // [esp+30h] [ebp-28h] - unsigned int *v65; // [esp+34h] [ebp-24h] - unsigned int v66; // [esp+38h] [ebp-20h] - unsigned int v67; // [esp+3Ch] [ebp-1Ch] - - v59 = a1; - v56[1] = a2; - v61 = a2; - v57 = a3; - v64 = (unsigned int *)std::use_facet>(a8 + 108); - v9 = 16 * ((8 * a7 + 27) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v12 = (_WORD)a2 == 0xFFFF; - v65 = v56; - v13 = v12 & (a1 != 0); - if ( v13 ) - { - v51 = (_WORD *)v59[2]; - v52 = (unsigned int)v51 >= v59[3] ? (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59) : *v51; - v12 = 0; - if ( v52 == -1 ) - { - v12 = v13; - v59 = 0; - v13 = 0; - } - } - v58 = a4 == -1; - v14 = v58 & (a3 != 0); - if ( v14 ) - { - v47 = (__int16 *)a3[2]; - if ( (unsigned int)v47 >= a3[3] ) - { - v55 = *a3; - LOBYTE(v67) = v12; - v48 = (*(int (__fastcall **)(_DWORD *))(v55 + 36))(a3); - v12 = v67; - } - else - { - v48 = *v47; - } - v49 = v48 == -1; - v50 = 0; - if ( !v49 ) - v50 = a3; - v57 = v50; - if ( !v49 ) - v14 = 0; - } - else - { - v14 = v58; - } - if ( v12 == v14 ) - { - v66 = 0; - v15 = 0; - v16 = 0; - goto LABEL_6; - } - v35 = v61; - if ( v13 ) - { - v53 = (__int16 *)v59[2]; - if ( (unsigned int)v53 >= v59[3] ) - v35 = (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59); - else - v35 = *v53; - v54 = 0; - if ( v35 != -1 ) - v54 = v59; - v59 = v54; - } - v15 = 2 * a7; - if ( !(2 * a7) ) - { - v66 = 0; - v16 = 0; - goto LABEL_6; - } - v67 = 2 * a7; - v36 = a6; - v37 = 0; - v66 = 0; - v38 = (int)v64; - do - { - while ( 1 ) - { - v40 = **(unsigned __int16 **)(v36 + 4 * v37); - if ( (_WORD)v40 == v35 ) - break; - a6 = v36; - v39 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v38 + 24))(v38, v40); - v36 = a6; - if ( v39 == v35 ) - break; - if ( ++v37 == v67 ) - goto LABEL_62; - } - v41 = v66; - v65[v66] = v37++; - v66 = v41 + 1; - } - while ( v37 != v67 ); -LABEL_62: - v15 = 0; - v16 = 0; - if ( v66 ) - { - v42 = v59[2]; - if ( v42 >= v59[3] ) - (*(void (__fastcall **)(_DWORD *, int))(*v59 + 40))(v59, v36); - else - v59[2] = v42 + 2; - v43 = 16 * ((4 * v66 + 27) >> 4); - v44 = alloca(v43); - v15 = 0; - v45 = alloca(v43); - v64 = v56; - v67 = (unsigned int)v56; - v46 = (int)v65; - do - { - *(_DWORD *)(v67 + 4 * v15) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v46 + 4 * v15))); - ++v15; - } - while ( v66 != v15 ); - v66 = 1; - v16 = v64; - v61 = -1; - } -LABEL_6: - while ( 2 ) - { - LOBYTE(v67) = v61 == -1; - v17 = v67 & (v59 != 0); - if ( v17 ) - { - v28 = (__int16 *)v59[2]; - if ( (unsigned int)v28 >= v59[3] ) - { - LOBYTE(v64) = v67 & (v59 != 0); - v29 = (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59); - v17 = (char)v64; - } - else - { - v29 = *v28; - } - v30 = v29 == -1; - v31 = 0; - if ( !v30 ) - v31 = v59; - v59 = v31; - if ( !v30 ) - v17 = 0; - } - else - { - v17 = v67; - } - v18 = v58 & (v57 != 0); - if ( v18 ) - { - v23 = (__int16 *)v57[2]; - if ( (unsigned int)v23 >= v57[3] ) - { - LOBYTE(v64) = v17; - v24 = (*(int (__fastcall **)(_DWORD *))(*v57 + 36))(v57); - v17 = (char)v64; - } - else - { - v24 = *v23; - } - v25 = v24 == -1; - v26 = 0; - if ( !v25 ) - v26 = v57; - v57 = v26; - if ( !v25 ) - v18 = 0; - if ( v17 == v18 ) - break; - } - else if ( v17 == v58 ) - { - break; - } - if ( v59 && (_BYTE)v67 ) - { - v32 = (__int16 *)v59[2]; - if ( (unsigned int)v32 >= v59[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v59 + 36))(v59); - else - v62 = *v32; - v33 = 0; - if ( v62 != -1 ) - v33 = v59; - v59 = v33; - } - else - { - v62 = v61; - } - if ( !v15 ) - { -LABEL_34: - *a9 |= 4u; - return v59; - } - v67 = (unsigned int)v16; - v19 = 0; - v63 = 0; - v60 = 2 * v66; - do - { - while ( 1 ) - { - v20 = (unsigned int *)(v67 + 4 * v19); - if ( *v20 > v66 ) - break; - ++v63; - ++v19; -LABEL_16: - if ( v19 >= v15 ) - goto LABEL_20; - } - v21 = v65[v19]; - v64 = &v65[v19]; - if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v21) + v60) == v62 ) - { - ++v19; - goto LABEL_16; - } - *v64 = v65[--v15]; - *v20 = *(_DWORD *)(v67 + 4 * v15); - } - while ( v19 < v15 ); -LABEL_20: - v16 = (unsigned int *)v67; - if ( v15 != v63 ) - { - v22 = v59[2]; - if ( v22 >= v59[3] ) - (*(void (__fastcall **)(_DWORD *))(*v59 + 40))(v59); - else - v59[2] = v22 + 2; - ++v66; - v61 = -1; - continue; - } - break; - } - if ( v15 != 1 ) - { - if ( v15 == 2 && (*v16 == v66 || v16[1] == v66) ) - goto LABEL_52; - goto LABEL_34; - } - if ( *v16 != v66 ) - goto LABEL_34; -LABEL_52: - v34 = *v65; - if ( *v65 >= a7 ) - v34 = *v65 - a7; - *a5 = v34; - return v59; -} - -//----- (0045F4E0) -------------------------------------------------------- -int *__thiscall std::time_get>::get( - void *this, - int *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - _DWORD *a7, - _DWORD *a8, - unsigned __int16 *a9, - unsigned __int16 *a10) -{ - unsigned __int16 *v10; // ebp - void *v12; // ebx - int v13; // edx - __int16 v14; // si - int v15; // edx - __int16 v16; // si - unsigned int v17; // eax - char v18; // si - char v19; // dl - char v20; // si - int v21; // eax - int *(__stdcall *v22)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // edx - int v23; // eax - void *v24; // eax - int *v25; // esi - unsigned __int16 v26; // dx - char v27; // dl - char v28; // bp - char v29; // al - unsigned __int16 *i; // ebp - void *v32; // ebp - char v33; // dl - char v34; // bl - int v35; // edx - unsigned int v36; // eax - bool v37; // si - __int16 *v38; // eax - __int16 v39; // ax - __int16 *v40; // eax - __int16 v41; // ax - bool v42; // zf - _DWORD *v43; // eax - unsigned __int16 *v44; // eax - char v45; // dl - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - __int16 *v50; // eax - __int16 v51; // ax - int v52; // ecx - int v53; // ebp - unsigned __int16 v54; // dx - unsigned __int16 *v55; // eax - __int16 *v56; // eax - __int16 v57; // ax - __int16 *v58; // eax - __int16 v59; // ax - unsigned __int16 *v60; // eax - unsigned __int16 v61; // [esp+5Eh] [ebp-4Ah] - unsigned __int16 *v63; // [esp+64h] [ebp-44h] - char v64; // [esp+64h] [ebp-44h] - int v65; // [esp+68h] [ebp-40h] - int v66; // [esp+6Ch] [ebp-3Ch] - char v68; // [esp+74h] [ebp-34h] - char v69; // [esp+75h] [ebp-33h] - char v70; // [esp+75h] [ebp-33h] - wchar_t v71; // [esp+84h] [ebp-24h] BYREF - __int16 v72; // [esp+86h] [ebp-22h] - __int16 v73; // [esp+88h] [ebp-20h] - __int16 v74; // [esp+8Ah] [ebp-1Eh] - unsigned __int16 *v75; // [esp+C8h] [ebp+20h] - - v10 = a9; - HIWORD(v65) = HIWORD(a3); - v61 = a3; - HIWORD(v66) = HIWORD(a5); - v12 = std::use_facet>(a6 + 108); - *a7 = 0; - if ( a9 != a10 ) - { - v68 = (_WORD)a5 == 0xFFFF; - while ( 1 ) - { - v18 = v61 == 0xFFFF && a2 != 0; - if ( v18 ) - { - v50 = (__int16 *)a2[2]; - if ( (unsigned int)v50 >= a2[3] ) - v51 = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - else - v51 = *v50; - if ( v51 == -1 ) - a2 = 0; - if ( v51 != -1 ) - v18 = 0; - } - else - { - v18 = v61 == 0xFFFF; - } - v19 = v68 & (a4 != 0); - if ( v19 ) - { - v46 = (__int16 *)a4[2]; - if ( (unsigned int)v46 >= a4[3] ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v19 = v68 & (a4 != 0); - } - else - { - v47 = *v46; - } - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = a4; - a4 = v49; - if ( !v48 ) - v19 = 0; - if ( v18 == v19 ) - { -LABEL_81: - *a7 = 6; - return a2; - } - } - else if ( v18 == v68 ) - { - goto LABEL_81; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, *v10, 0) == 37 ) - { - v63 = v10 + 1; - if ( a10 == v10 + 1 ) - goto LABEL_115; - v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[1], 0); - if ( v20 == 69 || (v69 = 0, v21 = 0, v20 == 79) ) - { - v63 = v10 + 2; - if ( a10 == v10 + 2 ) - goto LABEL_115; - v45 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[2], 0); - v69 = v20; - v21 = v20; - v20 = v45; - } - v22 = *(int *(__stdcall **)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); - if ( v22 == std::time_get>::do_get ) - { - HIWORD(v23) = HIWORD(v65); - LOWORD(v23) = v61; - v65 = v23; - HIWORD(v23) = HIWORD(v66); - LOWORD(v23) = a5; - v66 = v23; - v24 = std::use_facet>(a6 + 108); - *a7 = 0; - v71 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v24 + 40))(v24, 37); - if ( v69 ) - { - v73 = v20; - v72 = v69; - v74 = 0; - } - else - { - v72 = v20; - v73 = 0; - } - v25 = std::time_get>::_M_extract_via_format( - a2, - v65, - a4, - v66, - a6, - a7, - a8, - &v71); - a2 = v25; - v61 = v26; - v27 = v26 == 0xFFFF; - v28 = v27 & (v25 != 0); - if ( v28 ) - { - v56 = (__int16 *)v25[2]; - if ( (unsigned int)v56 >= v25[3] ) - v57 = (*(int (__fastcall **)(int *))(*v25 + 36))(v25); - else - v57 = *v56; - v27 = 0; - a2 = 0; - if ( v57 == -1 ) - v27 = v28; - if ( v57 != -1 ) - a2 = v25; - } - if ( a4 && (_WORD)a5 == 0xFFFF ) - { - v58 = (__int16 *)a4[2]; - if ( (unsigned int)v58 >= a4[3] ) - { - v70 = v27; - v59 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v27 = v70; - } - else - { - v59 = *v58; - } - v29 = v59 == -1; - } - else - { - v29 = (_WORD)a5 == 0xFFFF; - } - if ( v29 == v27 ) - *a7 |= 2u; - } - else - { - HIWORD(v52) = HIWORD(v65); - HIWORD(v53) = HIWORD(v66); - LOWORD(v52) = v61; - LOWORD(v53) = a5; - a2 = (int *)((int (__thiscall *)(void *, int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, int))v22)( - this, - a2, - v52, - a4, - v53, - a6, - a7, - a8, - v20, - v21); - v61 = v54; - } - v10 = v63 + 1; - if ( a10 == v63 + 1 ) - return a2; - goto LABEL_16; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *v10) ) - break; - if ( a2 && v61 == 0xFFFF ) - { - v55 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v55 >= a2[3] ) - v13 = (*(unsigned __int16 (__fastcall **)(int *))(*a2 + 36))(a2); - else - v13 = *v55; - if ( (_WORD)v13 == 0xFFFF ) - a2 = 0; - } - else - { - v13 = v61; - } - v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 32))(v12, v13); - if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 32))(v12, *v10) != v14 ) - { - if ( a2 && v61 == 0xFFFF ) - { - v60 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v60 >= a2[3] ) - v15 = (*(unsigned __int16 (__fastcall **)(int *))(*a2 + 36))(a2); - else - v15 = *v60; - if ( (_WORD)v15 == 0xFFFF ) - a2 = 0; - } - else - { - v15 = v61; - } - v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 24))(v12, v15); - if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 24))(v12, *v10) != v16 ) - { -LABEL_115: - *a7 = 4; - return a2; - } - } - v17 = a2[2]; - if ( v17 >= a2[3] ) - (*(void (__fastcall **)(int *))(*a2 + 40))(a2); - else - a2[2] = v17 + 2; - ++v10; - v61 = -1; -LABEL_15: - if ( a10 == v10 ) - return a2; -LABEL_16: - if ( *a7 ) - return a2; - } - for ( i = v10 + 1; a10 != i; ++i ) - { - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *i) ) - break; - } - v75 = i; - v32 = v12; - while ( 1 ) - { - v37 = v61 == 0xFFFF; - v33 = v37 && a2 != 0; - if ( v33 ) - { - v38 = (__int16 *)a2[2]; - if ( (unsigned int)v38 >= a2[3] ) - { - v39 = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - v33 = v37 && a2 != 0; - } - else - { - v39 = *v38; - } - if ( v39 == -1 ) - a2 = 0; - if ( v39 != -1 ) - v33 = 0; - v34 = v68 & (a4 != 0); - if ( !v34 ) - { -LABEL_42: - if ( v68 == v33 ) - goto LABEL_65; - goto LABEL_43; - } - } - else - { - v33 = v61 == 0xFFFF; - v34 = v68 & (a4 != 0); - if ( !v34 ) - goto LABEL_42; - } - v40 = (__int16 *)a4[2]; - if ( (unsigned int)v40 >= a4[3] ) - { - v64 = v33; - v41 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v33 = v64; - } - else - { - v41 = *v40; - } - v42 = v41 == -1; - v43 = 0; - if ( !v42 ) - v43 = a4; - a4 = v43; - if ( !v42 ) - v34 = 0; - if ( v34 == v33 ) - { -LABEL_65: - v12 = v32; - v10 = v75; - goto LABEL_15; - } -LABEL_43: - if ( a2 && v61 == 0xFFFF ) - { - v44 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v44 >= a2[3] ) - v35 = (*(unsigned __int16 (__fastcall **)(int *))(*a2 + 36))(a2); - else - v35 = *v44; - if ( (_WORD)v35 == 0xFFFF ) - a2 = 0; - } - else - { - v35 = v61; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v32 + 8))(v32, 32, v35) ) - goto LABEL_65; - v36 = a2[2]; - if ( v36 >= a2[3] ) - (*(void (__fastcall **)(int *))(*a2 + 40))(a2); - else - a2[2] = v36 + 2; - v61 = -1; - } - } - return a2; -} -// 45F7BF: variable 'v26' is possibly undefined -// 45FB06: variable 'v54' is possibly undefined - -//----- (0045FC70) -------------------------------------------------------- -int *__thiscall std::time_get>::get( - void *this, - int *a2, - int a3, - _DWORD *a4, - int a5, - int a6, - _DWORD *a7, - _DWORD *a8, - char a9, - char a10) -{ - int *(__stdcall *v10)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // eax - void *v11; // eax - int *v12; // ecx - int *v13; // ebp - __int16 v14; // dx - _BOOL2 v15; // bx - bool v16; // si - bool v17; // cl - __int16 *v19; // eax - __int16 v20; // ax - __int16 *v21; // eax - __int16 v22; // ax - int v23; // [esp+28h] [ebp-48h] - wchar_t v24; // [esp+4Ch] [ebp-24h] BYREF - __int16 v25; // [esp+4Eh] [ebp-22h] - __int16 v26; // [esp+50h] [ebp-20h] - __int16 v27; // [esp+52h] [ebp-1Eh] - - v10 = *(int *(__stdcall **)(int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); - if ( v10 != std::time_get>::do_get ) - return (int *)((int (__thiscall *)(void *, int *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( - this, - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - a10); - v11 = std::use_facet>(a6 + 108); - *a7 = 0; - v24 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v11 + 40))(v11, 37); - if ( a10 ) - { - v26 = a9; - v25 = a10; - v27 = 0; - } - else - { - v25 = a9; - v26 = 0; - } - v12 = std::time_get>::_M_extract_via_format( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - &v24); - v13 = v12; - v15 = v14 == -1; - v16 = v15 && v12 != 0; - if ( v16 ) - { - v19 = (__int16 *)v12[2]; - if ( (unsigned int)v19 >= v12[3] ) - { - v23 = (int)v12; - v20 = (*(int (**)(void))(*v12 + 36))(); - v12 = (int *)v23; - } - else - { - v20 = *v19; - } - LOBYTE(v15) = 0; - v13 = 0; - if ( v20 == -1 ) - LOBYTE(v15) = v16; - if ( v20 != -1 ) - v13 = v12; - } - v17 = (_WORD)a5 == 0xFFFF; - if ( a4 && (_WORD)a5 == 0xFFFF ) - { - v21 = (__int16 *)a4[2]; - if ( (unsigned int)v21 >= a4[3] ) - v22 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - else - v22 = *v21; - v17 = v22 == -1; - } - if ( v15 == v17 ) - *a7 |= 2u; - return v13; -} -// 45FD79: variable 'v14' is possibly undefined - -//----- (0045FEC0) -------------------------------------------------------- -int *__stdcall std::time_get>::do_get( - int *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - char a8, - char a9) -{ - void *v9; // eax - int *v10; // ecx - int *v11; // ebp - __int16 v12; // dx - _BOOL2 v13; // bx - bool v14; // si - bool v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - int v21; // [esp+34h] [ebp-3Ch] - wchar_t v22; // [esp+4Ch] [ebp-24h] BYREF - __int16 v23; // [esp+4Eh] [ebp-22h] - __int16 v24; // [esp+50h] [ebp-20h] - __int16 v25; // [esp+52h] [ebp-1Eh] - - v9 = std::use_facet>(a5 + 108); - *a6 = 0; - v22 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 37); - if ( a9 ) - { - v24 = a8; - v23 = a9; - v25 = 0; - } - else - { - v23 = a8; - v24 = 0; - } - v10 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - a7, - &v22); - v11 = v10; - v13 = v12 == -1; - v14 = v13 && v10 != 0; - if ( v14 ) - { - v19 = (__int16 *)v10[2]; - if ( (unsigned int)v19 >= v10[3] ) - { - v21 = (int)v10; - v20 = (*(int (**)(void))(*v10 + 36))(); - v10 = (int *)v21; - } - else - { - v20 = *v19; - } - LOBYTE(v13) = 0; - v11 = 0; - if ( v20 == -1 ) - LOBYTE(v13) = v14; - if ( v20 != -1 ) - v11 = v10; - } - v15 = (_WORD)a4 == 0xFFFF; - if ( a3 && (_WORD)a4 == 0xFFFF ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v11; -} -// 45FFA4: variable 'v12' is possibly undefined - -//----- (00460080) -------------------------------------------------------- -int __fastcall std::time_get>::get_date(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); -} - -//----- (00460090) -------------------------------------------------------- -int __fastcall std::time_get>::get_time(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); -} - -//----- (004600A0) -------------------------------------------------------- -int __fastcall std::time_get>::get_year(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); -} - -//----- (004600B0) -------------------------------------------------------- -_DWORD *__stdcall std::money_get>::_M_extract( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _BYTE *v7; // edx - unsigned int v8; // eax - _DWORD *v9; // ecx - unsigned int v10; // eax - char v11; // al - _BYTE *v12; // eax - char v13; // al - _BYTE *v14; // edx - unsigned int v15; // eax - char v16; // al - int v17; // eax - char v18; // dl - _BYTE *v19; // eax - int v20; // eax - _DWORD *v21; // eax - char v22; // al - int v23; // eax - unsigned __int8 *v24; // eax - char v25; // al - int v26; // edx - int v27; // eax - _BYTE *v28; // eax - int v29; // eax - _DWORD *v30; // eax - char v31; // al - int v32; // eax - unsigned __int8 *v33; // eax - bool v34; // zf - char v35; // al - _DWORD *v36; // edx - char v37; // al - char *v39; // eax - char v40; // al - bool v41; // zf - _DWORD *v42; // edx - char v43; // al - char v44; // al - _BYTE *v45; // edx - unsigned int v46; // eax - int v47; // eax - unsigned __int8 v48; // dl - bool v49; // zf - _DWORD *v50; // eax - char v51; // al - unsigned int first_not_of; // eax - bool v53; // zf - _DWORD *v54; // eax - bool v55; // bl - int v56; // eax - bool v57; // zf - char v58; // dl - _DWORD *v59; // eax - _DWORD *v60; // eax - bool v61; // zf - _DWORD *v62; // edx - bool v63; // zf - _DWORD *v64; // eax - bool v65; // bl - _BYTE *v66; // eax - bool v67; // zf - _DWORD *v68; // eax - int v69; // eax - _BYTE *v70; // eax - int v71; // eax - _DWORD *v72; // edx - bool v73; // zf - _DWORD *v74; // eax - char v75; // bl - int v76; // eax - _DWORD *v77; // eax - bool v78; // zf - _DWORD *v79; // eax - bool v80; // bl - _DWORD *v81; // edx - bool v82; // zf - _DWORD *v83; // edx - bool v84; // zf - _DWORD *v85; // edx - bool v86; // zf - _DWORD *v87; // eax - bool v88; // bl - _DWORD *v89; // edx - bool v90; // zf - _DWORD *v91; // eax - bool v92; // bl - _DWORD *v93; // edx - _DWORD *v94; // edx - unsigned int v95; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v96; // [esp+14h] [ebp-C4h] - char v97; // [esp+18h] [ebp-C0h] - char v98; // [esp+1Ch] [ebp-BCh] - unsigned int v99; // [esp+1Ch] [ebp-BCh] - _DWORD *v100; // [esp+20h] [ebp-B8h] - unsigned int v101; // [esp+24h] [ebp-B4h] - int v102; // [esp+2Ch] [ebp-ACh] - char v103; // [esp+30h] [ebp-A8h] - char v104; // [esp+30h] [ebp-A8h] - int v105; // [esp+30h] [ebp-A8h] - unsigned int v106; // [esp+30h] [ebp-A8h] - char v107; // [esp+30h] [ebp-A8h] - char v108; // [esp+30h] [ebp-A8h] - char v109; // [esp+30h] [ebp-A8h] - bool v110; // [esp+35h] [ebp-A3h] - char v111; // [esp+36h] [ebp-A2h] - char v112; // [esp+37h] [ebp-A1h] - unsigned int Buf; // [esp+38h] [ebp-A0h] - std::locale::facet *Bufa; // [esp+38h] [ebp-A0h] - int *v115; // [esp+3Ch] [ebp-9Ch] - int v116; // [esp+3Ch] [ebp-9Ch] - int v117; // [esp+40h] [ebp-98h] - std::locale::facet *v119; // [esp+4Ch] [ebp-8Ch] - std::locale::facet *v120; // [esp+4Ch] [ebp-8Ch] - char v121; // [esp+4Ch] [ebp-8Ch] - std::locale::facet *v122; // [esp+4Ch] [ebp-8Ch] - char v123; // [esp+4Ch] [ebp-8Ch] - unsigned __int8 v124; // [esp+4Ch] [ebp-8Ch] - char v125; // [esp+4Ch] [ebp-8Ch] - char v126; // [esp+4Ch] [ebp-8Ch] - char v127; // [esp+4Ch] [ebp-8Ch] - char v128; // [esp+4Ch] [ebp-8Ch] - char v129; // [esp+4Ch] [ebp-8Ch] - bool v130; // [esp+4Ch] [ebp-8Ch] - char v131; // [esp+50h] [ebp-88h] - bool v132; // [esp+50h] [ebp-88h] - char v133; // [esp+50h] [ebp-88h] - char v134; // [esp+50h] [ebp-88h] - unsigned __int8 v135; // [esp+50h] [ebp-88h] - bool v136; // [esp+50h] [ebp-88h] - bool v137; // [esp+50h] [ebp-88h] - bool v138; // [esp+50h] [ebp-88h] - bool v139; // [esp+50h] [ebp-88h] - size_t v140; // [esp+50h] [ebp-88h] - char v141; // [esp+50h] [ebp-88h] - size_t v143; // [esp+54h] [ebp-84h] - size_t v144; // [esp+54h] [ebp-84h] - int v146; // [esp+9Ch] [ebp-3Ch] - void *v147; // [esp+A0h] [ebp-38h] BYREF - std::locale::facet *v148; // [esp+A4h] [ebp-34h] - int v149[4]; // [esp+A8h] [ebp-30h] BYREF - void *Block; // [esp+B8h] [ebp-20h] BYREF - size_t v151; // [esp+BCh] [ebp-1Ch] - int v152[5]; // [esp+C0h] [ebp-18h] BYREF - - v100 = std::use_facet>(a5 + 108); - v119 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v115 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v119); - v117 = *v115; - if ( !*v115 ) - { - v60 = operator new(0x44u); - *v60 = &off_51B084; - v60[1] = 0; - v60[2] = 0; - v60[3] = 0; - *((_WORD *)v60 + 8) = 0; - *((_BYTE *)v60 + 18) = 0; - v60[5] = 0; - v60[6] = 0; - v60[7] = 0; - v60[8] = 0; - v60[9] = 0; - v60[10] = 0; - v60[11] = 0; - v60[12] = 0; - v60[13] = 0; - *((_BYTE *)v60 + 67) = 0; - v96 = (std::locale::_Impl *)v60; - std::__moneypunct_cache::_M_cache((int)v60, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, v119, v95); - v117 = *v115; - } - if ( *(_DWORD *)(v117 + 32) ) - v110 = *(_DWORD *)(v117 + 40) != 0; - else - v110 = 0; - v148 = 0; - v147 = v149; - LOBYTE(v149[0]) = 0; - if ( *(_BYTE *)(v117 + 16) ) - std::string::reserve(&v147, 0x20u); - Block = v152; - v151 = 0; - LOBYTE(v152[0]) = 0; - std::string::reserve(&Block, 0x20u); - v102 = 0; - v112 = 0; - v116 = 0; - v146 = *(_DWORD *)(v117 + 52); - v97 = 0; - v101 = 0; - v111 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)&v146 + v102) ) - { - case 0: - v104 = 1; - goto LABEL_37; - case 1: - v138 = a2 == -1; - if ( v138 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v86 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v87 = 0; - if ( !v86 ) - v87 = a1; - v88 = v138 && a1 != 0; - a1 = v87; - if ( !v86 ) - v88 = 0; - v127 = v88; - } - else - { - v127 = 0; - } - } - else - { - v127 = a2 == -1; - } - v31 = a4 == -1; - v107 = v31 & (a3 != 0); - if ( v107 ) - { - v31 = 0; - if ( a3[2] >= a3[3] ) - { - v61 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v31 = 0; - if ( v61 ) - v31 = v107; - v62 = 0; - if ( !v61 ) - v62 = a3; - a3 = v62; - } - } - v104 = 0; - if ( v127 == v31 ) - goto LABEL_37; - if ( !a1 || a2 != -1 ) - { - LOBYTE(v32) = a2; - goto LABEL_107; - } - v33 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v33 >= a1[3] ) - { - v32 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v89 = 0; - if ( v32 != -1 ) - v89 = a1; - a1 = v89; -LABEL_107: - v104 = 0; - if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) - goto LABEL_37; - v33 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v33 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_110; - } -LABEL_109: - a1[2] = v33 + 1; -LABEL_110: - a2 = -1; - v104 = 1; - goto LABEL_37; - } - if ( (*(_BYTE *)(v100[6] + 2 * *v33) & 0x20) != 0 ) - goto LABEL_109; - a2 = -1; -LABEL_37: - if ( v102 == 3 ) - { - v16 = v104 & (v101 > 1); -LABEL_39: - if ( v16 ) - { - if ( v111 ) - v17 = *(_DWORD *)(v117 + 36); - else - v17 = *(_DWORD *)(v117 + 28); - v105 = v17; - for ( Buf = 1; ; ++Buf ) - { - v135 = a2 == -1; - if ( (v135 & (a1 != 0)) != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v74 = 0; - if ( !v73 ) - v74 = a1; - v75 = v135 & (a1 != 0); - a1 = v74; - if ( !v73 ) - v75 = 0; - v123 = v75; - } - else - { - v123 = 0; - } - } - else - { - v123 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v123 ^= v20 == -1; - v34 = v20 == -1; - v21 = 0; - if ( !v34 ) - v21 = a3; - a3 = v21; - } - } - else - { - v123 ^= a4 == -1; - } - if ( Buf >= v101 || !v123 ) - { - if ( Buf != v101 ) - { -LABEL_195: - v124 = v135 & (a1 != 0); - goto LABEL_120; - } - if ( v151 > 1 ) - goto LABEL_207; - goto LABEL_174; - } - v18 = a2; - v124 = v135 & (a1 != 0); - if ( v124 ) - { - v19 = (_BYTE *)a1[2]; - if ( (unsigned int)v19 < a1[3] ) - { - if ( *(_BYTE *)(v105 + Buf) != *v19 ) - { - v135 &= a1 != 0; - goto LABEL_120; - } -LABEL_49: - a1[2] = v19 + 1; - goto LABEL_50; - } - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v34 = v76 == -1; - v18 = v76; - v77 = 0; - if ( !v34 ) - v77 = a1; - a1 = v77; - } - if ( *(_BYTE *)(v105 + Buf) != v18 ) - goto LABEL_195; - v19 = (_BYTE *)a1[2]; - if ( (unsigned int)v19 < a1[3] ) - goto LABEL_49; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_50: - a2 = -1; - } - } - if ( !v104 ) - goto LABEL_119; - if ( v151 > 1 ) - { -LABEL_207: - first_not_of = std::string::find_first_not_of(&Block, 48, 0); - if ( first_not_of ) - { - if ( first_not_of != -1 ) - goto LABEL_209; - first_not_of = v151 - 1; - if ( !v151 ) - { - v151 = 0; - *(_BYTE *)Block = 0; - goto LABEL_174; - } - if ( v151 != 1 ) - { -LABEL_209: - if ( v151 <= first_not_of ) - first_not_of = v151; - std::string::_M_erase((int *)&Block, 0, first_not_of); - } - } - } -LABEL_174: - if ( v111 && *(_BYTE *)Block != 48 ) - std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); - v140 = (size_t)v148; - if ( v148 ) - { - v44 = v97; - if ( !v112 ) - v44 = v116; - v45 = v147; - Bufa = (std::locale::facet *)((char *)v148 + 1); - v129 = v44; - v46 = 15; - if ( v147 != v149 ) - v46 = v149[0]; - if ( (unsigned int)v148 + 1 > v46 ) - { - std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); - v45 = v147; - } - v45[v140] = v129; - v148 = Bufa; - *((_BYTE *)v147 + v140 + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v117 + 8), *(_DWORD *)(v117 + 12), (int)&v147) ) - *a6 |= 4u; - } - v135 = a2 == -1; - v124 = v135 & (a1 != 0); - if ( v112 && *(_DWORD *)(v117 + 44) != v116 ) - goto LABEL_120; - std::string::swap(a7, &Block); - if ( !v124 ) - goto LABEL_121; -LABEL_189: - v135 = 0; - if ( a1[2] >= a1[3] ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v48 = v124; - v49 = v47 == -1; - if ( v47 != -1 ) - v48 = 0; - v50 = 0; - if ( !v49 ) - v50 = a1; - v135 = v48; - a1 = v50; - } - goto LABEL_121; - } - while ( 1 ) - { - v136 = a2 == -1; - if ( v136 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v63 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v64 = 0; - if ( !v63 ) - v64 = a1; - v65 = v136 && a1 != 0; - a1 = v64; - if ( !v63 ) - v65 = 0; - v125 = v65; - } - else - { - v125 = 0; - } - } - else - { - v125 = a2 == -1; - } - v22 = a4 == -1; - v98 = v22 & (a3 != 0); - if ( v98 ) - { - v22 = 0; - if ( a3[2] >= a3[3] ) - { - v41 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v22 = v98; - if ( !v41 ) - v22 = 0; - v42 = 0; - if ( !v41 ) - v42 = a3; - a3 = v42; - } - } - if ( v22 == v125 ) - goto LABEL_136; - if ( a1 && a2 == -1 ) - { - v24 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - { - if ( (*(_BYTE *)(v100[6] + 2 * *v24) & 0x20) == 0 ) - { - a2 = -1; - v25 = v104 ^ 1; - goto LABEL_137; - } -LABEL_67: - a1[2] = v24 + 1; - goto LABEL_68; - } - v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v72 = 0; - if ( v23 != -1 ) - v72 = a1; - a1 = v72; - } - else - { - LOBYTE(v23) = a2; - } - if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v23) & 0x20) == 0 ) - goto LABEL_136; - v24 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - goto LABEL_67; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_68: - a2 = -1; - } - case 2: - if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) - goto LABEL_82; - v25 = v102 == 0 || v101 > 1; - if ( v25 ) - goto LABEL_82; - if ( v102 != 1 ) - { - v104 = 1; - if ( v102 == 2 ) - { - if ( HIBYTE(v146) == 4 ) - goto LABEL_82; - v26 = 3; - if ( HIBYTE(v146) == 3 && v110 ) - goto LABEL_82; - goto LABEL_139; - } -LABEL_137: - v26 = v102 + 1; - if ( v102 + 1 > 3 || v25 ) - { - v16 = v104 & (v101 > 1); - goto LABEL_39; - } -LABEL_139: - v102 = v26; - continue; - } - if ( !v110 && (_BYTE)v146 != 3 && BYTE2(v146) != 1 ) - { - v26 = 2; - goto LABEL_139; - } -LABEL_82: - v106 = 0; - v99 = *(_DWORD *)(v117 + 24); - while ( 2 ) - { - v137 = a2 == -1; - if ( v137 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v78 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v79 = 0; - if ( !v78 ) - v79 = a1; - v80 = v137 && a1 != 0; - a1 = v79; - if ( !v78 ) - v80 = 0; - v126 = v80; - } - else - { - v126 = 0; - } - } - else - { - v126 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v29 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v126 ^= v29 == -1; - v34 = v29 == -1; - v30 = 0; - if ( !v34 ) - v30 = a3; - a3 = v30; - } - } - else - { - v126 ^= a4 == -1; - } - v25 = v126 & (v106 < v99); - if ( v25 ) - { - if ( !a1 || a2 != -1 ) - { - LOBYTE(v27) = a2; - goto LABEL_88; - } - v28 = (_BYTE *)a1[2]; - if ( (unsigned int)v28 < a1[3] ) - { - if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != *v28 ) - { - a2 = -1; - goto LABEL_168; - } - goto LABEL_90; - } - v27 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v81 = 0; - if ( v27 != -1 ) - v81 = a1; - a1 = v81; -LABEL_88: - if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != (_BYTE)v27 ) - goto LABEL_168; - v28 = (_BYTE *)a1[2]; - if ( (unsigned int)v28 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else -LABEL_90: - a1[2] = v28 + 1; - ++v106; - a2 = -1; - continue; - } - break; - } - if ( v106 == v99 ) - goto LABEL_198; -LABEL_168: - if ( !v106 ) - { - v104 = (*(_BYTE *)(a5 + 13) & 2) == 0; - v25 = (*(_BYTE *)(a5 + 13) & 2) != 0; - goto LABEL_137; - } -LABEL_119: - v135 = a2 == -1; - v124 = v135 & (a1 != 0); -LABEL_120: - *a6 |= 4u; - if ( v124 ) - goto LABEL_189; -LABEL_121: - v37 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v37 = 0; - if ( a3[2] >= a3[3] ) - v37 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - } - if ( v37 == v135 ) - *a6 |= 2u; - if ( Block != v152 ) - operator delete(Block); - if ( v147 != v149 ) - operator delete(v147); - return a1; - case 3: - if ( !*(_DWORD *)(v117 + 32) ) - { - if ( !*(_DWORD *)(v117 + 40) ) - goto LABEL_74; -LABEL_199: - v141 = a2 == -1; - if ( !a1 || a2 != -1 ) - { - v130 = a2 == -1; - goto LABEL_202; - } -LABEL_253: - v130 = 1; - v141 = 0; - if ( a1[2] >= a1[3] ) - { - v67 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v68 = 0; - if ( !v67 ) - v68 = a1; - v130 = 1; - v141 = v67; - a1 = v68; - } -LABEL_202: - v51 = a4 == -1; - v109 = v51 & (a3 != 0); - if ( v109 ) - { - v51 = 0; - if ( a3[2] >= a3[3] ) - { - v84 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v51 = 0; - if ( v84 ) - v51 = v109; - v85 = 0; - if ( !v84 ) - v85 = a3; - a3 = v85; - } - } - if ( v51 == v141 ) - { -LABEL_204: - if ( !*(_DWORD *)(v117 + 32) || *(_DWORD *)(v117 + 40) ) - { -LABEL_74: - v25 = v110; - v104 = !v110; - goto LABEL_137; - } - goto LABEL_157; - } - if ( a1 && v130 ) - { - v70 = (_BYTE *)a1[2]; - if ( (unsigned int)v70 < a1[3] ) - { - if ( *v70 != **(_BYTE **)(v117 + 36) ) - goto LABEL_204; - v101 = *(_DWORD *)(v117 + 40); - goto LABEL_267; - } - v71 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v93 = 0; - if ( v71 != -1 ) - v93 = a1; - a1 = v93; - } - else - { - LOBYTE(v71) = a2; - } - if ( **(_BYTE **)(v117 + 36) != (_BYTE)v71 ) - goto LABEL_204; - v101 = *(_DWORD *)(v117 + 40); - v70 = (_BYTE *)a1[2]; - if ( (unsigned int)v70 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_268; - } -LABEL_267: - a1[2] = v70 + 1; -LABEL_268: - a2 = -1; - v25 = 0; - v104 = 1; - v111 = 1; - goto LABEL_137; - } - v139 = a2 == -1; - if ( v139 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v90 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v91 = 0; - if ( !v90 ) - v91 = a1; - v92 = v139 && a1 != 0; - a1 = v91; - if ( !v90 ) - v92 = 0; - v128 = v92; - } - else - { - v128 = 0; - } - } - else - { - v128 = a2 == -1; - } - v43 = a4 == -1; - v108 = v43 & (a3 != 0); - if ( v108 ) - { - v43 = 0; - if ( a3[2] >= a3[3] ) - { - v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v43 = 0; - if ( v82 ) - v43 = v108; - v83 = 0; - if ( !v82 ) - v83 = a3; - a3 = v83; - } - } - if ( v128 == v43 ) - { -LABEL_155: - if ( *(_DWORD *)(v117 + 40) ) - goto LABEL_199; -LABEL_156: - if ( !*(_DWORD *)(v117 + 32) ) - goto LABEL_74; -LABEL_157: - v104 = 1; - v25 = 0; - v111 = 1; - goto LABEL_137; - } - if ( a1 && a2 == -1 ) - { - v66 = (_BYTE *)a1[2]; - if ( (unsigned int)v66 < a1[3] ) - { - if ( **(_BYTE **)(v117 + 28) != *v66 ) - { - if ( *(_DWORD *)(v117 + 40) ) - goto LABEL_253; - goto LABEL_156; - } - v101 = *(_DWORD *)(v117 + 32); - goto LABEL_260; - } - v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v94 = 0; - if ( v69 != -1 ) - v94 = a1; - a1 = v94; - } - else - { - LOBYTE(v69) = a2; - } - if ( **(_BYTE **)(v117 + 28) != (_BYTE)v69 ) - goto LABEL_155; - v101 = *(_DWORD *)(v117 + 32); - v66 = (_BYTE *)a1[2]; - if ( (unsigned int)v66 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_261: - a2 = -1; - v25 = 0; -LABEL_198: - v104 = 1; - goto LABEL_137; - } -LABEL_260: - a1[2] = v66 + 1; - goto LABEL_261; - case 4: - while ( 2 ) - { - v132 = a2 == -1; - if ( v132 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v54 = 0; - if ( !v53 ) - v54 = a1; - v55 = v132 && a1 != 0; - a1 = v54; - if ( !v53 ) - v55 = 0; - v121 = v55; - } - else - { - v121 = 0; - } - } - else - { - v121 = a2 == -1; - } - v11 = a4 == -1; - v103 = v11 & (a3 != 0); - if ( v103 && (v11 = 0, a3[2] >= a3[3]) ) - { - v34 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v35 = v103; - if ( !v34 ) - v35 = 0; - v36 = 0; - if ( !v34 ) - v36 = a3; - a3 = v36; - if ( v35 == v121 ) - goto LABEL_117; - } - else if ( v11 == v121 ) - { - goto LABEL_117; - } - if ( a1 && a2 == -1 ) - { - v39 = (char *)a1[2]; - if ( (unsigned int)v39 >= a1[3] ) - { - v56 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v57 = v56 == -1; - v58 = -1; - if ( v56 != -1 ) - v58 = v56; - v59 = 0; - if ( !v57 ) - v59 = a1; - v133 = v58; - a1 = v59; - } - else - { - v133 = *v39; - } - } - else - { - v133 = a2; - } - v12 = memchr((const void *)(v117 + 57), v133, 0xAu); - if ( v12 ) - { - v7 = Block; - v131 = v12[(_DWORD)std::money_base::_S_atoms - 56 - v117]; - v143 = v151; - v8 = 15; - if ( Block != v152 ) - v8 = v152[0]; - v120 = (std::locale::facet *)(v151 + 1); - if ( v151 + 1 > v8 ) - { - std::string::_M_mutate((int)&Block, v151, 0, 0, 1u); - v7 = Block; - } - ++v116; - v7[v143] = v131; - v151 = (size_t)v120; - *((_BYTE *)Block + v143 + 1) = 0; -LABEL_14: - v9 = a1; - v10 = a1[2]; - if ( v10 < a1[3] ) - { -LABEL_15: - v9[2] = v10 + 1; -LABEL_16: - a2 = -1; - continue; - } -LABEL_35: - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_16; - } - break; - } - v104 = v112 | (*(_BYTE *)(v117 + 17) != (unsigned __int8)v133); - if ( !v104 ) - { - if ( *(int *)(v117 + 44) > 0 ) - { - v40 = v116; - v112 = 1; - v116 = 0; - v97 = v40; - goto LABEL_14; - } - v112 = 0; -LABEL_117: - v104 = 1; -LABEL_118: - if ( !v151 ) - goto LABEL_119; - goto LABEL_136; - } - v13 = *(_BYTE *)(v117 + 16); - if ( !v13 ) - goto LABEL_118; - if ( *(_BYTE *)(v117 + 18) == v133 ) - { - if ( !v112 ) - { - if ( v116 ) - { - v134 = v116; - v14 = v147; - v144 = (size_t)v148; - v15 = 15; - if ( v147 != v149 ) - v15 = v149[0]; - v122 = (std::locale::facet *)((char *)v148 + 1); - if ( (unsigned int)v148 + 1 > v15 ) - { - std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); - v14 = v147; - } - v116 = 0; - v14[v144] = v134; - v148 = v122; - *((_BYTE *)v147 + v144 + 1) = 0; - v9 = a1; - v10 = a1[2]; - if ( v10 < a1[3] ) - goto LABEL_15; - goto LABEL_35; - } - v104 = 0; - goto LABEL_118; - } - v13 = v112; - } - v104 = v13; - if ( !v151 ) - goto LABEL_119; -LABEL_136: - v25 = v104 ^ 1; - goto LABEL_137; - default: - v104 = 1; - v25 = 0; - goto LABEL_137; - } - } -} -// 46129B: variable 'v95' is possibly undefined -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 50C608: using guessed type signed __int32 std::moneypunct::id; -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004619E0) -------------------------------------------------------- -_DWORD *__stdcall std::money_get>::_M_extract( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - _BYTE *v7; // edx - unsigned int v8; // eax - _DWORD *v9; // ecx - unsigned int v10; // eax - char v11; // al - _BYTE *v12; // eax - char v13; // al - _BYTE *v14; // edx - unsigned int v15; // eax - char v16; // al - int v17; // eax - char v18; // dl - _BYTE *v19; // eax - int v20; // eax - _DWORD *v21; // eax - char v22; // al - int v23; // eax - unsigned __int8 *v24; // eax - char v25; // al - int v26; // edx - int v27; // eax - _BYTE *v28; // eax - int v29; // eax - _DWORD *v30; // eax - char v31; // al - int v32; // eax - unsigned __int8 *v33; // eax - bool v34; // zf - char v35; // al - _DWORD *v36; // edx - char v37; // al - char *v39; // eax - char v40; // al - bool v41; // zf - _DWORD *v42; // edx - char v43; // al - char v44; // al - _BYTE *v45; // edx - unsigned int v46; // eax - int v47; // eax - unsigned __int8 v48; // dl - bool v49; // zf - _DWORD *v50; // eax - char v51; // al - unsigned int first_not_of; // eax - bool v53; // zf - _DWORD *v54; // eax - bool v55; // bl - int v56; // eax - bool v57; // zf - char v58; // dl - _DWORD *v59; // eax - _DWORD *v60; // eax - bool v61; // zf - _DWORD *v62; // edx - bool v63; // zf - _DWORD *v64; // eax - bool v65; // bl - _BYTE *v66; // eax - bool v67; // zf - _DWORD *v68; // eax - int v69; // eax - _BYTE *v70; // eax - int v71; // eax - _DWORD *v72; // edx - bool v73; // zf - _DWORD *v74; // eax - char v75; // bl - int v76; // eax - _DWORD *v77; // eax - bool v78; // zf - _DWORD *v79; // eax - bool v80; // bl - _DWORD *v81; // edx - bool v82; // zf - _DWORD *v83; // edx - bool v84; // zf - _DWORD *v85; // edx - bool v86; // zf - _DWORD *v87; // eax - bool v88; // bl - _DWORD *v89; // edx - bool v90; // zf - _DWORD *v91; // eax - bool v92; // bl - _DWORD *v93; // edx - _DWORD *v94; // edx - unsigned int v95; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v96; // [esp+14h] [ebp-C4h] - char v97; // [esp+18h] [ebp-C0h] - char v98; // [esp+1Ch] [ebp-BCh] - unsigned int v99; // [esp+1Ch] [ebp-BCh] - _DWORD *v100; // [esp+20h] [ebp-B8h] - unsigned int v101; // [esp+24h] [ebp-B4h] - int v102; // [esp+2Ch] [ebp-ACh] - char v103; // [esp+30h] [ebp-A8h] - char v104; // [esp+30h] [ebp-A8h] - int v105; // [esp+30h] [ebp-A8h] - unsigned int v106; // [esp+30h] [ebp-A8h] - char v107; // [esp+30h] [ebp-A8h] - char v108; // [esp+30h] [ebp-A8h] - char v109; // [esp+30h] [ebp-A8h] - bool v110; // [esp+35h] [ebp-A3h] - char v111; // [esp+36h] [ebp-A2h] - char v112; // [esp+37h] [ebp-A1h] - unsigned int Buf; // [esp+38h] [ebp-A0h] - std::locale::facet *Bufa; // [esp+38h] [ebp-A0h] - int *v115; // [esp+3Ch] [ebp-9Ch] - int v116; // [esp+3Ch] [ebp-9Ch] - int v117; // [esp+40h] [ebp-98h] - std::locale::facet *v119; // [esp+4Ch] [ebp-8Ch] - std::locale::facet *v120; // [esp+4Ch] [ebp-8Ch] - char v121; // [esp+4Ch] [ebp-8Ch] - std::locale::facet *v122; // [esp+4Ch] [ebp-8Ch] - char v123; // [esp+4Ch] [ebp-8Ch] - unsigned __int8 v124; // [esp+4Ch] [ebp-8Ch] - char v125; // [esp+4Ch] [ebp-8Ch] - char v126; // [esp+4Ch] [ebp-8Ch] - char v127; // [esp+4Ch] [ebp-8Ch] - char v128; // [esp+4Ch] [ebp-8Ch] - char v129; // [esp+4Ch] [ebp-8Ch] - bool v130; // [esp+4Ch] [ebp-8Ch] - char v131; // [esp+50h] [ebp-88h] - bool v132; // [esp+50h] [ebp-88h] - char v133; // [esp+50h] [ebp-88h] - char v134; // [esp+50h] [ebp-88h] - unsigned __int8 v135; // [esp+50h] [ebp-88h] - bool v136; // [esp+50h] [ebp-88h] - bool v137; // [esp+50h] [ebp-88h] - bool v138; // [esp+50h] [ebp-88h] - bool v139; // [esp+50h] [ebp-88h] - size_t v140; // [esp+50h] [ebp-88h] - char v141; // [esp+50h] [ebp-88h] - size_t v143; // [esp+54h] [ebp-84h] - size_t v144; // [esp+54h] [ebp-84h] - int v146; // [esp+9Ch] [ebp-3Ch] - void *v147; // [esp+A0h] [ebp-38h] BYREF - std::locale::facet *v148; // [esp+A4h] [ebp-34h] - int v149[4]; // [esp+A8h] [ebp-30h] BYREF - void *Block; // [esp+B8h] [ebp-20h] BYREF - size_t v151; // [esp+BCh] [ebp-1Ch] - int v152[5]; // [esp+C0h] [ebp-18h] BYREF - - v100 = std::use_facet>(a5 + 108); - v119 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v115 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v119); - v117 = *v115; - if ( !*v115 ) - { - v60 = operator new(0x44u); - *v60 = &off_51B094; - v60[1] = 0; - v60[2] = 0; - v60[3] = 0; - *((_WORD *)v60 + 8) = 0; - *((_BYTE *)v60 + 18) = 0; - v60[5] = 0; - v60[6] = 0; - v60[7] = 0; - v60[8] = 0; - v60[9] = 0; - v60[10] = 0; - v60[11] = 0; - v60[12] = 0; - v60[13] = 0; - *((_BYTE *)v60 + 67) = 0; - v96 = (std::locale::_Impl *)v60; - std::__moneypunct_cache::_M_cache((int)v60, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, v119, v95); - v117 = *v115; - } - if ( *(_DWORD *)(v117 + 32) ) - v110 = *(_DWORD *)(v117 + 40) != 0; - else - v110 = 0; - v148 = 0; - v147 = v149; - LOBYTE(v149[0]) = 0; - if ( *(_BYTE *)(v117 + 16) ) - std::string::reserve(&v147, 0x20u); - Block = v152; - v151 = 0; - LOBYTE(v152[0]) = 0; - std::string::reserve(&Block, 0x20u); - v102 = 0; - v112 = 0; - v116 = 0; - v146 = *(_DWORD *)(v117 + 52); - v97 = 0; - v101 = 0; - v111 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)&v146 + v102) ) - { - case 0: - v104 = 1; - goto LABEL_37; - case 1: - v138 = a2 == -1; - if ( v138 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v86 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v87 = 0; - if ( !v86 ) - v87 = a1; - v88 = v138 && a1 != 0; - a1 = v87; - if ( !v86 ) - v88 = 0; - v127 = v88; - } - else - { - v127 = 0; - } - } - else - { - v127 = a2 == -1; - } - v31 = a4 == -1; - v107 = v31 & (a3 != 0); - if ( v107 ) - { - v31 = 0; - if ( a3[2] >= a3[3] ) - { - v61 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v31 = 0; - if ( v61 ) - v31 = v107; - v62 = 0; - if ( !v61 ) - v62 = a3; - a3 = v62; - } - } - v104 = 0; - if ( v127 == v31 ) - goto LABEL_37; - if ( !a1 || a2 != -1 ) - { - LOBYTE(v32) = a2; - goto LABEL_107; - } - v33 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v33 >= a1[3] ) - { - v32 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v89 = 0; - if ( v32 != -1 ) - v89 = a1; - a1 = v89; -LABEL_107: - v104 = 0; - if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) - goto LABEL_37; - v33 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v33 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_110; - } -LABEL_109: - a1[2] = v33 + 1; -LABEL_110: - a2 = -1; - v104 = 1; - goto LABEL_37; - } - if ( (*(_BYTE *)(v100[6] + 2 * *v33) & 0x20) != 0 ) - goto LABEL_109; - a2 = -1; -LABEL_37: - if ( v102 == 3 ) - { - v16 = v104 & (v101 > 1); -LABEL_39: - if ( v16 ) - { - if ( v111 ) - v17 = *(_DWORD *)(v117 + 36); - else - v17 = *(_DWORD *)(v117 + 28); - v105 = v17; - for ( Buf = 1; ; ++Buf ) - { - v135 = a2 == -1; - if ( (v135 & (a1 != 0)) != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v74 = 0; - if ( !v73 ) - v74 = a1; - v75 = v135 & (a1 != 0); - a1 = v74; - if ( !v73 ) - v75 = 0; - v123 = v75; - } - else - { - v123 = 0; - } - } - else - { - v123 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v123 ^= v20 == -1; - v34 = v20 == -1; - v21 = 0; - if ( !v34 ) - v21 = a3; - a3 = v21; - } - } - else - { - v123 ^= a4 == -1; - } - if ( Buf >= v101 || !v123 ) - { - if ( Buf != v101 ) - { -LABEL_195: - v124 = v135 & (a1 != 0); - goto LABEL_120; - } - if ( v151 > 1 ) - goto LABEL_207; - goto LABEL_174; - } - v18 = a2; - v124 = v135 & (a1 != 0); - if ( v124 ) - { - v19 = (_BYTE *)a1[2]; - if ( (unsigned int)v19 < a1[3] ) - { - if ( *(_BYTE *)(v105 + Buf) != *v19 ) - { - v135 &= a1 != 0; - goto LABEL_120; - } -LABEL_49: - a1[2] = v19 + 1; - goto LABEL_50; - } - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v34 = v76 == -1; - v18 = v76; - v77 = 0; - if ( !v34 ) - v77 = a1; - a1 = v77; - } - if ( *(_BYTE *)(v105 + Buf) != v18 ) - goto LABEL_195; - v19 = (_BYTE *)a1[2]; - if ( (unsigned int)v19 < a1[3] ) - goto LABEL_49; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_50: - a2 = -1; - } - } - if ( !v104 ) - goto LABEL_119; - if ( v151 > 1 ) - { -LABEL_207: - first_not_of = std::string::find_first_not_of(&Block, 48, 0); - if ( first_not_of ) - { - if ( first_not_of != -1 ) - goto LABEL_209; - first_not_of = v151 - 1; - if ( !v151 ) - { - v151 = 0; - *(_BYTE *)Block = 0; - goto LABEL_174; - } - if ( v151 != 1 ) - { -LABEL_209: - if ( v151 <= first_not_of ) - first_not_of = v151; - std::string::_M_erase((int *)&Block, 0, first_not_of); - } - } - } -LABEL_174: - if ( v111 && *(_BYTE *)Block != 48 ) - std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); - v140 = (size_t)v148; - if ( v148 ) - { - v44 = v97; - if ( !v112 ) - v44 = v116; - v45 = v147; - Bufa = (std::locale::facet *)((char *)v148 + 1); - v129 = v44; - v46 = 15; - if ( v147 != v149 ) - v46 = v149[0]; - if ( (unsigned int)v148 + 1 > v46 ) - { - std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); - v45 = v147; - } - v45[v140] = v129; - v148 = Bufa; - *((_BYTE *)v147 + v140 + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v117 + 8), *(_DWORD *)(v117 + 12), (int)&v147) ) - *a6 |= 4u; - } - v135 = a2 == -1; - v124 = v135 & (a1 != 0); - if ( v112 && *(_DWORD *)(v117 + 44) != v116 ) - goto LABEL_120; - std::string::swap(a7, &Block); - if ( !v124 ) - goto LABEL_121; -LABEL_189: - v135 = 0; - if ( a1[2] >= a1[3] ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v48 = v124; - v49 = v47 == -1; - if ( v47 != -1 ) - v48 = 0; - v50 = 0; - if ( !v49 ) - v50 = a1; - v135 = v48; - a1 = v50; - } - goto LABEL_121; - } - while ( 1 ) - { - v136 = a2 == -1; - if ( v136 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v63 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v64 = 0; - if ( !v63 ) - v64 = a1; - v65 = v136 && a1 != 0; - a1 = v64; - if ( !v63 ) - v65 = 0; - v125 = v65; - } - else - { - v125 = 0; - } - } - else - { - v125 = a2 == -1; - } - v22 = a4 == -1; - v98 = v22 & (a3 != 0); - if ( v98 ) - { - v22 = 0; - if ( a3[2] >= a3[3] ) - { - v41 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v22 = v98; - if ( !v41 ) - v22 = 0; - v42 = 0; - if ( !v41 ) - v42 = a3; - a3 = v42; - } - } - if ( v22 == v125 ) - goto LABEL_136; - if ( a1 && a2 == -1 ) - { - v24 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - { - if ( (*(_BYTE *)(v100[6] + 2 * *v24) & 0x20) == 0 ) - { - a2 = -1; - v25 = v104 ^ 1; - goto LABEL_137; - } -LABEL_67: - a1[2] = v24 + 1; - goto LABEL_68; - } - v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v72 = 0; - if ( v23 != -1 ) - v72 = a1; - a1 = v72; - } - else - { - LOBYTE(v23) = a2; - } - if ( (*(_BYTE *)(v100[6] + 2 * (unsigned __int8)v23) & 0x20) == 0 ) - goto LABEL_136; - v24 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v24 < a1[3] ) - goto LABEL_67; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_68: - a2 = -1; - } - case 2: - if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) - goto LABEL_82; - v25 = v102 == 0 || v101 > 1; - if ( v25 ) - goto LABEL_82; - if ( v102 != 1 ) - { - v104 = 1; - if ( v102 == 2 ) - { - if ( HIBYTE(v146) == 4 ) - goto LABEL_82; - v26 = 3; - if ( HIBYTE(v146) == 3 && v110 ) - goto LABEL_82; - goto LABEL_139; - } -LABEL_137: - v26 = v102 + 1; - if ( v102 + 1 > 3 || v25 ) - { - v16 = v104 & (v101 > 1); - goto LABEL_39; - } -LABEL_139: - v102 = v26; - continue; - } - if ( !v110 && (_BYTE)v146 != 3 && BYTE2(v146) != 1 ) - { - v26 = 2; - goto LABEL_139; - } -LABEL_82: - v106 = 0; - v99 = *(_DWORD *)(v117 + 24); - while ( 2 ) - { - v137 = a2 == -1; - if ( v137 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v78 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v79 = 0; - if ( !v78 ) - v79 = a1; - v80 = v137 && a1 != 0; - a1 = v79; - if ( !v78 ) - v80 = 0; - v126 = v80; - } - else - { - v126 = 0; - } - } - else - { - v126 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v29 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v126 ^= v29 == -1; - v34 = v29 == -1; - v30 = 0; - if ( !v34 ) - v30 = a3; - a3 = v30; - } - } - else - { - v126 ^= a4 == -1; - } - v25 = v126 & (v106 < v99); - if ( v25 ) - { - if ( !a1 || a2 != -1 ) - { - LOBYTE(v27) = a2; - goto LABEL_88; - } - v28 = (_BYTE *)a1[2]; - if ( (unsigned int)v28 < a1[3] ) - { - if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != *v28 ) - { - a2 = -1; - goto LABEL_168; - } - goto LABEL_90; - } - v27 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v81 = 0; - if ( v27 != -1 ) - v81 = a1; - a1 = v81; -LABEL_88: - if ( *(_BYTE *)(*(_DWORD *)(v117 + 20) + v106) != (_BYTE)v27 ) - goto LABEL_168; - v28 = (_BYTE *)a1[2]; - if ( (unsigned int)v28 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else -LABEL_90: - a1[2] = v28 + 1; - ++v106; - a2 = -1; - continue; - } - break; - } - if ( v106 == v99 ) - goto LABEL_198; -LABEL_168: - if ( !v106 ) - { - v104 = (*(_BYTE *)(a5 + 13) & 2) == 0; - v25 = (*(_BYTE *)(a5 + 13) & 2) != 0; - goto LABEL_137; - } -LABEL_119: - v135 = a2 == -1; - v124 = v135 & (a1 != 0); -LABEL_120: - *a6 |= 4u; - if ( v124 ) - goto LABEL_189; -LABEL_121: - v37 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v37 = 0; - if ( a3[2] >= a3[3] ) - v37 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - } - if ( v37 == v135 ) - *a6 |= 2u; - if ( Block != v152 ) - operator delete(Block); - if ( v147 != v149 ) - operator delete(v147); - return a1; - case 3: - if ( !*(_DWORD *)(v117 + 32) ) - { - if ( !*(_DWORD *)(v117 + 40) ) - goto LABEL_74; -LABEL_199: - v141 = a2 == -1; - if ( !a1 || a2 != -1 ) - { - v130 = a2 == -1; - goto LABEL_202; - } -LABEL_253: - v130 = 1; - v141 = 0; - if ( a1[2] >= a1[3] ) - { - v67 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v68 = 0; - if ( !v67 ) - v68 = a1; - v130 = 1; - v141 = v67; - a1 = v68; - } -LABEL_202: - v51 = a4 == -1; - v109 = v51 & (a3 != 0); - if ( v109 ) - { - v51 = 0; - if ( a3[2] >= a3[3] ) - { - v84 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v51 = 0; - if ( v84 ) - v51 = v109; - v85 = 0; - if ( !v84 ) - v85 = a3; - a3 = v85; - } - } - if ( v51 == v141 ) - { -LABEL_204: - if ( !*(_DWORD *)(v117 + 32) || *(_DWORD *)(v117 + 40) ) - { -LABEL_74: - v25 = v110; - v104 = !v110; - goto LABEL_137; - } - goto LABEL_157; - } - if ( a1 && v130 ) - { - v70 = (_BYTE *)a1[2]; - if ( (unsigned int)v70 < a1[3] ) - { - if ( *v70 != **(_BYTE **)(v117 + 36) ) - goto LABEL_204; - v101 = *(_DWORD *)(v117 + 40); - goto LABEL_267; - } - v71 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v93 = 0; - if ( v71 != -1 ) - v93 = a1; - a1 = v93; - } - else - { - LOBYTE(v71) = a2; - } - if ( **(_BYTE **)(v117 + 36) != (_BYTE)v71 ) - goto LABEL_204; - v101 = *(_DWORD *)(v117 + 40); - v70 = (_BYTE *)a1[2]; - if ( (unsigned int)v70 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_268; - } -LABEL_267: - a1[2] = v70 + 1; -LABEL_268: - a2 = -1; - v25 = 0; - v104 = 1; - v111 = 1; - goto LABEL_137; - } - v139 = a2 == -1; - if ( v139 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v90 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v91 = 0; - if ( !v90 ) - v91 = a1; - v92 = v139 && a1 != 0; - a1 = v91; - if ( !v90 ) - v92 = 0; - v128 = v92; - } - else - { - v128 = 0; - } - } - else - { - v128 = a2 == -1; - } - v43 = a4 == -1; - v108 = v43 & (a3 != 0); - if ( v108 ) - { - v43 = 0; - if ( a3[2] >= a3[3] ) - { - v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v43 = 0; - if ( v82 ) - v43 = v108; - v83 = 0; - if ( !v82 ) - v83 = a3; - a3 = v83; - } - } - if ( v128 == v43 ) - { -LABEL_155: - if ( *(_DWORD *)(v117 + 40) ) - goto LABEL_199; -LABEL_156: - if ( !*(_DWORD *)(v117 + 32) ) - goto LABEL_74; -LABEL_157: - v104 = 1; - v25 = 0; - v111 = 1; - goto LABEL_137; - } - if ( a1 && a2 == -1 ) - { - v66 = (_BYTE *)a1[2]; - if ( (unsigned int)v66 < a1[3] ) - { - if ( **(_BYTE **)(v117 + 28) != *v66 ) - { - if ( *(_DWORD *)(v117 + 40) ) - goto LABEL_253; - goto LABEL_156; - } - v101 = *(_DWORD *)(v117 + 32); - goto LABEL_260; - } - v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v94 = 0; - if ( v69 != -1 ) - v94 = a1; - a1 = v94; - } - else - { - LOBYTE(v69) = a2; - } - if ( **(_BYTE **)(v117 + 28) != (_BYTE)v69 ) - goto LABEL_155; - v101 = *(_DWORD *)(v117 + 32); - v66 = (_BYTE *)a1[2]; - if ( (unsigned int)v66 >= a1[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_261: - a2 = -1; - v25 = 0; -LABEL_198: - v104 = 1; - goto LABEL_137; - } -LABEL_260: - a1[2] = v66 + 1; - goto LABEL_261; - case 4: - while ( 2 ) - { - v132 = a2 == -1; - if ( v132 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1) == -1; - v54 = 0; - if ( !v53 ) - v54 = a1; - v55 = v132 && a1 != 0; - a1 = v54; - if ( !v53 ) - v55 = 0; - v121 = v55; - } - else - { - v121 = 0; - } - } - else - { - v121 = a2 == -1; - } - v11 = a4 == -1; - v103 = v11 & (a3 != 0); - if ( v103 && (v11 = 0, a3[2] >= a3[3]) ) - { - v34 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - v35 = v103; - if ( !v34 ) - v35 = 0; - v36 = 0; - if ( !v34 ) - v36 = a3; - a3 = v36; - if ( v35 == v121 ) - goto LABEL_117; - } - else if ( v11 == v121 ) - { - goto LABEL_117; - } - if ( a1 && a2 == -1 ) - { - v39 = (char *)a1[2]; - if ( (unsigned int)v39 >= a1[3] ) - { - v56 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v57 = v56 == -1; - v58 = -1; - if ( v56 != -1 ) - v58 = v56; - v59 = 0; - if ( !v57 ) - v59 = a1; - v133 = v58; - a1 = v59; - } - else - { - v133 = *v39; - } - } - else - { - v133 = a2; - } - v12 = memchr((const void *)(v117 + 57), v133, 0xAu); - if ( v12 ) - { - v7 = Block; - v131 = v12[(_DWORD)std::money_base::_S_atoms - 56 - v117]; - v143 = v151; - v8 = 15; - if ( Block != v152 ) - v8 = v152[0]; - v120 = (std::locale::facet *)(v151 + 1); - if ( v151 + 1 > v8 ) - { - std::string::_M_mutate((int)&Block, v151, 0, 0, 1u); - v7 = Block; - } - ++v116; - v7[v143] = v131; - v151 = (size_t)v120; - *((_BYTE *)Block + v143 + 1) = 0; -LABEL_14: - v9 = a1; - v10 = a1[2]; - if ( v10 < a1[3] ) - { -LABEL_15: - v9[2] = v10 + 1; -LABEL_16: - a2 = -1; - continue; - } -LABEL_35: - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_16; - } - break; - } - v104 = v112 | (*(_BYTE *)(v117 + 17) != (unsigned __int8)v133); - if ( !v104 ) - { - if ( *(int *)(v117 + 44) > 0 ) - { - v40 = v116; - v112 = 1; - v116 = 0; - v97 = v40; - goto LABEL_14; - } - v112 = 0; -LABEL_117: - v104 = 1; -LABEL_118: - if ( !v151 ) - goto LABEL_119; - goto LABEL_136; - } - v13 = *(_BYTE *)(v117 + 16); - if ( !v13 ) - goto LABEL_118; - if ( *(_BYTE *)(v117 + 18) == v133 ) - { - if ( !v112 ) - { - if ( v116 ) - { - v134 = v116; - v14 = v147; - v144 = (size_t)v148; - v15 = 15; - if ( v147 != v149 ) - v15 = v149[0]; - v122 = (std::locale::facet *)((char *)v148 + 1); - if ( (unsigned int)v148 + 1 > v15 ) - { - std::string::_M_mutate((int)&v147, (size_t)v148, 0, 0, 1u); - v14 = v147; - } - v116 = 0; - v14[v144] = v134; - v148 = v122; - *((_BYTE *)v147 + v144 + 1) = 0; - v9 = a1; - v10 = a1[2]; - if ( v10 < a1[3] ) - goto LABEL_15; - goto LABEL_35; - } - v104 = 0; - goto LABEL_118; - } - v13 = v112; - } - v104 = v13; - if ( !v151 ) - goto LABEL_119; -LABEL_136: - v25 = v104 ^ 1; - goto LABEL_137; - default: - v104 = 1; - v25 = 0; - goto LABEL_137; - } - } -} -// 462BCB: variable 'v95' is possibly undefined -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 50C60C: using guessed type signed __int32 std::moneypunct::id; -// 51B094: using guessed type int (*off_51B094)(); - -//----- (00463310) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); -} - -//----- (00463320) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00463330) -------------------------------------------------------- -__int64 __stdcall std::money_get>::do_get( - __int64 a1, - _DWORD *a2, - int a3, - char a4, - int a5, - _DWORD *a6, - int *a7) -{ - __int64 v7; // rax - char v9; // al - void (__thiscall *v10)(_BYTE *, char *, char *, void *); // eax - void *v11; // [esp+28h] [ebp-70h] - char *v12; // [esp+2Ch] [ebp-6Ch] - _BYTE *v13; // [esp+30h] [ebp-68h] - _DWORD *Size; // [esp+34h] [ebp-64h] - char *Block; // [esp+38h] [ebp-60h] - void *v16; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - char v18[24]; // [esp+80h] [ebp-18h] BYREF - __int64 v19; // [esp+A0h] [ebp+8h] - - v18[0] = 0; - v13 = std::use_facet>(a5 + 108); - v16 = v18; - v17 = 0; - if ( a4 ) - LODWORD(v7) = std::money_get>::_M_extract( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - a5, - a6, - &v16); - else - LODWORD(v7) = std::money_get>::_M_extract( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - a5, - a6, - &v16); - v19 = v7; - Size = v17; - if ( !v17 ) - goto LABEL_4; - std::string::resize(a7, v17, 0); - Block = (char *)v16; - v12 = (char *)v16 + (_DWORD)Size; - v9 = v13[28]; - v11 = (void *)*a7; - if ( v9 != 1 ) - { - if ( !v9 ) - std::ctype::_M_widen_init((int)v13); - v10 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v10 == (char *)std::ctype::do_widen ) - { - if ( v12 != Block ) - { -LABEL_14: - memcpy(v11, Block, (size_t)Size); - Block = (char *)v16; - goto LABEL_5; - } - } - else - { - v10(v13, Block, v12, v11); - } -LABEL_4: - Block = (char *)v16; - goto LABEL_5; - } - if ( v12 != v16 ) - goto LABEL_14; -LABEL_5: - if ( Block != v18 ) - operator delete(Block); - return v19; -} -// 4633D6: variable 'v7' is possibly undefined - -//----- (00463540) -------------------------------------------------------- -__int64 __stdcall std::money_get>::do_get( - __int64 a1, - _DWORD *a2, - int a3, - char a4, - int a5, - _DWORD *a6, - long double *a7) -{ - __int64 v7; // rax - void *Block[2]; // [esp+68h] [ebp-20h] BYREF - char v10[24]; // [esp+70h] [ebp-18h] BYREF - __int64 v11; // [esp+90h] [ebp+8h] - - Block[0] = v10; - Block[1] = 0; - v10[0] = 0; - if ( a4 ) - LODWORD(v7) = std::money_get>::_M_extract( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - a5, - a6, - Block); - else - LODWORD(v7) = std::money_get>::_M_extract( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - a5, - a6, - Block); - v11 = v7; - std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((char *)Block[0], a7, a6); - if ( Block[0] != v10 ) - operator delete(Block[0]); - return v11; -} -// 4635D1: variable 'v7' is possibly undefined - -//----- (00463670) -------------------------------------------------------- -_DWORD *__stdcall std::money_get>::_M_extract( - _DWORD *a1, - __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - char v7; // al - _BYTE *v8; // edx - unsigned int v9; // eax - _DWORD *v10; // ecx - unsigned int v11; // eax - char v12; // al - __int16 v13; // dx - _WORD *v14; // eax - _BYTE *v15; // edx - unsigned int v16; // eax - char v17; // al - int v18; // eax - char v19; // al - __int16 v20; // ax - unsigned int v21; // eax - __int16 *v22; // eax - __int16 v23; // ax - bool v24; // zf - _DWORD *v25; // eax - char v26; // bl - char v27; // al - unsigned __int16 v28; // ax - unsigned int v29; // eax - __int16 *v30; // eax - __int16 v31; // ax - bool v32; // zf - _DWORD *v33; // eax - bool v34; // bl - char v35; // al - unsigned __int16 v36; // ax - unsigned int v37; // eax - char v38; // al - int v39; // edx - bool v40; // al - __int16 v41; // ax - unsigned int v42; // eax - __int16 *v43; // eax - __int16 v44; // ax - bool v45; // zf - _DWORD *v46; // eax - bool v47; // bl - __int16 *v48; // eax - __int16 v49; // ax - bool v50; // zf - _DWORD *v51; // ebx - char v52; // al - _DWORD *v53; // eax - _DWORD *v54; // edx - __int16 *v56; // eax - __int16 v57; // ax - bool v58; // zf - _DWORD *v59; // eax - bool v60; // bl - __int16 *v61; // eax - _DWORD *v62; // eax - char v63; // al - __int16 *v64; // eax - __int16 v65; // ax - bool v66; // zf - _DWORD *v67; // ebx - unsigned __int16 *v68; // eax - _DWORD *v69; // ebx - char v70; // al - __int16 *v71; // eax - __int16 v72; // ax - bool v73; // zf - _DWORD *v74; // ebx - char v75; // al - _BYTE *v76; // eax - unsigned int v77; // edx - __int16 *v78; // eax - _DWORD *v79; // ebx - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // ebx - __int16 *v84; // eax - _DWORD *v85; // ebx - char v86; // al - unsigned int first_not_of; // eax - __int16 v88; // ax - unsigned int v89; // eax - _DWORD *v90; // eax - __int16 *v91; // eax - __int16 v92; // ax - __int16 *v93; // eax - __int16 v94; // ax - unsigned __int8 v95; // bl - bool v96; // zf - __int16 *v97; // eax - __int16 v98; // ax - bool v99; // zf - _DWORD *v100; // ebx - __int16 *v101; // eax - __int16 v102; // ax - bool v103; // zf - _DWORD *v104; // eax - bool v105; // bl - __int16 *v106; // eax - __int16 v107; // ax - _DWORD *v108; // ebx - unsigned int v109; // eax - __int16 *v110; // eax - _DWORD *v111; // ebx - __int16 *v112; // eax - __int16 v113; // ax - bool v114; // zf - _DWORD *v115; // eax - bool v116; // bl - __int16 *v117; // eax - __int16 v118; // ax - bool v119; // zf - _DWORD *v120; // eax - bool v121; // bl - __int16 *v122; // eax - __int16 v123; // ax - bool v124; // zf - _DWORD *v125; // ebx - unsigned __int16 *v126; // eax - _DWORD *v127; // ebx - __int16 *v128; // eax - __int16 v129; // ax - bool v130; // zf - _DWORD *v131; // ebx - unsigned int v132; // [esp+8h] [ebp-E0h] - std::locale::_Impl *v133; // [esp+1Ch] [ebp-CCh] - char v134; // [esp+20h] [ebp-C8h] - char v135; // [esp+2Ch] [ebp-BCh] - unsigned int v136; // [esp+2Ch] [ebp-BCh] - void *v137; // [esp+30h] [ebp-B8h] - unsigned int v138; // [esp+34h] [ebp-B4h] - int v139; // [esp+3Ch] [ebp-ACh] - int v140; // [esp+3Ch] [ebp-ACh] - bool v141; // [esp+40h] [ebp-A8h] - char v142; // [esp+41h] [ebp-A7h] - bool v143; // [esp+42h] [ebp-A6h] - char v144; // [esp+43h] [ebp-A5h] - char v145; // [esp+44h] [ebp-A4h] - char v146; // [esp+48h] [ebp-A0h] - char v147; // [esp+48h] [ebp-A0h] - unsigned int i; // [esp+48h] [ebp-A0h] - char v149; // [esp+48h] [ebp-A0h] - unsigned int v150; // [esp+48h] [ebp-A0h] - char v151; // [esp+48h] [ebp-A0h] - char v152; // [esp+48h] [ebp-A0h] - int *v153; // [esp+4Ch] [ebp-9Ch] - int v154; // [esp+4Ch] [ebp-9Ch] - size_t v155; // [esp+50h] [ebp-98h] - int v156; // [esp+54h] [ebp-94h] - std::locale::facet *v157; // [esp+58h] [ebp-90h] - std::locale::facet *v158; // [esp+58h] [ebp-90h] - char v159; // [esp+58h] [ebp-90h] - std::locale::facet *v160; // [esp+58h] [ebp-90h] - char v161; // [esp+58h] [ebp-90h] - char v162; // [esp+58h] [ebp-90h] - char v163; // [esp+58h] [ebp-90h] - bool v164; // [esp+58h] [ebp-90h] - char v165; // [esp+58h] [ebp-90h] - char v166; // [esp+58h] [ebp-90h] - bool v167; // [esp+58h] [ebp-90h] - char v169; // [esp+60h] [ebp-88h] - bool v170; // [esp+60h] [ebp-88h] - char v171; // [esp+60h] [ebp-88h] - unsigned __int8 v172; // [esp+60h] [ebp-88h] - bool v173; // [esp+60h] [ebp-88h] - bool v174; // [esp+60h] [ebp-88h] - bool v175; // [esp+60h] [ebp-88h] - bool v176; // [esp+60h] [ebp-88h] - size_t v177; // [esp+60h] [ebp-88h] - char v178; // [esp+60h] [ebp-88h] - size_t v180; // [esp+64h] [ebp-84h] - size_t v181; // [esp+64h] [ebp-84h] - int v183; // [esp+ACh] [ebp-3Ch] - void *v184; // [esp+B0h] [ebp-38h] BYREF - size_t v185; // [esp+B4h] [ebp-34h] - int v186[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - size_t v188; // [esp+CCh] [ebp-1Ch] - int v189[5]; // [esp+D0h] [ebp-18h] BYREF - - v137 = std::use_facet>(a5 + 108); - v157 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v153 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v157); - v156 = *v153; - if ( !*v153 ) - { - v90 = operator new(0x54u); - v90[1] = 0; - *v90 = &off_51B0A4; - v90[2] = 0; - v90[3] = 0; - *((_BYTE *)v90 + 16) = 0; - *(_DWORD *)((char *)v90 + 18) = 0; - v90[6] = 0; - v90[7] = 0; - v90[8] = 0; - v90[9] = 0; - v90[10] = 0; - v90[11] = 0; - v90[12] = 0; - v90[13] = 0; - v90[14] = 0; - *((_BYTE *)v90 + 82) = 0; - v133 = (std::locale::_Impl *)v90; - std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v133, v157, v132); - v156 = *v153; - } - if ( *(_DWORD *)(v156 + 36) ) - v141 = *(_DWORD *)(v156 + 44) != 0; - else - v141 = 0; - v185 = 0; - v184 = v186; - LOBYTE(v186[0]) = 0; - if ( *(_BYTE *)(v156 + 16) ) - std::string::reserve(&v184, 0x20u); - Block = v189; - v188 = 0; - LOBYTE(v189[0]) = 0; - std::string::reserve(&Block, 0x20u); - v139 = 0; - v144 = 0; - v154 = 0; - v183 = *(_DWORD *)(v156 + 56); - v134 = 0; - v138 = 0; - v142 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)&v183 + v139) ) - { - case 0: - v146 = 1; - goto LABEL_39; - case 1: - v174 = a2 == -1; - if ( v174 && a1 != 0 ) - { - v101 = (__int16 *)a1[2]; - if ( (unsigned int)v101 >= a1[3] ) - v102 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v102 = *v101; - v103 = v102 == -1; - v104 = 0; - if ( !v103 ) - v104 = a1; - v105 = v174 && a1 != 0; - a1 = v104; - if ( !v103 ) - v105 = 0; - v163 = v105; - } - else - { - v163 = a2 == -1; - } - v35 = a4 == -1; - v149 = v35 & (a3 != 0); - if ( v149 ) - { - v97 = (__int16 *)a3[2]; - if ( (unsigned int)v97 >= a3[3] ) - v98 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v98 = *v97; - v99 = v98 == -1; - v35 = 0; - if ( v99 ) - v35 = v149; - v100 = 0; - if ( !v99 ) - v100 = a3; - a3 = v100; - } - v146 = 0; - if ( v35 != v163 ) - { - if ( a1 && a2 == -1 ) - { - v126 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v126 >= a1[3] ) - v36 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v36 = *v126; - v127 = 0; - if ( v36 != 0xFFFF ) - v127 = a1; - a1 = v127; - } - else - { - v36 = a2; - } - v146 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v36); - if ( v146 ) - { - v37 = a1[2]; - if ( v37 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v37 + 2; - a2 = -1; - } - } -LABEL_39: - if ( v139 == 3 ) - { - v17 = v146 & (v138 > 1); - goto LABEL_41; - } - while ( 1 ) - { - v173 = a2 == -1; - if ( v173 && a1 != 0 ) - { - v30 = (__int16 *)a1[2]; - if ( (unsigned int)v30 >= a1[3] ) - v31 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v31 = *v30; - v32 = v31 == -1; - v33 = 0; - if ( !v32 ) - v33 = a1; - v34 = v173 && a1 != 0; - a1 = v33; - if ( !v32 ) - v34 = 0; - v162 = v34; - } - else - { - v162 = a2 == -1; - } - v27 = a4 == -1; - v135 = v27 & (a3 != 0); - if ( v135 ) - { - v64 = (__int16 *)a3[2]; - if ( (unsigned int)v64 >= a3[3] ) - v65 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v65 = *v64; - v66 = v65 == -1; - v67 = 0; - v27 = v135; - if ( !v66 ) - v67 = a3; - a3 = v67; - if ( !v66 ) - v27 = 0; - } - if ( v162 == v27 ) - break; - if ( a1 && a2 == -1 ) - { - v68 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v68 >= a1[3] ) - v28 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v28 = *v68; - v69 = 0; - if ( v28 != 0xFFFF ) - v69 = a1; - a1 = v69; - } - else - { - v28 = a2; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v28) ) - break; - v29 = a1[2]; - if ( v29 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v29 + 2; - a2 = -1; - } - goto LABEL_157; - case 2: - if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) - goto LABEL_103; - v38 = v139 == 0 || v138 > 1; - if ( v38 ) - goto LABEL_103; - if ( v139 != 1 ) - { - v146 = 1; - if ( v139 != 2 ) - goto LABEL_158; - if ( HIBYTE(v183) == 4 ) - goto LABEL_103; - v39 = 3; - if ( HIBYTE(v183) == 3 && v141 ) - goto LABEL_103; -LABEL_160: - v139 = v39; - continue; - } - if ( !v141 && (_BYTE)v183 != 3 && BYTE2(v183) != 1 ) - { - v39 = 2; - goto LABEL_160; - } -LABEL_103: - v150 = 0; - v136 = *(_DWORD *)(v156 + 28); - while ( 1 ) - { - v175 = a2 == -1; - if ( v175 && a1 != 0 ) - { - v43 = (__int16 *)a1[2]; - if ( (unsigned int)v43 >= a1[3] ) - v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v44 = *v43; - v45 = v44 == -1; - v46 = 0; - if ( !v45 ) - v46 = a1; - v47 = v175 && a1 != 0; - a1 = v46; - if ( !v45 ) - v47 = 0; - v164 = v47; - } - else - { - v164 = a2 == -1; - } - v40 = a4 == -1; - v143 = v40 && a3 != 0; - if ( v143 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - v40 = v143; - if ( !v82 ) - v83 = a3; - a3 = v83; - if ( !v82 ) - v40 = 0; - } - v38 = (v150 < v136) & (v164 ^ v40); - if ( !v38 ) - break; - if ( a1 && a2 == -1 ) - { - v84 = (__int16 *)a1[2]; - if ( (unsigned int)v84 >= a1[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v41 = *v84; - v85 = 0; - if ( v41 != -1 ) - v85 = a1; - a1 = v85; - } - else - { - v41 = a2; - } - if ( *(_WORD *)(*(_DWORD *)(v156 + 24) + 2 * v150) != v41 ) - goto LABEL_227; - v42 = a1[2]; - if ( v42 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v42 + 2; - ++v150; - a2 = -1; - } - if ( v150 == v136 ) - { -LABEL_247: - v146 = 1; - } - else - { -LABEL_227: - if ( v150 ) - goto LABEL_131; - v146 = (*(_BYTE *)(a5 + 13) & 2) == 0; - v38 = (*(_BYTE *)(a5 + 13) & 2) != 0; - } -LABEL_158: - v39 = v139 + 1; - if ( v139 + 1 <= 3 && !v38 ) - goto LABEL_160; - v17 = v146 & (v138 > 1); -LABEL_41: - if ( v17 ) - { - if ( v142 ) - v18 = *(_DWORD *)(v156 + 40); - else - v18 = *(_DWORD *)(v156 + 32); - v140 = v18; - for ( i = 1; ; ++i ) - { - v172 = a2 == -1; - if ( (v172 & (a1 != 0)) != 0 ) - { - v22 = (__int16 *)a1[2]; - if ( (unsigned int)v22 >= a1[3] ) - v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v23 = *v22; - v24 = v23 == -1; - v25 = 0; - if ( !v24 ) - v25 = a1; - v26 = v172 & (a1 != 0); - a1 = v25; - if ( !v24 ) - v26 = 0; - v161 = v26; - } - else - { - v161 = a2 == -1; - } - v19 = a4 == -1; - v145 = v19 & (a3 != 0); - if ( v145 ) - { - v71 = (__int16 *)a3[2]; - if ( (unsigned int)v71 >= a3[3] ) - v72 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v72 = *v71; - v73 = v72 == -1; - v74 = 0; - v19 = v145; - if ( !v73 ) - v74 = a3; - a3 = v74; - if ( !v73 ) - v19 = 0; - if ( i >= v138 ) - { -LABEL_189: - if ( i == v138 ) - { - if ( v188 <= 1 ) - goto LABEL_191; - goto LABEL_236; - } - goto LABEL_132; - } - } - else if ( i >= v138 ) - { - goto LABEL_189; - } - if ( v19 == v161 ) - goto LABEL_189; - if ( a1 && a2 == -1 ) - { - v78 = (__int16 *)a1[2]; - if ( (unsigned int)v78 >= a1[3] ) - v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v20 = *v78; - v79 = 0; - if ( v20 != -1 ) - v79 = a1; - a1 = v79; - } - else - { - v20 = a2; - } - if ( *(_WORD *)(v140 + 2 * i) != v20 ) - goto LABEL_132; - v21 = a1[2]; - if ( v21 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v21 + 2; - a2 = -1; - } - } - if ( !v146 ) - { -LABEL_131: - v172 = a2 == -1; - goto LABEL_132; - } - if ( v188 <= 1 ) - goto LABEL_191; -LABEL_236: - first_not_of = std::string::find_first_not_of(&Block, 48, 0); - if ( first_not_of ) - { - if ( first_not_of != -1 ) - goto LABEL_238; - first_not_of = v188 - 1; - if ( !v188 ) - { - v188 = 0; - *(_BYTE *)Block = 0; - goto LABEL_191; - } - if ( v188 != 1 ) - { -LABEL_238: - if ( v188 <= first_not_of ) - first_not_of = v188; - std::string::_M_erase((int *)&Block, 0, first_not_of); - } - } -LABEL_191: - if ( v142 && *(_BYTE *)Block != 48 ) - std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); - v177 = v185; - if ( v185 ) - { - v75 = v134; - if ( !v144 ) - v75 = v154; - v155 = v185 + 1; - v166 = v75; - v76 = v184; - v77 = 15; - if ( v184 != v186 ) - v77 = v186[0]; - if ( v185 + 1 > v77 ) - { - std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); - v76 = v184; - } - v76[v177] = v166; - v185 = v155; - *((_BYTE *)v184 + v177 + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v156 + 8), *(_DWORD *)(v156 + 12), (int)&v184) ) - *a6 |= 4u; - } - v172 = a2 == -1; - if ( v144 && *(_DWORD *)(v156 + 48) != v154 ) - { -LABEL_132: - v53 = a6; - *a6 |= 4u; - } - else - { - v53 = std::string::swap(a7, &Block); - } - if ( (v172 & (a1 != 0)) != 0 ) - { - v93 = (__int16 *)a1[2]; - if ( (unsigned int)v93 >= a1[3] ) - v94 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v94 = *v93; - v95 = v172 & (a1 != 0); - v96 = v94 == -1; - if ( v94 != -1 ) - v95 = 0; - v53 = 0; - if ( !v96 ) - v53 = a1; - v172 = v95; - a1 = v53; - } - LOBYTE(v53) = a4 == -1; - v54 = v53; - if ( a3 && a4 == -1 ) - { - v91 = (__int16 *)a3[2]; - if ( (unsigned int)v91 >= a3[3] ) - v92 = (*(int (__fastcall **)(_DWORD *, _DWORD *))(*a3 + 36))(a3, v54); - else - v92 = *v91; - LOBYTE(v54) = v92 == -1; - } - if ( (_BYTE)v54 == v172 ) - *a6 |= 2u; - if ( Block != v189 ) - operator delete(Block); - if ( v184 != v186 ) - operator delete(v184); - return a1; - case 3: - if ( *(_DWORD *)(v156 + 36) ) - { - v176 = a2 == -1; - if ( v176 && a1 != 0 ) - { - v112 = (__int16 *)a1[2]; - if ( (unsigned int)v112 >= a1[3] ) - v113 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v113 = *v112; - v114 = v113 == -1; - v115 = 0; - if ( !v114 ) - v115 = a1; - v116 = v176 && a1 != 0; - a1 = v115; - if ( !v114 ) - v116 = 0; - v165 = v116; - } - else - { - v165 = a2 == -1; - } - v70 = a4 == -1; - v151 = v70 & (a3 != 0); - if ( v151 ) - { - v122 = (__int16 *)a3[2]; - if ( (unsigned int)v122 >= a3[3] ) - v123 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v123 = *v122; - v124 = v123 == -1; - v70 = 0; - if ( v124 ) - v70 = v151; - v125 = 0; - if ( !v124 ) - v125 = a3; - a3 = v125; - } - if ( v165 != v70 ) - { - if ( a1 && a2 == -1 ) - { - v110 = (__int16 *)a1[2]; - if ( (unsigned int)v110 >= a1[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v88 = *v110; - v111 = 0; - if ( v88 != -1 ) - v111 = a1; - a1 = v111; - } - else - { - v88 = a2; - } - if ( **(_WORD **)(v156 + 32) == v88 ) - { - v138 = *(_DWORD *)(v156 + 36); - v89 = a1[2]; - if ( v89 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v89 + 2; - v38 = 0; - a2 = -1; - goto LABEL_247; - } - } - if ( !*(_DWORD *)(v156 + 44) ) - { - if ( !*(_DWORD *)(v156 + 36) ) - goto LABEL_95; -LABEL_181: - v146 = 1; - v38 = 0; - v142 = 1; - goto LABEL_158; - } - } - else if ( !*(_DWORD *)(v156 + 44) ) - { - goto LABEL_95; - } - v167 = a2 == -1; - if ( v167 && a1 != 0 ) - { - v117 = (__int16 *)a1[2]; - if ( (unsigned int)v117 >= a1[3] ) - v118 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v118 = *v117; - v119 = v118 == -1; - v120 = 0; - if ( !v119 ) - v120 = a1; - v121 = v167 && a1 != 0; - a1 = v120; - if ( !v119 ) - v121 = 0; - v178 = v121; - } - else - { - v178 = a2 == -1; - } - v86 = a4 == -1; - v152 = v86 & (a3 != 0); - if ( v152 ) - { - v128 = (__int16 *)a3[2]; - if ( (unsigned int)v128 >= a3[3] ) - v129 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v129 = *v128; - v130 = v129 == -1; - v86 = 0; - if ( v130 ) - v86 = v152; - v131 = 0; - if ( !v130 ) - v131 = a3; - a3 = v131; - } - if ( v178 == v86 ) - goto LABEL_369; - if ( a1 && a2 == -1 ) - { - v106 = (__int16 *)a1[2]; - if ( (unsigned int)v106 >= a1[3] ) - v107 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v107 = *v106; - v108 = 0; - if ( v107 != -1 ) - v108 = a1; - a1 = v108; - } - else - { - v107 = a2; - } - if ( **(_WORD **)(v156 + 40) != v107 ) - { -LABEL_369: - if ( !*(_DWORD *)(v156 + 36) || *(_DWORD *)(v156 + 44) ) - { -LABEL_95: - v38 = v141; - v146 = !v141; - goto LABEL_158; - } - goto LABEL_181; - } - v138 = *(_DWORD *)(v156 + 44); - v109 = a1[2]; - if ( v109 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v109 + 2; - v146 = 1; - v38 = 0; - a2 = -1; - v142 = 1; - goto LABEL_158; - case 4: - while ( 2 ) - { - v170 = a2 == -1; - if ( v170 && a1 != 0 ) - { - v56 = (__int16 *)a1[2]; - if ( (unsigned int)v56 >= a1[3] ) - v57 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v57 = *v56; - v58 = v57 == -1; - v59 = 0; - if ( !v58 ) - v59 = a1; - v60 = v170 && a1 != 0; - a1 = v59; - if ( !v58 ) - v60 = 0; - v159 = v60; - } - else - { - v159 = a2 == -1; - } - v12 = a4 == -1; - v147 = v12 & (a3 != 0); - if ( v147 ) - { - v48 = (__int16 *)a3[2]; - if ( (unsigned int)v48 >= a3[3] ) - v49 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v49 = *v48; - v50 = v49 == -1; - v51 = 0; - v52 = v147; - if ( !v50 ) - v51 = a3; - a3 = v51; - if ( !v50 ) - v52 = 0; - if ( v159 == v52 ) - goto LABEL_129; - } - else if ( v159 == v12 ) - { - goto LABEL_129; - } - if ( a1 && a2 == -1 ) - { - v61 = (__int16 *)a1[2]; - if ( (unsigned int)v61 >= a1[3] ) - v13 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v13 = *v61; - v62 = 0; - if ( v13 != -1 ) - v62 = a1; - a1 = v62; - } - else - { - v13 = a2; - } - v14 = (_WORD *)(v156 + 62); - if ( v13 == *(_WORD *)(v156 + 62) ) - { -LABEL_32: - v15 = Block; - v171 = std::money_base::_S_atoms[((int)v14 - v156 - 60) >> 1]; - v181 = v188; - v16 = 15; - if ( Block != v189 ) - v16 = v189[0]; - v160 = (std::locale::facet *)(v188 + 1); - if ( v188 + 1 > v16 ) - { - std::string::_M_mutate((int)&Block, v188, 0, 0, 1u); - v15 = Block; - } - ++v154; - v15[v181] = v171; - v188 = (size_t)v160; - *((_BYTE *)Block + v181 + 1) = 0; - v10 = a1; - v11 = a1[2]; - if ( v11 >= a1[3] ) - { -LABEL_37: - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_21; - } -LABEL_20: - v10[2] = v11 + 2; -LABEL_21: - a2 = -1; - continue; - } - break; - } - while ( ++v14 != (_WORD *)(v156 + 82) ) - { - if ( v13 == *v14 ) - goto LABEL_32; - } - v7 = v144 | (*(_WORD *)(v156 + 18) != (unsigned __int16)v13); - if ( v7 ) - { - v146 = *(_BYTE *)(v156 + 16); - if ( !v146 ) - goto LABEL_249; - if ( *(_WORD *)(v156 + 20) == v13 ) - { - if ( !v144 ) - { - if ( v154 ) - { - v169 = v154; - v8 = v184; - v180 = v185; - v9 = 15; - if ( v184 != v186 ) - v9 = v186[0]; - v158 = (std::locale::facet *)(v185 + 1); - if ( v185 + 1 > v9 ) - { - std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); - v8 = v184; - } - v154 = 0; - v8[v180] = v169; - v185 = (size_t)v158; - *((_BYTE *)v184 + v180 + 1) = 0; -LABEL_19: - v10 = a1; - v11 = a1[2]; - if ( v11 >= a1[3] ) - goto LABEL_37; - goto LABEL_20; - } - v146 = 0; - goto LABEL_130; - } - v7 = v144; -LABEL_249: - v146 = v7; - if ( !v188 ) - goto LABEL_131; - goto LABEL_157; - } -LABEL_130: - if ( !v188 ) - goto LABEL_131; -LABEL_157: - v38 = v146 ^ 1; - goto LABEL_158; - } - if ( *(int *)(v156 + 48) > 0 ) - { - v63 = v154; - v144 = 1; - v154 = 0; - v134 = v63; - goto LABEL_19; - } - v144 = 0; -LABEL_129: - v146 = 1; - goto LABEL_130; - default: - v146 = 1; - v38 = 0; - goto LABEL_158; - } - } -} -// 4647EF: variable 'v132' is possibly undefined -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 50C610: using guessed type signed __int32 std::moneypunct::id; -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (00464E70) -------------------------------------------------------- -_DWORD *__stdcall std::money_get>::_M_extract( - _DWORD *a1, - __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - char v7; // al - _BYTE *v8; // edx - unsigned int v9; // eax - _DWORD *v10; // ecx - unsigned int v11; // eax - char v12; // al - __int16 v13; // dx - _WORD *v14; // eax - _BYTE *v15; // edx - unsigned int v16; // eax - char v17; // al - int v18; // eax - char v19; // al - __int16 v20; // ax - unsigned int v21; // eax - __int16 *v22; // eax - __int16 v23; // ax - bool v24; // zf - _DWORD *v25; // eax - char v26; // bl - char v27; // al - unsigned __int16 v28; // ax - unsigned int v29; // eax - __int16 *v30; // eax - __int16 v31; // ax - bool v32; // zf - _DWORD *v33; // eax - bool v34; // bl - char v35; // al - unsigned __int16 v36; // ax - unsigned int v37; // eax - char v38; // al - int v39; // edx - bool v40; // al - __int16 v41; // ax - unsigned int v42; // eax - __int16 *v43; // eax - __int16 v44; // ax - bool v45; // zf - _DWORD *v46; // eax - bool v47; // bl - __int16 *v48; // eax - __int16 v49; // ax - bool v50; // zf - _DWORD *v51; // ebx - char v52; // al - _DWORD *v53; // eax - _DWORD *v54; // edx - __int16 *v56; // eax - __int16 v57; // ax - bool v58; // zf - _DWORD *v59; // eax - bool v60; // bl - __int16 *v61; // eax - _DWORD *v62; // eax - char v63; // al - __int16 *v64; // eax - __int16 v65; // ax - bool v66; // zf - _DWORD *v67; // ebx - unsigned __int16 *v68; // eax - _DWORD *v69; // ebx - char v70; // al - __int16 *v71; // eax - __int16 v72; // ax - bool v73; // zf - _DWORD *v74; // ebx - char v75; // al - _BYTE *v76; // eax - unsigned int v77; // edx - __int16 *v78; // eax - _DWORD *v79; // ebx - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // ebx - __int16 *v84; // eax - _DWORD *v85; // ebx - char v86; // al - unsigned int first_not_of; // eax - __int16 v88; // ax - unsigned int v89; // eax - _DWORD *v90; // eax - __int16 *v91; // eax - __int16 v92; // ax - __int16 *v93; // eax - __int16 v94; // ax - unsigned __int8 v95; // bl - bool v96; // zf - __int16 *v97; // eax - __int16 v98; // ax - bool v99; // zf - _DWORD *v100; // ebx - __int16 *v101; // eax - __int16 v102; // ax - bool v103; // zf - _DWORD *v104; // eax - bool v105; // bl - __int16 *v106; // eax - __int16 v107; // ax - _DWORD *v108; // ebx - unsigned int v109; // eax - __int16 *v110; // eax - _DWORD *v111; // ebx - __int16 *v112; // eax - __int16 v113; // ax - bool v114; // zf - _DWORD *v115; // eax - bool v116; // bl - __int16 *v117; // eax - __int16 v118; // ax - bool v119; // zf - _DWORD *v120; // eax - bool v121; // bl - __int16 *v122; // eax - __int16 v123; // ax - bool v124; // zf - _DWORD *v125; // ebx - unsigned __int16 *v126; // eax - _DWORD *v127; // ebx - __int16 *v128; // eax - __int16 v129; // ax - bool v130; // zf - _DWORD *v131; // ebx - unsigned int v132; // [esp+8h] [ebp-E0h] - std::locale::_Impl *v133; // [esp+1Ch] [ebp-CCh] - char v134; // [esp+20h] [ebp-C8h] - char v135; // [esp+2Ch] [ebp-BCh] - unsigned int v136; // [esp+2Ch] [ebp-BCh] - void *v137; // [esp+30h] [ebp-B8h] - unsigned int v138; // [esp+34h] [ebp-B4h] - int v139; // [esp+3Ch] [ebp-ACh] - int v140; // [esp+3Ch] [ebp-ACh] - bool v141; // [esp+40h] [ebp-A8h] - char v142; // [esp+41h] [ebp-A7h] - bool v143; // [esp+42h] [ebp-A6h] - char v144; // [esp+43h] [ebp-A5h] - char v145; // [esp+44h] [ebp-A4h] - char v146; // [esp+48h] [ebp-A0h] - char v147; // [esp+48h] [ebp-A0h] - unsigned int i; // [esp+48h] [ebp-A0h] - char v149; // [esp+48h] [ebp-A0h] - unsigned int v150; // [esp+48h] [ebp-A0h] - char v151; // [esp+48h] [ebp-A0h] - char v152; // [esp+48h] [ebp-A0h] - int *v153; // [esp+4Ch] [ebp-9Ch] - int v154; // [esp+4Ch] [ebp-9Ch] - size_t v155; // [esp+50h] [ebp-98h] - int v156; // [esp+54h] [ebp-94h] - std::locale::facet *v157; // [esp+58h] [ebp-90h] - std::locale::facet *v158; // [esp+58h] [ebp-90h] - char v159; // [esp+58h] [ebp-90h] - std::locale::facet *v160; // [esp+58h] [ebp-90h] - char v161; // [esp+58h] [ebp-90h] - char v162; // [esp+58h] [ebp-90h] - char v163; // [esp+58h] [ebp-90h] - bool v164; // [esp+58h] [ebp-90h] - char v165; // [esp+58h] [ebp-90h] - char v166; // [esp+58h] [ebp-90h] - bool v167; // [esp+58h] [ebp-90h] - char v169; // [esp+60h] [ebp-88h] - bool v170; // [esp+60h] [ebp-88h] - char v171; // [esp+60h] [ebp-88h] - unsigned __int8 v172; // [esp+60h] [ebp-88h] - bool v173; // [esp+60h] [ebp-88h] - bool v174; // [esp+60h] [ebp-88h] - bool v175; // [esp+60h] [ebp-88h] - bool v176; // [esp+60h] [ebp-88h] - size_t v177; // [esp+60h] [ebp-88h] - char v178; // [esp+60h] [ebp-88h] - size_t v180; // [esp+64h] [ebp-84h] - size_t v181; // [esp+64h] [ebp-84h] - int v183; // [esp+ACh] [ebp-3Ch] - void *v184; // [esp+B0h] [ebp-38h] BYREF - size_t v185; // [esp+B4h] [ebp-34h] - int v186[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - size_t v188; // [esp+CCh] [ebp-1Ch] - int v189[5]; // [esp+D0h] [ebp-18h] BYREF - - v137 = std::use_facet>(a5 + 108); - v157 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v153 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v157); - v156 = *v153; - if ( !*v153 ) - { - v90 = operator new(0x54u); - v90[1] = 0; - *v90 = &off_51B0B4; - v90[2] = 0; - v90[3] = 0; - *((_BYTE *)v90 + 16) = 0; - *(_DWORD *)((char *)v90 + 18) = 0; - v90[6] = 0; - v90[7] = 0; - v90[8] = 0; - v90[9] = 0; - v90[10] = 0; - v90[11] = 0; - v90[12] = 0; - v90[13] = 0; - v90[14] = 0; - *((_BYTE *)v90 + 82) = 0; - v133 = (std::locale::_Impl *)v90; - std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v133, v157, v132); - v156 = *v153; - } - if ( *(_DWORD *)(v156 + 36) ) - v141 = *(_DWORD *)(v156 + 44) != 0; - else - v141 = 0; - v185 = 0; - v184 = v186; - LOBYTE(v186[0]) = 0; - if ( *(_BYTE *)(v156 + 16) ) - std::string::reserve(&v184, 0x20u); - Block = v189; - v188 = 0; - LOBYTE(v189[0]) = 0; - std::string::reserve(&Block, 0x20u); - v139 = 0; - v144 = 0; - v154 = 0; - v183 = *(_DWORD *)(v156 + 56); - v134 = 0; - v138 = 0; - v142 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)&v183 + v139) ) - { - case 0: - v146 = 1; - goto LABEL_39; - case 1: - v174 = a2 == -1; - if ( v174 && a1 != 0 ) - { - v101 = (__int16 *)a1[2]; - if ( (unsigned int)v101 >= a1[3] ) - v102 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v102 = *v101; - v103 = v102 == -1; - v104 = 0; - if ( !v103 ) - v104 = a1; - v105 = v174 && a1 != 0; - a1 = v104; - if ( !v103 ) - v105 = 0; - v163 = v105; - } - else - { - v163 = a2 == -1; - } - v35 = a4 == -1; - v149 = v35 & (a3 != 0); - if ( v149 ) - { - v97 = (__int16 *)a3[2]; - if ( (unsigned int)v97 >= a3[3] ) - v98 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v98 = *v97; - v99 = v98 == -1; - v35 = 0; - if ( v99 ) - v35 = v149; - v100 = 0; - if ( !v99 ) - v100 = a3; - a3 = v100; - } - v146 = 0; - if ( v35 != v163 ) - { - if ( a1 && a2 == -1 ) - { - v126 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v126 >= a1[3] ) - v36 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v36 = *v126; - v127 = 0; - if ( v36 != 0xFFFF ) - v127 = a1; - a1 = v127; - } - else - { - v36 = a2; - } - v146 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v36); - if ( v146 ) - { - v37 = a1[2]; - if ( v37 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v37 + 2; - a2 = -1; - } - } -LABEL_39: - if ( v139 == 3 ) - { - v17 = v146 & (v138 > 1); - goto LABEL_41; - } - while ( 1 ) - { - v173 = a2 == -1; - if ( v173 && a1 != 0 ) - { - v30 = (__int16 *)a1[2]; - if ( (unsigned int)v30 >= a1[3] ) - v31 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v31 = *v30; - v32 = v31 == -1; - v33 = 0; - if ( !v32 ) - v33 = a1; - v34 = v173 && a1 != 0; - a1 = v33; - if ( !v32 ) - v34 = 0; - v162 = v34; - } - else - { - v162 = a2 == -1; - } - v27 = a4 == -1; - v135 = v27 & (a3 != 0); - if ( v135 ) - { - v64 = (__int16 *)a3[2]; - if ( (unsigned int)v64 >= a3[3] ) - v65 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v65 = *v64; - v66 = v65 == -1; - v67 = 0; - v27 = v135; - if ( !v66 ) - v67 = a3; - a3 = v67; - if ( !v66 ) - v27 = 0; - } - if ( v162 == v27 ) - break; - if ( a1 && a2 == -1 ) - { - v68 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v68 >= a1[3] ) - v28 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v28 = *v68; - v69 = 0; - if ( v28 != 0xFFFF ) - v69 = a1; - a1 = v69; - } - else - { - v28 = a2; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v137 + 8))(v137, 32, v28) ) - break; - v29 = a1[2]; - if ( v29 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v29 + 2; - a2 = -1; - } - goto LABEL_157; - case 2: - if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) - goto LABEL_103; - v38 = v139 == 0 || v138 > 1; - if ( v38 ) - goto LABEL_103; - if ( v139 != 1 ) - { - v146 = 1; - if ( v139 != 2 ) - goto LABEL_158; - if ( HIBYTE(v183) == 4 ) - goto LABEL_103; - v39 = 3; - if ( HIBYTE(v183) == 3 && v141 ) - goto LABEL_103; -LABEL_160: - v139 = v39; - continue; - } - if ( !v141 && (_BYTE)v183 != 3 && BYTE2(v183) != 1 ) - { - v39 = 2; - goto LABEL_160; - } -LABEL_103: - v150 = 0; - v136 = *(_DWORD *)(v156 + 28); - while ( 1 ) - { - v175 = a2 == -1; - if ( v175 && a1 != 0 ) - { - v43 = (__int16 *)a1[2]; - if ( (unsigned int)v43 >= a1[3] ) - v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v44 = *v43; - v45 = v44 == -1; - v46 = 0; - if ( !v45 ) - v46 = a1; - v47 = v175 && a1 != 0; - a1 = v46; - if ( !v45 ) - v47 = 0; - v164 = v47; - } - else - { - v164 = a2 == -1; - } - v40 = a4 == -1; - v143 = v40 && a3 != 0; - if ( v143 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - v40 = v143; - if ( !v82 ) - v83 = a3; - a3 = v83; - if ( !v82 ) - v40 = 0; - } - v38 = (v150 < v136) & (v164 ^ v40); - if ( !v38 ) - break; - if ( a1 && a2 == -1 ) - { - v84 = (__int16 *)a1[2]; - if ( (unsigned int)v84 >= a1[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v41 = *v84; - v85 = 0; - if ( v41 != -1 ) - v85 = a1; - a1 = v85; - } - else - { - v41 = a2; - } - if ( *(_WORD *)(*(_DWORD *)(v156 + 24) + 2 * v150) != v41 ) - goto LABEL_227; - v42 = a1[2]; - if ( v42 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v42 + 2; - ++v150; - a2 = -1; - } - if ( v150 == v136 ) - { -LABEL_247: - v146 = 1; - } - else - { -LABEL_227: - if ( v150 ) - goto LABEL_131; - v146 = (*(_BYTE *)(a5 + 13) & 2) == 0; - v38 = (*(_BYTE *)(a5 + 13) & 2) != 0; - } -LABEL_158: - v39 = v139 + 1; - if ( v139 + 1 <= 3 && !v38 ) - goto LABEL_160; - v17 = v146 & (v138 > 1); -LABEL_41: - if ( v17 ) - { - if ( v142 ) - v18 = *(_DWORD *)(v156 + 40); - else - v18 = *(_DWORD *)(v156 + 32); - v140 = v18; - for ( i = 1; ; ++i ) - { - v172 = a2 == -1; - if ( (v172 & (a1 != 0)) != 0 ) - { - v22 = (__int16 *)a1[2]; - if ( (unsigned int)v22 >= a1[3] ) - v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v23 = *v22; - v24 = v23 == -1; - v25 = 0; - if ( !v24 ) - v25 = a1; - v26 = v172 & (a1 != 0); - a1 = v25; - if ( !v24 ) - v26 = 0; - v161 = v26; - } - else - { - v161 = a2 == -1; - } - v19 = a4 == -1; - v145 = v19 & (a3 != 0); - if ( v145 ) - { - v71 = (__int16 *)a3[2]; - if ( (unsigned int)v71 >= a3[3] ) - v72 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v72 = *v71; - v73 = v72 == -1; - v74 = 0; - v19 = v145; - if ( !v73 ) - v74 = a3; - a3 = v74; - if ( !v73 ) - v19 = 0; - if ( i >= v138 ) - { -LABEL_189: - if ( i == v138 ) - { - if ( v188 <= 1 ) - goto LABEL_191; - goto LABEL_236; - } - goto LABEL_132; - } - } - else if ( i >= v138 ) - { - goto LABEL_189; - } - if ( v19 == v161 ) - goto LABEL_189; - if ( a1 && a2 == -1 ) - { - v78 = (__int16 *)a1[2]; - if ( (unsigned int)v78 >= a1[3] ) - v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v20 = *v78; - v79 = 0; - if ( v20 != -1 ) - v79 = a1; - a1 = v79; - } - else - { - v20 = a2; - } - if ( *(_WORD *)(v140 + 2 * i) != v20 ) - goto LABEL_132; - v21 = a1[2]; - if ( v21 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v21 + 2; - a2 = -1; - } - } - if ( !v146 ) - { -LABEL_131: - v172 = a2 == -1; - goto LABEL_132; - } - if ( v188 <= 1 ) - goto LABEL_191; -LABEL_236: - first_not_of = std::string::find_first_not_of(&Block, 48, 0); - if ( first_not_of ) - { - if ( first_not_of != -1 ) - goto LABEL_238; - first_not_of = v188 - 1; - if ( !v188 ) - { - v188 = 0; - *(_BYTE *)Block = 0; - goto LABEL_191; - } - if ( v188 != 1 ) - { -LABEL_238: - if ( v188 <= first_not_of ) - first_not_of = v188; - std::string::_M_erase((int *)&Block, 0, first_not_of); - } - } -LABEL_191: - if ( v142 && *(_BYTE *)Block != 48 ) - std::string::_M_replace_aux(&Block, 0, 0, 1u, 45); - v177 = v185; - if ( v185 ) - { - v75 = v134; - if ( !v144 ) - v75 = v154; - v155 = v185 + 1; - v166 = v75; - v76 = v184; - v77 = 15; - if ( v184 != v186 ) - v77 = v186[0]; - if ( v185 + 1 > v77 ) - { - std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); - v76 = v184; - } - v76[v177] = v166; - v185 = v155; - *((_BYTE *)v184 + v177 + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v156 + 8), *(_DWORD *)(v156 + 12), (int)&v184) ) - *a6 |= 4u; - } - v172 = a2 == -1; - if ( v144 && *(_DWORD *)(v156 + 48) != v154 ) - { -LABEL_132: - v53 = a6; - *a6 |= 4u; - } - else - { - v53 = std::string::swap(a7, &Block); - } - if ( (v172 & (a1 != 0)) != 0 ) - { - v93 = (__int16 *)a1[2]; - if ( (unsigned int)v93 >= a1[3] ) - v94 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v94 = *v93; - v95 = v172 & (a1 != 0); - v96 = v94 == -1; - if ( v94 != -1 ) - v95 = 0; - v53 = 0; - if ( !v96 ) - v53 = a1; - v172 = v95; - a1 = v53; - } - LOBYTE(v53) = a4 == -1; - v54 = v53; - if ( a3 && a4 == -1 ) - { - v91 = (__int16 *)a3[2]; - if ( (unsigned int)v91 >= a3[3] ) - v92 = (*(int (__fastcall **)(_DWORD *, _DWORD *))(*a3 + 36))(a3, v54); - else - v92 = *v91; - LOBYTE(v54) = v92 == -1; - } - if ( (_BYTE)v54 == v172 ) - *a6 |= 2u; - if ( Block != v189 ) - operator delete(Block); - if ( v184 != v186 ) - operator delete(v184); - return a1; - case 3: - if ( *(_DWORD *)(v156 + 36) ) - { - v176 = a2 == -1; - if ( v176 && a1 != 0 ) - { - v112 = (__int16 *)a1[2]; - if ( (unsigned int)v112 >= a1[3] ) - v113 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v113 = *v112; - v114 = v113 == -1; - v115 = 0; - if ( !v114 ) - v115 = a1; - v116 = v176 && a1 != 0; - a1 = v115; - if ( !v114 ) - v116 = 0; - v165 = v116; - } - else - { - v165 = a2 == -1; - } - v70 = a4 == -1; - v151 = v70 & (a3 != 0); - if ( v151 ) - { - v122 = (__int16 *)a3[2]; - if ( (unsigned int)v122 >= a3[3] ) - v123 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v123 = *v122; - v124 = v123 == -1; - v70 = 0; - if ( v124 ) - v70 = v151; - v125 = 0; - if ( !v124 ) - v125 = a3; - a3 = v125; - } - if ( v165 != v70 ) - { - if ( a1 && a2 == -1 ) - { - v110 = (__int16 *)a1[2]; - if ( (unsigned int)v110 >= a1[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v88 = *v110; - v111 = 0; - if ( v88 != -1 ) - v111 = a1; - a1 = v111; - } - else - { - v88 = a2; - } - if ( **(_WORD **)(v156 + 32) == v88 ) - { - v138 = *(_DWORD *)(v156 + 36); - v89 = a1[2]; - if ( v89 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v89 + 2; - v38 = 0; - a2 = -1; - goto LABEL_247; - } - } - if ( !*(_DWORD *)(v156 + 44) ) - { - if ( !*(_DWORD *)(v156 + 36) ) - goto LABEL_95; -LABEL_181: - v146 = 1; - v38 = 0; - v142 = 1; - goto LABEL_158; - } - } - else if ( !*(_DWORD *)(v156 + 44) ) - { - goto LABEL_95; - } - v167 = a2 == -1; - if ( v167 && a1 != 0 ) - { - v117 = (__int16 *)a1[2]; - if ( (unsigned int)v117 >= a1[3] ) - v118 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v118 = *v117; - v119 = v118 == -1; - v120 = 0; - if ( !v119 ) - v120 = a1; - v121 = v167 && a1 != 0; - a1 = v120; - if ( !v119 ) - v121 = 0; - v178 = v121; - } - else - { - v178 = a2 == -1; - } - v86 = a4 == -1; - v152 = v86 & (a3 != 0); - if ( v152 ) - { - v128 = (__int16 *)a3[2]; - if ( (unsigned int)v128 >= a3[3] ) - v129 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v129 = *v128; - v130 = v129 == -1; - v86 = 0; - if ( v130 ) - v86 = v152; - v131 = 0; - if ( !v130 ) - v131 = a3; - a3 = v131; - } - if ( v178 == v86 ) - goto LABEL_369; - if ( a1 && a2 == -1 ) - { - v106 = (__int16 *)a1[2]; - if ( (unsigned int)v106 >= a1[3] ) - v107 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v107 = *v106; - v108 = 0; - if ( v107 != -1 ) - v108 = a1; - a1 = v108; - } - else - { - v107 = a2; - } - if ( **(_WORD **)(v156 + 40) != v107 ) - { -LABEL_369: - if ( !*(_DWORD *)(v156 + 36) || *(_DWORD *)(v156 + 44) ) - { -LABEL_95: - v38 = v141; - v146 = !v141; - goto LABEL_158; - } - goto LABEL_181; - } - v138 = *(_DWORD *)(v156 + 44); - v109 = a1[2]; - if ( v109 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v109 + 2; - v146 = 1; - v38 = 0; - a2 = -1; - v142 = 1; - goto LABEL_158; - case 4: - while ( 2 ) - { - v170 = a2 == -1; - if ( v170 && a1 != 0 ) - { - v56 = (__int16 *)a1[2]; - if ( (unsigned int)v56 >= a1[3] ) - v57 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v57 = *v56; - v58 = v57 == -1; - v59 = 0; - if ( !v58 ) - v59 = a1; - v60 = v170 && a1 != 0; - a1 = v59; - if ( !v58 ) - v60 = 0; - v159 = v60; - } - else - { - v159 = a2 == -1; - } - v12 = a4 == -1; - v147 = v12 & (a3 != 0); - if ( v147 ) - { - v48 = (__int16 *)a3[2]; - if ( (unsigned int)v48 >= a3[3] ) - v49 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v49 = *v48; - v50 = v49 == -1; - v51 = 0; - v52 = v147; - if ( !v50 ) - v51 = a3; - a3 = v51; - if ( !v50 ) - v52 = 0; - if ( v159 == v52 ) - goto LABEL_129; - } - else if ( v159 == v12 ) - { - goto LABEL_129; - } - if ( a1 && a2 == -1 ) - { - v61 = (__int16 *)a1[2]; - if ( (unsigned int)v61 >= a1[3] ) - v13 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v13 = *v61; - v62 = 0; - if ( v13 != -1 ) - v62 = a1; - a1 = v62; - } - else - { - v13 = a2; - } - v14 = (_WORD *)(v156 + 62); - if ( v13 == *(_WORD *)(v156 + 62) ) - { -LABEL_32: - v15 = Block; - v171 = std::money_base::_S_atoms[((int)v14 - v156 - 60) >> 1]; - v181 = v188; - v16 = 15; - if ( Block != v189 ) - v16 = v189[0]; - v160 = (std::locale::facet *)(v188 + 1); - if ( v188 + 1 > v16 ) - { - std::string::_M_mutate((int)&Block, v188, 0, 0, 1u); - v15 = Block; - } - ++v154; - v15[v181] = v171; - v188 = (size_t)v160; - *((_BYTE *)Block + v181 + 1) = 0; - v10 = a1; - v11 = a1[2]; - if ( v11 >= a1[3] ) - { -LABEL_37: - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - goto LABEL_21; - } -LABEL_20: - v10[2] = v11 + 2; -LABEL_21: - a2 = -1; - continue; - } - break; - } - while ( ++v14 != (_WORD *)(v156 + 82) ) - { - if ( v13 == *v14 ) - goto LABEL_32; - } - v7 = v144 | (*(_WORD *)(v156 + 18) != (unsigned __int16)v13); - if ( v7 ) - { - v146 = *(_BYTE *)(v156 + 16); - if ( !v146 ) - goto LABEL_249; - if ( *(_WORD *)(v156 + 20) == v13 ) - { - if ( !v144 ) - { - if ( v154 ) - { - v169 = v154; - v8 = v184; - v180 = v185; - v9 = 15; - if ( v184 != v186 ) - v9 = v186[0]; - v158 = (std::locale::facet *)(v185 + 1); - if ( v185 + 1 > v9 ) - { - std::string::_M_mutate((int)&v184, v185, 0, 0, 1u); - v8 = v184; - } - v154 = 0; - v8[v180] = v169; - v185 = (size_t)v158; - *((_BYTE *)v184 + v180 + 1) = 0; -LABEL_19: - v10 = a1; - v11 = a1[2]; - if ( v11 >= a1[3] ) - goto LABEL_37; - goto LABEL_20; - } - v146 = 0; - goto LABEL_130; - } - v7 = v144; -LABEL_249: - v146 = v7; - if ( !v188 ) - goto LABEL_131; - goto LABEL_157; - } -LABEL_130: - if ( !v188 ) - goto LABEL_131; -LABEL_157: - v38 = v146 ^ 1; - goto LABEL_158; - } - if ( *(int *)(v156 + 48) > 0 ) - { - v63 = v154; - v144 = 1; - v154 = 0; - v134 = v63; - goto LABEL_19; - } - v144 = 0; -LABEL_129: - v146 = 1; - goto LABEL_130; - default: - v146 = 1; - v38 = 0; - goto LABEL_158; - } - } -} -// 465FEF: variable 'v132' is possibly undefined -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 50C614: using guessed type signed __int32 std::moneypunct::id; -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (00466670) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); -} - -//----- (00466680) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00466690) -------------------------------------------------------- -struct _Unwind_Exception *__stdcall std::money_get>::do_get( - _DWORD *a1, - __int16 a2, - _DWORD *a3, - __int16 a4, - char a5, - int a6, - _DWORD *a7, - int *a8) -{ - struct _Unwind_Exception *v8; // eax - void *v10; // [esp+20h] [ebp-78h] - unsigned int v11; // [esp+28h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-68h] - void *Block; // [esp+78h] [ebp-20h] BYREF - unsigned int v14; // [esp+7Ch] [ebp-1Ch] - char v15[20]; // [esp+80h] [ebp-18h] BYREF - - v15[0] = 0; - v10 = std::use_facet>(a6 + 108); - Block = v15; - v14 = 0; - if ( a5 ) - v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a4, - a6, - a7, - &Block); - else - v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a4, - a6, - a7, - &Block); - lpuexcpt = v8; - v11 = v14; - if ( v14 ) - { - std::wstring::resize(a8, v14, 0); - (*(void (__thiscall **)(void *, void *, char *, _DWORD))(*(_DWORD *)v10 + 44))(v10, Block, (char *)Block + v11, *a8); - } - if ( Block != v15 ) - operator delete(Block); - return lpuexcpt; -} - -//----- (00466860) -------------------------------------------------------- -struct _Unwind_Exception *__stdcall std::money_get>::do_get( - _DWORD *a1, - __int16 a2, - _DWORD *a3, - __int16 a4, - char a5, - int a6, - _DWORD *a7, - long double *a8) -{ - struct _Unwind_Exception *v8; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-68h] - void *Block[2]; // [esp+78h] [ebp-20h] BYREF - char v12[20]; // [esp+80h] [ebp-18h] BYREF - - Block[0] = v12; - Block[1] = 0; - v12[0] = 0; - if ( a5 ) - v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a4, - a6, - a7, - Block); - else - v8 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a4, - a6, - a7, - Block); - lpuexcpt = v8; - std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((char *)Block[0], a8, a7); - if ( Block[0] != v12 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (004669D0) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - __int64 a2, - unsigned __int8 a3, - int a4, - char a5, - int a6) -{ - __int64 (__stdcall *v6)(__int64, char, int, char, int); // edx - - v6 = *(__int64 (__stdcall **)(__int64, char, int, char, int))(*(_DWORD *)this + 12); - if ( v6 != std::money_put>::do_put ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, int))v6)(a2, HIDWORD(a2), a3, a4, a5, a6); - if ( a3 ) - return std::money_put>::_M_insert(a2, a4, a5, a6); - return std::money_put>::_M_insert(a2, a4, a5, a6); -} - -//----- (00466A70) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6) -{ - return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00466A90) -------------------------------------------------------- -__int64 __stdcall std::money_put>::do_put( - __int64 a1, - char a2, - int a3, - char a4, - int a5) -{ - if ( a2 ) - return std::money_put>::_M_insert(a1, a3, a4, a5); - else - return std::money_put>::_M_insert(a1, a3, a4, a5); -} - -//----- (00466B00) -------------------------------------------------------- -__int64 __thiscall std::money_put>::do_put( - void *this, - __int64 a2, - int a3, - int a4, - int a5, - long double a6) -{ - void *v6; // esp - void *v7; // esp - int v8; // eax - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // al - void (__thiscall *v13)(_BYTE *, void *, char *, void *); // eax - __int64 v14; // rax - const std::locale *v16[22]; // [esp-30h] [ebp-D8h] BYREF - void *v17; // [esp+28h] [ebp-80h] - char *v18; // [esp+2Ch] [ebp-7Ch] - int v19; // [esp+30h] [ebp-78h] - int v20; // [esp+34h] [ebp-74h] - void *v21; // [esp+38h] [ebp-70h] - _BYTE *v22; // [esp+3Ch] [ebp-6Ch] - __int64 Size; // [esp+40h] [ebp-68h] - void *Src; // [esp+48h] [ebp-60h] - _DWORD *v25; // [esp+84h] [ebp-24h] BYREF - void *Block[2]; // [esp+88h] [ebp-20h] BYREF - char v27[24]; // [esp+90h] [ebp-18h] BYREF - - v21 = this; - v20 = a3; - v19 = a5; - std::locale::locale((volatile signed __int32 **)&v25, (volatile signed __int32 **)(a4 + 108), v16[13]); - v22 = std::use_facet>((int)&v25); - v6 = alloca(80); - v7 = alloca(80); - LODWORD(Size) = v16; - Src = v16; - Block[0] = (void *)std::locale::facet::_S_get_c_locale(); - v8 = std::__convert_from_v((int *const *)Block, (char *)Size, 64, "%.*Lf", 0, a6); - LODWORD(Size) = v8; - if ( v8 > 63 ) - { - LODWORD(Size) = v8 + 1; - v9 = 16 * ((unsigned int)(v8 + 28) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v18 = (char *)v16; - Src = v16; - Block[0] = (void *)std::locale::facet::_S_get_c_locale(); - LODWORD(Size) = std::__convert_from_v((int *const *)Block, v18, Size, "%.*Lf", 0, a6); - } - Block[0] = v27; - std::string::_M_construct(Block, Size, 0); - v12 = v22[28]; - v17 = Block[0]; - v18 = (char *)Src + Size; - if ( v12 == 1 ) - { - if ( (char *)Src + (_DWORD)Size != Src ) -LABEL_7: - memcpy(v17, Src, Size); - } - else - { - if ( v12 ) - { - v13 = *(void (__thiscall **)(_BYTE *, void *, char *, void *))(*(_DWORD *)v22 + 28); - if ( (char *)v13 == (char *)std::ctype::do_widen ) - goto LABEL_6; - } - else - { - std::ctype::_M_widen_init((int)v22); - v13 = *(void (__thiscall **)(_BYTE *, void *, char *, void *))(*(_DWORD *)v22 + 28); - if ( (char *)v13 == (char *)std::ctype::do_widen ) - { -LABEL_6: - if ( v18 == Src ) - goto LABEL_8; - goto LABEL_7; - } - } - v13(v22, Src, v18, v17); - } -LABEL_8: - if ( (_BYTE)v20 ) - v14 = std::money_put>::_M_insert(a2, a4, v19, (int)Block); - else - v14 = std::money_put>::_M_insert(a2, a4, v19, (int)Block); - Size = v14; - if ( Block[0] != v27 ) - operator delete(Block[0]); - std::locale::~locale(&v25); - return Size; -} - -//----- (00466E10) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - char a3, - int a4) -{ - int v4; // ecx - char *v5; // ebx - struct _Unwind_Exception *v6; // eax - unsigned __int8 *v7; // ecx - int v9; // eax - bool v10; // sf - size_t v11; // eax - _BYTE *v12; // eax - bool v13; // dl - _BYTE *v14; // edx - unsigned int v15; // eax - size_t v16; // edx - int v17; // edx - int *v18; // eax - char v19; // bl - int v20; // edx - int v21; // ebx - _BYTE *v22; // edx - size_t v23; // eax - size_t v24; // edx - _BYTE *v25; // edx - unsigned int v26; // eax - _WORD *v27; // eax - unsigned int v28; // [esp+8h] [ebp-E0h] - size_t v29; // [esp+8h] [ebp-E0h] - int v30; // [esp+20h] [ebp-C8h] - char v31; // [esp+24h] [ebp-C4h] - int v32; // [esp+24h] [ebp-C4h] - std::locale::_Impl *v33; // [esp+28h] [ebp-C0h] - int v34; // [esp+2Ch] [ebp-BCh] - int v35; // [esp+2Ch] [ebp-BCh] - size_t v36; // [esp+30h] [ebp-B8h] - size_t v37; // [esp+30h] [ebp-B8h] - char v38; // [esp+34h] [ebp-B4h] - size_t v39; // [esp+38h] [ebp-B0h] - bool v40; // [esp+38h] [ebp-B0h] - signed int v41; // [esp+3Ch] [ebp-ACh] - int v42; // [esp+3Ch] [ebp-ACh] - int *v43; // [esp+40h] [ebp-A8h] - char *v44; // [esp+40h] [ebp-A8h] - std::locale::facet *v45; // [esp+4Ch] [ebp-9Ch] - std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] - _DWORD *v47; // [esp+50h] [ebp-98h] - size_t v48; // [esp+50h] [ebp-98h] - size_t v49; // [esp+50h] [ebp-98h] - __int64 v50; // [esp+54h] [ebp-94h] - int v51; // [esp+5Ch] [ebp-8Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-88h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] - void **lpuexcptb; // [esp+60h] [ebp-88h] - char lpuexcptc; // [esp+60h] [ebp-88h] - int v56; // [esp+ACh] [ebp-3Ch] BYREF - void *v57; // [esp+B0h] [ebp-38h] BYREF - size_t v58; // [esp+B4h] [ebp-34h] - int v59[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - int v61; // [esp+CCh] [ebp-1Ch] - int v62[5]; // [esp+D0h] [ebp-18h] BYREF - - v50 = a1; - v47 = std::use_facet>(a2 + 108); - v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); - v51 = *v43; - if ( !*v43 ) - { - v27 = operator new(0x44u); - *(_DWORD *)v27 = &off_51B084; - v27[8] = 0; - *((_DWORD *)v27 + 1) = 0; - *((_DWORD *)v27 + 2) = 0; - *((_DWORD *)v27 + 3) = 0; - *((_BYTE *)v27 + 18) = 0; - *((_DWORD *)v27 + 5) = 0; - *((_DWORD *)v27 + 6) = 0; - *((_DWORD *)v27 + 7) = 0; - *((_DWORD *)v27 + 8) = 0; - *((_DWORD *)v27 + 9) = 0; - *((_DWORD *)v27 + 10) = 0; - *((_DWORD *)v27 + 11) = 0; - *((_DWORD *)v27 + 12) = 0; - *((_DWORD *)v27 + 13) = 0; - *((_BYTE *)v27 + 67) = 0; - v33 = (std::locale::_Impl *)v27; - std::__moneypunct_cache::_M_cache((int)v27, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v33, v45, v28); - v51 = *v43; - } - v4 = *(_DWORD *)(a4 + 4); - lpuexcpt = *(struct _Unwind_Exception **)a4; - if ( **(_BYTE **)a4 == *(_BYTE *)(v51 + 56) ) - { - v56 = *(_DWORD *)(v51 + 52); - if ( !v4 ) - goto LABEL_10; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v44 = *(char **)(v51 + 36); - v46 = *(std::locale::facet **)(v51 + 40); - } - else - { - v5 = *(char **)(v51 + 28); - v56 = *(_DWORD *)(v51 + 48); - v44 = v5; - v46 = *(std::locale::facet **)(v51 + 32); - } - v6 = lpuexcpt; - v7 = (unsigned __int8 *)lpuexcpt + v4; - if ( v7 > (unsigned __int8 *)lpuexcpt ) - { - do - { - if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) - break; - v6 = (struct _Unwind_Exception *)((char *)v6 + 1); - } - while ( v7 != (unsigned __int8 *)v6 ); - v48 = v6 - lpuexcpt; - if ( v6 != lpuexcpt ) - { - LOBYTE(v59[0]) = 0; - v57 = v59; - v58 = 0; - std::string::reserve(&v57, 2 * v48); - v9 = *(_DWORD *)(v51 + 44); - v41 = v48 - v9; - if ( (int)(v48 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v48 - v9; - if ( v10 ) - v11 = v48; - v41 = v11; - if ( *(_DWORD *)(v51 + 12) ) - { - std::string::_M_replace_aux(&v57, 0, v58, 2 * v11, 0); - v12 = std::__add_grouping( - v57, - *(_BYTE *)(v51 + 18), - *(char **)(v51 + 8), - *(_DWORD *)(v51 + 12), - lpuexcpt, - (_BYTE *)lpuexcpt + v41); - if ( v12 - (_BYTE *)v57 > v58 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v12 - (_BYTE *)v57, - v58); - v58 = v12 - (_BYTE *)v57; - *v12 = 0; - v9 = *(_DWORD *)(v51 + 44); - } - else - { - std::string::_M_replace((unsigned int **)&v57, 0, v58, (char *)lpuexcpt, v11); - v9 = *(_DWORD *)(v51 + 44); - } - } - v39 = v58; - if ( v9 > 0 ) - { - v22 = v57; - v37 = v58 + 1; - v38 = *(_BYTE *)(v51 + 17); - v23 = 15; - if ( v57 != v59 ) - v23 = v59[0]; - if ( v58 + 1 > v23 ) - { - std::string::_M_mutate((int)&v57, v58, 0, 0, 1u); - v22 = v57; - } - v22[v39] = v38; - v58 = v37; - *((_BYTE *)v57 + v37) = 0; - if ( v41 < 0 ) - { - std::string::_M_replace_aux(&v57, v58, 0, -v41, *(_BYTE *)(v51 + 57)); - if ( v48 > 0x3FFFFFFF - v58 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v57, lpuexcpt, v48); - } - else - { - v24 = *(_DWORD *)(v51 + 44); - if ( v24 > 0x3FFFFFFF - v58 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v57, (_BYTE *)lpuexcpt + v41, v24); - } - v39 = v58; - } - v42 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v46 + v39); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v46 + v39 + *(_DWORD *)(v51 + 24)); - LOBYTE(v62[0]) = 0; - Block = v62; - v61 = 0; - std::string::reserve(&Block, 2 * (_DWORD)lpuexcpta); - v49 = *(_DWORD *)(a2 + 8); - v13 = v49 > (unsigned int)lpuexcpta && v42 == 16; - v36 = v49 - (_DWORD)lpuexcpta; - lpuexcptb = (void **)&v56; - v40 = v13; - do - { - switch ( *(_BYTE *)lpuexcptb ) - { - case 0: - if ( v40 ) - goto LABEL_34; - break; - case 1: - v35 = v61; - if ( v40 ) - { -LABEL_34: - std::string::_M_replace_aux(&Block, v61, 0, v36, a3); - } - else - { - v25 = Block; - v26 = 15; - if ( Block != v62 ) - v26 = v62[0]; - v32 = v61 + 1; - if ( v61 + 1 > v26 ) - { - std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); - v25 = Block; - } - v25[v35] = a3; - v61 = v32; - *((_BYTE *)Block + v35 + 1) = 0; - } - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - { - v16 = *(_DWORD *)(v51 + 24); - if ( v16 > 0x3FFFFFFF - v61 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&Block, *(_BYTE **)(v51 + 20), v16); - } - break; - case 3: - if ( v46 ) - { - v14 = Block; - v31 = *v44; - v34 = v61; - v15 = 15; - if ( Block != v62 ) - v15 = v62[0]; - v30 = v61 + 1; - if ( v61 + 1 > v15 ) - { - std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); - v14 = Block; - } - v14[v34] = v31; - v61 = v30; - *((_BYTE *)Block + v34 + 1) = 0; - } - break; - case 4: - std::string::_M_append(&Block, v57, v58); - break; - default: - break; - } - lpuexcptb = (void **)((char *)lpuexcptb + 1); - } - while ( &v57 != lpuexcptb ); - v17 = v61; - if ( (unsigned int)v46 > 1 ) - { - if ( (unsigned int)v46 - 1 > 0x3FFFFFFF - v61 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&Block, v44 + 1, (size_t)v46 - 1); - v17 = v61; - if ( v61 < v49 ) - goto LABEL_41; - } - else if ( v61 < v49 ) - { -LABEL_41: - v29 = v49 - v17; - if ( v42 == 32 ) - std::string::_M_replace_aux(&Block, v17, 0, v29, a3); - else - std::string::_M_replace_aux(&Block, 0, 0, v29, a3); - goto LABEL_43; - } - v49 = v17; -LABEL_43: - v18 = (int *)Block; - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v19 = 0; - v20 = (*(int (__thiscall **)(_DWORD, void *, size_t))(*(_DWORD *)a1 + 48))(a1, Block, v49); - v18 = (int *)Block; - if ( v49 != v20 ) - v19 = 1; - lpuexcptc = v19; - } - v21 = HIDWORD(a1); - LOBYTE(v21) = lpuexcptc; - HIDWORD(v50) = v21; - if ( v18 != v62 ) - operator delete(v18); - if ( v57 != v59 ) - operator delete(v57); - } - } -LABEL_10: - *(_DWORD *)(a2 + 8) = 0; - return v50; -} -// 467623: variable 'v28' is possibly undefined -// 50C608: using guessed type signed __int32 std::moneypunct::id; -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004678C0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - char a3, - int a4) -{ - int v4; // ecx - char *v5; // ebx - struct _Unwind_Exception *v6; // eax - unsigned __int8 *v7; // ecx - int v9; // eax - bool v10; // sf - size_t v11; // eax - _BYTE *v12; // eax - bool v13; // dl - _BYTE *v14; // edx - unsigned int v15; // eax - size_t v16; // edx - int v17; // edx - int *v18; // eax - char v19; // bl - int v20; // edx - int v21; // ebx - _BYTE *v22; // edx - size_t v23; // eax - size_t v24; // edx - _BYTE *v25; // edx - unsigned int v26; // eax - _WORD *v27; // eax - unsigned int v28; // [esp+8h] [ebp-E0h] - size_t v29; // [esp+8h] [ebp-E0h] - int v30; // [esp+20h] [ebp-C8h] - char v31; // [esp+24h] [ebp-C4h] - int v32; // [esp+24h] [ebp-C4h] - std::locale::_Impl *v33; // [esp+28h] [ebp-C0h] - int v34; // [esp+2Ch] [ebp-BCh] - int v35; // [esp+2Ch] [ebp-BCh] - size_t v36; // [esp+30h] [ebp-B8h] - size_t v37; // [esp+30h] [ebp-B8h] - char v38; // [esp+34h] [ebp-B4h] - size_t v39; // [esp+38h] [ebp-B0h] - bool v40; // [esp+38h] [ebp-B0h] - signed int v41; // [esp+3Ch] [ebp-ACh] - int v42; // [esp+3Ch] [ebp-ACh] - int *v43; // [esp+40h] [ebp-A8h] - char *v44; // [esp+40h] [ebp-A8h] - std::locale::facet *v45; // [esp+4Ch] [ebp-9Ch] - std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] - _DWORD *v47; // [esp+50h] [ebp-98h] - size_t v48; // [esp+50h] [ebp-98h] - size_t v49; // [esp+50h] [ebp-98h] - __int64 v50; // [esp+54h] [ebp-94h] - int v51; // [esp+5Ch] [ebp-8Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-88h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] - void **lpuexcptb; // [esp+60h] [ebp-88h] - char lpuexcptc; // [esp+60h] [ebp-88h] - int v56; // [esp+ACh] [ebp-3Ch] BYREF - void *v57; // [esp+B0h] [ebp-38h] BYREF - size_t v58; // [esp+B4h] [ebp-34h] - int v59[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - int v61; // [esp+CCh] [ebp-1Ch] - int v62[5]; // [esp+D0h] [ebp-18h] BYREF - - v50 = a1; - v47 = std::use_facet>(a2 + 108); - v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); - v51 = *v43; - if ( !*v43 ) - { - v27 = operator new(0x44u); - *(_DWORD *)v27 = &off_51B094; - v27[8] = 0; - *((_DWORD *)v27 + 1) = 0; - *((_DWORD *)v27 + 2) = 0; - *((_DWORD *)v27 + 3) = 0; - *((_BYTE *)v27 + 18) = 0; - *((_DWORD *)v27 + 5) = 0; - *((_DWORD *)v27 + 6) = 0; - *((_DWORD *)v27 + 7) = 0; - *((_DWORD *)v27 + 8) = 0; - *((_DWORD *)v27 + 9) = 0; - *((_DWORD *)v27 + 10) = 0; - *((_DWORD *)v27 + 11) = 0; - *((_DWORD *)v27 + 12) = 0; - *((_DWORD *)v27 + 13) = 0; - *((_BYTE *)v27 + 67) = 0; - v33 = (std::locale::_Impl *)v27; - std::__moneypunct_cache::_M_cache((int)v27, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v33, v45, v28); - v51 = *v43; - } - v4 = *(_DWORD *)(a4 + 4); - lpuexcpt = *(struct _Unwind_Exception **)a4; - if ( **(_BYTE **)a4 == *(_BYTE *)(v51 + 56) ) - { - v56 = *(_DWORD *)(v51 + 52); - if ( !v4 ) - goto LABEL_10; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v44 = *(char **)(v51 + 36); - v46 = *(std::locale::facet **)(v51 + 40); - } - else - { - v5 = *(char **)(v51 + 28); - v56 = *(_DWORD *)(v51 + 48); - v44 = v5; - v46 = *(std::locale::facet **)(v51 + 32); - } - v6 = lpuexcpt; - v7 = (unsigned __int8 *)lpuexcpt + v4; - if ( v7 > (unsigned __int8 *)lpuexcpt ) - { - do - { - if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) - break; - v6 = (struct _Unwind_Exception *)((char *)v6 + 1); - } - while ( v7 != (unsigned __int8 *)v6 ); - v48 = v6 - lpuexcpt; - if ( v6 != lpuexcpt ) - { - LOBYTE(v59[0]) = 0; - v57 = v59; - v58 = 0; - std::string::reserve(&v57, 2 * v48); - v9 = *(_DWORD *)(v51 + 44); - v41 = v48 - v9; - if ( (int)(v48 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v48 - v9; - if ( v10 ) - v11 = v48; - v41 = v11; - if ( *(_DWORD *)(v51 + 12) ) - { - std::string::_M_replace_aux(&v57, 0, v58, 2 * v11, 0); - v12 = std::__add_grouping( - v57, - *(_BYTE *)(v51 + 18), - *(char **)(v51 + 8), - *(_DWORD *)(v51 + 12), - lpuexcpt, - (_BYTE *)lpuexcpt + v41); - if ( v12 - (_BYTE *)v57 > v58 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v12 - (_BYTE *)v57, - v58); - v58 = v12 - (_BYTE *)v57; - *v12 = 0; - v9 = *(_DWORD *)(v51 + 44); - } - else - { - std::string::_M_replace((unsigned int **)&v57, 0, v58, (char *)lpuexcpt, v11); - v9 = *(_DWORD *)(v51 + 44); - } - } - v39 = v58; - if ( v9 > 0 ) - { - v22 = v57; - v37 = v58 + 1; - v38 = *(_BYTE *)(v51 + 17); - v23 = 15; - if ( v57 != v59 ) - v23 = v59[0]; - if ( v58 + 1 > v23 ) - { - std::string::_M_mutate((int)&v57, v58, 0, 0, 1u); - v22 = v57; - } - v22[v39] = v38; - v58 = v37; - *((_BYTE *)v57 + v37) = 0; - if ( v41 < 0 ) - { - std::string::_M_replace_aux(&v57, v58, 0, -v41, *(_BYTE *)(v51 + 57)); - if ( v48 > 0x3FFFFFFF - v58 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v57, lpuexcpt, v48); - } - else - { - v24 = *(_DWORD *)(v51 + 44); - if ( v24 > 0x3FFFFFFF - v58 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v57, (_BYTE *)lpuexcpt + v41, v24); - } - v39 = v58; - } - v42 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v46 + v39); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v46 + v39 + *(_DWORD *)(v51 + 24)); - LOBYTE(v62[0]) = 0; - Block = v62; - v61 = 0; - std::string::reserve(&Block, 2 * (_DWORD)lpuexcpta); - v49 = *(_DWORD *)(a2 + 8); - v13 = v49 > (unsigned int)lpuexcpta && v42 == 16; - v36 = v49 - (_DWORD)lpuexcpta; - lpuexcptb = (void **)&v56; - v40 = v13; - do - { - switch ( *(_BYTE *)lpuexcptb ) - { - case 0: - if ( v40 ) - goto LABEL_34; - break; - case 1: - v35 = v61; - if ( v40 ) - { -LABEL_34: - std::string::_M_replace_aux(&Block, v61, 0, v36, a3); - } - else - { - v25 = Block; - v26 = 15; - if ( Block != v62 ) - v26 = v62[0]; - v32 = v61 + 1; - if ( v61 + 1 > v26 ) - { - std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); - v25 = Block; - } - v25[v35] = a3; - v61 = v32; - *((_BYTE *)Block + v35 + 1) = 0; - } - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - { - v16 = *(_DWORD *)(v51 + 24); - if ( v16 > 0x3FFFFFFF - v61 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&Block, *(_BYTE **)(v51 + 20), v16); - } - break; - case 3: - if ( v46 ) - { - v14 = Block; - v31 = *v44; - v34 = v61; - v15 = 15; - if ( Block != v62 ) - v15 = v62[0]; - v30 = v61 + 1; - if ( v61 + 1 > v15 ) - { - std::string::_M_mutate((int)&Block, v61, 0, 0, 1u); - v14 = Block; - } - v14[v34] = v31; - v61 = v30; - *((_BYTE *)Block + v34 + 1) = 0; - } - break; - case 4: - std::string::_M_append(&Block, v57, v58); - break; - default: - break; - } - lpuexcptb = (void **)((char *)lpuexcptb + 1); - } - while ( &v57 != lpuexcptb ); - v17 = v61; - if ( (unsigned int)v46 > 1 ) - { - if ( (unsigned int)v46 - 1 > 0x3FFFFFFF - v61 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&Block, v44 + 1, (size_t)v46 - 1); - v17 = v61; - if ( v61 < v49 ) - goto LABEL_41; - } - else if ( v61 < v49 ) - { -LABEL_41: - v29 = v49 - v17; - if ( v42 == 32 ) - std::string::_M_replace_aux(&Block, v17, 0, v29, a3); - else - std::string::_M_replace_aux(&Block, 0, 0, v29, a3); - goto LABEL_43; - } - v49 = v17; -LABEL_43: - v18 = (int *)Block; - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v19 = 0; - v20 = (*(int (__thiscall **)(_DWORD, void *, size_t))(*(_DWORD *)a1 + 48))(a1, Block, v49); - v18 = (int *)Block; - if ( v49 != v20 ) - v19 = 1; - lpuexcptc = v19; - } - v21 = HIDWORD(a1); - LOBYTE(v21) = lpuexcptc; - HIDWORD(v50) = v21; - if ( v18 != v62 ) - operator delete(v18); - if ( v57 != v59 ) - operator delete(v57); - } - } -LABEL_10: - *(_DWORD *)(a2 + 8) = 0; - return v50; -} -// 4680D3: variable 'v28' is possibly undefined -// 50C60C: using guessed type signed __int32 std::moneypunct::id; -// 51B094: using guessed type int (*off_51B094)(); - -//----- (00468370) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - __int64 a2, - unsigned __int8 a3, - int a4, - __int16 a5, - int a6) -{ - __int64 (__stdcall *v6)(__int64, char, int, __int16, int); // edx - - v6 = *(__int64 (__stdcall **)(__int64, char, int, __int16, int))(*(_DWORD *)this + 12); - if ( v6 != std::money_put>::do_put ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, int))v6)( - a2, - HIDWORD(a2), - a3, - a4, - (unsigned __int16)a5, - a6); - if ( a3 ) - return std::money_put>::_M_insert(a2, a4, a5, a6); - return std::money_put>::_M_insert(a2, a4, a5, a6); -} - -//----- (00468410) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - unsigned __int16 a6) -{ - return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00468430) -------------------------------------------------------- -__int64 __stdcall std::money_put>::do_put( - __int64 a1, - char a2, - int a3, - __int16 a4, - int a5) -{ - if ( a2 ) - return std::money_put>::_M_insert(a1, a3, a4, a5); - else - return std::money_put>::_M_insert(a1, a3, a4, a5); -} - -//----- (004684A0) -------------------------------------------------------- -__int64 __thiscall std::money_put>::do_put( - void *this, - __int64 a2, - int a3, - int a4, - int a5, - long double a6) -{ - void *v6; // esp - void *v7; // esp - int v8; // eax - int v9; // eax - void *v10; // esp - void *v11; // esp - __int64 v12; // rax - int v14; // [esp-44h] [ebp-ECh] - int v15; // [esp-40h] [ebp-E8h] - int v16; // [esp-3Ch] [ebp-E4h] - int v17; // [esp-38h] [ebp-E0h] - int v18; // [esp-34h] [ebp-DCh] - char *v19[23]; // [esp-30h] [ebp-D8h] BYREF - char *v20; // [esp+2Ch] [ebp-7Ch] - int v21; // [esp+30h] [ebp-78h] - int v22; // [esp+34h] [ebp-74h] - void *v23; // [esp+38h] [ebp-70h] - void *v24; // [esp+3Ch] [ebp-6Ch] - __int64 lpuexcpt; // [esp+40h] [ebp-68h] - char **v26; // [esp+48h] [ebp-60h] - _DWORD *v27; // [esp+84h] [ebp-24h] BYREF - void *Block[2]; // [esp+88h] [ebp-20h] BYREF - char v29[20]; // [esp+90h] [ebp-18h] BYREF - - v23 = this; - v22 = a3; - v21 = a5; - std::locale::locale( - (volatile signed __int32 **)&v27, - (volatile signed __int32 **)(a4 + 108), - (const std::locale *)v19[13]); - v24 = std::use_facet>((int)&v27); - v6 = alloca(80); - v7 = alloca(80); - LODWORD(lpuexcpt) = v19; - v26 = v19; - Block[0] = (void *)std::locale::facet::_S_get_c_locale(); - v8 = std::__convert_from_v((int *const *)Block, (char *)lpuexcpt, 64, "%.*Lf", 0, a6); - LODWORD(lpuexcpt) = v8; - if ( v8 > 63 ) - { - LODWORD(lpuexcpt) = v8 + 1; - v9 = 16 * ((unsigned int)(v8 + 28) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v20 = (char *)v19; - v26 = v19; - Block[0] = (void *)std::locale::facet::_S_get_c_locale(); - LODWORD(lpuexcpt) = std::__convert_from_v((int *const *)Block, v20, lpuexcpt, "%.*Lf", 0, a6); - } - Block[0] = v29; - std::wstring::_M_construct(Block, lpuexcpt, 0); - (*(void (__thiscall **)(void *, char **, char *, void *, int, int, int, int, int, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *))(*(_DWORD *)v24 + 44))( - v24, - v26, - (char *)v26 + lpuexcpt, - Block[0], - v14, - v15, - v16, - v17, - v18, - v19[0], - v19[1], - v19[2], - v19[3], - v19[4], - v19[5], - v19[6], - v19[7], - v19[8], - v19[9]); - if ( (_BYTE)v22 ) - v12 = std::money_put>::_M_insert(a2, a4, v21, (int)Block); - else - v12 = std::money_put>::_M_insert(a2, a4, v21, (int)Block); - lpuexcpt = v12; - if ( Block[0] != v29 ) - operator delete(Block[0]); - std::locale::~locale(&v27); - return lpuexcpt; -} -// 468611: variable 'v14' is possibly undefined -// 468611: variable 'v15' is possibly undefined -// 468611: variable 'v16' is possibly undefined -// 468611: variable 'v17' is possibly undefined -// 468611: variable 'v18' is possibly undefined - -//----- (00468700) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - __int16 a3, - int a4) -{ - int v4; // eax - signed int v5; // eax - std::locale::facet *v7; // esi - char *v8; // edx - int v9; // eax - bool v10; // sf - unsigned int v11; // eax - char *v12; // edx - unsigned int v13; // eax - bool v14; // dl - _WORD *v15; // eax - unsigned int v16; // edx - unsigned int v17; // edx - int v18; // ecx - int *v19; // eax - char v20; // bl - int v21; // edx - int v22; // ebx - _WORD *v23; // eax - unsigned int v24; // edx - unsigned int v25; // edx - _WORD *v26; // eax - unsigned int v27; // edx - _DWORD *v28; // eax - unsigned int v29; // [esp-4h] [ebp-ECh] - unsigned int v30; // [esp+8h] [ebp-E0h] - unsigned int v31; // [esp+20h] [ebp-C8h] - __int16 v32; // [esp+24h] [ebp-C4h] - unsigned int v33; // [esp+24h] [ebp-C4h] - std::locale::_Impl *v34; // [esp+28h] [ebp-C0h] - int v35; // [esp+2Ch] [ebp-BCh] - int v36; // [esp+2Ch] [ebp-BCh] - unsigned int v37; // [esp+30h] [ebp-B8h] - __int16 v38; // [esp+30h] [ebp-B8h] - int v39; // [esp+34h] [ebp-B4h] - int v40; // [esp+38h] [ebp-B0h] - bool v41; // [esp+38h] [ebp-B0h] - __int16 *v42; // [esp+3Ch] [ebp-ACh] - int *v43; // [esp+48h] [ebp-A0h] - unsigned int v44; // [esp+48h] [ebp-A0h] - int v45; // [esp+48h] [ebp-A0h] - std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] - std::locale::facet *v47; // [esp+4Ch] [ebp-9Ch] - void *v48; // [esp+50h] [ebp-98h] - int v49; // [esp+50h] [ebp-98h] - int v50; // [esp+50h] [ebp-98h] - unsigned int v51; // [esp+50h] [ebp-98h] - __int64 v52; // [esp+54h] [ebp-94h] - int v53; // [esp+5Ch] [ebp-8Ch] - char *lpuexcpt; // [esp+60h] [ebp-88h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] - void **lpuexcptb; // [esp+60h] [ebp-88h] - char lpuexcptc; // [esp+60h] [ebp-88h] - int v58; // [esp+ACh] [ebp-3Ch] BYREF - void *v59; // [esp+B0h] [ebp-38h] BYREF - int v60; // [esp+B4h] [ebp-34h] - int v61[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - unsigned int v63; // [esp+CCh] [ebp-1Ch] - int v64[6]; // [esp+D0h] [ebp-18h] BYREF - - v52 = a1; - v48 = std::use_facet>(a2 + 108); - v46 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v46); - v53 = *v43; - if ( !*v43 ) - { - v28 = operator new(0x54u); - v28[1] = 0; - *v28 = &off_51B0A4; - v28[2] = 0; - v28[3] = 0; - *((_BYTE *)v28 + 16) = 0; - *(_DWORD *)((char *)v28 + 18) = 0; - v28[6] = 0; - v28[7] = 0; - v28[8] = 0; - v28[9] = 0; - v28[10] = 0; - v28[11] = 0; - v28[12] = 0; - v28[13] = 0; - v28[14] = 0; - *((_BYTE *)v28 + 82) = 0; - v34 = (std::locale::_Impl *)v28; - std::__moneypunct_cache::_M_cache((int)v28, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v34, v46, v30); - v53 = *v43; - } - v4 = *(_DWORD *)(a4 + 4); - lpuexcpt = *(char **)a4; - if ( **(_WORD **)a4 == *(_WORD *)(v53 + 60) ) - { - v42 = *(__int16 **)(v53 + 40); - v7 = *(std::locale::facet **)(v53 + 44); - v58 = *(_DWORD *)(v53 + 56); - v47 = v7; - v8 = lpuexcpt + 2; - if ( !v4 ) - v8 = lpuexcpt; - lpuexcpt = v8; - } - else - { - v58 = *(_DWORD *)(v53 + 52); - v42 = *(__int16 **)(v53 + 32); - v47 = *(std::locale::facet **)(v53 + 36); - } - v5 = (*(int (__thiscall **)(void *, int, char *, char *))(*(_DWORD *)v48 + 20))(v48, 8, lpuexcpt, &lpuexcpt[2 * v4]) - - (_DWORD)lpuexcpt; - v44 = v5 >> 1; - if ( v5 >> 1 ) - { - v59 = v61; - v60 = 0; - LOWORD(v61[0]) = 0; - std::wstring::reserve((int)&v59, v5); - v9 = *(_DWORD *)(v53 + 48); - v49 = v60; - v40 = v44 - v9; - if ( (int)(v44 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v44 - v9; - if ( v10 ) - v11 = v44; - v40 = v11; - if ( *(_DWORD *)(v53 + 12) ) - { - v50 = 2 * v11; - std::wstring::_M_replace_aux(&v59, 0, v60, 2 * v11, 0); - v12 = (char *)std::__add_grouping( - v59, - *(_WORD *)(v53 + 20), - *(char **)(v53 + 8), - *(_DWORD *)(v53 + 12), - lpuexcpt, - &lpuexcpt[v50]); - v13 = (v12 - (_BYTE *)v59) >> 1; - v49 = v13; - if ( v13 > v60 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v13, - v60); - v60 = (v12 - (_BYTE *)v59) >> 1; - *(_WORD *)v12 = 0; - v9 = *(_DWORD *)(v53 + 48); - } - else - { - std::wstring::_M_replace((unsigned int **)&v59, 0, v60, lpuexcpt, v11); - v49 = v60; - v9 = *(_DWORD *)(v53 + 48); - } - } - if ( v9 > 0 ) - { - v38 = *(_WORD *)(v53 + 18); - v23 = v59; - v39 = v49 + 1; - v24 = 7; - if ( v59 != v61 ) - v24 = v61[0]; - if ( v49 + 1 > v24 ) - { - std::wstring::_M_mutate((int)&v59, v49, 0, 0, 1); - v23 = v59; - } - v23[v49] = v38; - v60 = v49 + 1; - v23[v49 + 1] = 0; - if ( v40 < 0 ) - { - std::wstring::_M_replace_aux(&v59, v39, 0, -v40, *(_WORD *)(v53 + 62)); - if ( v44 > 0x1FFFFFFF - v60 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&v59, lpuexcpt, v44); - } - else - { - v25 = *(_DWORD *)(v53 + 48); - if ( v25 > 0x1FFFFFFF - v39 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&v59, &lpuexcpt[2 * v40], v25); - } - v49 = v60; - } - v45 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v47 + v49); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v47 + v49 + *(_DWORD *)(v53 + 28)); - Block = v64; - v63 = 0; - LOWORD(v64[0]) = 0; - std::wstring::reserve((int)&Block, 2 * (_DWORD)lpuexcpta); - v51 = *(_DWORD *)(a2 + 8); - v14 = v51 > (unsigned int)lpuexcpta && v45 == 16; - v37 = v51 - (_DWORD)lpuexcpta; - lpuexcptb = (void **)&v58; - v41 = v14; - do - { - switch ( *(_BYTE *)lpuexcptb ) - { - case 0: - if ( v41 ) - goto LABEL_31; - break; - case 1: - v36 = v63; - if ( v41 ) - { -LABEL_31: - std::wstring::_M_replace_aux(&Block, v63, 0, v37, a3); - } - else - { - v26 = Block; - v33 = v63 + 1; - v27 = 7; - if ( Block != v64 ) - v27 = v64[0]; - if ( v63 + 1 > v27 ) - { - std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); - v26 = Block; - } - v26[v36] = a3; - v63 = v33; - v26[v36 + 1] = 0; - } - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - { - v17 = *(_DWORD *)(v53 + 28); - if ( v17 > 0x1FFFFFFF - v63 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&Block, *(_WORD **)(v53 + 24), v17); - } - break; - case 3: - if ( v47 ) - { - v32 = *v42; - v35 = v63; - v15 = Block; - v31 = v63 + 1; - v16 = 7; - if ( Block != v64 ) - v16 = v64[0]; - if ( v63 + 1 > v16 ) - { - std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); - v15 = Block; - } - v15[v35] = v32; - v63 = v31; - v15[v35 + 1] = 0; - } - break; - case 4: - std::wstring::_M_append(&Block, v59, v60); - break; - default: - break; - } - lpuexcptb = (void **)((char *)lpuexcptb + 1); - } - while ( &v59 != lpuexcptb ); - v18 = v63; - if ( (unsigned int)v47 > 1 ) - { - if ( (unsigned int)v47 - 1 > 0x1FFFFFFF - v63 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&Block, v42 + 1, (int)v47 - 1); - v18 = v63; - if ( v51 > v63 ) - goto LABEL_38; - } - else if ( v51 > v63 ) - { -LABEL_38: - v29 = v51 - v18; - if ( v45 == 32 ) - std::wstring::_M_replace_aux(&Block, v18, 0, v29, a3); - else - std::wstring::_M_replace_aux(&Block, 0, 0, v29, a3); - goto LABEL_40; - } - v51 = v18; -LABEL_40: - v19 = (int *)Block; - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v20 = 0; - v21 = (*(int (__thiscall **)(_DWORD, void *, unsigned int))(*(_DWORD *)a1 + 48))(a1, Block, v51); - v19 = (int *)Block; - if ( v51 != v21 ) - v20 = 1; - lpuexcptc = v20; - } - v22 = HIDWORD(a1); - LOBYTE(v22) = lpuexcptc; - HIDWORD(v52) = v22; - if ( v19 != v64 ) - operator delete(v19); - if ( v59 != v61 ) - operator delete(v59); - } - *(_DWORD *)(a2 + 8) = 0; - return v52; -} -// 468F4C: variable 'v30' is possibly undefined -// 50C610: using guessed type signed __int32 std::moneypunct::id; -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (00469220) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - __int16 a3, - int a4) -{ - int v4; // eax - signed int v5; // eax - std::locale::facet *v7; // esi - char *v8; // edx - int v9; // eax - bool v10; // sf - unsigned int v11; // eax - char *v12; // edx - unsigned int v13; // eax - bool v14; // dl - _WORD *v15; // eax - unsigned int v16; // edx - unsigned int v17; // edx - int v18; // ecx - int *v19; // eax - char v20; // bl - int v21; // edx - int v22; // ebx - _WORD *v23; // eax - unsigned int v24; // edx - unsigned int v25; // edx - _WORD *v26; // eax - unsigned int v27; // edx - _DWORD *v28; // eax - unsigned int v29; // [esp-4h] [ebp-ECh] - unsigned int v30; // [esp+8h] [ebp-E0h] - unsigned int v31; // [esp+20h] [ebp-C8h] - __int16 v32; // [esp+24h] [ebp-C4h] - unsigned int v33; // [esp+24h] [ebp-C4h] - std::locale::_Impl *v34; // [esp+28h] [ebp-C0h] - int v35; // [esp+2Ch] [ebp-BCh] - int v36; // [esp+2Ch] [ebp-BCh] - unsigned int v37; // [esp+30h] [ebp-B8h] - __int16 v38; // [esp+30h] [ebp-B8h] - int v39; // [esp+34h] [ebp-B4h] - int v40; // [esp+38h] [ebp-B0h] - bool v41; // [esp+38h] [ebp-B0h] - __int16 *v42; // [esp+3Ch] [ebp-ACh] - int *v43; // [esp+48h] [ebp-A0h] - unsigned int v44; // [esp+48h] [ebp-A0h] - int v45; // [esp+48h] [ebp-A0h] - std::locale::facet *v46; // [esp+4Ch] [ebp-9Ch] - std::locale::facet *v47; // [esp+4Ch] [ebp-9Ch] - void *v48; // [esp+50h] [ebp-98h] - int v49; // [esp+50h] [ebp-98h] - int v50; // [esp+50h] [ebp-98h] - unsigned int v51; // [esp+50h] [ebp-98h] - __int64 v52; // [esp+54h] [ebp-94h] - int v53; // [esp+5Ch] [ebp-8Ch] - char *lpuexcpt; // [esp+60h] [ebp-88h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-88h] - void **lpuexcptb; // [esp+60h] [ebp-88h] - char lpuexcptc; // [esp+60h] [ebp-88h] - int v58; // [esp+ACh] [ebp-3Ch] BYREF - void *v59; // [esp+B0h] [ebp-38h] BYREF - int v60; // [esp+B4h] [ebp-34h] - int v61[4]; // [esp+B8h] [ebp-30h] BYREF - void *Block; // [esp+C8h] [ebp-20h] BYREF - unsigned int v63; // [esp+CCh] [ebp-1Ch] - int v64[6]; // [esp+D0h] [ebp-18h] BYREF - - v52 = a1; - v48 = std::use_facet>(a2 + 108); - v46 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v46); - v53 = *v43; - if ( !*v43 ) - { - v28 = operator new(0x54u); - v28[1] = 0; - *v28 = &off_51B0B4; - v28[2] = 0; - v28[3] = 0; - *((_BYTE *)v28 + 16) = 0; - *(_DWORD *)((char *)v28 + 18) = 0; - v28[6] = 0; - v28[7] = 0; - v28[8] = 0; - v28[9] = 0; - v28[10] = 0; - v28[11] = 0; - v28[12] = 0; - v28[13] = 0; - v28[14] = 0; - *((_BYTE *)v28 + 82) = 0; - v34 = (std::locale::_Impl *)v28; - std::__moneypunct_cache::_M_cache((int)v28, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v34, v46, v30); - v53 = *v43; - } - v4 = *(_DWORD *)(a4 + 4); - lpuexcpt = *(char **)a4; - if ( **(_WORD **)a4 == *(_WORD *)(v53 + 60) ) - { - v42 = *(__int16 **)(v53 + 40); - v7 = *(std::locale::facet **)(v53 + 44); - v58 = *(_DWORD *)(v53 + 56); - v47 = v7; - v8 = lpuexcpt + 2; - if ( !v4 ) - v8 = lpuexcpt; - lpuexcpt = v8; - } - else - { - v58 = *(_DWORD *)(v53 + 52); - v42 = *(__int16 **)(v53 + 32); - v47 = *(std::locale::facet **)(v53 + 36); - } - v5 = (*(int (__thiscall **)(void *, int, char *, char *))(*(_DWORD *)v48 + 20))(v48, 8, lpuexcpt, &lpuexcpt[2 * v4]) - - (_DWORD)lpuexcpt; - v44 = v5 >> 1; - if ( v5 >> 1 ) - { - v59 = v61; - v60 = 0; - LOWORD(v61[0]) = 0; - std::wstring::reserve((int)&v59, v5); - v9 = *(_DWORD *)(v53 + 48); - v49 = v60; - v40 = v44 - v9; - if ( (int)(v44 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v44 - v9; - if ( v10 ) - v11 = v44; - v40 = v11; - if ( *(_DWORD *)(v53 + 12) ) - { - v50 = 2 * v11; - std::wstring::_M_replace_aux(&v59, 0, v60, 2 * v11, 0); - v12 = (char *)std::__add_grouping( - v59, - *(_WORD *)(v53 + 20), - *(char **)(v53 + 8), - *(_DWORD *)(v53 + 12), - lpuexcpt, - &lpuexcpt[v50]); - v13 = (v12 - (_BYTE *)v59) >> 1; - v49 = v13; - if ( v13 > v60 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v13, - v60); - v60 = (v12 - (_BYTE *)v59) >> 1; - *(_WORD *)v12 = 0; - v9 = *(_DWORD *)(v53 + 48); - } - else - { - std::wstring::_M_replace((unsigned int **)&v59, 0, v60, lpuexcpt, v11); - v49 = v60; - v9 = *(_DWORD *)(v53 + 48); - } - } - if ( v9 > 0 ) - { - v38 = *(_WORD *)(v53 + 18); - v23 = v59; - v39 = v49 + 1; - v24 = 7; - if ( v59 != v61 ) - v24 = v61[0]; - if ( v49 + 1 > v24 ) - { - std::wstring::_M_mutate((int)&v59, v49, 0, 0, 1); - v23 = v59; - } - v23[v49] = v38; - v60 = v49 + 1; - v23[v49 + 1] = 0; - if ( v40 < 0 ) - { - std::wstring::_M_replace_aux(&v59, v39, 0, -v40, *(_WORD *)(v53 + 62)); - if ( v44 > 0x1FFFFFFF - v60 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&v59, lpuexcpt, v44); - } - else - { - v25 = *(_DWORD *)(v53 + 48); - if ( v25 > 0x1FFFFFFF - v39 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&v59, &lpuexcpt[2 * v40], v25); - } - v49 = v60; - } - v45 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v47 + v49); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v47 + v49 + *(_DWORD *)(v53 + 28)); - Block = v64; - v63 = 0; - LOWORD(v64[0]) = 0; - std::wstring::reserve((int)&Block, 2 * (_DWORD)lpuexcpta); - v51 = *(_DWORD *)(a2 + 8); - v14 = v51 > (unsigned int)lpuexcpta && v45 == 16; - v37 = v51 - (_DWORD)lpuexcpta; - lpuexcptb = (void **)&v58; - v41 = v14; - do - { - switch ( *(_BYTE *)lpuexcptb ) - { - case 0: - if ( v41 ) - goto LABEL_31; - break; - case 1: - v36 = v63; - if ( v41 ) - { -LABEL_31: - std::wstring::_M_replace_aux(&Block, v63, 0, v37, a3); - } - else - { - v26 = Block; - v33 = v63 + 1; - v27 = 7; - if ( Block != v64 ) - v27 = v64[0]; - if ( v63 + 1 > v27 ) - { - std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); - v26 = Block; - } - v26[v36] = a3; - v63 = v33; - v26[v36 + 1] = 0; - } - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - { - v17 = *(_DWORD *)(v53 + 28); - if ( v17 > 0x1FFFFFFF - v63 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&Block, *(_WORD **)(v53 + 24), v17); - } - break; - case 3: - if ( v47 ) - { - v32 = *v42; - v35 = v63; - v15 = Block; - v31 = v63 + 1; - v16 = 7; - if ( Block != v64 ) - v16 = v64[0]; - if ( v63 + 1 > v16 ) - { - std::wstring::_M_mutate((int)&Block, v63, 0, 0, 1); - v15 = Block; - } - v15[v35] = v32; - v63 = v31; - v15[v35 + 1] = 0; - } - break; - case 4: - std::wstring::_M_append(&Block, v59, v60); - break; - default: - break; - } - lpuexcptb = (void **)((char *)lpuexcptb + 1); - } - while ( &v59 != lpuexcptb ); - v18 = v63; - if ( (unsigned int)v47 > 1 ) - { - if ( (unsigned int)v47 - 1 > 0x1FFFFFFF - v63 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(&Block, v42 + 1, (int)v47 - 1); - v18 = v63; - if ( v51 > v63 ) - goto LABEL_38; - } - else if ( v51 > v63 ) - { -LABEL_38: - v29 = v51 - v18; - if ( v45 == 32 ) - std::wstring::_M_replace_aux(&Block, v18, 0, v29, a3); - else - std::wstring::_M_replace_aux(&Block, 0, 0, v29, a3); - goto LABEL_40; - } - v51 = v18; -LABEL_40: - v19 = (int *)Block; - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v20 = 0; - v21 = (*(int (__thiscall **)(_DWORD, void *, unsigned int))(*(_DWORD *)a1 + 48))(a1, Block, v51); - v19 = (int *)Block; - if ( v51 != v21 ) - v20 = 1; - lpuexcptc = v20; - } - v22 = HIDWORD(a1); - LOBYTE(v22) = lpuexcptc; - HIDWORD(v52) = v22; - if ( v19 != v64 ) - operator delete(v19); - if ( v59 != v61 ) - operator delete(v59); - } - *(_DWORD *)(a2 + 8) = 0; - return v52; -} -// 469A6C: variable 'v30' is possibly undefined -// 50C614: using guessed type signed __int32 std::moneypunct::id; -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (00469D40) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00469D60) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned __int8 **a4, - int a5, - int a6, - _DWORD *a7) -{ - unsigned __int8 *v7; // edx - unsigned int v9; // eax - int result; // eax - unsigned __int8 *v11; // [esp+8h] [ebp-10h] BYREF - unsigned __int8 *v12; // [esp+Ch] [ebp-Ch] - - v7 = a3; - v11 = a2; - v12 = a3; - if ( a2 == a3 ) - { -LABEL_9: - result = 0; - } - else - { - while ( 1 ) - { - if ( a6 == a5 ) - { - v7 = v11; - result = 1; - goto LABEL_8; - } - v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); - v7 = v11; - if ( v9 == -2 ) - { - result = 1; - goto LABEL_8; - } - if ( v9 > 0x10FFFF ) - break; - a5 += 4; - *(_DWORD *)(a5 - 4) = v9; - if ( v12 == v7 ) - goto LABEL_9; - } - result = 2; - } -LABEL_8: - *a4 = v7; - *a7 = a5; - return result; -} - -//----- (00469E00) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - int a1, - unsigned int *a2, - unsigned int *a3, - unsigned int **a4, - _BYTE *a5, - _BYTE *a6, - _DWORD *a7) -{ - _BYTE *v7; // eax - unsigned int *v8; // ebx - unsigned int v9; // edx - int v11; // edx - _BYTE *v12; // [esp+8h] [ebp-10h] BYREF - _BYTE *v13; // [esp+Ch] [ebp-Ch] - - v7 = a5; - v8 = a2; - v12 = a5; - v13 = a6; - if ( a2 == a3 ) - { - v11 = 0; - } - else - { - do - { - v9 = *v8; - if ( *v8 > 0x10FFFF ) - { - v7 = v12; - v11 = 2; - goto LABEL_11; - } - if ( v9 <= 0x7F ) - { - v7 = v12; - if ( v13 == v12 ) - { - v11 = 1; - goto LABEL_11; - } - ++v12; - *v7 = v9; - } - else if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)&v12, v9) ) - { - v7 = v12; - v11 = 1; - goto LABEL_11; - } - ++v8; - } - while ( a3 != v8 ); - v7 = v12; - v11 = 0; - } -LABEL_11: - *a4 = v8; - *a7 = v7; - return v11; -} - -//----- (00469EC0) -------------------------------------------------------- -unsigned __int8 *__stdcall std::codecvt::do_length( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - int a4) -{ - int v4; // ebx - bool v5; // dl - bool v6; // al - unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF - - v8[0] = a2; - v8[1] = a3; - if ( !a4 ) - return 0; - v4 = a4 - 1; - do - { - v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; - v6 = v4-- != 0; - } - while ( v6 && v5 ); - return (unsigned __int8 *)(v8[0] - a2); -} - -//----- (00469F20) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (00469F40) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned __int8 **a4, - int a5, - int a6, - _DWORD *a7) -{ - unsigned __int8 *v7; // edx - unsigned int v9; // eax - int result; // eax - unsigned __int8 *v11; // [esp+8h] [ebp-10h] BYREF - unsigned __int8 *v12; // [esp+Ch] [ebp-Ch] - - v7 = a3; - v11 = a2; - v12 = a3; - if ( a2 == a3 ) - { -LABEL_9: - result = 0; - } - else - { - while ( 1 ) - { - if ( a6 == a5 ) - { - v7 = v11; - result = 1; - goto LABEL_8; - } - v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); - v7 = v11; - if ( v9 == -2 ) - { - result = 1; - goto LABEL_8; - } - if ( v9 > 0x10FFFF ) - break; - a5 += 4; - *(_DWORD *)(a5 - 4) = v9; - if ( v12 == v7 ) - goto LABEL_9; - } - result = 2; - } -LABEL_8: - *a4 = v7; - *a7 = a5; - return result; -} - -//----- (00469FE0) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - int a1, - unsigned int *a2, - unsigned int *a3, - unsigned int **a4, - _BYTE *a5, - _BYTE *a6, - _DWORD *a7) -{ - _BYTE *v7; // eax - unsigned int *v8; // ebx - int v10; // ecx - _BYTE *v11[4]; // [esp+8h] [ebp-10h] BYREF - - v7 = a5; - v8 = a2; - v11[0] = a5; - v11[1] = a6; - if ( a2 == a3 ) - { - v10 = 0; - } - else - { - do - { - if ( *v8 > 0x10FFFF ) - { - v7 = v11[0]; - v10 = 2; - goto LABEL_7; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v11, *v8) ) - { - v7 = v11[0]; - v10 = 1; - goto LABEL_7; - } - ++v8; - } - while ( a3 != v8 ); - v7 = v11[0]; - v10 = 0; - } -LABEL_7: - *a4 = v8; - *a7 = v7; - return v10; -} - -//----- (0046A070) -------------------------------------------------------- -unsigned __int8 *__stdcall std::codecvt::do_length( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - int a4) -{ - int v4; // ebx - bool v5; // dl - bool v6; // al - unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF - - v8[0] = a2; - v8[1] = a3; - if ( !a4 ) - return 0; - v4 = a4 - 1; - do - { - v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; - v6 = v4-- != 0; - } - while ( v6 && v5 ); - return (unsigned __int8 *)(v8[0] - a2); -} - -//----- (0046A0D0) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0046A0F0) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned __int8 **a4, - char *a5, - char *a6, - char **a7) -{ - unsigned __int8 *v7; // edi - unsigned int v9; // eax - int result; // eax - unsigned __int8 *v11; // [esp+8h] [ebp-14h] BYREF - unsigned __int8 *v12; // [esp+Ch] [ebp-10h] - - v7 = a2; - v11 = a2; - v12 = a3; - if ( a2 == a3 ) - { -LABEL_12: - result = 0; - } - else - { - while ( 1 ) - { - if ( a6 == a5 ) - { - v7 = v11; - result = 0; - goto LABEL_10; - } - v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); - if ( v9 == -2 ) - { - v7 = v11; - result = 1; - goto LABEL_10; - } - if ( v9 > 0x10FFFF ) - break; - if ( v9 <= 0xFFFF ) - { - *(_WORD *)a5 = v9; - v7 = v11; - a5 += 2; - if ( v12 == v11 ) - goto LABEL_12; - } - else - { - if ( (unsigned int)(a6 - a5) <= 2 ) - { - result = 1; - goto LABEL_10; - } - v7 = v11; - a5 += 4; - *((_WORD *)a5 - 1) = (v9 & 0x3FF) - 9216; - *((_WORD *)a5 - 2) = (v9 >> 10) - 10304; - if ( v12 == v7 ) - goto LABEL_12; - } - } - v7 = v11; - result = 2; - } -LABEL_10: - *a4 = v7; - *a7 = a5; - return result; -} - -//----- (0046A1E0) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - int a1, - char *a2, - char *a3, - unsigned __int16 **a4, - _BYTE *a5, - _BYTE *a6, - _DWORD *a7) -{ - unsigned __int16 *v7; // ebx - _BYTE *v8; // eax - char *v9; // edi - int v10; // eax - int v11; // edi - unsigned int v12; // edx - unsigned __int16 v13; // cx - int v15; // edx - _BYTE *v16; // [esp+8h] [ebp-14h] BYREF - _BYTE *v17; // [esp+Ch] [ebp-10h] - - v7 = (unsigned __int16 *)a2; - v8 = a5; - v16 = a5; - v9 = (char *)(a3 - a2); - v17 = a6; - if ( a2 != a3 ) - { - while ( 1 ) - { - while ( 1 ) - { - v12 = *v7; - v13 = *v7; - if ( v12 - 55296 > 0x3FF ) - break; - if ( (unsigned int)v9 <= 2 ) - goto LABEL_13; - v10 = v7[1]; - if ( (unsigned int)(v10 - 56320) > 0x3FF ) - { -LABEL_16: - v8 = v16; - v15 = 2; - goto LABEL_15; - } - v11 = 2; - v12 = v10 + (v12 << 10) - 56613888; -LABEL_6: - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)&v16, v12) ) - { - v8 = v16; - v15 = 1; - goto LABEL_15; - } - v7 += v11; - v9 = (char *)(a3 - (char *)v7); - if ( a3 == (char *)v7 ) - goto LABEL_13; - } - if ( v12 - 56320 <= 0x3FF ) - goto LABEL_16; - if ( v12 > 0x7F ) - { - v11 = 1; - goto LABEL_6; - } - v8 = v16; - if ( v17 == v16 ) - { - v15 = 1; - goto LABEL_15; - } - ++v16; - *v8 = v13; - v9 = (char *)(a3 - (char *)++v7); - if ( a3 == (char *)v7 ) - { -LABEL_13: - v8 = v16; - v15 = 0; - goto LABEL_15; - } - } - } - v15 = 0; -LABEL_15: - *a4 = v7; - *a7 = v8; - return v15; -} - -//----- (0046A300) -------------------------------------------------------- -unsigned __int8 *__stdcall std::codecvt::do_length( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // esi - unsigned int utf8_code; // eax - unsigned __int8 *v8[6]; // [esp+8h] [ebp-18h] BYREF - - v4 = 1; - v8[0] = a2; - v8[1] = a3; - if ( a4 > 1 ) - { - v5 = 0; - do - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu); - if ( utf8_code > 0x10FFFF ) - return (unsigned __int8 *)(v8[0] - a2); - if ( utf8_code <= 0xFFFF ) - v4 = v5; - v5 = v4 + 1; - v4 += 2; - } - while ( a4 > v4 ); - } - if ( a4 != v4 ) - return (unsigned __int8 *)(v8[0] - a2); - std::`anonymous namespace'::read_utf8_code_point(v8, 0xFFFFu); - return (unsigned __int8 *)(v8[0] - a2); -} - -//----- (0046A3A0) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0046A3C0) -------------------------------------------------------- -int std::codecvt::do_encoding() -{ - return 0; -} - -//----- (0046A3D0) -------------------------------------------------------- -int std::codecvt::do_max_length() -{ - return 4; -} - -//----- (0046A3E0) -------------------------------------------------------- -int std::codecvt::do_always_noconv() -{ - return 0; -} - -//----- (0046A3F0) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned __int8 **a4, - char *a5, - char *a6, - char **a7) -{ - int result; // eax - unsigned __int8 *v8[2]; // [esp+8h] [ebp-10h] BYREF - char *v9[2]; // [esp+10h] [ebp-8h] BYREF - - v8[0] = a2; - v8[1] = a3; - v9[0] = a5; - v9[1] = a6; - result = std::`anonymous namespace'::utf16_in(v8, v9, 0x10FFFFu, 1, 0); - *a4 = v8[0]; - *a7 = v9[0]; - return result; -} - -//----- (0046A450) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - int a1, - unsigned __int16 *a2, - unsigned __int16 *a3, - unsigned __int16 **a4, - _BYTE *a5, - _BYTE *a6, - _BYTE **a7) -{ - int result; // eax - unsigned __int16 *v8[2]; // [esp+4h] [ebp-10h] BYREF - _BYTE *v9[2]; // [esp+Ch] [ebp-8h] BYREF - - v8[0] = a2; - v8[1] = a3; - v9[0] = a5; - v9[1] = a6; - result = std::`anonymous namespace'::utf16_out(v8, v9, 0x10FFFFu, 0); - *a4 = v8[0]; - *a7 = v9[0]; - return result; -} - -//----- (0046A4B0) -------------------------------------------------------- -unsigned __int8 *__stdcall std::codecvt::do_length( - int a1, - unsigned __int8 *a2, - unsigned __int8 *a3, - unsigned int a4) -{ - return (unsigned __int8 *)(std::`anonymous namespace'::utf16_span(a2, a3, a4, 0x10FFFFu, 0) - a2); -} - -//----- (0046A4E0) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0046A500) -------------------------------------------------------- -int std::codecvt::do_max_length() -{ - return 1; -} - -//----- (0046A510) -------------------------------------------------------- -int std::codecvt::do_always_noconv() -{ - return 1; -} - -//----- (0046A520) -------------------------------------------------------- -int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) -{ - *a4 = a2; - *a7 = a5; - return 3; -} - -//----- (0046A540) -------------------------------------------------------- -int __stdcall std::codecvt::do_out(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) -{ - *a4 = a2; - *a7 = a5; - return 3; -} - -//----- (0046A560) -------------------------------------------------------- -unsigned int __stdcall std::codecvt::do_length(int a1, int a2, int a3, unsigned int a4) -{ - unsigned int result; // eax - - result = a3 - a2; - if ( a3 - a2 > a4 ) - return a4; - return result; -} - -//----- (0046A580) -------------------------------------------------------- -int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) -{ - *a4 = a2; - return 3; -} - -//----- (0046A5A0) -------------------------------------------------------- -BOOL __cdecl std::codecvt::do_encoding() -{ - return ____mb_cur_max_func() == 1; -} - -//----- (0046A620) -------------------------------------------------------- -int __cdecl std::codecvt::do_max_length() -{ - return ____mb_cur_max_func(); -} - -//----- (0046A6A0) -------------------------------------------------------- -int std::codecvt::do_always_noconv() -{ - return 0; -} - -//----- (0046A6B0) -------------------------------------------------------- -int __stdcall std::codecvt::do_in( - unsigned int *a1, - char *a2, - unsigned int a3, - char **a4, - wchar_t *a5, - unsigned int a6, - wchar_t **a7) -{ - char *v7; // esi - wchar_t *v8; // edi - const char *SrcCh; // edi - wchar_t *DstCh; // esi - size_t v11; // eax - int result; // eax - mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF - wchar_t *v14; // [esp+50h] [ebp+14h] - wchar_t *v15; // [esp+50h] [ebp+14h] - wchar_t *v16; // [esp+50h] [ebp+14h] - - v7 = a2; - v8 = a5; - State._Wchar = *a1; - if ( (unsigned int)a5 >= a6 || (unsigned int)a2 >= a3 ) - { -LABEL_12: - result = (unsigned int)v7 < a3; - } - else - { - SrcCh = a2; - DstCh = a5; - while ( 1 ) - { - v11 = mbrtowc(DstCh, SrcCh, a3 - (_DWORD)SrcCh, &State); - if ( v11 == -1 ) - { - v14 = DstCh; - result = 2; - v7 = (char *)SrcCh; - v8 = v14; - goto LABEL_13; - } - if ( v11 == -2 ) - break; - if ( !v11 ) - { - *DstCh = 0; - v11 = 1; - } - SrcCh += v11; - ++DstCh; - *a1 = State._Wchar; - if ( a3 <= (unsigned int)SrcCh || a6 <= (unsigned int)DstCh ) - { - v15 = DstCh; - v7 = (char *)SrcCh; - v8 = v15; - goto LABEL_12; - } - } - v16 = DstCh; - result = 1; - v7 = (char *)SrcCh; - v8 = v16; - } -LABEL_13: - *a4 = v7; - *a7 = v8; - return result; -} - -//----- (0046A7A0) -------------------------------------------------------- -int __stdcall std::codecvt::do_out( - unsigned int *a1, - wchar_t *a2, - unsigned int a3, - wchar_t **a4, - char *a5, - unsigned int a6, - char **a7) -{ - wchar_t *v7; // edi - char *v8; // ebx - size_t Size; // eax - int result; // eax - size_t v11; // eax - char *Dest; // [esp+0h] [ebp-4Ch] - mbstate_t Src; // [esp+24h] [ebp-28h] BYREF - - v7 = a2; - v8 = a5; - Src._Wchar = *a1; - if ( (int)(____mb_cur_max_func() * ((int)(a3 - (_DWORD)a2) >> 1) - (a6 - (_DWORD)a5)) <= 0 ) - { - if ( a3 <= (unsigned int)a2 ) - { -LABEL_18: - result = 0; - goto LABEL_12; - } - while ( 1 ) - { - v11 = wcrtomb(v8, *v7, &Src); - if ( v11 == -1 ) - break; - v8 += v11; - ++v7; - *a1 = Src._Wchar; - if ( a3 <= (unsigned int)v7 ) - goto LABEL_18; - } - } - else - { - if ( a3 <= (unsigned int)a2 || a6 <= (unsigned int)a5 ) - { -LABEL_11: - result = (unsigned int)v7 < a3; - goto LABEL_12; - } - for ( Size = wcrtomb((char *)&Src._State + 1, *a2, &Src); Size != -1; Size = wcrtomb( - (char *)&Src._State + 1, - *v7, - &Src) ) - { - if ( a6 - (unsigned int)v8 < Size ) - { - result = 1; - goto LABEL_12; - } - Dest = v8; - ++v7; - v8 += Size; - memcpy(Dest, (char *)&Src._State + 1, Size); - *a1 = Src._Wchar; - if ( a3 <= (unsigned int)v7 || a6 <= (unsigned int)v8 ) - goto LABEL_11; - } - } - result = 2; -LABEL_12: - *a4 = v7; - *a7 = v8; - return result; -} - -//----- (0046A8D0) -------------------------------------------------------- -int __stdcall std::codecvt::do_length(unsigned int *a1, char *a2, unsigned int a3, int a4) -{ - int v4; // esi - const char *SrcCh; // ebp - int v6; // edi - size_t v7; // eax - mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF - - v4 = 0; - State._Wchar = *a1; - if ( a4 && (unsigned int)a2 < a3 ) - { - SrcCh = a2; - v6 = a4; - do - { - v7 = mbrtowc(0, SrcCh, a3 - (_DWORD)SrcCh, &State); - if ( v7 > 0xFFFFFFFD ) - break; - if ( !v7 ) - v7 = 1; - --v6; - SrcCh += v7; - *a1 = State._Wchar; - v4 += v7; - if ( a3 <= (unsigned int)SrcCh ) - break; - } - while ( v6 ); - } - return v4; -} - -//----- (0046A960) -------------------------------------------------------- -int __stdcall std::collate::_M_compare(char *String1, char *String2) -{ - int v2; // eax - - v2 = strcoll(String1, String2); - return (v2 >> 30) | (v2 != 0); -} - -//----- (0046A990) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int __stdcall std::collate::do_compare(void *a1, _BYTE *a2, void *a3, int a4) -{ - int i; // eax - char *v5; // eax - int v6; // eax - int v7; // eax - char *v9; // [esp+18h] [ebp-74h] - char *v10; // [esp+18h] [ebp-74h] - char *Str; // [esp+1Ch] [ebp-70h] - char *v12; // [esp+20h] [ebp-6Ch] - int v13; // [esp+24h] [ebp-68h] - char *v14; // [esp+2Ch] [ebp-60h] - char *v15; // [esp+30h] [ebp-5Ch] - char *v16; // [esp+34h] [ebp-58h] - char v17; // [esp+7Bh] [ebp-11h] BYREF - _BYTE *retaddr; // [esp+8Ch] [ebp+0h] - - v15 = (char *)std::string::_S_construct(retaddr, (int)a1); - v16 = (char *)std::string::_S_construct(a2, (int)a3); - Str = v16; - v9 = v15; - v12 = &v16[*((_DWORD *)v16 - 3)]; - v14 = &v15[*((_DWORD *)v15 - 3)]; - for ( i = std::collate::_M_compare(v15, v16); ; i = std::collate::_M_compare(v9, v5 + 1) ) - { - v13 = i; - if ( i ) - break; - v10 = &v9[strlen(v9)]; - v5 = &Str[strlen(Str)]; - if ( v14 == v10 ) - { - if ( v12 == v5 ) - break; - if ( v14 == v10 ) - { - v13 = -1; - break; - } - } - if ( v12 == v5 ) - { - v13 = 1; - break; - } - Str = v5 + 1; - v9 = v10 + 1; - } - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_11; - } - else - { - v6 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_11; - } - std::string::_Rep::_M_destroy(v16 - 12, (int)&v17); -LABEL_11: - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v15 - 1, 0xFFFFFFFF) > 0 ) - return v13; -LABEL_15: - std::string::_Rep::_M_destroy(v15 - 12, (int)&v17); - return v13; - } - v7 = *((_DWORD *)v15 - 1); - *((_DWORD *)v15 - 1) = v7 - 1; - if ( v7 <= 0 ) - goto LABEL_15; - return v13; -} -// 46ABB0: positive sp value 4 has been found -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0046ABD0) -------------------------------------------------------- -size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) -{ - return strxfrm(Destination, Source, MaxCount); -} - -//----- (0046AC00) -------------------------------------------------------- -unsigned int *__thiscall std::collate::do_transform(unsigned int *this, int a2, _BYTE *a3, int a4) -{ - size_t i; // eax - unsigned int v5; // eax - char *v6; // eax - int v7; // eax - unsigned int v9; // [esp+4h] [ebp-84h] - unsigned int v10; // [esp+8h] [ebp-80h] - char *v11; // [esp+1Ch] [ebp-6Ch] - char *v12; // [esp+20h] [ebp-68h] - int v13; // [esp+24h] [ebp-64h] - std::string *v14; // [esp+28h] [ebp-60h] - char *Block; // [esp+2Ch] [ebp-5Ch] - unsigned int v17; // [esp+34h] [ebp-54h] - char *Str; // [esp+38h] [ebp-50h] - int v19; // [esp+7Fh] [ebp-9h] BYREF - - *this = (unsigned int)std::string::_S_construct(0, 0); - v11 = (char *)std::string::_S_construct(a3, a4); - v17 = 2 * (a4 - (_DWORD)a3); - v12 = &v11[*((_DWORD *)v11 - 3)]; - Block = (char *)operator new[](v17); - Str = v11; - for ( i = std::collate::_M_transform(Block, v11, v17); ; i = std::collate::_M_transform(Block, Str, v17) ) - { - if ( v17 <= i ) - { - v17 = i + 1; - operator delete[](Block); - Block = (char *)operator new[](v17); - i = std::collate::_M_transform(Block, Str, v17); - } - std::string::append(this, (std::string *)Block, i, v10); - v6 = &Str[strlen(Str)]; - if ( v12 == v6 ) - break; - Str = v6 + 1; - v13 = *(_DWORD *)(*this - 12); - v14 = (std::string *)(v13 + 1); - if ( (unsigned int)(v13 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::string::reserve((int *)this, v14, v9); - *(_BYTE *)(*this + *(_DWORD *)(*this - 12)) = 0; - v5 = *this; - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v14; - *(_BYTE *)(v5 + v13 + 1) = 0; - } - operator delete[](Block); - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v11 - 1, 0xFFFFFFFF) > 0 ) - return this; -LABEL_13: - std::string::_Rep::_M_destroy(v11 - 12, (int)&v19); - return this; - } - v7 = *((_DWORD *)v11 - 1); - *((_DWORD *)v11 - 1) = v7 - 1; - if ( v7 <= 0 ) - goto LABEL_13; - return this; -} -// 46ACE3: variable 'v9' is possibly undefined -// 46AD88: variable 'v10' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0046AEB0) -------------------------------------------------------- -int __thiscall std::collate::hash(void *this, char *a2, char *a3) -{ - char *v3; // edx - int (__stdcall *v4)(char *, char *); // eax - int result; // eax - int v6; // ecx - - v3 = a2; - v4 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); - if ( v4 != std::collate::do_hash ) - return v4(a2, a3); - result = 0; - if ( a2 < a3 ) - { - do - { - v6 = *v3++; - result = v6 + __ROL4__(result, 7); - } - while ( a3 != v3 ); - } - return result; -} - -//----- (0046AF00) -------------------------------------------------------- -int __fastcall std::collate::compare(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (0046AF10) -------------------------------------------------------- -int __stdcall std::collate::do_hash(char *a1, char *a2) -{ - char *v2; // edx - int result; // eax - int v4; // ecx - - v2 = a1; - result = 0; - if ( a1 < a2 ) - { - do - { - v4 = *v2++; - result = v4 + __ROL4__(result, 7); - } - while ( a2 != v2 ); - } - return result; -} - -//----- (0046AF40) -------------------------------------------------------- -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) -{ - (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); - return this; -} - -//----- (0046AF70) -------------------------------------------------------- -int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) -{ - int v2; // eax - - v2 = wcscoll(String1, String2); - return (v2 >> 30) | (v2 != 0); -} - -//----- (0046AFA0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int __stdcall std::collate::do_compare(void *a1, _WORD *a2, void *a3, int a4) -{ - int i; // eax - wchar_t *v5; // eax - int v6; // eax - int v7; // eax - wchar_t *v9; // [esp+18h] [ebp-74h] - wchar_t *v10; // [esp+18h] [ebp-74h] - wchar_t *String; // [esp+1Ch] [ebp-70h] - wchar_t *v12; // [esp+20h] [ebp-6Ch] - int v13; // [esp+24h] [ebp-68h] - wchar_t *v14; // [esp+2Ch] [ebp-60h] - wchar_t *v15; // [esp+30h] [ebp-5Ch] - wchar_t *v16; // [esp+34h] [ebp-58h] - char v17; // [esp+7Bh] [ebp-11h] BYREF - _WORD *retaddr; // [esp+8Ch] [ebp+0h] - - v15 = (wchar_t *)std::wstring::_S_construct(retaddr, (int)a1); - v16 = (wchar_t *)std::wstring::_S_construct(a2, (int)a3); - String = v16; - v9 = v15; - v14 = &v15[*((_DWORD *)v15 - 3)]; - v12 = &String[*((_DWORD *)String - 3)]; - for ( i = std::collate::_M_compare(v15, v16); ; i = std::collate::_M_compare(v9, v5 + 1) ) - { - v13 = i; - if ( i ) - break; - v10 = &v9[wcslen(v9)]; - v5 = &String[wcslen(String)]; - if ( v14 == v10 ) - { - if ( v12 == v5 ) - break; - if ( v14 == v10 ) - { - v13 = -1; - break; - } - } - if ( v12 == v5 ) - { - v13 = 1; - break; - } - String = v5 + 1; - v9 = v10 + 1; - } - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_11; - } - else - { - v6 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_11; - } - std::wstring::_Rep::_M_destroy(v16 - 6, (int)&v17); -LABEL_11: - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v15 - 1, 0xFFFFFFFF) > 0 ) - return v13; -LABEL_15: - std::wstring::_Rep::_M_destroy(v15 - 6, (int)&v17); - return v13; - } - v7 = *((_DWORD *)v15 - 1); - *((_DWORD *)v15 - 1) = v7 - 1; - if ( v7 <= 0 ) - goto LABEL_15; - return v13; -} -// 46B1C8: positive sp value 4 has been found -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0046B1E0) -------------------------------------------------------- -size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) -{ - return wcsxfrm(Destination, Source, MaxCount); -} - -//----- (0046B210) -------------------------------------------------------- -unsigned int *__thiscall std::collate::do_transform(unsigned int *this, int a2, _WORD *a3, int a4) -{ - unsigned int i; // eax - unsigned int v5; // eax - wchar_t *v6; // eax - int v7; // eax - wchar_t *v9; // [esp+10h] [ebp-68h] - wchar_t *v10; // [esp+14h] [ebp-64h] - unsigned int v11; // [esp+18h] [ebp-60h] - wchar_t *Block; // [esp+1Ch] [ebp-5Ch] - wchar_t *String; // [esp+24h] [ebp-54h] - size_t lpuexcpt; // [esp+28h] [ebp-50h] - int v16; // [esp+6Fh] [ebp-9h] BYREF - - *this = (unsigned int)std::wstring::_S_construct(0, 0); - v9 = (wchar_t *)std::wstring::_S_construct(a3, a4); - v10 = &v9[*((_DWORD *)v9 - 3)]; - lpuexcpt = a4 - (_DWORD)a3; - if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - Block = (wchar_t *)operator new[](2 * (a4 - (_DWORD)a3)); - String = v9; - for ( i = std::collate::_M_transform(Block, v9, lpuexcpt); - ; - i = std::collate::_M_transform(Block, String, lpuexcpt) ) - { - if ( lpuexcpt <= i ) - { - lpuexcpt = i + 1; - operator delete[](Block); - if ( lpuexcpt > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - Block = (wchar_t *)operator new[](2 * lpuexcpt); - i = std::collate::_M_transform(Block, String, lpuexcpt); - } - std::wstring::append(this, (char *)Block, i); - v6 = &String[wcslen(String)]; - if ( v10 == v6 ) - break; - String = v6 + 1; - v11 = *(_DWORD *)(*this - 12) + 1; - if ( v11 > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::wstring::reserve((int *)this, v11); - v5 = *this; - *(_WORD *)(v5 + 2 * *(_DWORD *)(*this - 12)) = 0; - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v11; - *(_WORD *)(v5 + 2 * v11) = 0; - } - operator delete[](Block); - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v9 - 1, 0xFFFFFFFF) > 0 ) - return this; -LABEL_15: - std::wstring::_Rep::_M_destroy(v9 - 6, (int)&v16); - return this; - } - v7 = *((_DWORD *)v9 - 1); - *((_DWORD *)v9 - 1) = v7 - 1; - if ( v7 <= 0 ) - goto LABEL_15; - return this; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0046B4F0) -------------------------------------------------------- -int __thiscall std::collate::hash(void *this, unsigned __int16 *a2, unsigned int a3) -{ - unsigned __int16 *v3; // edx - int (__stdcall *v4)(unsigned __int16 *, unsigned int); // eax - int result; // eax - int v6; // ecx - - v3 = a2; - v4 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); - if ( v4 != std::collate::do_hash ) - return v4(a2, a3); - result = 0; - if ( (unsigned int)a2 < a3 ) - { - do - { - v6 = *v3++; - result = v6 + __ROL4__(result, 7); - } - while ( a3 > (unsigned int)v3 ); - } - return result; -} - -//----- (0046B540) -------------------------------------------------------- -int __fastcall std::collate::compare(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (0046B550) -------------------------------------------------------- -int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) -{ - unsigned __int16 *v2; // edx - int result; // eax - int v4; // ecx - - v2 = a1; - for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) - v4 = *v2++; - return result; -} - -//----- (0046B580) -------------------------------------------------------- -void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) -{ - (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); - return this; -} - -//----- (0046B5B0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // ebx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - unsigned int v20; // edx - unsigned int v21; // eax - int *v22; // eax - bool v24; // al - bool v25; // zf - _DWORD *v26; // eax - char *v27; // eax - char *v28; // eax - unsigned int v29; // edx - _BYTE *v30; // eax - int v31; // eax - _DWORD *v32; // ecx - unsigned int v33; // eax - unsigned int v34; // edx - unsigned int v35; // eax - char *v36; // eax - size_t v37; // edx - size_t v38; // edx - int v39; // edx - char *v40; // eax - char *v41; // eax - _DWORD *v42; // eax - int v43; // eax - bool v44; // bl - bool v45; // zf - _DWORD *v46; // eax - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // dl - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - bool v55; // zf - char v56; // bl - _DWORD *v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - _DWORD *v61; // eax - char v62; // bl - int v63; // eax - bool v64; // zf - _DWORD *v65; // eax - char v66; // bl - int v67; // eax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // zf - char v71; // al - _DWORD *v72; // eax - bool v73; // zf - _DWORD *v74; // eax - bool v75; // cl - char v76; // bl - int v77; // eax - bool v78; // dl - bool v79; // zf - _DWORD *v80; // eax - int v81; // eax - bool v82; // bl - bool v83; // zf - _DWORD *v84; // eax - int v85; // eax - char v86; // dl - bool v87; // zf - _DWORD *v88; // eax - int v89; // eax - bool v90; // dl - bool v91; // zf - _DWORD *v92; // eax - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+18h] [ebp-A0h] - size_t MaxCount; // [esp+1Ch] [ebp-9Ch] - int Buf; // [esp+20h] [ebp-98h] - void *Bufa; // [esp+20h] [ebp-98h] - bool v98; // [esp+26h] [ebp-92h] - char v99; // [esp+27h] [ebp-91h] - unsigned int v100; // [esp+28h] [ebp-90h] - char v101; // [esp+2Ch] [ebp-8Ch] - char v102; // [esp+2Ch] [ebp-8Ch] - int v103; // [esp+30h] [ebp-88h] - char v104; // [esp+30h] [ebp-88h] - char v105; // [esp+34h] [ebp-84h] - int v106; // [esp+34h] [ebp-84h] - size_t v107; // [esp+34h] [ebp-84h] - char v108; // [esp+38h] [ebp-80h] - unsigned int v109; // [esp+38h] [ebp-80h] - _DWORD *v110; // [esp+3Ch] [ebp-7Ch] - char v111; // [esp+40h] [ebp-78h] - bool v112; // [esp+40h] [ebp-78h] - int *v113; // [esp+44h] [ebp-74h] - unsigned int v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - bool v116; // [esp+48h] [ebp-70h] - char v117; // [esp+48h] [ebp-70h] - char v118; // [esp+48h] [ebp-70h] - char v119; // [esp+48h] [ebp-70h] - char v120; // [esp+48h] [ebp-70h] - _DWORD *v121; // [esp+4Ch] [ebp-6Ch] - bool v122; // [esp+50h] [ebp-68h] - int v123; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - char lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v131; // [esp+9Ch] [ebp-1Ch] - int v132[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v110 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v113 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v123 = *v113; - if ( !*v113 ) - { - v42 = operator new(0x68u); - v42[1] = 0; - *v42 = &off_51AF60; - v42[2] = 0; - v42[3] = 0; - *((_BYTE *)v42 + 16) = 0; - v42[5] = 0; - v42[6] = 0; - v42[7] = 0; - v42[8] = 0; - *((_WORD *)v42 + 18) = 0; - *((_BYTE *)v42 + 100) = 0; - v94 = (std::locale::_Impl *)v42; - std::__numpunct_cache::_M_cache((int)v42, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v123 = *v113; - } - v114 = 8; - v103 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v103 != 64 ) - { - v7 = 10; - if ( v103 == 8 ) - v7 = 16; - v114 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v82 = lpuexcpta && a1 != 0; - v83 = v81 == -1; - if ( v81 != -1 ) - v82 = 0; - v84 = 0; - if ( !v83 ) - v84 = a1; - v105 = v82; - v121 = v84; - } - else - { - v105 = 0; - } - } - else - { - v105 = a2 == -1; - } - v122 = a4 == -1; - if ( v122 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v78 = v122 && a3 != 0; - v79 = v77 == -1; - if ( v77 != -1 ) - v78 = 0; - v80 = 0; - if ( !v79 ) - v80 = a3; - v101 = v78; - v110 = v80; - } - else - { - v101 = 0; - } - } - else - { - v101 = a4 == -1; - } - if ( v105 != v101 ) - { - if ( v121 && a2 == -1 ) - { - v41 = (char *)v121[2]; - if ( (unsigned int)v41 >= v121[3] ) - { - v85 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v86 = -1; - v87 = v85 == -1; - if ( v85 != -1 ) - v86 = v85; - v88 = 0; - if ( !v87 ) - v88 = v121; - lpuexcptb = v86; - v121 = v88; - } - else - { - lpuexcptb = *v41; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v123 + 16); - v98 = *(_BYTE *)(v123 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v123 + 74) == lpuexcptb || *(_BYTE *)(v123 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v123 + 37) != lpuexcptb) && *(_BYTE *)(v123 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = v121[2]; - v10 = v121[3]; - } - else - { - v11 = v9 + 1; - v121[2] = v11; - } - v111 = 0; - if ( v11 >= v10 ) - { - v52 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v53 = 0; - if ( !v52 ) - v53 = v121; - v111 = v52; - v121 = v53; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v89 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); - v90 = v122 && v110 != 0; - v91 = v89 == -1; - if ( v89 != -1 ) - v90 = 0; - v92 = 0; - if ( !v91 ) - v92 = v110; - v115 = v90; - v110 = v92; - } - else - { - v115 = 0; - } - } - else - { - v115 = a4 == -1; - } - if ( v111 == v115 ) - { - v104 = 1; - v106 = 0; - v112 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v121 ) - { - v40 = (char *)v121[2]; - if ( (unsigned int)v40 >= v121[3] ) - { - v62 = -1; - v63 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v64 = v63 == -1; - if ( v63 != -1 ) - v62 = v63; - v65 = 0; - if ( !v64 ) - v65 = v121; - lpuexcptb = v62; - v121 = v65; - } - else - { - lpuexcptb = *v40; - } - } - v8 = *(_BYTE *)(v123 + 16); - } - } - else - { - v98 = 0; - } - v106 = 0; - v112 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v123 + 37) == lpuexcptb || *(_BYTE *)(v123 + 36) == lpuexcptb ) - { -LABEL_111: - v104 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v123 + 78) != lpuexcptb ) - break; - v24 = v114 == 10 || !v112; - if ( !v24 ) - goto LABEL_33; - v112 = v103 == 0 || v114 == 8; - if ( !v112 ) - { - ++v106; - v112 = v24; - goto LABEL_37; - } - v12 = v121; - v114 = 8; - v106 = 0; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 < v14 ) - { -LABEL_38: - v15 = v13 + 1; - v108 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v108 = 0; - if ( v121[2] < v121[3] ) - { -LABEL_39: - v116 = v122 && v110 != 0; - if ( !v116 ) - goto LABEL_40; - goto LABEL_79; - } -LABEL_76: - v25 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v26 = 0; - if ( !v25 ) - v26 = v121; - v108 = v25; - v121 = v26; - v116 = v122 && v110 != 0; - if ( !v116 ) - { -LABEL_40: - v117 = a4 == -1; - goto LABEL_41; - } -LABEL_79: - if ( v110[2] >= v110[3] ) - { - v43 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); - v44 = v116; - v45 = v43 == -1; - if ( v43 != -1 ) - v44 = 0; - v46 = 0; - if ( !v45 ) - v46 = v110; - v117 = v44; - v110 = v46; -LABEL_41: - if ( v108 == v117 ) - goto LABEL_42; - goto LABEL_81; - } - if ( !v108 ) - { -LABEL_42: - v104 = 1; - goto LABEL_43; - } -LABEL_81: - lpuexcptb = -1; - if ( v121 ) - { - v27 = (char *)v121[2]; - if ( (unsigned int)v27 >= v121[3] ) - { - v66 = -1; - v67 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v68 = v67 == -1; - if ( v67 != -1 ) - v66 = v67; - v69 = 0; - if ( !v68 ) - v69 = v121; - lpuexcptb = v66; - v121 = v69; - } - else - { - lpuexcptb = *v27; - } - } - if ( !v112 ) - { - v104 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v123 + 16); - } - if ( !v112 ) - goto LABEL_111; -LABEL_33: - if ( *(_BYTE *)(v123 + 76) != lpuexcptb && *(_BYTE *)(v123 + 77) != lpuexcptb ) - { - v104 = 0; - v112 = 1; - goto LABEL_43; - } - if ( v103 != 0 && v114 != 16 ) - { - v104 = 0; - MaxCount = v114; - Buf = v114; - v112 = 1; - goto LABEL_46; - } - v106 = 0; - v112 = 0; - v114 = 16; -LABEL_37: - v12 = v121; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 < v14 ) - goto LABEL_38; - goto LABEL_75; - } - v98 = 0; - v104 = 1; - lpuexcptb = 0; - v106 = 0; - v112 = 0; -LABEL_43: - v16 = 22; - if ( v114 != 16 ) - v16 = v114; - MaxCount = v16; - Buf = v16; -LABEL_46: - v131 = 0; - Block = v132; - LOBYTE(v132[0]) = 0; - if ( *(_BYTE *)(v123 + 16) ) - std::string::reserve(&Block, 0x20u); - v100 = 0xFFFFFFFF / v114; - v99 = *(_BYTE *)(v123 + 100); - if ( !v99 ) - { - if ( v104 ) - { - v76 = v104; - v102 = 0; - v104 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - v99 = v76; - v109 = 0; - goto LABEL_63; - } - v102 = 0; - v109 = 0; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_110; - v17 = lpuexcptb - 55; - goto LABEL_55; - } - v17 = lpuexcptb - 87; - if ( v100 < v109 ) - { -LABEL_56: - v18 = v121; - v102 = 1; - v19 = v121[2]; - v20 = v121[3]; - if ( v19 < v20 ) - goto LABEL_57; - goto LABEL_90; - } -LABEL_89: - v102 |= ~v17 < v114 * v109; - v18 = v121; - v109 = v114 * v109 + v17; - v20 = v121[3]; - v19 = v121[2]; - ++v106; - if ( v19 < v20 ) - { -LABEL_57: - v21 = v19 + 1; - v18[2] = v21; - goto LABEL_58; - } -LABEL_90: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v21 = v121[2]; - v20 = v121[3]; -LABEL_58: - v118 = 0; - if ( v21 >= v20 ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v48 = 0; - if ( !v47 ) - v48 = v121; - v118 = v47; - v121 = v48; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; - v50 = 0; - if ( !v49 ) - v50 = v110; - v51 = v122 && v110 != 0; - v110 = v50; - if ( !v49 ) - v51 = 0; - lpuexcptc = v51; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v118 ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v121 ) - { - v28 = (char *)v121[2]; - if ( (unsigned int)v28 >= v121[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v55 = v54 == -1; - v56 = -1; - if ( v54 != -1 ) - v56 = v54; - v57 = 0; - if ( !v55 ) - v57 = v121; - lpuexcptb = v56; - v121 = v57; - } - else - { - lpuexcptb = *v28; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_110; -LABEL_54: - v17 = lpuexcptb - 48; -LABEL_55: - if ( v100 < v109 ) - goto LABEL_56; - goto LABEL_89; - } - if ( v104 ) - { - v109 = 0; - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - v99 = v104; - v104 = 0; - goto LABEL_63; - } - v102 = 0; - v109 = 0; - Bufa = (void *)(v123 + 78); - while ( !*(_BYTE *)(v123 + 16) || *(_BYTE *)(v123 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v123 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_110: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - v31 = v30 - (_BYTE *)Bufa; - if ( v31 > 15 ) - v31 -= 6; - if ( v100 >= v109 ) - { - v102 |= ~v31 < v114 * v109; - ++v106; - v109 = v114 * v109 + v31; - goto LABEL_122; - } - v32 = v121; - v102 = v99; - v34 = v121[3]; - v33 = v121[2]; - if ( v33 < v34 ) - { -LABEL_123: - v35 = v33 + 1; - v32[2] = v35; - goto LABEL_124; - } -LABEL_130: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v35 = v121[2]; - v34 = v121[3]; -LABEL_124: - v119 = 0; - if ( v34 <= v35 ) - { - v70 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v71 = 0; - if ( v70 ) - v71 = v99; - v119 = v71; - v72 = 0; - if ( !v70 ) - v72 = v121; - v121 = v72; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; - v74 = 0; - if ( !v73 ) - v74 = v110; - v75 = v122 && v110 != 0; - v110 = v74; - if ( !v73 ) - v75 = 0; - lpuexcpte = v75; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v119 ) - { - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v121 ) - { - v36 = (char *)v121[2]; - if ( (unsigned int)v36 >= v121[3] ) - { - v58 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v59 = v58 == -1; - v60 = -1; - if ( v58 != -1 ) - v60 = v58; - v61 = 0; - if ( !v59 ) - v61 = v121; - lpuexcptb = v60; - v121 = v61; - } - else - { - lpuexcptb = *v36; - } - } - else - { - lpuexcptb = -1; - } - } - v22 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v131; - if ( v106 ) - { - v120 = v106; - v37 = 15; - if ( Block != v132 ) - v37 = v132[0]; - v107 = v131 + 1; - if ( v131 + 1 > v37 ) - { - std::string::_M_mutate((int)&Block, v131, 0, 0, 1u); - v22 = (int *)Block; - } - v38 = v107; - v106 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v120; - v131 = v38; - *((_BYTE *)Block + v38) = 0; -LABEL_122: - v32 = v121; - v33 = v121[2]; - v34 = v121[3]; - if ( v33 < v34 ) - goto LABEL_123; - goto LABEL_130; - } - v99 = 0; - v104 = *(_BYTE *)(v123 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v29 = 15; - if ( v22 != v132 ) - v29 = v132[0]; - if ( (unsigned int)lpuexcptd + 1 > v29 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v22 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v106; - v131 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v123 + 8), *(_DWORD *)(v123 + 12), (int)&Block) ) - *a6 = 4; - v22 = (int *)Block; - if ( v112 || v131 | v106 ) - goto LABEL_102; -LABEL_66: - *a7 = 0; - *a6 = 4; - } - else - { - if ( !v106 && !v112 ) - goto LABEL_66; -LABEL_102: - if ( v104 ) - goto LABEL_66; - if ( v102 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v39 = -v109; - if ( !v98 ) - v39 = v109; - *a7 = v39; - } - } - if ( v99 ) - *a6 |= 2u; - if ( v22 != v132 ) - operator delete(v22); - return v121; -} -// 46C0B7: variable 'v93' is possibly undefined -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (0046C5E0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // ebx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - unsigned int v20; // edx - unsigned int v21; // eax - int *v22; // eax - bool v24; // al - bool v25; // zf - _DWORD *v26; // eax - char *v27; // eax - char *v28; // eax - unsigned int v29; // edx - _BYTE *v30; // eax - int v31; // eax - _DWORD *v32; // ecx - unsigned int v33; // eax - unsigned int v34; // edx - unsigned int v35; // eax - char *v36; // eax - size_t v37; // edx - size_t v38; // edx - int v39; // edx - char *v40; // eax - char *v41; // eax - _DWORD *v42; // eax - int v43; // eax - bool v44; // dl - bool v45; // zf - _DWORD *v46; // eax - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // cl - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - bool v55; // zf - char v56; // bl - _DWORD *v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - _DWORD *v61; // eax - char v62; // bl - int v63; // eax - bool v64; // zf - _DWORD *v65; // eax - char v66; // bl - int v67; // eax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // zf - char v71; // al - _DWORD *v72; // eax - bool v73; // zf - _DWORD *v74; // eax - bool v75; // cl - char v76; // bl - int v77; // eax - bool v78; // dl - bool v79; // zf - _DWORD *v80; // eax - int v81; // eax - bool v82; // bl - bool v83; // zf - _DWORD *v84; // eax - int v85; // eax - char v86; // dl - bool v87; // zf - _DWORD *v88; // eax - int v89; // eax - bool v90; // dl - bool v91; // zf - _DWORD *v92; // eax - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+10h] [ebp-A8h] - bool v95; // [esp+14h] [ebp-A4h] - size_t MaxCount; // [esp+18h] [ebp-A0h] - unsigned int v97; // [esp+1Ch] [ebp-9Ch] - int Buf; // [esp+20h] [ebp-98h] - void *Bufa; // [esp+20h] [ebp-98h] - char v100; // [esp+27h] [ebp-91h] - unsigned int v101; // [esp+28h] [ebp-90h] - char v102; // [esp+2Ch] [ebp-8Ch] - char v103; // [esp+2Ch] [ebp-8Ch] - int v104; // [esp+30h] [ebp-88h] - char v105; // [esp+30h] [ebp-88h] - char v106; // [esp+34h] [ebp-84h] - int v107; // [esp+34h] [ebp-84h] - size_t v108; // [esp+34h] [ebp-84h] - char v109; // [esp+38h] [ebp-80h] - unsigned int v110; // [esp+38h] [ebp-80h] - _DWORD *v111; // [esp+3Ch] [ebp-7Ch] - char v112; // [esp+40h] [ebp-78h] - bool v113; // [esp+40h] [ebp-78h] - int *v114; // [esp+44h] [ebp-74h] - unsigned int v115; // [esp+44h] [ebp-74h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - char v118; // [esp+48h] [ebp-70h] - char v119; // [esp+48h] [ebp-70h] - char v120; // [esp+48h] [ebp-70h] - char v121; // [esp+48h] [ebp-70h] - _DWORD *v122; // [esp+4Ch] [ebp-6Ch] - bool v123; // [esp+50h] [ebp-68h] - int v124; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - char lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v132; // [esp+9Ch] [ebp-1Ch] - int v133[5]; // [esp+A0h] [ebp-18h] BYREF - - v122 = a1; - v111 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v114 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v124 = *v114; - if ( !*v114 ) - { - v42 = operator new(0x68u); - v42[1] = 0; - *v42 = &off_51AF60; - v42[2] = 0; - v42[3] = 0; - *((_BYTE *)v42 + 16) = 0; - v42[5] = 0; - v42[6] = 0; - v42[7] = 0; - v42[8] = 0; - *((_WORD *)v42 + 18) = 0; - *((_BYTE *)v42 + 100) = 0; - v94 = (std::locale::_Impl *)v42; - std::__numpunct_cache::_M_cache((int)v42, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v124 = *v114; - } - v115 = 8; - v104 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v104 != 64 ) - { - v7 = 10; - if ( v104 == 8 ) - v7 = 16; - v115 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v82 = lpuexcpta && a1 != 0; - v83 = v81 == -1; - if ( v81 != -1 ) - v82 = 0; - v84 = 0; - if ( !v83 ) - v84 = a1; - v106 = v82; - v122 = v84; - } - else - { - v106 = 0; - } - } - else - { - v106 = a2 == -1; - } - v123 = a4 == -1; - if ( v123 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v78 = v123 && a3 != 0; - v79 = v77 == -1; - if ( v77 != -1 ) - v78 = 0; - v80 = 0; - if ( !v79 ) - v80 = a3; - v102 = v78; - v111 = v80; - } - else - { - v102 = 0; - } - } - else - { - v102 = a4 == -1; - } - if ( v106 != v102 ) - { - if ( v122 && a2 == -1 ) - { - v41 = (char *)v122[2]; - if ( (unsigned int)v41 >= v122[3] ) - { - v85 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v86 = -1; - v87 = v85 == -1; - if ( v85 != -1 ) - v86 = v85; - v88 = 0; - if ( !v87 ) - v88 = v122; - lpuexcptb = v86; - v122 = v88; - } - else - { - lpuexcptb = *v41; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v124 + 16); - v95 = *(_BYTE *)(v124 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v124 + 74) == lpuexcptb || *(_BYTE *)(v124 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v124 + 37) != lpuexcptb) && *(_BYTE *)(v124 + 36) != lpuexcptb ) - { - v9 = v122[2]; - v10 = v122[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v11 = v122[2]; - v10 = v122[3]; - } - else - { - v11 = v9 + 1; - v122[2] = v11; - } - v112 = 0; - if ( v11 >= v10 ) - { - v52 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v53 = 0; - if ( !v52 ) - v53 = v122; - v112 = v52; - v122 = v53; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v89 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); - v90 = v123 && v111 != 0; - v91 = v89 == -1; - if ( v89 != -1 ) - v90 = 0; - v92 = 0; - if ( !v91 ) - v92 = v111; - v116 = v90; - v111 = v92; - } - else - { - v116 = 0; - } - } - else - { - v116 = a4 == -1; - } - if ( v112 == v116 ) - { - v105 = 1; - v107 = 0; - v113 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v122 ) - { - v40 = (char *)v122[2]; - if ( (unsigned int)v40 >= v122[3] ) - { - v62 = -1; - v63 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v64 = v63 == -1; - if ( v63 != -1 ) - v62 = v63; - v65 = 0; - if ( !v64 ) - v65 = v122; - lpuexcptb = v62; - v122 = v65; - } - else - { - lpuexcptb = *v40; - } - } - v8 = *(_BYTE *)(v124 + 16); - } - } - else - { - v95 = 0; - } - v107 = 0; - v113 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v124 + 37) == lpuexcptb || *(_BYTE *)(v124 + 36) == lpuexcptb ) - { -LABEL_111: - v105 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v124 + 78) != lpuexcptb ) - break; - v24 = v115 == 10 || !v113; - if ( !v24 ) - goto LABEL_33; - v113 = v104 == 0 || v115 == 8; - if ( !v113 ) - { - ++v107; - v113 = v24; - goto LABEL_37; - } - v12 = v122; - v115 = 8; - v107 = 0; - v13 = v122[2]; - v14 = v122[3]; - if ( v13 < v14 ) - { -LABEL_38: - v15 = v13 + 1; - v109 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v109 = 0; - if ( v122[2] < v122[3] ) - { -LABEL_39: - v117 = v123 && v111 != 0; - if ( !v117 ) - goto LABEL_40; - goto LABEL_79; - } -LABEL_76: - v25 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v26 = 0; - if ( !v25 ) - v26 = v122; - v109 = v25; - v122 = v26; - v117 = v123 && v111 != 0; - if ( !v117 ) - { -LABEL_40: - v118 = a4 == -1; - goto LABEL_41; - } -LABEL_79: - if ( v111[2] >= v111[3] ) - { - v43 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); - v44 = v117; - v45 = v43 == -1; - if ( v43 != -1 ) - v44 = 0; - v46 = 0; - if ( !v45 ) - v46 = v111; - v118 = v44; - v111 = v46; -LABEL_41: - if ( v109 == v118 ) - goto LABEL_42; - goto LABEL_81; - } - if ( !v109 ) - { -LABEL_42: - v105 = 1; - goto LABEL_43; - } -LABEL_81: - lpuexcptb = -1; - if ( v122 ) - { - v27 = (char *)v122[2]; - if ( (unsigned int)v27 >= v122[3] ) - { - v66 = -1; - v67 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v68 = v67 == -1; - if ( v67 != -1 ) - v66 = v67; - v69 = 0; - if ( !v68 ) - v69 = v122; - lpuexcptb = v66; - v122 = v69; - } - else - { - lpuexcptb = *v27; - } - } - if ( !v113 ) - { - v105 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v124 + 16); - } - if ( !v113 ) - goto LABEL_111; -LABEL_33: - if ( *(_BYTE *)(v124 + 76) != lpuexcptb && *(_BYTE *)(v124 + 77) != lpuexcptb ) - { - v105 = 0; - v113 = 1; - goto LABEL_43; - } - if ( v104 != 0 && v115 != 16 ) - { - v105 = 0; - MaxCount = v115; - Buf = v115; - v113 = 1; - goto LABEL_46; - } - v107 = 0; - v113 = 0; - v115 = 16; -LABEL_37: - v12 = v122; - v13 = v122[2]; - v14 = v122[3]; - if ( v13 < v14 ) - goto LABEL_38; - goto LABEL_75; - } - v95 = 0; - v105 = 1; - lpuexcptb = 0; - v107 = 0; - v113 = 0; -LABEL_43: - v16 = 22; - if ( v115 != 16 ) - v16 = v115; - MaxCount = v16; - Buf = v16; -LABEL_46: - v132 = 0; - Block = v133; - LOBYTE(v133[0]) = 0; - if ( *(_BYTE *)(v124 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = v95 + 0x7FFFFFFF; - v101 = v97 / v115; - v100 = *(_BYTE *)(v124 + 100); - if ( !v100 ) - { - if ( v105 ) - { - v76 = v105; - v103 = 0; - v105 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - v100 = v76; - v110 = 0; - goto LABEL_63; - } - v103 = 0; - v110 = 0; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_110; - v17 = lpuexcptb - 55; - goto LABEL_55; - } - v17 = lpuexcptb - 87; - if ( v101 < v110 ) - { -LABEL_56: - v18 = v122; - v103 = 1; - v19 = v122[2]; - v20 = v122[3]; - if ( v19 < v20 ) - goto LABEL_57; - goto LABEL_90; - } -LABEL_89: - v103 |= v97 - v17 < v115 * v110; - v18 = v122; - v110 = v115 * v110 + v17; - v20 = v122[3]; - v19 = v122[2]; - ++v107; - if ( v19 < v20 ) - { -LABEL_57: - v21 = v19 + 1; - v18[2] = v21; - goto LABEL_58; - } -LABEL_90: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v21 = v122[2]; - v20 = v122[3]; -LABEL_58: - v119 = 0; - if ( v21 >= v20 ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v48 = 0; - if ( !v47 ) - v48 = v122; - v119 = v47; - v122 = v48; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; - v50 = 0; - if ( !v49 ) - v50 = v111; - v51 = v123 && v111 != 0; - v111 = v50; - if ( !v49 ) - v51 = 0; - lpuexcptc = v51; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v119 ) - { - v100 = 1; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v122 ) - { - v28 = (char *)v122[2]; - if ( (unsigned int)v28 >= v122[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v55 = v54 == -1; - v56 = -1; - if ( v54 != -1 ) - v56 = v54; - v57 = 0; - if ( !v55 ) - v57 = v122; - lpuexcptb = v56; - v122 = v57; - } - else - { - lpuexcptb = *v28; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_110; -LABEL_54: - v17 = lpuexcptb - 48; -LABEL_55: - if ( v101 < v110 ) - goto LABEL_56; - goto LABEL_89; - } - if ( v105 ) - { - v110 = 0; - v103 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - v100 = v105; - v105 = 0; - goto LABEL_63; - } - v103 = 0; - v110 = 0; - Bufa = (void *)(v124 + 78); - while ( !*(_BYTE *)(v124 + 16) || *(_BYTE *)(v124 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v124 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_110: - v100 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - v31 = v30 - (_BYTE *)Bufa; - if ( v31 > 15 ) - v31 -= 6; - if ( v101 >= v110 ) - { - v103 |= v97 - v31 < v115 * v110; - ++v107; - v110 = v115 * v110 + v31; - goto LABEL_122; - } - v32 = v122; - v103 = v100; - v34 = v122[3]; - v33 = v122[2]; - if ( v33 < v34 ) - { -LABEL_123: - v35 = v33 + 1; - v32[2] = v35; - goto LABEL_124; - } -LABEL_130: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v35 = v122[2]; - v34 = v122[3]; -LABEL_124: - v120 = 0; - if ( v34 <= v35 ) - { - v70 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v71 = 0; - if ( v70 ) - v71 = v100; - v120 = v71; - v72 = 0; - if ( !v70 ) - v72 = v122; - v122 = v72; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; - v74 = 0; - if ( !v73 ) - v74 = v111; - v75 = v123 && v111 != 0; - v111 = v74; - if ( !v73 ) - v75 = 0; - lpuexcpte = v75; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v120 ) - { - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v122 ) - { - v36 = (char *)v122[2]; - if ( (unsigned int)v36 >= v122[3] ) - { - v58 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v59 = v58 == -1; - v60 = -1; - if ( v58 != -1 ) - v60 = v58; - v61 = 0; - if ( !v59 ) - v61 = v122; - lpuexcptb = v60; - v122 = v61; - } - else - { - lpuexcptb = *v36; - } - } - else - { - lpuexcptb = -1; - } - } - v22 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v132; - if ( v107 ) - { - v121 = v107; - v37 = 15; - if ( Block != v133 ) - v37 = v133[0]; - v108 = v132 + 1; - if ( v132 + 1 > v37 ) - { - std::string::_M_mutate((int)&Block, v132, 0, 0, 1u); - v22 = (int *)Block; - } - v38 = v108; - v107 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v121; - v132 = v38; - *((_BYTE *)Block + v38) = 0; -LABEL_122: - v32 = v122; - v33 = v122[2]; - v34 = v122[3]; - if ( v33 < v34 ) - goto LABEL_123; - goto LABEL_130; - } - v100 = 0; - v105 = *(_BYTE *)(v124 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v29 = 15; - if ( v22 != v133 ) - v29 = v133[0]; - if ( (unsigned int)lpuexcptd + 1 > v29 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v22 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v107; - v132 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v124 + 8), *(_DWORD *)(v124 + 12), (int)&Block) ) - *a6 = 4; - v22 = (int *)Block; - if ( v113 || v132 | v107 ) - goto LABEL_102; -LABEL_66: - *a7 = 0; - *a6 = 4; - } - else - { - if ( !v107 && !v113 ) - goto LABEL_66; -LABEL_102: - if ( v105 ) - goto LABEL_66; - if ( v103 ) - { - *a7 = v95 + 0x7FFFFFFF; - *a6 = 4; - } - else - { - v39 = -v110; - if ( !v95 ) - v39 = v110; - *a7 = v39; - } - } - if ( v100 ) - *a6 |= 2u; - if ( v22 != v133 ) - operator delete(v22); - return v122; -} -// 46D0F5: variable 'v93' is possibly undefined -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (0046D620) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // ebx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - unsigned int v20; // edx - unsigned int v21; // eax - int *v22; // eax - bool v24; // al - bool v25; // zf - _DWORD *v26; // eax - char *v27; // eax - char *v28; // eax - unsigned int v29; // edx - _BYTE *v30; // eax - int v31; // eax - _DWORD *v32; // ecx - unsigned int v33; // eax - unsigned int v34; // edx - unsigned int v35; // eax - char *v36; // eax - size_t v37; // edx - size_t v38; // edx - int v39; // edx - char *v40; // eax - char *v41; // eax - _DWORD *v42; // eax - int v43; // eax - bool v44; // bl - bool v45; // zf - _DWORD *v46; // eax - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // dl - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - bool v55; // zf - char v56; // bl - _DWORD *v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - _DWORD *v61; // eax - char v62; // bl - int v63; // eax - bool v64; // zf - _DWORD *v65; // eax - char v66; // bl - int v67; // eax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // zf - char v71; // al - _DWORD *v72; // eax - bool v73; // zf - _DWORD *v74; // eax - bool v75; // cl - char v76; // bl - int v77; // eax - bool v78; // dl - bool v79; // zf - _DWORD *v80; // eax - int v81; // eax - bool v82; // bl - bool v83; // zf - _DWORD *v84; // eax - int v85; // eax - char v86; // dl - bool v87; // zf - _DWORD *v88; // eax - int v89; // eax - bool v90; // dl - bool v91; // zf - _DWORD *v92; // eax - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+18h] [ebp-A0h] - size_t MaxCount; // [esp+1Ch] [ebp-9Ch] - int Buf; // [esp+20h] [ebp-98h] - void *Bufa; // [esp+20h] [ebp-98h] - bool v98; // [esp+26h] [ebp-92h] - char v99; // [esp+27h] [ebp-91h] - unsigned int v100; // [esp+28h] [ebp-90h] - char v101; // [esp+2Ch] [ebp-8Ch] - char v102; // [esp+2Ch] [ebp-8Ch] - int v103; // [esp+30h] [ebp-88h] - char v104; // [esp+30h] [ebp-88h] - char v105; // [esp+34h] [ebp-84h] - int v106; // [esp+34h] [ebp-84h] - size_t v107; // [esp+34h] [ebp-84h] - char v108; // [esp+38h] [ebp-80h] - unsigned int v109; // [esp+38h] [ebp-80h] - _DWORD *v110; // [esp+3Ch] [ebp-7Ch] - char v111; // [esp+40h] [ebp-78h] - bool v112; // [esp+40h] [ebp-78h] - int *v113; // [esp+44h] [ebp-74h] - unsigned int v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - bool v116; // [esp+48h] [ebp-70h] - char v117; // [esp+48h] [ebp-70h] - char v118; // [esp+48h] [ebp-70h] - char v119; // [esp+48h] [ebp-70h] - char v120; // [esp+48h] [ebp-70h] - _DWORD *v121; // [esp+4Ch] [ebp-6Ch] - bool v122; // [esp+50h] [ebp-68h] - int v123; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - char lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v131; // [esp+9Ch] [ebp-1Ch] - int v132[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v110 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v113 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v123 = *v113; - if ( !*v113 ) - { - v42 = operator new(0x68u); - v42[1] = 0; - *v42 = &off_51AF60; - v42[2] = 0; - v42[3] = 0; - *((_BYTE *)v42 + 16) = 0; - v42[5] = 0; - v42[6] = 0; - v42[7] = 0; - v42[8] = 0; - *((_WORD *)v42 + 18) = 0; - *((_BYTE *)v42 + 100) = 0; - v94 = (std::locale::_Impl *)v42; - std::__numpunct_cache::_M_cache((int)v42, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v123 = *v113; - } - v114 = 8; - v103 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v103 != 64 ) - { - v7 = 10; - if ( v103 == 8 ) - v7 = 16; - v114 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v82 = lpuexcpta && a1 != 0; - v83 = v81 == -1; - if ( v81 != -1 ) - v82 = 0; - v84 = 0; - if ( !v83 ) - v84 = a1; - v105 = v82; - v121 = v84; - } - else - { - v105 = 0; - } - } - else - { - v105 = a2 == -1; - } - v122 = a4 == -1; - if ( v122 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v78 = v122 && a3 != 0; - v79 = v77 == -1; - if ( v77 != -1 ) - v78 = 0; - v80 = 0; - if ( !v79 ) - v80 = a3; - v101 = v78; - v110 = v80; - } - else - { - v101 = 0; - } - } - else - { - v101 = a4 == -1; - } - if ( v105 != v101 ) - { - if ( v121 && a2 == -1 ) - { - v41 = (char *)v121[2]; - if ( (unsigned int)v41 >= v121[3] ) - { - v85 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v86 = -1; - v87 = v85 == -1; - if ( v85 != -1 ) - v86 = v85; - v88 = 0; - if ( !v87 ) - v88 = v121; - lpuexcptb = v86; - v121 = v88; - } - else - { - lpuexcptb = *v41; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v123 + 16); - v98 = *(_BYTE *)(v123 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v123 + 74) == lpuexcptb || *(_BYTE *)(v123 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v123 + 37) != lpuexcptb) && *(_BYTE *)(v123 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = v121[2]; - v10 = v121[3]; - } - else - { - v11 = v9 + 1; - v121[2] = v11; - } - v111 = 0; - if ( v11 >= v10 ) - { - v52 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v53 = 0; - if ( !v52 ) - v53 = v121; - v111 = v52; - v121 = v53; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v89 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); - v90 = v122 && v110 != 0; - v91 = v89 == -1; - if ( v89 != -1 ) - v90 = 0; - v92 = 0; - if ( !v91 ) - v92 = v110; - v115 = v90; - v110 = v92; - } - else - { - v115 = 0; - } - } - else - { - v115 = a4 == -1; - } - if ( v111 == v115 ) - { - v104 = 1; - v106 = 0; - v112 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v121 ) - { - v40 = (char *)v121[2]; - if ( (unsigned int)v40 >= v121[3] ) - { - v62 = -1; - v63 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v64 = v63 == -1; - if ( v63 != -1 ) - v62 = v63; - v65 = 0; - if ( !v64 ) - v65 = v121; - lpuexcptb = v62; - v121 = v65; - } - else - { - lpuexcptb = *v40; - } - } - v8 = *(_BYTE *)(v123 + 16); - } - } - else - { - v98 = 0; - } - v106 = 0; - v112 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v123 + 37) == lpuexcptb || *(_BYTE *)(v123 + 36) == lpuexcptb ) - { -LABEL_111: - v104 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v123 + 78) != lpuexcptb ) - break; - v24 = v114 == 10 || !v112; - if ( !v24 ) - goto LABEL_33; - v112 = v103 == 0 || v114 == 8; - if ( !v112 ) - { - ++v106; - v112 = v24; - goto LABEL_37; - } - v12 = v121; - v114 = 8; - v106 = 0; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 < v14 ) - { -LABEL_38: - v15 = v13 + 1; - v108 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v108 = 0; - if ( v121[2] < v121[3] ) - { -LABEL_39: - v116 = v122 && v110 != 0; - if ( !v116 ) - goto LABEL_40; - goto LABEL_79; - } -LABEL_76: - v25 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v26 = 0; - if ( !v25 ) - v26 = v121; - v108 = v25; - v121 = v26; - v116 = v122 && v110 != 0; - if ( !v116 ) - { -LABEL_40: - v117 = a4 == -1; - goto LABEL_41; - } -LABEL_79: - if ( v110[2] >= v110[3] ) - { - v43 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110); - v44 = v116; - v45 = v43 == -1; - if ( v43 != -1 ) - v44 = 0; - v46 = 0; - if ( !v45 ) - v46 = v110; - v117 = v44; - v110 = v46; -LABEL_41: - if ( v108 == v117 ) - goto LABEL_42; - goto LABEL_81; - } - if ( !v108 ) - { -LABEL_42: - v104 = 1; - goto LABEL_43; - } -LABEL_81: - lpuexcptb = -1; - if ( v121 ) - { - v27 = (char *)v121[2]; - if ( (unsigned int)v27 >= v121[3] ) - { - v66 = -1; - v67 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v68 = v67 == -1; - if ( v67 != -1 ) - v66 = v67; - v69 = 0; - if ( !v68 ) - v69 = v121; - lpuexcptb = v66; - v121 = v69; - } - else - { - lpuexcptb = *v27; - } - } - if ( !v112 ) - { - v104 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v123 + 16); - } - if ( !v112 ) - goto LABEL_111; -LABEL_33: - if ( *(_BYTE *)(v123 + 76) != lpuexcptb && *(_BYTE *)(v123 + 77) != lpuexcptb ) - { - v104 = 0; - v112 = 1; - goto LABEL_43; - } - if ( v103 != 0 && v114 != 16 ) - { - v104 = 0; - MaxCount = v114; - Buf = v114; - v112 = 1; - goto LABEL_46; - } - v106 = 0; - v112 = 0; - v114 = 16; -LABEL_37: - v12 = v121; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 < v14 ) - goto LABEL_38; - goto LABEL_75; - } - v98 = 0; - v104 = 1; - lpuexcptb = 0; - v106 = 0; - v112 = 0; -LABEL_43: - v16 = 22; - if ( v114 != 16 ) - v16 = v114; - MaxCount = v16; - Buf = v16; -LABEL_46: - v131 = 0; - Block = v132; - LOBYTE(v132[0]) = 0; - if ( *(_BYTE *)(v123 + 16) ) - std::string::reserve(&Block, 0x20u); - v100 = 0xFFFFFFFF / v114; - v99 = *(_BYTE *)(v123 + 100); - if ( !v99 ) - { - if ( v104 ) - { - v76 = v104; - v102 = 0; - v104 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - v99 = v76; - v109 = 0; - goto LABEL_63; - } - v102 = 0; - v109 = 0; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_110; - v17 = lpuexcptb - 55; - goto LABEL_55; - } - v17 = lpuexcptb - 87; - if ( v100 < v109 ) - { -LABEL_56: - v18 = v121; - v102 = 1; - v19 = v121[2]; - v20 = v121[3]; - if ( v19 < v20 ) - goto LABEL_57; - goto LABEL_90; - } -LABEL_89: - v102 |= ~v17 < v114 * v109; - v18 = v121; - v109 = v114 * v109 + v17; - v20 = v121[3]; - v19 = v121[2]; - ++v106; - if ( v19 < v20 ) - { -LABEL_57: - v21 = v19 + 1; - v18[2] = v21; - goto LABEL_58; - } -LABEL_90: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v21 = v121[2]; - v20 = v121[3]; -LABEL_58: - v118 = 0; - if ( v21 >= v20 ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v48 = 0; - if ( !v47 ) - v48 = v121; - v118 = v47; - v121 = v48; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; - v50 = 0; - if ( !v49 ) - v50 = v110; - v51 = v122 && v110 != 0; - v110 = v50; - if ( !v49 ) - v51 = 0; - lpuexcptc = v51; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v118 ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v121 ) - { - v28 = (char *)v121[2]; - if ( (unsigned int)v28 >= v121[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v55 = v54 == -1; - v56 = -1; - if ( v54 != -1 ) - v56 = v54; - v57 = 0; - if ( !v55 ) - v57 = v121; - lpuexcptb = v56; - v121 = v57; - } - else - { - lpuexcptb = *v28; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_110; -LABEL_54: - v17 = lpuexcptb - 48; -LABEL_55: - if ( v100 < v109 ) - goto LABEL_56; - goto LABEL_89; - } - if ( v104 ) - { - v109 = 0; - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - v99 = v104; - v104 = 0; - goto LABEL_63; - } - v102 = 0; - v109 = 0; - Bufa = (void *)(v123 + 78); - while ( !*(_BYTE *)(v123 + 16) || *(_BYTE *)(v123 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v123 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_110: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - v31 = v30 - (_BYTE *)Bufa; - if ( v31 > 15 ) - v31 -= 6; - if ( v100 >= v109 ) - { - v102 |= ~v31 < v114 * v109; - ++v106; - v109 = v114 * v109 + v31; - goto LABEL_122; - } - v32 = v121; - v102 = v99; - v34 = v121[3]; - v33 = v121[2]; - if ( v33 < v34 ) - { -LABEL_123: - v35 = v33 + 1; - v32[2] = v35; - goto LABEL_124; - } -LABEL_130: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v35 = v121[2]; - v34 = v121[3]; -LABEL_124: - v119 = 0; - if ( v34 <= v35 ) - { - v70 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v71 = 0; - if ( v70 ) - v71 = v99; - v119 = v71; - v72 = 0; - if ( !v70 ) - v72 = v121; - v121 = v72; - } - if ( v122 && v110 != 0 ) - { - if ( v110[2] >= v110[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*v110 + 36))(v110) == -1; - v74 = 0; - if ( !v73 ) - v74 = v110; - v75 = v122 && v110 != 0; - v110 = v74; - if ( !v73 ) - v75 = 0; - lpuexcpte = v75; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v119 ) - { - lpuexcptd = (struct _Unwind_Exception *)v131; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v121 ) - { - v36 = (char *)v121[2]; - if ( (unsigned int)v36 >= v121[3] ) - { - v58 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v59 = v58 == -1; - v60 = -1; - if ( v58 != -1 ) - v60 = v58; - v61 = 0; - if ( !v59 ) - v61 = v121; - lpuexcptb = v60; - v121 = v61; - } - else - { - lpuexcptb = *v36; - } - } - else - { - lpuexcptb = -1; - } - } - v22 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v131; - if ( v106 ) - { - v120 = v106; - v37 = 15; - if ( Block != v132 ) - v37 = v132[0]; - v107 = v131 + 1; - if ( v131 + 1 > v37 ) - { - std::string::_M_mutate((int)&Block, v131, 0, 0, 1u); - v22 = (int *)Block; - } - v38 = v107; - v106 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v120; - v131 = v38; - *((_BYTE *)Block + v38) = 0; -LABEL_122: - v32 = v121; - v33 = v121[2]; - v34 = v121[3]; - if ( v33 < v34 ) - goto LABEL_123; - goto LABEL_130; - } - v99 = 0; - v104 = *(_BYTE *)(v123 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v29 = 15; - if ( v22 != v132 ) - v29 = v132[0]; - if ( (unsigned int)lpuexcptd + 1 > v29 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v22 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v106; - v131 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v123 + 8), *(_DWORD *)(v123 + 12), (int)&Block) ) - *a6 = 4; - v22 = (int *)Block; - if ( v112 || v131 | v106 ) - goto LABEL_102; -LABEL_66: - *a7 = 0; - *a6 = 4; - } - else - { - if ( !v106 && !v112 ) - goto LABEL_66; -LABEL_102: - if ( v104 ) - goto LABEL_66; - if ( v102 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v39 = -v109; - if ( !v98 ) - v39 = v109; - *a7 = v39; - } - } - if ( v99 ) - *a6 |= 2u; - if ( v22 != v132 ) - operator delete(v22); - return v121; -} -// 46E127: variable 'v93' is possibly undefined -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (0046E650) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _WORD *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // ebx - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - unsigned int v20; // edx - unsigned int v21; // eax - int *v22; // eax - bool v24; // al - bool v25; // zf - _DWORD *v26; // eax - char *v27; // eax - char *v28; // eax - unsigned int v29; // edx - _BYTE *v30; // eax - int v31; // eax - int v32; // ebx - _DWORD *v33; // ecx - unsigned int v34; // eax - unsigned int v35; // edx - unsigned int v36; // eax - char *v37; // eax - size_t v38; // ebx - unsigned int v39; // edx - int v40; // edx - char *v41; // eax - char *v42; // eax - _DWORD *v43; // eax - int v44; // eax - bool v45; // bl - bool v46; // zf - _DWORD *v47; // eax - bool v48; // zf - _DWORD *v49; // eax - bool v50; // zf - _DWORD *v51; // eax - bool v52; // cl - bool v53; // zf - _DWORD *v54; // eax - int v55; // eax - bool v56; // zf - char v57; // dl - _DWORD *v58; // eax - int v59; // eax - bool v60; // zf - char v61; // dl - _DWORD *v62; // eax - int v63; // eax - char v64; // dl - bool v65; // zf - _DWORD *v66; // eax - char v67; // bl - int v68; // eax - bool v69; // zf - _DWORD *v70; // eax - bool v71; // zf - char v72; // al - _DWORD *v73; // eax - bool v74; // zf - _DWORD *v75; // eax - bool v76; // dl - char v77; // bl - int v78; // eax - bool v79; // bl - bool v80; // zf - _DWORD *v81; // eax - int v82; // eax - bool v83; // dl - bool v84; // zf - _DWORD *v85; // eax - char v86; // bl - int v87; // eax - char v88; // dl - bool v89; // zf - _DWORD *v90; // eax - int v91; // eax - bool v92; // bl - bool v93; // zf - _DWORD *v94; // eax - unsigned int v95; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v96; // [esp+18h] [ebp-A0h] - size_t MaxCount; // [esp+1Ch] [ebp-9Ch] - int Buf; // [esp+20h] [ebp-98h] - void *Bufa; // [esp+20h] [ebp-98h] - bool v100; // [esp+26h] [ebp-92h] - char v101; // [esp+27h] [ebp-91h] - int v102; // [esp+28h] [ebp-90h] - char v103; // [esp+2Ch] [ebp-8Ch] - char v104; // [esp+2Ch] [ebp-8Ch] - int v105; // [esp+30h] [ebp-88h] - char v106; // [esp+30h] [ebp-88h] - char v107; // [esp+34h] [ebp-84h] - int v108; // [esp+34h] [ebp-84h] - char v109; // [esp+38h] [ebp-80h] - unsigned __int16 v110; // [esp+38h] [ebp-80h] - _DWORD *v111; // [esp+3Ch] [ebp-7Ch] - char v112; // [esp+40h] [ebp-78h] - bool v113; // [esp+40h] [ebp-78h] - int *v114; // [esp+44h] [ebp-74h] - int v115; // [esp+44h] [ebp-74h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - char v118; // [esp+48h] [ebp-70h] - char v119; // [esp+48h] [ebp-70h] - char v120; // [esp+48h] [ebp-70h] - char v121; // [esp+48h] [ebp-70h] - _DWORD *v122; // [esp+4Ch] [ebp-6Ch] - bool v123; // [esp+50h] [ebp-68h] - int v124; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - char lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v132; // [esp+9Ch] [ebp-1Ch] - int v133[5]; // [esp+A0h] [ebp-18h] BYREF - - v122 = a1; - v111 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v114 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v124 = *v114; - if ( !*v114 ) - { - v43 = operator new(0x68u); - v43[1] = 0; - *v43 = &off_51AF60; - v43[2] = 0; - v43[3] = 0; - *((_BYTE *)v43 + 16) = 0; - v43[5] = 0; - v43[6] = 0; - v43[7] = 0; - v43[8] = 0; - *((_WORD *)v43 + 18) = 0; - *((_BYTE *)v43 + 100) = 0; - v96 = (std::locale::_Impl *)v43; - std::__numpunct_cache::_M_cache((int)v43, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, lpuexcpt, v95); - v124 = *v114; - } - v115 = 8; - v105 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v105 != 64 ) - { - v7 = 10; - if ( v105 == 8 ) - v7 = 16; - v115 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v82 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v83 = lpuexcpta && a1 != 0; - v84 = v82 == -1; - if ( v82 != -1 ) - v83 = 0; - v85 = 0; - if ( !v84 ) - v85 = a1; - v107 = v83; - v122 = v85; - } - else - { - v107 = 0; - } - } - else - { - v107 = a2 == -1; - } - v123 = a4 == -1; - if ( v123 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v78 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v79 = v123 && a3 != 0; - v80 = v78 == -1; - if ( v78 != -1 ) - v79 = 0; - v81 = 0; - if ( !v80 ) - v81 = a3; - v103 = v79; - v111 = v81; - } - else - { - v103 = 0; - } - } - else - { - v103 = a4 == -1; - } - if ( v107 != v103 ) - { - if ( v122 && a2 == -1 ) - { - v42 = (char *)v122[2]; - if ( (unsigned int)v42 >= v122[3] ) - { - v87 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v88 = -1; - v89 = v87 == -1; - if ( v87 != -1 ) - v88 = v87; - v90 = 0; - if ( !v89 ) - v90 = v122; - lpuexcptb = v88; - v122 = v90; - } - else - { - lpuexcptb = *v42; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v124 + 16); - v100 = *(_BYTE *)(v124 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v124 + 74) == lpuexcptb || *(_BYTE *)(v124 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v124 + 37) != lpuexcptb) && *(_BYTE *)(v124 + 36) != lpuexcptb ) - { - v9 = v122[2]; - v10 = v122[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v11 = v122[2]; - v10 = v122[3]; - } - else - { - v11 = v9 + 1; - v122[2] = v11; - } - v112 = 0; - if ( v11 >= v10 ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v54 = 0; - if ( !v53 ) - v54 = v122; - v112 = v53; - v122 = v54; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v91 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); - v92 = v123 && v111 != 0; - v93 = v91 == -1; - if ( v91 != -1 ) - v92 = 0; - v94 = 0; - if ( !v93 ) - v94 = v111; - v116 = v92; - v111 = v94; - } - else - { - v116 = 0; - } - } - else - { - v116 = a4 == -1; - } - if ( v112 == v116 ) - { - v106 = 1; - v108 = 0; - v113 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v122 ) - { - v41 = (char *)v122[2]; - if ( (unsigned int)v41 >= v122[3] ) - { - v63 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v64 = -1; - v65 = v63 == -1; - if ( v63 != -1 ) - v64 = v63; - v66 = 0; - if ( !v65 ) - v66 = v122; - lpuexcptb = v64; - v122 = v66; - } - else - { - lpuexcptb = *v41; - } - } - v8 = *(_BYTE *)(v124 + 16); - } - } - else - { - v100 = 0; - } - v108 = 0; - v113 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v124 + 37) == lpuexcptb || *(_BYTE *)(v124 + 36) == lpuexcptb ) - { -LABEL_111: - v106 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v124 + 78) != lpuexcptb ) - break; - v24 = v115 == 10 || !v113; - if ( !v24 ) - goto LABEL_33; - v113 = v105 == 0 || v115 == 8; - if ( !v113 ) - { - ++v108; - v113 = v24; - goto LABEL_37; - } - v12 = v122; - v115 = 8; - v108 = 0; - v13 = v122[2]; - v14 = v122[3]; - if ( v13 < v14 ) - { -LABEL_38: - v15 = v13 + 1; - v109 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v109 = 0; - if ( v122[2] < v122[3] ) - { -LABEL_39: - v117 = v123 && v111 != 0; - if ( !v117 ) - goto LABEL_40; - goto LABEL_79; - } -LABEL_76: - v25 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v26 = 0; - if ( !v25 ) - v26 = v122; - v109 = v25; - v122 = v26; - v117 = v123 && v111 != 0; - if ( !v117 ) - { -LABEL_40: - v118 = a4 == -1; - goto LABEL_41; - } -LABEL_79: - if ( v111[2] >= v111[3] ) - { - v44 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111); - v45 = v117; - v46 = v44 == -1; - if ( v44 != -1 ) - v45 = 0; - v47 = 0; - if ( !v46 ) - v47 = v111; - v118 = v45; - v111 = v47; -LABEL_41: - if ( v109 == v118 ) - goto LABEL_42; - goto LABEL_81; - } - if ( !v109 ) - { -LABEL_42: - v106 = 1; - goto LABEL_43; - } -LABEL_81: - lpuexcptb = -1; - if ( v122 ) - { - v27 = (char *)v122[2]; - if ( (unsigned int)v27 >= v122[3] ) - { - v67 = -1; - v68 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v69 = v68 == -1; - if ( v68 != -1 ) - v67 = v68; - v70 = 0; - if ( !v69 ) - v70 = v122; - lpuexcptb = v67; - v122 = v70; - } - else - { - lpuexcptb = *v27; - } - } - if ( !v113 ) - { - v106 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v124 + 16); - } - if ( !v113 ) - goto LABEL_111; -LABEL_33: - if ( *(_BYTE *)(v124 + 76) != lpuexcptb && *(_BYTE *)(v124 + 77) != lpuexcptb ) - { - v106 = 0; - v113 = 1; - goto LABEL_43; - } - if ( v105 != 0 && v115 != 16 ) - { - v106 = 0; - MaxCount = v115; - Buf = v115; - v113 = 1; - goto LABEL_46; - } - v108 = 0; - v113 = 0; - v115 = 16; -LABEL_37: - v12 = v122; - v13 = v122[2]; - v14 = v122[3]; - if ( v13 < v14 ) - goto LABEL_38; - goto LABEL_75; - } - v100 = 0; - v106 = 1; - lpuexcptb = 0; - v108 = 0; - v113 = 0; -LABEL_43: - v16 = 22; - if ( v115 != 16 ) - v16 = v115; - MaxCount = v16; - Buf = v16; -LABEL_46: - v132 = 0; - Block = v133; - LOBYTE(v133[0]) = 0; - if ( *(_BYTE *)(v124 + 16) ) - std::string::reserve(&Block, 0x20u); - v102 = 0xFFFF / v115; - v101 = *(_BYTE *)(v124 + 100); - if ( !v101 ) - { - if ( v106 ) - { - v77 = v106; - v104 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - v101 = v77; - v110 = 0; - goto LABEL_63; - } - v104 = 0; - v110 = 0; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_110; - v17 = lpuexcptb - 55; - goto LABEL_55; - } - v17 = lpuexcptb - 87; - if ( (unsigned __int16)v102 < v110 ) - { -LABEL_56: - v18 = v122; - v104 = 1; - v19 = v122[2]; - v20 = v122[3]; - if ( v19 < v20 ) - goto LABEL_57; - goto LABEL_90; - } -LABEL_89: - v104 |= (unsigned __int16)(v115 * v110) > 0xFFFF - v17; - v18 = v122; - v110 = v115 * v110 + v17; - v20 = v122[3]; - v19 = v122[2]; - ++v108; - if ( v19 < v20 ) - { -LABEL_57: - v21 = v19 + 1; - v18[2] = v21; - goto LABEL_58; - } -LABEL_90: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v21 = v122[2]; - v20 = v122[3]; -LABEL_58: - v119 = 0; - if ( v21 >= v20 ) - { - v48 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v49 = 0; - if ( !v48 ) - v49 = v122; - v119 = v48; - v122 = v49; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v50 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; - v51 = 0; - if ( !v50 ) - v51 = v111; - v52 = v123 && v111 != 0; - v111 = v51; - if ( !v50 ) - v52 = 0; - lpuexcptc = v52; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v119 ) - { - v101 = 1; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v122 ) - { - v28 = (char *)v122[2]; - if ( (unsigned int)v28 >= v122[3] ) - { - v55 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v56 = v55 == -1; - v57 = -1; - if ( v55 != -1 ) - v57 = v55; - v58 = 0; - if ( !v56 ) - v58 = v122; - lpuexcptb = v57; - v122 = v58; - } - else - { - lpuexcptb = *v28; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_110; -LABEL_54: - v17 = lpuexcptb - 48; -LABEL_55: - if ( (unsigned __int16)v102 < v110 ) - goto LABEL_56; - goto LABEL_89; - } - if ( v106 ) - { - v86 = v106; - v104 = 0; - v106 = 0; - v101 = v86; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - v110 = 0; - goto LABEL_63; - } - v104 = 0; - Bufa = (void *)(v124 + 78); - v110 = 0; - while ( !*(_BYTE *)(v124 + 16) || *(_BYTE *)(v124 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v124 + 36) || (v30 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_110: - v101 = 0; - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - v31 = v30 - (_BYTE *)Bufa; - if ( v31 > 15 ) - v31 -= 6; - if ( (unsigned __int16)v102 >= v110 ) - { - v32 = (unsigned __int16)(v115 * v110); - v104 |= v32 > 0xFFFF - v31; - ++v108; - v110 = v32 + v31; - goto LABEL_122; - } - v33 = v122; - v104 = v101; - v35 = v122[3]; - v34 = v122[2]; - if ( v34 < v35 ) - { -LABEL_123: - v36 = v34 + 1; - v33[2] = v36; - goto LABEL_124; - } -LABEL_130: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v36 = v122[2]; - v35 = v122[3]; -LABEL_124: - v120 = 0; - if ( v35 <= v36 ) - { - v71 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122) == -1; - v72 = 0; - if ( v71 ) - v72 = v101; - v120 = v72; - v73 = 0; - if ( !v71 ) - v73 = v122; - v122 = v73; - } - if ( v123 && v111 != 0 ) - { - if ( v111[2] >= v111[3] ) - { - v74 = (*(int (__fastcall **)(_DWORD *))(*v111 + 36))(v111) == -1; - v75 = 0; - if ( !v74 ) - v75 = v111; - v76 = v123 && v111 != 0; - v111 = v75; - if ( !v74 ) - v76 = 0; - lpuexcpte = v76; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v120 ) - { - lpuexcptd = (struct _Unwind_Exception *)v132; - v22 = (int *)Block; - goto LABEL_63; - } - if ( v122 ) - { - v37 = (char *)v122[2]; - if ( (unsigned int)v37 >= v122[3] ) - { - v59 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - v60 = v59 == -1; - v61 = -1; - if ( v59 != -1 ) - v61 = v59; - v62 = 0; - if ( !v60 ) - v62 = v122; - lpuexcptb = v61; - v122 = v62; - } - else - { - lpuexcptb = *v37; - } - } - else - { - lpuexcptb = -1; - } - } - v22 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v132; - if ( v108 ) - { - v121 = v108; - v39 = 15; - if ( Block != v133 ) - v39 = v133[0]; - v38 = v132 + 1; - if ( v132 + 1 > v39 ) - { - std::string::_M_mutate((int)&Block, v132, 0, 0, 1u); - v22 = (int *)Block; - } - v108 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v121; - v132 = v38; - *((_BYTE *)Block + v38) = 0; -LABEL_122: - v33 = v122; - v34 = v122[2]; - v35 = v122[3]; - if ( v34 < v35 ) - goto LABEL_123; - goto LABEL_130; - } - v101 = 0; - v106 = *(_BYTE *)(v124 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v29 = 15; - if ( v22 != v133 ) - v29 = v133[0]; - if ( (unsigned int)lpuexcptd + 1 > v29 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v22 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v22) = v108; - v132 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v124 + 8), *(_DWORD *)(v124 + 12), (int)&Block) ) - *a6 = 4; - v22 = (int *)Block; - if ( v113 || v132 | v108 ) - goto LABEL_102; -LABEL_66: - *a7 = 0; - *a6 = 4; - } - else - { - if ( !v108 && !v113 ) - goto LABEL_66; -LABEL_102: - if ( v106 ) - goto LABEL_66; - if ( v104 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v40 = -v110; - if ( !v100 ) - LOWORD(v40) = v110; - *a7 = v40; - } - } - if ( v101 ) - *a6 |= 2u; - if ( v22 != v133 ) - operator delete(v22); - return v122; -} -// 46F165: variable 'v95' is possibly undefined -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (0046F690) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // edi - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - unsigned __int64 v17; // kr00_8 - int v18; // esi - _DWORD *v19; // ecx - unsigned int v20; // eax - unsigned int v21; // edx - unsigned int v22; // eax - int *v23; // eax - bool v25; // al - bool v26; // zf - _DWORD *v27; // eax - char *v28; // eax - char *v29; // eax - unsigned int v30; // edx - int v31; // ecx - int v32; // ebx - _BYTE *v33; // eax - int v34; // esi - _DWORD *v35; // esi - unsigned int v36; // eax - unsigned int v37; // edx - unsigned int v38; // eax - char *v39; // eax - size_t v40; // edi - unsigned int v41; // edx - char *v42; // eax - char *v43; // eax - _DWORD *v44; // eax - int v45; // eax - bool v46; // dl - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // zf - _DWORD *v52; // eax - bool v53; // bl - bool v54; // zf - _DWORD *v55; // eax - int v56; // eax - bool v57; // zf - char v58; // dl - _DWORD *v59; // eax - int v60; // eax - bool v61; // zf - char v62; // dl - _DWORD *v63; // eax - int v64; // eax - char v65; // dl - bool v66; // zf - _DWORD *v67; // eax - int v68; // eax - char v69; // dl - bool v70; // zf - _DWORD *v71; // eax - bool v72; // zf - char v73; // al - _DWORD *v74; // eax - bool v75; // zf - _DWORD *v76; // eax - bool v77; // dl - char v78; // cl - int v79; // eax - bool v80; // si - bool v81; // zf - _DWORD *v82; // eax - int v83; // eax - bool v84; // dl - bool v85; // zf - _DWORD *v86; // eax - int v87; // eax - bool v88; // zf - char v89; // si - _DWORD *v90; // eax - int v91; // eax - bool v92; // bl - bool v93; // zf - _DWORD *v94; // eax - unsigned int v95; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v96; // [esp+14h] [ebp-C4h] - unsigned __int64 v97; // [esp+18h] [ebp-C0h] - size_t MaxCount; // [esp+20h] [ebp-B8h] - int Buf; // [esp+24h] [ebp-B4h] - void *Bufa; // [esp+24h] [ebp-B4h] - bool v101; // [esp+2Ah] [ebp-AEh] - char v102; // [esp+2Bh] [ebp-ADh] - char v103; // [esp+34h] [ebp-A4h] - char v104; // [esp+34h] [ebp-A4h] - int v105; // [esp+38h] [ebp-A0h] - char v106; // [esp+38h] [ebp-A0h] - char v107; // [esp+3Ch] [ebp-9Ch] - int v108; // [esp+3Ch] [ebp-9Ch] - char v109; // [esp+40h] [ebp-98h] - char v110; // [esp+40h] [ebp-98h] - char v111; // [esp+40h] [ebp-98h] - char v112; // [esp+40h] [ebp-98h] - _DWORD *v113; // [esp+44h] [ebp-94h] - int *v114; // [esp+48h] [ebp-90h] - int v115; // [esp+48h] [ebp-90h] - char v116; // [esp+50h] [ebp-88h] - char v117; // [esp+50h] [ebp-88h] - unsigned __int64 v118; // [esp+50h] [ebp-88h] - char v119; // [esp+58h] [ebp-80h] - bool v120; // [esp+58h] [ebp-80h] - _DWORD *v121; // [esp+5Ch] [ebp-7Ch] - bool v122; // [esp+60h] [ebp-78h] - int v123; // [esp+64h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-70h] - bool lpuexcpta; // [esp+68h] [ebp-70h] - char lpuexcptb; // [esp+68h] [ebp-70h] - char lpuexcptc; // [esp+68h] [ebp-70h] - struct _Unwind_Exception *lpuexcptd; // [esp+68h] [ebp-70h] - char lpuexcpte; // [esp+68h] [ebp-70h] - void *Block; // [esp+A8h] [ebp-30h] BYREF - size_t v131; // [esp+ACh] [ebp-2Ch] - int v132[10]; // [esp+B0h] [ebp-28h] BYREF - - v121 = a1; - v113 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v114 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v123 = *v114; - if ( !*v114 ) - { - v44 = operator new(0x68u); - v44[1] = 0; - *v44 = &off_51AF60; - v44[2] = 0; - v44[3] = 0; - *((_BYTE *)v44 + 16) = 0; - v44[5] = 0; - v44[6] = 0; - v44[7] = 0; - v44[8] = 0; - *((_WORD *)v44 + 18) = 0; - *((_BYTE *)v44 + 100) = 0; - v96 = (std::locale::_Impl *)v44; - std::__numpunct_cache::_M_cache((int)v44, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v96, lpuexcpt, v95); - v123 = *v114; - } - v115 = 8; - v105 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v105 != 64 ) - { - v7 = 10; - if ( v105 == 8 ) - v7 = 16; - v115 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v83 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v84 = lpuexcpta && a1 != 0; - v85 = v83 == -1; - if ( v83 != -1 ) - v84 = 0; - v86 = 0; - if ( !v85 ) - v86 = a1; - v107 = v84; - v121 = v86; - } - else - { - v107 = 0; - } - } - else - { - v107 = a2 == -1; - } - v122 = a4 == -1; - if ( v122 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v79 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v80 = v122 && a3 != 0; - v81 = v79 == -1; - if ( v79 != -1 ) - v80 = 0; - v103 = v80; - v82 = 0; - if ( !v81 ) - v82 = a3; - v113 = v82; - } - else - { - v103 = 0; - } - } - else - { - v103 = a4 == -1; - } - if ( v107 != v103 ) - { - if ( v121 && a2 == -1 ) - { - v43 = (char *)v121[2]; - if ( (unsigned int)v43 >= v121[3] ) - { - v87 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v88 = v87 == -1; - v89 = -1; - if ( v87 != -1 ) - v89 = v87; - lpuexcptb = v89; - v90 = 0; - if ( !v88 ) - v90 = v121; - v121 = v90; - } - else - { - lpuexcptb = *v43; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v123 + 16); - v101 = *(_BYTE *)(v123 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v123 + 74) == lpuexcptb || *(_BYTE *)(v123 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v123 + 37) != lpuexcptb) && *(_BYTE *)(v123 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = v121[2]; - v10 = v121[3]; - } - else - { - v11 = v9 + 1; - v121[2] = v11; - } - v119 = 0; - if ( v11 >= v10 ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v55 = 0; - if ( !v54 ) - v55 = v121; - v119 = v54; - v121 = v55; - } - if ( v122 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v91 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); - v92 = v122 && v113 != 0; - v93 = v91 == -1; - if ( v91 != -1 ) - v92 = 0; - v94 = 0; - if ( !v93 ) - v94 = v113; - v116 = v92; - v113 = v94; - } - else - { - v116 = 0; - } - } - else - { - v116 = a4 == -1; - } - if ( v119 == v116 ) - { - v106 = 1; - v108 = 0; - v120 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v121 ) - { - v42 = (char *)v121[2]; - if ( (unsigned int)v42 >= v121[3] ) - { - v64 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v65 = -1; - v66 = v64 == -1; - if ( v64 != -1 ) - v65 = v64; - v67 = 0; - if ( !v66 ) - v67 = v121; - lpuexcptb = v65; - v121 = v67; - } - else - { - lpuexcptb = *v42; - } - } - v8 = *(_BYTE *)(v123 + 16); - } - } - else - { - v101 = 0; - } - v108 = 0; - v120 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v123 + 37) == lpuexcptb || *(_BYTE *)(v123 + 36) == lpuexcptb ) - { -LABEL_115: - v106 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v123 + 78) != lpuexcptb ) - break; - v25 = v115 == 10 || !v120; - if ( !v25 ) - goto LABEL_33; - v120 = v105 == 0 || v115 == 8; - if ( !v120 ) - { - ++v108; - v120 = v25; - goto LABEL_37; - } - v108 = 0; - v12 = v121; - v115 = 8; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 >= v14 ) - { -LABEL_77: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v109 = 0; - if ( v121[2] < v121[3] ) - goto LABEL_39; - goto LABEL_78; - } -LABEL_38: - v15 = v13 + 1; - v109 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; -LABEL_78: - v26 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v27 = 0; - if ( !v26 ) - v27 = v121; - v109 = v26; - v121 = v27; -LABEL_39: - if ( v122 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v45 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); - v46 = v122 && v113 != 0; - v47 = v45 == -1; - if ( v45 != -1 ) - v46 = 0; - v48 = 0; - if ( !v47 ) - v48 = v113; - v117 = v46; - v113 = v48; - } - else - { - v117 = 0; - } - } - else - { - v117 = a4 == -1; - } - if ( v109 == v117 ) - { - v106 = 1; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v121 ) - { - v28 = (char *)v121[2]; - if ( (unsigned int)v28 >= v121[3] ) - { - v68 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v69 = -1; - v70 = v68 == -1; - if ( v68 != -1 ) - v69 = v68; - v71 = 0; - if ( !v70 ) - v71 = v121; - lpuexcptb = v69; - v121 = v71; - } - else - { - lpuexcptb = *v28; - } - } - if ( !v120 ) - { - v106 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v123 + 16); - } - if ( !v120 ) - goto LABEL_115; -LABEL_33: - if ( *(_BYTE *)(v123 + 76) != lpuexcptb && *(_BYTE *)(v123 + 77) != lpuexcptb ) - { - v106 = 0; - v120 = 1; - goto LABEL_43; - } - if ( v105 != 0 && v115 != 16 ) - { - v106 = 0; - MaxCount = v115; - Buf = v115; - v120 = 1; - goto LABEL_46; - } - v108 = 0; - v120 = 0; - v115 = 16; -LABEL_37: - v12 = v121; - v13 = v121[2]; - v14 = v121[3]; - if ( v13 >= v14 ) - goto LABEL_77; - goto LABEL_38; - } - v101 = 0; - v106 = 1; - lpuexcptb = 0; - v108 = 0; - v120 = 0; -LABEL_43: - v16 = 22; - if ( v115 != 16 ) - v16 = v115; - MaxCount = v16; - Buf = v16; -LABEL_46: - v131 = 0; - Block = v132; - LOBYTE(v132[0]) = 0; - if ( *(_BYTE *)(v123 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0x8000000000000000LL; - if ( !v101 ) - v97 = 0x7FFFFFFFFFFFFFFFLL; - v17 = v97 / v115; - v102 = *(_BYTE *)(v123 + 100); - if ( !v102 ) - { - if ( v106 ) - { - v78 = v106; - v104 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - v102 = v78; - v118 = 0LL; - goto LABEL_65; - } - v104 = 0; - v118 = 0LL; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_56; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_114; - v18 = lpuexcptb - 55; - } - else - { - v18 = lpuexcptb - 87; - } -LABEL_57: - if ( v17 >= v118 ) - { - v104 |= v97 - v18 < v115 * v118; - v19 = v121; - v118 = v115 * v118 + v18; - v20 = v121[2]; - v21 = v121[3]; - ++v108; - if ( v20 < v21 ) - { -LABEL_59: - v22 = v20 + 1; - v19[2] = v22; - goto LABEL_60; - } - } - else - { - v19 = v121; - v104 = 1; - v20 = v121[2]; - v21 = v121[3]; - if ( v20 < v21 ) - goto LABEL_59; - } - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v22 = v121[2]; - v21 = v121[3]; -LABEL_60: - v110 = 0; - if ( v22 >= v21 ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v50 = 0; - if ( !v49 ) - v50 = v121; - v110 = v49; - v121 = v50; - } - if ( v122 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v51 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; - v52 = 0; - if ( !v51 ) - v52 = v113; - v53 = v122 && v113 != 0; - v113 = v52; - if ( !v51 ) - v53 = 0; - lpuexcptc = v53; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v110 ) - { - v102 = 1; - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - goto LABEL_65; - } - if ( v121 ) - { - v29 = (char *)v121[2]; - if ( (unsigned int)v29 >= v121[3] ) - { - v56 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v57 = v56 == -1; - v58 = -1; - if ( v56 != -1 ) - v58 = v56; - v59 = 0; - if ( !v57 ) - v59 = v121; - lpuexcptb = v58; - v121 = v59; - } - else - { - lpuexcptb = *v29; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_114; -LABEL_56: - v18 = lpuexcptb - 48; - goto LABEL_57; - } - if ( v106 ) - { - v118 = 0LL; - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - v102 = v106; - v104 = 0; - v106 = 0; - goto LABEL_65; - } - v104 = 0; - v118 = 0LL; - Bufa = (void *)(v123 + 78); - while ( !*(_BYTE *)(v123 + 16) || *(_BYTE *)(v123 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v123 + 36) || (v33 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_114: - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - goto LABEL_65; - } - v34 = v33 - (_BYTE *)Bufa; - if ( v33 - (_BYTE *)Bufa > 15 ) - v34 -= 6; - if ( v17 >= v118 ) - { - v104 |= v97 - v34 < v115 * v118; - ++v108; - v118 = v115 * v118 + v34; - goto LABEL_126; - } - v35 = v121; - v104 = v102; - v37 = v121[3]; - v36 = v121[2]; - if ( v36 < v37 ) - { -LABEL_127: - v38 = v36 + 1; - v35[2] = v38; - goto LABEL_128; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v38 = v121[2]; - v37 = v121[3]; -LABEL_128: - v111 = 0; - if ( v37 <= v38 ) - { - v72 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121) == -1; - v73 = 0; - if ( v72 ) - v73 = v102; - v111 = v73; - v74 = 0; - if ( !v72 ) - v74 = v121; - v121 = v74; - } - if ( v122 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v75 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; - v76 = 0; - if ( !v75 ) - v76 = v113; - v77 = v122 && v113 != 0; - v113 = v76; - if ( !v75 ) - v77 = 0; - lpuexcpte = v77; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v111 ) - { - lpuexcptd = (struct _Unwind_Exception *)v131; - v23 = (int *)Block; - goto LABEL_65; - } - if ( v121 ) - { - v39 = (char *)v121[2]; - if ( (unsigned int)v39 >= v121[3] ) - { - v60 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - v61 = v60 == -1; - v62 = -1; - if ( v60 != -1 ) - v62 = v60; - v63 = 0; - if ( !v61 ) - v63 = v121; - lpuexcptb = v62; - v121 = v63; - } - else - { - lpuexcptb = *v39; - } - } - else - { - lpuexcptb = -1; - } - } - v23 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v131; - if ( v108 ) - { - v41 = 15; - if ( Block != v132 ) - v41 = v132[0]; - v112 = v108; - v40 = v131 + 1; - if ( v131 + 1 > v41 ) - { - std::string::_M_mutate((int)&Block, v131, 0, 0, 1u); - v23 = (int *)Block; - } - v108 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v23) = v112; - v131 = v40; - *((_BYTE *)Block + v40) = 0; -LABEL_126: - v35 = v121; - v36 = v121[2]; - v37 = v121[3]; - if ( v36 < v37 ) - goto LABEL_127; - goto LABEL_134; - } - v102 = 0; - v106 = *(_BYTE *)(v123 + 16); -LABEL_65: - if ( lpuexcptd ) - { - v30 = 15; - if ( v23 != v132 ) - v30 = v132[0]; - if ( (unsigned int)lpuexcptd + 1 > v30 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v23 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v23) = v108; - v131 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v123 + 8), *(_DWORD *)(v123 + 12), (int)&Block) ) - *a6 = 4; - v23 = (int *)Block; - if ( v120 || v131 | v108 ) - goto LABEL_104; -LABEL_68: - *a7 = 0; - a7[1] = 0; - *a6 = 4; - } - else - { - if ( !v108 && !v120 ) - goto LABEL_68; -LABEL_104: - if ( v106 ) - goto LABEL_68; - if ( v104 ) - { - v31 = 0; - v32 = 0x80000000; - if ( !v101 ) - { - v31 = -1; - v32 = 0x7FFFFFFF; - } - a7[1] = v32; - *a7 = v31; - *a6 = 4; - } - else - { - if ( v101 ) - v118 = -(__int64)v118; - *(_QWORD *)a7 = v118; - } - } - if ( v102 ) - *a6 |= 2u; - if ( v23 != v132 ) - operator delete(v23); - return v121; -} -// 470387: variable 'v95' is possibly undefined -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (00470910) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - _DWORD *v12; // edi - unsigned int v13; // eax - unsigned int v14; // edx - unsigned int v15; // eax - int v16; // eax - unsigned __int64 v17; // kr08_8 - int v18; // esi - _DWORD *v19; // ecx - unsigned int v20; // eax - unsigned int v21; // edx - unsigned int v22; // eax - int *v23; // eax - bool v25; // al - bool v26; // zf - _DWORD *v27; // eax - char *v28; // eax - char *v29; // eax - unsigned int v30; // edx - _BYTE *v31; // eax - int v32; // esi - _DWORD *v33; // ebx - unsigned int v34; // eax - unsigned int v35; // edx - unsigned int v36; // eax - char *v37; // eax - size_t v38; // edx - size_t v39; // esi - char *v40; // eax - char *v41; // eax - _DWORD *v42; // eax - int v43; // eax - bool v44; // dl - bool v45; // zf - _DWORD *v46; // eax - bool v47; // zf - _DWORD *v48; // eax - bool v49; // zf - _DWORD *v50; // eax - bool v51; // di - bool v52; // zf - _DWORD *v53; // eax - int v54; // eax - bool v55; // zf - char v56; // dl - _DWORD *v57; // eax - int v58; // eax - bool v59; // zf - char v60; // dl - _DWORD *v61; // eax - char v62; // si - int v63; // eax - bool v64; // zf - _DWORD *v65; // eax - char v66; // bl - int v67; // eax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // zf - char v71; // al - _DWORD *v72; // eax - bool v73; // zf - _DWORD *v74; // eax - bool v75; // di - char v76; // bl - int v77; // eax - bool v78; // bl - bool v79; // zf - _DWORD *v80; // eax - int v81; // eax - bool v82; // dl - bool v83; // zf - _DWORD *v84; // eax - int v85; // eax - char v86; // dl - bool v87; // zf - _DWORD *v88; // eax - int v89; // eax - bool v90; // di - bool v91; // zf - _DWORD *v92; // eax - unsigned int v93; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v94; // [esp+18h] [ebp-C0h] - size_t MaxCount; // [esp+1Ch] [ebp-BCh] - int Buf; // [esp+20h] [ebp-B8h] - void *Bufa; // [esp+20h] [ebp-B8h] - bool v98; // [esp+26h] [ebp-B2h] - char v99; // [esp+27h] [ebp-B1h] - char v100; // [esp+30h] [ebp-A8h] - char v101; // [esp+30h] [ebp-A8h] - int v102; // [esp+34h] [ebp-A4h] - char v103; // [esp+34h] [ebp-A4h] - char v104; // [esp+38h] [ebp-A0h] - int v105; // [esp+38h] [ebp-A0h] - size_t v106; // [esp+38h] [ebp-A0h] - char v107; // [esp+3Ch] [ebp-9Ch] - char v108; // [esp+3Ch] [ebp-9Ch] - char v109; // [esp+3Ch] [ebp-9Ch] - char v110; // [esp+3Ch] [ebp-9Ch] - int *v111; // [esp+40h] [ebp-98h] - int v112; // [esp+40h] [ebp-98h] - _DWORD *v113; // [esp+48h] [ebp-90h] - char v114; // [esp+4Ch] [ebp-8Ch] - bool v115; // [esp+4Ch] [ebp-8Ch] - char v116; // [esp+50h] [ebp-88h] - char v117; // [esp+50h] [ebp-88h] - unsigned __int64 v118; // [esp+50h] [ebp-88h] - _DWORD *v119; // [esp+58h] [ebp-80h] - bool v120; // [esp+5Ch] [ebp-7Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-78h] - bool lpuexcpta; // [esp+60h] [ebp-78h] - char lpuexcptb; // [esp+60h] [ebp-78h] - char lpuexcptc; // [esp+60h] [ebp-78h] - struct _Unwind_Exception *lpuexcptd; // [esp+60h] [ebp-78h] - char lpuexcpte; // [esp+60h] [ebp-78h] - int v127; // [esp+68h] [ebp-70h] - void *Block; // [esp+A8h] [ebp-30h] BYREF - size_t v129; // [esp+ACh] [ebp-2Ch] - int v130[10]; // [esp+B0h] [ebp-28h] BYREF - - v119 = a1; - v113 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v111 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v127 = *v111; - if ( !*v111 ) - { - v42 = operator new(0x68u); - v42[1] = 0; - *v42 = &off_51AF60; - v42[2] = 0; - v42[3] = 0; - *((_BYTE *)v42 + 16) = 0; - v42[5] = 0; - v42[6] = 0; - v42[7] = 0; - v42[8] = 0; - *((_WORD *)v42 + 18) = 0; - *((_BYTE *)v42 + 100) = 0; - v94 = (std::locale::_Impl *)v42; - std::__numpunct_cache::_M_cache((int)v42, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v127 = *v111; - } - v112 = 8; - v102 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v102 != 64 ) - { - v7 = 10; - if ( v102 == 8 ) - v7 = 16; - v112 = v7; - } - lpuexcpta = a2 == -1; - if ( lpuexcpta && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v81 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v82 = lpuexcpta && a1 != 0; - v83 = v81 == -1; - if ( v81 != -1 ) - v82 = 0; - v84 = 0; - if ( !v83 ) - v84 = a1; - v104 = v82; - v119 = v84; - } - else - { - v104 = 0; - } - } - else - { - v104 = a2 == -1; - } - v120 = a4 == -1; - if ( v120 && a3 != 0 ) - { - if ( a3[2] >= a3[3] ) - { - v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v78 = v120 && a3 != 0; - v79 = v77 == -1; - if ( v77 != -1 ) - v78 = 0; - v80 = 0; - if ( !v79 ) - v80 = a3; - v100 = v78; - v113 = v80; - } - else - { - v100 = 0; - } - } - else - { - v100 = a4 == -1; - } - if ( v104 != v100 ) - { - if ( v119 && a2 == -1 ) - { - v41 = (char *)v119[2]; - if ( (unsigned int)v41 >= v119[3] ) - { - v85 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v86 = -1; - v87 = v85 == -1; - if ( v85 != -1 ) - v86 = v85; - v88 = 0; - if ( !v87 ) - v88 = v119; - lpuexcptb = v86; - v119 = v88; - } - else - { - lpuexcptb = *v41; - } - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v127 + 16); - v98 = *(_BYTE *)(v127 + 74) == (unsigned __int8)lpuexcptb; - if ( *(_BYTE *)(v127 + 74) == lpuexcptb || *(_BYTE *)(v127 + 75) == lpuexcptb ) - { - if ( (!v8 || *(_BYTE *)(v127 + 37) != lpuexcptb) && *(_BYTE *)(v127 + 36) != lpuexcptb ) - { - v9 = v119[2]; - v10 = v119[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); - v11 = v119[2]; - v10 = v119[3]; - } - else - { - v11 = v9 + 1; - v119[2] = v11; - } - v114 = 0; - if ( v11 >= v10 ) - { - v52 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; - v53 = 0; - if ( !v52 ) - v53 = v119; - v114 = v52; - v119 = v53; - } - if ( v120 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v89 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); - v90 = v120 && v113 != 0; - v91 = v89 == -1; - if ( v89 != -1 ) - v90 = 0; - v116 = v90; - v92 = 0; - if ( !v91 ) - v92 = v113; - v113 = v92; - } - else - { - v116 = 0; - } - } - else - { - v116 = a4 == -1; - } - if ( v114 == v116 ) - { - v103 = 1; - v105 = 0; - v115 = 0; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v119 ) - { - v40 = (char *)v119[2]; - if ( (unsigned int)v40 >= v119[3] ) - { - v62 = -1; - v63 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v64 = v63 == -1; - if ( v63 != -1 ) - v62 = v63; - lpuexcptb = v62; - v65 = 0; - if ( !v64 ) - v65 = v119; - v119 = v65; - } - else - { - lpuexcptb = *v40; - } - } - v8 = *(_BYTE *)(v127 + 16); - } - } - else - { - v98 = 0; - } - v105 = 0; - v115 = 0; - while ( 1 ) - { - if ( v8 && *(_BYTE *)(v127 + 37) == lpuexcptb || *(_BYTE *)(v127 + 36) == lpuexcptb ) - { -LABEL_112: - v103 = 0; - goto LABEL_43; - } - if ( *(_BYTE *)(v127 + 78) != lpuexcptb ) - break; - v25 = v112 == 10 || !v115; - if ( !v25 ) - goto LABEL_33; - v115 = v102 == 0 || v112 == 8; - if ( !v115 ) - { - ++v105; - v115 = v25; - goto LABEL_37; - } - v105 = 0; - v12 = v119; - v112 = 8; - v13 = v119[2]; - v14 = v119[3]; - if ( v13 >= v14 ) - { -LABEL_75: - (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); - v107 = 0; - if ( v119[2] < v119[3] ) - goto LABEL_39; - goto LABEL_76; - } -LABEL_38: - v15 = v13 + 1; - v107 = 0; - v12[2] = v15; - if ( v15 < v14 ) - goto LABEL_39; -LABEL_76: - v26 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; - v27 = 0; - if ( !v26 ) - v27 = v119; - v107 = v26; - v119 = v27; -LABEL_39: - if ( v120 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v43 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113); - v44 = v120 && v113 != 0; - v45 = v43 == -1; - if ( v43 != -1 ) - v44 = 0; - v46 = 0; - if ( !v45 ) - v46 = v113; - v117 = v44; - v113 = v46; - } - else - { - v117 = 0; - } - } - else - { - v117 = a4 == -1; - } - if ( v107 == v117 ) - { - v103 = 1; - goto LABEL_43; - } - lpuexcptb = -1; - if ( v119 ) - { - v28 = (char *)v119[2]; - if ( (unsigned int)v28 >= v119[3] ) - { - v66 = -1; - v67 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v68 = v67 == -1; - if ( v67 != -1 ) - v66 = v67; - v69 = 0; - if ( !v68 ) - v69 = v119; - lpuexcptb = v66; - v119 = v69; - } - else - { - lpuexcptb = *v28; - } - } - if ( !v115 ) - { - v103 = 0; - goto LABEL_43; - } - v8 = *(_BYTE *)(v127 + 16); - } - if ( !v115 ) - goto LABEL_112; -LABEL_33: - if ( *(_BYTE *)(v127 + 76) != lpuexcptb && *(_BYTE *)(v127 + 77) != lpuexcptb ) - { - v103 = 0; - v115 = 1; - goto LABEL_43; - } - if ( v102 != 0 && v112 != 16 ) - { - v103 = 0; - MaxCount = v112; - Buf = v112; - v115 = 1; - goto LABEL_46; - } - v105 = 0; - v115 = 0; - v112 = 16; -LABEL_37: - v12 = v119; - v13 = v119[2]; - v14 = v119[3]; - if ( v13 >= v14 ) - goto LABEL_75; - goto LABEL_38; - } - v98 = 0; - v103 = 1; - lpuexcptb = 0; - v105 = 0; - v115 = 0; -LABEL_43: - v16 = 22; - if ( v112 != 16 ) - v16 = v112; - MaxCount = v16; - Buf = v16; -LABEL_46: - v129 = 0; - Block = v130; - LOBYTE(v130[0]) = 0; - if ( *(_BYTE *)(v127 + 16) ) - std::string::reserve(&Block, 0x20u); - v17 = 0xFFFFFFFFFFFFFFFFLL / v112; - v99 = *(_BYTE *)(v127 + 100); - if ( !v99 ) - { - if ( v103 ) - { - v76 = v103; - v101 = 0; - v103 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - v99 = v76; - v118 = 0LL; - goto LABEL_63; - } - v101 = 0; - v118 = 0LL; - while ( Buf > 10 ) - { - if ( (unsigned __int8)(lpuexcptb - 48) <= 9u ) - goto LABEL_54; - v18 = lpuexcptb - 87; - if ( (unsigned __int8)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int8)(lpuexcptb - 65) > 5u ) - goto LABEL_111; - v18 = lpuexcptb - 55; - } -LABEL_55: - if ( v17 >= v118 ) - { - v101 |= __PAIR64__(~(v18 >> 31), ~v18) < v112 * v118; - v19 = v119; - ++v105; - v20 = v119[2]; - v21 = v119[3]; - v118 = v112 * v118 + v18; - if ( v20 < v21 ) - { -LABEL_57: - v22 = v20 + 1; - v19[2] = v22; - goto LABEL_58; - } - } - else - { - v19 = v119; - v101 = 1; - v20 = v119[2]; - v21 = v119[3]; - if ( v20 < v21 ) - goto LABEL_57; - } - (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); - v22 = v119[2]; - v21 = v119[3]; -LABEL_58: - v108 = 0; - if ( v22 >= v21 ) - { - v47 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; - v48 = 0; - if ( !v47 ) - v48 = v119; - v108 = v47; - v119 = v48; - } - if ( v120 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; - v50 = 0; - if ( !v49 ) - v50 = v113; - v51 = v120 && v113 != 0; - v113 = v50; - if ( !v49 ) - v51 = 0; - lpuexcptc = v51; - } - else - { - lpuexcptc = 0; - } - } - else - { - lpuexcptc = a4 == -1; - } - if ( lpuexcptc == v108 ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - goto LABEL_63; - } - if ( v119 ) - { - v29 = (char *)v119[2]; - if ( (unsigned int)v29 >= v119[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v55 = v54 == -1; - v56 = -1; - if ( v54 != -1 ) - v56 = v54; - v57 = 0; - if ( !v55 ) - v57 = v119; - lpuexcptb = v56; - v119 = v57; - } - else - { - lpuexcptb = *v29; - } - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 47 || (char)(Buf + 48) <= lpuexcptb ) - goto LABEL_111; -LABEL_54: - v18 = lpuexcptb - 48; - goto LABEL_55; - } - if ( v103 ) - { - v118 = 0LL; - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - v99 = v103; - v101 = 0; - v103 = 0; - goto LABEL_63; - } - v101 = 0; - v118 = 0LL; - Bufa = (void *)(v127 + 78); - while ( !*(_BYTE *)(v127 + 16) || *(_BYTE *)(v127 + 37) != lpuexcptb ) - { - if ( lpuexcptb == *(_BYTE *)(v127 + 36) || (v31 = memchr(Bufa, lpuexcptb, MaxCount)) == 0 ) - { -LABEL_111: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - goto LABEL_63; - } - v32 = v31 - (_BYTE *)Bufa; - if ( v31 - (_BYTE *)Bufa > 15 ) - v32 -= 6; - if ( v17 >= v118 ) - { - v101 |= __PAIR64__(~(v32 >> 31), ~v32) < v112 * v118; - v118 = v112 * v118 + v32; - ++v105; - goto LABEL_123; - } - v33 = v119; - v101 = v99; - v35 = v119[3]; - v34 = v119[2]; - if ( v34 < v35 ) - { -LABEL_124: - v36 = v34 + 1; - v33[2] = v36; - goto LABEL_125; - } -LABEL_131: - (*(void (__fastcall **)(_DWORD *))(*v119 + 40))(v119); - v36 = v119[2]; - v35 = v119[3]; -LABEL_125: - v109 = 0; - if ( v35 <= v36 ) - { - v70 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119) == -1; - v71 = 0; - if ( v70 ) - v71 = v99; - v109 = v71; - v72 = 0; - if ( !v70 ) - v72 = v119; - v119 = v72; - } - if ( v120 && v113 != 0 ) - { - if ( v113[2] >= v113[3] ) - { - v73 = (*(int (__fastcall **)(_DWORD *))(*v113 + 36))(v113) == -1; - v74 = 0; - if ( !v73 ) - v74 = v113; - v75 = v120 && v113 != 0; - v113 = v74; - if ( !v73 ) - v75 = 0; - lpuexcpte = v75; - } - else - { - lpuexcpte = 0; - } - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v109 ) - { - lpuexcptd = (struct _Unwind_Exception *)v129; - v23 = (int *)Block; - goto LABEL_63; - } - if ( v119 ) - { - v37 = (char *)v119[2]; - if ( (unsigned int)v37 >= v119[3] ) - { - v58 = (*(int (__fastcall **)(_DWORD *))(*v119 + 36))(v119); - v59 = v58 == -1; - v60 = -1; - if ( v58 != -1 ) - v60 = v58; - v61 = 0; - if ( !v59 ) - v61 = v119; - lpuexcptb = v60; - v119 = v61; - } - else - { - lpuexcptb = *v37; - } - } - else - { - lpuexcptb = -1; - } - } - v23 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v129; - if ( v105 ) - { - v38 = 15; - if ( Block != v130 ) - v38 = v130[0]; - v110 = v105; - v106 = v129 + 1; - if ( v129 + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); - v23 = (int *)Block; - } - v39 = v106; - v105 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v23) = v110; - v129 = v39; - *((_BYTE *)Block + v39) = 0; -LABEL_123: - v33 = v119; - v34 = v119[2]; - v35 = v119[3]; - if ( v34 < v35 ) - goto LABEL_124; - goto LABEL_131; - } - v99 = 0; - v103 = *(_BYTE *)(v127 + 16); -LABEL_63: - if ( lpuexcptd ) - { - v30 = 15; - if ( v23 != v130 ) - v30 = v130[0]; - if ( (unsigned int)lpuexcptd + 1 > v30 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v23 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v23) = v105; - v129 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v127 + 8), *(_DWORD *)(v127 + 12), (int)&Block) ) - *a6 = 4; - v23 = (int *)Block; - if ( v115 || v129 | v105 ) - goto LABEL_103; -LABEL_66: - *a7 = 0; - a7[1] = 0; - *a6 = 4; - } - else - { - if ( !v105 && !v115 ) - goto LABEL_66; -LABEL_103: - if ( v103 ) - goto LABEL_66; - if ( v101 ) - { - *a7 = -1; - a7[1] = -1; - *a6 = 4; - } - else - { - if ( v98 ) - v118 = -(__int64)v118; - *(_QWORD *)a7 = v118; - } - } - if ( v99 ) - *a6 |= 2u; - if ( v23 != v130 ) - operator delete(v23); - return v119; -} -// 471605: variable 'v93' is possibly undefined -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (00471BB0) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - _BYTE *v7; // eax - char v8; // al - int v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - unsigned int v20; // eax - bool v21; // al - _BYTE *v22; // eax - char v23; // al - char i; // al - _BYTE *v25; // eax - int v26; // eax - _DWORD *v27; // ecx - unsigned int v28; // eax - char v29; // al - char v30; // al - int v31; // edx - int v32; // eax - char *v33; // eax - char *v34; // eax - bool v35; // al - int v36; // eax - unsigned int v37; // [esp+4h] [ebp-94h] - bool v38; // [esp+1Fh] [ebp-79h] - size_t MaxCount; // [esp+20h] [ebp-78h] - int Buf; // [esp+24h] [ebp-74h] - void *Bufa; // [esp+24h] [ebp-74h] - unsigned int v42; // [esp+28h] [ebp-70h] - char v43; // [esp+28h] [ebp-70h] - int v44; // [esp+2Ch] [ebp-6Ch] - char v45; // [esp+2Ch] [ebp-6Ch] - int v46; // [esp+30h] [ebp-68h] - char v47; // [esp+34h] [ebp-64h] - char v48; // [esp+35h] [ebp-63h] - char v49; // [esp+35h] [ebp-63h] - bool v50; // [esp+36h] [ebp-62h] - char v51; // [esp+36h] [ebp-62h] - bool v52; // [esp+37h] [ebp-61h] - unsigned int v53; // [esp+38h] [ebp-60h] - struct _Unwind_Exception *v54; // [esp+3Ch] [ebp-5Ch] - char lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - unsigned int v59; // [esp+48h] [ebp-50h] - char v60; // [esp+48h] [ebp-50h] - int v61; // [esp+8Bh] [ebp-Dh] BYREF - const char *v62[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v54 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v44 = v6; - if ( v6 == 64 ) - { - v53 = 8; -LABEL_4: - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v50 ) - { - lpuexcpt = 0; - v46 = 0; - MaxCount = v53; - Buf = v53; - v52 = 0; - v38 = 0; - goto LABEL_17; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v53 = 10; - goto LABEL_4; - } - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v50 ) - { - MaxCount = 22; - lpuexcpt = 0; - v46 = 0; - v52 = 0; - v38 = 0; - v53 = 16; - Buf = 22; - goto LABEL_17; - } - v53 = 16; -LABEL_5: - LOBYTE(v7) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_7; - v7 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v7 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v7) = *v7; -LABEL_7: - lpuexcpt = (char)v7; - goto LABEL_8; - } - v7 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v7 != (_BYTE *)-1 ) - goto LABEL_7; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_8: - v8 = *((_BYTE *)v54 + 16); - v38 = *((_BYTE *)v54 + 74) == (unsigned __int8)lpuexcpt; - if ( *((_BYTE *)v54 + 74) != lpuexcpt && *((_BYTE *)v54 + 75) != lpuexcpt - || v8 && *((_BYTE *)v54 + 37) == lpuexcpt - || *((_BYTE *)v54 + 36) == lpuexcpt ) - { - goto LABEL_45; - } - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v46 = 0; - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v52 = 0; - if ( !v50 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v54 + 16); -LABEL_45: - v46 = 0; - v52 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v54 + 37) == lpuexcpt || *((_BYTE *)v54 + 36) == lpuexcpt ) - { -LABEL_94: - v50 = 0; - goto LABEL_14; - } - if ( *((_BYTE *)v54 + 78) != lpuexcpt ) - break; - v21 = v53 == 10 || !v52; - if ( !v21 ) - goto LABEL_51; - v52 = v44 == 0 || v53 == 8; - if ( !v52 ) - { - ++v46; - v52 = v21; - goto LABEL_55; - } - v19 = (_DWORD *)a1; - v46 = 0; - v53 = 8; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - { -LABEL_56: - HIDWORD(a1) = -1; - v19[2] = v20 + 1; - goto LABEL_57; - } -LABEL_64: - (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); - v19 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v51 = 1; - goto LABEL_58; - } -LABEL_57: - v51 = 0; - if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) - { - LODWORD(a1) = 0; - v51 = 1; - } -LABEL_58: - v60 = a3 == -1; - v43 = v60 & (a2 != 0); - if ( v43 ) - { - v60 = 0; - if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) - { - a2 = 0; - v60 = v43; - } - } - if ( v51 == v60 ) - { - v50 = 1; - goto LABEL_14; - } - LOBYTE(v22) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_68; - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v22) = *v22; -LABEL_68: - lpuexcpt = (char)v22; - goto LABEL_69; - } - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 != (_BYTE *)-1 ) - goto LABEL_68; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_69: - if ( !v52 ) - goto LABEL_94; - v8 = *((_BYTE *)v54 + 16); - } - if ( !v52 ) - goto LABEL_94; -LABEL_51: - if ( *((_BYTE *)v54 + 76) != lpuexcpt && *((_BYTE *)v54 + 77) != lpuexcpt ) - { - v50 = 0; - v52 = 1; - goto LABEL_14; - } - if ( v44 != 0 && v53 != 16 ) - { - v50 = 0; - v52 = 1; - MaxCount = v53; - Buf = v53; - goto LABEL_17; - } - v46 = 0; - v52 = 0; - v53 = 16; -LABEL_55: - v19 = (_DWORD *)a1; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - goto LABEL_56; - goto LABEL_64; - } -LABEL_14: - v9 = 22; - if ( v53 != 16 ) - v9 = v53; - MaxCount = v9; - Buf = v9; -LABEL_17: - v62[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v54 + 16) ) - std::string::reserve((int *)v62, (std::string *)0x20, v37); - v10 = 0xFFFFFFFF % v53; - v42 = 0xFFFFFFFF / v53; - v48 = *((_BYTE *)v54 + 100); - if ( v48 ) - { - if ( v50 ) - { - v59 = 0; - v45 = 0; - v48 = v50; - v50 = 0; - goto LABEL_33; - } - v45 = 0; - v59 = 0; - Bufa = (char *)v54 + 78; -LABEL_100: - for ( i = *((_BYTE *)v54 + 16); i && *((_BYTE *)v54 + 37) == lpuexcpt; i = *((_BYTE *)v54 + 16) ) - { - if ( !v46 ) - { - v48 = 0; - v50 = i; - goto LABEL_33; - } - std::string::push_back((int *)v62, (std::string *)(char)v46, v37); - v27 = (_DWORD *)a1; - v46 = 0; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 < *(_DWORD *)(a1 + 12) ) - goto LABEL_109; -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); - v27 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_110; - lpuexcptc = v48; -LABEL_111: - v29 = a3 == -1; - v47 = v29 & (a2 != 0); - if ( v47 ) - { - v29 = 0; - if ( a2[2] >= a2[3] ) - { - v31 = (*(int (**)(void))(*a2 + 36))(); - v29 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v29 = v47; - } - } - } - if ( v29 == lpuexcptc ) - goto LABEL_33; - v30 = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v34 = *(char **)(a1 + 8); - if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) - { - v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v36; - if ( v36 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_100; - } - v30 = *v34; - } - lpuexcpt = v30; - } - if ( lpuexcpt != *((_BYTE *)v54 + 36) ) - { - v25 = memchr(Bufa, lpuexcpt, MaxCount); - if ( v25 ) - { - v26 = v25 - (_BYTE *)Bufa; - if ( v26 > 15 ) - v26 -= 6; - if ( v42 < v59 ) - { - v45 = v48; - } - else - { - v45 |= ~v26 < v53 * v59; - ++v46; - v59 = v53 * v59 + v26; - } - v27 = (_DWORD *)a1; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_118; -LABEL_109: - HIDWORD(a1) = -1; - v27[2] = v28 + 1; -LABEL_110: - lpuexcptc = 0; - if ( v27[2] >= v27[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v48; - } - } - goto LABEL_111; - } - } -LABEL_97: - v48 = 0; - } - else - { - v45 = 0; - if ( !v50 ) - { - v59 = 0; -LABEL_22: - v11 = lpuexcpt; - if ( Buf > 10 ) - { - v10 = (unsigned __int8)lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_25; - while ( (unsigned __int8)(v10 - 97) <= 5u ) - { - v12 = v11 - 87; - if ( v42 < v59 ) - goto LABEL_27; -LABEL_74: - v10 = v53 * v59; - v45 |= ~v12 < v53 * v59; - v13 = (_DWORD *)a1; - v59 = v53 * v59 + v12; - ++v46; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_28; -LABEL_75: - (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_29; - lpuexcpta = 1; -LABEL_30: - v15 = a3 == -1; - LOBYTE(v10) = v15 & (a2 != 0); - v49 = v10; - if ( (_BYTE)v10 ) - { - v15 = 0; - if ( a2[2] >= a2[3] ) - { - v10 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v10 == -1 ) - { - a2 = 0; - v15 = v49; - } - } - } - if ( lpuexcpta == v15 ) - { - v48 = 1; - goto LABEL_33; - } - v23 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_81; - v33 = *(char **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - v23 = *v33; -LABEL_81: - lpuexcpt = v23; - goto LABEL_22; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_22; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_97; - v10 = -1; - } - v10 -= 65; - if ( (unsigned __int8)v10 <= 5u ) - { - v12 = v11 - 55; - goto LABEL_26; - } - } - else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_25: - v12 = lpuexcpt - 48; -LABEL_26: - if ( v42 >= v59 ) - goto LABEL_74; -LABEL_27: - v13 = (_DWORD *)a1; - v45 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_75; -LABEL_28: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; -LABEL_29: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } - goto LABEL_30; - } - goto LABEL_97; - } - v35 = v50; - v59 = 0; - v50 = 0; - v48 = v35; - } -LABEL_33: - v16 = v62[0]; - if ( *((_DWORD *)v62[0] - 3) ) - { - std::string::push_back((int *)v62, (std::string *)(char)v46, v37); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v54 + 2), *((_DWORD *)v54 + 3), v62) ) - *a5 = 4; - v16 = v62[0]; - if ( !v46 && !v52 && !*((_DWORD *)v62[0] - 3) ) - goto LABEL_36; - } - else if ( !v52 && !v46 ) - { - goto LABEL_36; - } - if ( v50 ) - { -LABEL_36: - *a6 = 0; - *a5 = 4; - goto LABEL_37; - } - if ( v45 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v32 = -v59; - if ( !v38 ) - v32 = v59; - *a6 = v32; - } -LABEL_37: - if ( v48 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_125: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v61); - return lpuexcptb; - } - v17 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v17 - 1; - if ( v17 <= 0 ) - goto LABEL_125; - return lpuexcptb; -} -// 472409: variable 'v37' is possibly undefined -// 4720B7: variable 'v10' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00472720) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // dl - char v8; // al - int v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - unsigned int v20; // eax - bool v21; // al - _BYTE *v22; // eax - char v23; // al - char i; // al - _BYTE *v25; // eax - int v26; // eax - _DWORD *v27; // ecx - unsigned int v28; // eax - char v29; // al - char v30; // al - int v31; // edx - int v32; // eax - char *v33; // eax - char *v34; // eax - bool v35; // al - int v36; // eax - unsigned int v37; // [esp+4h] [ebp-94h] - bool v38; // [esp+18h] [ebp-80h] - size_t MaxCount; // [esp+1Ch] [ebp-7Ch] - unsigned int v40; // [esp+20h] [ebp-78h] - int Buf; // [esp+24h] [ebp-74h] - void *Bufa; // [esp+24h] [ebp-74h] - unsigned int v43; // [esp+28h] [ebp-70h] - char v44; // [esp+28h] [ebp-70h] - int v45; // [esp+2Ch] [ebp-6Ch] - char v46; // [esp+2Ch] [ebp-6Ch] - int v47; // [esp+30h] [ebp-68h] - char v48; // [esp+34h] [ebp-64h] - char v49; // [esp+35h] [ebp-63h] - char v50; // [esp+35h] [ebp-63h] - bool v51; // [esp+36h] [ebp-62h] - char v52; // [esp+36h] [ebp-62h] - bool v53; // [esp+37h] [ebp-61h] - unsigned int v54; // [esp+38h] [ebp-60h] - struct _Unwind_Exception *v55; // [esp+3Ch] [ebp-5Ch] - char lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - unsigned int v60; // [esp+48h] [ebp-50h] - char v61; // [esp+48h] [ebp-50h] - int v62; // [esp+8Bh] [ebp-Dh] BYREF - const char *v63[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v55 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v45 = v6; - if ( v6 == 64 ) - { - v54 = 8; -LABEL_4: - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v51 ) - { - lpuexcpt = 0; - v47 = 0; - MaxCount = v54; - Buf = v54; - v53 = 0; - v38 = 0; - goto LABEL_14; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v54 = 10; - goto LABEL_4; - } - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v51 ) - { - MaxCount = 22; - lpuexcpt = 0; - v47 = 0; - v53 = 0; - v38 = 0; - v54 = 16; - Buf = 22; - goto LABEL_14; - } - v54 = 16; -LABEL_5: - v7 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v7; - v38 = *((_BYTE *)v55 + 74) == (unsigned __int8)v7; - if ( *((_BYTE *)v55 + 74) == v7 ) - { - v8 = *((_BYTE *)v55 + 16); - } - else - { - v8 = *((_BYTE *)v55 + 16); - if ( *((_BYTE *)v55 + 75) != v7 ) - { -LABEL_42: - v47 = 0; - v53 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v55 + 37) == lpuexcpt || *((_BYTE *)v55 + 36) == lpuexcpt ) - { -LABEL_91: - v51 = 0; - goto LABEL_11; - } - if ( *((_BYTE *)v55 + 78) != lpuexcpt ) - break; - v21 = v54 == 10 || !v53; - if ( !v21 ) - goto LABEL_48; - v53 = v54 == 8 || v45 == 0; - if ( !v53 ) - { - ++v47; - v53 = v21; - goto LABEL_52; - } - v19 = (_DWORD *)a1; - v47 = 0; - v54 = 8; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - { -LABEL_53: - HIDWORD(a1) = -1; - v19[2] = v20 + 1; - goto LABEL_54; - } -LABEL_61: - (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); - v19 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v52 = 1; - goto LABEL_55; - } -LABEL_54: - v52 = 0; - if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) - { - LODWORD(a1) = 0; - v52 = 1; - } -LABEL_55: - v61 = a3 == -1; - v44 = v61 & (a2 != 0); - if ( v44 ) - { - v61 = 0; - if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) - { - a2 = 0; - v61 = v44; - } - } - if ( v61 == v52 ) - { - v51 = 1; - goto LABEL_11; - } - LOBYTE(v22) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_65; - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v22) = *v22; -LABEL_65: - lpuexcpt = (char)v22; - goto LABEL_66; - } - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 != (_BYTE *)-1 ) - goto LABEL_65; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_66: - if ( !v53 ) - goto LABEL_91; - v8 = *((_BYTE *)v55 + 16); - } - if ( !v53 ) - goto LABEL_91; -LABEL_48: - if ( *((_BYTE *)v55 + 76) != lpuexcpt && *((_BYTE *)v55 + 77) != lpuexcpt ) - { - v51 = 0; - v53 = 1; - goto LABEL_11; - } - if ( v45 != 0 && v54 != 16 ) - { - v51 = 0; - v53 = 1; - MaxCount = v54; - Buf = v54; - goto LABEL_14; - } - v47 = 0; - v53 = 0; - v54 = 16; -LABEL_52: - v19 = (_DWORD *)a1; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - goto LABEL_53; - goto LABEL_61; - } - } - if ( v8 && *((_BYTE *)v55 + 37) == v7 || *((_BYTE *)v55 + 36) == v7 ) - goto LABEL_42; - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v47 = 0; - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v53 = 0; - if ( !v51 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v55 + 16); - goto LABEL_42; - } -LABEL_11: - v9 = 22; - if ( v54 != 16 ) - v9 = v54; - MaxCount = v9; - Buf = v9; -LABEL_14: - v63[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v55 + 16) ) - std::string::reserve((int *)v63, (std::string *)0x20, v37); - v40 = v38 + 0x7FFFFFFF; - v10 = v40 % v54; - v43 = v40 / v54; - v49 = *((_BYTE *)v55 + 100); - if ( v49 ) - { - if ( v51 ) - { - v60 = 0; - v46 = 0; - v49 = v51; - v51 = 0; - goto LABEL_30; - } - v46 = 0; - v60 = 0; - Bufa = (char *)v55 + 78; -LABEL_97: - for ( i = *((_BYTE *)v55 + 16); i && *((_BYTE *)v55 + 37) == lpuexcpt; i = *((_BYTE *)v55 + 16) ) - { - if ( !v47 ) - { - v49 = 0; - v51 = i; - goto LABEL_30; - } - std::string::push_back((int *)v63, (std::string *)(char)v47, v37); - v27 = (_DWORD *)a1; - v47 = 0; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 < *(_DWORD *)(a1 + 12) ) - goto LABEL_106; -LABEL_116: - (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); - v27 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_107; - lpuexcptc = v49; -LABEL_108: - v29 = a3 == -1; - v48 = v29 & (a2 != 0); - if ( v48 ) - { - v29 = 0; - if ( a2[2] >= a2[3] ) - { - v31 = (*(int (**)(void))(*a2 + 36))(); - v29 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v29 = v48; - } - } - } - if ( v29 == lpuexcptc ) - goto LABEL_30; - v30 = BYTE4(a1); - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v34 = *(char **)(a1 + 8); - if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) - { - v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v36; - if ( v36 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_97; - } - v30 = *v34; - } - lpuexcpt = v30; - } - if ( lpuexcpt != *((_BYTE *)v55 + 36) ) - { - v25 = memchr(Bufa, lpuexcpt, MaxCount); - if ( v25 ) - { - v26 = v25 - (_BYTE *)Bufa; - if ( v26 > 15 ) - v26 -= 6; - if ( v43 < v60 ) - { - v46 = v49; - } - else - { - v46 |= v40 - v26 < v60 * v54; - ++v47; - v60 = v60 * v54 + v26; - } - v27 = (_DWORD *)a1; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_116; -LABEL_106: - HIDWORD(a1) = -1; - v27[2] = v28 + 1; -LABEL_107: - lpuexcptc = 0; - if ( v27[2] >= v27[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v49; - } - } - goto LABEL_108; - } - } -LABEL_94: - v49 = 0; - } - else - { - v46 = 0; - if ( !v51 ) - { - v60 = 0; -LABEL_19: - v11 = lpuexcpt; - if ( Buf > 10 ) - { - v10 = (unsigned __int8)lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_22; - while ( (unsigned __int8)(v10 - 97) <= 5u ) - { - v12 = v11 - 87; - if ( v43 < v60 ) - goto LABEL_24; -LABEL_71: - v10 = v54 * v60; - v46 |= v40 - v12 < v54 * v60; - v13 = (_DWORD *)a1; - v60 = v54 * v60 + v12; - ++v47; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_25; -LABEL_72: - (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_26; - lpuexcpta = 1; -LABEL_27: - v15 = a3 == -1; - LOBYTE(v10) = v15 & (a2 != 0); - v50 = v10; - if ( (_BYTE)v10 ) - { - v10 = a2[3]; - v15 = 0; - if ( a2[2] >= v10 ) - { - v10 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v10 == -1 ) - { - a2 = 0; - v15 = v50; - } - } - } - if ( lpuexcpta == v15 ) - { - v49 = 1; - goto LABEL_30; - } - v23 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_78; - v33 = *(char **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - v23 = *v33; -LABEL_78: - lpuexcpt = v23; - goto LABEL_19; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_19; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_94; - v10 = -1; - } - v10 -= 65; - if ( (unsigned __int8)v10 <= 5u ) - { - v12 = v11 - 55; - goto LABEL_23; - } - } - else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_22: - v12 = lpuexcpt - 48; -LABEL_23: - if ( v43 >= v60 ) - goto LABEL_71; -LABEL_24: - v13 = (_DWORD *)a1; - v46 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_72; -LABEL_25: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; -LABEL_26: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } - goto LABEL_27; - } - goto LABEL_94; - } - v35 = v51; - v60 = 0; - v51 = 0; - v49 = v35; - } -LABEL_30: - v16 = v63[0]; - if ( *((_DWORD *)v63[0] - 3) ) - { - std::string::push_back((int *)v63, (std::string *)(char)v47, v37); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v55 + 2), *((_DWORD *)v55 + 3), v63) ) - *a5 = 4; - v16 = v63[0]; - if ( !v47 && !v53 && !*((_DWORD *)v63[0] - 3) ) - goto LABEL_33; - } - else if ( !v53 && !v47 ) - { - goto LABEL_33; - } - if ( v51 ) - { -LABEL_33: - *a6 = 0; - *a5 = 4; - goto LABEL_34; - } - if ( v46 ) - { - *a6 = v38 + 0x7FFFFFFF; - *a5 = 4; - } - else - { - v32 = -v60; - if ( !v38 ) - v32 = v60; - *a6 = v32; - } -LABEL_34: - if ( v49 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_123: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v62); - return lpuexcptb; - } - v17 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v17 - 1; - if ( v17 <= 0 ) - goto LABEL_123; - return lpuexcptb; -} -// 472F99: variable 'v37' is possibly undefined -// 472C38: variable 'v10' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00473280) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - _BYTE *v7; // eax - char v8; // al - int v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - unsigned int v20; // eax - bool v21; // al - _BYTE *v22; // eax - char v23; // al - char i; // al - _BYTE *v25; // eax - int v26; // eax - _DWORD *v27; // ecx - unsigned int v28; // eax - char v29; // al - char v30; // al - int v31; // edx - int v32; // eax - char *v33; // eax - char *v34; // eax - bool v35; // al - int v36; // eax - unsigned int v37; // [esp+4h] [ebp-94h] - bool v38; // [esp+1Fh] [ebp-79h] - size_t MaxCount; // [esp+20h] [ebp-78h] - int Buf; // [esp+24h] [ebp-74h] - void *Bufa; // [esp+24h] [ebp-74h] - unsigned int v42; // [esp+28h] [ebp-70h] - char v43; // [esp+28h] [ebp-70h] - int v44; // [esp+2Ch] [ebp-6Ch] - char v45; // [esp+2Ch] [ebp-6Ch] - int v46; // [esp+30h] [ebp-68h] - char v47; // [esp+34h] [ebp-64h] - char v48; // [esp+35h] [ebp-63h] - char v49; // [esp+35h] [ebp-63h] - bool v50; // [esp+36h] [ebp-62h] - char v51; // [esp+36h] [ebp-62h] - bool v52; // [esp+37h] [ebp-61h] - unsigned int v53; // [esp+38h] [ebp-60h] - struct _Unwind_Exception *v54; // [esp+3Ch] [ebp-5Ch] - char lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - unsigned int v59; // [esp+48h] [ebp-50h] - char v60; // [esp+48h] [ebp-50h] - int v61; // [esp+8Bh] [ebp-Dh] BYREF - const char *v62[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v54 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v44 = v6; - if ( v6 == 64 ) - { - v53 = 8; -LABEL_4: - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v50 ) - { - lpuexcpt = 0; - v46 = 0; - MaxCount = v53; - Buf = v53; - v52 = 0; - v38 = 0; - goto LABEL_17; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v53 = 10; - goto LABEL_4; - } - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v50 ) - { - MaxCount = 22; - lpuexcpt = 0; - v46 = 0; - v52 = 0; - v38 = 0; - v53 = 16; - Buf = 22; - goto LABEL_17; - } - v53 = 16; -LABEL_5: - LOBYTE(v7) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_7; - v7 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v7 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v7) = *v7; -LABEL_7: - lpuexcpt = (char)v7; - goto LABEL_8; - } - v7 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v7 != (_BYTE *)-1 ) - goto LABEL_7; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_8: - v8 = *((_BYTE *)v54 + 16); - v38 = *((_BYTE *)v54 + 74) == (unsigned __int8)lpuexcpt; - if ( *((_BYTE *)v54 + 74) != lpuexcpt && *((_BYTE *)v54 + 75) != lpuexcpt - || v8 && *((_BYTE *)v54 + 37) == lpuexcpt - || *((_BYTE *)v54 + 36) == lpuexcpt ) - { - goto LABEL_45; - } - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v46 = 0; - v50 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v52 = 0; - if ( !v50 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v54 + 16); -LABEL_45: - v46 = 0; - v52 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v54 + 37) == lpuexcpt || *((_BYTE *)v54 + 36) == lpuexcpt ) - { -LABEL_94: - v50 = 0; - goto LABEL_14; - } - if ( *((_BYTE *)v54 + 78) != lpuexcpt ) - break; - v21 = v53 == 10 || !v52; - if ( !v21 ) - goto LABEL_51; - v52 = v44 == 0 || v53 == 8; - if ( !v52 ) - { - ++v46; - v52 = v21; - goto LABEL_55; - } - v19 = (_DWORD *)a1; - v46 = 0; - v53 = 8; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - { -LABEL_56: - HIDWORD(a1) = -1; - v19[2] = v20 + 1; - goto LABEL_57; - } -LABEL_64: - (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); - v19 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v51 = 1; - goto LABEL_58; - } -LABEL_57: - v51 = 0; - if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) - { - LODWORD(a1) = 0; - v51 = 1; - } -LABEL_58: - v60 = a3 == -1; - v43 = v60 & (a2 != 0); - if ( v43 ) - { - v60 = 0; - if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) - { - a2 = 0; - v60 = v43; - } - } - if ( v51 == v60 ) - { - v50 = 1; - goto LABEL_14; - } - LOBYTE(v22) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_68; - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v22) = *v22; -LABEL_68: - lpuexcpt = (char)v22; - goto LABEL_69; - } - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 != (_BYTE *)-1 ) - goto LABEL_68; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_69: - if ( !v52 ) - goto LABEL_94; - v8 = *((_BYTE *)v54 + 16); - } - if ( !v52 ) - goto LABEL_94; -LABEL_51: - if ( *((_BYTE *)v54 + 76) != lpuexcpt && *((_BYTE *)v54 + 77) != lpuexcpt ) - { - v50 = 0; - v52 = 1; - goto LABEL_14; - } - if ( v44 != 0 && v53 != 16 ) - { - v50 = 0; - v52 = 1; - MaxCount = v53; - Buf = v53; - goto LABEL_17; - } - v46 = 0; - v52 = 0; - v53 = 16; -LABEL_55: - v19 = (_DWORD *)a1; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - goto LABEL_56; - goto LABEL_64; - } -LABEL_14: - v9 = 22; - if ( v53 != 16 ) - v9 = v53; - MaxCount = v9; - Buf = v9; -LABEL_17: - v62[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v54 + 16) ) - std::string::reserve((int *)v62, (std::string *)0x20, v37); - v10 = 0xFFFFFFFF % v53; - v42 = 0xFFFFFFFF / v53; - v48 = *((_BYTE *)v54 + 100); - if ( v48 ) - { - if ( v50 ) - { - v59 = 0; - v45 = 0; - v48 = v50; - v50 = 0; - goto LABEL_33; - } - v45 = 0; - v59 = 0; - Bufa = (char *)v54 + 78; -LABEL_100: - for ( i = *((_BYTE *)v54 + 16); i && *((_BYTE *)v54 + 37) == lpuexcpt; i = *((_BYTE *)v54 + 16) ) - { - if ( !v46 ) - { - v48 = 0; - v50 = i; - goto LABEL_33; - } - std::string::push_back((int *)v62, (std::string *)(char)v46, v37); - v27 = (_DWORD *)a1; - v46 = 0; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 < *(_DWORD *)(a1 + 12) ) - goto LABEL_109; -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); - v27 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_110; - lpuexcptc = v48; -LABEL_111: - v29 = a3 == -1; - v47 = v29 & (a2 != 0); - if ( v47 ) - { - v29 = 0; - if ( a2[2] >= a2[3] ) - { - v31 = (*(int (**)(void))(*a2 + 36))(); - v29 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v29 = v47; - } - } - } - if ( v29 == lpuexcptc ) - goto LABEL_33; - v30 = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v34 = *(char **)(a1 + 8); - if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) - { - v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v36; - if ( v36 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_100; - } - v30 = *v34; - } - lpuexcpt = v30; - } - if ( lpuexcpt != *((_BYTE *)v54 + 36) ) - { - v25 = memchr(Bufa, lpuexcpt, MaxCount); - if ( v25 ) - { - v26 = v25 - (_BYTE *)Bufa; - if ( v26 > 15 ) - v26 -= 6; - if ( v42 < v59 ) - { - v45 = v48; - } - else - { - v45 |= ~v26 < v53 * v59; - ++v46; - v59 = v53 * v59 + v26; - } - v27 = (_DWORD *)a1; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_118; -LABEL_109: - HIDWORD(a1) = -1; - v27[2] = v28 + 1; -LABEL_110: - lpuexcptc = 0; - if ( v27[2] >= v27[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v48; - } - } - goto LABEL_111; - } - } -LABEL_97: - v48 = 0; - } - else - { - v45 = 0; - if ( !v50 ) - { - v59 = 0; -LABEL_22: - v11 = lpuexcpt; - if ( Buf > 10 ) - { - v10 = (unsigned __int8)lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_25; - while ( (unsigned __int8)(v10 - 97) <= 5u ) - { - v12 = v11 - 87; - if ( v42 < v59 ) - goto LABEL_27; -LABEL_74: - v10 = v53 * v59; - v45 |= ~v12 < v53 * v59; - v13 = (_DWORD *)a1; - v59 = v53 * v59 + v12; - ++v46; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_28; -LABEL_75: - (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_29; - lpuexcpta = 1; -LABEL_30: - v15 = a3 == -1; - LOBYTE(v10) = v15 & (a2 != 0); - v49 = v10; - if ( (_BYTE)v10 ) - { - v15 = 0; - if ( a2[2] >= a2[3] ) - { - v10 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v10 == -1 ) - { - a2 = 0; - v15 = v49; - } - } - } - if ( lpuexcpta == v15 ) - { - v48 = 1; - goto LABEL_33; - } - v23 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_81; - v33 = *(char **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - v23 = *v33; -LABEL_81: - lpuexcpt = v23; - goto LABEL_22; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_22; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_97; - v10 = -1; - } - v10 -= 65; - if ( (unsigned __int8)v10 <= 5u ) - { - v12 = v11 - 55; - goto LABEL_26; - } - } - else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_25: - v12 = lpuexcpt - 48; -LABEL_26: - if ( v42 >= v59 ) - goto LABEL_74; -LABEL_27: - v13 = (_DWORD *)a1; - v45 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_75; -LABEL_28: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; -LABEL_29: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } - goto LABEL_30; - } - goto LABEL_97; - } - v35 = v50; - v59 = 0; - v50 = 0; - v48 = v35; - } -LABEL_33: - v16 = v62[0]; - if ( *((_DWORD *)v62[0] - 3) ) - { - std::string::push_back((int *)v62, (std::string *)(char)v46, v37); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v54 + 2), *((_DWORD *)v54 + 3), v62) ) - *a5 = 4; - v16 = v62[0]; - if ( !v46 && !v52 && !*((_DWORD *)v62[0] - 3) ) - goto LABEL_36; - } - else if ( !v52 && !v46 ) - { - goto LABEL_36; - } - if ( v50 ) - { -LABEL_36: - *a6 = 0; - *a5 = 4; - goto LABEL_37; - } - if ( v45 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v32 = -v59; - if ( !v38 ) - v32 = v59; - *a6 = v32; - } -LABEL_37: - if ( v48 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_125: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v61); - return lpuexcptb; - } - v17 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v17 - 1; - if ( v17 <= 0 ) - goto LABEL_125; - return lpuexcptb; -} -// 473AD9: variable 'v37' is possibly undefined -// 473787: variable 'v10' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00473DF0) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _WORD *a6) -{ - int v6; // eax - _BYTE *v7; // eax - char v8; // al - int v9; // eax - unsigned int v10; // edx - int v11; // eax - int v12; // eax - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int v17; // eax - _DWORD *v19; // ecx - unsigned int v20; // eax - bool v21; // al - _BYTE *v22; // eax - char v23; // al - char i; // al - _BYTE *v25; // eax - int v26; // eax - _DWORD *v27; // ecx - unsigned int v28; // eax - char v29; // al - char v30; // al - int v31; // edx - int v32; // eax - char *v33; // eax - char *v34; // eax - bool v35; // al - bool v36; // al - int v37; // eax - unsigned int v38; // [esp+4h] [ebp-94h] - bool v39; // [esp+1Fh] [ebp-79h] - size_t MaxCount; // [esp+20h] [ebp-78h] - int Buf; // [esp+24h] [ebp-74h] - void *Bufa; // [esp+24h] [ebp-74h] - int v43; // [esp+28h] [ebp-70h] - char v44; // [esp+28h] [ebp-70h] - int v45; // [esp+2Ch] [ebp-6Ch] - char v46; // [esp+2Ch] [ebp-6Ch] - int v47; // [esp+30h] [ebp-68h] - char v48; // [esp+34h] [ebp-64h] - char v49; // [esp+35h] [ebp-63h] - char v50; // [esp+35h] [ebp-63h] - bool v51; // [esp+36h] [ebp-62h] - char v52; // [esp+36h] [ebp-62h] - bool v53; // [esp+37h] [ebp-61h] - int v54; // [esp+38h] [ebp-60h] - struct _Unwind_Exception *v55; // [esp+3Ch] [ebp-5Ch] - char lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - unsigned __int16 v60; // [esp+48h] [ebp-50h] - char v61; // [esp+48h] [ebp-50h] - int v62; // [esp+8Bh] [ebp-Dh] BYREF - const char *v63[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v55 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v45 = v6; - if ( v6 == 64 ) - { - v54 = 8; -LABEL_4: - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v51 ) - { - lpuexcpt = 0; - v47 = 0; - MaxCount = v54; - Buf = v54; - v53 = 0; - v39 = 0; - goto LABEL_17; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v54 = 10; - goto LABEL_4; - } - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v51 ) - { - MaxCount = 22; - lpuexcpt = 0; - v47 = 0; - v53 = 0; - v39 = 0; - v54 = 16; - Buf = 22; - goto LABEL_17; - } - v54 = 16; -LABEL_5: - LOBYTE(v7) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_7; - v7 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v7 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v7) = *v7; -LABEL_7: - lpuexcpt = (char)v7; - goto LABEL_8; - } - v7 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v7 != (_BYTE *)-1 ) - goto LABEL_7; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_8: - v8 = *((_BYTE *)v55 + 16); - v39 = *((_BYTE *)v55 + 74) == (unsigned __int8)lpuexcpt; - if ( *((_BYTE *)v55 + 74) != lpuexcpt && *((_BYTE *)v55 + 75) != lpuexcpt - || v8 && *((_BYTE *)v55 + 37) == lpuexcpt - || *((_BYTE *)v55 + 36) == lpuexcpt ) - { - goto LABEL_45; - } - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v47 = 0; - v51 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v53 = 0; - if ( !v51 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v55 + 16); -LABEL_45: - v47 = 0; - v53 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v55 + 37) == lpuexcpt || *((_BYTE *)v55 + 36) == lpuexcpt ) - { -LABEL_94: - v51 = 0; - goto LABEL_14; - } - if ( *((_BYTE *)v55 + 78) != lpuexcpt ) - break; - v21 = v54 == 10 || !v53; - if ( !v21 ) - goto LABEL_51; - v53 = v45 == 0 || v54 == 8; - if ( !v53 ) - { - ++v47; - v53 = v21; - goto LABEL_55; - } - v19 = (_DWORD *)a1; - v47 = 0; - v54 = 8; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - { -LABEL_56: - HIDWORD(a1) = -1; - v19[2] = v20 + 1; - goto LABEL_57; - } -LABEL_64: - (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); - v19 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v52 = 1; - goto LABEL_58; - } -LABEL_57: - v52 = 0; - if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) - { - LODWORD(a1) = 0; - v52 = 1; - } -LABEL_58: - v61 = a3 == -1; - v44 = v61 & (a2 != 0); - if ( v44 ) - { - v61 = 0; - if ( a2[2] >= a2[3] && (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1 ) - { - a2 = 0; - v61 = v44; - } - } - if ( v52 == v61 ) - { - v51 = 1; - goto LABEL_14; - } - LOBYTE(v22) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_68; - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v22) = *v22; -LABEL_68: - lpuexcpt = (char)v22; - goto LABEL_69; - } - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 != (_BYTE *)-1 ) - goto LABEL_68; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_69: - if ( !v53 ) - goto LABEL_94; - v8 = *((_BYTE *)v55 + 16); - } - if ( !v53 ) - goto LABEL_94; -LABEL_51: - if ( *((_BYTE *)v55 + 76) != lpuexcpt && *((_BYTE *)v55 + 77) != lpuexcpt ) - { - v51 = 0; - v53 = 1; - goto LABEL_14; - } - if ( v45 != 0 && v54 != 16 ) - { - v51 = 0; - v53 = 1; - MaxCount = v54; - Buf = v54; - goto LABEL_17; - } - v47 = 0; - v53 = 0; - v54 = 16; -LABEL_55: - v19 = (_DWORD *)a1; - v20 = *(_DWORD *)(a1 + 8); - if ( v20 < *(_DWORD *)(a1 + 12) ) - goto LABEL_56; - goto LABEL_64; - } -LABEL_14: - v9 = 22; - if ( v54 != 16 ) - v9 = v54; - MaxCount = v9; - Buf = v9; -LABEL_17: - v63[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v55 + 16) ) - std::string::reserve((int *)v63, (std::string *)0x20, v38); - v10 = 0xFFFF % v54; - v43 = 0xFFFF / v54; - v49 = *((_BYTE *)v55 + 100); - if ( v49 ) - { - if ( v51 ) - { - v36 = v51; - v46 = 0; - v51 = 0; - v49 = v36; - v60 = 0; - goto LABEL_33; - } - v46 = 0; - v60 = 0; - Bufa = (char *)v55 + 78; -LABEL_100: - for ( i = *((_BYTE *)v55 + 16); i && *((_BYTE *)v55 + 37) == lpuexcpt; i = *((_BYTE *)v55 + 16) ) - { - if ( !v47 ) - { - v49 = 0; - v51 = i; - goto LABEL_33; - } - std::string::push_back((int *)v63, (std::string *)(char)v47, v38); - v27 = (_DWORD *)a1; - v47 = 0; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 < *(_DWORD *)(a1 + 12) ) - goto LABEL_109; -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); - v27 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_110; - lpuexcptc = v49; -LABEL_111: - v29 = a3 == -1; - v48 = v29 & (a2 != 0); - if ( v48 ) - { - v29 = 0; - if ( a2[2] >= a2[3] ) - { - v31 = (*(int (**)(void))(*a2 + 36))(); - v29 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v29 = v48; - } - } - } - if ( v29 == lpuexcptc ) - goto LABEL_33; - v30 = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v34 = *(char **)(a1 + 8); - if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) - { - v37 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v37; - if ( v37 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_100; - } - v30 = *v34; - } - lpuexcpt = v30; - } - if ( lpuexcpt != *((_BYTE *)v55 + 36) ) - { - v25 = memchr(Bufa, lpuexcpt, MaxCount); - if ( v25 ) - { - v26 = v25 - (_BYTE *)Bufa; - if ( v26 > 15 ) - v26 -= 6; - if ( (unsigned __int16)v43 < v60 ) - { - v46 = v49; - } - else - { - v46 |= (unsigned __int16)(v54 * v60) > 0xFFFF - v26; - ++v47; - v60 = v54 * v60 + v26; - } - v27 = (_DWORD *)a1; - v28 = *(_DWORD *)(a1 + 8); - if ( v28 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_118; -LABEL_109: - HIDWORD(a1) = -1; - v27[2] = v28 + 1; -LABEL_110: - lpuexcptc = 0; - if ( v27[2] >= v27[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v49; - } - } - goto LABEL_111; - } - } -LABEL_97: - v49 = 0; - } - else - { - v46 = 0; - if ( !v51 ) - { - v60 = 0; -LABEL_22: - v11 = lpuexcpt; - if ( Buf > 10 ) - { - v10 = (unsigned __int8)lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_25; - while ( (unsigned __int8)(v10 - 97) <= 5u ) - { - v12 = v11 - 87; - if ( (unsigned __int16)v43 < v60 ) - goto LABEL_27; -LABEL_74: - v10 = v60; - LOWORD(v10) = v54 * v60; - v46 |= (unsigned __int16)(v54 * v60) > 0xFFFF - v12; - v13 = (_DWORD *)a1; - v60 = v54 * v60 + v12; - ++v47; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_28; -LABEL_75: - (*(void (__fastcall **)(_DWORD *, unsigned int))(*v13 + 40))(v13, v10); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_29; - lpuexcpta = 1; -LABEL_30: - v15 = a3 == -1; - LOBYTE(v10) = v15 & (a2 != 0); - v50 = v10; - if ( (_BYTE)v10 ) - { - v10 = a2[3]; - v15 = 0; - if ( a2[2] >= v10 ) - { - v10 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v10 == -1 ) - { - a2 = 0; - v15 = v50; - } - } - } - if ( lpuexcpta == v15 ) - { - v49 = 1; - goto LABEL_33; - } - v23 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_81; - v33 = *(char **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - v23 = *v33; -LABEL_81: - lpuexcpt = v23; - goto LABEL_22; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_22; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_97; - v10 = -1; - } - v10 -= 65; - if ( (unsigned __int8)v10 <= 5u ) - { - v12 = v11 - 55; - goto LABEL_26; - } - } - else if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_25: - v12 = lpuexcpt - 48; -LABEL_26: - if ( (unsigned __int16)v43 >= v60 ) - goto LABEL_74; -LABEL_27: - v13 = (_DWORD *)a1; - v46 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_75; -LABEL_28: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; -LABEL_29: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v13 + 36))(v13, v10) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } - goto LABEL_30; - } - goto LABEL_97; - } - v35 = v51; - v51 = 0; - v49 = v35; - v60 = 0; - } -LABEL_33: - v16 = v63[0]; - if ( *((_DWORD *)v63[0] - 3) ) - { - std::string::push_back((int *)v63, (std::string *)(char)v47, v38); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v55 + 2), *((_DWORD *)v55 + 3), v63) ) - *a5 = 4; - v16 = v63[0]; - if ( !v47 && !v53 && !*((_DWORD *)v63[0] - 3) ) - goto LABEL_36; - } - else if ( !v53 && !v47 ) - { - goto LABEL_36; - } - if ( v51 ) - { -LABEL_36: - *a6 = 0; - *a5 = 4; - goto LABEL_37; - } - if ( v46 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v32 = -v60; - if ( !v39 ) - LOWORD(v32) = v60; - *a6 = v32; - } -LABEL_37: - if ( v49 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_125: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v62); - return lpuexcptb; - } - v17 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v17 - 1; - if ( v17 <= 0 ) - goto LABEL_125; - return lpuexcptb; -} -// 474661: variable 'v38' is possibly undefined -// 474300: variable 'v10' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00474970) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // dl - char v8; // al - int v9; // eax - unsigned __int64 v10; // kr00_8 - int v11; // esi - int v12; // esi - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - int *v17; // eax - int v18; // eax - _DWORD *v20; // ecx - unsigned int v21; // eax - bool v22; // al - _BYTE *v23; // eax - char v24; // al - char v25; // al - int v26; // eax - unsigned int v27; // edx - int *v28; // esi - _DWORD *v29; // eax - int v30; // edx - char v31; // al - _BYTE *v32; // eax - int v33; // esi - _DWORD *v34; // ecx - unsigned int v35; // eax - char v36; // al - char v37; // al - int v38; // edx - char *v39; // eax - char *v40; // eax - bool v41; // al - int v42; // eax - int v43; // eax - unsigned int v44; // [esp+4h] [ebp-B4h] - char v45; // [esp+4h] [ebp-B4h] - char v46; // [esp+1Bh] [ebp-9Dh] - size_t MaxCount; // [esp+1Ch] [ebp-9Ch] - unsigned __int64 v48; // [esp+20h] [ebp-98h] - int Buf; // [esp+28h] [ebp-90h] - void *Bufa; // [esp+28h] [ebp-90h] - char v51; // [esp+30h] [ebp-88h] - int v52; // [esp+34h] [ebp-84h] - char v53; // [esp+34h] [ebp-84h] - int v54; // [esp+38h] [ebp-80h] - int v55; // [esp+40h] [ebp-78h] - bool v56; // [esp+44h] [ebp-74h] - char v57; // [esp+45h] [ebp-73h] - char v58; // [esp+45h] [ebp-73h] - bool v59; // [esp+46h] [ebp-72h] - char v60; // [esp+46h] [ebp-72h] - bool v61; // [esp+47h] [ebp-71h] - unsigned __int64 v62; // [esp+48h] [ebp-70h] - char v63; // [esp+48h] [ebp-70h] - char lpuexcpt; // [esp+50h] [ebp-68h] - char lpuexcpta; // [esp+50h] [ebp-68h] - unsigned __int64 lpuexcptb; // [esp+50h] [ebp-68h] - char lpuexcptc; // [esp+50h] [ebp-68h] - struct _Unwind_Exception *v68; // [esp+58h] [ebp-60h] - int v69; // [esp+9Bh] [ebp-1Dh] BYREF - const char *v70[7]; // [esp+9Ch] [ebp-1Ch] BYREF - - v68 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v52 = v6; - if ( v6 == 64 ) - { - v54 = 8; -LABEL_4: - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - lpuexcpt = 0; - v55 = 0; - MaxCount = v54; - Buf = v54; - v61 = 0; - v56 = 0; - goto LABEL_14; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v54 = 10; - goto LABEL_4; - } - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - MaxCount = 22; - lpuexcpt = 0; - v55 = 0; - v61 = 0; - v56 = 0; - v54 = 16; - Buf = 22; - goto LABEL_14; - } - v54 = 16; -LABEL_5: - v7 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v7; - v56 = *((_BYTE *)v68 + 74) == (unsigned __int8)v7; - if ( *((_BYTE *)v68 + 74) == v7 ) - { - v8 = *((_BYTE *)v68 + 16); - } - else - { - v8 = *((_BYTE *)v68 + 16); - if ( *((_BYTE *)v68 + 75) != v7 ) - { -LABEL_44: - v55 = 0; - v61 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v68 + 37) == lpuexcpt || *((_BYTE *)v68 + 36) == lpuexcpt ) - { -LABEL_95: - v59 = 0; - goto LABEL_11; - } - if ( *((_BYTE *)v68 + 78) != lpuexcpt ) - break; - v22 = v54 == 10 || !v61; - if ( !v22 ) - goto LABEL_50; - v61 = v54 == 8 || v52 == 0; - if ( !v61 ) - { - ++v55; - v61 = v22; - goto LABEL_54; - } - v20 = (_DWORD *)a1; - v55 = 0; - v54 = 8; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 < *(_DWORD *)(a1 + 12) ) - { -LABEL_55: - HIDWORD(a1) = -1; - v20[2] = v21 + 1; - goto LABEL_56; - } -LABEL_63: - (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); - v20 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v60 = 1; - goto LABEL_57; - } -LABEL_56: - v60 = 0; - if ( v20[2] >= v20[3] && (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20) == -1 ) - { - LODWORD(a1) = 0; - v60 = 1; - } -LABEL_57: - v63 = a3 == -1; - v51 = v63 & (a2 != 0); - if ( v51 ) - { - v63 = 0; - if ( a2[2] >= a2[3] && (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1 ) - { - a2 = 0; - v63 = v51; - } - } - if ( v63 == v60 ) - { - v59 = 1; - goto LABEL_11; - } - LOBYTE(v23) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_67; - v23 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v23 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v23) = *v23; -LABEL_67: - lpuexcpt = (char)v23; - goto LABEL_68; - } - v23 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v23 != (_BYTE *)-1 ) - goto LABEL_67; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_68: - if ( !v61 ) - goto LABEL_95; - v8 = *((_BYTE *)v68 + 16); - } - if ( !v61 ) - goto LABEL_95; -LABEL_50: - if ( *((_BYTE *)v68 + 76) != lpuexcpt && *((_BYTE *)v68 + 77) != lpuexcpt ) - { - v59 = 0; - v61 = 1; - goto LABEL_11; - } - if ( v52 != 0 && v54 != 16 ) - { - v59 = 0; - v61 = 1; - MaxCount = v54; - Buf = v54; - goto LABEL_14; - } - v55 = 0; - v61 = 0; - v54 = 16; -LABEL_54: - v20 = (_DWORD *)a1; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 < *(_DWORD *)(a1 + 12) ) - goto LABEL_55; - goto LABEL_63; - } - } - if ( v8 && *((_BYTE *)v68 + 37) == v7 || *((_BYTE *)v68 + 36) == v7 ) - goto LABEL_44; - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v55 = 0; - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v61 = 0; - if ( !v59 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v68 + 16); - goto LABEL_44; - } -LABEL_11: - v9 = 22; - if ( v54 != 16 ) - v9 = v54; - MaxCount = v9; - Buf = v9; -LABEL_14: - v70[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v68 + 16) ) - std::string::reserve((int *)v70, (std::string *)0x20, v44); - v48 = 0x8000000000000000LL; - if ( !v56 ) - v48 = 0x7FFFFFFFFFFFFFFFLL; - v10 = v48 / v54; - v57 = *((_BYTE *)v68 + 100); - if ( !v57 ) - { - v53 = 0; - if ( v59 ) - { - v41 = v59; - v62 = 0LL; - v59 = 0; - v57 = v41; - goto LABEL_32; - } - v62 = 0LL; -LABEL_21: - v11 = lpuexcpt; - if ( Buf <= 10 ) - { - if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_24: - v12 = lpuexcpt - 48; - goto LABEL_25; - } -LABEL_98: - v57 = 0; - goto LABEL_32; - } - v24 = lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_24; - while ( 1 ) - { - if ( (unsigned __int8)(v24 - 97) > 5u ) - { - if ( (unsigned __int8)(v24 - 65) > 5u ) - goto LABEL_98; - v12 = v11 - 55; - } - else - { - v12 = v11 - 87; - } -LABEL_25: - if ( v10 >= v62 ) - { - v53 |= v48 - v12 < v54 * v62; - v13 = (_DWORD *)a1; - v62 = v54 * v62 + v12; - ++v55; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - { -LABEL_27: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; - goto LABEL_28; - } - } - else - { - v13 = (_DWORD *)a1; - v53 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_27; - } - (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpta = 1; - goto LABEL_29; - } -LABEL_28: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } -LABEL_29: - v15 = a3 == -1; - v58 = v15 & (a2 != 0); - if ( v58 ) - { - v15 = 0; - if ( a2[2] >= a2[3] ) - { - v30 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v30 == -1 ) - { - a2 = 0; - v15 = v58; - } - } - } - if ( lpuexcpta == v15 ) - { - v57 = 1; - goto LABEL_32; - } - v25 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_80; - v39 = *(char **)(a1 + 8); - if ( (unsigned int)v39 < *(_DWORD *)(a1 + 12) ) - { - v25 = *v39; -LABEL_80: - lpuexcpt = v25; - goto LABEL_21; - } - v42 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v42; - v11 = v42; - if ( v42 != -1 ) - goto LABEL_21; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_98; - v24 = -1; - } - } - if ( v59 ) - { - v62 = 0LL; - v57 = v59; - v53 = 0; - v59 = 0; - } - else - { - v53 = 0; - v62 = 0LL; - Bufa = (char *)v68 + 78; -LABEL_101: - v31 = *((_BYTE *)v68 + 16); - if ( !v31 || *((_BYTE *)v68 + 37) != lpuexcpt ) - { -LABEL_103: - if ( lpuexcpt == *((_BYTE *)v68 + 36) ) - goto LABEL_98; - v32 = memchr(Bufa, lpuexcpt, MaxCount); - if ( !v32 ) - goto LABEL_98; - v33 = v32 - (_BYTE *)Bufa; - if ( v32 - (_BYTE *)Bufa > 15 ) - v33 -= 6; - if ( v10 < v62 ) - { - v53 = v57; - } - else - { - v53 |= v48 - v33 < v54 * v62; - ++v55; - v62 = v54 * v62 + v33; - } - v34 = (_DWORD *)a1; - v35 = *(_DWORD *)(a1 + 8); - if ( v35 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_120; -LABEL_110: - HIDWORD(a1) = -1; - v34[2] = v35 + 1; -LABEL_111: - lpuexcptc = 0; - if ( v34[2] >= v34[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v34 + 36))(v34) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v57; - } - } - goto LABEL_112; - } - while ( v55 ) - { - std::string::push_back((int *)v70, (std::string *)(char)v55, v45); - v34 = (_DWORD *)a1; - v55 = 0; - v35 = *(_DWORD *)(a1 + 8); - if ( v35 < *(_DWORD *)(a1 + 12) ) - goto LABEL_110; -LABEL_120: - (*(void (__fastcall **)(_DWORD *))(*v34 + 40))(v34); - v34 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_111; - lpuexcptc = v57; -LABEL_112: - v36 = a3 == -1; - v46 = v36 & (a2 != 0); - if ( v46 ) - { - v36 = 0; - if ( a2[2] >= a2[3] ) - { - v38 = (*(int (**)(void))(*a2 + 36))(); - v36 = 0; - if ( v38 == -1 ) - { - a2 = 0; - v36 = v46; - } - } - } - if ( v36 == lpuexcptc ) - goto LABEL_32; - v37 = BYTE4(a1); - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v40 = *(char **)(a1 + 8); - if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) - { - v43 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v43; - if ( v43 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_101; - } - v37 = *v40; - } - lpuexcpt = v37; - v31 = *((_BYTE *)v68 + 16); - if ( !v31 || *((_BYTE *)v68 + 37) != lpuexcpt ) - goto LABEL_103; - } - v57 = 0; - v59 = v31; - } -LABEL_32: - v16 = v70[0]; - if ( *((_DWORD *)v70[0] - 3) ) - { - std::string::push_back((int *)v70, (std::string *)(char)v55, v45); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v68 + 2), *((_DWORD *)v68 + 3), v70) ) - *a5 = 4; - v16 = v70[0]; - if ( !v55 && !v61 && !*((_DWORD *)v70[0] - 3) ) - goto LABEL_35; - } - else if ( !v61 && !v55 ) - { - goto LABEL_35; - } - if ( v59 ) - { -LABEL_35: - v17 = a6; - *a6 = 0; - v17[1] = 0; - *a5 = 4; - goto LABEL_36; - } - if ( v53 ) - { - v26 = 0; - v27 = 0x80000000; - if ( !v56 ) - { - v26 = -1; - v27 = 0x7FFFFFFF; - } - v28 = a6; - *a6 = v26; - v29 = a5; - v28[1] = v27; - *v29 = 4; - } - else - { - if ( v56 ) - v62 = -(__int64)v62; - *(_QWORD *)a6 = v62; - } -LABEL_36: - if ( v57 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_127: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v69); - return lpuexcptb; - } - v18 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v18 - 1; - if ( v18 <= 0 ) - goto LABEL_127; - return lpuexcptb; -} -// 475309: variable 'v44' is possibly undefined -// 474FC9: variable 'v45' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00475620) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_int( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // eax - char v7; // dl - char v8; // al - int v9; // eax - unsigned __int64 v10; // kr08_8 - int v11; // eax - int v12; // esi - _DWORD *v13; // ecx - unsigned int v14; // eax - char v15; // al - const char *v16; // ecx - _DWORD *v17; // eax - int v18; // eax - _DWORD *v20; // ecx - unsigned int v21; // eax - bool v22; // al - _BYTE *v23; // eax - char v24; // dl - char v25; // al - int v26; // edx - char v27; // al - _BYTE *v28; // eax - int v29; // esi - _DWORD *v30; // ecx - unsigned int v31; // eax - char v32; // al - char v33; // al - int v34; // edx - _DWORD *v35; // eax - char *v36; // eax - char *v37; // eax - bool v38; // al - int v39; // eax - unsigned int v40; // [esp+4h] [ebp-A4h] - char v41; // [esp+4h] [ebp-A4h] - bool v42; // [esp+13h] [ebp-95h] - size_t MaxCount; // [esp+14h] [ebp-94h] - int Buf; // [esp+18h] [ebp-90h] - void *Bufa; // [esp+18h] [ebp-90h] - char v46; // [esp+20h] [ebp-88h] - int v47; // [esp+24h] [ebp-84h] - char v48; // [esp+24h] [ebp-84h] - int v49; // [esp+28h] [ebp-80h] - int v50; // [esp+30h] [ebp-78h] - char v51; // [esp+34h] [ebp-74h] - char v52; // [esp+35h] [ebp-73h] - char v53; // [esp+35h] [ebp-73h] - bool v54; // [esp+36h] [ebp-72h] - char v55; // [esp+36h] [ebp-72h] - bool v56; // [esp+37h] [ebp-71h] - unsigned __int64 v57; // [esp+38h] [ebp-70h] - char v58; // [esp+38h] [ebp-70h] - char lpuexcpt; // [esp+40h] [ebp-68h] - char lpuexcpta; // [esp+40h] [ebp-68h] - unsigned __int64 lpuexcptb; // [esp+40h] [ebp-68h] - char lpuexcptc; // [esp+40h] [ebp-68h] - struct _Unwind_Exception *v63; // [esp+48h] [ebp-60h] - int v64; // [esp+8Bh] [ebp-1Dh] BYREF - const char *v65[7]; // [esp+8Ch] [ebp-1Ch] BYREF - - v63 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v47 = v6; - if ( v6 == 64 ) - { - v49 = 8; -LABEL_4: - v54 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v54 ) - { - lpuexcpt = 0; - v50 = 0; - MaxCount = v49; - Buf = v49; - v56 = 0; - v42 = 0; - goto LABEL_14; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v49 = 10; - goto LABEL_4; - } - v54 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v54 ) - { - MaxCount = 22; - lpuexcpt = 0; - v50 = 0; - v56 = 0; - v42 = 0; - v49 = 16; - Buf = 22; - goto LABEL_14; - } - v49 = 16; -LABEL_5: - v7 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v7; - v42 = *((_BYTE *)v63 + 74) == (unsigned __int8)v7; - if ( *((_BYTE *)v63 + 74) == v7 ) - { - v8 = *((_BYTE *)v63 + 16); - } - else - { - v8 = *((_BYTE *)v63 + 16); - if ( *((_BYTE *)v63 + 75) != v7 ) - { -LABEL_42: - v50 = 0; - v56 = 0; - while ( 1 ) - { - if ( v8 && *((_BYTE *)v63 + 37) == lpuexcpt || *((_BYTE *)v63 + 36) == lpuexcpt ) - { -LABEL_94: - v54 = 0; - goto LABEL_11; - } - if ( *((_BYTE *)v63 + 78) != lpuexcpt ) - break; - v22 = v49 == 10 || !v56; - if ( !v22 ) - goto LABEL_48; - v56 = v49 == 8 || v47 == 0; - if ( !v56 ) - { - ++v50; - v56 = v22; - goto LABEL_52; - } - v20 = (_DWORD *)a1; - v50 = 0; - v49 = 8; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 < *(_DWORD *)(a1 + 12) ) - { -LABEL_53: - HIDWORD(a1) = -1; - v20[2] = v21 + 1; - goto LABEL_54; - } -LABEL_61: - (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); - v20 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v55 = 1; - goto LABEL_55; - } -LABEL_54: - v55 = 0; - if ( v20[2] >= v20[3] && (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20) == -1 ) - { - LODWORD(a1) = 0; - v55 = 1; - } -LABEL_55: - v58 = a3 == -1; - v46 = v58 & (a2 != 0); - if ( v46 ) - { - v58 = 0; - if ( a2[2] >= a2[3] && (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1 ) - { - a2 = 0; - v58 = v46; - } - } - if ( v58 == v55 ) - { - v54 = 1; - goto LABEL_11; - } - LOBYTE(v23) = BYTE4(a1); - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_65; - v23 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v23 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v23) = *v23; -LABEL_65: - lpuexcpt = (char)v23; - goto LABEL_66; - } - v23 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v23 != (_BYTE *)-1 ) - goto LABEL_65; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_66: - if ( !v56 ) - goto LABEL_94; - v8 = *((_BYTE *)v63 + 16); - } - if ( !v56 ) - goto LABEL_94; -LABEL_48: - if ( *((_BYTE *)v63 + 76) != lpuexcpt && *((_BYTE *)v63 + 77) != lpuexcpt ) - { - v54 = 0; - v56 = 1; - goto LABEL_11; - } - if ( v47 != 0 && v49 != 16 ) - { - v54 = 0; - v56 = 1; - MaxCount = v49; - Buf = v49; - goto LABEL_14; - } - v50 = 0; - v56 = 0; - v49 = 16; -LABEL_52: - v20 = (_DWORD *)a1; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 < *(_DWORD *)(a1 + 12) ) - goto LABEL_53; - goto LABEL_61; - } - } - if ( v8 && *((_BYTE *)v63 + 37) == v7 || *((_BYTE *)v63 + 36) == v7 ) - goto LABEL_42; - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v50 = 0; - v54 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v56 = 0; - if ( !v54 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v8 = *((_BYTE *)v63 + 16); - goto LABEL_42; - } -LABEL_11: - v9 = 22; - if ( v49 != 16 ) - v9 = v49; - MaxCount = v9; - Buf = v9; -LABEL_14: - v65[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v63 + 16) ) - std::string::reserve((int *)v65, (std::string *)0x20, v40); - v10 = 0xFFFFFFFFFFFFFFFFLL / v49; - v52 = *((_BYTE *)v63 + 100); - if ( !v52 ) - { - v48 = 0; - if ( v54 ) - { - v38 = v54; - v57 = 0LL; - v54 = 0; - v52 = v38; - goto LABEL_30; - } - v57 = 0LL; -LABEL_19: - v11 = lpuexcpt; - if ( Buf <= 10 ) - { - if ( lpuexcpt > 47 && (char)(Buf + 48) > lpuexcpt ) - { -LABEL_22: - v12 = lpuexcpt - 48; - goto LABEL_23; - } -LABEL_95: - v52 = 0; - goto LABEL_30; - } - v24 = lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - goto LABEL_22; - while ( 1 ) - { - v12 = v11 - 87; - if ( (unsigned __int8)(v24 - 97) > 5u ) - { - if ( (unsigned __int8)(v24 - 65) > 5u ) - goto LABEL_95; - v12 = v11 - 55; - } -LABEL_23: - if ( v10 >= v57 ) - { - v48 |= __PAIR64__(~(v12 >> 31), ~v12) < v49 * v57; - v13 = (_DWORD *)a1; - ++v50; - v57 = v49 * v57 + v12; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - { -LABEL_25: - HIDWORD(a1) = -1; - v13[2] = v14 + 1; - goto LABEL_26; - } - } - else - { - v13 = (_DWORD *)a1; - v48 = 1; - v14 = *(_DWORD *)(a1 + 8); - if ( v14 < *(_DWORD *)(a1 + 12) ) - goto LABEL_25; - } - (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); - v13 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpta = 1; - goto LABEL_27; - } -LABEL_26: - lpuexcpta = 0; - if ( v13[2] >= v13[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - } -LABEL_27: - v15 = a3 == -1; - v53 = v15 & (a2 != 0); - if ( v53 ) - { - v15 = 0; - if ( a2[2] >= a2[3] ) - { - v26 = (*(int (**)(void))(*a2 + 36))(); - v15 = 0; - if ( v26 == -1 ) - { - a2 = 0; - v15 = v53; - } - } - } - if ( v15 == lpuexcpta ) - { - v52 = 1; - goto LABEL_30; - } - v25 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_79; - v36 = *(char **)(a1 + 8); - if ( (unsigned int)v36 < *(_DWORD *)(a1 + 12) ) - { - v25 = *v36; -LABEL_79: - lpuexcpt = v25; - goto LABEL_19; - } - v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v11; - if ( v11 != -1 ) - goto LABEL_19; - LODWORD(a1) = 0; - if ( Buf <= 10 ) - goto LABEL_95; - v24 = -1; - } - } - if ( v54 ) - { - v57 = 0LL; - v52 = v54; - v48 = 0; - v54 = 0; - } - else - { - v48 = 0; - v57 = 0LL; - Bufa = (char *)v63 + 78; -LABEL_98: - v27 = *((_BYTE *)v63 + 16); - if ( !v27 || *((_BYTE *)v63 + 37) != lpuexcpt ) - { -LABEL_100: - if ( lpuexcpt == *((_BYTE *)v63 + 36) ) - goto LABEL_95; - v28 = memchr(Bufa, lpuexcpt, MaxCount); - if ( !v28 ) - goto LABEL_95; - v29 = v28 - (_BYTE *)Bufa; - if ( v28 - (_BYTE *)Bufa > 15 ) - v29 -= 6; - if ( v10 < v57 ) - { - v48 = v52; - } - else - { - v48 |= __PAIR64__(~(v29 >> 31), ~v29) < v49 * v57; - v57 = v49 * v57 + v29; - ++v50; - } - v30 = (_DWORD *)a1; - v31 = *(_DWORD *)(a1 + 8); - if ( v31 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_117; -LABEL_107: - HIDWORD(a1) = -1; - v30[2] = v31 + 1; -LABEL_108: - lpuexcptc = 0; - if ( v30[2] >= v30[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v30 + 36))(v30) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v52; - } - } - goto LABEL_109; - } - while ( v50 ) - { - std::string::push_back((int *)v65, (std::string *)(char)v50, v41); - v30 = (_DWORD *)a1; - v50 = 0; - v31 = *(_DWORD *)(a1 + 8); - if ( v31 < *(_DWORD *)(a1 + 12) ) - goto LABEL_107; -LABEL_117: - (*(void (__fastcall **)(_DWORD *))(*v30 + 40))(v30); - v30 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_108; - lpuexcptc = v52; -LABEL_109: - v32 = a3 == -1; - v51 = v32 & (a2 != 0); - if ( v51 ) - { - v32 = 0; - if ( a2[2] >= a2[3] ) - { - v34 = (*(int (**)(void))(*a2 + 36))(); - v32 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v32 = v51; - } - } - } - if ( lpuexcptc == v32 ) - goto LABEL_30; - v33 = BYTE4(a1); - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v37 = *(char **)(a1 + 8); - if ( (unsigned int)v37 >= *(_DWORD *)(a1 + 12) ) - { - v39 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v39; - if ( v39 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_98; - } - v33 = *v37; - } - lpuexcpt = v33; - v27 = *((_BYTE *)v63 + 16); - if ( !v27 || *((_BYTE *)v63 + 37) != lpuexcpt ) - goto LABEL_100; - } - v52 = 0; - v54 = v27; - } -LABEL_30: - v16 = v65[0]; - if ( *((_DWORD *)v65[0] - 3) ) - { - std::string::push_back((int *)v65, (std::string *)(char)v50, v41); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v63 + 2), *((_DWORD *)v63 + 3), v65) ) - *a5 = 4; - v16 = v65[0]; - if ( !v50 && !v56 && !*((_DWORD *)v65[0] - 3) ) - goto LABEL_33; - } - else if ( !v56 && !v50 ) - { - goto LABEL_33; - } - if ( v54 ) - { -LABEL_33: - v17 = a6; - *a6 = 0; - v17[1] = 0; - *a5 = 4; - goto LABEL_34; - } - if ( v48 ) - { - v35 = a6; - *a6 = -1; - v35[1] = -1; - *a5 = 4; - } - else - { - if ( v42 ) - v57 = -(__int64)v57; - *(_QWORD *)a6 = v57; - } -LABEL_34: - if ( v52 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_124: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v64); - return lpuexcptb; - } - v18 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v18 - 1; - if ( v18 <= 0 ) - goto LABEL_124; - return lpuexcptb; -} -// 475F79: variable 'v40' is possibly undefined -// 475C61: variable 'v41' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00476290) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::_M_extract_float( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // dl - char v7; // cl - int v8; // eax - _DWORD *v9; // ecx - unsigned int v10; // eax - char v11; // al - char v12; // al - char v13; // al - int v14; // eax - char v15; // al - void *v16; // eax - int v17; // eax - _DWORD *v18; // ecx - unsigned int v19; // eax - char v20; // al - int v21; // eax - bool v23; // zf - int v24; // eax - int v25; // eax - char v26; // al - int v27; // eax - _DWORD *v28; // ecx - unsigned int v29; // eax - char v30; // al - char v31; // al - char v32; // dl - int v33; // edx - char v34; // cl - const char *v35; // eax - int v36; // ebx - int v37; // edx - char *v38; // eax - char *v39; // eax - int v40; // edx - char *v41; // eax - char v42; // cl - char v43; // al - char i; // dl - _DWORD *v45; // ecx - unsigned int v46; // eax - int v47; // eax - _BYTE *v48; // eax - bool v49; // al - int v50; // eax - int v51; // eax - int v52; // eax - unsigned int v53; // [esp+4h] [ebp-84h] - unsigned int v54; // [esp+4h] [ebp-84h] - unsigned int v55; // [esp+Ch] [ebp-7Ch] - int v56; // [esp+14h] [ebp-74h] - char v57; // [esp+14h] [ebp-74h] - void *Buf; // [esp+18h] [ebp-70h] - bool v59; // [esp+1Ch] [ebp-6Ch] - char v60; // [esp+1Ch] [ebp-6Ch] - int v61; // [esp+1Ch] [ebp-6Ch] - char v62; // [esp+20h] [ebp-68h] - int v63; // [esp+20h] [ebp-68h] - char v64; // [esp+20h] [ebp-68h] - int v65; // [esp+20h] [ebp-68h] - char v66; // [esp+20h] [ebp-68h] - int v67; // [esp+24h] [ebp-64h] - char v68; // [esp+28h] [ebp-60h] - int v69; // [esp+28h] [ebp-60h] - char v70; // [esp+28h] [ebp-60h] - char v71; // [esp+28h] [ebp-60h] - int v72; // [esp+28h] [ebp-60h] - char v73; // [esp+2Ch] [ebp-5Ch] - char v74; // [esp+2Ch] [ebp-5Ch] - char v75; // [esp+2Ch] [ebp-5Ch] - char v76; // [esp+2Ch] [ebp-5Ch] - std::string *v77; // [esp+2Ch] [ebp-5Ch] - struct _Unwind_Exception *v78; // [esp+30h] [ebp-58h] - unsigned __int64 v79; // [esp+30h] [ebp-58h] - char lpuexcpt; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-50h] - char lpuexcptb; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptc; // [esp+38h] [ebp-50h] - char lpuexcptd; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpte; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptf; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptg; // [esp+38h] [ebp-50h] - char lpuexcpth; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpti; // [esp+38h] [ebp-50h] - int v90; // [esp+7Bh] [ebp-Dh] BYREF - const char *v91[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v78 = std::__use_cache>::operator()((int *)(a4 + 108)); - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - lpuexcpt = 0; - v67 = 0; - v73 = 0; - goto LABEL_3; - } - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v42 = *((_BYTE *)v78 + 75); - if ( v42 == lpuexcpt ) - { - v43 = *((_BYTE *)v78 + 16); - } - else - { - v43 = *((_BYTE *)v78 + 16); - if ( *((_BYTE *)v78 + 74) != lpuexcpt ) - { -LABEL_113: - v67 = 0; - for ( i = 0; ; i = 1 ) - { - if ( v43 && *((_BYTE *)v78 + 37) == lpuexcpt - || *((_BYTE *)v78 + 36) == lpuexcpt - || *((_BYTE *)v78 + 78) != lpuexcpt ) - { - v73 = i; - goto LABEL_3; - } - if ( i ) - { - v45 = (_DWORD *)a1; - ++v67; - v46 = *(_DWORD *)(a1 + 8); - if ( v46 < *(_DWORD *)(a1 + 12) ) - goto LABEL_120; - } - else - { - v72 = *(_DWORD *)(*a6 - 12); - v77 = (std::string *)(v72 + 1); - if ( (unsigned int)(v72 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, v77, v53); - ++v67; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 48; - v47 = *a6; - *(_DWORD *)(v47 - 12) = v77; - *(_DWORD *)(v47 - 4) = 0; - *(_BYTE *)(v47 + v72 + 1) = 0; - v45 = (_DWORD *)a1; - v46 = *(_DWORD *)(a1 + 8); - if ( v46 < *(_DWORD *)(a1 + 12) ) - { -LABEL_120: - HIDWORD(a1) = -1; - v45[2] = v46 + 1; - goto LABEL_121; - } - } - (*(void (__fastcall **)(_DWORD *))(*v45 + 40))(v45); - v45 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - v71 = 1; - goto LABEL_122; - } -LABEL_121: - v71 = 0; - if ( v45[2] >= v45[3] && (*(int (__fastcall **)(_DWORD *))(*v45 + 36))(v45) == -1 ) - { - LODWORD(a1) = 0; - v71 = 1; - } -LABEL_122: - v76 = a3 == -1; - v66 = v76 & (a2 != 0); - if ( v66 ) - { - v76 = 0; - if ( a2[2] >= a2[3] && (*(int (**)(void))(*a2 + 36))() == -1 ) - { - a2 = 0; - v76 = v66; - } - } - if ( v71 == v76 ) - { - v73 = 1; - v59 = 1; - goto LABEL_3; - } - LOBYTE(v48) = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_132; - v48 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v48 < *(_DWORD *)(a1 + 12) ) - { - LOBYTE(v48) = *v48; -LABEL_132: - lpuexcpt = (char)v48; - goto LABEL_133; - } - v48 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v48 != (_BYTE *)-1 ) - goto LABEL_132; - LODWORD(a1) = 0; - lpuexcpt = -1; -LABEL_133: - v43 = *((_BYTE *)v78 + 16); - } - } - } - if ( v43 && *((_BYTE *)v78 + 37) == lpuexcpt || *((_BYTE *)v78 + 36) == lpuexcpt ) - goto LABEL_113; - std::string::push_back(a6, (std::string *)(2 * (v42 != lpuexcpt) + 43), v53); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v49 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !v49 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v43 = *((_BYTE *)v78 + 16); - goto LABEL_113; - } - v73 = 0; - v59 = v49; - v67 = 0; -LABEL_3: - v91[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v78 + 16) ) - std::string::reserve((int *)v91, (std::string *)0x20, v54); - v68 = *((_BYTE *)v78 + 100); - if ( !v68 ) - { - if ( !v59 ) - { - v62 = 0; - v60 = 0; -LABEL_8: - v6 = lpuexcpt; - if ( (unsigned __int8)(lpuexcpt - 48) <= 9u ) - { -LABEL_9: - v74 = v6; - v69 = *(_DWORD *)(*a6 - 12); - lpuexcpta = (struct _Unwind_Exception *)(v69 + 1); - if ( (unsigned int)(v69 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcpta, v54); - v7 = v74; - v73 = 1; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v7; - v8 = *a6; - *(_DWORD *)(v8 - 4) = 0; - *(_DWORD *)(v8 - 12) = lpuexcpta; - *(_BYTE *)(v8 + v69 + 1) = 0; - goto LABEL_13; - } - while ( 1 ) - { - if ( *((_BYTE *)v78 + 36) == lpuexcpt && !((unsigned __int8)v60 | (unsigned __int8)v62) ) - { - std::string::push_back(a6, (std::string *)0x2E, v54); - v62 = 0; - v60 = 1; -LABEL_13: - v9 = (_DWORD *)a1; - v10 = *(_DWORD *)(a1 + 8); - if ( v10 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_29; -LABEL_14: - HIDWORD(a1) = -1; - v9[2] = v10 + 1; -LABEL_15: - lpuexcptb = 0; - if ( v9[2] >= v9[3] ) - { - lpuexcptb = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptb = 1; - } - } - goto LABEL_16; - } - if ( *((_BYTE *)v78 + 92) != lpuexcpt && *((_BYTE *)v78 + 98) != lpuexcpt ) - goto LABEL_46; - v73 &= v62 ^ 1; - if ( !v73 ) - goto LABEL_46; - std::string::push_back(a6, (std::string *)0x65, v54); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - goto LABEL_164; - v13 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v13; - if ( *((_BYTE *)v78 + 75) == v13 ) - { - v14 = 43; - } - else - { - if ( *((_BYTE *)v78 + 74) != v13 ) - { - v62 = v73; - goto LABEL_8; - } - v14 = 45; - } - std::string::push_back(a6, (std::string *)v14, v54); - v9 = (_DWORD *)a1; - v62 = v73; - v10 = *(_DWORD *)(a1 + 8); - if ( v10 < *(_DWORD *)(a1 + 12) ) - goto LABEL_14; -LABEL_29: - (*(void (__fastcall **)(_DWORD *))(*v9 + 40))(v9); - v9 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_15; - lpuexcptb = 1; -LABEL_16: - v11 = a3 == -1; - v70 = v11 & (a2 != 0); - if ( v70 ) - { - v11 = 0; - if ( a2[2] >= a2[3] ) - { - v33 = (*(int (**)(void))(*a2 + 36))(); - v11 = 0; - if ( v33 == -1 ) - { - a2 = 0; - v11 = v70; - } - } - } - if ( v11 == lpuexcptb ) - goto LABEL_46; - v12 = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v38 = *(char **)(a1 + 8); - if ( (unsigned int)v38 >= *(_DWORD *)(a1 + 12) ) - { - v50 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v50; - if ( v50 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } - goto LABEL_8; - } - v12 = *v38; - } - lpuexcpt = v12; - v6 = v12; - if ( (unsigned __int8)(v12 - 48) <= 9u ) - goto LABEL_9; - } - } -LABEL_166: - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - if ( *((_DWORD *)v91[0] - 3) ) - goto LABEL_50; - goto LABEL_53; - } - if ( v59 ) - goto LABEL_166; - v62 = 0; - v60 = 0; - v15 = *((_BYTE *)v78 + 16); - Buf = (char *)v78 + 78; - while ( 1 ) - { - while ( 1 ) - { - if ( v15 && *((_BYTE *)v78 + 37) == lpuexcpt ) - { - v60 |= v62; - if ( v60 ) - { - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - v24 = *((_DWORD *)v91[0] - 3); -LABEL_160: - if ( v24 ) - goto LABEL_51; - goto LABEL_53; - } - if ( !v67 ) - { - std::string::_M_mutate((char **)a6, 0, *(_DWORD *)(*a6 - 12), 0, v55); - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - if ( *((_DWORD *)v91[0] - 3) ) - goto LABEL_50; - goto LABEL_53; - } - v65 = *((_DWORD *)v91[0] - 3); - lpuexcpti = (struct _Unwind_Exception *)(v65 + 1); - if ( (unsigned int)(v65 + 1) > *((_DWORD *)v91[0] - 2) || *((int *)v91[0] - 1) > 0 ) - std::string::reserve((int *)v91, lpuexcpti, v54); - v34 = v67; - v67 = 0; - v91[0][*((_DWORD *)v91[0] - 3)] = v34; - v35 = v91[0]; - *((_DWORD *)v91[0] - 3) = lpuexcpti; - v36 = v65; - *((_DWORD *)v35 - 1) = 0; - v62 = 0; - v35[v36 + 1] = 0; -LABEL_41: - v18 = (_DWORD *)a1; - v19 = *(_DWORD *)(a1 + 8); - if ( v19 < *(_DWORD *)(a1 + 12) ) - goto LABEL_42; - goto LABEL_62; - } - if ( *((_BYTE *)v78 + 36) == lpuexcpt ) - break; - v16 = memchr(Buf, lpuexcpt, 0xAu); - if ( v16 ) - { - v75 = (_BYTE)v16 - (_BYTE)Buf + 48; - v56 = *(_DWORD *)(*a6 - 12); - lpuexcptc = (struct _Unwind_Exception *)(v56 + 1); - if ( (unsigned int)(v56 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptc, v54); - ++v67; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v75; - v17 = *a6; - *(_DWORD *)(v17 - 12) = lpuexcptc; - *(_DWORD *)(v17 - 4) = 0; - *(_BYTE *)(v17 + v56 + 1) = 0; - v73 = v68; - goto LABEL_41; - } - if ( *((_BYTE *)v78 + 92) != lpuexcpt && *((_BYTE *)v78 + 98) != lpuexcpt ) - goto LABEL_46; - v23 = (((unsigned __int8)v62 ^ 1) & (unsigned __int8)v73) == 0; - v73 &= v62 ^ 1; - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - v21 = *((_DWORD *)v91[0] - 3); - if ( v23 ) - goto LABEL_47; - if ( v21 && !v60 ) - std::string::push_back((int *)v91, (std::string *)(char)v67, v54); - v63 = *(_DWORD *)(*a6 - 12); - lpuexcptg = (struct _Unwind_Exception *)(v63 + 1); - if ( (unsigned int)(v63 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptg, v54); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 101; - v27 = *a6; - *(_DWORD *)(v27 - 12) = lpuexcptg; - *(_DWORD *)(v27 - 4) = 0; - *(_BYTE *)(v27 + v63 + 1) = 0; - v28 = (_DWORD *)a1; - v29 = *(_DWORD *)(a1 + 8); - if ( v29 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v28 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpth = v73; - goto LABEL_79; - } - } - else - { - HIDWORD(a1) = -1; - *(_DWORD *)(a1 + 8) = v29 + 1; - } - lpuexcpth = 0; - if ( v28[2] >= v28[3] ) - { - lpuexcpth = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v28 + 36))(v28) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpth = v73; - } - } -LABEL_79: - v30 = a3 == -1; - v64 = v30 & (a2 != 0); - if ( v64 ) - { - v30 = 0; - if ( a2[2] >= a2[3] ) - { - v40 = (*(int (**)(void))(*a2 + 36))(); - v30 = 0; - if ( v40 == -1 ) - { - a2 = 0; - v30 = v64; - } - } - } - if ( v30 == lpuexcpth ) - { -LABEL_164: - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - if ( *((_DWORD *)v91[0] - 3) ) - goto LABEL_51; - goto LABEL_53; - } - v31 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_82; - v41 = *(char **)(a1 + 8); - if ( (unsigned int)v41 < *(_DWORD *)(a1 + 12) ) - { - v31 = *v41; -LABEL_82: - lpuexcpt = v31; - goto LABEL_83; - } - v52 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v52; - if ( v52 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } -LABEL_83: - v32 = *((_BYTE *)v78 + 75); - v15 = *((_BYTE *)v78 + 16); - if ( v32 != lpuexcpt && *((_BYTE *)v78 + 74) != lpuexcpt ) - goto LABEL_85; - if ( v15 && *((_BYTE *)v78 + 37) == lpuexcpt ) - { - v62 = *((_BYTE *)v78 + 16); - v73 = v62; - } - else - { - if ( *((_BYTE *)v78 + 36) != lpuexcpt ) - { - std::string::push_back(a6, (std::string *)(2 * (v32 != lpuexcpt) + 43), v54); - v62 = v73; - goto LABEL_41; - } -LABEL_85: - v62 = v73; - } - } - v23 = ((unsigned __int8)v60 | (unsigned __int8)v62) == 0; - v62 |= v60; - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - v24 = *((_DWORD *)v91[0] - 3); - if ( !v23 ) - goto LABEL_160; - if ( v24 ) - std::string::push_back((int *)v91, (std::string *)(char)v67, v54); - v61 = *(_DWORD *)(*a6 - 12); - lpuexcptf = (struct _Unwind_Exception *)(v61 + 1); - if ( (unsigned int)(v61 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptf, v54); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 46; - v25 = *a6; - *(_DWORD *)(v25 - 12) = lpuexcptf; - *(_DWORD *)(v25 - 4) = 0; - *(_BYTE *)(v25 + v61 + 1) = 0; - v18 = (_DWORD *)a1; - v60 = v68; - v19 = *(_DWORD *)(a1 + 8); - if ( v19 < *(_DWORD *)(a1 + 12) ) - { -LABEL_42: - HIDWORD(a1) = -1; - v18[2] = v19 + 1; - goto LABEL_43; - } -LABEL_62: - (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); - v18 = (_DWORD *)a1; - HIDWORD(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptd = v68; - goto LABEL_44; - } -LABEL_43: - lpuexcptd = 0; - if ( v18[2] >= v18[3] ) - { - lpuexcptd = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptd = v68; - } - } -LABEL_44: - v20 = a3 == -1; - v57 = v20 & (a2 != 0); - if ( v57 ) - { - v20 = 0; - if ( a2[2] >= a2[3] ) - { - v37 = (*(int (**)(void))(*a2 + 36))(); - v20 = 0; - if ( v37 == -1 ) - { - a2 = 0; - v20 = v57; - } - } - } - if ( lpuexcptd == v20 ) - break; - v26 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_65; - v39 = *(char **)(a1 + 8); - if ( (unsigned int)v39 < *(_DWORD *)(a1 + 12) ) - { - v26 = *v39; -LABEL_65: - lpuexcpt = v26; - goto LABEL_66; - } - v51 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcpt = v51; - if ( v51 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpt = -1; - } -LABEL_66: - v15 = *((_BYTE *)v78 + 16); - } -LABEL_46: - lpuexcpte = (struct _Unwind_Exception *)v91[0]; - v21 = *((_DWORD *)v91[0] - 3); -LABEL_47: - if ( !v21 ) - goto LABEL_53; - if ( v60 || v62 ) - goto LABEL_51; -LABEL_50: - std::string::push_back((int *)v91, (std::string *)(char)v67, v54); - lpuexcpte = (struct _Unwind_Exception *)v91[0]; -LABEL_51: - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v78 + 2), *((_DWORD *)v78 + 3), v91) ) - *a5 = 4; -LABEL_53: - v79 = a1; - std::string::_Rep::_M_dispose((volatile signed __int32 *)lpuexcpte - 3, (int)&v90); - return v79; -} -// 476B83: variable 'v54' is possibly undefined -// 476C95: variable 'v53' is possibly undefined -// 477065: variable 'v55' is possibly undefined - -//----- (004770D0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - unsigned __int64 (__stdcall *v7)(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *); // eax - int v8; // esi - int result; // eax - int v10[8]; // [esp+3Ch] [ebp-20h] BYREF - - v7 = *(unsigned __int64 (__stdcall **)(unsigned __int64, _DWORD *, int, int, _DWORD *, _DWORD *))(*(_DWORD *)this + 48); - if ( v7 != std::num_get>::do_get ) - return ((int (__fastcall *)(void *, _DWORD, _DWORD, _DWORD, _DWORD *, int, int, _DWORD *, _DWORD *))v7)( - this, - HIDWORD(a2), - a2, - HIDWORD(a2), - a3, - a4, - a5, - a6, - a7); - v8 = *(_DWORD *)(a5 + 12); - *(_DWORD *)(a5 + 12) = v8 & 0xFFFFFFB5 | 8; - result = std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, v10); - *(_DWORD *)(a5 + 12) = v8; - *a7 = v10[0]; - return result; -} -// 4770D0: using guessed type int var_20[8]; - -//----- (00477180) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (00477190) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); -} - -//----- (004771A0) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); -} - -//----- (004771B0) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); -} - -//----- (004771C0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 477FF0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (00477240) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 478000: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004772C0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 478010: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (00477340) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _WORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 478020: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004773C0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 478030: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (00477440) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - unsigned __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 478040: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004774C0) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // esi - unsigned __int64 result; // rax - int v8[8]; // [esp+2Ch] [ebp-20h] BYREF - - v6 = *(_DWORD *)(a4 + 12); - *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; - result = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, v8); - *(_DWORD *)(a4 + 12) = v6; - *a6 = v8[0]; - return result; -} -// 4774C0: using guessed type int var_20[8]; - -//----- (00477530) -------------------------------------------------------- -unsigned __int64 __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - int *a5, - _BYTE *a6) -{ - _BYTE *v6; // edi - struct _Unwind_Exception *v8; // eax - int v9; // ecx - struct _Unwind_Exception *v10; // edi - int v11; // eax - bool v12; // dl - int v13; // eax - struct _Unwind_Exception *v14; // ebp - unsigned int v15; // edi - unsigned int v16; // eax - bool v17; // cl - char v18; // si - char v19; // bl - char v20; // bl - _BYTE *v21; // eax - int v22; // eax - int v23; // eax - unsigned int v24; // eax - bool v25; // bl - struct _Unwind_Exception *v26; // edi - unsigned int v27; // ebp - int v28; // eax - unsigned int v29; // eax - bool v30; // [esp+2Bh] [ebp-31h] - bool v31; // [esp+2Ch] [ebp-30h] - char v32; // [esp+2Dh] [ebp-2Fh] - char v33; // [esp+2Eh] [ebp-2Eh] - char v34; // [esp+2Eh] [ebp-2Eh] - bool v35; // [esp+2Eh] [ebp-2Eh] - bool v36; // [esp+2Eh] [ebp-2Eh] - bool v37; // [esp+2Fh] [ebp-2Dh] - int v38[8]; // [esp+3Ch] [ebp-20h] BYREF - - if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) - { - v38[0] = -1; - a1 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, v38); - if ( v38[0] > 1u ) - { - *a6 = 1; - *a5 = 4; - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - } - else - { - v6 = a6; - *a6 = v38[0]; - *v6 &= 1u; - } - return a1; - } - v8 = std::__use_cache>::operator()((int *)(a4 + 108)); - v9 = *((_DWORD *)v8 + 8); - v10 = v8; - v11 = *((_DWORD *)v8 + 6); - v12 = v9 == 0; - v31 = v11 == 0; - if ( !(v11 | v9) ) - goto LABEL_41; - v32 = 1; - v13 = HIDWORD(a1); - v30 = 1; - v14 = v10; - v15 = 0; - while ( 1 ) - { - v18 = v13 == -1; - v19 = ((_DWORD)a1 != 0) & v18; - if ( v19 ) - { - v18 = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v35 = v12; - v23 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); - v12 = v35; - if ( v23 == -1 ) - { - LODWORD(a1) = 0; - v18 = v19; - } - } - } - v20 = a3 == -1; - v34 = v20 & (a2 != 0); - if ( v34 ) - { - v20 = 0; - if ( a2[2] >= a2[3] ) - { - v37 = v12; - v22 = (*(int (**)(void))(*a2 + 36))(); - v12 = v37; - if ( v22 == -1 ) - { - a2 = 0; - v20 = v34; - } - } - } - if ( v20 == v18 ) - { - v33 = 1; - v24 = v15; - v25 = v30; - v26 = v14; - v27 = v24; -LABEL_45: - if ( v25 && *((_DWORD *)v26 + 8) == v27 && v27 ) - { - *a6 = 0; - if ( v32 && *((_DWORD *)v26 + 6) == v27 ) - goto LABEL_42; - } - else - { - if ( !v32 || *((_DWORD *)v26 + 6) != v27 || !v27 ) - { - *a6 = 0; - if ( !v33 ) - goto LABEL_42; - *a5 = 6; - return a1; - } - *a6 = 1; - } - v28 = 2 * (v33 != 0); -LABEL_62: - *a5 = v28; - return a1; - } - LOBYTE(v21) = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v21 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v21 >= *(_DWORD *)(a1 + 12) ) - { - v36 = v12; - v21 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - v12 = v36; - if ( v21 == (_BYTE *)-1 ) - LODWORD(a1) = 0; - } - else - { - LOBYTE(v21) = *v21; - } - } - if ( !v12 ) - v30 = *(_BYTE *)(*((_DWORD *)v14 + 7) + v15) == (unsigned __int8)v21; - if ( !v30 ) - { - if ( v31 ) - { - if ( v32 ) - { - if ( *((_DWORD *)v14 + 6) == v15 && v15 ) - { - *a6 = 1; - v28 = 0; - goto LABEL_62; - } - goto LABEL_41; - } -LABEL_43: - *a6 = 0; - *a5 = 4; - return a1; - } -LABEL_8: - v32 = *(_BYTE *)(*((_DWORD *)v14 + 5) + v15) == (unsigned __int8)v21; - goto LABEL_9; - } - if ( !v31 ) - goto LABEL_8; -LABEL_9: - v33 = v12 & (v32 ^ 1); - if ( v33 ) - break; - if ( !(v30 | (unsigned __int8)v32) ) - goto LABEL_43; - ++v15; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v16 + 1; - HIDWORD(a1) = -1; - if ( !v30 ) - { - v12 = v32; -LABEL_29: - v31 = *((_DWORD *)v14 + 6) <= v15; - v32 |= v30; - v17 = v12 && v31; - goto LABEL_16; - } - v12 = *((_DWORD *)v14 + 8) <= v15; - if ( v32 ) - goto LABEL_29; - v17 = *((_DWORD *)v14 + 8) <= v15; - v31 = v30; -LABEL_16: - v13 = -1; - if ( v17 ) - { - v29 = v15; - v25 = v30; - v26 = v14; - v27 = v29; - goto LABEL_45; - } - } - if ( !v30 ) - goto LABEL_43; - if ( *((_DWORD *)v14 + 8) == v15 && v15 ) - { - *a6 = 0; - v28 = 0; - goto LABEL_62; - } -LABEL_41: - *a6 = 0; -LABEL_42: - *a5 = 4; - return a1; -} -// 477530: using guessed type unsigned int var_20[8]; - -//----- (00477990) -------------------------------------------------------- -int __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - double *a6) -{ - char v6; // al - int v7; // ecx - int v8; // eax - int v10; // eax - char v11; // dl - bool v12; // zf - int v13; // eax - unsigned int v14; // [esp+4h] [ebp-84h] - char v15; // [esp+23h] [ebp-65h] - int v16; // [esp+24h] [ebp-64h] - char v17; // [esp+30h] [ebp-58h] - unsigned __int64 v18; // [esp+34h] [ebp-54h] - int v19; // [esp+78h] [ebp-10h] BYREF - int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF - - v19 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v19, (std::string *)0x20, v14); - v18 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v19); - v16 = v18; - v20[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((unsigned __int8 *)v19, a6, a5); - v17 = HIDWORD(v18) == -1; - v15 = v17 & ((_DWORD)v18 != 0); - if ( v15 ) - { - v17 = 0; - if ( *(_DWORD *)(v18 + 8) >= *(_DWORD *)(v18 + 12) ) - { - v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v18 + 36))(v18); - v11 = v15; - v12 = v10 == -1; - if ( v10 != -1 ) - v11 = 0; - v13 = 0; - if ( !v12 ) - v13 = v18; - v17 = v11; - v16 = v13; - } - } - v6 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v6 = 0; - if ( a2[2] >= a2[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; - } - } - if ( v6 == v17 ) - *a5 |= 2u; - v7 = v19; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v19 - 4), 0xFFFFFFFF) > 0 ) - return v16; -LABEL_10: - std::string::_Rep::_M_destroy((void *)(v7 - 12), (int)v20); - return v16; - } - v8 = *(_DWORD *)(v19 - 4); - *(_DWORD *)(v19 - 4) = v8 - 1; - if ( v8 <= 0 ) - goto LABEL_10; - return v16; -} -// 477A10: variable 'v14' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 477990: using guessed type int var_C[3]; - -//----- (00477BB0) -------------------------------------------------------- -int __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - long double *a6) -{ - char v6; // al - char *v7; // ecx - int v8; // eax - int v10; // eax - char v11; // dl - bool v12; // zf - int v13; // eax - unsigned int v14; // [esp+4h] [ebp-84h] - char v15; // [esp+23h] [ebp-65h] - int v16; // [esp+24h] [ebp-64h] - char v17; // [esp+30h] [ebp-58h] - unsigned __int64 v18; // [esp+34h] [ebp-54h] - char *String; // [esp+78h] [ebp-10h] BYREF - int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF - - String = (char *)std::string::_S_construct(0, 0); - std::string::reserve((int *)&String, (std::string *)0x20, v14); - v18 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (int *)&String); - v16 = v18; - v20[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v(String, a6, a5); - v17 = HIDWORD(v18) == -1; - v15 = v17 & ((_DWORD)v18 != 0); - if ( v15 ) - { - v17 = 0; - if ( *(_DWORD *)(v18 + 8) >= *(_DWORD *)(v18 + 12) ) - { - v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v18 + 36))(v18); - v11 = v15; - v12 = v10 == -1; - if ( v10 != -1 ) - v11 = 0; - v13 = 0; - if ( !v12 ) - v13 = v18; - v17 = v11; - v16 = v13; - } - } - v6 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v6 = 0; - if ( a2[2] >= a2[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; - } - } - if ( v6 == v17 ) - *a5 |= 2u; - v7 = String; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) - return v16; -LABEL_10: - std::string::_Rep::_M_destroy(v7 - 12, (int)v20); - return v16; - } - v8 = *((_DWORD *)String - 1); - *((_DWORD *)String - 1) = v8 - 1; - if ( v8 <= 0 ) - goto LABEL_10; - return v16; -} -// 477C30: variable 'v14' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 477BB0: using guessed type int var_C[3]; - -//----- (00477DD0) -------------------------------------------------------- -int __stdcall std::num_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - float *a6) -{ - char v6; // al - int v7; // ecx - int v8; // eax - int v10; // eax - char v11; // dl - bool v12; // zf - int v13; // eax - unsigned int v14; // [esp+4h] [ebp-84h] - char v15; // [esp+23h] [ebp-65h] - int v16; // [esp+24h] [ebp-64h] - char v17; // [esp+30h] [ebp-58h] - unsigned __int64 v18; // [esp+34h] [ebp-54h] - int v19; // [esp+78h] [ebp-10h] BYREF - int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF - - v19 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v19, (std::string *)0x20, v14); - v18 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v19); - v16 = v18; - v20[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((unsigned __int8 *)v19, a6, a5); - v17 = HIDWORD(v18) == -1; - v15 = v17 & ((_DWORD)v18 != 0); - if ( v15 ) - { - v17 = 0; - if ( *(_DWORD *)(v18 + 8) >= *(_DWORD *)(v18 + 12) ) - { - v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v18 + 36))(v18); - v11 = v15; - v12 = v10 == -1; - if ( v10 != -1 ) - v11 = 0; - v13 = 0; - if ( !v12 ) - v13 = v18; - v17 = v11; - v16 = v13; - } - } - v6 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v6 = 0; - if ( a2[2] >= a2[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; - } - } - if ( v6 == v17 ) - *a5 |= 2u; - v7 = v19; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v19 - 4), 0xFFFFFFFF) > 0 ) - return v16; -LABEL_10: - std::string::_Rep::_M_destroy((void *)(v7 - 12), (int)v20); - return v16; - } - v8 = *(_DWORD *)(v19 - 4); - *(_DWORD *)(v19 - 4) = v8 - 1; - if ( v8 <= 0 ) - goto LABEL_10; - return v16; -} -// 477E50: variable 'v14' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 477DD0: using guessed type int var_C[3]; - -//----- (00478050) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // ebx - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - unsigned int v25; // eax - unsigned int v26; // edx - __int16 *v27; // eax - __int16 v28; // ax - bool v29; // zf - _DWORD *v30; // eax - int *v31; // eax - bool v33; // al - unsigned __int16 *v34; // eax - _DWORD *v35; // eax - _WORD *v36; // eax - unsigned int v37; // edx - unsigned int v38; // edx - int v39; // eax - bool v40; // cc - int v41; // edx - int v42; // eax - _DWORD *v43; // ecx - unsigned int v44; // eax - unsigned int v45; // edx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - unsigned __int16 *v50; // eax - _DWORD *v51; // eax - __int16 *v52; // eax - __int16 v53; // ax - bool v54; // zf - _DWORD *v55; // eax - bool v56; // bl - unsigned __int16 *v57; // eax - _DWORD *v58; // eax - size_t v59; // edx - size_t v60; // ecx - __int16 *v61; // eax - __int16 v62; // ax - bool v63; // zf - _DWORD *v64; // eax - bool v65; // dl - __int16 *v66; // eax - __int16 v67; // ax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // cl - int v71; // edx - unsigned __int16 *v72; // eax - _DWORD *v73; // eax - _DWORD *v74; // eax - __int16 *v75; // eax - __int16 v76; // ax - bool v77; // zf - _DWORD *v78; // eax - bool v79; // bl - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // eax - bool v84; // dl - unsigned __int16 *v85; // eax - _DWORD *v86; // edx - __int16 *v87; // eax - __int16 v88; // ax - bool v89; // zf - _DWORD *v90; // eax - bool v91; // bl - char v92; // bl - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+14h] [ebp-A4h] - unsigned int v95; // [esp+1Ch] [ebp-9Ch] - int v96; // [esp+20h] [ebp-98h] - unsigned int v97; // [esp+24h] [ebp-94h] - bool v98; // [esp+2Dh] [ebp-8Bh] - char v99; // [esp+2Eh] [ebp-8Ah] - int v100; // [esp+30h] [ebp-88h] - char v101; // [esp+30h] [ebp-88h] - _DWORD *v102; // [esp+34h] [ebp-84h] - char v103; // [esp+38h] [ebp-80h] - int v104; // [esp+38h] [ebp-80h] - size_t v105; // [esp+38h] [ebp-80h] - char v106; // [esp+3Dh] [ebp-7Bh] - char v107; // [esp+3Eh] [ebp-7Ah] - char v108; // [esp+3Eh] [ebp-7Ah] - char v109; // [esp+3Eh] [ebp-7Ah] - char v110; // [esp+3Eh] [ebp-7Ah] - char v111; // [esp+40h] [ebp-78h] - char v112; // [esp+40h] [ebp-78h] - unsigned int v113; // [esp+40h] [ebp-78h] - bool v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - int *v118; // [esp+4Ch] [ebp-6Ch] - unsigned int v119; // [esp+4Ch] [ebp-6Ch] - int v120; // [esp+50h] [ebp-68h] - _DWORD *v121; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - unsigned __int16 lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v129; // [esp+9Ch] [ebp-1Ch] - int v130[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v102 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v120 = *v118; - if ( !*v118 ) - { - v74 = operator new(0xA8u); - v74[1] = 0; - *v74 = &off_51AF70; - v74[2] = 0; - v74[3] = 0; - *((_BYTE *)v74 + 16) = 0; - v74[5] = 0; - v74[6] = 0; - v74[7] = 0; - v74[8] = 0; - v74[9] = 0; - *((_BYTE *)v74 + 164) = 0; - v94 = (std::locale::_Impl *)v74; - std::__numpunct_cache::_M_cache((int)v74, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v120 = *v118; - } - v119 = 8; - v100 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v100 != 64 ) - { - v7 = 10; - if ( v100 == 8 ) - v7 = 16; - v119 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v75 = (__int16 *)a1[2]; - if ( (unsigned int)v75 >= a1[3] ) - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v76 = *v75; - v77 = v76 == -1; - v78 = 0; - if ( !v77 ) - v78 = a1; - v79 = lpuexcpta && a1 != 0; - v121 = v78; - if ( !v77 ) - v79 = 0; - v103 = v79; - } - else - { - v103 = a2 == 0xFFFF; - } - v114 = a4 == -1; - if ( v114 && a3 != 0 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - if ( !v82 ) - v83 = a3; - v84 = v114 && a3 != 0; - v102 = v83; - if ( !v82 ) - v84 = 0; - v115 = v84; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v103 ) - { - if ( v121 && a2 == 0xFFFF ) - { - v72 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v72 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v72; - v73 = 0; - if ( lpuexcptb != 0xFFFF ) - v73 = v121; - v121 = v73; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v120 + 16); - v98 = *(_WORD *)(v120 + 112) == lpuexcptb; - if ( *(_WORD *)(v120 + 112) == lpuexcptb || *(_WORD *)(v120 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v120 + 38) != lpuexcptb) && *(_WORD *)(v120 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = (__int16 *)v121[2]; - v10 = v121[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v121[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v121; - v111 = v13; - v121 = v14; - if ( v114 && v102 != 0 ) - { - v87 = (__int16 *)v102[2]; - if ( (unsigned int)v87 >= v102[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v88 = *v87; - v89 = v88 == -1; - v90 = 0; - if ( !v89 ) - v90 = v102; - v91 = v114 && v102 != 0; - v102 = v90; - if ( !v89 ) - v91 = 0; - v116 = v91; - } - else - { - v116 = a4 == -1; - } - if ( v111 == v116 ) - { - v106 = 1; - v104 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v121 ) - { - v85 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v85 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v85; - v86 = 0; - if ( lpuexcptb != 0xFFFF ) - v86 = v121; - v8 = *(_BYTE *)(v120 + 16); - v121 = v86; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v120 + 16); - } - } - } - else - { - v98 = 0; - } - v104 = 0; - v117 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v120 + 38) == lpuexcptb || *(_WORD *)(v120 + 36) == lpuexcptb ) - { -LABEL_178: - v106 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v120 + 120) != lpuexcptb ) - break; - v33 = v119 == 10 || !v117; - if ( !v33 ) - goto LABEL_36; - v117 = v100 == 0 || v119 == 8; - if ( !v117 ) - { - ++v104; - v117 = v33; - goto LABEL_40; - } - v15 = v121; - v104 = 0; - v119 = 8; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( v17 > (unsigned int)v18 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v18 = (__int16 *)v121[2]; - if ( v121[3] > (unsigned int)v18 ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v121; - v107 = v20; - v121 = v21; - if ( v114 && v102 != 0 ) - { - v52 = (__int16 *)v102[2]; - if ( (unsigned int)v52 >= v102[3] ) - v53 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v53 = *v52; - v54 = v53 == -1; - v55 = 0; - if ( !v54 ) - v55 = v102; - v56 = v114 && v102 != 0; - v102 = v55; - if ( !v54 ) - v56 = 0; - v112 = v56; - } - else - { - v112 = a4 == -1; - } - if ( v112 == v107 ) - { - v106 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v121 ) - { - v34 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v34 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v34; - v35 = 0; - if ( lpuexcptb != 0xFFFF ) - v35 = v121; - v121 = v35; - } - if ( !v117 ) - { - v106 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v120 + 16); - } - if ( !v117 ) - goto LABEL_178; -LABEL_36: - if ( *(_WORD *)(v120 + 116) != lpuexcptb && *(_WORD *)(v120 + 118) != lpuexcptb ) - { - v106 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v100 != 0 && v119 != 16 ) - { - v106 = 0; - v95 = v119; - v96 = v119; - v117 = 1; - goto LABEL_52; - } - v104 = 0; - v117 = 0; - v119 = 16; -LABEL_40: - v15 = v121; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v98 = 0; - lpuexcptb = 0; - v106 = 1; - v104 = 0; - v117 = 0; -LABEL_49: - v22 = 22; - if ( v119 != 16 ) - v22 = v119; - v95 = v22; - v96 = v22; -LABEL_52: - v129 = 0; - Block = v130; - LOBYTE(v130[0]) = 0; - if ( *(_BYTE *)(v120 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0xFFFFFFFF / v119; - v99 = *(_BYTE *)(v120 + 164); - if ( !v99 ) - { - if ( !v106 ) - { - v101 = 0; - v113 = 0; - while ( v96 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v23 = lpuexcptb - 55; - goto LABEL_61; - } - v23 = lpuexcptb - 87; - if ( v97 < v113 ) - { -LABEL_62: - v24 = v121; - v101 = 1; - v25 = v121[2]; - v26 = v121[3]; - if ( v25 < v26 ) - goto LABEL_63; - goto LABEL_118; - } -LABEL_117: - v101 |= ~v23 < v119 * v113; - v24 = v121; - v113 = v119 * v113 + v23; - v26 = v121[3]; - v25 = v121[2]; - ++v104; - if ( v25 < v26 ) - { -LABEL_63: - v27 = (__int16 *)(v25 + 2); - v24[2] = v27; - goto LABEL_64; - } -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v27 = (__int16 *)v121[2]; - v26 = v121[3]; -LABEL_64: - if ( v26 <= (unsigned int)v27 ) - v28 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v28 = *v27; - v29 = v28 == -1; - v30 = 0; - if ( !v29 ) - v30 = v121; - v108 = v29; - v121 = v30; - if ( v114 && v102 != 0 ) - { - v66 = (__int16 *)v102[2]; - if ( (unsigned int)v66 >= v102[3] ) - v67 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v67 = *v66; - v68 = v67 == -1; - v69 = 0; - if ( !v68 ) - v69 = v102; - v70 = v114 && v102 != 0; - v102 = v69; - if ( !v68 ) - v70 = 0; - lpuexcptc = v70; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v108 == lpuexcptc ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v57 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v57 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v57; - v58 = 0; - if ( lpuexcptb != 0xFFFF ) - v58 = v121; - v121 = v58; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v96 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v23 = lpuexcptb - 48; -LABEL_61: - if ( v97 < v113 ) - goto LABEL_62; - goto LABEL_117; - } - v92 = v106; - v101 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v92; - v113 = 0; - goto LABEL_72; - } - if ( v106 ) - { - v113 = 0; - v101 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v106; - v106 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v117 || v104 ) - goto LABEL_111; - goto LABEL_75; - } - v101 = 0; - v113 = 0; - while ( 1 ) - { - if ( *(_BYTE *)(v120 + 16) && *(_WORD *)(v120 + 38) == lpuexcptb ) - { - v31 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v129; - if ( !v104 ) - { - v99 = 0; - v106 = *(_BYTE *)(v120 + 16); - goto LABEL_72; - } - v110 = v104; - v59 = 15; - if ( Block != v130 ) - v59 = v130[0]; - v105 = v129 + 1; - if ( v129 + 1 > v59 ) - { - std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); - v31 = (int *)Block; - } - v60 = v105; - v104 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v110; - v129 = v60; - *((_BYTE *)Block + v60) = 0; -LABEL_123: - v43 = v121; - v44 = v121[2]; - v45 = v121[3]; - if ( v44 < v45 ) - goto LABEL_124; - goto LABEL_134; - } - if ( lpuexcptb == *(_WORD *)(v120 + 36) ) - break; - v36 = (_WORD *)(v120 + 120); - v37 = v95; - while ( *v36 != lpuexcptb ) - { - ++v36; - if ( !--v37 ) - goto LABEL_102; - } - v39 = (int)v36 - v120 - 120; - v40 = v39 <= 30; - v41 = (v39 >> 1) - 6; - v42 = v39 >> 1; - if ( !v40 ) - v42 = v41; - if ( v97 < v113 ) - { - v101 = v99; - goto LABEL_123; - } - v101 |= ~v42 < v119 * v113; - v43 = v121; - v113 = v119 * v113 + v42; - v45 = v121[3]; - v44 = v121[2]; - ++v104; - if ( v44 < v45 ) - { -LABEL_124: - v46 = (__int16 *)(v44 + 2); - v43[2] = v46; - goto LABEL_125; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v46 = (__int16 *)v121[2]; - v45 = v121[3]; -LABEL_125: - if ( v45 <= (unsigned int)v46 ) - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v47 = *v46; - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = v121; - v109 = v48; - v121 = v49; - if ( v114 && v102 != 0 ) - { - v61 = (__int16 *)v102[2]; - if ( (unsigned int)v61 >= v102[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v62 = *v61; - v63 = v62 == -1; - v64 = 0; - if ( !v63 ) - v64 = v102; - v65 = v114 && v102 != 0; - v102 = v64; - if ( !v63 ) - v65 = 0; - lpuexcpte = v65; - } - else - { - lpuexcpte = a4 == -1; - } - if ( v109 == lpuexcpte ) - { - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v50 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v50 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v50; - v51 = 0; - if ( lpuexcptb != 0xFFFF ) - v51 = v121; - v121 = v51; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - if ( !v129 ) - goto LABEL_73; -LABEL_103: - v38 = 15; - if ( v31 != v130 ) - v38 = v130[0]; - if ( (unsigned int)lpuexcptd + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v104; - v129 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v120 + 8), *(_DWORD *)(v120 + 12), (int)&Block) ) - *a6 = 4; - v31 = (int *)Block; - if ( !v117 && !(v129 | v104) ) - { -LABEL_75: - *a7 = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v106 ) - goto LABEL_75; - if ( v101 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v71 = -v113; - if ( !v98 ) - v71 = v113; - *a7 = v71; - } -LABEL_76: - if ( v99 ) - *a6 |= 2u; - if ( v31 != v130 ) - operator delete(v31); - return v121; -} -// 478C30: variable 'v93' is possibly undefined -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (00479040) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // ebx - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - unsigned int v25; // eax - unsigned int v26; // edx - __int16 *v27; // eax - __int16 v28; // ax - bool v29; // zf - _DWORD *v30; // eax - int *v31; // eax - bool v33; // al - unsigned __int16 *v34; // eax - _DWORD *v35; // eax - _WORD *v36; // eax - unsigned int v37; // edx - unsigned int v38; // edx - int v39; // eax - bool v40; // cc - int v41; // edx - int v42; // eax - _DWORD *v43; // ecx - unsigned int v44; // eax - unsigned int v45; // edx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - unsigned __int16 *v50; // eax - _DWORD *v51; // eax - __int16 *v52; // eax - __int16 v53; // ax - bool v54; // zf - _DWORD *v55; // eax - bool v56; // bl - unsigned __int16 *v57; // eax - _DWORD *v58; // eax - size_t v59; // edx - size_t v60; // edx - __int16 *v61; // eax - __int16 v62; // ax - bool v63; // zf - _DWORD *v64; // eax - bool v65; // bl - __int16 *v66; // eax - __int16 v67; // ax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // bl - int v71; // edx - unsigned __int16 *v72; // eax - _DWORD *v73; // eax - _DWORD *v74; // eax - __int16 *v75; // eax - __int16 v76; // ax - bool v77; // zf - _DWORD *v78; // eax - bool v79; // cl - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // eax - bool v84; // cl - unsigned __int16 *v85; // eax - _DWORD *v86; // edx - __int16 *v87; // eax - __int16 v88; // ax - bool v89; // zf - _DWORD *v90; // eax - bool v91; // dl - char v92; // bl - unsigned int v93; // [esp+8h] [ebp-C0h] - std::locale::_Impl *v94; // [esp+1Ch] [ebp-ACh] - bool v95; // [esp+20h] [ebp-A8h] - unsigned int v96; // [esp+28h] [ebp-A0h] - unsigned int v97; // [esp+2Ch] [ebp-9Ch] - int v98; // [esp+30h] [ebp-98h] - unsigned int v99; // [esp+34h] [ebp-94h] - char v100; // [esp+3Eh] [ebp-8Ah] - int v101; // [esp+40h] [ebp-88h] - char v102; // [esp+40h] [ebp-88h] - _DWORD *v103; // [esp+44h] [ebp-84h] - char v104; // [esp+48h] [ebp-80h] - int v105; // [esp+48h] [ebp-80h] - size_t v106; // [esp+48h] [ebp-80h] - char v107; // [esp+4Dh] [ebp-7Bh] - char v108; // [esp+4Eh] [ebp-7Ah] - char v109; // [esp+4Eh] [ebp-7Ah] - char v110; // [esp+4Eh] [ebp-7Ah] - char v111; // [esp+4Eh] [ebp-7Ah] - char v112; // [esp+50h] [ebp-78h] - char v113; // [esp+50h] [ebp-78h] - unsigned int v114; // [esp+50h] [ebp-78h] - bool v115; // [esp+54h] [ebp-74h] - char v116; // [esp+58h] [ebp-70h] - char v117; // [esp+58h] [ebp-70h] - bool v118; // [esp+58h] [ebp-70h] - int *v119; // [esp+5Ch] [ebp-6Ch] - unsigned int v120; // [esp+5Ch] [ebp-6Ch] - int v121; // [esp+60h] [ebp-68h] - _DWORD *v122; // [esp+64h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-60h] - bool lpuexcpta; // [esp+68h] [ebp-60h] - unsigned __int16 lpuexcptb; // [esp+68h] [ebp-60h] - char lpuexcptc; // [esp+68h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+68h] [ebp-60h] - char lpuexcpte; // [esp+68h] [ebp-60h] - void *Block; // [esp+A8h] [ebp-20h] BYREF - size_t v130; // [esp+ACh] [ebp-1Ch] - int v131[5]; // [esp+B0h] [ebp-18h] BYREF - - v122 = a1; - v103 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v119 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v121 = *v119; - if ( !*v119 ) - { - v74 = operator new(0xA8u); - v74[1] = 0; - *v74 = &off_51AF70; - v74[2] = 0; - v74[3] = 0; - *((_BYTE *)v74 + 16) = 0; - v74[5] = 0; - v74[6] = 0; - v74[7] = 0; - v74[8] = 0; - v74[9] = 0; - *((_BYTE *)v74 + 164) = 0; - v94 = (std::locale::_Impl *)v74; - std::__numpunct_cache::_M_cache((int)v74, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v121 = *v119; - } - v120 = 8; - v101 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v101 != 64 ) - { - v7 = 10; - if ( v101 == 8 ) - v7 = 16; - v120 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v75 = (__int16 *)a1[2]; - if ( (unsigned int)v75 >= a1[3] ) - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v76 = *v75; - v77 = v76 == -1; - v78 = 0; - if ( !v77 ) - v78 = a1; - v79 = lpuexcpta && a1 != 0; - v122 = v78; - if ( !v77 ) - v79 = 0; - v104 = v79; - } - else - { - v104 = a2 == 0xFFFF; - } - v115 = a4 == -1; - if ( v115 && a3 != 0 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - if ( !v82 ) - v83 = a3; - v84 = v115 && a3 != 0; - v103 = v83; - if ( !v82 ) - v84 = 0; - v116 = v84; - } - else - { - v116 = a4 == -1; - } - if ( v116 != v104 ) - { - if ( v122 && a2 == 0xFFFF ) - { - v72 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v72 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v72; - v73 = 0; - if ( lpuexcptb != 0xFFFF ) - v73 = v122; - v122 = v73; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v121 + 16); - v95 = *(_WORD *)(v121 + 112) == lpuexcptb; - if ( *(_WORD *)(v121 + 112) == lpuexcptb || *(_WORD *)(v121 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v121 + 38) != lpuexcptb) && *(_WORD *)(v121 + 36) != lpuexcptb ) - { - v9 = v122[2]; - v10 = v122[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v11 = (__int16 *)v122[2]; - v10 = v122[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v122[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v122; - v112 = v13; - v122 = v14; - if ( v115 && v103 != 0 ) - { - v87 = (__int16 *)v103[2]; - if ( (unsigned int)v87 >= v103[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); - else - v88 = *v87; - v89 = v88 == -1; - v90 = 0; - if ( !v89 ) - v90 = v103; - v91 = v115 && v103 != 0; - v103 = v90; - if ( !v89 ) - v91 = 0; - v117 = v91; - } - else - { - v117 = a4 == -1; - } - if ( v112 == v117 ) - { - v107 = 1; - v105 = 0; - v118 = 0; - goto LABEL_49; - } - if ( v122 ) - { - v85 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v85 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v85; - v86 = 0; - if ( lpuexcptb != 0xFFFF ) - v86 = v122; - v8 = *(_BYTE *)(v121 + 16); - v122 = v86; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v121 + 16); - } - } - } - else - { - v95 = 0; - } - v105 = 0; - v118 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v121 + 38) == lpuexcptb || *(_WORD *)(v121 + 36) == lpuexcptb ) - { -LABEL_178: - v107 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v121 + 120) != lpuexcptb ) - break; - v33 = v120 == 10 || !v118; - if ( !v33 ) - goto LABEL_36; - v118 = v101 == 0 || v120 == 8; - if ( !v118 ) - { - ++v105; - v118 = v33; - goto LABEL_40; - } - v15 = v122; - v105 = 0; - v120 = 8; - v16 = v122[2]; - v17 = v122[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( (unsigned int)v18 < v17 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v18 = (__int16 *)v122[2]; - if ( (unsigned int)v18 < v122[3] ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v122; - v108 = v20; - v122 = v21; - if ( v115 && v103 != 0 ) - { - v52 = (__int16 *)v103[2]; - if ( (unsigned int)v52 >= v103[3] ) - v53 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); - else - v53 = *v52; - v54 = v53 == -1; - v55 = 0; - if ( !v54 ) - v55 = v103; - v56 = v115 && v103 != 0; - v103 = v55; - if ( !v54 ) - v56 = 0; - v113 = v56; - } - else - { - v113 = a4 == -1; - } - if ( v113 == v108 ) - { - v107 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v122 ) - { - v34 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v34 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v34; - v35 = 0; - if ( lpuexcptb != 0xFFFF ) - v35 = v122; - v122 = v35; - } - if ( !v118 ) - { - v107 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v121 + 16); - } - if ( !v118 ) - goto LABEL_178; -LABEL_36: - if ( *(_WORD *)(v121 + 116) != lpuexcptb && *(_WORD *)(v121 + 118) != lpuexcptb ) - { - v107 = 0; - v118 = 1; - goto LABEL_49; - } - if ( v101 != 0 && v120 != 16 ) - { - v107 = 0; - v96 = v120; - v98 = v120; - v118 = 1; - goto LABEL_52; - } - v105 = 0; - v118 = 0; - v120 = 16; -LABEL_40: - v15 = v122; - v16 = v122[2]; - v17 = v122[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v95 = 0; - lpuexcptb = 0; - v107 = 1; - v105 = 0; - v118 = 0; -LABEL_49: - v22 = 22; - if ( v120 != 16 ) - v22 = v120; - v96 = v22; - v98 = v22; -LABEL_52: - v130 = 0; - Block = v131; - LOBYTE(v131[0]) = 0; - if ( *(_BYTE *)(v121 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = v95 + 0x7FFFFFFF; - v99 = v97 / v120; - v100 = *(_BYTE *)(v121 + 164); - if ( !v100 ) - { - if ( !v107 ) - { - v102 = 0; - v114 = 0; - while ( v98 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v23 = lpuexcptb - 55; - goto LABEL_61; - } - v23 = lpuexcptb - 87; - if ( v99 < v114 ) - { -LABEL_62: - v24 = v122; - v102 = 1; - v25 = v122[2]; - v26 = v122[3]; - if ( v25 < v26 ) - goto LABEL_63; - goto LABEL_118; - } -LABEL_117: - v102 |= v97 - v23 < v120 * v114; - v24 = v122; - v114 = v120 * v114 + v23; - v26 = v122[3]; - v25 = v122[2]; - ++v105; - if ( v25 < v26 ) - { -LABEL_63: - v27 = (__int16 *)(v25 + 2); - v24[2] = v27; - goto LABEL_64; - } -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v27 = (__int16 *)v122[2]; - v26 = v122[3]; -LABEL_64: - if ( v26 <= (unsigned int)v27 ) - v28 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v28 = *v27; - v29 = v28 == -1; - v30 = 0; - if ( !v29 ) - v30 = v122; - v109 = v29; - v122 = v30; - if ( v115 && v103 != 0 ) - { - v66 = (__int16 *)v103[2]; - if ( (unsigned int)v66 >= v103[3] ) - v67 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); - else - v67 = *v66; - v68 = v67 == -1; - v69 = 0; - if ( !v68 ) - v69 = v103; - v70 = v115 && v103 != 0; - v103 = v69; - if ( !v68 ) - v70 = 0; - lpuexcptc = v70; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v109 == lpuexcptc ) - { - v100 = 1; - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v122 ) - { - v57 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v57 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v57; - v58 = 0; - if ( lpuexcptb != 0xFFFF ) - v58 = v122; - v122 = v58; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v98 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v23 = lpuexcptb - 48; -LABEL_61: - if ( v99 < v114 ) - goto LABEL_62; - goto LABEL_117; - } - v92 = v107; - v102 = 0; - v107 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - v100 = v92; - v114 = 0; - goto LABEL_72; - } - if ( v107 ) - { - v114 = 0; - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - v100 = v107; - v107 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v118 || v105 ) - goto LABEL_111; - goto LABEL_75; - } - v102 = 0; - v114 = 0; - while ( 1 ) - { - if ( *(_BYTE *)(v121 + 16) && *(_WORD *)(v121 + 38) == lpuexcptb ) - { - v31 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v130; - if ( !v105 ) - { - v100 = 0; - v107 = *(_BYTE *)(v121 + 16); - goto LABEL_72; - } - v111 = v105; - v59 = 15; - if ( Block != v131 ) - v59 = v131[0]; - v106 = v130 + 1; - if ( v130 + 1 > v59 ) - { - std::string::_M_mutate((int)&Block, v130, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v111; - v60 = v106; - v105 = 0; - v130 = v60; - *((_BYTE *)Block + v60) = 0; -LABEL_123: - v43 = v122; - v44 = v122[2]; - v45 = v122[3]; - if ( v44 < v45 ) - goto LABEL_124; - goto LABEL_134; - } - if ( lpuexcptb == *(_WORD *)(v121 + 36) ) - break; - v36 = (_WORD *)(v121 + 120); - v37 = v96; - while ( *v36 != lpuexcptb ) - { - ++v36; - if ( !--v37 ) - goto LABEL_102; - } - v39 = (int)v36 - v121 - 120; - v40 = v39 <= 30; - v41 = (v39 >> 1) - 6; - v42 = v39 >> 1; - if ( !v40 ) - v42 = v41; - if ( v99 < v114 ) - { - v102 = v100; - goto LABEL_123; - } - v102 |= v97 - v42 < v120 * v114; - v43 = v122; - v114 = v120 * v114 + v42; - v45 = v122[3]; - v44 = v122[2]; - ++v105; - if ( v44 < v45 ) - { -LABEL_124: - v46 = (__int16 *)(v44 + 2); - v43[2] = v46; - goto LABEL_125; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v46 = (__int16 *)v122[2]; - v45 = v122[3]; -LABEL_125: - if ( v45 <= (unsigned int)v46 ) - v47 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v47 = *v46; - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = v122; - v110 = v48; - v122 = v49; - if ( v115 && v103 != 0 ) - { - v61 = (__int16 *)v103[2]; - if ( (unsigned int)v61 >= v103[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v103 + 36))(v103); - else - v62 = *v61; - v63 = v62 == -1; - v64 = 0; - if ( !v63 ) - v64 = v103; - v65 = v115 && v103 != 0; - v103 = v64; - if ( !v63 ) - v65 = 0; - lpuexcpte = v65; - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v110 ) - { - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v122 ) - { - v50 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v50 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v50; - v51 = 0; - if ( lpuexcptb != 0xFFFF ) - v51 = v122; - v122 = v51; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v100 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v31 = (int *)Block; - if ( !v130 ) - goto LABEL_73; -LABEL_103: - v38 = 15; - if ( v31 != v131 ) - v38 = v131[0]; - if ( (unsigned int)lpuexcptd + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v105; - v130 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v121 + 8), *(_DWORD *)(v121 + 12), (int)&Block) ) - *a6 = 4; - v31 = (int *)Block; - if ( !v118 && !(v130 | v105) ) - { -LABEL_75: - *a7 = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v107 ) - goto LABEL_75; - if ( v102 ) - { - *a7 = v95 + 0x7FFFFFFF; - *a6 = 4; - } - else - { - v71 = -v114; - if ( !v95 ) - v71 = v114; - *a7 = v71; - } -LABEL_76: - if ( v100 ) - *a6 |= 2u; - if ( v31 != v131 ) - operator delete(v31); - return v122; -} -// 479C40: variable 'v93' is possibly undefined -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (0047A050) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // ebx - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - unsigned int v25; // eax - unsigned int v26; // edx - __int16 *v27; // eax - __int16 v28; // ax - bool v29; // zf - _DWORD *v30; // eax - int *v31; // eax - bool v33; // al - unsigned __int16 *v34; // eax - _DWORD *v35; // eax - _WORD *v36; // eax - unsigned int v37; // edx - unsigned int v38; // edx - int v39; // eax - bool v40; // cc - int v41; // edx - int v42; // eax - _DWORD *v43; // ecx - unsigned int v44; // eax - unsigned int v45; // edx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - unsigned __int16 *v50; // eax - _DWORD *v51; // eax - __int16 *v52; // eax - __int16 v53; // ax - bool v54; // zf - _DWORD *v55; // eax - bool v56; // bl - unsigned __int16 *v57; // eax - _DWORD *v58; // eax - size_t v59; // edx - size_t v60; // ecx - __int16 *v61; // eax - __int16 v62; // ax - bool v63; // zf - _DWORD *v64; // eax - bool v65; // dl - __int16 *v66; // eax - __int16 v67; // ax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // cl - int v71; // edx - unsigned __int16 *v72; // eax - _DWORD *v73; // eax - _DWORD *v74; // eax - __int16 *v75; // eax - __int16 v76; // ax - bool v77; // zf - _DWORD *v78; // eax - bool v79; // bl - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // eax - bool v84; // dl - unsigned __int16 *v85; // eax - _DWORD *v86; // edx - __int16 *v87; // eax - __int16 v88; // ax - bool v89; // zf - _DWORD *v90; // eax - bool v91; // bl - char v92; // bl - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+14h] [ebp-A4h] - unsigned int v95; // [esp+1Ch] [ebp-9Ch] - int v96; // [esp+20h] [ebp-98h] - unsigned int v97; // [esp+24h] [ebp-94h] - bool v98; // [esp+2Dh] [ebp-8Bh] - char v99; // [esp+2Eh] [ebp-8Ah] - int v100; // [esp+30h] [ebp-88h] - char v101; // [esp+30h] [ebp-88h] - _DWORD *v102; // [esp+34h] [ebp-84h] - char v103; // [esp+38h] [ebp-80h] - int v104; // [esp+38h] [ebp-80h] - size_t v105; // [esp+38h] [ebp-80h] - char v106; // [esp+3Dh] [ebp-7Bh] - char v107; // [esp+3Eh] [ebp-7Ah] - char v108; // [esp+3Eh] [ebp-7Ah] - char v109; // [esp+3Eh] [ebp-7Ah] - char v110; // [esp+3Eh] [ebp-7Ah] - char v111; // [esp+40h] [ebp-78h] - char v112; // [esp+40h] [ebp-78h] - unsigned int v113; // [esp+40h] [ebp-78h] - bool v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - int *v118; // [esp+4Ch] [ebp-6Ch] - unsigned int v119; // [esp+4Ch] [ebp-6Ch] - int v120; // [esp+50h] [ebp-68h] - _DWORD *v121; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - unsigned __int16 lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v129; // [esp+9Ch] [ebp-1Ch] - int v130[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v102 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v120 = *v118; - if ( !*v118 ) - { - v74 = operator new(0xA8u); - v74[1] = 0; - *v74 = &off_51AF70; - v74[2] = 0; - v74[3] = 0; - *((_BYTE *)v74 + 16) = 0; - v74[5] = 0; - v74[6] = 0; - v74[7] = 0; - v74[8] = 0; - v74[9] = 0; - *((_BYTE *)v74 + 164) = 0; - v94 = (std::locale::_Impl *)v74; - std::__numpunct_cache::_M_cache((int)v74, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v120 = *v118; - } - v119 = 8; - v100 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v100 != 64 ) - { - v7 = 10; - if ( v100 == 8 ) - v7 = 16; - v119 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v75 = (__int16 *)a1[2]; - if ( (unsigned int)v75 >= a1[3] ) - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v76 = *v75; - v77 = v76 == -1; - v78 = 0; - if ( !v77 ) - v78 = a1; - v79 = lpuexcpta && a1 != 0; - v121 = v78; - if ( !v77 ) - v79 = 0; - v103 = v79; - } - else - { - v103 = a2 == 0xFFFF; - } - v114 = a4 == -1; - if ( v114 && a3 != 0 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - if ( !v82 ) - v83 = a3; - v84 = v114 && a3 != 0; - v102 = v83; - if ( !v82 ) - v84 = 0; - v115 = v84; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v103 ) - { - if ( v121 && a2 == 0xFFFF ) - { - v72 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v72 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v72; - v73 = 0; - if ( lpuexcptb != 0xFFFF ) - v73 = v121; - v121 = v73; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v120 + 16); - v98 = *(_WORD *)(v120 + 112) == lpuexcptb; - if ( *(_WORD *)(v120 + 112) == lpuexcptb || *(_WORD *)(v120 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v120 + 38) != lpuexcptb) && *(_WORD *)(v120 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = (__int16 *)v121[2]; - v10 = v121[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v121[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v121; - v111 = v13; - v121 = v14; - if ( v114 && v102 != 0 ) - { - v87 = (__int16 *)v102[2]; - if ( (unsigned int)v87 >= v102[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v88 = *v87; - v89 = v88 == -1; - v90 = 0; - if ( !v89 ) - v90 = v102; - v91 = v114 && v102 != 0; - v102 = v90; - if ( !v89 ) - v91 = 0; - v116 = v91; - } - else - { - v116 = a4 == -1; - } - if ( v111 == v116 ) - { - v106 = 1; - v104 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v121 ) - { - v85 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v85 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v85; - v86 = 0; - if ( lpuexcptb != 0xFFFF ) - v86 = v121; - v8 = *(_BYTE *)(v120 + 16); - v121 = v86; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v120 + 16); - } - } - } - else - { - v98 = 0; - } - v104 = 0; - v117 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v120 + 38) == lpuexcptb || *(_WORD *)(v120 + 36) == lpuexcptb ) - { -LABEL_178: - v106 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v120 + 120) != lpuexcptb ) - break; - v33 = v119 == 10 || !v117; - if ( !v33 ) - goto LABEL_36; - v117 = v100 == 0 || v119 == 8; - if ( !v117 ) - { - ++v104; - v117 = v33; - goto LABEL_40; - } - v15 = v121; - v104 = 0; - v119 = 8; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( v17 > (unsigned int)v18 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v18 = (__int16 *)v121[2]; - if ( v121[3] > (unsigned int)v18 ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v121; - v107 = v20; - v121 = v21; - if ( v114 && v102 != 0 ) - { - v52 = (__int16 *)v102[2]; - if ( (unsigned int)v52 >= v102[3] ) - v53 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v53 = *v52; - v54 = v53 == -1; - v55 = 0; - if ( !v54 ) - v55 = v102; - v56 = v114 && v102 != 0; - v102 = v55; - if ( !v54 ) - v56 = 0; - v112 = v56; - } - else - { - v112 = a4 == -1; - } - if ( v112 == v107 ) - { - v106 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v121 ) - { - v34 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v34 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v34; - v35 = 0; - if ( lpuexcptb != 0xFFFF ) - v35 = v121; - v121 = v35; - } - if ( !v117 ) - { - v106 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v120 + 16); - } - if ( !v117 ) - goto LABEL_178; -LABEL_36: - if ( *(_WORD *)(v120 + 116) != lpuexcptb && *(_WORD *)(v120 + 118) != lpuexcptb ) - { - v106 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v100 != 0 && v119 != 16 ) - { - v106 = 0; - v95 = v119; - v96 = v119; - v117 = 1; - goto LABEL_52; - } - v104 = 0; - v117 = 0; - v119 = 16; -LABEL_40: - v15 = v121; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v98 = 0; - lpuexcptb = 0; - v106 = 1; - v104 = 0; - v117 = 0; -LABEL_49: - v22 = 22; - if ( v119 != 16 ) - v22 = v119; - v95 = v22; - v96 = v22; -LABEL_52: - v129 = 0; - Block = v130; - LOBYTE(v130[0]) = 0; - if ( *(_BYTE *)(v120 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0xFFFFFFFF / v119; - v99 = *(_BYTE *)(v120 + 164); - if ( !v99 ) - { - if ( !v106 ) - { - v101 = 0; - v113 = 0; - while ( v96 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v23 = lpuexcptb - 55; - goto LABEL_61; - } - v23 = lpuexcptb - 87; - if ( v97 < v113 ) - { -LABEL_62: - v24 = v121; - v101 = 1; - v25 = v121[2]; - v26 = v121[3]; - if ( v25 < v26 ) - goto LABEL_63; - goto LABEL_118; - } -LABEL_117: - v101 |= ~v23 < v119 * v113; - v24 = v121; - v113 = v119 * v113 + v23; - v26 = v121[3]; - v25 = v121[2]; - ++v104; - if ( v25 < v26 ) - { -LABEL_63: - v27 = (__int16 *)(v25 + 2); - v24[2] = v27; - goto LABEL_64; - } -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v27 = (__int16 *)v121[2]; - v26 = v121[3]; -LABEL_64: - if ( v26 <= (unsigned int)v27 ) - v28 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v28 = *v27; - v29 = v28 == -1; - v30 = 0; - if ( !v29 ) - v30 = v121; - v108 = v29; - v121 = v30; - if ( v114 && v102 != 0 ) - { - v66 = (__int16 *)v102[2]; - if ( (unsigned int)v66 >= v102[3] ) - v67 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v67 = *v66; - v68 = v67 == -1; - v69 = 0; - if ( !v68 ) - v69 = v102; - v70 = v114 && v102 != 0; - v102 = v69; - if ( !v68 ) - v70 = 0; - lpuexcptc = v70; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v108 == lpuexcptc ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v57 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v57 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v57; - v58 = 0; - if ( lpuexcptb != 0xFFFF ) - v58 = v121; - v121 = v58; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v96 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v23 = lpuexcptb - 48; -LABEL_61: - if ( v97 < v113 ) - goto LABEL_62; - goto LABEL_117; - } - v92 = v106; - v101 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v92; - v113 = 0; - goto LABEL_72; - } - if ( v106 ) - { - v113 = 0; - v101 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v106; - v106 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v117 || v104 ) - goto LABEL_111; - goto LABEL_75; - } - v101 = 0; - v113 = 0; - while ( 1 ) - { - if ( *(_BYTE *)(v120 + 16) && *(_WORD *)(v120 + 38) == lpuexcptb ) - { - v31 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v129; - if ( !v104 ) - { - v99 = 0; - v106 = *(_BYTE *)(v120 + 16); - goto LABEL_72; - } - v110 = v104; - v59 = 15; - if ( Block != v130 ) - v59 = v130[0]; - v105 = v129 + 1; - if ( v129 + 1 > v59 ) - { - std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); - v31 = (int *)Block; - } - v60 = v105; - v104 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v110; - v129 = v60; - *((_BYTE *)Block + v60) = 0; -LABEL_123: - v43 = v121; - v44 = v121[2]; - v45 = v121[3]; - if ( v44 < v45 ) - goto LABEL_124; - goto LABEL_134; - } - if ( lpuexcptb == *(_WORD *)(v120 + 36) ) - break; - v36 = (_WORD *)(v120 + 120); - v37 = v95; - while ( *v36 != lpuexcptb ) - { - ++v36; - if ( !--v37 ) - goto LABEL_102; - } - v39 = (int)v36 - v120 - 120; - v40 = v39 <= 30; - v41 = (v39 >> 1) - 6; - v42 = v39 >> 1; - if ( !v40 ) - v42 = v41; - if ( v97 < v113 ) - { - v101 = v99; - goto LABEL_123; - } - v101 |= ~v42 < v119 * v113; - v43 = v121; - v113 = v119 * v113 + v42; - v45 = v121[3]; - v44 = v121[2]; - ++v104; - if ( v44 < v45 ) - { -LABEL_124: - v46 = (__int16 *)(v44 + 2); - v43[2] = v46; - goto LABEL_125; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v46 = (__int16 *)v121[2]; - v45 = v121[3]; -LABEL_125: - if ( v45 <= (unsigned int)v46 ) - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v47 = *v46; - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = v121; - v109 = v48; - v121 = v49; - if ( v114 && v102 != 0 ) - { - v61 = (__int16 *)v102[2]; - if ( (unsigned int)v61 >= v102[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v62 = *v61; - v63 = v62 == -1; - v64 = 0; - if ( !v63 ) - v64 = v102; - v65 = v114 && v102 != 0; - v102 = v64; - if ( !v63 ) - v65 = 0; - lpuexcpte = v65; - } - else - { - lpuexcpte = a4 == -1; - } - if ( v109 == lpuexcpte ) - { - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v50 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v50 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v50; - v51 = 0; - if ( lpuexcptb != 0xFFFF ) - v51 = v121; - v121 = v51; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - if ( !v129 ) - goto LABEL_73; -LABEL_103: - v38 = 15; - if ( v31 != v130 ) - v38 = v130[0]; - if ( (unsigned int)lpuexcptd + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v104; - v129 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v120 + 8), *(_DWORD *)(v120 + 12), (int)&Block) ) - *a6 = 4; - v31 = (int *)Block; - if ( !v117 && !(v129 | v104) ) - { -LABEL_75: - *a7 = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v106 ) - goto LABEL_75; - if ( v101 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v71 = -v113; - if ( !v98 ) - v71 = v113; - *a7 = v71; - } -LABEL_76: - if ( v99 ) - *a6 |= 2u; - if ( v31 != v130 ) - operator delete(v31); - return v121; -} -// 47AC30: variable 'v93' is possibly undefined -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (0047B040) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - _WORD *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // ebx - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - unsigned int v25; // eax - unsigned int v26; // edx - __int16 *v27; // eax - __int16 v28; // ax - bool v29; // zf - _DWORD *v30; // eax - int *v31; // eax - bool v33; // al - unsigned __int16 *v34; // eax - _DWORD *v35; // eax - _WORD *v36; // eax - int v37; // edx - unsigned int v38; // edx - int v39; // eax - bool v40; // cc - int v41; // edx - int v42; // eax - _DWORD *v43; // ecx - unsigned int v44; // eax - unsigned int v45; // edx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - unsigned __int16 *v50; // eax - _DWORD *v51; // eax - __int16 *v52; // eax - __int16 v53; // ax - bool v54; // zf - _DWORD *v55; // eax - bool v56; // bl - unsigned __int16 *v57; // eax - _DWORD *v58; // eax - size_t v59; // edx - size_t v60; // edx - __int16 *v61; // eax - __int16 v62; // ax - bool v63; // zf - _DWORD *v64; // eax - bool v65; // dl - __int16 *v66; // eax - __int16 v67; // ax - bool v68; // zf - _DWORD *v69; // eax - bool v70; // bl - int v71; // edx - unsigned __int16 *v72; // eax - _DWORD *v73; // eax - _DWORD *v74; // eax - __int16 *v75; // eax - __int16 v76; // ax - bool v77; // zf - _DWORD *v78; // eax - bool v79; // dl - __int16 *v80; // eax - __int16 v81; // ax - bool v82; // zf - _DWORD *v83; // eax - bool v84; // dl - unsigned __int16 *v85; // eax - _DWORD *v86; // edx - __int16 *v87; // eax - __int16 v88; // ax - bool v89; // zf - _DWORD *v90; // eax - bool v91; // dl - char v92; // bl - unsigned int v93; // [esp+8h] [ebp-B0h] - std::locale::_Impl *v94; // [esp+14h] [ebp-A4h] - int v95; // [esp+1Ch] [ebp-9Ch] - int v96; // [esp+20h] [ebp-98h] - int v97; // [esp+24h] [ebp-94h] - bool v98; // [esp+2Dh] [ebp-8Bh] - char v99; // [esp+2Eh] [ebp-8Ah] - int v100; // [esp+30h] [ebp-88h] - char v101; // [esp+30h] [ebp-88h] - _DWORD *v102; // [esp+34h] [ebp-84h] - char v103; // [esp+38h] [ebp-80h] - int v104; // [esp+38h] [ebp-80h] - size_t v105; // [esp+38h] [ebp-80h] - char v106; // [esp+3Dh] [ebp-7Bh] - char v107; // [esp+3Eh] [ebp-7Ah] - char v108; // [esp+3Eh] [ebp-7Ah] - char v109; // [esp+3Eh] [ebp-7Ah] - char v110; // [esp+3Eh] [ebp-7Ah] - char v111; // [esp+40h] [ebp-78h] - char v112; // [esp+40h] [ebp-78h] - unsigned __int16 v113; // [esp+40h] [ebp-78h] - bool v114; // [esp+44h] [ebp-74h] - char v115; // [esp+48h] [ebp-70h] - char v116; // [esp+48h] [ebp-70h] - bool v117; // [esp+48h] [ebp-70h] - int *v118; // [esp+4Ch] [ebp-6Ch] - int v119; // [esp+4Ch] [ebp-6Ch] - int v120; // [esp+50h] [ebp-68h] - _DWORD *v121; // [esp+54h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-60h] - bool lpuexcpta; // [esp+58h] [ebp-60h] - unsigned __int16 lpuexcptb; // [esp+58h] [ebp-60h] - char lpuexcptc; // [esp+58h] [ebp-60h] - struct _Unwind_Exception *lpuexcptd; // [esp+58h] [ebp-60h] - char lpuexcpte; // [esp+58h] [ebp-60h] - void *Block; // [esp+98h] [ebp-20h] BYREF - size_t v129; // [esp+9Ch] [ebp-1Ch] - int v130[5]; // [esp+A0h] [ebp-18h] BYREF - - v121 = a1; - v102 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v120 = *v118; - if ( !*v118 ) - { - v74 = operator new(0xA8u); - v74[1] = 0; - *v74 = &off_51AF70; - v74[2] = 0; - v74[3] = 0; - *((_BYTE *)v74 + 16) = 0; - v74[5] = 0; - v74[6] = 0; - v74[7] = 0; - v74[8] = 0; - v74[9] = 0; - *((_BYTE *)v74 + 164) = 0; - v94 = (std::locale::_Impl *)v74; - std::__numpunct_cache::_M_cache((int)v74, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v94, lpuexcpt, v93); - v120 = *v118; - } - v119 = 8; - v100 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v100 != 64 ) - { - v7 = 10; - if ( v100 == 8 ) - v7 = 16; - v119 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v75 = (__int16 *)a1[2]; - if ( (unsigned int)v75 >= a1[3] ) - v76 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v76 = *v75; - v77 = v76 == -1; - v78 = 0; - if ( !v77 ) - v78 = a1; - v79 = lpuexcpta && a1 != 0; - v121 = v78; - if ( !v77 ) - v79 = 0; - v103 = v79; - } - else - { - v103 = a2 == 0xFFFF; - } - v114 = a4 == -1; - if ( v114 && a3 != 0 ) - { - v80 = (__int16 *)a3[2]; - if ( (unsigned int)v80 >= a3[3] ) - v81 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v81 = *v80; - v82 = v81 == -1; - v83 = 0; - if ( !v82 ) - v83 = a3; - v84 = v114 && a3 != 0; - v102 = v83; - if ( !v82 ) - v84 = 0; - v115 = v84; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v103 ) - { - if ( v121 && a2 == 0xFFFF ) - { - v72 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v72 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v72; - v73 = 0; - if ( lpuexcptb != 0xFFFF ) - v73 = v121; - v121 = v73; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v120 + 16); - v98 = *(_WORD *)(v120 + 112) == lpuexcptb; - if ( *(_WORD *)(v120 + 112) == lpuexcptb || *(_WORD *)(v120 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v120 + 38) != lpuexcptb) && *(_WORD *)(v120 + 36) != lpuexcptb ) - { - v9 = v121[2]; - v10 = v121[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v11 = (__int16 *)v121[2]; - v10 = v121[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v121[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v121; - v111 = v13; - v121 = v14; - if ( v114 && v102 != 0 ) - { - v87 = (__int16 *)v102[2]; - if ( (unsigned int)v87 >= v102[3] ) - v88 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v88 = *v87; - v89 = v88 == -1; - v90 = 0; - if ( !v89 ) - v90 = v102; - v91 = v114 && v102 != 0; - v102 = v90; - if ( !v89 ) - v91 = 0; - v116 = v91; - } - else - { - v116 = a4 == -1; - } - if ( v111 == v116 ) - { - v106 = 1; - v104 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v121 ) - { - v85 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v85 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v85; - v86 = 0; - if ( lpuexcptb != 0xFFFF ) - v86 = v121; - v8 = *(_BYTE *)(v120 + 16); - v121 = v86; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v120 + 16); - } - } - } - else - { - v98 = 0; - } - v104 = 0; - v117 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v120 + 38) == lpuexcptb || *(_WORD *)(v120 + 36) == lpuexcptb ) - { -LABEL_178: - v106 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v120 + 120) != lpuexcptb ) - break; - v33 = v119 == 10 || !v117; - if ( !v33 ) - goto LABEL_36; - v117 = v100 == 0 || v119 == 8; - if ( !v117 ) - { - ++v104; - v117 = v33; - goto LABEL_40; - } - v15 = v121; - v104 = 0; - v119 = 8; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( v17 > (unsigned int)v18 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v18 = (__int16 *)v121[2]; - if ( v121[3] > (unsigned int)v18 ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v121; - v107 = v20; - v121 = v21; - if ( v114 && v102 != 0 ) - { - v52 = (__int16 *)v102[2]; - if ( (unsigned int)v52 >= v102[3] ) - v53 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v53 = *v52; - v54 = v53 == -1; - v55 = 0; - if ( !v54 ) - v55 = v102; - v56 = v114 && v102 != 0; - v102 = v55; - if ( !v54 ) - v56 = 0; - v112 = v56; - } - else - { - v112 = a4 == -1; - } - if ( v112 == v107 ) - { - v106 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v121 ) - { - v34 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v34 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v34; - v35 = 0; - if ( lpuexcptb != 0xFFFF ) - v35 = v121; - v121 = v35; - } - if ( !v117 ) - { - v106 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v120 + 16); - } - if ( !v117 ) - goto LABEL_178; -LABEL_36: - if ( *(_WORD *)(v120 + 116) != lpuexcptb && *(_WORD *)(v120 + 118) != lpuexcptb ) - { - v106 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v100 != 0 && v119 != 16 ) - { - v106 = 0; - v95 = v119; - v96 = v119; - v117 = 1; - goto LABEL_52; - } - v104 = 0; - v117 = 0; - v119 = 16; -LABEL_40: - v15 = v121; - v16 = v121[2]; - v17 = v121[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v98 = 0; - lpuexcptb = 0; - v106 = 1; - v104 = 0; - v117 = 0; -LABEL_49: - v22 = 22; - if ( v119 != 16 ) - v22 = v119; - v95 = v22; - v96 = v22; -LABEL_52: - v129 = 0; - Block = v130; - LOBYTE(v130[0]) = 0; - if ( *(_BYTE *)(v120 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0xFFFF / v119; - v99 = *(_BYTE *)(v120 + 164); - if ( !v99 ) - { - if ( !v106 ) - { - v101 = 0; - v113 = 0; - while ( v96 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v23 = lpuexcptb - 55; - goto LABEL_61; - } - v23 = lpuexcptb - 87; - if ( (unsigned __int16)v97 < v113 ) - { -LABEL_62: - v24 = v121; - v101 = 1; - v25 = v121[2]; - v26 = v121[3]; - if ( v25 < v26 ) - goto LABEL_63; - goto LABEL_118; - } -LABEL_117: - v101 |= (unsigned __int16)(v119 * v113) > 0xFFFF - v23; - v24 = v121; - v113 = v119 * v113 + v23; - v26 = v121[3]; - v25 = v121[2]; - ++v104; - if ( v25 < v26 ) - { -LABEL_63: - v27 = (__int16 *)(v25 + 2); - v24[2] = v27; - goto LABEL_64; - } -LABEL_118: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v27 = (__int16 *)v121[2]; - v26 = v121[3]; -LABEL_64: - if ( v26 <= (unsigned int)v27 ) - v28 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v28 = *v27; - v29 = v28 == -1; - v30 = 0; - if ( !v29 ) - v30 = v121; - v108 = v29; - v121 = v30; - if ( v114 && v102 != 0 ) - { - v66 = (__int16 *)v102[2]; - if ( (unsigned int)v66 >= v102[3] ) - v67 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v67 = *v66; - v68 = v67 == -1; - v69 = 0; - if ( !v68 ) - v69 = v102; - v70 = v114 && v102 != 0; - v102 = v69; - if ( !v68 ) - v70 = 0; - lpuexcptc = v70; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v108 == lpuexcptc ) - { - v99 = 1; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v57 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v57 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v57; - v58 = 0; - if ( lpuexcptb != 0xFFFF ) - v58 = v121; - v121 = v58; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v96 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v23 = lpuexcptb - 48; -LABEL_61: - if ( (unsigned __int16)v97 < v113 ) - goto LABEL_62; - goto LABEL_117; - } - v92 = v106; - v101 = 0; - v106 = 0; - v99 = v92; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v113 = 0; - goto LABEL_72; - } - if ( v106 ) - { - v101 = 0; - v113 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - v99 = v106; - v106 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v117 || v104 ) - goto LABEL_111; - goto LABEL_75; - } - v101 = 0; - v113 = 0; - while ( 1 ) - { - if ( *(_BYTE *)(v120 + 16) && *(_WORD *)(v120 + 38) == lpuexcptb ) - { - v31 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v129; - if ( !v104 ) - { - v99 = 0; - v106 = *(_BYTE *)(v120 + 16); - goto LABEL_72; - } - v110 = v104; - v59 = 15; - if ( Block != v130 ) - v59 = v130[0]; - v105 = v129 + 1; - if ( v129 + 1 > v59 ) - { - std::string::_M_mutate((int)&Block, v129, 0, 0, 1u); - v31 = (int *)Block; - } - v60 = v105; - v104 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v110; - v129 = v60; - *((_BYTE *)Block + v60) = 0; -LABEL_123: - v43 = v121; - v44 = v121[2]; - v45 = v121[3]; - if ( v44 < v45 ) - goto LABEL_124; - goto LABEL_134; - } - if ( lpuexcptb == *(_WORD *)(v120 + 36) ) - break; - v36 = (_WORD *)(v120 + 120); - v37 = v95; - while ( *v36 != lpuexcptb ) - { - ++v36; - if ( !--v37 ) - goto LABEL_102; - } - v39 = (int)v36 - v120 - 120; - v40 = v39 <= 30; - v41 = (v39 >> 1) - 6; - v42 = v39 >> 1; - if ( !v40 ) - v42 = v41; - if ( (unsigned __int16)v97 < v113 ) - { - v101 = v99; - goto LABEL_123; - } - v101 |= (unsigned __int16)(v119 * v113) > 0xFFFF - v42; - v43 = v121; - v113 = v119 * v113 + v42; - v45 = v121[3]; - v44 = v121[2]; - ++v104; - if ( v44 < v45 ) - { -LABEL_124: - v46 = (__int16 *)(v44 + 2); - v43[2] = v46; - goto LABEL_125; - } -LABEL_134: - (*(void (__fastcall **)(_DWORD *))(*v121 + 40))(v121); - v46 = (__int16 *)v121[2]; - v45 = v121[3]; -LABEL_125: - if ( v45 <= (unsigned int)v46 ) - v47 = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - v47 = *v46; - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = v121; - v109 = v48; - v121 = v49; - if ( v114 && v102 != 0 ) - { - v61 = (__int16 *)v102[2]; - if ( (unsigned int)v61 >= v102[3] ) - v62 = (*(int (__fastcall **)(_DWORD *))(*v102 + 36))(v102); - else - v62 = *v61; - v63 = v62 == -1; - v64 = 0; - if ( !v63 ) - v64 = v102; - v65 = v114 && v102 != 0; - v102 = v64; - if ( !v63 ) - v65 = 0; - lpuexcpte = v65; - } - else - { - lpuexcpte = a4 == -1; - } - if ( v109 == lpuexcpte ) - { - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - goto LABEL_72; - } - if ( v121 ) - { - v50 = (unsigned __int16 *)v121[2]; - if ( (unsigned int)v50 >= v121[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v121 + 36))(v121); - else - lpuexcptb = *v50; - v51 = 0; - if ( lpuexcptb != 0xFFFF ) - v51 = v121; - v121 = v51; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v99 = 0; - lpuexcptd = (struct _Unwind_Exception *)v129; - v31 = (int *)Block; - if ( !v129 ) - goto LABEL_73; -LABEL_103: - v38 = 15; - if ( v31 != v130 ) - v38 = v130[0]; - if ( (unsigned int)lpuexcptd + 1 > v38 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v31 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v31) = v104; - v129 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v120 + 8), *(_DWORD *)(v120 + 12), (int)&Block) ) - *a6 = 4; - v31 = (int *)Block; - if ( !v117 && !(v129 | v104) ) - { -LABEL_75: - *a7 = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v106 ) - goto LABEL_75; - if ( v101 ) - { - *a7 = -1; - *a6 = 4; - } - else - { - v71 = -v113; - if ( !v98 ) - LOWORD(v71) = v113; - *a7 = v71; - } -LABEL_76: - if ( v99 ) - *a6 |= 2u; - if ( v31 != v130 ) - operator delete(v31); - return v121; -} -// 47BC40: variable 'v93' is possibly undefined -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (0047C050) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // edi - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - unsigned __int64 v23; // kr00_8 - int v24; // esi - _DWORD *v25; // ecx - unsigned int v26; // eax - unsigned int v27; // edx - __int16 *v28; // eax - __int16 v29; // ax - bool v30; // zf - _DWORD *v31; // eax - int *v32; // eax - bool v34; // al - unsigned __int16 *v35; // eax - _DWORD *v36; // eax - _WORD *v37; // eax - int v38; // edx - unsigned int v39; // edx - int v40; // ecx - int v41; // ebx - int v42; // eax - int v43; // esi - _DWORD *v44; // ebx - unsigned int v45; // eax - unsigned int v46; // edx - __int16 *v47; // eax - __int16 v48; // ax - bool v49; // zf - _DWORD *v50; // eax - unsigned __int16 *v51; // eax - _DWORD *v52; // eax - __int16 *v53; // eax - __int16 v54; // ax - bool v55; // zf - _DWORD *v56; // eax - bool v57; // si - unsigned __int16 *v58; // eax - _DWORD *v59; // eax - char v60; // bl - size_t v61; // edx - size_t v62; // ebx - __int16 *v63; // eax - __int16 v64; // ax - bool v65; // zf - _DWORD *v66; // eax - bool v67; // cl - __int16 *v68; // eax - __int16 v69; // ax - bool v70; // zf - _DWORD *v71; // eax - bool v72; // bl - unsigned __int16 *v73; // eax - _DWORD *v74; // eax - _DWORD *v75; // eax - __int16 *v76; // eax - __int16 v77; // ax - bool v78; // zf - _DWORD *v79; // eax - bool v80; // si - __int16 *v81; // eax - __int16 v82; // ax - bool v83; // zf - _DWORD *v84; // eax - bool v85; // si - unsigned __int16 *v86; // eax - _DWORD *v87; // edx - __int16 *v88; // eax - __int16 v89; // ax - bool v90; // zf - _DWORD *v91; // eax - bool v92; // bl - char v93; // bl - unsigned int v94; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v95; // [esp+14h] [ebp-C4h] - int v96; // [esp+1Ch] [ebp-BCh] - unsigned __int64 v97; // [esp+20h] [ebp-B8h] - int v98; // [esp+28h] [ebp-B0h] - bool v99; // [esp+39h] [ebp-9Fh] - char v100; // [esp+3Ah] [ebp-9Eh] - _DWORD *v101; // [esp+3Ch] [ebp-9Ch] - int v102; // [esp+40h] [ebp-98h] - __int64 v103; // [esp+40h] [ebp-98h] - int v104; // [esp+48h] [ebp-90h] - size_t v105; // [esp+48h] [ebp-90h] - char v106; // [esp+4Ch] [ebp-8Ch] - char v107; // [esp+4Dh] [ebp-8Bh] - char v108; // [esp+4Dh] [ebp-8Bh] - char v109; // [esp+4Dh] [ebp-8Bh] - char v110; // [esp+4Eh] [ebp-8Ah] - char v111; // [esp+4Eh] [ebp-8Ah] - char v112; // [esp+4Eh] [ebp-8Ah] - char v113; // [esp+4Eh] [ebp-8Ah] - bool v114; // [esp+50h] [ebp-88h] - char v115; // [esp+54h] [ebp-84h] - char v116; // [esp+54h] [ebp-84h] - bool v117; // [esp+54h] [ebp-84h] - int *v118; // [esp+58h] [ebp-80h] - int v119; // [esp+58h] [ebp-80h] - unsigned __int64 v120; // [esp+58h] [ebp-80h] - int v121; // [esp+60h] [ebp-78h] - _DWORD *v122; // [esp+64h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+68h] [ebp-70h] - bool lpuexcpta; // [esp+68h] [ebp-70h] - unsigned __int16 lpuexcptb; // [esp+68h] [ebp-70h] - char lpuexcptc; // [esp+68h] [ebp-70h] - struct _Unwind_Exception *lpuexcptd; // [esp+68h] [ebp-70h] - char lpuexcpte; // [esp+68h] [ebp-70h] - void *Block; // [esp+A8h] [ebp-30h] BYREF - size_t v130; // [esp+ACh] [ebp-2Ch] - int v131[10]; // [esp+B0h] [ebp-28h] BYREF - - v122 = a1; - v101 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v118 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v121 = *v118; - if ( !*v118 ) - { - v75 = operator new(0xA8u); - v75[1] = 0; - *v75 = &off_51AF70; - v75[2] = 0; - v75[3] = 0; - *((_BYTE *)v75 + 16) = 0; - v75[5] = 0; - v75[6] = 0; - v75[7] = 0; - v75[8] = 0; - v75[9] = 0; - *((_BYTE *)v75 + 164) = 0; - v95 = (std::locale::_Impl *)v75; - std::__numpunct_cache::_M_cache((int)v75, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v95, lpuexcpt, v94); - v121 = *v118; - } - v119 = 8; - v102 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v102 != 64 ) - { - v7 = 10; - if ( v102 == 8 ) - v7 = 16; - v119 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v76 = (__int16 *)a1[2]; - if ( (unsigned int)v76 >= a1[3] ) - v77 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v77 = *v76; - v78 = v77 == -1; - v79 = 0; - if ( !v78 ) - v79 = a1; - v80 = lpuexcpta && a1 != 0; - v122 = v79; - if ( !v78 ) - v80 = 0; - v107 = v80; - } - else - { - v107 = a2 == 0xFFFF; - } - v114 = a4 == -1; - if ( v114 && a3 != 0 ) - { - v81 = (__int16 *)a3[2]; - if ( (unsigned int)v81 >= a3[3] ) - v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v82 = *v81; - v83 = v82 == -1; - v84 = 0; - if ( !v83 ) - v84 = a3; - v85 = v114 && a3 != 0; - v101 = v84; - if ( !v83 ) - v85 = 0; - v115 = v85; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v107 ) - { - if ( v122 && a2 == 0xFFFF ) - { - v73 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v73 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v73; - v74 = 0; - if ( lpuexcptb != 0xFFFF ) - v74 = v122; - v122 = v74; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v121 + 16); - v99 = *(_WORD *)(v121 + 112) == lpuexcptb; - if ( *(_WORD *)(v121 + 112) == lpuexcptb || *(_WORD *)(v121 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v121 + 38) != lpuexcptb) && *(_WORD *)(v121 + 36) != lpuexcptb ) - { - v9 = v122[2]; - v10 = v122[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v11 = (__int16 *)v122[2]; - v10 = v122[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v122[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v122; - v110 = v13; - v122 = v14; - if ( v114 && v101 != 0 ) - { - v88 = (__int16 *)v101[2]; - if ( (unsigned int)v88 >= v101[3] ) - v89 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); - else - v89 = *v88; - v90 = v89 == -1; - v91 = 0; - if ( !v90 ) - v91 = v101; - v92 = v114 && v101 != 0; - v101 = v91; - if ( !v90 ) - v92 = 0; - v116 = v92; - } - else - { - v116 = a4 == -1; - } - if ( v110 == v116 ) - { - v106 = 1; - v104 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v122 ) - { - v86 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v86 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v86; - v87 = 0; - if ( lpuexcptb != 0xFFFF ) - v87 = v122; - v8 = *(_BYTE *)(v121 + 16); - v122 = v87; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v121 + 16); - } - } - } - else - { - v99 = 0; - } - v117 = 0; - v104 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v121 + 38) == lpuexcptb || *(_WORD *)(v121 + 36) == lpuexcptb ) - { -LABEL_182: - v106 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v121 + 120) != lpuexcptb ) - break; - v34 = v119 == 10 || !v117; - if ( !v34 ) - goto LABEL_36; - v117 = v102 == 0 || v119 == 8; - if ( !v117 ) - { - ++v104; - v117 = v34; - goto LABEL_40; - } - v15 = v122; - v119 = 8; - v104 = 0; - v16 = v122[2]; - v17 = v122[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( (unsigned int)v18 < v17 ) - goto LABEL_42; - goto LABEL_87; - } -LABEL_86: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v18 = (__int16 *)v122[2]; - if ( (unsigned int)v18 < v122[3] ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_87: - v19 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v122; - v108 = v20; - v122 = v21; - if ( v114 && v101 != 0 ) - { - v53 = (__int16 *)v101[2]; - if ( (unsigned int)v53 >= v101[3] ) - v54 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); - else - v54 = *v53; - v55 = v54 == -1; - v56 = 0; - if ( !v55 ) - v56 = v101; - v57 = v114 && v101 != 0; - v101 = v56; - if ( !v55 ) - v57 = 0; - v111 = v57; - } - else - { - v111 = a4 == -1; - } - if ( v111 == v108 ) - { - v106 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v122 ) - { - v35 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v35 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v35; - v36 = 0; - if ( lpuexcptb != 0xFFFF ) - v36 = v122; - v122 = v36; - } - if ( !v117 ) - { - v106 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v121 + 16); - } - if ( !v117 ) - goto LABEL_182; -LABEL_36: - if ( *(_WORD *)(v121 + 116) != lpuexcptb && *(_WORD *)(v121 + 118) != lpuexcptb ) - { - v106 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v102 != 0 && v119 != 16 ) - { - v106 = 0; - v96 = v119; - v98 = v119; - v117 = 1; - goto LABEL_52; - } - v104 = 0; - v117 = 0; - v119 = 16; -LABEL_40: - v15 = v122; - v16 = v122[2]; - v17 = v122[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_86; - } - v99 = 0; - lpuexcptb = 0; - v106 = 1; - v104 = 0; - v117 = 0; -LABEL_49: - v22 = 22; - if ( v119 != 16 ) - v22 = v119; - v96 = v22; - v98 = v22; -LABEL_52: - v130 = 0; - Block = v131; - LOBYTE(v131[0]) = 0; - if ( *(_BYTE *)(v121 + 16) ) - std::string::reserve(&Block, 0x20u); - v97 = 0x8000000000000000LL; - if ( !v99 ) - v97 = 0x7FFFFFFFFFFFFFFFLL; - v103 = v119; - v23 = v97 / v119; - v100 = *(_BYTE *)(v121 + 164); - if ( !v100 ) - { - if ( !v106 ) - { - v109 = 0; - v120 = 0LL; - while ( v98 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_62; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_104; - v24 = lpuexcptb - 55; - } - else - { - v24 = lpuexcptb - 87; - } -LABEL_63: - if ( v23 >= v120 ) - { - v109 |= v97 - v24 < v103 * v120; - v25 = v122; - v120 = v103 * v120 + v24; - v26 = v122[2]; - v27 = v122[3]; - ++v104; - if ( v26 < v27 ) - { -LABEL_65: - v28 = (__int16 *)(v26 + 2); - v25[2] = v28; - goto LABEL_66; - } - } - else - { - v25 = v122; - v109 = 1; - v26 = v122[2]; - v27 = v122[3]; - if ( v26 < v27 ) - goto LABEL_65; - } - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v28 = (__int16 *)v122[2]; - v27 = v122[3]; -LABEL_66: - if ( v27 <= (unsigned int)v28 ) - v29 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v29 = *v28; - v30 = v29 == -1; - v31 = 0; - if ( !v30 ) - v31 = v122; - v112 = v30; - v122 = v31; - if ( v114 && v101 != 0 ) - { - v68 = (__int16 *)v101[2]; - if ( (unsigned int)v68 >= v101[3] ) - v69 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); - else - v69 = *v68; - v70 = v69 == -1; - v71 = 0; - if ( !v70 ) - v71 = v101; - v72 = v114 && v101 != 0; - v101 = v71; - if ( !v70 ) - v72 = 0; - lpuexcptc = v72; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v112 == lpuexcptc ) - { - v100 = 1; - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - goto LABEL_74; - } - if ( v122 ) - { - v58 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v58 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v58; - v59 = 0; - if ( lpuexcptb != 0xFFFF ) - v59 = v122; - v122 = v59; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v98 + 48) <= lpuexcptb ) - goto LABEL_104; -LABEL_62: - v24 = lpuexcptb - 48; - goto LABEL_63; - } - v93 = v106; - v109 = 0; - v106 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - v100 = v93; - v120 = 0LL; - goto LABEL_74; - } - if ( v106 ) - { - v120 = 0LL; - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - v100 = v106; - v109 = 0; - v106 = 0; -LABEL_74: - if ( lpuexcptd ) - goto LABEL_105; -LABEL_75: - if ( v117 || v104 ) - goto LABEL_113; - goto LABEL_77; - } - v109 = 0; - v120 = 0LL; - while ( 1 ) - { - if ( *(_BYTE *)(v121 + 16) && *(_WORD *)(v121 + 38) == lpuexcptb ) - { - v32 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v130; - if ( !v104 ) - { - v100 = 0; - v106 = *(_BYTE *)(v121 + 16); - goto LABEL_74; - } - v60 = v104; - v61 = 15; - if ( Block != v131 ) - v61 = v131[0]; - v105 = v130 + 1; - if ( v130 + 1 > v61 ) - { - std::string::_M_mutate((int)&Block, v130, 0, 0, 1u); - v32 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v32) = v60; - v62 = v105; - v104 = 0; - v130 = v62; - *((_BYTE *)Block + v62) = 0; -LABEL_127: - v44 = v122; - v45 = v122[2]; - v46 = v122[3]; - if ( v45 < v46 ) - goto LABEL_128; - goto LABEL_138; - } - if ( lpuexcptb == *(_WORD *)(v121 + 36) ) - break; - v37 = (_WORD *)(v121 + 120); - v38 = v96; - while ( *v37 != lpuexcptb ) - { - ++v37; - if ( !--v38 ) - goto LABEL_104; - } - v42 = (int)v37 - v121 - 120; - v43 = (v42 >> 1) - 6; - if ( v42 <= 30 ) - v43 = v42 >> 1; - if ( v23 < v120 ) - { - v109 = v100; - goto LABEL_127; - } - v44 = v122; - v109 |= v97 - v43 < v103 * v120; - v45 = v122[2]; - v46 = v122[3]; - v120 = v103 * v120 + v43; - ++v104; - if ( v45 < v46 ) - { -LABEL_128: - v47 = (__int16 *)(v45 + 2); - v44[2] = v47; - goto LABEL_129; - } -LABEL_138: - (*(void (__fastcall **)(_DWORD *))(*v122 + 40))(v122); - v47 = (__int16 *)v122[2]; - v46 = v122[3]; -LABEL_129: - if ( v46 <= (unsigned int)v47 ) - v48 = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - v48 = *v47; - v49 = v48 == -1; - v50 = 0; - if ( !v49 ) - v50 = v122; - v113 = v49; - v122 = v50; - if ( v114 && v101 != 0 ) - { - v63 = (__int16 *)v101[2]; - if ( (unsigned int)v63 >= v101[3] ) - v64 = (*(int (__fastcall **)(_DWORD *))(*v101 + 36))(v101); - else - v64 = *v63; - v65 = v64 == -1; - v66 = 0; - if ( !v65 ) - v66 = v101; - v67 = v114 && v101 != 0; - v101 = v66; - if ( !v65 ) - v67 = 0; - lpuexcpte = v67; - } - else - { - lpuexcpte = a4 == -1; - } - if ( lpuexcpte == v113 ) - { - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - goto LABEL_74; - } - if ( v122 ) - { - v51 = (unsigned __int16 *)v122[2]; - if ( (unsigned int)v51 >= v122[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v122 + 36))(v122); - else - lpuexcptb = *v51; - v52 = 0; - if ( lpuexcptb != 0xFFFF ) - v52 = v122; - v122 = v52; - } - else - { - lpuexcptb = -1; - } - } -LABEL_104: - v100 = 0; - lpuexcptd = (struct _Unwind_Exception *)v130; - v32 = (int *)Block; - if ( !v130 ) - goto LABEL_75; -LABEL_105: - v39 = 15; - if ( v32 != v131 ) - v39 = v131[0]; - if ( (unsigned int)lpuexcptd + 1 > v39 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v32 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v32) = v104; - v130 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v121 + 8), *(_DWORD *)(v121 + 12), (int)&Block) ) - *a6 = 4; - v32 = (int *)Block; - if ( !v117 && !(v130 | v104) ) - { -LABEL_77: - *a7 = 0; - a7[1] = 0; - *a6 = 4; - goto LABEL_78; - } -LABEL_113: - if ( v106 ) - goto LABEL_77; - if ( v109 ) - { - v40 = 0; - v41 = 0x80000000; - if ( !v99 ) - { - v40 = -1; - v41 = 0x7FFFFFFF; - } - *a7 = v40; - a7[1] = v41; - *a6 = 4; - } - else - { - if ( v99 ) - v120 = -(__int64)v120; - *(_QWORD *)a7 = v120; - } -LABEL_78: - if ( v100 ) - *a6 |= 2u; - if ( v32 != v131 ) - operator delete(v32); - return v122; -} -// 47CE72: variable 'v94' is possibly undefined -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (0047D2F0) -------------------------------------------------------- -_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int v7; // eax - char v8; // al - unsigned int v9; // eax - unsigned int v10; // edx - __int16 *v11; // eax - __int16 v12; // ax - bool v13; // zf - _DWORD *v14; // eax - _DWORD *v15; // edi - unsigned int v16; // eax - unsigned int v17; // edx - __int16 *v18; // eax - __int16 v19; // ax - bool v20; // zf - _DWORD *v21; // eax - int v22; // eax - unsigned __int64 v23; // kr08_8 - int v24; // esi - _DWORD *v25; // ecx - unsigned int v26; // eax - unsigned int v27; // edx - __int16 *v28; // eax - __int16 v29; // ax - bool v30; // zf - _DWORD *v31; // eax - int *v32; // eax - bool v34; // al - unsigned __int16 *v35; // eax - _DWORD *v36; // eax - _WORD *v37; // eax - int v38; // edx - unsigned int v39; // edx - int v40; // eax - int v41; // esi - _DWORD *v42; // ebx - unsigned int v43; // eax - unsigned int v44; // edx - __int16 *v45; // eax - __int16 v46; // ax - bool v47; // zf - _DWORD *v48; // eax - unsigned __int16 *v49; // eax - _DWORD *v50; // eax - __int16 *v51; // eax - __int16 v52; // ax - bool v53; // zf - _DWORD *v54; // eax - bool v55; // bl - unsigned __int16 *v56; // eax - _DWORD *v57; // eax - size_t v58; // edx - size_t v59; // edi - __int16 *v60; // eax - __int16 v61; // ax - bool v62; // zf - _DWORD *v63; // eax - bool v64; // cl - __int16 *v65; // eax - __int16 v66; // ax - bool v67; // zf - _DWORD *v68; // eax - bool v69; // bl - unsigned __int16 *v70; // eax - _DWORD *v71; // eax - _DWORD *v72; // eax - __int16 *v73; // eax - __int16 v74; // ax - bool v75; // zf - _DWORD *v76; // eax - bool v77; // bl - __int16 *v78; // eax - __int16 v79; // ax - bool v80; // zf - _DWORD *v81; // eax - bool v82; // cl - unsigned __int16 *v83; // eax - _DWORD *v84; // edx - __int16 *v85; // eax - __int16 v86; // ax - bool v87; // zf - _DWORD *v88; // eax - bool v89; // si - char v90; // bl - unsigned int v91; // [esp+8h] [ebp-D0h] - std::locale::_Impl *v92; // [esp+18h] [ebp-C0h] - int v93; // [esp+20h] [ebp-B8h] - int v94; // [esp+24h] [ebp-B4h] - bool v95; // [esp+35h] [ebp-A3h] - char v96; // [esp+36h] [ebp-A2h] - int v97; // [esp+38h] [ebp-A0h] - __int64 v98; // [esp+38h] [ebp-A0h] - _DWORD *v99; // [esp+40h] [ebp-98h] - int v100; // [esp+44h] [ebp-94h] - size_t v101; // [esp+44h] [ebp-94h] - char v102; // [esp+48h] [ebp-90h] - char v103; // [esp+49h] [ebp-8Fh] - char v104; // [esp+49h] [ebp-8Fh] - char v105; // [esp+49h] [ebp-8Fh] - char v106; // [esp+4Ah] [ebp-8Eh] - char v107; // [esp+4Ah] [ebp-8Eh] - char v108; // [esp+4Ah] [ebp-8Eh] - char v109; // [esp+4Ah] [ebp-8Eh] - char v110; // [esp+4Ah] [ebp-8Eh] - bool v111; // [esp+4Ch] [ebp-8Ch] - int *v112; // [esp+50h] [ebp-88h] - int v113; // [esp+50h] [ebp-88h] - unsigned __int64 v114; // [esp+50h] [ebp-88h] - char v115; // [esp+58h] [ebp-80h] - char v116; // [esp+58h] [ebp-80h] - bool v117; // [esp+58h] [ebp-80h] - int v118; // [esp+5Ch] [ebp-7Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-78h] - bool lpuexcpta; // [esp+60h] [ebp-78h] - unsigned __int16 lpuexcptb; // [esp+60h] [ebp-78h] - char lpuexcptc; // [esp+60h] [ebp-78h] - struct _Unwind_Exception *lpuexcptd; // [esp+60h] [ebp-78h] - char lpuexcpte; // [esp+60h] [ebp-78h] - _DWORD *v125; // [esp+68h] [ebp-70h] - void *Block; // [esp+A8h] [ebp-30h] BYREF - size_t v127; // [esp+ACh] [ebp-2Ch] - int v128[10]; // [esp+B0h] [ebp-28h] BYREF - - v125 = a1; - v99 = a3; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v112 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)lpuexcpt); - v118 = *v112; - if ( !*v112 ) - { - v72 = operator new(0xA8u); - v72[1] = 0; - *v72 = &off_51AF70; - v72[2] = 0; - v72[3] = 0; - *((_BYTE *)v72 + 16) = 0; - v72[5] = 0; - v72[6] = 0; - v72[7] = 0; - v72[8] = 0; - v72[9] = 0; - *((_BYTE *)v72 + 164) = 0; - v92 = (std::locale::_Impl *)v72; - std::__numpunct_cache::_M_cache((int)v72, a5 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v92, lpuexcpt, v91); - v118 = *v112; - } - v113 = 8; - v97 = *(_DWORD *)(a5 + 12) & 0x4A; - if ( v97 != 64 ) - { - v7 = 10; - if ( v97 == 8 ) - v7 = 16; - v113 = v7; - } - lpuexcpta = a2 == 0xFFFF; - if ( lpuexcpta && a1 != 0 ) - { - v73 = (__int16 *)a1[2]; - if ( (unsigned int)v73 >= a1[3] ) - v74 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v74 = *v73; - v75 = v74 == -1; - v76 = 0; - if ( !v75 ) - v76 = a1; - v77 = lpuexcpta && a1 != 0; - v125 = v76; - if ( !v75 ) - v77 = 0; - v103 = v77; - } - else - { - v103 = a2 == 0xFFFF; - } - v111 = a4 == -1; - if ( v111 && a3 != 0 ) - { - v78 = (__int16 *)a3[2]; - if ( (unsigned int)v78 >= a3[3] ) - v79 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v79 = *v78; - v80 = v79 == -1; - v81 = 0; - if ( !v80 ) - v81 = a3; - v82 = v111 && a3 != 0; - v99 = v81; - if ( !v80 ) - v82 = 0; - v115 = v82; - } - else - { - v115 = a4 == -1; - } - if ( v115 != v103 ) - { - if ( v125 && a2 == 0xFFFF ) - { - v70 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v70 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v70; - v71 = 0; - if ( lpuexcptb != 0xFFFF ) - v71 = v125; - v125 = v71; - } - else - { - lpuexcptb = a2; - } - v8 = *(_BYTE *)(v118 + 16); - v95 = *(_WORD *)(v118 + 112) == lpuexcptb; - if ( *(_WORD *)(v118 + 112) == lpuexcptb || *(_WORD *)(v118 + 114) == lpuexcptb ) - { - if ( (!v8 || *(_WORD *)(v118 + 38) != lpuexcptb) && *(_WORD *)(v118 + 36) != lpuexcptb ) - { - v9 = v125[2]; - v10 = v125[3]; - if ( v9 >= v10 ) - { - (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); - v11 = (__int16 *)v125[2]; - v10 = v125[3]; - } - else - { - v11 = (__int16 *)(v9 + 2); - v125[2] = v11; - } - if ( (unsigned int)v11 >= v10 ) - v12 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - v12 = *v11; - v13 = v12 == -1; - v14 = 0; - if ( !v13 ) - v14 = v125; - v106 = v13; - v125 = v14; - if ( v111 && v99 != 0 ) - { - v85 = (__int16 *)v99[2]; - if ( (unsigned int)v85 >= v99[3] ) - v86 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); - else - v86 = *v85; - v87 = v86 == -1; - v88 = 0; - if ( !v87 ) - v88 = v99; - v89 = v111 && v99 != 0; - v99 = v88; - if ( !v87 ) - v89 = 0; - v116 = v89; - } - else - { - v116 = a4 == -1; - } - if ( v106 == v116 ) - { - v102 = 1; - v100 = 0; - v117 = 0; - goto LABEL_49; - } - if ( v125 ) - { - v83 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v83 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v83; - v84 = 0; - if ( lpuexcptb != 0xFFFF ) - v84 = v125; - v8 = *(_BYTE *)(v118 + 16); - v125 = v84; - } - else - { - lpuexcptb = -1; - v8 = *(_BYTE *)(v118 + 16); - } - } - } - else - { - v95 = 0; - } - v117 = 0; - v100 = 0; - while ( 1 ) - { - if ( v8 && *(_WORD *)(v118 + 38) == lpuexcptb || *(_WORD *)(v118 + 36) == lpuexcptb ) - { -LABEL_179: - v102 = 0; - goto LABEL_49; - } - if ( *(_WORD *)(v118 + 120) != lpuexcptb ) - break; - v34 = v113 == 10 || !v117; - if ( !v34 ) - goto LABEL_36; - v117 = v97 == 0 || v113 == 8; - if ( !v117 ) - { - ++v100; - v117 = v34; - goto LABEL_40; - } - v100 = 0; - v15 = v125; - v113 = 8; - v16 = v125[2]; - v17 = v125[3]; - if ( v16 < v17 ) - { -LABEL_41: - v18 = (__int16 *)(v16 + 2); - v15[2] = v18; - if ( v17 > (unsigned int)v18 ) - goto LABEL_42; - goto LABEL_85; - } -LABEL_84: - (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); - v18 = (__int16 *)v125[2]; - if ( v125[3] > (unsigned int)v18 ) - { -LABEL_42: - v19 = *v18; - goto LABEL_43; - } -LABEL_85: - v19 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); -LABEL_43: - v20 = v19 == -1; - v21 = 0; - if ( !v20 ) - v21 = v125; - v104 = v20; - v125 = v21; - if ( v111 && v99 != 0 ) - { - v51 = (__int16 *)v99[2]; - if ( (unsigned int)v51 >= v99[3] ) - v52 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); - else - v52 = *v51; - v53 = v52 == -1; - v54 = 0; - if ( !v53 ) - v54 = v99; - v55 = v111 && v99 != 0; - v99 = v54; - if ( !v53 ) - v55 = 0; - v107 = v55; - } - else - { - v107 = a4 == -1; - } - if ( v107 == v104 ) - { - v102 = 1; - goto LABEL_49; - } - lpuexcptb = -1; - if ( v125 ) - { - v35 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v35 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v35; - v36 = 0; - if ( lpuexcptb != 0xFFFF ) - v36 = v125; - v125 = v36; - } - if ( !v117 ) - { - v102 = 0; - goto LABEL_49; - } - v8 = *(_BYTE *)(v118 + 16); - } - if ( !v117 ) - goto LABEL_179; -LABEL_36: - if ( *(_WORD *)(v118 + 116) != lpuexcptb && *(_WORD *)(v118 + 118) != lpuexcptb ) - { - v102 = 0; - v117 = 1; - goto LABEL_49; - } - if ( v97 != 0 && v113 != 16 ) - { - v102 = 0; - v93 = v113; - v94 = v113; - v117 = 1; - goto LABEL_52; - } - v100 = 0; - v117 = 0; - v113 = 16; -LABEL_40: - v15 = v125; - v16 = v125[2]; - v17 = v125[3]; - if ( v16 < v17 ) - goto LABEL_41; - goto LABEL_84; - } - v117 = 0; - v95 = 0; - lpuexcptb = 0; - v102 = 1; - v100 = 0; -LABEL_49: - v22 = 22; - if ( v113 != 16 ) - v22 = v113; - v93 = v22; - v94 = v22; -LABEL_52: - v127 = 0; - Block = v128; - LOBYTE(v128[0]) = 0; - if ( *(_BYTE *)(v118 + 16) ) - std::string::reserve(&Block, 0x20u); - v98 = v113; - v23 = 0xFFFFFFFFFFFFFFFFLL / v113; - v96 = *(_BYTE *)(v118 + 164); - if ( !v96 ) - { - if ( !v102 ) - { - v105 = 0; - v114 = 0LL; - while ( v94 > 10 ) - { - if ( (unsigned __int16)(lpuexcptb - 48) <= 9u ) - goto LABEL_60; - v24 = lpuexcptb - 87; - if ( (unsigned __int16)(lpuexcptb - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcptb - 65) > 5u ) - goto LABEL_102; - v24 = lpuexcptb - 55; - } -LABEL_61: - if ( v23 >= v114 ) - { - v105 |= __PAIR64__(~(v24 >> 31), ~v24) < v98 * v114; - v25 = v125; - ++v100; - v26 = v125[2]; - v27 = v125[3]; - v114 = v98 * v114 + v24; - if ( v26 < v27 ) - { -LABEL_63: - v28 = (__int16 *)(v26 + 2); - v25[2] = v28; - goto LABEL_64; - } - } - else - { - v25 = v125; - v105 = 1; - v26 = v125[2]; - v27 = v125[3]; - if ( v26 < v27 ) - goto LABEL_63; - } - (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); - v28 = (__int16 *)v125[2]; - v27 = v125[3]; -LABEL_64: - if ( v27 <= (unsigned int)v28 ) - v29 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - v29 = *v28; - v30 = v29 == -1; - v31 = 0; - if ( !v30 ) - v31 = v125; - v108 = v30; - v125 = v31; - if ( v111 && v99 != 0 ) - { - v65 = (__int16 *)v99[2]; - if ( (unsigned int)v65 >= v99[3] ) - v66 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); - else - v66 = *v65; - v67 = v66 == -1; - v68 = 0; - if ( !v67 ) - v68 = v99; - v69 = v111 && v99 != 0; - v99 = v68; - if ( !v67 ) - v69 = 0; - lpuexcptc = v69; - } - else - { - lpuexcptc = a4 == -1; - } - if ( v108 == lpuexcptc ) - { - v96 = 1; - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - goto LABEL_72; - } - if ( v125 ) - { - v56 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v56 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v56; - v57 = 0; - if ( lpuexcptb != 0xFFFF ) - v57 = v125; - v125 = v57; - } - else - { - lpuexcptb = -1; - } - } - if ( lpuexcptb <= 0x2Fu || (unsigned __int16)(v94 + 48) <= lpuexcptb ) - goto LABEL_102; -LABEL_60: - v24 = lpuexcptb - 48; - goto LABEL_61; - } - v90 = v102; - v105 = 0; - v102 = 0; - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - v96 = v90; - v114 = 0LL; - goto LABEL_72; - } - if ( v102 ) - { - v114 = 0LL; - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - v96 = v102; - v105 = 0; - v102 = 0; -LABEL_72: - if ( lpuexcptd ) - goto LABEL_103; -LABEL_73: - if ( v117 || v100 ) - goto LABEL_111; - goto LABEL_75; - } - v105 = 0; - v114 = 0LL; - while ( 1 ) - { - if ( *(_BYTE *)(v118 + 16) && *(_WORD *)(v118 + 38) == lpuexcptb ) - { - v32 = (int *)Block; - lpuexcptd = (struct _Unwind_Exception *)v127; - if ( !v100 ) - { - v96 = 0; - v102 = *(_BYTE *)(v118 + 16); - goto LABEL_72; - } - v58 = 15; - v110 = v100; - if ( Block != v128 ) - v58 = v128[0]; - v101 = v127 + 1; - if ( v127 + 1 > v58 ) - { - std::string::_M_mutate((int)&Block, v127, 0, 0, 1u); - v32 = (int *)Block; - } - v59 = v101; - v100 = 0; - *((_BYTE *)lpuexcptd + (_DWORD)v32) = v110; - v127 = v59; - *((_BYTE *)Block + v59) = 0; -LABEL_126: - v42 = v125; - v43 = v125[2]; - v44 = v125[3]; - if ( v43 < v44 ) - goto LABEL_127; - goto LABEL_137; - } - if ( lpuexcptb == *(_WORD *)(v118 + 36) ) - break; - v37 = (_WORD *)(v118 + 120); - v38 = v93; - while ( *v37 != lpuexcptb ) - { - ++v37; - if ( !--v38 ) - goto LABEL_102; - } - v40 = (int)v37 - v118 - 120; - v41 = (v40 >> 1) - 6; - if ( v40 <= 30 ) - v41 = v40 >> 1; - if ( v23 < v114 ) - { - v105 = v96; - goto LABEL_126; - } - v105 |= __PAIR64__(~(v41 >> 31), ~v41) < v98 * v114; - v114 = v98 * v114 + v41; - ++v100; - v42 = v125; - v43 = v125[2]; - v44 = v125[3]; - if ( v43 < v44 ) - { -LABEL_127: - v45 = (__int16 *)(v43 + 2); - v42[2] = v45; - goto LABEL_128; - } -LABEL_137: - (*(void (__fastcall **)(_DWORD *))(*v125 + 40))(v125); - v45 = (__int16 *)v125[2]; - v44 = v125[3]; -LABEL_128: - if ( v44 <= (unsigned int)v45 ) - v46 = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - v46 = *v45; - v47 = v46 == -1; - v48 = 0; - if ( !v47 ) - v48 = v125; - v109 = v47; - v125 = v48; - if ( v111 && v99 != 0 ) - { - v60 = (__int16 *)v99[2]; - if ( (unsigned int)v60 >= v99[3] ) - v61 = (*(int (__fastcall **)(_DWORD *))(*v99 + 36))(v99); - else - v61 = *v60; - v62 = v61 == -1; - v63 = 0; - if ( !v62 ) - v63 = v99; - v64 = v111 && v99 != 0; - v99 = v63; - if ( !v62 ) - v64 = 0; - lpuexcpte = v64; - } - else - { - lpuexcpte = a4 == -1; - } - if ( v109 == lpuexcpte ) - { - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - goto LABEL_72; - } - if ( v125 ) - { - v49 = (unsigned __int16 *)v125[2]; - if ( (unsigned int)v49 >= v125[3] ) - lpuexcptb = (*(int (__fastcall **)(_DWORD *))(*v125 + 36))(v125); - else - lpuexcptb = *v49; - v50 = 0; - if ( lpuexcptb != 0xFFFF ) - v50 = v125; - v125 = v50; - } - else - { - lpuexcptb = -1; - } - } -LABEL_102: - v96 = 0; - lpuexcptd = (struct _Unwind_Exception *)v127; - v32 = (int *)Block; - if ( !v127 ) - goto LABEL_73; -LABEL_103: - v39 = 15; - if ( v32 != v128 ) - v39 = v128[0]; - if ( (unsigned int)lpuexcptd + 1 > v39 ) - { - std::string::_M_mutate((int)&Block, (size_t)lpuexcptd, 0, 0, 1u); - v32 = (int *)Block; - } - *((_BYTE *)lpuexcptd + (_DWORD)v32) = v100; - v127 = (size_t)lpuexcptd + 1; - *((_BYTE *)lpuexcptd + (_DWORD)Block + 1) = 0; - if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v118 + 8), *(_DWORD *)(v118 + 12), (int)&Block) ) - *a6 = 4; - v32 = (int *)Block; - if ( !v117 && !(v127 | v100) ) - { -LABEL_75: - *a7 = 0; - a7[1] = 0; - *a6 = 4; - goto LABEL_76; - } -LABEL_111: - if ( v102 ) - goto LABEL_75; - if ( v105 ) - { - *a7 = -1; - a7[1] = -1; - *a6 = 4; - } - else - { - if ( v95 ) - v114 = -(__int64)v114; - *(_QWORD *)a7 = v114; - } -LABEL_76: - if ( v96 ) - *a6 |= 2u; - if ( v32 != v128 ) - operator delete(v32); - return v125; -} -// 47E0CF: variable 'v91' is possibly undefined -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (0047E530) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // al - unsigned int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - _DWORD *v12; // ecx - unsigned int v13; // eax - __int16 *v14; // eax - __int16 v15; // ax - char v16; // al - const char *v17; // eax - int v18; // edx - _DWORD *v19; // edx - int v20; // edx - _DWORD *v22; // ecx - unsigned int v23; // eax - __int16 *v24; // eax - __int16 v25; // ax - char v26; // al - bool v27; // al - char *v28; // eax - int v29; // edx - _WORD *v30; // eax - __int16 v31; // dx - _WORD *v32; // eax - _WORD *v33; // eax - __int16 v34; // dx - int v35; // eax - bool v36; // cc - int v37; // edx - int v38; // eax - _DWORD *v39; // ecx - unsigned int v40; // eax - __int16 *v41; // eax - __int16 v42; // ax - char v43; // al - _WORD *v44; // eax - char v45; // bl - const char *v46; // eax - _WORD *v47; // eax - __int16 v48; // dx - _WORD *v49; // eax - int v50; // edx - _WORD *v51; // eax - char v52; // bl - unsigned int v53; // [esp+4h] [ebp-94h] - bool v54; // [esp+1Bh] [ebp-7Dh] - int v55; // [esp+1Ch] [ebp-7Ch] - int v56; // [esp+20h] [ebp-78h] - unsigned int v57; // [esp+24h] [ebp-74h] - char v58; // [esp+28h] [ebp-70h] - char v59; // [esp+2Ah] [ebp-6Eh] - char v60; // [esp+2Bh] [ebp-6Dh] - char v61; // [esp+2Bh] [ebp-6Dh] - int v62; // [esp+2Ch] [ebp-6Ch] - char v63; // [esp+2Ch] [ebp-6Ch] - char v64; // [esp+2Ch] [ebp-6Ch] - int v65; // [esp+30h] [ebp-68h] - unsigned int v66; // [esp+34h] [ebp-64h] - char v67; // [esp+34h] [ebp-64h] - bool v68; // [esp+38h] [ebp-60h] - unsigned int v69; // [esp+3Ch] [ebp-5Ch] - unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - std::string *lpuexcptd; // [esp+40h] [ebp-58h] - struct _Unwind_Exception *v75; // [esp+48h] [ebp-50h] - int v76; // [esp+8Bh] [ebp-Dh] BYREF - const char *v77[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v75 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v62 = v6; - if ( v6 == 64 ) - { - v69 = 8; -LABEL_4: - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v65 = 0; - v68 = 0; - v55 = v69; - v56 = v69; - lpuexcpt = 0; - v54 = 0; - goto LABEL_18; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v69 = 10; - goto LABEL_4; - } - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v55 = 22; - lpuexcpt = 0; - v65 = 0; - v68 = 0; - v54 = 0; - v69 = 16; - v56 = 22; - goto LABEL_18; - } - v69 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v51 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v51; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v75 + 16); - v54 = *((_WORD *)v75 + 56) == lpuexcpt; - if ( *((_WORD *)v75 + 56) != lpuexcpt && *((_WORD *)v75 + 57) != lpuexcpt - || v7 && *((_WORD *)v75 + 19) == lpuexcpt - || *((_WORD *)v75 + 18) == lpuexcpt ) - { - goto LABEL_49; - } - v8 = *(_DWORD *)(a1 + 8); - if ( v8 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v8 + 2; - WORD2(a1) = -1; - v65 = 0; - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v68 = 0; - if ( !v60 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v75 + 16); -LABEL_49: - v65 = 0; - v68 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) - { -LABEL_116: - v60 = 0; - goto LABEL_15; - } - if ( *((_WORD *)v75 + 60) != lpuexcpt ) - break; - v27 = v69 == 10 || !v68; - if ( !v27 ) - goto LABEL_55; - v68 = v62 == 0 || v69 == 8; - if ( !v68 ) - { - ++v65; - v68 = v27; - goto LABEL_59; - } - v22 = (_DWORD *)a1; - v65 = 0; - v69 = 8; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - { -LABEL_60: - v22[2] = v23 + 2; - WORD2(a1) = -1; - goto LABEL_61; - } -LABEL_71: - (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - v22 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v67 = 1; - goto LABEL_65; - } -LABEL_61: - v24 = (__int16 *)v22[2]; - if ( (unsigned int)v24 >= v22[3] ) - v25 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - else - v25 = *v24; - v67 = 0; - if ( v25 == -1 ) - { - LODWORD(a1) = 0; - v67 = 1; - } -LABEL_65: - v26 = a3 == -1; - v61 = v26 & (a2 != 0); - if ( v61 ) - { - v30 = (_WORD *)a2[2]; - v31 = (unsigned int)v30 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v30; - v26 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v26 = v61; - } - } - if ( v26 == v67 ) - { - v60 = 1; - goto LABEL_15; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v49 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v68 ) - goto LABEL_116; - v7 = *((_BYTE *)v75 + 16); - } - if ( !v68 ) - goto LABEL_116; -LABEL_55: - if ( *((_WORD *)v75 + 58) != lpuexcpt && *((_WORD *)v75 + 59) != lpuexcpt ) - { - v60 = 0; - v68 = 1; - goto LABEL_15; - } - if ( v62 != 0 && v69 != 16 ) - { - v60 = 0; - v68 = 1; - v55 = v69; - v56 = v69; - goto LABEL_18; - } - v65 = 0; - v68 = 0; - v69 = 16; -LABEL_59: - v22 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - goto LABEL_60; - goto LABEL_71; - } -LABEL_15: - v9 = 22; - if ( v69 != 16 ) - v9 = v69; - v55 = v9; - v56 = v9; -LABEL_18: - v77[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v75 + 16) ) - std::string::reserve((int *)v77, (std::string *)0x20, v53); - v57 = 0xFFFFFFFF / v69; - v63 = *((_BYTE *)v75 + 164); - if ( v63 ) - { - if ( v60 ) - { - v17 = v77[0]; - v66 = 0; - v59 = 0; - v63 = v60; - v18 = *((_DWORD *)v77[0] - 3); - v60 = 0; -LABEL_37: - if ( v18 ) - goto LABEL_86; - goto LABEL_38; - } - v59 = 0; - v66 = 0; - while ( !*((_BYTE *)v75 + 16) || *((_WORD *)v75 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v75 + 18) ) - goto LABEL_85; - v28 = (char *)v75 + 120; - v29 = v55; - while ( lpuexcpt != *(_WORD *)v28 ) - { - v28 += 2; - if ( !--v29 ) - goto LABEL_85; - } - v35 = v28 - ((char *)v75 + 120); - v36 = v35 <= 30; - v37 = (v35 >> 1) - 6; - v38 = v35 >> 1; - if ( !v36 ) - v38 = v37; - if ( v57 < v66 ) - { - v59 = v63; - goto LABEL_123; - } - v59 |= ~v38 < v69 * v66; - v39 = (_DWORD *)a1; - v66 = v69 * v66 + v38; - ++v65; - v40 = *(_DWORD *)(a1 + 8); - if ( v40 < *(_DWORD *)(a1 + 12) ) - { -LABEL_124: - v39[2] = v40 + 2; - WORD2(a1) = -1; - goto LABEL_125; - } -LABEL_133: - (*(void (__fastcall **)(_DWORD *))(*v39 + 40))(v39); - v39 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v63; - goto LABEL_129; - } -LABEL_125: - v41 = (__int16 *)v39[2]; - if ( (unsigned int)v41 >= v39[3] ) - v42 = (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39); - else - v42 = *v41; - lpuexcptc = 0; - if ( v42 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v63; - } -LABEL_129: - v43 = a3 == -1; - v58 = v43 & (a2 != 0); - if ( v58 ) - { - v47 = (_WORD *)a2[2]; - v48 = (unsigned int)v47 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v47; - v43 = 0; - if ( v48 == -1 ) - { - a2 = 0; - v43 = v58; - } - } - if ( lpuexcptc == v43 ) - { - v17 = v77[0]; - v18 = *((_DWORD *)v77[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v44 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v44 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v44; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v17 = v77[0]; - v18 = *((_DWORD *)v77[0] - 3); - if ( !v65 ) - { - v63 = 0; - v60 = *((_BYTE *)v75 + 16); - goto LABEL_37; - } - lpuexcptd = (std::string *)(v18 + 1); - if ( (unsigned int)(v18 + 1) > *((_DWORD *)v77[0] - 2) || *((int *)v77[0] - 1) > 0 ) - std::string::reserve((int *)v77, lpuexcptd, v53); - v45 = v65; - v65 = 0; - v77[0][*((_DWORD *)v77[0] - 3)] = v45; - v46 = v77[0]; - *((_DWORD *)v77[0] - 1) = 0; - *((_DWORD *)v46 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v46) = 0; -LABEL_123: - v39 = (_DWORD *)a1; - v40 = *(_DWORD *)(a1 + 8); - if ( v40 < *(_DWORD *)(a1 + 12) ) - goto LABEL_124; - goto LABEL_133; - } - if ( v60 ) - { - v52 = v60; - v17 = v77[0]; - v59 = 0; - v60 = 0; - v63 = v52; - v18 = *((_DWORD *)v77[0] - 3); - v66 = 0; - goto LABEL_37; - } - v59 = 0; - v66 = 0; -LABEL_23: - v10 = lpuexcpt; - if ( v56 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_26: - v11 = lpuexcpt - 48; -LABEL_27: - if ( v57 >= v66 ) - goto LABEL_97; -LABEL_28: - v12 = (_DWORD *)a1; - v59 = 1; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_98; -LABEL_29: - v12[2] = v13 + 2; - WORD2(a1) = -1; -LABEL_30: - v14 = (__int16 *)v12[2]; - if ( (unsigned int)v14 >= v12[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v15 = *v14; - lpuexcpta = 0; - if ( v15 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - goto LABEL_34; - } - while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) - { - v11 = v10 - 87; - if ( v57 < v66 ) - goto LABEL_28; -LABEL_97: - v59 |= ~v11 < v69 * v66; - v12 = (_DWORD *)a1; - v66 = v69 * v66 + v11; - ++v65; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - goto LABEL_29; -LABEL_98: - (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_30; - lpuexcpta = 1; -LABEL_34: - v16 = a3 == -1; - v64 = v16 & (a2 != 0); - if ( v64 ) - { - v33 = (_WORD *)a2[2]; - v34 = (unsigned int)v33 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v33; - v16 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v16 = v64; - } - } - if ( lpuexcpta == v16 ) - { - v17 = v77[0]; - v63 = 1; - v18 = *((_DWORD *)v77[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) - goto LABEL_23; - v32 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v32 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v32; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_23; - LODWORD(a1) = 0; - v10 = 0xFFFF; - if ( v56 <= 10 ) - goto LABEL_85; - } - if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) - { - v11 = v10 - 55; - goto LABEL_27; - } - } - else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v56 + 48) > lpuexcpt ) - { - goto LABEL_26; - } -LABEL_85: - v17 = v77[0]; - v63 = 0; - if ( *((_DWORD *)v77[0] - 3) ) - { -LABEL_86: - std::string::push_back((int *)v77, (std::string *)(char)v65, v53); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v75 + 2), *((_DWORD *)v75 + 3), v77) ) - *a5 = 4; - v17 = v77[0]; - if ( !v65 && !v68 && !*((_DWORD *)v77[0] - 3) ) - goto LABEL_40; - goto LABEL_91; - } -LABEL_38: - if ( !v65 && !v68 ) - goto LABEL_40; -LABEL_91: - if ( v60 ) - { -LABEL_40: - v19 = a5; - *a6 = 0; - *v19 = 4; - goto LABEL_41; - } - if ( v59 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v50 = -v66; - if ( !v54 ) - v50 = v66; - *a6 = v50; - } -LABEL_41: - if ( v63 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_156: - std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v76); - return lpuexcptb; - } - v20 = *((_DWORD *)v17 - 1); - *((_DWORD *)v17 - 1) = v20 - 1; - if ( v20 <= 0 ) - goto LABEL_156; - return lpuexcptb; -} -// 47EED7: variable 'v53' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0047F170) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // al - int v8; // eax - int v9; // eax - int v10; // eax - _DWORD *v11; // ecx - unsigned int v12; // eax - __int16 *v13; // eax - __int16 v14; // ax - char v15; // al - const char *v16; // eax - int v17; // edx - _DWORD *v18; // ecx - int v19; // edx - _DWORD *v21; // ecx - unsigned int v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - char v25; // al - bool v26; // al - char *v27; // eax - int v28; // edx - _WORD *v29; // eax - __int16 v30; // dx - _WORD *v31; // eax - _WORD *v32; // eax - __int16 v33; // dx - int v34; // eax - bool v35; // cc - int v36; // edx - int v37; // eax - _DWORD *v38; // ecx - unsigned int v39; // eax - __int16 *v40; // eax - __int16 v41; // ax - char v42; // al - _WORD *v43; // eax - char v44; // bl - const char *v45; // eax - _WORD *v46; // eax - __int16 v47; // dx - _WORD *v48; // eax - int v49; // edx - _WORD *v50; // eax - char v51; // bl - unsigned int v52; // [esp+4h] [ebp-94h] - bool v53; // [esp+14h] [ebp-84h] - int v54; // [esp+18h] [ebp-80h] - unsigned int v55; // [esp+1Ch] [ebp-7Ch] - int v56; // [esp+20h] [ebp-78h] - unsigned int v57; // [esp+24h] [ebp-74h] - char v58; // [esp+28h] [ebp-70h] - char v59; // [esp+2Ah] [ebp-6Eh] - char v60; // [esp+2Bh] [ebp-6Dh] - char v61; // [esp+2Bh] [ebp-6Dh] - int v62; // [esp+2Ch] [ebp-6Ch] - char v63; // [esp+2Ch] [ebp-6Ch] - char v64; // [esp+2Ch] [ebp-6Ch] - int v65; // [esp+30h] [ebp-68h] - unsigned int v66; // [esp+34h] [ebp-64h] - char v67; // [esp+34h] [ebp-64h] - bool v68; // [esp+38h] [ebp-60h] - unsigned int v69; // [esp+3Ch] [ebp-5Ch] - unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - std::string *lpuexcptd; // [esp+40h] [ebp-58h] - struct _Unwind_Exception *v75; // [esp+48h] [ebp-50h] - int v76; // [esp+8Bh] [ebp-Dh] BYREF - const char *v77[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v75 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v62 = v6; - if ( v6 == 64 ) - { - v69 = 8; -LABEL_4: - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v65 = 0; - v68 = 0; - v54 = v69; - v56 = v69; - lpuexcpt = 0; - v53 = 0; - goto LABEL_16; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v69 = 10; - goto LABEL_4; - } - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v54 = 22; - lpuexcpt = 0; - v65 = 0; - v68 = 0; - v53 = 0; - v69 = 16; - v56 = 22; - goto LABEL_16; - } - v69 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v50 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v50; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v75 + 16); - v53 = *((_WORD *)v75 + 56) == lpuexcpt; - if ( *((_WORD *)v75 + 56) != lpuexcpt && *((_WORD *)v75 + 57) != lpuexcpt - || v7 && *((_WORD *)v75 + 19) == lpuexcpt - || *((_WORD *)v75 + 18) == lpuexcpt ) - { - goto LABEL_47; - } - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v65 = 0; - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v68 = 0; - if ( !v60 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v75 + 16); -LABEL_47: - v65 = 0; - v68 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) - { -LABEL_114: - v60 = 0; - goto LABEL_13; - } - if ( *((_WORD *)v75 + 60) != lpuexcpt ) - break; - v26 = v69 == 10 || !v68; - if ( !v26 ) - goto LABEL_53; - v68 = v62 == 0 || v69 == 8; - if ( !v68 ) - { - ++v65; - v68 = v26; - goto LABEL_57; - } - v21 = (_DWORD *)a1; - v65 = 0; - v69 = 8; - v22 = *(_DWORD *)(a1 + 8); - if ( v22 < *(_DWORD *)(a1 + 12) ) - { -LABEL_58: - v21[2] = v22 + 2; - WORD2(a1) = -1; - goto LABEL_59; - } -LABEL_69: - (*(void (__fastcall **)(_DWORD *))(*v21 + 40))(v21); - v21 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v67 = 1; - goto LABEL_63; - } -LABEL_59: - v23 = (__int16 *)v21[2]; - if ( (unsigned int)v23 >= v21[3] ) - v24 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); - else - v24 = *v23; - v67 = 0; - if ( v24 == -1 ) - { - LODWORD(a1) = 0; - v67 = 1; - } -LABEL_63: - v25 = a3 == -1; - v61 = v25 & (a2 != 0); - if ( v61 ) - { - v29 = (_WORD *)a2[2]; - v30 = (unsigned int)v29 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v29; - v25 = 0; - if ( v30 == -1 ) - { - a2 = 0; - v25 = v61; - } - } - if ( v25 == v67 ) - { - v60 = 1; - goto LABEL_13; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v48 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v48; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v68 ) - goto LABEL_114; - v7 = *((_BYTE *)v75 + 16); - } - if ( !v68 ) - goto LABEL_114; -LABEL_53: - if ( *((_WORD *)v75 + 58) != lpuexcpt && *((_WORD *)v75 + 59) != lpuexcpt ) - { - v60 = 0; - v68 = 1; - goto LABEL_13; - } - if ( v69 != 16 && v62 != 0 ) - { - v60 = 0; - v68 = 1; - v54 = v69; - v56 = v69; - goto LABEL_16; - } - v65 = 0; - v68 = 0; - v69 = 16; -LABEL_57: - v21 = (_DWORD *)a1; - v22 = *(_DWORD *)(a1 + 8); - if ( v22 < *(_DWORD *)(a1 + 12) ) - goto LABEL_58; - goto LABEL_69; - } -LABEL_13: - v8 = 22; - if ( v69 != 16 ) - v8 = v69; - v54 = v8; - v56 = v8; -LABEL_16: - v77[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v75 + 16) ) - std::string::reserve((int *)v77, (std::string *)0x20, v52); - v55 = v53 + 0x7FFFFFFF; - v57 = v55 / v69; - v63 = *((_BYTE *)v75 + 164); - if ( v63 ) - { - if ( v60 ) - { - v16 = v77[0]; - v66 = 0; - v59 = 0; - v63 = v60; - v17 = *((_DWORD *)v77[0] - 3); - v60 = 0; -LABEL_35: - if ( v17 ) - goto LABEL_84; - goto LABEL_36; - } - v59 = 0; - v66 = 0; - while ( !*((_BYTE *)v75 + 16) || *((_WORD *)v75 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v75 + 18) ) - goto LABEL_83; - v27 = (char *)v75 + 120; - v28 = v54; - while ( *(_WORD *)v27 != lpuexcpt ) - { - v27 += 2; - if ( !--v28 ) - goto LABEL_83; - } - v34 = v27 - ((char *)v75 + 120); - v35 = v34 <= 30; - v36 = (v34 >> 1) - 6; - v37 = v34 >> 1; - if ( !v35 ) - v37 = v36; - if ( v57 < v66 ) - { - v59 = v63; - goto LABEL_121; - } - v59 |= v55 - v37 < v69 * v66; - v38 = (_DWORD *)a1; - v66 = v69 * v66 + v37; - ++v65; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - { -LABEL_122: - v38[2] = v39 + 2; - WORD2(a1) = -1; - goto LABEL_123; - } -LABEL_131: - (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); - v38 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v63; - goto LABEL_127; - } -LABEL_123: - v40 = (__int16 *)v38[2]; - if ( (unsigned int)v40 >= v38[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38); - else - v41 = *v40; - lpuexcptc = 0; - if ( v41 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v63; - } -LABEL_127: - v42 = a3 == -1; - v58 = v42 & (a2 != 0); - if ( v58 ) - { - v46 = (_WORD *)a2[2]; - v47 = (unsigned int)v46 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v46; - v42 = 0; - if ( v47 == -1 ) - { - a2 = 0; - v42 = v58; - } - } - if ( v42 == lpuexcptc ) - { - v16 = v77[0]; - v17 = *((_DWORD *)v77[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v43 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v43; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v16 = v77[0]; - v17 = *((_DWORD *)v77[0] - 3); - if ( !v65 ) - { - v63 = 0; - v60 = *((_BYTE *)v75 + 16); - goto LABEL_35; - } - lpuexcptd = (std::string *)(v17 + 1); - if ( (unsigned int)(v17 + 1) > *((_DWORD *)v77[0] - 2) || *((int *)v77[0] - 1) > 0 ) - std::string::reserve((int *)v77, lpuexcptd, v52); - v44 = v65; - v65 = 0; - v77[0][*((_DWORD *)v77[0] - 3)] = v44; - v45 = v77[0]; - *((_DWORD *)v77[0] - 1) = 0; - *((_DWORD *)v45 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v45) = 0; -LABEL_121: - v38 = (_DWORD *)a1; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - goto LABEL_122; - goto LABEL_131; - } - if ( v60 ) - { - v51 = v60; - v16 = v77[0]; - v59 = 0; - v60 = 0; - v63 = v51; - v17 = *((_DWORD *)v77[0] - 3); - v66 = 0; - goto LABEL_35; - } - v59 = 0; - v66 = 0; -LABEL_21: - v9 = lpuexcpt; - if ( v56 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_24: - v10 = lpuexcpt - 48; -LABEL_25: - if ( v57 >= v66 ) - goto LABEL_95; -LABEL_26: - v11 = (_DWORD *)a1; - v59 = 1; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_96; -LABEL_27: - v11[2] = v12 + 2; - WORD2(a1) = -1; -LABEL_28: - v13 = (__int16 *)v11[2]; - if ( (unsigned int)v13 >= v11[3] ) - v14 = (*(int (__fastcall **)(_DWORD *))(*v11 + 36))(v11); - else - v14 = *v13; - lpuexcpta = 0; - if ( v14 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - goto LABEL_32; - } - while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) - { - v10 = v9 - 87; - if ( v57 < v66 ) - goto LABEL_26; -LABEL_95: - v59 |= v55 - v10 < v69 * v66; - v11 = (_DWORD *)a1; - v66 = v69 * v66 + v10; - ++v65; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 < *(_DWORD *)(a1 + 12) ) - goto LABEL_27; -LABEL_96: - (*(void (__fastcall **)(_DWORD *))(*v11 + 40))(v11); - v11 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_28; - lpuexcpta = 1; -LABEL_32: - v15 = a3 == -1; - v64 = v15 & (a2 != 0); - if ( v64 ) - { - v32 = (_WORD *)a2[2]; - v33 = (unsigned int)v32 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v32; - v15 = 0; - if ( v33 == -1 ) - { - a2 = 0; - v15 = v64; - } - } - if ( v15 == lpuexcpta ) - { - v16 = v77[0]; - v63 = 1; - v17 = *((_DWORD *)v77[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_21; - v31 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v31 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v31; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_21; - LODWORD(a1) = 0; - v9 = 0xFFFF; - if ( v56 <= 10 ) - goto LABEL_83; - } - if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) - { - v10 = v9 - 55; - goto LABEL_25; - } - } - else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v56 + 48) > lpuexcpt ) - { - goto LABEL_24; - } -LABEL_83: - v16 = v77[0]; - v63 = 0; - if ( *((_DWORD *)v77[0] - 3) ) - { -LABEL_84: - std::string::push_back((int *)v77, (std::string *)(char)v65, v52); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v75 + 2), *((_DWORD *)v75 + 3), v77) ) - *a5 = 4; - v16 = v77[0]; - if ( !v65 && !v68 && !*((_DWORD *)v77[0] - 3) ) - goto LABEL_38; - goto LABEL_89; - } -LABEL_36: - if ( !v65 && !v68 ) - goto LABEL_38; -LABEL_89: - if ( v60 ) - { -LABEL_38: - v18 = a5; - *a6 = 0; - *v18 = 4; - goto LABEL_39; - } - if ( v59 ) - { - *a6 = v53 + 0x7FFFFFFF; - *a5 = 4; - } - else - { - v49 = -v66; - if ( !v53 ) - v49 = v66; - *a6 = v49; - } -LABEL_39: - if ( v63 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_154: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v76); - return lpuexcptb; - } - v19 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v19 - 1; - if ( v19 <= 0 ) - goto LABEL_154; - return lpuexcptb; -} -// 47FB27: variable 'v52' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0047FDB0) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - int v6; // eax - char v7; // al - int v8; // eax - int v9; // eax - int v10; // eax - _DWORD *v11; // ecx - unsigned int v12; // eax - __int16 *v13; // eax - __int16 v14; // ax - char v15; // al - const char *v16; // eax - int v17; // edx - _DWORD *v18; // ecx - int v19; // edx - _DWORD *v21; // ecx - unsigned int v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - char v25; // al - bool v26; // al - char *v27; // eax - int v28; // edx - _WORD *v29; // eax - __int16 v30; // dx - _WORD *v31; // eax - _WORD *v32; // eax - __int16 v33; // dx - int v34; // eax - bool v35; // cc - int v36; // edx - int v37; // eax - _DWORD *v38; // ecx - unsigned int v39; // eax - __int16 *v40; // eax - __int16 v41; // ax - char v42; // al - _WORD *v43; // eax - char v44; // bl - const char *v45; // eax - _WORD *v46; // eax - __int16 v47; // dx - _WORD *v48; // eax - int v49; // edx - _WORD *v50; // eax - char v51; // bl - unsigned int v52; // [esp+4h] [ebp-94h] - bool v53; // [esp+1Bh] [ebp-7Dh] - int v54; // [esp+1Ch] [ebp-7Ch] - int v55; // [esp+20h] [ebp-78h] - unsigned int v56; // [esp+24h] [ebp-74h] - char v57; // [esp+28h] [ebp-70h] - char v58; // [esp+2Ah] [ebp-6Eh] - char v59; // [esp+2Bh] [ebp-6Dh] - char v60; // [esp+2Bh] [ebp-6Dh] - int v61; // [esp+2Ch] [ebp-6Ch] - char v62; // [esp+2Ch] [ebp-6Ch] - char v63; // [esp+2Ch] [ebp-6Ch] - int v64; // [esp+30h] [ebp-68h] - unsigned int v65; // [esp+34h] [ebp-64h] - char v66; // [esp+34h] [ebp-64h] - bool v67; // [esp+38h] [ebp-60h] - unsigned int v68; // [esp+3Ch] [ebp-5Ch] - unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - std::string *lpuexcptd; // [esp+40h] [ebp-58h] - struct _Unwind_Exception *v74; // [esp+48h] [ebp-50h] - int v75; // [esp+8Bh] [ebp-Dh] BYREF - const char *v76[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v74 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v61 = v6; - if ( v6 == 64 ) - { - v68 = 8; -LABEL_4: - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - v64 = 0; - v67 = 0; - v54 = v68; - v55 = v68; - lpuexcpt = 0; - v53 = 0; - goto LABEL_16; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v68 = 10; - goto LABEL_4; - } - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v59 ) - { - v54 = 22; - lpuexcpt = 0; - v64 = 0; - v67 = 0; - v53 = 0; - v68 = 16; - v55 = 22; - goto LABEL_16; - } - v68 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v50 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v50; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v74 + 16); - v53 = *((_WORD *)v74 + 56) == lpuexcpt; - if ( *((_WORD *)v74 + 56) != lpuexcpt && *((_WORD *)v74 + 57) != lpuexcpt - || v7 && *((_WORD *)v74 + 19) == lpuexcpt - || *((_WORD *)v74 + 18) == lpuexcpt ) - { - goto LABEL_47; - } - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v64 = 0; - v59 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v67 = 0; - if ( !v59 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v74 + 16); -LABEL_47: - v64 = 0; - v67 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v74 + 19) == lpuexcpt || *((_WORD *)v74 + 18) == lpuexcpt ) - { -LABEL_114: - v59 = 0; - goto LABEL_13; - } - if ( *((_WORD *)v74 + 60) != lpuexcpt ) - break; - v26 = v68 == 10 || !v67; - if ( !v26 ) - goto LABEL_53; - v67 = v61 == 0 || v68 == 8; - if ( !v67 ) - { - ++v64; - v67 = v26; - goto LABEL_57; - } - v21 = (_DWORD *)a1; - v64 = 0; - v68 = 8; - v22 = *(_DWORD *)(a1 + 8); - if ( v22 < *(_DWORD *)(a1 + 12) ) - { -LABEL_58: - v21[2] = v22 + 2; - WORD2(a1) = -1; - goto LABEL_59; - } -LABEL_69: - (*(void (__fastcall **)(_DWORD *))(*v21 + 40))(v21); - v21 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v66 = 1; - goto LABEL_63; - } -LABEL_59: - v23 = (__int16 *)v21[2]; - if ( (unsigned int)v23 >= v21[3] ) - v24 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); - else - v24 = *v23; - v66 = 0; - if ( v24 == -1 ) - { - LODWORD(a1) = 0; - v66 = 1; - } -LABEL_63: - v25 = a3 == -1; - v60 = v25 & (a2 != 0); - if ( v60 ) - { - v29 = (_WORD *)a2[2]; - v30 = (unsigned int)v29 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v29; - v25 = 0; - if ( v30 == -1 ) - { - a2 = 0; - v25 = v60; - } - } - if ( v66 == v25 ) - { - v59 = 1; - goto LABEL_13; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v48 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v48; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v67 ) - goto LABEL_114; - v7 = *((_BYTE *)v74 + 16); - } - if ( !v67 ) - goto LABEL_114; -LABEL_53: - if ( *((_WORD *)v74 + 58) != lpuexcpt && *((_WORD *)v74 + 59) != lpuexcpt ) - { - v59 = 0; - v67 = 1; - goto LABEL_13; - } - if ( v68 != 16 && v61 != 0 ) - { - v59 = 0; - v67 = 1; - v54 = v68; - v55 = v68; - goto LABEL_16; - } - v64 = 0; - v67 = 0; - v68 = 16; -LABEL_57: - v21 = (_DWORD *)a1; - v22 = *(_DWORD *)(a1 + 8); - if ( v22 < *(_DWORD *)(a1 + 12) ) - goto LABEL_58; - goto LABEL_69; - } -LABEL_13: - v8 = 22; - if ( v68 != 16 ) - v8 = v68; - v54 = v8; - v55 = v8; -LABEL_16: - v76[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v74 + 16) ) - std::string::reserve((int *)v76, (std::string *)0x20, v52); - v56 = 0xFFFFFFFF / v68; - v62 = *((_BYTE *)v74 + 164); - if ( v62 ) - { - if ( v59 ) - { - v16 = v76[0]; - v65 = 0; - v58 = 0; - v62 = v59; - v17 = *((_DWORD *)v76[0] - 3); - v59 = 0; -LABEL_35: - if ( v17 ) - goto LABEL_84; - goto LABEL_36; - } - v58 = 0; - v65 = 0; - while ( !*((_BYTE *)v74 + 16) || *((_WORD *)v74 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v74 + 18) ) - goto LABEL_83; - v27 = (char *)v74 + 120; - v28 = v54; - while ( *(_WORD *)v27 != lpuexcpt ) - { - v27 += 2; - if ( !--v28 ) - goto LABEL_83; - } - v34 = v27 - ((char *)v74 + 120); - v35 = v34 <= 30; - v36 = (v34 >> 1) - 6; - v37 = v34 >> 1; - if ( !v35 ) - v37 = v36; - if ( v56 < v65 ) - { - v58 = v62; - goto LABEL_121; - } - v58 |= ~v37 < v68 * v65; - v38 = (_DWORD *)a1; - v65 = v68 * v65 + v37; - ++v64; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - { -LABEL_122: - v38[2] = v39 + 2; - WORD2(a1) = -1; - goto LABEL_123; - } -LABEL_131: - (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); - v38 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v62; - goto LABEL_127; - } -LABEL_123: - v40 = (__int16 *)v38[2]; - if ( (unsigned int)v40 >= v38[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38); - else - v41 = *v40; - lpuexcptc = 0; - if ( v41 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v62; - } -LABEL_127: - v42 = a3 == -1; - v57 = v42 & (a2 != 0); - if ( v57 ) - { - v46 = (_WORD *)a2[2]; - v47 = (unsigned int)v46 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v46; - v42 = 0; - if ( v47 == -1 ) - { - a2 = 0; - v42 = v57; - } - } - if ( v42 == lpuexcptc ) - { - v16 = v76[0]; - v17 = *((_DWORD *)v76[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v43 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v43; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v16 = v76[0]; - v17 = *((_DWORD *)v76[0] - 3); - if ( !v64 ) - { - v62 = 0; - v59 = *((_BYTE *)v74 + 16); - goto LABEL_35; - } - lpuexcptd = (std::string *)(v17 + 1); - if ( (unsigned int)(v17 + 1) > *((_DWORD *)v76[0] - 2) || *((int *)v76[0] - 1) > 0 ) - std::string::reserve((int *)v76, lpuexcptd, v52); - v44 = v64; - v64 = 0; - v76[0][*((_DWORD *)v76[0] - 3)] = v44; - v45 = v76[0]; - *((_DWORD *)v76[0] - 1) = 0; - *((_DWORD *)v45 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v45) = 0; -LABEL_121: - v38 = (_DWORD *)a1; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - goto LABEL_122; - goto LABEL_131; - } - if ( v59 ) - { - v51 = v59; - v16 = v76[0]; - v58 = 0; - v59 = 0; - v62 = v51; - v17 = *((_DWORD *)v76[0] - 3); - v65 = 0; - goto LABEL_35; - } - v58 = 0; - v65 = 0; -LABEL_21: - v9 = lpuexcpt; - if ( v55 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_24: - v10 = lpuexcpt - 48; -LABEL_25: - if ( v56 >= v65 ) - goto LABEL_95; -LABEL_26: - v11 = (_DWORD *)a1; - v58 = 1; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_96; -LABEL_27: - v11[2] = v12 + 2; - WORD2(a1) = -1; -LABEL_28: - v13 = (__int16 *)v11[2]; - if ( (unsigned int)v13 >= v11[3] ) - v14 = (*(int (__fastcall **)(_DWORD *))(*v11 + 36))(v11); - else - v14 = *v13; - lpuexcpta = 0; - if ( v14 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - goto LABEL_32; - } - while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) - { - v10 = v9 - 87; - if ( v56 < v65 ) - goto LABEL_26; -LABEL_95: - v58 |= ~v10 < v68 * v65; - v11 = (_DWORD *)a1; - v65 = v68 * v65 + v10; - ++v64; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 < *(_DWORD *)(a1 + 12) ) - goto LABEL_27; -LABEL_96: - (*(void (__fastcall **)(_DWORD *))(*v11 + 40))(v11); - v11 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_28; - lpuexcpta = 1; -LABEL_32: - v15 = a3 == -1; - v63 = v15 & (a2 != 0); - if ( v63 ) - { - v32 = (_WORD *)a2[2]; - v33 = (unsigned int)v32 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v32; - v15 = 0; - if ( v33 == -1 ) - { - a2 = 0; - v15 = v63; - } - } - if ( v15 == lpuexcpta ) - { - v16 = v76[0]; - v62 = 1; - v17 = *((_DWORD *)v76[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_21; - v31 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v31 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v31; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_21; - LODWORD(a1) = 0; - v9 = 0xFFFF; - if ( v55 <= 10 ) - goto LABEL_83; - } - if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) - { - v10 = v9 - 55; - goto LABEL_25; - } - } - else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v55 + 48) > lpuexcpt ) - { - goto LABEL_24; - } -LABEL_83: - v16 = v76[0]; - v62 = 0; - if ( *((_DWORD *)v76[0] - 3) ) - { -LABEL_84: - std::string::push_back((int *)v76, (std::string *)(char)v64, v52); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v74 + 2), *((_DWORD *)v74 + 3), v76) ) - *a5 = 4; - v16 = v76[0]; - if ( !v64 && !v67 && !*((_DWORD *)v76[0] - 3) ) - goto LABEL_38; - goto LABEL_89; - } -LABEL_36: - if ( !v64 && !v67 ) - goto LABEL_38; -LABEL_89: - if ( v59 ) - { -LABEL_38: - v18 = a5; - *a6 = 0; - *v18 = 4; - goto LABEL_39; - } - if ( v58 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v49 = -v65; - if ( !v53 ) - v49 = v65; - *a6 = v49; - } -LABEL_39: - if ( v62 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_154: - std::string::_Rep::_M_destroy((void *)(v16 - 12), (int)&v75); - return lpuexcptb; - } - v19 = *((_DWORD *)v16 - 1); - *((_DWORD *)v16 - 1) = v19 - 1; - if ( v19 <= 0 ) - goto LABEL_154; - return lpuexcptb; -} -// 480747: variable 'v52' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004809C0) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - _WORD *a6) -{ - int v6; // eax - char v7; // al - unsigned int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - _DWORD *v12; // ecx - unsigned int v13; // eax - __int16 *v14; // eax - __int16 v15; // ax - char v16; // al - const char *v17; // eax - int v18; // edx - _DWORD *v19; // edx - int v20; // edx - _DWORD *v22; // ecx - unsigned int v23; // eax - __int16 *v24; // eax - __int16 v25; // ax - char v26; // al - bool v27; // al - char *v28; // eax - int v29; // edx - _WORD *v30; // eax - __int16 v31; // dx - _WORD *v32; // eax - _WORD *v33; // eax - __int16 v34; // dx - int v35; // eax - bool v36; // cc - int v37; // edx - int v38; // eax - _DWORD *v39; // ecx - unsigned int v40; // eax - __int16 *v41; // eax - __int16 v42; // ax - char v43; // al - _WORD *v44; // eax - char v45; // bl - const char *v46; // eax - _WORD *v47; // eax - __int16 v48; // dx - _WORD *v49; // eax - int v50; // edx - _WORD *v51; // eax - char v52; // bl - unsigned int v53; // [esp+4h] [ebp-94h] - int v54; // [esp+1Ch] [ebp-7Ch] - bool v55; // [esp+21h] [ebp-77h] - char v56; // [esp+22h] [ebp-76h] - int v57; // [esp+24h] [ebp-74h] - int v58; // [esp+28h] [ebp-70h] - int v59; // [esp+2Ch] [ebp-6Ch] - char v60; // [esp+2Ch] [ebp-6Ch] - char v61; // [esp+2Ch] [ebp-6Ch] - int v62; // [esp+30h] [ebp-68h] - char v63; // [esp+34h] [ebp-64h] - char v64; // [esp+35h] [ebp-63h] - char v65; // [esp+35h] [ebp-63h] - unsigned __int16 v66; // [esp+36h] [ebp-62h] - char v67; // [esp+36h] [ebp-62h] - bool v68; // [esp+38h] [ebp-60h] - int v69; // [esp+3Ch] [ebp-5Ch] - unsigned __int16 lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - __int64 lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - std::string *lpuexcptd; // [esp+40h] [ebp-58h] - struct _Unwind_Exception *v75; // [esp+48h] [ebp-50h] - int v76; // [esp+8Bh] [ebp-Dh] BYREF - const char *v77[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v75 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v59 = v6; - if ( v6 == 64 ) - { - v69 = 8; -LABEL_4: - v64 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v64 ) - { - v62 = 0; - v68 = 0; - v54 = v69; - v57 = v69; - lpuexcpt = 0; - v55 = 0; - goto LABEL_18; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v69 = 10; - goto LABEL_4; - } - v64 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v64 ) - { - v54 = 22; - lpuexcpt = 0; - v62 = 0; - v68 = 0; - v55 = 0; - v69 = 16; - v57 = 22; - goto LABEL_18; - } - v69 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v51 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v51; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v75 + 16); - v55 = *((_WORD *)v75 + 56) == lpuexcpt; - if ( *((_WORD *)v75 + 56) != lpuexcpt && *((_WORD *)v75 + 57) != lpuexcpt - || v7 && *((_WORD *)v75 + 19) == lpuexcpt - || *((_WORD *)v75 + 18) == lpuexcpt ) - { - goto LABEL_49; - } - v8 = *(_DWORD *)(a1 + 8); - if ( v8 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v8 + 2; - WORD2(a1) = -1; - v62 = 0; - v64 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v68 = 0; - if ( !v64 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v75 + 16); -LABEL_49: - v62 = 0; - v68 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v75 + 19) == lpuexcpt || *((_WORD *)v75 + 18) == lpuexcpt ) - { -LABEL_116: - v64 = 0; - goto LABEL_15; - } - if ( *((_WORD *)v75 + 60) != lpuexcpt ) - break; - v27 = v69 == 10 || !v68; - if ( !v27 ) - goto LABEL_55; - v68 = v59 == 0 || v69 == 8; - if ( !v68 ) - { - ++v62; - v68 = v27; - goto LABEL_59; - } - v22 = (_DWORD *)a1; - v62 = 0; - v69 = 8; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - { -LABEL_60: - v22[2] = v23 + 2; - WORD2(a1) = -1; - goto LABEL_61; - } -LABEL_71: - (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - v22 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v67 = 1; - goto LABEL_65; - } -LABEL_61: - v24 = (__int16 *)v22[2]; - if ( (unsigned int)v24 >= v22[3] ) - v25 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - else - v25 = *v24; - v67 = 0; - if ( v25 == -1 ) - { - LODWORD(a1) = 0; - v67 = 1; - } -LABEL_65: - v26 = a3 == -1; - v65 = v26 & (a2 != 0); - if ( v65 ) - { - v30 = (_WORD *)a2[2]; - v31 = (unsigned int)v30 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v30; - v26 = 0; - if ( v31 == -1 ) - { - a2 = 0; - v26 = v65; - } - } - if ( v26 == v67 ) - { - v64 = 1; - goto LABEL_15; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v49 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v68 ) - goto LABEL_116; - v7 = *((_BYTE *)v75 + 16); - } - if ( !v68 ) - goto LABEL_116; -LABEL_55: - if ( *((_WORD *)v75 + 58) != lpuexcpt && *((_WORD *)v75 + 59) != lpuexcpt ) - { - v64 = 0; - v68 = 1; - goto LABEL_15; - } - if ( v69 != 16 && v59 != 0 ) - { - v64 = 0; - v68 = 1; - v54 = v69; - v57 = v69; - goto LABEL_18; - } - v62 = 0; - v68 = 0; - v69 = 16; -LABEL_59: - v22 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - goto LABEL_60; - goto LABEL_71; - } -LABEL_15: - v9 = 22; - if ( v69 != 16 ) - v9 = v69; - v54 = v9; - v57 = v9; -LABEL_18: - v77[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v75 + 16) ) - std::string::reserve((int *)v77, (std::string *)0x20, v53); - v58 = 0xFFFF / v69; - v60 = *((_BYTE *)v75 + 164); - if ( v60 ) - { - if ( v64 ) - { - v17 = v77[0]; - v63 = 0; - v66 = 0; - v60 = v64; - v18 = *((_DWORD *)v77[0] - 3); - v64 = 0; -LABEL_37: - if ( v18 ) - goto LABEL_86; - goto LABEL_38; - } - v63 = 0; - v66 = 0; - while ( !*((_BYTE *)v75 + 16) || *((_WORD *)v75 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v75 + 18) ) - goto LABEL_85; - v28 = (char *)v75 + 120; - v29 = v54; - while ( lpuexcpt != *(_WORD *)v28 ) - { - v28 += 2; - if ( !--v29 ) - goto LABEL_85; - } - v35 = v28 - ((char *)v75 + 120); - v36 = v35 <= 30; - v37 = (v35 >> 1) - 6; - v38 = v35 >> 1; - if ( !v36 ) - v38 = v37; - if ( (unsigned __int16)v58 < v66 ) - { - v63 = v60; - goto LABEL_123; - } - v63 |= (unsigned __int16)(v69 * v66) > 0xFFFF - v38; - v39 = (_DWORD *)a1; - v66 = v69 * v66 + v38; - ++v62; - v40 = *(_DWORD *)(a1 + 8); - if ( v40 < *(_DWORD *)(a1 + 12) ) - { -LABEL_124: - v39[2] = v40 + 2; - WORD2(a1) = -1; - goto LABEL_125; - } -LABEL_133: - (*(void (__fastcall **)(_DWORD *))(*v39 + 40))(v39); - v39 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v60; - goto LABEL_129; - } -LABEL_125: - v41 = (__int16 *)v39[2]; - if ( (unsigned int)v41 >= v39[3] ) - v42 = (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39); - else - v42 = *v41; - lpuexcptc = 0; - if ( v42 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v60; - } -LABEL_129: - v43 = a3 == -1; - v56 = v43 & (a2 != 0); - if ( v56 ) - { - v47 = (_WORD *)a2[2]; - v48 = (unsigned int)v47 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v47; - v43 = 0; - if ( v48 == -1 ) - { - a2 = 0; - v43 = v56; - } - } - if ( lpuexcptc == v43 ) - { - v17 = v77[0]; - v18 = *((_DWORD *)v77[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v44 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v44 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v44; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v17 = v77[0]; - v18 = *((_DWORD *)v77[0] - 3); - if ( !v62 ) - { - v60 = 0; - v64 = *((_BYTE *)v75 + 16); - goto LABEL_37; - } - lpuexcptd = (std::string *)(v18 + 1); - if ( (unsigned int)(v18 + 1) > *((_DWORD *)v77[0] - 2) || *((int *)v77[0] - 1) > 0 ) - std::string::reserve((int *)v77, lpuexcptd, v53); - v45 = v62; - v62 = 0; - v77[0][*((_DWORD *)v77[0] - 3)] = v45; - v46 = v77[0]; - *((_DWORD *)v77[0] - 1) = 0; - *((_DWORD *)v46 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v46) = 0; -LABEL_123: - v39 = (_DWORD *)a1; - v40 = *(_DWORD *)(a1 + 8); - if ( v40 < *(_DWORD *)(a1 + 12) ) - goto LABEL_124; - goto LABEL_133; - } - if ( v64 ) - { - v52 = v64; - v17 = v77[0]; - v63 = 0; - v64 = 0; - v60 = v52; - v18 = *((_DWORD *)v77[0] - 3); - v66 = 0; - goto LABEL_37; - } - v63 = 0; - v66 = 0; -LABEL_23: - v10 = lpuexcpt; - if ( v57 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_26: - v11 = lpuexcpt - 48; -LABEL_27: - if ( (unsigned __int16)v58 >= v66 ) - goto LABEL_97; -LABEL_28: - v12 = (_DWORD *)a1; - v63 = 1; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_98; -LABEL_29: - v12[2] = v13 + 2; - WORD2(a1) = -1; -LABEL_30: - v14 = (__int16 *)v12[2]; - if ( (unsigned int)v14 >= v12[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v15 = *v14; - lpuexcpta = 0; - if ( v15 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } - goto LABEL_34; - } - while ( (unsigned __int16)(lpuexcpt - 97) <= 5u ) - { - v11 = v10 - 87; - if ( (unsigned __int16)v58 < v66 ) - goto LABEL_28; -LABEL_97: - v63 |= (unsigned __int16)(v69 * v66) > 0xFFFF - v11; - v12 = (_DWORD *)a1; - v66 = v69 * v66 + v11; - ++v62; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - goto LABEL_29; -LABEL_98: - (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_30; - lpuexcpta = 1; -LABEL_34: - v16 = a3 == -1; - v61 = v16 & (a2 != 0); - if ( v61 ) - { - v33 = (_WORD *)a2[2]; - v34 = (unsigned int)v33 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v33; - v16 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v16 = v61; - } - } - if ( lpuexcpta == v16 ) - { - v17 = v77[0]; - v60 = 1; - v18 = *((_DWORD *)v77[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) - goto LABEL_23; - v32 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v32 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v32; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_23; - LODWORD(a1) = 0; - v10 = 0xFFFF; - if ( v57 <= 10 ) - goto LABEL_85; - } - if ( (unsigned __int16)(lpuexcpt - 65) <= 5u ) - { - v11 = v10 - 55; - goto LABEL_27; - } - } - else if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v57 + 48) > lpuexcpt ) - { - goto LABEL_26; - } -LABEL_85: - v17 = v77[0]; - v60 = 0; - if ( *((_DWORD *)v77[0] - 3) ) - { -LABEL_86: - std::string::push_back((int *)v77, (std::string *)(char)v62, v53); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v75 + 2), *((_DWORD *)v75 + 3), v77) ) - *a5 = 4; - v17 = v77[0]; - if ( !v62 && !v68 && !*((_DWORD *)v77[0] - 3) ) - goto LABEL_40; - goto LABEL_91; - } -LABEL_38: - if ( !v62 && !v68 ) - goto LABEL_40; -LABEL_91: - if ( v64 ) - { -LABEL_40: - v19 = a5; - *a6 = 0; - *v19 = 4; - goto LABEL_41; - } - if ( v63 ) - { - *a6 = -1; - *a5 = 4; - } - else - { - v50 = -v66; - if ( !v55 ) - LOWORD(v50) = v66; - *a6 = v50; - } -LABEL_41: - if ( v60 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_156: - std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v76); - return lpuexcptb; - } - v20 = *((_DWORD *)v17 - 1); - *((_DWORD *)v17 - 1) = v20 - 1; - if ( v20 <= 0 ) - goto LABEL_156; - return lpuexcptb; -} -// 481367: variable 'v53' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00481600) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // eax - char v7; // al - int v8; // eax - unsigned __int64 v9; // kr00_8 - int v10; // esi - int v11; // esi - _DWORD *v12; // ecx - unsigned int v13; // eax - __int16 *v14; // eax - __int16 v15; // ax - char v16; // al - const char *v17; // eax - int v18; // edx - _DWORD *v19; // edi - _DWORD *v20; // esi - int v21; // edx - _DWORD *v23; // ecx - unsigned int v24; // eax - __int16 *v25; // eax - __int16 v26; // ax - char v27; // al - bool v28; // al - char *v29; // eax - int v30; // edx - int v31; // ecx - unsigned int v32; // ebx - int *v33; // edi - _DWORD *v34; // ebx - _WORD *v35; // eax - __int16 v36; // dx - _WORD *v37; // eax - _WORD *v38; // eax - __int16 v39; // dx - int v40; // eax - int v41; // esi - _DWORD *v42; // ecx - unsigned int v43; // eax - __int16 *v44; // eax - __int16 v45; // ax - char v46; // al - _WORD *v47; // eax - char v48; // bl - const char *v49; // eax - _WORD *v50; // eax - __int16 v51; // dx - _WORD *v52; // eax - _WORD *v53; // eax - char v54; // bl - unsigned int v55; // [esp+4h] [ebp-B4h] - unsigned int v56; // [esp+4h] [ebp-B4h] - int v57; // [esp+14h] [ebp-A4h] - unsigned __int64 v58; // [esp+18h] [ebp-A0h] - bool v59; // [esp+21h] [ebp-97h] - char v60; // [esp+22h] [ebp-96h] - int v61; // [esp+24h] [ebp-94h] - char v62; // [esp+32h] [ebp-86h] - char v63; // [esp+33h] [ebp-85h] - char v64; // [esp+33h] [ebp-85h] - int v65; // [esp+34h] [ebp-84h] - char v66; // [esp+34h] [ebp-84h] - char v67; // [esp+34h] [ebp-84h] - __int64 v68; // [esp+38h] [ebp-80h] - char v69; // [esp+38h] [ebp-80h] - int v70; // [esp+40h] [ebp-78h] - bool v71; // [esp+44h] [ebp-74h] - int v72; // [esp+48h] [ebp-70h] - unsigned __int64 v73; // [esp+48h] [ebp-70h] - unsigned __int16 lpuexcpt; // [esp+50h] [ebp-68h] - char lpuexcpta; // [esp+50h] [ebp-68h] - __int64 lpuexcptb; // [esp+50h] [ebp-68h] - char lpuexcptc; // [esp+50h] [ebp-68h] - std::string *lpuexcptd; // [esp+50h] [ebp-68h] - struct _Unwind_Exception *v79; // [esp+58h] [ebp-60h] - int v80; // [esp+9Bh] [ebp-1Dh] BYREF - const char *v81[7]; // [esp+9Ch] [ebp-1Ch] BYREF - - v79 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v65 = v6; - if ( v6 == 64 ) - { - v72 = 8; -LABEL_4: - v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v63 ) - { - v70 = 0; - v71 = 0; - v57 = v72; - v61 = v72; - lpuexcpt = 0; - v59 = 0; - goto LABEL_16; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v72 = 10; - goto LABEL_4; - } - v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v63 ) - { - v70 = 0; - v57 = 22; - lpuexcpt = 0; - v71 = 0; - v59 = 0; - v72 = 16; - v61 = 22; - goto LABEL_16; - } - v72 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v53 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v53 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v53; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v79 + 16); - v59 = *((_WORD *)v79 + 56) == lpuexcpt; - if ( *((_WORD *)v79 + 56) != lpuexcpt && *((_WORD *)v79 + 57) != lpuexcpt - || v7 && *((_WORD *)v79 + 19) == lpuexcpt - || *((_WORD *)v79 + 18) == lpuexcpt ) - { - goto LABEL_49; - } - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v70 = 0; - v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v71 = 0; - if ( !v63 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v79 + 16); -LABEL_49: - v70 = 0; - v71 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v79 + 19) == lpuexcpt || *((_WORD *)v79 + 18) == lpuexcpt ) - { -LABEL_118: - v63 = 0; - goto LABEL_13; - } - if ( *((_WORD *)v79 + 60) != lpuexcpt ) - break; - v28 = v72 == 10 || !v71; - if ( !v28 ) - goto LABEL_55; - v71 = v65 == 0 || v72 == 8; - if ( !v71 ) - { - ++v70; - v71 = v28; - goto LABEL_59; - } - v23 = (_DWORD *)a1; - v70 = 0; - v72 = 8; - v24 = *(_DWORD *)(a1 + 8); - if ( v24 < *(_DWORD *)(a1 + 12) ) - { -LABEL_60: - v23[2] = v24 + 2; - WORD2(a1) = -1; - goto LABEL_61; - } -LABEL_71: - (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); - v23 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v69 = 1; - goto LABEL_65; - } -LABEL_61: - v25 = (__int16 *)v23[2]; - if ( (unsigned int)v25 >= v23[3] ) - v26 = (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23); - else - v26 = *v25; - v69 = 0; - if ( v26 == -1 ) - { - LODWORD(a1) = 0; - v69 = 1; - } -LABEL_65: - v27 = a3 == -1; - v64 = v27 & (a2 != 0); - if ( v64 ) - { - v35 = (_WORD *)a2[2]; - v36 = (unsigned int)v35 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v35; - v27 = 0; - if ( v36 == -1 ) - { - a2 = 0; - v27 = v64; - } - } - if ( v27 == v69 ) - { - v63 = 1; - goto LABEL_13; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v52 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v52; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v71 ) - goto LABEL_118; - v7 = *((_BYTE *)v79 + 16); - } - if ( !v71 ) - goto LABEL_118; -LABEL_55: - if ( *((_WORD *)v79 + 58) != lpuexcpt && *((_WORD *)v79 + 59) != lpuexcpt ) - { - v63 = 0; - v71 = 1; - goto LABEL_13; - } - if ( v72 != 16 && v65 != 0 ) - { - v63 = 0; - v71 = 1; - v57 = v72; - v61 = v72; - goto LABEL_16; - } - v70 = 0; - v71 = 0; - v72 = 16; -LABEL_59: - v23 = (_DWORD *)a1; - v24 = *(_DWORD *)(a1 + 8); - if ( v24 < *(_DWORD *)(a1 + 12) ) - goto LABEL_60; - goto LABEL_71; - } -LABEL_13: - v8 = 22; - if ( v72 != 16 ) - v8 = v72; - v57 = v8; - v61 = v8; -LABEL_16: - v81[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v79 + 16) ) - std::string::reserve((int *)v81, (std::string *)0x20, v55); - v58 = 0x8000000000000000LL; - if ( !v59 ) - v58 = 0x7FFFFFFFFFFFFFFFLL; - v68 = v72; - v9 = v58 / v72; - v66 = *((_BYTE *)v79 + 164); - if ( v66 ) - { - if ( v63 ) - { - v17 = v81[0]; - v73 = 0LL; - v66 = v63; - v18 = *((_DWORD *)v81[0] - 3); - v62 = 0; - v63 = 0; -LABEL_37: - if ( v18 ) - goto LABEL_86; - goto LABEL_38; - } - v62 = 0; - v73 = 0LL; - while ( !*((_BYTE *)v79 + 16) || *((_WORD *)v79 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v79 + 18) ) - goto LABEL_85; - v29 = (char *)v79 + 120; - v30 = v57; - while ( *(_WORD *)v29 != lpuexcpt ) - { - v29 += 2; - if ( !--v30 ) - goto LABEL_85; - } - v40 = v29 - ((char *)v79 + 120); - v41 = (v40 >> 1) - 6; - if ( v40 <= 30 ) - v41 = v40 >> 1; - if ( v9 < v73 ) - { - v62 = v66; - goto LABEL_125; - } - v62 |= v58 - v41 < v68 * v73; - v42 = (_DWORD *)a1; - v73 = v68 * v73 + v41; - ++v70; - v43 = *(_DWORD *)(a1 + 8); - if ( v43 < *(_DWORD *)(a1 + 12) ) - { -LABEL_126: - v42[2] = v43 + 2; - WORD2(a1) = -1; - goto LABEL_127; - } -LABEL_135: - (*(void (__fastcall **)(_DWORD *))(*v42 + 40))(v42); - v42 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v66; - goto LABEL_131; - } -LABEL_127: - v44 = (__int16 *)v42[2]; - if ( (unsigned int)v44 >= v42[3] ) - v45 = (*(int (__fastcall **)(_DWORD *))(*v42 + 36))(v42); - else - v45 = *v44; - lpuexcptc = 0; - if ( v45 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v66; - } -LABEL_131: - v46 = a3 == -1; - v60 = v46 & (a2 != 0); - if ( v60 ) - { - v50 = (_WORD *)a2[2]; - v51 = (unsigned int)v50 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v50; - v46 = 0; - if ( v51 == -1 ) - { - a2 = 0; - v46 = v60; - } - } - if ( v46 == lpuexcptc ) - { - v17 = v81[0]; - v18 = *((_DWORD *)v81[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v47 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v47; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v17 = v81[0]; - v18 = *((_DWORD *)v81[0] - 3); - if ( !v70 ) - { - v66 = 0; - v63 = *((_BYTE *)v79 + 16); - goto LABEL_37; - } - lpuexcptd = (std::string *)(v18 + 1); - if ( (unsigned int)(v18 + 1) > *((_DWORD *)v81[0] - 2) || *((int *)v81[0] - 1) > 0 ) - std::string::reserve((int *)v81, lpuexcptd, v56); - v48 = v70; - v70 = 0; - v81[0][*((_DWORD *)v81[0] - 3)] = v48; - v49 = v81[0]; - *((_DWORD *)v81[0] - 1) = 0; - *((_DWORD *)v49 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v49) = 0; -LABEL_125: - v42 = (_DWORD *)a1; - v43 = *(_DWORD *)(a1 + 8); - if ( v43 < *(_DWORD *)(a1 + 12) ) - goto LABEL_126; - goto LABEL_135; - } - if ( v63 ) - { - v54 = v63; - v17 = v81[0]; - v62 = 0; - v63 = 0; - v66 = v54; - v18 = *((_DWORD *)v81[0] - 3); - v73 = 0LL; - goto LABEL_37; - } - v62 = 0; - v73 = 0LL; -LABEL_23: - v10 = lpuexcpt; - if ( v61 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_26: - v11 = lpuexcpt - 48; - goto LABEL_27; - } - while ( 1 ) - { - if ( (unsigned __int16)(lpuexcpt - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcpt - 65) > 5u ) - goto LABEL_85; - v11 = v10 - 55; - } - else - { - v11 = v10 - 87; - } -LABEL_27: - if ( v9 >= v73 ) - { - v62 |= v58 - v11 < v68 * v73; - v12 = (_DWORD *)a1; - v73 = v68 * v73 + v11; - ++v70; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - { -LABEL_29: - v12[2] = v13 + 2; - WORD2(a1) = -1; - goto LABEL_30; - } - } - else - { - v12 = (_DWORD *)a1; - v62 = 1; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - goto LABEL_29; - } - (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpta = 1; - goto LABEL_34; - } -LABEL_30: - v14 = (__int16 *)v12[2]; - if ( (unsigned int)v14 >= v12[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v15 = *v14; - lpuexcpta = 0; - if ( v15 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } -LABEL_34: - v16 = a3 == -1; - v67 = v16 & (a2 != 0); - if ( v67 ) - { - v38 = (_WORD *)a2[2]; - v39 = (unsigned int)v38 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v38; - v16 = 0; - if ( v39 == -1 ) - { - a2 = 0; - v16 = v67; - } - } - if ( v16 == lpuexcpta ) - { - v17 = v81[0]; - v66 = 1; - v18 = *((_DWORD *)v81[0] - 3); - goto LABEL_37; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_23; - v37 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v37 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v37; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_23; - LODWORD(a1) = 0; - v10 = 0xFFFF; - if ( v61 <= 10 ) - goto LABEL_85; - } - } - if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v61 + 48) > lpuexcpt ) - goto LABEL_26; -LABEL_85: - v17 = v81[0]; - v66 = 0; - if ( *((_DWORD *)v81[0] - 3) ) - { -LABEL_86: - std::string::push_back((int *)v81, (std::string *)(char)v70, v56); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v79 + 2), *((_DWORD *)v79 + 3), v81) ) - *a5 = 4; - v17 = v81[0]; - if ( !v70 && !v71 && !*((_DWORD *)v81[0] - 3) ) - goto LABEL_40; - goto LABEL_91; - } -LABEL_38: - if ( !v70 && !v71 ) - goto LABEL_40; -LABEL_91: - if ( v63 ) - { -LABEL_40: - v19 = a6; - v20 = a5; - *a6 = 0; - v19[1] = 0; - *v20 = 4; - goto LABEL_41; - } - if ( v62 ) - { - v31 = 0; - v32 = 0x80000000; - if ( !v59 ) - { - v31 = -1; - v32 = 0x7FFFFFFF; - } - v33 = a6; - a6[1] = v32; - v34 = a5; - *v33 = v31; - *v34 = 4; - } - else - { - if ( v59 ) - v73 = -(__int64)v73; - *(_QWORD *)a6 = v73; - } -LABEL_41: - if ( v66 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_158: - std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v80); - return lpuexcptb; - } - v21 = *((_DWORD *)v17 - 1); - *((_DWORD *)v17 - 1) = v21 - 1; - if ( v21 <= 0 ) - goto LABEL_158; - return lpuexcptb; -} -// 482107: variable 'v55' is possibly undefined -// 481C47: variable 'v56' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004823E0) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_int( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // eax - char v7; // al - int v8; // eax - unsigned __int64 v9; // kr00_8 - int v10; // eax - int v11; // esi - _DWORD *v12; // ecx - unsigned int v13; // eax - __int16 *v14; // eax - __int16 v15; // ax - char v16; // al - const char *v17; // eax - int v18; // edx - _DWORD *v19; // ebx - _DWORD *v20; // edi - int v21; // edx - _DWORD *v23; // ecx - unsigned int v24; // eax - __int16 *v25; // eax - __int16 v26; // ax - char v27; // al - bool v28; // al - char *v29; // eax - int v30; // edx - _WORD *v31; // eax - __int16 v32; // dx - _WORD *v33; // eax - _WORD *v34; // eax - __int16 v35; // dx - int v36; // eax - int v37; // esi - _DWORD *v38; // ecx - unsigned int v39; // eax - __int16 *v40; // eax - __int16 v41; // ax - char v42; // al - _WORD *v43; // eax - char v44; // bl - const char *v45; // eax - _WORD *v46; // eax - __int16 v47; // dx - _WORD *v48; // eax - _DWORD *v49; // ebx - _DWORD *v50; // edi - _WORD *v51; // eax - char v52; // bl - unsigned int v53; // [esp+4h] [ebp-B4h] - unsigned int v54; // [esp+4h] [ebp-B4h] - bool v55; // [esp+1Fh] [ebp-99h] - int v56; // [esp+20h] [ebp-98h] - int v57; // [esp+24h] [ebp-94h] - char v58; // [esp+30h] [ebp-88h] - char v59; // [esp+32h] [ebp-86h] - char v60; // [esp+33h] [ebp-85h] - char v61; // [esp+33h] [ebp-85h] - int v62; // [esp+34h] [ebp-84h] - char v63; // [esp+34h] [ebp-84h] - char v64; // [esp+34h] [ebp-84h] - __int64 v65; // [esp+38h] [ebp-80h] - char v66; // [esp+38h] [ebp-80h] - int v67; // [esp+40h] [ebp-78h] - bool v68; // [esp+44h] [ebp-74h] - int v69; // [esp+48h] [ebp-70h] - unsigned __int64 v70; // [esp+48h] [ebp-70h] - unsigned __int16 lpuexcpt; // [esp+50h] [ebp-68h] - char lpuexcpta; // [esp+50h] [ebp-68h] - __int64 lpuexcptb; // [esp+50h] [ebp-68h] - char lpuexcptc; // [esp+50h] [ebp-68h] - std::string *lpuexcptd; // [esp+50h] [ebp-68h] - struct _Unwind_Exception *v76; // [esp+58h] [ebp-60h] - int v77; // [esp+9Bh] [ebp-1Dh] BYREF - const char *v78[7]; // [esp+9Ch] [ebp-1Ch] BYREF - - v76 = std::__use_cache>::operator()((int *)(a4 + 108)); - v6 = *(_DWORD *)(a4 + 12) & 0x4A; - v62 = v6; - if ( v6 == 64 ) - { - v69 = 8; -LABEL_4: - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v67 = 0; - v68 = 0; - v56 = v69; - v57 = v69; - lpuexcpt = 0; - v55 = 0; - goto LABEL_16; - } - goto LABEL_5; - } - if ( v6 != 8 ) - { - v69 = 10; - goto LABEL_4; - } - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v60 ) - { - v67 = 0; - v56 = 22; - lpuexcpt = 0; - v68 = 0; - v55 = 0; - v69 = 16; - v57 = 22; - goto LABEL_16; - } - v69 = 16; -LABEL_5: - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v51 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v51; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - v7 = *((_BYTE *)v76 + 16); - v55 = *((_WORD *)v76 + 56) == lpuexcpt; - if ( *((_WORD *)v76 + 56) != lpuexcpt && *((_WORD *)v76 + 57) != lpuexcpt - || v7 && *((_WORD *)v76 + 19) == lpuexcpt - || *((_WORD *)v76 + 18) == lpuexcpt ) - { - goto LABEL_47; - } - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v67 = 0; - v60 = std::istreambuf_iterator::equal(&a1, (int)&a2); - v68 = 0; - if ( !v60 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v7 = *((_BYTE *)v76 + 16); -LABEL_47: - v67 = 0; - v68 = 0; - while ( 1 ) - { - if ( v7 && *((_WORD *)v76 + 19) == lpuexcpt || *((_WORD *)v76 + 18) == lpuexcpt ) - { -LABEL_117: - v60 = 0; - goto LABEL_13; - } - if ( *((_WORD *)v76 + 60) != lpuexcpt ) - break; - v28 = v69 == 10 || !v68; - if ( !v28 ) - goto LABEL_53; - v68 = v62 == 0 || v69 == 8; - if ( !v68 ) - { - ++v67; - v68 = v28; - goto LABEL_57; - } - v23 = (_DWORD *)a1; - v67 = 0; - v69 = 8; - v24 = *(_DWORD *)(a1 + 8); - if ( v24 < *(_DWORD *)(a1 + 12) ) - { -LABEL_58: - v23[2] = v24 + 2; - WORD2(a1) = -1; - goto LABEL_59; - } -LABEL_69: - (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); - v23 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v66 = 1; - goto LABEL_63; - } -LABEL_59: - v25 = (__int16 *)v23[2]; - if ( (unsigned int)v25 >= v23[3] ) - v26 = (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23); - else - v26 = *v25; - v66 = 0; - if ( v26 == -1 ) - { - LODWORD(a1) = 0; - v66 = 1; - } -LABEL_63: - v27 = a3 == -1; - v61 = v27 & (a2 != 0); - if ( v61 ) - { - v31 = (_WORD *)a2[2]; - v32 = (unsigned int)v31 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v31; - v27 = 0; - if ( v32 == -1 ) - { - a2 = 0; - v27 = v61; - } - } - if ( v66 == v27 ) - { - v60 = 1; - goto LABEL_13; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v48 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v48; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v68 ) - goto LABEL_117; - v7 = *((_BYTE *)v76 + 16); - } - if ( !v68 ) - goto LABEL_117; -LABEL_53: - if ( *((_WORD *)v76 + 58) != lpuexcpt && *((_WORD *)v76 + 59) != lpuexcpt ) - { - v60 = 0; - v68 = 1; - goto LABEL_13; - } - if ( v69 != 16 && v62 != 0 ) - { - v60 = 0; - v68 = 1; - v56 = v69; - v57 = v69; - goto LABEL_16; - } - v67 = 0; - v68 = 0; - v69 = 16; -LABEL_57: - v23 = (_DWORD *)a1; - v24 = *(_DWORD *)(a1 + 8); - if ( v24 < *(_DWORD *)(a1 + 12) ) - goto LABEL_58; - goto LABEL_69; - } -LABEL_13: - v8 = 22; - if ( v69 != 16 ) - v8 = v69; - v56 = v8; - v57 = v8; -LABEL_16: - v78[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v76 + 16) ) - std::string::reserve((int *)v78, (std::string *)0x20, v53); - v65 = v69; - v9 = 0xFFFFFFFFFFFFFFFFLL / v69; - v63 = *((_BYTE *)v76 + 164); - if ( v63 ) - { - if ( v60 ) - { - v17 = v78[0]; - v70 = 0LL; - v63 = v60; - v18 = *((_DWORD *)v78[0] - 3); - v59 = 0; - v60 = 0; -LABEL_35: - if ( v18 ) - goto LABEL_84; - goto LABEL_36; - } - v59 = 0; - v70 = 0LL; - while ( !*((_BYTE *)v76 + 16) || *((_WORD *)v76 + 19) != lpuexcpt ) - { - if ( lpuexcpt == *((_WORD *)v76 + 18) ) - goto LABEL_83; - v29 = (char *)v76 + 120; - v30 = v56; - while ( *(_WORD *)v29 != lpuexcpt ) - { - v29 += 2; - if ( !--v30 ) - goto LABEL_83; - } - v36 = v29 - ((char *)v76 + 120); - v37 = (v36 >> 1) - 6; - if ( v36 <= 30 ) - v37 = v36 >> 1; - if ( v9 < v70 ) - { - v59 = v63; - goto LABEL_122; - } - v59 |= __PAIR64__(~(v37 >> 31), ~v37) < v65 * v70; - v38 = (_DWORD *)a1; - ++v67; - v70 = v65 * v70 + v37; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - { -LABEL_123: - v38[2] = v39 + 2; - WORD2(a1) = -1; - goto LABEL_124; - } -LABEL_132: - (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); - v38 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptc = v63; - goto LABEL_128; - } -LABEL_124: - v40 = (__int16 *)v38[2]; - if ( (unsigned int)v40 >= v38[3] ) - v41 = (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38); - else - v41 = *v40; - lpuexcptc = 0; - if ( v41 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v63; - } -LABEL_128: - v42 = a3 == -1; - v58 = v42 & (a2 != 0); - if ( v58 ) - { - v46 = (_WORD *)a2[2]; - v47 = (unsigned int)v46 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v46; - v42 = 0; - if ( v47 == -1 ) - { - a2 = 0; - v42 = v58; - } - } - if ( v42 == lpuexcptc ) - { - v17 = v78[0]; - v18 = *((_DWORD *)v78[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v43 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v43; - if ( lpuexcpt == 0xFFFF ) - LODWORD(a1) = 0; - } - } - v17 = v78[0]; - v18 = *((_DWORD *)v78[0] - 3); - if ( !v67 ) - { - v63 = 0; - v60 = *((_BYTE *)v76 + 16); - goto LABEL_35; - } - lpuexcptd = (std::string *)(v18 + 1); - if ( (unsigned int)(v18 + 1) > *((_DWORD *)v78[0] - 2) || *((int *)v78[0] - 1) > 0 ) - std::string::reserve((int *)v78, lpuexcptd, v54); - v44 = v67; - v67 = 0; - v78[0][*((_DWORD *)v78[0] - 3)] = v44; - v45 = v78[0]; - *((_DWORD *)v78[0] - 1) = 0; - *((_DWORD *)v45 - 3) = lpuexcptd; - *((_BYTE *)lpuexcptd + (_DWORD)v45) = 0; -LABEL_122: - v38 = (_DWORD *)a1; - v39 = *(_DWORD *)(a1 + 8); - if ( v39 < *(_DWORD *)(a1 + 12) ) - goto LABEL_123; - goto LABEL_132; - } - if ( v60 ) - { - v52 = v60; - v17 = v78[0]; - v59 = 0; - v60 = 0; - v63 = v52; - v18 = *((_DWORD *)v78[0] - 3); - v70 = 0LL; - goto LABEL_35; - } - v59 = 0; - v70 = 0LL; -LABEL_21: - v10 = lpuexcpt; - if ( v57 > 10 ) - { - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { -LABEL_24: - v11 = lpuexcpt - 48; - goto LABEL_25; - } - while ( 1 ) - { - v11 = v10 - 87; - if ( (unsigned __int16)(lpuexcpt - 97) > 5u ) - { - if ( (unsigned __int16)(lpuexcpt - 65) > 5u ) - goto LABEL_83; - v11 = v10 - 55; - } -LABEL_25: - if ( v9 >= v70 ) - { - v59 |= __PAIR64__(~(v11 >> 31), ~v11) < v65 * v70; - v12 = (_DWORD *)a1; - ++v67; - v70 = v65 * v70 + v11; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - { -LABEL_27: - v12[2] = v13 + 2; - WORD2(a1) = -1; - goto LABEL_28; - } - } - else - { - v12 = (_DWORD *)a1; - v59 = 1; - v13 = *(_DWORD *)(a1 + 8); - if ( v13 < *(_DWORD *)(a1 + 12) ) - goto LABEL_27; - } - (*(void (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcpta = 1; - goto LABEL_32; - } -LABEL_28: - v14 = (__int16 *)v12[2]; - if ( (unsigned int)v14 >= v12[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v15 = *v14; - lpuexcpta = 0; - if ( v15 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = 1; - } -LABEL_32: - v16 = a3 == -1; - v64 = v16 & (a2 != 0); - if ( v64 ) - { - v34 = (_WORD *)a2[2]; - v35 = (unsigned int)v34 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v34; - v16 = 0; - if ( v35 == -1 ) - { - a2 = 0; - v16 = v64; - } - } - if ( v16 == lpuexcpta ) - { - v17 = v78[0]; - v63 = 1; - v18 = *((_DWORD *)v78[0] - 3); - goto LABEL_35; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_21; - v33 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v33 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v33; - if ( lpuexcpt != 0xFFFF ) - goto LABEL_21; - LODWORD(a1) = 0; - v10 = 0xFFFF; - if ( v57 <= 10 ) - goto LABEL_83; - } - } - if ( lpuexcpt > 0x2Fu && (unsigned __int16)(v57 + 48) > lpuexcpt ) - goto LABEL_24; -LABEL_83: - v17 = v78[0]; - v63 = 0; - if ( *((_DWORD *)v78[0] - 3) ) - { -LABEL_84: - std::string::push_back((int *)v78, (std::string *)(char)v67, v54); - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v76 + 2), *((_DWORD *)v76 + 3), v78) ) - *a5 = 4; - v17 = v78[0]; - if ( !v67 && !v68 && !*((_DWORD *)v78[0] - 3) ) - goto LABEL_38; - goto LABEL_89; - } -LABEL_36: - if ( !v67 && !v68 ) - goto LABEL_38; -LABEL_89: - if ( v60 ) - { -LABEL_38: - v19 = a6; - v20 = a5; - *a6 = 0; - v19[1] = 0; - *v20 = 4; - goto LABEL_39; - } - if ( v59 ) - { - v49 = a6; - v50 = a5; - *a6 = -1; - v49[1] = -1; - *v50 = 4; - } - else - { - if ( v55 ) - v70 = -(__int64)v70; - *(_QWORD *)a6 = v70; - } -LABEL_39: - if ( v63 ) - *a5 |= 2u; - lpuexcptb = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v17 - 1, 0xFFFFFFFF) > 0 ) - return lpuexcptb; -LABEL_155: - std::string::_Rep::_M_destroy((void *)(v17 - 12), (int)&v77); - return lpuexcptb; - } - v21 = *((_DWORD *)v17 - 1); - *((_DWORD *)v17 - 1) = v21 - 1; - if ( v21 <= 0 ) - goto LABEL_155; - return lpuexcptb; -} -// 482EA7: variable 'v53' is possibly undefined -// 4829F7: variable 'v54' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00483180) -------------------------------------------------------- -__int64 __stdcall std::num_get>::_M_extract_float( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // cl - int v7; // eax - _DWORD *v8; // ecx - unsigned int v9; // eax - __int16 *v10; // eax - __int16 v11; // ax - char v12; // al - int v13; // eax - int v14; // eax - char v16; // al - char *v17; // eax - bool v18; // zf - int v19; // eax - _DWORD *v20; // ecx - unsigned int v21; // eax - __int16 *v22; // eax - __int16 v23; // ax - char v24; // al - __int16 v25; // dx - _WORD *v26; // eax - unsigned int v27; // eax - __int16 v28; // ax - int v29; // eax - int v30; // eax - _DWORD *v31; // ecx - unsigned int v32; // eax - __int16 *v33; // eax - __int16 v34; // ax - char v35; // al - int v36; // eax - const char *v37; // eax - int v38; // eax - _WORD *v39; // eax - __int16 v40; // dx - char v41; // cl - const char *v42; // eax - std::string *v43; // ebx - int v44; // eax - _WORD *v45; // eax - __int16 v46; // dx - __int16 *v47; // eax - _WORD *v48; // eax - __int16 v49; // dx - _WORD *v50; // eax - __int16 v51; // dx - char v52; // al - char i; // dl - _DWORD *v54; // ecx - unsigned int v55; // eax - __int16 *v56; // eax - __int16 v57; // ax - char v58; // al - int v59; // eax - _WORD *v60; // eax - __int16 v61; // dx - _WORD *v62; // eax - bool v63; // al - unsigned int v64; // [esp+4h] [ebp-84h] - unsigned int v65; // [esp+4h] [ebp-84h] - unsigned int v66; // [esp+Ch] [ebp-7Ch] - int v67; // [esp+14h] [ebp-74h] - char v68; // [esp+14h] [ebp-74h] - int v69; // [esp+14h] [ebp-74h] - char v70; // [esp+1Bh] [ebp-6Dh] - char v71; // [esp+1Ch] [ebp-6Ch] - std::string *v72; // [esp+1Ch] [ebp-6Ch] - std::string *v73; // [esp+1Ch] [ebp-6Ch] - bool v74; // [esp+20h] [ebp-68h] - char v75; // [esp+20h] [ebp-68h] - std::string *v76; // [esp+20h] [ebp-68h] - char v77; // [esp+20h] [ebp-68h] - std::string *v78; // [esp+20h] [ebp-68h] - std::string *v79; // [esp+20h] [ebp-68h] - int v80; // [esp+24h] [ebp-64h] - int v81; // [esp+28h] [ebp-60h] - char v82; // [esp+28h] [ebp-60h] - char v83; // [esp+28h] [ebp-60h] - int v84; // [esp+28h] [ebp-60h] - char v85; // [esp+2Ch] [ebp-5Ch] - char v86; // [esp+2Ch] [ebp-5Ch] - char v87; // [esp+2Ch] [ebp-5Ch] - char v88; // [esp+2Ch] [ebp-5Ch] - std::string *v89; // [esp+2Ch] [ebp-5Ch] - struct _Unwind_Exception *v90; // [esp+30h] [ebp-58h] - __int64 v91; // [esp+30h] [ebp-58h] - __int16 lpuexcpt; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-50h] - char lpuexcptb; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptc; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptd; // [esp+38h] [ebp-50h] - char lpuexcpte; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcptf; // [esp+38h] [ebp-50h] - char lpuexcptg; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpth; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *lpuexcpti; // [esp+38h] [ebp-50h] - char lpuexcptj; // [esp+38h] [ebp-50h] - int v103; // [esp+7Bh] [ebp-Dh] BYREF - const char *v104[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v90 = std::__use_cache>::operator()((int *)(a4 + 108)); - v74 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( v74 ) - { - v80 = 0; - lpuexcpt = 0; - v85 = 0; - goto LABEL_3; - } - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v51 = *((_WORD *)v90 + 57); - if ( v51 == lpuexcpt ) - { - v52 = *((_BYTE *)v90 + 16); - } - else - { - v52 = *((_BYTE *)v90 + 16); - if ( *((_WORD *)v90 + 56) != lpuexcpt ) - { -LABEL_144: - v80 = 0; - for ( i = 0; ; i = 1 ) - { - if ( v52 && *((_WORD *)v90 + 19) == lpuexcpt - || *((_WORD *)v90 + 18) == lpuexcpt - || *((_WORD *)v90 + 60) != lpuexcpt ) - { - v85 = i; - goto LABEL_3; - } - if ( i ) - { - v54 = (_DWORD *)a1; - ++v80; - v55 = *(_DWORD *)(a1 + 8); - if ( v55 < *(_DWORD *)(a1 + 12) ) - goto LABEL_151; - } - else - { - v84 = *(_DWORD *)(*a6 - 12); - v89 = (std::string *)(v84 + 1); - if ( (unsigned int)(v84 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, v89, v64); - ++v80; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 48; - v59 = *a6; - *(_DWORD *)(v59 - 12) = v89; - *(_DWORD *)(v59 - 4) = 0; - *(_BYTE *)(v59 + v84 + 1) = 0; - v54 = (_DWORD *)a1; - v55 = *(_DWORD *)(a1 + 8); - if ( v55 < *(_DWORD *)(a1 + 12) ) - { -LABEL_151: - v54[2] = v55 + 2; - WORD2(a1) = -1; - goto LABEL_152; - } - } - (*(void (__fastcall **)(_DWORD *))(*v54 + 40))(v54); - v54 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - v88 = 1; - goto LABEL_156; - } -LABEL_152: - v56 = (__int16 *)v54[2]; - if ( (unsigned int)v56 >= v54[3] ) - v57 = (*(int (__fastcall **)(_DWORD *))(*v54 + 36))(v54); - else - v57 = *v56; - v88 = 0; - if ( v57 == -1 ) - { - LODWORD(a1) = 0; - v88 = 1; - } -LABEL_156: - v58 = a3 == -1; - v83 = v58 & (a2 != 0); - if ( v83 ) - { - v60 = (_WORD *)a2[2]; - v61 = (unsigned int)v60 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v60; - v58 = 0; - if ( v61 == -1 ) - { - a2 = 0; - v58 = v83; - } - } - if ( v58 == v88 ) - { - v85 = 1; - v74 = 1; - goto LABEL_3; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v62 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v62; - if ( lpuexcpt == -1 ) - LODWORD(a1) = 0; - } - v52 = *((_BYTE *)v90 + 16); - } - } - } - if ( v52 && *((_WORD *)v90 + 19) == lpuexcpt || *((_WORD *)v90 + 18) == lpuexcpt ) - goto LABEL_144; - std::string::push_back(a6, (std::string *)(2 * (v51 != lpuexcpt) + 43), v64); - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - v63 = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !v63 ) - { - lpuexcpt = std::istreambuf_iterator::_M_get((int)&a1); - v52 = *((_BYTE *)v90 + 16); - goto LABEL_144; - } - v85 = 0; - v74 = v63; - v80 = 0; -LABEL_3: - v104[0] = (const char *)std::string::_S_construct(0, 0); - if ( *((_BYTE *)v90 + 16) ) - std::string::reserve((int *)v104, (std::string *)0x20, v65); - v70 = *((_BYTE *)v90 + 164); - if ( !v70 ) - { - if ( !v74 ) - { - v75 = 0; - v71 = 0; -LABEL_8: - if ( (unsigned __int16)(lpuexcpt - 48) <= 9u ) - { - v86 = lpuexcpt; - v81 = *(_DWORD *)(*a6 - 12); - lpuexcpta = (struct _Unwind_Exception *)(v81 + 1); - if ( (unsigned int)(v81 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcpta, v65); - v6 = v86; - v85 = 1; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v6; - v7 = *a6; - *(_DWORD *)(v7 - 4) = 0; - *(_DWORD *)(v7 - 12) = lpuexcpta; - *(_BYTE *)(v7 + v81 + 1) = 0; - goto LABEL_13; - } - while ( 1 ) - { - if ( *((_WORD *)v90 + 18) == lpuexcpt && !((unsigned __int8)v75 | (unsigned __int8)v71) ) - { - v71 = 1; - std::string::push_back(a6, (std::string *)0x2E, v65); - v75 = 0; -LABEL_13: - v8 = (_DWORD *)a1; - v9 = *(_DWORD *)(a1 + 8); - if ( v9 >= *(_DWORD *)(a1 + 12) ) - goto LABEL_78; -LABEL_14: - v8[2] = v9 + 2; - WORD2(a1) = -1; -LABEL_15: - v10 = (__int16 *)v8[2]; - if ( (unsigned int)v10 >= v8[3] ) - v11 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - else - v11 = *v10; - lpuexcptb = 0; - if ( v11 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptb = 1; - } - goto LABEL_19; - } - if ( *((_WORD *)v90 + 74) != lpuexcpt && *((_WORD *)v90 + 80) != lpuexcpt ) - goto LABEL_21; - v85 &= v75 ^ 1; - if ( !v85 ) - goto LABEL_21; - std::string::push_back(a6, (std::string *)0x65, v65); - v27 = *(_DWORD *)(a1 + 8); - if ( v27 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v27 + 2; - WORD2(a1) = -1; - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - goto LABEL_200; - v28 = std::istreambuf_iterator::_M_get((int)&a1); - lpuexcpt = v28; - if ( *((_WORD *)v90 + 57) == v28 ) - { - v29 = 43; - } - else - { - if ( *((_WORD *)v90 + 56) != v28 ) - { - v75 = v85; - goto LABEL_8; - } - v29 = 45; - } - std::string::push_back(a6, (std::string *)v29, v65); - v8 = (_DWORD *)a1; - v75 = v85; - v9 = *(_DWORD *)(a1 + 8); - if ( v9 < *(_DWORD *)(a1 + 12) ) - goto LABEL_14; -LABEL_78: - (*(void (__fastcall **)(_DWORD *))(*v8 + 40))(v8); - v8 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_15; - lpuexcptb = 1; -LABEL_19: - v12 = a3 == -1; - v82 = v12 & (a2 != 0); - if ( v82 ) - { - v39 = (_WORD *)a2[2]; - v40 = (unsigned int)v39 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v39; - v12 = 0; - if ( v40 == -1 ) - { - a2 = 0; - v12 = v82; - } - } - if ( lpuexcptb == v12 ) - goto LABEL_21; - lpuexcpt = WORD2(a1); - if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) - goto LABEL_8; - v26 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v26 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v26; - if ( lpuexcpt != -1 ) - goto LABEL_8; - LODWORD(a1) = 0; - } - } -LABEL_203: - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - if ( *((_DWORD *)v104[0] - 3) ) - goto LABEL_25; - goto LABEL_28; - } - if ( v74 ) - goto LABEL_203; - v75 = 0; - v71 = 0; - v16 = *((_BYTE *)v90 + 16); - while ( 1 ) - { - if ( v16 && *((_WORD *)v90 + 19) == lpuexcpt ) - { - v71 |= v75; - if ( v71 ) - { - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - v36 = *((_DWORD *)v104[0] - 3); -LABEL_197: - if ( v36 ) - goto LABEL_26; - goto LABEL_28; - } - if ( !v80 ) - { - std::string::_M_mutate((char **)a6, 0, *(_DWORD *)(*a6 - 12), 0, v66); - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - if ( *((_DWORD *)v104[0] - 3) ) - goto LABEL_25; - goto LABEL_28; - } - v78 = (std::string *)*((_DWORD *)v104[0] - 3); - lpuexcpti = (std::string *)((char *)v78 + 1); - if ( (unsigned int)v78 + 1 > *((_DWORD *)v104[0] - 2) || *((int *)v104[0] - 1) > 0 ) - std::string::reserve((int *)v104, lpuexcpti, v65); - v41 = v80; - v80 = 0; - v104[0][*((_DWORD *)v104[0] - 3)] = v41; - v42 = v104[0]; - *((_DWORD *)v104[0] - 3) = lpuexcpti; - v43 = v78; - *((_DWORD *)v42 - 1) = 0; - v75 = 0; - *((_BYTE *)v43 + (_DWORD)v42 + 1) = 0; -LABEL_84: - v31 = (_DWORD *)a1; - v32 = *(_DWORD *)(a1 + 8); - if ( v32 < *(_DWORD *)(a1 + 12) ) - goto LABEL_85; - goto LABEL_105; - } - v17 = (char *)v90 + 120; - if ( *((_WORD *)v90 + 18) != lpuexcpt ) - { - do - { - if ( *(_WORD *)v17 == lpuexcpt ) - { - v87 = ((v17 - ((char *)v90 + 120)) >> 1) + 48; - v67 = *(_DWORD *)(*a6 - 12); - lpuexcptf = (struct _Unwind_Exception *)(v67 + 1); - if ( (unsigned int)(v67 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptf, v65); - ++v80; - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = v87; - v30 = *a6; - *(_DWORD *)(v30 - 12) = lpuexcptf; - *(_DWORD *)(v30 - 4) = 0; - *(_BYTE *)(v30 + v67 + 1) = 0; - v85 = v70; - goto LABEL_84; - } - v17 += 2; - } - while ( v17 != (char *)v90 + 140 ); - if ( *((_WORD *)v90 + 74) != lpuexcpt && *((_WORD *)v90 + 80) != lpuexcpt ) - break; - v18 = (((unsigned __int8)v75 ^ 1) & (unsigned __int8)v85) == 0; - v85 &= v75 ^ 1; - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - v13 = *((_DWORD *)v104[0] - 3); - if ( v18 ) - goto LABEL_22; - if ( v13 && !v71 ) - std::string::push_back((int *)v104, (std::string *)(char)v80, v65); - v76 = *(std::string **)(*a6 - 12); - lpuexcptd = (std::string *)((char *)v76 + 1); - if ( (unsigned int)v76 + 1 > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcptd, v65); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 101; - v19 = *a6; - *(_DWORD *)(v19 - 12) = lpuexcptd; - *(_DWORD *)(v19 - 4) = 0; - *((_BYTE *)v76 + v19 + 1) = 0; - v20 = (_DWORD *)a1; - v21 = *(_DWORD *)(a1 + 8); - if ( v21 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v20 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( (_DWORD)a1 ) - goto LABEL_49; - lpuexcpte = v85; - } - else - { - *(_DWORD *)(a1 + 8) = v21 + 2; - WORD2(a1) = -1; -LABEL_49: - v22 = (__int16 *)v20[2]; - if ( (unsigned int)v22 >= v20[3] ) - v23 = (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20); - else - v23 = *v22; - lpuexcpte = 0; - if ( v23 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpte = v85; - } - } - v24 = a3 == -1; - v77 = v24 & (a2 != 0); - if ( v77 ) - { - v48 = (_WORD *)a2[2]; - v49 = (unsigned int)v48 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v48; - v24 = 0; - if ( v49 == -1 ) - { - a2 = 0; - v24 = v77; - } - } - if ( v24 == lpuexcpte ) - { -LABEL_200: - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - if ( *((_DWORD *)v104[0] - 3) ) - goto LABEL_26; - goto LABEL_28; - } - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v50 = *(_WORD **)(a1 + 8); - lpuexcpt = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v50; - if ( lpuexcpt == -1 ) - LODWORD(a1) = 0; - } - v25 = *((_WORD *)v90 + 57); - v16 = *((_BYTE *)v90 + 16); - if ( v25 != lpuexcpt && *((_WORD *)v90 + 56) != lpuexcpt ) - goto LABEL_59; - if ( v16 && *((_WORD *)v90 + 19) == lpuexcpt ) - { - v75 = *((_BYTE *)v90 + 16); - v85 = v75; - continue; - } - if ( *((_WORD *)v90 + 18) == lpuexcpt ) - { -LABEL_59: - v75 = v85; - continue; - } - lpuexcptj = 2 * (v25 != lpuexcpt) + 43; - v69 = *(_DWORD *)(*a6 - 12); - v79 = (std::string *)(v69 + 1); - if ( (unsigned int)(v69 + 1) > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, v79, v65); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = lpuexcptj; - v44 = *a6; - *(_DWORD *)(v44 - 12) = v79; - *(_DWORD *)(v44 - 4) = 0; - *(_BYTE *)(v44 + v69 + 1) = 0; - v75 = v85; - goto LABEL_84; - } - v18 = ((unsigned __int8)v71 | (unsigned __int8)v75) == 0; - v75 |= v71; - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - v36 = *((_DWORD *)v104[0] - 3); - if ( !v18 ) - goto LABEL_197; - if ( v36 ) - { - v72 = (std::string *)(v36 + 1); - if ( (unsigned int)(v36 + 1) > *((_DWORD *)v104[0] - 2) || *((int *)v104[0] - 1) > 0 ) - std::string::reserve((int *)v104, v72, v65); - v104[0][*((_DWORD *)v104[0] - 3)] = v80; - v37 = v104[0]; - *((_DWORD *)v104[0] - 1) = 0; - *((_DWORD *)v37 - 3) = v72; - *((_BYTE *)v72 + (_DWORD)v37) = 0; - } - v73 = *(std::string **)(*a6 - 12); - lpuexcpth = (std::string *)((char *)v73 + 1); - if ( (unsigned int)v73 + 1 > *(_DWORD *)(*a6 - 8) || *(int *)(*a6 - 4) > 0 ) - std::string::reserve(a6, lpuexcpth, v65); - *(_BYTE *)(*a6 + *(_DWORD *)(*a6 - 12)) = 46; - v38 = *a6; - *(_DWORD *)(v38 - 12) = lpuexcpth; - *(_DWORD *)(v38 - 4) = 0; - *((_BYTE *)v73 + v38 + 1) = 0; - v31 = (_DWORD *)a1; - v71 = v70; - v32 = *(_DWORD *)(a1 + 8); - if ( v32 < *(_DWORD *)(a1 + 12) ) - { -LABEL_85: - v31[2] = v32 + 2; - WORD2(a1) = -1; - goto LABEL_86; - } -LABEL_105: - (*(void (__fastcall **)(_DWORD *))(*v31 + 40))(v31); - v31 = (_DWORD *)a1; - WORD2(a1) = -1; - if ( !(_DWORD)a1 ) - { - lpuexcptg = v70; - goto LABEL_90; - } -LABEL_86: - v33 = (__int16 *)v31[2]; - if ( (unsigned int)v33 >= v31[3] ) - v34 = (*(int (__fastcall **)(_DWORD *))(*v31 + 36))(v31); - else - v34 = *v33; - lpuexcptg = 0; - if ( v34 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptg = v70; - } -LABEL_90: - v35 = a3 == -1; - v68 = v35 & (a2 != 0); - if ( v68 ) - { - v45 = (_WORD *)a2[2]; - v46 = (unsigned int)v45 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v45; - v35 = 0; - if ( v46 == -1 ) - { - a2 = 0; - v35 = v68; - } - } - if ( lpuexcptg == v35 ) - break; - lpuexcpt = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v47 = *(__int16 **)(a1 + 8); - if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) - lpuexcpt = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - else - lpuexcpt = *v47; - v16 = *((_BYTE *)v90 + 16); - if ( lpuexcpt == -1 ) - LODWORD(a1) = 0; - } - else - { - v16 = *((_BYTE *)v90 + 16); - } - } -LABEL_21: - lpuexcptc = (struct _Unwind_Exception *)v104[0]; - v13 = *((_DWORD *)v104[0] - 3); -LABEL_22: - if ( !v13 ) - goto LABEL_28; - if ( v71 || v75 ) - goto LABEL_26; -LABEL_25: - std::string::push_back((int *)v104, (std::string *)(char)v80, v65); - lpuexcptc = (struct _Unwind_Exception *)v104[0]; -LABEL_26: - if ( !(unsigned __int8)std::__verify_grouping(*((char **)v90 + 2), *((_DWORD *)v90 + 3), v104) ) - *a5 = 4; -LABEL_28: - v91 = a1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)lpuexcptc - 1, 0xFFFFFFFF) > 0 ) - return v91; -LABEL_141: - std::string::_Rep::_M_destroy((char *)lpuexcptc - 12, (int)&v103); - return v91; - } - v14 = *((_DWORD *)lpuexcptc - 1); - *((_DWORD *)lpuexcptc - 1) = v14 - 1; - if ( v14 <= 0 ) - goto LABEL_141; - return v91; -} -// 483BA4: variable 'v65' is possibly undefined -// 483CC5: variable 'v64' is possibly undefined -// 484066: variable 'v66' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004840E0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(__int64, _DWORD *, __int16, int, _DWORD *, _DWORD *); // eax - int v8; // edi - int result; // eax - int v10; // ecx - int v11[8]; // [esp+4Ch] [ebp-20h] BYREF - - v7 = *(int (__stdcall **)(__int64, _DWORD *, __int16, int, _DWORD *, _DWORD *))(*(_DWORD *)this + 48); - if ( v7 != std::num_get>::do_get ) - return ((int (__fastcall *)(void *, _DWORD *, _DWORD, _DWORD, _DWORD *, int, int, _DWORD *, int *))v7)( - this, - a6, - a2, - HIDWORD(a2), - a3, - a4, - a5, - a6, - a7); - v8 = *(_DWORD *)(a5 + 12); - *(_DWORD *)(a5 + 12) = v8 & 0xFFFFFFB5 | 8; - result = std::num_get>::_M_extract_int( - a2, - a3, - a4, - a5, - a6, - v11); - v10 = v11[0]; - *(_DWORD *)(a5 + 12) = v8; - *a7 = v10; - return result; -} -// 4840E0: using guessed type int var_20[8]; - -//----- (004841B0) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); -} - -//----- (004841C0) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); -} - -//----- (004841D0) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); -} - -//----- (004841E0) -------------------------------------------------------- -int __fastcall std::num_get>::get(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); -} - -//----- (004841F0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 485100: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (00484270) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 485110: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004842F0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int( - a2, - a3, - a4, - a5, - a6, - a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 485120: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (00484370) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _WORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int( - a2, - a3, - a4, - a5, - a6, - a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 485130: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004843F0) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 485140: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (00484470) -------------------------------------------------------- -int __thiscall std::num_get>::get( - void *this, - __int64 a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7) -{ - int (__stdcall *v7)(int, int, int, int, int, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); - if ( v7 == std::num_get>::do_get ) - return std::num_get>::_M_extract_int( - a2, - a3, - a4, - a5, - a6, - a7); - else - return v7(a2, HIDWORD(a2), (int)a3, a4, a5, (int)a6, (int)a7); -} -// 485150: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); - -//----- (004844F0) -------------------------------------------------------- -int __stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - int v6; // edi - int result; // eax - int v8[8]; // [esp+3Ch] [ebp-20h] BYREF - - v6 = *(_DWORD *)(a4 + 12); - *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; - result = std::num_get>::_M_extract_int( - a1, - a2, - a3, - a4, - a5, - v8); - *(_DWORD *)(a4 + 12) = v6; - *a6 = v8[0]; - return result; -} -// 4844F0: using guessed type int var_20[8]; - -//----- (00484590) -------------------------------------------------------- -__int64 __stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - int *a5, - _BYTE *a6) -{ - _BYTE *v6; // edx - struct _Unwind_Exception *v8; // eax - int v9; // ecx - struct _Unwind_Exception *v10; // esi - int v11; // eax - bool v12; // dl - __int16 v13; // ax - unsigned int v14; // ebp - char v15; // di - unsigned int v16; // eax - bool v17; // cl - char v18; // si - char v19; // di - char v20; // al - char v21; // di - unsigned __int16 v22; // ax - __int16 *v23; // eax - __int16 v24; // cx - bool v25; // bl - struct _Unwind_Exception *v26; // esi - char v27; // dl - __int16 *v28; // eax - __int16 v29; // ax - unsigned __int16 *v30; // eax - int v31; // eax - __int16 v32; // ax - struct _Unwind_Exception *v33; // [esp+20h] [ebp-3Ch] - bool v34; // [esp+24h] [ebp-38h] - bool v35; // [esp+25h] [ebp-37h] - char v36; // [esp+26h] [ebp-36h] - bool v37; // [esp+27h] [ebp-35h] - bool v38; // [esp+27h] [ebp-35h] - bool v39; // [esp+27h] [ebp-35h] - __int64 v40; // [esp+28h] [ebp-34h] - int v41[8]; // [esp+3Ch] [ebp-20h] BYREF - - if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) - { - v41[0] = -1; - v40 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, v41); - LODWORD(a1) = v40; - WORD2(a1) = WORD2(v40); - if ( v41[0] > 1u ) - { - *a6 = 1; - *a5 = 4; - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - } - else - { - v6 = a6; - *a6 = v41[0]; - *v6 &= 1u; - } - return a1; - } - v8 = std::__use_cache>::operator()((int *)(a4 + 108)); - v9 = *((_DWORD *)v8 + 8); - v10 = v8; - v11 = *((_DWORD *)v8 + 6); - v12 = v9 == 0; - v35 = v11 == 0; - if ( !(v11 | v9) ) - goto LABEL_55; - v33 = v10; - v13 = WORD2(a1); - v14 = 0; - v36 = 1; - v34 = 1; - while ( 1 ) - { - v18 = v13 == -1; - v19 = v18 & ((_DWORD)a1 != 0); - if ( v19 ) - { - v28 = *(__int16 **)(a1 + 8); - if ( (unsigned int)v28 >= *(_DWORD *)(a1 + 12) ) - { - v38 = v12; - v29 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); - v12 = v38; - } - else - { - v29 = *v28; - } - v18 = 0; - if ( v29 == -1 ) - { - LODWORD(a1) = 0; - v18 = v19; - } - } - v20 = a3 == -1; - v21 = v20 & (a2 != 0); - if ( v21 ) - { - v23 = (__int16 *)a2[2]; - if ( (unsigned int)v23 >= a2[3] ) - { - v37 = v12; - v32 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v12 = v37; - v24 = v32; - } - else - { - v24 = *v23; - } - v20 = 0; - if ( v24 == -1 ) - break; - } - if ( v18 == v20 ) - goto LABEL_35; -LABEL_20: - v22 = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v30 = *(unsigned __int16 **)(a1 + 8); - if ( (unsigned int)v30 >= *(_DWORD *)(a1 + 12) ) - { - v39 = v12; - v22 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - v12 = v39; - } - else - { - v22 = *v30; - } - if ( v22 == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !v12 ) - v34 = *(_WORD *)(*((_DWORD *)v33 + 7) + 2 * v14) == v22; - if ( !v34 ) - { - if ( v35 ) - { - if ( v36 ) - { - if ( *((_DWORD *)v33 + 6) == v14 && v14 ) - { - *a6 = 1; - v31 = 0; -LABEL_68: - *a5 = v31; - return a1; - } -LABEL_55: - *a6 = 0; - goto LABEL_56; - } -LABEL_57: - *a6 = 0; - *a5 = 4; - return a1; - } -LABEL_8: - v36 = *(_WORD *)(*((_DWORD *)v33 + 5) + 2 * v14) == v22; - goto LABEL_9; - } - if ( !v35 ) - goto LABEL_8; -LABEL_9: - v15 = v12 & (v36 ^ 1); - if ( v15 ) - { - if ( v34 ) - { - if ( *((_DWORD *)v33 + 8) == v14 && v14 ) - { - *a6 = 0; - v31 = 0; - goto LABEL_68; - } - goto LABEL_55; - } - goto LABEL_57; - } - if ( !(v34 | (unsigned __int8)v36) ) - goto LABEL_57; - ++v14; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 >= *(_DWORD *)(a1 + 12) ) - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - else - *(_DWORD *)(a1 + 8) = v16 + 2; - WORD2(a1) = -1; - if ( !v34 ) - { - v12 = v36; -LABEL_30: - v35 = *((_DWORD *)v33 + 6) <= v14; - v36 |= v34; - v17 = v12 && v35; - goto LABEL_16; - } - v12 = *((_DWORD *)v33 + 8) <= v14; - if ( v36 ) - goto LABEL_30; - v17 = *((_DWORD *)v33 + 8) <= v14; - v35 = v34; -LABEL_16: - v13 = -1; - if ( v17 ) - { - v25 = v34; - v26 = v33; - v27 = v15; - goto LABEL_36; - } - } - a2 = 0; - if ( v18 != v21 ) - goto LABEL_20; -LABEL_35: - v25 = v34; - v26 = v33; - v27 = 1; -LABEL_36: - if ( v25 && *((_DWORD *)v26 + 8) == v14 && v14 ) - { - *a6 = 0; - if ( !v36 || *((_DWORD *)v26 + 6) != v14 ) - goto LABEL_71; -LABEL_56: - *a5 = 4; - return a1; - } - if ( v36 && *((_DWORD *)v26 + 6) == v14 && v14 ) - { - *a6 = 1; -LABEL_71: - v31 = 2 * (v27 != 0); - goto LABEL_68; - } - *a6 = 0; - if ( !v27 ) - goto LABEL_56; - *a5 = 6; - return a1; -} -// 484590: using guessed type unsigned int var_20[8]; - -//----- (00484A10) -------------------------------------------------------- -std::locale::facet *__stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - double *a6) -{ - __int64 v6; // rax - char v7; // dl - int v8; // ecx - int v9; // eax - __int16 *v11; // eax - __int16 v12; // ax - __int16 *v13; // eax - __int16 v14; // ax - unsigned __int8 v15; // dl - bool v16; // zf - std::locale::facet *v17; // eax - unsigned int v18; // [esp+4h] [ebp-94h] - std::locale::facet *v19; // [esp+30h] [ebp-68h] - std::locale::facet *v20; // [esp+38h] [ebp-60h] - __int16 lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int8 lpuexcpt; // [esp+40h] [ebp-58h] - int v23; // [esp+88h] [ebp-10h] BYREF - int v24[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v23 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v23, (std::string *)0x20, v18); - v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v23); - lpuexcpta = WORD2(v6); - v20 = (std::locale::facet *)v6; - v19 = (std::locale::facet *)v6; - v24[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((unsigned __int8 *)v23, a6, a5); - lpuexcpt = lpuexcpta == -1; - if ( (lpuexcpt & (v19 != 0)) != 0 ) - { - v13 = (__int16 *)*((_DWORD *)v20 + 2); - if ( (unsigned int)v13 >= *((_DWORD *)v20 + 3) ) - v14 = (*(int (__fastcall **)(std::locale::facet *))(*(_DWORD *)v20 + 36))(v20); - else - v14 = *v13; - v15 = lpuexcpt & (v20 != 0); - v16 = v14 == -1; - if ( v14 != -1 ) - v15 = 0; - v17 = 0; - if ( !v16 ) - v17 = v20; - lpuexcpt = v15; - v19 = v17; - } - v7 = a3 == -1; - if ( a2 && a3 == -1 ) - { - v11 = (__int16 *)a2[2]; - if ( (unsigned int)v11 >= a2[3] ) - v12 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v12 = *v11; - v7 = v12 == -1; - } - if ( lpuexcpt == v7 ) - *a5 |= 2u; - v8 = v23; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) - return v19; -LABEL_10: - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)v24); - return v19; - } - v9 = *(_DWORD *)(v23 - 4); - *(_DWORD *)(v23 - 4) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_10; - return v19; -} -// 484A90: variable 'v18' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 484A10: using guessed type int var_C[3]; - -//----- (00484C60) -------------------------------------------------------- -std::locale::facet *__stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - long double *a6) -{ - __int64 v6; // rax - char v7; // dl - char *v8; // ecx - int v9; // eax - __int16 *v11; // eax - __int16 v12; // ax - __int16 *v13; // eax - __int16 v14; // ax - unsigned __int8 v15; // dl - bool v16; // zf - std::locale::facet *v17; // eax - unsigned int v18; // [esp+4h] [ebp-94h] - std::locale::facet *v19; // [esp+30h] [ebp-68h] - std::locale::facet *v20; // [esp+38h] [ebp-60h] - __int16 lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int8 lpuexcpt; // [esp+40h] [ebp-58h] - char *String; // [esp+88h] [ebp-10h] BYREF - int v24[3]; // [esp+8Ch] [ebp-Ch] BYREF - - String = (char *)std::string::_S_construct(0, 0); - std::string::reserve((int *)&String, (std::string *)0x20, v18); - v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (int *)&String); - lpuexcpta = WORD2(v6); - v20 = (std::locale::facet *)v6; - v19 = (std::locale::facet *)v6; - v24[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v(String, a6, a5); - lpuexcpt = lpuexcpta == -1; - if ( (lpuexcpt & (v19 != 0)) != 0 ) - { - v13 = (__int16 *)*((_DWORD *)v20 + 2); - if ( (unsigned int)v13 >= *((_DWORD *)v20 + 3) ) - v14 = (*(int (__fastcall **)(std::locale::facet *))(*(_DWORD *)v20 + 36))(v20); - else - v14 = *v13; - v15 = lpuexcpt & (v20 != 0); - v16 = v14 == -1; - if ( v14 != -1 ) - v15 = 0; - v17 = 0; - if ( !v16 ) - v17 = v20; - lpuexcpt = v15; - v19 = v17; - } - v7 = a3 == -1; - if ( a2 && a3 == -1 ) - { - v11 = (__int16 *)a2[2]; - if ( (unsigned int)v11 >= a2[3] ) - v12 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v12 = *v11; - v7 = v12 == -1; - } - if ( lpuexcpt == v7 ) - *a5 |= 2u; - v8 = String; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) - return v19; -LABEL_10: - std::string::_Rep::_M_destroy(v8 - 12, (int)v24); - return v19; - } - v9 = *((_DWORD *)String - 1); - *((_DWORD *)String - 1) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_10; - return v19; -} -// 484CE0: variable 'v18' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 484C60: using guessed type int var_C[3]; - -//----- (00484EB0) -------------------------------------------------------- -std::locale::facet *__stdcall std::num_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - float *a6) -{ - __int64 v6; // rax - char v7; // dl - int v8; // ecx - int v9; // eax - __int16 *v11; // eax - __int16 v12; // ax - __int16 *v13; // eax - __int16 v14; // ax - unsigned __int8 v15; // dl - bool v16; // zf - std::locale::facet *v17; // eax - unsigned int v18; // [esp+4h] [ebp-94h] - std::locale::facet *v19; // [esp+30h] [ebp-68h] - std::locale::facet *v20; // [esp+38h] [ebp-60h] - __int16 lpuexcpta; // [esp+40h] [ebp-58h] - unsigned __int8 lpuexcpt; // [esp+40h] [ebp-58h] - int v23; // [esp+88h] [ebp-10h] BYREF - int v24[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v23 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v23, (std::string *)0x20, v18); - v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, &v23); - lpuexcpta = WORD2(v6); - v20 = (std::locale::facet *)v6; - v19 = (std::locale::facet *)v6; - v24[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v((unsigned __int8 *)v23, a6, a5); - lpuexcpt = lpuexcpta == -1; - if ( (lpuexcpt & (v19 != 0)) != 0 ) - { - v13 = (__int16 *)*((_DWORD *)v20 + 2); - if ( (unsigned int)v13 >= *((_DWORD *)v20 + 3) ) - v14 = (*(int (__fastcall **)(std::locale::facet *))(*(_DWORD *)v20 + 36))(v20); - else - v14 = *v13; - v15 = lpuexcpt & (v20 != 0); - v16 = v14 == -1; - if ( v14 != -1 ) - v15 = 0; - v17 = 0; - if ( !v16 ) - v17 = v20; - lpuexcpt = v15; - v19 = v17; - } - v7 = a3 == -1; - if ( a2 && a3 == -1 ) - { - v11 = (__int16 *)a2[2]; - if ( (unsigned int)v11 >= a2[3] ) - v12 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v12 = *v11; - v7 = v12 == -1; - } - if ( lpuexcpt == v7 ) - *a5 |= 2u; - v8 = v23; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) - return v19; -LABEL_10: - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)v24); - return v19; - } - v9 = *(_DWORD *)(v23 - 4); - *(_DWORD *)(v23 - 4) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_10; - return v19; -} -// 484F30: variable 'v18' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 484EB0: using guessed type int var_C[3]; - -//----- (00485160) -------------------------------------------------------- -_BYTE *__stdcall std::num_put>::_M_group_int( - char *a1, - int a2, - char a3, - int a4, - _BYTE *a5, - _BYTE *a6, - _DWORD *a7) -{ - _BYTE *result; // eax - - result = (_BYTE *)(std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5); - *a7 = result; - return result; -} - -//----- (004851B0) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - int *a3, - int a4, - int a5) -{ - struct _Unwind_Exception *v5; // esi - void *v6; // esp - void *v7; // esp - unsigned int v8; // eax - int v9; // eax - int v10; // ebx - char *v11; // edx - int v12; // esi - int v14; // eax - void *v15; // esp - void *v16; // esp - int v17; // eax - void *v18; // esp - void *v19; // esp - char *v20; // eax - _BYTE *v21; // eax - char v22; // al - int v23; // [esp-14h] [ebp-7Ch] - int v24; // [esp-Ch] [ebp-74h] - char v25[2]; // [esp+0h] [ebp-68h] BYREF - char v26[18]; // [esp+2h] [ebp-66h] BYREF - char v27[20]; // [esp+14h] [ebp-54h] BYREF - unsigned int v28; // [esp+28h] [ebp-40h] - int v29; // [esp+2Ch] [ebp-3Ch] - char *v30; // [esp+30h] [ebp-38h] - int v31; // [esp+34h] [ebp-34h] - unsigned int v32; // [esp+38h] [ebp-30h] - char *v33; // [esp+3Ch] [ebp-2Ch] - - v31 = a2; - v29 = a4; - v5 = std::__use_cache>::operator()(a3 + 27); - v33 = (char *)v5 + 38; - v32 = a3[3]; - v6 = alloca(32); - v7 = alloca(32); - v28 = v32 & 0x4A; - v8 = a5; - LOBYTE(v33) = v28 != 8 && v28 != 64; - if ( a5 <= 0 ) - { - v8 = -a5; - if ( v28 == 8 || v28 == 64 ) - v8 = a5; - } - v30 = v25; - v9 = (int)std::__int_to_char(v27, v8, (int)v5 + 38, v32, (char)v33); - v10 = v9; - v11 = &v30[-v9 + 20]; - if ( !*((_BYTE *)v5 + 16) ) - { - if ( (_BYTE)v33 ) - goto LABEL_6; -LABEL_16: - if ( (v32 & 0x200) != 0 && a5 ) - { - if ( v28 == 64 ) - { - v22 = *((_BYTE *)v5 + 42); - ++v10; - --v11; - } - else - { - v10 += 2; - v11 -= 2; - v11[1] = *((_BYTE *)v5 + ((v32 >> 14) & 1) + 40); - v22 = *((_BYTE *)v5 + 42); - } - *v11 = v22; - } - goto LABEL_8; - } - v17 = 16 * ((unsigned int)(2 * v9 + 29) >> 4); - v18 = alloca(v17); - v19 = alloca(v17); - v23 = *((_DWORD *)v5 + 3); - v20 = (char *)*((_DWORD *)v5 + 2); - v30 = v26; - v21 = std::__add_grouping(v26, *((_BYTE *)v5 + 37), v20, v23, v11, &v11[v10]); - v11 = v30; - v10 = v21 - v30; - if ( !(_BYTE)v33 ) - goto LABEL_16; -LABEL_6: - if ( a5 < 0 ) - { - ++v10; - *--v11 = *((_BYTE *)v5 + 38); - } - else if ( (v32 & 0x800) != 0 ) - { - ++v10; - *--v11 = *((_BYTE *)v5 + 39); - v12 = a3[2]; - if ( v12 <= v10 ) - goto LABEL_9; - goto LABEL_13; - } -LABEL_8: - v12 = a3[2]; - if ( v12 <= v10 ) - goto LABEL_9; -LABEL_13: - v14 = 16 * ((unsigned int)(v12 + 27) >> 4); - v15 = alloca(v14); - v16 = alloca(v14); - v24 = v10; - v10 = v12; - v33 = v25; - std::__pad>::_S_pad(a3, (void *)(char)v29, v25, v11, v12, v24); - v11 = v33; -LABEL_9: - a3[2] = 0; - if ( !(_BYTE)v31 ) - (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)a1 + 48))(a1, v11, v10); - return a1; -} -// 4851B0: using guessed type char anonymous_0[20]; - -//----- (00485400) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5) -{ - unsigned int v5; // ecx - void *v6; // esp - void *v7; // esp - struct _Unwind_Exception *v8; // edx - int v9; // eax - char v10; // bl - struct _Unwind_Exception *v11; // eax - char v12; // si - int v14; // eax - void *v15; // esp - void *v16; // esp - int v17; // eax - _BYTE *v18; // eax - int v19; // esi - int v20; // eax - void *v21; // esp - void *v22; // esp - _DWORD *v23; // eax - char v24[2]; // [esp+0h] [ebp-88h] BYREF - _BYTE v25[6]; // [esp+2h] [ebp-86h] BYREF - unsigned int v26; // [esp+8h] [ebp-80h] - char v27[16]; // [esp+14h] [ebp-74h] BYREF - int v28; // [esp+24h] [ebp-64h] - unsigned int v29; // [esp+28h] [ebp-60h] - unsigned int v30; // [esp+2Ch] [ebp-5Ch] - int v31; // [esp+30h] [ebp-58h] - int v32; // [esp+34h] [ebp-54h] - std::locale::_Impl *v33; // [esp+38h] [ebp-50h] - int *v34; // [esp+3Ch] [ebp-4Ch] - int v35; // [esp+40h] [ebp-48h] - int v36; // [esp+44h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-40h] - - v35 = a1; - v32 = a2; - v31 = a4; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v34 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v36 = *v34; - if ( !v36 ) - { - v23 = operator new(0x68u); - v23[1] = 0; - *v23 = &off_51AF60; - v23[2] = 0; - v23[3] = 0; - *((_BYTE *)v23 + 16) = 0; - v23[5] = 0; - v23[6] = 0; - v23[7] = 0; - v23[8] = 0; - *((_WORD *)v23 + 18) = 0; - *((_BYTE *)v23 + 100) = 0; - v33 = (std::locale::_Impl *)v23; - std::__numpunct_cache::_M_cache((int)v23, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v33, lpuexcpt, v26); - v36 = *v34; - } - v5 = a3[3]; - v28 = v36 + 38; - v30 = v5; - v6 = alloca(32); - v7 = alloca(32); - v33 = (std::locale::_Impl *)v24; - v29 = v5 & 0x4A; - LOBYTE(v34) = v29 != 8 && v29 != 64; - lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char(v27, a5, v36 + 38, v5, (char)v34); - v8 = (struct _Unwind_Exception *)(v33 - lpuexcpt + 20); - if ( *(_BYTE *)(v36 + 16) ) - { - v14 = 16 * ((unsigned int)(2 * (_DWORD)lpuexcpt + 29) >> 4); - v15 = alloca(v14); - v16 = alloca(v14); - v17 = *(_DWORD *)(v36 + 12); - lpuexcpt = (struct _Unwind_Exception *)v25; - v18 = std::__add_grouping(v25, *(_BYTE *)(v36 + 37), *(char **)(v36 + 8), v17, v8, (_BYTE *)v33 + 20); - v8 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)(v18 - (_BYTE *)lpuexcpt); - if ( (_BYTE)v34 ) - goto LABEL_5; - } - else if ( (_BYTE)v34 ) - { - goto LABEL_5; - } - if ( (v30 & 0x200) != 0 && a5 ) - { - if ( v29 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v8 = (struct _Unwind_Exception *)((char *)v8 - 1); - } - else - { - v8 = (struct _Unwind_Exception *)((char *)v8 - 2); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_BYTE *)v8 + 1) = *(_BYTE *)(v28 + ((v30 >> 14) & 1) + 2); - } - *(_BYTE *)v8 = *(_BYTE *)(v36 + 42); - } -LABEL_5: - v9 = a3[2]; - v36 = v9; - if ( v9 > (int)lpuexcpt ) - { - v19 = v9; - v20 = 16 * ((unsigned int)(v9 + 27) >> 4); - v21 = alloca(v20); - v22 = alloca(v20); - v34 = (int *)v24; - std::__pad>::_S_pad(a3, (void *)(char)v31, v24, (char *)v8, v19, (int)lpuexcpt); - v8 = (struct _Unwind_Exception *)v34; - lpuexcpt = (struct _Unwind_Exception *)v36; - } - v10 = v32; - a3[2] = 0; - LOBYTE(v36) = v10; - if ( !v10 ) - { - v11 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v35 + 48))( - v35, - v8, - lpuexcpt); - v12 = v36; - if ( lpuexcpt != v11 ) - v12 = 1; - LOBYTE(v36) = v12; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v36; - return v35; -} -// 50C688: using guessed type signed __int32 std::numpunct::id; -// 51AF60: using guessed type int (*off_51AF60)(); -// 485400: using guessed type char anonymous_1[16]; - -//----- (004857A0) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - int *a3, - int a4, - __int64 a5) -{ - struct _Unwind_Exception *v5; // edi - void *v6; // esp - void *v7; // esp - __int64 v8; // rax - int v9; // eax - char *v10; // esi - int v11; // ebx - char *v12; // edx - int v13; // esi - int v15; // eax - void *v16; // esp - void *v17; // esp - int v18; // eax - void *v19; // esp - void *v20; // esp - _BYTE *v21; // eax - char v22; // al - int v23; // [esp-2Ch] [ebp-94h] - char v24[2]; // [esp-20h] [ebp-88h] BYREF - char v25[38]; // [esp-1Eh] [ebp-86h] BYREF - char v26[24]; // [esp+8h] [ebp-60h] BYREF - unsigned int v27; // [esp+20h] [ebp-48h] - int v28; // [esp+24h] [ebp-44h] - int v29; // [esp+28h] [ebp-40h] - unsigned int v30; // [esp+2Ch] [ebp-3Ch] - int v31; // [esp+30h] [ebp-38h] - int v32; // [esp+34h] [ebp-34h] - __int64 v33; // [esp+38h] [ebp-30h] - - v31 = a1; - v29 = a2; - v28 = a4; - v33 = a5; - v5 = std::__use_cache>::operator()(a3 + 27); - v32 = (int)v5 + 38; - v30 = a3[3]; - v6 = alloca(64); - v7 = alloca(64); - v27 = v30 & 0x4A; - v8 = a5; - LOBYTE(v32) = v27 != 8 && v27 != 64; - if ( ((HIDWORD(a5) | ((unsigned __int64)(a5 - 1) >> 32)) & 0x80000000) != 0LL && (_BYTE)v32 ) - v8 = -a5; - v9 = (int)std::__int_to_char(v26, v8, HIDWORD(v8), (int)v5 + 38, v30, v32); - v10 = &v24[-v9]; - v11 = v9; - v12 = &v24[-v9 + 40]; - if ( !*((_BYTE *)v5 + 16) ) - { - if ( (_BYTE)v32 ) - goto LABEL_6; -LABEL_16: - if ( (v30 & 0x200) != 0 && v33 ) - { - if ( v27 == 64 ) - { - v22 = *((_BYTE *)v5 + 42); - ++v11; - --v12; - } - else - { - v11 += 2; - v12 -= 2; - v12[1] = *((_BYTE *)v5 + ((v30 >> 14) & 1) + 40); - v22 = *((_BYTE *)v5 + 42); - } - *v12 = v22; - } - goto LABEL_8; - } - v18 = 16 * ((unsigned int)(2 * v9 + 29) >> 4); - v19 = alloca(v18); - v20 = alloca(v18); - v21 = std::__add_grouping( - v25, - *((_BYTE *)v5 + 37), - *((char **)v5 + 2), - *((_DWORD *)v5 + 3), - v10 + 40, - &v12[v11]); - v12 = v25; - v11 = v21 - v25; - if ( !(_BYTE)v32 ) - goto LABEL_16; -LABEL_6: - if ( v33 < 0 ) - { - ++v11; - *--v12 = *((_BYTE *)v5 + 38); - } - else if ( (v30 & 0x800) != 0 ) - { - ++v11; - *--v12 = *((_BYTE *)v5 + 39); - v13 = a3[2]; - if ( v13 <= v11 ) - goto LABEL_9; - goto LABEL_13; - } -LABEL_8: - v13 = a3[2]; - if ( v13 <= v11 ) - goto LABEL_9; -LABEL_13: - v15 = 16 * ((unsigned int)(v13 + 27) >> 4); - v16 = alloca(v15); - v17 = alloca(v15); - v23 = v11; - v11 = v13; - std::__pad>::_S_pad(a3, (void *)(char)v28, v24, v12, v13, v23); - v12 = v24; -LABEL_9: - a3[2] = 0; - if ( !(_BYTE)v29 ) - (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v31 + 48))(v31, v12, v11); - return v31; -} -// 4857A0: using guessed type char anonymous_0[24]; - -//----- (00485A00) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6) -{ - unsigned int v6; // ecx - void *v7; // esp - void *v8; // esp - int v9; // ebx - char *v10; // edx - int v11; // eax - char v12; // bl - struct _Unwind_Exception *v13; // eax - char v14; // si - int v16; // eax - void *v17; // esp - void *v18; // esp - int v19; // eax - _BYTE *v20; // eax - int v21; // ebx - int v22; // eax - void *v23; // esp - void *v24; // esp - _DWORD *v25; // eax - char v26[2]; // [esp-20h] [ebp-B8h] BYREF - _BYTE v27[38]; // [esp-1Eh] [ebp-B6h] BYREF - int v28[9]; // [esp+8h] [ebp-90h] BYREF - int v29; // [esp+2Ch] [ebp-6Ch] - unsigned int v30; // [esp+30h] [ebp-68h] - unsigned int v31; // [esp+34h] [ebp-64h] - int v32; // [esp+38h] [ebp-60h] - int v33; // [esp+3Ch] [ebp-5Ch] - std::locale::_Impl *v34; // [esp+40h] [ebp-58h] - int *v35; // [esp+44h] [ebp-54h] - unsigned __int64 v36; // [esp+48h] [ebp-50h] - int v37; // [esp+50h] [ebp-48h] - int v38; // [esp+54h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-40h] - - v37 = a1; - v33 = a2; - v32 = a4; - v36 = __PAIR64__(a5, a6); - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v35 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v38 = *v35; - if ( !v38 ) - { - v25 = operator new(0x68u); - v25[1] = 0; - *v25 = &off_51AF60; - v25[2] = 0; - v25[3] = 0; - *((_BYTE *)v25 + 16) = 0; - v25[5] = 0; - v25[6] = 0; - v25[7] = 0; - v25[8] = 0; - *((_WORD *)v25 + 18) = 0; - *((_BYTE *)v25 + 100) = 0; - v34 = (std::locale::_Impl *)v25; - std::__numpunct_cache::_M_cache((int)v25, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v34, lpuexcpt, v28[0]); - v38 = *v35; - } - v6 = a3[3]; - v29 = v38 + 38; - v31 = v6; - v7 = alloca(64); - v8 = alloca(64); - v34 = (std::locale::_Impl *)v26; - v30 = v6 & 0x4A; - LOBYTE(v35) = v30 != 8 && v30 != 64; - lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char( - v28, - HIDWORD(v36), - v36, - v38 + 38, - v6, - (char)v35); - v9 = v34 - lpuexcpt; - v10 = (char *)(v34 - lpuexcpt + 40); - if ( *(_BYTE *)(v38 + 16) ) - { - v16 = 16 * ((unsigned int)(2 * (_DWORD)lpuexcpt + 29) >> 4); - v17 = alloca(v16); - v18 = alloca(v16); - v19 = *(_DWORD *)(v38 + 12); - lpuexcpt = (struct _Unwind_Exception *)v27; - v20 = std::__add_grouping( - v27, - *(_BYTE *)(v38 + 37), - *(char **)(v38 + 8), - v19, - (_BYTE *)(v9 + 40), - (_BYTE *)v34 + 40); - v10 = (char *)lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)(v20 - (_BYTE *)lpuexcpt); - if ( (_BYTE)v35 ) - goto LABEL_5; - } - else if ( (_BYTE)v35 ) - { - goto LABEL_5; - } - if ( (v31 & 0x200) != 0 && v36 ) - { - if ( v30 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - --v10; - } - else - { - v10 -= 2; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - v10[1] = *(_BYTE *)(v29 + ((v31 >> 14) & 1) + 2); - } - *v10 = *(_BYTE *)(v38 + 42); - } -LABEL_5: - v11 = a3[2]; - v38 = v11; - if ( v11 > (int)lpuexcpt ) - { - v21 = v11; - v22 = 16 * ((unsigned int)(v11 + 27) >> 4); - v23 = alloca(v22); - v24 = alloca(v22); - HIDWORD(v36) = v26; - std::__pad>::_S_pad(a3, (void *)(char)v32, v26, v10, v21, (int)lpuexcpt); - v10 = (char *)HIDWORD(v36); - lpuexcpt = (struct _Unwind_Exception *)v38; - } - v12 = v33; - a3[2] = 0; - LOBYTE(v38) = v12; - if ( !v12 ) - { - v13 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, char *, struct _Unwind_Exception *))(*(_DWORD *)v37 + 48))( - v37, - v10, - lpuexcpt); - v14 = v38; - if ( lpuexcpt != v13 ) - v14 = 1; - LOBYTE(v38) = v14; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v38; - return v37; -} -// 50C688: using guessed type signed __int32 std::numpunct::id; -// 51AF60: using guessed type int (*off_51AF60)(); -// 485A00: using guessed type unsigned int anonymous_0[9]; - -//----- (00485DC0) -------------------------------------------------------- -_BYTE *__stdcall std::num_put>::_M_group_float( - char *a1, - int a2, - char a3, - char *Src, - int a5, - _BYTE *a6, - _DWORD *a7) -{ - int v7; // ebp - _BYTE *v8; // ecx - int v9; // eax - _BYTE *v10; // edx - _BYTE *result; // eax - _BYTE *v12; // [esp+2Ch] [ebp-20h] - - if ( Src ) - { - v7 = Src - a6; - v8 = std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, Src); - v9 = 0; - v10 = &v8[-a5]; - if ( *a7 != Src - a6 ) - { - v12 = &v8[-a5]; - memcpy(v8, Src, *a7 - v7); - v10 = v12; - v9 = *a7 - v7; - } - result = &v10[v9]; - *a7 = result; - } - else - { - result = &std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, &a6[*a7])[-a5]; - *a7 = result; - } - return result; -} - -//----- (00485E90) -------------------------------------------------------- -int __thiscall std::num_put>::_M_insert_float( - void *this, - int a2, - int a3, - int *a4, - int a5, - char a6, - double a7) -{ - int v7; // ebx - void *v8; // esp - void *v9; // esp - int v10; // eax - _BYTE *v11; // eax - int v12; // ebx - _BYTE *v13; // esi - int v14; // eax - void *v15; // esp - char v16; // dl - void *v17; // esp - char *v18; // eax - void (__thiscall *v19)(_BYTE *, char *, char *, void *); // edx - char *v20; // eax - char *v21; // edx - struct _Unwind_Exception *v22; // ecx - int v23; // esi - int v25; // eax - void *v26; // esp - void *v27; // esp - int v28; // eax - void *v29; // esp - void *v30; // esp - char *v31; // ecx - int v32; // ebx - int v33; // eax - void *v34; // esp - void *v35; // esp - int v36; // eax - int v37; // eax - void *v38; // esp - void *v39; // esp - int v40; // [esp-2Ch] [ebp-B4h] - char v41; // [esp-20h] [ebp-A8h] BYREF - _BYTE v42[71]; // [esp-1Fh] [ebp-A7h] BYREF - char *v43; // [esp+28h] [ebp-60h] - int v44; // [esp+2Ch] [ebp-5Ch] - void *v45; // [esp+30h] [ebp-58h] - int v46; // [esp+34h] [ebp-54h] - size_t Size; // [esp+38h] [ebp-50h] - struct _Unwind_Exception *v48; // [esp+3Ch] [ebp-4Ch] - void *v49; // [esp+40h] [ebp-48h] - int v50; // [esp+44h] [ebp-44h] - int v51[2]; // [esp+48h] [ebp-40h] - size_t MaxCount; // [esp+58h] [ebp-30h] BYREF - int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF - char v54[40]; // [esp+60h] [ebp-28h] BYREF - - v45 = this; - v50 = a2; - *(double *)v51 = a7; - v46 = a3; - v44 = a5; - v49 = a4 + 27; - v48 = std::__use_cache>::operator()(a4 + 27); - v7 = a4[1]; - if ( v7 < 0 ) - v7 = 6; - std::__num_base::_S_format_float((std::__num_base *)a4, (const std::ios_base *)v54, (char *)a6); - v8 = alloca(64); - v9 = alloca(64); - if ( (a4[3] & 0x104) == 260 ) - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v36 = std::__convert_from_v(&c_locale, &v41, 45, v54, v51[0], v51[1]); - MaxCount = v36; - if ( v36 > 44 ) - { - Size = v36 + 1; - v37 = 16 * ((unsigned int)(v36 + 28) >> 4); - v38 = alloca(v37); - v39 = alloca(v37); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, &v41, Size, v54, v51[0], v51[1]); - } - } - else - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v10 = std::__convert_from_v(&c_locale, &v41, 45, v54, v7, v51[0], v51[1]); - MaxCount = v10; - if ( v10 > 44 ) - { - Size = v10 + 1; - v25 = 16 * ((unsigned int)(v10 + 28) >> 4); - v26 = alloca(v25); - v27 = alloca(v25); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, &v41, Size, v54, v7, v51[0], v51[1]); - } - } - v11 = std::use_facet>((int)v49); - v12 = MaxCount; - v13 = v11; - Size = MaxCount; - v14 = 16 * ((MaxCount + 27) >> 4); - v15 = alloca(v14); - v16 = v13[28]; - v17 = alloca(v14); - v49 = &v41; - v51[0] = (int)&v41; - v18 = &v42[MaxCount - 1]; - if ( v16 != 1 ) - { - if ( v16 ) - { - v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v19 == (char *)std::ctype::do_widen ) - goto LABEL_9; - } - else - { - v43 = &v42[MaxCount - 1]; - std::ctype::_M_widen_init((int)v13); - v18 = v43; - v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v19 == (char *)std::ctype::do_widen ) - { -LABEL_9: - v12 = MaxCount; - if ( v18 != &v41 ) - memcpy(v49, &v41, Size); - goto LABEL_11; - } - } - v19(v13, &v41, v18, v49); - v12 = MaxCount; - goto LABEL_11; - } - if ( v18 != &v41 ) - memcpy(v49, &v41, MaxCount); -LABEL_11: - if ( !v12 ) - { - if ( *((_BYTE *)v48 + 16) ) - { - v21 = 0; - goto LABEL_20; - } -LABEL_14: - v23 = a4[2]; - if ( v23 <= v12 ) - goto LABEL_15; - goto LABEL_23; - } - v20 = (char *)memchr(&v41, 46, v12); - v21 = v20; - if ( !v20 ) - { - if ( *((_BYTE *)v48 + 16) && (v12 <= 2 || v42[0] <= 57 && (unsigned __int8)(v42[1] - 48) <= 9u && v42[0] > 47) ) - goto LABEL_20; - goto LABEL_14; - } - v22 = v48; - v21 = (char *)v49 + v20 - &v41; - *v21 = *((_BYTE *)v48 + 36); - if ( !*((_BYTE *)v22 + 16) ) - goto LABEL_14; -LABEL_20: - v28 = 16 * ((unsigned int)(2 * v12 + 27) >> 4); - v29 = alloca(v28); - v30 = alloca(v28); - if ( ((v41 - 43) & 0xFD) != 0 ) - { - v31 = &v41; - v32 = 0; - } - else - { - v31 = v42; - MaxCount = v12 - 1; - v32 = 1; - v41 = *(_BYTE *)v49; - v51[0] = (int)v49 + 1; - } - std::num_put>::_M_group_float( - *((char **)v48 + 2), - *((_DWORD *)v48 + 3), - *((_BYTE *)v48 + 37), - v21, - (int)v31, - (_BYTE *)v51[0], - &MaxCount); - v12 = MaxCount + v32; - v51[0] = (int)&v41; - MaxCount = v12; - v23 = a4[2]; - if ( v23 <= v12 ) - goto LABEL_15; -LABEL_23: - v33 = 16 * ((unsigned int)(v23 + 27) >> 4); - v34 = alloca(v33); - v35 = alloca(v33); - v40 = v12; - v12 = v23; - std::__pad>::_S_pad(a4, (void *)(char)v44, &v41, (char *)v51[0], v23, v40); - MaxCount = v23; - v51[0] = (int)&v41; -LABEL_15: - a4[2] = 0; - if ( !(_BYTE)v46 ) - (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v50 + 48))(v50, v51[0], v12); - return v50; -} - -//----- (004862F0) -------------------------------------------------------- -int __thiscall std::num_put>::_M_insert_float( - void *this, - int a2, - int a3, - int *a4, - int a5, - char a6, - long double a7) -{ - int v7; // ebx - void *v8; // esp - void *v9; // esp - int v10; // eax - _BYTE *v11; // eax - int v12; // ebx - _BYTE *v13; // esi - int v14; // eax - void *v15; // esp - char v16; // dl - void *v17; // esp - char *v18; // eax - void (__thiscall *v19)(_BYTE *, char *, char *, void *); // edx - char *v20; // eax - char *v21; // edx - struct _Unwind_Exception *v22; // ecx - int v23; // esi - int v25; // eax - void *v26; // esp - void *v27; // esp - int v28; // eax - void *v29; // esp - void *v30; // esp - char *v31; // ecx - int v32; // ebx - int v33; // eax - void *v34; // esp - void *v35; // esp - int v36; // eax - int v37; // eax - void *v38; // esp - void *v39; // esp - int v44; // [esp-3Ch] [ebp-C4h] - char v45; // [esp-30h] [ebp-B8h] BYREF - _BYTE v46[91]; // [esp-2Fh] [ebp-B7h] BYREF - char *v47; // [esp+2Ch] [ebp-5Ch] - int v48; // [esp+30h] [ebp-58h] - void *v49; // [esp+34h] [ebp-54h] - size_t Size; // [esp+38h] [ebp-50h] - int v51; // [esp+3Ch] [ebp-4Ch] - struct _Unwind_Exception *v52; // [esp+40h] [ebp-48h] - void *v53; // [esp+44h] [ebp-44h] - int v54; // [esp+48h] [ebp-40h] - int v55; // [esp+4Ch] [ebp-3Ch] - size_t MaxCount; // [esp+58h] [ebp-30h] BYREF - int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF - char v58[40]; // [esp+60h] [ebp-28h] BYREF - - v49 = this; - v54 = a2; - v51 = a3; - v48 = a5; - v55 = (int)(a4 + 27); - v52 = std::__use_cache>::operator()(a4 + 27); - v7 = a4[1]; - if ( v7 < 0 ) - v7 = 6; - std::__num_base::_S_format_float((std::__num_base *)a4, (const std::ios_base *)v58, (char *)a6); - v8 = alloca(80); - v9 = alloca(80); - if ( (a4[3] & 0x104) == 260 ) - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v36 = std::__convert_from_v(&c_locale, &v45, 54, v58, *(_QWORD *)&a7, HIDWORD(a7)); - MaxCount = v36; - if ( v36 > 53 ) - { - v53 = (void *)(v36 + 1); - v37 = 16 * ((unsigned int)(v36 + 28) >> 4); - v38 = alloca(v37); - v39 = alloca(v37); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, &v45, (int)v53, v58, *(_QWORD *)&a7, HIDWORD(a7)); - } - } - else - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v10 = std::__convert_from_v(&c_locale, &v45, 54, v58, v7, *(_QWORD *)&a7, HIDWORD(a7)); - MaxCount = v10; - if ( v10 > 53 ) - { - v53 = (void *)(v10 + 1); - v25 = 16 * ((unsigned int)(v10 + 28) >> 4); - v26 = alloca(v25); - v27 = alloca(v25); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, &v45, (int)v53, v58, v7, *(_QWORD *)&a7, HIDWORD(a7)); - } - } - v11 = std::use_facet>(v55); - v12 = MaxCount; - v13 = v11; - Size = MaxCount; - v14 = 16 * ((MaxCount + 27) >> 4); - v15 = alloca(v14); - v16 = v13[28]; - v17 = alloca(v14); - v53 = &v45; - v55 = (int)&v45; - v18 = &v46[MaxCount - 1]; - if ( v16 != 1 ) - { - if ( v16 ) - { - v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v19 == (char *)std::ctype::do_widen ) - goto LABEL_9; - } - else - { - v47 = &v46[MaxCount - 1]; - std::ctype::_M_widen_init((int)v13); - v18 = v47; - v19 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v13 + 28); - if ( (char *)v19 == (char *)std::ctype::do_widen ) - { -LABEL_9: - v12 = MaxCount; - if ( v18 != &v45 ) - memcpy(v53, &v45, Size); - goto LABEL_11; - } - } - v19(v13, &v45, v18, v53); - v12 = MaxCount; - goto LABEL_11; - } - if ( v18 != &v45 ) - memcpy(v53, &v45, MaxCount); -LABEL_11: - if ( !v12 ) - { - if ( *((_BYTE *)v52 + 16) ) - { - v21 = 0; - goto LABEL_20; - } -LABEL_14: - v23 = a4[2]; - if ( v23 <= v12 ) - goto LABEL_15; - goto LABEL_23; - } - v20 = (char *)memchr(&v45, 46, v12); - v21 = v20; - if ( !v20 ) - { - if ( *((_BYTE *)v52 + 16) && (v12 <= 2 || v46[0] <= 57 && (unsigned __int8)(v46[1] - 48) <= 9u && v46[0] > 47) ) - goto LABEL_20; - goto LABEL_14; - } - v22 = v52; - v21 = (char *)v53 + v20 - &v45; - *v21 = *((_BYTE *)v52 + 36); - if ( !*((_BYTE *)v22 + 16) ) - goto LABEL_14; -LABEL_20: - v28 = 16 * ((unsigned int)(2 * v12 + 27) >> 4); - v29 = alloca(v28); - v30 = alloca(v28); - if ( ((v45 - 43) & 0xFD) != 0 ) - { - v31 = &v45; - v32 = 0; - } - else - { - v31 = v46; - MaxCount = v12 - 1; - v32 = 1; - v45 = *(_BYTE *)v53; - v55 = (int)v53 + 1; - } - std::num_put>::_M_group_float( - *((char **)v52 + 2), - *((_DWORD *)v52 + 3), - *((_BYTE *)v52 + 37), - v21, - (int)v31, - (_BYTE *)v55, - &MaxCount); - v12 = MaxCount + v32; - v55 = (int)&v45; - MaxCount = v12; - v23 = a4[2]; - if ( v23 <= v12 ) - goto LABEL_15; -LABEL_23: - v33 = 16 * ((unsigned int)(v23 + 27) >> 4); - v34 = alloca(v33); - v35 = alloca(v33); - v44 = v12; - v12 = v23; - std::__pad>::_S_pad(a4, (void *)(char)v48, &v45, (char *)v55, v23, v44); - MaxCount = v23; - v55 = (int)&v45; -LABEL_15: - a4[2] = 0; - if ( !(_BYTE)v51 ) - (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v54 + 48))(v54, v55, v12); - return v54; -} - -//----- (00486750) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - char a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax - int v7; // edi - int result; // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 36); - if ( v6 != std::num_put>::do_put ) - return ((int (__fastcall *)(void *, int, int, int, _DWORD *, _DWORD, int))v6)(this, a6, a2, a3, a4, a5, a6); - v7 = a4[3]; - a4[3] = v7 & 0xFFFFBDB5 | 0x208; - result = std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - a4[3] = v7; - return result; -} - -//----- (004867F0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int a4, - char a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00486810) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - char a5, - double a6) -{ - int (__thiscall *v6)(void *, int, int, int *, char, double); // eax - - v6 = *(int (__thiscall **)(void *, int, int, int *, char, double))(*(_DWORD *)this + 28); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); - else - return ((int (__fastcall *)(void *, int *, int, int, int *, _DWORD, _DWORD, _DWORD))v6)( - this, - a4, - a2, - a3, - a4, - a5, - LODWORD(a6), - HIDWORD(a6)); -} - -//----- (00486880) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - char a5, - long double a6) -{ - int (__thiscall *v6)(void *, int, int, int *, char, long double); // eax - - v6 = *(int (__thiscall **)(void *, int, int, int *, char, long double))(*(_DWORD *)this + 32); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 76, a6); - else - return ((int (__fastcall *)(void *, int *, int, int, int *, _DWORD, _DWORD, _DWORD, _DWORD))v6)( - this, - a4, - a2, - a3, - a4, - a5, - LODWORD(a6), - DWORD1(a6), - HIDWORD(a6)); -} - -//----- (004868F0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - char a5, - int a6) -{ - int (__stdcall *v6)(int, int, int *, char, int); // eax - - v6 = *(int (__stdcall **)(int, int, int *, char, int))(*(_DWORD *)this + 12); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return v6(a2, a3, a4, a5, a6); -} - -//----- (00486950) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - char a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 16); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return v6(a2, a3, a4, a5, a6); -} - -//----- (004869B0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - char a5, - __int64 a6) -{ - int (__stdcall *v6)(int, int, int *, char, __int64); // eax - - v6 = *(int (__stdcall **)(int, int, int *, char, __int64))(*(_DWORD *)this + 20); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return ((int (__stdcall *)(int, int, int *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); -} - -//----- (00486A20) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - char a5, - int a6, - int a7) -{ - int (__stdcall *v7)(int, int, _DWORD *, char, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, _DWORD *, char, int, int))(*(_DWORD *)this + 24); - if ( v7 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6, a7); - else - return v7(a2, a3, a4, a5, a6, a7); -} - -//----- (00486A90) -------------------------------------------------------- -int __stdcall std::num_put>::_M_pad( - char a1, - int a2, - _DWORD *a3, - char *a4, - char *a5, - int *a6) -{ - int result; // eax - - result = std::__pad>::_S_pad(a3, (void *)a1, a4, a5, a2, *a6); - *a6 = a2; - return result; -} - -//----- (00486AE0) -------------------------------------------------------- -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) -{ - int v5; // edi - int result; // eax - - v5 = a3[3]; - a3[3] = v5 & 0xFFFFBDB5 | 0x208; - result = std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); - a3[3] = v5; - return result; -} - -//----- (00486B60) -------------------------------------------------------- -int *__stdcall std::num_put>::do_put(int *a1, int a2, int *a3, int a4, int a5) -{ - int v5; // edi - struct _Unwind_Exception *v7; // eax - int v8; // ecx - char v9; // dl - int v10; // ecx - int v11; // eax - size_t v12; // edx - int v13; // eax - void *v14; // esp - void *v15; // esp - char v16; // dl - int v17; // edi - int v18; // ecx - int v19; // eax - int v20; // edi - _BYTE v21[8]; // [esp+20h] [ebp-68h] BYREF - _BYTE *v22; // [esp+28h] [ebp-60h] - int v23; // [esp+2Ch] [ebp-5Ch] - char v24; // [esp+33h] [ebp-55h] - int v25; // [esp+34h] [ebp-54h] - int v26; // [esp+38h] [ebp-50h] - int v27; // [esp+3Ch] [ebp-4Ch] - - v5 = a3[3]; - v26 = a4; - if ( (v5 & 1) == 0 ) - return (int *)std::num_put>::_M_insert_int( - (int)a1, - a2, - a3, - (char)a4, - (unsigned __int8)a5); - v27 = a5; - v7 = std::__use_cache>::operator()(a3 + 27); - if ( (_BYTE)a5 ) - { - v8 = *((_DWORD *)v7 + 5); - v9 = a2; - v27 = *((_DWORD *)v7 + 6); - v25 = v8; - v10 = v27; - v11 = a3[2]; - if ( v27 < v11 ) - goto LABEL_5; -LABEL_10: - a3[2] = 0; - if ( !v9 ) - { - v19 = *a1; - LOBYTE(v26) = 0; - (*(int (__thiscall **)(int *, int, int))(v19 + 48))(a1, v25, v27); - } - return a1; - } - v18 = *((_DWORD *)v7 + 7); - v9 = a2; - v27 = *((_DWORD *)v7 + 8); - v25 = v18; - v10 = v27; - v11 = a3[2]; - if ( v27 >= v11 ) - goto LABEL_10; -LABEL_5: - v24 = v9; - v23 = v11 - v10; - v12 = v11 - v10; - v13 = 16 * ((unsigned int)(v11 - v10 + 27) >> 4); - v14 = alloca(v13); - v15 = alloca(v13); - v22 = v21; - memset(v21, (char)v26, v12); - v16 = v24; - a3[2] = 0; - if ( (v5 & 0xB0) == 32 ) - { - if ( !v16 ) - { - v20 = v27; - if ( v20 == (*(int (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v25, v27) ) - (*(void (__thiscall **)(int *, _BYTE *, int))(*a1 + 48))(a1, v22, v23); - } - } - else if ( !v16 ) - { - v17 = v23; - if ( v17 == (*(int (__thiscall **)(int *, _BYTE *, int))(*a1 + 48))(a1, v22, v23) ) - (*(void (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v25, v27); - } - return a1; -} - -//----- (00486D60) -------------------------------------------------------- -int __thiscall std::num_put>::do_put( - void *this, - int a2, - int a3, - int *a4, - char a5, - double a6) -{ - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); -} - -//----- (00486DB0) -------------------------------------------------------- -int __thiscall std::num_put>::do_put( - void *this, - int a2, - int a3, - int *a4, - char a5, - long double a6) -{ - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 76, a6); -} - -//----- (00486E00) -------------------------------------------------------- -int __stdcall std::num_put>::do_put(int a1, int a2, int *a3, char a4, int a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (00486E10) -------------------------------------------------------- -int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (00486E20) -------------------------------------------------------- -int __stdcall std::num_put>::do_put(int a1, int a2, int *a3, char a4, __int64 a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (00486E30) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - char a4, - int a5, - int a6) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5, a6); -} - -//----- (00486E40) -------------------------------------------------------- -int __stdcall std::num_put>::_M_group_int( - char *a1, - int a2, - __int16 a3, - int a4, - _WORD *a5, - char *a6, - int *a7) -{ - int result; // eax - - result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[2 * *a7]) - a5; - *a7 = result; - return result; -} - -//----- (00486E90) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5) -{ - void *v5; // esp - void *v6; // esp - unsigned int v7; // eax - int v8; // ecx - struct _Unwind_Exception *v9; // edx - int v10; // eax - char v11; // cl - struct _Unwind_Exception *v12; // eax - char v13; // bl - int v15; // ebx - int v16; // eax - void *v17; // esp - void *v18; // esp - int v19; // eax - void *v20; // esp - void *v21; // esp - int v22; // eax - char *v23; // eax - _DWORD *v24; // eax - __int16 v25; // [esp-20h] [ebp-A8h] BYREF - _WORD v26[18]; // [esp-1Ch] [ebp-A4h] BYREF - unsigned int v27; // [esp+8h] [ebp-80h] - unsigned int v28; // [esp+24h] [ebp-64h] - int v29; // [esp+28h] [ebp-60h] - int v30; // [esp+2Ch] [ebp-5Ch] - int v31; // [esp+30h] [ebp-58h] - unsigned int v32; // [esp+34h] [ebp-54h] - int v33; // [esp+38h] [ebp-50h] - std::locale::_Impl *v34; // [esp+3Ch] [ebp-4Ch] - int *v35; // [esp+40h] [ebp-48h] - int v36; // [esp+44h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-40h] - - v33 = a1; - v30 = a2; - v29 = a4; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v35 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v36 = *v35; - if ( !v36 ) - { - v24 = operator new(0xA8u); - v24[1] = 0; - *v24 = &off_51AF70; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - v24[5] = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - *((_BYTE *)v24 + 164) = 0; - v34 = (std::locale::_Impl *)v24; - std::__numpunct_cache::_M_cache((int)v24, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v34, lpuexcpt, v27); - v36 = *v35; - } - v31 = v36 + 40; - v32 = a3[3]; - v5 = alloca(64); - v6 = alloca(64); - v28 = v32 & 0x4A; - v34 = (std::locale::_Impl *)&v25; - v7 = a5; - LOBYTE(v35) = v28 != 8 && v28 != 64; - if ( a5 <= 0 ) - { - v7 = -a5; - if ( v28 == 8 || v28 == 64 ) - v7 = a5; - } - v8 = std::__int_to_char((_WORD *)v34 + 20, v7, v31, v32, (char)v35); - lpuexcpt = (struct _Unwind_Exception *)v8; - v9 = (std::locale::_Impl *)((char *)v34 + 2 * (20 - v8)); - if ( !*(_BYTE *)(v36 + 16) ) - { - if ( (_BYTE)v35 ) - goto LABEL_8; -LABEL_20: - if ( (v32 & 0x200) != 0 && a5 ) - { - if ( v28 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - } - else - { - v9 = (struct _Unwind_Exception *)((char *)v9 - 4); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_WORD *)v9 + 1) = *(_WORD *)(v31 + 2 * ((v32 >> 14) & 1) + 4); - } - *(_WORD *)v9 = *(_WORD *)(v36 + 48); - } - goto LABEL_10; - } - v19 = 16 * ((unsigned int)(4 * v8 + 31) >> 4); - v20 = alloca(v19); - v21 = alloca(v19); - v22 = *(_DWORD *)(v36 + 12); - lpuexcpt = (struct _Unwind_Exception *)v26; - v23 = (char *)std::__add_grouping( - v26, - *(_WORD *)(v36 + 38), - *(char **)(v36 + 8), - v22, - (char *)v9, - (char *)v9 + 2 * v8); - v9 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)((v23 - (char *)lpuexcpt) >> 1); - if ( !(_BYTE)v35 ) - goto LABEL_20; -LABEL_8: - if ( a5 < 0 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - *(_WORD *)v9 = *(_WORD *)(v36 + 40); - } - else if ( (v32 & 0x800) != 0 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - *(_WORD *)v9 = *(_WORD *)(v36 + 42); - v10 = a3[2]; - v36 = v10; - if ( v10 <= (int)lpuexcpt ) - goto LABEL_11; - goto LABEL_17; - } -LABEL_10: - v10 = a3[2]; - v36 = v10; - if ( v10 <= (int)lpuexcpt ) - goto LABEL_11; -LABEL_17: - v15 = v10; - v16 = 16 * ((unsigned int)(2 * v10 + 27) >> 4); - v17 = alloca(v16); - v18 = alloca(v16); - v35 = (int *)&v25; - std::__pad>::_S_pad(a3, (void *)(unsigned __int16)v29, &v25, v9, v15, (int)lpuexcpt); - v9 = (struct _Unwind_Exception *)v35; - lpuexcpt = (struct _Unwind_Exception *)v36; -LABEL_11: - v11 = v30; - a3[2] = 0; - LOBYTE(v36) = v11; - if ( !v11 ) - { - v12 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v33 + 48))( - v33, - v9, - lpuexcpt); - v13 = v36; - if ( v12 != lpuexcpt ) - v13 = 1; - LOBYTE(v36) = v13; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v36; - return v33; -} -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (004872B0) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5) -{ - unsigned int v5; // ecx - void *v6; // esp - void *v7; // esp - struct _Unwind_Exception *v8; // edx - int v9; // eax - char v10; // si - struct _Unwind_Exception *v11; // eax - char v12; // dl - int v14; // eax - void *v15; // esp - void *v16; // esp - int v17; // eax - char *v18; // eax - int v19; // esi - int v20; // eax - void *v21; // esp - void *v22; // esp - _DWORD *v23; // eax - char *v24; // [esp-2Ch] [ebp-B4h] - __int16 v25; // [esp-20h] [ebp-A8h] BYREF - _WORD v26[18]; // [esp-1Ch] [ebp-A4h] BYREF - int v27[7]; // [esp+8h] [ebp-80h] BYREF - int v28; // [esp+24h] [ebp-64h] - unsigned int v29; // [esp+28h] [ebp-60h] - unsigned int v30; // [esp+2Ch] [ebp-5Ch] - int v31; // [esp+30h] [ebp-58h] - int v32; // [esp+34h] [ebp-54h] - std::locale::_Impl *v33; // [esp+38h] [ebp-50h] - int *v34; // [esp+3Ch] [ebp-4Ch] - int v35; // [esp+40h] [ebp-48h] - int v36; // [esp+44h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+48h] [ebp-40h] - - v35 = a1; - v32 = a2; - v31 = a4; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v34 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v36 = *v34; - if ( !v36 ) - { - v23 = operator new(0xA8u); - v23[1] = 0; - *v23 = &off_51AF70; - v23[2] = 0; - v23[3] = 0; - *((_BYTE *)v23 + 16) = 0; - v23[5] = 0; - v23[6] = 0; - v23[7] = 0; - v23[8] = 0; - v23[9] = 0; - *((_BYTE *)v23 + 164) = 0; - v33 = (std::locale::_Impl *)v23; - std::__numpunct_cache::_M_cache((int)v23, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v33, lpuexcpt, v27[0]); - v36 = *v34; - } - v5 = a3[3]; - v28 = v36 + 40; - v30 = v5; - v6 = alloca(64); - v7 = alloca(64); - v33 = (std::locale::_Impl *)&v25; - v29 = v5 & 0x4A; - LOBYTE(v34) = v29 != 8 && v29 != 64; - lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char(v27, a5, v36 + 40, v5, (char)v34); - v8 = (std::locale::_Impl *)((char *)v33 + 2 * (20 - (_DWORD)lpuexcpt)); - if ( *(_BYTE *)(v36 + 16) ) - { - v14 = 16 * ((unsigned int)(4 * (_DWORD)lpuexcpt + 31) >> 4); - v15 = alloca(v14); - v16 = alloca(v14); - v24 = (char *)v8 + 2 * (_DWORD)lpuexcpt; - v17 = *(_DWORD *)(v36 + 12); - lpuexcpt = (struct _Unwind_Exception *)v26; - v18 = (char *)std::__add_grouping(v26, *(_WORD *)(v36 + 38), *(char **)(v36 + 8), v17, (char *)v8, v24); - v8 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)((v18 - (char *)lpuexcpt) >> 1); - if ( (_BYTE)v34 ) - goto LABEL_5; - } - else if ( (_BYTE)v34 ) - { - goto LABEL_5; - } - if ( (v30 & 0x200) != 0 && a5 ) - { - if ( v29 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v8 = (struct _Unwind_Exception *)((char *)v8 - 2); - } - else - { - v8 = (struct _Unwind_Exception *)((char *)v8 - 4); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_WORD *)v8 + 1) = *(_WORD *)(v28 + 2 * ((v30 >> 14) & 1) + 4); - } - *(_WORD *)v8 = *(_WORD *)(v36 + 48); - } -LABEL_5: - v9 = a3[2]; - v36 = v9; - if ( v9 > (int)lpuexcpt ) - { - v19 = v9; - v20 = 16 * ((unsigned int)(2 * v9 + 27) >> 4); - v21 = alloca(v20); - v22 = alloca(v20); - v34 = (int *)&v25; - std::__pad>::_S_pad( - a3, - (void *)(unsigned __int16)v31, - &v25, - v8, - v19, - (int)lpuexcpt); - v8 = (struct _Unwind_Exception *)v34; - lpuexcpt = (struct _Unwind_Exception *)v36; - } - v10 = v32; - a3[2] = 0; - LOBYTE(v36) = v10; - if ( !v10 ) - { - v11 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v35 + 48))( - v35, - v8, - lpuexcpt); - v12 = v36; - if ( v11 != lpuexcpt ) - v12 = 1; - LOBYTE(v36) = v12; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v36; - return v35; -} -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); -// 4872B0: using guessed type unsigned int anonymous_0[7]; - -//----- (00487660) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - __int64 a5) -{ - void *v5; // esp - void *v6; // esp - __int64 v7; // rax - int v8; // ecx - struct _Unwind_Exception *v9; // edx - int v10; // eax - char v11; // bl - struct _Unwind_Exception *v12; // eax - char v13; // bl - int v15; // edi - int v16; // eax - void *v17; // esp - void *v18; // esp - int v19; // eax - void *v20; // esp - void *v21; // esp - int v22; // eax - char *v23; // eax - _DWORD *v24; // eax - __int16 v25; // [esp-40h] [ebp-E8h] BYREF - _WORD v26[34]; // [esp-3Ch] [ebp-E4h] BYREF - unsigned int v27; // [esp+8h] [ebp-A0h] - unsigned int v28; // [esp+2Ch] [ebp-7Ch] - int v29; // [esp+30h] [ebp-78h] - int v30; // [esp+34h] [ebp-74h] - int v31; // [esp+38h] [ebp-70h] - unsigned int v32; // [esp+3Ch] [ebp-6Ch] - int v33; // [esp+40h] [ebp-68h] - std::locale::_Impl *v34; // [esp+44h] [ebp-64h] - __int64 v35; // [esp+48h] [ebp-60h] - int *v36; // [esp+50h] [ebp-58h] - int v37; // [esp+54h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-50h] - - v33 = a1; - v30 = a2; - v29 = a4; - v35 = a5; - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v36 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v37 = *v36; - if ( !v37 ) - { - v24 = operator new(0xA8u); - v24[1] = 0; - *v24 = &off_51AF70; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - v24[5] = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - *((_BYTE *)v24 + 164) = 0; - v34 = (std::locale::_Impl *)v24; - std::__numpunct_cache::_M_cache((int)v24, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v34, lpuexcpt, v27); - v37 = *v36; - } - v31 = v37 + 40; - v32 = a3[3]; - v5 = alloca(96); - v6 = alloca(96); - v28 = v32 & 0x4A; - v34 = (std::locale::_Impl *)&v25; - v7 = v35; - LOBYTE(v36) = v28 != 8 && v28 != 64; - if ( (HIDWORD(v35) | (((_DWORD)v35 != 0) + HIDWORD(v35) - 1)) < 0 && (_BYTE)v36 ) - v7 = -v35; - v8 = std::__int_to_char((_WORD *)v34 + 40, v7, HIDWORD(v7), v31, v32, (char)v36); - lpuexcpt = (struct _Unwind_Exception *)v8; - v9 = (std::locale::_Impl *)((char *)v34 + 2 * (40 - v8)); - if ( !*(_BYTE *)(v37 + 16) ) - { - if ( (_BYTE)v36 ) - goto LABEL_8; -LABEL_20: - if ( (v32 & 0x200) != 0 && v35 ) - { - if ( v28 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - } - else - { - v9 = (struct _Unwind_Exception *)((char *)v9 - 4); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_WORD *)v9 + 1) = *(_WORD *)(v31 + 2 * ((v32 >> 14) & 1) + 4); - } - *(_WORD *)v9 = *(_WORD *)(v37 + 48); - } - goto LABEL_10; - } - v19 = 16 * ((unsigned int)(4 * v8 + 31) >> 4); - v20 = alloca(v19); - v21 = alloca(v19); - v22 = *(_DWORD *)(v37 + 12); - lpuexcpt = (struct _Unwind_Exception *)v26; - v23 = (char *)std::__add_grouping( - v26, - *(_WORD *)(v37 + 38), - *(char **)(v37 + 8), - v22, - (char *)v9, - (char *)v9 + 2 * v8); - v9 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)((v23 - (char *)lpuexcpt) >> 1); - if ( !(_BYTE)v36 ) - goto LABEL_20; -LABEL_8: - if ( v35 < 0 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - *(_WORD *)v9 = *(_WORD *)(v37 + 40); - } - else if ( (v32 & 0x800) != 0 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - *(_WORD *)v9 = *(_WORD *)(v37 + 42); - v10 = a3[2]; - v37 = v10; - if ( v10 <= (int)lpuexcpt ) - goto LABEL_11; - goto LABEL_17; - } -LABEL_10: - v10 = a3[2]; - v37 = v10; - if ( v10 <= (int)lpuexcpt ) - goto LABEL_11; -LABEL_17: - v15 = v10; - v16 = 16 * ((unsigned int)(2 * v10 + 27) >> 4); - v17 = alloca(v16); - v18 = alloca(v16); - v36 = (int *)&v25; - std::__pad>::_S_pad(a3, (void *)(unsigned __int16)v29, &v25, v9, v15, (int)lpuexcpt); - v9 = (struct _Unwind_Exception *)v36; - lpuexcpt = (struct _Unwind_Exception *)v37; -LABEL_11: - v11 = v30; - a3[2] = 0; - LOBYTE(v37) = v11; - if ( !v11 ) - { - v12 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v33 + 48))( - v33, - v9, - lpuexcpt); - v13 = v37; - if ( v12 != lpuexcpt ) - v13 = 1; - LOBYTE(v37) = v13; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v37; - return v33; -} -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (00487AB0) -------------------------------------------------------- -int __stdcall std::num_put>::_M_insert_int( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6) -{ - unsigned int v6; // ecx - void *v7; // esp - void *v8; // esp - struct _Unwind_Exception *v9; // edx - int v10; // eax - char v11; // si - struct _Unwind_Exception *v12; // eax - char v13; // dl - int v15; // eax - void *v16; // esp - void *v17; // esp - int v18; // eax - char *v19; // eax - int v20; // esi - int v21; // eax - void *v22; // esp - void *v23; // esp - _DWORD *v24; // eax - char *v25; // [esp-4Ch] [ebp-E4h] - __int16 v26; // [esp-40h] [ebp-D8h] BYREF - _WORD v27[34]; // [esp-3Ch] [ebp-D4h] BYREF - unsigned int v28; // [esp+8h] [ebp-90h] - __int16 v29[14]; // [esp+10h] [ebp-88h] BYREF - int v30; // [esp+2Ch] [ebp-6Ch] - unsigned int v31; // [esp+30h] [ebp-68h] - unsigned int v32; // [esp+34h] [ebp-64h] - int v33; // [esp+38h] [ebp-60h] - int v34; // [esp+3Ch] [ebp-5Ch] - std::locale::_Impl *v35; // [esp+40h] [ebp-58h] - int *v36; // [esp+44h] [ebp-54h] - unsigned __int64 v37; // [esp+48h] [ebp-50h] - int v38; // [esp+50h] [ebp-48h] - int v39; // [esp+54h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+58h] [ebp-40h] - - v38 = a1; - v34 = a2; - v33 = a4; - v37 = __PAIR64__(a5, a6); - lpuexcpt = (struct _Unwind_Exception *)std::locale::id::_M_id(&std::numpunct::id); - v36 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * (_DWORD)lpuexcpt); - v39 = *v36; - if ( !v39 ) - { - v24 = operator new(0xA8u); - v24[1] = 0; - *v24 = &off_51AF70; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - v24[5] = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - *((_BYTE *)v24 + 164) = 0; - v35 = (std::locale::_Impl *)v24; - std::__numpunct_cache::_M_cache((int)v24, (int)(a3 + 27)); - std::locale::_Impl::_M_install_cache(a3[27], v35, lpuexcpt, v28); - v39 = *v36; - } - v6 = a3[3]; - v30 = v39 + 40; - v32 = v6; - v7 = alloca(96); - v8 = alloca(96); - v35 = (std::locale::_Impl *)&v26; - v31 = v6 & 0x4A; - LOBYTE(v36) = v31 != 8 && v31 != 64; - lpuexcpt = (struct _Unwind_Exception *)std::__int_to_char( - v29, - HIDWORD(v37), - v37, - v39 + 40, - v6, - (char)v36); - v9 = (std::locale::_Impl *)((char *)v35 + 2 * (40 - (_DWORD)lpuexcpt)); - if ( *(_BYTE *)(v39 + 16) ) - { - v15 = 16 * ((unsigned int)(4 * (_DWORD)lpuexcpt + 31) >> 4); - v16 = alloca(v15); - v17 = alloca(v15); - v25 = (char *)v9 + 2 * (_DWORD)lpuexcpt; - v18 = *(_DWORD *)(v39 + 12); - lpuexcpt = (struct _Unwind_Exception *)v27; - v19 = (char *)std::__add_grouping(v27, *(_WORD *)(v39 + 38), *(char **)(v39 + 8), v18, (char *)v9, v25); - v9 = lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)((v19 - (char *)lpuexcpt) >> 1); - if ( (_BYTE)v36 ) - goto LABEL_5; - } - else if ( (_BYTE)v36 ) - { - goto LABEL_5; - } - if ( (v32 & 0x200) != 0 && v37 ) - { - if ( v31 == 64 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v9 = (struct _Unwind_Exception *)((char *)v9 - 2); - } - else - { - v9 = (struct _Unwind_Exception *)((char *)v9 - 4); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 2); - *((_WORD *)v9 + 1) = *(_WORD *)(v30 + 2 * ((v32 >> 14) & 1) + 4); - } - *(_WORD *)v9 = *(_WORD *)(v39 + 48); - } -LABEL_5: - v10 = a3[2]; - v39 = v10; - if ( v10 > (int)lpuexcpt ) - { - v20 = v10; - v21 = 16 * ((unsigned int)(2 * v10 + 27) >> 4); - v22 = alloca(v21); - v23 = alloca(v21); - HIDWORD(v37) = &v26; - std::__pad>::_S_pad( - a3, - (void *)(unsigned __int16)v33, - &v26, - v9, - v20, - (int)lpuexcpt); - v9 = (struct _Unwind_Exception *)HIDWORD(v37); - lpuexcpt = (struct _Unwind_Exception *)v39; - } - v11 = v34; - a3[2] = 0; - LOBYTE(v39) = v11; - if ( !v11 ) - { - v12 = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, struct _Unwind_Exception *, struct _Unwind_Exception *))(*(_DWORD *)v38 + 48))( - v38, - v9, - lpuexcpt); - v13 = v39; - if ( v12 != lpuexcpt ) - v13 = 1; - LOBYTE(v39) = v13; - } - lpuexcpt = (struct _Unwind_Exception *)(unsigned __int8)v39; - return v38; -} -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); -// 487AB0: using guessed type __int16 anonymous_1[14]; - -//----- (00487E80) -------------------------------------------------------- -int __stdcall std::num_put>::_M_group_float( - char *a1, - int a2, - __int16 a3, - char *Src, - _WORD *a5, - char *a6, - _DWORD *a7) -{ - int v7; // ebx - _WORD *v8; // edx - int v9; // ebp - int v10; // eax - int result; // eax - - if ( Src ) - { - v7 = (Src - a6) >> 1; - v8 = std::__add_grouping(a5, a3, a1, a2, a6, Src); - v9 = v8 - a5; - v10 = 0; - if ( *a7 != v7 ) - { - memcpy(v8, Src, 2 * (*a7 - v7)); - v10 = *a7 - v7; - } - result = v9 + v10; - *a7 = result; - } - else - { - result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[2 * *a7]) - a5; - *a7 = result; - } - return result; -} - -//----- (00487F50) -------------------------------------------------------- -int *__thiscall std::num_put>::_M_insert_float( - void *this, - int *a2, - int a3, - std::__num_base *a4, - int a5, - void *a6, - double a7) -{ - int v7; // eax - int v8; // edx - void *v9; // esp - void *v10; // esp - int v11; // eax - void *v12; // ecx - int v13; // eax - void *v14; // esp - void *v15; // esp - char *v16; // edx - char v17; // cl - int v18; // eax - char v19; // dl - int v20; // eax - int v21; // eax - char v22; // bl - int v24; // eax - void *v25; // esp - void *v26; // esp - size_t v27; // esi - int v28; // eax - void *v29; // esp - void *v30; // esp - __int16 *v31; // ecx - int v32; // ecx - int v33; // eax - void *v34; // esp - void *v35; // esp - int v36; // eax - int v37; // eax - void *v38; // esp - void *v39; // esp - char v40; // al - _DWORD *v41; // eax - int v42; // esi - int v43; // [esp-34h] [ebp-ECh] - int v44; // [esp-30h] [ebp-E8h] - int v45; // [esp-2Ch] [ebp-E4h] - int v46; // [esp-28h] [ebp-E0h] - _DWORD v47[11]; // [esp-20h] [ebp-D8h] BYREF - _WORD *v48; // [esp+Ch] [ebp-ACh] - __int16 v49; // [esp+20h] [ebp-98h] BYREF - __int16 v50; // [esp+22h] [ebp-96h] BYREF - std::locale::_Impl *v51; // [esp+2Ch] [ebp-8Ch] - int v52; // [esp+30h] [ebp-88h] - int v53; // [esp+34h] [ebp-84h] - void *v54; // [esp+38h] [ebp-80h] - std::locale::facet *v55; // [esp+3Ch] [ebp-7Ch] - int v56; // [esp+40h] [ebp-78h] - int *v57; // [esp+44h] [ebp-74h] - int v58; // [esp+48h] [ebp-70h] - int v59; // [esp+4Ch] [ebp-6Ch] - size_t MaxCount[2]; // [esp+50h] [ebp-68h] - void *Buf; // [esp+58h] [ebp-60h] - int v62; // [esp+98h] [ebp-20h] BYREF - int *c_locale; // [esp+9Ch] [ebp-1Ch] BYREF - char v64[24]; // [esp+A0h] [ebp-18h] BYREF - - v54 = this; - v57 = a2; - *(double *)MaxCount = a7; - v56 = a3; - v53 = a5; - Buf = a6; - v59 = (int)a4 + 108; - v55 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); - v52 = *(_DWORD *)(*((_DWORD *)a4 + 27) + 12) + 4 * (_DWORD)v55; - v58 = *(_DWORD *)v52; - if ( !v58 ) - { - v41 = operator new(0xA8u); - v42 = v59; - v41[1] = 0; - *v41 = &off_51AF70; - v41[2] = 0; - v41[3] = 0; - *((_BYTE *)v41 + 16) = 0; - v41[5] = 0; - v41[6] = 0; - v41[7] = 0; - v41[8] = 0; - v41[9] = 0; - *((_BYTE *)v41 + 164) = 0; - v51 = (std::locale::_Impl *)v41; - std::__numpunct_cache::_M_cache((int)v41, v42); - std::locale::_Impl::_M_install_cache(*((_DWORD *)a4 + 27), v51, v55, v47[10]); - v58 = *(_DWORD *)v52; - } - v7 = 6; - if ( *((int *)a4 + 1) >= 0 ) - v7 = *((_DWORD *)a4 + 1); - v55 = (std::locale::facet *)v7; - std::__num_base::_S_format_float(a4, (const std::ios_base *)v64, (char *)(char)Buf); - v8 = *((_DWORD *)a4 + 3) & 0x104; - v9 = alloca(64); - v10 = alloca(64); - Buf = v47; - if ( v8 == 260 ) - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v36 = std::__convert_from_v(&c_locale, (char *)Buf, 45, v64, MaxCount[0], MaxCount[1]); - v62 = v36; - if ( v36 > 44 ) - { - v55 = (std::locale::facet *)(v36 + 1); - v37 = 16 * ((unsigned int)(v36 + 28) >> 4); - v38 = alloca(v37); - v39 = alloca(v37); - Buf = v47; - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v62 = std::__convert_from_v(&c_locale, (char *)Buf, (int)v55, v64, MaxCount[0], MaxCount[1]); - } - } - else - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v11 = std::__convert_from_v(&c_locale, (char *)Buf, 45, v64, v55, MaxCount[0], MaxCount[1]); - v62 = v11; - if ( v11 > 44 ) - { - v52 = v11 + 1; - v24 = 16 * ((unsigned int)(v11 + 28) >> 4); - v25 = alloca(v24); - v26 = alloca(v24); - Buf = v47; - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v62 = std::__convert_from_v(&c_locale, (char *)Buf, v52, v64, v55, MaxCount[0], MaxCount[1]); - } - } - v12 = std::use_facet>(v59); - v13 = 16 * ((unsigned int)(2 * v62 + 27) >> 4); - v14 = alloca(v13); - v15 = alloca(v13); - v55 = (std::locale::facet *)v47; - v59 = (int)v47; - (*(void (__thiscall **)(void *, void *, char *, _DWORD *, int, int, int, int))(*(_DWORD *)v12 + 44))( - v12, - Buf, - (char *)Buf + v62, - v47, - v43, - v44, - v45, - v46); - MaxCount[0] = v62; - if ( !v62 ) - { - if ( *(_BYTE *)(v58 + 16) ) - { - v16 = 0; - goto LABEL_19; - } -LABEL_11: - v18 = *((_DWORD *)a4 + 2); - Buf = (void *)v18; - if ( v18 <= (int)MaxCount[0] ) - goto LABEL_12; - goto LABEL_22; - } - v16 = (char *)memchr(Buf, 46, MaxCount[0]); - v17 = *(_BYTE *)(v58 + 16); - if ( !v16 ) - { - if ( v17 ) - { - if ( (int)MaxCount[0] <= 2 ) - goto LABEL_19; - v40 = *((_BYTE *)Buf + 1); - if ( v40 <= 57 ) - { - LOBYTE(v52) = *((_BYTE *)Buf + 2); - if ( (unsigned __int8)(v52 - 48) <= 9u && v40 > 47 ) - goto LABEL_19; - } - } - goto LABEL_11; - } - v16 = (char *)v55 + 2 * (v16 - (_BYTE *)Buf); - *(_WORD *)v16 = *(_WORD *)(v58 + 36); - if ( !v17 ) - goto LABEL_11; -LABEL_19: - v27 = MaxCount[0]; - v28 = 16 * ((4 * MaxCount[0] + 27) >> 4); - v29 = alloca(v28); - v30 = alloca(v28); - v52 = (int)&v49; - if ( ((*(_BYTE *)Buf - 43) & 0xFD) != 0 ) - { - MaxCount[0] = 0; - v31 = (__int16 *)v52; - } - else - { - MaxCount[0] = 1; - v49 = *(_WORD *)v55; - v62 = v27 - 1; - v31 = &v50; - v59 = (int)v55 + 2; - } - std::num_put>::_M_group_float( - *(char **)(v58 + 8), - *(_DWORD *)(v58 + 12), - *(_WORD *)(v58 + 38), - v16, - v31, - (char *)v59, - &v62); - MaxCount[0] += v62; - v62 = MaxCount[0]; - v59 = v52; - v18 = *((_DWORD *)a4 + 2); - Buf = (void *)v18; - if ( v18 > (int)MaxCount[0] ) - { -LABEL_22: - v32 = v18; - v33 = 16 * ((unsigned int)(2 * v18 + 27) >> 4); - v34 = alloca(v33); - v35 = alloca(v33); - v48 = (_WORD *)v59; - v59 = (int)&v49; - std::__pad>::_S_pad( - a4, - (void *)(unsigned __int16)v53, - &v49, - v48, - v32, - MaxCount[0]); - v62 = (int)Buf; - MaxCount[0] = (size_t)Buf; - } -LABEL_12: - v19 = v56; - *((_DWORD *)a4 + 2) = 0; - LOBYTE(Buf) = v19; - if ( !v19 ) - { - v20 = *v57; - v47[8] = v59; - v47[9] = MaxCount[0]; - v21 = (*(int (__thiscall **)(int *, int, size_t))(v20 + 48))(v57, v59, MaxCount[0]); - v22 = (char)Buf; - if ( v21 != MaxCount[0] ) - v22 = 1; - LOBYTE(Buf) = v22; - } - MaxCount[0] = (unsigned __int8)Buf; - return v57; -} -// 4880D2: variable 'v43' is possibly undefined -// 4880D2: variable 'v44' is possibly undefined -// 4880D2: variable 'v45' is possibly undefined -// 4880D2: variable 'v46' is possibly undefined -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (00488570) -------------------------------------------------------- -// bad sp value at call has been detected, the output may be wrong! -int __thiscall std::num_put>::_M_insert_float( - void *this, - int a2, - int a3, - int *a4, - int a5, - char a6, - long double a7) -{ - int v7; // esi - void *v8; // esp - void *v9; // esp - int v10; // eax - int *v11; // ecx - int v12; // eax - void *v13; // esp - void *v14; // esp - int v15; // eax - int v16; // esi - char *v17; // edx - char v18; // cl - int v19; // ebx - int v21; // eax - void *v22; // esp - void *v23; // esp - int v24; // eax - void *v25; // esp - void *v26; // esp - __int16 *v27; // ebx - int v28; // esi - int v29; // eax - void *v30; // esp - void *v31; // esp - int v32; // eax - int v33; // eax - void *v34; // esp - void *v35; // esp - int v36; // [esp-44h] [ebp-BCh] - int v37; // [esp-40h] [ebp-B8h] - int v41; // [esp-3Ch] [ebp-B4h] - int v43; // [esp-38h] [ebp-B0h] - int v44; // [esp-34h] [ebp-ACh] - __int16 v45; // [esp-30h] [ebp-A8h] BYREF - char v46; // [esp-2Eh] [ebp-A6h] BYREF - const std::ios_base *v47; // [esp+4h] [ebp-74h] - char *v48; // [esp+8h] [ebp-70h] - int v49; // [esp+14h] [ebp-64h] - __int16 v50; // [esp+20h] [ebp-58h] BYREF - __int16 v51; // [esp+22h] [ebp-56h] BYREF - int v52; // [esp+24h] [ebp-54h] - void *v53; // [esp+28h] [ebp-50h] - int v54; // [esp+2Ch] [ebp-4Ch] - int v55; // [esp+30h] [ebp-48h] - int v56; // [esp+34h] [ebp-44h] - struct _Unwind_Exception *v57; // [esp+38h] [ebp-40h] - int v58; // [esp+3Ch] [ebp-3Ch] - size_t MaxCount; // [esp+48h] [ebp-30h] BYREF - int *c_locale; // [esp+4Ch] [ebp-2Ch] BYREF - char v61[40]; // [esp+50h] [ebp-28h] BYREF - - v53 = this; - v56 = a2; - v54 = a3; - v52 = a5; - v58 = (int)(a4 + 27); - v57 = std::__use_cache>::operator()(a4 + 27); - v7 = a4[1]; - v48 = (char *)a6; - v47 = (const std::ios_base *)v61; - if ( v7 < 0 ) - v7 = 6; - std::__num_base::_S_format_float((std::__num_base *)a4, v47, v48); - v55 = a4[3]; - v8 = alloca(80); - v9 = alloca(80); - if ( (v55 & 0x104) == 260 ) - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v32 = std::__convert_from_v(&c_locale, (char *)&v45, 54, v61, *(_QWORD *)&a7, HIDWORD(a7)); - MaxCount = v32; - if ( v32 > 53 ) - { - v55 = v32 + 1; - v33 = 16 * ((unsigned int)(v32 + 28) >> 4); - v34 = alloca(v33); - v35 = alloca(v33); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, (char *)&v45, v55, v61, *(_QWORD *)&a7, HIDWORD(a7)); - } - } - else - { - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - v10 = std::__convert_from_v(&c_locale, (char *)&v45, 54, v61, v7, *(_QWORD *)&a7, HIDWORD(a7)); - MaxCount = v10; - if ( v10 > 53 ) - { - v55 = v10 + 1; - v21 = 16 * ((unsigned int)(v10 + 28) >> 4); - v22 = alloca(v21); - v23 = alloca(v21); - c_locale = (int *)std::locale::facet::_S_get_c_locale(); - MaxCount = std::__convert_from_v(&c_locale, (char *)&v45, v55, v61, v7, *(_QWORD *)&a7, HIDWORD(a7)); - } - } - v11 = (int *)std::use_facet>(v58); - v12 = 16 * ((2 * MaxCount + 27) >> 4); - v13 = alloca(v12); - v14 = alloca(v12); - v15 = *v11; - v58 = (int)&v45; - (*(void (__thiscall **)(int *, __int16 *, char *, __int16 *, int, int, int, int, int))(v15 + 44))( - v11, - &v45, - (char *)&v45 + MaxCount, - &v45, - v36, - v37, - v41, - v43, - v44); - v16 = MaxCount; - if ( !MaxCount ) - { - if ( *((_BYTE *)v57 + 16) ) - { - v17 = 0; - goto LABEL_15; - } -LABEL_9: - v19 = a4[2]; - if ( v16 >= v19 ) - goto LABEL_10; - goto LABEL_18; - } - v17 = (char *)memchr(&v45, 46, MaxCount); - v18 = *((_BYTE *)v57 + 16); - if ( !v17 ) - { - if ( v18 && (v16 <= 2 || SHIBYTE(v45) <= 57 && (unsigned __int8)(v46 - 48) <= 9u && SHIBYTE(v45) > 47) ) - goto LABEL_15; - goto LABEL_9; - } - v17 = (char *)(&v45 + v17 - (char *)&v45); - *(_WORD *)v17 = *((_WORD *)v57 + 18); - if ( !v18 ) - goto LABEL_9; -LABEL_15: - v24 = 16 * ((unsigned int)(4 * v16 + 27) >> 4); - v25 = alloca(v24); - v26 = alloca(v24); - if ( (((_BYTE)v45 - 43) & 0xFD) != 0 ) - { - v27 = &v50; - v28 = 0; - } - else - { - v27 = &v51; - v58 = (int)&v46; - v50 = v45; - MaxCount = v16 - 1; - v28 = 1; - } - v55 = (int)&v50; - std::num_put>::_M_group_float( - *((char **)v57 + 2), - *((_DWORD *)v57 + 3), - *((_WORD *)v57 + 19), - v17, - v27, - (char *)v58, - &MaxCount); - v16 = MaxCount + v28; - MaxCount = v16; - v58 = v55; - v19 = a4[2]; - if ( v16 >= v19 ) - goto LABEL_10; -LABEL_18: - v29 = 16 * ((unsigned int)(2 * v19 + 27) >> 4); - v30 = alloca(v29); - v31 = alloca(v29); - v49 = v16; - v16 = v19; - std::__pad>::_S_pad(a4, (void *)(unsigned __int16)v52, &v50, (_WORD *)v58, v19, v49); - MaxCount = v19; - v58 = (int)&v50; -LABEL_10: - a4[2] = 0; - if ( !(_BYTE)v54 ) - (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v56 + 48))(v56, v58, v16); - return v56; -} -// 488698: bad sp value at call -// 488678: variable 'v36' is possibly undefined -// 488678: variable 'v37' is possibly undefined -// 488678: variable 'v41' is possibly undefined -// 488678: variable 'v43' is possibly undefined -// 488678: variable 'v44' is possibly undefined - -//----- (00488950) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, __int16, int); // eax - int v7; // edi - int result; // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, __int16, int))(*(_DWORD *)this + 36); - if ( v6 != std::num_put>::do_put ) - return ((int (__fastcall *)(void *, int, int, int, _DWORD *, _DWORD, int))v6)(this, a6, a2, a3, a4, a5, a6); - v7 = a4[3]; - a4[3] = v7 & 0xFFFFBDB5 | 0x208; - result = std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - a4[3] = v7; - return result; -} - -//----- (004889F0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int a4, - unsigned __int16 a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00488A10) -------------------------------------------------------- -int *__thiscall std::num_put>::put( - void *this, - int *a2, - int a3, - std::__num_base *a4, - unsigned __int16 a5, - double a6) -{ - int *(__thiscall *v6)(void *, int *, int, std::__num_base *, __int16, double); // eax - - v6 = *(int *(__thiscall **)(void *, int *, int, std::__num_base *, __int16, double))(*(_DWORD *)this + 28); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); - else - return (int *)((int (__fastcall *)(void *, std::__num_base *, int *, int, std::__num_base *, _DWORD, _DWORD, _DWORD))v6)( - this, - a4, - a2, - a3, - a4, - a5, - LODWORD(a6), - HIDWORD(a6)); -} - -//----- (00488A80) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - int *a4, - unsigned __int16 a5, - long double a6) -{ - int (__thiscall *v6)(void *, int, int, int *, __int16, long double); // eax - - v6 = *(int (__thiscall **)(void *, int, int, int *, __int16, long double))(*(_DWORD *)this + 32); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_float( - this, - a2, - a3, - a4, - a5, - 76, - a6); - else - return ((int (__fastcall *)(void *, int *, int, int, int *, _DWORD, _DWORD, _DWORD, _DWORD))v6)( - this, - a4, - a2, - a3, - a4, - a5, - LODWORD(a6), - DWORD1(a6), - HIDWORD(a6)); -} - -//----- (00488AF0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, int); // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, int))(*(_DWORD *)this + 12); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return v6(a2, a3, a4, a5, a6); -} - -//----- (00488B50) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - int a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, int); // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, int))(*(_DWORD *)this + 16); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return v6(a2, a3, a4, a5, a6); -} - -//----- (00488BB0) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - __int64 a6) -{ - int (__stdcall *v6)(int, int, _DWORD *, unsigned __int16, __int64); // eax - - v6 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, __int64))(*(_DWORD *)this + 20); - if ( v6 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); - else - return ((int (__stdcall *)(int, int, _DWORD *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); -} - -//----- (00488C20) -------------------------------------------------------- -int __thiscall std::num_put>::put( - void *this, - int a2, - int a3, - _DWORD *a4, - unsigned __int16 a5, - int a6, - int a7) -{ - int (__stdcall *v7)(int, int, _DWORD *, unsigned __int16, int, int); // eax - - v7 = *(int (__stdcall **)(int, int, _DWORD *, unsigned __int16, int, int))(*(_DWORD *)this + 24); - if ( v7 == std::num_put>::do_put ) - return std::num_put>::_M_insert_int( - a2, - a3, - a4, - a5, - a6, - a7); - else - return v7(a2, a3, a4, a5, a6, a7); -} - -//----- (00488C90) -------------------------------------------------------- -_WORD *__stdcall std::num_put>::_M_pad( - __int16 a1, - int a2, - _DWORD *a3, - _WORD *Size, - _WORD *a5, - int *a6) -{ - _WORD *result; // eax - - result = std::__pad>::_S_pad(a3, (void *)(unsigned __int16)a1, Size, a5, a2, *a6); - *a6 = a2; - return result; -} - -//----- (00488CE0) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - __int16 a4, - int a5) -{ - int v5; // edi - int result; // eax - - v5 = a3[3]; - a3[3] = v5 & 0xFFFFBDB5 | 0x208; - result = std::num_put>::_M_insert_int( - a1, - a2, - a3, - (unsigned __int16)a4, - a5); - a3[3] = v5; - return result; -} - -//----- (00488D60) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - int a5) -{ - int v5; // edi - struct _Unwind_Exception *v7; // eax - int v8; // ecx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - void *v14; // esp - unsigned __int16 v15; // di - void *v16; // esp - unsigned __int16 *v17; // eax - int v18; // edi - int v19; // edi - int v20; // eax - char v21; // cl - int v22; // edi - int v23; // edi - int v24; // eax - char v25; // dl - int v26; // [esp+20h] [ebp-68h] BYREF - int *v27; // [esp+24h] [ebp-64h] - int v28; // [esp+28h] [ebp-60h] - int v29; // [esp+2Ch] [ebp-5Ch] - unsigned __int16 v30; // [esp+32h] [ebp-56h] - int v31; // [esp+34h] [ebp-54h] - int v32; // [esp+38h] [ebp-50h] - int v33; // [esp+3Ch] [ebp-4Ch] - - v5 = a3[3]; - v30 = a4; - v31 = v5; - if ( (v5 & 1) == 0 ) - return std::num_put>::_M_insert_int( - a1, - a2, - a3, - a4, - (unsigned __int8)a5); - v33 = a5; - v7 = std::__use_cache>::operator()(a3 + 27); - if ( (_BYTE)a5 ) - { - v8 = *((_DWORD *)v7 + 5); - v9 = *((_DWORD *)v7 + 6); - } - else - { - v8 = *((_DWORD *)v7 + 7); - v9 = *((_DWORD *)v7 + 8); - } - v29 = v8; - v32 = v9; - v10 = v9; - LOBYTE(v33) = a2; - v11 = a3[2]; - if ( v32 >= v11 ) - { - a3[2] = 0; - if ( !(_BYTE)a2 ) - LOBYTE(v33) = v32 != (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 48))(a1, v29, v32); - return a1; - } - v12 = v11 - v10; - v28 = v12; - v13 = 16 * ((unsigned int)(2 * v12 + 27) >> 4); - v14 = alloca(v13); - v15 = v30; - v16 = alloca(v13); - v17 = (unsigned __int16 *)&v26; - v27 = &v26; - do - { - *v17++ = v15; - --v12; - } - while ( v12 ); - a3[2] = 0; - if ( (v31 & 0xB0) == 32 ) - { - if ( !(_BYTE)a2 ) - { - v22 = v32; - if ( v22 == (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 48))(a1, v29, v32) ) - { - v23 = v28; - v24 = (*(int (__thiscall **)(int, int *, int))(*(_DWORD *)a1 + 48))(a1, v27, v28); - v25 = v33; - if ( v23 != v24 ) - v25 = 1; - LOBYTE(v33) = v25; - return a1; - } -LABEL_23: - LOBYTE(v33) = 1; - } - } - else if ( !(_BYTE)a2 ) - { - v18 = v28; - if ( v18 == (*(int (__thiscall **)(int, int *, int))(*(_DWORD *)a1 + 48))(a1, v27, v28) ) - { - v19 = v32; - v20 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a1 + 48))(a1, v29, v32); - v21 = v33; - if ( v19 != v20 ) - v21 = 1; - LOBYTE(v33) = v21; - return a1; - } - goto LABEL_23; - } - return a1; -} - -//----- (00488F90) -------------------------------------------------------- -int *__thiscall std::num_put>::do_put( - void *this, - int *a2, - int a3, - std::__num_base *a4, - __int16 a5, - double a6) -{ - return std::num_put>::_M_insert_float( - this, - a2, - a3, - a4, - (unsigned __int16)a5, - 0, - a6); -} - -//----- (00488FE0) -------------------------------------------------------- -int __thiscall std::num_put>::do_put( - void *this, - int a2, - int a3, - int *a4, - __int16 a5, - long double a6) -{ - return std::num_put>::_M_insert_float( - this, - a2, - a3, - a4, - (unsigned __int16)a5, - 76, - a6); -} - -//----- (00489030) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - int a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (00489040) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - int a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (00489050) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - __int64 a5) -{ - return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); -} - -//----- (00489060) -------------------------------------------------------- -int __stdcall std::num_put>::do_put( - int a1, - int a2, - _DWORD *a3, - unsigned __int16 a4, - int a5, - int a6) -{ - return std::num_put>::_M_insert_int( - a1, - a2, - a3, - a4, - a5, - a6); -} - -//----- (00489070) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( - _DWORD *this, - int a2) -{ - _DWORD *v2; // esi - _DWORD *v3; // ebx - _DWORD *i; // edi - char v5; // al - _DWORD *v6; // edx - - v2 = this + 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v5 = std::operator<((int)(i + 4), a2); - v6 = (_DWORD *)i[3]; - if ( !v5 ) - v6 = (_DWORD *)i[2]; - if ( !v5 ) - v3 = i; - } - if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) - return v2; - return v3; -} - -//----- (004890D0) -------------------------------------------------------- -const char *std::bad_cast::what() -{ - return "std::bad_cast"; -} - -//----- (004890E0) -------------------------------------------------------- -int __fastcall std::ios_base::failure::what(int a1) -{ - return *(_DWORD *)(a1 + 4); -} - -//----- (00489100) -------------------------------------------------------- -int __stdcall std::messages::_M_convert_to_char(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00489110) -------------------------------------------------------- -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) -{ - *this = std::string::_S_construct(0, 0); - return this; -} - -//----- (00489140) -------------------------------------------------------- -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) -{ - (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); - return this; -} - -//----- (00489180) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3) -{ - int (__stdcall *v3)(int, int); // eax - - v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v3 == std::messages::do_open ) - return 0; - else - return v3(a2, a3); -} - -//----- (004891A0) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3, int a4) -{ - int (__stdcall *v4)(int, int); // edx - - v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v4 == std::messages::do_open ) - return 0; - else - return v4(a2, a3); -} - -//----- (004891E0) -------------------------------------------------------- -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) -{ - int (__stdcall *result)(int); // eax - - result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); - if ( result != std::messages::do_close ) - return (int (__stdcall *)(int))result(a2); - return result; -} -// 489230: using guessed type int __stdcall std::messages::do_close(int); - -//----- (00489200) -------------------------------------------------------- -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, std::string *a6) -{ - const std::string *v8; // [esp+4h] [ebp-18h] - - std::string::string(this, a6, v8); - return this; -} -// 48920D: variable 'v8' is possibly undefined - -//----- (00489220) -------------------------------------------------------- -int __stdcall std::messages::do_open(int a1, int a2) -{ - return 0; -} - -//----- (00489240) -------------------------------------------------------- -int __stdcall std::messages::_M_convert_to_char(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (00489250) -------------------------------------------------------- -_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) -{ - *this = std::wstring::_S_construct(0, 0); - return this; -} - -//----- (00489280) -------------------------------------------------------- -void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) -{ - (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); - return this; -} - -//----- (004892C0) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3) -{ - int (__stdcall *v3)(int, int); // eax - - v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v3 == std::messages::do_open ) - return 0; - else - return v3(a2, a3); -} - -//----- (004892E0) -------------------------------------------------------- -int __thiscall std::messages::open(void *this, int a2, int a3, int a4) -{ - int (__stdcall *v4)(int, int); // edx - - v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); - if ( v4 == std::messages::do_open ) - return 0; - else - return v4(a2, a3); -} - -//----- (00489320) -------------------------------------------------------- -int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) -{ - int (__stdcall *result)(int); // eax - - result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); - if ( result != std::messages::do_close ) - return (int (__stdcall *)(int))result(a2); - return result; -} -// 489370: using guessed type int __stdcall std::messages::do_close(int); - -//----- (00489340) -------------------------------------------------------- -_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _DWORD *a6) -{ - std::wstring::basic_string(this, a6); - return this; -} - -//----- (00489360) -------------------------------------------------------- -int __stdcall std::messages::do_open(int a1, int a2) -{ - return 0; -} - -//----- (00489380) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 489380: using guessed type int var_D[3]; - -//----- (004893B0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); - return this; -} -// 4893B0: using guessed type int var_D[3]; - -//----- (004893E0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); - return this; -} -// 4893E0: using guessed type int var_D[3]; - -//----- (00489410) -------------------------------------------------------- -int __fastcall std::numpunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) - return *(unsigned __int8 *)(a1[2] + 36); - else - return v1(); -} - -//----- (00489430) -------------------------------------------------------- -int __fastcall std::numpunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) - return *(unsigned __int8 *)(a1[2] + 37); - else - return v1(); -} - -//----- (00489450) -------------------------------------------------------- -int __fastcall std::numpunct::do_decimal_point(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); -} - -//----- (00489460) -------------------------------------------------------- -int __fastcall std::numpunct::do_thousands_sep(int a1) -{ - return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); -} - -//----- (00489470) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::numpunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 489470: using guessed type int var_D[3]; - -//----- (004894D0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::numpunct::do_truename ) - std::string::string(this, *(char **)(a2[2] + 20), (int)v5); - else - v3(a2); - return this; -} -// 4894D0: using guessed type int var_D[3]; - -//----- (00489530) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::numpunct::do_falsename ) - std::string::string(this, *(char **)(a2[2] + 28), (int)v5); - else - v3(a2); - return this; -} -// 489530: using guessed type int var_D[3]; - -//----- (00489590) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); - return this; -} -// 489590: using guessed type int var_D[3]; - -//----- (004895C0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); - return this; -} -// 4895C0: using guessed type int var_D[3]; - -//----- (004895F0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) -{ - int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF - - std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); - return this; -} -// 4895F0: using guessed type int var_D[3]; - -//----- (00489620) -------------------------------------------------------- -int __fastcall std::numpunct::decimal_point(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 8); - if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) - return *(unsigned __int16 *)(a1[2] + 36); - else - return v1(); -} - -//----- (00489640) -------------------------------------------------------- -int __fastcall std::numpunct::thousands_sep(_DWORD *a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*a1 + 12); - if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) - return *(unsigned __int16 *)(a1[2] + 38); - else - return v1(); -} - -//----- (00489660) -------------------------------------------------------- -int __fastcall std::numpunct::do_decimal_point(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); -} - -//----- (00489670) -------------------------------------------------------- -int __fastcall std::numpunct::do_thousands_sep(int a1) -{ - return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); -} - -//----- (00489680) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); - if ( (char *)v3 == (char *)std::numpunct::do_grouping ) - std::string::string(this, *(char **)(a2[2] + 8), (int)v5); - else - v3(a2); - return this; -} -// 489680: using guessed type int var_D[3]; - -//----- (004896E0) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); - if ( (char *)v3 == (char *)std::numpunct::do_truename ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 20), (int)v5); - else - v3(a2); - return this; -} -// 4896E0: using guessed type int var_D[3]; - -//----- (00489740) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) -{ - void (__stdcall *v3)(_DWORD *); // edx - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); - if ( (char *)v3 == (char *)std::numpunct::do_falsename ) - std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 28), (int)v5); - else - v3(a2); - return this; -} -// 489740: using guessed type int var_D[3]; - -//----- (004897A0) -------------------------------------------------------- -int __fastcall std::time_get>::date_order(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); - if ( v1 == std::time_get>::do_date_order ) - return 0; - else - return v1(); -} - -//----- (004897C0) -------------------------------------------------------- -int __stdcall std::time_get>::do_get_date( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - _DWORD *v6; // eax - int v7; // esi - unsigned __int64 v8; // rax - char v10; // [esp+28h] [ebp-24h] - char v11; // [esp+28h] [ebp-24h] - - v6 = std::use_facet>(a4 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - (char *)*(_DWORD *)(v6[2] + 8)); - v7 = v8; - BYTE4(v8) = HIDWORD(v8) == -1; - v10 = BYTE4(v8) & ((_DWORD)v8 != 0); - if ( v10 ) - { - BYTE4(v8) = 0; - if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) - { - LODWORD(v8) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v8 + 36))(v8); - BYTE4(v8) = 0; - if ( (_DWORD)v8 == -1 ) - BYTE4(v8) = v10; - if ( (_DWORD)v8 == -1 ) - v7 = 0; - } - } - LOBYTE(v8) = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - LOBYTE(v8) = 0; - if ( a2[2] >= a2[3] ) - { - v11 = BYTE4(v8); - LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - BYTE4(v8) = v11; - LOBYTE(v8) = (_DWORD)v8 == -1; - } - } - } - if ( BYTE4(v8) == (_BYTE)v8 ) - *a5 |= 2u; - return v7; -} - -//----- (004898D0) -------------------------------------------------------- -int __stdcall std::time_get>::do_get_time( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - _DWORD *v6; // eax - int v7; // esi - unsigned __int64 v8; // rax - char v10; // [esp+28h] [ebp-24h] - char v11; // [esp+28h] [ebp-24h] - - v6 = std::use_facet>(a4 + 108); - v8 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - (char *)*(_DWORD *)(v6[2] + 16)); - v7 = v8; - BYTE4(v8) = HIDWORD(v8) == -1; - v10 = BYTE4(v8) & ((_DWORD)v8 != 0); - if ( v10 ) - { - BYTE4(v8) = 0; - if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) - { - LODWORD(v8) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v8 + 36))(v8); - BYTE4(v8) = 0; - if ( (_DWORD)v8 == -1 ) - BYTE4(v8) = v10; - if ( (_DWORD)v8 == -1 ) - v7 = 0; - } - } - LOBYTE(v8) = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - LOBYTE(v8) = 0; - if ( a2[2] >= a2[3] ) - { - v11 = BYTE4(v8); - LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - BYTE4(v8) = v11; - LOBYTE(v8) = (_DWORD)v8 == -1; - } - } - } - if ( BYTE4(v8) == (_BYTE)v8 ) - *a5 |= 2u; - return v7; -} - -//----- (004899E0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_year( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - int a7) -{ - int v7; // edx - _DWORD *v8; // ebx - int v9; // eax - char v10; // si - char v11; // al - int v13; // eax - bool v14; // zf - _DWORD *v15; // eax - _DWORD *v16; // [esp+34h] [ebp-38h] - char v17; // [esp+38h] [ebp-34h] - int v18; // [esp+48h] [ebp-24h] BYREF - int v19[8]; // [esp+4Ch] [ebp-20h] BYREF - - v19[0] = 0; - v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v18, 0, 9999, 4u, a5, v19); - v16 = v8; - if ( v19[0] ) - { - *a6 |= 4u; - } - else - { - v9 = v18 - 1900; - if ( v18 < 0 ) - v9 = v18 + 100; - *(_DWORD *)(a7 + 20) = v9; - } - v10 = v7 == -1; - v17 = (v8 != 0) & v10; - if ( v17 ) - { - v10 = 0; - if ( v8[2] >= v8[3] ) - { - v13 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v14 = v13 == -1; - if ( v13 == -1 ) - v10 = v17; - v15 = 0; - if ( !v14 ) - v15 = v8; - v16 = v15; - } - } - v11 = a4 == -1; - if ( a3 ) - { - if ( a4 == -1 ) - { - v11 = 0; - if ( a3[2] >= a3[3] ) - v11 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - } - if ( v10 == v11 ) - *a6 |= 2u; - return v16; -} -// 489A73: variable 'v7' is possibly undefined -// 4899E0: using guessed type int var_20[8]; - -//----- (00489B30) -------------------------------------------------------- -int __fastcall std::time_get>::get_weekday(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); -} - -//----- (00489B40) -------------------------------------------------------- -int std::time_get>::do_date_order() -{ - return 0; -} - -//----- (00489B50) -------------------------------------------------------- -int __fastcall std::time_get>::get_monthname(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); -} - -//----- (00489B60) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_num( - _DWORD *a1, - int a2, - _DWORD *a3, - int a4, - int *a5, - signed int a6, - int a7, - unsigned int a8, - int a9, - _DWORD *a10) -{ - unsigned int v10; // ebp - int v12; // eax - int v13; // edi - char v14; // al - unsigned __int8 v15; // al - unsigned int v16; // eax - bool v17; // dl - char v18; // bl - int v19; // ebx - char v20; // dl - int (__stdcall *v21)(unsigned __int8, int); // eax - int v23; // eax - char *v24; // eax - int v25; // eax - int v26; // eax - unsigned int v28; // [esp+20h] [ebp-2Ch] - _BYTE *v29; // [esp+24h] [ebp-28h] - bool v31; // [esp+2Fh] [ebp-1Dh] - - v10 = 10; - v29 = std::use_facet>(a9 + 108); - if ( a8 != 2 ) - { - v12 = 1; - if ( a8 == 4 ) - v12 = 1000; - v10 = v12; - } - v28 = 0; - v13 = 0; - while ( 1 ) - { - v17 = a2 == -1; - v18 = v17 && a1 != 0; - if ( v18 ) - { - if ( a1[2] >= a1[3] ) - { - v25 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v17 = a2 == -1; - if ( v25 != -1 ) - v18 = 0; - if ( v25 == -1 ) - a1 = 0; - } - else - { - v18 = 0; - } - } - else - { - v18 = a2 == -1; - } - if ( a3 && a4 == -1 ) - { - if ( a3[2] >= a3[3] ) - { - v31 = v17; - v23 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v17 = v31; - if ( v23 == -1 ) - { - a3 = 0; - v18 ^= 1u; - } - } - } - else - { - v18 ^= a4 == -1; - } - if ( v28 >= a8 || !v18 ) - break; - if ( a1 && v17 ) - { - v24 = (char *)a1[2]; - if ( (unsigned int)v24 >= a1[3] ) - { - v26 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v26 == -1 ) - { - v20 = -1; - v19 = 255; - a1 = 0; - } - else - { - v19 = (unsigned __int8)v26; - v20 = v26; - } - } - else - { - v19 = (unsigned __int8)*v24; - v20 = *v24; - } - } - else - { - v19 = (unsigned __int8)a2; - v20 = a2; - } - v14 = v29[v19 + 285]; - if ( !v14 ) - { - v21 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v29 + 32); - if ( v21 != std::ctype::do_narrow ) - v20 = v21(v20, 42); - if ( v20 == 42 ) - goto LABEL_27; - v29[v19 + 285] = v20; - v14 = v20; - } - v15 = v14 - 48; - if ( v15 > 9u ) - goto LABEL_27; - v13 = (char)v15 + 10 * v13; - if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) - goto LABEL_27; - v16 = a1[2]; - v10 /= 0xAu; - if ( v16 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v16 + 1; - ++v28; - a2 = -1; - } - if ( v28 == a8 ) - { -LABEL_30: - *a5 = v13; - return a1; - } -LABEL_27: - if ( a8 == 4 && v28 == 2 ) - { - v13 -= 100; - goto LABEL_30; - } - *a10 |= 4u; - return a1; -} - -//----- (00489E20) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_weekday( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int a6) -{ - _DWORD *v6; // eax - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // ecx - _DWORD *v11; // ebp - char v12; // dl - char v13; // al - int v15; // eax - int v16; // eax - char v17; // [esp+34h] [ebp-68h] - char v18; // [esp+34h] [ebp-68h] - _DWORD *v19; // [esp+38h] [ebp-64h] - unsigned int v20; // [esp+40h] [ebp-5Ch] BYREF - int v21; // [esp+44h] [ebp-58h] BYREF - int v22[21]; // [esp+48h] [ebp-54h] BYREF - - v21 = 0; - v6 = (_DWORD *)*((_DWORD *)std::use_facet>(a4 + 108) + 2); - v22[0] = v6[18]; - v22[1] = v6[19]; - v22[2] = v6[20]; - v22[3] = v6[21]; - v22[4] = v6[22]; - v22[5] = v6[23]; - v22[6] = v6[24]; - v22[7] = v6[11]; - v22[8] = v6[12]; - v22[9] = v6[13]; - v22[10] = v6[14]; - v22[11] = v6[15]; - v7 = v6[16]; - v8 = v6[17]; - v22[12] = v7; - v22[13] = v8; - v10 = (_DWORD *)std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - &v20, - (int)v22, - 7u, - a4, - &v21); - v11 = v10; - if ( v21 ) - *a5 |= 4u; - else - *(_DWORD *)(a6 + 24) = v20; - v12 = v9 == -1; - v17 = v12 & (v10 != 0); - if ( v17 ) - { - v12 = 0; - if ( v10[2] >= v10[3] ) - { - v11 = 0; - v19 = v10; - v16 = (*(int (**)(void))(*v10 + 36))(); - v12 = 0; - if ( v16 != -1 ) - v11 = v19; - if ( v16 == -1 ) - v12 = v17; - } - } - v13 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v13 = 0; - if ( a2[2] >= a2[3] ) - { - v18 = v12; - v15 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v12 = v18; - v13 = v15 == -1; - } - } - } - if ( v12 == v13 ) - *a5 |= 2u; - return v11; -} -// 489F2F: variable 'v9' is possibly undefined - -//----- (00489FE0) -------------------------------------------------------- -unsigned __int64 __stdcall std::time_get>::_M_extract_name( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int **a4, - int a5, - int a6, - int a7, - _DWORD *a8) -{ - _DWORD *v8; // edi - int v9; // ebx - int *v10; // edx - int v11; // eax - void *v12; // esp - void *v13; // esp - char v14; // bl - int v16; // edi - unsigned int v17; // ebx - int *v18; // esi - int v19; // edx - int v20; // eax - char v21; // al - int v22; // ecx - int *v23; // esi - int *v24; // edx - int v25; // esi - size_t v26; // eax - unsigned int v27; // ebx - unsigned int i; // esi - size_t v29; // eax - int *v30; // esi - unsigned int v31; // edi - unsigned int v32; // eax - char v33; // di - unsigned int j; // edi - char v35; // si - _BYTE *v36; // eax - int v37; // eax - const char *v38; // edi - unsigned int v39; // ebx - size_t v40; // eax - unsigned int v41; // esi - int *v42; // edi - char v43; // bl - int v44; // ecx - char v45; // bl - int v46; // eax - _BYTE *v47; // eax - char v48; // dl - int v49; // eax - int v50; // eax - int v51; // eax - int v52; // eax - int v53; // eax - int v54; // eax - int v55; // eax - bool v56; // zf - _DWORD *v57; // eax - int v58; // eax - int v59; // eax - int v60; // eax - int v61; // eax - bool v62; // zf - _DWORD *v63; // eax - int v64; // eax - int v65; // eax - int v66; // [esp+10h] [ebp-38h] BYREF - _DWORD *v67; // [esp+18h] [ebp-30h] - int *v68; // [esp+1Ch] [ebp-2Ch] - int *v69; // [esp+20h] [ebp-28h] - int *v70; // [esp+24h] [ebp-24h] - int *v71; // [esp+28h] [ebp-20h] - unsigned int v72; // [esp+2Ch] [ebp-1Ch] - - v8 = a2; - v9 = a3; - v67 = a2; - v10 = (int *)std::use_facet>(a7 + 108); - v11 = 16 * ((unsigned int)(4 * a6 + 27) >> 4); - v12 = alloca(v11); - v13 = alloca(v11); - LOBYTE(v72) = HIDWORD(a1) == -1; - LOBYTE(v71) = v72 & ((_DWORD)a1 != 0); - if ( (_BYTE)v71 ) - { - LOBYTE(v72) = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v53 = *(_DWORD *)a1; - v70 = v10; - v54 = (*(int (**)(void))(v53 + 36))(); - v10 = v70; - if ( v54 == -1 ) - { - LODWORD(a1) = 0; - LOBYTE(v72) = (_BYTE)v71; - } - } - } - LOBYTE(v70) = v9 == -1; - v14 = (unsigned __int8)v70 & (v8 != 0); - if ( v14 ) - { - if ( v8[2] >= v8[3] ) - { - v60 = *v8; - v71 = v10; - v61 = (*(int (__fastcall **)(_DWORD *))(v60 + 36))(v8); - v10 = v71; - v62 = v61 == -1; - if ( v61 != -1 ) - v14 = 0; - v63 = 0; - if ( !v62 ) - v63 = v8; - v67 = v63; - } - else - { - v14 = 0; - } - } - else - { - v14 = (char)v70; - } - if ( v14 == (_BYTE)v72 ) - goto LABEL_5; - v69 = v10; - LOBYTE(v72) = std::istreambuf_iterator::_M_get((int)&a1); - if ( !a6 ) - goto LABEL_5; - v71 = &v66; - v16 = 0; - v17 = 0; - v18 = v69; - v19 = a5; - do - { - while ( 1 ) - { - v22 = **(char **)(v19 + 4 * v16); - if ( (_BYTE)v22 == (_BYTE)v72 ) - break; - v20 = *v18; - a5 = v19; - v21 = (*(int (__thiscall **)(int *, int))(v20 + 8))(v18, v22); - v19 = a5; - if ( (_BYTE)v72 == v21 ) - break; - if ( a6 == ++v16 ) - goto LABEL_13; - } - v71[v17++] = v16++; - } - while ( a6 != v16 ); -LABEL_13: - v72 = 0; - v23 = v71; - if ( v17 <= 1 ) - goto LABEL_35; - v24 = v71; - do - { - v25 = *v24; - v68 = v24; - v26 = strlen(*(const char **)(a5 + 4 * v25)); - v71 = (int *)v17; - v69 = (int *)v25; - v27 = v26; - for ( i = 1; i < (unsigned int)v71; ++i ) - { - v29 = strlen(*(const char **)(a5 + 4 * v68[i])); - if ( v27 > v29 ) - v27 = v29; - } - v24 = v68; - v30 = v69; - v31 = v27; - v17 = (unsigned int)v71; - v32 = *(_DWORD *)(a1 + 8); - if ( v32 >= *(_DWORD *)(a1 + 12) ) - { - v52 = *(_DWORD *)a1; - v71 = v68; - (*(void (__fastcall **)(_DWORD))(v52 + 40))(a1); - v24 = v71; - } - else - { - *(_DWORD *)(a1 + 8) = v32 + 1; - } - ++v72; - HIDWORD(a1) = -1; - if ( v72 >= v31 ) - goto LABEL_5; - LOBYTE(v71) = 1; - if ( (_DWORD)a1 ) - { - LOBYTE(v71) = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v58 = *(_DWORD *)a1; - v69 = v24; - v59 = (*(int (**)(void))(v58 + 36))(); - v24 = v69; - if ( v59 == -1 ) - { - LODWORD(a1) = 0; - LOBYTE(v71) = 1; - } - } - } - v33 = (unsigned __int8)v70 & (v67 != 0); - if ( v33 ) - { - if ( v67[2] >= v67[3] ) - { - v69 = v24; - v55 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); - v24 = v69; - v56 = v55 == -1; - if ( v55 != -1 ) - v33 = 0; - v57 = 0; - if ( !v56 ) - v57 = v67; - v67 = v57; - } - else - { - v33 = 0; - } - } - else - { - v33 = (char)v70; - } - if ( (_BYTE)v71 == v33 ) - goto LABEL_5; - for ( j = 0; ; v30 = (int *)v24[j] ) - { - v35 = *(_BYTE *)(*(_DWORD *)(a5 + 4 * (_DWORD)v30) + v72); - LOBYTE(v36) = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v36 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v36 >= *(_DWORD *)(a1 + 12) ) - { - v51 = *(_DWORD *)a1; - v71 = v24; - v36 = (_BYTE *)(*(int (**)(void))(v51 + 36))(); - v24 = v71; - if ( v36 == (_BYTE *)-1 ) - LODWORD(a1) = 0; - } - else - { - LOBYTE(v36) = *v36; - } - } - if ( v35 == (_BYTE)v36 ) - break; - v24[j] = v24[--v17]; - if ( v17 <= j ) - goto LABEL_33; -LABEL_29: - ; - } - if ( v17 > ++j ) - goto LABEL_29; -LABEL_33: - ; - } - while ( v17 > 1 ); - v23 = v24; -LABEL_35: - if ( v17 == 1 ) - { - std::streambuf::sbumpc((_DWORD *)a1); - v37 = *v23; - HIDWORD(a1) = -1; - v38 = *(const char **)(a5 + 4 * v37); - v69 = (int *)v37; - v39 = v72 + 1; - v40 = strlen(v38); - v71 = (int *)v40; - if ( v72 + 1 < v40 ) - { - v72 = (unsigned int)v38; - v41 = v39; - v42 = v67; - while ( 1 ) - { - v48 = 1; - if ( (_DWORD)a1 ) - { - v48 = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v49 = *(_DWORD *)a1; - LOBYTE(v68) = 0; - v50 = (*(int (**)(void))(v49 + 36))(); - v48 = (char)v68; - if ( v50 == -1 ) - { - LODWORD(a1) = 0; - v48 = 1; - } - } - } - v43 = (unsigned __int8)v70 & (v42 != 0); - if ( v43 ) - { - if ( v42[2] >= (unsigned int)v42[3] ) - { - v64 = *v42; - LOBYTE(v68) = v48; - v65 = (*(int (__fastcall **)(int *))(v64 + 36))(v42); - v48 = (char)v68; - if ( v65 != -1 ) - v43 = 0; - if ( v65 == -1 ) - v42 = 0; - } - else - { - v43 = 0; - } - } - else - { - v43 = (char)v70; - } - if ( v43 == v48 ) - goto LABEL_5; - v44 = a1; - v45 = *(_BYTE *)(v72 + v41); - LOBYTE(v46) = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v47 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v47 < *(_DWORD *)(a1 + 12) ) - { - if ( v45 != *v47 ) - goto LABEL_5; - goto LABEL_44; - } - v46 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); - if ( v46 == -1 ) - LODWORD(a1) = 0; - } - if ( v45 != (_BYTE)v46 ) - goto LABEL_5; - v44 = a1; - v47 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - goto LABEL_45; - } -LABEL_44: - *(_DWORD *)(v44 + 8) = v47 + 1; -LABEL_45: - HIDWORD(a1) = -1; - if ( (int *)++v41 == v71 ) - goto LABEL_81; - } - } - if ( v39 == v40 ) - { -LABEL_81: - *a4 = v69; - return a1; - } - } -LABEL_5: - *a8 |= 4u; - return a1; -} - -//----- (0048A4B0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_monthname( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int a6) -{ - _DWORD *v6; // eax - int v7; // edx - int v8; // edx - int v9; // edx - _DWORD *v10; // ecx - _DWORD *v11; // ebp - char v12; // dl - char v13; // al - int v15; // eax - int v16; // eax - char v17; // [esp+34h] [ebp-98h] - char v18; // [esp+34h] [ebp-98h] - _DWORD *v19; // [esp+38h] [ebp-94h] - unsigned int v20; // [esp+48h] [ebp-84h] BYREF - int v21; // [esp+4Ch] [ebp-80h] BYREF - int v22[31]; // [esp+50h] [ebp-7Ch] BYREF - - v6 = (_DWORD *)*((_DWORD *)std::use_facet>(a4 + 108) + 2); - v22[0] = v6[37]; - v22[1] = v6[38]; - v22[2] = v6[39]; - v22[3] = v6[40]; - v22[4] = v6[41]; - v22[5] = v6[42]; - v22[6] = v6[43]; - v22[7] = v6[44]; - v22[8] = v6[45]; - v22[9] = v6[46]; - v22[10] = v6[47]; - v22[11] = v6[48]; - v22[12] = v6[25]; - v22[13] = v6[26]; - v22[14] = v6[27]; - v22[15] = v6[28]; - v7 = v6[29]; - v21 = 0; - v22[16] = v7; - v22[17] = v6[30]; - v22[18] = v6[31]; - v22[19] = v6[32]; - v22[20] = v6[33]; - v22[21] = v6[34]; - v8 = v6[35]; - v22[23] = v6[36]; - v22[22] = v8; - v10 = (_DWORD *)std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - &v20, - (int)v22, - 0xCu, - a4, - &v21); - v11 = v10; - if ( v21 ) - *a5 |= 4u; - else - *(_DWORD *)(a6 + 16) = v20; - v12 = v9 == -1; - v17 = v12 & (v10 != 0); - if ( v17 ) - { - v12 = 0; - if ( v10[2] >= v10[3] ) - { - v11 = 0; - v19 = v10; - v16 = (*(int (**)(void))(*v10 + 36))(); - v12 = 0; - if ( v16 != -1 ) - v11 = v19; - if ( v16 == -1 ) - v12 = v17; - } - } - v13 = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - v13 = 0; - if ( a2[2] >= a2[3] ) - { - v18 = v12; - v15 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v12 = v18; - v13 = v15 == -1; - } - } - } - if ( v12 == v13 ) - *a5 |= 2u; - return v11; -} -// 48A65C: variable 'v9' is possibly undefined - -//----- (0048A710) -------------------------------------------------------- -unsigned __int64 __stdcall std::time_get>::_M_extract_via_format( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char *a7) -{ - int v7; // ebx - _DWORD *v8; // eax - size_t v9; // ebx - _BYTE *v10; // esi - size_t v11; // eax - _DWORD *v12; // ecx - int v13; // eax - char v14; // dl - char v15; // di - size_t v16; // edi - char *v17; // ebp - int v18; // edx - char v19; // al - char v20; // cl - int (__stdcall *v21)(unsigned __int8, int); // eax - _BYTE *v22; // eax - char v23; // bl - int v24; // eax - int v25; // ebp - char v26; // al - char v27; // dl - int (__stdcall *v28)(unsigned __int8, int); // eax - char v29; // al - int v31; // eax - int v32; // ebx - char v33; // dl - int (__stdcall *v34)(unsigned __int8, int); // eax - unsigned __int64 v35; // rax - int *v36; // eax - _DWORD *v37; // eax - int v38; // eax - unsigned __int64 v39; // rax - _DWORD *v40; // eax - char v41; // al - char *v42; // eax - unsigned __int64 v43; // rax - _DWORD *v44; // eax - int v45; // eax - unsigned __int64 v46; // rax - unsigned __int64 v47; // rax - unsigned __int64 v48; // rax - unsigned __int64 v49; // rax - unsigned __int64 v50; // rax - char v51; // al - char v52; // bp - char v53; // al - char v54; // bp - char v55; // al - unsigned __int64 v56; // rax - unsigned __int64 v57; // rax - _DWORD *v58; // eax - int (__stdcall *v59)(unsigned __int8); // edx - int v60; // ecx - int (__stdcall *v61)(unsigned __int8); // edx - int v62; // edx - int Stra; // [esp+0h] [ebp-9Ch] - int Str; // [esp+0h] [ebp-9Ch] - size_t v65; // [esp+30h] [ebp-6Ch] - _DWORD *v66; // [esp+38h] [ebp-64h] - char v67; // [esp+3Ch] [ebp-60h] - int v68; // [esp+3Ch] [ebp-60h] - int v69; // [esp+48h] [ebp-54h] BYREF - int *v70; // [esp+4Ch] [ebp-50h] BYREF - unsigned int v71; // [esp+50h] [ebp-4Ch] BYREF - int v72; // [esp+54h] [ebp-48h] - int v73; // [esp+58h] [ebp-44h] - int v74; // [esp+5Ch] [ebp-40h] - int v75; // [esp+60h] [ebp-3Ch] - int v76; // [esp+64h] [ebp-38h] - int v77; // [esp+68h] [ebp-34h] - int v78; // [esp+6Ch] [ebp-30h] - int v79; // [esp+70h] [ebp-2Ch] - int v80; // [esp+74h] [ebp-28h] - int v81; // [esp+78h] [ebp-24h] - int v82; // [esp+7Ch] [ebp-20h] - - v7 = a4 + 108; - v8 = std::use_facet>(a4 + 108); - Stra = v7; - v9 = 0; - v66 = v8; - v10 = std::use_facet>(Stra); - v11 = strlen(a7); - v69 = 0; - v12 = (_DWORD *)a1; - v65 = v11; - v13 = HIDWORD(a1); - while ( 1 ) - { - v14 = v13 == -1; - v15 = v14 & (v12 != 0); - if ( v15 ) - { - v14 = 0; - if ( v12[2] >= v12[3] ) - { - v31 = (*(int (__thiscall **)(_DWORD *, int))(*v12 + 36))(v12, Str); - v14 = 0; - if ( v31 == -1 ) - { - LODWORD(a1) = 0; - v14 = v15; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v67 = v14; - v24 = (*(int (**)(void))(*a2 + 36))(); - v14 = v67; - if ( v24 == -1 ) - { - a2 = 0; - v14 = v67 ^ 1; - } - } - } - else - { - v14 ^= a3 == -1; - } - if ( v9 >= v65 || !v14 ) - break; - if ( v69 ) - goto LABEL_32; - v16 = v9 + 1; - v17 = &a7[v9]; - v18 = (unsigned __int8)a7[v9]; - v19 = v10[v18 + 285]; - v20 = a7[v9]; - if ( v19 ) - { -LABEL_14: - if ( v19 != 37 ) - goto LABEL_15; - v25 = (unsigned __int8)a7[v16]; - v26 = v10[v25 + 285]; - v27 = a7[v16]; - if ( !v26 ) - { - v28 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v28 != std::ctype::do_narrow ) - v27 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v28)(v10, v27, 0); - if ( !v27 ) - { -LABEL_43: - v69 |= 4u; - v13 = HIDWORD(a1); - goto LABEL_44; - } - v10[v25 + 285] = v27; - v26 = v27; - } - v70 = 0; - if ( (v26 == 69 || v26 == 79) - && (v16 = v9 + 2, v32 = (unsigned __int8)a7[v9 + 2], v26 = v10[v32 + 285], v33 = v32, !v26) ) - { - v34 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v34 != std::ctype::do_narrow ) - v33 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v34)(v10, (char)v32, 0); - if ( !v33 ) - goto LABEL_43; - v10[v32 + 285] = v33; - v29 = v33 - 65; - if ( (unsigned __int8)(v33 - 65) > 0x38u ) - goto LABEL_43; - } - else - { - v29 = v26 - 65; - } - switch ( v29 ) - { - case 0: - v44 = (_DWORD *)v66[2]; - v71 = v44[11]; - v72 = v44[12]; - v73 = v44[13]; - v74 = v44[14]; - v75 = v44[15]; - v76 = v44[16]; - v45 = v44[17]; - goto LABEL_63; - case 1: - v40 = (_DWORD *)v66[2]; - v71 = v40[25]; - v72 = v40[26]; - v73 = v40[27]; - v74 = v40[28]; - v75 = v40[29]; - v76 = v40[30]; - v77 = v40[31]; - v78 = v40[32]; - v79 = v40[33]; - v80 = v40[34]; - v81 = v40[35]; - v38 = v40[36]; - goto LABEL_52; - case 2: - case 24: - case 56: - LODWORD(v35) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 0, - 9999, - 4u, - a4, - &v69); - a1 = v35; - if ( v69 ) - goto LABEL_55; - v36 = v70 - 475; - if ( (int)v70 < 0 ) - v36 = v70 + 25; - a6[5] = v36; - v13 = HIDWORD(a1); - break; - case 3: - std::ctype::widen(v10, "%m/%d/%y", "%H:%M", &v71); - v43 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - &v69, - a6, - (char *)&v71); - goto LABEL_61; - case 7: - LODWORD(v46) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 0, - 23, - 2u, - a4, - &v69); - goto LABEL_67; - case 8: - LODWORD(v46) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 1, - 12, - 2u, - a4, - &v69); -LABEL_67: - a1 = v46; - if ( v69 ) - goto LABEL_55; - a6[2] = v70; - v13 = HIDWORD(a1); - break; - case 12: - LODWORD(v47) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 0, - 59, - 2u, - a4, - &v69); - a1 = v47; - if ( v69 ) - goto LABEL_55; - a6[1] = v70; - v13 = HIDWORD(a1); - break; - case 17: - std::ctype::widen(v10, "%H:%M", "%H:%M:%S", &v71); - v43 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - &v69, - a6, - (char *)&v71); - goto LABEL_61; - case 18: - LODWORD(v39) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 0, - 60, - 2u, - a4, - &v69); - a1 = v39; - if ( v69 ) - goto LABEL_55; - *a6 = v70; - v13 = HIDWORD(a1); - break; - case 19: - std::ctype::widen(v10, "%H:%M:%S", byte_511F66, &v71); - v43 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - &v69, - a6, - (char *)&v71); - goto LABEL_61; - case 23: - v42 = *(char **)(v66[2] + 16); - goto LABEL_60; - case 25: - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 1) == 0 ) - goto LABEL_43; - a1 = std::time_get>::_M_extract_name( - a1, - a2, - a3, - (int **)&v71, - (int)std::__timepunct_cache::_S_timezones, - 14, - a4, - &v69); - if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) && !(v71 | v69) ) - { - v52 = std::istreambuf_iterator::_M_get((int)&a1); - if ( v10[28] ) - { - v53 = v10[74]; - } - else - { - std::ctype::_M_widen_init((int)v10); - v59 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); - v53 = 45; - if ( v59 != std::ctype::do_widen ) - { - v53 = ((int (__thiscall *)(_BYTE *, int))v59)(v10, 45); - Str = v60; - } - } - if ( v52 == v53 ) - goto LABEL_94; - v54 = std::istreambuf_iterator::_M_get((int)&a1); - if ( v10[28] ) - { - v55 = v10[72]; - } - else - { - std::ctype::_M_widen_init((int)v10); - v61 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v10 + 24); - v55 = 43; - if ( v61 != std::ctype::do_widen ) - { - v55 = ((int (__thiscall *)(_BYTE *, int))v61)(v10, 43); - Str = v62; - } - } - if ( v54 == v55 ) - { -LABEL_94: - LODWORD(v56) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v71, - 0, - 23, - 2u, - a4, - &v69); - a1 = v56; - LODWORD(v57) = std::time_get>::_M_extract_num( - (_DWORD *)v56, - SHIDWORD(v56), - a2, - a3, - (int *)&v71, - 0, - 59, - 2u, - a4, - &v69); - a1 = v57; - } - } - goto LABEL_55; - case 32: - v58 = (_DWORD *)v66[2]; - v71 = v58[18]; - v72 = v58[19]; - v73 = v58[20]; - v74 = v58[21]; - v75 = v58[22]; - v76 = v58[23]; - v45 = v58[24]; -LABEL_63: - v77 = v45; - a1 = std::time_get>::_M_extract_name( - a1, - a2, - a3, - &v70, - (int)&v71, - 7, - a4, - &v69); - if ( v69 ) - goto LABEL_55; - a6[6] = v70; - v13 = HIDWORD(a1); - break; - case 33: - case 39: - v37 = (_DWORD *)v66[2]; - v71 = v37[37]; - v72 = v37[38]; - v73 = v37[39]; - v74 = v37[40]; - v75 = v37[41]; - v76 = v37[42]; - v77 = v37[43]; - v78 = v37[44]; - v79 = v37[45]; - v80 = v37[46]; - v81 = v37[47]; - v38 = v37[48]; -LABEL_52: - v82 = v38; - a1 = std::time_get>::_M_extract_name( - a1, - a2, - a3, - &v70, - (int)&v71, - 12, - a4, - &v69); - if ( v69 ) - goto LABEL_55; - a6[4] = v70; - v13 = HIDWORD(a1); - break; - case 34: - v42 = *(char **)(v66[2] + 24); - goto LABEL_60; - case 35: - LODWORD(v48) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 1, - 31, - 2u, - a4, - &v69); - a1 = v48; - if ( v69 ) - goto LABEL_55; - a6[3] = v70; - v13 = HIDWORD(a1); - break; - case 36: - if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 0x20) != 0 ) - { - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - LODWORD(v49) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - -1, - a2, - a3, - (int *)&v70, - 1, - 9, - 1u, - a4, - &v69); - } - else - { - LODWORD(v49) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 10, - 31, - 2u, - a4, - &v69); - } - a1 = v49; - v13 = HIDWORD(v49); - if ( !v69 ) - a6[3] = v70; - break; - case 44: - LODWORD(v50) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - SHIDWORD(a1), - a2, - a3, - (int *)&v70, - 1, - 12, - 2u, - a4, - &v69); - a1 = v50; - if ( v69 ) - { -LABEL_55: - v13 = HIDWORD(a1); - } - else - { - a6[4] = (char *)v70 - 1; - v13 = HIDWORD(a1); - } - break; - case 45: - v51 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (unsigned __int8)std::ctype::narrow(v10, v51, 0) != 10 ) - goto LABEL_43; - goto LABEL_58; - case 51: - v41 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (unsigned __int8)std::ctype::narrow(v10, v41, 0) != 9 ) - goto LABEL_43; -LABEL_58: - std::streambuf::sbumpc((_DWORD *)a1); - v13 = -1; - HIDWORD(a1) = -1; - break; - case 55: - v42 = *(char **)(v66[2] + 8); -LABEL_60: - v43 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, &v69, a6, v42); -LABEL_61: - a1 = v43; - v13 = HIDWORD(v43); - break; - default: - goto LABEL_43; - } -LABEL_44: - v12 = (_DWORD *)a1; - v9 = v16 + 1; - } - else - { - v21 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); - if ( v21 != std::ctype::do_narrow ) - { - v68 = (unsigned __int8)a7[v9]; - v20 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v21)(v10, (char)v18, 0); - v18 = v68; - } - if ( v20 ) - { - v10[v18 + 285] = v20; - v19 = v20; - goto LABEL_14; - } -LABEL_15: - LOBYTE(v22) = BYTE4(a1); - v23 = *v17; - v12 = (_DWORD *)a1; - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ) - { - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 == (_BYTE *)-1 ) - { - LODWORD(a1) = 0; - v12 = 0; - LOBYTE(v22) = -1; - } - else - { - v12 = (_DWORD *)a1; - } - } - else - { - LOBYTE(v22) = *v22; - } - } - if ( v23 == (_BYTE)v22 ) - { - std::streambuf::sbumpc(v12); - v9 = v16; - v13 = -1; - HIDWORD(a1) = -1; - v12 = (_DWORD *)a1; - } - else - { - v69 |= 4u; - v13 = HIDWORD(a1); - v9 = v16; - } - } - } - if ( v69 || v9 != v65 ) -LABEL_32: - *a5 |= 4u; - return a1; -} -// 48A924: variable 'Str' is possibly undefined -// 48AA96: variable 'v35' is possibly undefined -// 48AC57: variable 'v39' is possibly undefined -// 48AF13: variable 'v46' is possibly undefined -// 48AFE1: variable 'v47' is possibly undefined -// 48B0E6: variable 'v48' is possibly undefined -// 48B1A7: variable 'v49' is possibly undefined -// 48B23A: variable 'v50' is possibly undefined -// 48B45B: variable 'v56' is possibly undefined -// 48B471: variable 'v57' is possibly undefined -// 48B5C1: variable 'v60' is possibly undefined -// 48B5EF: variable 'v62' is possibly undefined -// 50C560: using guessed type void *std::__timepunct_cache::_S_timezones[2]; -// 511F66: using guessed type _BYTE byte_511F66[2]; - -//----- (0048B600) -------------------------------------------------------- -int __stdcall std::time_get>::_M_extract_wday_or_month( - unsigned __int64 a1, - _DWORD *a2, - int a3, - unsigned int *a4, - int a5, - unsigned int a6, - int a7, - _DWORD *a8) -{ - _DWORD *v8; // esi - int v9; // ebx - int v10; // eax - void *v11; // esp - void *v12; // esp - unsigned __int8 v13; // dl - char v14; // bl - int v15; // eax - unsigned int v16; // edi - unsigned int v17; // esi - int *v18; // ecx - char v19; // dl - char v20; // bl - char v21; // bl - _BYTE *v22; // eax - unsigned int v23; // edx - unsigned int *v24; // ecx - unsigned int v25; // eax - int v26; // eax - int v27; // eax - unsigned int v29; // eax - unsigned int v30; // ebx - int v31; // edx - int *v32; // esi - int v33; // eax - char v34; // al - int v35; // ecx - int v36; // eax - void *v37; // esp - int v38; // esi - void *v39; // esp - int v40; // ecx - unsigned int *v41; // edi - int *v42; // ebx - unsigned int v43; // eax - unsigned __int8 v44; // di - int v45; // eax - int v46; // eax - int v47; // eax - int v48; // eax - bool v49; // zf - _DWORD *v50; // eax - int v51; // eax - int v52; // eax - bool v53; // zf - _DWORD *v54; // eax - int v55; // [esp+10h] [ebp-38h] BYREF - unsigned int *v56; // [esp+14h] [ebp-34h] - _DWORD *v57; // [esp+18h] [ebp-30h] - bool v58; // [esp+1Eh] [ebp-2Ah] - char v59; // [esp+1Fh] [ebp-29h] - int *v60; // [esp+20h] [ebp-28h] - unsigned int *v61; // [esp+24h] [ebp-24h] - unsigned int *v62; // [esp+28h] [ebp-20h] - unsigned int *v63; // [esp+2Ch] [ebp-1Ch] - - v8 = a2; - v9 = a3; - v57 = a2; - v60 = (int *)std::use_facet>(a7 + 108); - v10 = 16 * ((8 * a6 + 27) >> 4); - v11 = alloca(v10); - v12 = alloca(v10); - v13 = HIDWORD(a1) == -1; - v62 = (unsigned int *)&v55; - if ( (v13 & ((_DWORD)a1 != 0)) != 0 ) - { - v44 = v13 & ((_DWORD)a1 != 0); - v13 = 0; - if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) - { - v45 = *(_DWORD *)a1; - LOBYTE(v63) = 0; - v46 = (*(int (**)(void))(v45 + 36))(); - v13 = (unsigned __int8)v63; - if ( v46 == -1 ) - { - LODWORD(a1) = 0; - v13 = v44; - } - } - } - v58 = v9 == -1; - v14 = v58 && v8 != 0; - if ( v14 ) - { - if ( v8[2] >= v8[3] ) - { - v51 = *v8; - LOBYTE(v63) = v13; - v52 = (*(int (__fastcall **)(_DWORD *))(v51 + 36))(v8); - v13 = (unsigned __int8)v63; - v53 = v52 == -1; - if ( v52 != -1 ) - v14 = 0; - v54 = 0; - if ( !v53 ) - v54 = v8; - v57 = v54; - } - else - { - v14 = 0; - } - } - else - { - v14 = v58; - } - if ( v13 == v14 ) - { - v56 = 0; - v15 = HIDWORD(a1); - v16 = 0; - v17 = 0; - v18 = (int *)a1; - } - else - { - v30 = 0; - v16 = 0; - LOBYTE(v63) = std::istreambuf_iterator::_M_get((int)&a1); - v17 = 2 * a6; - if ( 2 * a6 ) - { - v61 = (unsigned int *)(2 * a6); - v31 = a5; - v32 = v60; - do - { - while ( 1 ) - { - v35 = **(char **)(v31 + 4 * v30); - if ( (_BYTE)v35 == (_BYTE)v63 ) - break; - v33 = *v32; - a5 = v31; - v34 = (*(int (__thiscall **)(int *, int))(v33 + 8))(v32, v35); - v31 = a5; - if ( (_BYTE)v63 == v34 ) - break; - if ( (unsigned int *)++v30 == v61 ) - goto LABEL_47; - } - v62[v16++] = v30++; - } - while ( (unsigned int *)v30 != v61 ); -LABEL_47: - v18 = (int *)a1; - if ( v16 ) - { - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - v36 = 16 * ((4 * v16 + 27) >> 4); - v37 = alloca(v36); - v38 = a5; - v39 = alloca(v36); - v40 = (int)&v62[v16]; - v61 = (unsigned int *)v16; - v41 = v62; - v63 = (unsigned int *)v40; - v56 = (unsigned int *)&v55; - v42 = &v55; - do - { - v43 = *v41; - ++v42; - ++v41; - *(v42 - 1) = strlen(*(const char **)(v38 + 4 * v43)); - } - while ( v41 != v63 ); - v16 = (unsigned int)v61; - v18 = (int *)a1; - v15 = -1; - v17 = 1; - } - else - { - v56 = 0; - v15 = HIDWORD(a1); - v17 = 0; - } - } - else - { - v15 = HIDWORD(a1); - v18 = (int *)a1; - v56 = 0; - } - } - v19 = v15 == -1; - v20 = v19 & (v18 != 0); - if ( v20 ) - goto LABEL_23; -LABEL_7: - v21 = v58 && v57 != 0; - if ( !v21 ) - { - v21 = v58; - goto LABEL_9; - } - if ( v57[2] >= v57[3] ) - { - v47 = *v57; - LOBYTE(v63) = v19; - v48 = (*(int (__fastcall **)(_DWORD *))(v47 + 36))(v57); - v19 = (char)v63; - v49 = v48 == -1; - if ( v48 != -1 ) - v21 = 0; - v50 = 0; - if ( !v49 ) - v50 = v57; - v57 = v50; -LABEL_9: - if ( v21 == v19 ) - goto LABEL_29; -LABEL_10: - LOBYTE(v22) = BYTE4(a1); - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v22 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ) - { - v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v22 == (_BYTE *)-1 ) - { - LODWORD(a1) = 0; - v59 = -1; - goto LABEL_12; - } - } - else - { - LOBYTE(v22) = *v22; - } - } - v59 = (char)v22; -LABEL_12: - if ( !v16 ) - goto LABEL_31; - v23 = 0; - v60 = 0; - v63 = v56; - while ( 1 ) - { - while ( 1 ) - { - v24 = &v63[v23]; - if ( *v24 > v17 ) - break; - v60 = (int *)((char *)v60 + 1); - ++v23; -LABEL_15: - if ( v16 <= v23 ) - goto LABEL_19; - } - v61 = &v62[v23]; - if ( *(_BYTE *)(*(_DWORD *)(a5 + 4 * *v61) + v17) == v59 ) - { - ++v23; - goto LABEL_15; - } - *v61 = v62[--v16]; - *v24 = v63[v16]; - if ( v16 <= v23 ) - { -LABEL_19: - if ( v60 == (int *)v16 ) - goto LABEL_29; - v18 = (int *)a1; - v25 = *(_DWORD *)(a1 + 8); - if ( v25 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v18 = (int *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v25 + 1; - } - ++v17; - HIDWORD(a1) = -1; - v19 = 1; - v20 = v18 != 0; - if ( v18 ) - { -LABEL_23: - v19 = 0; - if ( v18[2] >= (unsigned int)v18[3] ) - { - v26 = *v18; - LOBYTE(v63) = 0; - v27 = (*(int (__fastcall **)(int *))(v26 + 36))(v18); - v19 = (char)v63; - if ( v27 == -1 ) - { - LODWORD(a1) = 0; - v19 = v20; - } - } - } - goto LABEL_7; - } - } - } - if ( v19 ) - goto LABEL_10; -LABEL_29: - if ( v16 == 1 ) - { - if ( *v56 != v17 ) - { -LABEL_31: - *a8 |= 4u; - return a1; - } - } - else if ( v16 != 2 || *v56 != v17 && v56[1] != v17 ) - { - goto LABEL_31; - } - v29 = *v62; - if ( *v62 >= a6 ) - v29 = *v62 - a6; - *a4 = v29; - return a1; -} - -//----- (0048BA30) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::get( - _DWORD *a1, - unsigned int a2, - _DWORD *a3, - int a4, - int a5, - _DWORD *a6, - _DWORD *a7, - unsigned __int8 *a8, - unsigned __int8 *a9) -{ - unsigned __int8 *v9; // edi - _DWORD *v11; // ebp - int v12; // edx - char v13; // dl - char v14; // bl - char v15; // dl - char v16; // bl - unsigned int v17; // eax - char v18; // dl - char v19; // bl - char v20; // bl - signed __int8 v21; // dl - int (__stdcall *v22)(unsigned __int8, int); // eax - unsigned __int8 v23; // dl - int (__stdcall *v24)(unsigned __int8, int); // eax - int v25; // edi - int (__stdcall *v26)(unsigned __int8, int); // eax - _BYTE *v27; // eax - char v28; // dl - _BYTE *v29; // edi - char v30; // bl - unsigned __int64 v31; // rax - char v32; // al - unsigned __int8 *i; // edi - int j; // ebp - bool v36; // al - bool v37; // di - char v38; // dl - char v39; // bl - int v40; // eax - unsigned __int8 *v41; // eax - int (__stdcall *v42)(unsigned __int8); // eax - char *v43; // eax - int v44; // eax - int v45; // eax - bool v46; // zf - _DWORD *v47; // eax - char *v48; // eax - int v49; // eax - int v50; // eax - bool v51; // zf - _DWORD *v52; // eax - int v53; // eax - int v54; // eax - bool v55; // [esp+3Fh] [ebp-4Dh] - bool v57; // [esp+44h] [ebp-48h] - char v58; // [esp+44h] [ebp-48h] - _DWORD *v59; // [esp+44h] [ebp-48h] - char v60; // [esp+44h] [ebp-48h] - bool v62; // [esp+48h] [ebp-44h] - char v63; // [esp+48h] [ebp-44h] - int v64; // [esp+4Ch] [ebp-40h] - unsigned __int8 *v65; // [esp+4Ch] [ebp-40h] - char v66; // [esp+4Ch] [ebp-40h] - int v67; // [esp+50h] [ebp-3Ch] - unsigned __int8 v68; // [esp+50h] [ebp-3Ch] - char v69; // [esp+6Ch] [ebp-20h] BYREF - char v70; // [esp+6Dh] [ebp-1Fh] - char v71; // [esp+6Eh] [ebp-1Eh] - char v72; // [esp+6Fh] [ebp-1Dh] - unsigned __int8 *v73; // [esp+ACh] [ebp+20h] - - v9 = a8; - v11 = std::use_facet>(a5 + 108); - *a6 = 0; - if ( a8 == a9 ) - return a1; - v55 = a4 == -1; - while ( 1 ) - { - v57 = a2 == -1; - if ( !v57 || a1 == 0 ) - { - v18 = a2 == -1; - goto LABEL_19; - } - if ( a1[2] >= a1[3] ) - { - v49 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v18 = v57 && a1 != 0; - if ( v49 != -1 ) - v18 = 0; - if ( v49 == -1 ) - a1 = 0; -LABEL_19: - v19 = v55 && a3 != 0; - if ( !v19 ) - goto LABEL_20; - goto LABEL_85; - } - v18 = 0; - v19 = v55 && a3 != 0; - if ( !v19 ) - { -LABEL_20: - v19 = a4 == -1; - goto LABEL_21; - } -LABEL_85: - if ( a3[2] >= a3[3] ) - { - v66 = v18; - v50 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v18 = v66; - v51 = v50 == -1; - if ( v50 != -1 ) - v19 = 0; - v52 = 0; - if ( !v51 ) - v52 = a3; - a3 = v52; -LABEL_21: - if ( v18 == v19 ) - goto LABEL_87; - goto LABEL_22; - } - if ( !v18 ) - { -LABEL_87: - *a6 = 6; - return a1; - } -LABEL_22: - v20 = *((_BYTE *)v11 + *v9 + 285); - v64 = *v9; - v21 = *v9; - if ( !v20 ) - { - v22 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); - if ( v22 != std::ctype::do_narrow ) - v21 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v22)(v11, v21, 0); - if ( !v21 ) - goto LABEL_3; - v20 = v21; - *((_BYTE *)v11 + v64 + 285) = v21; - } - if ( v20 == 37 ) - { - v65 = v9 + 1; - if ( a9 == v9 + 1 ) - break; - v67 = v9[1]; - v23 = v9[1]; - v58 = *((_BYTE *)v11 + v67 + 285); - if ( !v58 ) - { - v24 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); - if ( v24 != std::ctype::do_narrow ) - v23 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v24)(v11, (char)v67, 0); - if ( !v23 ) - goto LABEL_89; - v58 = v23; - *((_BYTE *)v11 + v67 + 285) = v23; - } - if ( v58 == 69 || v58 == 79 ) - { - v65 = v9 + 2; - if ( a9 == v9 + 2 ) - break; - v25 = v9[2]; - v23 = v25; - if ( *((_BYTE *)v11 + v25 + 285) ) - { - v23 = *((_BYTE *)v11 + v25 + 285); - } - else - { - v26 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); - if ( v26 != std::ctype::do_narrow ) - v23 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v26)(v11, (char)v25, 0); - if ( v23 ) - *((_BYTE *)v11 + v25 + 285) = v23; - } -LABEL_42: - v68 = v23; - v27 = std::use_facet>(a5 + 108); - v28 = v68; - v29 = v27; - *a6 = 0; - if ( v27[28] ) - { - v20 = v27[66]; - } - else - { - std::ctype::_M_widen_init((int)v27); - v28 = v68; - v42 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v29 + 24); - if ( v42 != std::ctype::do_widen ) - { - v20 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v42)(v29, v68, 37); - v28 = v68; - } - } - v69 = v20; - if ( v58 ) - { - v71 = v28; - v72 = 0; - v70 = v58; - } - else - { - v70 = v28; - v71 = 0; - } - v31 = std::time_get>::_M_extract_via_format( - __PAIR64__(a2, (unsigned int)a1), - a3, - a4, - a5, - a6, - a7, - &v69); - a1 = (_DWORD *)v31; - v30 = HIDWORD(v31) == -1; - a2 = HIDWORD(v31); - BYTE4(v31) = v30 & ((_DWORD)v31 != 0); - if ( BYTE4(v31) ) - { - v30 = 0; - if ( *(_DWORD *)(v31 + 8) >= *(_DWORD *)(v31 + 12) ) - { - v60 = BYTE4(v31); - if ( (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v31 + 36))(v31) == -1 ) - { - v30 = v60; - a1 = 0; - } - } - } - if ( a3 && a4 == -1 ) - { - v32 = 0; - if ( a3[2] >= a3[3] ) - v32 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; - } - else - { - v32 = a4 == -1; - } - if ( v30 == v32 ) - *a6 |= 2u; - v9 = v65 + 1; - if ( a9 == v65 + 1 ) - return a1; - goto LABEL_16; - } - v23 = v58; -LABEL_89: - v58 = 0; - goto LABEL_42; - } -LABEL_3: - v12 = v11[6]; - if ( (*(_BYTE *)(v12 + 2 * *v9) & 0x20) != 0 ) - { - for ( i = v9 + 1; a9 != i; ++i ) - { - if ( (*(_BYTE *)(v12 + 2 * *i) & 0x20) == 0 ) - break; - } - v73 = i; - v59 = v11; - for ( j = a2; ; j = -1 ) - { - v36 = j == -1; - v37 = v36; - if ( v36 && a1 != 0 ) - { - if ( a1[2] >= a1[3] ) - { - v62 = v36 && a1 != 0; - v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v38 = v62; - if ( v44 != -1 ) - v38 = 0; - if ( v44 == -1 ) - a1 = 0; - } - else - { - v38 = 0; - } - } - else - { - v38 = j == -1; - } - v39 = v55 && a3 != 0; - if ( !v39 ) - break; - if ( a3[2] >= a3[3] ) - { - v63 = v38; - v45 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v38 = v63; - v46 = v45 == -1; - if ( v45 != -1 ) - v39 = 0; - v47 = 0; - if ( !v46 ) - v47 = a3; - a3 = v47; -LABEL_63: - if ( v38 == v39 ) - goto LABEL_76; - goto LABEL_64; - } - if ( !v38 ) - { -LABEL_76: - a2 = j; - v9 = v73; - v11 = v59; - goto LABEL_15; - } -LABEL_64: - if ( a1 && v37 ) - { - v41 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v41 < a1[3] ) - { - if ( (*(_BYTE *)(v59[6] + 2 * *v41) & 0x20) == 0 ) - { - a2 = -1; - v9 = v73; - v11 = v59; - goto LABEL_15; - } -LABEL_69: - a1[2] = v41 + 1; - continue; - } - v40 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v40 == -1 ) - a1 = 0; - } - else - { - LOBYTE(v40) = j; - } - if ( (*(_BYTE *)(v59[6] + 2 * (unsigned __int8)v40) & 0x20) == 0 ) - goto LABEL_76; - v41 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v41 < a1[3] ) - goto LABEL_69; - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - } - v39 = a4 == -1; - goto LABEL_63; - } - if ( a1 && a2 == -1 ) - { - v43 = (char *)a1[2]; - if ( (unsigned int)v43 >= a1[3] ) - { - v53 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v13 = v53; - if ( v53 == -1 ) - v13 = -1; - if ( v53 == -1 ) - a1 = 0; - } - else - { - v13 = *v43; - } - } - else - { - v13 = a2; - } - v14 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, v13); - if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, (char)*v9) != v14 ) - { - if ( a1 && a2 == -1 ) - { - v48 = (char *)a1[2]; - if ( (unsigned int)v48 >= a1[3] ) - { - v54 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v15 = v54; - if ( v54 == -1 ) - v15 = -1; - if ( v54 == -1 ) - a1 = 0; - } - else - { - v15 = *v48; - } - } - else - { - v15 = a2; - } - v16 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, v15); - if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, (char)*v9) != v16 ) - break; - } - v17 = a1[2]; - if ( v17 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v17 + 1; - a2 = -1; - ++v9; -LABEL_15: - if ( a9 == v9 ) - return a1; -LABEL_16: - if ( *a6 ) - return a1; - } - *a6 = 4; - return a1; -} -// 48C059: conditional instruction was optimized away because eax.4==FFFFFFFF - -//----- (0048C200) -------------------------------------------------------- -int __stdcall std::time_get>::get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char a7, - char a8) -{ - _BYTE *v8; // ebp - char v9; // dl - int v10; // esi - unsigned __int64 v11; // rax - char v12; // bp - int (__stdcall *v14)(unsigned __int8); // eax - char v15; // [esp+20h] [ebp-3Ch] - char v16; // [esp+3Ch] [ebp-20h] BYREF - char v17; // [esp+3Dh] [ebp-1Fh] - char v18; // [esp+3Eh] [ebp-1Eh] - char v19; // [esp+3Fh] [ebp-1Dh] - - v8 = std::use_facet>(a4 + 108); - *a5 = 0; - if ( v8[28] ) - { - v9 = v8[66]; - } - else - { - std::ctype::_M_widen_init((int)v8); - v9 = 37; - v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); - if ( v14 != std::ctype::do_widen ) - v9 = ((int (__fastcall *)(_BYTE *, int, int))v14)(v8, 37, 37); - } - v16 = v9; - if ( a8 ) - { - v19 = 0; - v17 = a8; - v18 = a7; - } - else - { - v18 = 0; - v17 = a7; - } - v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); - v10 = v11; - BYTE4(v11) = HIDWORD(v11) == -1; - v12 = BYTE4(v11) & ((_DWORD)v11 != 0); - if ( v12 ) - { - BYTE4(v11) = 0; - if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) - { - LODWORD(v11) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v11 + 36))(v11); - BYTE4(v11) = 0; - if ( (_DWORD)v11 == -1 ) - { - BYTE4(v11) = v12; - v10 = 0; - } - } - } - LOBYTE(v11) = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - LOBYTE(v11) = 0; - if ( a2[2] >= a2[3] ) - { - v15 = BYTE4(v11); - LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - BYTE4(v11) = v15; - LOBYTE(v11) = (_DWORD)v11 == -1; - } - } - } - if ( (_BYTE)v11 == BYTE4(v11) ) - *a5 |= 2u; - return v10; -} -// 48C3A9: conditional instruction was optimized away because eax.4==FFFFFFFF - -//----- (0048C3C0) -------------------------------------------------------- -int __stdcall std::time_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char a7, - char a8) -{ - _BYTE *v8; // ebp - char v9; // dl - int v10; // esi - unsigned __int64 v11; // rax - char v12; // bp - int (__stdcall *v14)(unsigned __int8); // eax - char v15; // [esp+20h] [ebp-3Ch] - char v16; // [esp+3Ch] [ebp-20h] BYREF - char v17; // [esp+3Dh] [ebp-1Fh] - char v18; // [esp+3Eh] [ebp-1Eh] - char v19; // [esp+3Fh] [ebp-1Dh] - - v8 = std::use_facet>(a4 + 108); - *a5 = 0; - if ( v8[28] ) - { - v9 = v8[66]; - } - else - { - std::ctype::_M_widen_init((int)v8); - v9 = 37; - v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); - if ( v14 != std::ctype::do_widen ) - v9 = ((int (__fastcall *)(_BYTE *, int, int))v14)(v8, 37, 37); - } - v16 = v9; - if ( a8 ) - { - v19 = 0; - v17 = a8; - v18 = a7; - } - else - { - v18 = 0; - v17 = a7; - } - v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); - v10 = v11; - BYTE4(v11) = HIDWORD(v11) == -1; - v12 = BYTE4(v11) & ((_DWORD)v11 != 0); - if ( v12 ) - { - BYTE4(v11) = 0; - if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) - { - LODWORD(v11) = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v11 + 36))(v11); - BYTE4(v11) = 0; - if ( (_DWORD)v11 == -1 ) - { - BYTE4(v11) = v12; - v10 = 0; - } - } - } - LOBYTE(v11) = a3 == -1; - if ( a2 ) - { - if ( a3 == -1 ) - { - LOBYTE(v11) = 0; - if ( a2[2] >= a2[3] ) - { - v15 = BYTE4(v11); - LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - BYTE4(v11) = v15; - LOBYTE(v11) = (_DWORD)v11 == -1; - } - } - } - if ( BYTE4(v11) == (_BYTE)v11 ) - *a5 |= 2u; - return v10; -} -// 48C569: conditional instruction was optimized away because eax.4==FFFFFFFF - -//----- (0048C580) -------------------------------------------------------- -int __fastcall std::time_get>::get_date(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); -} - -//----- (0048C590) -------------------------------------------------------- -int __fastcall std::time_get>::get_time(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); -} - -//----- (0048C5A0) -------------------------------------------------------- -int __fastcall std::time_get>::get_year(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); -} - -//----- (0048C5B0) -------------------------------------------------------- -int __fastcall std::time_get>::date_order(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); - if ( v1 == std::time_get>::do_date_order ) - return 0; - else - return v1(); -} - -//----- (0048C5D0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_date( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - _DWORD *v6; // eax - __int64 v7; // rax - _DWORD *v8; // ecx - _DWORD *v9; // ebp - _BOOL2 v10; // bx - bool v11; // cl - __int16 *v13; // eax - __int16 v14; // ax - bool v15; // si - __int16 *v16; // eax - __int16 v17; // ax - _DWORD *v18; // [esp+30h] [ebp-2Ch] - - v6 = std::use_facet>(a4 + 108); - v7 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - (wchar_t *)*(_DWORD *)(v6[2] + 8)); - v8 = (_DWORD *)v7; - v9 = (_DWORD *)v7; - v10 = WORD2(v7) == 0xFFFF; - if ( v10 && (_DWORD)v7 != 0 ) - { - v15 = v10 && (_DWORD)v7 != 0; - v16 = *(__int16 **)(v7 + 8); - if ( (unsigned int)v16 >= v8[3] ) - { - v18 = v8; - v17 = (*(int (**)(void))(*v8 + 36))(); - v8 = v18; - } - else - { - v17 = *v16; - } - LOBYTE(v10) = 0; - v9 = 0; - if ( v17 == -1 ) - LOBYTE(v10) = v15; - if ( v17 != -1 ) - v9 = v8; - } - v11 = (_WORD)a3 == 0xFFFF; - if ( a2 && (_WORD)a3 == 0xFFFF ) - { - v13 = (__int16 *)a2[2]; - if ( (unsigned int)v13 >= a2[3] ) - v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v14 = *v13; - v11 = v14 == -1; - } - if ( v10 == v11 ) - *a5 |= 2u; - return v9; -} - -//----- (0048C700) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_time( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6) -{ - _DWORD *v6; // eax - __int64 v7; // rax - _DWORD *v8; // ecx - _DWORD *v9; // ebp - _BOOL2 v10; // bx - bool v11; // cl - __int16 *v13; // eax - __int16 v14; // ax - bool v15; // si - __int16 *v16; // eax - __int16 v17; // ax - _DWORD *v18; // [esp+30h] [ebp-2Ch] - - v6 = std::use_facet>(a4 + 108); - v7 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - a5, - a6, - (wchar_t *)*(_DWORD *)(v6[2] + 16)); - v8 = (_DWORD *)v7; - v9 = (_DWORD *)v7; - v10 = WORD2(v7) == 0xFFFF; - if ( v10 && (_DWORD)v7 != 0 ) - { - v15 = v10 && (_DWORD)v7 != 0; - v16 = *(__int16 **)(v7 + 8); - if ( (unsigned int)v16 >= v8[3] ) - { - v18 = v8; - v17 = (*(int (**)(void))(*v8 + 36))(); - v8 = v18; - } - else - { - v17 = *v16; - } - LOBYTE(v10) = 0; - v9 = 0; - if ( v17 == -1 ) - LOBYTE(v10) = v15; - if ( v17 != -1 ) - v9 = v8; - } - v11 = (_WORD)a3 == 0xFFFF; - if ( a2 && (_WORD)a3 == 0xFFFF ) - { - v13 = (__int16 *)a2[2]; - if ( (unsigned int)v13 >= a2[3] ) - v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v14 = *v13; - v11 = v14 == -1; - } - if ( v10 == v11 ) - *a5 |= 2u; - return v9; -} - -//----- (0048C830) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_year( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - __int16 v7; // dx - _DWORD *v8; // ecx - _DWORD *v9; // ebp - int v10; // ebx - char v11; // bl - char v12; // cl - __int16 *v14; // eax - __int16 v15; // ax - __int16 *v16; // eax - __int16 v17; // ax - bool v18; // zf - _DWORD *v19; // eax - char v20; // [esp+40h] [ebp-3Ch] - _DWORD *v21; // [esp+44h] [ebp-38h] - int v22; // [esp+58h] [ebp-24h] BYREF - int v23[8]; // [esp+5Ch] [ebp-20h] BYREF - - v23[0] = 0; - v8 = std::time_get>::_M_extract_num( - a1, - a2, - a3, - a4, - &v22, - 0, - 9999, - 4u, - a5, - v23); - v9 = v8; - if ( v23[0] ) - { - *a6 |= 4u; - } - else - { - v10 = v22 + 100; - if ( v22 >= 0 ) - v10 = v22 - 1900; - *(_DWORD *)(a7 + 20) = v10; - } - v11 = v7 == -1; - v20 = v11 & (v8 != 0); - if ( v20 ) - { - v16 = (__int16 *)v8[2]; - if ( (unsigned int)v16 >= v8[3] ) - { - v21 = v8; - v17 = (*(int (**)(void))(*v8 + 36))(); - v8 = v21; - } - else - { - v17 = *v16; - } - v18 = v17 == -1; - v11 = 0; - if ( v17 == -1 ) - v11 = v20; - v19 = 0; - if ( !v18 ) - v19 = v8; - v9 = v19; - } - v12 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v14 = (__int16 *)a3[2]; - if ( (unsigned int)v14 >= a3[3] ) - v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v15 = *v14; - v12 = v15 == -1; - } - if ( v12 == v11 ) - *a6 |= 2u; - return v9; -} -// 48C8ED: variable 'v7' is possibly undefined -// 48C830: using guessed type int var_20[8]; - -//----- (0048C9A0) -------------------------------------------------------- -int __fastcall std::time_get>::get_weekday(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); -} - -//----- (0048C9B0) -------------------------------------------------------- -int std::time_get>::do_date_order() -{ - return 0; -} - -//----- (0048C9C0) -------------------------------------------------------- -int __fastcall std::time_get>::get_monthname(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); -} - -//----- (0048C9D0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_num( - _DWORD *a1, - unsigned __int16 a2, - _DWORD *a3, - __int16 a4, - int *a5, - signed int a6, - int a7, - unsigned int a8, - int a9, - _DWORD *a10) -{ - unsigned int v10; // ebp - int v12; // eax - int v13; // edi - char v14; // dl - char v15; // bl - int v16; // edx - unsigned __int8 v17; // al - unsigned int v18; // eax - __int16 *v19; // eax - __int16 v20; // ax - __int16 *v21; // eax - __int16 v22; // ax - bool v23; // zf - _DWORD *v24; // eax - unsigned __int16 *v26; // eax - bool v27; // [esp+1Bh] [ebp-31h] - unsigned int v28; // [esp+1Ch] [ebp-30h] - void *v30; // [esp+24h] [ebp-28h] - char v32; // [esp+2Eh] [ebp-1Eh] - char v33; // [esp+2Fh] [ebp-1Dh] - - v10 = 10; - v30 = std::use_facet>(a9 + 108); - if ( a8 != 2 ) - { - v12 = 1; - if ( a8 == 4 ) - v12 = 1000; - v10 = v12; - } - v28 = 0; - v32 = a4 == -1; - v13 = 0; - while ( 1 ) - { - v27 = a2 == 0xFFFF; - v14 = v27 && a1 != 0; - if ( v14 ) - break; - v14 = a2 == 0xFFFF; - v15 = v32 & (a3 != 0); - if ( v15 ) - goto LABEL_26; -LABEL_7: - if ( v14 == v32 ) - goto LABEL_33; -LABEL_8: - if ( v28 >= a8 ) - goto LABEL_33; - if ( a1 && a2 == 0xFFFF ) - { - v26 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v26 >= a1[3] ) - v16 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v16 = *v26; - if ( (_WORD)v16 == 0xFFFF ) - a1 = 0; - } - else - { - v16 = a2; - } - v17 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v30 + 48))(v30, v16, 42) - 48; - if ( v17 > 9u ) - goto LABEL_34; - v13 = (char)v17 + 10 * v13; - if ( (int)(v13 * v10) > a7 || (int)(v10 + v13 * v10) <= a6 ) - goto LABEL_34; - v18 = a1[2]; - v10 /= 0xAu; - if ( v18 >= a1[3] ) - (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); - else - a1[2] = v18 + 2; - ++v28; - a2 = -1; - } - v19 = (__int16 *)a1[2]; - if ( (unsigned int)v19 >= a1[3] ) - { - v20 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - v14 = v27 && a1 != 0; - } - else - { - v20 = *v19; - } - if ( v20 == -1 ) - a1 = 0; - if ( v20 != -1 ) - v14 = 0; - v15 = v32 & (a3 != 0); - if ( !v15 ) - goto LABEL_7; -LABEL_26: - v21 = (__int16 *)a3[2]; - if ( (unsigned int)v21 >= a3[3] ) - { - v33 = v14; - v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - v14 = v33; - } - else - { - v22 = *v21; - } - v23 = v22 == -1; - v24 = 0; - if ( !v23 ) - v24 = a3; - a3 = v24; - if ( !v23 ) - v15 = 0; - if ( v14 != v15 ) - goto LABEL_8; -LABEL_33: - if ( v28 == a8 ) - { -LABEL_37: - *a5 = v13; - return a1; - } -LABEL_34: - if ( a8 == 4 && v28 == 2 ) - { - v13 -= 100; - goto LABEL_37; - } - *a10 |= 4u; - return a1; -} - -//----- (0048CC50) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_weekday( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // ecx - int v9; // eax - __int16 v10; // dx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // bl - char v14; // si - char v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - _DWORD *v21; // [esp+40h] [ebp-6Ch] - unsigned int v22; // [esp+50h] [ebp-5Ch] BYREF - int v23; // [esp+54h] [ebp-58h] BYREF - int v24[21]; // [esp+58h] [ebp-54h] BYREF - - v23 = 0; - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v24[0] = v7[18]; - v24[1] = v7[19]; - v24[2] = v7[20]; - v24[3] = v7[21]; - v24[4] = v7[22]; - v24[5] = v7[23]; - v24[6] = v7[24]; - v24[7] = v7[11]; - v24[8] = v7[12]; - v24[9] = v7[13]; - v24[10] = v7[14]; - v24[11] = v7[15]; - v8 = v7[16]; - v9 = v7[17]; - v24[12] = v8; - v24[13] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v22, - (int)v24, - 7u, - a5, - &v23); - v12 = v11; - if ( v23 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 24) = v22; - v13 = v10 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v19 = (__int16 *)v11[2]; - if ( (unsigned int)v19 >= v11[3] ) - { - v21 = v11; - v20 = (*(int (**)(void))(*v11 + 36))(); - v11 = v21; - } - else - { - v20 = *v19; - } - v13 = 0; - v12 = 0; - if ( v20 == -1 ) - v13 = v14; - if ( v20 != -1 ) - v12 = v11; - } - v15 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v12; -} -// 48CD7D: variable 'v10' is possibly undefined - -//----- (0048CE40) -------------------------------------------------------- -int *__stdcall std::time_get>::_M_extract_name( - int *a1, - int a2, - _DWORD *a3, - int a4, - int **a5, - int a6, - int a7, - int a8, - _DWORD *a9) -{ - void *v9; // edi - int v10; // eax - void *v11; // esp - void *v12; // esp - int *v13; // edx - char v14; // bl - int v15; // eax - int v17; // ebx - int v18; // edx - size_t v19; // esi - __int16 v20; // ax - int v21; // ecx - int *v22; // edx - int *v23; // ebx - int *v24; // edi - size_t v25; // eax - unsigned int v26; // ebx - unsigned int v27; // esi - size_t v28; // eax - unsigned int v29; // edi - unsigned int v30; // eax - __int16 *v31; // eax - __int16 v32; // ax - bool v33; // zf - int v34; // eax - char v35; // di - char v36; // dl - int *v37; // ecx - size_t v38; // edi - int i; // eax - __int16 v40; // ax - __int16 *v41; // eax - unsigned int v42; // eax - int *v43; // ebx - const wchar_t *v44; // edi - unsigned int v45; // ebx - int *v46; // esi - unsigned int v47; // eax - __int16 *v48; // eax - __int16 v49; // ax - char v50; // di - char v51; // dl - wchar_t v52; // di - __int16 v53; // ax - _WORD *v54; // eax - __int16 *v55; // eax - __int16 v56; // ax - bool v57; // zf - _DWORD *v58; // eax - int v59; // eax - __int16 *v60; // eax - __int16 v61; // ax - bool v62; // zf - int *v63; // eax - char v64; // cl - __int16 *v65; // eax - __int16 v66; // ax - bool v67; // zf - _DWORD *v68; // eax - _WORD *v69; // eax - int v70; // eax - int v71; // eax - int v72; // eax - __int16 v73; // ax - __int16 *v74; // eax - __int16 v75; // ax - bool v76; // zf - _DWORD *v77; // eax - int v78; // [esp+10h] [ebp-38h] BYREF - _DWORD *v79; // [esp+14h] [ebp-34h] - bool v80; // [esp+1Bh] [ebp-2Dh] - int v81; // [esp+1Ch] [ebp-2Ch] - int *v82; // [esp+20h] [ebp-28h] - int *v83; // [esp+24h] [ebp-24h] - const wchar_t *v84; // [esp+28h] [ebp-20h] - size_t v85; // [esp+2Ch] [ebp-1Ch] - - v81 = a4; - v78 = a2; - LOWORD(v84) = a2; - v82 = a1; - v79 = a3; - v9 = std::use_facet>(a8 + 108); - v10 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); - v11 = alloca(v10); - v12 = alloca(v10); - v13 = &v78; - LOBYTE(v85) = (_WORD)a2 == 0xFFFF; - LOBYTE(v83) = v85 & (a1 != 0); - if ( (_BYTE)v83 ) - { - v60 = (__int16 *)a1[2]; - if ( (unsigned int)v60 >= a1[3] ) - { - v72 = *a1; - v82 = &v78; - v61 = (*(int (__fastcall **)(int *))(v72 + 36))(a1); - v13 = v82; - } - else - { - v61 = *v60; - } - v62 = v61 == -1; - v63 = 0; - v64 = (char)v83; - if ( !v62 ) - v63 = a1; - v82 = v63; - if ( !v62 ) - v64 = 0; - LOBYTE(v83) = v64; - } - else - { - LOBYTE(v83) = v85; - } - v80 = (_WORD)v81 == 0xFFFF; - v14 = v80 && a3 != 0; - if ( v14 ) - { - v65 = (__int16 *)a3[2]; - if ( (unsigned int)v65 >= a3[3] ) - { - v71 = *a3; - v81 = (int)v13; - v66 = (*(int (__fastcall **)(_DWORD *))(v71 + 36))(a3); - v13 = (int *)v81; - } - else - { - v66 = *v65; - } - v67 = v66 == -1; - v68 = 0; - if ( !v67 ) - v68 = a3; - v79 = v68; - if ( !v67 ) - v14 = 0; - } - else - { - v14 = v80; - } - if ( v14 == (_BYTE)v83 ) - goto LABEL_6; - if ( v82 && (_BYTE)v85 ) - { - v69 = (_WORD *)v82[2]; - if ( (unsigned int)v69 >= v82[3] ) - { - v83 = v13; - v73 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); - v13 = v83; - LOWORD(v85) = v73; - } - else - { - LOWORD(v85) = *v69; - } - v70 = 0; - if ( (_WORD)v85 != 0xFFFF ) - v70 = (int)v82; - v82 = (int *)v70; - } - else - { - LOWORD(v85) = (_WORD)v84; - } - if ( !a7 ) - goto LABEL_6; - v83 = v13; - v17 = 0; - v18 = a6; - v19 = 0; - do - { - while ( 1 ) - { - v21 = **(unsigned __int16 **)(v18 + 4 * v17); - if ( (_WORD)v21 == (_WORD)v85 ) - break; - a6 = v18; - v20 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v21); - v18 = a6; - if ( v20 == (_WORD)v85 ) - break; - if ( a7 == ++v17 ) - goto LABEL_17; - } - v83[v19++] = v17++; - } - while ( a7 != v17 ); -LABEL_17: - v22 = v83; - v83 = 0; - if ( v19 <= 1 ) - goto LABEL_44; - v23 = v22; - do - { - v24 = v23; - v81 = *v23; - v25 = wcslen(*(const wchar_t **)(a6 + 4 * v81)); - v85 = v19; - v26 = 1; - v27 = v25; - do - { - v28 = wcslen(*(const wchar_t **)(a6 + 4 * v24[v26])); - if ( v27 > v28 ) - v27 = v28; - ++v26; - } - while ( v26 < v85 ); - v23 = v24; - v29 = v27; - v19 = v85; - v30 = v82[2]; - if ( v30 >= v82[3] ) - (*(void (__fastcall **)(int *))(*v82 + 40))(v82); - else - v82[2] = v30 + 2; - v83 = (int *)((char *)v83 + 1); - if ( (unsigned int)v83 >= v29 ) - goto LABEL_73; - v31 = (__int16 *)v82[2]; - if ( (unsigned int)v31 >= v82[3] ) - v32 = (*(int (__fastcall **)(int *))(*v82 + 36))(v82); - else - v32 = *v31; - v33 = v32 == -1; - v34 = 0; - if ( !v33 ) - v34 = (int)v82; - v82 = (int *)v34; - v35 = v33; - v36 = v80 && v79 != 0; - if ( v36 ) - { - v55 = (__int16 *)v79[2]; - if ( (unsigned int)v55 >= v79[3] ) - { - LOBYTE(v85) = v80 && v79 != 0; - v56 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); - v36 = v85; - } - else - { - v56 = *v55; - } - v57 = v56 == -1; - v58 = 0; - if ( !v57 ) - v58 = v79; - v79 = v58; - if ( !v57 ) - v36 = 0; - if ( v35 == v36 ) - goto LABEL_73; - } - else if ( v33 == v80 ) - { - goto LABEL_73; - } - v37 = v82; - v38 = 0; - v84 = (const wchar_t *)(2 * (_DWORD)v83); - for ( i = v81; ; i = v23[v38] ) - { - LOWORD(v85) = *(const wchar_t *)((char *)v84 + *(_DWORD *)(a6 + 4 * i)); - v40 = -1; - if ( v37 ) - { - v41 = (__int16 *)v37[2]; - if ( (unsigned int)v41 >= v37[3] ) - { - v59 = *v37; - v82 = v37; - v40 = (*(int (**)(void))(v59 + 36))(); - v37 = v82; - } - else - { - v40 = *v41; - } - if ( v40 == -1 ) - v37 = 0; - } - if ( (_WORD)v85 == v40 ) - break; - v23[v38] = v23[--v19]; - if ( v19 <= v38 ) - goto LABEL_42; -LABEL_34: - ; - } - if ( v19 > ++v38 ) - goto LABEL_34; -LABEL_42: - v82 = v37; - } - while ( v19 > 1 ); - LOWORD(v84) = -1; - v22 = v23; -LABEL_44: - if ( v19 == 1 ) - { - v42 = v82[2]; - if ( v42 >= v82[3] ) - { - v85 = (size_t)v22; - (*(void (__fastcall **)(int *))(*v82 + 40))(v82); - v22 = (int *)v85; - } - else - { - v82[2] = v42 + 2; - } - v43 = v83; - v44 = *(const wchar_t **)(a6 + 4 * *v22); - v83 = (int *)*v22; - v45 = (unsigned int)v43 + 1; - v85 = wcslen(v44); - if ( v45 < v85 ) - { - v84 = v44; - v46 = v82; - do - { - v48 = (__int16 *)v46[2]; - if ( (unsigned int)v48 >= v46[3] ) - v49 = (*(int (__fastcall **)(int *))(*v46 + 36))(v46); - else - v49 = *v48; - v50 = v49 == -1; - if ( v49 == -1 ) - v46 = 0; - v51 = v80 && v79 != 0; - if ( v51 ) - { - v74 = (__int16 *)v79[2]; - if ( (unsigned int)v74 >= v79[3] ) - { - LOBYTE(v82) = v80 && v79 != 0; - v75 = (*(int (__fastcall **)(_DWORD *))(*v79 + 36))(v79); - v51 = (char)v82; - } - else - { - v75 = *v74; - } - v76 = v75 == -1; - v77 = 0; - if ( !v76 ) - v77 = v79; - v79 = v77; - if ( !v76 ) - v51 = 0; - } - else - { - v51 = v80; - } - if ( v51 == v50 ) - goto LABEL_108; - v52 = v84[v45]; - v53 = -1; - if ( v46 ) - { - v54 = (_WORD *)v46[2]; - v53 = (unsigned int)v54 >= v46[3] ? (*(int (__fastcall **)(int *))(*v46 + 36))(v46) : *v54; - if ( v53 == -1 ) - v46 = 0; - } - if ( v52 != v53 ) - { -LABEL_108: - v82 = v46; - LOWORD(v84) = -1; - goto LABEL_6; - } - v47 = v46[2]; - if ( v47 >= v46[3] ) - (*(void (__fastcall **)(int *))(*v46 + 40))(v46); - else - v46[2] = v47 + 2; - ++v45; - } - while ( v45 < v85 ); - v82 = v46; - } - if ( v85 == v45 ) - { - *a5 = v83; - LOWORD(v84) = -1; - goto LABEL_7; - } -LABEL_73: - LOWORD(v84) = -1; - } -LABEL_6: - *a9 |= 4u; -LABEL_7: - HIWORD(v15) = HIWORD(v78); - LOWORD(v15) = (_WORD)v84; - v78 = v15; - return v82; -} - -//----- (0048D390) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get_monthname( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - int a5, - _DWORD *a6, - int a7) -{ - _DWORD *v7; // eax - int v8; // ecx - int v9; // ecx - __int16 v10; // dx - _DWORD *v11; // ecx - _DWORD *v12; // ebp - char v13; // bl - char v14; // si - char v15; // cl - __int16 *v17; // eax - __int16 v18; // ax - __int16 *v19; // eax - __int16 v20; // ax - _DWORD *v21; // [esp+40h] [ebp-9Ch] - unsigned int v22; // [esp+58h] [ebp-84h] BYREF - int v23; // [esp+5Ch] [ebp-80h] BYREF - int v24[31]; // [esp+60h] [ebp-7Ch] BYREF - - v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); - v24[0] = v7[37]; - v24[1] = v7[38]; - v24[2] = v7[39]; - v24[3] = v7[40]; - v24[4] = v7[41]; - v24[5] = v7[42]; - v24[6] = v7[43]; - v24[7] = v7[44]; - v24[8] = v7[45]; - v24[9] = v7[46]; - v24[10] = v7[47]; - v24[11] = v7[48]; - v24[12] = v7[25]; - v24[13] = v7[26]; - v24[14] = v7[27]; - v24[15] = v7[28]; - v8 = v7[29]; - v23 = 0; - v24[16] = v8; - v24[17] = v7[30]; - v24[18] = v7[31]; - v24[19] = v7[32]; - v24[20] = v7[33]; - v24[21] = v7[34]; - v9 = v7[35]; - v24[23] = v7[36]; - v24[22] = v9; - v11 = std::time_get>::_M_extract_wday_or_month( - a1, - a2, - a3, - a4, - &v22, - (int)v24, - 0xCu, - a5, - &v23); - v12 = v11; - if ( v23 ) - *a6 |= 4u; - else - *(_DWORD *)(a7 + 16) = v22; - v13 = v10 == -1; - v14 = v13 & (v11 != 0); - if ( v14 ) - { - v19 = (__int16 *)v11[2]; - if ( (unsigned int)v19 >= v11[3] ) - { - v21 = v11; - v20 = (*(int (**)(void))(*v11 + 36))(); - v11 = v21; - } - else - { - v20 = *v19; - } - v13 = 0; - v12 = 0; - if ( v20 == -1 ) - v13 = v14; - if ( v20 != -1 ) - v12 = v11; - } - v15 = a4 == -1; - if ( a3 && a4 == -1 ) - { - v17 = (__int16 *)a3[2]; - if ( (unsigned int)v17 >= a3[3] ) - v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); - else - v18 = *v17; - v15 = v18 == -1; - } - if ( v13 == v15 ) - *a6 |= 2u; - return v12; -} -// 48D55A: variable 'v10' is possibly undefined - -//----- (0048D620) -------------------------------------------------------- -__int64 __stdcall std::time_get>::_M_extract_via_format( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - wchar_t *a7) -{ - int v7; // ebx - _DWORD *v8; // eax - size_t v9; // ebx - void *v10; // esi - size_t v11; // eax - _DWORD *v12; // ecx - __int16 v13; // ax - char v14; // dl - char v15; // di - char v16; // al - char v17; // di - size_t v18; // edi - size_t v19; // ebp - char v20; // al - unsigned __int8 v21; // al - __int16 v22; // ax - wchar_t v23; // bx - _WORD *v25; // eax - __int16 v26; // ax - __int16 *v27; // eax - __int16 v28; // cx - __int16 *v29; // eax - __int16 v30; // dx - int *v31; // edx - _DWORD *v32; // eax - __int16 v33; // dx - _DWORD *v34; // eax - __int16 v35; // dx - __int64 v36; // rax - unsigned __int16 v37; // ax - __int16 v38; // dx - __int16 v39; // di - __int16 v40; // di - unsigned __int16 v41; // dx - __int16 v42; // dx - __int64 v43; // rax - __int16 v44; // dx - __int16 v45; // dx - __int16 v46; // dx - __int16 v47; // dx - __int64 v48; // rax - _DWORD *v49; // eax - __int16 v50; // dx - _DWORD *v51; // eax - __int16 v52; // dx - __int64 v53; // rax - unsigned __int16 v54; // ax - __int16 v55; // dx - __int16 v56; // dx - unsigned __int16 v57; // ax - unsigned __int16 v58; // ax - __int64 v59; // rax - __int16 v60; // dx - __int64 v61; // rax - __int16 v62; // ax - int String; // [esp+20h] [ebp-15Ch] - size_t v64; // [esp+5Ch] [ebp-120h] - wchar_t *v65; // [esp+60h] [ebp-11Ch] - char v66; // [esp+60h] [ebp-11Ch] - _DWORD *v67; // [esp+6Ch] [ebp-110h] - int v68; // [esp+128h] [ebp-54h] BYREF - int *v69; // [esp+12Ch] [ebp-50h] BYREF - wchar_t v70[2]; // [esp+130h] [ebp-4Ch] BYREF - int v71; // [esp+134h] [ebp-48h] - int v72; // [esp+138h] [ebp-44h] - int v73; // [esp+13Ch] [ebp-40h] - int v74; // [esp+140h] [ebp-3Ch] - int v75; // [esp+144h] [ebp-38h] - int v76; // [esp+148h] [ebp-34h] - int v77; // [esp+14Ch] [ebp-30h] - int v78; // [esp+150h] [ebp-2Ch] - int v79; // [esp+154h] [ebp-28h] - int v80; // [esp+158h] [ebp-24h] - int v81; // [esp+15Ch] [ebp-20h] - - v7 = a4 + 108; - v8 = std::use_facet>(a4 + 108); - String = v7; - v9 = 0; - v67 = v8; - v10 = std::use_facet>(String); - v11 = wcslen(a7); - v12 = (_DWORD *)a1; - v68 = 0; - v64 = v11; - v13 = WORD2(a1); - while ( 1 ) - { - v14 = v13 == -1; - v15 = v14 & (v12 != 0); - if ( v15 ) - { - v25 = (_WORD *)v12[2]; - v26 = (unsigned int)v25 >= v12[3] ? (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12) : *v25; - v14 = 0; - if ( v26 == -1 ) - { - LODWORD(a1) = 0; - v14 = v15; - } - } - v16 = (_WORD)a3 == 0xFFFF; - v17 = v16 & (a2 != 0); - if ( v17 ) - { - v27 = (__int16 *)a2[2]; - if ( (unsigned int)v27 >= a2[3] ) - { - v66 = v14; - v62 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - v14 = v66; - v28 = v62; - } - else - { - v28 = *v27; - } - v16 = 0; - if ( v28 == -1 ) - { - a2 = 0; - v16 = v17; - } - } - if ( v14 == v16 || v9 >= v64 ) - break; - if ( v68 ) - goto LABEL_21; - v18 = v9; - v19 = v9 + 1; - v65 = &a7[v9]; - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, *v65, 0) == 37 ) - { - v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v18 + 1], 0); - v69 = 0; - if ( v20 == 69 || v20 == 79 ) - { - v19 = v9 + 2; - v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v18 + 2], 0) - 65; - if ( v21 > 0x38u ) - { -LABEL_17: - v68 |= 4u; -LABEL_18: - v13 = WORD2(a1); - goto LABEL_19; - } - } - else - { - v21 = v20 - 65; - } - switch ( v21 ) - { - case 0u: - v49 = (_DWORD *)v67[2]; - *(_DWORD *)v70 = v49[11]; - v71 = v49[12]; - v72 = v49[13]; - v73 = v49[14]; - v74 = v49[15]; - v75 = v49[16]; - v76 = v49[17]; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - &v69, - (int)v70, - 7, - a4, - &v68); - v13 = v50; - WORD2(a1) = v50; - if ( !v68 ) - goto LABEL_45; - break; - case 1u: - v51 = (_DWORD *)v67[2]; - *(_DWORD *)v70 = v51[25]; - v71 = v51[26]; - v72 = v51[27]; - v73 = v51[28]; - v74 = v51[29]; - v75 = v51[30]; - v76 = v51[31]; - v77 = v51[32]; - v78 = v51[33]; - v79 = v51[34]; - v80 = v51[35]; - v81 = v51[36]; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - &v69, - (int)v70, - 12, - a4, - &v68); - v13 = v52; - WORD2(a1) = v52; - if ( !v68 ) - goto LABEL_43; - break; - case 2u: - case 0x18u: - case 0x38u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 0, - 9999, - 4u, - a4, - &v68); - v13 = v30; - WORD2(a1) = v30; - if ( !v68 ) - { - v31 = v69 - 475; - if ( (int)v69 < 0 ) - v31 = v69 + 25; - a6[5] = v31; - } - break; - case 3u: - (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( - v10, - "%m/%d/%y", - "%H:%M", - v70); - v53 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - &v68, - a6, - v70); - LODWORD(a1) = v53; - v13 = WORD2(v53); - WORD2(a1) = WORD2(v53); - break; - case 7u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 0, - 23, - 2u, - a4, - &v68); - v13 = v45; - WORD2(a1) = v45; - if ( !v68 ) - goto LABEL_57; - break; - case 8u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 1, - 12, - 2u, - a4, - &v68); - v13 = v46; - WORD2(a1) = v46; - if ( !v68 ) -LABEL_57: - a6[2] = v69; - break; - case 0xCu: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 0, - 59, - 2u, - a4, - &v68); - v13 = v47; - WORD2(a1) = v47; - if ( !v68 ) - a6[1] = v69; - break; - case 0x11u: - (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( - v10, - "%H:%M", - "%H:%M:%S", - v70); - v48 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - &v68, - a6, - v70); - LODWORD(a1) = v48; - v13 = WORD2(v48); - WORD2(a1) = WORD2(v48); - break; - case 0x12u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 0, - 60, - 2u, - a4, - &v68); - v13 = v60; - WORD2(a1) = v60; - if ( !v68 ) - *a6 = v69; - break; - case 0x13u: - (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v10 + 44))( - v10, - "%H:%M:%S", - &unk_5125A2, - v70); - v61 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - &v68, - a6, - v70); - LODWORD(a1) = v61; - v13 = WORD2(v61); - WORD2(a1) = WORD2(v61); - break; - case 0x17u: - v36 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - &v68, - a6, - (wchar_t *)*(_DWORD *)(v67[2] + 16)); - LODWORD(a1) = v36; - v13 = WORD2(v36); - WORD2(a1) = WORD2(v36); - break; - case 0x19u: - v37 = std::istreambuf_iterator::_M_get((int)&a1); - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 1, v37) ) - goto LABEL_17; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - (int **)v70, - (int)std::__timepunct_cache::_S_timezones, - 14, - a4, - &v68); - WORD2(a1) = v38; - if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) && !(*(_DWORD *)v70 | v68) ) - { - v39 = std::istreambuf_iterator::_M_get((int)&a1); - if ( v39 == (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 45) - || (v40 = std::istreambuf_iterator::_M_get((int)&a1), - v40 == (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 43)) ) - { - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)v70, - 0, - 23, - 2u, - a4, - &v68); - WORD2(a1) = v41; - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - v41, - a2, - a3, - (int *)v70, - 0, - 59, - 2u, - a4, - &v68); - WORD2(a1) = v42; - } - } - goto LABEL_18; - case 0x20u: - v34 = (_DWORD *)v67[2]; - *(_DWORD *)v70 = v34[18]; - v71 = v34[19]; - v72 = v34[20]; - v73 = v34[21]; - v74 = v34[22]; - v75 = v34[23]; - v76 = v34[24]; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - &v69, - (int)v70, - 7, - a4, - &v68); - v13 = v35; - WORD2(a1) = v35; - if ( !v68 ) -LABEL_45: - a6[6] = v69; - break; - case 0x21u: - case 0x27u: - v32 = (_DWORD *)v67[2]; - *(_DWORD *)v70 = v32[37]; - v71 = v32[38]; - v72 = v32[39]; - v73 = v32[40]; - v74 = v32[41]; - v75 = v32[42]; - v76 = v32[43]; - v77 = v32[44]; - v78 = v32[45]; - v79 = v32[46]; - v80 = v32[47]; - v81 = v32[48]; - LODWORD(a1) = std::time_get>::_M_extract_name( - (int *)a1, - SHIDWORD(a1), - a2, - a3, - &v69, - (int)v70, - 12, - a4, - &v68); - v13 = v33; - WORD2(a1) = v33; - if ( !v68 ) -LABEL_43: - a6[4] = v69; - break; - case 0x22u: - v43 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - &v68, - a6, - (wchar_t *)*(_DWORD *)(v67[2] + 24)); - LODWORD(a1) = v43; - v13 = WORD2(v43); - WORD2(a1) = WORD2(v43); - break; - case 0x23u: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 1, - 31, - 2u, - a4, - &v68); - v13 = v44; - WORD2(a1) = v44; - if ( !v68 ) - goto LABEL_55; - break; - case 0x24u: - v54 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v54) ) - { - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - 0xFFFFu, - a2, - a3, - (int *)&v69, - 1, - 9, - 1u, - a4, - &v68); - } - else - { - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 10, - 31, - 2u, - a4, - &v68); - } - WORD2(a1) = v55; - v13 = v55; - if ( !v68 ) -LABEL_55: - a6[3] = v69; - break; - case 0x2Cu: - LODWORD(a1) = std::time_get>::_M_extract_num( - (_DWORD *)a1, - WORD2(a1), - a2, - a3, - (int *)&v69, - 1, - 12, - 2u, - a4, - &v68); - v13 = v56; - WORD2(a1) = v56; - if ( !v68 ) - a6[4] = (char *)v69 - 1; - break; - case 0x2Du: - v57 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v57, 0) != 10 ) - goto LABEL_17; - goto LABEL_75; - case 0x33u: - v58 = std::istreambuf_iterator::_M_get((int)&a1); - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v58, 0) != 9 ) - goto LABEL_17; -LABEL_75: - std::wstreambuf::sbumpc((_DWORD *)a1); - v13 = -1; - WORD2(a1) = -1; - break; - case 0x37u: - v59 = std::time_get>::_M_extract_via_format( - a1, - a2, - a3, - a4, - &v68, - a6, - (wchar_t *)*(_DWORD *)(v67[2] + 8)); - LODWORD(a1) = v59; - v13 = WORD2(v59); - WORD2(a1) = WORD2(v59); - break; - default: - goto LABEL_17; - } -LABEL_19: - v12 = (_DWORD *)a1; - v9 = v19 + 1; - } - else - { - v12 = (_DWORD *)a1; - v22 = WORD2(a1); - v23 = *v65; - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v29 = *(__int16 **)(a1 + 8); - if ( (unsigned int)v29 >= *(_DWORD *)(a1 + 12) ) - v22 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); - else - v22 = *v29; - if ( v22 == -1 ) - { - LODWORD(a1) = 0; - v12 = 0; - } - else - { - v12 = (_DWORD *)a1; - } - } - if ( v23 == v22 ) - { - std::wstreambuf::sbumpc(v12); - v9 = v19; - v12 = (_DWORD *)a1; - WORD2(a1) = -1; - v13 = -1; - } - else - { - v68 |= 4u; - v13 = WORD2(a1); - v9 = v19; - } - } - } - if ( v9 != v64 || v68 ) -LABEL_21: - *a5 |= 4u; - return a1; -} -// 48D966: variable 'v30' is possibly undefined -// 48DACA: variable 'v33' is possibly undefined -// 48DBCC: variable 'v35' is possibly undefined -// 48DD3C: variable 'v38' is possibly undefined -// 48DE56: variable 'v41' is possibly undefined -// 48DECC: variable 'v42' is possibly undefined -// 48DFFC: variable 'v44' is possibly undefined -// 48E0B6: variable 'v45' is possibly undefined -// 48E170: variable 'v46' is possibly undefined -// 48E219: variable 'v47' is possibly undefined -// 48E3C5: variable 'v50' is possibly undefined -// 48E4F7: variable 'v52' is possibly undefined -// 48E677: variable 'v55' is possibly undefined -// 48E727: variable 'v56' is possibly undefined -// 48E8E8: variable 'v60' is possibly undefined -// 50C5A0: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[14]; - -//----- (0048EAC0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( - _DWORD *a1, - int a2, - _DWORD *a3, - __int16 a4, - unsigned int *a5, - int a6, - unsigned int a7, - int a8, - _DWORD *a9) -{ - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // dl - char v13; // di - char v14; // bl - unsigned int v15; // edi - unsigned int *v16; // esi - char v17; // dl - char v18; // bl - unsigned int v19; // edx - unsigned int *v20; // ecx - unsigned int v21; // ebx - unsigned int v22; // eax - __int16 *v23; // eax - __int16 v24; // ax - bool v25; // zf - _DWORD *v26; // eax - __int16 *v28; // eax - __int16 v29; // ax - bool v30; // zf - _DWORD *v31; // eax - __int16 *v32; // eax - _DWORD *v33; // eax - unsigned int v34; // eax - __int16 v35; // si - int v36; // edx - unsigned int v37; // ebx - int v38; // edi - __int16 v39; // ax - int v40; // ecx - unsigned int v41; // eax - int v42; // eax - void *v43; // esp - void *v44; // esp - int v45; // ebx - __int16 *v46; // eax - __int16 v47; // ax - bool v48; // zf - _DWORD *v49; // eax - _WORD *v50; // eax - __int16 v51; // ax - __int16 *v52; // eax - _DWORD *v53; // eax - int v54; // eax - _DWORD v55[2]; // [esp+10h] [ebp-48h] BYREF - _DWORD *v56; // [esp+18h] [ebp-40h] - char v57; // [esp+1Fh] [ebp-39h] - _DWORD *v58; // [esp+20h] [ebp-38h] - unsigned int v59; // [esp+24h] [ebp-34h] - __int16 v60; // [esp+28h] [ebp-30h] - __int16 v61; // [esp+2Ah] [ebp-2Eh] - int v62; // [esp+2Ch] [ebp-2Ch] - unsigned int *v63; // [esp+30h] [ebp-28h] - unsigned int *v64; // [esp+34h] [ebp-24h] - unsigned int v65; // [esp+38h] [ebp-20h] - unsigned int v66; // [esp+3Ch] [ebp-1Ch] - - v58 = a1; - v55[1] = a2; - v60 = a2; - v56 = a3; - v63 = (unsigned int *)std::use_facet>(a8 + 108); - v9 = 16 * ((8 * a7 + 27) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v12 = (_WORD)a2 == 0xFFFF; - v64 = v55; - v13 = v12 & (a1 != 0); - if ( v13 ) - { - v50 = (_WORD *)v58[2]; - v51 = (unsigned int)v50 >= v58[3] ? (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58) : *v50; - v12 = 0; - if ( v51 == -1 ) - { - v12 = v13; - v58 = 0; - v13 = 0; - } - } - v57 = a4 == -1; - v14 = v57 & (a3 != 0); - if ( v14 ) - { - v46 = (__int16 *)a3[2]; - if ( (unsigned int)v46 >= a3[3] ) - { - v54 = *a3; - LOBYTE(v66) = v12; - v47 = (*(int (__fastcall **)(_DWORD *))(v54 + 36))(a3); - v12 = v66; - } - else - { - v47 = *v46; - } - v48 = v47 == -1; - v49 = 0; - if ( !v48 ) - v49 = a3; - v56 = v49; - if ( !v48 ) - v14 = 0; - } - else - { - v14 = v57; - } - if ( v12 == v14 ) - { - v65 = 0; - v15 = 0; - v16 = 0; - goto LABEL_6; - } - v35 = v60; - if ( v13 ) - { - v52 = (__int16 *)v58[2]; - if ( (unsigned int)v52 >= v58[3] ) - v35 = (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58); - else - v35 = *v52; - v53 = 0; - if ( v35 != -1 ) - v53 = v58; - v58 = v53; - } - v15 = 2 * a7; - if ( !(2 * a7) ) - { - v65 = 0; - v16 = 0; - goto LABEL_6; - } - v66 = 2 * a7; - v36 = a6; - v37 = 0; - v65 = 0; - v38 = (int)v63; - do - { - while ( 1 ) - { - v40 = **(unsigned __int16 **)(v36 + 4 * v37); - if ( (_WORD)v40 == v35 ) - break; - a6 = v36; - v39 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v38 + 24))(v38, v40); - v36 = a6; - if ( v39 == v35 ) - break; - if ( ++v37 == v66 ) - goto LABEL_62; - } - v41 = v65; - v64[v65] = v37++; - v65 = v41 + 1; - } - while ( v37 != v66 ); -LABEL_62: - v15 = 0; - v16 = 0; - if ( v65 ) - { - std::wstreambuf::sbumpc(v58); - v42 = 16 * ((4 * v65 + 27) >> 4); - v43 = alloca(v42); - v44 = alloca(v42); - v63 = v55; - v66 = (unsigned int)v55; - v45 = (int)v64; - do - { - *(_DWORD *)(v66 + 4 * v15) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v45 + 4 * v15))); - ++v15; - } - while ( v65 != v15 ); - v65 = 1; - v16 = v63; - v60 = -1; - } -LABEL_6: - while ( 2 ) - { - LOBYTE(v66) = v60 == -1; - v17 = v66 & (v58 != 0); - if ( v17 ) - { - v28 = (__int16 *)v58[2]; - if ( (unsigned int)v28 >= v58[3] ) - { - LOBYTE(v63) = v66 & (v58 != 0); - v29 = (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58); - v17 = (char)v63; - } - else - { - v29 = *v28; - } - v30 = v29 == -1; - v31 = 0; - if ( !v30 ) - v31 = v58; - v58 = v31; - if ( !v30 ) - v17 = 0; - } - else - { - v17 = v66; - } - v18 = v57 & (v56 != 0); - if ( v18 ) - { - v23 = (__int16 *)v56[2]; - if ( (unsigned int)v23 >= v56[3] ) - { - LOBYTE(v63) = v17; - v24 = (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56); - v17 = (char)v63; - } - else - { - v24 = *v23; - } - v25 = v24 == -1; - v26 = 0; - if ( !v25 ) - v26 = v56; - v56 = v26; - if ( !v25 ) - v18 = 0; - if ( v17 == v18 ) - break; - } - else if ( v17 == v57 ) - { - break; - } - if ( v58 && (_BYTE)v66 ) - { - v32 = (__int16 *)v58[2]; - if ( (unsigned int)v32 >= v58[3] ) - v61 = (*(int (__fastcall **)(_DWORD *))(*v58 + 36))(v58); - else - v61 = *v32; - v33 = 0; - if ( v61 != -1 ) - v33 = v58; - v58 = v33; - } - else - { - v61 = v60; - } - if ( !v15 ) - { -LABEL_34: - *a9 |= 4u; - return v58; - } - v66 = (unsigned int)v16; - v19 = 0; - v62 = 0; - v59 = 2 * v65; - do - { - while ( 1 ) - { - v20 = (unsigned int *)(v66 + 4 * v19); - if ( *v20 > v65 ) - break; - ++v62; - ++v19; -LABEL_16: - if ( v19 >= v15 ) - goto LABEL_20; - } - v21 = v64[v19]; - v63 = &v64[v19]; - if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v21) + v59) == v61 ) - { - ++v19; - goto LABEL_16; - } - *v63 = v64[--v15]; - *v20 = *(_DWORD *)(v66 + 4 * v15); - } - while ( v19 < v15 ); -LABEL_20: - v16 = (unsigned int *)v66; - if ( v15 != v62 ) - { - v22 = v58[2]; - if ( v22 >= v58[3] ) - (*(void (__fastcall **)(_DWORD *))(*v58 + 40))(v58); - else - v58[2] = v22 + 2; - ++v65; - v60 = -1; - continue; - } - break; - } - if ( v15 != 1 ) - { - if ( v15 == 2 && (*v16 == v65 || v16[1] == v65) ) - goto LABEL_52; - goto LABEL_34; - } - if ( *v16 != v65 ) - goto LABEL_34; -LABEL_52: - v34 = *v64; - if ( *v64 >= a7 ) - v34 = *v64 - a7; - *a5 = v34; - return v58; -} - -//----- (0048EF60) -------------------------------------------------------- -_DWORD *__thiscall std::time_get>::get( - void *this, - _DWORD *a2, - int a3, - _DWORD *a4, - int a5, - _DWORD *a6, - _DWORD *a7, - _DWORD *a8, - unsigned __int16 *a9, - unsigned __int16 *a10) -{ - unsigned __int16 *v10; // ebp - void *v12; // edi - int v13; // edx - __int16 v14; // bx - int v15; // edx - __int16 v16; // bx - unsigned int v17; // eax - char v18; // bl - char v19; // dl - char v20; // al - __int16 v21; // bx - void *v22; // eax - int v23; // edx - _DWORD *v24; // ebx - __int64 v25; // rax - char v26; // bp - char v28; // bl - char v29; // dl - int v30; // edx - unsigned int v31; // eax - __int16 *v32; // eax - __int16 v33; // ax - __int16 *v34; // eax - __int16 v35; // ax - bool v36; // zf - _DWORD *v37; // eax - unsigned __int16 *v38; // eax - unsigned __int16 *v39; // eax - void *v40; // eax - __int16 *v41; // eax - __int16 v42; // ax - bool v43; // zf - _DWORD *v44; // eax - __int16 *v45; // eax - __int16 v46; // ax - unsigned __int16 *v47; // eax - unsigned __int16 *v48; // eax - __int64 v49; // [esp+30h] [ebp-7Ch] - int v50; // [esp+30h] [ebp-7Ch] - __int16 v51; // [esp+56h] [ebp-56h] - unsigned __int16 v52; // [esp+5Ah] [ebp-52h] - unsigned __int16 *v54; // [esp+60h] [ebp-4Ch] - char v55; // [esp+60h] [ebp-4Ch] - unsigned __int16 *v56; // [esp+68h] [ebp-44h] - char v57; // [esp+70h] [ebp-3Ch] - __int16 v58; // [esp+76h] [ebp-36h] - wchar_t v60; // [esp+88h] [ebp-24h] BYREF - __int16 v61; // [esp+8Ah] [ebp-22h] - __int16 v62; // [esp+8Ch] [ebp-20h] - __int16 v63; // [esp+8Eh] [ebp-1Eh] - - v10 = a9; - v52 = a3; - HIWORD(v56) = a5; - v12 = std::use_facet>((int)(a6 + 27)); - *a7 = 0; - if ( a9 != a10 ) - { - BYTE1(v56) = (_WORD)a5 == 0xFFFF; - while ( 1 ) - { - v18 = v52 == 0xFFFF && a2 != 0; - if ( v18 ) - { - v45 = (__int16 *)a2[2]; - if ( (unsigned int)v45 >= a2[3] ) - v46 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v46 = *v45; - if ( v46 == -1 ) - a2 = 0; - if ( v46 != -1 ) - v18 = 0; - } - else - { - v18 = v52 == 0xFFFF; - } - v19 = BYTE1(v56) & (a4 != 0); - if ( v19 ) - { - v41 = (__int16 *)a4[2]; - if ( (unsigned int)v41 >= a4[3] ) - { - v42 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v19 = BYTE1(v56) & (a4 != 0); - } - else - { - v42 = *v41; - } - v43 = v42 == -1; - v44 = 0; - if ( !v43 ) - v44 = a4; - a4 = v44; - if ( !v43 ) - v19 = 0; - if ( v19 == v18 ) - { -LABEL_81: - *a7 = 6; - return a2; - } - } - else if ( BYTE1(v56) == v18 ) - { - goto LABEL_81; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, *v10, 0) == 37 ) - { - v54 = v10 + 1; - if ( a10 == v10 + 1 ) - goto LABEL_114; - v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[1], 0); - v21 = v20; - if ( v20 == 69 || v20 == 79 ) - { - if ( a10 == v10 + 2 ) - goto LABEL_114; - (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 48))(v12, v10[2]); - HIWORD(v39) = (unsigned int)(v10 + 2) >> 16; - LOWORD(v39) = v51; - v54 = v39; - HIWORD(v39) = HIWORD(v56); - LOWORD(v39) = HIWORD(a3); - v56 = v39; - HIWORD(v10) = HIWORD(v39); - v40 = std::use_facet>((int)this); - *a6 = 0; - v60 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v40 + 40))(v40, 37, v50); - HIWORD(v23) = v58; - if ( (_BYTE)v21 ) - { - v61 = v21; - v62 = (char)v51; - v63 = 0; -LABEL_27: - LOWORD(v10) = HIWORD(v56); - LODWORD(v49) = a2; - LOWORD(v23) = v52; - HIDWORD(v49) = v23; - v25 = std::time_get>::_M_extract_via_format( - v49, - a4, - (int)v10, - (int)a6, - a7, - a8, - &v60); - v24 = (_DWORD *)v25; - a2 = (_DWORD *)v25; - v52 = WORD2(v25); - BYTE4(v25) = WORD2(v25) == 0xFFFF; - v26 = BYTE4(v25) & ((_DWORD)v25 != 0); - if ( v26 ) - { - LODWORD(v25) = *(_DWORD *)(v25 + 8); - if ( (unsigned int)v25 >= v24[3] ) - LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); - else - LOWORD(v25) = *(_WORD *)v25; - BYTE4(v25) = 0; - a2 = 0; - if ( (_WORD)v25 == 0xFFFF ) - BYTE4(v25) = v26; - if ( (_WORD)v25 != 0xFFFF ) - a2 = v24; - } - if ( a4 && BYTE1(v56) ) - { - LODWORD(v25) = a4[2]; - if ( (unsigned int)v25 >= a4[3] ) - { - v57 = BYTE4(v25); - LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - BYTE4(v25) = v57; - } - else - { - LOWORD(v25) = *(_WORD *)v25; - } - LOBYTE(v25) = (_WORD)v25 == 0xFFFF; - } - else - { - LOBYTE(v25) = BYTE1(v56); - } - if ( (_BYTE)v25 == BYTE4(v25) ) - *a7 |= 2u; - v10 = v54 + 1; - if ( a10 == v54 + 1 ) - return a2; - goto LABEL_16; - } - v21 = (char)v51; - } - else - { - HIWORD(v10) = HIWORD(a5); - v22 = std::use_facet>((int)(a6 + 27)); - *a7 = 0; - v60 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v22 + 40))(v22, 37); - HIWORD(v23) = HIWORD(a3); - } - v61 = v21; - v62 = 0; - goto LABEL_27; - } - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *v10) ) - break; - if ( a2 && v52 == 0xFFFF ) - { - v47 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v47 >= a2[3] ) - v13 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v13 = *v47; - if ( (_WORD)v13 == 0xFFFF ) - a2 = 0; - } - else - { - v13 = v52; - } - v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 32))(v12, v13); - if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 32))(v12, *v10) != v14 ) - { - if ( a2 && v52 == 0xFFFF ) - { - v48 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v48 >= a2[3] ) - v15 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v15 = *v48; - if ( (_WORD)v15 == 0xFFFF ) - a2 = 0; - } - else - { - v15 = v52; - } - v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v12 + 24))(v12, v15); - if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v12 + 24))(v12, *v10) != v16 ) - { -LABEL_114: - *a7 = 4; - return a2; - } - } - v17 = a2[2]; - if ( v17 >= a2[3] ) - (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); - else - a2[2] = v17 + 2; - ++v10; - v52 = -1; -LABEL_15: - if ( a10 == v10 ) - return a2; -LABEL_16: - if ( *a7 ) - return a2; - } - for ( ++v10; a10 != v10; ++v10 ) - { - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, *v10) ) - break; - } - while ( 1 ) - { - v28 = v52 == 0xFFFF && a2 != 0; - if ( v28 ) - { - v32 = (__int16 *)a2[2]; - if ( (unsigned int)v32 >= a2[3] ) - v33 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v33 = *v32; - if ( v33 == -1 ) - a2 = 0; - if ( v33 != -1 ) - v28 = 0; - v29 = BYTE1(v56) & (a4 != 0); - if ( !v29 ) - { -LABEL_41: - if ( BYTE1(v56) == v28 ) - goto LABEL_15; - goto LABEL_42; - } - } - else - { - v28 = v52 == 0xFFFF; - v29 = BYTE1(v56) & (a4 != 0); - if ( !v29 ) - goto LABEL_41; - } - v34 = (__int16 *)a4[2]; - if ( (unsigned int)v34 >= a4[3] ) - { - v55 = v29; - v35 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); - v29 = v55; - } - else - { - v35 = *v34; - } - v36 = v35 == -1; - v37 = 0; - if ( !v36 ) - v37 = a4; - a4 = v37; - if ( !v36 ) - v29 = 0; - if ( v29 == v28 ) - goto LABEL_15; -LABEL_42: - if ( a2 && v52 == 0xFFFF ) - { - v38 = (unsigned __int16 *)a2[2]; - if ( (unsigned int)v38 >= a2[3] ) - v30 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v30 = *v38; - if ( (_WORD)v30 == 0xFFFF ) - a2 = 0; - } - else - { - v30 = v52; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v12 + 8))(v12, 32, v30) ) - goto LABEL_15; - v31 = a2[2]; - if ( v31 >= a2[3] ) - (*(void (__fastcall **)(_DWORD *))(*a2 + 40))(a2); - else - a2[2] = v31 + 2; - v52 = -1; - } - } - return a2; -} -// 48F445: variable 'v51' is possibly undefined -// 48F487: variable 'v50' is possibly undefined -// 48F494: variable 'v58' is possibly undefined - -//----- (0048F6B0) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::get( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char a7, - char a8) -{ - void *v8; // eax - __int64 v9; // rax - _DWORD *v10; // ecx - _DWORD *v11; // ebp - _BOOL2 v12; // bx - bool v13; // si - bool v14; // cl - __int16 *v16; // eax - __int16 v17; // ax - __int16 *v18; // eax - __int16 v19; // ax - int v20; // [esp+34h] [ebp-3Ch] - wchar_t v21; // [esp+4Ch] [ebp-24h] BYREF - __int16 v22; // [esp+4Eh] [ebp-22h] - __int16 v23; // [esp+50h] [ebp-20h] - __int16 v24; // [esp+52h] [ebp-1Eh] - - v8 = std::use_facet>(a4 + 108); - *a5 = 0; - v21 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v8 + 40))(v8, 37); - if ( a8 ) - { - v23 = a7; - v22 = a8; - v24 = 0; - } - else - { - v22 = a7; - v23 = 0; - } - v9 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v21); - v10 = (_DWORD *)v9; - v11 = (_DWORD *)v9; - v12 = WORD2(v9) == 0xFFFF; - v13 = v12 && (_DWORD)v9 != 0; - if ( v13 ) - { - v18 = *(__int16 **)(v9 + 8); - if ( (unsigned int)v18 >= v10[3] ) - { - v20 = (int)v10; - v19 = (*(int (**)(void))(*v10 + 36))(); - v10 = (_DWORD *)v20; - } - else - { - v19 = *v18; - } - LOBYTE(v12) = 0; - v11 = 0; - if ( v19 == -1 ) - LOBYTE(v12) = v13; - if ( v19 != -1 ) - v11 = v10; - } - v14 = (_WORD)a3 == 0xFFFF; - if ( a2 && (_WORD)a3 == 0xFFFF ) - { - v16 = (__int16 *)a2[2]; - if ( (unsigned int)v16 >= a2[3] ) - v17 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v17 = *v16; - v14 = v17 == -1; - } - if ( v12 == v14 ) - *a5 |= 2u; - return v11; -} - -//----- (0048F870) -------------------------------------------------------- -_DWORD *__stdcall std::time_get>::do_get( - __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - _DWORD *a6, - char a7, - char a8) -{ - void *v8; // eax - __int64 v9; // rax - _DWORD *v10; // ecx - _DWORD *v11; // ebp - _BOOL2 v12; // bx - bool v13; // si - bool v14; // cl - __int16 *v16; // eax - __int16 v17; // ax - __int16 *v18; // eax - __int16 v19; // ax - int v20; // [esp+34h] [ebp-3Ch] - wchar_t v21; // [esp+4Ch] [ebp-24h] BYREF - __int16 v22; // [esp+4Eh] [ebp-22h] - __int16 v23; // [esp+50h] [ebp-20h] - __int16 v24; // [esp+52h] [ebp-1Eh] - - v8 = std::use_facet>(a4 + 108); - *a5 = 0; - v21 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v8 + 40))(v8, 37); - if ( a8 ) - { - v23 = a7; - v22 = a8; - v24 = 0; - } - else - { - v22 = a7; - v23 = 0; - } - v9 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v21); - v10 = (_DWORD *)v9; - v11 = (_DWORD *)v9; - v12 = WORD2(v9) == 0xFFFF; - v13 = v12 && (_DWORD)v9 != 0; - if ( v13 ) - { - v18 = *(__int16 **)(v9 + 8); - if ( (unsigned int)v18 >= v10[3] ) - { - v20 = (int)v10; - v19 = (*(int (**)(void))(*v10 + 36))(); - v10 = (_DWORD *)v20; - } - else - { - v19 = *v18; - } - LOBYTE(v12) = 0; - v11 = 0; - if ( v19 == -1 ) - LOBYTE(v12) = v13; - if ( v19 != -1 ) - v11 = v10; - } - v14 = (_WORD)a3 == 0xFFFF; - if ( a2 && (_WORD)a3 == 0xFFFF ) - { - v16 = (__int16 *)a2[2]; - if ( (unsigned int)v16 >= a2[3] ) - v17 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); - else - v17 = *v16; - v14 = v17 == -1; - } - if ( v12 == v14 ) - *a5 |= 2u; - return v11; -} - -//----- (0048FA30) -------------------------------------------------------- -int __fastcall std::time_get>::get_date(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); -} - -//----- (0048FA40) -------------------------------------------------------- -int __fastcall std::time_get>::get_time(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); -} - -//----- (0048FA50) -------------------------------------------------------- -int __fastcall std::time_get>::get_year(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); -} - -//----- (0048FA60) -------------------------------------------------------- -_DWORD *__thiscall std::time_put>::put( - void *this, - _DWORD *a2, - int a3, - int a4, - char a5, - int a6, - unsigned __int8 *a7, - unsigned __int8 *a8) -{ - int v8; // ebp - unsigned __int8 *v9; // ebx - _BYTE *v10; // eax - _BYTE *v11; // esi - int v12; // edx - unsigned __int8 *v13; // edi - unsigned __int8 v14; // al - unsigned __int8 v15; // cl - int (__stdcall *v16)(unsigned __int8, int); // eax - int v17; // edx - signed __int8 v18; // al - unsigned __int8 v19; // cl - int (__stdcall *v20)(unsigned __int8, int); // eax - int v21; // ecx - int v22; // ebx - int v23; // edx - int v24; // ebx - __int64 v25; // rax - int v27; // edx - _BYTE *v28; // eax - int v29; // ecx - char v30; // dl - int (__stdcall *v31)(unsigned __int8, int); // eax - char v32; // al - int v33; // [esp+18h] [ebp-44h] - char v34; // [esp+27h] [ebp-35h] - int v37; // [esp+34h] [ebp-28h] - int v38; // [esp+34h] [ebp-28h] - int v39; // [esp+34h] [ebp-28h] - - v8 = a3; - v9 = a7; - v34 = a3; - v10 = std::use_facet>(a4 + 108); - if ( a7 != a8 ) - { - v11 = v10; - while ( 1 ) - { - v12 = *v9; - v13 = v9 + 1; - v14 = v11[v12 + 285]; - v15 = *v9; - if ( !v14 ) - { - v16 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v11 + 32); - if ( v16 != std::ctype::do_narrow ) - { - v38 = *v9; - v15 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v16)(v11, (char)v12, 0); - v12 = v38; - } - if ( !v15 ) - goto LABEL_3; - v11[v12 + 285] = v15; - v14 = v15; - } - if ( v14 == 37 ) - { - if ( a8 == v13 ) - return a2; - v17 = v9[1]; - v18 = v11[v17 + 285]; - v19 = v9[1]; - if ( !v18 ) - { - v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v11 + 32); - if ( v20 != std::ctype::do_narrow ) - { - v39 = v9[1]; - v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v11, (char)v17, 0); - v17 = v39; - } - if ( !v19 ) - { - v21 = 0; - v22 = 0; - goto LABEL_21; - } - v11[v17 + 285] = v19; - v18 = v19; - } - if ( v18 == 69 || v18 == 79 ) - { - v13 = v9 + 2; - if ( a8 == v9 + 2 ) - return a2; - v29 = v9[2]; - v22 = v18; - v37 = v29; - v30 = v29; - v21 = (char)v11[v29 + 285]; - if ( !(_BYTE)v21 ) - { - v21 = v30; - v31 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v11 + 32); - if ( v31 != std::ctype::do_narrow ) - { - v32 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v31)(v11, v30, 0); - v21 = v32; - v30 = v32; - } - if ( v30 ) - v11[v37 + 285] = v30; - } - } - else - { - v21 = v18; - v22 = 0; - } -LABEL_21: - v23 = v8; - LOBYTE(v23) = v34; - v33 = v22; - v24 = v23; - v25 = ((__int64 (__thiscall *)(void *, _DWORD *, int, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( - this, - a2, - v23, - a4, - a5, - a6, - v21, - v33); - LOBYTE(v24) = BYTE4(v25); - v8 = v24; - v9 = v13 + 1; - a2 = (_DWORD *)v25; - v34 = BYTE4(v25); - if ( a8 == v13 + 1 ) - return a2; - } - else - { -LABEL_3: - if ( v34 ) - { - ++v9; - } - else - { - v27 = *v9; - v28 = (_BYTE *)a2[5]; - if ( (unsigned int)v28 >= a2[6] ) - { - ++v9; - v34 = (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v27) == -1; - } - else - { - *v28 = v27; - ++a2[5]; - ++v9; - } - } - if ( a8 == v9 ) - return a2; - } - } - } - return a2; -} - -//----- (0048FCF0) -------------------------------------------------------- -int __thiscall std::time_put>::put( - void *this, - int a2, - int a3, - int a4, - char a5, - int a6, - char a7, - char a8) -{ - return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( - this, - a2, - a3, - a4, - a5, - a6, - a7, - a8); -} - -//----- (0048FD10) -------------------------------------------------------- -int __stdcall std::time_put>::do_put( - int a1, - char a2, - int a3, - int a4, - struct tm *a5, - char a6, - char a7) -{ - _BYTE *v7; // ebx - const char **v8; // eax - const char **v9; // edx - char v10; // cl - size_t v11; // eax - int (__stdcall *v13)(unsigned __int8); // eax - const char **v14; // [esp+1Ch] [ebp-B0h] - char Format; // [esp+2Ch] [ebp-A0h] BYREF - char v16; // [esp+2Dh] [ebp-9Fh] - char v17; // [esp+2Eh] [ebp-9Eh] - char v18; // [esp+2Fh] [ebp-9Dh] - char Buffer[156]; // [esp+30h] [ebp-9Ch] BYREF - - v7 = std::use_facet>(a3 + 108); - v8 = (const char **)std::use_facet>(a3 + 108); - v9 = v8; - if ( v7[28] ) - { - v10 = v7[66]; - } - else - { - v14 = v8; - std::ctype::_M_widen_init((int)v7); - v9 = v14; - v10 = 37; - v13 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v7 + 24); - if ( v13 != std::ctype::do_widen ) - { - v10 = ((int (__fastcall *)(_BYTE *, const char **, int))v13)(v7, v14, 37); - v9 = v14; - } - } - Format = v10; - if ( a7 ) - { - v16 = a7; - v18 = 0; - v17 = a6; - } - else - { - v17 = 0; - v16 = a6; - } - std::__timepunct::_M_put(v9, Buffer, 0x80u, &Format, a5); - v11 = strlen(Buffer); - if ( !a2 ) - (*(int (__thiscall **)(int, char *, size_t))(*(_DWORD *)a1 + 48))(a1, Buffer, v11); - return a1; -} - -//----- (0048FE60) -------------------------------------------------------- -_DWORD *__thiscall std::time_put>::put( - void *this, - _DWORD *a2, - int a3, - int a4, - unsigned __int16 a5, - int a6, - unsigned __int16 *a7, - unsigned __int16 *a8) -{ - int v8; // ebp - unsigned __int16 *v9; // ebx - void *v10; // eax - void *v11; // esi - unsigned __int16 *v12; // edi - char v13; // al - int v14; // edx - int v15; // eax - int v16; // ecx - int v17; // ebp - __int64 v18; // rax - int v19; // ecx - int v21; // edx - _WORD *v22; // eax - char v23; // cl - char v26; // [esp+46h] [ebp-26h] - char v27; // [esp+47h] [ebp-25h] - - v8 = a3; - v9 = a7; - v26 = a3; - v10 = std::use_facet>(a4 + 108); - if ( a7 != a8 ) - { - v11 = v10; - do - { - while ( 1 ) - { - v12 = v9 + 1; - if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, *v9, 0) != 37 ) - break; - if ( a8 == v12 ) - return a2; - v13 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[1], 0); - v14 = v13; - if ( v13 == 69 || (v15 = 0, (_BYTE)v14 == 79) ) - { - v27 = v14; - v12 = v9 + 2; - if ( a8 == v9 + 2 ) - return a2; - v23 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[2], 0); - v15 = v27; - v14 = v23; - } - v16 = v8; - LOBYTE(v16) = v26; - v17 = v16; - v18 = ((__int64 (__thiscall *)(void *, _DWORD *, int, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( - this, - a2, - v16, - a4, - a5, - a6, - v14, - v15); - v19 = v17; - v9 = v12 + 1; - LOBYTE(v19) = BYTE4(v18); - v8 = v19; - a2 = (_DWORD *)v18; - v26 = BYTE4(v18); - if ( a8 == v12 + 1 ) - return a2; - } - if ( v26 ) - { - ++v9; - } - else - { - v21 = *v9; - v22 = (_WORD *)a2[5]; - if ( (unsigned int)v22 >= a2[6] ) - { - LOWORD(v21) = (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v21); - } - else - { - *v22 = v21; - a2[5] = v22 + 1; - } - ++v9; - v26 = (_WORD)v21 == 0xFFFF; - } - } - while ( a8 != v9 ); - } - return a2; -} - -//----- (00490020) -------------------------------------------------------- -int __thiscall std::time_put>::put( - void *this, - int a2, - int a3, - int a4, - unsigned __int16 a5, - int a6, - char a7, - char a8) -{ - return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( - this, - a2, - a3, - a4, - a5, - a6, - a7, - a8); -} - -//----- (00490040) -------------------------------------------------------- -int __stdcall std::time_put>::do_put( - int a1, - char a2, - int a3, - int a4, - struct tm *a5, - char a6, - char a7) -{ - const char **v7; // ebx - size_t v8; // eax - void *v10; // [esp+1Ch] [ebp-134h] - wchar_t Format; // [esp+2Ch] [ebp-124h] BYREF - __int16 v12; // [esp+2Eh] [ebp-122h] - __int16 v13; // [esp+30h] [ebp-120h] - __int16 v14; // [esp+32h] [ebp-11Eh] - wchar_t Buffer[142]; // [esp+34h] [ebp-11Ch] BYREF - - v10 = std::use_facet>(a3 + 108); - v7 = (const char **)std::use_facet>(a3 + 108); - Format = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 37); - if ( a7 ) - { - v13 = a6; - v12 = a7; - v14 = 0; - } - else - { - v12 = a6; - v13 = 0; - } - std::__timepunct::_M_put(v7, Buffer, 0x80u, &Format, a5); - v8 = wcslen(Buffer); - if ( !a2 ) - (*(int (__thiscall **)(int, wchar_t *, size_t))(*(_DWORD *)a1 + 48))(a1, Buffer, v8); - return a1; -} - -//----- (00490160) -------------------------------------------------------- -const char *std::bad_alloc::what() -{ - return "std::bad_alloc"; -} - -//----- (00490170) -------------------------------------------------------- -int __fastcall std::ios::exceptions(int a1) -{ - return *(_DWORD *)(a1 + 16); -} - -//----- (00490180) -------------------------------------------------------- -int __fastcall std::ios::bad(int a1) -{ - return *(_DWORD *)(a1 + 20) & 1; -} - -//----- (00490190) -------------------------------------------------------- -int __fastcall std::ios::eof(int a1) -{ - return (*(_DWORD *)(a1 + 20) >> 1) & 1; -} - -//----- (004901A0) -------------------------------------------------------- -int __fastcall std::ios::tie(int a1) -{ - return *(_DWORD *)(a1 + 112); -} - -//----- (004901B0) -------------------------------------------------------- -bool __fastcall std::ios::fail(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) != 0; -} - -//----- (004901C0) -------------------------------------------------------- -int __fastcall std::ios::fill(int a1) -{ - int result; // eax - _BYTE *v3; // esi - int (__stdcall *v4)(unsigned __int8); // edx - - if ( *(_BYTE *)(a1 + 117) ) - return *(unsigned __int8 *)(a1 + 116); - v3 = *(_BYTE **)(a1 + 124); - if ( !v3 ) - std::__throw_bad_cast(); - if ( v3[28] ) - { - result = (unsigned __int8)v3[61]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)(a1 + 124)); - v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); - result = 32; - if ( v4 != std::ctype::do_widen ) - result = ((int (__thiscall *)(_BYTE *, int))v4)(v3, 32); - } - *(_BYTE *)(a1 + 116) = result; - *(_BYTE *)(a1 + 117) = 1; - return result; -} - -//----- (00490230) -------------------------------------------------------- -bool __fastcall std::ios::good(int a1) -{ - return *(_DWORD *)(a1 + 20) == 0; -} - -//----- (00490240) -------------------------------------------------------- -int __fastcall std::ios::rdbuf(int a1) -{ - return *(_DWORD *)(a1 + 120); -} - -//----- (00490250) -------------------------------------------------------- -int __thiscall std::ios::widen(int *this, int a2) -{ - _BYTE *v2; // ebx - int result; // eax - int (__stdcall *v4)(unsigned __int8); // edx - - v2 = (_BYTE *)this[31]; - if ( !v2 ) - std::__throw_bad_cast(); - if ( v2[28] ) - return (unsigned __int8)v2[(unsigned __int8)a2 + 29]; - std::ctype::_M_widen_init(this[31]); - v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); - result = a2; - if ( v4 != std::ctype::do_widen ) - return ((int (__thiscall *)(_BYTE *, _DWORD))v4)(v2, (char)a2); - return result; -} - -//----- (004902B0) -------------------------------------------------------- -int __thiscall std::ios::narrow(_DWORD *this, int a2, int a3) -{ - int v3; // ebx - int result; // eax - int v5; // ecx - int (__stdcall *v6)(unsigned __int8, int); // eax - - v3 = this[31]; - if ( !v3 ) - std::__throw_bad_cast(); - result = *(unsigned __int8 *)(v3 + (unsigned __int8)a2 + 285); - if ( !(_BYTE)result ) - { - v5 = a2; - v6 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v3 + 32); - if ( v6 != std::ctype::do_narrow ) - v5 = ((int (__thiscall *)(int, _DWORD, _DWORD))v6)(v3, (char)a2, (char)a3); - result = a3; - if ( (_BYTE)a3 != (_BYTE)v5 ) - { - *(_BYTE *)(v3 + (unsigned __int8)a2 + 285) = v5; - return v5; - } - } - return result; -} - -//----- (00490320) -------------------------------------------------------- -int __fastcall std::ios::rdstate(int a1) -{ - return *(_DWORD *)(a1 + 20); -} - -//----- (00490330) -------------------------------------------------------- -int __fastcall std::ios::operator void *(int a1) -{ - int result; // eax - - result = 0; - if ( (*(_BYTE *)(a1 + 20) & 5) == 0 ) - return a1; - return result; -} - -//----- (00490340) -------------------------------------------------------- -bool __fastcall std::ios::operator bool(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) == 0; -} - -//----- (00490350) -------------------------------------------------------- -bool __fastcall std::ios::operator!(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) != 0; -} - -//----- (00490360) -------------------------------------------------------- -int __fastcall std::wios::exceptions(int a1) -{ - return *(_DWORD *)(a1 + 16); -} - -//----- (00490370) -------------------------------------------------------- -int __fastcall std::wios::bad(int a1) -{ - return *(_DWORD *)(a1 + 20) & 1; -} - -//----- (00490380) -------------------------------------------------------- -int __fastcall std::wios::eof(int a1) -{ - return (*(_DWORD *)(a1 + 20) >> 1) & 1; -} - -//----- (00490390) -------------------------------------------------------- -int __fastcall std::wios::tie(int a1) -{ - return *(_DWORD *)(a1 + 112); -} - -//----- (004903A0) -------------------------------------------------------- -bool __fastcall std::wios::fail(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) != 0; -} - -//----- (004903B0) -------------------------------------------------------- -int __fastcall std::wios::fill(int a1) -{ - int result; // eax - int v3; // ecx - - if ( *(_BYTE *)(a1 + 118) ) - return *(unsigned __int16 *)(a1 + 116); - v3 = *(_DWORD *)(a1 + 124); - if ( !v3 ) - std::__throw_bad_cast(); - result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 32); - *(_BYTE *)(a1 + 118) = 1; - *(_WORD *)(a1 + 116) = result; - return result; -} - -//----- (004903F0) -------------------------------------------------------- -bool __fastcall std::wios::good(int a1) -{ - return *(_DWORD *)(a1 + 20) == 0; -} - -//----- (00490400) -------------------------------------------------------- -int __fastcall std::wios::rdbuf(int a1) -{ - return *(_DWORD *)(a1 + 120); -} - -//----- (00490410) -------------------------------------------------------- -int __thiscall std::wios::widen(_DWORD *this, char a2) -{ - int v2; // ecx - - v2 = this[31]; - if ( !v2 ) - std::__throw_bad_cast(); - return (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); -} - -//----- (00490440) -------------------------------------------------------- -int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16 a2, char a3) -{ - int v3; // ecx - - v3 = this[31]; - if ( !v3 ) - std::__throw_bad_cast(); - return (*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v3 + 48))(v3, a2, a3); -} - -//----- (00490480) -------------------------------------------------------- -int __fastcall std::wios::rdstate(int a1) -{ - return *(_DWORD *)(a1 + 20); -} - -//----- (00490490) -------------------------------------------------------- -int __fastcall std::wios::operator void *(int a1) -{ - int result; // eax - - result = 0; - if ( (*(_BYTE *)(a1 + 20) & 5) == 0 ) - return a1; - return result; -} - -//----- (004904A0) -------------------------------------------------------- -bool __fastcall std::wios::operator bool(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) == 0; -} - -//----- (004904B0) -------------------------------------------------------- -bool __fastcall std::wios::operator!(int a1) -{ - return (*(_BYTE *)(a1 + 20) & 5) != 0; -} - -//----- (004904C0) -------------------------------------------------------- -const char *_ZGTtNKSt9exception4whatEv() -{ - return "std::exception"; -} - -//----- (004904D0) -------------------------------------------------------- -unsigned __int64 __stdcall std::money_get>::_M_extract( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // al - int v7; // eax - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - _BYTE *v11; // eax - int v12; // eax - int v13; // eax - _DWORD *v14; // ecx - int v15; // eax - unsigned int v16; // eax - char v17; // al - char v18; // al - _BYTE *v19; // eax - char v20; // al - char v21; // bl - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - int v25; // eax - int v26; // eax - _BYTE *v27; // eax - int v28; // eax - int v29; // eax - _DWORD *v30; // ecx - char v31; // al - int v32; // eax - unsigned __int8 *v33; // eax - int v34; // edx - char *v35; // eax - char v36; // al - int v38; // edx - std::string *v39; // eax - unsigned int first_not_of; // eax - unsigned int v41; // edx - int v42; // eax - _WORD *v43; // eax - int *v44; // eax - unsigned int v45; // [esp+4h] [ebp-94h] - unsigned int v46; // [esp+4h] [ebp-94h] - std::string *v47; // [esp+4h] [ebp-94h] - unsigned int v48; // [esp+8h] [ebp-90h] - char *v49; // [esp+8h] [ebp-90h] - unsigned int v50; // [esp+Ch] [ebp-8Ch] - char v51; // [esp+10h] [ebp-88h] - std::locale::_Impl *v52; // [esp+14h] [ebp-84h] - char v53; // [esp+18h] [ebp-80h] - _DWORD *v54; // [esp+1Ch] [ebp-7Ch] - unsigned int v55; // [esp+20h] [ebp-78h] - int v56; // [esp+28h] [ebp-70h] - bool v57; // [esp+2Ch] [ebp-6Ch] - char v58; // [esp+2Dh] [ebp-6Bh] - char v59; // [esp+2Eh] [ebp-6Ah] - char v60; // [esp+2Fh] [ebp-69h] - char v61; // [esp+30h] [ebp-68h] - int v62; // [esp+30h] [ebp-68h] - unsigned int v63; // [esp+30h] [ebp-68h] - char v64; // [esp+30h] [ebp-68h] - char v65; // [esp+30h] [ebp-68h] - int v66; // [esp+34h] [ebp-64h] - int v67; // [esp+34h] [ebp-64h] - char v68; // [esp+34h] [ebp-64h] - char v69; // [esp+34h] [ebp-64h] - char v70; // [esp+34h] [ebp-64h] - int v71; // [esp+34h] [ebp-64h] - unsigned int v72; // [esp+34h] [ebp-64h] - int *Buf; // [esp+38h] [ebp-60h] - unsigned int Bufa; // [esp+38h] [ebp-60h] - std::locale::facet *v75; // [esp+3Ch] [ebp-5Ch] - std::locale::facet *v76; // [esp+3Ch] [ebp-5Ch] - int lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - std::string *lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - char lpuexcptd; // [esp+40h] [ebp-58h] - std::string *lpuexcpte; // [esp+40h] [ebp-58h] - char lpuexcptf; // [esp+40h] [ebp-58h] - char lpuexcptg; // [esp+40h] [ebp-58h] - char lpuexcpth; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcpti; // [esp+40h] [ebp-58h] - int v87; // [esp+48h] [ebp-50h] - char v88[5]; // [esp+83h] [ebp-15h] BYREF - int v89; // [esp+88h] [ebp-10h] BYREF - int v90[2]; // [esp+8Ch] [ebp-Ch] - - lpuexcpt = a4 + 108; - v54 = std::use_facet>(a4 + 108); - v75 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - Buf = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v75); - v87 = *Buf; - if ( !*Buf ) - { - v43 = operator new(0x44u); - *(_DWORD *)v43 = &off_51B084; - v43[8] = 0; - *((_DWORD *)v43 + 1) = 0; - *((_DWORD *)v43 + 2) = 0; - *((_DWORD *)v43 + 3) = 0; - *((_BYTE *)v43 + 18) = 0; - *((_DWORD *)v43 + 5) = 0; - *((_DWORD *)v43 + 6) = 0; - *((_DWORD *)v43 + 7) = 0; - *((_DWORD *)v43 + 8) = 0; - *((_DWORD *)v43 + 9) = 0; - *((_DWORD *)v43 + 10) = 0; - *((_DWORD *)v43 + 11) = 0; - *((_DWORD *)v43 + 12) = 0; - *((_DWORD *)v43 + 13) = 0; - *((_BYTE *)v43 + 67) = 0; - v52 = (std::locale::_Impl *)v43; - std::__moneypunct_cache::_M_cache((int)v43, lpuexcpt); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v52, v75, v48); - v87 = *Buf; - } - if ( *(_DWORD *)(v87 + 32) ) - v57 = *(_DWORD *)(v87 + 40) != 0; - else - v57 = 0; - *(_DWORD *)&v88[1] = std::string::_S_construct(0, 0); - if ( *(_BYTE *)(v87 + 16) ) - std::string::reserve((int *)&v88[1], (std::string *)0x20, v45); - v49 = v88; - v89 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v89, (std::string *)0x20, v46); - v60 = 0; - v56 = 0; - v76 = 0; - v90[0] = *(_DWORD *)(v87 + 52); - v53 = 0; - v55 = 0; - v58 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)v90 + v56) ) - { - case 0: - LOBYTE(v66) = 1; - goto LABEL_10; - case 1: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) - || (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 0x20) == 0 ) - { - LOBYTE(v66) = 0; - if ( v56 == 3 ) - { -LABEL_11: - v6 = v66 & (v55 > 1); - goto LABEL_12; - } - } - else - { - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - LOBYTE(v66) = 1; -LABEL_10: - if ( v56 == 3 ) - goto LABEL_11; - } - v29 = HIDWORD(a1); - v30 = (_DWORD *)a1; - while ( 1 ) - { - lpuexcpth = v29 == -1; - v65 = lpuexcpth & (v30 != 0); - if ( v65 ) - { - lpuexcpth = 0; - if ( v30[2] >= v30[3] ) - { - lpuexcpth = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v30 + 36))(v30) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpth = v65; - } - } - } - v31 = a3 == -1; - v64 = v31 & (a2 != 0); - if ( v64 ) - { - v31 = 0; - if ( a2[2] >= a2[3] ) - { - v38 = (*(int (**)(void))(*a2 + 36))(); - v31 = 0; - if ( v38 == -1 ) - { - a2 = 0; - v31 = v64; - } - } - } - if ( lpuexcpth == v31 ) - goto LABEL_113; - LOBYTE(v32) = BYTE4(a1); - v30 = (_DWORD *)a1; - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v33 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - if ( (*(_BYTE *)(v54[6] + 2 * *v33) & 0x20) == 0 ) - goto LABEL_113; -LABEL_88: - v30[2] = v33 + 1; - goto LABEL_89; - } - v32 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v32 == -1 ) - LODWORD(a1) = 0; - } - if ( (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) - goto LABEL_113; - v30 = (_DWORD *)a1; - v33 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - goto LABEL_88; - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v30 = (_DWORD *)a1; -LABEL_89: - HIDWORD(a1) = -1; - v29 = -1; - } - case 2: - if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) - goto LABEL_65; - lpuexcptf = v56 == 0 || v55 > 1; - if ( lpuexcptf ) - goto LABEL_65; - if ( v56 == 1 ) - { - if ( v57 || LOBYTE(v90[0]) == 3 || BYTE2(v90[0]) == 1 ) - { -LABEL_65: - v24 = (_DWORD *)a1; - v72 = 0; - v63 = *(_DWORD *)(v87 + 24); - v25 = HIDWORD(a1); - while ( 2 ) - { - lpuexcptg = v25 == -1; - v59 = lpuexcptg & (v24 != 0); - if ( v59 ) - { - lpuexcptg = 0; - if ( v24[2] >= v24[3] ) - { - lpuexcptg = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptg = v59; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v28 = (*(int (**)(void))(*a2 + 36))(); - lpuexcptg ^= v28 == -1; - if ( v28 == -1 ) - a2 = 0; - } - } - else - { - lpuexcptg ^= a3 == -1; - } - lpuexcptf = (v72 < v63) & lpuexcptg; - if ( !lpuexcptf ) - { - if ( v72 == v63 ) - { -LABEL_160: - LOBYTE(v66) = 1; - goto LABEL_114; - } -LABEL_143: - if ( !v72 ) - { - v66 = (*(_BYTE *)(a4 + 13) & 2) == 0; - lpuexcptf = (*(_BYTE *)(a4 + 13) & 2) != 0; - goto LABEL_114; - } -LABEL_107: - *a5 |= 4u; - goto LABEL_108; - } - LOBYTE(v26) = BYTE4(a1); - v24 = (_DWORD *)a1; - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v27 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v27 >= *(_DWORD *)(a1 + 12) ) - { - v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v26 == -1 ) - LODWORD(a1) = 0; - goto LABEL_69; - } - if ( *v27 != *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) ) - goto LABEL_143; -LABEL_71: - v24[2] = v27 + 1; - } - else - { -LABEL_69: - if ( *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) != (_BYTE)v26 ) - goto LABEL_143; - v24 = (_DWORD *)a1; - v27 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v27 < *(_DWORD *)(a1 + 12) ) - goto LABEL_71; - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v24 = (_DWORD *)a1; - } - ++v72; - v25 = -1; - HIDWORD(a1) = -1; - continue; - } - } - v23 = 2; -LABEL_116: - v56 = v23; - continue; - } - LOBYTE(v66) = 1; - if ( v56 == 2 ) - { - if ( HIBYTE(v90[0]) == 4 ) - goto LABEL_65; - v23 = 3; - if ( HIBYTE(v90[0]) == 3 && v57 ) - goto LABEL_65; - goto LABEL_116; - } -LABEL_114: - v23 = v56 + 1; - if ( v56 + 1 <= 3 && !lpuexcptf ) - goto LABEL_116; - v6 = v66 & (v55 > 1); -LABEL_12: - if ( !v6 ) - { - if ( (_BYTE)v66 ) - { - if ( *(_DWORD *)(v89 - 12) > 1u ) - goto LABEL_161; - goto LABEL_149; - } - goto LABEL_107; - } - if ( v58 ) - v7 = *(_DWORD *)(v87 + 36); - else - v7 = *(_DWORD *)(v87 + 28); - v67 = v7; - v8 = HIDWORD(a1); - v9 = (_DWORD *)a1; - Bufa = 1; - while ( 2 ) - { - lpuexcpta = v8 == -1; - v61 = lpuexcpta & (v9 != 0); - if ( v61 ) - { - lpuexcpta = 0; - if ( v9[2] >= v9[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = v61; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v12 = (*(int (**)(void))(*a2 + 36))(); - lpuexcpta ^= v12 == -1; - if ( v12 == -1 ) - a2 = 0; - } - } - else - { - lpuexcpta ^= a3 == -1; - } - if ( Bufa < v55 && lpuexcpta ) - { - LOBYTE(v10) = BYTE4(a1); - v9 = (_DWORD *)a1; - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_21; - v11 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v11 < *(_DWORD *)(a1 + 12) ) - { - if ( *v11 != *(_BYTE *)(v67 + Bufa) ) - goto LABEL_107; - goto LABEL_23; - } - v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v10 == -1 ) - LODWORD(a1) = 0; -LABEL_21: - if ( *(_BYTE *)(v67 + Bufa) != (_BYTE)v10 ) - goto LABEL_107; - v9 = (_DWORD *)a1; - v11 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v9 = (_DWORD *)a1; - } - else - { -LABEL_23: - v9[2] = v11 + 1; - } - ++Bufa; - v8 = -1; - HIDWORD(a1) = -1; - continue; - } - break; - } - if ( Bufa != v55 ) - goto LABEL_107; - if ( *(_DWORD *)(v89 - 12) <= 1u ) - goto LABEL_149; -LABEL_161: - first_not_of = std::string::find_first_not_of(&v89, (std::string *)0x30, 0, (unsigned int)v49); - if ( first_not_of ) - { - v41 = *(_DWORD *)(v89 - 12); - if ( first_not_of == -1 ) - first_not_of = v41 - 1; - if ( first_not_of > v41 ) - first_not_of = *(_DWORD *)(v89 - 12); - std::string::_M_mutate((char **)&v89, 0, first_not_of, 0, v50); - } -LABEL_149: - if ( v58 ) - { - v44 = (int *)v89; - if ( *(int *)(v89 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v89); - v44 = (int *)v89; - } - if ( *(_BYTE *)v44 != 48 ) - { - if ( *(v44 - 1) >= 0 ) - std::string::_M_leak_hard((char **)&v89); - std::string::_M_replace_aux((char **)&v89, 0, 0, 1u, 45, v51); - *(_DWORD *)(v89 - 4) = -1; - } - } - if ( *(_DWORD *)(*(_DWORD *)&v88[1] - 12) ) - { - v39 = (std::string *)(char)v76; - if ( v60 ) - v39 = (std::string *)v53; - std::string::push_back((int *)&v88[1], v39, (char)v47); - if ( !(unsigned __int8)std::__verify_grouping( - *(char **)(v87 + 8), - *(_DWORD *)(v87 + 12), - (const char **)&v88[1]) ) - *a5 |= 4u; - } - if ( v60 && *(std::locale::facet **)(v87 + 44) != v76 ) - goto LABEL_107; - std::string::swap(a6, (std::string *)&v89, v47); -LABEL_108: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - lpuexcpti = a1; - std::string::_Rep::_M_dispose((volatile signed __int32 *)(v89 - 12), (int)v88); - std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v88[1] - 12), (int)&v89); - return lpuexcpti; - case 3: - if ( *(_DWORD *)(v87 + 32) ) - { - lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptf && **(_BYTE **)(v87 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v55 = *(_DWORD *)(v87 + 32); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - LOBYTE(v66) = 1; - goto LABEL_114; - } - if ( !*(_DWORD *)(v87 + 40) ) - { - if ( !*(_DWORD *)(v87 + 32) ) - goto LABEL_57; - goto LABEL_125; - } - } - else if ( !*(_DWORD *)(v87 + 40) ) - { - goto LABEL_57; - } - lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptf && **(_BYTE **)(v87 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v55 = *(_DWORD *)(v87 + 40); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - LOBYTE(v66) = 1; - v58 = 1; - goto LABEL_114; - } - if ( !*(_DWORD *)(v87 + 32) || *(_DWORD *)(v87 + 40) ) - { -LABEL_57: - lpuexcptf = v57; - LOBYTE(v66) = !v57; - goto LABEL_114; - } -LABEL_125: - lpuexcptf = 0; - LOBYTE(v66) = 1; - v58 = 1; - goto LABEL_114; - case 4: - v13 = HIDWORD(a1); - v14 = (_DWORD *)a1; - while ( 2 ) - { - lpuexcptc = v13 == -1; - v69 = lpuexcptc & (v14 != 0); - if ( v69 ) - { - lpuexcptc = 0; - if ( v14[2] >= v14[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v14 + 36))(v14) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v69; - } - } - } - v17 = a3 == -1; - v70 = v17 & (a2 != 0); - if ( v70 ) - { - v17 = 0; - if ( a2[2] >= a2[3] ) - { - v34 = (*(int (**)(void))(*a2 + 36))(); - v17 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v17 = v70; - } - } - } - if ( lpuexcptc == v17 ) - goto LABEL_105; - v18 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_43; - v35 = *(char **)(a1 + 8); - if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) - { - v42 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcptd = v42; - if ( v42 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptd = -1; - } - } - else - { - v18 = *v35; -LABEL_43: - lpuexcptd = v18; - } - v19 = memchr((const void *)(v87 + 57), lpuexcptd, 0xAu); - if ( v19 ) - { - v68 = v19[(_DWORD)std::money_base::_S_atoms - 56 - v87]; - v62 = *(_DWORD *)(v89 - 12); - lpuexcptb = (std::string *)(v62 + 1); - if ( (unsigned int)(v62 + 1) > *(_DWORD *)(v89 - 8) || *(int *)(v89 - 4) > 0 ) - std::string::reserve(&v89, lpuexcptb, (unsigned int)v47); - v76 = (std::locale::facet *)((char *)v76 + 1); - *(_BYTE *)(v89 + *(_DWORD *)(v89 - 12)) = v68; - v15 = v89; - *(_DWORD *)(v89 - 12) = lpuexcptb; - *(_DWORD *)(v15 - 4) = 0; - *(_BYTE *)(v15 + v62 + 1) = 0; -LABEL_36: - v14 = (_DWORD *)a1; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 < *(_DWORD *)(a1 + 12) ) - { -LABEL_37: - v14[2] = v16 + 1; -LABEL_38: - HIDWORD(a1) = -1; - v13 = -1; - continue; - } -LABEL_54: - (*(void (__fastcall **)(_DWORD *))(*v14 + 40))(v14); - v14 = (_DWORD *)a1; - goto LABEL_38; - } - break; - } - LOBYTE(v66) = v60 | (*(_BYTE *)(v87 + 17) != (unsigned __int8)lpuexcptd); - if ( (_BYTE)v66 ) - { - v20 = *(_BYTE *)(v87 + 16); - if ( v20 ) - { - if ( *(_BYTE *)(v87 + 18) != lpuexcptd ) - goto LABEL_172; - if ( v60 ) - { - v20 = v60; -LABEL_172: - LOBYTE(v66) = v20; - if ( !*(_DWORD *)(v89 - 12) ) - goto LABEL_107; - goto LABEL_113; - } - if ( v76 ) - { - v71 = *(_DWORD *)(*(_DWORD *)&v88[1] - 12); - lpuexcpte = (std::string *)(v71 + 1); - if ( (unsigned int)(v71 + 1) > *(_DWORD *)(*(_DWORD *)&v88[1] - 8) || *(int *)(*(_DWORD *)&v88[1] - 4) > 0 ) - std::string::reserve((int *)&v88[1], lpuexcpte, (unsigned int)v47); - v21 = (char)v76; - v76 = 0; - *(_BYTE *)(*(_DWORD *)&v88[1] + *(_DWORD *)(*(_DWORD *)&v88[1] - 12)) = v21; - v22 = *(_DWORD *)&v88[1]; - *(_DWORD *)(*(_DWORD *)&v88[1] - 4) = 0; - *(_DWORD *)(v22 - 12) = lpuexcpte; - *(_BYTE *)(v22 + v71 + 1) = 0; - v14 = (_DWORD *)a1; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 < *(_DWORD *)(a1 + 12) ) - goto LABEL_37; - goto LABEL_54; - } - LOBYTE(v66) = 0; - } - } - else - { - if ( *(int *)(v87 + 44) > 0 ) - { - v36 = (char)v76; - v60 = 1; - v76 = 0; - v53 = v36; - goto LABEL_36; - } - v60 = 0; -LABEL_105: - LOBYTE(v66) = 1; - } - if ( !*(_DWORD *)(v89 - 12) ) - goto LABEL_107; -LABEL_113: - lpuexcptf = v66 ^ 1; - goto LABEL_114; - default: - lpuexcptf = 0; - goto LABEL_160; - } - } -} -// 491295: variable 'v48' is possibly undefined -// 49059D: variable 'v45' is possibly undefined -// 4905DB: variable 'v46' is possibly undefined -// 490793: variable 'v47' is possibly undefined -// 4910CA: variable 'v49' is possibly undefined -// 49110B: variable 'v50' is possibly undefined -// 49133F: variable 'v51' is possibly undefined -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 50C48C: using guessed type signed __int32 std::moneypunct::id; -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004914C0) -------------------------------------------------------- -unsigned __int64 __stdcall std::money_get>::_M_extract( - unsigned __int64 a1, - _DWORD *a2, - int a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // al - int v7; // eax - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - _BYTE *v11; // eax - int v12; // eax - int v13; // eax - _DWORD *v14; // ecx - int v15; // eax - unsigned int v16; // eax - char v17; // al - char v18; // al - _BYTE *v19; // eax - char v20; // al - char v21; // bl - int v22; // eax - int v23; // eax - _DWORD *v24; // ecx - int v25; // eax - int v26; // eax - _BYTE *v27; // eax - int v28; // eax - int v29; // eax - _DWORD *v30; // ecx - char v31; // al - int v32; // eax - unsigned __int8 *v33; // eax - int v34; // edx - char *v35; // eax - char v36; // al - int v38; // edx - std::string *v39; // eax - unsigned int first_not_of; // eax - unsigned int v41; // edx - int v42; // eax - _WORD *v43; // eax - int *v44; // eax - unsigned int v45; // [esp+4h] [ebp-94h] - unsigned int v46; // [esp+4h] [ebp-94h] - std::string *v47; // [esp+4h] [ebp-94h] - unsigned int v48; // [esp+8h] [ebp-90h] - char *v49; // [esp+8h] [ebp-90h] - unsigned int v50; // [esp+Ch] [ebp-8Ch] - char v51; // [esp+10h] [ebp-88h] - std::locale::_Impl *v52; // [esp+14h] [ebp-84h] - char v53; // [esp+18h] [ebp-80h] - _DWORD *v54; // [esp+1Ch] [ebp-7Ch] - unsigned int v55; // [esp+20h] [ebp-78h] - int v56; // [esp+28h] [ebp-70h] - bool v57; // [esp+2Ch] [ebp-6Ch] - char v58; // [esp+2Dh] [ebp-6Bh] - char v59; // [esp+2Eh] [ebp-6Ah] - char v60; // [esp+2Fh] [ebp-69h] - char v61; // [esp+30h] [ebp-68h] - int v62; // [esp+30h] [ebp-68h] - unsigned int v63; // [esp+30h] [ebp-68h] - char v64; // [esp+30h] [ebp-68h] - char v65; // [esp+30h] [ebp-68h] - int v66; // [esp+34h] [ebp-64h] - int v67; // [esp+34h] [ebp-64h] - char v68; // [esp+34h] [ebp-64h] - char v69; // [esp+34h] [ebp-64h] - char v70; // [esp+34h] [ebp-64h] - int v71; // [esp+34h] [ebp-64h] - unsigned int v72; // [esp+34h] [ebp-64h] - int *Buf; // [esp+38h] [ebp-60h] - unsigned int Bufa; // [esp+38h] [ebp-60h] - std::locale::facet *v75; // [esp+3Ch] [ebp-5Ch] - std::locale::facet *v76; // [esp+3Ch] [ebp-5Ch] - int lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - std::string *lpuexcptb; // [esp+40h] [ebp-58h] - char lpuexcptc; // [esp+40h] [ebp-58h] - char lpuexcptd; // [esp+40h] [ebp-58h] - std::string *lpuexcpte; // [esp+40h] [ebp-58h] - char lpuexcptf; // [esp+40h] [ebp-58h] - char lpuexcptg; // [esp+40h] [ebp-58h] - char lpuexcpth; // [esp+40h] [ebp-58h] - unsigned __int64 lpuexcpti; // [esp+40h] [ebp-58h] - int v87; // [esp+48h] [ebp-50h] - char v88[5]; // [esp+83h] [ebp-15h] BYREF - int v89; // [esp+88h] [ebp-10h] BYREF - int v90[2]; // [esp+8Ch] [ebp-Ch] - - lpuexcpt = a4 + 108; - v54 = std::use_facet>(a4 + 108); - v75 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - Buf = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v75); - v87 = *Buf; - if ( !*Buf ) - { - v43 = operator new(0x44u); - *(_DWORD *)v43 = &off_51B094; - v43[8] = 0; - *((_DWORD *)v43 + 1) = 0; - *((_DWORD *)v43 + 2) = 0; - *((_DWORD *)v43 + 3) = 0; - *((_BYTE *)v43 + 18) = 0; - *((_DWORD *)v43 + 5) = 0; - *((_DWORD *)v43 + 6) = 0; - *((_DWORD *)v43 + 7) = 0; - *((_DWORD *)v43 + 8) = 0; - *((_DWORD *)v43 + 9) = 0; - *((_DWORD *)v43 + 10) = 0; - *((_DWORD *)v43 + 11) = 0; - *((_DWORD *)v43 + 12) = 0; - *((_DWORD *)v43 + 13) = 0; - *((_BYTE *)v43 + 67) = 0; - v52 = (std::locale::_Impl *)v43; - std::__moneypunct_cache::_M_cache((int)v43, lpuexcpt); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v52, v75, v48); - v87 = *Buf; - } - if ( *(_DWORD *)(v87 + 32) ) - v57 = *(_DWORD *)(v87 + 40) != 0; - else - v57 = 0; - *(_DWORD *)&v88[1] = std::string::_S_construct(0, 0); - if ( *(_BYTE *)(v87 + 16) ) - std::string::reserve((int *)&v88[1], (std::string *)0x20, v45); - v49 = v88; - v89 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v89, (std::string *)0x20, v46); - v60 = 0; - v56 = 0; - v76 = 0; - v90[0] = *(_DWORD *)(v87 + 52); - v53 = 0; - v55 = 0; - v58 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)v90 + v56) ) - { - case 0: - LOBYTE(v66) = 1; - goto LABEL_10; - case 1: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) - || (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1)) & 0x20) == 0 ) - { - LOBYTE(v66) = 0; - if ( v56 == 3 ) - { -LABEL_11: - v6 = v66 & (v55 > 1); - goto LABEL_12; - } - } - else - { - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - LOBYTE(v66) = 1; -LABEL_10: - if ( v56 == 3 ) - goto LABEL_11; - } - v29 = HIDWORD(a1); - v30 = (_DWORD *)a1; - while ( 1 ) - { - lpuexcpth = v29 == -1; - v65 = lpuexcpth & (v30 != 0); - if ( v65 ) - { - lpuexcpth = 0; - if ( v30[2] >= v30[3] ) - { - lpuexcpth = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v30 + 36))(v30) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpth = v65; - } - } - } - v31 = a3 == -1; - v64 = v31 & (a2 != 0); - if ( v64 ) - { - v31 = 0; - if ( a2[2] >= a2[3] ) - { - v38 = (*(int (**)(void))(*a2 + 36))(); - v31 = 0; - if ( v38 == -1 ) - { - a2 = 0; - v31 = v64; - } - } - } - if ( lpuexcpth == v31 ) - goto LABEL_113; - LOBYTE(v32) = BYTE4(a1); - v30 = (_DWORD *)a1; - if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) - { - v33 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - { - if ( (*(_BYTE *)(v54[6] + 2 * *v33) & 0x20) == 0 ) - goto LABEL_113; -LABEL_88: - v30[2] = v33 + 1; - goto LABEL_89; - } - v32 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v32 == -1 ) - LODWORD(a1) = 0; - } - if ( (*(_BYTE *)(v54[6] + 2 * (unsigned __int8)v32) & 0x20) == 0 ) - goto LABEL_113; - v30 = (_DWORD *)a1; - v33 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) - goto LABEL_88; - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v30 = (_DWORD *)a1; -LABEL_89: - HIDWORD(a1) = -1; - v29 = -1; - } - case 2: - if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) - goto LABEL_65; - lpuexcptf = v56 == 0 || v55 > 1; - if ( lpuexcptf ) - goto LABEL_65; - if ( v56 == 1 ) - { - if ( v57 || LOBYTE(v90[0]) == 3 || BYTE2(v90[0]) == 1 ) - { -LABEL_65: - v24 = (_DWORD *)a1; - v72 = 0; - v63 = *(_DWORD *)(v87 + 24); - v25 = HIDWORD(a1); - while ( 2 ) - { - lpuexcptg = v25 == -1; - v59 = lpuexcptg & (v24 != 0); - if ( v59 ) - { - lpuexcptg = 0; - if ( v24[2] >= v24[3] ) - { - lpuexcptg = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptg = v59; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v28 = (*(int (**)(void))(*a2 + 36))(); - lpuexcptg ^= v28 == -1; - if ( v28 == -1 ) - a2 = 0; - } - } - else - { - lpuexcptg ^= a3 == -1; - } - lpuexcptf = (v72 < v63) & lpuexcptg; - if ( !lpuexcptf ) - { - if ( v72 == v63 ) - { -LABEL_160: - LOBYTE(v66) = 1; - goto LABEL_114; - } -LABEL_143: - if ( !v72 ) - { - v66 = (*(_BYTE *)(a4 + 13) & 2) == 0; - lpuexcptf = (*(_BYTE *)(a4 + 13) & 2) != 0; - goto LABEL_114; - } -LABEL_107: - *a5 |= 4u; - goto LABEL_108; - } - LOBYTE(v26) = BYTE4(a1); - v24 = (_DWORD *)a1; - if ( a1 > 0xFFFFFFFF00000000LL ) - { - v27 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v27 >= *(_DWORD *)(a1 + 12) ) - { - v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v26 == -1 ) - LODWORD(a1) = 0; - goto LABEL_69; - } - if ( *v27 != *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) ) - goto LABEL_143; -LABEL_71: - v24[2] = v27 + 1; - } - else - { -LABEL_69: - if ( *(_BYTE *)(*(_DWORD *)(v87 + 20) + v72) != (_BYTE)v26 ) - goto LABEL_143; - v24 = (_DWORD *)a1; - v27 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v27 < *(_DWORD *)(a1 + 12) ) - goto LABEL_71; - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v24 = (_DWORD *)a1; - } - ++v72; - v25 = -1; - HIDWORD(a1) = -1; - continue; - } - } - v23 = 2; -LABEL_116: - v56 = v23; - continue; - } - LOBYTE(v66) = 1; - if ( v56 == 2 ) - { - if ( HIBYTE(v90[0]) == 4 ) - goto LABEL_65; - v23 = 3; - if ( HIBYTE(v90[0]) == 3 && v57 ) - goto LABEL_65; - goto LABEL_116; - } -LABEL_114: - v23 = v56 + 1; - if ( v56 + 1 <= 3 && !lpuexcptf ) - goto LABEL_116; - v6 = v66 & (v55 > 1); -LABEL_12: - if ( !v6 ) - { - if ( (_BYTE)v66 ) - { - if ( *(_DWORD *)(v89 - 12) > 1u ) - goto LABEL_161; - goto LABEL_149; - } - goto LABEL_107; - } - if ( v58 ) - v7 = *(_DWORD *)(v87 + 36); - else - v7 = *(_DWORD *)(v87 + 28); - v67 = v7; - v8 = HIDWORD(a1); - v9 = (_DWORD *)a1; - Bufa = 1; - while ( 2 ) - { - lpuexcpta = v8 == -1; - v61 = lpuexcpta & (v9 != 0); - if ( v61 ) - { - lpuexcpta = 0; - if ( v9[2] >= v9[3] ) - { - lpuexcpta = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = v61; - } - } - } - if ( a2 && a3 == -1 ) - { - if ( a2[2] >= a2[3] ) - { - v12 = (*(int (**)(void))(*a2 + 36))(); - lpuexcpta ^= v12 == -1; - if ( v12 == -1 ) - a2 = 0; - } - } - else - { - lpuexcpta ^= a3 == -1; - } - if ( Bufa < v55 && lpuexcpta ) - { - LOBYTE(v10) = BYTE4(a1); - v9 = (_DWORD *)a1; - if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) - goto LABEL_21; - v11 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v11 < *(_DWORD *)(a1 + 12) ) - { - if ( *v11 != *(_BYTE *)(v67 + Bufa) ) - goto LABEL_107; - goto LABEL_23; - } - v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - if ( v10 == -1 ) - LODWORD(a1) = 0; -LABEL_21: - if ( *(_BYTE *)(v67 + Bufa) != (_BYTE)v10 ) - goto LABEL_107; - v9 = (_DWORD *)a1; - v11 = *(_BYTE **)(a1 + 8); - if ( (unsigned int)v11 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v9 = (_DWORD *)a1; - } - else - { -LABEL_23: - v9[2] = v11 + 1; - } - ++Bufa; - v8 = -1; - HIDWORD(a1) = -1; - continue; - } - break; - } - if ( Bufa != v55 ) - goto LABEL_107; - if ( *(_DWORD *)(v89 - 12) <= 1u ) - goto LABEL_149; -LABEL_161: - first_not_of = std::string::find_first_not_of(&v89, (std::string *)0x30, 0, (unsigned int)v49); - if ( first_not_of ) - { - v41 = *(_DWORD *)(v89 - 12); - if ( first_not_of == -1 ) - first_not_of = v41 - 1; - if ( first_not_of > v41 ) - first_not_of = *(_DWORD *)(v89 - 12); - std::string::_M_mutate((char **)&v89, 0, first_not_of, 0, v50); - } -LABEL_149: - if ( v58 ) - { - v44 = (int *)v89; - if ( *(int *)(v89 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v89); - v44 = (int *)v89; - } - if ( *(_BYTE *)v44 != 48 ) - { - if ( *(v44 - 1) >= 0 ) - std::string::_M_leak_hard((char **)&v89); - std::string::_M_replace_aux((char **)&v89, 0, 0, 1u, 45, v51); - *(_DWORD *)(v89 - 4) = -1; - } - } - if ( *(_DWORD *)(*(_DWORD *)&v88[1] - 12) ) - { - v39 = (std::string *)(char)v76; - if ( v60 ) - v39 = (std::string *)v53; - std::string::push_back((int *)&v88[1], v39, (char)v47); - if ( !(unsigned __int8)std::__verify_grouping( - *(char **)(v87 + 8), - *(_DWORD *)(v87 + 12), - (const char **)&v88[1]) ) - *a5 |= 4u; - } - if ( v60 && *(std::locale::facet **)(v87 + 44) != v76 ) - goto LABEL_107; - std::string::swap(a6, (std::string *)&v89, v47); -LABEL_108: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - lpuexcpti = a1; - std::string::_Rep::_M_dispose((volatile signed __int32 *)(v89 - 12), (int)v88); - std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v88[1] - 12), (int)&v89); - return lpuexcpti; - case 3: - if ( *(_DWORD *)(v87 + 32) ) - { - lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptf && **(_BYTE **)(v87 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v55 = *(_DWORD *)(v87 + 32); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - LOBYTE(v66) = 1; - goto LABEL_114; - } - if ( !*(_DWORD *)(v87 + 40) ) - { - if ( !*(_DWORD *)(v87 + 32) ) - goto LABEL_57; - goto LABEL_125; - } - } - else if ( !*(_DWORD *)(v87 + 40) ) - { - goto LABEL_57; - } - lpuexcptf = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptf && **(_BYTE **)(v87 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v55 = *(_DWORD *)(v87 + 40); - std::streambuf::sbumpc((_DWORD *)a1); - HIDWORD(a1) = -1; - LOBYTE(v66) = 1; - v58 = 1; - goto LABEL_114; - } - if ( !*(_DWORD *)(v87 + 32) || *(_DWORD *)(v87 + 40) ) - { -LABEL_57: - lpuexcptf = v57; - LOBYTE(v66) = !v57; - goto LABEL_114; - } -LABEL_125: - lpuexcptf = 0; - LOBYTE(v66) = 1; - v58 = 1; - goto LABEL_114; - case 4: - v13 = HIDWORD(a1); - v14 = (_DWORD *)a1; - while ( 2 ) - { - lpuexcptc = v13 == -1; - v69 = lpuexcptc & (v14 != 0); - if ( v69 ) - { - lpuexcptc = 0; - if ( v14[2] >= v14[3] ) - { - lpuexcptc = 0; - if ( (*(int (__fastcall **)(_DWORD *))(*v14 + 36))(v14) == -1 ) - { - LODWORD(a1) = 0; - lpuexcptc = v69; - } - } - } - v17 = a3 == -1; - v70 = v17 & (a2 != 0); - if ( v70 ) - { - v17 = 0; - if ( a2[2] >= a2[3] ) - { - v34 = (*(int (**)(void))(*a2 + 36))(); - v17 = 0; - if ( v34 == -1 ) - { - a2 = 0; - v17 = v70; - } - } - } - if ( lpuexcptc == v17 ) - goto LABEL_105; - v18 = BYTE4(a1); - if ( a1 <= 0xFFFFFFFF00000000LL ) - goto LABEL_43; - v35 = *(char **)(a1 + 8); - if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) - { - v42 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); - lpuexcptd = v42; - if ( v42 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptd = -1; - } - } - else - { - v18 = *v35; -LABEL_43: - lpuexcptd = v18; - } - v19 = memchr((const void *)(v87 + 57), lpuexcptd, 0xAu); - if ( v19 ) - { - v68 = v19[(_DWORD)std::money_base::_S_atoms - 56 - v87]; - v62 = *(_DWORD *)(v89 - 12); - lpuexcptb = (std::string *)(v62 + 1); - if ( (unsigned int)(v62 + 1) > *(_DWORD *)(v89 - 8) || *(int *)(v89 - 4) > 0 ) - std::string::reserve(&v89, lpuexcptb, (unsigned int)v47); - v76 = (std::locale::facet *)((char *)v76 + 1); - *(_BYTE *)(v89 + *(_DWORD *)(v89 - 12)) = v68; - v15 = v89; - *(_DWORD *)(v89 - 12) = lpuexcptb; - *(_DWORD *)(v15 - 4) = 0; - *(_BYTE *)(v15 + v62 + 1) = 0; -LABEL_36: - v14 = (_DWORD *)a1; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 < *(_DWORD *)(a1 + 12) ) - { -LABEL_37: - v14[2] = v16 + 1; -LABEL_38: - HIDWORD(a1) = -1; - v13 = -1; - continue; - } -LABEL_54: - (*(void (__fastcall **)(_DWORD *))(*v14 + 40))(v14); - v14 = (_DWORD *)a1; - goto LABEL_38; - } - break; - } - LOBYTE(v66) = v60 | (*(_BYTE *)(v87 + 17) != (unsigned __int8)lpuexcptd); - if ( (_BYTE)v66 ) - { - v20 = *(_BYTE *)(v87 + 16); - if ( v20 ) - { - if ( *(_BYTE *)(v87 + 18) != lpuexcptd ) - goto LABEL_172; - if ( v60 ) - { - v20 = v60; -LABEL_172: - LOBYTE(v66) = v20; - if ( !*(_DWORD *)(v89 - 12) ) - goto LABEL_107; - goto LABEL_113; - } - if ( v76 ) - { - v71 = *(_DWORD *)(*(_DWORD *)&v88[1] - 12); - lpuexcpte = (std::string *)(v71 + 1); - if ( (unsigned int)(v71 + 1) > *(_DWORD *)(*(_DWORD *)&v88[1] - 8) || *(int *)(*(_DWORD *)&v88[1] - 4) > 0 ) - std::string::reserve((int *)&v88[1], lpuexcpte, (unsigned int)v47); - v21 = (char)v76; - v76 = 0; - *(_BYTE *)(*(_DWORD *)&v88[1] + *(_DWORD *)(*(_DWORD *)&v88[1] - 12)) = v21; - v22 = *(_DWORD *)&v88[1]; - *(_DWORD *)(*(_DWORD *)&v88[1] - 4) = 0; - *(_DWORD *)(v22 - 12) = lpuexcpte; - *(_BYTE *)(v22 + v71 + 1) = 0; - v14 = (_DWORD *)a1; - v16 = *(_DWORD *)(a1 + 8); - if ( v16 < *(_DWORD *)(a1 + 12) ) - goto LABEL_37; - goto LABEL_54; - } - LOBYTE(v66) = 0; - } - } - else - { - if ( *(int *)(v87 + 44) > 0 ) - { - v36 = (char)v76; - v60 = 1; - v76 = 0; - v53 = v36; - goto LABEL_36; - } - v60 = 0; -LABEL_105: - LOBYTE(v66) = 1; - } - if ( !*(_DWORD *)(v89 - 12) ) - goto LABEL_107; -LABEL_113: - lpuexcptf = v66 ^ 1; - goto LABEL_114; - default: - lpuexcptf = 0; - goto LABEL_160; - } - } -} -// 492285: variable 'v48' is possibly undefined -// 49158D: variable 'v45' is possibly undefined -// 4915CB: variable 'v46' is possibly undefined -// 491783: variable 'v47' is possibly undefined -// 4920BA: variable 'v49' is possibly undefined -// 4920FB: variable 'v50' is possibly undefined -// 49232F: variable 'v51' is possibly undefined -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 50C490: using guessed type signed __int32 std::moneypunct::id; -// 51B094: using guessed type int (*off_51B094)(); - -//----- (004924B0) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); -} - -//----- (004924C0) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (004924D0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -unsigned __int64 __stdcall std::money_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - char a4, - int a5, - _DWORD *a6, - int *a7) -{ - unsigned __int64 v7; // rax - size_t v8; // eax - char v9; // al - void (__thiscall *v10)(_BYTE *, char *, char *, void *); // eax - int v11; // eax - char v13; // [esp+4h] [ebp-84h] - char *v14; // [esp+28h] [ebp-60h] - void *v15; // [esp+2Ch] [ebp-5Ch] - size_t Size; // [esp+30h] [ebp-58h] - _BYTE *v17; // [esp+34h] [ebp-54h] - char *Src; // [esp+38h] [ebp-50h] - int v19; // [esp+7Bh] [ebp-Dh] BYREF - int v20[3]; // [esp+7Ch] [ebp-Ch] BYREF - unsigned __int64 v21; // [esp+90h] [ebp+8h] - - v17 = std::use_facet>(a5 + 108); - v20[0] = (int)std::string::_S_construct(0, 0); - if ( a4 ) - v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v20); - else - v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v20); - v21 = v7; - Src = (char *)v20[0]; - v8 = *(_DWORD *)(v20[0] - 12); - Size = v8; - if ( v8 ) - { - std::string::resize(a7, v8, 0, v13); - v15 = (void *)*a7; - if ( *(int *)(*a7 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)a7); - v15 = (void *)*a7; - } - Src = (char *)v20[0]; - v14 = (char *)(Size + v20[0]); - v9 = v17[28]; - if ( v9 == 1 ) - { - if ( v14 != (char *)v20[0] ) - goto LABEL_11; - } - else - { - if ( !v9 ) - std::ctype::_M_widen_init((int)v17); - v10 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v17 + 28); - if ( (char *)v10 == (char *)std::ctype::do_widen ) - { - if ( v14 != Src ) - { -LABEL_11: - memcpy(v15, Src, Size); - Src = (char *)v20[0]; - goto LABEL_12; - } - } - else - { - v10(v17, Src, v14, v15); - } - Src = (char *)v20[0]; - } - } -LABEL_12: - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)Src - 1, 0xFFFFFFFF) > 0 ) - return v21; -LABEL_17: - std::string::_Rep::_M_destroy(Src - 12, (int)&v19); - return v21; - } - v11 = *((_DWORD *)Src - 1); - *((_DWORD *)Src - 1) = v11 - 1; - if ( v11 <= 0 ) - goto LABEL_17; - return v21; -} -// 49272F: positive sp value 4 has been found -// 4925B9: variable 'v13' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 4924D0: using guessed type _DWORD *arg_8; - -//----- (00492750) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -unsigned __int64 __stdcall std::money_get>::do_get( - unsigned __int64 a1, - _DWORD *a2, - int a3, - char a4, - int a5, - _DWORD *a6, - long double *a7) -{ - unsigned __int64 v7; // rax - char *v8; // ecx - int v9; // eax - char *String; // [esp+68h] [ebp-10h] BYREF - int v12[3]; // [esp+6Ch] [ebp-Ch] BYREF - unsigned __int64 v13; // [esp+80h] [ebp+8h] - - String = (char *)std::string::_S_construct(0, 0); - if ( a4 ) - v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); - else - v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); - v13 = v7; - v12[0] = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v(String, a7, a6); - v8 = String; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) - return v13; -LABEL_8: - std::string::_Rep::_M_destroy(v8 - 12, (int)v12); - return v13; - } - v9 = *((_DWORD *)String - 1); - *((_DWORD *)String - 1) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_8; - return v13; -} -// 4928A8: positive sp value 4 has been found -// 50B0F0: using guessed type int _CRT_MT; -// 492750: using guessed type int var_C[3]; - -//----- (004928C0) -------------------------------------------------------- -__int64 __stdcall std::money_get>::_M_extract( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // al - int v7; // eax - __int16 v8; // ax - _DWORD *v9; // ecx - char v10; // al - __int16 v11; // ax - unsigned int v12; // eax - _WORD *v13; // eax - __int16 v14; // ax - __int16 v15; // ax - _DWORD *v16; // ecx - char v17; // al - unsigned __int16 v18; // dx - _WORD *v19; // eax - char v20; // al - char v21; // cl - int v22; // eax - unsigned int v23; // eax - int v24; // eax - _DWORD *v25; // ecx - __int16 i; // ax - bool v27; // al - __int16 v28; // ax - unsigned int v29; // eax - _WORD *v30; // eax - __int16 v31; // ax - __int16 v32; // ax - _DWORD *v33; // ecx - char v34; // al - unsigned __int16 v35; // ax - unsigned int v36; // eax - _WORD *v37; // eax - __int16 v38; // ax - int v39; // eax - __int16 *v40; // eax - __int16 v41; // dx - int v42; // eax - int v43; // edx - int v44; // eax - int v45; // edx - _WORD *v47; // eax - __int16 v48; // ax - _WORD *v49; // eax - char v50; // al - _WORD *v51; // eax - __int16 v52; // dx - _WORD *v53; // eax - unsigned __int16 v54; // ax - __int16 *v55; // eax - __int16 v56; // dx - std::string *v57; // eax - _WORD *v58; // eax - _WORD *v59; // eax - __int16 v60; // dx - __int16 *v61; // eax - unsigned int first_not_of; // eax - unsigned int v63; // edx - _DWORD *v64; // eax - int *v65; // eax - unsigned int v66; // [esp+4h] [ebp-94h] - unsigned int v67; // [esp+4h] [ebp-94h] - std::string *v68; // [esp+4h] [ebp-94h] - unsigned int v69; // [esp+8h] [ebp-90h] - unsigned int v70; // [esp+Ch] [ebp-8Ch] - std::locale::_Impl *v71; // [esp+10h] [ebp-88h] - char v72; // [esp+14h] [ebp-84h] - void *v73; // [esp+18h] [ebp-80h] - unsigned int v74; // [esp+1Ch] [ebp-7Ch] - int v75; // [esp+24h] [ebp-74h] - bool v76; // [esp+29h] [ebp-6Fh] - char v77; // [esp+2Ah] [ebp-6Eh] - char v78; // [esp+2Bh] [ebp-6Dh] - bool v79; // [esp+2Ch] [ebp-6Ch] - bool v80; // [esp+2Ch] [ebp-6Ch] - char v81; // [esp+30h] [ebp-68h] - char v82; // [esp+30h] [ebp-68h] - unsigned int v83; // [esp+30h] [ebp-68h] - char v84; // [esp+30h] [ebp-68h] - char v85; // [esp+30h] [ebp-68h] - int v86; // [esp+30h] [ebp-68h] - int v87; // [esp+34h] [ebp-64h] - int v88; // [esp+34h] [ebp-64h] - char v89; // [esp+34h] [ebp-64h] - char v90; // [esp+34h] [ebp-64h] - int v91; // [esp+34h] [ebp-64h] - unsigned int v92; // [esp+34h] [ebp-64h] - char v93; // [esp+34h] [ebp-64h] - int *v94; // [esp+38h] [ebp-60h] - unsigned int v95; // [esp+38h] [ebp-60h] - std::locale::facet *v96; // [esp+3Ch] [ebp-5Ch] - std::locale::facet *v97; // [esp+3Ch] [ebp-5Ch] - int lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - char lpuexcptb; // [esp+40h] [ebp-58h] - std::string *lpuexcptc; // [esp+40h] [ebp-58h] - char lpuexcptd; // [esp+40h] [ebp-58h] - bool lpuexcpte; // [esp+40h] [ebp-58h] - char lpuexcptf; // [esp+40h] [ebp-58h] - std::string *lpuexcptg; // [esp+40h] [ebp-58h] - __int64 lpuexcpth; // [esp+40h] [ebp-58h] - int v107; // [esp+48h] [ebp-50h] - char v108[5]; // [esp+83h] [ebp-15h] BYREF - int v109; // [esp+88h] [ebp-10h] BYREF - int v110[2]; // [esp+8Ch] [ebp-Ch] - - lpuexcpt = a4 + 108; - v73 = std::use_facet>(a4 + 108); - v96 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v96); - v107 = *v94; - if ( !*v94 ) - { - v64 = operator new(0x54u); - v64[1] = 0; - *v64 = &off_51B0A4; - v64[2] = 0; - v64[3] = 0; - *((_BYTE *)v64 + 16) = 0; - *(_DWORD *)((char *)v64 + 18) = 0; - v64[6] = 0; - v64[7] = 0; - v64[8] = 0; - v64[9] = 0; - v64[10] = 0; - v64[11] = 0; - v64[12] = 0; - v64[13] = 0; - v64[14] = 0; - *((_BYTE *)v64 + 82) = 0; - v71 = (std::locale::_Impl *)v64; - std::__moneypunct_cache::_M_cache((int)v64, lpuexcpt); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v71, v96, v69); - v107 = *v94; - } - if ( *(_DWORD *)(v107 + 36) ) - v76 = *(_DWORD *)(v107 + 44) != 0; - else - v76 = 0; - *(_DWORD *)&v108[1] = std::string::_S_construct(0, 0); - if ( *(_BYTE *)(v107 + 16) ) - std::string::reserve((int *)&v108[1], (std::string *)0x20, v66); - v109 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v109, (std::string *)0x20, v67); - v78 = 0; - v75 = 0; - v77 = 0; - v110[0] = *(_DWORD *)(v107 + 56); - v97 = 0; - v72 = 0; - v74 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)v110 + v75) ) - { - case 0: - LOBYTE(v87) = 1; - goto LABEL_10; - case 1: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) - || (v54 = std::istreambuf_iterator::_M_get((int)&a1), - LOBYTE(v87) = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v54), - !(_BYTE)v87) ) - { - LOBYTE(v87) = 0; - if ( v75 == 3 ) - goto LABEL_11; - } - else - { - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; -LABEL_10: - if ( v75 == 3 ) - { -LABEL_11: - v6 = v87 & (v74 > 1); - goto LABEL_12; - } - } - v32 = WORD2(a1); - v33 = (_DWORD *)a1; - while ( 1 ) - { - lpuexcptf = v32 == -1; - v85 = lpuexcptf & (v33 != 0); - if ( v85 ) - { - v37 = (_WORD *)v33[2]; - v38 = (unsigned int)v37 >= v33[3] ? (*(int (__fastcall **)(_DWORD *))(*v33 + 36))(v33) : *v37; - lpuexcptf = 0; - if ( v38 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptf = v85; - } - } - v34 = a3 == -1; - v84 = v34 & (a2 != 0); - if ( v84 ) - { - v51 = (_WORD *)a2[2]; - v52 = (unsigned int)v51 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v51; - v34 = 0; - if ( v52 == -1 ) - { - a2 = 0; - v34 = v84; - } - } - if ( lpuexcptf == v34 ) - break; - v35 = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v53 = *(_WORD **)(a1 + 8); - v35 = (unsigned int)v53 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v53; - if ( v35 == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v35) ) - break; - v33 = (_DWORD *)a1; - v36 = *(_DWORD *)(a1 + 8); - if ( v36 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v33 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v36 + 2; - } - WORD2(a1) = -1; - v32 = -1; - } -LABEL_120: - lpuexcptd = v87 ^ 1; - goto LABEL_121; - case 2: - if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) - goto LABEL_61; - lpuexcptd = v75 == 0 || v74 > 1; - if ( lpuexcptd ) - goto LABEL_61; - if ( v75 != 1 ) - { - LOBYTE(v87) = 1; - if ( v75 != 2 ) - goto LABEL_121; - if ( HIBYTE(v110[0]) == 4 ) - goto LABEL_61; - v24 = 3; - if ( HIBYTE(v110[0]) == 3 && v76 ) - goto LABEL_61; -LABEL_123: - v75 = v24; - continue; - } - if ( !v76 && LOBYTE(v110[0]) != 3 && BYTE2(v110[0]) != 1 ) - { - v24 = 2; - goto LABEL_123; - } -LABEL_61: - v25 = (_DWORD *)a1; - v92 = 0; - v83 = *(_DWORD *)(v107 + 28); - for ( i = WORD2(a1); ; i = -1 ) - { - lpuexcpte = i == -1; - v80 = lpuexcpte && v25 != 0; - if ( v80 ) - { - v30 = (_WORD *)v25[2]; - v31 = (unsigned int)v30 >= v25[3] ? (*(int (__fastcall **)(_DWORD *))(*v25 + 36))(v25) : *v30; - lpuexcpte = 0; - if ( v31 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpte = v80; - } - } - v27 = a3 == -1; - v79 = v27 && a2 != 0; - if ( v79 ) - { - v59 = (_WORD *)a2[2]; - v60 = (unsigned int)v59 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v59; - v27 = 0; - if ( v60 == -1 ) - { - a2 = 0; - v27 = v79; - } - } - lpuexcptd = (v92 < v83) & (lpuexcpte ^ v27); - if ( !lpuexcptd ) - break; - v28 = WORD2(a1); - if ( (_DWORD)a1 - && WORD2(a1) == 0xFFFF - && ((v61 = *(__int16 **)(a1 + 8), (unsigned int)v61 >= *(_DWORD *)(a1 + 12)) - ? (v28 = (*(int (**)(void))(*(_DWORD *)a1 + 36))()) - : (v28 = *v61), - v28 == -1) ) - { - LODWORD(a1) = 0; - if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != 0xFFFF ) - goto LABEL_171; - } - else if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != v28 ) - { - goto LABEL_171; - } - v25 = (_DWORD *)a1; - v29 = *(_DWORD *)(a1 + 8); - if ( v29 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v25 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v29 + 2; - } - ++v92; - WORD2(a1) = -1; - } - if ( v92 == v83 ) - { -LABEL_181: - LOBYTE(v87) = 1; - } - else - { -LABEL_171: - if ( v92 ) - goto LABEL_102; - v87 = (*(_BYTE *)(a4 + 13) & 2) == 0; - lpuexcptd = (*(_BYTE *)(a4 + 13) & 2) != 0; - } -LABEL_121: - v24 = v75 + 1; - if ( v75 + 1 <= 3 && !lpuexcptd ) - goto LABEL_123; - v6 = v87 & (v74 > 1); -LABEL_12: - if ( !v6 ) - { - if ( (_BYTE)v87 ) - { - if ( *(_DWORD *)(v109 - 12) > 1u ) - goto LABEL_182; - goto LABEL_150; - } - goto LABEL_102; - } - if ( v77 ) - v7 = *(_DWORD *)(v107 + 40); - else - v7 = *(_DWORD *)(v107 + 32); - v88 = v7; - v8 = WORD2(a1); - v9 = (_DWORD *)a1; - v95 = 1; - while ( 2 ) - { - lpuexcpta = v8 == -1; - v82 = lpuexcpta & (v9 != 0); - if ( v82 ) - { - v13 = (_WORD *)v9[2]; - v14 = (unsigned int)v13 >= v9[3] ? (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) : *v13; - lpuexcpta = 0; - if ( v14 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = v82; - } - } - v10 = a3 == -1; - v81 = v10 & (a2 != 0); - if ( !v81 - || ((v55 = (__int16 *)a2[2], (unsigned int)v55 >= a2[3]) - ? (v56 = (*(int (**)(void))(*a2 + 36))()) - : (v56 = *v55), - v10 = 0, - v56 != -1) ) - { - if ( v95 >= v74 ) - break; - goto LABEL_18; - } - v10 = v81; - a2 = 0; - if ( v95 < v74 ) - { -LABEL_18: - if ( lpuexcpta == v10 ) - break; - v11 = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v58 = *(_WORD **)(a1 + 8); - v11 = (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v58; - if ( v11 == -1 ) - LODWORD(a1) = 0; - } - if ( *(_WORD *)(v88 + 2 * v95) != v11 ) - goto LABEL_102; - v9 = (_DWORD *)a1; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v9 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v12 + 2; - } - ++v95; - WORD2(a1) = -1; - v8 = -1; - continue; - } - break; - } - if ( v95 != v74 ) - goto LABEL_102; - if ( *(_DWORD *)(v109 - 12) <= 1u ) - goto LABEL_150; -LABEL_182: - first_not_of = std::string::find_first_not_of(&v109, (std::string *)0x30, 0, (unsigned int)v108); - if ( first_not_of ) - { - v63 = *(_DWORD *)(v109 - 12); - if ( first_not_of == -1 ) - first_not_of = v63 - 1; - if ( first_not_of > v63 ) - first_not_of = *(_DWORD *)(v109 - 12); - std::string::_M_mutate((char **)&v109, 0, first_not_of, 0, v70); - } -LABEL_150: - if ( v77 ) - { - v65 = (int *)v109; - if ( *(int *)(v109 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v109); - v65 = (int *)v109; - } - if ( *(_BYTE *)v65 != 48 ) - { - if ( *(v65 - 1) >= 0 ) - std::string::_M_leak_hard((char **)&v109); - std::string::_M_replace_aux((char **)&v109, 0, 0, 1u, 45, (char)v71); - *(_DWORD *)(v109 - 4) = -1; - } - } - if ( *(_DWORD *)(*(_DWORD *)&v108[1] - 12) ) - { - v57 = (std::string *)(char)v97; - if ( v78 ) - v57 = (std::string *)v72; - std::string::push_back((int *)&v108[1], v57, (char)v68); - if ( !(unsigned __int8)std::__verify_grouping( - *(char **)(v107 + 8), - *(_DWORD *)(v107 + 12), - (const char **)&v108[1]) ) - *a5 |= 4u; - } - if ( v78 && *(std::locale::facet **)(v107 + 48) != v97 ) - { -LABEL_102: - *a5 |= 4u; - goto LABEL_103; - } - std::string::swap(a6, (std::string *)&v109, v68); -LABEL_103: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - lpuexcpth = a1; - v42 = v109; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v109 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_179; - } - else - { - v43 = *(_DWORD *)(v109 - 4); - *(_DWORD *)(v109 - 4) = v43 - 1; - if ( v43 > 0 ) - goto LABEL_107; -LABEL_179: - std::string::_Rep::_M_destroy((void *)(v42 - 12), (int)v108); - } -LABEL_107: - v44 = *(_DWORD *)&v108[1]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v108[1] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpth; -LABEL_177: - std::string::_Rep::_M_destroy((void *)(v44 - 12), (int)&v109); - return lpuexcpth; - } - v45 = *(_DWORD *)(*(_DWORD *)&v108[1] - 4); - *(_DWORD *)(*(_DWORD *)&v108[1] - 4) = v45 - 1; - if ( v45 <= 0 ) - goto LABEL_177; - return lpuexcpth; - case 3: - if ( *(_DWORD *)(v107 + 36) ) - { - lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptd - && **(_WORD **)(v107 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v74 = *(_DWORD *)(v107 + 36); - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - goto LABEL_181; - } - if ( !*(_DWORD *)(v107 + 44) ) - { - if ( !*(_DWORD *)(v107 + 36) ) - goto LABEL_53; -LABEL_137: - lpuexcptd = 0; - LOBYTE(v87) = 1; - v77 = 1; - goto LABEL_121; - } - } - else if ( !*(_DWORD *)(v107 + 44) ) - { - goto LABEL_53; - } - lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( lpuexcptd - || **(_WORD **)(v107 + 40) != (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) - { - if ( !*(_DWORD *)(v107 + 36) || *(_DWORD *)(v107 + 44) ) - { -LABEL_53: - lpuexcptd = v76; - LOBYTE(v87) = !v76; - goto LABEL_121; - } - goto LABEL_137; - } - v74 = *(_DWORD *)(v107 + 44); - std::wstreambuf::sbumpc((_DWORD *)a1); - LOBYTE(v87) = 1; - WORD2(a1) = -1; - v77 = 1; - goto LABEL_121; - case 4: - v15 = WORD2(a1); - v16 = (_DWORD *)a1; - while ( 2 ) - { - lpuexcptb = v15 == -1; - v89 = lpuexcptb & (v16 != 0); - if ( v89 ) - { - v47 = (_WORD *)v16[2]; - v48 = (unsigned int)v47 >= v16[3] ? (*(int (__fastcall **)(_DWORD *))(*v16 + 36))(v16) : *v47; - lpuexcptb = 0; - if ( v48 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptb = v89; - } - } - v17 = a3 == -1; - v90 = v17 & (a2 != 0); - if ( v90 - && ((v40 = (__int16 *)a2[2], (unsigned int)v40 >= a2[3]) - ? (v41 = (*(int (**)(void))(*a2 + 36))()) - : (v41 = *v40), - v17 = 0, - v41 == -1) ) - { - a2 = 0; - if ( lpuexcptb == v90 ) - goto LABEL_100; - } - else if ( lpuexcptb == v17 ) - { - goto LABEL_100; - } - v18 = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v49 = *(_WORD **)(a1 + 8); - v18 = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; - if ( v18 == 0xFFFF ) - LODWORD(a1) = 0; - } - v19 = (_WORD *)(v107 + 62); - do - { - if ( v18 == *v19 ) - { - v93 = std::money_base::_S_atoms[((int)v19 - v107 - 60) >> 1]; - v86 = *(_DWORD *)(v109 - 12); - lpuexcptg = (std::string *)(v86 + 1); - if ( (unsigned int)(v86 + 1) > *(_DWORD *)(v109 - 8) || *(int *)(v109 - 4) > 0 ) - std::string::reserve(&v109, lpuexcptg, (unsigned int)v68); - v97 = (std::locale::facet *)((char *)v97 + 1); - *(_BYTE *)(v109 + *(_DWORD *)(v109 - 12)) = v93; - v39 = v109; - *(_DWORD *)(v109 - 12) = lpuexcptg; - *(_DWORD *)(v39 - 4) = 0; - *(_BYTE *)(v39 + v86 + 1) = 0; - v16 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - goto LABEL_49; - goto LABEL_95; - } - ++v19; - } - while ( v19 != (_WORD *)(v107 + 82) ); - v20 = v78 | (*(_WORD *)(v107 + 18) != v18); - if ( !v20 ) - { - if ( *(int *)(v107 + 48) > 0 ) - { - v50 = (char)v97; - v78 = 1; - v97 = 0; - v72 = v50; - goto LABEL_48; - } - v78 = 0; -LABEL_100: - LOBYTE(v87) = 1; -LABEL_101: - if ( !*(_DWORD *)(v109 - 12) ) - goto LABEL_102; - goto LABEL_120; - } - LOBYTE(v87) = *(_BYTE *)(v107 + 16); - if ( (_BYTE)v87 ) - { - if ( *(_WORD *)(v107 + 20) != v18 ) - goto LABEL_101; - if ( !v78 ) - { - if ( v97 ) - { - v91 = *(_DWORD *)(*(_DWORD *)&v108[1] - 12); - lpuexcptc = (std::string *)(v91 + 1); - if ( (unsigned int)(v91 + 1) > *(_DWORD *)(*(_DWORD *)&v108[1] - 8) - || *(int *)(*(_DWORD *)&v108[1] - 4) > 0 ) - { - std::string::reserve((int *)&v108[1], lpuexcptc, (unsigned int)v68); - } - v21 = (char)v97; - v97 = 0; - *(_BYTE *)(*(_DWORD *)&v108[1] + *(_DWORD *)(*(_DWORD *)&v108[1] - 12)) = v21; - v22 = *(_DWORD *)&v108[1]; - *(_DWORD *)(*(_DWORD *)&v108[1] - 12) = lpuexcptc; - *(_DWORD *)(v22 - 4) = 0; - *(_BYTE *)(v22 + v91 + 1) = 0; -LABEL_48: - v16 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - { -LABEL_49: - v16[2] = v23 + 2; -LABEL_50: - WORD2(a1) = -1; - v15 = -1; - continue; - } -LABEL_95: - (*(void (__fastcall **)(_DWORD *))(*v16 + 40))(v16); - v16 = (_DWORD *)a1; - goto LABEL_50; - } - LOBYTE(v87) = 0; - goto LABEL_101; - } - v20 = v78; - } - break; - } - LOBYTE(v87) = v20; - if ( !*(_DWORD *)(v109 - 12) ) - goto LABEL_102; - goto LABEL_120; - default: - lpuexcptd = 0; - LOBYTE(v87) = 1; - goto LABEL_121; - } - } -} -// 49366C: variable 'v69' is possibly undefined -// 49298D: variable 'v66' is possibly undefined -// 4929CB: variable 'v67' is possibly undefined -// 492C32: variable 'v68' is possibly undefined -// 4934FB: variable 'v70' is possibly undefined -// 493738: variable 'v71' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 50C494: using guessed type signed __int32 std::moneypunct::id; -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (00493910) -------------------------------------------------------- -__int64 __stdcall std::money_get>::_M_extract( - __int64 a1, - _DWORD *a2, - __int16 a3, - int a4, - _DWORD *a5, - int *a6) -{ - char v6; // al - int v7; // eax - __int16 v8; // ax - _DWORD *v9; // ecx - char v10; // al - __int16 v11; // ax - unsigned int v12; // eax - _WORD *v13; // eax - __int16 v14; // ax - __int16 v15; // ax - _DWORD *v16; // ecx - char v17; // al - unsigned __int16 v18; // dx - _WORD *v19; // eax - char v20; // al - char v21; // cl - int v22; // eax - unsigned int v23; // eax - int v24; // eax - _DWORD *v25; // ecx - __int16 i; // ax - bool v27; // al - __int16 v28; // ax - unsigned int v29; // eax - _WORD *v30; // eax - __int16 v31; // ax - __int16 v32; // ax - _DWORD *v33; // ecx - char v34; // al - unsigned __int16 v35; // ax - unsigned int v36; // eax - _WORD *v37; // eax - __int16 v38; // ax - int v39; // eax - __int16 *v40; // eax - __int16 v41; // dx - int v42; // eax - int v43; // edx - int v44; // eax - int v45; // edx - _WORD *v47; // eax - __int16 v48; // ax - _WORD *v49; // eax - char v50; // al - _WORD *v51; // eax - __int16 v52; // dx - _WORD *v53; // eax - unsigned __int16 v54; // ax - __int16 *v55; // eax - __int16 v56; // dx - std::string *v57; // eax - _WORD *v58; // eax - _WORD *v59; // eax - __int16 v60; // dx - __int16 *v61; // eax - unsigned int first_not_of; // eax - unsigned int v63; // edx - _DWORD *v64; // eax - int *v65; // eax - unsigned int v66; // [esp+4h] [ebp-94h] - unsigned int v67; // [esp+4h] [ebp-94h] - std::string *v68; // [esp+4h] [ebp-94h] - unsigned int v69; // [esp+8h] [ebp-90h] - unsigned int v70; // [esp+Ch] [ebp-8Ch] - std::locale::_Impl *v71; // [esp+10h] [ebp-88h] - char v72; // [esp+14h] [ebp-84h] - void *v73; // [esp+18h] [ebp-80h] - unsigned int v74; // [esp+1Ch] [ebp-7Ch] - int v75; // [esp+24h] [ebp-74h] - bool v76; // [esp+29h] [ebp-6Fh] - char v77; // [esp+2Ah] [ebp-6Eh] - char v78; // [esp+2Bh] [ebp-6Dh] - bool v79; // [esp+2Ch] [ebp-6Ch] - bool v80; // [esp+2Ch] [ebp-6Ch] - char v81; // [esp+30h] [ebp-68h] - char v82; // [esp+30h] [ebp-68h] - unsigned int v83; // [esp+30h] [ebp-68h] - char v84; // [esp+30h] [ebp-68h] - char v85; // [esp+30h] [ebp-68h] - int v86; // [esp+30h] [ebp-68h] - int v87; // [esp+34h] [ebp-64h] - int v88; // [esp+34h] [ebp-64h] - char v89; // [esp+34h] [ebp-64h] - char v90; // [esp+34h] [ebp-64h] - int v91; // [esp+34h] [ebp-64h] - unsigned int v92; // [esp+34h] [ebp-64h] - char v93; // [esp+34h] [ebp-64h] - int *v94; // [esp+38h] [ebp-60h] - unsigned int v95; // [esp+38h] [ebp-60h] - std::locale::facet *v96; // [esp+3Ch] [ebp-5Ch] - std::locale::facet *v97; // [esp+3Ch] [ebp-5Ch] - int lpuexcpt; // [esp+40h] [ebp-58h] - char lpuexcpta; // [esp+40h] [ebp-58h] - char lpuexcptb; // [esp+40h] [ebp-58h] - std::string *lpuexcptc; // [esp+40h] [ebp-58h] - char lpuexcptd; // [esp+40h] [ebp-58h] - bool lpuexcpte; // [esp+40h] [ebp-58h] - char lpuexcptf; // [esp+40h] [ebp-58h] - std::string *lpuexcptg; // [esp+40h] [ebp-58h] - __int64 lpuexcpth; // [esp+40h] [ebp-58h] - int v107; // [esp+48h] [ebp-50h] - char v108[5]; // [esp+83h] [ebp-15h] BYREF - int v109; // [esp+88h] [ebp-10h] BYREF - int v110[2]; // [esp+8Ch] [ebp-Ch] - - lpuexcpt = a4 + 108; - v73 = std::use_facet>(a4 + 108); - v96 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * (_DWORD)v96); - v107 = *v94; - if ( !*v94 ) - { - v64 = operator new(0x54u); - v64[1] = 0; - *v64 = &off_51B0B4; - v64[2] = 0; - v64[3] = 0; - *((_BYTE *)v64 + 16) = 0; - *(_DWORD *)((char *)v64 + 18) = 0; - v64[6] = 0; - v64[7] = 0; - v64[8] = 0; - v64[9] = 0; - v64[10] = 0; - v64[11] = 0; - v64[12] = 0; - v64[13] = 0; - v64[14] = 0; - *((_BYTE *)v64 + 82) = 0; - v71 = (std::locale::_Impl *)v64; - std::__moneypunct_cache::_M_cache((int)v64, lpuexcpt); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v71, v96, v69); - v107 = *v94; - } - if ( *(_DWORD *)(v107 + 36) ) - v76 = *(_DWORD *)(v107 + 44) != 0; - else - v76 = 0; - *(_DWORD *)&v108[1] = std::string::_S_construct(0, 0); - if ( *(_BYTE *)(v107 + 16) ) - std::string::reserve((int *)&v108[1], (std::string *)0x20, v66); - v109 = (int)std::string::_S_construct(0, 0); - std::string::reserve(&v109, (std::string *)0x20, v67); - v78 = 0; - v75 = 0; - v77 = 0; - v110[0] = *(_DWORD *)(v107 + 56); - v97 = 0; - v72 = 0; - v74 = 0; - while ( 2 ) - { - switch ( *((_BYTE *)v110 + v75) ) - { - case 0: - LOBYTE(v87) = 1; - goto LABEL_10; - case 1: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) - || (v54 = std::istreambuf_iterator::_M_get((int)&a1), - LOBYTE(v87) = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v54), - !(_BYTE)v87) ) - { - LOBYTE(v87) = 0; - if ( v75 == 3 ) - goto LABEL_11; - } - else - { - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; -LABEL_10: - if ( v75 == 3 ) - { -LABEL_11: - v6 = v87 & (v74 > 1); - goto LABEL_12; - } - } - v32 = WORD2(a1); - v33 = (_DWORD *)a1; - while ( 1 ) - { - lpuexcptf = v32 == -1; - v85 = lpuexcptf & (v33 != 0); - if ( v85 ) - { - v37 = (_WORD *)v33[2]; - v38 = (unsigned int)v37 >= v33[3] ? (*(int (__fastcall **)(_DWORD *))(*v33 + 36))(v33) : *v37; - lpuexcptf = 0; - if ( v38 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptf = v85; - } - } - v34 = a3 == -1; - v84 = v34 & (a2 != 0); - if ( v84 ) - { - v51 = (_WORD *)a2[2]; - v52 = (unsigned int)v51 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v51; - v34 = 0; - if ( v52 == -1 ) - { - a2 = 0; - v34 = v84; - } - } - if ( lpuexcptf == v34 ) - break; - v35 = WORD2(a1); - if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) - { - v53 = *(_WORD **)(a1 + 8); - v35 = (unsigned int)v53 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v53; - if ( v35 == 0xFFFF ) - LODWORD(a1) = 0; - } - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v73 + 8))(v73, 32, v35) ) - break; - v33 = (_DWORD *)a1; - v36 = *(_DWORD *)(a1 + 8); - if ( v36 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v33 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v36 + 2; - } - WORD2(a1) = -1; - v32 = -1; - } -LABEL_120: - lpuexcptd = v87 ^ 1; - goto LABEL_121; - case 2: - if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) - goto LABEL_61; - lpuexcptd = v75 == 0 || v74 > 1; - if ( lpuexcptd ) - goto LABEL_61; - if ( v75 != 1 ) - { - LOBYTE(v87) = 1; - if ( v75 != 2 ) - goto LABEL_121; - if ( HIBYTE(v110[0]) == 4 ) - goto LABEL_61; - v24 = 3; - if ( HIBYTE(v110[0]) == 3 && v76 ) - goto LABEL_61; -LABEL_123: - v75 = v24; - continue; - } - if ( !v76 && LOBYTE(v110[0]) != 3 && BYTE2(v110[0]) != 1 ) - { - v24 = 2; - goto LABEL_123; - } -LABEL_61: - v25 = (_DWORD *)a1; - v92 = 0; - v83 = *(_DWORD *)(v107 + 28); - for ( i = WORD2(a1); ; i = -1 ) - { - lpuexcpte = i == -1; - v80 = lpuexcpte && v25 != 0; - if ( v80 ) - { - v30 = (_WORD *)v25[2]; - v31 = (unsigned int)v30 >= v25[3] ? (*(int (__fastcall **)(_DWORD *))(*v25 + 36))(v25) : *v30; - lpuexcpte = 0; - if ( v31 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpte = v80; - } - } - v27 = a3 == -1; - v79 = v27 && a2 != 0; - if ( v79 ) - { - v59 = (_WORD *)a2[2]; - v60 = (unsigned int)v59 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v59; - v27 = 0; - if ( v60 == -1 ) - { - a2 = 0; - v27 = v79; - } - } - lpuexcptd = (v92 < v83) & (lpuexcpte ^ v27); - if ( !lpuexcptd ) - break; - v28 = WORD2(a1); - if ( (_DWORD)a1 - && WORD2(a1) == 0xFFFF - && ((v61 = *(__int16 **)(a1 + 8), (unsigned int)v61 >= *(_DWORD *)(a1 + 12)) - ? (v28 = (*(int (**)(void))(*(_DWORD *)a1 + 36))()) - : (v28 = *v61), - v28 == -1) ) - { - LODWORD(a1) = 0; - if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != 0xFFFF ) - goto LABEL_171; - } - else if ( *(_WORD *)(*(_DWORD *)(v107 + 24) + 2 * v92) != v28 ) - { - goto LABEL_171; - } - v25 = (_DWORD *)a1; - v29 = *(_DWORD *)(a1 + 8); - if ( v29 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v25 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v29 + 2; - } - ++v92; - WORD2(a1) = -1; - } - if ( v92 == v83 ) - { -LABEL_181: - LOBYTE(v87) = 1; - } - else - { -LABEL_171: - if ( v92 ) - goto LABEL_102; - v87 = (*(_BYTE *)(a4 + 13) & 2) == 0; - lpuexcptd = (*(_BYTE *)(a4 + 13) & 2) != 0; - } -LABEL_121: - v24 = v75 + 1; - if ( v75 + 1 <= 3 && !lpuexcptd ) - goto LABEL_123; - v6 = v87 & (v74 > 1); -LABEL_12: - if ( !v6 ) - { - if ( (_BYTE)v87 ) - { - if ( *(_DWORD *)(v109 - 12) > 1u ) - goto LABEL_182; - goto LABEL_150; - } - goto LABEL_102; - } - if ( v77 ) - v7 = *(_DWORD *)(v107 + 40); - else - v7 = *(_DWORD *)(v107 + 32); - v88 = v7; - v8 = WORD2(a1); - v9 = (_DWORD *)a1; - v95 = 1; - while ( 2 ) - { - lpuexcpta = v8 == -1; - v82 = lpuexcpta & (v9 != 0); - if ( v82 ) - { - v13 = (_WORD *)v9[2]; - v14 = (unsigned int)v13 >= v9[3] ? (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9) : *v13; - lpuexcpta = 0; - if ( v14 == -1 ) - { - LODWORD(a1) = 0; - lpuexcpta = v82; - } - } - v10 = a3 == -1; - v81 = v10 & (a2 != 0); - if ( !v81 - || ((v55 = (__int16 *)a2[2], (unsigned int)v55 >= a2[3]) - ? (v56 = (*(int (**)(void))(*a2 + 36))()) - : (v56 = *v55), - v10 = 0, - v56 != -1) ) - { - if ( v95 >= v74 ) - break; - goto LABEL_18; - } - v10 = v81; - a2 = 0; - if ( v95 < v74 ) - { -LABEL_18: - if ( lpuexcpta == v10 ) - break; - v11 = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v58 = *(_WORD **)(a1 + 8); - v11 = (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v58; - if ( v11 == -1 ) - LODWORD(a1) = 0; - } - if ( *(_WORD *)(v88 + 2 * v95) != v11 ) - goto LABEL_102; - v9 = (_DWORD *)a1; - v12 = *(_DWORD *)(a1 + 8); - if ( v12 >= *(_DWORD *)(a1 + 12) ) - { - (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); - v9 = (_DWORD *)a1; - } - else - { - *(_DWORD *)(a1 + 8) = v12 + 2; - } - ++v95; - WORD2(a1) = -1; - v8 = -1; - continue; - } - break; - } - if ( v95 != v74 ) - goto LABEL_102; - if ( *(_DWORD *)(v109 - 12) <= 1u ) - goto LABEL_150; -LABEL_182: - first_not_of = std::string::find_first_not_of(&v109, (std::string *)0x30, 0, (unsigned int)v108); - if ( first_not_of ) - { - v63 = *(_DWORD *)(v109 - 12); - if ( first_not_of == -1 ) - first_not_of = v63 - 1; - if ( first_not_of > v63 ) - first_not_of = *(_DWORD *)(v109 - 12); - std::string::_M_mutate((char **)&v109, 0, first_not_of, 0, v70); - } -LABEL_150: - if ( v77 ) - { - v65 = (int *)v109; - if ( *(int *)(v109 - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v109); - v65 = (int *)v109; - } - if ( *(_BYTE *)v65 != 48 ) - { - if ( *(v65 - 1) >= 0 ) - std::string::_M_leak_hard((char **)&v109); - std::string::_M_replace_aux((char **)&v109, 0, 0, 1u, 45, (char)v71); - *(_DWORD *)(v109 - 4) = -1; - } - } - if ( *(_DWORD *)(*(_DWORD *)&v108[1] - 12) ) - { - v57 = (std::string *)(char)v97; - if ( v78 ) - v57 = (std::string *)v72; - std::string::push_back((int *)&v108[1], v57, (char)v68); - if ( !(unsigned __int8)std::__verify_grouping( - *(char **)(v107 + 8), - *(_DWORD *)(v107 + 12), - (const char **)&v108[1]) ) - *a5 |= 4u; - } - if ( v78 && *(std::locale::facet **)(v107 + 48) != v97 ) - { -LABEL_102: - *a5 |= 4u; - goto LABEL_103; - } - std::string::swap(a6, (std::string *)&v109, v68); -LABEL_103: - if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) - *a5 |= 2u; - lpuexcpth = a1; - v42 = v109; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v109 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_179; - } - else - { - v43 = *(_DWORD *)(v109 - 4); - *(_DWORD *)(v109 - 4) = v43 - 1; - if ( v43 > 0 ) - goto LABEL_107; -LABEL_179: - std::string::_Rep::_M_destroy((void *)(v42 - 12), (int)v108); - } -LABEL_107: - v44 = *(_DWORD *)&v108[1]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v108[1] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpth; -LABEL_177: - std::string::_Rep::_M_destroy((void *)(v44 - 12), (int)&v109); - return lpuexcpth; - } - v45 = *(_DWORD *)(*(_DWORD *)&v108[1] - 4); - *(_DWORD *)(*(_DWORD *)&v108[1] - 4) = v45 - 1; - if ( v45 <= 0 ) - goto LABEL_177; - return lpuexcpth; - case 3: - if ( *(_DWORD *)(v107 + 36) ) - { - lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( !lpuexcptd - && **(_WORD **)(v107 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) - { - v74 = *(_DWORD *)(v107 + 36); - std::wstreambuf::sbumpc((_DWORD *)a1); - WORD2(a1) = -1; - goto LABEL_181; - } - if ( !*(_DWORD *)(v107 + 44) ) - { - if ( !*(_DWORD *)(v107 + 36) ) - goto LABEL_53; -LABEL_137: - lpuexcptd = 0; - LOBYTE(v87) = 1; - v77 = 1; - goto LABEL_121; - } - } - else if ( !*(_DWORD *)(v107 + 44) ) - { - goto LABEL_53; - } - lpuexcptd = std::istreambuf_iterator::equal(&a1, (int)&a2); - if ( lpuexcptd - || **(_WORD **)(v107 + 40) != (unsigned __int16)std::istreambuf_iterator::_M_get((int)&a1) ) - { - if ( !*(_DWORD *)(v107 + 36) || *(_DWORD *)(v107 + 44) ) - { -LABEL_53: - lpuexcptd = v76; - LOBYTE(v87) = !v76; - goto LABEL_121; - } - goto LABEL_137; - } - v74 = *(_DWORD *)(v107 + 44); - std::wstreambuf::sbumpc((_DWORD *)a1); - LOBYTE(v87) = 1; - WORD2(a1) = -1; - v77 = 1; - goto LABEL_121; - case 4: - v15 = WORD2(a1); - v16 = (_DWORD *)a1; - while ( 2 ) - { - lpuexcptb = v15 == -1; - v89 = lpuexcptb & (v16 != 0); - if ( v89 ) - { - v47 = (_WORD *)v16[2]; - v48 = (unsigned int)v47 >= v16[3] ? (*(int (__fastcall **)(_DWORD *))(*v16 + 36))(v16) : *v47; - lpuexcptb = 0; - if ( v48 == -1 ) - { - LODWORD(a1) = 0; - lpuexcptb = v89; - } - } - v17 = a3 == -1; - v90 = v17 & (a2 != 0); - if ( v90 - && ((v40 = (__int16 *)a2[2], (unsigned int)v40 >= a2[3]) - ? (v41 = (*(int (**)(void))(*a2 + 36))()) - : (v41 = *v40), - v17 = 0, - v41 == -1) ) - { - a2 = 0; - if ( lpuexcptb == v90 ) - goto LABEL_100; - } - else if ( lpuexcptb == v17 ) - { - goto LABEL_100; - } - v18 = WORD2(a1); - if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) - { - v49 = *(_WORD **)(a1 + 8); - v18 = (unsigned int)v49 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v49; - if ( v18 == 0xFFFF ) - LODWORD(a1) = 0; - } - v19 = (_WORD *)(v107 + 62); - do - { - if ( v18 == *v19 ) - { - v93 = std::money_base::_S_atoms[((int)v19 - v107 - 60) >> 1]; - v86 = *(_DWORD *)(v109 - 12); - lpuexcptg = (std::string *)(v86 + 1); - if ( (unsigned int)(v86 + 1) > *(_DWORD *)(v109 - 8) || *(int *)(v109 - 4) > 0 ) - std::string::reserve(&v109, lpuexcptg, (unsigned int)v68); - v97 = (std::locale::facet *)((char *)v97 + 1); - *(_BYTE *)(v109 + *(_DWORD *)(v109 - 12)) = v93; - v39 = v109; - *(_DWORD *)(v109 - 12) = lpuexcptg; - *(_DWORD *)(v39 - 4) = 0; - *(_BYTE *)(v39 + v86 + 1) = 0; - v16 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - goto LABEL_49; - goto LABEL_95; - } - ++v19; - } - while ( v19 != (_WORD *)(v107 + 82) ); - v20 = v78 | (*(_WORD *)(v107 + 18) != v18); - if ( !v20 ) - { - if ( *(int *)(v107 + 48) > 0 ) - { - v50 = (char)v97; - v78 = 1; - v97 = 0; - v72 = v50; - goto LABEL_48; - } - v78 = 0; -LABEL_100: - LOBYTE(v87) = 1; -LABEL_101: - if ( !*(_DWORD *)(v109 - 12) ) - goto LABEL_102; - goto LABEL_120; - } - LOBYTE(v87) = *(_BYTE *)(v107 + 16); - if ( (_BYTE)v87 ) - { - if ( *(_WORD *)(v107 + 20) != v18 ) - goto LABEL_101; - if ( !v78 ) - { - if ( v97 ) - { - v91 = *(_DWORD *)(*(_DWORD *)&v108[1] - 12); - lpuexcptc = (std::string *)(v91 + 1); - if ( (unsigned int)(v91 + 1) > *(_DWORD *)(*(_DWORD *)&v108[1] - 8) - || *(int *)(*(_DWORD *)&v108[1] - 4) > 0 ) - { - std::string::reserve((int *)&v108[1], lpuexcptc, (unsigned int)v68); - } - v21 = (char)v97; - v97 = 0; - *(_BYTE *)(*(_DWORD *)&v108[1] + *(_DWORD *)(*(_DWORD *)&v108[1] - 12)) = v21; - v22 = *(_DWORD *)&v108[1]; - *(_DWORD *)(*(_DWORD *)&v108[1] - 12) = lpuexcptc; - *(_DWORD *)(v22 - 4) = 0; - *(_BYTE *)(v22 + v91 + 1) = 0; -LABEL_48: - v16 = (_DWORD *)a1; - v23 = *(_DWORD *)(a1 + 8); - if ( v23 < *(_DWORD *)(a1 + 12) ) - { -LABEL_49: - v16[2] = v23 + 2; -LABEL_50: - WORD2(a1) = -1; - v15 = -1; - continue; - } -LABEL_95: - (*(void (__fastcall **)(_DWORD *))(*v16 + 40))(v16); - v16 = (_DWORD *)a1; - goto LABEL_50; - } - LOBYTE(v87) = 0; - goto LABEL_101; - } - v20 = v78; - } - break; - } - LOBYTE(v87) = v20; - if ( !*(_DWORD *)(v109 - 12) ) - goto LABEL_102; - goto LABEL_120; - default: - lpuexcptd = 0; - LOBYTE(v87) = 1; - goto LABEL_121; - } - } -} -// 4946BC: variable 'v69' is possibly undefined -// 4939DD: variable 'v66' is possibly undefined -// 493A1B: variable 'v67' is possibly undefined -// 493C82: variable 'v68' is possibly undefined -// 49454B: variable 'v70' is possibly undefined -// 494788: variable 'v71' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 50C498: using guessed type signed __int32 std::moneypunct::id; -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (00494960) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); -} - -//----- (00494970) -------------------------------------------------------- -int __thiscall std::money_get>::get( - void *this, - int a2, - int a3, - int a4, - int a5, - unsigned __int8 a6) -{ - return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00494980) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -struct _Unwind_Exception *__stdcall std::money_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - char a4, - int a5, - _DWORD *a6, - int *a7) -{ - struct _Unwind_Exception *v7; // eax - int v8; // ecx - unsigned int v9; // eax - int v10; // eax - int v11; // eax - void *v13; // [esp+20h] [ebp-68h] - unsigned int v14; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-58h] - int v16; // [esp+7Bh] [ebp-Dh] BYREF - int v17[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v13 = std::use_facet>(a5 + 108); - v17[0] = (int)std::string::_S_construct(0, 0); - if ( a4 ) - v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a5, - a6, - v17); - else - v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a5, - a6, - v17); - v8 = v17[0]; - lpuexcpt = v7; - v9 = *(_DWORD *)(v17[0] - 12); - v14 = v9; - if ( v9 ) - { - std::wstring::resize(a7, v9, 0); - v10 = *a7; - if ( *(int *)(*a7 - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)a7); - v10 = *a7; - } - (*(void (__thiscall **)(void *, int, unsigned int, int))(*(_DWORD *)v13 + 44))(v13, v17[0], v17[0] + v14, v10); - v8 = v17[0]; - } - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; -LABEL_12: - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)&v16); - return lpuexcpt; - } - v11 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v11 - 1; - if ( v11 <= 0 ) - goto LABEL_12; - return lpuexcpt; -} -// 494B97: positive sp value 4 has been found -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00494BB0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -struct _Unwind_Exception *__stdcall std::money_get>::do_get( - __int64 a1, - _DWORD *a2, - __int16 a3, - char a4, - int a5, - _DWORD *a6, - long double *a7) -{ - struct _Unwind_Exception *v7; // eax - char *v8; // ecx - int v9; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-58h] - char *String; // [esp+78h] [ebp-10h] BYREF - int c_locale; // [esp+7Ch] [ebp-Ch] BYREF - - String = (char *)std::string::_S_construct(0, 0); - if ( a4 ) - v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a5, - a6, - (int *)&String); - else - v7 = (struct _Unwind_Exception *)std::money_get>::_M_extract( - a1, - a2, - a3, - a5, - a6, - (int *)&String); - lpuexcpt = v7; - c_locale = std::locale::facet::_S_get_c_locale(); - std::__convert_to_v(String, a7, a6); - v8 = String; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF) > 0 ) - return lpuexcpt; -LABEL_8: - std::string::_Rep::_M_destroy(v8 - 12, (int)&c_locale); - return lpuexcpt; - } - v9 = *((_DWORD *)String - 1); - *((_DWORD *)String - 1) = v9 - 1; - if ( v9 <= 0 ) - goto LABEL_8; - return lpuexcpt; -} -// 494D40: positive sp value 4 has been found -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00494D60) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - __int64 a2, - unsigned __int8 a3, - int a4, - char a5, - struct _Unwind_Exception **a6) -{ - __int64 (__stdcall *v6)(__int64, char, int, char, struct _Unwind_Exception **); // edx - - v6 = *(__int64 (__stdcall **)(__int64, char, int, char, struct _Unwind_Exception **))(*(_DWORD *)this + 12); - if ( v6 != std::money_put>::do_put ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, struct _Unwind_Exception **))v6)( - a2, - HIDWORD(a2), - a3, - a4, - a5, - a6); - if ( a3 ) - return std::money_put>::_M_insert(a2, a4, a5, a6); - return std::money_put>::_M_insert(a2, a4, a5, a6); -} - -//----- (00494E00) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - char a6) -{ - return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00494E20) -------------------------------------------------------- -__int64 __stdcall std::money_put>::do_put( - __int64 a1, - char a2, - int a3, - char a4, - struct _Unwind_Exception **a5) -{ - if ( a2 ) - return std::money_put>::_M_insert(a1, a3, a4, a5); - else - return std::money_put>::_M_insert(a1, a3, a4, a5); -} - -//----- (00494E90) -------------------------------------------------------- -__int64 __thiscall std::money_put>::do_put( - void *this, - __int64 a2, - int a3, - int a4, - int a5, - long double a6) -{ - void *v6; // esp - void *v7; // esp - int v8; // eax - int v9; // eax - void *v10; // esp - void *v11; // esp - char v12; // al - void (__thiscall *v13)(_BYTE *, void *, char *, char *); // eax - __int64 v14; // rax - int *v15; // ecx - int v16; // eax - const std::locale *v18[22]; // [esp-30h] [ebp-C8h] BYREF - char *v19; // [esp+28h] [ebp-70h] - int v20; // [esp+2Ch] [ebp-6Ch] - int v21; // [esp+30h] [ebp-68h] - void *v22; // [esp+34h] [ebp-64h] - char *v23; // [esp+38h] [ebp-60h] - _BYTE *v24; // [esp+3Ch] [ebp-5Ch] - __int64 Size; // [esp+40h] [ebp-58h] - void *Src; // [esp+48h] [ebp-50h] - char v27[5]; // [esp+87h] [ebp-11h] BYREF - int *v28[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v22 = this; - v21 = a3; - v20 = a5; - std::locale::locale((volatile signed __int32 **)&v27[1], (volatile signed __int32 **)(a4 + 108), v18[13]); - v24 = std::use_facet>((int)&v27[1]); - v6 = alloca(80); - v7 = alloca(80); - LODWORD(Size) = v18; - Src = v18; - v28[0] = (int *)std::locale::facet::_S_get_c_locale(); - v8 = std::__convert_from_v(v28, (char *)Size, 64, "%.*Lf", 0, a6); - LODWORD(Size) = v8; - if ( v8 > 63 ) - { - LODWORD(Size) = v8 + 1; - v9 = 16 * ((unsigned int)(v8 + 28) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v23 = (char *)v18; - Src = v18; - v28[0] = (int *)std::locale::facet::_S_get_c_locale(); - LODWORD(Size) = std::__convert_from_v(v28, v23, Size, "%.*Lf", 0, a6); - } - std::string::string((char **)v28, Size, 0, (int)v27); - v23 = (char *)v28[0]; - if ( *(v28[0] - 1) >= 0 ) - { - std::string::_M_leak_hard((char **)v28); - v23 = (char *)v28[0]; - } - v19 = (char *)Src + Size; - v12 = v24[28]; - if ( v12 == 1 ) - goto LABEL_8; - if ( v12 ) - { - v13 = *(void (__thiscall **)(_BYTE *, void *, char *, char *))(*(_DWORD *)v24 + 28); - if ( (char *)v13 == (char *)std::ctype::do_widen ) - goto LABEL_8; -LABEL_19: - v13(v24, Src, v19, v23); - goto LABEL_10; - } - std::ctype::_M_widen_init((int)v24); - v13 = *(void (__thiscall **)(_BYTE *, void *, char *, char *))(*(_DWORD *)v24 + 28); - if ( (char *)v13 != (char *)std::ctype::do_widen ) - goto LABEL_19; -LABEL_8: - if ( v19 != Src ) - memcpy(v23, Src, Size); -LABEL_10: - if ( (_BYTE)v21 ) - v14 = std::money_put>::_M_insert( - a2, - a4, - v20, - (struct _Unwind_Exception **)v28); - else - v14 = std::money_put>::_M_insert( - a2, - a4, - v20, - (struct _Unwind_Exception **)v28); - Size = v14; - v15 = v28[0]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(v28[0] - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_14; -LABEL_17: - std::string::_Rep::_M_destroy(v15 - 3, (int)v27); - goto LABEL_14; - } - v16 = *(v28[0] - 1); - *(v28[0] - 1) = v16 - 1; - if ( v16 <= 0 ) - goto LABEL_17; -LABEL_14: - std::locale::~locale((_DWORD **)&v27[1]); - return Size; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004951A0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - char a3, - struct _Unwind_Exception **a4) -{ - int v4; // ecx - char *v5; // edx - struct _Unwind_Exception *v6; // eax - unsigned __int8 *v7; // ecx - int v9; // eax - bool v10; // sf - size_t v11; // eax - _BYTE *v12; // eax - int v13; // eax - size_t v14; // edx - size_t v15; // eax - bool v16; // dl - char v17; // al - unsigned int v18; // ecx - size_t v19; // edx - int v20; // eax - char v21; // dl - int v22; // ebx - _DWORD *v23; // eax - unsigned int v24; // [esp+4h] [ebp-B4h] - char v25; // [esp+4h] [ebp-B4h] - unsigned int v26; // [esp+4h] [ebp-B4h] - const std::string *v27; // [esp+4h] [ebp-B4h] - unsigned int v28; // [esp+8h] [ebp-B0h] - unsigned int *v29; // [esp+8h] [ebp-B0h] - char *v30; // [esp+8h] [ebp-B0h] - unsigned int v31; // [esp+8h] [ebp-B0h] - unsigned int v32; // [esp+Ch] [ebp-ACh] - char v33; // [esp+10h] [ebp-A8h] - char v34; // [esp+28h] [ebp-90h] - char *v35; // [esp+2Ch] [ebp-8Ch] - std::locale::_Impl *v36; // [esp+30h] [ebp-88h] - int v37; // [esp+34h] [ebp-84h] - size_t v38; // [esp+34h] [ebp-84h] - _BYTE *v39; // [esp+38h] [ebp-80h] - bool v40; // [esp+38h] [ebp-80h] - signed int v41; // [esp+3Ch] [ebp-7Ch] - int v42; // [esp+3Ch] [ebp-7Ch] - int *v43; // [esp+40h] [ebp-78h] - char *v44; // [esp+40h] [ebp-78h] - std::locale::facet *v45; // [esp+4Ch] [ebp-6Ch] - std::locale::facet *v46; // [esp+4Ch] [ebp-6Ch] - _DWORD *v47; // [esp+50h] [ebp-68h] - size_t v48; // [esp+50h] [ebp-68h] - size_t v49; // [esp+50h] [ebp-68h] - __int64 v50; // [esp+54h] [ebp-64h] - int v51; // [esp+5Ch] [ebp-5Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-58h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] - char *lpuexcptb; // [esp+60h] [ebp-58h] - char lpuexcptc; // [esp+60h] [ebp-58h] - char v56[5]; // [esp+A3h] [ebp-15h] BYREF - unsigned int v57; // [esp+A8h] [ebp-10h] BYREF - int v58; // [esp+ACh] [ebp-Ch] BYREF - char v59; // [esp+B0h] [ebp-8h] BYREF - - v50 = a1; - v47 = std::use_facet>(a2 + 108); - v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); - v51 = *v43; - if ( !*v43 ) - { - v23 = operator new(0x44u); - *v23 = &off_51B084; - v23[1] = 0; - v23[2] = 0; - v23[3] = 0; - *((_WORD *)v23 + 8) = 0; - *((_BYTE *)v23 + 18) = 0; - v23[5] = 0; - v23[6] = 0; - v23[7] = 0; - v23[8] = 0; - v23[9] = 0; - v23[10] = 0; - v23[11] = 0; - v23[12] = 0; - v23[13] = 0; - *((_BYTE *)v23 + 67) = 0; - v36 = (std::locale::_Impl *)v23; - std::__moneypunct_cache::_M_cache((int)v23, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v36, v45, v28); - v51 = *v43; - } - v4 = *((_DWORD *)*a4 - 3); - lpuexcpt = *a4; - if ( *(_BYTE *)*a4 == *(_BYTE *)(v51 + 56) ) - { - v58 = *(_DWORD *)(v51 + 52); - if ( !v4 ) - goto LABEL_10; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v44 = *(char **)(v51 + 36); - v46 = *(std::locale::facet **)(v51 + 40); - } - else - { - v5 = *(char **)(v51 + 28); - v58 = *(_DWORD *)(v51 + 48); - v44 = v5; - v46 = *(std::locale::facet **)(v51 + 32); - } - v6 = lpuexcpt; - v7 = (unsigned __int8 *)lpuexcpt + v4; - if ( v7 > (unsigned __int8 *)lpuexcpt ) - { - do - { - if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) - break; - v6 = (struct _Unwind_Exception *)((char *)v6 + 1); - } - while ( v7 != (unsigned __int8 *)v6 ); - v48 = v6 - lpuexcpt; - if ( v6 != lpuexcpt ) - { - v29 = &v57; - *(_DWORD *)&v56[1] = std::string::_S_construct(0, 0); - std::string::reserve((int *)&v56[1], (std::string *)(2 * v48), v24); - v9 = *(_DWORD *)(v51 + 44); - v41 = v48 - v9; - if ( (int)(v48 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v48 - v9; - if ( v10 ) - v11 = v48; - v41 = v11; - if ( *(_DWORD *)(v51 + 12) ) - { - std::string::_M_replace_aux((char **)&v56[1], 0, *(_DWORD *)(*(_DWORD *)&v56[1] - 12), 2 * v11, 0, v33); - v37 = *(_DWORD *)(v51 + 12); - v35 = *(char **)(v51 + 8); - v34 = *(_BYTE *)(v51 + 18); - v12 = *(_BYTE **)&v56[1]; - if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v56[1]); - v12 = *(_BYTE **)&v56[1]; - } - v39 = std::__add_grouping(v12, v34, v35, v37, lpuexcpt, (_BYTE *)lpuexcpt + v41); - v13 = *(_DWORD *)&v56[1]; - if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v56[1]); - v13 = *(_DWORD *)&v56[1]; - } - v14 = (size_t)&v39[-v13]; - v15 = *(_DWORD *)(v13 - 12); - if ( v14 > v15 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v14, - v15); - std::string::_M_mutate((char **)&v56[1], v14, v15 - v14, 0, v32); - v9 = *(_DWORD *)(v51 + 44); - } - else - { - std::string::assign((char **)&v56[1], lpuexcpt, v11, (unsigned int)&v57); - v9 = *(_DWORD *)(v51 + 44); - } - } - if ( v9 > 0 ) - { - std::string::push_back((int *)&v56[1], (std::string *)*(char *)(v51 + 17), v25); - if ( v41 < 0 ) - { - std::string::append((int *)&v56[1], -v41, *(_BYTE *)(v51 + 57), (char)v29); - std::string::append((unsigned int *)&v56[1], lpuexcpt, v48, v31); - } - else - { - std::string::append( - (unsigned int *)&v56[1], - (struct _Unwind_Exception *)((char *)lpuexcpt + v41), - *(_DWORD *)(v51 + 44), - (unsigned int)v29); - } - } - v42 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12)); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12) + *(_DWORD *)(v51 + 24)); - v30 = v56; - v57 = (unsigned int)std::string::_S_construct(0, 0); - std::string::reserve((int *)&v57, (std::string *)(2 * (_DWORD)lpuexcpta), v26); - v49 = *(_DWORD *)(a2 + 8); - v16 = v49 > (unsigned int)lpuexcpta && v42 == 16; - v38 = v49 - (_DWORD)lpuexcpta; - lpuexcptb = (char *)&v58; - v40 = v16; - do - { - switch ( *lpuexcptb ) - { - case 0: - if ( v40 ) - { - v17 = a3; - goto LABEL_33; - } - break; - case 1: - v17 = a3; - if ( v40 ) -LABEL_33: - std::string::append((int *)&v57, v38, v17, (char)v30); - else - std::string::push_back((int *)&v57, (std::string *)a3, (char)v27); - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - std::string::append(&v57, *(std::string **)(v51 + 20), *(_DWORD *)(v51 + 24), (unsigned int)v30); - break; - case 3: - if ( v46 ) - std::string::push_back((int *)&v57, (std::string *)*v44, (char)v27); - break; - case 4: - std::string::append((int *)&v57, (std::string *)&v56[1], v27); - break; - default: - break; - } - ++lpuexcptb; - } - while ( lpuexcptb != &v59 ); - if ( (unsigned int)v46 > 1 ) - { - std::string::append(&v57, (std::string *)(v44 + 1), (size_t)v46 - 1, (unsigned int)v30); - v18 = v57; - v19 = *(_DWORD *)(v57 - 12); - if ( v49 > v19 ) - goto LABEL_40; - } - else - { - v18 = v57; - v19 = *(_DWORD *)(v57 - 12); - if ( v49 > v19 ) - { -LABEL_40: - if ( v42 == 32 ) - std::string::append((int *)&v57, v49 - v19, a3, (char)v30); - else - std::string::_M_replace_aux((char **)&v57, 0, 0, v49 - v19, a3, v33); - v18 = v57; - goto LABEL_43; - } - } - v49 = v19; -LABEL_43: - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v20 = (*(int (__thiscall **)(_DWORD, unsigned int, size_t))(*(_DWORD *)a1 + 48))(a1, v18, v49); - v21 = 0; - v18 = v57; - if ( v20 != v49 ) - v21 = 1; - lpuexcptc = v21; - } - v22 = HIDWORD(a1); - LOBYTE(v22) = lpuexcptc; - HIDWORD(v50) = v22; - std::string::_Rep::_M_dispose((volatile signed __int32 *)(v18 - 12), (int)v56); - std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v56[1] - 12), (int)&v57); - } - } -LABEL_10: - *(_DWORD *)(a2 + 8) = 0; - return v50; -} -// 495835: variable 'v28' is possibly undefined -// 495312: variable 'v24' is possibly undefined -// 495372: variable 'v33' is possibly undefined -// 495422: variable 'v32' is possibly undefined -// 495498: variable 'v26' is possibly undefined -// 49550E: variable 'v27' is possibly undefined -// 495543: variable 'v30' is possibly undefined -// 4956C4: variable 'v25' is possibly undefined -// 4956EC: variable 'v29' is possibly undefined -// 4958AC: variable 'v31' is possibly undefined -// 50C48C: using guessed type signed __int32 std::moneypunct::id; -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004959B0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - char a3, - struct _Unwind_Exception **a4) -{ - int v4; // ecx - char *v5; // edx - struct _Unwind_Exception *v6; // eax - unsigned __int8 *v7; // ecx - int v9; // eax - bool v10; // sf - size_t v11; // eax - _BYTE *v12; // eax - int v13; // eax - size_t v14; // edx - size_t v15; // eax - bool v16; // dl - char v17; // al - unsigned int v18; // ecx - size_t v19; // edx - int v20; // eax - char v21; // dl - int v22; // ebx - _DWORD *v23; // eax - unsigned int v24; // [esp+4h] [ebp-B4h] - char v25; // [esp+4h] [ebp-B4h] - unsigned int v26; // [esp+4h] [ebp-B4h] - const std::string *v27; // [esp+4h] [ebp-B4h] - unsigned int v28; // [esp+8h] [ebp-B0h] - unsigned int *v29; // [esp+8h] [ebp-B0h] - char *v30; // [esp+8h] [ebp-B0h] - unsigned int v31; // [esp+8h] [ebp-B0h] - unsigned int v32; // [esp+Ch] [ebp-ACh] - char v33; // [esp+10h] [ebp-A8h] - char v34; // [esp+28h] [ebp-90h] - char *v35; // [esp+2Ch] [ebp-8Ch] - std::locale::_Impl *v36; // [esp+30h] [ebp-88h] - int v37; // [esp+34h] [ebp-84h] - size_t v38; // [esp+34h] [ebp-84h] - _BYTE *v39; // [esp+38h] [ebp-80h] - bool v40; // [esp+38h] [ebp-80h] - signed int v41; // [esp+3Ch] [ebp-7Ch] - int v42; // [esp+3Ch] [ebp-7Ch] - int *v43; // [esp+40h] [ebp-78h] - char *v44; // [esp+40h] [ebp-78h] - std::locale::facet *v45; // [esp+4Ch] [ebp-6Ch] - std::locale::facet *v46; // [esp+4Ch] [ebp-6Ch] - _DWORD *v47; // [esp+50h] [ebp-68h] - size_t v48; // [esp+50h] [ebp-68h] - size_t v49; // [esp+50h] [ebp-68h] - __int64 v50; // [esp+54h] [ebp-64h] - int v51; // [esp+5Ch] [ebp-5Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+60h] [ebp-58h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] - char *lpuexcptb; // [esp+60h] [ebp-58h] - char lpuexcptc; // [esp+60h] [ebp-58h] - char v56[5]; // [esp+A3h] [ebp-15h] BYREF - unsigned int v57; // [esp+A8h] [ebp-10h] BYREF - int v58; // [esp+ACh] [ebp-Ch] BYREF - char v59; // [esp+B0h] [ebp-8h] BYREF - - v50 = a1; - v47 = std::use_facet>(a2 + 108); - v45 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v43 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v45); - v51 = *v43; - if ( !*v43 ) - { - v23 = operator new(0x44u); - *v23 = &off_51B094; - v23[1] = 0; - v23[2] = 0; - v23[3] = 0; - *((_WORD *)v23 + 8) = 0; - *((_BYTE *)v23 + 18) = 0; - v23[5] = 0; - v23[6] = 0; - v23[7] = 0; - v23[8] = 0; - v23[9] = 0; - v23[10] = 0; - v23[11] = 0; - v23[12] = 0; - v23[13] = 0; - *((_BYTE *)v23 + 67) = 0; - v36 = (std::locale::_Impl *)v23; - std::__moneypunct_cache::_M_cache((int)v23, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v36, v45, v28); - v51 = *v43; - } - v4 = *((_DWORD *)*a4 - 3); - lpuexcpt = *a4; - if ( *(_BYTE *)*a4 == *(_BYTE *)(v51 + 56) ) - { - v58 = *(_DWORD *)(v51 + 52); - if ( !v4 ) - goto LABEL_10; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 1); - v44 = *(char **)(v51 + 36); - v46 = *(std::locale::facet **)(v51 + 40); - } - else - { - v5 = *(char **)(v51 + 28); - v58 = *(_DWORD *)(v51 + 48); - v44 = v5; - v46 = *(std::locale::facet **)(v51 + 32); - } - v6 = lpuexcpt; - v7 = (unsigned __int8 *)lpuexcpt + v4; - if ( v7 > (unsigned __int8 *)lpuexcpt ) - { - do - { - if ( (*(_BYTE *)(v47[6] + 2 * *(unsigned __int8 *)v6) & 8) == 0 ) - break; - v6 = (struct _Unwind_Exception *)((char *)v6 + 1); - } - while ( v7 != (unsigned __int8 *)v6 ); - v48 = v6 - lpuexcpt; - if ( v6 != lpuexcpt ) - { - v29 = &v57; - *(_DWORD *)&v56[1] = std::string::_S_construct(0, 0); - std::string::reserve((int *)&v56[1], (std::string *)(2 * v48), v24); - v9 = *(_DWORD *)(v51 + 44); - v41 = v48 - v9; - if ( (int)(v48 - v9) > 0 ) - { - v10 = v9 < 0; - v11 = v48 - v9; - if ( v10 ) - v11 = v48; - v41 = v11; - if ( *(_DWORD *)(v51 + 12) ) - { - std::string::_M_replace_aux((char **)&v56[1], 0, *(_DWORD *)(*(_DWORD *)&v56[1] - 12), 2 * v11, 0, v33); - v37 = *(_DWORD *)(v51 + 12); - v35 = *(char **)(v51 + 8); - v34 = *(_BYTE *)(v51 + 18); - v12 = *(_BYTE **)&v56[1]; - if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v56[1]); - v12 = *(_BYTE **)&v56[1]; - } - v39 = std::__add_grouping(v12, v34, v35, v37, lpuexcpt, (_BYTE *)lpuexcpt + v41); - v13 = *(_DWORD *)&v56[1]; - if ( *(int *)(*(_DWORD *)&v56[1] - 4) >= 0 ) - { - std::string::_M_leak_hard((char **)&v56[1]); - v13 = *(_DWORD *)&v56[1]; - } - v14 = (size_t)&v39[-v13]; - v15 = *(_DWORD *)(v13 - 12); - if ( v14 > v15 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v14, - v15); - std::string::_M_mutate((char **)&v56[1], v14, v15 - v14, 0, v32); - v9 = *(_DWORD *)(v51 + 44); - } - else - { - std::string::assign((char **)&v56[1], lpuexcpt, v11, (unsigned int)&v57); - v9 = *(_DWORD *)(v51 + 44); - } - } - if ( v9 > 0 ) - { - std::string::push_back((int *)&v56[1], (std::string *)*(char *)(v51 + 17), v25); - if ( v41 < 0 ) - { - std::string::append((int *)&v56[1], -v41, *(_BYTE *)(v51 + 57), (char)v29); - std::string::append((unsigned int *)&v56[1], lpuexcpt, v48, v31); - } - else - { - std::string::append( - (unsigned int *)&v56[1], - (struct _Unwind_Exception *)((char *)lpuexcpt + v41), - *(_DWORD *)(v51 + 44), - (unsigned int)v29); - } - } - v42 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12)); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v46 + *(_DWORD *)(*(_DWORD *)&v56[1] - 12) + *(_DWORD *)(v51 + 24)); - v30 = v56; - v57 = (unsigned int)std::string::_S_construct(0, 0); - std::string::reserve((int *)&v57, (std::string *)(2 * (_DWORD)lpuexcpta), v26); - v49 = *(_DWORD *)(a2 + 8); - v16 = v49 > (unsigned int)lpuexcpta && v42 == 16; - v38 = v49 - (_DWORD)lpuexcpta; - lpuexcptb = (char *)&v58; - v40 = v16; - do - { - switch ( *lpuexcptb ) - { - case 0: - if ( v40 ) - { - v17 = a3; - goto LABEL_33; - } - break; - case 1: - v17 = a3; - if ( v40 ) -LABEL_33: - std::string::append((int *)&v57, v38, v17, (char)v30); - else - std::string::push_back((int *)&v57, (std::string *)a3, (char)v27); - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - std::string::append(&v57, *(std::string **)(v51 + 20), *(_DWORD *)(v51 + 24), (unsigned int)v30); - break; - case 3: - if ( v46 ) - std::string::push_back((int *)&v57, (std::string *)*v44, (char)v27); - break; - case 4: - std::string::append((int *)&v57, (std::string *)&v56[1], v27); - break; - default: - break; - } - ++lpuexcptb; - } - while ( lpuexcptb != &v59 ); - if ( (unsigned int)v46 > 1 ) - { - std::string::append(&v57, (std::string *)(v44 + 1), (size_t)v46 - 1, (unsigned int)v30); - v18 = v57; - v19 = *(_DWORD *)(v57 - 12); - if ( v49 > v19 ) - goto LABEL_40; - } - else - { - v18 = v57; - v19 = *(_DWORD *)(v57 - 12); - if ( v49 > v19 ) - { -LABEL_40: - if ( v42 == 32 ) - std::string::append((int *)&v57, v49 - v19, a3, (char)v30); - else - std::string::_M_replace_aux((char **)&v57, 0, 0, v49 - v19, a3, v33); - v18 = v57; - goto LABEL_43; - } - } - v49 = v19; -LABEL_43: - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v20 = (*(int (__thiscall **)(_DWORD, unsigned int, size_t))(*(_DWORD *)a1 + 48))(a1, v18, v49); - v21 = 0; - v18 = v57; - if ( v20 != v49 ) - v21 = 1; - lpuexcptc = v21; - } - v22 = HIDWORD(a1); - LOBYTE(v22) = lpuexcptc; - HIDWORD(v50) = v22; - std::string::_Rep::_M_dispose((volatile signed __int32 *)(v18 - 12), (int)v56); - std::string::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v56[1] - 12), (int)&v57); - } - } -LABEL_10: - *(_DWORD *)(a2 + 8) = 0; - return v50; -} -// 496045: variable 'v28' is possibly undefined -// 495B22: variable 'v24' is possibly undefined -// 495B82: variable 'v33' is possibly undefined -// 495C32: variable 'v32' is possibly undefined -// 495CA8: variable 'v26' is possibly undefined -// 495D1E: variable 'v27' is possibly undefined -// 495D53: variable 'v30' is possibly undefined -// 495ED4: variable 'v25' is possibly undefined -// 495EFC: variable 'v29' is possibly undefined -// 4960BC: variable 'v31' is possibly undefined -// 50C490: using guessed type signed __int32 std::moneypunct::id; -// 51B094: using guessed type int (*off_51B094)(); - -//----- (004961C0) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - __int64 a2, - unsigned __int8 a3, - int a4, - __int16 a5, - char **a6) -{ - __int64 (__stdcall *v6)(__int64, char, int, __int16, char **); // edx - - v6 = *(__int64 (__stdcall **)(__int64, char, int, __int16, char **))(*(_DWORD *)this + 12); - if ( v6 != std::money_put>::do_put ) - return ((int (__stdcall *)(_DWORD, _DWORD, _DWORD, int, _DWORD, char **))v6)( - a2, - HIDWORD(a2), - a3, - a4, - (unsigned __int16)a5, - a6); - if ( a3 ) - return std::money_put>::_M_insert(a2, a4, a5, a6); - return std::money_put>::_M_insert(a2, a4, a5, a6); -} - -//----- (00496260) -------------------------------------------------------- -int __thiscall std::money_put>::put( - void *this, - int a2, - int a3, - unsigned __int8 a4, - int a5, - unsigned __int16 a6) -{ - return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); -} - -//----- (00496280) -------------------------------------------------------- -__int64 __stdcall std::money_put>::do_put( - __int64 a1, - char a2, - int a3, - __int16 a4, - char **a5) -{ - if ( a2 ) - return std::money_put>::_M_insert(a1, a3, a4, a5); - else - return std::money_put>::_M_insert(a1, a3, a4, a5); -} - -//----- (004962F0) -------------------------------------------------------- -__int64 __thiscall std::money_put>::do_put( - void *this, - __int64 a2, - int a3, - int a4, - int a5, - long double a6) -{ - void *v6; // esp - void *v7; // esp - int v8; // eax - int v9; // eax - void *v10; // esp - void *v11; // esp - int *v12; // eax - __int64 v13; // rax - int *v14; // ecx - int v15; // eax - int v17; // [esp-44h] [ebp-DCh] - int v18; // [esp-40h] [ebp-D8h] - int v19; // [esp-3Ch] [ebp-D4h] - int v20; // [esp-38h] [ebp-D0h] - int v21; // [esp-34h] [ebp-CCh] - char *v22[23]; // [esp-30h] [ebp-C8h] BYREF - char *v23; // [esp+2Ch] [ebp-6Ch] - int v24; // [esp+30h] [ebp-68h] - int v25; // [esp+34h] [ebp-64h] - void *v26; // [esp+38h] [ebp-60h] - void *v27; // [esp+3Ch] [ebp-5Ch] - __int64 lpuexcpt; // [esp+40h] [ebp-58h] - char **v29; // [esp+48h] [ebp-50h] - char v30[5]; // [esp+87h] [ebp-11h] BYREF - int *v31[2]; // [esp+8Ch] [ebp-Ch] BYREF - - v26 = this; - v25 = a3; - v24 = a5; - std::locale::locale( - (volatile signed __int32 **)&v30[1], - (volatile signed __int32 **)(a4 + 108), - (const std::locale *)v22[13]); - v27 = std::use_facet>((int)&v30[1]); - v6 = alloca(80); - v7 = alloca(80); - LODWORD(lpuexcpt) = v22; - v29 = v22; - v31[0] = (int *)std::locale::facet::_S_get_c_locale(); - v8 = std::__convert_from_v(v31, (char *)lpuexcpt, 64, "%.*Lf", 0, a6); - LODWORD(lpuexcpt) = v8; - if ( v8 > 63 ) - { - LODWORD(lpuexcpt) = v8 + 1; - v9 = 16 * ((unsigned int)(v8 + 28) >> 4); - v10 = alloca(v9); - v11 = alloca(v9); - v23 = (char *)v22; - v29 = v22; - v31[0] = (int *)std::locale::facet::_S_get_c_locale(); - LODWORD(lpuexcpt) = std::__convert_from_v(v31, v23, lpuexcpt, "%.*Lf", 0, a6); - } - std::wstring::basic_string(v31, lpuexcpt, 0, (int)v30); - v12 = v31[0]; - if ( *(v31[0] - 1) >= 0 ) - { - std::wstring::_M_leak_hard(v31); - v12 = v31[0]; - } - (*(void (__thiscall **)(void *, char **, char *, int *, int, int, int, int, int, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *))(*(_DWORD *)v27 + 44))( - v27, - v29, - (char *)v29 + lpuexcpt, - v12, - v17, - v18, - v19, - v20, - v21, - v22[0], - v22[1], - v22[2], - v22[3], - v22[4], - v22[5], - v22[6], - v22[7], - v22[8], - v22[9]); - if ( (_BYTE)v25 ) - v13 = std::money_put>::_M_insert(a2, a4, v24, (char **)v31); - else - v13 = std::money_put>::_M_insert(a2, a4, v24, (char **)v31); - lpuexcpt = v13; - v14 = v31[0]; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(v31[0] - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_9; -LABEL_12: - std::wstring::_Rep::_M_destroy(v14 - 3, (int)v30); - goto LABEL_9; - } - v15 = *(v31[0] - 1); - *(v31[0] - 1) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_12; -LABEL_9: - std::locale::~locale((_DWORD **)&v30[1]); - return lpuexcpt; -} -// 49646D: variable 'v17' is possibly undefined -// 49646D: variable 'v18' is possibly undefined -// 49646D: variable 'v19' is possibly undefined -// 49646D: variable 'v20' is possibly undefined -// 49646D: variable 'v21' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004965C0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - __int16 a3, - char **a4) -{ - int v4; // eax - char *v6; // edx - int v7; // eax - bool v8; // sf - unsigned int v9; // eax - unsigned int v10; // ebx - _WORD *v11; // edx - _WORD *v12; // eax - int v13; // edx - int v14; // eax - unsigned int v15; // edx - unsigned int v16; // eax - bool v17; // dl - __int16 v18; // ax - int v19; // ecx - unsigned int v20; // edx - int v21; // eax - char v22; // bl - int v23; // edx - _DWORD *v24; // eax - unsigned int v25; // [esp+8h] [ebp-B0h] - __int16 v26; // [esp+28h] [ebp-90h] - char *v27; // [esp+2Ch] [ebp-8Ch] - std::locale::_Impl *v28; // [esp+30h] [ebp-88h] - int v29; // [esp+34h] [ebp-84h] - unsigned int v30; // [esp+34h] [ebp-84h] - _WORD *v31; // [esp+38h] [ebp-80h] - bool v32; // [esp+38h] [ebp-80h] - int v33; // [esp+3Ch] [ebp-7Ch] - int *v34; // [esp+48h] [ebp-70h] - int v35; // [esp+48h] [ebp-70h] - int v36; // [esp+48h] [ebp-70h] - int v37; // [esp+48h] [ebp-70h] - std::locale::facet *v38; // [esp+4Ch] [ebp-6Ch] - std::locale::facet *v39; // [esp+4Ch] [ebp-6Ch] - void *v40; // [esp+50h] [ebp-68h] - unsigned int v41; // [esp+50h] [ebp-68h] - unsigned int v42; // [esp+50h] [ebp-68h] - __int64 v43; // [esp+54h] [ebp-64h] - int v44; // [esp+5Ch] [ebp-5Ch] - char *lpuexcpt; // [esp+60h] [ebp-58h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] - char *lpuexcptb; // [esp+60h] [ebp-58h] - char lpuexcptc; // [esp+60h] [ebp-58h] - char v49[5]; // [esp+A3h] [ebp-15h] BYREF - int v50; // [esp+A8h] [ebp-10h] BYREF - int v51; // [esp+ACh] [ebp-Ch] BYREF - char v52; // [esp+B0h] [ebp-8h] BYREF - - v43 = a1; - v40 = std::use_facet>(a2 + 108); - v38 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v34 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v38); - v44 = *v34; - if ( !*v34 ) - { - v24 = operator new(0x54u); - v24[1] = 0; - *v24 = &off_51B0A4; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - *(_DWORD *)((char *)v24 + 18) = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - v24[10] = 0; - v24[11] = 0; - v24[12] = 0; - v24[13] = 0; - v24[14] = 0; - *((_BYTE *)v24 + 82) = 0; - v28 = (std::locale::_Impl *)v24; - std::__moneypunct_cache::_M_cache((int)v24, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v28, v38, v25); - v44 = *v34; - } - lpuexcpt = *a4; - v4 = *((_DWORD *)*a4 - 3); - if ( *(_WORD *)*a4 == *(_WORD *)(v44 + 60) ) - { - v51 = *(_DWORD *)(v44 + 56); - v33 = *(_DWORD *)(v44 + 40); - v39 = *(std::locale::facet **)(v44 + 44); - v6 = lpuexcpt + 2; - if ( !v4 ) - v6 = lpuexcpt; - lpuexcpt = v6; - } - else - { - v51 = *(_DWORD *)(v44 + 52); - v33 = *(_DWORD *)(v44 + 32); - v39 = *(std::locale::facet **)(v44 + 36); - } - v35 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v40 + 20))(v40, 8) - (_DWORD)lpuexcpt; - v41 = v35 >> 1; - if ( v35 >> 1 ) - { - *(_DWORD *)&v49[1] = std::wstring::_S_construct(0, 0); - std::wstring::reserve((int *)&v49[1], v35); - v7 = *(_DWORD *)(v44 + 48); - v36 = v41 - v7; - if ( (int)(v41 - v7) > 0 ) - { - v8 = v7 < 0; - v9 = v41 - v7; - if ( v8 ) - v9 = v41; - v36 = v9; - v10 = v9; - if ( *(_DWORD *)(v44 + 12) ) - { - std::wstring::_M_replace_aux((int **)&v49[1], 0, *(_DWORD *)(*(_DWORD *)&v49[1] - 12), 2 * v9, 0); - v11 = *(_WORD **)&v49[1]; - v29 = *(_DWORD *)(v44 + 12); - v27 = *(char **)(v44 + 8); - v26 = *(_WORD *)(v44 + 20); - if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)&v49[1]); - v11 = *(_WORD **)&v49[1]; - } - v12 = std::__add_grouping(v11, v26, v27, v29, lpuexcpt, &lpuexcpt[2 * v10]); - v13 = *(_DWORD *)&v49[1]; - v31 = v12; - if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)&v49[1]); - v13 = *(_DWORD *)&v49[1]; - } - v14 = (int)v31 - v13; - v15 = *(_DWORD *)(v13 - 12); - v16 = v14 >> 1; - if ( v16 > v15 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v16, - v15); - std::wstring::_M_mutate((int **)&v49[1], v16, v15 - v16, 0); - v7 = *(_DWORD *)(v44 + 48); - } - else - { - std::wstring::assign((int **)&v49[1], lpuexcpt, v9); - v7 = *(_DWORD *)(v44 + 48); - } - } - if ( v7 > 0 ) - { - std::wstring::push_back((int *)&v49[1], *(_WORD *)(v44 + 18)); - if ( v36 < 0 ) - { - std::wstring::append((int *)&v49[1], -v36, *(_WORD *)(v44 + 62)); - std::wstring::append((unsigned int *)&v49[1], lpuexcpt, v41); - } - else - { - std::wstring::append((unsigned int *)&v49[1], &lpuexcpt[2 * v36], *(_DWORD *)(v44 + 48)); - } - } - v37 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12)); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12) + *(_DWORD *)(v44 + 28)); - v50 = (int)std::wstring::_S_construct(0, 0); - std::wstring::reserve(&v50, 2 * (_DWORD)lpuexcpta); - v42 = *(_DWORD *)(a2 + 8); - v17 = v42 > (unsigned int)lpuexcpta && v37 == 16; - v30 = v42 - (_DWORD)lpuexcpta; - lpuexcptb = (char *)&v51; - v32 = v17; - do - { - switch ( *lpuexcptb ) - { - case 0: - if ( v32 ) - { - v18 = a3; - goto LABEL_30; - } - break; - case 1: - v18 = a3; - if ( v32 ) -LABEL_30: - std::wstring::append(&v50, v30, v18); - else - std::wstring::push_back(&v50, a3); - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - std::wstring::append((unsigned int *)&v50, *(char **)(v44 + 24), *(_DWORD *)(v44 + 28)); - break; - case 3: - if ( v39 ) - std::wstring::push_back(&v50, *(_WORD *)v33); - break; - case 4: - std::wstring::append(&v50, &v49[1]); - break; - default: - break; - } - ++lpuexcptb; - } - while ( lpuexcptb != &v52 ); - if ( (unsigned int)v39 > 1 ) - { - std::wstring::append((unsigned int *)&v50, (char *)(v33 + 2), (unsigned int)v39 - 1); - v19 = v50; - v20 = *(_DWORD *)(v50 - 12); - if ( v42 > v20 ) - goto LABEL_37; - } - else - { - v19 = v50; - v20 = *(_DWORD *)(v50 - 12); - if ( v42 > v20 ) - { -LABEL_37: - if ( v37 == 32 ) - std::wstring::append(&v50, v42 - v20, a3); - else - std::wstring::_M_replace_aux((int **)&v50, 0, 0, v42 - v20, a3); - v19 = v50; - goto LABEL_40; - } - } - v42 = v20; -LABEL_40: - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v21 = (*(int (__thiscall **)(_DWORD, int, unsigned int))(*(_DWORD *)a1 + 48))(a1, v19, v42); - v22 = 0; - v19 = v50; - if ( v21 != v42 ) - v22 = 1; - lpuexcptc = v22; - } - v23 = HIDWORD(a1); - LOBYTE(v23) = lpuexcptc; - HIDWORD(v43) = v23; - std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v19 - 12), (int)v49); - std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v49[1] - 12), (int)&v50); - } - *(_DWORD *)(a2 + 8) = 0; - return v43; -} -// 496C5E: variable 'v25' is possibly undefined -// 50C494: using guessed type signed __int32 std::moneypunct::id; -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (00496DF0) -------------------------------------------------------- -__int64 __stdcall std::money_put>::_M_insert( - __int64 a1, - int a2, - __int16 a3, - char **a4) -{ - int v4; // eax - char *v6; // edx - int v7; // eax - bool v8; // sf - unsigned int v9; // eax - unsigned int v10; // ebx - _WORD *v11; // edx - _WORD *v12; // eax - int v13; // edx - int v14; // eax - unsigned int v15; // edx - unsigned int v16; // eax - bool v17; // dl - __int16 v18; // ax - int v19; // ecx - unsigned int v20; // edx - int v21; // eax - char v22; // bl - int v23; // edx - _DWORD *v24; // eax - unsigned int v25; // [esp+8h] [ebp-B0h] - __int16 v26; // [esp+28h] [ebp-90h] - char *v27; // [esp+2Ch] [ebp-8Ch] - std::locale::_Impl *v28; // [esp+30h] [ebp-88h] - int v29; // [esp+34h] [ebp-84h] - unsigned int v30; // [esp+34h] [ebp-84h] - _WORD *v31; // [esp+38h] [ebp-80h] - bool v32; // [esp+38h] [ebp-80h] - int v33; // [esp+3Ch] [ebp-7Ch] - int *v34; // [esp+48h] [ebp-70h] - int v35; // [esp+48h] [ebp-70h] - int v36; // [esp+48h] [ebp-70h] - int v37; // [esp+48h] [ebp-70h] - std::locale::facet *v38; // [esp+4Ch] [ebp-6Ch] - std::locale::facet *v39; // [esp+4Ch] [ebp-6Ch] - void *v40; // [esp+50h] [ebp-68h] - unsigned int v41; // [esp+50h] [ebp-68h] - unsigned int v42; // [esp+50h] [ebp-68h] - __int64 v43; // [esp+54h] [ebp-64h] - int v44; // [esp+5Ch] [ebp-5Ch] - char *lpuexcpt; // [esp+60h] [ebp-58h] - struct _Unwind_Exception *lpuexcpta; // [esp+60h] [ebp-58h] - char *lpuexcptb; // [esp+60h] [ebp-58h] - char lpuexcptc; // [esp+60h] [ebp-58h] - char v49[5]; // [esp+A3h] [ebp-15h] BYREF - int v50; // [esp+A8h] [ebp-10h] BYREF - int v51; // [esp+ACh] [ebp-Ch] BYREF - char v52; // [esp+B0h] [ebp-8h] BYREF - - v43 = a1; - v40 = std::use_facet>(a2 + 108); - v38 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); - v34 = (int *)(*(_DWORD *)(*(_DWORD *)(a2 + 108) + 12) + 4 * (_DWORD)v38); - v44 = *v34; - if ( !*v34 ) - { - v24 = operator new(0x54u); - v24[1] = 0; - *v24 = &off_51B0B4; - v24[2] = 0; - v24[3] = 0; - *((_BYTE *)v24 + 16) = 0; - *(_DWORD *)((char *)v24 + 18) = 0; - v24[6] = 0; - v24[7] = 0; - v24[8] = 0; - v24[9] = 0; - v24[10] = 0; - v24[11] = 0; - v24[12] = 0; - v24[13] = 0; - v24[14] = 0; - *((_BYTE *)v24 + 82) = 0; - v28 = (std::locale::_Impl *)v24; - std::__moneypunct_cache::_M_cache((int)v24, a2 + 108); - std::locale::_Impl::_M_install_cache(*(_DWORD *)(a2 + 108), v28, v38, v25); - v44 = *v34; - } - lpuexcpt = *a4; - v4 = *((_DWORD *)*a4 - 3); - if ( *(_WORD *)*a4 == *(_WORD *)(v44 + 60) ) - { - v51 = *(_DWORD *)(v44 + 56); - v33 = *(_DWORD *)(v44 + 40); - v39 = *(std::locale::facet **)(v44 + 44); - v6 = lpuexcpt + 2; - if ( !v4 ) - v6 = lpuexcpt; - lpuexcpt = v6; - } - else - { - v51 = *(_DWORD *)(v44 + 52); - v33 = *(_DWORD *)(v44 + 32); - v39 = *(std::locale::facet **)(v44 + 36); - } - v35 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v40 + 20))(v40, 8) - (_DWORD)lpuexcpt; - v41 = v35 >> 1; - if ( v35 >> 1 ) - { - *(_DWORD *)&v49[1] = std::wstring::_S_construct(0, 0); - std::wstring::reserve((int *)&v49[1], v35); - v7 = *(_DWORD *)(v44 + 48); - v36 = v41 - v7; - if ( (int)(v41 - v7) > 0 ) - { - v8 = v7 < 0; - v9 = v41 - v7; - if ( v8 ) - v9 = v41; - v36 = v9; - v10 = v9; - if ( *(_DWORD *)(v44 + 12) ) - { - std::wstring::_M_replace_aux((int **)&v49[1], 0, *(_DWORD *)(*(_DWORD *)&v49[1] - 12), 2 * v9, 0); - v11 = *(_WORD **)&v49[1]; - v29 = *(_DWORD *)(v44 + 12); - v27 = *(char **)(v44 + 8); - v26 = *(_WORD *)(v44 + 20); - if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)&v49[1]); - v11 = *(_WORD **)&v49[1]; - } - v12 = std::__add_grouping(v11, v26, v27, v29, lpuexcpt, &lpuexcpt[2 * v10]); - v13 = *(_DWORD *)&v49[1]; - v31 = v12; - if ( *(int *)(*(_DWORD *)&v49[1] - 4) >= 0 ) - { - std::wstring::_M_leak_hard((int **)&v49[1]); - v13 = *(_DWORD *)&v49[1]; - } - v14 = (int)v31 - v13; - v15 = *(_DWORD *)(v13 - 12); - v16 = v14 >> 1; - if ( v16 > v15 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - v16, - v15); - std::wstring::_M_mutate((int **)&v49[1], v16, v15 - v16, 0); - v7 = *(_DWORD *)(v44 + 48); - } - else - { - std::wstring::assign((int **)&v49[1], lpuexcpt, v9); - v7 = *(_DWORD *)(v44 + 48); - } - } - if ( v7 > 0 ) - { - std::wstring::push_back((int *)&v49[1], *(_WORD *)(v44 + 18)); - if ( v36 < 0 ) - { - std::wstring::append((int *)&v49[1], -v36, *(_WORD *)(v44 + 62)); - std::wstring::append((unsigned int *)&v49[1], lpuexcpt, v41); - } - else - { - std::wstring::append((unsigned int *)&v49[1], &lpuexcpt[2 * v36], *(_DWORD *)(v44 + 48)); - } - } - v37 = *(_DWORD *)(a2 + 12) & 0xB0; - lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12)); - if ( (*(_DWORD *)(a2 + 12) & 0x200) != 0 ) - lpuexcpta = (std::locale::facet *)((char *)v39 + *(_DWORD *)(*(_DWORD *)&v49[1] - 12) + *(_DWORD *)(v44 + 28)); - v50 = (int)std::wstring::_S_construct(0, 0); - std::wstring::reserve(&v50, 2 * (_DWORD)lpuexcpta); - v42 = *(_DWORD *)(a2 + 8); - v17 = v42 > (unsigned int)lpuexcpta && v37 == 16; - v30 = v42 - (_DWORD)lpuexcpta; - lpuexcptb = (char *)&v51; - v32 = v17; - do - { - switch ( *lpuexcptb ) - { - case 0: - if ( v32 ) - { - v18 = a3; - goto LABEL_30; - } - break; - case 1: - v18 = a3; - if ( v32 ) -LABEL_30: - std::wstring::append(&v50, v30, v18); - else - std::wstring::push_back(&v50, a3); - break; - case 2: - if ( (*(_BYTE *)(a2 + 13) & 2) != 0 ) - std::wstring::append((unsigned int *)&v50, *(char **)(v44 + 24), *(_DWORD *)(v44 + 28)); - break; - case 3: - if ( v39 ) - std::wstring::push_back(&v50, *(_WORD *)v33); - break; - case 4: - std::wstring::append(&v50, &v49[1]); - break; - default: - break; - } - ++lpuexcptb; - } - while ( lpuexcptb != &v52 ); - if ( (unsigned int)v39 > 1 ) - { - std::wstring::append((unsigned int *)&v50, (char *)(v33 + 2), (unsigned int)v39 - 1); - v19 = v50; - v20 = *(_DWORD *)(v50 - 12); - if ( v42 > v20 ) - goto LABEL_37; - } - else - { - v19 = v50; - v20 = *(_DWORD *)(v50 - 12); - if ( v42 > v20 ) - { -LABEL_37: - if ( v37 == 32 ) - std::wstring::append(&v50, v42 - v20, a3); - else - std::wstring::_M_replace_aux((int **)&v50, 0, 0, v42 - v20, a3); - v19 = v50; - goto LABEL_40; - } - } - v42 = v20; -LABEL_40: - lpuexcptc = BYTE4(a1); - if ( !BYTE4(a1) ) - { - v21 = (*(int (__thiscall **)(_DWORD, int, unsigned int))(*(_DWORD *)a1 + 48))(a1, v19, v42); - v22 = 0; - v19 = v50; - if ( v21 != v42 ) - v22 = 1; - lpuexcptc = v22; - } - v23 = HIDWORD(a1); - LOBYTE(v23) = lpuexcptc; - HIDWORD(v43) = v23; - std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v19 - 12), (int)v49); - std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(*(_DWORD *)&v49[1] - 12), (int)&v50); - } - *(_DWORD *)(a2 + 8) = 0; - return v43; -} -// 49748E: variable 'v25' is possibly undefined -// 50C498: using guessed type signed __int32 std::moneypunct::id; -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (00497620) -------------------------------------------------------- -bool __userpurge std::type_info::__do_catch@( - std::type_info *a1@, - std::type_info *this, - const type_info *a3, - void **a4, - unsigned int a5) -{ - bool result; // al - const char *Str1; // ecx - - result = 1; - if ( a1 != this ) - { - Str1 = (const char *)*((_DWORD *)a1 + 1); - result = 0; - if ( *Str1 != 42 ) - return strcmp(Str1, (const char *)((**((_BYTE **)this + 1) == 42) + *((_DWORD *)this + 1))) == 0; - } - return result; -} - -//----- (00497660) -------------------------------------------------------- -int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3) -{ - return 0; -} - -//----- (00497670) -------------------------------------------------------- -int std::type_info::__is_function_p() -{ - return 0; -} - -//----- (00497680) -------------------------------------------------------- -bool __thiscall std::type_info::operator==(_DWORD *this, int a2) -{ - bool result; // al - const char *Str1; // ecx - - result = 1; - if ( (_DWORD *)a2 != this ) - { - Str1 = (const char *)this[1]; - result = 0; - if ( *Str1 != 42 ) - return strcmp(Str1, (const char *)((**(_BYTE **)(a2 + 4) == 42) + *(_DWORD *)(a2 + 4))) == 0; - } - return result; -} - -//----- (004976C0) -------------------------------------------------------- -int __cdecl std::wstring::_S_compare(int a1, int a2) -{ - return a1 - a2; -} - -//----- (004976D0) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004976E0) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004976F0) -------------------------------------------------------- -int *__fastcall std::wstring::_M_leak_hard(int **a1) -{ - int *result; // eax - - if ( *(*a1 - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - result = *a1; - *(*a1 - 1) = -1; - return result; -} - -//----- (00497730) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, __int16 a2) -{ - _DWORD *v2; // eax - _WORD *v3; // ecx - unsigned int v4; // edx - - v2 = std::wstring::_Rep::_S_create(a1, 0); - if ( a1 ) - { - v3 = v2 + 3; - v4 = a1; - if ( a1 == 1 ) - { - *((_WORD *)v2 + 6) = a2; - } - else - { - do - { - *v3++ = a2; - --v4; - } - while ( v4 ); - } - } - v2[2] = 0; - *v2 = a1; - *((_WORD *)v2 + a1 + 6) = 0; - return v2 + 3; -} - -//----- (004977A0) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(_WORD *Src, int a2) -{ - size_t Size; // esi - int v3; // ebp - int *v4; // eax - int *v5; // ebx - _DWORD *v6; // edx - _DWORD *v8; // [esp+1Ch] [ebp-20h] - - Size = a2 - (_DWORD)Src; - v3 = (a2 - (int)Src) >> 1; - v4 = std::wstring::_Rep::_S_create(v3, 0); - v5 = v4; - v6 = v4 + 3; - if ( v3 == 1 ) - { - *((_WORD *)v4 + 6) = *Src; - } - else if ( v3 ) - { - v8 = v4 + 3; - memcpy(v4 + 3, Src, Size); - v6 = v8; - } - v5[2] = 0; - *v5 = v3; - *(_WORD *)((char *)v5 + Size + 12) = 0; - return v6; -} - -//----- (00497830) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2) -{ - size_t Size; // esi - int v3; // ebp - int *v4; // eax - int *v5; // ebx - _DWORD *v6; // edx - _DWORD *v8; // [esp+1Ch] [ebp-20h] - - if ( a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a2 - (_DWORD)Src; - v3 = (a2 - (int)Src) >> 1; - v4 = std::wstring::_Rep::_S_create(v3, 0); - v5 = v4; - v6 = v4 + 3; - if ( v3 == 1 ) - { - *((_WORD *)v4 + 6) = *Src; - } - else if ( v3 ) - { - v8 = v4 + 3; - memcpy(v4 + 3, Src, Size); - v6 = v8; - } - v5[2] = 0; - *v5 = v3; - *(_WORD *)((char *)v5 + Size + 12) = 0; - return v6; -} - -//----- (004978D0) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct(_WORD *Src, int a2) -{ - size_t Size; // esi - int v3; // ebp - int *v4; // eax - int *v5; // ebx - _DWORD *v6; // edx - _DWORD *v8; // [esp+1Ch] [ebp-20h] - - if ( a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a2 - (_DWORD)Src; - v3 = (a2 - (int)Src) >> 1; - v4 = std::wstring::_Rep::_S_create(v3, 0); - v5 = v4; - v6 = v4 + 3; - if ( v3 == 1 ) - { - *((_WORD *)v4 + 6) = *Src; - } - else if ( v3 ) - { - v8 = v4 + 3; - memcpy(v4 + 3, Src, Size); - v6 = v8; - } - v5[2] = 0; - *v5 = v3; - *(_WORD *)((char *)v5 + Size + 12) = 0; - return v6; -} - -//----- (00497970) -------------------------------------------------------- -void *std::wstring::_S_empty_rep() -{ - return &std::wstring::_Rep::_S_empty_rep_storage; -} - -//----- (00497980) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004979C0) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (00497A00) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (00497A40) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (00497A80) -------------------------------------------------------- -void __fastcall std::wstring::shrink_to_fit(int *a1) -{ - if ( *(_DWORD *)(*a1 - 12) < *(_DWORD *)(*a1 - 8) ) - std::wstring::reserve(a1, 0); -} - -//----- (00497B10) -------------------------------------------------------- -int **__thiscall std::wstring::_M_replace_aux(int **this, int a2, int a3, unsigned int a4, __int16 a5) -{ - unsigned int v6; // ebx - _WORD *v7; // eax - - v6 = a4; - if ( a4 > a3 + 536870910 - *(*this - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::wstring::_M_mutate(this, a2, a3, a4); - if ( !a4 ) - return this; - v7 = (_WORD *)*this + a2; - if ( a4 != 1 ) - { - do - { - *v7++ = a5; - --v6; - } - while ( v6 ); - return this; - } - *v7 = a5; - return this; -} - -//----- (00497BA0) -------------------------------------------------------- -int **__thiscall std::wstring::_M_replace_safe(int **this, int a2, int a3, _WORD *Src, int a5) -{ - std::wstring::_M_mutate(this, a2, a3, a5); - if ( !a5 ) - return this; - if ( a5 != 1 ) - { - memcpy((char *)*this + 2 * a2, Src, 2 * a5); - return this; - } - *((_WORD *)*this + a2) = *Src; - return this; -} - -//----- (00497C20) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, __int16 a2) -{ - _DWORD *v2; // eax - _WORD *v3; // ecx - unsigned int v4; // edx - - v2 = std::wstring::_Rep::_S_create(a1, 0); - if ( a1 ) - { - v3 = v2 + 3; - v4 = a1; - if ( a1 == 1 ) - { - *((_WORD *)v2 + 6) = a2; - } - else - { - do - { - *v3++ = a2; - --v4; - } - while ( v4 ); - } - } - v2[2] = 0; - *v2 = a1; - *((_WORD *)v2 + a1 + 6) = 0; - return v2 + 3; -} - -//----- (00497C90) -------------------------------------------------------- -char *__thiscall std::wstring::at(int **this, unsigned int a2) -{ - int *v2; // eax - int *v5; // eax - - v2 = *this; - if ( a2 >= *(*this - 3) ) - std::__throw_out_of_range_fmt( - "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", - a2, - *(*this - 3)); - if ( *(v2 - 1) < 0 ) - return (char *)v2 + 2 * a2; - if ( *(v2 - 1) > 0 ) - std::wstring::_M_mutate(this, 0, 0, 0); - v5 = *this; - *(v5 - 1) = -1; - return (char *)v5 + 2 * a2; -} - -//----- (00497D10) -------------------------------------------------------- -char *__fastcall std::wstring::end(int **a1) -{ - int *v1; // eax - int *v4; // eax - int v5; // edx - - v1 = *a1; - if ( *(*a1 - 1) < 0 ) - return (char *)v1 + 2 * *(v1 - 3); - if ( *(v1 - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - v4 = *a1; - v5 = *(*a1 - 3); - *(v4 - 1) = -1; - return (char *)v4 + 2 * v5; -} - -//----- (00497D60) -------------------------------------------------------- -void __thiscall std::wstring::_Rep::_M_destroy(void *Block, int a2) -{ - operator delete(Block); -} - -//----- (00497D80) -------------------------------------------------------- -void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *Block, int a2) -{ - int v2; // eax - - if ( !_CRT_MT ) - { - v2 = *((_DWORD *)Block + 2); - *((_DWORD *)Block + 2) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)Block); - return; - } - if ( _InterlockedExchangeAdd(Block + 2, 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00497DC0) -------------------------------------------------------- -int __fastcall std::wstring::_Rep::_M_refcopy(int a1) -{ - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); - else - ++*(_DWORD *)(a1 + 8); - return a1 + 12; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00497DF0) -------------------------------------------------------- -int __fastcall std::wstring::_Rep::_M_refdata(int a1) -{ - return a1 + 12; -} - -//----- (00497E00) -------------------------------------------------------- -void *std::wstring::_Rep::_S_empty_rep() -{ - return &std::wstring::_Rep::_S_empty_rep_storage; -} - -//----- (00497E10) -------------------------------------------------------- -void __fastcall std::wstring::_Rep::_M_set_leaked(int a1) -{ - *(_DWORD *)(a1 + 8) = -1; -} - -//----- (00497E20) -------------------------------------------------------- -void __fastcall std::wstring::_Rep::_M_set_sharable(int a1) -{ - *(_DWORD *)(a1 + 8) = 0; -} - -//----- (00497E30) -------------------------------------------------------- -int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] = 0; - *this = a2; - *((_WORD *)this + a2 + 6) = 0; - return result; -} - -//----- (00497E50) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3) -{ - _DWORD *result; // eax - - if ( *(int *)(this + 8) < 0 ) - return std::wstring::_Rep::_M_clone((int *)this, a2, 0); - if ( _CRT_MT ) - { - _InterlockedAdd((volatile signed __int32 *)(this + 8), 1u); - return (_DWORD *)(this + 12); - } - else - { - result = (_DWORD *)(this + 12); - ++*(_DWORD *)(this + 8); - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00497EA0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::_Rep::_M_clone(int *this, int a2, int a3) -{ - _DWORD *v4; // eax - int v5; // edx - _DWORD *v6; // ebx - int v7; // eax - - v4 = std::wstring::_Rep::_S_create(a3 + *this, this[1]); - v5 = 0; - v6 = v4; - v7 = *this; - if ( *this ) - { - if ( v7 == 1 ) - { - *((_WORD *)v6 + 6) = *((_WORD *)this + 6); - v5 = 2; - } - else - { - memcpy(v6 + 3, this + 3, 2 * v7); - v7 = *this; - v5 = 2 * *this; - } - } - *v6 = v7; - v6[2] = 0; - *(_WORD *)((char *)v6 + v5 + 12) = 0; - return v6 + 3; -} - -//----- (00497F20) -------------------------------------------------------- -_DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2) -{ - unsigned int v2; // ebx - signed int v3; // eax - unsigned int v4; // ecx - _DWORD *result; // eax - - v2 = a1; - if ( a1 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_S_create"); - if ( a1 <= a2 ) - { - v3 = 2 * a1 + 14; - } - else - { - if ( a1 < 2 * a2 ) - v2 = 2 * a2; - v3 = 2 * v2 + 14; - v4 = 2 * v2 + 30; - if ( v4 <= 0x1000 || v2 <= a2 ) - { - if ( v3 < 0 ) - std::__throw_bad_alloc(); - } - else - { - v2 += (4096 - (v4 & 0xFFF)) >> 1; - if ( v2 > 0x1FFFFFFE ) - v2 = 536870910; - v3 = 2 * v2 + 14; - } - } - result = operator new(v3); - result[1] = v2; - result[2] = 0; - return result; -} - -//----- (00497FC0) -------------------------------------------------------- -char *__fastcall std::wstring::back(int **a1) -{ - int *v1; // eax - int v2; // esi - int *v5; // eax - - v1 = *a1; - v2 = *(*a1 - 3) - 1; - if ( *(*a1 - 1) < 0 ) - return (char *)v1 + 2 * v2; - if ( *(v1 - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - v5 = *a1; - *(v5 - 1) = -1; - return (char *)v5 + 2 * v2; -} - -//----- (00498020) -------------------------------------------------------- -int **__thiscall std::wstring::rend(int **this, int **a2) -{ - int *v3; // eax - int *v5; // eax - - v3 = *a2; - if ( *(*a2 - 1) >= 0 ) - { - if ( *(v3 - 1) > 0 ) - std::wstring::_M_mutate(a2, 0, 0, 0); - v5 = *a2; - *(v5 - 1) = -1; - *this = v5; - return this; - } - else - { - *this = v3; - return this; - } -} - -//----- (00498080) -------------------------------------------------------- -int __thiscall std::wstring::swap(int *this, int *a2) -{ - int result; // eax - int v3; // edx - - result = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(result - 4) = 0; - v3 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - *this = v3; - *a2 = result; - return result; -} - -//----- (004980B0) -------------------------------------------------------- -int *__fastcall std::wstring::begin(int **a1) -{ - int *result; // eax - - result = *a1; - if ( *(*a1 - 1) >= 0 ) - { - if ( *(result - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - result = *a1; - *(*a1 - 1) = -1; - } - return result; -} - -//----- (00498100) -------------------------------------------------------- -int __fastcall std::wstring::clear(int **a1) -{ - return std::wstring::_M_mutate(a1, 0, *(*a1 - 3), 0); -} - -//----- (00498130) -------------------------------------------------------- -char *__thiscall std::wstring::erase(int **this, int a2) -{ - int v3; // esi - int *v4; // eax - - v3 = a2 - (_DWORD)*this; - std::wstring::_M_mutate(this, v3 >> 1, 1, 0); - v4 = *this; - *(v4 - 1) = -1; - return (char *)v4 + v3; -} - -//----- (00498170) -------------------------------------------------------- -char *__thiscall std::wstring::erase(int **this, char *a2, int a3) -{ - char *result; // eax - int v5; // ebx - int *v6; // eax - - result = a2; - if ( (a3 - (int)a2) >> 1 ) - { - v5 = a2 - (char *)*this; - std::wstring::_M_mutate(this, v5 >> 1, (a3 - (int)a2) >> 1, 0); - v6 = *this; - *(v6 - 1) = -1; - return (char *)v6 + v5; - } - return result; -} - -//----- (004981D0) -------------------------------------------------------- -int **__thiscall std::wstring::erase(int **this, unsigned int a2, unsigned int a3) -{ - unsigned int v4; // ecx - int v5; // eax - - v4 = *(*this - 3); - v5 = v4 - a2; - if ( v4 - a2 > a3 ) - v5 = a3; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - a2, - v4); - std::wstring::_M_mutate(this, a2, v5, 0); - return this; -} - -//----- (00498230) -------------------------------------------------------- -int *__fastcall std::wstring::front(int **a1) -{ - int *result; // eax - - result = *a1; - if ( *(*a1 - 1) >= 0 ) - { - if ( *(result - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - result = *a1; - *(*a1 - 1) = -1; - } - return result; -} - -//----- (00498280) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::append(unsigned int *this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::append(this, (char *)String, v3); -} - -//----- (004982B0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::append(unsigned int *this, char *a2, unsigned int a3) -{ - char *Src; // edi - unsigned int v5; // eax - int v6; // ebp - unsigned int v7; // ebp - _WORD *v8; // edx - char *v10; // edi - bool v11; // cc - - Src = a2; - if ( a3 ) - { - v5 = *this; - v6 = *(_DWORD *)(*this - 12); - if ( a3 > 536870910 - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v7 = a3 + v6; - if ( v7 > *(_DWORD *)(v5 - 8) || (v11 = *(_DWORD *)(v5 - 4) <= 0, v5 = *this, !v11) ) - { - if ( v5 <= (unsigned int)a2 && (unsigned int)a2 <= v5 + 2 * *(_DWORD *)(v5 - 12) ) - { - v10 = &a2[-v5]; - std::wstring::reserve((int *)this, v7); - v5 = *this; - Src = &v10[*this]; - v8 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( a3 != 1 ) - goto LABEL_8; - goto LABEL_12; - } - std::wstring::reserve((int *)this, v7); - v5 = *this; - } - v8 = (_WORD *)(v5 + 2 * *(_DWORD *)(v5 - 12)); - if ( a3 != 1 ) - { -LABEL_8: - memcpy(v8, Src, 2 * a3); - v5 = *this; -LABEL_9: - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v7; - *(_WORD *)(v5 + 2 * v7) = 0; - return this; - } -LABEL_12: - *v8 = *(_WORD *)Src; - goto LABEL_9; - } - return this; -} - -//----- (00498390) -------------------------------------------------------- -int *__thiscall std::wstring::append(int *this, _DWORD *a2) -{ - int v3; // esi - unsigned int v4; // edi - int v5; // eax - _WORD *Src; // ecx - _WORD *v7; // edx - - v3 = *(_DWORD *)(*a2 - 12); - if ( v3 ) - { - v4 = v3 + *(_DWORD *)(*this - 12); - if ( v4 > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - { - std::wstring::reserve(this, v3 + *(_DWORD *)(*this - 12)); - v5 = *this; - Src = (_WORD *)*a2; - v7 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( v3 == 1 ) - { -LABEL_9: - *v7 = *Src; - goto LABEL_5; - } - } - else - { - v5 = *this; - Src = (_WORD *)*a2; - v7 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( v3 == 1 ) - goto LABEL_9; - } - memcpy(v7, Src, 2 * v3); - v5 = *this; -LABEL_5: - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v4; - *(_WORD *)(v5 + 2 * v4) = 0; - } - return this; -} - -//----- (00498420) -------------------------------------------------------- -int *__thiscall std::wstring::append(int *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // ebx - unsigned int v5; // ebx - unsigned int v7; // edx - _WORD *Src; // edi - int v9; // eax - _WORD *v10; // ecx - unsigned int v12; // [esp+1Ch] [ebp-20h] - unsigned int v13; // [esp+1Ch] [ebp-20h] - - v4 = *(_DWORD *)(*a2 - 12); - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::append", - a3, - *(_DWORD *)(*a2 - 12)); - v5 = v4 - a3; - if ( v5 > a4 ) - v5 = a4; - if ( v5 ) - { - v7 = v5 + *(_DWORD *)(*this - 12); - if ( v7 > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - { - v12 = v5 + *(_DWORD *)(*this - 12); - std::wstring::reserve(this, v12); - v7 = v12; - } - Src = (_WORD *)(*a2 + 2 * a3); - v9 = *this; - v10 = (_WORD *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( v5 == 1 ) - { - *v10 = *Src; - } - else - { - v13 = v7; - memcpy(v10, Src, 2 * v5); - v9 = *this; - v7 = v13; - } - *(_DWORD *)(v9 - 4) = 0; - *(_DWORD *)(v9 - 12) = v7; - *(_WORD *)(v9 + 2 * v7) = 0; - } - return this; -} - -//----- (00498500) -------------------------------------------------------- -int *__thiscall std::wstring::append(int *this, unsigned int a2, __int16 a3) -{ - unsigned int v4; // ebx - __int16 v5; // dx - int v6; // ecx - int v7; // edi - unsigned int v8; // edi - int v9; // ecx - __int16 *v10; // eax - - v4 = a2; - v5 = a3; - if ( a2 ) - { - v6 = *this; - v7 = *(_DWORD *)(v6 - 12); - if ( a2 > 536870910 - v7 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v8 = a2 + v7; - if ( v8 > *(_DWORD *)(v6 - 8) || *(int *)(v6 - 4) > 0 ) - { - std::wstring::reserve(this, v8); - v5 = a3; - } - v9 = *this; - v10 = (__int16 *)(*this + 2 * *(_DWORD *)(*this - 12)); - if ( a2 == 1 ) - { - *v10 = v5; - *(_DWORD *)(v9 - 4) = 0; - *(_DWORD *)(v9 - 12) = v8; - *(_WORD *)(v9 + 2 * v8) = 0; - } - else - { - do - { - *v10++ = a3; - --v4; - } - while ( v4 ); - *(_DWORD *)(v9 - 4) = 0; - *(_DWORD *)(v9 - 12) = v8; - *(_WORD *)(v9 + 2 * v8) = 0; - } - } - return this; -} - -//----- (004985C0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::assign(_DWORD *this, int *a2) -{ - _DWORD *result; // eax - int v3; // edx - int v4; // ecx - - result = this; - v3 = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - v4 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *result = v4; - *a2 = v3; - return result; -} - -//----- (00498600) -------------------------------------------------------- -int **__thiscall std::wstring::assign(int **this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::assign(this, (char *)String, v3); -} - -//----- (00498630) -------------------------------------------------------- -int **__thiscall std::wstring::assign(int **this, char *Src, unsigned int a3) -{ - int *v3; // eax - int v4; // edx - bool v6; // cc - int *v7; // eax - int *v8; // eax - unsigned int v10; // edx - - v3 = *this; - v4 = *(*this - 3); - if ( a3 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::assign"); - if ( v3 <= (int *)Src && (char *)v3 + 2 * v4 >= Src ) - { - v6 = *(v3 - 1) <= 0; - v7 = *this; - if ( !v6 ) - { - v4 = *(v7 - 3); - goto LABEL_6; - } - v10 = (Src - (char *)v7) >> 1; - if ( a3 <= v10 ) - { - if ( a3 != 1 ) - { - if ( a3 ) - { - memcpy(v7, Src, 2 * a3); - v7 = *this; - } - goto LABEL_15; - } - } - else - { - if ( !v10 ) - { -LABEL_15: - *(v7 - 1) = 0; - *(v7 - 3) = a3; - *((_WORD *)v7 + a3) = 0; - return this; - } - if ( a3 != 1 ) - { - if ( a3 ) - { - memmove(v7, Src, 2 * a3); - v7 = *this; - } - goto LABEL_15; - } - } - *(_WORD *)v7 = *(_WORD *)Src; - goto LABEL_15; - } -LABEL_6: - std::wstring::_M_mutate(this, 0, v4, a3); - if ( !a3 ) - return this; - v8 = *this; - if ( a3 != 1 ) - { - memcpy(v8, Src, 2 * a3); - return this; - } - *(_WORD *)v8 = *(_WORD *)Src; - return this; -} - -//----- (00498750) -------------------------------------------------------- -int *__thiscall std::wstring::assign(int *this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - int v5; // edx - char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = (_DWORD *)*a2; - if ( *this != *a2 ) - { - if ( (int)*(v3 - 1) < 0 ) - { - v3 = std::wstring::_Rep::_M_clone(v3 - 3, (int)v7, 0); - v4 = *this; - if ( !_CRT_MT ) - goto LABEL_6; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(v3 - 1, 1u); - else - ++*(v3 - 1); - v4 = *this; - if ( !_CRT_MT ) - { -LABEL_6: - v5 = *(_DWORD *)(v4 - 4); - *(_DWORD *)(v4 - 4) = v5 - 1; - if ( v5 > 0 ) - { -LABEL_7: - *this = (int)v3; - return this; - } -LABEL_11: - operator delete((void *)(v4 - 12)); - *this = (int)v3; - return this; - } - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v4 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - goto LABEL_11; - } - return this; -} -// 50B0F0: using guessed type int _CRT_MT; -// 498750: using guessed type char var_D[13]; - -//----- (00498800) -------------------------------------------------------- -int **__thiscall std::wstring::assign(int **this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // eax - - v4 = *(_DWORD *)(*a2 - 12) - a3; - if ( v4 > a4 ) - v4 = a4; - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::assign", - a3, - *(_DWORD *)(*a2 - 12)); - return std::wstring::assign(this, (char *)(*a2 + 2 * a3), v4); -} - -//----- (00498870) -------------------------------------------------------- -int **__thiscall std::wstring::assign(int **this, unsigned int a2, __int16 a3) -{ - unsigned int v3; // ebx - int *v5; // eax - - v3 = a2; - if ( a2 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::wstring::_M_mutate(this, 0, *(*this - 3), a2); - if ( !a2 ) - return this; - v5 = *this; - if ( a2 != 1 ) - { - do - { - *(_WORD *)v5 = a3; - v5 = (int *)((char *)v5 + 2); - --v3; - } - while ( v3 ); - return this; - } - *(_WORD *)v5 = a3; - return this; -} - -//----- (004988F0) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, int a2, int *a3, unsigned int a4) -{ - return std::wstring::insert(this, (a2 - (int)*this) >> 1, a3, a4); -} - -//----- (00498910) -------------------------------------------------------- -int __thiscall std::wstring::insert(int **this, int a2, unsigned int a3, unsigned __int16 a4) -{ - unsigned int v5; // esi - int v6; // ebx - int result; // eax - _WORD *v8; // ebx - - v5 = a3; - v6 = a2 - (_DWORD)*this; - if ( a3 > 536870910 - *(*this - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - result = std::wstring::_M_mutate(this, v6 >> 1, 0, a3); - if ( a3 ) - { - v8 = (_WORD *)((char *)*this + v6); - if ( a3 == 1 ) - { - result = a4; - *v8 = a4; - } - else - { - do - { - *v8++ = a4; - --v5; - } - while ( v5 ); - } - } - return result; -} - -//----- (004989A0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::insert(int **this, int a2, __int16 a3) -{ - int v3; // ebx - int *v5; // edx - _WORD *result; // eax - - v3 = a2 - (_DWORD)*this; - if ( *(*this - 3) == 536870910 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::wstring::_M_mutate(this, (a2 - (int)*this) >> 1, 0, 1); - v5 = *this; - result = (_WORD *)((char *)*this + v3); - *result = a3; - *(v5 - 1) = -1; - return result; -} - -//----- (00498A00) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, int a2, wchar_t *String) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - return std::wstring::insert(this, a2, (char *)String, v4); -} - -//----- (00498A40) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, unsigned int a2, char *Src, unsigned int a4) -{ - int *v5; // edx - unsigned int v6; // ecx - _WORD *v7; // eax - int v9; // ebp - unsigned int v10; // edx - _WORD *v11; // eax - _WORD *v12; // edi - _WORD *v13; // ecx - size_t Size; // ecx - int v15; // edx - int v16; // esi - _WORD *v17; // ebp - _WORD *v18; // ecx - size_t v19; // [esp+18h] [ebp-24h] - int v20; // [esp+1Ch] [ebp-20h] - - v5 = *this; - v6 = *(*this - 3); - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a2, - v6); - if ( a4 > 536870910 - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::insert"); - if ( v5 <= (int *)Src && Src <= (char *)v5 + 2 * v6 && *(v5 - 1) <= 0 ) - { - v9 = Src - (char *)*this; - std::wstring::_M_mutate(this, a2, 0, a4); - v10 = 2 * a2; - v11 = (_WORD *)((char *)*this + v9); - v12 = (_WORD *)*this + a2; - v13 = &v11[a4]; - if ( v13 > v12 ) - { - if ( v11 < v12 ) - { - Size = v10 - v9; - v15 = (int)(v10 - v9) >> 1; - if ( v15 == 1 ) - { - *v12 = *v11; - } - else if ( v15 ) - { - v20 = v15; - v19 = Size; - memcpy(v12, v11, Size); - v15 = v20; - Size = v19; - } - v16 = a4 - v15; - v17 = &v12[a4]; - v18 = (_WORD *)((char *)v12 + Size); - if ( a4 - v15 == 1 ) - { - *v18 = *v17; - } - else if ( v16 ) - { - memcpy(v18, v17, 2 * v16); - } - } - else if ( a4 == 1 ) - { - *v12 = *v13; - } - else if ( a4 ) - { - memcpy(v12, &v11[a4], 2 * a4); - } - } - else if ( a4 == 1 ) - { - *v12 = *v11; - } - else if ( a4 ) - { - memcpy(v12, v11, 2 * a4); - } - return this; - } - std::wstring::_M_mutate(this, a2, 0, a4); - if ( !a4 ) - return this; - v7 = (_WORD *)*this + a2; - if ( a4 != 1 ) - { - memcpy(v7, Src, 2 * a4); - return this; - } - *v7 = *(_WORD *)Src; - return this; -} - -//----- (00498C20) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, int a2, char **a3) -{ - return std::wstring::insert(this, a2, *a3, *((_DWORD *)*a3 - 3)); -} - -//----- (00498C50) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, int a2, _DWORD *a3, unsigned int a4, unsigned int a5) -{ - unsigned int v5; // eax - - v5 = *(_DWORD *)(*a3 - 12) - a4; - if ( v5 > a5 ) - v5 = a5; - if ( a4 > *(_DWORD *)(*a3 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a4, - *(_DWORD *)(*a3 - 12)); - return std::wstring::insert(this, a2, (char *)(*a3 + 2 * a4), v5); -} - -//----- (00498CC0) -------------------------------------------------------- -int **__thiscall std::wstring::insert(int **this, unsigned int a2, unsigned int a3, __int16 a4) -{ - if ( a2 > *(*this - 3) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a2, - *(*this - 3)); - return std::wstring::_M_replace_aux(this, a2, 0, a3, a4); -} - -//----- (00498D20) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, int **a2) -{ - int *v3; // eax - - v3 = *a2; - if ( *(*a2 - 1) >= 0 ) - { - if ( *(v3 - 1) > 0 ) - std::wstring::_M_mutate(a2, 0, 0, 0); - v3 = *a2; - *(*a2 - 1) = -1; - } - *this = (char *)v3 + 2 * *(v3 - 3); - return this; -} - -//----- (00498D90) -------------------------------------------------------- -int *__thiscall std::wstring::resize(int *this, unsigned int a2) -{ - int *result; // eax - unsigned int v3; // edx - - result = (int *)a2; - v3 = *(_DWORD *)(*this - 12); - if ( a2 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::resize"); - if ( a2 > v3 ) - return std::wstring::append(this, a2 - v3, 0); - if ( a2 < v3 ) - return (int *)std::wstring::_M_mutate((int **)this, a2, v3 - a2, 0); - return result; -} - -//----- (00498E00) -------------------------------------------------------- -int *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3) -{ - int *result; // eax - unsigned int v4; // edx - - result = (int *)a2; - v4 = *(_DWORD *)(*this - 12); - if ( a2 > 0x1FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::resize"); - if ( a2 > v4 ) - return std::wstring::append(this, a2 - v4, a3); - if ( a2 < v4 ) - return (int *)std::wstring::_M_mutate((int **)this, a2, v4 - a2, 0); - return result; -} - -//----- (00498E80) -------------------------------------------------------- -int __cdecl std::wstring::_M_copy(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memcpy(a1, Src, 2 * Size); - } - return result; -} - -//----- (00498EC0) -------------------------------------------------------- -int __thiscall std::wstring::_M_data(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (00498ED0) -------------------------------------------------------- -int *__fastcall std::wstring::_M_leak(int **a1) -{ - int *result; // eax - - result = *a1; - if ( *(*a1 - 1) >= 0 ) - { - if ( *(result - 1) > 0 ) - std::wstring::_M_mutate(a1, 0, 0, 0); - result = *a1; - *(*a1 - 1) = -1; - } - return result; -} - -//----- (00498F20) -------------------------------------------------------- -int __cdecl std::wstring::_M_move(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memmove(a1, Src, 2 * Size); - } - return result; -} - -//----- (00498F60) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); -} - -//----- (00498F90) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String) -{ - unsigned int v5; // eax - - v5 = wcslen(String); - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, String, v5); -} - -//----- (00498FE0) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); -} - -//----- (00499010) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, unsigned int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, a5); -} - -//----- (00499030) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, *a4, *((_DWORD *)*a4 - 3)); -} - -//----- (00499070) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); -} - -//----- (004990A0) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (a5 - (int)a4) >> 1); -} - -//----- (004990D0) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD *a4, int a5) -{ - return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (2 * a5) >> 1); -} - -//----- (00499100) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, unsigned int a4, __int16 a5) -{ - unsigned int v6; // esi - int v7; // ebx - _WORD *v8; // ebx - - v6 = a4; - v7 = a2 - (_DWORD)*this; - if ( a4 > ((a3 - a2) >> 1) + 536870910 - *(*this - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::wstring::_M_mutate(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4); - if ( !a4 ) - return this; - v8 = (_WORD *)((char *)*this + v7); - if ( a4 != 1 ) - { - do - { - *v8++ = a5; - --v6; - } - while ( v6 ); - return this; - } - *v8 = a5; - return this; -} - -//----- (004991A0) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, wchar_t *String) -{ - unsigned int v5; // eax - - v5 = wcslen(String); - return std::wstring::replace(this, a2, a3, String, v5); -} - -//----- (004991E0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, _WORD *Src, unsigned int a5) -{ - int *v5; // edx - unsigned int v6; // eax - int v7; // ecx - int *v9; // edx - _WORD *v10; // eax - int v11; // eax - unsigned int Size; // [esp+18h] [ebp-60h] - int v13; // [esp+1Ch] [ebp-5Ch] - _DWORD *v14; // [esp+1Ch] [ebp-5Ch] - unsigned int v15; // [esp+20h] [ebp-58h] - int v16; // [esp+24h] [ebp-54h] - - v5 = *this; - v6 = *(*this - 3); - if ( a2 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - *(*this - 3)); - v7 = v6 - a2; - if ( v6 - a2 > a3 ) - v7 = a3; - v16 = v7; - if ( v7 - v6 + 536870910 < a5 ) - std::__throw_length_error((std::length_error *)"basic_string::replace"); - if ( v5 > (int *)Src || Src > (_WORD *)v5 + v6 || *(v5 - 1) > 0 ) - { - std::wstring::_M_mutate(this, a2, v7, a5); - if ( a5 ) - { - if ( a5 == 1 ) - *((_WORD *)*this + a2) = *Src; - else - memcpy((char *)*this + 2 * a2, Src, 2 * a5); - } - return this; - } - v9 = *this; - Size = 2 * a5; - v15 = 2 * a2; - if ( &Src[a5] <= (_WORD *)*this + a2 ) - { - v13 = ((char *)Src - (char *)v9) >> 1; -LABEL_15: - std::wstring::_M_mutate(this, a2, v7, a5); - v10 = (_WORD *)((char *)*this + v15); - if ( a5 == 1 ) - { - *v10 = *((_WORD *)*this + v13); - } - else if ( a5 ) - { - memcpy(v10, (char *)*this + 2 * v13, Size); - } - return this; - } - if ( Src >= (_WORD *)v9 + a2 + v7 ) - { - v13 = a5 + (((char *)Src - (char *)v9) >> 1) - v7; - goto LABEL_15; - } - v14 = std::wstring::_S_construct(Src, (int)&Src[a5]); - std::wstring::_M_mutate(this, a2, v16, a5); - if ( a5 ) - { - if ( a5 == 1 ) - *((_WORD *)*this + a2) = *(_WORD *)v14; - else - memcpy((char *)*this + v15, v14, Size); - } - if ( _CRT_MT ) - { - v11 = _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF); - } - else - { - v11 = *(v14 - 1); - *(v14 - 1) = v11 - 1; - } - if ( v11 <= 0 ) - operator delete(v14 - 3); - return this; -} -// 4994BA: positive sp value 4 has been found -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004994D0) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _WORD **a4) -{ - return std::wstring::replace(this, a2, a3, *a4, *((_DWORD *)*a4 - 3)); -} - -//----- (00499510) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, int a2, int a3, _DWORD *a4, unsigned int a5, unsigned int a6) -{ - unsigned int v6; // eax - - v6 = *(_DWORD *)(*a4 - 12) - a5; - if ( v6 > a6 ) - v6 = a6; - if ( a5 > *(_DWORD *)(*a4 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a5, - *(_DWORD *)(*a4 - 12)); - return std::wstring::replace(this, a2, a3, (_WORD *)(*a4 + 2 * a5), v6); -} - -//----- (00499580) -------------------------------------------------------- -int **__thiscall std::wstring::replace(int **this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 a5) -{ - unsigned int v5; // eax - - v5 = *(*this - 3) - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > *(*this - 3) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - *(*this - 3)); - return std::wstring::_M_replace_aux(this, a2, v5, a4, a5); -} - -//----- (004995F0) -------------------------------------------------------- -void __thiscall std::wstring::reserve(int *this, unsigned int a2) -{ - int v3; // ecx - unsigned int v4; // eax - unsigned int v5; // edx - int *v6; // ecx - _DWORD *v7; // esi - int v8; // eax - int v9; // edx - char v10[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = *this; - v4 = a2; - if ( a2 == *(_DWORD *)(v3 - 8) ) - { - if ( *(int *)(v3 - 4) <= 0 ) - return; - v3 = *this; - } - v5 = *(_DWORD *)(v3 - 12); - v6 = (int *)(v3 - 12); - if ( a2 < v5 ) - v4 = v5; - v7 = std::wstring::_Rep::_M_clone(v6, (int)v10, v4 - v5); - v8 = *this; - if ( _CRT_MT ) - { - v9 = _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF); - } - else - { - v9 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v9 - 1; - } - if ( v9 <= 0 ) - operator delete((void *)(v8 - 12)); - *this = (int)v7; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4995F0: using guessed type char var_D[13]; - -//----- (00499680) -------------------------------------------------------- -int __fastcall std::wstring::pop_back(int **a1) -{ - unsigned int v1; // eax - - v1 = *(*a1 - 3); - if ( v1 - 1 > v1 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - 0xFFFFFFFF, - 0); - return std::wstring::_M_mutate(a1, v1 - 1, 1, 0); -} - -//----- (004996E0) -------------------------------------------------------- -int __cdecl std::wstring::_M_assign(_WORD *a1, int a2, __int16 a3) -{ - int result; // eax - _WORD *v4; // edx - - result = a2; - v4 = a1; - if ( a2 == 1 ) - { - *a1 = a3; - } - else if ( a2 ) - { - do - { - *v4++ = a3; - --result; - } - while ( result ); - } - return result; -} - -//----- (00499720) -------------------------------------------------------- -int __thiscall std::wstring::_M_mutate(int **this, int a2, int a3, int a4) -{ - int *v5; // eax - int v6; // edi - unsigned int v7; // ecx - unsigned int v8; // ebx - int v9; // edi - _DWORD *v10; // eax - _DWORD *v11; // ecx - char *v12; // ebp - int *v13; // eax - _WORD *v14; // ecx - int v15; // edx - int result; // eax - void *v17; // [esp+18h] [ebp-34h] - _WORD *Src; // [esp+18h] [ebp-34h] - _DWORD *v19; // [esp+1Ch] [ebp-30h] - - v5 = *this; - v6 = *(*this - 3); - v7 = *(*this - 2); - v8 = v6 + a4 - a3; - v17 = (void *)(a2 + a3); - v9 = v6 - (a2 + a3); - if ( v8 > v7 ) - { -LABEL_4: - v10 = std::wstring::_Rep::_S_create(v8, v7); - v11 = v10; - if ( a2 ) - { - v13 = *this; - v12 = (char *)(v11 + 3); - if ( a2 == 1 ) - { - *((_WORD *)v11 + 6) = *(_WORD *)v13; - } - else - { - v19 = v11; - memcpy(v12, v13, 2 * a2); - v13 = *this; - v11 = v19; - } - } - else - { - v12 = (char *)(v10 + 3); - v13 = *this; - } - if ( v9 ) - { - Src = (_WORD *)v13 + (_DWORD)v17; - v14 = (_WORD *)v11 + a2 + a4 + 6; - if ( v9 == 1 ) - { - *v14 = *Src; - } - else - { - memcpy(v14, Src, 2 * v9); - v13 = *this; - } - } - if ( _CRT_MT ) - { - v15 = _InterlockedExchangeAdd(v13 - 1, 0xFFFFFFFF); - } - else - { - v15 = *(v13 - 1); - *(v13 - 1) = v15 - 1; - } - if ( v15 <= 0 ) - operator delete(v13 - 3); - *this = (int *)v12; - goto LABEL_14; - } - if ( *(v5 - 1) > 0 ) - { - v7 = *(*this - 2); - goto LABEL_4; - } - v12 = (char *)*this; - if ( v9 && a4 != a3 ) - { - if ( v9 == 1 ) - { - *(_WORD *)&v12[2 * a2 + 2 * a4] = *(_WORD *)&v12[2 * (_DWORD)v17]; - } - else - { - memmove(&v12[2 * a2 + 2 * a4], &v12[2 * (_DWORD)v17], 2 * v9); - v12 = (char *)*this; - } - } -LABEL_14: - result = 0; - *((_DWORD *)v12 - 1) = 0; - *((_DWORD *)v12 - 3) = v8; - *(_WORD *)&v12[2 * v8] = 0; - return result; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004998E0) -------------------------------------------------------- -int __thiscall std::wstring::push_back(int *this, __int16 a2) -{ - int v3; // edx - int v4; // ebx - int result; // eax - - v3 = *(_DWORD *)(*this - 12); - v4 = v3 + 1; - if ( (unsigned int)(v3 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::wstring::reserve(this, v3 + 1); - result = *this; - *(_WORD *)(result + 2 * *(_DWORD *)(*this - 12)) = a2; - *(_DWORD *)(result - 4) = 0; - *(_DWORD *)(result - 12) = v4; - *(_WORD *)(result + 2 * v4) = 0; - return result; -} - -//----- (00499930) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - char *v2; // eax - _WORD *result; // eax - - *this = *a2; - v2 = (char *)operator new(0xEu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (00499970) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) -{ - char *v3; // eax - _WORD *result; // eax - - *this = *a2; - v3 = (char *)operator new(0xEu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004999B0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) -{ - int v3; // eax - _DWORD *result; // eax - - v3 = -2; - if ( String ) - v3 = (int)&String[wcslen(String)]; - result = std::wstring::_S_construct(String, v3); - *this = result; - return result; -} - -//----- (00499A00) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, (int)&a2[a3]); - *this = result; - return result; -} - -//----- (00499A40) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - char *v3; // eax - _WORD *result; // eax - - v3 = (char *)operator new(0xEu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *this = result; - return result; -} - -//----- (00499A80) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - char v4[13]; // [esp+1Fh] [ebp-Dh] BYREF - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::wstring::_Rep::_M_clone(result - 3, (int)v4, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 499A80: using guessed type char var_D[13]; - -//----- (00499AF0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::wstring::_Rep::_M_clone(result - 3, a3, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (00499B60) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v5; // edx - _DWORD *result; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(*a2 + 2 * a3), *a2 + 2 * v5); - *this = result; - return result; -} - -//----- (00499BC0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) -{ - int v5; // ecx - unsigned int v6; // eax - int v7; // eax - _DWORD *result; // eax - - v5 = *a2; - v6 = *(_DWORD *)(*a2 - 12) - a3; - if ( v6 > a4 ) - v6 = a4; - v7 = v5 + 2 * (a3 + v6); - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(v5 + 2 * a3), v7); - *this = result; - return result; -} - -//----- (00499C30) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) -{ - int v6; // ecx - unsigned int v7; // eax - int v8; // eax - _DWORD *result; // eax - - v6 = *a2; - v7 = *(_DWORD *)(*a2 - 12) - a3; - if ( v7 > a4 ) - v7 = a4; - v8 = v6 + 2 * (a3 + v7); - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(v6 + 2 * a3), v8); - *this = result; - return result; -} - -//----- (00499CA0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, (int)&a2[a3]); - *this = result; - return result; -} - -//----- (00499CE0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, a3); - *this = result; - return result; -} - -//----- (00499D10) -------------------------------------------------------- -_WORD *__fastcall std::wstring::basic_string(_DWORD *a1) -{ - char *v2; // eax - _WORD *result; // eax - - v2 = (char *)operator new(0xEu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a1 = result; - return result; -} - -//----- (00499D50) -------------------------------------------------------- -int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - size_t Size; // esi - int v6; // ebp - _DWORD *v7; // ebx - void *v8; // ecx - int result; // eax - - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - memcpy(v8, Src, Size); - v8 = v7 + 3; - } - result = 0; - v7[2] = 0; - *v7 = v6; - *(_WORD *)((char *)v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (00499DE0) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // esi - int v6; // ebp - int *v7; // eax - int *v8; // ebx - _DWORD *v9; // ecx - int result; // eax - _DWORD *v11; // [esp+1Ch] [ebp-20h] - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7; - v9 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - v11 = v7 + 3; - memcpy(v7 + 3, Src, Size); - v9 = v11; - } - result = 0; - v8[2] = 0; - *v8 = v6; - *(_WORD *)((char *)v8 + Size + 12) = 0; - *this = v9; - return result; -} - -//----- (00499E90) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // esi - int v6; // ebp - int *v7; // eax - int *v8; // ebx - _DWORD *v9; // ecx - int result; // eax - _DWORD *v11; // [esp+1Ch] [ebp-20h] - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7; - v9 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - v11 = v7 + 3; - memcpy(v7 + 3, Src, Size); - v9 = v11; - } - result = 0; - v8[2] = 0; - *v8 = v6; - *(_WORD *)((char *)v8 + Size + 12) = 0; - *this = v9; - return result; -} - -//----- (00499F40) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - char *v2; // eax - _WORD *result; // eax - - *this = *a2; - v2 = (char *)operator new(0xEu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (00499F80) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) -{ - char *v3; // eax - _WORD *result; // eax - - *this = *a2; - v3 = (char *)operator new(0xEu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (00499FC0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) -{ - int v3; // eax - _DWORD *result; // eax - - v3 = -2; - if ( String ) - v3 = (int)&String[wcslen(String)]; - result = std::wstring::_S_construct(String, v3); - *this = result; - return result; -} - -//----- (0049A010) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, (int)&a2[a3]); - *this = result; - return result; -} - -//----- (0049A050) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - char *v3; // eax - _WORD *result; // eax - - v3 = (char *)operator new(0xEu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *this = result; - return result; -} - -//----- (0049A090) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - char v4[13]; // [esp+1Fh] [ebp-Dh] BYREF - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::wstring::_Rep::_M_clone(result - 3, (int)v4, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 49A090: using guessed type char var_D[13]; - -//----- (0049A100) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::wstring::_Rep::_M_clone(result - 3, a3, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0049A170) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v5; // edx - _DWORD *result; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(*a2 + 2 * a3), *a2 + 2 * v5); - *this = result; - return result; -} - -//----- (0049A1D0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) -{ - int v5; // ecx - unsigned int v6; // eax - int v7; // eax - _DWORD *result; // eax - - v5 = *a2; - v6 = *(_DWORD *)(*a2 - 12) - a3; - if ( v6 > a4 ) - v6 = a4; - v7 = v5 + 2 * (a3 + v6); - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(v5 + 2 * a3), v7); - *this = result; - return result; -} - -//----- (0049A240) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) -{ - int v6; // ecx - unsigned int v7; // eax - int v8; // eax - _DWORD *result; // eax - - v6 = *a2; - v7 = *(_DWORD *)(*a2 - 12) - a3; - if ( v7 > a4 ) - v7 = a4; - v8 = v6 + 2 * (a3 + v7); - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::wstring::_S_construct((_WORD *)(v6 + 2 * a3), v8); - *this = result; - return result; -} - -//----- (0049A2B0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, (int)&a2[a3]); - *this = result; - return result; -} - -//----- (0049A2F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) -{ - _DWORD *result; // eax - - result = std::wstring::_S_construct(a2, a3); - *this = result; - return result; -} - -//----- (0049A320) -------------------------------------------------------- -_WORD *__fastcall std::wstring::basic_string(_DWORD *a1) -{ - char *v2; // eax - _WORD *result; // eax - - v2 = (char *)operator new(0xEu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a1 = result; - return result; -} - -//----- (0049A360) -------------------------------------------------------- -int __thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - size_t Size; // esi - int v6; // ebp - _DWORD *v7; // ebx - void *v8; // ecx - int result; // eax - - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - memcpy(v8, Src, Size); - v8 = v7 + 3; - } - result = 0; - v7[2] = 0; - *v7 = v6; - *(_WORD *)((char *)v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (0049A3F0) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // esi - int v6; // ebp - int *v7; // eax - int *v8; // ebx - _DWORD *v9; // ecx - int result; // eax - _DWORD *v11; // [esp+1Ch] [ebp-20h] - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7; - v9 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - v11 = v7 + 3; - memcpy(v7 + 3, Src, Size); - v9 = v11; - } - result = 0; - v8[2] = 0; - *v8 = v6; - *(_WORD *)((char *)v8 + Size + 12) = 0; - *this = v9; - return result; -} - -//----- (0049A4A0) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // esi - int v6; // ebp - int *v7; // eax - int *v8; // ebx - _DWORD *v9; // ecx - int result; // eax - _DWORD *v11; // [esp+1Ch] [ebp-20h] - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - v7 = std::wstring::_Rep::_S_create(v6, 0); - v8 = v7; - v9 = v7 + 3; - if ( v6 == 1 ) - { - *((_WORD *)v7 + 6) = *Src; - } - else if ( v6 ) - { - v11 = v7 + 3; - memcpy(v7 + 3, Src, Size); - v9 = v11; - } - result = 0; - v8[2] = 0; - *v8 = v6; - *(_WORD *)((char *)v8 + Size + 12) = 0; - *this = v9; - return result; -} - -//----- (0049A550) -------------------------------------------------------- -void __fastcall std::wstring::~wstring(int *a1) -{ - int v1; // eax - int v2; // edx - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)(v1 - 12)); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0049A590) -------------------------------------------------------- -void __fastcall std::wstring::~wstring(int *a1) -{ - int v1; // eax - int v2; // edx - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)(v1 - 12)); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (0049A5D0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, int *a2) -{ - _DWORD *result; // eax - int v3; // edx - int v4; // ecx - - result = this; - v3 = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - v4 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *result = v4; - *a2 = v3; - return result; -} - -//----- (0049A610) -------------------------------------------------------- -int **__thiscall std::wstring::operator=(int **this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::assign(this, (char *)String, v3); -} - -//----- (0049A640) -------------------------------------------------------- -int *__thiscall std::wstring::operator=(int *this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - int v5; // edx - char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = (_DWORD *)*a2; - if ( *this != *a2 ) - { - if ( (int)*(v3 - 1) < 0 ) - { - v3 = std::wstring::_Rep::_M_clone(v3 - 3, (int)v7, 0); - v4 = *this; - if ( !_CRT_MT ) - goto LABEL_6; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(v3 - 1, 1u); - else - ++*(v3 - 1); - v4 = *this; - if ( !_CRT_MT ) - { -LABEL_6: - v5 = *(_DWORD *)(v4 - 4); - *(_DWORD *)(v4 - 4) = v5 - 1; - if ( v5 > 0 ) - { -LABEL_7: - *this = (int)v3; - return this; - } -LABEL_11: - operator delete((void *)(v4 - 12)); - *this = (int)v3; - return this; - } - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v4 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - goto LABEL_11; - } - return this; -} -// 50B0F0: using guessed type int _CRT_MT; -// 49A640: using guessed type char var_D[13]; - -//----- (0049A6F0) -------------------------------------------------------- -int **__thiscall std::wstring::operator=(int **this, char *a2, int a3) -{ - std::wstring::assign(this, a2, a3); - return this; -} - -//----- (0049A720) -------------------------------------------------------- -int **__thiscall std::wstring::operator=(int **this, __int16 a2) -{ - std::wstring::_M_mutate(this, 0, *(*this - 3), 1); - *(_WORD *)*this = a2; - return this; -} - -//----- (0049A760) -------------------------------------------------------- -char *__thiscall std::wstring::operator[](int **this, int a2) -{ - int *v2; // eax - int *v5; // eax - - v2 = *this; - if ( *(*this - 1) < 0 ) - return (char *)v2 + 2 * a2; - if ( *(v2 - 1) > 0 ) - std::wstring::_M_mutate(this, 0, 0, 0); - v5 = *this; - *(v5 - 1) = -1; - return (char *)v5 + 2 * a2; -} - -//----- (0049A7C0) -------------------------------------------------------- -unsigned int *__thiscall std::wstring::operator+=(unsigned int *this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::append(this, (char *)String, v3); -} - -//----- (0049A810) -------------------------------------------------------- -int *__thiscall std::wstring::operator+=(int *this, __int16 a2) -{ - int v3; // edx - int v4; // esi - int v5; // eax - - v3 = *(_DWORD *)(*this - 12); - v4 = v3 + 1; - if ( (unsigned int)(v3 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::wstring::reserve(this, v3 + 1); - v5 = *this; - *(_WORD *)(v5 + 2 * *(_DWORD *)(*this - 12)) = a2; - *(_DWORD *)(v5 - 4) = 0; - *(_DWORD *)(v5 - 12) = v4; - *(_WORD *)(v5 + 2 * v4) = 0; - return this; -} - -//----- (0049A870) -------------------------------------------------------- -void __userpurge std::iostream::swap(_DWORD *a1@, std::iostream *this, std::iostream *a3) -{ - std::ios_base **v4; // esi - std::ios_base *v5; // ebx - std::ios_base *v6; // edx - char v7; // cl - char v8; // cl - int v9; // edx - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v4 = (std::ios_base **)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = (std::iostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - std::ios_base::_M_swap(v4, v5, v10); - std::ios::_M_cache_locale(v4, (int)(v4 + 27)); - std::ios::_M_cache_locale(v5, (int)v5 + 108); - v6 = v4[28]; - v4[28] = (std::ios_base *)*((_DWORD *)v5 + 28); - *((_DWORD *)v5 + 28) = v6; - v7 = *((_BYTE *)v4 + 116); - *((_BYTE *)v4 + 116) = *((_BYTE *)v5 + 116); - LOBYTE(v6) = *((_BYTE *)v5 + 117); - *((_BYTE *)v5 + 116) = v7; - v8 = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 117) = (_BYTE)v6; - v9 = a1[1]; - *((_BYTE *)v5 + 117) = v8; - a1[1] = *((_DWORD *)this + 1); - *((_DWORD *)this + 1) = v9; -} -// 49A8AD: variable 'v10' is possibly undefined - -//----- (0049A930) -------------------------------------------------------- -void __thiscall std::iostream::iostream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 3; - std::ios_base::ios_base(this + 3); - *((_WORD *)this + 64) = 0; - v2 = a2[1]; - *this = &unk_515900; - this[1] = v2; - this[31] = 0; - v3 = *a2; - this[33] = 0; - this[34] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[3] = &unk_515914; - this[35] = 0; - this[36] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 30)); - this[33] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[31] = v5; - *((_WORD *)this + 64) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; - *this = &off_51A7B4; - this[3] = off_51A7DC; - this[2] = off_51A7C8; -} -// 49A9D2: variable 'v6' is possibly undefined -// 51A7B4: using guessed type void (__cdecl *off_51A7B4)(std::iostream *__hidden this); -// 51A7C8: using guessed type void (__cdecl *off_51A7C8[2])(std::iostream *__hidden this); -// 51A7DC: using guessed type void (__cdecl *off_51A7DC[2])(std::iostream *__hidden this); - -//----- (0049AA80) -------------------------------------------------------- -void __thiscall std::iostream::iostream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+14h] [ebp-44h] - - v2 = this + 3; - std::ios_base::ios_base(this + 3); - this[31] = 0; - *((_WORD *)this + 64) = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - *this = &unk_515900; - this[3] = &unk_515914; - this[1] = 0; - std::ios::init((int)v2, a2); - this[2] = &unk_515928; - this[3] = &unk_51593C; - std::ios::init((int)v2, a2); - *this = &off_51A7B4; - this[3] = off_51A7DC; - this[2] = off_51A7C8; -} -// 51A7B4: using guessed type void (__cdecl *off_51A7B4)(std::iostream *__hidden this); -// 51A7C8: using guessed type void (__cdecl *off_51A7C8[2])(std::iostream *__hidden this); -// 51A7DC: using guessed type void (__cdecl *off_51A7DC[2])(std::iostream *__hidden this); - -//----- (0049ABC0) -------------------------------------------------------- -void __fastcall std::iostream::iostream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 12; - std::ios_base::ios_base((_DWORD *)(a1 + 12)); - *(_DWORD *)(a1 + 124) = 0; - *(_WORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)(a1 + 144) = 0; - *(_DWORD *)a1 = &unk_515900; - *(_DWORD *)(a1 + 12) = &unk_515914; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_515928; - *(_DWORD *)(a1 + 12) = &unk_51593C; - std::ios::init(v1, 0); - *(_DWORD *)a1 = &off_51A7B4; - *(_DWORD *)(a1 + 12) = off_51A7DC; - *(_DWORD *)(a1 + 8) = off_51A7C8; -} -// 51A7B4: using guessed type void (__cdecl *off_51A7B4)(std::iostream *__hidden this); -// 51A7C8: using guessed type void (__cdecl *off_51A7C8[2])(std::iostream *__hidden this); -// 51A7DC: using guessed type void (__cdecl *off_51A7DC[2])(std::iostream *__hidden this); - -//----- (0049AD00) -------------------------------------------------------- -int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - char *v5; // edi - int v6; // edx - __int16 v7; // ax - int v8; // eax - int v9; // edx - int v10; // eax - int v11; // edx - int result; // eax - std::ios_base *v13; // [esp+4h] [ebp-38h] - std::ios_base *v14; // [esp+1Ch] [ebp-20h] - - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; - this[1] = a3[1]; - v5 = (char *)this + *(_DWORD *)(v4 - 12); - v14 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v5, v14, v13); - std::ios::_M_cache_locale(v5, (int)(v5 + 108)); - *((_DWORD *)v5 + 30) = 0; - v6 = *((_DWORD *)v14 + 28); - *((_DWORD *)v14 + 28) = 0; - v7 = *((_WORD *)v14 + 58); - *((_DWORD *)v5 + 28) = v6; - *((_WORD *)v5 + 58) = v7; - v8 = a2[3]; - a3[1] = 0; - v9 = a2[4]; - this[2] = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v9; - v10 = *a2; - v11 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - result = a2[6]; - this[2] = result; - return result; -} -// 49AD3B: variable 'v13' is possibly undefined - -//----- (0049ADB0) -------------------------------------------------------- -void __thiscall std::iostream::iostream(int *this, int *a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - _DWORD *v8; // ecx - int v9; // eax - int v10; // edx - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v4 - 12), a3); - v7 = a2[3]; - this[2] = v7; - v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); - *v8 = a2[4]; - std::ios::init((int)v8, a3); - v9 = *a2; - v10 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; - this[2] = a2[6]; -} - -//----- (0049AEB0) -------------------------------------------------------- -void __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - - v3 = *((_DWORD *)this + 1); - v4 = *((_DWORD *)this + 2); - v5 = *(_DWORD *)(v3 - 12); - *ecx0 = v3; - *(_DWORD *)((char *)ecx0 + v5) = v4; - ecx0[1] = 0; - std::ios::init((int)ecx0 + *(_DWORD *)(v3 - 12), 0); - v6 = *((_DWORD *)this + 3); - ecx0[2] = v6; - v7 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v6 - 12) + 8); - *v7 = *((_DWORD *)this + 4); - std::ios::init((int)v7, 0); - v8 = *(_DWORD *)this; - v9 = *((_DWORD *)this + 5); - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v8 - 12)) = v9; - ecx0[2] = *((_DWORD *)this + 6); -} - -//----- (0049AFB0) -------------------------------------------------------- -void __fastcall std::iostream::~iostream(_DWORD *a1) -{ - _DWORD *v2; // ecx - - v2 = a1 + 3; - *(v2 - 1) = &unk_515928; - *(v2 - 3) = &unk_515900; - *(v2 - 2) = 0; - *v2 = &off_51B7D0; - std::ios_base::~ios_base((int)v2); - operator delete(a1); -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (0049AFF0) -------------------------------------------------------- -void __fastcall std::iostream::~iostream(int a1) -{ - _DWORD *v1; // ecx - - *(_DWORD *)(a1 + 8) = &unk_515928; - v1 = (_DWORD *)(a1 + 12); - *(v1 - 3) = &unk_515900; - *(v1 - 2) = 0; - *v1 = &off_51B7D0; - std::ios_base::~ios_base((int)v1); -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (0049B020) -------------------------------------------------------- -void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this) -{ - int v2; // edx - int v3; // edx - int v4; // edx - - v2 = *(_DWORD *)this; - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 5); - ecx0[2] = *((_DWORD *)this + 6); - v3 = *((_DWORD *)this + 3); - ecx0[2] = v3; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12) + 8) = *((_DWORD *)this + 4); - v4 = *((_DWORD *)this + 1); - *ecx0 = v4; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v4 - 12)) = *((_DWORD *)this + 2); - ecx0[1] = 0; -} - -//----- (0049B070) -------------------------------------------------------- -_DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - return this; -} -// 49B0AD: variable 'v10' is possibly undefined - -//----- (0049B130) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 48))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49B17A: variable 'v5' is possibly undefined -// 49B130: using guessed type int var_1C[7]; - -//----- (0049B2F0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 8))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49B33A: variable 'v5' is possibly undefined -// 49B2F0: using guessed type int var_1C[7]; - -//----- (0049B4B0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 40))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49B4FA: variable 'v5' is possibly undefined -// 49B4B0: using guessed type int var_1C[7]; - -//----- (0049B670) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 44))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49B6BA: variable 'v5' is possibly undefined -// 49B670: using guessed type int var_1C[7]; - -//----- (0049B830) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 36))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49B87A: variable 'v5' is possibly undefined -// 49B830: using guessed type int var_1C[7]; - -//----- (0049B9F0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 20))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49BA3A: variable 'v5' is possibly undefined -// 49B9F0: using guessed type int var_1C[7]; - -//----- (0049BBB0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49BBFA: variable 'v5' is possibly undefined -// 49BBB0: using guessed type int var_1C[7]; - -//----- (0049BD70) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 24))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49BDBA: variable 'v5' is possibly undefined -// 49BD70: using guessed type int var_1C[7]; - -//----- (0049BF30) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 16))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49BF7A: variable 'v5' is possibly undefined -// 49BF30: using guessed type int var_1C[7]; - -//----- (0049C0F0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 28))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49C13A: variable 'v5' is possibly undefined -// 49C0F0: using guessed type int var_1C[7]; - -//----- (0049C2B0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+6Bh] [ebp-1Dh] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8[0] = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 32))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - v8, - a2); - if ( v8[0] ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8[0]); - } - return this; -} -// 49C2FA: variable 'v5' is possibly undefined -// 49C2B0: using guessed type int var_1C[7]; - -//----- (0049C470) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::get@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - int a4) -{ - int v4; // eax - _BYTE *v5; // esi - unsigned __int8 v7; // al - int (__stdcall *v9)(unsigned __int8); // edx - char v10; // [esp+Ch] [ebp-10h] - - v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v5 = *(_BYTE **)((char *)a1 + v4 + 124); - if ( !v5 ) - std::__throw_bad_cast(); - if ( v5[28] ) - { - v7 = v5[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); - v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); - v7 = 10; - if ( v9 != std::ctype::do_widen ) - v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); - } - return std::istream::get(a1, this, a3, v7, v10); -} -// 49C4A3: variable 'v10' is possibly undefined - -//----- (0049C4F0) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::get@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - unsigned __int8 a4, - char a5) -{ - int v6; // edx - unsigned __int8 *v7; // eax - int v8; // eax - unsigned __int8 *v9; // eax - unsigned int v10; // edx - unsigned int v11; // eax - bool v12; // [esp+8h] [ebp-80h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - char v15[25]; // [esp+6Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v15, a1, (std::istream *)1, v12); - if ( !v15[0] ) - { - if ( (int)a3 > 0 ) - *(_BYTE *)this = 0; - goto LABEL_4; - } - lpuexcpt = *(struct _Unwind_Exception **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v7 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v7 < *((_DWORD *)lpuexcpt + 3) ) - { - v8 = *v7; - if ( (int)a3 <= *((_DWORD *)a1 + 1) + 1 ) - goto LABEL_7; - goto LABEL_13; - } - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v6 = *((_DWORD *)a1 + 1); - if ( (int)a3 <= v6 + 1 ) - { -LABEL_6: - if ( v8 != -1 ) - goto LABEL_7; - } - else if ( v8 != -1 ) - { -LABEL_13: - if ( a4 != v8 ) - { - while ( 1 ) - { - this = (std::istream *)((char *)this + 1); - *((_BYTE *)this - 1) = v8; - v10 = *((_DWORD *)lpuexcpt + 3); - ++*((_DWORD *)a1 + 1); - v11 = *((_DWORD *)lpuexcpt + 2); - if ( v11 < v10 ) - { - v9 = (unsigned __int8 *)(v11 + 1); - *((_DWORD *)lpuexcpt + 2) = v9; - } - else - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_21; - v9 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - v10 = *((_DWORD *)lpuexcpt + 3); - } - if ( (unsigned int)v9 >= v10 ) - { - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v6 = *((_DWORD *)a1 + 1); - if ( v6 + 1 >= (int)a3 ) - goto LABEL_6; - if ( v8 == -1 ) - { -LABEL_21: - if ( (int)a3 > 0 ) - { - v6 = 2; - *(_BYTE *)this = 0; - if ( *((_DWORD *)a1 + 1) ) - goto LABEL_10; - goto LABEL_23; - } - if ( !*((_DWORD *)a1 + 1) ) - { - v6 = 2; -LABEL_23: - v6 |= 4u; - goto LABEL_10; - } -LABEL_33: - v6 = 2; - goto LABEL_10; - } - } - else - { - v8 = *v9; - v6 = *((_DWORD *)a1 + 1); - if ( v6 + 1 >= (int)a3 ) - break; - } - if ( v8 == a4 ) - { - if ( (int)a3 > 0 ) - { - *(_BYTE *)this = 0; - v6 = *((_DWORD *)a1 + 1); - } - if ( !v6 ) - goto LABEL_23; - return a1; - } - } - } -LABEL_7: - if ( (int)a3 > 0 ) - { - *(_BYTE *)this = 0; - if ( *((_DWORD *)a1 + 1) ) - return a1; - goto LABEL_9; - } -LABEL_4: - if ( *((_DWORD *)a1 + 1) ) - return a1; -LABEL_9: - v6 = 4; - goto LABEL_10; - } - if ( (int)a3 <= 0 ) - { - if ( v6 ) - goto LABEL_33; - } - else - { - *(_BYTE *)this = 0; - if ( *((_DWORD *)a1 + 1) ) - goto LABEL_33; - } - v6 = 6; -LABEL_10: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v6); - return a1; -} -// 49C547: variable 'v12' is possibly undefined -// 49C4F0: using guessed type char var_19[25]; - -//----- (0049C850) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2) -{ - int v2; // eax - _BYTE *v3; // esi - unsigned __int8 v5; // al - int (__stdcall *v7)(unsigned __int8); // edx - - v2 = *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *(_BYTE **)((char *)this + v2 + 124); - if ( !v3 ) - std::__throw_bad_cast(); - if ( v3[28] ) - { - v5 = v3[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)this + v2 + 124)); - v7 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); - v5 = 10; - if ( v7 != std::ctype::do_widen ) - v5 = ((int (__thiscall *)(_BYTE *, int))v7)(v3, 10); - } - return std::istream::get(this, a2, v5); -} - -//----- (0049C8D0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3) -{ - int v3; // eax - unsigned __int8 *v5; // eax - int v6; // edx - int v7; // eax - unsigned int v8; // edx - unsigned int v9; // eax - unsigned __int8 *v10; // eax - int v11; // edx - _BYTE *v12; // edx - bool v13; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v16[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)this + 1) = 0; - std::istream::sentry::sentry(v16, this, (std::istream *)1, v13); - if ( v16[0] ) - { - lpuexcpt = *(struct _Unwind_Exception **)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 120); - v5 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v7 = (unsigned __int8)v6; - if ( v6 == -1 ) - { -LABEL_20: - v3 = *((_DWORD *)this + 1) == 0 ? 6 : 2; - goto LABEL_4; - } - } - else - { - v6 = *v5; - v7 = v6; - } - if ( v6 != a3 ) - { - do - { - v12 = (_BYTE *)a2[5]; - if ( (unsigned int)v12 < a2[6] ) - { - *v12 = v7; - ++a2[5]; - } - else if ( (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v7) == -1 ) - { - break; - } - ++*((_DWORD *)this + 1); - v8 = *((_DWORD *)lpuexcpt + 3); - v9 = *((_DWORD *)lpuexcpt + 2); - if ( v9 >= v8 ) - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_20; - v10 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - } - else - { - v10 = (unsigned __int8 *)(v9 + 1); - *((_DWORD *)lpuexcpt + 2) = v10; - } - if ( (unsigned int)v10 >= v8 ) - { - v11 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v7 = (unsigned __int8)v11; - if ( v11 == -1 ) - goto LABEL_20; - } - else - { - v7 = *v10; - v11 = (unsigned __int8)v7; - } - } - while ( a3 != v11 ); - } - } - if ( !*((_DWORD *)this + 1) ) - { - v3 = 4; -LABEL_4: - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v3); - } - return this; -} -// 49C927: variable 'v13' is possibly undefined -// 49C8D0: using guessed type char var_19[25]; - -//----- (0049CB60) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3) -{ - int v3; // eax - _DWORD *v5; // ecx - char *v6; // eax - char v7; // dl - int v8; // eax - bool v9; // [esp+8h] [ebp-70h] - char v11[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v11, a1, (std::istream *)1, v9); - if ( v11[0] ) - { - v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v6 = (char *)v5[2]; - if ( (unsigned int)v6 >= v5[3] ) - { - v8 = (*(int (__fastcall **)(_DWORD *))(*v5 + 40))(v5); - if ( v8 == -1 ) - { - v3 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; - goto LABEL_4; - } - v7 = v8; - } - else - { - v7 = *v6; - v5[2] = v6 + 1; - } - *((_DWORD *)a1 + 1) = 1; - *(_BYTE *)this = v7; - if ( *((_DWORD *)a1 + 1) ) - return a1; -LABEL_3: - v3 = 4; -LABEL_4: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v3); - return a1; - } - if ( !*((_DWORD *)a1 + 1) ) - goto LABEL_3; - return a1; -} -// 49CBB1: variable 'v9' is possibly undefined -// 49CB60: using guessed type char var_19[25]; - -//----- (0049CD30) -------------------------------------------------------- -int __fastcall std::istream::get(std::istream::sentry *a1) -{ - _DWORD *v1; // ecx - unsigned __int8 *v2; // eax - struct _Unwind_Exception *v3; // edi - int v5; // eax - bool v6; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v9[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v9, a1, (std::istream *)1, v6); - if ( !v9[0] ) - { - if ( *((_DWORD *)a1 + 1) ) - return -1; - v5 = 4; -LABEL_8: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v5); - return -1; - } - v1 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v2 = (unsigned __int8 *)v1[2]; - if ( (unsigned int)v2 >= v1[3] ) - { - lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(_DWORD *))(*v1 + 40))(v1); - if ( lpuexcpt != (struct _Unwind_Exception *)-1 ) - goto LABEL_4; - v5 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; - goto LABEL_8; - } - v3 = (struct _Unwind_Exception *)*v2; - v1[2] = v2 + 1; - lpuexcpt = v3; -LABEL_4: - *((_DWORD *)a1 + 1) = 1; - return (int)lpuexcpt; -} -// 49CD81: variable 'v6' is possibly undefined -// 49CD30: using guessed type char var_19[25]; - -//----- (0049CEF0) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::istream::peek(std::istream::sentry *a1) -{ - _DWORD *v1; // ecx - unsigned __int8 *v2; // eax - bool v4; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v7[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v7, a1, (std::istream *)1, v4); - if ( !v7[0] ) - return (struct _Unwind_Exception *)-1; - v1 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v2 = (unsigned __int8 *)v1[2]; - if ( (unsigned int)v2 < v1[3] ) - return (struct _Unwind_Exception *)*v2; - lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(_DWORD *))(*v1 + 36))(v1); - if ( lpuexcpt == (struct _Unwind_Exception *)-1 ) - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); - return lpuexcpt; -} -// 49CF41: variable 'v4' is possibly undefined -// 49CEF0: using guessed type char var_19[25]; - -//----- (0049D090) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::read@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - int a4) -{ - int v4; // ecx - char *v5; // eax - bool v7; // [esp+8h] [ebp-70h] - char v9[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v9, a1, (std::istream *)1, v7); - if ( v9[0] ) - { - v4 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v5 = (char *)(*(int (__thiscall **)(int, std::istream *, char *))(*(_DWORD *)v4 + 32))(v4, this, a3); - *((_DWORD *)a1 + 1) = v5; - if ( a3 != v5 ) - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); - } - return a1; -} -// 49D0E1: variable 'v7' is possibly undefined -// 49D090: using guessed type char var_19[25]; - -//----- (0049D220) -------------------------------------------------------- -void __userpurge std::istream::swap(_DWORD *a1@, std::istream *this, std::istream *a3) -{ - std::ios_base **v4; // esi - std::ios_base *v5; // ebx - std::ios_base *v6; // edx - char v7; // cl - char v8; // cl - int v9; // edx - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v4 = (std::ios_base **)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = (std::istream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - std::ios_base::_M_swap(v4, v5, v10); - std::ios::_M_cache_locale(v4, (int)(v4 + 27)); - std::ios::_M_cache_locale(v5, (int)v5 + 108); - v6 = v4[28]; - v4[28] = (std::ios_base *)*((_DWORD *)v5 + 28); - *((_DWORD *)v5 + 28) = v6; - v7 = *((_BYTE *)v4 + 116); - *((_BYTE *)v4 + 116) = *((_BYTE *)v5 + 116); - LOBYTE(v6) = *((_BYTE *)v5 + 117); - *((_BYTE *)v5 + 116) = v7; - v8 = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 117) = (_BYTE)v6; - v9 = a1[1]; - *((_BYTE *)v5 + 117) = v8; - a1[1] = *((_DWORD *)this + 1); - *((_DWORD *)this + 1) = v9; -} -// 49D25D: variable 'v10' is possibly undefined - -//----- (0049D2E0) -------------------------------------------------------- -int __fastcall std::istream::sync(std::istream::sentry *a1) -{ - int v1; // ecx - bool v3; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::istream::sentry::sentry(v6, a1, (std::istream *)1, v3); - if ( !v6[0] ) - return -1; - v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - if ( !v1 ) - return -1; - lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1); - if ( lpuexcpt != (struct _Unwind_Exception *)-1 ) - return 0; - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - return (int)lpuexcpt; -} -// 49D32A: variable 'v3' is possibly undefined -// 49D2E0: using guessed type char var_19[25]; - -//----- (0049D470) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5) -{ - char *v5; // edi - _DWORD *v6; // eax - int v7; // edi - void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax - _DWORD *v10; // [esp+0h] [ebp-B8h] - bool v11; // [esp+8h] [ebp-B0h] - char v13; // [esp+7Fh] [ebp-39h] BYREF - int v14[14]; // [esp+80h] [ebp-38h] BYREF - - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); - std::istream::sentry::sentry(&v13, this, (std::istream *)1, v11); - if ( v13 ) - { - v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (v5[20] & 5) == 0 ) - { - v6 = (_DWORD *)*((_DWORD *)v5 + 30); - v7 = *v6; - v14[6] = a4; - v10 = v6; - v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); - v14[4] = a2; - v14[5] = a3; - v14[7] = a5; - v8(v14, v10, a2, a3, a4, a5, 8); - if ( (v14[0] & v14[1]) == -1 ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); - } - } - return this; -} -// 49D4FF: variable 'v11' is possibly undefined - -//----- (0049D6B0) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4) -{ - char *v4; // edi - bool v6; // [esp+8h] [ebp-90h] - char v8; // [esp+6Fh] [ebp-29h] BYREF - int v9[10]; // [esp+70h] [ebp-28h] BYREF - - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); - std::istream::sentry::sentry(&v8, this, (std::istream *)1, v6); - if ( v8 ) - { - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (v4[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( - v9, - *((_DWORD *)v4 + 30), - a2, - a3, - a4, - 8); - if ( (v9[0] & v9[1]) == -1 ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); - } - } - return this; -} -// 49D724: variable 'v6' is possibly undefined - -//----- (0049D880) -------------------------------------------------------- -_DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this) -{ - char *v2; // esi - bool v4; // [esp+8h] [ebp-90h] - char v6; // [esp+6Fh] [ebp-29h] BYREF - int v7[10]; // [esp+70h] [ebp-28h] BYREF - - *ecx0 = -1; - ecx0[1] = -1; - ecx0[2] = 0; - std::istream::sentry::sentry(&v6, this, (std::istream *)1, v4); - if ( v6 ) - { - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (v2[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v2 + 30) + 16))( - v7, - *((_DWORD *)v2 + 30), - 0, - 0, - 1, - 8); - *ecx0 = v7[0]; - ecx0[1] = v7[1]; - ecx0[2] = v7[2]; - } - } - return ecx0; -} -// 49D8E4: variable 'v4' is possibly undefined - -//----- (0049DA30) -------------------------------------------------------- -std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *a1) -{ - int v2; // eax - _DWORD *v3; // ecx - _DWORD *v4; // eax - unsigned int v5; // eax - bool v7; // [esp+8h] [ebp-70h] - char v9[25]; // [esp+5Fh] [ebp-19h] BYREF - - v2 = *(_DWORD *)a1; - *((_DWORD *)a1 + 1) = 0; - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), - *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); - std::istream::sentry::sentry(v9, a1, (std::istream *)1, v7); - if ( v9[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - if ( v3 ) - { - v5 = v3[2]; - if ( v3[1] < v5 ) - { - v3[2] = v5 - 1; - return a1; - } - if ( (*(int (__thiscall **)(_DWORD *, int))(*v3 + 44))(v3, -1) != -1 ) - return a1; - v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - } - std::ios::clear(v4, v4[5] | 1); - } - return a1; -} -// 49DA9C: variable 'v7' is possibly undefined -// 49DA30: using guessed type char var_19[25]; - -//----- (0049DBE0) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::ignore@( - std::istream::sentry *a1@, - std::istream *this, - int a3) -{ - unsigned __int8 *v4; // eax - int v5; // edx - int i; // eax - unsigned int v7; // ebx - unsigned int v8; // edx - int v9; // ecx - unsigned __int8 *v10; // edx - unsigned __int8 *v11; // edx - bool v12; // [esp+8h] [ebp-80h] - _DWORD *v13; // [esp+1Ch] [ebp-6Ch] - char v14; // [esp+23h] [ebp-65h] - char lpuexcpt; // [esp+24h] [ebp-64h] - std::istream::sentry *v16; // [esp+28h] [ebp-60h] - char v17[25]; // [esp+6Fh] [ebp-19h] BYREF - - v16 = a1; - if ( this == (std::istream *)1 ) - return std::istream::ignore(a1); - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v17, a1, (std::istream *)1, v12); - if ( (int)this > 0 ) - { - lpuexcpt = v17[0]; - if ( v17[0] ) - { - v13 = *(_DWORD **)((char *)v16 + *(_DWORD *)(*(_DWORD *)v16 - 12) + 120); - v4 = (unsigned __int8 *)v13[2]; - if ( (unsigned int)v4 >= v13[3] ) - v5 = (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13); - else - v5 = *v4; - v14 = 0; - for ( i = *((_DWORD *)v16 + 1); ; i = 0x80000000 ) - { - while ( 2 ) - { - if ( (int)this > i ) - { - while ( 1 ) - { - if ( v5 == -1 ) - goto LABEL_23; - v7 = v13[3]; - v8 = v13[2]; - v9 = (int)this - i; - if ( (int)this - i > (int)(v7 - v8) ) - v9 = v13[3] - v8; - if ( v9 <= 1 ) - break; - v10 = (unsigned __int8 *)(v9 + v8); - i += v9; - v13[2] = v10; - *((_DWORD *)v16 + 1) = i; - if ( v7 <= (unsigned int)v10 ) - goto LABEL_26; - v5 = *v10; - if ( (int)this <= i ) - goto LABEL_16; - } - *((_DWORD *)v16 + 1) = i + 1; - if ( v8 >= v7 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v13 + 40))(v13) == -1 ) - { -LABEL_23: - if ( v14 ) - *((_DWORD *)v16 + 1) = 0x7FFFFFFF; - goto LABEL_25; - } - v11 = (unsigned __int8 *)v13[2]; - v7 = v13[3]; - } - else - { - v11 = (unsigned __int8 *)(v8 + 1); - v13[2] = v11; - } - if ( v7 > (unsigned int)v11 ) - { - v5 = *v11; - i = *((_DWORD *)v16 + 1); - continue; - } -LABEL_26: - v5 = (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13); - i = *((_DWORD *)v16 + 1); - continue; - } - break; - } -LABEL_16: - if ( this != (std::istream *)0x7FFFFFFF ) - break; - if ( v5 == -1 ) - goto LABEL_23; - *((_DWORD *)v16 + 1) = 0x80000000; - v14 = lpuexcpt; - } - if ( v14 ) - *((_DWORD *)v16 + 1) = 0x7FFFFFFF; - if ( v5 == -1 ) -LABEL_25: - std::ios::clear( - (std::istream::sentry *)((char *)v16 + *(_DWORD *)(*(_DWORD *)v16 - 12)), - *(_DWORD *)((char *)v16 + *(_DWORD *)(*(_DWORD *)v16 - 12) + 20) | 2); - } - } - return v16; -} -// 49DC37: variable 'v12' is possibly undefined -// 49DBE0: using guessed type char var_19[25]; - -//----- (0049DEE0) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::ignore@( - std::istream::sentry *a1@, - std::istream *this, - int a3, - int a4) -{ - unsigned __int8 *v5; // eax - int v6; // eax - unsigned __int8 *v7; // ebx - signed int v8; // edi - _BYTE *v9; // eax - _DWORD *v10; // edx - signed int v11; // ecx - unsigned __int8 *v12; // ebx - unsigned int v13; // eax - unsigned __int8 *v14; // eax - int v15; // [esp+4h] [ebp-94h] - bool v16; // [esp+8h] [ebp-90h] - unsigned int v17; // [esp+24h] [ebp-74h] - _DWORD *v18; // [esp+2Ch] [ebp-6Ch] - char v19; // [esp+32h] [ebp-66h] - char v20; // [esp+33h] [ebp-65h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - std::istream::sentry *v22; // [esp+38h] [ebp-60h] - char v23[25]; // [esp+7Fh] [ebp-19h] BYREF - - v22 = a1; - if ( a3 == -1 ) - return std::istream::ignore(a1, this, v15); - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v23, a1, (std::istream *)1, v16); - if ( (int)this > 0 ) - { - v20 = v23[0]; - if ( v23[0] ) - { - v18 = *(_DWORD **)((char *)v22 + *(_DWORD *)(*(_DWORD *)v22 - 12) + 120); - v5 = (unsigned __int8 *)v18[2]; - if ( (unsigned int)v5 >= v18[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); - else - v6 = *v5; - v19 = 0; -LABEL_9: - for ( lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); - (int)this <= (int)lpuexcpt; - lpuexcpt = (struct _Unwind_Exception *)0x80000000 ) - { -LABEL_19: - if ( this != (std::istream *)0x7FFFFFFF ) - { - if ( v19 ) - goto LABEL_25; - goto LABEL_26; - } - if ( v6 == -1 ) - { -LABEL_33: - if ( v19 ) - *((_DWORD *)v22 + 1) = 0x7FFFFFFF; - goto LABEL_35; - } - if ( v6 == a3 ) - { - if ( !v19 ) - { -LABEL_29: - if ( lpuexcpt != (struct _Unwind_Exception *)0x7FFFFFFF ) -LABEL_30: - *((_DWORD *)v22 + 1) = (char *)lpuexcpt + 1; - v13 = v18[2]; - if ( v13 >= v18[3] ) - (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); - else - v18[2] = v13 + 1; - return v22; - } -LABEL_25: - *((_DWORD *)v22 + 1) = 0x7FFFFFFF; -LABEL_26: - if ( v6 == -1 ) - { -LABEL_35: - std::ios::clear( - (std::istream::sentry *)((char *)v22 + *(_DWORD *)(*(_DWORD *)v22 - 12)), - *(_DWORD *)((char *)v22 + *(_DWORD *)(*(_DWORD *)v22 - 12) + 20) | 2); - return v22; - } - if ( v6 != a3 ) - return v22; -LABEL_28: - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); - goto LABEL_29; - } - *((_DWORD *)v22 + 1) = 0x80000000; - v19 = v20; - } - while ( 1 ) - { - if ( v6 == -1 ) - goto LABEL_33; - if ( v6 == a3 ) - break; - v7 = (unsigned __int8 *)v18[2]; - v17 = v18[3]; - v8 = v17 - (_DWORD)v7; - if ( this - lpuexcpt <= (int)(v17 - (_DWORD)v7) ) - v8 = this - lpuexcpt; - if ( v8 <= 1 ) - { - *((_DWORD *)v22 + 1) = (char *)lpuexcpt + 1; - if ( v17 > (unsigned int)v7 ) - { - v10 = v18; - v14 = v7 + 1; - v18[2] = v7 + 1; - goto LABEL_38; - } - if ( (*(int (__fastcall **)(_DWORD *))(*v18 + 40))(v18) != -1 ) - { - v14 = (unsigned __int8 *)v18[2]; - v17 = v18[3]; -LABEL_38: - if ( v17 > (unsigned int)v14 ) - { - v6 = *v14; - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); - goto LABEL_9; - } -LABEL_40: - v6 = (*(int (__fastcall **)(_DWORD *, _DWORD *))(*v18 + 36))(v18, v10); - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v22 + 1); - goto LABEL_9; - } - goto LABEL_33; - } - v9 = memchr(v7, (char)a3, v8); - v10 = v18; - v11 = v9 - v7; - if ( !v9 ) - v11 = v8; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + v11); - v12 = &v7[v11]; - v18[2] = v12; - *((_DWORD *)v22 + 1) = lpuexcpt; - if ( v17 <= (unsigned int)v12 ) - goto LABEL_40; - v6 = *v12; - if ( (int)this <= (int)lpuexcpt ) - goto LABEL_19; - } - if ( this == (std::istream *)0x7FFFFFFF ) - { - if ( !v19 ) - goto LABEL_30; - goto LABEL_25; - } - if ( v19 ) - goto LABEL_25; - goto LABEL_28; - } - } - return v22; -} -// 49DF3A: variable 'v16' is possibly undefined -// 49DF80: variable 'v15' is possibly undefined -// 49E197: variable 'v10' is possibly undefined -// 49DEE0: using guessed type char var_19[25]; - -//----- (0049E2F0) -------------------------------------------------------- -std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1) -{ - _DWORD *v2; // ecx - unsigned int v3; // eax - bool v4; // [esp+8h] [ebp-70h] - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v6, a1, (std::istream *)1, v4); - if ( v6[0] ) - { - v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v3 = v2[2]; - if ( v3 >= v2[3] ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2) == -1 ) - { - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); - return a1; - } - } - else - { - v2[2] = v3 + 1; - } - *((_DWORD *)a1 + 1) = 1; - } - return a1; -} -// 49E341: variable 'v4' is possibly undefined -// 49E2F0: using guessed type char var_19[25]; - -//----- (0049E480) -------------------------------------------------------- -void __userpurge std::istream::sentry::sentry(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4) -{ - char *v4; // ecx - int v5; // eax - _BYTE *v6; // eax - unsigned int v7; // eax - unsigned int v8; // edx - unsigned __int8 *v9; // eax - int v10; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - - *a1 = 0; - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v5 = *((_DWORD *)v4 + 5); - if ( v5 ) - goto LABEL_6; - if ( *((_DWORD *)v4 + 28) ) - { - std::ostream::flush(*((_DWORD **)v4 + 28)); - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) - goto LABEL_5; - } - else if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) - { - goto LABEL_9; - } - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v4 + 30); - v6 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v6 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v10 = *((_DWORD *)v4 + 31); - if ( v10 ) - { - if ( v6 == (_BYTE *)-1 ) - { -LABEL_20: - v5 = *((_DWORD *)v4 + 5) | 2; - goto LABEL_6; - } - goto LABEL_12; - } -LABEL_27: - std::__throw_bad_cast(); - } - LOBYTE(v6) = *v6; - v10 = *((_DWORD *)v4 + 31); - if ( !v10 ) - goto LABEL_27; -LABEL_12: - while ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * (unsigned __int8)v6) & 0x20) != 0 ) - { - while ( 1 ) - { - v7 = *((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - if ( v7 >= v8 ) - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_19; - v9 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - } - else - { - v9 = (unsigned __int8 *)(v7 + 1); - *((_DWORD *)lpuexcpt + 2) = v9; - } - if ( (unsigned int)v9 >= v8 ) - break; - if ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * *v9) & 0x20) == 0 ) - goto LABEL_17; - } - v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - if ( v6 == (_BYTE *)-1 ) - { -LABEL_19: - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - goto LABEL_20; - } - } -LABEL_17: - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); -LABEL_5: - v5 = *((_DWORD *)v4 + 5); - if ( v5 ) - { -LABEL_6: - std::ios::clear(v4, v5 | 4); - return; - } -LABEL_9: - *a1 = 1; -} - -//----- (0049E710) -------------------------------------------------------- -void __userpurge std::istream::sentry::sentry(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4) -{ - char *v4; // ecx - int v5; // eax - _BYTE *v6; // eax - unsigned int v7; // eax - unsigned int v8; // edx - unsigned __int8 *v9; // eax - int v10; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - - *a1 = 0; - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v5 = *((_DWORD *)v4 + 5); - if ( v5 ) - goto LABEL_6; - if ( *((_DWORD *)v4 + 28) ) - { - std::ostream::flush(*((_DWORD **)v4 + 28)); - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) - goto LABEL_5; - } - else if ( (_BYTE)a3 || (v4[13] & 0x10) == 0 ) - { - goto LABEL_9; - } - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v4 + 30); - v6 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v6 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v10 = *((_DWORD *)v4 + 31); - if ( v10 ) - { - if ( v6 == (_BYTE *)-1 ) - { -LABEL_20: - v5 = *((_DWORD *)v4 + 5) | 2; - goto LABEL_6; - } - goto LABEL_12; - } -LABEL_27: - std::__throw_bad_cast(); - } - LOBYTE(v6) = *v6; - v10 = *((_DWORD *)v4 + 31); - if ( !v10 ) - goto LABEL_27; -LABEL_12: - while ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * (unsigned __int8)v6) & 0x20) != 0 ) - { - while ( 1 ) - { - v7 = *((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - if ( v7 >= v8 ) - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_19; - v9 = (unsigned __int8 *)*((_DWORD *)lpuexcpt + 2); - v8 = *((_DWORD *)lpuexcpt + 3); - } - else - { - v9 = (unsigned __int8 *)(v7 + 1); - *((_DWORD *)lpuexcpt + 2) = v9; - } - if ( (unsigned int)v9 >= v8 ) - break; - if ( (*(_BYTE *)(*(_DWORD *)(v10 + 24) + 2 * *v9) & 0x20) == 0 ) - goto LABEL_17; - } - v6 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - if ( v6 == (_BYTE *)-1 ) - { -LABEL_19: - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - goto LABEL_20; - } - } -LABEL_17: - v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); -LABEL_5: - v5 = *((_DWORD *)v4 + 5); - if ( v5 ) - { -LABEL_6: - std::ios::clear(v4, v5 | 4); - return; - } -LABEL_9: - *a1 = 1; -} - -//----- (0049E9A0) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::getline@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - int a4) -{ - int v4; // eax - _BYTE *v5; // esi - char v7; // al - int (__stdcall *v9)(unsigned __int8); // edx - char v10; // [esp+Ch] [ebp-10h] - - v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v5 = *(_BYTE **)((char *)a1 + v4 + 124); - if ( !v5 ) - std::__throw_bad_cast(); - if ( v5[28] ) - { - v7 = v5[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); - v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); - v7 = 10; - if ( v9 != std::ctype::do_widen ) - v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); - } - return std::istream::getline(a1, this, a3, v7, v10); -} -// 49E9D3: variable 'v10' is possibly undefined - -//----- (0049EA20) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::getline@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - char a4, - char a5) -{ - int v5; // edx - size_t v6; // edx - _DWORD *v8; // eax - char *v9; // esi - size_t v10; // eax - int v11; // ecx - unsigned __int8 *v12; // eax - unsigned __int8 *v13; // edx - char *v14; // eax - signed int v15; // edx - unsigned int v16; // edx - unsigned int v17; // eax - unsigned __int8 *v18; // eax - size_t v19; // ebx - bool v20; // [esp+8h] [ebp-90h] - std::istream *v21; // [esp+1Ch] [ebp-7Ch] - _DWORD *v22; // [esp+28h] [ebp-70h] - unsigned int v23; // [esp+2Ch] [ebp-6Ch] - char *Buf; // [esp+34h] [ebp-64h] - size_t MaxCount; // [esp+38h] [ebp-60h] - char v27[25]; // [esp+7Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v27, a1, (std::istream *)1, v20); - if ( v27[0] ) - { - v8 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v9 = (char *)v8[2]; - v22 = v8; - Buf = v9; - v23 = v8[3]; - if ( (unsigned int)v9 < v23 ) - { - v10 = *((_DWORD *)a1 + 1); - v11 = (unsigned __int8)*v9; - v6 = v10 + 1; - if ( (int)a3 > (int)(v10 + 1) ) - goto LABEL_11; -LABEL_31: - if ( (unsigned __int8)a4 != v11 ) - { - if ( (int)a3 <= 0 ) - { - v5 = 4; - v10 = *((_DWORD *)a1 + 1); - goto LABEL_38; - } - v5 = 4; - *(_BYTE *)this = 0; -LABEL_5: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v5); - return a1; - } - Buf = (char *)v22[2]; - v23 = v22[3]; - goto LABEL_43; - } - v11 = (*(int (__fastcall **)(_DWORD *))(*v8 + 36))(v8); - v10 = *((_DWORD *)a1 + 1); - v19 = v10; - v6 = v10 + 1; - if ( (int)a3 <= (int)(v10 + 1) ) - { -LABEL_50: - if ( v11 != -1 ) - goto LABEL_31; - if ( (int)a3 <= 0 ) - { - v10 = v19; - v5 = 2; - goto LABEL_38; - } - } - else - { - if ( v11 != -1 ) - { - Buf = (char *)v22[2]; - v23 = v22[3]; -LABEL_11: - if ( (unsigned __int8)a4 == v11 ) - { -LABEL_43: - *((_DWORD *)a1 + 1) = v6; - if ( (unsigned int)Buf < v23 ) - { - v22[2] = Buf + 1; - if ( (int)a3 > 0 ) - { - *(_BYTE *)this = 0; - if ( !*((_DWORD *)a1 + 1) ) - goto LABEL_4; - return a1; - } - goto LABEL_7; - } - (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - if ( (int)a3 > 0 ) - { - *(_BYTE *)this = 0; - if ( !*((_DWORD *)a1 + 1) ) - goto LABEL_4; - return a1; - } -LABEL_6: - v6 = *((_DWORD *)a1 + 1); -LABEL_7: - if ( !v6 ) - goto LABEL_4; - return a1; - } - while ( 1 ) - { - v14 = &a3[-v10 - 1]; - v15 = v23 - (_DWORD)Buf; - if ( (int)v14 <= (int)(v23 - (_DWORD)Buf) ) - v15 = (signed int)v14; - MaxCount = v15; - if ( v15 > 1 ) - { - v12 = (unsigned __int8 *)memchr(Buf, a4, v15); - v13 = v12; - if ( !v12 || (MaxCount = v12 - (unsigned __int8 *)Buf, v12 != (unsigned __int8 *)Buf) ) - { - memcpy(this, Buf, MaxCount); - v13 = (unsigned __int8 *)(v22[2] + MaxCount); - v23 = v22[3]; - } - this = (std::istream *)((char *)this + MaxCount); - v22[2] = v13; - v10 = *((_DWORD *)a1 + 1) + MaxCount; - *((_DWORD *)a1 + 1) = v10; - if ( (unsigned int)v13 < v23 ) - { - v11 = *v13; - goto LABEL_17; - } - v11 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - } - else - { - v21 = (std::istream *)((char *)this + 1); - *(_BYTE *)this = v11; - v16 = v22[3]; - ++*((_DWORD *)a1 + 1); - v17 = v22[2]; - if ( v17 >= v16 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v22 + 40))(v22) == -1 ) - goto LABEL_35; - v18 = (unsigned __int8 *)v22[2]; - v16 = v22[3]; - } - else - { - v18 = (unsigned __int8 *)(v17 + 1); - v22[2] = v18; - } - if ( (unsigned int)v18 < v16 ) - { - v11 = *v18; - this = (std::istream *)((char *)this + 1); - v10 = *((_DWORD *)a1 + 1); -LABEL_17: - v6 = v10 + 1; - if ( (int)a3 <= (int)(v10 + 1) ) - goto LABEL_31; - goto LABEL_18; - } - v11 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - this = (std::istream *)((char *)this + 1); - } - v19 = *((_DWORD *)a1 + 1); - v10 = v19; - v6 = v19 + 1; - if ( (int)(v19 + 1) >= (int)a3 ) - goto LABEL_50; - if ( v11 == -1 ) - { - v21 = this; -LABEL_35: - if ( (int)a3 > 0 ) - *(_BYTE *)v21 = 0; - v5 = 2; - v10 = *((_DWORD *)a1 + 1); -LABEL_38: - if ( !v10 ) - v5 |= 4u; - goto LABEL_5; - } -LABEL_18: - Buf = (char *)v22[2]; - v23 = v22[3]; - if ( (unsigned __int8)a4 == v11 ) - goto LABEL_43; - } - } - if ( (int)a3 <= 0 ) - { - v5 = 2; - goto LABEL_38; - } - } - v5 = 2; - *(_BYTE *)this = 0; - if ( !*((_DWORD *)a1 + 1) ) - v5 = 6; - goto LABEL_5; - } - if ( (int)a3 <= 0 ) - goto LABEL_6; - *(_BYTE *)this = 0; - if ( !*((_DWORD *)a1 + 1) ) - { -LABEL_4: - v5 = 4; - goto LABEL_5; - } - return a1; -} -// 49EA7F: variable 'v20' is possibly undefined -// 49EA20: using guessed type char var_19[25]; - -//----- (0049EF50) -------------------------------------------------------- -std::istream::sentry *__userpurge std::istream::putback@( - std::istream::sentry *a1@, - std::istream *this, - char a3) -{ - int v4; // eax - _DWORD *v5; // ecx - _DWORD *v6; // eax - unsigned int v7; // eax - bool v9; // [esp+8h] [ebp-70h] - char v11[25]; // [esp+5Fh] [ebp-19h] BYREF - - v4 = *(_DWORD *)a1; - *((_DWORD *)a1 + 1) = 0; - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v4 - 12)), - *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v4 - 12) + 20) & 0xFFFFFFFD); - std::istream::sentry::sentry(v11, a1, (std::istream *)1, v9); - if ( v11[0] ) - { - v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - if ( v5 ) - { - v7 = v5[2]; - if ( v5[1] < v7 && (_BYTE)this == *(_BYTE *)(v7 - 1) ) - { - v5[2] = v7 - 1; - return a1; - } - if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v5 + 44))(v5, (unsigned __int8)this) != -1 ) - return a1; - v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - } - std::ios::clear(v6, v6[5] | 1); - } - return a1; -} -// 49EFC2: variable 'v9' is possibly undefined -// 49EF50: using guessed type char var_19[25]; - -//----- (0049F110) -------------------------------------------------------- -struct _Unwind_Exception *__userpurge std::istream::readsome@( - std::istream::sentry *a1@, - std::istream *this, - char *a3, - int a4) -{ - _DWORD *v5; // ecx - char *v6; // eax - int v7; // ecx - bool v8; // [esp+8h] [ebp-70h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v11[25]; // [esp+5Fh] [ebp-19h] BYREF - - *((_DWORD *)a1 + 1) = 0; - std::istream::sentry::sentry(v11, a1, (std::istream *)1, v8); - if ( !v11[0] ) - return (struct _Unwind_Exception *)*((_DWORD *)a1 + 1); - v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v6 = (char *)(v5[3] - v5[2]); - if ( !v6 ) - v6 = (char *)(*(int (__fastcall **)(_DWORD *))(*v5 + 28))(v5); - if ( (int)v6 <= 0 ) - { - if ( v6 == (char *)-1 ) - { - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); - return (struct _Unwind_Exception *)*((_DWORD *)a1 + 1); - } - return (struct _Unwind_Exception *)*((_DWORD *)a1 + 1); - } - if ( (int)v6 > (int)a3 ) - v6 = a3; - v7 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, std::istream *, char *))(*(_DWORD *)v7 + 32))( - v7, - this, - v6); - *((_DWORD *)a1 + 1) = lpuexcpt; - return lpuexcpt; -} -// 49F161: variable 'v8' is possibly undefined -// 49F110: using guessed type char var_19[25]; - -//----- (0049F2F0) -------------------------------------------------------- -void __thiscall std::istream::istream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 2; - std::ios_base::ios_base(this + 2); - *((_WORD *)this + 62) = 0; - v2 = a2[1]; - *this = &off_51A7F0; - this[1] = v2; - this[30] = 0; - v3 = *a2; - this[32] = 0; - this[33] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[2] = off_51A804; - this[34] = 0; - this[35] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 29)); - this[32] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[30] = v5; - *((_WORD *)this + 62) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; -} -// 49F38F: variable 'v6' is possibly undefined -// 51A7F0: using guessed type void (__cdecl *off_51A7F0)(std::istream *__hidden this); -// 51A804: using guessed type void (__cdecl *off_51A804[2])(std::istream *__hidden this); - -//----- (0049F420) -------------------------------------------------------- -void __thiscall std::istream::istream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+14h] [ebp-44h] - - v2 = this + 2; - std::ios_base::ios_base(this + 2); - this[30] = 0; - *((_WORD *)this + 62) = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - *this = &off_51A7F0; - this[2] = off_51A804; - this[1] = 0; - std::ios::init((int)v2, a2); -} -// 51A7F0: using guessed type void (__cdecl *off_51A7F0)(std::istream *__hidden this); -// 51A804: using guessed type void (__cdecl *off_51A804[2])(std::istream *__hidden this); - -//----- (0049F500) -------------------------------------------------------- -void __fastcall std::istream::istream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 8; - std::ios_base::ios_base((_DWORD *)(a1 + 8)); - *(_DWORD *)(a1 + 120) = 0; - *(_WORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)a1 = &off_51A7F0; - *(_DWORD *)(a1 + 8) = off_51A804; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); -} -// 51A7F0: using guessed type void (__cdecl *off_51A7F0)(std::istream *__hidden this); -// 51A804: using guessed type void (__cdecl *off_51A804[2])(std::istream *__hidden this); - -//----- (0049F5E0) -------------------------------------------------------- -int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // edx - char *v5; // ebx - std::ios_base *v6; // edi - int v7; // eax - int result; // eax - std::ios_base *v9; // [esp+4h] [ebp-18h] - - v3 = *a2; - v4 = a2[1]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = v4; - this[1] = a3[1]; - v5 = (char *)this + *(_DWORD *)(v3 - 12); - v6 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v5, v6, v9); - std::ios::_M_cache_locale(v5, (int)(v5 + 108)); - v7 = *((_DWORD *)v6 + 28); - *((_DWORD *)v5 + 30) = 0; - *((_DWORD *)v6 + 28) = 0; - *((_DWORD *)v5 + 28) = v7; - result = *((unsigned __int16 *)v6 + 58); - a3[1] = 0; - *((_WORD *)v5 + 58) = result; - return result; -} -// 49F612: variable 'v9' is possibly undefined - -//----- (0049F660) -------------------------------------------------------- -BOOL __thiscall std::istream::istream(int *this, int *a2, int a3) -{ - int v3; // eax - int v4; // edx - int v5; // ebx - - v3 = *a2; - v4 = a2[1]; - v5 = *(_DWORD *)(*a2 - 12); - *this = *a2; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - return std::ios::init((int)this + *(_DWORD *)(v3 - 12), a3); -} - -//----- (0049F6A0) -------------------------------------------------------- -BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this) -{ - int v2; // eax - int v3; // edx - int v4; // ebx - - v2 = *(_DWORD *)this; - v3 = *((_DWORD *)this + 1); - v4 = *(_DWORD *)(*(_DWORD *)this - 12); - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + v4) = v3; - ecx0[1] = 0; - return std::ios::init((int)ecx0 + *(_DWORD *)(v2 - 12), 0); -} - -//----- (0049F6D0) -------------------------------------------------------- -void __fastcall std::istream::~istream(_DWORD *a1) -{ - _DWORD *v2; // ecx - - v2 = a1 + 2; - *(v2 - 2) = &off_51A7F0; - *(v2 - 1) = 0; - *v2 = &off_51B7D0; - std::ios_base::~ios_base((int)v2); - operator delete(a1); -} -// 51A7F0: using guessed type void (__cdecl *off_51A7F0)(std::istream *__hidden this); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (0049F700) -------------------------------------------------------- -void __fastcall std::istream::~istream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_51A7F0; - v1 = a1 + 2; - *(v1 - 1) = 0; - *v1 = &off_51B7D0; - std::ios_base::~ios_base((int)v1); -} -// 51A7F0: using guessed type void (__cdecl *off_51A7F0)(std::istream *__hidden this); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (0049F720) -------------------------------------------------------- -void __thiscall std::istream::~istream(_DWORD *ecx0, std::istream *this) -{ - int v2; // eax - - v2 = *(_DWORD *)this; - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); - ecx0[1] = 0; -} - -//----- (0049F740) -------------------------------------------------------- -_DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - return this; -} -// 49F77D: variable 'v10' is possibly undefined - -//----- (0049F800) -------------------------------------------------------- -int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)) -{ - return a2(this); -} - -//----- (0049F810) -------------------------------------------------------- -char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (0049F830) -------------------------------------------------------- -char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (0049F850) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) -{ - char *v2; // ecx - int v3; // eax - bool v5; // [esp+8h] [ebp-70h] - char v7; // [esp+5Eh] [ebp-1Ah] BYREF - char v8[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( !a2 ) - { - v3 = 4; - goto LABEL_9; - } - if ( !std::__copy_streambufs_eof>(*((_DWORD **)v2 + 30), a2, v8) ) - { - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = v8[0] == 0 ? 4 : 6; - goto LABEL_9; - } - if ( v8[0] ) - { - v3 = 2; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); -LABEL_9: - std::ios::clear(v2, *((_DWORD *)v2 + 5) | v3); - } - } - else if ( !a2 ) - { - v3 = 4; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - goto LABEL_9; - } - return this; -} -// 49F89A: variable 'v5' is possibly undefined -// 49F850: using guessed type char var_19[25]; - -//----- (0049FA70) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) -{ - char *v2; // edi - int v3; // ecx - bool v5; // [esp+8h] [ebp-80h] - char v7; // [esp+67h] [ebp-21h] BYREF - int v8; // [esp+68h] [ebp-20h] BYREF - int v9[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v7, this, 0, v5); - if ( v7 ) - { - v8 = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - &v8, - v9); - *a2 = v9[0]; - if ( v8 ) - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v8); - } - return this; -} -// 49FABA: variable 'v5' is possibly undefined -// 49FA70: using guessed type int var_1C[7]; - -//----- (0049FC70) -------------------------------------------------------- -std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2) -{ - char *v2; // edi - int v3; // ecx - int v4; // eax - bool v6; // [esp+8h] [ebp-80h] - char v8; // [esp+67h] [ebp-21h] BYREF - int v9; // [esp+68h] [ebp-20h] BYREF - int v10[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v8, this, 0, v6); - if ( v8 ) - { - v9 = 0; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - -1, - 0, - -1, - (char *)this + *(_DWORD *)(*(_DWORD *)this - 12), - &v9, - v10); - v4 = v9; - if ( v10[0] >= -32768 ) - { - if ( v10[0] > 0x7FFF ) - { - v9 |= 4u; - v4 = v9; - *a2 = 0x7FFF; - goto LABEL_9; - } - *a2 = v10[0]; - } - else - { - v4 = v9 | 4; - v9 |= 4u; - *a2 = 0x8000; - } - if ( !v4 ) - return this; -LABEL_9: - std::ios::clear( - (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v4); - } - return this; -} -// 49FD83: conditional instruction was optimized away because eax.4>=4u -// 49FCBA: variable 'v6' is possibly undefined -// 49FC70: using guessed type int var_1C[7]; - -//----- (0049FEB0) -------------------------------------------------------- -std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3) -{ - _DWORD *v3; // ecx - _BYTE *v4; // eax - int v5; // ecx - int v7; // [esp+0h] [ebp-78h] - std::ostream *v8; // [esp+4h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v11[4]; // [esp+58h] [ebp-20h] BYREF - _DWORD *v12; // [esp+5Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v11, a1, v8); - if ( v11[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v4 = (_BYTE *)v3[5]; - if ( (unsigned int)v4 >= v3[6] ) - { - if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v3 + 52))(v3, (unsigned __int8)this) == -1 ) - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - else - { - *v4 = (_BYTE)this; - ++v3[5]; - } - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpt + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v7) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), - *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); - } - } - return a1; -} -// 49FEF8: variable 'v8' is possibly undefined -// 49FF54: variable 'v7' is possibly undefined -// 49FEB0: using guessed type char var_20[4]; - -//----- (004A00A0) -------------------------------------------------------- -void __userpurge std::ostream::swap(_DWORD *a1@, std::ostream *this, std::ostream *a3) -{ - std::ios_base **v3; // ebx - std::ios_base *v4; // esi - std::ios_base *v5; // eax - char v6; // dl - char v7; // dl - std::ios_base *v8; // [esp+4h] [ebp-58h] - - v3 = (std::ios_base **)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v4 = (std::ostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - *((_BYTE *)v4 + 117) = v7; -} -// 4A00D7: variable 'v8' is possibly undefined - -//----- (004A0140) -------------------------------------------------------- -_DWORD *__fastcall std::ostream::flush(_DWORD *a1) -{ - int v1; // ecx - - v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - if ( v1 && (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1) == -1 ) - std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - return a1; -} - -//----- (004A0290) -------------------------------------------------------- -_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) -{ - char *v5; // edi - _DWORD *v6; // eax - int v7; // edi - void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax - _DWORD *v10; // [esp+0h] [ebp-A8h] - int v12[14]; // [esp+70h] [ebp-38h] BYREF - - v5 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v5[20] & 5) == 0 ) - { - v6 = (_DWORD *)*((_DWORD *)v5 + 30); - v7 = *v6; - v12[6] = a4; - v10 = v6; - v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); - v12[4] = a2; - v12[5] = a3; - v12[7] = a5; - v8(v12, v10, a2, a3, a4, a5, 16); - if ( (v12[0] & v12[1]) == -1 ) - std::ios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - return this; -} - -//----- (004A0450) -------------------------------------------------------- -_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4) -{ - char *v4; // edi - int v7[10]; // [esp+60h] [ebp-28h] BYREF - - v4 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v4[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( - v7, - *((_DWORD *)v4 + 30), - a2, - a3, - a4, - 16); - if ( (v7[0] & v7[1]) == -1 ) - std::ios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - return this; -} - -//----- (004A05E0) -------------------------------------------------------- -_DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this) -{ - int v2; // eax - char *v3; // esi - int v6[10]; // [esp+60h] [ebp-28h] BYREF - - v2 = *(_DWORD *)this; - *ecx0 = -1; - ecx0[1] = -1; - v3 = (char *)this + *(_DWORD *)(v2 - 12); - ecx0[2] = 0; - if ( (v3[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( - v6, - *((_DWORD *)v3 + 30), - 0, - 0, - 1, - 16); - *ecx0 = v6[0]; - ecx0[1] = v6[1]; - ecx0[2] = v6[2]; - } - return ecx0; -} - -//----- (004A0760) -------------------------------------------------------- -std::ostream::sentry *__userpurge std::ostream::write@( - std::ostream::sentry *a1@, - std::ostream *this, - const char *a3, - int a4) -{ - int v4; // ecx - int v5; // ecx - int v7; // [esp+0h] [ebp-78h] - std::ostream *v8; // [esp+4h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v11[4]; // [esp+58h] [ebp-20h] BYREF - _DWORD *v12; // [esp+5Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v11, a1, v8); - if ( v11[0] ) - { - v4 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - if ( a3 != (const char *)(*(int (__thiscall **)(int, std::ostream *, const char *))(*(_DWORD *)v4 + 48))( - v4, - this, - a3) ) - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpt + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v7) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), - *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); - } - } - return a1; -} -// 4A07A2: variable 'v8' is possibly undefined -// 4A080F: variable 'v7' is possibly undefined -// 4A0760: using guessed type char var_20[4]; - -//----- (004A0930) -------------------------------------------------------- -int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) -{ - int v4; // eax - char *v5; // ecx - int result; // eax - - *(_BYTE *)a1 = 0; - v4 = *(_DWORD *)this; - *(_DWORD *)(a1 + 4) = this; - v5 = (char *)this + *(_DWORD *)(v4 - 12); - result = *((_DWORD *)v5 + 5); - if ( *((_DWORD *)v5 + 28) ) - { - if ( result ) - return std::ios::clear(v5, result | 4); - std::ostream::flush(*((_DWORD **)v5 + 28)); - result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); - v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - } - if ( result ) - return std::ios::clear(v5, result | 4); - *(_BYTE *)a1 = 1; - return result; -} - -//----- (004A0990) -------------------------------------------------------- -int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) -{ - int v4; // eax - char *v5; // ecx - int result; // eax - - *(_BYTE *)a1 = 0; - v4 = *(_DWORD *)this; - *(_DWORD *)(a1 + 4) = this; - v5 = (char *)this + *(_DWORD *)(v4 - 12); - result = *((_DWORD *)v5 + 5); - if ( *((_DWORD *)v5 + 28) ) - { - if ( result ) - return std::ios::clear(v5, result | 4); - std::ostream::flush(*((_DWORD **)v5 + 28)); - result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); - v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - } - if ( result ) - return std::ios::clear(v5, result | 4); - *(_BYTE *)a1 = 1; - return result; -} - -//----- (004A09F0) -------------------------------------------------------- -void __fastcall std::ostream::sentry::~sentry(int a1) -{ - int v2; // ebx - int v3; // ecx - _DWORD *v4; // ecx - - if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) - { - v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); - if ( !std::uncaught_exception() ) - { - v3 = *(_DWORD *)(v2 + 120); - if ( v3 ) - { - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) - { - v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); - std::ios::clear(v4, v4[5] | 1); - } - } - } - } -} - -//----- (004A0A80) -------------------------------------------------------- -void __fastcall std::ostream::sentry::~sentry(int a1) -{ - int v2; // ebx - int v3; // ecx - _DWORD *v4; // ecx - - if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) - { - v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); - if ( !std::uncaught_exception() ) - { - v3 = *(_DWORD *)(v2 + 120); - if ( v3 ) - { - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) - { - v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); - std::ios::clear(v4, v4[5] | 1); - } - } - } - } -} - -//----- (004A0B10) -------------------------------------------------------- -const char *__userpurge std::ostream::_M_write@(_DWORD *a1@, std::ostream *this, const char *a3, int a4) -{ - int v5; // ecx - const char *result; // eax - - v5 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - result = (const char *)(*(int (__thiscall **)(int, std::ostream *, const char *))(*(_DWORD *)v5 + 48))(v5, this, a3); - if ( a3 != result ) - return (const char *)std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - return result; -} - -//----- (004A0B60) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+2Ch] [ebp-6Ch] - int v12; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int))(*(_DWORD *)v12 + 36))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4A0BA5: variable 'v10' is possibly undefined -// 4A0C28: variable 'v3' is possibly undefined -// 4A0C7C: variable 'v9' is possibly undefined -// 4A0B60: using guessed type char var_20[4]; - -//----- (004A0E10) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+28h] [ebp-70h] - int v12; // [esp+2Ch] [ebp-6Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, _DWORD))(*(_DWORD *)v12 + 8))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4A0E5B: variable 'v10' is possibly undefined -// 4A0EE5: variable 'v3' is possibly undefined -// 4A0F39: variable 'v9' is possibly undefined -// 4A0E10: using guessed type char var_20[4]; - -//----- (004A10D0) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+24h] [ebp-74h] - int v12; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, _DWORD, _DWORD))(*(_DWORD *)v12 + 28))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - LODWORD(a2), - HIDWORD(a2)); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4A111B: variable 'v10' is possibly undefined -// 4A1198: variable 'v3' is possibly undefined -// 4A11EC: variable 'v9' is possibly undefined -// 4A10D0: using guessed type char var_20[4]; - -//----- (004A1380) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v12; // [esp+2Ch] [ebp-6Ch] - int v13; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v17[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v18; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v17, this, v10); - if ( v17[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v13 = *((_DWORD *)lpuexcpt + 32); - if ( !v13 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v12 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v12 ) - std::__throw_bad_cast(); - if ( v12[28] ) - { - v2 = (char)v12[61]; - v6 = v12[61]; - } - else - { - std::ctype::_M_widen_init((int)v12); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v12 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v12, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v13 + 32))( - v13, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - LODWORD(a2), - DWORD1(a2), - HIDWORD(a2)); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v18 + *(_DWORD *)(*v18 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), - *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); - } - } - return this; -} -// 4A13C5: variable 'v10' is possibly undefined -// 4A1442: variable 'v3' is possibly undefined -// 4A1496: variable 'v9' is possibly undefined -// 4A1380: using guessed type char var_20[4]; - -//----- (004A1630) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+2Ch] [ebp-6Ch] - int v12; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int))(*(_DWORD *)v12 + 12))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4A1675: variable 'v10' is possibly undefined -// 4A16F8: variable 'v3' is possibly undefined -// 4A174C: variable 'v9' is possibly undefined -// 4A1630: using guessed type char var_20[4]; - -//----- (004A18E0) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) -{ - int v2; // ecx - char v3; // dl - int v4; // ecx - char v6; // al - int v7; // eax - int (__stdcall *v8)(unsigned __int8); // edx - int v9; // [esp+0h] [ebp-98h] - std::ostream *v10; // [esp+4h] [ebp-94h] - _BYTE *v11; // [esp+2Ch] [ebp-6Ch] - int v12; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v16[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v17; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v16, this, v10); - if ( v16[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v12 = *((_DWORD *)lpuexcpt + 32); - if ( !v12 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v2 = *((char *)lpuexcpt + 116); - } - else - { - v11 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v11 ) - std::__throw_bad_cast(); - if ( v11[28] ) - { - v2 = (char)v11[61]; - v6 = v11[61]; - } - else - { - std::ctype::_M_widen_init((int)v11); - v2 = 32; - v8 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v11 + 24); - v6 = 32; - if ( v8 != std::ctype::do_widen ) - { - v6 = ((int (__thiscall *)(_BYTE *, int))v8)(v11, 32); - v2 = v6; - } - } - *((_BYTE *)lpuexcpt + 116) = v6; - v7 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int))(*(_DWORD *)v12 + 16))( - v12, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v17 + *(_DWORD *)(*v17 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v9) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), - *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); - } - } - return this; -} -// 4A1925: variable 'v10' is possibly undefined -// 4A19A8: variable 'v3' is possibly undefined -// 4A19FC: variable 'v9' is possibly undefined -// 4A18E0: using guessed type char var_20[4]; - -//----- (004A1B90) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3) -{ - int v3; // ecx - char v4; // dl - int v5; // ecx - char v7; // al - int v8; // eax - int (__stdcall *v9)(unsigned __int8); // edx - int v10; // [esp+0h] [ebp-98h] - std::ostream *v11; // [esp+4h] [ebp-94h] - _BYTE *v12; // [esp+24h] [ebp-74h] - int v13; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v17[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v18; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v17, this, v11); - if ( v17[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v13 = *((_DWORD *)lpuexcpt + 32); - if ( !v13 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v3 = *((char *)lpuexcpt + 116); - } - else - { - v12 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v12 ) - std::__throw_bad_cast(); - if ( v12[28] ) - { - v3 = (char)v12[61]; - v7 = v12[61]; - } - else - { - std::ctype::_M_widen_init((int)v12); - v3 = 32; - v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v12 + 24); - v7 = 32; - if ( v9 != std::ctype::do_widen ) - { - v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v12, 32); - v3 = v7; - } - } - *((_BYTE *)lpuexcpt + 116) = v7; - v8 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v8 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int, int))(*(_DWORD *)v13 + 20))( - v13, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v3, - a2, - a3); - if ( v4 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v18 + *(_DWORD *)(*v18 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v10) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), - *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); - } - } - return this; -} -// 4A1BE1: variable 'v11' is possibly undefined -// 4A1C69: variable 'v4' is possibly undefined -// 4A1CBD: variable 'v10' is possibly undefined -// 4A1B90: using guessed type char var_20[4]; - -//----- (004A1E50) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::_M_insert( - std::ostream::sentry *this, - int a2, - int a3) -{ - int v3; // ecx - char v4; // dl - int v5; // ecx - char v7; // al - int v8; // eax - int (__stdcall *v9)(unsigned __int8); // edx - int v10; // [esp+0h] [ebp-98h] - std::ostream *v11; // [esp+4h] [ebp-94h] - _BYTE *v12; // [esp+24h] [ebp-74h] - int v13; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - char v17[4]; // [esp+78h] [ebp-20h] BYREF - _DWORD *v18; // [esp+7Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v17, this, v11); - if ( v17[0] ) - { - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); - v13 = *((_DWORD *)lpuexcpt + 32); - if ( !v13 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v3 = *((char *)lpuexcpt + 116); - } - else - { - v12 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v12 ) - std::__throw_bad_cast(); - if ( v12[28] ) - { - v3 = (char)v12[61]; - v7 = v12[61]; - } - else - { - std::ctype::_M_widen_init((int)v12); - v3 = 32; - v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v12 + 24); - v7 = 32; - if ( v9 != std::ctype::do_widen ) - { - v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v12, 32); - v3 = v7; - } - } - *((_BYTE *)lpuexcpt + 116) = v7; - v8 = *(_DWORD *)this; - *((_BYTE *)lpuexcpt + 117) = 1; - lpuexcpt = (std::ostream::sentry *)((char *)this + *(_DWORD *)(v8 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, int, int, int))(*(_DWORD *)v13 + 24))( - v13, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v3, - a2, - a3); - if ( v4 ) - std::ios::clear( - (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v18 + *(_DWORD *)(*v18 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v10) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), - *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); - } - } - return this; -} -// 4A1EA1: variable 'v11' is possibly undefined -// 4A1F29: variable 'v4' is possibly undefined -// 4A1F7D: variable 'v10' is possibly undefined -// 4A1E50: using guessed type char var_20[4]; - -//----- (004A2110) -------------------------------------------------------- -void __thiscall std::ostream::ostream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - std::ios_base *v3; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v5; // [esp+14h] [ebp-44h] - - v5 = this + 1; - std::ios_base::ios_base(this + 1); - *((_WORD *)this + 60) = 0; - this[29] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_51A818; - this[1] = off_51A82C; - lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v5, lpuexcpt, v3); - std::ios::_M_cache_locale(v5, (int)(this + 28)); - v2 = *((_DWORD *)lpuexcpt + 28); - this[31] = 0; - *((_DWORD *)lpuexcpt + 28) = 0; - this[29] = v2; - *((_WORD *)this + 60) = *((_WORD *)lpuexcpt + 58); -} -// 4A21A2: variable 'v3' is possibly undefined -// 51A818: using guessed type void (__cdecl *off_51A818)(std::ostream *__hidden this); -// 51A82C: using guessed type void (__cdecl *off_51A82C[2])(std::ostream *__hidden this); - -//----- (004A2220) -------------------------------------------------------- -void __thiscall std::ostream::ostream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+14h] [ebp-44h] - - v2 = this + 1; - std::ios_base::ios_base(this + 1); - this[29] = 0; - *((_WORD *)this + 60) = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_51A818; - this[1] = off_51A82C; - std::ios::init((int)v2, a2); -} -// 51A818: using guessed type void (__cdecl *off_51A818)(std::ostream *__hidden this); -// 51A82C: using guessed type void (__cdecl *off_51A82C[2])(std::ostream *__hidden this); - -//----- (004A2300) -------------------------------------------------------- -int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)(a1 + 4)); - result = 0; - *(_DWORD *)(a1 + 116) = 0; - *(_WORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)a1 = &off_51A818; - *(_DWORD *)(a1 + 4) = off_51A82C; - return result; -} -// 51A818: using guessed type void (__cdecl *off_51A818)(std::ostream *__hidden this); -// 51A82C: using guessed type void (__cdecl *off_51A82C[2])(std::ostream *__hidden this); - -//----- (004A2360) -------------------------------------------------------- -void __fastcall std::ostream::ostream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 4; - std::ios_base::ios_base((_DWORD *)(a1 + 4)); - *(_DWORD *)(a1 + 116) = 0; - *(_WORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)a1 = &off_51A818; - *(_DWORD *)(a1 + 4) = off_51A82C; - std::ios::init(v1, 0); -} -// 51A818: using guessed type void (__cdecl *off_51A818)(std::ostream *__hidden this); -// 51A82C: using guessed type void (__cdecl *off_51A82C[2])(std::ostream *__hidden this); - -//----- (004A2440) -------------------------------------------------------- -int __thiscall std::ostream::ostream(_DWORD *this, _DWORD *a2, _DWORD *a3) -{ - int v3; // eax - char *v4; // ebx - std::ios_base *v5; // esi - int v6; // eax - int result; // eax - std::ios_base *v8; // [esp+4h] [ebp-18h] - - v3 = a2[1]; - v4 = (char *)this + *(_DWORD *)(*a2 - 12); - *this = *a2; - *(_DWORD *)v4 = v3; - v5 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v4, v5, v8); - std::ios::_M_cache_locale(v4, (int)(v4 + 108)); - v6 = *((_DWORD *)v5 + 28); - *((_DWORD *)v4 + 30) = 0; - *((_DWORD *)v5 + 28) = 0; - *((_DWORD *)v4 + 28) = v6; - result = *((unsigned __int16 *)v5 + 58); - *((_WORD *)v4 + 58) = result; - return result; -} -// 4A2465: variable 'v8' is possibly undefined - -//----- (004A24B0) -------------------------------------------------------- -BOOL __thiscall std::ostream::ostream(int *this, int *a2, int a3) -{ - int v3; // edx - int v4; // eax - int *v5; // ecx - - v3 = *a2; - v4 = a2[1]; - *this = *a2; - v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); - *v5 = v4; - return std::ios::init((int)v5, a3); -} - -//----- (004A24E0) -------------------------------------------------------- -int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3) -{ - int v3; // edx - int result; // eax - - v3 = *(_DWORD *)this; - result = *((_DWORD *)this + 1); - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12)) = result; - return result; -} - -//----- (004A2500) -------------------------------------------------------- -BOOL __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this) -{ - int v2; // edx - int v3; // eax - _DWORD *v4; // ecx - - v2 = *(_DWORD *)this; - v3 = *((_DWORD *)this + 1); - *ecx0 = *(_DWORD *)this; - v4 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)); - *v4 = v3; - return std::ios::init((int)v4, 0); -} - -//----- (004A2520) -------------------------------------------------------- -void __fastcall std::ostream::~ostream(_DWORD *a1) -{ - _DWORD *v2; // ecx - - v2 = a1 + 1; - *(v2 - 1) = &off_51A818; - *v2 = &off_51B7D0; - std::ios_base::~ios_base((int)v2); - operator delete(a1); -} -// 51A818: using guessed type void (__cdecl *off_51A818)(std::ostream *__hidden this); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004A2550) -------------------------------------------------------- -void __fastcall std::ostream::~ostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_51A818; - v1 = a1 + 1; - *v1 = &off_51B7D0; - std::ios_base::~ios_base((int)v1); -} -// 51A818: using guessed type void (__cdecl *off_51A818)(std::ostream *__hidden this); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004A2570) -------------------------------------------------------- -void __thiscall std::ostream::~ostream(_DWORD *ecx0, std::ostream *this) -{ - int v2; // eax - - v2 = *(_DWORD *)this; - *ecx0 = *(_DWORD *)this; - *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); -} - -//----- (004A2590) -------------------------------------------------------- -_DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // ebx - std::ios_base **v4; // esi - std::ios_base *v5; // eax - char v6; // dl - char v7; // dl - std::ios_base *v9; // [esp+4h] [ebp-18h] - - v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - v4 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - std::ios_base::_M_swap(v4, v3, v9); - std::ios::_M_cache_locale(v4, (int)(v4 + 27)); - std::ios::_M_cache_locale(v3, (int)v3 + 108); - v5 = v4[28]; - v4[28] = (std::ios_base *)*((_DWORD *)v3 + 28); - *((_DWORD *)v3 + 28) = v5; - v6 = *((_BYTE *)v4 + 116); - *((_BYTE *)v4 + 116) = *((_BYTE *)v3 + 116); - LOBYTE(v5) = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 116) = v6; - v7 = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 117) = (_BYTE)v5; - *((_BYTE *)v3 + 117) = v7; - return this; -} -// 4A25CA: variable 'v9' is possibly undefined - -//----- (004A2640) -------------------------------------------------------- -int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)) -{ - return a2(this); -} - -//----- (004A2650) -------------------------------------------------------- -char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004A2670) -------------------------------------------------------- -char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004A26A0) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2) -{ - char *v2; // ecx - int v3; // eax - int v4; // ecx - int v6; // [esp+0h] [ebp-78h] - std::ostream *v7; // [esp+4h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v10; // [esp+57h] [ebp-21h] BYREF - char v11[4]; // [esp+58h] [ebp-20h] BYREF - _DWORD *v12; // [esp+5Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v11, this, v7); - if ( v11[0] ) - { - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - if ( !a2 ) - { - v3 = 1; - goto LABEL_13; - } - if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v2 + 30), &v10) ) - { - v3 = 4; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); -LABEL_13: - std::ios::clear(v2, *((_DWORD *)v2 + 5) | v3); - } - } - else if ( !a2 ) - { - v3 = 1; - v2 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); - goto LABEL_13; - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpt + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v6) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), - *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); - } - } - return this; -} -// 4A26E2: variable 'v7' is possibly undefined -// 4A277B: variable 'v6' is possibly undefined -// 4A26A0: using guessed type char var_20[4]; - -//----- (004A28B0) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2) -{ - return std::ostream::_M_insert(this, a2); -} - -//----- (004A28E0) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2) -{ - return std::ostream::_M_insert(this, a2); -} - -//----- (004A2940) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) -{ - int v2; // eax - - v2 = *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 12) & 0x4A; - if ( v2 == 64 || v2 == 8 ) - return std::ostream::_M_insert(this, a2); - else - return std::ostream::_M_insert(this, (__int16)a2); -} - -//----- (004A2980) -------------------------------------------------------- -std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) -{ - return std::ostream::_M_insert(this, a2); -} - -//----- (004A29B0) -------------------------------------------------------- -char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2) -{ - return (char *)this - a2; -} - -//----- (004A29C0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004A29D0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004A29E0) -------------------------------------------------------- -char *__fastcall std::string::_M_leak_hard(char **a1) -{ - char *result; // eax - unsigned int v3; // [esp+Ch] [ebp-10h] - - if ( *((int *)*a1 - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v3); - result = *a1; - *((_DWORD *)*a1 - 1) = -1; - return result; -} -// 4A2A06: variable 'v3' is possibly undefined - -//----- (004A2A20) -------------------------------------------------------- -_DWORD *__cdecl std::string::_S_construct(size_t Size, char a2) -{ - _DWORD *v2; // ebx - _DWORD *result; // eax - - v2 = std::string::_Rep::_S_create(Size, 0); - if ( Size ) - { - if ( Size == 1 ) - *((_BYTE *)v2 + 12) = a2; - else - memset(v2 + 3, a2, Size); - } - v2[2] = 0; - result = v2 + 3; - *v2 = Size; - *((_BYTE *)v2 + Size + 12) = 0; - return result; -} - -//----- (004A2A90) -------------------------------------------------------- -int __cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, int a2) -{ - size_t Size; // ebx - size_t *v3; // eax - size_t *v4; // esi - int v5; // ebp - int result; // eax - - Size = a2 - (_DWORD)Src; - v3 = std::string::_Rep::_S_create(a2 - (_DWORD)Src, 0); - v4 = v3; - v5 = (int)(v3 + 3); - if ( a2 - (_DWORD)Src == 1 ) - { - *((_BYTE *)v3 + 12) = *Src; - } - else if ( Size ) - { - memcpy(v3 + 3, Src, Size); - } - v4[2] = 0; - result = v5; - *v4 = Size; - *((_BYTE *)v4 + Size + 12) = 0; - return result; -} - -//----- (004A2B00) -------------------------------------------------------- -int __cdecl std::string::_S_construct(_BYTE *Src, int a2) -{ - size_t Size; // ebx - size_t *v3; // eax - size_t *v4; // esi - int v5; // ebp - int result; // eax - - if ( a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a2 - (_DWORD)Src; - v3 = std::string::_Rep::_S_create(a2 - (_DWORD)Src, 0); - v4 = v3; - v5 = (int)(v3 + 3); - if ( a2 - (_DWORD)Src == 1 ) - { - *((_BYTE *)v3 + 12) = *Src; - } - else if ( Size ) - { - memcpy(v3 + 3, Src, Size); - } - v4[2] = 0; - result = v5; - *v4 = Size; - *((_BYTE *)v4 + Size + 12) = 0; - return result; -} - -//----- (004A2B90) -------------------------------------------------------- -int __cdecl std::string::_S_construct(_BYTE *Src, int a2) -{ - size_t Size; // ebx - size_t *v3; // eax - size_t *v4; // esi - int v5; // ebp - int result; // eax - - if ( a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a2 - (_DWORD)Src; - v3 = std::string::_Rep::_S_create(a2 - (_DWORD)Src, 0); - v4 = v3; - v5 = (int)(v3 + 3); - if ( a2 - (_DWORD)Src == 1 ) - { - *((_BYTE *)v3 + 12) = *Src; - } - else if ( Size ) - { - memcpy(v3 + 3, Src, Size); - } - v4[2] = 0; - result = v5; - *v4 = Size; - *((_BYTE *)v4 + Size + 12) = 0; - return result; -} - -//----- (004A2C20) -------------------------------------------------------- -void *std::string::_S_empty_rep() -{ - return &std::string::_Rep::_S_empty_rep_storage; -} - -//----- (004A2C30) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004A2C70) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004A2CB0) -------------------------------------------------------- -size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size) -{ - size_t result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = (unsigned __int8)*Src; - *(_BYTE *)this = result; - } - else if ( result ) - { - return (size_t)memcpy(this, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004A2CF0) -------------------------------------------------------- -size_t __cdecl std::string::_S_copy_chars(std::string *this, char *Src, size_t Size) -{ - size_t result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = (unsigned __int8)*Src; - *(_BYTE *)this = result; - } - else if ( result ) - { - return (size_t)memcpy(this, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004A2D30) -------------------------------------------------------- -void __fastcall std::string::shrink_to_fit(int *a1) -{ - unsigned int v1; // [esp+4h] [ebp-64h] - - if ( *(_DWORD *)(*a1 - 12) < *(_DWORD *)(*a1 - 8) ) - std::string::reserve(a1, 0, v1); -} -// 4A2D99: variable 'v1' is possibly undefined - -//----- (004A2DC0) -------------------------------------------------------- -char **__userpurge std::string::_M_replace_aux@( - char **a1@, - std::string *this, - unsigned int a3, - size_t Size, - char a5, - char a6) -{ - _BYTE *v7; // edi - unsigned int v9; // [esp+Ch] [ebp-20h] - - if ( Size > a3 + 1073741820 - *((_DWORD *)*a1 - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); - if ( !Size ) - return a1; - v7 = (char *)this + (_DWORD)*a1; - if ( Size != 1 ) - { - memset(v7, a5, Size); - return a1; - } - *v7 = a5; - return a1; -} -// 4A2DF5: variable 'v9' is possibly undefined - -//----- (004A2E50) -------------------------------------------------------- -char **__userpurge std::string::_M_replace_safe@( - char **a1@, - std::string *this, - unsigned int a3, - _BYTE *Src, - size_t Size, - unsigned int a6) -{ - _BYTE *v7; // edi - unsigned int v9; // [esp+Ch] [ebp-10h] - - std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); - if ( !Size ) - return a1; - v7 = (char *)this + (_DWORD)*a1; - if ( Size != 1 ) - { - memcpy(v7, Src, Size); - return a1; - } - *v7 = *Src; - return a1; -} -// 4A2E6F: variable 'v9' is possibly undefined - -//----- (004A2EC0) -------------------------------------------------------- -_DWORD *__cdecl std::string::_S_construct_aux_2(size_t Size, char a2) -{ - _DWORD *v2; // ebx - _DWORD *result; // eax - - v2 = std::string::_Rep::_S_create(Size, 0); - if ( Size ) - { - if ( Size == 1 ) - *((_BYTE *)v2 + 12) = a2; - else - memset(v2 + 3, a2, Size); - } - v2[2] = 0; - result = v2 + 3; - *v2 = Size; - *((_BYTE *)v2 + Size + 12) = 0; - return result; -} - -//----- (004A2F30) -------------------------------------------------------- -char *__userpurge std::string::at@(char **a1@, std::string *this, unsigned int a3) -{ - char *v3; // eax - char *v6; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v3 = *a1; - if ( (unsigned int)this >= *((_DWORD *)*a1 - 3) ) - std::__throw_out_of_range_fmt( - "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", - (size_t)this, - *((_DWORD *)*a1 - 3)); - if ( *((int *)v3 - 1) < 0 ) - return &v3[(_DWORD)this]; - if ( *((int *)v3 - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v7); - v6 = *a1; - *((_DWORD *)v6 - 1) = -1; - return &v6[(_DWORD)this]; -} -// 4A2F78: variable 'v7' is possibly undefined - -//----- (004A2FB0) -------------------------------------------------------- -char *__fastcall std::string::end(char **a1) -{ - char *v1; // eax - char *v4; // eax - unsigned int v5; // [esp+Ch] [ebp-10h] - - v1 = *a1; - if ( *((int *)*a1 - 1) < 0 ) - return &v1[*((_DWORD *)v1 - 3)]; - if ( *((int *)v1 - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v5); - v4 = *a1; - *((_DWORD *)v4 - 1) = -1; - return &v4[*((_DWORD *)v4 - 3)]; -} -// 4A2FE4: variable 'v5' is possibly undefined - -//----- (004A3000) -------------------------------------------------------- -void __thiscall std::string::_Rep::_M_destroy(void *Block, int a2) -{ - operator delete(Block); -} - -//----- (004A3020) -------------------------------------------------------- -void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *Block, int a2) -{ - int v2; // eax - - if ( !_CRT_MT ) - { - v2 = *((_DWORD *)Block + 2); - *((_DWORD *)Block + 2) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)Block); - return; - } - if ( _InterlockedExchangeAdd(Block + 2, 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004A3060) -------------------------------------------------------- -int __fastcall std::string::_Rep::_M_refcopy(int a1) -{ - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); - else - ++*(_DWORD *)(a1 + 8); - return a1 + 12; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004A3090) -------------------------------------------------------- -int __fastcall std::string::_Rep::_M_refdata(int a1) -{ - return a1 + 12; -} - -//----- (004A30A0) -------------------------------------------------------- -void *std::string::_Rep::_S_empty_rep() -{ - return &std::string::_Rep::_S_empty_rep_storage; -} - -//----- (004A30B0) -------------------------------------------------------- -void __fastcall std::string::_Rep::_M_set_leaked(int a1) -{ - *(_DWORD *)(a1 + 8) = -1; -} - -//----- (004A30C0) -------------------------------------------------------- -void __fastcall std::string::_Rep::_M_set_sharable(int a1) -{ - *(_DWORD *)(a1 + 8) = 0; -} - -//----- (004A30D0) -------------------------------------------------------- -std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@( - _DWORD *a1@, - std::string::_Rep *this, - unsigned int a3) -{ - std::string::_Rep *result; // eax - - result = this; - a1[2] = 0; - *a1 = this; - *((_BYTE *)this + (_DWORD)a1 + 12) = 0; - return result; -} - -//----- (004A30F0) -------------------------------------------------------- -volatile signed __int32 *__thiscall std::string::_Rep::_M_grab(volatile signed __int32 *this, int a2, int a3) -{ - volatile signed __int32 *result; // eax - - if ( *((int *)this + 2) < 0 ) - return std::string::_Rep::_M_clone((int)this, a2, 0); - if ( _CRT_MT ) - { - _InterlockedAdd(this + 2, 1u); - return this + 3; - } - else - { - result = this + 3; - ++*((_DWORD *)this + 2); - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004A3140) -------------------------------------------------------- -_DWORD *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3) -{ - _DWORD *v4; // ebx - size_t v5; // eax - - v4 = std::string::_Rep::_S_create(a3 + *(_DWORD *)this, *(_DWORD *)(this + 4)); - v5 = *(_DWORD *)this; - if ( *(_DWORD *)this ) - { - if ( v5 == 1 ) - *((_BYTE *)v4 + 12) = *(_BYTE *)(this + 12); - else - memcpy(v4 + 3, (const void *)(this + 12), *(_DWORD *)this); - v5 = *(_DWORD *)this; - } - *v4 = v5; - v4[2] = 0; - *((_BYTE *)v4 + v5 + 12) = 0; - return v4 + 3; -} - -//----- (004A31C0) -------------------------------------------------------- -_DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2) -{ - unsigned int v2; // ebx - size_t v3; // eax - _DWORD *result; // eax - - v2 = a1; - if ( a1 > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::_S_create"); - if ( a1 <= a2 ) - { - v3 = a1 + 13; - } - else - { - if ( a1 < 2 * a2 ) - v2 = 2 * a2; - if ( v2 + 29 <= 0x1000 || v2 <= a2 ) - { - v3 = v2 + 13; - if ( (int)(v2 + 13) < 0 ) - std::__throw_bad_alloc(); - } - else - { - v2 = v2 + 4096 - (((_WORD)v2 + 29) & 0xFFF); - if ( v2 > 0x3FFFFFFC ) - v2 = 1073741820; - v3 = v2 + 13; - } - } - result = operator new(v3); - result[1] = v2; - result[2] = 0; - return result; -} - -//----- (004A3250) -------------------------------------------------------- -char *__fastcall std::string::back(char **a1) -{ - char *v1; // eax - int v2; // esi - char *v5; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v1 = *a1; - v2 = *((_DWORD *)*a1 - 3) - 1; - if ( *((int *)*a1 - 1) < 0 ) - return &v1[v2]; - if ( *((int *)v1 - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v6); - v5 = *a1; - *((_DWORD *)v5 - 1) = -1; - return &v5[v2]; -} -// 4A3290: variable 'v6' is possibly undefined - -//----- (004A32B0) -------------------------------------------------------- -char **__thiscall std::string::rend(char **ecx0, char **this) -{ - char *v3; // eax - char *v5; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v3 = *this; - if ( *((int *)*this - 1) >= 0 ) - { - if ( *((int *)v3 - 1) > 0 ) - std::string::_M_mutate(this, 0, 0, 0, v6); - v5 = *this; - *((_DWORD *)v5 - 1) = -1; - *ecx0 = v5; - return ecx0; - } - else - { - *ecx0 = v3; - return ecx0; - } -} -// 4A32F0: variable 'v6' is possibly undefined - -//----- (004A3310) -------------------------------------------------------- -int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3) -{ - int result; // eax - int v4; // edx - - result = *a1; - if ( *(int *)(*a1 - 4) < 0 ) - *(_DWORD *)(result - 4) = 0; - v4 = *(_DWORD *)this; - if ( *(int *)(*(_DWORD *)this - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *a1 = v4; - *(_DWORD *)this = result; - return result; -} - -//----- (004A3340) -------------------------------------------------------- -char *__fastcall std::string::begin(char **a1) -{ - char *result; // eax - unsigned int v3; // [esp+Ch] [ebp-10h] - - result = *a1; - if ( *((int *)*a1 - 1) >= 0 ) - { - if ( *((int *)result - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v3); - result = *a1; - *((_DWORD *)*a1 - 1) = -1; - } - return result; -} -// 4A3374: variable 'v3' is possibly undefined - -//----- (004A3390) -------------------------------------------------------- -void __fastcall std::string::clear(char **a1) -{ - unsigned int v1; // [esp+Ch] [ebp-10h] - - std::string::_M_mutate(a1, 0, *((_DWORD *)*a1 - 3), 0, v1); -} -// 4A33AB: variable 'v1' is possibly undefined - -//----- (004A33C0) -------------------------------------------------------- -char *__thiscall std::string::erase(char **this, int a2) -{ - size_t v3; // esi - char *v4; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v3 = a2 - (_DWORD)*this; - std::string::_M_mutate(this, v3, 1u, 0, v6); - v4 = *this; - *((_DWORD *)v4 - 1) = -1; - return &v4[v3]; -} -// 4A33E2: variable 'v6' is possibly undefined - -//----- (004A3400) -------------------------------------------------------- -char *__thiscall std::string::erase(char **this, char *a2, char *a3) -{ - char *result; // eax - size_t v5; // ebx - char *v6; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - result = a2; - if ( a3 != a2 ) - { - v5 = a2 - *this; - std::string::_M_mutate(this, v5, a3 - a2, 0, v7); - v6 = *this; - *((_DWORD *)v6 - 1) = -1; - return &v6[v5]; - } - return result; -} -// 4A3435: variable 'v7' is possibly undefined - -//----- (004A3450) -------------------------------------------------------- -char **__userpurge std::string::erase@(char **a1@, std::string *this, unsigned int a3, unsigned int a4) -{ - unsigned int v5; // ecx - unsigned int v6; // eax - unsigned int v8; // [esp+Ch] [ebp-10h] - - v5 = *((_DWORD *)*a1 - 3); - v6 = v5 - (_DWORD)this; - if ( v5 - (unsigned int)this > a3 ) - v6 = a3; - if ( (unsigned int)this > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - (size_t)this, - v5); - std::string::_M_mutate(a1, (size_t)this, v6, 0, v8); - return a1; -} -// 4A3482: variable 'v8' is possibly undefined - -//----- (004A34B0) -------------------------------------------------------- -char *__fastcall std::string::front(char **a1) -{ - char *result; // eax - unsigned int v3; // [esp+Ch] [ebp-10h] - - result = *a1; - if ( *((int *)*a1 - 1) >= 0 ) - { - if ( *((int *)result - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v3); - result = *a1; - *((_DWORD *)*a1 - 1) = -1; - } - return result; -} -// 4A34E4: variable 'v3' is possibly undefined - -//----- (004A3500) -------------------------------------------------------- -unsigned int *__userpurge std::string::append@(unsigned int *a1@, std::string *this, const char *a3) -{ - size_t v4; // eax - unsigned int v6; // [esp+8h] [ebp-14h] - - v4 = strlen((const char *)this); - return std::string::append(a1, this, v4, v6); -} -// 4A351C: variable 'v6' is possibly undefined - -//----- (004A3530) -------------------------------------------------------- -unsigned int *__userpurge std::string::append@( - unsigned int *a1@, - std::string *this, - size_t Size, - unsigned int a4) -{ - std::string *v5; // ebp - unsigned int v6; // eax - int v7; // esi - std::string *v8; // esi - _BYTE *v9; // eax - int v10; // eax - char *v12; // ebp - bool v13; // cc - void *Src; // [esp+4h] [ebp-28h] - - v5 = this; - if ( Size ) - { - v6 = *a1; - v7 = *(_DWORD *)(*a1 - 12); - if ( Size > 1073741820 - v7 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v8 = (std::string *)(Size + v7); - if ( (unsigned int)v8 > *(_DWORD *)(v6 - 8) || (v13 = *(_DWORD *)(v6 - 4) <= 0, v6 = *a1, !v13) ) - { - if ( v6 <= (unsigned int)this && (unsigned int)this <= v6 + *(_DWORD *)(v6 - 12) ) - { - v12 = (char *)this - v6; - std::string::reserve((int *)a1, v8, (unsigned int)Src); - v5 = (std::string *)&v12[*a1]; - v9 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( Size != 1 ) - goto LABEL_8; - goto LABEL_12; - } - std::string::reserve((int *)a1, v8, (unsigned int)Src); - v6 = *a1; - } - v9 = (_BYTE *)(*(_DWORD *)(v6 - 12) + v6); - if ( Size != 1 ) - { -LABEL_8: - memcpy(v9, v5, Size); -LABEL_9: - v10 = *a1; - *(_DWORD *)(v10 - 4) = 0; - *(_DWORD *)(v10 - 12) = v8; - *((_BYTE *)v8 + v10) = 0; - return a1; - } -LABEL_12: - *v9 = *(_BYTE *)v5; - goto LABEL_9; - } - return a1; -} -// 4A3572: variable 'Src' is possibly undefined - -//----- (004A3600) -------------------------------------------------------- -int *__userpurge std::string::append@(int *a1@, std::string *this, const std::string *a3) -{ - size_t Size; // esi - size_t v5; // edi - _BYTE *v6; // edx - _BYTE *v7; // eax - int v8; // eax - void *Src; // [esp+4h] [ebp-28h] - - Size = *(_DWORD *)(*(_DWORD *)this - 12); - if ( Size ) - { - v5 = Size + *(_DWORD *)(*a1 - 12); - if ( v5 > *(_DWORD *)(*a1 - 8) || *(int *)(*a1 - 4) > 0 ) - { - std::string::reserve(a1, (std::string *)(Size + *(_DWORD *)(*a1 - 12)), (unsigned int)Src); - v6 = *(_BYTE **)this; - v7 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( Size == 1 ) - { -LABEL_9: - *v7 = *v6; - goto LABEL_5; - } - } - else - { - v6 = *(_BYTE **)this; - v7 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( Size == 1 ) - goto LABEL_9; - } - memcpy(v7, v6, Size); -LABEL_5: - v8 = *a1; - *(_DWORD *)(v8 - 4) = 0; - *(_DWORD *)(v8 - 12) = v5; - *(_BYTE *)(v8 + v5) = 0; - } - return a1; -} -// 4A3628: variable 'Src' is possibly undefined - -//----- (004A3690) -------------------------------------------------------- -int *__userpurge std::string::append@( - int *a1@, - std::string *this, - const std::string *a3, - size_t a4, - unsigned int a5) -{ - unsigned int v5; // ebx - size_t Size; // ebx - std::string *v8; // edx - _BYTE *v9; // edi - _BYTE *v10; // eax - int v11; // eax - void *Src; // [esp+4h] [ebp-38h] - std::string *v14; // [esp+1Ch] [ebp-20h] - std::string *v15; // [esp+1Ch] [ebp-20h] - - v5 = *(_DWORD *)(*(_DWORD *)this - 12); - if ( (unsigned int)a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::append", - (size_t)a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - Size = v5 - (_DWORD)a3; - if ( Size > a4 ) - Size = a4; - if ( Size ) - { - v8 = (std::string *)(Size + *(_DWORD *)(*a1 - 12)); - if ( (unsigned int)v8 > *(_DWORD *)(*a1 - 8) || *(int *)(*a1 - 4) > 0 ) - { - v14 = (std::string *)(Size + *(_DWORD *)(*a1 - 12)); - std::string::reserve(a1, v14, (unsigned int)Src); - v8 = v14; - } - v9 = (char *)a3 + *(_DWORD *)this; - v10 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( Size == 1 ) - { - *v10 = *v9; - } - else - { - v15 = v8; - memcpy(v10, v9, Size); - v8 = v15; - } - v11 = *a1; - *(_DWORD *)(v11 - 4) = 0; - *(_DWORD *)(v11 - 12) = v8; - *((_BYTE *)v8 + v11) = 0; - } - return a1; -} -// 4A36DA: variable 'Src' is possibly undefined - -//----- (004A3770) -------------------------------------------------------- -int *__userpurge std::string::append@(int *a1@, size_t this, char a3, char a4) -{ - int v5; // edx - int v6; // esi - std::string *v7; // esi - _BYTE *v8; // eax - int v9; // eax - int Val; // [esp+4h] [ebp-28h] - - if ( this ) - { - v5 = *a1; - v6 = *(_DWORD *)(*a1 - 12); - if ( this > 1073741820 - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v7 = (std::string *)(this + v6); - if ( (unsigned int)v7 > *(_DWORD *)(v5 - 8) || *(int *)(v5 - 4) > 0 ) - std::string::reserve(a1, v7, Val); - v8 = (_BYTE *)(*(_DWORD *)(*a1 - 12) + *a1); - if ( this == 1 ) - *v8 = a3; - else - memset(v8, a3, this); - v9 = *a1; - *(_DWORD *)(v9 - 4) = 0; - *(_DWORD *)(v9 - 12) = v7; - *((_BYTE *)v7 + v9) = 0; - } - return a1; -} -// 4A37A8: variable 'Val' is possibly undefined - -//----- (004A3810) -------------------------------------------------------- -_DWORD *__thiscall std::string::assign(_DWORD *this, int *a2) -{ - _DWORD *result; // eax - int v3; // edx - int v4; // ecx - - result = this; - v3 = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - v4 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *result = v4; - *a2 = v3; - return result; -} - -//----- (004A3850) -------------------------------------------------------- -char **__userpurge std::string::assign@(char **a1@, std::string *this, const char *a3) -{ - size_t v4; // eax - unsigned int v6; // [esp+8h] [ebp-14h] - - v4 = strlen((const char *)this); - return std::string::assign(a1, this, v4, v6); -} -// 4A386C: variable 'v6' is possibly undefined - -//----- (004A3880) -------------------------------------------------------- -char **__userpurge std::string::assign@(char **a1@, std::string *this, size_t Size, unsigned int a4) -{ - char *v4; // eax - unsigned int v5; // edx - bool v7; // cc - char *v8; // eax - char *v9; // eax - unsigned int v11; // [esp+Ch] [ebp-10h] - - v4 = *a1; - v5 = *((_DWORD *)*a1 - 3); - if ( Size > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::assign"); - if ( v4 <= (char *)this && &v4[v5] >= (char *)this ) - { - v7 = *((_DWORD *)v4 - 1) <= 0; - v8 = *a1; - if ( !v7 ) - { - v5 = *((_DWORD *)v8 - 3); - goto LABEL_6; - } - if ( Size <= this - (std::string *)v8 ) - { - if ( Size != 1 ) - { - if ( Size ) - { - memcpy(v8, this, Size); - v8 = *a1; - } - goto LABEL_15; - } - } - else - { - if ( this == (std::string *)v8 ) - { -LABEL_15: - *((_DWORD *)v8 - 1) = 0; - *((_DWORD *)v8 - 3) = Size; - v8[Size] = 0; - return a1; - } - if ( Size != 1 ) - { - if ( Size ) - { - memmove(v8, this, Size); - v8 = *a1; - } - goto LABEL_15; - } - } - *v8 = *(_BYTE *)this; - v8 = *a1; - goto LABEL_15; - } -LABEL_6: - std::string::_M_mutate(a1, 0, v5, Size, v11); - if ( !Size ) - return a1; - v9 = *a1; - if ( Size != 1 ) - { - memcpy(v9, this, Size); - return a1; - } - *v9 = *(_BYTE *)this; - return a1; -} -// 4A38D1: variable 'v11' is possibly undefined - -//----- (004A3990) -------------------------------------------------------- -int *__userpurge std::string::assign@(int *a1@, std::string *this, const std::string *a3) -{ - _DWORD *v4; // esi - int v5; // eax - int v6; // edx - char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v4 = *(_DWORD **)this; - if ( *a1 != *(_DWORD *)this ) - { - if ( (int)*(v4 - 1) < 0 ) - { - v4 = std::string::_Rep::_M_clone((int)(v4 - 3), (int)v8, 0); - v5 = *a1; - if ( !_CRT_MT ) - goto LABEL_6; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(v4 - 1, 1u); - else - ++*(v4 - 1); - v5 = *a1; - if ( !_CRT_MT ) - { -LABEL_6: - v6 = *(_DWORD *)(v5 - 4); - *(_DWORD *)(v5 - 4) = v6 - 1; - if ( v6 > 0 ) - { -LABEL_7: - *a1 = (int)v4; - return a1; - } -LABEL_11: - operator delete((void *)(v5 - 12)); - *a1 = (int)v4; - return a1; - } - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v5 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - goto LABEL_11; - } - return a1; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4A3990: using guessed type char var_D[13]; - -//----- (004A3A40) -------------------------------------------------------- -char **__userpurge std::string::assign@( - char **a1@, - std::string *this, - const std::string *a3, - size_t a4, - unsigned int a5) -{ - size_t v5; // eax - unsigned int v7; // [esp+8h] [ebp-14h] - - v5 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; - if ( v5 > a4 ) - v5 = a4; - if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::assign", - (size_t)a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - return std::string::assign(a1, (const std::string *)((char *)a3 + *(_DWORD *)this), v5, v7); -} -// 4A3A71: variable 'v7' is possibly undefined - -//----- (004A3AB0) -------------------------------------------------------- -char **__userpurge std::string::assign@(char **a1@, size_t this, char a3, char a4) -{ - char *v5; // edx - unsigned int v7; // [esp+Ch] [ebp-10h] - - if ( this > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(a1, 0, *((_DWORD *)*a1 - 3), this, v7); - if ( !this ) - return a1; - v5 = *a1; - if ( this != 1 ) - { - memset(v5, a3, this); - return a1; - } - *v5 = a3; - return a1; -} -// 4A3ADC: variable 'v7' is possibly undefined - -//----- (004A3B30) -------------------------------------------------------- -char **__userpurge std::string::insert@(char **a1@, std::string *a2, char *a3, size_t a4, unsigned int a5) -{ - return std::string::insert(a1, a2 - (std::string *)*a1, a3, a4, a5); -} - -//----- (004A3B40) -------------------------------------------------------- -char *__thiscall std::string::insert(char **this, int a2, char a3) -{ - int v3; // esi - char *v5; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v3 = a2 - (_DWORD)*this; - if ( *((_DWORD *)*this - 3) == 1073741820 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(this, a2 - (_DWORD)*this, 0, 1u, v7); - (*this)[v3] = a3; - v5 = *this; - *((_DWORD *)v5 - 1) = -1; - return &v5[v3]; -} -// 4A3B70: variable 'v7' is possibly undefined - -//----- (004A3BA0) -------------------------------------------------------- -void __thiscall std::string::insert(char **this, int a2, size_t Size, char a4) -{ - size_t v4; // esi - char *v6; // esi - unsigned int v7; // [esp+Ch] [ebp-20h] - - v4 = a2 - (_DWORD)*this; - if ( Size > 1073741820 - *((_DWORD *)*this - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(this, v4, 0, Size, v7); - if ( Size ) - { - v6 = &(*this)[v4]; - if ( Size == 1 ) - *v6 = a4; - else - memset(v6, a4, Size); - } -} -// 4A3BD4: variable 'v7' is possibly undefined - -//----- (004A3C30) -------------------------------------------------------- -char **__userpurge std::string::insert@(char **a1@, std::string *this, char *Str, const char *a4) -{ - size_t v5; // eax - unsigned int v7; // [esp+Ch] [ebp-10h] - - v5 = strlen(Str); - return std::string::insert(a1, (size_t)this, Str, v5, v7); -} -// 4A3C54: variable 'v7' is possibly undefined - -//----- (004A3C70) -------------------------------------------------------- -char **__userpurge std::string::insert@(char **a1@, size_t this, char *Src, size_t Size, unsigned int a5) -{ - char *v5; // edx - size_t v6; // eax - char *v8; // edi - int v10; // ebp - char *v11; // eax - char *v12; // edx - size_t v13; // edi - char *v14; // esi - char *v15; // edx - size_t v16; // eax - unsigned int v17; // [esp+Ch] [ebp-30h] - char *v18; // [esp+1Ch] [ebp-20h] - - v5 = *a1; - v6 = *((_DWORD *)*a1 - 3); - if ( this > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - this, - *((_DWORD *)*a1 - 3)); - if ( Size > 1073741820 - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::insert"); - if ( v5 <= Src && Src <= &v5[v6] && *((int *)v5 - 1) <= 0 ) - { - v10 = Src - *a1; - std::string::_M_mutate(a1, this, 0, Size, v17); - v11 = &(*a1)[v10]; - v12 = &(*a1)[this]; - if ( &v11[Size] > v12 ) - { - if ( v11 < v12 ) - { - v13 = this - v10; - if ( this - v10 == 1 ) - { - *v12 = *v11; - } - else if ( v13 ) - { - v18 = &(*a1)[this]; - memcpy(v12, v11, v13); - v12 = v18; - } - v14 = &v12[Size]; - v15 = &v12[v13]; - v16 = Size - v13; - if ( Size - v13 == 1 ) - { - *v15 = *v14; - } - else if ( v16 ) - { - memcpy(v15, v14, v16); - } - } - else if ( Size == 1 ) - { - *v12 = v11[1]; - } - else if ( Size ) - { - memcpy(v12, &v11[Size], Size); - } - } - else if ( Size == 1 ) - { - *v12 = *v11; - } - else if ( Size ) - { - memcpy(v12, v11, Size); - } - return a1; - } - std::string::_M_mutate(a1, this, 0, Size, v17); - if ( !Size ) - return a1; - v8 = &(*a1)[this]; - if ( Size != 1 ) - { - memcpy(v8, Src, Size); - return a1; - } - *v8 = *Src; - return a1; -} -// 4A3CC3: variable 'v17' is possibly undefined - -//----- (004A3E20) -------------------------------------------------------- -char **__userpurge std::string::insert@(char **a1@, std::string *this, char **a3, const std::string *a4) -{ - unsigned int v5; // [esp+Ch] [ebp-10h] - - return std::string::insert(a1, (size_t)this, *a3, *((_DWORD *)*a3 - 3), v5); -} -// 4A3E3B: variable 'v5' is possibly undefined - -//----- (004A3E50) -------------------------------------------------------- -char **__userpurge std::string::insert@( - char **a1@, - std::string *this, - _DWORD *a3, - const std::string *a4, - size_t a5, - unsigned int a6) -{ - size_t v6; // eax - unsigned int v8; // [esp+Ch] [ebp-10h] - - v6 = *(_DWORD *)(*a3 - 12) - (_DWORD)a4; - if ( v6 > a5 ) - v6 = a5; - if ( (unsigned int)a4 > *(_DWORD *)(*a3 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - (size_t)a4, - *(_DWORD *)(*a3 - 12)); - return std::string::insert(a1, (size_t)this, (char *)a4 + *a3, v6, v8); -} -// 4A3E89: variable 'v8' is possibly undefined - -//----- (004A3EC0) -------------------------------------------------------- -char **__userpurge std::string::insert@(char **a1@, std::string *this, size_t Size, char a4, char a5) -{ - unsigned int v5; // edx - _BYTE *v7; // edi - unsigned int v9; // [esp+Ch] [ebp-20h] - - v5 = *((_DWORD *)*a1 - 3); - if ( (unsigned int)this > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - (size_t)this, - *((_DWORD *)*a1 - 3)); - if ( Size > 1073741820 - v5 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(a1, (size_t)this, 0, Size, v9); - if ( !Size ) - return a1; - v7 = (char *)this + (_DWORD)*a1; - if ( Size != 1 ) - { - memset(v7, a4, Size); - return a1; - } - *v7 = a4; - return a1; -} -// 4A3EF8: variable 'v9' is possibly undefined - -//----- (004A3F70) -------------------------------------------------------- -_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, char **this) -{ - char *v3; // eax - char *v5; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v3 = *this; - if ( *((int *)*this - 1) >= 0 ) - { - if ( *((int *)v3 - 1) > 0 ) - std::string::_M_mutate(this, 0, 0, 0, v6); - v5 = *this; - *((_DWORD *)v5 - 1) = -1; - *ecx0 = &v5[*((_DWORD *)v5 - 3)]; - return ecx0; - } - else - { - *ecx0 = &v3[*((_DWORD *)v3 - 3)]; - return ecx0; - } -} -// 4A3FB8: variable 'v6' is possibly undefined - -//----- (004A3FE0) -------------------------------------------------------- -void __userpurge std::string::resize(int *a1@, std::string *this, unsigned int a3) -{ - unsigned int v3; // edx - char v4; // [esp+8h] [ebp-14h] - unsigned int v5; // [esp+Ch] [ebp-10h] - - v3 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)this > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::resize"); - if ( (unsigned int)this > v3 ) - { - std::string::append(a1, (size_t)this - v3, 0, v4); - } - else if ( (unsigned int)this < v3 ) - { - std::string::_M_mutate((char **)a1, (size_t)this, v3 - (_DWORD)this, 0, v5); - } -} -// 4A4011: variable 'v5' is possibly undefined -// 4A402D: variable 'v4' is possibly undefined - -//----- (004A4050) -------------------------------------------------------- -void __userpurge std::string::resize(int *a1@, size_t this, char a3, char a4) -{ - unsigned int v4; // edx - unsigned int v5; // [esp+Ch] [ebp-10h] - - v4 = *(_DWORD *)(*a1 - 12); - if ( this > 0x3FFFFFFC ) - std::__throw_length_error((std::length_error *)"basic_string::resize"); - if ( this > v4 ) - { - std::string::append(a1, this - v4, a3, a4); - } - else if ( this < v4 ) - { - std::string::_M_mutate((char **)a1, this, v4 - this, 0, v5); - } -} -// 4A4089: variable 'v5' is possibly undefined - -//----- (004A40D0) -------------------------------------------------------- -size_t __cdecl std::string::_M_copy(std::string *this, char *Src, size_t Size) -{ - size_t result; // eax - - result = Size; - if ( Size == 1 ) - { - result = (unsigned __int8)*Src; - *(_BYTE *)this = result; - } - else if ( Size ) - { - return (size_t)memcpy(this, Src, Size); - } - return result; -} - -//----- (004A4110) -------------------------------------------------------- -std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3) -{ - std::string *result; // eax - - result = this; - *a1 = this; - return result; -} - -//----- (004A4120) -------------------------------------------------------- -char *__fastcall std::string::_M_leak(char **a1) -{ - char *result; // eax - unsigned int v3; // [esp+Ch] [ebp-10h] - - result = *a1; - if ( *((int *)*a1 - 1) >= 0 ) - { - if ( *((int *)result - 1) > 0 ) - std::string::_M_mutate(a1, 0, 0, 0, v3); - result = *a1; - *((_DWORD *)*a1 - 1) = -1; - } - return result; -} -// 4A4154: variable 'v3' is possibly undefined - -//----- (004A4170) -------------------------------------------------------- -size_t __cdecl std::string::_M_move(std::string *this, char *Src, size_t Size) -{ - size_t result; // eax - - result = Size; - if ( Size == 1 ) - { - result = (unsigned __int8)*Src; - *(_BYTE *)this = result; - } - else if ( Size ) - { - return (size_t)memmove(this, Src, Size); - } - return result; -} - -//----- (004A41B0) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - int a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); -} - -//----- (004A41D0) -------------------------------------------------------- -char **__thiscall std::string::replace(char **this, int a2, int a3, char *Str) -{ - size_t Size; // eax - unsigned int v7; // [esp+10h] [ebp-Ch] - - Size = strlen(Str); - return std::string::replace(this, a2 - (_DWORD)*this, a3 - a2, Str, Size, v7); -} -// 4A4201: variable 'v7' is possibly undefined - -//----- (004A4220) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - int a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); -} - -//----- (004A4240) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - size_t a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5, a6); -} - -//----- (004A4260) -------------------------------------------------------- -char **__thiscall std::string::replace(char **this, int a2, int a3, char **a4) -{ - unsigned int v5; // [esp+10h] [ebp-Ch] - - return std::string::replace(this, a2 - (_DWORD)*this, a3 - a2, *a4, *((_DWORD *)*a4 - 3), v5); -} -// 4A4288: variable 'v5' is possibly undefined - -//----- (004A42A0) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - int a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); -} - -//----- (004A42C0) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - int a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5 - (_DWORD)a4, a6); -} - -//----- (004A42E0) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *a2, - int a3, - char *a4, - size_t a5, - unsigned int a6) -{ - return std::string::replace(a1, a2 - (std::string *)*a1, a3 - (_DWORD)a2, a4, a5, a6); -} - -//----- (004A4300) -------------------------------------------------------- -char **__thiscall std::string::replace(char **this, int a2, int a3, size_t Size, char a5) -{ - char *v6; // ecx - size_t v7; // esi - char *v8; // esi - unsigned int v10; // [esp+Ch] [ebp-20h] - - v6 = *this; - v7 = a2 - (_DWORD)v6; - if ( Size > a3 - a2 + 1073741820 - *((_DWORD *)v6 - 3) ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - std::string::_M_mutate(this, v7, a3 - a2, Size, v10); - if ( !Size ) - return this; - v8 = &(*this)[v7]; - if ( Size != 1 ) - { - memset(v8, a5, Size); - return this; - } - *v8 = a5; - return this; -} -// 4A4339: variable 'v10' is possibly undefined - -//----- (004A4390) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *this, - unsigned int a3, - char *Str, - const char *a5) -{ - size_t Size; // eax - unsigned int v8; // [esp+10h] [ebp-Ch] - - Size = strlen(Str); - return std::string::replace(a1, (size_t)this, a3, Str, Size, v8); -} -// 4A43BC: variable 'v8' is possibly undefined - -//----- (004A43D0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -char **__userpurge std::string::replace@( - char **a1@, - size_t this, - size_t a3, - char *Src, - size_t Size, - unsigned int a6) -{ - char *v6; // edx - size_t v7; // eax - unsigned int v8; // ecx - char *v10; // eax - char *v11; // edx - int v12; // eax - unsigned int v13; // [esp+8h] [ebp-60h] - char *v14; // [esp+10h] [ebp-58h] - char *v15; // [esp+10h] [ebp-58h] - unsigned int v16; // [esp+14h] [ebp-54h] - - v6 = *a1; - v7 = *((_DWORD *)*a1 - 3); - if ( this > v7 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - this, - *((_DWORD *)*a1 - 3)); - v8 = v7 - this; - if ( v7 - this > a3 ) - v8 = a3; - v16 = v8; - if ( Size > v8 - v7 + 1073741820 ) - std::__throw_length_error((std::length_error *)"basic_string::replace"); - if ( v6 > Src || Src > &v6[v7] || *((int *)v6 - 1) > 0 ) - { - std::string::_M_mutate(a1, this, v8, Size, v13); - if ( Size ) - { - if ( Size == 1 ) - (*a1)[this] = *Src; - else - memcpy(&(*a1)[this], Src, Size); - } - return a1; - } - v10 = *a1; - if ( &Src[Size] <= &(*a1)[this] ) - { - v14 = (char *)(Src - v10); -LABEL_15: - std::string::_M_mutate(a1, this, v8, Size, v13); - v11 = &v14[(_DWORD)*a1]; - if ( Size == 1 ) - { - (*a1)[this] = *v11; - } - else if ( Size ) - { - memcpy(&(*a1)[this], v11, Size); - } - return a1; - } - if ( Src >= &v10[this + v8] ) - { - v14 = (char *)(Src - v10 + Size - v8); - goto LABEL_15; - } - LOBYTE(v13) = 0; - v15 = (char *)std::string::_S_construct(Src, (int)&Src[Size]); - std::string::_M_mutate(a1, this, v16, Size, v13); - if ( Size ) - { - if ( Size == 1 ) - (*a1)[this] = *v15; - else - memcpy(&(*a1)[this], v15, Size); - } - if ( _CRT_MT ) - { - v12 = _InterlockedExchangeAdd((volatile signed __int32 *)v15 - 1, 0xFFFFFFFF); - } - else - { - v12 = *((_DWORD *)v15 - 1); - *((_DWORD *)v15 - 1) = v12 - 1; - } - if ( v12 <= 0 ) - operator delete(v15 - 12); - return a1; -} -// 4A4699: positive sp value 4 has been found -// 4A4466: variable 'v13' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004A46B0) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *this, - unsigned int a3, - char **a4, - const std::string *a5) -{ - unsigned int v6; // [esp+10h] [ebp-Ch] - - return std::string::replace(a1, (size_t)this, a3, *a4, *((_DWORD *)*a4 - 3), v6); -} -// 4A46D3: variable 'v6' is possibly undefined - -//----- (004A46F0) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *this, - unsigned int a3, - _DWORD *a4, - const std::string *a5, - size_t a6, - unsigned int a7) -{ - size_t Size; // eax - unsigned int v9; // [esp+10h] [ebp-Ch] - - Size = *(_DWORD *)(*a4 - 12) - (_DWORD)a5; - if ( Size > a6 ) - Size = a6; - if ( (unsigned int)a5 > *(_DWORD *)(*a4 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - (size_t)a5, - *(_DWORD *)(*a4 - 12)); - return std::string::replace(a1, (size_t)this, a3, (char *)a5 + *a4, Size, v9); -} -// 4A4731: variable 'v9' is possibly undefined - -//----- (004A4760) -------------------------------------------------------- -char **__userpurge std::string::replace@( - char **a1@, - std::string *this, - unsigned int a3, - size_t a4, - char a5, - char a6) -{ - unsigned int v6; // eax - - v6 = *((_DWORD *)*a1 - 3) - (_DWORD)this; - if ( v6 > a3 ) - v6 = a3; - if ( (unsigned int)this > *((_DWORD *)*a1 - 3) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - (size_t)this, - *((_DWORD *)*a1 - 3)); - return std::string::_M_replace_aux(a1, this, v6, a4, a5, a6); -} - -//----- (004A47D0) -------------------------------------------------------- -void __userpurge std::string::reserve(int *a1@, std::string *this, unsigned int a3) -{ - int v4; // ecx - std::string *v5; // eax - unsigned int v6; // edx - int v7; // ecx - _DWORD *v8; // esi - int v9; // eax - int v10; // edx - char v11[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v4 = *a1; - v5 = this; - if ( this == *(std::string **)(v4 - 8) ) - { - if ( *(int *)(v4 - 4) <= 0 ) - return; - v4 = *a1; - } - v6 = *(_DWORD *)(v4 - 12); - v7 = v4 - 12; - if ( (unsigned int)this < v6 ) - v5 = (std::string *)v6; - v8 = std::string::_Rep::_M_clone(v7, (int)v11, (int)v5 - v6); - v9 = *a1; - if ( _CRT_MT ) - { - v10 = _InterlockedExchangeAdd((volatile signed __int32 *)(v9 - 4), 0xFFFFFFFF); - } - else - { - v10 = *(_DWORD *)(v9 - 4); - *(_DWORD *)(v9 - 4) = v10 - 1; - } - if ( v10 <= 0 ) - operator delete((void *)(v9 - 12)); - *a1 = (int)v8; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4A47D0: using guessed type char var_D[13]; - -//----- (004A4860) -------------------------------------------------------- -void __fastcall std::string::pop_back(char **a1) -{ - unsigned int v1; // eax - unsigned int v2; // [esp+Ch] [ebp-10h] - - v1 = *((_DWORD *)*a1 - 3); - if ( v1 - 1 > v1 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - 0xFFFFFFFF, - 0); - std::string::_M_mutate(a1, v1 - 1, 1u, 0, v2); -} -// 4A4882: variable 'v2' is possibly undefined - -//----- (004A48C0) -------------------------------------------------------- -char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size) -{ - char *result; // eax - - result = Val; - if ( Val == (char *)1 ) - { - *(_BYTE *)this = Size; - } - else if ( Val ) - { - return (char *)memset(this, (char)Size, (size_t)Val); - } - return result; -} - -//----- (004A4900) -------------------------------------------------------- -void __userpurge std::string::_M_mutate( - char **a1@, - size_t this, - unsigned int a3, - unsigned int a4, - unsigned int a5) -{ - int v6; // edi - unsigned int v7; // edx - unsigned int v8; // esi - size_t Size; // edi - _DWORD *v10; // edx - _DWORD *v11; // ebp - size_t v12; // ecx - _DWORD *Src; // eax - _DWORD *v14; // eax - int v15; // edx - _BYTE *v16; // eax - _BYTE *v17; // edx - _BYTE *v18; // ecx - _DWORD *v19; // [esp+18h] [ebp-34h] - - v6 = *((_DWORD *)*a1 - 3); - v7 = *((_DWORD *)*a1 - 2); - v8 = v6 + a4 - a3; - Size = v6 - (this + a3); - if ( v8 > v7 ) - { -LABEL_4: - v10 = std::string::_Rep::_S_create(v8, v7); - v11 = v10 + 3; - v12 = this + a3; - if ( this ) - { - Src = *a1; - v11 = v10 + 3; - if ( this == 1 ) - { - *((_BYTE *)v10 + 12) = *(_BYTE *)Src; - v14 = *a1; - if ( !Size ) - goto LABEL_8; - goto LABEL_12; - } - v19 = v10; - memcpy(v11, Src, this); - v12 = this + a3; - v10 = v19; - } - v14 = *a1; - if ( !Size ) - goto LABEL_8; -LABEL_12: - v16 = (char *)v14 + v12; - v17 = (char *)v10 + this + a4 + 12; - if ( Size != 1 ) - { - memcpy(v17, v16, Size); - v14 = *a1; - if ( !_CRT_MT ) - { -LABEL_9: - v15 = *(v14 - 1); - *(v14 - 1) = v15 - 1; - if ( v15 > 0 ) - { -LABEL_10: - *a1 = (char *)v11; - goto LABEL_11; - } -LABEL_15: - operator delete(v14 - 3); - goto LABEL_10; - } -LABEL_14: - if ( _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_10; - goto LABEL_15; - } - *v17 = *v16; - v14 = *a1; -LABEL_8: - if ( !_CRT_MT ) - goto LABEL_9; - goto LABEL_14; - } - if ( *((int *)*a1 - 1) > 0 ) - { - v7 = *((_DWORD *)*a1 - 2); - goto LABEL_4; - } - v11 = *a1; - if ( Size && a4 != a3 ) - { - v18 = (char *)v11 + this + a3; - if ( Size == 1 ) - *((_BYTE *)v11 + this + a4) = *v18; - else - memmove((char *)v11 + this + a4, v18, Size); - v11 = *a1; - } -LABEL_11: - *(v11 - 1) = 0; - *(v11 - 3) = v8; - *((_BYTE *)v11 + v8) = 0; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004A4AB0) -------------------------------------------------------- -int __userpurge std::string::push_back@(int *a1@, std::string *this, char a3) -{ - int v4; // edi - int result; // eax - unsigned int v6; // [esp+4h] [ebp-28h] - - v4 = *(_DWORD *)(*a1 - 12); - if ( (unsigned int)(v4 + 1) > *(_DWORD *)(*a1 - 8) || *(int *)(*a1 - 4) > 0 ) - std::string::reserve(a1, (std::string *)(v4 + 1), v6); - *(_BYTE *)(*a1 + *(_DWORD *)(*a1 - 12)) = (_BYTE)this; - result = *a1; - *(_DWORD *)(result - 4) = 0; - *(_DWORD *)(result - 12) = v4 + 1; - *(_BYTE *)(result + v4 + 1) = 0; - return result; -} -// 4A4AD6: variable 'v6' is possibly undefined - -//----- (004A4B10) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2) -{ - char *v2; // eax - _BYTE *result; // eax - - *this = *a2; - v2 = (char *)operator new(0xDu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004A4B50) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) -{ - char *v3; // eax - _BYTE *result; // eax - - *this = *a2; - v3 = (char *)operator new(0xDu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004A4B90) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, char *Str, int a3) -{ - int v3; // eax - int result; // eax - - v3 = -1; - if ( Str ) - v3 = (int)&Str[strlen(Str)]; - result = std::string::_S_construct(Str, v3); - *this = result; - return result; -} - -//----- (004A4BE0) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) -{ - int result; // eax - int v6; // ebx - int v7; // edx - int v8; // [esp+1Ch] [ebp-20h] - - if ( &Src[Size] && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - result = (int)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size == 1 ) - { - result = *Src; - *(_BYTE *)(v6 + 12) = result; - } - else if ( Size ) - { - v8 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v7 = v8; - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004A4C80) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, int a2) -{ - char *v3; // eax - _BYTE *result; // eax - - v3 = (char *)operator new(0xDu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *this = result; - return result; -} - -//----- (004A4CC0) -------------------------------------------------------- -_DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3) -{ - _DWORD *result; // eax - char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF - - result = *(_DWORD **)this; - if ( *(int *)(*(_DWORD *)this - 4) < 0 ) - { - result = std::string::_Rep::_M_clone((int)(result - 3), (int)v5, 0); - *a1 = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *a1 = result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4A4CC0: using guessed type char var_D[13]; - -//----- (004A4D30) -------------------------------------------------------- -_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::string::_Rep::_M_clone((int)(result - 3), a3, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004A4DA0) -------------------------------------------------------- -int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v5; // edx - int result; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); - *this = result; - return result; -} - -//----- (004A4E00) -------------------------------------------------------- -int __userpurge std::string::string@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4, - unsigned int a5) -{ - int v6; // edx - unsigned int v7; // eax - char *v8; // eax - int result; // eax - - v6 = *(_DWORD *)this; - v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; - if ( v7 > a4 ) - v7 = a4; - v8 = (char *)a3 + v7 + v6; - if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - (size_t)a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); - *a1 = result; - return result; -} - -//----- (004A4E70) -------------------------------------------------------- -int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5) -{ - int v6; // edx - unsigned int v7; // eax - int v8; // eax - int result; // eax - - v6 = *a2; - v7 = *(_DWORD *)(*a2 - 12) - a3; - if ( v7 > a4 ) - v7 = a4; - v8 = v6 + a3 + v7; - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); - *this = result; - return result; -} - -//----- (004A4EE0) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) -{ - int result; // eax - int v6; // ebx - int v7; // edx - int v8; // [esp+1Ch] [ebp-20h] - - if ( &Src[Size] && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - result = (int)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size == 1 ) - { - result = *Src; - *(_BYTE *)(v6 + 12) = result; - } - else if ( Size ) - { - v8 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v7 = v8; - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004A4F80) -------------------------------------------------------- -char *__thiscall std::string::string(char **this, size_t Size, char *a3, int a4) -{ - char *result; // eax - char *v6; // ebx - char *v7; // edx - char *v8; // [esp+1Ch] [ebp-20h] - - result = (char *)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size ) - { - if ( Size == 1 ) - { - result = a3; - v6[12] = (char)a3; - } - else - { - v8 = result + 12; - result = (char *)memset(v7, (char)a3, Size); - v7 = v8; - } - } - *((_DWORD *)v6 + 2) = 0; - *(_DWORD *)v6 = Size; - v6[Size + 12] = 0; - *this = v7; - return result; -} - -//----- (004A5000) -------------------------------------------------------- -_BYTE *__fastcall std::string::string(_DWORD *a1) -{ - char *v2; // eax - _BYTE *result; // eax - - v2 = (char *)operator new(0xDu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a1 = result; - return result; -} - -//----- (004A5040) -------------------------------------------------------- -int __thiscall std::string::string<__gnu_cxx::__normal_iterator>( - _DWORD *this, - unsigned __int8 *Src, - int a3, - int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004A50D0) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004A5170) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004A5210) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2) -{ - char *v2; // eax - _BYTE *result; // eax - - *this = *a2; - v2 = (char *)operator new(0xDu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004A5250) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) -{ - char *v3; // eax - _BYTE *result; // eax - - *this = *a2; - v3 = (char *)operator new(0xDu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a2 = result; - return result; -} - -//----- (004A5290) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, char *Str, int a3) -{ - int v3; // eax - int result; // eax - - v3 = -1; - if ( Str ) - v3 = (int)&Str[strlen(Str)]; - result = std::string::_S_construct(Str, v3); - *this = result; - return result; -} - -//----- (004A52E0) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) -{ - int result; // eax - int v6; // ebx - int v7; // edx - int v8; // [esp+1Ch] [ebp-20h] - - if ( &Src[Size] && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - result = (int)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size == 1 ) - { - result = *Src; - *(_BYTE *)(v6 + 12) = result; - } - else if ( Size ) - { - v8 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v7 = v8; - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004A5380) -------------------------------------------------------- -_BYTE *__thiscall std::string::string(_DWORD *this, int a2) -{ - char *v3; // eax - _BYTE *result; // eax - - v3 = (char *)operator new(0xDu); - *((_DWORD *)v3 + 1) = 0; - result = v3 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *this = result; - return result; -} - -//----- (004A53C0) -------------------------------------------------------- -_DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3) -{ - _DWORD *result; // eax - char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF - - result = *(_DWORD **)this; - if ( *(int *)(*(_DWORD *)this - 4) < 0 ) - { - result = std::string::_Rep::_M_clone((int)(result - 3), (int)v5, 0); - *a1 = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *a1 = result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4A53C0: using guessed type char var_D[13]; - -//----- (004A5430) -------------------------------------------------------- -_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - - result = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - result = std::string::_Rep::_M_clone((int)(result - 3), a3, 0); - *this = result; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(result - 1, 1u); - else - ++*(result - 1); - *this = result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004A54A0) -------------------------------------------------------- -int __thiscall std::string::string(int *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v5; // edx - int result; // eax - - v5 = *(_DWORD *)(*a2 - 12); - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); - *this = result; - return result; -} - -//----- (004A5500) -------------------------------------------------------- -int __userpurge std::string::string@( - int *a1@, - std::string *this, - const std::string *a3, - unsigned int a4, - unsigned int a5) -{ - int v6; // edx - unsigned int v7; // eax - char *v8; // eax - int result; // eax - - v6 = *(_DWORD *)this; - v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; - if ( v7 > a4 ) - v7 = a4; - v8 = (char *)a3 + v7 + v6; - if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - (size_t)a3, - *(_DWORD *)(*(_DWORD *)this - 12)); - result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); - *a1 = result; - return result; -} - -//----- (004A5570) -------------------------------------------------------- -int __thiscall std::string::string(int *this, int *a2, unsigned int a3, unsigned int a4, int a5) -{ - int v6; // edx - unsigned int v7; // eax - int v8; // eax - int result; // eax - - v6 = *a2; - v7 = *(_DWORD *)(*a2 - 12) - a3; - if ( v7 > a4 ) - v7 = a4; - v8 = v6 + a3 + v7; - if ( a3 > *(_DWORD *)(*a2 - 12) ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - *(_DWORD *)(*a2 - 12)); - result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); - *this = result; - return result; -} - -//----- (004A55E0) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, size_t Size, int a4) -{ - int result; // eax - int v6; // ebx - int v7; // edx - int v8; // [esp+1Ch] [ebp-20h] - - if ( &Src[Size] && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - result = (int)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size == 1 ) - { - result = *Src; - *(_BYTE *)(v6 + 12) = result; - } - else if ( Size ) - { - v8 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v7 = v8; - } - *(_DWORD *)(v6 + 8) = 0; - *(_DWORD *)v6 = Size; - *(_BYTE *)(v6 + Size + 12) = 0; - *this = v7; - return result; -} - -//----- (004A5680) -------------------------------------------------------- -char *__thiscall std::string::string(char **this, size_t Size, char *a3, int a4) -{ - char *result; // eax - char *v6; // ebx - char *v7; // edx - char *v8; // [esp+1Ch] [ebp-20h] - - result = (char *)std::string::_Rep::_S_create(Size, 0); - v6 = result; - v7 = result + 12; - if ( Size ) - { - if ( Size == 1 ) - { - result = a3; - v6[12] = (char)a3; - } - else - { - v8 = result + 12; - result = (char *)memset(v7, (char)a3, Size); - v7 = v8; - } - } - *((_DWORD *)v6 + 2) = 0; - *(_DWORD *)v6 = Size; - v6[Size + 12] = 0; - *this = v7; - return result; -} - -//----- (004A5700) -------------------------------------------------------- -_BYTE *__fastcall std::string::string(_DWORD *a1) -{ - char *v2; // eax - _BYTE *result; // eax - - v2 = (char *)operator new(0xDu); - *((_DWORD *)v2 + 1) = 0; - result = v2 + 12; - *((_DWORD *)result - 1) = 0; - *((_DWORD *)result - 3) = 0; - *result = 0; - *a1 = result; - return result; -} - -//----- (004A5740) -------------------------------------------------------- -int __thiscall std::string::string<__gnu_cxx::__normal_iterator>( - _DWORD *this, - unsigned __int8 *Src, - int a3, - int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004A57D0) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004A5870) -------------------------------------------------------- -int __thiscall std::string::string(_DWORD *this, unsigned __int8 *Src, int a3, int a4) -{ - size_t Size; // ebx - int result; // eax - int v7; // esi - int v8; // edx - int v9; // [esp+1Ch] [ebp-20h] - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); - Size = a3 - (_DWORD)Src; - result = (int)std::string::_Rep::_S_create(a3 - (_DWORD)Src, 0); - v7 = result; - v8 = result + 12; - if ( a3 - (_DWORD)Src == 1 ) - { - result = *Src; - *(_BYTE *)(v7 + 12) = result; - } - else if ( Size ) - { - v9 = result + 12; - result = (int)memcpy((void *)(result + 12), Src, Size); - v8 = v9; - } - *(_DWORD *)(v7 + 8) = 0; - *(_DWORD *)v7 = Size; - *(_BYTE *)(v7 + Size + 12) = 0; - *this = v8; - return result; -} - -//----- (004A5910) -------------------------------------------------------- -void __fastcall std::string::~string(int *a1) -{ - int v1; // eax - int v2; // edx - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)(v1 - 12)); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004A5950) -------------------------------------------------------- -void __fastcall std::string::~string(int *a1) -{ - int v1; // eax - int v2; // edx - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - operator delete((void *)(v1 - 12)); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004A5990) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator=(_DWORD *this, int *a2) -{ - _DWORD *result; // eax - int v3; // edx - int v4; // ecx - - result = this; - v3 = *this; - if ( *(int *)(*this - 4) < 0 ) - *(_DWORD *)(v3 - 4) = 0; - v4 = *a2; - if ( *(int *)(*a2 - 4) < 0 ) - *(_DWORD *)(v4 - 4) = 0; - *result = v4; - *a2 = v3; - return result; -} - -//----- (004A59D0) -------------------------------------------------------- -char **__thiscall std::string::operator=(char **this, std::string *Str) -{ - size_t v3; // eax - unsigned int v5; // [esp+8h] [ebp-14h] - - v3 = strlen((const char *)Str); - return std::string::assign(this, Str, v3, v5); -} -// 4A59EC: variable 'v5' is possibly undefined - -//----- (004A5A00) -------------------------------------------------------- -int *__thiscall std::string::operator=(int *this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - int v5; // edx - char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF - - v3 = (_DWORD *)*a2; - if ( *this != *a2 ) - { - if ( (int)*(v3 - 1) < 0 ) - { - v3 = std::string::_Rep::_M_clone((int)(v3 - 3), (int)v7, 0); - v4 = *this; - if ( !_CRT_MT ) - goto LABEL_6; - } - else - { - if ( _CRT_MT ) - _InterlockedAdd(v3 - 1, 1u); - else - ++*(v3 - 1); - v4 = *this; - if ( !_CRT_MT ) - { -LABEL_6: - v5 = *(_DWORD *)(v4 - 4); - *(_DWORD *)(v4 - 4) = v5 - 1; - if ( v5 > 0 ) - { -LABEL_7: - *this = (int)v3; - return this; - } -LABEL_11: - operator delete((void *)(v4 - 12)); - *this = (int)v3; - return this; - } - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v4 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - goto LABEL_11; - } - return this; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4A5A00: using guessed type char var_D[13]; - -//----- (004A5AB0) -------------------------------------------------------- -char **__thiscall std::string::operator=(char **this, std::string *a2, size_t a3) -{ - unsigned int v5; // [esp+8h] [ebp-14h] - - std::string::assign(this, a2, a3, v5); - return this; -} -// 4A5AC5: variable 'v5' is possibly undefined - -//----- (004A5AE0) -------------------------------------------------------- -char **__thiscall std::string::operator=(char **this, char a2) -{ - unsigned int v4; // [esp+Ch] [ebp-10h] - - std::string::_M_mutate(this, 0, *((_DWORD *)*this - 3), 1u, v4); - **this = a2; - return this; -} -// 4A5B03: variable 'v4' is possibly undefined - -//----- (004A5B20) -------------------------------------------------------- -char *__thiscall std::string::operator[](char **this, int a2) -{ - char *v2; // eax - char *v5; // eax - unsigned int v6; // [esp+Ch] [ebp-10h] - - v2 = *this; - if ( *((int *)*this - 1) < 0 ) - return &v2[a2]; - if ( *((int *)v2 - 1) > 0 ) - std::string::_M_mutate(this, 0, 0, 0, v6); - v5 = *this; - *((_DWORD *)v5 - 1) = -1; - return &v5[a2]; -} -// 4A5B60: variable 'v6' is possibly undefined - -//----- (004A5B80) -------------------------------------------------------- -unsigned int *__thiscall std::string::operator+=(unsigned int *this, std::string *Str) -{ - size_t v3; // eax - unsigned int v5; // [esp+8h] [ebp-14h] - - v3 = strlen((const char *)Str); - return std::string::append(this, Str, v3, v5); -} -// 4A5B9C: variable 'v5' is possibly undefined - -//----- (004A5BD0) -------------------------------------------------------- -int *__thiscall std::string::operator+=(int *this, char a2) -{ - int v3; // edi - int v4; // eax - unsigned int v6; // [esp+4h] [ebp-28h] - - v3 = *(_DWORD *)(*this - 12); - if ( (unsigned int)(v3 + 1) > *(_DWORD *)(*this - 8) || *(int *)(*this - 4) > 0 ) - std::string::reserve(this, (std::string *)(v3 + 1), v6); - *(_BYTE *)(*this + *(_DWORD *)(*this - 12)) = a2; - v4 = *this; - *(_DWORD *)(v4 - 4) = 0; - *(_DWORD *)(v4 - 12) = v3 + 1; - *(_BYTE *)(v4 + v3 + 1) = 0; - return this; -} -// 4A5BF6: variable 'v6' is possibly undefined - -//----- (004A5C30) -------------------------------------------------------- -int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *a2, char *a3) -{ - int result; // eax - char *v4; // edx - int v5; // edi - _BYTE *v6; // ecx - _BYTE *v7; // esi - int v8; // edx - - result = *((_DWORD *)this + 3); - v4 = (char *)a2 + 1; - *(_BYTE *)a2 = 37; - if ( (result & 0x800) != 0 ) - { - *((_BYTE *)a2 + 1) = 43; - v4 = (char *)a2 + 2; - } - if ( (result & 0x400) != 0 ) - *v4++ = 35; - v5 = result & 0x104; - if ( v5 == 260 ) - { - v6 = v4; - if ( !(_BYTE)a3 ) - goto LABEL_16; -LABEL_12: - *v6++ = (_BYTE)a3; - v7 = v6 + 1; - if ( v5 != 4 ) - goto LABEL_8; -LABEL_13: - *v6 = 102; - *v7 = 0; - return result; - } - v6 = v4 + 2; - *(_WORD *)v4 = 10798; - if ( (_BYTE)a3 ) - goto LABEL_12; - v7 = v4 + 3; - if ( v5 == 4 ) - goto LABEL_13; -LABEL_8: - v8 = result & 0x4000; - if ( v5 == 256 ) - { - result = v8 == 0 ? 101 : 69; - *v6 = result; - *v7 = 0; - return result; - } - if ( v5 != 260 ) - { - result = v8 == 0 ? 103 : 71; - *v6 = result; - *v7 = 0; - return result; - } - v4 = v6; -LABEL_16: - result = (result & 0x4000) == 0 ? 97 : 65; - *v4 = result; - v4[1] = 0; - return result; -} - -//----- (004A5D20) -------------------------------------------------------- -void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51A83C; - std::exception::~exception(Block); - operator delete(a1); -} -// 4A5D2C: variable 'Block' is possibly undefined -// 51A83C: using guessed type void (__cdecl *off_51A83C)(std::bad_typeid *__hidden this); - -//----- (004A5D50) -------------------------------------------------------- -void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A83C; - std::exception::~exception(a1); -} -// 4A5D50: variable 'v1' is possibly undefined -// 51A83C: using guessed type void (__cdecl *off_51A83C)(std::bad_typeid *__hidden this); - -//----- (004A5D60) -------------------------------------------------------- -int __cdecl std::money_base::_S_construct_pattern() -{ - return std::money_base::_S_default_pattern; -} -// 515480: using guessed type int std::money_base::_S_default_pattern; - -//----- (004A5D70) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // esi - _DWORD *v6; // eax - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x44u); - *v4 = &off_51B084; - v4[1] = 0; - v4[2] = 0; - v4[3] = 0; - *((_WORD *)v4 + 8) = 0; - *((_BYTE *)v4 + 18) = 0; - v4[5] = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - *((_BYTE *)v4 + 67) = 0; - this[2] = v4; - } - *((_BYTE *)v4 + 17) = 46; - v5 = std::money_base::_S_atoms; - *(_BYTE *)(this[2] + 18) = 44; - v6 = (_DWORD *)this[2]; - v6[2] = &unk_5110A8; - v6[3] = 0; - v6[5] = &unk_5110A8; - v6[6] = 0; - v6[7] = &unk_5110A8; - v6[8] = 0; - v6[9] = &unk_5110A8; - v6[10] = 0; - v6[11] = 0; - v6[12] = std::money_base::_S_default_pattern; - *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; - for ( result = 0; result != 11; ++result ) - *(_BYTE *)(this[2] + result + 56) = v5[result]; - return result; -} -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 515480: using guessed type int std::money_base::_S_default_pattern; -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004A5E90) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A850; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A850: using guessed type int (*off_51A850)(); - -//----- (004A5F30) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A850; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A850: using guessed type int (*off_51A850)(); - -//----- (004A5FD0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A850; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A850: using guessed type int (*off_51A850)(); - -//----- (004A6070) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A850; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A850: using guessed type int (*off_51A850)(); - -//----- (004A6110) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A850; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A850: using guessed type int (*off_51A850)(); - -//----- (004A61B0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A850; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A850: using guessed type int (*off_51A850)(); - -//----- (004A6250) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - std::moneypunct::~moneypunct(a1); - operator delete(a1); -} - -//----- (004A62E0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_51A850; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) - { - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4A633F: variable 'lpfctx' is possibly undefined -// 51A850: using guessed type int (*off_51A850)(); - -//----- (004A63E0) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // esi - _DWORD *v6; // eax - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x44u); - *v4 = &off_51B094; - v4[1] = 0; - v4[2] = 0; - v4[3] = 0; - *((_WORD *)v4 + 8) = 0; - *((_BYTE *)v4 + 18) = 0; - v4[5] = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - *((_BYTE *)v4 + 67) = 0; - this[2] = v4; - } - *((_BYTE *)v4 + 17) = 46; - v5 = std::money_base::_S_atoms; - *(_BYTE *)(this[2] + 18) = 44; - v6 = (_DWORD *)this[2]; - v6[2] = &unk_5110A8; - v6[3] = 0; - v6[5] = &unk_5110A8; - v6[6] = 0; - v6[7] = &unk_5110A8; - v6[8] = 0; - v6[9] = &unk_5110A8; - v6[10] = 0; - v6[11] = 0; - v6[12] = std::money_base::_S_default_pattern; - *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; - for ( result = 0; result != 11; ++result ) - *(_BYTE *)(this[2] + result + 56) = v5[result]; - return result; -} -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 515480: using guessed type int std::money_base::_S_default_pattern; -// 51B094: using guessed type int (*off_51B094)(); - -//----- (004A6500) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A884; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A884: using guessed type int (*off_51A884)(); - -//----- (004A65A0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A884; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A884: using guessed type int (*off_51A884)(); - -//----- (004A6640) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A884; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A884: using guessed type int (*off_51A884)(); - -//----- (004A66E0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A884; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A884: using guessed type int (*off_51A884)(); - -//----- (004A6780) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A884; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A884: using guessed type int (*off_51A884)(); - -//----- (004A6820) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A884; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A884: using guessed type int (*off_51A884)(); - -//----- (004A68C0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - std::moneypunct::~moneypunct(a1); - operator delete(a1); -} - -//----- (004A6950) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_51A884; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) - { - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4A69AF: variable 'lpfctx' is possibly undefined -// 51A884: using guessed type int (*off_51A884)(); - -//----- (004A6A50) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // ebx - int v6; // ecx - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x54u); - v4[1] = 0; - *v4 = &off_51B0A4; - v4[2] = 0; - v4[3] = 0; - *((_BYTE *)v4 + 16) = 0; - *(_DWORD *)((char *)v4 + 18) = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - v4[14] = 0; - *((_BYTE *)v4 + 82) = 0; - this[2] = v4; - } - *(_DWORD *)((char *)v4 + 18) = 2883630; - v4[2] = &unk_5110A8; - v5 = std::money_base::_S_atoms; - v4[13] = std::money_base::_S_default_pattern; - v4[3] = 0; - v4[6] = &unk_5110AA; - v4[7] = 0; - v4[8] = &unk_5110AA; - v4[9] = 0; - v4[10] = &unk_5110AA; - v4[11] = 0; - v4[12] = 0; - *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; - v6 = this[2]; - for ( result = 0; result != 11; ++result ) - *(_WORD *)(v6 + 2 * result + 60) = v5[result]; - return result; -} -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 515480: using guessed type int std::money_base::_S_default_pattern; -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (004A6B70) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A8B8; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A8B8: using guessed type int (*off_51A8B8)(); - -//----- (004A6C10) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A8B8; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A8B8: using guessed type int (*off_51A8B8)(); - -//----- (004A6CB0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A8B8; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A8B8: using guessed type int (*off_51A8B8)(); - -//----- (004A6D50) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A8B8; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A8B8: using guessed type int (*off_51A8B8)(); - -//----- (004A6DF0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A8B8; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A8B8: using guessed type int (*off_51A8B8)(); - -//----- (004A6E90) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A8B8; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A8B8: using guessed type int (*off_51A8B8)(); - -//----- (004A6F30) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - std::moneypunct::~moneypunct(a1); - operator delete(a1); -} - -//----- (004A6FC0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_51A8B8; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) - { - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4A701F: variable 'lpfctx' is possibly undefined -// 51A8B8: using guessed type int (*off_51A8B8)(); - -//----- (004A70C0) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // ebx - int v6; // ecx - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x54u); - v4[1] = 0; - *v4 = &off_51B0B4; - v4[2] = 0; - v4[3] = 0; - *((_BYTE *)v4 + 16) = 0; - *(_DWORD *)((char *)v4 + 18) = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - v4[14] = 0; - *((_BYTE *)v4 + 82) = 0; - this[2] = v4; - } - *(_DWORD *)((char *)v4 + 18) = 2883630; - v4[2] = &unk_5110A8; - v5 = std::money_base::_S_atoms; - v4[13] = std::money_base::_S_default_pattern; - v4[3] = 0; - v4[6] = &unk_5110AA; - v4[7] = 0; - v4[8] = &unk_5110AA; - v4[9] = 0; - v4[10] = &unk_5110AA; - v4[11] = 0; - v4[12] = 0; - *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; - v6 = this[2]; - for ( result = 0; result != 11; ++result ) - *(_WORD *)(v6 + 2 * result + 60) = v5[result]; - return result; -} -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 515480: using guessed type int std::money_base::_S_default_pattern; -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (004A71E0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A8EC; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A8EC: using guessed type int (*off_51A8EC)(); - -//----- (004A7280) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A8EC; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A8EC: using guessed type int (*off_51A8EC)(); - -//----- (004A7320) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A8EC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A8EC: using guessed type int (*off_51A8EC)(); - -//----- (004A73C0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A8EC; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A8EC: using guessed type int (*off_51A8EC)(); - -//----- (004A7460) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A8EC; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A8EC: using guessed type int (*off_51A8EC)(); - -//----- (004A7500) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A8EC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A8EC: using guessed type int (*off_51A8EC)(); - -//----- (004A75A0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - std::moneypunct::~moneypunct(a1); - operator delete(a1); -} - -//----- (004A7630) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_51A8EC; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__moneypunct_cache::~__moneypunct_cache ) - { - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4A768F: variable 'lpfctx' is possibly undefined -// 51A8EC: using guessed type int (*off_51A8EC)(); - -//----- (004A7730) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) -{ - _DWORD *result; // eax - - result = (_DWORD *)this[2]; - if ( !result ) - { - result = operator new(0xC8u); - result[1] = 0; - *result = &off_51AF94; - result[2] = 0; - result[3] = 0; - result[4] = 0; - result[5] = 0; - result[6] = 0; - result[7] = 0; - result[8] = 0; - result[9] = 0; - result[10] = 0; - result[11] = 0; - result[12] = 0; - result[13] = 0; - result[14] = 0; - result[15] = 0; - result[16] = 0; - result[17] = 0; - result[18] = 0; - result[19] = 0; - result[20] = 0; - result[21] = 0; - result[22] = 0; - result[23] = 0; - result[24] = 0; - result[25] = 0; - result[26] = 0; - result[27] = 0; - result[28] = 0; - result[29] = 0; - result[30] = 0; - result[31] = 0; - result[32] = 0; - result[33] = 0; - result[34] = 0; - result[35] = 0; - result[36] = 0; - result[37] = 0; - result[38] = 0; - result[39] = 0; - result[40] = 0; - result[41] = 0; - result[42] = 0; - result[43] = 0; - result[44] = 0; - result[45] = 0; - result[46] = 0; - result[47] = 0; - result[48] = 0; - *((_BYTE *)result + 196) = 0; - this[2] = result; - } - result[2] = "%m/%d/%y"; - result[3] = "%m/%d/%y"; - result[4] = "%H:%M:%S"; - result[5] = "%H:%M:%S"; - result[6] = &off_514522; - result[7] = &off_514522; - result[8] = 5326115; - result[9] = &unk_514526; - result[10] = &off_514522; - result[11] = "Sunday"; - result[12] = "Monday"; - result[13] = "Tuesday"; - result[14] = "Wednesday"; - result[15] = "Thursday"; - result[16] = "Friday"; - result[17] = "Saturday"; - result[18] = &off_514562; - result[19] = &off_514566; - result[20] = &off_51456A; - result[21] = &off_51456E; - result[22] = &off_514572; - result[23] = &off_514576; - result[24] = &off_51457A; - result[25] = "January"; - result[26] = "February"; - result[27] = "March"; - result[28] = "April"; - result[29] = &off_51459B; - result[30] = "June"; - result[31] = "July"; - result[32] = "August"; - result[33] = "September"; - result[34] = "October"; - result[35] = "November"; - result[36] = "December"; - result[37] = &off_5145D4; - result[38] = &off_5145D8; - result[39] = &off_5145DC; - result[40] = &off_5145E0; - result[41] = &off_51459B; - result[42] = &off_5145E4; - result[43] = &off_5145E8; - result[44] = &off_5145EC; - result[45] = &off_5145F0; - result[46] = &off_5145F4; - result[47] = &off_5145F8; - result[48] = &off_5145FC; - return result; -} -// 514522: using guessed type void *off_514522; -// 514562: using guessed type void *off_514562; -// 514566: using guessed type void *off_514566; -// 51456A: using guessed type void *off_51456A; -// 51456E: using guessed type void *off_51456E; -// 514572: using guessed type void *off_514572; -// 514576: using guessed type void *off_514576; -// 51457A: using guessed type void *off_51457A; -// 51459B: using guessed type void *off_51459B; -// 5145D4: using guessed type void *off_5145D4; -// 5145D8: using guessed type void *off_5145D8; -// 5145DC: using guessed type void *off_5145DC; -// 5145E0: using guessed type void *off_5145E0; -// 5145E4: using guessed type void *off_5145E4; -// 5145E8: using guessed type void *off_5145E8; -// 5145EC: using guessed type void *off_5145EC; -// 5145F0: using guessed type void *off_5145F0; -// 5145F4: using guessed type void *off_5145F4; -// 5145F8: using guessed type void *off_5145F8; -// 5145FC: using guessed type void *off_5145FC; -// 51AF94: using guessed type int (*off_51AF94)(); - -//----- (004A7A70) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A920; - this[2] = a2; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 51A920: using guessed type int (*off_51A920)(); - -//----- (004A7B10) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) -{ - unsigned int v4; // [esp+8h] [ebp-50h] - void *Size; // [esp+10h] [ebp-48h] - const char *c_name; // [esp+14h] [ebp-44h] - - this[1] = a4 != 0; - *this = &off_51A920; - this[2] = 0; - c_name = (const char *)std::locale::facet::_S_get_c_name(); - if ( !strcmp(Str1, c_name) ) - { - this[4] = c_name; - } - else - { - v4 = strlen(Str1) + 1; - Size = (void *)operator new[](v4); - memcpy(Size, Str1, v4); - this[4] = Size; - } - std::__timepunct::_M_initialize_timepunct(this, a2); -} -// 51A920: using guessed type int (*off_51A920)(); - -//----- (004A7C70) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A920; - this[2] = 0; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 51A920: using guessed type int (*off_51A920)(); - -//----- (004A7D10) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A920; - this[2] = a2; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 51A920: using guessed type int (*off_51A920)(); - -//----- (004A7DB0) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) -{ - unsigned int v4; // [esp+8h] [ebp-50h] - void *Size; // [esp+10h] [ebp-48h] - const char *c_name; // [esp+14h] [ebp-44h] - - this[1] = a4 != 0; - *this = &off_51A920; - this[2] = 0; - c_name = (const char *)std::locale::facet::_S_get_c_name(); - if ( !strcmp(Str1, c_name) ) - { - this[4] = c_name; - } - else - { - v4 = strlen(Str1) + 1; - Size = (void *)operator new[](v4); - memcpy(Size, Str1, v4); - this[4] = Size; - } - std::__timepunct::_M_initialize_timepunct(this, a2); -} -// 51A920: using guessed type int (*off_51A920)(); - -//----- (004A7F10) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A920; - this[2] = 0; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 51A920: using guessed type int (*off_51A920)(); - -//----- (004A7FB0) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *Block) -{ - std::__timepunct::~__timepunct(Block); - operator delete(Block); -} - -//----- (004A7FD0) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) -{ - int **v2; // esi - void *v3; // esi - void (__fastcall *v4)(_DWORD *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A920; - v2 = (int **)a1[4]; - if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) - operator delete[](v2); - v3 = (void *)a1[2]; - if ( v3 ) - { - v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); - if ( v4 == std::__timepunct_cache::~__timepunct_cache ) - { - *(_DWORD *)v3 = &off_51AF94; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(v3); - } - else - { - v4((_DWORD *)a1[2]); - } - } - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); - std::locale::facet::~facet((std::locale::facet *)lpfctxa); -} -// 4A802D: variable 'lpfctx' is possibly undefined -// 4A804F: variable 'lpfctxa' is possibly undefined -// 51A920: using guessed type int (*off_51A920)(); -// 51AF94: using guessed type int (*off_51AF94)(); - -//----- (004A8070) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) -{ - int **v2; // esi - void *v3; // esi - void (__fastcall *v4)(_DWORD *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A920; - v2 = (int **)a1[4]; - if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) - operator delete[](v2); - v3 = (void *)a1[2]; - if ( v3 ) - { - v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); - if ( v4 == std::__timepunct_cache::~__timepunct_cache ) - { - *(_DWORD *)v3 = &off_51AF94; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(v3); - } - else - { - v4((_DWORD *)a1[2]); - } - } - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); - std::locale::facet::~facet((std::locale::facet *)lpfctxa); -} -// 4A80CD: variable 'lpfctx' is possibly undefined -// 4A80EF: variable 'lpfctxa' is possibly undefined -// 51A920: using guessed type int (*off_51A920)(); -// 51AF94: using guessed type int (*off_51AF94)(); - -//----- (004A8110) -------------------------------------------------------- -_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) -{ - _DWORD *result; // eax - - result = (_DWORD *)this[2]; - if ( !result ) - { - result = operator new(0xC8u); - result[1] = 0; - *result = &off_51AFA4; - result[2] = 0; - result[3] = 0; - result[4] = 0; - result[5] = 0; - result[6] = 0; - result[7] = 0; - result[8] = 0; - result[9] = 0; - result[10] = 0; - result[11] = 0; - result[12] = 0; - result[13] = 0; - result[14] = 0; - result[15] = 0; - result[16] = 0; - result[17] = 0; - result[18] = 0; - result[19] = 0; - result[20] = 0; - result[21] = 0; - result[22] = 0; - result[23] = 0; - result[24] = 0; - result[25] = 0; - result[26] = 0; - result[27] = 0; - result[28] = 0; - result[29] = 0; - result[30] = 0; - result[31] = 0; - result[32] = 0; - result[33] = 0; - result[34] = 0; - result[35] = 0; - result[36] = 0; - result[37] = 0; - result[38] = 0; - result[39] = 0; - result[40] = 0; - result[41] = 0; - result[42] = 0; - result[43] = 0; - result[44] = 0; - result[45] = 0; - result[46] = 0; - result[47] = 0; - result[48] = 0; - *((_BYTE *)result + 196) = 0; - this[2] = result; - } - result[2] = &off_514600; - result[3] = &off_514600; - result[4] = "%"; - result[5] = "%"; - result[6] = &unk_514624; - result[7] = &unk_514624; - result[8] = &off_514626; - result[9] = &off_51462C; - result[10] = &unk_514624; - result[11] = &off_514632; - result[12] = &off_514640; - result[13] = &off_51464E; - result[14] = &off_51465E; - result[15] = &off_514672; - result[16] = &off_514684; - result[17] = &off_514692; - result[18] = &off_5146A4; - result[19] = &off_5146AC; - result[20] = &off_5146B4; - result[21] = &off_5146BC; - result[22] = &off_5146C4; - result[23] = &off_5146CC; - result[24] = &off_5146D4; - result[25] = &off_5146DC; - result[26] = &off_5146EC; - result[27] = &off_5146FE; - result[28] = &off_51470A; - result[29] = &off_514716; - result[30] = &off_51471E; - result[31] = &off_514728; - result[32] = &off_514732; - result[33] = &off_514740; - result[34] = &off_514754; - result[35] = &off_514764; - result[36] = &off_514776; - result[37] = &off_514788; - result[38] = &off_514790; - result[39] = &off_514798; - result[40] = &off_5147A0; - result[41] = &off_514716; - result[42] = &off_5147A8; - result[43] = &off_5147B0; - result[44] = &off_5147B8; - result[45] = &off_5147C0; - result[46] = &off_5147C8; - result[47] = &off_5147D0; - result[48] = &off_5147D8; - return result; -} -// 514600: using guessed type void *off_514600; -// 514626: using guessed type void *off_514626; -// 51462C: using guessed type void *off_51462C; -// 514632: using guessed type void *off_514632; -// 514640: using guessed type void *off_514640; -// 51464E: using guessed type void *off_51464E; -// 51465E: using guessed type void *off_51465E; -// 514672: using guessed type void *off_514672; -// 514684: using guessed type void *off_514684; -// 514692: using guessed type void *off_514692; -// 5146A4: using guessed type void *off_5146A4; -// 5146AC: using guessed type void *off_5146AC; -// 5146B4: using guessed type void *off_5146B4; -// 5146BC: using guessed type void *off_5146BC; -// 5146C4: using guessed type void *off_5146C4; -// 5146CC: using guessed type void *off_5146CC; -// 5146D4: using guessed type void *off_5146D4; -// 5146DC: using guessed type void *off_5146DC; -// 5146EC: using guessed type void *off_5146EC; -// 5146FE: using guessed type void *off_5146FE; -// 51470A: using guessed type void *off_51470A; -// 514716: using guessed type void *off_514716; -// 51471E: using guessed type void *off_51471E; -// 514728: using guessed type void *off_514728; -// 514732: using guessed type void *off_514732; -// 514740: using guessed type void *off_514740; -// 514754: using guessed type void *off_514754; -// 514764: using guessed type void *off_514764; -// 514776: using guessed type void *off_514776; -// 514788: using guessed type void *off_514788; -// 514790: using guessed type void *off_514790; -// 514798: using guessed type void *off_514798; -// 5147A0: using guessed type void *off_5147A0; -// 5147A8: using guessed type void *off_5147A8; -// 5147B0: using guessed type void *off_5147B0; -// 5147B8: using guessed type void *off_5147B8; -// 5147C0: using guessed type void *off_5147C0; -// 5147C8: using guessed type void *off_5147C8; -// 5147D0: using guessed type void *off_5147D0; -// 5147D8: using guessed type void *off_5147D8; -// 51AFA4: using guessed type int (*off_51AFA4)(); - -//----- (004A8450) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A930; - this[2] = a2; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 51A930: using guessed type int (*off_51A930)(); - -//----- (004A84F0) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) -{ - unsigned int v4; // [esp+8h] [ebp-50h] - void *Size; // [esp+10h] [ebp-48h] - const char *c_name; // [esp+14h] [ebp-44h] - - this[1] = a4 != 0; - *this = &off_51A930; - this[2] = 0; - c_name = (const char *)std::locale::facet::_S_get_c_name(); - if ( !strcmp(Str1, c_name) ) - { - this[4] = c_name; - } - else - { - v4 = strlen(Str1) + 1; - Size = (void *)operator new[](v4); - memcpy(Size, Str1, v4); - this[4] = Size; - } - std::__timepunct::_M_initialize_timepunct(this, a2); -} -// 51A930: using guessed type int (*off_51A930)(); - -//----- (004A8650) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A930; - this[2] = 0; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 51A930: using guessed type int (*off_51A930)(); - -//----- (004A86F0) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A930; - this[2] = a2; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 51A930: using guessed type int (*off_51A930)(); - -//----- (004A8790) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, char *Str1, int a4) -{ - unsigned int v4; // [esp+8h] [ebp-50h] - void *Size; // [esp+10h] [ebp-48h] - const char *c_name; // [esp+14h] [ebp-44h] - - this[1] = a4 != 0; - *this = &off_51A930; - this[2] = 0; - c_name = (const char *)std::locale::facet::_S_get_c_name(); - if ( !strcmp(Str1, c_name) ) - { - this[4] = c_name; - } - else - { - v4 = strlen(Str1) + 1; - Size = (void *)operator new[](v4); - memcpy(Size, Str1, v4); - this[4] = Size; - } - std::__timepunct::_M_initialize_timepunct(this, a2); -} -// 51A930: using guessed type int (*off_51A930)(); - -//----- (004A88F0) -------------------------------------------------------- -void __thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A930; - this[2] = 0; - this[4] = std::locale::facet::_S_get_c_name(); - std::__timepunct::_M_initialize_timepunct(this, 0); -} -// 51A930: using guessed type int (*off_51A930)(); - -//----- (004A8990) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *Block) -{ - std::__timepunct::~__timepunct(Block); - operator delete(Block); -} - -//----- (004A89B0) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) -{ - int **v2; // esi - void *v3; // esi - void (__fastcall *v4)(_DWORD *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A930; - v2 = (int **)a1[4]; - if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) - operator delete[](v2); - v3 = (void *)a1[2]; - if ( v3 ) - { - v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); - if ( v4 == std::__timepunct_cache::~__timepunct_cache ) - { - *(_DWORD *)v3 = &off_51AFA4; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(v3); - } - else - { - v4((_DWORD *)a1[2]); - } - } - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); - std::locale::facet::~facet((std::locale::facet *)lpfctxa); -} -// 4A8A0D: variable 'lpfctx' is possibly undefined -// 4A8A2F: variable 'lpfctxa' is possibly undefined -// 51A930: using guessed type int (*off_51A930)(); -// 51AFA4: using guessed type int (*off_51AFA4)(); - -//----- (004A8A50) -------------------------------------------------------- -void __fastcall std::__timepunct::~__timepunct(_DWORD *a1) -{ - int **v2; // esi - void *v3; // esi - void (__fastcall *v4)(_DWORD *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - struct SjLj_Function_Context *lpfctxa; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A930; - v2 = (int **)a1[4]; - if ( v2 != std::locale::facet::_S_get_c_name() && v2 ) - operator delete[](v2); - v3 = (void *)a1[2]; - if ( v3 ) - { - v4 = *(void (__fastcall **)(_DWORD *))(*(_DWORD *)v3 + 4); - if ( v4 == std::__timepunct_cache::~__timepunct_cache ) - { - *(_DWORD *)v3 = &off_51AFA4; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(v3); - } - else - { - v4((_DWORD *)a1[2]); - } - } - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 3)); - std::locale::facet::~facet((std::locale::facet *)lpfctxa); -} -// 4A8AAD: variable 'lpfctx' is possibly undefined -// 4A8ACF: variable 'lpfctxa' is possibly undefined -// 51A930: using guessed type int (*off_51A930)(); -// 51AFA4: using guessed type int (*off_51AFA4)(); - -//----- (004A8AF0) -------------------------------------------------------- -void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const char *a3) -{ - int v3; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_51A940; - std::string::string(a1 + 1, (char *)this, (int)&v3); -} -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); - -//----- (004A8B80) -------------------------------------------------------- -void __thiscall std::logic_error::logic_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_51A940; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); -} -// 4A8BD4: variable 'v2' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); - -//----- (004A8C10) -------------------------------------------------------- -void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::logic_error *a3) -{ - const std::string *v3; // [esp+4h] [ebp-58h] - - *a1 = &off_51A940; - std::string::string(a1 + 1, (std::logic_error *)((char *)this + 4), v3); -} -// 4A8C4E: variable 'v3' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); - -//----- (004A8C70) -------------------------------------------------------- -void __userpurge std::logic_error::logic_error(_DWORD *a1@, std::logic_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51A940; - std::string::string(a1 + 1, this, v3); -} -// 4A8CB8: variable 'v3' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); - -//----- (004A8CF0) -------------------------------------------------------- -void __fastcall std::logic_error::~logic_error(void *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4A8CF6: variable 'Block' is possibly undefined - -//----- (004A8D10) -------------------------------------------------------- -void __cdecl std::logic_error::~logic_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51A940; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4A8D1B: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 4A8D10: using guessed type int var_D[3]; - -//----- (004A8D70) -------------------------------------------------------- -int *__thiscall std::logic_error::operator=(int *this, int a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this + 1, (std::string *)(a2 + 4), v4); - return this; -} -// 4A8DA8: variable 'v4' is possibly undefined - -//----- (004A8DD0) -------------------------------------------------------- -int *__thiscall std::logic_error::operator=(int *this, int a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this + 1, (std::string *)(a2 + 4), v4); - return this; -} -// 4A8E08: variable 'v4' is possibly undefined - -//----- (004A8E30) -------------------------------------------------------- -void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_51AB98; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_51A954; -} -// 51A954: using guessed type void (__cdecl *off_51A954)(std::range_error *__hidden this); -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); - -//----- (004A8EC0) -------------------------------------------------------- -void __thiscall std::range_error::range_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_51AB98; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_51A954; -} -// 4A8F14: variable 'v2' is possibly undefined -// 51A954: using guessed type void (__cdecl *off_51A954)(std::range_error *__hidden this); -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); - -//----- (004A8F60) -------------------------------------------------------- -void __userpurge std::range_error::range_error(_DWORD *a1@, std::range_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51AB98; - std::string::string(a1 + 1, this, v3); - *a1 = &off_51A954; -} -// 4A8FA8: variable 'v3' is possibly undefined -// 51A954: using guessed type void (__cdecl *off_51A954)(std::range_error *__hidden this); -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); - -//----- (004A8FF0) -------------------------------------------------------- -void __fastcall std::range_error::~range_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51A954; - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4A8FFC: variable 'Block' is possibly undefined -// 51A954: using guessed type void (__cdecl *off_51A954)(std::range_error *__hidden this); - -//----- (004A9010) -------------------------------------------------------- -void __cdecl std::range_error::~range_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51AB98; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4A901B: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 4A9010: using guessed type int var_D[3]; - -//----- (004A9070) -------------------------------------------------------- -int __usercall std::_Destroy_aux::__destroy *>@( - int a1@, - int a2, - int a3) -{ - volatile signed __int32 **v4; // ecx - - while ( a2 != a3 ) - { - v4 = (volatile signed __int32 **)(a2 + 4); - a2 += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - return a1; -} - -//----- (004A9090) -------------------------------------------------------- -int __usercall std::_Destroy_aux::__destroy *>@( - int a1@, - int a2, - int a3) -{ - volatile signed __int32 **v4; // ecx - - while ( a2 != a3 ) - { - v4 = (volatile signed __int32 **)(a2 + 4); - a2 += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - return a1; -} - -//----- (004A90B0) -------------------------------------------------------- -int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3) -{ - void **v4; // ecx - - while ( a2 != a3 ) - { - v4 = a2; - a2 += 6; - std::string::_M_dispose(v4); - } - return a1; -} - -//----- (004A90D0) -------------------------------------------------------- -unsigned __int8 *__usercall std::`anonymous namespace'::utf16_span@( - unsigned __int8 *a1@, - unsigned __int8 *a2@, - unsigned int a3@, - unsigned int a4, - char a5) -{ - unsigned int v6; // ebp - unsigned int v7; // esi - unsigned int v8; // ebx - unsigned int utf8_code; // eax - unsigned __int8 *v11[6]; // [esp+8h] [ebp-18h] BYREF - - v11[0] = a1; - v6 = a4; - v11[1] = a2; - if ( (a5 & 4) != 0 - && (unsigned int)(a2 - a1) > 2 - && *(_WORD *)a1 == std::`anonymous namespace'::utf8_bom - && a1[2] == 0xBF ) - { - v11[0] = a1 + 3; - } - if ( a3 > 1 ) - { - v7 = 0; - v8 = 1; - while ( 1 ) - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(v11, a4); - if ( a4 < utf8_code ) - return v11[0]; - if ( utf8_code <= 0xFFFF ) - v8 = v7; - v7 = v8 + 1; - v8 += 2; - if ( v8 >= a3 ) - goto LABEL_10; - } - } - v8 = 1; -LABEL_10: - if ( a3 != v8 ) - return v11[0]; - if ( a4 >= 0xFFFF ) - v6 = 0xFFFF; - std::`anonymous namespace'::read_utf8_code_point(v11, v6); - return v11[0]; -} -// 515494: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (004A91A0) -------------------------------------------------------- -int __cdecl std::`anonymous namespace'::__x86_rdrand() -{ - bool v0; // cf - int v1; // edx - int v4; // [esp+1Ch] [ebp-10h] - - v0 = 0; - v1 = 100; - while ( 1 ) - { - __asm { rdrand eax } - v4 = _EAX; - if ( v0 ) - _EAX = 1; - if ( _EAX ) - break; - v0 = v1-- == 0; - if ( !v1 ) - std::__throw_runtime_error((std::runtime_error *)"random_device: rdrand failed"); - } - return v4; -} - -//----- (004A91E0) -------------------------------------------------------- -int __cdecl std::`anonymous namespace'::__x86_rdseed(std::_anonymous_namespace_ *this) -{ - bool v1; // cf - int v3; // eax - - v1 = 0; - __asm { rdseed eax } - v3 = 99; - do - { - _mm_pause(); - __asm { rdseed edx } - if ( v1 ) - return _EDX; - v1 = v3-- == 0; - } - while ( v3 ); - if ( !this ) - std::__throw_runtime_error((std::runtime_error *)"random_device: rdseed failed"); - return ((int (__cdecl *)(_DWORD))this)(0); -} - -//----- (004A9240) -------------------------------------------------------- -int __cdecl std::`anonymous namespace'::__winxp_rand_s() -{ - int v1[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( _rand_s((int)v1) ) - std::__throw_runtime_error((std::runtime_error *)"random_device: rand_s failed"); - return v1[0]; -} -// 50B164: using guessed type int (__cdecl *_rand_s)(int); -// 4A9240: using guessed type int var_10[4]; - -//----- (004A9270) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::read_utf16_bom@(int a1@, int *a2@) -{ - int result; // eax - _WORD *v4; // ebx - - result = *a2; - if ( (*a2 & 4) != 0 ) - { - v4 = *(_WORD **)a1; - if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) > 1 ) - { - if ( *v4 == 0xFFFE ) - { - result &= ~1u; - *(_DWORD *)a1 = v4 + 1; - *a2 = result; - } - else if ( *v4 == 0xFEFF ) - { - result |= 1u; - *(_DWORD *)a1 = v4 + 1; - *a2 = result; - } - } - } - return result; -} - -//----- (004A92C0) -------------------------------------------------------- -int __cdecl std::`anonymous namespace'::__x86_rdseed_rdrand() -{ - bool v0; // cf - int v2; // eax - - v0 = 0; - __asm { rdseed eax } - v2 = 99; - do - { - _mm_pause(); - __asm { rdseed edx } - if ( v0 ) - return _EDX; - v0 = v2-- == 0; - } - while ( v2 ); - return std::`anonymous namespace'::__x86_rdrand(); -} - -//----- (004A9300) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::read_utf8_code_point@( - unsigned __int8 **a1@, - unsigned int a2@) -{ - unsigned __int8 *v2; // edx - unsigned int v3; // edi - int v4; // ecx - unsigned int v5; // esi - unsigned __int8 v7; // di - unsigned __int8 v8; // di - unsigned __int8 v10; // [esp+7h] [ebp-11h] - - v2 = *a1; - v3 = a1[1] - *a1; - if ( !v3 ) - return -2; - v4 = *v2; - if ( (v4 & 0x80u) == 0 ) - { - v5 = (unsigned __int8)v4; - *a1 = v2 + 1; - return v5; - } - v5 = -1; - if ( (unsigned __int8)v4 <= 0xC1u ) - return v5; - if ( (unsigned __int8)v4 > 0xDFu ) - { - if ( (unsigned __int8)v4 > 0xEFu ) - { - if ( (unsigned __int8)v4 <= 0xF4u ) - { - v5 = -2; - if ( v3 > 3 ) - { - v8 = v2[1]; - v5 = -1; - if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) - { - if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) - { - v5 = -1; - v10 = v2[2]; - if ( (v10 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) - { - v5 = (v10 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; - if ( v5 <= a2 ) - *a1 = v2 + 4; - } - } - } - } - } - } - else - { - v5 = -2; - if ( v3 > 2 ) - { - v7 = v2[1]; - v5 = -1; - if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) - { - v5 = -1; - if ( (v2[2] & 0xC0) == 0x80 ) - { - v5 = (v7 << 6) + (v4 << 12) + v2[2] - 925824; - if ( a2 >= v5 ) - *a1 = v2 + 3; - } - } - } - } - return v5; - } - if ( v3 != 1 ) - { - if ( (v2[1] & 0xC0) == 0x80 ) - { - v5 = (v4 << 6) + v2[1] - 12416; - if ( a2 >= v5 ) - *a1 = v2 + 2; - } - return v5; - } - return -2; -} - -//----- (004A94C0) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::read_utf8_code_point@( - unsigned __int8 **a1@, - unsigned int a2@) -{ - unsigned __int8 *v2; // edx - unsigned int v3; // edi - int v4; // ecx - unsigned int v5; // esi - unsigned __int8 v7; // di - unsigned __int8 v8; // di - unsigned __int8 v10; // [esp+7h] [ebp-11h] - - v2 = *a1; - v3 = a1[1] - *a1; - if ( !v3 ) - return -2; - v4 = *v2; - if ( (v4 & 0x80u) == 0 ) - { - v5 = (unsigned __int8)v4; - *a1 = v2 + 1; - return v5; - } - v5 = -1; - if ( (unsigned __int8)v4 <= 0xC1u ) - return v5; - if ( (unsigned __int8)v4 > 0xDFu ) - { - if ( (unsigned __int8)v4 > 0xEFu ) - { - if ( (unsigned __int8)v4 <= 0xF4u ) - { - v5 = -2; - if ( v3 > 3 ) - { - v8 = v2[1]; - v5 = -1; - if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) - { - if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) - { - v5 = -1; - v10 = v2[2]; - if ( (v10 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) - { - v5 = (v10 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; - if ( v5 <= a2 ) - *a1 = v2 + 4; - } - } - } - } - } - } - else - { - v5 = -2; - if ( v3 > 2 ) - { - v7 = v2[1]; - v5 = -1; - if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) - { - v5 = -1; - if ( (v2[2] & 0xC0) == 0x80 ) - { - v5 = (v7 << 6) + (v4 << 12) + v2[2] - 925824; - if ( a2 >= v5 ) - *a1 = v2 + 3; - } - } - } - } - return v5; - } - if ( v3 != 1 ) - { - if ( (v2[1] & 0xC0) == 0x80 ) - { - v5 = (v4 << 6) + v2[1] - 12416; - if ( a2 >= v5 ) - *a1 = v2 + 2; - } - return v5; - } - return -2; -} - -//----- (004A9680) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@) -{ - _BYTE *v3; // esi - int v4; // ecx - int result; // eax - _BYTE *v6; // ecx - int v7; // esi - _BYTE *v8; // ecx - - if ( a2 > 0x7FF ) - { - if ( a2 > 0xFFFF ) - { - result = 0; - if ( a2 <= 0x10FFFF ) - { - v8 = *(_BYTE **)a1; - if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) > 3 ) - { - *v8 = (a2 >> 18) - 16; - v8[1] = ((a2 >> 12) & 0x3F) + 0x80; - v8[2] = ((a2 >> 6) & 0x3F) + 0x80; - *(_DWORD *)a1 = v8 + 4; - result = 1; - v8[3] = (a2 & 0x3F) + 0x80; - } - } - } - else - { - v6 = *(_BYTE **)a1; - v7 = *(_DWORD *)(a1 + 4); - result = 0; - if ( (unsigned int)(v7 - (_DWORD)v6) > 2 ) - { - *v6 = (a2 >> 12) - 32; - v6[1] = ((a2 >> 6) & 0x3F) + 0x80; - *(_DWORD *)a1 = v6 + 3; - result = 1; - v6[2] = (a2 & 0x3F) + 0x80; - } - } - } - else - { - v3 = *(_BYTE **)a1; - v4 = *(_DWORD *)(a1 + 4); - result = 0; - if ( (unsigned int)(v4 - (_DWORD)v3) > 1 ) - { - *v3 = (a2 >> 6) - 64; - *(_DWORD *)a1 = v3 + 2; - result = 1; - v3[1] = (a2 & 0x3F) + 0x80; - } - } - return result; -} - -//----- (004A9760) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **a1@, unsigned int a2@) -{ - _BYTE *v3; // eax - int result; // eax - _BYTE *v5; // esi - _BYTE *v6; // ebx - _BYTE *v7; // eax - _BYTE *v8; // esi - _BYTE *v9; // ebx - _BYTE *v10; // ebx - _BYTE *v11; // esi - _BYTE *v12; // ebx - - if ( a2 <= 0x7F ) - { - v3 = *a1; - if ( a1[1] == v3 ) - return 0; - *a1 = v3 + 1; - *v3 = a2; - return 1; - } - if ( a2 <= 0x7FF ) - { - v5 = *a1; - v6 = a1[1]; - result = 0; - if ( (unsigned int)(v6 - v5) <= 1 ) - return result; - *a1 = v5 + 1; - *v5 = (a2 >> 6) - 64; -LABEL_8: - v7 = (*a1)++; - *v7 = (a2 & 0x3F) + 0x80; - return 1; - } - if ( a2 <= 0xFFFF ) - { - v11 = *a1; - v12 = a1[1]; - result = 0; - if ( (unsigned int)(v12 - v11) <= 2 ) - return result; - *a1 = v11 + 1; - *v11 = (a2 >> 12) - 32; - goto LABEL_13; - } - result = 0; - if ( a2 <= 0x10FFFF ) - { - v8 = *a1; - if ( (unsigned int)(a1[1] - *a1) > 3 ) - { - *a1 = v8 + 1; - *v8 = (a2 >> 18) - 16; - v9 = (*a1)++; - *v9 = ((a2 >> 12) & 0x3F) + 0x80; -LABEL_13: - v10 = (*a1)++; - *v10 = ((a2 >> 6) & 0x3F) + 0x80; - goto LABEL_8; - } - } - return result; -} - -//----- (004A9850) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::ucs2_in@( - unsigned __int16 **a1@, - int *a2@, - unsigned int a3@, - char a4) -{ - unsigned int v7; // eax - unsigned __int16 *v8; // edx - int v9; // ecx - unsigned __int16 v10; // ax - unsigned __int16 v11; // di - int v13; // [esp+0h] [ebp-20h] - int v14; // [esp+4h] [ebp-1Ch] - unsigned __int16 *v15; // [esp+8h] [ebp-18h] - unsigned int v16; // [esp+Ch] [ebp-14h] - - std::`anonymous namespace'::read_utf16_bom((int)a1, (int *)&a4); - v7 = 0xFFFF; - v8 = *a1; - if ( a3 < 0xFFFF ) - v7 = a3; - v16 = v7; - v15 = a1[1]; - if ( !((unsigned int)((char *)v15 - (char *)v8) >> 1) ) - return 0; - v9 = *a2; - v13 = a2[1]; - v14 = a4 & 1; - while ( v13 != v9 ) - { - v10 = *v8; - v11 = __ROL2__(*v8, 8); - if ( !v14 ) - v10 = v11; - if ( (unsigned __int16)(v10 + 10240) <= 0x7FFu || v16 < v10 ) - return 2; - ++v8; - v9 += 2; - *a1 = v8; - *a2 = v9; - *(_WORD *)(v9 - 2) = v10; - if ( !((unsigned int)((char *)v15 - (char *)v8) >> 1) ) - return 0; - } - return 1; -} - -//----- (004A9920) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::ucs2_out@( - unsigned __int16 **a1@, - _DWORD *a2@, - unsigned int a3@, - char a4) -{ - unsigned __int16 *v5; // ebp - unsigned __int16 *v6; // eax - _WORD *v8; // edx - unsigned int v9; // eax - __int16 v10; // cx - __int16 v11; // ax - unsigned __int16 *v12; // eax - - v5 = a1[1]; - v6 = *a1; - if ( v5 == v6 ) - return 0; - v8 = (_WORD *)*a2; - while ( 1 ) - { - if ( !((unsigned int)(a2[1] - (_DWORD)v8) >> 1) ) - return v6 != v5; - v9 = *v6; - v10 = v9; - if ( v9 - 55296 <= 0x3FF || v9 > a3 ) - break; - v11 = __ROL2__(v9, 8); - if ( (a4 & 1) == 0 ) - v10 = v11; - *v8 = v10; - v5 = a1[1]; - v8 = (_WORD *)(*a2 + 2); - v12 = *a1; - *a2 = v8; - v6 = v12 + 1; - *a1 = v6; - if ( v5 == v6 ) - return 0; - } - return 2; -} - -//----- (004A99C0) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::utf16_in@( - unsigned __int8 **a1@, - char **a2@, - unsigned int a3@, - char a4, - int a5) -{ - unsigned __int8 *v8; // edi - char *v9; // edi - __int16 v10; // cx - unsigned int utf8_code; // eax - unsigned __int8 *v12; // ecx - char *v13; // edx - unsigned int v15; // ecx - __int16 v16; // ax - __int16 v17; // cx - unsigned __int8 *v18; // ecx - unsigned __int8 *v19; // [esp+0h] [ebp-1Ch] - unsigned __int8 *v20; // [esp+4h] [ebp-18h] - - v20 = a1[1]; - v8 = *a1; - v19 = *a1; - if ( (a4 & 4) != 0 - && (unsigned int)(v20 - v8) > 2 - && *(_WORD *)v8 == std::`anonymous namespace'::utf8_bom - && v8[2] == 0xBF ) - { - v19 += 3; - *a1 = v19; - } - if ( v19 != v20 ) - { - v9 = a2[1]; - while ( *a2 != v9 ) - { - utf8_code = std::`anonymous namespace'::read_utf8_code_point(a1, a3); - if ( utf8_code == -2 ) - return a5 + 1; - if ( a3 < utf8_code ) - return 2; - v9 = a2[1]; - v13 = *a2; - if ( utf8_code <= 0xFFFF ) - { - if ( v13 == v9 ) - goto LABEL_13; - v10 = __ROL2__(utf8_code, 8); - if ( (a4 & 1) == 0 ) - LOWORD(utf8_code) = v10; - *a2 = v13 + 2; - v12 = *a1; - *(_WORD *)v13 = utf8_code; - v19 = v12; - v20 = a1[1]; - if ( v20 == v12 ) - return 0; - } - else - { - if ( (unsigned int)(v9 - v13) <= 2 ) - { -LABEL_13: - *a1 = v19; - a1[1] = v20; - return 1; - } - v15 = utf8_code >> 10; - v16 = (utf8_code & 0x3FF) - 9216; - v17 = v15 - 10304; - if ( (a4 & 1) == 0 ) - { - v17 = __ROL2__(v17, 8); - v16 = __ROL2__(v16, 8); - } - *(_WORD *)v13 = v17; - *a2 = v13 + 4; - v18 = *a1; - *((_WORD *)v13 + 1) = v16; - v19 = v18; - v20 = a1[1]; - if ( v20 == v18 ) - return 0; - } - } - } - return 0; -} -// 515494: using guessed type __int16 std::`anonymous namespace'::utf8_bom; - -//----- (004A9B30) -------------------------------------------------------- -int __usercall std::`anonymous namespace'::utf16_out@( - unsigned __int16 **a1@, - _BYTE **a2@, - unsigned int a3@, - int a4) -{ - unsigned __int16 *v5; // edx - unsigned __int16 *v7; // eax - unsigned int v8; // ebp - int v10; // eax - int v11; // ebp - unsigned int v12; // edx - unsigned __int16 *v13; // edx - - v5 = a1[1]; - v7 = *a1; - v8 = (char *)v5 - (char *)v7; - if ( v7 == v5 ) - return 0; - while ( 1 ) - { - v12 = *v7; - if ( v12 - 55296 <= 0x3FF ) - { - if ( a4 == 1 ) - return 2; - if ( v8 <= 2 ) - return 0; - v10 = v7[1]; - if ( (unsigned int)(v10 - 56320) > 0x3FF ) - return 2; - v11 = 2; - v12 = v10 + (v12 << 10) - 56613888; - if ( v12 > a3 ) - return 2; - } - else - { - if ( v12 - 56320 <= 0x3FF ) - return 2; - v11 = 1; - if ( v12 > a3 ) - return 2; - } - if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(a2, v12) ) - break; - v13 = a1[1]; - v7 = &(*a1)[v11]; - *a1 = v7; - v8 = (char *)v13 - (char *)v7; - if ( v13 == v7 ) - return 0; - } - return 1; -} - -//----- (004A9BF0) -------------------------------------------------------- -int __fastcall std::__basic_file::fd(FILE **a1) -{ - return fileno(*a1); -} - -//----- (004A9C80) -------------------------------------------------------- -int __fastcall std::__basic_file::file(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004A9C90) -------------------------------------------------------- -_BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4) -{ - unsigned int v4; // eax - const char *Mode; // eax - FILE *v7; // eax - - v4 = (a3 & 0x3D) - 1; - if ( v4 > 0x3B ) - return 0; - Mode = (&CSWTCH_18)[v4]; - if ( !Mode ) - return 0; - if ( *(_DWORD *)this ) - return 0; - v7 = fopen64(FileName, Mode); - *(_DWORD *)this = v7; - if ( !v7 ) - return 0; - this[4] = 1; - return this; -} - -//----- (004A9CF0) -------------------------------------------------------- -FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3) -{ - FILE *v4; // ecx - unsigned int v5; // eax - char *v6; // edx - char *v7; // edx - wchar_t *v8; // esi - char v9; // al - FILE *v10; // eax - wchar_t Mode[2]; // [esp+18h] [ebp-14h] BYREF - int v13; // [esp+1Ch] [ebp-10h] - - v4 = 0; - v5 = (a3 & 0x3D) - 1; - if ( v5 > 0x3B ) - return v4; - v6 = (&CSWTCH_18)[v5]; - if ( !v6 ) - return v4; - v4 = *(FILE **)this; - if ( !*(_DWORD *)this ) - { - *(_DWORD *)Mode = 0; - v7 = v6 + 1; - v8 = Mode; - v13 = 0; - v9 = *(v7 - 1); - do - { - while ( 1 ) - { - while ( 1 ) - { - while ( v9 == 98 ) - { - ++v7; - *v8++ = 98; - v9 = *(v7 - 1); - if ( !v9 ) - goto LABEL_10; - } - if ( v9 > 98 ) - break; - if ( v9 == 43 ) - { - ++v7; - *v8++ = 43; - v9 = *(v7 - 1); - if ( !v9 ) - goto LABEL_10; - } - else - { - if ( v9 != 97 ) - return v4; - ++v7; - *v8++ = 97; - v9 = *(v7 - 1); - if ( !v9 ) - goto LABEL_10; - } - } - if ( v9 != 114 ) - break; - ++v7; - *v8++ = 114; - v9 = *(v7 - 1); - if ( !v9 ) - goto LABEL_10; - } - if ( v9 != 119 ) - return v4; - ++v7; - *v8++ = 119; - v9 = *(v7 - 1); - } - while ( v9 ); -LABEL_10: - v10 = __wfopen(FileName, Mode); - *(_DWORD *)this = v10; - v4 = v10; - if ( v10 ) - { - this[4] = 1; - return (FILE *)this; - } - return v4; - } - return 0; -} - -//----- (004A9E40) -------------------------------------------------------- -int __fastcall std::__basic_file::sync(FILE **a1) -{ - return fflush(*a1); -} - -//----- (004A9E60) -------------------------------------------------------- -int __fastcall std::__basic_file::close(int a1) -{ - int v3; // eax - - if ( !*(_DWORD *)a1 ) - return 0; - if ( *(_BYTE *)(a1 + 4) ) - { - v3 = fclose(*(FILE **)a1); - *(_DWORD *)a1 = 0; - if ( v3 ) - return 0; - else - return a1; - } - else - { - *(_DWORD *)a1 = 0; - return a1; - } -} - -//----- (004A9EC0) -------------------------------------------------------- -int __thiscall std::__basic_file::xsgetn(FILE **this, void *DstBuf, unsigned int MaxCharCount) -{ - int FileHandle; // eax - int v5; // ebp - - do - { - FileHandle = std::__basic_file::fd(this); - v5 = read(FileHandle, DstBuf, MaxCharCount); - } - while ( v5 == -1 && *__errno() == 4 ); - return v5; -} - -//----- (004A9F10) -------------------------------------------------------- -unsigned int __thiscall std::__basic_file::xsputn(FILE **this, char *a2, unsigned int a3) -{ - int FileHandle; // esi - unsigned int MaxCharCount; // ebp - int v6; // eax - - FileHandle = std::__basic_file::fd(this); - MaxCharCount = a3; - while ( 1 ) - { - while ( 1 ) - { - v6 = write(FileHandle, a2, MaxCharCount); - if ( v6 != -1 ) - break; - if ( *__errno() != 4 ) - return a3 - MaxCharCount; - } - MaxCharCount -= v6; - if ( !MaxCharCount ) - break; - a2 += v6; - } - return a3; -} - -//----- (004A9F80) -------------------------------------------------------- -__int64 __thiscall std::__basic_file::seekoff(FILE **this, __int64 a2, int a3) -{ - int v3; // eax - - v3 = fileno(*this); - return lseek64(v3, a2, a3); -} - -//----- (004AA025) -------------------------------------------------------- -#error "4AA051: call analysis failed (funcsize=14)" - -//----- (004AA060) -------------------------------------------------------- -_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3) -{ - int v4; // ebp - _BYTE *result; // eax - - if ( !*(_DWORD *)this && Stream ) - { - v4 = *__errno(); - *__errno() = 0; - do - { - if ( !fflush(Stream) ) - { - *__errno() = v4; - result = this; - *(_DWORD *)this = Stream; - this[4] = 0; - return result; - } - } - while ( *__errno() == 4 ); - *__errno() = v4; - } - return 0; -} - -//----- (004AA0D0) -------------------------------------------------------- -FILE **__thiscall std::__basic_file::sys_open(FILE **this, int FileHandle, char a3) -{ - unsigned int v3; // eax - const char *Format; // eax - FILE *v6; // eax - FILE **v7; // [esp+18h] [ebp-44h] - - v7 = this; - v3 = (a3 & 0x3D) - 1; - if ( v3 > 0x3B ) - return 0; - Format = (&CSWTCH_18)[v3]; - if ( !Format ) - return 0; - if ( *this ) - return 0; - v6 = fdopen(FileHandle, Format); - *v7 = v6; - if ( !v6 ) - return 0; - *((_BYTE *)v7 + 4) = 1; - if ( !FileHandle ) - setvbuf(v6, 0, 4, 0); - return v7; -} - -//----- (004AA1C0) -------------------------------------------------------- -int __thiscall std::__basic_file::xsputn_2(FILE **this, char *a2, unsigned int a3, char *a4, unsigned int a5) -{ - int FileHandle; // esi - unsigned int MaxCharCount; // ebp - int v9; // eax - unsigned int v11; // ebp - int v12; // eax - - FileHandle = std::__basic_file::fd(this); - if ( a3 ) - { - v11 = a3; - while ( 1 ) - { - while ( 1 ) - { - v12 = write(FileHandle, a2, v11); - if ( v12 != -1 ) - break; - if ( *__errno() != 4 ) - return a3 - v11; - } - v11 -= v12; - if ( !v11 ) - break; - a2 += v12; - } - FileHandle = std::__basic_file::fd(this); - } - MaxCharCount = a5; - do - { - while ( 1 ) - { - v9 = write(FileHandle, a4, MaxCharCount); - if ( v9 == -1 ) - break; - MaxCharCount -= v9; - if ( !MaxCharCount ) - return a3 + a5; - a4 += v9; - } - } - while ( *__errno() == 4 ); - a5 -= MaxCharCount; - return a3 + a5; -} - -//----- (004AA290) -------------------------------------------------------- -int __fastcall std::__basic_file::showmanyc(FILE **a1) -{ - int FileHandle; // eax - unsigned int st_size_high; // edi - unsigned int st_size; // esi - int v6; // eax - int v7; // esi - signed __int64 v8; // kr08_8 - struct _stat64 Stat; // [esp+18h] [ebp-54h] BYREF - - FileHandle = std::__basic_file::fd(a1); - if ( __fstat64(FileHandle, &Stat) || (Stat.st_mode & 0xF000) != 0x8000 ) - return 0; - st_size_high = HIDWORD(Stat.st_size); - st_size = Stat.st_size; - v6 = std::__basic_file::fd(a1); - v8 = __PAIR64__(st_size_high, st_size) - lseek64(v6, 0LL, 1); - v7 = v8; - if ( v8 > 0x7FFFFFFF ) - return 0x7FFFFFFF; - return v7; -} - -//----- (004AA320) -------------------------------------------------------- -void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2) -{ - *(_DWORD *)this = 0; - this[4] = 0; -} - -//----- (004AA330) -------------------------------------------------------- -FILE *__fastcall std::__basic_file::~__basic_file(int a1) -{ - FILE *result; // eax - - result = *(FILE **)a1; - if ( *(_DWORD *)a1 ) - { - if ( *(_BYTE *)(a1 + 4) ) - return (FILE *)fclose(*(FILE **)a1); - } - return result; -} - -//----- (004AA350) -------------------------------------------------------- -void __thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2) -{ - *this = *a2; - *a2 = std::string::_S_construct(0, 0); -} - -//----- (004AA3C0) -------------------------------------------------------- -int __userpurge std::__cow_string::__cow_string@( - _DWORD *a1@, - std::__cow_string *this, - size_t a3, - unsigned int a4) -{ - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - return std::string::string(a1, (unsigned __int8 *)this, a3, (int)v5); -} -// 4AA3C0: using guessed type int var_D[3]; - -//----- (004AA3F0) -------------------------------------------------------- -int __thiscall std::__cow_string::__cow_string(_DWORD *this, int a2) -{ - unsigned int v3; // [esp+8h] [ebp-14h] - - return std::__cow_string::__cow_string(this, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v3); -} -// 4AA403: variable 'v3' is possibly undefined - -//----- (004AA420) -------------------------------------------------------- -void __userpurge std::__cow_string::__cow_string( - _DWORD *a1@, - std::__cow_string *this, - const std::__cow_string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-58h] - - std::string::string(a1, this, v3); -} -// 4AA454: variable 'v3' is possibly undefined - -//----- (004AA480) -------------------------------------------------------- -_DWORD *__fastcall std::__cow_string::__cow_string(_DWORD *a1) -{ - _DWORD *result; // eax - - result = std::string::_S_construct(0, 0); - *a1 = result; - return result; -} - -//----- (004AA4B0) -------------------------------------------------------- -void __fastcall std::__cow_string::~__cow_string(int *a1) -{ - int v1; // ecx - int v2; // eax - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v1 - 12), (int)v3); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4AA4B0: using guessed type int var_D[3]; - -//----- (004AA500) -------------------------------------------------------- -int *__thiscall std::__cow_string::operator=(int *this, std::string *a2) -{ - std::string *v4; // [esp+4h] [ebp-18h] - - std::string::swap(this, a2, v4); - return this; -} -// 4AA50D: variable 'v4' is possibly undefined - -//----- (004AA520) -------------------------------------------------------- -int *__thiscall std::__cow_string::operator=(int *this, std::string *a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this, a2, v4); - return this; -} -// 4AA554: variable 'v4' is possibly undefined - -//----- (004AA570) -------------------------------------------------------- -void __thiscall std::__shared_ptr::__shared_ptr( - _DWORD *this, - _DWORD *a2) -{ - int v2; // eax - - v2 = a2[1]; - *this = *a2; - this[1] = v2; - if ( v2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v2); -} - -//----- (004AA594) -------------------------------------------------------- -void __thiscall std::__shared_ptr::__shared_ptr( - int *this, - int *a2) -{ - int *v2; // ecx - int v3; // eax - - v2 = this + 1; - v3 = a2[1]; - *(v2 - 1) = *a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v2, v3); -} - -//----- (004AA5B0) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::__shared_ptr::operator=( - volatile signed __int32 **this, - volatile signed __int32 **a2) -{ - volatile signed __int32 *v2; // edx - - v2 = a2[1]; - *this = *a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(this + 1, v2); - return this; -} - -//----- (004AA5D8) -------------------------------------------------------- -int __thiscall std::__shared_ptr::__shared_ptr( - _DWORD *this, - _DWORD *a2) -{ - int result; // eax - - result = a2[1]; - *this = *a2; - this[1] = result; - if ( result ) - { - if ( _CRT_MT ) - _InterlockedIncrement((volatile signed __int32 *)(result + 4)); - else - ++*(_DWORD *)(result + 4); - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004AA604) -------------------------------------------------------- -void __thiscall std::__shared_ptr::__shared_ptr( - _DWORD *this, - _DWORD *a2) -{ - int v2; // eax - - v2 = a2[1]; - *this = *a2; - this[1] = v2; - if ( v2 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v2); -} - -//----- (004AA628) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::__shared_ptr::operator=( - volatile signed __int32 **this, - volatile signed __int32 **a2) -{ - volatile signed __int32 *v2; // edx - - v2 = a2[1]; - *this = *a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(this + 1, v2); - return this; -} - -//----- (004AA650) -------------------------------------------------------- -_DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( (_DWORD *)*result == result + 2 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - this[1] = v3; - *((_BYTE *)a2 + 8) = 0; - return result; -} - -//----- (004AA6B0) -------------------------------------------------------- -_BYTE *__userpurge std::__sso_string::__sso_string@( - int a1@, - std::__sso_string *this, - size_t Size, - unsigned int a4) -{ - _BYTE *result; // eax - char v6; // dl - int v7; // esi - int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - result = (_BYTE *)(a1 + 8); - *(_DWORD *)a1 = a1 + 8; - if ( (std::__sso_string *)((char *)this + Size) ) - { - if ( !this ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - v8[0] = Size; - if ( Size > 0xF ) - { - result = std::string::_M_create((unsigned int *)v8, 0); - *(_DWORD *)a1 = result; - *(_DWORD *)(a1 + 8) = v8[0]; - } - else - { - if ( Size == 1 ) - { - v6 = *(_BYTE *)this; - *(_DWORD *)(a1 + 4) = 1; - *(_BYTE *)(a1 + 8) = v6; - *(_BYTE *)(a1 + 9) = 0; - return result; - } - if ( !Size ) - { - *(_DWORD *)(a1 + 4) = 0; - *result = 0; - return result; - } - } - memcpy(result, this, Size); - v7 = v8[0]; - result = *(_BYTE **)a1; - *(_DWORD *)(a1 + 4) = v8[0]; - result[v7] = 0; - return result; -} -// 4AA6B0: using guessed type size_t var_10[4]; - -//----- (004AA770) -------------------------------------------------------- -_BYTE *__thiscall std::__sso_string::__sso_string(char *this, int a2) -{ - _BYTE *result; // eax - char *Src; // edi - size_t Size; // esi - char v6; // dl - int v7; // esi - int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - result = this + 8; - *(_DWORD *)this = this + 8; - Src = *(char **)a2; - Size = *(_DWORD *)(a2 + 4); - if ( Size + *(_DWORD *)a2 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - v8[0] = *(_DWORD *)(a2 + 4); - if ( Size > 0xF ) - { - result = std::string::_M_create((unsigned int *)v8, 0); - *(_DWORD *)this = result; - *((_DWORD *)this + 2) = v8[0]; - } - else - { - if ( Size == 1 ) - { - v6 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v6; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = v8[0]; - result[v7] = 0; - return result; -} -// 4AA770: using guessed type unsigned int var_10[4]; - -//----- (004AA830) -------------------------------------------------------- -void __userpurge std::__sso_string::__sso_string( - _DWORD *a1@, - std::__sso_string *this, - const std::__sso_string *a3) -{ - _DWORD *v4; // edx - _BYTE *v5; // edi - size_t v6; // esi - _DWORD *v7; // eax - int v8[7]; // [esp+5Ch] [ebp+40h] BYREF - - v4 = a1 + 2; - *a1 = a1 + 2; - v5 = *(_BYTE **)this; - v6 = *((_DWORD *)this + 1); - if ( v6 + *(_DWORD *)this && !v5 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v8[0] = *((_DWORD *)this + 1); - if ( v6 > 0xF ) - { - v7 = std::string::_M_create((unsigned int *)v8, 0); - *a1 = v7; - v4 = v7; - a1[2] = v8[0]; - goto LABEL_10; - } - if ( v6 != 1 ) - { - if ( !v6 ) - goto LABEL_6; -LABEL_10: - memcpy(v4, v5, v6); - v6 = v8[0]; - v4 = (_DWORD *)*a1; - goto LABEL_6; - } - *((_BYTE *)a1 + 8) = *v5; -LABEL_6: - a1[1] = v6; - *((_BYTE *)v4 + v6) = 0; -} -// 4AA830: using guessed type size_t anonymous_0[7]; - -//----- (004AA910) -------------------------------------------------------- -_BYTE *__userpurge std::__sso_string::__sso_string@(int a1@, std::__sso_string **this, const std::string *a3) -{ - unsigned int v4; // [esp+8h] [ebp-14h] - - return std::__sso_string::__sso_string(a1, *this, *((_DWORD *)*this - 3), v4); -} -// 4AA923: variable 'v4' is possibly undefined - -//----- (004AA940) -------------------------------------------------------- -int __fastcall std::__sso_string::__sso_string(int a1) -{ - int result; // eax - - result = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - return result; -} - -//----- (004AA960) -------------------------------------------------------- -void __fastcall std::__sso_string::~__sso_string(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (004AA990) -------------------------------------------------------- -_DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int a2) -{ - _DWORD *v3; // eax - _DWORD *Src; // ecx - int v5; // edx - int v6; // ebp - - v3 = (_DWORD *)*this; - Src = *(_DWORD **)a2; - v5 = *(_DWORD *)(a2 + 4); - if ( *(_DWORD *)a2 != a2 + 8 ) - { - if ( v3 == this + 2 ) - { - *this = Src; - this[1] = v5; - this[2] = *(_DWORD *)(a2 + 8); - } - else - { - *this = Src; - v6 = this[2]; - this[1] = v5; - this[2] = *(_DWORD *)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v6; - goto LABEL_5; - } - } - *(_DWORD *)a2 = a2 + 8; - v3 = (_DWORD *)(a2 + 8); - goto LABEL_5; - } - if ( v5 ) - { - if ( v5 == 1 ) - *(_BYTE *)v3 = *(_BYTE *)(a2 + 8); - else - memcpy(v3, Src, *(_DWORD *)(a2 + 4)); - v5 = *(_DWORD *)(a2 + 4); - v3 = (_DWORD *)*this; - } - this[1] = v5; - *((_BYTE *)v3 + v5) = 0; - v3 = *(_DWORD **)a2; -LABEL_5: - *(_DWORD *)(a2 + 4) = 0; - *(_BYTE *)v3 = 0; - return this; -} - -//----- (004AAA40) -------------------------------------------------------- -void *__thiscall std::__sso_string::operator=(void *this, int a2) -{ - std::string::_M_assign((int)this, a2); - return this; -} - -//----- (004AAA90) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) -{ - std::ctype::ctype(this, 0, 0, a3); - *this = &off_51A968; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51A968: using guessed type int (*off_51A968)(); - -//----- (004AABA0) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) -{ - std::ctype_byname::ctype_byname(this, *a2, a3); -} - -//----- (004AABB0) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) -{ - std::ctype_byname::ctype_byname(this, *a2, a3); -} - -//----- (004AABC0) -------------------------------------------------------- -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block) -{ - *Block = &off_51A968; - std::ctype::~ctype((int)Block); - operator delete(Block); -} -// 51A968: using guessed type int (*off_51A968)(); - -//----- (004AABE0) -------------------------------------------------------- -void __fastcall std::ctype_byname::~ctype_byname(int a1) -{ - *(_DWORD *)a1 = &off_51A968; - std::ctype::~ctype(a1); -} -// 51A968: using guessed type int (*off_51A968)(); - -//----- (004AABF0) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B448; - this[2] = std::locale::facet::_S_get_c_locale(); - *((_BYTE *)this + 12) = 0; - std::ctype::_M_initialize_ctype((int)this); - *this = &off_51A998; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - std::ctype::_M_initialize_ctype((int)this); - } - } -} -// 51A998: using guessed type int (*off_51A998)(); -// 51B448: using guessed type int (*off_51B448)(); - -//----- (004AAD50) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) -{ - std::ctype_byname::ctype_byname(this, *a2, a3); -} - -//----- (004AAD60) -------------------------------------------------------- -void __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) -{ - std::ctype_byname::ctype_byname(this, *a2, a3); -} - -//----- (004AAD70) -------------------------------------------------------- -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B448; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - *Block = &unk_51B24C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4AADB4: variable 'lpfctx' is possibly undefined -// 51B448: using guessed type int (*off_51B448)(); - -//----- (004AADD0) -------------------------------------------------------- -void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B448; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_51B24C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4AAE14: variable 'lpfctx' is possibly undefined -// 51B448: using guessed type int (*off_51B448)(); - -//----- (004AAE30) -------------------------------------------------------- -void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_51A940; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_51A9D8; -} -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9D8: using guessed type void (__cdecl *off_51A9D8)(std::domain_error *__hidden this); - -//----- (004AAEC0) -------------------------------------------------------- -void __thiscall std::domain_error::domain_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_51A940; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_51A9D8; -} -// 4AAF14: variable 'v2' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9D8: using guessed type void (__cdecl *off_51A9D8)(std::domain_error *__hidden this); - -//----- (004AAF60) -------------------------------------------------------- -void __userpurge std::domain_error::domain_error(_DWORD *a1@, std::domain_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51A940; - std::string::string(a1 + 1, this, v3); - *a1 = &off_51A9D8; -} -// 4AAFA8: variable 'v3' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9D8: using guessed type void (__cdecl *off_51A9D8)(std::domain_error *__hidden this); - -//----- (004AAFF0) -------------------------------------------------------- -void __fastcall std::domain_error::~domain_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51A9D8; - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4AAFFC: variable 'Block' is possibly undefined -// 51A9D8: using guessed type void (__cdecl *off_51A9D8)(std::domain_error *__hidden this); - -//----- (004AB010) -------------------------------------------------------- -void __cdecl std::domain_error::~domain_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51A940; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4AB01B: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 4AB010: using guessed type int var_D[3]; - -//----- (004AB070) -------------------------------------------------------- -void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_51A940; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_51A9EC; -} -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9EC: using guessed type void (__cdecl *off_51A9EC)(std::length_error *__hidden this); - -//----- (004AB100) -------------------------------------------------------- -void __thiscall std::length_error::length_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_51A940; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_51A9EC; -} -// 4AB154: variable 'v2' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9EC: using guessed type void (__cdecl *off_51A9EC)(std::length_error *__hidden this); - -//----- (004AB1A0) -------------------------------------------------------- -void __userpurge std::length_error::length_error(_DWORD *a1@, std::length_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51A940; - std::string::string(a1 + 1, this, v3); - *a1 = &off_51A9EC; -} -// 4AB1E8: variable 'v3' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51A9EC: using guessed type void (__cdecl *off_51A9EC)(std::length_error *__hidden this); - -//----- (004AB230) -------------------------------------------------------- -void __fastcall std::length_error::~length_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51A9EC; - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4AB23C: variable 'Block' is possibly undefined -// 51A9EC: using guessed type void (__cdecl *off_51A9EC)(std::length_error *__hidden this); - -//----- (004AB250) -------------------------------------------------------- -void __cdecl std::length_error::~length_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51A940; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4AB25B: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 4AB250: using guessed type int var_D[3]; - -//----- (004AB2B0) -------------------------------------------------------- -void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_51A940; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_51AA00; -} -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AA00: using guessed type void (__cdecl *off_51AA00)(std::out_of_range *__hidden this); - -//----- (004AB340) -------------------------------------------------------- -void __thiscall std::out_of_range::out_of_range(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_51A940; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_51AA00; -} -// 4AB394: variable 'v2' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AA00: using guessed type void (__cdecl *off_51AA00)(std::out_of_range *__hidden this); - -//----- (004AB3E0) -------------------------------------------------------- -void __userpurge std::out_of_range::out_of_range(_DWORD *a1@, std::out_of_range *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51A940; - std::string::string(a1 + 1, this, v3); - *a1 = &off_51AA00; -} -// 4AB428: variable 'v3' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AA00: using guessed type void (__cdecl *off_51AA00)(std::out_of_range *__hidden this); - -//----- (004AB470) -------------------------------------------------------- -void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51AA00; - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4AB47C: variable 'Block' is possibly undefined -// 51AA00: using guessed type void (__cdecl *off_51AA00)(std::out_of_range *__hidden this); - -//----- (004AB490) -------------------------------------------------------- -void __cdecl std::out_of_range::~out_of_range(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51A940; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4AB49B: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 4AB490: using guessed type int var_D[3]; - -//----- (004AB4F0) -------------------------------------------------------- -void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, char *Str) -{ - int (__thiscall *v4)(int, int, int); // eax - unsigned int **v5; // eax - unsigned int *v6; // edx - size_t v7; // eax - unsigned int **v8; // eax - unsigned int *v9; // edx - void *Block[2]; // [esp+68h] [ebp-50h] BYREF - int v12[4]; // [esp+70h] [ebp-48h] BYREF - void *v13[2]; // [esp+80h] [ebp-38h] BYREF - int v14[4]; // [esp+88h] [ebp-30h] BYREF - void *v15[2]; // [esp+98h] [ebp-20h] BYREF - char v16[24]; // [esp+A0h] [ebp-18h] BYREF - - v4 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)a3 + 16); - if ( v4 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) - { - v15[1] = 0; - v15[0] = v16; - v16[0] = 0; - if ( a2 == 1 ) - std::string::_M_replace((unsigned int **)v15, 0, 0, "iostream error", 0xEu); - else - std::string::_M_replace((unsigned int **)v15, 0, 0, "Unknown error", 0xDu); - } - else - { - ((void (__cdecl *)(int, int))v4)(a3, a2); - } - v5 = std::string::_M_replace((unsigned int **)v15, 0, 0, ": ", 2u); - v13[0] = v14; - if ( *v5 == (unsigned int *)(v5 + 2) ) - { - v14[0] = (int)v5[2]; - v14[1] = (int)v5[3]; - v14[2] = (int)v5[4]; - v14[3] = (int)v5[5]; - } - else - { - v13[0] = *v5; - v14[0] = (int)v5[2]; - } - v6 = v5[1]; - *((_BYTE *)v5 + 8) = 0; - v13[1] = v6; - *v5 = (unsigned int *)(v5 + 2); - v5[1] = 0; - v7 = strlen(Str); - v8 = std::string::_M_replace((unsigned int **)v13, 0, 0, Str, v7); - Block[0] = v12; - if ( *v8 == (unsigned int *)(v8 + 2) ) - { - v12[0] = (int)v8[2]; - v12[1] = (int)v8[3]; - v12[2] = (int)v8[4]; - v12[3] = (int)v8[5]; - } - else - { - Block[0] = *v8; - v12[0] = (int)v8[2]; - } - v9 = v8[1]; - *((_BYTE *)v8 + 8) = 0; - Block[1] = v9; - *v8 = (unsigned int *)(v8 + 2); - v8[1] = 0; - std::runtime_error::runtime_error(this, (int)Block); - if ( Block[0] != v12 ) - operator delete(Block[0]); - if ( v13[0] != v14 ) - operator delete(v13[0]); - if ( v15[0] != v16 ) - operator delete(v15[0]); - *this = &off_51AA14; - this[2] = a2; - this[3] = a3; -} -// 51AA14: using guessed type void (__cdecl *off_51AA14)(std::system_error *__hidden this); - -//----- (004AB830) -------------------------------------------------------- -void __thiscall std::system_error::system_error(_DWORD *this, int a2, int a3, int a4) -{ - int (__thiscall *v4)(int, int, int); // eax - int *v5; // eax - unsigned int v6; // ebx - unsigned int v7; // eax - unsigned int v8; // edx - void **v9; // eax - _BYTE *Src; // [esp+14h] [ebp-B4h] - _BYTE *Size; // [esp+28h] [ebp-A0h] - void *Block[2]; // [esp+68h] [ebp-60h] BYREF - int v14[4]; // [esp+70h] [ebp-58h] BYREF - void *v15; // [esp+80h] [ebp-48h] BYREF - size_t v16; // [esp+84h] [ebp-44h] - int v17[4]; // [esp+88h] [ebp-40h] BYREF - void *v18; // [esp+98h] [ebp-30h] BYREF - size_t v19; // [esp+9Ch] [ebp-2Ch] - int v20[10]; // [esp+A0h] [ebp-28h] BYREF - - v4 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)a3 + 16); - if ( v4 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) - { - LOBYTE(v20[0]) = 0; - v18 = v20; - v19 = 0; - if ( a2 == 1 ) - std::string::_M_replace((unsigned int **)&v18, 0, 0, "iostream error", 0xEu); - else - std::string::_M_replace((unsigned int **)&v18, 0, 0, "Unknown error", 0xDu); - } - else - { - ((void (__cdecl *)(int, int))v4)(a3, a2); - } - v15 = v17; - Size = *(_BYTE **)(a4 + 4); - Src = *(_BYTE **)a4; - if ( &Size[*(_DWORD *)a4] && !*(_DWORD *)a4 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Block[0] = *(void **)(a4 + 4); - if ( (unsigned int)Size > 0xF ) - { - v5 = (int *)std::string::_M_create((unsigned int *)Block, 0); - v15 = v5; - v17[0] = (int)Block[0]; -LABEL_29: - memcpy(v5, Src, (size_t)Size); - Size = Block[0]; - v5 = (int *)v15; - goto LABEL_9; - } - if ( Size == (_BYTE *)1 ) - { - LOBYTE(v17[0]) = *Src; - v5 = v17; - goto LABEL_9; - } - v5 = v17; - if ( Size ) - goto LABEL_29; -LABEL_9: - v16 = (size_t)Size; - Size[(_DWORD)v5] = 0; - if ( v16 == 0x3FFFFFFF || v16 == 1073741822 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v15, ": ", 2u); - v6 = v16 + v19; - v7 = 15; - v8 = 15; - if ( v15 != v17 ) - v8 = v17[0]; - if ( v6 <= v8 ) - goto LABEL_16; - if ( v18 != v20 ) - v7 = v20[0]; - if ( v6 <= v7 ) - v9 = (void **)std::string::_M_replace((unsigned int **)&v18, 0, 0, (char *)v15, v16); - else -LABEL_16: - v9 = (void **)std::string::_M_append(&v15, v18, v19); - Block[0] = v14; - if ( *v9 == v9 + 2 ) - { - v14[0] = (int)v9[2]; - v14[1] = (int)v9[3]; - v14[2] = (int)v9[4]; - v14[3] = (int)v9[5]; - } - else - { - Block[0] = *v9; - v14[0] = (int)v9[2]; - } - Block[1] = v9[1]; - *v9 = v9 + 2; - *((_BYTE *)v9 + 8) = 0; - v9[1] = 0; - std::runtime_error::runtime_error(this, (int)Block); - if ( Block[0] != v14 ) - operator delete(Block[0]); - if ( v15 != v17 ) - operator delete(v15); - if ( v18 != v20 ) - operator delete(v18); - this[2] = a2; - this[3] = a3; - *this = &off_51AA14; -} -// 51AA14: using guessed type void (__cdecl *off_51AA14)(std::system_error *__hidden this); - -//----- (004ABCA0) -------------------------------------------------------- -void __fastcall std::system_error::~system_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51AA14; - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4ABCAC: variable 'Block' is possibly undefined -// 51AA14: using guessed type void (__cdecl *off_51AA14)(std::system_error *__hidden this); - -//----- (004ABCC0) -------------------------------------------------------- -void __cdecl std::system_error::~system_error(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51AA14; - std::runtime_error::~runtime_error(a1); -} -// 4ABCC0: variable 'v1' is possibly undefined -// 51AA14: using guessed type void (__cdecl *off_51AA14)(std::system_error *__hidden this); - -//----- (004ABCD0) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - char a10) -{ - int result; // eax - - switch ( a10 ) - { - case 'd': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'x': - case 'y': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'm': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 't': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'w': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - } - return result; -} - -//----- (004ABE40) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - char a10) -{ - int result; // eax - - switch ( a10 ) - { - case 'd': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'x': - case 'y': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'm': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 't': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'w': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - } - return result; -} - -//----- (004ABFB0) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - char a10) -{ - int result; // eax - - switch ( a10 ) - { - case 'd': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'x': - case 'y': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'm': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 't': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'w': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - } - return result; -} - -//----- (004AC120) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - char a10) -{ - int result; // eax - - switch ( a10 ) - { - case 'd': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'x': - case 'y': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'm': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 't': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - case 'w': - result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9); - break; - } - return result; -} - -//----- (004AC290) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_get( - int a1, - int a2, - __int64 a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - int a9, - _DWORD *a10) -{ - int v11; // ecx - int v12; // eax - void (__cdecl *v13)(_DWORD *); // eax - int v14; // eax - const std::string *v15; // [esp+4h] [ebp-74h] - __int64 lpuexcpt; // [esp+20h] [ebp-58h] - int v17; // [esp+6Bh] [ebp-Dh] BYREF - _DWORD v18[3]; // [esp+6Ch] [ebp-Ch] BYREF - __int64 v19; // [esp+88h] [ebp+10h] - - if ( a9 ) - return ((__int64 (__thiscall *)(int, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, int))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - HIDWORD(a3), - a4, - a5, - a6, - a7, - a8, - a9); - v18[0] = std::string::_S_construct(0, 0); - v19 = ((__int64 (__thiscall *)(int, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, _DWORD *))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - HIDWORD(a3), - a4, - a5, - a6, - a7, - a8, - v18); - if ( *a8 ) - { - v11 = v18[0]; - } - else - { - v13 = (void (__cdecl *)(_DWORD *))a10[6]; - if ( v13 ) - v13(a10); - std::string::string(a10, (std::string *)v18, v15); - v11 = v18[0]; - v14 = *(_DWORD *)(v18[0] - 12); - a10[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a10[1] = v14; - } - lpuexcpt = v19; - if ( _CRT_MT ) - { - v12 = _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF); - } - else - { - v12 = *(_DWORD *)(v11 - 4); - *(_DWORD *)(v11 - 4) = v12 - 1; - } - if ( v12 <= 0 ) - std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)&v17); - return lpuexcpt; -} -// 4AC429: variable 'v15' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004AC490) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_get( - int a1, - int *a2, - __int64 a3, - int a4, - int a5, - unsigned __int8 a6, - int a7, - _DWORD *a8, - int a9, - _DWORD *a10) -{ - int v10; // edx - __int64 (__thiscall *v12)(int *, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, void **); // eax - void (__cdecl *v13)(_DWORD *); // eax - _BYTE *v14; // ebx - unsigned int v15; // ecx - _DWORD *v16; // eax - __int64 Size; // [esp+20h] [ebp-68h] - size_t Sizea; // [esp+20h] [ebp-68h] - unsigned int v19; // [esp+64h] [ebp-24h] BYREF - void *Block; // [esp+68h] [ebp-20h] BYREF - unsigned int v21; // [esp+6Ch] [ebp-1Ch] - char v22[20]; // [esp+70h] [ebp-18h] BYREF - __int64 v23; // [esp+98h] [ebp+10h] - - v10 = *a2; - if ( a9 ) - return ((__int64 (__thiscall *)(int *, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, int))*(_DWORD *)(v10 + 8))( - a2, - a3, - HIDWORD(a3), - a4, - a5, - a6, - a7, - a8, - a9); - Block = v22; - v12 = *(__int64 (__thiscall **)(int *, _DWORD, _DWORD, int, int, _DWORD, int, _DWORD *, void **))(v10 + 12); - v21 = 0; - v22[0] = 0; - v23 = v12(a2, a3, HIDWORD(a3), a4, a5, a6, a7, a8, &Block); - if ( !*a8 ) - { - v13 = (void (__cdecl *)(_DWORD *))a10[6]; - if ( v13 ) - v13(a10); - v14 = Block; - v15 = v21; - v16 = a10 + 2; - *a10 = a10 + 2; - Sizea = v15; - if ( &v14[v15] && !v14 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v19 = v15; - if ( v15 > 0xF ) - { - v16 = std::string::_M_create(&v19, 0); - *a10 = v16; - a10[2] = v19; - } - else - { - if ( v15 == 1 ) - { - *((_BYTE *)a10 + 8) = *v14; -LABEL_15: - a10[1] = Sizea; - *((_BYTE *)v16 + Sizea) = 0; - a10[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - goto LABEL_5; - } - if ( !v15 ) - goto LABEL_15; - } - memcpy(v16, v14, Sizea); - Sizea = v19; - v16 = (_DWORD *)*a10; - goto LABEL_15; - } -LABEL_5: - Size = v23; - if ( Block != v22 ) - operator delete(Block); - return Size; -} - -//----- (004AC700) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__money_get( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - unsigned __int8 a7, - int a8, - _DWORD *a9, - int a10, - _DWORD *a11) -{ - int v12; // ecx - int v13; // eax - void (__cdecl *v14)(_DWORD *); // eax - int v15; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-58h] - int v17; // [esp+7Bh] [ebp-Dh] BYREF - _DWORD v18[2]; // [esp+7Ch] [ebp-Ch] BYREF - - if ( a10 ) - return (struct _Unwind_Exception *)(*(unsigned int (__thiscall **)(int, int, int, int, int, _DWORD, int, _DWORD *, int))(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - a10); - v18[0] = std::wstring::_S_construct(0, 0); - lpuexcpt = (struct _Unwind_Exception *)(*(unsigned int (__thiscall **)(int, int, int, int, int, _DWORD, int, _DWORD *, _DWORD *))(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - v18); - if ( *a9 ) - { - v12 = v18[0]; - } - else - { - v14 = (void (__cdecl *)(_DWORD *))a11[6]; - if ( v14 ) - v14(a11); - std::wstring::basic_string(a11, v18); - v12 = v18[0]; - v15 = *(_DWORD *)(v18[0] - 12); - a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a11[1] = v15; - } - if ( _CRT_MT ) - { - v13 = _InterlockedExchangeAdd((volatile signed __int32 *)(v12 - 4), 0xFFFFFFFF); - } - else - { - v13 = *(_DWORD *)(v12 - 4); - *(_DWORD *)(v12 - 4) = v13 - 1; - } - if ( v13 <= 0 ) - std::wstring::_Rep::_M_destroy((void *)(v12 - 12), (int)&v17); - return lpuexcpt; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004AC920) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__money_get( - int a1, - int *a2, - int a3, - int a4, - int a5, - int a6, - unsigned __int8 a7, - int a8, - _DWORD *a9, - int a10, - _DWORD *a11) -{ - int v11; // edx - __int64 (__thiscall *v13)(int *, int, int, int, int, _DWORD, int, _DWORD *, void **); // eax - void (__cdecl *v14)(_DWORD *); // eax - int v15; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-68h] - void *Block; // [esp+78h] [ebp-20h] BYREF - int v18; // [esp+7Ch] [ebp-1Ch] - __int16 v19[10]; // [esp+80h] [ebp-18h] BYREF - - v11 = *a2; - if ( a10 ) - return (struct _Unwind_Exception *)(*(unsigned int (__thiscall **)(int *, int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - a8, - a9, - a10); - Block = v19; - v19[0] = 0; - v13 = *(__int64 (__thiscall **)(int *, int, int, int, int, _DWORD, int, _DWORD *, void **))(v11 + 12); - v18 = 0; - lpuexcpt = (struct _Unwind_Exception *)v13(a2, a3, a4, a5, a6, a7, a8, a9, &Block); - if ( !*a9 ) - { - v14 = (void (__cdecl *)(_DWORD *))a11[6]; - if ( v14 ) - v14(a11); - v15 = v18; - *a11 = a11 + 2; - std::wstring::_M_construct(a11, Block, (int)Block + 2 * v15); - a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - } - if ( Block != v19 ) - operator delete(Block); - return lpuexcpt; -} - -//----- (004ACAF0) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_put( - int a1, - int a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - char a7, - long double a8, - int a9) -{ - int v9; // ecx - int v10; // eax - __int64 lpuexcpt; // [esp+20h] [ebp-58h] - _DWORD v14[2]; // [esp+6Bh] [ebp-Dh] BYREF - - if ( !a9 ) - return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - LODWORD(a8), - DWORD1(a8), - HIDWORD(a8)); - if ( !*(_DWORD *)(a9 + 24) ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::string::string((_DWORD *)((char *)v14 + 1), *(unsigned __int8 **)a9, *(_DWORD *)(a9 + 4), (int)v14); - lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, char *))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - (char *)v14 + 1); - v9 = *(_DWORD *)((char *)v14 + 1); - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)((char *)v14 + 1) - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; -LABEL_8: - std::string::_Rep::_M_destroy((void *)(v9 - 12), (int)v14); - return lpuexcpt; - } - v10 = *(_DWORD *)(*(_DWORD *)((char *)v14 + 1) - 4); - *(_DWORD *)(*(_DWORD *)((char *)v14 + 1) - 4) = v10 - 1; - if ( v10 <= 0 ) - goto LABEL_8; - return lpuexcpt; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004ACCA0) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_put( - int a1, - int a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - char a7, - long double a8, - int a9) -{ - __int64 lpuexcpt; // [esp+20h] [ebp-68h] - void *Block[2]; // [esp+68h] [ebp-20h] BYREF - char v13[20]; // [esp+70h] [ebp-18h] BYREF - - if ( !a9 ) - return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - LODWORD(a8), - DWORD1(a8), - HIDWORD(a8)); - if ( !*(_DWORD *)(a9 + 24) ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - Block[0] = v13; - std::string::_M_construct(Block, *(_BYTE **)a9, *(_DWORD *)a9 + *(_DWORD *)(a9 + 4)); - lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, void **))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - Block); - if ( Block[0] != v13 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (004ACE20) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_put( - int a1, - int a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - unsigned __int16 a7, - long double a8, - int a9) -{ - int v9; // ecx - int v10; // eax - __int64 lpuexcpt; // [esp+20h] [ebp-58h] - _DWORD v14[2]; // [esp+6Bh] [ebp-Dh] BYREF - - if ( !a9 ) - return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - LODWORD(a8), - DWORD1(a8), - HIDWORD(a8)); - if ( !*(_DWORD *)(a9 + 24) ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - std::wstring::basic_string((_DWORD *)((char *)v14 + 1), *(_WORD **)a9, *(_DWORD *)(a9 + 4), (int)v14); - lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, char *))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - (char *)v14 + 1); - v9 = *(_DWORD *)((char *)v14 + 1); - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)((char *)v14 + 1) - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; -LABEL_8: - std::wstring::_Rep::_M_destroy((void *)(v9 - 12), (int)v14); - return lpuexcpt; - } - v10 = *(_DWORD *)(*(_DWORD *)((char *)v14 + 1) - 4); - *(_DWORD *)(*(_DWORD *)((char *)v14 + 1) - 4) = v10 - 1; - if ( v10 <= 0 ) - goto LABEL_8; - return lpuexcpt; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004ACFD0) -------------------------------------------------------- -__int64 __cdecl std::__facet_shims::__money_put( - int a1, - int a2, - int a3, - int a4, - unsigned __int8 a5, - int a6, - unsigned __int16 a7, - long double a8, - int a9) -{ - __int64 lpuexcpt; // [esp+20h] [ebp-68h] - void *Block[2]; // [esp+68h] [ebp-20h] BYREF - char v13[20]; // [esp+70h] [ebp-18h] BYREF - - if ( !a9 ) - return ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))*(_DWORD *)(*(_DWORD *)a2 + 8))( - a2, - a3, - a4, - a5, - a6, - a7, - LODWORD(a8), - DWORD1(a8), - HIDWORD(a8)); - if ( !*(_DWORD *)(a9 + 24) ) - std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); - Block[0] = v13; - std::wstring::_M_construct(Block, *(_WORD **)a9, *(_DWORD *)a9 + 2 * *(_DWORD *)(a9 + 4)); - lpuexcpt = ((__int64 (__thiscall *)(int, int, int, _DWORD, int, _DWORD, void **))*(_DWORD *)(*(_DWORD *)a2 + 12))( - a2, - a3, - a4, - a5, - a6, - a7, - Block); - if ( Block[0] != v13 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (004AD150) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *Block = &off_519D20; - v3 = (volatile signed __int32 *)Block[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51B590; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4AD1B3: variable 'lpfctx' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519D20: using guessed type int (*off_519D20)(); -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004AD1E0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *Block = &off_519D3C; - v3 = (volatile signed __int32 *)Block[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51A618; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4AD243: variable 'lpfctx' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519D3C: using guessed type int (*off_519D3C)(); -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004AD270) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *a1 = &off_519D20; - v3 = (volatile signed __int32 *)a1[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *a1 = &off_51B590; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4AD2D3: variable 'lpfctx' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519D20: using guessed type int (*off_519D20)(); -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004AD300) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *a1 = &off_519D3C; - v3 = (volatile signed __int32 *)a1[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *a1 = &off_51A618; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4AD363: variable 'lpfctx' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519D3C: using guessed type int (*off_519D3C)(); -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004AD390) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *Block = &off_519D58; - v3 = (volatile signed __int32 *)Block[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51B5AC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4AD3F3: variable 'lpfctx' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519D58: using guessed type int (*off_519D58)(); -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004AD420) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *Block = &off_519D74; - v3 = (volatile signed __int32 *)Block[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51A634; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4AD483: variable 'lpfctx' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519D74: using guessed type int (*off_519D74)(); -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004AD4B0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *a1 = &off_519D58; - v3 = (volatile signed __int32 *)a1[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *a1 = &off_51B5AC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4AD513: variable 'lpfctx' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519D58: using guessed type int (*off_519D58)(); -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004AD540) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v2 = _CRT_MT; - *a1 = &off_519D74; - v3 = (volatile signed __int32 *)a1[3]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *a1 = &off_51A634; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4AD5A3: variable 'lpfctx' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519D74: using guessed type int (*off_519D74)(); -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004AD5D0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *Block = &off_519D90; - v3 = (volatile signed __int32 *)Block[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::messages::~messages(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519D90: using guessed type int (*off_519D90)(); - -//----- (004AD620) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *Block = &off_519DAC; - v3 = (volatile signed __int32 *)Block[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::messages::~messages(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519DAC: using guessed type int (*off_519DAC)(); - -//----- (004AD670) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *a1 = &off_519D90; - v3 = (volatile signed __int32 *)a1[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::messages::~messages(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519D90: using guessed type int (*off_519D90)(); - -//----- (004AD6C0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *a1 = &off_519DAC; - v3 = (volatile signed __int32 *)a1[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::messages::~messages(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519DAC: using guessed type int (*off_519DAC)(); - -//----- (004AD710) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *Block = &off_519DC8; - v3 = (volatile signed __int32 *)Block[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::messages::~messages(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519DC8: using guessed type int (*off_519DC8)(); - -//----- (004AD760) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *Block = &off_519DE4; - v3 = (volatile signed __int32 *)Block[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::messages::~messages(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519DE4: using guessed type int (*off_519DE4)(); - -//----- (004AD7B0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *a1 = &off_519DC8; - v3 = (volatile signed __int32 *)a1[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::messages::~messages(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519DC8: using guessed type int (*off_519DC8)(); - -//----- (004AD800) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = _CRT_MT; - *a1 = &off_519DE4; - v3 = (volatile signed __int32 *)a1[4]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::messages::~messages(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519DE4: using guessed type int (*off_519DE4)(); - -//----- (004AD850) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = Block[4]; - *Block = &off_519E00; - v3 = (volatile signed __int32 *)Block[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519E00: using guessed type int (*off_519E00)(); - -//----- (004AD8B0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = Block[4]; - *Block = &off_519E24; - v3 = (volatile signed __int32 *)Block[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519E24: using guessed type int (*off_519E24)(); - -//----- (004AD910) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = a1[4]; - *a1 = &off_519E00; - v3 = (volatile signed __int32 *)a1[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::numpunct::~numpunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519E00: using guessed type int (*off_519E00)(); - -//----- (004AD960) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = a1[4]; - *a1 = &off_519E24; - v3 = (volatile signed __int32 *)a1[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::numpunct::~numpunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519E24: using guessed type int (*off_519E24)(); - -//----- (004AD9B0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = Block[4]; - *Block = &off_519E48; - v3 = (volatile signed __int32 *)Block[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519E48: using guessed type int (*off_519E48)(); - -//----- (004ADA10) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = Block[4]; - *Block = &off_519E6C; - v3 = (volatile signed __int32 *)Block[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519E6C: using guessed type int (*off_519E6C)(); - -//----- (004ADA70) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = a1[4]; - *a1 = &off_519E48; - v3 = (volatile signed __int32 *)a1[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::numpunct::~numpunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519E48: using guessed type int (*off_519E48)(); - -//----- (004ADAC0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = a1[4]; - *a1 = &off_519E6C; - v3 = (volatile signed __int32 *)a1[3]; - *(_DWORD *)(v2 + 12) = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::numpunct::~numpunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519E6C: using guessed type int (*off_519E6C)(); - -//----- (004ADB10) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519E90; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51B744; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4ADB43: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519E90: using guessed type int (*off_519E90)(); -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004ADB70) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519EB8; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51A6D0; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4ADBA3: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519EB8: using guessed type int (*off_519EB8)(); -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004ADBD0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519E90; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51B744; - std::locale::facet::~facet(a1); -} -// 4ADBD1: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519E90: using guessed type int (*off_519E90)(); -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004ADC20) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519EB8; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51A6D0; - std::locale::facet::~facet(a1); -} -// 4ADC21: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519EB8: using guessed type int (*off_519EB8)(); -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004ADC70) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519EE4; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51B76C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4ADCA3: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519EE4: using guessed type int (*off_519EE4)(); -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004ADCD0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519F0C; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51A6FC; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4ADD03: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F0C: using guessed type int (*off_519F0C)(); -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004ADD30) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519EE4; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51B76C; - std::locale::facet::~facet(a1); -} -// 4ADD31: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519EE4: using guessed type int (*off_519EE4)(); -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004ADD80) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519F0C; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51A6FC; - std::locale::facet::~facet(a1); -} -// 4ADD81: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F0C: using guessed type int (*off_519F0C)(); -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004ADDD0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519F38; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51B804; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4ADE03: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F38: using guessed type int (*off_519F38)(); -// 51B804: using guessed type int (*off_51B804)(); - -//----- (004ADE30) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519F50; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51A728; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4ADE63: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F50: using guessed type int (*off_519F50)(); -// 51A728: using guessed type int (*off_51A728)(); - -//----- (004ADE90) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519F38; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51B804; - std::locale::facet::~facet(a1); -} -// 4ADE91: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F38: using guessed type int (*off_519F38)(); -// 51B804: using guessed type int (*off_51B804)(); - -//----- (004ADEE0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519F50; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51A728; - std::locale::facet::~facet(a1); -} -// 4ADEE1: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F50: using guessed type int (*off_519F50)(); -// 51A728: using guessed type int (*off_51A728)(); - -//----- (004ADF30) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519F68; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51B81C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4ADF63: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F68: using guessed type int (*off_519F68)(); -// 51B81C: using guessed type int (*off_51B81C)(); - -//----- (004ADF90) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519F80; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51A740; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4ADFC3: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F80: using guessed type int (*off_519F80)(); -// 51A740: using guessed type int (*off_51A740)(); - -//----- (004ADFF0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( - std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519F68; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51B81C; - std::locale::facet::~facet(a1); -} -// 4ADFF1: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F68: using guessed type int (*off_519F68)(); -// 51B81C: using guessed type int (*off_51B81C)(); - -//----- (004AE040) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( - std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519F80; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51A740; - std::locale::facet::~facet(a1); -} -// 4AE041: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F80: using guessed type int (*off_519F80)(); -// 51A740: using guessed type int (*off_51A740)(); - -//----- (004AE090) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519F98; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51B834; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4AE0C3: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F98: using guessed type int (*off_519F98)(); -// 51B834: using guessed type int (*off_51B834)(); - -//----- (004AE0F0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519FB0; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51A758; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4AE123: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519FB0: using guessed type int (*off_519FB0)(); -// 51A758: using guessed type int (*off_51A758)(); - -//----- (004AE150) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519F98; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51B834; - std::locale::facet::~facet(a1); -} -// 4AE151: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519F98: using guessed type int (*off_519F98)(); -// 51B834: using guessed type int (*off_51B834)(); - -//----- (004AE1A0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519FB0; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51A758; - std::locale::facet::~facet(a1); -} -// 4AE1A1: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519FB0: using guessed type int (*off_519FB0)(); -// 51A758: using guessed type int (*off_51A758)(); - -//----- (004AE1F0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519FC8; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51B84C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4AE223: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519FC8: using guessed type int (*off_519FC8)(); -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (004AE250) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *Block) -{ - int v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - v2 = _CRT_MT; - *Block = &off_519FE0; - v3 = (volatile signed __int32 *)Block[2]; - if ( v2 ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - *Block = &off_51A770; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4AE283: variable 'Blocka' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519FE0: using guessed type int (*off_519FE0)(); -// 51A770: using guessed type int (*off_51A770)(); - -//----- (004AE2B0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( - std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519FC8; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51B84C; - std::locale::facet::~facet(a1); -} -// 4AE2B1: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519FC8: using guessed type int (*off_519FC8)(); -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (004AE300) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( - std::locale::facet *a1) -{ - _DWORD *v1; // ecx - _DWORD *v2; // ebx - int v3; // eax - volatile signed __int32 *v4; // ecx - signed __int32 v5; // eax - - v2 = v1; - v3 = _CRT_MT; - *v1 = &off_519FE0; - v4 = (volatile signed __int32 *)v1[2]; - if ( v3 ) - { - v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); - } - else - { - v5 = *((_DWORD *)v4 + 1); - *((_DWORD *)v4 + 1) = v5 - 1; - } - if ( v5 == 1 ) - (*(void (**)(void))(*v4 + 4))(); - *v2 = &off_51A770; - std::locale::facet::~facet(a1); -} -// 4AE301: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 519FE0: using guessed type int (*off_519FE0)(); -// 51A770: using guessed type int (*off_51A770)(); - -//----- (004AE350) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_519FF8; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519FF8: using guessed type int (*off_519FF8)(); - -//----- (004AE3C0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_51A02C; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A02C: using guessed type int (*off_51A02C)(); - -//----- (004AE430) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_519FF8; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 519FF8: using guessed type int (*off_519FF8)(); - -//----- (004AE4A0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_51A02C; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A02C: using guessed type int (*off_51A02C)(); - -//----- (004AE510) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_51A060; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A060: using guessed type int (*off_51A060)(); - -//----- (004AE580) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_51A094; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A094: using guessed type int (*off_51A094)(); - -//----- (004AE5F0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_51A060; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A060: using guessed type int (*off_51A060)(); - -//----- (004AE660) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_51A094; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[6] = 0; - v2[8] = 0; - v2[10] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A094: using guessed type int (*off_51A094)(); - -//----- (004AE6D0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( - _DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_51A0C8; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A0C8: using guessed type int (*off_51A0C8)(); - -//----- (004AE740) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( - _DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_51A0FC; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A0FC: using guessed type int (*off_51A0FC)(); - -//----- (004AE7B0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_51A0C8; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A0C8: using guessed type int (*off_51A0C8)(); - -//----- (004AE820) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_51A0FC; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A0FC: using guessed type int (*off_51A0FC)(); - -//----- (004AE890) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( - _DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_51A130; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A130: using guessed type int (*off_51A130)(); - -//----- (004AE900) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( - _DWORD *Block) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)Block[4]; - *Block = &off_51A164; - v3 = (volatile signed __int32 *)Block[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A164: using guessed type int (*off_51A164)(); - -//----- (004AE970) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_51A130; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A130: using guessed type int (*off_51A130)(); - -//----- (004AE9E0) -------------------------------------------------------- -void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) -{ - _DWORD *v2; // eax - volatile signed __int32 *v3; // ecx - signed __int32 v4; // eax - - v2 = (_DWORD *)a1[4]; - *a1 = &off_51A164; - v3 = (volatile signed __int32 *)a1[3]; - v2[3] = 0; - v2[7] = 0; - v2[9] = 0; - v2[11] = 0; - if ( _CRT_MT ) - { - v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); - } - else - { - v4 = *((_DWORD *)v3 + 1); - *((_DWORD *)v3 + 1) = v4 - 1; - } - if ( v4 == 1 ) - (*(void (**)(void))(*v3 + 4))(); - std::moneypunct::~moneypunct(a1); -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A164: using guessed type int (*off_51A164)(); - -//----- (004AEA50) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *a1) -{ - int v1; // ecx - int v2; // eax - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v1 - 12), (int)v3); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4AEA50: using guessed type int var_D[3]; - -//----- (004AEAA0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block) -{ - if ( *Block != Block + 2 ) - operator delete(*Block); -} - -//----- (004AEAD0) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(int *a1) -{ - int v1; // ecx - int v2; // eax - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v1 = *a1; - if ( !_CRT_MT ) - { - v2 = *(_DWORD *)(v1 - 4); - *(_DWORD *)(v1 - 4) = v2 - 1; - if ( v2 > 0 ) - return; -LABEL_5: - std::wstring::_Rep::_M_destroy((void *)(v1 - 12), (int)v3); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v1 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4AEAD0: using guessed type int var_D[3]; - -//----- (004AEB20) -------------------------------------------------------- -void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **Block) -{ - if ( *Block != Block + 2 ) - operator delete(*Block); -} - -//----- (004AEB50) -------------------------------------------------------- -void __cdecl std::__facet_shims::__messages_get( - int a1, - int a2, - _DWORD *a3, - std::string *a4, - int a5, - int a6, - unsigned __int8 *a7, - size_t a8) -{ - void (__cdecl *v8)(_DWORD *); // eax - int v9; // ecx - int v10; // eax - int v11; // eax - int v12; // ecx - int v13; // eax - const std::string *v14; // [esp+4h] [ebp-74h] - _WORD v15[3]; // [esp+66h] [ebp-12h] BYREF - int v16[3]; // [esp+6Ch] [ebp-Ch] BYREF - - std::string::string(&v15[1], a7, a8, (int)v15); - (*(void (__thiscall **)(int *, int, std::string *, int, int, _WORD *))(*(_DWORD *)a2 + 12))( - v16, - a2, - a4, - a5, - a6, - &v15[1]); - v8 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v8 ) - v8(a3); - std::string::string(a3, (std::string *)v16, v14); - v9 = v16[0]; - v10 = *(_DWORD *)(v16[0] - 12); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a3[1] = v10; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v9 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_5: - v12 = *(_DWORD *)&v15[1]; - if ( !_CRT_MT ) - goto LABEL_6; - goto LABEL_10; - } - } - else - { - v11 = *(_DWORD *)(v9 - 4); - *(_DWORD *)(v9 - 4) = v11 - 1; - if ( v11 > 0 ) - goto LABEL_5; - } - std::string::_Rep::_M_destroy((void *)(v9 - 12), (int)v15 + 1); - v12 = *(_DWORD *)&v15[1]; - if ( !_CRT_MT ) - { -LABEL_6: - v13 = *(_DWORD *)(v12 - 4); - *(_DWORD *)(v12 - 4) = v13 - 1; - if ( v13 > 0 ) - return; -LABEL_11: - std::string::_Rep::_M_destroy((void *)(v12 - 12), (int)v16); - return; - } -LABEL_10: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v12 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_11; -} -// 4AEC04: variable 'v14' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004AED10) -------------------------------------------------------- -void __cdecl std::__facet_shims::__messages_get( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6, - _BYTE *a7, - int a8) -{ - void (__cdecl *v8)(_DWORD *); // eax - _BYTE *v9; // edx - _DWORD *v10; // eax - char *v11; // eax - void *Src; // [esp+24h] [ebp-84h] - int Size; // [esp+28h] [ebp-80h] - int v14; // [esp+6Ch] [ebp-3Ch] BYREF - void *v15[2]; // [esp+70h] [ebp-38h] BYREF - char v16[16]; // [esp+78h] [ebp-30h] BYREF - void *Block; // [esp+88h] [ebp-20h] BYREF - unsigned int v18; // [esp+8Ch] [ebp-1Ch] - char v19; // [esp+90h] [ebp-18h] BYREF - - v15[0] = v16; - std::string::_M_construct(v15, a7, (int)&a7[a8]); - (*(void (__thiscall **)(void **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(&Block, a2, a4, a5, a6, v15); - v8 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v8 ) - v8(a3); - v9 = Block; - v10 = a3 + 2; - *a3 = a3 + 2; - Src = v9; - Size = v18; - if ( &v9[v18] && !v9 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v14 = v18; - if ( v18 > 0xF ) - { - v10 = std::string::_M_create((unsigned int *)&v14, 0); - *a3 = v10; - a3[2] = v14; -LABEL_16: - memcpy(v10, Src, Size); - Size = v14; - v10 = (_DWORD *)*a3; - goto LABEL_8; - } - if ( v18 == 1 ) - { - *((_BYTE *)a3 + 8) = *v9; - goto LABEL_8; - } - if ( v18 ) - goto LABEL_16; -LABEL_8: - a3[1] = Size; - *((_BYTE *)v10 + Size) = 0; - v11 = (char *)Block; - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - if ( v11 != &v19 ) - operator delete(v11); - if ( v15[0] != v16 ) - operator delete(v15[0]); -} - -//----- (004AEF20) -------------------------------------------------------- -void __cdecl std::__facet_shims::__messages_get( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6, - _WORD *a7, - int a8) -{ - void (__cdecl *v8)(_DWORD *); // eax - int v9; // ecx - int v10; // eax - int v11; // eax - int v12; // ecx - int v13; // eax - _WORD v14[3]; // [esp+66h] [ebp-12h] BYREF - int v15[3]; // [esp+6Ch] [ebp-Ch] BYREF - - std::wstring::basic_string(&v14[1], a7, a8, (int)v14); - (*(void (__thiscall **)(int *, int, int, int, int, _WORD *))(*(_DWORD *)a2 + 12))(v15, a2, a4, a5, a6, &v14[1]); - v8 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v8 ) - v8(a3); - std::wstring::basic_string(a3, v15); - v9 = v15[0]; - v10 = *(_DWORD *)(v15[0] - 12); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a3[1] = v10; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v9 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_5: - v12 = *(_DWORD *)&v14[1]; - if ( !_CRT_MT ) - goto LABEL_6; - goto LABEL_10; - } - } - else - { - v11 = *(_DWORD *)(v9 - 4); - *(_DWORD *)(v9 - 4) = v11 - 1; - if ( v11 > 0 ) - goto LABEL_5; - } - std::wstring::_Rep::_M_destroy((void *)(v9 - 12), (int)v14 + 1); - v12 = *(_DWORD *)&v14[1]; - if ( !_CRT_MT ) - { -LABEL_6: - v13 = *(_DWORD *)(v12 - 4); - *(_DWORD *)(v12 - 4) = v13 - 1; - if ( v13 > 0 ) - return; -LABEL_11: - std::wstring::_Rep::_M_destroy((void *)(v12 - 12), (int)v15); - return; - } -LABEL_10: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v12 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_11; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004AF0E0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__messages_get( - int a1, - int a2, - _DWORD *a3, - int a4, - int a5, - int a6, - _WORD *a7, - int a8) -{ - void (__cdecl *v8)(_DWORD *); // eax - void *v9[2]; // [esp+60h] [ebp-38h] BYREF - char v10[16]; // [esp+68h] [ebp-30h] BYREF - void *Block[2]; // [esp+78h] [ebp-20h] BYREF - char v12; // [esp+80h] [ebp-18h] BYREF - - v9[0] = v10; - std::wstring::_M_construct(v9, a7, (int)&a7[a8]); - (*(void (__thiscall **)(void **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(Block, a2, a4, a5, a6, v9); - v8 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v8 ) - v8(a3); - *a3 = a3 + 2; - std::wstring::_M_construct(a3, (_WORD *)Block[0], (int)Block[0] + 2 * (int)Block[1]); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - if ( Block[0] != &v12 ) - operator delete(Block[0]); - if ( v9[0] != v10 ) - operator delete(v9[0]); -} - -//----- (004AF240) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open( - int a1, - int a2, - unsigned __int8 *a3, - size_t a4, - int a5) -{ - int v5; // eax - int v6; // ecx - int v7; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - char v10[13]; // [esp+5Bh] [ebp-Dh] BYREF - - std::string::string(&v10[1], a3, a4, (int)v10); - v5 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)a2 + 8))(a2, &v10[1], a5); - v6 = *(_DWORD *)&v10[1]; - lpuexcpt = (struct _Unwind_Exception *)v5; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v10[1] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; - } - else - { - v7 = *(_DWORD *)(*(_DWORD *)&v10[1] - 4); - *(_DWORD *)(*(_DWORD *)&v10[1] - 4) = v7 - 1; - if ( v7 > 0 ) - return lpuexcpt; - } - std::string::_Rep::_M_destroy((void *)(v6 - 12), (int)v10); - return lpuexcpt; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4AF240: using guessed type char var_D[13]; - -//----- (004AF350) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v8[24]; // [esp+60h] [ebp-18h] BYREF - - Block[0] = v8; - std::string::_M_construct(Block, a3, (int)&a3[a4]); - lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, Block, a5); - if ( Block[0] != v8 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (004AF420) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open( - int a1, - int a2, - unsigned __int8 *a3, - size_t a4, - int a5) -{ - int v5; // eax - int v6; // ecx - int v7; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - char v10[13]; // [esp+5Bh] [ebp-Dh] BYREF - - std::string::string(&v10[1], a3, a4, (int)v10); - v5 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)a2 + 8))(a2, &v10[1], a5); - v6 = *(_DWORD *)&v10[1]; - lpuexcpt = (struct _Unwind_Exception *)v5; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v10[1] - 4), 0xFFFFFFFF) > 0 ) - return lpuexcpt; - } - else - { - v7 = *(_DWORD *)(*(_DWORD *)&v10[1] - 4); - *(_DWORD *)(*(_DWORD *)&v10[1] - 4) = v7 - 1; - if ( v7 > 0 ) - return lpuexcpt; - } - std::string::_Rep::_M_destroy((void *)(v6 - 12), (int)v10); - return lpuexcpt; -} -// 50B0F0: using guessed type int _CRT_MT; -// 4AF420: using guessed type char var_D[13]; - -//----- (004AF530) -------------------------------------------------------- -struct _Unwind_Exception *__cdecl std::__facet_shims::__messages_open( - int a1, - int a2, - _BYTE *a3, - int a4, - int a5) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v8[24]; // [esp+60h] [ebp-18h] BYREF - - Block[0] = v8; - std::string::_M_construct(Block, a3, (int)&a3[a4]); - lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, Block, a5); - if ( Block[0] != v8 ) - operator delete(Block[0]); - return lpuexcpt; -} - -//----- (004AF600) -------------------------------------------------------- -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) -{ - return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); -} - -//----- (004AF620) -------------------------------------------------------- -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) -{ - return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); -} - -//----- (004AF640) -------------------------------------------------------- -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) -{ - return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); -} - -//----- (004AF660) -------------------------------------------------------- -int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) -{ - return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); -} - -//----- (004AF680) -------------------------------------------------------- -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) -{ - return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); -} - -//----- (004AF6C0) -------------------------------------------------------- -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) -{ - return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); -} - -//----- (004AF700) -------------------------------------------------------- -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) -{ - return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); -} - -//----- (004AF740) -------------------------------------------------------- -int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) -{ - return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); -} - -//----- (004AF780) -------------------------------------------------------- -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, std::string *a4, int a5) -{ - void (__cdecl *v5)(_DWORD *); // eax - int v6; // ecx - int v7; // eax - int v8; // eax - const std::string *v9; // [esp+4h] [ebp-64h] - int v10; // [esp+5Bh] [ebp-Dh] BYREF - _DWORD v11[3]; // [esp+5Ch] [ebp-Ch] BYREF - - (*(void (__thiscall **)(_DWORD *, int, std::string *, int))(*(_DWORD *)a2 + 12))(v11, a2, a4, a5); - v5 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v5 ) - v5(a3); - std::string::string(a3, (std::string *)v11, v9); - v6 = v11[0]; - v7 = *(_DWORD *)(v11[0] - 12); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a3[1] = v7; - if ( !_CRT_MT ) - { - v8 = *(_DWORD *)(v6 - 4); - *(_DWORD *)(v6 - 4) = v8 - 1; - if ( v8 > 0 ) - return; -LABEL_7: - std::string::_Rep::_M_destroy((void *)(v6 - 12), (int)&v10); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v6 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_7; -} -// 4AF800: variable 'v9' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004AF8A0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) -{ - void (__cdecl *v5)(_DWORD *); // eax - _BYTE *v6; // edx - _DWORD *v7; // eax - char *v8; // eax - unsigned int v9; // edx - void *Src; // [esp+14h] [ebp-64h] - int Size; // [esp+18h] [ebp-60h] - unsigned int v12; // [esp+54h] [ebp-24h] BYREF - void *Block; // [esp+58h] [ebp-20h] BYREF - unsigned int v14; // [esp+5Ch] [ebp-1Ch] - char v15; // [esp+60h] [ebp-18h] BYREF - - (*(void (__thiscall **)(void **, int, int, int))(*(_DWORD *)a2 + 12))(&Block, a2, a4, a5); - v5 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v5 ) - v5(a3); - v6 = Block; - v7 = a3 + 2; - *a3 = a3 + 2; - Src = v6; - Size = v14; - if ( &v6[v14] && !v6 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v12 = v14; - if ( v14 > 0xF ) - { - v7 = std::string::_M_create(&v12, 0); - v9 = v12; - *a3 = v7; - a3[2] = v9; -LABEL_14: - memcpy(v7, Src, Size); - Size = v12; - v7 = (_DWORD *)*a3; - goto LABEL_8; - } - if ( v14 == 1 ) - { - *((_BYTE *)a3 + 8) = *v6; - goto LABEL_8; - } - if ( v14 ) - goto LABEL_14; -LABEL_8: - a3[1] = Size; - *((_BYTE *)v7 + Size) = 0; - v8 = (char *)Block; - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - if ( v8 != &v15 ) - operator delete(v8); -} - -//----- (004AFA30) -------------------------------------------------------- -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) -{ - void (__cdecl *v5)(_DWORD *); // eax - int v6; // ecx - int v7; // eax - int v8; // eax - int v9; // [esp+5Bh] [ebp-Dh] BYREF - _DWORD v10[3]; // [esp+5Ch] [ebp-Ch] BYREF - - (*(void (__thiscall **)(_DWORD *, int, int, int))(*(_DWORD *)a2 + 12))(v10, a2, a4, a5); - v5 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v5 ) - v5(a3); - std::wstring::basic_string(a3, v10); - v6 = v10[0]; - v7 = *(_DWORD *)(v10[0] - 12); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - a3[1] = v7; - if ( !_CRT_MT ) - { - v8 = *(_DWORD *)(v6 - 4); - *(_DWORD *)(v6 - 4) = v8 - 1; - if ( v8 > 0 ) - return; -LABEL_7: - std::wstring::_Rep::_M_destroy((void *)(v6 - 12), (int)&v9); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v6 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_7; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004AFB50) -------------------------------------------------------- -void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) -{ - void (__cdecl *v5)(_DWORD *); // eax - void *v6; // edx - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v8; // [esp+60h] [ebp-18h] BYREF - - (*(void (__thiscall **)(void **, int, int, int))(*(_DWORD *)a2 + 12))(Block, a2, a4, a5); - v5 = (void (__cdecl *)(_DWORD *))a3[6]; - if ( v5 ) - v5(a3); - v6 = Block[1]; - *a3 = a3 + 2; - std::wstring::_M_construct(a3, (_WORD *)Block[0], (int)Block[0] + 2 * (_DWORD)v6); - a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; - if ( Block[0] != &v8 ) - operator delete(Block[0]); -} - -//----- (004AFC40) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); -} - -//----- (004AFC50) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); -} - -//----- (004AFC60) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); -} - -//----- (004AFC70) -------------------------------------------------------- -int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); -} - -//----- (004AFC80) -------------------------------------------------------- -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // edx - int v11; // ecx - int v12; // eax - unsigned int v13; // [esp+Ch] [ebp-5Ch] - unsigned int v14; // [esp+Ch] [ebp-5Ch] - unsigned int v15; // [esp+Ch] [ebp-5Ch] - std::string *v16; // [esp+14h] [ebp-54h] - std::string *v17; // [esp+14h] [ebp-54h] - std::string *v18; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - char v22[13]; // [esp+5Bh] [ebp-Dh] BYREF - - *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 37) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_BYTE *)(a3 + 100) = 1; - (*(void (__thiscall **)(char *, int *))(v3 + 16))(&v22[1], a2); - lpuexcpt = *(struct _Unwind_Exception **)(*(_DWORD *)&v22[1] - 12); - v16 = (std::string *)operator new[]((unsigned int)lpuexcpt + 1); - std::string::copy(&v22[1], v16, (size_t)lpuexcpt, 0, v13); - *((_BYTE *)lpuexcpt + (_DWORD)v16) = 0; - *(_DWORD *)(a3 + 12) = lpuexcpt; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v16; - v5 = *(_DWORD *)&v22[1]; - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v22[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(*(_DWORD *)&v22[1] - 4); - *(_DWORD *)(*(_DWORD *)&v22[1] - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)v22); -LABEL_3: - (*(void (__thiscall **)(char *, int *))(*a2 + 20))(&v22[1], a2); - lpuexcpta = *(struct _Unwind_Exception **)(*(_DWORD *)&v22[1] - 12); - v17 = (std::string *)operator new[]((unsigned int)lpuexcpta + 1); - std::string::copy(&v22[1], v17, (size_t)lpuexcpta, 0, v14); - *((_BYTE *)lpuexcpta + (_DWORD)v17) = 0; - *(_DWORD *)(a3 + 24) = lpuexcpta; - v7 = _CRT_MT; - *(_DWORD *)(a3 + 20) = v17; - v8 = *(_DWORD *)&v22[1]; - if ( v7 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v22[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_5; - } - else - { - v9 = *(_DWORD *)(*(_DWORD *)&v22[1] - 4); - *(_DWORD *)(*(_DWORD *)&v22[1] - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_5; - } - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)v22); -LABEL_5: - (*(void (__thiscall **)(char *, int *))(*a2 + 24))(&v22[1], a2); - lpuexcptb = *(struct _Unwind_Exception **)(*(_DWORD *)&v22[1] - 12); - v18 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); - std::string::copy(&v22[1], v18, (size_t)lpuexcptb, 0, v15); - *(_DWORD *)(a3 + 28) = v18; - *(_DWORD *)(a3 + 32) = lpuexcptb; - v10 = _CRT_MT; - *((_BYTE *)lpuexcptb + (_DWORD)v18) = 0; - v11 = *(_DWORD *)&v22[1]; - if ( !v10 ) - { - v12 = *(_DWORD *)(*(_DWORD *)&v22[1] - 4); - *(_DWORD *)(*(_DWORD *)&v22[1] - 4) = v12 - 1; - if ( v12 > 0 ) - return; -LABEL_11: - std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)v22); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v22[1] - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_11; -} -// 4AFD39: variable 'v13' is possibly undefined -// 4AFDC7: variable 'v14' is possibly undefined -// 4AFE55: variable 'v15' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 4AFC80: using guessed type char var_D[13]; - -//----- (004AFF70) -------------------------------------------------------- -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - char *v5; // eax - char *v6; // eax - _BYTE *v7; // [esp+14h] [ebp-64h] - _BYTE *v8; // [esp+14h] [ebp-64h] - _BYTE *v9; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v14; // [esp+5Ch] [ebp-1Ch] - char v15[24]; // [esp+60h] [ebp-18h] BYREF - - *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 37) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_BYTE *)(a3 + 100) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcpt = v14; - v7 = (_BYTE *)operator new[]((unsigned int)v14 + 1); - std::string::copy(&Block, v7, (size_t)lpuexcpt, 0); - *(_DWORD *)(a3 + 12) = lpuexcpt; - *((_BYTE *)lpuexcpt + (_DWORD)v7) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v7; - if ( v4 != v15 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpta = v14; - v8 = (_BYTE *)operator new[]((unsigned int)v14 + 1); - std::string::copy(&Block, v8, (size_t)lpuexcpta, 0); - *(_DWORD *)(a3 + 24) = lpuexcpta; - *((_BYTE *)lpuexcpta + (_DWORD)v8) = 0; - v5 = (char *)Block; - *(_DWORD *)(a3 + 20) = v8; - if ( v5 != v15 ) - operator delete(v5); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcptb = v14; - v9 = (_BYTE *)operator new[]((unsigned int)v14 + 1); - std::string::copy(&Block, v9, (size_t)lpuexcptb, 0); - *(_DWORD *)(a3 + 32) = lpuexcptb; - *((_BYTE *)lpuexcptb + (_DWORD)v9) = 0; - v6 = (char *)Block; - *(_DWORD *)(a3 + 28) = v9; - if ( v6 != v15 ) - operator delete(v6); -} - -//----- (004B01A0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - unsigned int v13; // [esp+Ch] [ebp-5Ch] - _WORD *v14; // [esp+10h] [ebp-58h] - _WORD *v15; // [esp+10h] [ebp-58h] - std::string *v16; // [esp+14h] [ebp-54h] - int v17; // [esp+14h] [ebp-54h] - int v18; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - int v22[3]; // [esp+5Bh] [ebp-Dh] BYREF - - *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 38) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_BYTE *)(a3 + 164) = 1; - (*(void (__thiscall **)(char *, int *))(v3 + 16))((char *)v22 + 1, a2); - lpuexcptb = *(struct _Unwind_Exception **)(*(int *)((char *)v22 + 1) - 12); - v16 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); - std::string::copy((int *)((char *)v22 + 1), v16, (size_t)lpuexcptb, 0, v13); - *((_BYTE *)lpuexcptb + (_DWORD)v16) = 0; - *(_DWORD *)(a3 + 12) = lpuexcptb; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v16; - v5 = *(int *)((char *)v22 + 1); - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(int *)((char *)v22 + 1) - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(*(int *)((char *)v22 + 1) - 4); - *(_DWORD *)(*(int *)((char *)v22 + 1) - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)v22); -LABEL_3: - (*(void (__thiscall **)(char *, int *))(*a2 + 20))((char *)v22 + 1, a2); - lpuexcpt = *(struct _Unwind_Exception **)(*(int *)((char *)v22 + 1) - 12); - v7 = (int)lpuexcpt + 1; - if ( (unsigned int)lpuexcpt + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v17 = v7; - v14 = (_WORD *)operator new[](2 * v7); - std::wstring::copy((int *)((char *)v22 + 1), v14, (unsigned int)lpuexcpt, 0); - v14[v17 - 1] = 0; - *(_DWORD *)(a3 + 20) = v14; - v8 = *(int *)((char *)v22 + 1); - *(_DWORD *)(a3 + 24) = lpuexcpt; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_6; - } - else - { - v9 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_6; - } - std::wstring::_Rep::_M_destroy((void *)(v8 - 12), (int)v22); -LABEL_6: - (*(void (__thiscall **)(char *, int *))(*a2 + 24))((char *)v22 + 1, a2); - lpuexcpta = *(struct _Unwind_Exception **)(*(int *)((char *)v22 + 1) - 12); - v10 = (int)lpuexcpta + 1; - if ( (unsigned int)lpuexcpta + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v18 = v10; - v15 = (_WORD *)operator new[](2 * v10); - std::wstring::copy((int *)((char *)v22 + 1), v15, (unsigned int)lpuexcpta, 0); - v15[v18 - 1] = 0; - *(_DWORD *)(a3 + 28) = v15; - v11 = *(int *)((char *)v22 + 1); - *(_DWORD *)(a3 + 32) = lpuexcpta; - if ( !_CRT_MT ) - { - v12 = *(_DWORD *)(v11 - 4); - *(_DWORD *)(v11 - 4) = v12 - 1; - if ( v12 > 0 ) - return; -LABEL_13: - std::wstring::_Rep::_M_destroy((void *)(v11 - 12), (int)v22); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_13; -} -// 4B025E: variable 'v13' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004B04E0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - int v5; // eax - int v6; // eax - _WORD *v7; // [esp+10h] [ebp-68h] - _WORD *v8; // [esp+10h] [ebp-68h] - _BYTE *v9; // [esp+14h] [ebp-64h] - int v10; // [esp+14h] [ebp-64h] - int v11; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v16; // [esp+5Ch] [ebp-1Ch] - char v17[24]; // [esp+60h] [ebp-18h] BYREF - - *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 38) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_BYTE *)(a3 + 164) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcptb = v16; - v9 = (_BYTE *)operator new[]((unsigned int)v16 + 1); - std::string::copy(&Block, v9, (size_t)lpuexcptb, 0); - *(_DWORD *)(a3 + 12) = lpuexcptb; - *((_BYTE *)lpuexcptb + (_DWORD)v9) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v9; - if ( v4 != v17 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpt = v16; - v5 = (int)v16 + 1; - if ( (unsigned int)v16 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v10 = v5; - v7 = (_WORD *)operator new[](2 * v5); - std::wstring::copy(&Block, v7, (unsigned int)lpuexcpt, 0); - v7[v10 - 1] = 0; - *(_DWORD *)(a3 + 20) = v7; - *(_DWORD *)(a3 + 24) = lpuexcpt; - if ( Block != v17 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcpta = v16; - v6 = (int)v16 + 1; - if ( (unsigned int)v16 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v11 = v6; - v8 = (_WORD *)operator new[](2 * v6); - std::wstring::copy(&Block, v8, (unsigned int)lpuexcpta, 0); - v8[v11 - 1] = 0; - *(_DWORD *)(a3 + 28) = v8; - *(_DWORD *)(a3 + 32) = lpuexcpta; - if ( Block != v17 ) - operator delete(Block); -} - -//----- (004B0750) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - int v13; // edx - int v14; // ecx - int v15; // eax - unsigned int v16; // [esp+Ch] [ebp-5Ch] - unsigned int v17; // [esp+Ch] [ebp-5Ch] - unsigned int v18; // [esp+Ch] [ebp-5Ch] - unsigned int v19; // [esp+Ch] [ebp-5Ch] - std::string *v20; // [esp+14h] [ebp-54h] - std::string *v21; // [esp+14h] [ebp-54h] - std::string *v22; // [esp+14h] [ebp-54h] - std::string *v23; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] - char v28[13]; // [esp+5Bh] [ebp-Dh] BYREF - - *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_DWORD *)(a3 + 36) = 0; - *(_BYTE *)(a3 + 67) = 1; - (*(void (__thiscall **)(char *, int *))(v3 + 16))(&v28[1], a2); - lpuexcpt = *(struct _Unwind_Exception **)(*(_DWORD *)&v28[1] - 12); - v20 = (std::string *)operator new[]((unsigned int)lpuexcpt + 1); - std::string::copy(&v28[1], v20, (size_t)lpuexcpt, 0, v16); - *((_BYTE *)lpuexcpt + (_DWORD)v20) = 0; - *(_DWORD *)(a3 + 12) = lpuexcpt; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v20; - v5 = *(_DWORD *)&v28[1]; - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v28[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(*(_DWORD *)&v28[1] - 4); - *(_DWORD *)(*(_DWORD *)&v28[1] - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)v28); -LABEL_3: - (*(void (__thiscall **)(char *, int *))(*a2 + 20))(&v28[1], a2); - lpuexcpta = *(struct _Unwind_Exception **)(*(_DWORD *)&v28[1] - 12); - v21 = (std::string *)operator new[]((unsigned int)lpuexcpta + 1); - std::string::copy(&v28[1], v21, (size_t)lpuexcpta, 0, v17); - *((_BYTE *)lpuexcpta + (_DWORD)v21) = 0; - *(_DWORD *)(a3 + 24) = lpuexcpta; - v7 = _CRT_MT; - *(_DWORD *)(a3 + 20) = v21; - v8 = *(_DWORD *)&v28[1]; - if ( v7 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v28[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_5; - } - else - { - v9 = *(_DWORD *)(*(_DWORD *)&v28[1] - 4); - *(_DWORD *)(*(_DWORD *)&v28[1] - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_5; - } - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)v28); -LABEL_5: - (*(void (__thiscall **)(char *, int *))(*a2 + 24))(&v28[1], a2); - lpuexcptb = *(struct _Unwind_Exception **)(*(_DWORD *)&v28[1] - 12); - v22 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); - std::string::copy(&v28[1], v22, (size_t)lpuexcptb, 0, v18); - *((_BYTE *)lpuexcptb + (_DWORD)v22) = 0; - *(_DWORD *)(a3 + 32) = lpuexcptb; - v10 = _CRT_MT; - *(_DWORD *)(a3 + 28) = v22; - v11 = *(_DWORD *)&v28[1]; - if ( v10 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v28[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - } - else - { - v12 = *(_DWORD *)(*(_DWORD *)&v28[1] - 4); - *(_DWORD *)(*(_DWORD *)&v28[1] - 4) = v12 - 1; - if ( v12 > 0 ) - goto LABEL_7; - } - std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)v28); -LABEL_7: - (*(void (__thiscall **)(char *, int *))(*a2 + 28))(&v28[1], a2); - lpuexcptc = *(struct _Unwind_Exception **)(*(_DWORD *)&v28[1] - 12); - v23 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); - std::string::copy(&v28[1], v23, (size_t)lpuexcptc, 0, v19); - *(_DWORD *)(a3 + 36) = v23; - *(_DWORD *)(a3 + 40) = lpuexcptc; - v13 = _CRT_MT; - *((_BYTE *)lpuexcptc + (_DWORD)v23) = 0; - v14 = *(_DWORD *)&v28[1]; - if ( v13 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v28[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_9; -LABEL_13: - std::string::_Rep::_M_destroy((void *)(v14 - 12), (int)v28); - goto LABEL_9; - } - v15 = *(_DWORD *)(*(_DWORD *)&v28[1] - 4); - *(_DWORD *)(*(_DWORD *)&v28[1] - 4) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_13; -LABEL_9: - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} -// 4B0821: variable 'v16' is possibly undefined -// 4B08AF: variable 'v17' is possibly undefined -// 4B093D: variable 'v18' is possibly undefined -// 4B09CB: variable 'v19' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 4B0750: using guessed type char var_D[13]; - -//----- (004B0B30) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - char *v5; // eax - char *v6; // eax - char *v7; // eax - _BYTE *v8; // [esp+14h] [ebp-64h] - _BYTE *v9; // [esp+14h] [ebp-64h] - _BYTE *v10; // [esp+14h] [ebp-64h] - _BYTE *v11; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v17; // [esp+5Ch] [ebp-1Ch] - char v18[24]; // [esp+60h] [ebp-18h] BYREF - - *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_DWORD *)(a3 + 36) = 0; - *(_BYTE *)(a3 + 67) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcpt = v17; - v8 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v8, (size_t)lpuexcpt, 0); - *(_DWORD *)(a3 + 12) = lpuexcpt; - *((_BYTE *)lpuexcpt + (_DWORD)v8) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v8; - if ( v4 != v18 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpta = v17; - v9 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v9, (size_t)lpuexcpta, 0); - *(_DWORD *)(a3 + 24) = lpuexcpta; - *((_BYTE *)lpuexcpta + (_DWORD)v9) = 0; - v5 = (char *)Block; - *(_DWORD *)(a3 + 20) = v9; - if ( v5 != v18 ) - operator delete(v5); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcptb = v17; - v10 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v10, (size_t)lpuexcptb, 0); - *(_DWORD *)(a3 + 32) = lpuexcptb; - *((_BYTE *)lpuexcptb + (_DWORD)v10) = 0; - v6 = (char *)Block; - *(_DWORD *)(a3 + 28) = v10; - if ( v6 != v18 ) - operator delete(v6); - (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); - lpuexcptc = v17; - v11 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); - *(_DWORD *)(a3 + 40) = lpuexcptc; - *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; - v7 = (char *)Block; - *(_DWORD *)(a3 + 36) = v11; - if ( v7 != v18 ) - operator delete(v7); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} - -//----- (004B0E20) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - int v13; // edx - int v14; // ecx - int v15; // eax - unsigned int v16; // [esp+Ch] [ebp-5Ch] - unsigned int v17; // [esp+Ch] [ebp-5Ch] - unsigned int v18; // [esp+Ch] [ebp-5Ch] - unsigned int v19; // [esp+Ch] [ebp-5Ch] - std::string *v20; // [esp+14h] [ebp-54h] - std::string *v21; // [esp+14h] [ebp-54h] - std::string *v22; // [esp+14h] [ebp-54h] - std::string *v23; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] - char v28[13]; // [esp+5Bh] [ebp-Dh] BYREF - - *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_DWORD *)(a3 + 36) = 0; - *(_BYTE *)(a3 + 67) = 1; - (*(void (__thiscall **)(char *, int *))(v3 + 16))(&v28[1], a2); - lpuexcpt = *(struct _Unwind_Exception **)(*(_DWORD *)&v28[1] - 12); - v20 = (std::string *)operator new[]((unsigned int)lpuexcpt + 1); - std::string::copy(&v28[1], v20, (size_t)lpuexcpt, 0, v16); - *((_BYTE *)lpuexcpt + (_DWORD)v20) = 0; - *(_DWORD *)(a3 + 12) = lpuexcpt; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v20; - v5 = *(_DWORD *)&v28[1]; - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v28[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(*(_DWORD *)&v28[1] - 4); - *(_DWORD *)(*(_DWORD *)&v28[1] - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)v28); -LABEL_3: - (*(void (__thiscall **)(char *, int *))(*a2 + 20))(&v28[1], a2); - lpuexcpta = *(struct _Unwind_Exception **)(*(_DWORD *)&v28[1] - 12); - v21 = (std::string *)operator new[]((unsigned int)lpuexcpta + 1); - std::string::copy(&v28[1], v21, (size_t)lpuexcpta, 0, v17); - *((_BYTE *)lpuexcpta + (_DWORD)v21) = 0; - *(_DWORD *)(a3 + 24) = lpuexcpta; - v7 = _CRT_MT; - *(_DWORD *)(a3 + 20) = v21; - v8 = *(_DWORD *)&v28[1]; - if ( v7 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v28[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_5; - } - else - { - v9 = *(_DWORD *)(*(_DWORD *)&v28[1] - 4); - *(_DWORD *)(*(_DWORD *)&v28[1] - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_5; - } - std::string::_Rep::_M_destroy((void *)(v8 - 12), (int)v28); -LABEL_5: - (*(void (__thiscall **)(char *, int *))(*a2 + 24))(&v28[1], a2); - lpuexcptb = *(struct _Unwind_Exception **)(*(_DWORD *)&v28[1] - 12); - v22 = (std::string *)operator new[]((unsigned int)lpuexcptb + 1); - std::string::copy(&v28[1], v22, (size_t)lpuexcptb, 0, v18); - *((_BYTE *)lpuexcptb + (_DWORD)v22) = 0; - *(_DWORD *)(a3 + 32) = lpuexcptb; - v10 = _CRT_MT; - *(_DWORD *)(a3 + 28) = v22; - v11 = *(_DWORD *)&v28[1]; - if ( v10 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v28[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_7; - } - else - { - v12 = *(_DWORD *)(*(_DWORD *)&v28[1] - 4); - *(_DWORD *)(*(_DWORD *)&v28[1] - 4) = v12 - 1; - if ( v12 > 0 ) - goto LABEL_7; - } - std::string::_Rep::_M_destroy((void *)(v11 - 12), (int)v28); -LABEL_7: - (*(void (__thiscall **)(char *, int *))(*a2 + 28))(&v28[1], a2); - lpuexcptc = *(struct _Unwind_Exception **)(*(_DWORD *)&v28[1] - 12); - v23 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); - std::string::copy(&v28[1], v23, (size_t)lpuexcptc, 0, v19); - *(_DWORD *)(a3 + 36) = v23; - *(_DWORD *)(a3 + 40) = lpuexcptc; - v13 = _CRT_MT; - *((_BYTE *)lpuexcptc + (_DWORD)v23) = 0; - v14 = *(_DWORD *)&v28[1]; - if ( v13 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v28[1] - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_9; -LABEL_13: - std::string::_Rep::_M_destroy((void *)(v14 - 12), (int)v28); - goto LABEL_9; - } - v15 = *(_DWORD *)(*(_DWORD *)&v28[1] - 4); - *(_DWORD *)(*(_DWORD *)&v28[1] - 4) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_13; -LABEL_9: - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} -// 4B0EF1: variable 'v16' is possibly undefined -// 4B0F7F: variable 'v17' is possibly undefined -// 4B100D: variable 'v18' is possibly undefined -// 4B109B: variable 'v19' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 4B0E20: using guessed type char var_D[13]; - -//----- (004B1200) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - char *v5; // eax - char *v6; // eax - char *v7; // eax - _BYTE *v8; // [esp+14h] [ebp-64h] - _BYTE *v9; // [esp+14h] [ebp-64h] - _BYTE *v10; // [esp+14h] [ebp-64h] - _BYTE *v11; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v17; // [esp+5Ch] [ebp-1Ch] - char v18[24]; // [esp+60h] [ebp-18h] BYREF - - *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 44) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 20) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 28) = 0; - *(_DWORD *)(a3 + 36) = 0; - *(_BYTE *)(a3 + 67) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcpt = v17; - v8 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v8, (size_t)lpuexcpt, 0); - *(_DWORD *)(a3 + 12) = lpuexcpt; - *((_BYTE *)lpuexcpt + (_DWORD)v8) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v8; - if ( v4 != v18 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpta = v17; - v9 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v9, (size_t)lpuexcpta, 0); - *(_DWORD *)(a3 + 24) = lpuexcpta; - *((_BYTE *)lpuexcpta + (_DWORD)v9) = 0; - v5 = (char *)Block; - *(_DWORD *)(a3 + 20) = v9; - if ( v5 != v18 ) - operator delete(v5); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcptb = v17; - v10 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v10, (size_t)lpuexcptb, 0); - *(_DWORD *)(a3 + 32) = lpuexcptb; - *((_BYTE *)lpuexcptb + (_DWORD)v10) = 0; - v6 = (char *)Block; - *(_DWORD *)(a3 + 28) = v10; - if ( v6 != v18 ) - operator delete(v6); - (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); - lpuexcptc = v17; - v11 = (_BYTE *)operator new[]((unsigned int)v17 + 1); - std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); - *(_DWORD *)(a3 + 40) = lpuexcptc; - *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; - v7 = (char *)Block; - *(_DWORD *)(a3 + 36) = v11; - if ( v7 != v18 ) - operator delete(v7); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} - -//----- (004B14F0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - int v13; // eax - int v14; // ecx - int v15; // eax - unsigned int v16; // [esp+Ch] [ebp-5Ch] - _WORD *v17; // [esp+10h] [ebp-58h] - _WORD *v18; // [esp+10h] [ebp-58h] - _WORD *v19; // [esp+10h] [ebp-58h] - std::string *v20; // [esp+14h] [ebp-54h] - int v21; // [esp+14h] [ebp-54h] - int v22; // [esp+14h] [ebp-54h] - int v23; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - int v28[3]; // [esp+5Bh] [ebp-Dh] BYREF - - *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 24) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 32) = 0; - *(_DWORD *)(a3 + 40) = 0; - *(_BYTE *)(a3 + 82) = 1; - (*(void (__thiscall **)(char *, int *))(v3 + 16))((char *)v28 + 1, a2); - lpuexcptc = *(struct _Unwind_Exception **)(*(int *)((char *)v28 + 1) - 12); - v20 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); - std::string::copy((int *)((char *)v28 + 1), v20, (size_t)lpuexcptc, 0, v16); - *((_BYTE *)lpuexcptc + (_DWORD)v20) = 0; - *(_DWORD *)(a3 + 12) = lpuexcptc; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v20; - v5 = *(int *)((char *)v28 + 1); - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(int *)((char *)v28 + 1) - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(*(int *)((char *)v28 + 1) - 4); - *(_DWORD *)(*(int *)((char *)v28 + 1) - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)v28); -LABEL_3: - (*(void (__thiscall **)(char *, int *))(*a2 + 20))((char *)v28 + 1, a2); - lpuexcpt = *(struct _Unwind_Exception **)(*(int *)((char *)v28 + 1) - 12); - v7 = (int)lpuexcpt + 1; - if ( (unsigned int)lpuexcpt + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v21 = v7; - v17 = (_WORD *)operator new[](2 * v7); - std::wstring::copy((int *)((char *)v28 + 1), v17, (unsigned int)lpuexcpt, 0); - v17[v21 - 1] = 0; - *(_DWORD *)(a3 + 24) = v17; - v8 = *(int *)((char *)v28 + 1); - *(_DWORD *)(a3 + 28) = lpuexcpt; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_6; - } - else - { - v9 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_6; - } - std::wstring::_Rep::_M_destroy((void *)(v8 - 12), (int)v28); -LABEL_6: - (*(void (__thiscall **)(char *, int *))(*a2 + 24))((char *)v28 + 1, a2); - lpuexcpta = *(struct _Unwind_Exception **)(*(int *)((char *)v28 + 1) - 12); - v10 = (int)lpuexcpta + 1; - if ( (unsigned int)lpuexcpta + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v22 = v10; - v18 = (_WORD *)operator new[](2 * v10); - std::wstring::copy((int *)((char *)v28 + 1), v18, (unsigned int)lpuexcpta, 0); - v18[v22 - 1] = 0; - *(_DWORD *)(a3 + 32) = v18; - v11 = *(int *)((char *)v28 + 1); - *(_DWORD *)(a3 + 36) = lpuexcpta; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_9; - } - else - { - v12 = *(_DWORD *)(v11 - 4); - *(_DWORD *)(v11 - 4) = v12 - 1; - if ( v12 > 0 ) - goto LABEL_9; - } - std::wstring::_Rep::_M_destroy((void *)(v11 - 12), (int)v28); -LABEL_9: - (*(void (__thiscall **)(char *, int *))(*a2 + 28))((char *)v28 + 1, a2); - lpuexcptb = *(struct _Unwind_Exception **)(*(int *)((char *)v28 + 1) - 12); - v13 = (int)lpuexcptb + 1; - if ( (unsigned int)lpuexcptb + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v23 = v13; - v19 = (_WORD *)operator new[](2 * v13); - std::wstring::copy((int *)((char *)v28 + 1), v19, (unsigned int)lpuexcptb, 0); - v19[v23 - 1] = 0; - *(_DWORD *)(a3 + 40) = v19; - v14 = *(int *)((char *)v28 + 1); - *(_DWORD *)(a3 + 44) = lpuexcptb; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v14 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_12; -LABEL_16: - std::wstring::_Rep::_M_destroy((void *)(v14 - 12), (int)v28); - goto LABEL_12; - } - v15 = *(_DWORD *)(v14 - 4); - *(_DWORD *)(v14 - 4) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_16; -LABEL_12: - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} -// 4B15C3: variable 'v16' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004B1950) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - _WORD *v8; // [esp+10h] [ebp-68h] - _WORD *v9; // [esp+10h] [ebp-68h] - _WORD *v10; // [esp+10h] [ebp-68h] - _BYTE *v11; // [esp+14h] [ebp-64h] - int v12; // [esp+14h] [ebp-64h] - int v13; // [esp+14h] [ebp-64h] - int v14; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v20; // [esp+5Ch] [ebp-1Ch] - char v21[24]; // [esp+60h] [ebp-18h] BYREF - - *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 24) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 32) = 0; - *(_DWORD *)(a3 + 40) = 0; - *(_BYTE *)(a3 + 82) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcptc = v20; - v11 = (_BYTE *)operator new[]((unsigned int)v20 + 1); - std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); - *(_DWORD *)(a3 + 12) = lpuexcptc; - *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v11; - if ( v4 != v21 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpt = v20; - v5 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v12 = v5; - v8 = (_WORD *)operator new[](2 * v5); - std::wstring::copy(&Block, v8, (unsigned int)lpuexcpt, 0); - v8[v12 - 1] = 0; - *(_DWORD *)(a3 + 24) = v8; - *(_DWORD *)(a3 + 28) = lpuexcpt; - if ( Block != v21 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcpta = v20; - v6 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v13 = v6; - v9 = (_WORD *)operator new[](2 * v6); - std::wstring::copy(&Block, v9, (unsigned int)lpuexcpta, 0); - v9[v13 - 1] = 0; - *(_DWORD *)(a3 + 32) = v9; - *(_DWORD *)(a3 + 36) = lpuexcpta; - if ( Block != v21 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); - lpuexcptb = v20; - v7 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v14 = v7; - v10 = (_WORD *)operator new[](2 * v7); - std::wstring::copy(&Block, v10, (unsigned int)lpuexcptb, 0); - v10[v14 - 1] = 0; - *(_DWORD *)(a3 + 40) = v10; - *(_DWORD *)(a3 + 44) = lpuexcptb; - if ( Block != v21 ) - operator delete(Block); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} - -//----- (004B1CB0) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - int v4; // eax - int v5; // ecx - int v6; // eax - int v7; // eax - int v8; // ecx - int v9; // eax - int v10; // eax - int v11; // ecx - int v12; // eax - int v13; // eax - int v14; // ecx - int v15; // eax - unsigned int v16; // [esp+Ch] [ebp-5Ch] - _WORD *v17; // [esp+10h] [ebp-58h] - _WORD *v18; // [esp+10h] [ebp-58h] - _WORD *v19; // [esp+10h] [ebp-58h] - std::string *v20; // [esp+14h] [ebp-54h] - int v21; // [esp+14h] [ebp-54h] - int v22; // [esp+14h] [ebp-54h] - int v23; // [esp+14h] [ebp-54h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-50h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-50h] - int v28[3]; // [esp+5Bh] [ebp-Dh] BYREF - - *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 24) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 32) = 0; - *(_DWORD *)(a3 + 40) = 0; - *(_BYTE *)(a3 + 82) = 1; - (*(void (__thiscall **)(char *, int *))(v3 + 16))((char *)v28 + 1, a2); - lpuexcptc = *(struct _Unwind_Exception **)(*(int *)((char *)v28 + 1) - 12); - v20 = (std::string *)operator new[]((unsigned int)lpuexcptc + 1); - std::string::copy((int *)((char *)v28 + 1), v20, (size_t)lpuexcptc, 0, v16); - *((_BYTE *)lpuexcptc + (_DWORD)v20) = 0; - *(_DWORD *)(a3 + 12) = lpuexcptc; - v4 = _CRT_MT; - *(_DWORD *)(a3 + 8) = v20; - v5 = *(int *)((char *)v28 + 1); - if ( v4 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(*(int *)((char *)v28 + 1) - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v6 = *(_DWORD *)(*(int *)((char *)v28 + 1) - 4); - *(_DWORD *)(*(int *)((char *)v28 + 1) - 4) = v6 - 1; - if ( v6 > 0 ) - goto LABEL_3; - } - std::string::_Rep::_M_destroy((void *)(v5 - 12), (int)v28); -LABEL_3: - (*(void (__thiscall **)(char *, int *))(*a2 + 20))((char *)v28 + 1, a2); - lpuexcpt = *(struct _Unwind_Exception **)(*(int *)((char *)v28 + 1) - 12); - v7 = (int)lpuexcpt + 1; - if ( (unsigned int)lpuexcpt + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v21 = v7; - v17 = (_WORD *)operator new[](2 * v7); - std::wstring::copy((int *)((char *)v28 + 1), v17, (unsigned int)lpuexcpt, 0); - v17[v21 - 1] = 0; - *(_DWORD *)(a3 + 24) = v17; - v8 = *(int *)((char *)v28 + 1); - *(_DWORD *)(a3 + 28) = lpuexcpt; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v8 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_6; - } - else - { - v9 = *(_DWORD *)(v8 - 4); - *(_DWORD *)(v8 - 4) = v9 - 1; - if ( v9 > 0 ) - goto LABEL_6; - } - std::wstring::_Rep::_M_destroy((void *)(v8 - 12), (int)v28); -LABEL_6: - (*(void (__thiscall **)(char *, int *))(*a2 + 24))((char *)v28 + 1, a2); - lpuexcpta = *(struct _Unwind_Exception **)(*(int *)((char *)v28 + 1) - 12); - v10 = (int)lpuexcpta + 1; - if ( (unsigned int)lpuexcpta + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v22 = v10; - v18 = (_WORD *)operator new[](2 * v10); - std::wstring::copy((int *)((char *)v28 + 1), v18, (unsigned int)lpuexcpta, 0); - v18[v22 - 1] = 0; - *(_DWORD *)(a3 + 32) = v18; - v11 = *(int *)((char *)v28 + 1); - *(_DWORD *)(a3 + 36) = lpuexcpta; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_9; - } - else - { - v12 = *(_DWORD *)(v11 - 4); - *(_DWORD *)(v11 - 4) = v12 - 1; - if ( v12 > 0 ) - goto LABEL_9; - } - std::wstring::_Rep::_M_destroy((void *)(v11 - 12), (int)v28); -LABEL_9: - (*(void (__thiscall **)(char *, int *))(*a2 + 28))((char *)v28 + 1, a2); - lpuexcptb = *(struct _Unwind_Exception **)(*(int *)((char *)v28 + 1) - 12); - v13 = (int)lpuexcptb + 1; - if ( (unsigned int)lpuexcptb + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v23 = v13; - v19 = (_WORD *)operator new[](2 * v13); - std::wstring::copy((int *)((char *)v28 + 1), v19, (unsigned int)lpuexcptb, 0); - v19[v23 - 1] = 0; - *(_DWORD *)(a3 + 40) = v19; - v14 = *(int *)((char *)v28 + 1); - *(_DWORD *)(a3 + 44) = lpuexcptb; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v14 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_12; -LABEL_16: - std::wstring::_Rep::_M_destroy((void *)(v14 - 12), (int)v28); - goto LABEL_12; - } - v15 = *(_DWORD *)(v14 - 4); - *(_DWORD *)(v14 - 4) = v15 - 1; - if ( v15 <= 0 ) - goto LABEL_16; -LABEL_12: - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} -// 4B1D83: variable 'v16' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004B2110) -------------------------------------------------------- -void __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) -{ - int v3; // eax - char *v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - _WORD *v8; // [esp+10h] [ebp-68h] - _WORD *v9; // [esp+10h] [ebp-68h] - _WORD *v10; // [esp+10h] [ebp-68h] - _BYTE *v11; // [esp+14h] [ebp-64h] - int v12; // [esp+14h] [ebp-64h] - int v13; // [esp+14h] [ebp-64h] - int v14; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcptc; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+18h] [ebp-60h] - void *Block; // [esp+58h] [ebp-20h] BYREF - struct _Unwind_Exception *v20; // [esp+5Ch] [ebp-1Ch] - char v21[24]; // [esp+60h] [ebp-18h] BYREF - - *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); - *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); - *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); - *(_DWORD *)(a3 + 8) = 0; - *(_DWORD *)(a3 + 24) = 0; - v3 = *a2; - *(_DWORD *)(a3 + 32) = 0; - *(_DWORD *)(a3 + 40) = 0; - *(_BYTE *)(a3 + 82) = 1; - (*(void (__thiscall **)(void **, int *))(v3 + 16))(&Block, a2); - lpuexcptc = v20; - v11 = (_BYTE *)operator new[]((unsigned int)v20 + 1); - std::string::copy(&Block, v11, (size_t)lpuexcptc, 0); - *(_DWORD *)(a3 + 12) = lpuexcptc; - *((_BYTE *)lpuexcptc + (_DWORD)v11) = 0; - v4 = (char *)Block; - *(_DWORD *)(a3 + 8) = v11; - if ( v4 != v21 ) - operator delete(v4); - (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&Block, a2); - lpuexcpt = v20; - v5 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v12 = v5; - v8 = (_WORD *)operator new[](2 * v5); - std::wstring::copy(&Block, v8, (unsigned int)lpuexcpt, 0); - v8[v12 - 1] = 0; - *(_DWORD *)(a3 + 24) = v8; - *(_DWORD *)(a3 + 28) = lpuexcpt; - if ( Block != v21 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&Block, a2); - lpuexcpta = v20; - v6 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v13 = v6; - v9 = (_WORD *)operator new[](2 * v6); - std::wstring::copy(&Block, v9, (unsigned int)lpuexcpta, 0); - v9[v13 - 1] = 0; - *(_DWORD *)(a3 + 32) = v9; - *(_DWORD *)(a3 + 36) = lpuexcpta; - if ( Block != v21 ) - operator delete(Block); - (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&Block, a2); - lpuexcptb = v20; - v7 = (int)v20 + 1; - if ( (unsigned int)v20 + 1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v14 = v7; - v10 = (_WORD *)operator new[](2 * v7); - std::wstring::copy(&Block, v10, (unsigned int)lpuexcptb, 0); - v10[v14 - 1] = 0; - *(_DWORD *)(a3 + 40) = v10; - *(_DWORD *)(a3 + 44) = lpuexcptb; - if ( Block != v21 ) - operator delete(Block); - *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); - *(_DWORD *)(a3 + 56) = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); -} - -//----- (004B2470) -------------------------------------------------------- -void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4) -{ - void (__cdecl ***v4)(_anonymous_namespace_::system_error_category *__hidden); // eax - char *v5; // eax - - if ( a3 ) - { - v4 = std::_V2::system_category(); - } - else - { - if ( !(_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec - && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) - { - __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); - atexit((_PVFV)__tcf_0_4); - } - a3 = 1; - v4 = &`anonymous namespace'::__io_category_instance(void)::__ec; - } - std::system_error::system_error(a1, a3, (int)v4, (char *)this); - *a1 = &off_51AA28; - v5 = (char *)std::runtime_error::what((int)a1); - std::__construct_ios_failure(a1 + 4, v5); -} -// 50CBD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); -// 51AA28: using guessed type void (__cdecl *off_51AA28)(std::__ios_failure *__hidden this); - -//----- (004B25A0) -------------------------------------------------------- -void __fastcall std::__ios_failure::~__ios_failure(void (__cdecl ***a1)(std::ios_base::failure *__hidden this)) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51AA28; - std::__destroy_ios_failure(a1 + 4); - *a1 = (void (__cdecl **)(std::ios_base::failure *__hidden))&off_51A788; - std::system_error::~system_error((std::exception *)lpfctx); - operator delete(a1); -} -// 4B25E4: variable 'lpfctx' is possibly undefined -// 51A788: using guessed type int (*off_51A788)(); -// 51AA28: using guessed type void (__cdecl *off_51AA28)(std::__ios_failure *__hidden this); - -//----- (004B2600) -------------------------------------------------------- -void __fastcall std::__ios_failure::~__ios_failure(void (__cdecl ***a1)(std::ios_base::failure *__hidden this)) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51AA28; - std::__destroy_ios_failure(a1 + 4); - *a1 = (void (__cdecl **)(std::ios_base::failure *__hidden))&off_51A788; - std::system_error::~system_error((std::exception *)lpfctx); -} -// 4B2644: variable 'lpfctx' is possibly undefined -// 51A788: using guessed type int (*off_51A788)(); -// 51AA28: using guessed type void (__cdecl *off_51AA28)(std::__ios_failure *__hidden this); - -//----- (004B2660) -------------------------------------------------------- -void __fastcall std::bad_exception::~bad_exception(void *Block) -{ - operator delete(Block); -} - -//----- (004B2690) -------------------------------------------------------- -unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int a2) -{ - unsigned int v2; // eax - int v3; // ebx - int v4; // edx - unsigned int result; // eax - - v2 = this[12]; - v3 = (v2 >> 3) & 1; - if ( (v2 & 0x10) != 0 ) - LOBYTE(v2) = 1; - v4 = this[16]; - result = v2 & 1; - this[1] = v4; - this[2] = v4; - if ( a2 > 0 && (_BYTE)v3 ) - { - this[3] = a2 + v4; -LABEL_6: - this[5] = 0; - this[4] = 0; - this[6] = 0; - return result; - } - this[3] = v4; - if ( a2 ) - goto LABEL_6; - if ( !(_BYTE)result ) - goto LABEL_6; - result = this[17]; - if ( result <= 1 ) - goto LABEL_6; - result = v4 + result - 1; - this[5] = v4; - this[4] = v4; - this[6] = result; - return result; -} - -//----- (004B2710) -------------------------------------------------------- -int __thiscall std::filebuf::_M_get_ext_pos(int this, int a2) -{ - if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 88) + 24))(*(_DWORD *)(this + 88)) ) - return *(_DWORD *)(this + 8) - *(_DWORD *)(this + 12); - else - return *(_DWORD *)(this + 92) - + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 88) + 28))( - *(_DWORD *)(this + 88), - a2, - *(_DWORD *)(this + 92), - *(_DWORD *)(this + 100), - *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) - - *(_DWORD *)(this + 104); -} - -//----- (004B2770) -------------------------------------------------------- -int __fastcall std::filebuf::_M_create_pback(int a1) -{ - int v1; // eax - int result; // eax - - if ( !*(_BYTE *)(a1 + 84) ) - { - v1 = *(_DWORD *)(a1 + 8); - *(_BYTE *)(a1 + 84) = 1; - *(_DWORD *)(a1 + 76) = v1; - *(_DWORD *)(a1 + 80) = *(_DWORD *)(a1 + 12); - *(_DWORD *)(a1 + 4) = a1 + 75; - *(_DWORD *)(a1 + 8) = a1 + 75; - result = a1 + 76; - *(_DWORD *)(a1 + 12) = a1 + 76; - } - return result; -} - -//----- (004B27A0) -------------------------------------------------------- -int __fastcall std::filebuf::_M_destroy_pback(int a1) -{ - bool v1; // zf - int v2; // ebx - int v3; // edx - int result; // eax - - if ( *(_BYTE *)(a1 + 84) ) - { - v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); - v2 = *(_DWORD *)(a1 + 64); - v3 = *(_DWORD *)(a1 + 80); - *(_BYTE *)(a1 + 84) = 0; - result = *(_DWORD *)(a1 + 76) + !v1; - *(_DWORD *)(a1 + 4) = v2; - *(_DWORD *)(a1 + 76) = result; - *(_DWORD *)(a1 + 8) = result; - *(_DWORD *)(a1 + 12) = v3; - } - return result; -} - -//----- (004B27E0) -------------------------------------------------------- -int __fastcall std::filebuf::_M_terminate_output(int a1) -{ - int v1; // esi - int v3; // eax - int v4; // ecx - int v5; // eax - int v6; // ebx - _DWORD **v7; // ebp - unsigned int v8; // eax - unsigned int v9; // esi - unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] - FILE **v12; // [esp+2Ch] [ebp-B4h] - int v13; // [esp+30h] [ebp-B0h] - int v14; // [esp+40h] [ebp-A0h] BYREF - char v15[128]; // [esp+44h] [ebp-9Ch] BYREF - char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF - - v1 = 1; - if ( *(_DWORD *)(a1 + 16) < *(_DWORD *)(a1 + 20) ) - { - v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, -1); - LOBYTE(v3) = v3 != -1; - v1 = v3; - } - if ( *(_BYTE *)(a1 + 74) ) - { - v4 = *(_DWORD *)(a1 + 88); - if ( !v4 ) - std::__throw_bad_cast(); - v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); - if ( !v11 ) - { - if ( (_BYTE)v1 ) - { - v12 = (FILE **)(a1 + 40); - v5 = a1; - v6 = a1 + 56; - v7 = (_DWORD **)v5; - while ( 1 ) - { - v8 = (*(int (__thiscall **)(_DWORD *, int, char *, char *, int *))(*v7[22] + 12))(v7[22], v6, v15, v16, &v14); - v9 = v8; - if ( v8 == 2 ) - break; - if ( v8 <= 1 && v14 - (int)v15 > 0 ) - { - v13 = v14 - (_DWORD)v15; - if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) - return v11; - if ( v9 == 1 ) - continue; - } - return ((int (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, -1) != -1; - } - return v11; - } - } - } - return v1; -} -// 4B27E0: using guessed type char var_1C[28]; - -//----- (004B28F0) -------------------------------------------------------- -bool __thiscall std::filebuf::_M_convert_to_external(int this, char *a2, unsigned int a3) -{ - int v4; // ecx - unsigned int v5; // esi - int v6; // eax - void *v7; // esp - void *v8; // esp - unsigned int v9; // eax - unsigned int v10; // eax - int v12; // esi - char v13; // [esp+20h] [ebp-38h] - int v14; // [esp+38h] [ebp-20h] BYREF - int v15; // [esp+3Ch] [ebp-1Ch] BYREF - char v16[24]; // [esp+40h] [ebp-18h] BYREF - - v4 = *(_DWORD *)(this + 88); - v5 = a3; - if ( !v4 ) - std::__throw_bad_cast(); - if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) - goto LABEL_5; - v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(**(_DWORD **)(this + 88) + 32))(*(_DWORD *)(this + 88)) + 27) >> 4); - v7 = alloca(v6); - v8 = alloca(v6); - v9 = (*(int (__thiscall **)(_DWORD, int, char *, char *))(**(_DWORD **)(this + 88) + 8))( - *(_DWORD *)(this + 88), - this + 56, - a2, - &a2[a3]); - if ( v9 > 1 ) - { - if ( v9 == 3 ) - { -LABEL_5: - v10 = std::__basic_file::xsputn((FILE **)(this + 40), a2, a3); - return v10 == v5; - } -LABEL_11: - std::__throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error"); - } - v13 = v9; - v5 = v14 - (_DWORD)v16; - v10 = std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16); - if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) - return v10 == v5; - if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(**(_DWORD **)(this + 88) + 8))( - *(_DWORD *)(this + 88), - &v15, - v15, - *(_DWORD *)(this + 20), - &v15, - v16, - v14, - &v14) == 2 ) - goto LABEL_11; - v12 = v14 - (_DWORD)v16; - return std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16) == v12; -} - -//----- (004B2A60) -------------------------------------------------------- -void __fastcall std::filebuf::_M_destroy_internal_buffer(int a1) -{ - if ( *(_BYTE *)(a1 + 72) ) - { - if ( *(_DWORD *)(a1 + 64) ) - operator delete[](*(void **)(a1 + 64)); - *(_DWORD *)(a1 + 64) = 0; - *(_BYTE *)(a1 + 72) = 0; - } - if ( *(_DWORD *)(a1 + 92) ) - operator delete[](*(void **)(a1 + 92)); - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; -} - -//----- (004B2AC0) -------------------------------------------------------- -void __fastcall std::filebuf::_M_allocate_internal_buffer(int a1) -{ - if ( !*(_BYTE *)(a1 + 72) && !*(_DWORD *)(a1 + 64) ) - { - *(_DWORD *)(a1 + 64) = operator new[](*(_DWORD *)(a1 + 68)); - *(_BYTE *)(a1 + 72) = 1; - } -} - -//----- (004B2B00) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3) -{ - _BYTE *v3; // esi - int v5; // eax - int v6; // eax - _DWORD v8[7]; // [esp+20h] [ebp-1Ch] BYREF - - v3 = this + 10; - if ( !std::__basic_file::is_open(this + 10) ) - { - std::__basic_file::open(v3, a2, a3, 436); - if ( std::__basic_file::is_open(v3) ) - { - v5 = this[16]; - if ( !*((_BYTE *)this + 72) && !v5 ) - { - v5 = operator new[](this[17]); - *((_BYTE *)this + 72) = 1; - this[16] = v5; - } - this[1] = v5; - this[2] = v5; - this[3] = v5; - v6 = this[13]; - this[12] = a3; - *(_WORD *)((char *)this + 73) = 0; - this[5] = 0; - this[4] = 0; - this[6] = 0; - this[14] = v6; - this[15] = v6; - if ( (a3 & 2) == 0 ) - return this; - (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v8, this, 0, 0, 2, a3); - if ( (v8[0] & v8[1]) != -1 ) - return this; - std::filebuf::close((struct _Unwind_Exception *)this); - } - } - return 0; -} - -//----- (004B2C10) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::open(_DWORD *this, wchar_t *a2, int a3) -{ - _BYTE *v3; // esi - int v5; // eax - int v6; // eax - _DWORD v8[7]; // [esp+20h] [ebp-1Ch] BYREF - - v3 = this + 10; - if ( !std::__basic_file::is_open(this + 10) ) - { - std::__basic_file::open(v3, a2, a3); - if ( std::__basic_file::is_open(v3) ) - { - v5 = this[16]; - if ( !*((_BYTE *)this + 72) && !v5 ) - { - v5 = operator new[](this[17]); - *((_BYTE *)this + 72) = 1; - this[16] = v5; - } - this[1] = v5; - this[2] = v5; - this[3] = v5; - v6 = this[13]; - this[12] = a3; - *(_WORD *)((char *)this + 73) = 0; - this[5] = 0; - this[4] = 0; - this[6] = 0; - this[14] = v6; - this[15] = v6; - if ( (a3 & 2) == 0 ) - return this; - (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v8, this, 0, 0, 2, a3); - if ( (v8[0] & v8[1]) != -1 ) - return this; - std::filebuf::close((struct _Unwind_Exception *)this); - } - } - return 0; -} - -//----- (004B2D10) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::open(_DWORD *this, char *a2, int a3) -{ - return std::filebuf::open(this, *(char **)a2, a3); -} - -//----- (004B2D20) -------------------------------------------------------- -int __thiscall std::filebuf::swap(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - char v15; // dl - int v16; // edx - int v17; // eax - int v18; // edx - int v19; // eax - int v20; // edx - int v21; // eax - int v22; // edx - int v23; // eax - int v24; // edx - int v25; // eax - int v26; // edx - int v27; // eax - int v28; // edx - int v29; // eax - int v30; // edx - int v31; // eax - int v32; // edx - int v33; // eax - int v34; // edx - int v35; // eax - int v36; // edx - int v37; // eax - int v38; // eax - int result; // eax - const std::locale *v40; // [esp+4h] [ebp-48h] - volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] - _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - v41 = (volatile signed __int32 **)(this + 28); - std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); - std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); - std::locale::~locale(v42); - v14 = *(_DWORD *)(this + 40); - *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); - v15 = *(_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 40) = v14; - LOBYTE(v14) = *(_BYTE *)(this + 44); - *(_BYTE *)(this + 44) = v15; - v16 = *(_DWORD *)(a2 + 48); - *(_BYTE *)(a2 + 44) = v14; - v17 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 48) = v16; - v18 = *(_DWORD *)(a2 + 52); - *(_DWORD *)(a2 + 48) = v17; - v19 = *(_DWORD *)(this + 52); - *(_DWORD *)(this + 52) = v18; - v20 = *(_DWORD *)(a2 + 56); - *(_DWORD *)(a2 + 52) = v19; - v21 = *(_DWORD *)(this + 56); - *(_DWORD *)(this + 56) = v20; - v22 = *(_DWORD *)(a2 + 60); - *(_DWORD *)(a2 + 56) = v21; - v23 = *(_DWORD *)(this + 60); - *(_DWORD *)(this + 60) = v22; - v24 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 60) = v23; - v25 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 64) = v24; - v26 = *(_DWORD *)(a2 + 68); - *(_DWORD *)(a2 + 64) = v25; - v27 = *(_DWORD *)(this + 68); - *(_DWORD *)(this + 68) = v26; - *(_DWORD *)(a2 + 68) = v27; - LOBYTE(v27) = *(_BYTE *)(this + 72); - *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); - v28 = *(_DWORD *)(a2 + 92); - *(_BYTE *)(a2 + 72) = v27; - v29 = *(_DWORD *)(this + 92); - *(_DWORD *)(this + 92) = v28; - v30 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 92) = v29; - v31 = *(_DWORD *)(this + 96); - *(_DWORD *)(this + 96) = v30; - v32 = *(_DWORD *)(a2 + 100); - *(_DWORD *)(a2 + 96) = v31; - v33 = *(_DWORD *)(this + 100); - *(_DWORD *)(this + 100) = v32; - v34 = *(_DWORD *)(a2 + 104); - *(_DWORD *)(a2 + 100) = v33; - v35 = *(_DWORD *)(this + 104); - *(_DWORD *)(this + 104) = v34; - LOBYTE(v34) = *(_BYTE *)(a2 + 73); - *(_DWORD *)(a2 + 104) = v35; - LOBYTE(v35) = *(_BYTE *)(this + 73); - *(_BYTE *)(this + 73) = v34; - LOBYTE(v34) = *(_BYTE *)(a2 + 74); - *(_BYTE *)(a2 + 73) = v35; - LOBYTE(v35) = *(_BYTE *)(this + 74); - *(_BYTE *)(this + 74) = v34; - v36 = *(_DWORD *)(a2 + 76); - *(_BYTE *)(a2 + 74) = v35; - v37 = *(_DWORD *)(this + 76); - *(_DWORD *)(this + 76) = v36; - *(_DWORD *)(a2 + 76) = v37; - v38 = *(_DWORD *)(this + 80); - *(_DWORD *)(this + 80) = *(_DWORD *)(a2 + 80); - LOBYTE(v36) = *(_BYTE *)(a2 + 84); - *(_DWORD *)(a2 + 80) = v38; - result = *(unsigned __int8 *)(this + 84); - *(_BYTE *)(this + 84) = v36; - *(_BYTE *)(a2 + 84) = result; - return result; -} -// 4B2D88: variable 'v40' is possibly undefined - -//----- (004B2EB0) -------------------------------------------------------- -int __fastcall std::filebuf::sync(_DWORD *a1) -{ - if ( a1[4] >= a1[5] ) - return 0; - else - return -((*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, -1) == -1); -} - -//----- (004B2EF0) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::filebuf::close(struct _Unwind_Exception *a1) -{ - bool v1; // zf - void *v2; // eax - int v3; // edx - int v4; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+1Ch] [ebp-60h] - char *v7; // [esp+24h] [ebp-58h] - char v8; // [esp+2Bh] [ebp-51h] - - lpuexcpt = a1; - v7 = (char *)a1 + 40; - if ( !std::__basic_file::is_open((_DWORD *)a1 + 10) ) - return 0; - v8 = std::filebuf::_M_terminate_output((int)lpuexcpt) ^ 1; - v1 = *((_BYTE *)lpuexcpt + 72) == 0; - *((_DWORD *)lpuexcpt + 12) = 0; - *((_BYTE *)lpuexcpt + 84) = 0; - if ( !v1 ) - { - v2 = (void *)*((_DWORD *)lpuexcpt + 16); - if ( v2 ) - operator delete[](v2); - *((_DWORD *)lpuexcpt + 16) = 0; - *((_BYTE *)lpuexcpt + 72) = 0; - } - if ( *((_DWORD *)lpuexcpt + 23) ) - operator delete[](*((void **)lpuexcpt + 23)); - *((_DWORD *)lpuexcpt + 23) = 0; - *((_DWORD *)lpuexcpt + 24) = 0; - *((_DWORD *)lpuexcpt + 25) = 0; - *((_DWORD *)lpuexcpt + 26) = 0; - *(_WORD *)((char *)lpuexcpt + 73) = 0; - v3 = *((_DWORD *)lpuexcpt + 16); - *((_DWORD *)lpuexcpt + 5) = 0; - *((_DWORD *)lpuexcpt + 1) = v3; - *((_DWORD *)lpuexcpt + 2) = v3; - *((_DWORD *)lpuexcpt + 3) = v3; - v4 = *((_DWORD *)lpuexcpt + 13); - *((_DWORD *)lpuexcpt + 4) = 0; - *((_DWORD *)lpuexcpt + 6) = 0; - *((_DWORD *)lpuexcpt + 14) = v4; - *((_DWORD *)lpuexcpt + 15) = v4; - if ( !std::__basic_file::close((int)v7) || v8 ) - return 0; - return lpuexcpt; -} - -//----- (004B30A0) -------------------------------------------------------- -char __thiscall std::filebuf::imbue(char *this, int a2) -{ - void *v3; // esi - int v4; // eax - int v5; // ecx - int v6; // ecx - int v7; // edi - const void *Src; // eax - int v9; // edi - size_t Size; // edi - int v11; // eax - int v12; // eax - int v14; // [esp+30h] [ebp-1Ch] BYREF - int v15; // [esp+34h] [ebp-18h] - - if ( (unsigned __int8)std::has_facet>(a2) ) - v3 = std::use_facet>(a2); - else - v3 = 0; - LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)this + 10); - if ( !(_BYTE)v4 ) - goto LABEL_13; - if ( !this[73] && !this[74] ) - { - *((_DWORD *)this + 22) = v3; - return v4; - } - v5 = *((_DWORD *)this + 22); - if ( !v5 ) - goto LABEL_24; - v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); - if ( v4 == -1 ) - goto LABEL_18; - if ( !this[73] ) - { - if ( !this[74] ) - goto LABEL_13; - LOBYTE(v4) = std::filebuf::_M_terminate_output((int)this); - if ( (_BYTE)v4 ) - { - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 6) = 0; - goto LABEL_13; - } -LABEL_18: - *((_DWORD *)this + 22) = 0; - return v4; - } - v6 = *((_DWORD *)this + 22); - if ( !v6 ) -LABEL_24: - std::__throw_bad_cast(); - LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); - if ( !(_BYTE)v4 ) - { - v7 = *((_DWORD *)this + 23); - Src = (const void *)(v7 - + (*(int (__thiscall **)(_DWORD, char *, int, _DWORD, int))(**((_DWORD **)this + 22) + 28))( - *((_DWORD *)this + 22), - this + 60, - v7, - *((_DWORD *)this + 25), - *((_DWORD *)this + 2) - *((_DWORD *)this + 1))); - v9 = *((_DWORD *)this + 26); - *((_DWORD *)this + 25) = Src; - Size = v9 - (_DWORD)Src; - if ( Size ) - memmove(*((void **)this + 23), Src, Size); - v11 = *((_DWORD *)this + 23); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 25) = v11; - *((_DWORD *)this + 26) = Size + v11; - v12 = *((_DWORD *)this + 16); - *((_DWORD *)this + 6) = 0; - *((_DWORD *)this + 1) = v12; - *((_DWORD *)this + 2) = v12; - *((_DWORD *)this + 3) = v12; - v4 = *((_DWORD *)this + 13); - *((_DWORD *)this + 14) = v4; - *((_DWORD *)this + 15) = v4; - goto LABEL_13; - } - if ( !v3 ) - goto LABEL_18; - LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); - if ( !(_BYTE)v4 ) - { - (*(void (__thiscall **)(int *, char *, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( - &v14, - this, - 0, - 0, - 1, - *((_DWORD *)this + 12)); - LOBYTE(v4) = v14 & v15; - if ( (v14 & v15) == -1 ) - goto LABEL_18; - } -LABEL_13: - *((_DWORD *)this + 22) = v3; - return v4; -} - -//----- (004B3280) -------------------------------------------------------- -int __thiscall std::filebuf::setbuf(int this, __int64 a2) -{ - if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) - return this; - if ( !a2 ) - { - *(_DWORD *)(this + 68) = 1; - return this; - } - if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) - return this; - *(_QWORD *)(this + 64) = a2; - return this; -} - -//----- (004B32E0) -------------------------------------------------------- -int __thiscall std::filebuf::xsgetn(_DWORD *this, char *a2, signed int a3) -{ - char *v4; // edi - signed int v5; // esi - int v6; // eax - int v7; // ebp - char *v8; // ecx - bool v9; // zf - int v10; // edx - int v11; // ecx - int v12; // eax - int v13; // eax - int v14; // ecx - char v15; // al - int v17; // eax - const void *Src; // eax - size_t Size; // edx - int i; // eax - int v21; // eax - int *v22; // eax - int v23; // [esp+1Ch] [ebp-20h] - int v24; // [esp+1Ch] [ebp-20h] - - v4 = a2; - v5 = a3; - if ( *((_BYTE *)this + 84) ) - { - v6 = this[2]; - v7 = 0; - v8 = (char *)this[1]; - if ( a3 <= 0 || v8 != (char *)v6 ) - goto LABEL_4; - v5 = a3 - 1; - *a2 = *v8; - v6 = this[2] + 1; - v9 = *((_BYTE *)this + 84) == 0; - this[2] = v6; - if ( !v9 ) - { - v8 = (char *)this[1]; - v4 = a2 + 1; - v7 = 1; -LABEL_4: - v9 = v8 == (char *)v6; - v10 = this[16]; - v11 = this[20]; - *((_BYTE *)this + 84) = 0; - v12 = this[19] + !v9; - this[1] = v10; - this[19] = v12; - this[2] = v12; - this[3] = v11; - goto LABEL_5; - } - v4 = a2 + 1; - v7 = 1; - } - else if ( *((_BYTE *)this + 74) ) - { - if ( (*(int (__thiscall **)(_DWORD *, int))(*this + 52))(this, -1) == -1 ) - return 0; - v17 = this[16]; - this[5] = 0; - v7 = 0; - this[4] = 0; - this[1] = v17; - this[2] = v17; - this[3] = v17; - this[6] = 0; - *((_BYTE *)this + 74) = 0; - } - else - { - v7 = 0; - } -LABEL_5: - v13 = 2; - if ( this[17] >= 2u ) - v13 = this[17]; - if ( v5 <= v13 - 1 ) - goto LABEL_11; - v14 = this[22]; - if ( !v14 ) - std::__throw_bad_cast(); - v23 = this[12]; - v15 = (*(int (__fastcall **)(int))(*(_DWORD *)v14 + 24))(v14); - if ( (v23 & 8) != 0 && v15 ) - { - Src = (const void *)this[2]; - Size = this[3] - (_DWORD)Src; - if ( Size ) - { - v24 = this[3] - (_DWORD)Src; - memcpy(v4, Src, Size); - this[2] += v24; - v4 += v24; - v7 += v24; - v5 -= v24; - } - for ( i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5); - ; - i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5) ) - { - if ( i == -1 ) - { - v22 = __errno(); - std::__throw_ios_failure( - (std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", - (std::runtime_error *)*v22); - } - if ( !i ) - break; - v7 += i; - v5 -= i; - if ( !v5 ) - goto LABEL_28; - v4 += i; - } - if ( !v5 ) - { -LABEL_28: - *((_BYTE *)this + 73) = 1; - return v7; - } - v21 = this[16]; - this[5] = 0; - this[4] = 0; - this[1] = v21; - this[2] = v21; - this[3] = v21; - this[6] = 0; - *((_BYTE *)this + 73) = 0; - } - else - { -LABEL_11: - v7 += std::streambuf::xsgetn(this, v4, v5); - } - return v7; -} - -//----- (004B3500) -------------------------------------------------------- -int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, signed int a3) -{ - int v4; // eax - int v5; // ecx - char v6; // si - int v7; // edx - int v8; // eax - unsigned int v9; // ecx - signed int v10; // esi - int v11; // eax - int v12; // edx - bool v13; // cc - int result; // eax - int v15; // edx - int v16; // ecx - unsigned int v17; // ecx - - v4 = *(_DWORD *)(this + 48); - v5 = *(_DWORD *)(this + 88); - if ( (v4 & 0x10) != 0 ) - LOBYTE(v4) = 1; - v6 = v4 & 1; - if ( !v5 ) - std::__throw_bad_cast(); - if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) - return std::streambuf::xsputn((_DWORD *)this, a2, a3); - v7 = *(_DWORD *)(this + 20); - v8 = *(_DWORD *)(this + 24) - v7; - if ( !*(_BYTE *)(this + 74) ) - { - v9 = *(_DWORD *)(this + 68); - if ( v9 > 1 ) - v8 = v9 - 1; - } - if ( v8 >= 1024 ) - v8 = 1024; - if ( a3 < v8 ) - return std::streambuf::xsputn((_DWORD *)this, a2, a3); - v10 = v7 - *(_DWORD *)(this + 16); - v11 = std::__basic_file::xsputn_2((FILE **)(this + 40), *(char **)(this + 16), v10, (char *)a2, a3); - if ( v10 + a3 == v11 ) - { - v15 = *(_DWORD *)(this + 64); - v16 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v15; - *(_DWORD *)(this + 8) = v15; - *(_DWORD *)(this + 12) = v15; - if ( ((v16 & 0x10) != 0 || (v16 & 1) != 0) && (v17 = *(_DWORD *)(this + 68), v17 > 1) ) - { - *(_DWORD *)(this + 20) = v15; - *(_DWORD *)(this + 16) = v15; - *(_DWORD *)(this + 24) = v15 + v17 - 1; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - *(_BYTE *)(this + 74) = 1; - } - v12 = v11 - v10; - v13 = v10 < v11; - result = 0; - if ( v13 ) - return v12; - return result; -} - -//----- (004B3630) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) -{ - _DWORD *result; // eax - __int64 v7; // rax - int v8; // ecx - int v9; // ecx - - *this = -1; - this[1] = -1; - this[2] = 0; - if ( !(unsigned __int8)std::filebuf::_M_terminate_output(a2) ) - return this; - v7 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, a4); - if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) - return this; - *this = v7; - result = this; - *(_WORD *)(a2 + 73) = 0; - v8 = *(_DWORD *)(a2 + 92); - *(_DWORD *)(a2 + 20) = 0; - *(_DWORD *)(a2 + 104) = v8; - *(_DWORD *)(a2 + 100) = v8; - v9 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 4) = v9; - *(_DWORD *)(a2 + 8) = v9; - *(_DWORD *)(a2 + 12) = v9; - *(_DWORD *)(a2 + 24) = 0; - *(_DWORD *)(a2 + 56) = a5; - this[2] = a5; - this[1] = HIDWORD(v7); - return result; -} - -//----- (004B36E0) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) -{ - int v6; // ecx - int v7; // eax - int v8; // edx - bool v9; // al - bool v11; // zf - __int64 v12; // rax - __int64 v13; // rax - int v14; // edx - int v15; // ecx - int v16; // eax - unsigned int v17; // esi - unsigned int v18; // edi - __int64 v19; // kr00_8 - __int64 ext_pos; // [esp+28h] [ebp-54h] - bool v21; // [esp+34h] [ebp-48h] - int v22; // [esp+34h] [ebp-48h] - int v23; // [esp+3Ch] [ebp-40h] - int v24; // [esp+4Ch] [ebp-30h] BYREF - int v25[11]; // [esp+50h] [ebp-2Ch] BYREF - - v6 = *(_DWORD *)(a2 + 88); - if ( v6 ) - { - v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); - v8 = 0; - if ( v7 >= 0 ) - v8 = v7; - v9 = v7 <= 0; - v23 = v8; - } - else - { - v23 = 0; - v9 = 1; - } - *this = -1; - this[1] = -1; - this[2] = 0; - v21 = v9 && a3 != 0; - if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v21 ) - return this; - if ( a4 != 1 - || a3 - || *(_BYTE *)(a2 + 74) - && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 88) + 24))(*(_DWORD *)(a2 + 88)) ) - { - if ( *(_BYTE *)(a2 + 84) ) - { - v11 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); - *(_BYTE *)(a2 + 84) = 0; - v14 = *(_DWORD *)(a2 + 80); - v15 = *(_DWORD *)(a2 + 64); - v16 = *(_DWORD *)(a2 + 76) + !v11; - *(_DWORD *)(a2 + 76) = v16; - *(_DWORD *)(a2 + 4) = v15; - *(_DWORD *)(a2 + 8) = v16; - *(_DWORD *)(a2 + 12) = v14; - } - v22 = *(_DWORD *)(a2 + 52); - v24 = v22; - v17 = a3 * v23; - v18 = (unsigned __int64)(a3 * v23) >> 32; - if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) - { - v24 = *(_DWORD *)(a2 + 60); - v19 = std::filebuf::_M_get_ext_pos(a2, (int)&v24) + __PAIR64__(v18, v17); - std::filebuf::_M_seek(v25, a2, v19, 1, v24); - } - else - { - std::filebuf::_M_seek(v25, a2, __SPAIR64__(v18, v17), a4, v22); - } - *this = v25[0]; - this[1] = v25[1]; - this[2] = v25[2]; - return this; - } - v11 = *(_BYTE *)(a2 + 73) == 0; - ext_pos = 0LL; - v24 = *(_DWORD *)(a2 + 52); - if ( !v11 ) - { - v24 = *(_DWORD *)(a2 + 60); - ext_pos = std::filebuf::_M_get_ext_pos(a2, (int)&v24); - } - if ( *(_BYTE *)(a2 + 74) ) - ext_pos = *(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16); - v12 = std::__basic_file::seekoff((FILE **)(a2 + 40), 0LL, 1); - if ( ((unsigned int)v12 & HIDWORD(v12)) == -1 ) - return this; - v13 = ext_pos + v12; - *this = v13; - LODWORD(v13) = v24; - this[1] = HIDWORD(v13); - this[2] = v13; - return this; -} - -//----- (004B3940) -------------------------------------------------------- -_DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) -{ - bool v7; // zf - int v8; // edx - int v9; // ecx - int v10; // eax - int v11; // ebp - __int64 v12; // rax - int v14; // ecx - int v15; // ecx - - *this = -1; - this[1] = -1; - this[2] = 0; - if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) - { - if ( *(_BYTE *)(a2 + 84) ) - { - v7 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); - *(_BYTE *)(a2 + 84) = 0; - v8 = *(_DWORD *)(a2 + 80); - v9 = *(_DWORD *)(a2 + 64); - v10 = *(_DWORD *)(a2 + 76) + !v7; - *(_DWORD *)(a2 + 76) = v10; - *(_DWORD *)(a2 + 4) = v9; - *(_DWORD *)(a2 + 8) = v10; - *(_DWORD *)(a2 + 12) = v8; - } - v11 = a4; - if ( (unsigned __int8)std::filebuf::_M_terminate_output(a2) ) - { - v12 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, 0); - if ( ((unsigned int)v12 & HIDWORD(v12)) == -1 ) - { - v11 = 0; - } - else - { - *(_DWORD *)(a2 + 20) = 0; - *(_WORD *)(a2 + 73) = 0; - v14 = *(_DWORD *)(a2 + 92); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 104) = v14; - *(_DWORD *)(a2 + 100) = v14; - v15 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 24) = 0; - *(_DWORD *)(a2 + 4) = v15; - *(_DWORD *)(a2 + 8) = v15; - *(_DWORD *)(a2 + 12) = v15; - *(_DWORD *)(a2 + 56) = a4; - } - } - else - { - v11 = 0; - v12 = -1LL; - } - *(_QWORD *)this = v12; - this[2] = v11; - } - return this; -} - -//----- (004B3A70) -------------------------------------------------------- -int __thiscall std::filebuf::overflow(int this, int a2) -{ - int v3; // edx - int v4; // eax - int v5; // ecx - int ext_pos; // eax - int v7; // ebp - int v8; // edi - int result; // eax - char *v10; // edx - char *v11; // eax - int v12; // eax - int v13; // edx - __int64 v14; // rax - int v15; // eax - int v16; // eax - unsigned int v17; // eax - unsigned int v18; // edx - int v19; // edx - int v20; // ecx - char v21[29]; // [esp+1Fh] [ebp-1Dh] BYREF - - if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) - return -1; - if ( *(_BYTE *)(this + 73) ) - { - if ( *(_BYTE *)(this + 84) ) - { - v3 = *(_DWORD *)(this + 80); - v4 = *(_DWORD *)(this + 76) + (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); - *(_DWORD *)(this + 76) = v4; - v5 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 8) = v4; - *(_DWORD *)(this + 4) = v5; - *(_DWORD *)(this + 12) = v3; - *(_BYTE *)(this + 84) = 0; - } - ext_pos = std::filebuf::_M_get_ext_pos(this, this + 60); - v7 = *(_DWORD *)(this + 60); - v8 = ext_pos; - if ( (unsigned __int8)std::filebuf::_M_terminate_output(this) ) - { - v14 = std::__basic_file::seekoff((FILE **)(this + 40), v8, 1); - if ( ((unsigned int)v14 & HIDWORD(v14)) != -1 ) - { - *(_DWORD *)(this + 20) = 0; - *(_WORD *)(this + 73) = 0; - v15 = *(_DWORD *)(this + 92); - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 104) = v15; - *(_DWORD *)(this + 100) = v15; - v16 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 24) = 0; - *(_DWORD *)(this + 4) = v16; - *(_DWORD *)(this + 8) = v16; - *(_DWORD *)(this + 12) = v16; - *(_DWORD *)(this + 56) = v7; - goto LABEL_19; - } - } - return -1; - } - v10 = *(char **)(this + 16); - v11 = *(char **)(this + 20); - if ( v10 >= v11 ) - { -LABEL_19: - v17 = *(_DWORD *)(this + 68); - if ( v17 <= 1 ) - { - v21[0] = a2; - if ( a2 == -1 ) - { - *(_BYTE *)(this + 74) = 1; - return 0; - } - if ( std::filebuf::_M_convert_to_external(this, v21, 1u) ) - { - *(_BYTE *)(this + 74) = 1; - return a2; - } - return -1; - } - v19 = *(_DWORD *)(this + 64); - v20 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v19; - *(_DWORD *)(this + 8) = v19; - *(_DWORD *)(this + 12) = v19; - if ( (v20 & 0x10) != 0 || (v20 & 1) != 0 ) - { - *(_DWORD *)(this + 20) = v19; - *(_DWORD *)(this + 16) = v19; - *(_DWORD *)(this + 24) = v19 + v17 - 1; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - *(_BYTE *)(this + 74) = 1; - if ( a2 != -1 ) - { - **(_BYTE **)(this + 20) = a2; - result = a2; - ++*(_DWORD *)(this + 20); - return result; - } - return 0; - } - if ( a2 != -1 ) - { - *v11 = a2; - v10 = *(char **)(this + 16); - v11 = (char *)(*(_DWORD *)(this + 20) + 1); - *(_DWORD *)(this + 20) = v11; - } - if ( !std::filebuf::_M_convert_to_external(this, v10, v11 - v10) ) - return -1; - v12 = *(_DWORD *)(this + 64); - v13 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v12; - *(_DWORD *)(this + 8) = v12; - *(_DWORD *)(this + 12) = v12; - if ( ((v13 & 0x10) != 0 || (v13 & 1) != 0) && (v18 = *(_DWORD *)(this + 68), v18 > 1) ) - { - *(_DWORD *)(this + 20) = v12; - *(_DWORD *)(this + 16) = v12; - *(_DWORD *)(this + 24) = v12 + v18 - 1; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - result = a2; - if ( a2 == -1 ) - return 0; - return result; -} -// 4B3A70: using guessed type char var_1D[29]; - -//----- (004B3CD0) -------------------------------------------------------- -int __thiscall std::filebuf::pbackfail(char *this, int a2) -{ - char v3; // di - unsigned int v4; // eax - int v5; // edx - int result; // eax - char *v7; // eax - int v8; // eax - int v9; // eax - int v10[7]; // [esp+24h] [ebp-1Ch] BYREF - - if ( (this[48] & 8) == 0 ) - return -1; - if ( this[74] ) - { - if ( (*(int (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, -1) == -1 ) - return -1; - v9 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - v3 = this[84]; - *((_DWORD *)this + 1) = v9; - *((_DWORD *)this + 2) = v9; - *((_DWORD *)this + 3) = v9; - *((_DWORD *)this + 6) = 0; - this[74] = 0; - } - else - { - v3 = this[84]; - v4 = *((_DWORD *)this + 2); - if ( v4 > *((_DWORD *)this + 1) ) - { - *((_DWORD *)this + 2) = v4 - 1; - v5 = *(unsigned __int8 *)(v4 - 1); - goto LABEL_5; - } - } - (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); - if ( (v10[0] & v10[1]) == -1 ) - return -1; - v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); - if ( v5 == -1 ) - return -1; -LABEL_5: - result = 0; - if ( a2 == -1 ) - return result; - result = v5; - if ( v5 == a2 ) - return result; - if ( v3 ) - return -1; - v7 = (char *)*((_DWORD *)this + 2); - if ( !this[84] ) - { - *((_DWORD *)this + 19) = v7; - v8 = *((_DWORD *)this + 3); - *((_DWORD *)this + 3) = this + 76; - *((_DWORD *)this + 20) = v8; - v7 = this + 75; - *((_DWORD *)this + 1) = this + 75; - *((_DWORD *)this + 2) = this + 75; - this[84] = 1; - } - this[73] = 1; - *v7 = a2; - return a2; -} - -//----- (004B3E00) -------------------------------------------------------- -int __fastcall std::filebuf::showmanyc(_DWORD *a1) -{ - int v1; // esi - FILE **v2; // ebp - int v4; // ecx - int v5; // esi - int v6; // edi - int v8; // esi - - v1 = a1[12]; - if ( (v1 & 8) == 0 ) - return -1; - v2 = (FILE **)(a1 + 10); - if ( !std::__basic_file::is_open(a1 + 10) ) - return -1; - v4 = a1[22]; - v5 = v1 & 4; - v6 = a1[3] - a1[2]; - if ( !v4 ) - std::__throw_bad_cast(); - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) - return v6; - v8 = std::__basic_file::showmanyc(v2); - return v8 / (*(int (**)(void))(*(_DWORD *)a1[22] + 32))() + v6; -} - -//----- (004B3E90) -------------------------------------------------------- -int __fastcall std::filebuf::underflow(int a1) -{ - unsigned __int8 *v2; // eax - int result; // eax - bool v4; // zf - unsigned int v5; // edx - int v6; // ecx - int v7; // edi - int v8; // ecx - int v9; // eax - signed int v10; // esi - int v11; // ecx - const void *v12; // eax - signed int v13; // edi - unsigned int v14; // edx - signed int v15; // ecx - char *v16; // ebp - int v17; // ecx - char *v18; // eax - void *v19; // edx - int v20; // esi - char v21; // di - int v22; // ebp - char v23; // al - int v24; // eax - int v25; // eax - int v26; // eax - _BYTE *Src; // ecx - unsigned int v28; // eax - size_t Size; // esi - int v30; // eax - int *v31; // eax - unsigned __int8 *v32; // edx - int v33; // eax - char *v34; // eax - char *v35; // eax - char *v36; // eax - unsigned int v37; // [esp+48h] [ebp-34h] - unsigned int v38; // [esp+4Ch] [ebp-30h] - unsigned int v39; // [esp+4Ch] [ebp-30h] - unsigned int v40; // [esp+4Ch] [ebp-30h] - unsigned int v41; // [esp+4Ch] [ebp-30h] - unsigned int v42; // [esp+4Ch] [ebp-30h] - void *v43; // [esp+5Ch] [ebp-20h] BYREF - - if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) - return -1; - if ( *(_BYTE *)(a1 + 74) ) - { - result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, -1); - if ( result == -1 ) - return result; - v2 = *(unsigned __int8 **)(a1 + 64); - v4 = *(_BYTE *)(a1 + 84) == 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v2; - *(_DWORD *)(a1 + 8) = v2; - *(_DWORD *)(a1 + 12) = v2; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 74) = 0; - if ( v4 ) - goto LABEL_4; -LABEL_9: - v4 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; - v5 = *(_DWORD *)(a1 + 80); - *(_BYTE *)(a1 + 84) = 0; - v6 = *(_DWORD *)(a1 + 64); - v2 = (unsigned __int8 *)(*(_DWORD *)(a1 + 76) + !v4); - *(_DWORD *)(a1 + 12) = v5; - *(_DWORD *)(a1 + 76) = v2; - *(_DWORD *)(a1 + 4) = v6; - *(_DWORD *)(a1 + 8) = v2; - if ( (unsigned int)v2 < v5 ) - return *v2; - goto LABEL_10; - } - v2 = *(unsigned __int8 **)(a1 + 8); - if ( *(_BYTE *)(a1 + 84) ) - goto LABEL_9; -LABEL_4: - if ( (unsigned int)v2 < *(_DWORD *)(a1 + 12) ) - return *v2; -LABEL_10: - v7 = 2; - if ( *(_DWORD *)(a1 + 68) >= 2u ) - v7 = *(_DWORD *)(a1 + 68); - v8 = *(_DWORD *)(a1 + 88); - v37 = v7 - 1; - if ( !v8 ) - std::__throw_bad_cast(); - if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) ) - { - v9 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 20))(*(_DWORD *)(a1 + 88)); - if ( v9 <= 0 ) - { - v26 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 32))(*(_DWORD *)(a1 + 88)); - v11 = v7 - 1; - v10 = v7 + v26 - 2; - } - else - { - v10 = v37 * v9; - v11 = v37 * v9; - } - v12 = *(const void **)(a1 + 100); - v13 = *(_DWORD *)(a1 + 104) - (_DWORD)v12; - v14 = v11 - v13; - if ( v11 <= v13 ) - v14 = 0; - v15 = *(_DWORD *)(a1 + 96); - if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 4) == *(_DWORD *)(a1 + 12) ) - { - if ( !v13 ) - { - if ( v10 <= v15 ) - { - v16 = *(char **)(a1 + 92); - goto LABEL_22; - } - v42 = v14; - v36 = (char *)operator new[](v10); - v14 = v42; - v16 = v36; -LABEL_61: - if ( *(_DWORD *)(a1 + 92) ) - { - v39 = v14; - operator delete[](*(void **)(a1 + 92)); - v14 = v39; - } - *(_DWORD *)(a1 + 92) = v16; - *(_DWORD *)(a1 + 96) = v10; -LABEL_22: - v17 = *(_DWORD *)(a1 + 56); - v18 = &v16[v13]; - *(_DWORD *)(a1 + 100) = v16; - *(_DWORD *)(a1 + 104) = &v16[v13]; - *(_DWORD *)(a1 + 60) = v17; - if ( v14 ) - { - v20 = 0; - goto LABEL_30; - } - v19 = *(void **)(a1 + 4); - v20 = 0; - v43 = v19; - if ( v18 <= v16 ) - { - while ( 1 ) - { -LABEL_29: - v18 = *(char **)(a1 + 104); - v14 = 1; - v13 = (signed int)&v18[-*(_DWORD *)(a1 + 92)]; -LABEL_30: - if ( (signed int)(v14 + v13) > *(_DWORD *)(a1 + 96) ) - std::__throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid"); - v24 = std::__basic_file::xsgetn((FILE **)(a1 + 40), v18, v14); - if ( v24 ) - { - if ( v24 == -1 ) - goto LABEL_49; - v21 = 0; - } - else - { - v21 = 1; - } - v19 = *(void **)(a1 + 4); - v16 = *(char **)(a1 + 100); - v18 = (char *)(*(_DWORD *)(a1 + 104) + v24); - *(_DWORD *)(a1 + 104) = v18; - v43 = v19; - if ( v18 > v16 ) - break; - if ( v20 == 3 ) - goto LABEL_41; - if ( v21 ) - goto LABEL_37; - } - } - else - { - v21 = 0; - } - v20 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, void *, unsigned int, void **))(**(_DWORD **)(a1 + 88) + 16))( - *(_DWORD *)(a1 + 88), - a1 + 56, - v16, - v18, - a1 + 100, - v19, - (unsigned int)v19 + v37, - &v43); - if ( v20 != 3 ) - { - v22 = (int)v43 - *(_DWORD *)(a1 + 4); - if ( v20 != 2 ) - { - v23 = v21 | (v43 != *(void **)(a1 + 4)); - goto LABEL_28; - } - if ( (int)v43 - *(_DWORD *)(a1 + 4) <= 0 ) - { - if ( !v21 ) - std::__throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file"); - goto LABEL_57; - } - goto LABEL_51; - } - v18 = *(char **)(a1 + 104); - v19 = *(void **)(a1 + 4); -LABEL_41: - Src = *(_BYTE **)(a1 + 92); - v28 = v18 - Src; - v22 = v28; - Size = v28; - if ( v37 < v28 ) - { - Size = v37; - v22 = v37; - } - else if ( !v28 ) - { -LABEL_43: - *(_DWORD *)(a1 + 100) = Src; - v20 = 3; - v23 = v21 | (v22 != 0); -LABEL_28: - if ( !v23 ) - goto LABEL_29; - if ( v22 > 0 ) - goto LABEL_51; - if ( v21 ) - { -LABEL_37: - v25 = *(_DWORD *)(a1 + 64); - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v25; - *(_DWORD *)(a1 + 8) = v25; - *(_DWORD *)(a1 + 12) = v25; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 0; - if ( v20 == 1 ) - std::__throw_ios_failure("basic_filebuf::underflow incomplete character in file"); - return -1; - } -LABEL_49: - v31 = __errno(); - std::__throw_ios_failure( - (std::__ios_failure *)"basic_filebuf::underflow error reading the file", - (std::runtime_error *)*v31); - } - memcpy(v19, Src, Size); - Src = (_BYTE *)(*(_DWORD *)(a1 + 92) + Size); - goto LABEL_43; - } - if ( v10 <= v15 ) - { - v16 = *(char **)(a1 + 92); - v14 = 0; -LABEL_68: - v40 = v14; - memmove(v16, v12, v13); - v16 = *(char **)(a1 + 92); - v14 = v40; - goto LABEL_22; - } - v35 = (char *)operator new[](v10); - v14 = 0; - v16 = v35; - } - else - { - if ( v10 <= v15 ) - { - v16 = *(char **)(a1 + 92); - if ( !v13 ) - goto LABEL_22; - goto LABEL_68; - } - v38 = v14; - v34 = (char *)operator new[](v10); - v14 = v38; - v16 = v34; - if ( !v13 ) - goto LABEL_61; - } - v41 = v14; - memcpy(v16, *(const void **)(a1 + 100), v13); - v14 = v41; - goto LABEL_61; - } - v30 = std::__basic_file::xsgetn((FILE **)(a1 + 40), *(void **)(a1 + 4), v37); - v22 = v30; - if ( !v30 ) - { -LABEL_57: - v33 = *(_DWORD *)(a1 + 64); - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v33; - *(_DWORD *)(a1 + 8) = v33; - *(_DWORD *)(a1 + 12) = v33; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 0; - return -1; - } - if ( v30 <= 0 ) - goto LABEL_49; -LABEL_51: - v32 = *(unsigned __int8 **)(a1 + 64); - v4 = (*(_BYTE *)(a1 + 48) & 8) == 0; - *(_DWORD *)(a1 + 4) = v32; - *(_DWORD *)(a1 + 8) = v32; - if ( v4 ) - *(_DWORD *)(a1 + 12) = v32; - else - *(_DWORD *)(a1 + 12) = &v32[v22]; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 1; - return *v32; -} - -//----- (004B4330) -------------------------------------------------------- -int __thiscall std::filebuf::basic_filebuf(int this, std::locale *a2) -{ - int v3; // eax - int v4; // edx - int v5; // edi - int v6; // ecx - int v7; // eax - int result; // eax - int v9; // edi - int v10; // edx - int v11; // edx - int v12; // edx - int v13; // edx - int v14; // edx - int v15; // edx - int v16; // edx - const std::locale *v17; // [esp+4h] [ebp-18h] - - std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); - v3 = *((_DWORD *)a2 + 10); - v4 = *((_DWORD *)a2 + 17); - *(_DWORD *)this = off_51AA50; - v5 = *((_DWORD *)a2 + 14); - v6 = *((_DWORD *)a2 + 16); - *(_DWORD *)(this + 32) = 0; - *(_DWORD *)(this + 40) = v3; - LOBYTE(v3) = *((_BYTE *)a2 + 44); - *(_DWORD *)(this + 36) = 0; - *(_BYTE *)(this + 44) = v3; - v7 = *((_DWORD *)a2 + 12); - *((_DWORD *)a2 + 10) = 0; - *((_BYTE *)a2 + 44) = 0; - *(_DWORD *)(this + 68) = v4; - LOWORD(v4) = *((_WORD *)a2 + 36); - *(_DWORD *)(this + 48) = v7; - result = *((_DWORD *)a2 + 13); - *(_WORD *)(this + 72) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 74); - *(_DWORD *)(this + 56) = v5; - v9 = *((_DWORD *)a2 + 15); - *(_BYTE *)(this + 74) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 75); - *(_DWORD *)(this + 64) = v6; - *(_DWORD *)(this + 60) = v9; - *((_DWORD *)a2 + 12) = 0; - *(_DWORD *)(this + 52) = result; - *((_DWORD *)a2 + 16) = 0; - *((_DWORD *)a2 + 17) = 1; - *((_WORD *)a2 + 36) = 0; - *((_BYTE *)a2 + 74) = 0; - *(_BYTE *)(this + 75) = v4; - v10 = *((_DWORD *)a2 + 19); - *((_DWORD *)a2 + 19) = 0; - *(_DWORD *)(this + 76) = v10; - v11 = *((_DWORD *)a2 + 20); - *((_DWORD *)a2 + 1) = 0; - *(_DWORD *)(this + 80) = v11; - LOBYTE(v11) = *((_BYTE *)a2 + 84); - *((_DWORD *)a2 + 20) = 0; - *(_BYTE *)(this + 84) = v11; - v12 = *((_DWORD *)a2 + 22); - *((_BYTE *)a2 + 84) = 0; - *(_DWORD *)(this + 88) = v12; - v13 = *((_DWORD *)a2 + 23); - *((_DWORD *)a2 + 2) = 0; - *(_DWORD *)(this + 92) = v13; - v14 = *((_DWORD *)a2 + 24); - *((_DWORD *)a2 + 23) = 0; - *(_DWORD *)(this + 96) = v14; - v15 = *((_DWORD *)a2 + 25); - *((_DWORD *)a2 + 24) = 0; - *(_DWORD *)(this + 100) = v15; - v16 = *((_DWORD *)a2 + 26); - *((_DWORD *)a2 + 25) = 0; - *(_DWORD *)(this + 104) = v16; - *((_DWORD *)a2 + 26) = 0; - *((_DWORD *)a2 + 3) = 0; - *((_DWORD *)a2 + 5) = 0; - *((_DWORD *)a2 + 4) = 0; - *((_DWORD *)a2 + 6) = 0; - *((_DWORD *)a2 + 14) = result; - *((_DWORD *)a2 + 15) = result; - return result; -} -// 4B433F: variable 'v17' is possibly undefined -// 51AA50: using guessed type int (*off_51AA50[2])(); - -//----- (004B4470) -------------------------------------------------------- -void __fastcall std::filebuf::basic_filebuf(int a1) -{ - int v2; // [esp+20h] [ebp-4Ch] - - *(_DWORD *)a1 = &off_51ADD4; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - v2 = a1 + 28; - std::locale::locale((_DWORD *)(a1 + 28)); - *(_DWORD *)a1 = off_51AA50; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 60) = 0; - *(_DWORD *)(a1 + 64) = 0; - *(_DWORD *)(a1 + 68) = 512; - *(_DWORD *)(a1 + 72) = 0; - *(_DWORD *)(a1 + 76) = 0; - *(_DWORD *)(a1 + 80) = 0; - *(_BYTE *)(a1 + 84) = 0; - *(_DWORD *)(a1 + 88) = 0; - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - if ( (unsigned __int8)std::has_facet>(v2) ) - *(_DWORD *)(a1 + 88) = std::use_facet>(v2); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004B4600) -------------------------------------------------------- -int __thiscall std::filebuf::basic_filebuf(int this, std::locale *a2) -{ - int v3; // eax - int v4; // edx - int v5; // edi - int v6; // ecx - int v7; // eax - int result; // eax - int v9; // edi - int v10; // edx - int v11; // edx - int v12; // edx - int v13; // edx - int v14; // edx - int v15; // edx - int v16; // edx - const std::locale *v17; // [esp+4h] [ebp-18h] - - std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); - v3 = *((_DWORD *)a2 + 10); - v4 = *((_DWORD *)a2 + 17); - *(_DWORD *)this = off_51AA50; - v5 = *((_DWORD *)a2 + 14); - v6 = *((_DWORD *)a2 + 16); - *(_DWORD *)(this + 32) = 0; - *(_DWORD *)(this + 40) = v3; - LOBYTE(v3) = *((_BYTE *)a2 + 44); - *(_DWORD *)(this + 36) = 0; - *(_BYTE *)(this + 44) = v3; - v7 = *((_DWORD *)a2 + 12); - *((_DWORD *)a2 + 10) = 0; - *((_BYTE *)a2 + 44) = 0; - *(_DWORD *)(this + 68) = v4; - LOWORD(v4) = *((_WORD *)a2 + 36); - *(_DWORD *)(this + 48) = v7; - result = *((_DWORD *)a2 + 13); - *(_WORD *)(this + 72) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 74); - *(_DWORD *)(this + 56) = v5; - v9 = *((_DWORD *)a2 + 15); - *(_BYTE *)(this + 74) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 75); - *(_DWORD *)(this + 64) = v6; - *(_DWORD *)(this + 60) = v9; - *((_DWORD *)a2 + 12) = 0; - *(_DWORD *)(this + 52) = result; - *((_DWORD *)a2 + 16) = 0; - *((_DWORD *)a2 + 17) = 1; - *((_WORD *)a2 + 36) = 0; - *((_BYTE *)a2 + 74) = 0; - *(_BYTE *)(this + 75) = v4; - v10 = *((_DWORD *)a2 + 19); - *((_DWORD *)a2 + 19) = 0; - *(_DWORD *)(this + 76) = v10; - v11 = *((_DWORD *)a2 + 20); - *((_DWORD *)a2 + 1) = 0; - *(_DWORD *)(this + 80) = v11; - LOBYTE(v11) = *((_BYTE *)a2 + 84); - *((_DWORD *)a2 + 20) = 0; - *(_BYTE *)(this + 84) = v11; - v12 = *((_DWORD *)a2 + 22); - *((_BYTE *)a2 + 84) = 0; - *(_DWORD *)(this + 88) = v12; - v13 = *((_DWORD *)a2 + 23); - *((_DWORD *)a2 + 2) = 0; - *(_DWORD *)(this + 92) = v13; - v14 = *((_DWORD *)a2 + 24); - *((_DWORD *)a2 + 23) = 0; - *(_DWORD *)(this + 96) = v14; - v15 = *((_DWORD *)a2 + 25); - *((_DWORD *)a2 + 24) = 0; - *(_DWORD *)(this + 100) = v15; - v16 = *((_DWORD *)a2 + 26); - *((_DWORD *)a2 + 25) = 0; - *(_DWORD *)(this + 104) = v16; - *((_DWORD *)a2 + 26) = 0; - *((_DWORD *)a2 + 3) = 0; - *((_DWORD *)a2 + 5) = 0; - *((_DWORD *)a2 + 4) = 0; - *((_DWORD *)a2 + 6) = 0; - *((_DWORD *)a2 + 14) = result; - *((_DWORD *)a2 + 15) = result; - return result; -} -// 4B460F: variable 'v17' is possibly undefined -// 51AA50: using guessed type int (*off_51AA50[2])(); - -//----- (004B4740) -------------------------------------------------------- -void __fastcall std::filebuf::basic_filebuf(int a1) -{ - int v2; // [esp+20h] [ebp-4Ch] - - *(_DWORD *)a1 = &off_51ADD4; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - v2 = a1 + 28; - std::locale::locale((_DWORD *)(a1 + 28)); - *(_DWORD *)a1 = off_51AA50; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 60) = 0; - *(_DWORD *)(a1 + 64) = 0; - *(_DWORD *)(a1 + 68) = 512; - *(_DWORD *)(a1 + 72) = 0; - *(_DWORD *)(a1 + 76) = 0; - *(_DWORD *)(a1 + 80) = 0; - *(_BYTE *)(a1 + 84) = 0; - *(_DWORD *)(a1 + 88) = 0; - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - if ( (unsigned __int8)std::has_facet>(v2) ) - *(_DWORD *)(a1 + 88) = std::use_facet>(v2); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004B48D0) -------------------------------------------------------- -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA50; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)a1 + 7); - operator delete(a1); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004B4980) -------------------------------------------------------- -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA50; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004B4A20) -------------------------------------------------------- -void __fastcall std::filebuf::~filebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA50; - std::filebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004B4AC0) -------------------------------------------------------- -int __thiscall std::filebuf::operator=(int this, int a2) -{ - int v3; // eax - char v4; // dl - int v5; // eax - int v6; // eax - int v7; // eax - int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - int v12; // eax - int v13; // eax - int v14; // eax - int v15; // eax - int result; // eax - - std::filebuf::close((struct _Unwind_Exception *)this); - std::streambuf::operator=((volatile signed __int32 **)this, a2); - v3 = *(_DWORD *)(this + 40); - *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); - v4 = *(_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 40) = v3; - LOBYTE(v3) = *(_BYTE *)(this + 44); - *(_BYTE *)(this + 44) = v4; - *(_BYTE *)(a2 + 44) = v3; - v5 = *(_DWORD *)(a2 + 48); - *(_DWORD *)(a2 + 48) = 0; - *(_DWORD *)(this + 48) = v5; - *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); - *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); - *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); - v6 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 64) = 0; - *(_DWORD *)(this + 64) = v6; - v7 = *(_DWORD *)(a2 + 68); - *(_DWORD *)(a2 + 68) = 1; - *(_DWORD *)(this + 68) = v7; - LOBYTE(v7) = *(_BYTE *)(a2 + 72); - *(_BYTE *)(a2 + 72) = 0; - *(_BYTE *)(this + 72) = v7; - v8 = *(_DWORD *)(a2 + 92); - *(_DWORD *)(a2 + 92) = 0; - *(_DWORD *)(this + 92) = v8; - v9 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 96) = 0; - *(_DWORD *)(this + 96) = v9; - v10 = *(_DWORD *)(a2 + 100); - *(_DWORD *)(a2 + 100) = 0; - *(_DWORD *)(this + 100) = v10; - v11 = *(_DWORD *)(a2 + 104); - *(_DWORD *)(a2 + 104) = 0; - *(_DWORD *)(this + 104) = v11; - LOBYTE(v11) = *(_BYTE *)(a2 + 73); - *(_BYTE *)(a2 + 73) = 0; - *(_BYTE *)(this + 73) = v11; - LOBYTE(v11) = *(_BYTE *)(a2 + 74); - *(_BYTE *)(a2 + 74) = 0; - *(_BYTE *)(this + 74) = v11; - v12 = *(_DWORD *)(a2 + 76); - *(_DWORD *)(a2 + 76) = 0; - *(_DWORD *)(this + 76) = v12; - v13 = *(_DWORD *)(a2 + 80); - *(_DWORD *)(a2 + 80) = 0; - *(_DWORD *)(this + 80) = v13; - LOBYTE(v13) = *(_BYTE *)(a2 + 84); - *(_BYTE *)(a2 + 84) = 0; - *(_BYTE *)(this + 84) = v13; - v14 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 20) = 0; - *(_DWORD *)(a2 + 4) = v14; - *(_DWORD *)(a2 + 8) = v14; - *(_DWORD *)(a2 + 12) = v14; - v15 = *(_DWORD *)(a2 + 52); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 56) = v15; - *(_DWORD *)(a2 + 60) = v15; - result = this; - *(_DWORD *)(a2 + 24) = 0; - return result; -} - -//----- (004B4BE0) -------------------------------------------------------- -unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int a2) -{ - int v2; // eax - bool v3; // bl - int v4; // edx - unsigned int result; // eax - - v2 = this[12]; - v3 = (v2 & 8) != 0; - if ( (v2 & 0x10) != 0 ) - LOBYTE(v2) = 1; - v4 = this[16]; - result = v2 & 1; - this[1] = v4; - this[2] = v4; - if ( a2 > 0 && v3 ) - { - result = v4 + 2 * a2; - this[3] = result; -LABEL_6: - this[5] = 0; - this[4] = 0; - this[6] = 0; - return result; - } - this[3] = v4; - if ( a2 ) - goto LABEL_6; - if ( !(_BYTE)result ) - goto LABEL_6; - result = this[17]; - if ( result <= 1 ) - goto LABEL_6; - result = v4 + 2 * result - 2; - this[5] = v4; - this[4] = v4; - this[6] = result; - return result; -} - -//----- (004B4C60) -------------------------------------------------------- -int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int a2) -{ - if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 92) + 24))(*(_DWORD *)(this + 92)) ) - return (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 12)) >> 1; - else - return *(_DWORD *)(this + 96) - + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 92) + 28))( - *(_DWORD *)(this + 92), - a2, - *(_DWORD *)(this + 96), - *(_DWORD *)(this + 104), - (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1) - - *(_DWORD *)(this + 108); -} - -//----- (004B4CD0) -------------------------------------------------------- -int __fastcall std::wfilebuf::_M_create_pback(int a1) -{ - int v1; // eax - int result; // eax - - if ( !*(_BYTE *)(a1 + 88) ) - { - v1 = *(_DWORD *)(a1 + 8); - *(_BYTE *)(a1 + 88) = 1; - *(_DWORD *)(a1 + 80) = v1; - *(_DWORD *)(a1 + 84) = *(_DWORD *)(a1 + 12); - *(_DWORD *)(a1 + 4) = a1 + 76; - *(_DWORD *)(a1 + 8) = a1 + 76; - result = a1 + 78; - *(_DWORD *)(a1 + 12) = a1 + 78; - } - return result; -} - -//----- (004B4D00) -------------------------------------------------------- -int __fastcall std::wfilebuf::_M_destroy_pback(int a1) -{ - bool v1; // zf - int v2; // eax - int v3; // ebx - int result; // eax - int v5; // edx - - if ( *(_BYTE *)(a1 + 88) ) - { - v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); - v2 = *(_DWORD *)(a1 + 80); - v3 = *(_DWORD *)(a1 + 64); - *(_BYTE *)(a1 + 88) = 0; - result = v2 + 2 * !v1; - v5 = *(_DWORD *)(a1 + 84); - *(_DWORD *)(a1 + 4) = v3; - *(_DWORD *)(a1 + 80) = result; - *(_DWORD *)(a1 + 8) = result; - *(_DWORD *)(a1 + 12) = v5; - } - return result; -} - -//----- (004B4D40) -------------------------------------------------------- -int __fastcall std::wfilebuf::_M_terminate_output(int a1) -{ - int v1; // esi - int v3; // eax - int v4; // ecx - int v5; // eax - int v6; // ebx - _DWORD **v7; // ebp - unsigned int v8; // eax - unsigned int v9; // esi - unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] - FILE **v12; // [esp+2Ch] [ebp-B4h] - int v13; // [esp+30h] [ebp-B0h] - int v14; // [esp+40h] [ebp-A0h] BYREF - char v15[128]; // [esp+44h] [ebp-9Ch] BYREF - char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF - - v1 = 1; - if ( *(_DWORD *)(a1 + 16) < *(_DWORD *)(a1 + 20) ) - { - v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, 0xFFFF); - LOBYTE(v3) = (_WORD)v3 != 0xFFFF; - v1 = v3; - } - if ( *(_BYTE *)(a1 + 74) ) - { - v4 = *(_DWORD *)(a1 + 92); - if ( !v4 ) - std::__throw_bad_cast(); - v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); - if ( !v11 ) - { - if ( (_BYTE)v1 ) - { - v12 = (FILE **)(a1 + 40); - v5 = a1; - v6 = a1 + 56; - v7 = (_DWORD **)v5; - while ( 1 ) - { - v8 = (*(int (__thiscall **)(_DWORD *, int, char *, char *, int *))(*v7[23] + 12))(v7[23], v6, v15, v16, &v14); - v9 = v8; - if ( v8 == 2 ) - break; - if ( v8 <= 1 && v14 - (int)v15 > 0 ) - { - v13 = v14 - (_DWORD)v15; - if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) - return v11; - if ( v9 == 1 ) - continue; - } - return ((unsigned __int16 (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, 0xFFFF) != 0xFFFF; - } - return v11; - } - } - } - return v1; -} -// 4B4D40: using guessed type char var_1C[28]; - -//----- (004B4E50) -------------------------------------------------------- -bool __thiscall std::wfilebuf::_M_convert_to_external(int this, char *a2, unsigned int a3) -{ - int v4; // ecx - unsigned int v5; // esi - int v6; // eax - void *v7; // esp - void *v8; // esp - unsigned int v9; // eax - unsigned int v10; // eax - int v12; // esi - char v13; // [esp+20h] [ebp-38h] - int v14; // [esp+38h] [ebp-20h] BYREF - int v15; // [esp+3Ch] [ebp-1Ch] BYREF - char v16[24]; // [esp+40h] [ebp-18h] BYREF - - v4 = *(_DWORD *)(this + 92); - v5 = a3; - if ( !v4 ) - std::__throw_bad_cast(); - if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) - goto LABEL_5; - v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(**(_DWORD **)(this + 92) + 32))(*(_DWORD *)(this + 92)) + 27) >> 4); - v7 = alloca(v6); - v8 = alloca(v6); - v9 = (*(int (__thiscall **)(_DWORD, int, char *, char *))(**(_DWORD **)(this + 92) + 8))( - *(_DWORD *)(this + 92), - this + 56, - a2, - &a2[2 * a3]); - if ( v9 > 1 ) - { - if ( v9 == 3 ) - { -LABEL_5: - v10 = std::__basic_file::xsputn((FILE **)(this + 40), a2, a3); - return v10 == v5; - } -LABEL_11: - std::__throw_ios_failure("basic_filebuf::_M_convert_to_external conversion error"); - } - v13 = v9; - v5 = v14 - (_DWORD)v16; - v10 = std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16); - if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) - return v10 == v5; - if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(**(_DWORD **)(this + 92) + 8))( - *(_DWORD *)(this + 92), - &v15, - v15, - *(_DWORD *)(this + 20), - &v15, - v16, - v14, - &v14) == 2 ) - goto LABEL_11; - v12 = v14 - (_DWORD)v16; - return std::__basic_file::xsputn((FILE **)(this + 40), v16, v14 - (_DWORD)v16) == v12; -} - -//----- (004B4FC0) -------------------------------------------------------- -void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1) -{ - if ( *(_BYTE *)(a1 + 72) ) - { - if ( *(_DWORD *)(a1 + 64) ) - operator delete[](*(void **)(a1 + 64)); - *(_DWORD *)(a1 + 64) = 0; - *(_BYTE *)(a1 + 72) = 0; - } - if ( *(_DWORD *)(a1 + 96) ) - operator delete[](*(void **)(a1 + 96)); - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - *(_DWORD *)(a1 + 108) = 0; -} - -//----- (004B5020) -------------------------------------------------------- -void __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1) -{ - unsigned int v1; // eax - - if ( !*(_BYTE *)(a1 + 72) && !*(_DWORD *)(a1 + 64) ) - { - v1 = *(_DWORD *)(a1 + 68); - if ( v1 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - *(_DWORD *)(a1 + 64) = operator new[](2 * v1); - *(_BYTE *)(a1 + 72) = 1; - } -} - -//----- (004B5060) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3) -{ - _BYTE *v3; // esi - int v5; // eax - int v6; // eax - unsigned int v8; // eax - _DWORD v9[7]; // [esp+20h] [ebp-1Ch] BYREF - - v3 = this + 10; - if ( !std::__basic_file::is_open(this + 10) ) - { - std::__basic_file::open(v3, a2, a3, 436); - if ( std::__basic_file::is_open(v3) ) - { - v5 = this[16]; - if ( !*((_BYTE *)this + 72) && !v5 ) - { - v8 = this[17]; - if ( v8 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v5 = operator new[](2 * v8); - *((_BYTE *)this + 72) = 1; - this[16] = v5; - } - this[1] = v5; - this[2] = v5; - this[3] = v5; - v6 = this[13]; - this[12] = a3; - *(_WORD *)((char *)this + 73) = 0; - this[5] = 0; - this[4] = 0; - this[6] = 0; - this[14] = v6; - this[15] = v6; - if ( (a3 & 2) == 0 ) - return this; - (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v9, this, 0, 0, 2, a3); - if ( (v9[0] & v9[1]) != -1 ) - return this; - std::wfilebuf::close((struct _Unwind_Exception *)this); - } - } - return 0; -} - -//----- (004B5180) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, wchar_t *a2, int a3) -{ - _BYTE *v3; // esi - int v5; // eax - int v6; // eax - unsigned int v8; // eax - _DWORD v9[7]; // [esp+20h] [ebp-1Ch] BYREF - - v3 = this + 10; - if ( !std::__basic_file::is_open(this + 10) ) - { - std::__basic_file::open(v3, a2, a3); - if ( std::__basic_file::is_open(v3) ) - { - v5 = this[16]; - if ( !*((_BYTE *)this + 72) && !v5 ) - { - v8 = this[17]; - if ( v8 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v5 = operator new[](2 * v8); - *((_BYTE *)this + 72) = 1; - this[16] = v5; - } - this[1] = v5; - this[2] = v5; - this[3] = v5; - v6 = this[13]; - this[12] = a3; - *(_WORD *)((char *)this + 73) = 0; - this[5] = 0; - this[4] = 0; - this[6] = 0; - this[14] = v6; - this[15] = v6; - if ( (a3 & 2) == 0 ) - return this; - (*(void (__thiscall **)(_DWORD *, _DWORD *, _DWORD, _DWORD, int, int))(*this + 16))(v9, this, 0, 0, 2, a3); - if ( (v9[0] & v9[1]) != -1 ) - return this; - std::wfilebuf::close((struct _Unwind_Exception *)this); - } - } - return 0; -} - -//----- (004B5290) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::open(_DWORD *this, char *a2, int a3) -{ - return std::wfilebuf::open(this, *(char **)a2, a3); -} - -//----- (004B52A0) -------------------------------------------------------- -int __thiscall std::wfilebuf::swap(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int v13; // eax - int v14; // eax - char v15; // dl - int v16; // edx - int v17; // eax - int v18; // edx - int v19; // eax - int v20; // edx - int v21; // eax - int v22; // edx - int v23; // eax - int v24; // edx - int v25; // eax - int v26; // edx - int v27; // eax - int v28; // edx - int v29; // eax - int v30; // edx - int v31; // eax - int v32; // edx - int v33; // eax - int v34; // edx - int v35; // eax - int v36; // edx - int v37; // eax - int v38; // eax - int result; // eax - const std::locale *v40; // [esp+4h] [ebp-48h] - volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] - _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - v41 = (volatile signed __int32 **)(this + 28); - std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); - std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); - std::locale::~locale(v42); - v14 = *(_DWORD *)(this + 40); - *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); - v15 = *(_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 40) = v14; - LOBYTE(v14) = *(_BYTE *)(this + 44); - *(_BYTE *)(this + 44) = v15; - v16 = *(_DWORD *)(a2 + 48); - *(_BYTE *)(a2 + 44) = v14; - v17 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 48) = v16; - v18 = *(_DWORD *)(a2 + 52); - *(_DWORD *)(a2 + 48) = v17; - v19 = *(_DWORD *)(this + 52); - *(_DWORD *)(this + 52) = v18; - v20 = *(_DWORD *)(a2 + 56); - *(_DWORD *)(a2 + 52) = v19; - v21 = *(_DWORD *)(this + 56); - *(_DWORD *)(this + 56) = v20; - v22 = *(_DWORD *)(a2 + 60); - *(_DWORD *)(a2 + 56) = v21; - v23 = *(_DWORD *)(this + 60); - *(_DWORD *)(this + 60) = v22; - v24 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 60) = v23; - v25 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 64) = v24; - v26 = *(_DWORD *)(a2 + 68); - *(_DWORD *)(a2 + 64) = v25; - v27 = *(_DWORD *)(this + 68); - *(_DWORD *)(this + 68) = v26; - *(_DWORD *)(a2 + 68) = v27; - LOBYTE(v27) = *(_BYTE *)(this + 72); - *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); - v28 = *(_DWORD *)(a2 + 96); - *(_BYTE *)(a2 + 72) = v27; - v29 = *(_DWORD *)(this + 96); - *(_DWORD *)(this + 96) = v28; - v30 = *(_DWORD *)(a2 + 100); - *(_DWORD *)(a2 + 96) = v29; - v31 = *(_DWORD *)(this + 100); - *(_DWORD *)(this + 100) = v30; - v32 = *(_DWORD *)(a2 + 104); - *(_DWORD *)(a2 + 100) = v31; - v33 = *(_DWORD *)(this + 104); - *(_DWORD *)(this + 104) = v32; - v34 = *(_DWORD *)(a2 + 108); - *(_DWORD *)(a2 + 104) = v33; - v35 = *(_DWORD *)(this + 108); - *(_DWORD *)(this + 108) = v34; - LOBYTE(v34) = *(_BYTE *)(a2 + 73); - *(_DWORD *)(a2 + 108) = v35; - LOBYTE(v35) = *(_BYTE *)(this + 73); - *(_BYTE *)(this + 73) = v34; - LOBYTE(v34) = *(_BYTE *)(a2 + 74); - *(_BYTE *)(a2 + 73) = v35; - LOBYTE(v35) = *(_BYTE *)(this + 74); - *(_BYTE *)(this + 74) = v34; - v36 = *(_DWORD *)(a2 + 80); - *(_BYTE *)(a2 + 74) = v35; - v37 = *(_DWORD *)(this + 80); - *(_DWORD *)(this + 80) = v36; - *(_DWORD *)(a2 + 80) = v37; - v38 = *(_DWORD *)(this + 84); - *(_DWORD *)(this + 84) = *(_DWORD *)(a2 + 84); - LOBYTE(v36) = *(_BYTE *)(a2 + 88); - *(_DWORD *)(a2 + 84) = v38; - result = *(unsigned __int8 *)(this + 88); - *(_BYTE *)(this + 88) = v36; - *(_BYTE *)(a2 + 88) = result; - return result; -} -// 4B5308: variable 'v40' is possibly undefined - -//----- (004B5430) -------------------------------------------------------- -int __fastcall std::wfilebuf::sync(_DWORD *a1) -{ - if ( a1[4] >= a1[5] ) - return 0; - else - return -((*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, 0xFFFF) == 0xFFFF); -} - -//----- (004B5470) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::wfilebuf::close(struct _Unwind_Exception *a1) -{ - bool v1; // zf - void *v2; // eax - int v3; // edx - int v4; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+1Ch] [ebp-60h] - char *v7; // [esp+24h] [ebp-58h] - char v8; // [esp+2Bh] [ebp-51h] - - lpuexcpt = a1; - v7 = (char *)a1 + 40; - if ( !std::__basic_file::is_open((_DWORD *)a1 + 10) ) - return 0; - v8 = std::wfilebuf::_M_terminate_output((int)lpuexcpt) ^ 1; - v1 = *((_BYTE *)lpuexcpt + 72) == 0; - *((_DWORD *)lpuexcpt + 12) = 0; - *((_BYTE *)lpuexcpt + 88) = 0; - if ( !v1 ) - { - v2 = (void *)*((_DWORD *)lpuexcpt + 16); - if ( v2 ) - operator delete[](v2); - *((_DWORD *)lpuexcpt + 16) = 0; - *((_BYTE *)lpuexcpt + 72) = 0; - } - if ( *((_DWORD *)lpuexcpt + 24) ) - operator delete[](*((void **)lpuexcpt + 24)); - *((_DWORD *)lpuexcpt + 24) = 0; - *((_DWORD *)lpuexcpt + 25) = 0; - *((_DWORD *)lpuexcpt + 26) = 0; - *((_DWORD *)lpuexcpt + 27) = 0; - *(_WORD *)((char *)lpuexcpt + 73) = 0; - v3 = *((_DWORD *)lpuexcpt + 16); - *((_DWORD *)lpuexcpt + 5) = 0; - *((_DWORD *)lpuexcpt + 1) = v3; - *((_DWORD *)lpuexcpt + 2) = v3; - *((_DWORD *)lpuexcpt + 3) = v3; - v4 = *((_DWORD *)lpuexcpt + 13); - *((_DWORD *)lpuexcpt + 4) = 0; - *((_DWORD *)lpuexcpt + 6) = 0; - *((_DWORD *)lpuexcpt + 14) = v4; - *((_DWORD *)lpuexcpt + 15) = v4; - if ( !std::__basic_file::close((int)v7) || v8 ) - return 0; - return lpuexcpt; -} - -//----- (004B5620) -------------------------------------------------------- -char __thiscall std::wfilebuf::imbue(char *this, int a2) -{ - void *v3; // esi - int v4; // eax - int v5; // ecx - int v6; // ecx - int v7; // edi - const void *Src; // eax - int v9; // edi - size_t Size; // edi - int v11; // eax - int v12; // eax - int v14; // [esp+30h] [ebp-1Ch] BYREF - int v15; // [esp+34h] [ebp-18h] - - if ( (unsigned __int8)std::has_facet>(a2) ) - v3 = std::use_facet>(a2); - else - v3 = 0; - LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)this + 10); - if ( !(_BYTE)v4 ) - goto LABEL_13; - if ( !this[73] && !this[74] ) - { - *((_DWORD *)this + 23) = v3; - return v4; - } - v5 = *((_DWORD *)this + 23); - if ( !v5 ) - goto LABEL_24; - v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); - if ( v4 == -1 ) - goto LABEL_18; - if ( !this[73] ) - { - if ( !this[74] ) - goto LABEL_13; - LOBYTE(v4) = std::wfilebuf::_M_terminate_output((int)this); - if ( (_BYTE)v4 ) - { - v4 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 1) = v4; - *((_DWORD *)this + 2) = v4; - *((_DWORD *)this + 3) = v4; - *((_DWORD *)this + 6) = 0; - goto LABEL_13; - } -LABEL_18: - *((_DWORD *)this + 23) = 0; - return v4; - } - v6 = *((_DWORD *)this + 23); - if ( !v6 ) -LABEL_24: - std::__throw_bad_cast(); - LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); - if ( !(_BYTE)v4 ) - { - v7 = *((_DWORD *)this + 24); - Src = (const void *)(v7 - + (*(int (__thiscall **)(_DWORD, char *, int, _DWORD, int))(**((_DWORD **)this + 23) + 28))( - *((_DWORD *)this + 23), - this + 60, - v7, - *((_DWORD *)this + 26), - (*((_DWORD *)this + 2) - *((_DWORD *)this + 1)) >> 1)); - v9 = *((_DWORD *)this + 27); - *((_DWORD *)this + 26) = Src; - Size = v9 - (_DWORD)Src; - if ( Size ) - memmove(*((void **)this + 24), Src, Size); - v11 = *((_DWORD *)this + 24); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - *((_DWORD *)this + 26) = v11; - *((_DWORD *)this + 27) = Size + v11; - v12 = *((_DWORD *)this + 16); - *((_DWORD *)this + 6) = 0; - *((_DWORD *)this + 1) = v12; - *((_DWORD *)this + 2) = v12; - *((_DWORD *)this + 3) = v12; - v4 = *((_DWORD *)this + 13); - *((_DWORD *)this + 14) = v4; - *((_DWORD *)this + 15) = v4; - goto LABEL_13; - } - if ( !v3 ) - goto LABEL_18; - LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); - if ( !(_BYTE)v4 ) - { - (*(void (__thiscall **)(int *, char *, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( - &v14, - this, - 0, - 0, - 1, - *((_DWORD *)this + 12)); - LOBYTE(v4) = v14 & v15; - if ( (v14 & v15) == -1 ) - goto LABEL_18; - } -LABEL_13: - *((_DWORD *)this + 23) = v3; - return v4; -} - -//----- (004B5800) -------------------------------------------------------- -int __thiscall std::wfilebuf::setbuf(int this, __int64 a2) -{ - if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) - return this; - if ( !a2 ) - { - *(_DWORD *)(this + 68) = 1; - return this; - } - if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) - return this; - *(_QWORD *)(this + 64) = a2; - return this; -} - -//----- (004B5860) -------------------------------------------------------- -int __thiscall std::wfilebuf::xsgetn(_DWORD *this, char *a2, signed int a3) -{ - char *v4; // edi - signed int v5; // esi - _WORD *v6; // ecx - _WORD *v7; // eax - int v8; // ebp - bool v9; // zf - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // ecx - int v14; // eax - int v15; // ecx - char v16; // al - int v18; // eax - _BYTE *v19; // edx - _BYTE *Src; // eax - int i; // eax - int v22; // eax - int *v23; // eax - int v24; // [esp+1Ch] [ebp-20h] - int v25; // [esp+1Ch] [ebp-20h] - - v4 = a2; - v5 = a3; - if ( *((_BYTE *)this + 88) ) - { - v6 = (_WORD *)this[2]; - v7 = (_WORD *)this[1]; - v8 = 0; - if ( a3 > 0 && v7 == v6 ) - { - v6 = v7 + 1; - v5 = a3 - 1; - v4 = a2 + 2; - v8 = 1; - *(_WORD *)a2 = *v7; - } - v9 = v6 == v7; - v10 = this[20]; - v11 = this[16]; - *((_BYTE *)this + 88) = 0; - this[1] = v11; - v12 = v10 + 2 * !v9; - v13 = this[21]; - this[20] = v12; - this[2] = v12; - this[3] = v13; - } - else if ( *((_BYTE *)this + 74) ) - { - if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*this + 52))(this, 0xFFFF) == 0xFFFF ) - return 0; - v18 = this[16]; - this[5] = 0; - v8 = 0; - this[4] = 0; - this[1] = v18; - this[2] = v18; - this[3] = v18; - this[6] = 0; - *((_BYTE *)this + 74) = 0; - } - else - { - v8 = 0; - } - v14 = 2; - if ( this[17] >= 2u ) - v14 = this[17]; - if ( v5 <= v14 - 1 ) - goto LABEL_12; - v15 = this[23]; - if ( !v15 ) - std::__throw_bad_cast(); - v24 = this[12]; - v16 = (*(int (__fastcall **)(int))(*(_DWORD *)v15 + 24))(v15); - if ( (v24 & 8) != 0 && v16 ) - { - v19 = (_BYTE *)this[3]; - Src = (_BYTE *)this[2]; - if ( Src != v19 ) - { - v25 = v19 - Src; - memcpy(v4, Src, v19 - Src); - this[2] += v25; - v4 += v25; - v8 += v25 >> 1; - v5 -= v25 >> 1; - } - for ( i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5); - ; - i = std::__basic_file::xsgetn((FILE **)this + 10, v4, v5) ) - { - if ( i == -1 ) - { - v23 = __errno(); - std::__throw_ios_failure( - (std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", - (std::runtime_error *)*v23); - } - if ( !i ) - break; - v8 += i; - v5 -= i; - if ( !v5 ) - goto LABEL_26; - v4 += 2 * i; - } - if ( !v5 ) - { -LABEL_26: - *((_BYTE *)this + 73) = 1; - return v8; - } - v22 = this[16]; - this[5] = 0; - this[4] = 0; - this[1] = v22; - this[2] = v22; - this[3] = v22; - this[6] = 0; - *((_BYTE *)this + 73) = 0; - } - else - { -LABEL_12: - v8 += std::wstreambuf::xsgetn(this, v4, v5); - } - return v8; -} - -//----- (004B5A60) -------------------------------------------------------- -int __thiscall std::wfilebuf::xsputn(int this, char *a2, signed int a3) -{ - int v4; // eax - int v5; // ecx - char v6; // si - int v7; // edx - int v8; // eax - unsigned int v9; // ecx - int v10; // esi - int v11; // eax - int v12; // edx - bool v13; // cc - int result; // eax - int v15; // edx - int v16; // ecx - unsigned int v17; // ecx - char *v18; // [esp+0h] [ebp-2Ch] - - v4 = *(_DWORD *)(this + 48); - v5 = *(_DWORD *)(this + 92); - if ( (v4 & 0x10) != 0 ) - LOBYTE(v4) = 1; - v6 = v4 & 1; - if ( !v5 ) - std::__throw_bad_cast(); - if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) - return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); - v7 = *(_DWORD *)(this + 20); - v8 = (*(_DWORD *)(this + 24) - v7) >> 1; - if ( !*(_BYTE *)(this + 74) ) - { - v9 = *(_DWORD *)(this + 68); - if ( v9 > 1 ) - v8 = v9 - 1; - } - if ( v8 >= 1024 ) - v8 = 1024; - if ( a3 < v8 ) - return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); - v18 = *(char **)(this + 16); - v10 = (v7 - (int)v18) >> 1; - v11 = std::__basic_file::xsputn_2((FILE **)(this + 40), v18, v10, a2, a3); - if ( v10 + a3 == v11 ) - { - v15 = *(_DWORD *)(this + 64); - v16 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v15; - *(_DWORD *)(this + 8) = v15; - *(_DWORD *)(this + 12) = v15; - if ( ((v16 & 0x10) != 0 || (v16 & 1) != 0) && (v17 = *(_DWORD *)(this + 68), v17 > 1) ) - { - *(_DWORD *)(this + 20) = v15; - *(_DWORD *)(this + 16) = v15; - *(_DWORD *)(this + 24) = v15 + 2 * v17 - 2; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - *(_BYTE *)(this + 74) = 1; - } - v12 = v11 - v10; - v13 = v10 < v11; - result = 0; - if ( v13 ) - return v12; - return result; -} - -//----- (004B5B90) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) -{ - _DWORD *result; // eax - __int64 v7; // rax - int v8; // ecx - int v9; // ecx - - *this = -1; - this[1] = -1; - this[2] = 0; - if ( !(unsigned __int8)std::wfilebuf::_M_terminate_output(a2) ) - return this; - v7 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, a4); - if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) - return this; - *this = v7; - result = this; - *(_WORD *)(a2 + 73) = 0; - v8 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 20) = 0; - *(_DWORD *)(a2 + 108) = v8; - *(_DWORD *)(a2 + 104) = v8; - v9 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 4) = v9; - *(_DWORD *)(a2 + 8) = v9; - *(_DWORD *)(a2 + 12) = v9; - *(_DWORD *)(a2 + 24) = 0; - *(_DWORD *)(a2 + 56) = a5; - this[2] = a5; - this[1] = HIDWORD(v7); - return result; -} - -//----- (004B5C40) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) -{ - int v6; // ecx - int v7; // eax - int v8; // edx - bool v9; // al - bool v11; // zf - __int64 v12; // rax - __int64 v13; // rax - int v14; // eax - int v15; // edx - unsigned int v16; // esi - unsigned int v17; // edi - __int64 v18; // kr00_8 - __int64 ext_pos; // [esp+28h] [ebp-54h] - bool v20; // [esp+34h] [ebp-48h] - int v21; // [esp+34h] [ebp-48h] - int v22; // [esp+3Ch] [ebp-40h] - int v23; // [esp+4Ch] [ebp-30h] BYREF - int v24[11]; // [esp+50h] [ebp-2Ch] BYREF - - v6 = *(_DWORD *)(a2 + 92); - if ( v6 ) - { - v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); - v8 = 0; - if ( v7 >= 0 ) - v8 = v7; - v9 = v7 <= 0; - v22 = v8; - } - else - { - v22 = 0; - v9 = 1; - } - *this = -1; - this[1] = -1; - this[2] = 0; - v20 = v9 && a3 != 0; - if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v20 ) - return this; - if ( a4 != 1 - || a3 - || *(_BYTE *)(a2 + 74) - && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 92) + 24))(*(_DWORD *)(a2 + 92)) ) - { - if ( *(_BYTE *)(a2 + 88) ) - { - v11 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); - *(_BYTE *)(a2 + 88) = 0; - v14 = *(_DWORD *)(a2 + 80) + 2 * !v11; - v15 = *(_DWORD *)(a2 + 84); - *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 80) = v14; - *(_DWORD *)(a2 + 8) = v14; - *(_DWORD *)(a2 + 12) = v15; - } - v21 = *(_DWORD *)(a2 + 52); - v23 = v21; - v16 = a3 * v22; - v17 = (unsigned __int64)(a3 * v22) >> 32; - if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) - { - v23 = *(_DWORD *)(a2 + 60); - v18 = std::wfilebuf::_M_get_ext_pos(a2, (int)&v23) + __PAIR64__(v17, v16); - std::wfilebuf::_M_seek(v24, a2, v18, 1, v23); - } - else - { - std::wfilebuf::_M_seek(v24, a2, __SPAIR64__(v17, v16), a4, v21); - } - *this = v24[0]; - this[1] = v24[1]; - this[2] = v24[2]; - return this; - } - v11 = *(_BYTE *)(a2 + 73) == 0; - ext_pos = 0LL; - v23 = *(_DWORD *)(a2 + 52); - if ( !v11 ) - { - v23 = *(_DWORD *)(a2 + 60); - ext_pos = std::wfilebuf::_M_get_ext_pos(a2, (int)&v23); - } - if ( *(_BYTE *)(a2 + 74) ) - ext_pos = (*(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16)) >> 1; - v12 = std::__basic_file::seekoff((FILE **)(a2 + 40), 0LL, 1); - if ( ((unsigned int)v12 & HIDWORD(v12)) == -1 ) - return this; - v13 = ext_pos + v12; - *this = v13; - LODWORD(v13) = v23; - this[1] = HIDWORD(v13); - this[2] = v13; - return this; -} - -//----- (004B5EB0) -------------------------------------------------------- -_DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) -{ - bool v7; // zf - int v8; // eax - int v9; // edx - int v10; // ebp - __int64 v11; // rax - int v13; // ecx - int v14; // ecx - - *this = -1; - this[1] = -1; - this[2] = 0; - if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) - { - if ( *(_BYTE *)(a2 + 88) ) - { - v7 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); - *(_BYTE *)(a2 + 88) = 0; - v8 = *(_DWORD *)(a2 + 80) + 2 * !v7; - v9 = *(_DWORD *)(a2 + 84); - *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 80) = v8; - *(_DWORD *)(a2 + 8) = v8; - *(_DWORD *)(a2 + 12) = v9; - } - v10 = a4; - if ( (unsigned __int8)std::wfilebuf::_M_terminate_output(a2) ) - { - v11 = std::__basic_file::seekoff((FILE **)(a2 + 40), a3, 0); - if ( ((unsigned int)v11 & HIDWORD(v11)) == -1 ) - { - v10 = 0; - } - else - { - *(_DWORD *)(a2 + 20) = 0; - *(_WORD *)(a2 + 73) = 0; - v13 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 108) = v13; - *(_DWORD *)(a2 + 104) = v13; - v14 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 24) = 0; - *(_DWORD *)(a2 + 4) = v14; - *(_DWORD *)(a2 + 8) = v14; - *(_DWORD *)(a2 + 12) = v14; - *(_DWORD *)(a2 + 56) = a4; - } - } - else - { - v10 = 0; - v11 = -1LL; - } - *(_QWORD *)this = v11; - this[2] = v10; - } - return this; -} - -//----- (004B5FE0) -------------------------------------------------------- -int __thiscall std::wfilebuf::overflow(int this, int a2) -{ - int v3; // eax - int v4; // edx - int v5; // ecx - int ext_pos; // eax - int v7; // ebp - int v8; // edi - int result; // eax - char *v10; // edx - char *v11; // eax - int v12; // eax - int v13; // edx - __int64 v14; // rax - int v15; // eax - int v16; // eax - unsigned int v17; // eax - int v18; // edx - int v19; // ecx - _WORD *v20; // eax - unsigned int v21; // edx - __int16 v22[15]; // [esp+1Eh] [ebp-1Eh] BYREF - - if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) - return -1; - if ( *(_BYTE *)(this + 73) ) - { - if ( *(_BYTE *)(this + 88) ) - { - v3 = *(_DWORD *)(this + 80) + 2 * (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); - v4 = *(_DWORD *)(this + 84); - *(_DWORD *)(this + 80) = v3; - v5 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 8) = v3; - *(_DWORD *)(this + 4) = v5; - *(_DWORD *)(this + 12) = v4; - *(_BYTE *)(this + 88) = 0; - } - ext_pos = std::wfilebuf::_M_get_ext_pos(this, this + 60); - v7 = *(_DWORD *)(this + 60); - v8 = ext_pos; - if ( (unsigned __int8)std::wfilebuf::_M_terminate_output(this) ) - { - v14 = std::__basic_file::seekoff((FILE **)(this + 40), v8, 1); - if ( ((unsigned int)v14 & HIDWORD(v14)) != -1 ) - { - *(_DWORD *)(this + 20) = 0; - *(_WORD *)(this + 73) = 0; - v15 = *(_DWORD *)(this + 96); - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 108) = v15; - *(_DWORD *)(this + 104) = v15; - v16 = *(_DWORD *)(this + 64); - *(_DWORD *)(this + 24) = 0; - *(_DWORD *)(this + 4) = v16; - *(_DWORD *)(this + 8) = v16; - *(_DWORD *)(this + 12) = v16; - *(_DWORD *)(this + 56) = v7; - goto LABEL_19; - } - } - return -1; - } - v10 = *(char **)(this + 16); - v11 = *(char **)(this + 20); - if ( v11 <= v10 ) - { -LABEL_19: - v17 = *(_DWORD *)(this + 68); - if ( v17 <= 1 ) - { - v22[0] = a2; - if ( (_WORD)a2 == 0xFFFF ) - { - *(_BYTE *)(this + 74) = 1; - return 0; - } - if ( std::wfilebuf::_M_convert_to_external(this, (char *)v22, 1u) ) - { - *(_BYTE *)(this + 74) = 1; - return a2; - } - return -1; - } - v18 = *(_DWORD *)(this + 64); - v19 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v18; - *(_DWORD *)(this + 8) = v18; - *(_DWORD *)(this + 12) = v18; - if ( (v19 & 0x10) != 0 || (v19 & 1) != 0 ) - { - *(_DWORD *)(this + 20) = v18; - *(_DWORD *)(this + 16) = v18; - *(_DWORD *)(this + 24) = v18 + 2 * v17 - 2; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - *(_BYTE *)(this + 74) = 1; - if ( (_WORD)a2 != 0xFFFF ) - { - v20 = *(_WORD **)(this + 20); - *v20 = a2; - *(_DWORD *)(this + 20) = v20 + 1; - return a2; - } - return 0; - } - if ( (_WORD)a2 != 0xFFFF ) - { - *(_WORD *)v11 = a2; - v11 += 2; - *(_DWORD *)(this + 20) = v11; - } - if ( !std::wfilebuf::_M_convert_to_external(this, v10, (v11 - v10) >> 1) ) - return -1; - v12 = *(_DWORD *)(this + 64); - v13 = *(_DWORD *)(this + 48); - *(_DWORD *)(this + 4) = v12; - *(_DWORD *)(this + 8) = v12; - *(_DWORD *)(this + 12) = v12; - if ( ((v13 & 0x10) != 0 || (v13 & 1) != 0) && (v21 = *(_DWORD *)(this + 68), v21 > 1) ) - { - *(_DWORD *)(this + 20) = v12; - *(_DWORD *)(this + 16) = v12; - *(_DWORD *)(this + 24) = v12 + 2 * v21 - 2; - } - else - { - *(_DWORD *)(this + 20) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 24) = 0; - } - result = a2; - if ( (_WORD)a2 == 0xFFFF ) - return 0; - return result; -} -// 4B5FE0: using guessed type __int16 var_1E[15]; - -//----- (004B6230) -------------------------------------------------------- -int __thiscall std::wfilebuf::pbackfail(char *this, int a2) -{ - char v3; // di - unsigned int v4; // eax - int v5; // edx - int result; // eax - char *v7; // eax - int v8; // eax - int v9; // eax - int v10[7]; // [esp+24h] [ebp-1Ch] BYREF - - if ( (this[48] & 8) == 0 ) - return -1; - if ( this[74] ) - { - if ( (*(unsigned __int16 (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, 0xFFFF) == 0xFFFF ) - return -1; - v9 = *((_DWORD *)this + 16); - *((_DWORD *)this + 5) = 0; - *((_DWORD *)this + 4) = 0; - v3 = this[88]; - *((_DWORD *)this + 1) = v9; - *((_DWORD *)this + 2) = v9; - *((_DWORD *)this + 3) = v9; - *((_DWORD *)this + 6) = 0; - this[74] = 0; - } - else - { - v3 = this[88]; - v4 = *((_DWORD *)this + 2); - if ( v4 > *((_DWORD *)this + 1) ) - { - *((_DWORD *)this + 2) = v4 - 2; - v5 = *(unsigned __int16 *)(v4 - 2); - goto LABEL_5; - } - } - (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); - if ( (v10[0] & v10[1]) == -1 ) - return -1; - v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); - if ( (_WORD)v5 == 0xFFFF ) - return -1; -LABEL_5: - result = 0; - if ( (_WORD)a2 == 0xFFFF ) - return result; - result = v5; - if ( (_WORD)v5 == (_WORD)a2 ) - return result; - if ( v3 ) - return -1; - v7 = (char *)*((_DWORD *)this + 2); - if ( !this[88] ) - { - *((_DWORD *)this + 20) = v7; - v8 = *((_DWORD *)this + 3); - *((_DWORD *)this + 3) = this + 78; - *((_DWORD *)this + 21) = v8; - v7 = this + 76; - *((_DWORD *)this + 1) = this + 76; - *((_DWORD *)this + 2) = this + 76; - this[88] = 1; - } - this[73] = 1; - *(_WORD *)v7 = a2; - return a2; -} - -//----- (004B6360) -------------------------------------------------------- -int __fastcall std::wfilebuf::showmanyc(_DWORD *a1) -{ - int v1; // edi - FILE **v2; // ebp - int v4; // ecx - int v5; // edi - int v6; // esi - int v8; // edi - - v1 = a1[12]; - if ( (v1 & 8) == 0 ) - return -1; - v2 = (FILE **)(a1 + 10); - if ( !std::__basic_file::is_open(a1 + 10) ) - return -1; - v4 = a1[23]; - v5 = v1 & 4; - v6 = (a1[3] - a1[2]) >> 1; - if ( !v4 ) - std::__throw_bad_cast(); - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) - return v6; - v8 = std::__basic_file::showmanyc(v2); - return v8 / (*(int (**)(void))(*(_DWORD *)a1[23] + 32))() + v6; -} - -//----- (004B63F0) -------------------------------------------------------- -int __fastcall std::wfilebuf::underflow(int a1) -{ - unsigned __int16 *v2; // eax - int v3; // edi - int v4; // ecx - int v5; // eax - signed int v6; // esi - int v7; // ecx - const void *Src; // eax - signed int Size; // edi - unsigned int v10; // edx - signed int v11; // ecx - char *v12; // ebp - int v13; // ecx - char *v14; // eax - void *v15; // edx - int v16; // esi - char v17; // di - int v18; // ebp - char v19; // al - int v20; // eax - int v21; // eax - int result; // eax - bool v23; // zf - int v24; // eax - int v25; // ecx - unsigned int v26; // edx - int v27; // eax - int v28; // eax - unsigned int v29; // ecx - char *v30; // eax - unsigned int v31; // esi - unsigned __int16 *v32; // eax - int v33; // eax - int *v34; // eax - char *v35; // eax - char *v36; // eax - char *v37; // eax - unsigned int v38; // [esp+44h] [ebp-34h] - unsigned int v39; // [esp+48h] [ebp-30h] - unsigned int v40; // [esp+48h] [ebp-30h] - unsigned int v41; // [esp+48h] [ebp-30h] - unsigned int v42; // [esp+48h] [ebp-30h] - unsigned int v43; // [esp+48h] [ebp-30h] - void *v44; // [esp+58h] [ebp-20h] BYREF - - if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) - return -1; - if ( *(_BYTE *)(a1 + 74) ) - { - result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, 0xFFFF); - if ( (_WORD)result == 0xFFFF ) - return result; - v2 = *(unsigned __int16 **)(a1 + 64); - v23 = *(_BYTE *)(a1 + 88) == 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v2; - *(_DWORD *)(a1 + 8) = v2; - *(_DWORD *)(a1 + 12) = v2; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 74) = 0; - if ( v23 ) - { -LABEL_4: - if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v2 ) - goto LABEL_5; - return *v2; - } - } - else - { - v2 = *(unsigned __int16 **)(a1 + 8); - if ( !*(_BYTE *)(a1 + 88) ) - goto LABEL_4; - } - v23 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; - v24 = *(_DWORD *)(a1 + 80); - *(_BYTE *)(a1 + 88) = 0; - v25 = *(_DWORD *)(a1 + 64); - v2 = (unsigned __int16 *)(v24 + 2 * !v23); - v26 = *(_DWORD *)(a1 + 84); - *(_DWORD *)(a1 + 80) = v2; - *(_DWORD *)(a1 + 4) = v25; - *(_DWORD *)(a1 + 8) = v2; - *(_DWORD *)(a1 + 12) = v26; - if ( v26 > (unsigned int)v2 ) - return *v2; -LABEL_5: - v3 = 2; - if ( *(_DWORD *)(a1 + 68) >= 2u ) - v3 = *(_DWORD *)(a1 + 68); - v4 = *(_DWORD *)(a1 + 92); - v38 = v3 - 1; - if ( !v4 ) - std::__throw_bad_cast(); - if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) - { - v5 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 20))(*(_DWORD *)(a1 + 92)); - if ( v5 <= 0 ) - { - v33 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 32))(*(_DWORD *)(a1 + 92)); - v7 = v3 - 1; - v6 = v3 + v33 - 2; - } - else - { - v6 = v38 * v5; - v7 = v38 * v5; - } - Src = *(const void **)(a1 + 104); - Size = *(_DWORD *)(a1 + 108) - (_DWORD)Src; - v10 = v7 - Size; - if ( v7 <= Size ) - v10 = 0; - v11 = *(_DWORD *)(a1 + 100); - if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 4) == *(_DWORD *)(a1 + 12) ) - { - if ( !Size ) - { - if ( v6 <= v11 ) - { - v12 = *(char **)(a1 + 96); - goto LABEL_17; - } - v43 = v10; - v37 = (char *)operator new[](v6); - v10 = v43; - v12 = v37; -LABEL_62: - if ( *(_DWORD *)(a1 + 96) ) - { - v40 = v10; - operator delete[](*(void **)(a1 + 96)); - v10 = v40; - } - *(_DWORD *)(a1 + 96) = v12; - *(_DWORD *)(a1 + 100) = v6; -LABEL_17: - v13 = *(_DWORD *)(a1 + 56); - v14 = &v12[Size]; - *(_DWORD *)(a1 + 104) = v12; - *(_DWORD *)(a1 + 108) = &v12[Size]; - *(_DWORD *)(a1 + 60) = v13; - if ( v10 ) - { - v16 = 0; - goto LABEL_25; - } - v15 = *(void **)(a1 + 4); - v16 = 0; - v44 = v15; - if ( v14 <= v12 ) - { - while ( 1 ) - { -LABEL_24: - v14 = *(char **)(a1 + 108); - v10 = 1; - Size = (signed int)&v14[-*(_DWORD *)(a1 + 96)]; -LABEL_25: - if ( (signed int)(v10 + Size) > *(_DWORD *)(a1 + 100) ) - std::__throw_ios_failure("basic_filebuf::underflow codecvt::max_length() is not valid"); - v20 = std::__basic_file::xsgetn((FILE **)(a1 + 40), v14, v10); - if ( v20 ) - { - if ( v20 == -1 ) - goto LABEL_59; - v17 = 0; - } - else - { - v17 = 1; - } - v15 = *(void **)(a1 + 4); - v12 = *(char **)(a1 + 104); - v14 = (char *)(*(_DWORD *)(a1 + 108) + v20); - *(_DWORD *)(a1 + 108) = v14; - v44 = v15; - if ( v14 > v12 ) - break; - if ( v16 == 3 ) - goto LABEL_44; - if ( v17 ) - goto LABEL_32; - } - } - else - { - v17 = 0; - } - v16 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, void *, unsigned int, void **))(**(_DWORD **)(a1 + 92) + 16))( - *(_DWORD *)(a1 + 92), - a1 + 56, - v12, - v14, - a1 + 104, - v15, - (unsigned int)v15 + 2 * v38, - &v44); - if ( v16 != 3 ) - { - v18 = ((int)v44 - *(_DWORD *)(a1 + 4)) >> 1; - if ( v16 != 2 ) - { - v19 = v17 | (v44 != *(void **)(a1 + 4)); - goto LABEL_23; - } - if ( (int)v44 - *(_DWORD *)(a1 + 4) <= 0 ) - { - if ( !v17 ) - std::__throw_ios_failure("basic_filebuf::underflow invalid byte sequence in file"); - goto LABEL_41; - } - goto LABEL_54; - } - v14 = *(char **)(a1 + 108); - v15 = *(void **)(a1 + 4); -LABEL_44: - v29 = *(_DWORD *)(a1 + 96); - v30 = &v14[-v29]; - v18 = (int)v30; - v31 = (unsigned int)v30; - if ( v38 < (unsigned int)v30 ) - { - v31 = v38; - v18 = v38; - } - else if ( !v30 ) - { -LABEL_46: - *(_DWORD *)(a1 + 104) = v29; - v16 = 3; - v19 = v17 | (v18 != 0); -LABEL_23: - if ( !v19 ) - goto LABEL_24; - if ( v18 > 0 ) - goto LABEL_54; - if ( v17 ) - { -LABEL_32: - v21 = *(_DWORD *)(a1 + 64); - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v21; - *(_DWORD *)(a1 + 8) = v21; - *(_DWORD *)(a1 + 12) = v21; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 0; - if ( v16 == 1 ) - std::__throw_ios_failure("basic_filebuf::underflow incomplete character in file"); - return -1; - } -LABEL_59: - v34 = __errno(); - std::__throw_ios_failure( - (std::__ios_failure *)"basic_filebuf::underflow error reading the file", - (std::runtime_error *)*v34); - } - memcpy(v15, *(const void **)(a1 + 96), 2 * v31); - v29 = v31 + *(_DWORD *)(a1 + 96); - goto LABEL_46; - } - if ( v6 <= v11 ) - { - v12 = *(char **)(a1 + 96); - v10 = 0; -LABEL_73: - v42 = v10; - memmove(v12, Src, Size); - v12 = *(char **)(a1 + 96); - v10 = v42; - goto LABEL_17; - } - v36 = (char *)operator new[](v6); - v10 = 0; - v12 = v36; - } - else - { - if ( v6 <= v11 ) - { - v12 = *(char **)(a1 + 96); - if ( !Size ) - goto LABEL_17; - goto LABEL_73; - } - v39 = v10; - v35 = (char *)operator new[](v6); - v10 = v39; - v12 = v35; - if ( !Size ) - goto LABEL_62; - } - v41 = v10; - memcpy(v12, *(const void **)(a1 + 104), Size); - v10 = v41; - goto LABEL_62; - } - v27 = std::__basic_file::xsgetn((FILE **)(a1 + 40), *(void **)(a1 + 4), v38); - v18 = v27; - if ( !v27 ) - { -LABEL_41: - v28 = *(_DWORD *)(a1 + 64); - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 4) = v28; - *(_DWORD *)(a1 + 8) = v28; - *(_DWORD *)(a1 + 12) = v28; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 0; - return -1; - } - if ( v27 <= 0 ) - goto LABEL_59; -LABEL_54: - v32 = *(unsigned __int16 **)(a1 + 64); - v23 = (*(_BYTE *)(a1 + 48) & 8) == 0; - *(_DWORD *)(a1 + 4) = v32; - *(_DWORD *)(a1 + 8) = v32; - if ( v23 ) - *(_DWORD *)(a1 + 12) = v32; - else - *(_DWORD *)(a1 + 12) = &v32[v18]; - *(_DWORD *)(a1 + 20) = 0; - result = *v32; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_BYTE *)(a1 + 73) = 1; - return result; -} - -//----- (004B68A0) -------------------------------------------------------- -int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *a2) -{ - int v3; // eax - int v4; // edx - int v5; // edi - int v6; // ecx - int v7; // eax - int result; // eax - int v9; // edi - int v10; // edx - int v11; // edx - int v12; // edx - int v13; // edx - int v14; // edx - int v15; // edx - int v16; // edx - const std::locale *v17; // [esp+4h] [ebp-18h] - - std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); - v3 = *((_DWORD *)a2 + 10); - v4 = *((_DWORD *)a2 + 17); - *(_DWORD *)this = off_51AA90; - v5 = *((_DWORD *)a2 + 14); - v6 = *((_DWORD *)a2 + 16); - *(_DWORD *)(this + 32) = 0; - *(_DWORD *)(this + 40) = v3; - LOBYTE(v3) = *((_BYTE *)a2 + 44); - *(_DWORD *)(this + 36) = 0; - *(_BYTE *)(this + 44) = v3; - v7 = *((_DWORD *)a2 + 12); - *((_DWORD *)a2 + 10) = 0; - *((_BYTE *)a2 + 44) = 0; - *(_DWORD *)(this + 68) = v4; - LOWORD(v4) = *((_WORD *)a2 + 36); - *(_DWORD *)(this + 48) = v7; - result = *((_DWORD *)a2 + 13); - *(_WORD *)(this + 72) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 74); - *(_DWORD *)(this + 56) = v5; - v9 = *((_DWORD *)a2 + 15); - *(_BYTE *)(this + 74) = v4; - LOWORD(v4) = *((_WORD *)a2 + 38); - *(_DWORD *)(this + 64) = v6; - *(_DWORD *)(this + 60) = v9; - *((_DWORD *)a2 + 12) = 0; - *(_DWORD *)(this + 52) = result; - *((_DWORD *)a2 + 16) = 0; - *((_DWORD *)a2 + 17) = 1; - *((_WORD *)a2 + 36) = 0; - *((_BYTE *)a2 + 74) = 0; - *(_WORD *)(this + 76) = v4; - v10 = *((_DWORD *)a2 + 20); - *((_DWORD *)a2 + 20) = 0; - *(_DWORD *)(this + 80) = v10; - v11 = *((_DWORD *)a2 + 21); - *((_DWORD *)a2 + 1) = 0; - *(_DWORD *)(this + 84) = v11; - LOBYTE(v11) = *((_BYTE *)a2 + 88); - *((_DWORD *)a2 + 21) = 0; - *(_BYTE *)(this + 88) = v11; - v12 = *((_DWORD *)a2 + 23); - *((_BYTE *)a2 + 88) = 0; - *(_DWORD *)(this + 92) = v12; - v13 = *((_DWORD *)a2 + 24); - *((_DWORD *)a2 + 2) = 0; - *(_DWORD *)(this + 96) = v13; - v14 = *((_DWORD *)a2 + 25); - *((_DWORD *)a2 + 24) = 0; - *(_DWORD *)(this + 100) = v14; - v15 = *((_DWORD *)a2 + 26); - *((_DWORD *)a2 + 25) = 0; - *(_DWORD *)(this + 104) = v15; - v16 = *((_DWORD *)a2 + 27); - *((_DWORD *)a2 + 26) = 0; - *(_DWORD *)(this + 108) = v16; - *((_DWORD *)a2 + 27) = 0; - *((_DWORD *)a2 + 3) = 0; - *((_DWORD *)a2 + 5) = 0; - *((_DWORD *)a2 + 4) = 0; - *((_DWORD *)a2 + 6) = 0; - *((_DWORD *)a2 + 14) = result; - *((_DWORD *)a2 + 15) = result; - return result; -} -// 4B68AF: variable 'v17' is possibly undefined -// 51AA90: using guessed type int (*off_51AA90[2])(); - -//----- (004B69E0) -------------------------------------------------------- -void __fastcall std::wfilebuf::basic_filebuf(int a1) -{ - int v2; // [esp+20h] [ebp-4Ch] - - *(_DWORD *)a1 = &off_51AE14; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - v2 = a1 + 28; - std::locale::locale((_DWORD *)(a1 + 28)); - *(_DWORD *)a1 = off_51AA90; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); - *(_WORD *)(a1 + 72) = 0; - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 60) = 0; - *(_DWORD *)(a1 + 64) = 0; - *(_DWORD *)(a1 + 68) = 512; - *(_BYTE *)(a1 + 74) = 0; - *(_WORD *)(a1 + 76) = 0; - *(_DWORD *)(a1 + 80) = 0; - *(_DWORD *)(a1 + 84) = 0; - *(_BYTE *)(a1 + 88) = 0; - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - *(_DWORD *)(a1 + 108) = 0; - if ( (unsigned __int8)std::has_facet>(v2) ) - *(_DWORD *)(a1 + 92) = std::use_facet>(v2); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004B6B80) -------------------------------------------------------- -int __thiscall std::wfilebuf::basic_filebuf(int this, std::locale *a2) -{ - int v3; // eax - int v4; // edx - int v5; // edi - int v6; // ecx - int v7; // eax - int result; // eax - int v9; // edi - int v10; // edx - int v11; // edx - int v12; // edx - int v13; // edx - int v14; // edx - int v15; // edx - int v16; // edx - const std::locale *v17; // [esp+4h] [ebp-18h] - - std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); - v3 = *((_DWORD *)a2 + 10); - v4 = *((_DWORD *)a2 + 17); - *(_DWORD *)this = off_51AA90; - v5 = *((_DWORD *)a2 + 14); - v6 = *((_DWORD *)a2 + 16); - *(_DWORD *)(this + 32) = 0; - *(_DWORD *)(this + 40) = v3; - LOBYTE(v3) = *((_BYTE *)a2 + 44); - *(_DWORD *)(this + 36) = 0; - *(_BYTE *)(this + 44) = v3; - v7 = *((_DWORD *)a2 + 12); - *((_DWORD *)a2 + 10) = 0; - *((_BYTE *)a2 + 44) = 0; - *(_DWORD *)(this + 68) = v4; - LOWORD(v4) = *((_WORD *)a2 + 36); - *(_DWORD *)(this + 48) = v7; - result = *((_DWORD *)a2 + 13); - *(_WORD *)(this + 72) = v4; - LOBYTE(v4) = *((_BYTE *)a2 + 74); - *(_DWORD *)(this + 56) = v5; - v9 = *((_DWORD *)a2 + 15); - *(_BYTE *)(this + 74) = v4; - LOWORD(v4) = *((_WORD *)a2 + 38); - *(_DWORD *)(this + 64) = v6; - *(_DWORD *)(this + 60) = v9; - *((_DWORD *)a2 + 12) = 0; - *(_DWORD *)(this + 52) = result; - *((_DWORD *)a2 + 16) = 0; - *((_DWORD *)a2 + 17) = 1; - *((_WORD *)a2 + 36) = 0; - *((_BYTE *)a2 + 74) = 0; - *(_WORD *)(this + 76) = v4; - v10 = *((_DWORD *)a2 + 20); - *((_DWORD *)a2 + 20) = 0; - *(_DWORD *)(this + 80) = v10; - v11 = *((_DWORD *)a2 + 21); - *((_DWORD *)a2 + 1) = 0; - *(_DWORD *)(this + 84) = v11; - LOBYTE(v11) = *((_BYTE *)a2 + 88); - *((_DWORD *)a2 + 21) = 0; - *(_BYTE *)(this + 88) = v11; - v12 = *((_DWORD *)a2 + 23); - *((_BYTE *)a2 + 88) = 0; - *(_DWORD *)(this + 92) = v12; - v13 = *((_DWORD *)a2 + 24); - *((_DWORD *)a2 + 2) = 0; - *(_DWORD *)(this + 96) = v13; - v14 = *((_DWORD *)a2 + 25); - *((_DWORD *)a2 + 24) = 0; - *(_DWORD *)(this + 100) = v14; - v15 = *((_DWORD *)a2 + 26); - *((_DWORD *)a2 + 25) = 0; - *(_DWORD *)(this + 104) = v15; - v16 = *((_DWORD *)a2 + 27); - *((_DWORD *)a2 + 26) = 0; - *(_DWORD *)(this + 108) = v16; - *((_DWORD *)a2 + 27) = 0; - *((_DWORD *)a2 + 3) = 0; - *((_DWORD *)a2 + 5) = 0; - *((_DWORD *)a2 + 4) = 0; - *((_DWORD *)a2 + 6) = 0; - *((_DWORD *)a2 + 14) = result; - *((_DWORD *)a2 + 15) = result; - return result; -} -// 4B6B8F: variable 'v17' is possibly undefined -// 51AA90: using guessed type int (*off_51AA90[2])(); - -//----- (004B6CC0) -------------------------------------------------------- -void __fastcall std::wfilebuf::basic_filebuf(int a1) -{ - int v2; // [esp+20h] [ebp-4Ch] - - *(_DWORD *)a1 = &off_51AE14; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - v2 = a1 + 28; - std::locale::locale((_DWORD *)(a1 + 28)); - *(_DWORD *)a1 = off_51AA90; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::__basic_file::__basic_file((_BYTE *)(a1 + 40), a1 + 32); - *(_WORD *)(a1 + 72) = 0; - *(_DWORD *)(a1 + 48) = 0; - *(_DWORD *)(a1 + 52) = 0; - *(_DWORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 60) = 0; - *(_DWORD *)(a1 + 64) = 0; - *(_DWORD *)(a1 + 68) = 512; - *(_BYTE *)(a1 + 74) = 0; - *(_WORD *)(a1 + 76) = 0; - *(_DWORD *)(a1 + 80) = 0; - *(_DWORD *)(a1 + 84) = 0; - *(_BYTE *)(a1 + 88) = 0; - *(_DWORD *)(a1 + 92) = 0; - *(_DWORD *)(a1 + 96) = 0; - *(_DWORD *)(a1 + 100) = 0; - *(_DWORD *)(a1 + 104) = 0; - *(_DWORD *)(a1 + 108) = 0; - if ( (unsigned __int8)std::has_facet>(v2) ) - *(_DWORD *)(a1 + 92) = std::use_facet>(v2); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004B6E60) -------------------------------------------------------- -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA90; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)a1 + 7); - operator delete(a1); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004B6F10) -------------------------------------------------------- -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA90; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004B6FB0) -------------------------------------------------------- -void __fastcall std::wfilebuf::~wfilebuf(struct _Unwind_Exception *a1) -{ - *(_DWORD *)a1 = off_51AA90; - std::wfilebuf::close(a1); - std::__basic_file::~__basic_file((int)a1 + 40); - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)a1 + 7); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004B7050) -------------------------------------------------------- -int __thiscall std::wfilebuf::operator=(int this, int a2) -{ - int v3; // eax - char v4; // dl - int v5; // eax - int v6; // eax - int v7; // eax - int v8; // eax - int v9; // eax - int v10; // eax - int v11; // eax - int v12; // eax - int v13; // eax - int v14; // eax - int v15; // eax - int result; // eax - - std::wfilebuf::close((struct _Unwind_Exception *)this); - std::wstreambuf::operator=((volatile signed __int32 **)this, a2); - v3 = *(_DWORD *)(this + 40); - *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); - v4 = *(_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 40) = v3; - LOBYTE(v3) = *(_BYTE *)(this + 44); - *(_BYTE *)(this + 44) = v4; - *(_BYTE *)(a2 + 44) = v3; - v5 = *(_DWORD *)(a2 + 48); - *(_DWORD *)(a2 + 48) = 0; - *(_DWORD *)(this + 48) = v5; - *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); - *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); - *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); - v6 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 64) = 0; - *(_DWORD *)(this + 64) = v6; - v7 = *(_DWORD *)(a2 + 68); - *(_DWORD *)(a2 + 68) = 1; - *(_DWORD *)(this + 68) = v7; - LOBYTE(v7) = *(_BYTE *)(a2 + 72); - *(_BYTE *)(a2 + 72) = 0; - *(_BYTE *)(this + 72) = v7; - v8 = *(_DWORD *)(a2 + 96); - *(_DWORD *)(a2 + 96) = 0; - *(_DWORD *)(this + 96) = v8; - v9 = *(_DWORD *)(a2 + 100); - *(_DWORD *)(a2 + 100) = 0; - *(_DWORD *)(this + 100) = v9; - v10 = *(_DWORD *)(a2 + 104); - *(_DWORD *)(a2 + 104) = 0; - *(_DWORD *)(this + 104) = v10; - v11 = *(_DWORD *)(a2 + 108); - *(_DWORD *)(a2 + 108) = 0; - *(_DWORD *)(this + 108) = v11; - LOBYTE(v11) = *(_BYTE *)(a2 + 73); - *(_BYTE *)(a2 + 73) = 0; - *(_BYTE *)(this + 73) = v11; - LOBYTE(v11) = *(_BYTE *)(a2 + 74); - *(_BYTE *)(a2 + 74) = 0; - *(_BYTE *)(this + 74) = v11; - v12 = *(_DWORD *)(a2 + 80); - *(_DWORD *)(a2 + 80) = 0; - *(_DWORD *)(this + 80) = v12; - v13 = *(_DWORD *)(a2 + 84); - *(_DWORD *)(a2 + 84) = 0; - *(_DWORD *)(this + 84) = v13; - LOBYTE(v13) = *(_BYTE *)(a2 + 88); - *(_BYTE *)(a2 + 88) = 0; - *(_BYTE *)(this + 88) = v13; - v14 = *(_DWORD *)(a2 + 64); - *(_DWORD *)(a2 + 20) = 0; - *(_DWORD *)(a2 + 4) = v14; - *(_DWORD *)(a2 + 8) = v14; - *(_DWORD *)(a2 + 12) = v14; - v15 = *(_DWORD *)(a2 + 52); - *(_DWORD *)(a2 + 16) = 0; - *(_DWORD *)(a2 + 56) = v15; - *(_DWORD *)(a2 + 60) = v15; - result = this; - *(_DWORD *)(a2 + 24) = 0; - return result; -} - -//----- (004B7170) -------------------------------------------------------- -int __thiscall std::fstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 3, a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004B71E0) -------------------------------------------------------- -int __thiscall std::fstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 3, a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004B7250) -------------------------------------------------------- -int __thiscall std::fstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 3, *a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004B72C0) -------------------------------------------------------- -void __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // edi - std::ios_base *v4; // esi - std::ios_base *v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::filebuf::swap((int)(this + 3), (int)(a2 + 3)); -} -// 4B7300: variable 'v9' is possibly undefined - -//----- (004B7390) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::fstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::filebuf::close((struct _Unwind_Exception *)(a1 + 3)); - if ( !result ) - return (struct _Unwind_Exception *)std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004B73D0) -------------------------------------------------------- -bool __fastcall std::fstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 52)); -} - -//----- (004B73E0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+0h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 30; - std::ios_base::ios_base(this + 30); - *((_WORD *)this + 118) = 0; - v2 = a2[1]; - *this = &unk_51598C; - this[1] = v2; - this[58] = 0; - v3 = *a2; - this[60] = 0; - this[61] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[30] = &unk_5159A0; - this[62] = 0; - this[63] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 57)); - this[60] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[58] = v5; - *((_WORD *)this + 118) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; - *this = off_51AAD4; - this[30] = off_51AAFC; - this[2] = off_51AAE8; - std::filebuf::basic_filebuf((int)(this + 3), (std::locale *)(a2 + 3)); - this[60] = this + 3; -} -// 4B7572: positive sp value 4 has been found -// 4B7485: variable 'v6' is possibly undefined -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); - -//----- (004B7580) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+24h] [ebp-44h] - - v5 = this + 30; - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_51598C; - this[30] = &unk_5159A0; - this[1] = 0; - std::ios::init((int)v5, 0); - this[2] = &unk_5159B4; - this[30] = &unk_5159C8; - std::ios::init((int)v5, 0); - *this = off_51AAD4; - this[30] = off_51AAFC; - this[2] = off_51AAE8; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)v5, (int)(this + 3)); - v3 = std::filebuf::open(this + 3, a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 4B7735: positive sp value 4 has been found -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); - -//----- (004B7760) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+24h] [ebp-44h] - - v5 = this + 30; - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_51598C; - this[30] = &unk_5159A0; - this[1] = 0; - std::ios::init((int)v5, 0); - this[2] = &unk_5159B4; - this[30] = &unk_5159C8; - std::ios::init((int)v5, 0); - *this = off_51AAD4; - this[30] = off_51AAFC; - this[2] = off_51AAE8; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)v5, (int)(this + 3)); - v3 = std::filebuf::open(this + 3, a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 4B7915: positive sp value 4 has been found -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); - -//----- (004B7940) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+24h] [ebp-44h] - - v5 = this + 30; - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_51598C; - this[30] = &unk_5159A0; - this[1] = 0; - std::ios::init((int)v5, 0); - this[2] = &unk_5159B4; - this[30] = &unk_5159C8; - std::ios::init((int)v5, 0); - *this = off_51AAD4; - this[30] = off_51AAFC; - this[2] = off_51AAE8; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)v5, (int)(this + 3)); - v3 = std::filebuf::open(this + 3, *a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 4B7AFD: positive sp value 4 has been found -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); - -//----- (004B7B30) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __fastcall std::fstream::basic_fstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 120; - std::ios_base::ios_base((_DWORD *)(a1 + 120)); - *(_DWORD *)(a1 + 232) = 0; - *(_WORD *)(a1 + 236) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)(a1 + 252) = 0; - *(_DWORD *)a1 = &unk_51598C; - *(_DWORD *)(a1 + 120) = &unk_5159A0; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_5159B4; - *(_DWORD *)(a1 + 120) = &unk_5159C8; - std::ios::init(v1, 0); - *(_DWORD *)a1 = off_51AAD4; - *(_DWORD *)(a1 + 120) = off_51AAFC; - *(_DWORD *)(a1 + 8) = off_51AAE8; - std::filebuf::basic_filebuf(a1 + 12); - std::ios::init(v1, a1 + 12); -} -// 4B7C99: positive sp value 4 has been found -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); - -//----- (004B7CD0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // edx - std::ios_base *v14; // [esp+0h] [ebp-58h] - std::ios_base *v15; // [esp+10h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v15, v14); - std::ios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v15 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v15 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v15 + 58); - v8 = a2[5]; - a3[1] = 0; - v9 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = *a2; - v13 = a2[8]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3), (std::locale *)(a3 + 3)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 3); -} -// 4B7E1E: positive sp value 4 has been found -// 4B7D36: variable 'v14' is possibly undefined - -//----- (004B7E40) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2, char *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::ios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::filebuf::open(this + 3, a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::ios::clear(v16, 0); - else - std::ios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4B7FCE: positive sp value 4 has been found - -//----- (004B8030) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::ios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::filebuf::open(this + 3, a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::ios::clear(v16, 0); - else - std::ios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4B81BE: positive sp value 4 has been found - -//----- (004B8220) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2, char **a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::ios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::filebuf::open(this + 3, *a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::ios::clear(v16, 0); - else - std::ios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4B83AE: positive sp value 4 has been found - -//----- (004B8410) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::fstream::basic_fstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - - v3 = a2[2]; - v4 = a2[3]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[4]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[5]; - std::ios::init((int)v7, 0); - v8 = a2[1]; - v9 = a2[6]; - *this = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[7]; - v10 = a2[8]; - v11 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; - this[2] = a2[9]; - std::filebuf::basic_filebuf((int)(this + 3)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); -} -// 4B8546: positive sp value 4 has been found - -//----- (004B85A0) -------------------------------------------------------- -void __fastcall std::fstream::~fstream(_DWORD *a1) -{ - *a1 = off_51AAD4; - a1[30] = off_51AAFC; - a1[2] = off_51AAE8; - a1[3] = off_51AA50; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 3)); - std::__basic_file::~__basic_file((int)(a1 + 13)); - a1[3] = &off_51ADD4; - std::locale::~locale((_DWORD **)a1 + 10); - a1[2] = &unk_5159B4; - *a1 = &unk_51598C; - a1[1] = 0; - a1[30] = &off_51B7D0; - std::ios_base::~ios_base((int)(a1 + 30)); - operator delete(a1); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004B8690) -------------------------------------------------------- -void __fastcall std::fstream::~fstream(int a1) -{ - *(_DWORD *)a1 = off_51AAD4; - *(_DWORD *)(a1 + 120) = off_51AAFC; - *(_DWORD *)(a1 + 8) = off_51AAE8; - *(_DWORD *)(a1 + 12) = off_51AA50; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 12)); - std::__basic_file::~__basic_file(a1 + 52); - *(_DWORD *)(a1 + 12) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 40)); - *(_DWORD *)(a1 + 8) = &unk_5159B4; - *(_DWORD *)a1 = &unk_51598C; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 120) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 120); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004B8770) -------------------------------------------------------- -void __thiscall std::fstream::~fstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[8]; - v4 = a2[9]; - this[3] = (int)off_51AA50; - this[2] = v4; - std::filebuf::close((struct _Unwind_Exception *)(this + 3)); - std::__basic_file::~__basic_file((int)(this + 13)); - this[3] = (int)&off_51ADD4; - std::locale::~locale((_DWORD **)this + 10); - v5 = a2[1]; - *this = v5; - *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[6]; - this[2] = a2[7]; - v6 = a2[4]; - this[2] = v6; - *(int *)((char *)this + *(_DWORD *)(v6 - 12) + 8) = a2[5]; - v7 = a2[2]; - *this = v7; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = a2[3]; - this[1] = 0; -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004B8880) -------------------------------------------------------- -_DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - char v6; // cl - char v7; // cl - int v8; // eax - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::filebuf::operator=((int)(this + 3), (int)(a2 + 3)); - return this; -} -// 4B88C0: variable 'v10' is possibly undefined - -//----- (004B8960) -------------------------------------------------------- -int __thiscall std::wfstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 3, a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004B89D0) -------------------------------------------------------- -int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 3, a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004B8A40) -------------------------------------------------------- -int __thiscall std::wfstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 3, *a2, a3) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004B8AB0) -------------------------------------------------------- -void __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // edi - std::ios_base *v4; // esi - std::ios_base *v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wfilebuf::swap((int)(this + 3), (int)(a2 + 3)); -} -// 4B8AF0: variable 'v8' is possibly undefined - -//----- (004B8B80) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::wfstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 3)); - if ( !result ) - return (struct _Unwind_Exception *)std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004B8BC0) -------------------------------------------------------- -bool __fastcall std::wfstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 52)); -} - -//----- (004B8BD0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+0h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 31; - std::ios_base::ios_base(this + 31); - v2 = a2[1]; - *((_WORD *)this + 120) = 0; - *this = &unk_5159DC; - this[1] = v2; - this[59] = 0; - v3 = *a2; - *((_BYTE *)this + 242) = 0; - this[61] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[62] = 0; - this[63] = 0; - this[64] = 0; - this[31] = &unk_5159F0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::wios::_M_cache_locale(v8, (int)(this + 58)); - this[61] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[59] = v5; - *((_WORD *)this + 120) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 242) = *((_BYTE *)lpuexcpt + 118); - a2[1] = 0; - *this = off_51AB10; - this[31] = off_51AB38; - this[2] = off_51AB24; - std::wfilebuf::basic_filebuf((int)(this + 3), (std::locale *)(a2 + 3)); - this[61] = this + 3; -} -// 4B8D73: positive sp value 4 has been found -// 4B8C7C: variable 'v6' is possibly undefined -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); - -//----- (004B8D80) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+24h] [ebp-44h] - - v5 = this + 31; - std::ios_base::ios_base(this + 31); - this[59] = 0; - *((_WORD *)this + 120) = 0; - *((_BYTE *)this + 242) = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - this[64] = 0; - *this = &unk_5159DC; - this[31] = &unk_5159F0; - this[1] = 0; - std::wios::init((int)v5, 0); - this[2] = &unk_515A40; - this[31] = &unk_515A54; - std::wios::init((int)v5, 0); - *this = off_51AB10; - this[31] = off_51AB38; - this[2] = off_51AB24; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)v5, (int)(this + 3)); - v3 = std::wfilebuf::open(this + 3, a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 4B8F45: positive sp value 4 has been found -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); - -//----- (004B8F70) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+24h] [ebp-44h] - - v5 = this + 31; - std::ios_base::ios_base(this + 31); - this[59] = 0; - *((_WORD *)this + 120) = 0; - *((_BYTE *)this + 242) = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - this[64] = 0; - *this = &unk_5159DC; - this[31] = &unk_5159F0; - this[1] = 0; - std::wios::init((int)v5, 0); - this[2] = &unk_515A40; - this[31] = &unk_515A54; - std::wios::init((int)v5, 0); - *this = off_51AB10; - this[31] = off_51AB38; - this[2] = off_51AB24; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)v5, (int)(this + 3)); - v3 = std::wfilebuf::open(this + 3, a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 4B9135: positive sp value 4 has been found -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); - -//----- (004B9160) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+24h] [ebp-44h] - - v5 = this + 31; - std::ios_base::ios_base(this + 31); - this[59] = 0; - *((_WORD *)this + 120) = 0; - *((_BYTE *)this + 242) = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - this[64] = 0; - *this = &unk_5159DC; - this[31] = &unk_5159F0; - this[1] = 0; - std::wios::init((int)v5, 0); - this[2] = &unk_515A40; - this[31] = &unk_515A54; - std::wios::init((int)v5, 0); - *this = off_51AB10; - this[31] = off_51AB38; - this[2] = off_51AB24; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)v5, (int)(this + 3)); - v3 = std::wfilebuf::open(this + 3, *a2, a3); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 4B9325: positive sp value 4 has been found -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); - -//----- (004B9350) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __fastcall std::wfstream::basic_fstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 124; - std::ios_base::ios_base((_DWORD *)(a1 + 124)); - *(_DWORD *)(a1 + 236) = 0; - *(_WORD *)(a1 + 240) = 0; - *(_BYTE *)(a1 + 242) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)(a1 + 252) = 0; - *(_DWORD *)(a1 + 256) = 0; - *(_DWORD *)a1 = &unk_5159DC; - *(_DWORD *)(a1 + 124) = &unk_5159F0; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_515A40; - *(_DWORD *)(a1 + 124) = &unk_515A54; - std::wios::init(v1, 0); - *(_DWORD *)a1 = off_51AB10; - *(_DWORD *)(a1 + 124) = off_51AB38; - *(_DWORD *)(a1 + 8) = off_51AB24; - std::wfilebuf::basic_filebuf(a1 + 12); - std::wios::init(v1, a1 + 12); -} -// 4B94C0: positive sp value 4 has been found -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); - -//----- (004B94F0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // edx - std::ios_base *v14; // [esp+0h] [ebp-58h] - std::ios_base *v15; // [esp+10h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v15, v14); - std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v15 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v15 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v15 + 58); - *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v15 + 118); - a3[1] = 0; - v8 = a2[5]; - v9 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = *a2; - v13 = a2[8]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3), (std::locale *)(a3 + 3)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 3); -} -// 4B9645: positive sp value 4 has been found -// 4B9556: variable 'v14' is possibly undefined - -//----- (004B9660) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::wios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::wfilebuf::open(this + 3, a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::wios::clear(v16, 0); - else - std::wios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4B97EE: positive sp value 4 has been found - -//----- (004B9850) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::wios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::wfilebuf::open(this + 3, a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::wios::clear(v16, 0); - else - std::wios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4B99DE: positive sp value 4 has been found - -//----- (004B9A40) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - _DWORD *v14; // eax - char *v15; // ebx - _DWORD *v16; // ecx - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::wios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); - v14 = std::wfilebuf::open(this + 3, *a3, a4); - v15 = (char *)this + *(_DWORD *)(*this - 12); - v16 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v14 ) - std::wios::clear(v16, 0); - else - std::wios::clear(v16, *((_DWORD *)v15 + 5) | 4); -} -// 4B9BCE: positive sp value 4 has been found - -//----- (004B9C30) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::wfstream::basic_fstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - - v3 = a2[2]; - v4 = a2[3]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[4]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[5]; - std::wios::init((int)v7, 0); - v8 = a2[1]; - v9 = a2[6]; - *this = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[7]; - v10 = a2[8]; - v11 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; - this[2] = a2[9]; - std::wfilebuf::basic_filebuf((int)(this + 3)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); -} -// 4B9D66: positive sp value 4 has been found - -//----- (004B9DC0) -------------------------------------------------------- -void __fastcall std::wfstream::~wfstream(_DWORD *a1) -{ - *a1 = off_51AB10; - a1[31] = off_51AB38; - a1[2] = off_51AB24; - a1[3] = off_51AA90; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 3)); - std::__basic_file::~__basic_file((int)(a1 + 13)); - a1[3] = &off_51AE14; - std::locale::~locale((_DWORD **)a1 + 10); - a1[2] = &unk_515A40; - *a1 = &unk_5159DC; - a1[1] = 0; - a1[31] = &off_51B7E0; - std::ios_base::~ios_base((int)(a1 + 31)); - operator delete(a1); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004B9EB0) -------------------------------------------------------- -void __fastcall std::wfstream::~wfstream(int a1) -{ - *(_DWORD *)a1 = off_51AB10; - *(_DWORD *)(a1 + 124) = off_51AB38; - *(_DWORD *)(a1 + 8) = off_51AB24; - *(_DWORD *)(a1 + 12) = off_51AA90; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 12)); - std::__basic_file::~__basic_file(a1 + 52); - *(_DWORD *)(a1 + 12) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 40)); - *(_DWORD *)(a1 + 8) = &unk_515A40; - *(_DWORD *)a1 = &unk_5159DC; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 124) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 124); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004B9F90) -------------------------------------------------------- -void __thiscall std::wfstream::~wfstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[8]; - v4 = a2[9]; - this[3] = (int)off_51AA90; - this[2] = v4; - std::wfilebuf::close((struct _Unwind_Exception *)(this + 3)); - std::__basic_file::~__basic_file((int)(this + 13)); - this[3] = (int)&off_51AE14; - std::locale::~locale((_DWORD **)this + 10); - v5 = a2[1]; - *this = v5; - *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[6]; - this[2] = a2[7]; - v6 = a2[4]; - this[2] = v6; - *(int *)((char *)this + *(_DWORD *)(v6 - 12) + 8) = a2[5]; - v7 = a2[2]; - *this = v7; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = a2[3]; - this[1] = 0; -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004BA0A0) -------------------------------------------------------- -_DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - __int16 v6; // cx - int v7; // eax - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wfilebuf::operator=((int)(this + 3), (int)(a2 + 3)); - return this; -} -// 4BA0E0: variable 'v9' is possibly undefined - -//----- (004BA180) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 48))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BA180: using guessed type int var_1C[7]; - -//----- (004BA340) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 8))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BA340: using guessed type int var_1C[7]; - -//----- (004BA500) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 40))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BA500: using guessed type int var_1C[7]; - -//----- (004BA6C0) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 44))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BA6C0: using guessed type int var_1C[7]; - -//----- (004BA880) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 36))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BA880: using guessed type int var_1C[7]; - -//----- (004BAA40) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 20))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BAA40: using guessed type int var_1C[7]; - -//----- (004BAC00) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BAC00: using guessed type int var_1C[7]; - -//----- (004BADC0) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 24))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BADC0: using guessed type int var_1C[7]; - -//----- (004BAF80) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 16))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BAF80: using guessed type int var_1C[7]; - -//----- (004BB140) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 28))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BB140: using guessed type int var_1C[7]; - -//----- (004BB300) -------------------------------------------------------- -char *__thiscall std::wistream::_M_extract(char *this, int a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+6Bh] [ebp-1Dh] BYREF - int v7[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7[0] = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v3 + 32))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - v7, - a2); - if ( v7[0] ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7[0]); - } - return this; -} -// 4BB300: using guessed type int var_1C[7]; - -//----- (004BB4C0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3) -{ - int v4; // ecx - __int16 v5; // ax - - v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); - if ( !v4 ) - std::__throw_bad_cast(); - v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); - return std::wistream::get(this, a2, a3, v5); -} - -//----- (004BB510) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4) -{ - int v4; // ecx - int v6; // eax - __int16 *v7; // eax - __int16 v8; // ax - int v9; // edx - __int16 v10; // dx - __int16 *v11; // eax - __int16 *v12; // eax - int v13; // edx - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - char v16[25]; // [esp+6Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v16, this, 1); - if ( !v16[0] ) - { - v4 = this[1]; - goto LABEL_3; - } - lpuexcpt = *(struct _Unwind_Exception **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v7 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v7 >= *((_DWORD *)lpuexcpt + 3) ) - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - else - v8 = *v7; - v4 = this[1]; - v9 = v4 + 1; - if ( a3 <= v4 + 1 ) - { -LABEL_29: - if ( v8 != -1 ) - goto LABEL_3; - goto LABEL_30; - } - if ( v8 == -1 ) - { -LABEL_30: - if ( a3 > 0 ) - *a2 = 0; - v6 = 6; - if ( !v4 ) - { -LABEL_8: - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v6); - return this; - } - goto LABEL_33; - } - if ( a4 == v8 ) - { -LABEL_3: - if ( a3 > 0 ) - *a2 = 0; - if ( !v4 ) - { - v6 = 4; - goto LABEL_8; - } - return this; - } - while ( 1 ) - { - *a2++ = v8; - this[1] = v9; - v12 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v12 < *((_DWORD *)lpuexcpt + 3) ) - { - v10 = *v12; - *((_DWORD *)lpuexcpt + 2) = v12 + 1; - if ( v10 == -1 ) - goto LABEL_23; - } - else if ( (*(unsigned __int16 (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == 0xFFFF ) - { -LABEL_23: - v13 = this[1]; - if ( a3 > 0 ) - { - *a2 = 0; - v6 = 2; - if ( v13 ) - goto LABEL_8; - goto LABEL_25; - } - if ( !v13 ) - { - v6 = 2; - goto LABEL_25; - } -LABEL_33: - v6 = 2; - goto LABEL_8; - } - v11 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v11 >= *((_DWORD *)lpuexcpt + 3) ) - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - else - v8 = *v11; - v4 = this[1]; - v9 = v4 + 1; - if ( v4 + 1 >= a3 ) - goto LABEL_29; - if ( v8 == -1 ) - break; - if ( a4 == v8 ) - { - v6 = 0; - goto LABEL_35; - } - } - v6 = 2; -LABEL_35: - if ( a3 > 0 ) - *a2 = 0; - if ( !v4 ) - { -LABEL_25: - v6 |= 4u; - goto LABEL_8; - } - if ( v6 ) - goto LABEL_8; - return this; -} -// 4BB510: using guessed type char var_19[25]; - -//----- (004BB870) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2) -{ - int v3; // ecx - __int16 v4; // ax - - v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); - if ( !v3 ) - std::__throw_bad_cast(); - v4 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 10); - return std::wistream::get(this, a2, v4); -} - -//----- (004BB8C0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3) -{ - int v3; // eax - unsigned __int16 *v5; // eax - int v6; // edx - __int16 *v7; // eax - __int16 v8; // dx - _WORD *v9; // eax - _WORD *v10; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - char v13[25]; // [esp+6Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v13, this, 1); - if ( v13[0] ) - { - lpuexcpt = *(struct _Unwind_Exception **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v5 = (unsigned __int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) - v6 = (*(unsigned __int16 (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - else - v6 = *v5; - if ( (_WORD)v6 != 0xFFFF ) - { - if ( a3 == (_WORD)v6 ) - goto LABEL_2; - while ( 1 ) - { - v10 = (_WORD *)a2[5]; - if ( (unsigned int)v10 < a2[6] ) - { - *v10 = v6; - a2[5] = v10 + 1; - } - else if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v6) == 0xFFFF ) - { - goto LABEL_2; - } - ++this[1]; - v7 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v7 >= *((_DWORD *)lpuexcpt + 3) ) - { - v8 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt); - } - else - { - v8 = *v7; - *((_DWORD *)lpuexcpt + 2) = v7 + 1; - } - if ( v8 == -1 ) - break; - v9 = (_WORD *)*((_DWORD *)lpuexcpt + 2); - v6 = (unsigned int)v9 >= *((_DWORD *)lpuexcpt + 3) - ? (*(unsigned __int16 (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt) - : (unsigned __int16)*v9; - if ( (_WORD)v6 == 0xFFFF ) - break; - if ( a3 == (_WORD)v6 ) - goto LABEL_2; - } - } - v3 = this[1] == 0 ? 6 : 2; - goto LABEL_4; - } -LABEL_2: - if ( !this[1] ) - { - v3 = 4; -LABEL_4: - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v3); - } - return this; -} -// 4BB8C0: using guessed type char var_19[25]; - -//----- (004BBB50) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2) -{ - int v2; // eax - _DWORD *v4; // ecx - __int16 *v5; // eax - __int16 v6; // dx - char v8[25]; // [esp+5Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v8, this, 1); - if ( v8[0] ) - { - v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v5 = (__int16 *)v4[2]; - if ( (unsigned int)v5 >= v4[3] ) - { - v6 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); - } - else - { - v6 = *v5; - v4[2] = v5 + 1; - } - if ( v6 != -1 ) - { - this[1] = 1; - *a2 = v6; - return this; - } - v2 = this[1] == 0 ? 6 : 2; - goto LABEL_4; - } - if ( !this[1] ) - { - v2 = 4; -LABEL_4: - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v2); - } - return this; -} -// 4BBB50: using guessed type char var_19[25]; - -//----- (004BBD10) -------------------------------------------------------- -int __fastcall std::wistream::get(_DWORD *a1) -{ - int v1; // eax - _DWORD *v3; // ecx - unsigned __int16 *v4; // eax - unsigned __int16 v5; // dx - unsigned __int16 lpuexcpt; // [esp+14h] [ebp-64h] - char v8[25]; // [esp+5Fh] [ebp-19h] BYREF - - a1[1] = 0; - std::wistream::sentry::sentry(v8, a1, 1); - if ( v8[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v4 = (unsigned __int16 *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - { - lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); - } - else - { - v5 = *v4; - v3[2] = v4 + 1; - lpuexcpt = v5; - } - if ( lpuexcpt != 0xFFFF ) - { - a1[1] = 1; - return lpuexcpt; - } - v1 = a1[1] == 0 ? 6 : 2; - goto LABEL_4; - } - if ( !a1[1] ) - { - v1 = 4; -LABEL_4: - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v1); - } - return (unsigned __int16)-1; -} -// 4BBD10: using guessed type char var_19[25]; - -//----- (004BBEE0) -------------------------------------------------------- -int __fastcall std::wistream::peek(_DWORD *a1) -{ - _DWORD *v2; // ecx - unsigned __int16 *v3; // eax - unsigned __int16 lpuexcpt; // [esp+14h] [ebp-64h] - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - a1[1] = 0; - std::wistream::sentry::sentry(v6, a1, 1); - lpuexcpt = -1; - if ( v6[0] ) - { - v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v3 = (unsigned __int16 *)v2[2]; - if ( (unsigned int)v3 >= v2[3] ) - lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); - else - lpuexcpt = *v3; - if ( lpuexcpt == 0xFFFF ) - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); - } - return lpuexcpt; -} -// 4BBEE0: using guessed type char var_19[25]; - -//----- (004BC090) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3) -{ - int v3; // ecx - int v4; // eax - char v7[25]; // [esp+5Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v7, this, 1); - if ( v7[0] ) - { - v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); - v4 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 32))(v3, a2, a3); - this[1] = v4; - if ( a3 != v4 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 6); - } - return this; -} -// 4BC090: using guessed type char var_19[25]; - -//----- (004BC220) -------------------------------------------------------- -void __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; -} -// 4BC25D: variable 'v8' is possibly undefined - -//----- (004BC2E0) -------------------------------------------------------- -int __fastcall std::wistream::sync(_DWORD *a1) -{ - int v1; // ecx - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v5[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::wistream::sentry::sentry(v5, a1, 1); - if ( !v5[0] ) - return -1; - v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - if ( !v1 ) - return -1; - lpuexcpt = (struct _Unwind_Exception *)(*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1); - if ( lpuexcpt != (struct _Unwind_Exception *)-1 ) - return 0; - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - return (int)lpuexcpt; -} -// 4BC2E0: using guessed type char var_19[25]; - -//----- (004BC470) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5) -{ - char *v5; // edi - _DWORD *v6; // eax - int v7; // edi - void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax - _DWORD *v10; // [esp+0h] [ebp-B8h] - char v12; // [esp+7Fh] [ebp-39h] BYREF - int v13[14]; // [esp+80h] [ebp-38h] BYREF - - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); - std::wistream::sentry::sentry(&v12, this, 1); - if ( v12 ) - { - v5 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v5[20] & 5) == 0 ) - { - v6 = (_DWORD *)*((_DWORD *)v5 + 30); - v7 = *v6; - v13[6] = a4; - v10 = v6; - v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); - v13[4] = a2; - v13[5] = a3; - v13[7] = a5; - v8(v13, v10, a2, a3, a4, a5, 8); - if ( (v13[0] & v13[1]) == -1 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - } - return this; -} - -//----- (004BC6B0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4) -{ - char *v4; // edi - char v7; // [esp+6Fh] [ebp-29h] BYREF - int v8[10]; // [esp+70h] [ebp-28h] BYREF - - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); - std::wistream::sentry::sentry(&v7, this, 1); - if ( v7 ) - { - v4 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v4[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( - v8, - *((_DWORD *)v4 + 30), - a2, - a3, - a4, - 8); - if ( (v8[0] & v8[1]) == -1 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - } - return this; -} - -//----- (004BC880) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2) -{ - char *v2; // esi - char v5; // [esp+6Fh] [ebp-29h] BYREF - int v6[10]; // [esp+70h] [ebp-28h] BYREF - - *this = -1; - this[1] = -1; - this[2] = 0; - std::wistream::sentry::sentry(&v5, a2, 1); - if ( v5 ) - { - v2 = (char *)a2 + *(_DWORD *)(*a2 - 12); - if ( (v2[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v2 + 30) + 16))( - v6, - *((_DWORD *)v2 + 30), - 0, - 0, - 1, - 8); - *this = v6[0]; - this[1] = v6[1]; - this[2] = v6[2]; - } - } - return this; -} - -//----- (004BCA30) -------------------------------------------------------- -int *__fastcall std::wistream::unget(int *a1) -{ - int v2; // eax - _DWORD *v3; // ecx - _DWORD *v4; // eax - unsigned int v5; // eax - unsigned int v6; // edx - __int16 v7; // ax - char v10[25]; // [esp+5Fh] [ebp-19h] BYREF - - v2 = *a1; - a1[1] = 0; - std::wios::clear( - (int *)((char *)a1 + *(_DWORD *)(v2 - 12)), - *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); - std::wistream::sentry::sentry(v10, a1, 1); - if ( !v10[0] ) - return a1; - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - if ( !v3 ) - { -LABEL_8: - std::wios::clear(v4, v4[5] | 1); - return a1; - } - v5 = v3[2]; - if ( v3[1] >= v5 ) - { - v7 = (*(int (__thiscall **)(_DWORD *, int))(*v3 + 44))(v3, 0xFFFF); - } - else - { - v6 = v5 - 2; - v7 = *(_WORD *)(v5 - 2); - v3[2] = v6; - } - if ( v7 == -1 ) - { - v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - goto LABEL_8; - } - return a1; -} -// 4BCA30: using guessed type char var_19[25]; - -//----- (004BCC00) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2) -{ - __int16 *v3; // eax - __int16 v4; // dx - signed int i; // eax - unsigned int v6; // esi - __int16 *v7; // ecx - int v8; // edx - __int16 *v9; // ecx - __int16 v10; // ax - __int16 *v11; // eax - _DWORD *v12; // [esp+1Ch] [ebp-6Ch] - char v13; // [esp+23h] [ebp-65h] - char lpuexcpt; // [esp+24h] [ebp-64h] - _DWORD *v15; // [esp+28h] [ebp-60h] - char v16[25]; // [esp+6Fh] [ebp-19h] BYREF - - v15 = this; - if ( a2 == 1 ) - return std::wistream::ignore(this); - this[1] = 0; - std::wistream::sentry::sentry(v16, this, 1); - if ( a2 > 0 ) - { - lpuexcpt = v16[0]; - if ( v16[0] ) - { - v12 = *(_DWORD **)((char *)v15 + *(_DWORD *)(*v15 - 12) + 120); - v3 = (__int16 *)v12[2]; - if ( (unsigned int)v3 >= v12[3] ) - v4 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - else - v4 = *v3; - v13 = 0; - for ( i = v15[1]; ; i = 0x80000000 ) - { -LABEL_9: - if ( a2 > i ) - { - while ( v4 != -1 ) - { - v6 = v12[3]; - v7 = (__int16 *)v12[2]; - v8 = (int)(v6 - (_DWORD)v7) >> 1; - if ( v8 > a2 - i ) - v8 = a2 - i; - if ( v8 <= 1 ) - { - v15[1] = i + 1; - if ( (unsigned int)v7 >= v6 ) - { - v10 = (*(int (__fastcall **)(_DWORD *))(*v12 + 40))(v12); - } - else - { - v10 = *v7; - v12[2] = v7 + 1; - } - if ( v10 != -1 ) - { - v11 = (__int16 *)v12[2]; - if ( (unsigned int)v11 < v12[3] ) - { - v4 = *v11; - i = v15[1]; - goto LABEL_9; - } -LABEL_27: - v4 = (*(int (__fastcall **)(_DWORD *))(*v12 + 36))(v12); - i = v15[1]; - goto LABEL_9; - } - break; - } - v9 = &v7[v8]; - i += v8; - v12[2] = v9; - v15[1] = i; - if ( v6 <= (unsigned int)v9 ) - goto LABEL_27; - v4 = *v9; - if ( a2 <= i ) - goto LABEL_16; - } -LABEL_24: - if ( v13 ) - v15[1] = 0x7FFFFFFF; -LABEL_26: - std::wios::clear( - (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), - *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 2); - return v15; - } -LABEL_16: - if ( a2 != 0x7FFFFFFF ) - break; - if ( v4 == -1 ) - goto LABEL_24; - v15[1] = 0x80000000; - v13 = lpuexcpt; - } - if ( v13 ) - v15[1] = 0x7FFFFFFF; - if ( v4 == -1 ) - goto LABEL_26; - } - } - return v15; -} -// 4BCC00: using guessed type char var_19[25]; - -//----- (004BCF00) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, __int16 a3) -{ - __int16 *v4; // eax - __int16 v5; // ax - signed int i; // ecx - unsigned int v7; // edi - __int16 *v8; // esi - int v9; // ebx - int v10; // edx - int v11; // eax - _WORD *v12; // eax - __int16 *v13; // eax - unsigned int v14; // eax - __int16 v15; // ax - __int16 *v16; // eax - _DWORD *v17; // [esp+28h] [ebp-70h] - char v18; // [esp+2Eh] [ebp-6Ah] - char v19; // [esp+2Fh] [ebp-69h] - _DWORD *v20; // [esp+38h] [ebp-60h] - char v21[25]; // [esp+7Fh] [ebp-19h] BYREF - - v20 = this; - if ( a3 == -1 ) - return std::wistream::ignore(this, a2); - this[1] = 0; - std::wistream::sentry::sentry(v21, this, 1); - if ( a2 > 0 ) - { - v19 = v21[0]; - if ( v21[0] ) - { - v17 = *(_DWORD **)((char *)v20 + *(_DWORD *)(*v20 - 12) + 120); - v4 = (__int16 *)v17[2]; - if ( (unsigned int)v4 >= v17[3] ) - v5 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); - else - v5 = *v4; - v18 = 0; -LABEL_9: - for ( i = v20[1]; a2 <= i; i = 0x80000000 ) - { -LABEL_22: - if ( a2 != 0x7FFFFFFF ) - { - if ( v18 ) - goto LABEL_29; - goto LABEL_30; - } - if ( v5 == -1 ) - goto LABEL_37; - if ( v5 == a3 ) - { - if ( !v18 ) - goto LABEL_33; -LABEL_29: - v20[1] = 0x7FFFFFFF; -LABEL_30: - if ( v5 != -1 ) - { - if ( v5 != a3 ) - return v20; -LABEL_32: - i = v20[1]; -LABEL_33: - if ( i != 0x7FFFFFFF ) -LABEL_34: - v20[1] = i + 1; - v14 = v17[2]; - if ( v14 >= v17[3] ) - (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); - else - v17[2] = v14 + 2; - return v20; - } -LABEL_39: - std::wios::clear( - (_DWORD *)((char *)v20 + *(_DWORD *)(*v20 - 12)), - *(_DWORD *)((char *)v20 + *(_DWORD *)(*v20 - 12) + 20) | 2); - return v20; - } - v20[1] = 0x80000000; - v18 = v19; - } - while ( v5 != -1 ) - { - if ( v5 == a3 ) - { - if ( a2 == 0x7FFFFFFF ) - { - if ( !v18 ) - goto LABEL_34; - } - else if ( !v18 ) - { - goto LABEL_32; - } - goto LABEL_29; - } - v7 = v17[3]; - v8 = (__int16 *)v17[2]; - v9 = a2 - i; - if ( (int)(v7 - (_DWORD)v8) >> 1 <= a2 - i ) - v9 = (v17[3] - (int)v8) >> 1; - if ( v9 <= 1 ) - { - v20[1] = i + 1; - if ( v7 <= (unsigned int)v8 ) - { - v15 = (*(int (__fastcall **)(_DWORD *))(*v17 + 40))(v17); - } - else - { - v15 = *v8; - v17[2] = v8 + 1; - } - if ( v15 != -1 ) - { - v16 = (__int16 *)v17[2]; - if ( (unsigned int)v16 < v17[3] ) - { - v5 = *v16; - i = v20[1]; - goto LABEL_9; - } -LABEL_45: - v5 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); - i = v20[1]; - goto LABEL_9; - } - break; - } - v10 = v9; - v11 = v9; - if ( v8 ) - { - v12 = (_WORD *)v17[2]; - while ( a3 != *v12 ) - { - ++v12; - if ( !--v10 ) - { - v11 = v9; - goto LABEL_20; - } - } - v11 = v12 - v8; - v9 = v11; - } -LABEL_20: - v13 = &v8[v11]; - i += v9; - v17[2] = v13; - v20[1] = i; - if ( v7 <= (unsigned int)v13 ) - goto LABEL_45; - v5 = *v13; - if ( a2 <= i ) - goto LABEL_22; - } -LABEL_37: - if ( v18 ) - v20[1] = 0x7FFFFFFF; - goto LABEL_39; - } - } - return v20; -} -// 4BCF00: using guessed type char var_19[25]; - -//----- (004BD300) -------------------------------------------------------- -_DWORD *__fastcall std::wistream::ignore(_DWORD *a1) -{ - _DWORD *v2; // ecx - __int16 *v3; // eax - __int16 v4; // dx - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - a1[1] = 0; - std::wistream::sentry::sentry(v6, a1, 1); - if ( v6[0] ) - { - v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v3 = (__int16 *)v2[2]; - if ( (unsigned int)v3 >= v2[3] ) - { - v4 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); - } - else - { - v4 = *v3; - v2[2] = v3 + 1; - } - if ( v4 == -1 ) - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); - else - a1[1] = 1; - } - return a1; -} -// 4BD300: using guessed type char var_19[25]; - -//----- (004BD4B0) -------------------------------------------------------- -void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) -{ - char *v3; // ecx - int v4; // eax - unsigned __int16 *v5; // eax - unsigned __int16 v6; // ax - __int16 v7; // dx - _WORD *v8; // eax - __int16 *v9; // eax - int v10; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - - *this = 0; - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - v4 = *((_DWORD *)v3 + 5); - if ( v4 ) - goto LABEL_6; - if ( !*((_DWORD *)v3 + 28) ) - { - if ( a3 || (v3[13] & 0x10) == 0 ) - goto LABEL_9; - goto LABEL_10; - } - std::wostream::flush(*((_DWORD **)v3 + 28)); - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - if ( !a3 && (v3[13] & 0x10) != 0 ) - { -LABEL_10: - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v3 + 30); - v5 = (unsigned __int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - else - { - v6 = *v5; - } - v10 = *((_DWORD *)v3 + 31); - if ( !v10 ) - std::__throw_bad_cast(); - if ( v6 == 0xFFFF ) - { -LABEL_24: - v4 = *((_DWORD *)v3 + 5) | 2; - goto LABEL_6; - } - while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v6) ) - { - v9 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v9 < *((_DWORD *)lpuexcpt + 3) ) - { - v7 = *v9; - *((_DWORD *)lpuexcpt + 2) = v9 + 1; - } - else - { - v7 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt); - } - if ( v7 != -1 ) - { - v8 = (_WORD *)*((_DWORD *)lpuexcpt + 2); - v6 = (unsigned int)v8 >= *((_DWORD *)lpuexcpt + 3) - ? (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt) - : *v8; - if ( v6 != 0xFFFF ) - continue; - } - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - goto LABEL_24; - } - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - v4 = *((_DWORD *)v3 + 5); - if ( v4 ) - { -LABEL_6: - std::wios::clear(v3, v4 | 4); - return; - } -LABEL_9: - *this = 1; -} - -//----- (004BD750) -------------------------------------------------------- -void __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) -{ - char *v3; // ecx - int v4; // eax - unsigned __int16 *v5; // eax - unsigned __int16 v6; // ax - __int16 v7; // dx - _WORD *v8; // eax - __int16 *v9; // eax - int v10; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - - *this = 0; - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - v4 = *((_DWORD *)v3 + 5); - if ( v4 ) - goto LABEL_6; - if ( !*((_DWORD *)v3 + 28) ) - { - if ( a3 || (v3[13] & 0x10) == 0 ) - goto LABEL_9; - goto LABEL_10; - } - std::wostream::flush(*((_DWORD **)v3 + 28)); - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - if ( !a3 && (v3[13] & 0x10) != 0 ) - { -LABEL_10: - lpuexcpt = (struct _Unwind_Exception *)*((_DWORD *)v3 + 30); - v5 = (unsigned __int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v5 >= *((_DWORD *)lpuexcpt + 3) ) - { - v6 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - else - { - v6 = *v5; - } - v10 = *((_DWORD *)v3 + 31); - if ( !v10 ) - std::__throw_bad_cast(); - if ( v6 == 0xFFFF ) - { -LABEL_24: - v4 = *((_DWORD *)v3 + 5) | 2; - goto LABEL_6; - } - while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v6) ) - { - v9 = (__int16 *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v9 < *((_DWORD *)lpuexcpt + 3) ) - { - v7 = *v9; - *((_DWORD *)lpuexcpt + 2) = v9 + 1; - } - else - { - v7 = (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt); - } - if ( v7 != -1 ) - { - v8 = (_WORD *)*((_DWORD *)lpuexcpt + 2); - v6 = (unsigned int)v8 >= *((_DWORD *)lpuexcpt + 3) - ? (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt) - : *v8; - if ( v6 != 0xFFFF ) - continue; - } - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - goto LABEL_24; - } - v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - v4 = *((_DWORD *)v3 + 5); - if ( v4 ) - { -LABEL_6: - std::wios::clear(v3, v4 | 4); - return; - } -LABEL_9: - *this = 1; -} - -//----- (004BD9F0) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::getline(_DWORD *this, char *a2, int a3) -{ - int v4; // ecx - __int16 v5; // ax - - v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); - if ( !v4 ) - std::__throw_bad_cast(); - v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); - return std::wistream::getline(this, a2, a3, v5); -} - -//----- (004BDA40) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::getline(_DWORD *this, char *a2, int a3, __int16 a4) -{ - int v4; // esi - int v5; // edx - __int16 *v7; // eax - __int16 v8; // dx - int v9; // eax - unsigned int v10; // ebx - char *v11; // ecx - int v12; // edi - int v13; // eax - int v14; // edx - int v15; // esi - char *v16; // eax - char *v17; // ecx - unsigned int v18; // eax - __int16 v19; // ax - __int16 *v20; // eax - int v21; // [esp+18h] [ebp-70h] - _DWORD *v22; // [esp+20h] [ebp-68h] - int lpuexcpt; // [esp+24h] [ebp-64h] - char v25[25]; // [esp+6Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v25, this, 1); - if ( !v25[0] ) - { -LABEL_2: - v4 = this[1]; - if ( a3 > 0 ) - goto LABEL_3; -LABEL_27: - if ( !v4 ) - goto LABEL_4; - return this; - } - v22 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v7 = (__int16 *)v22[2]; - if ( (unsigned int)v7 >= v22[3] ) - v8 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - else - v8 = *v7; - v9 = this[1]; - v4 = v9 + 1; - if ( a3 > v9 + 1 ) - { - if ( v8 != -1 ) - { - if ( v8 != a4 ) - { - while ( 1 ) - { - v10 = v22[3]; - v11 = (char *)v22[2]; - v12 = a3 - v9 - 1; - v13 = (int)(v10 - (_DWORD)v11) >> 1; - if ( v12 <= v13 ) - v13 = v12; - lpuexcpt = v13; - if ( v13 <= 1 ) - { - *(_WORD *)a2 = v8; - this[1] = v4; - if ( v10 <= (unsigned int)v11 ) - { - v19 = (*(int (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - } - else - { - v19 = *(_WORD *)v11; - v22[2] = v11 + 2; - } - if ( v19 == -1 ) - { - a2 += 2; - v9 = this[1]; -LABEL_43: - v5 = 2; - if ( a3 > 0 ) - *(_WORD *)a2 = 0; -LABEL_45: - if ( !v9 ) - v5 |= 4u; - goto LABEL_5; - } - v20 = (__int16 *)v22[2]; - if ( (unsigned int)v20 >= v22[3] ) - v8 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - else - v8 = *v20; - a2 += 2; - v9 = this[1]; - } - else - { - v14 = v13; - v15 = v13; - if ( !v11 ) - goto LABEL_19; - v16 = (char *)v22[2]; - while ( *(_WORD *)v16 != a4 ) - { - v16 += 2; - if ( !--v14 ) - goto LABEL_19; - } - v21 = v16 - v11; - lpuexcpt = (v16 - v11) >> 1; - v15 = lpuexcpt; - if ( lpuexcpt ) - { -LABEL_19: - v21 = 2 * v15; - memcpy(a2, v11, 2 * v15); - v11 = (char *)v22[2]; - v10 = v22[3]; - } - a2 += v21; - v17 = &v11[v21]; - v22[2] = v17; - v9 = this[1] + lpuexcpt; - this[1] = v9; - if ( (unsigned int)v17 >= v10 ) - { - v8 = (*(int (__fastcall **)(_DWORD *))(*v22 + 36))(v22); - v9 = this[1]; - } - else - { - v8 = *(_WORD *)v17; - } - } - v4 = v9 + 1; - if ( v9 + 1 >= a3 ) - goto LABEL_38; - if ( v8 == -1 ) - goto LABEL_43; - if ( a4 == v8 ) - goto LABEL_25; - } - } - goto LABEL_25; - } - if ( a3 > 0 ) - { -LABEL_52: - v5 = 2; - *(_WORD *)a2 = 0; - if ( !v9 ) - v5 = 6; - goto LABEL_5; - } -LABEL_56: - v5 = 2; - goto LABEL_45; - } -LABEL_38: - if ( v8 == -1 ) - { - v9 = this[1]; - if ( a3 > 0 ) - goto LABEL_52; - goto LABEL_56; - } - if ( v8 != a4 ) - { - v9 = this[1]; - if ( a3 <= 0 ) - { - v5 = 4; - goto LABEL_45; - } - *(_WORD *)a2 = 0; - v5 = 4; -LABEL_5: - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v5); - return this; - } -LABEL_25: - this[1] = v4; - v18 = v22[2]; - if ( v18 >= v22[3] ) - { - (*(void (__fastcall **)(_DWORD *))(*v22 + 40))(v22); - goto LABEL_2; - } - v22[2] = v18 + 2; - if ( a3 <= 0 ) - goto LABEL_27; -LABEL_3: - *(_WORD *)a2 = 0; - if ( !v4 ) - { -LABEL_4: - v5 = 4; - goto LABEL_5; - } - return this; -} -// 4BDA40: using guessed type char var_19[25]; - -//----- (004BDED0) -------------------------------------------------------- -int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2) -{ - int v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // eax - unsigned int v6; // eax - __int16 v7; // dx - char v10[25]; // [esp+5Fh] [ebp-19h] BYREF - - v3 = *this; - this[1] = 0; - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v3 - 12)), - *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 20) & 0xFFFFFFFD); - std::wistream::sentry::sentry(v10, this, 1); - if ( !v10[0] ) - return this; - v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( !v4 ) - { -LABEL_9: - std::wios::clear(v5, v5[5] | 1); - return this; - } - v6 = v4[2]; - if ( v4[1] < v6 && (v7 = *(_WORD *)(v6 - 2), a2 == v7) ) - v4[2] = v6 - 2; - else - v7 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v4 + 44))(v4, a2); - if ( v7 == -1 ) - { - v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - goto LABEL_9; - } - return this; -} -// 4BDED0: using guessed type char var_19[25]; - -//----- (004BE0B0) -------------------------------------------------------- -struct _Unwind_Exception *__thiscall std::wistream::readsome(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // ecx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // ecx - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v11[25]; // [esp+5Fh] [ebp-19h] BYREF - - this[1] = 0; - std::wistream::sentry::sentry(v11, this, 1); - if ( !v11[0] ) - return (struct _Unwind_Exception *)this[1]; - v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v5 = v4[3]; - v6 = v4[2]; - if ( v5 == v6 ) - v7 = (*(int (__fastcall **)(_DWORD *))(*v4 + 28))(v4); - else - v7 = (v5 - v6) >> 1; - if ( v7 <= 0 ) - { - if ( v7 == -1 ) - { - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); - return (struct _Unwind_Exception *)this[1]; - } - return (struct _Unwind_Exception *)this[1]; - } - if ( v7 > a3 ) - v7 = a3; - v8 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); - lpuexcpt = (struct _Unwind_Exception *)(*(int (__thiscall **)(int, int, int))(*(_DWORD *)v8 + 32))(v8, a2, v7); - this[1] = lpuexcpt; - return lpuexcpt; -} -// 4BE0B0: using guessed type char var_19[25]; - -//----- (004BE2A0) -------------------------------------------------------- -void __thiscall std::wistream::basic_istream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 2; - std::ios_base::ios_base(this + 2); - v2 = a2[1]; - *((_WORD *)this + 62) = 0; - *((_BYTE *)this + 126) = 0; - this[1] = v2; - this[30] = 0; - v3 = *a2; - *this = &off_51AB4C; - this[32] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[2] = off_51AB60; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::wios::_M_cache_locale(v8, (int)(this + 29)); - this[32] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[30] = v5; - *((_WORD *)this + 62) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 126) = *((_BYTE *)lpuexcpt + 118); - a2[1] = 0; -} -// 4BE343: variable 'v6' is possibly undefined -// 51AB4C: using guessed type int (*off_51AB4C)(); -// 51AB60: using guessed type int (*off_51AB60[2])(); - -//----- (004BE3E0) -------------------------------------------------------- -void __thiscall std::wistream::basic_istream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+14h] [ebp-44h] - - v2 = this + 2; - std::ios_base::ios_base(this + 2); - this[30] = 0; - *((_WORD *)this + 62) = 0; - *((_BYTE *)this + 126) = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - *this = &off_51AB4C; - this[2] = off_51AB60; - this[1] = 0; - std::wios::init((int)v2, a2); -} -// 51AB4C: using guessed type int (*off_51AB4C)(); -// 51AB60: using guessed type int (*off_51AB60[2])(); - -//----- (004BE4C0) -------------------------------------------------------- -void __fastcall std::wistream::basic_istream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 8; - std::ios_base::ios_base((_DWORD *)(a1 + 8)); - *(_DWORD *)(a1 + 120) = 0; - *(_WORD *)(a1 + 124) = 0; - *(_BYTE *)(a1 + 126) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)a1 = &off_51AB4C; - *(_DWORD *)(a1 + 8) = off_51AB60; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); -} -// 51AB4C: using guessed type int (*off_51AB4C)(); -// 51AB60: using guessed type int (*off_51AB60[2])(); - -//----- (004BE5A0) -------------------------------------------------------- -int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // edx - char *v5; // ebx - std::ios_base *v6; // esi - int v7; // eax - int result; // eax - std::ios_base *v9; // [esp+4h] [ebp-18h] - - v3 = *a2; - v4 = a2[1]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = v4; - this[1] = a3[1]; - v5 = (char *)this + *(_DWORD *)(v3 - 12); - v6 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v5, v6, v9); - std::wios::_M_cache_locale(v5, (int)(v5 + 108)); - v7 = *((_DWORD *)v6 + 28); - *((_DWORD *)v5 + 30) = 0; - *((_DWORD *)v6 + 28) = 0; - *((_DWORD *)v5 + 28) = v7; - *((_WORD *)v5 + 58) = *((_WORD *)v6 + 58); - result = *((unsigned __int8 *)v6 + 118); - a3[1] = 0; - v5[118] = result; - return result; -} -// 4BE5D2: variable 'v9' is possibly undefined - -//----- (004BE620) -------------------------------------------------------- -BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3) -{ - int v3; // eax - int v4; // edx - int v5; // ebx - - v3 = *a2; - v4 = a2[1]; - v5 = *(_DWORD *)(*a2 - 12); - *this = *a2; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - return std::wios::init((int)this + *(_DWORD *)(v3 - 12), a3); -} - -//----- (004BE660) -------------------------------------------------------- -BOOL __thiscall std::wistream::basic_istream(int *this, int *a2) -{ - int v2; // eax - int v3; // edx - int v4; // ebx - - v2 = *a2; - v3 = a2[1]; - v4 = *(_DWORD *)(*a2 - 12); - *this = *a2; - *(int *)((char *)this + v4) = v3; - this[1] = 0; - return std::wios::init((int)this + *(_DWORD *)(v2 - 12), 0); -} - -//----- (004BE690) -------------------------------------------------------- -void __fastcall std::wistream::~wistream(char *Block) -{ - char *v2; // ecx - - v2 = Block + 8; - *((_DWORD *)v2 - 2) = &off_51AB4C; - *((_DWORD *)v2 - 1) = 0; - *(_DWORD *)v2 = &off_51B7E0; - std::ios_base::~ios_base((int)v2); - operator delete(Block); -} -// 51AB4C: using guessed type int (*off_51AB4C)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004BE6C0) -------------------------------------------------------- -void __fastcall std::wistream::~wistream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_51AB4C; - v1 = a1 + 2; - *(v1 - 1) = 0; - *v1 = &off_51B7E0; - std::ios_base::~ios_base((int)v1); -} -// 51AB4C: using guessed type int (*off_51AB4C)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004BE6E0) -------------------------------------------------------- -int __thiscall std::wistream::~wistream(int *this, int *a2) -{ - int v2; // eax - int result; // eax - - v2 = *a2; - *this = *a2; - result = *(_DWORD *)(v2 - 12); - *(int *)((char *)this + result) = a2[1]; - this[1] = 0; - return result; -} - -//----- (004BE700) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - return this; -} -// 4BE73D: variable 'v9' is possibly undefined - -//----- (004BE7C0) -------------------------------------------------------- -int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)) -{ - return a2(this); -} - -//----- (004BE7D0) -------------------------------------------------------- -char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004BE7F0) -------------------------------------------------------- -char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004BE810) -------------------------------------------------------- -_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2) -{ - char *v2; // ecx - int v3; // eax - char v6; // [esp+5Eh] [ebp-1Ah] BYREF - char v7[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v2 = (char *)this + *(_DWORD *)(*this - 12); - if ( !a2 ) - { - v3 = 4; - goto LABEL_9; - } - if ( !std::__copy_streambufs_eof>(*((_DWORD **)v2 + 30), a2, v7) ) - { - v2 = (char *)this + *(_DWORD *)(*this - 12); - v3 = v7[0] == 0 ? 4 : 6; - goto LABEL_9; - } - if ( v7[0] ) - { - v3 = 2; - v2 = (char *)this + *(_DWORD *)(*this - 12); -LABEL_9: - std::wios::clear(v2, *((_DWORD *)v2 + 5) | v3); - } - } - else if ( !a2 ) - { - v3 = 4; - v2 = (char *)this + *(_DWORD *)(*this - 12); - goto LABEL_9; - } - return this; -} -// 4BE810: using guessed type char var_19[25]; - -//----- (004BEA30) -------------------------------------------------------- -char *__thiscall std::wistream::operator>>(char *this, _DWORD *a2) -{ - char *v2; // edi - int v3; // ecx - char v6; // [esp+67h] [ebp-21h] BYREF - int v7; // [esp+68h] [ebp-20h] BYREF - int v8[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v6, this, 0); - if ( v6 ) - { - v7 = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - &v7, - v8); - *a2 = v8[0]; - if ( v7 ) - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v7); - } - return this; -} -// 4BEA30: using guessed type int var_1C[7]; - -//----- (004BEC30) -------------------------------------------------------- -char *__thiscall std::wistream::operator>>(char *this, _WORD *a2) -{ - char *v2; // edi - int v3; // ecx - int v4; // eax - char v7; // [esp+67h] [ebp-21h] BYREF - int v8; // [esp+68h] [ebp-20h] BYREF - int v9[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v7, this, 0); - if ( v7 ) - { - v8 = 0; - v2 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; - v3 = *((_DWORD *)v2 + 33); - if ( !v3 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, _DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v3 + 12))( - v3, - *((_DWORD *)v2 + 30), - 0xFFFF, - 0, - 0xFFFF, - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - &v8, - v9); - v4 = v8; - if ( v9[0] >= -32768 ) - { - if ( v9[0] > 0x7FFF ) - { - v8 |= 4u; - v4 = v8; - *a2 = 0x7FFF; - goto LABEL_9; - } - *a2 = v9[0]; - } - else - { - v4 = v8 | 4; - v8 |= 4u; - *a2 = 0x8000; - } - if ( !v4 ) - return this; -LABEL_9: - std::wios::clear( - &this[*(_DWORD *)(*(_DWORD *)this - 12)], - *(_DWORD *)&this[*(_DWORD *)(*(_DWORD *)this - 12) + 20] | v4); - } - return this; -} -// 4BED43: conditional instruction was optimized away because eax.4>=4u -// 4BEC30: using guessed type int var_1C[7]; - -//----- (004BEE70) -------------------------------------------------------- -int *__thiscall std::wostream::put(int *this, unsigned __int16 a2) -{ - _DWORD *v2; // ecx - unsigned int v3; // eax - unsigned int v4; // eax - int v5; // ecx - int v7; // [esp+0h] [ebp-78h] - unsigned __int16 lpuexcpt; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+14h] [ebp-64h] - int v11; // [esp+58h] [ebp-20h] BYREF - _DWORD *v12; // [esp+5Ch] [ebp-1Ch] - - lpuexcpt = a2; - std::wostream::sentry::sentry(&v11, this); - if ( (_BYTE)v11 ) - { - v2 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); - v3 = v2[5]; - if ( v3 >= v2[6] ) - { - lpuexcpt = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v2 + 52))(v2, a2); - } - else - { - v4 = v3 + 2; - *(_WORD *)(v4 - 2) = a2; - v2[5] = v4; - } - if ( lpuexcpt == 0xFFFF ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v12 + *(_DWORD *)(*v12 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v7) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12)), - *(_DWORD *)((char *)v12 + *(_DWORD *)(*v12 - 12) + 20) | 1); - } - } - return this; -} -// 4BEF27: variable 'v7' is possibly undefined - -//----- (004BF080) -------------------------------------------------------- -void __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v2; // ebx - std::ios_base *v3; // esi - std::ios_base *v4; // eax - __int16 v5; // dx - std::ios_base *v6; // [esp+4h] [ebp-58h] - - v2 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v2, v3, v6); - std::wios::_M_cache_locale(v2, (int)(v2 + 27)); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - v4 = v2[28]; - v2[28] = (std::ios_base *)*((_DWORD *)v3 + 28); - v5 = *((_WORD *)v3 + 58); - *((_DWORD *)v3 + 28) = v4; - LOWORD(v4) = *((_WORD *)v2 + 58); - *((_WORD *)v2 + 58) = v5; - LOBYTE(v5) = *((_BYTE *)v2 + 118); - *((_WORD *)v3 + 58) = (_WORD)v4; - *((_BYTE *)v2 + 118) = *((_BYTE *)v3 + 118); - *((_BYTE *)v3 + 118) = v5; -} -// 4BF0B7: variable 'v6' is possibly undefined - -//----- (004BF130) -------------------------------------------------------- -_DWORD *__fastcall std::wostream::flush(_DWORD *a1) -{ - int v1; // ecx - - v1 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - if ( v1 && (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 24))(v1) == -1 ) - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - return a1; -} - -//----- (004BF280) -------------------------------------------------------- -_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) -{ - char *v5; // edi - _DWORD *v6; // eax - int v7; // edi - void (__thiscall *v8)(int *, _DWORD *, int, int, int, int, int); // eax - _DWORD *v10; // [esp+0h] [ebp-A8h] - int v12[14]; // [esp+70h] [ebp-38h] BYREF - - v5 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v5[20] & 5) == 0 ) - { - v6 = (_DWORD *)*((_DWORD *)v5 + 30); - v7 = *v6; - v12[6] = a4; - v10 = v6; - v8 = *(void (__thiscall **)(int *, _DWORD *, int, int, int, int, int))(v7 + 20); - v12[4] = a2; - v12[5] = a3; - v12[7] = a5; - v8(v12, v10, a2, a3, a4, a5, 16); - if ( (v12[0] & v12[1]) == -1 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - return this; -} - -//----- (004BF440) -------------------------------------------------------- -_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4) -{ - char *v4; // edi - int v7[10]; // [esp+60h] [ebp-28h] BYREF - - v4 = (char *)this + *(_DWORD *)(*this - 12); - if ( (v4[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v4 + 30) + 16))( - v7, - *((_DWORD *)v4 + 30), - a2, - a3, - a4, - 16); - if ( (v7[0] & v7[1]) == -1 ) - std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); - } - return this; -} - -//----- (004BF5D0) -------------------------------------------------------- -_DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2) -{ - int v2; // eax - char *v3; // esi - int v6[10]; // [esp+60h] [ebp-28h] BYREF - - v2 = *a2; - *this = -1; - this[1] = -1; - v3 = (char *)a2 + *(_DWORD *)(v2 - 12); - this[2] = 0; - if ( (v3[20] & 5) == 0 ) - { - (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( - v6, - *((_DWORD *)v3 + 30), - 0, - 0, - 1, - 16); - *this = v6[0]; - this[1] = v6[1]; - this[2] = v6[2]; - } - return this; -} - -//----- (004BF750) -------------------------------------------------------- -int *__thiscall std::wostream::write(int *this, int a2, int a3) -{ - int v3; // ecx - int v4; // ecx - int v6; // [esp+0h] [ebp-78h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - int v9; // [esp+58h] [ebp-20h] BYREF - _DWORD *v10; // [esp+5Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v9, this); - if ( (_BYTE)v9 ) - { - v3 = *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120); - if ( a3 != (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v3 + 48))(v3, a2, a3) ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v10 + *(_DWORD *)(*v10 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpt + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v6) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), - *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); - } - } - return this; -} -// 4BF7FF: variable 'v6' is possibly undefined - -//----- (004BF920) -------------------------------------------------------- -int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) -{ - int v3; // eax - char *v4; // ecx - int result; // eax - - *(_BYTE *)this = 0; - v3 = *a2; - this[1] = a2; - v4 = (char *)a2 + *(_DWORD *)(v3 - 12); - result = *((_DWORD *)v4 + 5); - if ( *((_DWORD *)v4 + 28) ) - { - if ( result ) - return std::wios::clear(v4, result | 4); - std::wostream::flush(*((_DWORD **)v4 + 28)); - result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); - v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - if ( result ) - return std::wios::clear(v4, result | 4); - *(_BYTE *)this = 1; - return result; -} - -//----- (004BF980) -------------------------------------------------------- -int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) -{ - int v3; // eax - char *v4; // ecx - int result; // eax - - *(_BYTE *)this = 0; - v3 = *a2; - this[1] = a2; - v4 = (char *)a2 + *(_DWORD *)(v3 - 12); - result = *((_DWORD *)v4 + 5); - if ( *((_DWORD *)v4 + 28) ) - { - if ( result ) - return std::wios::clear(v4, result | 4); - std::wostream::flush(*((_DWORD **)v4 + 28)); - result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); - v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); - } - if ( result ) - return std::wios::clear(v4, result | 4); - *(_BYTE *)this = 1; - return result; -} - -//----- (004BF9E0) -------------------------------------------------------- -void __fastcall std::wostream::sentry::~sentry(int a1) -{ - int v2; // ebx - int v3; // ecx - _DWORD *v4; // ecx - - if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) - { - v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); - if ( !std::uncaught_exception() ) - { - v3 = *(_DWORD *)(v2 + 120); - if ( v3 ) - { - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) - { - v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); - std::wios::clear(v4, v4[5] | 1); - } - } - } - } -} - -//----- (004BFA70) -------------------------------------------------------- -void __fastcall std::wostream::sentry::~sentry(int a1) -{ - int v2; // ebx - int v3; // ecx - _DWORD *v4; // ecx - - if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) - { - v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); - if ( !std::uncaught_exception() ) - { - v3 = *(_DWORD *)(v2 + 120); - if ( v3 ) - { - if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) - { - v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); - std::wios::clear(v4, v4[5] | 1); - } - } - } - } -} - -//----- (004BFB00) -------------------------------------------------------- -int __thiscall std::wostream::_M_write(_DWORD *this, int a2, int a3) -{ - int v4; // ecx - int result; // eax - - v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); - result = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 48))(v4, a2, a3); - if ( a3 != result ) - return std::wios::clear( - (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), - *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - return result; -} - -//----- (004BFB50) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-88h] - int v9; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] - int v13; // [esp+68h] [ebp-20h] BYREF - _DWORD *v14; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int))(*(_DWORD *)v9 + 36))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4BFC18: variable 'v3' is possibly undefined -// 4BFC6C: variable 'v8' is possibly undefined - -//----- (004BFDC0) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-98h] - int v9; // [esp+2Ch] [ebp-6Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - int v13; // [esp+78h] [ebp-20h] BYREF - _DWORD *v14; // [esp+7Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, _DWORD))(*(_DWORD *)v9 + 8))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4BFE98: variable 'v3' is possibly undefined -// 4BFEEC: variable 'v8' is possibly undefined - -//----- (004C0040) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, double a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-98h] - int v9; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - int v13; // [esp+78h] [ebp-20h] BYREF - _DWORD *v14; // [esp+7Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v9 + 28))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - LODWORD(a2), - HIDWORD(a2)); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4C010B: variable 'v3' is possibly undefined -// 4C015F: variable 'v8' is possibly undefined - -//----- (004C02B0) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, long double a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-88h] - int v10; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] - int v14; // [esp+68h] [ebp-20h] BYREF - _DWORD *v15; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v14, this); - if ( (_BYTE)v14 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v10 = *((_DWORD *)lpuexcpt + 32); - if ( !v10 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v10 + 32))( - v10, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - LODWORD(a2), - DWORD1(a2), - HIDWORD(a2)); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v15 + *(_DWORD *)(*v15 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), - *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); - } - } - return this; -} -// 4C0372: variable 'v3' is possibly undefined -// 4C03C6: variable 'v8' is possibly undefined - -//----- (004C0520) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-88h] - int v9; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] - int v13; // [esp+68h] [ebp-20h] BYREF - _DWORD *v14; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int))(*(_DWORD *)v9 + 12))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4C05E8: variable 'v3' is possibly undefined -// 4C063C: variable 'v8' is possibly undefined - -//----- (004C0790) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2) -{ - unsigned __int16 v2; // ax - char v3; // dl - int v4; // ecx - int v6; // ecx - int v7; // edx - int v8; // [esp+0h] [ebp-88h] - int v9; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-64h] - int v13; // [esp+68h] [ebp-20h] BYREF - _DWORD *v14; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v13, this); - if ( (_BYTE)v13 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v9 = *((_DWORD *)lpuexcpt + 32); - if ( !v9 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v2 = *((_WORD *)lpuexcpt + 58); - } - else - { - v6 = *((_DWORD *)lpuexcpt + 31); - if ( !v6 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v6 + 40))(v6, 32); - v7 = *this; - *((_WORD *)lpuexcpt + 58) = v2; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v7 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int))(*(_DWORD *)v9 + 16))( - v9, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v2, - a2); - if ( v3 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v14 + *(_DWORD *)(*v14 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpta + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v8) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), - *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); - } - } - return this; -} -// 4C0858: variable 'v3' is possibly undefined -// 4C08AC: variable 'v8' is possibly undefined - -//----- (004C0A00) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) -{ - unsigned __int16 v3; // ax - char v4; // dl - int v5; // ecx - int v7; // ecx - int v8; // edx - int v9; // [esp+0h] [ebp-98h] - int v10; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - int v14; // [esp+78h] [ebp-20h] BYREF - _DWORD *v15; // [esp+7Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v14, this); - if ( (_BYTE)v14 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v10 = *((_DWORD *)lpuexcpt + 32); - if ( !v10 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v3 = *((_WORD *)lpuexcpt + 58); - } - else - { - v7 = *((_DWORD *)lpuexcpt + 31); - if ( !v7 ) - std::__throw_bad_cast(); - v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 40))(v7, 32); - v8 = *this; - *((_WORD *)lpuexcpt + 58) = v3; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v8 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int, int))(*(_DWORD *)v10 + 20))( - v10, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v3, - a2, - a3); - if ( v4 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v15 + *(_DWORD *)(*v15 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v9) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), - *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); - } - } - return this; -} -// 4C0ADC: variable 'v4' is possibly undefined -// 4C0B30: variable 'v9' is possibly undefined - -//----- (004C0C80) -------------------------------------------------------- -int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) -{ - unsigned __int16 v3; // ax - char v4; // dl - int v5; // ecx - int v7; // ecx - int v8; // edx - int v9; // [esp+0h] [ebp-98h] - int v10; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - struct _Unwind_Exception *lpuexcpta; // [esp+34h] [ebp-64h] - int v14; // [esp+78h] [ebp-20h] BYREF - _DWORD *v15; // [esp+7Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v14, this); - if ( (_BYTE)v14 ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(*this - 12)); - v10 = *((_DWORD *)lpuexcpt + 32); - if ( !v10 ) - std::__throw_bad_cast(); - if ( *((_BYTE *)lpuexcpt + 118) ) - { - v3 = *((_WORD *)lpuexcpt + 58); - } - else - { - v7 = *((_DWORD *)lpuexcpt + 31); - if ( !v7 ) - std::__throw_bad_cast(); - v3 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v7 + 40))(v7, 32); - v8 = *this; - *((_WORD *)lpuexcpt + 58) = v3; - *((_BYTE *)lpuexcpt + 118) = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v8 - 12)); - } - (*(void (__thiscall **)(int, _DWORD, bool, struct _Unwind_Exception *, _DWORD, int, int))(*(_DWORD *)v10 + 24))( - v10, - *((_DWORD *)lpuexcpt + 30), - *((_DWORD *)lpuexcpt + 30) == 0, - lpuexcpt, - v3, - a2, - a3); - if ( v4 ) - std::wios::clear( - (int *)((char *)this + *(_DWORD *)(*this - 12)), - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); - } - lpuexcpta = (struct _Unwind_Exception *)((char *)v15 + *(_DWORD *)(*v15 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v5 = *((_DWORD *)lpuexcpta + 30); - if ( v5 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v5 + 24))(v5, v9) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), - *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); - } - } - return this; -} -// 4C0D5C: variable 'v4' is possibly undefined -// 4C0DB0: variable 'v9' is possibly undefined - -//----- (004C0F00) -------------------------------------------------------- -void __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - std::ios_base *v3; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v5; // [esp+14h] [ebp-44h] - - v5 = this + 1; - std::ios_base::ios_base(this + 1); - *((_WORD *)this + 60) = 0; - this[29] = 0; - *((_BYTE *)this + 122) = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_51AB74; - this[1] = off_51AB88; - lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v5, lpuexcpt, v3); - std::wios::_M_cache_locale(v5, (int)(this + 28)); - v2 = *((_DWORD *)lpuexcpt + 28); - this[31] = 0; - *((_DWORD *)lpuexcpt + 28) = 0; - this[29] = v2; - *((_WORD *)this + 60) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 122) = *((_BYTE *)lpuexcpt + 118); -} -// 4C0F96: variable 'v3' is possibly undefined -// 51AB74: using guessed type int (*off_51AB74)(); -// 51AB88: using guessed type int (*off_51AB88[2])(); - -//----- (004C1020) -------------------------------------------------------- -void __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+14h] [ebp-44h] - - v2 = this + 1; - std::ios_base::ios_base(this + 1); - this[29] = 0; - *((_WORD *)this + 60) = 0; - *((_BYTE *)this + 122) = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_51AB74; - this[1] = off_51AB88; - std::wios::init((int)v2, a2); -} -// 51AB74: using guessed type int (*off_51AB74)(); -// 51AB88: using guessed type int (*off_51AB88[2])(); - -//----- (004C1100) -------------------------------------------------------- -int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) -{ - int result; // eax - - std::ios_base::ios_base(this + 1); - result = 0; - *((_BYTE *)this + 122) = 0; - this[29] = 0; - *((_WORD *)this + 60) = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - *this = &off_51AB74; - this[1] = off_51AB88; - return result; -} -// 51AB74: using guessed type int (*off_51AB74)(); -// 51AB88: using guessed type int (*off_51AB88[2])(); - -//----- (004C1160) -------------------------------------------------------- -void __fastcall std::wostream::basic_ostream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 4; - std::ios_base::ios_base((_DWORD *)(a1 + 4)); - *(_DWORD *)(a1 + 116) = 0; - *(_WORD *)(a1 + 120) = 0; - *(_BYTE *)(a1 + 122) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)a1 = &off_51AB74; - *(_DWORD *)(a1 + 4) = off_51AB88; - std::wios::init(v1, 0); -} -// 51AB74: using guessed type int (*off_51AB74)(); -// 51AB88: using guessed type int (*off_51AB88[2])(); - -//----- (004C1240) -------------------------------------------------------- -int __thiscall std::wostream::basic_ostream(_DWORD *this, _DWORD *a2, _DWORD *a3) -{ - int v3; // eax - char *v4; // ebx - std::ios_base *v5; // esi - int v6; // eax - int result; // eax - std::ios_base *v8; // [esp+4h] [ebp-18h] - - v3 = a2[1]; - v4 = (char *)this + *(_DWORD *)(*a2 - 12); - *this = *a2; - *(_DWORD *)v4 = v3; - v5 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v4, v5, v8); - std::wios::_M_cache_locale(v4, (int)(v4 + 108)); - v6 = *((_DWORD *)v5 + 28); - *((_DWORD *)v4 + 30) = 0; - *((_DWORD *)v5 + 28) = 0; - *((_DWORD *)v4 + 28) = v6; - *((_WORD *)v4 + 58) = *((_WORD *)v5 + 58); - result = *((unsigned __int8 *)v5 + 118); - v4[118] = result; - return result; -} -// 4C1265: variable 'v8' is possibly undefined - -//----- (004C12B0) -------------------------------------------------------- -BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) -{ - int v3; // edx - int v4; // eax - int *v5; // ecx - - v3 = *a2; - v4 = a2[1]; - *this = *a2; - v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); - *v5 = v4; - return std::wios::init((int)v5, a3); -} - -//----- (004C12E0) -------------------------------------------------------- -int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) -{ - int v3; // edx - int result; // eax - - v3 = *a2; - result = a2[1]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = result; - return result; -} - -//----- (004C1300) -------------------------------------------------------- -BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2) -{ - int v2; // edx - int v3; // eax - _DWORD *v4; // ecx - - v2 = *a2; - v3 = a2[1]; - *this = *a2; - v4 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v4 = v3; - return std::wios::init((int)v4, 0); -} - -//----- (004C1320) -------------------------------------------------------- -void __fastcall std::wostream::~wostream(char *Block) -{ - char *v2; // ecx - - v2 = Block + 4; - *((_DWORD *)v2 - 1) = &off_51AB74; - *(_DWORD *)v2 = &off_51B7E0; - std::ios_base::~ios_base((int)v2); - operator delete(Block); -} -// 51AB74: using guessed type int (*off_51AB74)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004C1350) -------------------------------------------------------- -void __fastcall std::wostream::~wostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_51AB74; - v1 = a1 + 1; - *v1 = &off_51B7E0; - std::ios_base::~ios_base((int)v1); -} -// 51AB74: using guessed type int (*off_51AB74)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004C1370) -------------------------------------------------------- -int __thiscall std::wostream::~wostream(int *this, int *a2) -{ - int v2; // eax - int result; // eax - - v2 = *a2; - *this = *a2; - result = *(_DWORD *)(v2 - 12); - *(int *)((char *)this + result) = a2[1]; - return result; -} - -//----- (004C1390) -------------------------------------------------------- -_DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base *v3; // ebx - std::ios_base **v4; // esi - std::ios_base *v5; // eax - __int16 v6; // dx - std::ios_base *v8; // [esp+4h] [ebp-18h] - - v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - v4 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - std::ios_base::_M_swap(v4, v3, v8); - std::wios::_M_cache_locale(v4, (int)(v4 + 27)); - std::wios::_M_cache_locale(v3, (int)v3 + 108); - v5 = v4[28]; - v4[28] = (std::ios_base *)*((_DWORD *)v3 + 28); - v6 = *((_WORD *)v3 + 58); - *((_DWORD *)v3 + 28) = v5; - LOWORD(v5) = *((_WORD *)v4 + 58); - *((_WORD *)v4 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v4 + 118); - *((_WORD *)v3 + 58) = (_WORD)v5; - *((_BYTE *)v4 + 118) = *((_BYTE *)v3 + 118); - *((_BYTE *)v3 + 118) = v6; - return this; -} -// 4C13CA: variable 'v8' is possibly undefined - -//----- (004C1440) -------------------------------------------------------- -int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)) -{ - return a2(this); -} - -//----- (004C1450) -------------------------------------------------------- -char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004C1470) -------------------------------------------------------- -char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) -{ - a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); - return this; -} - -//----- (004C14A0) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2) -{ - char *v2; // ecx - int v3; // eax - int v4; // ecx - int v6; // [esp+0h] [ebp-78h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-64h] - char v9; // [esp+57h] [ebp-21h] BYREF - int v10; // [esp+58h] [ebp-20h] BYREF - _DWORD *v11; // [esp+5Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v10, this); - if ( (_BYTE)v10 ) - { - v2 = (char *)this + *(_DWORD *)(*this - 12); - if ( !a2 ) - { - v3 = 1; - goto LABEL_13; - } - if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v2 + 30), &v9) ) - { - v3 = 4; - v2 = (char *)this + *(_DWORD *)(*this - 12); -LABEL_13: - std::wios::clear(v2, *((_DWORD *)v2 + 5) | v3); - } - } - else if ( !a2 ) - { - v3 = 1; - v2 = (char *)this + *(_DWORD *)(*this - 12); - goto LABEL_13; - } - lpuexcpt = (struct _Unwind_Exception *)((char *)v11 + *(_DWORD *)(*v11 - 12)); - if ( (*((_BYTE *)lpuexcpt + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v4 = *((_DWORD *)lpuexcpt + 30); - if ( v4 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 24))(v4, v6) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12)), - *(_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12) + 20) | 1); - } - } - return this; -} -// 4C157B: variable 'v6' is possibly undefined - -//----- (004C16B0) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2) -{ - return std::wostream::_M_insert(this, a2); -} - -//----- (004C16E0) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, float a2) -{ - return std::wostream::_M_insert(this, a2); -} - -//----- (004C1740) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) -{ - int v2; // eax - - v2 = *(int *)((char *)this + *(_DWORD *)(*this - 12) + 12) & 0x4A; - if ( v2 == 64 || v2 == 8 ) - return std::wostream::_M_insert(this, a2); - else - return std::wostream::_M_insert(this, (__int16)a2); -} - -//----- (004C1780) -------------------------------------------------------- -int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) -{ - return std::wostream::_M_insert(this, a2); -} - -//----- (004C17B0) -------------------------------------------------------- -void __thiscall std::random_device::_M_init_pretr1(_DWORD *this, unsigned __int8 **a2) -{ - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v4[24]; // [esp+60h] [ebp-18h] BYREF - - if ( !std::string::compare((int)a2, "mt19937") || (unsigned int)**a2 - 48 <= 9 ) - { - Block[0] = v4; - std::string::_M_construct(Block, "default", (int)""); - std::random_device::_M_init(this, (int)Block); - if ( Block[0] != v4 ) - operator delete(Block[0]); - } - else - { - std::random_device::_M_init(this, (int)a2); - } -} - -//----- (004C18C0) -------------------------------------------------------- -void __userpurge std::random_device::_M_init_pretr1(_DWORD *a1@, std::random_device **this, const std::string *a3) -{ - unsigned int v3; // [esp+8h] [ebp-14h] - - std::random_device::_M_init(a1, *this, *((const char **)*this - 3), v3); -} -// 4C18D3: variable 'v3' is possibly undefined - -//----- (004C1900) -------------------------------------------------------- -int __fastcall std::random_device::_M_fini(int *a1) -{ - int result; // eax - - result = *a1; - if ( *a1 ) - { - result = close(a1[2]); - a1[2] = -1; - *a1 = 0; - } - return result; -} - -//----- (004C1940) -------------------------------------------------------- -void __userpurge std::random_device::_M_init( - _DWORD *a1@, - std::random_device *this, - const char *a3, - unsigned int a4) -{ - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v6[24]; // [esp+60h] [ebp-18h] BYREF - - Block[0] = v6; - std::string::_M_construct(Block, this, (int)this + (_DWORD)a3); - std::random_device::_M_init(a1, (int)Block); - if ( Block[0] != v6 ) - operator delete(Block[0]); -} - -//----- (004C1A00) -------------------------------------------------------- -void *__thiscall std::random_device::_M_init(_DWORD *this, int a2) -{ - void *result; // eax - unsigned int v5; // kr00_4 - unsigned int v6; // kr04_4 - unsigned int v7; // kr08_4 - unsigned int v17; // kr0C_4 - unsigned int v18; // kr10_4 - unsigned int v19; // kr14_4 - unsigned int v34; // [esp-4h] [ebp-20h] - unsigned int v35; // [esp-4h] [ebp-20h] - - *this = 0; - this[1] = 0; - this[2] = -1; - result = (void *)std::string::compare(a2, "default"); - if ( !result ) - { -LABEL_2: - this[1] = std::`anonymous namespace'::__winxp_rand_s; - return result; - } - if ( std::string::compare(a2, "rdseed") ) - { - if ( std::string::compare(a2, "rdrand") && std::string::compare(a2, "rdrnd") ) - { - result = (void *)std::string::compare(a2, "rand_s"); - if ( result ) - std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&): unsupported token"); - goto LABEL_2; - } - v5 = __readeflags(); - v34 = v5; - v6 = __readeflags(); - __writeeflags(v6 ^ 0x200000); - v7 = __readeflags(); - __writeeflags(v34); - if ( ((v6 ^ v7) & 0x200000) != 0 ) - { - _EAX = 0; - __asm { cpuid } - if ( _EAX ) - { - if ( _EBX == 1970169159 || _EBX == 1752462657 ) - { - _EAX = 1; - __asm { cpuid } - if ( (_ECX & 0x40000000) != 0 ) - { - this[1] = std::`anonymous namespace'::__x86_rdrand; - return result; - } - } - } - } -LABEL_20: - std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&): device not available"); - } - v17 = __readeflags(); - v35 = v17; - v18 = __readeflags(); - __writeeflags(v18 ^ 0x200000); - v19 = __readeflags(); - __writeeflags(v35); - if ( ((v18 ^ v19) & 0x200000) == 0 ) - goto LABEL_20; - __asm { cpuid } - if ( !_EAX || _EBX != 1970169159 && _EBX != 1752462657 ) - goto LABEL_20; - _EAX = 7; - __asm { cpuid } - if ( (_EBX & 0x40000) == 0 ) - goto LABEL_20; - _EAX = 1; - __asm { cpuid } - result = std::`anonymous namespace'::__x86_rdseed; - if ( (_ECX & 0x40000000) != 0 ) - result = std::`anonymous namespace'::__x86_rdseed_rdrand; - this[1] = result; - return result; -} - -//----- (004C1BA0) -------------------------------------------------------- -void __userpurge std::random_device::_M_init(_DWORD *a1@, std::random_device **this, const std::string *a3) -{ - unsigned int v3; // [esp+8h] [ebp-14h] - - std::random_device::_M_init(a1, *this, *((const char **)*this - 3), v3); -} -// 4C1BB3: variable 'v3' is possibly undefined - -//----- (004C1BD0) -------------------------------------------------------- -int __fastcall std::random_device::_M_getval(int a1) -{ - int (__cdecl *v1)(_DWORD); // eax - unsigned int MaxCharCount; // ebx - int *DstBuf; // esi - int v6; // eax - int v7; // [esp+1Ch] [ebp-20h] BYREF - - v1 = *(int (__cdecl **)(_DWORD))(a1 + 4); - if ( v1 ) - return v1(0); - MaxCharCount = 4; - DstBuf = &v7; - do - { - while ( 1 ) - { - v6 = read(*(_DWORD *)(a1 + 8), DstBuf, MaxCharCount); - if ( v6 > 0 ) - break; - if ( v6 != -1 || *__errno() != 4 ) - std::__throw_runtime_error((std::runtime_error *)"random_device could not be read"); - } - DstBuf = (int *)((char *)DstBuf + v6); - MaxCharCount -= v6; - } - while ( MaxCharCount ); - return v7; -} - -//----- (004C1C50) -------------------------------------------------------- -void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const char *a3) -{ - int v3; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_51AB98; - std::string::string(a1 + 1, (char *)this, (int)&v3); -} -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); - -//----- (004C1CE0) -------------------------------------------------------- -void __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_51AB98; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); -} -// 4C1D34: variable 'v2' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); - -//----- (004C1D70) -------------------------------------------------------- -void __userpurge std::runtime_error::runtime_error( - _DWORD *a1@, - std::runtime_error *this, - const std::runtime_error *a3) -{ - const std::string *v3; // [esp+4h] [ebp-58h] - - *a1 = &off_51AB98; - std::string::string(a1 + 1, (std::runtime_error *)((char *)this + 4), v3); -} -// 4C1DAE: variable 'v3' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); - -//----- (004C1DD0) -------------------------------------------------------- -void __userpurge std::runtime_error::runtime_error(_DWORD *a1@, std::runtime_error *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51AB98; - std::string::string(a1 + 1, this, v3); -} -// 4C1E18: variable 'v3' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); - -//----- (004C1E50) -------------------------------------------------------- -void __fastcall std::runtime_error::~runtime_error(void *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4C1E56: variable 'Block' is possibly undefined - -//----- (004C1E70) -------------------------------------------------------- -void __cdecl std::runtime_error::~runtime_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51AB98; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4C1E7B: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 4C1E70: using guessed type int var_D[3]; - -//----- (004C1ED0) -------------------------------------------------------- -int *__thiscall std::runtime_error::operator=(int *this, int a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this + 1, (std::string *)(a2 + 4), v4); - return this; -} -// 4C1F08: variable 'v4' is possibly undefined - -//----- (004C1F30) -------------------------------------------------------- -int *__thiscall std::runtime_error::operator=(int *this, int a2) -{ - const std::string *v4; // [esp+4h] [ebp-58h] - - std::string::assign(this + 1, (std::string *)(a2 + 4), v4); - return this; -} -// 4C1F68: variable 'v4' is possibly undefined - -//----- (004C1F90) -------------------------------------------------------- -int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) -{ - volatile signed __int32 *v1; // ecx - int result; // eax - - v1 = *a1; - if ( v1 ) - return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); - return result; -} - -//----- (004C1FA0) -------------------------------------------------------- -int __thiscall std::ifstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 2, a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C2010) -------------------------------------------------------- -int __thiscall std::ifstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 2, a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C2080) -------------------------------------------------------- -int __thiscall std::ifstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 2, *a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C20F0) -------------------------------------------------------- -void __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // edi - std::ios_base *v4; // esi - std::ios_base *v5; // edx - char v6; // cl - char v7; // cl - int v8; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::filebuf::swap((int)(this + 2), (int)(a2 + 2)); -} -// 4C2130: variable 'v9' is possibly undefined - -//----- (004C21C0) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::ifstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::filebuf::close((struct _Unwind_Exception *)(a1 + 2)); - if ( !result ) - return (struct _Unwind_Exception *)std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004C2200) -------------------------------------------------------- -bool __fastcall std::ifstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 48)); -} - -//----- (004C2210) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 29; - std::ios_base::ios_base(this + 29); - *((_WORD *)this + 116) = 0; - v2 = a2[1]; - *this = &unk_515A68; - this[1] = v2; - this[57] = 0; - v3 = *a2; - this[59] = 0; - this[60] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[29] = &unk_515A7C; - this[61] = 0; - this[62] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 56)); - this[59] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[57] = v5; - *((_WORD *)this + 116) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; - *this = off_51ABB0; - this[29] = off_51ABC4; - std::filebuf::basic_filebuf((int)(this + 2), (std::locale *)(a2 + 2)); - this[59] = this + 2; -} -// 4C22B5: variable 'v6' is possibly undefined -// 51ABB0: using guessed type int (*off_51ABB0[2])(); -// 51ABC4: using guessed type int (*off_51ABC4[2])(); - -//----- (004C23A0) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 29; - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_515A68; - this[29] = &unk_515A7C; - this[1] = 0; - std::ios::init((int)v5, 0); - *this = off_51ABB0; - this[29] = off_51ABC4; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)v5, (int)(this + 2)); - v3 = std::filebuf::open(this + 2, a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 51ABB0: using guessed type int (*off_51ABB0[2])(); -// 51ABC4: using guessed type int (*off_51ABC4[2])(); - -//----- (004C2550) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 29; - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_515A68; - this[29] = &unk_515A7C; - this[1] = 0; - std::ios::init((int)v5, 0); - *this = off_51ABB0; - this[29] = off_51ABC4; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)v5, (int)(this + 2)); - v3 = std::filebuf::open(this + 2, a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 51ABB0: using guessed type int (*off_51ABB0[2])(); -// 51ABC4: using guessed type int (*off_51ABC4[2])(); - -//----- (004C2700) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 29; - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_515A68; - this[29] = &unk_515A7C; - this[1] = 0; - std::ios::init((int)v5, 0); - *this = off_51ABB0; - this[29] = off_51ABC4; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)v5, (int)(this + 2)); - v3 = std::filebuf::open(this + 2, *a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 51ABB0: using guessed type int (*off_51ABB0[2])(); -// 51ABC4: using guessed type int (*off_51ABC4[2])(); - -//----- (004C28B0) -------------------------------------------------------- -void __fastcall std::ifstream::basic_ifstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 116; - std::ios_base::ios_base((_DWORD *)(a1 + 116)); - *(_DWORD *)(a1 + 228) = 0; - *(_WORD *)(a1 + 232) = 0; - *(_DWORD *)(a1 + 236) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)a1 = &unk_515A68; - *(_DWORD *)(a1 + 116) = &unk_515A7C; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)a1 = off_51ABB0; - *(_DWORD *)(a1 + 116) = off_51ABC4; - std::filebuf::basic_filebuf(a1 + 8); - std::ios::init(v1, a1 + 8); -} -// 51ABB0: using guessed type int (*off_51ABB0[2])(); -// 51ABC4: using guessed type int (*off_51ABC4[2])(); - -//----- (004C2A00) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - std::ios_base *v10; // [esp+4h] [ebp-54h] - std::ios_base *v11; // [esp+10h] [ebp-48h] - char *v12; // [esp+14h] [ebp-44h] - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - v12 = (char *)this + *(_DWORD *)(v4 - 12); - v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v12, v11, v10); - std::ios::_M_cache_locale(v12, (int)(v12 + 108)); - v7 = *((_DWORD *)v11 + 28); - *((_DWORD *)v12 + 30) = 0; - *((_DWORD *)v11 + 28) = 0; - v8 = a2[3]; - *((_DWORD *)v12 + 28) = v7; - *((_WORD *)v12 + 58) = *((_WORD *)v11 + 58); - a3[1] = 0; - v9 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; - std::filebuf::basic_filebuf((int)(this + 2), (std::locale *)(a3 + 2)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 2); -} -// 4C2A67: variable 'v10' is possibly undefined - -//----- (004C2B40) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::filebuf::open(this + 2, a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::ios::clear(v11, 0); - else - std::ios::clear(v11, v11[5] | 4); -} - -//----- (004C2CB0) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::filebuf::open(this + 2, a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::ios::clear(v11, 0); - else - std::ios::clear(v11, v11[5] | 4); -} - -//----- (004C2E20) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2, char **a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::filebuf::open(this + 2, *a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::ios::clear(v11, 0); - else - std::ios::clear(v11, v11[5] | 4); -} - -//----- (004C2F90) -------------------------------------------------------- -void __thiscall std::ifstream::basic_ifstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - int v7; // edx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::filebuf::basic_filebuf((int)(this + 2)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); -} - -//----- (004C30B0) -------------------------------------------------------- -void __fastcall std::ifstream::~ifstream(_DWORD *a1) -{ - *a1 = off_51ABB0; - a1[29] = off_51ABC4; - a1[2] = off_51AA50; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 2)); - std::__basic_file::~__basic_file((int)(a1 + 12)); - a1[2] = &off_51ADD4; - std::locale::~locale((_DWORD **)a1 + 9); - *a1 = &unk_515A68; - a1[1] = 0; - a1[29] = &off_51B7D0; - std::ios_base::~ios_base((int)(a1 + 29)); - operator delete(a1); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ABB0: using guessed type int (*off_51ABB0[2])(); -// 51ABC4: using guessed type int (*off_51ABC4[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004C3190) -------------------------------------------------------- -void __fastcall std::ifstream::~ifstream(int a1) -{ - *(_DWORD *)a1 = off_51ABB0; - *(_DWORD *)(a1 + 116) = off_51ABC4; - *(_DWORD *)(a1 + 8) = off_51AA50; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 8)); - std::__basic_file::~__basic_file(a1 + 48); - *(_DWORD *)(a1 + 8) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 36)); - *(_DWORD *)a1 = &unk_515A68; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 116) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 116); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ABB0: using guessed type int (*off_51ABB0[2])(); -// 51ABC4: using guessed type int (*off_51ABC4[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004C3260) -------------------------------------------------------- -void __thiscall std::ifstream::~ifstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - this[2] = (int)off_51AA50; - std::filebuf::close((struct _Unwind_Exception *)(this + 2)); - std::__basic_file::~__basic_file((int)(this + 12)); - this[2] = (int)&off_51ADD4; - std::locale::~locale((_DWORD **)this + 9); - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; - this[1] = 0; -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004C3340) -------------------------------------------------------- -_DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - char v6; // cl - char v7; // cl - int v8; // eax - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::filebuf::operator=((int)(this + 2), (int)(a2 + 2)); - return this; -} -// 4C3380: variable 'v10' is possibly undefined - -//----- (004C3420) -------------------------------------------------------- -int __thiscall std::wifstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 2, a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C3490) -------------------------------------------------------- -int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 2, a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C3500) -------------------------------------------------------- -int __thiscall std::wifstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 2, *a2, a3 | 8) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C3570) -------------------------------------------------------- -void __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // edi - std::ios_base *v4; // esi - std::ios_base *v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wfilebuf::swap((int)(this + 2), (int)(a2 + 2)); -} -// 4C35B0: variable 'v8' is possibly undefined - -//----- (004C3640) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::wifstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 2)); - if ( !result ) - return (struct _Unwind_Exception *)std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004C3680) -------------------------------------------------------- -bool __fastcall std::wifstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 48)); -} - -//----- (004C3690) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 30; - std::ios_base::ios_base(this + 30); - v2 = a2[1]; - *((_WORD *)this + 118) = 0; - *this = &unk_515A90; - this[1] = v2; - this[58] = 0; - v3 = *a2; - *((_BYTE *)this + 238) = 0; - this[60] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[61] = 0; - this[62] = 0; - this[63] = 0; - this[30] = &unk_515AA4; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::wios::_M_cache_locale(v8, (int)(this + 57)); - this[60] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[58] = v5; - *((_WORD *)this + 118) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 238) = *((_BYTE *)lpuexcpt + 118); - a2[1] = 0; - *this = off_51ABD8; - this[30] = off_51ABEC; - std::wfilebuf::basic_filebuf((int)(this + 2), (std::locale *)(a2 + 2)); - this[60] = this + 2; -} -// 4C373C: variable 'v6' is possibly undefined -// 51ABD8: using guessed type int (*off_51ABD8[2])(); -// 51ABEC: using guessed type int (*off_51ABEC[2])(); - -//----- (004C3830) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 30; - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - *((_BYTE *)this + 238) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_515A90; - this[30] = &unk_515AA4; - this[1] = 0; - std::wios::init((int)v5, 0); - *this = off_51ABD8; - this[30] = off_51ABEC; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)v5, (int)(this + 2)); - v3 = std::wfilebuf::open(this + 2, a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 51ABD8: using guessed type int (*off_51ABD8[2])(); -// 51ABEC: using guessed type int (*off_51ABEC[2])(); - -//----- (004C39E0) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 30; - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - *((_BYTE *)this + 238) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_515A90; - this[30] = &unk_515AA4; - this[1] = 0; - std::wios::init((int)v5, 0); - *this = off_51ABD8; - this[30] = off_51ABEC; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)v5, (int)(this + 2)); - v3 = std::wfilebuf::open(this + 2, a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 51ABD8: using guessed type int (*off_51ABD8[2])(); -// 51ABEC: using guessed type int (*off_51ABEC[2])(); - -//----- (004C3B90) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 30; - std::ios_base::ios_base(this + 30); - this[58] = 0; - *((_WORD *)this + 118) = 0; - *((_BYTE *)this + 238) = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - this[63] = 0; - *this = &unk_515A90; - this[30] = &unk_515AA4; - this[1] = 0; - std::wios::init((int)v5, 0); - *this = off_51ABD8; - this[30] = off_51ABEC; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)v5, (int)(this + 2)); - v3 = std::wfilebuf::open(this + 2, *a2, a3 | 8); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 51ABD8: using guessed type int (*off_51ABD8[2])(); -// 51ABEC: using guessed type int (*off_51ABEC[2])(); - -//----- (004C3D40) -------------------------------------------------------- -void __fastcall std::wifstream::basic_ifstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 120; - std::ios_base::ios_base((_DWORD *)(a1 + 120)); - *(_DWORD *)(a1 + 232) = 0; - *(_WORD *)(a1 + 236) = 0; - *(_BYTE *)(a1 + 238) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)(a1 + 252) = 0; - *(_DWORD *)a1 = &unk_515A90; - *(_DWORD *)(a1 + 120) = &unk_515AA4; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)a1 = off_51ABD8; - *(_DWORD *)(a1 + 120) = off_51ABEC; - std::wfilebuf::basic_filebuf(a1 + 8); - std::wios::init(v1, a1 + 8); -} -// 51ABD8: using guessed type int (*off_51ABD8[2])(); -// 51ABEC: using guessed type int (*off_51ABEC[2])(); - -//----- (004C3EA0) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - std::ios_base *v10; // [esp+4h] [ebp-54h] - std::ios_base *v11; // [esp+10h] [ebp-48h] - char *v12; // [esp+14h] [ebp-44h] - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - v12 = (char *)this + *(_DWORD *)(v4 - 12); - v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v12, v11, v10); - std::wios::_M_cache_locale(v12, (int)(v12 + 108)); - v7 = *((_DWORD *)v11 + 28); - *((_DWORD *)v12 + 30) = 0; - *((_DWORD *)v11 + 28) = 0; - v8 = a2[3]; - *((_DWORD *)v12 + 28) = v7; - *((_WORD *)v12 + 58) = *((_WORD *)v11 + 58); - v12[118] = *((_BYTE *)v11 + 118); - a3[1] = 0; - v9 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; - std::wfilebuf::basic_filebuf((int)(this + 2), (std::locale *)(a3 + 2)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 2); -} -// 4C3F07: variable 'v10' is possibly undefined - -//----- (004C3FF0) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::wfilebuf::open(this + 2, a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::wios::clear(v11, 0); - else - std::wios::clear(v11, v11[5] | 4); -} - -//----- (004C4160) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::wfilebuf::open(this + 2, a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::wios::clear(v11, 0); - else - std::wios::clear(v11, v11[5] | 4); -} - -//----- (004C42D0) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _DWORD *v10; // eax - _DWORD *v11; // ecx - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); - v10 = std::wfilebuf::open(this + 2, *a3, a4 | 8); - v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v10 ) - std::wios::clear(v11, 0); - else - std::wios::clear(v11, v11[5] | 4); -} - -//----- (004C4440) -------------------------------------------------------- -void __thiscall std::wifstream::basic_ifstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - int v7; // edx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::wfilebuf::basic_filebuf((int)(this + 2)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 2)); -} - -//----- (004C4560) -------------------------------------------------------- -void __fastcall std::wifstream::~wifstream(_DWORD *a1) -{ - *a1 = off_51ABD8; - a1[30] = off_51ABEC; - a1[2] = off_51AA90; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 2)); - std::__basic_file::~__basic_file((int)(a1 + 12)); - a1[2] = &off_51AE14; - std::locale::~locale((_DWORD **)a1 + 9); - *a1 = &unk_515A90; - a1[1] = 0; - a1[30] = &off_51B7E0; - std::ios_base::~ios_base((int)(a1 + 30)); - operator delete(a1); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51ABD8: using guessed type int (*off_51ABD8[2])(); -// 51ABEC: using guessed type int (*off_51ABEC[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004C4640) -------------------------------------------------------- -void __fastcall std::wifstream::~wifstream(int a1) -{ - *(_DWORD *)a1 = off_51ABD8; - *(_DWORD *)(a1 + 120) = off_51ABEC; - *(_DWORD *)(a1 + 8) = off_51AA90; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 8)); - std::__basic_file::~__basic_file(a1 + 48); - *(_DWORD *)(a1 + 8) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 36)); - *(_DWORD *)a1 = &unk_515A90; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 120) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 120); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51ABD8: using guessed type int (*off_51ABD8[2])(); -// 51ABEC: using guessed type int (*off_51ABEC[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004C4710) -------------------------------------------------------- -void __thiscall std::wifstream::~wifstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - this[2] = (int)off_51AA90; - std::wfilebuf::close((struct _Unwind_Exception *)(this + 2)); - std::__basic_file::~__basic_file((int)(this + 12)); - this[2] = (int)&off_51AE14; - std::locale::~locale((_DWORD **)this + 9); - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; - this[1] = 0; -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004C47F0) -------------------------------------------------------- -_DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - __int16 v6; // cx - int v7; // eax - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wfilebuf::operator=((int)(this + 2), (int)(a2 + 2)); - return this; -} -// 4C4830: variable 'v9' is possibly undefined - -//----- (004C48D0) -------------------------------------------------------- -void __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; -} -// 4C490D: variable 'v8' is possibly undefined - -//----- (004C4990) -------------------------------------------------------- -void __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 3; - std::ios_base::ios_base(this + 3); - v2 = a2[1]; - *((_WORD *)this + 64) = 0; - *this = &unk_515AB8; - this[1] = v2; - this[31] = 0; - v3 = *a2; - *((_BYTE *)this + 130) = 0; - this[33] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[3] = &unk_515ACC; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::wios::_M_cache_locale(v8, (int)(this + 30)); - this[33] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[31] = v5; - *((_WORD *)this + 64) = *((_WORD *)lpuexcpt + 58); - *((_BYTE *)this + 130) = *((_BYTE *)lpuexcpt + 118); - a2[1] = 0; - *this = &off_51AC00; - this[3] = off_51AC28; - this[2] = off_51AC14; -} -// 4C4A39: variable 'v6' is possibly undefined -// 51AC00: using guessed type int (*off_51AC00)(); -// 51AC14: using guessed type int (*off_51AC14[2])(); -// 51AC28: using guessed type int (*off_51AC28[2])(); - -//----- (004C4AF0) -------------------------------------------------------- -void __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+14h] [ebp-44h] - - v2 = this + 3; - std::ios_base::ios_base(this + 3); - this[31] = 0; - *((_WORD *)this + 64) = 0; - *((_BYTE *)this + 130) = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - *this = &unk_515AB8; - this[3] = &unk_515ACC; - this[1] = 0; - std::wios::init((int)v2, a2); - this[2] = &unk_515AE0; - this[3] = &unk_515AF4; - std::wios::init((int)v2, a2); - *this = &off_51AC00; - this[3] = off_51AC28; - this[2] = off_51AC14; -} -// 51AC00: using guessed type int (*off_51AC00)(); -// 51AC14: using guessed type int (*off_51AC14[2])(); -// 51AC28: using guessed type int (*off_51AC28[2])(); - -//----- (004C4C40) -------------------------------------------------------- -void __fastcall std::wiostream::basic_iostream(int a1) -{ - int v1; // [esp+14h] [ebp-44h] - - v1 = a1 + 12; - std::ios_base::ios_base((_DWORD *)(a1 + 12)); - *(_DWORD *)(a1 + 124) = 0; - *(_WORD *)(a1 + 128) = 0; - *(_BYTE *)(a1 + 130) = 0; - *(_DWORD *)(a1 + 132) = 0; - *(_DWORD *)(a1 + 136) = 0; - *(_DWORD *)(a1 + 140) = 0; - *(_DWORD *)(a1 + 144) = 0; - *(_DWORD *)a1 = &unk_515AB8; - *(_DWORD *)(a1 + 12) = &unk_515ACC; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_515AE0; - *(_DWORD *)(a1 + 12) = &unk_515AF4; - std::wios::init(v1, 0); - *(_DWORD *)a1 = &off_51AC00; - *(_DWORD *)(a1 + 12) = off_51AC28; - *(_DWORD *)(a1 + 8) = off_51AC14; -} -// 51AC00: using guessed type int (*off_51AC00)(); -// 51AC14: using guessed type int (*off_51AC14[2])(); -// 51AC28: using guessed type int (*off_51AC28[2])(); - -//----- (004C4D90) -------------------------------------------------------- -int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // edi - char *v6; // edi - std::ios_base *v7; // ebp - int v8; // eax - int v9; // eax - int v10; // edx - int v11; // eax - int v12; // edx - int result; // eax - std::ios_base *v14; // [esp+4h] [ebp-28h] - - v4 = a2[1]; - v5 = a2[2]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - this[1] = a3[1]; - v6 = (char *)this + *(_DWORD *)(v4 - 12); - v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v6, v7, v14); - std::wios::_M_cache_locale(v6, (int)(v6 + 108)); - v8 = *((_DWORD *)v7 + 28); - *((_DWORD *)v6 + 30) = 0; - *((_DWORD *)v7 + 28) = 0; - *((_DWORD *)v6 + 28) = v8; - *((_WORD *)v6 + 58) = *((_WORD *)v7 + 58); - v6[118] = *((_BYTE *)v7 + 118); - v9 = a2[3]; - a3[1] = 0; - v10 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v10; - v11 = *a2; - v12 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; - result = a2[6]; - this[2] = result; - return result; -} -// 4C4DC6: variable 'v14' is possibly undefined - -//----- (004C4E40) -------------------------------------------------------- -void __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - _DWORD *v8; // ecx - int v9; // eax - int v10; // edx - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v4 - 12), a3); - v7 = a2[3]; - this[2] = v7; - v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); - *v8 = a2[4]; - std::wios::init((int)v8, a3); - v9 = *a2; - v10 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; - this[2] = a2[6]; -} - -//----- (004C4F40) -------------------------------------------------------- -void __thiscall std::wiostream::basic_iostream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[3]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[4]; - std::wios::init((int)v7, 0); - v8 = *a2; - v9 = a2[5]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[6]; -} - -//----- (004C5040) -------------------------------------------------------- -void __fastcall std::wiostream::~basic_iostream(char *Block) -{ - char *v2; // ecx - - v2 = Block + 12; - *((_DWORD *)v2 - 1) = &unk_515AE0; - *((_DWORD *)v2 - 3) = &unk_515AB8; - *((_DWORD *)v2 - 2) = 0; - *(_DWORD *)v2 = &off_51B7E0; - std::ios_base::~ios_base((int)v2); - operator delete(Block); -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004C5080) -------------------------------------------------------- -void __fastcall std::wiostream::~basic_iostream(int a1) -{ - _DWORD *v1; // ecx - - *(_DWORD *)(a1 + 8) = &unk_515AE0; - v1 = (_DWORD *)(a1 + 12); - *(v1 - 3) = &unk_515AB8; - *(v1 - 2) = 0; - *v1 = &off_51B7E0; - std::ios_base::~ios_base((int)v1); -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004C50B0) -------------------------------------------------------- -int __thiscall std::wiostream::~basic_iostream(int *this, int *a2) -{ - int v2; // edx - int v3; // edx - int v4; // edx - int result; // eax - - v2 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v2 - 12)) = a2[5]; - this[2] = a2[6]; - v3 = a2[3]; - this[2] = v3; - *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 8) = a2[4]; - v4 = a2[1]; - *this = v4; - result = *(_DWORD *)(v4 - 12); - *(int *)((char *)this + result) = a2[2]; - this[1] = 0; - return result; -} - -//----- (004C5100) -------------------------------------------------------- -_DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - __int16 v6; // cx - int v7; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - return this; -} -// 4C513D: variable 'v9' is possibly undefined - -//----- (004C51C0) -------------------------------------------------------- -int __thiscall std::ofstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 1, a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C5230) -------------------------------------------------------- -int __thiscall std::ofstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 1, a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C52A0) -------------------------------------------------------- -int __thiscall std::ofstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::filebuf::open(this + 1, *a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::ios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::ios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C5310) -------------------------------------------------------- -void __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - char v6; // cl - char v7; // cl - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - *((_BYTE *)v4 + 117) = v7; - std::filebuf::swap((int)(this + 1), (int)(a2 + 1)); -} -// 4C5350: variable 'v8' is possibly undefined - -//----- (004C53D0) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::ofstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::filebuf::close((struct _Unwind_Exception *)(a1 + 1)); - if ( !result ) - return (struct _Unwind_Exception *)std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004C5410) -------------------------------------------------------- -bool __fastcall std::ofstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 44)); -} - -//----- (004C5420) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - std::ios_base *v3; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v5; // [esp+14h] [ebp-44h] - - v5 = this + 28; - std::ios_base::ios_base(this + 28); - *((_WORD *)this + 114) = 0; - this[56] = 0; - this[58] = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - *this = &unk_515B08; - this[28] = &unk_515B1C; - lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v5, lpuexcpt, v3); - std::ios::_M_cache_locale(v5, (int)(this + 55)); - v2 = *((_DWORD *)lpuexcpt + 28); - *this = off_51AC3C; - *((_DWORD *)lpuexcpt + 28) = 0; - this[56] = v2; - LOWORD(v2) = *((_WORD *)lpuexcpt + 58); - this[58] = 0; - *((_WORD *)this + 114) = v2; - this[28] = off_51AC50; - std::filebuf::basic_filebuf((int)(this + 1), (std::locale *)(a2 + 1)); - this[58] = this + 1; -} -// 4C54BB: variable 'v3' is possibly undefined -// 51AC3C: using guessed type int (*off_51AC3C[2])(); -// 51AC50: using guessed type int (*off_51AC50[2])(); - -//----- (004C55A0) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 28; - std::ios_base::ios_base(this + 28); - this[56] = 0; - *((_WORD *)this + 114) = 0; - this[58] = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - *this = &unk_515B08; - this[28] = &unk_515B1C; - std::ios::init((int)v5, 0); - *this = off_51AC3C; - this[28] = off_51AC50; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)v5, (int)(this + 1)); - v3 = std::filebuf::open(this + 1, a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 51AC3C: using guessed type int (*off_51AC3C[2])(); -// 51AC50: using guessed type int (*off_51AC50[2])(); - -//----- (004C5740) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 28; - std::ios_base::ios_base(this + 28); - this[56] = 0; - *((_WORD *)this + 114) = 0; - this[58] = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - *this = &unk_515B08; - this[28] = &unk_515B1C; - std::ios::init((int)v5, 0); - *this = off_51AC3C; - this[28] = off_51AC50; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)v5, (int)(this + 1)); - v3 = std::filebuf::open(this + 1, a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 51AC3C: using guessed type int (*off_51AC3C[2])(); -// 51AC50: using guessed type int (*off_51AC50[2])(); - -//----- (004C58E0) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 28; - std::ios_base::ios_base(this + 28); - this[56] = 0; - *((_WORD *)this + 114) = 0; - this[58] = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - *this = &unk_515B08; - this[28] = &unk_515B1C; - std::ios::init((int)v5, 0); - *this = off_51AC3C; - this[28] = off_51AC50; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)v5, (int)(this + 1)); - v3 = std::filebuf::open(this + 1, *a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::ios::clear(v4, 0); - else - std::ios::clear(v4, v4[5] | 4); -} -// 51AC3C: using guessed type int (*off_51AC3C[2])(); -// 51AC50: using guessed type int (*off_51AC50[2])(); - -//----- (004C5A80) -------------------------------------------------------- -void __fastcall std::ofstream::basic_ofstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 112; - std::ios_base::ios_base((_DWORD *)(a1 + 112)); - *(_DWORD *)(a1 + 224) = 0; - *(_WORD *)(a1 + 228) = 0; - *(_DWORD *)(a1 + 232) = 0; - *(_DWORD *)(a1 + 236) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)a1 = &unk_515B08; - *(_DWORD *)(a1 + 112) = &unk_515B1C; - std::ios::init(v1, 0); - *(_DWORD *)a1 = off_51AC3C; - *(_DWORD *)(a1 + 112) = off_51AC50; - std::filebuf::basic_filebuf(a1 + 4); - std::ios::init(v1, a1 + 4); -} -// 51AC3C: using guessed type int (*off_51AC3C[2])(); -// 51AC50: using guessed type int (*off_51AC50[2])(); - -//----- (004C5BC0) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // eax - int v5; // edx - int v6; // eax - std::ios_base *v7; // [esp+4h] [ebp-54h] - std::ios_base *v8; // [esp+10h] [ebp-48h] - char *v9; // [esp+14h] [ebp-44h] - - v3 = a2[1]; - *this = v3; - v9 = (char *)this + *(_DWORD *)(v3 - 12); - *(_DWORD *)v9 = a2[2]; - v8 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v9, v8, v7); - std::ios::_M_cache_locale(v9, (int)(v9 + 108)); - v4 = *((_DWORD *)v8 + 28); - *((_DWORD *)v8 + 28) = 0; - *((_DWORD *)v9 + 30) = 0; - *((_DWORD *)v9 + 28) = v4; - *((_WORD *)v9 + 58) = *((_WORD *)v8 + 58); - v5 = a2[3]; - v6 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v5; - std::filebuf::basic_filebuf((int)(this + 1), (std::locale *)(a3 + 1)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 1); -} -// 4C5C1E: variable 'v7' is possibly undefined - -//----- (004C5CF0) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char *a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::ios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::filebuf::open(this + 1, a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::ios::clear(v9, 0); - else - std::ios::clear(v9, v9[5] | 4); -} - -//----- (004C5E40) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::ios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::filebuf::open(this + 1, a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::ios::clear(v9, 0); - else - std::ios::clear(v9, v9[5] | 4); -} - -//----- (004C5F90) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2, char **a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::ios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::filebuf::open(this + 1, *a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::ios::clear(v9, 0); - else - std::ios::clear(v9, v9[5] | 4); -} - -//----- (004C60E0) -------------------------------------------------------- -void __thiscall std::ofstream::basic_ofstream(int *this, int *a2) -{ - int v2; // eax - _DWORD *v3; // ecx - int v4; // eax - int v5; // edx - - v2 = a2[1]; - *this = v2; - v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v3 = a2[2]; - std::ios::init((int)v3, 0); - v4 = *a2; - v5 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - std::filebuf::basic_filebuf((int)(this + 1)); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); -} - -//----- (004C61E0) -------------------------------------------------------- -void __fastcall std::ofstream::~ofstream(_DWORD *a1) -{ - *a1 = off_51AC3C; - a1[28] = off_51AC50; - a1[1] = off_51AA50; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 1)); - std::__basic_file::~__basic_file((int)(a1 + 11)); - a1[1] = &off_51ADD4; - std::locale::~locale((_DWORD **)a1 + 8); - *a1 = &unk_515B08; - a1[28] = &off_51B7D0; - std::ios_base::~ios_base((int)(a1 + 28)); - operator delete(a1); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AC3C: using guessed type int (*off_51AC3C[2])(); -// 51AC50: using guessed type int (*off_51AC50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004C62C0) -------------------------------------------------------- -void __fastcall std::ofstream::~ofstream(int a1) -{ - *(_DWORD *)a1 = off_51AC3C; - *(_DWORD *)(a1 + 112) = off_51AC50; - *(_DWORD *)(a1 + 4) = off_51AA50; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_515B08; - *(_DWORD *)(a1 + 112) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 112); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AC3C: using guessed type int (*off_51AC3C[2])(); -// 51AC50: using guessed type int (*off_51AC50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004C6390) -------------------------------------------------------- -void __thiscall std::ofstream::~ofstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - this[1] = (int)off_51AA50; - std::filebuf::close((struct _Unwind_Exception *)(this + 1)); - std::__basic_file::~__basic_file((int)(this + 11)); - this[1] = (int)&off_51ADD4; - std::locale::~locale((_DWORD **)this + 8); - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004C6470) -------------------------------------------------------- -_DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - char v6; // cl - char v7; // cl - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - *((_BYTE *)v4 + 117) = v7; - std::filebuf::operator=((int)(this + 1), (int)(a2 + 1)); - return this; -} -// 4C64B0: variable 'v9' is possibly undefined - -//----- (004C6540) -------------------------------------------------------- -int __thiscall std::wofstream::open(int *this, char *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 1, a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C65B0) -------------------------------------------------------- -int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 1, a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C6620) -------------------------------------------------------- -int __thiscall std::wofstream::open(int *this, char **a2, int a3) -{ - bool v4; // zf - int v5; // eax - - v4 = std::wfilebuf::open(this + 1, *a2, a3 | 0x10) == 0; - v5 = *this; - if ( v4 ) - return std::wios::clear( - (int *)((char *)this + *(_DWORD *)(v5 - 12)), - *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); - else - return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); -} - -//----- (004C6690) -------------------------------------------------------- -void __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - __int16 v6; // cx - std::ios_base *v7; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v7); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - *((_BYTE *)v4 + 118) = v6; - std::wfilebuf::swap((int)(this + 1), (int)(a2 + 1)); -} -// 4C66D0: variable 'v7' is possibly undefined - -//----- (004C6750) -------------------------------------------------------- -struct _Unwind_Exception *__fastcall std::wofstream::close(_DWORD *a1) -{ - struct _Unwind_Exception *result; // eax - - result = std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 1)); - if ( !result ) - return (struct _Unwind_Exception *)std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); - return result; -} - -//----- (004C6790) -------------------------------------------------------- -bool __fastcall std::wofstream::is_open(int a1) -{ - return std::__basic_file::is_open((_DWORD *)(a1 + 44)); -} - -//----- (004C67A0) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - std::ios_base *v3; // [esp+4h] [ebp-54h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v5; // [esp+14h] [ebp-44h] - - v5 = this + 29; - std::ios_base::ios_base(this + 29); - *((_WORD *)this + 116) = 0; - this[57] = 0; - *((_BYTE *)this + 234) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_515B30; - this[29] = &unk_515B44; - lpuexcpt = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v5, lpuexcpt, v3); - std::wios::_M_cache_locale(v5, (int)(this + 56)); - v2 = *((_DWORD *)lpuexcpt + 28); - *this = off_51AC64; - *((_DWORD *)lpuexcpt + 28) = 0; - this[57] = v2; - LOWORD(v2) = *((_WORD *)lpuexcpt + 58); - this[59] = 0; - *((_WORD *)this + 116) = v2; - LOBYTE(v2) = *((_BYTE *)lpuexcpt + 118); - this[29] = off_51AC78; - *((_BYTE *)this + 234) = v2; - std::wfilebuf::basic_filebuf((int)(this + 1), (std::locale *)(a2 + 1)); - this[59] = this + 1; -} -// 4C6842: variable 'v3' is possibly undefined -// 51AC64: using guessed type int (*off_51AC64[2])(); -// 51AC78: using guessed type int (*off_51AC78[2])(); - -//----- (004C6930) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 29; - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - *((_BYTE *)this + 234) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_515B30; - this[29] = &unk_515B44; - std::wios::init((int)v5, 0); - *this = off_51AC64; - this[29] = off_51AC78; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)v5, (int)(this + 1)); - v3 = std::wfilebuf::open(this + 1, a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 51AC64: using guessed type int (*off_51AC64[2])(); -// 51AC78: using guessed type int (*off_51AC78[2])(); - -//----- (004C6AD0) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 29; - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - *((_BYTE *)this + 234) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_515B30; - this[29] = &unk_515B44; - std::wios::init((int)v5, 0); - *this = off_51AC64; - this[29] = off_51AC78; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)v5, (int)(this + 1)); - v3 = std::wfilebuf::open(this + 1, a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 51AC64: using guessed type int (*off_51AC64[2])(); -// 51AC78: using guessed type int (*off_51AC78[2])(); - -//----- (004C6C70) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - _DWORD *v5; // [esp+20h] [ebp-48h] - - v5 = this + 29; - std::ios_base::ios_base(this + 29); - this[57] = 0; - *((_WORD *)this + 116) = 0; - *((_BYTE *)this + 234) = 0; - this[59] = 0; - this[60] = 0; - this[61] = 0; - this[62] = 0; - *this = &unk_515B30; - this[29] = &unk_515B44; - std::wios::init((int)v5, 0); - *this = off_51AC64; - this[29] = off_51AC78; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)v5, (int)(this + 1)); - v3 = std::wfilebuf::open(this + 1, *a2, a3 | 0x10); - v4 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v3 ) - std::wios::clear(v4, 0); - else - std::wios::clear(v4, v4[5] | 4); -} -// 51AC64: using guessed type int (*off_51AC64[2])(); -// 51AC78: using guessed type int (*off_51AC78[2])(); - -//----- (004C6E10) -------------------------------------------------------- -void __fastcall std::wofstream::basic_ofstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 116; - std::ios_base::ios_base((_DWORD *)(a1 + 116)); - *(_DWORD *)(a1 + 228) = 0; - *(_WORD *)(a1 + 232) = 0; - *(_BYTE *)(a1 + 234) = 0; - *(_DWORD *)(a1 + 236) = 0; - *(_DWORD *)(a1 + 240) = 0; - *(_DWORD *)(a1 + 244) = 0; - *(_DWORD *)(a1 + 248) = 0; - *(_DWORD *)a1 = &unk_515B30; - *(_DWORD *)(a1 + 116) = &unk_515B44; - std::wios::init(v1, 0); - *(_DWORD *)a1 = off_51AC64; - *(_DWORD *)(a1 + 116) = off_51AC78; - std::wfilebuf::basic_filebuf(a1 + 4); - std::wios::init(v1, a1 + 4); -} -// 51AC64: using guessed type int (*off_51AC64[2])(); -// 51AC78: using guessed type int (*off_51AC78[2])(); - -//----- (004C6F60) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) -{ - int v3; // eax - int v4; // eax - int v5; // edx - int v6; // eax - std::ios_base *v7; // [esp+4h] [ebp-54h] - std::ios_base *v8; // [esp+10h] [ebp-48h] - char *v9; // [esp+14h] [ebp-44h] - - v3 = a2[1]; - *this = v3; - v9 = (char *)this + *(_DWORD *)(v3 - 12); - *(_DWORD *)v9 = a2[2]; - v8 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v9, v8, v7); - std::wios::_M_cache_locale(v9, (int)(v9 + 108)); - v4 = *((_DWORD *)v8 + 28); - *((_DWORD *)v8 + 28) = 0; - *((_DWORD *)v9 + 30) = 0; - *((_DWORD *)v9 + 28) = v4; - *((_WORD *)v9 + 58) = *((_WORD *)v8 + 58); - v9[118] = *((_BYTE *)v8 + 118); - v5 = a2[3]; - v6 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v5; - std::wfilebuf::basic_filebuf((int)(this + 1), (std::locale *)(a3 + 1)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 1); -} -// 4C6FBE: variable 'v7' is possibly undefined - -//----- (004C7090) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::wios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::wfilebuf::open(this + 1, a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::wios::clear(v9, 0); - else - std::wios::clear(v9, v9[5] | 4); -} - -//----- (004C71E0) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::wios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::wfilebuf::open(this + 1, a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::wios::clear(v9, 0); - else - std::wios::clear(v9, v9[5] | 4); -} - -//----- (004C7330) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4) -{ - int v4; // eax - _DWORD *v5; // ecx - int v6; // eax - int v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ecx - - v4 = a2[1]; - *this = v4; - v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); - *v5 = a2[2]; - std::wios::init((int)v5, 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); - v8 = std::wfilebuf::open(this + 1, *a3, a4 | 0x10); - v9 = (int *)((char *)this + *(_DWORD *)(*this - 12)); - if ( v8 ) - std::wios::clear(v9, 0); - else - std::wios::clear(v9, v9[5] | 4); -} - -//----- (004C7480) -------------------------------------------------------- -void __thiscall std::wofstream::basic_ofstream(int *this, int *a2) -{ - int v2; // eax - _DWORD *v3; // ecx - int v4; // eax - int v5; // edx - - v2 = a2[1]; - *this = v2; - v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v3 = a2[2]; - std::wios::init((int)v3, 0); - v4 = *a2; - v5 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - std::wfilebuf::basic_filebuf((int)(this + 1)); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 1)); -} - -//----- (004C7580) -------------------------------------------------------- -void __fastcall std::wofstream::~wofstream(_DWORD *a1) -{ - *a1 = off_51AC64; - a1[29] = off_51AC78; - a1[1] = off_51AA90; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 1)); - std::__basic_file::~__basic_file((int)(a1 + 11)); - a1[1] = &off_51AE14; - std::locale::~locale((_DWORD **)a1 + 8); - *a1 = &unk_515B30; - a1[29] = &off_51B7E0; - std::ios_base::~ios_base((int)(a1 + 29)); - operator delete(a1); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AC64: using guessed type int (*off_51AC64[2])(); -// 51AC78: using guessed type int (*off_51AC78[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004C7660) -------------------------------------------------------- -void __fastcall std::wofstream::~wofstream(int a1) -{ - *(_DWORD *)a1 = off_51AC64; - *(_DWORD *)(a1 + 116) = off_51AC78; - *(_DWORD *)(a1 + 4) = off_51AA90; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_515B30; - *(_DWORD *)(a1 + 116) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 116); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AC64: using guessed type int (*off_51AC64[2])(); -// 51AC78: using guessed type int (*off_51AC78[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004C7730) -------------------------------------------------------- -void __thiscall std::wofstream::~wofstream(int *this, int *a2) -{ - int v3; // eax - int v4; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - this[1] = (int)off_51AA90; - std::wfilebuf::close((struct _Unwind_Exception *)(this + 1)); - std::__basic_file::~__basic_file((int)(this + 11)); - this[1] = (int)&off_51AE14; - std::locale::~locale((_DWORD **)this + 8); - v4 = a2[1]; - *this = v4; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004C7810) -------------------------------------------------------- -_DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - __int16 v6; // cx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - *((_BYTE *)v4 + 118) = v6; - std::wfilebuf::operator=((int)(this + 1), (int)(a2 + 1)); - return this; -} -// 4C7850: variable 'v8' is possibly undefined - -//----- (004C78E0) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) -{ - std::codecvt::codecvt(this, a3); - *this = &off_51AC88; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51AC88: using guessed type int (*off_51AC88)(); - -//----- (004C79E0) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_51AC88; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51AC88: using guessed type int (*off_51AC88)(); - -//----- (004C7AF0) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_51AC88; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51AC88: using guessed type int (*off_51AC88)(); - -//----- (004C7C00) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) -{ - std::codecvt::codecvt(this, a3); - *this = &off_51AC88; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51AC88: using guessed type int (*off_51AC88)(); - -//----- (004C7D00) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_51AC88; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51AC88: using guessed type int (*off_51AC88)(); - -//----- (004C7E10) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_51AC88; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51AC88: using guessed type int (*off_51AC88)(); - -//----- (004C7F20) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block) -{ - *Block = &off_51AC88; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 51AC88: using guessed type int (*off_51AC88)(); - -//----- (004C7F40) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) -{ - *a1 = &off_51AC88; - std::codecvt::~codecvt(a1); -} -// 51AC88: using guessed type int (*off_51AC88)(); - -//----- (004C7F50) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) -{ - *a1 = &off_51AC88; - std::codecvt::~codecvt(a1); -} -// 51AC88: using guessed type int (*off_51AC88)(); - -//----- (004C7F60) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) -{ - std::codecvt::codecvt(this, a3); - *this = &off_51ACB4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51ACB4: using guessed type int (*off_51ACB4)(); - -//----- (004C8060) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_51ACB4; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51ACB4: using guessed type int (*off_51ACB4)(); - -//----- (004C8170) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_51ACB4; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51ACB4: using guessed type int (*off_51ACB4)(); - -//----- (004C8280) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) -{ - std::codecvt::codecvt(this, a3); - *this = &off_51ACB4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51ACB4: using guessed type int (*off_51ACB4)(); - -//----- (004C8380) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_51ACB4; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51ACB4: using guessed type int (*off_51ACB4)(); - -//----- (004C8490) -------------------------------------------------------- -void __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - std::codecvt::codecvt(this, a3); - *this = &off_51ACB4; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51ACB4: using guessed type int (*off_51ACB4)(); - -//----- (004C85A0) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *Block) -{ - *Block = &off_51ACB4; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 51ACB4: using guessed type int (*off_51ACB4)(); - -//----- (004C85C0) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) -{ - *a1 = &off_51ACB4; - std::codecvt::~codecvt(a1); -} -// 51ACB4: using guessed type int (*off_51ACB4)(); - -//----- (004C85D0) -------------------------------------------------------- -void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) -{ - *a1 = &off_51ACB4; - std::codecvt::~codecvt(a1); -} -// 51ACB4: using guessed type int (*off_51ACB4)(); - -//----- (004C85E0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B590; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51ACE0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51ACE0: using guessed type int (*off_51ACE0)(); -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004C8720) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_51B590; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51ACE0; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51ACE0: using guessed type int (*off_51ACE0)(); -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004C8870) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B590; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51ACE0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51ACE0: using guessed type int (*off_51ACE0)(); -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004C89B0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_51B590; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51ACE0; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51ACE0: using guessed type int (*off_51ACE0)(); -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004C8B00) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B590; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4C8B3E: variable 'lpfctx' is possibly undefined -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004C8B60) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B590; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4C8B9E: variable 'lpfctx' is possibly undefined -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004C8BC0) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B590; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4C8BFE: variable 'lpfctx' is possibly undefined -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004C8C20) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B5AC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51ACFC; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51ACFC: using guessed type int (*off_51ACFC)(); -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004C8D60) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_51B5AC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51ACFC; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51ACFC: using guessed type int (*off_51ACFC)(); -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004C8EB0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B5AC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51ACFC; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51ACFC: using guessed type int (*off_51ACFC)(); -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004C8FF0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_51B5AC; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51ACFC; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51ACFC: using guessed type int (*off_51ACFC)(); -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004C9140) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B5AC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4C917E: variable 'lpfctx' is possibly undefined -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004C91A0) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B5AC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4C91DE: variable 'lpfctx' is possibly undefined -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004C9200) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B5AC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4C923E: variable 'lpfctx' is possibly undefined -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004C9260) -------------------------------------------------------- -void __userpurge std::overflow_error::overflow_error(_DWORD *a1@, std::overflow_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_51AB98; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_51AD18; -} -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AD18: using guessed type void (__cdecl *off_51AD18)(std::overflow_error *__hidden this); - -//----- (004C92F0) -------------------------------------------------------- -void __thiscall std::overflow_error::overflow_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_51AB98; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_51AD18; -} -// 4C9344: variable 'v2' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AD18: using guessed type void (__cdecl *off_51AD18)(std::overflow_error *__hidden this); - -//----- (004C9390) -------------------------------------------------------- -void __userpurge std::overflow_error::overflow_error( - _DWORD *a1@, - std::overflow_error *this, - const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51AB98; - std::string::string(a1 + 1, this, v3); - *a1 = &off_51AD18; -} -// 4C93D8: variable 'v3' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AD18: using guessed type void (__cdecl *off_51AD18)(std::overflow_error *__hidden this); - -//----- (004C9420) -------------------------------------------------------- -void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51AD18; - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4C942C: variable 'Block' is possibly undefined -// 51AD18: using guessed type void (__cdecl *off_51AD18)(std::overflow_error *__hidden this); - -//----- (004C9440) -------------------------------------------------------- -void __cdecl std::overflow_error::~overflow_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51AB98; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4C944B: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 4C9440: using guessed type int var_D[3]; - -//----- (004C94A0) -------------------------------------------------------- -void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1) -{ - *a1 = 0; - a1[1] = 0; - a1[2] = a1; - a1[3] = a1; - a1[4] = 0; -} - -//----- (004C94BC) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy( - void *Block) -{ - operator delete(Block); -} - -//----- (004C94CC) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - void **v1; // ebx - - v1 = *(void ***)(a1 + 12); - if ( v1 ) - { - std::string::_M_dispose(v1 + 12); - std::string::_M_dispose(v1 + 6); - std::string::_M_dispose(v1); - operator delete(v1); - } -} - -//----- (004C9500) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004C9508) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( - void *Block) -{ - operator delete(Block); -} - -//----- (004C951C) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy( - void *Block) -{ - operator delete(Block); -} - -//----- (004C952C) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - void *v1; // ebx - - v1 = *(void **)(a1 + 12); - if ( v1 ) - { - WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(*(_DWORD *)(a1 + 12)); - operator delete(v1); - } -} - -//----- (004C9550) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter( - int a1) -{ - return 0; -} - -//----- (004C9558) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( - void *Block) -{ - operator delete(Block); -} - -//----- (004C956C) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) -{ - operator delete(Block); -} - -//----- (004C957C) -------------------------------------------------------- -int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - int v1; // ecx - int result; // eax - - v1 = *(_DWORD *)(a1 + 12); - if ( v1 ) - return (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - return result; -} - -//----- (004C958C) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004C9594) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( - void *Block) -{ - operator delete(Block); -} - -//----- (004C95A8) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) -{ - operator delete(Block); -} - -//----- (004C95B8) -------------------------------------------------------- -int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - int v1; // ecx - int result; // eax - - v1 = *(_DWORD *)(a1 + 12); - if ( v1 ) - return (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - return result; -} - -//----- (004C95C8) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004C95D0) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( - void *Block) -{ - operator delete(Block); -} - -//----- (004C95E4) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) -{ - operator delete(Block); -} - -//----- (004C95F4) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - volatile signed __int32 **v1; // ebx - - v1 = *(volatile signed __int32 ***)(a1 + 12); - if ( v1 ) - { - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v1 + 2); - operator delete(v1); - } -} - -//----- (004C9618) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004C9620) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block) -{ - operator delete(Block); -} - -//----- (004C9634) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_destroy(void *Block) -{ - operator delete(Block); -} - -//----- (004C9644) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) -{ - void *v1; // ebx - - v1 = *(void **)(a1 + 12); - if ( v1 ) - { - std::string::_M_dispose(*(void ***)(a1 + 12)); - operator delete(v1); - } -} - -//----- (004C9668) -------------------------------------------------------- -int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) -{ - return 0; -} - -//----- (004C9670) -------------------------------------------------------- -void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *Block) -{ - operator delete(Block); -} - -//----- (004C9690) -------------------------------------------------------- -_DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx - - result = this; - v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); - if ( v7 == std::streambuf::seekoff ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - } - else - { - v7(this, a2, a3, a4, a5, a6); - return this; - } - return result; -} - -//----- (004C9710) -------------------------------------------------------- -_DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) -{ - _DWORD *result; // eax - _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx - - result = this; - v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); - if ( v8 == std::streambuf::seekpos ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - } - else - { - v8(this, a2, a3, a4, a5, a6, a7); - return this; - } - return result; -} - -//----- (004C97B0) -------------------------------------------------------- -int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] += a2; - return result; -} - -//----- (004C97C0) -------------------------------------------------------- -int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[5] += a2; - return result; -} - -//----- (004C97D0) -------------------------------------------------------- -int __thiscall std::streambuf::setg(_DWORD *this, int a2, int a3, int a4) -{ - int result; // eax - - this[1] = a2; - this[2] = a3; - result = a4; - this[3] = a4; - return result; -} - -//----- (004C97F0) -------------------------------------------------------- -int __thiscall std::streambuf::setp(_DWORD *this, int a2, int a3) -{ - int result; // eax - - this[5] = a2; - this[4] = a2; - result = a3; - this[6] = a3; - return result; -} - -//----- (004C9810) -------------------------------------------------------- -void __thiscall std::streambuf::swap(int this, int a2) -{ - volatile signed __int32 **v2; // esi - int v3; // edx - int v4; // ebx - int v5; // edx - int v6; // ebx - int v7; // edx - int v8; // ebx - int v9; // edx - int v10; // ebx - int v11; // edx - int v12; // ebx - int v13; // edx - const std::locale *v14; // [esp+4h] [ebp-28h] - _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF - - v2 = (volatile signed __int32 **)(this + 28); - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); - std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); - std::locale::~locale(v15); -} -// 4C9871: variable 'v14' is possibly undefined - -//----- (004C98B0) -------------------------------------------------------- -int std::streambuf::sync() -{ - return 0; -} - -//----- (004C98C0) -------------------------------------------------------- -int __thiscall std::streambuf::gbump(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] += a2; - return result; -} - -//----- (004C98E0) -------------------------------------------------------- -int __thiscall std::streambuf::pbump(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[5] += a2; - return result; -} - -//----- (004C98F0) -------------------------------------------------------- -int __fastcall std::streambuf::sgetc(_DWORD *a1) -{ - unsigned __int8 *v1; // eax - int result; // eax - int (*v3)(void); // edx - - v1 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - return *v1; - v3 = *(int (**)(void))(*a1 + 36); - result = -1; - if ( v3 != std::streambuf::underflow ) - return v3(); - return result; -} - -//----- (004C9920) -------------------------------------------------------- -int __fastcall std::streambuf::sgetn(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); -} - -//----- (004C9930) -------------------------------------------------------- -int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8 a2) -{ - _BYTE *v2; // eax - int v3; // ebx - int (__stdcall *v5)(int); // eax - - v2 = (_BYTE *)this[5]; - v3 = a2; - if ( this[6] > (unsigned int)v2 ) - { - *v2 = a2; - ++this[5]; - return v3; - } - v5 = *(int (__stdcall **)(int))(*this + 52); - if ( v5 == std::streambuf::overflow ) - return -1; - return v5(a2); -} - -//----- (004C9970) -------------------------------------------------------- -int __fastcall std::streambuf::sputn(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); -} - -//----- (004C9980) -------------------------------------------------------- -int __fastcall std::streambuf::uflow(_DWORD *a1) -{ - int (*v1)(); // eax - unsigned __int8 *v4; // eax - int v5; // edx - - v1 = *(int (**)())(*a1 + 36); - if ( v1 == std::streambuf::underflow ) - return -1; - if ( v1() == -1 ) - return -1; - v4 = (unsigned __int8 *)a1[2]; - v5 = *v4; - a1[2] = v4 + 1; - return v5; -} - -//----- (004C99D0) -------------------------------------------------------- -int __fastcall std::streambuf::sbumpc(_DWORD *a1) -{ - unsigned __int8 *v1; // eax - int v2; // edx - int (*v4)(void); // edx - int (*v5)(); // eax - unsigned __int8 *v6; // eax - int v7; // edx - - v1 = (unsigned __int8 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - { - v2 = *v1; - a1[2] = v1 + 1; - return v2; - } - v4 = *(int (**)(void))(*a1 + 40); - if ( (char *)v4 != (char *)std::streambuf::uflow ) - return v4(); - v5 = *(int (**)())(*a1 + 36); - if ( v5 == std::streambuf::underflow ) - return -1; - if ( v5() == -1 ) - return -1; - v6 = (unsigned __int8 *)a1[2]; - v7 = *v6; - a1[2] = v6 + 1; - return v7; -} - -//----- (004C9A50) -------------------------------------------------------- -void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3) -{ - return this; -} - -//----- (004C9A60) -------------------------------------------------------- -int __fastcall std::streambuf::snextc(_DWORD *a1) -{ - unsigned int v1; // eax - unsigned int v2; // edx - unsigned __int8 *v3; // eax - int (*v5)(void); // edx - int (*v6)(); // eax - int (*v7)(); // eax - int v8; // eax - _DWORD *v9; // ecx - unsigned __int8 *v10; // eax - unsigned int v11; // edx - - v1 = a1[2]; - v2 = a1[3]; - if ( v1 < v2 ) - { - v3 = (unsigned __int8 *)(v1 + 1); - a1[2] = v3; - if ( (unsigned int)v3 < v2 ) - return *v3; - v7 = *(int (**)())(*a1 + 36); - if ( v7 == std::streambuf::underflow ) - return -1; - return v7(); - } - v5 = *(int (**)(void))(*a1 + 40); - if ( (char *)v5 == (char *)std::streambuf::uflow ) - { - v6 = *(int (**)())(*a1 + 36); - if ( v6 == std::streambuf::underflow || v6() == -1 ) - return -1; - v9 = a1; - v11 = a1[3]; - v10 = (unsigned __int8 *)(a1[2] + 1); - a1[2] = v10; - } - else - { - v8 = v5(); - v9 = a1; - if ( v8 == -1 ) - return -1; - v10 = (unsigned __int8 *)a1[2]; - v11 = a1[3]; - } - if ( (unsigned int)v10 < v11 ) - return *v10; - v7 = *(int (**)())(*v9 + 36); - if ( v7 == std::streambuf::underflow ) - return -1; - return v7(); -} - -//----- (004C9B20) -------------------------------------------------------- -int (*__fastcall std::streambuf::stossc(_DWORD *a1))(void) -{ - unsigned int v1; // eax - int (*result)(void); // eax - int (*v3)(void); // edx - - v1 = a1[2]; - if ( v1 >= a1[3] ) - { - v3 = *(int (**)(void))(*a1 + 40); - if ( (char *)v3 == (char *)std::streambuf::uflow ) - { - result = *(int (**)(void))(*a1 + 36); - if ( result != std::streambuf::underflow ) - { - result = (int (*)(void))result(); - if ( result != (int (*)(void))-1 ) - ++a1[2]; - } - } - else - { - return (int (*)(void))v3(); - } - } - else - { - result = (int (*)(void))(v1 + 1); - a1[2] = result; - } - return result; -} - -//----- (004C9B80) -------------------------------------------------------- -int __thiscall std::streambuf::xsgetn(_DWORD *this, char *a2, int a3) -{ - int v5; // esi - const void *Src; // ecx - int v7; // eax - size_t Size; // ebx - char *v10; // ebx - int (__fastcall *v11)(_DWORD *); // edx - int (*v12)(); // eax - char *v13; // eax - char v14; // cl - int v15; // eax - char *v16; // [esp+30h] [ebp+4h] - - if ( a3 > 0 ) - { - v5 = 0; - while ( 1 ) - { - Src = (const void *)this[2]; - v7 = this[3] - (_DWORD)Src; - if ( v7 ) - { - Size = a3 - v5; - v16 = a2; - if ( a3 - v5 > v7 ) - Size = this[3] - (_DWORD)Src; - v5 += Size; - memcpy(a2, Src, Size); - this[2] += Size; - if ( a3 <= v5 ) - return v5; - v10 = &v16[Size]; - } - else - { - v10 = a2; - } - v11 = *(int (__fastcall **)(_DWORD *))(*this + 40); - if ( v11 == std::streambuf::uflow ) - { - v12 = *(int (**)())(*this + 36); - if ( v12 == std::streambuf::underflow || ((int (__fastcall *)(_DWORD *))v12)(this) == -1 ) - return v5; - v13 = (char *)this[2]; - v14 = *v13; - this[2] = v13 + 1; - } - else - { - v15 = v11(this); - v14 = v15; - if ( v15 == -1 ) - return v5; - } - ++v5; - *v10 = v14; - a2 = v10 + 1; - if ( a3 <= v5 ) - return v5; - } - } - return 0; -} - -//----- (004C9C40) -------------------------------------------------------- -int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3) -{ - int v5; // ebx - void *v6; // edx - int v7; // eax - size_t Size; // ecx - int (__stdcall *v10)(int); // eax - size_t v11; // [esp+1Ch] [ebp-20h] - - if ( a3 > 0 ) - { - v5 = 0; - while ( 1 ) - { - v6 = (void *)this[5]; - v7 = this[6] - (_DWORD)v6; - if ( v7 ) - { - Size = a3 - v5; - if ( a3 - v5 > v7 ) - Size = this[6] - (_DWORD)v6; - v11 = Size; - memcpy(v6, a2, Size); - this[5] += v11; - v5 += v11; - if ( a3 <= v5 ) - return v5; - a2 += v11; - } - v10 = *(int (__stdcall **)(int))(*this + 52); - if ( v10 != std::streambuf::overflow && ((int (__thiscall *)(_DWORD *, _DWORD))v10)(this, *a2) != -1 ) - { - ++v5; - ++a2; - if ( a3 > v5 ) - continue; - } - return v5; - } - } - return 0; -} - -//----- (004C9CE0) -------------------------------------------------------- -int __fastcall std::streambuf::pubsync(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); - if ( v1 == std::streambuf::sync ) - return 0; - else - return v1(); -} - -//----- (004C9D00) -------------------------------------------------------- -_DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - - *this = -1; - result = this; - this[1] = -1; - this[2] = 0; - return result; -} - -//----- (004C9D20) -------------------------------------------------------- -_DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) -{ - _DWORD *result; // eax - - result = this; - *this = -1; - this[1] = -1; - this[2] = 0; - return result; -} - -//----- (004C9D40) -------------------------------------------------------- -int __fastcall std::streambuf::sungetc(_DWORD *a1) -{ - unsigned int v1; // eax - int result; // eax - int (__stdcall *v3)(int); // edx - - v1 = a1[2]; - if ( a1[1] >= v1 ) - { - v3 = *(int (__stdcall **)(int))(*a1 + 44); - result = -1; - if ( v3 != std::streambuf::pbackfail ) - return v3(-1); - } - else - { - a1[2] = v1 - 1; - return *(unsigned __int8 *)(v1 - 1); - } - return result; -} - -//----- (004C9D90) -------------------------------------------------------- -int __fastcall std::streambuf::in_avail(_DWORD *a1) -{ - int result; // eax - int (*v2)(void); // edx - - result = a1[3] - a1[2]; - if ( !result ) - { - v2 = *(int (**)(void))(*a1 + 28); - if ( v2 != std::streambuf::showmanyc ) - return v2(); - } - return result; -} - -//----- (004C9DC0) -------------------------------------------------------- -int __stdcall std::streambuf::overflow(int a1) -{ - return -1; -} - -//----- (004C9DD0) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::streambuf::pubimbue( - volatile signed __int32 **this, - volatile signed __int32 **a2, - volatile signed __int32 **a3) -{ - int (__stdcall *v3)(int); // eax - const std::locale *v5; // [esp+4h] [ebp-54h] - - std::locale::locale(this, a2 + 7, v5); - v3 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); - if ( v3 != std::streambuf::imbue ) - ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v3)(a2, a3); - std::locale::operator=(a2 + 7, a3); - return this; -} -// 4C9E0E: variable 'v5' is possibly undefined -// 4C98D0: using guessed type int __stdcall std::streambuf::imbue(int); - -//----- (004C9E90) -------------------------------------------------------- -int __stdcall std::streambuf::pbackfail(int a1) -{ - return -1; -} - -//----- (004C9EA0) -------------------------------------------------------- -void *__thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3) -{ - void *result; // eax - void *(__thiscall *v4)(void *, int, int); // edx - - result = this; - v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); - if ( v4 != std::streambuf::setbuf ) - return (void *)((int (__stdcall *)(int, int))v4)(a2, a3); - return result; -} - -//----- (004C9EC0) -------------------------------------------------------- -int std::streambuf::showmanyc() -{ - return 0; -} - -//----- (004C9ED0) -------------------------------------------------------- -int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8 a2) -{ - unsigned int v2; // eax - int result; // eax - - v2 = this[2]; - if ( this[1] < v2 && *(_BYTE *)(v2 - 1) == a2 ) - { - this[2] = v2 - 1; - return *(unsigned __int8 *)(v2 - 1); - } - else - { - result = -1; - if ( *(int (__stdcall **)(int))(*this + 44) != std::streambuf::pbackfail ) - return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, a2); - } - return result; -} - -//----- (004C9F10) -------------------------------------------------------- -int std::streambuf::underflow() -{ - return -1; -} - -//----- (004C9F20) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( - _DWORD *a1@, - std::locale *a2, - const std::locale *a3) -{ - volatile signed __int32 **v3; // ecx - - *a1 = &off_51ADD4; - v3 = (volatile signed __int32 **)(a1 + 7); - *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); - *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); - *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); - *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); - *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); - *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); - return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); -} -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004C9F60) -------------------------------------------------------- -void __fastcall std::streambuf::basic_streambuf(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_51ADD4; - v1 = a1 + 7; - *(v1 - 6) = 0; - *(v1 - 5) = 0; - *(v1 - 4) = 0; - *(v1 - 3) = 0; - *(v1 - 2) = 0; - *(v1 - 1) = 0; - std::locale::locale(v1); -} -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004C9FA0) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( - _DWORD *a1@, - std::locale *a2, - const std::locale *a3) -{ - volatile signed __int32 **v3; // ecx - - *a1 = &off_51ADD4; - v3 = (volatile signed __int32 **)(a1 + 7); - *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); - *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); - *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); - *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); - *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); - *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); - return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); -} -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004C9FE0) -------------------------------------------------------- -void __fastcall std::streambuf::basic_streambuf(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_51ADD4; - v1 = a1 + 7; - *(v1 - 6) = 0; - *(v1 - 5) = 0; - *(v1 - 4) = 0; - *(v1 - 3) = 0; - *(v1 - 2) = 0; - *(v1 - 1) = 0; - std::locale::locale(v1); -} -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004CA020) -------------------------------------------------------- -void __fastcall std::streambuf::~streambuf(char *Block) -{ - char *v2; // ecx - - v2 = Block + 28; - *((_DWORD *)v2 - 7) = &off_51ADD4; - std::locale::~locale((_DWORD **)v2); - operator delete(Block); -} -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004CA050) -------------------------------------------------------- -void __fastcall std::streambuf::~streambuf(int a1) -{ - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004CA060) -------------------------------------------------------- -void __fastcall std::streambuf::~streambuf(int a1) -{ - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004CA070) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int a2) -{ - volatile signed __int32 **v3; // ecx - - v3 = this + 7; - *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); - *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); - *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); - *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); - *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); - *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); - std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); - return this; -} - -//----- (004CA0C0) -------------------------------------------------------- -_DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx - - result = this; - v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); - if ( v7 == std::wstreambuf::seekoff ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - } - else - { - v7(this, a2, a3, a4, a5, a6); - return this; - } - return result; -} - -//----- (004CA140) -------------------------------------------------------- -_DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) -{ - _DWORD *result; // eax - _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx - - result = this; - v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); - if ( v8 == std::wstreambuf::seekpos ) - { - *this = -1; - this[1] = -1; - this[2] = 0; - } - else - { - v8(this, a2, a3, a4, a5, a6, a7); - return this; - } - return result; -} - -//----- (004CA1E0) -------------------------------------------------------- -int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2) -{ - int result; // eax - - result = 2 * a2; - this[2] += 2 * a2; - return result; -} - -//----- (004CA1F0) -------------------------------------------------------- -int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2) -{ - int result; // eax - - result = 2 * a2; - this[5] += 2 * a2; - return result; -} - -//----- (004CA200) -------------------------------------------------------- -int __thiscall std::wstreambuf::setg(_DWORD *this, int a2, int a3, int a4) -{ - int result; // eax - - this[1] = a2; - this[2] = a3; - result = a4; - this[3] = a4; - return result; -} - -//----- (004CA220) -------------------------------------------------------- -int __thiscall std::wstreambuf::setp(_DWORD *this, int a2, int a3) -{ - int result; // eax - - this[5] = a2; - this[4] = a2; - result = a3; - this[6] = a3; - return result; -} - -//----- (004CA240) -------------------------------------------------------- -void __thiscall std::wstreambuf::swap(int this, int a2) -{ - volatile signed __int32 **v2; // esi - int v3; // edx - int v4; // ebx - int v5; // edx - int v6; // ebx - int v7; // edx - int v8; // ebx - int v9; // edx - int v10; // ebx - int v11; // edx - int v12; // ebx - int v13; // edx - const std::locale *v14; // [esp+4h] [ebp-28h] - _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF - - v2 = (volatile signed __int32 **)(this + 28); - v3 = *(_DWORD *)(this + 4); - *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); - v4 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = v3; - v5 = *(_DWORD *)(this + 8); - *(_DWORD *)(this + 8) = v4; - v6 = *(_DWORD *)(a2 + 12); - *(_DWORD *)(a2 + 8) = v5; - v7 = *(_DWORD *)(this + 12); - *(_DWORD *)(this + 12) = v6; - v8 = *(_DWORD *)(a2 + 16); - *(_DWORD *)(a2 + 12) = v7; - v9 = *(_DWORD *)(this + 16); - *(_DWORD *)(this + 16) = v8; - v10 = *(_DWORD *)(a2 + 20); - *(_DWORD *)(a2 + 16) = v9; - v11 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 20) = v10; - v12 = *(_DWORD *)(a2 + 24); - *(_DWORD *)(a2 + 20) = v11; - v13 = *(_DWORD *)(this + 24); - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(a2 + 24) = v13; - std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); - std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); - std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); - std::locale::~locale(v15); -} -// 4CA2A1: variable 'v14' is possibly undefined - -//----- (004CA2E0) -------------------------------------------------------- -int std::wstreambuf::sync() -{ - return 0; -} - -//----- (004CA2F0) -------------------------------------------------------- -int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2) -{ - int result; // eax - - result = 2 * a2; - this[2] += 2 * a2; - return result; -} - -//----- (004CA310) -------------------------------------------------------- -int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2) -{ - int result; // eax - - result = 2 * a2; - this[5] += 2 * a2; - return result; -} - -//----- (004CA320) -------------------------------------------------------- -int __fastcall std::wstreambuf::sgetc(_DWORD *a1) -{ - unsigned __int16 *v1; // eax - int result; // eax - int (*v3)(void); // edx - - v1 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - return *v1; - v3 = *(int (**)(void))(*a1 + 36); - result = -1; - if ( v3 != std::wstreambuf::underflow ) - return v3(); - return result; -} - -//----- (004CA350) -------------------------------------------------------- -int __fastcall std::wstreambuf::sgetn(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); -} - -//----- (004CA360) -------------------------------------------------------- -int __thiscall std::wstreambuf::sputc(_DWORD *this, int a2) -{ - _WORD *v2; // eax - int result; // eax - - v2 = (_WORD *)this[5]; - if ( this[6] <= (unsigned int)v2 ) - { - result = -1; - if ( *(int (__stdcall **)(int))(*this + 52) != std::wstreambuf::overflow ) - return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 52))(this, (unsigned __int16)a2); - } - else - { - *v2 = a2; - this[5] = v2 + 1; - return a2; - } - return result; -} - -//----- (004CA3A0) -------------------------------------------------------- -int __fastcall std::wstreambuf::sputn(int a1) -{ - return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); -} - -//----- (004CA3B0) -------------------------------------------------------- -int __fastcall std::wstreambuf::uflow(_DWORD *a1) -{ - int (*v1)(); // eax - unsigned __int16 *v4; // eax - int v5; // edx - - v1 = *(int (**)())(*a1 + 36); - if ( v1 == std::wstreambuf::underflow ) - return -1; - if ( (unsigned __int16)v1() == 0xFFFF ) - return -1; - v4 = (unsigned __int16 *)a1[2]; - v5 = *v4; - a1[2] = v4 + 1; - return v5; -} - -//----- (004CA400) -------------------------------------------------------- -int __fastcall std::wstreambuf::sbumpc(_DWORD *a1) -{ - unsigned __int16 *v1; // eax - int v2; // edx - int (*v4)(void); // edx - int (*v5)(); // eax - unsigned __int16 *v6; // eax - int v7; // edx - - v1 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - { - v2 = *v1; - a1[2] = v1 + 1; - return v2; - } - v4 = *(int (**)(void))(*a1 + 40); - if ( (char *)v4 != (char *)std::wstreambuf::uflow ) - return v4(); - v5 = *(int (**)())(*a1 + 36); - if ( v5 == std::wstreambuf::underflow ) - return -1; - if ( (unsigned __int16)v5() == 0xFFFF ) - return -1; - v6 = (unsigned __int16 *)a1[2]; - v7 = *v6; - a1[2] = v6 + 1; - return v7; -} - -//----- (004CA480) -------------------------------------------------------- -void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3) -{ - return this; -} - -//----- (004CA490) -------------------------------------------------------- -int __fastcall std::wstreambuf::snextc(_DWORD *a1) -{ - __int16 *v1; // eax - __int16 v2; // dx - unsigned __int16 *v3; // eax - int (*v5)(); // eax - int (*v6)(void); // edx - int (*v7)(); // eax - __int16 v8; // ax - _DWORD *v9; // ecx - __int16 v10; // dx - unsigned __int16 *v11; // eax - __int16 *v12; // eax - - v1 = (__int16 *)a1[2]; - if ( (unsigned int)v1 < a1[3] ) - { - v2 = *v1; - a1[2] = v1 + 1; - if ( v2 == -1 ) - return -1; - v3 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v3 < a1[3] ) - return *v3; - v5 = *(int (**)())(*a1 + 36); - if ( v5 == std::wstreambuf::underflow ) - return -1; - return v5(); - } - v6 = *(int (**)(void))(*a1 + 40); - if ( (char *)v6 == (char *)std::wstreambuf::uflow ) - { - v7 = *(int (**)())(*a1 + 36); - if ( v7 == std::wstreambuf::underflow || (unsigned __int16)v7() == 0xFFFF ) - return -1; - v9 = a1; - v12 = (__int16 *)a1[2]; - v10 = *v12; - a1[2] = v12 + 1; - } - else - { - v8 = v6(); - v9 = a1; - v10 = v8; - } - if ( v10 == -1 ) - return -1; - v11 = (unsigned __int16 *)v9[2]; - if ( (unsigned int)v11 < v9[3] ) - return *v11; - v5 = *(int (**)())(*v9 + 36); - if ( v5 == std::wstreambuf::underflow ) - return -1; - return v5(); -} - -//----- (004CA550) -------------------------------------------------------- -int (*__fastcall std::wstreambuf::stossc(_DWORD *a1))(void) -{ - unsigned int v1; // eax - int (*result)(void); // eax - int (*v3)(void); // edx - - v1 = a1[2]; - if ( v1 >= a1[3] ) - { - v3 = *(int (**)(void))(*a1 + 40); - if ( (char *)v3 == (char *)std::wstreambuf::uflow ) - { - result = *(int (**)(void))(*a1 + 36); - if ( result != std::wstreambuf::underflow ) - { - result = (int (*)(void))result(); - if ( (_WORD)result != 0xFFFF ) - a1[2] += 2; - } - } - else - { - return (int (*)(void))v3(); - } - } - else - { - result = (int (*)(void))(v1 + 2); - a1[2] = result; - } - return result; -} - -//----- (004CA5B0) -------------------------------------------------------- -int __thiscall std::wstreambuf::xsgetn(_DWORD *this, char *a2, int a3) -{ - int v4; // esi - int v5; // edx - _BYTE *v7; // ebx - char *Src; // eax - int v9; // ebx - int v10; // ebp - char *v12; // ebp - int (__fastcall *v13)(_DWORD *); // ebx - int (*v14)(); // eax - __int16 *v15; // ecx - __int16 v16; // ax - char *v17; // [esp+30h] [ebp+4h] - int v18; // [esp+34h] [ebp+8h] - int v19; // [esp+34h] [ebp+8h] - int v20; // [esp+34h] [ebp+8h] - - v4 = 0; - v5 = a3; - if ( a3 > 0 ) - { - while ( 1 ) - { - v7 = (_BYTE *)this[3]; - Src = (char *)this[2]; - if ( v7 == Src ) - { - v12 = a2; - } - else - { - v9 = (v7 - Src) >> 1; - if ( v9 > v5 - v4 ) - v9 = v5 - v4; - v10 = 2 * v9; - if ( v9 ) - { - v18 = v5; - v17 = a2; - memcpy(a2, Src, 2 * v9); - Src = (char *)this[2]; - v5 = v18; - a2 = v17; - } - v4 += v9; - this[2] = &Src[v10]; - if ( v5 <= v4 ) - return v4; - v12 = &a2[v10]; - } - v13 = *(int (__fastcall **)(_DWORD *))(*this + 40); - if ( v13 == std::wstreambuf::uflow ) - { - v14 = *(int (**)())(*this + 36); - if ( v14 == std::wstreambuf::underflow ) - return v4; - v19 = v5; - if ( ((unsigned __int16 (__fastcall *)(_DWORD *))v14)(this) == 0xFFFF ) - return v4; - v15 = (__int16 *)this[2]; - v5 = v19; - v16 = *v15; - this[2] = v15 + 1; - } - else - { - v20 = v5; - v16 = v13(this); - v5 = v20; - } - if ( v16 != -1 ) - { - ++v4; - *(_WORD *)v12 = v16; - a2 = v12 + 2; - if ( v5 > v4 ) - continue; - } - return v4; - } - } - return v4; -} - -//----- (004CA6A0) -------------------------------------------------------- -int __thiscall std::wstreambuf::xsputn(_DWORD *this, char *a2, int a3) -{ - int v3; // edx - int v6; // esi - _BYTE *v7; // ebx - char *v8; // eax - int v9; // ebx - int v10; // ecx - int (__stdcall *v12)(int); // eax - int v13; // [esp+44h] [ebp+8h] - int v14; // [esp+44h] [ebp+8h] - - v3 = a3; - if ( a3 > 0 ) - { - v6 = 0; - while ( 1 ) - { - v7 = (_BYTE *)this[6]; - v8 = (char *)this[5]; - if ( v7 != v8 ) - { - v9 = (v7 - v8) >> 1; - if ( v9 > v3 - v6 ) - v9 = v3 - v6; - v10 = 2 * v9; - if ( v9 ) - { - v13 = v3; - memcpy(v8, a2, 2 * v9); - v8 = (char *)this[5]; - v3 = v13; - v10 = 2 * v9; - } - v6 += v9; - this[5] = &v8[v10]; - if ( v3 <= v6 ) - return v6; - a2 += v10; - } - v12 = *(int (__stdcall **)(int))(*this + 52); - if ( v12 != std::wstreambuf::overflow ) - { - v14 = v3; - if ( ((unsigned __int16 (__thiscall *)(_DWORD *, _DWORD))v12)(this, *(unsigned __int16 *)a2) != 0xFFFF ) - { - v3 = v14; - ++v6; - a2 += 2; - if ( v14 > v6 ) - continue; - } - } - return v6; - } - } - return 0; -} - -//----- (004CA770) -------------------------------------------------------- -int __fastcall std::wstreambuf::pubsync(int a1) -{ - int (*v1)(void); // eax - - v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); - if ( v1 == std::wstreambuf::sync ) - return 0; - else - return v1(); -} - -//----- (004CA790) -------------------------------------------------------- -_DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - - *this = -1; - result = this; - this[1] = -1; - this[2] = 0; - return result; -} - -//----- (004CA7B0) -------------------------------------------------------- -_DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) -{ - _DWORD *result; // eax - - result = this; - *this = -1; - this[1] = -1; - this[2] = 0; - return result; -} - -//----- (004CA7D0) -------------------------------------------------------- -int __fastcall std::wstreambuf::sungetc(_DWORD *a1) -{ - unsigned int v1; // eax - unsigned int v2; // edx - int result; // eax - int (__stdcall *v4)(int); // edx - - v1 = a1[2]; - if ( a1[1] >= v1 ) - { - v4 = *(int (__stdcall **)(int))(*a1 + 44); - result = -1; - if ( v4 != std::wstreambuf::pbackfail ) - return v4(0xFFFF); - } - else - { - v2 = v1 - 2; - result = *(unsigned __int16 *)(v1 - 2); - a1[2] = v2; - } - return result; -} - -//----- (004CA820) -------------------------------------------------------- -int __fastcall std::wstreambuf::in_avail(_DWORD *a1) -{ - int v1; // eax - int v2; // edx - int result; // eax - int (*v4)(void); // edx - - v1 = a1[3]; - v2 = a1[2]; - if ( v1 != v2 ) - return (v1 - v2) >> 1; - v4 = *(int (**)(void))(*a1 + 28); - result = 0; - if ( v4 != std::wstreambuf::showmanyc ) - return v4(); - return result; -} - -//----- (004CA850) -------------------------------------------------------- -int __stdcall std::wstreambuf::overflow(int a1) -{ - return -1; -} - -//----- (004CA860) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::wstreambuf::pubimbue( - volatile signed __int32 **this, - volatile signed __int32 **a2, - volatile signed __int32 **a3) -{ - int (__stdcall *v3)(int); // eax - const std::locale *v5; // [esp+4h] [ebp-54h] - - std::locale::locale(this, a2 + 7, v5); - v3 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); - if ( v3 != std::wstreambuf::imbue ) - ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v3)(a2, a3); - std::locale::operator=(a2 + 7, a3); - return this; -} -// 4CA89E: variable 'v5' is possibly undefined -// 4CA300: using guessed type int __stdcall std::wstreambuf::imbue(int); - -//----- (004CA920) -------------------------------------------------------- -int __stdcall std::wstreambuf::pbackfail(int a1) -{ - return -1; -} - -//----- (004CA930) -------------------------------------------------------- -void *__thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3) -{ - void *result; // eax - void *(__thiscall *v4)(void *, int, int); // edx - - result = this; - v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); - if ( v4 != std::wstreambuf::setbuf ) - return (void *)((int (__stdcall *)(int, int))v4)(a2, a3); - return result; -} - -//----- (004CA950) -------------------------------------------------------- -int std::wstreambuf::showmanyc() -{ - return 0; -} - -//----- (004CA960) -------------------------------------------------------- -int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2) -{ - unsigned int v2; // eax - int result; // eax - - v2 = this[2]; - if ( this[1] < v2 && *(_WORD *)(v2 - 2) == (_WORD)a2 ) - { - this[2] = v2 - 2; - return a2; - } - else - { - result = -1; - if ( *(int (__stdcall **)(int))(*this + 44) != std::wstreambuf::pbackfail ) - return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, (unsigned __int16)a2); - } - return result; -} - -//----- (004CA9A0) -------------------------------------------------------- -int std::wstreambuf::underflow() -{ - return -1; -} - -//----- (004CA9B0) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( - _DWORD *a1@, - std::locale *a2, - const std::locale *a3) -{ - volatile signed __int32 **v3; // ecx - - *a1 = &off_51AE14; - v3 = (volatile signed __int32 **)(a1 + 7); - *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); - *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); - *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); - *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); - *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); - *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); - return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); -} -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004CA9F0) -------------------------------------------------------- -void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_51AE14; - v1 = a1 + 7; - *(v1 - 6) = 0; - *(v1 - 5) = 0; - *(v1 - 4) = 0; - *(v1 - 3) = 0; - *(v1 - 2) = 0; - *(v1 - 1) = 0; - std::locale::locale(v1); -} -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004CAA30) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( - _DWORD *a1@, - std::locale *a2, - const std::locale *a3) -{ - volatile signed __int32 **v3; // ecx - - *a1 = &off_51AE14; - v3 = (volatile signed __int32 **)(a1 + 7); - *(v3 - 6) = (volatile signed __int32 *)*((_DWORD *)a2 + 1); - *(v3 - 5) = (volatile signed __int32 *)*((_DWORD *)a2 + 2); - *(v3 - 4) = (volatile signed __int32 *)*((_DWORD *)a2 + 3); - *(v3 - 3) = (volatile signed __int32 *)*((_DWORD *)a2 + 4); - *(v3 - 2) = (volatile signed __int32 *)*((_DWORD *)a2 + 5); - *(v3 - 1) = (volatile signed __int32 *)*((_DWORD *)a2 + 6); - return std::locale::locale(v3, (volatile signed __int32 **)a2 + 7, a3); -} -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004CAA70) -------------------------------------------------------- -void __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &off_51AE14; - v1 = a1 + 7; - *(v1 - 6) = 0; - *(v1 - 5) = 0; - *(v1 - 4) = 0; - *(v1 - 3) = 0; - *(v1 - 2) = 0; - *(v1 - 1) = 0; - std::locale::locale(v1); -} -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004CAAB0) -------------------------------------------------------- -void __fastcall std::wstreambuf::~wstreambuf(char *Block) -{ - char *v2; // ecx - - v2 = Block + 28; - *((_DWORD *)v2 - 7) = &off_51AE14; - std::locale::~locale((_DWORD **)v2); - operator delete(Block); -} -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004CAAE0) -------------------------------------------------------- -void __fastcall std::wstreambuf::~wstreambuf(int a1) -{ - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004CAAF0) -------------------------------------------------------- -void __fastcall std::wstreambuf::~wstreambuf(int a1) -{ - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004CAB00) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int a2) -{ - volatile signed __int32 **v3; // ecx - - v3 = this + 7; - *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); - *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); - *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); - *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); - *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); - *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); - std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); - return this; -} - -//----- (004CAB50) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B6C4; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51AE54; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51AE54: using guessed type int (*off_51AE54)(); -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004CAC90) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) -{ - std::messages_byname::messages_byname(this, *a2, a3); -} - -//----- (004CACA0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B6C4; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51AE54; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51AE54: using guessed type int (*off_51AE54)(); -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004CADE0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) -{ - std::messages_byname::messages_byname(this, *a2, a3); -} - -//----- (004CADF0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B6C4; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4CAE2E: variable 'lpfctx' is possibly undefined -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004CAE50) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B6C4; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4CAE8E: variable 'lpfctx' is possibly undefined -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004CAEB0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B6C4; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4CAEEE: variable 'lpfctx' is possibly undefined -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004CAF10) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B6E0; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51AE70; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51AE70: using guessed type int (*off_51AE70)(); -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004CB050) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) -{ - std::messages_byname::messages_byname(this, *a2, a3); -} - -//----- (004CB060) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B6E0; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51AE70; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51AE70: using guessed type int (*off_51AE70)(); -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004CB1A0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) -{ - std::messages_byname::messages_byname(this, *a2, a3); -} - -//----- (004CB1B0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B6E0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4CB1EE: variable 'lpfctx' is possibly undefined -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004CB210) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B6E0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4CB24E: variable 'lpfctx' is possibly undefined -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004CB270) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B6E0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4CB2AE: variable 'lpfctx' is possibly undefined -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004CB2D0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51B6FC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51AE8C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51AE8C: using guessed type int (*off_51AE8C)(); -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004CB410) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51B6FC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51AE8C; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51AE8C: using guessed type int (*off_51AE8C)(); -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004CB560) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51B6FC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51AE8C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51AE8C: using guessed type int (*off_51AE8C)(); -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004CB6A0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51B6FC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51AE8C; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51AE8C: using guessed type int (*off_51AE8C)(); -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004CB7F0) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) -{ - *Block = &off_51AE8C; - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 51AE8C: using guessed type int (*off_51AE8C)(); - -//----- (004CB810) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_51AE8C; - std::numpunct::~numpunct(a1); -} -// 51AE8C: using guessed type int (*off_51AE8C)(); - -//----- (004CB820) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_51AE8C; - std::numpunct::~numpunct(a1); -} -// 51AE8C: using guessed type int (*off_51AE8C)(); - -//----- (004CB830) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51B720; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51AEB0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51AEB0: using guessed type int (*off_51AEB0)(); -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004CB970) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51B720; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51AEB0; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51AEB0: using guessed type int (*off_51AEB0)(); -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004CBAC0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51B720; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51AEB0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51AEB0: using guessed type int (*off_51AEB0)(); -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004CBC00) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51B720; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51AEB0; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51AEB0: using guessed type int (*off_51AEB0)(); -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004CBD50) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) -{ - *Block = &off_51AEB0; - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 51AEB0: using guessed type int (*off_51AEB0)(); - -//----- (004CBD70) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_51AEB0; - std::numpunct::~numpunct(a1); -} -// 51AEB0: using guessed type int (*off_51AEB0)(); - -//----- (004CBD80) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_51AEB0; - std::numpunct::~numpunct(a1); -} -// 51AEB0: using guessed type int (*off_51AEB0)(); - -//----- (004CBD90) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AED4; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AED4: using guessed type int (*off_51AED4)(); - -//----- (004CBDB0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AED4; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AED4: using guessed type int (*off_51AED4)(); - -//----- (004CBDD0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AED4; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AED4: using guessed type int (*off_51AED4)(); - -//----- (004CBDF0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AED4; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AED4: using guessed type int (*off_51AED4)(); - -//----- (004CBE10) -------------------------------------------------------- -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B744; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4CBE1C: variable 'Blocka' is possibly undefined -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004CBE30) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B744; - std::locale::facet::~facet(a1); -} -// 4CBE30: variable 'v1' is possibly undefined -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004CBE40) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B744; - std::locale::facet::~facet(a1); -} -// 4CBE40: variable 'v1' is possibly undefined -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004CBE50) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AEFC; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AEFC: using guessed type int (*off_51AEFC)(); - -//----- (004CBE70) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AEFC; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AEFC: using guessed type int (*off_51AEFC)(); - -//----- (004CBE90) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AEFC; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AEFC: using guessed type int (*off_51AEFC)(); - -//----- (004CBEB0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AEFC; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AEFC: using guessed type int (*off_51AEFC)(); - -//----- (004CBED0) -------------------------------------------------------- -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B76C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4CBEDC: variable 'Blocka' is possibly undefined -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004CBEF0) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B76C; - std::locale::facet::~facet(a1); -} -// 4CBEF0: variable 'v1' is possibly undefined -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004CBF00) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B76C; - std::locale::facet::~facet(a1); -} -// 4CBF00: variable 'v1' is possibly undefined -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004CBF10) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF24; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF24: using guessed type int (*off_51AF24)(); - -//----- (004CBF30) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF24; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF24: using guessed type int (*off_51AF24)(); - -//----- (004CBF50) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF24; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF24: using guessed type int (*off_51AF24)(); - -//----- (004CBF70) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF24; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF24: using guessed type int (*off_51AF24)(); - -//----- (004CBF90) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF24; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF24: using guessed type int (*off_51AF24)(); - -//----- (004CBFB0) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF24; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF24: using guessed type int (*off_51AF24)(); - -//----- (004CBFD0) -------------------------------------------------------- -void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B794; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4CBFDC: variable 'Blocka' is possibly undefined -// 51B794: using guessed type int (*off_51B794)(); - -//----- (004CBFF0) -------------------------------------------------------- -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B794; - std::locale::facet::~facet(a1); -} -// 4CBFF0: variable 'v1' is possibly undefined -// 51B794: using guessed type int (*off_51B794)(); - -//----- (004CC000) -------------------------------------------------------- -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B794; - std::locale::facet::~facet(a1); -} -// 4CC000: variable 'v1' is possibly undefined -// 51B794: using guessed type int (*off_51B794)(); - -//----- (004CC010) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF38; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF38: using guessed type int (*off_51AF38)(); - -//----- (004CC030) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF38; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF38: using guessed type int (*off_51AF38)(); - -//----- (004CC050) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF38; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF38: using guessed type int (*off_51AF38)(); - -//----- (004CC070) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF38; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF38: using guessed type int (*off_51AF38)(); - -//----- (004CC090) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF38; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF38: using guessed type int (*off_51AF38)(); - -//----- (004CC0B0) -------------------------------------------------------- -BOOL __thiscall std::time_put_byname>::time_put_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51AF38; - result = a3 != 0; - this[1] = result; - return result; -} -// 51AF38: using guessed type int (*off_51AF38)(); - -//----- (004CC0D0) -------------------------------------------------------- -void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B7A8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4CC0DC: variable 'Blocka' is possibly undefined -// 51B7A8: using guessed type int (*off_51B7A8)(); - -//----- (004CC0F0) -------------------------------------------------------- -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B7A8; - std::locale::facet::~facet(a1); -} -// 4CC0F0: variable 'v1' is possibly undefined -// 51B7A8: using guessed type int (*off_51B7A8)(); - -//----- (004CC100) -------------------------------------------------------- -void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B7A8; - std::locale::facet::~facet(a1); -} -// 4CC100: variable 'v1' is possibly undefined -// 51B7A8: using guessed type int (*off_51B7A8)(); - -//----- (004CC110) -------------------------------------------------------- -void __userpurge std::underflow_error::underflow_error(_DWORD *a1@, std::underflow_error *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_51AB98; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_51AF4C; -} -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AF4C: using guessed type void (__cdecl *off_51AF4C)(std::underflow_error *__hidden this); - -//----- (004CC1A0) -------------------------------------------------------- -void __thiscall std::underflow_error::underflow_error(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_51AB98; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_51AF4C; -} -// 4CC1F4: variable 'v2' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AF4C: using guessed type void (__cdecl *off_51AF4C)(std::underflow_error *__hidden this); - -//----- (004CC240) -------------------------------------------------------- -void __userpurge std::underflow_error::underflow_error( - _DWORD *a1@, - std::underflow_error *this, - const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51AB98; - std::string::string(a1 + 1, this, v3); - *a1 = &off_51AF4C; -} -// 4CC288: variable 'v3' is possibly undefined -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 51AF4C: using guessed type void (__cdecl *off_51AF4C)(std::underflow_error *__hidden this); - -//----- (004CC2D0) -------------------------------------------------------- -void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51AF4C; - std::runtime_error::~runtime_error(Block); - operator delete(a1); -} -// 4CC2DC: variable 'Block' is possibly undefined -// 51AF4C: using guessed type void (__cdecl *off_51AF4C)(std::underflow_error *__hidden this); - -//----- (004CC2F0) -------------------------------------------------------- -void __cdecl std::underflow_error::~underflow_error(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51AB98; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4CC2FB: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51AB98: using guessed type void (__cdecl *off_51AB98)(std::runtime_error *__hidden this); -// 4CC2F0: using guessed type int var_D[3]; - -//----- (004CC350) -------------------------------------------------------- -int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1) -{ - signed __int32 v1; // eax - int result; // eax - signed __int32 v3; // eax - int v4; // [esp-1Ch] [ebp-1Ch] - int v5; // [esp-18h] [ebp-18h] - int v6; // [esp-14h] [ebp-14h] - volatile signed __int32 *v7; // [esp-10h] [ebp-10h] - int v8; // [esp-Ch] [ebp-Ch] - int v9; // [esp-8h] [ebp-8h] - - if ( _CRT_MT ) - { - v1 = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); - } - else - { - v1 = *((_DWORD *)a1 + 1); - *((_DWORD *)a1 + 1) = v1 - 1; - } - result = v1 - 1; - if ( !result ) - { - (*(void (__stdcall **)(int, int, int, volatile signed __int32 *, int, int))(*a1 + 8))(v4, v5, v6, a1, v8, v9); - if ( _CRT_MT ) - { - v3 = _InterlockedExchangeAdd(v7 + 2, 0xFFFFFFFF); - } - else - { - v3 = *((_DWORD *)v7 + 2); - *((_DWORD *)v7 + 2) = v3 - 1; - } - result = v3 - 1; - if ( !result ) - return (*(int (__fastcall **)(volatile signed __int32 *))(*v7 + 12))(v7); - } - return result; -} -// 4CC37A: variable 'v4' is possibly undefined -// 4CC37A: variable 'v5' is possibly undefined -// 4CC37A: variable 'v6' is possibly undefined -// 4CC37A: variable 'v8' is possibly undefined -// 4CC37A: variable 'v9' is possibly undefined -// 4CC38C: variable 'v7' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004CC3AC) -------------------------------------------------------- -void __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(int a1) -{ - if ( _CRT_MT ) - _InterlockedIncrement((volatile signed __int32 *)(a1 + 4)); - else - ++*(_DWORD *)(a1 + 4); -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004CC3C0) -------------------------------------------------------- -void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) -{ - _DWORD *(__thiscall *v2)(char *, int); // eax - unsigned int v3; // eax - bool v4; // al - _DWORD *(__thiscall *v5)(int *, int); // eax - unsigned int v6; // eax - _DWORD *(__thiscall *v7)(int *, int); // eax - unsigned int v8; // eax - int (__fastcall *v9)(int); // eax - char v10; // al - int (__fastcall *v11)(int); // eax - char v12; // al - char v13; // al - char *v14; // edx - void (__thiscall *v15)(_BYTE *, char *, char *, int); // eax - char v16; // al - void (__thiscall *v17)(_BYTE *, char *, char *, int); // eax - int v18; // ecx - int v19; // eax - int v20; // ecx - int v21; // eax - int v22; // ecx - int v23; // eax - unsigned int v24; // [esp+Ch] [ebp-7Ch] - unsigned int v25; // [esp+Ch] [ebp-7Ch] - unsigned int v26; // [esp+Ch] [ebp-7Ch] - char *v27; // [esp+1Ch] [ebp-6Ch] - char *v28; // [esp+1Ch] [ebp-6Ch] - std::string *v29; // [esp+24h] [ebp-64h] - std::string *v30; // [esp+28h] [ebp-60h] - std::string *Block; // [esp+2Ch] [ebp-5Ch] - _DWORD *v32; // [esp+34h] [ebp-54h] - _BYTE *v33; // [esp+34h] [ebp-54h] - char v35[7]; // [esp+71h] [ebp-17h] BYREF - int v36; // [esp+78h] [ebp-10h] BYREF - int v37[3]; // [esp+7Ch] [ebp-Ch] BYREF - - v32 = std::use_facet>(a2); - v2 = *(_DWORD *(__thiscall **)(char *, int))(*v32 + 16); - if ( (char *)v2 == (char *)std::numpunct::do_grouping ) - std::string::string(&v35[3], *(char **)(v32[2] + 8), (int)v37); - else - v2(&v35[3], (int)v32); - v3 = *(_DWORD *)(*(_DWORD *)&v35[3] - 12); - *(_DWORD *)(this + 12) = v3; - Block = (std::string *)operator new[](v3); - std::string::copy(&v35[3], Block, *(_DWORD *)(this + 12), 0, v24); - v4 = 0; - if ( *(_DWORD *)(this + 12) ) - v4 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v4; - v5 = *(_DWORD *(__thiscall **)(int *, int))(*v32 + 20); - if ( v5 == std::numpunct::do_truename ) - std::string::string(&v36, *(char **)(v32[2] + 20), (int)&v35[1]); - else - v5(&v36, (int)v32); - v6 = *(_DWORD *)(v36 - 12); - *(_DWORD *)(this + 24) = v6; - v29 = (std::string *)operator new[](v6); - std::string::copy(&v36, v29, *(_DWORD *)(this + 24), 0, v25); - v7 = *(_DWORD *(__thiscall **)(int *, int))(*v32 + 24); - if ( v7 == std::numpunct::do_falsename ) - std::string::string(v37, *(char **)(v32[2] + 28), (int)&v35[2]); - else - v7(v37, (int)v32); - v8 = *(_DWORD *)(v37[0] - 12); - *(_DWORD *)(this + 32) = v8; - v30 = (std::string *)operator new[](v8); - std::string::copy(v37, v30, *(_DWORD *)(this + 32), 0, v26); - v9 = *(int (__fastcall **)(int))(*v32 + 8); - if ( v9 == std::numpunct::do_decimal_point ) - v10 = *(_BYTE *)(v32[2] + 36); - else - v10 = v9((int)v32); - *(_BYTE *)(this + 36) = v10; - v11 = *(int (__fastcall **)(int))(*v32 + 12); - if ( v11 == std::numpunct::do_thousands_sep ) - v12 = *(_BYTE *)(v32[2] + 37); - else - v12 = v11((int)v32); - *(_BYTE *)(this + 37) = v12; - v33 = std::use_facet>(a2); - v13 = v33[28]; - v27 = std::__num_base::_S_atoms_out[0]; - v14 = std::__num_base::_S_atoms_out[0]; - if ( v13 == 1 ) - goto LABEL_17; - if ( !v13 ) - std::ctype::_M_widen_init((int)v33); - v14 = v27; - v15 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v33 + 28); - if ( (char *)v15 == (char *)std::ctype::do_widen ) - { -LABEL_17: - *(_DWORD *)(this + 38) = *(_DWORD *)v14; - *(_DWORD *)(this + 42) = *((_DWORD *)v14 + 1); - *(_DWORD *)(this + 46) = *((_DWORD *)v14 + 2); - *(_DWORD *)(this + 50) = *((_DWORD *)v14 + 3); - *(_DWORD *)(this + 54) = *((_DWORD *)v14 + 4); - *(_DWORD *)(this + 58) = *((_DWORD *)v14 + 5); - *(_DWORD *)(this + 62) = *((_DWORD *)v14 + 6); - *(_DWORD *)(this + 66) = *((_DWORD *)v14 + 7); - *(_DWORD *)(this + 70) = *((_DWORD *)v14 + 8); - } - else - { - v15(v33, v27, v27 + 36, this + 38); - } - v28 = std::__num_base::_S_atoms_in[0]; - v16 = v33[28]; - if ( v16 == 1 ) - goto LABEL_21; - if ( v16 ) - { - v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v33 + 28); - if ( (char *)v17 == (char *)std::ctype::do_widen ) - { -LABEL_21: - *(_DWORD *)(this + 74) = *(_DWORD *)v28; - *(_DWORD *)(this + 78) = *((_DWORD *)v28 + 1); - *(_DWORD *)(this + 82) = *((_DWORD *)v28 + 2); - *(_DWORD *)(this + 86) = *((_DWORD *)v28 + 3); - *(_DWORD *)(this + 90) = *((_DWORD *)v28 + 4); - *(_DWORD *)(this + 94) = *((_DWORD *)v28 + 5); - *(_WORD *)(this + 98) = *((_WORD *)v28 + 12); - goto LABEL_22; - } - } - else - { - std::ctype::_M_widen_init((int)v33); - v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v33 + 28); - if ( (char *)v17 == (char *)std::ctype::do_widen ) - goto LABEL_21; - } - v17(v33, v28, v28 + 26, this + 74); -LABEL_22: - *(_DWORD *)(this + 8) = Block; - *(_DWORD *)(this + 20) = v29; - v18 = v37[0]; - *(_DWORD *)(this + 28) = v30; - *(_BYTE *)(this + 100) = 1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v18 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_24: - v20 = v36; - if ( !_CRT_MT ) - goto LABEL_25; - goto LABEL_31; - } - } - else - { - v19 = *(_DWORD *)(v18 - 4); - *(_DWORD *)(v18 - 4) = v19 - 1; - if ( v19 > 0 ) - goto LABEL_24; - } - std::string::_Rep::_M_destroy((void *)(v18 - 12), (int)&v35[2]); - v20 = v36; - if ( !_CRT_MT ) - { -LABEL_25: - v21 = *(_DWORD *)(v20 - 4); - *(_DWORD *)(v20 - 4) = v21 - 1; - if ( v21 > 0 ) - goto LABEL_26; - goto LABEL_32; - } -LABEL_31: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v20 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_26: - v22 = *(_DWORD *)&v35[3]; - if ( !_CRT_MT ) - goto LABEL_27; - goto LABEL_33; - } -LABEL_32: - std::string::_Rep::_M_destroy((void *)(v20 - 12), (int)v37); - v22 = *(_DWORD *)&v35[3]; - if ( !_CRT_MT ) - { -LABEL_27: - v23 = *(_DWORD *)(v22 - 4); - *(_DWORD *)(v22 - 4) = v23 - 1; - if ( v23 > 0 ) - return; -LABEL_34: - std::string::_Rep::_M_destroy((void *)(v22 - 12), (int)v37); - return; - } -LABEL_33: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v22 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_34; -} -// 4CC47D: variable 'v24' is possibly undefined -// 4CC51F: variable 'v25' is possibly undefined -// 4CC5A1: variable 'v26' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C480: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 50C484: using guessed type char *std::__num_base::_S_atoms_out[2]; - -//----- (004CCA20) -------------------------------------------------------- -int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_51AF60; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 16) = 0; - this[1] = a2 != 0; - result = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - *((_WORD *)this + 18) = 0; - *((_BYTE *)this + 100) = 0; - return result; -} -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (004CCA70) -------------------------------------------------------- -int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_51AF60; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 16) = 0; - this[1] = a2 != 0; - result = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - *((_WORD *)this + 18) = 0; - *((_BYTE *)this + 100) = 0; - return result; -} -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (004CCAC0) -------------------------------------------------------- -void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4CCB00: variable 'lpfctx' is possibly undefined - -//----- (004CCB50) -------------------------------------------------------- -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - int v2; // ebx - bool v3; // zf - - v2 = v1; - v3 = *(_BYTE *)(v1 + 100) == 0; - *(_DWORD *)v1 = &off_51AF60; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( *(_DWORD *)(v2 + 20) ) - operator delete[](*(void **)(v2 + 20)); - if ( *(_DWORD *)(v2 + 28) ) - operator delete[](*(void **)(v2 + 28)); - } - std::locale::facet::~facet(a1); -} -// 4CCB51: variable 'v1' is possibly undefined -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (004CCBA0) -------------------------------------------------------- -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - int v2; // ebx - bool v3; // zf - - v2 = v1; - v3 = *(_BYTE *)(v1 + 100) == 0; - *(_DWORD *)v1 = &off_51AF60; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( *(_DWORD *)(v2 + 20) ) - operator delete[](*(void **)(v2 + 20)); - if ( *(_DWORD *)(v2 + 28) ) - operator delete[](*(void **)(v2 + 28)); - } - std::locale::facet::~facet(a1); -} -// 4CCBA1: variable 'v1' is possibly undefined -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (004CCBF0) -------------------------------------------------------- -void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) -{ - _DWORD *(__thiscall *v2)(char *, int); // eax - unsigned int v3; // eax - bool v4; // al - _DWORD *(__thiscall *v5)(int *, int); // eax - unsigned int v6; // eax - _DWORD *(__thiscall *v7)(int *, int); // eax - unsigned int v8; // eax - int v9; // eax - int (__fastcall *v10)(int); // edx - __int16 v11; // dx - int (__fastcall *v12)(int); // eax - __int16 v13; // ax - int v14; // ecx - int v15; // eax - int v16; // ecx - int v17; // eax - int v18; // ecx - int v19; // eax - unsigned int v20; // [esp+Ch] [ebp-6Ch] - _WORD *v21; // [esp+14h] [ebp-64h] - _WORD *v22; // [esp+18h] [ebp-60h] - std::string *Block; // [esp+1Ch] [ebp-5Ch] - _DWORD *v24; // [esp+24h] [ebp-54h] - void *v25; // [esp+24h] [ebp-54h] - char v27[7]; // [esp+61h] [ebp-17h] BYREF - int v28; // [esp+68h] [ebp-10h] BYREF - int v29[2]; // [esp+6Ch] [ebp-Ch] BYREF - - v24 = std::use_facet>(a2); - v2 = *(_DWORD *(__thiscall **)(char *, int))(*v24 + 16); - if ( (char *)v2 == (char *)std::numpunct::do_grouping ) - std::string::string(&v27[3], *(char **)(v24[2] + 8), (int)v29); - else - v2(&v27[3], (int)v24); - v3 = *(_DWORD *)(*(_DWORD *)&v27[3] - 12); - *(_DWORD *)(this + 12) = v3; - Block = (std::string *)operator new[](v3); - std::string::copy(&v27[3], Block, *(_DWORD *)(this + 12), 0, v20); - v4 = 0; - if ( *(_DWORD *)(this + 12) ) - v4 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v4; - v5 = *(_DWORD *(__thiscall **)(int *, int))(*v24 + 20); - if ( v5 == std::numpunct::do_truename ) - std::wstring::basic_string(&v28, *(wchar_t **)(v24[2] + 20), (int)&v27[1]); - else - v5(&v28, (int)v24); - v6 = *(_DWORD *)(v28 - 12); - *(_DWORD *)(this + 24) = v6; - if ( v6 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v21 = (_WORD *)operator new[](2 * v6); - std::wstring::copy(&v28, v21, *(_DWORD *)(this + 24), 0); - v7 = *(_DWORD *(__thiscall **)(int *, int))(*v24 + 24); - if ( v7 == std::numpunct::do_falsename ) - std::wstring::basic_string(v29, *(wchar_t **)(v24[2] + 28), (int)&v27[2]); - else - v7(v29, (int)v24); - v8 = *(_DWORD *)(v29[0] - 12); - *(_DWORD *)(this + 32) = v8; - if ( v8 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v22 = (_WORD *)operator new[](2 * v8); - std::wstring::copy(v29, v22, *(_DWORD *)(this + 32), 0); - v9 = *v24; - v10 = *(int (__fastcall **)(int))(*v24 + 8); - if ( v10 == std::numpunct::do_decimal_point ) - { - v11 = *(_WORD *)(v24[2] + 36); - } - else - { - v11 = v10((int)v24); - v9 = *v24; - } - v12 = *(int (__fastcall **)(int))(v9 + 12); - *(_WORD *)(this + 36) = v11; - if ( v12 == std::numpunct::do_thousands_sep ) - v13 = *(_WORD *)(v24[2] + 38); - else - v13 = v12((int)v24); - *(_WORD *)(this + 38) = v13; - v25 = std::use_facet>(a2); - (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v25 + 44))( - v25, - std::__num_base::_S_atoms_out[0], - std::__num_base::_S_atoms_out[0] + 36, - this + 40); - (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v25 + 44))( - v25, - std::__num_base::_S_atoms_in[0], - std::__num_base::_S_atoms_in[0] + 26, - this + 112); - v14 = v29[0]; - *(_DWORD *)(this + 8) = Block; - *(_BYTE *)(this + 164) = 1; - *(_DWORD *)(this + 20) = v21; - *(_DWORD *)(this + 28) = v22; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v14 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_17: - v16 = v28; - if ( !_CRT_MT ) - goto LABEL_18; - goto LABEL_24; - } - } - else - { - v15 = *(_DWORD *)(v14 - 4); - *(_DWORD *)(v14 - 4) = v15 - 1; - if ( v15 > 0 ) - goto LABEL_17; - } - std::wstring::_Rep::_M_destroy((void *)(v14 - 12), (int)&v27[2]); - v16 = v28; - if ( !_CRT_MT ) - { -LABEL_18: - v17 = *(_DWORD *)(v16 - 4); - *(_DWORD *)(v16 - 4) = v17 - 1; - if ( v17 > 0 ) - goto LABEL_19; - goto LABEL_25; - } -LABEL_24: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v16 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_19: - v18 = *(_DWORD *)&v27[3]; - if ( !_CRT_MT ) - goto LABEL_20; - goto LABEL_26; - } -LABEL_25: - std::wstring::_Rep::_M_destroy((void *)(v16 - 12), (int)v29); - v18 = *(_DWORD *)&v27[3]; - if ( !_CRT_MT ) - { -LABEL_20: - v19 = *(_DWORD *)(v18 - 4); - *(_DWORD *)(v18 - 4) = v19 - 1; - if ( v19 > 0 ) - return; -LABEL_27: - std::string::_Rep::_M_destroy((void *)(v18 - 12), (int)v29); - return; - } -LABEL_26: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v18 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_27; -} -// 4CCCAB: variable 'v20' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C480: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 50C484: using guessed type char *std::__num_base::_S_atoms_out[2]; - -//----- (004CD170) -------------------------------------------------------- -BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51AF70; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - *((_BYTE *)this + 164) = 0; - return result; -} -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (004CD1D0) -------------------------------------------------------- -BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51AF70; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - *((_BYTE *)this + 164) = 0; - return result; -} -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (004CD230) -------------------------------------------------------- -void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4CD270: variable 'lpfctx' is possibly undefined - -//----- (004CD2C0) -------------------------------------------------------- -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - int v2; // ebx - bool v3; // zf - - v2 = v1; - v3 = *(_BYTE *)(v1 + 164) == 0; - *(_DWORD *)v1 = &off_51AF70; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( *(_DWORD *)(v2 + 20) ) - operator delete[](*(void **)(v2 + 20)); - if ( *(_DWORD *)(v2 + 28) ) - operator delete[](*(void **)(v2 + 28)); - } - std::locale::facet::~facet(a1); -} -// 4CD2C1: variable 'v1' is possibly undefined -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (004CD310) -------------------------------------------------------- -void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - int v2; // ebx - bool v3; // zf - - v2 = v1; - v3 = *(_BYTE *)(v1 + 164) == 0; - *(_DWORD *)v1 = &off_51AF70; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( *(_DWORD *)(v2 + 20) ) - operator delete[](*(void **)(v2 + 20)); - if ( *(_DWORD *)(v2 + 28) ) - operator delete[](*(void **)(v2 + 28)); - } - std::locale::facet::~facet(a1); -} -// 4CD311: variable 'v1' is possibly undefined -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (004CD360) -------------------------------------------------------- -void __userpurge std::invalid_argument::invalid_argument(_DWORD *a1@, std::invalid_argument *this, const char *a3) -{ - int v4; // [esp+5Fh] [ebp-9h] BYREF - - *a1 = &off_51A940; - std::string::string(a1 + 1, (char *)this, (int)&v4); - *a1 = &off_51AF80; -} -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AF80: using guessed type void (__cdecl *off_51AF80)(std::invalid_argument *__hidden this); - -//----- (004CD3F0) -------------------------------------------------------- -void __thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2) -{ - unsigned int v2; // [esp+8h] [ebp-50h] - - *this = &off_51A940; - std::__cow_string::__cow_string(this + 1, *(std::__cow_string **)a2, *(_DWORD *)(a2 + 4), v2); - *this = &off_51AF80; -} -// 4CD444: variable 'v2' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AF80: using guessed type void (__cdecl *off_51AF80)(std::invalid_argument *__hidden this); - -//----- (004CD490) -------------------------------------------------------- -void __userpurge std::invalid_argument::invalid_argument( - _DWORD *a1@, - std::invalid_argument *this, - const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51A940; - std::string::string(a1 + 1, this, v3); - *a1 = &off_51AF80; -} -// 4CD4D8: variable 'v3' is possibly undefined -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 51AF80: using guessed type void (__cdecl *off_51AF80)(std::invalid_argument *__hidden this); - -//----- (004CD520) -------------------------------------------------------- -void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51AF80; - std::logic_error::~logic_error(Block); - operator delete(a1); -} -// 4CD52C: variable 'Block' is possibly undefined -// 51AF80: using guessed type void (__cdecl *off_51AF80)(std::invalid_argument *__hidden this); - -//----- (004CD540) -------------------------------------------------------- -void __cdecl std::invalid_argument::~invalid_argument(std::exception *a1) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51A940; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(a1); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(a1); -} -// 4CD54B: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51A940: using guessed type void (__cdecl *off_51A940)(std::logic_error *__hidden this); -// 4CD540: using guessed type int var_D[3]; - -//----- (004CD5A0) -------------------------------------------------------- -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51AF94; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - this[4] = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - this[15] = 0; - this[16] = 0; - this[17] = 0; - this[18] = 0; - this[19] = 0; - this[20] = 0; - this[21] = 0; - this[22] = 0; - this[23] = 0; - this[24] = 0; - this[25] = 0; - this[26] = 0; - this[27] = 0; - this[28] = 0; - this[29] = 0; - this[30] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[37] = 0; - this[38] = 0; - this[39] = 0; - this[40] = 0; - this[41] = 0; - this[42] = 0; - this[43] = 0; - this[44] = 0; - this[45] = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - *((_BYTE *)this + 196) = 0; - return result; -} -// 51AF94: using guessed type int (*off_51AF94)(); - -//----- (004CD740) -------------------------------------------------------- -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51AF94; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - this[4] = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - this[15] = 0; - this[16] = 0; - this[17] = 0; - this[18] = 0; - this[19] = 0; - this[20] = 0; - this[21] = 0; - this[22] = 0; - this[23] = 0; - this[24] = 0; - this[25] = 0; - this[26] = 0; - this[27] = 0; - this[28] = 0; - this[29] = 0; - this[30] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[37] = 0; - this[38] = 0; - this[39] = 0; - this[40] = 0; - this[41] = 0; - this[42] = 0; - this[43] = 0; - this[44] = 0; - this[45] = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - *((_BYTE *)this + 196) = 0; - return result; -} -// 51AF94: using guessed type int (*off_51AF94)(); - -//----- (004CD8E0) -------------------------------------------------------- -void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51AF94; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4CD8EC: variable 'Blocka' is possibly undefined -// 51AF94: using guessed type int (*off_51AF94)(); - -//----- (004CD900) -------------------------------------------------------- -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51AF94; - std::locale::facet::~facet(a1); -} -// 4CD900: variable 'v1' is possibly undefined -// 51AF94: using guessed type int (*off_51AF94)(); - -//----- (004CD910) -------------------------------------------------------- -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51AF94; - std::locale::facet::~facet(a1); -} -// 4CD910: variable 'v1' is possibly undefined -// 51AF94: using guessed type int (*off_51AF94)(); - -//----- (004CD920) -------------------------------------------------------- -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51AFA4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - this[4] = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - this[15] = 0; - this[16] = 0; - this[17] = 0; - this[18] = 0; - this[19] = 0; - this[20] = 0; - this[21] = 0; - this[22] = 0; - this[23] = 0; - this[24] = 0; - this[25] = 0; - this[26] = 0; - this[27] = 0; - this[28] = 0; - this[29] = 0; - this[30] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[37] = 0; - this[38] = 0; - this[39] = 0; - this[40] = 0; - this[41] = 0; - this[42] = 0; - this[43] = 0; - this[44] = 0; - this[45] = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - *((_BYTE *)this + 196) = 0; - return result; -} -// 51AFA4: using guessed type int (*off_51AFA4)(); - -//----- (004CDAC0) -------------------------------------------------------- -BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51AFA4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - this[4] = 0; - this[1] = result; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - this[15] = 0; - this[16] = 0; - this[17] = 0; - this[18] = 0; - this[19] = 0; - this[20] = 0; - this[21] = 0; - this[22] = 0; - this[23] = 0; - this[24] = 0; - this[25] = 0; - this[26] = 0; - this[27] = 0; - this[28] = 0; - this[29] = 0; - this[30] = 0; - this[31] = 0; - this[32] = 0; - this[33] = 0; - this[34] = 0; - this[35] = 0; - this[36] = 0; - this[37] = 0; - this[38] = 0; - this[39] = 0; - this[40] = 0; - this[41] = 0; - this[42] = 0; - this[43] = 0; - this[44] = 0; - this[45] = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - *((_BYTE *)this + 196) = 0; - return result; -} -// 51AFA4: using guessed type int (*off_51AFA4)(); - -//----- (004CDC60) -------------------------------------------------------- -void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51AFA4; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4CDC6C: variable 'Blocka' is possibly undefined -// 51AFA4: using guessed type int (*off_51AFA4)(); - -//----- (004CDC80) -------------------------------------------------------- -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51AFA4; - std::locale::facet::~facet(a1); -} -// 4CDC80: variable 'v1' is possibly undefined -// 51AFA4: using guessed type int (*off_51AFA4)(); - -//----- (004CDC90) -------------------------------------------------------- -void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51AFA4; - std::locale::facet::~facet(a1); -} -// 4CDC90: variable 'v1' is possibly undefined -// 51AFA4: using guessed type int (*off_51AFA4)(); - -//----- (004CDCA0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A850; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51AFB4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A850: using guessed type int (*off_51A850)(); -// 51AFB4: using guessed type int (*off_51AFB4)(); - -//----- (004CDDF0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A850; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51AFB4; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A850: using guessed type int (*off_51A850)(); -// 51AFB4: using guessed type int (*off_51AFB4)(); - -//----- (004CDF50) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A850; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51AFB4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A850: using guessed type int (*off_51A850)(); -// 51AFB4: using guessed type int (*off_51AFB4)(); - -//----- (004CE0A0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A850; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51AFB4; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A850: using guessed type int (*off_51A850)(); -// 51AFB4: using guessed type int (*off_51AFB4)(); - -//----- (004CE200) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_51AFB4; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 51AFB4: using guessed type int (*off_51AFB4)(); - -//----- (004CE220) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51AFB4; - std::moneypunct::~moneypunct(a1); -} -// 51AFB4: using guessed type int (*off_51AFB4)(); - -//----- (004CE230) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51AFB4; - std::moneypunct::~moneypunct(a1); -} -// 51AFB4: using guessed type int (*off_51AFB4)(); - -//----- (004CE240) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A884; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51AFE8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A884: using guessed type int (*off_51A884)(); -// 51AFE8: using guessed type int (*off_51AFE8)(); - -//----- (004CE390) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A884; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51AFE8; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A884: using guessed type int (*off_51A884)(); -// 51AFE8: using guessed type int (*off_51AFE8)(); - -//----- (004CE4F0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A884; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51AFE8; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A884: using guessed type int (*off_51A884)(); -// 51AFE8: using guessed type int (*off_51AFE8)(); - -//----- (004CE640) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A884; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51AFE8; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A884: using guessed type int (*off_51A884)(); -// 51AFE8: using guessed type int (*off_51AFE8)(); - -//----- (004CE7A0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_51AFE8; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 51AFE8: using guessed type int (*off_51AFE8)(); - -//----- (004CE7C0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51AFE8; - std::moneypunct::~moneypunct(a1); -} -// 51AFE8: using guessed type int (*off_51AFE8)(); - -//----- (004CE7D0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51AFE8; - std::moneypunct::~moneypunct(a1); -} -// 51AFE8: using guessed type int (*off_51AFE8)(); - -//----- (004CE7E0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A8B8; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51B01C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A8B8: using guessed type int (*off_51A8B8)(); -// 51B01C: using guessed type int (*off_51B01C)(); - -//----- (004CE930) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A8B8; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51B01C; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A8B8: using guessed type int (*off_51A8B8)(); -// 51B01C: using guessed type int (*off_51B01C)(); - -//----- (004CEA90) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A8B8; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51B01C; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A8B8: using guessed type int (*off_51A8B8)(); -// 51B01C: using guessed type int (*off_51B01C)(); - -//----- (004CEBE0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A8B8; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51B01C; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A8B8: using guessed type int (*off_51A8B8)(); -// 51B01C: using guessed type int (*off_51B01C)(); - -//----- (004CED40) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_51B01C; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 51B01C: using guessed type int (*off_51B01C)(); - -//----- (004CED60) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51B01C; - std::moneypunct::~moneypunct(a1); -} -// 51B01C: using guessed type int (*off_51B01C)(); - -//----- (004CED70) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51B01C; - std::moneypunct::~moneypunct(a1); -} -// 51B01C: using guessed type int (*off_51B01C)(); - -//----- (004CED80) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A8EC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51B050; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A8EC: using guessed type int (*off_51A8EC)(); -// 51B050: using guessed type int (*off_51B050)(); - -//----- (004CEED0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A8EC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51B050; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A8EC: using guessed type int (*off_51A8EC)(); -// 51B050: using guessed type int (*off_51B050)(); - -//----- (004CF030) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A8EC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51B050; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A8EC: using guessed type int (*off_51A8EC)(); -// 51B050: using guessed type int (*off_51B050)(); - -//----- (004CF180) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A8EC; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51B050; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A8EC: using guessed type int (*off_51A8EC)(); -// 51B050: using guessed type int (*off_51B050)(); - -//----- (004CF2E0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_51B050; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 51B050: using guessed type int (*off_51B050)(); - -//----- (004CF300) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51B050; - std::moneypunct::~moneypunct(a1); -} -// 51B050: using guessed type int (*off_51B050)(); - -//----- (004CF310) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51B050; - std::moneypunct::~moneypunct(a1); -} -// 51B050: using guessed type int (*off_51B050)(); - -//----- (004CF320) -------------------------------------------------------- -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) -{ - int (__fastcall *v2)(int); // eax - char v3; // al - int (__fastcall *v4)(int); // eax - char v5; // al - int v6; // eax - int (__fastcall *v7)(int); // edx - int v8; // edx - _DWORD *(__thiscall *v9)(int *, int); // eax - unsigned int v10; // eax - bool v11; // al - _DWORD *(__thiscall *v12)(int *, int); // eax - unsigned int v13; // eax - _DWORD *(__thiscall *v14)(int *, int); // eax - unsigned int v15; // eax - _DWORD *(__thiscall *v16)(int *, int); // eax - unsigned int v17; // eax - int (__fastcall *v18)(int); // eax - int v19; // eax - int (__fastcall *v20)(int); // eax - int v21; // eax - _BYTE *v22; // eax - int v23; // ecx - char v24; // al - char *v25; // edx - void (__thiscall *v26)(int, char *, char *, int); // eax - int v27; // eax - int v28; // ecx - int v29; // eax - int v30; // ecx - int v31; // eax - int v32; // ecx - int v33; // eax - int v34; // ecx - int v35; // eax - unsigned int v36; // [esp+Ch] [ebp-8Ch] - unsigned int v37; // [esp+Ch] [ebp-8Ch] - unsigned int v38; // [esp+Ch] [ebp-8Ch] - unsigned int v39; // [esp+Ch] [ebp-8Ch] - char *v40; // [esp+18h] [ebp-80h] - std::string *v41; // [esp+20h] [ebp-78h] - std::string *v42; // [esp+24h] [ebp-74h] - std::string *v43; // [esp+28h] [ebp-70h] - std::string *Block; // [esp+2Ch] [ebp-6Ch] - _DWORD *v45; // [esp+34h] [ebp-64h] - int v46; // [esp+34h] [ebp-64h] - int v48; // [esp+7Dh] [ebp-1Bh] BYREF - int v49; // [esp+80h] [ebp-18h] BYREF - int v50; // [esp+84h] [ebp-14h] BYREF - int v51; // [esp+88h] [ebp-10h] BYREF - int v52[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v45 = std::use_facet>(a2); - v2 = *(int (__fastcall **)(int))(*v45 + 8); - if ( v2 == std::moneypunct::do_decimal_point ) - v3 = *(_BYTE *)(v45[2] + 17); - else - v3 = ((int (__fastcall *)(_DWORD *, _DWORD *))v2)(v45, v45); - *(_BYTE *)(this + 17) = v3; - v4 = *(int (__fastcall **)(int))(*v45 + 12); - if ( v4 == std::moneypunct::do_thousands_sep ) - v5 = *(_BYTE *)(v45[2] + 18); - else - v5 = v4((int)v45); - *(_BYTE *)(this + 18) = v5; - v6 = *v45; - v7 = *(int (__fastcall **)(int))(*v45 + 32); - if ( v7 == std::moneypunct::do_frac_digits ) - { - v8 = *(_DWORD *)(v45[2] + 44); - } - else - { - v8 = v7((int)v45); - v6 = *v45; - } - v9 = *(_DWORD *(__thiscall **)(int *, int))(v6 + 16); - *(_DWORD *)(this + 44) = v8; - if ( v9 == std::moneypunct::do_grouping ) - std::string::string(&v49, *(char **)(v45[2] + 8), (int)v52); - else - v9(&v49, (int)v45); - v10 = *(_DWORD *)(v49 - 12); - *(_DWORD *)(this + 12) = v10; - Block = (std::string *)operator new[](v10); - std::string::copy(&v49, Block, *(_DWORD *)(this + 12), 0, v36); - v11 = 0; - if ( *(_DWORD *)(this + 12) ) - v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v11; - v12 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 20); - if ( v12 == std::moneypunct::do_curr_symbol ) - std::string::string(&v50, *(char **)(v45[2] + 20), (int)&v48); - else - v12(&v50, (int)v45); - v13 = *(_DWORD *)(v50 - 12); - *(_DWORD *)(this + 24) = v13; - v41 = (std::string *)operator new[](v13); - std::string::copy(&v50, v41, *(_DWORD *)(this + 24), 0, v37); - v14 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 24); - if ( v14 == std::moneypunct::do_positive_sign ) - std::string::string(&v51, *(char **)(v45[2] + 28), (int)&v48 + 1); - else - v14(&v51, (int)v45); - v15 = *(_DWORD *)(v51 - 12); - *(_DWORD *)(this + 32) = v15; - v42 = (std::string *)operator new[](v15); - std::string::copy(&v51, v42, *(_DWORD *)(this + 32), 0, v38); - v16 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 28); - if ( v16 == std::moneypunct::do_negative_sign ) - std::string::string(v52, *(char **)(v45[2] + 36), (int)&v48 + 2); - else - v16(v52, (int)v45); - v17 = *(_DWORD *)(v52[0] - 12); - *(_DWORD *)(this + 40) = v17; - v43 = (std::string *)operator new[](v17); - std::string::copy(v52, v43, *(_DWORD *)(this + 40), 0, v39); - v18 = *(int (__fastcall **)(int))(*v45 + 36); - if ( v18 == std::moneypunct::do_pos_format ) - v19 = *(_DWORD *)(v45[2] + 48); - else - v19 = v18((int)v45); - *(_DWORD *)(this + 48) = v19; - v20 = *(int (__fastcall **)(int))(*v45 + 40); - if ( v20 == std::moneypunct::do_neg_format ) - v21 = *(_DWORD *)(v45[2] + 52); - else - v21 = v20((int)v45); - *(_DWORD *)(this + 52) = v21; - v22 = std::use_facet>(a2); - v23 = this; - v46 = (int)v22; - v24 = v22[28]; - v25 = std::money_base::_S_atoms; - v40 = std::money_base::_S_atoms; - if ( v24 == 1 ) - { - v27 = *(_DWORD *)std::money_base::_S_atoms; - goto LABEL_25; - } - if ( v24 ) - { - v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); - if ( (char *)v26 == (char *)std::ctype::do_widen ) - { -LABEL_24: - v25 = v40; - v23 = this; - v27 = *(_DWORD *)v40; -LABEL_25: - *(_DWORD *)(v23 + 56) = v27; - *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); - *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); - *(_BYTE *)(this + 66) = v25[10]; - goto LABEL_26; - } - } - else - { - std::ctype::_M_widen_init(v46); - v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); - if ( (char *)v26 == (char *)std::ctype::do_widen ) - goto LABEL_24; - } - v26(v46, v40, v40 + 11, this + 56); -LABEL_26: - v28 = v52[0]; - *(_DWORD *)(this + 8) = Block; - *(_BYTE *)(this + 67) = 1; - *(_DWORD *)(this + 20) = v41; - *(_DWORD *)(this + 28) = v42; - *(_DWORD *)(this + 36) = v43; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v28 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_28: - v30 = v51; - if ( !_CRT_MT ) - goto LABEL_29; - goto LABEL_37; - } - } - else - { - v29 = *(_DWORD *)(v28 - 4); - *(_DWORD *)(v28 - 4) = v29 - 1; - if ( v29 > 0 ) - goto LABEL_28; - } - std::string::_Rep::_M_destroy((void *)(v28 - 12), (int)&v48 + 2); - v30 = v51; - if ( !_CRT_MT ) - { -LABEL_29: - v31 = *(_DWORD *)(v30 - 4); - *(_DWORD *)(v30 - 4) = v31 - 1; - if ( v31 > 0 ) - goto LABEL_30; - goto LABEL_38; - } -LABEL_37: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v30 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_30: - v32 = v50; - if ( !_CRT_MT ) - goto LABEL_31; - goto LABEL_39; - } -LABEL_38: - std::string::_Rep::_M_destroy((void *)(v30 - 12), (int)v52); - v32 = v50; - if ( !_CRT_MT ) - { -LABEL_31: - v33 = *(_DWORD *)(v32 - 4); - *(_DWORD *)(v32 - 4) = v33 - 1; - if ( v33 > 0 ) - goto LABEL_32; - goto LABEL_40; - } -LABEL_39: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v32 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_32: - v34 = v49; - if ( !_CRT_MT ) - goto LABEL_33; - goto LABEL_41; - } -LABEL_40: - std::string::_Rep::_M_destroy((void *)(v32 - 12), (int)v52); - v34 = v49; - if ( !_CRT_MT ) - { -LABEL_33: - v35 = *(_DWORD *)(v34 - 4); - *(_DWORD *)(v34 - 4) = v35 - 1; - if ( v35 > 0 ) - return; -LABEL_42: - std::string::_Rep::_M_destroy((void *)(v34 - 12), (int)v52); - return; - } -LABEL_41: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v34 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_42; -} -// 4CF43B: variable 'v36' is possibly undefined -// 4CF4DD: variable 'v37' is possibly undefined -// 4CF55F: variable 'v38' is possibly undefined -// 4CF5E1: variable 'v39' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C488: using guessed type char *std::money_base::_S_atoms; - -//----- (004CFB00) -------------------------------------------------------- -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_51B084; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 18) = 0; - this[1] = a2 != 0; - result = 0; - *((_WORD *)this + 8) = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - *((_BYTE *)this + 67) = 0; - return result; -} -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004CFB80) -------------------------------------------------------- -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_51B084; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 18) = 0; - this[1] = a2 != 0; - result = 0; - *((_WORD *)this + 8) = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - *((_BYTE *)this + 67) = 0; - return result; -} -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004CFC00) -------------------------------------------------------- -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4CFC40: variable 'lpfctx' is possibly undefined - -//----- (004CFC90) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 67) == 0; - *(_DWORD *)v1 = &off_51B084; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[5] ) - operator delete[](v2[5]); - if ( v2[7] ) - operator delete[](v2[7]); - if ( v2[9] ) - operator delete[](v2[9]); - } - std::locale::facet::~facet(a1); -} -// 4CFC91: variable 'v1' is possibly undefined -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004CFCF0) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 67) == 0; - *(_DWORD *)v1 = &off_51B084; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[5] ) - operator delete[](v2[5]); - if ( v2[7] ) - operator delete[](v2[7]); - if ( v2[9] ) - operator delete[](v2[9]); - } - std::locale::facet::~facet(a1); -} -// 4CFCF1: variable 'v1' is possibly undefined -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004CFD50) -------------------------------------------------------- -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) -{ - int (__fastcall *v2)(int); // eax - char v3; // al - int (__fastcall *v4)(int); // eax - char v5; // al - int v6; // eax - int (__fastcall *v7)(int); // edx - int v8; // edx - _DWORD *(__thiscall *v9)(int *, int); // eax - unsigned int v10; // eax - bool v11; // al - _DWORD *(__thiscall *v12)(int *, int); // eax - unsigned int v13; // eax - _DWORD *(__thiscall *v14)(int *, int); // eax - unsigned int v15; // eax - _DWORD *(__thiscall *v16)(int *, int); // eax - unsigned int v17; // eax - int (__fastcall *v18)(int); // eax - int v19; // eax - int (__fastcall *v20)(int); // eax - int v21; // eax - _BYTE *v22; // eax - int v23; // ecx - char v24; // al - char *v25; // edx - void (__thiscall *v26)(int, char *, char *, int); // eax - int v27; // eax - int v28; // ecx - int v29; // eax - int v30; // ecx - int v31; // eax - int v32; // ecx - int v33; // eax - int v34; // ecx - int v35; // eax - unsigned int v36; // [esp+Ch] [ebp-8Ch] - unsigned int v37; // [esp+Ch] [ebp-8Ch] - unsigned int v38; // [esp+Ch] [ebp-8Ch] - unsigned int v39; // [esp+Ch] [ebp-8Ch] - char *v40; // [esp+18h] [ebp-80h] - std::string *v41; // [esp+20h] [ebp-78h] - std::string *v42; // [esp+24h] [ebp-74h] - std::string *v43; // [esp+28h] [ebp-70h] - std::string *Block; // [esp+2Ch] [ebp-6Ch] - _DWORD *v45; // [esp+34h] [ebp-64h] - int v46; // [esp+34h] [ebp-64h] - int v48; // [esp+7Dh] [ebp-1Bh] BYREF - int v49; // [esp+80h] [ebp-18h] BYREF - int v50; // [esp+84h] [ebp-14h] BYREF - int v51; // [esp+88h] [ebp-10h] BYREF - int v52[3]; // [esp+8Ch] [ebp-Ch] BYREF - - v45 = std::use_facet>(a2); - v2 = *(int (__fastcall **)(int))(*v45 + 8); - if ( v2 == std::moneypunct::do_decimal_point ) - v3 = *(_BYTE *)(v45[2] + 17); - else - v3 = ((int (__fastcall *)(_DWORD *, _DWORD *))v2)(v45, v45); - *(_BYTE *)(this + 17) = v3; - v4 = *(int (__fastcall **)(int))(*v45 + 12); - if ( v4 == std::moneypunct::do_thousands_sep ) - v5 = *(_BYTE *)(v45[2] + 18); - else - v5 = v4((int)v45); - *(_BYTE *)(this + 18) = v5; - v6 = *v45; - v7 = *(int (__fastcall **)(int))(*v45 + 32); - if ( v7 == std::moneypunct::do_frac_digits ) - { - v8 = *(_DWORD *)(v45[2] + 44); - } - else - { - v8 = v7((int)v45); - v6 = *v45; - } - v9 = *(_DWORD *(__thiscall **)(int *, int))(v6 + 16); - *(_DWORD *)(this + 44) = v8; - if ( v9 == std::moneypunct::do_grouping ) - std::string::string(&v49, *(char **)(v45[2] + 8), (int)v52); - else - v9(&v49, (int)v45); - v10 = *(_DWORD *)(v49 - 12); - *(_DWORD *)(this + 12) = v10; - Block = (std::string *)operator new[](v10); - std::string::copy(&v49, Block, *(_DWORD *)(this + 12), 0, v36); - v11 = 0; - if ( *(_DWORD *)(this + 12) ) - v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v11; - v12 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 20); - if ( v12 == std::moneypunct::do_curr_symbol ) - std::string::string(&v50, *(char **)(v45[2] + 20), (int)&v48); - else - v12(&v50, (int)v45); - v13 = *(_DWORD *)(v50 - 12); - *(_DWORD *)(this + 24) = v13; - v41 = (std::string *)operator new[](v13); - std::string::copy(&v50, v41, *(_DWORD *)(this + 24), 0, v37); - v14 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 24); - if ( v14 == std::moneypunct::do_positive_sign ) - std::string::string(&v51, *(char **)(v45[2] + 28), (int)&v48 + 1); - else - v14(&v51, (int)v45); - v15 = *(_DWORD *)(v51 - 12); - *(_DWORD *)(this + 32) = v15; - v42 = (std::string *)operator new[](v15); - std::string::copy(&v51, v42, *(_DWORD *)(this + 32), 0, v38); - v16 = *(_DWORD *(__thiscall **)(int *, int))(*v45 + 28); - if ( v16 == std::moneypunct::do_negative_sign ) - std::string::string(v52, *(char **)(v45[2] + 36), (int)&v48 + 2); - else - v16(v52, (int)v45); - v17 = *(_DWORD *)(v52[0] - 12); - *(_DWORD *)(this + 40) = v17; - v43 = (std::string *)operator new[](v17); - std::string::copy(v52, v43, *(_DWORD *)(this + 40), 0, v39); - v18 = *(int (__fastcall **)(int))(*v45 + 36); - if ( v18 == std::moneypunct::do_pos_format ) - v19 = *(_DWORD *)(v45[2] + 48); - else - v19 = v18((int)v45); - *(_DWORD *)(this + 48) = v19; - v20 = *(int (__fastcall **)(int))(*v45 + 40); - if ( v20 == std::moneypunct::do_neg_format ) - v21 = *(_DWORD *)(v45[2] + 52); - else - v21 = v20((int)v45); - *(_DWORD *)(this + 52) = v21; - v22 = std::use_facet>(a2); - v23 = this; - v46 = (int)v22; - v24 = v22[28]; - v25 = std::money_base::_S_atoms; - v40 = std::money_base::_S_atoms; - if ( v24 == 1 ) - { - v27 = *(_DWORD *)std::money_base::_S_atoms; - goto LABEL_25; - } - if ( v24 ) - { - v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); - if ( (char *)v26 == (char *)std::ctype::do_widen ) - { -LABEL_24: - v25 = v40; - v23 = this; - v27 = *(_DWORD *)v40; -LABEL_25: - *(_DWORD *)(v23 + 56) = v27; - *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); - *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); - *(_BYTE *)(this + 66) = v25[10]; - goto LABEL_26; - } - } - else - { - std::ctype::_M_widen_init(v46); - v26 = *(void (__thiscall **)(int, char *, char *, int))(*(_DWORD *)v46 + 28); - if ( (char *)v26 == (char *)std::ctype::do_widen ) - goto LABEL_24; - } - v26(v46, v40, v40 + 11, this + 56); -LABEL_26: - v28 = v52[0]; - *(_DWORD *)(this + 8) = Block; - *(_BYTE *)(this + 67) = 1; - *(_DWORD *)(this + 20) = v41; - *(_DWORD *)(this + 28) = v42; - *(_DWORD *)(this + 36) = v43; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v28 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_28: - v30 = v51; - if ( !_CRT_MT ) - goto LABEL_29; - goto LABEL_37; - } - } - else - { - v29 = *(_DWORD *)(v28 - 4); - *(_DWORD *)(v28 - 4) = v29 - 1; - if ( v29 > 0 ) - goto LABEL_28; - } - std::string::_Rep::_M_destroy((void *)(v28 - 12), (int)&v48 + 2); - v30 = v51; - if ( !_CRT_MT ) - { -LABEL_29: - v31 = *(_DWORD *)(v30 - 4); - *(_DWORD *)(v30 - 4) = v31 - 1; - if ( v31 > 0 ) - goto LABEL_30; - goto LABEL_38; - } -LABEL_37: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v30 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_30: - v32 = v50; - if ( !_CRT_MT ) - goto LABEL_31; - goto LABEL_39; - } -LABEL_38: - std::string::_Rep::_M_destroy((void *)(v30 - 12), (int)v52); - v32 = v50; - if ( !_CRT_MT ) - { -LABEL_31: - v33 = *(_DWORD *)(v32 - 4); - *(_DWORD *)(v32 - 4) = v33 - 1; - if ( v33 > 0 ) - goto LABEL_32; - goto LABEL_40; - } -LABEL_39: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v32 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_32: - v34 = v49; - if ( !_CRT_MT ) - goto LABEL_33; - goto LABEL_41; - } -LABEL_40: - std::string::_Rep::_M_destroy((void *)(v32 - 12), (int)v52); - v34 = v49; - if ( !_CRT_MT ) - { -LABEL_33: - v35 = *(_DWORD *)(v34 - 4); - *(_DWORD *)(v34 - 4) = v35 - 1; - if ( v35 > 0 ) - return; -LABEL_42: - std::string::_Rep::_M_destroy((void *)(v34 - 12), (int)v52); - return; - } -LABEL_41: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v34 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_42; -} -// 4CFE6B: variable 'v36' is possibly undefined -// 4CFF0D: variable 'v37' is possibly undefined -// 4CFF8F: variable 'v38' is possibly undefined -// 4D0011: variable 'v39' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C488: using guessed type char *std::money_base::_S_atoms; - -//----- (004D0530) -------------------------------------------------------- -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_51B094; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 18) = 0; - this[1] = a2 != 0; - result = 0; - *((_WORD *)this + 8) = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - *((_BYTE *)this + 67) = 0; - return result; -} -// 51B094: using guessed type int (*off_51B094)(); - -//----- (004D05B0) -------------------------------------------------------- -int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - int result; // eax - - *this = &off_51B094; - this[2] = 0; - this[3] = 0; - *((_BYTE *)this + 18) = 0; - this[1] = a2 != 0; - result = 0; - *((_WORD *)this + 8) = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - *((_BYTE *)this + 67) = 0; - return result; -} -// 51B094: using guessed type int (*off_51B094)(); - -//----- (004D0630) -------------------------------------------------------- -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4D0670: variable 'lpfctx' is possibly undefined - -//----- (004D06C0) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 67) == 0; - *(_DWORD *)v1 = &off_51B094; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[5] ) - operator delete[](v2[5]); - if ( v2[7] ) - operator delete[](v2[7]); - if ( v2[9] ) - operator delete[](v2[9]); - } - std::locale::facet::~facet(a1); -} -// 4D06C1: variable 'v1' is possibly undefined -// 51B094: using guessed type int (*off_51B094)(); - -//----- (004D0720) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 67) == 0; - *(_DWORD *)v1 = &off_51B094; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[5] ) - operator delete[](v2[5]); - if ( v2[7] ) - operator delete[](v2[7]); - if ( v2[9] ) - operator delete[](v2[9]); - } - std::locale::facet::~facet(a1); -} -// 4D0721: variable 'v1' is possibly undefined -// 51B094: using guessed type int (*off_51B094)(); - -//----- (004D0780) -------------------------------------------------------- -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) -{ - _DWORD *v2; // eax - int (__fastcall *v3)(int); // edx - __int16 v4; // dx - int (__fastcall *v5)(int); // edx - __int16 v6; // dx - int (__fastcall *v7)(int); // edx - int v8; // edx - _DWORD *(__thiscall *v9)(int *, int); // eax - unsigned int v10; // eax - bool v11; // al - _DWORD *(__thiscall *v12)(int *, int); // eax - unsigned int v13; // eax - _DWORD *(__thiscall *v14)(int *, int); // eax - unsigned int v15; // eax - _DWORD *(__thiscall *v16)(int *, int); // eax - unsigned int v17; // eax - int (__fastcall *v18)(int); // eax - int v19; // eax - int (__fastcall *v20)(int); // eax - int v21; // eax - void *v22; // eax - int v23; // ecx - int v24; // eax - int v25; // ecx - int v26; // eax - int v27; // ecx - int v28; // eax - int v29; // ecx - int v30; // eax - unsigned int v31; // [esp+Ch] [ebp-7Ch] - _WORD *v32; // [esp+10h] [ebp-78h] - _WORD *v33; // [esp+14h] [ebp-74h] - _WORD *v34; // [esp+18h] [ebp-70h] - std::string *Block; // [esp+1Ch] [ebp-6Ch] - _DWORD *v36; // [esp+24h] [ebp-64h] - int v38; // [esp+6Dh] [ebp-1Bh] BYREF - int v39; // [esp+70h] [ebp-18h] BYREF - int v40; // [esp+74h] [ebp-14h] BYREF - int v41; // [esp+78h] [ebp-10h] BYREF - int v42[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v36 = std::use_facet>(a2); - v2 = (_DWORD *)*v36; - v3 = *(int (__fastcall **)(int))(*v36 + 8); - if ( v3 == std::moneypunct::do_decimal_point ) - { - v4 = *(_WORD *)(v36[2] + 18); - } - else - { - v4 = v3((int)v36); - v2 = (_DWORD *)*v36; - } - *(_WORD *)(this + 18) = v4; - v5 = (int (__fastcall *)(int))v2[3]; - if ( v5 == std::moneypunct::do_thousands_sep ) - { - v6 = *(_WORD *)(v36[2] + 20); - } - else - { - v6 = v5((int)v36); - v2 = (_DWORD *)*v36; - } - *(_WORD *)(this + 20) = v6; - v7 = (int (__fastcall *)(int))v2[8]; - if ( v7 == std::moneypunct::do_frac_digits ) - { - v8 = *(_DWORD *)(v36[2] + 48); - } - else - { - v8 = v7((int)v36); - v2 = (_DWORD *)*v36; - } - v9 = (_DWORD *(__thiscall *)(int *, int))v2[4]; - *(_DWORD *)(this + 48) = v8; - if ( v9 == std::moneypunct::do_grouping ) - std::string::string(&v39, *(char **)(v36[2] + 8), (int)v42); - else - v9(&v39, (int)v36); - v10 = *(_DWORD *)(v39 - 12); - *(_DWORD *)(this + 12) = v10; - Block = (std::string *)operator new[](v10); - std::string::copy(&v39, Block, *(_DWORD *)(this + 12), 0, v31); - v11 = 0; - if ( *(_DWORD *)(this + 12) ) - v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v11; - v12 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 20); - if ( v12 == std::moneypunct::do_curr_symbol ) - std::wstring::basic_string(&v40, *(wchar_t **)(v36[2] + 24), (int)&v38); - else - v12(&v40, (int)v36); - v13 = *(_DWORD *)(v40 - 12); - *(_DWORD *)(this + 28) = v13; - if ( v13 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v32 = (_WORD *)operator new[](2 * v13); - std::wstring::copy(&v40, v32, *(_DWORD *)(this + 28), 0); - v14 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 24); - if ( v14 == std::moneypunct::do_positive_sign ) - std::wstring::basic_string(&v41, *(wchar_t **)(v36[2] + 32), (int)&v38 + 1); - else - v14(&v41, (int)v36); - v15 = *(_DWORD *)(v41 - 12); - *(_DWORD *)(this + 36) = v15; - if ( v15 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v33 = (_WORD *)operator new[](2 * v15); - std::wstring::copy(&v41, v33, *(_DWORD *)(this + 36), 0); - v16 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 28); - if ( v16 == std::moneypunct::do_negative_sign ) - std::wstring::basic_string(v42, *(wchar_t **)(v36[2] + 40), (int)&v38 + 2); - else - v16(v42, (int)v36); - v17 = *(_DWORD *)(v42[0] - 12); - *(_DWORD *)(this + 44) = v17; - if ( v17 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v34 = (_WORD *)operator new[](2 * v17); - std::wstring::copy(v42, v34, *(_DWORD *)(this + 44), 0); - v18 = *(int (__fastcall **)(int))(*v36 + 36); - if ( v18 == std::moneypunct::do_pos_format ) - v19 = *(_DWORD *)(v36[2] + 52); - else - v19 = v18((int)v36); - *(_DWORD *)(this + 52) = v19; - v20 = *(int (__fastcall **)(int))(*v36 + 40); - if ( v20 == std::moneypunct::do_neg_format ) - v21 = *(_DWORD *)(v36[2] + 56); - else - v21 = v20((int)v36); - *(_DWORD *)(this + 56) = v21; - v22 = std::use_facet>(a2); - (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( - v22, - std::money_base::_S_atoms, - std::money_base::_S_atoms + 11, - this + 60); - v23 = v42[0]; - *(_DWORD *)(this + 8) = Block; - *(_DWORD *)(this + 24) = v32; - *(_DWORD *)(this + 32) = v33; - *(_DWORD *)(this + 40) = v34; - *(_BYTE *)(this + 82) = 1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_26: - v25 = v41; - if ( !_CRT_MT ) - goto LABEL_27; - goto LABEL_35; - } - } - else - { - v24 = *(_DWORD *)(v23 - 4); - *(_DWORD *)(v23 - 4) = v24 - 1; - if ( v24 > 0 ) - goto LABEL_26; - } - std::wstring::_Rep::_M_destroy((void *)(v23 - 12), (int)&v38 + 2); - v25 = v41; - if ( !_CRT_MT ) - { -LABEL_27: - v26 = *(_DWORD *)(v25 - 4); - *(_DWORD *)(v25 - 4) = v26 - 1; - if ( v26 > 0 ) - goto LABEL_28; - goto LABEL_36; - } -LABEL_35: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v25 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_28: - v27 = v40; - if ( !_CRT_MT ) - goto LABEL_29; - goto LABEL_37; - } -LABEL_36: - std::wstring::_Rep::_M_destroy((void *)(v25 - 12), (int)v42); - v27 = v40; - if ( !_CRT_MT ) - { -LABEL_29: - v28 = *(_DWORD *)(v27 - 4); - *(_DWORD *)(v27 - 4) = v28 - 1; - if ( v28 > 0 ) - goto LABEL_30; - goto LABEL_38; - } -LABEL_37: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v27 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_30: - v29 = v39; - if ( !_CRT_MT ) - goto LABEL_31; - goto LABEL_39; - } -LABEL_38: - std::wstring::_Rep::_M_destroy((void *)(v27 - 12), (int)v42); - v29 = v39; - if ( !_CRT_MT ) - { -LABEL_31: - v30 = *(_DWORD *)(v29 - 4); - *(_DWORD *)(v29 - 4) = v30 - 1; - if ( v30 > 0 ) - return; -LABEL_40: - std::string::_Rep::_M_destroy((void *)(v29 - 12), (int)v42); - return; - } -LABEL_39: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_40; -} -// 4D089C: variable 'v31' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C488: using guessed type char *std::money_base::_S_atoms; - -//----- (004D0F10) -------------------------------------------------------- -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B0A4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - *(_DWORD *)((char *)this + 18) = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - *((_BYTE *)this + 82) = 0; - return result; -} -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (004D0F90) -------------------------------------------------------- -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B0A4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - *(_DWORD *)((char *)this + 18) = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - *((_BYTE *)this + 82) = 0; - return result; -} -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (004D1010) -------------------------------------------------------- -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4D1050: variable 'lpfctx' is possibly undefined - -//----- (004D10A0) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 82) == 0; - *(_DWORD *)v1 = &off_51B0A4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[6] ) - operator delete[](v2[6]); - if ( v2[8] ) - operator delete[](v2[8]); - if ( v2[10] ) - operator delete[](v2[10]); - } - std::locale::facet::~facet(a1); -} -// 4D10A1: variable 'v1' is possibly undefined -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (004D1100) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 82) == 0; - *(_DWORD *)v1 = &off_51B0A4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[6] ) - operator delete[](v2[6]); - if ( v2[8] ) - operator delete[](v2[8]); - if ( v2[10] ) - operator delete[](v2[10]); - } - std::locale::facet::~facet(a1); -} -// 4D1101: variable 'v1' is possibly undefined -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (004D1160) -------------------------------------------------------- -void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) -{ - _DWORD *v2; // eax - int (__fastcall *v3)(int); // edx - __int16 v4; // dx - int (__fastcall *v5)(int); // edx - __int16 v6; // dx - int (__fastcall *v7)(int); // edx - int v8; // edx - _DWORD *(__thiscall *v9)(int *, int); // eax - unsigned int v10; // eax - bool v11; // al - _DWORD *(__thiscall *v12)(int *, int); // eax - unsigned int v13; // eax - _DWORD *(__thiscall *v14)(int *, int); // eax - unsigned int v15; // eax - _DWORD *(__thiscall *v16)(int *, int); // eax - unsigned int v17; // eax - int (__fastcall *v18)(int); // eax - int v19; // eax - int (__fastcall *v20)(int); // eax - int v21; // eax - void *v22; // eax - int v23; // ecx - int v24; // eax - int v25; // ecx - int v26; // eax - int v27; // ecx - int v28; // eax - int v29; // ecx - int v30; // eax - unsigned int v31; // [esp+Ch] [ebp-7Ch] - _WORD *v32; // [esp+10h] [ebp-78h] - _WORD *v33; // [esp+14h] [ebp-74h] - _WORD *v34; // [esp+18h] [ebp-70h] - std::string *Block; // [esp+1Ch] [ebp-6Ch] - _DWORD *v36; // [esp+24h] [ebp-64h] - int v38; // [esp+6Dh] [ebp-1Bh] BYREF - int v39; // [esp+70h] [ebp-18h] BYREF - int v40; // [esp+74h] [ebp-14h] BYREF - int v41; // [esp+78h] [ebp-10h] BYREF - int v42[2]; // [esp+7Ch] [ebp-Ch] BYREF - - v36 = std::use_facet>(a2); - v2 = (_DWORD *)*v36; - v3 = *(int (__fastcall **)(int))(*v36 + 8); - if ( v3 == std::moneypunct::do_decimal_point ) - { - v4 = *(_WORD *)(v36[2] + 18); - } - else - { - v4 = v3((int)v36); - v2 = (_DWORD *)*v36; - } - *(_WORD *)(this + 18) = v4; - v5 = (int (__fastcall *)(int))v2[3]; - if ( v5 == std::moneypunct::do_thousands_sep ) - { - v6 = *(_WORD *)(v36[2] + 20); - } - else - { - v6 = v5((int)v36); - v2 = (_DWORD *)*v36; - } - *(_WORD *)(this + 20) = v6; - v7 = (int (__fastcall *)(int))v2[8]; - if ( v7 == std::moneypunct::do_frac_digits ) - { - v8 = *(_DWORD *)(v36[2] + 48); - } - else - { - v8 = v7((int)v36); - v2 = (_DWORD *)*v36; - } - v9 = (_DWORD *(__thiscall *)(int *, int))v2[4]; - *(_DWORD *)(this + 48) = v8; - if ( v9 == std::moneypunct::do_grouping ) - std::string::string(&v39, *(char **)(v36[2] + 8), (int)v42); - else - v9(&v39, (int)v36); - v10 = *(_DWORD *)(v39 - 12); - *(_DWORD *)(this + 12) = v10; - Block = (std::string *)operator new[](v10); - std::string::copy(&v39, Block, *(_DWORD *)(this + 12), 0, v31); - v11 = 0; - if ( *(_DWORD *)(this + 12) ) - v11 = (unsigned __int8)(*(_BYTE *)Block - 1) <= 0x7Du; - *(_BYTE *)(this + 16) = v11; - v12 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 20); - if ( v12 == std::moneypunct::do_curr_symbol ) - std::wstring::basic_string(&v40, *(wchar_t **)(v36[2] + 24), (int)&v38); - else - v12(&v40, (int)v36); - v13 = *(_DWORD *)(v40 - 12); - *(_DWORD *)(this + 28) = v13; - if ( v13 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v32 = (_WORD *)operator new[](2 * v13); - std::wstring::copy(&v40, v32, *(_DWORD *)(this + 28), 0); - v14 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 24); - if ( v14 == std::moneypunct::do_positive_sign ) - std::wstring::basic_string(&v41, *(wchar_t **)(v36[2] + 32), (int)&v38 + 1); - else - v14(&v41, (int)v36); - v15 = *(_DWORD *)(v41 - 12); - *(_DWORD *)(this + 36) = v15; - if ( v15 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v33 = (_WORD *)operator new[](2 * v15); - std::wstring::copy(&v41, v33, *(_DWORD *)(this + 36), 0); - v16 = *(_DWORD *(__thiscall **)(int *, int))(*v36 + 28); - if ( v16 == std::moneypunct::do_negative_sign ) - std::wstring::basic_string(v42, *(wchar_t **)(v36[2] + 40), (int)&v38 + 2); - else - v16(v42, (int)v36); - v17 = *(_DWORD *)(v42[0] - 12); - *(_DWORD *)(this + 44) = v17; - if ( v17 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v34 = (_WORD *)operator new[](2 * v17); - std::wstring::copy(v42, v34, *(_DWORD *)(this + 44), 0); - v18 = *(int (__fastcall **)(int))(*v36 + 36); - if ( v18 == std::moneypunct::do_pos_format ) - v19 = *(_DWORD *)(v36[2] + 52); - else - v19 = v18((int)v36); - *(_DWORD *)(this + 52) = v19; - v20 = *(int (__fastcall **)(int))(*v36 + 40); - if ( v20 == std::moneypunct::do_neg_format ) - v21 = *(_DWORD *)(v36[2] + 56); - else - v21 = v20((int)v36); - *(_DWORD *)(this + 56) = v21; - v22 = std::use_facet>(a2); - (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( - v22, - std::money_base::_S_atoms, - std::money_base::_S_atoms + 11, - this + 60); - v23 = v42[0]; - *(_DWORD *)(this + 8) = Block; - *(_DWORD *)(this + 24) = v32; - *(_DWORD *)(this + 32) = v33; - *(_DWORD *)(this + 40) = v34; - *(_BYTE *)(this + 82) = 1; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v23 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_26: - v25 = v41; - if ( !_CRT_MT ) - goto LABEL_27; - goto LABEL_35; - } - } - else - { - v24 = *(_DWORD *)(v23 - 4); - *(_DWORD *)(v23 - 4) = v24 - 1; - if ( v24 > 0 ) - goto LABEL_26; - } - std::wstring::_Rep::_M_destroy((void *)(v23 - 12), (int)&v38 + 2); - v25 = v41; - if ( !_CRT_MT ) - { -LABEL_27: - v26 = *(_DWORD *)(v25 - 4); - *(_DWORD *)(v25 - 4) = v26 - 1; - if ( v26 > 0 ) - goto LABEL_28; - goto LABEL_36; - } -LABEL_35: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v25 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_28: - v27 = v40; - if ( !_CRT_MT ) - goto LABEL_29; - goto LABEL_37; - } -LABEL_36: - std::wstring::_Rep::_M_destroy((void *)(v25 - 12), (int)v42); - v27 = v40; - if ( !_CRT_MT ) - { -LABEL_29: - v28 = *(_DWORD *)(v27 - 4); - *(_DWORD *)(v27 - 4) = v28 - 1; - if ( v28 > 0 ) - goto LABEL_30; - goto LABEL_38; - } -LABEL_37: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v27 - 4), 0xFFFFFFFF) > 0 ) - { -LABEL_30: - v29 = v39; - if ( !_CRT_MT ) - goto LABEL_31; - goto LABEL_39; - } -LABEL_38: - std::wstring::_Rep::_M_destroy((void *)(v27 - 12), (int)v42); - v29 = v39; - if ( !_CRT_MT ) - { -LABEL_31: - v30 = *(_DWORD *)(v29 - 4); - *(_DWORD *)(v29 - 4) = v30 - 1; - if ( v30 > 0 ) - return; -LABEL_40: - std::string::_Rep::_M_destroy((void *)(v29 - 12), (int)v42); - return; - } -LABEL_39: - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v29 - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_40; -} -// 4D127C: variable 'v31' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C488: using guessed type char *std::money_base::_S_atoms; - -//----- (004D18F0) -------------------------------------------------------- -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B0B4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - *(_DWORD *)((char *)this + 18) = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - *((_BYTE *)this + 82) = 0; - return result; -} -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (004D1970) -------------------------------------------------------- -BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B0B4; - this[2] = 0; - this[3] = 0; - result = a2 != 0; - *((_BYTE *)this + 16) = 0; - this[1] = result; - *(_DWORD *)((char *)this + 18) = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - this[10] = 0; - this[11] = 0; - this[12] = 0; - this[13] = 0; - this[14] = 0; - *((_BYTE *)this + 82) = 0; - return result; -} -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (004D19F0) -------------------------------------------------------- -void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - std::__moneypunct_cache::~__moneypunct_cache((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4D1A30: variable 'lpfctx' is possibly undefined - -//----- (004D1A80) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 82) == 0; - *(_DWORD *)v1 = &off_51B0B4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[6] ) - operator delete[](v2[6]); - if ( v2[8] ) - operator delete[](v2[8]); - if ( v2[10] ) - operator delete[](v2[10]); - } - std::locale::facet::~facet(a1); -} -// 4D1A81: variable 'v1' is possibly undefined -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (004D1AE0) -------------------------------------------------------- -void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) -{ - int v1; // ecx - void **v2; // ebx - bool v3; // zf - - v2 = (void **)v1; - v3 = *(_BYTE *)(v1 + 82) == 0; - *(_DWORD *)v1 = &off_51B0B4; - if ( !v3 ) - { - if ( *(_DWORD *)(v1 + 8) ) - operator delete[](*(void **)(v1 + 8)); - if ( v2[6] ) - operator delete[](v2[6]); - if ( v2[8] ) - operator delete[](v2[8]); - if ( v2[10] ) - operator delete[](v2[10]); - } - std::locale::facet::~facet(a1); -} -// 4D1AE1: variable 'v1' is possibly undefined -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (004D1B40) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B2B8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4D1B4C: variable 'Blocka' is possibly undefined - -//----- (004D1B60) -------------------------------------------------------- -void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B2B8; - std::locale::facet::~facet(a1); -} -// 4D1B60: variable 'v1' is possibly undefined - -//----- (004D1B70) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B310; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4D1B7C: variable 'Blocka' is possibly undefined - -//----- (004D1B90) -------------------------------------------------------- -void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B310; - std::locale::facet::~facet(a1); -} -// 4D1B90: variable 'v1' is possibly undefined - -//----- (004D1BA0) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *Block) -{ - *Block = &off_51B11C; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 51B11C: using guessed type int (*off_51B11C)(); - -//----- (004D1BC0) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) -{ - *a1 = &off_51B11C; - std::codecvt::~codecvt(a1); -} -// 51B11C: using guessed type int (*off_51B11C)(); - -//----- (004D1BD0) -------------------------------------------------------- -void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1) -{ - __cxxabiv1::__si_class_type_info *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51B148; - __cxxabiv1::__si_class_type_info::~__si_class_type_info(Block); - operator delete(a1); -} -// 4D1BDC: variable 'Block' is possibly undefined -// 51B148: using guessed type void (__cdecl *off_51B148)(std::__iosfail_type_info *__hidden this); - -//----- (004D1BF0) -------------------------------------------------------- -void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B148; - __cxxabiv1::__si_class_type_info::~__si_class_type_info(this); -} -// 4D1BF0: variable 'v1' is possibly undefined -// 51B148: using guessed type void (__cdecl *off_51B148)(std::__iosfail_type_info *__hidden this); - -//----- (004D1C00) -------------------------------------------------------- -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B2B8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4D1C0C: variable 'Blocka' is possibly undefined - -//----- (004D1C20) -------------------------------------------------------- -void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B2B8; - std::locale::facet::~facet(a1); -} -// 4D1C20: variable 'v1' is possibly undefined - -//----- (004D1C30) -------------------------------------------------------- -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B310; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4D1C3C: variable 'Blocka' is possibly undefined - -//----- (004D1C50) -------------------------------------------------------- -void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B310; - std::locale::facet::~facet(a1); -} -// 4D1C50: variable 'v1' is possibly undefined - -//----- (004D1C60) -------------------------------------------------------- -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *Block) -{ - *Block = &off_51B1CC; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 51B1CC: using guessed type int (*off_51B1CC)(); - -//----- (004D1C80) -------------------------------------------------------- -void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) -{ - *a1 = &off_51B1CC; - std::codecvt::~codecvt(a1); -} -// 51B1CC: using guessed type int (*off_51B1CC)(); - -//----- (004D1C90) -------------------------------------------------------- -void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51B1F8; - std::bad_alloc::~bad_alloc(Block); - operator delete(a1); -} -// 4D1C9C: variable 'Block' is possibly undefined -// 51B1F8: using guessed type void (__cdecl *off_51B1F8)(std::bad_array_new_length *__hidden this); - -//----- (004D1CC0) -------------------------------------------------------- -void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B1F8; - std::bad_alloc::~bad_alloc(a1); -} -// 4D1CC0: variable 'v1' is possibly undefined -// 51B1F8: using guessed type void (__cdecl *off_51B1F8)(std::bad_array_new_length *__hidden this); - -//----- (004D1CD0) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B2B8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4D1CDC: variable 'Blocka' is possibly undefined - -//----- (004D1CF0) -------------------------------------------------------- -void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B2B8; - std::locale::facet::~facet(a1); -} -// 4D1CF0: variable 'v1' is possibly undefined - -//----- (004D1D00) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B310; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4D1D0C: variable 'Blocka' is possibly undefined - -//----- (004D1D20) -------------------------------------------------------- -void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B310; - std::locale::facet::~facet(a1); -} -// 4D1D20: variable 'v1' is possibly undefined - -//----- (004D1D30) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *Block) -{ - *Block = &off_51B3EC; - std::codecvt::~codecvt(Block); - operator delete(Block); -} -// 51B3EC: using guessed type int (*off_51B3EC)(); - -//----- (004D1D50) -------------------------------------------------------- -void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) -{ - *a1 = &off_51B3EC; - std::codecvt::~codecvt(a1); -} -// 51B3EC: using guessed type int (*off_51B3EC)(); - -//----- (004D1D60) -------------------------------------------------------- -void __fastcall std::_V2::error_category::~error_category(void *Block) -{ - operator delete(Block); -} - -//----- (004D1D80) -------------------------------------------------------- -void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this) -{ - return `anonymous namespace'::system_category_instance; -} -// 50BFC4: using guessed type void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this); - -//----- (004D1D90) -------------------------------------------------------- -void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this) -{ - return &`anonymous namespace'::generic_category_instance; -} -// 50BFC8: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); - -//----- (004D1DA0) -------------------------------------------------------- -char *__thiscall std::map>::operator[]( - _DWORD *this, - int a2) -{ - bool v2; // zf - struct _Unwind_Exception *v3; // eax - struct _Unwind_Exception *v4; // edx - _DWORD *v5; // edx - struct _Unwind_Exception *v7; // [esp+1Ch] [ebp-4Ch] - struct _Unwind_Exception *Block; // [esp+24h] [ebp-44h] - _DWORD *Blocka; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] - - v7 = (struct _Unwind_Exception *)(this + 1); - Block = (struct _Unwind_Exception *)this[2]; - lpuexcpt = (struct _Unwind_Exception *)(this + 1); - while ( Block ) - { - v2 = (unsigned __int8)std::operator<((int)Block + 16, a2) == 0; - v3 = lpuexcpt; - v4 = (struct _Unwind_Exception *)*((_DWORD *)Block + 3); - if ( v2 ) - { - v4 = (struct _Unwind_Exception *)*((_DWORD *)Block + 2); - if ( v2 ) - v3 = Block; - } - Block = v4; - lpuexcpt = v3; - } - if ( v7 == lpuexcpt || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) - { - Blocka = operator new(0x30u); - std::string::basic_string((char *)Blocka + 16, a2); - Blocka[10] = 0; - Blocka[11] = 0; - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - this, - lpuexcpt, - (int)(Blocka + 4)); - if ( v5 ) - { - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( - this, - (int)lpuexcpt, - v5, - Blocka); - } - else - { - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)Blocka + 11); - std::string::_M_dispose((void **)Blocka + 4); - operator delete(Blocka); - } - } - return (char *)lpuexcpt + 40; -} -// 4D1E9F: variable 'v5' is possibly undefined - -//----- (004D1F50) -------------------------------------------------------- -char *__thiscall std::map::operator[](_DWORD *this, int a2) -{ - bool v2; // zf - struct _Unwind_Exception *v3; // eax - struct _Unwind_Exception *v4; // edx - _DWORD *v5; // edx - struct _Unwind_Exception *v7; // [esp+1Ch] [ebp-4Ch] - struct _Unwind_Exception *Block; // [esp+24h] [ebp-44h] - char *Blocka; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] - - v7 = (struct _Unwind_Exception *)(this + 1); - Block = (struct _Unwind_Exception *)this[2]; - lpuexcpt = (struct _Unwind_Exception *)(this + 1); - while ( Block ) - { - v2 = (unsigned __int8)std::operator<((int)Block + 16, a2) == 0; - v3 = lpuexcpt; - v4 = (struct _Unwind_Exception *)*((_DWORD *)Block + 3); - if ( v2 ) - { - v4 = (struct _Unwind_Exception *)*((_DWORD *)Block + 2); - if ( v2 ) - v3 = Block; - } - Block = v4; - lpuexcpt = v3; - } - if ( v7 == lpuexcpt || (unsigned __int8)std::operator<(a2, (int)lpuexcpt + 16) ) - { - Blocka = (char *)operator new(0x40u); - std::string::basic_string(Blocka + 16, a2); - *((_DWORD *)Blocka + 11) = 0; - Blocka[48] = 0; - *((_DWORD *)Blocka + 10) = Blocka + 48; - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - lpuexcpt, - (int)(Blocka + 16)); - if ( v5 ) - { - lpuexcpt = (struct _Unwind_Exception *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - this, - (int)lpuexcpt, - v5, - Blocka); - } - else - { - std::string::_M_dispose((void **)Blocka + 10); - std::string::_M_dispose((void **)Blocka + 4); - operator delete(Blocka); - } - } - return (char *)lpuexcpt + 40; -} -// 4D205E: variable 'v5' is possibly undefined - -//----- (004D210C) -------------------------------------------------------- -char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) -{ - _DWORD *v3; // ebx - _DWORD *v4; // edx - char v5; // al - _DWORD *v6; // ecx - _DWORD *insert_hint_unique_pos; // eax - _DWORD *v8; // edx - _DWORD *v9; // edi - char v10; // al - _DWORD *v12; // [esp+18h] [ebp-20h] - _DWORD *v13; // [esp+18h] [ebp-20h] - _DWORD *v14; // [esp+1Ch] [ebp-1Ch] - _DWORD *v15; // [esp+1Ch] [ebp-1Ch] - - v3 = this + 1; - v4 = (_DWORD *)this[2]; - v14 = this + 1; - while ( v4 ) - { - v12 = v4; - v5 = std::operator<((int)(v4 + 4), (int)a2); - v6 = (_DWORD *)v12[3]; - if ( !v5 ) - v6 = (_DWORD *)v12[2]; - if ( !v5 ) - v3 = v12; - v4 = v6; - } - if ( v14 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) - { - v13 = v3; - v3 = operator new(0x34u); - std::string::basic_string(v3 + 4, a2); - v3[10] = 0; - v3[11] = 0; - v3[12] = 0; - insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - this, - v13, - (int)(v3 + 4)); - v9 = v8; - if ( v8 ) - { - v10 = v14 == v8 || insert_hint_unique_pos != 0; - if ( !v10 ) - v10 = std::operator<((int)(v3 + 4), (int)(v8 + 4)); - std::_Rb_tree_insert_and_rebalance(v10, v3, v9, v14); - ++this[5]; - } - else - { - v15 = insert_hint_unique_pos; - std::vector::~vector((void ***)v3 + 10); - std::string::_M_dispose((void **)v3 + 4); - operator delete(v3); - v3 = v15; - } - } - return (char *)(v3 + 10); -} -// 4D21B5: variable 'v8' is possibly undefined - -//----- (004D222C) -------------------------------------------------------- -char *__thiscall std::map>::operator[](_DWORD *this, int a2) -{ - bool v2; // zf - struct _Unwind_Exception *v3; // eax - struct _Unwind_Exception *v4; // edx - _DWORD *v5; // edx - char v6; // al - _DWORD *insert_hint_unique_pos; // [esp+14h] [ebp-54h] - _DWORD *v9; // [esp+18h] [ebp-50h] - _DWORD *v10; // [esp+18h] [ebp-50h] - _DWORD *v12; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - void **lpuexcpta; // [esp+24h] [ebp-44h] - _DWORD *Block; // [esp+28h] [ebp-40h] - - v12 = this + 1; - lpuexcpt = (struct _Unwind_Exception *)this[2]; - Block = this + 1; - while ( lpuexcpt ) - { - v2 = (unsigned __int8)std::operator<((int)lpuexcpt + 16, a2) == 0; - v3 = (struct _Unwind_Exception *)Block; - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 3); - if ( v2 ) - { - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 2); - if ( v2 ) - v3 = lpuexcpt; - } - lpuexcpt = v4; - Block = v3; - } - if ( v12 == Block || (unsigned __int8)std::operator<(a2, (int)(Block + 4)) ) - { - v9 = Block; - Block = operator new(0x34u); - lpuexcpta = (void **)(Block + 4); - std::string::basic_string((char *)Block + 16, a2); - Block[10] = 0; - Block[11] = 0; - Block[12] = 0; - insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - this, - v9, - (int)(Block + 4)); - v10 = v5; - if ( v5 ) - { - v6 = insert_hint_unique_pos != 0 || v12 == v5; - if ( !v6 ) - v6 = std::operator<((int)lpuexcpta, (int)(v5 + 4)); - std::_Rb_tree_insert_and_rebalance(v6, Block, v10, v12); - ++this[5]; - } - else - { - std::vector::~vector((void ***)Block + 10); - std::string::_M_dispose(lpuexcpta); - operator delete(Block); - Block = insert_hint_unique_pos; - } - } - return (char *)(Block + 10); -} -// 4D2335: variable 'v5' is possibly undefined - -//----- (004D2424) -------------------------------------------------------- -void **__thiscall std::map::operator[](void **this, int a2) -{ - bool v2; // zf - void **v3; // eax - struct _Unwind_Exception *v4; // edx - void **v5; // edx - char v6; // al - void **insert_hint_unique_pos; // [esp+14h] [ebp-54h] - void **v9; // [esp+18h] [ebp-50h] - void **v10; // [esp+18h] [ebp-50h] - void **v12; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - void **lpuexcpta; // [esp+24h] [ebp-44h] - void **Block; // [esp+28h] [ebp-40h] - - v12 = this + 1; - lpuexcpt = (struct _Unwind_Exception *)this[2]; - Block = this + 1; - while ( lpuexcpt ) - { - v2 = (unsigned __int8)std::operator<((int)lpuexcpt + 16, a2) == 0; - v3 = Block; - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 3); - if ( v2 ) - { - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 2); - if ( v2 ) - v3 = (void **)lpuexcpt; - } - lpuexcpt = v4; - Block = v3; - } - if ( v12 == Block || (unsigned __int8)std::operator<(a2, (int)(Block + 4)) ) - { - v9 = Block; - Block = (void **)operator new(0x2Cu); - lpuexcpta = Block + 4; - std::string::basic_string((char *)Block + 16, a2); - Block[10] = 0; - insert_hint_unique_pos = (void **)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - v9, - (int)(Block + 4)); - v10 = v5; - if ( v5 ) - { - v6 = insert_hint_unique_pos != 0 || v12 == v5; - if ( !v6 ) - v6 = std::operator<((int)lpuexcpta, (int)(v5 + 4)); - std::_Rb_tree_insert_and_rebalance(v6, Block, v10, v12); - this[5] = (char *)this[5] + 1; - } - else - { - std::string::_M_dispose(lpuexcpta); - operator delete(Block); - Block = insert_hint_unique_pos; - } - } - return Block + 10; -} -// 4D251F: variable 'v5' is possibly undefined - -//----- (004D2604) -------------------------------------------------------- -void **__thiscall std::map::operator[](void **this, int a2) -{ - bool v2; // zf - void **v3; // eax - struct _Unwind_Exception *v4; // edx - void **v5; // edx - char v6; // al - void **insert_hint_unique_pos; // [esp+14h] [ebp-54h] - void **v9; // [esp+18h] [ebp-50h] - void **v10; // [esp+18h] [ebp-50h] - void **v12; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - void **lpuexcpta; // [esp+24h] [ebp-44h] - void **Block; // [esp+28h] [ebp-40h] - - v12 = this + 1; - lpuexcpt = (struct _Unwind_Exception *)this[2]; - Block = this + 1; - while ( lpuexcpt ) - { - v2 = (unsigned __int8)std::operator<((int)lpuexcpt + 16, a2) == 0; - v3 = Block; - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 3); - if ( v2 ) - { - v4 = (struct _Unwind_Exception *)*((_DWORD *)lpuexcpt + 2); - if ( v2 ) - v3 = (void **)lpuexcpt; - } - lpuexcpt = v4; - Block = v3; - } - if ( v12 == Block || (unsigned __int8)std::operator<(a2, (int)(Block + 4)) ) - { - v9 = Block; - Block = (void **)operator new(0x2Cu); - lpuexcpta = Block + 4; - std::string::basic_string((char *)Block + 16, a2); - Block[10] = 0; - insert_hint_unique_pos = (void **)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - this, - v9, - (int)(Block + 4)); - v10 = v5; - if ( v5 ) - { - v6 = insert_hint_unique_pos != 0 || v12 == v5; - if ( !v6 ) - v6 = std::operator<((int)lpuexcpta, (int)(v5 + 4)); - std::_Rb_tree_insert_and_rebalance(v6, Block, v10, v12); - this[5] = (char *)this[5] + 1; - } - else - { - std::string::_M_dispose(lpuexcpta); - operator delete(Block); - Block = insert_hint_unique_pos; - } - } - return Block + 10; -} -// 4D26FF: variable 'v5' is possibly undefined - -//----- (004D27E4) -------------------------------------------------------- -_DWORD *__thiscall std::map>>::operator[]( - _DWORD *this, - _DWORD *a2) -{ - _DWORD *v3; // edi - _DWORD *v4; // ebx - _DWORD *i; // eax - _DWORD *v6; // edx - int *v7; // eax - _DWORD *v8; // edx - bool v9; // al - _DWORD *v11; // [esp+1Ch] [ebp-1Ch] - _DWORD *insert_hint_unique_pos; // [esp+1Ch] [ebp-1Ch] - - v3 = this + 1; - v4 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v6 = (_DWORD *)i[3]; - if ( i[4] >= *a2 ) - v6 = (_DWORD *)i[2]; - if ( i[4] >= *a2 ) - v4 = i; - } - if ( v3 == v4 || *a2 < v4[4] ) - { - v11 = v4; - v4 = operator new(0x2Cu); - v4[4] = *a2; - std::_Rb_tree_header::_Rb_tree_header(v4 + 6); - insert_hint_unique_pos = std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( - this, - v11, - v7); - if ( v8 ) - { - v9 = insert_hint_unique_pos != 0 || v3 == v8; - if ( !v9 ) - v9 = v4[4] < v8[4]; - std::_Rb_tree_insert_and_rebalance(v9, v4, v8, v3); - ++this[5]; - } - else - { - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)(v4 + 5)); - operator delete(v4); - v4 = insert_hint_unique_pos; - } - } - return v4 + 5; -} -// 4D285F: variable 'v7' is possibly undefined -// 4D286B: variable 'v8' is possibly undefined - -//----- (004D28C4) -------------------------------------------------------- -void __thiscall std::pair>::pair(_DWORD *this, _DWORD *a2) -{ - std::string::basic_string(this, a2); - std::__shared_ptr::__shared_ptr(this + 6, a2 + 6); -} - -//----- (004D28F0) -------------------------------------------------------- -void __thiscall std::pair>::pair,true>( - _DWORD *this, - int a2) -{ - int v3; // [esp+1Fh] [ebp-9h] BYREF - - std::string::basic_string(this, *(char **)a2, (int)&v3); - std::__shared_ptr::__shared_ptr(this + 6, (_DWORD *)(a2 + 4)); -} - -//----- (004D2924) -------------------------------------------------------- -void __fastcall std::pair>::~pair(int a1) -{ - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 28)); - std::string::_M_dispose((void **)a1); -} - -//----- (004D2940) -------------------------------------------------------- -void __fastcall std::pair::~pair(void **a1) -{ - std::string::_M_dispose(a1 + 6); - std::string::_M_dispose(a1); -} - -//----- (004D2960) -------------------------------------------------------- -int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, char *a4, int a5, int a6) -{ - char *v6; // edi - size_t Size; // ebx - int result; // eax - size_t v9; // ebp - char *v10; // esi - _BYTE *v11; // eax - _BYTE *v12; // ecx - char v13; // al - char v14; // dl - int (__stdcall *v15)(unsigned __int8); // edx - int (__stdcall *v16)(unsigned __int8); // edx - char v17; // dl - int (__stdcall *v18)(unsigned __int8); // eax - char v19; // dl - int (__stdcall *v20)(unsigned __int8); // eax - int (__stdcall *v21)(unsigned __int8); // eax - char *v22; // [esp+14h] [ebp-28h] - _BYTE *v23; // [esp+1Ch] [ebp-20h] - _BYTE *v24; // [esp+1Ch] [ebp-20h] - _BYTE *v25; // [esp+1Ch] [ebp-20h] - _BYTE *v26; // [esp+1Ch] [ebp-20h] - _BYTE *v27; // [esp+1Ch] [ebp-20h] - - v6 = a3; - v22 = a4; - Size = a5 - a6; - result = a1[3] & 0xB0; - if ( result == 32 ) - { - if ( a6 ) - { - result = (int)memcpy(a3, a4, a6); - if ( !Size ) - return result; - } - else if ( !Size ) - { - return result; - } - return (int)memset(&a3[a6], (char)Src, Size); - } - v9 = a6; - if ( result != 16 ) - goto LABEL_3; - v11 = std::use_facet>((int)(a1 + 27)); - v12 = v11; - if ( v11[28] ) - { - result = (unsigned __int8)*a4; - if ( v12[74] == (_BYTE)result ) - goto LABEL_29; - goto LABEL_8; - } - v23 = v11; - std::ctype::_M_widen_init((int)v11); - v12 = v23; - v15 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); - result = 45; - if ( v15 != std::ctype::do_widen ) - { - result = v15(45u); - v12 = v23; - } - if ( *a4 == (_BYTE)result ) - goto LABEL_29; - if ( v12[28] ) - { - result = (unsigned __int8)*a4; -LABEL_8: - if ( v12[72] != (_BYTE)result ) - { -LABEL_9: - if ( v12[77] == (_BYTE)result && a6 > 1 ) - { -LABEL_11: - v13 = a4[1]; - if ( v13 == v12[149] ) - { -LABEL_43: - v6 = a3 + 2; - v9 = a6 - 2; - *a3 = *a4; - result = (unsigned __int8)a4[1]; - v22 = a4 + 2; - a3[1] = result; - goto LABEL_3; - } - goto LABEL_12; - } -LABEL_3: - v10 = &v6[Size]; - if ( !Size ) - { - if ( !v9 ) - return result; - return (int)memcpy(v10, v22, v9); - } - goto LABEL_15; - } -LABEL_29: - *a3 = result; - v9 = a6 - 1; - v6 = a3 + 1; - v22 = a4 + 1; - goto LABEL_3; - } - v24 = v12; - std::ctype::_M_widen_init((int)v12); - v12 = v24; - v16 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); - result = 43; - if ( v16 != std::ctype::do_widen ) - { - result = v16(43u); - v12 = v24; - } - if ( *a4 == (_BYTE)result ) - goto LABEL_29; - if ( v12[28] ) - { - result = (unsigned __int8)*a4; - goto LABEL_9; - } - v25 = v12; - std::ctype::_M_widen_init((int)v12); - v12 = v25; - v17 = 48; - v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v25 + 24); - if ( v18 != std::ctype::do_widen ) - { - v17 = v18(48u); - v12 = v25; - } - result = (int)a4; - if ( *a4 != v17 || a6 <= 1 ) - goto LABEL_3; - if ( v12[28] ) - goto LABEL_11; - v26 = v12; - std::ctype::_M_widen_init((int)v12); - v12 = v26; - v19 = 120; - v20 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v26 + 24); - if ( v20 != std::ctype::do_widen ) - { - v19 = v20(120u); - v12 = v26; - } - v13 = a4[1]; - if ( v13 == v19 ) - goto LABEL_43; - if ( v12[28] ) - { -LABEL_12: - v14 = v12[117]; - goto LABEL_13; - } - v27 = v12; - std::ctype::_M_widen_init((int)v12); - v21 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v27 + 24); - if ( v21 == std::ctype::do_widen ) - v14 = 88; - else - v14 = v21(88u); - v13 = a4[1]; -LABEL_13: - if ( v14 == v13 ) - goto LABEL_43; - v10 = &a3[Size]; - if ( !Size ) - return (int)memcpy(v10, v22, v9); -LABEL_15: - result = (int)memset(v6, (char)Src, Size); - if ( v9 ) - return (int)memcpy(v10, v22, v9); - return result; -} - -//----- (004D2CA0) -------------------------------------------------------- -_WORD *__cdecl std::__pad>::_S_pad( - _DWORD *a1, - void *Src, - _WORD *Size, - _WORD *a4, - int a5, - int a6) -{ - _WORD *v6; // esi - int v7; // ebx - _WORD *result; // eax - int v9; // edx - __int16 v10; // ax - __int16 v11; // ax - __int16 v12; // ax - _WORD *v13; // esi - _WORD *v14; // [esp+20h] [ebp-2Ch] - void *v15; // [esp+28h] [ebp-24h] - - v14 = a4; - v6 = Size; - v7 = a5 - a6; - result = (_WORD *)(a1[3] & 0xB0); - if ( result != (_WORD *)32 ) - { - v9 = a6; - if ( result == (_WORD *)16 ) - { - v15 = std::use_facet>((int)(a1 + 27)); - v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(45); - if ( *a4 == v10 || (v10 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 40))(v15, 43), *a4 == v10) ) - { - *Size = v10; - v9 = a6 - 1; - v6 = Size + 1; - v14 = a4 + 1; - } - else - { - v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(48); - v9 = a6; - if ( *a4 == v11 && a6 > 1 ) - { - if ( a4[1] != (*(unsigned __int16 (__stdcall **)(int))(*(_DWORD *)v15 + 40))(120) ) - { - v12 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 40))(v15, 88); - v9 = a6; - if ( a4[1] != v12 ) - { - result = &Size[v7]; - if ( !v7 ) - return memcpy(result, v14, 2 * v9); - do - { -LABEL_4: - *v6++ = (_WORD)Src; - --v7; - } - while ( v7 ); -LABEL_5: - if ( !v9 ) - return result; - return memcpy(result, v14, 2 * v9); - } - } - v6 = Size + 2; - v9 = a6 - 2; - *Size = *a4; - v14 = a4 + 2; - Size[1] = a4[1]; - } - } - } - result = &v6[v7]; - if ( !v7 ) - goto LABEL_5; - goto LABEL_4; - } - if ( a6 ) - { - result = memcpy(Size, a4, 2 * a6); - v13 = &Size[a6]; - if ( !v7 ) - return result; - } - else - { - v13 = &Size[a6]; - if ( !v7 ) - return result; - } - do - { - *v13++ = (_WORD)Src; - --v7; - } - while ( v7 ); - return result; -} - -//----- (004D2ED0) -------------------------------------------------------- -void **std::ctype::classic_table() -{ - return &std::ctype::classic_table(void)::_S_classic_table; -} -// 51B880: using guessed type void *std::ctype::classic_table(void)::_S_classic_table; - -//----- (004D2EE0) -------------------------------------------------------- -int __thiscall std::ctype::ctype(_DWORD *this, void **a2, char a3, int a4) -{ - void **v4; // eax - int result; // eax - - v4 = a2; - *this = &off_51B418; - this[4] = 0; - this[5] = 0; - this[1] = a4 != 0; - *((_BYTE *)this + 12) = a3 & (a2 != 0); - if ( !a2 ) - v4 = &std::ctype::classic_table(void)::_S_classic_table; - *(_DWORD *)((char *)this + 29) = 0; - *(_DWORD *)((char *)this + 281) = 0; - this[6] = v4; - result = 0; - memset( - (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); - *((_BYTE *)this + 28) = 0; - *(_DWORD *)((char *)this + 285) = 0; - *(_DWORD *)((char *)this + 537) = 0; - memset( - (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); - *((_BYTE *)this + 541) = 0; - return result; -} -// 51B418: using guessed type int (*off_51B418)(); -// 51B880: using guessed type void *std::ctype::classic_table(void)::_S_classic_table; - -//----- (004D2F90) -------------------------------------------------------- -int __thiscall std::ctype::ctype(_DWORD *this, int a2, void **a3, char a4, int a5) -{ - void **v5; // eax - int result; // eax - - v5 = a3; - *this = &off_51B418; - this[4] = 0; - this[5] = 0; - this[1] = a5 != 0; - *((_BYTE *)this + 12) = a4 & (a3 != 0); - if ( !a3 ) - v5 = &std::ctype::classic_table(void)::_S_classic_table; - *(_DWORD *)((char *)this + 29) = 0; - *(_DWORD *)((char *)this + 281) = 0; - this[6] = v5; - result = 0; - memset( - (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); - *((_BYTE *)this + 28) = 0; - *(_DWORD *)((char *)this + 285) = 0; - *(_DWORD *)((char *)this + 537) = 0; - memset( - (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); - *((_BYTE *)this + 541) = 0; - return result; -} -// 51B418: using guessed type int (*off_51B418)(); -// 51B880: using guessed type void *std::ctype::classic_table(void)::_S_classic_table; - -//----- (004D3040) -------------------------------------------------------- -void __fastcall std::ctype::~ctype(void **Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B418; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - if ( *((_BYTE *)Block + 12) && Block[6] ) - operator delete[](Block[6]); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4D3093: variable 'lpfctx' is possibly undefined -// 51B418: using guessed type int (*off_51B418)(); - -//----- (004D30B0) -------------------------------------------------------- -void __fastcall std::ctype::~ctype(int a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *(_DWORD *)a1 = &off_51B418; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 8)); - if ( *(_BYTE *)(a1 + 12) && *(_DWORD *)(a1 + 24) ) - operator delete[](*(void **)(a1 + 24)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D3103: variable 'lpfctx' is possibly undefined -// 51B418: using guessed type int (*off_51B418)(); - -//----- (004D3120) -------------------------------------------------------- -int __fastcall std::ctype::_M_initialize_ctype(int a1) -{ - int WCh; // ebx - int v3; // eax - int i; // ebx - int j; // ebx - int result; // eax - - for ( WCh = 0; WCh != 128; ++WCh ) - { - v3 = wctob(WCh); - if ( v3 == -1 ) - { - *(_BYTE *)(a1 + 12) = 0; - goto LABEL_5; - } - *(_BYTE *)(a1 + WCh + 13) = v3; - } - *(_BYTE *)(a1 + 12) = 1; -LABEL_5: - for ( i = 0; i != 256; ++i ) - *(_WORD *)(a1 + 2 * i + 142) = btowc(i); - for ( j = 0; j != 16; ++j ) - { - *(_WORD *)(a1 + 2 * j + 654) = 1 << j; - result = std::ctype::_M_convert_to_wmask(1 << j); - *(_WORD *)(a1 + 2 * j + 686) = result; - } - return result; -} - -//----- (004D31C0) -------------------------------------------------------- -int __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3) -{ - int v4; // eax - - *this = &off_51B448; - this[1] = a3 != 0; - v4 = std::locale::facet::_S_clone_c_locale(); - *((_BYTE *)this + 12) = 0; - this[2] = v4; - return std::ctype::_M_initialize_ctype((int)this); -} -// 51B448: using guessed type int (*off_51B448)(); - -//----- (004D3200) -------------------------------------------------------- -void __thiscall std::ctype::ctype(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B448; - this[2] = std::locale::facet::_S_get_c_locale(); - *((_BYTE *)this + 12) = 0; - std::ctype::_M_initialize_ctype((int)this); -} -// 51B448: using guessed type int (*off_51B448)(); - -//----- (004D32B0) -------------------------------------------------------- -void __fastcall std::ctype::~ctype(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B448; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - *Block = &unk_51B24C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4D32F4: variable 'lpfctx' is possibly undefined -// 51B448: using guessed type int (*off_51B448)(); - -//----- (004D3310) -------------------------------------------------------- -void __fastcall std::ctype::~ctype(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B448; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_51B24C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D3354: variable 'lpfctx' is possibly undefined -// 51B448: using guessed type int (*off_51B448)(); - -//----- (004D3370) -------------------------------------------------------- -int __fastcall std::deque>::back(_DWORD *a1) -{ - int v1; // eax - - v1 = a1[6]; - if ( v1 == a1[7] ) - v1 = *(_DWORD *)(a1[9] - 4) + 512; - return v1 - 8; -} - -//----- (004D3388) -------------------------------------------------------- -int __fastcall std::deque>::pop_back(_DWORD *a1) -{ - char *v2; // ecx - int v4; // eax - int v5; // ecx - - v2 = (char *)a1[6]; - if ( v2 == (char *)a1[7] ) - { - operator delete(v2); - v4 = a1[9]; - v5 = *(_DWORD *)(v4 - 4); - a1[9] = v4 - 4; - a1[7] = v5; - a1[8] = v5 + 512; - a1[6] = v5 + 504; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); - } - else - { - a1[6] = v2 - 8; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); - } -} - -//----- (004D33E0) -------------------------------------------------------- -void __thiscall std::deque>::push_back(int this, int *a2) -{ - int v3; // eax - int v4; // edi - char *v5; // ecx - int v6; // edi - unsigned int v7; // eax - int v8; // edi - char *v9; // edi - char *v10; // eax - int v11; // ecx - unsigned int v12; // esi - int v13; // ecx - int v14; // eax - int v15; // eax - int v16; // eax - int v17; // esi - int *v18; // edx - int v19; // eax - int v20; // [esp+18h] [ebp-20h] - int v21; // [esp+1Ch] [ebp-1Ch] - char *v22; // [esp+1Ch] [ebp-1Ch] - - v3 = *(_DWORD *)(this + 24); - if ( v3 == *(_DWORD *)(this + 32) - 8 ) - { - v4 = *(_DWORD *)(this + 36); - v5 = *(char **)(this + 20); - v21 = v4; - v20 = v4 - (_DWORD)v5; - v6 = (v4 - (int)v5) >> 2; - if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) - + ((v3 - *(_DWORD *)(this + 28)) >> 3) - + ((v6 - 1) << 6) == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); - v7 = *(_DWORD *)(this + 4); - if ( v7 - ((v21 - *(_DWORD *)this) >> 2) <= 1 ) - { - v8 = v6 + 2; - if ( v7 <= 2 * v8 ) - { - v11 = 1; - if ( v7 ) - v11 = *(_DWORD *)(this + 4); - v12 = v7 + v11 + 2; - if ( v12 > 0x1FFFFFFF ) - std::__throw_bad_alloc(); - v22 = (char *)operator new(4 * v12); - v9 = &v22[4 * ((v12 - v8) >> 1)]; - v13 = *(_DWORD *)(this + 20); - v14 = *(_DWORD *)(this + 36) + 4; - if ( v14 != v13 ) - memmove(v9, *(const void **)(this + 20), v14 - v13); - operator delete(*(void **)this); - *(_DWORD *)(this + 4) = v12; - *(_DWORD *)this = v22; - } - else - { - v9 = (char *)(*(_DWORD *)this + 4 * ((v7 - v8) >> 1)); - v10 = (char *)(v21 + 4); - if ( v5 <= v9 ) - { - if ( v5 != v10 ) - memmove(&v9[v20 - (v21 - (_DWORD)v5)], v5, v21 + 4 - (_DWORD)v5); - } - else if ( v5 != v10 ) - { - memmove(v9, v5, v21 + 4 - (_DWORD)v5); - } - } - v15 = *(_DWORD *)v9; - *(_DWORD *)(this + 20) = v9; - *(_DWORD *)(this + 12) = v15; - *(_DWORD *)(this + 16) = v15 + 512; - v16 = *(_DWORD *)&v9[v20]; - *(_DWORD *)(this + 36) = &v9[v20]; - *(_DWORD *)(this + 28) = v16; - *(_DWORD *)(this + 32) = v16 + 512; - } - v17 = *(_DWORD *)(this + 36); - *(_DWORD *)(v17 + 4) = operator new(0x200u); - std::__shared_ptr::__shared_ptr( - *(int **)(this + 24), - a2); - v18 = (int *)(*(_DWORD *)(this + 36) + 4); - v19 = *v18; - *(_DWORD *)(this + 36) = v18; - *(_DWORD *)(this + 28) = v19; - *(_DWORD *)(this + 32) = v19 + 512; - *(_DWORD *)(this + 24) = v19; - } - else - { - std::__shared_ptr::__shared_ptr( - *(int **)(this + 24), - a2); - *(_DWORD *)(this + 24) += 8; - } -} - -//----- (004D35A0) -------------------------------------------------------- -int __fastcall std::deque>::pop_back(_DWORD *a1) -{ - char *v2; // ecx - int v4; // eax - int v5; // ecx - - v2 = (char *)a1[6]; - if ( v2 == (char *)a1[7] ) - { - operator delete(v2); - v4 = a1[9]; - v5 = *(_DWORD *)(v4 - 4); - a1[9] = v4 - 4; - a1[7] = v5; - a1[8] = v5 + 512; - a1[6] = v5 + 504; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); - } - else - { - a1[6] = v2 - 8; - return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); - } -} - -//----- (004D35F8) -------------------------------------------------------- -void __thiscall std::deque>::push_back(int this, int *a2) -{ - _DWORD *v3; // eax - char *v4; // ecx - int v5; // esi - unsigned int v6; // eax - int v7; // ebx - char *v8; // ebx - char *v9; // eax - int v10; // ecx - unsigned int v11; // esi - char *v12; // eax - const void *v13; // ecx - int v14; // eax - int v15; // eax - char *v16; // ebx - int v17; // eax - int v18; // ebx - int *v19; // ecx - int *v20; // ecx - int v21; // eax - int v22; // [esp+18h] [ebp-20h] - int v23; // [esp+1Ch] [ebp-1Ch] - char *v24; // [esp+1Ch] [ebp-1Ch] - - v3 = *(_DWORD **)(this + 24); - if ( v3 == (_DWORD *)(*(_DWORD *)(this + 32) - 8) ) - { - v4 = *(char **)(this + 20); - v23 = *(_DWORD *)(this + 36); - v22 = v23 - (_DWORD)v4; - v5 = (v23 - (int)v4) >> 2; - if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) - + (((int)v3 - *(_DWORD *)(this + 28)) >> 3) - + ((v5 - 1) << 6) == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); - v6 = *(_DWORD *)(this + 4); - if ( v6 - ((v23 - *(_DWORD *)this) >> 2) <= 1 ) - { - v7 = v5 + 2; - if ( v6 <= 2 * (v5 + 2) ) - { - v10 = 1; - if ( v6 ) - v10 = *(_DWORD *)(this + 4); - v11 = v6 + v10 + 2; - if ( v11 > 0x1FFFFFFF ) - std::__throw_bad_alloc(); - v12 = (char *)operator new(4 * v11); - v13 = *(const void **)(this + 20); - v24 = v12; - v8 = &v12[4 * ((v11 - v7) >> 1)]; - v14 = *(_DWORD *)(this + 36) + 4; - if ( (const void *)v14 != v13 ) - memmove(v8, v13, v14 - (_DWORD)v13); - operator delete(*(void **)this); - *(_DWORD *)(this + 4) = v11; - *(_DWORD *)this = v24; - } - else - { - v8 = (char *)(*(_DWORD *)this + 4 * ((v6 - v7) >> 1)); - v9 = (char *)(v23 + 4); - if ( v4 <= v8 ) - { - if ( v9 != v4 ) - memmove(v8, v4, v23 + 4 - (_DWORD)v4); - } - else if ( v9 != v4 ) - { - memmove(v8, v4, v23 + 4 - (_DWORD)v4); - } - } - v15 = *(_DWORD *)v8; - *(_DWORD *)(this + 20) = v8; - v16 = &v8[v22]; - *(_DWORD *)(this + 12) = v15; - *(_DWORD *)(this + 16) = v15 + 512; - v17 = *(_DWORD *)v16; - *(_DWORD *)(this + 36) = v16; - *(_DWORD *)(this + 28) = v17; - *(_DWORD *)(this + 32) = v17 + 512; - } - v18 = *(_DWORD *)(this + 36); - *(_DWORD *)(v18 + 4) = operator new(0x200u); - v19 = (int *)(*(_DWORD *)(this + 24) + 4); - *(v19 - 1) = *a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v19, a2[1]); - v20 = (int *)(*(_DWORD *)(this + 36) + 4); - v21 = *v20; - *(_DWORD *)(this + 36) = v20; - *(_DWORD *)(this + 28) = v21; - *(_DWORD *)(this + 32) = v21 + 512; - *(_DWORD *)(this + 24) = v21; - } - else - { - *v3 = *a2; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v3 + 1, a2[1]); - *(_DWORD *)(this + 24) += 8; - } -} - -//----- (004D37CC) -------------------------------------------------------- -void __thiscall std::deque::_M_push_back_aux(int this, int a2) -{ - int v2; // edi - struct _Unwind_Exception *v3; // ecx - unsigned int v4; // eax - struct _Unwind_Exception *v5; // eax - int v6; // edx - const void *v7; // edx - int v8; // eax - int v9; // eax - int v10; // eax - int *v11; // edx - int v12; // eax - char *v13; // [esp+18h] [ebp-60h] - int v14; // [esp+1Ch] [ebp-5Ch] - unsigned int v15; // [esp+20h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-54h] - struct _Unwind_Exception *lpuexcpta; // [esp+24h] [ebp-54h] - struct _Unwind_Exception *lpuexcptb; // [esp+24h] [ebp-54h] - - v2 = *(_DWORD *)(this + 36); - v3 = *(struct _Unwind_Exception **)(this + 20); - v14 = *(_DWORD *)(this + 36) - (_DWORD)v3; - if ( -1431655765 * ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) - + 21 * ((v14 >> 2) - 1) - - 1431655765 * ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) == 89478485 ) - std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); - v4 = *(_DWORD *)(this + 4); - if ( v4 - ((v2 - *(_DWORD *)this) >> 2) <= 1 ) - { - lpuexcpt = (struct _Unwind_Exception *)((v14 >> 2) + 2); - if ( v4 <= 2 * (int)lpuexcpt ) - { - v6 = 1; - if ( v4 ) - v6 = *(_DWORD *)(this + 4); - v15 = v4 + v6 + 2; - if ( v15 > 0x1FFFFFFF ) - std::__throw_bad_alloc(); - v13 = (char *)operator new(4 * v15); - lpuexcpta = (struct _Unwind_Exception *)&v13[4 * ((v15 - (unsigned int)lpuexcpt) >> 1)]; - v7 = *(const void **)(this + 20); - v8 = *(_DWORD *)(this + 36) + 4; - if ( (const void *)v8 != v7 ) - memmove(lpuexcpta, v7, v8 - (_DWORD)v7); - operator delete(*(void **)this); - *(_DWORD *)this = v13; - *(_DWORD *)(this + 4) = v15; - } - else - { - lpuexcpta = (struct _Unwind_Exception *)(*(_DWORD *)this + 4 * ((v4 - (unsigned int)lpuexcpt) >> 1)); - v5 = (struct _Unwind_Exception *)(v2 + 4); - if ( v3 <= lpuexcpta ) - { - if ( v3 != v5 ) - memmove((char *)lpuexcpta + *(_DWORD *)(this + 36) - v2, v3, v2 + 4 - (_DWORD)v3); - } - else if ( v3 != v5 ) - { - memmove(lpuexcpta, v3, v2 + 4 - (_DWORD)v3); - } - } - *(_DWORD *)(this + 20) = lpuexcpta; - v9 = *(_DWORD *)lpuexcpta; - *(_DWORD *)(this + 12) = *(_DWORD *)lpuexcpta; - *(_DWORD *)(this + 16) = v9 + 504; - *(_DWORD *)(this + 36) = (char *)lpuexcpta + v14; - v10 = *(_DWORD *)((char *)lpuexcpta + v14); - *(_DWORD *)(this + 28) = v10; - *(_DWORD *)(this + 32) = v10 + 504; - } - lpuexcptb = *(struct _Unwind_Exception **)(this + 36); - *((_DWORD *)lpuexcptb + 1) = operator new(0x1F8u); - std::string::basic_string(*(char **)(this + 24), a2); - v11 = (int *)(*(_DWORD *)(this + 36) + 4); - v12 = *v11; - *(_DWORD *)(this + 36) = v11; - *(_DWORD *)(this + 28) = v12; - *(_DWORD *)(this + 24) = v12; - *(_DWORD *)(this + 32) = v12 + 504; -} - -//----- (004D3A70) -------------------------------------------------------- -void __thiscall std::deque::push_back(_DWORD *this, int a2) -{ - int v3; // eax - char *v4; // ecx - - v3 = this[8]; - v4 = (char *)this[6]; - if ( v4 == (char *)(v3 - 24) ) - { - std::deque::_M_push_back_aux((int)this, a2); - } - else - { - std::string::basic_string(v4, a2); - this[6] += 24; - } -} - -//----- (004D3AB0) -------------------------------------------------------- -std::locale *std::locale::_S_initialize() -{ - std::locale *result; // eax - std::locale::_Impl *v1; // [esp+4h] [ebp-18h] - std::locale::_Impl *v2; // [esp+4h] [ebp-18h] - - if ( !_CRT_MT ) - { - result = (std::locale *)std::locale::_S_classic; - if ( std::locale::_S_classic ) - return result; -LABEL_5: - std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, (unsigned int)v1); - std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; - std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; - return std::locale::locale( - &`anonymous namespace'::c_locale, - (std::locale *)`anonymous namespace'::c_locale_impl, - v2); - } - __gthr_win32_once((int)&std::locale::_S_once, (void (*)(void))std::locale::_S_initialize_once); - result = (std::locale *)std::locale::_S_classic; - if ( !std::locale::_S_classic ) - goto LABEL_5; - return result; -} -// 4D3AF9: variable 'v1' is possibly undefined -// 4D3B21: variable 'v2' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50B3B4: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; -// 50BDC0: using guessed type _DWORD `anonymous namespace'::c_locale; -// 50C5E8: using guessed type int std::locale::_S_classic; -// 50C604: using guessed type int std::locale::_S_global; - -//----- (004D3B30) -------------------------------------------------------- -std::locale *std::locale::_S_initialize_once() -{ - unsigned int v1; // [esp+4h] [ebp-18h] - std::locale::_Impl *v2; // [esp+4h] [ebp-18h] - - std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, v1); - std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; - std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; - return std::locale::locale(&`anonymous namespace'::c_locale, (std::locale *)`anonymous namespace'::c_locale_impl, v2); -} -// 4D3B3F: variable 'v1' is possibly undefined -// 4D3B67: variable 'v2' is possibly undefined -// 50B3B4: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; -// 50BDC0: using guessed type _DWORD `anonymous namespace'::c_locale; -// 50C5E8: using guessed type int std::locale::_S_classic; -// 50C604: using guessed type int std::locale::_S_global; - -//----- (004D3B80) -------------------------------------------------------- -std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this) -{ - std::locale *result; // eax - - result = this; - if ( this && (((unsigned __int8)this & 0x3F) == 0 || ((unsigned int)this & 0xFFFFFFC0) != 0) ) - { - if ( (unsigned int)this - 1 > 4 ) - std::__throw_runtime_error((std::runtime_error *)"locale::_S_normalize_category category not found"); - return (std::locale *)CSWTCH_112[(_DWORD)this - 1]; - } - return result; -} -// 515304: using guessed type int CSWTCH_112[7]; - -//----- (004D3BC0) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_init_extra(int a1@, std::locale::_Impl *this, std::locale::facet **a3) -{ - int v3; // edx - int v4; // eax - int v5; // edx - int v6; // eax - int v7; // ecx - int v8; // edx - int v9; // eax - int v10; // ecx - int v11; // eax - int v12; // edx - int v13; // [esp+1Ch] [ebp-5Ch] - int v14; // [esp+20h] [ebp-58h] - int v15; // [esp+24h] [ebp-54h] - int v16; // [esp+24h] [ebp-54h] - int v17; // [esp+24h] [ebp-54h] - int v18; // [esp+24h] [ebp-54h] - int v19; // [esp+24h] [ebp-54h] - int v20; // [esp+24h] [ebp-54h] - int v21; // [esp+24h] [ebp-54h] - int v22; // [esp+24h] [ebp-54h] - int v23; // [esp+24h] [ebp-54h] - int v24; // [esp+24h] [ebp-54h] - int v25; // [esp+28h] [ebp-50h] - int v26; // [esp+2Ch] [ebp-4Ch] - int v27; // [esp+2Ch] [ebp-4Ch] - int v28; // [esp+2Ch] [ebp-4Ch] - int v29; // [esp+2Ch] [ebp-4Ch] - int v30; // [esp+2Ch] [ebp-4Ch] - int v31; // [esp+2Ch] [ebp-4Ch] - int v32; // [esp+2Ch] [ebp-4Ch] - int v33; // [esp+2Ch] [ebp-4Ch] - int v34; // [esp+2Ch] [ebp-4Ch] - int v35; // [esp+30h] [ebp-48h] - int v36; // [esp+34h] [ebp-44h] - int v37; // [esp+34h] [ebp-44h] - int v38; // [esp+34h] [ebp-44h] - int v39; // [esp+34h] [ebp-44h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-40h] - - v3 = *((_DWORD *)this + 1); - v4 = *(_DWORD *)this; - dword_50C4C8 = 1; - std::`anonymous namespace'::numpunct_c = (int)&off_51B6FC; - v36 = v3; - v14 = v4; - v5 = *((_DWORD *)this + 2); - dword_50C4CC = v4; - v35 = v5; - std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_c, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C4C8, 1u); - else - ++dword_50C4C8; - v26 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v26 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_c; - dword_50C540 = 1; - std::`anonymous namespace'::collate_c = (int)&off_51B590; - dword_50C544 = std::locale::facet::_S_get_c_locale(); - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C540, 1u); - else - ++dword_50C540; - v27 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v27 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_c; - dword_50C510 = 1; - std::`anonymous namespace'::moneypunct_cf = (int)&off_51A850; - dword_50C514 = v36; - std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_cf, 0, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C510, 1u); - else - ++dword_50C510; - v28 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v28 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_cf; - dword_50C51C = 1; - std::`anonymous namespace'::moneypunct_ct = (int)&off_51A884; - dword_50C520 = v35; - std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_ct, 0, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C51C, 1u); - else - ++dword_50C51C; - v29 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v29 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_ct; - dword_50C4F0 = 1; - std::`anonymous namespace'::money_get_c = (int)&off_51B804; - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C4F0, 1u); - else - dword_50C4F0 = 2; - v30 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v30 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = &std::`anonymous namespace'::money_get_c; - dword_50C500 = 1; - std::`anonymous namespace'::money_put_c = (int)&off_51B834; - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C500, 1u); - else - dword_50C500 = 2; - v31 = *(_DWORD *)(a1 + 4); - v6 = std::locale::id::_M_id(&std::money_put>::id); - v7 = _CRT_MT; - *(_DWORD *)(v31 + 4 * v6) = &std::`anonymous namespace'::money_put_c; - dword_50C4E0 = 1; - std::`anonymous namespace'::time_get_c = (int)&off_51B744; - if ( v7 ) - _InterlockedAdd(&dword_50C4E0, 1u); - else - dword_50C4E0 = 2; - v32 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v32 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_c; - std::messages::messages(&std::`anonymous namespace'::messages_c, 1); - if ( _CRT_MT ) - _InterlockedAdd(dword_50C4A8, 1u); - else - ++dword_50C4A8[0]; - v33 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v33 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_c; - dword_50C4D4 = 1; - std::`anonymous namespace'::numpunct_w = (int)&off_51B720; - v34 = *((_DWORD *)this + 4); - v13 = *((_DWORD *)this + 3); - v8 = *((_DWORD *)this + 5); - dword_50C4D8 = v13; - v25 = v8; - std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_w, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C4D4, 1u); - else - ++dword_50C4D4; - v15 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v15 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_w; - dword_50C54C = 1; - std::`anonymous namespace'::collate_w = (int)&off_51B5AC; - dword_50C550 = std::locale::facet::_S_get_c_locale(); - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C54C, 1u); - else - ++dword_50C54C; - v16 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v16 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_w; - dword_50C528 = 1; - std::`anonymous namespace'::moneypunct_wf = (int)&off_51A8B8; - dword_50C52C = v34; - std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wf, 0, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C528, 1u); - else - ++dword_50C528; - v17 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v17 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wf; - dword_50C534 = 1; - std::`anonymous namespace'::moneypunct_wt = (int)&off_51A8EC; - dword_50C538 = v25; - std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wt, 0, 0); - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C534, 1u); - else - ++dword_50C534; - v18 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v18 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wt; - dword_50C4F8 = 1; - std::`anonymous namespace'::money_get_w = (int)&off_51B81C; - if ( _CRT_MT ) - _InterlockedAdd(&dword_50C4F8, 1u); - else - dword_50C4F8 = 2; - v19 = *(_DWORD *)(a1 + 4); - v9 = std::locale::id::_M_id(&std::money_get>::id); - v10 = _CRT_MT; - *(_DWORD *)(v19 + 4 * v9) = &std::`anonymous namespace'::money_get_w; - dword_50C508 = 1; - std::`anonymous namespace'::money_put_w = (int)&off_51B84C; - if ( v10 ) - _InterlockedAdd(&dword_50C508, 1u); - else - dword_50C508 = 2; - v20 = *(_DWORD *)(a1 + 4); - v11 = std::locale::id::_M_id(std::money_put>::id); - v12 = _CRT_MT; - *(_DWORD *)(v20 + 4 * v11) = &std::`anonymous namespace'::money_put_w; - dword_50C4E8 = 1; - std::`anonymous namespace'::time_get_w = (int)&off_51B76C; - if ( v12 ) - _InterlockedAdd(&dword_50C4E8, 1u); - else - dword_50C4E8 = 2; - v21 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v21 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_w; - std::messages::messages(&std::`anonymous namespace'::messages_w, 1); - if ( _CRT_MT ) - _InterlockedAdd(dword_50C4B8, 1u); - else - ++dword_50C4B8[0]; - v22 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v22 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_w; - v23 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v23 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v14; - v24 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v24 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v36; - v37 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v37 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v35; - v38 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v38 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v13; - v39 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v39 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v34; - lpuexcpta = *(struct _Unwind_Exception **)(a1 + 12); - *((_DWORD *)lpuexcpta + std::locale::id::_M_id(&std::moneypunct::id)) = v25; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C48C: using guessed type signed __int32 std::moneypunct::id; -// 50C490: using guessed type signed __int32 std::moneypunct::id; -// 50C494: using guessed type signed __int32 std::moneypunct::id; -// 50C498: using guessed type signed __int32 std::moneypunct::id; -// 50C4A4: using guessed type _DWORD std::`anonymous namespace'::messages_c; -// 50C4A8: using guessed type signed __int32 dword_50C4A8[3]; -// 50C4B4: using guessed type _DWORD std::`anonymous namespace'::messages_w; -// 50C4B8: using guessed type signed __int32 dword_50C4B8[3]; -// 50C4C4: using guessed type int std::`anonymous namespace'::numpunct_c; -// 50C4C8: using guessed type int dword_50C4C8; -// 50C4CC: using guessed type int dword_50C4CC; -// 50C4D0: using guessed type int std::`anonymous namespace'::numpunct_w; -// 50C4D4: using guessed type int dword_50C4D4; -// 50C4D8: using guessed type int dword_50C4D8; -// 50C4DC: using guessed type int std::`anonymous namespace'::time_get_c; -// 50C4E0: using guessed type int dword_50C4E0; -// 50C4E4: using guessed type int std::`anonymous namespace'::time_get_w; -// 50C4E8: using guessed type int dword_50C4E8; -// 50C4EC: using guessed type int std::`anonymous namespace'::money_get_c; -// 50C4F0: using guessed type int dword_50C4F0; -// 50C4F4: using guessed type int std::`anonymous namespace'::money_get_w; -// 50C4F8: using guessed type int dword_50C4F8; -// 50C4FC: using guessed type int std::`anonymous namespace'::money_put_c; -// 50C500: using guessed type int dword_50C500; -// 50C504: using guessed type int std::`anonymous namespace'::money_put_w; -// 50C508: using guessed type int dword_50C508; -// 50C50C: using guessed type int std::`anonymous namespace'::moneypunct_cf; -// 50C510: using guessed type int dword_50C510; -// 50C514: using guessed type int dword_50C514; -// 50C518: using guessed type int std::`anonymous namespace'::moneypunct_ct; -// 50C51C: using guessed type int dword_50C51C; -// 50C520: using guessed type int dword_50C520; -// 50C524: using guessed type int std::`anonymous namespace'::moneypunct_wf; -// 50C528: using guessed type int dword_50C528; -// 50C52C: using guessed type int dword_50C52C; -// 50C530: using guessed type int std::`anonymous namespace'::moneypunct_wt; -// 50C534: using guessed type int dword_50C534; -// 50C538: using guessed type int dword_50C538; -// 50C53C: using guessed type int std::`anonymous namespace'::collate_c; -// 50C540: using guessed type int dword_50C540; -// 50C544: using guessed type int dword_50C544; -// 50C548: using guessed type int std::`anonymous namespace'::collate_w; -// 50C54C: using guessed type int dword_50C54C; -// 50C550: using guessed type int dword_50C550; -// 50C660: using guessed type signed __int32 std::collate::id; -// 50C664: using guessed type signed __int32 std::collate::id; -// 50C680: using guessed type signed __int32 std::messages::id; -// 50C684: using guessed type signed __int32 std::messages::id; -// 50C688: using guessed type signed __int32 std::numpunct::id; -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 50C690: using guessed type signed __int32 std::time_get>::id; -// 50C694: using guessed type signed __int32 std::time_get>::id; -// 50C6A0: using guessed type signed __int32 std::money_get>::id; -// 50C6A4: using guessed type signed __int32 std::money_get>::id; -// 50C6A8: using guessed type signed __int32 std::money_put>::id; -// 50C6AC: using guessed type signed __int32 std::money_put>::id[5]; -// 51A850: using guessed type int (*off_51A850)(); -// 51A884: using guessed type int (*off_51A884)(); -// 51A8B8: using guessed type int (*off_51A8B8)(); -// 51A8EC: using guessed type int (*off_51A8EC)(); -// 51B590: using guessed type int (*off_51B590)(); -// 51B5AC: using guessed type int (*off_51B5AC)(); -// 51B6FC: using guessed type int (*off_51B6FC)(); -// 51B720: using guessed type int (*off_51B720)(); -// 51B744: using guessed type int (*off_51B744)(); -// 51B76C: using guessed type int (*off_51B76C)(); -// 51B804: using guessed type int (*off_51B804)(); -// 51B81C: using guessed type int (*off_51B81C)(); -// 51B834: using guessed type int (*off_51B834)(); -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (004D43D0) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_init_extra( - int a1@, - std::locale::_Impl *this, - int *a3, - int **a4, - const char *a5, - const char *a6) -{ - int v6; // eax - _DWORD *v7; // edx - int v8; // eax - int v9; // eax - void *v10; // eax - int v11; // ecx - void *v12; // eax - int v13; // edx - void *v14; // eax - int v15; // ecx - int v16; // eax - _DWORD *v17; // edx - int v18; // eax - int v19; // eax - void *v20; // eax - int v21; // ecx - void *v22; // eax - int v23; // edx - void *v24; // eax - int v25; // ecx - int v26; // [esp+14h] [ebp-74h] - int v27; // [esp+14h] [ebp-74h] - int v28; // [esp+14h] [ebp-74h] - volatile signed __int32 *v29; // [esp+14h] [ebp-74h] - int v30; // [esp+18h] [ebp-70h] - int v31; // [esp+18h] [ebp-70h] - int v32; // [esp+18h] [ebp-70h] - volatile signed __int32 *v33; // [esp+18h] [ebp-70h] - _DWORD *Block; // [esp+1Ch] [ebp-6Ch] - int v35; // [esp+20h] [ebp-68h] - _DWORD *v36; // [esp+20h] [ebp-68h] - _DWORD *v37; // [esp+24h] [ebp-64h] - _DWORD *v38; // [esp+28h] [ebp-60h] - int v39; // [esp+2Ch] [ebp-5Ch] - _DWORD *v40; // [esp+2Ch] [ebp-5Ch] - _DWORD *v41; // [esp+30h] [ebp-58h] - int v42; // [esp+34h] [ebp-54h] - _DWORD *v43; // [esp+34h] [ebp-54h] - int v44; // [esp+34h] [ebp-54h] - int v45; // [esp+34h] [ebp-54h] - int v46; // [esp+34h] [ebp-54h] - int v47; // [esp+34h] [ebp-54h] - _DWORD *v48; // [esp+34h] [ebp-54h] - int v49; // [esp+34h] [ebp-54h] - int v50; // [esp+34h] [ebp-54h] - struct _Unwind_Exception *lpuexcpta; // [esp+38h] [ebp-50h] - - v41 = operator new(0xCu); - v41[1] = 0; - v6 = *(_DWORD *)this; - *v41 = &off_51B6FC; - v41[2] = 0; - std::numpunct::_M_initialize_numpunct(v41, v6); - if ( _CRT_MT ) - _InterlockedAdd(v41 + 1, 1u); - else - ++v41[1]; - v42 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v42 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v41; - v7 = operator new(0xCu); - v7[1] = 0; - *v7 = &off_51B590; - v43 = v7; - v7[2] = std::locale::facet::_S_clone_c_locale(); - if ( _CRT_MT ) - _InterlockedAdd(v43 + 1, 1u); - else - ++v43[1]; - v39 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v39 + 4 * std::locale::id::_M_id(&std::collate::id)) = v43; - v40 = operator new(0xCu); - v40[1] = 0; - v8 = *(_DWORD *)this; - *v40 = &off_51A850; - v40[2] = 0; - std::moneypunct::_M_initialize_moneypunct(v40, v8, 0); - if ( _CRT_MT ) - _InterlockedAdd(v40 + 1, 1u); - else - ++v40[1]; - v44 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v44 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v40; - v38 = operator new(0xCu); - v38[1] = 0; - v9 = *(_DWORD *)this; - *v38 = &off_51A884; - v38[2] = 0; - std::moneypunct::_M_initialize_moneypunct(v38, v9, 0); - if ( _CRT_MT ) - _InterlockedAdd(v38 + 1, 1u); - else - ++v38[1]; - v45 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v45 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v38; - v10 = operator new(8u); - v11 = _CRT_MT; - *((_DWORD *)v10 + 1) = 0; - *(_DWORD *)v10 = &off_51B804; - if ( v11 ) - _InterlockedAdd((volatile signed __int32 *)v10 + 1, 1u); - else - *((_DWORD *)v10 + 1) = 1; - v30 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v30 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v10; - v12 = operator new(8u); - v13 = _CRT_MT; - *((_DWORD *)v12 + 1) = 0; - *(_DWORD *)v12 = &off_51B834; - if ( v13 ) - _InterlockedAdd((volatile signed __int32 *)v12 + 1, 1u); - else - *((_DWORD *)v12 + 1) = 1; - v31 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v31 + 4 * std::locale::id::_M_id(&std::money_put>::id)) = v12; - v14 = operator new(8u); - v15 = _CRT_MT; - *((_DWORD *)v14 + 1) = 0; - *(_DWORD *)v14 = &off_51B744; - if ( v15 ) - _InterlockedAdd((volatile signed __int32 *)v14 + 1, 1u); - else - *((_DWORD *)v14 + 1) = 1; - v32 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v32 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v14; - v33 = (volatile signed __int32 *)operator new(0x10u); - std::messages::messages(v33, *(_DWORD *)this, (int)a4, 0); - if ( _CRT_MT ) - _InterlockedAdd(v33 + 1, 1u); - else - ++*((_DWORD *)v33 + 1); - v46 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v46 + 4 * std::locale::id::_M_id(&std::messages::id)) = v33; - v37 = operator new(0xCu); - v37[1] = 0; - v16 = *(_DWORD *)this; - *v37 = &off_51B720; - v37[2] = 0; - std::numpunct::_M_initialize_numpunct(v37, v16); - if ( _CRT_MT ) - _InterlockedAdd(v37 + 1, 1u); - else - ++v37[1]; - v47 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v47 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v37; - v17 = operator new(0xCu); - v17[1] = 0; - *v17 = &off_51B5AC; - v48 = v17; - v17[2] = std::locale::facet::_S_clone_c_locale(); - if ( _CRT_MT ) - _InterlockedAdd(v48 + 1, 1u); - else - ++v48[1]; - v35 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v35 + 4 * std::locale::id::_M_id(&std::collate::id)) = v48; - v36 = operator new(0xCu); - v36[1] = 0; - v18 = *a3; - *v36 = &off_51A8B8; - v36[2] = 0; - std::moneypunct::_M_initialize_moneypunct(v36, v18, (int)a5); - if ( _CRT_MT ) - _InterlockedAdd(v36 + 1, 1u); - else - ++v36[1]; - v49 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v49 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v36; - Block = operator new(0xCu); - Block[1] = 0; - v19 = *a3; - *Block = &off_51A8EC; - Block[2] = 0; - std::moneypunct::_M_initialize_moneypunct(Block, v19, (int)a5); - if ( _CRT_MT ) - _InterlockedAdd(Block + 1, 1u); - else - ++Block[1]; - v50 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v50 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = Block; - v20 = operator new(8u); - v21 = _CRT_MT; - *((_DWORD *)v20 + 1) = 0; - *(_DWORD *)v20 = &off_51B81C; - if ( v21 ) - _InterlockedAdd((volatile signed __int32 *)v20 + 1, 1u); - else - *((_DWORD *)v20 + 1) = 1; - v26 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v26 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v20; - v22 = operator new(8u); - v23 = _CRT_MT; - *((_DWORD *)v22 + 1) = 0; - *(_DWORD *)v22 = &off_51B84C; - if ( v23 ) - _InterlockedAdd((volatile signed __int32 *)v22 + 1, 1u); - else - *((_DWORD *)v22 + 1) = 1; - v27 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v27 + 4 * std::locale::id::_M_id(std::money_put>::id)) = v22; - v24 = operator new(8u); - v25 = _CRT_MT; - *((_DWORD *)v24 + 1) = 0; - *(_DWORD *)v24 = &off_51B76C; - if ( v25 ) - _InterlockedAdd((volatile signed __int32 *)v24 + 1, 1u); - else - *((_DWORD *)v24 + 1) = 1; - v28 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v28 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v24; - v29 = (volatile signed __int32 *)operator new(0x10u); - std::messages::messages(v29, *(_DWORD *)this, (int)a4, 0); - if ( _CRT_MT ) - _InterlockedAdd(v29 + 1, 1u); - else - ++*((_DWORD *)v29 + 1); - lpuexcpta = *(struct _Unwind_Exception **)(a1 + 4); - *((_DWORD *)lpuexcpta + std::locale::id::_M_id(&std::messages::id)) = v29; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C48C: using guessed type signed __int32 std::moneypunct::id; -// 50C490: using guessed type signed __int32 std::moneypunct::id; -// 50C494: using guessed type signed __int32 std::moneypunct::id; -// 50C498: using guessed type signed __int32 std::moneypunct::id; -// 50C660: using guessed type signed __int32 std::collate::id; -// 50C664: using guessed type signed __int32 std::collate::id; -// 50C680: using guessed type signed __int32 std::messages::id; -// 50C684: using guessed type signed __int32 std::messages::id; -// 50C688: using guessed type signed __int32 std::numpunct::id; -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 50C690: using guessed type signed __int32 std::time_get>::id; -// 50C694: using guessed type signed __int32 std::time_get>::id; -// 50C6A0: using guessed type signed __int32 std::money_get>::id; -// 50C6A4: using guessed type signed __int32 std::money_get>::id; -// 50C6A8: using guessed type signed __int32 std::money_put>::id; -// 50C6AC: using guessed type signed __int32 std::money_put>::id[5]; -// 51A850: using guessed type int (*off_51A850)(); -// 51A884: using guessed type int (*off_51A884)(); -// 51A8B8: using guessed type int (*off_51A8B8)(); -// 51A8EC: using guessed type int (*off_51A8EC)(); -// 51B590: using guessed type int (*off_51B590)(); -// 51B5AC: using guessed type int (*off_51B5AC)(); -// 51B6FC: using guessed type int (*off_51B6FC)(); -// 51B720: using guessed type int (*off_51B720)(); -// 51B744: using guessed type int (*off_51B744)(); -// 51B76C: using guessed type int (*off_51B76C)(); -// 51B804: using guessed type int (*off_51B804)(); -// 51B81C: using guessed type int (*off_51B81C)(); -// 51B834: using guessed type int (*off_51B834)(); -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (004D4C40) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_install_cache( - int a1@, - std::locale::_Impl *this, - const std::locale::facet *a3, - unsigned int a4) -{ - volatile signed __int32 *v4; // edx - int *v5; // ecx - int v6; // esi - volatile signed __int32 *v7; // ebx - int v8; // eax - int v9; // edx - int v10; // edx - volatile signed __int32 *v11; // edx - int v12; // eax - int v13; // esi - _DWORD *v14; // ebx - void (__fastcall *v15)(void *); // eax - int v16; // ebx - _DWORD *exception; // eax - _DWORD *v18; // eax - volatile signed __int32 *v19; // eax - - if ( !(_BYTE)`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex - && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) - { - if ( _CRT_MT ) - __gthr_win32_mutex_init_function(`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); - __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); - atexit(__tcf_0_1); - } - if ( _CRT_MT && __gthr_win32_mutex_lock((int)`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_519CF8; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); - } - v4 = (volatile signed __int32 *)std::locale::_S_twinned_facets[0]; - if ( !std::locale::_S_twinned_facets[0] ) - { -LABEL_24: - v10 = -1; - goto LABEL_25; - } - v5 = std::locale::_S_twinned_facets; - while ( 1 ) - { - v6 = *v4; - if ( *v4 ) - goto LABEL_6; - if ( !_CRT_MT ) - { - v6 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v6; - *v4 = v6; -LABEL_6: - v7 = (volatile signed __int32 *)v5[1]; - v8 = *v7; - if ( a3 == (const std::locale::facet *)(v6 - 1) ) - goto LABEL_15; - goto LABEL_7; - } - _InterlockedCompareExchange(v4, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v7 = (volatile signed __int32 *)v5[1]; - v8 = *v7; - if ( a3 == (const std::locale::facet *)(*v4 - 1) ) - { -LABEL_15: - v9 = v8; - if ( !v8 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(v7, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v9 = *v7; - } - else - { - v9 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v9; - *v7 = v9; - } - } - v10 = v9 - 1; - goto LABEL_25; - } -LABEL_7: - if ( v8 ) - goto LABEL_10; - if ( _CRT_MT ) - break; - v8 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v8; - *v7 = v8; -LABEL_10: - if ( a3 == (const std::locale::facet *)(v8 - 1) ) - goto LABEL_20; -LABEL_11: - v4 = (volatile signed __int32 *)v5[2]; - v5 += 2; - if ( !v4 ) - goto LABEL_24; - } - _InterlockedCompareExchange(v7, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - if ( a3 != (const std::locale::facet *)(*v7 - 1) ) - goto LABEL_11; -LABEL_20: - v11 = (volatile signed __int32 *)*v5; - v12 = *(_DWORD *)*v5; - if ( !v12 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(v11, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v12 = *v11; - } - else - { - v12 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v12; - *v11 = v12; - } - } - v10 = (int)a3; - a3 = (const std::locale::facet *)(v12 - 1); -LABEL_25: - v13 = *(_DWORD *)(a1 + 12); - v14 = (_DWORD *)(v13 + 4 * (_DWORD)a3); - if ( !*v14 ) - { - v19 = (volatile signed __int32 *)((char *)this + 4); - if ( _CRT_MT ) - { - _InterlockedAdd(v19, 1u); - v16 = _CRT_MT; - v13 = *(_DWORD *)(a1 + 12); - *(_DWORD *)(v13 + 4 * (_DWORD)a3) = this; - if ( v10 == -1 ) - goto LABEL_30; - if ( v16 ) - { - _InterlockedAdd(v19, 1u); - v16 = _CRT_MT; - *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * v10) = this; - goto LABEL_30; - } - } - else - { - ++*((_DWORD *)this + 1); - *v14 = this; - if ( v10 == -1 ) - return; - } - ++*((_DWORD *)this + 1); - *(_DWORD *)(v13 + 4 * v10) = this; - return; - } - if ( this ) - { - v15 = *(void (__fastcall **)(void *))(*(_DWORD *)this + 4); - if ( v15 == std::locale::facet::~facet ) - operator delete(this); - else - ((void (__fastcall *)(std::locale::_Impl *, int))v15)(this, v10); - } - v16 = _CRT_MT; -LABEL_30: - if ( v16 ) - { - if ( __gthr_win32_mutex_unlock((int)`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) - { - v18 = __cxa_allocate_exception(4u); - *v18 = &off_519D0C; - __cxa_throw( - v18, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - } -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C5EC: using guessed type int std::locale::id::_S_refcount; -// 50CBD4: using guessed type _DWORD `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex[2]; -// 5154C0: using guessed type int std::locale::_S_twinned_facets[24]; -// 515CC8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; -// 515CD4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 519CF8: using guessed type void (__cdecl *off_519CF8)(__gnu_cxx::__concurrence_lock_error *__hidden this); -// 519D0C: using guessed type void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (004D50B0) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_install_facet( - _DWORD *a1@, - std::locale::_Impl *this, - const std::locale::id *a3, - const std::locale::facet *a4) -{ - void *v4; // esi - unsigned int v5; // eax - unsigned int v6; // ecx - int v7; // ebx - int i; // eax - unsigned int v9; // ecx - int v10; // ebx - int j; // eax - volatile signed __int32 *v12; // ecx - volatile signed __int32 *v13; // ebx - std::locale::facet **v14; // ecx - int v15; // edx - volatile signed __int32 *v16; // ebx - int v17; // eax - volatile signed __int32 v18; // edx - int v19; // edx - _DWORD *v20; // eax - _DWORD *v21; // ecx - signed __int32 v22; // eax - int v23; // eax - int v24; // eax - volatile signed __int32 *v25; // ecx - signed __int32 v26; // eax - void (*v27)(void); // eax - volatile signed __int32 *v28; // edx - int v29; // ebx - int v30; // eax - _DWORD *v31; // eax - _DWORD *v32; // ecx - signed __int32 v33; // eax - void (*v34)(void); // eax - void (*v35)(void); // eax - void (*v36)(void); // eax - const std::locale::id *Val; // [esp+4h] [ebp-98h] - unsigned int v38; // [esp+10h] [ebp-8Ch] - struct _Unwind_Exception *lpuexcpt; // [esp+1Ch] [ebp-80h] - int v41; // [esp+20h] [ebp-7Ch] - int v42; // [esp+24h] [ebp-78h] - volatile signed __int32 **v43; // [esp+24h] [ebp-78h] - _DWORD *v44; // [esp+28h] [ebp-74h] - int v45; // [esp+2Ch] [ebp-70h] - unsigned int v46; // [esp+34h] [ebp-68h] - void *v47; // [esp+38h] [ebp-64h] - int v48; // [esp+3Ch] [ebp-60h] - int v49; // [esp+40h] [ebp-5Ch] - _DWORD *v50; // [esp+44h] [ebp-58h] - _DWORD *v51; // [esp+48h] [ebp-54h] - - if ( !a3 ) - return; - v41 = *(_DWORD *)this; - if ( !*(_DWORD *)this ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange( - (volatile signed __int32 *)this, - _InterlockedIncrement(&std::locale::id::_S_refcount), - 0); - v41 = *(_DWORD *)this; - } - else - { - v41 = ++std::locale::id::_S_refcount; - *(_DWORD *)this = std::locale::id::_S_refcount; - } - } - v45 = v41 - 1; - if ( a1[2] - 1 < (unsigned int)(v41 - 1) ) - { - lpuexcpt = (struct _Unwind_Exception *)(v41 + 3); - v5 = -1; - if ( (unsigned int)(v41 + 3) < 0x20000000 ) - v5 = 4 * (v41 + 3); - v4 = (void *)a1[1]; - v46 = v5; - v44 = (_DWORD *)operator new[](v5); - v6 = a1[2]; - if ( v6 ) - { - v7 = a1[1]; - for ( i = 0; i != v6; ++i ) - v44[i] = *(_DWORD *)(v7 + 4 * i); - } - if ( (unsigned int)lpuexcpt > v6 ) - memset(&v44[v6], 0, 4 * ((_DWORD)lpuexcpt - v6)); - v47 = (void *)a1[3]; - v42 = operator new[](v46); - v9 = a1[2]; - if ( v9 ) - { - v10 = a1[3]; - for ( j = 0; j != v9; ++j ) - *(_DWORD *)(v42 + 4 * j) = *(_DWORD *)(v10 + 4 * j); - } - if ( (unsigned int)lpuexcpt > v9 ) - memset((void *)(v42 + 4 * v9), 0, 4 * ((_DWORD)lpuexcpt - v9)); - a1[2] = lpuexcpt; - a1[1] = v44; - a1[3] = v42; - if ( v4 ) - operator delete[](v4); - if ( v47 ) - operator delete[](v47); - } - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)a3 + 1, 1u); - else - ++*((_DWORD *)a3 + 1); - v12 = *(volatile signed __int32 **)(a1[1] + 4 * v45); - v43 = (volatile signed __int32 **)(a1[1] + 4 * v45); - if ( !v12 ) - { - *v43 = (volatile signed __int32 *)a3; - goto LABEL_49; - } - v13 = (volatile signed __int32 *)std::locale::_S_twinned_facets[0]; - if ( !std::locale::_S_twinned_facets[0] ) - goto LABEL_46; - v14 = (std::locale::facet **)std::locale::_S_twinned_facets; - while ( 1 ) - { - v15 = *v13; - if ( *v13 ) - goto LABEL_28; - if ( !_CRT_MT ) - { - v15 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v15; - *v13 = v15; -LABEL_28: - v16 = (volatile signed __int32 *)v14[1]; - v17 = *v16; - if ( v41 == v15 ) - goto LABEL_37; - goto LABEL_29; - } - _InterlockedCompareExchange(v13, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v18 = *v13; - v16 = (volatile signed __int32 *)v14[1]; - v17 = *v16; - if ( v41 == v18 ) - { -LABEL_37: - v19 = a1[1]; - if ( !v17 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(v16, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v17 = *v16; - } - else - { - v17 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v17; - *v16 = v17; - } - } - v48 = v19 + 4 * v17 - 4; - if ( *(_DWORD *)v48 ) - { - v20 = std::locale::facet::_M_sso_shim((volatile signed __int32 *)a3, v14[1], Val); - v51 = v20; - if ( _CRT_MT ) - { - _InterlockedAdd(v20 + 1, 1u); - v21 = *(_DWORD **)v48; - if ( _CRT_MT ) - { - v22 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v48 + 4), 0xFFFFFFFF); - goto LABEL_44; - } - } - else - { - ++v20[1]; - v21 = *(_DWORD **)v48; - } - v22 = v21[1]; - v21[1] = v22 - 1; -LABEL_44: - if ( v22 == 1 ) - { - v35 = *(void (**)(void))(*v21 + 4); - if ( (char *)v35 == (char *)std::locale::facet::~facet ) - operator delete(v21); - else - v35(); - } - *(_DWORD *)v48 = v51; - v12 = *v43; - goto LABEL_46; - } - goto LABEL_71; - } -LABEL_29: - if ( v17 ) - goto LABEL_32; - if ( !_CRT_MT ) - { - v17 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v17; - *v16 = v17; -LABEL_32: - if ( v41 == v17 ) - break; - goto LABEL_33; - } - _InterlockedCompareExchange(v16, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - if ( v41 == *v16 ) - break; -LABEL_33: - v13 = (volatile signed __int32 *)v14[2]; - v14 += 2; - if ( !v13 ) - goto LABEL_71; - } - v28 = (volatile signed __int32 *)*v14; - v29 = a1[1]; - v30 = *(_DWORD *)*v14; - if ( !v30 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(v28, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v30 = *v28; - } - else - { - v30 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v30; - *v28 = v30; - } - } - v49 = v29 + 4 * v30 - 4; - if ( !*(_DWORD *)v49 ) - { -LABEL_71: - v12 = *v43; - if ( !_CRT_MT ) - goto LABEL_47; - goto LABEL_72; - } - v31 = std::locale::facet::_M_cow_shim((volatile signed __int32 *)a3, *v14, Val); - v50 = v31; - if ( !_CRT_MT ) - { - ++v31[1]; - v32 = *(_DWORD **)v49; - goto LABEL_67; - } - _InterlockedAdd(v31 + 1, 1u); - v32 = *(_DWORD **)v49; - if ( _CRT_MT ) - { - v33 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v49 + 4), 0xFFFFFFFF); - } - else - { -LABEL_67: - v33 = v32[1]; - v32[1] = v33 - 1; - } - if ( v33 == 1 ) - { - v36 = *(void (**)(void))(*v32 + 4); - if ( (char *)v36 == (char *)std::locale::facet::~facet ) - operator delete(v32); - else - v36(); - } - *(_DWORD *)v49 = v50; - v12 = *v43; -LABEL_46: - if ( _CRT_MT ) - { -LABEL_72: - if ( _InterlockedExchangeAdd(v12 + 1, 0xFFFFFFFF) == 1 ) - goto LABEL_73; - goto LABEL_48; - } -LABEL_47: - v23 = *((_DWORD *)v12 + 1); - *((_DWORD *)v12 + 1) = v23 - 1; - if ( v23 != 1 ) - goto LABEL_48; -LABEL_73: - v34 = *(void (**)(void))(*v12 + 4); - if ( (char *)v34 == (char *)std::locale::facet::~facet ) - operator delete((void *)v12); - else - v34(); -LABEL_48: - *v43 = (volatile signed __int32 *)a3; -LABEL_49: - if ( a1[2] ) - { - v38 = 0; - v24 = a1[3]; - do - { - v25 = *(volatile signed __int32 **)(v24 + 4 * v38); - if ( v25 ) - { - if ( _CRT_MT ) - { - v26 = _InterlockedExchangeAdd(v25 + 1, 0xFFFFFFFF); - } - else - { - v26 = *((_DWORD *)v25 + 1); - *((_DWORD *)v25 + 1) = v26 - 1; - } - if ( v26 == 1 ) - { - v27 = *(void (**)(void))(*v25 + 4); - if ( (char *)v27 == (char *)std::locale::facet::~facet ) - operator delete((void *)v25); - else - v27(); - } - v24 = a1[3]; - *(_DWORD *)(v24 + 4 * v38) = 0; - } - ++v38; - } - while ( a1[2] > v38 ); - } -} -// 4D53BF: variable 'Val' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C5EC: using guessed type int std::locale::id::_S_refcount; -// 5154C0: using guessed type int std::locale::_S_twinned_facets[24]; - -//----- (004D5850) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_M_replace_facet( - _DWORD *a1@, - std::locale::_Impl *this, - const std::locale::_Impl *a3, - const std::locale::id *a4) -{ - int v4; // eax - unsigned int v5; // eax - const std::locale::id *v6; // eax - - v4 = *(_DWORD *)a3; - if ( !*(_DWORD *)a3 ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange( - (volatile signed __int32 *)a3, - _InterlockedIncrement(&std::locale::id::_S_refcount), - 0); - v4 = *(_DWORD *)a3; - } - else - { - v4 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v4; - *(_DWORD *)a3 = v4; - } - } - v5 = v4 - 1; - if ( *((_DWORD *)this + 2) - 1 < v5 || (v6 = *(const std::locale::id **)(*((_DWORD *)this + 1) + 4 * v5)) == 0 ) - std::__throw_runtime_error((std::runtime_error *)"locale::_Impl::_M_replace_facet"); - std::locale::_Impl::_M_install_facet(a1, a3, v6, a4); -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C5EC: using guessed type int std::locale::id::_S_refcount; - -//----- (004D58D0) -------------------------------------------------------- -int __userpurge std::locale::_Impl::_M_replace_category@( - int result@, - _DWORD *a2@, - std::locale::_Impl *this, - volatile signed __int32 **a4, - const std::locale::id *const *a5) -{ - volatile signed __int32 **v5; // ebx - volatile signed __int32 *i; // edx - int v8; // eax - unsigned int v9; // eax - const std::locale::id *v10; // eax - const std::locale::facet *v11; // [esp+8h] [ebp-14h] - - v5 = a4; - for ( i = *a4; *v5; i = *v5 ) - { - v8 = *i; - if ( !*i ) - { - if ( _CRT_MT ) - { - _InterlockedCompareExchange(i, _InterlockedIncrement(&std::locale::id::_S_refcount), 0); - v8 = *i; - } - else - { - v8 = std::locale::id::_S_refcount + 1; - std::locale::id::_S_refcount = v8; - *i = v8; - } - } - v9 = v8 - 1; - if ( *((_DWORD *)this + 2) - 1 < v9 || (v10 = *(const std::locale::id **)(*((_DWORD *)this + 1) + 4 * v9)) == 0 ) - std::__throw_runtime_error((std::runtime_error *)"locale::_Impl::_M_replace_facet"); - ++v5; - std::locale::_Impl::_M_install_facet(a2, (std::locale::_Impl *)i, v10, v11); - } - return result; -} -// 4D5922: variable 'v11' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C5EC: using guessed type int std::locale::id::_S_refcount; - -//----- (004D5980) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_Impl( - _DWORD *a1@, - std::locale::_Impl *this, - const std::locale::_Impl *a3, - unsigned int a4) -{ - unsigned int v4; // edx - unsigned int v5; // eax - int v6; // ecx - unsigned int v7; // ebx - unsigned int v8; // eax - int v9; // eax - int v10; // edx - int v11; // ecx - int v12; // ebx - int v13; // eax - int v14; // edx - _DWORD *v15; // eax - unsigned int v16; // edx - unsigned int v17; // ecx - unsigned int v18; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-4Ch] - _DWORD *v21; // [esp+24h] [ebp-48h] - unsigned int Size; // [esp+28h] [ebp-44h] - - a1[1] = 0; - *a1 = a3; - a1[3] = 0; - v4 = *((_DWORD *)this + 2); - a1[4] = 0; - a1[2] = v4; - v5 = 4 * v4; - if ( v4 >= 0x20000000 ) - v5 = -1; - v6 = operator new[](v5); - v7 = a1[2]; - a1[1] = v6; - v8 = v7; - if ( v7 ) - { - v9 = 0; - while ( 1 ) - { - v10 = *(_DWORD *)(*((_DWORD *)this + 1) + 4 * v9); - *(_DWORD *)(v6 + 4 * v9) = v10; - if ( v10 ) - { - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(v10 + 4), 1u); - else - ++*(_DWORD *)(v10 + 4); - v7 = a1[2]; - } - if ( v7 <= ++v9 ) - break; - v6 = a1[1]; - } - v8 = 4 * v7; - if ( v7 >= 0x20000000 ) - v8 = -1; - } - v11 = operator new[](v8); - v12 = a1[2]; - a1[3] = v11; - if ( v12 ) - { - v13 = 0; - while ( 1 ) - { - v14 = *(_DWORD *)(*((_DWORD *)this + 3) + 4 * v13); - *(_DWORD *)(v11 + 4 * v13) = v14; - if ( v14 ) - { - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(v14 + 4), 1u); - else - ++*(_DWORD *)(v14 + 4); - } - if ( a1[2] <= (unsigned int)++v13 ) - break; - v11 = a1[3]; - } - } - v15 = (_DWORD *)operator new[](0x18u); - v16 = 0; - v17 = (unsigned int)(v15 + 1) & 0xFFFFFFFC; - a1[4] = v15; - *v15 = 0; - v15[5] = 0; - v18 = ((unsigned int)v15 - v17 + 24) & 0xFFFFFFFC; - do - { - *(_DWORD *)(v17 + v16) = 0; - v16 += 4; - } - while ( v16 < v18 ); - for ( lpuexcpt = 0; - lpuexcpt != (struct _Unwind_Exception *)24; - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 4) ) - { - if ( !*(_DWORD *)((char *)lpuexcpt + *((_DWORD *)this + 4)) ) - break; - Size = strlen(*(const char **)((char *)lpuexcpt + *((_DWORD *)this + 4))) + 1; - v21 = (_DWORD *)((char *)lpuexcpt + a1[4]); - *v21 = operator new[](Size); - memcpy(*(void **)((char *)lpuexcpt + a1[4]), *(const void **)((char *)lpuexcpt + *((_DWORD *)this + 4)), Size); - } -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004D5C40) -------------------------------------------------------- -void __userpurge std::locale::_Impl::_Impl(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3) -{ - std::locale::facet **v4; // [esp+4h] [ebp-74h] - const std::locale::facet *v5; // [esp+8h] [ebp-70h] - const std::locale::facet *v6; // [esp+8h] [ebp-70h] - const std::locale::facet *v7; // [esp+8h] [ebp-70h] - const std::locale::facet *v8; // [esp+8h] [ebp-70h] - const std::locale::facet *v9; // [esp+8h] [ebp-70h] - const std::locale::facet *v10; // [esp+8h] [ebp-70h] - const std::locale::facet *v11; // [esp+8h] [ebp-70h] - const std::locale::facet *v12; // [esp+8h] [ebp-70h] - const std::locale::facet *v13; // [esp+8h] [ebp-70h] - const std::locale::facet *v14; // [esp+8h] [ebp-70h] - const std::locale::facet *v15; // [esp+8h] [ebp-70h] - const std::locale::facet *v16; // [esp+8h] [ebp-70h] - const std::locale::facet *v17; // [esp+8h] [ebp-70h] - const std::locale::facet *v18; // [esp+8h] [ebp-70h] - const std::locale::facet *v19; // [esp+8h] [ebp-70h] - const std::locale::facet *v20; // [esp+8h] [ebp-70h] - const std::locale::facet *v21; // [esp+8h] [ebp-70h] - const std::locale::facet *v22; // [esp+8h] [ebp-70h] - const std::locale::facet *v23; // [esp+8h] [ebp-70h] - const std::locale::facet *v24; // [esp+8h] [ebp-70h] - const std::locale::facet *v25; // [esp+8h] [ebp-70h] - const std::locale::facet *v26; // [esp+8h] [ebp-70h] - const std::locale::facet *v27; // [esp+8h] [ebp-70h] - const std::locale::facet *v28; // [esp+8h] [ebp-70h] - const std::locale::facet *v29; // [esp+8h] [ebp-70h] - const std::locale::facet *v30; // [esp+8h] [ebp-70h] - const std::locale::facet *v31; // [esp+8h] [ebp-70h] - const std::locale::facet *v32; // [esp+8h] [ebp-70h] - const std::locale::facet *v33; // [esp+8h] [ebp-70h] - const std::locale::facet *v34; // [esp+8h] [ebp-70h] - const std::locale::facet *v35; // [esp+8h] [ebp-70h] - const std::locale::facet *v36; // [esp+8h] [ebp-70h] - int v37; // [esp+14h] [ebp-64h] - int v38; // [esp+14h] [ebp-64h] - int v39; // [esp+14h] [ebp-64h] - int v40; // [esp+14h] [ebp-64h] - int v41; // [esp+14h] [ebp-64h] - int v42; // [esp+14h] [ebp-64h] - int v43; // [esp+14h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - int v45[8]; // [esp+58h] [ebp-20h] BYREF - - dword_50BDC8 = 0; - *a1 = this; - memset(&`anonymous namespace'::facet_vec, 0, 0xC0u); - a1[1] = &`anonymous namespace'::facet_vec; - a1[2] = 48; - memset(&`anonymous namespace'::cache_vec, 0, 0xC0u); - a1[3] = &`anonymous namespace'::cache_vec; - a1[4] = &`anonymous namespace'::name_vec; - dword_50BDCC = 0; - dword_50BDD0 = 0; - dword_50BDD4 = 0; - dword_50BDD8 = 0; - `anonymous namespace'::name_vec = (int)&`anonymous namespace'::name_c; - `anonymous namespace'::name_c = *(_WORD *)std::locale::facet::_S_get_c_name(); - std::ctype::ctype(`anonymous namespace'::ctype_c, 0, 0, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::ctype::id, - (const std::locale::id *)`anonymous namespace'::ctype_c, - v5); - std::codecvt::codecvt(`anonymous namespace'::codecvt_c, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)`anonymous namespace'::codecvt_c, - v6); - dword_50B424 = 1; - word_50B444 = 0; - `anonymous namespace'::numpunct_cache_c = (int)&off_51AF60; - dword_50B428 = 0; - dword_50B42C = 0; - byte_50B430 = 0; - dword_50B434 = 0; - dword_50B438 = 0; - dword_50B43C = 0; - dword_50B440 = 0; - byte_50B484 = 0; - dword_50B324 = 1; - `anonymous namespace'::numpunct_c = &off_51A688; - dword_50B328 = (int)&`anonymous namespace'::numpunct_cache_c; - std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_c, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::numpunct::id, - (const std::locale::id *)&`anonymous namespace'::numpunct_c, - v7); - dword_50BFA4 = 1; - `anonymous namespace'::num_get_c = &off_51B5C8; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::num_get>::id, - (const std::locale::id *)&`anonymous namespace'::num_get_c, - v8); - dword_50BFB4 = 1; - `anonymous namespace'::num_put_c = &off_51B640; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::num_put>::id, - (const std::locale::id *)&`anonymous namespace'::num_put_c, - v9); - dword_50BEBC = 1; - `anonymous namespace'::collate_c = &off_51A618; - dword_50BEC0 = std::locale::facet::_S_get_c_locale(); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::collate::id, - (const std::locale::id *)&`anonymous namespace'::collate_c, - v10); - dword_50B724 = 1; - `anonymous namespace'::moneypunct_cache_cf = (int)&off_51B084; - dword_50B728 = 0; - dword_50B72C = 0; - word_50B730 = 0; - byte_50B732 = 0; - dword_50B734 = 0; - dword_50B738 = 0; - dword_50B73C = 0; - dword_50B740 = 0; - dword_50B744 = 0; - dword_50B748 = 0; - dword_50B74C = 0; - dword_50B750 = 0; - dword_50B754 = 0; - byte_50B763 = 0; - dword_50B3CC = 1; - `anonymous namespace'::moneypunct_cf = &off_51A1D0; - dword_50B3D0 = (int)&`anonymous namespace'::moneypunct_cache_cf; - std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_cf, 0, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::moneypunct::id, - (const std::locale::id *)&`anonymous namespace'::moneypunct_cf, - v11); - dword_50B784 = 1; - `anonymous namespace'::moneypunct_cache_ct = (int)&off_51B094; - dword_50B788 = 0; - dword_50B78C = 0; - word_50B790 = 0; - byte_50B792 = 0; - dword_50B794 = 0; - dword_50B798 = 0; - dword_50B79C = 0; - dword_50B7A0 = 0; - dword_50B7A4 = 0; - dword_50B7A8 = 0; - dword_50B7AC = 0; - dword_50B7B0 = 0; - dword_50B7B4 = 0; - byte_50B7C3 = 0; - dword_50B3D8 = 1; - `anonymous namespace'::moneypunct_ct = &off_51A204; - dword_50B3DC = (int)&`anonymous namespace'::moneypunct_cache_ct; - std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_ct, 0, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::moneypunct::id, - (const std::locale::id *)&`anonymous namespace'::moneypunct_ct, - v12); - dword_50B36C = 1; - `anonymous namespace'::money_get_c = &off_51A728; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::money_get>::id, - (const std::locale::id *)&`anonymous namespace'::money_get_c, - v13); - dword_50B37C = 1; - `anonymous namespace'::money_put_c = &off_51A758; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::money_put>::id, - (const std::locale::id *)&`anonymous namespace'::money_put_c, - v14); - dword_50B564 = 1; - `anonymous namespace'::timepunct_cache_c = (int)&off_51AF94; - dword_50B568 = 0; - dword_50B56C = 0; - dword_50B570 = 0; - dword_50B574 = 0; - dword_50B578 = 0; - dword_50B57C = 0; - dword_50B580 = 0; - dword_50B584 = 0; - dword_50B588 = 0; - dword_50B58C = 0; - dword_50B590 = 0; - dword_50B594 = 0; - dword_50B598 = 0; - dword_50B59C = 0; - dword_50B5A0 = 0; - dword_50B5A4 = 0; - dword_50B5A8 = 0; - dword_50B5AC = 0; - dword_50B5B0 = 0; - dword_50B5B4 = 0; - dword_50B5B8 = 0; - dword_50B5BC = 0; - dword_50B5C0 = 0; - dword_50B5C4 = 0; - dword_50B5C8 = 0; - dword_50B5CC = 0; - dword_50B5D0 = 0; - dword_50B5D4 = 0; - dword_50B5D8 = 0; - dword_50B5DC = 0; - dword_50B5E0 = 0; - dword_50B5E4 = 0; - dword_50B5E8 = 0; - dword_50B5EC = 0; - dword_50B5F0 = 0; - dword_50B5F4 = 0; - dword_50B5F8 = 0; - dword_50B5FC = 0; - dword_50B600 = 0; - dword_50B604 = 0; - dword_50B608 = 0; - dword_50B60C = 0; - dword_50B610 = 0; - dword_50B614 = 0; - dword_50B618 = 0; - dword_50B61C = 0; - dword_50B620 = 0; - byte_50B624 = 0; - std::__timepunct::__timepunct( - `anonymous namespace'::timepunct_c, - (int)&`anonymous namespace'::timepunct_cache_c, - 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::__timepunct::id, - (const std::locale::id *)`anonymous namespace'::timepunct_c, - v15); - dword_50B33C = 1; - `anonymous namespace'::time_get_c = &off_51A6D0; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::time_get>::id, - (const std::locale::id *)&`anonymous namespace'::time_get_c, - v16); - dword_50B34C = 1; - `anonymous namespace'::time_put_c = &off_51B794; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::time_put>::id, - (const std::locale::id *)&`anonymous namespace'::time_put_c, - v17); - std::messages::messages(`anonymous namespace'::messages_c, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::messages::id, - (const std::locale::id *)`anonymous namespace'::messages_c, - v18); - std::ctype::ctype(`anonymous namespace'::ctype_w, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::ctype::id, - (const std::locale::id *)`anonymous namespace'::ctype_w, - v19); - std::codecvt::codecvt(`anonymous namespace'::codecvt_w, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)`anonymous namespace'::codecvt_w, - v20); - dword_50B4A4 = 1; - `anonymous namespace'::numpunct_cache_w = (int)&off_51AF70; - dword_50B4A8 = 0; - dword_50B4AC = 0; - byte_50B4B0 = 0; - dword_50B4B4 = 0; - dword_50B4B8 = 0; - dword_50B4BC = 0; - dword_50B4C0 = 0; - dword_50B4C4 = 0; - byte_50B544 = 0; - dword_50B330 = 1; - `anonymous namespace'::numpunct_w = &off_51A6AC; - dword_50B334 = (int)&`anonymous namespace'::numpunct_cache_w; - std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_w, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::numpunct::id, - (const std::locale::id *)&`anonymous namespace'::numpunct_w, - v21); - dword_50BFAC = 1; - `anonymous namespace'::num_get_w = &off_51B604; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::num_get>::id, - (const std::locale::id *)&`anonymous namespace'::num_get_w, - v22); - dword_50BFBC = 1; - `anonymous namespace'::num_put_w = &off_51B670; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::num_put>::id, - (const std::locale::id *)&`anonymous namespace'::num_put_w, - v23); - dword_50BEC8 = 1; - `anonymous namespace'::collate_w = &off_51A634; - dword_50BECC = std::locale::facet::_S_get_c_locale(); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::collate::id, - (const std::locale::id *)&`anonymous namespace'::collate_w, - v24); - dword_50B7E4 = 1; - `anonymous namespace'::moneypunct_cache_wf = (int)&off_51B0A4; - dword_50B7E8 = 0; - dword_50B7EC = 0; - byte_50B7F0 = 0; - dword_50B7F2 = 0; - dword_50B7F8 = 0; - dword_50B7FC = 0; - dword_50B800 = 0; - dword_50B804 = 0; - dword_50B808 = 0; - dword_50B80C = 0; - dword_50B810 = 0; - dword_50B814 = 0; - dword_50B818 = 0; - byte_50B832 = 0; - dword_50B3E4 = 1; - `anonymous namespace'::moneypunct_wf = &off_51A238; - dword_50B3E8 = (int)&`anonymous namespace'::moneypunct_cache_wf; - std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wf, 0, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::moneypunct::id, - (const std::locale::id *)&`anonymous namespace'::moneypunct_wf, - v25); - dword_50B844 = 1; - `anonymous namespace'::moneypunct_cache_wt = (int)&off_51B0B4; - dword_50B848 = 0; - dword_50B84C = 0; - byte_50B850 = 0; - dword_50B852 = 0; - dword_50B858 = 0; - dword_50B85C = 0; - dword_50B860 = 0; - dword_50B864 = 0; - dword_50B868 = 0; - dword_50B86C = 0; - dword_50B870 = 0; - dword_50B874 = 0; - dword_50B878 = 0; - byte_50B892 = 0; - dword_50B3F0 = 1; - `anonymous namespace'::moneypunct_wt = &off_51A26C; - dword_50B3F4 = (int)&`anonymous namespace'::moneypunct_cache_wt; - std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wt, 0, 0); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::moneypunct::id, - (const std::locale::id *)&`anonymous namespace'::moneypunct_wt, - v26); - dword_50B374 = 1; - `anonymous namespace'::money_get_w = &off_51A740; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::money_get>::id, - (const std::locale::id *)&`anonymous namespace'::money_get_w, - v27); - dword_50B384 = 1; - `anonymous namespace'::money_put_w = &off_51A770; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::money_put>::id, - (const std::locale::id *)&`anonymous namespace'::money_put_w, - v28); - dword_50B644 = 1; - `anonymous namespace'::timepunct_cache_w = (int)&off_51AFA4; - dword_50B648 = 0; - dword_50B64C = 0; - dword_50B650 = 0; - dword_50B654 = 0; - dword_50B658 = 0; - dword_50B65C = 0; - dword_50B660 = 0; - dword_50B664 = 0; - dword_50B668 = 0; - dword_50B66C = 0; - dword_50B670 = 0; - dword_50B674 = 0; - dword_50B678 = 0; - dword_50B67C = 0; - dword_50B680 = 0; - dword_50B684 = 0; - dword_50B688 = 0; - dword_50B68C = 0; - dword_50B690 = 0; - dword_50B694 = 0; - dword_50B698 = 0; - dword_50B69C = 0; - dword_50B6A0 = 0; - dword_50B6A4 = 0; - dword_50B6A8 = 0; - dword_50B6AC = 0; - dword_50B6B0 = 0; - dword_50B6B4 = 0; - dword_50B6B8 = 0; - dword_50B6BC = 0; - dword_50B6C0 = 0; - dword_50B6C4 = 0; - dword_50B6C8 = 0; - dword_50B6CC = 0; - dword_50B6D0 = 0; - dword_50B6D4 = 0; - dword_50B6D8 = 0; - dword_50B6DC = 0; - dword_50B6E0 = 0; - dword_50B6E4 = 0; - dword_50B6E8 = 0; - dword_50B6EC = 0; - dword_50B6F0 = 0; - dword_50B6F4 = 0; - dword_50B6F8 = 0; - dword_50B6FC = 0; - dword_50B700 = 0; - byte_50B704 = 0; - std::__timepunct::__timepunct( - `anonymous namespace'::timepunct_w, - (int)&`anonymous namespace'::timepunct_cache_w, - 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::__timepunct::id, - (const std::locale::id *)`anonymous namespace'::timepunct_w, - v29); - dword_50B344 = 1; - `anonymous namespace'::time_get_w = &off_51A6FC; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::time_get>::id, - (const std::locale::id *)&`anonymous namespace'::time_get_w, - v30); - dword_50B354 = 1; - `anonymous namespace'::time_put_w = &off_51B7A8; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::time_put>::id, - (const std::locale::id *)&`anonymous namespace'::time_put_w, - v31); - std::messages::messages(`anonymous namespace'::messages_w, 1); - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::messages::id, - (const std::locale::id *)`anonymous namespace'::messages_w, - v32); - dword_50B35C = 1; - `anonymous namespace'::codecvt_c16 = &off_51B50C; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)&`anonymous namespace'::codecvt_c16, - v33); - dword_50B364 = 1; - `anonymous namespace'::codecvt_c32 = &off_51B4B4; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)&`anonymous namespace'::codecvt_c32, - v34); - dword_50B3FC = 1; - `anonymous namespace'::codecvt_c16_c8 = &off_51B4E0; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)&`anonymous namespace'::codecvt_c16_c8, - v35); - dword_50B404 = 1; - `anonymous namespace'::codecvt_c32_c8 = &off_51B488; - std::locale::_Impl::_M_install_facet( - a1, - (std::locale::_Impl *)&std::codecvt::id, - (const std::locale::id *)&`anonymous namespace'::codecvt_c32_c8, - v36); - v45[0] = (int)&`anonymous namespace'::numpunct_cache_c; - v45[1] = (int)&`anonymous namespace'::moneypunct_cache_cf; - v45[2] = (int)&`anonymous namespace'::moneypunct_cache_ct; - v45[3] = (int)&`anonymous namespace'::numpunct_cache_w; - v45[4] = (int)&`anonymous namespace'::moneypunct_cache_wf; - v45[5] = (int)&`anonymous namespace'::moneypunct_cache_wt; - std::locale::_Impl::_M_init_extra((int)a1, (std::locale::_Impl *)v45, v4); - v37 = a1[3]; - *(_DWORD *)(v37 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_c; - v38 = a1[3]; - *(_DWORD *)(v38 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_cf; - v39 = a1[3]; - *(_DWORD *)(v39 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_ct; - v40 = a1[3]; - *(_DWORD *)(v40 + 4 * std::locale::id::_M_id(&std::__timepunct::id)) = &`anonymous namespace'::timepunct_cache_c; - v41 = a1[3]; - *(_DWORD *)(v41 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_w; - v42 = a1[3]; - *(_DWORD *)(v42 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_wf; - v43 = a1[3]; - *(_DWORD *)(v43 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_wt; - lpuexcpt = (struct _Unwind_Exception *)a1[3]; - *((_DWORD *)lpuexcpt + std::locale::id::_M_id(&std::__timepunct::id)) = &`anonymous namespace'::timepunct_cache_w; -} -// 4D5D32: variable 'v5' is possibly undefined -// 4D5D60: variable 'v6' is possibly undefined -// 4D5E21: variable 'v7' is possibly undefined -// 4D5E4F: variable 'v8' is possibly undefined -// 4D5E7D: variable 'v9' is possibly undefined -// 4D5EC3: variable 'v10' is possibly undefined -// 4D5FBE: variable 'v11' is possibly undefined -// 4D60B8: variable 'v12' is possibly undefined -// 4D60E6: variable 'v13' is possibly undefined -// 4D6114: variable 'v14' is possibly undefined -// 4D633B: variable 'v15' is possibly undefined -// 4D6369: variable 'v16' is possibly undefined -// 4D6397: variable 'v17' is possibly undefined -// 4D63C5: variable 'v18' is possibly undefined -// 4D63F3: variable 'v19' is possibly undefined -// 4D6421: variable 'v20' is possibly undefined -// 4D64E3: variable 'v21' is possibly undefined -// 4D6511: variable 'v22' is possibly undefined -// 4D653F: variable 'v23' is possibly undefined -// 4D6585: variable 'v24' is possibly undefined -// 4D6681: variable 'v25' is possibly undefined -// 4D677D: variable 'v26' is possibly undefined -// 4D67AB: variable 'v27' is possibly undefined -// 4D67D9: variable 'v28' is possibly undefined -// 4D6A00: variable 'v29' is possibly undefined -// 4D6A2E: variable 'v30' is possibly undefined -// 4D6A5C: variable 'v31' is possibly undefined -// 4D6A8A: variable 'v32' is possibly undefined -// 4D6AB8: variable 'v33' is possibly undefined -// 4D6AE6: variable 'v34' is possibly undefined -// 4D6B14: variable 'v35' is possibly undefined -// 4D6B42: variable 'v36' is possibly undefined -// 4D6B7D: variable 'v4' is possibly undefined -// 50B300: using guessed type _DWORD `anonymous namespace'::messages_c[4]; -// 50B310: using guessed type _DWORD `anonymous namespace'::messages_w[4]; -// 50B324: using guessed type int dword_50B324; -// 50B328: using guessed type int dword_50B328; -// 50B330: using guessed type int dword_50B330; -// 50B334: using guessed type int dword_50B334; -// 50B33C: using guessed type int dword_50B33C; -// 50B344: using guessed type int dword_50B344; -// 50B34C: using guessed type int dword_50B34C; -// 50B354: using guessed type int dword_50B354; -// 50B35C: using guessed type int dword_50B35C; -// 50B364: using guessed type int dword_50B364; -// 50B36C: using guessed type int dword_50B36C; -// 50B374: using guessed type int dword_50B374; -// 50B37C: using guessed type int dword_50B37C; -// 50B384: using guessed type int dword_50B384; -// 50B388: using guessed type _DWORD `anonymous namespace'::timepunct_c[5]; -// 50B39C: using guessed type _DWORD `anonymous namespace'::timepunct_w[5]; -// 50B3CC: using guessed type int dword_50B3CC; -// 50B3D0: using guessed type int dword_50B3D0; -// 50B3D8: using guessed type int dword_50B3D8; -// 50B3DC: using guessed type int dword_50B3DC; -// 50B3E4: using guessed type int dword_50B3E4; -// 50B3E8: using guessed type int dword_50B3E8; -// 50B3F0: using guessed type int dword_50B3F0; -// 50B3F4: using guessed type int dword_50B3F4; -// 50B3FC: using guessed type int dword_50B3FC; -// 50B404: using guessed type int dword_50B404; -// 50B420: using guessed type int `anonymous namespace'::numpunct_cache_c; -// 50B424: using guessed type int dword_50B424; -// 50B428: using guessed type int dword_50B428; -// 50B42C: using guessed type int dword_50B42C; -// 50B430: using guessed type char byte_50B430; -// 50B434: using guessed type int dword_50B434; -// 50B438: using guessed type int dword_50B438; -// 50B43C: using guessed type int dword_50B43C; -// 50B440: using guessed type int dword_50B440; -// 50B444: using guessed type __int16 word_50B444; -// 50B484: using guessed type char byte_50B484; -// 50B4A0: using guessed type int `anonymous namespace'::numpunct_cache_w; -// 50B4A4: using guessed type int dword_50B4A4; -// 50B4A8: using guessed type int dword_50B4A8; -// 50B4AC: using guessed type int dword_50B4AC; -// 50B4B0: using guessed type char byte_50B4B0; -// 50B4B4: using guessed type int dword_50B4B4; -// 50B4B8: using guessed type int dword_50B4B8; -// 50B4BC: using guessed type int dword_50B4BC; -// 50B4C0: using guessed type int dword_50B4C0; -// 50B4C4: using guessed type int dword_50B4C4; -// 50B544: using guessed type char byte_50B544; -// 50B560: using guessed type int `anonymous namespace'::timepunct_cache_c; -// 50B564: using guessed type int dword_50B564; -// 50B568: using guessed type int dword_50B568; -// 50B56C: using guessed type int dword_50B56C; -// 50B570: using guessed type int dword_50B570; -// 50B574: using guessed type int dword_50B574; -// 50B578: using guessed type int dword_50B578; -// 50B57C: using guessed type int dword_50B57C; -// 50B580: using guessed type int dword_50B580; -// 50B584: using guessed type int dword_50B584; -// 50B588: using guessed type int dword_50B588; -// 50B58C: using guessed type int dword_50B58C; -// 50B590: using guessed type int dword_50B590; -// 50B594: using guessed type int dword_50B594; -// 50B598: using guessed type int dword_50B598; -// 50B59C: using guessed type int dword_50B59C; -// 50B5A0: using guessed type int dword_50B5A0; -// 50B5A4: using guessed type int dword_50B5A4; -// 50B5A8: using guessed type int dword_50B5A8; -// 50B5AC: using guessed type int dword_50B5AC; -// 50B5B0: using guessed type int dword_50B5B0; -// 50B5B4: using guessed type int dword_50B5B4; -// 50B5B8: using guessed type int dword_50B5B8; -// 50B5BC: using guessed type int dword_50B5BC; -// 50B5C0: using guessed type int dword_50B5C0; -// 50B5C4: using guessed type int dword_50B5C4; -// 50B5C8: using guessed type int dword_50B5C8; -// 50B5CC: using guessed type int dword_50B5CC; -// 50B5D0: using guessed type int dword_50B5D0; -// 50B5D4: using guessed type int dword_50B5D4; -// 50B5D8: using guessed type int dword_50B5D8; -// 50B5DC: using guessed type int dword_50B5DC; -// 50B5E0: using guessed type int dword_50B5E0; -// 50B5E4: using guessed type int dword_50B5E4; -// 50B5E8: using guessed type int dword_50B5E8; -// 50B5EC: using guessed type int dword_50B5EC; -// 50B5F0: using guessed type int dword_50B5F0; -// 50B5F4: using guessed type int dword_50B5F4; -// 50B5F8: using guessed type int dword_50B5F8; -// 50B5FC: using guessed type int dword_50B5FC; -// 50B600: using guessed type int dword_50B600; -// 50B604: using guessed type int dword_50B604; -// 50B608: using guessed type int dword_50B608; -// 50B60C: using guessed type int dword_50B60C; -// 50B610: using guessed type int dword_50B610; -// 50B614: using guessed type int dword_50B614; -// 50B618: using guessed type int dword_50B618; -// 50B61C: using guessed type int dword_50B61C; -// 50B620: using guessed type int dword_50B620; -// 50B624: using guessed type char byte_50B624; -// 50B640: using guessed type int `anonymous namespace'::timepunct_cache_w; -// 50B644: using guessed type int dword_50B644; -// 50B648: using guessed type int dword_50B648; -// 50B64C: using guessed type int dword_50B64C; -// 50B650: using guessed type int dword_50B650; -// 50B654: using guessed type int dword_50B654; -// 50B658: using guessed type int dword_50B658; -// 50B65C: using guessed type int dword_50B65C; -// 50B660: using guessed type int dword_50B660; -// 50B664: using guessed type int dword_50B664; -// 50B668: using guessed type int dword_50B668; -// 50B66C: using guessed type int dword_50B66C; -// 50B670: using guessed type int dword_50B670; -// 50B674: using guessed type int dword_50B674; -// 50B678: using guessed type int dword_50B678; -// 50B67C: using guessed type int dword_50B67C; -// 50B680: using guessed type int dword_50B680; -// 50B684: using guessed type int dword_50B684; -// 50B688: using guessed type int dword_50B688; -// 50B68C: using guessed type int dword_50B68C; -// 50B690: using guessed type int dword_50B690; -// 50B694: using guessed type int dword_50B694; -// 50B698: using guessed type int dword_50B698; -// 50B69C: using guessed type int dword_50B69C; -// 50B6A0: using guessed type int dword_50B6A0; -// 50B6A4: using guessed type int dword_50B6A4; -// 50B6A8: using guessed type int dword_50B6A8; -// 50B6AC: using guessed type int dword_50B6AC; -// 50B6B0: using guessed type int dword_50B6B0; -// 50B6B4: using guessed type int dword_50B6B4; -// 50B6B8: using guessed type int dword_50B6B8; -// 50B6BC: using guessed type int dword_50B6BC; -// 50B6C0: using guessed type int dword_50B6C0; -// 50B6C4: using guessed type int dword_50B6C4; -// 50B6C8: using guessed type int dword_50B6C8; -// 50B6CC: using guessed type int dword_50B6CC; -// 50B6D0: using guessed type int dword_50B6D0; -// 50B6D4: using guessed type int dword_50B6D4; -// 50B6D8: using guessed type int dword_50B6D8; -// 50B6DC: using guessed type int dword_50B6DC; -// 50B6E0: using guessed type int dword_50B6E0; -// 50B6E4: using guessed type int dword_50B6E4; -// 50B6E8: using guessed type int dword_50B6E8; -// 50B6EC: using guessed type int dword_50B6EC; -// 50B6F0: using guessed type int dword_50B6F0; -// 50B6F4: using guessed type int dword_50B6F4; -// 50B6F8: using guessed type int dword_50B6F8; -// 50B6FC: using guessed type int dword_50B6FC; -// 50B700: using guessed type int dword_50B700; -// 50B704: using guessed type char byte_50B704; -// 50B720: using guessed type int `anonymous namespace'::moneypunct_cache_cf; -// 50B724: using guessed type int dword_50B724; -// 50B728: using guessed type int dword_50B728; -// 50B72C: using guessed type int dword_50B72C; -// 50B730: using guessed type __int16 word_50B730; -// 50B732: using guessed type char byte_50B732; -// 50B734: using guessed type int dword_50B734; -// 50B738: using guessed type int dword_50B738; -// 50B73C: using guessed type int dword_50B73C; -// 50B740: using guessed type int dword_50B740; -// 50B744: using guessed type int dword_50B744; -// 50B748: using guessed type int dword_50B748; -// 50B74C: using guessed type int dword_50B74C; -// 50B750: using guessed type int dword_50B750; -// 50B754: using guessed type int dword_50B754; -// 50B763: using guessed type char byte_50B763; -// 50B780: using guessed type int `anonymous namespace'::moneypunct_cache_ct; -// 50B784: using guessed type int dword_50B784; -// 50B788: using guessed type int dword_50B788; -// 50B78C: using guessed type int dword_50B78C; -// 50B790: using guessed type __int16 word_50B790; -// 50B792: using guessed type char byte_50B792; -// 50B794: using guessed type int dword_50B794; -// 50B798: using guessed type int dword_50B798; -// 50B79C: using guessed type int dword_50B79C; -// 50B7A0: using guessed type int dword_50B7A0; -// 50B7A4: using guessed type int dword_50B7A4; -// 50B7A8: using guessed type int dword_50B7A8; -// 50B7AC: using guessed type int dword_50B7AC; -// 50B7B0: using guessed type int dword_50B7B0; -// 50B7B4: using guessed type int dword_50B7B4; -// 50B7C3: using guessed type char byte_50B7C3; -// 50B7E0: using guessed type int `anonymous namespace'::moneypunct_cache_wf; -// 50B7E4: using guessed type int dword_50B7E4; -// 50B7E8: using guessed type int dword_50B7E8; -// 50B7EC: using guessed type int dword_50B7EC; -// 50B7F0: using guessed type char byte_50B7F0; -// 50B7F2: using guessed type int dword_50B7F2; -// 50B7F8: using guessed type int dword_50B7F8; -// 50B7FC: using guessed type int dword_50B7FC; -// 50B800: using guessed type int dword_50B800; -// 50B804: using guessed type int dword_50B804; -// 50B808: using guessed type int dword_50B808; -// 50B80C: using guessed type int dword_50B80C; -// 50B810: using guessed type int dword_50B810; -// 50B814: using guessed type int dword_50B814; -// 50B818: using guessed type int dword_50B818; -// 50B832: using guessed type char byte_50B832; -// 50B840: using guessed type int `anonymous namespace'::moneypunct_cache_wt; -// 50B844: using guessed type int dword_50B844; -// 50B848: using guessed type int dword_50B848; -// 50B84C: using guessed type int dword_50B84C; -// 50B850: using guessed type char byte_50B850; -// 50B852: using guessed type int dword_50B852; -// 50B858: using guessed type int dword_50B858; -// 50B85C: using guessed type int dword_50B85C; -// 50B860: using guessed type int dword_50B860; -// 50B864: using guessed type int dword_50B864; -// 50B868: using guessed type int dword_50B868; -// 50B86C: using guessed type int dword_50B86C; -// 50B870: using guessed type int dword_50B870; -// 50B874: using guessed type int dword_50B874; -// 50B878: using guessed type int dword_50B878; -// 50B892: using guessed type char byte_50B892; -// 50B8A0: using guessed type __int16 `anonymous namespace'::name_c; -// 50B8C0: using guessed type _DWORD `anonymous namespace'::ctype_c[136]; -// 50BAE0: using guessed type _DWORD `anonymous namespace'::ctype_w[184]; -// 50BDC4: using guessed type int `anonymous namespace'::name_vec; -// 50BDC8: using guessed type int dword_50BDC8; -// 50BDCC: using guessed type int dword_50BDCC; -// 50BDD0: using guessed type int dword_50BDD0; -// 50BDD4: using guessed type int dword_50BDD4; -// 50BDD8: using guessed type int dword_50BDD8; -// 50BEA0: using guessed type _DWORD `anonymous namespace'::codecvt_c[3]; -// 50BEAC: using guessed type _DWORD `anonymous namespace'::codecvt_w[3]; -// 50BEBC: using guessed type int dword_50BEBC; -// 50BEC0: using guessed type int dword_50BEC0; -// 50BEC8: using guessed type int dword_50BEC8; -// 50BECC: using guessed type int dword_50BECC; -// 50BFA4: using guessed type int dword_50BFA4; -// 50BFAC: using guessed type int dword_50BFAC; -// 50BFB4: using guessed type int dword_50BFB4; -// 50BFBC: using guessed type int dword_50BFBC; -// 50C49C: using guessed type signed __int32 std::__timepunct::id; -// 50C4A0: using guessed type signed __int32 std::__timepunct::id; -// 50C5E0: using guessed type signed __int32 std::ctype::id; -// 50C5E4: using guessed type signed __int32 std::ctype::id; -// 50C608: using guessed type signed __int32 std::moneypunct::id; -// 50C60C: using guessed type signed __int32 std::moneypunct::id; -// 50C610: using guessed type signed __int32 std::moneypunct::id; -// 50C614: using guessed type signed __int32 std::moneypunct::id; -// 50C618: using guessed type signed __int32 std::collate::id; -// 50C61C: using guessed type signed __int32 std::collate::id; -// 50C620: using guessed type signed __int32 std::messages::id; -// 50C624: using guessed type signed __int32 std::messages::id; -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 50C630: using guessed type signed __int32 std::time_get>::id; -// 50C634: using guessed type signed __int32 std::time_get>::id; -// 50C638: using guessed type signed __int32 std::money_get>::id; -// 50C63C: using guessed type signed __int32 std::money_get>::id; -// 50C640: using guessed type signed __int32 std::money_put>::id; -// 50C644: using guessed type signed __int32 std::money_put>::id; -// 50C658: using guessed type signed __int32 std::codecvt::id; -// 50C65C: using guessed type signed __int32 std::codecvt::id; -// 50C668: using guessed type signed __int32 std::num_get>::id; -// 50C66C: using guessed type signed __int32 std::num_get>::id; -// 50C670: using guessed type signed __int32 std::num_put>::id; -// 50C674: using guessed type signed __int32 std::num_put>::id; -// 50C698: using guessed type signed __int32 std::time_put>::id; -// 50C69C: using guessed type signed __int32 std::time_put>::id; -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A618: using guessed type int (*off_51A618)(); -// 51A634: using guessed type int (*off_51A634)(); -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A6D0: using guessed type int (*off_51A6D0)(); -// 51A6FC: using guessed type int (*off_51A6FC)(); -// 51A728: using guessed type int (*off_51A728)(); -// 51A740: using guessed type int (*off_51A740)(); -// 51A758: using guessed type int (*off_51A758)(); -// 51A770: using guessed type int (*off_51A770)(); -// 51AF60: using guessed type int (*off_51AF60)(); -// 51AF70: using guessed type int (*off_51AF70)(); -// 51AF94: using guessed type int (*off_51AF94)(); -// 51AFA4: using guessed type int (*off_51AFA4)(); -// 51B084: using guessed type int (*off_51B084)(); -// 51B094: using guessed type int (*off_51B094)(); -// 51B0A4: using guessed type int (*off_51B0A4)(); -// 51B0B4: using guessed type int (*off_51B0B4)(); -// 51B488: using guessed type int (*off_51B488)(); -// 51B4B4: using guessed type int (*off_51B4B4)(); -// 51B4E0: using guessed type int (*off_51B4E0)(); -// 51B50C: using guessed type int (*off_51B50C)(); -// 51B5C8: using guessed type int (*off_51B5C8)(); -// 51B604: using guessed type int (*off_51B604)(); -// 51B640: using guessed type int (*off_51B640)(); -// 51B670: using guessed type int (*off_51B670)(); -// 51B794: using guessed type int (*off_51B794)(); -// 51B7A8: using guessed type int (*off_51B7A8)(); - -//----- (004D6D20) -------------------------------------------------------- -void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1) -{ - _DWORD *v1; // eax - volatile signed __int32 *v2; // ecx - signed __int32 v3; // eax - void (*v4)(void); // eax - _DWORD *v5; // eax - volatile signed __int32 *v6; // ecx - signed __int32 v7; // eax - void (*v8)(void); // eax - char *v9; // edx - unsigned int v11; // [esp+14h] [ebp-58h] - int v12; // [esp+14h] [ebp-58h] - unsigned int v13; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)a1[1]; - if ( v1 ) - { - if ( !a1[2] ) - goto LABEL_13; - v11 = 0; - do - { - v2 = (volatile signed __int32 *)v1[v11]; - if ( v2 ) - { - if ( _CRT_MT ) - { - v3 = _InterlockedExchangeAdd(v2 + 1, 0xFFFFFFFF); - } - else - { - v3 = *((_DWORD *)v2 + 1); - *((_DWORD *)v2 + 1) = v3 - 1; - } - if ( v3 == 1 ) - { - v4 = *(void (**)(void))(*v2 + 4); - if ( (char *)v4 == (char *)std::locale::facet::~facet ) - operator delete((void *)v2); - else - v4(); - } - v1 = (_DWORD *)a1[1]; - } - ++v11; - } - while ( a1[2] > v11 ); - if ( v1 ) -LABEL_13: - operator delete[](v1); - } - v5 = (_DWORD *)a1[3]; - if ( v5 ) - { - if ( !a1[2] ) - goto LABEL_26; - v13 = 0; - do - { - v6 = (volatile signed __int32 *)v5[v13]; - if ( v6 ) - { - if ( _CRT_MT ) - { - v7 = _InterlockedExchangeAdd(v6 + 1, 0xFFFFFFFF); - } - else - { - v7 = *((_DWORD *)v6 + 1); - *((_DWORD *)v6 + 1) = v7 - 1; - } - if ( v7 == 1 ) - { - v8 = *(void (**)(void))(*v6 + 4); - if ( (char *)v8 == (char *)std::locale::facet::~facet ) - operator delete((void *)v6); - else - v8(); - } - v5 = (_DWORD *)a1[3]; - } - ++v13; - } - while ( a1[2] > v13 ); - if ( v5 ) -LABEL_26: - operator delete[](v5); - } - v12 = 0; - v9 = (char *)a1[4]; - if ( v9 ) - { - do - { - if ( *(_DWORD *)&v9[v12] ) - { - operator delete[](*(void **)&v9[v12]); - v9 = (char *)a1[4]; - } - v12 += 4; - } - while ( v12 != 24 ); - if ( v9 ) - operator delete[](v9); - } -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004D6F90) -------------------------------------------------------- -int *const *std::locale::facet::_S_get_c_name() -{ - return &std::locale::facet::_S_c_name; -} - -//----- (004D6FA0) -------------------------------------------------------- -int std::locale::facet::_S_get_c_locale() -{ - int result; // eax - - if ( _CRT_MT ) - { - __gthr_win32_once((int)&std::locale::facet::_S_once, (void (*)(void))std::locale::facet::_S_initialize_once); - return std::locale::facet::_S_c_locale; - } - else - { - result = std::locale::facet::_S_c_locale; - if ( !std::locale::facet::_S_c_locale ) - { - std::locale::facet::_S_create_c_locale( - (std::locale::facet *)&std::locale::facet::_S_c_locale, - (int **)&std::locale::facet::_S_c_name); - return std::locale::facet::_S_c_locale; - } - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C5F0: using guessed type int std::locale::facet::_S_c_locale; - -//----- (004D7010) -------------------------------------------------------- -int __cdecl std::locale::facet::_S_clone_c_locale() -{ - return 0; -} - -//----- (004D7020) -------------------------------------------------------- -int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **a2) -{ - int **result; // eax - - result = a2; - *(_DWORD *)this = 0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - std::__throw_runtime_error((std::runtime_error *)"locale::facet::_S_create_c_locale name not valid"); - return result; -} - -//----- (004D7060) -------------------------------------------------------- -int **std::locale::facet::_S_initialize_once() -{ - return std::locale::facet::_S_create_c_locale( - (std::locale::facet *)&std::locale::facet::_S_c_locale, - (int **)&std::locale::facet::_S_c_name); -} -// 50C5F0: using guessed type int std::locale::facet::_S_c_locale; - -//----- (004D7090) -------------------------------------------------------- -std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this) -{ - std::locale::facet *result; // eax - - result = this; - *(_DWORD *)this = 0; - return result; -} - -//----- (004D70A0) -------------------------------------------------------- -int __cdecl std::locale::facet::_S_lc_ctype_c_locale() -{ - return 0; -} - -//----- (004D70B0) -------------------------------------------------------- -void __fastcall std::locale::facet::~facet(void *Block) -{ - operator delete(Block); -} - -//----- (004D70D0) -------------------------------------------------------- -std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2) -{ - _DWORD *locale_mutex; // eax - volatile signed __int32 *v3; // edx - int v4; // eax - _DWORD *exception; // eax - std::locale::_Impl *v7; // [esp+4h] [ebp-74h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-60h] - int v9; // [esp+54h] [ebp-24h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v11; // [esp+60h] [ebp-18h] BYREF - - std::locale::_S_initialize(); - locale_mutex = `anonymous namespace'::get_locale_mutex(); - v9 = (int)locale_mutex; - if ( !_CRT_MT ) - { - lpuexcpt = (struct _Unwind_Exception *)std::locale::_S_global; - v3 = *a2; - v4 = std::locale::_S_classic; - if ( *a2 == (volatile signed __int32 *)std::locale::_S_classic ) - goto LABEL_4; - goto LABEL_3; - } - if ( __gthr_win32_mutex_lock((int)locale_mutex) ) - __gnu_cxx::__throw_concurrence_lock_error(); - lpuexcpt = (struct _Unwind_Exception *)std::locale::_S_global; - v3 = *a2; - v4 = std::locale::_S_classic; - if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) - { - if ( !_CRT_MT ) - { -LABEL_3: - ++*v3; - v4 = (int)v3; - goto LABEL_4; - } - _InterlockedAdd(v3, 1u); - v4 = (int)*a2; - } -LABEL_4: - std::locale::_S_global = v4; - std::locale::name[abi:cxx11]((int *)Block, (int)a2); - if ( std::string::compare((int)Block, "*") ) - setlocale(0, (const char *)Block[0]); - if ( Block[0] != &v11 ) - operator delete(Block[0]); - if ( _CRT_MT && __gthr_win32_mutex_unlock(v9) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_519D0C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - std::locale::locale(this, lpuexcpt, v7); - return this; -} -// 4D7194: variable 'v7' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50C5E8: using guessed type int std::locale::_S_classic; -// 50C604: using guessed type int std::locale::_S_global; -// 515CD4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 519D0C: using guessed type void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (004D72B0) -------------------------------------------------------- -_DWORD *std::locale::classic() -{ - std::locale::_Impl *v1; // [esp+4h] [ebp-18h] - std::locale::_Impl *v2; // [esp+4h] [ebp-18h] - - if ( _CRT_MT ) - { - __gthr_win32_once((int)&std::locale::_S_once, (void (*)(void))std::locale::_S_initialize_once); - if ( std::locale::_S_classic ) - return &`anonymous namespace'::c_locale; - } - else if ( std::locale::_S_classic ) - { - return &`anonymous namespace'::c_locale; - } - std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, (unsigned int)v1); - std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; - std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; - std::locale::locale(&`anonymous namespace'::c_locale, (std::locale *)`anonymous namespace'::c_locale_impl, v2); - return &`anonymous namespace'::c_locale; -} -// 4D72F9: variable 'v1' is possibly undefined -// 4D7321: variable 'v2' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 50B3B4: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; -// 50BDC0: using guessed type _DWORD `anonymous namespace'::c_locale; -// 50C5E8: using guessed type int std::locale::_S_classic; -// 50C604: using guessed type int std::locale::_S_global; - -//----- (004D7340) -------------------------------------------------------- -std::locale *__userpurge std::locale::locale@(_DWORD *a1@, std::locale *this, std::locale::_Impl *a3) -{ - std::locale *result; // eax - - result = this; - *a1 = this; - return result; -} - -//----- (004D7350) -------------------------------------------------------- -volatile signed __int32 *__userpurge std::locale::locale@( - volatile signed __int32 **a1@, - volatile signed __int32 **this, - const std::locale *a3) -{ - volatile signed __int32 *result; // eax - - result = *this; - *a1 = *this; - if ( result != (volatile signed __int32 *)std::locale::_S_classic ) - { - if ( _CRT_MT ) - _InterlockedAdd(result, 1u); - else - ++*result; - } - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C5E8: using guessed type int std::locale::_S_classic; - -//----- (004D7380) -------------------------------------------------------- -void __fastcall std::locale::locale(_DWORD *a1) -{ - int v1; // eax - _DWORD *v2; // eax - _DWORD *exception; // eax - _DWORD *locale_mutex; // [esp+18h] [ebp-44h] - - *a1 = 0; - std::locale::_S_initialize(); - v1 = std::locale::_S_global; - *a1 = std::locale::_S_global; - if ( v1 != std::locale::_S_classic ) - { - locale_mutex = `anonymous namespace'::get_locale_mutex(); - v2 = (_DWORD *)std::locale::_S_global; - if ( !_CRT_MT ) - goto LABEL_3; - if ( __gthr_win32_mutex_lock((int)locale_mutex) ) - __gnu_cxx::__throw_concurrence_lock_error(); - v2 = (_DWORD *)std::locale::_S_global; - if ( _CRT_MT ) - { - _InterlockedAdd((volatile signed __int32 *)std::locale::_S_global, 1u); - v2 = (_DWORD *)std::locale::_S_global; - } - else - { -LABEL_3: - ++*v2; - } - *a1 = v2; - if ( _CRT_MT ) - { - if ( __gthr_win32_mutex_unlock((int)locale_mutex) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_519D0C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); - } - } - } -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C5E8: using guessed type int std::locale::_S_classic; -// 50C604: using guessed type int std::locale::_S_global; -// 515CD4: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; -// 519D0C: using guessed type void (__cdecl *off_519D0C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); - -//----- (004D74D0) -------------------------------------------------------- -void __fastcall std::locale::~locale(_DWORD **a1) -{ - _DWORD *Block; // ebx - int v2; // eax - - Block = *a1; - if ( *a1 != (_DWORD *)std::locale::_S_classic ) - { - if ( !_CRT_MT ) - { - v2 = (*Block)--; - if ( v2 != 1 ) - return; -LABEL_6: - std::locale::_Impl::~_Impl(Block); - operator delete(Block); - return; - } - if ( _InterlockedExchangeAdd(Block, 0xFFFFFFFF) == 1 ) - goto LABEL_6; - } -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C5E8: using guessed type int std::locale::_S_classic; - -//----- (004D7530) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::locale::operator=( - volatile signed __int32 **this, - volatile signed __int32 **a2) -{ - volatile signed __int32 **result; // eax - volatile signed __int32 *v3; // edx - volatile signed __int32 *v4; // ecx - volatile signed __int32 *Block; // ebx - volatile signed __int32 v6; // edx - volatile signed __int32 **v7; // [esp+1Ch] [ebp-10h] - - result = this; - v3 = (volatile signed __int32 *)std::locale::_S_classic; - v4 = *a2; - if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) - { - if ( _CRT_MT ) - { - _InterlockedAdd(v4, 1u); - v3 = (volatile signed __int32 *)std::locale::_S_classic; - } - else - { - ++*v4; - } - } - Block = *result; - if ( *result == v3 ) - goto LABEL_7; - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(Block, 0xFFFFFFFF) != 1 ) - goto LABEL_7; - } - else - { - v6 = (*Block)--; - if ( v6 != 1 ) - { -LABEL_7: - *result = *a2; - return result; - } - } - v7 = result; - std::locale::_Impl::~_Impl(Block); - operator delete((void *)Block); - result = v7; - *v7 = *a2; - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C5E8: using guessed type int std::locale::_S_classic; - -//----- (004D75D0) -------------------------------------------------------- -char *__thiscall std::vector>::_M_realloc_insert const&>( - void **this, - char *a2, - _DWORD *a3) -{ - int v3; // edx - int v4; // eax - unsigned int v5; // ebx - _DWORD *v6; // edi - char *i; // esi - volatile signed __int32 **v8; // ecx - _DWORD *v9; // ecx - volatile signed __int32 **v10; // ecx - char *result; // eax - char *v12; // [esp+10h] [ebp-28h] - char *Block; // [esp+18h] [ebp-20h] - char *v15; // [esp+1Ch] [ebp-1Ch] - - v12 = (char *)this[1]; - Block = (char *)*this; - v3 = (v12 - (_BYTE *)*this) >> 3; - if ( v3 == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = (v12 - (_BYTE *)*this) >> 3; - v5 = v3 + v4; - if ( __CFADD__(v3, v4) ) - { - v5 = 0xFFFFFFF; -LABEL_11: - v15 = (char *)operator new(8 * v5); - goto LABEL_12; - } - v15 = 0; - if ( v5 ) - { - if ( v5 > 0xFFFFFFF ) - v5 = 0xFFFFFFF; - goto LABEL_11; - } -LABEL_12: - std::__shared_ptr::__shared_ptr(&v15[a2 - Block], a3); - v6 = v15; - for ( i = Block; ; i += 8 ) - { - v6 += 2; - if ( a2 == i ) - break; - std::__shared_ptr::__shared_ptr(v6 - 2, i); - v8 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); - } - while ( i != v12 ) - { - v9 = v6; - v6 += 2; - std::__shared_ptr::__shared_ptr(v9, i); - v10 = (volatile signed __int32 **)(i + 4); - i += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); - } - if ( Block ) - operator delete(Block); - this[1] = v6; - *this = v15; - result = &v15[8 * v5]; - this[2] = result; - return result; -} - -//----- (004D76DC) -------------------------------------------------------- -void __thiscall std::vector>::push_back(void **this, _DWORD *a2) -{ - char *v3; // ecx - - v3 = (char *)this[1]; - if ( v3 == this[2] ) - { - std::vector>::_M_realloc_insert const&>( - this, - v3, - a2); - } - else - { - std::__shared_ptr::__shared_ptr(v3, a2); - this[1] = (char *)this[1] + 8; - } -} - -//----- (004D7718) -------------------------------------------------------- -char *__thiscall std::vector>::_M_realloc_insert const&>( - void **this, - char *a2, - _DWORD *a3) -{ - int v3; // edx - int v4; // eax - unsigned int v5; // ebx - _DWORD *v6; // edi - char *i; // esi - volatile signed __int32 **v8; // ecx - _DWORD *v9; // ecx - volatile signed __int32 **v10; // ecx - char *result; // eax - char *v12; // [esp+10h] [ebp-28h] - char *Block; // [esp+18h] [ebp-20h] - char *v15; // [esp+1Ch] [ebp-1Ch] - - v12 = (char *)this[1]; - Block = (char *)*this; - v3 = (v12 - (_BYTE *)*this) >> 3; - if ( v3 == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = (v12 - (_BYTE *)*this) >> 3; - v5 = v3 + v4; - if ( __CFADD__(v3, v4) ) - { - v5 = 0xFFFFFFF; -LABEL_11: - v15 = (char *)operator new(8 * v5); - goto LABEL_12; - } - v15 = 0; - if ( v5 ) - { - if ( v5 > 0xFFFFFFF ) - v5 = 0xFFFFFFF; - goto LABEL_11; - } -LABEL_12: - std::__shared_ptr::__shared_ptr(&v15[a2 - Block], a3); - v6 = v15; - for ( i = Block; ; i += 8 ) - { - v6 += 2; - if ( a2 == i ) - break; - std::__shared_ptr::__shared_ptr(v6 - 2, i); - v8 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); - } - while ( i != v12 ) - { - v9 = v6; - v6 += 2; - std::__shared_ptr::__shared_ptr(v9, i); - v10 = (volatile signed __int32 **)(i + 4); - i += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); - } - if ( Block ) - operator delete(Block); - this[1] = v6; - *this = v15; - result = &v15[8 * v5]; - this[2] = result; - return result; -} - -//----- (004D7824) -------------------------------------------------------- -char *__thiscall std::vector>::push_back(void **this, _DWORD *a2) -{ - char *v3; // ecx - char *result; // eax - - v3 = (char *)this[1]; - if ( v3 == this[2] ) - return std::vector>::_M_realloc_insert const&>( - this, - v3, - a2); - result = (char *)std::__shared_ptr::__shared_ptr(v3, a2); - this[1] = (char *)this[1] + 8; - return result; -} - -//----- (004D7860) -------------------------------------------------------- -void __thiscall std::vector>::vector(_DWORD *this, _DWORD *a2) -{ - size_t v3; // esi - _DWORD *v4; // ecx - _DWORD *v5; // esi - _DWORD *i; // edi - int v7; // ecx - _DWORD *v8; // [esp+0h] [ebp-28h] - - v3 = a2[1] - *a2; - *this = 0; - this[1] = 0; - this[2] = 0; - if ( v3 ) - { - if ( v3 > 0x7FFFFFF8 ) - std::__throw_bad_alloc(); - v4 = operator new(v3); - } - else - { - v4 = 0; - } - *this = v4; - this[1] = v4; - this[2] = (char *)v4 + v3; - v5 = (_DWORD *)a2[1]; - for ( i = (_DWORD *)*a2; i != v5; i += 2 ) - { - v8 = i; - std::__shared_ptr::__shared_ptr(v4, v8); - v4 = (_DWORD *)(v7 + 8); - } - this[1] = v4; -} -// 4D78C2: variable 'v7' is possibly undefined - -//----- (004D78D8) -------------------------------------------------------- -void __fastcall std::vector>::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - volatile signed __int32 **v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 8 ) - { - v4 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (004D7910) -------------------------------------------------------- -char *__thiscall std::vector>::_M_realloc_insert const&>( - void **this, - char *a2, - _DWORD *a3) -{ - int v3; // edx - int v4; // eax - unsigned int v5; // ebx - _DWORD *v6; // edi - char *i; // esi - volatile signed __int32 **v8; // ecx - _DWORD *v9; // ecx - volatile signed __int32 **v10; // ecx - char *result; // eax - char *v12; // [esp+10h] [ebp-28h] - char *Block; // [esp+18h] [ebp-20h] - char *v15; // [esp+1Ch] [ebp-1Ch] - - v12 = (char *)this[1]; - Block = (char *)*this; - v3 = (v12 - (_BYTE *)*this) >> 3; - if ( v3 == 0xFFFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = (v12 - (_BYTE *)*this) >> 3; - v5 = v3 + v4; - if ( __CFADD__(v3, v4) ) - { - v5 = 0xFFFFFFF; -LABEL_11: - v15 = (char *)operator new(8 * v5); - goto LABEL_12; - } - v15 = 0; - if ( v5 ) - { - if ( v5 > 0xFFFFFFF ) - v5 = 0xFFFFFFF; - goto LABEL_11; - } -LABEL_12: - std::__shared_ptr::__shared_ptr(&v15[a2 - Block], a3); - v6 = v15; - for ( i = Block; ; i += 8 ) - { - v6 += 2; - if ( a2 == i ) - break; - std::__shared_ptr::__shared_ptr(v6 - 2, i); - v8 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v8); - } - while ( i != v12 ) - { - v9 = v6; - v6 += 2; - std::__shared_ptr::__shared_ptr(v9, i); - v10 = (volatile signed __int32 **)(i + 4); - i += 8; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v10); - } - if ( Block ) - operator delete(Block); - this[1] = v6; - *this = v15; - result = &v15[8 * v5]; - this[2] = result; - return result; -} - -//----- (004D7A1C) -------------------------------------------------------- -void __thiscall std::vector>::push_back(void **this, _DWORD *a2) -{ - char *v3; // ecx - - v3 = (char *)this[1]; - if ( v3 == this[2] ) - { - std::vector>::_M_realloc_insert const&>( - this, - v3, - a2); - } - else - { - std::__shared_ptr::__shared_ptr(v3, a2); - this[1] = (char *)this[1] + 8; - } -} - -//----- (004D7A58) -------------------------------------------------------- -void __fastcall std::vector>::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - volatile signed __int32 **v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 8 ) - { - v4 = (volatile signed __int32 **)(i + 4); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (004D7A90) -------------------------------------------------------- -void __thiscall std::vector::_M_realloc_insert( - struct _Unwind_Exception **this, - void **a2, - _DWORD *a3) -{ - int v3; // eax - int v4; // edx - int v5; // eax - struct _Unwind_Exception *v6; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *Block; // [esp+18h] [ebp-50h] - unsigned int v9; // [esp+1Ch] [ebp-4Ch] - struct _Unwind_Exception *v10; // [esp+20h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *i; // [esp+28h] [ebp-40h] - - v6 = this[1]; - Block = *this; - v3 = -1431655765 * ((v6 - *this) >> 2); - if ( v3 == 178956970 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -1431655765 * ((v6 - Block) >> 2); - v9 = v4 - 1431655765 * ((v6 - Block) >> 2); - if ( __CFADD__(v4, v3) ) - { - v9 = 178956970; -LABEL_11: - v10 = (struct _Unwind_Exception *)operator new(12 * v9); - goto LABEL_12; - } - v10 = 0; - if ( v9 ) - { - v5 = 178956970; - if ( v9 <= 0xAAAAAAA ) - v5 = v4 - 1431655765 * ((v6 - Block) >> 2); - v9 = v5; - goto LABEL_11; - } -LABEL_12: - std::vector>::vector( - (struct _Unwind_Exception *)((char *)v10 + (char *)a2 - (char *)Block), - a3); - lpuexcpt = v10; - for ( i = Block; ; i = (struct _Unwind_Exception *)((char *)i + 12) ) - { - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 12); - if ( a2 == (void **)i ) - break; - *((_DWORD *)lpuexcpt - 3) = *(_DWORD *)i; - *((_DWORD *)lpuexcpt - 2) = *((_DWORD *)i + 1); - *((_DWORD *)lpuexcpt - 1) = *((_DWORD *)i + 2); - *((_DWORD *)i + 2) = 0; - *((_DWORD *)i + 1) = 0; - *(_DWORD *)i = 0; - std::vector>::~vector((void **)i); - } - while ( v6 != i ) - { - *(_DWORD *)lpuexcpt = *(_DWORD *)i; - *((_DWORD *)lpuexcpt + 1) = *((_DWORD *)i + 1); - *((_DWORD *)lpuexcpt + 2) = *((_DWORD *)i + 2); - *((_DWORD *)i + 2) = 0; - *((_DWORD *)i + 1) = 0; - *(_DWORD *)i = 0; - std::vector>::~vector((void **)i); - i = (struct _Unwind_Exception *)((char *)i + 12); - lpuexcpt = (struct _Unwind_Exception *)((char *)lpuexcpt + 12); - } - if ( Block ) - operator delete(Block); - *this = v10; - this[1] = lpuexcpt; - this[2] = (struct _Unwind_Exception *)((char *)v10 + 12 * v9); -} - -//----- (004D7CB4) -------------------------------------------------------- -void __thiscall std::vector::push_back(int this, _DWORD *a2) -{ - void **v3; // ecx - - v3 = *(void ***)(this + 4); - if ( v3 == *(void ***)(this + 8) ) - { - std::vector::_M_realloc_insert( - (struct _Unwind_Exception **)this, - v3, - a2); - } - else - { - std::vector>::vector(v3, a2); - *(_DWORD *)(this + 4) += 12; - } -} - -//----- (004D7CF0) -------------------------------------------------------- -void __fastcall std::vector::~vector(void ***a1) -{ - void **v2; // edi - void **i; // esi - void **v4; // ecx - - v2 = a1[1]; - for ( i = *a1; v2 != i; i += 3 ) - { - v4 = i; - std::vector>::~vector(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (004D7D28) -------------------------------------------------------- -char *__thiscall std::vector::_M_realloc_insert(char **this, char *a2, int *a3) -{ - int v3; // eax - int v4; // edx - bool v6; // cf - unsigned int v7; // eax - bool v8; // cc - int v9; // eax - char *v10; // edi - int *v11; // ecx - _DWORD *v12; // eax - char *v13; // esi - char *result; // eax - char *v15; // [esp+10h] [ebp-28h] - char *Block; // [esp+14h] [ebp-24h] - char *v17; // [esp+18h] [ebp-20h] - int v18; // [esp+1Ch] [ebp-1Ch] - - v15 = this[1]; - Block = *this; - v3 = -373475417 * ((v15 - *this) >> 2); - if ( v3 == 23342213 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -373475417 * ((v15 - Block) >> 2); - v6 = __CFADD__(v4, v3); - v7 = v4 - 373475417 * ((v15 - Block) >> 2); - v18 = v7; - if ( v6 ) - { - v18 = 23342213; - } - else - { - v17 = 0; - if ( !v7 ) - goto LABEL_12; - v8 = v7 <= 0x1642C85; - v9 = 23342213; - if ( v8 ) - v9 = v4 - 373475417 * ((v15 - Block) >> 2); - v18 = v9; - } - v17 = (char *)operator new(92 * v18); -LABEL_12: - v10 = &v17[a2 - Block]; - v11 = (int *)(v10 + 8); - v10 += 28; - *((_DWORD *)v10 - 7) = *a3; - *((_DWORD *)v10 - 6) = a3[1]; - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(v11, a3[2]); - *((_DWORD *)v10 - 4) = a3[3]; - *((_DWORD *)v10 - 3) = a3[4]; - *((_DWORD *)v10 - 2) = a3[5]; - *((_DWORD *)v10 - 1) = a3[6]; - qmemcpy(v10, a3 + 7, 0x40u); - v12 = std::__relocate_a_1>(Block, a2, v17); - v13 = (char *)std::__relocate_a_1>(a2, v15, v12 + 23); - if ( Block ) - operator delete(Block); - this[1] = v13; - *this = v17; - result = &v17[92 * v18]; - this[2] = result; - return result; -} - -//----- (004D7E44) -------------------------------------------------------- -char *__thiscall std::vector::push_back(int this, int *a2) -{ - int v3; // edi - int v4; // ecx - int v5; // eax - int *v6; // edi - char *result; // eax - - v3 = *(_DWORD *)(this + 4); - if ( v3 == *(_DWORD *)(this + 8) ) - return std::vector::_M_realloc_insert((char **)this, (char *)v3, a2); - v4 = a2[2]; - *(_DWORD *)v3 = *a2; - v5 = a2[1]; - *(_DWORD *)(v3 + 8) = v4; - *(_DWORD *)(v3 + 4) = v5; - if ( v4 ) - std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_add_ref_copy(v4); - v6 = (int *)(v3 + 28); - *(v6 - 4) = a2[3]; - *(v6 - 3) = a2[4]; - *(v6 - 2) = a2[5]; - result = (char *)a2[6]; - *(v6 - 1) = (int)result; - qmemcpy(v6, a2 + 7, 0x40u); - *(_DWORD *)(this + 4) += 92; - return result; -} - -//----- (004D7EB8) -------------------------------------------------------- -void __fastcall std::vector::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - volatile signed __int32 **v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 92 ) - { - v4 = (volatile signed __int32 **)(i + 8); - std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (004D7EF0) -------------------------------------------------------- -_DWORD *__thiscall std::vector::emplace_back(char **this, _DWORD *a2) -{ - char *v3; // ecx - _DWORD *result; // eax - - v3 = this[1]; - if ( v3 == this[2] ) - return (_DWORD *)std::vector::_M_realloc_insert(this, v3, a2); - result = std::string::basic_string(v3, a2); - this[1] += 24; - return result; -} - -//----- (004D7F2C) -------------------------------------------------------- -void __thiscall std::vector::_M_realloc_insert(char **this, char *a2, int a3) -{ - char *v3; // ecx - char *v4; // [esp+10h] [ebp-58h] - char *v5; // [esp+14h] [ebp-54h] - unsigned int v6; // [esp+18h] [ebp-50h] - char *Block; // [esp+1Ch] [ebp-4Ch] - char *v9; // [esp+24h] [ebp-44h] - int v10; // [esp+28h] [ebp-40h] - char *i; // [esp+28h] [ebp-40h] - - v6 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); - Block = *this; - v4 = this[1]; - v10 = a2 - *this; - if ( v6 ) - { - if ( v6 > 0x5555555 ) - std::__throw_bad_alloc(); - v9 = (char *)operator new(24 * v6); - } - else - { - v9 = 0; - } - std::string::basic_string(&v9[v10], a3); - v3 = v9; - for ( i = Block; ; i += 24 ) - { - v5 = v3 + 24; - if ( a2 == i ) - break; - std::string::basic_string(v3, i); - std::string::_M_dispose((void **)i); - v3 = v5; - } - while ( v4 != i ) - { - std::string::basic_string(v5, i); - std::string::_M_dispose((void **)i); - i += 24; - v5 += 24; - } - if ( Block ) - operator delete(Block); - *this = v9; - this[1] = v5; - this[2] = &v9[24 * v6]; -} - -//----- (004D80E0) -------------------------------------------------------- -unsigned int __thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3) -{ - int v4; // edi - _DWORD *v5; // ebx - char *v6; // edi - _DWORD *i; // ecx - void **v8; // ecx - void **v9; // ecx - unsigned int result; // eax - char *v11; // [esp+10h] [ebp-28h] - _DWORD *v12; // [esp+14h] [ebp-24h] - char *Block; // [esp+18h] [ebp-20h] - unsigned int v14; // [esp+1Ch] [ebp-1Ch] - - v14 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); - Block = *this; - v4 = a2 - *this; - v11 = this[1]; - if ( v14 ) - { - if ( v14 > 0x5555555 ) - std::__throw_bad_alloc(); - v5 = operator new(24 * v14); - } - else - { - v5 = 0; - } - std::string::basic_string((_DWORD *)((char *)v5 + v4), a3); - v6 = Block; - for ( i = v5; ; i = v12 ) - { - v12 = i + 6; - if ( a2 == v6 ) - break; - std::string::basic_string(i, v6); - v8 = (void **)v6; - v6 += 24; - std::string::_M_dispose(v8); - } - while ( v11 != v6 ) - { - std::string::basic_string(v12, v6); - v9 = (void **)v6; - v6 += 24; - std::string::_M_dispose(v9); - v12 += 6; - } - if ( Block ) - operator delete(Block); - *this = (char *)v5; - this[1] = (char *)v12; - result = 24 * v14; - this[2] = (char *)&v5[6 * v14]; - return result; -} - -//----- (004D81C0) -------------------------------------------------------- -void __thiscall std::vector::push_back(char **this, int a2) -{ - char *v3; // ecx - - v3 = this[1]; - if ( v3 == this[2] ) - { - std::vector::_M_realloc_insert(this, v3, a2); - } - else - { - std::string::basic_string(v3, a2); - this[1] += 24; - } -} - -//----- (004D81FC) -------------------------------------------------------- -void __fastcall std::vector::~vector(void ***a1) -{ - void **v2; // edi - void **i; // esi - void **v4; // ecx - - v2 = a1[1]; - for ( i = *a1; v2 != i; i += 6 ) - { - v4 = i; - std::string::_M_dispose(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (004D8234) -------------------------------------------------------- -char *__thiscall std::vector>::emplace_back>( - void **this, - _DWORD *a2) -{ - char *v3; // ecx - _DWORD *v4; // ecx - char *result; // eax - - v3 = (char *)this[1]; - if ( v3 == this[2] ) - return std::vector>::_M_realloc_insert>( - this, - v3, - a2); - v4 = v3 + 4; - *(v4 - 1) = *a2; - result = (char *)std::string::basic_string(v4, a2 + 1); - this[1] = (char *)this[1] + 28; - return result; -} - -//----- (004D827C) -------------------------------------------------------- -char *__thiscall std::vector>::_M_realloc_insert>( - void **this, - char *a2, - _DWORD *a3) -{ - int v3; // ebx - int v4; // eax - bool v6; // cf - unsigned int v7; // ebx - char *v8; // eax - char *v9; // esi - char *result; // eax - void **v11; // edx - void **v12; // edx - char *v13; // [esp+1Ch] [ebp-2Ch] - char *v14; // [esp+1Ch] [ebp-2Ch] - char *v15; // [esp+20h] [ebp-28h] - void **v16; // [esp+20h] [ebp-28h] - void **v17; // [esp+20h] [ebp-28h] - char *v18; // [esp+24h] [ebp-24h] - char *v19; // [esp+24h] [ebp-24h] - char *Block; // [esp+28h] [ebp-20h] - char *v21; // [esp+2Ch] [ebp-1Ch] - - v18 = (char *)this[1]; - Block = (char *)*this; - v3 = -1227133513 * ((v18 - (_BYTE *)*this) >> 2); - if ( v3 == 76695844 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -1227133513 * ((v18 - (_BYTE *)*this) >> 2); - v6 = __CFADD__(v4, v3); - v7 = v4 - 1227133513 * ((v18 - (_BYTE *)*this) >> 2); - v15 = (char *)(a2 - Block); - if ( v6 ) - { - v7 = 76695844; -LABEL_11: - v21 = (char *)operator new(28 * v7); - goto LABEL_12; - } - v21 = 0; - if ( v7 ) - { - if ( v7 > 0x4924924 ) - v7 = 76695844; - goto LABEL_11; - } -LABEL_12: - *(_DWORD *)&v15[(_DWORD)v21] = *a3; - std::string::basic_string(&v15[(_DWORD)v21 + 4], a3 + 1); - v8 = v21; - v9 = Block; - while ( 1 ) - { - result = v8 + 28; - if ( a2 == v9 ) - break; - v13 = result; - *((_DWORD *)result - 7) = *(_DWORD *)v9; - v11 = (void **)(v9 + 4); - v9 += 28; - v16 = v11; - std::string::basic_string((_DWORD *)result - 6, v11); - std::string::_M_dispose(v16); - v8 = v13; - } - while ( v9 != v18 ) - { - v14 = result; - *(_DWORD *)result = *(_DWORD *)v9; - v12 = (void **)(v9 + 4); - v9 += 28; - v17 = v12; - std::string::basic_string((_DWORD *)result + 1, v12); - std::string::_M_dispose(v17); - result = v14 + 28; - } - if ( Block ) - { - v19 = result; - operator delete(Block); - result = v19; - } - this[1] = result; - *this = v21; - this[2] = &v21[28 * v7]; - return result; -} - -//----- (004D83BC) -------------------------------------------------------- -void __fastcall std::vector>::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - void **v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 28 ) - { - v4 = (void **)(i + 4); - std::string::_M_dispose(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (004D83F4) -------------------------------------------------------- -void __thiscall std::vector>>::emplace_back>>( - char **this, - _DWORD *a2) -{ - char *v3; // ecx - - v3 = this[1]; - if ( v3 == this[2] ) - { - std::vector>>::_M_realloc_insert>>( - this, - v3, - a2); - } - else - { - std::pair>::pair(v3, a2); - this[1] += 32; - } -} - -//----- (004D8430) -------------------------------------------------------- -char *__thiscall std::vector>>::_M_realloc_insert>>( - char **this, - char *a2, - _DWORD *a3) -{ - int v3; // edx - int v4; // eax - unsigned int v6; // ebx - char *v7; // edi - char *i; // ecx - int v9; // ecx - int v10; // ecx - char *result; // eax - char *v12; // [esp+10h] [ebp-28h] - char *v13; // [esp+14h] [ebp-24h] - char *Block; // [esp+18h] [ebp-20h] - char *v15; // [esp+1Ch] [ebp-1Ch] - - v12 = this[1]; - Block = *this; - v3 = (v12 - *this) >> 5; - if ( v3 == 0x3FFFFFF ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = (v12 - *this) >> 5; - v6 = v3 + v4; - if ( __CFADD__(v3, v4) ) - { - v6 = 0x3FFFFFF; -LABEL_11: - v15 = (char *)operator new(32 * v6); - goto LABEL_12; - } - v15 = 0; - if ( v6 ) - { - if ( v6 > 0x3FFFFFF ) - v6 = 0x3FFFFFF; - goto LABEL_11; - } -LABEL_12: - std::pair>::pair(&v15[a2 - Block], a3); - v7 = Block; - for ( i = v15; ; i = v13 ) - { - v13 = i + 32; - if ( a2 == v7 ) - break; - std::pair>::pair(i, v7); - v9 = (int)v7; - v7 += 32; - std::pair>::~pair(v9); - } - while ( v7 != v12 ) - { - std::pair>::pair(v13, v7); - v10 = (int)v7; - v7 += 32; - std::pair>::~pair(v10); - v13 += 32; - } - if ( Block ) - operator delete(Block); - this[2] = &v15[32 * v6]; - *this = v15; - result = v13; - this[1] = v13; - return result; -} - -//----- (004D853C) -------------------------------------------------------- -char *__thiscall std::vector>::_M_realloc_insert>( - void **this, - char *a2, - _DWORD *a3) -{ - int v3; // ebx - int v4; // eax - bool v6; // cf - unsigned int v7; // ebx - char *v8; // eax - char *v9; // esi - char *result; // eax - void **v11; // edx - void **v12; // edx - char *v13; // [esp+1Ch] [ebp-2Ch] - char *v14; // [esp+1Ch] [ebp-2Ch] - char *v15; // [esp+20h] [ebp-28h] - void **v16; // [esp+20h] [ebp-28h] - void **v17; // [esp+20h] [ebp-28h] - char *v18; // [esp+24h] [ebp-24h] - char *v19; // [esp+24h] [ebp-24h] - char *Block; // [esp+28h] [ebp-20h] - char *v21; // [esp+2Ch] [ebp-1Ch] - - v18 = (char *)this[1]; - Block = (char *)*this; - v3 = -1227133513 * ((v18 - (_BYTE *)*this) >> 2); - if ( v3 == 76695844 ) - std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); - v4 = 1; - if ( v3 ) - v4 = -1227133513 * ((v18 - (_BYTE *)*this) >> 2); - v6 = __CFADD__(v4, v3); - v7 = v4 - 1227133513 * ((v18 - (_BYTE *)*this) >> 2); - v15 = (char *)(a2 - Block); - if ( v6 ) - { - v7 = 76695844; -LABEL_11: - v21 = (char *)operator new(28 * v7); - goto LABEL_12; - } - v21 = 0; - if ( v7 ) - { - if ( v7 > 0x4924924 ) - v7 = 76695844; - goto LABEL_11; - } -LABEL_12: - *(_DWORD *)&v15[(_DWORD)v21] = *a3; - std::string::basic_string(&v15[(_DWORD)v21 + 4], a3 + 1); - v8 = v21; - v9 = Block; - while ( 1 ) - { - result = v8 + 28; - if ( a2 == v9 ) - break; - v13 = result; - *((_DWORD *)result - 7) = *(_DWORD *)v9; - v11 = (void **)(v9 + 4); - v9 += 28; - v16 = v11; - std::string::basic_string((_DWORD *)result - 6, v11); - std::string::_M_dispose(v16); - v8 = v13; - } - while ( v9 != v18 ) - { - v14 = result; - *(_DWORD *)result = *(_DWORD *)v9; - v12 = (void **)(v9 + 4); - v9 += 28; - v17 = v12; - std::string::basic_string((_DWORD *)result + 1, v12); - std::string::_M_dispose(v17); - result = v14 + 28; - } - if ( Block ) - { - v19 = result; - operator delete(Block); - result = v19; - } - this[1] = result; - *this = v21; - this[2] = &v21[28 * v7]; - return result; -} - -//----- (004D867C) -------------------------------------------------------- -void __fastcall std::vector>::~vector(void **a1) -{ - char *v2; // edi - char *i; // esi - void **v4; // ecx - - v2 = (char *)a1[1]; - for ( i = (char *)*a1; v2 != i; i += 28 ) - { - v4 = (void **)(i + 4); - std::string::_M_dispose(v4); - } - if ( *a1 ) - operator delete(*a1); -} - -//----- (004D86C0) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // esi - _DWORD *v6; // eax - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x44u); - *v4 = &off_51B084; - v4[1] = 0; - v4[2] = 0; - v4[3] = 0; - *((_WORD *)v4 + 8) = 0; - *((_BYTE *)v4 + 18) = 0; - v4[5] = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - *((_BYTE *)v4 + 67) = 0; - this[2] = v4; - } - *((_BYTE *)v4 + 17) = 46; - v5 = std::money_base::_S_atoms; - *(_BYTE *)(this[2] + 18) = 44; - v6 = (_DWORD *)this[2]; - v6[2] = &unk_5110A4; - v6[3] = 0; - v6[5] = &unk_5110A4; - v6[6] = 0; - v6[7] = &unk_5110A4; - v6[8] = 0; - v6[9] = &unk_5110A4; - v6[10] = 0; - v6[11] = 0; - v6[12] = std::money_base::_S_default_pattern; - *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; - for ( result = 0; result != 11; ++result ) - *(_BYTE *)(this[2] + result + 56) = v5[result]; - return result; -} -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 515480: using guessed type int std::money_base::_S_default_pattern; -// 51B084: using guessed type int (*off_51B084)(); - -//----- (004D87E0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A1D0; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D8880) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A1D0; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D8920) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A1D0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D89C0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A1D0; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D8A60) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A1D0; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D8B00) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A1D0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D8BA0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A1D0; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4D8C00: variable 'lpfctx' is possibly undefined -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D8C70) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A1D0; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D8CD0: variable 'lpfctx' is possibly undefined -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D8D20) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // esi - _DWORD *v6; // eax - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x44u); - *v4 = &off_51B094; - v4[1] = 0; - v4[2] = 0; - v4[3] = 0; - *((_WORD *)v4 + 8) = 0; - *((_BYTE *)v4 + 18) = 0; - v4[5] = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - *((_BYTE *)v4 + 67) = 0; - this[2] = v4; - } - *((_BYTE *)v4 + 17) = 46; - v5 = std::money_base::_S_atoms; - *(_BYTE *)(this[2] + 18) = 44; - v6 = (_DWORD *)this[2]; - v6[2] = &unk_5110A4; - v6[3] = 0; - v6[5] = &unk_5110A4; - v6[6] = 0; - v6[7] = &unk_5110A4; - v6[8] = 0; - v6[9] = &unk_5110A4; - v6[10] = 0; - v6[11] = 0; - v6[12] = std::money_base::_S_default_pattern; - *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; - for ( result = 0; result != 11; ++result ) - *(_BYTE *)(this[2] + result + 56) = v5[result]; - return result; -} -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 515480: using guessed type int std::money_base::_S_default_pattern; -// 51B094: using guessed type int (*off_51B094)(); - -//----- (004D8E40) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A204; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D8EE0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A204; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D8F80) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A204; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9020) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A204; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D90C0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A204; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9160) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A204; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9200) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A204; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4D9260: variable 'lpfctx' is possibly undefined -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D92D0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A204; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D9330: variable 'lpfctx' is possibly undefined -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9380) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // ebx - int v6; // ecx - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x54u); - v4[1] = 0; - *v4 = &off_51B0A4; - v4[2] = 0; - v4[3] = 0; - *((_BYTE *)v4 + 16) = 0; - *(_DWORD *)((char *)v4 + 18) = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - v4[14] = 0; - *((_BYTE *)v4 + 82) = 0; - this[2] = v4; - } - *(_DWORD *)((char *)v4 + 18) = 2883630; - v4[2] = &unk_5110A4; - v5 = std::money_base::_S_atoms; - v4[13] = std::money_base::_S_default_pattern; - v4[3] = 0; - v4[6] = &unk_5110A6; - v4[7] = 0; - v4[8] = &unk_5110A6; - v4[9] = 0; - v4[10] = &unk_5110A6; - v4[11] = 0; - v4[12] = 0; - *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; - v6 = this[2]; - for ( result = 0; result != 11; ++result ) - *(_WORD *)(v6 + 2 * result + 60) = v5[result]; - return result; -} -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 515480: using guessed type int std::money_base::_S_default_pattern; -// 51B0A4: using guessed type int (*off_51B0A4)(); - -//----- (004D94A0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A238; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9540) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A238; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D95E0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A238; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9680) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A238; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9720) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A238; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D97C0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A238; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9860) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A238; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4D98C0: variable 'lpfctx' is possibly undefined -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9930) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A238; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D9990: variable 'lpfctx' is possibly undefined -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D99E0) -------------------------------------------------------- -int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) -{ - _DWORD *v4; // eax - char *v5; // ebx - int v6; // ecx - int result; // eax - - v4 = (_DWORD *)this[2]; - if ( !v4 ) - { - v4 = operator new(0x54u); - v4[1] = 0; - *v4 = &off_51B0B4; - v4[2] = 0; - v4[3] = 0; - *((_BYTE *)v4 + 16) = 0; - *(_DWORD *)((char *)v4 + 18) = 0; - v4[6] = 0; - v4[7] = 0; - v4[8] = 0; - v4[9] = 0; - v4[10] = 0; - v4[11] = 0; - v4[12] = 0; - v4[13] = 0; - v4[14] = 0; - *((_BYTE *)v4 + 82) = 0; - this[2] = v4; - } - *(_DWORD *)((char *)v4 + 18) = 2883630; - v4[2] = &unk_5110A4; - v5 = std::money_base::_S_atoms; - v4[13] = std::money_base::_S_default_pattern; - v4[3] = 0; - v4[6] = &unk_5110A6; - v4[7] = 0; - v4[8] = &unk_5110A6; - v4[9] = 0; - v4[10] = &unk_5110A6; - v4[11] = 0; - v4[12] = 0; - *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; - v6 = this[2]; - for ( result = 0; result != 11; ++result ) - *(_WORD *)(v6 + 2 * result + 60) = v5[result]; - return result; -} -// 50C488: using guessed type char *std::money_base::_S_atoms; -// 515480: using guessed type int std::money_base::_S_default_pattern; -// 51B0B4: using guessed type int (*off_51B0B4)(); - -//----- (004D9B00) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A26C; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9BA0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A26C; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9C40) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A26C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9CE0) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A26C; - this[2] = a2; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9D80) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) -{ - *this = &off_51A26C; - this[2] = 0; - this[1] = a4 != 0; - std::moneypunct::_M_initialize_moneypunct(this, a2, a3); -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9E20) -------------------------------------------------------- -void __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A26C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9EC0) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A26C; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4D9F20: variable 'lpfctx' is possibly undefined -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004D9F90) -------------------------------------------------------- -void __fastcall std::moneypunct::~moneypunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A26C; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4D9FF0: variable 'lpfctx' is possibly undefined -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004DA040) -------------------------------------------------------- -void __thiscall std::string::_M_destroy(void **this, int a2) -{ - operator delete(*this); -} - -//----- (004DA060) -------------------------------------------------------- -void __fastcall std::string::_M_dispose(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (004DA090) -------------------------------------------------------- -unsigned int **__thiscall std::string::_M_replace(unsigned int **this, size_t a2, size_t a3, char *Src, size_t a5) -{ - unsigned int v5; // eax - unsigned int v7; // edi - unsigned int v8; // ecx - bool v9; // cl - unsigned int *v10; // eax - unsigned int v12; // eax - size_t v13; // eax - size_t v14; // ebp - size_t v15; // edx - _BYTE *v16; // esi - unsigned int *v17; // [esp+1Ch] [ebp-30h] - _BYTE *v18; // [esp+20h] [ebp-2Ch] - bool v19; // [esp+27h] [ebp-25h] - size_t Size; // [esp+28h] [ebp-24h] - size_t v21; // [esp+2Ch] [ebp-20h] - - v5 = (unsigned int)this[1]; - if ( a5 > a3 + 0x3FFFFFFF - v5 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); - v21 = a5 - a3; - v7 = v5 + a5 - a3; - v17 = *this; - if ( *this == (unsigned int *)(this + 2) ) - v8 = 15; - else - v8 = (unsigned int)this[2]; - if ( v8 < v7 ) - { - std::string::_M_mutate((int)this, a2, a3, Src, a5); - goto LABEL_12; - } - v18 = (char *)v17 + a2; - v19 = v5 != a3 + a2; - Size = v5 - (a3 + a2); - v9 = v19 && a3 != a5; - if ( v17 <= (unsigned int *)Src && Src <= (char *)v17 + v5 ) - { - if ( a5 && a3 >= a5 ) - { - if ( a5 != 1 ) - { - memmove(v18, Src, a5); - if ( !v19 || a3 == a5 ) - goto LABEL_12; -LABEL_18: - if ( Size == 1 ) - v18[a5] = v18[a3]; - else - memmove(&v18[a5], &v18[a3], Size); -LABEL_20: - if ( a3 >= a5 ) - goto LABEL_12; - v12 = (unsigned int)&v18[a3]; - if ( &v18[a3] < &Src[a5] ) - { - if ( v12 > (unsigned int)Src ) - { - v13 = v12 - (_DWORD)Src; - v14 = v13; - if ( v13 == 1 ) - { - *v18 = *Src; - } - else if ( v13 ) - { - memmove(v18, Src, v13); - } - v15 = a5 - v14; - v16 = &v18[a5]; - if ( a5 - v14 == 1 ) - { - v18[v14] = *v16; - } - else if ( v15 ) - { - memcpy(&v18[v14], v16, v15); - } - } - else if ( a5 == 1 ) - { - *v18 = Src[v21]; - } - else if ( a5 ) - { - memcpy(v18, &Src[v21], a5); - } - goto LABEL_12; - } - if ( a5 != 1 ) - { - if ( a5 ) - memmove(v18, Src, a5); - goto LABEL_12; - } -LABEL_27: - *v18 = *Src; - goto LABEL_12; - } - *v18 = *Src; - } - if ( !v9 ) - goto LABEL_20; - goto LABEL_18; - } - if ( v9 ) - { - if ( Size == 1 ) - v18[a5] = v18[a3]; - else - memmove(&v18[a5], &v18[a3], Size); - } - if ( a5 ) - { - if ( a5 != 1 ) - { - memcpy(v18, Src, a5); - goto LABEL_12; - } - goto LABEL_27; - } -LABEL_12: - v10 = *this; - this[1] = (unsigned int *)v7; - *((_BYTE *)v10 + v7) = 0; - return this; -} - -//----- (004DA3A0) -------------------------------------------------------- -int __cdecl std::string::_S_compare(int a1, int a2) -{ - return a1 - a2; -} - -//----- (004DA3B0) -------------------------------------------------------- -int __thiscall std::string::_M_capacity(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] = a2; - return result; -} - -//----- (004DA3C0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DA3D0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DA3E0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DA3F0) -------------------------------------------------------- -int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DA400) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t Size, char a3) -{ - _BYTE *result; // eax - int Val; // edi - - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - Val = a3; - goto LABEL_6; - } - result = (_BYTE *)*this; - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - if ( Size != 1 ) - { - Val = a3; -LABEL_6: - memset(result, Val, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; - } - *result = a3; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; -} - -//----- (004DA4A0) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _BYTE *Src, - int a3, - int a4) -{ - size_t Size; // ebx - _BYTE *result; // eax - - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; -} - -//----- (004DA540) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _BYTE *Src, - int a3, - int a4) -{ - size_t Size; // ebx - _BYTE *result; // eax - - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; -} - -//----- (004DA5E0) -------------------------------------------------------- -int __thiscall std::string::_M_construct(void **this, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - int v5; // edx - int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF - - if ( !Src && Size ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v6[0] = Size - (_DWORD)Src; - if ( Size - (unsigned int)Src > 0xF ) - { - *this = std::string::_M_create((unsigned int *)v6, 0); - this[2] = (void *)v6[0]; - } - std::string::_S_copy_chars(*this, Src, Size); - result = v6[0]; - v5 = (int)*this; - this[1] = (void *)v6[0]; - *(_BYTE *)(v5 + result) = 0; - return result; -} -// 4DA5E0: using guessed type unsigned int var_1C[7]; - -//----- (004DA660) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4) -{ - size_t Size; // ebx - _BYTE *result; // eax - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; -} - -//----- (004DA710) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) -{ - size_t Size; // ebx - _BYTE *result; // eax - int v6; // ebx - int v7; // ebx - int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( a3 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - Size = a3 - (_DWORD)Src; - v8[0] = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - result = std::string::_M_create((unsigned int *)v8, 0); - *this = result; - this[2] = v8[0]; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - v6 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v6] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v7] = 0; - return result; -} -// 4DA710: using guessed type unsigned int var_10[4]; - -//----- (004DA7D0) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) -{ - size_t Size; // ebx - _BYTE *result; // eax - int v6; // ebx - int v7; // ebx - int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( a3 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - Size = a3 - (_DWORD)Src; - v8[0] = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - result = std::string::_M_create((unsigned int *)v8, 0); - *this = result; - this[2] = v8[0]; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - v6 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v6] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v7] = 0; - return result; -} -// 4DA7D0: using guessed type unsigned int var_10[4]; - -//----- (004DA890) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) -{ - size_t Size; // ebx - _BYTE *result; // eax - int v6; // ebx - int v7; // ebx - int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( a3 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - Size = a3 - (_DWORD)Src; - v8[0] = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - result = std::string::_M_create((unsigned int *)v8, 0); - *this = result; - this[2] = v8[0]; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - v6 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v6] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v7] = 0; - return result; -} -// 4DA890: using guessed type unsigned int var_10[4]; - -//----- (004DA950) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3) -{ - size_t Size; // ebx - _BYTE *result; // eax - int v6; // ebx - int v7; // ebx - int v8[4]; // [esp+1Ch] [ebp-10h] BYREF - - if ( a3 ) - { - if ( !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - } - Size = a3 - (_DWORD)Src; - v8[0] = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - result = std::string::_M_create((unsigned int *)v8, 0); - *this = result; - this[2] = v8[0]; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - v6 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v6] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - v7 = v8[0]; - result = (_BYTE *)*this; - this[1] = v8[0]; - result[v7] = 0; - return result; -} -// 4DA950: using guessed type unsigned int var_10[4]; - -//----- (004DAA10) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4) -{ - size_t Size; // ebx - _BYTE *result; // eax - - if ( a3 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; - } - else - { - result = (_BYTE *)*this; - if ( Size == 1 ) - { - *result = *Src; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; - } - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; -} - -//----- (004DAAC0) -------------------------------------------------------- -int __fastcall std::string::_M_local_data(int a1) -{ - return a1 + 8; -} - -//----- (004DAAD0) -------------------------------------------------------- -int __thiscall std::string::_M_set_length(int *this, int a2) -{ - int result; // eax - int v3; // edx - - result = a2; - v3 = *this; - this[1] = a2; - *(_BYTE *)(v3 + a2) = 0; - return result; -} - -//----- (004DAAE0) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004DAB20) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004DAB60) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004DABA0) -------------------------------------------------------- -int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *Src, size_t Size) -{ - int result; // eax - - result = Size - (_DWORD)Src; - if ( Size - (_DWORD)Src == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( result ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004DABE0) -------------------------------------------------------- -void __fastcall std::string::shrink_to_fit(_DWORD *a1) -{ - unsigned int v1; // eax - - if ( (_DWORD *)*a1 == a1 + 2 ) - v1 = 15; - else - v1 = a1[2]; - if ( a1[1] < v1 ) - std::string::reserve(a1, 0); -} - -//----- (004DAC80) -------------------------------------------------------- -_DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t a2, int a3, size_t a4, char a5) -{ - int v6; // edx - _DWORD *v7; // eax - unsigned int v8; // esi - unsigned int v9; // ebp - size_t Size; // edx - size_t v11; // eax - _BYTE *Src; // ecx - _BYTE *v13; // eax - _BYTE *v14; // eax - - v6 = this[1]; - if ( a4 > a3 + 0x3FFFFFFF - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - v7 = (_DWORD *)*this; - v8 = v6 + a4 - a3; - if ( (_DWORD *)*this == this + 2 ) - v9 = 15; - else - v9 = this[2]; - if ( v9 < v8 ) - { - std::string::_M_mutate((int)this, a2, a3, 0, a4); - v7 = (_DWORD *)*this; - if ( !a4 ) - goto LABEL_13; - } - else - { - Size = v6 - (a3 + a2); - if ( !Size || a3 == a4 ) - { -LABEL_9: - if ( !a4 ) - goto LABEL_13; - goto LABEL_10; - } - v11 = (size_t)v7 + a2; - Src = (_BYTE *)(v11 + a3); - v13 = (_BYTE *)(a4 + v11); - if ( Size != 1 ) - { - memmove(v13, Src, Size); - v7 = (_DWORD *)*this; - goto LABEL_9; - } - *v13 = *Src; - v7 = (_DWORD *)*this; - if ( !a4 ) - goto LABEL_13; - } -LABEL_10: - v14 = (char *)v7 + a2; - if ( a4 == 1 ) - *v14 = a5; - else - memset(v14, a5, a4); - v7 = (_DWORD *)*this; -LABEL_13: - this[1] = v8; - *((_BYTE *)v7 + v8) = 0; - return this; -} - -//----- (004DADA0) -------------------------------------------------------- -int __fastcall std::string::_M_get_allocator(int a1) -{ - return a1; -} - -//----- (004DADB0) -------------------------------------------------------- -_BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t Size, char a3) -{ - _BYTE *result; // eax - - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - this[2] = Size; - *this = result; -LABEL_6: - memset(result, a3, Size); - result = (_BYTE *)*this; - this[1] = Size; - result[Size] = 0; - return result; - } - result = (_BYTE *)*this; - if ( !Size ) - { - this[1] = 0; - *result = 0; - return result; - } - if ( Size != 1 ) - goto LABEL_6; - *result = a3; - result = (_BYTE *)*this; - this[1] = 1; - result[1] = 0; - return result; -} - -//----- (004DAE50) -------------------------------------------------------- -unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) -{ - if ( a2 >= this[1] ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); - return *this + a2; -} - -//----- (004DAE80) -------------------------------------------------------- -int __fastcall std::string::end(_DWORD *a1) -{ - return a1[1] + *a1; -} - -//----- (004DAE90) -------------------------------------------------------- -int __fastcall std::string::back(_DWORD *a1) -{ - return *a1 + a1[1] - 1; -} - -//----- (004DAEA0) -------------------------------------------------------- -_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (004DAEB0) -------------------------------------------------------- -_BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *a2) -{ - _BYTE *result; // eax - _BYTE *v3; // edi - _DWORD *v4; // esi - _DWORD *v5; // edx - int v6; // ebp - int v7; // edx - int v8; // esi - int v9; // edx - int v10; // edi - int v11; // ebp - int v12; // edi - int v13; // [esp+0h] [ebp-28h] - int v14; // [esp+4h] [ebp-24h] - - result = a2; - if ( this != a2 ) - { - v3 = (_BYTE *)*this; - v4 = (_DWORD *)*a2; - v5 = a2 + 2; - if ( this + 2 == (_DWORD *)*this ) - { - if ( v5 == v4 ) - { - v8 = a2[1]; - if ( this[1] ) - { - if ( !v8 ) - { - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - a2[1] = this[1]; - result = (_BYTE *)*this; - this[1] = 0; - *result = 0; - return result; - } - v11 = a2[2]; - v12 = a2[3]; - v13 = a2[4]; - v14 = a2[5]; - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - v9 = this[1]; - this[3] = v12; - this[2] = v11; - this[4] = v13; - this[5] = v14; - v8 = a2[1]; - } - else - { - if ( v8 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - this[1] = a2[1]; - a2[1] = 0; - result = (_BYTE *)*a2; - *(_BYTE *)*a2 = 0; - return result; - } - v9 = 0; - } - } - else - { - v10 = a2[2]; - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - *this = v4; - *a2 = v5; - v9 = this[1]; - this[2] = v10; - v8 = a2[1]; - } - } - else - { - v6 = this[2]; - if ( v5 == v4 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - *a2 = v3; - *this = this + 2; - } - else - { - *this = v4; - v7 = a2[2]; - *a2 = v3; - this[2] = v7; - } - a2[2] = v6; - v8 = a2[1]; - v9 = this[1]; - } - this[1] = v8; - a2[1] = v9; - } - return result; -} - -//----- (004DB020) -------------------------------------------------------- -int __fastcall std::string::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004DB030) -------------------------------------------------------- -_BYTE *__fastcall std::string::clear(int a1) -{ - _BYTE *result; // eax - - result = *(_BYTE **)a1; - *(_DWORD *)(a1 + 4) = 0; - *result = 0; - return result; -} - -//----- (004DB040) -------------------------------------------------------- -char *__thiscall std::string::erase(int *this, char *a2) -{ - int v3; // edx - int v4; // eax - char *v5; // esi - size_t Size; // edi - - v3 = *this; - v4 = this[1] - 1; - v5 = &a2[-*this]; - Size = v4 - (_DWORD)v5; - if ( (char *)v4 != v5 ) - { - if ( Size == 1 ) - *a2 = a2[1]; - else - memmove(a2, a2 + 1, Size); - v3 = *this; - v4 = this[1] - 1; - } - this[1] = v4; - *(_BYTE *)(v3 + v4) = 0; - return &v5[*this]; -} - -//----- (004DB0B0) -------------------------------------------------------- -_BYTE *__thiscall std::string::erase(int *this, _BYTE *a2, int a3) -{ - _BYTE *v4; // esi - - v4 = &a2[-*this]; - if ( a3 == this[1] + *this ) - { - this[1] = (int)v4; - *a2 = 0; - } - else - { - std::string::_M_erase(this, (int)v4, a3 - (_DWORD)a2); - } - return &v4[*this]; -} - -//----- (004DB110) -------------------------------------------------------- -int __thiscall std::string::erase(int *this, int a2) -{ - int v3; // ebx - - v3 = a2 - *this; - std::string::_M_erase(this, v3, 1); - return v3 + *this; -} - -//----- (004DB140) -------------------------------------------------------- -_BYTE *__thiscall std::string::erase(int *this, _BYTE *a2, int a3) -{ - _BYTE *v4; // esi - - v4 = &a2[-*this]; - if ( a3 == this[1] + *this ) - { - this[1] = (int)v4; - *a2 = 0; - } - else - { - std::string::_M_erase(this, (int)v4, a3 - (_DWORD)a2); - } - return &v4[*this]; -} - -//----- (004DB1A0) -------------------------------------------------------- -int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3) -{ - int *result; // eax - unsigned int v4; // edx - unsigned int v5; // edx - int v6; // edx - - result = this; - v4 = this[1]; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - a2, - v4); - if ( a3 == -1 ) - { - v6 = *this; - this[1] = a2; - *(_BYTE *)(v6 + a2) = 0; - } - else if ( a3 ) - { - v5 = v4 - a2; - if ( v5 > a3 ) - v5 = a3; - std::string::_M_erase(this, a2, v5); - return this; - } - return result; -} - -//----- (004DB220) -------------------------------------------------------- -int __fastcall std::string::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004DB230) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, char *Str) -{ - unsigned int Size; // eax - size_t v4; // ebp - _DWORD *v5; // edx - unsigned int v6; // edi - unsigned int v7; // ecx - _BYTE *v8; // edx - _DWORD *result; // eax - - Size = strlen(Str); - v4 = this[1]; - if ( 0x3FFFFFFF - v4 < Size ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = v4 + Size; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Str, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Str; - else - memcpy(v8, Str, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - result = this; - *((_BYTE *)v5 + v6) = 0; - return result; -} - -//----- (004DB2F0) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size) -{ - size_t v4; // edi - _DWORD *v5; // eax - unsigned int v6; // esi - unsigned int v7; // ecx - _BYTE *v8; // eax - - v4 = this[1]; - if ( Size > 0x3FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = Size + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Src; - else - memcpy(v8, Src, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - *((_BYTE *)v5 + v6) = 0; - return this; -} - -//----- (004DB3B0) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, int a2) -{ - _DWORD *v3; // edi - size_t v4; // ecx - size_t v5; // edx - _BYTE *Src; // ebp - _DWORD *v7; // eax - unsigned int v8; // esi - unsigned int v9; // edi - _BYTE *v10; // eax - - v3 = this + 2; - v4 = this[1]; - v5 = *(_DWORD *)(a2 + 4); - Src = *(_BYTE **)a2; - v7 = (_DWORD *)*this; - v8 = v5 + v4; - if ( (_DWORD *)*this == v3 ) - v9 = 15; - else - v9 = this[2]; - if ( v8 > v9 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, v5); - v7 = (_DWORD *)*this; - } - else if ( v5 ) - { - v10 = (char *)v7 + v4; - if ( v5 == 1 ) - *v10 = *Src; - else - memcpy(v10, Src, *(_DWORD *)(a2 + 4)); - v7 = (_DWORD *)*this; - } - this[1] = v8; - *((_BYTE *)v7 + v8) = 0; - return this; -} - -//----- (004DB450) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, size_t a4) -{ - size_t Size; // eax - _BYTE *Src; // edi - int v7; // ecx - _DWORD *v8; // edx - unsigned int v9; // esi - unsigned int v10; // ebp - _BYTE *v11; // edx - _DWORD *result; // eax - - Size = a4; - if ( a2[1] - a3 <= a4 ) - Size = a2[1] - a3; - if ( a3 > a2[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::append", - a3, - a2[1]); - Src = (_BYTE *)(*a2 + a3); - v7 = this[1]; - v8 = (_DWORD *)*this; - v9 = Size + v7; - if ( (_DWORD *)*this == this + 2 ) - v10 = 15; - else - v10 = this[2]; - if ( v9 > v10 ) - { - std::string::_M_mutate((int)this, this[1], 0, Src, Size); - v8 = (_DWORD *)*this; - } - else if ( Size ) - { - v11 = (char *)v8 + v7; - if ( Size == 1 ) - *v11 = *Src; - else - memcpy(v11, Src, Size); - v8 = (_DWORD *)*this; - } - this[1] = v9; - result = this; - *((_BYTE *)v8 + v9) = 0; - return result; -} - -//----- (004DB530) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *Src, size_t Size) -{ - size_t v4; // edi - _DWORD *v5; // eax - unsigned int v6; // esi - unsigned int v7; // ecx - _BYTE *v8; // eax - - v4 = this[1]; - if ( Size > 0x3FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = Size + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Src; - else - memcpy(v8, Src, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - *((_BYTE *)v5 + v6) = 0; - return this; -} - -//----- (004DB5F0) -------------------------------------------------------- -_DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3) -{ - return std::string::_M_replace_aux(this, this[1], 0, a2, a3); -} - -//----- (004DB620) -------------------------------------------------------- -_DWORD *__thiscall std::string::assign(_DWORD *this, int a2) -{ - _DWORD *v3; // eax - _DWORD *Src; // ecx - int v5; // edx - int v6; // ebp - - v3 = (_DWORD *)*this; - Src = *(_DWORD **)a2; - v5 = *(_DWORD *)(a2 + 4); - if ( *(_DWORD *)a2 != a2 + 8 ) - { - if ( v3 == this + 2 ) - { - *this = Src; - this[1] = v5; - this[2] = *(_DWORD *)(a2 + 8); - } - else - { - *this = Src; - v6 = this[2]; - this[1] = v5; - this[2] = *(_DWORD *)(a2 + 8); - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v6; - goto LABEL_5; - } - } - *(_DWORD *)a2 = a2 + 8; - v3 = (_DWORD *)(a2 + 8); - goto LABEL_5; - } - if ( v5 ) - { - if ( v5 == 1 ) - *(_BYTE *)v3 = *(_BYTE *)(a2 + 8); - else - memcpy(v3, Src, *(_DWORD *)(a2 + 4)); - v5 = *(_DWORD *)(a2 + 4); - v3 = (_DWORD *)*this; - } - this[1] = v5; - *((_BYTE *)v3 + v5) = 0; - v3 = *(_DWORD **)a2; -LABEL_5: - *(_DWORD *)(a2 + 4) = 0; - *(_BYTE *)v3 = 0; - return this; -} - -//----- (004DB6D0) -------------------------------------------------------- -unsigned int **__thiscall std::string::assign(unsigned int **this, char *Str) -{ - size_t v3; // eax - - v3 = strlen(Str); - return std::string::_M_replace(this, 0, (size_t)this[1], Str, v3); -} - -//----- (004DB710) -------------------------------------------------------- -unsigned int **__thiscall std::string::assign(unsigned int **this, char *a2, size_t a3) -{ - return std::string::_M_replace(this, 0, (size_t)this[1], a2, a3); -} - -//----- (004DB740) -------------------------------------------------------- -void *__thiscall std::string::assign(void *this, int a2) -{ - std::string::_M_assign((int)this, a2); - return this; -} - -//----- (004DB760) -------------------------------------------------------- -unsigned int **__thiscall std::string::assign(unsigned int **this, _DWORD *a2, unsigned int a3, size_t a4) -{ - size_t v4; // eax - - v4 = a2[1] - a3; - if ( v4 > a4 ) - v4 = a4; - if ( a3 > a2[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::assign", - a3, - a2[1]); - return std::string::_M_replace(this, 0, (size_t)this[1], (char *)(*a2 + a3), v4); -} - -//----- (004DB7D0) -------------------------------------------------------- -unsigned int **__thiscall std::string::assign(unsigned int **this, char *a2, size_t a3) -{ - return std::string::_M_replace(this, 0, (size_t)this[1], a2, a3); -} - -//----- (004DB800) -------------------------------------------------------- -_DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3) -{ - return std::string::_M_replace_aux(this, 0, this[1], a2, a3); -} - -//----- (004DB830) -------------------------------------------------------- -size_t __thiscall std::string::insert(unsigned int **this, int a2, char *a3, size_t a4) -{ - unsigned int v5; // eax - size_t v6; // ebx - - v5 = (unsigned int)this[1]; - v6 = a2 - (_DWORD)*this; - if ( v6 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - v5); - std::string::_M_replace(this, v6, 0, a3, a4); - return (size_t)*this + v6; -} - -//----- (004DB8A0) -------------------------------------------------------- -size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) -{ - size_t v4; // ebx - - v4 = a2 - *this; - std::string::_M_replace_aux(this, v4, 0, 1u, a3); - return v4 + *this; -} - -//----- (004DB8E0) -------------------------------------------------------- -size_t __thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) -{ - size_t v5; // ebx - - v5 = a2 - *this; - std::string::_M_replace_aux(this, v5, 0, a3, a4); - return v5 + *this; -} - -//----- (004DB920) -------------------------------------------------------- -unsigned int **__thiscall std::string::insert(unsigned int **this, int a2, char *a3, size_t a4) -{ - size_t v4; // eax - - v4 = a2 - (_DWORD)*this; - if ( v4 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - (size_t)this[1]); - return std::string::_M_replace(this, v4, 0, a3, a4); -} - -//----- (004DB980) -------------------------------------------------------- -size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) -{ - size_t v4; // ebx - - v4 = a2 - *this; - std::string::_M_replace_aux(this, v4, 0, 1u, a3); - return v4 + *this; -} - -//----- (004DB9C0) -------------------------------------------------------- -_DWORD *__thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) -{ - return std::string::_M_replace_aux(this, a2 - *this, 0, a3, a4); -} - -//----- (004DBA00) -------------------------------------------------------- -unsigned int **__thiscall std::string::insert(unsigned int **this, unsigned int a2, char *Str) -{ - size_t v4; // eax - - v4 = strlen(Str); - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::string::_M_replace(this, a2, 0, Str, v4); -} - -//----- (004DBA70) -------------------------------------------------------- -unsigned int **__thiscall std::string::insert(unsigned int **this, unsigned int a2, char *a3, size_t a4) -{ - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::string::_M_replace(this, a2, 0, a3, a4); -} - -//----- (004DBAD0) -------------------------------------------------------- -unsigned int **__thiscall std::string::insert(unsigned int **this, unsigned int a2, int a3) -{ - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::string::_M_replace(this, a2, 0, *(char **)a3, *(_DWORD *)(a3 + 4)); -} - -//----- (004DBB30) -------------------------------------------------------- -unsigned int **__thiscall std::string::insert(unsigned int **this, unsigned int a2, _DWORD *a3, char *a4, size_t a5) -{ - size_t v5; // eax - - v5 = a5; - if ( a3[1] - (int)a4 <= a5 ) - v5 = a3[1] - (_DWORD)a4; - if ( (unsigned int)a4 > a3[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - (size_t)a4, - a3[1]); - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::string::_M_replace(this, a2, 0, &a4[*a3], v5); -} - -//----- (004DBBC0) -------------------------------------------------------- -_DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int a2, size_t a3, char a4) -{ - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a2, - this[1]); - return std::string::_M_replace_aux(this, a2, 0, a3, a4); -} - -//----- (004DBC20) -------------------------------------------------------- -unsigned int **__thiscall std::string::insert<__gnu_cxx::__normal_iterator>( - unsigned int **this, - int a2, - char *a3, - int a4) -{ - size_t v4; // eax - - v4 = a2 - (_DWORD)*this; - if ( v4 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - (size_t)this[1]); - return std::string::_M_replace(this, v4, 0, a3, a4 - (_DWORD)a3); -} - -//----- (004DBC80) -------------------------------------------------------- -_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + a2[1]; - return result; -} - -//----- (004DBC90) -------------------------------------------------------- -_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2) -{ - size_t v2; // edx - _DWORD *result; // eax - int v4; // edx - - v2 = this[1]; - result = a2; - if ( (unsigned int)a2 > v2 ) - return std::string::_M_replace_aux(this, v2, 0, (size_t)a2 - v2, 0); - if ( (unsigned int)a2 < v2 ) - { - v4 = *this; - this[1] = (int)a2; - *((_BYTE *)a2 + v4) = 0; - } - return result; -} - -//----- (004DBCE0) -------------------------------------------------------- -_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2, char a3) -{ - size_t v3; // edx - _DWORD *result; // eax - int v5; // edx - - v3 = this[1]; - result = a2; - if ( v3 < (unsigned int)a2 ) - return std::string::_M_replace_aux(this, v3, 0, (size_t)a2 - v3, a3); - if ( v3 > (unsigned int)a2 ) - { - v5 = *this; - this[1] = (int)a2; - *((_BYTE *)a2 + v5) = 0; - } - return result; -} - -//----- (004DBD30) -------------------------------------------------------- -int __thiscall std::string::_M_data(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DBD40) -------------------------------------------------------- -int __cdecl std::string::_S_copy(_BYTE *a1, unsigned __int8 *Src, int Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memcpy(a1, Src, Size); - } - return result; -} - -//----- (004DBD80) -------------------------------------------------------- -int __cdecl std::string::_S_move(_BYTE *a1, unsigned __int8 *Src, int Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memmove(a1, Src, Size); - } - return result; -} - -//----- (004DBDC0) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (004DBE30) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (004DBEA0) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, int a4) -{ - size_t v4; // edx - size_t v5; // eax - - v4 = a2 - (_DWORD)*this; - v5 = a3 - a2; - if ( a3 - a2 > (unsigned int)this[1] - v4 ) - v5 = (size_t)this[1] - v4; - if ( v4 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - (size_t)this[1]); - return std::string::_M_replace(this, v4, v5, *(char **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (004DBF10) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *Str) -{ - size_t v5; // eax - size_t v6; // edx - size_t v7; // ecx - size_t v8; // eax - - v5 = strlen(Str); - v6 = a2 - (_DWORD)*this; - v7 = v5; - v8 = a3 - a2; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v8 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v8, Str, v7); -} - -//----- (004DBF90) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (004DC000) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5); -} - -//----- (004DC070) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (004DC0E0) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5); -} - -//----- (004DC150) -------------------------------------------------------- -_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) -{ - return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); -} - -//----- (004DC170) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (004DC1E0) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *Str) -{ - size_t v5; // eax - size_t v6; // edx - size_t v7; // ecx - size_t v8; // eax - - v5 = strlen(Str); - v6 = a2 - (_DWORD)*this; - v7 = v5; - v8 = a3 - a2; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v8 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v8, Str, v7); -} - -//----- (004DC260) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (004DC2D0) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5); -} - -//----- (004DC340) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, int a4) -{ - size_t v4; // edx - size_t v5; // eax - - v4 = a2 - (_DWORD)*this; - v5 = a3 - a2; - if ( a3 - a2 > (unsigned int)this[1] - v4 ) - v5 = (size_t)this[1] - v4; - if ( v4 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - (size_t)this[1]); - return std::string::_M_replace(this, v4, v5, *(char **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (004DC3B0) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (004DC420) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, int a2, int a3, char *a4, size_t a5) -{ - size_t v5; // eax - size_t v6; // edx - - v5 = a3 - a2; - v6 = a2 - (_DWORD)*this; - if ( a3 - a2 > (unsigned int)this[1] - v6 ) - v5 = (size_t)this[1] - v6; - if ( v6 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v6, - (size_t)this[1]); - return std::string::_M_replace(this, v6, v5, a4, a5 - (_DWORD)a4); -} - -//----- (004DC490) -------------------------------------------------------- -_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) -{ - return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); -} - -//----- (004DC4B0) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, unsigned int a2, unsigned int a3, char *Str) -{ - size_t v5; // edx - size_t v6; // eax - - v5 = strlen(Str); - v6 = (size_t)this[1] - a2; - if ( v6 > a3 ) - v6 = a3; - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::string::_M_replace(this, a2, v6, Str, v5); -} - -//----- (004DC520) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace( - unsigned int **this, - unsigned int a2, - unsigned int a3, - char *a4, - size_t a5) -{ - size_t v5; // eax - - v5 = (size_t)this[1] - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::string::_M_replace(this, a2, v5, a4, a5); -} - -//----- (004DC580) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace(unsigned int **this, unsigned int a2, unsigned int a3, int a4) -{ - size_t v4; // eax - - v4 = (size_t)this[1] - a2; - if ( v4 > a3 ) - v4 = a3; - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::string::_M_replace(this, a2, v4, *(char **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (004DC5F0) -------------------------------------------------------- -unsigned int **__thiscall std::string::replace( - unsigned int **this, - unsigned int a2, - unsigned int a3, - _DWORD *a4, - unsigned int a5, - size_t a6) -{ - size_t v6; // eax - size_t v7; // esi - - v6 = a6; - if ( a4[1] - a5 <= a6 ) - v6 = a4[1] - a5; - if ( a5 > a4[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a5, - a4[1]); - v7 = (size_t)this[1] - a2; - if ( v7 > a3 ) - v7 = a3; - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::string::_M_replace(this, a2, v7, (char *)(*a4 + a5), v6); -} - -//----- (004DC690) -------------------------------------------------------- -_DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5) -{ - unsigned int v5; // eax - - v5 = this[1] - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::string::_M_replace_aux(this, a2, v5, a4, a5); -} - -//----- (004DC6F0) -------------------------------------------------------- -void __thiscall std::string::reserve(_DWORD *this, unsigned int a2) -{ - unsigned int v3; // ecx - unsigned int v4; // eax - _BYTE *Block; // edi - _DWORD *v6; // esi - unsigned int v7; // edx - unsigned int v8; // ebp - _BYTE *v9; // eax - _BYTE *Src; // ebp - _BYTE *v11; // edi - int v12; // eax - unsigned int v13; // eax - - v3 = this[1]; - v4 = a2; - if ( a2 < v3 ) - { - a2 = v3; - v4 = v3; - } - Block = (_BYTE *)*this; - v6 = this + 2; - if ( this + 2 == (_DWORD *)*this ) - v7 = 15; - else - v7 = this[2]; - if ( v7 != v4 ) - { - v8 = 15; - if ( v7 <= 0xF ) - v8 = v7; - if ( v8 >= v4 ) - { - if ( v6 != (_DWORD *)Block ) - { - if ( v3 ) - { - if ( v3 != -1 ) - memcpy(this + 2, Block, v3 + 1); - } - else - { - *((_BYTE *)this + 8) = *Block; - } - operator delete(Block); - *this = v6; - } - } - else - { - v9 = std::string::_M_create(&a2, v7); - Src = (_BYTE *)*this; - v11 = v9; - v12 = this[1]; - if ( v12 ) - { - if ( v12 != -1 ) - memcpy(v11, Src, v12 + 1); - } - else - { - *v11 = *Src; - } - if ( Src != (_BYTE *)v6 ) - operator delete(Src); - v13 = a2; - *this = v11; - this[2] = v13; - } - } -} - -//----- (004DC800) -------------------------------------------------------- -int __thiscall std::string::_M_erase(int *this, int a2, int a3) -{ - int v4; // eax - int v5; // ecx - _BYTE *Src; // edx - _BYTE *v7; // ecx - int result; // eax - - v4 = this[1]; - v5 = *this; - if ( v4 != a3 + a2 && a3 ) - { - Src = (_BYTE *)(v5 + a3 + a2); - v7 = (_BYTE *)(a2 + v5); - if ( v4 - (a3 + a2) == 1 ) - *v7 = *Src; - else - memmove(v7, Src, v4 - (a3 + a2)); - v5 = *this; - v4 = this[1]; - } - result = v4 - a3; - this[1] = result; - *(_BYTE *)(v5 + result) = 0; - return result; -} - -//----- (004DC870) -------------------------------------------------------- -int __fastcall std::string::pop_back(_DWORD *a1) -{ - int result; // eax - - result = a1[1]; - a1[1] = result - 1; - *(_BYTE *)(*a1 + result - 1) = 0; - return result; -} - -//----- (004DC890) -------------------------------------------------------- -_DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size) -{ - _DWORD *v4; // edi - size_t v5; // ecx - _DWORD *v6; // eax - unsigned int v7; // esi - unsigned int v8; // edi - _BYTE *v9; // eax - - v4 = this + 2; - v5 = this[1]; - v6 = (_DWORD *)*this; - v7 = v5 + Size; - if ( (_DWORD *)*this == v4 ) - v8 = 15; - else - v8 = this[2]; - if ( v7 > v8 ) - { - std::string::_M_mutate((int)this, v5, 0, Src, Size); - v6 = (_DWORD *)*this; - } - else if ( Size ) - { - v9 = (char *)v6 + v5; - if ( Size == 1 ) - *v9 = *Src; - else - memcpy(v9, Src, Size); - v6 = (_DWORD *)*this; - } - this[1] = v7; - *((_BYTE *)v6 + v7) = 0; - return this; -} - -//----- (004DC930) -------------------------------------------------------- -void __thiscall std::string::_M_assign(int this, int a2) -{ - _BYTE *v2; // esi - size_t Size; // edi - unsigned int v5; // eax - _BYTE *Src; // eax - int v7; // eax - int v8; // [esp+1Ch] [ebp-30h] - int v9[8]; // [esp+2Ch] [ebp-20h] BYREF - - if ( this != a2 ) - { - v2 = *(_BYTE **)this; - Size = *(_DWORD *)(a2 + 4); - if ( this + 8 == *(_DWORD *)this ) - v5 = 15; - else - v5 = *(_DWORD *)(this + 8); - if ( v5 < Size ) - { - v8 = this + 8; - v9[0] = *(_DWORD *)(a2 + 4); - v2 = std::string::_M_create((unsigned int *)v9, v5); - if ( v8 != *(_DWORD *)this ) - operator delete(*(void **)this); - v7 = v9[0]; - *(_DWORD *)this = v2; - *(_DWORD *)(this + 8) = v7; - if ( !Size ) - goto LABEL_9; - } - else if ( !Size ) - { -LABEL_9: - *(_DWORD *)(this + 4) = Size; - v2[Size] = 0; - return; - } - Src = *(_BYTE **)a2; - if ( Size == 1 ) - *v2 = *Src; - else - memcpy(v2, Src, Size); - v2 = *(_BYTE **)this; - goto LABEL_9; - } -} -// 4DC930: using guessed type unsigned int var_20[8]; - -//----- (004DC9F0) -------------------------------------------------------- -void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2) -{ - unsigned int v2; // eax - unsigned int v3; // edx - - v2 = *a1; - if ( *a1 > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( v2 > a2 ) - { - v3 = 2 * a2; - if ( v2 < 2 * a2 ) - { - if ( v3 > 0x3FFFFFFF ) - { - *a1 = 0x3FFFFFFF; - return operator new(0x40000000u); - } - *a1 = v3; - v2 = 2 * a2; - } - } - return operator new(v2 + 1); -} - -//----- (004DCA60) -------------------------------------------------------- -int __thiscall std::string::_M_length(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[1] = a2; - return result; -} - -//----- (004DCA70) -------------------------------------------------------- -int __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5) -{ - _BYTE *v6; // edi - unsigned int v7; // eax - _BYTE *v8; // eax - _BYTE *Block; // ecx - _BYTE *v10; // ebp - _BYTE *v11; // esi - int result; // eax - _BYTE *Src; // [esp+4h] [ebp-48h] - size_t v14; // [esp+14h] [ebp-38h] - size_t v15; // [esp+18h] [ebp-34h] - _BYTE *v16; // [esp+18h] [ebp-34h] - _BYTE *v17; // [esp+1Ch] [ebp-30h] - _BYTE *v18; // [esp+1Ch] [ebp-30h] - int v19[8]; // [esp+2Ch] [ebp-20h] BYREF - - v15 = Size + a3; - v14 = *(_DWORD *)(this + 4) - (Size + a3); - v6 = (_BYTE *)(this + 8); - v19[0] = *(_DWORD *)(this + 4) + a5 - a3; - if ( this + 8 == *(_DWORD *)this ) - v7 = 15; - else - v7 = *(_DWORD *)(this + 8); - v8 = std::string::_M_create((unsigned int *)v19, v7); - Block = *(_BYTE **)this; - v10 = v8; - if ( Size ) - { - if ( Size == 1 ) - { - *v8 = *Block; - } - else - { - v17 = *(_BYTE **)this; - memcpy(v8, *(const void **)this, Size); - Block = v17; - } - } - if ( a4 && a5 ) - { - if ( a5 == 1 ) - { - v10[Size] = *a4; - } - else - { - v18 = Block; - memcpy(&v10[Size], a4, a5); - Block = v18; - } - } - if ( v14 ) - { - v11 = &v10[a5 + Size]; - if ( v14 == 1 ) - { - *v11 = Block[v15]; - } - else - { - Src = &Block[v15]; - v16 = Block; - memcpy(v11, Src, v14); - Block = v16; - } - } - if ( v6 != Block ) - operator delete(Block); - result = v19[0]; - *(_DWORD *)this = v10; - *(_DWORD *)(this + 8) = result; - return result; -} -// 4DCA70: using guessed type size_t var_20[8]; - -//----- (004DCBC0) -------------------------------------------------------- -void *__cdecl std::string::_S_assign(_BYTE *a1, void *Val, size_t Size) -{ - void *result; // eax - - result = Val; - if ( Val == (void *)1 ) - { - *a1 = Size; - } - else if ( Val ) - { - return memset(a1, (char)Size, (size_t)Val); - } - return result; -} - -//----- (004DCC00) -------------------------------------------------------- -_DWORD *__thiscall std::string::push_back(_DWORD *this, char a2) -{ - size_t v3; // esi - _DWORD *v4; // eax - unsigned int v5; // edi - unsigned int v6; // edx - _DWORD *result; // eax - - v3 = this[1]; - v4 = (_DWORD *)*this; - v5 = v3 + 1; - if ( (_DWORD *)*this == this + 2 ) - v6 = 15; - else - v6 = this[2]; - if ( v5 > v6 ) - { - std::string::_M_mutate((int)this, v3, 0, 0, 1u); - v4 = (_DWORD *)*this; - } - *((_BYTE *)v4 + v3) = a2; - result = (_DWORD *)*this; - this[1] = v5; - *((_BYTE *)result + v3 + 1) = 0; - return result; -} - -//----- (004DCC80) -------------------------------------------------------- -_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( result + 2 == (_DWORD *)*result ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - *((_BYTE *)a2 + 8) = 0; - this[1] = v3; - return result; -} - -//----- (004DCCE0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) -{ - _BYTE *result; // eax - int v4; // ebx - int v5; // ebx - int v6; // edx - - result = (_BYTE *)a2; - *this = this + 2; - if ( result + 8 == *(_BYTE **)result ) - { - this[2] = *(_DWORD *)(a2 + 8); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - v6 = *(_DWORD *)(a2 + 4); - *(_DWORD *)(a2 + 4) = 0; - result = *(_BYTE **)a2; - this[1] = v6; - *result = 0; - } - else - { - *this = *(_DWORD *)a2; - v4 = *(_DWORD *)(a2 + 4); - *(_DWORD *)a2 = a2 + 8; - this[1] = v4; - v5 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = 0; - *(_BYTE *)(a2 + 8) = 0; - this[2] = v5; - } - return result; -} - -//----- (004DCD50) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3) -{ - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - *this = this + 2; - v4 = -1; - if ( Str ) - v4 = (int)&Str[strlen(Str)]; - LOBYTE(v6) = 0; - return std::string::_M_construct(this, Str, v4, v6); -} -// 4DCD81: variable 'v6' is possibly undefined - -//----- (004DCDA0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - *this = this + 2; - LOBYTE(a4) = 0; - return std::string::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (004DCDC0) -------------------------------------------------------- -char *__thiscall std::string::basic_string(_DWORD *this, int a2) -{ - char *result; // eax - - result = (char *)(this + 2); - this[1] = 0; - *this = this + 2; - *((_BYTE *)this + 8) = 0; - return result; -} - -//----- (004DCDE0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, int a2) -{ - _BYTE *result; // eax - char *Src; // edi - size_t Size; // esi - char v6; // dl - - result = this + 8; - *(_DWORD *)this = this + 8; - Src = *(char **)a2; - Size = *(_DWORD *)(a2 + 4); - if ( Size + *(_DWORD *)a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - v6 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v6; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (004DCE90) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3) -{ - _BYTE *result; // eax - size_t Size; // esi - char *Src; // edi - - result = this + 8; - *(_DWORD *)this = this + 8; - Size = *(_DWORD *)(a2 + 4); - Src = *(char **)a2; - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - this[8] = *Src; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (004DCF30) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - *this = this + 2; - v4 = a2[1]; - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - LOBYTE(a4) = 0; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), *a2 + v4, a4); -} - -//----- (004DCF80) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // edi - unsigned int v5; // eax - unsigned int v6; // eax - - *this = this + 2; - v4 = a4; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - v5); - v6 = v5 - a3; - LOBYTE(a4) = 0; - if ( v6 > v4 ) - v6 = v4; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, a4); -} - -//----- (004DCFE0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - *this = this + 2; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, v5); - v6 = v5 - a3; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, v8); -} -// 4DD017: variable 'v8' is possibly undefined - -//----- (004DD050) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - *this = this + 2; - LOBYTE(a4) = 0; - return std::string::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (004DD070) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4) -{ - _BYTE *result; // eax - - result = this + 8; - *(_DWORD *)this = this + 8; - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; -LABEL_6: - memset(result, a3, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - if ( Size != 1 ) - goto LABEL_6; - this[8] = a3; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; -} - -//----- (004DD110) -------------------------------------------------------- -int __fastcall std::string::basic_string(int a1) -{ - int result; // eax - - result = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - return result; -} - -//----- (004DD130) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( - char *this, - char *Src, - int a3, - int a4) -{ - _BYTE *result; // eax - size_t Size; // ebx - - result = this + 8; - *(_DWORD *)this = this + 8; - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - this[8] = *Src; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (004DD1D0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::string::_M_construct(this, a2, a3, a4); -} - -//----- (004DD1E0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, char *Src, int a3, int a4) -{ - _BYTE *result; // eax - size_t Size; // ebx - char v7; // dl - - result = this + 8; - *(_DWORD *)this = this + 8; - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - v7 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v7; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (004DD290) -------------------------------------------------------- -_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( result + 2 == (_DWORD *)*result ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - *((_BYTE *)a2 + 8) = 0; - this[1] = v3; - return result; -} - -//----- (004DD2F0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) -{ - _BYTE *result; // eax - int v4; // ebx - int v5; // ebx - int v6; // edx - - result = (_BYTE *)a2; - *this = this + 2; - if ( result + 8 == *(_BYTE **)result ) - { - this[2] = *(_DWORD *)(a2 + 8); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - v6 = *(_DWORD *)(a2 + 4); - *(_DWORD *)(a2 + 4) = 0; - result = *(_BYTE **)a2; - this[1] = v6; - *result = 0; - } - else - { - *this = *(_DWORD *)a2; - v4 = *(_DWORD *)(a2 + 4); - *(_DWORD *)a2 = a2 + 8; - this[1] = v4; - v5 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = 0; - *(_BYTE *)(a2 + 8) = 0; - this[2] = v5; - } - return result; -} - -//----- (004DD360) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, char *Str, int a3) -{ - int v4; // eax - int v6; // [esp+8h] [ebp-14h] - - *this = this + 2; - v4 = -1; - if ( Str ) - v4 = (int)&Str[strlen(Str)]; - LOBYTE(v6) = 0; - return std::string::_M_construct(this, Str, v4, v6); -} -// 4DD391: variable 'v6' is possibly undefined - -//----- (004DD3B0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - *this = this + 2; - LOBYTE(a4) = 0; - return std::string::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (004DD3D0) -------------------------------------------------------- -char *__thiscall std::string::basic_string(_DWORD *this, int a2) -{ - char *result; // eax - - result = (char *)(this + 2); - this[1] = 0; - *this = this + 2; - *((_BYTE *)this + 8) = 0; - return result; -} - -//----- (004DD3F0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, int a2) -{ - _BYTE *result; // eax - char *Src; // edi - size_t Size; // esi - char v6; // dl - - result = this + 8; - *(_DWORD *)this = this + 8; - Src = *(char **)a2; - Size = *(_DWORD *)(a2 + 4); - if ( Size + *(_DWORD *)a2 && !Src ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - v6 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v6; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (004DD4A0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, int a2, int a3) -{ - _BYTE *result; // eax - size_t Size; // esi - char *Src; // edi - - result = this + 8; - *(_DWORD *)this = this + 8; - Size = *(_DWORD *)(a2 + 4); - Src = *(char **)a2; - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - this[8] = *Src; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (004DD540) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - *this = this + 2; - v4 = a2[1]; - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - LOBYTE(a4) = 0; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), *a2 + v4, a4); -} - -//----- (004DD590) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // edi - unsigned int v5; // eax - unsigned int v6; // eax - - *this = this + 2; - v4 = a4; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - v5); - v6 = v5 - a3; - LOBYTE(a4) = 0; - if ( v6 > v4 ) - v6 = v4; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, a4); -} - -//----- (004DD5F0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - *this = this + 2; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, v5); - v6 = v5 - a3; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - return std::string::_M_construct(this, (_BYTE *)(a3 + *a2), a3 + *a2 + v6, v8); -} -// 4DD627: variable 'v8' is possibly undefined - -//----- (004DD660) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - *this = this + 2; - LOBYTE(a4) = 0; - return std::string::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (004DD680) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, size_t Size, char a3, int a4) -{ - _BYTE *result; // eax - - result = this + 8; - *(_DWORD *)this = this + 8; - if ( Size > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; -LABEL_6: - memset(result, a3, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - if ( Size != 1 ) - goto LABEL_6; - this[8] = a3; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; -} - -//----- (004DD720) -------------------------------------------------------- -int __fastcall std::string::basic_string(int a1) -{ - int result; // eax - - result = a1 + 8; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - return result; -} - -//----- (004DD740) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( - char *this, - char *Src, - int a3, - int a4) -{ - _BYTE *result; // eax - size_t Size; // ebx - - result = this + 8; - *(_DWORD *)this = this + 8; - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - this[8] = *Src; - *((_DWORD *)this + 1) = 1; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (004DD7E0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::string::_M_construct(this, a2, a3, a4); -} - -//----- (004DD7F0) -------------------------------------------------------- -_BYTE *__thiscall std::string::basic_string(char *this, char *Src, int a3, int a4) -{ - _BYTE *result; // eax - size_t Size; // ebx - char v7; // dl - - result = this + 8; - *(_DWORD *)this = this + 8; - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) - { - if ( Size > 0x3FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - result = operator new(Size + 1); - *((_DWORD *)this + 2) = Size; - *(_DWORD *)this = result; - } - else - { - if ( Size == 1 ) - { - v7 = *Src; - *((_DWORD *)this + 1) = 1; - this[8] = v7; - this[9] = 0; - return result; - } - if ( !Size ) - { - *((_DWORD *)this + 1) = 0; - *result = 0; - return result; - } - } - memcpy(result, Src, Size); - result = *(_BYTE **)this; - *((_DWORD *)this + 1) = Size; - result[Size] = 0; - return result; -} - -//----- (004DD8A0) -------------------------------------------------------- -void __fastcall std::string::~string(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (004DD8D0) -------------------------------------------------------- -void __fastcall std::string::~string(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (004DD900) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *a2) -{ - _DWORD *v3; // eax - _DWORD *v4; // ecx - int v5; // edx - int v6; // ebp - - v3 = (_DWORD *)*this; - v4 = (_DWORD *)*a2; - v5 = a2[1]; - if ( a2 + 2 != (_DWORD *)*a2 ) - { - if ( v3 == this + 2 ) - { - *this = v4; - this[1] = v5; - this[2] = a2[2]; - } - else - { - *this = v4; - v6 = this[2]; - this[1] = v5; - this[2] = a2[2]; - if ( v3 ) - { - *a2 = v3; - a2[2] = v6; - goto LABEL_5; - } - } - *a2 = a2 + 2; - v3 = a2 + 2; - goto LABEL_5; - } - if ( v5 ) - { - if ( v5 == 1 ) - *(_BYTE *)v3 = *((_BYTE *)a2 + 8); - else - memcpy(v3, a2 + 2, a2[1]); - v3 = (_DWORD *)*this; - v5 = a2[1]; - } - this[1] = v5; - *((_BYTE *)v3 + v5) = 0; - v3 = (_DWORD *)*a2; -LABEL_5: - a2[1] = 0; - *(_BYTE *)v3 = 0; - return this; -} - -//----- (004DD9B0) -------------------------------------------------------- -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *Str) -{ - size_t v3; // eax - - v3 = strlen(Str); - return std::string::_M_replace(this, 0, (size_t)this[1], Str, v3); -} - -//----- (004DD9F0) -------------------------------------------------------- -void *__thiscall std::string::operator=(void *this, int a2) -{ - std::string::_M_assign((int)this, a2); - return this; -} - -//----- (004DDA10) -------------------------------------------------------- -unsigned int **__thiscall std::string::operator=(unsigned int **this, char *a2, size_t a3) -{ - std::string::_M_replace(this, 0, (size_t)this[1], a2, a3); - return this; -} - -//----- (004DDA50) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator=(_DWORD *this, char a2) -{ - std::string::_M_replace_aux(this, 0, this[1], 1u, a2); - return this; -} - -//----- (004DDA90) -------------------------------------------------------- -int __thiscall std::string::operator[](_DWORD *this, int a2) -{ - return a2 + *this; -} - -//----- (004DDAA0) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str) -{ - unsigned int Size; // eax - size_t v4; // ebp - _DWORD *v5; // edx - unsigned int v6; // edi - unsigned int v7; // ecx - _BYTE *v8; // edx - _DWORD *result; // eax - - Size = strlen(Str); - v4 = this[1]; - if ( Size > 0x3FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = Size + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Str, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Str; - else - memcpy(v8, Str, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - result = this; - *((_BYTE *)v5 + v6) = 0; - return result; -} - -//----- (004DDB60) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) -{ - _DWORD *v3; // edi - size_t v4; // ecx - size_t v5; // edx - _BYTE *Src; // ebp - _DWORD *v7; // eax - unsigned int v8; // esi - unsigned int v9; // edi - _BYTE *v10; // eax - - v3 = this + 2; - v4 = this[1]; - v5 = *(_DWORD *)(a2 + 4); - Src = *(_BYTE **)a2; - v7 = (_DWORD *)*this; - v8 = v5 + v4; - if ( (_DWORD *)*this == v3 ) - v9 = 15; - else - v9 = this[2]; - if ( v8 > v9 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, v5); - v7 = (_DWORD *)*this; - } - else if ( v5 ) - { - v10 = (char *)v7 + v4; - if ( v5 == 1 ) - *v10 = *Src; - else - memcpy(v10, Src, *(_DWORD *)(a2 + 4)); - v7 = (_DWORD *)*this; - } - this[1] = v8; - *((_BYTE *)v7 + v8) = 0; - return this; -} - -//----- (004DDC00) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *Src, size_t Size) -{ - size_t v4; // edi - _DWORD *v5; // eax - unsigned int v6; // esi - unsigned int v7; // ecx - _BYTE *v8; // eax - - v4 = this[1]; - if ( Size > 0x3FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = Size + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 15; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::string::_M_mutate((int)this, v4, 0, Src, Size); - v5 = (_DWORD *)*this; - } - else if ( Size ) - { - v8 = (char *)v5 + v4; - if ( Size == 1 ) - *v8 = *Src; - else - memcpy(v8, Src, Size); - v5 = (_DWORD *)*this; - } - this[1] = v6; - *((_BYTE *)v5 + v6) = 0; - return this; -} - -//----- (004DDCC0) -------------------------------------------------------- -_DWORD *__thiscall std::string::operator+=(_DWORD *this, char a2) -{ - _DWORD *result; // eax - _DWORD *v3; // ecx - size_t v4; // ebx - _DWORD *v5; // edx - unsigned int v6; // esi - unsigned int v7; // ecx - int v8; // edx - _DWORD *v9; // [esp+1Ch] [ebp-10h] - - result = this; - v3 = this + 2; - v4 = *(v3 - 1); - v5 = (_DWORD *)*(v3 - 2); - v6 = v4 + 1; - if ( v5 == v3 ) - v7 = 15; - else - v7 = result[2]; - if ( v6 > v7 ) - { - v9 = result; - std::string::_M_mutate((int)result, v4, 0, 0, 1u); - result = v9; - v5 = (_DWORD *)*v9; - } - *((_BYTE *)v5 + v4) = a2; - v8 = *result; - result[1] = v6; - *(_BYTE *)(v8 + v4 + 1) = 0; - return result; -} - -//----- (004DDD40) -------------------------------------------------------- -void __thiscall std::wstring::_M_destroy(void **this, int a2) -{ - operator delete(*this); -} - -//----- (004DDD60) -------------------------------------------------------- -void __fastcall std::wstring::_M_dispose(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (004DDD90) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::_M_replace( - unsigned int **this, - int a2, - unsigned int a3, - char *Src, - unsigned int a5) -{ - unsigned int v5; // eax - unsigned int v7; // edi - unsigned int v8; // ecx - bool v9; // cl - unsigned int *v10; // eax - unsigned int v12; // ecx - char *v13; // eax - signed int Size; // eax - signed int v15; // edx - int v16; // esi - unsigned int *v17; // [esp+1Ch] [ebp-30h] - unsigned int v18; // [esp+1Ch] [ebp-30h] - int v19; // [esp+1Ch] [ebp-30h] - _WORD *v20; // [esp+20h] [ebp-2Ch] - bool v21; // [esp+24h] [ebp-28h] - signed int v22; // [esp+24h] [ebp-28h] - unsigned int v23; // [esp+28h] [ebp-24h] - int v24; // [esp+2Ch] [ebp-20h] - - v5 = (unsigned int)this[1]; - if ( a5 > a3 + 0x1FFFFFFF - v5 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); - v24 = a5 - a3; - v7 = v5 + a5 - a3; - v17 = *this; - if ( *this == (unsigned int *)(this + 2) ) - v8 = 7; - else - v8 = (unsigned int)this[2]; - if ( v8 < v7 ) - { - std::wstring::_M_mutate((int)this, a2, a3, Src, a5); - goto LABEL_12; - } - v20 = (_WORD *)v17 + a2; - v23 = v5 - (a3 + a2); - v9 = a3 != a5 && v5 != a3 + a2; - if ( v17 <= (unsigned int *)Src && Src <= (char *)v17 + 2 * v5 ) - { - if ( a5 && a3 >= a5 ) - { - if ( a5 != 1 ) - { - v21 = a3 != a5 && v5 != a3 + a2; - v18 = a5; - memmove(v20, Src, 2 * a5); - if ( !v21 ) - goto LABEL_12; - goto LABEL_18; - } - *v20 = *(_WORD *)Src; - } - if ( !v9 ) - goto LABEL_20; - v18 = a5; -LABEL_18: - if ( v23 == 1 ) - v20[v18] = v20[a3]; - else - memmove(&v20[v18], &v20[a3], 2 * v23); -LABEL_20: - if ( a3 >= a5 ) - goto LABEL_12; - v12 = a5; - v13 = (char *)&v20[a3]; - if ( v13 < &Src[2 * a5] ) - { - if ( v13 > Src ) - { - Size = v13 - Src; - v15 = Size; - v19 = Size >> 1; - if ( Size >> 1 == 1 ) - { - *v20 = *(_WORD *)Src; - } - else if ( v19 ) - { - v22 = Size; - memmove(v20, Src, Size); - v12 = a5; - v15 = v22; - } - v16 = a5 - v19; - if ( a5 - v19 == 1 ) - { - *(_WORD *)((char *)v20 + v15) = v20[v12]; - } - else if ( v16 ) - { - memcpy((char *)v20 + v15, &v20[v12], 2 * v16); - } - } - else if ( a5 == 1 ) - { - *v20 = *(_WORD *)&Src[2 * v24]; - } - else if ( a5 ) - { - memcpy(v20, &Src[2 * v24], 2 * a5); - } - goto LABEL_12; - } - if ( a5 != 1 ) - { - if ( a5 ) - memmove(v20, Src, 2 * a5); - goto LABEL_12; - } -LABEL_27: - *v20 = *(_WORD *)Src; - goto LABEL_12; - } - if ( v9 ) - { - if ( v23 == 1 ) - v20[a5] = v20[a3]; - else - memmove(&v20[a5], &v20[a3], 2 * v23); - } - if ( a5 ) - { - if ( a5 != 1 ) - { - memcpy(v20, Src, 2 * a5); - goto LABEL_12; - } - goto LABEL_27; - } -LABEL_12: - v10 = *this; - this[1] = (unsigned int *)v7; - *((_WORD *)v10 + v7) = 0; - return this; -} - -//----- (004DE0E0) -------------------------------------------------------- -int __cdecl std::wstring::_S_compare(int a1, int a2) -{ - return a1 - a2; -} - -//----- (004DE0F0) -------------------------------------------------------- -int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[2] = a2; - return result; -} - -//----- (004DE100) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DE110) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DE120) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DE130) -------------------------------------------------------- -int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DE140) -------------------------------------------------------- -int __thiscall std::wstring::_M_construct(_DWORD *this, unsigned int a2, __int16 a3) -{ - _WORD *v4; // ecx - int result; // eax - _WORD *v6; // eax - _WORD *v7; // edx - unsigned int v8; // eax - - if ( a2 > 7 ) - { - if ( a2 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - v6 = operator new(2 * a2 + 2); - this[2] = a2; - *this = v6; - v4 = v6; - } - else - { - v4 = (_WORD *)*this; - if ( !a2 ) - goto LABEL_3; - if ( a2 == 1 ) - { - *v4 = a3; - goto LABEL_3; - } - } - v7 = v4; - v8 = a2; - do - { - *v7++ = a3; - --v8; - } - while ( v8 ); -LABEL_3: - result = 0; - this[1] = a2; - v4[a2] = 0; - return result; -} - -//----- (004DE1C0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - size_t Size; // ebx - int v6; // edi - _WORD *result; // eax - - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v6; - *this = result; - } - else - { - result = (_WORD *)*this; - } - if ( v6 == 1 ) - { - *result = *Src; - } - else if ( v6 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v6; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (004DE260) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - size_t Size; // ebx - int v6; // edi - _WORD *result; // eax - - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v6; - *this = result; - } - else - { - result = (_WORD *)*this; - } - if ( v6 == 1 ) - { - *result = *Src; - } - else if ( v6 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v6; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (004DE300) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // ebx - int v6; // ebp - _WORD *result; // eax - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v6; - *this = result; - } - else - { - result = (_WORD *)*this; - } - if ( v6 == 1 ) - { - *result = *Src; - } - else if ( v6 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v6; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (004DE3C0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3) -{ - int v4; // ebp - _WORD *result; // eax - int v6; // edx - int v7[8]; // [esp+1Ch] [ebp-20h] BYREF - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v4 = (a3 - (int)Src) >> 1; - v7[0] = v4; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - result = std::wstring::_M_create((unsigned int *)v7, 0); - *this = result; - this[2] = v7[0]; - } - else - { - result = (_WORD *)*this; - } - if ( v4 == 1 ) - { - *result = *Src; - } - else if ( v4 ) - { - memcpy(result, Src, a3 - (_DWORD)Src); - result = (_WORD *)*this; - } - v6 = v7[0]; - this[1] = v7[0]; - result[v6] = 0; - return result; -} -// 4DE3C0: using guessed type unsigned int var_20[8]; - -//----- (004DE460) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3) -{ - int v4; // ebp - _WORD *result; // eax - int v6; // edx - int v7[8]; // [esp+1Ch] [ebp-20h] BYREF - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v4 = (a3 - (int)Src) >> 1; - v7[0] = v4; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - result = std::wstring::_M_create((unsigned int *)v7, 0); - *this = result; - this[2] = v7[0]; - } - else - { - result = (_WORD *)*this; - } - if ( v4 == 1 ) - { - *result = *Src; - } - else if ( v4 ) - { - memcpy(result, Src, a3 - (_DWORD)Src); - result = (_WORD *)*this; - } - v6 = v7[0]; - this[1] = v7[0]; - result[v6] = 0; - return result; -} -// 4DE460: using guessed type unsigned int var_20[8]; - -//----- (004DE500) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3, int a4) -{ - size_t Size; // ebx - int v6; // ebp - _WORD *result; // eax - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - Size = a3 - (_DWORD)Src; - v6 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v6 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v6; - *this = result; - } - else - { - result = (_WORD *)*this; - } - if ( v6 == 1 ) - { - *result = *Src; - } - else if ( v6 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v6; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (004DE5C0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::_M_construct(_DWORD *this, _WORD *Src, int a3) -{ - int v4; // ebp - _WORD *result; // eax - int v6; // edx - int v7[8]; // [esp+1Ch] [ebp-20h] BYREF - - if ( !Src && a3 ) - std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); - v4 = (a3 - (int)Src) >> 1; - v7[0] = v4; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - result = std::wstring::_M_create((unsigned int *)v7, 0); - *this = result; - this[2] = v7[0]; - } - else - { - result = (_WORD *)*this; - } - if ( v4 == 1 ) - { - *result = *Src; - } - else if ( v4 ) - { - memcpy(result, Src, a3 - (_DWORD)Src); - result = (_WORD *)*this; - } - v6 = v7[0]; - this[1] = v7[0]; - result[v6] = 0; - return result; -} -// 4DE5C0: using guessed type unsigned int var_20[8]; - -//----- (004DE660) -------------------------------------------------------- -int __fastcall std::wstring::_M_local_data(int a1) -{ - return a1 + 8; -} - -//----- (004DE670) -------------------------------------------------------- -int __thiscall std::wstring::_M_set_length(int *this, int a2) -{ - int result; // eax - int v3; // edx - - result = a2; - v3 = *this; - this[1] = a2; - *(_WORD *)(v3 + 2 * a2) = 0; - return result; -} - -//----- (004DE690) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004DE6D0) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004DE710) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004DE750) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy_chars(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - int v4; // ecx - - result = Size - (_DWORD)Src; - v4 = (int)(Size - (_DWORD)Src) >> 1; - if ( v4 == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( v4 ) - { - return (int)memcpy(a1, Src, Size - (_DWORD)Src); - } - return result; -} - -//----- (004DE790) -------------------------------------------------------- -void __fastcall std::wstring::shrink_to_fit(_DWORD *a1) -{ - unsigned int v1; // eax - - if ( (_DWORD *)*a1 == a1 + 2 ) - v1 = 7; - else - v1 = a1[2]; - if ( a1[1] < v1 ) - std::wstring::reserve((int)a1, 0); -} - -//----- (004DE830) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::_M_replace_aux(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5) -{ - int v6; // edx - unsigned int v7; // ebx - _DWORD *v8; // ecx - unsigned int v9; // edi - unsigned int v10; // ebp - int v11; // edx - char *v12; // ebp - char *Src; // eax - char *v14; // ebp - _WORD *v15; // eax - - v6 = this[1]; - v7 = a4; - if ( a4 > a3 + 0x1FFFFFFF - v6 ) - std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); - v8 = (_DWORD *)*this; - v9 = v6 + a4 - a3; - if ( (_DWORD *)*this == this + 2 ) - v10 = 7; - else - v10 = this[2]; - if ( v10 < v9 ) - { - std::wstring::_M_mutate((int)this, a2, a3, 0, a4); - v8 = (_DWORD *)*this; - if ( !a4 ) - goto LABEL_12; - } - else - { - v11 = v6 - (a3 + a2); - if ( !v11 || a3 == a4 ) - { -LABEL_9: - if ( !a4 ) - goto LABEL_12; - goto LABEL_10; - } - v12 = (char *)v8 + 2 * a2; - Src = &v12[2 * a3]; - v14 = &v12[2 * a4]; - if ( v11 != 1 ) - { - memmove(v14, Src, 2 * v11); - v8 = (_DWORD *)*this; - goto LABEL_9; - } - *(_WORD *)v14 = *(_WORD *)Src; - if ( !a4 ) - goto LABEL_12; - } -LABEL_10: - v15 = (_WORD *)v8 + a2; - if ( a4 == 1 ) - { - *v15 = a5; - } - else - { - do - { - *v15++ = a5; - --v7; - } - while ( v7 ); - } -LABEL_12: - this[1] = v9; - *((_WORD *)v8 + v9) = 0; - return this; -} - -//----- (004DE960) -------------------------------------------------------- -int __fastcall std::wstring::_M_get_allocator(int a1) -{ - return a1; -} - -//----- (004DE970) -------------------------------------------------------- -int __thiscall std::wstring::_M_construct_aux_2(_DWORD *this, unsigned int a2, __int16 a3) -{ - _WORD *v4; // ecx - int result; // eax - _WORD *v6; // eax - _WORD *v7; // edx - unsigned int v8; // eax - - if ( a2 > 7 ) - { - if ( a2 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - v6 = operator new(2 * a2 + 2); - this[2] = a2; - *this = v6; - v4 = v6; - } - else - { - v4 = (_WORD *)*this; - if ( !a2 ) - goto LABEL_3; - if ( a2 == 1 ) - { - *v4 = a3; - goto LABEL_3; - } - } - v7 = v4; - v8 = a2; - do - { - *v7++ = a3; - --v8; - } - while ( v8 ); -LABEL_3: - result = 0; - this[1] = a2; - v4[a2] = 0; - return result; -} - -//----- (004DE9F0) -------------------------------------------------------- -unsigned int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) -{ - if ( a2 >= this[1] ) - std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); - return *this + 2 * a2; -} - -//----- (004DEA20) -------------------------------------------------------- -int __fastcall std::wstring::end(_DWORD *a1) -{ - return *a1 + 2 * a1[1]; -} - -//----- (004DEA30) -------------------------------------------------------- -int __fastcall std::wstring::back(_DWORD *a1) -{ - return *a1 + 2 * a1[1] - 2; -} - -//----- (004DEA40) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2; - return result; -} - -//----- (004DEA50) -------------------------------------------------------- -_WORD *__thiscall std::wstring::swap(_DWORD *this, _DWORD *a2) -{ - _WORD *result; // eax - _WORD *v3; // edi - _DWORD *v4; // esi - _DWORD *v5; // edx - int v6; // ebp - int v7; // edx - int v8; // edi - int v9; // edx - int v10; // ebp - int v11; // edi - int v12; // [esp+0h] [ebp-28h] - int v13; // [esp+0h] [ebp-28h] - int v14; // [esp+4h] [ebp-24h] - - result = a2; - if ( this != a2 ) - { - v3 = (_WORD *)*this; - v4 = (_DWORD *)*a2; - v5 = a2 + 2; - if ( this + 2 == (_DWORD *)*this ) - { - v8 = a2[1]; - if ( v5 == v4 ) - { - if ( this[1] ) - { - if ( !v8 ) - { - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - a2[1] = this[1]; - result = (_WORD *)*this; - this[1] = 0; - *result = 0; - return result; - } - v10 = a2[2]; - v11 = a2[3]; - v13 = a2[4]; - v14 = a2[5]; - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - this[2] = v10; - this[4] = v13; - this[3] = v11; - this[5] = v14; - v8 = a2[1]; - v9 = this[1]; - } - else - { - if ( v8 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - this[1] = a2[1]; - a2[1] = 0; - result = (_WORD *)*a2; - *(_WORD *)*a2 = 0; - return result; - } - v9 = 0; - } - } - else - { - v12 = a2[2]; - a2[2] = this[2]; - a2[3] = this[3]; - a2[4] = this[4]; - a2[5] = this[5]; - *this = v4; - *a2 = v5; - v9 = this[1]; - this[2] = v12; - } - } - else - { - v6 = this[2]; - if ( v5 == v4 ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - *a2 = v3; - *this = this + 2; - } - else - { - v7 = a2[2]; - *this = v4; - *a2 = v3; - this[2] = v7; - } - v8 = a2[1]; - v9 = this[1]; - a2[2] = v6; - } - this[1] = v8; - a2[1] = v9; - } - return result; -} - -//----- (004DEBD0) -------------------------------------------------------- -int __fastcall std::wstring::begin(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004DEBE0) -------------------------------------------------------- -_WORD *__fastcall std::wstring::clear(int a1) -{ - _WORD *result; // eax - - result = *(_WORD **)a1; - *(_DWORD *)(a1 + 4) = 0; - *result = 0; - return result; -} - -//----- (004DEBF0) -------------------------------------------------------- -char *__thiscall std::wstring::erase(int *this, char *a2) -{ - int v3; // edx - int v4; // eax - char *v5; // ecx - int v6; // eax - char *v7; // edi - int v8; // esi - int v9; // ebp - - v3 = *this; - v4 = this[1]; - v5 = a2; - v6 = v4 - 1; - v7 = &a2[-v3]; - v8 = (int)&a2[-v3] >> 1; - v9 = v6 - v8; - if ( v6 != v8 ) - { - if ( v9 == 1 ) - { - *(_WORD *)a2 = *((_WORD *)a2 + 1); - } - else - { - memmove(a2, a2 + 2, 2 * v9); - v3 = *this; - v6 = this[1] - 1; - v5 = &v7[*this]; - } - } - this[1] = v6; - *(_WORD *)(v3 + 2 * v6) = 0; - return v5; -} - -//----- (004DEC60) -------------------------------------------------------- -_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) -{ - int v4; // esi - int v5; // edi - int v6; // ecx - - v4 = (int)a2 - *this; - v5 = *this + 2 * this[1]; - v6 = v4 >> 1; - if ( a3 == v5 ) - { - this[1] = v6; - *a2 = 0; - return a2; - } - else - { - std::wstring::_M_erase(this, v6, (a3 - (int)a2) >> 1); - return (_WORD *)(v4 + *this); - } -} - -//----- (004DECD0) -------------------------------------------------------- -int __thiscall std::wstring::erase(int *this, int a2) -{ - int v3; // ebx - - v3 = a2 - *this; - std::wstring::_M_erase(this, v3 >> 1, 1); - return v3 + *this; -} - -//----- (004DED00) -------------------------------------------------------- -_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) -{ - int v4; // esi - int v5; // edi - int v6; // ecx - - v4 = (int)a2 - *this; - v5 = *this + 2 * this[1]; - v6 = v4 >> 1; - if ( a3 == v5 ) - { - this[1] = v6; - *a2 = 0; - return a2; - } - else - { - std::wstring::_M_erase(this, v6, (a3 - (int)a2) >> 1); - return (_WORD *)(v4 + *this); - } -} - -//----- (004DED70) -------------------------------------------------------- -int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3) -{ - int *result; // eax - unsigned int v4; // edx - unsigned int v5; // edx - int v6; // edx - - result = this; - v4 = this[1]; - if ( a2 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::erase", - a2, - v4); - if ( a3 == -1 ) - { - v6 = *this; - this[1] = a2; - *(_WORD *)(v6 + 2 * a2) = 0; - } - else if ( a3 ) - { - v5 = v4 - a2; - if ( v5 > a3 ) - v5 = a3; - std::wstring::_M_erase(this, a2, v5); - return this; - } - return result; -} - -//----- (004DEDF0) -------------------------------------------------------- -int __fastcall std::wstring::front(int a1) -{ - return *(_DWORD *)a1; -} - -//----- (004DEE00) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, wchar_t *String) -{ - unsigned int v3; // eax - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // edi - unsigned int v7; // ebp - _WORD *v8; // ecx - - v3 = wcslen(String); - v4 = this[1]; - if ( v3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = v4 + v3; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, this[1], 0, String, v3); - v5 = (_DWORD *)*this; - } - else if ( v3 ) - { - v8 = (_WORD *)v5 + v4; - if ( v3 == 1 ) - { - *v8 = *String; - } - else - { - memcpy(v8, String, 2 * v3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (004DEEC0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3) -{ - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // esi - unsigned int v7; // edi - _WORD *v8; // ecx - - v4 = this[1]; - if ( a3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = a3 + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, v4, 0, Src, a3); - v5 = (_DWORD *)*this; - } - else if ( a3 ) - { - v8 = (_WORD *)v5 + v4; - if ( a3 == 1 ) - { - *v8 = *Src; - } - else - { - memcpy(v8, Src, 2 * a3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (004DEF80) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, int a2) -{ - _DWORD *v3; // edi - int v4; // ecx - int v5; // eax - _WORD *v6; // ebp - _DWORD *v7; // edx - unsigned int v8; // esi - unsigned int v9; // edi - _WORD *v10; // ecx - - v3 = this + 2; - v4 = this[1]; - v5 = *(_DWORD *)(a2 + 4); - v6 = *(_WORD **)a2; - v7 = (_DWORD *)*this; - v8 = v5 + v4; - if ( (_DWORD *)*this == v3 ) - v9 = 7; - else - v9 = this[2]; - if ( v8 > v9 ) - { - std::wstring::_M_mutate((int)this, v4, 0, v6, v5); - v7 = (_DWORD *)*this; - } - else if ( v5 ) - { - v10 = (_WORD *)v7 + v4; - if ( v5 == 1 ) - { - *v10 = *v6; - } - else - { - memcpy(v10, *(const void **)a2, 2 * v5); - v7 = (_DWORD *)*this; - } - } - this[1] = v8; - *((_WORD *)v7 + v8) = 0; - return this; -} - -//----- (004DF020) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - int v5; // eax - _WORD *Src; // ebp - int v7; // ecx - _DWORD *v8; // edx - unsigned int v9; // esi - unsigned int v10; // edi - _WORD *v11; // ecx - - v5 = a4; - if ( a2[1] - a3 <= a4 ) - v5 = a2[1] - a3; - if ( a3 > a2[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::append", - a3, - a2[1]); - Src = (_WORD *)(*a2 + 2 * a3); - v7 = this[1]; - v8 = (_DWORD *)*this; - v9 = v5 + v7; - if ( (_DWORD *)*this == this + 2 ) - v10 = 7; - else - v10 = this[2]; - if ( v9 > v10 ) - { - std::wstring::_M_mutate((int)this, this[1], 0, Src, v5); - v8 = (_DWORD *)*this; - } - else if ( v5 ) - { - v11 = (_WORD *)v8 + v7; - if ( v5 == 1 ) - { - *v11 = *Src; - } - else - { - memcpy(v11, Src, 2 * v5); - v8 = (_DWORD *)*this; - } - } - this[1] = v9; - *((_WORD *)v8 + v9) = 0; - return this; -} - -//----- (004DF100) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, _WORD *Src, unsigned int a3) -{ - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // esi - unsigned int v7; // ebp - _WORD *v8; // ecx - - v4 = this[1]; - if ( a3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = a3 + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, v4, 0, Src, a3); - v5 = (_DWORD *)*this; - } - else if ( a3 ) - { - v8 = (_WORD *)v5 + v4; - if ( a3 == 1 ) - { - *v8 = *Src; - } - else - { - memcpy(v8, Src, 2 * a3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (004DF1C0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::append(_DWORD *this, unsigned int a2, __int16 a3) -{ - return std::wstring::_M_replace_aux(this, this[1], 0, a2, a3); -} - -//----- (004DF1F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::assign(_DWORD *this, _DWORD *a2) -{ - _DWORD *v3; // eax - _DWORD *v4; // edi - _DWORD *v5; // ecx - int v6; // edx - int v7; // ebp - int v9; // edi - int v10; // [esp+1Ch] [ebp-20h] - - v3 = (_DWORD *)*this; - v4 = (_DWORD *)*a2; - v5 = a2 + 2; - v6 = a2[1]; - if ( (_DWORD *)*a2 != a2 + 2 ) - { - v10 = a2[2]; - if ( v3 == this + 2 ) - { - *this = v4; - this[1] = v6; - this[2] = v10; - } - else - { - this[1] = v6; - v7 = this[2]; - *this = v4; - this[2] = v10; - if ( v3 ) - { - *a2 = v3; - a2[2] = v7; - goto LABEL_5; - } - } - *a2 = v5; - v3 = a2 + 2; - goto LABEL_5; - } - v9 = 2 * v6; - if ( v6 ) - { - if ( v6 == 1 ) - { - *(_WORD *)v3 = *((_WORD *)a2 + 4); - v9 = 2; - } - else - { - memcpy(v3, a2 + 2, 2 * v6); - v6 = a2[1]; - v3 = (_DWORD *)*this; - v5 = (_DWORD *)*a2; - v9 = 2 * v6; - } - } - this[1] = v6; - *(_WORD *)((char *)v3 + v9) = 0; - v3 = v5; -LABEL_5: - a2[1] = 0; - *(_WORD *)v3 = 0; - return this; -} - -//----- (004DF2B0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::assign(unsigned int **this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::_M_replace(this, 0, (unsigned int)this[1], (char *)String, v3); -} - -//----- (004DF2F0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::assign(unsigned int **this, char *a2, int a3) -{ - return std::wstring::_M_replace(this, 0, (unsigned int)this[1], a2, a3); -} - -//----- (004DF320) -------------------------------------------------------- -void *__thiscall std::wstring::assign(void *this, int a2) -{ - std::wstring::_M_assign((int)this, a2); - return this; -} - -//----- (004DF340) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::assign(unsigned int **this, _DWORD *a2, unsigned int a3, unsigned int a4) -{ - unsigned int v4; // eax - - v4 = a2[1] - a3; - if ( v4 > a4 ) - v4 = a4; - if ( a3 > a2[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::assign", - a3, - a2[1]); - return std::wstring::_M_replace(this, 0, (unsigned int)this[1], (char *)(*a2 + 2 * a3), v4); -} - -//----- (004DF3B0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::assign(unsigned int **this, char *a2, int a3) -{ - return std::wstring::_M_replace(this, 0, (unsigned int)this[1], a2, a3); -} - -//----- (004DF3E0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::assign(_DWORD *this, unsigned int a2, __int16 a3) -{ - return std::wstring::_M_replace_aux(this, 0, this[1], a2, a3); -} - -//----- (004DF410) -------------------------------------------------------- -unsigned int __thiscall std::wstring::insert(unsigned int **this, int a2, char *a3, int a4) -{ - int v5; // esi - unsigned int v6; // ecx - - v5 = a2 - (_DWORD)*this; - v6 = (unsigned int)this[1]; - if ( v5 >> 1 > v6 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5 >> 1, - v6); - std::wstring::_M_replace(this, v5 >> 1, 0, a3, (2 * a4) >> 1); - return (unsigned int)*this + v5; -} - -//----- (004DF480) -------------------------------------------------------- -int __thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4) -{ - int v5; // ebx - - v5 = a2 - *this; - std::wstring::_M_replace_aux(this, v5 >> 1, 0, a3, a4); - return v5 + *this; -} - -//----- (004DF4D0) -------------------------------------------------------- -int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3) -{ - int v4; // ebx - - v4 = a2 - *this; - std::wstring::_M_replace_aux(this, v4 >> 1, 0, 1u, a3); - return v4 + *this; -} - -//----- (004DF520) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::insert(unsigned int **this, int a2, char *a3, int a4) -{ - unsigned int v4; // eax - - v4 = (a2 - (int)*this) >> 1; - if ( v4 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - (size_t)this[1]); - return std::wstring::_M_replace(this, v4, 0, a3, a4); -} - -//----- (004DF580) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::insert(_DWORD *this, int a2, unsigned int a3, __int16 a4) -{ - return std::wstring::_M_replace_aux(this, (a2 - *this) >> 1, 0, a3, a4); -} - -//----- (004DF5C0) -------------------------------------------------------- -int __thiscall std::wstring::insert(_DWORD *this, int a2, __int16 a3) -{ - int v4; // ebx - - v4 = a2 - *this; - std::wstring::_M_replace_aux(this, v4 >> 1, 0, 1u, a3); - return v4 + *this; -} - -//----- (004DF610) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::insert(unsigned int **this, unsigned int a2, wchar_t *String) -{ - unsigned int v4; // eax - - v4 = wcslen(String); - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::wstring::_M_replace(this, a2, 0, (char *)String, v4); -} - -//----- (004DF680) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::insert(unsigned int **this, unsigned int a2, char *a3, int a4) -{ - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::wstring::_M_replace(this, a2, 0, a3, a4); -} - -//----- (004DF6E0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::insert(unsigned int **this, unsigned int a2, int a3) -{ - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::wstring::_M_replace(this, a2, 0, *(char **)a3, *(_DWORD *)(a3 + 4)); -} - -//----- (004DF740) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::insert( - unsigned int **this, - unsigned int a2, - _DWORD *a3, - unsigned int a4, - unsigned int a5) -{ - unsigned int v5; // eax - - v5 = a5; - if ( a3[1] - a4 <= a5 ) - v5 = a3[1] - a4; - if ( a4 > a3[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a4, - a3[1]); - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::wstring::_M_replace(this, a2, 0, (char *)(*a3 + 2 * a4), v5); -} - -//----- (004DF7D0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::insert(_DWORD *this, unsigned int a2, unsigned int a3, __int16 a4) -{ - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::insert", - a2, - this[1]); - return std::wstring::_M_replace_aux(this, a2, 0, a3, a4); -} - -//----- (004DF830) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>( - unsigned int **this, - int a2, - char *a3, - int a4) -{ - unsigned int v4; // eax - - v4 = (a2 - (int)*this) >> 1; - if ( v4 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - (size_t)this[1]); - return std::wstring::_M_replace(this, v4, 0, a3, (a4 - (int)a3) >> 1); -} - -//----- (004DF8A0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - - result = this; - *this = *a2 + 2 * a2[1]; - return result; -} - -//----- (004DF8C0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2) -{ - unsigned int v2; // edx - _DWORD *result; // eax - int v4; // edx - - v2 = this[1]; - result = (_DWORD *)a2; - if ( a2 > v2 ) - return std::wstring::_M_replace_aux(this, v2, 0, a2 - v2, 0); - if ( a2 < v2 ) - { - v4 = *this; - this[1] = a2; - *(_WORD *)(v4 + 2 * a2) = 0; - } - return result; -} - -//----- (004DF910) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::resize(int *this, unsigned int a2, __int16 a3) -{ - unsigned int v3; // edx - _DWORD *result; // eax - int v5; // edx - - v3 = this[1]; - result = (_DWORD *)a2; - if ( v3 < a2 ) - return std::wstring::_M_replace_aux(this, v3, 0, a2 - v3, a3); - if ( v3 > a2 ) - { - v5 = *this; - this[1] = a2; - *(_WORD *)(v5 + 2 * a2) = 0; - } - return result; -} - -//----- (004DF970) -------------------------------------------------------- -int __thiscall std::wstring::_M_data(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - *this = a2; - return result; -} - -//----- (004DF980) -------------------------------------------------------- -int __cdecl std::wstring::_S_copy(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memcpy(a1, Src, 2 * Size); - } - return result; -} - -//----- (004DF9C0) -------------------------------------------------------- -int __cdecl std::wstring::_S_move(_WORD *a1, unsigned __int16 *Src, size_t Size) -{ - int result; // eax - - result = Size; - if ( Size == 1 ) - { - result = *Src; - *a1 = result; - } - else if ( Size ) - { - return (int)memmove(a1, Src, 2 * Size); - } - return result; -} - -//----- (004DFA00) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (004DFA70) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (004DFAE0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, int a4) -{ - unsigned int v4; // edx - unsigned int v5; // eax - - v4 = (a2 - (int)*this) >> 1; - v5 = (a3 - a2) >> 1; - if ( v5 > (unsigned int)this[1] - v4 ) - v5 = (unsigned int)this[1] - v4; - if ( v4 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - (size_t)this[1]); - return std::wstring::_M_replace(this, v4, v5, *(char **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (004DFB50) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, wchar_t *String) -{ - unsigned int v5; // ebp - unsigned int v6; // ecx - unsigned int v7; // edx - unsigned int v8; // eax - - v5 = (unsigned int)this[1]; - v6 = wcslen(String); - v7 = (a2 - (int)*this) >> 1; - v8 = (a3 - a2) >> 1; - if ( v8 > (unsigned int)this[1] - v7 ) - v8 = (unsigned int)this[1] - v7; - if ( v7 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v7, - (size_t)this[1]); - return std::wstring::_M_replace(this, v7, v8, (char *)String, v6); -} - -//----- (004DFBD0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (004DFC40) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, a5); -} - -//----- (004DFCB0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (004DFD20) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, a5); -} - -//----- (004DFD90) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5) -{ - return std::wstring::_M_replace_aux(this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); -} - -//----- (004DFDC0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (004DFE30) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, wchar_t *String) -{ - unsigned int v5; // ebp - unsigned int v6; // ecx - unsigned int v7; // edx - unsigned int v8; // eax - - v5 = (unsigned int)this[1]; - v6 = wcslen(String); - v7 = (a2 - (int)*this) >> 1; - v8 = (a3 - a2) >> 1; - if ( v8 > (unsigned int)this[1] - v7 ) - v8 = (unsigned int)this[1] - v7; - if ( v7 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v7, - (size_t)this[1]); - return std::wstring::_M_replace(this, v7, v8, (char *)String, v6); -} - -//----- (004DFEB0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (004DFF20) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, a5); -} - -//----- (004DFF90) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, int a4) -{ - unsigned int v4; // edx - unsigned int v5; // eax - - v4 = (a2 - (int)*this) >> 1; - v5 = (a3 - a2) >> 1; - if ( v5 > (unsigned int)this[1] - v4 ) - v5 = (unsigned int)this[1] - v4; - if ( v4 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v4, - (size_t)this[1]); - return std::wstring::_M_replace(this, v4, v5, *(char **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (004E0000) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (004E0070) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, int a2, int a3, char *a4, int a5) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = (a2 - (int)*this) >> 1; - v6 = (a3 - a2) >> 1; - if ( v6 > (unsigned int)this[1] - v5 ) - v6 = (unsigned int)this[1] - v5; - if ( v5 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - v5, - (size_t)this[1]); - return std::wstring::_M_replace(this, v5, v6, a4, (a5 - (int)a4) >> 1); -} - -//----- (004E00E0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::replace(_DWORD *this, int a2, int a3, unsigned int a4, __int16 a5) -{ - return std::wstring::_M_replace_aux(this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); -} - -//----- (004E0110) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, unsigned int a2, unsigned int a3, wchar_t *String) -{ - unsigned int v5; // edx - unsigned int v6; // eax - - v5 = wcslen(String); - v6 = (unsigned int)this[1] - a2; - if ( v6 > a3 ) - v6 = a3; - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::wstring::_M_replace(this, a2, v6, (char *)String, v5); -} - -//----- (004E0180) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace( - unsigned int **this, - unsigned int a2, - unsigned int a3, - char *a4, - int a5) -{ - unsigned int v5; // eax - - v5 = (unsigned int)this[1] - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::wstring::_M_replace(this, a2, v5, a4, a5); -} - -//----- (004E01E0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace(unsigned int **this, unsigned int a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - v4 = (unsigned int)this[1] - a2; - if ( v4 > a3 ) - v4 = a3; - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::wstring::_M_replace(this, a2, v4, *(char **)a4, *(_DWORD *)(a4 + 4)); -} - -//----- (004E0250) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::replace( - unsigned int **this, - unsigned int a2, - unsigned int a3, - _DWORD *a4, - unsigned int a5, - unsigned int a6) -{ - unsigned int v6; // eax - unsigned int v7; // edx - - v6 = a6; - if ( a4[1] - a5 <= a6 ) - v6 = a4[1] - a5; - if ( a5 > a4[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a5, - a4[1]); - v7 = (unsigned int)this[1] - a2; - if ( v7 > a3 ) - v7 = a3; - if ( a2 > (unsigned int)this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - (size_t)this[1]); - return std::wstring::_M_replace(this, a2, v7, (char *)(*a4 + 2 * a5), v6); -} - -//----- (004E02F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, unsigned int a4, __int16 a5) -{ - unsigned int v5; // eax - - v5 = this[1] - a2; - if ( v5 > a3 ) - v5 = a3; - if ( a2 > this[1] ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::replace", - a2, - this[1]); - return std::wstring::_M_replace_aux(this, a2, v5, a4, a5); -} - -//----- (004E0350) -------------------------------------------------------- -void __thiscall std::wstring::reserve(int this, unsigned int a2) -{ - unsigned int v3; // ecx - unsigned int v4; // eax - _WORD *v5; // edi - _WORD *v6; // esi - unsigned int v7; // edx - unsigned int v8; // ebp - _WORD *v9; // eax - _WORD *Block; // ebp - _WORD *v11; // edi - int v12; // eax - unsigned int v13; // eax - - v3 = *(_DWORD *)(this + 4); - v4 = a2; - if ( a2 < v3 ) - { - a2 = v3; - v4 = v3; - } - v5 = *(_WORD **)this; - v6 = (_WORD *)(this + 8); - if ( this + 8 == *(_DWORD *)this ) - v7 = 7; - else - v7 = *(_DWORD *)(this + 8); - if ( v7 != v4 ) - { - v8 = 7; - if ( v7 <= 7 ) - v8 = v7; - if ( v4 <= v8 ) - { - if ( v6 != v5 ) - { - if ( v3 ) - { - if ( v3 != -1 ) - memcpy((void *)(this + 8), *(const void **)this, 2 * (v3 + 1)); - } - else - { - *(_WORD *)(this + 8) = *v5; - } - operator delete(v5); - *(_DWORD *)this = v6; - } - } - else - { - v9 = std::wstring::_M_create(&a2, v7); - Block = *(_WORD **)this; - v11 = v9; - v12 = *(_DWORD *)(this + 4); - if ( v12 ) - { - if ( v12 != -1 ) - memcpy(v11, *(const void **)this, 2 * (v12 + 1)); - } - else - { - *v11 = *Block; - } - if ( Block != v6 ) - operator delete(Block); - v13 = a2; - *(_DWORD *)this = v11; - *(_DWORD *)(this + 8) = v13; - } - } -} - -//----- (004E0460) -------------------------------------------------------- -int __thiscall std::wstring::_M_erase(int *this, int a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // ebp - _WORD *v7; // edi - int result; // eax - - v4 = this[1]; - v5 = *this; - v6 = v4 - (a2 + a3); - if ( v4 != a2 + a3 && a3 ) - { - v7 = (_WORD *)(v5 + 2 * a2); - if ( v6 == 1 ) - { - *v7 = *(_WORD *)(v5 + 2 * (a2 + a3)); - } - else - { - memmove(v7, (const void *)(v5 + 2 * (a2 + a3)), 2 * v6); - v5 = *this; - v4 = this[1]; - } - } - result = v4 - a3; - this[1] = result; - *(_WORD *)(v5 + 2 * result) = 0; - return result; -} - -//----- (004E04D0) -------------------------------------------------------- -int __fastcall std::wstring::pop_back(int *a1) -{ - int v1; // edx - int result; // eax - - v1 = *a1; - result = a1[1] - 1; - a1[1] = result; - *(_WORD *)(v1 + 2 * result) = 0; - return result; -} - -//----- (004E04F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::_M_append(_DWORD *this, _WORD *Src, int a3) -{ - _DWORD *v4; // edi - int v5; // ecx - _DWORD *v6; // edx - unsigned int v7; // esi - unsigned int v8; // edi - _WORD *v9; // ecx - - v4 = this + 2; - v5 = this[1]; - v6 = (_DWORD *)*this; - v7 = v5 + a3; - if ( (_DWORD *)*this == v4 ) - v8 = 7; - else - v8 = this[2]; - if ( v7 > v8 ) - { - std::wstring::_M_mutate((int)this, v5, 0, Src, a3); - v6 = (_DWORD *)*this; - } - else if ( a3 ) - { - v9 = (_WORD *)v6 + v5; - if ( a3 == 1 ) - { - *v9 = *Src; - } - else - { - memcpy(v9, Src, 2 * a3); - v6 = (_DWORD *)*this; - } - } - this[1] = v7; - *((_WORD *)v6 + v7) = 0; - return this; -} - -//----- (004E0590) -------------------------------------------------------- -void __thiscall std::wstring::_M_assign(int this, int a2) -{ - _WORD *v2; // esi - unsigned int v3; // edi - unsigned int v5; // eax - size_t Size; // eax - _WORD *Src; // edx - int v8; // eax - int v9; // [esp+1Ch] [ebp-30h] - int v10[8]; // [esp+2Ch] [ebp-20h] BYREF - - if ( this != a2 ) - { - v2 = *(_WORD **)this; - v3 = *(_DWORD *)(a2 + 4); - if ( this + 8 == *(_DWORD *)this ) - v5 = 7; - else - v5 = *(_DWORD *)(this + 8); - if ( v5 < v3 ) - { - v9 = this + 8; - v10[0] = *(_DWORD *)(a2 + 4); - v2 = std::wstring::_M_create((unsigned int *)v10, v5); - if ( v9 != *(_DWORD *)this ) - operator delete(*(void **)this); - v8 = v10[0]; - *(_DWORD *)this = v2; - *(_DWORD *)(this + 8) = v8; - Size = 2 * v3; - if ( !v3 ) - goto LABEL_8; - } - else - { - Size = 2 * v3; - if ( !v3 ) - { -LABEL_8: - *(_DWORD *)(this + 4) = v3; - v2[v3] = 0; - return; - } - } - Src = *(_WORD **)a2; - if ( v3 == 1 ) - { - *v2 = *Src; - } - else - { - memcpy(v2, Src, Size); - v2 = *(_WORD **)this; - } - goto LABEL_8; - } -} -// 4E0590: using guessed type unsigned int var_20[8]; - -//----- (004E0650) -------------------------------------------------------- -void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2) -{ - unsigned int v2; // eax - unsigned int v3; // edx - - v2 = *a1; - if ( *a1 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( v2 > a2 ) - { - v3 = 2 * a2; - if ( v2 < 2 * a2 ) - { - if ( v3 > 0x1FFFFFFF ) - { - *a1 = 0x1FFFFFFF; - return operator new(0x40000000u); - } - *a1 = v3; - v2 = 2 * a2; - } - } - return operator new(2 * v2 + 2); -} - -//----- (004E06C0) -------------------------------------------------------- -int __thiscall std::wstring::_M_length(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[1] = a2; - return result; -} - -//----- (004E06D0) -------------------------------------------------------- -int __thiscall std::wstring::_M_mutate(int this, int a2, int a3, _WORD *a4, int a5) -{ - _WORD *v5; // ebp - unsigned int v7; // eax - _WORD *v8; // eax - _WORD *Block; // edx - _WORD *v10; // edi - _WORD *v11; // ecx - int result; // eax - _WORD *Src; // [esp+4h] [ebp-48h] - int v14; // [esp+14h] [ebp-38h] - int v15; // [esp+18h] [ebp-34h] - _WORD *v16; // [esp+18h] [ebp-34h] - _WORD *v17; // [esp+1Ch] [ebp-30h] - _WORD *v18; // [esp+1Ch] [ebp-30h] - int v19[8]; // [esp+2Ch] [ebp-20h] BYREF - - v5 = (_WORD *)(this + 8); - v15 = a2 + a3; - v14 = *(_DWORD *)(this + 4) - (a2 + a3); - v19[0] = *(_DWORD *)(this + 4) + a5 - a3; - if ( this + 8 == *(_DWORD *)this ) - v7 = 7; - else - v7 = *(_DWORD *)(this + 8); - v8 = std::wstring::_M_create((unsigned int *)v19, v7); - Block = *(_WORD **)this; - v10 = v8; - if ( a2 ) - { - if ( a2 == 1 ) - { - *v8 = *Block; - } - else - { - v17 = *(_WORD **)this; - memcpy(v8, *(const void **)this, 2 * a2); - Block = v17; - } - } - if ( a4 && a5 ) - { - if ( a5 == 1 ) - { - v10[a2] = *a4; - } - else - { - v18 = Block; - memcpy(&v10[a2], a4, 2 * a5); - Block = v18; - } - } - if ( v14 ) - { - v11 = &v10[a5 + a2]; - if ( v14 == 1 ) - { - *v11 = Block[v15]; - } - else - { - Src = &Block[v15]; - v16 = Block; - memcpy(v11, Src, 2 * v14); - Block = v16; - } - } - if ( v5 != Block ) - operator delete(Block); - result = v19[0]; - *(_DWORD *)this = v10; - *(_DWORD *)(this + 8) = result; - return result; -} -// 4E06D0: using guessed type unsigned int var_20[8]; - -//----- (004E0830) -------------------------------------------------------- -int __cdecl std::wstring::_S_assign(_WORD *a1, int a2, __int16 a3) -{ - int result; // eax - _WORD *v4; // edx - - result = a2; - v4 = a1; - if ( a2 == 1 ) - { - *a1 = a3; - } - else if ( a2 ) - { - do - { - *v4++ = a3; - --result; - } - while ( result ); - } - return result; -} - -//----- (004E0870) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::push_back(_DWORD *this, __int16 a2) -{ - int v3; // esi - _DWORD *result; // eax - unsigned int v5; // edi - unsigned int v6; // edx - - v3 = this[1]; - result = (_DWORD *)*this; - v5 = v3 + 1; - if ( (_DWORD *)*this == this + 2 ) - v6 = 7; - else - v6 = this[2]; - if ( v5 > v6 ) - { - std::wstring::_M_mutate((int)this, v3, 0, 0, 1); - result = (_DWORD *)*this; - } - *((_WORD *)result + v3) = a2; - this[1] = v5; - *((_WORD *)result + v3 + 1) = 0; - return result; -} - -//----- (004E08F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( result + 2 == (_DWORD *)*result ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - *((_WORD *)a2 + 4) = 0; - this[1] = v3; - return result; -} - -//----- (004E0950) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) -{ - _WORD *result; // eax - int v4; // ebx - int v5; // ebx - int v6; // edx - - result = (_WORD *)a2; - *this = this + 2; - if ( result + 4 == *(_WORD **)result ) - { - this[2] = *(_DWORD *)(a2 + 8); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - v6 = *(_DWORD *)(a2 + 4); - *(_DWORD *)(a2 + 4) = 0; - result = *(_WORD **)a2; - this[1] = v6; - *result = 0; - } - else - { - *this = *(_DWORD *)a2; - v4 = *(_DWORD *)(a2 + 4); - *(_DWORD *)a2 = a2 + 8; - this[1] = v4; - v5 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = 0; - this[2] = v5; - *(_WORD *)(a2 + 8) = 0; - } - return result; -} - -//----- (004E09D0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) -{ - int v3; // eax - size_t v4; // eax - int v6; // [esp+8h] [ebp-24h] - _DWORD *v7; // [esp+1Ch] [ebp-10h] - - *this = this + 2; - v3 = -2; - if ( String ) - { - v7 = this; - v4 = wcslen(String); - this = v7; - v3 = (int)&String[v4]; - } - LOBYTE(v6) = 0; - return std::wstring::_M_construct(this, String, v3, v6); -} -// 4E0A05: variable 'v6' is possibly undefined - -//----- (004E0A20) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (004E0A40) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - int result; // eax - - this[1] = 0; - *this = this + 2; - result = 0; - *((_WORD *)this + 4) = 0; - return result; -} - -//----- (004E0A60) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - int v3; // [esp+8h] [ebp-14h] - - *this = this + 2; - LOBYTE(v3) = 0; - return std::wstring::_M_construct(this, *(_WORD **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); -} -// 4E0A80: variable 'v3' is possibly undefined - -//----- (004E0A90) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) -{ - _WORD *result; // eax - _WORD *Src; // ebp - int v6; // edx - size_t Size; // edi - int v8; // esi - int v9; // [esp+1Ch] [ebp-20h] - int v10; // [esp+1Ch] [ebp-20h] - - result = this + 2; - *this = this + 2; - Src = *(_WORD **)a2; - v6 = *(_DWORD *)(a2 + 4); - Size = 2 * v6; - v8 = (2 * v6) >> 1; - if ( (unsigned int)(2 * v6) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v8 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - v10 = *(_DWORD *)(a2 + 4); - result = operator new(Size + 2); - this[2] = v8; - v6 = v10; - *this = result; - } - if ( v8 == 1 ) - { - *result = *Src; - } - else if ( v8 ) - { - v9 = v6; - memcpy(result, Src, Size); - result = (_WORD *)*this; - v6 = v9; - } - this[1] = v8; - result[v6] = 0; - return result; -} - -//----- (004E0B40) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - *this = this + 2; - v4 = a2[1]; - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - LOBYTE(a4) = 0; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * (v4 - a3), a4); -} - -//----- (004E0BA0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // esi - unsigned int v5; // eax - unsigned int v6; // eax - - *this = this + 2; - v4 = a4; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - v6 = v5 - a3; - LOBYTE(a4) = 0; - if ( v6 > v4 ) - v6 = v4; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, a4); -} - -//----- (004E0C10) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - *this = this + 2; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); - v6 = v5 - a3; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); -} -// 4E0C49: variable 'v8' is possibly undefined - -//----- (004E0C80) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (004E0CA0) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) -{ - _DWORD *v5; // ecx - int result; // eax - _DWORD *v7; // eax - _WORD *v8; // edx - unsigned int v9; // eax - - v5 = this + 2; - *this = v5; - if ( a2 > 7 ) - { - if ( a2 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - v7 = operator new(2 * a2 + 2); - this[2] = a2; - *this = v7; - v5 = v7; - } - else - { - if ( !a2 ) - goto LABEL_3; - if ( a2 == 1 ) - { - *((_WORD *)this + 4) = a3; - goto LABEL_3; - } - } - v8 = v5; - v9 = a2; - do - { - *v8++ = a3; - --v9; - } - while ( v9 ); -LABEL_3: - result = 0; - this[1] = a2; - *((_WORD *)v5 + a2) = 0; - return result; -} - -//----- (004E0D30) -------------------------------------------------------- -int __fastcall std::wstring::basic_string(int a1) -{ - int result; // eax - - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - result = 0; - *(_WORD *)(a1 + 8) = 0; - return result; -} - -//----- (004E0D50) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - _WORD *result; // eax - size_t Size; // ebx - int v7; // edi - - result = this + 2; - *this = this + 2; - Size = a3 - (_DWORD)Src; - v7 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v7 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v7; - *this = result; - } - if ( v7 == 1 ) - { - *result = *Src; - } - else if ( v7 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v7; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (004E0DF0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, a3, a4); -} - -//----- (004E0E00) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, a3, a4); -} - -//----- (004E0E10) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) -{ - _DWORD *result; // eax - int v3; // ebx - - result = a2; - *this = this + 2; - if ( result + 2 == (_DWORD *)*result ) - { - this[2] = a2[2]; - this[3] = a2[3]; - this[4] = a2[4]; - this[5] = a2[5]; - } - else - { - *this = *a2; - this[2] = a2[2]; - } - v3 = a2[1]; - *a2 = a2 + 2; - a2[1] = 0; - *((_WORD *)a2 + 4) = 0; - this[1] = v3; - return result; -} - -//----- (004E0E70) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) -{ - _WORD *result; // eax - int v4; // ebx - int v5; // ebx - int v6; // edx - - result = (_WORD *)a2; - *this = this + 2; - if ( result + 4 == *(_WORD **)result ) - { - this[2] = *(_DWORD *)(a2 + 8); - this[3] = *(_DWORD *)(a2 + 12); - this[4] = *(_DWORD *)(a2 + 16); - this[5] = *(_DWORD *)(a2 + 20); - v6 = *(_DWORD *)(a2 + 4); - *(_DWORD *)(a2 + 4) = 0; - result = *(_WORD **)a2; - this[1] = v6; - *result = 0; - } - else - { - *this = *(_DWORD *)a2; - v4 = *(_DWORD *)(a2 + 4); - *(_DWORD *)a2 = a2 + 8; - this[1] = v4; - v5 = *(_DWORD *)(a2 + 8); - *(_DWORD *)(a2 + 4) = 0; - this[2] = v5; - *(_WORD *)(a2 + 8) = 0; - } - return result; -} - -//----- (004E0EF0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) -{ - int v3; // eax - size_t v4; // eax - int v6; // [esp+8h] [ebp-24h] - _DWORD *v7; // [esp+1Ch] [ebp-10h] - - *this = this + 2; - v3 = -2; - if ( String ) - { - v7 = this; - v4 = wcslen(String); - this = v7; - v3 = (int)&String[v4]; - } - LOBYTE(v6) = 0; - return std::wstring::_M_construct(this, String, v3, v6); -} -// 4E0F25: variable 'v6' is possibly undefined - -//----- (004E0F40) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (004E0F60) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - int result; // eax - - this[1] = 0; - *this = this + 2; - result = 0; - *((_WORD *)this + 4) = 0; - return result; -} - -//----- (004E0F80) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2) -{ - int v3; // [esp+8h] [ebp-14h] - - *this = this + 2; - LOBYTE(v3) = 0; - return std::wstring::_M_construct(this, *(_WORD **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); -} -// 4E0FA0: variable 'v3' is possibly undefined - -//----- (004E0FB0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, int a2, int a3) -{ - _WORD *result; // eax - _WORD *Src; // ebp - int v6; // edx - size_t Size; // edi - int v8; // esi - int v9; // [esp+1Ch] [ebp-20h] - int v10; // [esp+1Ch] [ebp-20h] - - result = this + 2; - *this = this + 2; - Src = *(_WORD **)a2; - v6 = *(_DWORD *)(a2 + 4); - Size = 2 * v6; - v8 = (2 * v6) >> 1; - if ( (unsigned int)(2 * v6) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v8 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - v10 = *(_DWORD *)(a2 + 4); - result = operator new(Size + 2); - this[2] = v8; - v6 = v10; - *this = result; - } - if ( v8 == 1 ) - { - *result = *Src; - } - else if ( v8 ) - { - v9 = v6; - memcpy(result, Src, Size); - result = (_WORD *)*this; - v6 = v9; - } - this[1] = v8; - result[v6] = 0; - return result; -} - -//----- (004E1060) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // eax - - *this = this + 2; - v4 = a2[1]; - if ( a3 > v4 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - LOBYTE(a4) = 0; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * (v4 - a3), a4); -} - -//----- (004E10C0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) -{ - unsigned int v4; // esi - unsigned int v5; // eax - unsigned int v6; // eax - - *this = this + 2; - v4 = a4; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt( - "%s: __pos (which is %zu) > this->size() (which is %zu)", - "basic_string::basic_string", - a3, - a2[1]); - v6 = v5 - a3; - LOBYTE(a4) = 0; - if ( v6 > v4 ) - v6 = v4; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, a4); -} - -//----- (004E1130) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) -{ - unsigned int v5; // eax - unsigned int v6; // eax - int v8; // [esp+8h] [ebp-14h] - - *this = this + 2; - v5 = a2[1]; - if ( a3 > v5 ) - std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); - v6 = v5 - a3; - LOBYTE(v8) = 0; - if ( v6 > a4 ) - v6 = a4; - return std::wstring::_M_construct(this, (_WORD *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); -} -// 4E1169: variable 'v8' is possibly undefined - -//----- (004E11A0) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); -} - -//----- (004E11C0) -------------------------------------------------------- -int __thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, __int16 a3, int a4) -{ - _DWORD *v5; // ecx - int result; // eax - _DWORD *v7; // eax - _WORD *v8; // edx - unsigned int v9; // eax - - v5 = this + 2; - *this = v5; - if ( a2 > 7 ) - { - if ( a2 > 0x1FFFFFFF ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - v7 = operator new(2 * a2 + 2); - this[2] = a2; - *this = v7; - v5 = v7; - } - else - { - if ( !a2 ) - goto LABEL_3; - if ( a2 == 1 ) - { - *((_WORD *)this + 4) = a3; - goto LABEL_3; - } - } - v8 = v5; - v9 = a2; - do - { - *v8++ = a3; - --v9; - } - while ( v9 ); -LABEL_3: - result = 0; - this[1] = a2; - *((_WORD *)v5 + a2) = 0; - return result; -} - -//----- (004E1250) -------------------------------------------------------- -int __fastcall std::wstring::basic_string(int a1) -{ - int result; // eax - - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - result = 0; - *(_WORD *)(a1 + 8) = 0; - return result; -} - -//----- (004E1270) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( - _DWORD *this, - _WORD *Src, - int a3, - int a4) -{ - _WORD *result; // eax - size_t Size; // ebx - int v7; // edi - - result = this + 2; - *this = this + 2; - Size = a3 - (_DWORD)Src; - v7 = (a3 - (int)Src) >> 1; - if ( (unsigned int)(a3 - (_DWORD)Src) > 0xE ) - { - if ( Size > 0x3FFFFFFE ) - std::__throw_length_error((std::length_error *)"basic_string::_M_create"); - if ( (unsigned int)(v7 + 1) > 0x3FFFFFFF ) - std::__throw_bad_alloc(); - result = operator new(Size + 2); - this[2] = v7; - *this = result; - } - if ( v7 == 1 ) - { - *result = *Src; - } - else if ( v7 ) - { - memcpy(result, Src, Size); - result = (_WORD *)*this; - } - this[1] = v7; - *(_WORD *)((char *)result + Size) = 0; - return result; -} - -//----- (004E1310) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, a3, a4); -} - -//----- (004E1320) -------------------------------------------------------- -_WORD *__thiscall std::wstring::basic_string(_DWORD *this, _WORD *a2, int a3, int a4) -{ - LOBYTE(a4) = 0; - *this = this + 2; - return std::wstring::_M_construct(this, a2, a3, a4); -} - -//----- (004E1330) -------------------------------------------------------- -void __fastcall std::wstring::~wstring(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (004E1360) -------------------------------------------------------- -void __fastcall std::wstring::~wstring(void **a1) -{ - if ( *a1 != a1 + 2 ) - operator delete(*a1); -} - -//----- (004E1390) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, int a2) -{ - _DWORD *v3; // eax - _WORD *Src; // edx - int v5; // ecx - int v6; // ebp - int v8; // edi - int v9; // [esp+1Ch] [ebp-20h] - - v3 = (_DWORD *)*this; - Src = *(_WORD **)a2; - v5 = *(_DWORD *)(a2 + 4); - if ( a2 + 8 != *(_DWORD *)a2 ) - { - v9 = *(_DWORD *)(a2 + 8); - if ( v3 == this + 2 ) - { - *this = Src; - this[1] = v5; - this[2] = v9; - } - else - { - *this = Src; - v6 = this[2]; - this[1] = v5; - this[2] = v9; - if ( v3 ) - { - *(_DWORD *)a2 = v3; - *(_DWORD *)(a2 + 8) = v6; - goto LABEL_5; - } - } - *(_DWORD *)a2 = a2 + 8; - v3 = (_DWORD *)(a2 + 8); - goto LABEL_5; - } - v8 = 2 * v5; - if ( v5 ) - { - if ( v5 == 1 ) - { - *(_WORD *)v3 = *Src; - v8 = 2; - } - else - { - memcpy(v3, Src, 2 * v5); - v5 = *(_DWORD *)(a2 + 4); - v3 = (_DWORD *)*this; - Src = *(_WORD **)a2; - v8 = 2 * v5; - } - } - this[1] = v5; - *(_WORD *)((char *)v3 + v8) = 0; - v3 = Src; -LABEL_5: - *(_DWORD *)(a2 + 4) = 0; - *(_WORD *)v3 = 0; - return this; -} - -//----- (004E1450) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::operator=(unsigned int **this, wchar_t *String) -{ - unsigned int v3; // eax - - v3 = wcslen(String); - return std::wstring::_M_replace(this, 0, (unsigned int)this[1], (char *)String, v3); -} - -//----- (004E1490) -------------------------------------------------------- -void *__thiscall std::wstring::operator=(void *this, int a2) -{ - std::wstring::_M_assign((int)this, a2); - return this; -} - -//----- (004E14B0) -------------------------------------------------------- -unsigned int **__thiscall std::wstring::operator=(unsigned int **this, char *a2, int a3) -{ - std::wstring::_M_replace(this, 0, (unsigned int)this[1], a2, a3); - return this; -} - -//----- (004E14F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator=(_DWORD *this, __int16 a2) -{ - std::wstring::_M_replace_aux(this, 0, this[1], 1u, a2); - return this; -} - -//----- (004E1530) -------------------------------------------------------- -int __thiscall std::wstring::operator[](_DWORD *this, int a2) -{ - return *this + 2 * a2; -} - -//----- (004E1540) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String) -{ - unsigned int v3; // eax - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // edi - unsigned int v7; // ebp - _WORD *v8; // ecx - - v3 = wcslen(String); - v4 = this[1]; - if ( v3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = v3 + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, this[1], 0, String, v3); - v5 = (_DWORD *)*this; - } - else if ( v3 ) - { - v8 = (_WORD *)v5 + v4; - if ( v3 == 1 ) - { - *v8 = *String; - } - else - { - memcpy(v8, String, 2 * v3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (004E1600) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, int a2) -{ - _DWORD *v3; // edi - int v4; // ecx - int v5; // eax - _WORD *v6; // ebp - _DWORD *v7; // edx - unsigned int v8; // esi - unsigned int v9; // edi - _WORD *v10; // ecx - - v3 = this + 2; - v4 = this[1]; - v5 = *(_DWORD *)(a2 + 4); - v6 = *(_WORD **)a2; - v7 = (_DWORD *)*this; - v8 = v5 + v4; - if ( (_DWORD *)*this == v3 ) - v9 = 7; - else - v9 = this[2]; - if ( v8 > v9 ) - { - std::wstring::_M_mutate((int)this, v4, 0, v6, v5); - v7 = (_DWORD *)*this; - } - else if ( v5 ) - { - v10 = (_WORD *)v7 + v4; - if ( v5 == 1 ) - { - *v10 = *v6; - } - else - { - memcpy(v10, *(const void **)a2, 2 * v5); - v7 = (_DWORD *)*this; - } - } - this[1] = v8; - *((_WORD *)v7 + v8) = 0; - return this; -} - -//----- (004E16A0) -------------------------------------------------------- -_DWORD *__thiscall std::wstring::operator+=(_DWORD *this, _WORD *Src, unsigned int a3) -{ - int v4; // ecx - _DWORD *v5; // edx - unsigned int v6; // esi - unsigned int v7; // ebp - _WORD *v8; // ecx - - v4 = this[1]; - if ( a3 > 0x1FFFFFFF - v4 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - v5 = (_DWORD *)*this; - v6 = a3 + v4; - if ( (_DWORD *)*this == this + 2 ) - v7 = 7; - else - v7 = this[2]; - if ( v6 > v7 ) - { - std::wstring::_M_mutate((int)this, v4, 0, Src, a3); - v5 = (_DWORD *)*this; - } - else if ( a3 ) - { - v8 = (_WORD *)v5 + v4; - if ( a3 == 1 ) - { - *v8 = *Src; - } - else - { - memcpy(v8, Src, 2 * a3); - v5 = (_DWORD *)*this; - } - } - this[1] = v6; - *((_WORD *)v5 + v6) = 0; - return this; -} - -//----- (004E1760) -------------------------------------------------------- -char *__thiscall std::wstring::operator+=(char *this, __int16 a2) -{ - char *result; // eax - char *v3; // ecx - int v4; // ebx - char *v5; // edx - unsigned int v6; // esi - unsigned int v7; // ecx - char *v8; // [esp+1Ch] [ebp-10h] - - result = this; - v3 = this + 8; - v4 = *((_DWORD *)v3 - 1); - v5 = (char *)*((_DWORD *)v3 - 2); - v6 = v4 + 1; - if ( v5 == v3 ) - v7 = 7; - else - v7 = *((_DWORD *)result + 2); - if ( v6 > v7 ) - { - v8 = result; - std::wstring::_M_mutate((int)result, v4, 0, 0, 1); - result = v8; - v5 = *(char **)v8; - } - *(_WORD *)&v5[2 * v4] = a2; - *((_DWORD *)result + 1) = v6; - *(_WORD *)&v5[2 * v4 + 2] = 0; - return result; -} - -//----- (004E17E0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A618; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A2A0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51A2A0: using guessed type int (*off_51A2A0)(); -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004E1920) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_51A618; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A2A0; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51A2A0: using guessed type int (*off_51A2A0)(); -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004E1A70) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A618; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A2A0; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51A2A0: using guessed type int (*off_51A2A0)(); -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004E1BB0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_51A618; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A2A0; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51A2A0: using guessed type int (*off_51A2A0)(); -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004E1D00) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51A618; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4E1D3E: variable 'lpfctx' is possibly undefined -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004E1D60) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A618; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4E1D9E: variable 'lpfctx' is possibly undefined -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004E1DC0) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A618; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4E1DFE: variable 'lpfctx' is possibly undefined -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004E1E20) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A634; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A2BC; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51A2BC: using guessed type int (*off_51A2BC)(); -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004E1F60) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_51A634; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A2BC; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51A2BC: using guessed type int (*off_51A2BC)(); -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004E20B0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A634; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A2BC; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51A2BC: using guessed type int (*off_51A2BC)(); -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004E21F0) -------------------------------------------------------- -void __thiscall std::collate_byname::collate_byname(_DWORD *this, int ***a2, int a3) -{ - int **v4; // [esp+14h] [ebp-48h] - - v4 = *a2; - this[1] = a3 != 0; - *this = &off_51A634; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A2BC; - if ( *(_BYTE *)v4 != 67 || *((_BYTE *)v4 + 1) ) - { - if ( strcmp((const char *)v4, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), v4); - } - } -} -// 51A2BC: using guessed type int (*off_51A2BC)(); -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004E2340) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51A634; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4E237E: variable 'lpfctx' is possibly undefined -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004E23A0) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A634; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4E23DE: variable 'lpfctx' is possibly undefined -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004E2400) -------------------------------------------------------- -void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A634; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4E243E: variable 'lpfctx' is possibly undefined -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004E2460) -------------------------------------------------------- -unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) -{ - int v3; // ebx - unsigned int result; // eax - int v5; // esi - unsigned int v6; // edi - int v7; // ebp - int v8; // esi - - this[2] = -1; - this[3] = -1; - v3 = a2[9]; - *this = a3; - result = a2[1]; - this[4] = -1; - v5 = a2[4]; - this[5] = -1; - this[6] = -1; - this[7] = -1; - this[8] = -1; - this[9] = -1; - this[10] = -1; - this[11] = -1; - this[12] = -1; - this[13] = -1; - if ( !result ) - { - if ( !v5 ) - return result; - goto LABEL_3; - } - *((_QWORD *)this + 1) = (int)(result - v3); - *((_QWORD *)this + 2) = a2[2] - v3; - result = a2[3]; - *((_QWORD *)this + 3) = (int)(result - v3); - if ( v5 ) - { -LABEL_3: - *((_QWORD *)this + 4) = v5 - v3; - v6 = a2[5]; - v7 = v6 - v5; - v8 = a2[6]; - *((_QWORD *)this + 5) = v7; - *((_QWORD *)this + 6) = v8 - v3; - if ( result < v6 ) - result = v6; - } - if ( result ) - { - result -= v3; - a2[10] = result; - } - return result; -} - -//----- (004E2550) -------------------------------------------------------- -unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) -{ - int v3; // ebx - unsigned int result; // eax - int v5; // esi - unsigned int v6; // edi - int v7; // ebp - int v8; // esi - - this[2] = -1; - this[3] = -1; - v3 = a2[9]; - *this = a3; - result = a2[1]; - this[4] = -1; - v5 = a2[4]; - this[5] = -1; - this[6] = -1; - this[7] = -1; - this[8] = -1; - this[9] = -1; - this[10] = -1; - this[11] = -1; - this[12] = -1; - this[13] = -1; - if ( !result ) - { - if ( !v5 ) - return result; - goto LABEL_3; - } - *((_QWORD *)this + 1) = (int)(result - v3); - *((_QWORD *)this + 2) = a2[2] - v3; - result = a2[3]; - *((_QWORD *)this + 3) = (int)(result - v3); - if ( v5 ) - { -LABEL_3: - *((_QWORD *)this + 4) = v5 - v3; - v6 = a2[5]; - v7 = v6 - v5; - v8 = a2[6]; - *((_QWORD *)this + 5) = v7; - *((_QWORD *)this + 6) = v8 - v3; - if ( result < v6 ) - result = v6; - } - if ( result ) - { - result -= v3; - a2[10] = result; - } - return result; -} - -//----- (004E2640) -------------------------------------------------------- -int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) -{ - int v1; // eax - _DWORD *v2; // esi - int v3; // ebx - int v4; // edx - int v5; // edi - int v6; // edi - int result; // eax - __int64 v8; // rax - int v9; // ebp - int v10; // ebx - int v11; // ecx - - v1 = *(_DWORD *)(a1 + 8); - v2 = *(_DWORD **)a1; - v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); - if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) - { - v4 = *(_DWORD *)(a1 + 24); - v5 = *(_DWORD *)(a1 + 16); - v2[1] = v3 + v1; - v2[2] = v3 + v5; - v2[3] = v3 + v4; - } - v6 = *(_DWORD *)(a1 + 32); - result = v6 & *(_DWORD *)(a1 + 36); - if ( result != -1 ) - { - v8 = *(_QWORD *)(a1 + 40); - v9 = v3 + *(_DWORD *)(a1 + 48); - v10 = v6 + v3; - v2[4] = v10; - v2[6] = v9; - if ( v8 > 0x7FFFFFFF ) - { - v11 = v10 + 0x7FFFFFFF; - do - { - v10 = v11; - v8 -= 0x7FFFFFFFLL; - v11 += 0x7FFFFFFF; - } - while ( v8 > 0x7FFFFFFF ); - } - result = v10 + v8; - v2[5] = result; - } - return result; -} - -//----- (004E26D0) -------------------------------------------------------- -int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) -{ - int v1; // eax - _DWORD *v2; // esi - int v3; // ebx - int v4; // edx - int v5; // edi - int v6; // edi - int result; // eax - __int64 v8; // rax - int v9; // ebp - int v10; // ebx - int v11; // ecx - - v1 = *(_DWORD *)(a1 + 8); - v2 = *(_DWORD **)a1; - v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); - if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) - { - v4 = *(_DWORD *)(a1 + 24); - v5 = *(_DWORD *)(a1 + 16); - v2[1] = v3 + v1; - v2[2] = v3 + v5; - v2[3] = v3 + v4; - } - v6 = *(_DWORD *)(a1 + 32); - result = v6 & *(_DWORD *)(a1 + 36); - if ( result != -1 ) - { - v8 = *(_QWORD *)(a1 + 40); - v9 = v3 + *(_DWORD *)(a1 + 48); - v10 = v6 + v3; - v2[4] = v10; - v2[6] = v9; - if ( v8 > 0x7FFFFFFF ) - { - v11 = v10 + 0x7FFFFFFF; - do - { - v10 = v11; - v8 -= 0x7FFFFFFFLL; - v11 += 0x7FFFFFFF; - } - while ( v8 > 0x7FFFFFFF ); - } - result = v10 + v8; - v2[5] = result; - } - return result; -} - -//----- (004E2760) -------------------------------------------------------- -unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1) -{ - unsigned int result; // eax - - result = *(_DWORD *)(a1 + 20); - if ( result && *(_DWORD *)(a1 + 12) < result ) - { - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - { - *(_DWORD *)(a1 + 4) = result; - *(_DWORD *)(a1 + 8) = result; - } - *(_DWORD *)(a1 + 12) = result; - } - return result; -} - -//----- (004E2790) -------------------------------------------------------- -_DWORD *__thiscall std::stringbuf::_M_stringbuf_init(_DWORD *this, int a2) -{ - int v2; // esi - int v3; // edx - _DWORD *result; // eax - char *v5; // edx - int v6; // edi - int v7; // [esp+0h] [ebp-2Ch] - - v2 = 0; - v3 = this[10]; - result = (_DWORD *)this[9]; - this[8] = a2; - if ( (a2 & 3) != 0 ) - v2 = v3; - v5 = (char *)result + v3; - if ( result == this + 11 ) - v6 = 15; - else - v6 = this[11]; - if ( (a2 & 8) != 0 ) - { - this[1] = result; - this[2] = result; - this[3] = v5; - } - if ( (a2 & 0x10) != 0 ) - { - this[6] = (char *)result + v6; - this[4] = result; - if ( (unsigned int)v2 > 0x7FFFFFFFuLL ) - { - v7 = v2 - 0x7FFFFFFF; - if ( (((unsigned __int64)(unsigned int)v2 - 0x7FFFFFFF) >> 32) | (unsigned int)(v2 + 1) ) - { - result = (_DWORD *)((char *)result + 0x7FFFFFFF); - } - else - { - v7 = 1; - result = (_DWORD *)((char *)result - 2); - } - v2 = v7; - } - result = (_DWORD *)((char *)result + v2); - this[5] = result; - if ( (a2 & 8) == 0 ) - { - this[1] = v5; - this[2] = v5; - this[3] = v5; - } - } - return result; -} - -//----- (004E2890) -------------------------------------------------------- -int __thiscall std::stringbuf::str(int this, int a2) -{ - unsigned int v3; // eax - - std::string::_M_replace((unsigned int **)(this + 36), 0, *(_DWORD *)(this + 40), *(char **)a2, *(_DWORD *)(a2 + 4)); - v3 = 0; - if ( (*(_BYTE *)(this + 32) & 3) != 0 ) - v3 = *(_DWORD *)(this + 40); - return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); -} - -//----- (004E28F0) -------------------------------------------------------- -void __thiscall std::stringbuf::swap(volatile signed __int32 **this, _DWORD *a2) -{ - volatile signed __int32 *v2; // edx - volatile signed __int32 *v3; // esi - volatile signed __int32 *v4; // ebx - volatile signed __int32 *v5; // eax - volatile signed __int32 *v6; // ecx - volatile signed __int32 *v7; // ebx - volatile signed __int32 *v8; // esi - int v9; // ebx - int v10; // ecx - unsigned int v11; // eax - unsigned int v12; // edi - volatile signed __int32 *v13; // eax - volatile signed __int32 *v14; // edx - volatile signed __int32 *v15; // eax - volatile signed __int32 *v16; // edx - volatile signed __int32 *v17; // eax - volatile signed __int32 *v18; // edx - volatile signed __int32 *v19; // eax - volatile signed __int32 *v20; // edx - volatile signed __int32 *v21; // eax - volatile signed __int32 *v22; // eax - volatile signed __int32 **v23; // ebx - volatile signed __int32 *v24; // esi - int v25; // edx - int v26; // ecx - int v27; // edi - __int64 v28; // rax - char *v29; // ecx - _DWORD *v30; // ebx - int v31; // esi - int v32; // eax - int v33; // ecx - __int64 v34; // rax - int v35; // ecx - int v36; // esi - struct _Unwind_Exception *v37; // edi - struct _Unwind_Exception *v38; // ecx - const std::locale *v39; // [esp+4h] [ebp-E4h] - const std::locale *v40; // [esp+4h] [ebp-E4h] - const std::locale *v41; // [esp+4h] [ebp-E4h] - const std::locale *v42; // [esp+4h] [ebp-E4h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-D0h] - _DWORD *v45; // [esp+54h] [ebp-94h] BYREF - _DWORD *v46; // [esp+58h] [ebp-90h] BYREF - _DWORD *v47; // [esp+5Ch] [ebp-8Ch] BYREF - _DWORD *v48; // [esp+60h] [ebp-88h] - __int64 v49; // [esp+68h] [ebp-80h] - __int64 v50; // [esp+70h] [ebp-78h] - __int64 v51; // [esp+78h] [ebp-70h] - __int64 v52; // [esp+80h] [ebp-68h] - __int64 v53; // [esp+88h] [ebp-60h] - __int64 v54; // [esp+90h] [ebp-58h] - volatile signed __int32 **v55; // [esp+98h] [ebp-50h] - __int64 v56; // [esp+A0h] [ebp-48h] - __int64 v57; // [esp+A8h] [ebp-40h] - __int64 v58; // [esp+B0h] [ebp-38h] - __int64 v59; // [esp+B8h] [ebp-30h] - __int64 v60; // [esp+C0h] [ebp-28h] - __int64 v61; // [esp+C8h] [ebp-20h] - - v49 = -1LL; - v48 = a2; - v2 = this[1]; - v50 = -1LL; - v3 = this[9]; - v4 = this[4]; - v51 = -1LL; - v52 = -1LL; - v53 = -1LL; - v54 = -1LL; - if ( !v2 ) - { - v5 = 0; - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v49 = (char *)v2 - (char *)v3; - v50 = (char *)this[2] - (char *)v3; - v5 = this[3]; - v51 = (char *)v5 - (char *)v3; - if ( v4 ) - { -LABEL_3: - v52 = (char *)v4 - (char *)v3; - v6 = this[5]; - LODWORD(v53) = (char *)this[5] - (char *)v4; - v7 = this[6]; - v53 = (int)v53; - v54 = (char *)v7 - (char *)v3; - if ( v5 < v6 ) - v5 = v6; - } - if ( v5 ) - this[10] = (volatile signed __int32 *)((char *)v5 - (char *)v3); -LABEL_7: - v56 = -1LL; - v55 = this; - v57 = -1LL; - v8 = (volatile signed __int32 *)a2[1]; - v58 = -1LL; - v9 = a2[9]; - v10 = a2[4]; - v59 = -1LL; - v60 = -1LL; - v61 = -1LL; - if ( !v8 ) - { - v11 = 0; - if ( !v10 ) - goto LABEL_13; - goto LABEL_9; - } - v56 = (int)v8 - v9; - v57 = a2[2] - v9; - v11 = a2[3]; - v58 = (int)(v11 - v9); - if ( v10 ) - { -LABEL_9: - v59 = v10 - v9; - v12 = a2[5]; - v60 = (int)(v12 - v10); - v61 = a2[6] - v9; - if ( v11 < v12 ) - v11 = v12; - } - if ( v11 ) - a2[10] = v11 - v9; -LABEL_13: - this[1] = v8; - a2[1] = v2; - v13 = this[2]; - this[2] = (volatile signed __int32 *)a2[2]; - v14 = (volatile signed __int32 *)a2[3]; - a2[2] = v13; - v15 = this[3]; - this[3] = v14; - v16 = (volatile signed __int32 *)a2[4]; - a2[3] = v15; - v17 = this[4]; - this[4] = v16; - v18 = (volatile signed __int32 *)a2[5]; - a2[4] = v17; - v19 = this[5]; - this[5] = v18; - v20 = (volatile signed __int32 *)a2[6]; - a2[5] = v19; - v21 = this[6]; - this[6] = v20; - a2[6] = v21; - std::locale::locale((volatile signed __int32 **)&v47, this + 7, v39); - std::locale::operator=(this + 7, (volatile signed __int32 **)a2 + 7); - std::locale::operator=((volatile signed __int32 **)a2 + 7, (volatile signed __int32 **)&v47); - std::locale::~locale(&v47); - std::locale::locale((volatile signed __int32 **)&v45, (volatile signed __int32 **)a2 + 7, v40); - std::locale::locale((volatile signed __int32 **)&v46, this + 7, v41); - (*((void (__thiscall **)(volatile signed __int32 **, _DWORD **))*this + 2))(this, &v45); - std::locale::operator=(this + 7, (volatile signed __int32 **)&v45); - std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)a2 + 7, v42); - (*(void (__thiscall **)(_DWORD *, _DWORD **))(*a2 + 8))(a2, &v46); - std::locale::operator=((volatile signed __int32 **)a2 + 7, (volatile signed __int32 **)&v46); - std::locale::~locale(&v47); - std::locale::~locale(&v46); - std::locale::~locale(&v45); - v22 = this[8]; - this[8] = (volatile signed __int32 *)a2[8]; - a2[8] = v22; - std::string::swap(this + 9, a2 + 9); - v23 = v55; - v24 = v55[9]; - if ( ((unsigned int)v56 & HIDWORD(v56)) != -1 ) - { - v25 = v58; - v26 = v57; - v55[1] = (volatile signed __int32 *)((char *)v24 + v56); - v23[2] = (volatile signed __int32 *)((char *)v24 + v26); - v23[3] = (volatile signed __int32 *)((char *)v24 + v25); - } - if ( ((unsigned int)v59 & HIDWORD(v59)) != -1 ) - { - v27 = v61; - v28 = v60; - v29 = (char *)v24 + v59; - v23[4] = (volatile signed __int32 *)((char *)v24 + v59); - for ( v23[6] = (volatile signed __int32 *)((char *)v24 + v27); v28 > 0x7FFFFFFF; v28 -= 0x7FFFFFFFLL ) - v29 += 0x7FFFFFFF; - v23[5] = (volatile signed __int32 *)&v29[v28]; - } - v30 = v48; - v31 = v48[9]; - if ( ((unsigned int)v49 & HIDWORD(v49)) != -1 ) - { - v32 = v51; - v33 = v50; - v48[1] = v31 + v49; - v30[2] = v31 + v33; - v30[3] = v31 + v32; - } - if ( ((unsigned int)v52 & HIDWORD(v52)) != -1 ) - { - v34 = v53; - v35 = v31 + v52; - v36 = v31 + v54; - v30[4] = v35; - v37 = (struct _Unwind_Exception *)v35; - v30[6] = v36; - if ( v34 > 0x7FFFFFFF ) - { - v38 = (struct _Unwind_Exception *)(v35 + 0x7FFFFFFF); - do - { - lpuexcpta = v38; - v34 -= 0x7FFFFFFFLL; - v38 = (struct _Unwind_Exception *)((char *)v38 + 0x7FFFFFFF); - } - while ( v34 > 0x7FFFFFFF ); - v37 = lpuexcpta; - } - v30[5] = (char *)v37 + v34; - } -} -// 4E2BBA: variable 'v39' is possibly undefined -// 4E2C02: variable 'v40' is possibly undefined -// 4E2C15: variable 'v41' is possibly undefined -// 4E2C5E: variable 'v42' is possibly undefined - -//----- (004E2EC0) -------------------------------------------------------- -_DWORD *__thiscall std::stringbuf::setbuf(int this, _DWORD *a2, int a3) -{ - _DWORD *result; // eax - int v4; // ebx - _DWORD *v5; // esi - int v6; // edi - char *v7; // ecx - int v8; // ebp - char *v9; // ebp - int v10; // [esp+0h] [ebp-14h] - - result = (_DWORD *)this; - if ( a2 && a3 >= 0 ) - { - *(_DWORD *)(this + 40) = 0; - v4 = a3; - **(_BYTE **)(this + 36) = 0; - v5 = *(_DWORD **)(this + 36); - v10 = *(_DWORD *)(this + 32) & 0x10; - v6 = *(_DWORD *)(this + 32) & 8; - v7 = (char *)a2 + *(_DWORD *)(this + 40); - if ( v5 == result + 11 ) - v8 = 15; - else - v8 = result[11]; - v9 = (char *)a2 + v8; - if ( a2 != v5 ) - { - v7 += a3; - v4 = 0; - v9 = v7; - } - if ( v6 ) - { - result[1] = a2; - result[2] = (char *)a2 + v4; - result[3] = v7; - if ( v10 ) - { - result[5] = a2; - result[4] = a2; - result[6] = v9; - } - } - else if ( v10 ) - { - result[5] = a2; - result[4] = a2; - result[6] = v9; - result[1] = v7; - result[2] = v7; - result[3] = v7; - } - } - return result; -} - -//----- (004E2F80) -------------------------------------------------------- -int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) -{ - _DWORD *v4; // edi - int result; // eax - int v6; // esi - int v7; // ebx - int v8; // ebp - int v9; // edx - char *v10; // ebp - __int64 v11; // rax - int v12; // [esp+4h] [ebp-18h] - - v4 = (_DWORD *)this[9]; - result = (int)a2 + this[10]; - v12 = result; - v6 = this[8] & 0x10; - v7 = this[8] & 8; - if ( v4 == this + 11 ) - v8 = 15; - else - v8 = this[11]; - if ( a2 == v4 ) - { - v10 = (char *)a2 + v8; - } - else - { - v9 = a3; - a3 = 0; - v12 = v9 + result; - result = v12; - v10 = (char *)v12; - } - if ( v7 ) - { - this[1] = a2; - this[2] = (char *)a2 + a3; - result = v12; - this[3] = v12; - } - if ( v6 ) - { - this[6] = v10; - this[4] = a2; - if ( a4 > 0x7FFFFFFFuLL ) - { - v11 = a4 - 0x7FFFFFFFLL; - if ( (a4 + 1) | HIDWORD(v11) ) - { - a2 = (_DWORD *)((char *)a2 + 0x7FFFFFFF); - } - else - { - a2 = (_DWORD *)((char *)a2 - 2); - LODWORD(v11) = 1; - } - a4 = v11; - } - result = (int)a2 + a4; - this[5] = (char *)a2 + a4; - if ( !v7 ) - { - result = v12; - this[1] = v12; - this[2] = v12; - this[3] = v12; - } - } - return result; -} - -//----- (004E3090) -------------------------------------------------------- -_DWORD *__thiscall std::stringbuf::seekoff(_DWORD *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5) -{ - unsigned int v5; // edx - unsigned __int8 v6; // bp - unsigned __int8 v7; // di - unsigned int v9; // eax - _DWORD *v10; // ebx - int v11; // esi - int v12; // edi - __int64 v13; // [esp+0h] [ebp-34h] - unsigned __int8 v14; // [esp+8h] [ebp-2Ch] - __int64 v15; // [esp+8h] [ebp-2Ch] - int v16; // [esp+18h] [ebp-1Ch] - char v17; // [esp+1Fh] [ebp-15h] - - *this = -1; - this[1] = -1; - this[2] = 0; - v13 = a3; - v5 = (a5 & a2[8]) >> 4; - v6 = (a4 != 1) & v5 & (((unsigned __int8)a5 & a2[8] & 8) != 0); - v14 = ((a5 >> 3) ^ 1) & 1 & v5; - v7 = (((unsigned __int8)a5 & a2[8] & 8) != 0) & ((a5 >> 4) ^ 1); - if ( v7 ) - { - v16 = a2[1]; - if ( !v16 && a3 ) - return this; - v17 = v6 | v14; - } - else - { - v16 = a2[4]; - if ( !v16 && a3 ) - return this; - v17 = v14 | v6; - if ( !(v14 | v6) ) - return this; - } - v9 = a2[5]; - if ( v9 ) - { - v10 = a2; - if ( v9 > a2[3] ) - { - if ( (a2[8] & 8) == 0 ) - { - a2[1] = v9; - v10 = a2; - a2[2] = v9; - } - v10[3] = v9; - } - } - if ( a4 == 1 ) - { - v15 = a3 + (int)(v9 - v16); - v13 = a2[2] - v16 + a3; - } - else - { - v15 = a3; - if ( a4 == 2 ) - { - v13 = a2[3] - v16 + a3; - v15 = v13; - } - } - if ( v6 | v7 && v13 >= 0 && a2[3] - v16 >= v13 ) - { - *(_QWORD *)this = v13; - v12 = a2[1] + v13; - this[2] = 0; - a2[2] = v12; - } - if ( v15 >= 0 && v17 && a2[3] - v16 >= v15 ) - { - *(_QWORD *)this = v15; - v11 = a2[4] + v15; - this[2] = 0; - a2[5] = v11; - } - return this; -} - -//----- (004E3300) -------------------------------------------------------- -_DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - int v7; // ecx - int v8; // ebx - unsigned int v9; // ebp - int v10; // [esp+0h] [ebp-2Ch] - - result = this; - *this = -1; - this[1] = -1; - this[2] = 0; - v7 = a2[8] & 8; - v10 = a6 & a2[8]; - if ( (a6 & v7) != 0 ) - v8 = a2[1]; - else - v8 = a2[4]; - if ( (!a3 || v8) && (v10 & 0x18) != 0 ) - { - v9 = a2[5]; - if ( v9 && v9 > a2[3] ) - { - if ( !v7 ) - { - a2[1] = v9; - a2[2] = v9; - } - a2[3] = v9; - } - if ( a3 >= 0 && a2[3] - v8 >= a3 ) - { - if ( (a6 & v7) != 0 ) - a2[2] = a3 + a2[1]; - if ( (v10 & 0x10) != 0 ) - a2[5] = a2[4] + a3; - *(_QWORD *)result = a3; - result[2] = a4; - } - } - return result; -} - -//----- (004E33F0) -------------------------------------------------------- -int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) -{ - __int64 v5; // rax - int v6; // ecx - int result; // eax - - v5 = a4; - this[6] = a3; - v6 = a2; - for ( this[4] = a2; v5 > 0x7FFFFFFF; v5 -= 0x7FFFFFFFLL ) - v6 += 0x7FFFFFFF; - result = v6 + v5; - this[5] = result; - return result; -} - -//----- (004E3450) -------------------------------------------------------- -int __thiscall std::stringbuf::overflow(_DWORD *this, int a2) -{ - int v2; // esi - _DWORD *v3; // ecx - unsigned int v4; // eax - unsigned int v5; // ebx - int v6; // edi - unsigned int v7; // eax - char *v8; // eax - _BYTE *v9; // edx - unsigned int v10; // eax - _BYTE *v12; // edx - int v13; // eax - int v14; // ebx - int v15; // eax - _BYTE *v16; // [esp+14h] [ebp-74h] - int v17; // [esp+14h] [ebp-74h] - size_t v18; // [esp+14h] [ebp-74h] - void *Block; // [esp+58h] [ebp-30h] BYREF - int v22; // [esp+5Ch] [ebp-2Ch] - int v23[10]; // [esp+60h] [ebp-28h] BYREF - - v2 = this[8]; - if ( (v2 & 0x10) == 0 ) - return -1; - if ( a2 == -1 ) - return 0; - v3 = (_DWORD *)this[9]; - if ( v3 == this + 11 ) - v4 = 15; - else - v4 = this[11]; - v5 = this[6]; - v6 = this[4]; - v16 = (_BYTE *)this[5]; - if ( v5 - v6 >= v4 ) - { - if ( v5 > (unsigned int)v16 ) - goto LABEL_21; - if ( v4 != 0x3FFFFFFF ) - { - if ( v5 <= (unsigned int)v16 ) - { - v7 = 2 * v4; - LOBYTE(v23[0]) = 0; - Block = v23; - if ( v7 > 0x3FFFFFFF ) - v7 = 0x3FFFFFFF; - v22 = 0; - if ( v7 < 0x200 ) - v7 = 512; - std::string::reserve(&Block, v7); - v8 = (char *)this[4]; - v17 = v22; - if ( v8 ) - { - std::string::_M_replace((unsigned int **)&Block, 0, v22, v8, this[6] - (_DWORD)v8); - v17 = v22; - } - v9 = Block; - v10 = 15; - if ( Block != v23 ) - v10 = v23[0]; - if ( v17 + 1 > v10 ) - { - std::string::_M_mutate((int)&Block, v17, 0, 0, 1u); - v9 = Block; - } - v9[v17] = a2; - v22 = v17 + 1; - *((_BYTE *)Block + v17 + 1) = 0; - std::string::swap(this + 9, &Block); - std::stringbuf::_M_sync(this, (_DWORD *)this[9], this[2] - this[1], this[5] - this[4]); - if ( Block != v23 ) - operator delete(Block); - goto LABEL_22; - } -LABEL_21: - *v16 = a2; -LABEL_22: - ++this[5]; - return a2; - } - return -1; - } - this[4] = v3; - v12 = &v16[(_DWORD)v3 - v6]; - this[6] = (char *)v3 + v4; - this[5] = v12; - if ( (v2 & 8) != 0 ) - { - v18 = this[1]; - v13 = this[3]; - this[1] = v3; - v14 = (int)v3 + v13 - v18 + 1; - v15 = this[2]; - this[3] = v14; - this[2] = (char *)v3 + v15 - v18; - } - *v12 = a2; - ++this[5]; - return a2; -} - -//----- (004E3710) -------------------------------------------------------- -int __thiscall std::stringbuf::pbackfail(int this, int a2) -{ - unsigned int v2; // edx - int result; // eax - char v4; // bl - - v2 = *(_DWORD *)(this + 8); - result = a2; - if ( v2 <= *(_DWORD *)(this + 4) ) - return -1; - if ( a2 == -1 ) - { - result = 0; - *(_DWORD *)(this + 8) = v2 - 1; - return result; - } - v4 = *(_BYTE *)(v2 - 1); - if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && v4 != (_BYTE)a2 ) - return -1; - *(_DWORD *)(this + 8) = v2 - 1; - if ( v4 != (_BYTE)a2 ) - *(_BYTE *)(v2 - 1) = a2; - return result; -} - -//----- (004E3760) -------------------------------------------------------- -int __fastcall std::stringbuf::showmanyc(int a1) -{ - unsigned int v1; // edx - unsigned int v2; // eax - - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - return -1; - v1 = *(_DWORD *)(a1 + 20); - v2 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - if ( v1 > v2 ) - { - *(_DWORD *)(a1 + 12) = v1; - v2 = v1; - } - } - return v2 - *(_DWORD *)(a1 + 8); -} - -//----- (004E3790) -------------------------------------------------------- -int __fastcall std::stringbuf::underflow(int a1) -{ - unsigned int v1; // eax - unsigned int v2; // edx - unsigned __int8 *v3; // eax - - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - return -1; - v1 = *(_DWORD *)(a1 + 20); - v2 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - if ( v1 > v2 ) - { - *(_DWORD *)(a1 + 12) = v1; - v2 = v1; - } - } - v3 = *(unsigned __int8 **)(a1 + 8); - if ( (unsigned int)v3 < v2 ) - return *v3; - else - return -1; -} - -//----- (004E37D0) -------------------------------------------------------- -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) -{ - int v2; // edx - unsigned int v3; // eax - int v4; // ecx - int v5; // eax - std::locale *v6; // eax - int v7; // ebx - int v8; // ecx - int v9; // ebx - char *v10; // eax - int v11; // edx - int v12; // ecx - char *v13; // ecx - const std::locale *v14; // [esp+4h] [ebp-A4h] - char *v15; // [esp+14h] [ebp-94h] - __int64 v18; // [esp+60h] [ebp-48h] - int v19; // [esp+68h] [ebp-40h] - __int64 v20; // [esp+70h] [ebp-38h] - __int64 v21; // [esp+78h] [ebp-30h] - int v22; // [esp+80h] [ebp-28h] - int v23; // [esp+88h] [ebp-20h] - - v18 = -1LL; - v19 = -1; - v2 = *((_DWORD *)a2 + 9); - v3 = *((_DWORD *)a2 + 1); - LODWORD(v20) = -1; - v21 = -1LL; - v22 = -1; - v23 = -1; - if ( !v3 ) - { - v4 = *((_DWORD *)a2 + 4); - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v18 = (int)(v3 - v2); - v19 = *((_DWORD *)a2 + 2) - v2; - v3 = *((_DWORD *)a2 + 3); - v20 = (int)(v3 - v2); - v4 = *((_DWORD *)a2 + 4); - if ( v4 ) - { -LABEL_3: - v21 = v4 - v2; - v22 = *((_DWORD *)a2 + 5) - v4; - v23 = *((_DWORD *)a2 + 6) - v2; - if ( v3 < *((_DWORD *)a2 + 5) ) - v3 = *((_DWORD *)a2 + 5); - } - if ( v3 ) - *((_DWORD *)a2 + 10) = v3 - v2; -LABEL_7: - std::streambuf::basic_streambuf(this, a2, v14); - v5 = *((_DWORD *)a2 + 8); - *this = &off_51A2D8; - this[9] = this + 11; - this[8] = v5; - v15 = (char *)a2 + 44; - v6 = (std::locale *)*((_DWORD *)a2 + 9); - if ( v6 == (std::locale *)((char *)a2 + 44) ) - { - this[11] = *((_DWORD *)a2 + 11); - this[12] = *((_DWORD *)a2 + 12); - this[13] = *((_DWORD *)a2 + 13); - this[14] = *((_DWORD *)a2 + 14); - } - else - { - this[9] = v6; - this[11] = *((_DWORD *)a2 + 11); - } - this[10] = *((_DWORD *)a2 + 10); - *((_BYTE *)a2 + 44) = 0; - *((_DWORD *)a2 + 9) = v15; - *((_DWORD *)a2 + 10) = 0; - v7 = this[9]; - if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) - { - this[1] = v7 + v18; - this[2] = v7 + v19; - this[3] = v7 + v20; - } - if ( ((unsigned int)v21 & HIDWORD(v21)) != -1 ) - { - v8 = v7 + v23; - v9 = v21 + v7; - this[6] = v8; - this[4] = v9; - this[5] = v9 + v22; - } - v10 = (char *)*((_DWORD *)a2 + 9); - v11 = *((_DWORD *)a2 + 8) & 0x10; - if ( v10 == v15 ) - v12 = 15; - else - v12 = *((_DWORD *)a2 + 11); - v13 = &v10[v12]; - if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) - { - *((_DWORD *)a2 + 1) = v10; - *((_DWORD *)a2 + 2) = v10; - *((_DWORD *)a2 + 3) = v10; - if ( v11 ) - { - *((_DWORD *)a2 + 5) = v10; - *((_DWORD *)a2 + 4) = v10; - *((_DWORD *)a2 + 6) = v13; - } - } - else if ( v11 ) - { - *((_DWORD *)a2 + 5) = v10; - *((_DWORD *)a2 + 4) = v10; - *((_DWORD *)a2 + 6) = v13; - *((_DWORD *)a2 + 1) = v10; - *((_DWORD *)a2 + 2) = v10; - *((_DWORD *)a2 + 3) = v10; - } -} -// 4E39E3: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4E3918: variable 'v14' is possibly undefined -// 51A2D8: using guessed type int (*off_51A2D8)(); - -//----- (004E3B00) -------------------------------------------------------- -std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) -{ - std::locale *v4; // eax - std::locale **v5; // edx - std::locale *result; // eax - std::locale *v7; // edx - const std::locale *v8; // [esp+4h] [ebp-18h] - - std::streambuf::basic_streambuf(this, (std::locale *)a2, v8); - v4 = a2[8]; - *this = &off_51A2D8; - this[9] = this + 11; - v5 = (std::locale **)a2[9]; - this[8] = v4; - result = (std::locale *)(a2 + 11); - if ( v5 == a2 + 11 ) - { - this[11] = a2[11]; - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - } - else - { - this[9] = v5; - this[11] = a2[11]; - } - v7 = a2[10]; - a2[9] = result; - a2[10] = 0; - this[10] = v7; - *((_BYTE *)a2 + 44) = 0; - return result; -} -// 4E3B0E: variable 'v8' is possibly undefined -// 51A2D8: using guessed type int (*off_51A2D8)(); - -//----- (004E3B80) -------------------------------------------------------- -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - - *this = &off_51ADD4; - this[1] = 0; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - std::locale::locale(this + 7); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - *this = &off_51A2D8; - this[8] = 0; - this[9] = this + 11; - std::string::_M_construct(this + 9, v4, (int)&v4[v3]); - this[8] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[10]; - std::stringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E3CA0) -------------------------------------------------------- -char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - char *result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_51ADD4; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_51A2D8; - this[10] = 0; - this[8] = a2; - result = (char *)(this + 11); - this[9] = this + 11; - *((_BYTE *)this + 44) = 0; - return result; -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E3D10) -------------------------------------------------------- -int __fastcall std::stringbuf::basic_stringbuf(int a1) -{ - _DWORD *v2; // ecx - int result; // eax - - v2 = (_DWORD *)(a1 + 28); - *(v2 - 7) = &off_51ADD4; - *(v2 - 6) = 0; - *(v2 - 5) = 0; - *(v2 - 4) = 0; - *(v2 - 3) = 0; - *(v2 - 2) = 0; - *(v2 - 1) = 0; - std::locale::locale(v2); - result = a1 + 44; - *(_BYTE *)(a1 + 44) = 0; - *(_DWORD *)a1 = &off_51A2D8; - *(_DWORD *)(a1 + 32) = 24; - *(_DWORD *)(a1 + 36) = a1 + 44; - *(_DWORD *)(a1 + 40) = 0; - return result; -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E3D80) -------------------------------------------------------- -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) -{ - int v2; // edx - unsigned int v3; // eax - int v4; // ecx - int v5; // eax - std::locale *v6; // eax - int v7; // ebx - int v8; // ecx - int v9; // ebx - char *v10; // eax - int v11; // edx - int v12; // ecx - char *v13; // ecx - const std::locale *v14; // [esp+4h] [ebp-A4h] - char *v15; // [esp+14h] [ebp-94h] - __int64 v18; // [esp+60h] [ebp-48h] - int v19; // [esp+68h] [ebp-40h] - __int64 v20; // [esp+70h] [ebp-38h] - __int64 v21; // [esp+78h] [ebp-30h] - int v22; // [esp+80h] [ebp-28h] - int v23; // [esp+88h] [ebp-20h] - - v18 = -1LL; - v19 = -1; - v2 = *((_DWORD *)a2 + 9); - v3 = *((_DWORD *)a2 + 1); - LODWORD(v20) = -1; - v21 = -1LL; - v22 = -1; - v23 = -1; - if ( !v3 ) - { - v4 = *((_DWORD *)a2 + 4); - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v18 = (int)(v3 - v2); - v19 = *((_DWORD *)a2 + 2) - v2; - v3 = *((_DWORD *)a2 + 3); - v20 = (int)(v3 - v2); - v4 = *((_DWORD *)a2 + 4); - if ( v4 ) - { -LABEL_3: - v21 = v4 - v2; - v22 = *((_DWORD *)a2 + 5) - v4; - v23 = *((_DWORD *)a2 + 6) - v2; - if ( v3 < *((_DWORD *)a2 + 5) ) - v3 = *((_DWORD *)a2 + 5); - } - if ( v3 ) - *((_DWORD *)a2 + 10) = v3 - v2; -LABEL_7: - std::streambuf::basic_streambuf(this, a2, v14); - v5 = *((_DWORD *)a2 + 8); - *this = &off_51A2D8; - this[9] = this + 11; - this[8] = v5; - v15 = (char *)a2 + 44; - v6 = (std::locale *)*((_DWORD *)a2 + 9); - if ( v6 == (std::locale *)((char *)a2 + 44) ) - { - this[11] = *((_DWORD *)a2 + 11); - this[12] = *((_DWORD *)a2 + 12); - this[13] = *((_DWORD *)a2 + 13); - this[14] = *((_DWORD *)a2 + 14); - } - else - { - this[9] = v6; - this[11] = *((_DWORD *)a2 + 11); - } - this[10] = *((_DWORD *)a2 + 10); - *((_BYTE *)a2 + 44) = 0; - *((_DWORD *)a2 + 9) = v15; - *((_DWORD *)a2 + 10) = 0; - v7 = this[9]; - if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) - { - this[1] = v7 + v18; - this[2] = v7 + v19; - this[3] = v7 + v20; - } - if ( ((unsigned int)v21 & HIDWORD(v21)) != -1 ) - { - v8 = v7 + v23; - v9 = v21 + v7; - this[6] = v8; - this[4] = v9; - this[5] = v9 + v22; - } - v10 = (char *)*((_DWORD *)a2 + 9); - v11 = *((_DWORD *)a2 + 8) & 0x10; - if ( v10 == v15 ) - v12 = 15; - else - v12 = *((_DWORD *)a2 + 11); - v13 = &v10[v12]; - if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) - { - *((_DWORD *)a2 + 1) = v10; - *((_DWORD *)a2 + 2) = v10; - *((_DWORD *)a2 + 3) = v10; - if ( v11 ) - { - *((_DWORD *)a2 + 5) = v10; - *((_DWORD *)a2 + 4) = v10; - *((_DWORD *)a2 + 6) = v13; - } - } - else if ( v11 ) - { - *((_DWORD *)a2 + 5) = v10; - *((_DWORD *)a2 + 4) = v10; - *((_DWORD *)a2 + 6) = v13; - *((_DWORD *)a2 + 1) = v10; - *((_DWORD *)a2 + 2) = v10; - *((_DWORD *)a2 + 3) = v10; - } -} -// 4E3F93: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4E3EC8: variable 'v14' is possibly undefined -// 51A2D8: using guessed type int (*off_51A2D8)(); - -//----- (004E40B0) -------------------------------------------------------- -std::locale *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) -{ - std::locale *v4; // eax - std::locale **v5; // edx - std::locale *result; // eax - std::locale *v7; // edx - const std::locale *v8; // [esp+4h] [ebp-18h] - - std::streambuf::basic_streambuf(this, (std::locale *)a2, v8); - v4 = a2[8]; - *this = &off_51A2D8; - this[9] = this + 11; - v5 = (std::locale **)a2[9]; - this[8] = v4; - result = (std::locale *)(a2 + 11); - if ( v5 == a2 + 11 ) - { - this[11] = a2[11]; - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - } - else - { - this[9] = v5; - this[11] = a2[11]; - } - v7 = a2[10]; - a2[9] = result; - a2[10] = 0; - this[10] = v7; - *((_BYTE *)a2 + 44) = 0; - return result; -} -// 4E40BE: variable 'v8' is possibly undefined -// 51A2D8: using guessed type int (*off_51A2D8)(); - -//----- (004E4130) -------------------------------------------------------- -void __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - - *this = &off_51ADD4; - this[1] = 0; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - std::locale::locale(this + 7); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - *this = &off_51A2D8; - this[8] = 0; - this[9] = this + 11; - std::string::_M_construct(this + 9, v4, (int)&v4[v3]); - this[8] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[10]; - std::stringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E4250) -------------------------------------------------------- -char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - char *result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_51ADD4; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_51A2D8; - this[10] = 0; - this[8] = a2; - result = (char *)(this + 11); - this[9] = this + 11; - *((_BYTE *)this + 44) = 0; - return result; -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E42C0) -------------------------------------------------------- -int __fastcall std::stringbuf::basic_stringbuf(int a1) -{ - _DWORD *v2; // ecx - int result; // eax - - v2 = (_DWORD *)(a1 + 28); - *(v2 - 7) = &off_51ADD4; - *(v2 - 6) = 0; - *(v2 - 5) = 0; - *(v2 - 4) = 0; - *(v2 - 3) = 0; - *(v2 - 2) = 0; - *(v2 - 1) = 0; - std::locale::locale(v2); - result = a1 + 44; - *(_BYTE *)(a1 + 44) = 0; - *(_DWORD *)a1 = &off_51A2D8; - *(_DWORD *)(a1 + 32) = 24; - *(_DWORD *)(a1 + 36) = a1 + 44; - *(_DWORD *)(a1 + 40) = 0; - return result; -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E4330) -------------------------------------------------------- -void __fastcall std::stringbuf::~stringbuf(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[9]; - *Block = &off_51A2D8; - if ( v2 != Block + 11 ) - operator delete(v2); - *Block = &off_51ADD4; - std::locale::~locale((_DWORD **)Block + 7); - operator delete(Block); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E4370) -------------------------------------------------------- -void __fastcall std::stringbuf::~stringbuf(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 36); - *(_DWORD *)a1 = &off_51A2D8; - if ( Block != (void *)(a1 + 44) ) - operator delete(Block); - *(_DWORD *)a1 = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E43A0) -------------------------------------------------------- -_DWORD *__thiscall std::stringbuf::operator=(_DWORD *this, int a2) -{ - int v2; // ecx - int v3; // ebx - unsigned int v4; // eax - unsigned int v5; // edx - int v6; // edx - _BYTE *v7; // eax - int v8; // ecx - int v9; // ebx - char *v10; // eax - char *v11; // ebx - int v12; // edx - int v13; // ecx - char *v14; // ecx - _DWORD *v15; // esi - int v16; // ecx - int v17; // edx - int v18; // ebx - int v19; // edi - __int64 v20; // rax - int v21; // ebx - int v22; // ecx - int v24; // edx - const std::locale *v25; // [esp+4h] [ebp-A4h] - const std::locale *v26; // [esp+4h] [ebp-A4h] - char *Src; // [esp+14h] [ebp-94h] - _DWORD *v29; // [esp+50h] [ebp-58h] BYREF - _DWORD *v30; // [esp+54h] [ebp-54h] BYREF - _DWORD *v31; // [esp+58h] [ebp-50h] - __int64 v32; // [esp+60h] [ebp-48h] - __int64 v33; // [esp+68h] [ebp-40h] - __int64 v34; // [esp+70h] [ebp-38h] - __int64 v35; // [esp+78h] [ebp-30h] - __int64 v36; // [esp+80h] [ebp-28h] - int v37; // [esp+88h] [ebp-20h] - int v38; // [esp+8Ch] [ebp-1Ch] - - v32 = -1LL; - v31 = this; - v33 = -1LL; - v2 = *(_DWORD *)(a2 + 16); - v3 = *(_DWORD *)(a2 + 36); - v4 = *(_DWORD *)(a2 + 4); - v34 = -1LL; - v35 = -1LL; - v36 = -1LL; - v37 = -1; - v38 = -1; - if ( !v4 ) - { - if ( !v2 ) - goto LABEL_7; - goto LABEL_3; - } - v32 = (int)(v4 - v3); - v33 = *(_DWORD *)(a2 + 8) - v3; - v4 = *(_DWORD *)(a2 + 12); - v34 = (int)(v4 - v3); - if ( v2 ) - { -LABEL_3: - v35 = v2 - v3; - v5 = *(_DWORD *)(a2 + 20); - v36 = (int)(v5 - v2); - v37 = *(_DWORD *)(a2 + 24) - v3; - v38 = v37 >> 31; - if ( v4 < v5 ) - v4 = v5; - } - if ( v4 ) - *(_DWORD *)(a2 + 40) = v4 - v3; -LABEL_7: - std::streambuf::operator=((volatile signed __int32 **)this, a2); - std::locale::locale((volatile signed __int32 **)&v29, (volatile signed __int32 **)(a2 + 28), v25); - std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)this + 7, v26); - (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v29); - std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v29); - std::locale::~locale(&v30); - std::locale::~locale(&v29); - v6 = *(_DWORD *)(a2 + 36); - this[8] = *(_DWORD *)(a2 + 32); - v7 = (_BYTE *)this[9]; - Src = (char *)(a2 + 44); - if ( v6 == a2 + 44 ) - { - v24 = *(_DWORD *)(a2 + 40); - if ( v24 ) - { - if ( v24 == 1 ) - *v7 = *(_BYTE *)(a2 + 44); - else - memcpy(v7, Src, *(_DWORD *)(a2 + 40)); - v24 = *(_DWORD *)(a2 + 40); - v7 = (_BYTE *)this[9]; - } - this[10] = v24; - v7[v24] = 0; - v7 = *(_BYTE **)(a2 + 36); - } - else - { - v8 = *(_DWORD *)(a2 + 40); - if ( v7 == (_BYTE *)(this + 11) ) - { - this[9] = v6; - this[10] = v8; - this[11] = *(_DWORD *)(a2 + 44); - } - else - { - this[9] = v6; - this[10] = v8; - v9 = this[11]; - this[11] = *(_DWORD *)(a2 + 44); - if ( v7 ) - { - *(_DWORD *)(a2 + 36) = v7; - *(_DWORD *)(a2 + 44) = v9; - goto LABEL_11; - } - } - v7 = (_BYTE *)(a2 + 44); - *(_DWORD *)(a2 + 36) = Src; - } -LABEL_11: - *(_DWORD *)(a2 + 40) = 0; - *v7 = 0; - v10 = *(char **)(a2 + 36); - v11 = &v10[*(_DWORD *)(a2 + 40)]; - v12 = *(_DWORD *)(a2 + 32) & 0x10; - if ( v10 == Src ) - v13 = 15; - else - v13 = *(_DWORD *)(a2 + 44); - v14 = &v10[v13]; - if ( (*(_DWORD *)(a2 + 32) & 8) != 0 ) - { - *(_DWORD *)(a2 + 4) = v10; - *(_DWORD *)(a2 + 8) = v10; - *(_DWORD *)(a2 + 12) = v11; - if ( v12 ) - { - *(_DWORD *)(a2 + 20) = v10; - *(_DWORD *)(a2 + 16) = v10; - *(_DWORD *)(a2 + 24) = v14; - } - } - else if ( v12 ) - { - *(_DWORD *)(a2 + 20) = v10; - *(_DWORD *)(a2 + 16) = v10; - *(_DWORD *)(a2 + 24) = v14; - *(_DWORD *)(a2 + 4) = v11; - *(_DWORD *)(a2 + 8) = v11; - *(_DWORD *)(a2 + 12) = v11; - } - v15 = v31; - v16 = v31[9]; - if ( ((unsigned int)v32 & HIDWORD(v32)) != -1 ) - { - v17 = v34; - v18 = v33; - v31[1] = v16 + v32; - v15[2] = v16 + v18; - v15[3] = v16 + v17; - } - if ( ((unsigned int)v35 & HIDWORD(v35)) != -1 ) - { - v19 = v37; - v20 = v36; - v21 = v16 + v35; - v15[4] = v16 + v35; - v15[6] = v16 + v19; - if ( v20 > 0x7FFFFFFF ) - { - v22 = v21 + 0x7FFFFFFF; - do - { - v21 = v22; - v20 -= 0x7FFFFFFFLL; - v22 += 0x7FFFFFFF; - } - while ( v20 > 0x7FFFFFFF ); - } - v15[5] = v21 + v20; - } - return this; -} -// 4E44FB: variable 'v25' is possibly undefined -// 4E4517: variable 'v26' is possibly undefined - -//----- (004E4800) -------------------------------------------------------- -unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) -{ - int v3; // ebx - unsigned int result; // eax - int v5; // esi - unsigned int v6; // edi - - this[2] = -1; - this[3] = -1; - v3 = a2[9]; - *this = a3; - result = a2[1]; - this[4] = -1; - v5 = a2[4]; - this[5] = -1; - this[6] = -1; - this[7] = -1; - this[8] = -1; - this[9] = -1; - this[10] = -1; - this[11] = -1; - this[12] = -1; - this[13] = -1; - if ( !result ) - { - if ( !v5 ) - return result; - goto LABEL_3; - } - *((_QWORD *)this + 1) = (int)(result - v3) >> 1; - *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; - result = a2[3]; - *((_QWORD *)this + 3) = (int)(result - v3) >> 1; - if ( v5 ) - { -LABEL_3: - *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); - v6 = a2[5]; - *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; - *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; - if ( result < v6 ) - result = v6; - } - if ( result ) - { - result = (int)(result - v3) >> 1; - a2[10] = result; - } - return result; -} - -//----- (004E4900) -------------------------------------------------------- -unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) -{ - int v3; // ebx - unsigned int result; // eax - int v5; // esi - unsigned int v6; // edi - - this[2] = -1; - this[3] = -1; - v3 = a2[9]; - *this = a3; - result = a2[1]; - this[4] = -1; - v5 = a2[4]; - this[5] = -1; - this[6] = -1; - this[7] = -1; - this[8] = -1; - this[9] = -1; - this[10] = -1; - this[11] = -1; - this[12] = -1; - this[13] = -1; - if ( !result ) - { - if ( !v5 ) - return result; - goto LABEL_3; - } - *((_QWORD *)this + 1) = (int)(result - v3) >> 1; - *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; - result = a2[3]; - *((_QWORD *)this + 3) = (int)(result - v3) >> 1; - if ( v5 ) - { -LABEL_3: - *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); - v6 = a2[5]; - *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; - *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; - if ( result < v6 ) - result = v6; - } - if ( result ) - { - result = (int)(result - v3) >> 1; - a2[10] = result; - } - return result; -} - -//----- (004E4A00) -------------------------------------------------------- -int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) -{ - int v1; // eax - _DWORD *v2; // esi - int v3; // ebx - int v4; // edx - int v5; // edi - int v6; // edi - int result; // eax - __int64 v8; // rax - int v9; // ecx - int v10; // ebx - int v11; // ecx - - v1 = *(_DWORD *)(a1 + 8); - v2 = *(_DWORD **)a1; - v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); - if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) - { - v4 = *(_DWORD *)(a1 + 24); - v5 = *(_DWORD *)(a1 + 16); - v2[1] = v3 + 2 * v1; - v2[2] = v3 + 2 * v5; - v2[3] = v3 + 2 * v4; - } - v6 = *(_DWORD *)(a1 + 32); - result = v6 & *(_DWORD *)(a1 + 36); - if ( result != -1 ) - { - v8 = *(_QWORD *)(a1 + 40); - v9 = v3 + 2 * *(_DWORD *)(a1 + 48); - v10 = v3 + 2 * v6; - v2[6] = v9; - v2[4] = v10; - if ( v8 > 0x7FFFFFFF ) - { - v11 = v10 - 2; - do - { - v10 = v11; - v8 -= 0x7FFFFFFFLL; - v11 -= 2; - } - while ( v8 > 0x7FFFFFFF ); - } - result = v10 + 2 * v8; - v2[5] = result; - } - return result; -} - -//----- (004E4A90) -------------------------------------------------------- -int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) -{ - int v1; // eax - _DWORD *v2; // esi - int v3; // ebx - int v4; // edx - int v5; // edi - int v6; // edi - int result; // eax - __int64 v8; // rax - int v9; // ecx - int v10; // ebx - int v11; // ecx - - v1 = *(_DWORD *)(a1 + 8); - v2 = *(_DWORD **)a1; - v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); - if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) - { - v4 = *(_DWORD *)(a1 + 24); - v5 = *(_DWORD *)(a1 + 16); - v2[1] = v3 + 2 * v1; - v2[2] = v3 + 2 * v5; - v2[3] = v3 + 2 * v4; - } - v6 = *(_DWORD *)(a1 + 32); - result = v6 & *(_DWORD *)(a1 + 36); - if ( result != -1 ) - { - v8 = *(_QWORD *)(a1 + 40); - v9 = v3 + 2 * *(_DWORD *)(a1 + 48); - v10 = v3 + 2 * v6; - v2[6] = v9; - v2[4] = v10; - if ( v8 > 0x7FFFFFFF ) - { - v11 = v10 - 2; - do - { - v10 = v11; - v8 -= 0x7FFFFFFFLL; - v11 -= 2; - } - while ( v8 > 0x7FFFFFFF ); - } - result = v10 + 2 * v8; - v2[5] = result; - } - return result; -} - -//----- (004E4B20) -------------------------------------------------------- -unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1) -{ - unsigned int result; // eax - - result = *(_DWORD *)(a1 + 20); - if ( result && *(_DWORD *)(a1 + 12) < result ) - { - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - { - *(_DWORD *)(a1 + 4) = result; - *(_DWORD *)(a1 + 8) = result; - } - *(_DWORD *)(a1 + 12) = result; - } - return result; -} - -//----- (004E4B50) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::_M_stringbuf_init(_DWORD *this, int a2) -{ - int v2; // ebx - int v3; // edi - _DWORD *result; // eax - int v5; // edi - _DWORD *v6; // [esp+8h] [ebp-1Ch] - - v2 = 0; - v3 = this[10]; - result = (_DWORD *)this[9]; - this[8] = a2; - if ( (a2 & 3) != 0 ) - v2 = v3; - v6 = (_DWORD *)((char *)result + 2 * v3); - if ( result == this + 11 ) - v5 = 14; - else - v5 = 2 * this[11]; - if ( (a2 & 8) != 0 ) - { - this[1] = result; - this[2] = result; - this[3] = v6; - } - if ( (a2 & 0x10) != 0 ) - { - this[6] = (char *)result + v5; - this[4] = result; - if ( (unsigned int)v2 > 0x7FFFFFFFuLL ) - { - if ( (((unsigned __int64)(unsigned int)v2 - 0x7FFFFFFF) >> 32) | (unsigned int)(v2 + 1) ) - { - result = (_DWORD *)((char *)result - 2); - v2 -= 0x7FFFFFFF; - } - else - { - --result; - v2 = 1; - } - } - result = (_DWORD *)((char *)result + 2 * v2); - this[5] = result; - if ( (a2 & 8) == 0 ) - { - result = v6; - this[1] = v6; - this[2] = v6; - this[3] = v6; - } - } - return result; -} - -//----- (004E4C40) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::str(int this, int a2) -{ - unsigned int v3; // eax - - std::wstring::_M_replace((unsigned int **)(this + 36), 0, *(_DWORD *)(this + 40), *(char **)a2, *(_DWORD *)(a2 + 4)); - v3 = 0; - if ( (*(_BYTE *)(this + 32) & 3) != 0 ) - v3 = *(_DWORD *)(this + 40); - return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); -} - -//----- (004E4CA0) -------------------------------------------------------- -void __thiscall std::wstringbuf::swap(volatile signed __int32 **this, _DWORD *a2) -{ - std::locale *v2; // esi - volatile signed __int32 *v3; // ecx - volatile signed __int32 *v4; // ebx - volatile signed __int32 *v5; // eax - volatile signed __int32 *v6; // esi - volatile signed __int32 *v7; // esi - int v8; // ecx - int v9; // ebx - unsigned int v10; // eax - unsigned int v11; // edi - volatile signed __int32 *v12; // eax - volatile signed __int32 *v13; // edx - volatile signed __int32 *v14; // eax - volatile signed __int32 *v15; // edx - volatile signed __int32 *v16; // eax - volatile signed __int32 *v17; // edx - volatile signed __int32 *v18; // eax - volatile signed __int32 *v19; // edx - volatile signed __int32 *v20; // eax - volatile signed __int32 *v21; // eax - volatile signed __int32 **v22; // ebx - volatile signed __int32 *v23; // ecx - int v24; // edx - int v25; // esi - __int64 v26; // rax - volatile signed __int32 *v27; // edi - volatile signed __int32 *v28; // ecx - bool v29; // cf - _DWORD *v30; // esi - int v31; // ecx - int v32; // edx - int v33; // ebx - int v34; // edi - __int64 v35; // rax - int v36; // ebx - int v37; // ecx - const std::locale *v38; // [esp+4h] [ebp-E4h] - const std::locale *v39; // [esp+4h] [ebp-E4h] - const std::locale *v40; // [esp+4h] [ebp-E4h] - const std::locale *v41; // [esp+4h] [ebp-E4h] - std::locale *v42; // [esp+10h] [ebp-D8h] - std::locale *v43; // [esp+10h] [ebp-D8h] - std::locale *v44; // [esp+10h] [ebp-D8h] - std::locale *v45; // [esp+10h] [ebp-D8h] - std::locale *v46; // [esp+14h] [ebp-D4h] - _DWORD *v48; // [esp+54h] [ebp-94h] BYREF - _DWORD *v49; // [esp+58h] [ebp-90h] BYREF - _DWORD *v50; // [esp+5Ch] [ebp-8Ch] BYREF - _DWORD *v51; // [esp+60h] [ebp-88h] - int v52; // [esp+68h] [ebp-80h] - int v53; // [esp+6Ch] [ebp-7Ch] - int v54; // [esp+70h] [ebp-78h] - int v55; // [esp+74h] [ebp-74h] - __int64 v56; // [esp+78h] [ebp-70h] - int v57; // [esp+80h] [ebp-68h] - int v58; // [esp+84h] [ebp-64h] - __int64 v59; // [esp+88h] [ebp-60h] - int v60; // [esp+90h] [ebp-58h] - int v61; // [esp+94h] [ebp-54h] - volatile signed __int32 **v62; // [esp+98h] [ebp-50h] - int v63; // [esp+A0h] [ebp-48h] - int v64; // [esp+A4h] [ebp-44h] - int v65; // [esp+A8h] [ebp-40h] - int v66; // [esp+ACh] [ebp-3Ch] - __int64 v67; // [esp+B0h] [ebp-38h] - int v68; // [esp+B8h] [ebp-30h] - int v69; // [esp+BCh] [ebp-2Ch] - __int64 v70; // [esp+C0h] [ebp-28h] - int v71; // [esp+C8h] [ebp-20h] - int v72; // [esp+CCh] [ebp-1Ch] - - v52 = -1; - v53 = -1; - v2 = (std::locale *)this[1]; - v51 = a2; - v54 = -1; - v3 = this[9]; - v55 = -1; - v4 = this[4]; - v56 = -1LL; - v57 = -1; - v58 = -1; - v59 = -1LL; - v60 = -1; - v61 = -1; - v46 = v2; - if ( !v2 ) - { - v5 = 0; - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v52 = (v2 - (std::locale *)v3) >> 1; - v53 = (v2 - (std::locale *)v3) >> 31; - v42 = (std::locale *)this[2]; - v54 = (v42 - (std::locale *)v3) >> 1; - v55 = (v42 - (std::locale *)v3) >> 31; - v5 = this[3]; - v56 = ((char *)v5 - (char *)v3) >> 1; - if ( v4 ) - { -LABEL_3: - v57 = ((char *)v4 - (char *)v3) >> 1; - v58 = ((char *)v4 - (char *)v3) >> 31; - v6 = this[5]; - v43 = (std::locale *)this[6]; - v59 = ((char *)v6 - (char *)v4) >> 1; - v60 = (v43 - (std::locale *)v3) >> 1; - v61 = (v43 - (std::locale *)v3) >> 31; - if ( v5 < v6 ) - v5 = v6; - } - if ( v5 ) - this[10] = (volatile signed __int32 *)(((char *)v5 - (char *)v3) >> 1); -LABEL_7: - v63 = -1; - v64 = -1; - v62 = this; - v65 = -1; - v7 = (volatile signed __int32 *)a2[1]; - v66 = -1; - v67 = -1LL; - v8 = a2[9]; - v9 = a2[4]; - v68 = -1; - v69 = -1; - v70 = -1LL; - v71 = -1; - v72 = -1; - if ( !v7 ) - { - v10 = 0; - if ( !v9 ) - goto LABEL_13; - goto LABEL_9; - } - v63 = ((int)v7 - v8) >> 1; - v64 = ((int)v7 - v8) >> 31; - v44 = (std::locale *)a2[2]; - v65 = ((int)v44 - v8) >> 1; - v66 = ((int)v44 - v8) >> 31; - v10 = a2[3]; - v67 = (int)(v10 - v8) >> 1; - if ( v9 ) - { -LABEL_9: - v68 = (v9 - v8) >> 1; - v69 = (v9 - v8) >> 31; - v11 = a2[5]; - v70 = (int)(v11 - v9) >> 1; - v45 = (std::locale *)a2[6]; - v71 = ((int)v45 - v8) >> 1; - v72 = ((int)v45 - v8) >> 31; - if ( v10 < v11 ) - v10 = v11; - } - if ( v10 ) - a2[10] = (int)(v10 - v8) >> 1; -LABEL_13: - this[1] = v7; - a2[1] = v46; - v12 = this[2]; - this[2] = (volatile signed __int32 *)a2[2]; - v13 = (volatile signed __int32 *)a2[3]; - a2[2] = v12; - v14 = this[3]; - this[3] = v13; - v15 = (volatile signed __int32 *)a2[4]; - a2[3] = v14; - v16 = this[4]; - this[4] = v15; - v17 = (volatile signed __int32 *)a2[5]; - a2[4] = v16; - v18 = this[5]; - this[5] = v17; - v19 = (volatile signed __int32 *)a2[6]; - a2[5] = v18; - v20 = this[6]; - this[6] = v19; - a2[6] = v20; - std::locale::locale((volatile signed __int32 **)&v50, this + 7, v38); - std::locale::operator=(this + 7, (volatile signed __int32 **)a2 + 7); - std::locale::operator=((volatile signed __int32 **)a2 + 7, (volatile signed __int32 **)&v50); - std::locale::~locale(&v50); - std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)a2 + 7, v39); - std::locale::locale((volatile signed __int32 **)&v49, this + 7, v40); - (*((void (__thiscall **)(volatile signed __int32 **, _DWORD **))*this + 2))(this, &v48); - std::locale::operator=(this + 7, (volatile signed __int32 **)&v48); - std::locale::locale((volatile signed __int32 **)&v50, (volatile signed __int32 **)a2 + 7, v41); - (*(void (__thiscall **)(_DWORD *, _DWORD **))(*a2 + 8))(a2, &v49); - std::locale::operator=((volatile signed __int32 **)a2 + 7, (volatile signed __int32 **)&v49); - std::locale::~locale(&v50); - std::locale::~locale(&v49); - std::locale::~locale(&v48); - v21 = this[8]; - this[8] = (volatile signed __int32 *)a2[8]; - a2[8] = v21; - std::wstring::swap(this + 9, a2 + 9); - v22 = v62; - v23 = v62[9]; - if ( (v63 & v64) != -1 ) - { - v24 = v67; - v25 = v65; - v62[1] = (volatile signed __int32 *)((char *)v23 + 2 * v63); - v22[2] = (volatile signed __int32 *)((char *)v23 + 2 * v25); - v22[3] = (volatile signed __int32 *)((char *)v23 + 2 * v24); - } - if ( (v68 & v69) != -1 ) - { - v26 = v70; - v27 = (volatile signed __int32 *)((char *)v23 + 2 * v71); - v28 = (volatile signed __int32 *)((char *)v23 + 2 * v68); - v29 = (unsigned int)v70 > 0x7FFFFFFF; - v22[4] = v28; - v22[6] = v27; - if ( v29 + HIDWORD(v26) > 0 ) - { - do - { - v28 = (volatile signed __int32 *)((char *)v28 - 2); - v26 -= 0x7FFFFFFFLL; - } - while ( v26 > 0x7FFFFFFF ); - } - v22[5] = (volatile signed __int32 *)((char *)v28 + 2 * v26); - } - v30 = v51; - v31 = v51[9]; - if ( (v52 & v53) != -1 ) - { - v32 = v56; - v33 = v54; - v51[1] = v31 + 2 * v52; - v30[2] = v31 + 2 * v33; - v30[3] = v31 + 2 * v32; - } - if ( (v57 & v58) != -1 ) - { - v34 = v60; - v35 = v59; - v36 = v31 + 2 * v57; - v30[4] = v36; - v30[6] = v31 + 2 * v34; - if ( v35 > 0x7FFFFFFF ) - { - v37 = v36 - 2; - do - { - v36 = v37; - v35 -= 0x7FFFFFFFLL; - v37 -= 2; - } - while ( v35 > 0x7FFFFFFF ); - } - v30[5] = v36 + 2 * v35; - } -} -// 4E4F81: variable 'v38' is possibly undefined -// 4E4FC9: variable 'v39' is possibly undefined -// 4E4FDC: variable 'v40' is possibly undefined -// 4E5027: variable 'v41' is possibly undefined - -//----- (004E5280) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3) -{ - _WORD *v4; // eax - int v5; // ecx - - if ( !a2 || a3 < 0 ) - return this; - v4 = (_WORD *)this[9]; - this[10] = 0; - *v4 = 0; - std::wstringbuf::_M_sync(this, a2, a3, 0); - return (_DWORD *)v5; -} -// 4E52C7: variable 'v5' is possibly undefined - -//----- (004E52E0) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) -{ - _DWORD *result; // eax - _DWORD *v5; // esi - int v6; // ebx - char *v7; // edx - int v8; // edi - char *v9; // edi - int v10; // esi - unsigned int v11; // edi - _DWORD *v12; // [esp+0h] [ebp-1Ch] - - result = a2; - v5 = (_DWORD *)this[9]; - v6 = this[8] & 0x10; - v7 = (char *)a2 + 2 * this[10]; - v12 = (_DWORD *)(this[8] & 8); - if ( v5 == this + 11 ) - v8 = 14; - else - v8 = 2 * this[11]; - v9 = (char *)a2 + v8; - if ( a2 != v5 ) - { - v10 = a3; - a3 = 0; - v7 += 2 * v10; - v9 = v7; - } - if ( v12 ) - { - this[1] = a2; - this[3] = v7; - this[2] = (char *)a2 + 2 * a3; - } - if ( v6 ) - { - this[6] = v9; - this[4] = a2; - if ( a4 > 0x7FFFFFFF ) - { - v11 = a4 - 0x7FFFFFFF; - if ( (((unsigned __int64)a4 - 0x7FFFFFFF) >> 32) | (a4 + 1) ) - { - result = (_DWORD *)((char *)a2 - 2); - } - else - { - result = a2 - 1; - v11 = 1; - } - a4 = v11; - } - this[5] = (char *)result + 2 * a4; - result = v12; - if ( !v12 ) - { - this[1] = v7; - this[2] = v7; - this[3] = v7; - } - } - return result; -} - -//----- (004E53D0) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, unsigned int a5) -{ - bool v5; // bl - int v6; // ebx - unsigned int v8; // eax - int v9; // edx - int v10; // edx - __int64 v11; // [esp+0h] [ebp-34h] - unsigned int v12; // [esp+8h] [ebp-2Ch] - unsigned __int8 v13; // [esp+8h] [ebp-2Ch] - __int64 v14; // [esp+8h] [ebp-2Ch] - __int16 v15; // [esp+1Dh] [ebp-17h] - char v16; // [esp+1Fh] [ebp-15h] - - *this = -1; - this[1] = -1; - this[2] = 0; - v11 = a3; - v5 = ((unsigned __int8)a5 & *(_BYTE *)(a2 + 32) & 8) != 0; - v12 = (a5 & *(_DWORD *)(a2 + 32)) >> 4; - LOBYTE(v15) = (a4 != 1) & v12 & v5; - v13 = v12 & ((a5 >> 3) ^ 1) & 1; - HIBYTE(v15) = v5 & ((a5 >> 4) ^ 1); - if ( HIBYTE(v15) ) - { - v6 = *(_DWORD *)(a2 + 4); - if ( !v6 && a3 ) - return this; - v16 = v15 | v13; - } - else - { - v6 = *(_DWORD *)(a2 + 16); - if ( !v6 && a3 ) - return this; - v16 = v13 | v15; - if ( !(v13 | (unsigned __int8)v15) ) - return this; - } - v8 = *(_DWORD *)(a2 + 20); - if ( v8 && v8 > *(_DWORD *)(a2 + 12) ) - { - if ( (*(_DWORD *)(a2 + 32) & 8) == 0 ) - { - *(_DWORD *)(a2 + 4) = v8; - *(_DWORD *)(a2 + 8) = v8; - } - *(_DWORD *)(a2 + 12) = v8; - } - if ( a4 == 1 ) - { - v14 = a3 + ((int)(v8 - v6) >> 1); - v11 = ((*(_DWORD *)(a2 + 8) - v6) >> 1) + a3; - } - else - { - v14 = a3; - if ( a4 == 2 ) - { - v11 = ((*(_DWORD *)(a2 + 12) - v6) >> 1) + a3; - v14 = v11; - } - } - if ( v15 && v11 >= 0 && (*(_DWORD *)(a2 + 12) - v6) >> 1 >= v11 ) - { - v10 = *(_DWORD *)(a2 + 4); - *(_QWORD *)this = v11; - this[2] = 0; - *(_DWORD *)(a2 + 8) = v10 + 2 * v11; - } - if ( v14 >= 0 && v16 && (*(_DWORD *)(a2 + 12) - v6) >> 1 >= v14 ) - { - v9 = *(_DWORD *)(a2 + 16); - *(_QWORD *)this = v14; - this[2] = 0; - *(_DWORD *)(a2 + 20) = v9 + 2 * v14; - } - return this; -} - -//----- (004E5610) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) -{ - _DWORD *result; // eax - int v7; // ecx - int v8; // ebx - unsigned int v9; // ebp - int v10; // [esp+0h] [ebp-2Ch] - - result = this; - *this = -1; - this[1] = -1; - this[2] = 0; - v7 = a2[8] & 8; - v10 = a6 & a2[8]; - if ( (a6 & v7) != 0 ) - v8 = a2[1]; - else - v8 = a2[4]; - if ( (!a3 || v8) && (v10 & 0x18) != 0 ) - { - v9 = a2[5]; - if ( v9 && v9 > a2[3] ) - { - if ( !v7 ) - { - a2[1] = v9; - a2[2] = v9; - } - a2[3] = v9; - } - if ( a3 >= 0 && __SPAIR64__((a2[3] - v8) >> 31, (a2[3] - v8) >> 1) >= a3 ) - { - if ( (a6 & v7) != 0 ) - a2[2] = a2[1] + 2 * a3; - if ( (v10 & 0x10) != 0 ) - a2[5] = a2[4] + 2 * a3; - *(_QWORD *)result = a3; - result[2] = a4; - } - } - return result; -} - -//----- (004E5700) -------------------------------------------------------- -int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) -{ - __int64 v5; // rax - int v6; // ecx - int result; // eax - - v5 = a4; - this[6] = a3; - v6 = a2; - for ( this[4] = a2; v5 > 0x7FFFFFFF; v5 -= 0x7FFFFFFFLL ) - v6 -= 2; - result = v6 + 2 * v5; - this[5] = result; - return result; -} - -//----- (004E5760) -------------------------------------------------------- -int __thiscall std::wstringbuf::overflow(_DWORD *this, unsigned __int16 a2) -{ - _DWORD *v2; // ebx - unsigned int v3; // edx - unsigned int v4; // esi - _WORD *v5; // eax - unsigned int v6; // eax - char *v7; // edx - _WORD *v8; // eax - unsigned int v9; // edx - char *v11; // eax - int v12; // edx - int v13; // ecx - int v14; // edx - _DWORD *v15; // edi - char *v16; // eax - int v17; // [esp+1Ch] [ebp-7Ch] - int v18; // [esp+20h] [ebp-78h] - int v19; // [esp+20h] [ebp-78h] - int v20; // [esp+20h] [ebp-78h] - unsigned __int16 lpuexcpta; // [esp+28h] [ebp-70h] - void *Block; // [esp+68h] [ebp-30h] BYREF - int v24; // [esp+6Ch] [ebp-2Ch] - int v25[10]; // [esp+70h] [ebp-28h] BYREF - - v18 = this[8]; - if ( (v18 & 0x10) == 0 ) - return (unsigned __int16)-1; - if ( a2 == 0xFFFF ) - return 0; - v2 = (_DWORD *)this[9]; - if ( v2 == this + 11 ) - v3 = 7; - else - v3 = this[11]; - v4 = this[6]; - v5 = (_WORD *)this[5]; - v17 = this[4]; - if ( (int)(v4 - v17) >> 1 >= v3 ) - { - if ( v4 > (unsigned int)v5 ) - goto LABEL_22; - if ( v3 != 0x1FFFFFFF ) - { - if ( v4 <= (unsigned int)v5 ) - { - v24 = 0; - Block = v25; - v6 = 2 * v3; - LOWORD(v25[0]) = 0; - if ( 2 * v3 > 0x1FFFFFFF ) - v6 = 0x1FFFFFFF; - if ( v6 < 0x200 ) - v6 = 512; - std::wstring::reserve((int)&Block, v6); - v7 = (char *)this[4]; - v19 = v24; - if ( v7 ) - { - std::wstring::_M_replace((unsigned int **)&Block, 0, v24, v7, (this[6] - (int)v7) >> 1); - v19 = v24; - } - v8 = Block; - v9 = 7; - if ( Block != v25 ) - v9 = v25[0]; - if ( v19 + 1 > v9 ) - { - std::wstring::_M_mutate((int)&Block, v19, 0, 0, 1); - v8 = Block; - } - v8[v19] = a2; - v24 = v19 + 1; - v8[v19 + 1] = 0; - std::wstring::swap(this + 9, &Block); - std::wstringbuf::_M_sync(this, (_DWORD *)this[9], (this[2] - this[1]) >> 1, (this[5] - this[4]) >> 1); - if ( Block != v25 ) - operator delete(Block); - v5 = (_WORD *)this[5]; - goto LABEL_23; - } -LABEL_22: - *v5 = a2; -LABEL_23: - this[5] = v5 + 1; - return a2; - } - return (unsigned __int16)-1; - } - v11 = (char *)v5 + (_DWORD)v2 - v17; - this[4] = v2; - this[6] = (char *)v2 + 2 * v3; - this[5] = v11; - if ( (v18 & 8) != 0 ) - { - v12 = this[1]; - this[1] = v2; - v20 = v12; - v13 = (int)v2 + this[3] - v12 + 2; - v14 = this[2]; - this[3] = v13; - this[2] = (char *)v2 + v14 - v20; - } - v15 = this; - v16 = v11 + 2; - *((_WORD *)v16 - 1) = a2; - lpuexcpta = a2; - v15[5] = v16; - return lpuexcpta; -} - -//----- (004E5A50) -------------------------------------------------------- -int __thiscall std::wstringbuf::pbackfail(int this, int a2) -{ - unsigned int v2; // eax - int v3; // edx - int v4; // esi - - v2 = *(_DWORD *)(this + 8); - v3 = -1; - if ( v2 <= *(_DWORD *)(this + 4) ) - return v3; - if ( (_WORD)a2 == 0xFFFF ) - { - *(_DWORD *)(this + 8) = v2 - 2; - return 0; - } - v4 = *(unsigned __int16 *)(v2 - 2); - if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && (_WORD)v4 != (_WORD)a2 ) - return v3; - *(_DWORD *)(this + 8) = v2 - 2; - v3 = v4; - if ( (_WORD)v4 == (_WORD)a2 ) - return v3; - *(_WORD *)(v2 - 2) = a2; - return a2; -} - -//----- (004E5AB0) -------------------------------------------------------- -int __fastcall std::wstringbuf::showmanyc(int a1) -{ - unsigned int v1; // edx - unsigned int v2; // eax - - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - return -1; - v1 = *(_DWORD *)(a1 + 20); - v2 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - if ( v1 > v2 ) - { - *(_DWORD *)(a1 + 12) = v1; - v2 = v1; - } - } - return (int)(v2 - *(_DWORD *)(a1 + 8)) >> 1; -} - -//----- (004E5AE0) -------------------------------------------------------- -int __fastcall std::wstringbuf::underflow(int a1) -{ - unsigned int v2; // eax - unsigned int v3; // edx - unsigned __int16 *v4; // eax - - if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) - return -1; - v2 = *(_DWORD *)(a1 + 20); - v3 = *(_DWORD *)(a1 + 12); - if ( v2 ) - { - if ( v2 > v3 ) - { - *(_DWORD *)(a1 + 12) = v2; - v3 = v2; - } - } - v4 = *(unsigned __int16 **)(a1 + 8); - if ( (unsigned int)v4 < v3 ) - return *v4; - else - return -1; -} - -//----- (004E5B20) -------------------------------------------------------- -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) -{ - int v2; // edx - unsigned int v3; // eax - int v4; // ecx - int v5; // eax - char *v6; // esi - std::locale *v7; // eax - int v8; // ecx - int v9; // ebx - char *v10; // ecx - int v11; // edx - const std::locale *v12; // [esp+4h] [ebp-A4h] - int v15; // [esp+60h] [ebp-48h] - int v16; // [esp+64h] [ebp-44h] - int v17; // [esp+68h] [ebp-40h] - __int64 v18; // [esp+70h] [ebp-38h] - int v19; // [esp+78h] [ebp-30h] - int v20; // [esp+7Ch] [ebp-2Ch] - int v21; // [esp+80h] [ebp-28h] - int v22; // [esp+88h] [ebp-20h] - - v15 = -1; - v16 = -1; - v17 = -1; - v2 = *((_DWORD *)a2 + 9); - v3 = *((_DWORD *)a2 + 1); - LODWORD(v18) = -1; - v19 = -1; - v20 = -1; - v21 = -1; - v22 = -1; - if ( !v3 ) - { - v4 = *((_DWORD *)a2 + 4); - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v15 = (int)(v3 - v2) >> 1; - v16 = (int)(v3 - v2) >> 31; - v17 = (*((_DWORD *)a2 + 2) - v2) >> 1; - v3 = *((_DWORD *)a2 + 3); - v18 = (int)(v3 - v2) >> 1; - v4 = *((_DWORD *)a2 + 4); - if ( v4 ) - { -LABEL_3: - v19 = (v4 - v2) >> 1; - v20 = (v4 - v2) >> 31; - v21 = (*((_DWORD *)a2 + 5) - v4) >> 1; - v22 = (*((_DWORD *)a2 + 6) - v2) >> 1; - if ( v3 < *((_DWORD *)a2 + 5) ) - v3 = *((_DWORD *)a2 + 5); - } - if ( v3 ) - *((_DWORD *)a2 + 10) = (int)(v3 - v2) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(this, a2, v12); - v5 = *((_DWORD *)a2 + 8); - *this = &off_51A318; - this[9] = this + 11; - this[8] = v5; - v6 = (char *)a2 + 44; - v7 = (std::locale *)*((_DWORD *)a2 + 9); - if ( v7 == (std::locale *)((char *)a2 + 44) ) - { - this[11] = *((_DWORD *)a2 + 11); - this[12] = *((_DWORD *)a2 + 12); - this[13] = *((_DWORD *)a2 + 13); - this[14] = *((_DWORD *)a2 + 14); - } - else - { - this[9] = v7; - this[11] = *((_DWORD *)a2 + 11); - } - this[10] = *((_DWORD *)a2 + 10); - *((_DWORD *)a2 + 9) = v6; - *((_WORD *)a2 + 22) = 0; - v8 = this[9]; - *((_DWORD *)a2 + 10) = 0; - if ( (v15 & v16) != -1 ) - { - this[1] = v8 + 2 * v15; - this[2] = v8 + 2 * v17; - this[3] = v8 + 2 * v18; - } - if ( (v19 & v20) != -1 ) - { - v9 = v8 + 2 * v19; - this[6] = v8 + 2 * v22; - this[4] = v9; - this[5] = v9 + 2 * v21; - } - v10 = (char *)a2 + 58; - v11 = *((_DWORD *)a2 + 8) & 0x10; - if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) - { - *((_DWORD *)a2 + 1) = v6; - *((_DWORD *)a2 + 2) = v6; - *((_DWORD *)a2 + 3) = v6; - if ( v11 ) - { - *((_DWORD *)a2 + 5) = v6; - *((_DWORD *)a2 + 4) = v6; - *((_DWORD *)a2 + 6) = v10; - } - } - else if ( v11 ) - { - *((_DWORD *)a2 + 5) = v6; - *((_DWORD *)a2 + 4) = v6; - *((_DWORD *)a2 + 6) = v10; - *((_DWORD *)a2 + 1) = v6; - *((_DWORD *)a2 + 2) = v6; - *((_DWORD *)a2 + 3) = v6; - } -} -// 4E5D4C: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4E5C78: variable 'v12' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); - -//----- (004E5E50) -------------------------------------------------------- -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) -{ - std::locale *v4; // eax - std::locale **v5; // edx - std::locale *v6; // edx - int result; // eax - const std::locale *v8; // [esp+4h] [ebp-18h] - - std::wstreambuf::basic_streambuf(this, (std::locale *)a2, v8); - v4 = a2[8]; - *this = &off_51A318; - this[9] = this + 11; - v5 = (std::locale **)a2[9]; - this[8] = v4; - if ( v5 == a2 + 11 ) - { - this[11] = a2[11]; - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - } - else - { - this[9] = v5; - this[11] = a2[11]; - } - v6 = a2[10]; - a2[9] = (std::locale *)(a2 + 11); - result = 0; - a2[10] = 0; - this[10] = v6; - *((_WORD *)a2 + 22) = 0; - return result; -} -// 4E5E5E: variable 'v8' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); - -//----- (004E5ED0) -------------------------------------------------------- -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - - *this = &off_51AE14; - this[1] = 0; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - std::locale::locale(this + 7); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - *this = &off_51A318; - this[8] = 0; - this[9] = this + 11; - std::wstring::_M_construct(this + 9, v4, (int)&v4[v3]); - this[8] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[10]; - std::wstringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004E5FF0) -------------------------------------------------------- -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_51AE14; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_51A318; - this[10] = 0; - this[8] = a2; - this[9] = this + 11; - result = 0; - *((_WORD *)this + 22) = 0; - return result; -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004E6060) -------------------------------------------------------- -int __fastcall std::wstringbuf::basic_stringbuf(int a1) -{ - _DWORD *v2; // ecx - int result; // eax - - v2 = (_DWORD *)(a1 + 28); - *(v2 - 7) = &off_51AE14; - *(v2 - 6) = 0; - *(v2 - 5) = 0; - *(v2 - 4) = 0; - *(v2 - 3) = 0; - *(v2 - 2) = 0; - *(v2 - 1) = 0; - std::locale::locale(v2); - *(_DWORD *)a1 = &off_51A318; - *(_DWORD *)(a1 + 36) = a1 + 44; - result = 0; - *(_DWORD *)(a1 + 32) = 24; - *(_DWORD *)(a1 + 40) = 0; - *(_WORD *)(a1 + 44) = 0; - return result; -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004E60D0) -------------------------------------------------------- -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale *a2) -{ - int v2; // edx - unsigned int v3; // eax - int v4; // ecx - int v5; // eax - char *v6; // esi - std::locale *v7; // eax - int v8; // ecx - int v9; // ebx - char *v10; // ecx - int v11; // edx - const std::locale *v12; // [esp+4h] [ebp-A4h] - int v15; // [esp+60h] [ebp-48h] - int v16; // [esp+64h] [ebp-44h] - int v17; // [esp+68h] [ebp-40h] - __int64 v18; // [esp+70h] [ebp-38h] - int v19; // [esp+78h] [ebp-30h] - int v20; // [esp+7Ch] [ebp-2Ch] - int v21; // [esp+80h] [ebp-28h] - int v22; // [esp+88h] [ebp-20h] - - v15 = -1; - v16 = -1; - v17 = -1; - v2 = *((_DWORD *)a2 + 9); - v3 = *((_DWORD *)a2 + 1); - LODWORD(v18) = -1; - v19 = -1; - v20 = -1; - v21 = -1; - v22 = -1; - if ( !v3 ) - { - v4 = *((_DWORD *)a2 + 4); - if ( !v4 ) - goto LABEL_7; - goto LABEL_3; - } - v15 = (int)(v3 - v2) >> 1; - v16 = (int)(v3 - v2) >> 31; - v17 = (*((_DWORD *)a2 + 2) - v2) >> 1; - v3 = *((_DWORD *)a2 + 3); - v18 = (int)(v3 - v2) >> 1; - v4 = *((_DWORD *)a2 + 4); - if ( v4 ) - { -LABEL_3: - v19 = (v4 - v2) >> 1; - v20 = (v4 - v2) >> 31; - v21 = (*((_DWORD *)a2 + 5) - v4) >> 1; - v22 = (*((_DWORD *)a2 + 6) - v2) >> 1; - if ( v3 < *((_DWORD *)a2 + 5) ) - v3 = *((_DWORD *)a2 + 5); - } - if ( v3 ) - *((_DWORD *)a2 + 10) = (int)(v3 - v2) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(this, a2, v12); - v5 = *((_DWORD *)a2 + 8); - *this = &off_51A318; - this[9] = this + 11; - this[8] = v5; - v6 = (char *)a2 + 44; - v7 = (std::locale *)*((_DWORD *)a2 + 9); - if ( v7 == (std::locale *)((char *)a2 + 44) ) - { - this[11] = *((_DWORD *)a2 + 11); - this[12] = *((_DWORD *)a2 + 12); - this[13] = *((_DWORD *)a2 + 13); - this[14] = *((_DWORD *)a2 + 14); - } - else - { - this[9] = v7; - this[11] = *((_DWORD *)a2 + 11); - } - this[10] = *((_DWORD *)a2 + 10); - *((_DWORD *)a2 + 9) = v6; - *((_WORD *)a2 + 22) = 0; - v8 = this[9]; - *((_DWORD *)a2 + 10) = 0; - if ( (v15 & v16) != -1 ) - { - this[1] = v8 + 2 * v15; - this[2] = v8 + 2 * v17; - this[3] = v8 + 2 * v18; - } - if ( (v19 & v20) != -1 ) - { - v9 = v8 + 2 * v19; - this[6] = v8 + 2 * v22; - this[4] = v9; - this[5] = v9 + 2 * v21; - } - v10 = (char *)a2 + 58; - v11 = *((_DWORD *)a2 + 8) & 0x10; - if ( (*((_DWORD *)a2 + 8) & 8) != 0 ) - { - *((_DWORD *)a2 + 1) = v6; - *((_DWORD *)a2 + 2) = v6; - *((_DWORD *)a2 + 3) = v6; - if ( v11 ) - { - *((_DWORD *)a2 + 5) = v6; - *((_DWORD *)a2 + 4) = v6; - *((_DWORD *)a2 + 6) = v10; - } - } - else if ( v11 ) - { - *((_DWORD *)a2 + 5) = v6; - *((_DWORD *)a2 + 4) = v6; - *((_DWORD *)a2 + 6) = v10; - *((_DWORD *)a2 + 1) = v6; - *((_DWORD *)a2 + 2) = v6; - *((_DWORD *)a2 + 3) = v6; - } -} -// 4E62FC: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4E6228: variable 'v12' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); - -//----- (004E6400) -------------------------------------------------------- -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, std::locale **a2, int a3) -{ - std::locale *v4; // eax - std::locale **v5; // edx - std::locale *v6; // edx - int result; // eax - const std::locale *v8; // [esp+4h] [ebp-18h] - - std::wstreambuf::basic_streambuf(this, (std::locale *)a2, v8); - v4 = a2[8]; - *this = &off_51A318; - this[9] = this + 11; - v5 = (std::locale **)a2[9]; - this[8] = v4; - if ( v5 == a2 + 11 ) - { - this[11] = a2[11]; - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - } - else - { - this[9] = v5; - this[11] = a2[11]; - } - v6 = a2[10]; - a2[9] = (std::locale *)(a2 + 11); - result = 0; - a2[10] = 0; - this[10] = v6; - *((_WORD *)a2 + 22) = 0; - return result; -} -// 4E640E: variable 'v8' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); - -//----- (004E6480) -------------------------------------------------------- -void __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2, int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - - *this = &off_51AE14; - this[1] = 0; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - std::locale::locale(this + 7); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - *this = &off_51A318; - this[8] = 0; - this[9] = this + 11; - std::wstring::_M_construct(this + 9, v4, (int)&v4[v3]); - this[8] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[10]; - std::wstringbuf::_M_sync(this, (_DWORD *)this[9], 0, v5); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004E65A0) -------------------------------------------------------- -int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) -{ - _DWORD *v3; // ecx - int result; // eax - - v3 = this + 7; - *(v3 - 7) = &off_51AE14; - *(v3 - 6) = 0; - *(v3 - 5) = 0; - *(v3 - 4) = 0; - *(v3 - 3) = 0; - *(v3 - 2) = 0; - *(v3 - 1) = 0; - std::locale::locale(v3); - *this = &off_51A318; - this[10] = 0; - this[8] = a2; - this[9] = this + 11; - result = 0; - *((_WORD *)this + 22) = 0; - return result; -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004E6610) -------------------------------------------------------- -int __fastcall std::wstringbuf::basic_stringbuf(int a1) -{ - _DWORD *v2; // ecx - int result; // eax - - v2 = (_DWORD *)(a1 + 28); - *(v2 - 7) = &off_51AE14; - *(v2 - 6) = 0; - *(v2 - 5) = 0; - *(v2 - 4) = 0; - *(v2 - 3) = 0; - *(v2 - 2) = 0; - *(v2 - 1) = 0; - std::locale::locale(v2); - *(_DWORD *)a1 = &off_51A318; - *(_DWORD *)(a1 + 36) = a1 + 44; - result = 0; - *(_DWORD *)(a1 + 32) = 24; - *(_DWORD *)(a1 + 40) = 0; - *(_WORD *)(a1 + 44) = 0; - return result; -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004E6680) -------------------------------------------------------- -void __fastcall std::wstringbuf::~wstringbuf(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[9]; - *Block = &off_51A318; - if ( v2 != Block + 11 ) - operator delete(v2); - *Block = &off_51AE14; - std::locale::~locale((_DWORD **)Block + 7); - operator delete(Block); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004E66C0) -------------------------------------------------------- -void __fastcall std::wstringbuf::~wstringbuf(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 36); - *(_DWORD *)a1 = &off_51A318; - if ( Block != (void *)(a1 + 44) ) - operator delete(Block); - *(_DWORD *)a1 = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 28)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004E66F0) -------------------------------------------------------- -_DWORD *__thiscall std::wstringbuf::operator=(_DWORD *this, int a2) -{ - int v2; // ecx - int v3; // edx - unsigned int v4; // eax - unsigned int v5; // ebx - int v6; // edi - _WORD *v7; // eax - int v8; // edx - int v9; // ecx - int v10; // ebx - int v11; // esi - int v12; // edx - int v13; // ebx - int v14; // ecx - int v15; // edx - _WORD *v16; // edx - _DWORD *v17; // esi - int v18; // ecx - int v19; // edx - int v20; // ebx - int v21; // edi - __int64 v22; // rax - int v23; // ebx - int v24; // ecx - _WORD *v26; // ebx - int v27; // edx - int v28; // ecx - const std::locale *v29; // [esp+4h] [ebp-A4h] - const std::locale *v30; // [esp+4h] [ebp-A4h] - void *Srca; // [esp+14h] [ebp-94h] - _WORD *Src; // [esp+14h] [ebp-94h] - _DWORD *v34; // [esp+50h] [ebp-58h] BYREF - _DWORD *v35; // [esp+54h] [ebp-54h] BYREF - _DWORD *v36; // [esp+58h] [ebp-50h] - int v37; // [esp+60h] [ebp-48h] - int v38; // [esp+64h] [ebp-44h] - int v39; // [esp+68h] [ebp-40h] - int v40; // [esp+6Ch] [ebp-3Ch] - __int64 v41; // [esp+70h] [ebp-38h] - int v42; // [esp+78h] [ebp-30h] - int v43; // [esp+7Ch] [ebp-2Ch] - __int64 v44; // [esp+80h] [ebp-28h] - int v45; // [esp+88h] [ebp-20h] - int v46; // [esp+8Ch] [ebp-1Ch] - - v37 = -1; - v38 = -1; - v36 = this; - v39 = -1; - v2 = *(_DWORD *)(a2 + 16); - v3 = *(_DWORD *)(a2 + 36); - v4 = *(_DWORD *)(a2 + 4); - v40 = -1; - v41 = -1LL; - v42 = -1; - v43 = -1; - v44 = -1LL; - v45 = -1; - v46 = -1; - if ( !v4 ) - { - if ( !v2 ) - goto LABEL_7; - goto LABEL_3; - } - v37 = (int)(v4 - v3) >> 1; - v38 = (int)(v4 - v3) >> 31; - Srca = *(void **)(a2 + 8); - v39 = ((int)Srca - v3) >> 1; - v40 = ((int)Srca - v3) >> 31; - v4 = *(_DWORD *)(a2 + 12); - v41 = (int)(v4 - v3) >> 1; - if ( v2 ) - { -LABEL_3: - v42 = (v2 - v3) >> 1; - v43 = (v2 - v3) >> 31; - v5 = *(_DWORD *)(a2 + 20); - LODWORD(v44) = (int)(v5 - v2) >> 1; - v6 = *(_DWORD *)(a2 + 24); - v44 = (int)v44; - v45 = (v6 - v3) >> 1; - v46 = (v6 - v3) >> 31; - if ( v4 < v5 ) - v4 = v5; - } - if ( v4 ) - *(_DWORD *)(a2 + 40) = (int)(v4 - v3) >> 1; -LABEL_7: - std::wstreambuf::operator=((volatile signed __int32 **)this, a2); - std::locale::locale((volatile signed __int32 **)&v34, (volatile signed __int32 **)(a2 + 28), v29); - std::locale::locale((volatile signed __int32 **)&v35, (volatile signed __int32 **)this + 7, v30); - (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v34); - std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v34); - std::locale::~locale(&v35); - std::locale::~locale(&v34); - this[8] = *(_DWORD *)(a2 + 32); - v7 = (_WORD *)this[9]; - v8 = *(_DWORD *)(a2 + 36); - Src = (_WORD *)(a2 + 44); - if ( v8 != a2 + 44 ) - { - v9 = *(_DWORD *)(a2 + 44); - v10 = *(_DWORD *)(a2 + 40); - if ( v7 == (_WORD *)(this + 11) ) - { - this[9] = v8; - this[10] = v10; - this[11] = v9; - } - else - { - v11 = this[11]; - this[9] = v8; - this[10] = v10; - this[11] = v9; - if ( v7 ) - { - *(_DWORD *)(a2 + 36) = v7; - *(_DWORD *)(a2 + 44) = v11; - goto LABEL_11; - } - } - v7 = (_WORD *)(a2 + 44); - *(_WORD *)(a2 + 44) = 0; - *(_DWORD *)(a2 + 36) = Src; - *(_DWORD *)(a2 + 40) = 0; - v14 = *(_DWORD *)(a2 + 32) & 0x10; - v16 = (_WORD *)(a2 + 58); - if ( (*(_DWORD *)(a2 + 32) & 8) != 0 ) - goto LABEL_14; - goto LABEL_26; - } - v26 = (_WORD *)(a2 + 44); - v27 = *(_DWORD *)(a2 + 40); - v28 = v27; - if ( v27 ) - { - if ( v27 == 1 ) - { - *v7 = *(_WORD *)(a2 + 44); - v28 = 1; - } - else - { - memcpy(v7, Src, 2 * v27); - v27 = *(_DWORD *)(a2 + 40); - v26 = *(_WORD **)(a2 + 36); - v7 = (_WORD *)this[9]; - v28 = v27; - } - } - this[10] = v27; - v7[v28] = 0; - v7 = v26; -LABEL_11: - *(_DWORD *)(a2 + 40) = 0; - v12 = *(_DWORD *)(a2 + 32); - *v7 = 0; - v13 = v12 & 8; - v14 = v12 & 0x10; - if ( v7 == Src ) - v15 = 7; - else - v15 = *(_DWORD *)(a2 + 44); - v16 = &v7[v15]; - if ( v13 ) - { -LABEL_14: - *(_DWORD *)(a2 + 4) = v7; - *(_DWORD *)(a2 + 8) = v7; - *(_DWORD *)(a2 + 12) = v7; - if ( v14 ) - { - *(_DWORD *)(a2 + 20) = v7; - *(_DWORD *)(a2 + 16) = v7; - *(_DWORD *)(a2 + 24) = v16; - } - goto LABEL_16; - } -LABEL_26: - if ( v14 ) - { - *(_DWORD *)(a2 + 20) = v7; - *(_DWORD *)(a2 + 16) = v7; - *(_DWORD *)(a2 + 24) = v16; - *(_DWORD *)(a2 + 4) = v7; - *(_DWORD *)(a2 + 8) = v7; - *(_DWORD *)(a2 + 12) = v7; - } -LABEL_16: - v17 = v36; - v18 = v36[9]; - if ( (v37 & v38) != -1 ) - { - v19 = v41; - v20 = v39; - v36[1] = v18 + 2 * v37; - v17[2] = v18 + 2 * v20; - v17[3] = v18 + 2 * v19; - } - if ( (v42 & v43) != -1 ) - { - v21 = v45; - v22 = v44; - v23 = v18 + 2 * v42; - v17[4] = v23; - v17[6] = v18 + 2 * v21; - if ( v22 > 0x7FFFFFFF ) - { - v24 = v23 - 2; - do - { - v23 = v24; - v22 -= 0x7FFFFFFFLL; - v24 -= 2; - } - while ( v22 > 0x7FFFFFFF ); - } - v17[5] = v23 + 2 * v22; - } - return this; -} -// 4E6858: variable 'v29' is possibly undefined -// 4E6877: variable 'v30' is possibly undefined - -//----- (004E6B80) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A650; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A358; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51A358: using guessed type int (*off_51A358)(); -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004E6CC0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - std::messages_byname::messages_byname(this, (int **)*a2, a3); -} - -//----- (004E6CD0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A650; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A358; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51A358: using guessed type int (*off_51A358)(); -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004E6E10) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - std::messages_byname::messages_byname(this, (int **)*a2, a3); -} - -//----- (004E6E20) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51A650; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4E6E5E: variable 'lpfctx' is possibly undefined -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004E6E80) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A650; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4E6EBE: variable 'lpfctx' is possibly undefined -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004E6EE0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A650; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4E6F1E: variable 'lpfctx' is possibly undefined -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004E6F40) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A66C; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A374; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51A374: using guessed type int (*off_51A374)(); -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004E7080) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - std::messages_byname::messages_byname(this, (int **)*a2, a3); -} - -//----- (004E7090) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A66C; - this[2] = std::locale::facet::_S_get_c_locale(); - *this = &off_51A374; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); - std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); - } - } -} -// 51A374: using guessed type int (*off_51A374)(); -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004E71D0) -------------------------------------------------------- -void __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) -{ - std::messages_byname::messages_byname(this, (int **)*a2, a3); -} - -//----- (004E71E0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51A66C; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4E721E: variable 'lpfctx' is possibly undefined -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004E7240) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A66C; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4E727E: variable 'lpfctx' is possibly undefined -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004E72A0) -------------------------------------------------------- -void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A66C; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4E72DE: variable 'lpfctx' is possibly undefined -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004E7300) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A688; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51A390; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A390: using guessed type int (*off_51A390)(); -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004E7440) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A688; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51A390; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A390: using guessed type int (*off_51A390)(); -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004E7590) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A688; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51A390; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A390: using guessed type int (*off_51A390)(); -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004E76D0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A688; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51A390; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A390: using guessed type int (*off_51A390)(); -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004E7820) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) -{ - *Block = &off_51A390; - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 51A390: using guessed type int (*off_51A390)(); - -//----- (004E7840) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_51A390; - std::numpunct::~numpunct(a1); -} -// 51A390: using guessed type int (*off_51A390)(); - -//----- (004E7850) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_51A390; - std::numpunct::~numpunct(a1); -} -// 51A390: using guessed type int (*off_51A390)(); - -//----- (004E7860) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A6AC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51A3B4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A3B4: using guessed type int (*off_51A3B4)(); -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004E79A0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A6AC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51A3B4; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A3B4: using guessed type int (*off_51A3B4)(); -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004E7AF0) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A6AC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51A3B4; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::numpunct::_M_initialize_numpunct(this, v4[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A3B4: using guessed type int (*off_51A3B4)(); -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004E7C30) -------------------------------------------------------- -void __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, struct _Unwind_Exception **a2, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A6AC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); - *this = &off_51A3B4; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::numpunct::_M_initialize_numpunct(this, v5[0]); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A3B4: using guessed type int (*off_51A3B4)(); -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004E7D80) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *Block) -{ - *Block = &off_51A3B4; - std::numpunct::~numpunct(Block); - operator delete(Block); -} -// 51A3B4: using guessed type int (*off_51A3B4)(); - -//----- (004E7DA0) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_51A3B4; - std::numpunct::~numpunct(a1); -} -// 51A3B4: using guessed type int (*off_51A3B4)(); - -//----- (004E7DB0) -------------------------------------------------------- -void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) -{ - *a1 = &off_51A3B4; - std::numpunct::~numpunct(a1); -} -// 51A3B4: using guessed type int (*off_51A3B4)(); - -//----- (004E7DC0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51A3D8; - result = a3 != 0; - this[1] = result; - return result; -} -// 51A3D8: using guessed type int (*off_51A3D8)(); - -//----- (004E7DE0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51A3D8; - result = a3 != 0; - this[1] = result; - return result; -} -// 51A3D8: using guessed type int (*off_51A3D8)(); - -//----- (004E7E00) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51A3D8; - result = a3 != 0; - this[1] = result; - return result; -} -// 51A3D8: using guessed type int (*off_51A3D8)(); - -//----- (004E7E20) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51A3D8; - result = a3 != 0; - this[1] = result; - return result; -} -// 51A3D8: using guessed type int (*off_51A3D8)(); - -//----- (004E7E40) -------------------------------------------------------- -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51A6D0; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4E7E4C: variable 'Blocka' is possibly undefined -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004E7E60) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A6D0; - std::locale::facet::~facet(a1); -} -// 4E7E60: variable 'v1' is possibly undefined -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004E7E70) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A6D0; - std::locale::facet::~facet(a1); -} -// 4E7E70: variable 'v1' is possibly undefined -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004E7E80) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51A404; - result = a3 != 0; - this[1] = result; - return result; -} -// 51A404: using guessed type int (*off_51A404)(); - -//----- (004E7EA0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51A404; - result = a3 != 0; - this[1] = result; - return result; -} -// 51A404: using guessed type int (*off_51A404)(); - -//----- (004E7EC0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51A404; - result = a3 != 0; - this[1] = result; - return result; -} -// 51A404: using guessed type int (*off_51A404)(); - -//----- (004E7EE0) -------------------------------------------------------- -BOOL __thiscall std::time_get_byname>::time_get_byname( - _DWORD *this, - int a2, - int a3) -{ - BOOL result; // eax - - *this = &off_51A404; - result = a3 != 0; - this[1] = result; - return result; -} -// 51A404: using guessed type int (*off_51A404)(); - -//----- (004E7F00) -------------------------------------------------------- -void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51A6FC; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4E7F0C: variable 'Blocka' is possibly undefined -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004E7F20) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A6FC; - std::locale::facet::~facet(a1); -} -// 4E7F20: variable 'v1' is possibly undefined -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004E7F30) -------------------------------------------------------- -void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A6FC; - std::locale::facet::~facet(a1); -} -// 4E7F30: variable 'v1' is possibly undefined -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004E7F40) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A1D0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A430; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A430: using guessed type int (*off_51A430)(); - -//----- (004E8090) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A1D0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A430; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A430: using guessed type int (*off_51A430)(); - -//----- (004E81F0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A1D0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A430; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A430: using guessed type int (*off_51A430)(); - -//----- (004E8340) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A1D0; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A430; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A1D0: using guessed type int (__cdecl *off_51A1D0)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A430: using guessed type int (*off_51A430)(); - -//----- (004E84A0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_51A430; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 51A430: using guessed type int (*off_51A430)(); - -//----- (004E84C0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51A430; - std::moneypunct::~moneypunct(a1); -} -// 51A430: using guessed type int (*off_51A430)(); - -//----- (004E84D0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51A430; - std::moneypunct::~moneypunct(a1); -} -// 51A430: using guessed type int (*off_51A430)(); - -//----- (004E84E0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A204; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A464; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A464: using guessed type int (*off_51A464)(); - -//----- (004E8630) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A204; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A464; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A464: using guessed type int (*off_51A464)(); - -//----- (004E8790) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A204; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A464; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A464: using guessed type int (*off_51A464)(); - -//----- (004E88E0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A204; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A464; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A204: using guessed type int (__cdecl *off_51A204)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A464: using guessed type int (*off_51A464)(); - -//----- (004E8A40) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_51A464; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 51A464: using guessed type int (*off_51A464)(); - -//----- (004E8A60) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51A464; - std::moneypunct::~moneypunct(a1); -} -// 51A464: using guessed type int (*off_51A464)(); - -//----- (004E8A70) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51A464; - std::moneypunct::~moneypunct(a1); -} -// 51A464: using guessed type int (*off_51A464)(); - -//----- (004E8A80) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A238; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A498; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A498: using guessed type int (*off_51A498)(); - -//----- (004E8BD0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A238; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A498; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A498: using guessed type int (*off_51A498)(); - -//----- (004E8D30) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A238; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A498; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A498: using guessed type int (*off_51A498)(); - -//----- (004E8E80) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A238; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A498; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A238: using guessed type int (__cdecl *off_51A238)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A498: using guessed type int (*off_51A498)(); - -//----- (004E8FE0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_51A498; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 51A498: using guessed type int (*off_51A498)(); - -//----- (004E9000) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51A498; - std::moneypunct::~moneypunct(a1); -} -// 51A498: using guessed type int (*off_51A498)(); - -//----- (004E9010) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51A498; - std::moneypunct::~moneypunct(a1); -} -// 51A498: using guessed type int (*off_51A498)(); - -//----- (004E9020) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A26C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A4CC; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A4CC: using guessed type int (*off_51A4CC)(); - -//----- (004E9170) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A26C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A4CC; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A4CC: using guessed type int (*off_51A4CC)(); - -//----- (004E92D0) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) -{ - int v4[3]; // [esp+5Ch] [ebp-Ch] BYREF - - this[1] = a3 != 0; - *this = &off_51A26C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A4CC; - if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) - { - if ( strcmp((const char *)a2, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v4, a2); - std::moneypunct::_M_initialize_moneypunct(this, v4[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v4); - } - } -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A4CC: using guessed type int (*off_51A4CC)(); - -//----- (004E9420) -------------------------------------------------------- -void __thiscall std::moneypunct_byname::moneypunct_byname( - _DWORD *this, - struct _Unwind_Exception **a2, - int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - int v5[3]; // [esp+5Ch] [ebp-Ch] BYREF - - lpuexcpt = *a2; - this[1] = a3 != 0; - *this = &off_51A26C; - this[2] = 0; - std::moneypunct::_M_initialize_moneypunct(this, 0, 0); - *this = &off_51A4CC; - if ( *(_BYTE *)lpuexcpt != 67 || *((_BYTE *)lpuexcpt + 1) ) - { - if ( strcmp((const char *)lpuexcpt, "POSIX") ) - { - std::locale::facet::_S_create_c_locale((std::locale::facet *)v5, (int **)lpuexcpt); - std::moneypunct::_M_initialize_moneypunct(this, v5[0], 0); - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v5); - } - } -} -// 51A26C: using guessed type int (__cdecl *off_51A26C)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); -// 51A4CC: using guessed type int (*off_51A4CC)(); - -//----- (004E9580) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *Block) -{ - *Block = &off_51A4CC; - std::moneypunct::~moneypunct(Block); - operator delete(Block); -} -// 51A4CC: using guessed type int (*off_51A4CC)(); - -//----- (004E95A0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51A4CC; - std::moneypunct::~moneypunct(a1); -} -// 51A4CC: using guessed type int (*off_51A4CC)(); - -//----- (004E95B0) -------------------------------------------------------- -void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) -{ - *a1 = &off_51A4CC; - std::moneypunct::~moneypunct(a1); -} -// 51A4CC: using guessed type int (*off_51A4CC)(); - -//----- (004E95C0) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 12); - std::string::_M_replace((unsigned int **)(this + 48), 0, *(_DWORD *)(this + 52), *(char **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 44) & 3) != 0 ) - v4 = *(_DWORD *)(this + 52); - return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); -} - -//----- (004E9630) -------------------------------------------------------- -void __thiscall std::basic_stringstream,std::allocator>::swap( - volatile signed __int32 **this, - _DWORD *a2) -{ - std::ios_base **v3; // edi - std::ios_base *v4; // esi - std::ios_base *v5; // edx - char v6; // cl - char v7; // cl - volatile signed __int32 *v8; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *((_DWORD *)*this - 3)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = (volatile signed __int32 *)a2[1]; - a2[1] = v8; - std::stringbuf::swap(this + 3, a2 + 3); -} -// 4E9670: variable 'v9' is possibly undefined - -//----- (004E9700) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // ecx - int v5; // eax - std::ios_base *v6; // [esp+0h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+10h] [ebp-48h] - _DWORD *v8; // [esp+14h] [ebp-44h] - - v8 = this + 18; - std::ios_base::ios_base(this + 18); - *((_WORD *)this + 94) = 0; - v2 = a2[1]; - *this = &unk_515784; - this[1] = v2; - this[46] = 0; - v3 = *a2; - this[48] = 0; - this[49] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[18] = &unk_515798; - this[50] = 0; - this[51] = 0; - lpuexcpt = v4; - std::ios_base::_M_move((int)v8, v4, v6); - std::ios::_M_cache_locale(v8, (int)(this + 45)); - this[48] = 0; - v5 = *((_DWORD *)lpuexcpt + 28); - *((_DWORD *)lpuexcpt + 28) = 0; - this[46] = v5; - *((_WORD *)this + 94) = *((_WORD *)lpuexcpt + 58); - a2[1] = 0; - *this = &off_51A504; - this[18] = off_51A52C; - this[2] = off_51A518; - std::stringbuf::basic_stringbuf(this + 3, (std::locale *)(a2 + 3)); - this[48] = this + 3; -} -// 4E9892: positive sp value 4 has been found -// 4E97A5: variable 'v6' is possibly undefined -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); - -//----- (004E98A0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int a2, - int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - _DWORD *v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v7 = this + 18; - std::ios_base::ios_base(this + 18); - this[46] = 0; - *((_WORD *)this + 94) = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - *this = &unk_515784; - this[18] = &unk_515798; - this[1] = 0; - std::ios::init((int)v7, 0); - this[2] = &unk_5157AC; - this[18] = &unk_5157C0; - std::ios::init((int)v7, 0); - *this = &off_51A504; - this[18] = off_51A52C; - this[2] = off_51A518; - this[3] = &off_51ADD4; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - v6 = this + 3; - std::locale::locale(this + 10); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - this[3] = &off_51A2D8; - this[11] = 0; - this[12] = this + 14; - std::string::_M_construct(this + 12, v4, (int)&v4[v3]); - this[11] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[13]; - std::stringbuf::_M_sync(v6, (_DWORD *)this[12], 0, v5); - std::ios::init((int)v7, (int)v6); -} -// 4E9ABE: positive sp value 4 has been found -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E9B00) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int a2) -{ - _DWORD *v2; // [esp+24h] [ebp-44h] - - v2 = this + 18; - std::ios_base::ios_base(this + 18); - this[46] = 0; - *((_WORD *)this + 94) = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - *this = &unk_515784; - this[18] = &unk_515798; - this[1] = 0; - std::ios::init((int)v2, 0); - this[2] = &unk_5157AC; - this[18] = &unk_5157C0; - std::ios::init((int)v2, 0); - *this = &off_51A504; - this[18] = off_51A52C; - this[2] = off_51A518; - this[3] = &off_51ADD4; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[11] = a2; - this[3] = &off_51A2D8; - this[12] = this + 14; - this[13] = 0; - *((_BYTE *)this + 56) = 0; - std::ios::init((int)v2, (int)(this + 3)); -} -// 4E9CBD: positive sp value 4 has been found -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E9CE0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 72; - std::ios_base::ios_base((_DWORD *)(a1 + 72)); - *(_DWORD *)(a1 + 184) = 0; - *(_WORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)(a1 + 200) = 0; - *(_DWORD *)(a1 + 204) = 0; - *(_DWORD *)a1 = &unk_515784; - *(_DWORD *)(a1 + 72) = &unk_515798; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_5157AC; - *(_DWORD *)(a1 + 72) = &unk_5157C0; - std::ios::init(v1, 0); - *(_DWORD *)a1 = &off_51A504; - *(_DWORD *)(a1 + 72) = off_51A52C; - *(_DWORD *)(a1 + 8) = off_51A518; - *(_DWORD *)(a1 + 12) = &off_51ADD4; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::locale::locale((_DWORD *)(a1 + 40)); - *(_DWORD *)(a1 + 12) = &off_51A2D8; - *(_DWORD *)(a1 + 44) = 24; - *(_DWORD *)(a1 + 48) = a1 + 56; - *(_DWORD *)(a1 + 52) = 0; - *(_BYTE *)(a1 + 56) = 0; - std::ios::init(v1, a1 + 12); -} -// 4E9E9C: positive sp value 4 has been found -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004E9EC0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // edx - std::ios_base *v14; // [esp+0h] [ebp-58h] - std::ios_base *v15; // [esp+10h] [ebp-48h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-44h] - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v15, v14); - std::ios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v15 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v15 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v15 + 58); - v8 = a2[5]; - a3[1] = 0; - v9 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = *a2; - v13 = a2[8]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; - this[2] = a2[9]; - std::stringbuf::basic_stringbuf(this + 3, (std::locale *)(a3 + 3)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 3); -} -// 4EA00E: positive sp value 4 has been found -// 4E9F26: variable 'v14' is possibly undefined - -//----- (004EA030) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - int a3, - int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - int v14; // eax - int v15; // eax - _BYTE *v16; // edx - unsigned int v17; // eax - int *v18; // [esp+24h] [ebp-44h] - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::ios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - v14 = a2[9]; - this[3] = (int)&off_51ADD4; - this[2] = v14; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - v18 = this + 3; - std::locale::locale(this + 10); - v15 = *(_DWORD *)(a3 + 4); - v16 = *(_BYTE **)a3; - this[3] = (int)&off_51A2D8; - this[11] = 0; - this[12] = (int)(this + 14); - std::string::_M_construct(this + 12, v16, (int)&v16[v15]); - this[11] = a4; - v17 = 0; - if ( (a4 & 3) != 0 ) - v17 = this[13]; - std::stringbuf::_M_sync(v18, (_DWORD *)this[12], 0, v17); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)v18); -} -// 4EA217: positive sp value 4 has been found -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EA280) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - _DWORD *v8; // ecx - int v9; // eax - int v10; // edx - int v11; // edx - int v12; // eax - int v13; // eax - int v14; // eax - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); - v7 = a2[4]; - this[2] = v7; - v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); - *v8 = a2[5]; - std::ios::init((int)v8, 0); - v9 = a2[1]; - v10 = a2[6]; - *this = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; - this[2] = a2[7]; - v11 = a2[8]; - v12 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v11; - v13 = a2[9]; - this[3] = (int)&off_51ADD4; - this[4] = 0; - this[2] = v13; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[11] = a3; - this[12] = (int)(this + 14); - v14 = *this; - this[3] = (int)&off_51A2D8; - this[13] = 0; - *((_BYTE *)this + 56) = 0; - std::ios::init((int)this + *(_DWORD *)(v14 - 12), (int)(this + 3)); -} -// 4EA40A: positive sp value 4 has been found -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EA460) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - int v12; // eax - int v13; // eax - - v3 = a2[2]; - v4 = a2[3]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[4]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[5]; - std::ios::init((int)v7, 0); - v8 = a2[1]; - v9 = a2[6]; - *this = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[7]; - v10 = a2[8]; - v11 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; - v12 = a2[9]; - this[3] = (int)&off_51ADD4; - this[4] = 0; - this[2] = v12; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[3] = (int)&off_51A2D8; - this[12] = (int)(this + 14); - v13 = *this; - this[11] = 24; - this[13] = 0; - *((_BYTE *)this + 56) = 0; - std::ios::init((int)this + *(_DWORD *)(v13 - 12), (int)(this + 3)); -} -// 4EA5EB: positive sp value 4 has been found -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EA640) -------------------------------------------------------- -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[12]; - *Block = &off_51A504; - Block[18] = off_51A52C; - Block[2] = off_51A518; - Block[3] = &off_51A2D8; - if ( v2 != Block + 14 ) - operator delete(v2); - Block[3] = &off_51ADD4; - std::locale::~locale((_DWORD **)Block + 10); - Block[2] = &unk_5157AC; - *Block = &unk_515784; - Block[1] = 0; - Block[18] = &off_51B7D0; - std::ios_base::~ios_base((int)(Block + 18)); - operator delete(Block); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004EA6C0) -------------------------------------------------------- -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 48); - *(_DWORD *)a1 = &off_51A504; - *(_DWORD *)(a1 + 72) = off_51A52C; - *(_DWORD *)(a1 + 8) = off_51A518; - *(_DWORD *)(a1 + 12) = &off_51A2D8; - if ( Block != (void *)(a1 + 56) ) - operator delete(Block); - *(_DWORD *)(a1 + 12) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 40)); - *(_DWORD *)(a1 + 8) = &unk_5157AC; - *(_DWORD *)a1 = &unk_515784; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 72) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 72); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004EA730) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( - char *this, - int *a2) -{ - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - int result; // eax - - v3 = *a2; - *(_DWORD *)this = *a2; - *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; - v4 = a2[9]; - *((_DWORD *)this + 3) = &off_51A2D8; - *((_DWORD *)this + 2) = v4; - if ( *((char **)this + 12) != this + 56 ) - operator delete(*((void **)this + 12)); - *((_DWORD *)this + 3) = &off_51ADD4; - std::locale::~locale((_DWORD **)this + 10); - v5 = a2[1]; - *(_DWORD *)this = v5; - *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; - *((_DWORD *)this + 2) = a2[7]; - v6 = a2[4]; - *((_DWORD *)this + 2) = v6; - *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; - v7 = a2[2]; - *(_DWORD *)this = v7; - result = *(_DWORD *)(v7 - 12); - *(_DWORD *)&this[result] = a2[3]; - *((_DWORD *)this + 1) = 0; - return result; -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EA7C0) -------------------------------------------------------- -_DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=( - _DWORD *this, - _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - char v6; // cl - char v7; // cl - int v8; // eax - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::stringbuf::operator=(this + 3, (int)(a2 + 3)); - return this; -} -// 4EA800: variable 'v10' is possibly undefined - -//----- (004EA8A0) -------------------------------------------------------- -_DWORD *__thiscall std::basic_stringstream,std::allocator>::str( - int this, - int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 12); - std::wstring::_M_replace((unsigned int **)(this + 48), 0, *(_DWORD *)(this + 52), *(char **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 44) & 3) != 0 ) - v4 = *(_DWORD *)(this + 52); - return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); -} - -//----- (004EA910) -------------------------------------------------------- -void __thiscall std::basic_stringstream,std::allocator>::swap( - volatile signed __int32 **this, - _DWORD *a2) -{ - std::ios_base **v3; // edi - std::ios_base *v4; // esi - std::ios_base *v5; // edx - __int16 v6; // cx - volatile signed __int32 *v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *((_DWORD *)*this - 3)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = (volatile signed __int32 *)a2[1]; - a2[1] = v7; - std::wstringbuf::swap(this + 3, a2 + 3); -} -// 4EA950: variable 'v8' is possibly undefined - -//----- (004EA9F0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - _DWORD *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // edx - int v5; // eax - int v6; // edx - unsigned int v7; // eax - int v8; // ecx - int v9; // eax - _DWORD *v10; // esi - _DWORD *v11; // eax - int v12; // ecx - int v13; // ebx - char *v14; // ecx - int v15; // edx - std::ios_base *v16; // [esp+0h] [ebp-B8h] - const std::locale *v17; // [esp+0h] [ebp-B8h] - struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v20; // [esp+24h] [ebp-94h] - int v22; // [esp+70h] [ebp-48h] - int v23; // [esp+74h] [ebp-44h] - int v24; // [esp+78h] [ebp-40h] - __int64 v25; // [esp+80h] [ebp-38h] - int v26; // [esp+88h] [ebp-30h] - int v27; // [esp+8Ch] [ebp-2Ch] - int v28; // [esp+90h] [ebp-28h] - int v29; // [esp+98h] [ebp-20h] - - v20 = this + 18; - std::ios_base::ios_base(this + 18); - v2 = a2[1]; - this[46] = 0; - this[1] = v2; - *((_WORD *)this + 94) = 0; - v3 = *a2; - *this = &unk_5157D4; - *((_BYTE *)this + 190) = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - this[18] = &unk_5157E8; - lpuexcpta = v4; - std::ios_base::_M_move((int)v20, v4, v16); - std::wios::_M_cache_locale(v20, (int)(this + 45)); - v22 = -1; - v23 = -1; - v5 = *((_DWORD *)lpuexcpta + 28); - *((_DWORD *)lpuexcpta + 28) = 0; - this[48] = 0; - this[46] = v5; - v24 = -1; - *((_WORD *)this + 94) = *((_WORD *)lpuexcpta + 58); - v6 = a2[12]; - *((_BYTE *)this + 190) = *((_BYTE *)lpuexcpta + 118); - LODWORD(v25) = -1; - a2[1] = 0; - lpuexcpt = (struct _Unwind_Exception *)(this + 3); - v7 = a2[4]; - *this = &off_51A540; - this[18] = off_51A568; - this[2] = off_51A554; - v26 = -1; - v27 = -1; - v28 = -1; - v29 = -1; - if ( !v7 ) - { - v8 = a2[7]; - if ( !v8 ) - goto LABEL_7; - goto LABEL_3; - } - v22 = (int)(v7 - v6) >> 1; - v23 = (int)(v7 - v6) >> 31; - v24 = (a2[5] - v6) >> 1; - v7 = a2[6]; - v25 = (int)(v7 - v6) >> 1; - v8 = a2[7]; - if ( v8 ) - { -LABEL_3: - v26 = (v8 - v6) >> 1; - v27 = (v8 - v6) >> 31; - v28 = (a2[8] - v8) >> 1; - v29 = (a2[9] - v6) >> 1; - if ( v7 < a2[8] ) - v7 = a2[8]; - } - if ( v7 ) - a2[13] = (int)(v7 - v6) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 3), v17); - v9 = a2[11]; - this[3] = &off_51A318; - this[12] = this + 14; - v10 = a2 + 14; - this[11] = v9; - v11 = (_DWORD *)a2[12]; - if ( v11 == a2 + 14 ) - { - this[14] = a2[14]; - this[15] = a2[15]; - this[16] = a2[16]; - this[17] = a2[17]; - } - else - { - this[12] = v11; - this[14] = a2[14]; - } - this[13] = a2[13]; - a2[12] = v10; - *((_WORD *)a2 + 28) = 0; - v12 = this[12]; - a2[13] = 0; - if ( (v22 & v23) != -1 ) - { - this[4] = v12 + 2 * v22; - this[5] = v12 + 2 * v24; - this[6] = v12 + 2 * v25; - } - if ( (v26 & v27) != -1 ) - { - v13 = v12 + 2 * v26; - this[9] = v12 + 2 * v29; - this[7] = v13; - this[8] = v13 + 2 * v28; - } - v14 = (char *)a2 + 70; - v15 = a2[11] & 0x10; - if ( (a2[11] & 8) != 0 ) - { - a2[4] = v10; - a2[5] = v10; - a2[6] = v10; - if ( v15 ) - { - a2[8] = v10; - a2[7] = v10; - a2[9] = v14; - } - } - else if ( v15 ) - { - a2[8] = v10; - a2[7] = v10; - a2[9] = v14; - a2[4] = v10; - a2[5] = v10; - a2[6] = v10; - } - this[48] = lpuexcpt; -} -// 4EAE75: positive sp value 4 has been found -// 4EAD34: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4EAAB9: variable 'v16' is possibly undefined -// 4EAC5F: variable 'v17' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); - -//----- (004EAE80) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int a2, - int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - _DWORD *v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v7 = this + 18; - std::ios_base::ios_base(this + 18); - this[46] = 0; - *((_WORD *)this + 94) = 0; - *((_BYTE *)this + 190) = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - *this = &unk_5157D4; - this[18] = &unk_5157E8; - this[1] = 0; - std::wios::init((int)v7, 0); - this[2] = &unk_515838; - this[18] = &unk_51584C; - std::wios::init((int)v7, 0); - *this = &off_51A540; - this[18] = off_51A568; - this[2] = off_51A554; - this[3] = &off_51AE14; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - v6 = this + 3; - std::locale::locale(this + 10); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - this[3] = &off_51A318; - this[11] = 0; - this[12] = this + 14; - std::wstring::_M_construct(this + 12, v4, (int)&v4[v3]); - this[11] = a3; - v5 = 0; - if ( (a3 & 3) != 0 ) - v5 = this[13]; - std::wstringbuf::_M_sync(v6, (_DWORD *)this[12], 0, v5); - std::wios::init((int)v7, (int)v6); -} -// 4EB0A3: positive sp value 4 has been found -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EB0E0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - _DWORD *this, - int a2) -{ - _DWORD *v2; // [esp+24h] [ebp-44h] - - v2 = this + 18; - std::ios_base::ios_base(this + 18); - this[46] = 0; - *((_WORD *)this + 94) = 0; - *((_BYTE *)this + 190) = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[51] = 0; - *this = &unk_5157D4; - this[18] = &unk_5157E8; - this[1] = 0; - std::wios::init((int)v2, 0); - this[2] = &unk_515838; - this[18] = &unk_51584C; - std::wios::init((int)v2, 0); - *this = &off_51A540; - this[18] = off_51A568; - this[2] = off_51A554; - this[3] = &off_51AE14; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[11] = a2; - *((_WORD *)this + 28) = 0; - this[3] = &off_51A318; - this[12] = this + 14; - this[13] = 0; - std::wios::init((int)v2, (int)(this + 3)); -} -// 4EB2A6: positive sp value 4 has been found -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EB2D0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __fastcall std::basic_stringstream,std::allocator>::basic_stringstream( - int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 72; - std::ios_base::ios_base((_DWORD *)(a1 + 72)); - *(_DWORD *)(a1 + 184) = 0; - *(_WORD *)(a1 + 188) = 0; - *(_BYTE *)(a1 + 190) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)(a1 + 200) = 0; - *(_DWORD *)(a1 + 204) = 0; - *(_DWORD *)a1 = &unk_5157D4; - *(_DWORD *)(a1 + 72) = &unk_5157E8; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)(a1 + 8) = &unk_515838; - *(_DWORD *)(a1 + 72) = &unk_51584C; - std::wios::init(v1, 0); - *(_DWORD *)a1 = &off_51A540; - *(_DWORD *)(a1 + 72) = off_51A568; - *(_DWORD *)(a1 + 8) = off_51A554; - *(_DWORD *)(a1 + 12) = &off_51AE14; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - *(_DWORD *)(a1 + 36) = 0; - std::locale::locale((_DWORD *)(a1 + 40)); - *(_WORD *)(a1 + 56) = 0; - *(_DWORD *)(a1 + 12) = &off_51A318; - *(_DWORD *)(a1 + 44) = 24; - *(_DWORD *)(a1 + 48) = a1 + 56; - *(_DWORD *)(a1 + 52) = 0; - std::wios::init(v1, a1 + 12); -} -// 4EB495: positive sp value 4 has been found -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EB4C0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // eax - int v11; // edx - int v12; // eax - int v13; // edx - int v14; // edx - unsigned int v15; // eax - int v16; // ecx - int v17; // eax - _DWORD *v18; // esi - _DWORD *v19; // eax - int v20; // ecx - int v21; // ebx - char *v22; // ecx - int v23; // edx - std::ios_base *v24; // [esp+0h] [ebp-A8h] - const std::locale *v25; // [esp+0h] [ebp-A8h] - std::ios_base *v26; // [esp+10h] [ebp-98h] - int *v27; // [esp+10h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] - int v30; // [esp+60h] [ebp-48h] - int v31; // [esp+64h] [ebp-44h] - int v32; // [esp+68h] [ebp-40h] - __int64 v33; // [esp+70h] [ebp-38h] - int v34; // [esp+78h] [ebp-30h] - int v35; // [esp+7Ch] [ebp-2Ch] - int v36; // [esp+80h] [ebp-28h] - int v37; // [esp+88h] [ebp-20h] - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v26 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v26, v24); - std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v26 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v26 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v26 + 58); - *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v26 + 118); - a3[1] = 0; - v8 = a2[5]; - v9 = a2[4]; - this[2] = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v8; - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = *a2; - v13 = a2[8]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; - v30 = -1; - this[2] = a2[9]; - v27 = this + 3; - v31 = -1; - v14 = a3[12]; - v15 = a3[4]; - v32 = -1; - LODWORD(v33) = -1; - v34 = -1; - v35 = -1; - v36 = -1; - v37 = -1; - if ( !v15 ) - { - v16 = a3[7]; - if ( !v16 ) - goto LABEL_7; - goto LABEL_3; - } - v30 = (int)(v15 - v14) >> 1; - v31 = (int)(v15 - v14) >> 31; - v32 = (a3[5] - v14) >> 1; - v15 = a3[6]; - v33 = (int)(v15 - v14) >> 1; - v16 = a3[7]; - if ( v16 ) - { -LABEL_3: - v34 = (v16 - v14) >> 1; - v35 = (v16 - v14) >> 31; - v36 = (a3[8] - v16) >> 1; - v37 = (a3[9] - v14) >> 1; - if ( v15 < a3[8] ) - v15 = a3[8]; - } - if ( v15 ) - a3[13] = (int)(v15 - v14) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(v27, (std::locale *)(a3 + 3), v25); - v17 = a3[11]; - this[3] = (int)&off_51A318; - this[12] = (int)(this + 14); - v18 = a3 + 14; - this[11] = v17; - v19 = (_DWORD *)a3[12]; - if ( v19 == a3 + 14 ) - { - this[14] = a3[14]; - this[15] = a3[15]; - this[16] = a3[16]; - this[17] = a3[17]; - } - else - { - this[12] = (int)v19; - this[14] = a3[14]; - } - this[13] = a3[13]; - a3[12] = v18; - *((_WORD *)a3 + 28) = 0; - v20 = this[12]; - a3[13] = 0; - if ( (v30 & v31) != -1 ) - { - this[4] = v20 + 2 * v30; - this[5] = v20 + 2 * v32; - this[6] = v20 + 2 * v33; - } - if ( (v34 & v35) != -1 ) - { - v21 = v20 + 2 * v34; - this[9] = v20 + 2 * v37; - this[7] = v21; - this[8] = v21 + 2 * v36; - } - v22 = (char *)a3 + 70; - v23 = a3[11] & 0x10; - if ( (a3[11] & 8) != 0 ) - { - a3[4] = v18; - a3[5] = v18; - a3[6] = v18; - if ( v23 ) - { - a3[8] = v18; - a3[7] = v18; - a3[9] = v22; - } - } - else if ( v23 ) - { - a3[8] = v18; - a3[7] = v18; - a3[9] = v22; - a3[4] = v18; - a3[5] = v18; - a3[6] = v18; - } - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v27; -} -// 4EB8E8: positive sp value 4 has been found -// 4EB7D5: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4EB53B: variable 'v24' is possibly undefined -// 4EB700: variable 'v25' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); - -//----- (004EB910) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - int a3, - int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - _DWORD *v9; // ecx - int v10; // eax - int v11; // edx - int v12; // edx - int v13; // eax - int v14; // eax - int v15; // edx - _WORD *v16; // eax - unsigned int v17; // eax - int *v18; // [esp+24h] [ebp-44h] - - v5 = a2[2]; - v6 = a2[3]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = a2[4]; - this[2] = v8; - v9 = (int *)((char *)this + *(_DWORD *)(v8 - 12) + 8); - *v9 = a2[5]; - std::wios::init((int)v9, 0); - v10 = a2[1]; - v11 = a2[6]; - *this = v10; - *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; - this[2] = a2[7]; - v12 = a2[8]; - v13 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v13 - 12)) = v12; - v14 = a2[9]; - this[3] = (int)&off_51AE14; - this[2] = v14; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - v18 = this + 3; - std::locale::locale(this + 10); - v15 = *(_DWORD *)(a3 + 4); - v16 = *(_WORD **)a3; - this[3] = (int)&off_51A318; - this[11] = 0; - this[12] = (int)(this + 14); - std::wstring::_M_construct(this + 12, v16, (int)&v16[v15]); - this[11] = a4; - v17 = 0; - if ( (a4 & 3) != 0 ) - v17 = this[13]; - std::wstringbuf::_M_sync(v18, (_DWORD *)this[12], 0, v17); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)v18); -} -// 4EBAF3: positive sp value 4 has been found -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EBB60) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2, - int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - _DWORD *v8; // ecx - int v9; // eax - int v10; // edx - int v11; // edx - int v12; // eax - int v13; // eax - int v14; // eax - - v4 = a2[2]; - v5 = a2[3]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); - v7 = a2[4]; - this[2] = v7; - v8 = (int *)((char *)this + *(_DWORD *)(v7 - 12) + 8); - *v8 = a2[5]; - std::wios::init((int)v8, 0); - v9 = a2[1]; - v10 = a2[6]; - *this = v9; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; - this[2] = a2[7]; - v11 = a2[8]; - v12 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v11; - v13 = a2[9]; - this[3] = (int)&off_51AE14; - this[4] = 0; - this[2] = v13; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - this[11] = a3; - this[12] = (int)(this + 14); - v14 = *this; - *((_WORD *)this + 28) = 0; - this[3] = (int)&off_51A318; - this[13] = 0; - std::wios::init((int)this + *(_DWORD *)(v14 - 12), (int)(this + 3)); -} -// 4EBCEC: positive sp value 4 has been found -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EBD40) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -void __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( - int *this, - int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - _DWORD *v7; // ecx - int v8; // eax - int v9; // edx - int v10; // edx - int v11; // eax - int v12; // eax - int v13; // eax - - v3 = a2[2]; - v4 = a2[3]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = a2[4]; - this[2] = v6; - v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); - *v7 = a2[5]; - std::wios::init((int)v7, 0); - v8 = a2[1]; - v9 = a2[6]; - *this = v8; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - this[2] = a2[7]; - v10 = a2[8]; - v11 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v10; - v12 = a2[9]; - this[3] = (int)&off_51AE14; - this[4] = 0; - this[2] = v12; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - this[9] = 0; - std::locale::locale(this + 10); - *((_WORD *)this + 28) = 0; - this[12] = (int)(this + 14); - v13 = *this; - this[3] = (int)&off_51A318; - this[11] = 24; - this[13] = 0; - std::wios::init((int)this + *(_DWORD *)(v13 - 12), (int)(this + 3)); -} -// 4EBECD: positive sp value 4 has been found -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EBF20) -------------------------------------------------------- -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[12]; - *Block = &off_51A540; - Block[18] = off_51A568; - Block[2] = off_51A554; - Block[3] = &off_51A318; - if ( v2 != Block + 14 ) - operator delete(v2); - Block[3] = &off_51AE14; - std::locale::~locale((_DWORD **)Block + 10); - Block[2] = &unk_515838; - *Block = &unk_5157D4; - Block[1] = 0; - Block[18] = &off_51B7E0; - std::ios_base::~ios_base((int)(Block + 18)); - operator delete(Block); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004EBFA0) -------------------------------------------------------- -void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 48); - *(_DWORD *)a1 = &off_51A540; - *(_DWORD *)(a1 + 72) = off_51A568; - *(_DWORD *)(a1 + 8) = off_51A554; - *(_DWORD *)(a1 + 12) = &off_51A318; - if ( Block != (void *)(a1 + 56) ) - operator delete(Block); - *(_DWORD *)(a1 + 12) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 40)); - *(_DWORD *)(a1 + 8) = &unk_515838; - *(_DWORD *)a1 = &unk_5157D4; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 72) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 72); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004EC010) -------------------------------------------------------- -int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( - char *this, - int *a2) -{ - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // eax - int result; // eax - - v3 = *a2; - *(_DWORD *)this = *a2; - *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; - v4 = a2[9]; - *((_DWORD *)this + 3) = &off_51A318; - *((_DWORD *)this + 2) = v4; - if ( *((char **)this + 12) != this + 56 ) - operator delete(*((void **)this + 12)); - *((_DWORD *)this + 3) = &off_51AE14; - std::locale::~locale((_DWORD **)this + 10); - v5 = a2[1]; - *(_DWORD *)this = v5; - *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; - *((_DWORD *)this + 2) = a2[7]; - v6 = a2[4]; - *((_DWORD *)this + 2) = v6; - *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; - v7 = a2[2]; - *(_DWORD *)this = v7; - result = *(_DWORD *)(v7 - 12); - *(_DWORD *)&this[result] = a2[3]; - *((_DWORD *)this + 1) = 0; - return result; -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EC0A0) -------------------------------------------------------- -_DWORD *__thiscall std::basic_stringstream,std::allocator>::operator=( - _DWORD *this, - _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - __int16 v6; // cx - int v7; // eax - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wstringbuf::operator=(this + 3, (int)(a2 + 3)); - return this; -} -// 4EC0E0: variable 'v9' is possibly undefined - -//----- (004EC180) -------------------------------------------------------- -int __thiscall std::istringstream::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 8); - std::string::_M_replace((unsigned int **)(this + 44), 0, *(_DWORD *)(this + 48), *(char **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 40) & 3) != 0 ) - v4 = *(_DWORD *)(this + 48); - return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); -} - -//----- (004EC1F0) -------------------------------------------------------- -void __thiscall std::istringstream::swap(volatile signed __int32 **this, _DWORD *a2) -{ - std::ios_base **v3; // edi - std::ios_base *v4; // esi - std::ios_base *v5; // edx - char v6; // cl - char v7; // cl - volatile signed __int32 *v8; // edx - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *((_DWORD *)*this - 3)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = (volatile signed __int32 *)a2[1]; - a2[1] = v8; - std::stringbuf::swap(this + 2, a2 + 2); -} -// 4EC230: variable 'v9' is possibly undefined - -//----- (004EC2C0) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // esi - int v5; // eax - int v6; // edx - unsigned int v7; // eax - int v8; // ecx - int v9; // eax - _DWORD *v10; // eax - int v11; // ebx - int v12; // ecx - int v13; // ebx - _DWORD *v14; // eax - int v15; // edx - int v16; // ecx - char *v17; // ecx - std::ios_base *v18; // [esp+4h] [ebp-B4h] - const std::locale *v19; // [esp+4h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v21; // [esp+24h] [ebp-94h] - _DWORD *v22; // [esp+24h] [ebp-94h] - __int64 v24; // [esp+70h] [ebp-48h] - int v25; // [esp+78h] [ebp-40h] - __int64 v26; // [esp+80h] [ebp-38h] - __int64 v27; // [esp+88h] [ebp-30h] - int v28; // [esp+90h] [ebp-28h] - int v29; // [esp+98h] [ebp-20h] - - v21 = this + 17; - std::ios_base::ios_base(this + 17); - *((_WORD *)this + 92) = 0; - v2 = a2[1]; - this[45] = 0; - this[1] = v2; - this[47] = 0; - v3 = *a2; - *this = &unk_515860; - this[48] = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[17] = &unk_515874; - this[49] = 0; - this[50] = 0; - std::ios_base::_M_move((int)v21, v4, v18); - std::ios::_M_cache_locale(v21, (int)(this + 44)); - v24 = -1LL; - v5 = *((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = 0; - this[47] = 0; - this[45] = v5; - v25 = -1; - *((_WORD *)this + 92) = *((_WORD *)v4 + 58); - a2[1] = 0; - lpuexcpt = (struct _Unwind_Exception *)(this + 2); - v6 = a2[11]; - v7 = a2[3]; - *this = &off_51A57C; - this[17] = off_51A590; - LODWORD(v26) = -1; - v27 = -1LL; - v28 = -1; - v29 = -1; - if ( !v7 ) - { - v8 = a2[6]; - if ( !v8 ) - goto LABEL_7; - goto LABEL_3; - } - v24 = (int)(v7 - v6); - v25 = a2[4] - v6; - v7 = a2[5]; - v26 = (int)(v7 - v6); - v8 = a2[6]; - if ( v8 ) - { -LABEL_3: - v27 = v8 - v6; - v28 = a2[7] - v8; - v29 = a2[8] - v6; - if ( v7 < a2[7] ) - v7 = a2[7]; - } - if ( v7 ) - a2[12] = v7 - v6; -LABEL_7: - std::streambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 2), v19); - v9 = a2[10]; - this[2] = &off_51A2D8; - this[11] = this + 13; - this[10] = v9; - v22 = a2 + 13; - v10 = (_DWORD *)a2[11]; - if ( v10 == a2 + 13 ) - { - this[13] = a2[13]; - this[14] = a2[14]; - this[15] = a2[15]; - this[16] = a2[16]; - } - else - { - this[11] = v10; - this[13] = a2[13]; - } - this[12] = a2[12]; - *((_BYTE *)a2 + 52) = 0; - a2[11] = v22; - a2[12] = 0; - v11 = this[11]; - if ( ((unsigned int)v24 & HIDWORD(v24)) != -1 ) - { - this[3] = v11 + v24; - this[4] = v11 + v25; - this[5] = v11 + v26; - } - if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) - { - v12 = v11 + v29; - v13 = v27 + v11; - this[8] = v12; - this[6] = v13; - this[7] = v13 + v28; - } - v14 = (_DWORD *)a2[11]; - v15 = a2[10] & 0x10; - if ( v14 == v22 ) - v16 = 15; - else - v16 = a2[13]; - v17 = (char *)v14 + v16; - if ( (a2[10] & 8) != 0 ) - { - a2[3] = v14; - a2[4] = v14; - a2[5] = v14; - if ( v15 ) - { - a2[7] = v14; - a2[6] = v14; - a2[8] = v17; - } - } - else if ( v15 ) - { - a2[7] = v14; - a2[6] = v14; - a2[8] = v17; - a2[3] = v14; - a2[4] = v14; - a2[5] = v14; - } - this[47] = lpuexcpt; -} -// 4EC5D5: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4EC382: variable 'v18' is possibly undefined -// 4EC509: variable 'v19' is possibly undefined -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A57C: using guessed type int (*off_51A57C)(); -// 51A590: using guessed type int (*off_51A590[2])(); - -//----- (004EC750) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2, int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - _DWORD *v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v6 = this + 17; - std::ios_base::ios_base(this + 17); - this[45] = 0; - *((_WORD *)this + 92) = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - *this = &unk_515860; - this[17] = &unk_515874; - this[1] = 0; - std::ios::init((int)v6, 0); - *this = &off_51A57C; - this[17] = off_51A590; - this[2] = &off_51ADD4; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - v7 = this + 2; - std::locale::locale(this + 9); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - this[2] = &off_51A2D8; - this[10] = 0; - this[11] = this + 13; - std::string::_M_construct(this + 11, v4, (int)&v4[v3]); - v5 = 0; - this[10] = a3 | 8; - if ( (a3 & 3) != 0 ) - v5 = this[12]; - std::stringbuf::_M_sync(v7, (_DWORD *)this[11], 0, v5); - std::ios::init((int)v6, (int)v7); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A57C: using guessed type int (*off_51A57C)(); -// 51A590: using guessed type int (*off_51A590[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EC970) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+24h] [ebp-44h] - - v2 = this + 17; - std::ios_base::ios_base(this + 17); - this[45] = 0; - *((_WORD *)this + 92) = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - *this = &unk_515860; - this[17] = &unk_515874; - this[1] = 0; - std::ios::init((int)v2, 0); - *this = &off_51A57C; - this[17] = off_51A590; - this[2] = &off_51ADD4; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[2] = &off_51A2D8; - this[10] = a2 | 8; - this[11] = this + 13; - this[12] = 0; - *((_BYTE *)this + 52) = 0; - std::ios::init((int)v2, (int)(this + 2)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A57C: using guessed type int (*off_51A57C)(); -// 51A590: using guessed type int (*off_51A590[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004ECB10) -------------------------------------------------------- -void __fastcall std::istringstream::basic_istringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 68; - std::ios_base::ios_base((_DWORD *)(a1 + 68)); - *(_DWORD *)(a1 + 180) = 0; - *(_WORD *)(a1 + 184) = 0; - *(_DWORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)(a1 + 200) = 0; - *(_DWORD *)a1 = &unk_515860; - *(_DWORD *)(a1 + 68) = &unk_515874; - *(_DWORD *)(a1 + 4) = 0; - std::ios::init(v1, 0); - *(_DWORD *)a1 = &off_51A57C; - *(_DWORD *)(a1 + 68) = off_51A590; - *(_DWORD *)(a1 + 8) = &off_51ADD4; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - std::locale::locale((_DWORD *)(a1 + 36)); - *(_DWORD *)(a1 + 8) = &off_51A2D8; - *(_DWORD *)(a1 + 40) = 8; - *(_DWORD *)(a1 + 44) = a1 + 52; - *(_DWORD *)(a1 + 48) = 0; - *(_BYTE *)(a1 + 52) = 0; - std::ios::init(v1, a1 + 8); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A57C: using guessed type int (*off_51A57C)(); -// 51A590: using guessed type int (*off_51A590[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004ECCA0) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - std::ios_base *v10; // [esp+4h] [ebp-54h] - std::ios_base *v11; // [esp+10h] [ebp-48h] - char *v12; // [esp+14h] [ebp-44h] - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - v12 = (char *)this + *(_DWORD *)(v4 - 12); - v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)v12, v11, v10); - std::ios::_M_cache_locale(v12, (int)(v12 + 108)); - v7 = *((_DWORD *)v11 + 28); - *((_DWORD *)v12 + 30) = 0; - *((_DWORD *)v11 + 28) = 0; - v8 = a2[3]; - *((_DWORD *)v12 + 28) = v7; - *((_WORD *)v12 + 58) = *((_WORD *)v11 + 58); - a3[1] = 0; - v9 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; - std::stringbuf::basic_stringbuf(this + 2, (std::locale *)(a3 + 2)); - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)(this + 2); -} -// 4ECD07: variable 'v10' is possibly undefined - -//----- (004ECDE0) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - _BYTE *v10; // edx - int v11; // eax - unsigned int v12; // eax - int *v13; // [esp+24h] [ebp-44h] - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - v13 = this + 2; - this[2] = (int)&off_51ADD4; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - v10 = *(_BYTE **)a3; - v11 = *(_DWORD *)(a3 + 4); - this[2] = (int)&off_51A2D8; - this[10] = 0; - this[11] = (int)(this + 13); - std::string::_M_construct(this + 11, v10, (int)&v10[v11]); - v12 = 0; - this[10] = a4 | 8; - if ( (a4 & 3) != 0 ) - v12 = this[12]; - std::stringbuf::_M_sync(v13, (_DWORD *)this[11], 0, v12); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)v13); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004ECFC0) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); - v7 = *a2; - v8 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; - this[2] = (int)&off_51ADD4; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[12] = 0; - this[10] = a3 | 8; - this[11] = (int)(this + 13); - v9 = *this; - *((_BYTE *)this + 52) = 0; - this[2] = (int)&off_51A2D8; - std::ios::init((int)this + *(_DWORD *)(v9 - 12), (int)(this + 2)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004ED110) -------------------------------------------------------- -void __thiscall std::istringstream::basic_istringstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - int v7; // edx - int v8; // eax - int v9; // ecx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - this[2] = (int)&off_51ADD4; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[12] = 0; - this[11] = (int)(this + 13); - v8 = *this; - *((_BYTE *)this + 52) = 0; - this[2] = (int)&off_51A2D8; - v9 = *(_DWORD *)(v8 - 12); - this[10] = 8; - std::ios::init((int)this + v9, (int)(this + 2)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004ED260) -------------------------------------------------------- -void __fastcall std::istringstream::~istringstream(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[11]; - *Block = &off_51A57C; - Block[17] = off_51A590; - Block[2] = &off_51A2D8; - if ( v2 != Block + 13 ) - operator delete(v2); - Block[2] = &off_51ADD4; - std::locale::~locale((_DWORD **)Block + 9); - *Block = &unk_515860; - Block[1] = 0; - Block[17] = &off_51B7D0; - std::ios_base::~ios_base((int)(Block + 17)); - operator delete(Block); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A57C: using guessed type int (*off_51A57C)(); -// 51A590: using guessed type int (*off_51A590[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004ED2D0) -------------------------------------------------------- -void __fastcall std::istringstream::~istringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 44); - *(_DWORD *)a1 = &off_51A57C; - *(_DWORD *)(a1 + 68) = off_51A590; - *(_DWORD *)(a1 + 8) = &off_51A2D8; - if ( Block != (void *)(a1 + 52) ) - operator delete(Block); - *(_DWORD *)(a1 + 8) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 36)); - *(_DWORD *)a1 = &unk_515860; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 68) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 68); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A57C: using guessed type int (*off_51A57C)(); -// 51A590: using guessed type int (*off_51A590[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004ED330) -------------------------------------------------------- -int __thiscall std::istringstream::~istringstream(int *this, int *a2) -{ - int v3; // eax - int *Block; // eax - int v5; // eax - int result; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - Block = (int *)this[11]; - this[2] = (int)&off_51A2D8; - if ( Block != this + 13 ) - operator delete(Block); - this[2] = (int)&off_51ADD4; - std::locale::~locale((_DWORD **)this + 9); - v5 = a2[1]; - *this = v5; - result = *(_DWORD *)(v5 - 12); - *(int *)((char *)this + result) = a2[2]; - this[1] = 0; - return result; -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004ED390) -------------------------------------------------------- -_DWORD *__thiscall std::istringstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - char v6; // cl - char v7; // cl - int v8; // eax - std::ios_base *v10; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v10); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - v8 = this[1]; - *((_BYTE *)v4 + 117) = v7; - this[1] = a2[1]; - a2[1] = v8; - std::stringbuf::operator=(this + 2, (int)(a2 + 2)); - return this; -} -// 4ED3D0: variable 'v10' is possibly undefined - -//----- (004ED470) -------------------------------------------------------- -_DWORD *__thiscall std::wistringstream::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 8); - std::wstring::_M_replace((unsigned int **)(this + 44), 0, *(_DWORD *)(this + 48), *(char **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 40) & 3) != 0 ) - v4 = *(_DWORD *)(this + 48); - return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); -} - -//----- (004ED4E0) -------------------------------------------------------- -void __thiscall std::wistringstream::swap(volatile signed __int32 **this, _DWORD *a2) -{ - std::ios_base **v3; // edi - std::ios_base *v4; // esi - std::ios_base *v5; // edx - __int16 v6; // cx - volatile signed __int32 *v7; // edx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *((_DWORD *)*this - 3)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = (volatile signed __int32 *)a2[1]; - a2[1] = v7; - std::wstringbuf::swap(this + 2, a2 + 2); -} -// 4ED520: variable 'v8' is possibly undefined - -//----- (004ED5C0) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - int v3; // eax - std::ios_base *v4; // edx - int v5; // eax - int v6; // edx - unsigned int v7; // eax - int v8; // ecx - int v9; // eax - _DWORD *v10; // esi - _DWORD *v11; // eax - int v12; // ecx - int v13; // ebx - char *v14; // ecx - int v15; // edx - std::ios_base *v16; // [esp+4h] [ebp-B4h] - const std::locale *v17; // [esp+4h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v20; // [esp+24h] [ebp-94h] - int v22; // [esp+70h] [ebp-48h] - int v23; // [esp+74h] [ebp-44h] - int v24; // [esp+78h] [ebp-40h] - __int64 v25; // [esp+80h] [ebp-38h] - int v26; // [esp+88h] [ebp-30h] - int v27; // [esp+8Ch] [ebp-2Ch] - int v28; // [esp+90h] [ebp-28h] - int v29; // [esp+98h] [ebp-20h] - - v20 = this + 17; - std::ios_base::ios_base(this + 17); - v2 = a2[1]; - this[45] = 0; - this[1] = v2; - *((_WORD *)this + 92) = 0; - v3 = *a2; - *this = &unk_515888; - *((_BYTE *)this + 186) = 0; - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v3 - 12)); - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - this[17] = &unk_51589C; - lpuexcpta = v4; - std::ios_base::_M_move((int)v20, v4, v16); - std::wios::_M_cache_locale(v20, (int)(this + 44)); - v22 = -1; - v23 = -1; - v5 = *((_DWORD *)lpuexcpta + 28); - *((_DWORD *)lpuexcpta + 28) = 0; - this[47] = 0; - this[45] = v5; - v24 = -1; - *((_WORD *)this + 92) = *((_WORD *)lpuexcpta + 58); - v6 = a2[11]; - *((_BYTE *)this + 186) = *((_BYTE *)lpuexcpta + 118); - LODWORD(v25) = -1; - a2[1] = 0; - lpuexcpt = (struct _Unwind_Exception *)(this + 2); - v7 = a2[3]; - *this = &off_51A5A4; - this[17] = off_51A5B8; - v26 = -1; - v27 = -1; - v28 = -1; - v29 = -1; - if ( !v7 ) - { - v8 = a2[6]; - if ( !v8 ) - goto LABEL_7; - goto LABEL_3; - } - v22 = (int)(v7 - v6) >> 1; - v23 = (int)(v7 - v6) >> 31; - v24 = (a2[4] - v6) >> 1; - v7 = a2[5]; - v25 = (int)(v7 - v6) >> 1; - v8 = a2[6]; - if ( v8 ) - { -LABEL_3: - v26 = (v8 - v6) >> 1; - v27 = (v8 - v6) >> 31; - v28 = (a2[7] - v8) >> 1; - v29 = (a2[8] - v6) >> 1; - if ( v7 < a2[7] ) - v7 = a2[7]; - } - if ( v7 ) - a2[12] = (int)(v7 - v6) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 2), v17); - v9 = a2[10]; - this[2] = &off_51A318; - this[11] = this + 13; - v10 = a2 + 13; - this[10] = v9; - v11 = (_DWORD *)a2[11]; - if ( v11 == a2 + 13 ) - { - this[13] = a2[13]; - this[14] = a2[14]; - this[15] = a2[15]; - this[16] = a2[16]; - } - else - { - this[11] = v11; - this[13] = a2[13]; - } - this[12] = a2[12]; - a2[11] = v10; - *((_WORD *)a2 + 26) = 0; - v12 = this[11]; - a2[12] = 0; - if ( (v22 & v23) != -1 ) - { - this[3] = v12 + 2 * v22; - this[4] = v12 + 2 * v24; - this[5] = v12 + 2 * v25; - } - if ( (v26 & v27) != -1 ) - { - v13 = v12 + 2 * v26; - this[8] = v12 + 2 * v29; - this[6] = v13; - this[7] = v13 + 2 * v28; - } - v14 = (char *)a2 + 66; - v15 = a2[10] & 0x10; - if ( (a2[10] & 8) != 0 ) - { - a2[3] = v10; - a2[4] = v10; - a2[5] = v10; - if ( v15 ) - { - a2[7] = v10; - a2[6] = v10; - a2[8] = v14; - } - } - else if ( v15 ) - { - a2[7] = v10; - a2[6] = v10; - a2[8] = v14; - a2[3] = v10; - a2[4] = v10; - a2[5] = v10; - } - this[47] = lpuexcpt; -} -// 4ED8FD: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4ED689: variable 'v16' is possibly undefined -// 4ED828: variable 'v17' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); -// 51A5A4: using guessed type int (*off_51A5A4)(); -// 51A5B8: using guessed type int (*off_51A5B8[2])(); - -//----- (004EDA50) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2, int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - _DWORD *v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v6 = this + 17; - std::ios_base::ios_base(this + 17); - this[45] = 0; - *((_WORD *)this + 92) = 0; - *((_BYTE *)this + 186) = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - *this = &unk_515888; - this[17] = &unk_51589C; - this[1] = 0; - std::wios::init((int)v6, 0); - *this = &off_51A5A4; - this[17] = off_51A5B8; - this[2] = &off_51AE14; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - v7 = this + 2; - std::locale::locale(this + 9); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - this[2] = &off_51A318; - this[10] = 0; - this[11] = this + 13; - std::wstring::_M_construct(this + 11, v4, (int)&v4[v3]); - v5 = 0; - this[10] = a3 | 8; - if ( (a3 & 3) != 0 ) - v5 = this[12]; - std::wstringbuf::_M_sync(v7, (_DWORD *)this[11], 0, v5); - std::wios::init((int)v6, (int)v7); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5A4: using guessed type int (*off_51A5A4)(); -// 51A5B8: using guessed type int (*off_51A5B8[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EDC70) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+24h] [ebp-44h] - - v2 = this + 17; - std::ios_base::ios_base(this + 17); - this[45] = 0; - *((_WORD *)this + 92) = 0; - *((_BYTE *)this + 186) = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - this[50] = 0; - *this = &unk_515888; - this[17] = &unk_51589C; - this[1] = 0; - std::wios::init((int)v2, 0); - *this = &off_51A5A4; - this[17] = off_51A5B8; - this[2] = &off_51AE14; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[2] = &off_51A318; - this[10] = a2 | 8; - this[11] = this + 13; - this[12] = 0; - *((_WORD *)this + 26) = 0; - std::wios::init((int)v2, (int)(this + 2)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5A4: using guessed type int (*off_51A5A4)(); -// 51A5B8: using guessed type int (*off_51A5B8[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EDE10) -------------------------------------------------------- -void __fastcall std::wistringstream::basic_istringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 68; - std::ios_base::ios_base((_DWORD *)(a1 + 68)); - *(_DWORD *)(a1 + 180) = 0; - *(_WORD *)(a1 + 184) = 0; - *(_BYTE *)(a1 + 186) = 0; - *(_DWORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)(a1 + 200) = 0; - *(_DWORD *)a1 = &unk_515888; - *(_DWORD *)(a1 + 68) = &unk_51589C; - *(_DWORD *)(a1 + 4) = 0; - std::wios::init(v1, 0); - *(_DWORD *)a1 = &off_51A5A4; - *(_DWORD *)(a1 + 68) = off_51A5B8; - *(_DWORD *)(a1 + 8) = &off_51AE14; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - *(_DWORD *)(a1 + 32) = 0; - std::locale::locale((_DWORD *)(a1 + 36)); - *(_DWORD *)(a1 + 8) = &off_51A318; - *(_DWORD *)(a1 + 44) = a1 + 52; - *(_DWORD *)(a1 + 40) = 8; - *(_DWORD *)(a1 + 48) = 0; - *(_WORD *)(a1 + 52) = 0; - std::wios::init(v1, a1 + 8); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5A4: using guessed type int (*off_51A5A4)(); -// 51A5B8: using guessed type int (*off_51A5B8[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EDFB0) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - int v10; // edx - unsigned int v11; // eax - int v12; // ecx - int v13; // eax - _DWORD *v14; // esi - _DWORD *v15; // eax - int v16; // ecx - int v17; // ebx - char *v18; // ecx - int v19; // edx - std::ios_base *v20; // [esp+4h] [ebp-A4h] - const std::locale *v21; // [esp+4h] [ebp-A4h] - std::ios_base *v22; // [esp+10h] [ebp-98h] - int *v23; // [esp+10h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] - int v26; // [esp+60h] [ebp-48h] - int v27; // [esp+64h] [ebp-44h] - int v28; // [esp+68h] [ebp-40h] - __int64 v29; // [esp+70h] [ebp-38h] - int v30; // [esp+78h] [ebp-30h] - int v31; // [esp+7Ch] [ebp-2Ch] - int v32; // [esp+80h] [ebp-28h] - int v33; // [esp+88h] [ebp-20h] - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = a3[1]; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - v22 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v22, v20); - std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v7 = *((_DWORD *)v22 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v22 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v7; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v22 + 58); - *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v22 + 118); - a3[1] = 0; - v8 = a2[3]; - v9 = *a2; - *this = *a2; - v26 = -1; - *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; - v23 = this + 2; - v27 = -1; - v28 = -1; - LODWORD(v29) = -1; - v30 = -1; - v31 = -1; - v32 = -1; - v33 = -1; - v10 = a3[11]; - v11 = a3[3]; - if ( !v11 ) - { - v12 = a3[6]; - if ( !v12 ) - goto LABEL_7; - goto LABEL_3; - } - v26 = (int)(v11 - v10) >> 1; - v27 = (int)(v11 - v10) >> 31; - v28 = (a3[4] - v10) >> 1; - v11 = a3[5]; - v29 = (int)(v11 - v10) >> 1; - v12 = a3[6]; - if ( v12 ) - { -LABEL_3: - v30 = (v12 - v10) >> 1; - v31 = (v12 - v10) >> 31; - v32 = (a3[7] - v12) >> 1; - v33 = (a3[8] - v10) >> 1; - if ( v11 < a3[7] ) - v11 = a3[7]; - } - if ( v11 ) - a3[12] = (int)(v11 - v10) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(v23, (std::locale *)(a3 + 2), v21); - v13 = a3[10]; - this[2] = (int)&off_51A318; - this[11] = (int)(this + 13); - v14 = a3 + 13; - this[10] = v13; - v15 = (_DWORD *)a3[11]; - if ( v15 == a3 + 13 ) - { - this[13] = a3[13]; - this[14] = a3[14]; - this[15] = a3[15]; - this[16] = a3[16]; - } - else - { - this[11] = (int)v15; - this[13] = a3[13]; - } - this[12] = a3[12]; - a3[11] = v14; - *((_WORD *)a3 + 26) = 0; - v16 = this[11]; - a3[12] = 0; - if ( (v26 & v27) != -1 ) - { - this[3] = v16 + 2 * v26; - this[4] = v16 + 2 * v28; - this[5] = v16 + 2 * v29; - } - if ( (v30 & v31) != -1 ) - { - v17 = v16 + 2 * v30; - this[8] = v16 + 2 * v33; - this[6] = v17; - this[7] = v17 + 2 * v32; - } - v18 = (char *)a3 + 66; - v19 = a3[10] & 0x10; - if ( (a3[10] & 8) != 0 ) - { - a3[3] = v14; - a3[4] = v14; - a3[5] = v14; - if ( v19 ) - { - a3[7] = v14; - a3[6] = v14; - a3[8] = v18; - } - } - else if ( v19 ) - { - a3[7] = v14; - a3[6] = v14; - a3[8] = v18; - a3[3] = v14; - a3[4] = v14; - a3[5] = v14; - } - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v23; -} -// 4EE29B: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4EE02B: variable 'v20' is possibly undefined -// 4EE1C6: variable 'v21' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); - -//----- (004EE3D0) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3, int a4) -{ - int v5; // eax - int v6; // ecx - int v7; // edx - int v8; // eax - int v9; // edx - int v10; // edx - _WORD *v11; // eax - unsigned int v12; // eax - int *v13; // [esp+24h] [ebp-44h] - - v5 = a2[1]; - v6 = a2[2]; - v7 = *(_DWORD *)(v5 - 12); - *this = v5; - *(int *)((char *)this + v7) = v6; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); - v8 = *a2; - v9 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; - v13 = this + 2; - this[2] = (int)&off_51AE14; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - v10 = *(_DWORD *)(a3 + 4); - v11 = *(_WORD **)a3; - this[2] = (int)&off_51A318; - this[10] = 0; - this[11] = (int)(this + 13); - std::wstring::_M_construct(this + 11, v11, (int)&v11[v10]); - v12 = 0; - this[10] = a4 | 8; - if ( (a4 & 3) != 0 ) - v12 = this[12]; - std::wstringbuf::_M_sync(v13, (_DWORD *)this[11], 0, v12); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)v13); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EE5A0) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3) -{ - int v4; // eax - int v5; // ecx - int v6; // edx - int v7; // eax - int v8; // edx - int v9; // eax - - v4 = a2[1]; - v5 = a2[2]; - v6 = *(_DWORD *)(v4 - 12); - *this = v4; - *(int *)((char *)this + v6) = v5; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); - v7 = *a2; - v8 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; - this[2] = (int)&off_51AE14; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[12] = 0; - this[10] = a3 | 8; - this[11] = (int)(this + 13); - *((_WORD *)this + 26) = 0; - v9 = *this; - this[2] = (int)&off_51A318; - std::wios::init((int)this + *(_DWORD *)(v9 - 12), (int)(this + 2)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EE700) -------------------------------------------------------- -void __thiscall std::wistringstream::basic_istringstream(int *this, int *a2) -{ - int v3; // eax - int v4; // ecx - int v5; // edx - int v6; // eax - int v7; // edx - int v8; // eax - int v9; // ecx - - v3 = a2[1]; - v4 = a2[2]; - v5 = *(_DWORD *)(v3 - 12); - *this = v3; - *(int *)((char *)this + v5) = v4; - this[1] = 0; - std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - this[2] = (int)&off_51AE14; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - this[8] = 0; - std::locale::locale(this + 9); - this[12] = 0; - this[11] = (int)(this + 13); - *((_WORD *)this + 26) = 0; - v8 = *this; - this[2] = (int)&off_51A318; - v9 = *(_DWORD *)(v8 - 12); - this[10] = 8; - std::wios::init((int)this + v9, (int)(this + 2)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EE850) -------------------------------------------------------- -void __fastcall std::wistringstream::~wistringstream(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[11]; - *Block = &off_51A5A4; - Block[17] = off_51A5B8; - Block[2] = &off_51A318; - if ( v2 != Block + 13 ) - operator delete(v2); - Block[2] = &off_51AE14; - std::locale::~locale((_DWORD **)Block + 9); - *Block = &unk_515888; - Block[1] = 0; - Block[17] = &off_51B7E0; - std::ios_base::~ios_base((int)(Block + 17)); - operator delete(Block); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5A4: using guessed type int (*off_51A5A4)(); -// 51A5B8: using guessed type int (*off_51A5B8[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004EE8C0) -------------------------------------------------------- -void __fastcall std::wistringstream::~wistringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 44); - *(_DWORD *)a1 = &off_51A5A4; - *(_DWORD *)(a1 + 68) = off_51A5B8; - *(_DWORD *)(a1 + 8) = &off_51A318; - if ( Block != (void *)(a1 + 52) ) - operator delete(Block); - *(_DWORD *)(a1 + 8) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 36)); - *(_DWORD *)a1 = &unk_515888; - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)(a1 + 68) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 68); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5A4: using guessed type int (*off_51A5A4)(); -// 51A5B8: using guessed type int (*off_51A5B8[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004EE920) -------------------------------------------------------- -int __thiscall std::wistringstream::~wistringstream(int *this, int *a2) -{ - int v3; // eax - int *Block; // eax - int v5; // eax - int result; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - Block = (int *)this[11]; - this[2] = (int)&off_51A318; - if ( Block != this + 13 ) - operator delete(Block); - this[2] = (int)&off_51AE14; - std::locale::~locale((_DWORD **)this + 9); - v5 = a2[1]; - *this = v5; - result = *(_DWORD *)(v5 - 12); - *(int *)((char *)this + result) = a2[2]; - this[1] = 0; - return result; -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004EE980) -------------------------------------------------------- -_DWORD *__thiscall std::wistringstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - __int16 v6; // cx - int v7; // eax - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - v7 = this[1]; - *((_BYTE *)v4 + 118) = v6; - this[1] = a2[1]; - a2[1] = v7; - std::wstringbuf::operator=(this + 2, (int)(a2 + 2)); - return this; -} -// 4EE9C0: variable 'v9' is possibly undefined - -//----- (004EEA60) -------------------------------------------------------- -int __thiscall std::ostringstream::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 4); - std::string::_M_replace((unsigned int **)(this + 40), 0, *(_DWORD *)(this + 44), *(char **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 36) & 3) != 0 ) - v4 = *(_DWORD *)(this + 44); - return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); -} - -//----- (004EEAD0) -------------------------------------------------------- -void __thiscall std::ostringstream::swap(volatile signed __int32 **this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - char v6; // cl - char v7; // cl - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *((_DWORD *)*this - 3)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - *((_BYTE *)v4 + 117) = v7; - std::stringbuf::swap(this + 1, a2 + 1); -} -// 4EEB10: variable 'v8' is possibly undefined - -//----- (004EEBA0) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - int v3; // edx - unsigned int v4; // eax - int v5; // ecx - int v6; // eax - _DWORD *v7; // eax - int v8; // ebx - int v9; // ecx - int v10; // ebx - _DWORD *v11; // eax - int v12; // edx - int v13; // ecx - char *v14; // ecx - std::ios_base *v15; // [esp+4h] [ebp-B4h] - const std::locale *v16; // [esp+4h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v19; // [esp+24h] [ebp-94h] - _DWORD *v20; // [esp+24h] [ebp-94h] - __int64 v22; // [esp+70h] [ebp-48h] - int v23; // [esp+78h] [ebp-40h] - __int64 v24; // [esp+80h] [ebp-38h] - __int64 v25; // [esp+88h] [ebp-30h] - int v26; // [esp+90h] [ebp-28h] - int v27; // [esp+98h] [ebp-20h] - - v19 = this + 16; - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_5158B0; - this[16] = &unk_5158C4; - lpuexcpta = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v19, lpuexcpta, v15); - std::ios::_M_cache_locale(v19, (int)(this + 43)); - v22 = -1LL; - v2 = *((_DWORD *)lpuexcpta + 28); - *this = &off_51A5CC; - *((_DWORD *)lpuexcpta + 28) = 0; - this[44] = v2; - LOWORD(v2) = *((_WORD *)lpuexcpta + 58); - this[46] = 0; - *((_WORD *)this + 90) = v2; - lpuexcpt = (struct _Unwind_Exception *)(this + 1); - v3 = a2[10]; - v4 = a2[2]; - this[16] = off_51A5E0; - v23 = -1; - LODWORD(v24) = -1; - v25 = -1LL; - v26 = -1; - v27 = -1; - if ( !v4 ) - { - v5 = a2[5]; - if ( !v5 ) - goto LABEL_7; - goto LABEL_3; - } - v22 = (int)(v4 - v3); - v23 = a2[3] - v3; - v4 = a2[4]; - v24 = (int)(v4 - v3); - v5 = a2[5]; - if ( v5 ) - { -LABEL_3: - v25 = v5 - v3; - v26 = a2[6] - v5; - v27 = a2[7] - v3; - if ( v4 < a2[6] ) - v4 = a2[6]; - } - if ( v4 ) - a2[11] = v4 - v3; -LABEL_7: - std::streambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 1), v16); - v6 = a2[9]; - this[1] = &off_51A2D8; - this[10] = this + 12; - this[9] = v6; - v20 = a2 + 12; - v7 = (_DWORD *)a2[10]; - if ( v7 == a2 + 12 ) - { - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - this[15] = a2[15]; - } - else - { - this[10] = v7; - this[12] = a2[12]; - } - this[11] = a2[11]; - *((_BYTE *)a2 + 48) = 0; - a2[10] = v20; - a2[11] = 0; - v8 = this[10]; - if ( ((unsigned int)v22 & HIDWORD(v22)) != -1 ) - { - this[2] = v8 + v22; - this[3] = v8 + v23; - this[4] = v8 + v24; - } - if ( ((unsigned int)v25 & HIDWORD(v25)) != -1 ) - { - v9 = v8 + v27; - v10 = v25 + v8; - this[7] = v9; - this[5] = v10; - this[6] = v10 + v26; - } - v11 = (_DWORD *)a2[10]; - v12 = a2[9] & 0x10; - if ( v11 == v20 ) - v13 = 15; - else - v13 = a2[12]; - v14 = (char *)v11 + v13; - if ( (a2[9] & 8) != 0 ) - { - a2[2] = v11; - a2[3] = v11; - a2[4] = v11; - if ( v12 ) - { - a2[6] = v11; - a2[5] = v11; - a2[7] = v14; - } - } - else if ( v12 ) - { - a2[6] = v11; - a2[5] = v11; - a2[7] = v14; - a2[2] = v11; - a2[3] = v11; - a2[4] = v11; - } - this[46] = lpuexcpt; -} -// 4EEE9F: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4EEC56: variable 'v15' is possibly undefined -// 4EEDD3: variable 'v16' is possibly undefined -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A5CC: using guessed type int (*off_51A5CC)(); -// 51A5E0: using guessed type int (*off_51A5E0[2])(); - -//----- (004EF020) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2, int a3) -{ - int v3; // eax - _BYTE *v4; // edx - unsigned int v5; // eax - _DWORD *v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v6 = this + 16; - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_5158B0; - this[16] = &unk_5158C4; - std::ios::init((int)v6, 0); - *this = &off_51A5CC; - this[16] = off_51A5E0; - this[1] = &off_51ADD4; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - v7 = this + 1; - std::locale::locale(this + 8); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_BYTE **)a2; - this[1] = &off_51A2D8; - this[9] = 0; - this[10] = this + 12; - std::string::_M_construct(this + 10, v4, (int)&v4[v3]); - v5 = 0; - this[9] = a3 | 0x10; - if ( (a3 & 3) != 0 ) - v5 = this[11]; - std::stringbuf::_M_sync(v7, (_DWORD *)this[10], 0, v5); - std::ios::init((int)v6, (int)v7); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A5CC: using guessed type int (*off_51A5CC)(); -// 51A5E0: using guessed type int (*off_51A5E0[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EF230) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+24h] [ebp-44h] - - v2 = this + 16; - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_5158B0; - this[16] = &unk_5158C4; - std::ios::init((int)v2, 0); - *this = &off_51A5CC; - this[16] = off_51A5E0; - this[1] = &off_51ADD4; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[1] = &off_51A2D8; - this[9] = a2 | 0x10; - this[10] = this + 12; - this[11] = 0; - *((_BYTE *)this + 48) = 0; - std::ios::init((int)v2, (int)(this + 1)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A5CC: using guessed type int (*off_51A5CC)(); -// 51A5E0: using guessed type int (*off_51A5E0[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EF3C0) -------------------------------------------------------- -void __fastcall std::ostringstream::basic_ostringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 64; - std::ios_base::ios_base((_DWORD *)(a1 + 64)); - *(_DWORD *)(a1 + 176) = 0; - *(_WORD *)(a1 + 180) = 0; - *(_DWORD *)(a1 + 184) = 0; - *(_DWORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)a1 = &unk_5158B0; - *(_DWORD *)(a1 + 64) = &unk_5158C4; - std::ios::init(v1, 0); - *(_DWORD *)a1 = &off_51A5CC; - *(_DWORD *)(a1 + 64) = off_51A5E0; - *(_DWORD *)(a1 + 4) = &off_51ADD4; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - std::locale::locale((_DWORD *)(a1 + 32)); - *(_DWORD *)(a1 + 4) = &off_51A2D8; - *(_DWORD *)(a1 + 36) = 16; - *(_DWORD *)(a1 + 40) = a1 + 48; - *(_DWORD *)(a1 + 44) = 0; - *(_BYTE *)(a1 + 48) = 0; - std::ios::init(v1, a1 + 4); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A5CC: using guessed type int (*off_51A5CC)(); -// 51A5E0: using guessed type int (*off_51A5E0[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EF550) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // edx - int v8; // edx - unsigned int v9; // eax - int v10; // ecx - int v11; // eax - _DWORD *v12; // eax - int v13; // ebx - int v14; // ecx - int v15; // ebx - struct _Unwind_Exception *v16; // eax - int v17; // edx - int v18; // ecx - char *v19; // ecx - std::ios_base *v20; // [esp+4h] [ebp-A4h] - const std::locale *v21; // [esp+4h] [ebp-A4h] - std::ios_base *v22; // [esp+10h] [ebp-98h] - int *v23; // [esp+10h] [ebp-98h] - struct _Unwind_Exception *lpuexcpta; // [esp+14h] [ebp-94h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] - __int64 v27; // [esp+60h] [ebp-48h] - int v28; // [esp+68h] [ebp-40h] - __int64 v29; // [esp+70h] [ebp-38h] - __int64 v30; // [esp+78h] [ebp-30h] - int v31; // [esp+80h] [ebp-28h] - int v32; // [esp+88h] [ebp-20h] - - v4 = a2[1]; - *this = v4; - lpuexcpta = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - *(_DWORD *)lpuexcpta = a2[2]; - v22 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpta, v22, v20); - std::ios::_M_cache_locale(lpuexcpta, (int)lpuexcpta + 108); - v5 = *((_DWORD *)v22 + 28); - *((_DWORD *)lpuexcpta + 30) = 0; - *((_DWORD *)v22 + 28) = 0; - *((_DWORD *)lpuexcpta + 28) = v5; - *((_WORD *)lpuexcpta + 58) = *((_WORD *)v22 + 58); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - v27 = -1LL; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - v23 = this + 1; - v28 = -1; - LODWORD(v29) = -1; - v30 = -1LL; - v31 = -1; - v32 = -1; - v8 = a3[10]; - v9 = a3[2]; - if ( !v9 ) - { - v10 = a3[5]; - if ( !v10 ) - goto LABEL_7; - goto LABEL_3; - } - v27 = (int)(v9 - v8); - v28 = a3[3] - v8; - v9 = a3[4]; - v29 = (int)(v9 - v8); - v10 = a3[5]; - if ( v10 ) - { -LABEL_3: - v30 = v10 - v8; - v31 = a3[6] - v10; - v32 = a3[7] - v8; - if ( v9 < a3[6] ) - v9 = a3[6]; - } - if ( v9 ) - a3[11] = v9 - v8; -LABEL_7: - std::streambuf::basic_streambuf(v23, (std::locale *)(a3 + 1), v21); - v11 = a3[9]; - this[1] = (int)&off_51A2D8; - this[10] = (int)(this + 12); - this[9] = v11; - lpuexcpt = (struct _Unwind_Exception *)(a3 + 12); - v12 = (_DWORD *)a3[10]; - if ( v12 == a3 + 12 ) - { - this[12] = a3[12]; - this[13] = a3[13]; - this[14] = a3[14]; - this[15] = a3[15]; - } - else - { - this[10] = (int)v12; - this[12] = a3[12]; - } - this[11] = a3[11]; - a3[10] = lpuexcpt; - *((_BYTE *)a3 + 48) = 0; - v13 = this[10]; - a3[11] = 0; - if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) - { - this[2] = v13 + v27; - this[3] = v13 + v28; - this[4] = v13 + v29; - } - if ( ((unsigned int)v30 & HIDWORD(v30)) != -1 ) - { - v14 = v13 + v32; - v15 = v30 + v13; - this[7] = v14; - this[5] = v15; - this[6] = v15 + v31; - } - v16 = (struct _Unwind_Exception *)a3[10]; - v17 = a3[9] & 0x10; - if ( v16 == lpuexcpt ) - v18 = 15; - else - v18 = a3[12]; - v19 = (char *)v16 + v18; - if ( (a3[9] & 8) != 0 ) - { - a3[2] = v16; - a3[3] = v16; - a3[4] = v16; - if ( v17 ) - { - a3[6] = v16; - a3[5] = v16; - a3[7] = v19; - } - } - else if ( v17 ) - { - a3[6] = v16; - a3[5] = v16; - a3[7] = v19; - a3[2] = v16; - a3[3] = v16; - a3[4] = v16; - } - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v23; -} -// 4EF80A: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4EF5C2: variable 'v20' is possibly undefined -// 4EF73E: variable 'v21' is possibly undefined -// 51A2D8: using guessed type int (*off_51A2D8)(); - -//----- (004EF960) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4) -{ - int v5; // eax - _DWORD *v6; // ecx - int v7; // eax - int v8; // edx - _BYTE *v9; // edx - int v10; // eax - unsigned int v11; // eax - int *v12; // [esp+24h] [ebp-44h] - - v5 = a2[1]; - *this = v5; - v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); - *v6 = a2[2]; - std::ios::init((int)v6, 0); - v7 = *a2; - v8 = a2[3]; - *this = *a2; - v12 = this + 1; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; - this[1] = (int)&off_51ADD4; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - v9 = *(_BYTE **)a3; - v10 = *(_DWORD *)(a3 + 4); - this[1] = (int)&off_51A2D8; - this[9] = 0; - this[10] = (int)(this + 12); - std::string::_M_construct(this + 10, v9, (int)&v9[v10]); - v11 = 0; - this[9] = a4 | 0x10; - if ( (a4 & 3) != 0 ) - v11 = this[11]; - std::stringbuf::_M_sync(v12, (_DWORD *)this[10], 0, v11); - std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)v12); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EFB20) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3) -{ - int v3; // eax - _DWORD *v4; // ecx - int v5; // eax - int v6; // edx - int v7; // eax - int v8; // ecx - - v3 = a2[1]; - *this = v3; - v4 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); - *v4 = a2[2]; - std::ios::init((int)v4, 0); - v5 = *a2; - v6 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; - this[1] = (int)&off_51ADD4; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[11] = 0; - this[9] = a3 | 0x10; - this[10] = (int)(this + 12); - v7 = *this; - *((_BYTE *)this + 48) = 0; - v8 = *(_DWORD *)(v7 - 12); - this[1] = (int)&off_51A2D8; - std::ios::init((int)this + v8, (int)(this + 1)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EFC60) -------------------------------------------------------- -void __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2) -{ - int v2; // eax - _DWORD *v3; // ecx - int v4; // eax - int v5; // edx - int v6; // eax - - v2 = a2[1]; - *this = v2; - v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v3 = a2[2]; - std::ios::init((int)v3, 0); - v4 = *a2; - v5 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - this[1] = (int)&off_51ADD4; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[1] = (int)&off_51A2D8; - this[10] = (int)(this + 12); - v6 = *this; - this[9] = 16; - this[11] = 0; - *((_BYTE *)this + 48) = 0; - std::ios::init((int)this + *(_DWORD *)(v6 - 12), (int)(this + 1)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EFD90) -------------------------------------------------------- -void __fastcall std::ostringstream::~ostringstream(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[10]; - *Block = &off_51A5CC; - Block[16] = off_51A5E0; - Block[1] = &off_51A2D8; - if ( v2 != Block + 12 ) - operator delete(v2); - Block[1] = &off_51ADD4; - std::locale::~locale((_DWORD **)Block + 8); - *Block = &unk_5158B0; - Block[16] = &off_51B7D0; - std::ios_base::~ios_base((int)(Block + 16)); - operator delete(Block); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A5CC: using guessed type int (*off_51A5CC)(); -// 51A5E0: using guessed type int (*off_51A5E0[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004EFDF0) -------------------------------------------------------- -void __fastcall std::ostringstream::~ostringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 40); - *(_DWORD *)a1 = &off_51A5CC; - *(_DWORD *)(a1 + 64) = off_51A5E0; - *(_DWORD *)(a1 + 4) = &off_51A2D8; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_5158B0; - *(_DWORD *)(a1 + 64) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 64); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A5CC: using guessed type int (*off_51A5CC)(); -// 51A5E0: using guessed type int (*off_51A5E0[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004EFE50) -------------------------------------------------------- -int __thiscall std::ostringstream::~ostringstream(int *this, int *a2) -{ - int v3; // eax - int *Block; // eax - int v5; // eax - int result; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - Block = (int *)this[10]; - this[1] = (int)&off_51A2D8; - if ( Block != this + 12 ) - operator delete(Block); - this[1] = (int)&off_51ADD4; - std::locale::~locale((_DWORD **)this + 8); - v5 = a2[1]; - *this = v5; - result = *(_DWORD *)(v5 - 12); - *(int *)((char *)this + result) = a2[2]; - return result; -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51ADD4: using guessed type int (*off_51ADD4)(); - -//----- (004EFEB0) -------------------------------------------------------- -_DWORD *__thiscall std::ostringstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - char v6; // cl - char v7; // cl - std::ios_base *v9; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v9); - std::ios::_M_cache_locale(v3, (int)(v3 + 27)); - std::ios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - *((_DWORD *)v4 + 28) = v5; - v6 = *((_BYTE *)v3 + 116); - *((_BYTE *)v3 + 116) = *((_BYTE *)v4 + 116); - LOBYTE(v5) = *((_BYTE *)v4 + 117); - *((_BYTE *)v4 + 116) = v6; - v7 = *((_BYTE *)v3 + 117); - *((_BYTE *)v3 + 117) = (_BYTE)v5; - *((_BYTE *)v4 + 117) = v7; - std::stringbuf::operator=(this + 1, (int)(a2 + 1)); - return this; -} -// 4EFEF0: variable 'v9' is possibly undefined - -//----- (004EFF80) -------------------------------------------------------- -_DWORD *__thiscall std::wostringstream::str(int this, int a2) -{ - _DWORD *v2; // esi - unsigned int v4; // eax - - v2 = (_DWORD *)(this + 4); - std::wstring::_M_replace((unsigned int **)(this + 40), 0, *(_DWORD *)(this + 44), *(char **)a2, *(_DWORD *)(a2 + 4)); - v4 = 0; - if ( (*(_BYTE *)(this + 36) & 3) != 0 ) - v4 = *(_DWORD *)(this + 44); - return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); -} - -//----- (004EFFF0) -------------------------------------------------------- -void __thiscall std::wostringstream::swap(volatile signed __int32 **this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // edx - __int16 v6; // cx - std::ios_base *v7; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *((_DWORD *)*this - 3)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v7); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - *((_BYTE *)v4 + 118) = v6; - std::wstringbuf::swap(this + 1, a2 + 1); -} -// 4F0030: variable 'v7' is possibly undefined - -//----- (004F00C0) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2) -{ - int v2; // eax - int v3; // edx - unsigned int v4; // eax - int v5; // ecx - int v6; // eax - _DWORD *v7; // esi - _DWORD *v8; // eax - int v9; // ecx - int v10; // ebx - char *v11; // ecx - int v12; // edx - std::ios_base *v13; // [esp+4h] [ebp-B4h] - const std::locale *v14; // [esp+4h] [ebp-B4h] - struct _Unwind_Exception *lpuexcpta; // [esp+20h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+20h] [ebp-98h] - _DWORD *v17; // [esp+24h] [ebp-94h] - int v19; // [esp+70h] [ebp-48h] - int v20; // [esp+74h] [ebp-44h] - int v21; // [esp+78h] [ebp-40h] - __int64 v22; // [esp+80h] [ebp-38h] - int v23; // [esp+88h] [ebp-30h] - int v24; // [esp+8Ch] [ebp-2Ch] - int v25; // [esp+90h] [ebp-28h] - int v26; // [esp+98h] [ebp-20h] - - v17 = this + 16; - std::ios_base::ios_base(this + 16); - *((_WORD *)this + 90) = 0; - this[44] = 0; - *((_BYTE *)this + 182) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_5158D8; - this[16] = &unk_5158EC; - lpuexcpta = (struct _Unwind_Exception *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_move((int)v17, lpuexcpta, v13); - std::wios::_M_cache_locale(v17, (int)(this + 43)); - v19 = -1; - v20 = -1; - v2 = *((_DWORD *)lpuexcpta + 28); - *this = &off_51A5F4; - *((_DWORD *)lpuexcpta + 28) = 0; - this[44] = v2; - LOWORD(v2) = *((_WORD *)lpuexcpta + 58); - this[46] = 0; - *((_WORD *)this + 90) = v2; - LOBYTE(v2) = *((_BYTE *)lpuexcpta + 118); - this[16] = off_51A608; - v3 = a2[10]; - *((_BYTE *)this + 182) = v2; - lpuexcpt = (struct _Unwind_Exception *)(this + 1); - v4 = a2[2]; - v21 = -1; - LODWORD(v22) = -1; - v23 = -1; - v24 = -1; - v25 = -1; - v26 = -1; - if ( !v4 ) - { - v5 = a2[5]; - if ( !v5 ) - goto LABEL_7; - goto LABEL_3; - } - v19 = (int)(v4 - v3) >> 1; - v20 = (int)(v4 - v3) >> 31; - v21 = (a2[3] - v3) >> 1; - v4 = a2[4]; - v22 = (int)(v4 - v3) >> 1; - v5 = a2[5]; - if ( v5 ) - { -LABEL_3: - v23 = (v5 - v3) >> 1; - v24 = (v5 - v3) >> 31; - v25 = (a2[6] - v5) >> 1; - v26 = (a2[7] - v3) >> 1; - if ( v4 < a2[6] ) - v4 = a2[6]; - } - if ( v4 ) - a2[11] = (int)(v4 - v3) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(lpuexcpt, (std::locale *)(a2 + 1), v14); - v6 = a2[9]; - this[1] = &off_51A318; - this[10] = this + 12; - v7 = a2 + 12; - this[9] = v6; - v8 = (_DWORD *)a2[10]; - if ( v8 == a2 + 12 ) - { - this[12] = a2[12]; - this[13] = a2[13]; - this[14] = a2[14]; - this[15] = a2[15]; - } - else - { - this[10] = v8; - this[12] = a2[12]; - } - this[11] = a2[11]; - a2[10] = v7; - *((_WORD *)a2 + 24) = 0; - v9 = this[10]; - a2[11] = 0; - if ( (v19 & v20) != -1 ) - { - this[2] = v9 + 2 * v19; - this[3] = v9 + 2 * v21; - this[4] = v9 + 2 * v22; - } - if ( (v23 & v24) != -1 ) - { - v10 = v9 + 2 * v23; - this[7] = v9 + 2 * v26; - this[5] = v10; - this[6] = v10 + 2 * v25; - } - v11 = (char *)a2 + 62; - v12 = a2[9] & 0x10; - if ( (a2[9] & 8) != 0 ) - { - a2[2] = v7; - a2[3] = v7; - a2[4] = v7; - if ( v12 ) - { - a2[6] = v7; - a2[5] = v7; - a2[7] = v11; - } - } - else if ( v12 ) - { - a2[6] = v7; - a2[5] = v7; - a2[7] = v11; - a2[2] = v7; - a2[3] = v7; - a2[4] = v7; - } - this[46] = lpuexcpt; -} -// 4F03E9: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4F017F: variable 'v13' is possibly undefined -// 4F0314: variable 'v14' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); -// 51A5F4: using guessed type int (*off_51A5F4)(); -// 51A608: using guessed type int (*off_51A608[2])(); - -//----- (004F0530) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2, int a3) -{ - int v3; // edx - _WORD *v4; // eax - unsigned int v5; // eax - _DWORD *v6; // [esp+20h] [ebp-48h] - _DWORD *v7; // [esp+24h] [ebp-44h] - - v6 = this + 16; - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - *((_BYTE *)this + 182) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_5158D8; - this[16] = &unk_5158EC; - std::wios::init((int)v6, 0); - *this = &off_51A5F4; - this[16] = off_51A608; - this[1] = &off_51AE14; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - v7 = this + 1; - std::locale::locale(this + 8); - v3 = *(_DWORD *)(a2 + 4); - v4 = *(_WORD **)a2; - this[1] = &off_51A318; - this[9] = 0; - this[10] = this + 12; - std::wstring::_M_construct(this + 10, v4, (int)&v4[v3]); - v5 = 0; - this[9] = a3 | 0x10; - if ( (a3 & 3) != 0 ) - v5 = this[11]; - std::wstringbuf::_M_sync(v7, (_DWORD *)this[10], 0, v5); - std::wios::init((int)v6, (int)v7); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5F4: using guessed type int (*off_51A5F4)(); -// 51A608: using guessed type int (*off_51A608[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004F0740) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2) -{ - _DWORD *v2; // [esp+24h] [ebp-44h] - - v2 = this + 16; - std::ios_base::ios_base(this + 16); - this[44] = 0; - *((_WORD *)this + 90) = 0; - *((_BYTE *)this + 182) = 0; - this[46] = 0; - this[47] = 0; - this[48] = 0; - this[49] = 0; - *this = &unk_5158D8; - this[16] = &unk_5158EC; - std::wios::init((int)v2, 0); - *this = &off_51A5F4; - this[16] = off_51A608; - this[1] = &off_51AE14; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[1] = &off_51A318; - this[9] = a2 | 0x10; - this[10] = this + 12; - this[11] = 0; - *((_WORD *)this + 24) = 0; - std::wios::init((int)v2, (int)(this + 1)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5F4: using guessed type int (*off_51A5F4)(); -// 51A608: using guessed type int (*off_51A608[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004F08D0) -------------------------------------------------------- -void __fastcall std::wostringstream::basic_ostringstream(int a1) -{ - int v1; // [esp+24h] [ebp-44h] - - v1 = a1 + 64; - std::ios_base::ios_base((_DWORD *)(a1 + 64)); - *(_DWORD *)(a1 + 176) = 0; - *(_WORD *)(a1 + 180) = 0; - *(_BYTE *)(a1 + 182) = 0; - *(_DWORD *)(a1 + 184) = 0; - *(_DWORD *)(a1 + 188) = 0; - *(_DWORD *)(a1 + 192) = 0; - *(_DWORD *)(a1 + 196) = 0; - *(_DWORD *)a1 = &unk_5158D8; - *(_DWORD *)(a1 + 64) = &unk_5158EC; - std::wios::init(v1, 0); - *(_DWORD *)a1 = &off_51A5F4; - *(_DWORD *)(a1 + 64) = off_51A608; - *(_DWORD *)(a1 + 4) = &off_51AE14; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 0; - *(_DWORD *)(a1 + 16) = 0; - *(_DWORD *)(a1 + 20) = 0; - *(_DWORD *)(a1 + 24) = 0; - *(_DWORD *)(a1 + 28) = 0; - std::locale::locale((_DWORD *)(a1 + 32)); - *(_DWORD *)(a1 + 4) = &off_51A318; - *(_DWORD *)(a1 + 40) = a1 + 48; - *(_DWORD *)(a1 + 36) = 16; - *(_DWORD *)(a1 + 44) = 0; - *(_WORD *)(a1 + 48) = 0; - std::wios::init(v1, a1 + 4); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5F4: using guessed type int (*off_51A5F4)(); -// 51A608: using guessed type int (*off_51A608[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004F0A60) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3) -{ - int v4; // eax - int v5; // eax - int v6; // eax - int v7; // edx - unsigned int v8; // eax - int v9; // edx - int v10; // ecx - int v11; // eax - _DWORD *v12; // esi - _DWORD *v13; // eax - int v14; // ecx - int v15; // ebx - char *v16; // ecx - int v17; // edx - std::ios_base *v18; // [esp+4h] [ebp-A4h] - const std::locale *v19; // [esp+4h] [ebp-A4h] - std::ios_base *v20; // [esp+10h] [ebp-98h] - int *v21; // [esp+10h] [ebp-98h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-94h] - int v24; // [esp+60h] [ebp-48h] - int v25; // [esp+64h] [ebp-44h] - int v26; // [esp+68h] [ebp-40h] - __int64 v27; // [esp+70h] [ebp-38h] - int v28; // [esp+78h] [ebp-30h] - int v29; // [esp+7Ch] [ebp-2Ch] - int v30; // [esp+80h] [ebp-28h] - int v31; // [esp+88h] [ebp-20h] - - v4 = a2[1]; - *this = v4; - lpuexcpt = (struct _Unwind_Exception *)((char *)this + *(_DWORD *)(v4 - 12)); - *(_DWORD *)lpuexcpt = a2[2]; - v20 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); - std::ios_base::_M_move((int)lpuexcpt, v20, v18); - std::wios::_M_cache_locale(lpuexcpt, (int)lpuexcpt + 108); - v5 = *((_DWORD *)v20 + 28); - *((_DWORD *)lpuexcpt + 30) = 0; - *((_DWORD *)v20 + 28) = 0; - *((_DWORD *)lpuexcpt + 28) = v5; - *((_WORD *)lpuexcpt + 58) = *((_WORD *)v20 + 58); - *((_BYTE *)lpuexcpt + 118) = *((_BYTE *)v20 + 118); - v6 = *a2; - v7 = a2[3]; - *this = *a2; - v24 = -1; - *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; - v21 = this + 1; - v25 = -1; - v26 = -1; - LODWORD(v27) = -1; - v28 = -1; - v29 = -1; - v30 = -1; - v31 = -1; - v8 = a3[2]; - v9 = a3[10]; - if ( !v8 ) - { - v10 = a3[5]; - if ( !v10 ) - goto LABEL_7; - goto LABEL_3; - } - v24 = (int)(v8 - v9) >> 1; - v25 = (int)(v8 - v9) >> 31; - v26 = (a3[3] - v9) >> 1; - v8 = a3[4]; - v27 = (int)(v8 - v9) >> 1; - v10 = a3[5]; - if ( v10 ) - { -LABEL_3: - v28 = (v10 - v9) >> 1; - v29 = (v10 - v9) >> 31; - v30 = (a3[6] - v10) >> 1; - v31 = (a3[7] - v9) >> 1; - if ( v8 < a3[6] ) - v8 = a3[6]; - } - if ( v8 ) - a3[11] = (int)(v8 - v9) >> 1; -LABEL_7: - std::wstreambuf::basic_streambuf(v21, (std::locale *)(a3 + 1), v19); - v11 = a3[9]; - this[1] = (int)&off_51A318; - v12 = a3 + 12; - this[9] = v11; - this[10] = (int)(this + 12); - v13 = (_DWORD *)a3[10]; - if ( v13 == a3 + 12 ) - { - this[12] = a3[12]; - this[13] = a3[13]; - this[14] = a3[14]; - this[15] = a3[15]; - } - else - { - this[10] = (int)v13; - this[12] = a3[12]; - } - this[11] = a3[11]; - a3[10] = v12; - *((_WORD *)a3 + 24) = 0; - v14 = this[10]; - a3[11] = 0; - if ( (v24 & v25) != -1 ) - { - this[2] = v14 + 2 * v24; - this[3] = v14 + 2 * v26; - this[4] = v14 + 2 * v27; - } - if ( (v28 & v29) != -1 ) - { - v15 = v14 + 2 * v28; - this[7] = v14 + 2 * v31; - this[5] = v15; - this[6] = v15 + 2 * v30; - } - v16 = (char *)a3 + 62; - v17 = a3[9] & 0x10; - if ( (a3[9] & 8) != 0 ) - { - a3[2] = v12; - a3[3] = v12; - a3[4] = v12; - if ( v17 ) - { - a3[6] = v12; - a3[5] = v12; - a3[7] = v16; - } - } - else if ( v17 ) - { - a3[6] = v12; - a3[5] = v12; - a3[7] = v16; - a3[2] = v12; - a3[3] = v12; - a3[4] = v12; - } - *(int *)((char *)this + *(_DWORD *)(*this - 12) + 120) = (int)v21; -} -// 4F0D37: conditional instruction was optimized away because rax.8 is in (<80000000u|>=FFFFFFFF80000000u) -// 4F0AD2: variable 'v18' is possibly undefined -// 4F0C60: variable 'v19' is possibly undefined -// 51A318: using guessed type int (*off_51A318)(); - -//----- (004F0E70) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3, int a4) -{ - int v5; // eax - _DWORD *v6; // ecx - int v7; // eax - int v8; // edx - int v9; // edx - _WORD *v10; // eax - unsigned int v11; // eax - int *v12; // [esp+24h] [ebp-44h] - - v5 = a2[1]; - *this = v5; - v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); - *v6 = a2[2]; - std::wios::init((int)v6, 0); - v7 = *a2; - v8 = a2[3]; - *this = *a2; - v12 = this + 1; - *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; - this[1] = (int)&off_51AE14; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - v9 = *(_DWORD *)(a3 + 4); - v10 = *(_WORD **)a3; - this[1] = (int)&off_51A318; - this[9] = 0; - this[10] = (int)(this + 12); - std::wstring::_M_construct(this + 10, v10, (int)&v10[v9]); - v11 = 0; - this[9] = a4 | 0x10; - if ( (a4 & 3) != 0 ) - v11 = this[11]; - std::wstringbuf::_M_sync(v12, (_DWORD *)this[10], 0, v11); - std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)v12); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004F1030) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3) -{ - int v3; // eax - _DWORD *v4; // ecx - int v5; // eax - int v6; // edx - int v7; // eax - - v3 = a2[1]; - *this = v3; - v4 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); - *v4 = a2[2]; - std::wios::init((int)v4, 0); - v5 = *a2; - v6 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; - this[1] = (int)&off_51AE14; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[11] = 0; - this[9] = a3 | 0x10; - this[10] = (int)(this + 12); - *((_WORD *)this + 24) = 0; - v7 = *this; - this[1] = (int)&off_51A318; - std::wios::init((int)this + *(_DWORD *)(v7 - 12), (int)(this + 1)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004F1170) -------------------------------------------------------- -void __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2) -{ - int v2; // eax - _DWORD *v3; // ecx - int v4; // eax - int v5; // edx - int v6; // eax - - v2 = a2[1]; - *this = v2; - v3 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); - *v3 = a2[2]; - std::wios::init((int)v3, 0); - v4 = *a2; - v5 = a2[3]; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; - this[1] = (int)&off_51AE14; - this[2] = 0; - this[3] = 0; - this[4] = 0; - this[5] = 0; - this[6] = 0; - this[7] = 0; - std::locale::locale(this + 8); - this[1] = (int)&off_51A318; - this[10] = (int)(this + 12); - *((_WORD *)this + 24) = 0; - v6 = *this; - this[9] = 16; - this[11] = 0; - std::wios::init((int)this + *(_DWORD *)(v6 - 12), (int)(this + 1)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004F12B0) -------------------------------------------------------- -void __fastcall std::wostringstream::~wostringstream(_DWORD *Block) -{ - _DWORD *v2; // eax - - v2 = (_DWORD *)Block[10]; - *Block = &off_51A5F4; - Block[16] = off_51A608; - Block[1] = &off_51A318; - if ( v2 != Block + 12 ) - operator delete(v2); - Block[1] = &off_51AE14; - std::locale::~locale((_DWORD **)Block + 8); - *Block = &unk_5158D8; - Block[16] = &off_51B7E0; - std::ios_base::~ios_base((int)(Block + 16)); - operator delete(Block); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5F4: using guessed type int (*off_51A5F4)(); -// 51A608: using guessed type int (*off_51A608[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004F1310) -------------------------------------------------------- -void __fastcall std::wostringstream::~wostringstream(int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 40); - *(_DWORD *)a1 = &off_51A5F4; - *(_DWORD *)(a1 + 64) = off_51A608; - *(_DWORD *)(a1 + 4) = &off_51A318; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_5158D8; - *(_DWORD *)(a1 + 64) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 64); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5F4: using guessed type int (*off_51A5F4)(); -// 51A608: using guessed type int (*off_51A608[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004F1370) -------------------------------------------------------- -int __thiscall std::wostringstream::~wostringstream(int *this, int *a2) -{ - int v3; // eax - int *Block; // eax - int v5; // eax - int result; // eax - - v3 = *a2; - *this = *a2; - *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; - Block = (int *)this[10]; - this[1] = (int)&off_51A318; - if ( Block != this + 12 ) - operator delete(Block); - this[1] = (int)&off_51AE14; - std::locale::~locale((_DWORD **)this + 8); - v5 = a2[1]; - *this = v5; - result = *(_DWORD *)(v5 - 12); - *(int *)((char *)this + result) = a2[2]; - return result; -} -// 51A318: using guessed type int (*off_51A318)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004F13D0) -------------------------------------------------------- -_DWORD *__thiscall std::wostringstream::operator=(_DWORD *this, _DWORD *a2) -{ - std::ios_base **v3; // esi - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - __int16 v6; // cx - std::ios_base *v8; // [esp+4h] [ebp-68h] - - v3 = (std::ios_base **)((char *)this + *(_DWORD *)(*this - 12)); - v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); - std::ios_base::_M_swap(v3, v4, v8); - std::wios::_M_cache_locale(v3, (int)(v3 + 27)); - std::wios::_M_cache_locale(v4, (int)v4 + 108); - v5 = v3[28]; - v3[28] = (std::ios_base *)*((_DWORD *)v4 + 28); - v6 = *((_WORD *)v4 + 58); - *((_DWORD *)v4 + 28) = v5; - LOWORD(v5) = *((_WORD *)v3 + 58); - *((_WORD *)v3 + 58) = v6; - LOBYTE(v6) = *((_BYTE *)v3 + 118); - *((_WORD *)v4 + 58) = (_WORD)v5; - *((_BYTE *)v3 + 118) = *((_BYTE *)v4 + 118); - *((_BYTE *)v4 + 118) = v6; - std::wstringbuf::operator=(this + 1, (int)(a2 + 1)); - return this; -} -// 4F1410: variable 'v8' is possibly undefined - -//----- (004F14A0) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51A618; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004F14D0) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A618; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004F1570) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51A618; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004F15A0) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A618; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004F1640) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51A618; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F167E: variable 'lpfctx' is possibly undefined -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004F16A0) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A618; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F16DE: variable 'lpfctx' is possibly undefined -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004F1700) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A618; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F173E: variable 'lpfctx' is possibly undefined -// 51A618: using guessed type int (*off_51A618)(); - -//----- (004F1760) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51A634; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004F1790) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A634; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004F1830) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51A634; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004F1860) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A634; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004F1900) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51A634; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F193E: variable 'lpfctx' is possibly undefined -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004F1960) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A634; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F199E: variable 'lpfctx' is possibly undefined -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004F19C0) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A634; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F19FE: variable 'lpfctx' is possibly undefined -// 51A634: using guessed type int (*off_51A634)(); - -//----- (004F1A20) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_51A650; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004F1AC0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A650; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004F1B60) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_51A650; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004F1C00) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A650; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004F1CA0) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51A650; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F1CDE: variable 'lpfctx' is possibly undefined -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004F1D00) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A650; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F1D3E: variable 'lpfctx' is possibly undefined -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004F1D60) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A650; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F1D9E: variable 'lpfctx' is possibly undefined -// 51A650: using guessed type int (*off_51A650)(); - -//----- (004F1DC0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_51A66C; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004F1E60) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A66C; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004F1F00) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_51A66C; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004F1FA0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A66C; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004F2040) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51A66C; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F207E: variable 'lpfctx' is possibly undefined -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004F20A0) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A66C; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F20DE: variable 'lpfctx' is possibly undefined -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004F2100) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51A66C; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F213E: variable 'lpfctx' is possibly undefined -// 51A66C: using guessed type int (*off_51A66C)(); - -//----- (004F2160) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) -{ - _DWORD *v2; // eax - char *v3; // esi - int i; // eax - char *v5; // esi - int j; // eax - _DWORD *result; // eax - _DWORD *v8; // [esp+1Ch] [ebp-10h] - - v2 = (_DWORD *)this[2]; - if ( !v2 ) - { - v8 = this; - v2 = operator new(0x68u); - this = v8; - v2[1] = 0; - *v2 = &off_51AF60; - v2[2] = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[5] = 0; - v2[6] = 0; - v2[7] = 0; - v2[8] = 0; - *((_WORD *)v2 + 18) = 0; - *((_BYTE *)v2 + 100) = 0; - v8[2] = v2; - } - v2[2] = &unk_5110AC; - v3 = std::__num_base::_S_atoms_out[0]; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - *((_BYTE *)v2 + 36) = 46; - *(_BYTE *)(this[2] + 37) = 44; - for ( i = 0; i != 36; ++i ) - *(_BYTE *)(this[2] + i + 38) = v3[i]; - v5 = std::__num_base::_S_atoms_in[0]; - for ( j = 0; j != 26; ++j ) - *(_BYTE *)(this[2] + j + 74) = v5[j]; - result = (_DWORD *)this[2]; - result[5] = "true"; - result[6] = 4; - result[7] = "false"; - result[8] = 5; - return result; -} -// 50C480: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 50C484: using guessed type char *std::__num_base::_S_atoms_out[2]; -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (004F2260) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A688; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2300) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_51A688; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2390) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A688; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2430) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A688; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F24D0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_51A688; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2560) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A688; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2600) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A688; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4F2660: variable 'lpfctx' is possibly undefined -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F26D0) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A688; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F2730: variable 'lpfctx' is possibly undefined -// 51A688: using guessed type int (__cdecl *off_51A688)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2780) -------------------------------------------------------- -int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) -{ - _DWORD *v2; // edx - char *v3; // ebx - int v4; // eax - char *v5; // ebx - int result; // eax - _DWORD *v7; // eax - - v2 = (_DWORD *)this[2]; - if ( !v2 ) - { - v7 = operator new(0xA8u); - v7[1] = 0; - v2 = v7; - *v7 = &off_51AF70; - v7[2] = 0; - v7[3] = 0; - *((_BYTE *)v7 + 16) = 0; - v7[5] = 0; - v7[6] = 0; - v7[7] = 0; - v7[8] = 0; - v7[9] = 0; - *((_BYTE *)v7 + 164) = 0; - this[2] = v7; - } - v2[2] = &unk_5110AC; - v3 = std::__num_base::_S_atoms_out[0]; - v4 = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[9] = 2883630; - do - { - *((_WORD *)v2 + v4 + 20) = v3[v4]; - ++v4; - } - while ( v4 != 36 ); - v5 = std::__num_base::_S_atoms_in[0]; - for ( result = 0; result != 26; ++result ) - *((_WORD *)v2 + result + 56) = v5[result]; - v2[5] = &off_5110B8; - v2[6] = 4; - v2[7] = &off_5110C2; - v2[8] = 5; - return result; -} -// 50C480: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 50C484: using guessed type char *std::__num_base::_S_atoms_out[2]; -// 5110B8: using guessed type void *off_5110B8; -// 5110C2: using guessed type void *off_5110C2; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (004F2870) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A6AC; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2910) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_51A6AC; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F29A0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A6AC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2A40) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51A6AC; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2AE0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_51A6AC; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2B70) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51A6AC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2C10) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A6AC; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4F2C70: variable 'lpfctx' is possibly undefined -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2CE0) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - int v1; // ecx - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - v1 = a1[2]; - *a1 = &off_51A6AC; - if ( v1 ) - (*(void (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F2D40: variable 'lpfctx' is possibly undefined -// 51A6AC: using guessed type int (__cdecl *off_51A6AC)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F2D90) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A6D0; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004F2DB0) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A6D0; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004F2DD0) -------------------------------------------------------- -void __fastcall std::time_get>::~time_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51A6D0; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F2DDC: variable 'Blocka' is possibly undefined -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004F2DF0) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A6D0; - std::locale::facet::~facet(a1); -} -// 4F2DF0: variable 'v1' is possibly undefined -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004F2E00) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A6D0; - std::locale::facet::~facet(a1); -} -// 4F2E00: variable 'v1' is possibly undefined -// 51A6D0: using guessed type int (*off_51A6D0)(); - -//----- (004F2E10) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A6FC; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004F2E30) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A6FC; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004F2E50) -------------------------------------------------------- -void __fastcall std::time_get>::~time_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51A6FC; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F2E5C: variable 'Blocka' is possibly undefined -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004F2E70) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A6FC; - std::locale::facet::~facet(a1); -} -// 4F2E70: variable 'v1' is possibly undefined -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004F2E80) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A6FC; - std::locale::facet::~facet(a1); -} -// 4F2E80: variable 'v1' is possibly undefined -// 51A6FC: using guessed type int (*off_51A6FC)(); - -//----- (004F2E90) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A728; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A728: using guessed type int (*off_51A728)(); - -//----- (004F2EB0) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A728; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A728: using guessed type int (*off_51A728)(); - -//----- (004F2ED0) -------------------------------------------------------- -void __fastcall std::money_get>::~money_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51A728; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F2EDC: variable 'Blocka' is possibly undefined -// 51A728: using guessed type int (*off_51A728)(); - -//----- (004F2EF0) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A728; - std::locale::facet::~facet(a1); -} -// 4F2EF0: variable 'v1' is possibly undefined -// 51A728: using guessed type int (*off_51A728)(); - -//----- (004F2F00) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A728; - std::locale::facet::~facet(a1); -} -// 4F2F00: variable 'v1' is possibly undefined -// 51A728: using guessed type int (*off_51A728)(); - -//----- (004F2F10) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A740; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A740: using guessed type int (*off_51A740)(); - -//----- (004F2F30) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A740; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A740: using guessed type int (*off_51A740)(); - -//----- (004F2F50) -------------------------------------------------------- -void __fastcall std::money_get>::~money_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51A740; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F2F5C: variable 'Blocka' is possibly undefined -// 51A740: using guessed type int (*off_51A740)(); - -//----- (004F2F70) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A740; - std::locale::facet::~facet(a1); -} -// 4F2F70: variable 'v1' is possibly undefined -// 51A740: using guessed type int (*off_51A740)(); - -//----- (004F2F80) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A740; - std::locale::facet::~facet(a1); -} -// 4F2F80: variable 'v1' is possibly undefined -// 51A740: using guessed type int (*off_51A740)(); - -//----- (004F2F90) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A758; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A758: using guessed type int (*off_51A758)(); - -//----- (004F2FB0) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A758; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A758: using guessed type int (*off_51A758)(); - -//----- (004F2FD0) -------------------------------------------------------- -void __fastcall std::money_put>::~money_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51A758; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F2FDC: variable 'Blocka' is possibly undefined -// 51A758: using guessed type int (*off_51A758)(); - -//----- (004F2FF0) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A758; - std::locale::facet::~facet(a1); -} -// 4F2FF0: variable 'v1' is possibly undefined -// 51A758: using guessed type int (*off_51A758)(); - -//----- (004F3000) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A758; - std::locale::facet::~facet(a1); -} -// 4F3000: variable 'v1' is possibly undefined -// 51A758: using guessed type int (*off_51A758)(); - -//----- (004F3010) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A770; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A770: using guessed type int (*off_51A770)(); - -//----- (004F3030) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51A770; - result = a2 != 0; - this[1] = result; - return result; -} -// 51A770: using guessed type int (*off_51A770)(); - -//----- (004F3050) -------------------------------------------------------- -void __fastcall std::money_put>::~money_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51A770; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F305C: variable 'Blocka' is possibly undefined -// 51A770: using guessed type int (*off_51A770)(); - -//----- (004F3070) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A770; - std::locale::facet::~facet(a1); -} -// 4F3070: variable 'v1' is possibly undefined -// 51A770: using guessed type int (*off_51A770)(); - -//----- (004F3080) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A770; - std::locale::facet::~facet(a1); -} -// 4F3080: variable 'v1' is possibly undefined -// 51A770: using guessed type int (*off_51A770)(); - -//----- (004F3090) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B28C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F309C: variable 'Blocka' is possibly undefined - -//----- (004F30B0) -------------------------------------------------------- -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B28C; - std::locale::facet::~facet(a1); -} -// 4F30B0: variable 'v1' is possibly undefined - -//----- (004F30C0) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B2B8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F30CC: variable 'Blocka' is possibly undefined - -//----- (004F30E0) -------------------------------------------------------- -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B2B8; - std::locale::facet::~facet(a1); -} -// 4F30E0: variable 'v1' is possibly undefined - -//----- (004F30F0) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B2E4; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F30FC: variable 'Blocka' is possibly undefined - -//----- (004F3110) -------------------------------------------------------- -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B2E4; - std::locale::facet::~facet(a1); -} -// 4F3110: variable 'v1' is possibly undefined - -//----- (004F3120) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &unk_51B310; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F312C: variable 'Blocka' is possibly undefined - -//----- (004F3140) -------------------------------------------------------- -void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &unk_51B310; - std::locale::facet::~facet(a1); -} -// 4F3140: variable 'v1' is possibly undefined - -//----- (004F3150) -------------------------------------------------------- -int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51B538; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51B538: using guessed type int (__cdecl *off_51B538)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F3180) -------------------------------------------------------- -void __thiscall std::codecvt::codecvt(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B538; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B538: using guessed type int (__cdecl *off_51B538)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F3230) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B538; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_51B33C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4F3295: variable 'lpfctx' is possibly undefined -// 51B538: using guessed type int (__cdecl *off_51B538)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F3310) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B538; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_51B33C; - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F3375: variable 'lpfctx' is possibly undefined -// 51B538: using guessed type int (__cdecl *off_51B538)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F33C0) -------------------------------------------------------- -int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51B564; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51B564: using guessed type int (__cdecl *off_51B564)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F33F0) -------------------------------------------------------- -void __thiscall std::codecvt::codecvt(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B564; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B564: using guessed type int (__cdecl *off_51B564)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F34A0) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B564; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_51B368; - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(a1); -} -// 4F3505: variable 'lpfctx' is possibly undefined -// 51B564: using guessed type int (__cdecl *off_51B564)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F3580) -------------------------------------------------------- -void __fastcall std::codecvt::~codecvt(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B564; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - *a1 = &unk_51B368; - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F35E5: variable 'lpfctx' is possibly undefined -// 51B564: using guessed type int (__cdecl *off_51B564)(int, int, int, int, int, struct _Unwind_Exception *lpuexcpt, int, int, int); - -//----- (004F3630) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51B590; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004F3660) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B590; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004F3700) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51B590; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004F3730) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B590; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004F37D0) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B590; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F380E: variable 'lpfctx' is possibly undefined -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004F3830) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B590; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F386E: variable 'lpfctx' is possibly undefined -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004F3890) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B590; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F38CE: variable 'lpfctx' is possibly undefined -// 51B590: using guessed type int (*off_51B590)(); - -//----- (004F38F0) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51B5AC; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004F3920) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B5AC; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004F39C0) -------------------------------------------------------- -int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) -{ - int result; // eax - - *this = &off_51B5AC; - this[1] = a3 != 0; - result = std::locale::facet::_S_clone_c_locale(); - this[2] = result; - return result; -} -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004F39F0) -------------------------------------------------------- -void __thiscall std::collate::collate(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B5AC; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004F3A90) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B5AC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F3ACE: variable 'lpfctx' is possibly undefined -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004F3AF0) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B5AC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F3B2E: variable 'lpfctx' is possibly undefined -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004F3B50) -------------------------------------------------------- -void __fastcall std::collate::~collate(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B5AC; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F3B8E: variable 'lpfctx' is possibly undefined -// 51B5AC: using guessed type int (*off_51B5AC)(); - -//----- (004F3BB0) -------------------------------------------------------- -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B5C8; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B5C8: using guessed type int (*off_51B5C8)(); - -//----- (004F3BD0) -------------------------------------------------------- -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B5C8; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B5C8: using guessed type int (*off_51B5C8)(); - -//----- (004F3BF0) -------------------------------------------------------- -void __fastcall std::num_get>::~num_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B5C8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F3BFC: variable 'Blocka' is possibly undefined -// 51B5C8: using guessed type int (*off_51B5C8)(); - -//----- (004F3C10) -------------------------------------------------------- -void __cdecl std::num_get>::~num_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B5C8; - std::locale::facet::~facet(a1); -} -// 4F3C10: variable 'v1' is possibly undefined -// 51B5C8: using guessed type int (*off_51B5C8)(); - -//----- (004F3C20) -------------------------------------------------------- -void __cdecl std::num_get>::~num_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B5C8; - std::locale::facet::~facet(a1); -} -// 4F3C20: variable 'v1' is possibly undefined -// 51B5C8: using guessed type int (*off_51B5C8)(); - -//----- (004F3C30) -------------------------------------------------------- -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B604; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B604: using guessed type int (*off_51B604)(); - -//----- (004F3C50) -------------------------------------------------------- -BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B604; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B604: using guessed type int (*off_51B604)(); - -//----- (004F3C70) -------------------------------------------------------- -void __fastcall std::num_get>::~num_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B604; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F3C7C: variable 'Blocka' is possibly undefined -// 51B604: using guessed type int (*off_51B604)(); - -//----- (004F3C90) -------------------------------------------------------- -void __cdecl std::num_get>::~num_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B604; - std::locale::facet::~facet(a1); -} -// 4F3C90: variable 'v1' is possibly undefined -// 51B604: using guessed type int (*off_51B604)(); - -//----- (004F3CA0) -------------------------------------------------------- -void __cdecl std::num_get>::~num_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B604; - std::locale::facet::~facet(a1); -} -// 4F3CA0: variable 'v1' is possibly undefined -// 51B604: using guessed type int (*off_51B604)(); - -//----- (004F3CB0) -------------------------------------------------------- -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B640; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B640: using guessed type int (*off_51B640)(); - -//----- (004F3CD0) -------------------------------------------------------- -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B640; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B640: using guessed type int (*off_51B640)(); - -//----- (004F3CF0) -------------------------------------------------------- -void __fastcall std::num_put>::~num_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B640; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F3CFC: variable 'Blocka' is possibly undefined -// 51B640: using guessed type int (*off_51B640)(); - -//----- (004F3D10) -------------------------------------------------------- -void __cdecl std::num_put>::~num_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B640; - std::locale::facet::~facet(a1); -} -// 4F3D10: variable 'v1' is possibly undefined -// 51B640: using guessed type int (*off_51B640)(); - -//----- (004F3D20) -------------------------------------------------------- -void __cdecl std::num_put>::~num_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B640; - std::locale::facet::~facet(a1); -} -// 4F3D20: variable 'v1' is possibly undefined -// 51B640: using guessed type int (*off_51B640)(); - -//----- (004F3D30) -------------------------------------------------------- -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B670; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B670: using guessed type int (*off_51B670)(); - -//----- (004F3D50) -------------------------------------------------------- -BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B670; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B670: using guessed type int (*off_51B670)(); - -//----- (004F3D70) -------------------------------------------------------- -void __fastcall std::num_put>::~num_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B670; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F3D7C: variable 'Blocka' is possibly undefined -// 51B670: using guessed type int (*off_51B670)(); - -//----- (004F3D90) -------------------------------------------------------- -void __cdecl std::num_put>::~num_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B670; - std::locale::facet::~facet(a1); -} -// 4F3D90: variable 'v1' is possibly undefined -// 51B670: using guessed type int (*off_51B670)(); - -//----- (004F3DA0) -------------------------------------------------------- -void __cdecl std::num_put>::~num_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B670; - std::locale::facet::~facet(a1); -} -// 4F3DA0: variable 'v1' is possibly undefined -// 51B670: using guessed type int (*off_51B670)(); - -//----- (004F3DB0) -------------------------------------------------------- -char *__thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( - _DWORD *this, - int a2) -{ - char v2; // al - struct _Unwind_Exception *v3; // edx - int v4; // eax - char v6; // [esp+1Bh] [ebp-4Dh] - struct _Unwind_Exception *v7; // [esp+1Ch] [ebp-4Ch] - struct _Unwind_Exception *Block; // [esp+24h] [ebp-44h] - void *Blocka; // [esp+24h] [ebp-44h] - char *Blockb; // [esp+24h] [ebp-44h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-40h] - - Block = (struct _Unwind_Exception *)this[2]; - v7 = (struct _Unwind_Exception *)(this + 1); - lpuexcpt = (struct _Unwind_Exception *)(this + 1); - v2 = 1; - while ( Block ) - { - v2 = std::operator<(a2, (int)Block + 16); - v3 = (struct _Unwind_Exception *)*((_DWORD *)Block + 3); - if ( v2 ) - v3 = (struct _Unwind_Exception *)*((_DWORD *)Block + 2); - lpuexcpt = Block; - Block = v3; - } - if ( v2 ) - { - if ( (struct _Unwind_Exception *)this[3] == lpuexcpt ) - goto LABEL_12; - v4 = std::_Rb_tree_decrement(lpuexcpt); - } - else - { - v4 = (int)lpuexcpt; - } - Blocka = (void *)v4; - if ( !(unsigned __int8)std::operator<(v4 + 16, a2) ) - return (char *)Blocka; -LABEL_12: - v6 = 1; - if ( v7 != lpuexcpt ) - v6 = std::operator<(a2, (int)lpuexcpt + 16); - Blockb = (char *)operator new(0x28u); - std::string::basic_string(Blockb + 16, a2); - std::_Rb_tree_insert_and_rebalance(v6, Blockb, lpuexcpt, v7); - ++this[5]; - return Blockb; -} - -//----- (004F3F5C) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( - _DWORD *this, - int a2, - _DWORD *a3, - _DWORD *a4) -{ - char v4; // al - _DWORD *v6; // ebx - _DWORD *result; // eax - - v4 = 1; - v6 = this + 1; - if ( !a2 && a3 != v6 ) - v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); - std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); - result = a4; - ++this[5]; - return result; -} - -//----- (004F3FB8) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 4F4029: conditional instruction was optimized away because zf.1==0 - -//----- (004F4038) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - _DWORD *result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return (_DWORD *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return (_DWORD *)v6; - } - return (_DWORD *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - result = (_DWORD *)this[3]; - if ( result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return (_DWORD *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - result = a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (004F4134) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( - _DWORD *this, - int a2) -{ - _DWORD *v2; // esi - _DWORD *v3; // ebx - _DWORD *i; // edi - char v5; // al - _DWORD *v6; // edx - - v2 = this + 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v6 ) - { - v5 = std::operator<((int)(i + 4), a2); - v6 = (_DWORD *)i[3]; - if ( !v5 ) - v6 = (_DWORD *)i[2]; - if ( !v5 ) - v3 = i; - } - if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) - return v2; - return v3; -} - -//----- (004F4194) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - _DWORD *this, - int a2, - _DWORD *a3, - _DWORD *a4) -{ - char v4; // al - _DWORD *v6; // ebx - _DWORD *result; // eax - - v4 = 1; - v6 = this + 1; - if ( !a2 && a3 != v6 ) - v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); - std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); - result = a4; - ++this[5]; - return result; -} - -//----- (004F41F0) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( - _DWORD *this, - _DWORD *a2) -{ - void **v3; // ebx - int insert_unique_pos; // eax - _DWORD *v5; // edx - int v7; // [esp+1Ch] [ebp-1Ch] - - v3 = (void **)operator new(0x40u); - std::string::basic_string(v3 + 4, a2); - std::string::basic_string(v3 + 10, a2 + 6); - insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - (int)(v3 + 4)); - if ( v5 ) - return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - this, - insert_unique_pos, - v5, - v3); - v7 = insert_unique_pos; - std::string::_M_dispose(v3 + 10); - std::string::_M_dispose(v3 + 4); - operator delete(v3); - return (_DWORD *)v7; -} -// 4F423F: variable 'v5' is possibly undefined - -//----- (004F4288) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 4F42F9: conditional instruction was optimized away because zf.1==0 - -//----- (004F4308) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - _DWORD *result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return (_DWORD *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return (_DWORD *)v6; - } - return (_DWORD *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - result = (_DWORD *)this[3]; - if ( result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return (_DWORD *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - result = a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (004F4404) -------------------------------------------------------- -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (004F440C) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 4F447D: conditional instruction was optimized away because zf.1==0 - -//----- (004F448C) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - _DWORD *result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return (_DWORD *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return (_DWORD *)v6; - } - return (_DWORD *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - result = (_DWORD *)this[3]; - if ( result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return (_DWORD *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - result = a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (004F4588) -------------------------------------------------------- -void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (004F4590) -------------------------------------------------------- -int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 4F4601: conditional instruction was optimized away because zf.1==0 - -//----- (004F4610) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - _DWORD *result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return (_DWORD *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return (_DWORD *)v6; - } - return (_DWORD *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - } - result = (_DWORD *)this[3]; - if ( result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return (_DWORD *)std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( - this, - a3); - result = a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (004F470C) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 4F477D: conditional instruction was optimized away because zf.1==0 - -//----- (004F478C) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - _DWORD *result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return (_DWORD *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return (_DWORD *)v6; - } - return (_DWORD *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - result = (_DWORD *)this[3]; - if ( result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return (_DWORD *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - result = a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (004F4888) -------------------------------------------------------- -int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - _DWORD *this, - int a2) -{ - char v2; // al - _DWORD *v3; // ebx - _DWORD *i; // esi - _DWORD *v5; // edx - int result; // eax - int v7; // esi - bool v8; // zf - _DWORD *v9; // [esp+1Ch] [ebp-1Ch] - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v9 = this; - v2 = std::operator<(a2, (int)(i + 4)); - v5 = (_DWORD *)i[3]; - this = v9; - if ( v2 ) - v5 = (_DWORD *)i[2]; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - v7 = std::_Rb_tree_decrement(v3); - } - else - { - v7 = (int)v3; - } - v8 = (unsigned __int8)std::operator<(v7 + 16, a2) == 0; - result = v7; - if ( !v8 ) - return 0; - return result; -} -// 4F48F9: conditional instruction was optimized away because zf.1==0 - -//----- (004F4908) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int a3) -{ - _DWORD *result; // eax - int v5; // [esp+1Ch] [ebp-1Ch] - int v6; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) - return 0; - return (_DWORD *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) - { - if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) - return a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v6 = std::_Rb_tree_increment((int)a2); - if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) - { - if ( !a2[3] ) - return 0; - return (_DWORD *)v6; - } - return (_DWORD *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - } - result = (_DWORD *)this[3]; - if ( result == a2 ) - return result; - v5 = std::_Rb_tree_decrement(a2); - if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) - return (_DWORD *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( - this, - a3); - result = a2; - if ( !*(_DWORD *)(v5 + 12) ) - return 0; - return result; -} - -//----- (004F4A04) -------------------------------------------------------- -void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( - int a1) -{ - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(_DWORD *)(a1 + 8)); -} - -//----- (004F4A0C) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( - _DWORD *this, - _DWORD *a2) -{ - bool v2; // dl - _DWORD *v3; // ebx - _DWORD *i; // eax - _DWORD *v5; // edi - _DWORD *result; // eax - - v2 = 1; - v3 = this + 1; - for ( i = (_DWORD *)this[2]; i; i = v5 ) - { - v3 = i; - v5 = (_DWORD *)i[3]; - if ( i[4] > *a2 ) - v5 = (_DWORD *)i[2]; - v2 = i[4] > *a2; - } - if ( v2 ) - { - if ( (_DWORD *)this[3] == v3 ) - return 0; - result = (_DWORD *)std::_Rb_tree_decrement(v3); - } - else - { - result = v3; - } - if ( result[4] < *a2 ) - return 0; - return result; -} - -//----- (004F4A6C) -------------------------------------------------------- -_DWORD *__thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( - _DWORD *this, - _DWORD *a2, - int *a3) -{ - int v3; // edi - _DWORD *result; // eax - int v5; // eax - int v6; // edx - _DWORD *v7; // [esp+1Ch] [ebp-1Ch] - _DWORD *v8; // [esp+1Ch] [ebp-1Ch] - - if ( a2 == this + 1 ) - { - if ( this[5] && *a3 > *(_DWORD *)(this[4] + 16) ) - return 0; - return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( - this, - a3); - } - v3 = *a3; - if ( a2[4] <= *a3 ) - { - if ( a2[4] >= *a3 ) - return a2; - if ( (_DWORD *)this[4] == a2 ) - return 0; - v8 = this; - result = (_DWORD *)std::_Rb_tree_increment((int)a2); - this = v8; - if ( v3 < result[4] ) - { - if ( !a2[3] ) - return 0; - return result; - } - return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( - this, - a3); - } - result = (_DWORD *)this[3]; - if ( result == a2 ) - return result; - v7 = this; - v5 = std::_Rb_tree_decrement(a2); - this = v7; - v6 = v5; - if ( *(_DWORD *)(v5 + 16) >= v3 ) - return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( - this, - a3); - result = a2; - if ( !*(_DWORD *)(v6 + 12) ) - return 0; - return result; -} - -//----- (004F4B10) -------------------------------------------------------- -void __fastcall std::bad_cast::~bad_cast(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51B6A0; - std::exception::~exception(Block); - operator delete(a1); -} -// 4F4B1C: variable 'Block' is possibly undefined -// 51B6A0: using guessed type void (__cdecl *off_51B6A0)(std::bad_cast *__hidden this); - -//----- (004F4B40) -------------------------------------------------------- -void __cdecl std::bad_cast::~bad_cast(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B6A0; - std::exception::~exception(a1); -} -// 4F4B40: variable 'v1' is possibly undefined -// 51B6A0: using guessed type void (__cdecl *off_51B6A0)(std::bad_cast *__hidden this); - -//----- (004F4B50) -------------------------------------------------------- -int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, unsigned int this, char a3, bool a4) -{ - unsigned int v4; // eax - _DWORD *v5; // eax - int v6; // edx - int v7; // esi - int *v8; // ebx - int *v9; // eax - int v10; // edi - int v11; // ebp - char *v12; // edx - int v13; // eax - int *v17; // [esp+1Ch] [ebp-60h] - int v18; // [esp+20h] [ebp-5Ch] - int v19; // [esp+24h] [ebp-58h] - int v20; // [esp+28h] [ebp-54h] - - if ( this > 0x7FFFFFFE ) - { - v12 = "ios_base::_M_grow_words is not valid"; - } - else - { - v17 = a1 + 9; - if ( (int)this <= 7 ) - { - v18 = 8; -LABEL_21: - a1[26] = v17; - a1[25] = v18; - return &v17[2 * this]; - } - v4 = this + 1; - v18 = this + 1; - if ( (int)(this + 1) > 0xFFFFFFF ) - __cxa_throw_bad_array_new_length(); - v20 = 8 * v4; - v19 = operator new[](8 * v4); - if ( v19 ) - { - v5 = (_DWORD *)v19; - v6 = v19; - do - { - *v5 = 0; - v5 += 2; - *(v5 - 1) = 0; - } - while ( (_DWORD *)(v19 + v20) != v5 ); - v7 = a1[25]; - v8 = (int *)a1[26]; - v9 = v8; - if ( v7 > 0 ) - { - do - { - v10 = *v9; - v11 = v9[1]; - v9 += 2; - v6 += 8; - *(_DWORD *)(v6 - 8) = v10; - *(_DWORD *)(v6 - 4) = v11; - } - while ( &v8[2 * v7] != v9 ); - } - if ( v17 != v8 && v8 ) - operator delete[](v8); - v17 = (int *)v19; - goto LABEL_21; - } - v12 = "ios_base::_M_grow_words allocation failed"; - } - v13 = a1[5] | 1; - a1[5] = v13; - if ( (a1[4] & v13) != 0 ) - std::__throw_ios_failure(v12); - if ( a3 ) - a1[8] = 0; - else - a1[7] = 0; - return a1 + 7; -} - -//----- (004F4D50) -------------------------------------------------------- -int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this) -{ - FILE *v3; // eax - FILE *v4; // eax - FILE *v5; // eax - FILE *v6; // eax - FILE *v7; // eax - FILE *v8; // eax - FILE *(__cdecl *v9)(unsigned int); // [esp+14h] [ebp-54h] - unsigned __int8 lpuexcpt; // [esp+18h] [ebp-50h] - - lpuexcpt = std::ios_base::Init::_S_synced_with_stdio; - if ( (_BYTE)this != 1 && std::ios_base::Init::_S_synced_with_stdio ) - { - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 1u) ) - goto LABEL_6; - } - else if ( std::ios_base::Init::_S_refcount++ ) - { -LABEL_6: - std::ios_base::Init::_S_synced_with_stdio = 0; - __gnu_internal::buf_cout_sync = &off_51ADD4; - std::locale::~locale((_DWORD **)&dword_50C07C); - __gnu_internal::buf_cin_sync = &off_51ADD4; - std::locale::~locale((_DWORD **)&dword_50BFFC); - __gnu_internal::buf_cerr_sync = &off_51ADD4; - std::locale::~locale((_DWORD **)&dword_50C03C); - __gnu_internal::buf_wcout_sync = &off_51AE14; - std::locale::~locale((_DWORD **)&dword_50C13C); - __gnu_internal::buf_wcin_sync = &off_51AE14; - std::locale::~locale((_DWORD **)&dword_50C0BC); - __gnu_internal::buf_wcerr_sync = &off_51AE14; - std::locale::~locale((_DWORD **)&dword_50C0FC); - v9 = ___acrt_iob_func; - v3 = ___acrt_iob_func(1u); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cout, v3, 16, 512); - v4 = v9(0); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cin, v4, 8, 512); - v5 = v9(2u); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cerr, v5, 16, 512); - std::ios::rdbuf(dword_50C8A4, (int)__gnu_internal::buf_cout); - std::ios::rdbuf(dword_50C6C8, (int)__gnu_internal::buf_cin); - std::ios::rdbuf(&dword_50C764, (int)__gnu_internal::buf_cerr); - std::ios::rdbuf(dword_50C804, (int)__gnu_internal::buf_cerr); - v6 = v9(1u); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcout, v6, 16, 512); - v7 = v9(0); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcin, v7, 8, 512); - v8 = v9(2u); - __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcerr, v8, 16, 512); - std::wios::rdbuf(dword_50CB24, (int)__gnu_internal::buf_wcout); - std::wios::rdbuf(dword_50C948, (int)__gnu_internal::buf_wcin); - std::wios::rdbuf(&dword_50C9E4, (int)__gnu_internal::buf_wcerr); - std::wios::rdbuf(dword_50CA84, (int)__gnu_internal::buf_wcerr); - std::ios_base::Init::~Init(); - return lpuexcpt; - } - std::ios_base::Init::Init(); - goto LABEL_6; - } - return lpuexcpt; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50BFFC: using guessed type _DWORD dword_50BFFC; -// 50C03C: using guessed type _DWORD dword_50C03C; -// 50C07C: using guessed type _DWORD dword_50C07C; -// 50C0BC: using guessed type _DWORD dword_50C0BC; -// 50C0FC: using guessed type _DWORD dword_50C0FC; -// 50C13C: using guessed type _DWORD dword_50C13C; -// 50C678: using guessed type int std::ios_base::Init::_S_refcount; -// 50C67C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; -// 50C6C8: using guessed type int dword_50C6C8[28]; -// 50C764: using guessed type int dword_50C764; -// 50C804: using guessed type int dword_50C804[28]; -// 50C8A4: using guessed type int dword_50C8A4[28]; -// 50C948: using guessed type int dword_50C948[28]; -// 50C9E4: using guessed type int dword_50C9E4; -// 50CA84: using guessed type int dword_50CA84[28]; -// 50CB24: using guessed type int dword_50CB24[28]; -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004F5070) -------------------------------------------------------- -void __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2) -{ - int **i; // [esp+14h] [ebp-58h] - - for ( i = (int **)this[6]; i; i = (int **)*i ) - ((void (__cdecl *)(int, _DWORD *, int *))i[1])(a2, this, i[2]); -} - -//----- (004F5160) -------------------------------------------------------- -_DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3) -{ - _DWORD *result; // eax - int v5; // edx - - result = operator new(0x10u); - v5 = this[6]; - result[3] = 0; - *result = v5; - this[6] = result; - result[1] = a2; - result[2] = a3; - return result; -} - -//----- (004F51A0) -------------------------------------------------------- -void __fastcall std::ios_base::_M_dispose_callbacks(int a1) -{ - volatile signed __int32 *Block; // eax - int v3; // edx - volatile signed __int32 *v4; // esi - - Block = *(volatile signed __int32 **)(a1 + 24); - if ( Block ) - { - while ( 1 ) - { - if ( _CRT_MT ) - { - if ( _InterlockedExchangeAdd(Block + 3, 0xFFFFFFFF) ) - break; - } - else - { - v3 = *((_DWORD *)Block + 3); - *((_DWORD *)Block + 3) = v3 - 1; - if ( v3 ) - break; - } - v4 = (volatile signed __int32 *)*Block; - operator delete((void *)Block); - if ( !v4 ) - break; - Block = v4; - } - } - *(_DWORD *)(a1 + 24) = 0; -} -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004F5200) -------------------------------------------------------- -void std::ios_base::Init::Init() -{ - if ( !_CRT_MT ) - { - if ( std::ios_base::Init::_S_refcount++ ) - return; -LABEL_5: - std::ios_base::Init::Init(); - return; - } - if ( !_InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 1u) ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C678: using guessed type int std::ios_base::Init::_S_refcount; - -//----- (004F5240) -------------------------------------------------------- -void std::ios_base::Init::Init() -{ - FILE *v0; // eax - int v1; // eax - int v2; // eax - int v3; // eax - int v4; // eax - int v5; // eax - int v6; // [esp+14h] [ebp-44h] - int v7; // [esp+14h] [ebp-44h] - int v8; // [esp+14h] [ebp-44h] - int v9; // [esp+14h] [ebp-44h] - int v10; // [esp+14h] [ebp-44h] - FILE *(__cdecl *lpuexcpt)(unsigned int); // [esp+18h] [ebp-40h] - struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-40h] - - std::ios_base::Init::_S_synced_with_stdio = 1; - lpuexcpt = ___acrt_iob_func; - v0 = ___acrt_iob_func(1u); - __gnu_internal::buf_cout_sync = &off_51ADD4; - v6 = (int)v0; - dword_50C064 = 0; - dword_50C068 = 0; - dword_50C06C = 0; - dword_50C070 = 0; - dword_50C074 = 0; - dword_50C078 = 0; - std::locale::locale(&dword_50C07C); - __gnu_internal::buf_cout_sync = &off_519C64; - dword_50C080 = v6; - dword_50C084 = -1; - v1 = (int)lpuexcpt(0); - __gnu_internal::buf_cin_sync = &off_51ADD4; - v7 = v1; - dword_50BFE4 = 0; - dword_50BFE8 = 0; - dword_50BFEC = 0; - dword_50BFF0 = 0; - dword_50BFF4 = 0; - dword_50BFF8 = 0; - std::locale::locale(&dword_50BFFC); - __gnu_internal::buf_cin_sync = &off_519C64; - dword_50C000 = v7; - dword_50C004 = -1; - v2 = (int)lpuexcpt(2u); - __gnu_internal::buf_cerr_sync = &off_51ADD4; - v8 = v2; - dword_50C024 = 0; - dword_50C028 = 0; - dword_50C02C = 0; - dword_50C030 = 0; - dword_50C034 = 0; - dword_50C038 = 0; - std::locale::locale(&dword_50C03C); - __gnu_internal::buf_cerr_sync = &off_519C64; - dword_50C044 = -1; - dword_50C040 = v8; - std::ios_base::ios_base(dword_50C8A4); - dword_50C914 = 0; - word_50C918 = 0; - dword_50C91C = 0; - dword_50C920 = 0; - dword_50C924 = 0; - dword_50C928 = 0; - std::cout = (int)&off_51A818; - dword_50C8A4[0] = (int)off_51A82C; - std::ios::init((int)dword_50C8A4, (int)&__gnu_internal::buf_cout_sync); - std::ios_base::ios_base(dword_50C6C8); - dword_50C738 = 0; - word_50C73C = 0; - dword_50C740 = 0; - dword_50C744 = 0; - dword_50C748 = 0; - dword_50C74C = 0; - std::cin = (int)&off_51A7F0; - dword_50C6C8[0] = (int)off_51A804; - dword_50C6C4 = 0; - std::ios::init((int)dword_50C6C8, (int)&__gnu_internal::buf_cin_sync); - std::ios_base::ios_base(&dword_50C764); - word_50C7D8 = 0; - dword_50C7D4 = 0; - dword_50C7DC = 0; - dword_50C7E0 = 0; - dword_50C7E4 = 0; - dword_50C7E8 = 0; - std::cerr = (int)&off_51A818; - dword_50C764 = (int)off_51A82C; - std::ios::init((int)&dword_50C764, (int)&__gnu_internal::buf_cerr_sync); - std::ios_base::ios_base(dword_50C804); - dword_50C874 = 0; - word_50C878 = 0; - dword_50C87C = 0; - dword_50C880 = 0; - dword_50C884 = 0; - dword_50C888 = 0; - std::clog = (int)&off_51A818; - dword_50C804[0] = (int)off_51A82C; - std::ios::init((int)dword_50C804, (int)&__gnu_internal::buf_cerr_sync); - dword_50C770 |= 0x2000u; - dword_50C738 = (int)&std::cout; - dword_50C7D4 = (int)&std::cout; - v3 = (int)lpuexcpt(1u); - __gnu_internal::buf_wcout_sync = &off_51AE14; - v9 = v3; - dword_50C124 = 0; - dword_50C128 = 0; - dword_50C12C = 0; - dword_50C130 = 0; - dword_50C134 = 0; - dword_50C138 = 0; - std::locale::locale(&dword_50C13C); - __gnu_internal::buf_wcout_sync = &off_519CA4; - word_50C144 = -1; - dword_50C140 = v9; - v4 = (int)lpuexcpt(0); - __gnu_internal::buf_wcin_sync = &off_51AE14; - v10 = v4; - dword_50C0A4 = 0; - dword_50C0A8 = 0; - dword_50C0AC = 0; - dword_50C0B0 = 0; - dword_50C0B4 = 0; - dword_50C0B8 = 0; - std::locale::locale(&dword_50C0BC); - __gnu_internal::buf_wcin_sync = &off_519CA4; - word_50C0C4 = -1; - dword_50C0C0 = v10; - v5 = (int)lpuexcpt(2u); - __gnu_internal::buf_wcerr_sync = &off_51AE14; - lpuexcpta = (struct _Unwind_Exception *)v5; - dword_50C0E4 = 0; - dword_50C0E8 = 0; - dword_50C0EC = 0; - dword_50C0F0 = 0; - dword_50C0F4 = 0; - dword_50C0F8 = 0; - std::locale::locale(&dword_50C0FC); - __gnu_internal::buf_wcerr_sync = &off_519CA4; - dword_50C100 = (int)lpuexcpta; - word_50C104 = -1; - std::ios_base::ios_base(dword_50CB24); - dword_50CB94 = 0; - word_50CB98 = 0; - byte_50CB9A = 0; - dword_50CB9C = 0; - dword_50CBA0 = 0; - dword_50CBA4 = 0; - dword_50CBA8 = 0; - std::wcout = (int)&off_51AB74; - dword_50CB24[0] = (int)off_51AB88; - std::wios::init((int)dword_50CB24, (int)&__gnu_internal::buf_wcout_sync); - std::ios_base::ios_base(dword_50C948); - dword_50C9B8 = 0; - word_50C9BC = 0; - byte_50C9BE = 0; - dword_50C9C0 = 0; - dword_50C9C4 = 0; - dword_50C9C8 = 0; - dword_50C9CC = 0; - std::wcin = (int)&off_51AB4C; - dword_50C948[0] = (int)off_51AB60; - dword_50C944 = 0; - std::wios::init((int)dword_50C948, (int)&__gnu_internal::buf_wcin_sync); - std::ios_base::ios_base(&dword_50C9E4); - word_50CA58 = 0; - dword_50CA54 = 0; - byte_50CA5A = 0; - dword_50CA5C = 0; - dword_50CA60 = 0; - dword_50CA64 = 0; - dword_50CA68 = 0; - std::wcerr = (int)&off_51AB74; - dword_50C9E4 = (int)off_51AB88; - std::wios::init((int)&dword_50C9E4, (int)&__gnu_internal::buf_wcerr_sync); - std::ios_base::ios_base(dword_50CA84); - dword_50CAF4 = 0; - word_50CAF8 = 0; - byte_50CAFA = 0; - dword_50CAFC = 0; - dword_50CB00 = 0; - dword_50CB04 = 0; - dword_50CB08 = 0; - std::wclog = (int)&off_51AB74; - dword_50CA84[0] = (int)off_51AB88; - std::wios::init((int)dword_50CA84, (int)&__gnu_internal::buf_wcerr_sync); - dword_50C9F0 |= 0x2000u; - dword_50C9B8 = (int)&std::wcout; - dword_50CA54 = (int)&std::wcout; - if ( _CRT_MT ) - _InterlockedAdd(&std::ios_base::Init::_S_refcount, 1u); - else - ++std::ios_base::Init::_S_refcount; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50BFE4: using guessed type int dword_50BFE4; -// 50BFE8: using guessed type int dword_50BFE8; -// 50BFEC: using guessed type int dword_50BFEC; -// 50BFF0: using guessed type int dword_50BFF0; -// 50BFF4: using guessed type int dword_50BFF4; -// 50BFF8: using guessed type int dword_50BFF8; -// 50BFFC: using guessed type _DWORD dword_50BFFC; -// 50C000: using guessed type int dword_50C000; -// 50C004: using guessed type int dword_50C004; -// 50C024: using guessed type int dword_50C024; -// 50C028: using guessed type int dword_50C028; -// 50C02C: using guessed type int dword_50C02C; -// 50C030: using guessed type int dword_50C030; -// 50C034: using guessed type int dword_50C034; -// 50C038: using guessed type int dword_50C038; -// 50C03C: using guessed type _DWORD dword_50C03C; -// 50C040: using guessed type int dword_50C040; -// 50C044: using guessed type int dword_50C044; -// 50C064: using guessed type int dword_50C064; -// 50C068: using guessed type int dword_50C068; -// 50C06C: using guessed type int dword_50C06C; -// 50C070: using guessed type int dword_50C070; -// 50C074: using guessed type int dword_50C074; -// 50C078: using guessed type int dword_50C078; -// 50C07C: using guessed type _DWORD dword_50C07C; -// 50C080: using guessed type int dword_50C080; -// 50C084: using guessed type int dword_50C084; -// 50C0A4: using guessed type int dword_50C0A4; -// 50C0A8: using guessed type int dword_50C0A8; -// 50C0AC: using guessed type int dword_50C0AC; -// 50C0B0: using guessed type int dword_50C0B0; -// 50C0B4: using guessed type int dword_50C0B4; -// 50C0B8: using guessed type int dword_50C0B8; -// 50C0BC: using guessed type _DWORD dword_50C0BC; -// 50C0C0: using guessed type int dword_50C0C0; -// 50C0C4: using guessed type __int16 word_50C0C4; -// 50C0E4: using guessed type int dword_50C0E4; -// 50C0E8: using guessed type int dword_50C0E8; -// 50C0EC: using guessed type int dword_50C0EC; -// 50C0F0: using guessed type int dword_50C0F0; -// 50C0F4: using guessed type int dword_50C0F4; -// 50C0F8: using guessed type int dword_50C0F8; -// 50C0FC: using guessed type _DWORD dword_50C0FC; -// 50C100: using guessed type int dword_50C100; -// 50C104: using guessed type __int16 word_50C104; -// 50C124: using guessed type int dword_50C124; -// 50C128: using guessed type int dword_50C128; -// 50C12C: using guessed type int dword_50C12C; -// 50C130: using guessed type int dword_50C130; -// 50C134: using guessed type int dword_50C134; -// 50C138: using guessed type int dword_50C138; -// 50C13C: using guessed type _DWORD dword_50C13C; -// 50C140: using guessed type int dword_50C140; -// 50C144: using guessed type __int16 word_50C144; -// 50C678: using guessed type int std::ios_base::Init::_S_refcount; -// 50C67C: using guessed type char std::ios_base::Init::_S_synced_with_stdio; -// 50C6C0: using guessed type int std::cin; -// 50C6C4: using guessed type int dword_50C6C4; -// 50C6C8: using guessed type int dword_50C6C8[28]; -// 50C738: using guessed type int dword_50C738; -// 50C73C: using guessed type __int16 word_50C73C; -// 50C740: using guessed type int dword_50C740; -// 50C744: using guessed type int dword_50C744; -// 50C748: using guessed type int dword_50C748; -// 50C74C: using guessed type int dword_50C74C; -// 50C760: using guessed type int std::cerr; -// 50C764: using guessed type int dword_50C764; -// 50C770: using guessed type int dword_50C770; -// 50C7D4: using guessed type int dword_50C7D4; -// 50C7D8: using guessed type __int16 word_50C7D8; -// 50C7DC: using guessed type int dword_50C7DC; -// 50C7E0: using guessed type int dword_50C7E0; -// 50C7E4: using guessed type int dword_50C7E4; -// 50C7E8: using guessed type int dword_50C7E8; -// 50C800: using guessed type int std::clog; -// 50C804: using guessed type int dword_50C804[28]; -// 50C874: using guessed type int dword_50C874; -// 50C878: using guessed type __int16 word_50C878; -// 50C87C: using guessed type int dword_50C87C; -// 50C880: using guessed type int dword_50C880; -// 50C884: using guessed type int dword_50C884; -// 50C888: using guessed type int dword_50C888; -// 50C8A0: using guessed type int std::cout; -// 50C8A4: using guessed type int dword_50C8A4[28]; -// 50C914: using guessed type int dword_50C914; -// 50C918: using guessed type __int16 word_50C918; -// 50C91C: using guessed type int dword_50C91C; -// 50C920: using guessed type int dword_50C920; -// 50C924: using guessed type int dword_50C924; -// 50C928: using guessed type int dword_50C928; -// 50C940: using guessed type int std::wcin; -// 50C944: using guessed type int dword_50C944; -// 50C948: using guessed type int dword_50C948[28]; -// 50C9B8: using guessed type int dword_50C9B8; -// 50C9BC: using guessed type __int16 word_50C9BC; -// 50C9BE: using guessed type char byte_50C9BE; -// 50C9C0: using guessed type int dword_50C9C0; -// 50C9C4: using guessed type int dword_50C9C4; -// 50C9C8: using guessed type int dword_50C9C8; -// 50C9CC: using guessed type int dword_50C9CC; -// 50C9E0: using guessed type int std::wcerr; -// 50C9E4: using guessed type int dword_50C9E4; -// 50C9F0: using guessed type int dword_50C9F0; -// 50CA54: using guessed type int dword_50CA54; -// 50CA58: using guessed type __int16 word_50CA58; -// 50CA5A: using guessed type char byte_50CA5A; -// 50CA5C: using guessed type int dword_50CA5C; -// 50CA60: using guessed type int dword_50CA60; -// 50CA64: using guessed type int dword_50CA64; -// 50CA68: using guessed type int dword_50CA68; -// 50CA80: using guessed type int std::wclog; -// 50CA84: using guessed type int dword_50CA84[28]; -// 50CAF4: using guessed type int dword_50CAF4; -// 50CAF8: using guessed type __int16 word_50CAF8; -// 50CAFA: using guessed type char byte_50CAFA; -// 50CAFC: using guessed type int dword_50CAFC; -// 50CB00: using guessed type int dword_50CB00; -// 50CB04: using guessed type int dword_50CB04; -// 50CB08: using guessed type int dword_50CB08; -// 50CB20: using guessed type int std::wcout; -// 50CB24: using guessed type int dword_50CB24[28]; -// 50CB94: using guessed type int dword_50CB94; -// 50CB98: using guessed type __int16 word_50CB98; -// 50CB9A: using guessed type char byte_50CB9A; -// 50CB9C: using guessed type int dword_50CB9C; -// 50CBA0: using guessed type int dword_50CBA0; -// 50CBA4: using guessed type int dword_50CBA4; -// 50CBA8: using guessed type int dword_50CBA8; -// 519C64: using guessed type int (*off_519C64)(); -// 519CA4: using guessed type int (*off_519CA4)(); -// 51A7F0: using guessed type void (__cdecl *off_51A7F0)(std::istream *__hidden this); -// 51A804: using guessed type void (__cdecl *off_51A804[2])(std::istream *__hidden this); -// 51A818: using guessed type void (__cdecl *off_51A818)(std::ostream *__hidden this); -// 51A82C: using guessed type void (__cdecl *off_51A82C[2])(std::ostream *__hidden this); -// 51AB4C: using guessed type int (*off_51AB4C)(); -// 51AB60: using guessed type int (*off_51AB60[2])(); -// 51AB74: using guessed type int (*off_51AB74)(); -// 51AB88: using guessed type int (*off_51AB88[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51AE14: using guessed type int (*off_51AE14)(); - -//----- (004F5B30) -------------------------------------------------------- -void __cdecl std::ios_base::Init::~Init() -{ - int v0; // eax - - if ( !_CRT_MT ) - { - v0 = std::ios_base::Init::_S_refcount--; - if ( v0 != 2 ) - return; -LABEL_5: - std::ostream::flush(&std::cout); - std::ostream::flush(&std::cerr); - std::ostream::flush(&std::clog); - std::wostream::flush(&std::wcout); - std::wostream::flush(&std::wcerr); - std::wostream::flush(&std::wclog); - return; - } - if ( _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 0xFFFFFFFF) == 2 ) - goto LABEL_5; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50C678: using guessed type int std::ios_base::Init::_S_refcount; -// 50C760: using guessed type int std::cerr; -// 50C800: using guessed type int std::clog; -// 50C8A0: using guessed type int std::cout; -// 50C9E0: using guessed type int std::wcerr; -// 50CA80: using guessed type int std::wclog; -// 50CB20: using guessed type int std::wcout; - -//----- (004F5C10) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::ios_base::imbue( - volatile signed __int32 **ecx0, - volatile signed __int32 **this, - volatile signed __int32 **a3) -{ - const std::locale *v5; // [esp+4h] [ebp-18h] - - std::locale::locale(ecx0, this + 27, v5); - std::locale::operator=(this + 27, a3); - std::ios_base::_M_call_callbacks(this, 1); - return ecx0; -} -// 4F5C22: variable 'v5' is possibly undefined - -//----- (004F5C60) -------------------------------------------------------- -int std::ios_base::xalloc() -{ - int result; // eax - - if ( _CRT_MT ) - return _InterlockedExchangeAdd(&std::ios_base::xalloc(void)::_S_top, 1u) + 4; - result = std::ios_base::xalloc(void)::_S_top + 4; - ++std::ios_base::xalloc(void)::_S_top; - return result; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50CC14: using guessed type int std::ios_base::xalloc(void)::_S_top; - -//----- (004F5CA0) -------------------------------------------------------- -void __fastcall std::ios_base::_M_init(int a1) -{ - _DWORD *v2[4]; // [esp+1Ch] [ebp-10h] BYREF - - *(_DWORD *)(a1 + 4) = 6; - *(_DWORD *)(a1 + 8) = 0; - *(_DWORD *)(a1 + 12) = 4098; - std::locale::locale(v2); - std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)v2); - std::locale::~locale(v2); -} - -//----- (004F5CF0) -------------------------------------------------------- -volatile signed __int32 **__userpurge std::ios_base::_M_move@( - int a1@, - std::ios_base *this, - std::ios_base *a3) -{ - int v3; // edi - int v5; // eax - int v6; // eax - std::ios_base *v7; // eax - int v8; // eax - int v10; // edx - _DWORD *v11; // eax - int *v12; // ecx - int v13; // ebp - int v14; // edi - - v3 = a1 + 36; - *(_DWORD *)(a1 + 4) = *((_DWORD *)this + 1); - *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); - *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); - *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); - *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); - v5 = *((_DWORD *)this + 6); - *((_DWORD *)this + 6) = 0; - *(_DWORD *)(a1 + 24) = v5; - v6 = *(_DWORD *)(a1 + 104); - if ( v6 != a1 + 36 && v6 ) - operator delete[](*(void **)(a1 + 104)); - v7 = (std::ios_base *)*((_DWORD *)this + 26); - if ( v7 == (std::ios_base *)((char *)this + 36) ) - { - *(_DWORD *)(a1 + 104) = v3; - v10 = 0; - *(_DWORD *)(a1 + 100) = 8; - while ( 1 ) - { - v11 = (_DWORD *)(v3 + v10); - v12 = (int *)(v10 + *((_DWORD *)this + 26)); - v10 += 8; - v13 = *v12; - v14 = v12[1]; - *v12 = 0; - v12[1] = 0; - *v11 = v13; - v11[1] = v14; - if ( v10 == 64 ) - break; - v3 = *(_DWORD *)(a1 + 104); - } - } - else - { - *((_DWORD *)this + 26) = (char *)this + 36; - *(_DWORD *)(a1 + 104) = v7; - v8 = *((_DWORD *)this + 25); - *((_DWORD *)this + 25) = 8; - *(_DWORD *)(a1 + 100) = v8; - } - return std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)this + 27); -} - -//----- (004F5DC0) -------------------------------------------------------- -void __userpurge std::ios_base::_M_swap(std::ios_base **a1@, std::ios_base *this, std::ios_base *a3) -{ - std::ios_base *v3; // ebp - std::ios_base *v4; // ebx - std::ios_base *v5; // eax - std::ios_base *v6; // edi - std::ios_base *v7; // edx - std::ios_base *v8; // eax - std::ios_base *v9; // edx - std::ios_base *v10; // eax - std::ios_base *v11; // edx - std::ios_base *v12; // eax - std::ios_base *v13; // edx - std::ios_base *v14; // eax - std::ios_base *v15; // edx - std::ios_base *v16; // eax - char *v17; // edx - char *v18; // eax - std::ios_base *v19; // edx - int v20; // eax - volatile signed __int32 **v21; // ebx - int i; // ecx - int v23; // ebp - int v24; // edi - int v25; // edx - const std::locale *Src; // [esp+4h] [ebp-48h] - std::ios_base *v27; // [esp+18h] [ebp-34h] - std::ios_base *v28; // [esp+1Ch] [ebp-30h] - _DWORD *v29[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = (std::ios_base *)(a1 + 9); - v4 = (std::ios_base *)a1; - v5 = a1[1]; - v6 = a1[26]; - a1[1] = (std::ios_base *)*((_DWORD *)this + 1); - v7 = (std::ios_base *)*((_DWORD *)this + 2); - *((_DWORD *)this + 1) = v5; - v8 = a1[2]; - a1[2] = v7; - v9 = (std::ios_base *)*((_DWORD *)this + 3); - *((_DWORD *)this + 2) = v8; - v10 = a1[3]; - a1[3] = v9; - v11 = (std::ios_base *)*((_DWORD *)this + 4); - *((_DWORD *)this + 3) = v10; - v12 = a1[4]; - a1[4] = v11; - v13 = (std::ios_base *)*((_DWORD *)this + 5); - *((_DWORD *)this + 4) = v12; - v14 = a1[5]; - a1[5] = v13; - v15 = (std::ios_base *)*((_DWORD *)this + 6); - *((_DWORD *)this + 5) = v14; - v16 = a1[6]; - a1[6] = v15; - v17 = (char *)this + 36; - *((_DWORD *)this + 6) = v16; - v18 = (char *)*((_DWORD *)this + 26); - if ( v6 != (std::ios_base *)(a1 + 9) ) - { -LABEL_6: - if ( v18 != v17 ) - { - a1[26] = (std::ios_base *)v18; - *((_DWORD *)this + 26) = v6; - goto LABEL_8; - } - if ( v6 != v3 ) - { - v19 = (std::ios_base *)a1; - a1 = (std::ios_base **)this; - goto LABEL_5; - } -LABEL_4: - v3 = (std::ios_base *)((char *)this + 36); - v6 = (std::ios_base *)*((_DWORD *)this + 26); - v19 = this; -LABEL_5: - v28 = (std::ios_base *)a1; - v27 = v19; - memmove((char *)v19 + 36, a1 + 9, 0x40u); - *((_DWORD *)v28 + 26) = v6; - *((_DWORD *)v27 + 26) = v3; -LABEL_8: - v20 = *((_DWORD *)v4 + 25); - *((_DWORD *)v4 + 25) = *((_DWORD *)this + 25); - *((_DWORD *)this + 25) = v20; - goto LABEL_9; - } - if ( v18 != v17 ) - { - if ( v6 == v3 ) - goto LABEL_4; - goto LABEL_6; - } - for ( i = 0; i != 8; ++i ) - { - v23 = *((_DWORD *)v4 + 2 * i + 9); - v24 = *((_DWORD *)v4 + 2 * i + 10); - v25 = *((_DWORD *)this + 2 * i + 10); - *((_DWORD *)v4 + 2 * i + 9) = *((_DWORD *)this + 2 * i + 9); - *((_DWORD *)v4 + 2 * i + 10) = v25; - *((_DWORD *)this + 2 * i + 9) = v23; - *((_DWORD *)this + 2 * i + 10) = v24; - } -LABEL_9: - v21 = (volatile signed __int32 **)((char *)v4 + 108); - std::locale::locale((volatile signed __int32 **)v29, v21, Src); - std::locale::operator=(v21, (volatile signed __int32 **)this + 27); - std::locale::operator=((volatile signed __int32 **)this + 27, (volatile signed __int32 **)v29); - std::locale::~locale(v29); -} -// 4F5E99: variable 'Src' is possibly undefined - -//----- (004F5F20) -------------------------------------------------------- -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *a2, int *a3) -{ - std::system_error::system_error(this, *a3, a3[1], a2); - *this = &off_51A788; -} -// 51A788: using guessed type int (*off_51A788)(); - -//----- (004F5F60) -------------------------------------------------------- -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2) -{ - if ( !(_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec - && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) - { - __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); - atexit((_PVFV)__tcf_0_4); - } - std::system_error::system_error(this, 1, (int)&`anonymous namespace'::__io_category_instance(void)::__ec, a2); - *this = &off_51A788; -} -// 50CBD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); -// 51A788: using guessed type int (*off_51A788)(); - -//----- (004F5FD0) -------------------------------------------------------- -void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3) -{ - std::system_error::system_error(this, *a3, a3[1], a2); - *this = &off_51A788; -} -// 51A788: using guessed type int (*off_51A788)(); - -//----- (004F6010) -------------------------------------------------------- -void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *Block) -{ - std::exception *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51A788; - std::system_error::~system_error(Blocka); - operator delete(Block); -} -// 4F601C: variable 'Blocka' is possibly undefined -// 51A788: using guessed type int (*off_51A788)(); - -//----- (004F6030) -------------------------------------------------------- -void __cdecl std::ios_base::failure[abi:cxx11]::~failure(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51A788; - std::system_error::~system_error(a1); -} -// 4F6030: variable 'v1' is possibly undefined -// 51A788: using guessed type int (*off_51A788)(); - -//----- (004F6040) -------------------------------------------------------- -void __userpurge std::ios_base::failure::failure(_DWORD *a1@, std::ios_base::failure *this, const std::string *a3) -{ - const std::string *v3; // [esp+4h] [ebp-54h] - - *a1 = &off_51A79C; - std::string::string(a1 + 1, this, v3); -} -// 4F6088: variable 'v3' is possibly undefined -// 51A79C: using guessed type void (__cdecl *off_51A79C)(std::ios_base::failure *__hidden this); - -//----- (004F60D0) -------------------------------------------------------- -void __fastcall std::ios_base::failure::~failure(_DWORD *a1) -{ - int v2; // eax - int v3; // ecx - int v4; // eax - std::exception *Block; // [esp+0h] [ebp-2Ch] - int v6[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *a1 = &off_51A79C; - v3 = a1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v6); - goto LABEL_3; - } - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 <= 0 ) - goto LABEL_5; -LABEL_3: - std::exception::~exception(Block); - operator delete(a1); -} -// 4F60F7: variable 'Block' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51A79C: using guessed type void (__cdecl *off_51A79C)(std::ios_base::failure *__hidden this); -// 4F60D0: using guessed type int var_D[3]; - -//----- (004F6140) -------------------------------------------------------- -void __cdecl std::ios_base::failure::~failure(std::ios_base::failure *this) -{ - _DWORD *v1; // ecx - int v2; // eax - int v3; // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v2 = _CRT_MT; - *v1 = &off_51A79C; - v3 = v1[1]; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v3 - 4), 0xFFFFFFFF) > 0 ) - goto LABEL_3; - } - else - { - v4 = *(_DWORD *)(v3 - 4); - *(_DWORD *)(v3 - 4) = v4 - 1; - if ( v4 > 0 ) - { -LABEL_3: - std::exception::~exception(this); - return; - } - } - std::string::_Rep::_M_destroy((void *)(v3 - 12), (int)v5); - std::exception::~exception(this); -} -// 4F614B: variable 'v1' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; -// 51A79C: using guessed type void (__cdecl *off_51A79C)(std::ios_base::failure *__hidden this); -// 4F6140: using guessed type int var_D[3]; - -//----- (004F61A0) -------------------------------------------------------- -void __fastcall std::ios_base::ios_base(_DWORD *a1) -{ - _DWORD *v1; // ebx - _DWORD *v2; // eax - _DWORD *v3; // ecx - - v1 = a1 + 9; - *a1 = &off_51B6B4; - v2 = a1 + 9; - a1[1] = 0; - a1[2] = 0; - a1[3] = 0; - a1[4] = 0; - a1[5] = 0; - a1[6] = 0; - a1[7] = 0; - a1[8] = 0; - do - { - *v2 = 0; - v2 += 2; - *(v2 - 1) = 0; - } - while ( a1 + 25 != v2 ); - a1[25] = 8; - v3 = a1 + 27; - *(v3 - 1) = v1; - std::locale::locale(v3); -} -// 51B6B4: using guessed type void (__cdecl *off_51B6B4)(std::ios_base *__hidden this); - -//----- (004F6220) -------------------------------------------------------- -void __fastcall std::ios_base::~ios_base(int a1) -{ - void *Block; // eax - - *(_DWORD *)a1 = &off_51B6B4; - std::ios_base::_M_call_callbacks((_DWORD *)a1, 0); - std::ios_base::_M_dispose_callbacks(a1); - Block = *(void **)(a1 + 104); - if ( Block != (void *)(a1 + 36) ) - { - if ( Block ) - operator delete[](Block); - *(_DWORD *)(a1 + 104) = 0; - } - std::locale::~locale((_DWORD **)(a1 + 108)); - operator delete((void *)a1); -} -// 51B6B4: using guessed type void (__cdecl *off_51B6B4)(std::ios_base *__hidden this); - -//----- (004F6280) -------------------------------------------------------- -void __fastcall std::ios_base::~ios_base(int a1) -{ - void *Block; // eax - - *(_DWORD *)a1 = &off_51B6B4; - std::ios_base::_M_call_callbacks((_DWORD *)a1, 0); - std::ios_base::_M_dispose_callbacks(a1); - Block = *(void **)(a1 + 104); - if ( Block != (void *)(a1 + 36) ) - { - if ( Block ) - operator delete[](Block); - *(_DWORD *)(a1 + 104) = 0; - } - std::locale::~locale((_DWORD **)(a1 + 108)); -} -// 51B6B4: using guessed type void (__cdecl *off_51B6B4)(std::ios_base *__hidden this); - -//----- (004F62D0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_51B6C4; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004F6370) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B6C4; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004F6410) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_51B6C4; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004F64B0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B6C4; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004F6550) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B6C4; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F658E: variable 'lpfctx' is possibly undefined -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004F65B0) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B6C4; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F65EE: variable 'lpfctx' is possibly undefined -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004F6610) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B6C4; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F664E: variable 'lpfctx' is possibly undefined -// 51B6C4: using guessed type int (*off_51B6C4)(); - -//----- (004F6670) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_51B6E0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004F6710) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B6E0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004F67B0) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) -{ - this[1] = a4 != 0; - *this = &off_51B6E0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004F6850) -------------------------------------------------------- -void __thiscall std::messages::messages(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B6E0; - this[2] = std::locale::facet::_S_get_c_locale(); -} -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004F68F0) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *Block) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *Block = &off_51B6E0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(Block + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); - operator delete(Block); -} -// 4F692E: variable 'lpfctx' is possibly undefined -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004F6950) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B6E0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F698E: variable 'lpfctx' is possibly undefined -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004F69B0) -------------------------------------------------------- -void __fastcall std::messages::~messages(_DWORD *a1) -{ - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - - *a1 = &off_51B6E0; - std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F69EE: variable 'lpfctx' is possibly undefined -// 51B6E0: using guessed type int (*off_51B6E0)(); - -//----- (004F6A10) -------------------------------------------------------- -_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) -{ - _DWORD *v2; // eax - char *v3; // esi - int i; // eax - char *v5; // esi - int j; // eax - _DWORD *result; // eax - _DWORD *v8; // [esp+1Ch] [ebp-10h] - - v2 = (_DWORD *)this[2]; - if ( !v2 ) - { - v8 = this; - v2 = operator new(0x68u); - this = v8; - v2[1] = 0; - *v2 = &off_51AF60; - v2[2] = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[5] = 0; - v2[6] = 0; - v2[7] = 0; - v2[8] = 0; - *((_WORD *)v2 + 18) = 0; - *((_BYTE *)v2 + 100) = 0; - v8[2] = v2; - } - v2[2] = &unk_5110D0; - v3 = std::__num_base::_S_atoms_out[0]; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - *((_BYTE *)v2 + 36) = 46; - *(_BYTE *)(this[2] + 37) = 44; - for ( i = 0; i != 36; ++i ) - *(_BYTE *)(this[2] + i + 38) = v3[i]; - v5 = std::__num_base::_S_atoms_in[0]; - for ( j = 0; j != 26; ++j ) - *(_BYTE *)(this[2] + j + 74) = v5[j]; - result = (_DWORD *)this[2]; - result[5] = "true"; - result[6] = 4; - result[7] = "false"; - result[8] = 5; - return result; -} -// 50C480: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 50C484: using guessed type char *std::__num_base::_S_atoms_out[2]; -// 51AF60: using guessed type int (*off_51AF60)(); - -//----- (004F6B10) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B6FC; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004F6BB0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_51B6FC; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004F6C40) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B6FC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004F6CE0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B6FC; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004F6D80) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_51B6FC; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004F6E10) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B6FC; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004F6EB0) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - std::numpunct::~numpunct(a1); - operator delete(a1); -} - -//----- (004F6F40) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_51B6FC; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__numpunct_cache::~__numpunct_cache ) - { - std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F6F9F: variable 'lpfctx' is possibly undefined -// 51B6FC: using guessed type int (*off_51B6FC)(); - -//----- (004F7040) -------------------------------------------------------- -int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) -{ - _DWORD *v2; // edx - char *v3; // ebx - int v4; // eax - char *v5; // ebx - int result; // eax - _DWORD *v7; // eax - - v2 = (_DWORD *)this[2]; - if ( !v2 ) - { - v7 = operator new(0xA8u); - v7[1] = 0; - v2 = v7; - *v7 = &off_51AF70; - v7[2] = 0; - v7[3] = 0; - *((_BYTE *)v7 + 16) = 0; - v7[5] = 0; - v7[6] = 0; - v7[7] = 0; - v7[8] = 0; - v7[9] = 0; - *((_BYTE *)v7 + 164) = 0; - this[2] = v7; - } - v2[2] = &unk_5110D0; - v3 = std::__num_base::_S_atoms_out[0]; - v4 = 0; - v2[3] = 0; - *((_BYTE *)v2 + 16) = 0; - v2[9] = 2883630; - do - { - *((_WORD *)v2 + v4 + 20) = v3[v4]; - ++v4; - } - while ( v4 != 36 ); - v5 = std::__num_base::_S_atoms_in[0]; - for ( result = 0; result != 26; ++result ) - *((_WORD *)v2 + result + 56) = v5[result]; - v2[5] = &off_5110DC; - v2[6] = 4; - v2[7] = &off_5110E6; - v2[8] = 5; - return result; -} -// 50C480: using guessed type char *std::__num_base::_S_atoms_in[3]; -// 50C484: using guessed type char *std::__num_base::_S_atoms_out[2]; -// 5110DC: using guessed type void *off_5110DC; -// 5110E6: using guessed type void *off_5110E6; -// 51AF70: using guessed type int (*off_51AF70)(); - -//----- (004F7130) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B720; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004F71D0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_51B720; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004F7260) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B720; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004F7300) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - this[1] = a3 != 0; - *this = &off_51B720; - this[2] = a2; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004F73A0) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) -{ - *this = &off_51B720; - this[2] = 0; - this[1] = a3 != 0; - std::numpunct::_M_initialize_numpunct(this, a2); -} -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004F7430) -------------------------------------------------------- -void __thiscall std::numpunct::numpunct(_DWORD *this, int a2) -{ - this[1] = a2 != 0; - *this = &off_51B720; - this[2] = 0; - std::numpunct::_M_initialize_numpunct(this, 0); -} -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004F74D0) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - std::numpunct::~numpunct(a1); - operator delete(a1); -} - -//----- (004F7560) -------------------------------------------------------- -void __fastcall std::numpunct::~numpunct(_DWORD *a1) -{ - void *v1; // edx - void (__fastcall *v2)(void *); // eax - struct SjLj_Function_Context *lpfctx; // [esp+0h] [ebp-5Ch] - void *Block; // [esp+14h] [ebp-48h] - - v1 = (void *)a1[2]; - *a1 = &off_51B720; - Block = v1; - if ( v1 ) - { - v2 = *(void (__fastcall **)(void *))(*(_DWORD *)v1 + 4); - if ( v2 == std::__numpunct_cache::~__numpunct_cache ) - { - std::__numpunct_cache::~__numpunct_cache((std::locale::facet *)lpfctx); - operator delete(Block); - } - else - { - v2(v1); - } - } - std::locale::facet::~facet((std::locale::facet *)lpfctx); -} -// 4F75BF: variable 'lpfctx' is possibly undefined -// 51B720: using guessed type int (*off_51B720)(); - -//----- (004F7660) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B744; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004F7680) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B744; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004F76A0) -------------------------------------------------------- -void __fastcall std::time_get>::~time_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B744; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F76AC: variable 'Blocka' is possibly undefined -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004F76C0) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B744; - std::locale::facet::~facet(a1); -} -// 4F76C0: variable 'v1' is possibly undefined -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004F76D0) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B744; - std::locale::facet::~facet(a1); -} -// 4F76D0: variable 'v1' is possibly undefined -// 51B744: using guessed type int (*off_51B744)(); - -//----- (004F76E0) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B76C; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004F7700) -------------------------------------------------------- -BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B76C; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004F7720) -------------------------------------------------------- -void __fastcall std::time_get>::~time_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B76C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F772C: variable 'Blocka' is possibly undefined -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004F7740) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B76C; - std::locale::facet::~facet(a1); -} -// 4F7740: variable 'v1' is possibly undefined -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004F7750) -------------------------------------------------------- -void __cdecl std::time_get>::~time_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B76C; - std::locale::facet::~facet(a1); -} -// 4F7750: variable 'v1' is possibly undefined -// 51B76C: using guessed type int (*off_51B76C)(); - -//----- (004F7760) -------------------------------------------------------- -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B794; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B794: using guessed type int (*off_51B794)(); - -//----- (004F7780) -------------------------------------------------------- -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B794; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B794: using guessed type int (*off_51B794)(); - -//----- (004F77A0) -------------------------------------------------------- -void __fastcall std::time_put>::~time_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B794; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F77AC: variable 'Blocka' is possibly undefined -// 51B794: using guessed type int (*off_51B794)(); - -//----- (004F77C0) -------------------------------------------------------- -void __cdecl std::time_put>::~time_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B794; - std::locale::facet::~facet(a1); -} -// 4F77C0: variable 'v1' is possibly undefined -// 51B794: using guessed type int (*off_51B794)(); - -//----- (004F77D0) -------------------------------------------------------- -void __cdecl std::time_put>::~time_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B794; - std::locale::facet::~facet(a1); -} -// 4F77D0: variable 'v1' is possibly undefined -// 51B794: using guessed type int (*off_51B794)(); - -//----- (004F77E0) -------------------------------------------------------- -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B7A8; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B7A8: using guessed type int (*off_51B7A8)(); - -//----- (004F7800) -------------------------------------------------------- -BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B7A8; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B7A8: using guessed type int (*off_51B7A8)(); - -//----- (004F7820) -------------------------------------------------------- -void __fastcall std::time_put>::~time_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B7A8; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F782C: variable 'Blocka' is possibly undefined -// 51B7A8: using guessed type int (*off_51B7A8)(); - -//----- (004F7840) -------------------------------------------------------- -void __cdecl std::time_put>::~time_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B7A8; - std::locale::facet::~facet(a1); -} -// 4F7840: variable 'v1' is possibly undefined -// 51B7A8: using guessed type int (*off_51B7A8)(); - -//----- (004F7850) -------------------------------------------------------- -void __cdecl std::time_put>::~time_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B7A8; - std::locale::facet::~facet(a1); -} -// 4F7850: variable 'v1' is possibly undefined -// 51B7A8: using guessed type int (*off_51B7A8)(); - -//----- (004F7860) -------------------------------------------------------- -void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1) -{ - std::exception *Block; // [esp+0h] [ebp-1Ch] - - *a1 = &off_51B7BC; - std::exception::~exception(Block); - operator delete(a1); -} -// 4F786C: variable 'Block' is possibly undefined -// 51B7BC: using guessed type void (__cdecl *off_51B7BC)(std::bad_alloc *__hidden this); - -//----- (004F7890) -------------------------------------------------------- -void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B7BC; - std::exception::~exception(a1); -} -// 4F7890: variable 'v1' is possibly undefined -// 51B7BC: using guessed type void (__cdecl *off_51B7BC)(std::bad_alloc *__hidden this); - -//----- (004F78A0) -------------------------------------------------------- -int __thiscall std::ios::exceptions(_DWORD *this, int a2) -{ - bool v2; // zf - int v3; // edx - int result; // eax - - v2 = this[30] == 0; - v3 = this[5]; - result = a2; - this[4] = a2; - if ( v2 ) - { - v3 |= 1u; - this[5] = v3; - } - if ( (v3 & a2) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (004F78E0) -------------------------------------------------------- -int __thiscall std::ios::_M_setstate(_DWORD *this, int a2) -{ - int result; // eax - - this[5] |= a2; - result = this[4] & a2; - if ( result ) - __cxa_rethrow(); - return result; -} - -//----- (004F7900) -------------------------------------------------------- -void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int a2) -{ - void *result; // eax - - if ( (unsigned __int8)std::has_facet>(a2) ) - { - this[31] = std::use_facet>(a2); - if ( (unsigned __int8)std::has_facet>>(a2) ) - goto LABEL_3; -LABEL_6: - this[32] = 0; - result = (void *)std::has_facet>>(a2); - if ( (_BYTE)result ) - goto LABEL_4; - goto LABEL_7; - } - this[31] = 0; - if ( !(unsigned __int8)std::has_facet>>(a2) ) - goto LABEL_6; -LABEL_3: - this[32] = std::use_facet>>(a2); - result = (void *)std::has_facet>>(a2); - if ( (_BYTE)result ) - { -LABEL_4: - result = std::use_facet>>(a2); - this[33] = result; - return result; - } -LABEL_7: - this[33] = 0; - return result; -} - -//----- (004F79A0) -------------------------------------------------------- -int __thiscall std::ios::tie(_DWORD *this, int a2) -{ - int result; // eax - - result = this[28]; - this[28] = a2; - return result; -} - -//----- (004F79B0) -------------------------------------------------------- -int __thiscall std::ios::fill(int this, char a2) -{ - int result; // eax - _BYTE *v4; // edi - int (__stdcall *v5)(unsigned __int8); // edx - - if ( *(_BYTE *)(this + 117) ) - { - result = *(unsigned __int8 *)(this + 116); - *(_BYTE *)(this + 116) = a2; - } - else - { - v4 = *(_BYTE **)(this + 124); - if ( !v4 ) - std::__throw_bad_cast(); - if ( v4[28] ) - { - result = (unsigned __int8)v4[61]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); - v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); - result = 32; - if ( v5 != std::ctype::do_widen ) - result = ((int (__thiscall *)(_BYTE *, int))v5)(v4, 32); - } - *(_BYTE *)(this + 117) = 1; - *(_BYTE *)(this + 116) = a2; - } - return result; -} - -//----- (004F7A30) -------------------------------------------------------- -BOOL __thiscall std::ios::init(int this, int a2) -{ - BOOL result; // eax - - std::ios_base::_M_init(this); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - *(_DWORD *)(this + 120) = a2; - *(_WORD *)(this + 116) = 0; - result = a2 == 0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = result; - return result; -} - -//----- (004F7A80) -------------------------------------------------------- -int __thiscall std::ios::move(int this, std::ios_base *a2) -{ - int v3; // eax - int result; // eax - std::ios_base *v5; // [esp+4h] [ebp-18h] - - std::ios_base::_M_move(this, a2, v5); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - v3 = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = 0; - *(_DWORD *)(this + 112) = v3; - *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); - result = *((unsigned __int8 *)a2 + 117); - *(_DWORD *)(this + 120) = 0; - *(_BYTE *)(this + 117) = result; - return result; -} -// 4F7A8E: variable 'v5' is possibly undefined - -//----- (004F7AD0) -------------------------------------------------------- -int __thiscall std::ios::move(int this, std::ios_base *a2) -{ - int v3; // eax - int result; // eax - std::ios_base *v5; // [esp+4h] [ebp-18h] - - std::ios_base::_M_move(this, a2, v5); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - v3 = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = 0; - *(_DWORD *)(this + 112) = v3; - *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); - result = *((unsigned __int8 *)a2 + 117); - *(_DWORD *)(this + 120) = 0; - *(_BYTE *)(this + 117) = result; - return result; -} -// 4F7ADE: variable 'v5' is possibly undefined - -//----- (004F7B20) -------------------------------------------------------- -void __thiscall std::ios::swap(int this, std::ios_base *a2) -{ - int v3; // eax - char v4; // dl - char v5; // dl - std::ios_base *v6; // [esp+4h] [ebp-58h] - - std::ios_base::_M_swap((std::ios_base **)this, a2, v6); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - std::ios::_M_cache_locale(a2, (int)a2 + 108); - v3 = *(_DWORD *)(this + 112); - *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = v3; - v4 = *(_BYTE *)(this + 116); - *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); - LOBYTE(v3) = *((_BYTE *)a2 + 117); - *((_BYTE *)a2 + 116) = v4; - v5 = *(_BYTE *)(this + 117); - *(_BYTE *)(this + 117) = v3; - *((_BYTE *)a2 + 117) = v5; -} -// 4F7B4D: variable 'v6' is possibly undefined - -//----- (004F7BC0) -------------------------------------------------------- -int __thiscall std::ios::clear(_DWORD *this, int a2) -{ - int v2; // eax - int result; // eax - - v2 = a2; - if ( !this[30] ) - v2 = a2 | 1; - this[5] = v2; - result = this[4] & v2; - if ( result ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (004F7C00) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::ios::imbue( - volatile signed __int32 **this, - volatile signed __int32 **a2, - volatile signed __int32 **a3) -{ - volatile signed __int32 *v3; // edx - const std::locale *v5; // [esp+4h] [ebp-64h] - const std::locale *v6; // [esp+4h] [ebp-64h] - volatile signed __int32 **v7; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - _DWORD *v10[3]; // [esp+5Ch] [ebp-Ch] BYREF - - std::locale::locale(this, a2 + 27, v5); - std::ios_base::imbue((volatile signed __int32 **)v10, a2, a3); - std::locale::~locale(v10); - std::ios::_M_cache_locale(a2, (int)a3); - v3 = a2[30]; - if ( v3 ) - { - lpuexcpt = (struct _Unwind_Exception *)a2[30]; - v7 = (volatile signed __int32 **)(v3 + 7); - std::locale::locale((volatile signed __int32 **)v10, (volatile signed __int32 **)v3 + 7, v6); - (*(void (__thiscall **)(struct _Unwind_Exception *, volatile signed __int32 **))(*(_DWORD *)lpuexcpt + 8))( - lpuexcpt, - a3); - std::locale::operator=(v7, a3); - std::locale::~locale(v10); - } - return this; -} -// 4F7C3B: variable 'v5' is possibly undefined -// 4F7C94: variable 'v6' is possibly undefined - -//----- (004F7D20) -------------------------------------------------------- -int __thiscall std::ios::rdbuf(_DWORD *this, int a2) -{ - int v2; // edx - - v2 = this[30]; - this[30] = a2; - this[5] = a2 == 0; - if ( (this[4] & (a2 == 0)) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return v2; -} - -//----- (004F7D60) -------------------------------------------------------- -int __thiscall std::ios::copyfmt(int this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - _DWORD *v5; // edx - void *v6; // ebp - int v7; // edi - void *Block; // eax - _DWORD *v9; // edx - int v10; // ebp - int v11; // ecx - int v12; // eax - int v13; // esi - int v14; // eax - bool v15; // zf - char v16; // dl - int v17; // eax - int v18; // ecx - int v19; // edx - _DWORD *v21; // eax - int v22; // ecx - _BYTE *v24; // edi - _BYTE *v25; // edi - int (__stdcall *v26)(unsigned __int8); // eax - int (__stdcall *v27)(unsigned __int8); // eax - const std::locale *v28; // [esp+4h] [ebp-48h] - _DWORD *v29; // [esp+1Ch] [ebp-30h] - _DWORD *v30; // [esp+1Ch] [ebp-30h] - unsigned __int8 v31; // [esp+1Ch] [ebp-30h] - _DWORD *v32[8]; // [esp+2Ch] [ebp-20h] BYREF - - v3 = a2; - if ( (_DWORD *)this == a2 ) - return this; - v4 = a2[25]; - if ( v4 > 8 ) - { - if ( v4 > 0xFFFFFFF ) - __cxa_throw_bad_array_new_length(); - v6 = (void *)(this + 36); - v21 = (_DWORD *)operator new[](8 * v4); - v5 = v21; - v22 = a2[25] - 1; - if ( v22 >= 0 ) - { - do - { - *v21 = 0; - v21 += 2; - *(v21 - 1) = 0; - } - while ( v22-- != 0 ); - } - } - else - { - v5 = (_DWORD *)(this + 36); - v6 = (void *)(this + 36); - } - v7 = a2[6]; - if ( v7 ) - { - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); - else - ++*(_DWORD *)(v7 + 12); - } - v29 = v5; - std::ios_base::_M_call_callbacks((_DWORD *)this, 0); - Block = *(void **)(this + 104); - v9 = v29; - if ( Block != v6 ) - { - if ( Block ) - { - operator delete[](Block); - v9 = v29; - } - *(_DWORD *)(this + 104) = 0; - } - v30 = v9; - std::ios_base::_M_dispose_callbacks(this); - v10 = a2[25]; - *(_DWORD *)(this + 24) = v7; - if ( v10 > 0 ) - { - v11 = a2[26]; - v12 = 0; - do - { - v13 = *(_DWORD *)(v11 + v12 * 4 + 4); - v30[v12] = *(_DWORD *)(v11 + v12 * 4); - v30[v12 + 1] = v13; - v12 += 2; - } - while ( v12 != 2 * v10 ); - v3 = a2; - } - v14 = v3[3]; - v15 = *((_BYTE *)v3 + 117) == 0; - *(_DWORD *)(this + 104) = v30; - *(_DWORD *)(this + 100) = v10; - *(_DWORD *)(this + 12) = v14; - *(_DWORD *)(this + 8) = v3[2]; - *(_DWORD *)(this + 4) = v3[1]; - *(_DWORD *)(this + 112) = v3[28]; - if ( v15 ) - { - v24 = (_BYTE *)v3[31]; - if ( !v24 ) - goto LABEL_38; - if ( v24[28] ) - { - v16 = v24[61]; - } - else - { - std::ctype::_M_widen_init(v3[31]); - v16 = 32; - v27 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); - if ( v27 != std::ctype::do_widen ) - v16 = ((int (__fastcall *)(_BYTE *, int, int))v27)(v24, 32, 32); - } - *((_BYTE *)v3 + 116) = v16; - *((_BYTE *)v3 + 117) = 1; - if ( *(_BYTE *)(this + 117) ) - goto LABEL_17; -LABEL_29: - v25 = *(_BYTE **)(this + 124); - if ( v25 ) - { - if ( !v25[28] ) - { - v31 = v16; - std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); - v16 = v31; - v26 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v25 + 24); - if ( v26 != std::ctype::do_widen ) - { - ((void (__fastcall *)(_BYTE *, _DWORD, int))v26)(v25, v31, 32); - v16 = v31; - } - } - *(_BYTE *)(this + 117) = 1; - goto LABEL_17; - } -LABEL_38: - std::__throw_bad_cast(); - } - v16 = *((_BYTE *)v3 + 116); - if ( !*(_BYTE *)(this + 117) ) - goto LABEL_29; -LABEL_17: - *(_BYTE *)(this + 116) = v16; - std::locale::locale((volatile signed __int32 **)v32, (volatile signed __int32 **)v3 + 27, v28); - std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v32); - std::locale::~locale(v32); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - std::ios_base::_M_call_callbacks((_DWORD *)this, 2); - v17 = v3[4]; - v18 = *(_DWORD *)(this + 120); - v19 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 16) = v17; - if ( !v18 ) - { - v19 |= 1u; - *(_DWORD *)(this + 20) = v19; - } - if ( (v17 & v19) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return this; -} -// 4F7E6D: variable 'v28' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004F8000) -------------------------------------------------------- -int __thiscall std::ios::setstate(_DWORD *this, int a2) -{ - int v2; // eax - int result; // eax - - v2 = this[5] | a2; - if ( !this[30] ) - v2 |= 1u; - this[5] = v2; - result = this[4] & v2; - if ( result ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (004F8040) -------------------------------------------------------- -int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[30] = a2; - return result; -} - -//----- (004F8050) -------------------------------------------------------- -void __thiscall std::ios::basic_ios(int this, int a2) -{ - std::ios_base::ios_base((_DWORD *)this); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)this = &off_51B7D0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 120) = 0; - *(_DWORD *)(this + 124) = 0; - *(_DWORD *)(this + 128) = 0; - *(_DWORD *)(this + 132) = 0; - std::ios_base::_M_init(this); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 120) = a2; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = a2 == 0; -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004F8140) -------------------------------------------------------- -int __fastcall std::ios::basic_ios(int a1) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)a1); - result = 0; - *(_DWORD *)a1 = &off_51B7D0; - *(_DWORD *)(a1 + 112) = 0; - *(_WORD *)(a1 + 116) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - return result; -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004F8190) -------------------------------------------------------- -void __thiscall std::ios::basic_ios(int this, int a2) -{ - std::ios_base::ios_base((_DWORD *)this); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)this = &off_51B7D0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 120) = 0; - *(_DWORD *)(this + 124) = 0; - *(_DWORD *)(this + 128) = 0; - *(_DWORD *)(this + 132) = 0; - std::ios_base::_M_init(this); - std::ios::_M_cache_locale((_DWORD *)this, this + 108); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 120) = a2; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = a2 == 0; -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004F8280) -------------------------------------------------------- -int __fastcall std::ios::basic_ios(int a1) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)a1); - result = 0; - *(_DWORD *)a1 = &off_51B7D0; - *(_DWORD *)(a1 + 112) = 0; - *(_WORD *)(a1 + 116) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - return result; -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004F82D0) -------------------------------------------------------- -void __fastcall std::ios::~ios(_DWORD *Block) -{ - *Block = &off_51B7D0; - std::ios_base::~ios_base((int)Block); - operator delete(Block); -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004F82F0) -------------------------------------------------------- -void __fastcall std::ios::~ios(int a1) -{ - *(_DWORD *)a1 = &off_51B7D0; - std::ios_base::~ios_base(a1); -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004F8300) -------------------------------------------------------- -void __fastcall std::ios::~ios(int a1) -{ - *(_DWORD *)a1 = &off_51B7D0; - std::ios_base::~ios_base(a1); -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (004F8310) -------------------------------------------------------- -int __thiscall std::wios::exceptions(_DWORD *this, int a2) -{ - bool v2; // zf - int v3; // edx - int result; // eax - - v2 = this[30] == 0; - v3 = this[5]; - result = a2; - this[4] = a2; - if ( v2 ) - { - v3 |= 1u; - this[5] = v3; - } - if ( (v3 & a2) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (004F8350) -------------------------------------------------------- -int __thiscall std::wios::_M_setstate(_DWORD *this, int a2) -{ - int result; // eax - - this[5] |= a2; - result = this[4] & a2; - if ( result ) - __cxa_rethrow(); - return result; -} - -//----- (004F8370) -------------------------------------------------------- -void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int a2) -{ - void *result; // eax - - if ( (unsigned __int8)std::has_facet>(a2) ) - { - this[31] = std::use_facet>(a2); - if ( (unsigned __int8)std::has_facet>>(a2) ) - goto LABEL_3; -LABEL_6: - this[32] = 0; - result = (void *)std::has_facet>>(a2); - if ( (_BYTE)result ) - goto LABEL_4; - goto LABEL_7; - } - this[31] = 0; - if ( !(unsigned __int8)std::has_facet>>(a2) ) - goto LABEL_6; -LABEL_3: - this[32] = std::use_facet>>(a2); - result = (void *)std::has_facet>>(a2); - if ( (_BYTE)result ) - { -LABEL_4: - result = std::use_facet>>(a2); - this[33] = result; - return result; - } -LABEL_7: - this[33] = 0; - return result; -} - -//----- (004F8410) -------------------------------------------------------- -int __thiscall std::wios::tie(_DWORD *this, int a2) -{ - int result; // eax - - result = this[28]; - this[28] = a2; - return result; -} - -//----- (004F8420) -------------------------------------------------------- -int __thiscall std::wios::fill(int this, __int16 a2) -{ - int result; // eax - int v4; // ecx - - if ( *(_BYTE *)(this + 118) ) - { - result = *(unsigned __int16 *)(this + 116); - *(_WORD *)(this + 116) = a2; - } - else - { - v4 = *(_DWORD *)(this + 124); - if ( !v4 ) - std::__throw_bad_cast(); - result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); - *(_WORD *)(this + 116) = a2; - *(_BYTE *)(this + 118) = 1; - } - return result; -} - -//----- (004F8480) -------------------------------------------------------- -BOOL __thiscall std::wios::init(int this, int a2) -{ - BOOL result; // eax - - std::ios_base::_M_init(this); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - *(_DWORD *)(this + 120) = a2; - *(_WORD *)(this + 116) = 0; - result = a2 == 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = result; - return result; -} - -//----- (004F84D0) -------------------------------------------------------- -int __thiscall std::wios::move(int this, std::ios_base *a2) -{ - int v3; // eax - int result; // eax - std::ios_base *v5; // [esp+4h] [ebp-18h] - - std::ios_base::_M_move(this, a2, v5); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - v3 = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = 0; - *(_DWORD *)(this + 112) = v3; - *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); - result = *((unsigned __int8 *)a2 + 118); - *(_DWORD *)(this + 120) = 0; - *(_BYTE *)(this + 118) = result; - return result; -} -// 4F84DE: variable 'v5' is possibly undefined - -//----- (004F8530) -------------------------------------------------------- -int __thiscall std::wios::move(int this, std::ios_base *a2) -{ - int v3; // eax - int result; // eax - std::ios_base *v5; // [esp+4h] [ebp-18h] - - std::ios_base::_M_move(this, a2, v5); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - v3 = *((_DWORD *)a2 + 28); - *((_DWORD *)a2 + 28) = 0; - *(_DWORD *)(this + 112) = v3; - *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); - result = *((unsigned __int8 *)a2 + 118); - *(_DWORD *)(this + 120) = 0; - *(_BYTE *)(this + 118) = result; - return result; -} -// 4F853E: variable 'v5' is possibly undefined - -//----- (004F8590) -------------------------------------------------------- -void __thiscall std::wios::swap(int this, std::ios_base *a2) -{ - int v3; // eax - __int16 v4; // dx - std::ios_base *v5; // [esp+4h] [ebp-58h] - - std::ios_base::_M_swap((std::ios_base **)this, a2, v5); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - std::wios::_M_cache_locale(a2, (int)a2 + 108); - v3 = *(_DWORD *)(this + 112); - *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); - v4 = *((_WORD *)a2 + 58); - *((_DWORD *)a2 + 28) = v3; - LOWORD(v3) = *(_WORD *)(this + 116); - *(_WORD *)(this + 116) = v4; - LOBYTE(v4) = *(_BYTE *)(this + 118); - *((_WORD *)a2 + 58) = v3; - *(_BYTE *)(this + 118) = *((_BYTE *)a2 + 118); - *((_BYTE *)a2 + 118) = v4; -} -// 4F85BD: variable 'v5' is possibly undefined - -//----- (004F8630) -------------------------------------------------------- -int __thiscall std::wios::clear(_DWORD *this, int a2) -{ - int v2; // eax - int result; // eax - - v2 = a2; - if ( !this[30] ) - v2 = a2 | 1; - this[5] = v2; - result = this[4] & v2; - if ( result ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (004F8670) -------------------------------------------------------- -volatile signed __int32 **__thiscall std::wios::imbue( - volatile signed __int32 **this, - volatile signed __int32 **a2, - volatile signed __int32 **a3) -{ - volatile signed __int32 *v3; // edx - const std::locale *v5; // [esp+4h] [ebp-64h] - const std::locale *v6; // [esp+4h] [ebp-64h] - volatile signed __int32 **v7; // [esp+10h] [ebp-58h] - struct _Unwind_Exception *lpuexcpt; // [esp+14h] [ebp-54h] - _DWORD *v10[3]; // [esp+5Ch] [ebp-Ch] BYREF - - std::locale::locale(this, a2 + 27, v5); - std::ios_base::imbue((volatile signed __int32 **)v10, a2, a3); - std::locale::~locale(v10); - std::wios::_M_cache_locale(a2, (int)a3); - v3 = a2[30]; - if ( v3 ) - { - lpuexcpt = (struct _Unwind_Exception *)a2[30]; - v7 = (volatile signed __int32 **)(v3 + 7); - std::locale::locale((volatile signed __int32 **)v10, (volatile signed __int32 **)v3 + 7, v6); - (*(void (__thiscall **)(struct _Unwind_Exception *, volatile signed __int32 **))(*(_DWORD *)lpuexcpt + 8))( - lpuexcpt, - a3); - std::locale::operator=(v7, a3); - std::locale::~locale(v10); - } - return this; -} -// 4F86AB: variable 'v5' is possibly undefined -// 4F8704: variable 'v6' is possibly undefined - -//----- (004F8790) -------------------------------------------------------- -int __thiscall std::wios::rdbuf(_DWORD *this, int a2) -{ - int v2; // edx - - v2 = this[30]; - this[30] = a2; - this[5] = a2 == 0; - if ( (this[4] & (a2 == 0)) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return v2; -} - -//----- (004F87D0) -------------------------------------------------------- -int __thiscall std::wios::copyfmt(int this, _DWORD *a2) -{ - _DWORD *v3; // esi - int v4; // eax - _DWORD *v5; // edx - void *v6; // ebp - int v7; // edi - void *Block; // eax - _DWORD *v9; // edx - int v10; // ebp - int v11; // ecx - int v12; // eax - int v13; // esi - int v14; // eax - bool v15; // zf - __int16 v16; // di - int v17; // eax - int v18; // ecx - int v19; // edx - _DWORD *v21; // eax - int v22; // ecx - int v23; // ecx - __int16 v24; // ax - int v25; // ecx - const std::locale *v26; // [esp+8h] [ebp-48h] - _DWORD *v27; // [esp+20h] [ebp-30h] - _DWORD *v28; // [esp+20h] [ebp-30h] - _DWORD *v29[8]; // [esp+30h] [ebp-20h] BYREF - - v3 = a2; - if ( (_DWORD *)this == a2 ) - return this; - v4 = a2[25]; - if ( v4 > 8 ) - { - if ( v4 > 0xFFFFFFF ) - __cxa_throw_bad_array_new_length(); - v6 = (void *)(this + 36); - v21 = (_DWORD *)operator new[](8 * v4); - v5 = v21; - v22 = a2[25] - 1; - if ( v22 >= 0 ) - { - do - { - --v22; - *v21 = 0; - v21 += 2; - *(v21 - 1) = 0; - } - while ( v22 != -1 ); - } - } - else - { - v5 = (_DWORD *)(this + 36); - v6 = (void *)(this + 36); - } - v7 = a2[6]; - if ( v7 ) - { - if ( _CRT_MT ) - _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); - else - ++*(_DWORD *)(v7 + 12); - } - v27 = v5; - std::ios_base::_M_call_callbacks((_DWORD *)this, 0); - Block = *(void **)(this + 104); - v9 = v27; - if ( Block != v6 ) - { - if ( Block ) - { - operator delete[](Block); - v9 = v27; - } - *(_DWORD *)(this + 104) = 0; - } - v28 = v9; - std::ios_base::_M_dispose_callbacks(this); - v10 = a2[25]; - *(_DWORD *)(this + 24) = v7; - if ( v10 > 0 ) - { - v11 = a2[26]; - v12 = 0; - do - { - v13 = *(_DWORD *)(v11 + v12 * 4 + 4); - v28[v12] = *(_DWORD *)(v11 + v12 * 4); - v28[v12 + 1] = v13; - v12 += 2; - } - while ( v12 != 2 * v10 ); - v3 = a2; - } - v14 = v3[3]; - v15 = *((_BYTE *)v3 + 118) == 0; - *(_DWORD *)(this + 104) = v28; - *(_DWORD *)(this + 100) = v10; - *(_DWORD *)(this + 12) = v14; - *(_DWORD *)(this + 8) = v3[2]; - *(_DWORD *)(this + 4) = v3[1]; - *(_DWORD *)(this + 112) = v3[28]; - if ( v15 ) - { - v23 = v3[31]; - if ( !v23 ) - goto LABEL_30; - v24 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v23 + 40))(v23, 32); - *((_BYTE *)v3 + 118) = 1; - v15 = *(_BYTE *)(this + 118) == 0; - *((_WORD *)v3 + 58) = v24; - v16 = v24; - if ( !v15 ) - goto LABEL_17; -LABEL_27: - v25 = *(_DWORD *)(this + 124); - if ( v25 ) - { - (*(void (__thiscall **)(int, int))(*(_DWORD *)v25 + 40))(v25, 32); - *(_BYTE *)(this + 118) = 1; - goto LABEL_17; - } -LABEL_30: - std::__throw_bad_cast(); - } - v16 = *((_WORD *)v3 + 58); - if ( !*(_BYTE *)(this + 118) ) - goto LABEL_27; -LABEL_17: - *(_WORD *)(this + 116) = v16; - std::locale::locale((volatile signed __int32 **)v29, (volatile signed __int32 **)v3 + 27, v26); - std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v29); - std::locale::~locale(v29); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - std::ios_base::_M_call_callbacks((_DWORD *)this, 2); - v17 = v3[4]; - v18 = *(_DWORD *)(this + 120); - v19 = *(_DWORD *)(this + 20); - *(_DWORD *)(this + 16) = v17; - if ( !v18 ) - { - v19 |= 1u; - *(_DWORD *)(this + 20) = v19; - } - if ( (v19 & v17) != 0 ) - std::__throw_ios_failure("basic_ios::clear"); - return this; -} -// 4F88DE: variable 'v26' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004F8A10) -------------------------------------------------------- -int __thiscall std::wios::setstate(_DWORD *this, int a2) -{ - int v2; // eax - int result; // eax - - v2 = this[5] | a2; - if ( !this[30] ) - v2 |= 1u; - this[5] = v2; - result = this[4] & v2; - if ( result ) - std::__throw_ios_failure("basic_ios::clear"); - return result; -} - -//----- (004F8A50) -------------------------------------------------------- -int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2) -{ - int result; // eax - - result = a2; - this[30] = a2; - return result; -} - -//----- (004F8A60) -------------------------------------------------------- -void __thiscall std::wios::basic_ios(int this, int a2) -{ - std::ios_base::ios_base((_DWORD *)this); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)this = &off_51B7E0; - *(_DWORD *)(this + 112) = 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 120) = 0; - *(_DWORD *)(this + 124) = 0; - *(_DWORD *)(this + 128) = 0; - *(_DWORD *)(this + 132) = 0; - std::ios_base::_M_init(this); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - *(_WORD *)(this + 116) = 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 120) = a2; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = a2 == 0; -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004F8B50) -------------------------------------------------------- -int __fastcall std::wios::basic_ios(int a1) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)a1); - result = 0; - *(_DWORD *)a1 = &off_51B7E0; - *(_DWORD *)(a1 + 112) = 0; - *(_WORD *)(a1 + 116) = 0; - *(_BYTE *)(a1 + 118) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - return result; -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004F8BA0) -------------------------------------------------------- -void __thiscall std::wios::basic_ios(int this, int a2) -{ - std::ios_base::ios_base((_DWORD *)this); - *(_WORD *)(this + 116) = 0; - *(_DWORD *)this = &off_51B7E0; - *(_DWORD *)(this + 112) = 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 120) = 0; - *(_DWORD *)(this + 124) = 0; - *(_DWORD *)(this + 128) = 0; - *(_DWORD *)(this + 132) = 0; - std::ios_base::_M_init(this); - std::wios::_M_cache_locale((_DWORD *)this, this + 108); - *(_WORD *)(this + 116) = 0; - *(_BYTE *)(this + 118) = 0; - *(_DWORD *)(this + 120) = a2; - *(_DWORD *)(this + 112) = 0; - *(_DWORD *)(this + 16) = 0; - *(_DWORD *)(this + 20) = a2 == 0; -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004F8C90) -------------------------------------------------------- -int __fastcall std::wios::basic_ios(int a1) -{ - int result; // eax - - std::ios_base::ios_base((_DWORD *)a1); - result = 0; - *(_DWORD *)a1 = &off_51B7E0; - *(_DWORD *)(a1 + 112) = 0; - *(_WORD *)(a1 + 116) = 0; - *(_BYTE *)(a1 + 118) = 0; - *(_DWORD *)(a1 + 120) = 0; - *(_DWORD *)(a1 + 124) = 0; - *(_DWORD *)(a1 + 128) = 0; - *(_DWORD *)(a1 + 132) = 0; - return result; -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004F8CE0) -------------------------------------------------------- -void __fastcall std::wios::~wios(_DWORD *Block) -{ - *Block = &off_51B7E0; - std::ios_base::~ios_base((int)Block); - operator delete(Block); -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004F8D00) -------------------------------------------------------- -void __fastcall std::wios::~wios(int a1) -{ - *(_DWORD *)a1 = &off_51B7E0; - std::ios_base::~ios_base(a1); -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004F8D10) -------------------------------------------------------- -void __fastcall std::wios::~wios(int a1) -{ - *(_DWORD *)a1 = &off_51B7E0; - std::ios_base::~ios_base(a1); -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (004F8D20) -------------------------------------------------------- -void __fastcall std::exception::~exception(void *Block) -{ - operator delete(Block); -} - -//----- (004F8D50) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B804; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B804: using guessed type int (*off_51B804)(); - -//----- (004F8D70) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B804; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B804: using guessed type int (*off_51B804)(); - -//----- (004F8D90) -------------------------------------------------------- -void __fastcall std::money_get>::~money_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B804; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F8D9C: variable 'Blocka' is possibly undefined -// 51B804: using guessed type int (*off_51B804)(); - -//----- (004F8DB0) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B804; - std::locale::facet::~facet(a1); -} -// 4F8DB0: variable 'v1' is possibly undefined -// 51B804: using guessed type int (*off_51B804)(); - -//----- (004F8DC0) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B804; - std::locale::facet::~facet(a1); -} -// 4F8DC0: variable 'v1' is possibly undefined -// 51B804: using guessed type int (*off_51B804)(); - -//----- (004F8DD0) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B81C; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B81C: using guessed type int (*off_51B81C)(); - -//----- (004F8DF0) -------------------------------------------------------- -BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B81C; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B81C: using guessed type int (*off_51B81C)(); - -//----- (004F8E10) -------------------------------------------------------- -void __fastcall std::money_get>::~money_get(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B81C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F8E1C: variable 'Blocka' is possibly undefined -// 51B81C: using guessed type int (*off_51B81C)(); - -//----- (004F8E30) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B81C; - std::locale::facet::~facet(a1); -} -// 4F8E30: variable 'v1' is possibly undefined -// 51B81C: using guessed type int (*off_51B81C)(); - -//----- (004F8E40) -------------------------------------------------------- -void __cdecl std::money_get>::~money_get(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B81C; - std::locale::facet::~facet(a1); -} -// 4F8E40: variable 'v1' is possibly undefined -// 51B81C: using guessed type int (*off_51B81C)(); - -//----- (004F8E50) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B834; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B834: using guessed type int (*off_51B834)(); - -//----- (004F8E70) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B834; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B834: using guessed type int (*off_51B834)(); - -//----- (004F8E90) -------------------------------------------------------- -void __fastcall std::money_put>::~money_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B834; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F8E9C: variable 'Blocka' is possibly undefined -// 51B834: using guessed type int (*off_51B834)(); - -//----- (004F8EB0) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B834; - std::locale::facet::~facet(a1); -} -// 4F8EB0: variable 'v1' is possibly undefined -// 51B834: using guessed type int (*off_51B834)(); - -//----- (004F8EC0) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B834; - std::locale::facet::~facet(a1); -} -// 4F8EC0: variable 'v1' is possibly undefined -// 51B834: using guessed type int (*off_51B834)(); - -//----- (004F8ED0) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B84C; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (004F8EF0) -------------------------------------------------------- -BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) -{ - BOOL result; // eax - - *this = &off_51B84C; - result = a2 != 0; - this[1] = result; - return result; -} -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (004F8F10) -------------------------------------------------------- -void __fastcall std::money_put>::~money_put(_DWORD *Block) -{ - std::locale::facet *Blocka; // [esp+0h] [ebp-1Ch] - - *Block = &off_51B84C; - std::locale::facet::~facet(Blocka); - operator delete(Block); -} -// 4F8F1C: variable 'Blocka' is possibly undefined -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (004F8F30) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B84C; - std::locale::facet::~facet(a1); -} -// 4F8F30: variable 'v1' is possibly undefined -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (004F8F40) -------------------------------------------------------- -void __cdecl std::money_put>::~money_put(std::locale::facet *a1) -{ - _DWORD *v1; // ecx - - *v1 = &off_51B84C; - std::locale::facet::~facet(a1); -} -// 4F8F40: variable 'v1' is possibly undefined -// 51B84C: using guessed type int (*off_51B84C)(); - -//----- (004F8F50) -------------------------------------------------------- -void __fastcall std::type_info::~type_info(void *Block) -{ - operator delete(Block); -} - -//----- (004F8F80) -------------------------------------------------------- -void __noreturn std::unexpected(void) -{ - __cxxabiv1::__unexpected(__cxxabiv1::__unexpected_handler); -} - -//----- (004F8F90) -------------------------------------------------------- -_BYTE *__cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5) -{ - _BYTE *v6; // ebx - unsigned int v7; // eax - unsigned int v9; // eax - unsigned int v10; // eax - - if ( a5 ) - { - v6 = a1; - do - { - *--v6 = *(_BYTE *)(a3 + a2 % 0xA + 4); - v7 = a2; - a2 /= 0xAu; - } - while ( v7 > 9 ); - } - else if ( (a4 & 0x4A) == 64 ) - { - v6 = a1; - do - { - --v6; - v10 = a2 & 7; - a2 >>= 3; - *v6 = *(_BYTE *)(a3 + v10 + 4); - } - while ( a2 ); - } - else - { - v6 = a1; - do - { - --v6; - v9 = a2 & 0xF; - a2 >>= 4; - *v6 = *(_BYTE *)(a3 + ((a4 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + v9); - } - while ( a2 ); - } - return (_BYTE *)(a1 - v6); -} - -//----- (004F9040) -------------------------------------------------------- -_BYTE *__cdecl std::__int_to_char( - _BYTE *a1, - unsigned int a2, - unsigned int a3, - int a4, - __int16 a5, - char a6) -{ - unsigned __int64 v6; // rdi - _BYTE *v7; // ebx - unsigned __int64 v8; // kr00_8 - char v10; // al - char v11; // al - unsigned __int64 v12; // [esp+18h] [ebp-24h] - - v6 = __PAIR64__(a2, a3); - if ( a6 ) - { - v7 = a1; - do - { - --v7; - v12 = __PAIR64__(v6, HIDWORD(v6)); - *v7 = *(_BYTE *)(a4 + __PAIR64__(v6, HIDWORD(v6)) % 0xA + 4); - v8 = __PAIR64__(v6, HIDWORD(v6)) / 0xA; - LODWORD(v6) = (__PAIR64__(v6, HIDWORD(v6)) / 0xA) >> 32; - HIDWORD(v6) = v8; - } - while ( v12 > 9 ); - } - else if ( (a5 & 0x4A) == 64 ) - { - v7 = a1; - do - { - v11 = BYTE4(v6); - HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 3; - --v7; - LODWORD(v6) = (unsigned int)v6 >> 3; - *v7 = *(_BYTE *)(a4 + (v11 & 7) + 4); - } - while ( v6 ); - } - else - { - v7 = a1; - do - { - v10 = BYTE4(v6); - HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 4; - --v7; - LODWORD(v6) = (unsigned int)v6 >> 4; - *v7 = *(_BYTE *)(a4 + ((a5 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + (v10 & 0xF)); - } - while ( v6 ); - } - return (_BYTE *)(a1 - v7); -} - -//----- (004F9140) -------------------------------------------------------- -int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, int a3, __int16 a4, char a5) -{ - _WORD *v6; // ebx - unsigned int v7; // eax - unsigned int v9; // eax - unsigned int v10; // eax - - if ( a5 ) - { - v6 = a1; - do - { - *--v6 = *(_WORD *)(a3 + 2 * (a2 % 0xA) + 8); - v7 = a2; - a2 /= 0xAu; - } - while ( v7 > 9 ); - } - else if ( (a4 & 0x4A) == 64 ) - { - v6 = a1; - do - { - --v6; - v10 = a2 & 7; - a2 >>= 3; - *v6 = *(_WORD *)(a3 + 2 * v10 + 8); - } - while ( a2 ); - } - else - { - v6 = a1; - do - { - --v6; - v9 = ((a4 & 0x4000) == 0 ? 4 : 20) + (a2 & 0xF); - a2 >>= 4; - *v6 = *(_WORD *)(a3 + 2 * v9); - } - while ( a2 ); - } - return a1 - v6; -} - -//----- (004F9200) -------------------------------------------------------- -int __cdecl std::__int_to_char( - _WORD *a1, - unsigned int a2, - unsigned int a3, - int a4, - __int16 a5, - char a6) -{ - unsigned __int64 v6; // rdi - _WORD *v7; // ebx - unsigned __int64 v8; // kr00_8 - char v10; // al - char v11; // al - unsigned __int64 v12; // [esp+18h] [ebp-24h] - - v6 = __PAIR64__(a2, a3); - if ( a6 ) - { - v7 = a1; - do - { - --v7; - v12 = __PAIR64__(v6, HIDWORD(v6)); - *v7 = *(_WORD *)(a4 + 2 * (__PAIR64__(v6, HIDWORD(v6)) % 0xA) + 8); - v8 = __PAIR64__(v6, HIDWORD(v6)) / 0xA; - LODWORD(v6) = (__PAIR64__(v6, HIDWORD(v6)) / 0xA) >> 32; - HIDWORD(v6) = v8; - } - while ( v12 > 9 ); - } - else if ( (a5 & 0x4A) == 64 ) - { - v7 = a1; - do - { - v11 = BYTE4(v6); - HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 3; - --v7; - LODWORD(v6) = (unsigned int)v6 >> 3; - *v7 = *(_WORD *)(a4 + 2 * (v11 & 7) + 8); - } - while ( v6 ); - } - else - { - v7 = a1; - do - { - v10 = BYTE4(v6); - HIDWORD(v6) = __PAIR64__(v6, HIDWORD(v6)) >> 4; - --v7; - LODWORD(v6) = (unsigned int)v6 >> 4; - *v7 = *(_WORD *)(a4 + 2 * (((a5 & 0x4000) == 0 ? 4 : 20) + (v10 & 0xF))); - } - while ( v6 ); - } - return a1 - v7; -} - -//----- (004F9310) -------------------------------------------------------- -void (*std::get_terminate(void))(void) -{ - return __cxxabiv1::__terminate_handler; -} - -//----- (004F9320) -------------------------------------------------------- -__int32 __cdecl std::set_terminate(void (__noreturn *a1)(void)) -{ - void (__noreturn *v1)(void); // eax - - v1 = a1; - if ( !a1 ) - v1 = __gnu_cxx::__verbose_terminate_handler; - return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__terminate_handler, (__int32)v1); -} - -//----- (004F9340) -------------------------------------------------------- -_BYTE *__cdecl std::__add_grouping(_BYTE *a1, char a2, char *a3, int a4, _BYTE *a5, _BYTE *a6) -{ - _BYTE *v6; // edi - _BYTE *v7; // esi - _BYTE *v8; // edx - int v9; // ecx - unsigned int v10; // ebx - char *v11; // edi - int v12; // ebx - int v13; // ebp - _BYTE *result; // eax - _BYTE *v15; // edi - int v16; // ecx - _BYTE *v17; // esi - bool v18; // cf - _BYTE *v19; // edi - int v20; // ecx - _BYTE *v21; // esi - char *v22; // [esp+0h] [ebp-20h] - int v23; // [esp+8h] [ebp-18h] - unsigned int v24; // [esp+Ch] [ebp-14h] - _BYTE *v25; // [esp+38h] [ebp+18h] - - v6 = a1; - v7 = a5; - v8 = a6; - v9 = *a3; - if ( (unsigned __int8)(v9 - 1) > 0x7Du || a6 - a5 <= v9 ) - { - if ( a6 == a5 ) - return a1; - v12 = -1; - v13 = -1; - v23 = 0; - v24 = 0; - v22 = a3; - goto LABEL_10; - } - v23 = 0; - v10 = 0; - do - { - v8 -= v9; - if ( a4 - 1 > v10 ) - ++v10; - else - ++v23; - v11 = &a3[v10]; - v9 = a3[v10]; - } - while ( v8 - a5 > v9 && (unsigned __int8)(v9 - 1) <= 0x7Du ); - v24 = v10; - v12 = v10 - 1; - v22 = v11; - v6 = a1; - v13 = v23 - 1; - if ( a5 != v8 ) - { -LABEL_10: - result = &v6[v8 - a5]; - do - *v6++ = *v7++; - while ( v6 != result ); - goto LABEL_12; - } - result = a1; -LABEL_12: - if ( v23 ) - { - do - { - v15 = result + 1; - *result = a2; - v16 = (unsigned __int8)*v22; - if ( (char)v16 <= 0 ) - { - ++result; - } - else - { - result += (unsigned __int8)(v16 + 1); - v17 = v8; - do - *v15++ = *v17++; - while ( v15 != result ); - v8 += v16; - } - v18 = v13-- == 0; - } - while ( !v18 ); - } - if ( v24 ) - { - v25 = v8; - do - { - v19 = result + 1; - *result = a2; - v20 = (unsigned __int8)a3[v12]; - if ( (char)v20 <= 0 ) - { - ++result; - } - else - { - result += (unsigned __int8)(v20 + 1); - v21 = v25; - do - *v19++ = *v21++; - while ( v19 != result ); - v25 += v20; - } - v18 = v12-- == 0; - } - while ( !v18 ); - } - return result; -} - -//----- (004F94F0) -------------------------------------------------------- -_WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, char *a5, char *a6) -{ - char *v6; // edx - char *v7; // esi - _WORD *v8; // edi - int v9; // eax - unsigned int v10; // edi - unsigned int v11; // eax - int v12; // ebp - int v13; // ebx - _WORD *result; // eax - _WORD *v15; // edi - int v16; // ecx - char *v17; // esi - bool v18; // cf - _WORD *v19; // edi - int v20; // ecx - char *v21; // esi - char *v22; // [esp+0h] [ebp-20h] - int v23; // [esp+8h] [ebp-18h] - unsigned int v24; // [esp+Ch] [ebp-14h] - char *v25; // [esp+38h] [ebp+18h] - - v6 = a6; - v7 = a5; - v8 = a1; - v9 = *a3; - if ( (a6 - a5) >> 1 <= v9 || (unsigned __int8)(v9 - 1) > 0x7Du ) - { - if ( a6 == a5 ) - return a1; - v13 = -1; - v12 = -1; - v23 = 0; - v24 = 0; - v22 = a3; - goto LABEL_10; - } - v23 = 0; - v10 = 0; - do - { - v6 -= 2 * v9; - if ( a4 - 1 > v10 ) - ++v10; - else - ++v23; - v9 = a3[v10]; - } - while ( (v6 - a5) >> 1 > v9 && (unsigned __int8)(v9 - 1) <= 0x7Du ); - v11 = v10; - v24 = v10; - v22 = &a3[v10]; - v8 = a1; - v12 = v23 - 1; - v13 = v11 - 1; - if ( a5 != v6 ) - { -LABEL_10: - result = (_WORD *)((char *)v8 + v6 - a5); - do - { - *v8 = *(_WORD *)v7; - v7 += 2; - ++v8; - } - while ( v8 != result ); - goto LABEL_12; - } - result = a1; -LABEL_12: - if ( v23 ) - { - do - { - v15 = result + 1; - *result = a2; - v16 = (unsigned __int8)*v22; - if ( (char)v16 <= 0 ) - { - ++result; - } - else - { - result += (unsigned __int8)(v16 + 1); - v17 = v6; - do - { - *v15 = *(_WORD *)v17; - v17 += 2; - ++v15; - } - while ( v15 != result ); - v6 += 2 * v16; - } - v18 = v12-- == 0; - } - while ( !v18 ); - } - if ( v24 ) - { - v25 = v6; - do - { - v19 = result + 1; - *result = a2; - v20 = (unsigned __int8)a3[v13]; - if ( (char)v20 <= 0 ) - { - ++result; - } - else - { - result += (unsigned __int8)(v20 + 1); - v21 = v25; - do - { - *v19 = *(_WORD *)v21; - v21 += 2; - ++v19; - } - while ( v19 != result ); - v25 += 2 * v20; - } - v18 = v13-- == 0; - } - while ( !v18 ); - } - return result; -} - -//----- (004F96B0) -------------------------------------------------------- -void __cdecl std::__convert_to_v(unsigned __int8 *a1, double *a2, _DWORD *a3) -{ - long double v3; // fst7 - char *Locale; // [esp+10h] [ebp-5Ch] - char *Src; // [esp+14h] [ebp-58h] - unsigned int Size; // [esp+18h] [ebp-54h] - unsigned __int8 *v7; // [esp+5Ch] [ebp-10h] BYREF - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - Locale = (char *)operator new[](Size); - memcpy(Locale, Src, Size); - setlocale(0, "C"); - v3 = __mingw_strtod(a1, &v7); - *a2 = v3; - if ( v7 == a1 || *v7 ) - { - *a2 = 0.0; - *a3 = 4; - } - else if ( v3 < -1.797693134862316e308 || v3 > 1.797693134862316e308 ) - { - if ( v3 <= 0.0 ) - *a2 = -1.797693134862316e308; - else - *a2 = 1.797693134862316e308; - *a3 = 4; - } - setlocale(0, Locale); - operator delete[](Locale); -} - -//----- (004F9860) -------------------------------------------------------- -void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3) -{ - long double v3; // fst7 - long double v4; // fst7 - char *Locale; // [esp+10h] [ebp-5Ch] - char *Src; // [esp+14h] [ebp-58h] - unsigned int Size; // [esp+18h] [ebp-54h] - char *EndPtr; // [esp+5Ch] [ebp-10h] BYREF - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - Locale = (char *)operator new[](Size); - memcpy(Locale, Src, Size); - setlocale(0, "C"); - v3 = strtold(String, &EndPtr); - *a2 = v3; - if ( EndPtr == String || *EndPtr ) - { - *a2 = 0.0; - *a3 = 4; - } - else if ( v3 < -1.189731495357231765e4932 || v3 > 1.189731495357231765e4932 ) - { - if ( v3 <= 0.0 ) - v4 = -1.189731495357231765e4932; - else - v4 = 1.189731495357231765e4932; - *a2 = v4; - *a3 = 4; - } - setlocale(0, Locale); - operator delete[](Locale); -} - -//----- (004F99F0) -------------------------------------------------------- -void __cdecl std::__convert_to_v(unsigned __int8 *a1, float *a2, _DWORD *a3) -{ - long double v3; // fst7 - int v4; // eax - char *Locale; // [esp+10h] [ebp-5Ch] - char *Src; // [esp+14h] [ebp-58h] - unsigned int Size; // [esp+18h] [ebp-54h] - unsigned __int8 *v8; // [esp+5Ch] [ebp-10h] BYREF - - Src = setlocale(0, 0); - Size = strlen(Src) + 1; - Locale = (char *)operator new[](Size); - memcpy(Locale, Src, Size); - setlocale(0, "C"); - v3 = __mingw_strtof(a1, &v8); - *a2 = v3; - if ( v8 == a1 || *v8 ) - { - *a2 = 0.0; - *a3 = 4; - } - else if ( v3 < -3.4028235e38 || v3 > 3.4028235e38 ) - { - v4 = -8388609; - if ( v3 > 0.0 ) - v4 = 2139095039; - *(_DWORD *)a2 = v4; - *a3 = 4; - } - setlocale(0, Locale); - operator delete[](Locale); -} - -//----- (004F9B80) -------------------------------------------------------- -void (*std::get_unexpected(void))(void) -{ - return __cxxabiv1::__unexpected_handler; -} - -//----- (004F9B90) -------------------------------------------------------- -__int32 __cdecl std::set_unexpected(void (__noreturn *a1)(void)) -{ - void (__noreturn *v1)(void); // eax - - v1 = a1; - if ( !a1 ) - v1 = std::terminate; - return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__unexpected_handler, (__int32)v1); -} - -//----- (004F9BB0) -------------------------------------------------------- -int std::get_new_handler(void) -{ - return `anonymous namespace'::__new_handler; -} -// 50B3B0: using guessed type int `anonymous namespace'::__new_handler; - -//----- (004F9BC0) -------------------------------------------------------- -__int32 __cdecl std::set_new_handler(void (*a1)(void)) -{ - return _InterlockedExchange(&`anonymous namespace'::__new_handler, (__int32)a1); -} -// 50B3B0: using guessed type int `anonymous namespace'::__new_handler; - -//----- (004F9BD0) -------------------------------------------------------- -int std::__convert_from_v(int *const *a1, char *a2, int a3, char *a4, ...) -{ - char *v4; // ebx - unsigned int Size; // edi - void *Locale; // esi - int v8; // ebx - va_list va; // [esp+30h] [ebp+14h] BYREF - - va_start(va, a4); - v4 = setlocale(4, 0); - if ( *v4 == 67 && !v4[1] ) - return __mingw_vsnprintf((FILE *)a2, a3, a4, (int *)va); - Size = strlen(v4) + 1; - Locale = (void *)operator new[](Size); - memcpy(Locale, v4, Size); - setlocale(4, "C"); - v8 = __mingw_vsnprintf((FILE *)a2, a3, a4, (int *)va); - setlocale(4, (const char *)Locale); - operator delete[](Locale); - return v8; -} - -//----- (004F9CB0) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::__ostream_insert>( - std::ostream::sentry *a1, - int a2, - int a3) -{ - int v3; // eax - char *v4; // edi - int v5; // ebx - bool v6; // zf - _DWORD *v7; // ecx - unsigned __int8 *v8; // eax - int v9; // ecx - int v11; // eax - int v12; // edx - int v13; // eax - _DWORD *v14; // ecx - unsigned __int8 *v15; // eax - int (__stdcall *v16)(unsigned __int8); // eax - int (__stdcall *v17)(unsigned __int8); // eax - int v18; // [esp+0h] [ebp-88h] - std::ostream *v19; // [esp+4h] [ebp-84h] - _BYTE *v20; // [esp+14h] [ebp-74h] - int v21; // [esp+18h] [ebp-70h] - _BYTE *v22; // [esp+1Ch] [ebp-6Ch] - int v23; // [esp+20h] [ebp-68h] - int v24; // [esp+20h] [ebp-68h] - unsigned __int8 v25; // [esp+24h] [ebp-64h] - unsigned __int8 v26; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] - char v29[4]; // [esp+68h] [ebp-20h] BYREF - _DWORD *v30; // [esp+6Ch] [ebp-1Ch] - - std::ostream::sentry::sentry((int)v29, a1, v19); - if ( v29[0] ) - { - v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v4 = (char *)a1 + v3; - v5 = *(_DWORD *)((char *)a1 + v3 + 8); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v3); - if ( a3 >= v5 ) - { - v11 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)lpuexcpt + 30) + 48))( - *((_DWORD *)lpuexcpt + 30), - a2, - a3); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - if ( a3 != v11 ) - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - goto LABEL_12; - } - goto LABEL_11; - } - v21 = *((_DWORD *)v4 + 3) & 0xB0; - if ( v21 == 32 ) - { - if ( *((_DWORD *)lpuexcpt + 5) ) - { -LABEL_11: - *((_DWORD *)lpuexcpt + 2) = 0; - goto LABEL_12; - } - } - else - { - v23 = v5 - a3; - if ( v4[117] ) - { - v25 = v4[116]; - } - else - { - v20 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v20 ) - std::__throw_bad_cast(); - if ( v20[28] ) - { - v25 = v20[61]; - } - else - { - std::ctype::_M_widen_init((int)v20); - v25 = 32; - v16 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v20 + 24); - if ( v16 != std::ctype::do_widen ) - v25 = ((int (__thiscall *)(_BYTE *, int))v16)(v20, 32); - } - *((_BYTE *)lpuexcpt + 116) = v25; - *((_BYTE *)lpuexcpt + 117) = 1; - v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); - } - do - { - v7 = *(_DWORD **)((char *)a1 + v3 + 120); - v8 = (unsigned __int8 *)v7[5]; - if ( (unsigned int)v8 < v7[6] ) - { - *v8 = v25; - ++v7[5]; - } - else if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v7 + 52))(v7, v25) == -1 ) - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - if ( !*((_DWORD *)lpuexcpt + 5) ) - goto LABEL_21; - goto LABEL_11; - } - v6 = v23-- == 1; - v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); - } - while ( !v6 ); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v3); - if ( *(_DWORD *)((char *)a1 + v3 + 20) ) - goto LABEL_11; - } -LABEL_21: - v12 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)lpuexcpt + 30) + 48))( - *((_DWORD *)lpuexcpt + 30), - a2, - a3); - v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v13); - if ( a3 != v12 ) - { - std::ios::clear((std::ostream::sentry *)((char *)a1 + v13), *(_DWORD *)((char *)a1 + v13 + 20) | 1); - v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v13); - } - if ( v21 == 32 && !*((_DWORD *)lpuexcpt + 5) ) - { - v24 = v5 - a3; - if ( *((_BYTE *)lpuexcpt + 117) ) - { - v26 = *((_BYTE *)lpuexcpt + 116); - } - else - { - v22 = (_BYTE *)*((_DWORD *)lpuexcpt + 31); - if ( !v22 ) - std::__throw_bad_cast(); - if ( v22[28] ) - { - v26 = v22[61]; - } - else - { - std::ctype::_M_widen_init((int)v22); - v26 = 32; - v17 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v22 + 24); - if ( v17 != std::ctype::do_widen ) - v26 = ((int (__thiscall *)(_BYTE *, int))v17)(v22, 32); - } - *((_BYTE *)lpuexcpt + 116) = v26; - *((_BYTE *)lpuexcpt + 117) = 1; - v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); - } - do - { - v14 = *(_DWORD **)((char *)a1 + v13 + 120); - v15 = (unsigned __int8 *)v14[5]; - if ( (unsigned int)v15 < v14[6] ) - { - *v15 = v26; - ++v14[5]; - } - else if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v14 + 52))(v14, v26) == -1 ) - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); - goto LABEL_11; - } - v6 = v24-- == 1; - v13 = *(_DWORD *)(*(_DWORD *)a1 - 12); - } - while ( !v6 ); - lpuexcpt = (std::ostream::sentry *)((char *)a1 + v13); - } - goto LABEL_11; - } -LABEL_12: - lpuexcpta = (struct _Unwind_Exception *)((char *)v30 + *(_DWORD *)(*v30 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v9 = *((_DWORD *)lpuexcpta + 30); - if ( v9 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v9 + 24))(v9, v18) == -1 ) - std::ios::clear( - (_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12)), - *(_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12) + 20) | 1); - } - } - return a1; -} -// 4F9CEF: variable 'v19' is possibly undefined -// 4F9E1A: variable 'v18' is possibly undefined -// 4F9CB0: using guessed type char var_20[4]; - -//----- (004FA1F0) -------------------------------------------------------- -int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3) -{ - char *v3; // esi - int v4; // edi - struct _Unwind_Exception *v5; // edx - unsigned int v6; // eax - _DWORD *v7; // ecx - unsigned int v8; // eax - __int16 v9; // ax - int v10; // ecx - int v12; // eax - int v13; // eax - unsigned int v14; // eax - unsigned __int16 v15; // ax - _DWORD *v16; // ecx - unsigned int v17; // eax - int v18; // ecx - int v19; // ecx - int v20; // [esp+0h] [ebp-88h] - int v21; // [esp+18h] [ebp-70h] - int v22; // [esp+20h] [ebp-68h] - int v23; // [esp+20h] [ebp-68h] - unsigned __int16 v24; // [esp+24h] [ebp-64h] - unsigned __int16 v25; // [esp+24h] [ebp-64h] - struct _Unwind_Exception *lpuexcpt; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcpta; // [esp+28h] [ebp-60h] - struct _Unwind_Exception *lpuexcptb; // [esp+28h] [ebp-60h] - int v29; // [esp+68h] [ebp-20h] BYREF - _DWORD *v30; // [esp+6Ch] [ebp-1Ch] - - std::wostream::sentry::sentry(&v29, a1); - if ( (_BYTE)v29 ) - { - v3 = (char *)a1 + *(_DWORD *)(*a1 - 12); - v4 = *((_DWORD *)v3 + 2); - lpuexcpt = (struct _Unwind_Exception *)v3; - v5 = (struct _Unwind_Exception *)v3; - if ( a3 >= v4 ) - { - v12 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v3 + 30) + 48))(*((_DWORD *)v3 + 30), a2, a3); - v5 = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - if ( a3 != v12 ) - { - std::wios::clear( - (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); -LABEL_20: - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; - goto LABEL_12; - } - goto LABEL_11; - } - v21 = *((_DWORD *)v3 + 3) & 0xB0; - if ( v21 == 32 ) - { - if ( *((_DWORD *)v3 + 5) ) - { -LABEL_11: - *((_DWORD *)v5 + 2) = 0; - goto LABEL_12; - } - } - else - { - v22 = v4 - a3; - if ( v3[118] ) - { - v24 = *((_WORD *)v3 + 58); - } - else - { - v18 = *((_DWORD *)v3 + 31); - if ( !v18 ) - std::__throw_bad_cast(); - v24 = (*(int (__fastcall **)(int, char *, int))(*(_DWORD *)v18 + 40))(v18, v3, 32); - *((_WORD *)v3 + 58) = v24; - v3[118] = 1; - lpuexcpt = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - } - do - { - v7 = (_DWORD *)*((_DWORD *)lpuexcpt + 30); - v5 = lpuexcpt; - v8 = v7[5]; - if ( v8 < v7[6] ) - { - v6 = v8 + 2; - *(_WORD *)(v6 - 2) = v24; - v7[5] = v6; - if ( v24 == 0xFFFF ) - goto LABEL_10; - } - else - { - v9 = (*(int (__fastcall **)(_DWORD *, struct _Unwind_Exception *, _DWORD))(*v7 + 52))(v7, lpuexcpt, v24); - lpuexcpt = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = lpuexcpt; - if ( v9 == -1 ) - { -LABEL_10: - std::wios::clear(lpuexcpt, *((_DWORD *)lpuexcpt + 5) | 1); - v5 = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - if ( !*((_DWORD *)v5 + 5) ) - goto LABEL_22; - goto LABEL_11; - } - } - --v22; - } - while ( v22 ); - if ( *((_DWORD *)lpuexcpt + 5) ) - goto LABEL_11; - } -LABEL_22: - v13 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v5 + 30) + 48))(*((_DWORD *)v5 + 30), a2, a3); - lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = lpuexcptb; - if ( a3 != v13 ) - { - std::wios::clear( - (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = lpuexcptb; - } - if ( v21 == 32 && !*((_DWORD *)lpuexcptb + 5) ) - { - v23 = v4 - a3; - if ( *((_BYTE *)lpuexcptb + 118) ) - { - v25 = *((_WORD *)lpuexcptb + 58); - } - else - { - v19 = *((_DWORD *)lpuexcptb + 31); - if ( !v19 ) - std::__throw_bad_cast(); - v25 = (*(int (__fastcall **)(int, struct _Unwind_Exception *, int))(*(_DWORD *)v19 + 40))(v19, v5, 32); - *((_WORD *)lpuexcptb + 58) = v25; - *((_BYTE *)lpuexcptb + 118) = 1; - lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - } - while ( 1 ) - { - v16 = (_DWORD *)*((_DWORD *)lpuexcptb + 30); - v5 = lpuexcptb; - v17 = v16[5]; - if ( v17 < v16[6] ) - { - v14 = v17 + 2; - *(_WORD *)(v14 - 2) = v25; - v16[5] = v14; - v15 = v25; - } - else - { - v15 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v16 + 52))(v16, v25); - lpuexcptb = (struct _Unwind_Exception *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v5 = lpuexcptb; - } - if ( v15 == 0xFFFF ) - break; - if ( !--v23 ) - goto LABEL_11; - } - std::wios::clear(lpuexcptb, *((_DWORD *)lpuexcptb + 5) | 1); - goto LABEL_20; - } - goto LABEL_11; - } -LABEL_12: - lpuexcpta = (struct _Unwind_Exception *)((char *)v30 + *(_DWORD *)(*v30 - 12)); - if ( (*((_BYTE *)lpuexcpta + 13) & 0x20) != 0 && !std::uncaught_exception() ) - { - v10 = *((_DWORD *)lpuexcpta + 30); - if ( v10 ) - { - if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v10 + 24))(v10, v20) == -1 ) - std::wios::clear( - (_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12)), - *(_DWORD *)((char *)v30 + *(_DWORD *)(*v30 - 12) + 20) | 1); - } - } - return a1; -} -// 4FA36F: variable 'v20' is possibly undefined - -//----- (004FA6D0) -------------------------------------------------------- -int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) -{ - char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF - - return std::__copy_streambufs_eof>(a1, a2, v3); -} -// 4FA6D0: using guessed type char var_D[13]; - -//----- (004FA700) -------------------------------------------------------- -int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) -{ - char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF - - return std::__copy_streambufs_eof>(a1, a2, v3); -} -// 4FA700: using guessed type char var_D[13]; - -//----- (004FA730) -------------------------------------------------------- -int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3) -{ - return (unsigned __int8)std::__verify_grouping_impl(a1, a2, *(const char **)a3, *(_DWORD *)(a3 + 4)); -} - -//----- (004FA7D0) -------------------------------------------------------- -int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3) -{ - return std::__verify_grouping_impl(a1, a2, *a3, *((_DWORD *)*a3 - 3)); -} - -//----- (004FA800) -------------------------------------------------------- -void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden) -{ - if ( (_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec ) - return &`anonymous namespace'::__io_category_instance(void)::__ec; - if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) - { - __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); - atexit((_PVFV)__tcf_0_4); - } - return &`anonymous namespace'::__io_category_instance(void)::__ec; -} -// 50CBD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); - -//----- (004FA860) -------------------------------------------------------- -int __cdecl std::_Rb_tree_decrement(_DWORD *a1) -{ - int v1; // eax - int v2; // edx - int v4; // eax - - if ( !*a1 && a1 == *(_DWORD **)(a1[1] + 4) ) - return a1[3]; - v1 = a1[2]; - if ( v1 ) - { - do - { - v2 = v1; - v1 = *(_DWORD *)(v1 + 12); - } - while ( v1 ); - return v2; - } - v2 = a1[1]; - if ( a1 != *(_DWORD **)(v2 + 8) ) - return v2; - do - { - v4 = v2; - v2 = *(_DWORD *)(v2 + 4); - } - while ( v4 == *(_DWORD *)(v2 + 8) ); - return v2; -} - -//----- (004FA8C0) -------------------------------------------------------- -int __cdecl std::_Rb_tree_decrement(_DWORD *a1) -{ - int v1; // eax - int v2; // edx - int v4; // eax - - if ( !*a1 && a1 == *(_DWORD **)(a1[1] + 4) ) - return a1[3]; - v1 = a1[2]; - if ( v1 ) - { - do - { - v2 = v1; - v1 = *(_DWORD *)(v1 + 12); - } - while ( v1 ); - return v2; - } - v2 = a1[1]; - if ( a1 != *(_DWORD **)(v2 + 8) ) - return v2; - do - { - v4 = v2; - v2 = *(_DWORD *)(v2 + 4); - } - while ( *(_DWORD *)(v2 + 8) == v4 ); - return v2; -} - -//----- (004FA920) -------------------------------------------------------- -int __cdecl std::_Rb_tree_increment(int a1) -{ - int v1; // eax - int v2; // edx - int v4; // eax - int v5; // edx - - v1 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - do - { - v2 = v1; - v1 = *(_DWORD *)(v1 + 8); - } - while ( v1 ); - return v2; - } - v4 = *(_DWORD *)(a1 + 4); - if ( a1 != *(_DWORD *)(v4 + 12) ) - return *(_DWORD *)(a1 + 4); - do - { - v5 = v4; - v4 = *(_DWORD *)(v4 + 4); - } - while ( *(_DWORD *)(v4 + 12) == v5 ); - if ( v4 != *(_DWORD *)(v5 + 12) ) - return v4; - return v5; -} - -//----- (004FA970) -------------------------------------------------------- -int __cdecl std::_Rb_tree_increment(int a1) -{ - int v1; // eax - int v2; // edx - int v4; // eax - int v5; // edx - - v1 = *(_DWORD *)(a1 + 12); - if ( v1 ) - { - do - { - v2 = v1; - v1 = *(_DWORD *)(v1 + 8); - } - while ( v1 ); - return v2; - } - v4 = *(_DWORD *)(a1 + 4); - if ( a1 != *(_DWORD *)(v4 + 12) ) - return *(_DWORD *)(a1 + 4); - do - { - v5 = v4; - v4 = *(_DWORD *)(v4 + 4); - } - while ( *(_DWORD *)(v4 + 12) == v5 ); - if ( v4 != *(_DWORD *)(v5 + 12) ) - return v4; - return v5; -} - -//----- (004FA9C0) -------------------------------------------------------- -bool std::uncaught_exception(void) -{ - return __cxa_get_globals()[1] != 0; -} - -//----- (004FA9E0) -------------------------------------------------------- -int std::uncaught_exceptions(void) -{ - return __cxa_get_globals()[1]; -} - -//----- (004FA9F0) -------------------------------------------------------- -int __cdecl std::_Rb_tree_black_count(_DWORD *a1, _DWORD *a2) -{ - _DWORD *v2; // eax - int v3; // edx - - v2 = a1; - v3 = 0; - if ( a1 ) - { - while ( 1 ) - { - v3 += *v2 == 1; - if ( v2 == a2 ) - break; - v2 = (_DWORD *)v2[1]; - } - } - return v3; -} - -//----- (004FAA20) -------------------------------------------------------- -int __cdecl std::_Rb_tree_rotate_left(int a1, _DWORD *a2) -{ - int result; // eax - int v3; // edx - int v4; // ecx - int v5; // ecx - - result = a1; - v3 = *(_DWORD *)(a1 + 12); - v4 = *(_DWORD *)(v3 + 8); - *(_DWORD *)(a1 + 12) = v4; - if ( v4 ) - *(_DWORD *)(v4 + 4) = a1; - v5 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v3 + 4) = v5; - if ( a1 == *a2 ) - { - *a2 = v3; - *(_DWORD *)(v3 + 8) = a1; - *(_DWORD *)(a1 + 4) = v3; - } - else - { - if ( a1 == *(_DWORD *)(v5 + 8) ) - *(_DWORD *)(v5 + 8) = v3; - else - *(_DWORD *)(v5 + 12) = v3; - *(_DWORD *)(v3 + 8) = a1; - *(_DWORD *)(a1 + 4) = v3; - } - return result; -} - -//----- (004FAA80) -------------------------------------------------------- -int __cdecl std::_Rb_tree_rotate_right(int a1, _DWORD *a2) -{ - int result; // eax - int v3; // edx - int v4; // ecx - int v5; // ecx - - result = a1; - v3 = *(_DWORD *)(a1 + 8); - v4 = *(_DWORD *)(v3 + 12); - *(_DWORD *)(a1 + 8) = v4; - if ( v4 ) - *(_DWORD *)(v4 + 4) = a1; - v5 = *(_DWORD *)(a1 + 4); - *(_DWORD *)(v3 + 4) = v5; - if ( a1 == *a2 ) - { - *a2 = v3; - *(_DWORD *)(v3 + 12) = a1; - *(_DWORD *)(a1 + 4) = v3; - } - else - { - if ( a1 == *(_DWORD *)(v5 + 12) ) - *(_DWORD *)(v5 + 12) = v3; - else - *(_DWORD *)(v5 + 8) = v3; - *(_DWORD *)(v3 + 12) = a1; - *(_DWORD *)(a1 + 4) = v3; - } - return result; -} - -//----- (004FAAE0) -------------------------------------------------------- -int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) -{ - _BYTE *v3; // ecx - unsigned int v4; // ebx - int v5; // eax - int v6; // edi - int v7; // ebx - int v8; // eax - _BYTE *v9; // ecx - unsigned int v10; // ecx - - v3 = (_BYTE *)a1[2]; - v4 = a1[3]; - *a3 = 1; - if ( (unsigned int)v3 >= v4 ) - { - v6 = 0; - v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v5 == -1 ) - return v6; - v4 = a1[3]; - v3 = (_BYTE *)a1[2]; - } - else - { - LOBYTE(v5) = *v3; - } - v6 = 0; - while ( 1 ) - { - v7 = v4 - (_DWORD)v3; - if ( v7 > 1 ) - break; - while ( 1 ) - { - v9 = (_BYTE *)a2[5]; - if ( (unsigned int)v9 >= a2[6] ) - { - if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, (unsigned __int8)v5) == -1 ) - goto LABEL_15; - } - else - { - *v9 = v5; - ++a2[5]; - } - v10 = a1[2]; - v4 = a1[3]; - ++v6; - if ( v10 >= v4 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1) == -1 ) - return v6; - v3 = (_BYTE *)a1[2]; - v4 = a1[3]; - } - else - { - v3 = (_BYTE *)(v10 + 1); - a1[2] = v3; - } - if ( v4 > (unsigned int)v3 ) - break; -LABEL_6: - v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - if ( v5 == -1 ) - return v6; - v3 = (_BYTE *)a1[2]; - v7 = a1[3] - (_DWORD)v3; - if ( v7 > 1 ) - goto LABEL_5; - } - LOBYTE(v5) = *v3; - } -LABEL_5: - v8 = (*(int (__thiscall **)(_DWORD *, _BYTE *, int))(*a2 + 48))(a2, v3, v7); - a1[2] += v8; - v6 += v8; - if ( v8 >= v7 ) - goto LABEL_6; -LABEL_15: - *a3 = 0; - return v6; -} - -//----- (004FABE0) -------------------------------------------------------- -int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) -{ - unsigned __int16 *v3; // eax - int v4; // ecx - int v5; // edi - int v6; // esi - int v7; // eax - unsigned int v8; // edx - __int16 *v9; // eax - _WORD *v10; // esi - __int16 v11; // dx - unsigned __int16 *v12; // eax - - *a3 = 1; - v3 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v3 >= a1[3] ) - v4 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - else - v4 = *v3; - v5 = 0; - while ( (_WORD)v4 != 0xFFFF ) - { - v8 = a1[3]; - v9 = (__int16 *)a1[2]; - if ( (int)(v8 - (_DWORD)v9) > 2 ) - { - v6 = (int)(v8 - (_DWORD)v9) >> 1; - v7 = (*(int (__thiscall **)(_DWORD *, _DWORD, int))(*a2 + 48))(a2, a1[2], v6); - a1[2] += 2 * v7; - v5 += v7; - if ( v7 < v6 ) - goto LABEL_15; - goto LABEL_6; - } - v10 = (_WORD *)a2[5]; - if ( (unsigned int)v10 >= a2[6] ) - { - if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v4) == 0xFFFF ) - { -LABEL_15: - *a3 = 0; - return v5; - } - v9 = (__int16 *)a1[2]; - ++v5; - if ( (unsigned int)v9 < a1[3] ) - { -LABEL_11: - v11 = *v9; - a1[2] = v9 + 1; - goto LABEL_12; - } - } - else - { - *v10 = v4; - ++v5; - a2[5] = v10 + 1; - if ( (unsigned int)v9 < v8 ) - goto LABEL_11; - } - v11 = (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1); -LABEL_12: - if ( v11 == -1 ) - return v5; - v12 = (unsigned __int16 *)a1[2]; - if ( (unsigned int)v12 < a1[3] ) - { - v4 = *v12; - continue; - } -LABEL_6: - v4 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); - } - return v5; -} - -//----- (004FACF0) -------------------------------------------------------- -void __cdecl std::__destroy_ios_failure(void (__cdecl ***a1)(std::ios_base::failure *__hidden this)) -{ - void (__cdecl *v1)(std::ios_base::failure *__hidden); // eax - int v2; // eax - void (__cdecl **v3)(std::ios_base::failure *__hidden); // ecx - int v4; // eax - int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF - - v1 = **a1; - if ( v1 == std::ios_base::failure::~failure ) - { - v2 = _CRT_MT; - v3 = a1[1]; - *a1 = &off_51A79C; - if ( v2 ) - { - if ( _InterlockedExchangeAdd((volatile signed __int32 *)v3 - 1, 0xFFFFFFFF) > 0 ) - goto LABEL_4; - } - else - { - v4 = (int)*(v3 - 1); - *(v3 - 1) = (void (__cdecl *)(std::ios_base::failure *__hidden))(v4 - 1); - if ( v4 > 0 ) - { -LABEL_4: - std::exception::~exception((std::exception *)a1); - return; - } - } - std::string::_Rep::_M_destroy(v3 - 3, (int)v5); - std::exception::~exception((std::exception *)a1); - } - else - { - ((void (__fastcall *)(void (__cdecl ***)(std::ios_base::failure *__hidden)))v1)(a1); - } -} -// 50B0F0: using guessed type int _CRT_MT; -// 51A79C: using guessed type void (__cdecl *off_51A79C)(std::ios_base::failure *__hidden this); -// 4FACF0: using guessed type int var_D[3]; - -//----- (004FAD70) -------------------------------------------------------- -int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4) -{ - const char *v4; // ecx - int v5; // eax - unsigned int v6; // ebp - unsigned int v7; // edx - char v8; // bl - char v9; // cl - bool v10; // cl - bool v11; // di - char v12; // bl - char v13; // dl - char v15; // [esp+3h] [ebp-11h] - unsigned __int8 v16; // [esp+3h] [ebp-11h] - - v4 = a3; - v5 = a4 - 1; - v6 = a2 - 1; - if ( a2 - 1 > a4 - 1 ) - v6 = a4 - 1; - if ( v6 ) - { - v7 = 0; - do - { - v8 = a3[v5--]; - v9 = a1[v7++]; - v15 = v9; - v10 = v8 != v9; - v11 = v10; - } - while ( v7 < v6 && !v10 ); - v4 = a3; - v16 = v8 == v15; - } - else - { - v16 = 1; - v11 = 0; - } - v12 = a1[v6]; - if ( v5 && !v11 ) - { - do - v13 = v4[v5--]; - while ( v5 && v13 == v12 ); - v16 = v13 == v12; - } - if ( (unsigned __int8)(v12 - 1) <= 0x7Du ) - v16 &= *v4 <= (unsigned __int8)v12; - return v16; -} - -//----- (004FAE40) -------------------------------------------------------- -void __cdecl std::__construct_ios_failure(_DWORD *a1, char *a2) -{ - int v2; // ecx - int v3; // eax - const std::string *v4; // [esp+4h] [ebp-28h] - int v5; // [esp+1Ah] [ebp-12h] BYREF - _DWORD v6[4]; // [esp+1Ch] [ebp-10h] BYREF - - std::string::string(v6, a2, (int)&v5); - std::ios_base::failure::failure(a1, (std::ios_base::failure *)v6, v4); - v2 = v6[0]; - if ( !_CRT_MT ) - { - v3 = *(_DWORD *)(v6[0] - 4); - *(_DWORD *)(v6[0] - 4) = v3 - 1; - if ( v3 > 0 ) - return; -LABEL_5: - std::string::_Rep::_M_destroy((void *)(v2 - 12), (int)&v5 + 1); - return; - } - if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v6[0] - 4), 0xFFFFFFFF) <= 0 ) - goto LABEL_5; -} -// 4FAE68: variable 'v4' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004FAEC0) -------------------------------------------------------- -bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *a1) -{ - return std::type_info::operator==(a1, (int)&`typeinfo for'std::ios_base::failure); -} -// 516354: using guessed type int *`typeinfo for'std::ios_base::failure; - -//----- (004FAEE0) -------------------------------------------------------- -void __noreturn std::__throw_out_of_range_fmt(char *Str, ...) -{ - size_t v1; // eax - unsigned int v2; // edx - int v3; // eax - void *v4; // esp - void *v5; // esp - std::out_of_range *exception; // eax - std::out_of_range *v7; // ecx - const char *v8; // [esp+4h] [ebp-54h] - char v9[4]; // [esp+10h] [ebp-48h] BYREF - std::out_of_range *v10; // [esp+18h] [ebp-40h] - va_list va; // [esp+64h] [ebp+Ch] BYREF - - va_start(va, Str); - v1 = strlen(Str); - v2 = v1 + 512; - v3 = 16 * ((v1 + 539) >> 4); - v4 = alloca(v3); - v5 = alloca(v3); - v10 = (std::out_of_range *)v9; - __gnu_cxx::__snprintf_lite(v9, v2, Str, va); - exception = (std::out_of_range *)__cxa_allocate_exception(8u); - v7 = v10; - v10 = exception; - std::out_of_range::out_of_range(exception, v7, v8); - __cxa_throw( - v10, - (struct type_info *)&`typeinfo for'std::out_of_range, - (void (__cdecl *)(void *))std::out_of_range::~out_of_range); -} -// 4FAF7D: variable 'v8' is possibly undefined -// 5164BC: using guessed type int *`typeinfo for'std::out_of_range; -// 4FAEE0: using guessed type char anonymous_0[4]; - -//----- (004FAFD0) -------------------------------------------------------- -int *__cdecl std::_Rb_tree_rebalance_for_erase(int *a1, _DWORD *a2) -{ - int v2; // ebp - int v3; // edi - int v4; // eax - int *v5; // ecx - _DWORD *v6; // edx - _DWORD *v7; // eax - _DWORD *v8; // ebp - int v9; // edi - int v10; // edi - _DWORD *v11; // ebp - _DWORD *v12; // edi - _DWORD *v13; // ecx - _DWORD *v14; // ebp - _DWORD *v15; // edi - _DWORD *v16; // ebp - int v17; // ecx - int v18; // ecx - int v20; // ecx - _DWORD *v21; // ecx - _DWORD *v22; // ebp - int v23; // edi - _DWORD *v24; // edi - int v25; // edi - _DWORD *v26; // edi - _DWORD *v27; // ecx - _DWORD *v28; // edi - _DWORD *v29; // edi - int v30; // edi - int v31; // edi - _DWORD *v32; // ebp - _DWORD *v33; // edi - int v34; // ecx - int v35; // ecx - _DWORD *v36; // edi - int v37; // edi - int v38; // edi - _DWORD *v39; // edi - _DWORD *v40; // [esp+0h] [ebp-14h] - _DWORD *v41; // [esp+0h] [ebp-14h] - - v2 = a1[2]; - v3 = a1[3]; - if ( !v2 ) - goto LABEL_76; - if ( !v3 ) - { - v7 = (_DWORD *)a1[1]; - goto LABEL_44; - } - v4 = a1[3]; - do - { - v5 = (int *)v4; - v4 = *(_DWORD *)(v4 + 8); - } - while ( v4 ); - v6 = (_DWORD *)v5[3]; - if ( v5 == a1 ) - { - v3 = v5[3]; -LABEL_76: - v7 = (_DWORD *)a1[1]; - if ( !v3 ) - { - v6 = 0; - goto LABEL_45; - } - v2 = v3; -LABEL_44: - *(_DWORD *)(v2 + 4) = v7; - v6 = (_DWORD *)v2; -LABEL_45: - if ( (int *)a2[1] == a1 ) - { - a2[1] = v6; - } - else - { - v20 = a1[1]; - if ( *(int **)(v20 + 8) == a1 ) - *(_DWORD *)(v20 + 8) = v6; - else - *(_DWORD *)(v20 + 12) = v6; - } - if ( (int *)a2[2] == a1 ) - { - v27 = v6; - if ( a1[3] ) - { - do - { - v28 = v27; - v27 = (_DWORD *)v27[2]; - } - while ( v27 ); - a2[2] = v28; - } - else - { - a2[2] = a1[1]; - } - } - v10 = *a1; - if ( (int *)a2[3] == a1 ) - { - v21 = v6; - if ( a1[2] ) - { - do - { - v22 = v21; - v21 = (_DWORD *)v21[3]; - } - while ( v21 ); - a2[3] = v22; - } - else - { - a2[3] = a1[1]; - } - } - goto LABEL_14; - } - *(_DWORD *)(v2 + 4) = v5; - v7 = (_DWORD *)v3; - v5[2] = v2; - if ( v5 != (int *)v3 ) - { - v7 = (_DWORD *)v5[1]; - v8 = v7; - if ( v6 ) - { - v6[1] = v7; - v8 = (_DWORD *)v5[1]; - } - v8[2] = v6; - v5[3] = v3; - *(_DWORD *)(a1[3] + 4) = v5; - } - if ( (int *)a2[1] == a1 ) - { - a2[1] = v5; - v9 = a1[1]; - } - else - { - v9 = a1[1]; - if ( *(int **)(v9 + 8) == a1 ) - *(_DWORD *)(v9 + 8) = v5; - else - *(_DWORD *)(v9 + 12) = v5; - } - v5[1] = v9; - v10 = *v5; - *v5 = *a1; - *a1 = v10; -LABEL_14: - if ( !v10 ) - return a1; - if ( (_DWORD *)a2[1] == v6 ) - { -LABEL_41: - if ( v6 ) - goto LABEL_67; - return a1; - } - while ( 1 ) - { - if ( v6 && *v6 != 1 ) - goto LABEL_67; - v13 = (_DWORD *)v7[2]; - if ( v13 != v6 ) - break; - v13 = (_DWORD *)v7[3]; - v14 = (_DWORD *)v13[2]; - if ( !*v13 ) - { - *v13 = 1; - *v7 = 0; - v7[3] = v14; - if ( v14 ) - v14[1] = v7; - v25 = v7[1]; - v13[1] = v25; - if ( v7 == (_DWORD *)a2[1] ) - { - a2[1] = v13; - v26 = (_DWORD *)v7[3]; - } - else if ( v7 == *(_DWORD **)(v25 + 8) ) - { - *(_DWORD *)(v25 + 8) = v13; - v26 = v14; - } - else - { - *(_DWORD *)(v25 + 12) = v13; - v26 = (_DWORD *)v7[3]; - } - v13[2] = v7; - v14 = (_DWORD *)v26[2]; - v7[1] = v13; - v13 = v26; - } - if ( v14 && *v14 != 1 ) - { - v36 = (_DWORD *)v13[3]; - v40 = v36; - if ( !v36 || *v36 == 1 ) - { - v37 = v14[3]; - *v14 = 1; - *v13 = 0; - v13[2] = v37; - if ( v37 ) - *(_DWORD *)(v37 + 4) = v13; - v38 = v13[1]; - v14[1] = v38; - if ( v13 == (_DWORD *)a2[1] ) - { - a2[1] = v14; - } - else if ( v13 == *(_DWORD **)(v38 + 12) ) - { - *(_DWORD *)(v38 + 12) = v14; - } - else - { - *(_DWORD *)(v38 + 8) = v14; - } - v14[3] = v13; - v13[1] = v14; - v16 = (_DWORD *)v7[3]; - v39 = (_DWORD *)v16[3]; - *v16 = *v7; - v40 = v39; - *v7 = 1; - if ( !v39 ) - goto LABEL_35; - goto LABEL_34; - } -LABEL_33: - v16 = (_DWORD *)v7[3]; - *v13 = *v7; - *v7 = 1; -LABEL_34: - *v40 = 1; -LABEL_35: - v17 = v16[2]; - v7[3] = v17; - if ( v17 ) - *(_DWORD *)(v17 + 4) = v7; - v18 = v7[1]; - v16[1] = v18; - if ( v7 == (_DWORD *)a2[1] ) - { - a2[1] = v16; - } - else if ( v7 == *(_DWORD **)(v18 + 8) ) - { - *(_DWORD *)(v18 + 8) = v16; - } - else - { - *(_DWORD *)(v18 + 12) = v16; - } - v16[2] = v7; - v7[1] = v16; - goto LABEL_41; - } - v15 = (_DWORD *)v13[3]; - if ( v15 && *v15 != 1 ) - { - v40 = (_DWORD *)v13[3]; - goto LABEL_33; - } -LABEL_22: - *v13 = 0; - v6 = v7; - if ( (_DWORD *)a2[1] == v7 ) - goto LABEL_68; - v7 = (_DWORD *)v7[1]; - } - v11 = (_DWORD *)v13[3]; - if ( !*v13 ) - { - *v13 = 1; - *v7 = 0; - v7[2] = v11; - if ( v11 ) - v11[1] = v7; - v23 = v7[1]; - v13[1] = v23; - if ( v7 == (_DWORD *)a2[1] ) - { - a2[1] = v13; - v24 = (_DWORD *)v7[2]; - } - else if ( v7 == *(_DWORD **)(v23 + 12) ) - { - *(_DWORD *)(v23 + 12) = v13; - v24 = v11; - } - else - { - *(_DWORD *)(v23 + 8) = v13; - v24 = (_DWORD *)v7[2]; - } - v13[3] = v7; - v11 = (_DWORD *)v24[3]; - v7[1] = v13; - v13 = v24; - } - if ( !v11 || *v11 == 1 ) - { - v12 = (_DWORD *)v13[2]; - if ( !v12 || *v12 == 1 ) - goto LABEL_22; - v41 = (_DWORD *)v13[2]; -LABEL_91: - v32 = (_DWORD *)v7[2]; - *v13 = *v7; - *v7 = 1; - goto LABEL_92; - } - v29 = (_DWORD *)v13[2]; - v41 = v29; - if ( v29 && *v29 != 1 ) - goto LABEL_91; - v30 = v11[2]; - *v11 = 1; - *v13 = 0; - v13[3] = v30; - if ( v30 ) - *(_DWORD *)(v30 + 4) = v13; - v31 = v13[1]; - v11[1] = v31; - if ( v13 == (_DWORD *)a2[1] ) - { - a2[1] = v11; - } - else if ( v13 == *(_DWORD **)(v31 + 8) ) - { - *(_DWORD *)(v31 + 8) = v11; - } - else - { - *(_DWORD *)(v31 + 12) = v11; - } - v11[2] = v13; - v13[1] = v11; - v32 = (_DWORD *)v7[2]; - v33 = (_DWORD *)v32[2]; - *v32 = *v7; - v41 = v33; - *v7 = 1; - if ( v33 ) -LABEL_92: - *v41 = 1; - v34 = v32[3]; - v7[2] = v34; - if ( v34 ) - *(_DWORD *)(v34 + 4) = v7; - v35 = v7[1]; - v32[1] = v35; - if ( v7 == (_DWORD *)a2[1] ) - { - a2[1] = v32; - } - else if ( v7 == *(_DWORD **)(v35 + 12) ) - { - *(_DWORD *)(v35 + 12) = v32; - } - else - { - *(_DWORD *)(v35 + 8) = v32; - } - v32[3] = v7; - v7[1] = v32; - if ( !v6 ) - return a1; -LABEL_67: - v7 = v6; -LABEL_68: - *v7 = 1; - return a1; -} - -//----- (004FB460) -------------------------------------------------------- -_DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4) -{ - _DWORD *v4; // ecx - _DWORD *v5; // esi - _DWORD *result; // eax - _DWORD *v7; // edx - _DWORD *v8; // eax - _DWORD *v9; // ebx - _DWORD *v10; // ebp - int v11; // edx - int v12; // ebx - int v13; // ebx - int v14; // edx - int v15; // edx - int v16; // esi - int v17; // ebx - _DWORD *v18; // ebx - int v19; // ebx - _DWORD *v20; // ebx - _DWORD *v21; // esi - - v4 = a2; - a2[1] = a3; - a2[2] = 0; - a2[3] = 0; - *a2 = 0; - if ( !a1 ) - { - a3[3] = a2; - if ( (_DWORD *)a4[3] == a3 ) - { - v5 = (_DWORD *)a4[1]; - a4[3] = a2; - result = v5; -LABEL_6: - if ( a2 == v5 ) - { -LABEL_17: - *result = 1; - return result; - } - while ( 1 ) - { - while ( 1 ) - { - v7 = (_DWORD *)v4[1]; - if ( *v7 ) - goto LABEL_17; - v8 = (_DWORD *)v7[1]; - v9 = (_DWORD *)v8[2]; - if ( v7 != v9 ) - { - if ( !v9 || *v9 ) - { - if ( (_DWORD *)v7[2] == v4 ) - { - v16 = v4[3]; - v17 = v7[1]; - v7[2] = v16; - if ( v16 ) - { - *(_DWORD *)(v16 + 4) = v7; - v17 = v7[1]; - } - v4[1] = v17; - if ( v7 == (_DWORD *)a4[1] ) - { - a4[1] = v4; - } - else if ( v7 == *(_DWORD **)(v17 + 12) ) - { - *(_DWORD *)(v17 + 12) = v4; - } - else - { - *(_DWORD *)(v17 + 8) = v4; - } - v18 = v4; - v4[3] = v7; - v7[1] = v4; - v4 = v7; - v7 = v18; - } - *v7 = 1; - v11 = v8[3]; - *v8 = 0; - v12 = *(_DWORD *)(v11 + 8); - v8[3] = v12; - if ( v12 ) - *(_DWORD *)(v12 + 4) = v8; - v13 = v8[1]; - *(_DWORD *)(v11 + 4) = v13; - if ( v8 == (_DWORD *)a4[1] ) - { - a4[1] = v11; - } - else if ( v8 == *(_DWORD **)(v13 + 8) ) - { - *(_DWORD *)(v13 + 8) = v11; - } - else - { - *(_DWORD *)(v13 + 12) = v11; - } - *(_DWORD *)(v11 + 8) = v8; - v8[1] = v11; - v5 = (_DWORD *)a4[1]; - } - else - { - *v7 = 1; - v4 = v8; - *v9 = 1; - *v8 = 0; - } - goto LABEL_11; - } - v10 = (_DWORD *)v8[3]; - if ( !v10 || *v10 ) - break; - v4 = (_DWORD *)v7[1]; - *v7 = 1; - *v10 = 1; - *v8 = 0; - result = v5; - if ( v5 == v4 ) - goto LABEL_17; - } - if ( (_DWORD *)v7[3] == v4 ) - break; -LABEL_28: - *v7 = 1; - v14 = v9[3]; - *v8 = 0; - v8[2] = v14; - if ( v14 ) - *(_DWORD *)(v14 + 4) = v8; - v15 = v8[1]; - v9[1] = v15; - if ( v8 == (_DWORD *)a4[1] ) - { - a4[1] = v9; - } - else if ( v8 == *(_DWORD **)(v15 + 12) ) - { - *(_DWORD *)(v15 + 12) = v9; - } - else - { - *(_DWORD *)(v15 + 8) = v9; - } - v9[3] = v8; - v8[1] = v9; - v5 = (_DWORD *)a4[1]; -LABEL_11: - result = v5; - if ( v5 == v4 ) - goto LABEL_17; - } - v19 = v4[2]; - v7[3] = v19; - if ( v19 ) - { - *(_DWORD *)(v19 + 4) = v7; - v20 = (_DWORD *)v7[1]; - v4[1] = v20; - if ( v7 != (_DWORD *)a4[1] ) - { - if ( v7 != (_DWORD *)v20[2] ) - { - v20[3] = v4; -LABEL_48: - v21 = v4; - v4[2] = v7; - v9 = (_DWORD *)v8[2]; - v7[1] = v4; - v4 = v7; - v7 = v21; - goto LABEL_28; - } -LABEL_52: - v20[2] = v4; - goto LABEL_48; - } - } - else - { - v4[1] = v8; - v20 = v8; - if ( v7 != (_DWORD *)a4[1] ) - goto LABEL_52; - } - a4[1] = v4; - goto LABEL_48; - } -LABEL_5: - v5 = (_DWORD *)a4[1]; - result = v5; - goto LABEL_6; - } - a3[2] = a2; - if ( a4 != a3 ) - { - if ( (_DWORD *)a4[2] == a3 ) - a4[2] = a2; - goto LABEL_5; - } - result = a2; - a4[1] = a2; - a4[3] = a2; - *a2 = 1; - return result; -} - -//----- (004FB6C0) -------------------------------------------------------- -_DWORD *__cdecl std::ws>(_DWORD *a1) -{ - _BYTE *v1; // eax - unsigned int v2; // eax - unsigned int v3; // edx - const std::locale *v5; // [esp+4h] [ebp-68h] - _DWORD *v6; // [esp+14h] [ebp-58h] - _DWORD *v7; // [esp+18h] [ebp-54h] - _DWORD *v8[4]; // [esp+5Ch] [ebp-10h] BYREF - - std::locale::locale( - (volatile signed __int32 **)v8, - (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), - v5); - v7 = std::use_facet>((int)v8); - std::locale::~locale(v8); - v6 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v1 = (_BYTE *)v6[2]; - if ( (unsigned int)v1 < v6[3] ) - goto LABEL_5; -LABEL_11: - v1 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); - if ( v1 == (_BYTE *)-1 ) - { -LABEL_9: - std::ios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); - } - else - { - while ( (*(_BYTE *)(v7[6] + 2 * (unsigned __int8)v1) & 0x20) != 0 ) - { - v2 = v6[2]; - v3 = v6[3]; - if ( v2 < v3 ) - { - v1 = (_BYTE *)(v2 + 1); - v6[2] = v1; - } - else - { - if ( (*(int (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == -1 ) - goto LABEL_9; - v1 = (_BYTE *)v6[2]; - v3 = v6[3]; - } - if ( (unsigned int)v1 >= v3 ) - goto LABEL_11; -LABEL_5: - LOBYTE(v1) = *v1; - } - } - return a1; -} -// 4FB709: variable 'v5' is possibly undefined - -//----- (004FB840) -------------------------------------------------------- -_DWORD *__cdecl std::ws>(_DWORD *a1) -{ - unsigned __int16 *v1; // eax - __int16 v2; // dx - unsigned __int16 i; // ax - __int16 *v4; // eax - const std::locale *v6; // [esp+Ch] [ebp-68h] - _DWORD *v7; // [esp+1Ch] [ebp-58h] - void *v8; // [esp+20h] [ebp-54h] - _DWORD *v9[4]; // [esp+64h] [ebp-10h] BYREF - - std::locale::locale( - (volatile signed __int32 **)v9, - (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), - v6); - v8 = std::use_facet>((int)v9); - std::locale::~locale(v9); - v7 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v1 = (unsigned __int16 *)v7[2]; - if ( (unsigned int)v1 < v7[3] ) - goto LABEL_5; -LABEL_12: - for ( i = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); i != 0xFFFF; i = *v1 ) - { - if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v8 + 8))(v8, 32, i) ) - return a1; - v4 = (__int16 *)v7[2]; - if ( (unsigned int)v4 < v7[3] ) - { - v2 = *v4; - v7[2] = v4 + 1; - if ( v2 == -1 ) - break; - } - else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == 0xFFFF ) - { - break; - } - v1 = (unsigned __int16 *)v7[2]; - if ( (unsigned int)v1 >= v7[3] ) - goto LABEL_12; -LABEL_5: - ; - } - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); - return a1; -} -// 4FB889: variable 'v6' is possibly undefined - -//----- (004FB9D0) -------------------------------------------------------- -std::ios_base *__cdecl std::hex(std::ios_base *a1) -{ - *((_DWORD *)a1 + 3) = *((_DWORD *)a1 + 3) & 0xFFFFFFB5 | 8; - return a1; -} - -//----- (004FB9F0) -------------------------------------------------------- -_DWORD *__cdecl std::endl>(std::ostream::sentry *a1) -{ - int v1; // eax - _BYTE *v2; // ebx - int v3; // eax - std::ostream::sentry *v4; // eax - int (__stdcall *v6)(unsigned __int8); // edx - char v7; // [esp+4h] [ebp-18h] - - v1 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v2 = *(_BYTE **)((char *)a1 + v1 + 124); - if ( !v2 ) - std::__throw_bad_cast(); - if ( v2[28] ) - { - v3 = (char)v2[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v1 + 124)); - v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); - v3 = 10; - if ( v6 != std::ctype::do_widen ) - v3 = ((char (__thiscall *)(_BYTE *, int))v6)(v2, 10); - } - v4 = std::ostream::put(a1, (std::ostream *)v3, v7); - return std::ostream::flush(v4); -} -// 4FBA15: variable 'v7' is possibly undefined - -//----- (004FBA70) -------------------------------------------------------- -_DWORD *__cdecl std::endl>(int *a1) -{ - int v1; // ecx - unsigned __int16 v2; // ax - int *v3; // eax - - v1 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); - if ( !v1 ) - std::__throw_bad_cast(); - v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 40))(v1, 10); - v3 = std::wostream::put(a1, v2); - return std::wostream::flush(v3); -} - -//----- (004FBAC0) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1) -{ - char v2; // [esp+4h] [ebp-18h] - - return std::ostream::put(a1, 0, v2); -} -// 4FBACE: variable 'v2' is possibly undefined - -//----- (004FBAE0) -------------------------------------------------------- -int *__cdecl std::ends>(int *a1) -{ - return std::wostream::put(a1, 0); -} - -//----- (004FBB00) -------------------------------------------------------- -_DWORD *__cdecl std::flush>(_DWORD *a1) -{ - return std::ostream::flush(a1); -} - -//----- (004FBB10) -------------------------------------------------------- -_DWORD *__cdecl std::flush>(_DWORD *a1) -{ - return std::wostream::flush(a1); -} - -//----- (004FBB20) -------------------------------------------------------- -std::istream::sentry *__cdecl std::getline,std::allocator>( - std::istream::sentry *a1, - _DWORD *a2) -{ - int v2; // eax - _BYTE *v3; // ebx - char v4; // al - int (__stdcall *v6)(unsigned __int8); // edx - - v2 = *(_DWORD *)(*(_DWORD *)a1 - 12); - v3 = *(_BYTE **)((char *)a1 + v2 + 124); - if ( !v3 ) - std::__throw_bad_cast(); - if ( v3[28] ) - { - v4 = v3[39]; - } - else - { - std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v2 + 124)); - v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); - v4 = 10; - if ( v6 != std::ctype::do_widen ) - v4 = ((int (__thiscall *)(_BYTE *, int))v6)(v3, 10); - } - return std::getline,std::allocator>(a1, a2, v4); -} - -//----- (004FBBA0) -------------------------------------------------------- -std::istream::sentry *__cdecl std::getline,std::allocator>( - std::istream::sentry *a1, - _DWORD *a2, - char a3) -{ - int v3; // eax - unsigned __int8 *v5; // eax - int v6; // edx - _BYTE *v7; // eax - size_t v8; // edx - unsigned __int8 *v9; // eax - unsigned int v10; // eax - signed int v11; // eax - _BYTE *v12; // eax - unsigned int v13; // edx - unsigned int v14; // eax - unsigned int v15; // edx - bool v16; // [esp+8h] [ebp-90h] - _DWORD *v17; // [esp+28h] [ebp-70h] - size_t v18; // [esp+2Ch] [ebp-6Ch] - size_t MaxCount; // [esp+30h] [ebp-68h] - size_t MaxCounta; // [esp+30h] [ebp-68h] - char MaxCountb; // [esp+30h] [ebp-68h] - unsigned int v22; // [esp+34h] [ebp-64h] - unsigned int v23; // [esp+34h] [ebp-64h] - char *Buf; // [esp+38h] [ebp-60h] - void *Bufa; // [esp+38h] [ebp-60h] - char v26[25]; // [esp+7Fh] [ebp-19h] BYREF - - std::istream::sentry::sentry(v26, a1, (std::istream *)1, v16); - if ( !v26[0] ) - { -LABEL_2: - v3 = 4; -LABEL_3: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v3); - return a1; - } - a2[1] = 0; - *(_BYTE *)*a2 = 0; - v17 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v5 = (unsigned __int8 *)v17[2]; - if ( (unsigned int)v5 >= v17[3] ) - v6 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); - else - v6 = *v5; - v22 = 0; - do - { - while ( 1 ) - { - if ( v6 == -1 ) - { - if ( !v22 ) - { - v3 = 6; - goto LABEL_3; - } -LABEL_34: - v3 = 2; - goto LABEL_3; - } - v10 = v17[3]; - Buf = (char *)v17[2]; - if ( (unsigned __int8)a3 == v6 ) - goto LABEL_29; - v11 = v10 - v17[2]; - if ( (int)(0x3FFFFFFF - v22) <= v11 ) - v11 = 0x3FFFFFFF - v22; - MaxCounta = v11; - v18 = a2[1]; - if ( v11 <= 1 ) - break; - v7 = memchr(Buf, a3, v11); - v8 = v7 - Buf; - if ( !v7 ) - v8 = MaxCounta; - MaxCount = v8; - if ( v8 > 0x3FFFFFFF - v18 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(a2, Buf, v8); - v22 += MaxCount; - v9 = (unsigned __int8 *)(MaxCount + v17[2]); - v17[2] = v9; - if ( (unsigned int)v9 >= v17[3] ) - goto LABEL_25; -LABEL_12: - v6 = *v9; - if ( v22 > 0x3FFFFFFE ) - goto LABEL_26; - } - MaxCountb = v6; - Bufa = (void *)(v18 + 1); - v12 = (_BYTE *)*a2; - if ( (_DWORD *)*a2 == a2 + 2 ) - v13 = 15; - else - v13 = a2[2]; - if ( (unsigned int)Bufa > v13 ) - { - std::string::_M_mutate((int)a2, v18, 0, 0, 1u); - v12 = (_BYTE *)*a2; - } - v12[v18] = MaxCountb; - ++v22; - a2[1] = Bufa; - *(_BYTE *)(*a2 + v18 + 1) = 0; - v14 = v17[2]; - v15 = v17[3]; - if ( v14 >= v15 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v17 + 40))(v17) == -1 ) - goto LABEL_34; - v9 = (unsigned __int8 *)v17[2]; - v15 = v17[3]; - } - else - { - v9 = (unsigned __int8 *)(v14 + 1); - v17[2] = v9; - } - if ( v15 > (unsigned int)v9 ) - goto LABEL_12; -LABEL_25: - v6 = (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17); - } - while ( v22 <= 0x3FFFFFFE ); -LABEL_26: - if ( v6 == -1 ) - goto LABEL_34; - v3 = 4; - if ( v6 != (unsigned __int8)a3 ) - goto LABEL_3; - v10 = v17[3]; - Buf = (char *)v17[2]; -LABEL_29: - v23 = v22 + 1; - if ( v10 <= (unsigned int)Buf ) - { - (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); - if ( v23 ) - return a1; - goto LABEL_2; - } - v17[2] = Buf + 1; - if ( !v23 ) - goto LABEL_2; - return a1; -} -// 4FBBF3: variable 'v16' is possibly undefined -// 4FBBA0: using guessed type char var_19[25]; - -//----- (004FBFF0) -------------------------------------------------------- -_DWORD *__cdecl std::getline,std::allocator>( - _DWORD *a1, - _DWORD *a2, - __int16 a3) -{ - int v3; // eax - __int16 *v5; // eax - unsigned int v6; // ebx - __int16 *v7; // ecx - int v8; // eax - int v9; // edx - _WORD *v10; // eax - __int16 *v11; // eax - __int16 v12; // ax - _WORD *v13; // eax - unsigned int v14; // edx - __int16 v15; // ax - unsigned int v16; // [esp+24h] [ebp-74h] - int v17; // [esp+2Ch] [ebp-6Ch] - _DWORD *v18; // [esp+30h] [ebp-68h] - unsigned int v19; // [esp+34h] [ebp-64h] - unsigned int v20; // [esp+34h] [ebp-64h] - __int16 lpuexcpt; // [esp+38h] [ebp-60h] - unsigned int lpuexcpta; // [esp+38h] [ebp-60h] - char v23[25]; // [esp+7Fh] [ebp-19h] BYREF - - std::wistream::sentry::sentry(v23, a1, 1); - if ( !v23[0] ) - { -LABEL_2: - v3 = 4; -LABEL_3: - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v3); - return a1; - } - a2[1] = 0; - *(_WORD *)*a2 = 0; - v18 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v5 = (__int16 *)v18[2]; - if ( (unsigned int)v5 >= v18[3] ) - lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); - else - lpuexcpt = *v5; - v19 = 0; - do - { - if ( lpuexcpt == -1 ) - { - if ( !v19 ) - { - v3 = 6; - goto LABEL_3; - } -LABEL_39: - v3 = 2; - goto LABEL_3; - } - v6 = v18[3]; - v7 = (__int16 *)v18[2]; - if ( a3 == lpuexcpt ) - goto LABEL_24; - v8 = (int)(v6 - (_DWORD)v7) >> 1; - if ( v8 > (int)(0x1FFFFFFF - v19) ) - v8 = 0x1FFFFFFF - v19; - v17 = a2[1]; - if ( v8 <= 1 ) - { - v16 = v17 + 1; - v13 = (_WORD *)*a2; - if ( (_DWORD *)*a2 == a2 + 2 ) - v14 = 7; - else - v14 = a2[2]; - if ( v16 > v14 ) - { - std::wstring::_M_mutate((int)a2, v17, 0, 0, 1); - v7 = (__int16 *)v18[2]; - v13 = (_WORD *)*a2; - v6 = v18[3]; - } - ++v19; - v13[v17] = lpuexcpt; - a2[1] = v16; - v13[v17 + 1] = 0; - if ( v6 <= (unsigned int)v7 ) - { - v15 = (*(int (__fastcall **)(_DWORD *))(*v18 + 40))(v18); - } - else - { - v15 = *v7; - v18[2] = v7 + 1; - } - if ( v15 == -1 ) - goto LABEL_39; - v11 = (__int16 *)v18[2]; - if ( (unsigned int)v11 < v18[3] ) - { -LABEL_19: - v12 = *v11; - goto LABEL_20; - } - } - else - { - lpuexcpta = v8; - v9 = v8; - if ( v7 ) - { - v10 = (_WORD *)v18[2]; - while ( *v10 != a3 ) - { - ++v10; - if ( !--v9 ) - goto LABEL_17; - } - lpuexcpta = v10 - v7; - } -LABEL_17: - if ( lpuexcpta > 0x1FFFFFFF - v17 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append(a2, v7, lpuexcpta); - v19 += lpuexcpta; - v11 = (__int16 *)(v18[2] + 2 * lpuexcpta); - v18[2] = v11; - if ( (unsigned int)v11 < v18[3] ) - goto LABEL_19; - } - v12 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); -LABEL_20: - lpuexcpt = v12; - } - while ( v19 <= 0x1FFFFFFE ); - if ( v12 == -1 ) - goto LABEL_39; - v3 = 4; - if ( lpuexcpt != a3 ) - goto LABEL_3; - v7 = (__int16 *)v18[2]; - v6 = v18[3]; -LABEL_24: - v20 = v19 + 1; - if ( (unsigned int)v7 >= v6 ) - { - (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); - if ( v20 ) - return a1; - goto LABEL_2; - } - v18[2] = v7 + 1; - if ( !v20 ) - goto LABEL_2; - return a1; -} -// 4FBFF0: using guessed type char var_19[25]; - -//----- (004FC430) -------------------------------------------------------- -int __cdecl std::setfill(unsigned __int8 a1) -{ - return a1; -} - -//----- (004FC440) -------------------------------------------------------- -int __cdecl std::setfill(unsigned __int16 a1) -{ - return a1; -} - -//----- (004FC450) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0) != 0; - } - return v2; -} -// 4FC499: variable 'v2' is possibly undefined -// 50C608: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5160F8: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FC4A0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0) != 0; - } - return v2; -} -// 4FC4E9: variable 'v2' is possibly undefined -// 50C610: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516138: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FC4F0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0) != 0; - } - return v2; -} -// 4FC539: variable 'v2' is possibly undefined -// 50C618: using guessed type signed __int32 std::collate::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516268: using guessed type int *`typeinfo for'std::collate; - -//----- (004FC540) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0) != 0; - } - return v2; -} -// 4FC589: variable 'v2' is possibly undefined -// 50C61C: using guessed type signed __int32 std::collate::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516274: using guessed type int *`typeinfo for'std::collate; - -//----- (004FC590) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0) != 0; - } - return v2; -} -// 4FC5D9: variable 'v2' is possibly undefined -// 50C620: using guessed type signed __int32 std::messages::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516280: using guessed type int *`typeinfo for'std::messages; - -//----- (004FC5E0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0) != 0; - } - return v2; -} -// 4FC629: variable 'v2' is possibly undefined -// 50C624: using guessed type signed __int32 std::messages::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162A0: using guessed type int *`typeinfo for'std::messages; - -//----- (004FC630) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0) != 0; - } - return v2; -} -// 4FC679: variable 'v2' is possibly undefined -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162C0: using guessed type int *`typeinfo for'std::numpunct; - -//----- (004FC680) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0) != 0; - } - return v2; -} -// 4FC6C9: variable 'v2' is possibly undefined -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162CC: using guessed type int *`typeinfo for'std::numpunct; - -//----- (004FC6D0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0) != 0; - } - return v2; -} -// 4FC719: variable 'v2' is possibly undefined -// 50C630: using guessed type signed __int32 std::time_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162D8: using guessed type int *`typeinfo for'std::time_get>; - -//----- (004FC720) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0) != 0; - } - return v2; -} -// 4FC769: variable 'v2' is possibly undefined -// 50C634: using guessed type signed __int32 std::time_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162F8: using guessed type int *`typeinfo for'std::time_get>; - -//----- (004FC770) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0) != 0; - } - return v2; -} -// 4FC7B9: variable 'v2' is possibly undefined -// 50C638: using guessed type signed __int32 std::money_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516318: using guessed type int *`typeinfo for'std::money_get>; - -//----- (004FC7C0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0) != 0; - } - return v2; -} -// 4FC809: variable 'v2' is possibly undefined -// 50C63C: using guessed type signed __int32 std::money_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516324: using guessed type int *`typeinfo for'std::money_get>; - -//----- (004FC810) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0) != 0; - } - return v2; -} -// 4FC859: variable 'v2' is possibly undefined -// 50C640: using guessed type signed __int32 std::money_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516330: using guessed type int *`typeinfo for'std::money_put>; - -//----- (004FC860) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0) != 0; - } - return v2; -} -// 4FC8A9: variable 'v2' is possibly undefined -// 50C644: using guessed type signed __int32 std::money_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 51633C: using guessed type int *`typeinfo for'std::money_put>; - -//----- (004FC8B0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0) != 0; - } - return v2; -} -// 4FC8F9: variable 'v2' is possibly undefined -// 50C48C: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5163CC: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FC900) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0) != 0; - } - return v2; -} -// 4FC949: variable 'v2' is possibly undefined -// 50C494: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 51640C: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FC950) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::__timepunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::__timepunct, - 0) != 0; - } - return v2; -} -// 4FC999: variable 'v2' is possibly undefined -// 50C49C: using guessed type signed __int32 std::__timepunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516454: using guessed type int *`typeinfo for'std::__timepunct; - -//----- (004FC9A0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::__timepunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::__timepunct, - 0) != 0; - } - return v2; -} -// 4FC9E9: variable 'v2' is possibly undefined -// 50C4A0: using guessed type signed __int32 std::__timepunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516460: using guessed type int *`typeinfo for'std::__timepunct; - -//----- (004FC9F0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::ctype::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::ctype, - 0) != 0; - } - return v2; -} -// 4FCA39: variable 'v2' is possibly undefined -// 50C5E0: using guessed type signed __int32 std::ctype::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5168E8: using guessed type int *`typeinfo for'std::ctype; - -//----- (004FCA40) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::ctype::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::ctype, - 0) != 0; - } - return v2; -} -// 4FCA89: variable 'v2' is possibly undefined -// 50C5E4: using guessed type signed __int32 std::ctype::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516908: using guessed type int *`typeinfo for'std::ctype; - -//----- (004FCA90) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::codecvt::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::codecvt, - 0) != 0; - } - return v2; -} -// 4FCAD9: variable 'v2' is possibly undefined -// 50C658: using guessed type signed __int32 std::codecvt::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516944: using guessed type int *`typeinfo for'std::codecvt; - -//----- (004FCAE0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::codecvt::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::codecvt, - 0) != 0; - } - return v2; -} -// 4FCB29: variable 'v2' is possibly undefined -// 50C65C: using guessed type signed __int32 std::codecvt::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516950: using guessed type int *`typeinfo for'std::codecvt; - -//----- (004FCB30) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0) != 0; - } - return v2; -} -// 4FCB79: variable 'v2' is possibly undefined -// 50C660: using guessed type signed __int32 std::collate::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 51695C: using guessed type int *`typeinfo for'std::collate; - -//----- (004FCB80) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0) != 0; - } - return v2; -} -// 4FCBC9: variable 'v2' is possibly undefined -// 50C664: using guessed type signed __int32 std::collate::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516968: using guessed type int *`typeinfo for'std::collate; - -//----- (004FCBD0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::num_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_get>, - 0) != 0; - } - return v2; -} -// 4FCC19: variable 'v2' is possibly undefined -// 50C668: using guessed type signed __int32 std::num_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516974: using guessed type int *`typeinfo for'std::num_get>; - -//----- (004FCC20) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::num_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_get>, - 0) != 0; - } - return v2; -} -// 4FCC69: variable 'v2' is possibly undefined -// 50C66C: using guessed type signed __int32 std::num_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516980: using guessed type int *`typeinfo for'std::num_get>; - -//----- (004FCC70) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::num_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_put>, - 0) != 0; - } - return v2; -} -// 4FCCB9: variable 'v2' is possibly undefined -// 50C670: using guessed type signed __int32 std::num_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 51698C: using guessed type int *`typeinfo for'std::num_put>; - -//----- (004FCCC0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::num_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_put>, - 0) != 0; - } - return v2; -} -// 4FCD09: variable 'v2' is possibly undefined -// 50C674: using guessed type signed __int32 std::num_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516998: using guessed type int *`typeinfo for'std::num_put>; - -//----- (004FCD10) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0) != 0; - } - return v2; -} -// 4FCD59: variable 'v2' is possibly undefined -// 50C680: using guessed type signed __int32 std::messages::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5169B8: using guessed type int *`typeinfo for'std::messages; - -//----- (004FCD60) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0) != 0; - } - return v2; -} -// 4FCDA9: variable 'v2' is possibly undefined -// 50C684: using guessed type signed __int32 std::messages::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5169D8: using guessed type int *`typeinfo for'std::messages; - -//----- (004FCDB0) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0) != 0; - } - return v2; -} -// 4FCDF9: variable 'v2' is possibly undefined -// 50C688: using guessed type signed __int32 std::numpunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5169F8: using guessed type int *`typeinfo for'std::numpunct; - -//----- (004FCE00) -------------------------------------------------------- -int __cdecl std::has_facet>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0) != 0; - } - return v2; -} -// 4FCE49: variable 'v2' is possibly undefined -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A04: using guessed type int *`typeinfo for'std::numpunct; - -//----- (004FCE50) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0) != 0; - } - return v2; -} -// 4FCE99: variable 'v2' is possibly undefined -// 50C690: using guessed type signed __int32 std::time_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A10: using guessed type int *`typeinfo for'std::time_get>; - -//----- (004FCEA0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0) != 0; - } - return v2; -} -// 4FCEE9: variable 'v2' is possibly undefined -// 50C694: using guessed type signed __int32 std::time_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A30: using guessed type int *`typeinfo for'std::time_get>; - -//----- (004FCEF0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_put>, - 0) != 0; - } - return v2; -} -// 4FCF39: variable 'v2' is possibly undefined -// 50C698: using guessed type signed __int32 std::time_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A50: using guessed type int *`typeinfo for'std::time_put>; - -//----- (004FCF40) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::time_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_put>, - 0) != 0; - } - return v2; -} -// 4FCF89: variable 'v2' is possibly undefined -// 50C69C: using guessed type signed __int32 std::time_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A5C: using guessed type int *`typeinfo for'std::time_put>; - -//----- (004FCF90) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0) != 0; - } - return v2; -} -// 4FCFD9: variable 'v2' is possibly undefined -// 50C6A0: using guessed type signed __int32 std::money_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A94: using guessed type int *`typeinfo for'std::money_get>; - -//----- (004FCFE0) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0) != 0; - } - return v2; -} -// 4FD029: variable 'v2' is possibly undefined -// 50C6A4: using guessed type signed __int32 std::money_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516AA0: using guessed type int *`typeinfo for'std::money_get>; - -//----- (004FD030) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0) != 0; - } - return v2; -} -// 4FD079: variable 'v2' is possibly undefined -// 50C6A8: using guessed type signed __int32 std::money_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516AAC: using guessed type int *`typeinfo for'std::money_put>; - -//----- (004FD080) -------------------------------------------------------- -int __cdecl std::has_facet>>(int a1) -{ - unsigned int v1; // eax - int v2; // ecx - const void *lpsrc; // eax - - v1 = std::locale::id::_M_id(std::money_put>::id); - v2 = 0; - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) - { - lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); - if ( lpsrc ) - LOBYTE(v2) = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0) != 0; - } - return v2; -} -// 4FD0C9: variable 'v2' is possibly undefined -// 50C6AC: using guessed type signed __int32 std::money_put>::id[5]; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516AB8: using guessed type int *`typeinfo for'std::money_put>; - -//----- (004FD0D0) -------------------------------------------------------- -void __noreturn std::terminate(void) -{ - __cxxabiv1::__terminate(__cxxabiv1::__terminate_handler); -} - -//----- (004FD0E0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C608: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5160F8: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FD140) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C60C: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516118: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FD1A0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C610: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516138: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FD200) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C614: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516158: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FD260) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C618: using guessed type signed __int32 std::collate::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516268: using guessed type int *`typeinfo for'std::collate; - -//----- (004FD2C0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C61C: using guessed type signed __int32 std::collate::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516274: using guessed type int *`typeinfo for'std::collate; - -//----- (004FD320) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C620: using guessed type signed __int32 std::messages::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516280: using guessed type int *`typeinfo for'std::messages; - -//----- (004FD380) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C624: using guessed type signed __int32 std::messages::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162A0: using guessed type int *`typeinfo for'std::messages; - -//----- (004FD3E0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C628: using guessed type signed __int32 std::numpunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162C0: using guessed type int *`typeinfo for'std::numpunct; - -//----- (004FD440) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C62C: using guessed type signed __int32 std::numpunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162CC: using guessed type int *`typeinfo for'std::numpunct; - -//----- (004FD4A0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C630: using guessed type signed __int32 std::time_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162D8: using guessed type int *`typeinfo for'std::time_get>; - -//----- (004FD500) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C634: using guessed type signed __int32 std::time_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5162F8: using guessed type int *`typeinfo for'std::time_get>; - -//----- (004FD560) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C638: using guessed type signed __int32 std::money_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516318: using guessed type int *`typeinfo for'std::money_get>; - -//----- (004FD5C0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C63C: using guessed type signed __int32 std::money_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516324: using guessed type int *`typeinfo for'std::money_get>; - -//----- (004FD620) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C640: using guessed type signed __int32 std::money_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516330: using guessed type int *`typeinfo for'std::money_put>; - -//----- (004FD680) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C644: using guessed type signed __int32 std::money_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 51633C: using guessed type int *`typeinfo for'std::money_put>; - -//----- (004FD6E0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C48C: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5163CC: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FD740) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C490: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5163EC: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FD7A0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C494: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 51640C: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FD800) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::moneypunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::moneypunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C498: using guessed type signed __int32 std::moneypunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 51642C: using guessed type int *`typeinfo for'std::moneypunct; - -//----- (004FD860) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::__timepunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::__timepunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C49C: using guessed type signed __int32 std::__timepunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516454: using guessed type int *`typeinfo for'std::__timepunct; - -//----- (004FD8C0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::__timepunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::__timepunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C4A0: using guessed type signed __int32 std::__timepunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516460: using guessed type int *`typeinfo for'std::__timepunct; - -//----- (004FD920) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::ctype::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::ctype, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C5E0: using guessed type signed __int32 std::ctype::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5168E8: using guessed type int *`typeinfo for'std::ctype; - -//----- (004FD980) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::ctype::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::ctype, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C5E4: using guessed type signed __int32 std::ctype::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516908: using guessed type int *`typeinfo for'std::ctype; - -//----- (004FD9E0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::codecvt::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::codecvt, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C658: using guessed type signed __int32 std::codecvt::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516944: using guessed type int *`typeinfo for'std::codecvt; - -//----- (004FDA40) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::codecvt::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::codecvt, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C65C: using guessed type signed __int32 std::codecvt::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516950: using guessed type int *`typeinfo for'std::codecvt; - -//----- (004FDAA0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C660: using guessed type signed __int32 std::collate::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 51695C: using guessed type int *`typeinfo for'std::collate; - -//----- (004FDB00) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::collate::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::collate, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C664: using guessed type signed __int32 std::collate::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516968: using guessed type int *`typeinfo for'std::collate; - -//----- (004FDB60) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::num_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C668: using guessed type signed __int32 std::num_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516974: using guessed type int *`typeinfo for'std::num_get>; - -//----- (004FDBC0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::num_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C66C: using guessed type signed __int32 std::num_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516980: using guessed type int *`typeinfo for'std::num_get>; - -//----- (004FDC20) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::num_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C670: using guessed type signed __int32 std::num_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 51698C: using guessed type int *`typeinfo for'std::num_put>; - -//----- (004FDC80) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::num_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::num_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C674: using guessed type signed __int32 std::num_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516998: using guessed type int *`typeinfo for'std::num_put>; - -//----- (004FDCE0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C680: using guessed type signed __int32 std::messages::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5169B8: using guessed type int *`typeinfo for'std::messages; - -//----- (004FDD40) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::messages::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::messages, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C684: using guessed type signed __int32 std::messages::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5169D8: using guessed type int *`typeinfo for'std::messages; - -//----- (004FDDA0) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C688: using guessed type signed __int32 std::numpunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 5169F8: using guessed type int *`typeinfo for'std::numpunct; - -//----- (004FDE00) -------------------------------------------------------- -void *__cdecl std::use_facet>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::numpunct::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::numpunct, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C68C: using guessed type signed __int32 std::numpunct::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A04: using guessed type int *`typeinfo for'std::numpunct; - -//----- (004FDE60) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C690: using guessed type signed __int32 std::time_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A10: using guessed type int *`typeinfo for'std::time_get>; - -//----- (004FDEC0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C694: using guessed type signed __int32 std::time_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A30: using guessed type int *`typeinfo for'std::time_get>; - -//----- (004FDF20) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C698: using guessed type signed __int32 std::time_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A50: using guessed type int *`typeinfo for'std::time_put>; - -//----- (004FDF80) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::time_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::time_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C69C: using guessed type signed __int32 std::time_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A5C: using guessed type int *`typeinfo for'std::time_put>; - -//----- (004FDFE0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C6A0: using guessed type signed __int32 std::money_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516A94: using guessed type int *`typeinfo for'std::money_get>; - -//----- (004FE040) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_get>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_get>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C6A4: using guessed type signed __int32 std::money_get>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516AA0: using guessed type int *`typeinfo for'std::money_get>; - -//----- (004FE0A0) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(&std::money_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C6A8: using guessed type signed __int32 std::money_put>::id; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516AAC: using guessed type int *`typeinfo for'std::money_put>; - -//----- (004FE100) -------------------------------------------------------- -void *__cdecl std::use_facet>>(int a1) -{ - unsigned int v1; // eax - const void *lpsrc; // eax - void *result; // eax - - v1 = std::locale::id::_M_id(std::money_put>::id); - if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) - std::__throw_bad_cast(); - result = __dynamic_cast( - lpsrc, - (const struct __class_type_info *)&`typeinfo for'std::locale::facet, - (const struct __class_type_info *)&`typeinfo for'std::money_put>, - 0); - if ( !result ) - __cxa_bad_cast(); - return result; -} -// 50C6AC: using guessed type signed __int32 std::money_put>::id[5]; -// 5160F0: using guessed type int *`typeinfo for'std::locale::facet; -// 516AB8: using guessed type int *`typeinfo for'std::money_put>; - -//----- (004FE160) -------------------------------------------------------- -bool __cdecl std::operator==(int a1, int a2) -{ - bool result; // al - int v3; // edx - - result = 0; - v3 = *(_DWORD *)(a1 + 4); - if ( v3 == *(_DWORD *)(a2 + 4) ) - { - result = 1; - if ( v3 ) - return memcmp(*(const void **)a1, *(const void **)a2, *(_DWORD *)(a1 + 4)) == 0; - } - return result; -} - -//----- (004FE19C) -------------------------------------------------------- -bool __cdecl std::operator==(int a1, char *a2) -{ - return std::string::compare(a1, a2) == 0; -} - -//----- (004FE1C0) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) -{ - int v2; // eax - - if ( Str ) - { - v2 = strlen(Str); - std::__ostream_insert>(a1, (int)Str, v2); - } - else - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (004FE220) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) -{ - int v2; // eax - - if ( Str ) - { - v2 = strlen(Str); - std::__ostream_insert>(a1, (int)Str, v2); - } - else - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (004FE280) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) -{ - int v2; // eax - - if ( Str ) - { - v2 = strlen(Str); - std::__ostream_insert>(a1, (int)Str, v2); - } - else - { - std::ios::clear( - (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (004FE2E0) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) -{ - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - LOBYTE(v3[0]) = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 4FE2E0: using guessed type int var_D[3]; - -//----- (004FE310) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) -{ - int v3[4]; // [esp+1Ch] [ebp-10h] BYREF - - LOBYTE(v3[0]) = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 4FE310: using guessed type int var_10[4]; - -//----- (004FE340) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) -{ - int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF - - LOBYTE(v3[0]) = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 4FE340: using guessed type int var_D[3]; - -//----- (004FE370) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; - return result; -} - -//----- (004FE390) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; - return result; -} - -//----- (004FE3B0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; - return result; -} - -//----- (004FE3D0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; - return result; -} - -//----- (004FE3F0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - int v2; // ecx - - v2 = 64; - if ( a2 != 8 ) - { - v2 = 2; - if ( a2 != 10 ) - v2 = 8 * (a2 == 16); - } - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; - return a1; -} - -//----- (004FE430) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, char a2) -{ - char *v2; // esi - _BYTE *v4; // edi - int (__stdcall *v5)(unsigned __int8); // eax - - v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( !v2[117] ) - { - v4 = (_BYTE *)*((_DWORD *)v2 + 31); - if ( !v4 ) - std::__throw_bad_cast(); - if ( !v4[28] ) - { - std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); - v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); - if ( v5 != std::ctype::do_widen ) - ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); - } - v2[117] = 1; - } - v2[116] = a2; - return a1; -} - -//----- (004FE4A0) -------------------------------------------------------- -std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2) -{ - return std::__ostream_insert>(a1, *a2, a2[1]); -} - -//----- (004FE4D0) -------------------------------------------------------- -int *__cdecl std::operator<<>(int *a1, wchar_t *String) -{ - int v2; // eax - - if ( String ) - { - v2 = wcslen(String); - std::__ostream_insert>(a1, (int)String, v2); - } - else - { - std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (004FE530) -------------------------------------------------------- -int *__cdecl std::operator<<>(int *a1, char *Str) -{ - size_t v2; // eax - int v3; // ecx - __int16 v4; // ax - int v6; // [esp+18h] [ebp-60h] - _WORD *Block; // [esp+1Ch] [ebp-5Ch] - _WORD *v8; // [esp+24h] [ebp-54h] - char *lpuexcpt; // [esp+28h] [ebp-50h] - - if ( Str ) - { - v2 = strlen(Str); - if ( v2 > 0x3FFFFFFE ) - __cxa_throw_bad_array_new_length(); - v6 = v2; - Block = (_WORD *)operator new[](2 * v2); - v8 = Block; - lpuexcpt = Str; - if ( v6 ) - { - do - { - v3 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); - if ( !v3 ) - std::__throw_bad_cast(); - v4 = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v3 + 40))(v3, *lpuexcpt++); - *v8++ = v4; - } - while ( &Str[v6] != lpuexcpt ); - } - std::__ostream_insert>(a1, (int)Block, v6); - operator delete[](Block); - } - else - { - std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); - } - return a1; -} - -//----- (004FE760) -------------------------------------------------------- -int *__cdecl std::operator<<>(int *a1, __int16 a2) -{ - __int16 v3[8]; // [esp+1Ch] [ebp-10h] BYREF - - v3[0] = a2; - return std::__ostream_insert>(a1, (int)v3, 1); -} -// 4FE760: using guessed type __int16 var_10[8]; - -//----- (004FE790) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; - return result; -} - -//----- (004FE7B0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; - return result; -} - -//----- (004FE7D0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; - return result; -} - -//----- (004FE7F0) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; - return result; -} - -//----- (004FE810) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) -{ - int v2; // ecx - - v2 = 64; - if ( a2 != 8 ) - { - v2 = 2; - if ( a2 != 10 ) - v2 = 8 * (a2 == 16); - } - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; - return a1; -} - -//----- (004FE850) -------------------------------------------------------- -_DWORD *__cdecl std::operator<<>(_DWORD *a1, __int16 a2) -{ - char *v2; // esi - int v4; // ecx - - v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( !v2[118] ) - { - v4 = *((_DWORD *)v2 + 31); - if ( !v4 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); - v2[118] = 1; - } - *((_WORD *)v2 + 58) = a2; - return a1; -} - -//----- (004FE8B0) -------------------------------------------------------- -int *__cdecl std::operator<<>(int *a1, char a2) -{ - int v2; // ecx - __int16 v4[7]; // [esp+22h] [ebp-Eh] BYREF - - v2 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); - if ( !v2 ) - std::__throw_bad_cast(); - v4[0] = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); - return std::__ostream_insert>(a1, (int)v4, 1); -} -// 4FE8B0: using guessed type __int16 var_E[7]; - -//----- (004FE900) -------------------------------------------------------- -unsigned int __cdecl std::operator<(int a1, int a2) -{ - return (unsigned int)std::string::compare(a1, a2) >> 31; -} - -//----- (004FE91C) -------------------------------------------------------- -int __cdecl std::operator+(int a1, char *Str, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-40h] - - lpuexcpt = (struct _Unwind_Exception *)strlen(Str); - *(_DWORD *)(a1 + 4) = 0; - *(_BYTE *)(a1 + 8) = 0; - *(_DWORD *)a1 = a1 + 8; - std::string::reserve((_DWORD *)a1, (unsigned int)lpuexcpt + *(_DWORD *)(a3 + 4)); - if ( (unsigned int)lpuexcpt > 0x3FFFFFFF - *(_DWORD *)(a1 + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append((_DWORD *)a1, Str, (size_t)lpuexcpt); - std::string::append((_DWORD *)a1, a3); - return a1; -} - -//----- (004FEA10) -------------------------------------------------------- -_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3) -{ - size_t v3; // edx - size_t v4; // ecx - _BYTE *v5; // esi - _DWORD *v6; // eax - unsigned int v7; // ebx - _BYTE *v8; // eax - int v10; // [esp+8h] [ebp-60h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - - *a1 = a1 + 2; - LOBYTE(v10) = 0; - std::string::_M_construct(a1, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v10); - v3 = *(_DWORD *)(a3 + 4); - v4 = a1[1]; - v5 = *(_BYTE **)a3; - lpuexcpt = (struct _Unwind_Exception *)(v3 + v4); - v6 = (_DWORD *)*a1; - if ( (_DWORD *)*a1 == a1 + 2 ) - v7 = 15; - else - v7 = a1[2]; - if ( (unsigned int)lpuexcpt > v7 ) - { - std::string::_M_mutate((int)a1, v4, 0, v5, v3); - v6 = (_DWORD *)*a1; - } - else if ( v3 ) - { - v8 = (char *)v6 + v4; - if ( v3 == 1 ) - *v8 = *v5; - else - memcpy(v8, v5, v3); - v6 = (_DWORD *)*a1; - } - a1[1] = lpuexcpt; - *((_BYTE *)lpuexcpt + (_DWORD)v6) = 0; - return a1; -} -// 4FEA6D: variable 'v10' is possibly undefined - -//----- (004FEB60) -------------------------------------------------------- -int __cdecl std::operator+(int a1, char a2, int a3) -{ - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_BYTE *)(a1 + 8) = 0; - std::string::reserve((_DWORD *)a1, *(_DWORD *)(a3 + 4) + 1); - std::string::_M_replace_aux((_DWORD *)a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); - std::string::_M_append((_DWORD *)a1, *(_BYTE **)a3, *(_DWORD *)(a3 + 4)); - return a1; -} - -//----- (004FEC50) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, char *Str, std::string *a3) -{ - _DWORD *v3; // eax - unsigned int v5; // [esp+0h] [ebp-68h] - const std::string *v6; // [esp+0h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - unsigned int v8; // [esp+5Fh] [ebp-9h] BYREF - - lpuexcpt = (struct _Unwind_Exception *)strlen(Str); - v3 = std::string::_Rep::_S_create(0, 0); - v3[2] = 0; - v3 += 3; - *(v3 - 3) = 0; - *(_BYTE *)v3 = 0; - *a1 = (int)v3; - std::string::reserve(a1, (struct _Unwind_Exception *)((char *)lpuexcpt + *(_DWORD *)(*(_DWORD *)a3 - 12)), v5); - std::string::append((unsigned int *)a1, (std::string *)Str, (size_t)lpuexcpt, (unsigned int)&v8); - std::string::append(a1, a3, v6); - return a1; -} -// 4FED37: positive sp value 4 has been found -// 4FECDD: variable 'v5' is possibly undefined -// 4FED06: variable 'v6' is possibly undefined - -//----- (004FED50) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, _DWORD *a2, std::string *a3) -{ - _DWORD *v3; // eax - const std::string *v5; // [esp+0h] [ebp-68h] - int v6; // [esp+5Fh] [ebp-9h] BYREF - - v3 = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - v3 = std::string::_Rep::_M_clone((int)(v3 - 3), (int)&v6, 0); - } - else if ( _CRT_MT ) - { - _InterlockedAdd(v3 - 1, 1u); - } - else - { - ++*(v3 - 1); - } - *a1 = (int)v3; - std::string::append(a1, a3, v5); - return a1; -} -// 4FEE1A: positive sp value 4 has been found -// 4FEDAB: variable 'v5' is possibly undefined -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004FEE30) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, char a2, std::string *a3) -{ - _DWORD *v3; // eax - unsigned int v5; // [esp+0h] [ebp-68h] - const std::string *v6; // [esp+0h] [ebp-68h] - char v7[4]; // [esp+5Fh] [ebp-9h] BYREF - - v3 = std::string::_Rep::_S_create(0, 0); - v3[2] = 0; - v3 += 3; - *(v3 - 3) = 0; - *(_BYTE *)v3 = 0; - *a1 = (int)v3; - std::string::reserve(a1, (std::string *)(*(_DWORD *)(*(_DWORD *)a3 - 12) + 1), v5); - std::string::append(a1, 1u, a2, (char)v7); - std::string::append(a1, a3, v6); - return a1; -} -// 4FEF0E: positive sp value 4 has been found -// 4FEEB2: variable 'v5' is possibly undefined -// 4FEEDD: variable 'v6' is possibly undefined - -//----- (004FEF30) -------------------------------------------------------- -int __cdecl std::operator+(int a1, wchar_t *String, int a3) -{ - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-40h] - - lpuexcpt = (struct _Unwind_Exception *)wcslen(String); - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_WORD *)(a1 + 8) = 0; - std::wstring::reserve(a1, (unsigned int)lpuexcpt + *(_DWORD *)(a3 + 4)); - if ( (unsigned int)lpuexcpt > 0x1FFFFFFF - *(_DWORD *)(a1 + 4) ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::wstring::_M_append((_DWORD *)a1, String, (int)lpuexcpt); - std::wstring::_M_append((_DWORD *)a1, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); - return a1; -} - -//----- (004FF030) -------------------------------------------------------- -_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3) -{ - int v4; // [esp+8h] [ebp-50h] - - *a1 = a1 + 2; - LOBYTE(v4) = 0; - std::wstring::_M_construct(a1, *(_WORD **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v4); - std::wstring::_M_append(a1, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); - return a1; -} -// 4FF08B: variable 'v4' is possibly undefined - -//----- (004FF100) -------------------------------------------------------- -int __cdecl std::operator+(int a1, __int16 a2, int a3) -{ - *(_DWORD *)(a1 + 4) = 0; - *(_DWORD *)a1 = a1 + 8; - *(_WORD *)(a1 + 8) = 0; - std::wstring::reserve(a1, *(_DWORD *)(a3 + 4) + 1); - std::wstring::_M_replace_aux((_DWORD *)a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); - std::wstring::_M_append((_DWORD *)a1, *(_WORD **)a3, *(_DWORD *)(a3 + 4)); - return a1; -} - -//----- (004FF1F0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, wchar_t *String, _DWORD *a3) -{ - _DWORD *v3; // eax - struct _Unwind_Exception *lpuexcpt; // [esp+18h] [ebp-50h] - - lpuexcpt = (struct _Unwind_Exception *)wcslen(String); - v3 = std::wstring::_Rep::_S_create(0, 0); - *((_WORD *)v3 + 6) = 0; - v3 += 3; - *(v3 - 1) = 0; - *(v3 - 3) = 0; - *a1 = (int)v3; - std::wstring::reserve(a1, (unsigned int)lpuexcpt + *(_DWORD *)(*a3 - 12)); - std::wstring::append((unsigned int *)a1, (char *)String, (unsigned int)lpuexcpt); - std::wstring::append(a1, a3); - return a1; -} -// 4FF2DA: positive sp value 4 has been found - -//----- (004FF2F0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, _DWORD *a2, _DWORD *a3) -{ - _DWORD *v3; // eax - int v5; // [esp+5Fh] [ebp-9h] BYREF - - v3 = (_DWORD *)*a2; - if ( *(int *)(*a2 - 4) < 0 ) - { - v3 = std::wstring::_Rep::_M_clone(v3 - 3, (int)&v5, 0); - } - else if ( _CRT_MT ) - { - _InterlockedAdd(v3 - 1, 1u); - } - else - { - ++*(v3 - 1); - } - *a1 = (int)v3; - std::wstring::append(a1, a3); - return a1; -} -// 4FF3BA: positive sp value 4 has been found -// 50B0F0: using guessed type int _CRT_MT; - -//----- (004FF3D0) -------------------------------------------------------- -// positive sp value has been detected, the output may be wrong! -int *__cdecl std::operator+(int *a1, __int16 a2, _DWORD *a3) -{ - _DWORD *v3; // eax - - v3 = std::wstring::_Rep::_S_create(0, 0); - *((_WORD *)v3 + 6) = 0; - v3 += 3; - *(v3 - 1) = 0; - *(v3 - 3) = 0; - *a1 = (int)v3; - std::wstring::reserve(a1, *(_DWORD *)(*a3 - 12) + 1); - std::wstring::append(a1, 1u, a2); - std::wstring::append(a1, a3); - return a1; -} -// 4FF4B1: positive sp value 4 has been found - -//----- (004FF510) -------------------------------------------------------- -std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2) -{ - int v2; // edx - char *v3; // eax - _BYTE *v4; // eax - int v5; // ecx - unsigned int v6; // esi - char *v7; // ebx - int v8; // edx - unsigned int v9; // edx - int v11; // edx - int v12; // eax - unsigned int v13; // eax - unsigned int v14; // edx - const std::locale *v15; // [esp+4h] [ebp-84h] - bool v16; // [esp+8h] [ebp-80h] - int v17; // [esp+10h] [ebp-78h] - _DWORD *v18; // [esp+14h] [ebp-74h] - int v19; // [esp+18h] [ebp-70h] - int v20; // [esp+1Ch] [ebp-6Ch] - char *Sizea; // [esp+20h] [ebp-68h] - size_t Size; // [esp+20h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+24h] [ebp-64h] - int v24; // [esp+28h] [ebp-60h] - char v25; // [esp+6Bh] [ebp-1Dh] BYREF - _DWORD *v26[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v25, a1, 0, v16); - if ( !v25 ) - { - v11 = *(_DWORD *)a1; - v12 = 4; - goto LABEL_23; - } - v2 = 0x7FFFFFFF; - v3 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); - if ( *((int *)v3 + 2) > 0 ) - v2 = *((_DWORD *)v3 + 2); - v19 = v2; - std::locale::locale((volatile signed __int32 **)v26, (volatile signed __int32 **)v3 + 27, v15); - v18 = std::use_facet>((int)v26); - std::locale::~locale(v26); - lpuexcpt = *(struct _Unwind_Exception **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v4 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); - if ( (unsigned int)v4 >= *((_DWORD *)lpuexcpt + 3) ) - { - v4 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - v17 = v19 - 1; - if ( v19 == 1 ) - { - if ( v4 != (_BYTE *)-1 ) - goto LABEL_43; - } - else if ( v4 != (_BYTE *)-1 ) - { - goto LABEL_6; - } - *a2 = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v12 = 6; - goto LABEL_23; - } - LOBYTE(v4) = *v4; - v17 = v19 - 1; - if ( v19 == 1 ) - { -LABEL_43: - *a2 = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v12 = 4; - goto LABEL_23; - } -LABEL_6: - v24 = 0; - while ( 1 ) - { - v5 = v18[6]; - if ( (*(_BYTE *)(v5 + 2 * (unsigned __int8)v4) & 0x20) != 0 ) - break; - v6 = *((_DWORD *)lpuexcpt + 3); - v7 = (char *)*((_DWORD *)lpuexcpt + 2); - v8 = v19 - v24 - 1; - if ( v8 > (int)(v6 - (_DWORD)v7) ) - v8 = *((_DWORD *)lpuexcpt + 3) - (_DWORD)v7; - if ( v8 <= 1 ) - { - ++v24; - *a2 = (char)v4; - Sizea = a2 + 1; - v13 = *((_DWORD *)lpuexcpt + 2); - v14 = *((_DWORD *)lpuexcpt + 3); - if ( v13 >= v14 ) - { - if ( (*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 40))(lpuexcpt) == -1 ) - goto LABEL_35; - v4 = (_BYTE *)*((_DWORD *)lpuexcpt + 2); - v14 = *((_DWORD *)lpuexcpt + 3); - } - else - { - v4 = (_BYTE *)(v13 + 1); - *((_DWORD *)lpuexcpt + 2) = v4; - } - if ( (unsigned int)v4 < v14 ) - { - LOBYTE(v4) = *v4; - ++a2; - goto LABEL_19; - } - v4 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - ++a2; -LABEL_31: - if ( v24 >= v17 ) - { - if ( v4 != (_BYTE *)-1 ) - { -LABEL_20: - *a2 = 0; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - return a1; - } - *a2 = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v12 = 2; - goto LABEL_23; - } - if ( v4 == (_BYTE *)-1 ) - { - Sizea = a2; -LABEL_35: - *Sizea = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v12 = v24 == 0 ? 6 : 2; - goto LABEL_23; - } - } - else - { - v9 = (unsigned int)&v7[v8]; - v4 = v7 + 1; - if ( v9 <= (unsigned int)(v7 + 1) ) - { - v20 = 1; - Size = 1; -LABEL_28: - memcpy(a2, v7, Size); - v6 = *((_DWORD *)lpuexcpt + 3); - v4 = (_BYTE *)(*((_DWORD *)lpuexcpt + 2) + Size); - goto LABEL_17; - } - do - { - if ( (*(_BYTE *)(v5 + 2 * (unsigned __int8)*v4) & 0x20) != 0 ) - { - v20 = v4 - v7; - Size = v4 - v7; - goto LABEL_16; - } - ++v4; - } - while ( v9 > (unsigned int)v4 ); - v20 = v4 - v7; - Size = v4 - v7; -LABEL_16: - if ( v20 ) - goto LABEL_28; -LABEL_17: - a2 += Size; - *((_DWORD *)lpuexcpt + 2) = v4; - v24 += v20; - if ( (unsigned int)v4 >= v6 ) - { - v4 = (_BYTE *)(*(int (__fastcall **)(struct _Unwind_Exception *))(*(_DWORD *)lpuexcpt + 36))(lpuexcpt); - goto LABEL_31; - } - LOBYTE(v4) = *v4; -LABEL_19: - if ( v24 >= v17 ) - goto LABEL_20; - } - } - *a2 = 0; - v11 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - if ( v24 ) - return a1; - v12 = 4; -LABEL_23: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v11 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(v11 - 12) + 20) | v12); - return a1; -} -// 4FF557: variable 'v16' is possibly undefined -// 4FF58F: variable 'v15' is possibly undefined - -//----- (004FF9E0) -------------------------------------------------------- -std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2) -{ - _DWORD *v3; // ecx - char *v4; // eax - char v5; // dl - int v6; // eax - bool v7; // [esp+8h] [ebp-70h] - char v8[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::istream::sentry::sentry(v8, a1, 0, v7); - if ( v8[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v4 = (char *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - { - v6 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); - if ( v6 == -1 ) - { - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); - return a1; - } - v5 = v6; - } - else - { - v5 = *v4; - v3[2] = v4 + 1; - } - *a2 = v5; - } - return a1; -} -// 4FFA27: variable 'v7' is possibly undefined -// 4FF9E0: using guessed type char var_19[25]; - -//----- (004FFB80) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; - return result; -} - -//----- (004FFBA0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; - return result; -} - -//----- (004FFBC0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; - return result; -} - -//----- (004FFBE0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; - return result; -} - -//----- (004FFC00) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - int v2; // ecx - - v2 = 64; - if ( a2 != 8 ) - { - v2 = 2; - if ( a2 != 10 ) - v2 = 8 * (a2 == 16); - } - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; - return a1; -} - -//----- (004FFC40) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, char a2) -{ - char *v2; // esi - _BYTE *v4; // edi - int (__stdcall *v5)(unsigned __int8); // eax - - v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( !v2[117] ) - { - v4 = (_BYTE *)*((_DWORD *)v2 + 31); - if ( !v4 ) - std::__throw_bad_cast(); - if ( !v4[28] ) - { - std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); - v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); - if ( v5 != std::ctype::do_widen ) - ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); - } - v2[117] = 1; - } - v2[116] = a2; - return a1; -} - -//----- (004FFCB0) -------------------------------------------------------- -std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2) -{ - int v2; // edx - int v3; // eax - int v5; // edx - char *v6; // eax - unsigned __int8 *v7; // eax - int v8; // ebx - _BYTE *v9; // esi - int v10; // edx - unsigned int v11; // edx - unsigned __int8 *v12; // eax - unsigned __int8 *v13; // eax - int v14; // eax - _BYTE *v15; // eax - unsigned int v16; // edx - unsigned int v17; // eax - unsigned int v18; // edx - const std::locale *v19; // [esp+4h] [ebp-94h] - bool v20; // [esp+8h] [ebp-90h] - _DWORD *v21; // [esp+20h] [ebp-78h] - char *v22; // [esp+24h] [ebp-74h] - unsigned int v23; // [esp+28h] [ebp-70h] - _DWORD *v24; // [esp+2Ch] [ebp-6Ch] - size_t v25; // [esp+30h] [ebp-68h] - unsigned int v26; // [esp+30h] [ebp-68h] - struct _Unwind_Exception *lpuexcpt; // [esp+34h] [ebp-64h] - unsigned int v28; // [esp+38h] [ebp-60h] - char v29; // [esp+7Bh] [ebp-1Dh] BYREF - _DWORD *v30[7]; // [esp+7Ch] [ebp-1Ch] BYREF - - std::istream::sentry::sentry(&v29, a1, 0, v20); - if ( !v29 ) - { - v2 = *(_DWORD *)a1; - v3 = 4; - goto LABEL_3; - } - v5 = 0x3FFFFFFF; - a2[1] = 0; - *(_BYTE *)*a2 = 0; - v6 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); - if ( *((int *)v6 + 2) > 0 ) - v5 = *((_DWORD *)v6 + 2); - v23 = v5; - std::locale::locale((volatile signed __int32 **)v30, (volatile signed __int32 **)v6 + 27, v19); - v21 = std::use_facet>((int)v30); - std::locale::~locale(v30); - v24 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); - v7 = (unsigned __int8 *)v24[2]; - if ( (unsigned int)v7 >= v24[3] ) - v25 = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); - else - v25 = *v7; - v28 = 0; - while ( 1 ) - { - if ( v25 == -1 ) - { - v2 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - v3 = v28 == 0 ? 6 : 2; - goto LABEL_3; - } - v8 = v21[6]; - if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v25) & 0x20) != 0 ) - break; - v9 = (_BYTE *)v24[2]; - v10 = v24[3] - (_DWORD)v9; - if ( v10 > (int)(v23 - v28) ) - v10 = v23 - v28; - lpuexcpt = (struct _Unwind_Exception *)a2[1]; - if ( v10 <= 1 ) - { - v22 = (char *)lpuexcpt + 1; - v15 = (_BYTE *)*a2; - if ( (_DWORD *)*a2 == a2 + 2 ) - v16 = 15; - else - v16 = a2[2]; - if ( (unsigned int)v22 > v16 ) - { - std::string::_M_mutate((int)a2, (size_t)lpuexcpt, 0, 0, 1u); - v15 = (_BYTE *)*a2; - } - *((_BYTE *)lpuexcpt + (_DWORD)v15) = v25; - ++v28; - a2[1] = v22; - *((_BYTE *)lpuexcpt + *a2 + 1) = 0; - v17 = v24[2]; - v18 = v24[3]; - if ( v17 >= v18 ) - { - if ( (*(int (__fastcall **)(_DWORD *))(*v24 + 40))(v24) == -1 ) - { - v2 = *(_DWORD *)a1; -LABEL_37: - *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 8) = 0; - v3 = 2; - goto LABEL_3; - } - v13 = (unsigned __int8 *)v24[2]; - v18 = v24[3]; - } - else - { - v13 = (unsigned __int8 *)(v17 + 1); - v24[2] = v13; - } - if ( (unsigned int)v13 >= v18 ) - { -LABEL_33: - v14 = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); - goto LABEL_23; - } - } - else - { - v11 = (unsigned int)&v9[v10]; - v12 = v9 + 1; - if ( v11 > (unsigned int)(v9 + 1) ) - { - do - { - if ( (*(_BYTE *)(v8 + 2 * *v12) & 0x20) != 0 ) - break; - ++v12; - } - while ( v11 > (unsigned int)v12 ); - v26 = v12 - v9; - } - else - { - v26 = 1; - } - if ( 0x3FFFFFFF - (int)lpuexcpt < v26 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(a2, v9, v26); - v28 += v26; - v13 = (unsigned __int8 *)(v26 + v24[2]); - v24[2] = v13; - if ( (unsigned int)v13 >= v24[3] ) - goto LABEL_33; - } - v14 = *v13; -LABEL_23: - v25 = v14; - if ( v23 <= v28 ) - { - v2 = *(_DWORD *)a1; - if ( v14 != -1 ) - { - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - return a1; - } - goto LABEL_37; - } - } - v2 = *(_DWORD *)a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; - if ( v28 ) - return a1; - v3 = 4; -LABEL_3: - std::ios::clear( - (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) | v3); - return a1; -} -// 4FFCFA: variable 'v20' is possibly undefined -// 4FFD7D: variable 'v19' is possibly undefined - -//----- (00500150) -------------------------------------------------------- -int *__cdecl std::operator>>>(int *a1, _WORD *a2) -{ - int v2; // eax - int v3; // esi - volatile signed __int32 **v4; // eax - int v5; // edx - unsigned __int16 *v6; // eax - unsigned __int16 v7; // ax - __int16 v8; // dx - unsigned __int16 *v9; // eax - __int16 *v10; // eax - int v11; // edx - char *v12; // edx - char *v14; // edx - char *v15; // edx - const std::locale *v16; // [esp+4h] [ebp-84h] - int v17; // [esp+18h] [ebp-70h] - _WORD *v18; // [esp+18h] [ebp-70h] - void *v19; // [esp+1Ch] [ebp-6Ch] - int v20; // [esp+20h] [ebp-68h] - _DWORD *v21; // [esp+24h] [ebp-64h] - unsigned __int16 lpuexcpt; // [esp+28h] [ebp-60h] - char v23; // [esp+6Bh] [ebp-1Dh] BYREF - _DWORD *v24[7]; // [esp+6Ch] [ebp-1Ch] BYREF - - std::wistream::sentry::sentry(&v23, a1, 0); - v2 = *a1; - if ( !v23 ) - { -LABEL_18: - v11 = 4; - goto LABEL_19; - } - v3 = *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 8); - v4 = (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(v2 - 12)); - v5 = 0x7FFFFFFF; - if ( v3 > 0 ) - v5 = v3; - v17 = v5; - std::locale::locale((volatile signed __int32 **)v24, v4 + 27, v16); - v19 = std::use_facet>((int)v24); - std::locale::~locale(v24); - v21 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v6 = (unsigned __int16 *)v21[2]; - if ( (unsigned int)v6 >= v21[3] ) - v7 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); - else - v7 = *v6; - lpuexcpt = v7; - if ( v17 == 1 ) - { - v2 = *a1; - v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); - *a2 = 0; - *((_DWORD *)v15 + 2) = 0; - if ( lpuexcpt == 0xFFFF ) - { - v11 = 6; - goto LABEL_19; - } - goto LABEL_18; - } - if ( v7 == 0xFFFF ) - { - *a2 = 0; - v2 = *a1; - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; - v11 = 6; - goto LABEL_19; - } - v20 = 0; - v18 = &a2[v17 - 1]; - while ( 1 ) - { - if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v19 + 8))(v19, 32, lpuexcpt) ) - { - v2 = *a1; - v12 = (char *)a1 + *(_DWORD *)(*a1 - 12); - *a2 = 0; - *((_DWORD *)v12 + 2) = 0; - if ( v20 ) - return a1; - goto LABEL_18; - } - ++a2; - ++v20; - *(a2 - 1) = lpuexcpt; - v10 = (__int16 *)v21[2]; - if ( (unsigned int)v10 < v21[3] ) - { - v8 = *v10; - v21[2] = v10 + 1; - if ( v8 == -1 ) - goto LABEL_16; - } - else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v21 + 40))(v21) == 0xFFFF ) - { -LABEL_16: - *a2 = 0; - v2 = *a1; - *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; - v11 = 2; - goto LABEL_19; - } - v9 = (unsigned __int16 *)v21[2]; - if ( (unsigned int)v9 < v21[3] ) - { - lpuexcpt = *v9; - if ( a2 == v18 ) - break; - goto LABEL_12; - } - lpuexcpt = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); - if ( a2 == v18 ) - break; -LABEL_12: - if ( lpuexcpt == 0xFFFF ) - goto LABEL_16; - } - v2 = *a1; - v14 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( lpuexcpt != 0xFFFF ) - { - *a2 = 0; - *((_DWORD *)v14 + 2) = 0; - return a1; - } - *a2 = 0; - *((_DWORD *)v14 + 2) = 0; - v11 = 2; -LABEL_19: - std::wios::clear((int *)((char *)a1 + *(_DWORD *)(v2 - 12)), *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) | v11); - return a1; -} -// 5001CF: variable 'v16' is possibly undefined - -//----- (00500550) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2) -{ - _DWORD *v3; // ecx - __int16 *v4; // eax - __int16 v5; // dx - char v6[25]; // [esp+5Fh] [ebp-19h] BYREF - - std::wistream::sentry::sentry(v6, a1, 0); - if ( v6[0] ) - { - v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); - v4 = (__int16 *)v3[2]; - if ( (unsigned int)v4 >= v3[3] ) - { - v5 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); - } - else - { - v5 = *v4; - v3[2] = v4 + 1; - } - if ( v5 == -1 ) - std::wios::clear( - (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 6); - else - *a2 = v5; - } - return a1; -} -// 500550: using guessed type char var_19[25]; - -//----- (005006F0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; - return result; -} - -//----- (00500710) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; - return result; -} - -//----- (00500730) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; - return result; -} - -//----- (00500750) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - _DWORD *result; // eax - - result = a1; - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; - return result; -} - -//----- (00500770) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) -{ - int v2; // ecx - - v2 = 64; - if ( a2 != 8 ) - { - v2 = 2; - if ( a2 != 10 ) - v2 = 8 * (a2 == 16); - } - *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; - return a1; -} - -//----- (005007B0) -------------------------------------------------------- -_DWORD *__cdecl std::operator>>>(_DWORD *a1, __int16 a2) -{ - char *v2; // esi - int v4; // ecx - - v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); - if ( !v2[118] ) - { - v4 = *((_DWORD *)v2 + 31); - if ( !v4 ) - std::__throw_bad_cast(); - (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); - v2[118] = 1; - } - *((_WORD *)v2 + 58) = a2; - return a1; -} - -//----- (00500810) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1) -{ - _DWORD *v2; // ecx - - v2 = (_DWORD *)(a1 + 4); - *(v2 - 1) = &unk_515928; - *(v2 - 3) = &unk_515900; - *(v2 - 2) = 0; - *v2 = &off_51B7D0; - std::ios_base::~ios_base((int)v2); - operator delete((void *)(a1 - 8)); -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500850) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &unk_515928; - v1 = a1 + 1; - *(v1 - 3) = &unk_515900; - *(v1 - 2) = 0; - *v1 = &off_51B7D0; - std::ios_base::~ios_base((int)v1); -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500880) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) -{ - void *Block; // [esp+18h] [ebp-54h] - - *(_DWORD *)(a1 - 8) = off_51AAD4; - *(_DWORD *)(a1 + 112) = off_51AAFC; - *(_DWORD *)a1 = off_51AAE8; - *(_DWORD *)(a1 + 4) = off_51AA50; - Block = (void *)(a1 - 8); - std::filebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_5159B4; - *(_DWORD *)(a1 - 8) = &unk_51598C; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 112) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 112); - operator delete(Block); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500980) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) -{ - *(_DWORD *)(a1 - 8) = off_51AAD4; - *(_DWORD *)(a1 + 112) = off_51AAFC; - *(_DWORD *)a1 = off_51AAE8; - *(_DWORD *)(a1 + 4) = off_51AA50; - std::filebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_5159B4; - *(_DWORD *)(a1 - 8) = &unk_51598C; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 112) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 112); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500A60) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) -{ - void *Block; // [esp+18h] [ebp-54h] - - *(_DWORD *)(a1 - 8) = off_51AB10; - *(_DWORD *)(a1 + 116) = off_51AB38; - *(_DWORD *)a1 = off_51AB24; - *(_DWORD *)(a1 + 4) = off_51AA90; - Block = (void *)(a1 - 8); - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_515A40; - *(_DWORD *)(a1 - 8) = &unk_5159DC; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 116) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 116); - operator delete(Block); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00500B60) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) -{ - *(_DWORD *)(a1 - 8) = off_51AB10; - *(_DWORD *)(a1 + 116) = off_51AB38; - *(_DWORD *)a1 = off_51AB24; - *(_DWORD *)(a1 + 4) = off_51AA90; - std::wfilebuf::close((struct _Unwind_Exception *)(a1 + 4)); - std::__basic_file::~__basic_file(a1 + 44); - *(_DWORD *)(a1 + 4) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_515A40; - *(_DWORD *)(a1 - 8) = &unk_5159DC; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 116) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 116); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00500C40) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1) -{ - _DWORD *v2; // ecx - - v2 = (_DWORD *)(a1 + 4); - *(v2 - 1) = &unk_515AE0; - *(v2 - 3) = &unk_515AB8; - *(v2 - 2) = 0; - *v2 = &off_51B7E0; - std::ios_base::~ios_base((int)v2); - operator delete((void *)(a1 - 8)); -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00500C80) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - *a1 = &unk_515AE0; - v1 = a1 + 1; - *(v1 - 3) = &unk_515AB8; - *(v1 - 2) = 0; - *v1 = &off_51B7E0; - std::ios_base::~ios_base((int)v1); -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00500CB0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *v1; // esi - void *Block; // eax - - v1 = (void *)(a1 - 8); - Block = *(void **)(a1 + 40); - *(_DWORD *)(a1 - 8) = &off_51A504; - *(_DWORD *)(a1 + 64) = off_51A52C; - *(_DWORD *)a1 = off_51A518; - *(_DWORD *)(a1 + 4) = &off_51A2D8; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_5157AC; - *(_DWORD *)(a1 - 8) = &unk_515784; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 64) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 64); - operator delete(v1); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500D30) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 40); - *(_DWORD *)(a1 - 8) = &off_51A504; - *(_DWORD *)(a1 + 64) = off_51A52C; - *(_DWORD *)a1 = off_51A518; - *(_DWORD *)(a1 + 4) = &off_51A2D8; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_51ADD4; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_5157AC; - *(_DWORD *)(a1 - 8) = &unk_515784; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 64) = &off_51B7D0; - std::ios_base::~ios_base(a1 + 64); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500DA0) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *v1; // esi - void *Block; // eax - - v1 = (void *)(a1 - 8); - Block = *(void **)(a1 + 40); - *(_DWORD *)(a1 - 8) = &off_51A540; - *(_DWORD *)(a1 + 64) = off_51A568; - *(_DWORD *)a1 = off_51A554; - *(_DWORD *)(a1 + 4) = &off_51A318; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_515838; - *(_DWORD *)(a1 - 8) = &unk_5157D4; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 64) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 64); - operator delete(v1); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00500E20) -------------------------------------------------------- -void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - int a1) -{ - void *Block; // eax - - Block = *(void **)(a1 + 40); - *(_DWORD *)(a1 - 8) = &off_51A540; - *(_DWORD *)(a1 + 64) = off_51A568; - *(_DWORD *)a1 = off_51A554; - *(_DWORD *)(a1 + 4) = &off_51A318; - if ( Block != (void *)(a1 + 48) ) - operator delete(Block); - *(_DWORD *)(a1 + 4) = &off_51AE14; - std::locale::~locale((_DWORD **)(a1 + 32)); - *(_DWORD *)a1 = &unk_515838; - *(_DWORD *)(a1 - 8) = &unk_5157D4; - *(_DWORD *)(a1 - 4) = 0; - *(_DWORD *)(a1 + 64) = &off_51B7E0; - std::ios_base::~ios_base(a1 + 64); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00500E90) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - Block[2] = &unk_515928; - *Block = &unk_515900; - Block[1] = 0; - Block[3] = &off_51B7D0; - std::ios_base::~ios_base((int)(Block + 3)); - operator delete(Block); -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500ED0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v1[2] = &unk_515928; - v1 += 3; - *(v1 - 3) = &unk_515900; - *(v1 - 2) = 0; - *v1 = &off_51B7D0; - std::ios_base::~ios_base((int)v1); -} -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500F00) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *Block = &off_51A7F0; - Block[1] = 0; - Block[2] = &off_51B7D0; - std::ios_base::~ios_base((int)(Block + 2)); - operator delete(Block); -} -// 51A7F0: using guessed type void (__cdecl *off_51A7F0)(std::istream *__hidden this); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500F40) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = &off_51A7F0; - v1 += 2; - *(v1 - 1) = 0; - *v1 = &off_51B7D0; - std::ios_base::~ios_base((int)v1); -} -// 51A7F0: using guessed type void (__cdecl *off_51A7F0)(std::istream *__hidden this); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500F60) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *Block = &off_51A818; - Block[1] = &off_51B7D0; - std::ios_base::~ios_base((int)(Block + 1)); - operator delete(Block); -} -// 51A818: using guessed type void (__cdecl *off_51A818)(std::ostream *__hidden this); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500F90) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1++ = &off_51A818; - *v1 = &off_51B7D0; - std::ios_base::~ios_base((int)v1); -} -// 51A818: using guessed type void (__cdecl *off_51A818)(std::ostream *__hidden this); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00500FB0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51AAD4; - v1[30] = off_51AAFC; - v1[2] = off_51AAE8; - v1[3] = off_51AA50; - Block = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 3)); - std::__basic_file::~__basic_file((int)(Block + 13)); - Block[3] = &off_51ADD4; - std::locale::~locale((_DWORD **)Block + 10); - Block[2] = &unk_5159B4; - *Block = &unk_51598C; - Block[1] = 0; - Block[30] = &off_51B7D0; - std::ios_base::~ios_base((int)(Block + 30)); - operator delete(Block); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (005010B0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51AAD4; - v1[30] = off_51AAFC; - v1[2] = off_51AAE8; - v1[3] = off_51AA50; - v2 = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 3)); - std::__basic_file::~__basic_file((int)(v2 + 13)); - v2[3] = &off_51ADD4; - std::locale::~locale((_DWORD **)v2 + 10); - v2[2] = &unk_5159B4; - *v2 = &unk_51598C; - v2[1] = 0; - v2[30] = &off_51B7D0; - std::ios_base::~ios_base((int)(v2 + 30)); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AAD4: using guessed type int (*off_51AAD4[2])(); -// 51AAE8: using guessed type int (*off_51AAE8[2])(); -// 51AAFC: using guessed type int (*off_51AAFC[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (005011A0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51AB10; - v1[31] = off_51AB38; - v1[2] = off_51AB24; - v1[3] = off_51AA90; - Block = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 3)); - std::__basic_file::~__basic_file((int)(Block + 13)); - Block[3] = &off_51AE14; - std::locale::~locale((_DWORD **)Block + 10); - Block[2] = &unk_515A40; - *Block = &unk_5159DC; - Block[1] = 0; - Block[31] = &off_51B7E0; - std::ios_base::~ios_base((int)(Block + 31)); - operator delete(Block); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (005012A0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51AB10; - v1[31] = off_51AB38; - v1[2] = off_51AB24; - v1[3] = off_51AA90; - v2 = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 3)); - std::__basic_file::~__basic_file((int)(v2 + 13)); - v2[3] = &off_51AE14; - std::locale::~locale((_DWORD **)v2 + 10); - v2[2] = &unk_515A40; - *v2 = &unk_5159DC; - v2[1] = 0; - v2[31] = &off_51B7E0; - std::ios_base::~ios_base((int)(v2 + 31)); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AB10: using guessed type int (*off_51AB10[2])(); -// 51AB24: using guessed type int (*off_51AB24[2])(); -// 51AB38: using guessed type int (*off_51AB38[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501390) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *Block = &off_51AB4C; - Block[1] = 0; - Block[2] = &off_51B7E0; - std::ios_base::~ios_base((int)(Block + 2)); - operator delete(Block); -} -// 51AB4C: using guessed type int (*off_51AB4C)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (005013D0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = &off_51AB4C; - v1 += 2; - *(v1 - 1) = 0; - *v1 = &off_51B7E0; - std::ios_base::~ios_base((int)v1); -} -// 51AB4C: using guessed type int (*off_51AB4C)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (005013F0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *Block = &off_51AB74; - Block[1] = &off_51B7E0; - std::ios_base::~ios_base((int)(Block + 1)); - operator delete(Block); -} -// 51AB74: using guessed type int (*off_51AB74)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501420) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1++ = &off_51AB74; - *v1 = &off_51B7E0; - std::ios_base::~ios_base((int)v1); -} -// 51AB74: using guessed type int (*off_51AB74)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501440) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51ABB0; - v1[29] = off_51ABC4; - v1[2] = off_51AA50; - Block = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 2)); - std::__basic_file::~__basic_file((int)(Block + 12)); - Block[2] = &off_51ADD4; - std::locale::~locale((_DWORD **)Block + 9); - *Block = &unk_515A68; - Block[1] = 0; - Block[29] = &off_51B7D0; - std::ios_base::~ios_base((int)(Block + 29)); - operator delete(Block); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ABB0: using guessed type int (*off_51ABB0[2])(); -// 51ABC4: using guessed type int (*off_51ABC4[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00501530) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51ABB0; - v1[29] = off_51ABC4; - v1[2] = off_51AA50; - v2 = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 2)); - std::__basic_file::~__basic_file((int)(v2 + 12)); - v2[2] = &off_51ADD4; - std::locale::~locale((_DWORD **)v2 + 9); - *v2 = &unk_515A68; - v2[1] = 0; - v2[29] = &off_51B7D0; - std::ios_base::~ios_base((int)(v2 + 29)); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51ABB0: using guessed type int (*off_51ABB0[2])(); -// 51ABC4: using guessed type int (*off_51ABC4[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00501610) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51ABD8; - v1[30] = off_51ABEC; - v1[2] = off_51AA90; - Block = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 2)); - std::__basic_file::~__basic_file((int)(Block + 12)); - Block[2] = &off_51AE14; - std::locale::~locale((_DWORD **)Block + 9); - *Block = &unk_515A90; - Block[1] = 0; - Block[30] = &off_51B7E0; - std::ios_base::~ios_base((int)(Block + 30)); - operator delete(Block); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51ABD8: using guessed type int (*off_51ABD8[2])(); -// 51ABEC: using guessed type int (*off_51ABEC[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501700) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51ABD8; - v1[30] = off_51ABEC; - v1[2] = off_51AA90; - v2 = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 2)); - std::__basic_file::~__basic_file((int)(v2 + 12)); - v2[2] = &off_51AE14; - std::locale::~locale((_DWORD **)v2 + 9); - *v2 = &unk_515A90; - v2[1] = 0; - v2[30] = &off_51B7E0; - std::ios_base::~ios_base((int)(v2 + 30)); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51ABD8: using guessed type int (*off_51ABD8[2])(); -// 51ABEC: using guessed type int (*off_51ABEC[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (005017E0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) -{ - _DWORD *Block; // ebx - - Block = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - Block[2] = &unk_515AE0; - *Block = &unk_515AB8; - Block[1] = 0; - Block[3] = &off_51B7E0; - std::ios_base::~ios_base((int)(Block + 3)); - operator delete(Block); -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501820) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) -{ - _DWORD *v1; // ecx - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - v1[2] = &unk_515AE0; - v1 += 3; - *(v1 - 3) = &unk_515AB8; - *(v1 - 2) = 0; - *v1 = &off_51B7E0; - std::ios_base::~ios_base((int)v1); -} -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501850) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51AC3C; - v1[28] = off_51AC50; - v1[1] = off_51AA50; - Block = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 1)); - std::__basic_file::~__basic_file((int)(Block + 11)); - Block[1] = &off_51ADD4; - std::locale::~locale((_DWORD **)Block + 8); - *Block = &unk_515B08; - Block[28] = &off_51B7D0; - std::ios_base::~ios_base((int)(Block + 28)); - operator delete(Block); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AC3C: using guessed type int (*off_51AC3C[2])(); -// 51AC50: using guessed type int (*off_51AC50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00501930) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51AC3C; - v1[28] = off_51AC50; - v1[1] = off_51AA50; - v2 = v1; - std::filebuf::close((struct _Unwind_Exception *)(v1 + 1)); - std::__basic_file::~__basic_file((int)(v2 + 11)); - v2[1] = &off_51ADD4; - std::locale::~locale((_DWORD **)v2 + 8); - *v2 = &unk_515B08; - v2[28] = &off_51B7D0; - std::ios_base::~ios_base((int)(v2 + 28)); -} -// 51AA50: using guessed type int (*off_51AA50[2])(); -// 51AC3C: using guessed type int (*off_51AC3C[2])(); -// 51AC50: using guessed type int (*off_51AC50[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00501A00) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *Block; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51AC64; - v1[29] = off_51AC78; - v1[1] = off_51AA90; - Block = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 1)); - std::__basic_file::~__basic_file((int)(Block + 11)); - Block[1] = &off_51AE14; - std::locale::~locale((_DWORD **)Block + 8); - *Block = &unk_515B30; - Block[29] = &off_51B7E0; - std::ios_base::~ios_base((int)(Block + 29)); - operator delete(Block); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AC64: using guessed type int (*off_51AC64[2])(); -// 51AC78: using guessed type int (*off_51AC78[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501AE0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) -{ - _DWORD *v1; // edx - _DWORD *v2; // [esp+18h] [ebp-54h] - - v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); - *v1 = off_51AC64; - v1[29] = off_51AC78; - v1[1] = off_51AA90; - v2 = v1; - std::wfilebuf::close((struct _Unwind_Exception *)(v1 + 1)); - std::__basic_file::~__basic_file((int)(v2 + 11)); - v2[1] = &off_51AE14; - std::locale::~locale((_DWORD **)v2 + 8); - *v2 = &unk_515B30; - v2[29] = &off_51B7E0; - std::ios_base::~ios_base((int)(v2 + 29)); -} -// 51AA90: using guessed type int (*off_51AA90[2])(); -// 51AC64: using guessed type int (*off_51AC64[2])(); -// 51AC78: using guessed type int (*off_51AC78[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501BB0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 12); - *(_DWORD *)v1 = &off_51A504; - *((_DWORD *)v1 + 18) = off_51A52C; - *((_DWORD *)v1 + 2) = off_51A518; - *((_DWORD *)v1 + 3) = &off_51A2D8; - if ( Block != v1 + 56 ) - operator delete(Block); - *((_DWORD *)v1 + 3) = &off_51ADD4; - std::locale::~locale((_DWORD **)v1 + 10); - *((_DWORD *)v1 + 2) = &unk_5157AC; - *(_DWORD *)v1 = &unk_515784; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 18) = &off_51B7D0; - std::ios_base::~ios_base((int)(v1 + 72)); - operator delete(v1); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00501C30) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 12); - *(_DWORD *)v1 = &off_51A504; - *((_DWORD *)v1 + 18) = off_51A52C; - *((_DWORD *)v1 + 2) = off_51A518; - *((_DWORD *)v1 + 3) = &off_51A2D8; - if ( Block != v1 + 56 ) - operator delete(Block); - *((_DWORD *)v1 + 3) = &off_51ADD4; - std::locale::~locale((_DWORD **)v1 + 10); - *((_DWORD *)v1 + 2) = &unk_5157AC; - *(_DWORD *)v1 = &unk_515784; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 18) = &off_51B7D0; - std::ios_base::~ios_base((int)(v1 + 72)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A504: using guessed type int (*off_51A504)(); -// 51A518: using guessed type int (*off_51A518[2])(); -// 51A52C: using guessed type int (*off_51A52C[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00501CA0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 12); - *(_DWORD *)v1 = &off_51A540; - *((_DWORD *)v1 + 18) = off_51A568; - *((_DWORD *)v1 + 2) = off_51A554; - *((_DWORD *)v1 + 3) = &off_51A318; - if ( Block != v1 + 56 ) - operator delete(Block); - *((_DWORD *)v1 + 3) = &off_51AE14; - std::locale::~locale((_DWORD **)v1 + 10); - *((_DWORD *)v1 + 2) = &unk_515838; - *(_DWORD *)v1 = &unk_5157D4; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 18) = &off_51B7E0; - std::ios_base::~ios_base((int)(v1 + 72)); - operator delete(v1); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501D20) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( - _DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 12); - *(_DWORD *)v1 = &off_51A540; - *((_DWORD *)v1 + 18) = off_51A568; - *((_DWORD *)v1 + 2) = off_51A554; - *((_DWORD *)v1 + 3) = &off_51A318; - if ( Block != v1 + 56 ) - operator delete(Block); - *((_DWORD *)v1 + 3) = &off_51AE14; - std::locale::~locale((_DWORD **)v1 + 10); - *((_DWORD *)v1 + 2) = &unk_515838; - *(_DWORD *)v1 = &unk_5157D4; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 18) = &off_51B7E0; - std::ios_base::~ios_base((int)(v1 + 72)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A540: using guessed type int (*off_51A540)(); -// 51A554: using guessed type int (*off_51A554[2])(); -// 51A568: using guessed type int (*off_51A568[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501D90) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 11); - *(_DWORD *)v1 = &off_51A57C; - *((_DWORD *)v1 + 17) = off_51A590; - *((_DWORD *)v1 + 2) = &off_51A2D8; - if ( Block != v1 + 52 ) - operator delete(Block); - *((_DWORD *)v1 + 2) = &off_51ADD4; - std::locale::~locale((_DWORD **)v1 + 9); - *(_DWORD *)v1 = &unk_515860; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 17) = &off_51B7D0; - std::ios_base::~ios_base((int)(v1 + 68)); - operator delete(v1); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A57C: using guessed type int (*off_51A57C)(); -// 51A590: using guessed type int (*off_51A590[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00501E00) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 11); - *(_DWORD *)v1 = &off_51A57C; - *((_DWORD *)v1 + 17) = off_51A590; - *((_DWORD *)v1 + 2) = &off_51A2D8; - if ( Block != v1 + 52 ) - operator delete(Block); - *((_DWORD *)v1 + 2) = &off_51ADD4; - std::locale::~locale((_DWORD **)v1 + 9); - *(_DWORD *)v1 = &unk_515860; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 17) = &off_51B7D0; - std::ios_base::~ios_base((int)(v1 + 68)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A57C: using guessed type int (*off_51A57C)(); -// 51A590: using guessed type int (*off_51A590[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00501E60) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 11); - *(_DWORD *)v1 = &off_51A5A4; - *((_DWORD *)v1 + 17) = off_51A5B8; - *((_DWORD *)v1 + 2) = &off_51A318; - if ( Block != v1 + 52 ) - operator delete(Block); - *((_DWORD *)v1 + 2) = &off_51AE14; - std::locale::~locale((_DWORD **)v1 + 9); - *(_DWORD *)v1 = &unk_515888; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 17) = &off_51B7E0; - std::ios_base::~ios_base((int)(v1 + 68)); - operator delete(v1); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5A4: using guessed type int (*off_51A5A4)(); -// 51A5B8: using guessed type int (*off_51A5B8[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501ED0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 11); - *(_DWORD *)v1 = &off_51A5A4; - *((_DWORD *)v1 + 17) = off_51A5B8; - *((_DWORD *)v1 + 2) = &off_51A318; - if ( Block != v1 + 52 ) - operator delete(Block); - *((_DWORD *)v1 + 2) = &off_51AE14; - std::locale::~locale((_DWORD **)v1 + 9); - *(_DWORD *)v1 = &unk_515888; - *((_DWORD *)v1 + 1) = 0; - *((_DWORD *)v1 + 17) = &off_51B7E0; - std::ios_base::~ios_base((int)(v1 + 68)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5A4: using guessed type int (*off_51A5A4)(); -// 51A5B8: using guessed type int (*off_51A5B8[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00501F30) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 10); - *(_DWORD *)v1 = &off_51A5CC; - *((_DWORD *)v1 + 16) = off_51A5E0; - *((_DWORD *)v1 + 1) = &off_51A2D8; - if ( Block != v1 + 48 ) - operator delete(Block); - *((_DWORD *)v1 + 1) = &off_51ADD4; - std::locale::~locale((_DWORD **)v1 + 8); - *(_DWORD *)v1 = &unk_5158B0; - *((_DWORD *)v1 + 16) = &off_51B7D0; - std::ios_base::~ios_base((int)(v1 + 64)); - operator delete(v1); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A5CC: using guessed type int (*off_51A5CC)(); -// 51A5E0: using guessed type int (*off_51A5E0[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00501FA0) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 10); - *(_DWORD *)v1 = &off_51A5CC; - *((_DWORD *)v1 + 16) = off_51A5E0; - *((_DWORD *)v1 + 1) = &off_51A2D8; - if ( Block != v1 + 48 ) - operator delete(Block); - *((_DWORD *)v1 + 1) = &off_51ADD4; - std::locale::~locale((_DWORD **)v1 + 8); - *(_DWORD *)v1 = &unk_5158B0; - *((_DWORD *)v1 + 16) = &off_51B7D0; - std::ios_base::~ios_base((int)(v1 + 64)); -} -// 51A2D8: using guessed type int (*off_51A2D8)(); -// 51A5CC: using guessed type int (*off_51A5CC)(); -// 51A5E0: using guessed type int (*off_51A5E0[2])(); -// 51ADD4: using guessed type int (*off_51ADD4)(); -// 51B7D0: using guessed type int (*off_51B7D0)(); - -//----- (00502000) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 10); - *(_DWORD *)v1 = &off_51A5F4; - *((_DWORD *)v1 + 16) = off_51A608; - *((_DWORD *)v1 + 1) = &off_51A318; - if ( Block != v1 + 48 ) - operator delete(Block); - *((_DWORD *)v1 + 1) = &off_51AE14; - std::locale::~locale((_DWORD **)v1 + 8); - *(_DWORD *)v1 = &unk_5158D8; - *((_DWORD *)v1 + 16) = &off_51B7E0; - std::ios_base::~ios_base((int)(v1 + 64)); - operator delete(v1); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5F4: using guessed type int (*off_51A5F4)(); -// 51A608: using guessed type int (*off_51A608[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (00502070) -------------------------------------------------------- -void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) -{ - char *v1; // ebx - char *Block; // eax - - v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); - Block = (char *)*((_DWORD *)v1 + 10); - *(_DWORD *)v1 = &off_51A5F4; - *((_DWORD *)v1 + 16) = off_51A608; - *((_DWORD *)v1 + 1) = &off_51A318; - if ( Block != v1 + 48 ) - operator delete(Block); - *((_DWORD *)v1 + 1) = &off_51AE14; - std::locale::~locale((_DWORD **)v1 + 8); - *(_DWORD *)v1 = &unk_5158D8; - *((_DWORD *)v1 + 16) = &off_51B7E0; - std::ios_base::~ios_base((int)(v1 + 64)); -} -// 51A318: using guessed type int (*off_51A318)(); -// 51A5F4: using guessed type int (*off_51A5F4)(); -// 51A608: using guessed type int (*off_51A608[2])(); -// 51AE14: using guessed type int (*off_51AE14)(); -// 51B7E0: using guessed type int (*off_51B7E0)(); - -//----- (005020D0) -------------------------------------------------------- -int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1) -{ - int v2; // ebx - bool v3; // zf - int result; // eax - int v5; // edx - int v6; // edx - - v2 = *a1; - v3 = *(_BYTE *)(*a1 + 72) == 0; - *(_DWORD *)(v2 + 48) = 0; - *(_BYTE *)(v2 + 84) = 0; - if ( !v3 ) - { - if ( *(_DWORD *)(v2 + 64) ) - operator delete[](*(void **)(v2 + 64)); - *(_DWORD *)(v2 + 64) = 0; - *(_BYTE *)(v2 + 72) = 0; - } - if ( *(_DWORD *)(v2 + 92) ) - operator delete[](*(void **)(v2 + 92)); - result = *a1; - *(_DWORD *)(v2 + 92) = 0; - *(_DWORD *)(v2 + 96) = 0; - *(_DWORD *)(v2 + 100) = 0; - *(_DWORD *)(v2 + 104) = 0; - *(_WORD *)(result + 73) = 0; - v5 = *(_DWORD *)(result + 64); - *(_DWORD *)(result + 20) = 0; - *(_DWORD *)(result + 4) = v5; - *(_DWORD *)(result + 8) = v5; - *(_DWORD *)(result + 12) = v5; - v6 = *(_DWORD *)(result + 52); - *(_DWORD *)(result + 16) = 0; - *(_DWORD *)(result + 24) = 0; - *(_DWORD *)(result + 56) = v6; - *(_DWORD *)(result + 60) = v6; - return result; -} - -//----- (00502170) -------------------------------------------------------- -int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1) -{ - int v2; // ebx - bool v3; // zf - int result; // eax - int v5; // edx - int v6; // edx - - v2 = *a1; - v3 = *(_BYTE *)(*a1 + 72) == 0; - *(_DWORD *)(v2 + 48) = 0; - *(_BYTE *)(v2 + 88) = 0; - if ( !v3 ) - { - if ( *(_DWORD *)(v2 + 64) ) - operator delete[](*(void **)(v2 + 64)); - *(_DWORD *)(v2 + 64) = 0; - *(_BYTE *)(v2 + 72) = 0; - } - if ( *(_DWORD *)(v2 + 96) ) - operator delete[](*(void **)(v2 + 96)); - result = *a1; - *(_DWORD *)(v2 + 96) = 0; - *(_DWORD *)(v2 + 100) = 0; - *(_DWORD *)(v2 + 104) = 0; - *(_DWORD *)(v2 + 108) = 0; - *(_WORD *)(result + 73) = 0; - v5 = *(_DWORD *)(result + 64); - *(_DWORD *)(result + 20) = 0; - *(_DWORD *)(result + 4) = v5; - *(_DWORD *)(result + 8) = v5; - *(_DWORD *)(result + 12) = v5; - v6 = *(_DWORD *)(result + 52); - *(_DWORD *)(result + 16) = 0; - *(_DWORD *)(result + 24) = 0; - *(_DWORD *)(result + 56) = v6; - *(_DWORD *)(result + 60) = v6; - return result; -} - -//----- (00502250) -------------------------------------------------------- -int __cdecl operator new[](unsigned int a1) -{ - return operator new[](a1); -} - -//----- (005022E0) -------------------------------------------------------- -void *__cdecl operator new(size_t a1) -{ - size_t Size; // ebx - void *result; // eax - void (*new_handler)(void); // eax - _DWORD *exception; // eax - - Size = 1; - if ( a1 ) - Size = a1; - while ( 1 ) - { - result = malloc(Size); - if ( result ) - break; - new_handler = (void (*)(void))std::get_new_handler(); - if ( !new_handler ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_51B7BC; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_alloc, - (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); - } - new_handler(); - } - return result; -} -// 516A68: using guessed type int *`typeinfo for'std::bad_alloc; -// 51B7BC: using guessed type void (__cdecl *off_51B7BC)(std::bad_alloc *__hidden this); - -//----- (00502340) -------------------------------------------------------- -_DWORD *__cxa_allocate_dependent_exception() -{ - _DWORD *v0; // eax - _DWORD *v1; // ebx - _DWORD *v3; // eax - - v0 = malloc(0x50u); - if ( v0 ) - { - v1 = v0; - } - else - { - `anonymous namespace'::pool::allocate(80); - v1 = v3; - if ( !v3 ) - std::terminate(); - } - *v1 = 0; - v1[19] = 0; - memset( - (void *)((unsigned int)(v1 + 1) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)v1 - ((unsigned int)(v1 + 1) & 0xFFFFFFFC) + 80) >> 2)); - return v1; -} -// 5023B8: variable 'v3' is possibly undefined - -//----- (005023D0) -------------------------------------------------------- -void *__cdecl __cxa_allocate_exception(size_t thrown_size) -{ - _DWORD *v1; // eax - _DWORD *v2; // edx - _DWORD *v4; // eax - - v1 = malloc(thrown_size + 96); - if ( v1 ) - { - v2 = v1; - } - else - { - `anonymous namespace'::pool::allocate(thrown_size + 96); - v2 = v4; - if ( !v4 ) - std::terminate(); - } - *v2 = 0; - v2[23] = 0; - memset( - (void *)((unsigned int)(v2 + 1) & 0xFFFFFFFC), - 0, - 4 * (((unsigned int)v2 - ((unsigned int)(v2 + 1) & 0xFFFFFFFC) + 96) >> 2)); - return v2 + 24; -} -// 50244B: variable 'v4' is possibly undefined - -//----- (00502460) -------------------------------------------------------- -void *__cdecl __cxa_begin_catch(void *a1) -{ - char **globals; // eax - char *v2; // edx - char *v3; // ebp - int v5; // ecx - int v6; // edi - - globals = (char **)__cxa_get_globals(); - v2 = *globals; - v3 = (char *)a1 - 48; - if ( (unsigned __int64)(*(_QWORD *)a1 - 0x474E5543432B2B00LL) <= 1 ) - { - v5 = *((_DWORD *)a1 - 7); - v6 = 1 - v5; - if ( v5 >= 0 ) - v6 = v5 + 1; - *((_DWORD *)a1 - 7) = v6; - --globals[1]; - if ( v2 != v3 ) - { - *((_DWORD *)a1 - 8) = v2; - *globals = v3; - } - return (void *)*((_DWORD *)a1 - 2); - } - else - { - if ( v2 ) - std::terminate(); - *globals = v3; - return 0; - } -} - -//----- (005024F0) -------------------------------------------------------- -void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *a1) -{ - if ( a1 ) - { - __cxa_begin_catch(a1); - if ( !(((unsigned int)(*(_DWORD *)a1 - 1126902528) > 1) - + ((unsigned __int64)(*(_QWORD *)a1 - 0x474E5543432B2B00LL) >> 32)) ) - __cxxabiv1::__terminate(*((void (**)(void))a1 - 9)); - } - std::terminate(); -} - -//----- (00502540) -------------------------------------------------------- -void __cdecl __noreturn __cxa_call_unexpected(void *a1) -{ - __cxa_begin_catch(a1); - __cxxabiv1::__unexpected(*((void (**)(void))a1 - 10)); -} - -//----- (005026E0) -------------------------------------------------------- -struct type_info *__cxa_current_exception_type(void) -{ - struct type_info *result; // eax - int v1; // edx - - result = (struct type_info *)*__cxa_get_globals(); - if ( result ) - { - v1 = *((_DWORD *)result + 12); - result = *(struct type_info **)result; - if ( (v1 & 1) != 0 ) - return (struct type_info *)*((_DWORD *)result - 20); - } - return result; -} - -//----- (00502700) -------------------------------------------------------- -void __noreturn __cxa_deleted_virtual(void) -{ - write(2, "deleted virtual method called\n", 0x1Eu); - std::terminate(); -} - -//----- (00502730) -------------------------------------------------------- -void __cxa_end_catch(void) -{ - _DWORD *globals_fast; // edx - _DWORD *v1; // eax - int v2; // ecx - int v3; // ecx - - globals_fast = __cxa_get_globals_fast(); - v1 = (_DWORD *)*globals_fast; - if ( *globals_fast ) - { - if ( ((unsigned int)(v1[12] - 1126902528) > 1) - + ((unsigned __int64)(*((_QWORD *)v1 + 6) - 0x474E5543432B2B00LL) >> 32) ) - { - *globals_fast = 0; - _Unwind_DeleteException((struct _Unwind_Exception *)(v1 + 12)); - return; - } - v2 = v1[5]; - if ( v2 < 0 ) - { - v3 = v2 + 1; - if ( !v3 ) - *globals_fast = v1[4]; - } - else - { - v3 = v2 - 1; - if ( !v3 ) - { - *globals_fast = v1[4]; - _Unwind_DeleteException((struct _Unwind_Exception *)(v1 + 12)); - return; - } - if ( v3 == -1 ) - std::terminate(); - } - v1[5] = v3; - } -} - -//----- (005027D0) -------------------------------------------------------- -void __cdecl __cxa_free_dependent_exception(char *Block) -{ - if ( Block > ::Block && Block < (char *)::Block + dword_50B418 ) - `anonymous namespace'::pool::free((int)Block); - else - free(Block); -} -// 50B418: using guessed type int dword_50B418; - -//----- (00502840) -------------------------------------------------------- -void __cdecl __cxa_free_exception(void *a1) -{ - char *v1; // eax - - v1 = (char *)a1 - 96; - if ( (char *)a1 - 96 > Block && v1 < (char *)Block + dword_50B418 ) - `anonymous namespace'::pool::free((int)v1); - else - free((char *)a1 - 96); -} -// 50B418: using guessed type int dword_50B418; - -//----- (005028B0) -------------------------------------------------------- -void *__cdecl __cxa_get_exception_ptr(void *a1) -{ - return (void *)*((_DWORD *)a1 - 2); -} - -//----- (005028C0) -------------------------------------------------------- -_DWORD *__cxa_get_globals() -{ - return __emutls_get_address(__emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global); -} -// 50CC18: using guessed type size_t __emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global[4]; - -//----- (005028E0) -------------------------------------------------------- -_DWORD *__cxa_get_globals_fast() -{ - return __emutls_get_address(__emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global); -} -// 50CC18: using guessed type size_t __emutls_v__ZZN12_GLOBAL__N_110get_globalEvE6global[4]; - -//----- (00502900) -------------------------------------------------------- -void __cdecl __cxa_guard_abort(__guard *a1) -{ - *((_BYTE *)a1 + 1) = 0; - if ( _CRT_MT ) - { - if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) - __gnu_cxx::__throw_concurrence_unlock_error(); - } -} -// 50B0F0: using guessed type int _CRT_MT; -// 50BFC0: using guessed type int `anonymous namespace'::static_mutex; - -//----- (005029A0) -------------------------------------------------------- -int __cdecl __cxa_guard_acquire(__guard *a1) -{ - _DWORD *exception; // eax - int lpuexcpt; // [esp+18h] [ebp-44h] - - if ( *(_BYTE *)a1 ) - return 0; - lpuexcpt = _CRT_MT; - if ( _CRT_MT ) - { - __gthr_win32_once( - (int)&`anonymous namespace'::get_static_mutex(void)::once, - (void (*)(void))`anonymous namespace'::init); - if ( _CRT_MT ) - { - if ( __gthr_win32_recursive_mutex_lock(`anonymous namespace'::static_mutex) ) - { - exception = __cxa_allocate_exception(4u); - *exception = &off_519CF8; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, - (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); - } - if ( !*(_BYTE *)a1 ) - goto LABEL_9; - if ( _CRT_MT && __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) - __gnu_cxx::__throw_concurrence_unlock_error(); - } - else if ( !*(_BYTE *)a1 ) - { -LABEL_9: - if ( *((_BYTE *)a1 + 1) ) - __cxxabiv1::throw_recursive_init_exception(); - goto LABEL_5; - } - return 0; - } - if ( !*(_BYTE *)a1 ) - { - if ( *((_BYTE *)a1 + 1) ) - __cxxabiv1::throw_recursive_init_exception(); -LABEL_5: - lpuexcpt = 1; - *((_BYTE *)a1 + 1) = 1; - } - return lpuexcpt; -} -// 50B0F0: using guessed type int _CRT_MT; -// 50BFC0: using guessed type int `anonymous namespace'::static_mutex; -// 515CC8: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; -// 519CF8: using guessed type void (__cdecl *off_519CF8)(__gnu_cxx::__concurrence_lock_error *__hidden this); - -//----- (00502B40) -------------------------------------------------------- -void __cdecl __cxa_guard_release(__guard *a1) -{ - *((_BYTE *)a1 + 1) = 0; - *(_BYTE *)a1 = 1; - if ( _CRT_MT ) - { - if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) - __gnu_cxx::__throw_concurrence_unlock_error(); - } -} -// 50B0F0: using guessed type int _CRT_MT; -// 50BFC0: using guessed type int `anonymous namespace'::static_mutex; - -//----- (00502BE0) -------------------------------------------------------- -int __cdecl __cxa_init_primary_exception(int a1, int a2, int a3) -{ - void (*terminate)(void); // eax - int result; // eax - - *(_DWORD *)(a1 - 80) = a2; - *(_DWORD *)(a1 - 96) = 0; - *(_DWORD *)(a1 - 76) = a3; - *(_DWORD *)(a1 - 72) = std::get_unexpected(); - terminate = std::get_terminate(); - *(_DWORD *)(a1 - 32) = 1126902528; - *(_DWORD *)(a1 - 68) = terminate; - result = a1 - 96; - *(_DWORD *)(a1 - 28) = 1196315971; - *(_DWORD *)(a1 - 24) = __gxx_exception_cleanup; - return result; -} - -//----- (00502C30) -------------------------------------------------------- -void __noreturn __cxa_pure_virtual(void) -{ - write(2, "pure virtual method called\n", 0x1Bu); - std::terminate(); -} - -//----- (00502C60) -------------------------------------------------------- -void __noreturn __cxa_rethrow(void) -{ - int *globals; // eax - int v1; // edx - - globals = __cxa_get_globals(); - v1 = *globals; - ++globals[1]; - if ( v1 ) - { - if ( ((unsigned int)(*(_DWORD *)(v1 + 48) - 1126902528) > 1) - + ((unsigned __int64)(*(_QWORD *)(v1 + 48) - 0x474E5543432B2B00LL) >> 32) ) - { - *globals = 0; - } - else - { - *(_DWORD *)(v1 + 20) = -*(_DWORD *)(v1 + 20); - } - _Unwind_SjLj_Resume_or_Rethrow((struct _Unwind_Exception *)(v1 + 48)); - } - std::terminate(); -} - -//----- (00502CC0) -------------------------------------------------------- -void __cdecl __noreturn __cxa_throw(void *a1, struct type_info *lptinfo, void (__cdecl *a3)(void *)) -{ - _DWORD *globals; // eax - _DWORD *inited; // eax - void *v5; // ebx - - globals = __cxa_get_globals(); - ++globals[1]; - inited = (_DWORD *)__cxa_init_primary_exception((int)a1, (int)lptinfo, (int)a3); - v5 = inited + 16; - *inited = 1; - _Unwind_SjLj_RaiseException((struct _Unwind_Exception *)(inited + 16)); - __cxa_begin_catch(v5); - std::terminate(); -} - -//----- (00502D10) -------------------------------------------------------- -void *__cdecl __dynamic_cast( - const void *lpsrc, - const struct __class_type_info *lpstype, - const struct __class_type_info *lpdtype, - ptrdiff_t s2d) -{ - int v4; // edx - int v5; // ecx - int *v6; // edx - int v7; // eax - void *result; // eax - char *v9; // [esp+48h] [ebp-20h] BYREF - int v10; // [esp+4Ch] [ebp-1Ch] - int v11; // [esp+50h] [ebp-18h] - int v12; // [esp+54h] [ebp-14h] - int v13; // [esp+58h] [ebp-10h] - - v4 = *(_DWORD *)(*(_DWORD *)lpsrc - 8); - v5 = *(_DWORD *)(*(_DWORD *)lpsrc - 4); - v9 = 0; - v10 = 0; - v6 = (int *)((char *)lpsrc + v4); - v11 = 0; - v7 = *v6; - v12 = 0; - v13 = 16; - if ( *(_DWORD *)(v7 - 4) != v5 ) - return 0; - (*(void (__thiscall **)(int, ptrdiff_t, int, const struct __class_type_info *, int *, const struct __class_type_info *, const void *, char **))(*(_DWORD *)v5 + 28))( - v5, - s2d, - 6, - lpdtype, - v6, - lpstype, - lpsrc, - &v9); - result = v9; - if ( !v9 ) - return 0; - if ( (v12 & 6) != 6 && ((unsigned __int8)v11 & (unsigned __int8)v10 & 6) != 6 ) - { - if ( (v11 & 5) != 4 && !v12 ) - { - if ( s2d < 0 ) - { - if ( s2d != -2 - && ((*(int (__thiscall **)(const struct __class_type_info *, ptrdiff_t, char *, const struct __class_type_info *, const void *))(*(_DWORD *)lpdtype + 32))( - lpdtype, - s2d, - v9, - lpstype, - lpsrc) & 6) == 6 ) - { - return v9; - } - } - else if ( lpsrc == &v9[s2d] ) - { - return v9; - } - } - return 0; - } - return result; -} - -//----- (00502E30) -------------------------------------------------------- -int __cdecl __gxx_personality_sj0(int a1, int a2, __int64 a3, _Unwind_Exception *v, struct _Unwind_Context *lpuctx) -{ - int IPInfo; // eax - int v7; // ebp - char *v8; // eax - int v9; // edi - int v10; // ecx - char v11; // bl - int v12; // edx - int v13; // esi - int v14; // ecx - char v15; // bl - int v16; // edx - int v17; // edx - unsigned int v18; // ecx - char *v19; // esi - char v20; // bl - int v21; // eax - char *v22; // ebx - int v23; // esi - unsigned int v24; // ecx - int v25; // edi - char v26; // dl - int v27; // eax - int v28; // esi - char *v29; // edx - int v30; // ecx - char v31; // bl - int v32; // eax - int v33; // edx - unsigned __int8 v34; // al - int v35; // ecx - int *v36; // eax - bool v37; // [esp+18h] [ebp-B4h] - int v38; // [esp+18h] [ebp-B4h] - int v39; // [esp+20h] [ebp-ACh] - char *v40; // [esp+20h] [ebp-ACh] - int v41; // [esp+24h] [ebp-A8h] - char *v42; // [esp+24h] [ebp-A8h] - int v43; // [esp+28h] [ebp-A4h] - int v44; // [esp+2Ch] [ebp-A0h] - unsigned __int64 v45; // [esp+30h] [ebp-9Ch] - char v46; // [esp+3Bh] [ebp-91h] - char *LanguageSpecificData; // [esp+3Ch] [ebp-90h] - int **v48; // [esp+40h] [ebp-8Ch] - int v49; // [esp+48h] [ebp-84h] - int *v50; // [esp+8Ch] [ebp-40h] BYREF - unsigned int v51; // [esp+90h] [ebp-3Ch] BYREF - unsigned __int8 v52[4]; // [esp+94h] [ebp-38h] BYREF - char v53[8]; // [esp+98h] [ebp-34h] BYREF - char *v54; // [esp+A0h] [ebp-2Ch] - int v55; // [esp+A4h] [ebp-28h] - int v56; // [esp+A8h] [ebp-24h] - char v57; // [esp+ACh] [ebp-20h] - - v50 = 0; - v51 = 0; - if ( a1 != 1 ) - return 3; - v45 = a3 - 0x474E5543432B2B00LL; - v37 = (unsigned __int64)(a3 - 0x474E5543432B2B00LL) <= 1; - v46 = v37 && a2 == 6; - if ( v46 ) - { - v39 = *((_DWORD *)v - 3); - if ( v39 ) - { - v41 = *((_DWORD *)v - 6); - LanguageSpecificData = (char *)*((_DWORD *)v - 4); - goto LABEL_5; - } - goto LABEL_44; - } - LanguageSpecificData = (char *)_Unwind_GetLanguageSpecificData((int)lpuctx); - if ( !LanguageSpecificData ) - return 8; - v42 = parse_lsda_header((int)lpuctx, LanguageSpecificData, (int)v53); - v54 = (char *)base_of_encoded_value(v57); - IPInfo = _Unwind_GetIPInfo((int)lpuctx, &v51); - v7 = (__PAIR64__(IPInfo, v51) - 1) >> 32; - v39 = v7; - if ( v7 < 0 ) - return 8; - if ( !v7 ) - { - v41 = 0; - v33 = 1; - v44 = 0; - goto LABEL_49; - } - v8 = v42; - do - { - v9 = 0; - v10 = 0; - do - { - v11 = *v8++; - v12 = (v11 & 0x7F) << v10; - v10 += 7; - v9 |= v12; - } - while ( v11 < 0 ); - v13 = 0; - v14 = 0; - do - { - v15 = *v8++; - v16 = (v15 & 0x7F) << v14; - v14 += 7; - v13 |= v16; - } - while ( v15 < 0 ); - --v7; - } - while ( v7 ); - v49 = v9 + 1; - if ( !v13 ) - { - if ( v9 == -1 ) - return 8; - goto LABEL_46; - } - if ( v9 == -1 ) - return 8; - v44 = v56 + v13 - 1; - if ( v56 + v13 == 1 ) - goto LABEL_46; - v48 = &`typeinfo for'__cxxabiv1::__forced_unwind; - if ( (a2 & 8) == 0 ) - { - v48 = &`typeinfo for'__cxxabiv1::__foreign_exception; - if ( v45 <= 1 ) - { - v36 = (int *)((char *)v + 32); - if ( (*(_BYTE *)v & 1) != 0 ) - v36 = (int *)*((_DWORD *)v - 12); - v50 = v36; - v48 = (int **)*(v36 - 20); - } - } - while ( 1 ) - { - v17 = 0; - v18 = 0; - v19 = (char *)v44; - do - { - v20 = *v19++; - v21 = (v20 & 0x7F) << v18; - v18 += 7; - v17 |= v21; - } - while ( v20 < 0 ); - v40 = v19; - if ( v18 <= 0x1F && (v20 & 0x40) != 0 ) - v17 |= -(1 << v18); - v41 = v17; - v22 = v19; - v23 = 0; - v24 = 0; - v25 = v17; - do - { - v26 = *v22++; - v27 = (v26 & 0x7F) << v24; - v24 += 7; - v23 |= v27; - } - while ( v26 < 0 ); - v43 = v23; - if ( v24 <= 0x1F && (v26 & 0x40) != 0 ) - v43 = -(1 << v24) | v23; - if ( !v25 ) - { - v46 = 1; - goto LABEL_41; - } - if ( v25 > 0 ) - break; - if ( (a2 & 8) == 0 && v37 && v48 ) - { - if ( !(unsigned __int8)check_exception_spec((int)v53, (int)v48, v50, v25) ) - { - if ( (a2 & 1) != 0 ) - { - v39 = v49; - goto LABEL_56; - } - v39 = v49; - if ( (a2 & 8) == 0 ) - { - v33 = 3; -LABEL_51: - if ( v45 <= 1 ) - { - if ( v33 != 1 ) - { -LABEL_5: - if ( v41 < 0 ) - { - parse_lsda_header((int)lpuctx, LanguageSpecificData, (int)v53); - v54 = (char *)base_of_encoded_value(v57); - *((_DWORD *)v - 3) = base_of_encoded_value(v57); - } -LABEL_7: - _Unwind_SetGR(lpuctx, 0, (_Unwind_Word)v); - _Unwind_SetGR(lpuctx, 1, v41); - _Unwind_SetIP((int)lpuctx, v39); - return 7; - } -LABEL_44: - __cxa_call_terminate(v); - } -LABEL_52: - if ( v33 == 1 ) - std::terminate(); - } - if ( v41 < 0 ) - std::unexpected(); - goto LABEL_7; - } - } - else - { - v28 = 0; - v29 = (char *)(v55 + ~v25); - v30 = 0; - do - { - v31 = *v29++; - v32 = (v31 & 0x7F) << v30; - v30 += 7; - v28 |= v32; - } - while ( v31 < 0 ); - if ( !v28 ) - goto LABEL_67; - } -LABEL_41: - if ( !v43 ) - { - if ( !v46 ) - return 8; -LABEL_46: - if ( (a2 & 1) == 0 ) - { - v41 = a2 & 8; - v39 = v49; - if ( (a2 & 8) != 0 ) - v41 = 0; - goto LABEL_7; - } - return 8; - } - v44 = (int)&v40[v43]; - } - if ( v57 == -1 ) - { - v35 = 0; - goto LABEL_64; - } - v34 = v57 & 7; - if ( (v57 & 7) == 2 ) - { - v35 = -2 * v25; - goto LABEL_64; - } - if ( v34 <= 2u ) - { - if ( v34 ) -LABEL_85: - abort(); - goto LABEL_69; - } - if ( v34 == 3 ) - { -LABEL_69: - v35 = -4 * v25; - goto LABEL_64; - } - if ( v34 != 4 ) - goto LABEL_85; - v35 = -8 * v25; -LABEL_64: - read_encoded_value_with_base(v57, v54, (char *)(v55 + v35), (int *)v52); - if ( *(_DWORD *)v52 && (!v48 || !(unsigned __int8)get_adjusted_ptr(*(int *)v52, (int)v48, &v50)) ) - goto LABEL_41; -LABEL_67: - v33 = 3; - v39 = v49; -LABEL_49: - if ( (a2 & 1) == 0 ) - { - if ( (a2 & 8) == 0 ) - goto LABEL_51; - goto LABEL_52; - } - v38 = 6; - if ( v45 <= 1 ) - { -LABEL_56: - v38 = 6; - *((_DWORD *)v - 6) = v41; - *((_DWORD *)v - 5) = v44; - *((_DWORD *)v - 4) = LanguageSpecificData; - *((_DWORD *)v - 2) = v50; - *((_DWORD *)v - 3) = v39; - } - return v38; -} -// 515B4C: using guessed type int *`typeinfo for'__cxxabiv1::__forced_unwind; -// 515B60: using guessed type int *`typeinfo for'__cxxabiv1::__foreign_exception; - -//----- (00503570) -------------------------------------------------------- -void __tcf_0_1(void) -{ - if ( _CRT_MT ) - __gthr_win32_mutex_destroy((int)`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); -} -// 50B0F0: using guessed type int _CRT_MT; -// 50CBD4: using guessed type _DWORD `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex[2]; - -//----- (005035A0) -------------------------------------------------------- -void __tcf_0_2(void) -{ - if ( _CRT_MT ) - __gthr_win32_mutex_destroy((int)`anonymous namespace'::get_locale_mutex(void)::locale_mutex); -} -// 50B0F0: using guessed type int _CRT_MT; -// 50CBC0: using guessed type _DWORD `anonymous namespace'::get_locale_mutex(void)::locale_mutex[2]; - -//----- (00503610) -------------------------------------------------------- -void __tcf_0_3(void) -{ - if ( _CRT_MT ) - __gthr_win32_mutex_destroy((int)`anonymous namespace'::emergency_pool); -} -// 50B0F0: using guessed type int _CRT_MT; -// 50B408: using guessed type _DWORD `anonymous namespace'::emergency_pool[2]; - -//----- (00503680) -------------------------------------------------------- -void __cdecl __tcf_0_4(std::_V2::error_category *a1) -{ - `anonymous namespace'::__io_category_instance(void)::__ec = &off_5199CC; - std::_V2::error_category::~error_category(a1); -} -// 50CBD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); -// 5199CC: using guessed type void (__cdecl *off_5199CC)(_anonymous_namespace_::io_error_category *__hidden this); - -//----- (005036C0) -------------------------------------------------------- -int __cdecl main(int argc, const char **argv, const char **envp) -{ - void **v3; // ecx - _BYTE *v4; // eax - char v5; // dl - std::ostream::sentry *v6; // eax - char v7; // al - char v8; // al - _DWORD *v9; // eax - FILE *v10; // eax - bool v11; // zf - int *v12; // eax - int *v13; // edx - int *v14; // eax - bool v15; // zf - std::ostream::sentry *v16; // eax - std::ostream::sentry *v17; // edx - _DWORD *v18; // edx - int v19; // eax - FILE *v20; // eax - FILE *v21; // eax - FILE *v22; // eax - std::ostream::sentry *v23; // eax - std::ostream::sentry *v24; // eax - struct _Unwind_Exception *v25; // eax - FILE *v26; // eax - void **v28; // [esp-38h] [ebp-2D8h] - int v29; // [esp+0h] [ebp-2A0h] - char v30; // [esp+5h] [ebp-29Bh] - char v31; // [esp+6h] [ebp-29Ah] - char v32; // [esp+7h] [ebp-299h] - const char **v33; // [esp+8h] [ebp-298h] - char v34; // [esp+Ch] [ebp-294h] - char v35; // [esp+Dh] [ebp-293h] - char v36; // [esp+Eh] [ebp-292h] - char v37; // [esp+Fh] [ebp-291h] - char *FileName; // [esp+10h] [ebp-290h] - int v39; // [esp+14h] [ebp-28Ch] - int v40; // [esp+18h] [ebp-288h] - bool Stream; // [esp+1Ch] [ebp-284h] - FILE *Streama; // [esp+1Ch] [ebp-284h] - FILE *Streamb; // [esp+1Ch] [ebp-284h] - char **v44; // [esp+20h] [ebp-280h] - char *v45; // [esp+20h] [ebp-280h] - int *v46; // [esp+20h] [ebp-280h] - const char *v47; // [esp+20h] [ebp-280h] - char *Block; // [esp+24h] [ebp-27Ch] - std::ostream::sentry *v49; // [esp+28h] [ebp-278h] - std::ostream::sentry *v50; // [esp+28h] [ebp-278h] - std::ostream::sentry *v51; // [esp+28h] [ebp-278h] - std::ostream::sentry *v52; // [esp+28h] [ebp-278h] - std::ostream::sentry *v53; // [esp+28h] [ebp-278h] - int CommHead; // [esp+2Ch] [ebp-274h] - int i; // [esp+2Ch] [ebp-274h] - char v56; // [esp+2Ch] [ebp-274h] - void **v57; // [esp+2Ch] [ebp-274h] - unsigned int j; // [esp+2Ch] [ebp-274h] - const char *v59; // [esp+2Ch] [ebp-274h] - int k; // [esp+2Ch] [ebp-274h] - int *v61; // [esp+2Ch] [ebp-274h] - int *insert_hint_unique_pos; // [esp+2Ch] [ebp-274h] - void *v63; // [esp+2Ch] [ebp-274h] - const char *v64; // [esp+2Ch] [ebp-274h] - struct _Unwind_Exception *lpuexcpt; // [esp+30h] [ebp-270h] - void **v66; // [esp+74h] [ebp-22Ch] BYREF - void **v67; // [esp+78h] [ebp-228h] - int v68; // [esp+7Ch] [ebp-224h] - void **v69; // [esp+80h] [ebp-220h] BYREF - int v70; // [esp+84h] [ebp-21Ch] - int v71; // [esp+88h] [ebp-218h] - int *v72; // [esp+8Ch] [ebp-214h] BYREF - char *v73; // [esp+90h] [ebp-210h] - char *v74; // [esp+94h] [ebp-20Ch] - void *v75[6]; // [esp+98h] [ebp-208h] BYREF - void *v76[6]; // [esp+B0h] [ebp-1F0h] BYREF - char v77[4]; // [esp+C8h] [ebp-1D8h] BYREF - int v78; // [esp+CCh] [ebp-1D4h] BYREF - std::ostream::sentry *v79; // [esp+D0h] [ebp-1D0h] - int *v80; // [esp+D4h] [ebp-1CCh] - int *v81; // [esp+D8h] [ebp-1C8h] - int v82; // [esp+DCh] [ebp-1C4h] - int v83[2]; // [esp+E0h] [ebp-1C0h] BYREF - char v84; // [esp+E8h] [ebp-1B8h] BYREF - char *v85; // [esp+F8h] [ebp-1A8h] BYREF - int v86; // [esp+FCh] [ebp-1A4h] - char v87; // [esp+100h] [ebp-1A0h] BYREF - void *v88[2]; // [esp+110h] [ebp-190h] BYREF - char v89; // [esp+118h] [ebp-188h] BYREF - void *v90[2]; // [esp+128h] [ebp-178h] BYREF - char v91; // [esp+130h] [ebp-170h] BYREF - char v92[4]; // [esp+140h] [ebp-160h] BYREF - int v93[5]; // [esp+144h] [ebp-15Ch] BYREF - void *v94[2]; // [esp+158h] [ebp-148h] BYREF - char v95; // [esp+160h] [ebp-140h] BYREF - void *v96[2]; // [esp+170h] [ebp-130h] BYREF - char v97; // [esp+178h] [ebp-128h] BYREF - int v98; // [esp+188h] [ebp-118h] BYREF - int v99; // [esp+18Ch] [ebp-114h] - char v100[16]; // [esp+190h] [ebp-110h] BYREF - int v101; // [esp+1A0h] [ebp-100h] BYREF - int v102; // [esp+1A4h] [ebp-FCh] - char v103; // [esp+1A8h] [ebp-F8h] BYREF - void *v104[2]; // [esp+1B8h] [ebp-E8h] BYREF - char v105[4]; // [esp+1C0h] [ebp-E0h] BYREF - char v106[12]; // [esp+1C4h] [ebp-DCh] BYREF - char v107[196]; // [esp+1D0h] [ebp-D0h] BYREF - int *p_argc; // [esp+294h] [ebp-Ch] - - // main - 0 - p_argc = &argc; - v40 = argc; - v33 = argv; - __main(); - std::string::basic_string(v75, (char *)&byte_50D216); - std::string::basic_string(v76, "./app.wxss"); - v80 = &v78; - v81 = &v78; - v66 = 0; - v67 = 0; - v68 = 0; - v78 = 0; - v79 = 0; - v82 = 0; - v83[0] = (int)&v84; - v83[1] = 0; - v84 = 0; - if ( v40 <= 1 ) - { - CommHead = Usage(v40, v33); - goto LABEL_121; - } - // main - 5 - v69 = 0; - v70 = 0; - v71 = 0; - - v85 = &v87; - v86 = 0; - v87 = 0; - - // v40 -> argc - for ( i = 1; i < v40; ++i ) - { - std::string::basic_string(v104, "--config-path"); - v49 = (std::ostream::sentry *)(4 * i); - // v33 -> argv - v44 = (char **)&v33[i]; - Stream = 0; - if ( !std::string::compare((int)v104, *v44) ) - Stream = i + 1 < v40; - std::string::_M_dispose(v104); - if ( Stream ) - { - ++i; - std::string::operator=((unsigned int *)&v85, *(char **)((char *)v49 + (_DWORD)v33 + 4)); - } - else - { - std::string::basic_string(v104, *v44); - std::vector::emplace_back((int)&v69, v104); - std::string::_M_dispose(v104); - } - } - // main - 10 - if ( v86 ) - { - v99 = 0; - v98 = (int)v100; - v100[0] = 0; - ReadFile(v85, (unsigned int *)&v98); - while ( v99 ) - { - std::string::basic_string((void **)&v101, "\n"); - GetNextArg((int)v104, &v98, (int)&v101); - std::vector::emplace_back((int)&v69, v104); - std::string::_M_dispose(v104); - std::string::_M_dispose((void **)&v101); - } - std::string::_M_dispose((void **)&v98); - } - // main - 15 - v50 = 0; - v36 = 0; - v30 = 0; - v29 = 0; - v56 = 0; - // std::vector 参数列表 - v39 = -1431655765 * ((v70 - (int)v69) >> 3); - v31 = 0; - v37 = 0; - v35 = 0; - v32 = 0; - v34 = 0; - FileName = 0; - while ( (int)v50 < v39 ) - { - v3 = &v69[6 * (_DWORD)v50]; - Streama = (FILE *)(24 * (_DWORD)v50); - v4 = *v3; - if ( *(_BYTE *)*v3 != '-'/*45*/ ) - { - v28 = &v69[6 * (_DWORD)v50]; - if ( !v56 ) - { - std::string::basic_string((char *)v104, (int)v28); - std::vector::emplace_back((int)&v66, v104); - std::string::_M_dispose(v104); - goto LABEL_57; // continue - } - std::string::basic_string((char *)v104, (int)v28); - std::string::operator=((unsigned __int8 **)v75, (int)v104); - std::string::_M_dispose(v104); - goto LABEL_56; - } - // v4 -> current - v5 = v4[1]; - v45 = (char *)v50 + 1; - // v50 -> currentIndex - // v39 -> size - switch ( v5 ) - { - case 'o': - if ( v39 > (int)v50 + 1 ) - { - FileName = *(char **)((char *)&Streama->_bufsiz + (_DWORD)v69); - v6 = (std::ostream::sentry *)((char *)v50 + 1); - LABEL_49: - v50 = v6; - goto LABEL_56; // v56 = 0; continue; - } - break; - case 's': - v7 = v4[2]; - if ( v7 == 't'/*116*/ ) - { - v56 = 0; - v34 = 1; - goto LABEL_57; // continue - } - if ( v7 == 'd'/*100*/ ) - { - if ( v39 > (int)v45 ) - { - std::string::operator=((unsigned int *)v83, *(char **)((char *)&Streama->_bufsiz + (_DWORD)v69)); - v56 = 0; - v50 = (std::ostream::sentry *)((char *)v50 + 1); - v35 = 1; - goto LABEL_57; // continue - } - } - else if ( v39 > (int)v45 ) - { - v56 = 0; - v32 = 1; - v50 = (std::ostream::sentry *)((char *)v50 + 1); - goto LABEL_57; // continue - } - break; - case 'l': - v8 = v4[2]; - if ( v8 == 'c'/*99*/ ) - goto LABEL_56; // v56 = 0; continue; - if ( v8 == 'l'/*108*/ ) - { - v36 = 1; - goto LABEL_56; // v56 = 0; continue; - } - break; - case 'd': - if ( v4[2] == 'b'/*98*/ ) - { - v56 = 0; - v37 = 1; - goto LABEL_57; // continue - } - break; - case 'j': - if ( v4[2] == 's'/*115*/ ) - { - v56 = 0; - v31 = 1; - goto LABEL_57; // continue - } - break; - case 'c': - if ( v4[2] == 'p'/*112*/ ) - { - v56 = 1; - goto LABEL_57; // continue - } - break; - default: - if ( v5 == 'p'/*112*/ && v4[2] == 'c'/*99*/ ) - { - v30 = 1; - v29 = atoi(*(const char **)((char *)&Streama->_bufsiz + (_DWORD)v69)); - v50 = (std::ostream::sentry *)((char *)v50 + 1); - LABEL_56: - v56 = 0; - goto LABEL_57; // continue - } - break; - } - v56 = 0; - // v3 -> cur - if ( !std::string::compare((int)v3, "--subpackage") && v39 > (int)v45 ) - { - v101 = (int)&v103; - v102 = 0; - v103 = 0; - - v57 = (void **)((char *)&Streama->_bufsiz + (_DWORD)v69); - std::string::reserve(&v101, (unsigned int)(*(char **)((char *)&Streama->_tmpfname + (_DWORD)v69) + 2)); - if ( v102 == 0x3FFFFFFF || v102 == 1073741822 ) - std::__throw_length_error((std::length_error *)"basic_string::append"); - std::string::_M_append(&v101, "./", 2u); - std::string::_M_append(&v101, *v57, (size_t)v57[1]); - v9 = std::string::append(&v101, "/app.wxss"); - std::string::basic_string(v104, v9); - std::string::operator=((unsigned __int8 **)v76, (int)v104); - std::string::_M_dispose(v104); - std::string::_M_dispose((void **)&v101); - v6 = (std::ostream::sentry *)((char *)v50 + 1); - goto LABEL_49; // v50++; v56 = 0; continue; - } - LABEL_57: - v50 = (std::ostream::sentry *)((char *)v50 + 1); - } - // main - 20 - if ( v67 == v66 && !v32 && !v35 ) - { - CommHead = Usage(v40, v33); - goto LABEL_106; // 销毁数据, return CommHead - } - Streamb = ___acrt_iob_func(1u); - if ( FileName && *FileName ) - Streamb = fopen(FileName, "w"); - if ( !v35 ) - { - for ( j = 0; -1431655765 * (((char *)v67 - (char *)v66) >> 3) > j; ++j ) - { - if ( ReadFile((char *)v66[6 * j], (unsigned int *)v83) ) - { - v59 = (const char *)v66[6 * j]; - v10 = ___acrt_iob_func(2u); - fprintf(v10, "%s not found\n", v59); - CommHead = 1; - goto LABEL_106; // 销毁数据, return CommHead - } - std::string::basic_string((char *)v104, (int)&v66[6 * j]); - std::string::basic_string(v107, (int)v83); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_emplace_unique>( - v77, - v104); - std::pair::~pair(v104); - } - } - // main - 25 - v88[0] = &v89; - v88[1] = 0; - v89 = 0; - - // errorMessage - v90[0] = &v91; - v90[1] = 0; - v91 = 0; - - v72 = 0; - v73 = 0; - v74 = 0; - if ( !v30 ) - { - if ( !v36 ) - { - v25 = WXSS::LintAndParseCSSList(v77, (int)v66, (unsigned int *)v88, (int)v90, 0, v31, v37, v34, (int)v75); - goto LABEL_115; - } - LABEL_102: - v93[0] = 0; - v93[1] = 0; - v93[2] = (int)v93; - v93[3] = (int)v93; - v93[4] = 0; - - v94[0] = &v95; - v94[1] = 0; - v95 = 0; - - v96[0] = &v97; - v96[1] = 0; - v97 = 0; - - lpuexcpt = (struct _Unwind_Exception *)operator new(0xB0u); - WXSS::XCompiler::XCompiler((char *)lpuexcpt, v77, v37, (int)v75); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>> - ::_M_erase(*((_DWORD *)lpuexcpt + 34)); - // offset_(34 * 4) = offset_136 - *((_DWORD *)lpuexcpt + 34) = 0; - *((_DWORD *)lpuexcpt + 35) = (char *)lpuexcpt + 132; - *((_DWORD *)lpuexcpt + 36) = (char *)lpuexcpt + 132; - v19 = *((_DWORD *)lpuexcpt + 40); - *((_DWORD *)lpuexcpt + 37) = 0; - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(v19); - *((_DWORD *)lpuexcpt + 40) = 0; - *((_DWORD *)lpuexcpt + 41) = (char *)lpuexcpt + 156; - *((_DWORD *)lpuexcpt + 42) = (char *)lpuexcpt + 156; - *((_DWORD *)lpuexcpt + 43) = 0; - std::string::_M_assign((int)v96, (int)lpuexcpt + 8); - v52 = *(std::ostream::sentry **)lpuexcpt; - if ( !*(_DWORD *)lpuexcpt ) - { - CommHead = (int)WXSS::XCompiler::GetCommHead((int)lpuexcpt, &v72, v94, 1, (int *)v76); - if ( CommHead ) - { - v21 = ___acrt_iob_func(2u); - fprintf(v21, "ERR: GetCommHead ret %d", CommHead); - } - while ( -1431655765 * ((v73 - (char *)v72) >> 3) > (unsigned int)v52 ) - { - v98 = (int)v100; - v99 = 0; - v100[0] = 0; - - WXML::Rewrite::ToStringCode((int)&v101, &v72[6 * (_DWORD)v52]); - CommHead = WXSS::XCompiler::GetPageCss((char *)lpuexcpt, &v101, &v98, 0); - if ( CommHead ) - { - v22 = ___acrt_iob_func(2u); - fprintf(v22, "INFO: GetPageCss fail ret %d", CommHead); - } - // current - std::string::basic_string((char *)v104, (int)&v72[6 * (_DWORD)v52]); - std::string::basic_string(v107, (int)&v98); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( - v92, - v104); - std::pair::~pair(v104); - std::string::_M_dispose((void **)&v101); - std::string::_M_dispose((void **)&v98); - v52 = (std::ostream::sentry *)((char *)v52 + 1); - } - std::basic_stringstream,std::allocator>::basic_stringstream((int)v104); - v53 = std::operator<<>((std::ostream::sentry *)v105, "{\"common\":\""); - - EscapeToJsonString((int)&v101, (int)v94); - v23 = std::operator<<(v53, &v101); - - std::operator<<>(v23, "\",\"pageWxss\":"); - std::string::_M_dispose((void **)&v101); - DictToJsonString((int)&v101, (int)v92); - v24 = std::operator<<((std::ostream::sentry *)v105, &v101); - std::operator<<>(v24, "}"); - std::string::_M_dispose((void **)&v101); - std::stringbuf::str((int)&v101, (int)v106); - std::string::operator=((unsigned __int8 **)v88, (int)&v101); - std::string::_M_dispose((void **)&v101); - std::basic_stringstream,std::allocator>::~basic_stringstream((int)v104); - std::string::_M_dispose(v96); - std::string::_M_dispose(v94); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)v92); - goto LABEL_116; - } - v63 = (void *)*((_DWORD *)lpuexcpt + 1); - v47 = (const char *)v96[0]; - v20 = ___acrt_iob_func(2u); - fprintf(v20, "ERR: wxss GetCompiledResult: %s, error file count: %d, ret %d", v47, v63, v52); - std::string::_M_dispose(v96); - std::string::_M_dispose(v94); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)v92); - LABEL_104: - CommHead = 1; - goto LABEL_105; // return 1; - } - // main - 30 - for ( k = 0; v29 > k; ++k ) - { - if ( v73 == v74 ) - { - std::vector::_M_realloc_insert((void **)&v72, v73, (int)&v66[6 * k]); - } - else - { - std::string::basic_string(v73, (int)&v66[6 * k]); - v73 += 24; - } - } - v51 = v79; - v61 = (int *)v79; - v46 = &v78; - // int *v61 - while ( v61 ) - { - v11 = (unsigned __int8)std::operator<((int)(v61 + 4), (int)v76) == 0; - v12 = v46; - v13 = (int *)v61[3]; // v61->offset_12 - if ( v11 ) - { - v13 = (int *)v61[2]; // v61->offset_8 - if ( v11 ) - v12 = v61; - } - v61 = v13; - v46 = v12; - } - // main - 35 - if ( v46 == &v78 ) - { - v14 = v46; - goto LABEL_89; - } - // 找v76 - app.wxss - if ( (unsigned __int8)std::operator<((int)v76, (int)(v46 + 4)) ) - { - v14 = &v78; - LABEL_89: - insert_hint_unique_pos = v14; - while ( v51 ) - { - v15 = (unsigned __int8)std::operator<((int)v51 + 16, (int)v76) == 0; - v16 = (std::ostream::sentry *)insert_hint_unique_pos; - v17 = (std::ostream::sentry *)*((_DWORD *)v51 + 3); - if ( v15 ) - { - v17 = (std::ostream::sentry *)*((_DWORD *)v51 + 2); - if ( v15 ) - v16 = v51; - } - v51 = v17; - insert_hint_unique_pos = (int *)v16; - } - if ( insert_hint_unique_pos == &v78 - || (unsigned __int8)std::operator<((int)v76, (int)(insert_hint_unique_pos + 4)) ) - { - // char* Block - Block = (char *)operator new(0x40u); - std::string::basic_string(Block + 16, (int)v76); - // block->offset_16 - *((_DWORD *)Block + 11) = 0; - // block->offset_44 - Block[48] = 0; - *((_DWORD *)Block + 10) = Block + 48; - insert_hint_unique_pos = (int *)std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( - v77, - insert_hint_unique_pos, - (int)(Block + 16)); - if ( v18 ) - { - insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( - v77, - (int)insert_hint_unique_pos, - v18, - Block); - } - else - { - std::string::_M_dispose((void **)Block + 10); - std::string::_M_dispose((void **)Block + 4); - operator delete(Block); - } - } - std::string::operator=((unsigned int *)insert_hint_unique_pos + 10, (char *)&byte_50D216); // '\0' - } - // main - 40 - if ( v36 ) - goto LABEL_102; - // v77 - std::map - v25 = WXSS::NewLintAndParseCSSList(v77, (int *)&v72, (unsigned int *)v88, (int)v90, 0, v37, (int)v75, (int *)v76); -LABEL_115: - CommHead = (int)v25; -LABEL_116: - if ( CommHead ) - { - v64 = (const char *)v90[0]; - v26 = ___acrt_iob_func(2u); - fprintf(v26, "ERR: %s\nerror file count: %d\n", v64, 0); - goto LABEL_104; // 销毁数据,return 1; - } - fprintf(Streamb, "%s", (const char *)v88[0]); - fclose(Streamb); - // main - 45 -LABEL_105: - std::vector::~vector((void ***)&v72); - std::string::_M_dispose(v90); - std::string::_M_dispose(v88); -LABEL_106: - std::string::_M_dispose((void **)&v85); - std::vector::~vector(&v69); -LABEL_121: - std::string::_M_dispose((void **)v83); - std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)v77); - std::vector::~vector(&v66); - std::string::_M_dispose(v76); - std::string::_M_dispose(v75); - return CommHead; -} -// 5042C7: variable 'v18' is possibly undefined -// 5036C0: using guessed type char var_1D8[4]; -// 5036C0: using guessed type char var_160[4]; -// 5036C0: using guessed type char var_E0[4]; -// 5036C0: using guessed type char var_DC[12]; - -//----- (00504C37) -------------------------------------------------------- -int _GLOBAL__sub_I__Z5UsageiPPKc() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_1); -} - -//----- (00504C58) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXSS11RemoveQuoteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_3); -} - -//----- (00504C78) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib6Parser5ParseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_RS7_S9_() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_1_1); -} - -//----- (00504C98) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXSS9Tokenizer2TTE() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_0_0); -} - -//----- (00504CB8) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib12TransitTable10GetTopTypeEv() -{ - std::ios_base::Init::Init(); - return atexit(__tcf_1_2); -} - -//----- (00504CD8) -------------------------------------------------------- -void __noreturn __cxxabiv1::throw_recursive_init_exception(void) -{ - _DWORD *exception; // ebx - - exception = __cxa_allocate_exception(4u); - __gnu_cxx::recursive_init_error::recursive_init_error(exception); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'__gnu_cxx::recursive_init_error, - (void (__cdecl *)(void *))__gnu_cxx::recursive_init_error::~recursive_init_error); -} -// 515CBC: using guessed type int *`typeinfo for'__gnu_cxx::recursive_init_error; - -//----- (00504D10) -------------------------------------------------------- -void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() -{ - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::money_get>::id ) - `guard variable for'std::money_get>::id = 1; - if ( !`guard variable for'std::money_put>::id ) - `guard variable for'std::money_put>::id = 1; - if ( !`guard variable for'std::numpunct::id ) - `guard variable for'std::numpunct::id = 1; - if ( !`guard variable for'std::time_get>::id ) - `guard variable for'std::time_get>::id = 1; - if ( !`guard variable for'std::messages::id ) - `guard variable for'std::messages::id = 1; - if ( !`guard variable for'std::collate::id ) - `guard variable for'std::collate::id = 1; -} -// 50B1A8: using guessed type char `guard variable for'std::moneypunct::id; -// 50B1B0: using guessed type char `guard variable for'std::moneypunct::id; -// 50B1C8: using guessed type char `guard variable for'std::collate::id; -// 50B1D8: using guessed type char `guard variable for'std::messages::id; -// 50B1E8: using guessed type char `guard variable for'std::numpunct::id; -// 50B1F8: using guessed type char `guard variable for'std::time_get>::id; -// 50B208: using guessed type char `guard variable for'std::money_get>::id; -// 50B218: using guessed type char `guard variable for'std::money_put>::id; - -//----- (00504DA0) -------------------------------------------------------- -void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() -{ - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::money_get>::id ) - `guard variable for'std::money_get>::id = 1; - if ( !`guard variable for'std::money_put>::id ) - `guard variable for'std::money_put>::id = 1; - if ( !`guard variable for'std::numpunct::id ) - `guard variable for'std::numpunct::id = 1; - if ( !`guard variable for'std::time_get>::id ) - `guard variable for'std::time_get>::id = 1; - if ( !`guard variable for'std::messages::id ) - `guard variable for'std::messages::id = 1; - if ( !`guard variable for'std::collate::id ) - `guard variable for'std::collate::id = 1; -} -// 50B1B8: using guessed type char `guard variable for'std::moneypunct::id; -// 50B1C0: using guessed type char `guard variable for'std::moneypunct::id; -// 50B1D0: using guessed type char `guard variable for'std::collate::id; -// 50B1E0: using guessed type char `guard variable for'std::messages::id; -// 50B1F0: using guessed type char `guard variable for'std::numpunct::id; -// 50B200: using guessed type char `guard variable for'std::time_get>::id; -// 50B210: using guessed type char `guard variable for'std::money_get>::id; -// 50B220: using guessed type char `guard variable for'std::money_put>::id; - -//----- (00504E30) -------------------------------------------------------- -void __noreturn std::__throw_bad_exception(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_51AA3C; - __cxa_throw(exception, (struct type_info *)&`typeinfo for'std::bad_exception, std::bad_exception::~bad_exception); -} -// 5164E0: using guessed type int *`typeinfo for'std::bad_exception; -// 51AA3C: using guessed type void (__cdecl *off_51AA3C)(std::bad_exception *__hidden this); - -//----- (00504E60) -------------------------------------------------------- -void __noreturn std::__throw_bad_alloc(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_51B7BC; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_alloc, - (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); -} -// 516A68: using guessed type int *`typeinfo for'std::bad_alloc; -// 51B7BC: using guessed type void (__cdecl *off_51B7BC)(std::bad_alloc *__hidden this); - -//----- (00504E90) -------------------------------------------------------- -void __noreturn std::__throw_bad_cast(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_51B6A0; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_cast, - (void (__cdecl *)(void *))std::bad_cast::~bad_cast); -} -// 5169A4: using guessed type int *`typeinfo for'std::bad_cast; -// 51B6A0: using guessed type void (__cdecl *off_51B6A0)(std::bad_cast *__hidden this); - -//----- (00504EC0) -------------------------------------------------------- -void __noreturn std::__throw_bad_typeid(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_51A83C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_typeid, - (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); -} -// 5163B0: using guessed type int `typeinfo for'std::bad_typeid; -// 51A83C: using guessed type void (__cdecl *off_51A83C)(std::bad_typeid *__hidden this); - -//----- (00504EF0) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_logic_error(std::logic_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::logic_error::logic_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::logic_error, - (void (__cdecl *)(void *))std::logic_error::~logic_error); -} -// 504F3B: variable 'v1' is possibly undefined -// 51646C: using guessed type int *`typeinfo for'std::logic_error; - -//----- (00504F88) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_domain_error(std::domain_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::domain_error::domain_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::domain_error, - (void (__cdecl *)(void *))std::domain_error::~domain_error); -} -// 504FD3: variable 'v1' is possibly undefined -// 5164A4: using guessed type int *`typeinfo for'std::domain_error; - -//----- (00505020) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::invalid_argument::invalid_argument(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::invalid_argument, - (void (__cdecl *)(void *))std::invalid_argument::~invalid_argument); -} -// 50506B: variable 'v1' is possibly undefined -// 5166D4: using guessed type int *`typeinfo for'std::invalid_argument; - -//----- (005050B8) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_length_error(std::length_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::length_error::length_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::length_error, - (void (__cdecl *)(void *))std::length_error::~length_error); -} -// 505103: variable 'v1' is possibly undefined -// 5164B0: using guessed type int *`typeinfo for'std::length_error; - -//----- (00505150) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::out_of_range::out_of_range(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::out_of_range, - (void (__cdecl *)(void *))std::out_of_range::~out_of_range); -} -// 50519B: variable 'v1' is possibly undefined -// 5164BC: using guessed type int *`typeinfo for'std::out_of_range; - -//----- (005051E8) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::runtime_error::runtime_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::runtime_error, - (void (__cdecl *)(void *))std::runtime_error::~runtime_error); -} -// 505233: variable 'v1' is possibly undefined -// 516554: using guessed type int *`typeinfo for'std::runtime_error; - -//----- (00505280) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_range_error(std::range_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::range_error::range_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::range_error, - (void (__cdecl *)(void *))std::range_error::~range_error); -} -// 5052CB: variable 'v1' is possibly undefined -// 516478: using guessed type int *`typeinfo for'std::range_error; - -//----- (00505318) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::overflow_error::overflow_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::overflow_error, - (void (__cdecl *)(void *))std::overflow_error::~overflow_error); -} -// 505363: variable 'v1' is possibly undefined -// 5165E0: using guessed type int *`typeinfo for'std::overflow_error; - -//----- (005053B0) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *a1) -{ - const char *v1; // [esp+4h] [ebp-54h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(8u); - std::underflow_error::underflow_error(exception, a1, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::underflow_error, - (void (__cdecl *)(void *))std::underflow_error::~underflow_error); -} -// 5053FB: variable 'v1' is possibly undefined -// 5166A4: using guessed type int *`typeinfo for'std::underflow_error; - -//----- (00505450) -------------------------------------------------------- -void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj() -{ - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::money_get>::id ) - `guard variable for'std::money_get>::id = 1; - if ( !`guard variable for'std::money_put>::id ) - `guard variable for'std::money_put>::id = 1; - if ( !`guard variable for'std::numpunct::id ) - `guard variable for'std::numpunct::id = 1; - if ( !`guard variable for'std::num_get>::id ) - `guard variable for'std::num_get>::id = 1; - if ( !`guard variable for'std::num_put>::id ) - `guard variable for'std::num_put>::id = 1; - if ( !`guard variable for'std::__timepunct::id ) - `guard variable for'std::__timepunct::id = 1; - if ( !`guard variable for'std::time_put>::id ) - `guard variable for'std::time_put>::id = 1; - if ( !`guard variable for'std::time_get>::id ) - `guard variable for'std::time_get>::id = 1; - if ( !`guard variable for'std::messages::id ) - `guard variable for'std::messages::id = 1; - if ( !`guard variable for'std::collate::id ) - `guard variable for'std::collate::id = 1; -} -// 50B178: using guessed type char `guard variable for'std::moneypunct::id; -// 50B180: using guessed type char `guard variable for'std::moneypunct::id; -// 50B198: using guessed type char `guard variable for'std::__timepunct::id; -// 50B228: using guessed type char `guard variable for'std::collate::id; -// 50B238: using guessed type char `guard variable for'std::num_get>::id; -// 50B248: using guessed type char `guard variable for'std::num_put>::id; -// 50B258: using guessed type char `guard variable for'std::messages::id; -// 50B268: using guessed type char `guard variable for'std::numpunct::id; -// 50B278: using guessed type char `guard variable for'std::time_get>::id; -// 50B288: using guessed type char `guard variable for'std::time_put>::id; -// 50B298: using guessed type char `guard variable for'std::money_get>::id; -// 50B2A8: using guessed type char `guard variable for'std::money_put>::id; - -//----- (00505520) -------------------------------------------------------- -void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj() -{ - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::moneypunct::id ) - `guard variable for'std::moneypunct::id = 1; - if ( !`guard variable for'std::money_get>::id ) - `guard variable for'std::money_get>::id = 1; - if ( !`guard variable for'std::money_put>::id ) - `guard variable for'std::money_put>::id = 1; - if ( !`guard variable for'std::numpunct::id ) - `guard variable for'std::numpunct::id = 1; - if ( !`guard variable for'std::num_get>::id ) - `guard variable for'std::num_get>::id = 1; - if ( !`guard variable for'std::num_put>::id ) - `guard variable for'std::num_put>::id = 1; - if ( !`guard variable for'std::__timepunct::id ) - `guard variable for'std::__timepunct::id = 1; - if ( !`guard variable for'std::time_put>::id ) - `guard variable for'std::time_put>::id = 1; - if ( !`guard variable for'std::time_get>::id ) - `guard variable for'std::time_get>::id = 1; - if ( !`guard variable for'std::messages::id ) - `guard variable for'std::messages::id = 1; - if ( !`guard variable for'std::collate::id ) - `guard variable for'std::collate::id = 1; -} -// 50B188: using guessed type char `guard variable for'std::moneypunct::id; -// 50B190: using guessed type char `guard variable for'std::moneypunct::id; -// 50B1A0: using guessed type char `guard variable for'std::__timepunct::id; -// 50B230: using guessed type char `guard variable for'std::collate::id; -// 50B240: using guessed type char `guard variable for'std::num_get>::id; -// 50B250: using guessed type char `guard variable for'std::num_put>::id; -// 50B260: using guessed type char `guard variable for'std::messages::id; -// 50B270: using guessed type char `guard variable for'std::numpunct::id; -// 50B280: using guessed type char `guard variable for'std::time_get>::id; -// 50B290: using guessed type char `guard variable for'std::time_put>::id; -// 50B2A0: using guessed type char `guard variable for'std::money_get>::id; -// 50B2B0: using guessed type char `guard variable for'std::money_put>::id; - -//----- (005055F0) -------------------------------------------------------- -void __cdecl __noreturn d_type_cold( - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int a7, - int a8, - int a9, - int a10, - int a11) -{ - BUG(); -} - -//----- (00505690) -------------------------------------------------------- -int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv() -{ - _DWORD *v0; // eax - - if ( _CRT_MT ) - __gthr_win32_mutex_init_function(`anonymous namespace'::emergency_pool); - dword_50B418 = 18944; - v0 = malloc(0x4A00u); - Block = v0; - if ( v0 ) - { - dword_50B410 = (int)v0; - *v0 = 18944; - v0[1] = 0; - } - else - { - dword_50B418 = 0; - dword_50B410 = 0; - } - return atexit(__tcf_0_3); -} -// 50B0F0: using guessed type int _CRT_MT; -// 50B408: using guessed type _DWORD `anonymous namespace'::emergency_pool[2]; -// 50B410: using guessed type int dword_50B410; -// 50B418: using guessed type int dword_50B418; - -//----- (00505710) -------------------------------------------------------- -void __noreturn __cxa_bad_cast(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_51B6A0; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_cast, - (void (__cdecl *)(void *))std::bad_cast::~bad_cast); -} -// 5169A4: using guessed type int *`typeinfo for'std::bad_cast; -// 51B6A0: using guessed type void (__cdecl *off_51B6A0)(std::bad_cast *__hidden this); - -//----- (00505740) -------------------------------------------------------- -void __noreturn __cxa_bad_typeid(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_51A83C; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_typeid, - (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); -} -// 5163B0: using guessed type int `typeinfo for'std::bad_typeid; -// 51A83C: using guessed type void (__cdecl *off_51A83C)(std::bad_typeid *__hidden this); - -//----- (00505770) -------------------------------------------------------- -void __noreturn __cxa_throw_bad_array_new_length(void) -{ - _DWORD *exception; // eax - - exception = __cxa_allocate_exception(4u); - *exception = &off_51B1F8; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::bad_array_new_length, - (void (__cdecl *)(void *))std::bad_array_new_length::~bad_array_new_length); -} -// 5167B8: using guessed type int *`typeinfo for'std::bad_array_new_length; -// 51B1F8: using guessed type void (__cdecl *off_51B1F8)(std::bad_array_new_length *__hidden this); - -//----- (005057A0) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_ios_failure(char *a1) -{ - char *v1; // eax - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(0x18u); - if ( !(_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec ) - { - if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) - { - __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); - atexit((_PVFV)__tcf_0_4); - } - } - std::system_error::system_error(exception, 1, (int)&`anonymous namespace'::__io_category_instance(void)::__ec, a1); - *exception = &off_51AA28; - v1 = (char *)std::runtime_error::what((int)exception); - std::__construct_ios_failure(exception + 4, v1); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::__ios_failure, - (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); -} -// 50CBD0: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); -// 5164D4: using guessed type int *`typeinfo for'std::__ios_failure; -// 51AA28: using guessed type void (__cdecl *off_51AA28)(std::__ios_failure *__hidden this); - -//----- (005058C0) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1, std::runtime_error *a2) -{ - int v2; // [esp+8h] [ebp-50h] - _DWORD *exception; // [esp+18h] [ebp-40h] - - exception = __cxa_allocate_exception(0x18u); - std::__ios_failure::__ios_failure(exception, a1, (int)a2, v2); - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::__ios_failure, - (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); -} -// 505912: variable 'v2' is possibly undefined -// 5164D4: using guessed type int *`typeinfo for'std::__ios_failure; - -//----- (00505960) -------------------------------------------------------- -void __cdecl __noreturn std::__throw_system_error(int a1) -{ - _DWORD *exception; // [esp+18h] [ebp-60h] - void *Block[2]; // [esp+58h] [ebp-20h] BYREF - char v3; // [esp+60h] [ebp-18h] BYREF - - exception = __cxa_allocate_exception(0x10u); - `anonymous namespace'::system_error_category::message[abi:cxx11]( - Block, - (int)&`anonymous namespace'::generic_category_instance, - a1); - std::runtime_error::runtime_error(exception, (int)Block); - if ( Block[0] != &v3 ) - operator delete(Block[0]); - *exception = &off_51AA14; - exception[2] = a1; - exception[3] = &`anonymous namespace'::generic_category_instance; - __cxa_throw( - exception, - (struct type_info *)&`typeinfo for'std::system_error, - (void (__cdecl *)(void *))std::system_error::~system_error); -} -// 50BFC8: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); -// 5164C8: using guessed type int *`typeinfo for'std::system_error; -// 51AA14: using guessed type void (__cdecl *off_51AA14)(std::system_error *__hidden this); - -//----- (00505A60) -------------------------------------------------------- -int _GLOBAL__sub_I__ZSt20__throw_system_errori() -{ - atexit(__tcf_0_5); - return atexit(__tcf_1_3); -} - -// nfuncs=4282 queued=4084 decompiled=4084 lumina nreq=0 worse=0 better=0 -#error "There were 6 decompilation failure(s) on 4084 function(s)" +/* This file was generated by the Hex-Rays decompiler version 8.3.0.230608. + Copyright (c) 2007-2021 Hex-Rays + + Detected compiler: GNU C++ +*/ + +#include +#include + +#include + + +//------------------------------------------------------------------------- +// Function declarations + +#define __thiscall __cdecl // Test compile in C mode + +LONG __stdcall TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo); // idb +// void __usercall __noreturn sub_4011A0(__int32 a1@); +int _mingw32_init_mainargs(); +// void __usercall __noreturn mainCRTStartup(__int32 a1@); +// void __usercall __noreturn WinMainCRTStartup(__int32 a1@); +// int __cdecl atexit(void (__cdecl *)()); +int __gcc_register_frame(); +void __cdecl __gcc_deregister_frame(); // idb +void __cdecl __tcf_1(); // idb +// void __usercall std::_Vector_base::_M_deallocate(void *a1@); +void __fastcall std::pair::~pair(void **a1); +// _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +void __fastcall std::vector::~vector(void ***a1); +int __cdecl Usage(int a1, const char **a2); +int __cdecl ReadFile(char *FileName, unsigned int *a2); +_DWORD *__cdecl Trim(_DWORD *a1, int a2); +_DWORD *__cdecl GetNextArg(_DWORD *a1, int *a2, int a3); +int __cdecl EscapeToJsonString(int a1, int a2); +int __cdecl DictToJsonString(int a1, int a2); +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); +void __cdecl __tcf_3(); // idb +// void __usercall std::_Vector_base::_M_deallocate(void *a1@); +// _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); +int snprintf_constprop_0(char *Buffer, size_t BufferCount, int a3, ...); +// volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +void **__cdecl WXSS::RemoveQuote(void **a1, char **a2); +int __stdcall WXSS::XCompiler::DealRPX(int *a1, int a2); +int __thiscall WXSS::XCompiler::GetHostRule(_DWORD *this, _DWORD *a2); +int __thiscall WXSS::XCompiler::ShowTree(_DWORD *this, _DWORD *a2); +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +void __cdecl __tcf_1_0(); // idb +void __cdecl __tcf_2(); // idb +void __fastcall std::pair>::~pair(int a1); +void __fastcall std::vector>::~vector(void **a1); +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree(int a1); +int __thiscall WXSS::XCompiler::GetCompiled(int *this, int a2, WXSS::Token *a3); +int __thiscall WXSS::XCompiler::GetJSCompiled(int *this, int a2, _DWORD *a3); +int __thiscall WXSS::XCompiler::GetWellFormattedJSCompiled(int *this, int a2, _DWORD *a3); +void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1); +void __fastcall std::vector::~vector(void ***a1, int a2); +void __fastcall WXSS::XCompiler::~XCompiler(void **a1); +void __fastcall std::deque::~deque(int a1); +int __thiscall WXSS::XCompiler::GenExpr(_DWORD *this, int a2, int a3, WXSS::Token *a4); +int __thiscall WXSS::XCompiler::GetPageCss(int *this, int *a2, _DWORD *a3, int a4); +int __thiscall WXSS::XCompiler::MarkImported(_DWORD *this, int a2); +int __thiscall WXSS::XCompiler::GetCommHead(int *this, _DWORD *a2, _DWORD *a3, char a4, int *a5); +void __fastcall std::deque>::~deque(int a1); +int __fastcall WXSS::CSSTreeLib::Parser::~Parser(int a1); +int __cdecl WXSS::LintAndParseCSS(int *a1, char **a2, WXSS::Token *a3, unsigned int *a4, char a5, char a6, char a7, void (__cdecl *a8)(void *), int a9); +// void __userpurge WXSS::XCompiler::XCompiler(int a1@, unsigned int a2@, _DWORD *a3, char a4, int a5); +void *__cdecl WXSS::LintAndParseCSSList(_DWORD *a1, int a2, unsigned int *a3, int a4, int a5, unsigned int a6, char a7, char a8, int a9); +// void *__usercall WXSS::NewLintAndParseCSSList@(unsigned int a1@, _DWORD *a2, int *a3, unsigned int *a4, int a5, int a6, char a7, int a8, int *a9); +// void __usercall std::_Vector_base::_M_deallocate(void *a1@); +// _DWORD *__usercall std::__relocate_a_1>@(void **a1@, void **a2@, _DWORD *a3@); +void __fastcall std::vector::~vector(void ***a1); +void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void ***a2); +int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3); +int __cdecl MMBizWxaAppComm::PathCombine(int a1, _DWORD *a2, _DWORD *a3); +void __fastcall std::vector>::~vector(void **a1); +int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*a2)[266], bool *a3, int *a4); +int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *a2); +int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *a2); +int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *a2); +int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *a2, int *a3); +void __cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3); +void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2); +int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3); +int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2); +int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3); +int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2); +void __cdecl WXML::Rewrite::ToStringCode(int *a1, _DWORD *a2); +int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2); +int __cdecl WXML::Rewrite::GetToken(int a1, int a2); +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *a4); +int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5); +void __fastcall std::vector>::~vector(void **a1); +std::ostream::sentry *__cdecl WXML::RenderStrToken(_DWORD *a1, int a2); +char __cdecl WXML::IsFloat(WXML *this); +char __cdecl WXML::IsFloat(int a1); +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3); +void __cdecl WXML::StrSplitList4RPX(char *Str, char *SubStr, char *a3, char **a4); +void __cdecl WXML::StrSplitList4ClassSuffix(char *Str, char *SubStr, char **a3); +void __cdecl WXML::GetStrForMakingCSS(char **a1, int a2); +void __cdecl __tcf_1_1(); // idb +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +// volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1); +void __fastcall std::vector::~vector(void **a1); +// _DWORD *__usercall std::__relocate_a_1>@(_DWORD *a1@, _DWORD *a2@, _DWORD *a3@); +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(volatile signed __int32 **this, volatile signed __int32 *a2); +// int __userpurge WXSS::CSSTreeLib::Parser::Parse@(int a1@, void (__cdecl *a2)(void *)@, char **a3, int *a4, unsigned int *a5, int a6); +void __cdecl __tcf_0(); // idb +void __cdecl __tcf_0_0(); // idb +void __thiscall WXSS::Tokenizer::Tokenizer(int this, char *a2, int a3); +void WXSS::Tokenizer::InitTransitTable(); +int WXSS::Tokenizer::InitSubStrCheckingCaluseTable(); +int __cdecl WXSS::Tokenizer::TryGetAnotherTypeByAnySubStr(int a1, int a2, int a3, int a4); +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +// _DWORD *__usercall std::__relocate_a_1>@(_DWORD *a1@, _DWORD *a2@, _DWORD *a3@); +int __thiscall WXSS::Tokenizer::GetTokens(int *this, int a2, unsigned int *a3, int a4); +void __cdecl __tcf_1_2(); // idb +unsigned int __thiscall std::string::basic_string(void **this, char *a2); +// volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@); +void __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1); +void __fastcall std::vector>::~vector(void **a1); +void __fastcall std::vector::~vector(void ***a1); +void __thiscall std::vector::_M_move_assign(void *this, int *a2); +int WXSS::CSSTreeLib::TransitTable::GetTopType(); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_move_assign(int this, _DWORD *a2); +void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree(int a1); +_DWORD WXSS::CSSTreeLib::TransitTable::Init(WXSS::CSSTreeLib::TransitTable *__hidden this); // idb +// LPTOP_LEVEL_EXCEPTION_FILTER __stdcall SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); +// HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName); +// FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName); +// HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName); +// BOOL __stdcall FreeLibrary(HMODULE hLibModule); +// void __stdcall __noreturn ExitProcess(UINT uExitCode); +// _DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4); +// _DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@); +// _DWORD *__usercall d_count_templates_scopes@(_DWORD *result@, _DWORD *a2@, int a3@); +// int __usercall d_append_buffer@(int result@, char *a2@, int a3@); +// int __usercall d_number_isra_0@(char **a1@); +// _DWORD *__usercall d_number_component@(int a1@); +// int __usercall d_compact_number@(int a1@); +// _DWORD *__usercall d_template_param@(_DWORD *a1@); +// _DWORD *__usercall d_source_name@(int a1@); +// _DWORD *__usercall d_abi_tags@(_DWORD *a1@, _DWORD *comp@); +// _DWORD *__usercall d_substitution@(_DWORD *a1@, char a2@
); +// int __usercall d_call_offset@(int a1@, int a2@); +// BOOL __usercall next_is_type_qual_isra_0@(char *a1@); +// int __usercall d_discriminator@(int a1@); +_BYTE *__cdecl d_growable_string_callback_adapter(void *Src, size_t Size, unsigned int *a3); +// _DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@); +// _DWORD *__usercall d_lookup_template_argument_isra_0@(int a1@, int *a2@); +// _DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@); +// _DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
); +// _DWORD *__usercall d_expression_1@(_DWORD *a1@); +// int *__usercall d_template_arg@(_DWORD *a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12); +// _DWORD *__usercall d_template_args_1@(_DWORD *a1@); +// _DWORD *__usercall d_template_args@(_DWORD *a1@); +// unsigned int *__usercall d_encoding@(int a1@, int a2@, int a3@); +// int *__usercall d_name@(_DWORD *a1@, int a2@); +// int *__usercall d_type@(int a1@, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12); +// _DWORD *__usercall d_operator_name@(_DWORD *a1@); +// int __usercall d_parmlist@(_DWORD *a1@); +// int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@); +// _DWORD *__usercall d_bare_function_type@(_DWORD *a1@, int a2@); +// _DWORD *__usercall d_function_type@(int a1@); +// _DWORD *__usercall d_unqualified_name@(_DWORD *a1@); +// _DWORD *__usercall d_expr_primary@(_DWORD *a1@); +// int __usercall d_print_comp@(int result@, int a2@, int *a3@); +// int __usercall d_print_mod@(int a1@, int a2@, _DWORD *a3@); +// int __usercall d_print_function_type_isra_0@(int a1@, int a2@, int *a3@, int **a4); +// int __usercall d_print_mod_list@(int result@, int a2@, int **a3@, int a4); +// int __usercall d_print_array_type_isra_0@(int a1@, int a2@, int *a3@, int **a4); +// int __usercall d_print_expr_op@(int a1@, int a2@, _DWORD *a3@); +// int __usercall d_print_subexpr@(int a1@, int a2@, _DWORD *a3@); +// int __usercall d_maybe_print_fold_expression_isra_0@(int a1@, int a2@, int a3@, int a4); +// BOOL __usercall d_demangle_callback_constprop_0@(char *a1@, int a2@, int a3@); +char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus); +unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, int a2, int a3); +char **_setargv(); +// unsigned int __usercall __cpu_features_init@(__int32 a1@); +void __cdecl __do_global_dtors(); // idb +int __do_global_ctors(); +int __main(); +int __stdcall TlsCallback_1(int a1, int a2, int a3); +int __stdcall __dyn_tls_init(int a1, int a2, int a3); +int __tlregdtor(); +void sub_42AD90(); +int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2); +int __cdecl ___w64_mingwthr_remove_key_dtor(int a1); +int __cdecl __mingw_TLScallback(int a1, int a2); +void __noreturn sub_42AFC0(char *Format, ...); +// DWORD __usercall sub_42B010@(const void *lpAddress@, int a2@, DWORD a3@); +int _pei386_runtime_relocator(); +int __cdecl fesetenv(const fenv_t *Env); +long double __cdecl strtold(const char *String, char **EndPtr); +int *__cdecl __increment_D2A(int *a1); +// int __usercall sub_42B4C0@(int *a1@, int *a2@, _DWORD *a3@, double a4, int a5, int a6, _DWORD *a7); +_DWORD *__cdecl __decrement_D2A(int a1); +int *__cdecl __set_ones_D2A(unsigned int a1, int a2); +int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, int *a5); +int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3); +// void __usercall sub_42D9B0(int a1@); +void __cdecl sub_42DA80(); // idb +int *__cdecl __Balloc_D2A(int a1); +void __cdecl __Bfree_D2A(unsigned int a1); +int *__cdecl __multadd_D2A(int *a1, int a2, int a3); +int *__cdecl __i2b_D2A(int a1); +int *__cdecl __mult_D2A(int a1, int a2); +int __cdecl __pow5mult_D2A(int *a1, int a2); +int *__cdecl __lshift_D2A(_DWORD *a1, int a2); +int __cdecl __cmp_D2A(int a1, int a2); +int *__cdecl __diff_D2A(int a1, int a2); +long double __cdecl __b2d_D2A(int a1, _DWORD *a2); +int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3); +int __cdecl __strcp_D2A(__int64 a1); +float __cdecl strtof(const char *String, char **EndPtr); +wint_t __cdecl btowc(int Ch); +int __cdecl vsnprintf(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList); +void *__cdecl __mingw_realloc(unsigned int a1, size_t a2); +int __cdecl __mingw_free(unsigned int a1); +// char *__usercall sub_42E880@(char *a1@, int a2@, __int16 a3@); +// int __usercall sub_42EBB0@(char *a1@, _BYTE *a2@, int a3@); +// int __usercall sub_42EDE0@(char *a1@, unsigned int a2@); +// int __usercall sub_42EE80@(int a1@, _DWORD *a2@); +// int __usercall sub_42EEE0@(_DWORD *a1@, _DWORD *a2@, int a3@); +// int __usercall sub_42EF30@(_DWORD *a1@); +// int __usercall sub_42EF80@(char *a1@, unsigned int a2@, int a3@, _DWORD *a4); +int *__cdecl __mingw_glob(char *Str, int a2, int a3, char **a4); +int __cdecl __mingw_globfree(int a1); +char *__cdecl __mingw_dirname(char *Source); +// HANDLE __usercall sub_42FDA0@(const CHAR *lpFileName@, int a2@); +// BOOL __usercall sub_42FE90@(void *hFindFile@, int a2@); +int __cdecl __mingw_opendir(char *Path); // idb +int __cdecl __mingw_readdir(int a1); +int __cdecl __mingw_closedir(unsigned int a1); +_DWORD *__cdecl __mingw_rewinddir(int a1); +int __cdecl __mingw_telldir(int a1); +int *__cdecl __mingw_seekdir(int a1, int a2); +int __mingw_mbrtowc_codeset_init(); +UINT __cdecl __mingw_mbrlen_cur_max_init(UINT a1); +int __mingw_mbrlen_cur_max(); +int __cdecl __mingw_mbtowc_convert(LPCCH lpMultiByteStr, int a2, LPWSTR lpWideCharStr, int cchWideChar); // idb +int __cdecl __mingw_mbrscan_begin(_WORD **a1, int *a2, int *a3, unsigned int *a4); +int __cdecl __mingw_mbtowc_copy(LPWSTR a1, LPCCH a2, unsigned int a3); +size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State); +size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State); +int __cdecl wctob(wint_t WCh); +wctype_t __cdecl wctype(const char *name); +wchar_t *__cdecl wmemchr(const wchar_t *S, wchar_t C, size_t N); +int __cdecl wmemcmp(const wchar_t *S1, const wchar_t *S2, size_t N); +wchar_t *__cdecl wmemcpy(wchar_t *S1, const wchar_t *S2, size_t N); +wchar_t *__cdecl wmemmove(wchar_t *S1, const wchar_t *S2, size_t N); +wchar_t *__cdecl wmemset(wchar_t *S, wchar_t C, size_t N); +int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5); +int __cdecl __rshift_D2A(int a1, int a2); +int __cdecl __trailz_D2A(int a1); +int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5); +long double __cdecl __ratio_D2A(int a1, int a2); +int __cdecl __match_D2A(char **a1, char *a2); +_DWORD *__cdecl __copybits_D2A(_DWORD *a1, int a2, int a3); +int __cdecl __any_on_D2A(int a1, int a2); +int *__cdecl __sum_D2A(int *a1, int *a2); +int hexdig_init_D2A(); +// int __usercall sub_431B90@(int *a1@); +// int *__usercall sub_431C50@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7); +// int __usercall sub_431D50@(int result@, int a2@); +// int __usercall sub_431DB0@(int a1@, int a2@, int a3@); +// int __usercall sub_431EE0@(char *a1@, int a2@, int a3@); +// int __usercall sub_431FB0@(int a1@, int a2@, int a3@); +// int __usercall sub_432050@(wchar_t a1@, int a2@, int a3@); +// int __usercall sub_4320D0@(int a1@); +// int __usercall sub_4321B0@(_DWORD *a1@); +// int __usercall sub_432230@(int *a1@); +// int __usercall sub_432260@(unsigned __int8 *a1@); +// int __usercall sub_4322E0@(int a1@); +// int __usercall sub_432390@(int a1@, int a2@); +// int __usercall sub_4323D0@(unsigned int a1@, unsigned int a2@, int a3@); +// int __usercall sub_4327A0@(int a1@, _BYTE *a2@, int a3@, int a4); +// int __usercall sub_432B10@(int a1@, _BYTE *a2@, int a3@, _DWORD *a4); +// void __usercall sub_432BE0(_DWORD *a1@, long double a2); +// void __usercall sub_432C90(int a1@, long double a2); +// void __usercall sub_432D60(_DWORD *a1@, long double a2); +// int __usercall sub_432EF0@(_DWORD *a1@, long double a2); +// int __usercall sub_4334A0@(int a1@, int a2@, int a3@, int a4); +int __cdecl __mingw_pformat(__int16 a1, int a2, int a3, char *a4, double *a5); +unsigned int __cdecl __mingw_memalign_base(unsigned int a1, unsigned int *a2); +void *__cdecl __mingw_memalign_realloc(int a1, int *a2, size_t a3); +int __mb_codeset_for_locale(); +UINT __cdecl __mb_cur_max_for_codeset(UINT CodePage); +int __cdecl __mingw_mbrtowc_handler(_WORD *a1, int a2, unsigned int a3, _DWORD *a4); +int __mingw_wctomb_codeset_init(); +UINT __cdecl __mingw_wctomb_cur_max_init(UINT a1); +int __mingw_wctomb_cur_max(); +UINT __cdecl __mingw_wctomb_convert(LPSTR lpMultiByteStr, int cbMultiByte, WCHAR *lpWideCharStr, int cchWideChar); +int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8); +int *__cdecl __rv_alloc_D2A(unsigned int a1); +int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, unsigned int a3); +void __cdecl __freedtoa(_DWORD *a1); +unsigned int __cdecl __quorem_D2A(int a1, int a2); +int __cdecl __gthr_win32_once(__gthread_once_t *once, void (*func)(void)); +int __cdecl __gthr_win32_key_create(__gthread_key_t *key, void (*dtor)(void *)); +int __cdecl __gthr_win32_key_delete(__gthread_key_t key); +void *__cdecl __gthr_win32_getspecific(__gthread_key_t key); +int __cdecl __gthr_win32_setspecific(__gthread_key_t key, const void *ptr); +void __cdecl __gthr_win32_mutex_init_function(__gthread_mutex_t *mutex); +void __cdecl __gthr_win32_mutex_destroy(__gthread_mutex_t *mutex); +int __cdecl __gthr_win32_mutex_lock(__gthread_mutex_t *mutex); +int __cdecl __gthr_win32_mutex_trylock(__gthread_mutex_t *mutex); +int __cdecl __gthr_win32_mutex_unlock(__gthread_mutex_t *mutex); +void __cdecl __gthr_win32_recursive_mutex_init_function(__gthread_recursive_mutex_t *mutex); +int __cdecl __gthr_win32_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex); +int __cdecl __gthr_win32_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex); +int __cdecl __gthr_win32_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex); +int __cdecl __gthr_win32_recursive_mutex_destroy(__gthread_recursive_mutex_t *mutex); +// char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4); +// int __usercall base_of_encoded_value@(char a1@, _DWORD *a2@); +// unsigned int __usercall execute_cfa_program@(int *a1@, unsigned int a2@, _DWORD *a3@, unsigned int a4); +void init_dwarf_reg_size_table(); // idb +// int __usercall uw_frame_state_for@(dwarf_eh_bases *a1@, _DWORD *a2@); +// int __usercall uw_install_context_1@(int a1@, int a2@); +// int __usercall execute_stack_op@(char *a1@, unsigned int a2@, int a3@, int a4); +// unsigned int __usercall uw_update_context_1@(int a1@, int a2@); +// unsigned int __usercall uw_init_context_1@(int a1@, int a2@, int a3@); +// int __usercall uw_update_context@(int a1@, int a2@); +// int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, dwarf_eh_bases *a2@, int *a3@); +// int __usercall _Unwind_ForcedUnwind_Phase2@(_Unwind_Exception *exc@, dwarf_eh_bases *context@, unsigned int *frames_p@); +int __cdecl _Unwind_GetGR(int a1, int a2); +_Unwind_Word __cdecl _Unwind_GetCFA(_Unwind_Context *context); +_DWORD *__cdecl _Unwind_SetGR(int a1, int a2, int a3); +_Unwind_Ptr __cdecl _Unwind_GetIP(_Unwind_Context *context); +_Unwind_Ptr __cdecl _Unwind_GetIPInfo(_Unwind_Context *context, int *ip_before_insn); +void __cdecl _Unwind_SetIP(_Unwind_Context *context, _Unwind_Ptr val); +void *__cdecl _Unwind_GetLanguageSpecificData(_Unwind_Context *context); +_Unwind_Ptr __cdecl _Unwind_GetRegionStart(_Unwind_Context *context); +void *__cdecl _Unwind_FindEnclosingFunction(void *pc); +_Unwind_Ptr __cdecl _Unwind_GetDataRelBase(_Unwind_Context *context); +_Unwind_Ptr __cdecl _Unwind_GetTextRelBase(_Unwind_Context *context); +frame_state *__cdecl __frame_state_for(void *pc_target, frame_state *state_in); +void __cdecl _Unwind_DebugHook(void *cfa, void *handler); +_Unwind_Reason_Code __cdecl _Unwind_RaiseException(_Unwind_Exception *exc); +_Unwind_Reason_Code __cdecl _Unwind_ForcedUnwind(_Unwind_Exception *exc, _Unwind_Stop_Fn stop, void *stop_argument); +// void __usercall __noreturn _Unwind_Resume(int a1@, int a2@, _Unwind_Exception *exc); +// void __usercall __noreturn _Unwind_Resume_or_Rethrow(int a1@, int a2@, _Unwind_Exception *exc); +void __cdecl _Unwind_DeleteException(_Unwind_Exception *exc); +_Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn trace, void *trace_argument); +int __cdecl fde_unencoded_compare(object *ob, const fde *x, const fde *y); +// void __usercall frame_downheap(object *ob@, fde_compare_t fde_compare@, const fde **a@, int lo, int hi); idb +// void __usercall frame_heapsort(object *ob@, fde_compare_t fde_compare@, fde_vector *erratic@); idb +void init_object_mutex(); // idb +// int __usercall size_of_encoded_value@(char a1@); +// int __usercall base_from_object@(char a1@, int a2@); +// char *__usercall read_encoded_value_with_base_0@(char a1@, int *a2@, int *a3@, int *a4); +int __cdecl fde_single_encoding_compare(object *ob, const fde *x, const fde *y); +// int __usercall get_cie_encoding@(const dwarf_cie *cie@); idb +// size_t __usercall classify_object_over_fdes@(object *ob@, const fde *this_fde@); idb +// void __usercall add_fdes(object *ob@, fde_accumulator *accu@, const fde *this_fde@); idb +// const fde *__usercall linear_search_fdes@(object *ob@, const fde *this_fde@, char *pc@); +int __cdecl fde_mixed_encoding_compare(object *ob, const fde *x, const fde *y); +// const fde *__usercall search_object@(int a1@, char *a2@); +// void __usercall __register_frame_info_bases_part_0(const void *begin@, object *ob@, void *tbase@, void *dbase); idb +void __cdecl __register_frame_info_bases(const void *begin, object *ob, void *tbase, void *dbase); +void __cdecl __register_frame_info(const void *begin, object *ob); +void __cdecl __register_frame(void *begin); +void __cdecl __register_frame_info_table_bases(void *begin, object *ob, void *tbase, void *dbase); +void __cdecl __register_frame_info_table(void *begin, object *ob); +void __cdecl __register_frame_table(void *begin); +void *__cdecl __deregister_frame_info_bases(const void *begin); +void *__cdecl __deregister_frame_info(const void *begin); +void __cdecl __deregister_frame(void *begin); +const fde *__cdecl _Unwind_Find_FDE(void *pc, dwarf_eh_bases *bases); +void __cdecl emutls_destroy(void *ptr); +// _DWORD *__usercall emutls_alloc@(size_t *a1@); +DWORD emutls_init(); +_DWORD *__cdecl __emutls_get_address(size_t *a1); +void __cdecl __emutls_register_common(__emutls_object *obj, word size, word align, void *templ); +// int __cdecl write(int FileHandle, const void *Buf, unsigned int MaxCharCount); +// int __cdecl stricoll(const char *String1, const char *String2); +// char *__cdecl strdup(const char *String); +// int __cdecl read(int FileHandle, void *DstBuf, unsigned int MaxCharCount); +// int __cdecl lseek(int FileHandle, int Offset, int Origin); +// int __cdecl fstat(const int FileHandle, struct _stat32 *const Stat); +// FILE *__cdecl fdopen(int FileHandle, const char *Format); +// size_t __cdecl wcsxfrm(wchar_t *Destination, const wchar_t *Source, size_t MaxCount); +// size_t __cdecl wcstombs(char *Dest, const wchar_t *Source, size_t MaxCount); +// size_t __cdecl wcslen(const wchar_t *String); +// size_t __cdecl wcsftime(wchar_t *Buffer, size_t SizeInWords, const wchar_t *Format, const struct tm *Tm); +// int __cdecl wcscoll(const wchar_t *String1, const wchar_t *String2); +// int __cdecl vfprintf(FILE *const Stream, const char *const Format, va_list ArgList); +// wint_t __cdecl ungetwc(wint_t Character, FILE *Stream); +// int __cdecl ungetc(int Character, FILE *Stream); +// wint_t __cdecl towupper(wint_t C); +// wint_t __cdecl towlower(wint_t C); +// int __cdecl tolower(int C); +// size_t __cdecl strxfrm(char *Destination, const char *Source, size_t MaxCount); +// unsigned int __cdecl strtoul(const char *String, char **EndPtr, int Radix); +// double __cdecl strtod(const char *String, char **EndPtr); +// char *__cdecl strstr(const char *Str, const char *SubStr); +// char *__cdecl strncpy(char *Destination, const char *Source, size_t Count); +// int __cdecl strncmp(const char *Str1, const char *Str2, size_t MaxCount); +// size_t __cdecl strlen(const char *Str); +// size_t __cdecl strftime(char *Buffer, size_t SizeInBytes, const char *Format, const struct tm *Tm); +// char *__cdecl strerror(int ErrorMessage); +// char *__cdecl strcpy(char *Destination, const char *Source); +// int __cdecl strcoll(const char *String1, const char *String2); +// int __cdecl strcmp(const char *Str1, const char *Str2); +// char *__cdecl strchr(const char *Str, int Val); +// int sprintf(char *const Buffer, const char *const Format, ...); +// _crt_signal_t __cdecl signal(int Signal, _crt_signal_t Function); +// int __cdecl setvbuf(FILE *Stream, char *Buffer, int Mode, size_t Size); +// char *__cdecl setlocale(int Category, const char *Locale); +// wint_t __cdecl putwc(wchar_t Character, FILE *Stream); +// int __cdecl puts(const char *Buffer); +// int printf(const char *const Format, ...); +// void *__cdecl memset(void *, int Val, size_t Size); +// void *__cdecl memmove(void *, const void *Src, size_t Size); +// void *__cdecl memcpy(void *, const void *Src, size_t Size); +// int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size); +// void *__cdecl memchr(const void *Buf, int Val, size_t MaxCount); +// size_t __cdecl mbstowcs(wchar_t *Dest, const char *Source, size_t MaxCount); +// void *__cdecl malloc(size_t Size); +// struct lconv *__cdecl localeconv(); +// int __cdecl iswctype(wint_t C, wctype_t Type); +// wint_t __cdecl getwc(FILE *Stream); +// char *__cdecl getenv(const char *VarName); +// size_t __cdecl fwrite(const void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); +// int __cdecl ftell(FILE *Stream); +// int __cdecl fseek(FILE *Stream, int Offset, int Origin); +// size_t __cdecl fread(void *Buffer, size_t ElementSize, size_t ElementCount, FILE *Stream); +// int __cdecl fputs(const char *Buffer, FILE *Stream); +// int __cdecl fputc(int Character, FILE *Stream); +// int fprintf(FILE *const Stream, const char *const Format, ...); +// FILE *__cdecl fopen(const char *FileName, const char *Mode); +// char *__cdecl fgets(char *Buffer, int MaxCount, FILE *Stream); +// int __cdecl fflush(FILE *Stream); +// int __cdecl fclose(FILE *Stream); +// void *__cdecl calloc(size_t Count, size_t Size); +// int __cdecl atoi(const char *String); +// void __cdecl __noreturn abort(); +// FILE *__cdecl _wfopen(const wchar_t *FileName, const wchar_t *Mode); +// int __cdecl _stricmp(const char *String1, const char *String2); +// int __cdecl _setmode(int FileHandle, int Mode); +// size_t __cdecl _msize(void *Block); +// int __cdecl _isctype(int C, int Type); +// char *__cdecl _fullpath(char *Buffer, const char *Path, size_t BufferCount); +// int __cdecl _flsbuf(int Ch, FILE *File); +// int __cdecl _filbuf(FILE *File); +// int *__cdecl _errno(); +// void __cdecl _cexit(); +// int *__cdecl __p__fmode(); +// char ***__cdecl __p__environ(); +// int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak +// int __stdcall WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar); +// DWORD __stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); +// SIZE_T __stdcall VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength); +// BOOL __stdcall VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect); +// BOOL __stdcall TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue); +// LPVOID __stdcall TlsGetValue(DWORD dwTlsIndex); +// BOOL __stdcall TlsFree(DWORD dwTlsIndex); +// DWORD __stdcall TlsAlloc(); +// void __stdcall Sleep(DWORD dwMilliseconds); +// void __stdcall SetLastError(DWORD dwErrCode); +// BOOL __stdcall ReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount); +// int __stdcall MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); +// void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection); +// LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend); +// LONG __stdcall InterlockedExchange(volatile LONG *Target, LONG Value); +// LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend); +// void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); +// DWORD __stdcall GetLastError(); +// DWORD __stdcall GetCurrentThreadId(); +// LPSTR __stdcall GetCommandLineA(); +// BOOL __stdcall GetCPInfo(UINT CodePage, LPCPINFO lpCPInfo); +// BOOL __stdcall FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData); +// HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData); +// BOOL __stdcall FindClose(HANDLE hFindFile); +// void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection); +// void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); +// HANDLE __stdcall CreateSemaphoreW(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName); +BOOL __stdcall CloseHandle(HANDLE hObject); +int __cdecl __mingwthr_key_dtor(int a1, int a2); +int __cdecl _txnal_cow_string_D1(); +void __cdecl __noreturn _txnal_cow_string_c_str(); +void __cdecl __noreturn _txnal_sso_string_c_str(); +char *__cdecl _txnal_logic_error_get_msg(char *a1); +void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *a1); +char *__cdecl _txnal_runtime_error_get_msg(char *a1); +_DWORD *__cdecl _txnal_cow_string_C1_for_exceptions(_DWORD *a1); +void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1); +void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1); +void __cdecl _ZGTtNSt11logic_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1); +int _ZGTtNSt11logic_errorD2Ev(); +void __cdecl _ZGTtNSt11range_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1); +int _ZGTtNSt11range_errorD2Ev(); +void __cdecl _ZGTtNSt12domain_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1); +int _ZGTtNSt12domain_errorD2Ev(); +void __cdecl _ZGTtNSt12length_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1); +int _ZGTtNSt12length_errorD2Ev(); +void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1); +int _ZGTtNSt12out_of_rangeD2Ev(); +void __cdecl _ZGTtNSt13runtime_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1); +int _ZGTtNSt13runtime_errorD2Ev(); +void __cdecl _ZGTtNSt14overflow_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1); +int _ZGTtNSt14overflow_errorD2Ev(); +void __cdecl _ZGTtNSt15underflow_errorC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1); +int _ZGTtNSt15underflow_errorD2Ev(); +void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(_DWORD *a1); +void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1); +void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1); +int _ZGTtNSt16invalid_argumentD2Ev(); +void __cdecl eh_globals_dtor(int *a1); +// int __usercall get_ttype_entry@(int a1@, int a2@); +// int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@); +// char *__usercall parse_lsda_header@(_Unwind_Context *a1@, char *a2@, int a3@); +// int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4); +// _Unwind_Ptr __usercall base_of_encoded_value@(char a1@, _Unwind_Context *context@); +void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, _Unwind_Exception *a2); +// char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4); +void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)); // idb +void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)); // idb +void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *a1); +void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1); +void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this); // idb +void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *a1); +void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1); +void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this); // idb +void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1); +void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this); // idb +__gthread_mutex_t *`anonymous namespace'::get_locale_mutex(); +void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1); +void __cdecl `anonymous namespace'::io_error_category::~io_error_category(_anonymous_namespace_::io_error_category *this); // idb +void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *a1); +void (__cdecl ***`anonymous namespace'::__io_category_instance())(_anonymous_namespace_::io_error_category *__hidden this); +void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *a1); +// _DWORD *__usercall `anonymous namespace'::pool::free@(int a1@, struct type_info *a2, void (__cdecl *a3)(void *)); +// unsigned int *__usercall `anonymous namespace'::pool::allocate@(int a1@); +void `anonymous namespace'::init(void); // idb +// unsigned int __usercall `anonymous namespace'::xwrite@(int a1@, char *a2@, unsigned int a3@); +_DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // weak +_DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // weak +int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); +void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); +int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2); +_DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); // weak +void __fastcall WXSS::CSSTreeLib::NonTerminal::~NonTerminal(void *a1); +char __stdcall WXSS::CSSTreeLib::MarkHostRule::MarkGood(WXSS::CSSTreeLib::MarkHostRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); +void __fastcall WXSS::CSSTreeLib::MarkHostRule::~MarkHostRule(void *a1); +bool __stdcall WXSS::CSSTreeLib::AttrDebugRule::MarkGood(WXSS::CSSTreeLib::AttrDebugRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); +void __fastcall WXSS::CSSTreeLib::AttrDebugRule::~AttrDebugRule(void *a1); +// char __userpurge WXSS::CSSTreeLib::BlackListRule::MarkGood@(int a1@, WXSS::CSSTreeLib::BlackListRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); +void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(void *a1, int a2); +void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(int a1, int a2); +void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(int this, WXSS::Token *a2, unsigned __int8 a3); +unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(int this, WXSS::Token *a2); +unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(int this, int a2, int a3); +int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1); +int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1); +void __stdcall WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo(int *a1, unsigned int a2, int a3); +bool __stdcall WXSS::CSSTreeLib::RuleDebugRule::MarkGood(WXSS::CSSTreeLib::RuleDebugRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); +void __fastcall WXSS::CSSTreeLib::RuleDebugRule::~RuleDebugRule(void *a1); +char *WXSS::CSSTreeLib::LexicalChecker::GetInstance(); +char *WXSS::CSSTreeLib::LexicalChecker::GetInstance(); +// WXSS::CSSTreeLib::LexicalChecker *__userpurge WXSS::CSSTreeLib::LexicalChecker::Init@(int a1@, WXSS::CSSTreeLib::LexicalChecker *this, bool a3); +int __thiscall WXSS::CSSTreeLib::LexicalChecker::Traval(_DWORD **this, _DWORD *a2); +char __stdcall WXSS::CSSTreeLib::ReWriteRpxRule::MarkGood(WXSS::CSSTreeLib::ReWriteRpxRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); +void __fastcall WXSS::CSSTreeLib::ReWriteRpxRule::~ReWriteRpxRule(void *a1); +char __stdcall WXSS::CSSTreeLib::MarkSelectorRule::MarkGood(WXSS::CSSTreeLib::MarkSelectorRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); +void __fastcall WXSS::CSSTreeLib::MarkSelectorRule::~MarkSelectorRule(void *a1); +char __stdcall WXSS::CSSTreeLib::RewriteImgUrlRule::MarkGood(WXSS::CSSTreeLib::RewriteImgUrlRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); +void __fastcall WXSS::CSSTreeLib::RewriteImgUrlRule::~RewriteImgUrlRule(void *a1); +char __stdcall WXSS::CSSTreeLib::RewriteSelectorRule::MarkGood(WXSS::CSSTreeLib::RewriteSelectorRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); +void __fastcall WXSS::CSSTreeLib::RewriteSelectorRule::~RewriteSelectorRule(void *a1); +void __fastcall WXSS::CSSTreeLib::EPS::~EPS(void *a1); +int __fastcall WXSS::CSSTreeLib::Action::Action(int a1); +void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1); +void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1); +void __thiscall WXSS::CSSTreeLib::Action::~Action(void **ecx0, WXSS::CSSTreeLib::Action *this); +char *__fastcall WXSS::CSSTreeLib::Parser::Parser(_DWORD *a1); +// char __userpurge WXSS::CSSTreeLib::AndRules::MarkGood@(int a1@, WXSS::CSSTreeLib::AndRules *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); +void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(void *a1); +void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(int a1); +int __fastcall WXSS::CSSTreeLib::Terminal::Terminal(int a1); +void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1); +void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1); +void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this); +void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this); +char __stdcall WXSS::CSSTreeLib::TrueRule::MarkGood(WXSS::CSSTreeLib::TrueRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); +void __fastcall WXSS::CSSTreeLib::TrueRule::~TrueRule(void *a1); +// char __userpurge WXSS::CSSTreeLib::ChildRule::MarkGood@(int a1@, WXSS::CSSTreeLib::ChildRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); +void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1); +void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1); +int __stdcall WXSS::CSSTreeLib::FalseRule::MarkGood(WXSS::CSSTreeLib::FalseRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a2); +void __fastcall WXSS::CSSTreeLib::FalseRule::~FalseRule(void *a1); +// int __userpurge WXSS::CSSTreeLib::RuleChain::MarkGood@(int a1@, WXSS::CSSTreeLib::RuleChain *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); +void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(void *a1); +void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(int a1); +// char __userpurge WXSS::CSSTreeLib::SPNotRule::MarkGood@(int a1@, WXSS::CSSTreeLib::SPNotRule *this, WXSS::CSSTreeLib::CSSSyntaxTree *a3); +void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(void *a1); +void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(int a1); +// int __userpurge WXSS::Token::Token@(_DWORD *a1@, WXSS::Token *this, const WXSS::Token *a3); +_DWORD *__thiscall WXSS::Token::operator=(_DWORD *this, int a2); +int __thiscall WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(char *this, int a2, char *Source, int a4); +void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(__gthread_mutex_t **a1); +int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); +int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); +int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1); +int __fastcall __gnu_cxx::stdio_filebuf::file(int a1); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4); +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4); +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1); +int __cdecl __gnu_cxx::__concat_size_t(char *a1, unsigned int a2, unsigned int a3); +int __cdecl __gnu_cxx::__snprintf_lite(char *a1, unsigned int a2, const char *a3, char *a4); +int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2); +int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1); +int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount); +size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount); +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, int Offset, int a4, int a5, int a6); +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, int Offset, int a4, int a5, int a6, int a7); +int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2); +int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1); +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2); +int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2); +int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1); +wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int a2, int a3); +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int a2, int a3); +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff(_DWORD *this, int a2, int Offset, int a4, int a5, int a6); +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos(_DWORD *this, FILE **a2, int Offset, int a4, int a5, int a6, int a7); +__int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character); +int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character); +wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2); +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2); +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1); +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1); +int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2); +void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1); +void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1); +void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1); +void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1); +void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1); +void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1); +void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1); +void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *a2); // idb +void __cdecl __noreturn __gnu_cxx::__verbose_terminate_handler(size_t a1, size_t a2, FILE *a3); +void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void); // idb +void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void); // idb +int __gnu_cxx::__freeres(void); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2); +// char __userpurge __cxxabiv1::__class_type_info::__do_catch@(_DWORD *a1@, __cxxabiv1::__class_type_info *this, const std::type_info *a3, void **a4, unsigned int a5); +bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int a2, int a3, _DWORD *a4); +// int __userpurge __cxxabiv1::__class_type_info::__do_upcast@(int *a1@, __cxxabiv1::__class_type_info *this, const __class_type_info *a3, void **a4); +int __thiscall __cxxabiv1::__class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8); +int __stdcall __cxxabiv1::__class_type_info::__do_find_public_src(__cxxabiv1::__class_type_info *this, const __cxxabiv1::__class_type_info *a2, const void *a3, const __cxxabiv1::__class_type_info *a4, const void *a5); +char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int a2, int a3, _DWORD *a4); +int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7, _DWORD *a8); +// int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@(int a1@, __cxxabiv1::__si_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6); +int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); +int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, _DWORD *a7, int *a8); +// int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@(_DWORD *a1@, __cxxabiv1::__vmi_class_type_info *this, const __cxxabiv1::__class_type_info *a3, const void *a4, const __cxxabiv1::__class_type_info *a5, const void *a6); +const char *`anonymous namespace'::io_error_category::name(); +int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3); +_anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition(_anonymous_namespace_::system_error_category *this, int a2); +const char *`anonymous namespace'::system_error_category::name(); +const char *`anonymous namespace'::generic_error_category::name(); +void **__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11](void **this, int a2, int ErrorMessage); +int WXSS::CSSTreeLib::NonTerminal::GetClass(); +int WXSS::CSSTreeLib::EPS::GetClass(); +int WXSS::CSSTreeLib::Rule::GetClass(); +int WXSS::CSSTreeLib::Action::GetClass(); +int WXSS::CSSTreeLib::Terminal::GetClass(); +const char *__fastcall WXSS::Token::GetLiteral(_DWORD *a1); +const char *__gnu_cxx::__concurrence_lock_error::what(); +const char *__gnu_cxx::__concurrence_unlock_error::what(); +int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2); +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3); +void *__thiscall std::wstring::get_allocator(void *this, int a2); +unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3); +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3); +int __thiscall std::wstring::at(int *this, unsigned int a2); +int __fastcall std::wstring::end(_DWORD *a1); +int __fastcall std::wstring::_Rep::_M_is_leaked(int a1); +bool __fastcall std::wstring::_Rep::_M_is_shared(int a1); +int __fastcall std::wstring::back(_DWORD *a1); +int __fastcall std::wstring::cend(_DWORD *a1); +size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4); +int __fastcall std::wstring::data(int a1); +int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3); +int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4); +int __thiscall std::wstring::find(int *this, wchar_t **a2, int a3); +int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3); +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); +int __fastcall std::wstring::size(_DWORD *a1); +int __fastcall std::wstring::begin(int a1); +int __fastcall std::wstring::c_str(int a1); +_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2); +bool __fastcall std::wstring::empty(_DWORD *a1); +int __fastcall std::wstring::front(int a1); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t **a2, int a3); +int __thiscall std::wstring::rfind(_DWORD *this, __int16 a2, unsigned int a3); +int __fastcall std::wstring::_M_rep(_DWORD *a1); +int __fastcall std::wstring::cbegin(int a1); +int __fastcall std::wstring::length(_DWORD *a1); +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::substr(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); +int __fastcall std::wstring::_M_data(int a1); +int __fastcall std::wstring::_M_iend(_DWORD *a1); +int __thiscall std::wstring::compare(const wchar_t **this, wchar_t *String); +int __thiscall std::wstring::compare(const wchar_t **this, const wchar_t **a2); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); +int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5); +int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, const wchar_t **a4); +int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2); +unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3); +unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3); +int __fastcall std::wstring::capacity(_DWORD *a1); +int std::wstring::max_size(); +int __fastcall std::wstring::_M_ibegin(int a1); +int __thiscall std::wstring::operator[](_DWORD *this, int a2); +int __fastcall std::istream::gcount(int a1); +int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1); +int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1); +// int __userpurge std::string::_M_disjunct@(_DWORD *a1@, std::string *this, const char *a3); +// int __userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::find_last_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); +// int __userpurge std::string::find_last_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// int __userpurge std::string::find_last_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); +// int __userpurge std::string::find_first_of@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::find_first_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); +// int __userpurge std::string::find_first_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); +void *__thiscall std::string::get_allocator(void *ecx0, std::string *this); +// char *__userpurge std::string::_M_check_length@(_DWORD *a1@, std::string *this, unsigned int a3, std::length_error *a4, const char *a5); +// int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, const char *a3, unsigned int MaxCount, unsigned int a5); +// int __userpurge std::string::find_last_not_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); +// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, const char *a3, size_t MaxCount, unsigned int a5); +// int __userpurge std::string::find_first_not_of@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); +// char *__userpurge std::string::at@(int *a1@, std::string *this, unsigned int a3); +int __fastcall std::string::end(_DWORD *a1); +int __fastcall std::string::_Rep::_M_is_leaked(int a1); +bool __fastcall std::string::_Rep::_M_is_shared(int a1); +int __fastcall std::string::back(_DWORD *a1); +int __fastcall std::string::cend(_DWORD *a1); +// int __userpurge std::string::copy@(_DWORD *a1@, std::string *this, char *a3, unsigned int a4, unsigned int a5); +int __fastcall std::string::data(int a1); +// unsigned int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4); +// unsigned int __userpurge std::string::find@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5); +// unsigned int __userpurge std::string::find@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4); +_DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this); +int __fastcall std::string::size(_DWORD *a1); +int __fastcall std::string::begin(int a1); +int __fastcall std::string::c_str(int a1); +_DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this); +bool __fastcall std::string::empty(_DWORD *a1); +int __fastcall std::string::front(int a1); +// int __userpurge std::string::rfind@(int *a1@, std::string *this, char *a3, unsigned int a4); +// int __userpurge std::string::rfind@(int *a1@, std::string *this, const char *a3, size_t Size, unsigned int a5); +// int __userpurge std::string::rfind@(int *a1@, std::string **this, const std::string *a3, unsigned int a4); +// int __userpurge std::string::rfind@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); +int __fastcall std::string::_M_rep(_DWORD *a1); +int __fastcall std::string::cbegin(int a1); +int __fastcall std::string::length(_DWORD *a1); +_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this); +_DWORD *__thiscall std::string::substr(_DWORD *ecx0, std::string *this, std::string *a3, unsigned int a4); +int __fastcall std::string::_M_data(int a1); +int __fastcall std::string::_M_iend(_DWORD *a1); +// int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3); +// int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3); +// int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, char *Str, const char *a5); +// int __userpurge std::string::compare@(int *a1@, std::string *this, const char *a3, void *Buf2, const char *a5, unsigned int a6); +// int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, const void **a4, const std::string *a5); +// int __userpurge std::string::compare@(int *a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, size_t a6, unsigned int a7); +_DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this); +// std::string *__userpurge std::string::_M_check@(_DWORD *a1@, std::string *this, const char *a3, const char *a4); +// unsigned int __userpurge std::string::_M_limit@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4); +int __fastcall std::string::capacity(_DWORD *a1); +int std::string::max_size(); +int __fastcall std::string::_M_ibegin(int a1); +int __thiscall std::string::operator[](_DWORD *this, int a2); +const char *std::bad_typeid::what(); +int __fastcall std::error_code::default_error_condition(int a1); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2); +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2); +void __thiscall std::__timepunct::_M_put(const char **this, char *Buffer, size_t SizeInBytes, char *Format, struct tm *Tm); +_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2); +void __thiscall std::__timepunct::_M_put(const char **this, wchar_t *Buffer, size_t SizeInWords, wchar_t *Format, struct tm *Tm); +_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2); +int __stdcall std::__use_cache>::operator()(int *a1); +int __stdcall std::__use_cache>::operator()(int *a1); +int __fastcall std::logic_error::what(int a1); +bool __fastcall std::__basic_file::is_open(_DWORD *a1); +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); +void **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(void **this, int a2, std::string *a3, int a4); +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare(int *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(_DWORD *this, int a2, int a3, int a4); +wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform(wchar_t **this, int a2, int a3, int a4); +void **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(void **this, int a2, std::string *a3, int a4, int a5, int a6); +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 **a6); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, unsigned __int8 **a2, int a3); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); +wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(wchar_t **this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, wchar_t **a6); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, unsigned __int8 **a2, int a3); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname(int *this, int a2, int a3, int a4, int a5, int a6, int a7, int a8); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, std::string *a3, int a4, int a5, unsigned __int8 a6, int a7, int *a8, int a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, std::string *a3, int a4, int a5, unsigned __int8 a6, int a7, int *a8, long double *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, int *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get(_DWORD *this, int a2, int a3, int a4, int a5, unsigned __int8 a6, int a7, _DWORD *a8, long double *a9); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(_DWORD *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, int a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, unsigned int **a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, char a6, long double a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(_DWORD *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, int a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6, _DWORD *a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7); +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put(int *this, int a2, int a3, unsigned __int8 a4, int a5, __int16 a6, long double a7); +const char *_ZGTtNKSt13bad_exception4whatEv(); +bool __fastcall std::filebuf::is_open(int a1); +bool __fastcall std::wfilebuf::is_open(int a1); +int __fastcall std::fstream::rdbuf(int a1); +bool __fastcall std::fstream::is_open(int a1); +int __fastcall std::wfstream::rdbuf(int a1); +bool __fastcall std::wfstream::is_open(int a1); +int __fastcall std::wistream::gcount(int a1); +int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1); +int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1); +int __fastcall std::runtime_error::what(int a1); +int __fastcall std::ifstream::rdbuf(int a1); +bool __fastcall std::ifstream::is_open(int a1); +int __fastcall std::wifstream::rdbuf(int a1); +bool __fastcall std::wifstream::is_open(int a1); +int __fastcall std::ofstream::rdbuf(int a1); +bool __fastcall std::ofstream::is_open(int a1); +int __fastcall std::wofstream::rdbuf(int a1); +bool __fastcall std::wofstream::is_open(int a1); +int __fastcall std::streambuf::gptr(int a1); +int __fastcall std::streambuf::pptr(int a1); +int __fastcall std::streambuf::eback(int a1); +int __fastcall std::streambuf::egptr(int a1); +int __fastcall std::streambuf::epptr(int a1); +int __fastcall std::streambuf::pbase(int a1); +volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2); +int __fastcall std::wstreambuf::gptr(int a1); +int __fastcall std::wstreambuf::pptr(int a1); +int __fastcall std::wstreambuf::eback(int a1); +int __fastcall std::wstreambuf::egptr(int a1); +int __fastcall std::wstreambuf::epptr(int a1); +int __fastcall std::wstreambuf::pbase(int a1); +volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2); +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_base::do_in(unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_out(int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8); +unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, int a5); +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, int a5); +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_base::do_in(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, int a5); +// char __userpurge std::__iosfail_type_info::__do_upcast@(int *a1@, std::__iosfail_type_info *this, const __cxxabiv1::__class_type_info *a3, void **a4); +bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int a2); +// int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@); +bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2); +// int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@); +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf16_base::do_in(_DWORD *this, int a2, int a3, int a4, int *a5, unsigned int *a6, unsigned int *a7, unsigned int **a8); +int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, int *a8); +int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf16_base::do_in(unsigned int *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, int *a8); +int __thiscall std::__codecvt_utf16_base::do_out(_DWORD *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5); +const char *std::bad_array_new_length::what(); +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, unsigned int *a6, unsigned int *a7, unsigned int **a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, unsigned int *a3, unsigned int *a4, unsigned int **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5); +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_utf16_base::do_in(_DWORD *this, int a2, int a3, int a4, _DWORD *a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_out(unsigned int *this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, int a6, int a7, _DWORD *a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5); +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1); +int __thiscall std::__codecvt_utf8_utf16_base::do_in(int this, int a2, unsigned __int8 *a3, unsigned __int8 *a4, unsigned __int8 **a5, char *a6, char *a7, char **a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_out(int this, int a2, unsigned __int16 *a3, unsigned __int16 *a4, unsigned __int16 **a5, _BYTE *a6, _BYTE *a7, _BYTE **a8); +int __thiscall std::__codecvt_utf8_utf16_base::do_length(unsigned int *this, int a2, int a3, unsigned __int8 *a4, unsigned int a5); +_DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3); +void **__thiscall std::_V2::error_category::_M_message(void **ecx0, std::_V2::error_category *this, int a3); +// bool __userpurge std::_V2::error_category::equivalent@(int a1@, std::_V2::error_category *this, const std::error_code *a3, int a4); +int __thiscall std::_V2::error_category::equivalent(void *this, int a2, _DWORD *a3); +std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition(std::_V2::error_category *this, int a2); +char *__thiscall std::ctype::do_tolower(_DWORD *this, char *a2, char *a3); +int __thiscall std::ctype::do_tolower(_DWORD *this, int a2); +char *__thiscall std::ctype::do_toupper(_DWORD *this, char *a2, char *a3); +int __thiscall std::ctype::do_toupper(_DWORD *this, int a2); +int __fastcall std::ctype::_M_widen_init(int a1); +int __fastcall std::ctype::_M_narrow_init(int a1); +_BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *a3, void *a4); +_BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3); +int __stdcall std::ctype::do_widen(unsigned __int8 a1); +_BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4); +int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2); +unsigned __int16 *__thiscall std::ctype::do_scan_is(void *this, unsigned __int16 a2, unsigned __int16 *a3, unsigned int a4); +unsigned int __stdcall std::ctype::do_tolower(wint_t *a1, unsigned int a2); +wint_t __stdcall std::ctype::do_tolower(wint_t C); +unsigned int __stdcall std::ctype::do_toupper(wint_t *a1, unsigned int a2); +wint_t __stdcall std::ctype::do_toupper(wint_t C); +unsigned __int16 *__thiscall std::ctype::do_scan_not(void *this, unsigned __int16 a2, unsigned __int16 *a3, unsigned int a4); +wctype_t __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1); +unsigned int __thiscall std::ctype::do_is(char *this, wint_t *a2, unsigned int a3, _WORD *a4); +int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16 a2, wint_t C); +unsigned __int8 *__thiscall std::ctype::do_widen(_WORD *this, unsigned __int8 *a2, unsigned __int8 *a3, int a4); +int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2); +unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, char *a5); +int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3); +int __fastcall std::locale::id::_M_id(int *a1); +int __thiscall std::locale::name[abi:cxx11](int this, int *a2); +unsigned int **__thiscall std::locale::name(unsigned int **ecx0, std::locale *this); +// _DWORD *__userpurge std::locale::facet::_M_cow_shim@(volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3); +// _DWORD *__userpurge std::locale::facet::_M_sso_shim@(volatile signed __int32 *a1@, std::locale::facet *this, const std::locale::id *a3); +int __fastcall std::locale::facet::_M_remove_reference(volatile signed __int32 *a1); +bool __thiscall std::locale::operator==(int *this, int *a2); +int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2); +void **__thiscall std::moneypunct::do_grouping(void **this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2); +void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2); +void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2); +void **__thiscall std::moneypunct::do_grouping(void **this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2); +void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2); +void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2); +void **__thiscall std::moneypunct::do_grouping(void **this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2); +wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2); +wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); +int __fastcall std::moneypunct::neg_format(_DWORD *a1); +int __fastcall std::moneypunct::pos_format(_DWORD *a1); +wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2); +void **__thiscall std::moneypunct::do_grouping(void **this, int a2); +int __fastcall std::moneypunct::frac_digits(_DWORD *a1); +int __fastcall std::moneypunct::decimal_point(_DWORD *a1); +int __fastcall std::moneypunct::do_neg_format(int a1); +int __fastcall std::moneypunct::do_pos_format(int a1); +wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2); +wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2); +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1); +wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2); +int __fastcall std::moneypunct::do_frac_digits(int a1); +int __fastcall std::moneypunct::do_decimal_point(int a1); +wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2); +wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2); +int __fastcall std::moneypunct::do_thousands_sep(int a1); +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2); +int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int a2); +bool __fastcall std::string::_M_is_local(_DWORD *a1); +unsigned int __thiscall std::string::find_last_of(int *this, char *Str, int a3); +unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); +unsigned int __thiscall std::string::find_last_of(int *this, int a2, int a3); +int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3); +int __fastcall std::string::_M_local_data(int a1); +unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, int a3); +unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount); +unsigned int __thiscall std::string::find_first_of(_DWORD *this, int a2, int a3); +char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3); +void *__thiscall std::string::get_allocator(void *this, int a2); +unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); +int __fastcall std::string::_M_get_allocator(int a1); +unsigned int __thiscall std::string::find_last_not_of(int *this, char *Str, int a3); +unsigned int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); +unsigned int __thiscall std::string::find_last_not_of(int *this, int a2, int a3); +int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3); +unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, int a3); +unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount); +unsigned int __thiscall std::string::find_first_not_of(int *this, int a2, int a3); +int __thiscall std::string::find_first_not_of(int *this, char a2, unsigned int a3); +unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2); +int __fastcall std::string::end(_DWORD *a1); +int __fastcall std::string::back(_DWORD *a1); +int __fastcall std::string::cend(_DWORD *a1); +size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, unsigned int a3, unsigned int a4); +int __fastcall std::string::data(int a1); +int __thiscall std::string::find(int *this, char *Str, int a3); +int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size); +int __thiscall std::string::find(int *this, int a2, int a3); +char *__thiscall std::string::find(int *this, char a2, unsigned int a3); +_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2); +int __fastcall std::string::size(int a1); +int __fastcall std::string::begin(int a1); +int __fastcall std::string::c_str(int a1); +_DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2); +bool __fastcall std::string::empty(int a1); +int __fastcall std::string::front(int a1); +unsigned int __thiscall std::string::rfind(int *this, char *Str, int a3); +unsigned int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size); +unsigned int __thiscall std::string::rfind(int *this, int a2, int a3); +int __thiscall std::string::rfind(int *this, char a2, unsigned int a3); +int __fastcall std::string::cbegin(int a1); +int __fastcall std::string::length(int a1); +_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2); +void **__thiscall std::string::substr(void **this, _DWORD *a2, unsigned int a3, unsigned int a4); +int __fastcall std::string::_M_data(int a1); +int __thiscall std::string::compare(int this, char *Str); +int __thiscall std::string::compare(int this, int a2); +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, char *Str); +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, void *Buf2, unsigned int a5); +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, int a4); +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +_DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2); +unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int a2, const char *a3); +unsigned int __thiscall std::string::_M_limit(_DWORD *this, int a2, unsigned int a3); +int __fastcall std::string::capacity(_DWORD *a1); +int std::string::max_size(); +int __thiscall std::string::operator[](_DWORD *this, int a2); +bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2); +bool __fastcall std::wstring::_M_is_local(_DWORD *a1); +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3); +int __fastcall std::wstring::_M_local_data(int a1); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3); +void *__thiscall std::wstring::get_allocator(void *this, int a2); +unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4); +int __fastcall std::wstring::_M_get_allocator(int a1); +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *S, unsigned int a3, int N); +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3); +int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3); +int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N); +int __thiscall std::wstring::find_first_not_of(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3); +int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); +int __fastcall std::wstring::end(_DWORD *a1); +int __fastcall std::wstring::back(_DWORD *a1); +int __fastcall std::wstring::cend(_DWORD *a1); +size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4); +int __fastcall std::wstring::data(int a1); +int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3); +int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4); +int __thiscall std::wstring::find(int *this, int a2, int a3); +int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3); +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); +int __fastcall std::wstring::size(int a1); +int __fastcall std::wstring::begin(int a1); +int __fastcall std::wstring::c_str(int a1); +_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2); +bool __fastcall std::wstring::empty(int a1); +int __fastcall std::wstring::front(int a1); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3); +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N); +unsigned int __thiscall std::wstring::rfind(int *this, int a2, int a3); +int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3); +int __fastcall std::wstring::cbegin(int a1); +int __fastcall std::wstring::length(int a1); +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); +wchar_t **__thiscall std::wstring::substr(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4); +int __fastcall std::wstring::_M_data(int a1); +int __thiscall std::wstring::compare(int this, wchar_t *String); +int __thiscall std::wstring::compare(int this, int a2); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, int a4); +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2); +unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3); +unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3); +int __fastcall std::wstring::capacity(_DWORD *a1); +int std::wstring::max_size(); +int __thiscall std::wstring::operator[](_DWORD *this, int a2); +int __thiscall std::stringbuf::str(int this, _DWORD *a2); +_WORD *__thiscall std::wstringbuf::str(_WORD *this, _DWORD *a2); +int __thiscall std::basic_stringstream,std::allocator>::str(int this, _DWORD *a2); +int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); +_WORD *__thiscall std::basic_stringstream,std::allocator>::str(_WORD *this, _DWORD *a2); +int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1); +int __thiscall std::istringstream::str(int this, _DWORD *a2); +int __fastcall std::istringstream::rdbuf(int a1); +_WORD *__thiscall std::wistringstream::str(_WORD *this, _DWORD *a2); +int __fastcall std::wistringstream::rdbuf(int a1); +int __thiscall std::ostringstream::str(int this, _DWORD *a2); +int __fastcall std::ostringstream::rdbuf(int a1); +_WORD *__thiscall std::wostringstream::str(_WORD *this, _DWORD *a2); +int __fastcall std::wostringstream::rdbuf(int a1); +int __stdcall std::collate::_M_compare(char *String1, char *String2); // idb +int __stdcall std::collate::do_compare(unsigned __int8 *a1, size_t Size, unsigned __int8 *a3, size_t a4); +size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); +int __thiscall std::collate::do_transform(int this, int a2, unsigned __int8 *a3, size_t Size); +int __thiscall std::collate::hash(void *this, char *a1, char *a2); +int __fastcall std::collate::compare(int a1); +int __stdcall std::collate::do_hash(char *a1, char *a2); +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); +int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2); // idb +int __stdcall std::collate::do_compare(wchar_t *a1, int a2, wchar_t *a3, int a4); +size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); +int __thiscall std::collate::do_transform(int this, int a2, wchar_t *a3, int a4); +int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2); +int __fastcall std::collate::compare(int a1); +int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2); +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); +int __stdcall std::messages::_M_convert_to_char(int a1); +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); +int __thiscall std::messages::open(void *this, int a2, int a3); +int __thiscall std::messages::open(void *this, int a2, int a3, int a4); +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); +_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +int __stdcall std::messages::do_open(int a1, int a2); +int __stdcall std::messages::do_close(int); // weak +int __stdcall std::messages::_M_convert_to_char(int a1); +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); +int __thiscall std::messages::open(void *this, int a2, int a3); +int __thiscall std::messages::open(void *this, int a2, int a3, int a4); +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); +wchar_t **__thiscall std::messages::do_get(wchar_t **this, int a2, int a3, int a4, int a5, int a6); +int __stdcall std::messages::do_open(int a1, int a2); +int __stdcall std::messages::do_close(int); // weak +void **__thiscall std::numpunct::do_grouping(void **this, int a2); +void **__thiscall std::numpunct::do_truename(void **this, int a2); +void **__thiscall std::numpunct::do_falsename(void **this, int a2); +int __fastcall std::numpunct::decimal_point(_DWORD *a1); +int __fastcall std::numpunct::thousands_sep(_DWORD *a1); +int __fastcall std::numpunct::do_decimal_point(int a1); +int __fastcall std::numpunct::do_thousands_sep(int a1); +void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2); +void **__thiscall std::numpunct::truename(void **this, _DWORD *a2); +void **__thiscall std::numpunct::falsename(void **this, _DWORD *a2); +void **__thiscall std::numpunct::do_grouping(void **this, int a2); +wchar_t **__thiscall std::numpunct::do_truename(wchar_t **this, int a2); +wchar_t **__thiscall std::numpunct::do_falsename(wchar_t **this, int a2); +int __fastcall std::numpunct::decimal_point(_DWORD *a1); +int __fastcall std::numpunct::thousands_sep(_DWORD *a1); +int __fastcall std::numpunct::do_decimal_point(int a1); +int __fastcall std::numpunct::do_thousands_sep(int a1); +void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2); +wchar_t **__thiscall std::numpunct::truename(wchar_t **this, _DWORD *a2); +wchar_t **__thiscall std::numpunct::falsename(wchar_t **this, _DWORD *a2); +int __fastcall std::time_get>::date_order(int a1); +_DWORD *__stdcall std::time_get>::do_get_date(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +_DWORD *__stdcall std::time_get>::do_get_time(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +int __fastcall std::time_get>::get_weekday(int a1); +int std::time_get>::do_date_order(); +int __fastcall std::time_get>::get_monthname(int a1); +_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); +_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +int __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, int a7, _DWORD *a8); +_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +_DWORD *__stdcall std::time_get>::_M_extract_via_format(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char *a8); +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, int a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); +int __thiscall std::time_get>::get(void *this, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int8 *a9, unsigned __int8 *a10); +int __thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); +_DWORD *__stdcall std::time_get>::do_get(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9); +int __fastcall std::time_get>::get_date(int a1); +int __fastcall std::time_get>::get_time(int a1); +int __fastcall std::time_get>::get_year(int a1); +int __fastcall std::time_get>::date_order(int a1); +_DWORD *__stdcall std::time_get>::do_get_date(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7); +_DWORD *__stdcall std::time_get>::do_get_time(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7); +_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +int __fastcall std::time_get>::get_weekday(int a1); +int std::time_get>::do_date_order(); +int __fastcall std::time_get>::get_monthname(int a1); +_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); +_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +_DWORD *__stdcall std::time_get>::_M_extract_name(_DWORD *a1, int a2, _DWORD *a3, int *a4, _DWORD *a5, int a6, int a7, int a8, _DWORD *a9); +_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +_DWORD *__stdcall std::time_get>::_M_extract_via_format(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7, wchar_t *String); +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, _DWORD *a5, int a6, unsigned int a7, int a8, _DWORD *a9); +int __thiscall std::time_get>::get(void *this, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10); +int __thiscall std::time_get>::get(void *this, _DWORD *a2, int a3, _DWORD *a4, int *a5, int a6, _DWORD *a7, _DWORD *a8, char a9, char a10); +_DWORD *__stdcall std::time_get>::do_get(_DWORD *a1, int a2, _DWORD *a3, int *a4, int a5, _DWORD *a6, _DWORD *a7, char a8, char a9); +int __fastcall std::time_get>::get_date(int a1); +int __fastcall std::time_get>::get_time(int a1); +int __fastcall std::time_get>::get_year(int a1); +unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, int a2, unsigned int a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, int a2, unsigned int a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +unsigned int __stdcall std::money_get>::do_get(unsigned int a1, int a2, unsigned int a3, int a4, char a5, int a6, _DWORD *a7, int *a8); +unsigned int __stdcall std::money_get>::do_get(std::locale::facet *a1, int a2, unsigned int a3, int a4, char a5, int a6, _DWORD *a7, long double *a8); +unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); +unsigned int __stdcall std::money_get>::_M_extract(unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +unsigned int __stdcall std::money_get>::do_get(unsigned int a1, __int16 a2, unsigned int a3, __int16 a4, char a5, int a6, _DWORD *a7, int *a8); +unsigned int __stdcall std::money_get>::do_get(std::locale::facet *a1, __int16 a2, unsigned int a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); +int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, char a5, int a6); +int __thiscall std::money_put>::do_put(void *this, int a2, char a3, int a4, int a5, int a6, long double a7); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, int a5); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, int a5); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); +int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, wchar_t a5, int a6); +int __thiscall std::money_put>::do_put(void *this, int a2, int a3, int a4, int a5, int a6, long double a7); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, wchar_t a4, int a5); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, wchar_t a4, int a5); +int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, int a3, unsigned __int8 **a4, int a5, int a6, _DWORD *a7); +int __stdcall std::codecvt::do_out(int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, int a5, int a6, int *a7); +unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4); +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); +int __stdcall std::codecvt::do_out(int a1, unsigned int *a2, unsigned int *a3, unsigned int **a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); +unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, int a4); +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); +int __stdcall std::codecvt::do_in(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned __int8 **a4, int a5, int a6, int *a7); +int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, int a5, int a6, int *a7); +unsigned __int8 *__stdcall std::codecvt::do_length(int a1, unsigned __int8 *a2, unsigned __int8 *a3, unsigned int a4); +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); +int std::codecvt::do_encoding(); +int std::codecvt::do_max_length(); +int std::codecvt::do_always_noconv(); +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); +int __stdcall std::codecvt::do_out(int a1, unsigned __int16 *a2, unsigned __int16 *a3, unsigned __int16 **a4, _BYTE *a5, _BYTE *a6, _BYTE **a7); +int __stdcall std::codecvt::do_length(int a1, int a2, unsigned __int8 *a3, unsigned int a4); +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4); +int std::codecvt::do_max_length(); +int std::codecvt::do_always_noconv(); +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7); +unsigned int __stdcall std::codecvt::do_length(int a1, int a2, int a3, unsigned int a4); +BOOL std::codecvt::do_encoding(); +int std::codecvt::do_max_length(); +int std::codecvt::do_always_noconv(); +int __stdcall std::codecvt::do_in(unsigned int *a1, char *a2, unsigned int a3, char **a4, wchar_t *a5, unsigned int a6, wchar_t **a7); +int __stdcall std::codecvt::do_out(unsigned int *a1, wchar_t *a2, unsigned int a3, wchar_t **a4, char *a5, unsigned int a6, char **a7); +int __stdcall std::codecvt::do_length(unsigned int *a1, char *a2, unsigned int a3, int a4); +int __stdcall std::collate::_M_compare(char *String1, char *String2); // idb +int __stdcall std::collate::do_compare(int a1, _BYTE *a2, int a3, int a4); +size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount); +unsigned int **__thiscall std::collate::do_transform(unsigned int **this, int a2, _BYTE *a3, int a4); +int __thiscall std::collate::hash(void *this, char *a1, char *a2); +int __fastcall std::collate::compare(int a1); +int __stdcall std::collate::do_hash(char *a1, char *a2); +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); +int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2); // idb +int __stdcall std::collate::do_compare(int a1, const wchar_t *a2, int a3, int a4); +size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount); +void **__thiscall std::collate::do_transform(void **this, int a2, const wchar_t *a3, int a4); +int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2); +int __fastcall std::collate::compare(int a1); +int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2); +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned int *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned int *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, unsigned __int16 *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int *a7); +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_int(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +unsigned __int64 __stdcall std::num_get>::_M_extract_float(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int **a6); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::num_get>::get(void *this, unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); +unsigned __int64 __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, int *a5, _BYTE *a6); +int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, double *a6); +int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, long double *a6); +int __stdcall std::num_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, float *a6); +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned int *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned int *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, unsigned __int16 *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11](_DWORD *a1, wchar_t a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, _DWORD *a7); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned __int16 *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, int *a6); +__int64 __stdcall std::num_get>::_M_extract_int(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); +__int64 __stdcall std::num_get>::_M_extract_float(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, unsigned int **a6); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __fastcall std::num_get>::get(int a1); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned int *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, unsigned __int16 *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::num_get>::get(void *this, __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); +int __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, _DWORD *a6); +int __stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, int *a5, _BYTE *a6); +_DWORD *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, double *a6); +_DWORD *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, long double *a6); +_DWORD *__stdcall std::num_get>::do_get(__int64 a1, _DWORD *a2, __int16 a3, int a4, _DWORD *a5, float *a6); +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); // weak +_BYTE *__stdcall std::num_put>::_M_group_int(char *a1, int a2, char a3, int a4, _BYTE *a5, _BYTE *a6, _DWORD *a7); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, UDItype a5); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, _DWORD *a3, int a4, int a5, int a6); +_BYTE *__stdcall std::num_put>::_M_group_float(char *a1, int a2, char a3, char *Src, int a5, _BYTE *a6, _DWORD *a7); +int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, _DWORD *a4, int a5, int a6, double a7); +int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, std::__num_base *a4, int a5, int a6, long double a7); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5, unsigned __int8 a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, UDItype a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, _DWORD *a4, char a5, int a6, int a7); +int __stdcall std::num_put>::_M_pad(char a1, int a2, _DWORD *a3, char *a4, _BYTE *a5, int *a6); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); +int *__stdcall std::num_put>::do_put(int *a1, int a2, _DWORD *a3, int a4, int a5); +int __thiscall std::num_put>::do_put(void *this, int a2, int a3, _DWORD *a4, char a5, double a6); +int __thiscall std::num_put>::do_put(void *this, int a2, int a3, std::__num_base *a4, char a5, long double a6); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, UDItype a5); +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5, int a6); +int __stdcall std::num_put>::_M_group_int(char *a1, int a2, __int16 a3, int a4, _WORD *a5, _WORD *a6, int *a7); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, int a5); // idb +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, int a5); // idb +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, UDItype a5); +int __stdcall std::num_put>::_M_insert_int(int a1, int a2, wchar_t *S1, int a4, int a5, int a6); // idb +int __stdcall std::num_put>::_M_group_float(char *a1, int a2, __int16 a3, wchar_t *S2, _WORD *a5, _WORD *a6, _DWORD *a7); +int __thiscall std::num_put>::_M_insert_float(void *this, int a2, int a3, wchar_t *S1, int a5, int a6, double a7); +int __fastcall std::num_put>::_M_insert_float(int a1, int a2, int a3, int a4, wchar_t *S1, int a6, int a7, long double a8); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5, unsigned __int8 a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5); +int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, UDItype a6); +int __thiscall std::num_put>::put(void *this, int a2, int a3, wchar_t *a4, unsigned __int16 a5, int a6, int a7); +int __stdcall std::num_put>::_M_pad(unsigned __int16 a1, int a2, wchar_t *S1, wchar_t *a4, wchar_t *a5, int *a6); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *S1, unsigned __int16 a4, int a5); +int *__stdcall std::num_put>::do_put(int *a1, int a2, wchar_t *S1, int a4, int a5); +int __thiscall std::num_put>::do_put(void *this, int a2, int a3, wchar_t *S1, unsigned __int16 a5, double a6); +int __thiscall std::num_put>::do_put(void *this, int a2, int a3, wchar_t *S1, unsigned __int16 a5, long double a6); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, UDItype a5); +int __stdcall std::num_put>::do_put(int a1, int a2, wchar_t *a3, unsigned __int16 a4, int a5, int a6); +_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find(_DWORD *this, int a2); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find(_DWORD *this, int a2); +const char *std::bad_cast::what(); +int __fastcall std::ios_base::failure::what(int a1); +int __stdcall std::messages::_M_convert_to_char(int a1); +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); +int __thiscall std::messages::open(void *this, int a2, int a3); +int __thiscall std::messages::open(void *this, int a2, int a3, int a4); +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); +unsigned int **__thiscall std::messages::do_get(unsigned int **this, int a2, int a3, int a4, int a5, unsigned int **a6); +int __stdcall std::messages::do_open(int a1, int a2); +int __stdcall std::messages::do_close(int); // weak +int __stdcall std::messages::_M_convert_to_char(int a1); +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3); +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6); +int __thiscall std::messages::open(void *this, int a2, int a3); +int __thiscall std::messages::open(void *this, int a2, int a3, int a4); +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int); +_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _DWORD *a6); +int __stdcall std::messages::do_open(int a1, int a2); +int __stdcall std::messages::do_close(int); // weak +_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); +int __fastcall std::numpunct::decimal_point(_DWORD *a1); +int __fastcall std::numpunct::thousands_sep(_DWORD *a1); +int __fastcall std::numpunct::do_decimal_point(int a1); +int __fastcall std::numpunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2); +int __fastcall std::numpunct::decimal_point(_DWORD *a1); +int __fastcall std::numpunct::thousands_sep(_DWORD *a1); +int __fastcall std::numpunct::do_decimal_point(int a1); +int __fastcall std::numpunct::do_thousands_sep(int a1); +_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2); +int __fastcall std::time_get>::date_order(int a1); +int __stdcall std::time_get>::do_get_date(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); +int __stdcall std::time_get>::do_get_time(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6); +_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +int __fastcall std::time_get>::get_weekday(int a1); +int std::time_get>::do_date_order(); +int __fastcall std::time_get>::get_monthname(int a1); +_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, int a2, _DWORD *a3, int a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); +_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +int __stdcall std::time_get>::_M_extract_name(unsigned __int64 a1, _DWORD *a2, int a3, _DWORD *a4, int a5, _DWORD *a6, int a7, _DWORD *a8); +_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, int a7); +unsigned __int64 __stdcall std::time_get>::_M_extract_via_format(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char *a7); +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, int a4, unsigned int *a5, int a6, unsigned int a7, int a8, _DWORD *a9); +int __stdcall std::time_get>::get(int a1, int a2, _DWORD *a3, int a4, int a5, _DWORD *a6, _DWORD *a7, unsigned __int8 *a8, unsigned __int8 *a9); +int __stdcall std::time_get>::get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); +int __stdcall std::time_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); +int __fastcall std::time_get>::get_date(int a1); +int __fastcall std::time_get>::get_time(int a1); +int __fastcall std::time_get>::get_year(int a1); +int __fastcall std::time_get>::date_order(int a1); +_DWORD *__stdcall std::time_get>::do_get_date(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6); +_DWORD *__stdcall std::time_get>::do_get_time(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6); +_DWORD *__stdcall std::time_get>::do_get_year(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +int __fastcall std::time_get>::get_weekday(int a1); +int std::time_get>::do_date_order(); +int __fastcall std::time_get>::get_monthname(int a1); +_DWORD *__stdcall std::time_get>::_M_extract_num(_DWORD *a1, __int16 a2, _DWORD *a3, __int16 a4, int *a5, signed int a6, int a7, unsigned int a8, int a9, _DWORD *a10); +_DWORD *__stdcall std::time_get>::do_get_weekday(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +_DWORD *__stdcall std::time_get>::_M_extract_name(_DWORD *a1, int a2, _DWORD *a3, int *a4, _DWORD *a5, int a6, int a7, int a8, _DWORD *a9); +_DWORD *__stdcall std::time_get>::do_get_monthname(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int a7); +__int64 __stdcall std::time_get>::_M_extract_via_format(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, wchar_t *a7); +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month(_DWORD *a1, int a2, _DWORD *a3, __int16 a4, _DWORD *a5, int a6, unsigned int a7, int a8, _DWORD *a9); +int __thiscall std::time_get>::get(void *this, int a2, int a3, _DWORD *a4, int a5, _DWORD *a6, _DWORD *a7, _DWORD *a8, unsigned __int16 *a9, unsigned __int16 *a10); +int __stdcall std::time_get>::get(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); +_DWORD *__stdcall std::time_get>::do_get(__int64 a1, _DWORD *a2, int *a3, int a4, _DWORD *a5, _DWORD *a6, char a7, char a8); +int __fastcall std::time_get>::get_date(int a1); +int __fastcall std::time_get>::get_time(int a1); +int __fastcall std::time_get>::get_year(int a1); +__int64 __thiscall std::time_put>::put(void *this, __int64 a2, int a3, char a4, int a5, unsigned __int8 *a6, unsigned __int8 *a7); +int __thiscall std::time_put>::put(void *this, int a2, int a3, int a4, char a5, int a6, char a7, char a8); +int __stdcall std::time_put>::do_put(int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7); +_DWORD *__thiscall std::time_put>::put(void *this, _DWORD *a2, int a3, int a4, unsigned __int16 a5, int a6, unsigned __int16 *a7, unsigned __int16 *a8); +int __thiscall std::time_put>::put(void *this, int a2, int a3, int a4, unsigned __int16 a5, int a6, char a7, char a8); +int __stdcall std::time_put>::do_put(int a1, char a2, int a3, int a4, struct tm *a5, char a6, char a7); +const char *std::bad_alloc::what(); +int __fastcall std::ios::exceptions(int a1); +int __fastcall std::ios::bad(int a1); +int __fastcall std::ios::eof(int a1); +int __fastcall std::ios::tie(int a1); +bool __fastcall std::ios::fail(int a1); +int __fastcall std::ios::fill(int a1); +bool __fastcall std::ios::good(int a1); +int __fastcall std::ios::rdbuf(int a1); +int __thiscall std::ios::widen(int *this, int a2); +int __thiscall std::ios::narrow(_DWORD *this, int a2, int a3); +int __fastcall std::ios::rdstate(int a1); +int __fastcall std::ios::operator void *(int a1); +bool __fastcall std::ios::operator bool(int a1); +bool __fastcall std::ios::operator!(int a1); +int __fastcall std::wios::exceptions(int a1); +int __fastcall std::wios::bad(int a1); +int __fastcall std::wios::eof(int a1); +int __fastcall std::wios::tie(int a1); +bool __fastcall std::wios::fail(int a1); +int __fastcall std::wios::fill(int a1); +bool __fastcall std::wios::good(int a1); +int __fastcall std::wios::rdbuf(int a1); +int __thiscall std::wios::widen(_DWORD *this, char a2); +int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16 a2, char a3); +int __fastcall std::wios::rdstate(int a1); +int __fastcall std::wios::operator void *(int a1); +bool __fastcall std::wios::operator bool(int a1); +bool __fastcall std::wios::operator!(int a1); +const char *_ZGTtNKSt9exception4whatEv(); +int __stdcall std::money_get>::_M_extract(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __stdcall std::money_get>::_M_extract(unsigned __int64 a1, _DWORD *a2, int a3, int a4, _DWORD *a5, int *a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, unsigned int **a7); +int __stdcall std::money_get>::do_get(unsigned __int64 a1, _DWORD *a2, int a3, char a4, int a5, _DWORD *a6, long double *a7); +_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); +_DWORD *__stdcall std::money_get>::_M_extract(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, int a5, _DWORD *a6, int *a7); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +int __thiscall std::money_get>::get(void *this, int a2, int a3, int a4, int a5, unsigned __int8 a6); +_DWORD *__stdcall std::money_get>::do_get(_DWORD *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, void **a8); +_DWORD *__stdcall std::money_get>::do_get(std::locale::facet *a1, unsigned __int16 a2, _DWORD *a3, __int16 a4, char a5, int a6, _DWORD *a7, long double *a8); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, char a6); +int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, char a5, std::string **a6); +int __thiscall std::money_put>::do_put(void *this, std::locale *a2, char a3, int a4, int a5, int a6, long double a7); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, std::string **a5); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, char a4, std::string **a5); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); +int __thiscall std::money_put>::put(void *this, int a2, int a3, unsigned __int8 a4, int a5, unsigned __int16 a6); +int __stdcall std::money_put>::do_put(int a1, char a2, char a3, int a4, __int16 a5, wchar_t **a6); +int __thiscall std::money_put>::do_put(void *this, std::locale *a2, char a3, int a4, int a5, int a6, long double a7); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, __int16 a4, wchar_t **a5); +int __stdcall std::money_put>::_M_insert(int a1, char a2, int a3, wchar_t a4, wchar_t **a5); +// bool __userpurge std::type_info::__do_catch@(_DWORD *a1@, std::type_info *this, const std::type_info *a3, void **a4, unsigned int a5); +int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3); +int std::type_info::__is_function_p(); +bool __thiscall std::type_info::operator==(_DWORD *this, int a2); +int __cdecl std::wstring::_S_compare(int a1, int a2); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +const wchar_t *__fastcall std::wstring::_M_leak_hard(const wchar_t **a1); +_DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, wchar_t a2); +// _DWORD *__usercall std::wstring::_S_construct@(unsigned int a1@, wchar_t a2@); +wchar_t *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(wchar_t *S2, wchar_t *a2); +_DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2); +_DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2); +// _DWORD *__usercall std::wstring::_S_construct@(const wchar_t *a1@, int a2@); +void *std::wstring::_S_empty_rep(); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +char *__fastcall std::wstring::shrink_to_fit(void **a1); +const wchar_t **__thiscall std::wstring::_M_replace_aux(const wchar_t **this, size_t a2, int a3, size_t N, wchar_t C); +const wchar_t **__thiscall std::wstring::_M_replace_safe(const wchar_t **this, size_t a2, int a3, wchar_t *S2, size_t N); +_DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, wchar_t a2); +const wchar_t *__thiscall std::wstring::at(const wchar_t **this, unsigned int a2); +int __fastcall std::wstring::end(const wchar_t **a1); +void __thiscall std::wstring::_Rep::_M_destroy(void *this, int a2); +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void __fastcall std::wstring::_Rep::_M_dispose(volatile signed __int32 *a1); +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +int __fastcall std::wstring::_Rep::_M_refcopy(int a1); +int __fastcall std::wstring::_Rep::_M_refdata(int a1); +void *std::wstring::_Rep::_S_empty_rep(); +void __fastcall std::wstring::_Rep::_M_set_leaked(int a1); +void __fastcall std::wstring::_Rep::_M_set_sharable(int a1); +int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(int this, int a2); +_DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3); +_DWORD *__thiscall std::wstring::_Rep::_M_clone(int this, int a2, int a3); +_DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2); +const wchar_t *__fastcall std::wstring::back(const wchar_t **a1); +const wchar_t **__thiscall std::wstring::rend(const wchar_t **this, const wchar_t **a2); +int __thiscall std::wstring::swap(int *this, int *a2); +const wchar_t *__fastcall std::wstring::begin(const wchar_t **a1); +void __fastcall std::wstring::clear(void **a1); +char *__thiscall std::wstring::erase(const wchar_t **this, int a2); +char *__thiscall std::wstring::erase(const wchar_t **this, char *a2, int a3); +const wchar_t **__thiscall std::wstring::erase(const wchar_t **this, size_t a2, unsigned int a3); +const wchar_t *__fastcall std::wstring::front(const wchar_t **a1); +void **__thiscall std::wstring::append(void **this, wchar_t *String); +void **__thiscall std::wstring::append(void **this, wchar_t *a2, size_t N); +void **__thiscall std::wstring::append(void **this, const wchar_t **a2); +void **__thiscall std::wstring::append(void **this, _DWORD *a2, unsigned int a3, size_t a4); +void **__thiscall std::wstring::append(void **this, size_t N, wchar_t C); +int __thiscall std::wstring::assign(int *this, int *a2); +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *String); +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *S2, size_t N); +void **__thiscall std::wstring::assign(void **this, _DWORD *a2); +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, _DWORD *a2, unsigned int a3, size_t a4); +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, size_t a2, __int16 a3); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *a3, size_t a4); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, size_t a3, __int16 a4); +char *__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t a3); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *String); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, wchar_t *a3, size_t N); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t **a3); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, _DWORD *a3, unsigned int a4, size_t a5); +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, size_t a3, __int16 a4); +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, const wchar_t **a2); +void __thiscall std::wstring::resize(void **this, size_t a2); +void __thiscall std::wstring::resize(void **this, size_t a2, wchar_t a3); +size_t __cdecl std::wstring::_M_copy(wchar_t *S1, const wchar_t *S2, size_t N); +int __thiscall std::wstring::_M_data(_DWORD *this, int a2); +const wchar_t *__fastcall std::wstring::_M_leak(const wchar_t **a1); +size_t __cdecl std::wstring::_M_move(wchar_t *S1, const wchar_t *S2, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t a5); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, size_t a4, wchar_t a5); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t N); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, _DWORD *a4, unsigned int a5, size_t a6); +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5); +char *__thiscall std::wstring::reserve(void **this, char *a2); +void __fastcall std::wstring::pop_back(const wchar_t **a1); +wchar_t *__cdecl std::wstring::_M_assign(wchar_t *a1, size_t C, size_t N); +void __thiscall std::wstring::_M_mutate(const wchar_t **this, size_t a2, int a3, int a4); +_WORD *__thiscall std::wstring::push_back(void **this, __int16 a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +void __thiscall std::wstring::basic_string(_DWORD *this, int a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4); +void __fastcall std::wstring::basic_string(_DWORD *a1); +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *a2, wchar_t *a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +void __thiscall std::wstring::basic_string(_DWORD *this, int a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4); +void __fastcall std::wstring::basic_string(_DWORD *a1); +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *a2, wchar_t *a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4); +void __fastcall std::wstring::~wstring(volatile signed __int32 **a1); +void __fastcall std::wstring::~wstring(volatile signed __int32 **a1); +int __thiscall std::wstring::operator=(int *this, int *a2); +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *String); +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *a2, size_t a3); +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t a2); +const wchar_t *__thiscall std::wstring::operator[](const wchar_t **this, int a2); +void **__thiscall std::wstring::operator+=(void **this, wchar_t *String); +void **__thiscall std::wstring::operator+=(void **this, __int16 a2); +// int __userpurge std::iostream::swap@(_DWORD *a1@, std::iostream *this, std::iostream *a3); +int __thiscall std::iostream::iostream(_DWORD *this, int *a2); +BOOL __thiscall std::iostream::iostream(_DWORD *this, int a2); +BOOL __fastcall std::iostream::iostream(int a1); +int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3); +int __thiscall std::iostream::iostream(int *this, int *a2, int a3); +int __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this); +void __fastcall std::iostream::~iostream(_DWORD *a1); +void __fastcall std::iostream::~iostream(int a1); +void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this); +_DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2); +// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); +// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5); +std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2); +std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3); +// std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3); +int __fastcall std::istream::get(std::istream::sentry *a1); +int __fastcall std::istream::peek(std::istream::sentry *a1); +// std::istream::sentry *__userpurge std::istream::read@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); +// int __userpurge std::istream::swap@(_DWORD *a1@, std::istream *this, std::istream *a3); +int __fastcall std::istream::sync(std::istream::sentry *a1); +std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5); +std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4); +_DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this); +std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *a1); +// std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *a1@, std::istream *this, int a3); +// std::istream::sentry *__userpurge std::istream::ignore@(std::istream::sentry *a1@, std::istream *this, int a3, int a4); +std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1); +// int __userpurge std::istream::sentry::sentry@(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4); +// int __userpurge std::istream::sentry::sentry@(_BYTE *a1@, std::istream::sentry *this, std::istream *a3, bool a4); +// std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); +// std::istream::sentry *__userpurge std::istream::getline@(std::istream::sentry *a1@, std::istream *this, char *a3, unsigned __int8 a4, char a5); +// std::istream::sentry *__userpurge std::istream::putback@(std::istream::sentry *a1@, std::istream *this, char a3); +// int __userpurge std::istream::readsome@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4); +int __thiscall std::istream::istream(_DWORD *this, int *a2); +BOOL __thiscall std::istream::istream(_DWORD *this, int a2); +BOOL __fastcall std::istream::istream(int a1); +int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::istream::istream(int *this, int *a2, int a3); +BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this); +void __fastcall std::istream::~istream(_DWORD *a1); +void __fastcall std::istream::~istream(_DWORD *a1); +void __thiscall std::istream::~istream(_DWORD *ecx0, std::istream *this); +_DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)); +char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)); +char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)); +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2); +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2); +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2); +// std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3); +// int __userpurge std::ostream::swap@(_DWORD *a1@, std::ostream *this, std::ostream *a3); +_DWORD *__fastcall std::ostream::flush(_DWORD *a1); +_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4); +_DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this); +// std::ostream::sentry *__userpurge std::ostream::write@(std::ostream::sentry *a1@, std::ostream *this, const char *a3, int a4); +// int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3); +// int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3); +void __fastcall std::ostream::sentry::~sentry(int a1); +void __fastcall std::ostream::sentry::~sentry(int a1); +// const char *__userpurge std::ostream::_M_write@(_DWORD *a1@, std::ostream *this, const char *a3, int a4); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3); +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3); +int __thiscall std::ostream::ostream(_DWORD *this, int *a2); +BOOL __thiscall std::ostream::ostream(_DWORD *this, int a2); +// int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3); +BOOL __fastcall std::ostream::ostream(int a1); +int __thiscall std::ostream::ostream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::ostream::ostream(int *this, int *a2, int a3); +int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3); +BOOL __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this); +void __fastcall std::ostream::~ostream(_DWORD *a1); +void __fastcall std::ostream::~ostream(_DWORD *a1); +void __thiscall std::ostream::~ostream(_DWORD *ecx0, std::ostream *this); +_DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)); +char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)); +char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)); +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2); +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2); +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2); +_DWORD __stdcall std::ostream::operator<<(_DWORD); // weak +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2); +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2); +char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +volatile signed __int32 *__fastcall std::string::_M_leak_hard(volatile signed __int32 **a1); +unsigned int *__cdecl std::string::_S_construct(unsigned int a1, char a2); +// unsigned int *__usercall std::string::_S_construct@(unsigned int a1@, char a2@
); +void *__cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, _BYTE *a2); +_DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2); +_DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2); +// _DWORD *__usercall std::string::_S_construct@(_BYTE *a1@, int a2@); +unsigned int *std::string::_S_empty_rep(); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size); +size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size); +unsigned int *__fastcall std::string::shrink_to_fit(unsigned int **a1); +// volatile signed __int32 **__userpurge std::string::_M_replace_aux@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, size_t Size, char a5, char a6); +// volatile signed __int32 **__userpurge std::string::_M_replace_safe@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, _BYTE *Src, size_t Size, unsigned int a6); +unsigned int *__cdecl std::string::_S_construct_aux_2(unsigned int a1, char a2); +// char *__userpurge std::string::at@(volatile signed __int32 **a1@, std::string *this, unsigned int a3); +int __fastcall std::string::end(volatile signed __int32 **a1); +void __thiscall std::string::_Rep::_M_destroy(void *this, int a2); +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void __fastcall std::string::_Rep::_M_dispose(volatile signed __int32 *a1); +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +int __fastcall std::string::_Rep::_M_refcopy(int a1); +int __fastcall std::string::_Rep::_M_refdata(int a1); +unsigned int *std::string::_Rep::_S_empty_rep(); +void __fastcall std::string::_Rep::_M_set_leaked(int a1); +void __fastcall std::string::_Rep::_M_set_sharable(int a1); +// std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@(unsigned int *a1@, std::string::_Rep *this, unsigned int a3); +unsigned int *__thiscall std::string::_Rep::_M_grab(int this, int a2, int a3); +unsigned int *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3); +_DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2); +char *__fastcall std::string::back(volatile signed __int32 **a1); +volatile signed __int32 **__thiscall std::string::rend(volatile signed __int32 **ecx0, volatile signed __int32 **this); +// int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3); +volatile signed __int32 *__fastcall std::string::begin(volatile signed __int32 **a1); +void __fastcall std::string::clear(void **a1); +char *__thiscall std::string::erase(volatile signed __int32 **this, int a2); +char *__thiscall std::string::erase(volatile signed __int32 **this, char *a2, char *a3); +// volatile signed __int32 **__userpurge std::string::erase@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, unsigned int a4); +volatile signed __int32 *__fastcall std::string::front(volatile signed __int32 **a1); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const char *a3); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, size_t Size, unsigned int a4); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const std::string *a3); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); +// unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, char a3, char a4); +unsigned int *__thiscall std::string::append(unsigned int **this, size_t Size, char a3); +int __stdcall std::string::assign(std::string *); // idb +// volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, std::string *this, const char *a3); +// volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, std::string *this, size_t Size, unsigned int a4); +// unsigned int **__userpurge std::string::assign@(unsigned int **a1@, unsigned int **this, const std::string *a3); +// volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); +// volatile signed __int32 **__userpurge std::string::assign@(volatile signed __int32 **a1@, size_t this, char a3, char a4); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *a2, volatile signed __int32 *a3, size_t a4, unsigned int a5); +char *__thiscall std::string::insert(volatile signed __int32 **this, int a2, char a3); +volatile signed __int32 **__thiscall std::string::insert(volatile signed __int32 **this, int a2, size_t a3, char a4); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, char *Str, const char *a4); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, volatile signed __int32 *a3, size_t Size, unsigned int a5); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, volatile signed __int32 **a3, const std::string *a4); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, _DWORD *a3, const std::string *a4, unsigned int a5, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::insert@(volatile signed __int32 **a1@, std::string *this, size_t a3, char a4, char a5); +_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, volatile signed __int32 **this); +// void __userpurge std::string::resize(unsigned int **a1@, std::string *this, unsigned int a3); +// void __userpurge std::string::resize(unsigned int **a1@, size_t this, char a3, char a4); +size_t __cdecl std::string::_M_copy(void *this, const void *Src, size_t Size); +// std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3); +volatile signed __int32 *__fastcall std::string::_M_leak(volatile signed __int32 **a1); +size_t __cdecl std::string::_M_move(void *this, const void *Src, size_t Size); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +volatile signed __int32 **__thiscall std::string::replace(volatile signed __int32 **this, int a2, int a3, char *Str); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t a5, unsigned int a6); +volatile signed __int32 **__thiscall std::string::replace(volatile signed __int32 **this, int a2, int a3, volatile signed __int32 **a4); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, volatile signed __int32 *a4, size_t a5, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *a2, int a3, size_t a4, char a5, char a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, char *Str, const char *a5); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, volatile signed __int32 *a4, size_t Size, unsigned int a6); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, volatile signed __int32 **a4, const std::string *a5); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, _DWORD *a4, const std::string *a5, unsigned int a6, unsigned int a7); +// volatile signed __int32 **__userpurge std::string::replace@(volatile signed __int32 **a1@, std::string *this, unsigned int a3, size_t a4, char a5, char a6); +// unsigned int *__userpurge std::string::reserve@(unsigned int **a1@, std::string *this, unsigned int a3); +void __fastcall std::string::pop_back(volatile signed __int32 **a1); +char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size); +// void __userpurge std::string::_M_mutate(volatile signed __int32 **a1@, size_t this, unsigned int a3, unsigned int a4, unsigned int a5); +// unsigned int *__userpurge std::string::push_back@(unsigned int **a1@, std::string *this, char a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +void __thiscall std::string::string(_DWORD *this, int a2); +// unsigned int *__userpurge std::string::string@(unsigned int **a1@, unsigned int **this, const std::string *a3); +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); +// _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); +_DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4); +void __fastcall std::string::string(_DWORD *a1); +void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *a2, _BYTE *a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +void __thiscall std::string::string(_DWORD *this, int a2); +// unsigned int *__userpurge std::string::string@(unsigned int **a1@, unsigned int **this, const std::string *a3); +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3); +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4); +// _DWORD *__userpurge std::string::string@(_DWORD *a1@, std::string *this, const std::string *a3, unsigned int a4, unsigned int a5); +_DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4); +void __fastcall std::string::string(_DWORD *a1); +void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *a2, _BYTE *a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4); +void __fastcall std::string::~string(volatile signed __int32 **a1); +void __fastcall std::string::~string(volatile signed __int32 **a1); +int __stdcall std::string::operator=(std::string *); // idb +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *Str); +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *a2, size_t a3); +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, char a2); +char *__thiscall std::string::operator[](volatile signed __int32 **this, int a2); +unsigned int **__thiscall std::string::operator+=(unsigned int **this, std::string *Str); +unsigned int **__thiscall std::string::operator+=(unsigned int **this, char a2); +int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *a2, char *a3); +void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1); +void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1); +int __cdecl std::money_base::_S_construct_pattern(); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); +int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); +int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); +void __fastcall std::__timepunct::~__timepunct(void *a1); +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); +_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2); +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); +int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3); +int __stdcall std::__timepunct::__timepunct(int, char *Str1, int); // idb +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2); +void __fastcall std::__timepunct::~__timepunct(void *a1); +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1); +int __thiscall std::logic_error::logic_error(_DWORD *this, int a2); +// _DWORD *__userpurge std::logic_error::logic_error@(int a1@, std::logic_error *this, const char *a3); +_DWORD *__thiscall std::logic_error::logic_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::logic_error::logic_error@(int a1@, unsigned int **this, const std::logic_error *a3); +// unsigned int *__userpurge std::logic_error::logic_error@(int a1@, unsigned int **this, const std::string *a3); +void __fastcall std::logic_error::~logic_error(_DWORD *a1); +void __fastcall std::logic_error::~logic_error(_DWORD *a1); +int *__thiscall std::logic_error::operator=(int *this, int a2); +unsigned int **__thiscall std::logic_error::operator=(unsigned int **this, int a2); +// _DWORD *__userpurge std::range_error::range_error@(_DWORD *a1@, std::range_error *this, const char *a3); +_DWORD *__thiscall std::range_error::range_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::range_error::range_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::range_error::~range_error(_DWORD *a1); +void __fastcall std::range_error::~range_error(_DWORD *a1); +// int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); +// int __usercall std::_Destroy_aux::__destroy *>@(int a1@, int a2, int a3); +// int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3); +void __fastcall __spoils std::`anonymous namespace'::utf16_span(unsigned int a1, unsigned __int8 *a2, unsigned int a3, char a4); +// int __usercall std::`anonymous namespace'::read_utf16_bom@(int result@, _DWORD *a2@); +// int __usercall std::`anonymous namespace'::write_utf8_bom@(int *a1@); +// int __usercall std::`anonymous namespace'::write_utf16_bom@(int a1@, char a2@
); +// int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **a1@, unsigned int a2@); +// int __usercall std::`anonymous namespace'::read_utf8_code_point@(unsigned __int8 **a1@, unsigned int a2@); +// unsigned int __usercall std::`anonymous namespace'::read_utf16_code_point@(unsigned int result@, unsigned int a2@, char a3@); +// int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@); +// int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **a1@, unsigned int a2@); +// int __usercall std::`anonymous namespace'::write_utf16_code_point@(int a1@, unsigned int a2@, char a3@); +// int __usercall std::`anonymous namespace'::ucs2_in@(_DWORD *a1@, int *a2@, unsigned int a3@, char a4); +// int __usercall std::`anonymous namespace'::ucs4_in@(int *a1@, int *a2@, unsigned int a3@, char a4); +// int __usercall std::`anonymous namespace'::read_bom@(int a1@, _WORD *a2@); +// int __usercall std::`anonymous namespace'::read_bom@(int *a1@); +// int __usercall std::`anonymous namespace'::read_bom@(int *a1@); +// int __usercall std::`anonymous namespace'::ucs2_out@(unsigned __int16 **a1@, _DWORD *a2@, unsigned int a3@, char a4); +// int __usercall std::`anonymous namespace'::utf16_in@(int *a1@, _DWORD *a2@, unsigned int a3@, char a4, int a5); +// int __usercall std::`anonymous namespace'::ucs2_span@(unsigned int a1@, int a2@, unsigned int a3@, char a4); +void __fastcall __spoils std::`anonymous namespace'::ucs2_span(int a1, unsigned __int8 *a2, unsigned int a3, char a4); +// int __usercall std::`anonymous namespace'::utf16_out@(unsigned __int16 **a1@, int *a2@, unsigned int a3@, char a4, int a5); +// int __usercall std::`anonymous namespace'::utf16_out@(unsigned __int16 **a1@, _BYTE **a2@, unsigned int a3@, int a4); +int __fastcall std::__basic_file::fd(int a1); +int __fastcall std::__basic_file::file(int a1); +_BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4); +FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3); +int __fastcall std::__basic_file::sync(FILE **a1); +int __fastcall std::__basic_file::close(int a1); +int __thiscall std::__basic_file::xsgetn(void *this, void *DstBuf, unsigned int MaxCharCount); +unsigned int __thiscall std::__basic_file::xsputn(void *this, char *a2, unsigned int a3); +__int64 __thiscall std::__basic_file::seekoff(void *this, __int64 Offset, int Origin); +_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3); +_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, int FileHandle, char a3); +unsigned int __thiscall std::__basic_file::xsputn_2(void *this, char *a2, unsigned int a3, char *a4, unsigned int a5); +int __fastcall std::__basic_file::showmanyc(int a1); +void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2); +int __fastcall std::__basic_file::~__basic_file(_DWORD); // weak +_DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2); +// _DWORD *__userpurge std::__cow_string::__cow_string@(_DWORD *a1@, std::__cow_string *this, const char *a3, unsigned int a4); +_DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, int a2); +// unsigned int *__userpurge std::__cow_string::__cow_string@(unsigned int **a1@, unsigned int **this, const std::__cow_string *a3); +void __fastcall std::__cow_string::__cow_string(_DWORD *a1); +void __fastcall std::__cow_string::~__cow_string(volatile signed __int32 **a1); +int *__thiscall std::__cow_string::operator=(int *this, std::string *a2); +unsigned int **__thiscall std::__cow_string::operator=(unsigned int **this, unsigned int **a2); +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); +volatile signed __int32 **__thiscall std::__shared_ptr::operator=(volatile signed __int32 **this, volatile signed __int32 **a2); +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr(_DWORD *this, _DWORD *a2); +volatile signed __int32 **__thiscall std::__shared_ptr::operator=(volatile signed __int32 **this, volatile signed __int32 **a2); +_DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2); +// unsigned int __userpurge std::__sso_string::__sso_string@(void **a1@, std::__sso_string *this, const char *a3, unsigned int a4); +_BYTE *__thiscall std::__sso_string::__sso_string(_DWORD *this, int a2); +// _BYTE *__userpurge std::__sso_string::__sso_string@(_DWORD *a1@, std::__sso_string *this, const std::__sso_string *a3); +// unsigned int __userpurge std::__sso_string::__sso_string@(void **a1@, std::__sso_string **this, const std::string *a3); +int __fastcall std::__sso_string::__sso_string(int a1); +void __fastcall std::__sso_string::~__sso_string(void **a1); +_DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int a2); +void *__thiscall std::__sso_string::operator=(void *this, int a2); +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1); +void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1); +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1); +void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1); +// _DWORD *__userpurge std::domain_error::domain_error@(_DWORD *a1@, std::domain_error *this, const char *a3); +_DWORD *__thiscall std::domain_error::domain_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::domain_error::domain_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::domain_error::~domain_error(_DWORD *a1); +void __fastcall std::domain_error::~domain_error(_DWORD *a1); +// _DWORD *__userpurge std::length_error::length_error@(_DWORD *a1@, std::length_error *this, const char *a3); +_DWORD *__thiscall std::length_error::length_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::length_error::length_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::length_error::~length_error(_DWORD *a1); +void __fastcall std::length_error::~length_error(_DWORD *a1); +// _DWORD *__userpurge std::out_of_range::out_of_range@(_DWORD *a1@, std::out_of_range *this, const char *a3); +_DWORD *__thiscall std::out_of_range::out_of_range(_DWORD *this, int a2); +// unsigned int *__userpurge std::out_of_range::out_of_range@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::out_of_range::~out_of_range(_DWORD *a1); +void __fastcall std::out_of_range::~out_of_range(_DWORD *a1); +void __fastcall std::system_error::~system_error(_DWORD *a1); +void __fastcall std::system_error::~system_error(_DWORD *a1); +int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); +int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); +int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); +int __cdecl std::__facet_shims::__time_get(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, char a10); +int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, std::string *a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, int a11); +int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11); +int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, _DWORD *a11); +int __cdecl std::__facet_shims::__money_get(int a1, int *a2, int a3, int a4, int a5, int a6, unsigned __int8 a7, int a8, _DWORD *a9, int a10, int a11); +int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9); +int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, char a7, long double a8, int a9); +int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9); +int __cdecl std::__facet_shims::__money_put(int a1, int a2, int a3, int a4, unsigned __int8 a5, int a6, unsigned __int16 a7, long double a8, int a9); +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(std::locale::facet *a1); +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1); +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1); +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1); +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1); +void __cdecl std::__facet_shims::__messages_get(int a1, int a2, int a3, std::string *a4, int a5, int a6, _BYTE *a7, int a8); +void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, unsigned __int8 *a7, int a8); +void __cdecl std::__facet_shims::__messages_get(int a1, int a2, _DWORD *a3, int a4, int a5, int a6, const wchar_t *a7, int a8); +void __cdecl std::__facet_shims::__messages_get(int a1, int a2, int a3, int a4, int a5, int a6, wchar_t *a7, int a8); +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5); +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5); +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5); +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5); +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3); +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6); +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, std::string *a4, int a5); +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5); +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5); +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, int a4, int a5); +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2); +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3); +// void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, const char *a3); +// void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4); +void __fastcall std::__ios_failure::~__ios_failure(int a1); +void __fastcall std::__ios_failure::~__ios_failure(int a1); +void __fastcall std::bad_exception::~bad_exception(void *a1); +void __cdecl std::bad_exception::~bad_exception(void *); // idb +unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int a2); +int __thiscall std::filebuf::_M_get_ext_pos(int this, int a2); +int __fastcall std::filebuf::_M_create_pback(int a1); +int __fastcall std::filebuf::_M_destroy_pback(int a1); +int __fastcall std::filebuf::_M_terminate_output(_DWORD *a1); +bool __thiscall std::filebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3); +void __fastcall std::filebuf::_M_destroy_internal_buffer(int a1); +void __fastcall std::filebuf::_M_allocate_internal_buffer(int a1); +char *__thiscall std::filebuf::open(char *this, char *a2, int a3); +char *__thiscall std::filebuf::open(char *this, int a2); +char *__thiscall std::filebuf::open(char *this, wchar_t *a2, int a3); +char *__thiscall std::filebuf::open(char *this, char *a2, int a3); +int __thiscall std::filebuf::swap(int this, int a2); +int __fastcall std::filebuf::sync(_DWORD *a1); +int __fastcall std::filebuf::close(int a1); +char __thiscall std::filebuf::imbue(int this, int a2); +int __thiscall std::filebuf::setbuf(int this, __int64 a2); +int __thiscall std::filebuf::xsgetn(_DWORD *this, char *a2, signed int a3); +int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, int a3); +_DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5); +_DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5); +_DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6); +int __thiscall std::filebuf::overflow(int this, int a2); +int __thiscall std::filebuf::pbackfail(char *this, int a2); +int __fastcall std::filebuf::showmanyc(_DWORD *a1); +int __fastcall std::filebuf::underflow(int a1); +int __thiscall std::filebuf::basic_filebuf(int this, int a2); +void *__fastcall std::filebuf::basic_filebuf(int a1); +int __thiscall std::filebuf::basic_filebuf(int this, int a2); +void *__fastcall std::filebuf::basic_filebuf(int a1); +void __fastcall std::filebuf::~filebuf(_DWORD **a1); +void __fastcall std::filebuf::~filebuf(int a1); +void __fastcall std::filebuf::~filebuf(int a1); +int __thiscall std::filebuf::operator=(int this, int a2); +unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int a2); +int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int a2); +int __fastcall std::wfilebuf::_M_create_pback(int a1); +int __fastcall std::wfilebuf::_M_destroy_pback(int a1); +int __fastcall std::wfilebuf::_M_terminate_output(_DWORD *a1); +bool __thiscall std::wfilebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3); +void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1); +int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1); +int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1); +char *__thiscall std::wfilebuf::open(int this, char *a2, int a3); +char *__thiscall std::wfilebuf::open(char *this, int a2); +char *__thiscall std::wfilebuf::open(int this, wchar_t *a2, int a3); +char *__thiscall std::wfilebuf::open(void *this, char *a2, int a3); +int __thiscall std::wfilebuf::swap(int this, int a2); +int __fastcall std::wfilebuf::sync(_DWORD *a1); +int __fastcall std::wfilebuf::close(int a1); +char __thiscall std::wfilebuf::imbue(int this, int a2); +int __thiscall std::wfilebuf::setbuf(int this, __int64 a2); +int __thiscall std::wfilebuf::xsgetn(_DWORD *this, wchar_t *a2, signed int a3); +int __thiscall std::wfilebuf::xsputn(int this, wchar_t *a2, int a3); +_DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5); +_DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5); +_DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6); +int __thiscall std::wfilebuf::overflow(int this, int a2); +int __thiscall std::wfilebuf::pbackfail(char *this, int a2); +int __fastcall std::wfilebuf::showmanyc(_DWORD *a1); +int __fastcall std::wfilebuf::underflow(int a1); +int __thiscall std::wfilebuf::basic_filebuf(int this, int a2); +void *__fastcall std::wfilebuf::basic_filebuf(int a1); +int __thiscall std::wfilebuf::basic_filebuf(int this, int a2); +void *__fastcall std::wfilebuf::basic_filebuf(int a1); +void __fastcall std::wfilebuf::~wfilebuf(_DWORD **a1); +void __fastcall std::wfilebuf::~wfilebuf(int a1); +void __fastcall std::wfilebuf::~wfilebuf(int a1); +int __thiscall std::wfilebuf::operator=(int this, int a2); +int __thiscall std::fstream::open(char *this, char *a2, int a3); +int __thiscall std::fstream::open(char *this, wchar_t *a2, int a3); +int __thiscall std::fstream::open(char *this, char **a2, int a3); +int __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::fstream::close(_DWORD *a1); +bool __fastcall std::fstream::is_open(int a1); +int __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2); +int __thiscall std::fstream::basic_fstream(char *this, char *a2, int a3); +int __thiscall std::fstream::basic_fstream(char *this, wchar_t *a2, int a3); +int __thiscall std::fstream::basic_fstream(char *this, char **a2, int a3); +BOOL __fastcall std::fstream::basic_fstream(int a1); +int __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3); +int __thiscall std::fstream::basic_fstream(char *this, int *a2, char *a3, int a4); +int __thiscall std::fstream::basic_fstream(char *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::fstream::basic_fstream(char *this, int *a2, char **a3, int a4); +BOOL __thiscall std::fstream::basic_fstream(int *this, int *a2); +void __fastcall std::fstream::~fstream(_DWORD *a1); +void __fastcall std::fstream::~fstream(int a1); +int __thiscall std::fstream::~fstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wfstream::open(int *this, char *a2, int a3); +int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3); +int __thiscall std::wfstream::open(int *this, char **a2, int a3); +int __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::wfstream::close(_DWORD *a1); +bool __fastcall std::wfstream::is_open(int a1); +int __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2); +int __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3); +int __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3); +int __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3); +BOOL __fastcall std::wfstream::basic_fstream(int a1); +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3); +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4); +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4); +BOOL __thiscall std::wfstream::basic_fstream(int *this, int *a2); +void __fastcall std::wfstream::~wfstream(_DWORD *a1); +void __fastcall std::wfstream::~wfstream(int a1); +int __thiscall std::wfstream::~wfstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +int *__thiscall std::wistream::_M_extract(int *this, int a2); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3); +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2); +int __fastcall std::wistream::get(_DWORD *a1); +int __fastcall std::wistream::peek(_DWORD *a1); +_DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3); +int __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::wistream::sync(_DWORD *a1); +_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4); +_DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2); +int *__fastcall std::wistream::unget(int *a1); +_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2); +_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, wchar_t C); +_DWORD *__fastcall std::wistream::ignore(_DWORD *a1); +int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); +int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3); +_DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3); +_DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3, wchar_t C); +int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2); +int __thiscall std::wistream::readsome(_DWORD *this, int a2, int a3); +int __thiscall std::wistream::basic_istream(_DWORD *this, int *a2); +BOOL __thiscall std::wistream::basic_istream(_DWORD *this, int a2); +BOOL __fastcall std::wistream::basic_istream(int a1); +int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3); +BOOL __thiscall std::wistream::basic_istream(int *this, int *a2); +void __fastcall std::wistream::~wistream(char *a1); +void __fastcall std::wistream::~wistream(_DWORD *a1); +int __thiscall std::wistream::~wistream(int *this, int *a2); +_DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)); +char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)); +char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)); +_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2); +int *__thiscall std::wistream::operator>>(int *this, _DWORD *a2); +int *__thiscall std::wistream::operator>>(int *this, _WORD *a2); +int *__thiscall std::wostream::put(int *this, unsigned __int16 a2); +int __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2); +_DWORD *__fastcall std::wostream::flush(_DWORD *a1); +_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5); +_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4); +_DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2); +int *__thiscall std::wostream::write(int *this, int a2, int a3); +int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2); +int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2); +char __fastcall std::wostream::sentry::~sentry(int a1); +char __fastcall std::wostream::sentry::~sentry(int a1); +int __thiscall std::wostream::_M_write(_DWORD *this, int a2, int a3); +int *__thiscall std::wostream::_M_insert(int *this, int a2); +int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2); +int *__thiscall std::wostream::_M_insert(int *this, double a2); +int *__thiscall std::wostream::_M_insert(int *this, long double a2); +int *__thiscall std::wostream::_M_insert(int *this, int a2); +int *__thiscall std::wostream::_M_insert(int *this, int a2); +int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3); +int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3); +int __thiscall std::wostream::basic_ostream(_DWORD *this, int *a2); +BOOL __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); +int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2); +BOOL __fastcall std::wostream::basic_ostream(int a1); +int __thiscall std::wostream::basic_ostream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3); +int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3); +BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2); +void __fastcall std::wostream::~wostream(char *a1); +void __fastcall std::wostream::~wostream(_DWORD *a1); +int __thiscall std::wostream::~wostream(int *this, int *a2); +_DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)); +char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)); +char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)); +int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2); +int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2); +int *__thiscall std::wostream::operator<<(int *this, float a2); +int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2); +int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2); +// unsigned int __userpurge std::random_device::_M_init_pretr1@(unsigned int *a1@, const void **this, const std::string *a3); +// FILE *__userpurge std::random_device::_M_init@(FILE **a1@, const void **this, const std::string *a3); +int __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2); +// _DWORD *__userpurge std::runtime_error::runtime_error@(int a1@, std::runtime_error *this, const char *a3); +_DWORD *__thiscall std::runtime_error::runtime_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::runtime_error::runtime_error@(int a1@, unsigned int **this, const std::runtime_error *a3); +// unsigned int *__userpurge std::runtime_error::runtime_error@(int a1@, unsigned int **this, const std::string *a3); +void __fastcall std::runtime_error::~runtime_error(_DWORD *a1); +void __fastcall std::runtime_error::~runtime_error(_DWORD *a1); +int *__thiscall std::runtime_error::operator=(int *this, int a2); +unsigned int **__thiscall std::runtime_error::operator=(unsigned int **this, int a2); +int __thiscall std::ifstream::open(char *this, char *a2, int a3); +int __thiscall std::ifstream::open(char *this, wchar_t *a2, int a3); +int __thiscall std::ifstream::open(char *this, char **a2, int a3); +int __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::ifstream::close(_DWORD *a1); +bool __fastcall std::ifstream::is_open(int a1); +int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2); +int __thiscall std::ifstream::basic_ifstream(char *this, char *a2, int a3); +int __thiscall std::ifstream::basic_ifstream(char *this, wchar_t *a2, int a3); +int __thiscall std::ifstream::basic_ifstream(char *this, char **a2, int a3); +BOOL __fastcall std::ifstream::basic_ifstream(int a1); +int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3); +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char *a3, int a4); +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char **a3, int a4); +BOOL __thiscall std::ifstream::basic_ifstream(int *this, int *a2); +void __fastcall std::ifstream::~ifstream(_DWORD *a1); +void __fastcall std::ifstream::~ifstream(int a1); +int __thiscall std::ifstream::~ifstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wifstream::open(int *this, char *a2, int a3); +int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3); +int __thiscall std::wifstream::open(int *this, char **a2, int a3); +int __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::wifstream::close(_DWORD *a1); +bool __fastcall std::wifstream::is_open(int a1); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3); +BOOL __fastcall std::wifstream::basic_ifstream(int a1); +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3); +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4); +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4); +BOOL __thiscall std::wifstream::basic_ifstream(int *this, int *a2); +void __fastcall std::wifstream::~wifstream(_DWORD *a1); +void __fastcall std::wifstream::~wifstream(int a1); +int __thiscall std::wifstream::~wifstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2); +int __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2); +BOOL __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2); +BOOL __fastcall std::wiostream::basic_iostream(int a1); +int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3); +int __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3); +int __thiscall std::wiostream::basic_iostream(int *this, int *a2); +void __fastcall std::wiostream::~basic_iostream(char *a1); +void __fastcall std::wiostream::~basic_iostream(int a1); +int __thiscall std::wiostream::~basic_iostream(int *this, int *a2); +_DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::ofstream::open(char *this, char *a2, int a3); +int __thiscall std::ofstream::open(char *this, wchar_t *a2, int a3); +int __thiscall std::ofstream::open(char *this, char **a2, int a3); +int __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::ofstream::close(_DWORD *a1); +bool __fastcall std::ofstream::is_open(int a1); +int __thiscall std::ofstream::basic_ofstream(_DWORD *this, int *a2); +int __thiscall std::ofstream::basic_ofstream(char *this, char *a2, int a3); +int __thiscall std::ofstream::basic_ofstream(char *this, wchar_t *a2, int a3); +int __thiscall std::ofstream::basic_ofstream(char *this, char **a2, int a3); +BOOL __fastcall std::ofstream::basic_ofstream(int a1); +int __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char *a3, int a4); +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char **a3, int a4); +BOOL __thiscall std::ofstream::basic_ofstream(int *this, int *a2); +void __fastcall std::ofstream::~ofstream(_DWORD *a1); +void __fastcall std::ofstream::~ofstream(int a1); +int __thiscall std::ofstream::~ofstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2); +int __thiscall std::wofstream::open(int *this, char *a2, int a3); +int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3); +int __thiscall std::wofstream::open(int *this, char **a2, int a3); +int __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::wofstream::close(_DWORD *a1); +bool __fastcall std::wofstream::is_open(int a1); +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, int *a2); +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3); +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3); +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3); +BOOL __fastcall std::wofstream::basic_ofstream(int a1); +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3); +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4); +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4); +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4); +BOOL __thiscall std::wofstream::basic_ofstream(int *this, int *a2); +void __fastcall std::wofstream::~wofstream(_DWORD *a1); +void __fastcall std::wofstream::~wofstream(int a1); +int __thiscall std::wofstream::~wofstream(_DWORD *this, int *a2); +_DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1); +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +// _DWORD *__userpurge std::overflow_error::overflow_error@(_DWORD *a1@, std::overflow_error *this, const char *a3); +_DWORD *__thiscall std::overflow_error::overflow_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::overflow_error::overflow_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::overflow_error::~overflow_error(_DWORD *a1); +void __fastcall std::overflow_error::~overflow_error(_DWORD *a1); +void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1); +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1); +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1); +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1); +_DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); +int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2); +int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2); +int __thiscall std::streambuf::setg(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::streambuf::setp(_DWORD *this, int a2, int a3); +void __thiscall std::streambuf::swap(int this, int a2); +int std::streambuf::sync(); +int __thiscall std::streambuf::gbump(_DWORD *this, int a2); +int __stdcall std::streambuf::imbue(int); // weak +int __thiscall std::streambuf::pbump(_DWORD *this, int a2); +int __fastcall std::streambuf::sgetc(_DWORD *a1); +int __fastcall std::streambuf::sgetn(int a1); +int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8 a2); +int __fastcall std::streambuf::sputn(int a1); +int __fastcall std::streambuf::uflow(_DWORD *a1); +int __fastcall std::streambuf::sbumpc(_DWORD *a1); +int __fastcall std::streambuf::sbumpc(int a1); +void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3); +int __fastcall std::streambuf::snextc(_DWORD *a1); +int (*__fastcall std::streambuf::stossc(_DWORD *a1))(void); +int __thiscall std::streambuf::xsgetn(_DWORD *this, char *a2, int a3); +int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3); +int __fastcall std::streambuf::pubsync(int a1); +_DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); +int __fastcall std::streambuf::sungetc(_DWORD *a1); +int __fastcall std::streambuf::in_avail(_DWORD *a1); +int __stdcall std::streambuf::overflow(int a1); +volatile signed __int32 **__thiscall std::streambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); +int __stdcall std::streambuf::pbackfail(int a1); +int __thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3); +int std::streambuf::showmanyc(); +int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8 a2); +int std::streambuf::underflow(); +// volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); +int __fastcall std::streambuf::basic_streambuf(_DWORD *a1); +// volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); +int __fastcall std::streambuf::basic_streambuf(_DWORD *a1); +void __fastcall std::streambuf::~streambuf(char *a1); +void __fastcall std::streambuf::~streambuf(int a1); +void __fastcall std::streambuf::~streambuf(int a1); +volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int a2); +_DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); +int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2); +int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2); +int __thiscall std::wstreambuf::setg(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::wstreambuf::setp(_DWORD *this, int a2, int a3); +void __thiscall std::wstreambuf::swap(int this, int a2); +int std::wstreambuf::sync(); +int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2); +int __stdcall std::wstreambuf::imbue(int); // weak +int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2); +int __fastcall std::wstreambuf::sgetc(_DWORD *a1); +int __fastcall std::wstreambuf::sgetn(int a1); +int __thiscall std::wstreambuf::sputc(_DWORD *this, int a2); +int __fastcall std::wstreambuf::sputn(int a1); +int __fastcall std::wstreambuf::uflow(_DWORD *a1); +int __fastcall std::wstreambuf::sbumpc(_DWORD *a1); +int __fastcall std::wstreambuf::sbumpc(int a1); +void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3); +int __fastcall std::wstreambuf::snextc(_DWORD *a1); +int (*__fastcall std::wstreambuf::stossc(_DWORD *a1))(void); +int __thiscall std::wstreambuf::xsgetn(_DWORD *this, wchar_t *a2, int a3); +int __thiscall std::wstreambuf::xsputn(_DWORD *this, wchar_t *a2, int a3); +int __fastcall std::wstreambuf::pubsync(int a1); +_DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6); +_DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7); +int __fastcall std::wstreambuf::sungetc(_DWORD *a1); +int __fastcall std::wstreambuf::in_avail(_DWORD *a1); +int __stdcall std::wstreambuf::overflow(int a1); +volatile signed __int32 **__thiscall std::wstreambuf::pubimbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); +int __stdcall std::wstreambuf::pbackfail(int a1); +int __thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3); +int std::wstreambuf::showmanyc(); +int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2); +int std::wstreambuf::underflow(); +// volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); +int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); +// volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@(_DWORD *a1@, int a2, const std::locale *a3); +int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1); +void __fastcall std::wstreambuf::~wstreambuf(char *a1); +void __fastcall std::wstreambuf::~wstreambuf(int a1); +void __fastcall std::wstreambuf::~wstreambuf(int a1); +volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int a2); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1); +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_put_byname>::time_put_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1); +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1); +// _DWORD *__userpurge std::underflow_error::underflow_error@(_DWORD *a1@, std::underflow_error *this, const char *a3); +_DWORD *__thiscall std::underflow_error::underflow_error(_DWORD *this, int a2); +// unsigned int *__userpurge std::underflow_error::underflow_error@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::underflow_error::~underflow_error(_DWORD *a1); +void __fastcall std::underflow_error::~underflow_error(_DWORD *a1); +int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1); +void __thiscall std::__numpunct_cache::_M_cache(int this, int a2); +int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); +int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); +void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1); +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); +void __thiscall std::__numpunct_cache::_M_cache(int this, int a2); +BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2); +void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1); +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1); +// _DWORD *__userpurge std::invalid_argument::invalid_argument@(_DWORD *a1@, std::invalid_argument *this, const char *a3); +_DWORD *__thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2); +// unsigned int *__userpurge std::invalid_argument::invalid_argument@(_DWORD *a1@, unsigned int **this, const std::string *a3); +void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1); +void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1); +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); +void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1); +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2); +void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1); +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2); +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2); +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1); +void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1); +void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this); // idb +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1); +void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1); +void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1); +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1); +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1); +void __fastcall std::_V2::error_category::~error_category(void *a1); +void __cdecl std::_V2::error_category::~error_category(std::_V2::error_category *__hidden this); // idb +void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this); +void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this); +_DWORD *__thiscall std::map>::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); +char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2); +char *__thiscall std::map>::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::map>>::operator[](_DWORD *this, _DWORD *a2); +volatile signed __int32 *__thiscall std::pair>::pair,true>(int this, int a2); +int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, _BYTE *a4, int a5, int a6); +int __cdecl std::__pad>::_S_pad(wchar_t *S1, wchar_t *S2, wchar_t *a3, wchar_t *a4, int a5, int a6); +void **std::ctype::classic_table(); +int __thiscall std::ctype::ctype(_DWORD *this, void **a2, char a3, int a4); +int __thiscall std::ctype::ctype(_DWORD *this, int a2, void **a3, char a4, int a5); +void __fastcall std::ctype::~ctype(void *a1); +void __cdecl std::ctype::~ctype(std::locale::facet *a1); +wctype_t __fastcall std::ctype::_M_initialize_ctype(int a1); +wctype_t __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3); +wctype_t __thiscall std::ctype::ctype(_DWORD *this, int a2); +void __fastcall std::ctype::~ctype(_DWORD *a1); +void __cdecl std::ctype::~ctype(std::locale::facet *a1); +int __thiscall std::deque>::_M_push_back_aux const&>(int this, _DWORD *a2); +int __fastcall std::deque>::back(_DWORD *a1); +int __fastcall std::deque>::pop_back(_DWORD *a1); +volatile signed __int32 *__thiscall std::deque>::push_back(_DWORD *this, _DWORD *a2); +int __thiscall std::deque>::_M_push_back_aux const&>(int this, _DWORD *a2); +int __fastcall std::deque>::pop_back(_DWORD *a1); +volatile signed __int32 *__thiscall std::deque>::push_back(_DWORD *this, _DWORD *a2); +_DWORD __stdcall std::deque::_M_push_back_aux(_DWORD); // weak +_BYTE *__thiscall std::deque::push_back(_DWORD *this, int a2); +int std::locale::_S_initialize(); +void std::locale::_S_initialize_once(void); // idb +std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this); +// int __userpurge std::locale::_Impl::_M_init_extra@(int a1@, std::locale::_Impl *this, std::locale::facet **a3); +// int __userpurge std::locale::_Impl::_M_init_extra@(int a1@, std::locale::_Impl *this, int *a3, int **a4, const char *a5, const char *a6); +// void __userpurge std::locale::_Impl::_M_install_cache(int a1@, std::locale::_Impl *this, const std::locale::facet *a3, unsigned int a4); +// const std::locale::id *__userpurge std::locale::_Impl::_M_install_facet@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::id *a3, const std::locale::facet *a4); +// const std::locale::id *__userpurge std::locale::_Impl::_M_replace_facet@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, const std::locale::id *a4); +// const std::locale::_Impl *__userpurge std::locale::_Impl::_M_replace_category@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl **a3, const std::locale::id *const *a4); +// void *__userpurge std::locale::_Impl::_Impl@(_DWORD *a1@, std::locale::_Impl *this, const std::locale::_Impl *a3, unsigned int a4); +// int __userpurge std::locale::_Impl::_Impl@(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3); +void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1); +int *const *std::locale::facet::_S_get_c_name(); +int std::locale::facet::_S_get_c_locale(); +int __cdecl std::locale::facet::_S_clone_c_locale(); +int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **a2); +void std::locale::facet::_S_initialize_once(void); // idb +std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this); +int __cdecl std::locale::facet::_S_lc_ctype_c_locale(); +void __fastcall std::locale::facet::~facet(void *a1); +void __cdecl std::locale::facet::~facet(std::locale::facet *__hidden this); // idb +std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2); +_DWORD *std::locale::classic(); +// std::locale *__userpurge std::locale::locale@(_DWORD *a1@, std::locale *this, std::locale::_Impl *a3); +// volatile signed __int32 *__userpurge std::locale::locale@(volatile signed __int32 **a1@, volatile signed __int32 **this, const std::locale *a3); +int __fastcall std::locale::locale(_DWORD *a1); +void __fastcall std::locale::~locale(_DWORD **a1); +volatile signed __int32 **__thiscall std::locale::operator=(volatile signed __int32 **this, volatile signed __int32 **a2); +char *__thiscall std::vector>::_M_realloc_insert const&>(char **this, char *a2, _DWORD *a3); +char *__thiscall std::vector>::push_back(char **this, _DWORD *a2); +char *__thiscall std::vector>::_M_realloc_insert const&>(char **this, char *a2, _DWORD *a3); +char *__thiscall std::vector>::push_back(int this, _DWORD *a2); +volatile signed __int32 *__thiscall std::vector>::vector(volatile signed __int32 **this, volatile signed __int32 **a2); +char *__thiscall std::vector>::_M_realloc_insert const&>(char **this, char *a2, _DWORD *a3); +char *__thiscall std::vector>::push_back(char **this, _DWORD *a2); +int __thiscall std::vector::_M_realloc_insert(void ***this, char *a2, volatile signed __int32 **a3); +volatile signed __int32 *__thiscall std::vector::push_back(int this, volatile signed __int32 **a2); +char **__thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3); +char **__thiscall std::vector::push_back(char **this, WXSS::Token *a2); +void __thiscall std::vector::emplace_back(void ***this, _DWORD *a2); +_DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); // weak +_BYTE *__thiscall std::vector::push_back(_DWORD *this, int a2); +_DWORD *__thiscall std::vector>::emplace_back>(char **this, _DWORD *a2); +int __thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); +char **__thiscall std::vector>>::emplace_back>>(int this, _DWORD *a2); +char **__thiscall std::vector>>::_M_realloc_insert>>(char **this, char *a2, _DWORD *a3); +int __thiscall std::vector>::_M_realloc_insert>(char **this, char *a2, _DWORD *a3); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2); +void __fastcall std::moneypunct::~moneypunct(void *a1); +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1); +void __thiscall std::string::_M_destroy(void **this, int a2); +void __fastcall std::string::_M_dispose(void **a1); +unsigned int *__thiscall std::string::_M_replace(unsigned int *this, size_t a2, size_t a3, char *Src, size_t a5); +int __cdecl std::string::_S_compare(int a1, int a2); +int __thiscall std::string::_M_capacity(_DWORD *this, int a2); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +_BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t a2, char a3); +_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int a3, int a4); +_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>(_DWORD *this, _BYTE *Src, int a3, int a4); +unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *a2, size_t Size, int a4); +_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4); +int __fastcall std::string::_M_local_data(int a1); +int __thiscall std::string::_M_set_length(int *this, int a2); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size); +void __fastcall std::string::shrink_to_fit(_DWORD *a1); +_DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t a2, int a3, size_t a4, char a5); +int __fastcall std::string::_M_get_allocator(int a1); +_BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t a2, char a3); +unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2); +int __fastcall std::string::end(_DWORD *a1); +int __fastcall std::string::back(_DWORD *a1); +_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2); +_BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *a2); +int __fastcall std::string::begin(int a1); +_BYTE *__fastcall std::string::clear(int a1); +int __thiscall std::string::erase(int *this, int a2); +int __thiscall std::string::erase(int *this, _BYTE *a2, int a3); +int __thiscall std::string::erase(int *this, int a2); +int __thiscall std::string::erase(int *this, _BYTE *a2, int a3); +int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3); +int __fastcall std::string::front(int a1); +_DWORD *__thiscall std::string::append(_DWORD *this, char *Str); +_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3); +_DWORD *__thiscall std::string::append(_DWORD *this, int a2); +_DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, size_t a4); +_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3); +_DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3); +_DWORD *__thiscall std::string::assign(_DWORD *this, int a2); +unsigned int *__thiscall std::string::assign(unsigned int *this, char *Str); +unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3); +void *__thiscall std::string::assign(void *this, int a2); +unsigned int *__thiscall std::string::assign(unsigned int *this, _DWORD *a2, unsigned int a3, size_t a4); +unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3); +_DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3); +size_t __thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4); +size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3); +size_t __thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4); +unsigned int *__thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4); +size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3); +_DWORD *__thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4); +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *Str); +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *a3, size_t a4); +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, int a3); +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, _DWORD *a3, char *a4, size_t a5); +_DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int a2, size_t a3, char a4); +unsigned int *__thiscall std::string::insert<__gnu_cxx::__normal_iterator>(unsigned int *this, int a2, char *a3, int a4); +_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2); +_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2, char a3); +int __thiscall std::string::_M_data(_DWORD *this, int a2); +size_t __cdecl std::string::_S_copy(void *a1, const void *Src, size_t Size); +size_t __cdecl std::string::_S_move(void *a1, const void *Src, size_t Size); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5); +_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *Str); +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *a4, size_t a5); +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, size_t a3, int a4); +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +_DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5); +void __thiscall std::string::reserve(_DWORD *this, unsigned int a2); +int __thiscall std::string::_M_erase(int *this, int a2, int a3); +int __fastcall std::string::pop_back(int *a1); +_DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size); +void __thiscall std::string::_M_assign(int this, int a2); +void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2); +int __thiscall std::string::_M_length(_DWORD *this, int a2); +size_t __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5); +void *__cdecl std::string::_S_assign(_BYTE *a1, void *Val, size_t Size); +_DWORD *__thiscall std::string::push_back(_DWORD *this, char a2); +_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); +unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); +char *__thiscall std::string::basic_string(_DWORD *this, int a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4); +int __fastcall std::string::basic_string(int a1); +_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _BYTE *a2, int a3, int a4); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, size_t a3, int a4); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); +_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); +unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); +char *__thiscall std::string::basic_string(_DWORD *this, int a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4); +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4); +int __fastcall std::string::basic_string(int a1); +_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>(_DWORD *this, _BYTE *a2, int a3, int a4); +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, size_t a3, int a4); +_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4); +void __fastcall std::string::~string(void **a1); +void __fastcall std::string::~string(void **a1); +_DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *a2); +unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str); +void *__thiscall std::string::operator=(void *this, int a2); +unsigned int *__thiscall std::string::operator=(unsigned int *this, char *a2, size_t a3); +_DWORD *__thiscall std::string::operator=(_DWORD *this, char a2); +int __thiscall std::string::operator[](_DWORD *this, int a2); +_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str); +_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2); +_DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *a2, size_t a3); +_DWORD *__thiscall std::string::operator+=(_DWORD *this, char a2); +void __thiscall std::wstring::_M_destroy(void **this, int a2); +void __fastcall std::wstring::_M_dispose(void **a1); +int __thiscall std::wstring::_M_replace(int this, size_t a2, size_t a3, wchar_t *a4, size_t a5); +int __cdecl std::wstring::_S_compare(int a1, int a2); +int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3); +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, size_t a2, wchar_t a3); +wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *S2, int a3, int a4); +wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(wchar_t **this, wchar_t *S2, int a3, int a4); +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4); +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4); +int __fastcall std::wstring::_M_local_data(int a1); +int __thiscall std::wstring::_M_set_length(int *this, int a2); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N); +void __fastcall std::wstring::shrink_to_fit(_DWORD *a1); +int __thiscall std::wstring::_M_replace_aux(int this, size_t a2, int a3, size_t a4, wchar_t a5); +int __fastcall std::wstring::_M_get_allocator(int a1); +wchar_t *__thiscall std::wstring::_M_construct_aux_2(wchar_t **this, size_t a2, wchar_t a3); +int __thiscall std::wstring::at(_DWORD *this, unsigned int a2); +int __fastcall std::wstring::end(_DWORD *a1); +int __fastcall std::wstring::back(_DWORD *a1); +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2); +void __thiscall std::wstring::swap(wchar_t **this, int a2); +int __fastcall std::wstring::begin(int a1); +_WORD *__fastcall std::wstring::clear(int a1); +int __thiscall std::wstring::erase(int *this, int a2); +_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3); +int __thiscall std::wstring::erase(int *this, int a2); +_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3); +int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3); +int __fastcall std::wstring::front(int a1); +int __thiscall std::wstring::append(_DWORD *this, wchar_t *String); +int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3); +int __thiscall std::wstring::append(void *this, int a2); +int __thiscall std::wstring::append(void *this, _DWORD *a2, unsigned int a3, size_t a4); +int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3); +int __thiscall std::wstring::append(size_t *this, size_t a2, __int16 a3); +wchar_t **__thiscall std::wstring::assign(wchar_t **this, int a2); +int __thiscall std::wstring::assign(size_t *this, wchar_t *String); +int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3); +void *__thiscall std::wstring::assign(void *this, int a2); +int __thiscall std::wstring::assign(size_t *this, _DWORD *a2, unsigned int a3, size_t a4); +int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3); +int __thiscall std::wstring::assign(int *this, size_t a2, __int16 a3); +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, int a4); +int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4); +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3); +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, size_t a4); +int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4); +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *String); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *a3, size_t a4); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, int a3); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, _DWORD *a3, unsigned int a4, size_t a5); +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, size_t a3, __int16 a4); +int __thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>(_DWORD *this, int a2, wchar_t *a3, int a4); +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2); +int __thiscall std::wstring::resize(int *this, unsigned int a2); +int __thiscall std::wstring::resize(int *this, unsigned int a2, wchar_t a3); +int __thiscall std::wstring::_M_data(_DWORD *this, int a2); +size_t __cdecl std::wstring::_S_copy(wchar_t *S1, const wchar_t *S2, size_t N); +size_t __cdecl std::wstring::_S_move(wchar_t *S1, const wchar_t *S2, size_t N); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t a5); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, int a4); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6); +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5); +void __thiscall std::wstring::reserve(int this, unsigned int a2); +int __thiscall std::wstring::_M_erase(int *this, int a2, int a3); +int __fastcall std::wstring::pop_back(int *a1); +int __thiscall std::wstring::_M_append(int this, wchar_t *S2, size_t N); +void __thiscall std::wstring::_M_assign(int this, int a2); +void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2); +int __thiscall std::wstring::_M_length(_DWORD *this, int a2); +const wchar_t *__thiscall std::wstring::_M_mutate(const wchar_t **this, size_t N, int a3, wchar_t *a4, size_t a5); +wchar_t *__cdecl std::wstring::_S_assign(wchar_t *a1, size_t C, size_t N); +const wchar_t *__thiscall std::wstring::push_back(int this, wchar_t a2); +int __thiscall std::wstring::basic_string(wchar_t *this, int a2); +_WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +int __thiscall std::wstring::basic_string(_DWORD *this, int a2); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4); +int __fastcall std::wstring::basic_string(int a1); +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +int __thiscall std::wstring::basic_string(wchar_t *this, int a2); +_WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +int __thiscall std::wstring::basic_string(_DWORD *this, int a2); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4); +int __fastcall std::wstring::basic_string(int a1); +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4); +void __fastcall std::wstring::~wstring(void **a1); +void __fastcall std::wstring::~wstring(void **a1); +wchar_t **__thiscall std::wstring::operator=(wchar_t **this, int a2); +int __thiscall std::wstring::operator=(size_t *this, wchar_t *String); +void *__thiscall std::wstring::operator=(void *this, int a2); +size_t *__thiscall std::wstring::operator=(size_t *this, wchar_t *a2, size_t a3); +int *__thiscall std::wstring::operator=(int *this, wchar_t a2); +int __thiscall std::wstring::operator[](_DWORD *this, int a2); +int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String); +int __thiscall std::wstring::operator+=(void *this, int a2); +int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *a2, size_t a3); +_DWORD *__thiscall std::wstring::operator+=(char *this, __int16 a2); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3); +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3); +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1); +unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); +unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); +int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); +int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); +unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1); +int __thiscall std::stringbuf::_M_stringbuf_init(int this, int a2); +int __thiscall std::stringbuf::str(int this, int a2); +int __thiscall std::stringbuf::swap(_DWORD *this, int a2); +_DWORD *__thiscall std::stringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3); +int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); +unsigned int *__thiscall std::stringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5); +_DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6); +int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4); +int __thiscall std::stringbuf::overflow(int this, int a2); +int __thiscall std::stringbuf::pbackfail(int this, int a2); +int __fastcall std::stringbuf::showmanyc(int a1); +int __fastcall std::stringbuf::underflow(int a1); +int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3); +int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3); +char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2); +int __fastcall std::stringbuf::basic_stringbuf(int a1); +int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2); +_DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3); +int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3); +char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2); +int __fastcall std::stringbuf::basic_stringbuf(int a1); +void __fastcall std::stringbuf::~stringbuf(_DWORD *a1); +void __fastcall std::stringbuf::~stringbuf(int a1); +int __thiscall std::stringbuf::operator=(int this, int a2); +unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); +unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3); +int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); +int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1); +unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1); +int __thiscall std::wstringbuf::_M_stringbuf_init(int this, int a2); +int __thiscall std::wstringbuf::str(int this, int a2); +int __thiscall std::wstringbuf::swap(_DWORD *this, int a2); +_DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3); +int __thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4); +unsigned int *__thiscall std::wstringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5); +_DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6); +int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4); +int __thiscall std::wstringbuf::overflow(int this, int a2); +int __thiscall std::wstringbuf::pbackfail(int this, int a2); +int __fastcall std::wstringbuf::showmanyc(int a1); +int __fastcall std::wstringbuf::underflow(int a1); +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2); +int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3); +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3); +int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2); +int __fastcall std::wstringbuf::basic_stringbuf(int a1); +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2); +int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3); +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3); +int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2); +int __fastcall std::wstringbuf::basic_stringbuf(int a1); +void __fastcall std::wstringbuf::~wstringbuf(_DWORD *a1); +void __fastcall std::wstringbuf::~wstringbuf(int a1); +int __thiscall std::wstringbuf::operator=(int this, int a2); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3); +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +BOOL __thiscall std::time_get_byname>::time_get_byname(_DWORD *this, int a2, int a3); +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3); +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3); +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1); +int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); +int __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, _DWORD *a2); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int a2, int a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); +BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); +int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); +char *__thiscall std::basic_stringstream,std::allocator>::operator=(char *this, int a2); +int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2); +int __thiscall std::basic_stringstream,std::allocator>::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int a2, int a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(_DWORD *this, int a2); +BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1); +int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2, _DWORD *a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2, int a3); +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream(int *this, int *a2); +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream(char *this, int *a2); +char *__thiscall std::basic_stringstream,std::allocator>::operator=(char *this, int a2); +int __thiscall std::istringstream::str(int this, int a2); +int __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2); +BOOL __thiscall std::istringstream::basic_istringstream(char *this, int a2, int a3); +BOOL __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2); +BOOL __fastcall std::istringstream::basic_istringstream(int a1); +int __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::istringstream::basic_istringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3); +BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2); +void __fastcall std::istringstream::~istringstream(_DWORD *a1); +void __fastcall std::istringstream::~istringstream(int a1); +int __thiscall std::istringstream::~istringstream(int *this, int *a2); +char *__thiscall std::istringstream::operator=(char *this, int a2); +int __thiscall std::wistringstream::str(int this, int a2); +int __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::wistringstream::basic_istringstream(char *this, int *a2); +BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int a2, int a3); +BOOL __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2); +BOOL __fastcall std::wistringstream::basic_istringstream(int a1); +int __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3); +BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3); +BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2); +void __fastcall std::wistringstream::~wistringstream(_DWORD *a1); +void __fastcall std::wistringstream::~wistringstream(int a1); +int __thiscall std::wistringstream::~wistringstream(int *this, int *a2); +char *__thiscall std::wistringstream::operator=(char *this, int a2); +int __thiscall std::ostringstream::str(int this, int a2); +int __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2); +BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int a2, int a3); +BOOL __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2); +BOOL __fastcall std::ostringstream::basic_ostringstream(int a1); +int __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3); +BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3); +BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2); +void __fastcall std::ostringstream::~ostringstream(_DWORD *a1); +void __fastcall std::ostringstream::~ostringstream(int a1); +int __thiscall std::ostringstream::~ostringstream(int *this, int *a2); +volatile signed __int32 **__thiscall std::ostringstream::operator=(volatile signed __int32 **this, int a2); +int __thiscall std::wostringstream::str(int this, int a2); +int __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2); +char *__thiscall std::wostringstream::basic_ostringstream(char *this, int *a2); +BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int a2, int a3); +BOOL __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2); +BOOL __fastcall std::wostringstream::basic_ostringstream(int a1); +int __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3); +BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4); +BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3); +BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2); +void __fastcall std::wostringstream::~wostringstream(_DWORD *a1); +void __fastcall std::wostringstream::~wostringstream(int a1); +int __thiscall std::wostringstream::~wostringstream(int *this, int *a2); +char *__thiscall std::wostringstream::operator=(char *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +void __fastcall std::collate::~collate(_DWORD *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +void __fastcall std::collate::~collate(_DWORD *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +void __fastcall std::messages::~messages(_DWORD *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +void __fastcall std::messages::~messages(_DWORD *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); +void __fastcall std::numpunct::~numpunct(void *a1); +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); +int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); +void __fastcall std::numpunct::~numpunct(void *a1); +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +void __fastcall std::time_get>::~time_get(_DWORD *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +void __fastcall std::time_get>::~time_get(_DWORD *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +void __fastcall std::money_get>::~money_get(_DWORD *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +void __fastcall std::money_get>::~money_get(_DWORD *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +void __fastcall std::money_put>::~money_put(_DWORD *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +void __fastcall std::money_put>::~money_put(_DWORD *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __fastcall std::codecvt::~codecvt(_DWORD *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +void __fastcall std::codecvt::~codecvt(_DWORD *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +void __fastcall std::codecvt::~codecvt(_DWORD *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +void __fastcall std::codecvt::~codecvt(_DWORD *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); +int __thiscall std::codecvt::codecvt(_DWORD *this, int a2); +void __fastcall std::codecvt::~codecvt(void *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3); +int __thiscall std::codecvt::codecvt(_DWORD *this, int a2); +void __fastcall std::codecvt::~codecvt(void *a1); +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +void __fastcall std::collate::~collate(_DWORD *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3); +int __thiscall std::collate::collate(_DWORD *this, int a2); +void __fastcall std::collate::~collate(_DWORD *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +void __cdecl std::collate::~collate(std::locale::facet *a1); +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); +void __fastcall std::num_get>::~num_get(_DWORD *a1); +void __cdecl std::num_get>::~num_get(std::locale::facet *a1); +void __cdecl std::num_get>::~num_get(std::locale::facet *a1); +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2); +void __fastcall std::num_get>::~num_get(_DWORD *a1); +void __cdecl std::num_get>::~num_get(std::locale::facet *a1); +void __cdecl std::num_get>::~num_get(std::locale::facet *a1); +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); +void __fastcall std::num_put>::~num_put(_DWORD *a1); +void __cdecl std::num_put>::~num_put(std::locale::facet *a1); +void __cdecl std::num_put>::~num_put(std::locale::facet *a1); +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2); +void __fastcall std::num_put>::~num_put(_DWORD *a1); +void __cdecl std::num_put>::~num_put(std::locale::facet *a1); +void __cdecl std::num_put>::~num_put(std::locale::facet *a1); +_DWORD *__thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique(_DWORD *this, int a2); +void __stdcall std::_Rb_tree,std::less,std::allocator>::_M_erase(void **a1); +_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find(_DWORD *this, int a2); +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void *a1); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4); +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>(_DWORD *this, _DWORD *a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(void *a1); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos(_DWORD *this, int a2); +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int a3); +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(void **a1); +int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos(_DWORD *this, _DWORD *a2); +int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos(_DWORD *this, _DWORD *a2, int *a3); +void __stdcall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(void *a1); +void __fastcall std::bad_cast::~bad_cast(_DWORD *a1); +void __cdecl std::bad_cast::~bad_cast(std::exception *a1); +// int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, int this, char a3, bool a4); +int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this); +int __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2); +_DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3); +void __fastcall std::ios_base::_M_dispose_callbacks(int a1); +int std::ios_base::Init::Init(); +void __cdecl std::ios_base::Init::~Init(); +volatile signed __int32 **__thiscall std::ios_base::imbue(volatile signed __int32 **ecx0, volatile signed __int32 **this, volatile signed __int32 **a3); +int std::ios_base::xalloc(); +void __fastcall std::ios_base::_M_init(int a1); +// volatile signed __int32 **__userpurge std::ios_base::_M_move@(int a1@, std::ios_base *this, std::ios_base *a3); +// void __userpurge std::ios_base::_M_swap(int a1@, std::ios_base *this, std::ios_base *a3); +int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *Str, int *a3); +void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2); +int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3); +void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1); +void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1); +// unsigned int *__userpurge std::ios_base::failure::failure@(int a1@, unsigned int **this, const std::string *a3); +void __fastcall std::ios_base::failure::~failure(_DWORD *a1); +void __fastcall std::ios_base::failure::~failure(_DWORD *a1); +int __fastcall std::ios_base::ios_base(_DWORD *a1); +void __fastcall std::ios_base::~ios_base(void *a1); +void __fastcall std::ios_base::~ios_base(int a1); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +void __fastcall std::messages::~messages(_DWORD *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4); +int __thiscall std::messages::messages(_DWORD *this, int a2); +void __fastcall std::messages::~messages(_DWORD *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +void __cdecl std::messages::~messages(std::locale::facet *a1); +_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2); +void __fastcall std::numpunct::~numpunct(void *a1); +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); +int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3); +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2); +void __fastcall std::numpunct::~numpunct(void *a1); +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +void __fastcall std::time_get>::~time_get(_DWORD *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2); +void __fastcall std::time_get>::~time_get(_DWORD *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +void __cdecl std::time_get>::~time_get(std::locale::facet *a1); +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); +void __fastcall std::time_put>::~time_put(_DWORD *a1); +void __cdecl std::time_put>::~time_put(std::locale::facet *a1); +void __cdecl std::time_put>::~time_put(std::locale::facet *a1); +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2); +void __fastcall std::time_put>::~time_put(_DWORD *a1); +void __cdecl std::time_put>::~time_put(std::locale::facet *a1); +void __cdecl std::time_put>::~time_put(std::locale::facet *a1); +void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1); +void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1); +int __thiscall std::ios::exceptions(_DWORD *this, int a2); +int __thiscall std::ios::_M_setstate(_DWORD *this, int a2); +void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int a2); +int __thiscall std::ios::tie(_DWORD *this, int a2); +int __thiscall std::ios::fill(int this, char a2); +BOOL __thiscall std::ios::init(int this, int a2); +int __thiscall std::ios::move(int this, std::ios_base *a2); +int __thiscall std::ios::move(int this, std::ios_base *a2); +int __thiscall std::ios::swap(int this, std::ios_base *a2); +int __thiscall std::ios::clear(_DWORD *this, int a2); +volatile signed __int32 **__thiscall std::ios::imbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); +int __thiscall std::ios::rdbuf(_DWORD *this, int a2); +int __thiscall std::ios::copyfmt(int this, _DWORD *a2); +int __thiscall std::ios::setstate(_DWORD *this, int a2); +int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2); +BOOL __thiscall std::ios::basic_ios(int this, int a2); +int __fastcall std::ios::basic_ios(int a1); +BOOL __thiscall std::ios::basic_ios(int this, int a2); +int __fastcall std::ios::basic_ios(int a1); +void __fastcall std::ios::~ios(_DWORD *a1); +void __fastcall std::ios::~ios(int a1); +void __fastcall std::ios::~ios(int a1); +int __thiscall std::wios::exceptions(_DWORD *this, int a2); +int __thiscall std::wios::_M_setstate(_DWORD *this, int a2); +void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int a2); +int __thiscall std::wios::tie(_DWORD *this, int a2); +int __thiscall std::wios::fill(int this, __int16 a2); +BOOL __thiscall std::wios::init(int this, int a2); +int __thiscall std::wios::move(int this, std::ios_base *a2); +int __thiscall std::wios::move(int this, std::ios_base *a2); +int __thiscall std::wios::swap(int this, std::ios_base *a2); +int __thiscall std::wios::clear(_DWORD *this, int a2); +volatile signed __int32 **__thiscall std::wios::imbue(volatile signed __int32 **this, volatile signed __int32 **a2, volatile signed __int32 **a3); +int __thiscall std::wios::rdbuf(_DWORD *this, int a2); +int __thiscall std::wios::copyfmt(int this, _DWORD *a2); +int __thiscall std::wios::setstate(_DWORD *this, int a2); +int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2); +BOOL __thiscall std::wios::basic_ios(int this, int a2); +int __fastcall std::wios::basic_ios(int a1); +BOOL __thiscall std::wios::basic_ios(int this, int a2); +int __fastcall std::wios::basic_ios(int a1); +void __fastcall std::wios::~wios(_DWORD *a1); +void __fastcall std::wios::~wios(int a1); +void __fastcall std::wios::~wios(int a1); +void __fastcall std::exception::~exception(void *a1); +void __cdecl std::exception::~exception(std::exception *__hidden this); // idb +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +void __fastcall std::money_get>::~money_get(_DWORD *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2); +void __fastcall std::money_get>::~money_get(_DWORD *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +void __cdecl std::money_get>::~money_get(std::locale::facet *a1); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +void __fastcall std::money_put>::~money_put(_DWORD *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2); +void __fastcall std::money_put>::~money_put(_DWORD *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __cdecl std::money_put>::~money_put(std::locale::facet *a1); +void __fastcall std::type_info::~type_info(void *a1); +void __cdecl std::type_info::~type_info(std::type_info *__hidden this); // idb +void __noreturn std::unexpected(void); // idb +int __cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5); +int __cdecl std::__int_to_char(_BYTE *a1, UDItype n, int a3, __int16 a4, char a5); +int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, int a3, __int16 a4, char a5); +int __cdecl std::__int_to_char(_WORD *a1, UDItype n, int a3, __int16 a4, char a5); +void (*std::get_terminate(void))(void); +__int32 __cdecl std::set_terminate(void (*a1)(void)); +_BYTE *__cdecl std::__add_grouping(_BYTE *a1, char a2, char *a3, int a4, _BYTE *a5, _BYTE *a6); +_WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, _WORD *a5, _WORD *a6); +void __cdecl std::__convert_to_v(char *String, double *a2, _DWORD *a3); +void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3); +void __cdecl std::__convert_to_v(char *String, float *a2, _DWORD *a3); +void (*std::get_unexpected(void))(void); +__int32 __cdecl std::set_unexpected(void (*a1)(void)); +int std::get_new_handler(void); +__int32 __cdecl std::set_new_handler(void (*a1)(void)); +int std::__convert_from_v(int *const *a1, char *Buffer, size_t BufferCount, char *Format, ...); +std::ostream::sentry *__cdecl std::__ostream_insert>(std::ostream::sentry *a1, int a2, int a3); +int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3); +int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2); +int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2); +int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3); // idb +int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3); +void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden this); +int __cdecl std::_Rb_tree_decrement(_DWORD *a1); +int __cdecl std::_Rb_tree_decrement(_DWORD *a1); +int __cdecl std::_Rb_tree_increment(_DWORD); // weak +int __cdecl std::_Rb_tree_increment(int a1); +bool std::uncaught_exception(void); +int std::uncaught_exceptions(void); +int __cdecl std::_Rb_tree_black_count(_DWORD *a1, _DWORD *a2); +int __cdecl std::_Rb_tree_rotate_left(int a1, _DWORD *a2); +int __cdecl std::_Rb_tree_rotate_right(int a1, _DWORD *a2); +int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3); +int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3); +int __cdecl std::__destroy_ios_failure(int (__fastcall ***a1)(_DWORD)); +int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4); +void __cdecl std::__construct_ios_failure(void *a1, char *a2); +bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *a1); +void __noreturn std::__throw_out_of_range_fmt(char *Str, ...); +int *__cdecl std::_Rb_tree_rebalance_for_erase(int *a1, _DWORD *a2); +_DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4); +_DWORD *__cdecl std::ws>(_DWORD *a1); +_DWORD *__cdecl std::ws>(_DWORD *a1); +std::ios_base *__cdecl std::hex(std::ios_base *a1); +_DWORD *__cdecl std::endl>(std::ostream::sentry *a1); +_DWORD *__cdecl std::endl>(int *a1); +std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1); +int *__cdecl std::ends>(int *a1); +_DWORD *__cdecl std::flush>(_DWORD *a1); +_DWORD *__cdecl std::flush>(_DWORD *a1); +std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *a1, _DWORD *a2); +std::istream::sentry *__cdecl std::getline,std::allocator>(std::istream::sentry *a1, _DWORD *a2, unsigned __int8 a3); +_DWORD *__cdecl std::getline,std::allocator>(_DWORD *a1, int a2, wchar_t a3); +int __cdecl std::setfill(unsigned __int8 a1); +int __cdecl std::setfill(unsigned __int16 a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +int __cdecl std::has_facet>>(int a1); +void __noreturn std::terminate(void); // idb +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +void *__cdecl std::use_facet>>(int a1); +// int __usercall std::local_Rb_tree_decrement@(_DWORD *a1@); +bool __cdecl std::operator==(int a1, int a2); +bool __cdecl std::operator==(int a1, char *a2); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, char a2); +std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2); +int *__cdecl std::operator<<>(int *a1, wchar_t *String); +int *__cdecl std::operator<<>(int *a1, char *Str); +int *__cdecl std::operator<<>(int *a1, __int16 a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator<<>(_DWORD *a1, __int16 a2); +int *__cdecl std::operator<<>(int *a1, char a2); +unsigned int __cdecl std::operator<(int a1, int a2); +int __cdecl std::operator+(int a1, char *a2, int a3); +_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3); +int __cdecl std::operator+(int a1, char a2, int a3); +unsigned int **__cdecl std::operator+(unsigned int **a1, char *Str, std::string *a3); +unsigned int **__cdecl std::operator+(unsigned int **a1, unsigned int **a2, std::string *a3); +unsigned int **__cdecl std::operator+(unsigned int **a1, char a2, std::string *a3); +int __cdecl std::operator+(int a1, wchar_t *String, int a3); // idb +wchar_t **__cdecl std::operator+(wchar_t **a1, int a2, int a3); +int __cdecl std::operator+(int a1, wchar_t a2, int a3); +void **__cdecl std::operator+(void **a1, wchar_t *String, const wchar_t **a3); +void **__cdecl std::operator+(void **a1, _DWORD *a2, const wchar_t **a3); +void **__cdecl std::operator+(void **a1, wchar_t a2, const wchar_t **a3); +std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2); +std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, char a2); +std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2); +int *__cdecl std::operator>>>(int *a1, _WORD *a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2); +_DWORD *__cdecl std::operator>>>(_DWORD *a1, __int16 a2); +void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1); +void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1); +void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1); +void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1); +void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1); +void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1); +void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1); +void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(int a1); +void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1); +void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1); +void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1); +int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1); +int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1); +void __cdecl operator delete[](void *); // idb +void __cdecl operator delete(void *); // idb +void __cdecl operator delete(void *, unsigned int); // idb +_DWORD __cdecl operator new[](unsigned int); // idb +int __cdecl operator new[](unsigned int a1); +void *__cdecl operator new(struct type_info *a1, void (__cdecl *a2)(void *)); +unsigned int *__cxa_allocate_dependent_exception(); +void *__cdecl __cxa_allocate_exception(size_t thrown_size); +void *__cdecl __cxa_begin_catch(void *); +void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *); +void __cdecl __noreturn __cxa_call_unexpected(void *); +struct type_info *__cxa_current_exception_type(void); +void __noreturn __cxa_deleted_virtual(void); +void __cxa_end_catch(void); +_DWORD *__cdecl __cxa_free_dependent_exception(unsigned int a1); +void __cdecl __cxa_free_exception(void *); +void *__cdecl __cxa_get_exception_ptr(void *); +_DWORD *__cxa_get_globals(); +void *__cxa_get_globals_fast(); +void __cdecl __cxa_guard_abort(__guard *); +int __cdecl __cxa_guard_acquire(__guard *); +void __cdecl __cxa_guard_release(__guard *); +int __cdecl __cxa_init_primary_exception(int a1, int a2, int a3); +void __noreturn __cxa_pure_virtual(void); +void __noreturn __cxa_rethrow(void); +void __cdecl __noreturn __cxa_throw(void *, struct type_info *lptinfo, void (__cdecl *)(void *)); +void *__cdecl __dynamic_cast(const void *lpsrc, const struct __class_type_info *lpstype, const struct __class_type_info *lpdtype, ptrdiff_t s2d); +int __cdecl __gxx_personality_v0(int a1, int a2, __int64 a3, _Unwind_Exception *a4, _Unwind_Context *context); +void __cdecl __tcf_0_1(); // idb +void __cdecl __tcf_0_2(); // idb +void __cdecl __tcf_0_3(); // idb +void __cdecl __tcf_0_4(); // idb +void __cdecl __tcf_0_5(std::_V2::error_category *a1); +void __cdecl __tcf_0_6(); // idb +void __cdecl __tcf_1_3(); // idb +int __cdecl main(int argc, const char **argv, const char **envp); +int _GLOBAL__sub_I__Z5UsageiPPKc(); +int _GLOBAL__sub_I__ZN4WXSS11RemoveQuoteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(); +int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib6Parser5ParseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_RS7_S9_(); +int _GLOBAL__sub_I__ZN4WXSS9Tokenizer2TTE(); +int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib12TransitTable10GetTopTypeEv(); +int _GLOBAL__sub_I___cxa_get_globals_fast(); +void __cdecl __noreturn get_ttype_entry(); +void __cdecl __noreturn base_of_encoded_value(); +void __noreturn __gxx_personality_v0_cold(void); // weak +void __noreturn __cxa_call_unexpected_cold(void); // weak +void __noreturn __cxxabiv1::__terminate(void); // weak +void __noreturn __cxxabiv1::throw_recursive_init_exception(void); // idb +void __cdecl __noreturn __cxa_guard_acquire_cold(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +void __noreturn __cxa_guard_abort_cold(void); // weak +void __noreturn __cxa_guard_release_cold(void); // weak +void __cdecl __noreturn operator new(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +// void __usercall std::ios_base::Init::~Init(void *a1@); +int std::locale::_Impl::~_Impl(void); // weak +void __stdcall __noreturn std::locale::_Impl::_Impl(_DWORD, _DWORD); // weak +void __stdcall __noreturn std::locale::_Impl::_M_install_facet(_DWORD, _DWORD); // weak +void __cdecl __noreturn std::locale::_Impl::_M_install_cache(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +void __cdecl __noreturn std::locale::global(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +// void __usercall __noreturn std::locale::name(int a1@, void **a2@, int a3@, _Unwind_Exception *a4@); +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2); +void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); +void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj(); +void __noreturn std::wfilebuf::_M_allocate_internal_buffer(void); +void __noreturn std::__throw_bad_exception(void); // idb +void __noreturn std::__throw_bad_alloc(void); // idb +void __noreturn std::__throw_bad_cast(void); // idb +void __noreturn std::__throw_bad_typeid(void); // idb +void __cdecl __noreturn std::__throw_logic_error(std::logic_error *a1); // idb +void __cdecl __noreturn std::__throw_domain_error(std::domain_error *a1); // idb +void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *a1); // idb +void __cdecl __noreturn std::__throw_length_error(std::length_error *a1); // idb +void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *a1); // idb +void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *a1); // idb +void __cdecl __noreturn std::__throw_range_error(std::range_error *a1); // idb +void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *a1); // idb +void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *a1); // idb +void __noreturn std::ios_base::_M_grow_words(void); +int __stdcall std::ios_base::_M_call_callbacks(_DWORD); // weak +void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj(); +void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj(); +void __cdecl __noreturn `anonymous namespace'::pool::free(struct type_info *lptinfo, void (__cdecl *)(void *)); // idb +void __cdecl __noreturn `anonymous namespace'::pool::allocate(); +int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv(); +void __noreturn __cxa_bad_cast(void); +void __noreturn __cxa_bad_typeid(void); +void __noreturn __cxa_throw_bad_array_new_length(void); +int operator new[](void); // weak +void __cdecl __noreturn __gnu_cxx::__verbose_terminate_handler(size_t ElementSize, size_t ElementCount, FILE *Stream); // idb +int std::getline,std::allocator>(void); // weak +int std::getline,std::allocator>(void); // weak +int __stdcall std::istream::getline(_DWORD, _DWORD, _DWORD); // weak +int __stdcall std::istream::ignore(_DWORD, _DWORD); // weak +int std::operator>>>(void); // weak +int __stdcall std::wistream::getline(_DWORD, _DWORD, _DWORD); // weak +int __stdcall std::wistream::ignore(_DWORD, _DWORD); // weak +// void __usercall __noreturn std::_V2::error_category::_M_message(int a1@, _Unwind_Exception *a2@, int a3@); +void __noreturn _txnal_cow_string_C1_for_exceptions(void); // weak +void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1); // idb +void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1, char *a2); // idb +void __cdecl __noreturn std::__throw_system_error(int a1); // idb +int _GLOBAL__sub_I__ZSt20__throw_system_errori(); +int __stdcall std::istream::ignore(_DWORD); // weak +int __stdcall std::wistream::ignore(_DWORD); // weak +void __cdecl __noreturn d_type_cold(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11); +void __cdecl __noreturn base_of_encoded_value_cold(); +void __cdecl __noreturn uw_frame_state_for_cold(); +void __cdecl __noreturn uw_install_context_1_cold(); +void __cdecl __noreturn uw_update_context_1_cold(); +void __cdecl __noreturn uw_init_context_1_cold(); +void __cdecl __noreturn uw_update_context_cold(); +void __cdecl __noreturn _Unwind_RaiseException_Phase2_cold(); +void __cdecl __noreturn _Unwind_GetGR_cold(); +void __cdecl __noreturn _Unwind_SetGR_cold(); +void __cdecl __noreturn _Unwind_Resume_cold(); +void __cdecl __noreturn _Unwind_Resume_or_Rethrow_cold(); +void __cdecl __noreturn size_of_encoded_value_cold(); +void __cdecl __noreturn base_from_object_cold(); +void __cdecl __noreturn search_object_cold(); +void __cdecl __noreturn emutls_alloc_cold(); +void __cdecl __noreturn emutls_init_cold(); +void __cdecl __noreturn __emutls_get_address_cold(); +// int __cdecl ___msvcrt_free(_DWORD); weak +// int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); weak + +//------------------------------------------------------------------------- +// Data declarations + +func_ptr __CTOR_LIST__[] = { (func_ptr)0xFFFFFFFF }; // idb +int (__cdecl *_data_start__)(_DWORD) = NULL; // weak +int WXML::RPX::acceptNum(char const*,int &)::canAccept[266] = +{ + 65536, + 1, + 0, + 16777472, + 0, + 0, + 0, + 5161770, + 5161778, + 5161723, + 5161730, + 5161741, + 5161760, + 5161787, + 5161797, + 5161812, + 5161824, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // idb +int WXML::RPX::acceptStr(char const*,int &)::canAccept[266] = +{ + 0, + 16777472, + 0, + 0, + 0, + 5161770, + 5161778, + 5161723, + 5161730, + 5161741, + 5161760, + 5161787, + 5161797, + 5161812, + 5161824, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // idb +int WXML::RPX::acceptID(char const*,int &)::canAccept[266] = +{ + 256, + 0, + 0, + -1020657664, + -1020133298, + -1023737778, + -1023279026, + -1022558130, + -1021312946, + -1019543474, + -1018888114, + -1017905074, + -1017118642, + 78, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // idb +char *WXSS::Tokenizer::DIRECTIVES = "@import"; // idb +int _CRT_glob = 2; // weak +fenv_t *_CRT_fenv = (fenv_t *)0xFFFFFFFD; // idb +int _fmode = 16384; +int *off_4E802C = &dword_4DBE40; // weak +int dword_4E8030 = -1; // weak +int dword_4E8034[5] = { 64, -16445, 16320, 1, 0 }; // weak +void *off_4E8048 = &unk_1541340; // weak +int dword_4E804C[5] = { 24, -149, 104, 1, 0 }; // weak +size_t dword_4E8060[4] = { 4u, 4u, 0u, 0u }; // weak +size_t dword_4E8070[4] = { 4u, 4u, 0u, 0u }; // weak +int dword_4E8080[5] = { 64, -16445, 16320, 1, 0 }; // weak +size_t dword_4E8094[4] = { 4u, 4u, 0u, 0u }; // weak +size_t dword_4E80A4[4] = { 4u, 4u, 0u, 0u }; // weak +int once_regsizes_22907 = 0; // weak +LONG Addend = -1; // idb +int once_22341 = 0; // weak +LONG dword_4E80C0 = -1; // idb +int once_21263 = 0; // weak +LONG dword_4E80C8 = -1; // idb +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::__timepunct::id = '\0'; // weak +char `guard variable for'std::__timepunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::moneypunct::id = '\0'; // weak +char `guard variable for'std::collate::id = '\0'; // weak +char `guard variable for'std::collate::id = '\0'; // weak +char `guard variable for'std::messages::id = '\0'; // weak +char `guard variable for'std::messages::id = '\0'; // weak +char `guard variable for'std::numpunct::id = '\0'; // weak +char `guard variable for'std::numpunct::id = '\0'; // weak +char `guard variable for'std::time_get>::id = '\0'; // weak +char `guard variable for'std::time_get>::id = '\0'; // weak +char `guard variable for'std::money_get>::id = '\0'; // weak +char `guard variable for'std::money_get>::id = '\0'; // weak +char `guard variable for'std::money_put>::id = '\0'; // weak +char `guard variable for'std::money_put>::id = '\0'; // weak +char `guard variable for'std::collate::id = '\0'; // weak +char `guard variable for'std::collate::id = '\0'; // weak +char `guard variable for'std::num_get>::id = '\0'; // weak +char `guard variable for'std::num_get>::id = '\0'; // weak +char `guard variable for'std::num_put>::id = '\0'; // weak +char `guard variable for'std::num_put>::id = '\0'; // weak +char `guard variable for'std::messages::id = '\0'; // weak +char `guard variable for'std::messages::id = '\0'; // weak +char `guard variable for'std::numpunct::id = '\0'; // weak +char `guard variable for'std::numpunct::id = '\0'; // weak +char `guard variable for'std::time_get>::id = '\0'; // weak +char `guard variable for'std::time_get>::id = '\0'; // weak +char `guard variable for'std::time_put>::id = '\0'; // weak +char `guard variable for'std::time_put>::id = '\0'; // weak +char `guard variable for'std::money_get>::id = '\0'; // weak +char `guard variable for'std::money_get>::id = '\0'; // weak +char `guard variable for'std::money_put>::id = '\0'; // weak +char `guard variable for'std::money_put>::id = '\0'; // weak +__guard `guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex = 0; // idb +__guard `guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec = 0; // idb +__guard `guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex = 0; // idb +__guard `guard variable for'WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret = 0; // idb +__guard `guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; // idb +__guard `guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; // idb +_UNKNOWN eh_globals; // weak +__gthread_key_t init = 0u; // idb +char byte_4E824C = '\0'; // weak +void (*__cxxabiv1::__terminate_handler)(void) = &__gnu_cxx::__verbose_terminate_handler; // idb +void (*__cxxabiv1::__unexpected_handler)(void) = &std::terminate; // idb +__gthread_recursive_mutex_t `anonymous namespace'::fake_mutex = { 0, 0, 0u, NULL }; // idb +_DWORD `anonymous namespace'::messages_c[4] = { 0, 0, 0, 0 }; // weak +_DWORD `anonymous namespace'::messages_w[4] = { 0, 0, 0, 0 }; // weak +_UNKNOWN `anonymous namespace'::numpunct_c; // weak +int dword_4E828C = 0; // weak +int dword_4E8290 = 0; // weak +_UNKNOWN `anonymous namespace'::numpunct_w; // weak +int dword_4E8298 = 0; // weak +int dword_4E829C = 0; // weak +_UNKNOWN `anonymous namespace'::time_get_c; // weak +int dword_4E82A4 = 0; // weak +_UNKNOWN `anonymous namespace'::time_get_w; // weak +int dword_4E82AC = 0; // weak +_UNKNOWN `anonymous namespace'::time_put_c; // weak +int dword_4E82B4 = 0; // weak +_UNKNOWN `anonymous namespace'::time_put_w; // weak +int dword_4E82BC = 0; // weak +_UNKNOWN `anonymous namespace'::codecvt_c16; // weak +int dword_4E82C4 = 0; // weak +_UNKNOWN `anonymous namespace'::codecvt_c32; // weak +int dword_4E82CC = 0; // weak +_UNKNOWN `anonymous namespace'::money_get_c; // weak +int dword_4E82D4 = 0; // weak +_UNKNOWN `anonymous namespace'::money_get_w; // weak +int dword_4E82DC = 0; // weak +_UNKNOWN `anonymous namespace'::money_put_c; // weak +int dword_4E82E4 = 0; // weak +_UNKNOWN `anonymous namespace'::money_put_w; // weak +int dword_4E82EC = 0; // weak +_DWORD `anonymous namespace'::timepunct_c[5] = { 0, 0, 0, 0, 0 }; // weak +_DWORD `anonymous namespace'::timepunct_w[5] = { 0, 0, 0, 0, 0 }; // weak +int `anonymous namespace'::__new_handler = 0; // weak +_DWORD `anonymous namespace'::c_locale_impl[5] = { 0, 0, 0, 0, 0 }; // weak +_UNKNOWN `anonymous namespace'::moneypunct_cf; // weak +int dword_4E8334 = 0; // weak +int dword_4E8338 = 0; // weak +_UNKNOWN `anonymous namespace'::moneypunct_ct; // weak +int dword_4E8340 = 0; // weak +int dword_4E8344 = 0; // weak +_UNKNOWN `anonymous namespace'::moneypunct_wf; // weak +int dword_4E834C = 0; // weak +int dword_4E8350 = 0; // weak +_UNKNOWN `anonymous namespace'::moneypunct_wt; // weak +int dword_4E8358 = 0; // weak +int dword_4E835C = 0; // weak +_UNKNOWN `anonymous namespace'::codecvt_c16_c8; // weak +int dword_4E8364 = 0; // weak +_UNKNOWN `anonymous namespace'::codecvt_c32_c8; // weak +int dword_4E836C = 0; // weak +__gthread_mutex_t `anonymous namespace'::emergency_pool = { 0, NULL }; // idb +int dword_4E8378 = 0; // weak +int dword_4E837C = 0; // weak +int dword_4E8380 = 0; // weak +int `anonymous namespace'::numpunct_cache_c = 0; // weak +int dword_4E83A4 = 0; // weak +int dword_4E83A8 = 0; // weak +int dword_4E83AC = 0; // weak +char byte_4E83B0 = '\0'; // weak +int dword_4E83B4 = 0; // weak +int dword_4E83B8 = 0; // weak +int dword_4E83BC = 0; // weak +int dword_4E83C0 = 0; // weak +__int16 word_4E83C4 = 0; // weak +char byte_4E8404 = '\0'; // weak +int `anonymous namespace'::numpunct_cache_w = 0; // weak +int dword_4E8424 = 0; // weak +int dword_4E8428 = 0; // weak +int dword_4E842C = 0; // weak +char byte_4E8430 = '\0'; // weak +int dword_4E8434 = 0; // weak +int dword_4E8438 = 0; // weak +int dword_4E843C = 0; // weak +int dword_4E8440 = 0; // weak +int dword_4E8444 = 0; // weak +char byte_4E84C4 = '\0'; // weak +int `anonymous namespace'::timepunct_cache_c = 0; // weak +int dword_4E84E4 = 0; // weak +int dword_4E84E8 = 0; // weak +int dword_4E84EC = 0; // weak +int dword_4E84F0 = 0; // weak +int dword_4E84F4 = 0; // weak +int dword_4E84F8 = 0; // weak +int dword_4E84FC = 0; // weak +int dword_4E8500 = 0; // weak +int dword_4E8504 = 0; // weak +int dword_4E8508 = 0; // weak +int dword_4E850C = 0; // weak +int dword_4E8510 = 0; // weak +int dword_4E8514 = 0; // weak +int dword_4E8518 = 0; // weak +int dword_4E851C = 0; // weak +int dword_4E8520 = 0; // weak +int dword_4E8524 = 0; // weak +int dword_4E8528 = 0; // weak +int dword_4E852C = 0; // weak +int dword_4E8530 = 0; // weak +int dword_4E8534 = 0; // weak +int dword_4E8538 = 0; // weak +int dword_4E853C = 0; // weak +int dword_4E8540 = 0; // weak +int dword_4E8544 = 0; // weak +int dword_4E8548 = 0; // weak +int dword_4E854C = 0; // weak +int dword_4E8550 = 0; // weak +int dword_4E8554 = 0; // weak +int dword_4E8558 = 0; // weak +int dword_4E855C = 0; // weak +int dword_4E8560 = 0; // weak +int dword_4E8564 = 0; // weak +int dword_4E8568 = 0; // weak +int dword_4E856C = 0; // weak +int dword_4E8570 = 0; // weak +int dword_4E8574 = 0; // weak +int dword_4E8578 = 0; // weak +int dword_4E857C = 0; // weak +int dword_4E8580 = 0; // weak +int dword_4E8584 = 0; // weak +int dword_4E8588 = 0; // weak +int dword_4E858C = 0; // weak +int dword_4E8590 = 0; // weak +int dword_4E8594 = 0; // weak +int dword_4E8598 = 0; // weak +int dword_4E859C = 0; // weak +int dword_4E85A0 = 0; // weak +char byte_4E85A4 = '\0'; // weak +int `anonymous namespace'::timepunct_cache_w = 0; // weak +int dword_4E85C4 = 0; // weak +int dword_4E85C8 = 0; // weak +int dword_4E85CC = 0; // weak +int dword_4E85D0 = 0; // weak +int dword_4E85D4 = 0; // weak +int dword_4E85D8 = 0; // weak +int dword_4E85DC = 0; // weak +int dword_4E85E0 = 0; // weak +int dword_4E85E4 = 0; // weak +int dword_4E85E8 = 0; // weak +int dword_4E85EC = 0; // weak +int dword_4E85F0 = 0; // weak +int dword_4E85F4 = 0; // weak +int dword_4E85F8 = 0; // weak +int dword_4E85FC = 0; // weak +int dword_4E8600 = 0; // weak +int dword_4E8604 = 0; // weak +int dword_4E8608 = 0; // weak +int dword_4E860C = 0; // weak +int dword_4E8610 = 0; // weak +int dword_4E8614 = 0; // weak +int dword_4E8618 = 0; // weak +int dword_4E861C = 0; // weak +int dword_4E8620 = 0; // weak +int dword_4E8624 = 0; // weak +int dword_4E8628 = 0; // weak +int dword_4E862C = 0; // weak +int dword_4E8630 = 0; // weak +int dword_4E8634 = 0; // weak +int dword_4E8638 = 0; // weak +int dword_4E863C = 0; // weak +int dword_4E8640 = 0; // weak +int dword_4E8644 = 0; // weak +int dword_4E8648 = 0; // weak +int dword_4E864C = 0; // weak +int dword_4E8650 = 0; // weak +int dword_4E8654 = 0; // weak +int dword_4E8658 = 0; // weak +int dword_4E865C = 0; // weak +int dword_4E8660 = 0; // weak +int dword_4E8664 = 0; // weak +int dword_4E8668 = 0; // weak +int dword_4E866C = 0; // weak +int dword_4E8670 = 0; // weak +int dword_4E8674 = 0; // weak +int dword_4E8678 = 0; // weak +int dword_4E867C = 0; // weak +int dword_4E8680 = 0; // weak +char byte_4E8684 = '\0'; // weak +int `anonymous namespace'::moneypunct_cache_cf = 0; // weak +int dword_4E86A4 = 0; // weak +int dword_4E86A8 = 0; // weak +int dword_4E86AC = 0; // weak +__int16 word_4E86B0 = 0; // weak +char byte_4E86B2 = '\0'; // weak +int dword_4E86B4 = 0; // weak +int dword_4E86B8 = 0; // weak +int dword_4E86BC = 0; // weak +int dword_4E86C0 = 0; // weak +int dword_4E86C4 = 0; // weak +int dword_4E86C8 = 0; // weak +int dword_4E86CC = 0; // weak +int dword_4E86D0 = 0; // weak +int dword_4E86D4 = 0; // weak +char byte_4E86E3 = '\0'; // weak +int `anonymous namespace'::moneypunct_cache_ct = 0; // weak +int dword_4E8704 = 0; // weak +int dword_4E8708 = 0; // weak +int dword_4E870C = 0; // weak +__int16 word_4E8710 = 0; // weak +char byte_4E8712 = '\0'; // weak +int dword_4E8714 = 0; // weak +int dword_4E8718 = 0; // weak +int dword_4E871C = 0; // weak +int dword_4E8720 = 0; // weak +int dword_4E8724 = 0; // weak +int dword_4E8728 = 0; // weak +int dword_4E872C = 0; // weak +int dword_4E8730 = 0; // weak +int dword_4E8734 = 0; // weak +char byte_4E8743 = '\0'; // weak +int `anonymous namespace'::moneypunct_cache_wf = 0; // weak +int dword_4E8764 = 0; // weak +int dword_4E8768 = 0; // weak +int dword_4E876C = 0; // weak +char byte_4E8770 = '\0'; // weak +int dword_4E8772 = 0; // weak +int dword_4E8778 = 0; // weak +int dword_4E877C = 0; // weak +int dword_4E8780 = 0; // weak +int dword_4E8784 = 0; // weak +int dword_4E8788 = 0; // weak +int dword_4E878C = 0; // weak +int dword_4E8790 = 0; // weak +int dword_4E8794 = 0; // weak +int dword_4E8798 = 0; // weak +char byte_4E87B2 = '\0'; // weak +int `anonymous namespace'::moneypunct_cache_wt = 0; // weak +int dword_4E87C4 = 0; // weak +int dword_4E87C8 = 0; // weak +int dword_4E87CC = 0; // weak +char byte_4E87D0 = '\0'; // weak +int dword_4E87D2 = 0; // weak +int dword_4E87D8 = 0; // weak +int dword_4E87DC = 0; // weak +int dword_4E87E0 = 0; // weak +int dword_4E87E4 = 0; // weak +int dword_4E87E8 = 0; // weak +int dword_4E87EC = 0; // weak +int dword_4E87F0 = 0; // weak +int dword_4E87F4 = 0; // weak +int dword_4E87F8 = 0; // weak +char byte_4E8812 = '\0'; // weak +__int16 `anonymous namespace'::name_c = 0; // weak +_DWORD `anonymous namespace'::ctype_c[136] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +_DWORD `anonymous namespace'::ctype_w[184] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +_DWORD `anonymous namespace'::c_locale = 0; // weak +int `anonymous namespace'::name_vec = 0; // weak +_UNKNOWN unk_4E8D5C; // weak +_UNKNOWN `anonymous namespace'::cache_vec; // weak +_DWORD `anonymous namespace'::codecvt_c[3] = { 0, 0, 0 }; // weak +_DWORD `anonymous namespace'::codecvt_w[3] = { 0, 0, 0 }; // weak +_UNKNOWN `anonymous namespace'::collate_c; // weak +int dword_4E8E3C = 0; // weak +int dword_4E8E40 = 0; // weak +_UNKNOWN `anonymous namespace'::collate_w; // weak +int dword_4E8E48 = 0; // weak +int dword_4E8E4C = 0; // weak +_UNKNOWN `anonymous namespace'::facet_vec; // weak +_UNKNOWN `anonymous namespace'::num_get_c; // weak +int dword_4E8F24 = 0; // weak +_UNKNOWN `anonymous namespace'::num_get_w; // weak +int dword_4E8F2C = 0; // weak +_UNKNOWN `anonymous namespace'::num_put_c; // weak +int dword_4E8F34 = 0; // weak +_UNKNOWN `anonymous namespace'::num_put_w; // weak +int dword_4E8F3C = 0; // weak +__gthread_recursive_mutex_t *`anonymous namespace'::static_mutex = NULL; // idb +void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this) = { &off_4F5034, &off_4F505C }; // weak +void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this) = &off_4F505C; // weak +_UNKNOWN __gnu_internal::buf_cin_sync; // weak +int dword_4E8F64 = 0; // weak +int dword_4E8F68 = 0; // weak +int dword_4E8F6C = 0; // weak +int dword_4E8F70 = 0; // weak +int dword_4E8F74 = 0; // weak +int dword_4E8F78 = 0; // weak +_DWORD dword_4E8F7C = 0; // weak +int dword_4E8F80 = 0; // weak +int dword_4E8F84 = 0; // weak +_UNKNOWN __gnu_internal::buf_cerr_sync; // weak +int dword_4E8FA4 = 0; // weak +int dword_4E8FA8 = 0; // weak +int dword_4E8FAC = 0; // weak +int dword_4E8FB0 = 0; // weak +int dword_4E8FB4 = 0; // weak +int dword_4E8FB8 = 0; // weak +_DWORD dword_4E8FBC = 0; // weak +int dword_4E8FC0 = 0; // weak +int dword_4E8FC4 = 0; // weak +_UNKNOWN __gnu_internal::buf_cout_sync; // weak +int dword_4E8FE4 = 0; // weak +int dword_4E8FE8 = 0; // weak +int dword_4E8FEC = 0; // weak +int dword_4E8FF0 = 0; // weak +int dword_4E8FF4 = 0; // weak +int dword_4E8FF8 = 0; // weak +_DWORD dword_4E8FFC = 0; // weak +int dword_4E9000 = 0; // weak +int dword_4E9004 = 0; // weak +_UNKNOWN __gnu_internal::buf_wcin_sync; // weak +int dword_4E9024 = 0; // weak +int dword_4E9028 = 0; // weak +int dword_4E902C = 0; // weak +int dword_4E9030 = 0; // weak +int dword_4E9034 = 0; // weak +int dword_4E9038 = 0; // weak +_DWORD dword_4E903C = 0; // weak +int dword_4E9040 = 0; // weak +__int16 word_4E9044 = 0; // weak +_UNKNOWN __gnu_internal::buf_wcerr_sync; // weak +int dword_4E9064 = 0; // weak +int dword_4E9068 = 0; // weak +int dword_4E906C = 0; // weak +int dword_4E9070 = 0; // weak +int dword_4E9074 = 0; // weak +int dword_4E9078 = 0; // weak +_DWORD dword_4E907C = 0; // weak +int dword_4E9080 = 0; // weak +__int16 word_4E9084 = 0; // weak +_UNKNOWN __gnu_internal::buf_wcout_sync; // weak +int dword_4E90A4 = 0; // weak +int dword_4E90A8 = 0; // weak +int dword_4E90AC = 0; // weak +int dword_4E90B0 = 0; // weak +int dword_4E90B4 = 0; // weak +int dword_4E90B8 = 0; // weak +_DWORD dword_4E90BC = 0; // weak +int dword_4E90C0 = 0; // weak +__int16 word_4E90C4 = 0; // weak +char __gnu_internal::buf_cin[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_cerr[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_cout[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_wcin[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_wcerr[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +char __gnu_internal::buf_wcout[128] = +{ + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0', + '\0' +}; // weak +_UNKNOWN std::wstring::_Rep::_S_empty_rep_storage; // weak +_UNKNOWN unk_4E93EC; // weak +unsigned int std::string::_Rep::_S_empty_rep_storage = 0u; // idb +_UNKNOWN unk_4E93FC; // weak +char *std::__num_base::_S_atoms_in[3] = +{ + "-+xX0123456789abcdefABCDEF", + "-+xX0123456789abcdef0123456789ABCDEF", + "-0123456789" +}; // weak +char *std::__num_base::_S_atoms_out[2] = { "-+xX0123456789abcdef0123456789ABCDEF", "-0123456789" }; // weak +char *std::money_base::_S_atoms = "-0123456789"; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::__timepunct::id = 0; // weak +int std::__timepunct::id = 0; // weak +_DWORD std::`anonymous namespace'::messages_c = 0; // weak +signed __int32 dword_4E9428[3] = { 0, 0, 0 }; // weak +_DWORD std::`anonymous namespace'::messages_w = 0; // weak +signed __int32 dword_4E9438[3] = { 0, 0, 0 }; // weak +int std::`anonymous namespace'::numpunct_c = 0; // weak +int dword_4E9448 = 0; // weak +int dword_4E944C = 0; // weak +int std::`anonymous namespace'::numpunct_w = 0; // weak +int dword_4E9454 = 0; // weak +int dword_4E9458 = 0; // weak +int std::`anonymous namespace'::time_get_c = 0; // weak +int dword_4E9460 = 0; // weak +int std::`anonymous namespace'::time_get_w = 0; // weak +int dword_4E9468 = 0; // weak +int std::`anonymous namespace'::money_get_c = 0; // weak +int dword_4E9470 = 0; // weak +int std::`anonymous namespace'::money_get_w = 0; // weak +int dword_4E9478 = 0; // weak +int std::`anonymous namespace'::money_put_c = 0; // weak +int dword_4E9480 = 0; // weak +int std::`anonymous namespace'::money_put_w = 0; // weak +int dword_4E9488 = 0; // weak +int std::`anonymous namespace'::moneypunct_cf = 0; // weak +int dword_4E9490 = 0; // weak +int dword_4E9494 = 0; // weak +int std::`anonymous namespace'::moneypunct_ct = 0; // weak +int dword_4E949C = 0; // weak +int dword_4E94A0 = 0; // weak +int std::`anonymous namespace'::moneypunct_wf = 0; // weak +int dword_4E94A8 = 0; // weak +int dword_4E94AC = 0; // weak +int std::`anonymous namespace'::moneypunct_wt = 0; // weak +int dword_4E94B4 = 0; // weak +int dword_4E94B8 = 0; // weak +int std::`anonymous namespace'::collate_c = 0; // weak +int dword_4E94C0 = 0; // weak +int dword_4E94C4 = 0; // weak +int std::`anonymous namespace'::collate_w = 0; // weak +int dword_4E94CC = 0; // weak +int dword_4E94D0 = 0; // weak +void *std::__timepunct_cache::_S_timezones[2] = { &off_4EDD1E, &off_4EDD22 }; // weak +wchar_t *std::__timepunct_cache::_S_timezones[11] = +{ + L"GMT", + &off_4EDCBC, + L"AKST", + &off_4EDCCE, + &off_4EDCD6, + &off_4EDCDE, + &off_4EDCE6, + &off_4EDCEE, + &off_4EDCF6, + &off_4EDCFE, + &off_4EDD06 +}; // weak +int std::ctype::id = 0; // weak +int std::ctype::id = 0; // weak +int std::locale::_S_classic = 0; // weak +int std::locale::id::_S_refcount = 0; // weak +int std::locale::facet::_S_c_locale = 0; // weak +__gthread_once_t std::locale::facet::_S_once = { 0, -1 }; // idb +__gthread_once_t std::locale::_S_once = { 0, -1 }; // idb +int std::locale::_S_global = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::moneypunct::id = 0; // weak +int std::collate::id = 0; // weak +int std::collate::id = 0; // weak +int std::messages::id = 0; // weak +int std::messages::id = 0; // weak +int std::numpunct::id = 0; // weak +int std::numpunct::id = 0; // weak +int std::time_get>::id = 0; // weak +int std::time_get>::id = 0; // weak +int std::money_get>::id = 0; // weak +int std::money_get>::id = 0; // weak +int std::money_put>::id = 0; // weak +int std::money_put>::id = 0; // weak +_UNKNOWN std::codecvt::id; // weak +_UNKNOWN std::codecvt::id; // weak +_UNKNOWN std::codecvt::id; // weak +_UNKNOWN std::codecvt::id; // weak +int std::codecvt::id = 0; // weak +int std::codecvt::id = 0; // weak +int std::collate::id = 0; // weak +int std::collate::id = 0; // weak +int std::num_get>::id = 0; // weak +int std::num_get>::id = 0; // weak +int std::num_put>::id = 0; // weak +int std::num_put>::id = 0; // weak +int std::ios_base::Init::_S_refcount = 0; // weak +char std::ios_base::Init::_S_synced_with_stdio = '\x01'; // weak +int std::messages::id = 0; // weak +int std::messages::id = 0; // weak +int std::numpunct::id = 0; // weak +int std::numpunct::id = 0; // weak +int std::time_get>::id = 0; // weak +int std::time_get>::id = 0; // weak +int std::time_put>::id = 0; // weak +int std::time_put>::id = 0; // weak +int std::money_get>::id = 0; // weak +int std::money_get>::id = 0; // weak +int std::money_put>::id = 0; // weak +int std::money_put>::id[5] = { 0, 0, 0, 0, 0 }; // weak +int std::cin = 0; // weak +int dword_4E9644 = 0; // weak +int dword_4E9648[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_4E96B8 = 0; // weak +__int16 word_4E96BC = 0; // weak +int dword_4E96C0 = 0; // weak +int dword_4E96C4 = 0; // weak +int dword_4E96C8 = 0; // weak +int dword_4E96CC = 0; // weak +int std::cerr = 0; // weak +int dword_4E96E4 = 0; // weak +int dword_4E96F0 = 0; // weak +int dword_4E9754 = 0; // weak +__int16 word_4E9758 = 0; // weak +int dword_4E975C = 0; // weak +int dword_4E9760 = 0; // weak +int dword_4E9764 = 0; // weak +int dword_4E9768 = 0; // weak +int std::clog = 0; // weak +int dword_4E9784[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_4E97F4 = 0; // weak +__int16 word_4E97F8 = 0; // weak +int dword_4E97FC = 0; // weak +int dword_4E9800 = 0; // weak +int dword_4E9804 = 0; // weak +int dword_4E9808 = 0; // weak +int std::cout = 0; // weak +int dword_4E9824[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_4E9894 = 0; // weak +__int16 word_4E9898 = 0; // weak +int dword_4E989C = 0; // weak +int dword_4E98A0 = 0; // weak +int dword_4E98A4 = 0; // weak +int dword_4E98A8 = 0; // weak +int std::wcin = 0; // weak +int dword_4E98C4 = 0; // weak +int dword_4E98C8[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_4E9938 = 0; // weak +__int16 word_4E993C = 0; // weak +char byte_4E993E = '\0'; // weak +int dword_4E9940 = 0; // weak +int dword_4E9944 = 0; // weak +int dword_4E9948 = 0; // weak +int dword_4E994C = 0; // weak +int std::wcerr = 0; // weak +int dword_4E9964 = 0; // weak +int dword_4E9970 = 0; // weak +int dword_4E99D4 = 0; // weak +__int16 word_4E99D8 = 0; // weak +char byte_4E99DA = '\0'; // weak +int dword_4E99DC = 0; // weak +int dword_4E99E0 = 0; // weak +int dword_4E99E4 = 0; // weak +int dword_4E99E8 = 0; // weak +int std::wclog = 0; // weak +int dword_4E9A04[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_4E9A74 = 0; // weak +__int16 word_4E9A78 = 0; // weak +char byte_4E9A7A = '\0'; // weak +int dword_4E9A7C = 0; // weak +int dword_4E9A80 = 0; // weak +int dword_4E9A84 = 0; // weak +int dword_4E9A88 = 0; // weak +int std::wcout = 0; // weak +int dword_4E9AA4[28] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; // weak +int dword_4E9B14 = 0; // weak +__int16 word_4E9B18 = 0; // weak +char byte_4E9B1A = '\0'; // weak +int dword_4E9B1C = 0; // weak +int dword_4E9B20 = 0; // weak +int dword_4E9B24 = 0; // weak +int dword_4E9B28 = 0; // weak +__gthread_mutex_t `anonymous namespace'::get_locale_mutex(void)::locale_mutex = { 0, NULL }; // idb +__gthread_once_t `anonymous namespace'::get_static_mutex(void)::once = { 0, -1 }; // idb +void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this) = &off_4F500C; // weak +__gthread_mutex_t `anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex = { 0, NULL }; // idb +int dword_4E9B60 = 0; // weak +void *dword_4E9B64 = NULL; // idb +int dword_4E9B68 = 0; // weak +int dword_4E9B6C = 0; // weak +int dword_4E9B70 = 0; // weak +char byte_4E9B74 = '\0'; // weak +char WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = '\0'; // weak +int dword_4E9B7C = 0; // weak +int dword_4E9B80 = 0; // weak +char WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = '\0'; // weak +int dword_4E9B88 = 0; // weak +int dword_4E9B8C = 0; // weak +char __gnu_cxx::__verbose_terminate_handler(void)::terminating = '\0'; // weak +int std::ios_base::xalloc(void)::_S_top = 0; // weak +const char byte_4EA251 = '\0'; // idb +const char off_4EAF6E[] = { 'n', 'o', 't', '\0' }; // idb +const char byte_4EAF84 = '\0'; // idb +const char asc_4EAFF8[1] = "f"; // idb +void *off_4EAFF9 = &unk_6D6F72; // weak +const char asc_4EBDB4[] = ":\x00)\x00]"; // idb +char byte_4EBF05[3] = { '\0', '\0', '\0' }; // weak +const char byte_4EBF96 = '\0'; // idb +const char off_4EBF97[] = { 'r', 'p', 'x', '\0' }; // idb +const char off_4EBF9B[] = { 'u', 'r', 'l', '\0' }; // idb +void *off_4EC02D = &unk_5D315B; // weak +void *off_4EC0D7 = (void *)0x444924; // weak +const char off_4EC1FC[] = { 'u', 'r', 'l', '\0' }; // idb +const char off_4EC200[] = { 'r', 'p', 'x', '\0' }; // idb +const char byte_4EC204 = '\0'; // idb +_UNKNOWN unk_4EC628; // weak +_UNKNOWN unk_4EC62A; // weak +_UNKNOWN unk_4EC62C; // weak +_UNKNOWN unk_4EC62E; // weak +_UNKNOWN unk_4EC630; // weak +void *off_4EC63C = &unk_720074; // weak +void *off_4EC646 = &unk_610066; // weak +_UNKNOWN unk_4EC654; // weak +void *off_4EC660 = &unk_720074; // weak +void *off_4EC66A = &unk_610066; // weak +_UNKNOWN unk_4ECD6E; // weak +_UNKNOWN unk_4ED02A; // weak +_BYTE byte_4ED356[2] = { 0, 0 }; // weak +_UNKNOWN unk_4ED464; // weak +char byte_4ED4CD[] = { '0' }; // weak +_UNKNOWN unk_4ED73A; // weak +void *off_4EDDB6 = &loc_4D4100; // weak +_UNKNOWN unk_4EDDBA; // weak +void *off_4EDDF6 = &unk_6E7553; // weak +void *off_4EDDFA = &unk_6E6F4D; // weak +void *off_4EDDFE = &unk_657554; // weak +void *off_4EDE02 = &unk_646557; // weak +void *off_4EDE06 = &unk_756854; // weak +void *off_4EDE0A = &unk_697246; // weak +void *off_4EDE0E = &unk_746153; // weak +void *off_4EDE2F = &unk_79614D; // weak +void *off_4EDE68 = &unk_6E614A; // weak +void *off_4EDE6C = &unk_626546; // weak +void *off_4EDE70 = &unk_72614D; // weak +void *off_4EDE74 = &unk_727041; // weak +void *off_4EDE78 = &unk_6E754A; // weak +void *off_4EDE7C = &unk_6C754A; // weak +void *off_4EDE80 = &unk_677541; // weak +void *off_4EDE84 = &unk_706553; // weak +void *off_4EDE88 = &unk_74634F; // weak +void *off_4EDE8C = &unk_766F4E; // weak +void *off_4EDE90 = &unk_636544; // weak +void *off_4EDE94 = &unk_6D0025; // weak +_UNKNOWN unk_4EDEB8; // weak +void *off_4EDEBA = &loc_4D0041; // weak +void *off_4EDEC0 = (void *)0x4D0050; // weak +void *off_4EDEC6 = &unk_750053; // weak +void *off_4EDED4 = &unk_6F004D; // weak +void *off_4EDEE2 = &unk_750054; // weak +void *off_4EDEF2 = &unk_650057; // weak +void *off_4EDF06 = &unk_680054; // weak +void *off_4EDF18 = &unk_720046; // weak +void *off_4EDF26 = &unk_610053; // weak +void *off_4EDF38 = &unk_750053; // weak +void *off_4EDF40 = &unk_6F004D; // weak +void *off_4EDF48 = &unk_750054; // weak +void *off_4EDF50 = &unk_650057; // weak +void *off_4EDF58 = &unk_680054; // weak +void *off_4EDF60 = &unk_720046; // weak +void *off_4EDF68 = &unk_610053; // weak +void *off_4EDF70 = &unk_61004A; // weak +void *off_4EDF80 = &unk_650046; // weak +void *off_4EDF92 = &unk_61004D; // weak +void *off_4EDF9E = &unk_700041; // weak +void *off_4EDFAA = &unk_61004D; // weak +void *off_4EDFB2 = &unk_75004A; // weak +void *off_4EDFBC = &unk_75004A; // weak +void *off_4EDFC6 = &unk_750041; // weak +void *off_4EDFD4 = &unk_650053; // weak +void *off_4EDFE8 = &unk_63004F; // weak +void *off_4EDFF8 = &unk_6F004E; // weak +void *off_4EE00A = &unk_650044; // weak +void *off_4EE01C = &unk_61004A; // weak +void *off_4EE024 = &unk_650046; // weak +void *off_4EE02C = &unk_61004D; // weak +void *off_4EE034 = &unk_700041; // weak +void *off_4EE03C = &unk_75004A; // weak +void *off_4EE044 = &unk_75004A; // weak +void *off_4EE04C = &unk_750041; // weak +void *off_4EE054 = &unk_650053; // weak +void *off_4EE05C = &unk_63004F; // weak +void *off_4EE064 = &unk_6F004E; // weak +void *off_4EE06C = &unk_650044; // weak +_UNKNOWN unk_4EE074; // weak +void *off_4EE663 = &unk_647473; // weak +void *off_4EEA7E = &unk_6C6C75; // weak +_UNKNOWN unk_4EEE58; // weak +_UNKNOWN unk_4EEE5A; // weak +_UNKNOWN unk_4EF0C4; // weak +void *cplus_demangle_operators = &unk_4EF0C4; // weak +void **off_4EF8A0 = &off_4EF715; // weak +char *off_4EFA08 = "decimal32"; // weak +char *off_4EFA1C = "decimal64"; // weak +char *off_4EFA30 = "decimal128"; // weak +char *off_4EFA44 = "half"; // weak +char *off_4EFA58 = "char8_t"; // weak +char *off_4EFA6C = "char16_t"; // weak +char *off_4EFA80 = "char32_t"; // weak +char *off_4EFA94 = "decltype(nullptr)"; // weak +int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD) = &__dyn_tls_init; // weak +int dword_4EFD80[22] = +{ + 0, + 3, + 5, + 7, + 10, + 12, + 14, + 17, + 19, + 21, + 24, + 26, + 28, + 31, + 33, + 35, + 38, + 40, + 42, + 45, + 47, + 49 +}; // weak +double dbl_4EFDD8[] = { 0.00781250000000009 }; // weak +int dword_4EFDFC[7] = { 0, 5, 25, 125, 0, 0, 0 }; // weak +double dbl_4EFE18[] = { 0.0 }; // weak +double __tens_D2A[24] = +{ + 1.0, + 10.0, + 100.0, + 1000.0, + 10000.0, + 100000.0, + 1000000.0, + 1.0e7, + 1.0e8, + 1.0e9, + 1.0e10, + 1.0e11, + 1.0e12, + 1.0e13, + 1.0e14, + 1.0e15, + 1.0e16, + 1.0e17, + 1.0e18, + 1.0e19, + 1.0e20, + 1.0e21, + 1.0e22, + 0.0 +}; // weak +double __tinytens_D2A[4] = { 1.0e-16, 1.0e-32, 1.0e-64, 1.0e-128 }; // weak +double __bigtens_D2A[4] = { 1.0e16, 1.0e32, 1.0e64, 1.0e128 }; // weak +const char Locale[2] = { '\0', '\0' }; // idb +_UNKNOWN unk_4EFF94; // weak +char *off_4F0000 = "alnum"; // weak +__int16 word_4F0004[] = { 263 }; // weak +void **off_4F0159 = &off_4E614E; // weak +void *off_4F015D = &unk_666E49; // weak +void *off_4F0162 = &unk_6E0028; // weak +const char byte_4F0304 = '\0'; // idb +void **off_4F0329 = &off_4E614E; // weak +_UNKNOWN terminator_22562; // weak +int CSWTCH_107[6] = { 4, 1, 16, 2, 8, 0 }; // weak +char *const CSWTCH_20 = "a"; // idb +int std::money_base::_S_default_pattern = 67109634; // weak +_WORD std::`anonymous namespace'::utf16le_bom[2] = { -257, 0 }; // weak +__int16 std::`anonymous namespace'::utf8_bom = -17425; // weak +_WORD std::`anonymous namespace'::utf16_bom[2] = { -2, 0 }; // weak +char **std::locale::_S_categories = &__gnu_cxx::category_names; // weak +int *std::locale::_S_twinned_facets = &std::numpunct::id; // weak +int *const std::locale::facet::_S_c_name = (int *const)0x43; // idb +_UNKNOWN unk_4F0DC4; // weak +_UNKNOWN unk_4F0DD8; // weak +_UNKNOWN unk_4F0DEC; // weak +_UNKNOWN unk_4F0E00; // weak +_UNKNOWN unk_4F0E14; // weak +_UNKNOWN unk_4F0E28; // weak +_UNKNOWN unk_4F0E78; // weak +_UNKNOWN unk_4F0E8C; // weak +_UNKNOWN unk_4F0EA0; // weak +_UNKNOWN unk_4F0EB4; // weak +_UNKNOWN unk_4F0EC8; // weak +_UNKNOWN unk_4F0EDC; // weak +_UNKNOWN unk_4F0EF0; // weak +_UNKNOWN unk_4F0F04; // weak +_UNKNOWN unk_4F0F18; // weak +_UNKNOWN unk_4F0F2C; // weak +_UNKNOWN unk_4F0F40; // weak +_UNKNOWN unk_4F0F54; // weak +_UNKNOWN unk_4F0F68; // weak +_UNKNOWN unk_4F0F7C; // weak +_UNKNOWN unk_4F0FCC; // weak +_UNKNOWN unk_4F0FE0; // weak +_UNKNOWN unk_4F0FF4; // weak +_UNKNOWN unk_4F1008; // weak +_UNKNOWN unk_4F101C; // weak +_UNKNOWN unk_4F1030; // weak +_UNKNOWN unk_4F1080; // weak +_UNKNOWN unk_4F1094; // weak +_UNKNOWN unk_4F10A8; // weak +_UNKNOWN unk_4F10BC; // weak +_UNKNOWN unk_4F10D0; // weak +_UNKNOWN unk_4F10E4; // weak +_UNKNOWN unk_4F10F8; // weak +_UNKNOWN unk_4F110C; // weak +_UNKNOWN unk_4F1120; // weak +_UNKNOWN unk_4F1134; // weak +_UNKNOWN unk_4F1148; // weak +_UNKNOWN unk_4F115C; // weak +_UNKNOWN unk_4F1170; // weak +_UNKNOWN unk_4F1184; // weak +int *`typeinfo for'__cxxabiv1::__forced_unwind = &off_4F4F74; // weak +int *`typeinfo for'__cxxabiv1::__foreign_exception = &off_4F4F74; // weak +int *`typeinfo for'__gnu_cxx::recursive_init_error = &off_4F4FB4; // weak +int *`typeinfo for'__gnu_cxx::__concurrence_lock_error = &off_4F4FB4; // weak +int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error = &off_4F4FB4; // weak +int *`typeinfo for'std::locale::facet::__shim = &off_4F4F74; // weak +int *`typeinfo for'std::locale::facet = &off_4F4F74; // weak +int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak +int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak +int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak +int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak +int *`typeinfo for'std::collate = &off_4F4FB4; // weak +int *`typeinfo for'std::collate = &off_4F4FB4; // weak +int *`typeinfo for'std::messages = &off_4F4FE0; // weak +int *`typeinfo for'std::messages = &off_4F4FE0; // weak +int *`typeinfo for'std::numpunct = &off_4F4FB4; // weak +int *`typeinfo for'std::numpunct = &off_4F4FB4; // weak +int *`typeinfo for'std::time_get> = &off_4F4FE0; // weak +int *`typeinfo for'std::time_get> = &off_4F4FE0; // weak +int *`typeinfo for'std::money_get> = &off_4F4FB4; // weak +int *`typeinfo for'std::money_get> = &off_4F4FB4; // weak +int *`typeinfo for'std::money_put> = &off_4F4FB4; // weak +int *`typeinfo for'std::money_put> = &off_4F4FB4; // weak +int *`typeinfo for'std::ios_base::failure = &off_4F4FB4; // weak +int `typeinfo for'std::bad_typeid = 5197748; // weak +int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak +int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak +int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak +int *`typeinfo for'std::moneypunct = &off_4F4FE0; // weak +int *`typeinfo for'std::__timepunct = &off_4F4FB4; // weak +int *`typeinfo for'std::__timepunct = &off_4F4FB4; // weak +int *`typeinfo for'std::logic_error = &off_4F4FB4; // weak +int *`typeinfo for'std::range_error = &off_4F4FB4; // weak +int *`typeinfo for'std::domain_error = &off_4F4FB4; // weak +int *`typeinfo for'std::length_error = &off_4F4FB4; // weak +int *`typeinfo for'std::out_of_range = &off_4F4FB4; // weak +int *`typeinfo for'std::system_error = &off_4F4FB4; // weak +int *`typeinfo for'std::__ios_failure = &off_4F6788; // weak +int *`typeinfo for'std::bad_exception = &off_4F4FB4; // weak +int *`typeinfo for'std::runtime_error = &off_4F4FB4; // weak +int *`typeinfo for'std::overflow_error = &off_4F4FB4; // weak +int *`typeinfo for'std::underflow_error = &off_4F4FB4; // weak +int *`typeinfo for'std::invalid_argument = &off_4F4FB4; // weak +int *`typeinfo for'std::bad_array_new_length = &off_4F4FB4; // weak +int *`typeinfo for'std::ctype = &off_4F4FE0; // weak +int *`typeinfo for'std::ctype = &off_4F4FB4; // weak +int *`typeinfo for'std::codecvt = &off_4F4FB4; // weak +int *`typeinfo for'std::codecvt = &off_4F4FB4; // weak +int *`typeinfo for'std::collate = &off_4F4FB4; // weak +int *`typeinfo for'std::collate = &off_4F4FB4; // weak +int *`typeinfo for'std::num_get> = &off_4F4FB4; // weak +int *`typeinfo for'std::num_get> = &off_4F4FB4; // weak +int *`typeinfo for'std::num_put> = &off_4F4FB4; // weak +int *`typeinfo for'std::num_put> = &off_4F4FB4; // weak +int *`typeinfo for'std::bad_cast = &off_4F4FB4; // weak +int *`typeinfo for'std::messages = &off_4F4FE0; // weak +int *`typeinfo for'std::messages = &off_4F4FE0; // weak +int *`typeinfo for'std::numpunct = &off_4F4FB4; // weak +int *`typeinfo for'std::numpunct = &off_4F4FB4; // weak +int *`typeinfo for'std::time_get> = &off_4F4FE0; // weak +int *`typeinfo for'std::time_get> = &off_4F4FE0; // weak +int *`typeinfo for'std::time_put> = &off_4F4FB4; // weak +int *`typeinfo for'std::time_put> = &off_4F4FB4; // weak +int *`typeinfo for'std::bad_alloc = &off_4F4FB4; // weak +int *`typeinfo for'std::money_get> = &off_4F4FB4; // weak +int *`typeinfo for'std::money_get> = &off_4F4FB4; // weak +int *`typeinfo for'std::money_put> = &off_4F4FB4; // weak +int *`typeinfo for'std::money_put> = &off_4F4FB4; // weak +void (__cdecl *off_4F4F74)(__cxxabiv1::__class_type_info *__hidden this) = &__cxxabiv1::__class_type_info::~__class_type_info; // weak +void (__cdecl *off_4F4FB4)(__cxxabiv1::__si_class_type_info *__hidden this) = &__cxxabiv1::__si_class_type_info::~__si_class_type_info; // weak +void (__cdecl *off_4F4FE0)(__cxxabiv1::__vmi_class_type_info *__hidden this) = &__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info; // weak +void (__cdecl *off_4F500C)(_anonymous_namespace_::io_error_category *__hidden this) = &`anonymous namespace'::io_error_category::~io_error_category; // weak +void (__cdecl *off_4F5084)(WXSS::CSSTreeLib::NonTerminal *__hidden this) = &WXSS::CSSTreeLib::NonTerminal::~NonTerminal; // weak +void (__cdecl *off_4F5098)(WXSS::CSSTreeLib::MarkHostRule *__hidden this) = &WXSS::CSSTreeLib::MarkHostRule::~MarkHostRule; // weak +void (__cdecl *off_4F50B0)(WXSS::CSSTreeLib::AttrDebugRule *__hidden this) = &WXSS::CSSTreeLib::AttrDebugRule::~AttrDebugRule; // weak +void (__cdecl *off_4F50C8)(WXSS::CSSTreeLib::BlackListRule *__hidden this) = &WXSS::CSSTreeLib::BlackListRule::~BlackListRule; // weak +void (__cdecl *off_4F50E0)(WXSS::CSSTreeLib::RuleDebugRule *__hidden this) = &WXSS::CSSTreeLib::RuleDebugRule::~RuleDebugRule; // weak +void (__cdecl *off_4F50F8)(WXSS::CSSTreeLib::ReWriteRpxRule *__hidden this) = &WXSS::CSSTreeLib::ReWriteRpxRule::~ReWriteRpxRule; // weak +void (__cdecl *off_4F5110)(WXSS::CSSTreeLib::MarkSelectorRule *__hidden this) = &WXSS::CSSTreeLib::MarkSelectorRule::~MarkSelectorRule; // weak +void (__cdecl *off_4F5128)(WXSS::CSSTreeLib::RewriteImgUrlRule *__hidden this) = &WXSS::CSSTreeLib::RewriteImgUrlRule::~RewriteImgUrlRule; // weak +void (__cdecl *off_4F5140)(WXSS::CSSTreeLib::RewriteSelectorRule *__hidden this) = &WXSS::CSSTreeLib::RewriteSelectorRule::~RewriteSelectorRule; // weak +void (__cdecl *off_4F516C)(WXSS::CSSTreeLib::Action *__hidden this) = &WXSS::CSSTreeLib::Action::~Action; // weak +void (__cdecl *off_4F5180)(WXSS::CSSTreeLib::AndRules *__hidden this) = &WXSS::CSSTreeLib::AndRules::~AndRules; // weak +void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this) = &WXSS::CSSTreeLib::Terminal::~Terminal; // weak +void (__cdecl *off_4F51AC)(WXSS::CSSTreeLib::TrueRule *__hidden this) = &WXSS::CSSTreeLib::TrueRule::~TrueRule; // weak +void (__cdecl *off_4F51C4)(WXSS::CSSTreeLib::ChildRule *__hidden this) = &WXSS::CSSTreeLib::ChildRule::~ChildRule; // weak +void (__cdecl *off_4F51DC)(WXSS::CSSTreeLib::FalseRule *__hidden this) = &WXSS::CSSTreeLib::FalseRule::~FalseRule; // weak +void (__cdecl *off_4F51F4)(WXSS::CSSTreeLib::RuleChain *__hidden this) = &WXSS::CSSTreeLib::RuleChain::~RuleChain; // weak +void (__cdecl *off_4F520C)(WXSS::CSSTreeLib::SPNotRule *__hidden this) = &WXSS::CSSTreeLib::SPNotRule::~SPNotRule; // weak +int (*off_4F5224)() = &__gnu_cxx::stdio_filebuf::~stdio_filebuf; // weak +int (*off_4F5264)() = &__gnu_cxx::stdio_filebuf::~stdio_filebuf; // weak +int (*off_4F52A4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak +int (*off_4F52E4)() = &__gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf; // weak +void (__cdecl *off_4F5324)(__gnu_cxx::recursive_init_error *__hidden this) = &__gnu_cxx::recursive_init_error::~recursive_init_error; // weak +void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this) = &__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error; // weak +void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this) = &__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error; // weak +int (*off_4F5360)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak +int (*off_4F537C)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak +int (*off_4F5398)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak +int (*off_4F53B4)() = &std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim; // weak +int (*off_4F53D0)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak +int (*off_4F53EC)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak +int (*off_4F5408)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak +int (*off_4F5424)() = &std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim; // weak +int (*off_4F5440)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak +int (*off_4F5464)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak +int (*off_4F5488)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak +int (*off_4F54AC)() = &std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim; // weak +int (*off_4F54D0)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak +int (*off_4F54F8)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak +int (*off_4F5524)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak +int (*off_4F554C)() = &std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim; // weak +int (*off_4F5578)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak +int (*off_4F5590)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak +int (*off_4F55A8)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak +int (*off_4F55C0)() = &std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim; // weak +int (*off_4F55D8)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak +int (*off_4F55F0)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak +int (*off_4F5608)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak +int (*off_4F5620)() = &std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim; // weak +int (*off_4F5638)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_4F566C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_4F56A0)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_4F56D4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_4F5708)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_4F573C)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_4F5770)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_4F57A4)() = &std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim; // weak +int (*off_4F5810)() = &std::moneypunct::~moneypunct; // weak +int (*off_4F5844)() = &std::moneypunct::~moneypunct; // weak +int (*off_4F5878)() = &std::moneypunct::~moneypunct; // weak +int (*off_4F58AC)() = &std::moneypunct::~moneypunct; // weak +int (*off_4F58E0)() = &std::collate_byname::~collate_byname; // weak +int (*off_4F58FC)() = &std::collate_byname::~collate_byname; // weak +int (*off_4F5918)() = &std::stringbuf::~stringbuf; // weak +int (*off_4F5958)() = &std::wstringbuf::~wstringbuf; // weak +int (*off_4F5998)() = &std::messages_byname::~messages_byname; // weak +int (*off_4F59B4)() = &std::messages_byname::~messages_byname; // weak +int (*off_4F59D0)() = &std::numpunct_byname::~numpunct_byname; // weak +int (*off_4F59F4)() = &std::numpunct_byname::~numpunct_byname; // weak +int (*off_4F5A18)() = &std::time_get_byname>::~time_get_byname; // weak +int (*off_4F5A44)() = &std::time_get_byname>::~time_get_byname; // weak +int (*off_4F5A70)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_4F5AA4)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_4F5AD8)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_4F5B0C)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_4F5B44)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak +int (*off_4F5B58[2])() = +{ + &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, + &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream +}; // weak +int (*off_4F5B6C[2])() = +{ + &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, + &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream +}; // weak +int (*off_4F5B80)() = &std::basic_stringstream,std::allocator>::~basic_stringstream; // weak +int (*off_4F5B94[2])() = +{ + &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, + &`non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream +}; // weak +int (*off_4F5BA8[2])() = +{ + &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream, + &`virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream +}; // weak +int (*off_4F5BBC)() = &std::istringstream::~istringstream; // weak +int (*off_4F5BD0[2])() = +{ + &`virtual thunk to'std::istringstream::~istringstream, + &`virtual thunk to'std::istringstream::~istringstream +}; // weak +int (*off_4F5BE4)() = &std::wistringstream::~wistringstream; // weak +int (*off_4F5BF8[2])() = +{ + &`virtual thunk to'std::wistringstream::~wistringstream, + &`virtual thunk to'std::wistringstream::~wistringstream +}; // weak +int (*off_4F5C0C)() = &std::ostringstream::~ostringstream; // weak +int (*off_4F5C20[2])() = +{ + &`virtual thunk to'std::ostringstream::~ostringstream, + &`virtual thunk to'std::ostringstream::~ostringstream +}; // weak +int (*off_4F5C34)() = &std::wostringstream::~wostringstream; // weak +int (*off_4F5C48[2])() = +{ + &`virtual thunk to'std::wostringstream::~wostringstream, + &`virtual thunk to'std::wostringstream::~wostringstream +}; // weak +int (*off_4F5C58)() = &std::collate::~collate; // weak +int (*off_4F5C74)() = &std::collate::~collate; // weak +int (*off_4F5C90)() = &std::messages::~messages; // weak +int (*off_4F5CAC)() = &std::messages::~messages; // weak +int (*off_4F5CC8)() = &std::numpunct::~numpunct; // weak +int (*off_4F5CEC)() = &std::numpunct::~numpunct; // weak +int (*off_4F5D10)() = &std::time_get>::~time_get; // weak +int (*off_4F5D3C)() = &std::time_get>::~time_get; // weak +int (*off_4F5D68)() = &std::money_get>::~money_get; // weak +int (*off_4F5D80)() = &std::money_get>::~money_get; // weak +int (*off_4F5D98)() = &std::money_put>::~money_put; // weak +int (*off_4F5DB0)() = &std::money_put>::~money_put; // weak +int (*off_4F5DC8)() = &std::ios_base::failure[abi:cxx11]::~failure; // weak +void (__cdecl *off_4F5DDC)(std::ios_base::failure *__hidden this) = &std::ios_base::failure::~failure; // weak +void (__cdecl *off_4F5DF4)(std::iostream *__hidden this) = &std::iostream::~iostream; // weak +void (__cdecl *off_4F5E08[2])(std::iostream *__hidden this) = +{ + &`non-virtual thunk to'std::iostream::~iostream, + &`non-virtual thunk to'std::iostream::~iostream +}; // weak +void (__cdecl *off_4F5E1C[2])(std::iostream *__hidden this) = +{ + &`virtual thunk to'std::iostream::~iostream, + &`virtual thunk to'std::iostream::~iostream +}; // weak +void (__cdecl *off_4F5E30)(std::istream *__hidden this) = &std::istream::~istream; // weak +void (__cdecl *off_4F5E44[2])(std::istream *__hidden this) = +{ + &`virtual thunk to'std::istream::~istream, + &`virtual thunk to'std::istream::~istream +}; // weak +void (__cdecl *off_4F5E58)(std::ostream *__hidden this) = &std::ostream::~ostream; // weak +void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this) = +{ + &`virtual thunk to'std::ostream::~ostream, + &`virtual thunk to'std::ostream::~ostream +}; // weak +void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this) = &std::bad_typeid::~bad_typeid; // weak +int (*off_4F5E90)() = &std::moneypunct::~moneypunct; // weak +int (*off_4F5EC4)() = &std::moneypunct::~moneypunct; // weak +int (*off_4F5EF8)() = &std::moneypunct::~moneypunct; // weak +int (*off_4F5F2C)() = &std::moneypunct::~moneypunct; // weak +int (*off_4F5F60)() = &std::__timepunct::~__timepunct; // weak +int (*off_4F5F70)() = &std::__timepunct::~__timepunct; // weak +void (__cdecl *off_4F5F80)(std::logic_error *__hidden this) = &std::logic_error::~logic_error; // weak +void (__cdecl *off_4F5F94)(std::range_error *__hidden this) = &std::range_error::~range_error; // weak +int (*off_4F5FA8)() = &std::ctype_byname::~ctype_byname; // weak +int (*off_4F5FD8)() = &std::ctype_byname::~ctype_byname; // weak +void (__cdecl *off_4F6018)(std::domain_error *__hidden this) = &std::domain_error::~domain_error; // weak +void (__cdecl *off_4F602C)(std::length_error *__hidden this) = &std::length_error::~length_error; // weak +void (__cdecl *off_4F6040)(std::out_of_range *__hidden this) = &std::out_of_range::~out_of_range; // weak +void (__cdecl *off_4F6054)(std::system_error *__hidden this) = &std::system_error::~system_error; // weak +void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this) = &std::__ios_failure::~__ios_failure; // weak +void (__cdecl *off_4F607C)(std::bad_exception *__hidden this) = &std::bad_exception::~bad_exception; // weak +int (*off_4F6090)() = &std::filebuf::~filebuf; // weak +int (*off_4F60D0)() = &std::wfilebuf::~wfilebuf; // weak +int (*off_4F6114)() = &std::fstream::~fstream; // weak +int (*off_4F6128[2])() = +{ + &`non-virtual thunk to'std::fstream::~fstream, + &`non-virtual thunk to'std::fstream::~fstream +}; // weak +int (*off_4F613C[2])() = +{ + &`virtual thunk to'std::fstream::~fstream, + &`virtual thunk to'std::fstream::~fstream +}; // weak +int (*off_4F6150)() = &std::wfstream::~wfstream; // weak +int (*off_4F6164[2])() = +{ + &`non-virtual thunk to'std::wfstream::~wfstream, + &`non-virtual thunk to'std::wfstream::~wfstream +}; // weak +int (*off_4F6178[2])() = +{ + &`virtual thunk to'std::wfstream::~wfstream, + &`virtual thunk to'std::wfstream::~wfstream +}; // weak +int (*off_4F618C)() = &std::wistream::~wistream; // weak +int (*off_4F61A0[2])() = +{ + &`virtual thunk to'std::wistream::~wistream, + &`virtual thunk to'std::wistream::~wistream +}; // weak +int (*off_4F61B4)() = &std::wostream::~wostream; // weak +int (*off_4F61C8[2])() = +{ + &`virtual thunk to'std::wostream::~wostream, + &`virtual thunk to'std::wostream::~wostream +}; // weak +void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this) = &std::runtime_error::~runtime_error; // weak +int (*off_4F61F0)() = &std::ifstream::~ifstream; // weak +int (*off_4F6204[2])() = +{ + &`virtual thunk to'std::ifstream::~ifstream, + &`virtual thunk to'std::ifstream::~ifstream +}; // weak +int (*off_4F6218)() = &std::wifstream::~wifstream; // weak +int (*off_4F622C[2])() = +{ + &`virtual thunk to'std::wifstream::~wifstream, + &`virtual thunk to'std::wifstream::~wifstream +}; // weak +int (*off_4F6240)() = &std::wiostream::~basic_iostream; // weak +int (*off_4F6254[2])() = +{ + &`non-virtual thunk to'std::wiostream::~basic_iostream, + &`non-virtual thunk to'std::wiostream::~basic_iostream +}; // weak +int (*off_4F6268[2])() = +{ + &`virtual thunk to'std::wiostream::~basic_iostream, + &`virtual thunk to'std::wiostream::~basic_iostream +}; // weak +int (*off_4F627C)() = &std::ofstream::~ofstream; // weak +int (*off_4F6290[2])() = +{ + &`virtual thunk to'std::ofstream::~ofstream, + &`virtual thunk to'std::ofstream::~ofstream +}; // weak +int (*off_4F62A4)() = &std::wofstream::~wofstream; // weak +int (*off_4F62B8[2])() = +{ + &`virtual thunk to'std::wofstream::~wofstream, + &`virtual thunk to'std::wofstream::~wofstream +}; // weak +int (*off_4F62C8)() = &std::codecvt_byname::~codecvt_byname; // weak +int (*off_4F62F4)() = &std::codecvt_byname::~codecvt_byname; // weak +int (*off_4F6320)() = &std::collate_byname::~collate_byname; // weak +int (*off_4F633C)() = &std::collate_byname::~collate_byname; // weak +void (__cdecl *off_4F6358)(std::overflow_error *__hidden this) = &std::overflow_error::~overflow_error; // weak +int (*off_4F636C)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak +int (*off_4F63A4)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak +int (*off_4F63C0)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak +int (*off_4F63DC)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak +int (*off_4F63F8)() = &std::_Sp_counted_ptr::~_Sp_counted_ptr; // weak +int (*off_4F6414)() = &std::streambuf::~streambuf; // weak +int (*off_4F6454)() = &std::wstreambuf::~wstreambuf; // weak +int (*off_4F6494)() = &std::messages_byname::~messages_byname; // weak +int (*off_4F64B0)() = &std::messages_byname::~messages_byname; // weak +int (*off_4F64CC)() = &std::numpunct_byname::~numpunct_byname; // weak +int (*off_4F64F0)() = &std::numpunct_byname::~numpunct_byname; // weak +int (*off_4F6514)() = &std::time_get_byname>::~time_get_byname; // weak +int (*off_4F653C)() = &std::time_get_byname>::~time_get_byname; // weak +int (*off_4F6564)() = &std::time_put_byname>::~time_put_byname; // weak +int (*off_4F6578)() = &std::time_put_byname>::~time_put_byname; // weak +void (__cdecl *off_4F658C)(std::underflow_error *__hidden this) = &std::underflow_error::~underflow_error; // weak +int (*off_4F65A0)() = &std::__numpunct_cache::~__numpunct_cache; // weak +int (*off_4F65B0)() = &std::__numpunct_cache::~__numpunct_cache; // weak +void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this) = &std::invalid_argument::~invalid_argument; // weak +int (*off_4F65D4)() = &std::__timepunct_cache::~__timepunct_cache; // weak +int (*off_4F65E4)() = &std::__timepunct_cache::~__timepunct_cache; // weak +int (*off_4F65F4)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_4F6628)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_4F665C)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_4F6690)() = &std::moneypunct_byname::~moneypunct_byname; // weak +int (*off_4F66C4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak +int (*off_4F66D4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak +int (*off_4F66E4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak +int (*off_4F66F4)() = &std::__moneypunct_cache::~__moneypunct_cache; // weak +int (*off_4F675C)() = &std::__codecvt_utf8_base::~__codecvt_utf8_base; // weak +void (__cdecl *off_4F6788)(std::__iosfail_type_info *__hidden this) = &std::__iosfail_type_info::~__iosfail_type_info; // weak +int (*off_4F680C)() = &std::__codecvt_utf16_base::~__codecvt_utf16_base; // weak +void (__cdecl *off_4F6838)(std::bad_array_new_length *__hidden this) = &std::bad_array_new_length::~bad_array_new_length; // weak +_UNKNOWN unk_4F688C; // weak +_UNKNOWN unk_4F68CC; // weak +_UNKNOWN unk_4F68F8; // weak +_UNKNOWN unk_4F6924; // weak +_UNKNOWN unk_4F6950; // weak +_UNKNOWN unk_4F697C; // weak +_UNKNOWN unk_4F69A8; // weak +int (*off_4F6A2C)() = &std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base; // weak +int (*off_4F6A58)() = &std::ctype::~ctype; // weak +int (*off_4F6A88)() = &std::ctype::~ctype; // weak +int (*off_4F6AC8)() = &std::codecvt::~codecvt; // weak +int (*off_4F6AF4)() = &std::codecvt::~codecvt; // weak +int (*off_4F6B20)() = &std::codecvt::~codecvt; // weak +int (*off_4F6B4C)() = &std::codecvt::~codecvt; // weak +int (*off_4F6B78)() = &std::codecvt::~codecvt; // weak +int (*off_4F6BA4)() = &std::codecvt::~codecvt; // weak +int (*off_4F6BD0)() = &std::collate::~collate; // weak +int (*off_4F6BEC)() = &std::collate::~collate; // weak +int (*off_4F6C08)() = &std::num_get>::~num_get; // weak +int (*off_4F6C44)() = &std::num_get>::~num_get; // weak +int (*off_4F6C80)() = &std::num_put>::~num_put; // weak +int (*off_4F6CB0)() = &std::num_put>::~num_put; // weak +void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this) = &std::bad_cast::~bad_cast; // weak +void (__cdecl *off_4F6CF4)(std::ios_base *__hidden this) = &std::ios_base::~ios_base; // weak +int (*off_4F6D04)() = &std::messages::~messages; // weak +int (*off_4F6D20)() = &std::messages::~messages; // weak +int (*off_4F6D3C)() = &std::numpunct::~numpunct; // weak +int (*off_4F6D60)() = &std::numpunct::~numpunct; // weak +int (*off_4F6D84)() = &std::time_get>::~time_get; // weak +int (*off_4F6DAC)() = &std::time_get>::~time_get; // weak +int (*off_4F6DD4)() = &std::time_put>::~time_put; // weak +int (*off_4F6DE8)() = &std::time_put>::~time_put; // weak +void (__cdecl *off_4F6DFC)(std::bad_alloc *__hidden this) = &std::bad_alloc::~bad_alloc; // weak +int (*off_4F6E10)() = &std::ios::~ios; // weak +int (*off_4F6E20)() = &std::wios::~wios; // weak +int (*off_4F6E44)() = &std::money_get>::~money_get; // weak +int (*off_4F6E5C)() = &std::money_get>::~money_get; // weak +int (*off_4F6E74)() = &std::money_put>::~money_put; // weak +int (*off_4F6E8C)() = &std::money_put>::~money_put; // weak +void *std::ctype::classic_table(void)::_S_classic_table = &unk_1000100; // weak +_UNKNOWN __EH_FRAME_BEGIN__; // weak +char **_bss_start__; // idb +int _argc; // idb +_UNKNOWN obj; // weak +_UNKNOWN WXML::RPX::acceptNum(char const*,int &)::nextPos; // weak +int dword_53C0EC; // weak +int dword_53C0F4; // weak +int dword_53C0F8; // weak +int dword_53C100[264]; // weak +int dword_53C520; // weak +int dword_53C528[264]; // weak +int dword_53C948; // weak +int dword_53C950[266]; // weak +int dword_53CD78[266]; // weak +int dword_53D1A0[218]; // weak +char WXML::RPX::acceptNum(char const*,int &)::inited; // weak +_UNKNOWN WXML::RPX::acceptStr(char const*,int &)::nextPos; // weak +int dword_53D5A8; // weak +int dword_53D5BC; // weak +int dword_53D948[34]; // weak +int dword_53D9D0; // weak +int dword_53DAB8; // weak +int dword_53DD70[39]; // weak +int dword_53DE0C; // weak +int dword_53DEE0; // weak +int dword_53E198[266]; // weak +int dword_53E5C0[532]; // weak +char WXML::RPX::acceptStr(char const*,int &)::inited; // weak +_UNKNOWN WXML::RPX::acceptID(char const*,int &)::nextPos; // weak +int dword_53EF24[30]; // weak +int dword_53EF9C; // weak +int dword_53EFA4[217]; // weak +int dword_53F308; // weak +int dword_53F30C; // weak +int dword_53F310; // weak +int dword_53F314; // weak +int dword_53F318; // weak +int dword_53F31C; // weak +int dword_53F320; // weak +int dword_53F324; // weak +int dword_53F328; // weak +int dword_53F32C; // weak +int dword_53F34C[30]; // weak +int dword_53F3C4; // weak +int dword_53F3CC[169]; // weak +char WXML::RPX::acceptID(char const*,int &)::inited; // weak +_UNKNOWN WXSS::Tokenizer::SCC; // weak +int dword_53F6B8[1786]; // weak +int WXSS::Tokenizer::TT[]; // weak +int dword_541AA0[]; // weak +int dword_5422A0[]; // weak +int dword_5422A4[67]; // weak +int dword_5423B0; // weak +int dword_5423B4; // weak +int dword_5423B8; // weak +int dword_5423BC; // weak +int dword_5423C0; // weak +int dword_5423C4; // weak +int dword_5423D8; // weak +int dword_5423DC; // weak +int dword_542418; // weak +int dword_54241C; // weak +int dword_5424A0; // weak +int dword_5424A4; // weak +int dword_542678; // weak +int dword_54267C; // weak +int dword_542AA0; // weak +int dword_542AA4; // weak +int dword_5432A0[]; // weak +int dword_5432A4[67]; // weak +int dword_5433B0; // weak +int dword_5433B4; // weak +int dword_543AA0; // weak +int dword_543AA4; // weak +int dword_5442A0[]; // weak +int dword_5442A4[167]; // weak +int dword_544AA0; // weak +int dword_544AA4; // weak +int dword_5452A0[]; // weak +int dword_5452A4[39]; // weak +int dword_545418; // weak +int dword_54541C; // weak +int dword_545470; // weak +int dword_545474; // weak +int dword_545478; // weak +int dword_54547C; // weak +int dword_545688; // weak +int dword_54568C; // weak +int dword_545AA0; // weak +int dword_545AA4; // weak +int dword_5462A0[]; // weak +int dword_5462A4[73]; // weak +int dword_5463C8; // weak +int dword_5463CC; // weak +int dword_546AA0; // weak +int dword_546AA4; // weak +int dword_5473B0; // weak +int dword_5473B4; // weak +int dword_547AA0; // weak +int dword_547AA4; // weak +int dword_5483D8; // weak +int dword_5483DC; // weak +int dword_548AA0; // weak +int dword_548AA4; // weak +int dword_5492A0[]; // weak +int dword_5492A4[115]; // weak +int dword_549470; // weak +int dword_549474; // weak +int dword_549478; // weak +int dword_54947C; // weak +int dword_549688; // weak +int dword_54968C; // weak +int dword_549AA0; // weak +int dword_549AA4; // weak +int dword_54A3B0; // weak +int dword_54A3B4; // weak +int dword_54A3D8; // weak +int dword_54A3DC; // weak +int dword_54A3E0; // weak +int dword_54A3E4; // weak +int dword_54A478; // weak +int dword_54A47C; // weak +int dword_54A688; // weak +int dword_54A68C; // weak +int dword_54AAA0; // weak +int dword_54AAA4; // weak +int dword_54B3B0; // weak +int dword_54B3B4; // weak +int dword_54B3D8; // weak +int dword_54B3DC; // weak +int dword_54B3E8; // weak +int dword_54B3EC; // weak +int dword_54BAA0; // weak +int dword_54BAA4; // weak +int dword_54C3B0; // weak +int dword_54C3B4; // weak +int dword_54CAA0; // weak +int dword_54CAA4; // weak +int dword_54D3B0; // weak +int dword_54D3B4; // weak +int dword_54DAA0; // weak +int dword_54DAA4; // weak +int dword_54E3D8; // weak +int dword_54E3DC; // weak +int dword_54EAA0; // weak +int dword_54EAA4; // weak +int dword_54F3D8; // weak +int dword_54F3DC; // weak +int dword_54FAA0; // weak +int dword_54FAA4; // weak +int dword_5503F0; // weak +int dword_5503F4; // weak +int dword_550AA0; // weak +int dword_550AA4; // weak +int dword_5513F0; // weak +int dword_5513F4; // weak +int dword_551AA0; // weak +int dword_551AA4; // weak +int dword_5523F0; // weak +int dword_5523F4; // weak +int dword_552418; // weak +int dword_55241C; // weak +int dword_552AA0; // weak +int dword_552AA4; // weak +int dword_5533F0; // weak +int dword_5533F4; // weak +int dword_553AA0; // weak +int dword_553AA4; // weak +int dword_5543F0; // weak +int dword_5543F4; // weak +int dword_554AA0; // weak +int dword_554AA4; // weak +int dword_5553F0; // weak +int dword_5553F4; // weak +int dword_555418; // weak +int dword_55541C; // weak +int dword_555AA0; // weak +int dword_555AA4; // weak +int dword_5582A0[]; // weak +int dword_5582A4[511]; // weak +int dword_558AA0; // weak +int dword_558AA4; // weak +int dword_5592A0; // weak +int dword_5592A4; // weak +int dword_559678; // weak +int dword_55967C; // weak +int dword_559AA0; // weak +int dword_559AA4; // weak +int dword_55A678; // weak +int dword_55A67C; // weak +int dword_55AAA0; // weak +int dword_55AAA4; // weak +_UNKNOWN unk_7FFFFF; // weak +_UNKNOWN unk_800000; // weak +_UNKNOWN unk_1000000; // weak +_UNKNOWN unk_1440001; // weak +int WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited; // weak +char WXSS::Tokenizer::InitTransitTable(void)::bInited; // weak +int _CRT_fmode; // idb +int __cpu_features; // weak +int dword_15412CC; // weak +int _CRT_MT; // weak +int dword_15412E4; // weak +int dword_15412E8; // weak +struct _RTL_CRITICAL_SECTION CriticalSection; // idb +int dword_1541304; // weak +int dword_1541320; // weak +_UNKNOWN unk_1541340; // weak +int dword_1541C40[10]; // weak +LONG Target; // idb +struct _RTL_CRITICAL_SECTION stru_1541C80; // idb +struct _RTL_CRITICAL_SECTION stru_1541C98; // idb +int dword_1541CC0; // weak +_UNKNOWN unk_1541CC4; // weak +_UNKNOWN unk_1541CC8; // weak +_UNKNOWN __mingw_output_format_flags; // weak +char byte_1541CCD; // weak +int __mingw_memalign_lwm; // weak +unsigned __int8 dwarf_reg_size_table[18]; // idb +_UNKNOWN marker_22456; // weak +__gthread_mutex_t object_mutex; // idb +object *seen_objects; // idb +object *unseen_objects; // idb +pointer emutls_size; // idb +__gthread_key_t emutls_key; // idb +__gthread_mutex_t emutls_mutex; // idb +HMODULE hmod_libgcc; // idb +char __hexdig_D2A[48]; // weak +char byte_1541D50; // weak +// extern int ___mb_cur_max; +// extern void (__cdecl *___set_app_type)(_crt_app_type Type); +// extern void (__cdecl *__fpreset)(); +// extern FILE __iob[]; +// extern const unsigned __int16 *__pctype; + + +//----- (00401000) -------------------------------------------------------- +LONG __stdcall TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo) +{ + DWORD ExceptionCode; // eax + int v2; // edx + _crt_signal_t v3; // eax + _crt_signal_t v5; // eax + _crt_signal_t v6; // eax + + ExceptionCode = ExceptionInfo->ExceptionRecord->ExceptionCode; + if ( ExceptionCode == -1073741677 ) + { +LABEL_6: + v3 = signal(8, 0); + if ( v3 == (_crt_signal_t)1 ) + { + signal(8, (_crt_signal_t)1); + fesetenv(0); + return -1; + } +LABEL_7: + if ( v3 ) + { + v3(8); + return -1; + } + return 0; + } + if ( ExceptionCode > 0xC0000093 ) + { + if ( ExceptionCode == -1073741676 ) + { + v3 = signal(8, 0); + if ( v3 == (_crt_signal_t)1 ) + { + signal(8, (_crt_signal_t)1); + return -1; + } + goto LABEL_7; + } + if ( ExceptionCode != -1073741674 ) + return 0; +LABEL_18: + v6 = signal(4, 0); + if ( v6 == (_crt_signal_t)1 ) + { + signal(4, (_crt_signal_t)1); + return -1; + } + if ( v6 ) + { + v6(4); + return -1; + } + return 0; + } + if ( ExceptionCode == -1073741795 ) + goto LABEL_18; + if ( ExceptionCode <= 0xC000001D ) + { + if ( ExceptionCode == -1073741819 ) + { + v5 = signal(11, 0); + if ( v5 == (_crt_signal_t)1 ) + { + signal(11, (_crt_signal_t)1); + return -1; + } + if ( v5 ) + { + v5(11); + return -1; + } + } + return 0; + } + v2 = 0; + if ( ExceptionCode + 1073741683 <= 4 ) + goto LABEL_6; + return v2; +} + +//----- (004011A0) -------------------------------------------------------- +void __usercall __noreturn sub_4011A0(__int32 a1@) +{ + char ***v1; // eax + int v2; // ebx + + if ( __dyn_tls_init_callback ) + __dyn_tls_init_callback(0, 2, 0); + SetUnhandledExceptionFilter(TopLevelExceptionFilter); + __cpu_features_init(a1); + fesetenv(_CRT_fenv); + _setargv(); + if ( _CRT_fmode ) + { + _fmode = _CRT_fmode; + _setmode(__iob[0]._file, _CRT_fmode); + _setmode(__iob[1]._file, _CRT_fmode); + _setmode(__iob[2]._file, _CRT_fmode); + } + *__p__fmode() = _fmode; + _pei386_runtime_relocator(); + __main(); + v1 = __p__environ(); + v2 = main(_argc, (const char **)_bss_start__, (const char **)*v1); + _cexit(); + ExitProcess(v2); +} +// 4EFBCC: using guessed type int (__stdcall *__dyn_tls_init_callback)(_DWORD, _DWORD, _DWORD); + +//----- (00401290) -------------------------------------------------------- +int _mingw32_init_mainargs() +{ + char v1[4]; // [esp+28h] [ebp-14h] BYREF + int v2[4]; // [esp+2Ch] [ebp-10h] BYREF + + v2[0] = 0; + return __getmainargs(&_argc, &_bss_start__, v1, _CRT_glob & 1, v2); +} +// 43B3F8: using guessed type int __cdecl __getmainargs(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); +// 4E8020: using guessed type int _CRT_glob; +// 401290: using guessed type int var_10[4]; +// 401290: using guessed type char var_14[4]; + +//----- (004012D0) -------------------------------------------------------- +void __usercall __noreturn mainCRTStartup(__int32 a1@) +{ + ___set_app_type(_crt_console_app); + sub_4011A0(a1); +} + +//----- (004012F0) -------------------------------------------------------- +void __usercall __noreturn WinMainCRTStartup(__int32 a1@) +{ + ___set_app_type(_crt_gui_app); + sub_4011A0(a1); +} + +//----- (00401330) -------------------------------------------------------- +int __gcc_register_frame() +{ + HMODULE ModuleHandleA; // eax + HMODULE v1; // ebx + void (__cdecl *__register_frame_info)(void *, void *); // esi + + ModuleHandleA = GetModuleHandleA("libgcc_s_dw2-1.dll"); + if ( ModuleHandleA ) + { + v1 = ModuleHandleA; + hmod_libgcc = LoadLibraryA("libgcc_s_dw2-1.dll"); + __register_frame_info = (void (__cdecl *)(void *, void *))GetProcAddress(v1, "__register_frame_info"); + _data_start__ = (int (__cdecl *)(_DWORD))GetProcAddress(v1, "__deregister_frame_info"); + } + else + { + _data_start__ = (int (__cdecl *)(_DWORD))__deregister_frame_info; + __register_frame_info = (void (__cdecl *)(void *, void *))::__register_frame_info; + } + if ( __register_frame_info ) + __register_frame_info(&__EH_FRAME_BEGIN__, &obj); + return atexit(__gcc_deregister_frame); +} +// 4E7000: using guessed type int (__cdecl *_data_start__)(_DWORD); + +//----- (004013E0) -------------------------------------------------------- +void __cdecl __gcc_deregister_frame() +{ + if ( _data_start__ ) + _data_start__(&__EH_FRAME_BEGIN__); + if ( hmod_libgcc ) + FreeLibrary(hmod_libgcc); +} +// 4E7000: using guessed type int (__cdecl *_data_start__)(_DWORD); + +//----- (00401410) -------------------------------------------------------- +void __cdecl __tcf_1() +{ + std::ios_base::Init::~Init(); +} + +//----- (0040141A) -------------------------------------------------------- +void __usercall std::_Vector_base::_M_deallocate(void *a1@) +{ + if ( a1 ) + operator delete(a1); +} +// 40141A: could not find valid save-restore pair for ebp + +//----- (00401430) -------------------------------------------------------- +void __fastcall std::pair::~pair(void **a1) +{ + std::string::_M_dispose(a1 + 6); + std::string::_M_dispose(a1); +} + +//----- (00401449) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + void **a1@, + void **a2@, + _DWORD *a3@) +{ + _DWORD *v4; // eax + void **i; // ebx + void **v7; // ecx + _DWORD *v9; // [esp+18h] [ebp-20h] + + v4 = a3; + for ( i = a1; i != a2; i += 6 ) + { + v9 = v4; + std::string::basic_string(v4, i); + v7 = i; + std::string::_M_dispose(v7); + v4 = v9 + 6; + } + return &a3[6 * ((178956971 * ((unsigned int)((char *)i - (char *)a1) >> 3)) & 0x1FFFFFFF)]; +} + +//----- (004014A2) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + if ( !a2 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 4014A2: using guessed type unsigned int var_1C[7]; + +//----- (00401524) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 6 ) + { + v4 = i; + std::string::_M_dispose(v4); + } + std::_Vector_base::_M_deallocate(*a1); +} + +//----- (00401552) -------------------------------------------------------- +int __cdecl Usage(int a1, const char **a2) +{ + printf("*** WeChat Stylesheet Compiler, Version %s ***\n", "v0.4me_20200724_db"); + printf( + "Usage: %s [-lc] [-o OUTPUT] [-s ] [-st] [-js] [-db] [-cp ] [-pc ] <[-sd ] | [import_css_files..]>\n", + *a2); + puts(" -lc: need to lint the css"); + puts(" -sd: 'someclass { font-size: 18px }'"); + puts(" -s: read from stdin"); + puts(" -o: output destination (default stdout)"); + puts(" -st: print tree"); + puts(" -db: add debug attr"); + puts(" -js: js formate output"); + puts(" -cp: add class prefix"); + puts(" -pc: page wxss files count"); + return 0; +} + +//----- (004015F1) -------------------------------------------------------- +int __cdecl ReadFile(char *FileName, unsigned int *a2) +{ + int v2; // edi + FILE *ptr; // ebx + char Buffer[4]; // [esp+10h] [ebp-418h] BYREF + char v6[1020]; // [esp+14h] [ebp-414h] BYREF + + std::string::operator=(a2, (char *)&byte_4EA251); + if ( FileName ) + { + v2 = -1; + ptr = fopen(FileName, "r"); + if ( !ptr ) + return v2; + } + else + { + ptr = (FILE *)__iob[0]._ptr; + } + *(_DWORD *)Buffer = 0; + memset(v6, 0, sizeof(v6)); + while ( fgets(Buffer, 1024, ptr) ) + std::string::operator+=(a2, Buffer); + v2 = 0; + if ( FileName ) + fclose(ptr); + return v2; +} + +//----- (00401692) -------------------------------------------------------- +_DWORD *__cdecl Trim(_DWORD *a1, int a2) +{ + unsigned int v2; // eax + void *v4[6]; // [esp+10h] [ebp-38h] BYREF + void *v5[8]; // [esp+28h] [ebp-20h] BYREF + + std::string::basic_string(a1, a2); + while ( a1[1] > 1u && *(_BYTE *)*a1 == 32 ) + { + std::string::substr(v4, a1, 1u, 0xFFFFFFFF); + std::string::operator=(a1, v4); + std::string::_M_dispose(v4); + } + while ( 1 ) + { + v2 = a1[1]; + if ( v2 <= 1 || *(_BYTE *)(*a1 + v2 - 1) != 32 ) + break; + std::string::substr(v5, a1, 0, v2 - 1); + std::string::operator=(a1, v5); + std::string::_M_dispose(v5); + } + return a1; +} + +//----- (0040174A) -------------------------------------------------------- +_DWORD *__cdecl GetNextArg(_DWORD *a1, int *a2, int a3) +{ + int v3; // eax + int v4; // ebx + void *v6[2]; // [esp+18h] [ebp-60h] BYREF + char v7; // [esp+20h] [ebp-58h] BYREF + void *v8[6]; // [esp+30h] [ebp-48h] BYREF + void *v9[12]; // [esp+48h] [ebp-30h] BYREF + + v3 = std::string::find(a2, *(char **)a3, 0); + v6[1] = 0; + v4 = v3; + v6[0] = &v7; + v7 = 0; + if ( v3 == -1 ) + { + std::string::_M_assign((int)v6, (int)a2); + std::string::operator=((unsigned int *)a2, (char *)&byte_4EA251); + } + else + { + std::string::substr(v8, a2, 0, v3); + std::string::operator=(v6, v8); + std::string::_M_dispose(v8); + std::string::substr(v9, a2, *(_DWORD *)(a3 + 4) + v4, 0xFFFFFFFF); + std::string::operator=(a2, v9); + std::string::_M_dispose(v9); + } + Trim(a1, (int)v6); + std::string::_M_dispose(v6); + return a1; +} + +//----- (0040184C) -------------------------------------------------------- +int __cdecl EscapeToJsonString(int a1, int a2) +{ + char *i; // ebx + char v3; // al + char *v4; // eax + char *v5; // eax + char v7[4]; // [esp+18h] [ebp-D0h] BYREF + int v8[51]; // [esp+1Ch] [ebp-CCh] BYREF + + std::ostringstream::basic_ostringstream((int)v7); + for ( i = *(char **)a2; i != (char *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 4)); ++i ) + { + v3 = *i; + if ( *i == 92 || v3 == 34 || (unsigned __int8)v3 <= 0x1Fu ) + { + v4 = (char *)std::operator<<>((std::ostream::sentry *)v7, "\\u"); + v5 = std::ostream::operator<<(v4, (void (__cdecl *)(char *))std::hex); + *(_DWORD *)&v5[*(_DWORD *)(*(_DWORD *)v5 - 12) + 8] = 4; + std::operator<<>(v5, 48); + std::ostream::operator<<(*i); + } + else + { + std::operator<<>((std::ostream::sentry *)v7, *i); + } + } + std::stringbuf::str(a1, v8); + std::ostringstream::~ostringstream((int)v7); + return a1; +} +// 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 40184C: using guessed type char var_D0[4]; +// 40184C: using guessed type int var_CC[51]; + +//----- (00401921) -------------------------------------------------------- +int __cdecl DictToJsonString(int a1, int a2) +{ + int v2; // ebx + char v3; // al + std::ostream::sentry *v4; // edi + std::ostream::sentry *v5; // eax + std::ostream::sentry *v6; // esi + std::ostream::sentry *v7; // eax + char *v9[6]; // [esp+20h] [ebp-F8h] BYREF + char v10[4]; // [esp+38h] [ebp-E0h] BYREF + int v11[55]; // [esp+3Ch] [ebp-DCh] BYREF + + std::ostringstream::basic_ostringstream((int)v10); + std::operator<<>((std::ostream::sentry *)v10, "{"); + v2 = *(_DWORD *)(a2 + 12); + v3 = 1; + while ( a2 + 4 != v2 ) + { + if ( !v3 ) + std::operator<<>((std::ostream::sentry *)v10, ","); + v4 = std::operator<<>((std::ostream::sentry *)v10, "\""); + EscapeToJsonString((int)v9, v2 + 16); + v5 = std::operator<<>(v4, v9[0]); + std::operator<<>(v5, "\":"); + std::string::_M_dispose((void **)v9); + v6 = std::operator<<>((std::ostream::sentry *)v10, "\""); + EscapeToJsonString((int)v9, v2 + 40); + v7 = std::operator<<>(v6, v9[0]); + std::operator<<>(v7, "\""); + std::string::_M_dispose((void **)v9); + v2 = std::_Rb_tree_increment(v2); + v3 = 0; + } + std::operator<<>((std::ostream::sentry *)v10, "}"); + std::stringbuf::str(a1, v11); + std::ostringstream::~ostringstream((int)v10); + return a1; +} +// 4D1A50: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); +// 401921: using guessed type char var_E0[4]; +// 401921: using guessed type int var_DC[55]; + +//----- (00401A98) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (00401AAC) -------------------------------------------------------- +void __cdecl __tcf_3() +{ + std::ios_base::Init::~Init(); +} + +//----- (00401AB6) -------------------------------------------------------- +void __usercall std::_Vector_base::_M_deallocate(void *a1@) +{ + if ( a1 ) + operator delete(a1); +} +// 401AB6: could not find valid save-restore pair for ebp + +//----- (00401ACB) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + void **a1@, + void **a2@, + _DWORD *a3@) +{ + _DWORD *v4; // eax + void **i; // ebx + void **v7; // ecx + _DWORD *v9; // [esp+18h] [ebp-20h] + + v4 = a3; + for ( i = a1; i != a2; i += 6 ) + { + v9 = v4; + std::string::basic_string(v4, i); + v7 = i; + std::string::_M_dispose(v7); + v4 = v9 + 6; + } + return &a3[6 * ((178956971 * ((unsigned int)((char *)i - (char *)a1) >> 3)) & 0x1FFFFFFF)]; +} + +//----- (00401B23) -------------------------------------------------------- +int snprintf_constprop_0(char *Buffer, size_t BufferCount, int a3, ...) +{ + va_list va; // [esp+2Ch] [ebp+14h] BYREF + + va_start(va, a3); + return vsnprintf( + Buffer, + BufferCount, + "var BASE_DEVICE_WIDTH = 750;\n" + "var isIOS=navigator.userAgent.match(\"iPhone\");\n" + "var deviceWidth = window.screen.width || 375;\n" + "var deviceDPR = window.devicePixelRatio || 2;\n" + "var checkDeviceWidth = window.__checkDeviceWidth__ || function() {\n" + "var newDeviceWidth = window.screen.width || 375\n" + "var newDeviceDPR = window.devicePixelRatio || 2\n" + "var newDeviceHeight = window.screen.height || 375\n" + "if (window.screen.orientation && /^landscape/.test(window.screen.orientation.type || '')) newDeviceWidth = ne" + "wDeviceHeight\n" + "if (newDeviceWidth !== deviceWidth || newDeviceDPR !== deviceDPR) {\n" + "deviceWidth = newDeviceWidth\n" + "deviceDPR = newDeviceDPR\n" + "}\n" + "}\n" + "checkDeviceWidth()\n" + "var eps = 1e-4;\n" + "var transformRPX = window.__transformRpx__ || function(number, newDeviceWidth) {\n" + "if ( number === 0 ) return 0;\n" + "number = number / BASE_DEVICE_WIDTH * ( newDeviceWidth || deviceWidth );\n" + "number = Math.floor(number + eps);\n" + "if (number === 0) {\n" + "if (deviceDPR === 1 || !isIOS) {\n" + "return 1;\n" + "} else {\n" + "return 0.5;\n" + "}\n" + "}\n" + "return number;\n" + "}\n" + "window.__rpxRecalculatingFuncs__ = window.__rpxRecalculatingFuncs__ || [];\n" + "var __COMMON_STYLESHEETS__ = __COMMON_STYLESHEETS__||{}\n" + "%s\n" + "var setCssToHead = function(file, _xcInvalid, info) {\n" + "var Ca = {};\n" + "var css_id;\n" + "var info = info || {};\n" + "var _C = __COMMON_STYLESHEETS__\n" + "function makeup(file, opt) {\n" + "var _n = typeof(file) === \"string\";\n" + "if ( _n && Ca.hasOwnProperty(file)) return \"\";\n" + "if ( _n ) Ca[file] = 1;\n" + "var ex = _n ? _C[file] : file;\n" + "var res=\"\";\n" + "for (var i = ex.length - 1; i >= 0; i--) {\n" + "var content = ex[i];\n" + "if (typeof(content) === \"object\")\n" + "{\n" + "var op = content[0];\n" + "if ( op == 0 )\n" + "res = transformRPX(content[1], opt.deviceWidth) + \"px\" + res;\n" + "else if ( op == 1)\n" + "res = opt.suffix + res;\n" + "else if ( op == 2 )\n" + "res = makeup(content[1], opt) + res;\n" + "}\n" + "else\n" + "res = content + res\n" + "}\n" + "return res;\n" + "}\n" + "var styleSheetManager = window.__styleSheetManager2__\n" + "var rewritor = function(suffix, opt, style){\n" + "opt = opt || {};\n" + "suffix = suffix || \"\";\n" + "opt.suffix = suffix;\n" + "if ( opt.allowIllegalSelector != undefined && _xcInvalid != undefined )\n" + "{\n" + "if ( opt.allowIllegalSelector )\n" + "console.warn( \"For developer:\" + _xcInvalid );\n" + "else\n" + "{\n" + "console.error( _xcInvalid );\n" + "}\n" + "}\n" + "Ca={};\n" + "css = makeup(file, opt);\n" + "if (styleSheetManager) {\n" + "var key = (info.path || Math.random()) + ':' + suffix\n" + "if (!style) {\n" + "styleSheetManager.addItem(key, info.path);\n" + "window.__rpxRecalculatingFuncs__.push(function(size){\n" + "opt.deviceWidth = size.width;\n" + "rewritor(suffix, opt, true);\n" + "});\n" + "}\n" + "styleSheetManager.setCss(key, css);\n" + "return;\n" + "}\n" + "if ( !style )\n" + "{\n" + "var head = document.head || document.getElementsByTagName('head')[0];\n" + "style = document.createElement('style');\n" + "style.type = 'text/css';\n" + "style.setAttribute( \"wxss:path\", info.path );\n" + "head.appendChild(style);\n" + "window.__rpxRecalculatingFuncs__.push(function(size){\n" + "opt.deviceWidth = size.width;\n" + "rewritor(suffix, opt, style);\n" + "});\n" + "}\n" + "if (style.styleSheet) {\n" + "style.styleSheet.cssText = css;\n" + "} else {\n" + "if ( style.childNodes.length == 0 )\n" + "style.appendChild(document.createTextNode(css));\n" + "else\n" + "style.childNodes[0].nodeValue = css;\n" + "}\n" + "}\n" + "return rewritor;\n" + "}\n", + va); +} + +//----- (00401B4C) -------------------------------------------------------- +volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) +{ + if ( _CRT_MT ) + _InterlockedIncrement(result); + else + ++*result; + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00401B5C) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + if ( !a2 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 401B5C: using guessed type unsigned int var_1C[7]; + +//----- (00401BDD) -------------------------------------------------------- +void **__cdecl WXSS::RemoveQuote(void **a1, char **a2) +{ + unsigned int v2; // edx + char v3; // cl + + v2 = (unsigned int)a2[1]; + if ( v2 <= 2 ) + { + std::string::basic_string(a1, (char *)&byte_4EAF84); + } + else + { + v3 = **a2; + if ( v3 == 39 || v3 == 34 ) + std::string::substr(a1, a2, 1u, v2 - 2); + else + std::string::basic_string(a1, (int)a2); + } + return a1; +} + +//----- (00401C3E) -------------------------------------------------------- +int __stdcall WXSS::XCompiler::DealRPX(int *a1, int a2) +{ + void *v3[8]; // [esp+18h] [ebp-20h] BYREF + + WXML::Rewrite::ToStringCode2((int)v3, a1); + WXML::GetStrForMakingCSS((char **)v3, a2); + std::string::_M_dispose(v3); + std::string::operator=((unsigned int *)a1, (char *)&byte_4EAF84); + return 0; +} + +//----- (00401C9A) -------------------------------------------------------- +int __thiscall WXSS::XCompiler::GetHostRule(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + void *v5[2]; // [esp+10h] [ebp-118h] BYREF + char v6; // [esp+18h] [ebp-110h] BYREF + void *v7[6]; // [esp+28h] [ebp-100h] BYREF + char v8[8]; // [esp+40h] [ebp-E8h] BYREF + char v9[4]; // [esp+48h] [ebp-E0h] BYREF + int v10[55]; // [esp+4Ch] [ebp-DCh] BYREF + + v5[0] = &v6; + v3 = this[11]; + v5[1] = 0; + v6 = 0; + while ( (_DWORD *)v3 != this + 9 ) + { + WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(*(_DWORD *)(v3 + 40), (WXSS::Token *)v5); + v3 = std::_Rb_tree_increment(v3); + } + std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); + std::operator<<>((std::ostream::sentry *)v9, "setCssToHead(["); + WXSS::XCompiler::DealRPX((int *)v5, (int)v8); + std::operator<<>((std::ostream::sentry *)v9, "])"); + std::stringbuf::str((int)v7, v10); + std::string::operator=(a2, v7); + std::string::_M_dispose(v7); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); + std::string::_M_dispose(v5); + return 0; +} +// 401C9A: using guessed type char var_E0[4]; +// 401C9A: using guessed type int var_DC[55]; + +//----- (00401D9C) -------------------------------------------------------- +int __thiscall WXSS::XCompiler::ShowTree(_DWORD *this, _DWORD *a2) +{ + int i; // ebx + _DWORD *v4; // eax + void *v6[6]; // [esp+18h] [ebp-F0h] BYREF + void *v7[3]; // [esp+30h] [ebp-D8h] BYREF + int v8[51]; // [esp+3Ch] [ebp-CCh] BYREF + + for ( i = this[11]; (_DWORD *)i != this + 9; i = std::_Rb_tree_increment(i) ) + { + std::operator+((int)v6, "\n/* ", i + 16); + v4 = std::string::append(v6, " */\n"); + std::string::basic_string(v7, v4); + std::string::operator+=(a2, (int)v7); + std::string::_M_dispose(v7); + std::string::_M_dispose(v6); + std::basic_stringstream,std::allocator>::basic_stringstream((int)v7); + WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(*(_DWORD *)(i + 40), 0, (int)v7); + std::stringbuf::str((int)v6, v8); + std::string::operator+=(a2, (int)v6); + std::string::_M_dispose(v6); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v7); + } + return 0; +} +// 401D9C: using guessed type int var_CC[51]; + +//----- (00401EDE) -------------------------------------------------------- +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + int result; // eax + + v1 = *a1; + if ( v1 ) + return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); + return result; +} + +//----- (00401EEA) -------------------------------------------------------- +void __cdecl __tcf_1_0() +{ + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)&dword_4E9B8C); +} +// 4E9B8C: using guessed type int dword_4E9B8C; + +//----- (00401EF1) -------------------------------------------------------- +void __cdecl __tcf_2() +{ + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)&dword_4E9B80); +} +// 4E9B80: using guessed type int dword_4E9B80; + +//----- (00401EF8) -------------------------------------------------------- +void __fastcall std::pair>::~pair(int a1) +{ + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 28)); + std::string::_M_dispose((void **)a1); +} + +//----- (00401F12) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + volatile signed __int32 **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 8 ) + { + v4 = (volatile signed __int32 **)(i + 4); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00401F4A) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( + volatile signed __int32 **this, + volatile signed __int32 *a2) +{ + if ( *this != a2 ) + { + if ( a2 ) + __gnu_cxx::__atomic_add_dispatch(a2 + 1); + if ( *this ) + std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); + *this = a2; + } + return this; +} + +//----- (00401F7A) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (00401F8E) -------------------------------------------------------- +void __fastcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (00401FA2) -------------------------------------------------------- +int __thiscall WXSS::XCompiler::GetCompiled(int *this, int a2, WXSS::Token *a3) +{ + _DWORD *v3; // edx + _DWORD *v4; // ebx + _DWORD *v6; // esi + char v7; // al + unsigned int v8; // ebx + _DWORD *v9; // eax + int v10; // edx + int v11; // eax + int *v12; // edx + _DWORD *v13; // eax + _DWORD *v14; // eax + _DWORD *v16; // [esp+18h] [ebp-60h] + int v17; // [esp+1Ch] [ebp-5Ch] + int v18; // [esp+28h] [ebp-50h] BYREF + volatile signed __int32 *v19; // [esp+2Ch] [ebp-4Ch] BYREF + void *v20[6]; // [esp+30h] [ebp-48h] BYREF + void *v21[2]; // [esp+48h] [ebp-30h] BYREF + char v22; // [esp+50h] [ebp-28h] BYREF + + v17 = *this; + if ( *this ) + return 6; + v3 = this + 27; + v4 = (_DWORD *)this[28]; + v6 = this + 27; + while ( v4 ) + { + v16 = v3; + v7 = std::operator<((int)(v4 + 4), a2); + v3 = v16; + if ( v7 ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v6 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v3 == v6 || (unsigned __int8)std::operator<(a2, (int)(v6 + 4)) ) + { + if ( this + 9 == std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( + this + 8, + a2) ) + { + std::string::operator=((unsigned int *)a3, (char *)&byte_4EAF84); + return 1; + } + else + { + std::string::operator=((unsigned int *)a3, (char *)&byte_4EAF84); + v8 = 0; + v9 = std::map>::operator[](this + 8, a2); + std::__shared_ptr::__shared_ptr(&v18, v9); + while ( 1 ) + { + v10 = *(_DWORD *)(v18 + 120); + if ( (*(_DWORD *)(v18 + 124) - v10) >> 3 <= v8 ) + break; + if ( std::operator==(*(_DWORD *)(v10 + 8 * v8), "DIRECTIVE") + && (v11 = *(_DWORD *)(*(_DWORD *)(v18 + 120) + 8 * v8), + v12 = *(int **)(v11 + 120), + (unsigned int)(*(_DWORD *)(v11 + 124) - (_DWORD)v12) > 0xF) + && std::operator==(*v12, "@import") + && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v18 + 120) + 8 * v8) + 140) ) + { + std::string::basic_string(v20, *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v18 + 120) + 8 * v8) + 140)); + v21[0] = &v22; + v21[1] = 0; + v22 = 0; + WXSS::XCompiler::GetCompiled(v20, (WXSS::Token *)v21); + std::string::operator+=(a3, (int)v21); + std::string::_M_dispose(v21); + std::string::_M_dispose(v20); + } + else + { + WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(*(_DWORD *)(v18 + 120) + 8 * v8), a3, 1u); + } + ++v8; + } + v13 = std::map::operator[](this + 26, a2); + std::string::_M_assign((int)v13, (int)a3); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v19); + } + } + else + { + v14 = std::map::operator[](this + 26, a2); + std::string::_M_assign((int)a3, (int)v14); + } + return v17; +} + +//----- (004021D4) -------------------------------------------------------- +int __thiscall WXSS::XCompiler::GetJSCompiled(int *this, int a2, _DWORD *a3) +{ + int Compiled; // ebx + void *v5[2]; // [esp+10h] [ebp-48h] BYREF + char v6; // [esp+18h] [ebp-40h] BYREF + void *v7[12]; // [esp+28h] [ebp-30h] BYREF + + v5[0] = &v6; + v5[1] = 0; + v6 = 0; + Compiled = WXSS::XCompiler::GetCompiled(this, a2, (WXSS::Token *)v5); + if ( !Compiled ) + { + WXML::Rewrite::ToStringCode2((int)v7, (int *)v5); + std::string::operator=(a3, v7); + std::string::_M_dispose(v7); + } + std::string::_M_dispose(v5); + return Compiled; +} + +//----- (00402250) -------------------------------------------------------- +int __thiscall WXSS::XCompiler::GetWellFormattedJSCompiled(int *this, int a2, _DWORD *a3) +{ + int JSCompiled; // [esp+1Ch] [ebp-11Ch] + void *v5[2]; // [esp+20h] [ebp-118h] BYREF + char v6; // [esp+28h] [ebp-110h] BYREF + void *v7[6]; // [esp+38h] [ebp-100h] BYREF + char v8[8]; // [esp+50h] [ebp-E8h] BYREF + char v9[4]; // [esp+58h] [ebp-E0h] BYREF + int v10[55]; // [esp+5Ch] [ebp-DCh] BYREF + + v5[0] = &v6; + v5[1] = 0; + v6 = 0; + JSCompiled = WXSS::XCompiler::GetJSCompiled(this, a2, v5); + if ( !JSCompiled ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)v8); + std::operator<<>( + (std::ostream::sentry *)v9, + "var BASE_DEVICE_WIDTH = 750;\n" + "var isIOS=navigator.userAgent.match(\"iPhone\");\n" + "var deviceWidth = window.screen.width || 375;\n" + "var deviceDPR = window.devicePixelRatio || 2;\n" + "var checkDeviceWidth = window.__checkDeviceWidth__ || function() {\n" + "var newDeviceWidth = window.screen.width || 375\n" + "var newDeviceDPR = window.devicePixelRatio || 2\n" + "var newDeviceHeight = window.screen.height || 375\n" + "if (window.screen.orientation && /^landscape/.test(window.screen.orientation.type || '')) newDeviceWidth = newDevi" + "ceHeight\n" + "if (newDeviceWidth !== deviceWidth || newDeviceDPR !== deviceDPR) {\n" + "deviceWidth = newDeviceWidth\n" + "deviceDPR = newDeviceDPR\n" + "}\n" + "}\n" + "checkDeviceWidth()\n" + "var eps = 1e-4;\n" + "var transformRPX = window.__transformRpx__ || function(number, newDeviceWidth) {\n" + "if ( number === 0 ) return 0;\n" + "number = number / BASE_DEVICE_WIDTH * ( newDeviceWidth || deviceWidth );\n" + "number = Math.floor(number + eps);\n" + "if (number === 0) {\n" + "if (deviceDPR === 1 || !isIOS) {\n" + "return 1;\n" + "} else {\n" + "return 0.5;\n" + "}\n" + "}\n" + "return number;\n" + "}\n" + "window.__rpxRecalculatingFuncs__ = window.__rpxRecalculatingFuncs__ || [];\n" + "var __COMMON_STYLESHEETS__ = __COMMON_STYLESHEETS__||{}\n" + "%s\n" + "var setCssToHead = function(file, _xcInvalid, info) {\n" + "var Ca = {};\n" + "var css_id;\n" + "var info = info || {};\n" + "var _C = __COMMON_STYLESHEETS__\n" + "function makeup(file, opt) {\n" + "var _n = typeof(file) === \"string\";\n" + "if ( _n && Ca.hasOwnProperty(file)) return \"\";\n" + "if ( _n ) Ca[file] = 1;\n" + "var ex = _n ? _C[file] : file;\n" + "var res=\"\";\n" + "for (var i = ex.length - 1; i >= 0; i--) {\n" + "var content = ex[i];\n" + "if (typeof(content) === \"object\")\n" + "{\n" + "var op = content[0];\n" + "if ( op == 0 )\n" + "res = transformRPX(content[1], opt.deviceWidth) + \"px\" + res;\n" + "else if ( op == 1)\n" + "res = opt.suffix + res;\n" + "else if ( op == 2 )\n" + "res = makeup(content[1], opt) + res;\n" + "}\n" + "else\n" + "res = content + res\n" + "}\n" + "return res;\n" + "}\n" + "var styleSheetManager = window.__styleSheetManager2__\n" + "var rewritor = function(suffix, opt, style){\n" + "opt = opt || {};\n" + "suffix = suffix || \"\";\n" + "opt.suffix = suffix;\n" + "if ( opt.allowIllegalSelector != undefined && _xcInvalid != undefined )\n" + "{\n" + "if ( opt.allowIllegalSelector )\n" + "console.warn( \"For developer:\" + _xcInvalid );\n" + "else\n" + "{\n" + "console.error( _xcInvalid );\n" + "}\n" + "}\n" + "Ca={};\n" + "css = makeup(file, opt);\n" + "if (styleSheetManager) {\n" + "var key = (info.path || Math.random()) + ':' + suffix\n" + "if (!style) {\n" + "styleSheetManager.addItem(key, info.path);\n" + "window.__rpxRecalculatingFuncs__.push(function(size){\n" + "opt.deviceWidth = size.width;\n" + "rewritor(suffix, opt, true);\n" + "});\n" + "}\n" + "styleSheetManager.setCss(key, css);\n" + "return;\n" + "}\n" + "if ( !style )\n" + "{\n" + "var head = document.head || document.getElementsByTagName('head')[0];\n" + "style = document.createElement('style');\n" + "style.type = 'text/css';\n" + "style.setAttribute( \"wxss:path\", info.path );\n" + "head.appendChild(style);\n" + "window.__rpxRecalculatingFuncs__.push(function(size){\n" + "opt.deviceWidth = size.width;\n" + "rewritor(suffix, opt, style);\n" + "});\n" + "}\n" + "if (style.styleSheet) {\n" + "style.styleSheet.cssText = css;\n" + "} else {\n" + "if ( style.childNodes.length == 0 )\n" + "style.appendChild(document.createTextNode(css));\n" + "else\n" + "style.childNodes[0].nodeValue = css;\n" + "}\n" + "}\n" + "return rewritor;\n" + "}\n" + "setCssToHead(["); + WXML::GetStrForMakingCSS((char **)v5, (int)v8); + std::operator<<>( + (std::ostream::sentry *)v9, + "])( typeof __wxAppSuffixCode__ == \"undefined\"? undefined : __wxAppSuffixCode__ );"); + std::stringbuf::str((int)v7, v10); + std::string::operator=(a3, v7); + std::string::_M_dispose(v7); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v8); + } + std::string::_M_dispose(v5); + return JSCompiled; +} +// 402250: using guessed type char var_E0[4]; +// 402250: using guessed type int var_DC[55]; + +//----- (00402344) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1) +{ + int v2; // edx + + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 160)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 152)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 144)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 136)); + std::_Destroy_aux::__destroy *>( + v2, + *(_DWORD *)(a1 + 120), + *(_DWORD *)(a1 + 124)); + if ( *(_DWORD *)(a1 + 120) ) + operator delete(*(void **)(a1 + 120)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 32)); + std::string::_M_dispose((void **)a1); +} +// 402386: variable 'v2' is possibly undefined + +//----- (004023AE) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1, int a2) +{ + std::_Destroy_aux::__destroy(a2, *a1, a1[1]); + std::_Vector_base::_M_deallocate(*a1); +} + +//----- (004023D4) -------------------------------------------------------- +void __fastcall WXSS::XCompiler::~XCompiler(void **a1) +{ + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)(a1 + 38)); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)(a1 + 32)); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)(a1 + 26)); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)(a1 + 20)); + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[16]); + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[10]); + std::string::_M_dispose(a1 + 2); +} + +//----- (0040242E) -------------------------------------------------------- +void __fastcall std::deque::~deque(int a1) +{ + void **v2; // eax + void **v3; // edi + void ***i; // esi + void **v5; // edx + int v6; // edx + void **v7; // esi + unsigned int v8; // edi + void *v9; // eax + void **v10; // [esp+1Ch] [ebp-6Ch] + void **v11; // [esp+20h] [ebp-68h] + void **v12; // [esp+24h] [ebp-64h] + int v13; // [esp+28h] [ebp-60h] + unsigned int v14; // [esp+2Ch] [ebp-5Ch] + int v15[4]; // [esp+30h] [ebp-58h] BYREF + int v16[4]; // [esp+40h] [ebp-48h] BYREF + char v17[16]; // [esp+50h] [ebp-38h] BYREF + char v18[16]; // [esp+60h] [ebp-28h] BYREF + + qmemcpy(v18, (const void *)(a1 + 24), sizeof(v18)); + qmemcpy(v17, (const void *)(a1 + 8), sizeof(v17)); + qmemcpy(v16, v17, sizeof(v16)); + qmemcpy(v15, v18, sizeof(v15)); + v2 = (void **)v16[0]; + v3 = (void **)v15[0]; + v11 = (void **)v16[2]; + v13 = v16[3]; + v12 = (void **)v15[1]; + v14 = v15[3]; + for ( i = (void ***)(v16[3] + 4); (unsigned int)i < v14; ++i ) + { + v5 = *i; + v10 = v2; + std::_Destroy_aux::__destroy((int)v5, v5, v5 + 126); + v2 = v10; + } + if ( v14 == v13 ) + { + std::_Destroy_aux::__destroy(v13, v2, v3); + } + else + { + std::_Destroy_aux::__destroy(v13, v2, v11); + std::_Destroy_aux::__destroy(v6, v12, v3); + } + if ( *(_DWORD *)a1 ) + { + v7 = *(void ***)(a1 + 20); + v8 = *(_DWORD *)(a1 + 36) + 4; + while ( v8 > (unsigned int)v7 ) + { + v9 = *v7++; + operator delete(v9); + } + operator delete(*(void **)a1); + } +} +// 4024D3: variable 'v6' is possibly undefined + +//----- (00402514) -------------------------------------------------------- +int __thiscall WXSS::XCompiler::GenExpr(_DWORD *this, int a2, int a3, WXSS::Token *a4) +{ + unsigned int i; // edi + int v5; // edx + int v6; // eax + int *v7; // edx + std::ostream::sentry *v8; // eax + int *v9; // eax + std::ostream::sentry *v10; // eax + std::ostream::sentry *v11; // eax + _DWORD *v12; // eax + int v13; // ecx + std::ostream::sentry *v15; // [esp+18h] [ebp-50h] + void *v17[6]; // [esp+20h] [ebp-48h] BYREF + int v18; // [esp+38h] [ebp-30h] BYREF + volatile signed __int32 *v19; // [esp+3Ch] [ebp-2Ch] BYREF + + for ( i = 0; ; ++i ) + { + v5 = *(_DWORD *)(*(_DWORD *)a2 + 120); + if ( i >= (*(_DWORD *)(*(_DWORD *)a2 + 124) - v5) >> 3 ) + break; + if ( std::operator==(*(_DWORD *)(v5 + 8 * i), "DIRECTIVE") + && (v6 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * i), + v7 = *(int **)(v6 + 120), + (unsigned int)(*(_DWORD *)(v6 + 124) - (_DWORD)v7) > 0xF) + && std::operator==(*v7, "@import") + && *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * i) + 140) ) + { + std::string::basic_string(v17, *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * i) + 140)); + if ( *std::map::operator[](this + 32, (int)v17) > 1u ) + { + WXSS::XCompiler::DealRPX((int *)a4, a3); + v8 = std::operator<<>((std::ostream::sentry *)(a3 + 8), "[2,"); + v15 = std::operator<<>(v8, "\""); + v9 = std::map::operator[](this + 38, (int)v17); + WXML::Rewrite::ToStringCode2((int)&v18, v9); + v10 = std::operator<<(v15, &v18); + v11 = std::operator<<>(v10, "\""); + std::operator<<>(v11, "],"); + std::string::_M_dispose((void **)&v18); + } + else + { + v12 = std::map>::operator[](this + 8, (int)v17); + std::__shared_ptr::__shared_ptr(&v18, v12); + WXSS::XCompiler::GenExpr(v13, a3, a4); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v19); + } + std::string::_M_dispose(v17); + } + else + { + WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)a2 + 120) + 8 * i), a4, 1u); + } + } + return 0; +} +// 4026AF: variable 'v13' is possibly undefined + +//----- (00402702) -------------------------------------------------------- +int __thiscall WXSS::XCompiler::GetPageCss(int *this, int *a2, _DWORD *a3, int a4) +{ + std::ostream::sentry *v5; // eax + std::ostream::sentry *v6; // edi + std::ostream::sentry *v7; // eax + int v8; // eax + int v9; // edx + volatile signed __int32 *v10; // eax + std::ostream::sentry *v11; // ebx + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + std::ostream::sentry *v14; // eax + std::ostream::sentry *v15; // eax + std::ostream::sentry *v16; // ebx + int *v17; // eax + std::ostream::sentry *v18; // eax + std::ostream::sentry *v19; // eax + _DWORD *v20; // eax + int v21; // ecx + std::ostream::sentry *v22; // eax + std::ostream::sentry *v23; // eax + std::ostream::sentry *v24; // eax + std::ostream::sentry *v25; // edi + std::ostream::sentry *v26; // eax + int v28; // [esp+1Ch] [ebp-13Ch] + int v29; // [esp+20h] [ebp-138h] + volatile signed __int32 *v30; // [esp+24h] [ebp-134h] BYREF + int v31; // [esp+28h] [ebp-130h] BYREF + int v32; // [esp+2Ch] [ebp-12Ch] + char v33; // [esp+30h] [ebp-128h] BYREF + void *v34; // [esp+40h] [ebp-118h] BYREF + volatile signed __int32 *v35; // [esp+44h] [ebp-114h] BYREF + int v36; // [esp+58h] [ebp-100h] BYREF + int v37; // [esp+5Ch] [ebp-FCh] + char v38; // [esp+60h] [ebp-F8h] BYREF + char v39[8]; // [esp+70h] [ebp-E8h] BYREF + char v40[4]; // [esp+78h] [ebp-E0h] BYREF + _DWORD v41[55]; // [esp+7Ch] [ebp-DCh] BYREF + + v28 = *this; + if ( *this ) + return 6; + if ( this + 9 == std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( + this + 8, + (int)a2) ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)v39); + std::operator<<>((std::ostream::sentry *)v40, "setCssToHead([],undefined,{"); + v5 = std::operator<<>((std::ostream::sentry *)v40, "path:"); + v6 = std::operator<<>(v5, "\""); + WXML::Rewrite::ToStringCode2((int)&v36, a2); + v7 = std::operator<<(v6, &v36); + std::operator<<>(v7, "\""); + std::string::_M_dispose((void **)&v36); + std::operator<<>((std::ostream::sentry *)v40, "})"); + std::stringbuf::str((int)&v36, v41); + std::string::operator=(a3, &v36); + std::string::_M_dispose((void **)&v36); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v39); + return 1; + } + else + { + v32 = 0; + v31 = (int)&v33; + v33 = 0; + if ( *(_DWORD *)(*std::map>::operator[]( + this + 8, + (int)a2) + + 156) + && *(_DWORD *)(*(_DWORD *)(*std::map>::operator[]( + this + 8, + (int)a2) + + 156) + + 12) != -1 ) + { + v8 = *std::map>::operator[](this + 8, (int)a2); + v9 = *(_DWORD *)(v8 + 156); + v10 = *(volatile signed __int32 **)(v8 + 160); + v29 = v9; + v30 = v10; + if ( v10 ) + __gnu_cxx::__atomic_add_dispatch(v10 + 1); + std::basic_stringstream,std::allocator>::basic_stringstream((int)v39); + v11 = std::operator<<>( + (std::ostream::sentry *)v40, + "Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors.("); + WXML::Rewrite::ToStringCode2((int)&v36, a2); + v12 = std::operator<<(v11, &v36); + std::operator<<>(v12, (char *)asc_4EBDB4); + v13 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(v29 + 20)); + std::operator<<>(v13, (char *)asc_4EBDB4); + v14 = (std::ostream::sentry *)std::ostream::operator<<(*(_DWORD *)(v29 + 24)); + std::operator<<>(v14, (char *)&asc_4EBDB4[2]); + std::string::_M_dispose((void **)&v36); + std::stringbuf::str((int)&v34, v41); + std::string::operator=(&v31, &v34); + std::string::_M_dispose(&v34); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v39); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); + } + std::basic_stringstream,std::allocator>::basic_stringstream((int)v39); + std::operator<<>((std::ostream::sentry *)v40, "setCssToHead(["); + if ( *std::map::operator[](this + 32, (int)a2) <= 1u ) + { + v37 = 0; + v36 = (int)&v38; + v38 = 0; + v20 = std::map>::operator[](this + 8, (int)a2); + std::__shared_ptr::__shared_ptr(&v34, v20); + WXSS::XCompiler::GenExpr(this, v21, (int)v39, (WXSS::Token *)&v36); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v35); + if ( v37 ) + WXSS::XCompiler::DealRPX(&v36, (int)v39); + } + else + { + v15 = std::operator<<>((std::ostream::sentry *)v40, "[2,"); + v16 = std::operator<<>(v15, "\""); + v17 = std::map::operator[](this + 38, (int)a2); + WXML::Rewrite::ToStringCode2((int)&v36, v17); + v18 = std::operator<<(v16, &v36); + v19 = std::operator<<>(v18, "\""); + std::operator<<>(v19, (char *)&asc_4EBDB4[4]); + } + std::string::_M_dispose((void **)&v36); + std::operator<<>((std::ostream::sentry *)v40, (char *)&asc_4EBDB4[4]); + if ( v32 ) + { + v22 = std::operator<<>((std::ostream::sentry *)v40, ",\""); + v23 = std::operator<<(v22, &v31); + std::operator<<>(v23, "\""); + } + else + { + std::operator<<>((std::ostream::sentry *)v40, ",undefined"); + } + std::operator<<>((std::ostream::sentry *)v40, ",{"); + v24 = std::operator<<>((std::ostream::sentry *)v40, "path:"); + v25 = std::operator<<>(v24, "\""); + WXML::Rewrite::ToStringCode2((int)&v36, a2); + v26 = std::operator<<(v25, &v36); + std::operator<<>(v26, "\""); + std::string::_M_dispose((void **)&v36); + std::operator<<>((std::ostream::sentry *)v40, "}"); + std::operator<<>((std::ostream::sentry *)v40, (char *)&asc_4EBDB4[2]); + std::stringbuf::str((int)&v36, v41); + std::string::operator=(a3, &v36); + std::string::_M_dispose((void **)&v36); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v39); + std::string::_M_dispose((void **)&v31); + } + return v28; +} +// 402A8B: variable 'v21' is possibly undefined +// 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 402702: using guessed type char var_E0[4]; +// 402702: using guessed type _DWORD var_DC[55]; + +//----- (00402CAC) -------------------------------------------------------- +int __thiscall WXSS::XCompiler::MarkImported(_DWORD *this, int a2) +{ + _DWORD *v3; // esi + void *v4; // eax + char *v5; // ebx + _DWORD *v6; // eax + unsigned int v7; // ebx + char *v8; // eax + void *v9; // eax + int v10; // ebx + volatile signed __int32 **v11; // ecx + char *v12; // eax + void (__cdecl *v14)(void *); // [esp+4h] [ebp-74h] + void (__cdecl *v15)(void *); // [esp+4h] [ebp-74h] + void *v16[6]; // [esp+20h] [ebp-58h] BYREF + void *v17[2]; // [esp+38h] [ebp-40h] BYREF + void **v18; // [esp+40h] [ebp-38h] + void *v19; // [esp+44h] [ebp-34h] + int v20; // [esp+48h] [ebp-30h] + char *v21; // [esp+4Ch] [ebp-2Ch] + void **v22; // [esp+50h] [ebp-28h] + void *v23; // [esp+54h] [ebp-24h] + int v24; // [esp+58h] [ebp-20h] + char *v25; // [esp+5Ch] [ebp-1Ch] + + v3 = this + 8; + if ( this + 9 != std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( + this + 8, + a2) ) + { + v17[1] = (void *)8; + v17[0] = operator new((struct type_info *)0x20, v14); + v4 = operator new((struct type_info *)0x1F8, v15); + v19 = v4; + v23 = v4; + v18 = (void **)v4; + v22 = (void **)v4; + v5 = (char *)v17[0] + 12; + *((_DWORD *)v17[0] + 3) = v4; + v21 = v5; + v20 = (int)v4 + 504; + v25 = v5; + v24 = (int)v4 + 504; + std::deque::push_back(v17, a2); + while ( v18 != v22 ) + { + std::string::basic_string(v16, (int)v18); + if ( v18 == (void **)(v20 - 24) ) + { + std::string::_M_dispose(v18); + operator delete(v19); + v9 = (void *)*((_DWORD *)v21 + 1); + v21 += 4; + v19 = v9; + v20 = (int)v9 + 504; + v18 = (void **)v9; + } + else + { + std::string::_M_dispose(v18); + v18 += 6; + } + if ( *(_DWORD *)(*std::map>::operator[](v3, (int)v16) + + 156) + && *(_DWORD *)(*(_DWORD *)(*std::map>::operator[]( + v3, + (int)v16) + + 156) + + 12) != -1 ) + { + v10 = *std::map>::operator[](v3, (int)v16); + v11 = (volatile signed __int32 **)(*std::map>::operator[]( + v3, + a2) + + 160); + *(v11 - 1) = *(volatile signed __int32 **)(v10 + 156); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v11, *(volatile signed __int32 **)(v10 + 160)); + } + v6 = std::map::operator[](this + 32, (int)v16); + v7 = 0; + ++*v6; + while ( 1 ) + { + v8 = std::map>::operator[](this + 14, (int)v16); + if ( -1431655765 * ((*((_DWORD *)v8 + 1) - *(_DWORD *)v8) >> 3) <= v7 ) + break; + v12 = std::map>::operator[](this + 14, (int)v16); + std::deque::push_back(v17, *(_DWORD *)v12 + 24 * v7++); + } + std::string::_M_dispose(v16); + } + std::deque::~deque((int)v17); + } + return 0; +} +// 402D20: variable 'v14' is possibly undefined +// 402D37: variable 'v15' is possibly undefined + +//----- (00402F40) -------------------------------------------------------- +int __thiscall WXSS::XCompiler::GetCommHead(int *this, _DWORD *a2, _DWORD *a3, char a4, int *a5) +{ + unsigned int i; // edi + int result; // eax + int j; // eax + int v9; // esi + void **v10; // esi + int insert_unique_pos; // eax + _DWORD *v12; // edx + int k; // esi + int *v14; // eax + std::ostream::sentry *v15; // eax + std::ostream::sentry *v16; // eax + std::ostream::sentry *v17; // eax + std::ostream::sentry *v18; // eax + int v19; // ecx + unsigned int v20; // edi + char *v21; // ebx + _DWORD *v22; // eax + void (__cdecl *v23)(void *); // [esp+4h] [ebp-194h] + int v24; // [esp+1Ch] [ebp-17Ch] + char *v25; // [esp+20h] [ebp-178h] BYREF + int v26; // [esp+24h] [ebp-174h] + char v27; // [esp+28h] [ebp-170h] BYREF + void *v28[6]; // [esp+38h] [ebp-160h] BYREF + char *v29; // [esp+50h] [ebp-148h] BYREF + volatile signed __int32 *v30; // [esp+54h] [ebp-144h] BYREF + char v31; // [esp+58h] [ebp-140h] BYREF + int v32[6]; // [esp+68h] [ebp-130h] BYREF + char ArgList[4]; // [esp+80h] [ebp-118h] BYREF + int v34; // [esp+84h] [ebp-114h] + char v35; // [esp+88h] [ebp-110h] BYREF + void *v36[6]; // [esp+98h] [ebp-100h] BYREF + char v37[8]; // [esp+B0h] [ebp-E8h] BYREF + char v38[4]; // [esp+B8h] [ebp-E0h] BYREF + _DWORD v39[55]; // [esp+BCh] [ebp-DCh] BYREF + + if ( a4 + && this + 9 != std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( + this + 8, + (int)a5) ) + { + std::vector::push_back(a2, (int)a5); + } + for ( i = 0; i < -1431655765 * ((a2[1] - *a2) >> 3); ++i ) + { + result = WXSS::XCompiler::MarkImported(this, 24 * i + *a2); + if ( result ) + return result; + } + std::basic_stringstream,std::allocator>::basic_stringstream((int)v37); + for ( j = this[11]; ; j = std::_Rb_tree_increment(v24) ) + { + v24 = j; + if ( (int *)j == this + 9 ) + break; + v9 = j + 16; + if ( *std::map::operator[](this + 32, j + 16) > 1u ) + { + std::string::basic_string(ArgList, v9); + std::string::basic_string(v36, v9); + v10 = (void **)operator new((struct type_info *)0x40, v23); + std::string::basic_string(v10 + 4, ArgList); + std::string::basic_string(v10 + 10, v36); + insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this + 38, + (int)(v10 + 4)); + if ( v12 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + this + 38, + insert_unique_pos, + v12, + v10); + } + else + { + std::string::_M_dispose(v10 + 10); + std::string::_M_dispose(v10 + 4); + operator delete(v10); + } + std::string::_M_dispose(v36); + std::string::_M_dispose((void **)ArgList); + } + } + for ( k = this[11]; v24 != k; k = std::_Rb_tree_increment(k) ) + { + if ( *std::map::operator[](this + 32, k + 16) > 1u ) + { + v14 = std::map::operator[](this + 38, k + 16); + WXML::Rewrite::ToStringCode2((int)v32, v14); + v15 = std::operator<<>( + (std::ostream::sentry *)v38, + "if (!__COMMON_STYLESHEETS__.hasOwnProperty('"); + v16 = std::operator<<(v15, v32); + std::operator<<>(v16, "'))"); + v17 = std::operator<<>((std::ostream::sentry *)v38, "__COMMON_STYLESHEETS__['"); + v18 = std::operator<<(v17, v32); + std::operator<<>(v18, "']=["); + v34 = 0; + *(_DWORD *)ArgList = &v35; + v35 = 0; + std::__shared_ptr::__shared_ptr( + &v29, + (_DWORD *)(k + 40)); + WXSS::XCompiler::GenExpr(this, v19, (int)v37, (WXSS::Token *)ArgList); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); + if ( v34 ) + WXSS::XCompiler::DealRPX((int *)ArgList, (int)v37); + std::operator<<>((std::ostream::sentry *)v38, "];"); + std::string::_M_dispose((void **)ArgList); + std::string::_M_dispose((void **)v32); + } + } + v26 = 0; + v25 = &v27; + v27 = 0; + if ( a4 ) + { + WXSS::XCompiler::GetPageCss(this, a5, &v25, 1); + if ( v26 ) + { + std::string::basic_string(v28, (int)&v25); + std::string::append(v28, "();"); + std::string::operator=(&v25, v28); + std::string::_M_dispose(v28); + } + } + v31 = 0; + v29 = &v31; + v30 = 0; + WXSS::XCompiler::GetHostRule(this, &v29); + if ( v30 ) + std::string::operator+=(&v29, "();"); + std::stringbuf::str((int)v32, v39); + v20 = v32[1] + 3022; + std::string::_M_dispose((void **)v32); + v21 = (char *)operator new[](v20); + std::stringbuf::str((int)ArgList, v39); + snprintf_constprop_0( + v21, + v20, + (int)"var BASE_DEVICE_WIDTH = 750;\n" + "var isIOS=navigator.userAgent.match(\"iPhone\");\n" + "var deviceWidth = window.screen.width || 375;\n" + "var deviceDPR = window.devicePixelRatio || 2;\n" + "var checkDeviceWidth = window.__checkDeviceWidth__ || function() {\n" + "var newDeviceWidth = window.screen.width || 375\n" + "var newDeviceDPR = window.devicePixelRatio || 2\n" + "var newDeviceHeight = window.screen.height || 375\n" + "if (window.screen.orientation && /^landscape/.test(window.screen.orientation.type || '')) newDeviceWidth = newD" + "eviceHeight\n" + "if (newDeviceWidth !== deviceWidth || newDeviceDPR !== deviceDPR) {\n" + "deviceWidth = newDeviceWidth\n" + "deviceDPR = newDeviceDPR\n" + "}\n" + "}\n" + "checkDeviceWidth()\n" + "var eps = 1e-4;\n" + "var transformRPX = window.__transformRpx__ || function(number, newDeviceWidth) {\n" + "if ( number === 0 ) return 0;\n" + "number = number / BASE_DEVICE_WIDTH * ( newDeviceWidth || deviceWidth );\n" + "number = Math.floor(number + eps);\n" + "if (number === 0) {\n" + "if (deviceDPR === 1 || !isIOS) {\n" + "return 1;\n" + "} else {\n" + "return 0.5;\n" + "}\n" + "}\n" + "return number;\n" + "}\n" + "window.__rpxRecalculatingFuncs__ = window.__rpxRecalculatingFuncs__ || [];\n" + "var __COMMON_STYLESHEETS__ = __COMMON_STYLESHEETS__||{}\n" + "%s\n" + "var setCssToHead = function(file, _xcInvalid, info) {\n" + "var Ca = {};\n" + "var css_id;\n" + "var info = info || {};\n" + "var _C = __COMMON_STYLESHEETS__\n" + "function makeup(file, opt) {\n" + "var _n = typeof(file) === \"string\";\n" + "if ( _n && Ca.hasOwnProperty(file)) return \"\";\n" + "if ( _n ) Ca[file] = 1;\n" + "var ex = _n ? _C[file] : file;\n" + "var res=\"\";\n" + "for (var i = ex.length - 1; i >= 0; i--) {\n" + "var content = ex[i];\n" + "if (typeof(content) === \"object\")\n" + "{\n" + "var op = content[0];\n" + "if ( op == 0 )\n" + "res = transformRPX(content[1], opt.deviceWidth) + \"px\" + res;\n" + "else if ( op == 1)\n" + "res = opt.suffix + res;\n" + "else if ( op == 2 )\n" + "res = makeup(content[1], opt) + res;\n" + "}\n" + "else\n" + "res = content + res\n" + "}\n" + "return res;\n" + "}\n" + "var styleSheetManager = window.__styleSheetManager2__\n" + "var rewritor = function(suffix, opt, style){\n" + "opt = opt || {};\n" + "suffix = suffix || \"\";\n" + "opt.suffix = suffix;\n" + "if ( opt.allowIllegalSelector != undefined && _xcInvalid != undefined )\n" + "{\n" + "if ( opt.allowIllegalSelector )\n" + "console.warn( \"For developer:\" + _xcInvalid );\n" + "else\n" + "{\n" + "console.error( _xcInvalid );\n" + "}\n" + "}\n" + "Ca={};\n" + "css = makeup(file, opt);\n" + "if (styleSheetManager) {\n" + "var key = (info.path || Math.random()) + ':' + suffix\n" + "if (!style) {\n" + "styleSheetManager.addItem(key, info.path);\n" + "window.__rpxRecalculatingFuncs__.push(function(size){\n" + "opt.deviceWidth = size.width;\n" + "rewritor(suffix, opt, true);\n" + "});\n" + "}\n" + "styleSheetManager.setCss(key, css);\n" + "return;\n" + "}\n" + "if ( !style )\n" + "{\n" + "var head = document.head || document.getElementsByTagName('head')[0];\n" + "style = document.createElement('style');\n" + "style.type = 'text/css';\n" + "style.setAttribute( \"wxss:path\", info.path );\n" + "head.appendChild(style);\n" + "window.__rpxRecalculatingFuncs__.push(function(size){\n" + "opt.deviceWidth = size.width;\n" + "rewritor(suffix, opt, style);\n" + "});\n" + "}\n" + "if (style.styleSheet) {\n" + "style.styleSheet.cssText = css;\n" + "} else {\n" + "if ( style.childNodes.length == 0 )\n" + "style.appendChild(document.createTextNode(css));\n" + "else\n" + "style.childNodes[0].nodeValue = css;\n" + "}\n" + "}\n" + "return rewritor;\n" + "}\n", + *(const char **)ArgList); + std::string::_M_dispose((void **)ArgList); + std::operator+((int)v32, v21, (int)&v29); + v22 = std::string::append(v32, (int)&v25); + std::string::basic_string(ArgList, v22); + std::string::operator=(a3, ArgList); + std::string::_M_dispose((void **)ArgList); + std::string::_M_dispose((void **)v32); + operator delete[](v21); + std::string::_M_dispose((void **)&v29); + std::string::_M_dispose((void **)&v25); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v37); + return 0; +} +// 403021: variable 'v23' is possibly undefined +// 403071: variable 'v12' is possibly undefined +// 4031D1: variable 'v19' is possibly undefined +// 402F40: using guessed type char var_E0[4]; +// 402F40: using guessed type _DWORD var_DC[55]; + +//----- (00403498) -------------------------------------------------------- +void __fastcall std::deque>::~deque(int a1) +{ + int v2; // eax + int v3; // edi + int *i; // esi + int v5; // edx + int v6; // edx + void **v7; // esi + unsigned int v8; // edi + void *v9; // eax + int v10; // [esp+1Ch] [ebp-6Ch] + int v11; // [esp+20h] [ebp-68h] + int v12; // [esp+24h] [ebp-64h] + int v13; // [esp+28h] [ebp-60h] + unsigned int v14; // [esp+2Ch] [ebp-5Ch] + int v15[4]; // [esp+30h] [ebp-58h] BYREF + int v16[4]; // [esp+40h] [ebp-48h] BYREF + char v17[16]; // [esp+50h] [ebp-38h] BYREF + char v18[16]; // [esp+60h] [ebp-28h] BYREF + + qmemcpy(v18, (const void *)(a1 + 24), sizeof(v18)); + qmemcpy(v17, (const void *)(a1 + 8), sizeof(v17)); + qmemcpy(v16, v17, sizeof(v16)); + qmemcpy(v15, v18, sizeof(v15)); + v2 = v16[0]; + v3 = v15[0]; + v11 = v16[2]; + v13 = v16[3]; + v12 = v15[1]; + v14 = v15[3]; + for ( i = (int *)(v16[3] + 4); (unsigned int)i < v14; ++i ) + { + v5 = *i; + v10 = v2; + std::_Destroy_aux::__destroy *>(v5, v5, v5 + 512); + v2 = v10; + } + if ( v14 == v13 ) + { + std::_Destroy_aux::__destroy *>(v13, v2, v3); + } + else + { + std::_Destroy_aux::__destroy *>(v13, v2, v11); + std::_Destroy_aux::__destroy *>(v6, v12, v3); + } + if ( *(_DWORD *)a1 ) + { + v7 = *(void ***)(a1 + 20); + v8 = *(_DWORD *)(a1 + 36) + 4; + while ( v8 > (unsigned int)v7 ) + { + v9 = *v7++; + operator delete(v9); + } + operator delete(*(void **)a1); + } +} +// 40353D: variable 'v6' is possibly undefined + +//----- (0040357E) -------------------------------------------------------- +int __fastcall WXSS::CSSTreeLib::Parser::~Parser(int a1) +{ + int v2; // eax + int v3; // edi + int v4; // edx + int *i; // esi + int v6; // edx + int v7; // edx + void **v8; // esi + unsigned int v9; // edi + void *v10; // eax + int v12; // [esp+1Ch] [ebp-6Ch] + int v13; // [esp+20h] [ebp-68h] + int v14; // [esp+24h] [ebp-64h] + int v15; // [esp+28h] [ebp-60h] + unsigned int v16; // [esp+2Ch] [ebp-5Ch] + int v17[4]; // [esp+30h] [ebp-58h] BYREF + int v18[4]; // [esp+40h] [ebp-48h] BYREF + char v19[16]; // [esp+50h] [ebp-38h] BYREF + char v20[16]; // [esp+60h] [ebp-28h] BYREF + + qmemcpy(v19, (const void *)(a1 + 72), sizeof(v19)); + qmemcpy(v20, (const void *)(a1 + 56), sizeof(v20)); + qmemcpy(v18, v20, sizeof(v18)); + qmemcpy(v17, v19, sizeof(v17)); + v2 = v18[0]; + v3 = v17[0]; + v13 = v18[2]; + v15 = v18[3]; + v14 = v17[1]; + v16 = v17[3]; + v4 = v18[3]; + for ( i = (int *)(v18[3] + 4); (unsigned int)i < v16; ++i ) + { + v6 = *i; + v12 = v2; + std::_Destroy_aux::__destroy *>(v6, v6, v6 + 512); + v2 = v12; + } + if ( v16 == v15 ) + { + std::_Destroy_aux::__destroy *>(v4, v2, v3); + } + else + { + std::_Destroy_aux::__destroy *>(v13, v2, v13); + std::_Destroy_aux::__destroy *>(v7, v14, v3); + } + if ( *(_DWORD *)(a1 + 48) ) + { + v8 = *(void ***)(a1 + 68); + v9 = *(_DWORD *)(a1 + 84) + 4; + while ( v9 > (unsigned int)v8 ) + { + v10 = *v8++; + operator delete(v10); + } + operator delete(*(void **)(a1 + 48)); + } + std::deque>::~deque(a1 + 8); + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 4)); +} +// 403623: variable 'v7' is possibly undefined +// 40362C: variable 'v4' is possibly undefined + +//----- (00403675) -------------------------------------------------------- +int __cdecl WXSS::LintAndParseCSS( + int *a1, + char **a2, + WXSS::Token *a3, + unsigned int *a4, + char a5, + char a6, + char a7, + void (__cdecl *a8)(void *), + int a9) +{ + int v9; // edi + volatile signed __int32 **v10; // ecx + char *v11; // eax + volatile signed __int32 *v13; // [esp+28h] [ebp-160h] BYREF + volatile signed __int32 *v14; // [esp+2Ch] [ebp-15Ch] BYREF + void *v15[6]; // [esp+30h] [ebp-158h] BYREF + _DWORD v16[22]; // [esp+48h] [ebp-140h] BYREF + void *v17; // [esp+A0h] [ebp-E8h] BYREF + volatile signed __int32 *v18; // [esp+A4h] [ebp-E4h] BYREF + int v19[55]; // [esp+ACh] [ebp-DCh] BYREF + + WXSS::CSSTreeLib::Parser::Parser(v16); + v9 = WXSS::CSSTreeLib::Parser::Parse((int)v16, a8, a2, a1, a4, a9); + if ( !v9 ) + { + v13 = 0; + v14 = 0; + std::__shared_ptr::__shared_ptr(&v17, v16); + std::__shared_ptr::operator=(&v13, v10); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v18); + std::string::operator=((unsigned int *)a3, "/*"); + std::string::operator+=(a3, "v0.4me_20200724_db"); + std::string::operator+=(a3, "*/\n"); + if ( a6 ) + { + if ( (_BYTE)a8 ) + v11 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); + else + v11 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); + WXSS::CSSTreeLib::LexicalChecker::Traval((_DWORD **)v11, &v13); + } + if ( a5 ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v17); + WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream((int)v13, 0, (int)&v17); + std::stringbuf::str((int)v15, v19); + std::string::operator+=(a3, (int)v15); + std::string::_M_dispose(v15); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v17); + } + else if ( a7 ) + { + WXML::Rewrite::ToStringCode2((int)&v17, (int *)a3); + std::string::operator+=(a3, (int)&v17); + std::string::_M_dispose(&v17); + } + else + { + WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode((int)v13, a3, 1u); + } + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v14); + } + WXSS::CSSTreeLib::Parser::~Parser((int)v16); + return v9; +} +// 403709: variable 'v10' is possibly undefined +// 403675: using guessed type _DWORD var_140[22]; +// 403675: using guessed type int var_DC[55]; + +//----- (0040388E) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +void __userpurge WXSS::XCompiler::XCompiler(int a1@, unsigned int a2@, _DWORD *a3, char a4, int a5) +{ + char *v6; // eax + int v7; // edx + int i; // eax + _DWORD *v9; // ecx + int v10; // edx + int v11; // eax + int *v12; // edx + char *Literal; // eax + char *v14; // eax + _DWORD *v15; // edi + int insert_unique_pos; // eax + _DWORD *v17; // edx + int j; // esi + int k; // eax + int v20; // edi + int v21; // esi + int v22; // edx + char v23; // al + unsigned int m; // edi + int v25; // edx + _DWORD *v26; // eax + int *v27; // esi + int *v28; // edx + int *v29; // ecx + char v30; // al + int v31; // edi + _DWORD *v32; // eax + unsigned int ii; // edi + char *v34; // eax + char *v35; // eax + _DWORD *v36; // eax + _DWORD *v37; // eax + void (__cdecl *v38)(void *); // [esp+0h] [ebp-128h] + bool v39; // [esp+1Ch] [ebp-10Ch] + int v40; // [esp+20h] [ebp-108h] + char *v41; // [esp+24h] [ebp-104h] + _DWORD *v42; // [esp+28h] [ebp-100h] + _DWORD *v43; // [esp+2Ch] [ebp-FCh] + _DWORD *v44; // [esp+30h] [ebp-F8h] + int v45; // [esp+30h] [ebp-F8h] + int *v46; // [esp+30h] [ebp-F8h] + int v47; // [esp+30h] [ebp-F8h] + _DWORD *v48; // [esp+34h] [ebp-F4h] + int v49; // [esp+34h] [ebp-F4h] + int *v50; // [esp+34h] [ebp-F4h] + unsigned int n; // [esp+34h] [ebp-F4h] + int v52; // [esp+38h] [ebp-F0h] + _DWORD *v53; // [esp+3Ch] [ebp-ECh] + int v54; // [esp+40h] [ebp-E8h] BYREF + volatile signed __int32 *v55; // [esp+44h] [ebp-E4h] BYREF + volatile signed __int32 *v56; // [esp+48h] [ebp-E0h] BYREF + volatile signed __int32 *v57; // [esp+4Ch] [ebp-DCh] BYREF + int *v58; // [esp+50h] [ebp-D8h] BYREF + int *v59; // [esp+54h] [ebp-D4h] + int v60; // [esp+58h] [ebp-D0h] BYREF + void *v61; // [esp+68h] [ebp-C0h] BYREF + int v62; // [esp+6Ch] [ebp-BCh] BYREF + void *v63; // [esp+70h] [ebp-B8h] + int *v64; // [esp+74h] [ebp-B4h] + int *v65; // [esp+78h] [ebp-B0h] + int v66; // [esp+7Ch] [ebp-ACh] + void **v67; // [esp+80h] [ebp-A8h] BYREF + int v68; // [esp+84h] [ebp-A4h] BYREF + void *v69[3]; // [esp+88h] [ebp-A0h] BYREF + int v70; // [esp+94h] [ebp-94h] + int v71[6]; // [esp+98h] [ebp-90h] BYREF + int v72; // [esp+B0h] [ebp-78h] BYREF + volatile signed __int32 *v73; // [esp+B4h] [ebp-74h] BYREF + void *v74[28]; // [esp+B8h] [ebp-70h] BYREF + + v53 = (_DWORD *)(a1 + 8); + *(_DWORD *)(a1 + 8) = a1 + 16; + *(_DWORD *)(a1 + 44) = a1 + 36; + *(_DWORD *)(a1 + 48) = a1 + 36; + v43 = (_DWORD *)(a1 + 56); + v40 = a1 + 60; + *(_DWORD *)(a1 + 68) = a1 + 60; + *(_DWORD *)(a1 + 72) = a1 + 60; + v42 = (_DWORD *)(a1 + 80); + *(_DWORD *)(a1 + 92) = a1 + 84; + *(_DWORD *)(a1 + 96) = a1 + 84; + *(_DWORD *)(a1 + 116) = a1 + 108; + *(_DWORD *)(a1 + 120) = a1 + 108; + *(_DWORD *)(a1 + 12) = 0; + *(_BYTE *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 36) = 0; + *(_DWORD *)(a1 + 40) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 84) = 0; + *(_DWORD *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 108) = 0; + *(_DWORD *)(a1 + 112) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 140) = a1 + 132; + *(_DWORD *)(a1 + 144) = a1 + 132; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 148) = 0; + *(_DWORD *)(a1 + 156) = 0; + *(_DWORD *)(a1 + 160) = 0; + *(_DWORD *)(a1 + 164) = a1 + 156; + *(_DWORD *)(a1 + 168) = a1 + 156; + *(_DWORD *)(a1 + 172) = 0; + if ( a4 ) + v6 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); + else + v6 = WXSS::CSSTreeLib::LexicalChecker::GetInstance(); + v41 = v6; + *(_DWORD *)a1 = 0; + *(_DWORD *)(a1 + 4) = 0; + for ( i = a3[3]; ; i = std::_Rb_tree_increment(v52) ) + { + v52 = i; + v44 = a3 + 1; + if ( a3 + 1 == (_DWORD *)i ) + break; + WXSS::CSSTreeLib::Parser::Parser(v74); + v59 = 0; + v58 = &v60; + LOBYTE(v60) = 0; + v48 = (_DWORD *)(v52 + 16); + a2 = WXSS::CSSTreeLib::Parser::Parse( + (int)v74, + (void (__cdecl *)(void *))a2, + (char **)(v52 + 40), + (int *)(v52 + 16), + (unsigned int *)&v58, + a5); + if ( a2 ) + { + ++*(_DWORD *)(a1 + 4); + std::string::operator+=(v53, (int)&v58); + std::string::operator+=(v53, "\n"); + *(_DWORD *)a1 = a2; + } + else + { + std::__shared_ptr::__shared_ptr(&v54, v74); + WXSS::CSSTreeLib::LexicalChecker::Traval((_DWORD **)v41, v9); + while ( 1 ) + { + v10 = *(_DWORD *)(v54 + 120); + if ( (*(_DWORD *)(v54 + 124) - v10) >> 3 <= a2 ) + break; + if ( std::operator==(*(_DWORD *)(v10 + 8 * a2), "DIRECTIVE") ) + { + v11 = *(_DWORD *)(*(_DWORD *)(v54 + 120) + 8 * a2); + v12 = *(int **)(v11 + 120); + if ( (unsigned int)(*(_DWORD *)(v11 + 124) - (_DWORD)v12) > 0xF && std::operator==(*v12, "@import") ) + { + Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v54 + 120) + 8 * a2) + + 120) + + 8) + + 24)); + std::string::basic_string((void **)v71, Literal); + WXSS::RemoveQuote(&v61, (char **)v71); + std::string::_M_dispose((void **)v71); + LOBYTE(v69[0]) = 0; + v67 = v69; + v68 = 0; + std::string::substr((void **)v71, &v61, 0, 1u); + v39 = std::operator==((int)v71, "/"); + std::string::_M_dispose((void **)v71); + if ( v39 ) + { + std::string::basic_string((void **)v71, "."); + std::string::operator+=(v71, (int)&v61); + if ( v44 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a3, + (int)v71) ) + std::string::_M_assign((int)&v67, (int)v71); + std::string::operator+=(v71, ".wxss"); + if ( v44 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a3, + (int)v71) ) + std::string::_M_assign((int)&v67, (int)v71); + std::string::_M_dispose((void **)v71); + } + if ( !v68 ) + MMBizWxaAppComm::PathCombine(v48, &v61, (unsigned int *)&v67); + if ( v44 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a3, + (int)&v67) ) + std::string::operator+=(&v67, ".wxss"); + if ( v44 == std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a3, + (int)&v67) ) + { + std::string::operator+=(v53, "path `"); + std::string::operator+=(v53, (int)&v61); + std::string::operator+=(v53, "` not found from `"); + std::string::operator+=(v53, (int)v48); + std::string::operator+=(v53, "`.\n"); + ++*(_DWORD *)(a1 + 4); + *(_DWORD *)a1 = 3; + } + else + { + v14 = std::map>::operator[](v43, (int)v48); + std::vector::push_back(v14, (int)&v67); + v15 = operator new((struct type_info *)0x18, v38); + std::string::basic_string(v15, (int)&v67); + zcc::shared_ptr::shared_ptr(v15); + std::__shared_ptr::operator=( + (volatile signed __int32 **)(*(_DWORD *)(*(_DWORD *)(v54 + 120) + 8 * a2) + 140), + &v56); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v57); + } + std::string::_M_dispose((void **)&v67); + std::string::_M_dispose(&v61); + } + } + ++a2; + } + std::string::basic_string(v71, (int)v48); + std::__shared_ptr::__shared_ptr(&v72, &v54); + a2 = (unsigned int)operator new((struct type_info *)0x30, v38); + std::string::basic_string((_DWORD *)(a2 + 16), v71); + std::__shared_ptr::__shared_ptr( + (_DWORD *)(a2 + 40), + &v72); + insert_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + (_DWORD *)(a1 + 32), + a2 + 16); + if ( v17 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( + (_DWORD *)(a1 + 32), + insert_unique_pos, + v17, + (_DWORD *)a2); + } + else + { + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a2 + 44)); + std::string::_M_dispose((void **)(a2 + 16)); + operator delete((void *)a2); + } + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v73); + std::string::_M_dispose((void **)v71); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v55); + } + std::string::_M_dispose((void **)&v58); + WXSS::CSSTreeLib::Parser::~Parser((int)v74); + } + if ( !*(_DWORD *)a1 ) + { + v62 = 0; + v64 = &v62; + v65 = &v62; + v63 = 0; + v66 = 0; + for ( j = a3[3]; j != v52; j = std::_Rb_tree_increment(j) ) + *std::map::operator[](&v61, j + 16) = 0; + for ( k = a3[3]; ; k = std::_Rb_tree_increment(v49) ) + { + v49 = k; + if ( k == v52 ) + break; + v20 = *(_DWORD *)(a1 + 64); + v21 = v40; + v22 = k + 16; + while ( v20 ) + { + v45 = v22; + v23 = std::operator<(v20 + 16, v22); + v22 = v45; + if ( v23 ) + { + v20 = *(_DWORD *)(v20 + 12); + } + else + { + v21 = v20; + v20 = *(_DWORD *)(v20 + 8); + } + } + if ( v40 != v21 && !(unsigned __int8)std::operator<(v22, v21 + 16) ) + { + for ( m = 0; ; ++m ) + { + v25 = *(_DWORD *)(v21 + 40); + if ( -1431655765 * ((*(_DWORD *)(v21 + 44) - v25) >> 3) <= m ) + break; + v26 = std::map::operator[](&v61, 24 * m + v25); + ++*v26; + } + } + } + v68 = 0; + v69[0] = 0; + v69[1] = &v68; + v69[2] = &v68; + v70 = 0; + while ( 1 ) + { + v58 = 0; + v27 = v64; + v59 = 0; + v60 = 0; + while ( v27 != &v62 ) + { + if ( !v27[10] ) + { + v28 = (int *)v69[0]; + v29 = &v68; + while ( v28 ) + { + v46 = v29; + v50 = v28; + v30 = std::operator<((int)(v28 + 4), (int)(v27 + 4)); + v29 = v46; + if ( v30 ) + { + v28 = (int *)v50[3]; + } + else + { + v29 = v50; + v28 = (int *)v50[2]; + } + } + if ( v29 == &v68 || (unsigned __int8)std::operator<((int)(v27 + 4), (int)(v29 + 4)) ) + { + std::vector::push_back(&v58, (int)(v27 + 4)); + std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( + &v67, + (int)(v27 + 4)); + } + } + v27 = (int *)std::_Rb_tree_increment((int)v27); + } + if ( v59 == v58 ) + break; + for ( n = 0; -1431655765 * (((char *)v59 - (char *)v58) >> 3) > n; ++n ) + { + std::string::basic_string(v71, (int)&v58[6 * n]); + v31 = 0; + if ( (_DWORD *)v52 != std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a3, + (int)v71) ) + v31 = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + a3, + (int)v71)[11]; + v32 = std::map::operator[](v42, (int)v71); + *v32 += v31; + for ( ii = 0; ; ++ii ) + { + v34 = std::map>::operator[](v43, (int)v71); + if ( -1431655765 * ((*((_DWORD *)v34 + 1) - *(_DWORD *)v34) >> 3) <= ii ) + break; + v35 = std::map>::operator[](v43, (int)v71); + std::string::basic_string(v74, *(_DWORD *)v35 + 24 * ii); + v36 = std::map::operator[](&v61, (int)v74); + --*v36; + v47 = *std::map::operator[](v42, (int)v71); + v37 = std::map::operator[](v42, (int)v74); + *v37 += v47; + std::string::_M_dispose(v74); + } + std::string::_M_dispose((void **)v71); + } + std::vector::~vector((void ***)&v58, (int)v58); + } + if ( a3[5] != v70 ) + { + std::string::operator+=( + v53, + "I don't know what will happen if a snake eats its tail, but a file can not import itself."); + ++*(_DWORD *)(a1 + 4); + *(_DWORD *)a1 = 4; + } + std::vector::~vector((void ***)&v58, v7); + std::_Rb_tree,std::less,std::allocator>::_M_erase((void **)v69[0]); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase((void **)v63); + } +} +// 404367: positive sp value 4 has been found +// 403AA4: variable 'v9' is possibly undefined +// 403D72: variable 'v38' is possibly undefined +// 403E57: variable 'v17' is possibly undefined +// 404284: variable 'v7' is possibly undefined +// 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 4D1A50: using guessed type int __cdecl std::_Rb_tree_increment(_DWORD); + +//----- (004043EC) -------------------------------------------------------- +void *__cdecl WXSS::LintAndParseCSSList( + _DWORD *a1, + int a2, + unsigned int *a3, + int a4, + int a5, + unsigned int a6, + char a7, + char a8, + int a9) +{ + void *WellFormattedJSCompiled; // eax + void *v11; // [esp+1Ch] [ebp-CCh] + void *v12[2]; // [esp+20h] [ebp-C8h] BYREF + char v13[192]; // [esp+28h] [ebp-C0h] BYREF + + WXSS::XCompiler::XCompiler((int)v12, a6, a1, a7, a9); + std::string::_M_assign(a4, (int)v13); + WellFormattedJSCompiled = v12[0]; + if ( !v12[0] ) + { + std::string::operator=(a3, "/*"); + std::string::operator+=(a3, "v0.4me_20200724_db"); + std::string::operator+=(a3, "*/\n"); + if ( a8 ) + { + WellFormattedJSCompiled = (void *)WXSS::XCompiler::ShowTree(v12, a3); + } + else if ( (_BYTE)a6 ) + { + WellFormattedJSCompiled = (void *)WXSS::XCompiler::GetWellFormattedJSCompiled((int *)v12, a2, a3); + } + else + { + WellFormattedJSCompiled = (void *)WXSS::XCompiler::GetCompiled((int *)v12, a2, (WXSS::Token *)a3); + } + } + v11 = WellFormattedJSCompiled; + WXSS::XCompiler::~XCompiler(v12); + return v11; +} +// 4043EC: using guessed type char var_C0[192]; + +//----- (004044DC) -------------------------------------------------------- +void *__usercall WXSS::NewLintAndParseCSSList@( + unsigned int a1@, + _DWORD *a2, + int *a3, + unsigned int *a4, + int a5, + int a6, + char a7, + int a8, + int *a9) +{ + void *CommHead; // ebx + unsigned int *v10; // eax + _DWORD *v11; // eax + int v12; // edx + int PageCss; // eax + _DWORD *v14; // eax + char *v15; // eax + unsigned int v16; // edx + unsigned int v17; // edx + _DWORD *v18; // eax + _DWORD *v19; // eax + unsigned int i; // [esp+1Ch] [ebp-17Ch] + void *v22; // [esp+1Ch] [ebp-17Ch] + void *v23[2]; // [esp+28h] [ebp-170h] BYREF + char v24; // [esp+30h] [ebp-168h] BYREF + void *v25[2]; // [esp+40h] [ebp-158h] BYREF + char v26; // [esp+48h] [ebp-150h] BYREF + void *v27[6]; // [esp+58h] [ebp-140h] BYREF + void *v28[2]; // [esp+70h] [ebp-128h] BYREF + unsigned int v29; // [esp+78h] [ebp-120h] BYREF + void *v30[2]; // [esp+88h] [ebp-110h] BYREF + unsigned int v31; // [esp+90h] [ebp-108h] BYREF + void *v32[6]; // [esp+A0h] [ebp-F8h] BYREF + void *v33[6]; // [esp+B8h] [ebp-E0h] BYREF + void *v34[2]; // [esp+D0h] [ebp-C8h] BYREF + char v35[192]; // [esp+D8h] [ebp-C0h] BYREF + + WXSS::XCompiler::XCompiler((int)v34, a1, a2, a7, a8); + std::string::_M_assign(a5, (int)v35); + CommHead = v34[0]; + if ( !v34[0] ) + { + v23[0] = &v24; + v23[1] = 0; + v24 = 0; + CommHead = (void *)WXSS::XCompiler::GetCommHead((int *)v34, a3, v23, 1, a9); + if ( !CommHead ) + { + std::string::operator=(a4, "version=v0.4me_20200724_db="); + WXML::Rewrite::ToStringCode2((int)v30, (int *)v23); + v10 = std::string::insert((unsigned int *)v30, 0, "comm="); + std::string::basic_string(v32, v10); + v11 = std::string::append(v32, "="); + std::string::basic_string(v33, v11); + std::string::operator+=(a4, (int)v33); + std::string::_M_dispose(v33); + std::string::_M_dispose(v32); + std::string::_M_dispose(v30); + for ( i = 0; ; ++i ) + { + v12 = *a3; + if ( -1431655765 * ((a3[1] - *a3) >> 3) <= i ) + break; + v25[0] = &v26; + v26 = 0; + v25[1] = 0; + PageCss = WXSS::XCompiler::GetPageCss((int *)v34, (int *)(24 * i + v12), v25, 2); + if ( PageCss ) + { + v22 = (void *)PageCss; + std::string::_M_dispose(v25); + CommHead = v22; + break; + } + WXML::Rewrite::ToStringCode2((int)v30, (int *)v25); + std::operator+((int)v27, (char *)&byte_4EAF84, *a3 + 24 * i); + v14 = std::string::append(v27, "="); + std::string::basic_string(v28, v14); + v15 = (char *)v28[1] + (unsigned int)v30[1]; + v16 = 15; + if ( v28[0] != &v29 ) + v16 = v29; + if ( (unsigned int)v15 <= v16 ) + goto LABEL_14; + v17 = 15; + if ( v30[0] != &v31 ) + v17 = v31; + if ( (unsigned int)v15 > v17 ) +LABEL_14: + v18 = std::string::append(v28, (int)v30); + else + v18 = std::string::insert((unsigned int *)v30, 0, (int)v28); + std::string::basic_string(v32, v18); + v19 = std::string::append(v32, "="); + std::string::basic_string(v33, v19); + std::string::operator+=(a4, (int)v33); + std::string::_M_dispose(v33); + std::string::_M_dispose(v32); + std::string::_M_dispose(v28); + std::string::_M_dispose(v27); + std::string::_M_dispose(v30); + std::string::_M_dispose(v25); + } + } + std::string::_M_dispose(v23); + } + WXSS::XCompiler::~XCompiler(v34); + return CommHead; +} +// 4044DC: using guessed type char var_C0[192]; + +//----- (004048B8) -------------------------------------------------------- +void __usercall std::_Vector_base::_M_deallocate(void *a1@) +{ + if ( a1 ) + operator delete(a1); +} +// 4048B8: could not find valid save-restore pair for ebp + +//----- (004048CD) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + void **a1@, + void **a2@, + _DWORD *a3@) +{ + _DWORD *v4; // eax + void **i; // ebx + void **v7; // ecx + _DWORD *v9; // [esp+18h] [ebp-20h] + + v4 = a3; + for ( i = a1; i != a2; i += 6 ) + { + v9 = v4; + std::string::basic_string(v4, i); + v7 = i; + std::string::_M_dispose(v7); + v4 = v9 + 6; + } + return &a3[6 * ((178956971 * ((unsigned int)((char *)i - (char *)a1) >> 3)) & 0x1FFFFFFF)]; +} + +//----- (00404926) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 6 ) + { + v4 = i; + std::string::_M_dispose(v4); + } + std::_Vector_base::_M_deallocate(*a1); +} + +//----- (00404954) -------------------------------------------------------- +void __cdecl MMBizWxaAppComm::SplitBySlash(_DWORD *a1, void ***a2) +{ + int v2; // eax + int i; // ebx + int v4; // ebx + void *v5[12]; // [esp+18h] [ebp-30h] BYREF + + v2 = -1; + for ( i = 0; a1[1] > i; ++i ) + { + if ( *(_BYTE *)(*a1 + i) == 47 ) + { + if ( i - v2 > 1 ) + { + std::string::substr(v5, a1, v2 + 1, i - v2 - 1); + std::vector::emplace_back(a2, v5); + std::string::_M_dispose(v5); + } + v2 = i; + } + } + v4 = i - v2; + if ( v4 > 1 ) + { + std::string::substr(v5, a1, v2 + 1, v4 - 1); + std::vector::emplace_back(a2, v5); + std::string::_M_dispose(v5); + } +} + +//----- (004049FE) -------------------------------------------------------- +int __cdecl MMBizWxaAppComm::PathCombine(_DWORD *a1, _DWORD *a2, unsigned int *a3) +{ + bool v3; // zf + int v4; // eax + int v5; // ebx + void **v6; // ebx + unsigned int j; // ebx + unsigned int i; // [esp+1Ch] [ebp-4Ch] + void **v10; // [esp+20h] [ebp-48h] BYREF + void **v11; // [esp+24h] [ebp-44h] + void **v12; // [esp+28h] [ebp-40h] + void **v13; // [esp+2Ch] [ebp-3Ch] BYREF + int v14; // [esp+30h] [ebp-38h] + int v15; // [esp+34h] [ebp-34h] + void *v16[2]; // [esp+38h] [ebp-30h] BYREF + _BYTE v17[40]; // [esp+40h] [ebp-28h] BYREF + + v10 = 0; + v11 = 0; + v3 = a2[1] == 0; + v12 = 0; + v13 = 0; + v14 = 0; + v15 = 0; + if ( v3 || *(_BYTE *)*a2 != 47 ) + { + MMBizWxaAppComm::SplitBySlash(a1, &v10); + v4 = a1[1]; + if ( v4 ) + { + if ( *(_BYTE *)(*a1 + v4 - 1) != 47 ) + { + v11 -= 6; + std::string::_M_dispose(v11); + } + } + } + MMBizWxaAppComm::SplitBySlash(a2, &v13); + for ( i = 0; i < -1431655765 * ((v14 - (int)v13) >> 3); ++i ) + { + v5 = 6 * i; + if ( !std::string::compare((int)&v13[6 * i], "..") ) + { + if ( v10 != v11 ) + { + v11 -= 6; + std::string::_M_dispose(v11); + } + } + else if ( std::string::compare((int)&v13[v5], ".") ) + { + v6 = &v13[v5]; + if ( v11 == v12 ) + { + std::vector::_M_realloc_insert(v11, v6); + } + else + { + std::string::basic_string(v11, (int)v6); + v11 += 6; + } + } + } + if ( a1[1] && *(_BYTE *)*a1 == 47 || a2[1] && *(_BYTE *)*a2 == 47 ) + std::string::operator=(a3, "/"); + else + std::string::operator=(a3, byte_4EBF05); + for ( j = 0; j < -1431655765 * (((char *)v11 - (char *)v10) >> 3); ++j ) + { + if ( j ) + { + v16[0] = v17; + std::string::_S_copy_chars(v17, "/", (size_t)""); + v16[1] = (void *)1; + *((_BYTE *)v16[0] + 1) = 0; + std::string::operator+=(a3, (int)v16); + std::string::_M_dispose(v16); + } + std::string::operator+=(a3, (int)&v10[6 * j]); + } + std::vector::~vector(&v13); + std::vector::~vector(&v10); + return 0; +} +// 4B5908: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); +// 4049FE: using guessed type _BYTE var_28[40]; + +//----- (00404BF8) -------------------------------------------------------- +int __cdecl MMBizWxaAppComm::PathCombine(int a1, _DWORD *a2, _DWORD *a3) +{ + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + MMBizWxaAppComm::PathCombine(a2, a3, (unsigned int *)a1); + return a1; +} + +//----- (00404C44) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + void **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 28 ) + { + v4 = (void **)(i + 4); + std::string::_M_dispose(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00404C7B) -------------------------------------------------------- +int __cdecl WXML::RPX::accept(WXML::RPX *this, int (*a2)[266], bool *a3, int *a4) +{ + int v4; // eax + int i; // edx + int v7; // esi + int result; // eax + + v4 = 0; + for ( i = *(_DWORD *)a3; ; --i ) + { + v7 = v4; + if ( i <= 0 ) + break; + v4 = *((_DWORD *)this + 266 * v4 + *(unsigned __int8 *)a4); + if ( v4 == -1 ) + break; + a4 = (int *)((char *)a4 + 1); + } + result = -1; + if ( *((_BYTE *)*a2 + v7) ) + { + *(_DWORD *)a3 = i; + return 0; + } + return result; +} + +//----- (00404CBE) -------------------------------------------------------- +int __cdecl WXML::RPX::acceptID(WXML::RPX *this, bool *a2) +{ + int v2; // eax + + if ( !WXML::RPX::acceptID(char const*,int &)::inited ) + { + memset(&WXML::RPX::acceptID(char const*,int &)::nextPos, 255, 0x850u); + v2 = 0; + dword_53EF9C = 1; + dword_53F3C4 = 1; + do + { + dword_53EFA4[v2] = 1; + dword_53EF24[v2] = 1; + dword_53F3CC[v2] = 1; + dword_53F34C[v2++] = 1; + } + while ( v2 != 26 ); + dword_53F308 = 1; + dword_53F30C = 1; + dword_53F310 = 1; + dword_53F314 = 1; + dword_53F318 = 1; + dword_53F31C = 1; + dword_53F320 = 1; + dword_53F324 = 1; + dword_53F328 = 1; + dword_53F32C = 1; + WXML::RPX::acceptID(char const*,int &)::inited = 1; + } + return WXML::RPX::accept( + (WXML::RPX *)&WXML::RPX::acceptID(char const*,int &)::nextPos, + (int (*)[266])WXML::RPX::acceptID(char const*,int &)::canAccept, + a2, + (int *)this); +} +// 53EF24: using guessed type int dword_53EF24[30]; +// 53EF9C: using guessed type int dword_53EF9C; +// 53EFA4: using guessed type int dword_53EFA4[217]; +// 53F308: using guessed type int dword_53F308; +// 53F30C: using guessed type int dword_53F30C; +// 53F310: using guessed type int dword_53F310; +// 53F314: using guessed type int dword_53F314; +// 53F318: using guessed type int dword_53F318; +// 53F31C: using guessed type int dword_53F31C; +// 53F320: using guessed type int dword_53F320; +// 53F324: using guessed type int dword_53F324; +// 53F328: using guessed type int dword_53F328; +// 53F32C: using guessed type int dword_53F32C; +// 53F34C: using guessed type int dword_53F34C[30]; +// 53F3C4: using guessed type int dword_53F3C4; +// 53F3CC: using guessed type int dword_53F3CC[169]; +// 53F670: using guessed type char WXML::RPX::acceptID(char const*,int &)::inited; + +//----- (00404DBD) -------------------------------------------------------- +int __cdecl WXML::RPX::acceptStr(WXML::RPX *this, bool *a2) +{ + int i; // eax + + if ( !WXML::RPX::acceptStr(char const*,int &)::inited ) + { + memset(&WXML::RPX::acceptStr(char const*,int &)::nextPos, 255, 0x18F0u); + for ( i = 0; i != 256; ++i ) + { + dword_53D948[i] = 1; + dword_53DD70[i] = 2; + dword_53E198[i] = 1; + dword_53E5C0[i] = 2; + } + dword_53D5A8 = 1; + dword_53D5BC = 2; + dword_53DAB8 = 3; + dword_53DEE0 = 4; + dword_53D9D0 = 5; + dword_53DE0C = 5; + WXML::RPX::acceptStr(char const*,int &)::inited = 1; + } + return WXML::RPX::accept( + (WXML::RPX *)&WXML::RPX::acceptStr(char const*,int &)::nextPos, + (int (*)[266])WXML::RPX::acceptStr(char const*,int &)::canAccept, + a2, + (int *)this); +} +// 53D5A8: using guessed type int dword_53D5A8; +// 53D5BC: using guessed type int dword_53D5BC; +// 53D948: using guessed type int dword_53D948[34]; +// 53D9D0: using guessed type int dword_53D9D0; +// 53DAB8: using guessed type int dword_53DAB8; +// 53DD70: using guessed type int dword_53DD70[39]; +// 53DE0C: using guessed type int dword_53DE0C; +// 53DEE0: using guessed type int dword_53DEE0; +// 53E198: using guessed type int dword_53E198[266]; +// 53E5C0: using guessed type int dword_53E5C0[532]; +// 53EE10: using guessed type char WXML::RPX::acceptStr(char const*,int &)::inited; + +//----- (00404E82) -------------------------------------------------------- +int __cdecl WXML::RPX::acceptNum(WXML::RPX *this, bool *a2) +{ + int v2; // eax + + if ( !WXML::RPX::acceptNum(char const*,int &)::inited ) + { + memset(&WXML::RPX::acceptNum(char const*,int &)::nextPos, 255, 0x14C8u); + v2 = 0; + dword_53C0EC = 1; + dword_53C0F4 = 1; + dword_53C0F8 = 3; + dword_53C520 = 3; + dword_53C948 = 4; + do + { + dword_53C100[v2] = 2; + dword_53C528[v2] = 2; + dword_53C950[v2] = 2; + dword_53CD78[v2] = 4; + dword_53D1A0[v2++] = 4; + } + while ( v2 != 10 ); + WXML::RPX::acceptNum(char const*,int &)::inited = 1; + } + return WXML::RPX::accept( + (WXML::RPX *)&WXML::RPX::acceptNum(char const*,int &)::nextPos, + (int (*)[266])WXML::RPX::acceptNum(char const*,int &)::canAccept, + a2, + (int *)this); +} +// 53C0EC: using guessed type int dword_53C0EC; +// 53C0F4: using guessed type int dword_53C0F4; +// 53C0F8: using guessed type int dword_53C0F8; +// 53C100: using guessed type int dword_53C100[264]; +// 53C520: using guessed type int dword_53C520; +// 53C528: using guessed type int dword_53C528[264]; +// 53C948: using guessed type int dword_53C948; +// 53C950: using guessed type int dword_53C950[266]; +// 53CD78: using guessed type int dword_53CD78[266]; +// 53D1A0: using guessed type int dword_53D1A0[218]; +// 53D508: using guessed type char WXML::RPX::acceptNum(char const*,int &)::inited; + +//----- (00404F46) -------------------------------------------------------- +int __cdecl WXML::RPX::acceptSymbol(WXML::RPX *this, char *a2, int *a3) +{ + WXML::RPX *v3; // ebx + int v4; // edi + int v5; // esi + + v3 = this; + v4 = *(_DWORD *)a2; + v5 = *(_DWORD *)a2 - 1; + *(_DWORD *)a2 = v5; + switch ( *((_BYTE *)this + 1) ) + { + case '(': + *a3 = 3; + break; + case ')': + *a3 = 4; + break; + case '+': + *a3 = 1; + break; + case ',': + *a3 = 6; + break; + case '-': + *a3 = 2; + break; + case '.': + *a3 = 5; + break; + default: + *(_DWORD *)a2 = v4; + if ( *(_BYTE *)this == 32 || *(_BYTE *)this == 9 ) + { + while ( *(int *)a2 > 0 && (*(_BYTE *)v3 == 32 || *(_BYTE *)v3 == 9) ) + { + v3 = (WXML::RPX *)((char *)v3 + 1); + --*(_DWORD *)a2; + } + *a3 = 7; + } + else + { + *(_DWORD *)a2 = v5; + *a3 = 0; + } + break; + } + return 0; +} + +//----- (00404FDE) -------------------------------------------------------- +void __cdecl WXML::Rewrite::ToStringCode(int a1, int a2, int a3) +{ + int i; // ebx + int v4; // eax + unsigned int v5; // ecx + void *v6; // eax + + for ( i = 0; i < a2; ++i ) + { + v4 = *(char *)(a1 + i); + if ( (_BYTE)v4 == 39 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x27"); + continue; + } + if ( (char)v4 > 39 ) + { + if ( (_BYTE)v4 == 62 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3e"); + continue; + } + if ( (char)v4 <= 62 ) + { + if ( (_BYTE)v4 == 60 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3c"); + continue; + } + if ( (_BYTE)v4 == 61 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x3d"); + continue; + } +LABEL_32: + std::operator<<>((std::ostream::sentry *)(a3 + 8), *(_BYTE *)(a1 + i)); + continue; + } + if ( (_BYTE)v4 != 92 ) + goto LABEL_32; + LOBYTE(v4) = *(_BYTE *)(a1 + i + 1); + v5 = v4 - 92; + if ( (unsigned __int8)(v4 - 92) <= 0x18u ) + { + v6 = &unk_1440001; + if ( _bittest((const int *)&v6, v5) ) + goto LABEL_30; + } + else if ( (_BYTE)v4 == 39 || (_BYTE)v4 == 34 ) + { +LABEL_30: + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\"); + continue; + } + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x5c"); + } + else + { + if ( (_BYTE)v4 != 34 ) + { + if ( (char)v4 > 34 ) + { + if ( (_BYTE)v4 == 38 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x26"); + continue; + } + } + else + { + if ( (_BYTE)v4 == 10 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\n"); + continue; + } + if ( (_BYTE)v4 == 13 ) + { + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\r"); + continue; + } + } + goto LABEL_32; + } + std::operator<<>((std::ostream::sentry *)(a3 + 8), "\\x22"); + } + } +} + +//----- (004050D7) -------------------------------------------------------- +void __cdecl WXML::Rewrite::ToStringCode(int *a1, int a2) +{ + WXML::Rewrite::ToStringCode(*a1, a1[1], a2); +} + +//----- (004050FA) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode3[abi:cxx11](int a1, int a2, int a3) +{ + int v3; // ebx + char v4; // al + char v6[8]; // [esp+10h] [ebp-D8h] BYREF + char v7[4]; // [esp+18h] [ebp-D0h] BYREF + int v8[50]; // [esp+1Ch] [ebp-CCh] BYREF + + v3 = 0; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v6); + while ( v3 < a3 ) + { + v4 = *(_BYTE *)(a2 + v3); + if ( v4 == 61 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3d"); + } + else + { + if ( v4 > 61 ) + { + if ( v4 == 62 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3e"); + goto LABEL_11; + } + } + else + { + if ( v4 == 38 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x26"); + goto LABEL_11; + } + if ( v4 == 60 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3c"); + goto LABEL_11; + } + } + std::operator<<>((std::ostream::sentry *)v7, *(_BYTE *)(a2 + v3)); + } +LABEL_11: + ++v3; + } + std::stringbuf::str(a1, v8); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v6); + return a1; +} +// 4050FA: using guessed type char var_D0[4]; +// 4050FA: using guessed type int var_CC[50]; + +//----- (004051AE) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode3(int a1, int *a2) +{ + WXML::Rewrite::ToStringCode3[abi:cxx11](a1, *a2, a2[1]); + return a1; +} + +//----- (004051D4) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode2[abi:cxx11](int a1, int a2, int a3) +{ + int v3; // ebx + char v4; // al + char v6[8]; // [esp+10h] [ebp-D8h] BYREF + char v7[4]; // [esp+18h] [ebp-D0h] BYREF + int v8[50]; // [esp+1Ch] [ebp-CCh] BYREF + + v3 = 0; + std::basic_stringstream,std::allocator>::basic_stringstream((int)v6); + while ( v3 < a3 ) + { + v4 = *(_BYTE *)(a2 + v3); + if ( v4 == 39 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x27"); + goto LABEL_19; + } + if ( v4 > 39 ) + { + if ( v4 == 62 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3e"); + goto LABEL_19; + } + if ( v4 > 62 ) + { + if ( v4 == 92 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\\\"); + goto LABEL_19; + } + } + else + { + if ( v4 == 60 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3c"); + goto LABEL_19; + } + if ( v4 == 61 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x3d"); + goto LABEL_19; + } + } + } + else + { + if ( v4 == 34 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x22"); + goto LABEL_19; + } + if ( v4 > 34 ) + { + if ( v4 == 38 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\x26"); + goto LABEL_19; + } + } + else + { + if ( v4 == 10 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\n"); + goto LABEL_19; + } + if ( v4 == 13 ) + { + std::operator<<>((std::ostream::sentry *)v7, "\\r"); + goto LABEL_19; + } + } + } + std::operator<<>((std::ostream::sentry *)v7, *(_BYTE *)(a2 + v3)); +LABEL_19: + ++v3; + } + std::stringbuf::str(a1, v8); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v6); + return a1; +} +// 4051D4: using guessed type char var_D0[4]; +// 4051D4: using guessed type int var_CC[50]; + +//----- (004052D6) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode2(int a1, int *a2) +{ + WXML::Rewrite::ToStringCode2[abi:cxx11](a1, *a2, a2[1]); + return a1; +} + +//----- (004052FC) -------------------------------------------------------- +void __cdecl WXML::Rewrite::ToStringCode(int *a1, _DWORD *a2) +{ + void *v2[6]; // [esp+18h] [ebp-F0h] BYREF + char v3[12]; // [esp+30h] [ebp-D8h] BYREF + int v4[51]; // [esp+3Ch] [ebp-CCh] BYREF + + std::basic_stringstream,std::allocator>::basic_stringstream((int)v3); + WXML::Rewrite::ToStringCode(*a1, a1[1], (int)v3); + std::stringbuf::str((int)v2, v4); + std::string::operator=(a2, v2); + std::string::_M_dispose(v2); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v3); +} +// 4052FC: using guessed type int var_CC[51]; + +//----- (00405375) -------------------------------------------------------- +int __cdecl WXML::Rewrite::ToStringCode(int a1, int *a2) +{ + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + WXML::Rewrite::ToStringCode(a2, (_DWORD *)a1); + return a1; +} + +//----- (004053B9) -------------------------------------------------------- +int __cdecl WXML::Rewrite::GetToken(int a1, int a2) +{ + int result; // eax + WXML::RPX *v3; // ebx + int i; // esi + int v5; // eax + int v6; // edx + int v7; // edx + int v8; // edx + int v9; // ecx + _DWORD *v10; // ecx + int v11; // [esp+8h] [ebp-70h] + int v12; // [esp+1Ch] [ebp-5Ch] + int v13; // [esp+24h] [ebp-54h] BYREF + bool v14[4]; // [esp+28h] [ebp-50h] BYREF + void *v15[2]; // [esp+2Ch] [ebp-4Ch] BYREF + char v16; // [esp+34h] [ebp-44h] BYREF + int v17; // [esp+44h] [ebp-34h] BYREF + void *v18[12]; // [esp+48h] [ebp-30h] BYREF + + result = a1; + v3 = *(WXML::RPX **)a1; + for ( i = *(_DWORD *)(a1 + 4); i > 0; i = *(_DWORD *)v14 ) + { + v13 = -1; + *(_DWORD *)v14 = i; + v5 = WXML::RPX::acceptID(v3, v14); + if ( v5 ) + { + v6 = WXML::RPX::acceptNum(v3, v14); + v5 = 1; + if ( v6 ) + { + v7 = WXML::RPX::acceptStr(v3, v14); + v5 = 2; + if ( v7 ) + { + v8 = WXML::RPX::acceptSymbol(v3, (char *)v14, &v13); + v5 = 3; + if ( !v8 ) + v5 = (v13 == 7) + 3; + } + } + } + LOBYTE(v11) = 0; + v15[0] = &v16; + v12 = v5; + std::string::_M_construct(v15, (unsigned __int8 *)v3, (size_t)v3 + i - *(_DWORD *)v14, v11); + v17 = v12; + std::string::basic_string(v18, v15); + v9 = *(_DWORD *)(a2 + 4); + if ( v9 == *(_DWORD *)(a2 + 8) ) + { + std::vector>::_M_realloc_insert>( + (char **)a2, + *(char **)(a2 + 4), + &v17); + } + else + { + v10 = (_DWORD *)(v9 + 4); + *(v10 - 1) = v17; + std::string::basic_string(v10, v18); + *(_DWORD *)(a2 + 4) += 28; + } + std::string::_M_dispose(v18); + std::string::_M_dispose(v15); + result = *(_DWORD *)v14; + v3 = (WXML::RPX *)((char *)v3 + i - *(_DWORD *)v14); + } + return result; +} +// 405469: variable 'v11' is possibly undefined + +//----- (004054FE) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + size_t v3; // eax + int v5; // [esp+8h] [ebp-10h] + + *this = this + 2; + v3 = -1; + if ( a2 ) + v3 = (size_t)&a2[strlen(a2)]; + LOBYTE(v5) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)a2, v3, v5); +} +// 405534: variable 'v5' is possibly undefined + +//----- (00405545) -------------------------------------------------------- +BOOL __cdecl WXML::Rewrite::RewriteRPX(int a1, unsigned int *a2, char *a3, char *a4) +{ + unsigned int i; // edi + int v5; // ebx + char *v6; // ecx + char *v7; // edx + char *v8; // ebx + _DWORD *v9; // eax + _DWORD *v10; // eax + char *v11; // eax + unsigned int v12; // edx + unsigned int v13; // edx + _DWORD *v14; // eax + unsigned int v15; // edx + BOOL v16; // eax + int v18; // [esp+18h] [ebp-B0h] + char v19; // [esp+1Ch] [ebp-ACh] + BOOL v20; // [esp+1Ch] [ebp-ACh] + char *v21; // [esp+2Ch] [ebp-9Ch] BYREF + char *v22; // [esp+30h] [ebp-98h] + int v23; // [esp+34h] [ebp-94h] + void *v24[6]; // [esp+38h] [ebp-90h] BYREF + void *v25[6]; // [esp+50h] [ebp-78h] BYREF + void *v26[2]; // [esp+68h] [ebp-60h] BYREF + unsigned int v27; // [esp+70h] [ebp-58h] BYREF + void *v28[2]; // [esp+80h] [ebp-48h] BYREF + unsigned int v29; // [esp+88h] [ebp-40h] BYREF + void *v30[12]; // [esp+98h] [ebp-30h] BYREF + + v21 = 0; + v22 = 0; + v23 = 0; + WXML::Rewrite::GetToken(a1, (int)&v21); + std::string::operator=(a2, (char *)&byte_4EBF96); + v19 = 1; + for ( i = 1; i < -1227133513 * ((v22 - v21) >> 2); ++i ) + { + v5 = 28 * (i - 1); + if ( *(_DWORD *)&v21[v5] == 1 + && (v6 = &v21[v5 + 28], !*(_DWORD *)v6) + && !std::string::compare((int)(v6 + 4), (char *)off_4EBF97) ) + { + std::string::basic_string(v28, a4); + v7 = &v21[v5 + 32]; + v8 = &v21[v5 + 4]; + v18 = (int)v7; + std::string::basic_string(v24, a3); + v9 = std::string::append(v24, (int)v8); + std::string::basic_string(v25, v9); + v10 = std::string::append(v25, v18); + std::string::basic_string(v26, v10); + v11 = (char *)v26[1] + (unsigned int)v28[1]; + v12 = 15; + if ( v26[0] != &v27 ) + v12 = v27; + if ( (unsigned int)v11 <= v12 ) + goto LABEL_15; + v13 = 15; + if ( v28[0] != &v29 ) + v13 = v29; + if ( (unsigned int)v11 > v13 ) +LABEL_15: + v14 = std::string::append(v26, (int)v28); + else + v14 = std::string::insert((unsigned int *)v28, 0, (int)v26); + std::string::basic_string(v30, v14); + std::string::operator+=(a2, (int)v30); + ++i; + std::string::_M_dispose(v30); + std::string::_M_dispose(v26); + std::string::_M_dispose(v25); + std::string::_M_dispose(v24); + std::string::_M_dispose(v28); + if ( i == -1227133513 * ((v22 - v21) >> 2) ) + v19 = 0; + } + else + { + std::string::operator+=(a2, (int)&v21[v5 + 4]); + } + } + if ( v21 != v22 && v19 ) + std::string::operator+=(a2, (int)(v22 - 24)); + v15 = a2[1]; + if ( v15 == *(_DWORD *)(a1 + 4) ) + { + v16 = 0; + if ( v15 ) + v16 = memcmp((const void *)*a2, *(const void **)a1, a2[1]) != 0; + } + else + { + v16 = 1; + } + v20 = v16; + std::vector>::~vector((void **)&v21); + return v20; +} + +//----- (00405808) -------------------------------------------------------- +int __cdecl WXML::Rewrite::RewriteImg(int a1, unsigned int *a2, int *a3, int a4, int a5) +{ + unsigned int v5; // edi + int v6; // ebx + char *v7; // eax + int v8; // ecx + int v9; // ebx + int v10; // esi + char *i; // ebx + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + std::ostream::sentry *v14; // eax + std::ostream::sentry *v15; // eax + std::ostream::sentry *v16; // eax + _DWORD *v17; // eax + char v19; // [esp+1Bh] [ebp-12Dh] + unsigned __int8 v20; // [esp+1Ch] [ebp-12Ch] + std::ostream::sentry *v21; // [esp+1Ch] [ebp-12Ch] + char *v22; // [esp+24h] [ebp-124h] BYREF + _BYTE *v23; // [esp+28h] [ebp-120h] + int v24; // [esp+2Ch] [ebp-11Ch] + char *Str1; // [esp+30h] [ebp-118h] BYREF + int v26; // [esp+34h] [ebp-114h] + int v27[2]; // [esp+48h] [ebp-100h] BYREF + char v28; // [esp+50h] [ebp-F8h] BYREF + void *v29[2]; // [esp+60h] [ebp-E8h] BYREF + char v30[4]; // [esp+68h] [ebp-E0h] BYREF + int v31[55]; // [esp+6Ch] [ebp-DCh] BYREF + + v22 = 0; + v23 = 0; + v24 = 0; + WXML::Rewrite::GetToken(a1, (int)&v22); + std::string::operator=(a2, (char *)&byte_4EBF96); + v19 = 1; + v5 = 1; + v20 = 0; + while ( v5 < -1227133513 * ((v23 - v22) >> 2) ) + { + v6 = 28 * (v5 - 1); + if ( !std::string::compare((int)&v22[v6 + 4], (char *)off_4EBF9B) && !std::string::compare((int)&v22[v6 + 32], "(") ) + { + std::string::basic_string((void **)&Str1, (char *)&byte_4EBF96); + while ( -1227133513 * ((v23 - v22) >> 2) > ++v5 ) + { + v9 = 28 * v5; + if ( !std::string::compare((int)&v22[28 * v5 + 4], ")") ) + { + v10 = v26; + for ( i = Str1; &Str1[v26] - i > 0 && (*i == 32 || *i == 9); ++i ) + ; + if ( !strncmp(i, "http://", 7u) + || !strncmp(i, "https://", 8u) + || !strncmp(i, "//", 2u) + || !strncmp(i, "data:", 5u) ) + { + v27[1] = 0; + v27[0] = (int)&v28; + v28 = 0; + std::string::reserve(v27, v10 + 4); + std::string::append(v27, "url(", 4u); + std::string::append(v27, (int)&Str1); + v17 = std::string::append(v27, ")"); + std::string::basic_string(v29, v17); + std::string::operator+=(a2, (int)v29); + std::string::_M_dispose(v29); + std::string::_M_dispose((void **)v27); + } + else + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)v29); + v21 = std::operator<<>((std::ostream::sentry *)v30, "url("); + std::string::basic_string((void **)v27, i); + v12 = std::operator<<(v21, v27); + v13 = std::operator<<>(v12, "-do-not-use-local-path-"); + v14 = std::operator<<(v13, a3); + std::operator<<>(v14, "&"); + v15 = (std::ostream::sentry *)std::ostream::operator<<(a4); + std::operator<<>(v15, "&"); + v16 = (std::ostream::sentry *)std::ostream::operator<<(a5); + std::operator<<>(v16, ")"); + std::string::_M_dispose((void **)v27); + std::stringbuf::str((int)v27, v31); + std::string::operator+=(a2, (int)v27); + std::string::_M_dispose((void **)v27); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v29); + v20 = 1; + } + if ( ++v5 == -1227133513 * ((v23 - v22) >> 2) ) + v19 = 0; + break; + } + v7 = &v22[v9]; + v8 = *(_DWORD *)&v22[v9]; + if ( v8 != 4 ) + { + if ( v8 == 2 ) + { + std::string::substr(v29, (_DWORD *)v7 + 1, 1u, *((_DWORD *)v7 + 2) - 2); + std::string::operator+=(&Str1, (int)v29); + std::string::_M_dispose(v29); + } + else + { + std::string::operator+=(&Str1, (int)(v7 + 4)); + } + } + } + std::string::_M_dispose((void **)&Str1); + } + else + { + std::string::operator+=(a2, (int)&v22[v6 + 4]); + } + ++v5; + } + if ( v23 != v22 && v19 ) + std::string::operator+=(a2, (int)(v23 - 24)); + std::vector>::~vector((void **)&v22); + return v20; +} +// 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 405808: using guessed type char var_E0[4]; +// 405808: using guessed type int var_DC[55]; + +//----- (00405CB8) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + void **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 28 ) + { + v4 = (void **)(i + 4); + std::string::_M_dispose(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00405CEF) -------------------------------------------------------- +std::ostream::sentry *__cdecl WXML::RenderStrToken(_DWORD *a1, int a2) +{ + std::ostream::sentry *result; // eax + std::ostream::sentry *v3; // eax + std::ostream::sentry *v4; // eax + char *v5; // [esp+24h] [ebp+Ch] + + result = (std::ostream::sentry *)a2; + if ( *a1 ) + { + if ( *a1 != 1 ) + return result; + v4 = std::operator<<>((std::ostream::sentry *)(a2 + 8), "\""); + v3 = std::operator<<(v4, a1 + 1); + v5 = "\","; + } + else + { + v3 = std::operator<<((std::ostream::sentry *)(a2 + 8), a1 + 1); + v5 = ","; + } + return std::operator<<>(v3, v5); +} + +//----- (00405D5C) -------------------------------------------------------- +char __cdecl WXML::IsFloat(WXML *this) +{ + int v1; // edx + char v2; // cl + char v3; // al + + v1 = ((*(_BYTE *)this - 43) & 0xFD) == 0; + v2 = 0; + while ( 1 ) + { + v3 = *((_BYTE *)this + v1); + if ( !v3 ) + return 1; + if ( v3 != 46 ) + break; + if ( v2 ) + return 0; + v2 = 1; +LABEL_7: + ++v1; + } + if ( (unsigned __int8)(v3 - 48) <= 9u ) + goto LABEL_7; + return 0; +} + +//----- (00405D97) -------------------------------------------------------- +char __cdecl WXML::IsFloat(int a1) +{ + if ( *(_DWORD *)(a1 + 4) ) + return WXML::IsFloat(*(WXML **)a1); + else + return 0; +} + +//----- (00405DB0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + size_t v3; // eax + int v5; // [esp+8h] [ebp-10h] + + *this = this + 2; + v3 = -1; + if ( a2 ) + v3 = (size_t)&a2[strlen(a2)]; + LOBYTE(v5) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)a2, v3, v5); +} +// 405DE6: variable 'v5' is possibly undefined + +//----- (00405DF8) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3) +{ + int v4; // [esp+8h] [ebp-10h] + + *this = this + 2; + LOBYTE(v4) = 0; + return std::string::_M_construct(this, a2, (size_t)&a2[a3], v4); +} +// 405E17: variable 'v4' is possibly undefined + +//----- (00405E23) -------------------------------------------------------- +void __cdecl WXML::StrSplitList4RPX(char *Str, char *SubStr, char *a3, char **a4) +{ + char *v4; // ebx + char v5; // al + char *v6; // edi + int v7; // ecx + bool v8; // zf + int v9; // edi + int v10; // ecx + char *v11; // edi + char *v12; // eax + char *v13; // esi + char *v14; // edi + _DWORD *v15; // eax + int v16; // [esp+18h] [ebp-90h] + int v17; // [esp+1Ch] [ebp-8Ch] + void *v18[6]; // [esp+2Ch] [ebp-7Ch] BYREF + void *v19[2]; // [esp+44h] [ebp-64h] BYREF + char v20; // [esp+4Ch] [ebp-5Ch] BYREF + void *v21[6]; // [esp+5Ch] [ebp-4Ch] BYREF + int v22; // [esp+74h] [ebp-34h] BYREF + void *v23[12]; // [esp+78h] [ebp-30h] BYREF + + v4 = Str; + if ( a3 != 0 && SubStr != 0 ) + { + v5 = Str == 0; + if ( Str ) + { + v6 = SubStr; + v7 = -1; + do + { + if ( !v7 ) + break; + v8 = *v6++ == v5; + --v7; + } + while ( !v8 ); + v9 = -v7 - 2; + v10 = -1; + v17 = v9; + v11 = a3; + do + { + if ( !v10 ) + break; + v8 = *v11++ == v5; + --v10; + } + while ( !v8 ); + v16 = -v10 - 2; + while ( 1 ) + { + v12 = strstr(v4, SubStr); + v13 = v12; + if ( !v12 ) + break; + if ( v4 != v12 ) + { + std::string::basic_string(v21, (unsigned __int8 *)v4, v12 - v4); + v22 = 1; + std::string::basic_string(v23, v21); + std::vector>::emplace_back>( + a4, + &v22); + std::string::_M_dispose(v23); + std::string::_M_dispose(v21); + } + v4 = &v13[v17]; + v14 = strstr(&v13[v17], a3); + if ( !v14 ) + { + std::string::basic_string(v21, v13); + v22 = 1; + std::string::basic_string(v23, v21); + std::vector>::emplace_back>( + a4, + &v22); + std::string::_M_dispose(v23); + goto LABEL_21; + } + std::string::basic_string(v18, (unsigned __int8 *)v4, v14 - v4); + if ( WXML::IsFloat((int)v18) ) + { + v19[1] = 0; + v19[0] = &v20; + v20 = 0; + std::string::reserve(v19, (unsigned int)v18[1] + 3); + std::string::append(v19, "[0,", 3u); + std::string::append(v19, (int)v18); + v15 = std::string::append(v19, "]"); + std::string::basic_string(v21, v15); + v22 = 0; + std::string::basic_string(v23, v21); + std::vector>::emplace_back>( + a4, + &v22); + std::string::_M_dispose(v23); + std::string::_M_dispose(v21); + std::string::_M_dispose(v19); + v4 = &v14[v16]; + } + else + { + std::string::basic_string(v21, (unsigned __int8 *)v13, v17); + v22 = 1; + std::string::basic_string(v23, v21); + std::vector>::emplace_back>( + a4, + &v22); + std::string::_M_dispose(v23); + std::string::_M_dispose(v21); + } + std::string::_M_dispose(v18); + } + if ( !*v4 ) + return; + std::string::basic_string(v21, v4); + v22 = 1; + std::string::basic_string(v23, v21); + std::vector>::emplace_back>(a4, &v22); + std::string::_M_dispose(v23); +LABEL_21: + std::string::_M_dispose(v21); + } + } +} + +//----- (00406135) -------------------------------------------------------- +void __cdecl WXML::StrSplitList4ClassSuffix(char *Str, char *SubStr, char **a3) +{ + char *v3; // esi + char *v4; // edi + int v5; // ecx + bool v6; // zf + char *v7; // eax + char *v8; // ebx + int i; // [esp+1Ch] [ebp-5Ch] + void *v10[6]; // [esp+2Ch] [ebp-4Ch] BYREF + int v11; // [esp+44h] [ebp-34h] BYREF + void *v12[12]; // [esp+48h] [ebp-30h] BYREF + + v3 = Str; + if ( Str && SubStr ) + { + v4 = SubStr; + v5 = -1; + do + { + if ( !v5 ) + break; + v6 = *v4++ == (SubStr == 0); + --v5; + } + while ( !v6 ); + for ( i = -v5 - 2; ; v3 = &v8[i] ) + { + v7 = strstr(v3, SubStr); + v8 = v7; + if ( !v7 ) + break; + if ( v3 != v7 ) + { + std::string::basic_string(v10, (unsigned __int8 *)v3, v7 - v3); + v11 = 1; + std::string::basic_string(v12, v10); + std::vector>::emplace_back>( + a3, + &v11); + std::string::_M_dispose(v12); + std::string::_M_dispose(v10); + } + v11 = 0; + std::string::basic_string(v12, (char *)&off_4EC02D); + std::vector>::emplace_back>(a3, &v11); + std::string::_M_dispose(v12); + } + if ( *v3 ) + { + std::string::basic_string(v10, v3); + v11 = 1; + std::string::basic_string(v12, v10); + std::vector>::emplace_back>(a3, &v11); + std::string::_M_dispose(v12); + std::string::_M_dispose(v10); + } + } +} +// 4EC02D: using guessed type void *off_4EC02D; + +//----- (00406286) -------------------------------------------------------- +void __cdecl WXML::GetStrForMakingCSS(char **a1, int a2) +{ + char *v2; // eax + unsigned int i; // ebx + _DWORD *v4; // edx + char *v5; // eax + unsigned int j; // esi + int v7; // [esp+18h] [ebp-30h] BYREF + int v8; // [esp+1Ch] [ebp-2Ch] + int v9; // [esp+20h] [ebp-28h] + int v10; // [esp+24h] [ebp-24h] BYREF + int v11; // [esp+28h] [ebp-20h] + int v12; // [esp+2Ch] [ebp-1Ch] + + v7 = 0; + v2 = *a1; + v8 = 0; + v9 = 0; + WXML::StrSplitList4RPX(v2, "%%?", "rpx?%%", (char **)&v7); + for ( i = 0; -1227133513 * ((v8 - v7) >> 2) > i; ++i ) + { + v4 = (_DWORD *)(28 * i + v7); + if ( *v4 == 1 ) + { + v5 = (char *)v4[1]; + v10 = 0; + v11 = 0; + v12 = 0; + WXML::StrSplitList4ClassSuffix(v5, "%%HERESUFFIX%%", (char **)&v10); + for ( j = 0; -1227133513 * ((v11 - v10) >> 2) > j; ++j ) + WXML::RenderStrToken((_DWORD *)(28 * j + v10), a2); + std::vector>::~vector((void **)&v10); + } + else if ( !*v4 ) + { + WXML::RenderStrToken(v4, a2); + } + } + std::vector>::~vector((void **)&v7); +} + +//----- (0040639C) -------------------------------------------------------- +void __cdecl __tcf_1_1() +{ + std::ios_base::Init::~Init(); +} + +//----- (004063A6) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + if ( !a2 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 4063A6: using guessed type unsigned int var_1C[7]; + +//----- (00406427) -------------------------------------------------------- +volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) +{ + if ( _CRT_MT ) + _InterlockedIncrement(result); + else + ++*result; + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00406438) -------------------------------------------------------- +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + int result; // eax + + v1 = *a1; + if ( v1 ) + return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); + return result; +} + +//----- (00406444) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(int a1) +{ + int v2; // edi + int i; // esi + volatile signed __int32 **v4; // ecx + + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 160)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 152)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 144)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 136)); + v2 = *(_DWORD *)(a1 + 124); + for ( i = *(_DWORD *)(a1 + 120); v2 != i; i += 8 ) + { + v4 = (volatile signed __int32 **)(i + 4); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + if ( *(_DWORD *)(a1 + 120) ) + operator delete(*(void **)(a1 + 120)); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 32)); + std::string::_M_dispose((void **)a1); +} + +//----- (004064B8) -------------------------------------------------------- +void __fastcall std::vector::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + volatile signed __int32 **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 92 ) + { + v4 = (volatile signed __int32 **)(i + 8); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (004064EF) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + _DWORD *a1@, + _DWORD *a2@, + _DWORD *a3@) +{ + _DWORD *v3; // ebx + _DWORD *v4; // edx + int v5; // eax + volatile signed __int32 **v6; // ecx + _DWORD *v8; // [esp+0h] [ebp-28h] + _DWORD *v9; // [esp+0h] [ebp-28h] + + v3 = a1; + v4 = a3; + while ( v3 != a2 ) + { + *v4 = *v3; + v4[1] = v3[1]; + v5 = v3[2]; + v4[2] = v5; + if ( v5 ) + { + v8 = v4; + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v5 + 4)); + v4 = v8; + } + v9 = v4; + v4[3] = v3[3]; + v4[4] = v3[4]; + v4[5] = v3[5]; + v4[6] = v3[6]; + qmemcpy(v4 + 7, v3 + 7, 0x40u); + v6 = (volatile signed __int32 **)(v3 + 2); + v3 += 23; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v6); + v4 = v9 + 23; + } + return &a3[23 * ((700266407 * ((unsigned int)((char *)v3 - (char *)a1) >> 2)) & 0x3FFFFFFF)]; +} + +//----- (00406588) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=( + volatile signed __int32 **this, + volatile signed __int32 *a2) +{ + if ( *this != a2 ) + { + if ( a2 ) + __gnu_cxx::__atomic_add_dispatch(a2 + 1); + if ( *this ) + std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(*this); + *this = a2; + } + return this; +} + +//----- (004065B8) -------------------------------------------------------- +int __userpurge WXSS::CSSTreeLib::Parser::Parse@( + int a1@, + void (__cdecl *a2)(void *)@, + char **a3, + int *a4, + unsigned int *a5, + int a6) +{ + void *v6; // eax + int v7; // edx + char *v8; // edi + int v9; // eax + int v10; // eax + int v11; // eax + volatile signed __int32 *v12; // eax + _DWORD *v13; // edi + _DWORD *v14; // eax + int v15; // ebx + _DWORD *v16; // eax + int v17; // ebx + _DWORD *v18; // ebx + volatile signed __int32 *v19; // eax + _DWORD *v20; // edx + _DWORD *v21; // ecx + volatile signed __int32 *v22; // edx + _DWORD *v23; // eax + _DWORD *v24; // ebx + volatile signed __int32 *v25; // eax + _DWORD *v26; // edx + _DWORD *v27; // ecx + volatile signed __int32 *v28; // edx + _DWORD *v29; // esi + volatile signed __int32 *v30; // eax + _DWORD *v31; // edx + _DWORD *v32; // ecx + int v33; // ecx + char *v34; // edi + int v35; // eax + int v36; // eax + int v37; // ecx + char *v38; // ebx + void *v39; // eax + int v40; // edx + _DWORD *v41; // esi + volatile signed __int32 **v42; // ecx + int i; // eax + volatile signed __int32 **v44; // ecx + std::ostream::sentry *v45; // eax + std::ostream::sentry *v46; // eax + std::ostream::sentry *v47; // eax + char *v48; // ebx + std::ostream::sentry *v49; // eax + std::ostream::sentry *v50; // eax + std::ostream::sentry *v51; // eax + std::ostream::sentry *v52; // eax + char *v53; // edx + char **v54; // ecx + std::ostream::sentry *v55; // eax + _DWORD *v56; // esi + _DWORD *v57; // eax + _DWORD *v58; // eax + char **v59; // ecx + int v60; // edi + void *v61; // eax + int v62; // edx + _DWORD *v63; // ebx + int j; // esi + _DWORD *v65; // eax + int *v66; // eax + int v67; // edx + int v68; // eax + volatile signed __int32 **v69; // esi + volatile signed __int32 **v70; // ebx + volatile signed __int32 **k; // esi + volatile signed __int32 **v72; // ecx + volatile signed __int32 **v73; // ecx + int *v74; // esi + int v75; // edx + int *v76; // eax + _DWORD *v77; // ecx + int v78; // edi + int *v79; // esi + int v80; // eax + _DWORD *v81; // edx + int v82; // eax + int v83; // ebx + std::ostream::sentry *v84; // eax + std::ostream::sentry *v85; // eax + std::ostream::sentry *v86; // eax + std::ostream::sentry *v87; // eax + char *v88; // edx + char **v89; // ecx + std::ostream::sentry *v90; // eax + int v91; // ecx + _DWORD *v92; // edi + volatile signed __int32 **v93; // eax + WXSS::CSSTreeLib::TransitTable *v95; // [esp+0h] [ebp-238h] + volatile signed __int32 *v96; // [esp+0h] [ebp-238h] + _DWORD *v97; // [esp+0h] [ebp-238h] + void (__cdecl *v98)(void *); // [esp+4h] [ebp-234h] + void (__cdecl *v99)(void *); // [esp+4h] [ebp-234h] + void (__cdecl *v100)(void *); // [esp+4h] [ebp-234h] + void (__cdecl *v101)(void *); // [esp+4h] [ebp-234h] + void (__cdecl *v102)(void *); // [esp+4h] [ebp-234h] + void (__cdecl *v103)(void *); // [esp+4h] [ebp-234h] + void (__cdecl *v104)(void *); // [esp+4h] [ebp-234h] + void (__cdecl *v105)(void *); // [esp+4h] [ebp-234h] + void (__cdecl *v106)(void *); // [esp+4h] [ebp-234h] + void (__cdecl *v107)(void *); // [esp+4h] [ebp-234h] + unsigned int v108; // [esp+1Ch] [ebp-21Ch] + int v109; // [esp+20h] [ebp-218h] + int *v110; // [esp+20h] [ebp-218h] + _DWORD *v111; // [esp+24h] [ebp-214h] + int Tokens; // [esp+28h] [ebp-210h] + volatile signed __int32 *v114; // [esp+38h] [ebp-200h] BYREF + volatile signed __int32 *v115; // [esp+3Ch] [ebp-1FCh] BYREF + int v116; // [esp+40h] [ebp-1F8h] BYREF + volatile signed __int32 *v117; // [esp+44h] [ebp-1F4h] BYREF + int v118; // [esp+48h] [ebp-1F0h] BYREF + volatile signed __int32 *v119; // [esp+4Ch] [ebp-1ECh] BYREF + _DWORD *v120; // [esp+50h] [ebp-1E8h] + volatile signed __int32 *v121; // [esp+54h] [ebp-1E4h] BYREF + _DWORD *v122; // [esp+58h] [ebp-1E0h] + volatile signed __int32 *v123; // [esp+5Ch] [ebp-1DCh] BYREF + _DWORD *v124; // [esp+60h] [ebp-1D8h] + volatile signed __int32 *v125; // [esp+64h] [ebp-1D4h] BYREF + _DWORD *v126; // [esp+68h] [ebp-1D0h] + volatile signed __int32 *v127; // [esp+6Ch] [ebp-1CCh] BYREF + char *v128; // [esp+70h] [ebp-1C8h] BYREF + char *v129; // [esp+74h] [ebp-1C4h] + char *v130; // [esp+78h] [ebp-1C0h] + char v131; // [esp+7Ch] [ebp-1BCh] BYREF + char v132; // [esp+94h] [ebp-1A4h] BYREF + _DWORD *v133; // [esp+ACh] [ebp-18Ch] BYREF + volatile signed __int32 *v134[5]; // [esp+B0h] [ebp-188h] BYREF + void *v135[6]; // [esp+C4h] [ebp-174h] BYREF + void *v136; // [esp+DCh] [ebp-15Ch] BYREF + int v137; // [esp+F4h] [ebp-144h] BYREF + int v138; // [esp+F8h] [ebp-140h] + volatile signed __int32 *v139; // [esp+FCh] [ebp-13Ch] BYREF + int v140; // [esp+100h] [ebp-138h] + int v141; // [esp+104h] [ebp-134h] + int v142; // [esp+108h] [ebp-130h] + int v143; // [esp+10Ch] [ebp-12Ch] + char v144[64]; // [esp+110h] [ebp-128h] BYREF + _DWORD *v145; // [esp+150h] [ebp-E8h] BYREF + volatile signed __int32 *v146; // [esp+154h] [ebp-E4h] BYREF + char v147[4]; // [esp+158h] [ebp-E0h] BYREF + _DWORD v148[55]; // [esp+15Ch] [ebp-DCh] BYREF + + WXSS::Tokenizer::Tokenizer((int)v135, *a3, (int)a4); + v128 = 0; + v129 = 0; + v130 = 0; + Tokens = WXSS::Tokenizer::GetTokens((int *)v135, (int)&v128, a5, -1); + if ( Tokens ) + goto LABEL_106; + while ( *(_DWORD *)(a1 + 16) != *(_DWORD *)(a1 + 32) ) + std::deque>::pop_back((_DWORD *)(a1 + 8)); + while ( *(_DWORD *)(a1 + 56) != *(_DWORD *)(a1 + 72) ) + std::deque>::pop_back((_DWORD *)(a1 + 48)); + if ( !(_BYTE)`guard variable for'WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret + && __cxa_guard_acquire(&`guard variable for'WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret) ) + { + dword_4E9B60 = 0; + dword_4E9B64 = 0; + dword_4E9B68 = (int)&dword_4E9B60; + dword_4E9B6C = (int)&dword_4E9B60; + dword_4E9B70 = 0; + byte_4E9B74 = 0; + __cxa_guard_release(&`guard variable for'WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret); + atexit(__tcf_0); + } + WXSS::CSSTreeLib::TransitTable::Init(v95); + v6 = operator new((struct type_info *)0xB0, v98); + WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v6); + zcc::shared_ptr::shared_ptr(v7); + std::__shared_ptr::operator=( + (volatile signed __int32 **)a1, + &v114); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + std::string::operator=(*(unsigned int **)a1, "RULES"); + v8 = v129; + if ( v128 == v129 ) + goto LABEL_106; + v142 = 0; + v143 = 0; + v144[0] = 0; + v140 = 0; + v141 = 0; + v9 = *((_DWORD *)v129 - 18); + v138 = 0; + v142 = v9; + v10 = *((_DWORD *)v129 - 17); + v139 = 0; + v137 = 8; + v143 = v10; + if ( v129 == v130 ) + { + std::vector::_M_realloc_insert(&v128, v129, &v137); + v99 = a2; + } + else + { + v11 = v138; + *(_DWORD *)v129 = 8; + *((_DWORD *)v8 + 1) = v11; + v12 = v139; + *((_DWORD *)v8 + 2) = v139; + if ( v12 ) + __gnu_cxx::__atomic_add_dispatch(v12 + 1); + v13 = v8 + 28; + v129 += 92; + *(v13 - 4) = v140; + *(v13 - 3) = v141; + *(v13 - 2) = v142; + *(v13 - 1) = v143; + qmemcpy(v13, v144, 0x40u); + } + v14 = operator new((struct type_info *)0x78, v99); + *v14 = &off_4F5198; + v14[1] = v14 + 3; + v14[2] = 0; + *((_BYTE *)v14 + 12) = 0; + v14[8] = 0; + v14[9] = 0; + *((_BYTE *)v14 + 56) = 0; + v14[7] = 1; + v14[10] = 0; + v14[11] = 0; + v14[12] = 0; + v14[13] = 0; + zcc::shared_ptr::shared_ptr(&v116, (int)v14); + v15 = v116; + std::string::basic_string((void **)&v145, "$"); + std::string::_M_assign(v15 + 4, (int)&v145); + std::string::_M_dispose((void **)&v145); + v111 = (_DWORD *)(a1 + 8); + std::deque>::push_back((_DWORD *)(a1 + 8), &v116); + v16 = operator new((struct type_info *)8, v100); + *v16 = &off_4F5084; + v16[1] = 0; + zcc::shared_ptr::shared_ptr(&v118, (int)v16); + v17 = v118; + *(_DWORD *)(v17 + 4) = WXSS::CSSTreeLib::TransitTable::GetTopType(); + std::deque>::push_back((_DWORD *)(a1 + 8), &v118); + v18 = operator new((struct type_info *)0x48, v101); + v120 = 0; + v145 = v18; + memset(v18, 0, 0x48u); + v121 = 0; + *v18 = v18 + 2; + v18[6] = v18 + 8; + v18[12] = v18 + 14; + v146 = 0; + v19 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v102); + v20 = v145; + v21 = v120; + *((_DWORD *)v19 + 3) = v18; + *((_DWORD *)v19 + 1) = 1; + *((_DWORD *)v19 + 2) = 1; + *v19 = (volatile signed __int32)&off_4F636C; + v120 = v20; + v22 = v121; + v145 = v21; + v121 = v19; + v146 = v22; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); + std::string::_M_assign((int)v120, (int)a4); + std::string::_M_assign((int)(v120 + 6), a6); + v23 = operator new((struct type_info *)0x5C, v103); + v23[1] = 0; + v24 = v23; + v23[2] = 0; + *((_BYTE *)v23 + 28) = 0; + *v23 = 1; + v23[3] = 0; + v23[4] = 0; + v23[5] = 0; + v23[6] = 0; + v122 = 0; + v123 = 0; + v145 = v23; + v146 = 0; + v25 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v104); + v26 = v145; + v27 = v122; + *((_DWORD *)v25 + 3) = v24; + *((_DWORD *)v25 + 1) = 1; + *((_DWORD *)v25 + 2) = 1; + *v25 = (volatile signed __int32)&off_4F63DC; + v122 = v26; + v28 = v123; + v145 = v27; + v123 = v25; + v146 = v28; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); + v122[3] = -1; + v29 = operator new((struct type_info *)0x18, v105); + std::string::basic_string(v29, (int)a4); + v124 = 0; + v125 = 0; + v145 = v29; + v146 = 0; + v30 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v106); + v31 = v145; + v32 = v124; + *((_DWORD *)v30 + 3) = v29; + *((_DWORD *)v30 + 1) = 1; + *((_DWORD *)v30 + 2) = 1; + *v30 = (volatile signed __int32)&off_4F63F8; + v124 = v31; + v145 = v32; + v146 = v125; + v125 = v30; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); + v33 = (int)v122; + v122[1] = v124; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(v33 + 8), v125); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v125); + v126 = 0; + v127 = 0; + v108 = 0; + while ( 1 ) + { + v36 = *(_DWORD *)(a1 + 32); + if ( *(_DWORD *)(a1 + 16) == v36 || v108 >= -373475417 * ((v129 - v128) >> 2) ) + break; + if ( *(_DWORD *)(a1 + 36) == v36 ) + v36 = *(_DWORD *)(*(_DWORD *)(a1 + 44) - 4) + 512; + v96 = *(volatile signed __int32 **)(v36 - 4); + v126 = *(_DWORD **)(v36 - 8); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v127, v96); + v38 = &v128[92 * v108]; + switch ( *(_DWORD *)v38 ) + { + case 1: + v34 = v38 + 28; + break; + case 2: + v34 = "$VALUE"; + break; + case 3: + v34 = "$STRING"; + break; + case 4: + v34 = "$NAME"; + break; + case 5: + v34 = (char *)&off_4EC0D7; + break; + case 6: + v34 = "$MULTI_EXPR"; + break; + case 7: + v34 = "$$"; + break; + case 9: + v34 = "$ESV"; + break; + default: + v34 = "$"; + break; + } + if ( (*(int (__thiscall **)(_DWORD *, int))(*v126 + 8))(v126, v37) == 1 ) + { + v35 = v126[1]; + if ( *v34 != *(_BYTE *)v35 || strcmp(v34 + 1, (const char *)(v35 + 1)) ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v145); + if ( *v34 != 36 || v34[1] ) + { + v49 = std::operator<<((std::ostream::sentry *)v147, a4); + std::operator<<>(v49, "("); + v50 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 5)); + std::operator<<>(v50, ":"); + v51 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 6)); + v52 = std::operator<<>(v51, "): error at token `"); + v53 = v38 + 28; + if ( *(_DWORD *)v38 != 1 ) + { + v53 = "$"; + if ( *(_DWORD *)v38 != 8 ) + { + v54 = (char **)*((_DWORD *)v38 + 1); + v53 = "UNKNOWN"; + if ( v54 ) + v53 = *v54; + } + } + v55 = std::operator<<>(v52, v53); + std::operator<<>(v55, "`"); + v48 = &v132; + } + else + { + v45 = std::operator<<((std::ostream::sentry *)v147, a4); + std::operator<<>(v45, "("); + v46 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 5)); + std::operator<<>(v46, ":"); + v47 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 6)); + std::operator<<>(v47, "): unexpected end of input or bad input"); + v48 = &v131; + } + std::stringbuf::str((int)v48, v148); +LABEL_50: + std::string::operator=(a5, v48); + std::string::_M_dispose((void **)v48); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v145); + Tokens = -1; + goto LABEL_105; + } + ++v108; + std::deque>::pop_back(v111); + if ( *v34 != 36 || v34[1] ) + { + v39 = operator new((struct type_info *)0xB0, v107); + WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v39); + zcc::shared_ptr::shared_ptr(v40); + v41 = v145; + v42 = (volatile signed __int32 **)(v145 + 8); + v145[6] = *(_DWORD *)v38; + v41[7] = *((_DWORD *)v38 + 1); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v42, *((volatile signed __int32 **)v38 + 2)); + v41[9] = *((_DWORD *)v38 + 3); + v41[10] = *((_DWORD *)v38 + 4); + v41[11] = *((_DWORD *)v38 + 5); + v41[12] = *((_DWORD *)v38 + 6); + for ( i = 0; i != 64; ++i ) + *((_BYTE *)v41 + i + 52) = v38[i + 28]; + std::string::operator=(v41, v34); + v41[41] = *((_DWORD *)v38 + 3); + v41[42] = *((_DWORD *)v38 + 3) + *((_DWORD *)v38 + 4); + v41[37] = v120; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v41 + 38, v121); + v41[39] = v122; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v41 + 40, v123); + std::deque>::push_back((_DWORD *)(a1 + 48), &v145); + v44 = &v146; + goto LABEL_61; + } + } + else if ( (*(int (__fastcall **)(_DWORD *))(*v126 + 8))(v126) == 3 ) + { + std::deque>::pop_back(v111); + v56 = v126; + v109 = v126[7]; + if ( v109 == 2 ) + { + if ( *(_DWORD *)(a1 + 72) == *(_DWORD *)(a1 + 56) ) + { + std::string::operator=(a5, "interal error: "); + std::string::operator+=(a5, "1001"); + Tokens = 1001; + goto LABEL_105; + } + v57 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 48)); + std::__shared_ptr::__shared_ptr(&v133, v57); + std::deque>::pop_back((_DWORD *)(a1 + 48)); + if ( *(_DWORD *)(a1 + 72) == *(_DWORD *)(a1 + 56) ) + { + std::string::operator=(a5, "interal error: "); + std::string::operator+=(a5, "1002"); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v134); + Tokens = 1002; + goto LABEL_105; + } + v58 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 48)); + std::__shared_ptr::__shared_ptr(&v145, v58); + v59 = (char **)v145; + if ( v145[31] == v145[30] ) + v145[41] = v133[41]; + std::vector>::push_back(v59 + 30, &v133); + v145[42] = v133[42]; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); + } + else + { + v60 = v126[8]; + v61 = operator new((struct type_info *)0xB0, v107); + WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v61); + zcc::shared_ptr::shared_ptr(v62); + v63 = v133; + std::string::_M_assign((int)v133, (int)(v56 + 1)); + for ( j = 0; j < v60; ++j ) + { + if ( *(_DWORD *)(a1 + 72) == *(_DWORD *)(a1 + 56) ) + { + std::string::operator=(a5, "interal error: "); + std::string::operator+=(a5, "1003"); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v134); + Tokens = 1003; + goto LABEL_105; + } + v65 = (_DWORD *)std::deque>::back((_DWORD *)(a1 + 48)); + std::vector>::push_back((char **)v63 + 30, v65); + std::deque>::pop_back((_DWORD *)(a1 + 48)); + } + if ( v60 > 0 ) + { + v66 = (int *)v133[30]; + v67 = v66[2 * v60 - 2]; + v68 = *v66; + v63[41] = *(_DWORD *)(v67 + 164); + v63[42] = *(_DWORD *)(v68 + 168); + v63[37] = v120; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v63 + 38, v121); + v63[39] = v122; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)v63 + 40, v123); + } + if ( !v109 ) + { + v69 = (volatile signed __int32 **)v63[31]; + v70 = (volatile signed __int32 **)v63[30]; + if ( v70 != v69 ) + { + for ( k = v69 - 2; k > v70; k -= 2 ) + { + std::__shared_ptr::__shared_ptr(&v145, v70); + v72 = v70; + v70 += 2; + std::__shared_ptr::operator=(v72, k); + v73 = k; + std::__shared_ptr::operator=( + v73, + (volatile signed __int32 **)&v145); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v146); + } + } + } + std::deque>::push_back((_DWORD *)(a1 + 48), &v133); + } + v44 = v134; +LABEL_61: + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v44); + } + else if ( (*(int (__fastcall **)(_DWORD *))(*v126 + 8))(v126) == 2 ) + { + v74 = &dword_4E9B60; + v75 = v126[1]; + v76 = (int *)dword_4E9B64; + while ( v76 ) + { + if ( v75 > v76[4] ) + { + v76 = (int *)v76[3]; + } + else + { + v74 = v76; + v76 = (int *)v76[2]; + } + } + if ( v74 != &dword_4E9B60 && v75 < v74[4] ) + v74 = &dword_4E9B60; + std::string::basic_string((void **)&v145, v34); + v97 = v77; + v78 = v74[7]; + v110 = v74 + 6; + v79 = v74 + 6; + while ( v78 ) + { + v80 = std::string::compare(v78 + 16, (int)&v145); + v97 = v81; + if ( v80 < 0 ) + { + v78 = *(_DWORD *)(v78 + 12); + } + else + { + v79 = (int *)v78; + v78 = *(_DWORD *)(v78 + 8); + } + } + if ( v110 != v79 ) + { + v82 = std::string::compare((int)&v145, (int)(v79 + 4)); + v97 = 0; + if ( v82 < 0 ) + v79 = v110; + } + std::string::_M_dispose((void **)&v145); + if ( v79 == v110 || v79[11] == v79[10] ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v145); + v84 = std::operator<<((std::ostream::sentry *)v147, a4); + std::operator<<>(v84, "("); + v85 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 5)); + std::operator<<>(v85, ":"); + v86 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v38 + 6)); + v87 = std::operator<<>(v86, "): unexpected token `"); + v88 = v38 + 28; + if ( *(_DWORD *)v38 != 1 ) + { + v88 = "$"; + if ( *(_DWORD *)v38 != 8 ) + { + v89 = (char **)*((_DWORD *)v38 + 1); + v88 = "UNKNOWN"; + if ( v89 ) + v88 = *v89; + } + } + v90 = std::operator<<>(v87, v88); + std::operator<<>(v90, "`"); + v48 = (char *)&v133; + std::stringbuf::str((int)&v133, v148); + goto LABEL_50; + } + std::deque>::pop_back(v111); + v83 = (*(_DWORD *)(v79[10] + 4) - *(_DWORD *)v79[10]) >> 3; + while ( --v83 >= 0 ) + { + v91 = *(_DWORD *)(*(_DWORD *)v79[10] + 8 * v83); + if ( (*(int (__thiscall **)(int, _DWORD *))(*(_DWORD *)v91 + 8))(v91, v97) == 4 ) + break; + v92 = (_DWORD *)(*(_DWORD *)v79[10] + 8 * v83); + std::deque>::push_back(v111, v92); + v97 = v92; + } + } + } + if ( *(_DWORD *)(a1 + 72) == *(_DWORD *)(a1 + 56) ) + { + std::string::operator=(a5, "interal error: "); + std::string::operator+=(a5, "1004"); + Tokens = 1004; + } + else + { + v93 = (volatile signed __int32 **)std::deque>::back((_DWORD *)(a1 + 48)); + std::__shared_ptr::operator=( + (volatile signed __int32 **)a1, + v93); + } +LABEL_105: + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v127); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v123); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v121); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v119); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v117); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v139); +LABEL_106: + std::vector::~vector((void **)&v128); + std::string::_M_dispose(&v136); + std::string::_M_dispose(v135); + return Tokens; +} +// 4066D7: variable 'v95' is possibly undefined +// 4066E3: variable 'v98' is possibly undefined +// 4066FC: variable 'v7' is possibly undefined +// 40682C: variable 'v99' is possibly undefined +// 4068E5: variable 'v100' is possibly undefined +// 406935: variable 'v101' is possibly undefined +// 406983: variable 'v102' is possibly undefined +// 406A3C: variable 'v103' is possibly undefined +// 406AA2: variable 'v104' is possibly undefined +// 406B07: variable 'v105' is possibly undefined +// 406B72: variable 'v106' is possibly undefined +// 406C4D: variable 'v37' is possibly undefined +// 406DA2: variable 'v107' is possibly undefined +// 406DB9: variable 'v40' is possibly undefined +// 407158: variable 'v62' is possibly undefined +// 407333: variable 'v77' is possibly undefined +// 407350: variable 'v81' is possibly undefined +// 43CAA0: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 4E9B60: using guessed type int dword_4E9B60; +// 4E9B68: using guessed type int dword_4E9B68; +// 4E9B6C: using guessed type int dword_4E9B6C; +// 4E9B70: using guessed type int dword_4E9B70; +// 4E9B74: using guessed type char byte_4E9B74; +// 4EC0D7: using guessed type void *off_4EC0D7; +// 4F5084: using guessed type void (__cdecl *off_4F5084)(WXSS::CSSTreeLib::NonTerminal *__hidden this); +// 4F5198: using guessed type void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this); +// 4F636C: using guessed type int (*off_4F636C)(); +// 4F63DC: using guessed type int (*off_4F63DC)(); +// 4F63F8: using guessed type int (*off_4F63F8)(); +// 4065B8: using guessed type char var_E0[4]; +// 4065B8: using guessed type _DWORD var_DC[55]; + +//----- (00407656) -------------------------------------------------------- +void __cdecl __tcf_0() +{ + std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(dword_4E9B64); +} + +//----- (00407674) -------------------------------------------------------- +void __cdecl __tcf_0_0() +{ + std::ios_base::Init::~Init(); +} + +//----- (0040767E) -------------------------------------------------------- +void __thiscall WXSS::Tokenizer::Tokenizer(int this, char *a2, int a3) +{ + int v3; // edi + + v3 = this + 24; + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 24) = this + 32; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + *(_DWORD *)(this + 28) = 0; + *(_BYTE *)(this + 32) = 0; + std::string::operator=((unsigned int *)this, a2); + std::string::_M_assign(v3, a3); +} + +//----- (004076EA) -------------------------------------------------------- +void WXSS::Tokenizer::InitTransitTable() +{ + const char *i; // edx + int v1; // eax + const char *j; // edx + int v3; // eax + const char *k; // edx + int v5; // eax + const char *m; // edx + int v7; // eax + const char *v8; // edx + int v9; // eax + const char *v10; // edx + int v11; // eax + const char *n; // edx + int v13; // eax + const char *v14; // edx + int v15; // eax + const char *ii; // edx + int v17; // eax + const char *jj; // edx + int v19; // eax + const char *v20; // edx + int v21; // eax + const char *kk; // edx + int v23; // eax + const char *v24; // edx + int v25; // eax + const char *mm; // edx + int v27; // eax + const char *nn; // edx + int v29; // eax + const char *i1; // edx + int v31; // eax + const char *i2; // edx + int v33; // eax + + if ( !WXSS::Tokenizer::InitTransitTable(void)::bInited ) + { + WXSS::Tokenizer::InitTransitTable(void)::bInited = 1; + for ( i = " \n\t\r"; ; ++i ) + { + v1 = *i; + if ( !(_BYTE)v1 ) + break; + dword_5422A0[2 * v1] = 134217729; + dword_5422A4[2 * v1] = 0; + } + for ( j = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; ; ++j ) + { + v3 = *j; + if ( !(_BYTE)v3 ) + break; + dword_5422A0[2 * v3] = 2; + dword_5422A4[2 * v3] = 0; + } + for ( k = "0123456789"; ; ++k ) + { + v5 = *k; + if ( !(_BYTE)v5 ) + break; + dword_5422A0[2 * v5] = 5; + dword_5422A4[2 * v5] = 0; + } + for ( m = "#*,{}[]:()~=|>\"+^@;"; ; ++m ) + { + v7 = *m; + if ( !(_BYTE)v7 ) + break; + dword_5422A0[2 * v7] = 1114113; + dword_5422A4[2 * v7] = 0; + } + dword_542678 = 1114116; + v8 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; + dword_54267C = 0; + dword_5422A0[0] = 1; + dword_5422A4[0] = 0; + dword_5423B0 = 6; + dword_5423B4 = 0; + dword_5423D8 = 7; + dword_5423DC = 0; + dword_5424A0 = 23; + dword_5424A4 = 0; + dword_5423B8 = 3; + dword_5423BC = 0; + dword_542AA0 = -1; + dword_542AA4 = -1; + dword_5423C0 = 33619969; + dword_5423C4 = 0; + dword_559678 = 88211481; + dword_55967C = 0; + dword_5592A0 = -1; + dword_5592A4 = -1; + dword_559AA0 = 24; + dword_559AA4 = 0; + dword_55A678 = 1114113; + dword_55A67C = 0; + dword_55AAA0 = -1; + dword_55AAA4 = -1; + while ( 1 ) + { + v9 = *v8; + if ( !(_BYTE)v9 ) + break; + dword_5582A0[2 * v9] = 2; + ++v8; + dword_5582A4[2 * v9] = 0; + } + dword_558AA0 = 68288513; + v10 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; + dword_558AA4 = 0; + while ( 1 ) + { + v11 = *v10; + if ( !(_BYTE)v11 ) + break; + dword_5462A0[2 * v11] = 5; + ++v10; + dword_5462A4[2 * v11] = 0; + } + for ( n = "0123456789"; ; ++n ) + { + v13 = *n; + if ( !(_BYTE)v13 ) + break; + dword_5462A0[2 * v13] = 5; + dword_5462A4[2 * v13] = 0; + } + dword_5463C8 = 589825; + v14 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; + dword_5463CC = 0; + dword_546AA0 = 67502081; + dword_546AA4 = 0; + dword_5473B0 = 327681; + dword_5473B4 = 0; + dword_547AA0 = 6; + dword_547AA4 = 0; + dword_5483D8 = 327681; + dword_5483DC = 0; + dword_548AA0 = 7; + dword_548AA4 = 0; + dword_542418 = 134217743; + dword_54241C = 0; + dword_5503F0 = 16; + dword_5503F4 = 0; + dword_550AA0 = 134217729; + dword_550AA4 = 0; + dword_5513F0 = 17; + dword_5513F4 = 0; + dword_551AA0 = 16; + dword_551AA4 = 0; + dword_552418 = 134217729; + dword_55241C = 0; + dword_5523F0 = 67108880; + dword_5523F4 = 0; + dword_552AA0 = 16; + dword_552AA4 = 0; + dword_545418 = 134217746; + dword_54541C = 0; + dword_5533F0 = 19; + dword_5533F4 = 0; + dword_553AA0 = 134217732; + dword_553AA4 = 0; + dword_5543F0 = 20; + dword_5543F4 = 0; + dword_554AA0 = 19; + dword_554AA4 = 0; + dword_555418 = 134217732; + dword_55541C = 0; + dword_5553F0 = 67108883; + dword_5553F4 = 0; + dword_555AA0 = 19; + dword_555AA4 = 0; + while ( 1 ) + { + v15 = *v14; + if ( !(_BYTE)v15 ) + break; + dword_5432A0[2 * v15] = 2; + ++v14; + dword_5432A4[2 * v15] = 0; + } + for ( ii = "0123456789"; ; ++ii ) + { + v17 = *ii; + if ( !(_BYTE)v17 ) + break; + dword_5432A0[2 * v17] = 2; + dword_5432A4[2 * v17] = 0; + } + for ( jj = " \n\t\r"; ; ++jj ) + { + v19 = *jj; + if ( !(_BYTE)v19 ) + break; + dword_5432A0[2 * v19] = 67764225; + dword_5432A4[2 * v19] = 0; + } + dword_5433B0 = 67764225; + v20 = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; + dword_5433B4 = 0; + dword_543AA0 = 67764225; + dword_543AA4 = 0; + while ( 1 ) + { + v21 = *v20; + if ( !(_BYTE)v21 ) + break; + dword_5442A0[2 * v21] = 3; + ++v20; + dword_5442A4[2 * v21] = 0; + } + for ( kk = "0123456789"; ; ++kk ) + { + v23 = *kk; + if ( !(_BYTE)v23 ) + break; + dword_5442A0[2 * v23] = 3; + dword_5442A4[2 * v23] = 0; + } + dword_544AA0 = 69337089; + v24 = " \n\t\r"; + dword_544AA4 = 0; + while ( 1 ) + { + v25 = *v24; + if ( !(_BYTE)v25 ) + break; + dword_5452A0[2 * v25] = 134217732; + ++v24; + dword_5452A4[2 * v25] = 0; + } + for ( mm = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; ; ++mm ) + { + v27 = *mm; + if ( !(_BYTE)v27 ) + break; + dword_5452A0[2 * v27] = 8; + dword_5452A4[2 * v27] = 0; + } + for ( nn = ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"; ; ++nn ) + { + v29 = *nn; + if ( !(_BYTE)v29 ) + break; + dword_5492A0[2 * v29] = 8; + dword_5492A4[2 * v29] = 0; + } + for ( i1 = "0123456789"; ; ++i1 ) + { + v31 = *i1; + if ( !(_BYTE)v31 ) + break; + dword_5492A0[2 * v31] = 8; + dword_5492A4[2 * v31] = 0; + } + for ( i2 = " \n\t\r"; ; ++i2 ) + { + v33 = *i2; + if ( !(_BYTE)v33 ) + break; + dword_5492A0[2 * v33] = 67764228; + dword_5492A4[2 * v33] = 0; + } + dword_549470 = 67764228; + dword_549474 = 0; + dword_549688 = 67764228; + dword_54968C = 0; + dword_549478 = 67764228; + dword_54947C = 0; + dword_549AA0 = -1; + dword_549AA4 = -1; + dword_545470 = 1114121; + dword_545474 = 0; + dword_545478 = 1114116; + dword_54547C = 0; + dword_545688 = 1114113; + dword_54568C = 0; + dword_545AA0 = -1; + dword_545AA4 = -1; + dword_54A478 = 84279300; + dword_54A47C = 0; + dword_54A688 = 84279300; + dword_54A68C = 0; + dword_54A3E0 = 10; + dword_54A3E4 = 0; + dword_54A3B0 = 11; + dword_54A3B4 = 0; + dword_54A3D8 = 13; + dword_54A3DC = 0; + dword_54B3E8 = 9; + dword_54B3EC = 0; + dword_54B3B0 = 12; + dword_54B3B4 = 0; + dword_54B3D8 = 14; + dword_54B3DC = 0; + dword_54BAA0 = 10; + dword_54BAA4 = 0; + dword_54C3B0 = 9; + dword_54C3B4 = 0; + dword_54E3D8 = 9; + dword_54E3DC = 0; + dword_54D3B0 = 10; + dword_54D3B4 = 0; + dword_54F3D8 = 10; + dword_54F3DC = 0; + dword_54CAA0 = 11; + dword_54CAA4 = 0; + dword_54EAA0 = 13; + dword_54EAA4 = 0; + dword_54DAA0 = 12; + dword_54DAA4 = 0; + dword_54FAA0 = 14; + dword_54FAA4 = 0; + dword_54AAA0 = 9; + dword_54AAA4 = 0; + } +} +// 5422A0: using guessed type int dword_5422A0[]; +// 5422A4: using guessed type int dword_5422A4[67]; +// 5423B0: using guessed type int dword_5423B0; +// 5423B4: using guessed type int dword_5423B4; +// 5423B8: using guessed type int dword_5423B8; +// 5423BC: using guessed type int dword_5423BC; +// 5423C0: using guessed type int dword_5423C0; +// 5423C4: using guessed type int dword_5423C4; +// 5423D8: using guessed type int dword_5423D8; +// 5423DC: using guessed type int dword_5423DC; +// 542418: using guessed type int dword_542418; +// 54241C: using guessed type int dword_54241C; +// 5424A0: using guessed type int dword_5424A0; +// 5424A4: using guessed type int dword_5424A4; +// 542678: using guessed type int dword_542678; +// 54267C: using guessed type int dword_54267C; +// 542AA0: using guessed type int dword_542AA0; +// 542AA4: using guessed type int dword_542AA4; +// 5432A0: using guessed type int dword_5432A0[]; +// 5432A4: using guessed type int dword_5432A4[67]; +// 5433B0: using guessed type int dword_5433B0; +// 5433B4: using guessed type int dword_5433B4; +// 543AA0: using guessed type int dword_543AA0; +// 543AA4: using guessed type int dword_543AA4; +// 5442A0: using guessed type int dword_5442A0[]; +// 5442A4: using guessed type int dword_5442A4[167]; +// 544AA0: using guessed type int dword_544AA0; +// 544AA4: using guessed type int dword_544AA4; +// 5452A0: using guessed type int dword_5452A0[]; +// 5452A4: using guessed type int dword_5452A4[39]; +// 545418: using guessed type int dword_545418; +// 54541C: using guessed type int dword_54541C; +// 545470: using guessed type int dword_545470; +// 545474: using guessed type int dword_545474; +// 545478: using guessed type int dword_545478; +// 54547C: using guessed type int dword_54547C; +// 545688: using guessed type int dword_545688; +// 54568C: using guessed type int dword_54568C; +// 545AA0: using guessed type int dword_545AA0; +// 545AA4: using guessed type int dword_545AA4; +// 5462A0: using guessed type int dword_5462A0[]; +// 5462A4: using guessed type int dword_5462A4[73]; +// 5463C8: using guessed type int dword_5463C8; +// 5463CC: using guessed type int dword_5463CC; +// 546AA0: using guessed type int dword_546AA0; +// 546AA4: using guessed type int dword_546AA4; +// 5473B0: using guessed type int dword_5473B0; +// 5473B4: using guessed type int dword_5473B4; +// 547AA0: using guessed type int dword_547AA0; +// 547AA4: using guessed type int dword_547AA4; +// 5483D8: using guessed type int dword_5483D8; +// 5483DC: using guessed type int dword_5483DC; +// 548AA0: using guessed type int dword_548AA0; +// 548AA4: using guessed type int dword_548AA4; +// 5492A0: using guessed type int dword_5492A0[]; +// 5492A4: using guessed type int dword_5492A4[115]; +// 549470: using guessed type int dword_549470; +// 549474: using guessed type int dword_549474; +// 549478: using guessed type int dword_549478; +// 54947C: using guessed type int dword_54947C; +// 549688: using guessed type int dword_549688; +// 54968C: using guessed type int dword_54968C; +// 549AA0: using guessed type int dword_549AA0; +// 549AA4: using guessed type int dword_549AA4; +// 54A3B0: using guessed type int dword_54A3B0; +// 54A3B4: using guessed type int dword_54A3B4; +// 54A3D8: using guessed type int dword_54A3D8; +// 54A3DC: using guessed type int dword_54A3DC; +// 54A3E0: using guessed type int dword_54A3E0; +// 54A3E4: using guessed type int dword_54A3E4; +// 54A478: using guessed type int dword_54A478; +// 54A47C: using guessed type int dword_54A47C; +// 54A688: using guessed type int dword_54A688; +// 54A68C: using guessed type int dword_54A68C; +// 54AAA0: using guessed type int dword_54AAA0; +// 54AAA4: using guessed type int dword_54AAA4; +// 54B3B0: using guessed type int dword_54B3B0; +// 54B3B4: using guessed type int dword_54B3B4; +// 54B3D8: using guessed type int dword_54B3D8; +// 54B3DC: using guessed type int dword_54B3DC; +// 54B3E8: using guessed type int dword_54B3E8; +// 54B3EC: using guessed type int dword_54B3EC; +// 54BAA0: using guessed type int dword_54BAA0; +// 54BAA4: using guessed type int dword_54BAA4; +// 54C3B0: using guessed type int dword_54C3B0; +// 54C3B4: using guessed type int dword_54C3B4; +// 54CAA0: using guessed type int dword_54CAA0; +// 54CAA4: using guessed type int dword_54CAA4; +// 54D3B0: using guessed type int dword_54D3B0; +// 54D3B4: using guessed type int dword_54D3B4; +// 54DAA0: using guessed type int dword_54DAA0; +// 54DAA4: using guessed type int dword_54DAA4; +// 54E3D8: using guessed type int dword_54E3D8; +// 54E3DC: using guessed type int dword_54E3DC; +// 54EAA0: using guessed type int dword_54EAA0; +// 54EAA4: using guessed type int dword_54EAA4; +// 54F3D8: using guessed type int dword_54F3D8; +// 54F3DC: using guessed type int dword_54F3DC; +// 54FAA0: using guessed type int dword_54FAA0; +// 54FAA4: using guessed type int dword_54FAA4; +// 5503F0: using guessed type int dword_5503F0; +// 5503F4: using guessed type int dword_5503F4; +// 550AA0: using guessed type int dword_550AA0; +// 550AA4: using guessed type int dword_550AA4; +// 5513F0: using guessed type int dword_5513F0; +// 5513F4: using guessed type int dword_5513F4; +// 551AA0: using guessed type int dword_551AA0; +// 551AA4: using guessed type int dword_551AA4; +// 5523F0: using guessed type int dword_5523F0; +// 5523F4: using guessed type int dword_5523F4; +// 552418: using guessed type int dword_552418; +// 55241C: using guessed type int dword_55241C; +// 552AA0: using guessed type int dword_552AA0; +// 552AA4: using guessed type int dword_552AA4; +// 5533F0: using guessed type int dword_5533F0; +// 5533F4: using guessed type int dword_5533F4; +// 553AA0: using guessed type int dword_553AA0; +// 553AA4: using guessed type int dword_553AA4; +// 5543F0: using guessed type int dword_5543F0; +// 5543F4: using guessed type int dword_5543F4; +// 554AA0: using guessed type int dword_554AA0; +// 554AA4: using guessed type int dword_554AA4; +// 5553F0: using guessed type int dword_5553F0; +// 5553F4: using guessed type int dword_5553F4; +// 555418: using guessed type int dword_555418; +// 55541C: using guessed type int dword_55541C; +// 555AA0: using guessed type int dword_555AA0; +// 555AA4: using guessed type int dword_555AA4; +// 5582A0: using guessed type int dword_5582A0[]; +// 5582A4: using guessed type int dword_5582A4[511]; +// 558AA0: using guessed type int dword_558AA0; +// 558AA4: using guessed type int dword_558AA4; +// 5592A0: using guessed type int dword_5592A0; +// 5592A4: using guessed type int dword_5592A4; +// 559678: using guessed type int dword_559678; +// 55967C: using guessed type int dword_55967C; +// 559AA0: using guessed type int dword_559AA0; +// 559AA4: using guessed type int dword_559AA4; +// 55A678: using guessed type int dword_55A678; +// 55A67C: using guessed type int dword_55A67C; +// 55AAA0: using guessed type int dword_55AAA0; +// 55AAA4: using guessed type int dword_55AAA4; +// 15412A4: using guessed type char WXSS::Tokenizer::InitTransitTable(void)::bInited; + +//----- (00407E88) -------------------------------------------------------- +int WXSS::Tokenizer::InitSubStrCheckingCaluseTable() +{ + int result; // eax + char v1[56]; // [esp+14h] [ebp-38h] BYREF + + if ( !WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited ) + { + WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited = 1; + WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 9, (char *)off_4EC1FC, 9); + qmemcpy(&WXSS::Tokenizer::SCC, v1, 0x1Cu); + WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 9, (char *)off_4EC200, 9); + qmemcpy((char *)&WXSS::Tokenizer::SCC + 28, v1, 0x1Cu); + WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 10, (char *)off_4EC1FC, 9); + qmemcpy((char *)&WXSS::Tokenizer::SCC + 56, v1, 0x1Cu); + WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 10, (char *)off_4EC200, 9); + qmemcpy((char *)&WXSS::Tokenizer::SCC + 84, v1, 0x1Cu); + result = WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(v1, 0, (char *)&byte_4EC204, 0); + qmemcpy((char *)&WXSS::Tokenizer::SCC + 112, v1, 0x1Cu); + } + return result; +} +// 15412A0: using guessed type int WXSS::Tokenizer::InitSubStrCheckingCaluseTable(void)::inited; + +//----- (00407F94) -------------------------------------------------------- +int __cdecl WXSS::Tokenizer::TryGetAnotherTypeByAnySubStr(int a1, int a2, int a3, int a4) +{ + char *v4; // ebx + int v5; // esi + unsigned int v6; // edi + unsigned int v7; // eax + + if ( !a4 ) + { + v4 = (char *)&WXSS::Tokenizer::SCC; + v5 = 0; + v6 = a2 + 1; + while ( *(_DWORD *)v4 ) + { + if ( a3 == *(_DWORD *)v4 ) + { + v7 = *((_DWORD *)v4 + 1); + if ( v6 >= v7 && !strncmp(v4 + 8, (const char *)(v6 - v7 + a1), *((_DWORD *)v4 + 1)) ) + return dword_53F6B8[7 * v5]; + } + ++v5; + v4 += 28; + } + } + return a4; +} +// 53F6B8: using guessed type int dword_53F6B8[1786]; + +//----- (00408002) -------------------------------------------------------- +int __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + int result; // eax + + v1 = *a1; + if ( v1 ) + return std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v1); + return result; +} + +//----- (0040800E) -------------------------------------------------------- +_DWORD *__usercall std::__relocate_a_1>@( + _DWORD *a1@, + _DWORD *a2@, + _DWORD *a3@) +{ + _DWORD *v3; // ebx + _DWORD *v4; // edx + int v5; // ecx + volatile signed __int32 **v6; // ecx + _DWORD *v8; // [esp+0h] [ebp-28h] + _DWORD *v9; // [esp+4h] [ebp-24h] + + v3 = a1; + v4 = a3; + while ( v3 != a2 ) + { + *v4 = *v3; + v4[1] = v3[1]; + v5 = v3[2]; + v4[2] = v5; + if ( v5 ) + { + if ( _CRT_MT ) + _InterlockedIncrement((volatile signed __int32 *)(v5 + 4)); + else + ++*(_DWORD *)(v5 + 4); + } + v8 = a1; + v9 = v4; + v4[3] = v3[3]; + v4[4] = v3[4]; + v4[5] = v3[5]; + v4[6] = v3[6]; + qmemcpy(v4 + 7, v3 + 7, 0x40u); + v6 = (volatile signed __int32 **)(v3 + 2); + v3 += 23; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v6); + a1 = v8; + v4 = v9 + 23; + } + return &a3[23 * ((700266407 * ((unsigned int)((char *)v3 - (char *)a1) >> 2)) & 0x3FFFFFFF)]; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004080AE) -------------------------------------------------------- +int __thiscall WXSS::Tokenizer::GetTokens(int *this, int a2, unsigned int *a3, int a4) +{ + unsigned int v4; // eax + int v5; // ebx + _DWORD *v6; // edi + int v7; // esi + int AnotherTypeByAnySubStr; // eax + int v9; // ebx + int v10; // esi + int v11; // edi + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + std::ostream::sentry *v14; // eax + std::ostream::sentry *v15; // eax + std::ostream::sentry *v16; // eax + std::ostream::sentry *v17; // eax + std::ostream::sentry *v18; // eax + size_t v19; // esi + int v20; // ecx + int v21; // eax + int v22; // edx + int v23; // eax + unsigned int v24; // eax + _BYTE **v25; // esi + int v26; // eax + unsigned __int8 *v27; // ebx + unsigned int v28; // eax + int v29; // edx + volatile signed __int32 *v30; // eax + unsigned int v31; // edx + volatile signed __int32 *v32; // edx + volatile signed __int32 *v33; // ebx + std::ostream::sentry *v34; // eax + std::ostream::sentry *v35; // eax + const char *v36; // ebx + int i; // esi + const char *v38; // eax + void (__cdecl *v40)(void *); // [esp+4h] [ebp-1A4h] + void (__cdecl *v41)(void *); // [esp+4h] [ebp-1A4h] + void (__cdecl *v42)(void *); // [esp+4h] [ebp-1A4h] + size_t Size; // [esp+10h] [ebp-198h] + int v44; // [esp+14h] [ebp-194h] + int v46; // [esp+1Ch] [ebp-18Ch] + unsigned int v47; // [esp+20h] [ebp-188h] + int v48; // [esp+24h] [ebp-184h] + unsigned int v49; // [esp+24h] [ebp-184h] + int v50; // [esp+28h] [ebp-180h] + unsigned __int8 v51; // [esp+2Fh] [ebp-179h] + int v52; // [esp+30h] [ebp-178h] + int v53; // [esp+34h] [ebp-174h] + int v54; // [esp+38h] [ebp-170h] + int v55; // [esp+3Ch] [ebp-16Ch] + const char **v56; // [esp+44h] [ebp-164h] + volatile signed __int32 *v57; // [esp+48h] [ebp-160h] BYREF + void *v58[6]; // [esp+4Ch] [ebp-15Ch] BYREF + void *v59; // [esp+64h] [ebp-144h] BYREF + const char **v60; // [esp+68h] [ebp-140h] + volatile signed __int32 *v61; // [esp+6Ch] [ebp-13Ch] BYREF + int v62; // [esp+70h] [ebp-138h] + size_t v63; // [esp+74h] [ebp-134h] + int v64; // [esp+78h] [ebp-130h] + int v65; // [esp+7Ch] [ebp-12Ch] + char Destination[64]; // [esp+80h] [ebp-128h] BYREF + unsigned int v67; // [esp+C0h] [ebp-E8h] BYREF + volatile signed __int32 *v68; // [esp+C4h] [ebp-E4h] BYREF + volatile signed __int32 *v69; // [esp+C8h] [ebp-E0h] BYREF + int v70; // [esp+CCh] [ebp-DCh] BYREF + size_t v71; // [esp+D0h] [ebp-D8h] + int v72; // [esp+D4h] [ebp-D4h] + int v73; // [esp+D8h] [ebp-D0h] + char v74[204]; // [esp+DCh] [ebp-CCh] BYREF + + WXSS::Tokenizer::InitTransitTable(); + WXSS::Tokenizer::InitSubStrCheckingCaluseTable(); + v47 = this[1]; + v52 = a4; + if ( a4 <= 0 ) + v52 = 1; + v53 = *this; + v4 = v47 / 7; + if ( v47 > 0x9BD37A9 ) + std::__throw_length_error((std::length_error *)"vector::reserve"); + if ( v4 > -373475417 * ((*(_DWORD *)(a2 + 8) - *(_DWORD *)a2) >> 2) ) + { + v5 = 23 * v4; + v6 = 0; + v7 = *(_DWORD *)(a2 + 4) - *(_DWORD *)a2; + if ( v47 > 6 ) + v6 = operator new((struct type_info *)(92 * v4), v40); + std::__relocate_a_1>( + *(_DWORD **)a2, + *(_DWORD **)(a2 + 4), + v6); + if ( *(_DWORD *)a2 ) + operator delete(*(void **)a2); + *(_DWORD *)a2 = v6; + *(_DWORD *)(a2 + 4) = (char *)v6 + v7; + *(_DWORD *)(a2 + 8) = &v6[v5]; + } + v44 = 4194305; + AnotherTypeByAnySubStr = 0; + v9 = 0; + v10 = 1; + v50 = 1; + v46 = 1; + v55 = 0; + while ( 1 ) + { + if ( v55 > (int)v47 ) + return 0; + if ( !--v44 ) + { + std::string::operator=(a3, "something must be wrong"); + return -1; + } + v51 = *(_BYTE *)(v53 + v55); + if ( v55 == v47 ) + v51 = 0; + v11 = WXSS::Tokenizer::TT[1024 * v52 + 2 * v51]; + AnotherTypeByAnySubStr = WXSS::Tokenizer::TryGetAnotherTypeByAnySubStr(v53, v55, v52, AnotherTypeByAnySubStr); + if ( !v11 ) + { + v11 = dword_541AA0[1024 * v52]; + if ( !v11 ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v67); + std::operator<<>((std::ostream::sentry *)&v69, "no transition for "); + v12 = (std::ostream::sentry *)std::ostream::operator<<(v52); + v13 = std::operator<<>(v12, " with input "); + std::operator<<>(v13, v51); + std::stringbuf::str((int)&v59, &v70); + std::string::operator=(a3, &v59); + std::string::_M_dispose(&v59); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v67); + return -1; + } + } + if ( v11 == -1 ) + break; + v52 = (unsigned __int16)v11; + if ( (v11 & 0x30000) != 0 ) + { + v54 = ((v11 & 0x20000) == 0) + v55 - 1; + if ( !AnotherTypeByAnySubStr ) + { + AnotherTypeByAnySubStr = 2; + if ( (v11 & 0x40000) == 0 ) + { + AnotherTypeByAnySubStr = 4; + if ( (v11 & 0x80000) == 0 ) + { + AnotherTypeByAnySubStr = 6; + if ( (v11 & 0x400000) == 0 ) + { + AnotherTypeByAnySubStr = 5; + if ( (v11 & 0x200000) == 0 ) + AnotherTypeByAnySubStr = (v11 & 0x2000000) == 0 ? 1 : 7; + } + } + } + } + if ( v9 <= v54 ) + { + v65 = v10; + v59 = (void *)AnotherTypeByAnySubStr; + Destination[0] = 0; + v19 = ((v11 & 0x20000) == 0) + v55 - v9; + v60 = 0; + v61 = 0; + v62 = v9; + v64 = v46; + v63 = v19; + if ( AnotherTypeByAnySubStr == 1 ) + { + strncpy(Destination, (const char *)(v53 + v9), v19); + Destination[v19] = 0; + } + else + { + v48 = ((v11 & 0x20000) == 0) + v55 - 1; + if ( (v11 & 0x1000000) != 0 ) + { + v21 = v53; + v20 = 4194313; + LOBYTE(v21) = *(_BYTE *)(v53 + v9); + while ( v54 != v9 ) + { + if ( (unsigned __int8)(v21 - 10) > 0x16u || !_bittest(&v20, v21 - 10) ) + goto LABEL_44; + if ( (_BYTE)v21 == 10 ) + ++v64; + v21 = v53; + ++v9; + LOBYTE(v21) = *(_BYTE *)(v53 + v9); + } + v9 = ((v11 & 0x20000) == 0) + v55 - 1; +LABEL_44: + v23 = v53; + v22 = 4194313; + v48 = ((v11 & 0x20000) == 0) + v55 - 1; + for ( LOBYTE(v23) = *(_BYTE *)(v53 + v54); v9 < v48; LOBYTE(v23) = *(_BYTE *)(v53 + v48) ) + { + v24 = v23 - 10; + if ( (unsigned __int8)v24 > 0x16u || !_bittest(&v22, v24) ) + break; + --v48; + v23 = v53; + } + } + v62 = v9; + v25 = (_BYTE **)operator new((struct type_info *)0x18, v41); + v26 = v48 - v9; + v27 = (unsigned __int8 *)(v53 + v9); + v49 = v26 + 1; + *v25 = v25 + 2; + Size = (size_t)&v27[v26 + 1]; + if ( Size && !v27 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + v67 = v26 + 1; + if ( v49 > 0xF ) + { + *v25 = std::string::_M_create(&v67, 0); + v25[2] = (_BYTE *)v67; + } + std::string::_S_copy_chars(*v25, v27, Size); + v28 = v67; + v29 = (int)*v25; + v25[1] = (_BYTE *)v67; + *(_BYTE *)(v29 + v28) = 0; + v57 = 0; + v67 = (unsigned int)v25; + v68 = 0; + v30 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v42); + v31 = v67; + *((_DWORD *)v30 + 3) = v25; + *((_DWORD *)v30 + 1) = 1; + *((_DWORD *)v30 + 2) = 1; + *v30 = (volatile signed __int32)&off_4F63F8; + v56 = (const char **)v31; + v32 = v57; + v67 = 0; + v57 = v30; + v68 = v32; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v68); + v33 = v57; + v60 = v56; + if ( v57 != v61 ) + { + if ( v57 ) + { + if ( _CRT_MT ) + _InterlockedIncrement(v57 + 1); + else + ++*((_DWORD *)v57 + 1); + } + if ( v61 ) + std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(v61); + v61 = v33; + } + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v57); + v63 = v49; + } + if ( v59 != (void *)1 ) + { + if ( !v60 ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v67); + std::operator<<>((std::ostream::sentry *)&v69, "pos: "); + v34 = (std::ostream::sentry *)std::ostream::operator<<(v55); + v35 = std::operator<<>(v34, "f739 error"); + std::endl>(v35); + std::stringbuf::str((int)v58, &v70); + std::string::operator=(a3, v58); + std::string::_M_dispose(v58); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v67); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v61); + return -1; + } + if ( v59 == (void *)4 ) + { + v36 = *v60; + if ( !_stricmp(*v60, "@media") + || !_stricmp(v36, "@keyframes") + || !_stricmp(v36, "@-webkit-keyframes") + || !_stricmp(v36, "@supports") ) + { + v52 = 24; + } + for ( i = 0; (&WXSS::Tokenizer::DIRECTIVES)[i]; ++i ) + { + if ( !_stricmp(v36, (&WXSS::Tokenizer::DIRECTIVES)[i]) ) + { + v38 = (&WXSS::Tokenizer::DIRECTIVES)[i]; + v74[0] = 0; + v68 = 0; + v69 = 0; + v67 = 1; + v70 = 0; + v71 = 0; + v72 = 0; + v73 = 0; + strcpy(v74, v38); + v70 = v62; + v72 = v64; + v73 = v65; + v71 = v63; + std::vector::push_back((char **)a2, (WXSS::Token *)&v67); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v69); + goto LABEL_80; + } + } + } + } + std::vector::push_back((char **)a2, (WXSS::Token *)&v59); +LABEL_80: + v9 = ((v11 & 0x20000) == 0) + v55; + v10 = v50 + 1; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v61); + } + AnotherTypeByAnySubStr = 0; + } + if ( (v11 & 0x4000000) != 0 ) + { + --v55; + } + else + { + if ( v51 == 10 ) + { + ++v46; + v50 = 0; + } + ++v50; + } + ++v55; + if ( (v11 & 0x8000000) != 0 ) + { + v10 = v50; + v9 = v55; + } + } + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v67); + v14 = std::operator<<((std::ostream::sentry *)&v69, this + 6); + std::operator<<>(v14, "("); + v15 = (std::ostream::sentry *)std::ostream::operator<<(v46); + std::operator<<>(v15, ":"); + v16 = (std::ostream::sentry *)std::ostream::operator<<(v50); + v17 = std::operator<<>(v16, "): unexpected `"); + v18 = std::operator<<>(v17, v51); + std::operator<<>(v18, "` at pos "); + std::ostream::operator<<(v55 + 1); + if ( !v55 && v51 > 0xFDu ) + std::operator<<>( + (std::ostream::sentry *)&v69, + " (shoud you check if there's any BOM at the begin of file)"); + std::stringbuf::str((int)&v59, &v70); + std::string::operator=(a3, &v59); + std::string::_M_dispose(&v59); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v67); + return v11; +} +// 408165: variable 'v40' is possibly undefined +// 4085C7: variable 'v41' is possibly undefined +// 408690: variable 'v42' is possibly undefined +// 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 4F63F8: using guessed type int (*off_4F63F8)(); +// 5412A0: using guessed type int WXSS::Tokenizer::TT[]; +// 541AA0: using guessed type int dword_541AA0[]; +// 15412D0: using guessed type int _CRT_MT; +// 4080AE: using guessed type char Destination[64]; +// 4080AE: using guessed type char var_CC[204]; + +//----- (00408A44) -------------------------------------------------------- +void __cdecl __tcf_1_2() +{ + std::ios_base::Init::~Init(); +} + +//----- (00408A4E) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *a2) +{ + unsigned int v3; // kr04_4 + unsigned int result; // eax + _BYTE *v5; // edx + unsigned int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = this + 2; + v3 = strlen(a2) + 1; + v6[0] = v3 - 1; + if ( v3 - 1 > 0xF ) + { + *this = std::string::_M_create(v6, 0); + this[2] = (void *)v6[0]; + } + std::string::_S_copy_chars(*this, (unsigned __int8 *)a2, (size_t)&a2[v3 - 1]); + result = v6[0]; + v5 = *this; + this[1] = (void *)v6[0]; + v5[result] = 0; + return result; +} +// 408A4E: using guessed type unsigned int var_1C[7]; + +//----- (00408ABF) -------------------------------------------------------- +volatile signed __int32 *__usercall __gnu_cxx::__atomic_add_dispatch@(volatile signed __int32 *result@) +{ + if ( _CRT_MT ) + _InterlockedIncrement(result); + else + ++*result; + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00408AD0) -------------------------------------------------------- +void __fastcall std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // ecx + signed __int32 v2; // eax + signed __int32 v3; // eax + int v4; // [esp-1Ch] [ebp-1Ch] + int v5; // [esp-18h] [ebp-18h] + int v6; // [esp-14h] [ebp-14h] + volatile signed __int32 *v7; // [esp-10h] [ebp-10h] + int v8; // [esp-Ch] [ebp-Ch] + int v9; // [esp-8h] [ebp-8h] + + v1 = *a1; + if ( v1 ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 + 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 + 1); + *((_DWORD *)v1 + 1) = v2 - 1; + } + if ( v2 == 1 ) + { + (*(void (__stdcall **)(int, int, int, volatile signed __int32 *, int, int))(*v1 + 8))(v4, v5, v6, v1, v8, v9); + if ( _CRT_MT ) + { + v3 = _InterlockedExchangeAdd(v7 + 2, 0xFFFFFFFF); + } + else + { + v3 = *((_DWORD *)v7 + 2); + *((_DWORD *)v7 + 2) = v3 - 1; + } + if ( v3 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v7 + 12))(v7); + } + } +} +// 408B00: variable 'v4' is possibly undefined +// 408B00: variable 'v5' is possibly undefined +// 408B00: variable 'v6' is possibly undefined +// 408B00: variable 'v8' is possibly undefined +// 408B00: variable 'v9' is possibly undefined +// 408B12: variable 'v7' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (00408B30) -------------------------------------------------------- +void __fastcall std::vector>::~vector(void **a1) +{ + char *v2; // edi + char *i; // esi + volatile signed __int32 **v4; // ecx + + v2 = (char *)a1[1]; + for ( i = (char *)*a1; v2 != i; i += 8 ) + { + v4 = (volatile signed __int32 **)(i + 4); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00408B68) -------------------------------------------------------- +void __fastcall std::vector::~vector(void ***a1) +{ + void **v2; // edi + void **i; // esi + void **v4; // ecx + + v2 = a1[1]; + for ( i = *a1; v2 != i; i += 3 ) + { + v4 = i; + std::vector>::~vector(v4); + } + if ( *a1 ) + operator delete(*a1); +} + +//----- (00408B9E) -------------------------------------------------------- +void __thiscall std::vector::_M_move_assign(void *this, int *a2) +{ + void **v2; // ebx + void **v3; // edx + int v4; // edi + int v5; // edi + void **v6[9]; // [esp+4h] [ebp-24h] BYREF + + v2 = (void **)*((_DWORD *)this + 1); + v3 = (void **)*((_DWORD *)this + 2); + v4 = *a2; + v6[0] = *(void ***)this; + v6[1] = v2; + *(_DWORD *)this = v4; + v5 = a2[1]; + v6[2] = v3; + *((_DWORD *)this + 1) = v5; + *((_DWORD *)this + 2) = a2[2]; + *a2 = 0; + a2[1] = 0; + a2[2] = 0; + std::vector::~vector(v6); +} + +//----- (00408BF2) -------------------------------------------------------- +int WXSS::CSSTreeLib::TransitTable::GetTopType() +{ + return 25; +} + +//----- (00408BF8) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_move_assign( + int this, + _DWORD *a2) +{ + int result; // eax + int v4; // edi + + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(void ***)(this + 8)); + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = this + 4; + *(_DWORD *)(this + 16) = this + 4; + result = a2[2]; + *(_DWORD *)(this + 20) = 0; + if ( result ) + { + v4 = a2[1]; + *(_DWORD *)(this + 8) = result; + *(_DWORD *)(this + 4) = v4; + *(_DWORD *)(this + 12) = a2[3]; + *(_DWORD *)(this + 16) = a2[4]; + *(_DWORD *)(result + 4) = this + 4; + result = a2[5]; + *(_DWORD *)(this + 20) = result; + a2[2] = 0; + a2[3] = a2 + 1; + a2[4] = a2 + 1; + a2[5] = 0; + } + return result; +} + +//----- (00408C70) -------------------------------------------------------- +void __fastcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree( + int a1) +{ + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*(void ***)(a1 + 8)); +} + +//----- (00408C84) -------------------------------------------------------- +#error "408C84: too big function (funcsize=0)" + +//----- (00420200) -------------------------------------------------------- +_DWORD *__usercall d_make_comp@(_DWORD *a1@, int a2@, int a3@, int a4) +{ + int v4; // esi + _DWORD *v5; // ebx + _DWORD *result; // eax + + switch ( a2 ) + { + case 1: + case 2: + case 3: + case 4: + case 11: + case 33: + case 43: + case 45: + case 55: + case 56: + case 57: + case 58: + case 59: + case 61: + case 62: + case 64: + case 76: + case 78: + if ( !a3 ) + goto LABEL_7; + goto LABEL_6; + case 9: + case 10: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 34: + case 35: + case 36: + case 37: + case 38: + case 40: + case 48: + case 52: + case 53: + case 54: + case 60: + case 63: + case 67: + case 68: + case 69: + case 73: + case 74: + case 75: + if ( a3 ) + goto LABEL_3; + goto LABEL_7; + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 41: + case 46: + case 47: + case 77: + case 79: + case 80: + goto LABEL_3; + case 42: + case 49: +LABEL_6: + if ( !a4 ) + goto LABEL_7; +LABEL_3: + v4 = a1[5]; + if ( v4 >= a1[6] ) + goto LABEL_7; + v5 = (_DWORD *)(a1[4] + 16 * a1[5]); + v5[1] = 0; + a1[5] = v4 + 1; + *v5 = a2; + v5[3] = a4; + result = v5; + v5[2] = a3; + break; + default: +LABEL_7: + result = 0; + break; + } + return result; +} + +//----- (00420260) -------------------------------------------------------- +_DWORD *__usercall d_ref_qualifier@(_DWORD *a1@, _DWORD *a2@) +{ + _DWORD *result; // eax + char *v4; // edx + char v5; // cl + int v6; // ebp + int v7; // esi + int v8; // edi + + result = a2; + v4 = (char *)a1[3]; + v5 = *v4; + if ( *v4 == 82 || v5 == 79 ) + { + v6 = a1[11]; + v7 = 32; + v8 = v6 + 3; + if ( v5 == 82 ) + { + v8 = v6 + 2; + v7 = 31; + } + a1[11] = v8; + a1[3] = v4 + 1; + return d_make_comp(a1, v7, (int)result, 0); + } + return result; +} + +//----- (004202D0) -------------------------------------------------------- +_DWORD *__usercall d_count_templates_scopes@(_DWORD *result@, _DWORD *a2@, int a3@) +{ + _DWORD *v3; // esi + _DWORD *v4; // ebx + int v5; // edx + int v6; // ecx + + if ( a2 ) + { + v3 = result; + v4 = a2; + while ( 2 ) + { + switch ( *v4 ) + { + case 1: + case 2: + case 3: + case 9: + case 0xA: + case 0xB: + case 0xC: + case 0xD: + case 0xE: + case 0xF: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x25: + case 0x26: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x43: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + goto LABEL_6; + case 4: + v5 = result[71]; + ++result[81]; + if ( v5 <= 2048 ) + goto LABEL_12; + return result; + case 7: + case 8: + case 0x33: + v4 = (_DWORD *)v4[3]; + goto LABEL_9; + case 0x23: + case 0x24: + result = (_DWORD *)v4[2]; + if ( *result == 5 ) + ++v3[78]; +LABEL_6: + v5 = v3[71]; + if ( v5 > 2048 ) + return result; +LABEL_12: + v3[71] = v5 + 1; + d_count_templates_scopes(a3, v4[2]); + result = (_DWORD *)d_count_templates_scopes(v6, v4[3]); + --v3[71]; + return result; + case 0x2C: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + v4 = (_DWORD *)v4[2]; +LABEL_9: + if ( !v4 ) + return result; + continue; + default: + return result; + } + } + } + return result; +} +// 420348: variable 'v6' is possibly undefined + +//----- (00420380) -------------------------------------------------------- +int __usercall d_append_buffer@(int result@, char *a2@, int a3@) +{ + char *v3; // edi + char *v4; // esi + int v5; // ebx + int v6; // ecx + char v7; // dl + int v8; // eax + char v9; // [esp+1Fh] [ebp-Dh] + + if ( a3 ) + { + v3 = &a2[a3]; + v4 = a2; + v5 = result; + result = *(_DWORD *)(result + 256); + do + { + v7 = *v4; + if ( result == 255 ) + { + v8 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + v9 = v7; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v8); + ++*(_DWORD *)(v5 + 296); + v7 = v9; + v6 = 0; + result = 1; + } + else + { + v6 = result++; + } + ++v4; + *(_DWORD *)(v5 + 256) = result; + *(_BYTE *)(v5 + v6) = v7; + *(_BYTE *)(v5 + 260) = v7; + } + while ( v4 != v3 ); + } + return result; +} + +//----- (00420420) -------------------------------------------------------- +int __usercall d_number_isra_0@(char **a1@) +{ + int v2; // ebx + int v3; // ecx + char *v4; // ebx + signed int v5; // esi + int v6; // eax + int v8; // [esp+0h] [ebp-14h] + + v2 = (int)*a1; + v3 = **a1; + if ( (_BYTE)v3 != 110 ) + { + if ( (unsigned __int8)(v3 - 48) <= 9u ) + { + v8 = 0; + goto LABEL_4; + } + return 0; + } + *a1 = (char *)(v2 + 1); + v3 = *(char *)(v2 + 1); + if ( (unsigned __int8)(v3 - 48) > 9u ) + return 0; + v8 = 1; + ++v2; +LABEL_4: + v4 = (char *)(v2 + 1); + v5 = 0; + while ( 1 ) + { + *a1 = v4; + v6 = v3 + 10 * v5; + v3 = *v4; + v5 = v6 - 48; + if ( (unsigned __int8)(v3 - 48) > 9u ) + break; + ++v4; + if ( (int)((0x7FFFFFFF - (v3 - 48)) / 0xAu) < v5 ) + return -1; + } + if ( v8 ) + return 48 - v6; + return v5; +} + +//----- (004204E0) -------------------------------------------------------- +_DWORD *__usercall d_number_component@(int a1@) +{ + int v1; // edx + int v2; // ebx + int v3; // eax + _DWORD *v4; // ebx + + v1 = *(_DWORD *)(a1 + 20); + if ( v1 >= *(_DWORD *)(a1 + 24) ) + return 0; + v2 = *(_DWORD *)(a1 + 20); + v3 = a1 + 12; + v4 = (_DWORD *)(*(_DWORD *)(v3 + 4) + 16 * v2); + v4[1] = 0; + *(_DWORD *)(v3 + 8) = v1 + 1; + *v4 = 66; + v4[2] = d_number_isra_0((char **)v3); + return v4; +} + +//----- (00420520) -------------------------------------------------------- +int __usercall d_compact_number@(int a1@) +{ + _BYTE *v1; // edx + int result; // eax + + v1 = *(_BYTE **)(a1 + 12); + if ( *v1 == 95 ) + { + result = 0; +LABEL_5: + *(_DWORD *)(a1 + 12) = v1 + 1; + return result; + } + if ( *v1 != 110 ) + { + result = d_number_isra_0((char **)(a1 + 12)) + 1; + if ( result >= 0 ) + { + v1 = *(_BYTE **)(a1 + 12); + if ( *v1 == 95 ) + goto LABEL_5; + } + } + return -1; +} + +//----- (00420560) -------------------------------------------------------- +_DWORD *__usercall d_template_param@(_DWORD *a1@) +{ + _BYTE *v2; // eax + int v3; // edx + int v4; // ecx + _DWORD *result; // eax + + v2 = (_BYTE *)a1[3]; + if ( *v2 != 84 ) + return 0; + a1[3] = v2 + 1; + v3 = d_compact_number((int)a1); + if ( v3 < 0 ) + return 0; + v4 = a1[5]; + if ( v4 >= a1[6] ) + return 0; + result = (_DWORD *)(a1[4] + 16 * a1[5]); + result[1] = 0; + a1[5] = v4 + 1; + *result = 5; + result[2] = v3; + return result; +} + +//----- (004205C0) -------------------------------------------------------- +_DWORD *__usercall d_source_name@(int a1@) +{ + _DWORD *v1; // esi + int v3; // eax + _BYTE *v4; // edx + int v5; // esi + int v7; // ecx + int v8; // [esp+0h] [ebp-1Ch] + int v9; // [esp+4h] [ebp-18h] + + v1 = 0; + v3 = d_number_isra_0((char **)(a1 + 12)); + if ( v3 > 0 ) + { + v8 = *(_DWORD *)(a1 + 12); + if ( v3 > *(_DWORD *)(a1 + 4) - v8 ) + goto LABEL_14; + v4 = (_BYTE *)(v8 + v3); + *(_DWORD *)(a1 + 12) = v8 + v3; + if ( (*(_BYTE *)(a1 + 8) & 4) != 0 && *v4 == 36 ) + { + v7 = *(_DWORD *)(a1 + 20); + v5 = *(_DWORD *)(a1 + 24); + *(_DWORD *)(a1 + 12) = v4 + 1; + v9 = v7; + if ( v3 > 9 ) + { +LABEL_6: + if ( *(_DWORD *)v8 == 1330399071 + && *(_DWORD *)(v8 + 4) == 1598832962 + && (*(_BYTE *)(v8 + 8) == 95 || *(_BYTE *)(v8 + 8) == 46 || *(_BYTE *)(v8 + 8) == 36) + && *(_BYTE *)(v8 + 9) == 78 ) + { + *(_DWORD *)(a1 + 44) = *(_DWORD *)(a1 + 44) + 22 - v3; + if ( v5 > v9 ) + { + v1 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * v9); + *(_DWORD *)(a1 + 20) = v9 + 1; + v1[1] = 0; + *v1 = 0; + v1[2] = "(anonymous namespace)"; + v1[3] = 21; + goto LABEL_10; + } + goto LABEL_14; + } + if ( v5 > v9 ) + { + v1 = (_DWORD *)(16 * v9 + *(_DWORD *)(a1 + 16)); + v1[1] = 0; + *(_DWORD *)(a1 + 20) = v9 + 1; +LABEL_9: + v1[1] = 0; + *v1 = 0; + v1[2] = v8; + v1[3] = v3; +LABEL_10: + *(_DWORD *)(a1 + 40) = v1; + return v1; + } +LABEL_14: + v1 = 0; + goto LABEL_10; + } + } + else + { + v5 = *(_DWORD *)(a1 + 24); + v9 = *(_DWORD *)(a1 + 20); + if ( v3 > 9 ) + goto LABEL_6; + } + if ( v5 > v9 ) + { + v1 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * v9); + v1[1] = 0; + *(_DWORD *)(a1 + 20) = v9 + 1; + if ( v8 ) + goto LABEL_9; + } + goto LABEL_14; + } + return v1; +} + +//----- (00420750) -------------------------------------------------------- +_DWORD *__usercall d_abi_tags@(_DWORD *a1@, _DWORD *comp@) +{ + int v4; // esi + _BYTE *i; // eax + _DWORD *v6; // eax + + v4 = a1[10]; + for ( i = (_BYTE *)a1[3]; *i == 66; i = (_BYTE *)a1[3] ) + { + a1[3] = i + 1; + v6 = d_source_name((int)a1); + comp = d_make_comp(a1, 76, (int)comp, (int)v6); + } + a1[10] = v4; + return comp; +} + +//----- (004207A0) -------------------------------------------------------- +_DWORD *__usercall d_substitution@(_DWORD *a1@, char a2@
) +{ + _BYTE *v3; // eax + int v5; // edx + char v6; // cl + const char *v7; // eax + _DWORD *result; // eax + unsigned int v9; // eax + unsigned int i; // ecx + char *v11; // eax + unsigned int v12; // ecx + int v13; // ebp + int v14; // edx + int v15; // edi + int v16; // ecx + _DWORD *v17; // esi + int v18; // ecx + int v19; // esi + int v20; // edx + BOOL v21; // [esp+0h] [ebp-14h] + + v3 = (_BYTE *)a1[3]; + if ( *v3 != 83 ) + return 0; + a1[3] = v3 + 1; + LOBYTE(v5) = v3[1]; + if ( !(_BYTE)v5 ) + goto LABEL_3; + a1[3] = v3 + 2; + v5 = (char)v3[1]; + if ( (unsigned __int8)(v5 - 48) <= 9u ) + { + if ( (_BYTE)v5 != 95 ) + goto LABEL_15; +LABEL_24: + v12 = 0; +LABEL_25: + if ( a1[8] > v12 ) + return *(_DWORD **)(a1[7] + 4 * v12); + return 0; + } + if ( (_BYTE)v5 == 95 ) + goto LABEL_24; + if ( (unsigned __int8)(v5 - 65) <= 0x19u ) + { +LABEL_15: + v9 = 0; + if ( (unsigned __int8)(v5 - 48) > 9u ) + goto LABEL_21; +LABEL_16: + for ( i = v5 + 36 * v9 - 48; v9 <= i; i = v5 + 36 * v9 - 55 ) + { + v11 = (char *)a1[3]; + v5 = *v11; + if ( (_BYTE)v5 ) + { + a1[3] = v11 + 1; + v5 = *v11; + if ( (_BYTE)v5 == 95 ) + { + v12 = i + 1; + goto LABEL_25; + } + } + v9 = i; + if ( (unsigned __int8)(v5 - 48) <= 9u ) + goto LABEL_16; +LABEL_21: + if ( (unsigned __int8)(v5 - 65) > 0x19u ) + return 0; + } + return 0; + } +LABEL_3: + v21 = (a1[2] & 8) != 0; + if ( (a1[2] & 8) == 0 && (a2 & 1) != 0 && (unsigned __int8)(*(_BYTE *)a1[3] - 67) <= 1u ) + v21 = 1; + v6 = 116; + v7 = "t"; + while ( (_BYTE)v5 != v6 ) + { + v7 += 28; + if ( v7 == (const char *)&unk_4EF0C4 ) + return 0; + v6 = *v7; + } + v13 = *((_DWORD *)v7 + 5); + v14 = a1[5]; + v15 = a1[6]; + if ( v13 ) + { + v16 = *((_DWORD *)v7 + 6); + if ( v14 >= v15 ) + { + v17 = 0; + } + else + { + ++v14; + v17 = (_DWORD *)(a1[4] + 16 * a1[5]); + v17[1] = 0; + a1[5] = v14; + *v17 = 24; + v17[2] = v13; + v17[3] = v16; + } + a1[10] = v17; + } + if ( v21 ) + { + v18 = *((_DWORD *)v7 + 3); + v19 = *((_DWORD *)v7 + 4); + } + else + { + v18 = *((_DWORD *)v7 + 1); + v19 = *((_DWORD *)v7 + 2); + } + a1[11] += v19; + if ( v14 >= v15 ) + { + result = 0; + } + else + { + result = (_DWORD *)(a1[4] + 16 * v14); + result[1] = 0; + a1[5] = v14 + 1; + *result = 24; + result[2] = v18; + result[3] = v19; + } + if ( *(_BYTE *)a1[3] == 66 ) + { + result = d_abi_tags(a1, result); + if ( result ) + { + v20 = a1[8]; + if ( v20 < a1[9] ) + { + *(_DWORD *)(a1[7] + 4 * v20) = result; + a1[8] = v20 + 1; + return result; + } + } + return 0; + } + return result; +} + +//----- (00420990) -------------------------------------------------------- +int __usercall d_call_offset@(int a1@, int a2@) +{ + _BYTE *v3; // eax + _BYTE *v5; // eax + _BYTE *v6; // eax + + if ( !a2 ) + { + v3 = *(_BYTE **)(a1 + 12); + if ( !*v3 ) + return 0; + *(_DWORD *)(a1 + 12) = v3 + 1; + a2 = (char)*v3; + } + if ( a2 == 104 ) + { + d_number_isra_0((char **)(a1 + 12)); + } + else + { + if ( a2 != 118 ) + return 0; + d_number_isra_0((char **)(a1 + 12)); + v5 = *(_BYTE **)(a1 + 12); + if ( *v5 != 95 ) + return 0; + *(_DWORD *)(a1 + 12) = v5 + 1; + d_number_isra_0((char **)(a1 + 12)); + } + v6 = *(_BYTE **)(a1 + 12); + if ( *v6 != 95 ) + return 0; + *(_DWORD *)(a1 + 12) = v6 + 1; + return 1; +} + +//----- (00420A00) -------------------------------------------------------- +BOOL __usercall next_is_type_qual_isra_0@(char *a1@) +{ + char v1; // dl + + v1 = *a1; + if ( v1 == 86 || v1 == 114 || v1 == 75 ) + return 1; + if ( v1 == 68 ) + return (a1[1] & 0xDF) == 79 || (unsigned __int8)(a1[1] - 119) <= 1u; + return 0; +} + +//----- (00420A60) -------------------------------------------------------- +int __usercall d_discriminator@(int a1@) +{ + _BYTE *v2; // eax + int v3; // edx + int result; // eax + int v5; // eax + _BYTE *v6; // edx + + v2 = *(_BYTE **)(a1 + 12); + if ( *v2 != 95 ) + return 1; + *(_DWORD *)(a1 + 12) = v2 + 1; + if ( v2[1] != 95 ) + { + v3 = d_number_isra_0((char **)(a1 + 12)); + result = 0; + if ( v3 < 0 ) + return result; + return 1; + } + *(_DWORD *)(a1 + 12) = v2 + 2; + v5 = d_number_isra_0((char **)(a1 + 12)); + if ( v5 < 0 ) + return 0; + if ( v5 <= 9 ) + return 1; + v6 = *(_BYTE **)(a1 + 12); + result = 0; + if ( *v6 == 95 ) + { + *(_DWORD *)(a1 + 12) = v6 + 1; + return 1; + } + return result; +} + +//----- (00420AC0) -------------------------------------------------------- +_BYTE *__cdecl d_growable_string_callback_adapter(void *Src, size_t Size, unsigned int *a3) +{ + size_t v3; // esi + unsigned int v4; // edx + _BYTE *result; // eax + + v3 = a3[2]; + v4 = a3[3]; + result = (_BYTE *)(Size + a3[1] + 1); + if ( (unsigned int)result > v3 ) + { + if ( v4 ) + return result; + if ( v3 || (v3 = 2, (unsigned int)result > 2) ) + { + do + v3 *= 2; + while ( (unsigned int)result > v3 ); + } + result = __mingw_realloc(*a3, v3); + if ( !result ) + { + result = (_BYTE *)__mingw_free(*a3); + *a3 = 0; + a3[1] = 0; + a3[2] = 0; + a3[3] = 1; + return result; + } + *a3 = (unsigned int)result; + v4 = a3[3]; + a3[2] = v3; + } + if ( !v4 ) + { + memcpy((void *)(*a3 + a3[1]), Src, Size); + result = (_BYTE *)(a3[1] + Size + *a3); + *result = 0; + a3[1] += Size; + } + return result; +} + +//----- (00420B80) -------------------------------------------------------- +_DWORD *__usercall d_index_template_argument_part_0@(_DWORD *result@, int a2@) +{ + if ( result ) + { + while ( *result == 47 ) + { + if ( a2 <= 0 ) + { + if ( a2 ) + return 0; + return (_DWORD *)result[2]; + } + result = (_DWORD *)result[3]; + --a2; + if ( !result ) + return result; + } + } + return 0; +} + +//----- (00420BD0) -------------------------------------------------------- +_DWORD *__usercall d_lookup_template_argument_isra_0@(int a1@, int *a2@) +{ + _DWORD *result; // eax + int v4; // edx + + result = *(_DWORD **)(a1 + 272); + if ( result ) + { + v4 = *a2; + result = *(_DWORD **)(result[1] + 12); + if ( v4 >= 0 ) + return d_index_template_argument_part_0(result, v4); + } + else + { + *(_DWORD *)(a1 + 280) = 1; + } + return result; +} + +//----- (00420C10) -------------------------------------------------------- +_DWORD *__usercall d_find_pack@(int a1@, _DWORD *a2@, int a3@) +{ + _DWORD *v4; // ebx + _DWORD *result; // eax + + if ( !a2 ) + return 0; + v4 = a2; + while ( 2 ) + { + switch ( *v4 ) + { + case 0: + case 6: + case 0x18: + case 0x27: + case 0x2C: + case 0x32: + case 0x41: + case 0x42: + case 0x46: + case 0x47: + case 0x48: + case 0x4B: + case 0x4C: + goto LABEL_6; + case 5: + result = d_lookup_template_argument_isra_0(a1, v4 + 2); + if ( !result || *result != 47 ) + goto LABEL_6; + return result; + case 7: + case 8: + case 0x33: + goto LABEL_9; + default: + result = (_DWORD *)d_find_pack(a3, v4[2]); + if ( result ) + return result; +LABEL_9: + v4 = (_DWORD *)v4[3]; + if ( v4 ) + continue; +LABEL_6: + result = 0; + break; + } + return result; + } +} +// 420C55: variable 'a3' is possibly undefined + +//----- (00420C80) -------------------------------------------------------- +_DWORD *__usercall d_exprlist@(_DWORD *a1@, char a2@
) +{ + char *v3; // eax + int v4; // edi + char v5; // dl + _DWORD *v6; // eax + _DWORD *v7; // esi + int v8; // eax + int v9; // eax + _BYTE *v11; // eax + char v12; // dl + int v13; // eax + _BYTE *v14; // eax + int *v15; // esi + int v16; // eax + int v17; // eax + int v18; // ecx + int v19; // edx + _DWORD *v20; // eax + char **v21; // eax + char *v22; // edx + int v23; // ecx + int v24; // eax + unsigned __int8 v25; // al + int v26; // eax + int *v27; // ecx + char *v28; // eax + char v29; // dl + int v30; // eax + _DWORD *v31; // eax + int *v32; // eax + int *v33; // esi + _DWORD *v34; // ecx + _BYTE *v35; // eax + _DWORD *v36; // eax + char v37; // al + _BYTE *v38; // eax + _BYTE *v39; // eax + _DWORD *v40; // eax + _DWORD *v41; // eax + _DWORD *v42; // eax + _DWORD *v43; // eax + char *v44; // eax + _DWORD *v45; // eax + unsigned __int8 *v46; // edx + int v47; // ecx + _DWORD *v48; // ecx + _BYTE *v49; // eax + _DWORD *v50; // eax + char v51; // al + int *v52; // eax + _DWORD *v53; // eax + int v54; // [esp+0h] [ebp-2Ch] + _DWORD *comp; // [esp+0h] [ebp-2Ch] + int v56; // [esp+4h] [ebp-28h] + int v57; // [esp+8h] [ebp-24h] + int v58; // [esp+Ch] [ebp-20h] + int v59; // [esp+10h] [ebp-1Ch] + int v60; // [esp+14h] [ebp-18h] + int v61; // [esp+18h] [ebp-14h] + int v62; // [esp+1Ch] [ebp-10h] + int v63; // [esp+20h] [ebp-Ch] + int v64; // [esp+24h] [ebp-8h] + int v65; // [esp+28h] [ebp-4h] + _DWORD *v66; // [esp+2Ch] [ebp+0h] + + v3 = (char *)a1[3]; + HIBYTE(v60) = a2; + if ( *v3 != a2 ) + { + while ( 1 ) + { + v4 = a1[12]; + a1[12] = 1; + v5 = *v3; + if ( *v3 == 76 ) + { + v7 = d_expr_primary(a1); + goto LABEL_27; + } + switch ( v5 ) + { + case 'T': + v7 = d_template_param(a1); + goto LABEL_27; + case 's': + v12 = v3[1]; + if ( v12 == 114 ) + { + a1[3] = v3 + 2; + v33 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65); + v34 = d_unqualified_name(a1); + v35 = (_BYTE *)a1[3]; + if ( *v35 == 73 ) + { + v61 = (int)v34; + a1[3] = v35 + 1; + v43 = d_template_args_1(a1); + comp = d_make_comp(a1, 4, v61, (int)v43); + v36 = d_make_comp(a1, 1, (int)v33, (int)comp); + } + else + { + v36 = d_make_comp(a1, 1, (int)v33, (int)v34); + } + v7 = v36; + goto LABEL_27; + } + if ( v12 == 112 ) + { + a1[3] = v3 + 2; + v13 = d_expression_1(); + v7 = d_make_comp(a1, 75, v13, 0); + goto LABEL_27; + } + break; + case 'f': + if ( v3[1] == 112 ) + { + a1[3] = v3 + 2; + if ( v3[2] == 84 ) + { + v18 = 0; + a1[3] = v3 + 3; + } + else + { + v17 = d_compact_number((int)a1); + if ( (v17 & 0x7FFFFFFF) == 0x7FFFFFFF ) + goto LABEL_15; + v18 = v17 + 1; + } + v19 = a1[5]; + if ( v19 >= a1[6] ) + { +LABEL_15: + a1[12] = v4; + return 0; + } + v20 = (_DWORD *)(a1[4] + 16 * a1[5]); + v20[1] = 0; + v7 = v20; + a1[5] = v19 + 1; + *v20 = 6; + v20[2] = v18; +LABEL_19: + a1[12] = v4; + goto LABEL_20; + } + break; + default: + if ( (unsigned __int8)(v5 - 48) <= 9u ) + { + v7 = d_unqualified_name(a1); + if ( !v7 ) + goto LABEL_32; +LABEL_18: + v11 = (_BYTE *)a1[3]; + if ( *v11 != 73 ) + goto LABEL_19; + a1[3] = v11 + 1; + v31 = d_template_args_1(a1); + v7 = d_make_comp(a1, 4, (int)v7, (int)v31); + goto LABEL_27; + } + if ( v5 == 111 ) + { + if ( v3[1] == 110 ) + { + a1[3] = v3 + 2; + v7 = d_unqualified_name(a1); + if ( !v7 ) + { +LABEL_32: + a1[12] = v4; + return v7; + } + goto LABEL_18; + } + } + else if ( (v5 == 105 || v5 == 116) && v3[1] == 108 ) + { + v14 = v3 + 2; + v15 = 0; + a1[3] = v14; + if ( v5 == 116 ) + { + v15 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65); + if ( !*(_BYTE *)(a1[3] + 1) ) + goto LABEL_15; + } + else if ( !v14[1] ) + { + goto LABEL_15; + } + v16 = d_exprlist(); + v7 = d_make_comp(a1, 49, (int)v15, v16); + goto LABEL_27; + } + break; + } + v6 = d_operator_name(a1); + v7 = v6; + if ( !v6 ) + goto LABEL_32; + v8 = *v6; + if ( v8 != 50 ) + { + if ( v8 == 52 ) + { + v38 = (_BYTE *)a1[3]; + if ( *v38 != 95 ) + goto LABEL_80; + a1[3] = v38 + 1; + v32 = (int *)d_exprlist(); + } + else + { + if ( v8 != 51 ) + goto LABEL_15; + v9 = v7[2]; + if ( v9 > 1 ) + goto LABEL_15; + if ( !v9 ) + goto LABEL_13; + if ( v9 != 1 ) + goto LABEL_15; +LABEL_80: + v32 = (int *)d_expression_1(); + } +LABEL_78: + v7 = d_make_comp(a1, 55, (int)v7, (int)v32); + goto LABEL_27; + } + v21 = (char **)v7[2]; + v22 = *v21; + a1[11] += v21[2] - 2; + v23 = (unsigned __int8)*v22; + if ( v23 == 115 && v22[1] == 116 && !v22[2] ) + { + v32 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65); + goto LABEL_78; + } + v24 = (int)v21[3]; + v61 = v24; + if ( v24 == 1 ) + { + v37 = *v22; + if ( (*v22 == 112 || v37 == 109) && v37 == v22[1] ) + { + v39 = (_BYTE *)a1[3]; + if ( *v39 == 95 ) + { + v61 = 0; + a1[3] = v39 + 1; + v23 = (unsigned __int8)*v22; + } + } + else + { + v61 = 0; + } + if ( v23 == 115 && v22[1] == 80 && !v22[2] ) + v32 = d_template_args_1(a1); + else + v32 = (int *)d_expression_1(); + if ( v61 ) + v32 = d_make_comp(a1, 57, (int)v32, (int)v32); + goto LABEL_78; + } + if ( v24 <= 1 ) + { + if ( v24 ) + goto LABEL_15; +LABEL_13: + v7 = d_make_comp(a1, 54, (int)v7, 0); + goto LABEL_27; + } + if ( v24 != 2 ) + { + if ( v24 != 3 ) + goto LABEL_15; + if ( v23 == 113 && v22[1] == 117 && !v22[2] ) + { + v40 = (_DWORD *)d_expression_1(); +LABEL_91: + v61 = (int)v40; + v62 = d_expression_1(); + v30 = d_expression_1(); + v27 = (int *)v62; + if ( !v30 ) + goto LABEL_15; + } + else + { + if ( *v22 == 102 ) + { + v40 = d_operator_name(a1); + goto LABEL_91; + } + if ( *v22 != 110 ) + goto LABEL_15; + v25 = v22[1]; + if ( v25 != 119 && v25 != 97 ) + goto LABEL_15; + v26 = d_exprlist(); + v27 = d_type((int)a1, v54, v56, v57, v58, v59, v60, v26, v62, v63, v64, v65); + v28 = (char *)a1[3]; + v29 = *v28; + if ( *v28 == 69 ) + { + a1[3] = v28 + 1; + v30 = 0; + } + else if ( v29 == 112 ) + { + if ( v28[1] != 105 ) + goto LABEL_15; + v62 = (int)v27; + a1[3] = v28 + 2; + v30 = d_exprlist(); + v27 = (int *)v62; + } + else + { + if ( v29 != 105 || v28[1] != 108 ) + goto LABEL_15; + v62 = (int)v27; + v30 = d_expression_1(); + v27 = (int *)v62; + } + } + v41 = d_make_comp(a1, 60, (int)v27, v30); + v42 = d_make_comp(a1, 59, v61, (int)v41); + v7 = d_make_comp(a1, 58, (int)v7, (int)v42); + goto LABEL_27; + } + v44 = *(char **)v7[2]; + if ( v44[1] == 99 && ((v51 = *v44, (unsigned __int8)(v51 - 114) <= 1u) || (unsigned __int8)(v51 - 99) <= 1u) ) + { + v52 = d_type((int)a1, v54, v56, v57, v58, v59, v60, 2, (int)v22, v63, v64, v65); + v46 = (unsigned __int8 *)v62; + v61 = (int)v52; + } + else + { + v62 = (int)v22; + if ( *v22 == 102 ) + v45 = d_operator_name(a1); + else + v45 = (_DWORD *)d_expression_1(); + v46 = (unsigned __int8 *)v62; + v61 = (int)v45; + } + v47 = *v46; + if ( v47 == 99 && v46[1] == 108 && !v46[2] ) + { + v48 = (_DWORD *)d_exprlist(); + } + else if ( v47 == 100 && v46[1] == 116 && !v46[2] || v47 == 112 && v46[1] == 116 && !v46[2] ) + { + v48 = d_unqualified_name(a1); + v49 = (_BYTE *)a1[3]; + if ( *v49 == 73 ) + { + v62 = (int)v48; + a1[3] = v49 + 1; + v53 = d_template_args_1(a1); + v48 = d_make_comp(a1, 4, v62, (int)v53); + } + } + else + { + v48 = (_DWORD *)d_expression_1(); + } + v50 = d_make_comp(a1, 57, v61, (int)v48); + v7 = d_make_comp(a1, 56, (int)v7, (int)v50); +LABEL_27: + a1[12] = v4; + if ( !v7 ) + return 0; +LABEL_20: + v66 = d_make_comp(a1, 46, (int)v7, 0); + if ( !v66 ) + return 0; + v3 = (char *)a1[3]; + if ( *v3 == HIBYTE(v60) ) + { + a1[3] = v3 + 1; + return v66; + } + } + } + a1[3] = v3 + 1; + return d_make_comp(a1, 46, 0, 0); +} +// 420DA5: variable 'v60' is possibly undefined +// 420FA4: variable 'v54' is possibly undefined +// 420FA4: variable 'v56' is possibly undefined +// 420FA4: variable 'v57' is possibly undefined +// 420FA4: variable 'v58' is possibly undefined +// 420FA4: variable 'v59' is possibly undefined +// 420FA4: variable 'v62' is possibly undefined +// 420FA4: variable 'v63' is possibly undefined +// 420FA4: variable 'v64' is possibly undefined +// 420FA4: variable 'v65' is possibly undefined +// 42102E: variable 'v61' is possibly undefined +// 4213F0: using guessed type int d_expression_1(void); + +//----- (004213F0) -------------------------------------------------------- +_DWORD *__usercall d_expression_1@(_DWORD *a1@) +{ + char *v2; // edx + char v3; // al + _DWORD *v4; // esi + _BYTE *v5; // eax + int *v7; // eax + int v8; // esi + int v9; // eax + int v10; // eax + char v11; // al + int v12; // eax + int v13; // eax + int v14; // edx + int v15; // ecx + _DWORD *v16; // eax + _BYTE *v17; // edx + int v18; // esi + int *v19; // eax + char **v20; // edx + char *v21; // edi + int v22; // eax + int v23; // ebp + _DWORD *v24; // eax + _DWORD *v25; // edi + int *v26; // ebp + _DWORD *v27; // eax + _DWORD *v28; // eax + _DWORD *v29; // eax + _DWORD *v30; // eax + int *v31; // esi + _DWORD *v32; // edi + _BYTE *v33; // eax + _DWORD *v35; // eax + _DWORD *v36; // eax + _DWORD *v37; // eax + char v38; // dl + _BYTE *v39; // edx + char *v40; // eax + int *v41; // ebp + int v42; // eax + _DWORD *v43; // edi + _DWORD *v44; // eax + unsigned __int8 v45; // al + char *v46; // eax + char v47; // dl + _BYTE *v48; // eax + _DWORD *v49; // eax + _BYTE *v50; // eax + char v51; // al + int v52; // [esp+0h] [ebp-2Ch] + _DWORD *comp; // [esp+0h] [ebp-2Ch] + int v54; // [esp+4h] [ebp-28h] + int v55; // [esp+8h] [ebp-24h] + int v56; // [esp+Ch] [ebp-20h] + int v57; // [esp+10h] [ebp-1Ch] + int v58; // [esp+14h] [ebp-18h] + int v59; // [esp+18h] [ebp-14h] + int v60; // [esp+1Ch] [ebp-10h] + int v61; // [esp+20h] [ebp-Ch] + int v62; // [esp+24h] [ebp-8h] + int v63; // [esp+28h] [ebp-4h] + + v2 = (char *)a1[3]; + v3 = *v2; + if ( *v2 == 76 ) + return d_expr_primary(a1); + if ( v3 != 84 ) + { + if ( v3 == 115 ) + { + v11 = v2[1]; + if ( v11 == 114 ) + { + a1[3] = v2 + 2; + v31 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + v32 = d_unqualified_name(a1); + v33 = (_BYTE *)a1[3]; + if ( *v33 != 73 ) + return d_make_comp(a1, 1, (int)v31, (int)v32); + a1[3] = v33 + 1; + v37 = d_template_args_1(a1); + comp = d_make_comp(a1, 4, (int)v32, (int)v37); + return d_make_comp(a1, 1, (int)v31, (int)comp); + } + if ( v11 == 112 ) + { + a1[3] = v2 + 2; + v12 = d_expression_1(); + return d_make_comp(a1, 75, v12, 0); + } + } + else if ( v3 == 102 ) + { + if ( v2[1] == 112 ) + { + a1[3] = v2 + 2; + if ( v2[2] == 84 ) + { + a1[3] = v2 + 3; + v14 = 0; + } + else + { + v13 = d_compact_number((int)a1); + v14 = v13 + 1; + if ( (v13 & 0x7FFFFFFF) == 0x7FFFFFFF ) + return 0; + } + v15 = a1[5]; + if ( v15 < a1[6] ) + { + v16 = (_DWORD *)(a1[4] + 16 * a1[5]); + v16[1] = 0; + v4 = v16; + a1[5] = v15 + 1; + *v16 = 6; + v16[2] = v14; + return v4; + } + return 0; + } + } + else + { + if ( (unsigned __int8)(v3 - 48) <= 9u ) + goto LABEL_6; + if ( v3 == 111 ) + { + if ( v2[1] == 110 ) + { + a1[3] = v2 + 2; +LABEL_6: + v4 = d_unqualified_name(a1); + if ( v4 ) + { + v5 = (_BYTE *)a1[3]; + if ( *v5 == 73 ) + { + a1[3] = v5 + 1; + v30 = d_template_args_1(a1); + return d_make_comp(a1, 4, (int)v4, (int)v30); + } + return v4; + } + return 0; + } + } + else if ( (v3 == 105 || v3 == 116) && v2[1] == 108 ) + { + v17 = v2 + 2; + v18 = 0; + a1[3] = v17; + if ( v3 == 116 ) + { + v19 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + v17 = (_BYTE *)a1[3]; + v18 = (int)v19; + } + if ( v17[1] ) + { + v35 = d_exprlist(a1, 69); + return d_make_comp(a1, 49, v18, (int)v35); + } + return 0; + } + } + v7 = d_operator_name(a1); + v8 = (int)v7; + if ( !v7 ) + return 0; + v9 = *v7; + if ( v9 != 50 ) + { + if ( v9 == 52 ) + { + v50 = (_BYTE *)a1[3]; + if ( *v50 == 95 ) + { + a1[3] = v50 + 1; + v36 = d_exprlist(a1, 69); + return d_make_comp(a1, 55, v8, (int)v36); + } + goto LABEL_58; + } + if ( v9 == 51 ) + { + v10 = *(_DWORD *)(v8 + 8); + if ( v10 <= 1 ) + { + if ( !v10 ) + return d_make_comp(a1, 54, v8, 0); + if ( v10 == 1 ) + { +LABEL_58: + v36 = (_DWORD *)d_expression_1(); + return d_make_comp(a1, 55, v8, (int)v36); + } + } + } + return 0; + } + v20 = *(char ***)(v8 + 8); + v21 = *v20; + a1[11] += v20[2] - 2; + v22 = (unsigned __int8)*v21; + if ( v22 == 115 && v21[1] == 116 && !v21[2] ) + { + v36 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + return d_make_comp(a1, 55, v8, (int)v36); + } + v23 = (int)v20[3]; + if ( v23 == 1 ) + { + v38 = *v21; + if ( (*v21 == 112 || v38 == 109) && v38 == v21[1] ) + { + v39 = (_BYTE *)a1[3]; + if ( *v39 == 95 ) + { + v23 = 0; + a1[3] = v39 + 1; + v22 = (unsigned __int8)*v21; + } + } + else + { + v23 = 0; + } + if ( v22 == 115 && v21[1] == 80 && !v21[2] ) + v36 = d_template_args_1(a1); + else + v36 = (_DWORD *)d_expression_1(); + if ( v23 ) + v36 = d_make_comp(a1, 57, (int)v36, (int)v36); + return d_make_comp(a1, 55, v8, (int)v36); + } + if ( v23 <= 1 ) + { + if ( !v23 ) + return d_make_comp(a1, 54, v8, 0); + return 0; + } + if ( v23 == 2 ) + { + v40 = **(char ***)(v8 + 8); + if ( v40[1] == 99 && ((v51 = *v40, (unsigned __int8)(v51 - 114) <= 1u) || (unsigned __int8)(v51 - 99) <= 1u) ) + { + v41 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + } + else if ( *v21 == 102 ) + { + v41 = d_operator_name(a1); + } + else + { + v41 = (int *)d_expression_1(); + } + v42 = (unsigned __int8)*v21; + if ( v42 == 99 && v21[1] == 108 && !v21[2] ) + { + v43 = d_exprlist(a1, 69); + } + else if ( v42 == 100 && v21[1] == 116 && !v21[2] || v42 == 112 && v21[1] == 116 && !v21[2] ) + { + v43 = d_unqualified_name(a1); + v48 = (_BYTE *)a1[3]; + if ( *v48 == 73 ) + { + a1[3] = v48 + 1; + v49 = d_template_args_1(a1); + v43 = d_make_comp(a1, 4, (int)v43, (int)v49); + } + } + else + { + v43 = (_DWORD *)d_expression_1(); + } + v44 = d_make_comp(a1, 57, (int)v41, (int)v43); + return d_make_comp(a1, 56, v8, (int)v44); + } + if ( v23 != 3 ) + return 0; + if ( v22 == 113 && v21[1] == 117 && !v21[2] ) + { + v24 = (_DWORD *)d_expression_1(); + } + else + { + if ( *v21 != 102 ) + { + if ( *v21 != 110 ) + return 0; + v45 = v21[1]; + if ( v45 != 119 && v45 != 97 ) + return 0; + v25 = d_exprlist(a1, 95); + v26 = d_type((int)a1, v52, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63); + v46 = (char *)a1[3]; + v47 = *v46; + if ( *v46 == 69 ) + { + a1[3] = v46 + 1; + v27 = 0; + } + else if ( v47 == 112 ) + { + if ( v46[1] != 105 ) + return 0; + a1[3] = v46 + 2; + v27 = d_exprlist(a1, 69); + } + else + { + if ( v47 != 105 || v46[1] != 108 ) + return 0; + v27 = (_DWORD *)d_expression_1(); + } + goto LABEL_47; + } + v24 = d_operator_name(a1); + } + v25 = v24; + v26 = (int *)d_expression_1(); + v27 = (_DWORD *)d_expression_1(); + if ( !v27 ) + return 0; +LABEL_47: + v28 = d_make_comp(a1, 60, (int)v26, (int)v27); + v29 = d_make_comp(a1, 59, (int)v25, (int)v28); + return d_make_comp(a1, 58, v8, (int)v29); + } + return d_template_param(a1); +} +// 421583: variable 'v52' is possibly undefined +// 421583: variable 'v54' is possibly undefined +// 421583: variable 'v55' is possibly undefined +// 421583: variable 'v56' is possibly undefined +// 421583: variable 'v57' is possibly undefined +// 421583: variable 'v58' is possibly undefined +// 421583: variable 'v59' is possibly undefined +// 421583: variable 'v60' is possibly undefined +// 421583: variable 'v61' is possibly undefined +// 421583: variable 'v62' is possibly undefined +// 421583: variable 'v63' is possibly undefined + +//----- (00421A60) -------------------------------------------------------- +int *__usercall d_template_arg@( + _DWORD *a1@, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + int a10, + int a11, + int a12) +{ + char *v13; // edx + char v14; // al + int *result; // eax + int v16; // esi + _BYTE *v17; // edx + + v13 = (char *)a1[3]; + v14 = *v13; + if ( *v13 == 76 ) + return d_expr_primary(a1); + if ( v14 <= 76 ) + { + if ( (unsigned __int8)(v14 - 73) <= 1u ) + return d_template_args(a1); + return d_type((int)a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); + } + if ( v14 != 88 ) + return d_type((int)a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); + v16 = a1[12]; + a1[12] = 1; + a1[3] = v13 + 1; + result = d_expression_1(a1); + v17 = (_BYTE *)a1[3]; + a1[12] = v16; + if ( *v17 != 69 ) + return 0; + a1[3] = v17 + 1; + return result; +} + +//----- (00421AF0) -------------------------------------------------------- +_DWORD *__usercall d_template_args_1@(_DWORD *a1@) +{ + int v2; // edi + _BYTE *v3; // eax + int *v4; // esi + _DWORD *comp; // eax + _BYTE *v6; // eax + int v7; // ecx + int v9; // [esp+1Ch] [ebp-10h] BYREF + + v2 = a1[10]; + v3 = (_BYTE *)a1[3]; + if ( *v3 == 69 ) + { + a1[3] = v3 + 1; + return d_make_comp(a1, 47, 0, 0); + } + else + { + v9 = 0; + v4 = &v9; + do + { + v7 = d_template_arg(); + if ( !v7 ) + return 0; + comp = d_make_comp(a1, 47, v7, 0); + *v4 = (int)comp; + if ( !comp ) + return 0; + v4 = comp + 3; + v6 = (_BYTE *)a1[3]; + } + while ( *v6 != 69 ); + a1[10] = v2; + a1[3] = v6 + 1; + return (_DWORD *)v9; + } +} +// 421A60: using guessed type int d_template_arg(void); + +//----- (00421BA0) -------------------------------------------------------- +_DWORD *__usercall d_template_args@(_DWORD *a1@) +{ + _BYTE *v1; // ecx + + v1 = (_BYTE *)a1[3]; + if ( (unsigned __int8)(*v1 - 73) > 1u ) + return 0; + a1[3] = v1 + 1; + return d_template_args_1(a1); +} + +//----- (00421BD0) -------------------------------------------------------- +unsigned int *__usercall d_encoding@(int a1@, int a2@, int a3@) +{ + _BYTE *v5; // eax + unsigned int *comp; // esi + unsigned int v7; // eax + unsigned int *v8; // edx + unsigned int v9; // eax + bool v10; // cc + int v11; // ecx + char v12; // dl + int *v13; // esi + _DWORD *v14; // eax + char v15; // al + unsigned int *v16; // edx + unsigned int v17; // eax + int v18; // edx + _DWORD *v19; // eax + int v21; // eax + _BYTE *v22; // edx + _BYTE *v23; // esi + int v24; // edi + _DWORD *v25; // eax + char v26; // dl + int v27; // ebp + int v28; // edx + _DWORD *v29; // ecx + int *v30; // eax + int *v31; // eax + int *v32; // eax + int *v33; // eax + int *v34; // esi + _BYTE *v35; // eax + int *v36; // eax + int v37; // ecx + int v38; // eax + int v39; // ecx + int v40; // eax + int v41; // ecx + int v42; // eax + int *v43; // eax + int *v44; // eax + int *v45; // eax + int *v46; // eax + int *v47; // eax + unsigned int *v48; // edx + unsigned int v49; // eax + int v50; // edx + char v51; // cl + int v52; // ebp + int v53; // esi + int v54; // eax + int v55; // eax + int *v56; // eax + int v57; // eax + int v58; // [esp+0h] [ebp-2Ch] + int v59; // [esp+0h] [ebp-2Ch] + int v60; // [esp+4h] [ebp-28h] + int v61; // [esp+4h] [ebp-28h] + int v62; // [esp+8h] [ebp-24h] + int v63; // [esp+8h] [ebp-24h] + int v64; // [esp+Ch] [ebp-20h] + int v65; // [esp+Ch] [ebp-20h] + int v66; // [esp+10h] [ebp-1Ch] + int v67; // [esp+10h] [ebp-1Ch] + int v68; // [esp+14h] [ebp-18h] + int v69; // [esp+14h] [ebp-18h] + int v70; // [esp+18h] [ebp-14h] + int v71; // [esp+18h] [ebp-14h] + int v72; // [esp+1Ch] [ebp-10h] + int v73; // [esp+1Ch] [ebp-10h] + int v74; // [esp+20h] [ebp-Ch] + int v75; // [esp+20h] [ebp-Ch] + int v76; // [esp+24h] [ebp-8h] + int v77; // [esp+24h] [ebp-8h] + int v78; // [esp+28h] [ebp-4h] + int v79; // [esp+28h] [ebp-4h] + + v5 = *(_BYTE **)(a1 + 12); + if ( *v5 == 71 || *v5 == 84 ) + { + v11 = *(_DWORD *)(a1 + 44); + *(_DWORD *)(a1 + 44) = v11 + 20; + if ( *v5 == 84 ) + { + *(_DWORD *)(a1 + 12) = v5 + 1; + if ( v5[1] ) + { + *(_DWORD *)(a1 + 12) = v5 + 2; + switch ( v5[1] ) + { + case 'A': + v30 = d_template_arg((_DWORD *)a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 48, (int)v30, 0); + break; + case 'C': + v34 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + if ( d_number_isra_0((char **)(a1 + 12)) < 0 ) + return 0; + v35 = *(_BYTE **)(a1 + 12); + if ( *v35 != 95 ) + return 0; + *(_DWORD *)(a1 + 12) = v35 + 1; + v36 = d_type(a1, v59, v61, v63, v65, v67, v69, v71, v73, v75, v77, v79); + *(_DWORD *)(a1 + 44) += 5; + comp = d_make_comp((_DWORD *)a1, 11, (int)v36, (int)v34); + break; + case 'F': + v33 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 14, (int)v33, 0); + break; + case 'H': + v32 = d_name((_DWORD *)a1, v11); + comp = d_make_comp((_DWORD *)a1, 20, (int)v32, 0); + break; + case 'I': + v31 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 12, (int)v31, 0); + break; + case 'J': + v47 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 18, (int)v47, 0); + break; + case 'S': + v46 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 13, (int)v46, 0); + break; + case 'T': + *(_DWORD *)(a1 + 44) = v11 + 10; + v45 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 10, (int)v45, 0); + break; + case 'V': + *(_DWORD *)(a1 + 44) = v11 + 15; + v44 = d_type(a1, v58, v60, v62, v64, v66, v68, v70, v72, v74, v76, v78); + comp = d_make_comp((_DWORD *)a1, 9, (int)v44, 0); + break; + case 'W': + v43 = d_name((_DWORD *)a1, v11); + comp = d_make_comp((_DWORD *)a1, 21, (int)v43, 0); + break; + case 'c': + if ( !d_call_offset(a1, 0) || !d_call_offset(a1, 0) ) + return 0; + v42 = d_encoding(v41, 0); + comp = d_make_comp((_DWORD *)a1, 17, v42, 0); + break; + case 'h': + if ( !d_call_offset(a1, 104) ) + return 0; + v40 = d_encoding(v39, 0); + comp = d_make_comp((_DWORD *)a1, 15, v40, 0); + break; + case 'v': + if ( !d_call_offset(a1, 118) ) + return 0; + v38 = d_encoding(v37, 0); + comp = d_make_comp((_DWORD *)a1, 16, v38, 0); + break; + default: + return 0; + } + return comp; + } + } + else + { + if ( *v5 != 71 ) + return 0; + *(_DWORD *)(a1 + 12) = v5 + 1; + if ( !v5[1] ) + return 0; + *(_DWORD *)(a1 + 12) = v5 + 2; + v12 = v5[1]; + if ( v12 == 84 ) + { + if ( v5[2] && (*(_DWORD *)(a1 + 12) = v5 + 3, v5[2] == 110) ) + { + v57 = d_encoding(v11, 0); + return d_make_comp((_DWORD *)a1, 74, v57, 0); + } + else + { + v54 = d_encoding(v11, 0); + return d_make_comp((_DWORD *)a1, 73, v54, 0); + } + } + if ( v12 > 84 ) + { + if ( v12 == 86 ) + { + v56 = d_name((_DWORD *)a1, v11); + return d_make_comp((_DWORD *)a1, 19, (int)v56, 0); + } + if ( v12 != 114 ) + return 0; + v21 = d_number_isra_0((char **)(a1 + 12)); + if ( v21 <= 1 ) + return 0; + v22 = *(_BYTE **)(a1 + 12); + if ( !*v22 ) + return 0; + v23 = v22 + 1; + *(_DWORD *)(a1 + 12) = v22 + 1; + if ( *v22 != 95 ) + return 0; + v24 = v21 - 1; + v25 = 0; + while ( 1 ) + { + if ( !*v23 ) + return 0; + if ( *v23 == 36 ) + { + v26 = v23[1]; + switch ( v26 ) + { + case 'S': + v27 = 47; + break; + case '_': + v27 = 46; + break; + case '$': + v27 = 36; + break; + default: + return 0; + } + v28 = *(_DWORD *)(a1 + 20); + v23 = (_BYTE *)(*(_DWORD *)(a1 + 12) + 2); + if ( v28 >= *(_DWORD *)(a1 + 24) ) + { + *(_DWORD *)(a1 + 12) = v23; + return 0; + } + v24 -= 2; + v29 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + v29[1] = 0; + *(_DWORD *)(a1 + 20) = v28 + 1; + *v29 = 65; + v29[2] = v27; + *(_DWORD *)(a1 + 12) = v23; + } + else + { + v50 = 0; + do + { + if ( ++v50 >= v24 ) + break; + v51 = v23[v50]; + if ( !v51 ) + break; + } + while ( v51 != 36 ); + v52 = *(_DWORD *)(a1 + 20); + if ( v52 >= *(_DWORD *)(a1 + 24) ) + { + *(_DWORD *)(a1 + 12) += v50; + return 0; + } + v24 -= v50; + v29 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + v29[1] = 0; + *(_DWORD *)(a1 + 20) = v52 + 1; + v29[2] = v23; + v53 = *(_DWORD *)(a1 + 12); + v29[1] = 0; + v23 = (_BYTE *)(v50 + v53); + *v29 = 0; + v29[3] = v50; + *(_DWORD *)(a1 + 12) = v23; + } + if ( v25 ) + { + v25 = d_make_comp((_DWORD *)a1, 64, (int)v25, (int)v29); + if ( !v25 ) + return 0; + } + else + { + v25 = v29; + } + if ( v24 <= 0 ) + return d_make_comp((_DWORD *)a1, 63, (int)v25, 0); + } + } + if ( v12 == 65 ) + { + v55 = d_encoding(v11, 0); + return d_make_comp((_DWORD *)a1, 23, v55, 0); + } + if ( v12 == 82 ) + { + v13 = d_name((_DWORD *)a1, v11); + v14 = d_number_component(a1); + return d_make_comp((_DWORD *)a1, 22, (int)v13, (int)v14); + } + } + return 0; + } + comp = (unsigned int *)d_name((_DWORD *)a1, a3); + if ( !comp ) + return 0; + if ( !a2 || (*(_BYTE *)(a1 + 8) & 1) != 0 ) + { + v15 = **(_BYTE **)(a1 + 12); + if ( !v15 || v15 == 69 ) + return comp; + v16 = comp; + while ( 1 ) + { + v17 = *v16; + if ( *v16 == 4 ) + break; + if ( *v16 > 4 ) + { + if ( v17 != 77 ) + { + if ( v17 <= 0x4D ) + { + if ( v17 - 28 > 4 ) + { +LABEL_31: + v18 = 0; + goto LABEL_32; + } + } + else if ( v17 - 79 > 1 ) + { + goto LABEL_31; + } + } + v16 = (unsigned int *)v16[2]; + } + else + { + if ( v17 != 2 ) + goto LABEL_31; + v16 = (unsigned int *)v16[3]; + } + if ( !v16 ) + goto LABEL_31; + } + v48 = (unsigned int *)v16[2]; + if ( v48 ) + { + while ( 1 ) + { + v49 = *v48; + if ( *v48 > 8 ) + break; + if ( v49 > 6 ) + goto LABEL_31; + if ( v49 - 1 <= 1 ) + { + v48 = (unsigned int *)v48[3]; + if ( v48 ) + continue; + } + goto LABEL_95; + } + v18 = v49 != 53; + } + else + { +LABEL_95: + v18 = 1; + } +LABEL_32: + v19 = d_bare_function_type((_DWORD *)a1, v18); + if ( v19 ) + { + if ( !a2 && *comp == 2 && *v19 == 41 ) + v19[2] = 0; + return d_make_comp((_DWORD *)a1, 3, (int)comp, (int)v19); + } + return 0; + } + while ( 1 ) + { + v7 = *comp; + if ( *comp == 77 ) + goto LABEL_62; + if ( *comp <= 0x4D ) + break; + if ( v7 - 79 > 1 ) + return comp; +LABEL_62: + comp = (unsigned int *)comp[2]; + } + if ( v7 - 28 <= 4 ) + goto LABEL_62; + if ( v7 == 2 ) + { + v8 = (unsigned int *)comp[3]; + v9 = *v8; + v10 = *v8 <= 0x4D; + if ( *v8 == 77 ) + goto LABEL_13; + while ( 1 ) + { + if ( v10 ) + { + if ( v9 - 28 > 4 ) + return comp; + } + else if ( v9 - 79 > 1 ) + { + return comp; + } + do + { +LABEL_13: + v8 = (unsigned int *)v8[2]; + v9 = *v8; + comp[3] = (unsigned int)v8; + v10 = v9 <= 0x4D; + } + while ( v9 == 77 ); + } + } + return comp; +} +// 421EBA: variable 'v58' is possibly undefined +// 421EBA: variable 'v60' is possibly undefined +// 421EBA: variable 'v62' is possibly undefined +// 421EBA: variable 'v64' is possibly undefined +// 421EBA: variable 'v66' is possibly undefined +// 421EBA: variable 'v68' is possibly undefined +// 421EBA: variable 'v70' is possibly undefined +// 421EBA: variable 'v72' is possibly undefined +// 421EBA: variable 'v74' is possibly undefined +// 421EBA: variable 'v76' is possibly undefined +// 421EBA: variable 'v78' is possibly undefined +// 421F71: variable 'v59' is possibly undefined +// 421F71: variable 'v61' is possibly undefined +// 421F71: variable 'v63' is possibly undefined +// 421F71: variable 'v65' is possibly undefined +// 421F71: variable 'v67' is possibly undefined +// 421F71: variable 'v69' is possibly undefined +// 421F71: variable 'v71' is possibly undefined +// 421F71: variable 'v73' is possibly undefined +// 421F71: variable 'v75' is possibly undefined +// 421F71: variable 'v77' is possibly undefined +// 421F71: variable 'v79' is possibly undefined +// 421FAA: variable 'v37' is possibly undefined +// 421FE3: variable 'v39' is possibly undefined +// 42202A: variable 'v41' is possibly undefined + +//----- (004222C0) -------------------------------------------------------- +int *__usercall d_name@(_DWORD *a1@, int a2@) +{ + char *v3; // edx + char v4; // al + int *v5; // esi + _DWORD *v6; // eax + _DWORD *v7; // edi + _BYTE *v8; // eax + char v9; // dl + _DWORD *v10; // eax + _DWORD *v11; // esi + int **v12; // ebp + unsigned __int8 *v13; // edx + _DWORD *v14; // eax + int *v15; // edi + int v16; // ebx + _DWORD *v17; // esi + unsigned int v18; // eax + int *v19; // eax + int v20; // edx + int v21; // eax + _DWORD *v23; // eax + int v24; // edx + _DWORD *v25; // ecx + int *comp; // eax + int v27; // eax + int v28; // ecx + int v29; // ebp + _DWORD *v30; // eax + _DWORD *v31; // ecx + int v32; // edx + _DWORD *v33; // ebx + int *v34; // eax + _BYTE *v35; // eax + _DWORD *v36; // eax + int v37; // eax + int v38; // eax + int *v39; // [esp+1Ch] [ebp-30h] + _DWORD *v40; // [esp+1Ch] [ebp-30h] + int *v41; // [esp+2Ch] [ebp-20h] BYREF + + v3 = (char *)a1[3]; + v4 = *v3; + if ( *v3 == 85 ) + return d_unqualified_name(a1); + if ( v4 <= 85 ) + { + if ( v4 != 78 ) + { + if ( v4 == 83 ) + { + if ( v3[1] != 116 ) + { + v5 = d_substitution(a1, 0); + if ( *(_BYTE *)a1[3] != 73 ) + return v5; + goto LABEL_7; + } + a1[3] = v3 + 2; + v23 = d_unqualified_name(a1); + v24 = a1[5]; + if ( v24 >= a1[6] ) + { + v25 = 0; + } + else + { + v25 = (_DWORD *)(a1[4] + 16 * a1[5]); + a1[5] = v24 + 1; + v25[1] = 0; + *v25 = 0; + v25[2] = &off_4EE663; + v25[3] = 3; + } + comp = d_make_comp(a1, 1, (int)v25, (int)v23); + a1[11] += 3; + v5 = comp; + if ( *(_BYTE *)a1[3] == 73 ) + { +LABEL_39: + if ( !v5 ) + return 0; + v27 = a1[8]; + if ( v27 >= a1[9] ) + return 0; + *(_DWORD *)(a1[7] + 4 * v27) = v5; + a1[8] = v27 + 1; +LABEL_7: + v6 = d_template_args(a1); + return d_make_comp(a1, 4, (int)v5, (int)v6); + } + return v5; + } + goto LABEL_42; + } + a1[3] = v3 + 1; + v12 = d_cv_qualifiers(a1, &v41, 1); + if ( !v12 ) + return 0; + v39 = d_ref_qualifier(a1, 0); + if ( !*(_BYTE *)a1[3] ) + { +LABEL_33: + *v12 = 0; + return 0; + } + v13 = (unsigned __int8 *)a1[3]; + v14 = a1; + v15 = 0; + v16 = *v13; + v17 = v14; + while ( 1 ) + { + if ( (_BYTE)v16 == 68 ) + { + if ( (v13[1] & 0xDF) == 84 ) + v19 = (int *)d_type(); + else + v19 = d_unqualified_name(v17); +LABEL_47: + v20 = 1; + if ( v15 ) + { +LABEL_26: + v15 = d_make_comp(v17, v20, (int)v15, (int)v19); + goto LABEL_27; + } +LABEL_48: + v13 = (unsigned __int8 *)v17[3]; + v15 = v19; + goto LABEL_28; + } + v18 = v16 - 48; + if ( (unsigned __int8)(v16 - 48) > 0x1Cu ) + break; + while ( 1 ) + { + v28 = 268960767; + if ( !_bittest(&v28, v18) ) + break; +LABEL_51: + v19 = d_unqualified_name(v17); + if ( v15 ) + goto LABEL_25; + v15 = v19; +LABEL_27: + v13 = (unsigned __int8 *)v17[3]; + if ( (_BYTE)v16 == 83 ) + goto LABEL_32; +LABEL_28: + LOBYTE(v16) = *v13; + if ( *v13 != 69 ) + { + if ( !v15 ) + goto LABEL_33; + v21 = v17[8]; + if ( v21 >= v17[9] ) + goto LABEL_33; + *(_DWORD *)(v17[7] + 4 * v21) = v15; + v17[8] = v21 + 1; + goto LABEL_32; + } + v18 = 21; + } + if ( (_BYTE)v16 == 73 ) + { + if ( !v15 ) + goto LABEL_33; + v17[3] = v13 + 1; + v19 = d_template_args_1(v17); + v20 = 4; + goto LABEL_26; + } +LABEL_60: + if ( (_BYTE)v16 == 84 ) + { + v19 = d_template_param(v17); + goto LABEL_47; + } + if ( (_BYTE)v16 == 69 ) + { + *v12 = v15; + v33 = v17; + if ( v15 ) + { + if ( v39 ) + { + v34 = v41; + v41 = v39; + v39[2] = (int)v34; + } + v35 = (_BYTE *)v17[3]; + if ( *v35 == 69 ) + { + v5 = v41; + v33[3] = v35 + 1; + return v5; + } + } + return 0; + } + if ( (_BYTE)v16 != 77 || !v15 ) + goto LABEL_33; + v17[3] = ++v13; +LABEL_32: + v16 = *v13; + if ( !(_BYTE)v16 ) + goto LABEL_33; + } + if ( (unsigned __int8)(v16 - 97) > 0x19u ) + { + if ( (_BYTE)v16 == 85 ) + { + v19 = d_unqualified_name(v17); + if ( v15 ) + { +LABEL_25: + v20 = 1; + goto LABEL_26; + } + goto LABEL_48; + } + if ( (_BYTE)v16 == 83 ) + { + v19 = d_substitution(v17, 1); + if ( v15 ) + goto LABEL_25; + v13 = (unsigned __int8 *)v17[3]; + v15 = v19; + goto LABEL_32; + } + goto LABEL_60; + } + goto LABEL_51; + } + if ( v4 == 90 ) + { + a1[3] = v3 + 1; + v7 = (_DWORD *)d_encoding(a2, 0); + if ( !v7 ) + return 0; + v8 = (_BYTE *)a1[3]; + if ( *v8 != 69 ) + return 0; + a1[3] = v8 + 1; + v9 = v8[1]; + if ( v9 == 115 ) + { + a1[3] = v8 + 2; + if ( !d_discriminator((int)a1) ) + return 0; + v37 = a1[5]; + if ( v37 < a1[6] ) + { + v11 = (_DWORD *)(a1[4] + 16 * a1[5]); + a1[5] = v37 + 1; + v11[1] = 0; + *v11 = 0; + v11[2] = "string literal"; + v11[3] = 14; + goto LABEL_15; + } + } + else + { + if ( v9 != 100 ) + { + v10 = (_DWORD *)d_name(); + v11 = v10; + if ( v10 && ((*v10 - 70) & 0xFFFFFFFD) != 0 && !d_discriminator((int)a1) ) + return 0; + goto LABEL_15; + } + a1[3] = v8 + 2; + v29 = d_compact_number((int)a1); + if ( v29 < 0 ) + return 0; + v30 = (_DWORD *)d_name(); + v31 = v30; + if ( v30 ) + { + if ( ((*v30 - 70) & 0xFFFFFFFD) != 0 ) + { + v40 = v30; + v38 = d_discriminator((int)a1); + v31 = v40; + if ( !v38 ) + return 0; + } + } + v32 = a1[5]; + if ( v32 < a1[6] ) + { + v11 = (_DWORD *)(a1[4] + 16 * a1[5]); + v11[1] = 0; + a1[5] = v32 + 1; + *v11 = 71; + v11[3] = v29; + v11[2] = v31; + goto LABEL_15; + } + } + v11 = 0; +LABEL_15: + if ( *v7 == 3 ) + { + v36 = (_DWORD *)v7[3]; + if ( *v36 == 41 ) + v36[2] = 0; + } + return d_make_comp(a1, 2, (int)v7, (int)v11); + } +LABEL_42: + v5 = d_unqualified_name(a1); + if ( *(_BYTE *)a1[3] == 73 ) + goto LABEL_39; + return v5; +} +// 421BD0: using guessed type int __fastcall d_encoding(_DWORD, _DWORD); +// 4227B0: using guessed type int d_type(void); +// 4EE663: using guessed type void *off_4EE663; + +//----- (004227B0) -------------------------------------------------------- +int *__usercall d_type@( + int a1@, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + int a10, + int a11, + int a12) +{ + char *v13; // esi + int v14; // ecx + int v15; // edx + int v16; // esi + int v17; // eax + int *result; // eax + _BYTE *v19; // edx + int **v20; // esi + int *v21; // eax + int *v22; // edx + int *v23; // ecx + int v24; // edx + int v25; // eax + int v26; // edx + int v27; // ecx + int v28; // edx + int v29; // edx + char v30; // al + _BYTE *v31; // edx + int v32; // eax + int v33; // eax + int v34; // eax + int v35; // eax + _DWORD *v36; // eax + int v37; // eax + int *comp; // esi + _BYTE *v39; // eax + int v40; // eax + _BYTE *v41; // esi + int v42; // ecx + _DWORD *v43; // ecx + char *v44; // ecx + char v45; // al + char *v46; // eax + char *v47; // esi + int v48; // edx + int v49; // ebp + _DWORD *v50; // edi + char v51; // dl + int v52; // eax + int v53; // esi + int v54; // eax + int v55; // eax + int *v56; // edi + unsigned __int8 v57; // al + char *v58; // eax + char v59; // dl + int v60; // edx + int v61; // edx + int v62; // edx + int v63; // edx + int v64; // edx + int v65; // edx + _DWORD *v66; // esi + _BYTE *v67; // eax + int v68; // eax + int v69; // edx + int v70; // edx + int v71; // edx + int v72; // eax + int v73; // edx + _DWORD *v74; // eax + int v75; // esi + int v76; // eax + int v77; // ebp + int v78; // edi + _DWORD *v79; // ecx + int *v80; // edx + int v81; // eax + int v82; // edi + int v83; // eax + _DWORD *v84; // [esp+0h] [ebp-4Ch] + int v85; // [esp+1Ch] [ebp-30h] + int *v86; // [esp+2Ch] [ebp-20h] BYREF + + v13 = *(char **)(a1 + 12); + if ( next_is_type_qual_isra_0(v13) ) + { + v20 = d_cv_qualifiers((_DWORD *)a1, &v86, 0); + if ( v20 ) + { + v21 = **(_BYTE **)(a1 + 12) == 70 ? d_function_type(a1) : (int *)d_type(); + *v20 = v21; + v22 = v21; + if ( v21 ) + { + result = v86; + if ( (unsigned int)(*v22 - 31) <= 1 ) + { + v23 = (int *)v22[2]; + v22[2] = (int)v86; + v86 = *v20; + *v20 = v23; + result = v86; + } + if ( result ) + { + v24 = *(_DWORD *)(a1 + 32); + if ( v24 < *(_DWORD *)(a1 + 36) ) + { + *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v24) = result; + *(_DWORD *)(a1 + 32) = v24 + 1; + return result; + } + } + } + } + } + else + { + v15 = *v13; + switch ( (char)v15 ) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'N': + case 'Z': + result = d_name((_DWORD *)a1, v14); + v86 = result; + goto LABEL_21; + case 'A': + v44 = v13 + 1; + *(_DWORD *)(a1 + 12) = v13 + 1; + v45 = v13[1]; + if ( v45 == 95 ) + { + v50 = 0; +LABEL_57: + *(_DWORD *)(a1 + 12) = v44 + 1; + v52 = d_type(); + result = d_make_comp((_DWORD *)a1, 42, (int)v50, v52); + v86 = result; + goto LABEL_21; + } + if ( (unsigned __int8)(v45 - 48) > 9u ) + { + v75 = *(_DWORD *)(a1 + 48); + *(_DWORD *)(a1 + 48) = 1; + v76 = d_expression_1(); + *(_DWORD *)(a1 + 48) = v75; + v50 = (_DWORD *)v76; + if ( v76 ) + { + v46 = *(char **)(a1 + 12); + v51 = *v46; +LABEL_56: + v44 = v46; + if ( v51 != 95 ) + return 0; + goto LABEL_57; + } + } + else + { + v46 = v13 + 1; + do + { + v47 = v46++; + *(_DWORD *)(a1 + 12) = v46; + } + while ( (unsigned __int8)(*v46 - 48) <= 9u ); + v48 = *(_DWORD *)(a1 + 20); + v49 = v46 - v44; + if ( v48 < *(_DWORD *)(a1 + 24) ) + { + v50 = (_DWORD *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + v50[1] = 0; + *(_DWORD *)(a1 + 20) = v48 + 1; + if ( v49 > 0 ) + { + v50[1] = 0; + *v50 = 0; + v50[2] = v44; + v50[3] = v49; + v51 = v47[1]; + goto LABEL_56; + } + } + } + break; + case 'C': + *(_DWORD *)(a1 + 12) = v13 + 1; + v37 = d_type(); + result = d_make_comp((_DWORD *)a1, 37, v37, 0); + v86 = result; + goto LABEL_21; + case 'D': + *(_DWORD *)(a1 + 12) = v13 + 1; + if ( v13[1] ) + { + *(_DWORD *)(a1 + 12) = v13 + 2; + switch ( v13[1] ) + { + case 'F': + v55 = *(_DWORD *)(a1 + 20); + if ( v55 >= *(_DWORD *)(a1 + 24) ) + { + MEMORY[0] = 0; + BUG(); + } + v56 = (int *)(*(_DWORD *)(a1 + 16) + 16 * v55); + v56[1] = 0; + v86 = v56; + *(_DWORD *)(a1 + 20) = v55 + 1; + *v56 = 44; + v57 = v13[2] - 48; + *((_WORD *)v56 + 6) = v57 <= 9u; + if ( v57 <= 9u ) + { + d_number_isra_0((char **)(a1 + 12)); + v56 = v86; + } + v56[2] = d_type(); + if ( !v86[2] ) + return 0; + d_number_isra_0((char **)(a1 + 12)); + v58 = *(char **)(a1 + 12); + v59 = *v58; + if ( *v58 ) + { + *(_DWORD *)(a1 + 12) = v58 + 1; + v59 = *v58; + } + result = v86; + *((_WORD *)v86 + 7) = v59 == 115; + return result; + case 'T': + case 't': + v16 = *(_DWORD *)(a1 + 48); + *(_DWORD *)(a1 + 48) = 1; + v17 = d_expression_1(); + *(_DWORD *)(a1 + 48) = v16; + result = d_make_comp((_DWORD *)a1, 67, v17, 0); + v86 = result; + if ( !result ) + return 0; + v19 = *(_BYTE **)(a1 + 12); + if ( !*v19 ) + return 0; + *(_DWORD *)(a1 + 12) = v19 + 1; + if ( *v19 != 69 ) + return 0; + goto LABEL_22; + case 'a': + v61 = *(_DWORD *)(a1 + 20); + if ( v61 >= *(_DWORD *)(a1 + 24) ) + return 0; + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + *(_DWORD *)(a1 + 20) = v61 + 1; + result[1] = 0; + *result = 0; + result[2] = (int)"auto"; + result[3] = 4; + return result; + case 'c': + v60 = *(_DWORD *)(a1 + 20); + if ( v60 >= *(_DWORD *)(a1 + 24) ) + return 0; + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + *(_DWORD *)(a1 + 20) = v60 + 1; + result[1] = 0; + *result = 0; + result[2] = (int)"decltype(auto)"; + result[3] = 14; + return result; + case 'd': + v69 = *(_DWORD *)(a1 + 20); + if ( v69 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v69 + 1; + *result = 39; + result[2] = (int)&off_4EFA1C; + *(_DWORD *)(a1 + 44) += 9; + return result; + case 'e': + v65 = *(_DWORD *)(a1 + 20); + if ( v65 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v65 + 1; + *result = 39; + result[2] = (int)&off_4EFA30; + *(_DWORD *)(a1 + 44) += 10; + return result; + case 'f': + v63 = *(_DWORD *)(a1 + 20); + if ( v63 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v63 + 1; + *result = 39; + result[2] = (int)&off_4EFA08; + *(_DWORD *)(a1 + 44) += 9; + return result; + case 'h': + v62 = *(_DWORD *)(a1 + 20); + if ( v62 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v62 + 1; + *result = 39; + result[2] = (int)&off_4EFA44; + *(_DWORD *)(a1 + 44) += 4; + return result; + case 'i': + v73 = *(_DWORD *)(a1 + 20); + if ( v73 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v73 + 1; + *result = 39; + result[2] = (int)&off_4EFA80; + *(_DWORD *)(a1 + 44) += 8; + return result; + case 'n': + v70 = *(_DWORD *)(a1 + 20); + if ( v70 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v70 + 1; + *result = 39; + result[2] = (int)&off_4EFA94; + *(_DWORD *)(a1 + 44) += 17; + return result; + case 'p': + v72 = d_type(); + result = d_make_comp((_DWORD *)a1, 75, v72, 0); + v86 = result; + goto LABEL_21; + case 's': + v64 = *(_DWORD *)(a1 + 20); + if ( v64 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v64 + 1; + *result = 39; + result[2] = (int)&off_4EFA6C; + *(_DWORD *)(a1 + 44) += 8; + return result; + case 'u': + v71 = *(_DWORD *)(a1 + 20); + if ( v71 >= *(_DWORD *)(a1 + 24) ) + { + v86 = 0; + BUG(); + } + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * *(_DWORD *)(a1 + 20)); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v71 + 1; + *result = 39; + result[2] = (int)&off_4EFA58; + *(_DWORD *)(a1 + 44) += 7; + return result; + case 'v': + if ( v13[2] == 95 ) + { + v82 = *(_DWORD *)(a1 + 48); + *(_DWORD *)(a1 + 48) = 1; + *(_DWORD *)(a1 + 12) = v13 + 3; + v83 = d_expression_1(); + *(_DWORD *)(a1 + 48) = v82; + v66 = (_DWORD *)v83; + } + else + { + v66 = d_number_component(a1); + } + if ( !v66 ) + return 0; + v67 = *(_BYTE **)(a1 + 12); + if ( *v67 != 95 ) + return 0; + *(_DWORD *)(a1 + 12) = v67 + 1; + v68 = d_type(); + result = d_make_comp((_DWORD *)a1, 45, (int)v66, v68); + v86 = result; + goto LABEL_21; + default: + return 0; + } + } + return 0; + case 'F': + result = d_function_type(a1); + v86 = result; + goto LABEL_21; + case 'G': + *(_DWORD *)(a1 + 12) = v13 + 1; + v35 = d_type(); + result = d_make_comp((_DWORD *)a1, 38, v35, 0); + v86 = result; + goto LABEL_21; + case 'M': + *(_DWORD *)(a1 + 12) = v13 + 1; + v53 = d_type(); + if ( !v53 ) + return 0; + v54 = d_type(); + if ( !v54 ) + return 0; + result = d_make_comp((_DWORD *)a1, 43, v53, v54); + v86 = result; + goto LABEL_21; + case 'O': + *(_DWORD *)(a1 + 12) = v13 + 1; + v34 = d_type(); + result = d_make_comp((_DWORD *)a1, 36, v34, 0); + v86 = result; + goto LABEL_21; + case 'P': + *(_DWORD *)(a1 + 12) = v13 + 1; + v33 = d_type(); + result = d_make_comp((_DWORD *)a1, 34, v33, 0); + v86 = result; + goto LABEL_21; + case 'R': + *(_DWORD *)(a1 + 12) = v13 + 1; + v32 = d_type(); + result = d_make_comp((_DWORD *)a1, 35, v32, 0); + v86 = result; + goto LABEL_21; + case 'S': + v30 = v13[1]; + if ( (unsigned __int8)(v30 - 48) <= 9u || v30 == 95 || (unsigned __int8)(v30 - 65) <= 0x19u ) + { + result = d_substitution((_DWORD *)a1, 0); + v31 = *(_BYTE **)(a1 + 12); + v86 = result; + if ( *v31 != 73 ) + return result; + *(_DWORD *)(a1 + 12) = v31 + 1; + v84 = d_template_args_1((_DWORD *)a1); + result = d_make_comp((_DWORD *)a1, 4, (int)v86, (int)v84); + goto LABEL_29; + } + result = d_name((_DWORD *)a1, v14); + v86 = result; + if ( !result ) + return 0; + if ( *result == 24 ) + return result; + goto LABEL_22; + case 'T': + result = d_template_param((_DWORD *)a1); + v41 = *(_BYTE **)(a1 + 12); + v86 = result; + if ( *v41 != 73 ) + goto LABEL_21; + if ( *(_DWORD *)(a1 + 52) ) + { + v77 = *(_DWORD *)(a1 + 20); + v78 = *(_DWORD *)(a1 + 32); + v85 = *(_DWORD *)(a1 + 44); + *(_DWORD *)(a1 + 12) = v41 + 1; + v79 = d_template_args_1((_DWORD *)a1); + if ( **(_BYTE **)(a1 + 12) == 73 ) + { + v80 = v86; + if ( !v86 ) + return 0; + v81 = *(_DWORD *)(a1 + 32); + if ( v81 >= *(_DWORD *)(a1 + 36) ) + return 0; + *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v81) = v86; + *(_DWORD *)(a1 + 32) = v81 + 1; + result = d_make_comp((_DWORD *)a1, 4, (int)v80, (int)v79); + v86 = result; + } + else + { + *(_DWORD *)(a1 + 12) = v41; + *(_DWORD *)(a1 + 20) = v77; + *(_DWORD *)(a1 + 44) = v85; + result = v86; + *(_DWORD *)(a1 + 32) = v78; + } + } + else + { + if ( !result ) + return 0; + v42 = *(_DWORD *)(a1 + 32); + if ( v42 >= *(_DWORD *)(a1 + 36) ) + return 0; + *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v42) = result; + *(_DWORD *)(a1 + 32) = v42 + 1; + v43 = 0; + if ( (unsigned __int8)(*v41 - 73) <= 1u ) + { + *(_DWORD *)(a1 + 12) = v41 + 1; + v43 = d_template_args_1((_DWORD *)a1); + } + result = d_make_comp((_DWORD *)a1, 4, (int)v86, (int)v43); +LABEL_29: + v86 = result; + } +LABEL_21: + if ( !result ) + return 0; +LABEL_22: + v29 = *(_DWORD *)(a1 + 32); + if ( v29 < *(_DWORD *)(a1 + 36) ) + { + *(_DWORD *)(*(_DWORD *)(a1 + 28) + 4 * v29) = result; + result = v86; + *(_DWORD *)(a1 + 32) = v29 + 1; + return result; + } + return 0; + case 'U': + *(_DWORD *)(a1 + 12) = v13 + 1; + v86 = d_source_name(a1); + comp = v86; + v39 = *(_BYTE **)(a1 + 12); + if ( *v39 == 73 ) + { + *(_DWORD *)(a1 + 12) = v39 + 1; + v74 = d_template_args_1((_DWORD *)a1); + comp = d_make_comp((_DWORD *)a1, 4, (int)v86, (int)v74); + } + v40 = d_type(); + result = d_make_comp((_DWORD *)a1, 33, v40, (int)comp); + v86 = result; + goto LABEL_21; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'l': + case 'm': + case 'n': + case 'o': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + v25 = 5 * v15 - 485; + v26 = *(_DWORD *)(a1 + 20); + v27 = 4 * v25 + 5175296; + if ( v26 >= *(_DWORD *)(a1 + 24) ) + d_type_cold(a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); + result = (int *)(*(_DWORD *)(a1 + 16) + 16 * v26); + result[1] = 0; + *(_DWORD *)(a1 + 20) = v26 + 1; + v28 = *(_DWORD *)(v27 + 4); + *result = 39; + result[2] = v27; + *(_DWORD *)(a1 + 44) += v28; + *(_DWORD *)(a1 + 12) = v13 + 1; + return result; + case 'u': + *(_DWORD *)(a1 + 12) = v13 + 1; + v36 = d_source_name(a1); + result = d_make_comp((_DWORD *)a1, 40, (int)v36, 0); + v86 = result; + goto LABEL_21; + default: + return 0; + } + } + return 0; +} +// 42290A: variable 'v14' is possibly undefined +// 4213F0: using guessed type int d_expression_1(void); +// 4EFA08: using guessed type char *off_4EFA08; +// 4EFA1C: using guessed type char *off_4EFA1C; +// 4EFA30: using guessed type char *off_4EFA30; +// 4EFA44: using guessed type char *off_4EFA44; +// 4EFA58: using guessed type char *off_4EFA58; +// 4EFA6C: using guessed type char *off_4EFA6C; +// 4EFA80: using guessed type char *off_4EFA80; +// 4EFA94: using guessed type char *off_4EFA94; + +//----- (004230D0) -------------------------------------------------------- +_DWORD *__usercall d_operator_name@(_DWORD *a1@) +{ + unsigned __int8 *v2; // eax + unsigned __int8 v3; // si + unsigned __int8 v4; // bp + int v5; // edx + unsigned __int8 v6; // di + void **v7; // ebp + _BYTE *v8; // ecx + bool v9; // cc + _DWORD *result; // eax + int v11; // edx + _DWORD *v12; // eax + int v13; // edx + _DWORD *v14; // ecx + int v15; // ebx + int v16; // ecx + int v17; // [esp+18h] [ebp-24h] + _DWORD *v18; // [esp+1Ch] [ebp-20h] + + v2 = (unsigned __int8 *)a1[3]; + if ( !*v2 ) + { + v4 = 0; + v3 = 0; + goto LABEL_3; + } + a1[3] = v2 + 1; + v3 = *v2; + v4 = v2[1]; + if ( !v4 ) + { +LABEL_3: + v18 = a1; + v5 = 0; + v6 = v4; + v17 = 67; + while ( 1 ) + { + v7 = &cplus_demangle_operators + 4 * v5 + 4 * ((v17 - v5) / 2); + v8 = *v7; + v9 = *(_BYTE *)*v7 <= v3; + if ( *(_BYTE *)*v7 == v3 ) + { + v9 = v8[1] <= v6; + if ( v8[1] == v6 ) + break; + } + if ( v9 ) + v5 += (v17 - v5) / 2 + 1; + else + v17 = v5 + (v17 - v5) / 2; + if ( v5 == v17 ) + return 0; + } + v11 = v18[5]; + if ( v11 < v18[6] ) + { + result = (_DWORD *)(v18[4] + 16 * v18[5]); + result[1] = 0; + v18[5] = v11 + 1; + *result = 50; + result[2] = v7; + return result; + } + return 0; + } + a1[3] = v2 + 2; + v4 = v2[1]; + if ( v3 == 118 ) + { + if ( (unsigned __int8)(v4 - 48) > 9u ) + goto LABEL_3; + v12 = d_source_name((int)a1); + v13 = a1[5]; + v14 = v12; + if ( v13 >= a1[6] ) + return 0; + result = (_DWORD *)(a1[4] + 16 * a1[5]); + result[1] = 0; + a1[5] = v13 + 1; + if ( !v14 ) + return 0; + result[1] = 0; + *result = 51; + result[3] = v14; + result[2] = (char)v4 - 48; + } + else + { + if ( v3 != 99 || v4 != 118 ) + goto LABEL_3; + v15 = a1[13]; + a1[13] = a1[12] == 0; + v16 = d_type(); + if ( a1[13] ) + result = d_make_comp(a1, 53, v16, 0); + else + result = d_make_comp(a1, 52, v16, 0); + a1[13] = v15; + } + return result; +} +// 4227B0: using guessed type int d_type(void); +// 4EF280: using guessed type void *cplus_demangle_operators; + +//----- (00423280) -------------------------------------------------------- +int __usercall d_parmlist@(_DWORD *a1@) +{ + char *v2; // ebp + char v3; // al + int *v4; // esi + _DWORD *comp; // eax + int v6; // ecx + int result; // eax + _DWORD *v8; // edx + int v9; // edx + int v10; // [esp+1Ch] [ebp-20h] BYREF + + v2 = (char *)a1[3]; + v10 = 0; + v3 = *v2; + if ( v3 == 0 || v3 == 69 ) + return 0; + v4 = &v10; + if ( v3 == 46 ) + return 0; + do + { + if ( (v3 == 82 || v3 == 79) && v2[1] == 69 ) + break; + v6 = d_type(); + if ( !v6 ) + return 0; + comp = d_make_comp(a1, 46, v6, 0); + *v4 = (int)comp; + if ( !comp ) + return 0; + v2 = (char *)a1[3]; + v4 = comp + 3; + v3 = *v2; + if ( *v2 == 69 || *v2 == 0 ) + break; + } + while ( v3 != 46 ); + result = v10; + if ( !v10 ) + return 0; + if ( !*(_DWORD *)(v10 + 12) ) + { + v8 = *(_DWORD **)(v10 + 8); + if ( *v8 == 39 ) + { + v9 = v8[2]; + if ( *(_DWORD *)(v9 + 16) == 9 ) + { + a1[11] -= *(_DWORD *)(v9 + 4); + *(_DWORD *)(result + 8) = 0; + } + } + } + return result; +} +// 4227B0: using guessed type int d_type(void); + +//----- (00423350) -------------------------------------------------------- +int **__usercall d_cv_qualifiers@(_DWORD *a1@, int **a2@, int a3@) +{ + int **v3; // esi + char *v5; // ebp + char i; // di + char v7; // al + int v8; // edi + int v9; // eax + _BYTE *v10; // edx + int v11; // edx + _DWORD *comp; // eax + int *v14; // eax + int v15; // edx + _BYTE *v16; // edx + int **v17; // eax + int v18; // [esp+1Ch] [ebp-30h] + int v19; // [esp+20h] [ebp-2Ch] + int v20; // [esp+24h] [ebp-28h] + char v21; // [esp+28h] [ebp-24h] + + v3 = a2; + v21 = a3; + v20 = a3 == 0 ? 27 : 30; + v19 = a3 == 0 ? 26 : 29; + v18 = a3 == 0 ? 25 : 28; + v5 = (char *)a1[3]; + for ( i = *v5; next_is_type_qual_isra_0(v5); i = *v5 ) + { + a1[3] = v5 + 1; + switch ( i ) + { + case 'r': + a1[11] += 9; + v11 = v18; + v9 = 0; + break; + case 'V': + a1[11] += 9; + v11 = v19; + v9 = 0; + break; + case 'K': + a1[11] += 6; + v11 = v20; + v9 = 0; + break; + default: + if ( !v5[1] ) + return 0; + a1[3] = v5 + 2; + v7 = v5[1]; + if ( v7 == 120 ) + { + a1[11] += 17; + v9 = 0; + v11 = 77; + } + else if ( (v7 & 0xDF) == 79 ) + { + a1[11] += 9; + if ( v7 == 79 ) + { + v8 = a1[12]; + a1[12] = 1; + v9 = d_expression_1(); + a1[12] = v8; + if ( !v9 ) + return 0; + v10 = (_BYTE *)a1[3]; + if ( *v10 != 69 ) + return 0; + a1[3] = v10 + 1; + v11 = 79; + } + else + { + v9 = 0; + v11 = 79; + } + } + else + { + if ( v7 != 119 ) + return 0; + a1[11] += 6; + v9 = d_parmlist(a1); + if ( !v9 ) + return 0; + v16 = (_BYTE *)a1[3]; + if ( *v16 != 69 ) + return 0; + a1[3] = v16 + 1; + v11 = 80; + } + break; + } + comp = d_make_comp(a1, v11, 0, v9); + *v3 = comp; + if ( !comp ) + return 0; + v5 = (char *)a1[3]; + v3 = (int **)(comp + 2); + } + if ( (v21 & 1) == 0 && i == 70 && v3 != a2 ) + { + v14 = *a2; + v15 = **a2; + if ( v15 != 26 ) + goto LABEL_34; +LABEL_21: + *v14 = 29; + while ( 1 ) + { + v17 = (int **)(v14 + 2); + if ( v3 == v17 ) + break; + v14 = *v17; + v15 = *v14; + if ( *v14 == 26 ) + goto LABEL_21; +LABEL_34: + if ( v15 == 27 ) + { + *v14 = 30; + } + else if ( v15 == 25 ) + { + *v14 = 28; + } + } + } + return v3; +} +// 4213F0: using guessed type int d_expression_1(void); + +//----- (00423570) -------------------------------------------------------- +_DWORD *__usercall d_bare_function_type@(_DWORD *a1@, int a2@) +{ + _BYTE *v3; // eax + int v4; // esi + int v5; // eax + + v3 = (_BYTE *)a1[3]; + if ( *v3 == 74 ) + { + a1[3] = v3 + 1; + goto LABEL_3; + } + if ( a2 ) + { +LABEL_3: + v4 = d_type(); + if ( v4 ) + { + v5 = d_parmlist(a1); + if ( v5 ) + return d_make_comp(a1, 41, v4, v5); + } + return 0; + } + v4 = 0; + v5 = d_parmlist(a1); + if ( v5 ) + return d_make_comp(a1, 41, v4, v5); + return 0; +} +// 4227B0: using guessed type int d_type(void); + +//----- (004235E0) -------------------------------------------------------- +_DWORD *__usercall d_function_type@(int a1@) +{ + unsigned int v2; // ecx + _BYTE *v3; // edx + _DWORD *result; // eax + _DWORD *v5; // eax + _BYTE *v6; // edx + + if ( (*(_BYTE *)(a1 + 10) & 4) != 0 ) + { + v3 = *(_BYTE **)(a1 + 12); + if ( *v3 == 70 ) + goto LABEL_8; + return 0; + } + v2 = *(_DWORD *)(a1 + 56); + if ( v2 > 0x800 ) + return 0; + v3 = *(_BYTE **)(a1 + 12); + *(_DWORD *)(a1 + 56) = v2 + 1; + result = 0; + if ( *v3 != 70 ) + { +LABEL_4: + *(_DWORD *)(a1 + 56) = v2; + return result; + } +LABEL_8: + *(_DWORD *)(a1 + 12) = v3 + 1; + if ( v3[1] == 89 ) + *(_DWORD *)(a1 + 12) = v3 + 2; + v5 = d_bare_function_type((_DWORD *)a1, 1); + result = d_ref_qualifier((_DWORD *)a1, v5); + v6 = *(_BYTE **)(a1 + 12); + if ( *v6 == 69 ) + *(_DWORD *)(a1 + 12) = v6 + 1; + else + result = 0; + if ( (*(_BYTE *)(a1 + 10) & 4) == 0 ) + { + v2 = *(_DWORD *)(a1 + 56) - 1; + goto LABEL_4; + } + return result; +} + +//----- (00423670) -------------------------------------------------------- +_DWORD *__usercall d_unqualified_name@(_DWORD *a1@) +{ + char *v2; // edx + char v3; // cl + _DWORD *v4; // eax + _DWORD *comp; // esi + char v6; // al + char v8; // al + int v9; // eax + int v10; // edx + char *v11; // edx + int v12; // eax + int v13; // eax + int v14; // edx + _BYTE *v15; // eax + _DWORD *v16; // eax + _DWORD *v17; // edi + int v18; // ebp + int v19; // ecx + _DWORD *v20; // eax + int v21; // edi + char *v22; // edx + int v23; // eax + int v24; // edx + char *v25; // ecx + int v26; // eax + int v27; // eax + int v28; // ebp + int v29; // edx + int v30; // eax + char *v31; // eax + int v32; // eax + + v2 = (char *)a1[3]; + v3 = *v2; + if ( (unsigned __int8)(*v2 - 48) <= 9u ) + { + comp = d_source_name((int)a1); + if ( *(_BYTE *)a1[3] != 66 ) + return comp; + return d_abi_tags(a1, comp); + } + if ( (unsigned __int8)(v3 - 97) <= 0x19u ) + { + if ( v3 == 111 && v2[1] == 110 ) + a1[3] = v2 + 2; + v4 = d_operator_name(a1); + comp = v4; + if ( v4 ) + { + if ( *v4 == 50 ) + { + v13 = v4[2]; + v14 = *(_DWORD *)(v13 + 8); + v15 = *(_BYTE **)v13; + a1[11] += v14 + 7; + if ( *v15 == 108 && v15[1] == 105 && !v15[2] ) + { + v16 = d_source_name((int)a1); + comp = d_make_comp(a1, 55, (int)comp, (int)v16); + } + } + } + goto LABEL_6; + } + if ( (unsigned __int8)(v3 - 67) <= 1u ) + { + v17 = (_DWORD *)a1[10]; + if ( v17 && (!*v17 || *v17 == 24) ) + { + a1[11] += v17[3]; + v6 = *v2; + v3 = *v2; + if ( *v2 != 67 ) + { + if ( v6 != 68 ) + { + comp = 0; + goto LABEL_7; + } + goto LABEL_34; + } + } + else if ( v3 != 67 ) + { +LABEL_34: + switch ( v2[1] ) + { + case '0': + v18 = 1; + goto LABEL_39; + case '1': + v18 = 2; + goto LABEL_39; + case '2': + v18 = 3; + goto LABEL_39; + case '4': + v18 = 4; + goto LABEL_39; + case '5': + v18 = 5; +LABEL_39: + v19 = a1[5]; + a1[3] = v2 + 2; + if ( v19 < a1[6] && (v20 = (_DWORD *)(a1[4] + 16 * v19), v20[1] = 0, comp = v20, a1[5] = v19 + 1, v17) ) + { + v20[1] = 0; + *v20 = 8; + v20[2] = v18; + v20[3] = v17; + v6 = v2[2]; + } + else + { + v6 = v2[2]; + comp = 0; + } + break; + default: + v6 = v3; + comp = 0; + break; + } +LABEL_7: + if ( v6 != 66 ) + return comp; + return d_abi_tags(a1, comp); + } + v27 = v2[1]; + if ( (_BYTE)v27 == 73 ) + { + a1[3] = v2 + 1; + v32 = v2[2]; + if ( (unsigned __int8)(v32 - 49) > 4u ) + { + v6 = v2[1]; + comp = 0; + goto LABEL_7; + } + v28 = v32 - 48; + a1[3] = v2 + 3; + d_type(); + v17 = (_DWORD *)a1[10]; + } + else + { + if ( (unsigned __int8)(v27 - 49) > 4u ) + return 0; + v28 = v27 - 48; + a1[3] = v2 + 2; + } + v29 = a1[5]; + if ( v29 < a1[6] ) + { + v30 = a1[4] + 16 * a1[5]; + *(_DWORD *)(v30 + 4) = 0; + comp = (_DWORD *)v30; + v31 = (char *)a1[3]; + a1[5] = v29 + 1; + if ( v17 ) + { + comp[1] = 0; + *comp = 7; + comp[2] = v28; + comp[3] = v17; + v6 = *v31; + goto LABEL_7; + } + goto LABEL_61; + } + goto LABEL_60; + } + if ( v3 == 76 ) + { + a1[3] = v2 + 1; + comp = d_source_name((int)a1); + if ( comp && d_discriminator((int)a1) ) + goto LABEL_6; + return 0; + } + if ( v3 != 85 ) + return 0; + v8 = v2[1]; + if ( v8 == 108 ) + { + comp = 0; + a1[3] = v2 + 1; + v6 = v2[1]; + if ( v6 != 108 ) + goto LABEL_7; + a1[3] = v2 + 2; + v21 = d_parmlist(a1); + if ( !v21 ) + goto LABEL_6; + v22 = (char *)a1[3]; + v6 = *v22; + if ( *v22 != 69 ) + goto LABEL_7; + a1[3] = v22 + 1; + v23 = d_compact_number((int)a1); + if ( v23 >= 0 ) + { + v24 = a1[5]; + v25 = (char *)a1[3]; + if ( v24 >= a1[6] + || (comp = (_DWORD *)(a1[4] + 16 * a1[5]), + comp[1] = 0, + a1[5] = v24 + 1, + comp[3] = v23, + v26 = a1[8], + *comp = 70, + comp[2] = v21, + v26 >= a1[9]) ) + { + v6 = *v25; + comp = 0; + } + else + { + *(_DWORD *)(a1[7] + 4 * v26) = comp; + a1[8] = v26 + 1; + v6 = *v25; + } + goto LABEL_7; + } +LABEL_60: + v31 = (char *)a1[3]; +LABEL_61: + v6 = *v31; + comp = 0; + goto LABEL_7; + } + if ( v8 == 116 ) + { + comp = 0; + a1[3] = v2 + 1; + v6 = v2[1]; + if ( v6 != 116 ) + goto LABEL_7; + a1[3] = v2 + 2; + v9 = d_compact_number((int)a1); + if ( v9 >= 0 ) + { + v10 = a1[5]; + if ( v10 < a1[6] ) + { + comp = (_DWORD *)(a1[4] + 16 * v10); + comp[1] = 0; + a1[5] = v10 + 1; + v11 = (char *)a1[3]; + comp[2] = v9; + v12 = a1[8]; + *comp = 72; + if ( v12 >= a1[9] ) + { + v6 = *v11; + comp = 0; + } + else + { + *(_DWORD *)(a1[7] + 4 * v12) = comp; + a1[8] = v12 + 1; + v6 = *v11; + } + goto LABEL_7; + } + goto LABEL_60; + } +LABEL_6: + v6 = *(_BYTE *)a1[3]; + goto LABEL_7; + } + return 0; +} +// 4227B0: using guessed type int d_type(void); + +//----- (00423A80) -------------------------------------------------------- +_DWORD *__usercall d_expr_primary@(_DWORD *a1@) +{ + _BYTE *v2; // eax + _BYTE *v3; // edx + int v4; // ecx + int *v5; // eax + char *v6; // ebp + int v7; // edi + char v8; // cl + char *v9; // edx + char *v10; // esi + _DWORD *result; // eax + int v12; // esi + int v13; // ecx + _DWORD *v14; // edx + int v15; // edx + int v16; // [esp+0h] [ebp-2Ch] + int v17; // [esp+4h] [ebp-28h] + int v18; // [esp+8h] [ebp-24h] + int v19; // [esp+Ch] [ebp-20h] + int v20; // [esp+10h] [ebp-1Ch] + int v21; // [esp+14h] [ebp-18h] + int v22; // [esp+18h] [ebp-14h] + int v23; // [esp+1Ch] [ebp-10h] + int v24; // [esp+20h] [ebp-Ch] + int v25; // [esp+24h] [ebp-8h] + int v26; // [esp+28h] [ebp-4h] + + v2 = (_BYTE *)a1[3]; + if ( *v2 != 76 ) + return 0; + v3 = v2 + 1; + a1[3] = v2 + 1; + v4 = (unsigned __int8)v2[1]; + if ( (_BYTE)v4 == 95 ) + { + v3 = v2 + 2; + a1[3] = v2 + 2; + v4 = (unsigned __int8)v2[2]; + if ( (_BYTE)v4 != 90 ) + { + result = 0; + goto LABEL_14; + } +LABEL_13: + a1[3] = v3 + 1; + result = (_DWORD *)d_encoding(v4, 0); + v3 = (_BYTE *)a1[3]; + LOBYTE(v4) = *v3; + goto LABEL_14; + } + if ( (_BYTE)v4 == 90 ) + goto LABEL_13; + v5 = d_type((int)a1, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); + if ( !v5 ) + return 0; + if ( *v5 == 39 ) + { + v15 = v5[2]; + if ( *(_DWORD *)(v15 + 16) ) + a1[11] -= *(_DWORD *)(v15 + 4); + } + v6 = (char *)a1[3]; + v7 = 61; + v8 = *v6; + if ( *v6 == 110 ) + { + v7 = 62; + a1[3] = v6 + 1; + v8 = *++v6; + } + if ( v8 != 69 ) + { + v9 = v6 + 1; + while ( v8 ) + { + a1[3] = v9; + v10 = v9; + v8 = *v9++; + if ( v8 == 69 ) + { + v12 = v10 - v6; + goto LABEL_19; + } + } + return 0; + } + v12 = 0; +LABEL_19: + v13 = a1[5]; + if ( v13 >= a1[6] || (v14 = (_DWORD *)(a1[4] + 16 * a1[5]), v14[1] = 0, a1[5] = v13 + 1, v12 <= 0) ) + { + v14 = 0; + } + else + { + v14[1] = 0; + *v14 = 0; + v14[2] = v6; + v14[3] = v12; + } + result = d_make_comp(a1, v7, (int)v5, (int)v14); + v3 = (_BYTE *)a1[3]; + LOBYTE(v4) = *v3; +LABEL_14: + if ( (_BYTE)v4 != 69 ) + return 0; + a1[3] = v3 + 1; + return result; +} +// 423AAB: variable 'v16' is possibly undefined +// 423AAB: variable 'v17' is possibly undefined +// 423AAB: variable 'v18' is possibly undefined +// 423AAB: variable 'v19' is possibly undefined +// 423AAB: variable 'v20' is possibly undefined +// 423AAB: variable 'v21' is possibly undefined +// 423AAB: variable 'v22' is possibly undefined +// 423AAB: variable 'v23' is possibly undefined +// 423AAB: variable 'v24' is possibly undefined +// 423AAB: variable 'v25' is possibly undefined +// 423AAB: variable 'v26' is possibly undefined +// 421BD0: using guessed type int __fastcall d_encoding(_DWORD, _DWORD); + +//----- (00423BD0) -------------------------------------------------------- +int __usercall d_print_comp@(int result@, int a2@, int *a3@) +{ + int v3; // ebx + int v4; // ebp + int v5; // edx + int v6; // edi + int v7; // edi + int v8; // ecx + int v9; // ecx + char *v10; // eax + int v11; // eax + int v12; // eax + int v13; // ecx + int v14; // esi + const char *Str1; // edi + int v16; // eax + int v17; // eax + int v18; // eax + int v19; // eax + _DWORD *v20; // eax + int v21; // ecx + int v22; // eax + int **v23; // esi + int **v24; // eax + int v25; // edx + int v26; // eax + int v27; // eax + int *v28; // esi + _DWORD *v29; // ecx + unsigned int v30; // esi + int v31; // eax + int v32; // eax + int v33; // eax + int v34; // ecx + unsigned int v35; // esi + const char *v36; // edi + char i13; // dl + unsigned int v38; // eax + int v39; // eax + int v40; // eax + int v41; // ecx + int v42; // edi + int v43; // eax + _DWORD *v44; // esi + unsigned int v45; // edi + _DWORD *v46; // ecx + char *v47; // esi + int v48; // eax + _DWORD *v49; // eax + unsigned int v50; // edx + char *v51; // ecx + char *v52; // esi + _DWORD *v53; // ecx + int v54; // esi + int v55; // edi + char *v56; // esi + int v57; // eax + char *v58; // edi + int v59; // ecx + char v60; // dl + int v61; // eax + int **v62; // esi + int v63; // edi + int v64; // ecx + int v65; // ecx + int v66; // eax + int v67; // edx + int v68; // eax + const char *v69; // esi + char i12; // cl + int v71; // edx + int v72; // eax + int v73; // edi + int v74; // eax + int v75; // eax + int v76; // eax + int v77; // eax + int v78; // eax + const char *v79; // esi + char i16; // dl + int v81; // ecx + int v82; // eax + int v83; // eax + const char *v84; // esi + char i15; // dl + int v86; // ecx + int v87; // eax + int v88; // ecx + int v89; // esi + int v90; // eax + int v91; // eax + int i24; // eax + int v93; // eax + int v94; // eax + const char *v95; // esi + char i14; // dl + int v97; // ecx + int v98; // eax + const char *v99; // esi + char v100; // dl + int v101; // eax + int v102; // ecx + int v103; // eax + _DWORD *v104; // eax + int v105; // edx + int v106; // eax + const char *v107; // esi + char i28; // dl + int v109; // ecx + int v110; // eax + int v111; // eax + const char *v112; // esi + char i27; // dl + int v114; // ecx + int v115; // eax + int v116; // eax + const char *v117; // esi + char i26; // dl + int v119; // ecx + int v120; // eax + int v121; // eax + const char *v122; // esi + char i25; // dl + int v124; // ecx + int v125; // eax + int v126; // edi + char *v127; // esi + int v128; // eax + char *v129; // edi + int v130; // ecx + char v131; // dl + int v132; // eax + int v133; // eax + const char *v134; // esi + char i10; // dl + int v136; // ecx + int v137; // eax + int v138; // eax + const char *v139; // esi + char i8; // dl + int v141; // ecx + int v142; // eax + int v143; // eax + const char *v144; // esi + char i7; // dl + int v146; // ecx + int v147; // eax + int v148; // eax + const char *v149; // esi + char i5; // dl + int v151; // ecx + int v152; // eax + int v153; // eax + const char *v154; // esi + char i6; // dl + int v156; // ecx + int v157; // eax + int v158; // eax + const char *v159; // esi + char i4; // dl + int v161; // ecx + int v162; // eax + int v163; // eax + const char *v164; // esi + char i3; // dl + int v166; // ecx + int v167; // eax + int v168; // eax + const char *v169; // esi + char i1; // dl + int v171; // ecx + int v172; // eax + int v173; // eax + const char *v174; // esi + char i2; // dl + int v176; // ecx + int v177; // eax + int v178; // eax + const char *v179; // esi + char nn; // dl + int v181; // ecx + int v182; // eax + int v183; // eax + const char *v184; // esi + char mm; // dl + int v186; // ecx + int v187; // eax + int v188; // eax + const char *v189; // esi + char ii; // dl + int v191; // ecx + int v192; // eax + int v193; // eax + const char *v194; // esi + char kk; // dl + int v196; // ecx + int v197; // eax + int v198; // eax + const char *v199; // esi + char n; // dl + int v201; // ecx + int v202; // eax + int v203; // eax + const char *v204; // esi + char m; // dl + int v206; // ecx + int v207; // eax + int v208; // eax + const char *v209; // esi + char j; // dl + int v211; // ecx + int v212; // eax + int v213; // eax + int v214; // eax + char *v215; // edi + int v216; // ecx + char *v217; // esi + int v218; // eax + char *v219; // edi + int v220; // ecx + char v221; // dl + int v222; // eax + const char *v223; // esi + int v224; // eax + char i30; // dl + int v226; // ecx + int v227; // eax + const char *v228; // esi + int v229; // eax + char i29; // dl + int v231; // ecx + int v232; // eax + int v233; // eax + const char *v234; // esi + char i; // cl + int v236; // edx + int v237; // eax + int v238; // esi + int v239; // edi + char *v240; // ecx + int v241; // eax + int v242; // eax + int v243; // eax + int v244; // eax + int v245; // eax + int v246; // edi + int v247; // eax + char *v248; // eax + int v249; // edx + char *v250; // ecx + char *v251; // esi + unsigned int v252; // ecx + char *v253; // eax + unsigned int v254; // ecx + char *v255; // esi + int v256; // edx + int v257; // edx + _DWORD *v258; // ecx + char *v259; // kr0C_4 + char *v260; // esi + int v261; // eax + int v262; // ecx + char v263; // dl + int v264; // eax + int v265; // eax + const char *v266; // esi + char i23; // dl + int v268; // ecx + int v269; // eax + int v270; // eax + const char *v271; // esi + char i21; // dl + int v273; // ecx + int v274; // eax + int v275; // eax + const char *v276; // esi + char i22; // dl + int v278; // ecx + int v279; // eax + int v280; // eax + const char *v281; // esi + char i20; // dl + int v283; // ecx + int v284; // eax + int v285; // eax + int v286; // eax + const char *v287; // esi + char i19; // dl + int v289; // ecx + int v290; // eax + int v291; // esi + int v292; // edi + int v293; // eax + int v294; // eax + int v295; // eax + int v296; // eax + int v297; // eax + char *v298; // esi + int v299; // eax + int v300; // eax + int v301; // edi + int v302; // eax + char *v303; // edi + int v304; // ecx + char v305; // dl + int v306; // eax + int v307; // ecx + const char *v308; // esi + int v309; // eax + char v310; // dl + int v311; // ecx + int v312; // eax + char *v313; // kr10_4 + char *v314; // esi + int v315; // ecx + char v316; // dl + int v317; // eax + int v318; // eax + int v319; // eax + int v320; // eax + int v321; // eax + int v322; // edx + _DWORD *v323; // ecx + int v324; // eax + const char *v325; // esi + int v326; // eax + char jj; // dl + int v328; // ecx + int v329; // eax + const char *v330; // esi + int v331; // eax + char i9; // dl + int v333; // ecx + int v334; // eax + char *v335; // kr14_4 + char *v336; // esi + int v337; // ecx + char v338; // dl + int v339; // eax + int v340; // eax + int v341; // eax + int v342; // edi + int v343; // eax + _DWORD *v344; // eax + _DWORD *v345; // esi + int v346; // eax + int v347; // edi + char *v348; // kr18_4 + char *v349; // esi + int v350; // eax + int v351; // ecx + char v352; // dl + int v353; // eax + unsigned int v354; // esi + unsigned int v355; // edx + int v356; // ecx + int v357; // edx + char v358; // al + char *v359; // ebp + int v360; // edx + int v361; // edx + const char *v362; // esi + char k; // cl + int v364; // edx + int v365; // eax + char *v366; // kr1C_4 + char *v367; // esi + int v368; // eax + int v369; // ecx + char v370; // dl + int v371; // eax + int v372; // eax + int v373; // eax + int v374; // eax + const char *v375; // esi + char i11; // cl + int v377; // edx + int v378; // eax + int v379; // edi + char *v380; // esi + int v381; // eax + char *v382; // edi + int v383; // ecx + char v384; // dl + int v385; // eax + int v386; // eax + int v387; // eax + int v388; // eax + int v389; // eax + int v390; // eax + int v391; // eax + int v392; // eax + int v393; // eax + _DWORD *v394; // eax + int v395; // eax + const char *v396; // esi + int v397; // ecx + char v398; // dl + int v399; // eax + int v400; // eax + const char *v401; // esi + int v402; // ecx + char v403; // dl + int v404; // eax + int v405; // edx + int v406; // eax + int v407; // ecx + int v408; // ecx + int v409; // edi + int v410; // eax + _DWORD *v411; // eax + int i18; // edx + int v413; // eax + int v414; // eax + int v415; // eax + int v416; // eax + int v417; // eax + int v418; // eax + int v419; // eax + int v420; // eax + int v421; // eax + bool v422; // zf + int v423; // eax + int v424; // ecx + int v425; // eax + char v426; // al + int v427; // eax + int v428; // eax + int v429; // eax + int v430; // eax + int v431; // eax + const char *v432; // edi + int v433; // ecx + char v434; // dl + int v435; // eax + unsigned int v436; // kr04_4 + int v437; // eax + char *v438; // edi + int v439; // ecx + char v440; // dl + int v441; // eax + int v442; // eax + const char *v443; // edi + int v444; // ecx + char v445; // dl + int v446; // eax + _DWORD *v447; // eax + int v448; // edi + int v449; // edx + int *v450; // edx + int v451; // edi + int v452; // edx + _DWORD *v453; // eax + int v454; // edx + int v455; // eax + int v456; // edi + int v457; // eax + _DWORD *v458; // esi + int v459; // eax + _DWORD *v460; // edi + char *v461; // esi + unsigned int v462; // kr08_4 + int v463; // edx + char v464; // cl + int v465; // eax + int v466; // eax + char v467; // al + int v468; // eax + int v469; // eax + const char *v470; // esi + int v471; // edx + char v472; // cl + int v473; // eax + int v474; // eax + int v475; // eax + int v476; // eax + _DWORD *v477; // esi + _DWORD *v478; // eax + int *i31; // edi + int v480; // eax + int v481; // edx + int v482; // eax + int v483; // eax + int v484; // eax + int v485; // eax + int v486; // eax + int v487; // edx + int v488; // eax + int v489; // eax + int v490; // eax + int v491; // eax + int v492; // eax + int v493; // eax + int v494; // eax + int v495; // eax + _DWORD *pack; // eax + int i17; // ecx + char *v498; // esi + unsigned int v499; // kr0C_4 + char v500; // di + int v501; // eax + int v502; // eax + int v503; // eax + int v504; // eax + int v505; // eax + int v506; // eax + int v507; // eax + int v508; // eax + int v509; // eax + int v510; // eax + int v511; // eax + int v512; // eax + char *Str2; // [esp+4h] [ebp-98h] + char v515; // [esp+18h] [ebp-84h] + char v516; // [esp+18h] [ebp-84h] + char v517; // [esp+18h] [ebp-84h] + char v518; // [esp+18h] [ebp-84h] + char v519; // [esp+18h] [ebp-84h] + char v520; // [esp+18h] [ebp-84h] + char v521; // [esp+18h] [ebp-84h] + char v522; // [esp+18h] [ebp-84h] + char v523; // [esp+18h] [ebp-84h] + char v524; // [esp+18h] [ebp-84h] + char v525; // [esp+18h] [ebp-84h] + char v526; // [esp+18h] [ebp-84h] + char v527; // [esp+18h] [ebp-84h] + char v528; // [esp+18h] [ebp-84h] + char v529; // [esp+18h] [ebp-84h] + unsigned int v530; // [esp+18h] [ebp-84h] + char v531; // [esp+18h] [ebp-84h] + char v532; // [esp+18h] [ebp-84h] + char v533; // [esp+18h] [ebp-84h] + char v534; // [esp+18h] [ebp-84h] + char v535; // [esp+18h] [ebp-84h] + char *v536; // [esp+1Ch] [ebp-80h] + char v537; // [esp+1Ch] [ebp-80h] + char v538; // [esp+1Ch] [ebp-80h] + char v539; // [esp+1Ch] [ebp-80h] + char v540; // [esp+1Ch] [ebp-80h] + char *v541; // [esp+1Ch] [ebp-80h] + char v542; // [esp+1Ch] [ebp-80h] + char v543; // [esp+1Ch] [ebp-80h] + char v544; // [esp+1Ch] [ebp-80h] + char v545; // [esp+1Ch] [ebp-80h] + char v546; // [esp+1Ch] [ebp-80h] + char v547; // [esp+1Ch] [ebp-80h] + char v548; // [esp+1Ch] [ebp-80h] + char v549; // [esp+1Ch] [ebp-80h] + char v550; // [esp+1Ch] [ebp-80h] + char v551; // [esp+1Ch] [ebp-80h] + char v552; // [esp+1Ch] [ebp-80h] + char v553; // [esp+1Ch] [ebp-80h] + char v554; // [esp+1Ch] [ebp-80h] + char v555; // [esp+1Ch] [ebp-80h] + char v556; // [esp+1Ch] [ebp-80h] + char v557; // [esp+1Ch] [ebp-80h] + char v558; // [esp+1Ch] [ebp-80h] + char v559; // [esp+1Ch] [ebp-80h] + char *v560; // [esp+1Ch] [ebp-80h] + char v561; // [esp+1Ch] [ebp-80h] + char v562; // [esp+1Ch] [ebp-80h] + char v563; // [esp+1Ch] [ebp-80h] + char v564; // [esp+1Ch] [ebp-80h] + char v565; // [esp+1Ch] [ebp-80h] + char v566; // [esp+1Ch] [ebp-80h] + char v567; // [esp+1Ch] [ebp-80h] + char v568; // [esp+1Ch] [ebp-80h] + char v569; // [esp+1Ch] [ebp-80h] + char *v570; // [esp+1Ch] [ebp-80h] + char v571; // [esp+1Ch] [ebp-80h] + char v572; // [esp+1Ch] [ebp-80h] + char *v573; // [esp+1Ch] [ebp-80h] + char v574; // [esp+1Ch] [ebp-80h] + char v575; // [esp+1Ch] [ebp-80h] + char *v576; // [esp+1Ch] [ebp-80h] + char v577; // [esp+1Ch] [ebp-80h] + char *v578; // [esp+1Ch] [ebp-80h] + unsigned int v579; // [esp+20h] [ebp-7Ch] + _DWORD *v580; // [esp+20h] [ebp-7Ch] + int v581; // [esp+20h] [ebp-7Ch] + int v582; // [esp+20h] [ebp-7Ch] + unsigned int *v583; // [esp+20h] [ebp-7Ch] + char v584; // [esp+20h] [ebp-7Ch] + int v585; // [esp+20h] [ebp-7Ch] + int v586; // [esp+24h] [ebp-78h] + _DWORD *v587; // [esp+24h] [ebp-78h] + int v588; // [esp+24h] [ebp-78h] + int v589; // [esp+24h] [ebp-78h] + int v590; // [esp+28h] [ebp-74h] + int v591; // [esp+28h] [ebp-74h] + int v592; // [esp+2Ch] [ebp-70h] + int *v593; // [esp+30h] [ebp-6Ch] BYREF + char *v594; // [esp+34h] [ebp-68h] + int v595[2]; // [esp+38h] [ebp-64h] BYREF + char Buffer[4]; // [esp+40h] [ebp-5Ch] BYREF + _DWORD *v597; // [esp+44h] [ebp-58h] + int v598; // [esp+48h] [ebp-54h] + int v599; // [esp+4Ch] [ebp-50h] + char v600; // [esp+50h] [ebp-4Ch] BYREF + + v3 = result; + if ( !a3 || (result = a3[1], v4 = (int)a3, result > 1) || (v5 = *(_DWORD *)(v3 + 284), v5 > 1024) ) + { + *(_DWORD *)(v3 + 280) = 1; + return result; + } + v6 = *(_DWORD *)(v3 + 300); + v593 = a3; + a3[1] = result + 1; + v536 = (char *)v6; + v594 = (char *)v6; + v7 = *(_DWORD *)(v3 + 280); + *(_DWORD *)(v3 + 284) = v5 + 1; + *(_DWORD *)(v3 + 300) = &v593; + if ( v7 ) + goto LABEL_21; + v8 = *a3; + v579 = *(_DWORD *)v4; + switch ( *(_DWORD *)v4 ) + { + case 0: + v215 = *(char **)(v4 + 8); + if ( (a2 & 4) != 0 ) + { + v354 = (unsigned int)&v215[*(_DWORD *)(v4 + 12)]; + if ( v354 <= (unsigned int)v215 ) + goto LABEL_21; + v570 = (char *)v4; +LABEL_506: + v358 = *v215; + if ( (int)(v354 - (_DWORD)v215) <= 3 ) + goto LABEL_502; + if ( v358 != 95 ) + goto LABEL_502; + if ( v215[1] != 95 ) + goto LABEL_502; + if ( v215[2] != 85 ) + goto LABEL_502; + v359 = v215 + 3; + if ( v354 <= (unsigned int)(v215 + 3) ) + goto LABEL_502; + v530 = v579; + while ( 1 ) + { + v361 = *v359; + if ( (unsigned __int8)(v361 - 48) <= 9u ) + { + v360 = v361 - 48; + } + else if ( (unsigned __int8)(v361 - 65) > 5u ) + { + if ( (unsigned __int8)(v361 - 97) > 5u ) + { + if ( v354 > (unsigned int)v359 && v530 <= 0xFF && (_BYTE)v361 == 95 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v511 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v511); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v512 = *(_DWORD *)(v3 + 256); + v215 = v359; + *(_DWORD *)(v3 + 256) = v512 + 1; + *(_BYTE *)(v3 + v512) = v530; + *(_BYTE *)(v3 + 260) = v530; + goto LABEL_505; + } +LABEL_502: + v355 = *(_DWORD *)(v3 + 256); + v356 = v355 + 1; + if ( v355 == 255 ) + { + v357 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v529 = v358; + (*(void (__thiscall **)(int, int, int, int))(v3 + 264))(v356, v3, 255, v357); + v355 = v579; + v358 = v529; + v356 = 1; + ++*(_DWORD *)(v3 + 296); + } + *(_DWORD *)(v3 + 256) = v356; + *(_BYTE *)(v3 + v355) = v358; + *(_BYTE *)(v3 + 260) = v358; +LABEL_505: + if ( v354 <= (unsigned int)++v215 ) + { + v4 = (int)v570; + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + goto LABEL_506; + } + v360 = v361 - 87; + } + else + { + v360 = v361 - 55; + } + ++v359; + v530 = v360 + 16 * v530; + if ( (char *)v354 == v359 ) + goto LABEL_502; + } + } + v216 = *(_DWORD *)(v4 + 12); + if ( v216 ) + { + v217 = *(char **)(v4 + 8); + v218 = *(_DWORD *)(v3 + 256); + v219 = &v215[v216]; + do + { + v221 = *v217; + if ( v218 == 255 ) + { + v222 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v521 = v221; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v222); + v220 = v579; + v221 = v521; + v218 = 1; + ++*(_DWORD *)(v3 + 296); + } + else + { + v220 = v218++; + } + ++v217; + *(_DWORD *)(v3 + 256) = v218; + *(_BYTE *)(v3 + v220) = v221; + *(_BYTE *)(v3 + 260) = v221; + } + while ( v219 != v217 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 1: + case 2: + d_print_comp(*(_DWORD *)(v4 + 8), a2); + if ( (a2 & 4) != 0 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v26 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v26); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v27 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v27 + 1; + *(_BYTE *)(v3 + v27) = 46; + *(_BYTE *)(v3 + 260) = 46; + } + else + { + v395 = *(_DWORD *)(v3 + 256); + v396 = "::"; + do + { + v398 = *v396; + if ( v395 == 255 ) + { + v399 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v571 = v398; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v399); + ++*(_DWORD *)(v3 + 296); + v398 = v571; + v397 = 0; + v395 = 1; + } + else + { + v397 = v395++; + } + ++v396; + *(_DWORD *)(v3 + 256) = v395; + *(_BYTE *)(v3 + v397) = v398; + *(_BYTE *)(v3 + 260) = v398; + } + while ( v396 != "" ); + } + v28 = *(int **)(v4 + 12); + if ( *v28 == 71 ) + { + v431 = *(_DWORD *)(v3 + 256); + v432 = "{default arg#"; + do + { + v434 = *v432; + if ( v431 == 255 ) + { + v435 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v574 = v434; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v435); + ++*(_DWORD *)(v3 + 296); + v434 = v574; + v433 = 0; + v431 = 1; + } + else + { + v433 = v431++; + } + *(_DWORD *)(v3 + 256) = v431; + ++v432; + *(_BYTE *)(v3 + v433) = v434; + *(_BYTE *)(v3 + 260) = v434; + } + while ( v432 != "" ); + sprintf(Buffer, "%d", v28[3] + 1); + v436 = strlen(Buffer) + 1; + if ( v436 != 1 ) + { + v437 = *(_DWORD *)(v3 + 256); + v438 = Buffer; + do + { + v440 = *v438; + if ( v437 == 255 ) + { + v441 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v584 = v440; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v441); + ++*(_DWORD *)(v3 + 296); + v440 = v584; + v439 = 0; + v437 = 1; + } + else + { + v439 = v437++; + } + *(_DWORD *)(v3 + 256) = v437; + ++v438; + *(_BYTE *)(v3 + v439) = v440; + *(_BYTE *)(v3 + 260) = v440; + } + while ( &Buffer[v436 - 1] != v438 ); + } + v442 = *(_DWORD *)(v3 + 256); + v443 = "}::"; + do + { + v445 = *v443; + if ( v442 == 255 ) + { + v446 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v575 = v445; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v446); + ++*(_DWORD *)(v3 + 296); + v445 = v575; + v444 = 0; + v442 = 1; + } + else + { + v444 = v442++; + } + *(_DWORD *)(v3 + 256) = v442; + ++v443; + *(_BYTE *)(v3 + v444) = v445; + *(_BYTE *)(v3 + 260) = v445; + } + while ( v443 != "" ); + v28 = (int *)v28[2]; + } + goto LABEL_604; + case 3: + v247 = *(_DWORD *)(v3 + 276); + *(_DWORD *)(v3 + 276) = 0; + v590 = v247; + v583 = *(unsigned int **)(v4 + 8); + if ( !v583 ) + goto LABEL_684; + v248 = Buffer; + v589 = 0; + v249 = *(_DWORD *)(v3 + 272); + v250 = 0; + while ( 2 ) + { + *(_DWORD *)v248 = v250; + v251 = v248; + *((_DWORD *)v248 + 2) = 0; + v252 = *v583; + ++v589; + *((_DWORD *)v248 + 1) = v583; + *((_DWORD *)v248 + 3) = v249; + if ( v252 == 77 ) + goto LABEL_485; + if ( v252 > 0x4D ) + { + if ( v252 - 79 > 1 ) + { + *(_DWORD *)(v3 + 276) = v248; +LABEL_337: + if ( *v583 == 4 ) + { + v595[0] = v249; + *(_DWORD *)(v3 + 272) = v595; + v595[1] = (int)v583; + } +LABEL_339: + d_print_comp(*(_DWORD *)(v4 + 12), a2); + if ( *v583 == 4 ) + *(_DWORD *)(v3 + 272) = v595[0]; + v255 = &Buffer[16 * v589]; + do + { + if ( !*((_DWORD *)v255 - 2) ) + { + v256 = *(_DWORD *)(v3 + 256); + if ( v256 == 255 ) + { + v257 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v257); + ++*(_DWORD *)(v3 + 296); + v256 = 0; + } + *(_DWORD *)(v3 + 256) = v256 + 1; + v258 = (_DWORD *)*((_DWORD *)v255 - 3); + *(_BYTE *)(v3 + v256) = 32; + *(_BYTE *)(v3 + 260) = 32; + d_print_mod(v3, a2, v258); + } + v255 -= 16; + } + while ( Buffer != v255 ); + *(_DWORD *)(v3 + 276) = v590; + goto LABEL_348; + } + } + else if ( v252 - 28 > 4 ) + { + *(_DWORD *)(v3 + 276) = v248; + if ( v252 == 2 ) + { + v583 = (unsigned int *)v583[3]; + if ( *v583 != 71 || (v583 = (unsigned int *)v583[2]) != 0 ) + { + v253 = &Buffer[16 * v589]; + while ( 1 ) + { + v254 = *v583; + if ( *v583 != 77 ) + { + if ( *v583 > 0x4D ) + { + if ( v254 - 79 > 1 ) + goto LABEL_339; + } + else if ( v254 - 28 > 4 ) + { + goto LABEL_337; + } + } + if ( v589 == 4 ) + break; + *(_DWORD *)(v3 + 276) = v253; + qmemcpy(v253, v253 - 16, 0x10u); + *((_DWORD *)v253 - 2) = 0; + *(_DWORD *)v253 = v253 - 16; + v253 += 16; + *((_DWORD *)v253 - 7) = v583; + *((_DWORD *)v253 - 5) = v249; + ++v589; + v583 = (unsigned int *)v583[2]; + } + } +LABEL_684: + *(_DWORD *)(v3 + 280) = 1; + goto LABEL_348; + } + goto LABEL_337; + } +LABEL_485: + v583 = (unsigned int *)v583[2]; + if ( !v583 ) + { + *(_DWORD *)(v3 + 276) = v248; + goto LABEL_684; + } + v248 += 16; + if ( v589 != 4 ) + { + v250 = v251; + continue; + } + break; + } + *(_DWORD *)(v3 + 276) = v251; + *(_DWORD *)(v3 + 280) = 1; +LABEL_348: + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 4: + v238 = *(_DWORD *)(v3 + 328); + v239 = *(_DWORD *)(v3 + 276); + *(_DWORD *)(v3 + 328) = v4; + *(_DWORD *)(v3 + 276) = 0; + v240 = *(char **)(v4 + 8); + if ( (a2 & 4) == 0 + || *(_DWORD *)v240 + || *((_DWORD *)v240 + 3) != 6 + || (v578 = *(char **)(v4 + 8), v482 = strncmp(*((const char **)v240 + 2), "JArray", 6u), v240 = v578, v482) ) + { + d_print_comp(v240, a2); + if ( *(_BYTE *)(v3 + 260) == 60 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v392 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v392); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v393 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v393 + 1; + *(_BYTE *)(v3 + v393) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + v241 = *(_DWORD *)(v3 + 256); + if ( v241 == 255 ) + { + v242 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v242); + ++*(_DWORD *)(v3 + 296); + v241 = 0; + } + *(_DWORD *)(v3 + 256) = v241 + 1; + *(_BYTE *)(v3 + v241) = 60; + *(_BYTE *)(v3 + 260) = 60; + d_print_comp(*(_DWORD *)(v4 + 12), a2); + if ( *(_BYTE *)(v3 + 260) == 62 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v390 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v390); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v391 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v391 + 1; + *(_BYTE *)(v3 + v391) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + v243 = *(_DWORD *)(v3 + 256); + if ( v243 == 255 ) + { + v244 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v244); + ++*(_DWORD *)(v3 + 296); + v243 = 0; + } + *(_DWORD *)(v3 + 256) = v243 + 1; + *(_BYTE *)(v3 + v243) = 62; + *(_BYTE *)(v3 + 260) = 62; + } + else + { + d_print_comp(*(_DWORD *)(v4 + 12), a2); + d_append_buffer(v3, "[]", 2); + } + v245 = (int)v594; + *(_DWORD *)(v3 + 276) = v239; + v246 = *(_DWORD *)(v3 + 284); + *(_DWORD *)(v3 + 328) = v238; + v536 = (char *)v245; + v5 = v246 - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 5: + if ( *(_DWORD *)(v3 + 288) ) + { + v233 = *(_DWORD *)(v3 + 256); + v234 = "auto:"; + for ( i = 97; ; i = *v234 ) + { + if ( v233 == 255 ) + { + v237 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v522 = i; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v237); + ++*(_DWORD *)(v3 + 296); + i = v522; + v236 = 0; + v233 = 1; + } + else + { + v236 = v233++; + } + ++v234; + *(_DWORD *)(v3 + 256) = v233; + *(_BYTE *)(v3 + v236) = i; + *(_BYTE *)(v3 + 260) = i; + if ( v234 == "" ) + break; + } + sprintf(Buffer, "%d", *(_DWORD *)(v4 + 8) + 1); + v348 = &Buffer[strlen(Buffer)]; + if ( v348 != Buffer ) + { + v349 = Buffer; + v350 = *(_DWORD *)(v3 + 256); + do + { + v352 = *v349; + if ( v350 == 255 ) + { + v353 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v528 = v352; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v353); + ++*(_DWORD *)(v3 + 296); + v352 = v528; + v351 = 0; + v350 = 1; + } + else + { + v351 = v350++; + } + ++v349; + *(_DWORD *)(v3 + 256) = v350; + *(_BYTE *)(v3 + v351) = v352; + *(_BYTE *)(v3 + 260) = v352; + } + while ( v348 != v349 ); + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v344 = d_lookup_template_argument_isra_0(v3, (int *)(v4 + 8)); + if ( v344 ) + { + if ( *v344 != 47 + || (v454 = *(_DWORD *)(v3 + 292), v454 < 0) + || (v344 = d_index_template_argument_part_0(v344, v454)) != 0 ) + { + v345 = *(_DWORD **)(v3 + 272); + *(_DWORD *)(v3 + 272) = *v345; + d_print_comp(v344, a2); + v346 = (int)v594; + v347 = *(_DWORD *)(v3 + 284); + *(_DWORD *)(v3 + 272) = v345; + v536 = (char *)v346; + v5 = v347 - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + goto LABEL_679; + case 6: + v560 = *(char **)(v4 + 8); + v208 = *(_DWORD *)(v3 + 256); + if ( v560 ) + { + v209 = "parm#"; + for ( j = 123; ; j = *v209++ ) + { + if ( v208 == 255 ) + { + v212 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v520 = j; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v212); + ++*(_DWORD *)(v3 + 296); + j = v520; + v211 = 0; + v208 = 1; + } + else + { + v211 = v208++; + } + *(_DWORD *)(v3 + 256) = v208; + *(_BYTE *)(v3 + v211) = j; + *(_BYTE *)(v3 + 260) = j; + if ( v209 == "" ) + break; + } + sprintf(Buffer, "%d", v560); + v366 = &Buffer[strlen(Buffer)]; + if ( v366 != Buffer ) + { + v367 = Buffer; + v368 = *(_DWORD *)(v3 + 256); + do + { + v370 = *v367; + if ( v368 == 255 ) + { + v371 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v532 = v370; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v371); + ++*(_DWORD *)(v3 + 296); + v370 = v532; + v369 = 0; + v368 = 1; + } + else + { + v369 = v368++; + } + ++v367; + *(_DWORD *)(v3 + 256) = v368; + *(_BYTE *)(v3 + v369) = v370; + *(_BYTE *)(v3 + 260) = v370; + } + while ( v366 != v367 ); + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v372 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v372); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v373 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v373 + 1; + *(_BYTE *)(v3 + v373) = 125; + v374 = (int)v594; + *(_BYTE *)(v3 + 260) = 125; + v536 = (char *)v374; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + v362 = "this"; + for ( k = 116; ; k = *v362 ) + { + if ( v208 == 255 ) + { + v365 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v531 = k; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v365); + ++*(_DWORD *)(v3 + 296); + k = v531; + v364 = 0; + v208 = 1; + } + else + { + v364 = v208++; + } + ++v362; + *(_DWORD *)(v3 + 256) = v208; + *(_BYTE *)(v3 + v364) = k; + *(_BYTE *)(v3 + 260) = k; + if ( v362 == "" ) + break; + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 7: + goto LABEL_47; + case 8: + v213 = *(_DWORD *)(v3 + 256); + if ( v213 == 255 ) + { + v214 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v214); + ++*(_DWORD *)(v3 + 296); + v213 = 0; + } + *(_DWORD *)(v3 + 256) = v213 + 1; + *(_BYTE *)(v3 + v213) = 126; + *(_BYTE *)(v3 + 260) = 126; + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 9: + v203 = *(_DWORD *)(v3 + 256); + v204 = "table for "; + for ( m = 118; ; m = *v204++ ) + { + if ( v203 == 255 ) + { + v207 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v559 = m; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v207); + ++*(_DWORD *)(v3 + 296); + m = v559; + v206 = 0; + v203 = 1; + } + else + { + v206 = v203++; + } + *(_DWORD *)(v3 + 256) = v203; + *(_BYTE *)(v3 + v206) = m; + *(_BYTE *)(v3 + 260) = m; + if ( v204 == "" ) + break; + } + goto LABEL_427; + case 0xA: + v198 = *(_DWORD *)(v3 + 256); + v199 = "TT for "; + for ( n = 86; ; n = *v199++ ) + { + if ( v198 == 255 ) + { + v202 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v558 = n; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v202); + ++*(_DWORD *)(v3 + 296); + n = v558; + v201 = 0; + v198 = 1; + } + else + { + v201 = v198++; + } + *(_DWORD *)(v3 + 256) = v198; + *(_BYTE *)(v3 + v201) = n; + *(_BYTE *)(v3 + 260) = n; + if ( v199 == "" ) + break; + } + goto LABEL_427; + case 0xB: + v188 = *(_DWORD *)(v3 + 256); + v189 = "onstruction vtable for "; + for ( ii = 99; ; ii = *v189++ ) + { + if ( v188 == 255 ) + { + v192 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v556 = ii; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v192); + ++*(_DWORD *)(v3 + 296); + ii = v556; + v191 = 0; + v188 = 1; + } + else + { + v191 = v188++; + } + *(_DWORD *)(v3 + 256) = v188; + *(_BYTE *)(v3 + v191) = ii; + *(_BYTE *)(v3 + 260) = ii; + if ( v189 == "" ) + break; + } + v325 = "-in-"; + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v326 = *(_DWORD *)(v3 + 256); + for ( jj = 45; ; jj = *v325 ) + { + if ( v326 == 255 ) + { + v329 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v568 = jj; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v329); + ++*(_DWORD *)(v3 + 296); + jj = v568; + v328 = 0; + v326 = 1; + } + else + { + v328 = v326++; + } + ++v325; + *(_DWORD *)(v3 + 256) = v326; + *(_BYTE *)(v3 + v328) = jj; + *(_BYTE *)(v3 + 260) = jj; + if ( v325 == "" ) + break; + } + goto LABEL_47; + case 0xC: + v193 = *(_DWORD *)(v3 + 256); + v194 = "ypeinfo for "; + for ( kk = 116; ; kk = *v194++ ) + { + if ( v193 == 255 ) + { + v197 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v557 = kk; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v197); + ++*(_DWORD *)(v3 + 296); + kk = v557; + v196 = 0; + v193 = 1; + } + else + { + v196 = v193++; + } + *(_DWORD *)(v3 + 256) = v193; + *(_BYTE *)(v3 + v196) = kk; + *(_BYTE *)(v3 + 260) = kk; + if ( v194 == "" ) + break; + } + goto LABEL_427; + case 0xD: + v183 = *(_DWORD *)(v3 + 256); + v184 = "ypeinfo name for "; + for ( mm = 116; ; mm = *v184++ ) + { + if ( v183 == 255 ) + { + v187 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v555 = mm; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v187); + ++*(_DWORD *)(v3 + 296); + mm = v555; + v186 = 0; + v183 = 1; + } + else + { + v186 = v183++; + } + *(_DWORD *)(v3 + 256) = v183; + *(_BYTE *)(v3 + v186) = mm; + *(_BYTE *)(v3 + 260) = mm; + if ( v184 == "" ) + break; + } + goto LABEL_427; + case 0xE: + v178 = *(_DWORD *)(v3 + 256); + v179 = "ypeinfo fn for "; + for ( nn = 116; ; nn = *v179++ ) + { + if ( v178 == 255 ) + { + v182 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v554 = nn; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v182); + ++*(_DWORD *)(v3 + 296); + nn = v554; + v181 = 0; + v178 = 1; + } + else + { + v181 = v178++; + } + *(_DWORD *)(v3 + 256) = v178; + *(_BYTE *)(v3 + v181) = nn; + *(_BYTE *)(v3 + 260) = nn; + if ( v179 == "" ) + break; + } + goto LABEL_427; + case 0xF: + v168 = *(_DWORD *)(v3 + 256); + v169 = "on-virtual thunk to "; + for ( i1 = 110; ; i1 = *v169++ ) + { + if ( v168 == 255 ) + { + v172 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v552 = i1; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v172); + ++*(_DWORD *)(v3 + 296); + i1 = v552; + v171 = 0; + v168 = 1; + } + else + { + v171 = v168++; + } + *(_DWORD *)(v3 + 256) = v168; + *(_BYTE *)(v3 + v171) = i1; + *(_BYTE *)(v3 + 260) = i1; + if ( v169 == "" ) + break; + } + goto LABEL_427; + case 0x10: + v173 = *(_DWORD *)(v3 + 256); + v174 = "irtual thunk to "; + for ( i2 = 118; ; i2 = *v174++ ) + { + if ( v173 == 255 ) + { + v177 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v553 = i2; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v177); + ++*(_DWORD *)(v3 + 296); + i2 = v553; + v176 = 0; + v173 = 1; + } + else + { + v176 = v173++; + } + *(_DWORD *)(v3 + 256) = v173; + *(_BYTE *)(v3 + v176) = i2; + *(_BYTE *)(v3 + 260) = i2; + if ( v174 == "" ) + break; + } + goto LABEL_427; + case 0x11: + v163 = *(_DWORD *)(v3 + 256); + v164 = "ovariant return thunk to "; + for ( i3 = 99; ; i3 = *v164++ ) + { + if ( v163 == 255 ) + { + v167 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v551 = i3; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v167); + ++*(_DWORD *)(v3 + 296); + i3 = v551; + v166 = 0; + v163 = 1; + } + else + { + v166 = v163++; + } + *(_DWORD *)(v3 + 256) = v163; + *(_BYTE *)(v3 + v166) = i3; + *(_BYTE *)(v3 + 260) = i3; + if ( v164 == "" ) + break; + } + goto LABEL_427; + case 0x12: + v158 = *(_DWORD *)(v3 + 256); + v159 = "ava Class for "; + for ( i4 = 106; ; i4 = *v159++ ) + { + if ( v158 == 255 ) + { + v162 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v550 = i4; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v162); + ++*(_DWORD *)(v3 + 296); + i4 = v550; + v161 = 0; + v158 = 1; + } + else + { + v161 = v158++; + } + *(_DWORD *)(v3 + 256) = v158; + *(_BYTE *)(v3 + v161) = i4; + *(_BYTE *)(v3 + 260) = i4; + if ( v159 == "" ) + break; + } + goto LABEL_427; + case 0x13: + v148 = *(_DWORD *)(v3 + 256); + v149 = "uard variable for "; + for ( i5 = 103; ; i5 = *v149++ ) + { + if ( v148 == 255 ) + { + v152 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v548 = i5; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v152); + ++*(_DWORD *)(v3 + 296); + i5 = v548; + v151 = 0; + v148 = 1; + } + else + { + v151 = v148++; + } + *(_DWORD *)(v3 + 256) = v148; + *(_BYTE *)(v3 + v151) = i5; + *(_BYTE *)(v3 + 260) = i5; + if ( v149 == "" ) + break; + } + goto LABEL_427; + case 0x14: + v153 = *(_DWORD *)(v3 + 256); + v154 = "LS init function for "; + for ( i6 = 84; ; i6 = *v154++ ) + { + if ( v153 == 255 ) + { + v157 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v549 = i6; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v157); + ++*(_DWORD *)(v3 + 296); + i6 = v549; + v156 = 0; + v153 = 1; + } + else + { + v156 = v153++; + } + *(_DWORD *)(v3 + 256) = v153; + *(_BYTE *)(v3 + v156) = i6; + *(_BYTE *)(v3 + 260) = i6; + if ( v154 == "" ) + break; + } + goto LABEL_427; + case 0x15: + v143 = *(_DWORD *)(v3 + 256); + v144 = "LS wrapper function for "; + for ( i7 = 84; ; i7 = *v144++ ) + { + if ( v143 == 255 ) + { + v147 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v547 = i7; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v147); + ++*(_DWORD *)(v3 + 296); + i7 = v547; + v146 = 0; + v143 = 1; + } + else + { + v146 = v143++; + } + *(_DWORD *)(v3 + 256) = v143; + *(_BYTE *)(v3 + v146) = i7; + *(_BYTE *)(v3 + 260) = i7; + if ( v144 == "" ) + break; + } + goto LABEL_427; + case 0x16: + v138 = *(_DWORD *)(v3 + 256); + v139 = "eference temporary #"; + for ( i8 = 114; ; i8 = *v139++ ) + { + if ( v138 == 255 ) + { + v142 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v546 = i8; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v142); + ++*(_DWORD *)(v3 + 296); + i8 = v546; + v141 = 0; + v138 = 1; + } + else + { + v141 = v138++; + } + *(_DWORD *)(v3 + 256) = v138; + *(_BYTE *)(v3 + v141) = i8; + *(_BYTE *)(v3 + 260) = i8; + if ( v139 == "" ) + break; + } + v330 = " for "; + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v331 = *(_DWORD *)(v3 + 256); + for ( i9 = 32; ; i9 = *v330 ) + { + if ( v331 == 255 ) + { + v334 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v569 = i9; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v334); + ++*(_DWORD *)(v3 + 296); + i9 = v569; + v333 = 0; + v331 = 1; + } + else + { + v333 = v331++; + } + ++v330; + *(_DWORD *)(v3 + 256) = v331; + *(_BYTE *)(v3 + v333) = i9; + *(_BYTE *)(v3 + 260) = i9; + if ( v330 == "" ) + break; + } + goto LABEL_427; + case 0x17: + v133 = *(_DWORD *)(v3 + 256); + v134 = "idden alias for "; + for ( i10 = 104; ; i10 = *v134++ ) + { + if ( v133 == 255 ) + { + v137 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v545 = i10; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v137); + ++*(_DWORD *)(v3 + 296); + i10 = v545; + v136 = 0; + v133 = 1; + } + else + { + v136 = v133++; + } + *(_DWORD *)(v3 + 256) = v133; + *(_BYTE *)(v3 + v136) = i10; + *(_BYTE *)(v3 + 260) = i10; + if ( v134 == "" ) + break; + } + goto LABEL_427; + case 0x18: + v126 = *(_DWORD *)(v4 + 12); + v127 = *(char **)(v4 + 8); + if ( v126 ) + { + v128 = *(_DWORD *)(v3 + 256); + v129 = &v127[v126]; + do + { + v131 = *v127; + if ( v128 == 255 ) + { + v132 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v519 = v131; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v132); + ++*(_DWORD *)(v3 + 296); + v131 = v519; + v130 = 0; + v128 = 1; + } + else + { + v130 = v128++; + } + ++v127; + *(_DWORD *)(v3 + 256) = v128; + *(_BYTE *)(v3 + v130) = v131; + *(_BYTE *)(v3 + 260) = v131; + } + while ( v129 != v127 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x19: + case 0x1A: + case 0x1B: + v23 = *(int ***)(v3 + 276); + v24 = v23; + if ( !v23 ) + goto LABEL_633; + while ( 2 ) + { + if ( v24[2] ) + goto LABEL_33; + v25 = *v24[1]; + if ( (unsigned int)(v25 - 25) > 2 ) + { + v23 = *(int ***)(v3 + 276); + v7 = 0; +LABEL_633: + v580 = (_DWORD *)v4; + goto LABEL_70; + } + if ( v579 != v25 ) + { +LABEL_33: + v24 = (int **)*v24; + if ( !v24 ) + { + v580 = (_DWORD *)v4; + v23 = *(int ***)(v3 + 276); + goto LABEL_70; + } + continue; + } + break; + } +LABEL_427: + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x25: + case 0x26: + case 0x4D: + case 0x4F: + case 0x50: + v21 = 0; + goto LABEL_23; + case 0x23: + case 0x24: + v580 = *(_DWORD **)(v4 + 8); + v43 = *v580; + if ( *(_DWORD *)(v3 + 288) ) + goto LABEL_65; + v7 = 0; + if ( v43 != 5 ) + goto LABEL_65; + v447 = *(_DWORD **)(v3 + 304); + v448 = *(_DWORD *)(v3 + 308); + if ( v448 <= 0 ) + goto LABEL_706; + v592 = v5; + v449 = 0; + break; + case 0x27: + v54 = *(_DWORD *)(v4 + 8); + if ( (a2 & 4) != 0 ) + { + v379 = *(_DWORD *)(v54 + 12); + v380 = *(char **)(v54 + 8); + if ( v379 ) + { + v381 = *(_DWORD *)(v3 + 256); + v382 = &v380[v379]; + do + { + v384 = *v380; + if ( v381 == 255 ) + { + v385 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v534 = v384; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v385); + ++*(_DWORD *)(v3 + 296); + v384 = v534; + v383 = 0; + v381 = 1; + } + else + { + v383 = v381++; + } + ++v380; + *(_DWORD *)(v3 + 256) = v381; + *(_BYTE *)(v3 + v383) = v384; + *(_BYTE *)(v3 + 260) = v384; + } + while ( v382 != v380 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + } + else + { + v55 = *(_DWORD *)(v54 + 4); + v56 = *(char **)v54; + if ( v55 ) + { + v57 = *(_DWORD *)(v3 + 256); + v58 = &v56[v55]; + do + { + v60 = *v56; + if ( v57 == 255 ) + { + v61 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v515 = v60; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v61); + ++*(_DWORD *)(v3 + 296); + v60 = v515; + v59 = 0; + v57 = 1; + } + else + { + v59 = v57++; + } + ++v56; + *(_DWORD *)(v3 + 256) = v57; + *(_BYTE *)(v3 + v59) = v60; + *(_BYTE *)(v3 + 260) = v60; + } + while ( v58 != v56 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + } + goto LABEL_21; + case 0x28: + goto LABEL_427; + case 0x29: + v62 = *(int ***)(v3 + 276); + v63 = a2 & 0xFFFFFF9F; + if ( (a2 & 0x20) == 0 ) + { + v64 = *(_DWORD *)(v4 + 8); + if ( v64 && (a2 & 0x40) == 0 ) + { + *(_DWORD *)Buffer = *(_DWORD *)(v3 + 276); + *(_DWORD *)(v3 + 276) = Buffer; + v428 = *(_DWORD *)(v3 + 272); + v597 = (_DWORD *)v4; + v599 = v428; + v598 = 0; + d_print_comp(v64, a2 & 0xFFFFFF9F); + v422 = v598 == 0; + *(_DWORD *)(v3 + 276) = *(_DWORD *)Buffer; + if ( !v422 ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v429 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v429); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v430 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v430 + 1; + *(_BYTE *)(v3 + v430) = 32; + v62 = *(int ***)(v3 + 276); + *(_BYTE *)(v3 + 260) = 32; + } + d_print_function_type_isra_0(v3, v63, (int *)(v4 + 12), v62); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + d_print_function_type_isra_0(v3, a2 & 0xFFFFFF9F, (int *)(v4 + 12), *(int ***)(v3 + 276)); + v424 = *(_DWORD *)(v4 + 8); + if ( v424 ) + d_print_comp(v424, v63); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x2A: + v44 = *(_DWORD **)(v3 + 276); + v597 = (_DWORD *)v4; + v45 = 1; + v46 = v44; + v587 = v44; + *(_DWORD *)Buffer = v44; + v47 = Buffer; + *(_DWORD *)(v3 + 276) = Buffer; + v48 = *(_DWORD *)(v3 + 272); + v598 = 0; + v599 = v48; + v49 = v46; + if ( v46 ) + { + while ( (unsigned int)(*(_DWORD *)v49[1] - 25) <= 2 ) + { + if ( !v49[2] ) + { + if ( v45 > 3 ) + { + *(_DWORD *)(v3 + 280) = 1; +LABEL_84: + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v50 = v45++; + v50 *= 16; + *(_DWORD *)&Buffer[v50] = *v49; + v51 = &Buffer[v50]; + *((_DWORD *)v51 + 1) = v49[1]; + *((_DWORD *)v51 + 2) = v49[2]; + *((_DWORD *)v51 + 3) = v49[3]; + *(_DWORD *)&Buffer[v50] = v47; + v47 = &Buffer[v50]; + *(_DWORD *)(v3 + 276) = &Buffer[v50]; + v49[2] = 1; + } + v49 = (_DWORD *)*v49; + if ( !v49 ) + break; + } + d_print_comp(*(_DWORD *)(v4 + 12), a2); + *(_DWORD *)(v3 + 276) = v587; + if ( v598 ) + goto LABEL_84; + if ( v45 != 1 ) + { + v52 = &Buffer[16 * v45]; + do + { + v53 = (_DWORD *)*((_DWORD *)v52 - 3); + v52 -= 16; + d_print_mod(v3, a2, v53); + } + while ( &v600 != v52 ); + } + } + else + { + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v422 = v598 == 0; + *(_DWORD *)(v3 + 276) = 0; + if ( !v422 ) + goto LABEL_84; + } + d_print_array_type_isra_0(v3, a2, (int *)(v4 + 8), *(int ***)(v3 + 276)); + goto LABEL_84; + case 0x2B: + case 0x2D: + v40 = *(_DWORD *)(v3 + 276); + v41 = *(_DWORD *)(v4 + 12); + v597 = (_DWORD *)v4; + v598 = 0; + *(_DWORD *)Buffer = v40; + *(_DWORD *)(v3 + 276) = Buffer; + v599 = *(_DWORD *)(v3 + 272); + d_print_comp(v41, a2); + if ( !v598 ) + d_print_mod(v3, a2, (_DWORD *)v4); + v42 = *(_DWORD *)(v3 + 284); + *(_DWORD *)(v3 + 276) = *(_DWORD *)Buffer; + v5 = v42 - 1; + v536 = v594; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x2C: + if ( *(_WORD *)(v4 + 14) ) + { + v400 = *(_DWORD *)(v3 + 256); + v401 = "_Sat "; + do + { + v403 = *v401; + if ( v400 == 255 ) + { + v404 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v572 = v403; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v404); + ++*(_DWORD *)(v3 + 296); + v403 = v572; + v402 = 0; + v400 = 1; + } + else + { + v402 = v400++; + } + ++v401; + *(_DWORD *)(v3 + 256) = v400; + *(_BYTE *)(v3 + v402) = v403; + *(_BYTE *)(v3 + 260) = v403; + } + while ( v401 != "" ); + } + v65 = *(_DWORD *)(v4 + 8); + if ( *(void ****)(v65 + 8) == &off_4EF8A0 ) + { + v68 = *(_DWORD *)(v3 + 256); + } + else + { + d_print_comp(v65, a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v66 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v66); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v67 = *(_DWORD *)(v3 + 256); + v68 = v67 + 1; + *(_DWORD *)(v3 + 256) = v67 + 1; + *(_BYTE *)(v3 + v67) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + if ( *(_WORD *)(v4 + 12) ) + { + v375 = "Accum"; + for ( i11 = 95; ; i11 = *v375++ ) + { + if ( v68 == 255 ) + { + v378 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v533 = i11; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v378); + ++*(_DWORD *)(v3 + 296); + i11 = v533; + v377 = 0; + v68 = 1; + } + else + { + v377 = v68++; + } + *(_DWORD *)(v3 + 256) = v68; + *(_BYTE *)(v3 + v377) = i11; + *(_BYTE *)(v3 + 260) = i11; + if ( v375 == "" ) + break; + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + v69 = "Fract"; + for ( i12 = 95; ; i12 = *v69++ ) + { + if ( v68 == 255 ) + { + v72 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v516 = i12; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v72); + ++*(_DWORD *)(v3 + 296); + i12 = v516; + v71 = 0; + v68 = 1; + } + else + { + v71 = v68++; + } + *(_DWORD *)(v3 + 256) = v68; + *(_BYTE *)(v3 + v71) = i12; + *(_BYTE *)(v3 + 260) = i12; + if ( v69 == "" ) + break; + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x2E: + case 0x2F: + v34 = *(_DWORD *)(v4 + 8); + if ( v34 ) + d_print_comp(v34, a2); + if ( *(_DWORD *)(v4 + 12) ) + { + v35 = *(_DWORD *)(v3 + 256); + if ( v35 > 0xFD ) + { + *(_BYTE *)(v3 + v35) = 0; + Str2 = (char *)v35; + v35 = 0; + (*(void (__cdecl **)(int, char *, _DWORD))(v3 + 264))(v3, Str2, *(_DWORD *)(v3 + 268)); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v36 = ", "; + for ( i13 = 44; ; i13 = *v36 ) + { + if ( v35 == 255 ) + { + v39 = *(_DWORD *)(v3 + 268); + v537 = i13; + v35 = 1; + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v39); + ++*(_DWORD *)(v3 + 296); + i13 = v537; + v38 = 0; + } + else + { + v38 = v35++; + } + ++v36; + *(_DWORD *)(v3 + 256) = v35; + *(_BYTE *)(v3 + v38) = i13; + *(_BYTE *)(v3 + 260) = i13; + if ( "" == v36 ) + break; + } + v342 = *(_DWORD *)(v3 + 296); + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v536 = v594; + v343 = *(_DWORD *)(v4 + 4); + if ( v342 == *(_DWORD *)(v3 + 296) ) + { + result = v343 - 1; + v5 = *(_DWORD *)(v3 + 284) - 1; + if ( *(_DWORD *)(v3 + 256) == v35 ) + *(_DWORD *)(v3 + 256) = v35 - 2; + } + else + { + result = v343 - 1; + v5 = *(_DWORD *)(v3 + 284) - 1; + } + } + else + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x30: + v94 = *(_DWORD *)(v3 + 256); + v95 = "emplate parameter object for "; + for ( i14 = 116; ; i14 = *v95++ ) + { + if ( v94 == 255 ) + { + v98 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v540 = i14; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v98); + ++*(_DWORD *)(v3 + 296); + i14 = v540; + v97 = 0; + v94 = 1; + } + else + { + v97 = v94++; + } + *(_DWORD *)(v3 + 256) = v94; + *(_BYTE *)(v3 + v97) = i14; + *(_BYTE *)(v3 + 260) = i14; + if ( v95 == "" ) + break; + } + goto LABEL_427; + case 0x31: + v88 = *(_DWORD *)(v4 + 8); + v89 = *(_DWORD *)(v4 + 12); + if ( v88 ) + d_print_comp(v88, a2); + v90 = *(_DWORD *)(v3 + 256); + if ( v90 == 255 ) + { + v91 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v91); + ++*(_DWORD *)(v3 + 296); + v90 = 0; + } + *(_DWORD *)(v3 + 256) = v90 + 1; + *(_BYTE *)(v3 + v90) = 123; + *(_BYTE *)(v3 + 260) = 123; + d_print_comp(v89, a2); + i24 = *(_DWORD *)(v3 + 256); + if ( i24 == 255 ) + { + v93 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v93); + ++*(_DWORD *)(v3 + 296); + i24 = 0; + } + goto LABEL_479; + case 0x32: + v99 = "perator"; + v100 = 111; + v541 = *(char **)(v4 + 8); + v581 = *((_DWORD *)v541 + 2); + v101 = *(_DWORD *)(v3 + 256); + while ( 1 ) + { + if ( v101 == 255 ) + { + v103 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v517 = v100; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v103); + ++*(_DWORD *)(v3 + 296); + v100 = v517; + v102 = 0; + v101 = 1; + } + else + { + v102 = v101++; + } + *(_DWORD *)(v3 + 256) = v101; + *(_BYTE *)(v3 + v102) = v100; + *(_BYTE *)(v3 + 260) = v100; + if ( v99 == "" ) + break; + v100 = *v99++; + } + v298 = (char *)*((_DWORD *)v541 + 1); + if ( (unsigned __int8)(*v298 - 97) <= 0x19u ) + { + if ( v101 == 255 ) + { + v299 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v299); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v300 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v300 + 1; + *(_BYTE *)(v3 + v300) = 32; + *(_BYTE *)(v3 + 260) = 32; + v298 = (char *)*((_DWORD *)v541 + 1); + } + v301 = v581; + if ( v298[v581 - 1] == 32 ) + v301 = v581 - 1; + if ( v301 ) + { + v302 = *(_DWORD *)(v3 + 256); + v303 = &v298[v301]; + do + { + v305 = *v298; + if ( v302 == 255 ) + { + v306 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v524 = v305; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v306); + ++*(_DWORD *)(v3 + 296); + v305 = v524; + v304 = 0; + v302 = 1; + } + else + { + v304 = v302++; + } + ++v298; + *(_DWORD *)(v3 + 256) = v302; + *(_BYTE *)(v3 + v304) = v305; + *(_BYTE *)(v3 + 260) = v305; + } + while ( v303 != v298 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x33: + v83 = *(_DWORD *)(v3 + 256); + v84 = "perator "; + for ( i15 = 111; ; i15 = *v84++ ) + { + if ( v83 == 255 ) + { + v87 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v539 = i15; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v87); + ++*(_DWORD *)(v3 + 296); + i15 = v539; + v86 = 0; + v83 = 1; + } + else + { + v86 = v83++; + } + *(_DWORD *)(v3 + 256) = v83; + *(_BYTE *)(v3 + v86) = i15; + *(_BYTE *)(v3 + 260) = i15; + if ( v84 == "" ) + break; + } + goto LABEL_47; + case 0x35: + v78 = *(_DWORD *)(v3 + 256); + v79 = "perator "; + for ( i16 = 111; ; i16 = *v79++ ) + { + if ( v78 == 255 ) + { + v82 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v538 = i16; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v82); + ++*(_DWORD *)(v3 + 296); + i16 = v538; + v81 = 0; + v78 = 1; + } + else + { + v81 = v78++; + } + *(_DWORD *)(v3 + 256) = v78; + *(_BYTE *)(v3 + v81) = i16; + *(_BYTE *)(v3 + 260) = i16; + if ( v79 == "" ) + break; + } + if ( *(_DWORD *)(v3 + 328) ) + { + v322 = *(_DWORD *)(v3 + 272); + v597 = *(_DWORD **)(v3 + 328); + *(_DWORD *)Buffer = v322; + *(_DWORD *)(v3 + 272) = Buffer; + } + v323 = *(_DWORD **)(v4 + 8); + if ( *v323 == 4 ) + { + d_print_comp(v323[2], a2); + if ( *(_DWORD *)(v3 + 328) ) + *(_DWORD *)(v3 + 272) = *(_DWORD *)Buffer; + if ( *(_BYTE *)(v3 + 260) == 60 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v485 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v485); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v486 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v486 + 1; + *(_BYTE *)(v3 + v486) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v386 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v386); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v387 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v387 + 1; + *(_BYTE *)(v3 + v387) = 60; + *(_BYTE *)(v3 + 260) = 60; + d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 8) + 12), a2); + if ( *(_BYTE *)(v3 + 260) == 62 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v483 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v483); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v484 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v484 + 1; + *(_BYTE *)(v3 + v484) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v388 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v388); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v389 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v389 + 1; + *(_BYTE *)(v3 + v389) = 62; + *(_BYTE *)(v3 + 260) = 62; + } + else + { + d_print_comp(v323, a2); + if ( *(_DWORD *)(v3 + 328) ) + *(_DWORD *)(v3 + 272) = *(_DWORD *)Buffer; + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x36: + d_print_expr_op(v3, a2, *(_DWORD **)(v4 + 8)); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x37: + v73 = *(_DWORD *)(v4 + 8); + v28 = *(int **)(v4 + 12); + if ( *(_DWORD *)v73 == 50 ) + { + v573 = **(char ***)(v73 + 8); + v405 = strcmp(v573, "ad"); + v406 = *v28; + if ( !v405 && v406 == 3 ) + { + if ( *(_DWORD *)v28[2] == 1 && *(_DWORD *)v28[3] == 41 ) + v28 = (int *)v28[2]; + } + else if ( v406 == 57 ) + { + d_print_subexpr(v3, a2, (_DWORD *)v28[2]); + d_print_expr_op(v3, a2, (_DWORD *)v73); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( !strcmp(v573, "sZ") ) + { + pack = d_find_pack(v3, v28, v407); + for ( i17 = 0; pack; ++i17 ) + { + if ( *pack != 47 ) + break; + if ( !pack[2] ) + break; + pack = (_DWORD *)pack[3]; + } + v498 = Buffer; + sprintf(Buffer, "%d", i17); + v499 = strlen(Buffer) + 1; + if ( v499 != 1 ) + { + do + { + v500 = *v498; + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v501 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v501); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v502 = *(_DWORD *)(v3 + 256); + ++v498; + *(_DWORD *)(v3 + 256) = v502 + 1; + *(_BYTE *)(v3 + v502) = v500; + *(_BYTE *)(v3 + 260) = v500; + } + while ( &Buffer[v499 - 1] != v498 ); + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( *v573 == 115 && v573[1] == 80 ) + { + v408 = 0; + if ( !v573[2] ) + { + v409 = 0; + do + { + if ( *v28 != 47 ) + break; + v410 = v28[2]; + if ( !v410 ) + break; + if ( *(_DWORD *)v410 == 75 ) + { + v411 = d_find_pack(v3, *(_DWORD **)(v410 + 8), v408); + for ( i18 = 0; v411; ++i18 ) + { + if ( *v411 != 47 ) + break; + v408 = v411[2]; + if ( !v408 ) + break; + v411 = (_DWORD *)v411[3]; + } + v409 += i18; + } + else + { + ++v409; + } + v28 = (int *)v28[3]; + } + while ( v28 ); + v461 = Buffer; + sprintf(Buffer, "%d", v409); + v462 = strlen(Buffer) + 1; + if ( v462 != 1 ) + { + v463 = *(_DWORD *)(v3 + 256); + do + { + v464 = *v461; + v465 = v463; + if ( v463 == 255 ) + { + v466 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v535 = v464; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v466); + ++*(_DWORD *)(v3 + 296); + v464 = v535; + v465 = 0; + } + v463 = v465 + 1; + ++v461; + *(_DWORD *)(v3 + 256) = v465 + 1; + *(_BYTE *)(v3 + v465) = v464; + *(_BYTE *)(v3 + 260) = v464; + } + while ( &Buffer[v462 - 1] != v461 ); + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + d_print_expr_op(v3, a2, (_DWORD *)v73); + if ( *v573 == 103 && v573[1] == 115 && !v573[2] ) + { +LABEL_604: + d_print_comp(v28, a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( !strcmp(v573, "st") ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v413 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v413); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v414 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v414 + 1; + *(_BYTE *)(v3 + v414) = 40; + *(_BYTE *)(v3 + 260) = 40; + d_print_comp(v28, a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v415 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v415); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } +LABEL_737: + v492 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v492 + 1; + *(_BYTE *)(v3 + v492) = 41; + v493 = (int)v594; + *(_BYTE *)(v3 + 260) = 41; + v536 = (char *)v493; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + else if ( *(_DWORD *)v73 == 52 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v74 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v74); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v75 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v75 + 1; + *(_BYTE *)(v3 + v75) = 40; + *(_BYTE *)(v3 + 260) = 40; + d_print_comp(*(_DWORD *)(v73 + 8), a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v76 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v76); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v77 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v77 + 1; + *(_BYTE *)(v3 + v77) = 41; + *(_BYTE *)(v3 + 260) = 41; + } + else + { + d_print_expr_op(v3, a2, (_DWORD *)v73); + } + d_print_subexpr(v3, a2, v28); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x38: + if ( **(_DWORD **)(v4 + 12) != 57 ) + { + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v9 = *(_DWORD *)(v4 + 8); + v10 = **(char ***)(v9 + 8); + if ( v10[1] == 99 && ((v467 = *v10, (unsigned __int8)(v467 - 99) <= 1u) || (unsigned __int8)(v467 - 114) <= 1u) ) + { + d_print_expr_op(v3, a2, (_DWORD *)v9); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v468 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v468); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v469 = *(_DWORD *)(v3 + 256); + v470 = ">("; + *(_DWORD *)(v3 + 256) = v469 + 1; + *(_BYTE *)(v3 + v469) = 60; + *(_BYTE *)(v3 + 260) = 60; + d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 8), a2); + v471 = *(_DWORD *)(v3 + 256); + do + { + v472 = *v470; + v473 = v471; + if ( v471 == 255 ) + { + v474 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v577 = v472; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v474); + ++*(_DWORD *)(v3 + 296); + v472 = v577; + v473 = 0; + } + v471 = v473 + 1; + ++v470; + *(_DWORD *)(v3 + 256) = v473 + 1; + *(_BYTE *)(v3 + v473) = v472; + *(_BYTE *)(v3 + 260) = v472; + } + while ( v470 != "" ); + d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 12), a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v475 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v475); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + } + else + { + if ( d_maybe_print_fold_expression_isra_0(v3, a2, v9, v4 + 12) ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v11 = *(_DWORD *)(v4 + 8); + if ( *(_DWORD *)v11 == 50 ) + { + v487 = *(_DWORD *)(v11 + 8); + if ( *(_DWORD *)(v487 + 8) == 1 && **(_BYTE **)(v487 + 4) == 62 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v488 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v488); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v489 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v489 + 1; + *(_BYTE *)(v3 + v489) = 40; + *(_BYTE *)(v3 + 260) = 40; + v11 = *(_DWORD *)(v4 + 8); + } + } + v12 = strcmp(**(const char ***)(v11 + 8), "cl"); + v13 = *(_DWORD *)(*(_DWORD *)(v4 + 12) + 8); + if ( !v12 && *(_DWORD *)v13 == 3 ) + { + if ( **(_DWORD **)(v13 + 12) != 41 ) + *(_DWORD *)(v3 + 280) = 1; + d_print_subexpr(v3, a2, *(_DWORD **)(v13 + 8)); + } + else + { + d_print_subexpr(v3, a2, (_DWORD *)v13); + } + v14 = *(_DWORD *)(v4 + 8); + Str1 = **(const char ***)(v14 + 8); + if ( !strcmp(Str1, "ix") ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v16 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v16); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v17 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v17 + 1; + *(_BYTE *)(v3 + v17) = 91; + *(_BYTE *)(v3 + 260) = 91; + d_print_comp(*(_DWORD *)(*(_DWORD *)(v4 + 12) + 12), a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v18 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v18); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v19 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v19 + 1; + *(_BYTE *)(v3 + v19) = 93; + *(_BYTE *)(v3 + 260) = 93; + } + else + { + if ( strcmp(Str1, "cl") ) + d_print_expr_op(v3, a2, (_DWORD *)v14); + d_print_subexpr(v3, a2, *(_DWORD **)(*(_DWORD *)(v4 + 12) + 12)); + } + v20 = *(_DWORD **)(v4 + 8); + if ( *v20 != 50 || (v490 = v20[2], *(_DWORD *)(v490 + 8) != 1) || **(_BYTE **)(v490 + 4) != 62 ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v491 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v491); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + } + goto LABEL_737; + case 0x39: + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x3A: + v285 = *(_DWORD *)(v4 + 12); + if ( *(_DWORD *)v285 == 59 && **(_DWORD **)(v285 + 12) == 60 ) + { + if ( d_maybe_print_fold_expression_isra_0(v3, a2, *(_DWORD *)(v4 + 8), v4 + 12) ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + v457 = *(_DWORD *)(v4 + 12); + v458 = *(_DWORD **)(v457 + 8); + v459 = *(_DWORD *)(v457 + 12); + v585 = *(_DWORD *)(v4 + 8); + v576 = *(char **)(v459 + 8); + v460 = *(_DWORD **)(v459 + 12); + if ( !strcmp(**(const char ***)(v585 + 8), "qu") ) + { + d_print_subexpr(v3, a2, v458); + d_print_expr_op(v3, a2, (_DWORD *)v585); + d_print_subexpr(v3, a2, v576); + d_append_buffer(v3, " : ", 3); + d_print_subexpr(v3, a2, v460); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { + d_append_buffer(v3, "new ", 4); + if ( v458[2] ) + { + d_print_subexpr(v3, a2, v458); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v494 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v494); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v495 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v495 + 1; + *(_BYTE *)(v3 + v495) = 32; + *(_BYTE *)(v3 + 260) = 32; + } + d_print_comp(v576, a2); + if ( v460 ) + d_print_subexpr(v3, a2, v460); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + } + } + else + { + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x3B: + case 0x3C: + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x3D: + case 0x3E: + v29 = *(_DWORD **)(v4 + 8); + v30 = 0; + if ( *v29 != 39 ) + goto LABEL_42; + v30 = *(_DWORD *)(v29[2] + 16); + if ( v30 > 6 ) + { + if ( v30 == 7 ) + { + v425 = *(_DWORD *)(v4 + 12); + if ( !*(_DWORD *)v425 && *(_DWORD *)(v425 + 12) == 1 && v579 == 61 ) + { + v426 = **(_BYTE **)(v425 + 8); + if ( v426 == 48 ) + { + d_append_buffer(v3, "false", 5); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + if ( v426 == 49 ) + { + d_append_buffer(v3, "true", 4); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + } + } + else if ( v30 ) + { + v394 = *(_DWORD **)(v4 + 12); + if ( !*v394 ) + { + if ( v579 == 62 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v503 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v503); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v504 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v504 + 1; + *(_BYTE *)(v3 + v504) = 45; + *(_BYTE *)(v3 + 260) = 45; + v394 = *(_DWORD **)(v4 + 12); + } + d_print_comp(v394, a2); + switch ( v30 ) + { + case 2u: + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v508 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v508); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v509 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v509 + 1; + *(_BYTE *)(v3 + v509) = 117; + v510 = (int)v594; + *(_BYTE *)(v3 + 260) = 117; + v536 = (char *)v510; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + case 3u: + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v505 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v505); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v506 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v506 + 1; + *(_BYTE *)(v3 + v506) = 108; + v507 = (int)v594; + *(_BYTE *)(v3 + 260) = 108; + v536 = (char *)v507; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + case 4u: + d_append_buffer(v3, "ul", 2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + case 5u: + d_append_buffer(v3, "ll", 2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + case 6u: + d_append_buffer(v3, (char *)&off_4EEA7E, 3); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + default: + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + break; + } + goto LABEL_21; + } + } +LABEL_42: + v31 = *(_DWORD *)(v3 + 256); + if ( v31 == 255 ) + { + v32 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v32); + ++*(_DWORD *)(v3 + 296); + v29 = *(_DWORD **)(v4 + 8); + v31 = 0; + } + *(_DWORD *)(v3 + 256) = v31 + 1; + *(_BYTE *)(v3 + v31) = 40; + *(_BYTE *)(v3 + 260) = 40; + d_print_comp(v29, a2); + v33 = *(_DWORD *)(v3 + 256); + if ( v33 == 255 ) + { + v421 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v421); + ++*(_DWORD *)(v3 + 296); + *(_BYTE *)v3 = 41; + *(_BYTE *)(v3 + 260) = 41; + v422 = *(_DWORD *)v4 == 62; + *(_DWORD *)(v3 + 256) = 1; + if ( !v422 ) + goto LABEL_46; + } + else + { + *(_DWORD *)(v3 + 256) = v33 + 1; + *(_BYTE *)(v3 + v33) = 41; + *(_BYTE *)(v3 + 260) = 41; + if ( *(_DWORD *)v4 != 62 ) + goto LABEL_46; + if ( v33 == 254 ) + { + v427 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v427); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + } + v423 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v423 + 1; + *(_BYTE *)(v3 + v423) = 45; + *(_BYTE *)(v3 + 260) = 45; +LABEL_46: + if ( v30 == 8 ) + { + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v416 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v416); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v417 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v417 + 1; + *(_BYTE *)(v3 + v417) = 91; + *(_BYTE *)(v3 + 260) = 91; + d_print_comp(*(_DWORD *)(v4 + 12), a2); + if ( *(_DWORD *)(v3 + 256) == 255 ) + { + v418 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v418); + ++*(_DWORD *)(v3 + 296); + *(_DWORD *)(v3 + 256) = 0; + } + v419 = *(_DWORD *)(v3 + 256); + *(_DWORD *)(v3 + 256) = v419 + 1; + *(_BYTE *)(v3 + v419) = 93; + v420 = (int)v594; + *(_BYTE *)(v3 + 260) = 93; + v536 = (char *)v420; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + else + { +LABEL_47: + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + } + goto LABEL_21; + case 0x3F: + v286 = *(_DWORD *)(v3 + 256); + v287 = "ava resource "; + for ( i19 = 106; ; i19 = *v287++ ) + { + if ( v286 == 255 ) + { + v290 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v567 = i19; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v290); + ++*(_DWORD *)(v3 + 296); + i19 = v567; + v289 = 0; + v286 = 1; + } + else + { + v289 = v286++; + } + *(_DWORD *)(v3 + 256) = v286; + *(_BYTE *)(v3 + v289) = i19; + *(_BYTE *)(v3 + 260) = i19; + if ( v287 == "" ) + break; + } + goto LABEL_427; + case 0x40: + d_print_comp(*(_DWORD *)(v4 + 8), a2); + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x41: + v291 = *(_DWORD *)(v3 + 256); + v292 = *(_DWORD *)(v4 + 8); + if ( v291 == 255 ) + { + v293 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v293); + v294 = (int)v594; + ++*(_DWORD *)(v3 + 296); + v536 = (char *)v294; + v5 = *(_DWORD *)(v3 + 284) - 1; + v291 = 0; + result = *(_DWORD *)(v4 + 4) - 1; + } + *(_DWORD *)(v3 + 256) = v291 + 1; + *(_BYTE *)(v3 + v291) = v292; + *(_BYTE *)(v3 + 260) = v292; + goto LABEL_21; + case 0x42: + sprintf(Buffer, "%d", *(_DWORD *)(v4 + 8)); + v259 = &Buffer[strlen(Buffer)]; + if ( v259 != Buffer ) + { + v260 = Buffer; + v261 = *(_DWORD *)(v3 + 256); + do + { + v263 = *v260; + if ( v261 == 255 ) + { + v264 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v523 = v263; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v264); + ++*(_DWORD *)(v3 + 296); + v263 = v523; + v262 = 0; + v261 = 1; + } + else + { + v262 = v261++; + } + ++v260; + *(_DWORD *)(v3 + 256) = v261; + *(_BYTE *)(v3 + v262) = v263; + *(_BYTE *)(v3 + 260) = v263; + } + while ( v259 != v260 ); + } + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x43: + v280 = *(_DWORD *)(v3 + 256); + v281 = "ecltype ("; + for ( i20 = 100; ; i20 = *v281++ ) + { + if ( v280 == 255 ) + { + v284 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v566 = i20; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v284); + ++*(_DWORD *)(v3 + 296); + i20 = v566; + v283 = 0; + v280 = 1; + } + else + { + v283 = v280++; + } + *(_DWORD *)(v3 + 256) = v280; + *(_BYTE *)(v3 + v283) = i20; + *(_BYTE *)(v3 + 260) = i20; + if ( v281 == "" ) + break; + } + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v319 = *(_DWORD *)(v3 + 256); + if ( v319 == 255 ) + { + v320 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v320); + ++*(_DWORD *)(v3 + 296); + v319 = 0; + } + *(_DWORD *)(v3 + 256) = v319 + 1; + *(_BYTE *)(v3 + v319) = 41; + v321 = (int)v594; + *(_BYTE *)(v3 + 260) = 41; + v536 = (char *)v321; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x44: + v270 = *(_DWORD *)(v3 + 256); + v271 = "lobal constructors keyed to "; + for ( i21 = 103; ; i21 = *v271++ ) + { + if ( v270 == 255 ) + { + v274 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v564 = i21; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v274); + ++*(_DWORD *)(v3 + 296); + i21 = v564; + v273 = 0; + v270 = 1; + } + else + { + v273 = v270++; + } + *(_DWORD *)(v3 + 256) = v270; + *(_BYTE *)(v3 + v273) = i21; + *(_BYTE *)(v3 + 260) = i21; + if ( v271 == "" ) + break; + } + goto LABEL_427; + case 0x45: + v275 = *(_DWORD *)(v3 + 256); + v276 = "lobal destructors keyed to "; + for ( i22 = 103; ; i22 = *v276++ ) + { + if ( v275 == 255 ) + { + v279 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v565 = i22; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v279); + ++*(_DWORD *)(v3 + 296); + i22 = v565; + v278 = 0; + v275 = 1; + } + else + { + v278 = v275++; + } + *(_DWORD *)(v3 + 256) = v275; + *(_BYTE *)(v3 + v278) = i22; + *(_BYTE *)(v3 + 260) = i22; + if ( v276 == "" ) + break; + } + goto LABEL_427; + case 0x46: + v265 = *(_DWORD *)(v3 + 256); + v266 = "lambda("; + for ( i23 = 123; ; i23 = *v266++ ) + { + if ( v265 == 255 ) + { + v269 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v563 = i23; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v269); + ++*(_DWORD *)(v3 + 296); + i23 = v563; + v268 = 0; + v265 = 1; + } + else + { + v268 = v265++; + } + *(_DWORD *)(v3 + 256) = v265; + *(_BYTE *)(v3 + v268) = i23; + *(_BYTE *)(v3 + 260) = i23; + if ( v266 == "" ) + break; + } + v307 = *(_DWORD *)(v4 + 8); + v308 = ")#"; + ++*(_DWORD *)(v3 + 288); + d_print_comp(v307, a2); + v309 = *(_DWORD *)(v3 + 256); + v310 = 41; + --*(_DWORD *)(v3 + 288); + while ( 1 ) + { + if ( v309 == 255 ) + { + v312 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v525 = v310; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v312); + ++*(_DWORD *)(v3 + 296); + v310 = v525; + v311 = 0; + v309 = 1; + } + else + { + v311 = v309++; + } + ++v308; + *(_DWORD *)(v3 + 256) = v309; + *(_BYTE *)(v3 + v311) = v310; + *(_BYTE *)(v3 + 260) = v310; + if ( v308 == "" ) + break; + v310 = *v308; + } + sprintf(Buffer, "%d", *(_DWORD *)(v4 + 12) + 1); + v313 = &Buffer[strlen(Buffer)]; + v314 = Buffer; + for ( i24 = *(_DWORD *)(v3 + 256); v313 != v314; *(_BYTE *)(v3 + 260) = v316 ) + { + v316 = *v314; + if ( i24 == 255 ) + { + v317 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v526 = v316; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v317); + ++*(_DWORD *)(v3 + 296); + v316 = v526; + v315 = 0; + i24 = 1; + } + else + { + v315 = i24++; + } + ++v314; + *(_DWORD *)(v3 + 256) = i24; + *(_BYTE *)(v3 + v315) = v316; + } + if ( i24 == 255 ) + { + v318 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v318); + ++*(_DWORD *)(v3 + 296); + i24 = 0; + } + goto LABEL_479; + case 0x48: + v121 = *(_DWORD *)(v3 + 256); + v122 = "unnamed type#"; + for ( i25 = 123; ; i25 = *v122++ ) + { + if ( v121 == 255 ) + { + v125 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v518 = i25; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v125); + ++*(_DWORD *)(v3 + 296); + i25 = v518; + v124 = 0; + v121 = 1; + } + else + { + v124 = v121++; + } + *(_DWORD *)(v3 + 256) = v121; + *(_BYTE *)(v3 + v124) = i25; + *(_BYTE *)(v3 + 260) = i25; + if ( v122 == "" ) + break; + } + sprintf(Buffer, "%d", *(_DWORD *)(v4 + 8) + 1); + v335 = &Buffer[strlen(Buffer)]; + v336 = Buffer; + for ( i24 = *(_DWORD *)(v3 + 256); v335 != v336; *(_BYTE *)(v3 + 260) = v338 ) + { + v338 = *v336; + if ( i24 == 255 ) + { + v339 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v527 = v338; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v339); + ++*(_DWORD *)(v3 + 296); + v338 = v527; + v337 = 0; + i24 = 1; + } + else + { + v337 = i24++; + } + ++v336; + *(_DWORD *)(v3 + 256) = i24; + *(_BYTE *)(v3 + v337) = v338; + } + if ( i24 == 255 ) + { + v340 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v340); + ++*(_DWORD *)(v3 + 296); + i24 = 0; + } +LABEL_479: + *(_DWORD *)(v3 + 256) = i24 + 1; + *(_BYTE *)(v3 + i24) = 125; + v341 = (int)v594; + *(_BYTE *)(v3 + 260) = 125; + v536 = (char *)v341; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + case 0x49: + v116 = *(_DWORD *)(v3 + 256); + v117 = "ransaction clone for "; + for ( i26 = 116; ; i26 = *v117++ ) + { + if ( v116 == 255 ) + { + v120 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v544 = i26; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v120); + ++*(_DWORD *)(v3 + 296); + i26 = v544; + v119 = 0; + v116 = 1; + } + else + { + v119 = v116++; + } + *(_DWORD *)(v3 + 256) = v116; + *(_BYTE *)(v3 + v119) = i26; + *(_BYTE *)(v3 + 260) = i26; + if ( v117 == "" ) + break; + } + goto LABEL_427; + case 0x4A: + v111 = *(_DWORD *)(v3 + 256); + v112 = "on-transaction clone for "; + for ( i27 = 110; ; i27 = *v112++ ) + { + if ( v111 == 255 ) + { + v115 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v543 = i27; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v115); + ++*(_DWORD *)(v3 + 296); + i27 = v543; + v114 = 0; + v111 = 1; + } + else + { + v114 = v111++; + } + *(_DWORD *)(v3 + 256) = v111; + *(_BYTE *)(v3 + v114) = i27; + *(_BYTE *)(v3 + 260) = i27; + if ( v112 == "" ) + break; + } + goto LABEL_427; + case 0x4B: + v104 = d_find_pack(v3, *(_DWORD **)(v4 + 8), v8); + v105 = 0; + if ( !v104 ) + { + d_print_subexpr(v3, a2, *(_DWORD **)(v4 + 8)); + d_append_buffer(v3, "...", 3); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + while ( *v104 == 47 && v104[2] ) + { + v104 = (_DWORD *)v104[3]; + ++v105; + if ( !v104 ) + { + v582 = v105; + v588 = *(_DWORD *)(v4 + 8); + do + { +LABEL_157: + *(_DWORD *)(v3 + 292) = v7; + d_print_comp(v588, a2); + if ( v7 < v582 - 1 ) + { + v106 = *(_DWORD *)(v3 + 256); + v107 = ", "; + for ( i28 = 44; ; i28 = *v107 ) + { + if ( v106 == 255 ) + { + v110 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v542 = i28; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v110); + ++*(_DWORD *)(v3 + 296); + i28 = v542; + v109 = 0; + v106 = 1; + } + else + { + v109 = v106++; + } + ++v107; + *(_DWORD *)(v3 + 256) = v106; + *(_BYTE *)(v3 + v109) = i28; + *(_BYTE *)(v3 + 260) = i28; + if ( "" == v107 ) + break; + } + } + ++v7; + } + while ( v582 > v7 ); + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + } + v582 = v105; + v588 = *(_DWORD *)(v4 + 8); + if ( !v105 ) + { + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + goto LABEL_157; + case 0x4C: + v228 = "[abi:"; + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v229 = *(_DWORD *)(v3 + 256); + for ( i29 = 91; ; i29 = *v228 ) + { + if ( v229 == 255 ) + { + v232 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v562 = i29; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v232); + ++*(_DWORD *)(v3 + 296); + i29 = v562; + v231 = 0; + v229 = 1; + } + else + { + v231 = v229++; + } + ++v228; + *(_DWORD *)(v3 + 256) = v229; + *(_BYTE *)(v3 + v231) = i29; + *(_BYTE *)(v3 + 260) = i29; + if ( v228 == "" ) + break; + } + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v295 = *(_DWORD *)(v3 + 256); + if ( v295 == 255 ) + { + v296 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v296); + ++*(_DWORD *)(v3 + 296); + v295 = 0; + } + goto LABEL_398; + case 0x4E: + v223 = "[clone "; + d_print_comp(*(_DWORD *)(v4 + 8), a2); + v224 = *(_DWORD *)(v3 + 256); + for ( i30 = 32; ; i30 = *v223++ ) + { + if ( v224 == 255 ) + { + v227 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + v561 = i30; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v227); + ++*(_DWORD *)(v3 + 296); + i30 = v561; + v226 = 0; + v224 = 1; + } + else + { + v226 = v224++; + } + *(_DWORD *)(v3 + 256) = v224; + *(_BYTE *)(v3 + v226) = i30; + *(_BYTE *)(v3 + 260) = i30; + if ( v223 == "" ) + break; + } + d_print_comp(*(_DWORD *)(v4 + 12), a2); + v295 = *(_DWORD *)(v3 + 256); + if ( v295 == 255 ) + { + v324 = *(_DWORD *)(v3 + 268); + *(_BYTE *)(v3 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v3 + 264))(v3, 255, v324); + ++*(_DWORD *)(v3 + 296); + v295 = 0; + } +LABEL_398: + *(_DWORD *)(v3 + 256) = v295 + 1; + *(_BYTE *)(v3 + v295) = 93; + v297 = (int)v594; + *(_BYTE *)(v3 + 260) = 93; + v536 = (char *)v297; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + default: + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + do + { + if ( v580 == (_DWORD *)*v447 ) + { + v450 = (int *)&v593; + while ( v580 != (_DWORD *)*v450 && (v4 != *v450 || v450 == (int *)&v593) ) + { + v450 = (int *)v450[1]; + if ( !v450 ) + { + v451 = *(_DWORD *)(v3 + 272); + *(_DWORD *)(v3 + 272) = v447[1]; + v586 = v451; + v7 = 1; + v580 = d_lookup_template_argument_isra_0(v3, v580 + 2); + if ( !v580 ) + goto LABEL_786; + goto LABEL_672; + } + } +LABEL_712: + v7 = 0; + v580 = d_lookup_template_argument_isra_0(v3, v580 + 2); + if ( !v580 ) + goto LABEL_679; +LABEL_672: + v43 = *v580; + if ( *v580 == 47 ) + { + v452 = *(_DWORD *)(v3 + 292); + if ( v452 < 0 ) + { + if ( *(_DWORD *)v4 != 47 ) +LABEL_68: + v580 = (_DWORD *)v4; +LABEL_69: + v23 = *(int ***)(v3 + 276); +LABEL_70: + *(_DWORD *)Buffer = v23; + *(_DWORD *)(v3 + 276) = Buffer; + v598 = 0; + v597 = v580; + v599 = *(_DWORD *)(v3 + 272); +LABEL_71: + v21 = v580[2]; +LABEL_24: + d_print_comp(v21, a2); + if ( !v598 ) + d_print_mod(v3, a2, v580); + *(_DWORD *)(v3 + 276) = *(_DWORD *)Buffer; + if ( v7 ) + *(_DWORD *)(v3 + 272) = v586; + v536 = v594; + v5 = *(_DWORD *)(v3 + 284) - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v453 = d_index_template_argument_part_0(v580, v452); + v580 = v453; + if ( !v453 ) + { + if ( v7 ) +LABEL_786: + *(_DWORD *)(v3 + 272) = v586; +LABEL_679: + v455 = (int)v594; + v456 = *(_DWORD *)(v3 + 284); + *(_DWORD *)(v3 + 280) = 1; + v536 = (char *)v455; + v5 = v456 - 1; + result = *(_DWORD *)(v4 + 4) - 1; + goto LABEL_21; + } + v43 = *v453; + } +LABEL_65: + if ( v43 != 35 && *(_DWORD *)v4 != v43 ) + { + if ( v43 == 36 ) + { + v21 = v580[2]; +LABEL_23: + v22 = *(_DWORD *)(v3 + 276); + v597 = (_DWORD *)v4; + v598 = 0; + *(_DWORD *)Buffer = v22; + *(_DWORD *)(v3 + 276) = Buffer; + v580 = (_DWORD *)v4; + v599 = *(_DWORD *)(v3 + 272); + if ( v21 ) + goto LABEL_24; + goto LABEL_71; + } + goto LABEL_68; + } + goto LABEL_69; + } + ++v449; + v447 += 2; + } + while ( v448 != v449 ); + v5 = v592; +LABEL_706: + if ( v448 < *(_DWORD *)(v3 + 312) ) + { + v476 = *(_DWORD *)(v3 + 304); + v591 = v5; + *(_DWORD *)(v3 + 308) = v448 + 1; + v477 = *(_DWORD **)(v3 + 272); + v478 = (_DWORD *)(v476 + 8 * v448); + *v478 = v580; + for ( i31 = v478 + 1; ; i31 = (int *)v481 ) + { + if ( !v477 ) + { + *i31 = 0; + goto LABEL_712; + } + v480 = *(_DWORD *)(v3 + 320); + if ( v480 >= *(_DWORD *)(v3 + 324) ) + break; + v481 = *(_DWORD *)(v3 + 316) + 8 * v480; + *(_DWORD *)(v3 + 320) = v480 + 1; + *(_DWORD *)(v481 + 4) = v477[1]; + *i31 = v481; + v477 = (_DWORD *)*v477; + } + v5 = v591; + } + *(_DWORD *)(v3 + 280) = 1; + result = *(_DWORD *)(v4 + 4) - 1; +LABEL_21: + *(_DWORD *)(v3 + 300) = v536; + *(_DWORD *)(v4 + 4) = result; + *(_DWORD *)(v3 + 284) = v5; + return result; +} +// 423E59: variable 'v586' is possibly undefined +// 42731A: variable 'v408' is possibly undefined +// 4282E0: variable 'v407' is possibly undefined +// 4EEA7E: using guessed type void *off_4EEA7E; +// 4EF8A0: using guessed type void **off_4EF8A0; + +//----- (00428740) -------------------------------------------------------- +int __usercall d_print_mod@(int a1@, int a2@, _DWORD *a3@) +{ + _DWORD *v4; // esi + int result; // eax + const char *v7; // esi + char i; // dl + int v9; // ecx + int v10; // eax + const char *v11; // esi + char j; // dl + int v13; // ecx + int v14; // eax + const char *v15; // esi + char k; // dl + int v17; // ecx + int v18; // eax + int v19; // edx + int v20; // edx + const char *v21; // esi + char m; // dl + int v23; // ecx + int v24; // eax + int v25; // eax + int v26; // edx + int v27; // edx + int v28; // eax + int v29; // eax + int v30; // edx + int v31; // eax + int v32; // ecx + const char *v33; // esi + char jj; // dl + int v35; // ecx + int v36; // eax + int v37; // edx + const char *v38; // ebp + char i1; // dl + int v40; // ecx + int v41; // eax + const char *v42; // ebp + char nn; // dl + int v44; // ecx + int v45; // eax + int v46; // eax + const char *v47; // ebp + char kk; // dl + int v49; // ecx + int v50; // eax + const char *v51; // esi + char n; // dl + int v53; // ecx + int v54; // eax + const char *v55; // esi + char ii; // dl + int v57; // ecx + int v58; // eax + const char *v59; // esi + char mm; // dl + int v61; // ecx + int v62; // eax + int v63; // ecx + int v64; // edx + int v65; // eax + int v66; // edx + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + int v71; // eax + char v72; // [esp+1Fh] [ebp-1Dh] + char v73; // [esp+1Fh] [ebp-1Dh] + char v74; // [esp+1Fh] [ebp-1Dh] + char v75; // [esp+1Fh] [ebp-1Dh] + char v76; // [esp+1Fh] [ebp-1Dh] + char v77; // [esp+1Fh] [ebp-1Dh] + char v78; // [esp+1Fh] [ebp-1Dh] + char v79; // [esp+1Fh] [ebp-1Dh] + char v80; // [esp+1Fh] [ebp-1Dh] + char v81; // [esp+1Fh] [ebp-1Dh] + char v82; // [esp+1Fh] [ebp-1Dh] + + v4 = a3; + result = *a3 - 3; + switch ( *a3 ) + { + case 3: + a3 = (_DWORD *)a3[2]; + return d_print_comp(a3, a2); + case 0x19: + case 0x1C: + result = *(_DWORD *)(a1 + 256); + v7 = "restrict"; + for ( i = 32; ; i = *v7++ ) + { + if ( result == 255 ) + { + v10 = *(_DWORD *)(a1 + 268); + v72 = i; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v10); + ++*(_DWORD *)(a1 + 296); + i = v72; + v9 = 0; + result = 1; + } + else + { + v9 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v9) = i; + *(_BYTE *)(a1 + 260) = i; + if ( v7 == "" ) + break; + } + return result; + case 0x1A: + case 0x1D: + result = *(_DWORD *)(a1 + 256); + v11 = "volatile"; + for ( j = 32; ; j = *v11++ ) + { + if ( result == 255 ) + { + v14 = *(_DWORD *)(a1 + 268); + v73 = j; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v14); + ++*(_DWORD *)(a1 + 296); + j = v73; + v13 = 0; + result = 1; + } + else + { + v13 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v13) = j; + *(_BYTE *)(a1 + 260) = j; + if ( v11 == "" ) + break; + } + return result; + case 0x1B: + case 0x1E: + result = *(_DWORD *)(a1 + 256); + v15 = "const"; + for ( k = 32; ; k = *v15++ ) + { + if ( result == 255 ) + { + v18 = *(_DWORD *)(a1 + 268); + v74 = k; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v18); + ++*(_DWORD *)(a1 + 296); + k = v74; + v17 = 0; + result = 1; + } + else + { + v17 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v17) = k; + *(_BYTE *)(a1 + 260) = k; + if ( v15 == "" ) + break; + } + return result; + case 0x1F: + v19 = *(_DWORD *)(a1 + 256); + if ( v19 == 255 ) + { + v68 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v68); + *(_BYTE *)a1 = 32; + result = 1; + ++*(_DWORD *)(a1 + 296); +LABEL_53: + v37 = result + 1; + goto LABEL_54; + } + result = v19 + 1; + *(_DWORD *)(a1 + 256) = v19 + 1; + *(_BYTE *)(a1 + v19) = 32; + *(_BYTE *)(a1 + 260) = 32; +LABEL_52: + if ( result != 255 ) + goto LABEL_53; + v71 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v71); + ++*(_DWORD *)(a1 + 296); + v37 = 1; + result = 0; +LABEL_54: + *(_DWORD *)(a1 + 256) = v37; + *(_BYTE *)(a1 + result) = 38; + *(_BYTE *)(a1 + 260) = 38; + return result; + case 0x20: + v20 = *(_DWORD *)(a1 + 256); + result = v20 + 1; + if ( v20 == 255 ) + { + v70 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v70); + ++*(_DWORD *)(a1 + 296); + result = 1; + v20 = 0; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v20) = 32; + *(_BYTE *)(a1 + 260) = 32; + goto LABEL_27; + case 0x21: + v25 = *(_DWORD *)(a1 + 256); + v26 = v25 + 1; + if ( v25 == 255 ) + { + v69 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v69); + ++*(_DWORD *)(a1 + 296); + v26 = 1; + v25 = 0; + } + *(_DWORD *)(a1 + 256) = v26; + *(_BYTE *)(a1 + v25) = 32; + *(_BYTE *)(a1 + 260) = 32; + a3 = (_DWORD *)v4[3]; + return d_print_comp(a3, a2); + case 0x22: + if ( (a2 & 4) == 0 ) + { + result = *(_DWORD *)(a1 + 256); + v27 = result + 1; + if ( result == 255 ) + { + v28 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v28); + ++*(_DWORD *)(a1 + 296); + v27 = 1; + result = 0; + } + *(_DWORD *)(a1 + 256) = v27; + *(_BYTE *)(a1 + result) = 42; + *(_BYTE *)(a1 + 260) = 42; + } + return result; + case 0x23: + result = *(_DWORD *)(a1 + 256); + goto LABEL_52; + case 0x24: + result = *(_DWORD *)(a1 + 256); +LABEL_27: + v21 = "&&"; + for ( m = 38; ; m = *v21 ) + { + if ( result == 255 ) + { + v24 = *(_DWORD *)(a1 + 268); + v75 = m; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v24); + ++*(_DWORD *)(a1 + 296); + m = v75; + v23 = 0; + result = 1; + } + else + { + v23 = result++; + } + ++v21; + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v23) = m; + *(_BYTE *)(a1 + 260) = m; + if ( "" == v21 ) + break; + } + return result; + case 0x25: + result = *(_DWORD *)(a1 + 256); + v51 = "omplex "; + for ( n = 99; ; n = *v51++ ) + { + if ( result == 255 ) + { + v54 = *(_DWORD *)(a1 + 268); + v80 = n; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v54); + ++*(_DWORD *)(a1 + 296); + n = v80; + v53 = 0; + result = 1; + } + else + { + v53 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v53) = n; + *(_BYTE *)(a1 + 260) = n; + if ( v51 == "" ) + break; + } + return result; + case 0x26: + result = *(_DWORD *)(a1 + 256); + v55 = "maginary "; + for ( ii = 105; ; ii = *v55++ ) + { + if ( result == 255 ) + { + v58 = *(_DWORD *)(a1 + 268); + v81 = ii; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v58); + ++*(_DWORD *)(a1 + 296); + ii = v81; + v57 = 0; + result = 1; + } + else + { + v57 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v57) = ii; + *(_BYTE *)(a1 + 260) = ii; + if ( v55 == "" ) + break; + } + return result; + case 0x2B: + if ( *(_BYTE *)(a1 + 260) != 40 ) + { + v29 = *(_DWORD *)(a1 + 256); + v30 = v29 + 1; + if ( v29 == 255 ) + { + v31 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v31); + ++*(_DWORD *)(a1 + 296); + v30 = 1; + v29 = 0; + } + *(_DWORD *)(a1 + 256) = v30; + *(_BYTE *)(a1 + v29) = 32; + *(_BYTE *)(a1 + 260) = 32; + } + v32 = v4[2]; + v33 = "::*"; + d_print_comp(v32, a2); + result = *(_DWORD *)(a1 + 256); + for ( jj = 58; ; jj = *v33 ) + { + if ( result == 255 ) + { + v36 = *(_DWORD *)(a1 + 268); + v76 = jj; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v36); + ++*(_DWORD *)(a1 + 296); + jj = v76; + v35 = 0; + result = 1; + } + else + { + v35 = result++; + } + ++v33; + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v35) = jj; + *(_BYTE *)(a1 + 260) = jj; + if ( "" == v33 ) + break; + } + return result; + case 0x2D: + v46 = *(_DWORD *)(a1 + 256); + v47 = "__vector("; + for ( kk = 32; ; kk = *v47++ ) + { + if ( v46 == 255 ) + { + v50 = *(_DWORD *)(a1 + 268); + v79 = kk; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v50); + ++*(_DWORD *)(a1 + 296); + kk = v79; + v49 = 0; + v46 = 1; + } + else + { + v49 = v46++; + } + *(_DWORD *)(a1 + 256) = v46; + *(_BYTE *)(a1 + v49) = kk; + *(_BYTE *)(a1 + 260) = kk; + if ( v47 == "" ) + break; + } + v63 = v4[2]; + goto LABEL_96; + case 0x4D: + result = *(_DWORD *)(a1 + 256); + v59 = "transaction_safe"; + for ( mm = 32; ; mm = *v59++ ) + { + if ( result == 255 ) + { + v62 = *(_DWORD *)(a1 + 268); + v82 = mm; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v62); + ++*(_DWORD *)(a1 + 296); + mm = v82; + v61 = 0; + result = 1; + } + else + { + v61 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v61) = mm; + *(_BYTE *)(a1 + 260) = mm; + if ( v59 == "" ) + break; + } + return result; + case 0x4F: + result = *(_DWORD *)(a1 + 256); + v42 = "noexcept"; + for ( nn = 32; ; nn = *v42++ ) + { + if ( result == 255 ) + { + v45 = *(_DWORD *)(a1 + 268); + v78 = nn; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v45); + ++*(_DWORD *)(a1 + 296); + nn = v78; + v44 = 0; + result = 1; + } + else + { + v44 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v44) = nn; + *(_BYTE *)(a1 + 260) = nn; + if ( v42 == "" ) + break; + } + goto LABEL_92; + case 0x50: + result = *(_DWORD *)(a1 + 256); + v38 = "throw"; + for ( i1 = 32; ; i1 = *v38++ ) + { + if ( result == 255 ) + { + v41 = *(_DWORD *)(a1 + 268); + v77 = i1; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v41); + ++*(_DWORD *)(a1 + 296); + i1 = v77; + v40 = 0; + result = 1; + } + else + { + v40 = result++; + } + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v40) = i1; + *(_BYTE *)(a1 + 260) = i1; + if ( v38 == "" ) + break; + } +LABEL_92: + v63 = v4[3]; + if ( v63 ) + { + v64 = result + 1; + if ( result == 255 ) + { + v65 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v65); + v63 = v4[3]; + v64 = 1; + result = 0; + ++*(_DWORD *)(a1 + 296); + } + *(_DWORD *)(a1 + 256) = v64; + *(_BYTE *)(a1 + result) = 40; + *(_BYTE *)(a1 + 260) = 40; +LABEL_96: + d_print_comp(v63, a2); + result = *(_DWORD *)(a1 + 256); + v66 = result + 1; + if ( result == 255 ) + { + v67 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v67); + ++*(_DWORD *)(a1 + 296); + v66 = 1; + result = 0; + } + *(_DWORD *)(a1 + 256) = v66; + *(_BYTE *)(a1 + result) = 41; + *(_BYTE *)(a1 + 260) = 41; + } + return result; + default: + return d_print_comp(a3, a2); + } +} +// 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); + +//----- (00429080) -------------------------------------------------------- +int __usercall d_print_function_type_isra_0@(int a1@, int a2@, int *a3@, int **a4) +{ + int **v6; // ecx + char v7; // cl + int v8; // eax + int v9; // ecx + int v10; // ebp + int v11; // eax + int v12; // ecx + int v13; // eax + int v14; // ecx + int v15; // ecx + int result; // eax + int v17; // eax + int v18; // eax + int v19; // eax + int v20; // eax + int v21; // eax + + if ( !a4 ) + goto LABEL_19; + v6 = a4; + while ( 2 ) + { + if ( v6[2] ) + { +LABEL_19: + v10 = *(_DWORD *)(a1 + 276); + *(_DWORD *)(a1 + 276) = 0; + d_print_mod_list(a1, a2, a4, 0); + v12 = *(_DWORD *)(a1 + 256); + if ( v12 != 255 ) + { +LABEL_13: + v13 = v12 + 1; + *(_DWORD *)(a1 + 256) = v12 + 1; + *(_BYTE *)(a1 + v12) = 40; + *(_BYTE *)(a1 + 260) = 40; + v14 = *a3; + if ( !*a3 ) + goto LABEL_15; + goto LABEL_14; + } + goto LABEL_20; + } + switch ( *v6[1] ) + { + case 25: + case 26: + case 27: + case 33: + case 37: + case 38: + case 43: + v7 = *(_BYTE *)(a1 + 260); + v8 = *(_DWORD *)(a1 + 256); + goto LABEL_6; + case 34: + case 35: + case 36: + v7 = *(_BYTE *)(a1 + 260); + v8 = *(_DWORD *)(a1 + 256); + if ( (*(_BYTE *)(a1 + 260) & 0xFD) == 40 ) + { + if ( v8 == 255 ) + goto LABEL_24; + goto LABEL_10; + } +LABEL_6: + if ( v7 != 32 ) + { + if ( v8 == 255 ) + { + v20 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); + *(_BYTE *)a1 = 32; + v8 = 1; + ++*(_DWORD *)(a1 + 296); + goto LABEL_10; + } + *(_DWORD *)(a1 + 256) = v8 + 1; + *(_BYTE *)(a1 + v8++) = 32; + *(_BYTE *)(a1 + 260) = 32; + } + if ( v8 != 255 ) + { +LABEL_10: + v9 = v8 + 1; + goto LABEL_11; + } +LABEL_24: + v18 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v18); + ++*(_DWORD *)(a1 + 296); + v9 = 1; + v8 = 0; +LABEL_11: + *(_DWORD *)(a1 + 256) = v9; + *(_BYTE *)(a1 + v8) = 40; + v10 = *(_DWORD *)(a1 + 276); + *(_BYTE *)(a1 + 260) = 40; + *(_DWORD *)(a1 + 276) = 0; + d_print_mod_list(a1, a2, a4, 0); + v11 = *(_DWORD *)(a1 + 256); + if ( v11 != 255 ) + { + v12 = v11 + 1; + *(_DWORD *)(a1 + 256) = v11 + 1; + *(_BYTE *)(a1 + v11) = 41; + *(_BYTE *)(a1 + 260) = 41; + if ( v11 != 254 ) + goto LABEL_13; +LABEL_20: + v17 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v17); + *(_BYTE *)a1 = 40; + *(_BYTE *)(a1 + 260) = 40; + v14 = *a3; + ++*(_DWORD *)(a1 + 296); + *(_DWORD *)(a1 + 256) = 1; + if ( !v14 ) + { + v13 = 1; + goto LABEL_16; + } + goto LABEL_14; + } + v21 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v21); + *(_BYTE *)(a1 + 260) = 40; + *(_WORD *)a1 = 10281; + ++*(_DWORD *)(a1 + 296); + *(_DWORD *)(a1 + 256) = 2; + v14 = *a3; + v13 = 2; + if ( !*a3 ) + goto LABEL_16; +LABEL_14: + d_print_comp(v14, a2); + v13 = *(_DWORD *)(a1 + 256); +LABEL_15: + if ( v13 == 255 ) + { + v19 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v19); + ++*(_DWORD *)(a1 + 296); + v15 = 1; + v13 = 0; + goto LABEL_17; + } +LABEL_16: + v15 = v13 + 1; +LABEL_17: + *(_DWORD *)(a1 + 256) = v15; + *(_BYTE *)(a1 + v13) = 41; + *(_BYTE *)(a1 + 260) = 41; + result = d_print_mod_list(a1, a2, a4, 1); + *(_DWORD *)(a1 + 276) = v10; + return result; + default: + v6 = (int **)*v6; + if ( !v6 ) + goto LABEL_19; + continue; + } + } +} +// 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); + +//----- (004293B0) -------------------------------------------------------- +int __usercall d_print_mod_list@(int result@, int a2@, int **a3@, int a4) +{ + int v5; // esi + int **v6; // ebx + int *v7; // eax + int v8; // edi + int *v9; // ecx + unsigned int v10; // edx + int *v11; // edx + int v12; // eax + int v13; // ecx + int v14; // eax + int v15; // ecx + int v16; // eax + unsigned int v17; // eax + const char *v18; // edi + char i; // bl + int v20; // ecx + int v21; // eax + int v22; // eax + char *v23; // ebx + char j; // cl + int v25; // edx + int v26; // eax + char *v27; // ebx + size_t v28; // ecx + int v29; // eax + char *v30; // edi + int v31; // ecx + char v32; // dl + int v33; // eax + const char *v34; // ebx + char k; // cl + int v36; // edx + int v37; // eax + int v38; // [esp+14h] [ebp-48h] + unsigned int *v39; // [esp+14h] [ebp-48h] + int v40; // [esp+14h] [ebp-48h] + int **v41; // [esp+18h] [ebp-44h] + char v42; // [esp+18h] [ebp-44h] + char v43; // [esp+18h] [ebp-44h] + char v44; // [esp+18h] [ebp-44h] + int v45; // [esp+1Ch] [ebp-40h] + char Str[53]; // [esp+27h] [ebp-35h] BYREF + + if ( a3 ) + { + v5 = result; + v6 = a3; + do + { + if ( *(_DWORD *)(v5 + 280) ) + return result; + if ( !v6[2] ) + { + v9 = v6[1]; + result = a4; + v10 = *v9; + if ( a4 ) + { +LABEL_4: + v7 = v6[3]; + v8 = *(_DWORD *)(v5 + 272); + v6[2] = (int *)1; + *(_DWORD *)(v5 + 272) = v7; + switch ( v10 ) + { + case 0x29u: + result = d_print_function_type_isra_0(*v6); + *(_DWORD *)(v5 + 272) = v8; + return result; + case 0x2Au: + result = d_print_array_type_isra_0(v5, a2, v9 + 2, (int **)*v6); + *(_DWORD *)(v5 + 272) = v8; + return result; + case 2u: + v12 = *(_DWORD *)(v5 + 276); + v13 = v9[2]; + *(_DWORD *)(v5 + 276) = 0; + v38 = v12; + d_print_comp(v13, a2); + *(_DWORD *)(v5 + 276) = v38; + v14 = *(_DWORD *)(v5 + 256); + if ( (a2 & 4) != 0 ) + { + v15 = v14 + 1; + if ( v14 == 255 ) + { + v16 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + (*(void (__thiscall **)(int, int, int, int))(v5 + 264))(v15, v5, 255, v16); + ++*(_DWORD *)(v5 + 296); + v15 = 1; + v14 = 0; + } + *(_DWORD *)(v5 + 256) = v15; + *(_BYTE *)(v5 + v14) = 46; + *(_BYTE *)(v5 + 260) = 46; + } + else + { + v40 = v8; + v41 = v6; + v18 = "::"; + for ( i = 58; ; i = *v18 ) + { + if ( v14 == 255 ) + { + v21 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v21); + ++*(_DWORD *)(v5 + 296); + v14 = 1; + v20 = 0; + } + else + { + v20 = v14++; + } + ++v18; + *(_DWORD *)(v5 + 256) = v14; + *(_BYTE *)(v5 + v20) = i; + *(_BYTE *)(v5 + 260) = i; + if ( v18 == "" ) + break; + } + v8 = v40; + v6 = v41; + } + v39 = (unsigned int *)v6[1][3]; + v17 = *v39; + if ( *v39 == 71 ) + { + v22 = *(_DWORD *)(v5 + 256); + v23 = "{default arg#" + 1; + for ( j = 123; ; j = *v23++ ) + { + if ( v22 == 255 ) + { + v26 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + v42 = j; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v26); + ++*(_DWORD *)(v5 + 296); + j = v42; + v25 = 0; + v22 = 1; + } + else + { + v25 = v22++; + } + *(_DWORD *)(v5 + 256) = v22; + *(_BYTE *)(v5 + v25) = j; + *(_BYTE *)(v5 + 260) = j; + if ( v23 == "" ) + break; + } + v27 = Str; + sprintf(Str, "%d", v39[3] + 1); + v28 = strlen(Str); + v29 = *(_DWORD *)(v5 + 256); + if ( v28 ) + { + v45 = v8; + v30 = &Str[v28]; + do + { + v32 = *v27; + if ( v29 == 255 ) + { + v33 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + v43 = v32; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v33); + ++*(_DWORD *)(v5 + 296); + v32 = v43; + v31 = 0; + v29 = 1; + } + else + { + v31 = v29++; + } + ++v27; + *(_DWORD *)(v5 + 256) = v29; + *(_BYTE *)(v5 + v31) = v32; + *(_BYTE *)(v5 + 260) = v32; + } + while ( v30 != v27 ); + v8 = v45; + } + v34 = "}::"; + for ( k = 125; ; k = *v34 ) + { + if ( v29 == 255 ) + { + v37 = *(_DWORD *)(v5 + 268); + *(_BYTE *)(v5 + 255) = 0; + v44 = k; + (*(void (__cdecl **)(int, int, int))(v5 + 264))(v5, 255, v37); + ++*(_DWORD *)(v5 + 296); + k = v44; + v36 = 0; + v29 = 1; + } + else + { + v36 = v29++; + } + *(_DWORD *)(v5 + 256) = v29; + ++v34; + *(_BYTE *)(v5 + v36) = k; + *(_BYTE *)(v5 + 260) = k; + if ( v34 == "" ) + break; + } + goto LABEL_29; + } + while ( 1 ) + { + if ( v17 != 77 ) + { + if ( v17 > 0x4D ) + { + if ( v17 - 79 > 1 ) + { +LABEL_24: + result = d_print_comp(v39, a2); + *(_DWORD *)(v5 + 272) = v8; + return result; + } + } + else if ( v17 - 28 > 4 ) + { + goto LABEL_24; + } + } +LABEL_29: + v39 = (unsigned int *)v39[2]; + v17 = *v39; + } + } +LABEL_7: + result = d_print_mod(v5, a2, v9); + *(_DWORD *)(v5 + 272) = v8; + goto LABEL_8; + } + if ( v10 == 77 ) + goto LABEL_8; + if ( v10 > 0x4D ) + { + if ( v10 - 79 <= 1 ) + goto LABEL_8; + v11 = v6[3]; + v8 = *(_DWORD *)(v5 + 272); + v6[2] = (int *)1; + *(_DWORD *)(v5 + 272) = v11; + goto LABEL_7; + } + if ( v10 - 28 > 4 ) + goto LABEL_4; + } +LABEL_8: + v6 = (int **)*v6; + } + while ( v6 ); + } + return result; +} +// 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); +// 429080: using guessed type _DWORD __cdecl d_print_function_type_isra_0(_DWORD); +// 4293B0: using guessed type char Str[53]; + +//----- (004297A0) -------------------------------------------------------- +int __usercall d_print_array_type_isra_0@(int a1@, int a2@, int *a3@, int **a4) +{ + int **v7; // eax + int v8; // eax + int v9; // edx + int result; // eax + int v11; // ecx + int v12; // edx + int v13; // eax + int v14; // eax + int v15; // eax + int v16; // eax + char *v17; // ebp + char i; // dl + int v19; // ecx + int v20; // eax + int v21; // edx + int v22; // eax + char v23; // [esp+1Fh] [ebp-1Dh] + + v7 = a4; + if ( !a4 ) + { +LABEL_5: + v8 = *(_DWORD *)(a1 + 256); + goto LABEL_6; + } + while ( v7[2] ) + { + v7 = (int **)*v7; + if ( !v7 ) + { + d_print_mod_list(0); + goto LABEL_5; + } + } + if ( *v7[1] != 42 ) + { + v16 = *(_DWORD *)(a1 + 256); + v17 = (char *)&unk_4EEE58; + for ( i = 32; ; i = *v17 ) + { + if ( v16 == 255 ) + { + v20 = *(_DWORD *)(a1 + 268); + v23 = i; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v20); + ++*(_DWORD *)(a1 + 296); + i = v23; + v19 = 0; + v16 = 1; + } + else + { + v19 = v16++; + } + *(_DWORD *)(a1 + 256) = v16; + ++v17; + *(_BYTE *)(a1 + v19) = i; + *(_BYTE *)(a1 + 260) = i; + if ( &unk_4EEE5A == (_UNKNOWN *)v17 ) + break; + } + d_print_mod_list(0); + v21 = *(_DWORD *)(a1 + 256); + if ( v21 == 255 ) + { + v22 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v22); + *(_BYTE *)a1 = 41; + v8 = 1; + ++*(_DWORD *)(a1 + 296); +LABEL_7: + v9 = v8 + 1; + *(_DWORD *)(a1 + 256) = v8 + 1; + *(_BYTE *)(a1 + v8) = 32; + *(_BYTE *)(a1 + 260) = 32; + goto LABEL_8; + } + v8 = v21 + 1; + *(_DWORD *)(a1 + 256) = v21 + 1; + *(_BYTE *)(a1 + v21) = 41; + *(_BYTE *)(a1 + 260) = 41; +LABEL_6: + if ( v8 == 255 ) + { + v15 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v15); + *(_BYTE *)(a1 + 260) = 91; + *(_WORD *)a1 = 23328; + v11 = *a3; + result = 2; + ++*(_DWORD *)(a1 + 296); + *(_DWORD *)(a1 + 256) = 2; + if ( !v11 ) + goto LABEL_12; + goto LABEL_10; + } + goto LABEL_7; + } + d_print_mod_list(0); + v9 = *(_DWORD *)(a1 + 256); +LABEL_8: + if ( v9 == 255 ) + { + v13 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v13); + *(_BYTE *)a1 = 91; + *(_BYTE *)(a1 + 260) = 91; + v11 = *a3; + ++*(_DWORD *)(a1 + 296); + *(_DWORD *)(a1 + 256) = 1; + if ( !v11 ) + { + result = 1; + goto LABEL_12; + } + } + else + { + result = v9 + 1; + *(_DWORD *)(a1 + 256) = v9 + 1; + *(_BYTE *)(a1 + v9) = 91; + *(_BYTE *)(a1 + 260) = 91; + v11 = *a3; + if ( !*a3 ) + goto LABEL_11; + } +LABEL_10: + d_print_comp(v11, a2); + result = *(_DWORD *)(a1 + 256); +LABEL_11: + if ( result == 255 ) + { + v14 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v14); + ++*(_DWORD *)(a1 + 296); + v12 = 1; + result = 0; + goto LABEL_13; + } +LABEL_12: + v12 = result + 1; +LABEL_13: + *(_DWORD *)(a1 + 256) = v12; + *(_BYTE *)(a1 + result) = 93; + *(_BYTE *)(a1 + 260) = 93; + return result; +} +// 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); +// 4293B0: using guessed type _DWORD __cdecl d_print_mod_list(_DWORD); + +//----- (00429A70) -------------------------------------------------------- +int __usercall d_print_expr_op@(int a1@, int a2@, _DWORD *a3@) +{ + int result; // eax + int v5; // edi + char *v6; // esi + char *v7; // edi + int v8; // edx + char v9; // bp + int v10; // eax + + if ( *a3 != 50 ) + return d_print_comp(a3, a2); + result = a3[2]; + v5 = *(_DWORD *)(result + 8); + v6 = *(char **)(result + 4); + if ( v5 ) + { + result = *(_DWORD *)(a1 + 256); + v7 = &v6[v5]; + do + { + v9 = *v6; + if ( result == 255 ) + { + v10 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v10); + ++*(_DWORD *)(a1 + 296); + result = 1; + v8 = 0; + } + else + { + v8 = result++; + } + ++v6; + *(_DWORD *)(a1 + 256) = result; + *(_BYTE *)(a1 + v8) = v9; + *(_BYTE *)(a1 + 260) = v9; + } + while ( v6 != v7 ); + } + return result; +} +// 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); + +//----- (00429B20) -------------------------------------------------------- +int __usercall d_print_subexpr@(int a1@, int a2@, _DWORD *a3@) +{ + int v4; // eax + int v5; // eax + int v6; // esi + int result; // eax + int v8; // edx + int v9; // eax + int v10; // [esp+8h] [ebp-24h] + int v11; // [esp+18h] [ebp-14h] + _DWORD *v12; // [esp+1Ch] [ebp-10h] + + v4 = *a3; + if ( *a3 <= 1u || v4 == 49 || v4 == 6 ) + return d_print_comp(a3, a2); + v5 = *(_DWORD *)(a1 + 256); + v6 = v5 + 1; + if ( v5 == 255 ) + { + v12 = a3; + v6 = 1; + v11 = a2; + v10 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v10); + a3 = v12; + a2 = v11; + v5 = 0; + ++*(_DWORD *)(a1 + 296); + } + *(_DWORD *)(a1 + 256) = v6; + *(_BYTE *)(a1 + v5) = 40; + *(_BYTE *)(a1 + 260) = 40; + d_print_comp(a3, a2); + result = *(_DWORD *)(a1 + 256); + v8 = result + 1; + if ( result == 255 ) + { + v9 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v9); + ++*(_DWORD *)(a1 + 296); + v8 = 1; + result = 0; + } + *(_DWORD *)(a1 + 256) = v8; + *(_BYTE *)(a1 + result) = 41; + *(_BYTE *)(a1 + 260) = 41; + return result; +} +// 423BD0: using guessed type int __fastcall d_print_comp(_DWORD, _DWORD); + +//----- (00429C20) -------------------------------------------------------- +int __usercall d_maybe_print_fold_expression_isra_0@(int a1@, int a2@, int a3@, int a4) +{ + _BYTE *v5; // eax + _DWORD *v7; // edi + int v8; // esi + char v9; // al + int v10; // eax + int v11; // edx + const char *v12; // esi + int v13; // eax + char k; // dl + int v15; // ecx + int v16; // eax + _DWORD *v18; // ecx + int v19; // eax + int v20; // edx + int v21; // eax + int v22; // eax + int v23; // edx + const char *v24; // esi + int v25; // eax + char j; // dl + int v27; // ecx + int v28; // eax + _DWORD *v29; // esi + int v30; // eax + const char *v31; // esi + char i; // dl + int v33; // ecx + int v34; // eax + int v35; // eax + int v36; // eax + _DWORD *v37; // [esp+10h] [ebp-2Ch] + char v38; // [esp+10h] [ebp-2Ch] + int v39; // [esp+14h] [ebp-28h] + _DWORD *v40; // [esp+18h] [ebp-24h] + char v41; // [esp+18h] [ebp-24h] + char v42; // [esp+1Fh] [ebp-1Dh] + + v5 = **(_BYTE ***)(a3 + 8); + if ( *v5 != 102 ) + return 0; + v40 = 0; + v37 = *(_DWORD **)(*(_DWORD *)a4 + 8); + v7 = *(_DWORD **)(*(_DWORD *)a4 + 12); + if ( *v7 == 60 ) + { + v29 = (_DWORD *)v7[3]; + v7 = (_DWORD *)v7[2]; + v40 = v29; + } + v8 = *(_DWORD *)(a1 + 292); + *(_DWORD *)(a1 + 292) = -1; + v9 = v5[1]; + v39 = v8; + if ( v9 == 108 ) + { + v30 = *(_DWORD *)(a1 + 256); + v31 = "(..."; + for ( i = 40; ; i = *v31 ) + { + if ( v30 == 255 ) + { + v34 = *(_DWORD *)(a1 + 268); + v41 = i; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v34); + ++*(_DWORD *)(a1 + 296); + i = v41; + v33 = 0; + v30 = 1; + } + else + { + v33 = v30++; + } + *(_DWORD *)(a1 + 256) = v30; + ++v31; + *(_BYTE *)(a1 + v33) = i; + *(_BYTE *)(a1 + 260) = i; + if ( v31 == "" ) + break; + } + d_print_expr_op(a1, a2, v37); + v18 = v7; +LABEL_18: + d_print_subexpr(a1, a2, v18); + v19 = *(_DWORD *)(a1 + 256); + v20 = v19 + 1; + if ( v19 == 255 ) + { + v21 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v21); + ++*(_DWORD *)(a1 + 296); + v20 = 1; + v19 = 0; + } + *(_DWORD *)(a1 + 256) = v20; + *(_BYTE *)(a1 + v19) = 41; + *(_BYTE *)(a1 + 260) = 41; + goto LABEL_21; + } + if ( v9 > 108 ) + { + if ( v9 == 114 ) + { + v22 = *(_DWORD *)(a1 + 256); + v23 = v22 + 1; + if ( v22 == 255 ) + { + v35 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v35); + ++*(_DWORD *)(a1 + 296); + v23 = 1; + v22 = 0; + } + *(_DWORD *)(a1 + 256) = v23; + v24 = "...)"; + *(_BYTE *)(a1 + v22) = 40; + *(_BYTE *)(a1 + 260) = 40; + d_print_subexpr(a1, a2, v7); + d_print_expr_op(a1, a2, v37); + v25 = *(_DWORD *)(a1 + 256); + for ( j = 46; ; j = *v24 ) + { + if ( v25 == 255 ) + { + v28 = *(_DWORD *)(a1 + 268); + v38 = j; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v28); + ++*(_DWORD *)(a1 + 296); + j = v38; + v27 = 0; + v25 = 1; + } + else + { + v27 = v25++; + } + ++v24; + *(_DWORD *)(a1 + 256) = v25; + *(_BYTE *)(a1 + v27) = j; + *(_BYTE *)(a1 + 260) = j; + if ( v24 == "" ) + break; + } + } + goto LABEL_21; + } + if ( v9 == 76 || v9 == 82 ) + { + v10 = *(_DWORD *)(a1 + 256); + v11 = v10 + 1; + if ( v10 == 255 ) + { + v36 = *(_DWORD *)(a1 + 268); + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v36); + ++*(_DWORD *)(a1 + 296); + v11 = 1; + v10 = 0; + } + *(_DWORD *)(a1 + 256) = v11; + v12 = "..."; + *(_BYTE *)(a1 + v10) = 40; + *(_BYTE *)(a1 + 260) = 40; + d_print_subexpr(a1, a2, v7); + d_print_expr_op(a1, a2, v37); + v13 = *(_DWORD *)(a1 + 256); + for ( k = 46; ; k = *v12 ) + { + if ( v13 == 255 ) + { + v16 = *(_DWORD *)(a1 + 268); + v42 = k; + *(_BYTE *)(a1 + 255) = 0; + (*(void (__cdecl **)(int, int, int))(a1 + 264))(a1, 255, v16); + ++*(_DWORD *)(a1 + 296); + k = v42; + v15 = 0; + v13 = 1; + } + else + { + v15 = v13++; + } + ++v12; + *(_DWORD *)(a1 + 256) = v13; + *(_BYTE *)(a1 + v15) = k; + *(_BYTE *)(a1 + 260) = k; + if ( v12 == "" ) + break; + } + d_print_expr_op(a1, a2, v37); + v18 = v40; + goto LABEL_18; + } +LABEL_21: + *(_DWORD *)(a1 + 292) = v39; + return 1; +} + +//----- (00429FC0) -------------------------------------------------------- +BOOL __usercall d_demangle_callback_constprop_0@(char *a1@, int a2@, int a3@) +{ + char v4; // al + bool v5; // zf + int v6; // edi + char v7; // al + char v8; // al + size_t v9; // esi + int v10; // ecx + BOOL result; // eax + void *v12; // esp + void *v13; // esp + int v14; // eax + void *v15; // esp + void *v16; // esp + size_t v17; // eax + unsigned int *v18; // ebx + char *v19; // ecx + char v20; // al + int v21; // eax + int v22; // edx + int v23; // eax + void *v24; // esp + void *v25; // esp + int v26; // eax + void *v27; // esp + void *v28; // esp + int v29; // eax + int v30; // edx + unsigned int *comp; // eax + char v32; // dl + char *v33; // edx + char *v34; // esi + char i; // dl + int v36; // edx + int v37; // esi + int *v38; // ebx + unsigned __int8 v39; // si + char v40; // bl + int v41[3]; // [esp+0h] [ebp-1D8h] BYREF + int v42[2]; // [esp+Ch] [ebp-1CCh] BYREF + _BYTE *v43; // [esp+14h] [ebp-1C4h] + int v44; // [esp+18h] [ebp-1C0h] + int *v45; // [esp+1Ch] [ebp-1BCh] + int v46; // [esp+20h] [ebp-1B8h] + int v47; // [esp+24h] [ebp-1B4h] + void (__cdecl *v48)(_DWORD *, int, int); // [esp+28h] [ebp-1B0h] + unsigned int *v49; // [esp+2Ch] [ebp-1ACh] + int v50[2]; // [esp+38h] [ebp-1A0h] BYREF + int v51; // [esp+40h] [ebp-198h] + char *Str; // [esp+44h] [ebp-194h] + int *v53; // [esp+48h] [ebp-190h] + int v54; // [esp+4Ch] [ebp-18Ch] + int v55; // [esp+50h] [ebp-188h] + int *v56; // [esp+54h] [ebp-184h] + int v57; // [esp+58h] [ebp-180h] + size_t v58; // [esp+5Ch] [ebp-17Ch] + int v59; // [esp+60h] [ebp-178h] + int v60; // [esp+64h] [ebp-174h] + int v61; // [esp+68h] [ebp-170h] + int v62; // [esp+6Ch] [ebp-16Ch] + int v63; // [esp+70h] [ebp-168h] + _DWORD v64[64]; // [esp+74h] [ebp-164h] BYREF + int v65; // [esp+174h] [ebp-64h] + char v66; // [esp+178h] [ebp-60h] + void (__cdecl *v67)(_DWORD *, int, int); // [esp+17Ch] [ebp-5Ch] + int v68; // [esp+180h] [ebp-58h] + int v69; // [esp+184h] [ebp-54h] + int v70; // [esp+188h] [ebp-50h] + int v71; // [esp+18Ch] [ebp-4Ch] + int v72; // [esp+190h] [ebp-48h] + int v73; // [esp+194h] [ebp-44h] + int v74; // [esp+198h] [ebp-40h] + int v75; // [esp+19Ch] [ebp-3Ch] + int v76; // [esp+1A0h] [ebp-38h] + int *v77; // [esp+1A4h] [ebp-34h] + int v78; // [esp+1A8h] [ebp-30h] + int v79; // [esp+1ACh] [ebp-2Ch] + int *v80; // [esp+1B0h] [ebp-28h] + int v81; // [esp+1B4h] [ebp-24h] + int v82; // [esp+1B8h] [ebp-20h] + int v83; // [esp+1BCh] [ebp-1Ch] + + v4 = *a1; + v48 = (void (__cdecl *)(_DWORD *, int, int))a2; + v47 = a3; + LOBYTE(v46) = v4; + if ( v4 != 95 || (v6 = 1, a1[1] != 90) ) + { + v5 = memcmp(a1, "_GLOBAL_", 8u) == 0; + v6 = 0; + if ( v5 ) + { + v7 = a1[8]; + if ( v7 == 95 || v7 == 46 || v7 == 36 ) + { + v8 = a1[9]; + if ( v8 == 68 || (v6 = 0, v8 == 73) ) + { + v6 = 0; + if ( a1[10] == 95 ) + v6 = (v8 != 73) + 2; + } + } + } + } + v50[0] = (int)a1; + v9 = strlen(a1); + v51 = 17; + v10 = 2 * v9; + v50[1] = (int)&a1[v9]; + result = 0; + Str = a1; + v55 = 2 * v9; + v54 = 0; + v58 = v9; + v57 = 0; + v59 = 0; + v60 = 0; + v61 = 0; + v62 = 0; + v63 = 0; + if ( 2 * v9 <= 0x800 ) + { + v45 = v41; + v12 = alloca(32 * v9); + v13 = alloca(32 * v9); + v49 = (unsigned int *)v42; + v14 = 16 * ((4 * v9 + 15) >> 4); + v15 = alloca(v14); + v16 = alloca(v14); + v53 = v42; + v56 = v42; + if ( v6 == 1 ) + { + if ( (_BYTE)v46 != 95 || a1[1] != 90 ) + return 0; + Str = a1 + 2; + v18 = d_encoding((int)v50, 1, v10); + if ( (v51 & 1) != 0 ) + { + v19 = Str; + v20 = *Str; + if ( *Str == 46 ) + { + comp = v18; + while ( 1 ) + { + v32 = v19[1]; + if ( (unsigned __int8)(v32 - 97) <= 0x19u || v32 == 95 ) + { + v33 = v19 + 2; + v39 = v19[2] - 97; + LOBYTE(v49) = v19[2]; + if ( v39 <= 0x19u || (_BYTE)v49 == 95 ) + { + v49 = comp; + do + { + do + v40 = *++v33; + while ( (unsigned __int8)(v40 - 97) <= 0x19u ); + } + while ( v40 == 95 ); + comp = v49; + LOBYTE(v49) = v40; + } + } + else + { + if ( (unsigned __int8)(v32 - 48) > 9u ) + { + v18 = comp; + v20 = *v19; + break; + } + v33 = v19; + LOBYTE(v49) = *v19; + } + if ( (_BYTE)v49 == 46 ) + { + do + { + if ( (unsigned __int8)(v33[1] - 48) > 9u ) + break; + v34 = v33 + 2; + for ( i = v33[2]; (unsigned __int8)(i - 48) <= 9u; ++v34 ) + i = v34[1]; + v5 = i == 46; + v33 = v34; + } + while ( v5 ); + } + Str = v33; + if ( v54 >= v55 || (v36 = v33 - v19, v37 = v54 + 1, v38 = &v53[4 * v54], v38[1] = 0, v54 = v37, v36 <= 0) ) + { + v38 = 0; + } + else + { + v38[1] = 0; + *v38 = 0; + v38[2] = (int)v19; + v38[3] = v36; + } + comp = d_make_comp(v50, 78, (int)comp, (int)v38); + v19 = Str; + if ( *Str != 46 ) + { + v18 = comp; + v20 = *Str; + break; + } + } + } + } + else + { + v20 = *Str; + } + } + else if ( (unsigned int)(v6 - 2) > 1 ) + { + v18 = (unsigned int *)d_type( + (int)v50, + v41[0], + v41[1], + v41[2], + v42[0], + v42[1], + (int)v43, + v44, + (int)v45, + v46, + v47, + (int)v48); + v20 = *Str; + } + else + { + v5 = a1[11] == 95; + Str = a1 + 11; + if ( v5 && a1[12] == 90 ) + { + Str = a1 + 13; + v49 = d_encoding((int)v50, 0, v10); + } + else if ( v10 > 0 + && (v46 = ((unsigned int)v42 + 3) >> 2, v17 = strlen(a1 + 11), v54 = 1, *(_DWORD *)(4 * v46 + 4) = 0, v17) ) + { + v42[0] = 0; + v44 = v17; + v43 = a1 + 11; + } + else + { + v49 = 0; + } + v18 = d_make_comp(v50, (v6 != 2) + 68, (int)v49, 0); + Str += strlen(Str); + v20 = *Str; + } + if ( !v20 && v18 ) + { + v65 = 0; + v66 = 0; + v67 = v48; + v69 = 0; + v68 = v47; + v70 = 0; + v74 = 0; + v75 = 0; + v71 = 0; + v72 = 0; + v73 = 0; + v76 = 0; + v77 = 0; + v78 = 0; + v79 = 0; + v80 = 0; + v81 = 0; + v82 = 0; + d_count_templates_scopes(v64, v18, (int)v19); + if ( v72 <= 2047 ) + v72 = 0; + v21 = v79; + v83 = 0; + v22 = v79 * v82; + v82 *= v79; + if ( v79 <= 0 ) + v21 = 1; + v23 = 16 * ((unsigned int)(8 * v21 + 15) >> 4); + v24 = alloca(v23); + v25 = alloca(v23); + if ( v22 <= 0 ) + v22 = 1; + v26 = 16 * ((unsigned int)(8 * v22 + 15) >> 4); + v27 = alloca(v26); + v28 = alloca(v26); + v77 = v42; + v80 = v42; + d_print_comp((int)v64, 17, (int *)v18); + v29 = v65; + v30 = v68; + *((_BYTE *)v64 + v65) = 0; + v67(v64, v29, v30); + return v71 == 0; + } + return 0; + } + return result; +} +// 42A25F: variable 'v19' is possibly undefined + +//----- (0042A580) -------------------------------------------------------- +char *__cdecl __cxa_demangle(const char *lpmangled, char *lpout, size_t *lpoutlen, int *lpstatus) +{ + char *v4; // edi + size_t v5; // ebp + size_t v6; // eax + char *Str; // [esp+0h] [ebp-3Ch] + char *Src[2]; // [esp+10h] [ebp-2Ch] BYREF + size_t v10; // [esp+18h] [ebp-24h] + int v11; // [esp+1Ch] [ebp-20h] + + if ( !lpmangled || lpout && !lpoutlen ) + { + if ( lpstatus ) + *lpstatus = -3; + return 0; + } + Src[0] = 0; + Src[1] = 0; + v10 = 0; + v11 = 0; + if ( !d_demangle_callback_constprop_0((char *)lpmangled, (int)d_growable_string_callback_adapter, (int)Src) ) + { + __mingw_free((unsigned int)Src[0]); + if ( !lpstatus ) + return 0; + goto LABEL_25; + } + v4 = Src[0]; + if ( v11 ) + { + v5 = 1; + if ( Src[0] ) + goto LABEL_7; + if ( !lpstatus ) + return 0; + goto LABEL_16; + } + v5 = v10; + if ( Src[0] ) + { +LABEL_7: + if ( lpout ) + { + v6 = strlen(Src[0]); + if ( v6 < *lpoutlen ) + { + memcpy(lpout, Src[0], v6 + 1); + Str = v4; + v4 = lpout; + __mingw_free((unsigned int)Str); + goto LABEL_10; + } + __mingw_free((unsigned int)lpout); + } + else if ( !lpoutlen ) + { +LABEL_10: + if ( lpstatus ) + *lpstatus = 0; + return v4; + } + *lpoutlen = v5; + goto LABEL_10; + } + if ( lpstatus ) + { + if ( v10 == 1 ) + { +LABEL_16: + *lpstatus = -1; + return 0; + } +LABEL_25: + *lpstatus = -2; + return 0; + } + return 0; +} + +//----- (0042A6D0) -------------------------------------------------------- +unsigned int __cdecl __gcclibcxx_demangle_callback(char *a1, int a2, int a3) +{ + if ( a1 && a2 ) + return !d_demangle_callback_constprop_0(a1, a2, a3) ? 0xFFFFFFFE : 0; + else + return -3; +} + +//----- (0042A710) -------------------------------------------------------- +char **_setargv() +{ + char **result; // eax + const char *CommandLineA; // ebx + int v2; // eax + void *v3; // esp + void *v4; // esp + int v5; // edi + char *v6; // eax + char v7; // bl + char *v8; // eax + int v9; // edx + char *v10; // esi + char *v11; // edx + char *v12; // edi + int v13; // esi + int v14; // esi + bool v15; // cl + char *v16; // edx + char *v17; // ecx + char *v18; // ecx + int v19; // [esp+0h] [ebp-58h] BYREF + _DWORD v20[3]; // [esp+10h] [ebp-48h] BYREF + int v21; // [esp+1Ch] [ebp-3Ch] + char *Str; // [esp+20h] [ebp-38h] + int v23; // [esp+24h] [ebp-34h] + int v24; // [esp+28h] [ebp-30h] + char *v25; // [esp+2Ch] [ebp-2Ch] + int v26[2]; // [esp+30h] [ebp-28h] BYREF + char **v27; // [esp+38h] [ebp-20h] + int v28; // [esp+3Ch] [ebp-1Ch] + + if ( (_CRT_glob & 2) == 0 ) + return (char **)_mingw32_init_mainargs(); + v20[2] = &v19; + CommandLineA = GetCommandLineA(); + v2 = 16 * ((2 * strlen(CommandLineA) + 17) >> 4); + v3 = alloca(v2); + v4 = alloca(v2); + v28 = 0; + v5 = *CommandLineA; + Str = (char *)v20; + v21 = _CRT_glob & 0x4400 | 0x10; + v6 = (char *)(CommandLineA + 1); + v7 = v5; + v25 = v6; + if ( !v5 ) + goto LABEL_19; + v23 = 0; + v8 = (char *)v20; + v9 = 0; + v24 = 0; + do + { + if ( v7 > 63 ) + { + if ( v7 > 90 ) + { + switch ( v7 ) + { + case '[': + v14 = v9 - 1; + if ( (_CRT_glob & 0x20) != 0 ) + goto LABEL_31; + v15 = 1; + if ( v9 ) + goto LABEL_32; + v16 = v8; + goto LABEL_35; + case '\\': + if ( v24 == 39 ) + *v8++ = 92; + else + ++v9; + goto LABEL_23; + case '{': + case '}': + case '\x7F': +LABEL_30: + v14 = v9 - 1; +LABEL_31: + v15 = v5 == 127 || v24 != 0; + if ( v9 ) + { +LABEL_32: + v16 = &v8[v14 + 1]; + do + *v8++ = 92; + while ( v8 != v16 ); + } + else + { + v16 = v8; + } + v10 = v16; + if ( v15 ) + { +LABEL_35: + *v16 = 127; + v10 = v16 + 1; + } + break; + default: + goto LABEL_7; + } +LABEL_22: + *v10 = v7; + v8 = v10 + 1; + v9 = 0; + goto LABEL_23; + } +LABEL_7: + v10 = &v8[v9]; + if ( v9 ) + { + do + *v8++ = 92; + while ( v8 != v10 ); + } + else + { + v10 = v8; + } + if ( v24 ) + goto LABEL_22; + if ( ___mb_cur_max == 1 ) + { + if ( (__pctype[v5] & 0x40) != 0 ) + { +LABEL_12: + if ( Str < v10 || v23 ) + { + *v10 = 0; + v12 = Str; + v13 = v21 | 1; + __mingw_glob(Str, v21, 0, (char **)v26); + v21 = v13; + v8 = v12; + v9 = 0; + v23 = 0; + } + else + { + v23 = 0; + v8 = v10; + v9 = 0; + } + goto LABEL_23; + } + } + else if ( _isctype(v5, 64) ) + { + goto LABEL_12; + } + if ( v5 != 9 ) + goto LABEL_22; + goto LABEL_12; + } + if ( v7 <= 33 ) + goto LABEL_7; + switch ( v7 ) + { + case '"': + if ( v9 >> 1 ) + { + v18 = &v8[v9 >> 1]; + do + *v8++ = 92; + while ( v8 != v18 ); + } + else + { + v18 = v8; + } + if ( v24 == 39 || (v9 & 1) != 0 ) + { + *v18 = 34; + v8 = v18 + 1; + v9 = 0; + v23 = 1; + } + else + { + v24 ^= 0x22u; + v8 = v18; + v9 = 0; + v23 = 1; + } + break; + case '\'': + if ( (_CRT_glob & 0x10) == 0 ) + goto LABEL_7; + if ( v9 >> 1 ) + { + v17 = &v8[v9 >> 1]; + do + *v8++ = 92; + while ( v8 != v17 ); + } + else + { + v17 = v8; + } + if ( v24 == 34 || (v9 & 1) != 0 ) + { + *v17 = 39; + v8 = v17 + 1; + v9 = 0; + v23 = 1; + } + else + { + v24 ^= 0x27u; + v8 = v17; + v9 = 0; + v23 = 1; + } + break; + case '*': + case ',': + case '?': + goto LABEL_30; + default: + goto LABEL_7; + } +LABEL_23: + v5 = *v25++; + v7 = *(v25 - 1); + } + while ( v7 ); + if ( v9 ) + { + v11 = &v8[v9]; + do + *v8++ = 92; + while ( v8 != v11 ); + } + else + { + v11 = v8; + } + if ( Str < v11 || v23 ) + { + *v11 = 0; + __mingw_glob(Str, v21, 0, (char **)v26); + } +LABEL_19: + _argc = v26[1]; + result = v27; + _bss_start__ = v27; + return result; +} +// 4E8020: using guessed type int _CRT_glob; + +//----- (0042AAB0) -------------------------------------------------------- +unsigned int __usercall __cpu_features_init@(__int32 a1@) +{ + unsigned int v1; // kr00_4 + unsigned int v2; // kr04_4 + unsigned int v3; // kr08_4 + unsigned int result; // eax + int v14; // eax + __int32 v15; // ebx + __int32 v16; // ebx + int v26[50]; // [esp+0h] [ebp-208h] BYREF + __int32 v27[79]; // [esp+C8h] [ebp-140h] BYREF + unsigned int v28; // [esp+204h] [ebp-4h] + + v1 = __getcallerseflags(); + v28 = v1; + v2 = __readeflags(); + __writeeflags(v2 ^ 0x200000); + v3 = __readeflags(); + __writeeflags(v28); + result = v2 ^ v3; + if ( ((v2 ^ v3) & 0x200000) != 0 ) + { + _EAX = 0; + __asm { cpuid } + if ( result ) + { + _EAX = 1; + __asm { cpuid } + v14 = (_EDX & 0x100) != 0; + if ( (_ECX & 0x2000) != 0 ) + v14 |= 0x80u; + if ( (_EDX & 0x8000) != 0 ) + v14 |= 2u; + if ( ((unsigned int)&unk_800000 & _EDX) != 0 ) + v14 |= 4u; + if ( ((unsigned int)&unk_1000000 & _EDX) != 0 ) + { + v14 |= 8u; + v27[78] = a1; + _fxsave(v26); + v15 = v27[0]; + v27[0] ^= 0x13C0DEu; + _fxrstor(v26); + v27[0] = v15; + _fxsave(v26); + v16 = _InterlockedExchange(v27, v15); + _fxrstor(v26); + if ( (v27[0] ^ v16) == 1294558 ) + { + if ( (_EDX & 0x2000000) != 0 ) + v14 |= 0x10u; + if ( (_EDX & 0x4000000) != 0 ) + v14 |= 0x20u; + if ( (_ECX & 1) != 0 ) + v14 |= 0x40u; + } + } + __cpu_features = v14; + _EAX = 0x80000000; + __asm { cpuid } + if ( result > 0x80000000 ) + { + _EAX = -2147483647; + __asm { cpuid } + result = 0; + if ( _EDX < 0 ) + result = 256; + if ( (_EDX & 0x40000000) != 0 ) + result |= 0x200u; + __cpu_features |= result; + } + } + } + return result; +} +// 42AAB0: could not find valid save-restore pair for ebp +// 15412C8: using guessed type int __cpu_features; +// 42AAB0: using guessed type __int32 var_140[79]; + +//----- (0042ABC0) -------------------------------------------------------- +void __cdecl __do_global_dtors() +{ + void (*v0)(void); // eax + + v0 = (void (*)(void))*off_4E802C; + if ( *off_4E802C ) + { + do + { + v0(); + v0 = (void (*)(void))off_4E802C[1]; + ++off_4E802C; + } + while ( v0 ); + } +} +// 4E802C: using guessed type int *off_4E802C; + +//----- (0042AC00) -------------------------------------------------------- +int __do_global_ctors() +{ + func_ptr v0; // ebx + func_ptr v2; // eax + + v0 = __CTOR_LIST__[0]; + if ( __CTOR_LIST__[0] == (func_ptr)-1 ) + { + v2 = 0; + do + { + v0 = v2; + v2 = (func_ptr)((char *)v2 + 1); + } + while ( __CTOR_LIST__[(_DWORD)v2] ); + } + for ( ; v0; v0 = (func_ptr)((char *)v0 - 1) ) + __CTOR_LIST__[(_DWORD)v0](); + return atexit(__do_global_dtors); +} + +//----- (0042AC60) -------------------------------------------------------- +int __main() +{ + int result; // eax + + result = dword_15412CC; + if ( !dword_15412CC ) + { + dword_15412CC = 1; + return __do_global_ctors(); + } + return result; +} +// 15412CC: using guessed type int dword_15412CC; + +//----- (0042AC80) -------------------------------------------------------- +int __stdcall TlsCallback_1(int a1, int a2, int a3) +{ + if ( a2 != 3 && a2 ) + return 1; + __mingw_TLScallback(a1, a2); + return 1; +} + +//----- (0042ACD0) -------------------------------------------------------- +int __stdcall __dyn_tls_init(int a1, int a2, int a3) +{ + if ( _CRT_MT != 2 ) + _CRT_MT = 2; + if ( a2 == 1 ) + __mingw_TLScallback(a1, 1); + return 1; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0042AD80) -------------------------------------------------------- +int __tlregdtor() +{ + return 0; +} + +//----- (0042AD90) -------------------------------------------------------- +void sub_42AD90() +{ + int i; // ebx + LPVOID Value; // esi + + EnterCriticalSection(&CriticalSection); + for ( i = dword_15412E4; i; i = *(_DWORD *)(i + 8) ) + { + Value = TlsGetValue(*(_DWORD *)i); + if ( !GetLastError() && Value ) + (*(void (__cdecl **)(LPVOID))(i + 4))(Value); + } + LeaveCriticalSection(&CriticalSection); +} +// 15412E4: using guessed type int dword_15412E4; + +//----- (0042ADF0) -------------------------------------------------------- +int __cdecl ___w64_mingwthr_add_key_dtor(int a1, int a2) +{ + int result; // eax + _DWORD *v3; // eax + int v4; // ebx + int v5; // eax + + result = dword_15412E8; + if ( dword_15412E8 ) + { + v3 = calloc(1u, 0xCu); + v4 = (int)v3; + if ( v3 ) + { + *v3 = a1; + v3[1] = a2; + EnterCriticalSection(&CriticalSection); + v5 = dword_15412E4; + dword_15412E4 = v4; + *(_DWORD *)(v4 + 8) = v5; + LeaveCriticalSection(&CriticalSection); + return 0; + } + else + { + return -1; + } + } + return result; +} +// 15412E4: using guessed type int dword_15412E4; +// 15412E8: using guessed type int dword_15412E8; + +//----- (0042AE70) -------------------------------------------------------- +int __cdecl ___w64_mingwthr_remove_key_dtor(int a1) +{ + _DWORD *v2; // eax + _DWORD *v3; // ecx + int v4; // edx + + if ( !dword_15412E8 ) + return 0; + EnterCriticalSection(&CriticalSection); + v2 = (_DWORD *)dword_15412E4; + if ( dword_15412E4 ) + { + v3 = 0; + while ( 1 ) + { + v4 = v2[2]; + if ( *v2 == a1 ) + break; + v3 = v2; + if ( !v4 ) + goto LABEL_11; + v2 = (_DWORD *)v2[2]; + } + if ( v3 ) + v3[2] = v4; + else + dword_15412E4 = v2[2]; + __mingw_free((unsigned int)v2); + } +LABEL_11: + LeaveCriticalSection(&CriticalSection); + return 0; +} +// 15412E4: using guessed type int dword_15412E4; +// 15412E8: using guessed type int dword_15412E8; + +//----- (0042AF00) -------------------------------------------------------- +int __cdecl __mingw_TLScallback(int a1, int a2) +{ + if ( a2 == 1 ) + { + if ( !dword_15412E8 ) + InitializeCriticalSection(&CriticalSection); + dword_15412E8 = 1; + return 1; + } + else + { + if ( a2 != 3 ) + { + if ( !a2 && dword_15412E8 ) + { + sub_42AD90(); + if ( dword_15412E8 == 1 ) + { + dword_15412E8 = 0; + DeleteCriticalSection(&CriticalSection); + } + } + return 1; + } + if ( !dword_15412E8 ) + return 1; + sub_42AD90(); + return 1; + } +} +// 15412E8: using guessed type int dword_15412E8; + +//----- (0042AFC0) -------------------------------------------------------- +void __noreturn sub_42AFC0(char *Format, ...) +{ + va_list va; // [esp+24h] [ebp+8h] BYREF + + va_start(va, Format); + fwrite("Mingw runtime failure:\n", 1u, 0x17u, &__iob[2]); + vfprintf(&__iob[2], Format, va); + abort(); +} + +//----- (0042B010) -------------------------------------------------------- +DWORD __usercall sub_42B010@(const void *lpAddress@, int a2@, DWORD a3@) +{ + DWORD result; // eax + DWORD Protect; // ecx + DWORD v8; // edx + DWORD flOldProtect; // [esp+10h] [ebp-3Ch] BYREF + struct _MEMORY_BASIC_INFORMATION Buffer; // [esp+14h] [ebp-38h] BYREF + + if ( !VirtualQuery(lpAddress, &Buffer, 0x1Cu) ) + sub_42AFC0(" VirtualQuery failed for %d bytes at address %p", 28, lpAddress); + result = Buffer.Protect; + if ( Buffer.Protect == 64 || Buffer.Protect == 4 ) + { + if ( a3 ) + { + result = 0; + do + { + *((_BYTE *)lpAddress + result) = *(_BYTE *)(a2 + result); + ++result; + } + while ( result < a3 ); + } + } + else + { + result = VirtualProtect(Buffer.BaseAddress, Buffer.RegionSize, 0x40u, &flOldProtect); + Protect = Buffer.Protect; + if ( a3 ) + { + v8 = 0; + do + { + result = *(unsigned __int8 *)(a2 + v8); + *((_BYTE *)lpAddress + v8++) = result; + } + while ( v8 < a3 ); + } + if ( Protect != 64 && Protect != 4 ) + return VirtualProtect(Buffer.BaseAddress, Buffer.RegionSize, flOldProtect, &flOldProtect); + } + return result; +} + +//----- (0042B100) -------------------------------------------------------- +int _pei386_runtime_relocator() +{ + int result; // eax + + result = dword_1541304; + if ( !dword_1541304 ) + { + dword_1541304 = 1; + return 0; + } + return result; +} +// 42B100: could not find valid save-restore pair for ebx +// 42B100: could not find valid save-restore pair for edi +// 42B100: could not find valid save-restore pair for esi +// 1541304: using guessed type int dword_1541304; + +//----- (0042B2F0) -------------------------------------------------------- +int __cdecl fesetenv(const fenv_t *Env) +{ + unsigned int Fe_stat_low; // [esp+Ch] [ebp-10h] + + _EAX = Env; + Fe_stat_low = 8064; + if ( Env == (const fenv_t *)-3 ) + { + dword_4E8030 = -1; + } + else + { + if ( Env == (const fenv_t *)-4 ) + { + dword_4E8030 = -2; +LABEL_12: + __fpreset(); + goto LABEL_8; + } + if ( !Env ) + _EAX = (const fenv_t *)dword_4E8030; + if ( _EAX != (const fenv_t *)-1 ) + { + if ( _EAX != (const fenv_t *)-2 ) + { + __asm { fldenv byte ptr [eax] } + Fe_stat_low = LOWORD(_EAX[3]._Fe_stat); + goto LABEL_8; + } + goto LABEL_12; + } + } + __asm { fninit } +LABEL_8: + if ( (__cpu_features & 0x10) != 0 ) + _mm_setcsr(Fe_stat_low); + return 0; +} +// 4E8030: using guessed type int dword_4E8030; +// 15412C8: using guessed type int __cpu_features; + +//----- (0042B370) -------------------------------------------------------- +long double __cdecl strtold(const char *String, char **EndPtr) +{ + char v2; // al + int v4; // [esp+28h] [ebp-24h] BYREF + __int64 v5; // [esp+2Ch] [ebp-20h] BYREF + long double v6; // [esp+34h] [ebp-18h] + + v6 = 0.0; + v2 = __strtodg((unsigned __int8 *)String, (unsigned __int8 **)EndPtr, dword_4E8034, &v4, (int *)&v5); + switch ( v2 & 7 ) + { + case 1: + case 5: + WORD4(v6) = v4 + 16446; + goto LABEL_3; + case 2: +LABEL_3: + *(_QWORD *)&v6 = v5; + break; + case 3: + *(_DWORD *)((char *)&v6 + 6) = 2147450880; + break; + case 4: + *(_DWORD *)((char *)&v6 + 6) = -16384; + break; + default: + break; + } + if ( (v2 & 8) != 0 ) + WORD4(v6) |= 0x8000u; + return v6; +} +// 4E8034: using guessed type int dword_4E8034[5]; + +//----- (0042B420) -------------------------------------------------------- +int *__cdecl __increment_D2A(int *a1) +{ + int *v1; // ebx + int v2; // esi + int *v3; // eax + int *result; // eax + int *v5; // edi + + v1 = a1; + v2 = a1[4]; + v3 = a1 + 5; + do + { + if ( *v3 != -1 ) + { + ++*v3; + return a1; + } + *v3++ = 0; + } + while ( &a1[v2 + 5] > v3 ); + if ( v2 >= a1[2] ) + { + v5 = __Balloc_D2A(a1[1] + 1); + memcpy(v5 + 3, a1 + 3, 4 * a1[4] + 8); + v1 = v5; + __Bfree_D2A((unsigned int)a1); + v2 = v5[4]; + } + v1[4] = v2 + 1; + result = v1; + v1[v2 + 5] = 1; + return result; +} + +//----- (0042B4C0) -------------------------------------------------------- +int __usercall sub_42B4C0@(int *a1@, int *a2@, _DWORD *a3@, double a4, int a5, int a6, _DWORD *a7) +{ + int *v8; // eax + int v9; // ecx + int v10; // edi + int *v11; // ebx + int v12; // eax + int v13; // edx + int v14; // ebp + int v15; // edx + int v17; // eax + int v18; // ecx + int v19; // edx + int v20; // ecx + int v21; // esi + int v22; // eax + int v23; // edx + unsigned int v24; // eax + int v25; // eax + int *v26; // eax + int v29; // [esp+20h] [ebp-3Ch] + int v30; // [esp+24h] [ebp-38h] + int v31; // [esp+28h] [ebp-34h] + int v32; // [esp+28h] [ebp-34h] + int v33; // [esp+2Ch] [ebp-30h] + int v34; // [esp+38h] [ebp-24h] BYREF + int v35[8]; // [esp+3Ch] [ebp-20h] BYREF + + v8 = __d2b_D2A(a4, v35, &v34); + v9 = v34; + v10 = *a1; + v11 = v8; + v12 = v34 - *a1; + v13 = v12 + v35[0]; + v34 = v12; + v35[0] += v12; + if ( v12 <= 0 ) + { + if ( !a5 ) + { + v14 = 0; + goto LABEL_10; + } + v30 = 0; + v29 = 0; + if ( !v12 ) + goto LABEL_14; + v11 = __lshift_D2A(v11, v10 - v9); + goto LABEL_36; + } + if ( v10 == 53 ) + { + v14 = 0; + if ( !a5 || a1[3] != 1 ) + goto LABEL_10; + v30 = __any_on_D2A((int)v11, v12); + if ( !v30 ) + { + __rshift_D2A((int)v11, v34); + v29 = 0; + v13 = v35[0]; + goto LABEL_14; + } + } + else + { + if ( a6 != 1 ) + { + if ( a6 == 2 ) + { + v30 = __any_on_D2A((int)v11, v12); + __rshift_D2A((int)v11, v34); +LABEL_29: + v11 = __increment_D2A(v11); + v23 = v10 & 0x1F; + if ( (v10 & 0x1F) != 0 ) + v23 = 32 - v23; + _BitScanReverse(&v24, v11[v11[4] + 4]); + if ( (v24 ^ 0x1F) == v23 ) + { + v29 = 32; + v13 = v35[0]; + } + else + { + if ( !v30 ) + v30 = v11[5] & 1; + __rshift_D2A((int)v11, 1); + v29 = 32; + v13 = ++v35[0]; + } + goto LABEL_14; + } + if ( v12 == 1 ) + { + v14 = 0; + if ( !a5 ) + goto LABEL_10; + v15 = ((unsigned int)v11[5] >> 1) & 1; + } + else + { + v15 = ((unsigned int)v11[((v12 - 1) >> 5) + 5] >> (v12 - 1)) & 1; + } + v31 = v15; + v30 = __any_on_D2A((int)v11, v12); + v29 = v30 != 0 ? 0x10 : 0; + __rshift_D2A((int)v11, v34); + if ( v31 ) + goto LABEL_29; + goto LABEL_36; + } + v30 = __any_on_D2A((int)v11, v12); + if ( !v30 ) + { + __rshift_D2A((int)v11, v34); + v29 = 0; + goto LABEL_36; + } + } + __rshift_D2A((int)v11, v34); + v29 = 16; +LABEL_36: + v13 = v35[0]; +LABEL_14: + v17 = a1[1]; + if ( v17 <= v13 ) + { + v22 = a1[2]; + if ( v22 < v13 ) + { + v35[0] = v22 + 1; + *a7 = 163; + v29 = 0; + *_errno() = 34; + v13 = v35[0]; + v11[4] = 0; + } + goto LABEL_25; + } + v35[0] = a1[1]; + v18 = v17 - v13; + v19 = v18; + if ( v10 < v18 || (v14 = a1[4]) != 0 ) + { + v11[4] = 0; + v13 = v17; + v29 = 0; + *a7 = 80; +LABEL_25: + v14 = 1; + *a2 = v13; + __copybits_D2A(a3, v10, (int)v11); + *a7 |= v29; + goto LABEL_10; + } + v20 = v18 - 1; + if ( v20 > 0 && !v30 ) + { + v33 = v19; + v32 = v20; + v25 = __any_on_D2A((int)v11, v20); + v19 = v33; + v20 = v32; + v30 = v25; + } + if ( a5 | v30 ) + { + v21 = v11[(v20 >> 5) + 5] & (1 << v20); + __rshift_D2A((int)v11, v19); + *a7 = 2; + if ( v21 ) + { + v26 = __increment_D2A(v11); + v29 = 96; + v13 = v35[0]; + v11 = v26; + } + else + { + v13 = v35[0]; + if ( v30 ) + v29 = 80; + } + goto LABEL_25; + } +LABEL_10: + __Bfree_D2A((unsigned int)v11); + return v14; +} +// 42B4C0: using guessed type int var_20[8]; + +//----- (0042B8B0) -------------------------------------------------------- +_DWORD *__cdecl __decrement_D2A(int a1) +{ + _DWORD *result; // eax + unsigned int v2; // ecx + + result = (_DWORD *)(a1 + 20); + v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); + while ( !*result ) + { + *result++ = -1; + if ( v2 <= (unsigned int)result ) + return result; + } + --*result; + return result; +} + +//----- (0042B8F0) -------------------------------------------------------- +int *__cdecl __set_ones_D2A(unsigned int a1, int a2) +{ + int *result; // eax + int v3; // esi + int *v4; // esi + int v5; // edx + int v6; // edx + unsigned int v7; // ecx + int *v8; // edx + + result = (int *)a1; + v3 = (a2 + 31) >> 5; + if ( *(_DWORD *)(a1 + 4) < v3 ) + { + __Bfree_D2A(a1); + result = __Balloc_D2A(v3); + } + v4 = result + 5; + v5 = a2 >> 5; + if ( (a2 & 0x1F) != 0 ) + { + v6 = v5 + 1; + v7 = (unsigned int)&v4[v6]; + result[4] = v6; + if ( v7 <= (unsigned int)v4 ) + goto LABEL_10; + } + else + { + v7 = (unsigned int)&v4[v5]; + result[4] = v5; + if ( (unsigned int)v4 >= v7 ) + return result; + } + v8 = result + 5; + do + *v8++ = -1; + while ( (unsigned int)v8 < v7 ); + if ( v7 < (unsigned int)result + 21 ) + { + v4 = result + 6; + if ( (a2 & 0x1F) == 0 ) + return result; +LABEL_10: + *(v4 - 1) = (unsigned int)*(v4 - 1) >> (32 - (a2 & 0x1F)); + return result; + } + v4 += ((v7 - (unsigned int)result - 21) >> 2) + 1; + if ( (a2 & 0x1F) != 0 ) + goto LABEL_10; + return result; +} + +//----- (0042B9C0) -------------------------------------------------------- +int __cdecl __strtodg(unsigned __int8 *a1, unsigned __int8 **a2, int *a3, int *a4, int *a5) +{ + char *decimal_point; // edi + unsigned __int8 *v6; // eax + signed __int8 v7; // cl + unsigned __int8 *v8; // ebp + int v9; // eax + int v10; // ebx + int v11; // edi + unsigned __int8 *v12; // edx + int result; // eax + unsigned __int8 *v14; // edi + int *v15; // eax + unsigned __int8 *v16; // edx + unsigned __int8 *v17; // esi + int v18; // ecx + unsigned __int8 *v19; // edx + unsigned __int8 *v20; // edi + int v21; // esi + unsigned __int8 *v22; // eax + int v23; // eax + int v24; // eax + int v25; // ecx + int *v26; // edx + int *j; // eax + int v28; // ecx + int v29; // edx + int v30; // ecx + int v31; // eax + int v32; // edi + long double v33; // fst7 + int v37; // eax + int v38; // eax + int v39; // ecx + char v40; // al + signed int v41; // esi + long double v42; // fst7 + int *v43; // eax + int v44; // edx + int v45; // esi + int v46; // edi + int v47; // eax + int v48; // edi + int v49; // edx + int v50; // eax + int *v51; // eax + int *v52; // edi + int v53; // esi + int v54; // ebp + int v55; // ebx + int v56; // edx + int v57; // ebx + int v58; // esi + int v59; // eax + int v60; // esi + int v61; // ebp + int v62; // edx + int v63; // eax + int *v64; // eax + int *v65; // ebp + int v66; // ebx + int v67; // eax + int v68; // eax + int v69; // eax + int *v70; // edx + int *v71; // ebx + int *v72; // esi + int *v73; // eax + int v74; // edx + unsigned int v75; // ecx + long double v76; // fst7 + long double v77; // fst5 + int v78; // eax + unsigned __int8 *v79; // edx + int v80; // esi + int v81; // esi + int v82; // edi + int v83; // edx + int v84; // esi + int v85; // ecx + int v86; // ecx + int v87; // edx + char v88; // dl + int v89; // eax + long double v90; // fst6 + int v91; // edx + int v92; // ecx + int v93; // edi + int v94; // esi + int v95; // esi + int v96; // ecx + long double v97; // fst6 + char v98; // cl + int v99; // eax + int v100; // ecx + int *v101; // eax + long double v102; // fst7 + int *v103; // eax + int v104; // edx + unsigned int v105; // ecx + bool v106; // zf + int *v107; // eax + long double v108; // fst6 + long double v109; // fst5 + long double v110; // fst6 + int v111; // ebx + int *v112; // eax + int *v113; // esi + int v116; // eax + int *v117; // esi + int *v118; // eax + int v119; // eax + int v120; // ecx + int v121; // edx + int v122; // edi + int *v123; // edx + int *v124; // eax + int *v125; // ecx + int *v127; // eax + int v128; // ecx + double Str; // [esp+0h] [ebp-CCh] + int Size; // [esp+8h] [ebp-C4h] + int v131; // [esp+Ch] [ebp-C0h] + int v132; // [esp+20h] [ebp-ACh] + double v133; // [esp+20h] [ebp-ACh] + int *v134; // [esp+20h] [ebp-ACh] + int v135; // [esp+2Ch] [ebp-A0h] + int v136; // [esp+2Ch] [ebp-A0h] + int *v137; // [esp+2Ch] [ebp-A0h] + char *v138; // [esp+30h] [ebp-9Ch] + int v139; // [esp+30h] [ebp-9Ch] + int v140; // [esp+30h] [ebp-9Ch] + int v141; // [esp+30h] [ebp-9Ch] + int v142; // [esp+34h] [ebp-98h] + int v143; // [esp+38h] [ebp-94h] + int v144; // [esp+38h] [ebp-94h] + unsigned __int8 *v145; // [esp+38h] [ebp-94h] + int v146; // [esp+40h] [ebp-8Ch] + int v147; // [esp+40h] [ebp-8Ch] + double v148; // [esp+40h] [ebp-8Ch] + int v149; // [esp+48h] [ebp-84h] + int v150; // [esp+48h] [ebp-84h] + unsigned __int8 *i; // [esp+4Ch] [ebp-80h] + int *v152; // [esp+4Ch] [ebp-80h] + BOOL v153; // [esp+4Ch] [ebp-80h] + int v154; // [esp+50h] [ebp-7Ch] + double v155; // [esp+50h] [ebp-7Ch] + int v156; // [esp+58h] [ebp-74h] + unsigned __int8 *v157; // [esp+58h] [ebp-74h] + int v158; // [esp+58h] [ebp-74h] + int v159; // [esp+58h] [ebp-74h] + unsigned __int8 *v160; // [esp+5Ch] [ebp-70h] + int v161; // [esp+5Ch] [ebp-70h] + int v162; // [esp+60h] [ebp-6Ch] + int v163; // [esp+64h] [ebp-68h] + int v164; // [esp+68h] [ebp-64h] + int v165; // [esp+6Ch] [ebp-60h] + int v166; // [esp+70h] [ebp-5Ch] + unsigned int v167; // [esp+74h] [ebp-58h] + void *Src; // [esp+7Ch] [ebp-50h] + int v169; // [esp+80h] [ebp-4Ch] + int v170; // [esp+84h] [ebp-48h] + int v171; // [esp+88h] [ebp-44h] + int v172; // [esp+94h] [ebp-38h] BYREF + int v173; // [esp+98h] [ebp-34h] BYREF + int v174; // [esp+9Ch] [ebp-30h] BYREF + int v175; // [esp+A0h] [ebp-2Ch] BYREF + int v176; // [esp+A4h] [ebp-28h] BYREF + unsigned __int8 *v177; // [esp+A8h] [ebp-24h] BYREF + int *v178; // [esp+ACh] [ebp-20h] BYREF + + decimal_point = localeconv()->decimal_point; + v174 = 0; + v146 = strlen(decimal_point); + v178 = 0; + v142 = *a3; + v6 = a1; + v177 = a1; + while ( 2 ) + { + v7 = *v6; + v8 = v6; + switch ( *v6 ) + { + case 0u: + goto LABEL_13; + case 9u: + case 0xAu: + case 0xBu: + case 0xCu: + case 0xDu: + case 0x20u: + v177 = ++v6; + continue; + case 0x2Bu: + v164 = 0; + goto LABEL_219; + case 0x2Du: + v164 = 1; +LABEL_219: + v177 = v6 + 1; + v7 = v6[1]; + if ( v7 ) + { + v8 = v6 + 1; +LABEL_4: + v132 = 0; + if ( v7 == 48 ) + { + v22 = v8 + 1; + if ( (v8[1] & 0xDF) == 88 ) + { + v174 = __gethex_D2A(&v177, a3, a4, &v178, v164); + if ( v174 != 6 ) + goto LABEL_78; + v177 = a1; + v15 = v178; + if ( a2 ) + *a2 = a1; + goto LABEL_35; + } + do + { + v177 = v22; + v8 = v22; + v7 = *v22++; + } + while ( v7 == 48 ); + v15 = 0; + if ( !v7 ) + goto LABEL_31; + v132 = 1; + } + v170 = a3[4]; + v9 = v7; + if ( (unsigned int)(v7 - 48) > 9 ) + { + v135 = 0; + v12 = v8; + v10 = 0; + v149 = 0; + } + else + { + v138 = decimal_point; + v10 = 0; + v135 = 0; + v11 = 0; + do + { + if ( v10 <= 8 ) + { + v11 = v9 + 10 * v11 - 48; + } + else if ( v10 <= 15 ) + { + v135 = v9 + 10 * v135 - 48; + } + v12 = &v8[++v10]; + v177 = &v8[v10]; + v9 = (char)v8[v10]; + v7 = v8[v10]; + } + while ( (unsigned int)(v9 - 48) <= 9 ); + v149 = v11; + decimal_point = v138; + } + if ( *decimal_point == v7 ) + { + if ( !decimal_point[1] ) + { + v78 = 1; +LABEL_178: + v79 = &v12[v78]; + v177 = v79; + v9 = (char)*v79; + if ( v10 ) + { + v80 = v9 - 48; + v139 = v10; + v14 = 0; + for ( i = 0; (unsigned int)(v9 - 48) <= 9; v80 = v9 - 48 ) + { + v159 = v80; + ++v14; + v145 = v177; + if ( v80 ) + { + i = &i[(_DWORD)v14]; + if ( v14 == (unsigned __int8 *)1 ) + { + v121 = v139++; + } + else + { + v119 = v139; + v120 = v149; + v139 += (int)v14; + v121 = v139 - 1; + v122 = v135; + do + { + if ( v119 <= 8 ) + { + ++v119; + v120 *= 10; + } + else if ( ++v119 <= 16 ) + { + v122 *= 10; + } + } + while ( v121 != v119 ); + v135 = v122; + v149 = v120; + } + if ( v121 <= 8 ) + { +LABEL_217: + v14 = 0; + v149 = v159 + 10 * v149; + } + else + { + v14 = 0; + if ( v139 <= 16 ) + v135 = v80 + 10 * v135; + } + } + v177 = v145 + 1; + v9 = (char)v145[1]; + } + } + else + { + if ( v9 == 48 ) + { + v100 = 1 - (_DWORD)v79; + do + { + v14 = &v79[v100]; + v177 = ++v79; + v9 = (char)*v79; + } + while ( v9 == 48 ); + } + else + { + v14 = 0; + } + if ( (unsigned int)(v9 - 49) <= 8 ) + { + v8 = v177; + v139 = 1; + v159 = v9 - 48; + i = v14 + 1; + v145 = v177; + goto LABEL_217; + } + i = 0; + v139 = 0; + } + v143 = 1; +LABEL_20: + if ( (v9 & 0xFFFFFFDF) != 69 ) + { + v156 = 0; + goto LABEL_22; + } + if ( !(v132 | (unsigned int)v14 | v139) ) + goto LABEL_30; + a1 = v177++; + v9 = (char)a1[1]; + if ( (_BYTE)v9 == 43 ) + { + v154 = 0; + } + else + { + if ( (_BYTE)v9 != 45 ) + { + v154 = 0; + goto LABEL_41; + } + v154 = 1; + } + v177 = a1 + 2; + v9 = (char)a1[2]; +LABEL_41: + if ( (unsigned int)(v9 - 48) > 9 ) + { + v156 = 0; + v177 = a1; + } + else + { + if ( v9 == 48 ) + { + v16 = v177 + 1; + do + { + v177 = v16; + v9 = (char)*v16++; + } + while ( v9 == 48 ); + } + v156 = 0; + if ( (unsigned int)(v9 - 49) <= 8 ) + { + v17 = v177; + v18 = v9 - 48; + v157 = v177++; + v9 = (char)v157[1]; + if ( (unsigned int)(v9 - 48) > 9 ) + goto LABEL_352; + v160 = v14; + v19 = v17 + 2; + do + { + v177 = v19; + v20 = v19++; + v18 = v9 + 10 * v18 - 48; + v9 = (char)*(v19 - 1); + } + while ( (unsigned int)(v9 - 48) <= 9 ); + v21 = v20 - v157; + v14 = v160; + v156 = 19999; + if ( v21 <= 8 ) + { +LABEL_352: + v156 = v18; + if ( v18 > 19999 ) + v156 = 19999; + } + if ( v154 ) + v156 = -v156; + } + } +LABEL_22: + if ( !v139 ) + { + if ( (unsigned int)v14 | v132 ) + goto LABEL_78; + if ( v143 ) + goto LABEL_30; + if ( v9 != 105 ) + { + if ( v9 > 105 ) + { + if ( v9 != 110 ) + goto LABEL_30; +LABEL_29: + if ( !__match_D2A((char **)&v177, "an") ) + goto LABEL_30; + v174 = 4; + *a4 = a3[2] + 1; + if ( *v177 != 40 ) + goto LABEL_78; + v174 = __hexnan_D2A(&v177, a3, a5); +LABEL_227: + *a4 = a3[2] + 1; + v15 = v178; + goto LABEL_31; + } + if ( v9 != 73 ) + { + if ( v9 != 78 ) + { +LABEL_30: + v174 = 6; + v177 = a1; + v15 = v178; + goto LABEL_31; + } + goto LABEL_29; + } + } + if ( !__match_D2A((char **)&v177, "nf") ) + goto LABEL_30; + --v177; + if ( !__match_D2A((char **)&v177, "inity") ) + ++v177; + v174 = 3; + goto LABEL_227; + } + v174 = 1; + v166 = v156 - (_DWORD)i; + v31 = a3[3] & 3; + v163 = v31 - v164; + if ( v31 != 2 ) + { + v163 = v164 + 1; + if ( v31 != 3 ) + v163 = v31 == 0; + } + if ( !v10 ) + v10 = v139; + v32 = v139; + if ( v139 > 16 ) + v32 = 16; + v33 = (long double)(unsigned int)v149; + v133 = v33; + if ( v139 > 9 ) + v133 = v33 * dbl_4EFDD8[v32] + (long double)(unsigned int)v135; + if ( v142 > 53 || v139 > 15 ) + { + v38 = v156 - (_DWORD)i; + goto LABEL_105; + } + if ( !v166 ) + { + v37 = sub_42B4C0(a3, a4, a5, v133, 1, v163, &v174); + goto LABEL_97; + } + if ( v166 <= 0 ) + { + v38 = v156 - (_DWORD)i; + if ( v166 < -22 ) + goto LABEL_105; + Str = v133 / __tens_D2A[(_DWORD)&i[-v156]]; + } + else + { + if ( v166 <= 22 ) + { + _EDX = LODWORD(v133); + if ( LODWORD(v133) ) + { + __asm { tzcnt ecx, edx } + v136 = 53 - _ECX; + } + else + { + _ECX = HIDWORD(v133) | 0x100000; + __asm { tzcnt ecx, ecx } + v136 = 21 - _ECX; + } + v131 = v163; + Size = v136 + dword_4EFD80[v166] <= 53; + Str = v133 * __tens_D2A[v166]; + v133 = Str; + goto LABEL_96; + } + v41 = v166 + v139 - v32; + if ( 37 - v139 < v166 ) + goto LABEL_106; + Str = v133 * __tens_D2A[15 - v139] * __tens_D2A[v166 - (15 - v139)]; + } + Size = 0; + v133 = Str; + v131 = v163; +LABEL_96: + v37 = sub_42B4C0(a3, a4, a5, Str, Size, v131, &v174); +LABEL_97: + if ( v37 ) + goto LABEL_78; + v38 = 0; +LABEL_105: + v41 = v38 + v139 - v32; + if ( v41 <= 0 ) + { + if ( v41 ) + { + v81 = -v41; + if ( (v81 & 0xF) != 0 ) + v133 = v133 / __tens_D2A[v81 & 0xF]; + v41 = v81 & 0xFFFFFFF0; + if ( v41 ) + { + v82 = v41 >> 4; + if ( v41 <= 255 ) + { + v86 = 0; + } + else + { + v83 = v41 >> 4; + v84 = 0; + do + { + v83 -= 16; + v85 = HIDWORD(v133) >> 20; + HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; + v86 = v84 + (v85 & 0x7FF) - 1023; + v84 = v86; + v133 = v133 * 1.0e-256; + } + while ( v83 > 15 ); + v82 &= 0xFu; + } + v87 = (HIDWORD(v133) >> 20) & 0x7FF; + HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; + v41 = v86 + v87 - 1023; + if ( v82 ) + { + v42 = v133; + v88 = 0; + v89 = 0; + v90 = v133; + do + { + if ( (v82 & 1) != 0 ) + { + v90 = v90 * __tinytens_D2A[v89]; + v88 = 1; + } + ++v89; + v82 >>= 1; + } + while ( v82 ); + if ( v88 ) + v42 = v90; + goto LABEL_111; + } + } + } + goto LABEL_109; + } +LABEL_106: + if ( (v41 & 0xF) != 0 ) + v133 = v133 * __tens_D2A[v41 & 0xF]; + v41 &= 0xFFFFFFF0; + if ( v41 ) + { + v91 = v41 >> 4; + if ( v41 <= 255 ) + { + v95 = 0; + } + else + { + v92 = v41 >> 4; + v93 = 0; + do + { + v92 -= 16; + v94 = HIDWORD(v133) >> 20; + HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; + v95 = v93 + (v94 & 0x7FF) - 1023; + v93 = v95; + v133 = v133 * 1.0e256; + } + while ( v92 > 15 ); + v91 &= 0xFu; + } + v96 = (HIDWORD(v133) >> 20) & 0x7FF; + HIDWORD(v133) = HIDWORD(v133) & 0x800FFFFF | 0x3FF00000; + v42 = v133; + v41 = v95 + v96 - 1023; + if ( v91 ) + { + v97 = v133; + v98 = 0; + v99 = 0; + do + { + if ( (v91 & 1) != 0 ) + { + v97 = v97 * __bigtens_D2A[v99]; + v98 = 1; + } + ++v99; + v91 >>= 1; + } + while ( v91 ); + if ( v98 ) + v42 = v97; + } + goto LABEL_111; + } +LABEL_109: + v42 = v133; +LABEL_111: + v43 = __d2b_D2A(v42, &v176, &v175); + v44 = v175; + v45 = v176 + v41; + v178 = v43; + v46 = v175 - v142; + v176 = v45; + if ( v175 - v142 > 0 ) + { + __rshift_D2A((int)v43, v175 - v142); + v44 = v142; + v176 += v46; + v45 = v176; + v175 = v142; + } + v171 = v45 + v44 - v142; + if ( a3[2] + 1 < v171 ) + { + v144 = 0; + goto LABEL_258; + } + v47 = a3[1]; + v162 = v47; + if ( v171 >= v47 ) + { + v144 = 0; + } + else + { + v48 = v45 - v47; + if ( v45 - v47 > 0 ) + { + v101 = __lshift_D2A(v178, v48); + v175 += v48; + v178 = v101; + } + else if ( v45 != v47 ) + { + v49 = v48 + v44; + v15 = v178; + v175 = v49; + if ( v49 > 0 ) + { + __rshift_D2A((int)v178, v162 - v45); + } + else + { + if ( v49 < -1 ) + { + v178[4] = 0; + v15[5] = 0; + *a4 = v162; + if ( !v170 ) + { + v30 = 80; + goto LABEL_77; + } + goto LABEL_254; + } + v175 = 1; + v178[4] = 1; + v15[5] = 1; + } + } + v176 = v162; + if ( v170 ) + { + v50 = v171; + v144 = 1; + v171 = v162; + if ( v50 + 1 < v162 ) + { + v15 = v178; + v178[4] = 0; + v15[5] = 0; + *a4 = v162; + goto LABEL_254; + } + } + else + { + v144 = 1; + v171 = v162; + } + } + v51 = __s2b_D2A((int)v8, v10, v139, v149, v146); + v141 = 0; + v167 = (unsigned int)v51; + v150 = (v166 >> 31) & (unsigned int)&i[-v156]; + v165 = v166 & ~(v166 >> 31); + Src = v51 + 3; + while ( 1 ) + { + v137 = __Balloc_D2A(*(_DWORD *)(v167 + 4)); + memcpy(v137 + 3, Src, 4 * *(_DWORD *)(v167 + 16) + 8); + v52 = __Balloc_D2A(v178[1]); + memcpy(v52 + 3, v178 + 3, 4 * v178[4] + 8); + v53 = v175; + v54 = v176; + v55 = v176 + v141; + v147 = v175 - v141; + v134 = __i2b_D2A(1); + if ( v55 < 0 ) + { + v56 = v165 - v55; + v57 = v150; + } + else + { + v56 = v166 & ~(v166 >> 31); + v57 = v150 + v55; + } + v58 = v54 + v53 - v142; + v59 = v142 + 1 - v147; + if ( v162 > v58 ) + v59 += v58 - v162; + v60 = v57 + v59; + v61 = v56 + v59; + v62 = v57 + v59; + if ( v57 + v59 > v61 ) + v62 = v61; + v63 = v57; + if ( v57 > v62 ) + v63 = v62; + if ( v63 > 0 ) + { + v60 -= v63; + v61 -= v63; + v57 -= v63; + } + if ( v150 > 0 ) + { + v134 = (int *)__pow5mult_D2A(v134, v150); + v152 = __mult_D2A((int)v134, (int)v52); + __Bfree_D2A((unsigned int)v52); + v52 = v152; + } + if ( v60 - v141 > 0 ) + { + v52 = __lshift_D2A(v52, v60 - v141); + } + else if ( v60 != v141 ) + { + __rshift_D2A((int)v52, v141 - v60); + } + if ( v166 > 0 ) + v137 = (int *)__pow5mult_D2A(v137, v165); + if ( v61 > 0 ) + v137 = __lshift_D2A(v137, v61); + if ( v57 > 0 ) + v134 = __lshift_D2A(v134, v57); + v64 = __diff_D2A((int)v52, (int)v137); + v65 = v64; + if ( v64[4] <= 1 && !v64[5] ) + goto LABEL_61; + v66 = v64[3]; + v64[3] = 0; + v67 = __cmp_D2A((int)v64, (int)v134); + if ( v163 && v67 <= 0 ) + { + v68 = v163 & 1; + v141 = v66 ^ v68; + if ( v68 == v66 ) + { + v174 = v68 == 0 ? 33 : 17; + goto LABEL_61; + } + if ( v66 ) + { + v174 = 33; + v148 = 1.0; + v158 = 0; + v155 = 1.0; + v169 = 32; + v153 = 0; + goto LABEL_158; + } + v174 = 17; + if ( v171 != v162 ) + { + v69 = v142; + v70 = v178; + if ( v142 > 31 ) + { + while ( !v178[v66 + 5] ) + { + v69 -= 32; + ++v66; + if ( v69 <= 31 ) + goto LABEL_260; + } + } + else + { + v69 = v142; +LABEL_260: + if ( v69 <= 1 ) + goto LABEL_262; + v113 = &v178[v66 + 5]; + _EBX = *v113; + __asm { tzcnt ecx, ebx } + *v113 = (unsigned int)*v113 >> _ECX; + if ( v69 - 1 <= _ECX ) + { +LABEL_262: + v176 = v171 - 1; + v175 = v142; + v178 = __set_ones_D2A((unsigned int)v70, v142); + goto LABEL_61; + } + } + } + } + else + { + if ( v67 < 0 ) + { + if ( v66 ) + goto LABEL_335; + v174 = 33; + if ( v147 > 1 || v171 == v162 || (v144 & 1) != 0 ) + goto LABEL_61; + v65 = __lshift_D2A(v65, 1); + if ( __cmp_D2A((int)v65, (int)v134) <= 0 ) + goto LABEL_271; + v174 = 17; + v144 = 0; + goto LABEL_293; + } + if ( !v67 ) + { + if ( v66 ) + { + if ( !v144 ) + goto LABEL_340; + v117 = v178; + v118 = v178 + 5; + while ( &v178[(v175 >> 5) + 5] > v118 ) + { + if ( *v118++ != -1 ) + goto LABEL_340; + } + if ( (v175 & 0x1F) != 0 && (*v118 | (-1 << (v175 & 0x1F))) != -1 ) + { +LABEL_340: + v174 = 17; + goto LABEL_326; + } + v178[4] = 1; + v117[5] = 1; + v175 = 1; + v176 = v142 + v162 - 1; + v116 = v144; + v174 = 33; +LABEL_272: + v144 = v142 - v116; + if ( v142 != v116 ) + { + if ( v142 - v116 <= 0 ) + __rshift_D2A((int)v178, v116 - v142); + else + v178 = __lshift_D2A(v178, v144); + v23 = v176 - v144; + v144 = 0; + v176 = v23; +LABEL_63: + *a4 = v23; + __Bfree_D2A((unsigned int)v52); + __Bfree_D2A((unsigned int)v137); + __Bfree_D2A((unsigned int)v134); + __Bfree_D2A(v167); + __Bfree_D2A((unsigned int)v65); + if ( a3[2] >= v176 ) + goto LABEL_259; + v24 = a3[3] & 3; + switch ( v24 ) + { + case 2: + if ( !v164 ) + goto LABEL_258; + break; + case 3: + if ( v164 ) + goto LABEL_258; + break; + case 1: +LABEL_258: + v174 = 163; + v178[4] = 0; + *_errno() = 34; + *a4 = a3[2] + 1; +LABEL_259: + v15 = v178; +LABEL_72: + if ( !v144 ) + goto LABEL_31; + if ( !v170 ) + { + v29 = v174 & 0x30; + v30 = v174 & 0xFFFFFFF8; + if ( v15[4] > 0 ) + v30 |= 2u; + v174 = v30; + if ( v29 ) + { +LABEL_77: + v174 = v30 | 0x40; + *_errno() = 34; + } +LABEL_78: + v15 = v178; +LABEL_31: + if ( a2 ) + *a2 = v177; + if ( v164 ) + v174 |= 8u; +LABEL_35: + if ( v15 ) + { + __copybits_D2A(a5, v142, (int)v15); + __Bfree_D2A((unsigned int)v178); + } + return v174; + } +LABEL_254: + v15[4] = 0; + v174 = 80; + *_errno() = 34; + v15 = v178; + goto LABEL_31; + default: + break; + } + __Bfree_D2A((unsigned int)v178); + v178 = 0; + v174 = 17; + *a4 = a3[2]; + v25 = *a3; + v26 = &a5[(*a3 + 31) >> 5]; + for ( j = a5; v26 > j; *(j - 1) = -1 ) + ++j; + v28 = v25 & 0x1F; + if ( v28 ) + *(v26 - 1) = (unsigned int)*(v26 - 1) >> (32 - v28); + v15 = 0; + goto LABEL_72; + } +LABEL_62: + v23 = v176; + goto LABEL_63; + } + if ( v147 != 1 ) + { + v174 = 33; +LABEL_326: + if ( v142 <= v147 || (v144 & 1) != 0 ) + { + v123 = v178; + if ( (v178[5] & 1) != 0 ) + { + if ( v66 ) + { + v127 = __increment_D2A(v178); + v128 = v127[4]; + v178 = v127; + _BitScanReverse((unsigned int *)&v127, v127[v128 + 4]); + if ( (-v175 & 0x1F) != ((unsigned int)v127 ^ 0x1F) ) + ++v175; + v174 = 33; + } + else if ( v147 == 1 ) + { +LABEL_322: + v123[4] = 0; + v174 = 80; + v176 = v162; + } + else + { + v124 = v178 + 5; + v125 = &v178[v178[4] + 5]; + while ( !*v124 ) + { + *v124++ = -1; + if ( v125 <= v124 ) + goto LABEL_335; + } + --*v124; +LABEL_335: + v174 = 17; + } + } +LABEL_61: + if ( v144 ) + goto LABEL_62; + } +LABEL_271: + v116 = v175; + goto LABEL_272; + } + v174 = 1; + if ( v171 == v162 ) + { + v174 = 33; + if ( v178[4] == 1 && v178[5] == 1 ) + v170 = 1; + goto LABEL_61; + } +LABEL_293: + v176 -= v142; + v175 = v142; + v178 = __set_ones_D2A((unsigned int)v178, v142); + goto LABEL_61; + } + v102 = __ratio_D2A((int)v65, (int)v134); + if ( v102 > 2.0 ) + { + v108 = v102 * 0.5; + v169 = v66 == 0 ? 32 : 16; + v153 = v66 == 0; + v155 = v108; + if ( v108 >= 2147483647.0 ) + { + v158 = 0; + v148 = v108; + goto LABEL_251; + } + v158 = (int)v108; + v109 = (long double)(int)v108; + v148 = v109; + v110 = v108 - v109; + v155 = v110; + if ( v163 == 1 ) + { + if ( v66 ) + goto LABEL_251; + } + else + { + if ( v163 != 2 ) + { + if ( v110 < 0.5 ) + { +LABEL_251: + v141 = 0; + goto LABEL_158; + } +LABEL_268: + ++v158; + v169 = 48 - v169; + v148 = (double)v158; + goto LABEL_251; + } + if ( !v66 ) + goto LABEL_251; + } + if ( v155 <= 0.0 ) + goto LABEL_251; + goto LABEL_268; + } + if ( v66 ) + { + v158 = 0; + v148 = 1.0; + v169 = 32; + v155 = 1.0; + v141 = 0; + v153 = 0; + goto LABEL_158; + } + v141 = 0; + } + if ( v147 <= 1 && (v144 & 1) != 0 ) + { + v144 = 1; + v123 = v178; + goto LABEL_322; + } + v158 = 0; + v148 = 1.0; + v169 = 16; + v155 = 1.0; + v153 = 1; +LABEL_158: + v161 = v175 + v176; + if ( (v144 & 1) == 0 && v175 < v142 ) + { + v111 = v142 - v175; + v112 = __lshift_D2A(v178, v142 - v175); + v176 -= v111; + v178 = v112; + v175 = v142; + } + v71 = __d2b_D2A(v148, &v172, &v173); + if ( v172 < 0 ) + { + __rshift_D2A((int)v71, -v172); + } + else if ( v172 ) + { + v71 = __lshift_D2A(v71, v172); + } + v72 = v178; + if ( v153 ) + { + v73 = __diff_D2A((int)v178, (int)v71); + v178 = v73; + if ( !v144 ) + { + v74 = v72[4]; + if ( v73[4] <= v74 - 1 + || (_BitScanReverse(&v75, v73[v74 + 4]), + _BitScanReverse((unsigned int *)&v74, v72[v74 + 4]), + (v74 ^ 0x1F) < (int)(v75 ^ 0x1F)) ) + { + if ( v171 != v162 ) + { + v107 = __lshift_D2A(v73, 1); + --v176; + --v171; + v178 = v107; + __Bfree_D2A((unsigned int)v71); + __Bfree_D2A((unsigned int)v72); +LABEL_245: + v144 = 0; + v141 = __trailz_D2A((int)v178); + goto LABEL_176; + } + --v175; + v144 = v153; + } + } + } + else + { + v103 = __sum_D2A(v178, v71); + v104 = v103[4]; + v178 = v103; + if ( v72[4] <= v104 - 1 + || (_BitScanReverse(&v105, v103[v104 + 4]), + _BitScanReverse((unsigned int *)&v104, v72[v104 + 4]), + (v104 ^ 0x1F) > (int)(v105 ^ 0x1F)) ) + { + if ( v144 ) + { + v106 = ++v175 == v142; + v144 = !v106; + } + else + { + __rshift_D2A((int)v103, 1); + ++v176; + ++v171; + v158 = 0; + } + } + } + __Bfree_D2A((unsigned int)v71); + __Bfree_D2A((unsigned int)v72); + if ( v141 ) + goto LABEL_61; + if ( v176 + v175 == v161 && v158 ) + { + v76 = v148 * 5.0e-16; + v77 = v155 - 0.5; + if ( -v76 <= v77 ) + { + if ( v77 > v76 && 1.0 - v76 > v155 ) + { +LABEL_60: + v174 |= v169; + goto LABEL_61; + } + } + else if ( v155 > v76 ) + { + goto LABEL_60; + } + } + if ( !v144 ) + goto LABEL_245; +LABEL_176: + __Bfree_D2A((unsigned int)v52); + __Bfree_D2A((unsigned int)v137); + __Bfree_D2A((unsigned int)v134); + __Bfree_D2A((unsigned int)v65); + } + } + v140 = v9; + v39 = 1; + v40 = decimal_point[1]; + while ( v12[v39] == v40 ) + { + v40 = decimal_point[++v39]; + if ( !v40 ) + { + v78 = v39; + goto LABEL_178; + } + } + v9 = v140; + } + v139 = v10; + v14 = 0; + i = 0; + v143 = 0; + goto LABEL_20; + } +LABEL_13: + result = 6; + v174 = 6; + if ( !a2 ) + return result; + *a2 = a1; + return v174; + default: + v164 = 0; + goto LABEL_4; + } + } +} +// 4EFD80: using guessed type int dword_4EFD80[22]; +// 4EFDD8: using guessed type double dbl_4EFDD8[]; +// 4EFE20: using guessed type double __tens_D2A[24]; +// 4EFEE0: using guessed type double __tinytens_D2A[4]; +// 4EFF20: using guessed type double __bigtens_D2A[4]; + +//----- (0042D5C0) -------------------------------------------------------- +int __cdecl __hexnan_D2A(unsigned __int8 **a1, int *a2, int *a3) +{ + int *v3; // edx + unsigned __int8 *v4; // ebx + unsigned int v5; // eax + unsigned __int8 v6; // dl + unsigned int v7; // edx + unsigned __int8 *v8; // eax + int *v9; // ebp + int v10; // edi + int *v11; // esi + char v12; // cl + int v13; // edx + int *v14; // edx + char v15; // bl + int v16; // eax + char v17; // di + char v18; // bp + unsigned int v19; // ebx + int *v20; // edi + int *v21; // esi + unsigned int v22; // eax + unsigned int v23; // eax + int v24; // eax + int *v25; // eax + char i; // dl + int v29; // edx + int *v30; // ebx + unsigned int v31; // eax + int v32; // edx + int v33; // eax + int v34; // [esp+0h] [ebp-3Ch] + int *v35; // [esp+4h] [ebp-38h] + char v36; // [esp+4h] [ebp-38h] + int v37; // [esp+8h] [ebp-34h] + int *v38; // [esp+Ch] [ebp-30h] + int *v39; // [esp+10h] [ebp-2Ch] + unsigned __int8 *v40; // [esp+14h] [ebp-28h] + int v41; // [esp+1Ch] [ebp-20h] + + if ( !byte_1541D50 ) + hexdig_init_D2A(); + v41 = *a2 & 0x1F; + v3 = &a3[*a2 >> 5]; + if ( v41 ) + { + v38 = &a3[*a2 >> 5]; + v39 = v3 + 1; + } + else + { + v39 = &a3[*a2 >> 5]; + v38 = v3 - 1; + } + *(v39 - 1) = 0; + v4 = *a1; + v5 = (*a1)[1]; + v6 = (*a1)[1]; + if ( !v6 ) + return 4; + while ( v5 <= 0x20 ) + { + v5 = v4[2]; + ++v4; + v6 = v5; + if ( !v5 ) + return 4; + } + if ( v6 == 48 && (v4[2] & 0xDF) == 88 && (v7 = v4[3], (unsigned __int8)v7 > 0x20u) ) + { + v8 = v4 + 3; + v4 += 2; + } + else + { + v7 = v4[1]; + v8 = v4 + 1; + if ( !v4[1] ) + return 4; + } + v9 = v38; + v37 = 0; + v10 = 0; + v34 = 0; + v11 = v38; + do + { + while ( 1 ) + { + v12 = __hexdig_D2A[v7]; + if ( v12 ) + break; + if ( v7 > 0x20 ) + { + if ( v7 == 41 && v34 ) + { + *a1 = v4 + 2; + goto LABEL_25; + } + while ( 1 ) + { + ++v8; + if ( v7 == 41 ) + break; + v7 = (char)*v8; + if ( !*v8 ) + return 4; + } + *a1 = v8; + return 4; + } + if ( v34 <= v37 ) + { +LABEL_52: + for ( i = v8[1]; (unsigned __int8)i <= 0x20u; ++v8 ) + i = v8[2]; + if ( i != 48 ) + goto LABEL_23; + if ( (v8[2] & 0xDF) != 88 ) + goto LABEL_23; + v7 = v8[3]; + if ( (unsigned __int8)v7 <= 0x20u ) + goto LABEL_23; + v4 = v8 + 2; + v8 += 3; + } + else + { + if ( v9 < v11 && v10 <= 7 ) + { + v40 = v8; + v29 = *v9; + v30 = v9; + v36 = 4 * (8 - v10); + do + { + v31 = v30[1]; + ++v30; + v32 = (v31 << (32 - v36)) | v29; + v33 = v31 >> v36; + *(v30 - 1) = v32; + *v30 = v33; + v29 = v33; + } + while ( v30 < v11 ); + v8 = v40; + } + if ( v9 > a3 ) + { + v11 = v9 - 1; + *--v9 = 0; + v37 = v34; + v10 = 0; + goto LABEL_52; + } + v7 = v8[1]; + v4 = v8; + v10 = 8; + ++v8; + if ( !v7 ) + goto LABEL_24; + } + } + ++v10; + ++v34; + if ( v10 <= 8 ) + { + v13 = 16 * *v9; +LABEL_22: + *v9 = v13 | v12 & 0xF; + goto LABEL_23; + } + if ( v9 > a3 ) + { + *(v9 - 1) = 0; + v13 = 0; + --v9; + v10 = 1; + goto LABEL_22; + } +LABEL_23: + v7 = v8[1]; + v4 = v8++; + } + while ( v7 ); +LABEL_24: + if ( !v34 ) + return 4; +LABEL_25: + if ( v11 > v9 && v10 <= 7 ) + { + v14 = v9; + v35 = v9; + v15 = 4 * (8 - v10); + v16 = *v9; + v17 = 32 - v15; + v18 = v15; + do + { + v19 = v14[1]; + *v14++ = (v19 << v17) | v16; + v16 = v19 >> v18; + *v14 = v19 >> v18; + } + while ( v14 < v11 ); + v9 = v35; + } + if ( a3 >= v9 ) + { + v24 = *(v39 - 1); + if ( v41 ) + { + v24 &= 0xFFFFFFFF >> (32 - v41); + *(v39 - 1) = v24; + } + } + else + { + v20 = a3; + v21 = v9; + do + *v20++ = *v21++; + while ( v38 >= v21 ); + v22 = 4; + if ( (char *)v38 + 1 >= (char *)v9 + 1 ) + v22 = 4 * ((unsigned int)((char *)v38 - (char *)v9) >> 2) + 4; + v23 = (unsigned int)a3 + v22; + do + { + v23 += 4; + *(_DWORD *)(v23 - 4) = 0; + } + while ( (unsigned int)v38 >= v23 ); + v24 = *(v39 - 1); + } + if ( v24 ) + return 5; + if ( v38 != a3 ) + { + v25 = v38; + while ( 1 ) + { + if ( *--v25 ) + return 5; + if ( a3 == v25 ) + { + v38 = v25; + break; + } + } + } + *v38 = 1; + return 5; +} +// 1541D50: using guessed type char byte_1541D50; + +//----- (0042D9B0) -------------------------------------------------------- +void __usercall sub_42D9B0(int a1@) +{ + LONG v2; // eax + + switch ( Target ) + { + case 2: +LABEL_10: + EnterCriticalSection((LPCRITICAL_SECTION)(24 * a1 + 22289536)); + return; + case 0: + v2 = InterlockedExchange(&Target, 1); + if ( v2 ) + { + if ( v2 != 2 ) + goto LABEL_5; + Target = 2; + } + else + { + InitializeCriticalSection(&stru_1541C80); + InitializeCriticalSection(&stru_1541C98); + atexit(sub_42DA80); + Target = 2; + } + goto LABEL_10; + case 1: + do + { + Sleep(1u); +LABEL_5: + ; + } + while ( Target == 1 ); + if ( Target == 2 ) + goto LABEL_10; + break; + } +} + +//----- (0042DA80) -------------------------------------------------------- +void __cdecl sub_42DA80() +{ + if ( InterlockedExchange(&Target, 3) == 2 ) + { + DeleteCriticalSection(&stru_1541C80); + DeleteCriticalSection(&stru_1541C98); + } +} + +//----- (0042DAD0) -------------------------------------------------------- +int *__cdecl __Balloc_D2A(int a1) +{ + int v1; // esi + int *result; // eax + bool v3; // zf + int *v4; // [esp+1Ch] [ebp-10h] + + sub_42D9B0(0); + if ( a1 > 9 ) + goto LABEL_2; + result = (int *)dword_1541C40[a1]; + if ( result ) + { + v3 = Target == 2; + dword_1541C40[a1] = *result; + if ( !v3 ) + goto LABEL_4; +LABEL_8: + v4 = result; + LeaveCriticalSection(&stru_1541C80); + result = v4; + goto LABEL_4; + } + result = (int *)off_4E8048; + v1 = 1 << a1; + if ( ((unsigned int)(4 * (1 << a1) + 27) >> 3) + (((_BYTE *)off_4E8048 - (_BYTE *)&unk_1541340) >> 3) > 0x120 ) + { +LABEL_2: + v1 = 1 << a1; + result = (int *)malloc((4 * (1 << a1) + 27) & 0xFFFFFFF8); + if ( !result ) + return result; + } + else + { + off_4E8048 = (char *)off_4E8048 + ((4 * (1 << a1) + 27) & 0xFFFFFFF8); + } + v3 = Target == 2; + result[1] = a1; + result[2] = v1; + if ( v3 ) + goto LABEL_8; +LABEL_4: + result[4] = 0; + result[3] = 0; + return result; +} +// 4E8048: using guessed type void *off_4E8048; +// 1541C40: using guessed type int dword_1541C40[10]; + +//----- (0042DBC0) -------------------------------------------------------- +void __cdecl __Bfree_D2A(unsigned int a1) +{ + int v1; // eax + bool v2; // zf + int v3; // edx + + if ( a1 ) + { + if ( *(int *)(a1 + 4) <= 9 ) + { + sub_42D9B0(0); + v1 = *(_DWORD *)(a1 + 4); + v2 = Target == 2; + v3 = dword_1541C40[v1]; + dword_1541C40[v1] = a1; + *(_DWORD *)a1 = v3; + if ( v2 ) + LeaveCriticalSection(&stru_1541C80); + } + else + { + __mingw_free(a1); + } + } +} +// 1541C40: using guessed type int dword_1541C40[10]; + +//----- (0042DC20) -------------------------------------------------------- +int *__cdecl __multadd_D2A(int *a1, int a2, int a3) +{ + int v3; // ecx + __int64 v4; // rdi + unsigned __int64 v5; // rax + int *v6; // ebp + int *v8; // eax + __int64 v9; // [esp+10h] [ebp-2Ch] + int v10; // [esp+1Ch] [ebp-20h] + + v3 = 0; + HIDWORD(v4) = a3; + LODWORD(v4) = a3 >> 31; + v10 = a1[4]; + LODWORD(v9) = a2; + do + { + HIDWORD(v9) = a2 >> 31; + v5 = __PAIR64__(v4, HIDWORD(v4)) + v9 * (unsigned int)a1[v3 + 5]; + a1[v3++ + 5] = v5; + HIDWORD(v4) = HIDWORD(v5); + LODWORD(v4) = 0; + } + while ( v10 > v3 ); + v6 = a1; + if ( v4 ) + { + if ( a1[2] <= v10 ) + { + v8 = __Balloc_D2A(a1[1] + 1); + v6 = v8; + if ( v8 ) + { + memcpy(v8 + 3, a1 + 3, 4 * a1[4] + 8); + __Bfree_D2A((unsigned int)a1); + v6[v10 + 5] = HIDWORD(v4); + v6[4] = v10 + 1; + } + } + else + { + v6 = a1; + a1[v10 + 5] = HIDWORD(v5); + a1[4] = v10 + 1; + } + } + return v6; +} + +//----- (0042DD00) -------------------------------------------------------- +int *__cdecl __i2b_D2A(int a1) +{ + int *result; // eax + + result = __Balloc_D2A(1); + if ( result ) + { + result[4] = 1; + result[5] = a1; + } + return result; +} + +//----- (0042DD30) -------------------------------------------------------- +int *__cdecl __mult_D2A(int a1, int a2) +{ + int v2; // ebp + int v3; // ebx + int v4; // esi + int v5; // edi + int *v6; // eax + unsigned int *v7; // eax + unsigned int *i; // edx + unsigned int v9; // esi + unsigned int *v10; // ebp + unsigned __int64 v11; // rax + int v12; // eax + unsigned int v14; // [esp+14h] [ebp-48h] + unsigned int v15; // [esp+18h] [ebp-44h] + unsigned int v16; // [esp+1Ch] [ebp-40h] + unsigned int v17; // [esp+20h] [ebp-3Ch] + unsigned int *v18; // [esp+24h] [ebp-38h] + unsigned int v19; // [esp+28h] [ebp-34h] + int v20; // [esp+2Ch] [ebp-30h] + unsigned int v21; // [esp+30h] [ebp-2Ch] + int *v22; // [esp+38h] [ebp-24h] + unsigned int *v23; // [esp+3Ch] [ebp-20h] + + v2 = a1; + v3 = a2; + v4 = *(_DWORD *)(a1 + 16); + v5 = *(_DWORD *)(a2 + 16); + if ( v4 >= v5 ) + { + v5 = *(_DWORD *)(a1 + 16); + v4 = *(_DWORD *)(a2 + 16); + v3 = a1; + v2 = a2; + } + v20 = v5 + v4; + v6 = __Balloc_D2A(*(_DWORD *)(v3 + 4) + (*(_DWORD *)(v3 + 8) < v5 + v4)); + v22 = v6; + if ( v6 ) + { + v7 = (unsigned int *)(v6 + 5); + v23 = v7; + for ( i = &v7[v20]; i > v7; ++v7 ) + *v7 = 0; + v17 = v3 + 20 + 4 * v5; + v15 = v2 + 20; + v19 = v2 + 20 + 4 * v4; + if ( v2 + 20 < v19 ) + { + v21 = 4; + if ( v17 >= v3 + 21 ) + v21 = 4 * ((unsigned int)(4 * v5 - 1) >> 2) + 4; + v18 = v23; + do + { + while ( 1 ) + { + v15 += 4; + if ( *(_DWORD *)(v15 - 4) ) + break; + ++v18; + if ( v19 <= v15 ) + goto LABEL_15; + } + v16 = *(_DWORD *)(v15 - 4); + v9 = 0; + v14 = v3 + 20; + v10 = v18; + do + { + v14 += 4; + v11 = v9 + *v10++ + *(unsigned int *)(v14 - 4) * (unsigned __int64)v16; + *(v10 - 1) = v11; + v9 = HIDWORD(v11); + } + while ( v17 > v14 ); + LODWORD(v11) = v18++; + *(_DWORD *)(v11 + v21) = HIDWORD(v11); + } + while ( v19 > v15 ); + } +LABEL_15: + if ( v20 > 0 ) + { + v12 = v20; + do + { + if ( v23[v12 - 1] ) + break; + --v12; + } + while ( v12 ); + v20 = v12; + } + v22[4] = v20; + } + return v22; +} + +//----- (0042DED0) -------------------------------------------------------- +int __cdecl __pow5mult_D2A(int *a1, int a2) +{ + int *v2; // esi + int v3; // ebx + int v4; // ebp + int **v5; // edi + int *v6; // esi + int *v7; // eax + int *v9; // eax + int *v10; // eax + LPCRITICAL_SECTION lpCriticalSection; // [esp+0h] [ebp-2Ch] + + v2 = a1; + if ( (a2 & 3) == 0 || (v2 = __multadd_D2A(a1, dword_4EFDFC[a2 & 3], 0)) != 0 ) + { + v3 = a2 >> 2; + v4 = (int)v2; + if ( a2 >> 2 ) + { + v5 = (int **)dword_1541320; + if ( !dword_1541320 ) + { + sub_42D9B0(1); + v5 = (int **)dword_1541320; + if ( !dword_1541320 ) + { + v10 = __Balloc_D2A(1); + v5 = (int **)v10; + if ( !v10 ) + { + dword_1541320 = 0; + return 0; + } + v10[5] = 625; + v10[4] = 1; + dword_1541320 = (int)v10; + *v10 = 0; + } + if ( Target == 2 ) + LeaveCriticalSection(&stru_1541C98); + } + v4 = (int)v2; + if ( (v3 & 1) != 0 ) + goto LABEL_9; +LABEL_5: + v3 >>= 1; + if ( v3 ) + { + while ( 1 ) + { + v6 = *v5; + if ( *v5 ) + goto LABEL_7; + sub_42D9B0(1); + v6 = *v5; + if ( !*v5 ) + { + v9 = __mult_D2A((int)v5, (int)v5); + *v5 = v9; + v6 = v9; + if ( !v9 ) + return 0; + *v9 = 0; + } + if ( Target != 2 ) + { +LABEL_7: + v5 = (int **)v6; + } + else + { + v5 = (int **)v6; + LeaveCriticalSection(&stru_1541C98); + } + if ( (v3 & 1) == 0 ) + goto LABEL_5; +LABEL_9: + v7 = __mult_D2A(v4, (int)v5); + if ( !v7 ) + return 0; + lpCriticalSection = (LPCRITICAL_SECTION)v4; + v4 = (int)v7; + __Bfree_D2A((unsigned int)lpCriticalSection); + v3 >>= 1; + if ( !v3 ) + return v4; + } + } + } + return v4; + } + return 0; +} +// 4EFDFC: using guessed type int dword_4EFDFC[7]; +// 1541320: using guessed type int dword_1541320; + +//----- (0042E050) -------------------------------------------------------- +int *__cdecl __lshift_D2A(_DWORD *a1, int a2) +{ + int v2; // edx + int v3; // esi + int i; // eax + int *v5; // eax + int *v6; // edi + int *v7; // edx + int *v8; // eax + int *v9; // esi + unsigned int v10; // edx + char v11; // cl + int *v12; // ebx + unsigned int v13; // eax + int v14; // edi + unsigned int v15; // ecx + _DWORD *v17; // edi + _DWORD *v18; // esi + int *v19; // [esp+1Ch] [ebp-30h] + int v20; // [esp+20h] [ebp-2Ch] + int *v21; // [esp+28h] [ebp-24h] + + v2 = a1[1]; + v3 = a2 >> 5; + v20 = (a2 >> 5) + a1[4]; + for ( i = a1[2]; v20 + 1 > i; ++v2 ) + i *= 2; + v5 = __Balloc_D2A(v2); + v19 = v5; + if ( v5 ) + { + v6 = v5 + 5; + if ( v3 > 0 ) + { + v7 = &v5[v3 + 5]; + v8 = v5 + 5; + do + *v8++ = 0; + while ( v8 != v7 ); + v6 += v3; + } + v9 = a1 + 5; + v10 = (unsigned int)&a1[a1[4] + 5]; + v11 = a2 & 0x1F; + if ( (a2 & 0x1F) != 0 ) + { + v21 = v6; + v12 = v6; + v13 = 0; + do + { + v14 = *v9; + ++v12; + ++v9; + *(v12 - 1) = (v14 << v11) | v13; + v13 = (unsigned int)*(v9 - 1) >> (32 - v11); + } + while ( v10 > (unsigned int)v9 ); + v15 = 4; + if ( v10 >= (unsigned int)a1 + 21 ) + v15 = 4 * ((v10 - (unsigned int)a1 - 21) >> 2) + 4; + *(int *)((char *)v21 + v15) = v13; + if ( v13 ) + ++v20; + } + else + { + do + { + *v6 = *v9; + v18 = v9 + 1; + v17 = v6 + 1; + if ( v10 <= (unsigned int)v18 ) + break; + *v17 = *v18; + v9 = v18 + 1; + v6 = v17 + 1; + } + while ( v10 > (unsigned int)v9 ); + } + v19[4] = v20; + __Bfree_D2A((unsigned int)a1); + } + return v19; +} + +//----- (0042E190) -------------------------------------------------------- +int __cdecl __cmp_D2A(int a1, int a2) +{ + int v2; // eax + int v3; // ebx + int v4; // edx + _DWORD *v5; // eax + _DWORD *v6; // edx + + v2 = *(_DWORD *)(a2 + 16); + v3 = *(_DWORD *)(a1 + 16) - v2; + if ( !v3 ) + { + v4 = 4 * v2; + v5 = (_DWORD *)(a1 + 20 + 4 * v2); + v6 = (_DWORD *)(a2 + v4 + 20); + while ( *--v5 == *--v6 ) + { + if ( a1 + 20 >= (unsigned int)v5 ) + return v3; + } + return *v5 < *v6 ? -1 : 1; + } + return v3; +} + +//----- (0042E1E0) -------------------------------------------------------- +int *__cdecl __diff_D2A(int a1, int a2) +{ + int v2; // esi + int v3; // eax + int v4; // ebx + int v5; // edx + _DWORD *v6; // eax + _DWORD *v7; // edx + int *v8; // eax + int v9; // ebp + int v10; // edx + int v11; // esi + unsigned int v12; // ebp + __int64 v13; // rcx + __int64 v14; // rax + unsigned __int64 v15; // rax + int v16; // edx + int v17; // ebp + unsigned int v18; // edi + char *v19; // ecx + int v20; // eax + char *v21; // edi + _DWORD *v22; // eax + char *v23; // ebx + unsigned int *v24; // ecx + unsigned int v25; // eax + unsigned __int64 v26; // rax + char *v27; // ecx + int v29; // [esp+18h] [ebp-44h] + int *v30; // [esp+24h] [ebp-38h] + char *v31; // [esp+24h] [ebp-38h] + unsigned int v32; // [esp+28h] [ebp-34h] + _DWORD *v33; // [esp+28h] [ebp-34h] + int *v34; // [esp+2Ch] [ebp-30h] + unsigned int v35; // [esp+30h] [ebp-2Ch] + int *v36; // [esp+34h] [ebp-28h] + int v37; // [esp+38h] [ebp-24h] + int v38; // [esp+3Ch] [ebp-20h] + + v2 = a1; + v3 = *(_DWORD *)(a2 + 16); + v4 = *(_DWORD *)(a1 + 16) - v3; + if ( v4 ) + { + v4 = 0; + if ( *(_DWORD *)(a1 + 16) - v3 < 0 ) + { +LABEL_21: + v4 = 1; + v2 = a2; + a2 = a1; + } +LABEL_6: + v8 = __Balloc_D2A(*(_DWORD *)(v2 + 4)); + v34 = v8; + if ( v8 ) + { + v9 = *(_DWORD *)(v2 + 16); + v10 = v2 + 20; + v8[3] = v4; + v11 = 0; + v37 = v10; + v29 = v10; + v35 = v10 + 4 * v9; + v38 = v9; + v12 = a2 + 20; + v32 = a2 + 20 + 4 * *(_DWORD *)(a2 + 16); + v36 = v8 + 5; + v30 = v8 + 5; + do + { + v29 += 4; + v12 += 4; + v13 = *(unsigned int *)(v12 - 4); + v14 = *(unsigned int *)(v29 - 4) - (unsigned __int64)(unsigned int)v11 - v13; + LODWORD(v13) = *(_DWORD *)(v29 - 4) - v11 - v13; + v15 = __PAIR64__(HIDWORD(v14), (unsigned int)++v30) & 0x1FFFFFFFFLL; + v11 = HIDWORD(v15); + *(_DWORD *)(v15 - 4) = v13; + v16 = v13; + } + while ( v32 > v12 ); + v17 = v38; + v18 = v32 - a2 - 21; + v19 = (char *)v36 + (v32 >= a2 + 21 ? v18 & 0xFFFFFFFC : 0); + v20 = 4; + if ( v32 >= a2 + 21 ) + v20 = 4 * (v18 >> 2) + 4; + v31 = (char *)v36 + v20; + v21 = (char *)v36 + v20; + v22 = (_DWORD *)(v20 + v37); + v33 = v22; + if ( v35 > (unsigned int)v22 ) + { + v23 = v21; + v24 = v22; + do + { + v25 = *v24++; + v26 = v25 - (unsigned __int64)(unsigned int)v11; + v23 += 4; + v11 = BYTE4(v26) & 1; + v16 = v26; + *((_DWORD *)v23 - 1) = v26; + } + while ( v35 > (unsigned int)v24 ); + v17 = v38; + v19 = &v31[(v35 - 1 - (_DWORD)v33) & 0xFFFFFFFC]; + } + if ( !v16 ) + { + v27 = &v19[-4 * v17]; + do + --v17; + while ( !*(_DWORD *)&v27[4 * v17] ); + } + v34[4] = v17; + } + return v34; + } + else + { + v5 = 4 * v3; + v6 = (_DWORD *)(a1 + 20 + 4 * v3); + v7 = (_DWORD *)(a2 + v5 + 20); + do + { + if ( *--v6 != *--v7 ) + { + if ( *v6 < *v7 ) + goto LABEL_21; + goto LABEL_6; + } + } + while ( a1 + 20 < (unsigned int)v6 ); + v34 = __Balloc_D2A(0); + if ( !v34 ) + return v34; + v34[4] = 1; + v34[5] = 0; + return v34; + } +} + +//----- (0042E420) -------------------------------------------------------- +long double __cdecl __b2d_D2A(int a1, _DWORD *a2) +{ + unsigned int v2; // esi + int v3; // ebx + unsigned int v4; // edx + unsigned int v5; // ebp + unsigned int v6; // eax + signed int v7; // eax + int v8; // eax + unsigned int v9; // edi + int v11; // edi + int v12; // edx + double v13; // [esp+0h] [ebp-1Ch] + double v14; // [esp+0h] [ebp-1Ch] + + v2 = a1 + 20; + v3 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); + v4 = *(_DWORD *)(v3 - 4); + v5 = v3 - 4; + _BitScanReverse(&v6, v4); + v7 = v6 ^ 0x1F; + *a2 = 32 - v7; + if ( v7 > 10 ) + { + v8 = v7 - 11; + if ( v2 >= v5 ) + { + v9 = 0; + if ( v8 ) + { + v9 = 0; + HIDWORD(v13) = (v4 << v8) | 0x3FF00000; + goto LABEL_5; + } + } + else + { + v9 = *(_DWORD *)(v3 - 8); + if ( v8 ) + { + v12 = (v9 >> (32 - v8)) | (v4 << v8); + v9 <<= v8; + HIDWORD(v13) = v12 | 0x3FF00000; + if ( v2 < v3 - 8 ) + v9 |= *(_DWORD *)(v3 - 12) >> (32 - v8); + goto LABEL_5; + } + } + HIDWORD(v13) = v4 | 0x3FF00000; +LABEL_5: + LODWORD(v13) = v9; + return v13; + } + v11 = 0; + if ( v2 < v5 ) + v11 = *(_DWORD *)(v3 - 8) >> (11 - v7); + LODWORD(v14) = v11 | (v4 << (v7 + 21)); + HIDWORD(v14) = (v4 >> (11 - v7)) | 0x3FF00000; + return v14; +} + +//----- (0042E530) -------------------------------------------------------- +int *__cdecl __d2b_D2A(double a1, _DWORD *a2, _DWORD *a3) +{ + int *result; // eax + int v5; // edi + int v8; // edx + int v9; // edx + unsigned int v10; // ecx + + result = __Balloc_D2A(1); + if ( result ) + { + _ESI = HIDWORD(a1) & 0xFFFFF; + v5 = (HIDWORD(a1) >> 20) & 0x7FF; + if ( v5 ) + _ESI |= 0x100000u; + _EDX = LODWORD(a1); + if ( LODWORD(a1) ) + { + __asm { tzcnt ebx, edx } + v8 = LODWORD(a1) >> _EBX; + if ( _EBX ) + { + v8 |= _ESI << (32 - _EBX); + _ESI >>= _EBX; + } + result[5] = v8; + result[6] = _ESI; + v9 = (_ESI != 0) + 1; + result[4] = v9; + if ( !v5 ) + goto LABEL_8; + } + else + { + result[4] = 1; + v9 = 1; + __asm { tzcnt ecx, esi } + _EBX = _ECX + 32; + result[5] = _ESI >> _ECX; + if ( !v5 ) + { +LABEL_8: + *a2 = _EBX - 1074; + _BitScanReverse(&v10, result[v9 + 4]); + *a3 = 32 * v9 - (v10 ^ 0x1F); + return result; + } + } + *a2 = v5 + _EBX - 1075; + *a3 = 53 - _EBX; + } + return result; +} + +//----- (0042E620) -------------------------------------------------------- +int __cdecl __strcp_D2A(__int64 a1) +{ + __int64 v1; // rax + char v2; // cl + char v3; // cl + + v1 = a1 + 0x100000000LL; + v2 = *(_BYTE *)HIDWORD(a1); + *(_BYTE *)a1 = *(_BYTE *)HIDWORD(a1); + if ( v2 ) + { + do + { + v3 = *(_BYTE *)HIDWORD(v1); + LODWORD(v1) = v1 + 1; + ++HIDWORD(v1); + *(_BYTE *)v1 = v3; + } + while ( v3 ); + } + return v1; +} + +//----- (0042E650) -------------------------------------------------------- +float __cdecl strtof(const char *String, char **EndPtr) +{ + char v2; // al + float v3; // edx + float v5; // [esp+38h] [ebp-14h] BYREF + int v6[4]; // [esp+3Ch] [ebp-10h] BYREF + + v2 = __strtodg((unsigned __int8 *)String, (unsigned __int8 **)EndPtr, dword_4E804C, v6, (int *)&v5); + switch ( v2 & 7 ) + { + case 1: + case 5: + LODWORD(v3) = (unsigned int)&unk_7FFFFF & LODWORD(v5) | ((v6[0] + 150) << 23); + break; + case 2: + v3 = v5; + break; + case 3: + v3 = INFINITY; + break; + case 4: + v3 = NAN; + break; + default: + v3 = 0.0; + break; + } + if ( (v2 & 8) != 0 ) + LODWORD(v3) |= 0x80000000; + return v3; +} +// 4E804C: using guessed type int dword_4E804C[5]; +// 42E650: using guessed type int var_10[4]; + +//----- (0042E6F0) -------------------------------------------------------- +wint_t __cdecl btowc(int Ch) +{ + WCHAR v2[7]; // [esp+1Eh] [ebp-Eh] BYREF + + if ( Ch != -1 && (__mingw_mbrtowc_codeset_init(), __mingw_mbtowc_convert((LPCCH)&Ch, 1, v2, 1) == 1) ) + return v2[0]; + else + return -1; +} +// 42E6F0: using guessed type WCHAR var_E[7]; + +//----- (0042E750) -------------------------------------------------------- +int __cdecl vsnprintf(char *const Buffer, const size_t BufferCount, const char *const Format, va_list ArgList) +{ + int result; // eax + int v5; // edx + + if ( !BufferCount ) + return __mingw_pformat(0, (int)Buffer, 0, (char *)Format, (double *)ArgList); + result = __mingw_pformat(0, (int)Buffer, BufferCount - 1, (char *)Format, (double *)ArgList); + v5 = result; + if ( result > BufferCount - 1 ) + v5 = BufferCount - 1; + Buffer[v5] = 0; + return result; +} + +//----- (0042E7D0) -------------------------------------------------------- +void *__cdecl __mingw_realloc(unsigned int a1, size_t a2) +{ + int v2; // ebx + int v4[7]; // [esp+10h] [ebp-1Ch] BYREF + + v2 = a1; + if ( !a1 || a1 == __mingw_memalign_base(a1, (unsigned int *)v4) ) + return (void *)___msvcrt_realloc(v2, a2); + if ( !a2 ) + { + v2 = v4[0]; + return (void *)___msvcrt_realloc(v2, a2); + } + if ( v4[3] < a2 ) + return __mingw_memalign_realloc(a1, v4, a2); + *_errno() = 22; + return 0; +} +// 1542418: using guessed type int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); + +//----- (0042E850) -------------------------------------------------------- +int __cdecl __mingw_free(unsigned int a1) +{ + unsigned int v1; // eax + unsigned int v3[7]; // [esp+10h] [ebp-1Ch] BYREF + + v1 = __mingw_memalign_base(a1, v3); + return ___msvcrt_free(v1); +} +// 1542414: using guessed type int __cdecl ___msvcrt_free(_DWORD); +// 42E850: using guessed type unsigned int var_1C[7]; + +//----- (0042E880) -------------------------------------------------------- +char *__usercall sub_42E880@(char *a1@, int a2@, __int16 a3@) +{ + int v3; // ebp + int v4; // ebx + char *v5; // edx + int v6; // eax + char *v7; // ebp + int v8; // edx + int v9; // ebx + char *v10; // edi + int v11; // esi + int v12; // esi + int v13; // eax + char v14; // cl + char *i; // edx + char *result; // eax + char *v17; // esi + char v18; // cl + char *v19; // edi + int v20; // ebp + int v21; // edi + int v22; // ebx + int v23; // ebx + char *v24; // edi + char v25; // dl + char *v26; // ebx + int v27; // esi + int v28; // ebx + int v29; // ebx + char *v30; // edi + char v31; // dl + char *v32; // ebx + char *v33; // esi + int C; // [esp+0h] [ebp-4Ch] + int Ca; // [esp+0h] [ebp-4Ch] + int v37; // [esp+24h] [ebp-28h] + char *v38; // [esp+24h] [ebp-28h] + char *v40; // [esp+2Ch] [ebp-20h] + + v3 = *a1; + v4 = v3; + if ( v3 != 45 ) + { + v5 = a1; + if ( v3 != 93 ) + goto LABEL_3; + } + v18 = a1[1]; + v5 = a1 + 1; + if ( v3 != a2 ) + { + v3 = v18; +LABEL_3: + v6 = v3; + v7 = v5; + v8 = v4; + v9 = v6; + while ( 1 ) + { + v10 = v7 + 1; + v11 = v9; + if ( v9 == 93 ) + return 0; + if ( v9 != 45 ) + break; + v9 = v7[1]; + if ( (_BYTE)v9 != 93 ) + { + if ( !(_BYTE)v9 ) + return 0; + v19 = v7 + 2; + v38 = v7; + v20 = v8; + v40 = v19; + v21 = (char)v9; +LABEL_30: + while ( v20 < v21 ) + { + if ( (a3 & 0x4000) == 0 ) + { + C = v20++; + v23 = tolower(C); + if ( v23 != tolower(a2) ) + goto LABEL_30; +LABEL_33: + v24 = v40; + v25 = v38[2]; +LABEL_34: + result = v24 + 1; + if ( v25 == 93 ) + return result; + if ( v25 == 127 ) + goto LABEL_39; + while ( 1 ) + { + do + { + if ( !v25 ) + return 0; + v25 = v24[1]; + v24 = result++; + if ( v25 == 93 ) + return result; + } + while ( v25 != 127 ); +LABEL_39: + v25 = v24[1]; + if ( (a3 & 0x20) != 0 ) + { + v24 = result; + goto LABEL_34; + } + v26 = v24 + 2; + v24 = result; + result = v26; + } + } + v22 = v20 - a2; + ++v20; + if ( !v22 ) + goto LABEL_33; + } + v27 = v20; +LABEL_43: + while ( v27 > v21 ) + { + if ( (a3 & 0x4000) == 0 ) + { + Ca = v27--; + v29 = tolower(Ca); + if ( v29 != tolower(a2) ) + goto LABEL_43; +LABEL_46: + v30 = v40; + v31 = v38[2]; +LABEL_47: + result = v30 + 1; + if ( v31 == 93 ) + return result; + if ( v31 == 127 ) + goto LABEL_52; + while ( 1 ) + { + do + { + if ( !v31 ) + return 0; + v31 = v30[1]; + v30 = result++; + if ( v31 == 93 ) + return result; + } + while ( v31 != 127 ); +LABEL_52: + v31 = v30[1]; + if ( (a3 & 0x20) != 0 ) + { + v30 = result; + goto LABEL_47; + } + v32 = v30 + 2; + v30 = result; + result = v32; + } + } + v28 = v27 - a2; + --v27; + if ( !v28 ) + goto LABEL_46; + } + v11 = v21; + v10 = v40; +LABEL_8: + if ( v11 == 47 || v11 == 92 ) + return 0; + v9 = *v10; + v7 = v10; + v8 = v11; + goto LABEL_11; + } + ++v7; + v8 = 45; +LABEL_11: + if ( (a3 & 0x4000) != 0 ) + { + if ( v8 == a2 ) + goto LABEL_13; + } + else + { + v37 = v8; + v12 = tolower(v8); + v13 = tolower(a2); + v8 = v37; + if ( v12 == v13 ) + { +LABEL_13: + v14 = v9; + for ( i = v7; ; i = result ) + { + result = i + 1; + if ( v14 == 93 ) + return result; + if ( v14 == 127 ) + goto LABEL_19; + while ( 1 ) + { + do + { + if ( !v14 ) + return 0; + v14 = i[1]; + i = result++; + if ( v14 == 93 ) + return result; + } + while ( v14 != 127 ); +LABEL_19: + v14 = i[1]; + if ( (a3 & 0x20) != 0 ) + break; + v17 = i + 2; + i = result; + result = v17; + } + } + } + } + } + if ( !v9 ) + return 0; + goto LABEL_8; + } +LABEL_55: + result = v5 + 1; + if ( v18 == 93 ) + return result; + if ( v18 == 127 ) + goto LABEL_60; + while ( v18 ) + { + v18 = v5[1]; + v5 = result++; + if ( v18 == 93 ) + return result; + if ( v18 == 127 ) + { +LABEL_60: + v18 = v5[1]; + if ( (a3 & 0x20) != 0 ) + { + v5 = result; + goto LABEL_55; + } + v33 = v5 + 2; + v5 = result; + result = v33; + } + } + return 0; +} + +//----- (0042EBB0) -------------------------------------------------------- +int __usercall sub_42EBB0@(char *a1@, _BYTE *a2@, int a3@) +{ + char *i; // ebp + _BYTE *v4; // esi + char v5; // di + int C; // edx + char v7; // al + char *v8; // ebx + _BYTE *v9; // edi + int v10; // eax + int v11; // ebp + int v12; // eax + int v13; // ebp + int v14; // esi + int v15; // eax + int v17; // edx + char *v18; // eax + char *v19; // ebx + char *v20; // eax + char *v21; // edx + char *v22; // edx + int v23; // [esp+10h] [ebp-2Ch] + int v24; // [esp+10h] [ebp-2Ch] + int v25; // [esp+10h] [ebp-2Ch] + int v26; // [esp+14h] [ebp-28h] + int v27; // [esp+18h] [ebp-24h] + int v28; // [esp+1Ch] [ebp-20h] + + i = a1; + v4 = a2; + v5 = *a2; + C = *a1; + v7 = *a1; + if ( v5 != 46 ) + goto LABEL_2; + if ( (_BYTE)C != 46 ) + { + if ( (a3 & 0x10000) == 0 ) + { + C -= 46; + return C; + } +LABEL_2: + v8 = i + 1; + if ( !C ) + return -v5; + goto LABEL_3; + } + v8 = i + 1; +LABEL_3: + v26 = a3 & 0x20; + while ( 1 ) + { + v9 = v4; + if ( v7 == 63 ) + { + if ( !*v4 ) + return 63; + goto LABEL_30; + } + if ( v7 != 91 ) + break; + v17 = (char)*v4; + if ( !*v4 ) + return 91; + if ( i[1] == 33 ) + { + v19 = i + 2; + v25 = a3; + v20 = sub_42E880(i + 2, v17, a3); + a3 = v25; + v21 = v20; + v7 = i[2]; + if ( v21 ) + { + i += 2; + } + else + { + if ( v7 == 93 ) + { + v7 = i[3]; + v19 = i + 3; + } +LABEL_42: + for ( i = v19 + 1; v7 != 93; v19 = i++ ) + { + if ( v7 == 127 ) + { + v7 = v19[1]; + if ( v26 ) + { + v19 = i; + goto LABEL_42; + } + v22 = v19 + 2; + v19 = i; + i = v22; + } + if ( !v7 ) + return 93; + v7 = v19[1]; + } + v7 = v19[1]; + } + } + else + { + v24 = a3; + v18 = sub_42E880(v8, v17, a3); + i = v18; + if ( !v18 ) + return 93; + v7 = *v18; + a3 = v24; + } +LABEL_26: + C = v7; + v8 = i + 1; + ++v4; + if ( !v7 ) + { + v5 = v9[1]; + return -v5; + } + } + if ( v7 != 42 ) + { + if ( (a3 & 0x20) == 0 && C == 127 ) + { + C = i[1]; + if ( i[1] ) + v8 = i + 2; + } + v10 = (char)*v4; + if ( !(_BYTE)v10 ) + return C; + v23 = (char)*v4; + if ( (a3 & 0x4000) != 0 ) + { + v13 = C - v10; + } + else + { + v28 = a3; + v27 = C; + v11 = tolower(C); + v12 = tolower(v23); + a3 = v28; + C = v27; + v13 = v11 - v12; + } + if ( v13 ) + { + C -= v23; + return C; + } +LABEL_30: + v7 = *v8; + i = v8; + goto LABEL_26; + } + while ( *v8 == 42 ) + ++v8; + C = 0; + if ( *v8 ) + { + v14 = a3 | 0x10000; + do + { + v15 = sub_42EBB0(v14, v9); + if ( !v15 ) + break; + ++v9; + } + while ( *(v9 - 1) ); + return v15; + } + return C; +} + +//----- (0042EDE0) -------------------------------------------------------- +int __usercall sub_42EDE0@(char *a1@, unsigned int a2@) +{ + char *v2; // ecx + char *v3; // ebx + int result; // eax + int v5; // edi + + v2 = a1 + 1; + v3 = a1; + result = *a1; + if ( result ) + { + v5 = 0; + do + { + while ( result == 127 && (((unsigned __int8)(a2 >> 5) ^ 1) & 1) != 0 ) + { + v2 = v3 + 2; + if ( !v3[1] ) + return 0; + if ( !v5 ) + goto LABEL_5; +LABEL_13: + v3 = v2; + ++v5; + ++v2; + result = *v3; + if ( !*v3 ) + return result; + } + if ( !v5 ) + { + if ( result == 42 || result == 63 ) + return 1; +LABEL_5: + v3 = v2; + v5 = result == 91; + goto LABEL_6; + } + if ( v5 > 1 && result == 93 ) + return 1; + v3 = v2; + if ( result != 33 ) + goto LABEL_13; +LABEL_6: + result = *v3; + ++v2; + } + while ( *v3 ); + } + return result; +} + +//----- (0042EE80) -------------------------------------------------------- +int __usercall sub_42EE80@(int a1@, _DWORD *a2@) +{ + _DWORD *v4; // eax + int v5; // ecx + int v6; // edx + + v4 = __mingw_realloc(a2[2], 4 * (a2[1] + a2[3]) + 8); + if ( !v4 ) + return 1; + v5 = a2[1]; + v6 = a2[3]; + a2[2] = v4; + a2[1] = v5 + 1; + v4[v6 + v5] = a1; + v4[v5 + 1 + v6] = 0; + return 0; +} + +//----- (0042EEE0) -------------------------------------------------------- +int __usercall sub_42EEE0@(_DWORD *a1@, _DWORD *a2@, int a3@) +{ + int v5; // eax + + if ( *a1 ) + ((void (*)(void))sub_42EEE0)(); + v5 = a1[2]; + if ( v5 && a2 ) + sub_42EE80(v5, a2); + if ( a1[1] ) + sub_42EEE0(a3, a2); + return __mingw_free((unsigned int)a1); +} +// 42EF08: variable 'a3' is possibly undefined + +//----- (0042EF30) -------------------------------------------------------- +int __usercall sub_42EF30@(_DWORD *a1@) +{ + int v2; // ebx + _DWORD *v3; // eax + + v2 = a1[3] + 1; + v3 = malloc(4 * v2); + a1[2] = v3; + if ( !v3 ) + return 3; + a1[1] = 0; + if ( v2 > 0 ) + { + do + v3[--v2] = 0; + while ( v2 ); + } + return 0; +} + +//----- (0042EF80) -------------------------------------------------------- +int __usercall sub_42EF80@(char *a1@, unsigned int a2@, int a3@, _DWORD *a4) +{ + size_t v4; // eax + size_t v5; // edx + int v6; // eax + void *v7; // esp + void *v8; // esp + char *v9; // eax + char *v10; // eax + char *v11; // edi + int v12; // eax + void *v13; // esp + void *v14; // esp + char *v15; // edx + char *v16; // ecx + char v17; // al + char v18; // al + char *v19; // eax + char *v20; // ebx + char v21; // al + char *v22; // esi + int v23; // eax + void *v24; // esp + char v25; // bl + void *v26; // esp + char *v27; // edi + int v28; // ecx + char *v29; // eax + char *v30; // edx + char *v31; // esi + int v32; // ecx + char v33; // al + bool i; // cc + char *v35; // esi + int v36; // ecx + unsigned int v37; // edi + char *v38; // eax + int v39; // edx + char *v40; // ecx + char *v41; // edx + int v42; // ebx + char *v43; // eax + char v44; // dl + char v46; // bl + char *v47; // eax + char v48; // dl + int v49; // eax + char v50; // al + char v51; // dl + unsigned int v52; // edi + char *v53; // eax + char *v54; // ebx + int (__cdecl *v55)(_DWORD, int); // edi + int *v56; // eax + const char *v57; // eax + int v58; // eax + int v59; // esi + const void *v60; // edi + int v61; // ecx + int v62; // eax + void *v63; // esp + void *v64; // esp + char *v65; // edx + char *v66; // eax + int v67; // eax + void *v68; // esp + char *v69; // esi + void *v70; // esp + char *v71; // edx + char v72; // al + char v73; // al + char *v74; // esi + int v75; // ecx + char *v76; // eax + size_t v77; // esi + const char *v78; // eax + char v79; // al + size_t v80; // esi + _DWORD *v81; // edi + int v82; // ebx + char *v83; // eax + _DWORD *v84; // edx + const char *v85; // eax + _DWORD *v86; // eax + char *v87; // edx + char *v88; // edi + int v89; // eax + void *v90; // esp + void *v91; // esp + char *v92; // ecx + char *v93; // edx + char v94; // al + _DWORD *v95; // eax + char *v96; // [esp+0h] [ebp-78h] BYREF + const char *v97; // [esp+4h] [ebp-74h] + char String[4]; // [esp+Ch] [ebp-6Ch] BYREF + int v100; // [esp+10h] [ebp-68h] + char v101; // [esp+17h] [ebp-61h] + size_t v102; // [esp+18h] [ebp-60h] + char *v103; // [esp+1Ch] [ebp-5Ch] + char *v104; // [esp+20h] [ebp-58h] + const char **v105; // [esp+24h] [ebp-54h] + _DWORD *v106; // [esp+28h] [ebp-50h] + size_t Size; // [esp+2Ch] [ebp-4Ch] + char *v108; // [esp+30h] [ebp-48h] + char *v109; // [esp+34h] [ebp-44h] + char *v110; // [esp+38h] [ebp-40h] + char *Str; // [esp+3Ch] [ebp-3Ch] + int (__cdecl *v112)(_DWORD, int); // [esp+40h] [ebp-38h] + int v113; // [esp+44h] [ebp-34h] + unsigned int v114; // [esp+48h] [ebp-30h] + int v115; // [esp+4Ch] [ebp-2Ch] + _DWORD v116[2]; // [esp+50h] [ebp-28h] BYREF + char **v117; // [esp+58h] [ebp-20h] + int v118; // [esp+5Ch] [ebp-1Ch] + + Str = a1; + v114 = a2; + v112 = (int (__cdecl *)(_DWORD, int))a3; + if ( (a2 & 0x400) == 0 ) + { +LABEL_2: + v109 = (char *)&v96; + v4 = strlen(Str); + v5 = v4 + 1; + v6 = 16 * ((v4 + 16) >> 4); + v7 = alloca(v6); + v8 = alloca(v6); + v9 = (char *)memcpy(String, Str, v5); + v10 = __mingw_dirname(v9); + v118 = 0; + v110 = v10; + v11 = v10; + v115 = sub_42EF30(v116); + if ( !v115 ) + { + if ( v11 && sub_42EDE0(v11, v114) ) + { + v115 = sub_42EF80(v116); + } + else + { + v12 = 16 * ((strlen(v110) + 16) >> 4); + v13 = alloca(v12); + v14 = alloca(v12); + v15 = v110; + v16 = String; + do + { + while ( 1 ) + { + v17 = *v15; + if ( *v15 == 127 ) + break; + ++v16; + ++v15; + *(v16 - 1) = v17; + if ( !v17 ) + goto LABEL_9; + } + v18 = v15[1]; + ++v16; + v15 += 2; + *(v16 - 1) = v18; + } + while ( v18 ); +LABEL_9: + v19 = strdup(String); + v115 = 1; + if ( !v19 ) + return v115; + v115 = sub_42EE80((int)v19, v116); + } + if ( !v115 ) + { + v20 = Str; + v21 = Str[1]; + if ( v21 == 47 || v21 == 92 || *v110 != 46 || v110[1] ) + { + v20 = &Str[strlen(v110)]; + v50 = *v20; + if ( Str >= v20 ) + { +LABEL_87: + if ( v50 != 47 && v50 != 92 ) + { + v101 = 92; + goto LABEL_93; + } + } + else + { + while ( v50 != 47 ) + { + if ( v50 != 92 ) + { + v50 = *--v20; + if ( Str != v20 ) + continue; + } + goto LABEL_87; + } + } + do + { + do + { + ++v20; + v51 = v50; + v50 = *v20; + } + while ( *v20 == 47 ); + } + while ( v50 == 92 ); + v101 = v51; + } + else + { + if ( (v114 & 0x10) != 0 ) + { + v88 = Str; + v115 = sub_42EDE0(Str, v114); + if ( !v115 ) + { + v89 = 16 * ((strlen(v88) + 16) >> 4); + v90 = alloca(v89); + v91 = alloca(v89); + v92 = v88; + v93 = String; + do + { + v94 = *v92; + if ( *v92 == 127 ) + { + v94 = v92[1]; + v92 += 2; + } + else + { + ++v92; + } + *v93++ = v94; + } + while ( v94 ); + v76 = strdup(String); + if ( v76 && a4 ) + { + sub_42EE80((int)v76, a4); + v52 = (unsigned int)v117; + } + else + { +LABEL_126: + v52 = (unsigned int)v117; + } + goto LABEL_125; + } + v20 = Str; + } + v101 = 92; + v110 = 0; + } +LABEL_93: + v52 = (unsigned int)v117; + v115 = 2; + v53 = *v117; + if ( *v117 ) + { + v108 = v20; + v54 = (char *)v117; + Str = (char *)(v114 & 0x8000); + while ( 1 ) + { + if ( v115 == 1 ) + goto LABEL_98; + v113 = __mingw_opendir(v53); + if ( v113 ) + { + Size = 0; + if ( v110 ) + Size = strlen(*(const char **)v54); + v106 = 0; + v102 = Size + 2; + while ( 1 ) + { + v58 = __mingw_readdir(v113); + v59 = v58; + if ( !v58 ) + break; + if ( !Str || *(_DWORD *)(v58 + 8) == 16 ) + { + v60 = (const void *)(v58 + 12); + if ( !sub_42EBB0(v108, (_BYTE *)(v58 + 12), v114) ) + { + v61 = *(unsigned __int16 *)(v59 + 6); + v105 = (const char **)&v96; + v62 = 16 * ((v61 + v102 + 15) >> 4); + v63 = alloca(v62); + v64 = alloca(v62); + v65 = String; + v104 = String; + v66 = String; + if ( Size ) + { + v77 = Size; + v78 = *(const char **)v54; + v100 = v61; + v103 = String; + memcpy(String, v78, Size); + v79 = String[v77 - 1]; + v65 = v103; + v61 = v100; + if ( v79 == 47 || v79 == 92 ) + { + v66 = &v103[Size]; + } + else + { + v80 = Size; + v103[Size] = v101; + v66 = &v65[v80 + 1]; + } + } + v103 = v65; + memcpy(v66, v60, v61 + 1); + v67 = 16 * ((strlen(v103) + 16) >> 4); + v68 = alloca(v67); + v69 = v104; + v70 = alloca(v67); + v103 = String; + v71 = String; + do + { + while ( 1 ) + { + v72 = *v69; + if ( *v69 == 127 ) + break; + ++v71; + ++v69; + *(v71 - 1) = v72; + if ( !v72 ) + goto LABEL_114; + } + v73 = v69[1]; + ++v71; + v69 += 2; + *(v71 - 1) = v73; + } + while ( v73 ); +LABEL_114: + v74 = strdup(v103); + if ( v74 ) + { + v115 = v115 == 2 ? 0 : v115; + if ( (v114 & 0x40) != 0 ) + { + if ( a4 ) + sub_42EE80((int)v74, a4); + } + else + { + v81 = v106; + if ( v106 ) + { + v104 = v54; + v82 = v114 & 0x4000; + while ( 1 ) + { + v85 = (const char *)v81[2]; + v96 = v74; + v97 = v85; + if ( v82 ) + v83 = (char *)strcoll(v96, v97); + else + v83 = (char *)stricoll(v96, v97); + v84 = (_DWORD *)v81[1]; + if ( (int)v83 <= 0 ) + v84 = (_DWORD *)*v81; + if ( !v84 ) + break; + v81 = v84; + } + v54 = v104; + v104 = v83; + v86 = malloc(0xCu); + v87 = v104; + if ( v86 ) + { + v86[2] = v74; + v86[1] = 0; + *v86 = 0; + if ( (int)v87 <= 0 ) + *v81 = v86; + else + v81[1] = v86; + } + } + else + { + v106 = malloc(0xCu); + if ( v106 ) + { + v95 = v106; + v106[2] = v74; + v95[1] = 0; + *v95 = 0; + } + } + } + } + else + { + v115 = 3; + } + } + } + } + __mingw_closedir(v113); + if ( v106 ) + sub_42EEE0(v106, a4, v75); + goto LABEL_99; + } + if ( (v114 & 4) != 0 || (v55 = v112) != 0 && (v56 = _errno(), v55(*(_DWORD *)v54, *v56)) ) +LABEL_98: + v115 = 1; +LABEL_99: + v57 = *(const char **)v54; + v54 += 4; + __mingw_free((unsigned int)v57); + v53 = *(char **)v54; + if ( !*(_DWORD *)v54 ) + goto LABEL_126; + } + } +LABEL_125: + __mingw_free(v52); + return v115; + } + } + return v115; + } + v108 = (char *)&v96; + v22 = a1; + v23 = 16 * ((strlen(a1) + 16) >> 4); + v24 = alloca(v23); + v25 = *v22; + v26 = alloca(v23); + v27 = String; + v109 = String; + while ( 1 ) + { +LABEL_19: + v28 = (int)(v22 + 1); + if ( v25 == 127 ) + goto LABEL_23; + while ( v25 != 123 ) + { + while ( 1 ) + { + *v27 = v25; + if ( !v25 ) + goto LABEL_2; + v25 = v22[1]; + v22 = (char *)v28; + ++v27; + ++v28; + if ( v25 != 127 ) + break; +LABEL_23: + v25 = v22[1]; + *v27 = 127; + if ( v25 ) + { + v27[1] = v25; + v22 += 2; + v25 = *v22; + v27 += 2; + goto LABEL_19; + } + v29 = v22 + 2; + ++v27; + v22 = (char *)v28; + v28 = (int)v29; + } + } + v25 = v22[1]; + v30 = v22; + v110 = v22; + v115 = v28; + v31 = v22 + 1; + v32 = 1; + v33 = v25; + v113 = 44; + for ( i = v25 <= 123; v33 == 123; i = v33 <= 123 ) + { + v33 = v30[2]; + ++v32; + v30 = v31; +LABEL_33: + v31 = v30 + 1; + } + if ( !i ) + break; + if ( v33 ) + { + if ( v33 != 44 || v32 != 1 ) + { +LABEL_31: + v33 = v30[2]; +LABEL_32: + v30 = v31; + goto LABEL_33; + } + v33 = v30[2]; + v113 = 123; + v30 = v31; + goto LABEL_33; + } + v36 = v115; +LABEL_57: + *v27 = 123; + v22 = (char *)v36; + ++v27; + } + if ( v33 != 125 ) + { + if ( v33 != 127 ) + goto LABEL_31; + v33 = v30[2]; + if ( !v33 ) + goto LABEL_32; + v33 = v30[3]; + v30 += 2; + goto LABEL_33; + } + if ( --v32 ) + goto LABEL_31; + v35 = v110; + v36 = v115; + if ( v113 != 123 ) + goto LABEL_57; + v115 = (int)v27; + v37 = v114; + while ( 2 ) + { + v38 = (char *)v115; + v39 = 1; + if ( v25 != 127 ) + { +LABEL_40: + ++v35; + v40 = v38; + goto LABEL_41; + } + while ( 2 ) + { + v46 = v35[2]; + *v38 = 127; + v40 = v38 + 2; + v38[1] = v46; + if ( !v46 ) + { + v38[2] = 0; + return 1; + } + v25 = v35[3]; + v35 += 3; +LABEL_41: + if ( v25 != 125 ) + { + if ( v25 == 44 && v39 == 1 ) + { + v41 = v35; + v42 = 1; + while ( 1 ) + { + v43 = v41 + 1; + v44 = v41[1]; + if ( v44 == 127 ) + break; +LABEL_67: + switch ( v44 ) + { + case 123: + ++v42; + v41 = v43; + break; + case 125: + if ( !--v42 ) + goto LABEL_72; + v41 = v43; + break; + case 0: + goto LABEL_49; + default: + v41 = v43; + break; + } + } + while ( v43[1] ) + { + v44 = v43[2]; + v43 += 2; + if ( v44 != 127 ) + goto LABEL_67; + } +LABEL_49: + *v40 = 0; + return 1; + } + v38 = v40 + 1; + if ( v25 == 123 ) + { + *v40 = 123; + ++v39; + goto LABEL_53; + } + *v40 = v25; + if ( v25 ) + { +LABEL_53: + v25 = v35[1]; + if ( v25 != 127 ) + goto LABEL_40; + continue; + } + return 1; + } + break; + } + if ( --v39 ) + { + *v40 = 125; + v38 = v40 + 1; + goto LABEL_53; + } + v43 = v35; +LABEL_72: + v47 = v43 + 1; + do + { + v48 = *v47; + ++v40; + ++v47; + *(v40 - 1) = v48; + } + while ( v48 ); + v37 |= 1u; + v49 = sub_42EF80(a4); + if ( v49 == 1 ) + return 1; + if ( *v35 == 44 ) + { + v25 = v35[1]; + continue; + } + return v49; + } +} +// 42F641: variable 'v75' is possibly undefined +// 42EF80: using guessed type _DWORD var_28[2]; +// 42EF80: using guessed type char String[4]; + +//----- (0042F820) -------------------------------------------------------- +int *__cdecl __mingw_glob(char *Str, int a2, int a3, char **a4) +{ + char *v4; // ebx + int v5; // ecx + int v7; // eax + void *v8; // esp + void *v9; // esp + _BYTE *v10; // edx + char v11; // al + char v12; // al + char *v13; // eax + int v14; // [esp+0h] [ebp-38h] BYREF + _BYTE v15[16]; // [esp+4h] [ebp-34h] BYREF + int v16; // [esp+14h] [ebp-24h] + char *String; // [esp+18h] [ebp-20h] + int *v18; // [esp+1Ch] [ebp-1Ch] + + v4 = Str; + if ( a4 && (a2 & 2) == 0 ) + a4[3] = 0; + if ( *a4 != "glob-1.0-mingw32" ) + { + sub_42EF30(a4); + *a4 = "glob-1.0-mingw32"; + } + v5 = sub_42EF80(Str, a2, a3, a4); + if ( v5 == 2 && (a2 & 0x10) != 0 ) + { + v16 = 2; + v18 = &v14; + v7 = 16 * ((strlen(Str) + 16) >> 4); + v8 = alloca(v7); + v9 = alloca(v7); + String = v15; + v10 = v15; + do + { + while ( 1 ) + { + v11 = *v4; + if ( *v4 == 127 ) + break; + ++v10; + ++v4; + *(v10 - 1) = v11; + if ( !v11 ) + goto LABEL_13; + } + v12 = v4[1]; + ++v10; + v4 += 2; + *(v10 - 1) = v12; + } + while ( v12 ); +LABEL_13: + v16 = 2; + v13 = strdup(String); + v5 = v16; + if ( v13 ) + { + v18 = (int *)v16; + sub_42EE80((int)v13, a4); + return v18; + } + } + return (int *)v5; +} + +//----- (0042F920) -------------------------------------------------------- +int __cdecl __mingw_globfree(int a1) +{ + int v1; // edi + int v2; // ebx + int v3; // edi + unsigned int v4; // eax + int result; // eax + + if ( *(char **)a1 == "glob-1.0-mingw32" ) + { + v1 = *(_DWORD *)(a1 + 4); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 > 0 ) + { + v3 = v2 + v1; + do + { + v4 = *(_DWORD *)(*(_DWORD *)(a1 + 8) + 4 * v2++); + __mingw_free(v4); + } + while ( v3 != v2 ); + } + return __mingw_free(*(_DWORD *)(a1 + 8)); + } + return result; +} + +//----- (0042F980) -------------------------------------------------------- +char *__cdecl __mingw_dirname(char *Source) +{ + char *v1; // eax + const char *v2; // ebx + size_t v3; // esi + char *v4; // esi + size_t v6; // edx + int v7; // eax + void *v8; // esp + void *v9; // esp + size_t v10; // eax + _WORD *v11; // eax + wchar_t v12; // dx + _WORD *v13; // ecx + _WORD *v14; // esi + __int16 v15; // dx + _WORD *v16; // eax + wchar_t v17; // ax + wchar_t *p_Dest; // ecx + wchar_t v19; // dx + wchar_t *v20; // edx + wchar_t v21; // bx + size_t v22; // eax + size_t v23; // eax + __int16 v24; // dx + int v25; // [esp+0h] [ebp-38h] BYREF + wchar_t Dest; // [esp+Ch] [ebp-2Ch] BYREF + __int16 v27; // [esp+Eh] [ebp-2Ah] + size_t v28[2]; // [esp+10h] [ebp-28h] BYREF + wchar_t v29; // [esp+1Ah] [ebp-1Eh] + size_t MaxCount; // [esp+1Ch] [ebp-1Ch] + + v1 = setlocale(2, 0); + v2 = v1; + if ( v1 ) + v2 = strdup(v1); + setlocale(2, Locale); + if ( !Source || !*Source ) + goto LABEL_5; + v28[1] = (size_t)&v25; + v6 = mbstowcs(0, Source, 0); + v7 = 16 * ((2 * v6 + 17) >> 4); + v8 = alloca(v7); + v9 = alloca(v7); + v10 = mbstowcs(&Dest, Source, v6); + v28[0] = v10; + *(&Dest + v10) = 0; + if ( v10 <= 1 ) + { + v29 = Dest; + MaxCount = (size_t)&Dest; + } + else + { + v29 = Dest; + MaxCount = (size_t)&Dest; + if ( Dest == 47 || Dest == 92 ) + { + if ( v29 == v27 && !LOWORD(v28[0]) ) + { + setlocale(2, v2); + __mingw_free((unsigned int)v2); + return Source; + } + } + else if ( v27 == 58 ) + { + MaxCount = (size_t)v28; + v29 = v28[0]; + } + } + if ( v29 ) + { + v11 = (_WORD *)MaxCount; + v12 = v29; + v13 = (_WORD *)MaxCount; + while ( v12 != 47 ) + { + v14 = v11; + if ( v12 == 92 ) + goto LABEL_20; +LABEL_16: + v12 = v14[1]; + ++v11; + if ( !v12 ) + goto LABEL_24; + } + v15 = *v11; + if ( *v11 != 47 ) + goto LABEL_21; + do + { + do + { + ++v11; +LABEL_20: + v15 = *v11; + } + while ( *v11 == 47 ); +LABEL_21: + ; + } + while ( v15 == 92 ); + v14 = v11; + if ( v15 ) + { + v13 = v11; + goto LABEL_16; + } +LABEL_24: + if ( MaxCount >= (unsigned int)v13 ) + { + if ( v29 != 47 && v29 != 92 ) + *(_WORD *)MaxCount = 46; + *(_WORD *)(MaxCount + 2) = 0; + MaxCount = wcstombs(0, &Dest, 0) + 1; + dword_1541CC0 = (int)__mingw_realloc(dword_1541CC0, MaxCount); + v4 = (char *)dword_1541CC0; + wcstombs((char *)dword_1541CC0, &Dest, MaxCount); + goto LABEL_29; + } + while ( 1 ) + { + v16 = v13--; + if ( MaxCount >= (unsigned int)v13 ) + break; + if ( *v13 != 47 && *v13 != 92 ) + goto LABEL_33; + } + if ( (_WORD *)MaxCount == v13 && (v29 == 47 || v29 == 92) && v13[1] == v29 ) + { + v24 = v13[2]; + if ( v24 != 47 && v24 != 92 ) + v13 = v16; + } +LABEL_33: + v13[1] = 0; + v17 = Dest; + p_Dest = &Dest; + if ( Dest == 47 || Dest == 92 ) + { + do + { + do + { + v19 = p_Dest[1]; + ++p_Dest; + } + while ( v19 == 47 ); + } + while ( v19 == 92 ); + if ( (char *)p_Dest - (char *)&Dest > 4 ) + goto LABEL_38; + } + if ( v27 != Dest ) +LABEL_38: + p_Dest = &Dest; + else + v17 = *p_Dest; + if ( v17 ) + { + MaxCount = (size_t)v2; + v20 = p_Dest; + while ( 1 ) + { + *p_Dest++ = v17; + if ( v17 == 47 ) + break; + v21 = v20[1]; + if ( v17 == 92 ) + { + ++v20; + goto LABEL_46; + } + v17 = v20[1]; + ++v20; +LABEL_43: + if ( !v17 ) + { + v2 = (const char *)MaxCount; + goto LABEL_58; + } + } + v21 = *v20; +LABEL_46: + if ( v21 == 92 || (v17 = v21, v21 == 47) ) + { + do + { + do + { + v17 = v20[1]; + ++v20; + } + while ( v17 == 47 ); + } + while ( v17 == 92 ); + } + goto LABEL_43; + } +LABEL_58: + v22 = v28[0]; + *p_Dest = 0; + v23 = wcstombs(Source, &Dest, v22); + v4 = Source; + if ( v23 != -1 ) + Source[v23] = 0; +LABEL_29: + setlocale(2, v2); + __mingw_free((unsigned int)v2); + } + else + { +LABEL_5: + v3 = wcstombs(0, L".", 0) + 1; + dword_1541CC0 = (int)__mingw_realloc(dword_1541CC0, v3); + wcstombs((char *)dword_1541CC0, L".", v3); + setlocale(2, v2); + __mingw_free((unsigned int)v2); + return (char *)dword_1541CC0; + } + return v4; +} +// 1541CC0: using guessed type int dword_1541CC0; + +//----- (0042FDA0) -------------------------------------------------------- +HANDLE __usercall sub_42FDA0@(const CHAR *lpFileName@, int a2@) +{ + HANDLE FirstFileA; // esi + _BYTE *v4; // ecx + CHAR v5; // al + __int16 i; // ax + unsigned __int16 v7; // ax + bool v8; // cf + DWORD dwFileAttributes; // eax + int LastError; // ebx + struct _WIN32_FIND_DATAA FindFileData; // [esp+10h] [ebp-14Ch] BYREF + + FirstFileA = FindFirstFileA(lpFileName, &FindFileData); + if ( FirstFileA == (HANDLE)-1 ) + { + LastError = GetLastError(); + *_errno() = LastError; + if ( LastError == 3 ) + { + *_errno() = 2; + } + else if ( *_errno() == 267 ) + { + *_errno() = 20; + } + else if ( *_errno() != 2 ) + { + *_errno() = 22; + } + return FirstFileA; + } + v4 = (_BYTE *)(a2 + 12); + *(_WORD *)(a2 + 6) = 0; + v5 = FindFileData.cFileName[0]; + *(_BYTE *)(a2 + 12) = FindFileData.cFileName[0]; + if ( v5 ) + { + for ( i = 0; ; i = *(_WORD *)(a2 + 6) ) + { + v7 = i + 1; + *(_WORD *)(a2 + 6) = v7; + v8 = v7 < 0x104u; + LOBYTE(v7) = FindFileData.cFileName[v7]; + v4 += v8; + *v4 = v7; + if ( !(_BYTE)v7 ) + break; + } + } + dwFileAttributes = FindFileData.dwFileAttributes; + LOBYTE(dwFileAttributes) = FindFileData.dwFileAttributes & 0x58; + if ( dwFileAttributes <= 0x10 ) + { + *(_DWORD *)(a2 + 8) = dwFileAttributes; + return FirstFileA; + } + *(_DWORD *)(a2 + 8) = 24; + return FirstFileA; +} + +//----- (0042FE90) -------------------------------------------------------- +BOOL __usercall sub_42FE90@(void *hFindFile@, int a2@) +{ + BOOL NextFileA; // esi + _BYTE *v4; // ecx + CHAR v5; // al + __int16 i; // ax + unsigned __int16 v7; // ax + bool v8; // cf + DWORD dwFileAttributes; // eax + struct _WIN32_FIND_DATAA FindFileData; // [esp+10h] [ebp-14Ch] BYREF + + NextFileA = FindNextFileA(hFindFile, &FindFileData); + if ( NextFileA ) + { + v4 = (_BYTE *)(a2 + 12); + *(_WORD *)(a2 + 6) = 0; + v5 = FindFileData.cFileName[0]; + *(_BYTE *)(a2 + 12) = FindFileData.cFileName[0]; + if ( v5 ) + { + for ( i = 0; ; i = *(_WORD *)(a2 + 6) ) + { + v7 = i + 1; + *(_WORD *)(a2 + 6) = v7; + v8 = v7 < 0x104u; + LOBYTE(v7) = FindFileData.cFileName[v7]; + v4 += v8; + *v4 = v7; + if ( !(_BYTE)v7 ) + break; + } + } + dwFileAttributes = FindFileData.dwFileAttributes; + LOBYTE(dwFileAttributes) = FindFileData.dwFileAttributes & 0x58; + if ( dwFileAttributes <= 0x10 ) + { + *(_DWORD *)(a2 + 8) = dwFileAttributes; + return NextFileA; + } + *(_DWORD *)(a2 + 8) = 24; + return NextFileA; + } + else + { + if ( GetLastError() == 18 ) + return NextFileA; + *_errno() = 2; + return 0; + } +} + +//----- (0042FF50) -------------------------------------------------------- +int __cdecl __mingw_opendir(char *Path) +{ + char *v1; // edx + int v2; // ecx + unsigned int v3; // eax + int v4; // edx + char v5; // cl + char *v6; // eax + int v7; // ecx + unsigned int v8; // eax + unsigned int v9; // ebx + char *v10; // eax + int v11; // ebp + unsigned int v12; // ecx + _BYTE *v13; // eax + HANDLE v14; // eax + char *Buffer; // [esp+0h] [ebp-13Ch] + _BYTE v17[4]; // [esp+18h] [ebp-124h] + char v18[288]; // [esp+1Ch] [ebp-120h] BYREF + + if ( !Path ) + { + v11 = 0; + *_errno() = 22; + return v11; + } + if ( *Path ) + { + _fullpath(v18, Path, 0x104u); + v1 = v18; + if ( v18[0] ) + { + do + { + v2 = *(_DWORD *)v1; + v1 += 4; + v3 = ~v2 & (v2 - 16843009) & 0x80808080; + } + while ( !v3 ); + if ( (~v2 & (v2 - 16843009) & 0x8080) == 0 ) + { + v3 >>= 16; + v1 += 2; + } + v4 = &v1[-__CFADD__((_BYTE)v3, (_BYTE)v3) - 3] - v18; + v5 = v17[v4 + 3]; + v6 = &v18[v4]; + if ( v5 != 47 && v5 != 92 ) + { + *(_WORD *)v6 = 92; + v6 = &v18[v4 + 1]; + } + } + else + { + do + { + v7 = *(_DWORD *)v1; + v1 += 4; + v8 = ~v7 & (v7 - 16843009) & 0x80808080; + } + while ( !v8 ); + if ( (~v7 & (v7 - 16843009) & 0x8080) == 0 ) + { + v8 >>= 16; + v1 += 2; + } + v6 = &v1[-__CFADD__((_BYTE)v8, (_BYTE)v8) - 3]; + } + *(_WORD *)v6 = 42; + v9 = strlen(v18); + v10 = (char *)malloc(v9 + 284); + v11 = (int)v10; + if ( v10 ) + { + v12 = v9 + 1; + v13 = v10 + 280; + if ( v9 + 1 < 4 ) + { + if ( v9 != -1 ) + { + *v13 = v18[0]; + if ( (v12 & 2) != 0 ) + *(_WORD *)&v13[v12 - 2] = *(_WORD *)&v17[v12 + 2]; + } + } + else + { + *(_DWORD *)&v13[v12 - 4] = *(_DWORD *)&v17[v12]; + qmemcpy(v13, v18, 4 * (v9 >> 2)); + } + v14 = sub_42FDA0(v13, v11); + *(_DWORD *)(v11 + 272) = v14; + if ( v14 == (HANDLE)-1 ) + { + Buffer = (char *)v11; + v11 = 0; + __mingw_free((unsigned int)Buffer); + } + else + { + *(_DWORD *)v11 = 0; + *(_DWORD *)(v11 + 276) = 0; + *(_WORD *)(v11 + 4) = 272; + } + } + else + { + *_errno() = 12; + } + return v11; + } + *_errno() = 2; + return 0; +} +// 42FF50: using guessed type char var_120[288]; + +//----- (00430150) -------------------------------------------------------- +int __cdecl __mingw_readdir(int a1) +{ + int v1; // edx + int v2; // ebx + + if ( a1 ) + { + v1 = *(_DWORD *)(a1 + 276); + v2 = a1; + *(_DWORD *)(a1 + 276) = v1 + 1; + if ( v1 > 0 ) + return sub_42FE90(*(void **)(a1 + 272), a1) ? a1 : 0; + } + else + { + v2 = 0; + *_errno() = 9; + } + return v2; +} + +//----- (004301A0) -------------------------------------------------------- +int __cdecl __mingw_closedir(unsigned int a1) +{ + if ( a1 && FindClose(*(HANDLE *)(a1 + 272)) ) + { + __mingw_free(a1); + return 0; + } + else + { + *_errno() = 9; + return -1; + } +} + +//----- (004301F0) -------------------------------------------------------- +_DWORD *__cdecl __mingw_rewinddir(int a1) +{ + _DWORD *result; // eax + + if ( a1 && FindClose(*(HANDLE *)(a1 + 272)) ) + { + result = sub_42FDA0((const CHAR *)(a1 + 280), a1); + *(_DWORD *)(a1 + 272) = result; + if ( result != (_DWORD *)-1 ) + *(_DWORD *)(a1 + 276) = 0; + } + else + { + result = _errno(); + *result = 9; + } + return result; +} + +//----- (00430250) -------------------------------------------------------- +int __cdecl __mingw_telldir(int a1) +{ + if ( a1 ) + return *(_DWORD *)(a1 + 276); + *_errno() = 9; + return -1; +} + +//----- (00430280) -------------------------------------------------------- +int *__cdecl __mingw_seekdir(int a1, int a2) +{ + int *result; // eax + + if ( a2 < 0 ) + { + result = _errno(); + *result = 22; + } + else + { + result = __mingw_rewinddir(a1); + if ( a2 && *(_DWORD *)(a1 + 272) != -1 ) + { + do + { + result = (int *)(*(_DWORD *)(a1 + 276) + 1); + *(_DWORD *)(a1 + 276) = result; + if ( (int)result >= a2 ) + break; + result = (int *)sub_42FE90(*(void **)(a1 + 272), a1); + } + while ( result ); + } + } + return result; +} + +//----- (00430300) -------------------------------------------------------- +int __mingw_mbrtowc_codeset_init() +{ + int v0; // ebx + + v0 = __mb_codeset_for_locale(); + *__emutls_get_address(dword_4E8060) = v0; + return v0; +} +// 4E8060: using guessed type size_t dword_4E8060[4]; + +//----- (00430320) -------------------------------------------------------- +UINT __cdecl __mingw_mbrlen_cur_max_init(UINT a1) +{ + UINT v1; // ebx + + v1 = __mb_cur_max_for_codeset(a1); + *__emutls_get_address(dword_4E8070) = v1; + return v1; +} +// 4E8070: using guessed type size_t dword_4E8070[4]; + +//----- (00430350) -------------------------------------------------------- +int __mingw_mbrlen_cur_max() +{ + return *__emutls_get_address(dword_4E8070); +} +// 4E8070: using guessed type size_t dword_4E8070[4]; + +//----- (00430370) -------------------------------------------------------- +int __cdecl __mingw_mbtowc_convert(LPCCH lpMultiByteStr, int a2, LPWSTR lpWideCharStr, int cchWideChar) +{ + DWORD dwFlags; // edi + UINT *address; // esi + int v6; // ebp + + dwFlags = 8; + address = __emutls_get_address(dword_4E8060); + do + { + SetLastError(0); + v6 = MultiByteToWideChar(*address, dwFlags, lpMultiByteStr, a2 == 0 ? -1 : a2, lpWideCharStr, cchWideChar); + if ( v6 ) + break; + dwFlags = 0; + } + while ( GetLastError() == 1004 ); + return v6; +} +// 4E8060: using guessed type size_t dword_4E8060[4]; + +//----- (00430400) -------------------------------------------------------- +int __cdecl __mingw_mbrscan_begin(_WORD **a1, int *a2, int *a3, unsigned int *a4) +{ + unsigned int v4; // eax + unsigned int v5; // esi + int v6; // ebx + unsigned int *address; // eax + int v8; // edx + unsigned int *v9; // edi + CHAR v10; // al + unsigned int v11; // ecx + int v12; // eax + _WORD *v13; // edx + CHAR *v15; // ebx + unsigned int v16; // edx + _WORD *v17; // eax + int v18; // [esp+14h] [ebp-38h] + int v19; // [esp+18h] [ebp-34h] + int v20; // [esp+1Ch] [ebp-30h] + int v21; // [esp+1Ch] [ebp-30h] + WCHAR v22[2]; // [esp+24h] [ebp-28h] BYREF + CHAR v23[4]; // [esp+28h] [ebp-24h] BYREF + int v24; // [esp+2Ch] [ebp-20h] + + v19 = 0; + v4 = *a4; + if ( !*a4 ) + return v19; + v24 = 0; + *(_DWORD *)v23 = v4; + *a4 = 0; + if ( (v4 & 0xFC00) == 0xD800 ) + { + v16 = HIWORD(v4); + if ( (HIWORD(v4) & 0xFC00) == 0xDC00 ) + { + if ( !a1 ) + return 1; + v17 = *a1; + if ( !*a1 ) + return 1; + *a1 = v17 + 1; + *v17 = v16; + if ( !*a3 ) + return 1; + --*a3; + return 1; + } + } + v5 = 0; + if ( (_BYTE)v4 ) + { + do + ++v5; + while ( v23[v5] ); + } + v6 = 0; + v20 = *a2; + address = __emutls_get_address(dword_4E8070); + v18 = v5; + v8 = v20; + v19 = 0; + v9 = address; + while ( 1 ) + { + while ( 1 ) + { + v10 = *(_BYTE *)(v8 + v6); + v11 = *v9; + ++v6; + if ( !v10 ) + break; + if ( v5 >= v11 ) + goto LABEL_13; + v23[v5++] = v10; + } + if ( v5 < v11 ) + v23[v5] = 0; +LABEL_13: + while ( 1 ) + { + v12 = __mingw_mbtowc_convert(v23, v6, v22, 2); + if ( v12 ) + break; + if ( v6 >= *v9 ) + goto LABEL_32; + ++v6; + } + if ( v12 > 1 && ((v22[0] & 0xFC00) != 0xD800 || (v22[1] & 0xFC00) != 0xDC00) ) + break; + if ( a1 ) + { + v13 = *a1; + if ( *a1 ) + { + *a1 = v13 + 1; + *v13 = v22[0]; + v21 = *a3; + if ( *a3 < (unsigned int)v12 ) + { + if ( v12 > 1 ) + { + *a4 = *(_DWORD *)v22; + return 1; + } + } + else + { + if ( v12 > 1 ) + { + *a1 = v13 + 2; + v13[1] = v22[1]; + } + *a3 = v21 - v12; + } + } + } + v19 += v12; + v8 = *a2; + if ( v6 >= v18 ) + { + *a2 = v8 + v6 - v18; + return v19; + } + v23[v18] = 0; + if ( v23[0] ) + { + v5 = 0; + v15 = &v23[v6]; + do + { + v23[v5] = v15[v5]; + ++v5; + } + while ( v23[v5] ); + v18 = v5; + v6 = 0; + } + else + { + v18 = 0; + v6 = 0; + v5 = 0; + } + } +LABEL_32: + *_errno() = 42; + return -1; +} +// 4E8070: using guessed type size_t dword_4E8070[4]; + +//----- (00430690) -------------------------------------------------------- +int __cdecl __mingw_mbtowc_copy(LPWSTR a1, LPCCH a2, unsigned int a3) +{ + WCHAR *v5; // esi + unsigned int v6; // ebx + int v7; // eax + int v9; // eax + unsigned int v10; // edx + unsigned int v11; // [esp+18h] [ebp-34h] + __int16 v12[16]; // [esp+2Ch] [ebp-20h] BYREF + + v11 = 0; + if ( a3 ) + { + while ( 1 ) + { + if ( !a1 || (v5 = a1, (int)(a3 - v11) <= 1) ) + v5 = (WCHAR *)v12; + v6 = 0; + while ( 1 ) + { + v7 = __mingw_mbtowc_convert(a2, ++v6, v5, 2); + if ( v7 ) + break; + if ( *__emutls_get_address(dword_4E8070) <= v6 ) + { + *_errno() = 42; + return -1; + } + } + if ( !*v5 ) + break; + if ( (int)(a3 - v11) >= v7 ) + { + v11 += v7; + if ( a1 ) + { + if ( v5 == (WCHAR *)v12 ) + { + if ( v7 > 0 ) + { + v9 = 2 * v7; + v10 = 0; + do + { + a1[v10 / 2] = v12[v10 / 2]; + v10 += 2; + } + while ( v9 != v10 ); + a1 = (LPWSTR)((char *)a1 + v9); + } + } + else + { + a1 += v7; + } + } + a2 += v6; + if ( a3 > v11 ) + continue; + } + return v11; + } + if ( a1 ) + *a1 = 0; + } + return v11; +} +// 4E8070: using guessed type size_t dword_4E8070[4]; + +//----- (004307B0) -------------------------------------------------------- +size_t __cdecl mbrtowc(wchar_t *DstCh, const char *SrcCh, size_t SizeInBytes, mbstate_t *State) +{ + const char *v4; // eax + mbstate_t *v7; // ebx + + v4 = SrcCh; + v7 = State; + if ( !SrcCh ) + { + SizeInBytes = 1; + DstCh = 0; + v4 = (const char *)&unk_4EFF94; + } + if ( !State ) + v7 = (mbstate_t *)&unk_1541CC4; + return __mingw_mbrtowc_handler(DstCh, (int)v4, SizeInBytes, v7); +} + +//----- (00430800) -------------------------------------------------------- +size_t __cdecl wcrtomb(char *Dest, wchar_t Source, mbstate_t *State) +{ + mbstate_t *v3; // ebx + int v4; // eax + unsigned int Wchar; // eax + size_t result; // eax + int v7; // eax + WCHAR *v8; // edx + int v9; // [esp+Ch] [ebp-20h] + WCHAR v10; // [esp+1Ah] [ebp-12h] BYREF + __int16 v11[8]; // [esp+1Ch] [ebp-10h] BYREF + + v3 = State; + v4 = __mingw_wctomb_codeset_init(); + __mingw_wctomb_cur_max_init(v4); + if ( !State ) + v3 = (mbstate_t *)&unk_1541CC8; + Wchar = v3->_Wchar; + v10 = Source; + if ( Wchar ) + { + if ( (Wchar & 0xFC00) != 55296 || (Source & 0xFC00) != 0xDC00 ) + { + v3->_Wchar = 0; + *_errno() = 42; + return -1; + } + v3->_Wchar = 0; + v11[0] = Wchar; + v11[1] = Source; + v7 = __mingw_wctomb_cur_max(); + v9 = 2; + v8 = (WCHAR *)v11; + return __mingw_wctomb_convert(Dest, v7, v8, v9); + } + if ( !Dest ) + return 1; + if ( (Source & 0xFC00) == 0xD800 ) + { + result = 0; + v3->_Wchar = Source; + } + else + { + if ( (Source & 0xFC00) != 0xDC00 ) + { + v7 = __mingw_wctomb_cur_max(); + v9 = 1; + v8 = &v10; + return __mingw_wctomb_convert(Dest, v7, v8, v9); + } + *_errno() = 42; + return -1; + } + return result; +} + +//----- (00430920) -------------------------------------------------------- +int __cdecl wctob(wint_t WCh) +{ + WCHAR v2[9]; // [esp+1Ch] [ebp-20h] BYREF + CHAR v3[13]; // [esp+2Fh] [ebp-Dh] BYREF + + v2[0] = WCh; + __mingw_wctomb_codeset_init(); + if ( __mingw_wctomb_convert(v3, 1, v2, 1) == 1 ) + return (unsigned __int8)v3[0]; + else + return -1; +} +// 430920: using guessed type WCHAR var_20[9]; +// 430920: using guessed type CHAR var_D[13]; + +//----- (00430970) -------------------------------------------------------- +wctype_t __cdecl wctype(const char *name) +{ + const char *Str2; // eax + int v2; // ebx + + Str2 = "alnum"; + v2 = 0; + while ( strcmp(name, Str2) ) + { + if ( ++v2 == 11 ) + return 0; + Str2 = (&off_4F0000)[2 * v2]; + } + return word_4F0004[4 * v2]; +} +// 4F0000: using guessed type char *off_4F0000; +// 4F0004: using guessed type __int16 word_4F0004[]; + +//----- (004309C0) -------------------------------------------------------- +wchar_t *__cdecl wmemchr(const wchar_t *S, wchar_t C, size_t N) +{ + wchar_t *result; // eax + size_t v4; // edx + + result = (wchar_t *)S; + v4 = N; + if ( !S || !N ) + return 0; + while ( *result != C ) + { + ++result; + if ( !--v4 ) + return 0; + } + return result; +} + +//----- (00430A00) -------------------------------------------------------- +int __cdecl wmemcmp(const wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t v3; // edi + const wchar_t *v4; // edx + const wchar_t *v5; // eax + int v6; // esi + + v3 = N; + v4 = S1; + v5 = S2; + if ( !N || S1 == S2 ) + return 0; + if ( (S1 != 0) != (S2 != 0) ) + return S2 == 0 ? 1 : -1; + while ( 1 ) + { + v6 = *v5; + if ( *v4 != (_WORD)v6 ) + break; + ++v4; + ++v5; + if ( !--v3 ) + return 0; + } + return *v4 - v6; +} + +//----- (00430A70) -------------------------------------------------------- +wchar_t *__cdecl wmemcpy(wchar_t *S1, const wchar_t *S2, size_t N) +{ + const wchar_t *v3; // esi + size_t v4; // eax + wchar_t *v5; // edi + + v3 = S2; + v4 = N; + if ( N != 0 && S2 != 0 && S1 ) + { + v5 = S1; + do + { + *v5++ = *v3++; + --v4; + } + while ( v4 ); + } + return S1; +} + +//----- (00430AB0) -------------------------------------------------------- +wchar_t *__cdecl wmemmove(wchar_t *S1, const wchar_t *S2, size_t N) +{ + const wchar_t *v3; // esi + size_t v4; // eax + wchar_t *v5; // edi + size_t v7; // eax + + v3 = S2; + v4 = N; + if ( N != 0 && S2 != 0 && S1 ) + { + if ( S1 > S2 ) + { + do + { + S1[v4 - 1] = S2[v4 - 1]; + v7 = v4 - 1; + if ( !v7 ) + break; + S1[v7 - 1] = S2[v7 - 1]; + v4 = v7 - 1; + } + while ( v4 ); + } + else + { + v5 = S1; + do + { + *v5++ = *v3++; + --v4; + } + while ( v4 ); + } + } + return S1; +} + +//----- (00430B10) -------------------------------------------------------- +wchar_t *__cdecl wmemset(wchar_t *S, wchar_t C, size_t N) +{ + size_t v3; // eax + wchar_t *v4; // edx + + v3 = N; + if ( S && N ) + { + v4 = S; + do + { + *v4++ = C; + --v3; + } + while ( v3 ); + } + return S; +} + +//----- (00430B40) -------------------------------------------------------- +int __cdecl __gethex_D2A(unsigned __int8 **a1, int *a2, int *a3, int **a4, int a5) +{ + char *decimal_point; // ebp + unsigned __int8 *v6; // ebx + unsigned __int8 v7; // dl + unsigned __int8 *v8; // eax + int v9; // ecx + int v10; // edi + unsigned __int8 *v11; // ebx + char v12; // cl + int v13; // eax + unsigned __int8 v14; // di + unsigned __int8 *v15; // esi + int v16; // eax + int v17; // esi + int v18; // ebx + int v19; // edi + int v20; // edx + int j; // eax + int *v22; // eax + int *v23; // edx + int v24; // esi + int v25; // edx + unsigned __int8 v26; // al + unsigned __int8 v27; // al + int v28; // edx + int i; // eax + int v30; // eax + unsigned int *v31; // edi + int v32; // edx + unsigned __int8 *v33; // ecx + char v34; // cl + int v35; // eax + int v36; // eax + unsigned int v37; // ebp + int *v38; // ebx + unsigned int v39; // eax + int *v40; // edx + int v41; // eax + _BYTE *v42; // edx + int v43; // eax + int v44; // eax + int v45; // ecx + int v46; // ebx + int v47; // edx + unsigned int v49; // esi + unsigned int v50; // eax + unsigned int v51; // eax + int v52; // esi + signed int v53; // esi + int v54; // edi + int v55; // ebx + int v56; // eax + int v57; // esi + int v58; // eax + char v59; // dl + int v60; // esi + int v61; // edx + int v62; // esi + char v63; // dl + int v64; // eax + int v65; // ecx + int v66; // esi + int v67; // ecx + int v68; // ebx + unsigned int v69; // eax + int v70; // edi + unsigned __int8 *v71; // ecx + int v72; // edx + int v73; // eax + int v74; // [esp+4h] [ebp-48h] + int v75; // [esp+14h] [ebp-38h] + unsigned int v76; // [esp+14h] [ebp-38h] + char v77; // [esp+18h] [ebp-34h] + unsigned __int8 *v78; // [esp+18h] [ebp-34h] + unsigned int v79; // [esp+18h] [ebp-34h] + int v80; // [esp+1Ch] [ebp-30h] + BOOL v81; // [esp+1Ch] [ebp-30h] + char *v82; // [esp+1Ch] [ebp-30h] + int v83; // [esp+20h] [ebp-2Ch] + int v84; // [esp+24h] [ebp-28h] + int *v85; // [esp+24h] [ebp-28h] + _DWORD *v86; // [esp+28h] [ebp-24h] + unsigned __int8 *v87; // [esp+28h] [ebp-24h] + int v88; // [esp+2Ch] [ebp-20h] + + decimal_point = localeconv()->decimal_point; + if ( !byte_1541D50 ) + hexdig_init_D2A(); + *a4 = 0; + v6 = *a1; + v7 = (*a1)[2]; + if ( v7 == 48 ) + { + v8 = v6 + 3; + v9 = -2 - (_DWORD)v6; + do + { + v10 = (int)&v8[v9]; + v11 = v8; + v7 = *v8++; + } + while ( v7 == 48 ); + } + else + { + v11 = v6 + 2; + v10 = 0; + } + v12 = *decimal_point; + v77 = *decimal_point; + if ( __hexdig_D2A[v7] ) + { + v76 = (unsigned int)v11; + ++v10; + v15 = 0; + v81 = 0; + goto LABEL_32; + } + v77 = *decimal_point; + if ( v12 ) + { + v80 = v10; + v13 = 0; + v14 = v7; + do + { + if ( v12 != v7 ) + { + v7 = v14; + v10 = v80; + goto LABEL_12; + } + v12 = decimal_point[++v13]; + v7 = v11[v13]; + v15 = &v11[v13]; + } + while ( v12 ); + v10 = v80; + if ( __hexdig_D2A[v7] ) + { + if ( v7 == 48 ) + { + v11 += v13; + do + v26 = *++v11; + while ( v26 == 48 ); + v76 = (unsigned int)v11; + v10 = 1; + v59 = __hexdig_D2A[v26]; + v81 = v59 == 0; + if ( !v59 ) + { +LABEL_33: + if ( v26 != v77 ) + { + v83 = 0; + v27 = *v11; + if ( v15 ) + v83 = 4 * (v15 - v11); +LABEL_36: + if ( (v27 & 0xDF) != 80 ) + goto LABEL_37; +LABEL_53: + v78 = v11; + v11 = (unsigned __int8 *)v76; + goto LABEL_54; + } + if ( v15 ) + { + v83 = 4 * (v15 - v11); + if ( (*v11 & 0xDF) != 80 ) + { +LABEL_37: + *a1 = v11; + if ( !v81 ) + goto LABEL_38; + return 0; + } + goto LABEL_53; + } + v63 = decimal_point[1]; + if ( v63 ) + { + v64 = 1; + while ( v11[v64] == v63 ) + { + v63 = decimal_point[++v64]; + v65 = v64; + if ( !v63 ) + goto LABEL_151; + } + v27 = *v11; + } + else + { + v65 = 1; +LABEL_151: + v71 = &v11[v65]; + v11 = v71; + v27 = *v71; + if ( __hexdig_D2A[*v71] ) + { + do + { + v72 = *++v11; + v27 = v72; + } + while ( __hexdig_D2A[v72] ); + v83 = 4 * (v71 - v11); + goto LABEL_36; + } + } + v83 = 0; + goto LABEL_36; + } + } + else + { + v81 = 0; + v11 += v13; + v10 = 1; + v76 = (unsigned int)v15; + } + do + { +LABEL_32: + v25 = *++v11; + v26 = v25; + } + while ( __hexdig_D2A[v25] ); + goto LABEL_33; + } + } + else + { +LABEL_12: + v15 = v11; + } + v78 = v15; + if ( (v7 & 0xDF) != 80 ) + { + v81 = 1; + v83 = 0; + v75 = 0; + v84 = 0; + goto LABEL_15; + } + v83 = 0; + v81 = 1; +LABEL_54: + v41 = v78[1]; + if ( (_BYTE)v41 == 43 ) + { + v75 = 0; + } + else + { + if ( (_BYTE)v41 != 45 ) + { + v75 = 0; + v42 = v78 + 1; + goto LABEL_57; + } + v75 = 1; + } + v42 = v78 + 2; + v41 = v78[2]; +LABEL_57: + v43 = (unsigned __int8)__hexdig_D2A[v41]; + v15 = v78; + v84 = 0; + if ( (unsigned __int8)(v43 - 1) > 0x18u ) + { +LABEL_15: + if ( v10 ) + goto LABEL_67; + goto LABEL_16; + } + v15 = v42 + 1; + v44 = v43 - 16; + v45 = (unsigned __int8)__hexdig_D2A[(unsigned __int8)v42[1]]; + if ( (unsigned __int8)(__hexdig_D2A[(unsigned __int8)v42[1]] - 1) <= 0x18u ) + { + v87 = v11; + v46 = 0; + do + { + if ( (v44 & 0xF8000000) != 0 ) + v46 = 1; + v47 = *++v15; + v44 = v45 + 10 * v44 - 16; + v45 = (unsigned __int8)__hexdig_D2A[v47]; + } + while ( (unsigned __int8)(__hexdig_D2A[v47] - 1) <= 0x18u ); + v84 = v46; + v11 = v87; + } + if ( v75 ) + v44 = -v44; + v83 += v44; + if ( v10 ) + { +LABEL_67: + *a1 = v15; + if ( v81 ) + return 0; + goto LABEL_17; + } +LABEL_16: + *a1 = v11 - 1; + if ( v81 ) + return 0; +LABEL_17: + if ( !v84 ) + { + v76 = (unsigned int)v11; + v11 = v78; +LABEL_38: + v28 = 0; + for ( i = (int)&v11[-v76 - 1]; i > 7; ++v28 ) + i >>= 1; + v85 = __Balloc_D2A(v28); + v86 = v85 + 5; + if ( decimal_point[1] ) + { + v30 = 0; + do + ++v30; + while ( decimal_point[v30 + 1] ); + v88 = v30; + } + else + { + v88 = 0; + } + if ( (unsigned int)v11 <= v76 ) + { + v31 = (unsigned int *)(v85 + 5); + v49 = 0; + v38 = v85 + 6; + v51 = 32; + } + else + { + v31 = (unsigned int *)(v85 + 5); + v32 = 0; + v82 = &decimal_point[v88]; + v33 = v11; + v79 = 0; + do + { + while ( 1 ) + { + v36 = *(v33 - 1); + v37 = (unsigned int)(v33 - 1); + v38 = (int *)(v31 + 1); + if ( (_BYTE)v36 != *v82 ) + break; + v33 = (unsigned __int8 *)(v37 - v88); + if ( v37 - v88 <= v76 ) + goto LABEL_71; + } + if ( v32 == 32 ) + { + v39 = v79; + v40 = (int *)(v31 + 2); + v79 = 0; + *v31++ = v39; + v36 = *(v33 - 1); + v38 = v40; + v34 = 0; + v32 = 4; + } + else + { + v34 = v32; + v32 += 4; + } + v35 = (__hexdig_D2A[v36] & 0xF) << v34; + v33 = (unsigned __int8 *)v37; + v79 |= v35; + } + while ( v37 > v76 ); +LABEL_71: + v49 = v79; + _BitScanReverse(&v50, v79); + v51 = v50 ^ 0x1F; + } + *v31 = v49; + v52 = v38 - v86; + v85[4] = v52; + v53 = 32 * v52 - v51; + v54 = *a2; + if ( v53 > *a2 ) + { + v66 = v53 - v54; + v55 = __any_on_D2A((int)v85, v66); + if ( v55 ) + { + v55 = 1; + if ( ((1 << (v66 - 1)) & v86[(v66 - 1) >> 5]) != 0 ) + { + if ( v66 == 1 || (v55 = 3, !__any_on_D2A((int)v85, v66 - 1)) ) + v55 = 2; + } + } + __rshift_D2A((int)v85, v66); + v83 += v66; + } + else + { + v55 = 0; + if ( v53 < *a2 ) + { + v62 = v54 - v53; + v83 -= v62; + v85 = __lshift_D2A(v85, v62); + v86 = v85 + 5; + } + } + if ( a2[2] < v83 ) + { +LABEL_111: + __Bfree_D2A((unsigned int)v85); + goto LABEL_112; + } + v56 = a2[1]; + if ( v56 <= v83 ) + { + v57 = 1; + goto LABEL_78; + } + v60 = v56 - v83; + if ( v54 > v56 - v83 ) + { + v67 = v60 - 1; + if ( v55 ) + { + v55 = 1; + } + else if ( v60 != 1 ) + { + v73 = __any_on_D2A((int)v85, v60 - 1); + v67 = v60 - 1; + v55 = v73; + } + if ( ((1 << v67) & v86[v67 >> 5]) != 0 ) + v55 |= 2u; + v74 = v60; + v54 -= v60; + v57 = 2; + __rshift_D2A((int)v85, v74); + v83 = a2[1]; +LABEL_78: + if ( !v55 ) + { +LABEL_83: + *a4 = v85; + *a3 = v83; + return v57; + } + v58 = a2[3]; + if ( v58 == 2 ) + { + a5 = 1 - a5; + } + else if ( v58 != 3 ) + { + if ( v58 != 1 || (v55 & 2) == 0 || ((*v86 | v55) & 1) == 0 ) + goto LABEL_82; +LABEL_131: + v68 = v85[4]; + v85 = __increment_D2A(v85); + v69 = (unsigned int)(v85 + 5); + if ( v57 == 2 ) + { + v57 = 34; + if ( *a2 - 1 == v54 ) + v57 = (((1 << v54) & *(_DWORD *)(v69 + 4 * (v54 >> 5))) == 0) + 33; + goto LABEL_83; + } + if ( v85[4] <= v68 + && ((v70 = v54 & 0x1F) == 0 + || (_BitScanReverse(&v69, *(_DWORD *)(v69 + 4 * v68 - 4)), 32 - v70 <= (int)(v69 ^ 0x1F))) + || (__rshift_D2A((int)v85, 1), ++v83, a2[2] >= v83) ) + { + v57 = 33; + goto LABEL_83; + } + goto LABEL_111; + } + if ( !a5 ) + { +LABEL_82: + v57 |= 0x10u; + goto LABEL_83; + } + goto LABEL_131; + } + v61 = a2[3]; + if ( v61 == 2 ) + { + if ( !a5 ) + goto LABEL_139; + } + else if ( v61 == 3 ) + { + if ( a5 ) + goto LABEL_139; + } + else if ( v61 == 1 && v54 == v60 ) + { + if ( v54 != 1 ) + { + if ( __any_on_D2A((int)v85, v54 - 1) ) + { + v56 = a2[1]; + goto LABEL_139; + } + goto LABEL_99; + } +LABEL_139: + v85[4] = 1; + *v86 = 1; + goto LABEL_94; + } +LABEL_99: + __Bfree_D2A((unsigned int)v85); +LABEL_100: + *_errno() = 34; + return 80; + } + v16 = a2[3]; + if ( v75 ) + { + if ( v16 == 2 ) + { + if ( a5 ) + goto LABEL_100; + } + else if ( v16 != 3 || !a5 ) + { + goto LABEL_100; + } + v85 = __Balloc_D2A(0); + v85[4] = 1; + v85[5] = 1; + v56 = a2[1]; +LABEL_94: + *a4 = v85; + v24 = 98; + *a3 = v56; + *_errno() = 34; + return v24; + } + if ( v16 == 2 ) + { + if ( !a5 ) + goto LABEL_112; + goto LABEL_22; + } + if ( v16 == 3 ) + { + if ( a5 ) + goto LABEL_112; + goto LABEL_22; + } + if ( v16 != 1 ) + { +LABEL_22: + v17 = *a2 & 0x1F; + v18 = *a2 >> 5; + v19 = v18 - ((v17 == 0) - 1); + v20 = 0; + for ( j = v19 >> 1; j; j >>= 1 ) + ++v20; + v22 = __Balloc_D2A(v20); + *a4 = v22; + v22[4] = v19; + if ( v18 > 0 ) + { + v23 = v22 + 5; + do + *v23++ = -1; + while ( &v22[v18 + 5] != v23 ); + v75 = v18; + } + if ( v19 > v18 ) + v22[v75 + 5] = 32 >> (32 - v17); + v24 = 17; + *a3 = a2[1]; + return v24; + } +LABEL_112: + *_errno() = 34; + return 163; +} +// 1541D50: using guessed type char byte_1541D50; + +//----- (00431540) -------------------------------------------------------- +int __cdecl __rshift_D2A(int a1, int a2) +{ + int v2; // ebx + _DWORD *v3; // ebp + unsigned int v4; // ebx + _DWORD *v5; // esi + char v6; // di + int *v7; // edx + int v8; // eax + int v9; // esi + int v10; // ebx + _DWORD *v11; // edx + int result; // eax + _DWORD *v13; // edi + unsigned int v14; // [esp+0h] [ebp-24h] + int v15; // [esp+4h] [ebp-20h] + int v16; // [esp+8h] [ebp-1Ch] + + v2 = *(_DWORD *)(a1 + 16); + v16 = a2 >> 5; + v15 = v2; + if ( v2 <= a2 >> 5 ) + goto LABEL_8; + v3 = (_DWORD *)(a1 + 20); + v4 = a1 + 20 + 4 * v2; + v5 = (_DWORD *)(a1 + 20 + 4 * (a2 >> 5)); + v6 = a2 & 0x1F; + if ( (a2 & 0x1F) == 0 ) + { + v13 = (_DWORD *)(a1 + 20); + if ( v4 > (unsigned int)v5 ) + { + do + *v13++ = *v5++; + while ( v4 > (unsigned int)v5 ); + v11 = &v3[v15 - v16]; + goto LABEL_13; + } +LABEL_8: + *(_DWORD *)(a1 + 16) = 0; +LABEL_9: + result = a1; + *(_DWORD *)(a1 + 20) = 0; + return result; + } + v7 = v5 + 1; + v8 = *v5 >> v6; + if ( v4 <= (unsigned int)(v5 + 1) ) + { + *(_DWORD *)(a1 + 20) = v8; + if ( v8 ) + { + v11 = (_DWORD *)(a1 + 20); +LABEL_7: + ++v11; + goto LABEL_13; + } + goto LABEL_8; + } + v14 = v4; + v9 = a1 + 20; + do + { + v10 = *v7; + v9 += 4; + ++v7; + *(_DWORD *)(v9 - 4) = (v10 << (32 - v6)) | v8; + v8 = (unsigned int)*(v7 - 1) >> v6; + } + while ( v14 > (unsigned int)v7 ); + v3 = (_DWORD *)(a1 + 20); + v11 = (_DWORD *)(a1 + 20 + 4 * (v15 - v16) - 4); + *v11 = v8; + if ( v8 ) + goto LABEL_7; +LABEL_13: + result = v11 - v3; + *(_DWORD *)(a1 + 16) = result; + if ( v11 == v3 ) + goto LABEL_9; + return result; +} + +//----- (00431650) -------------------------------------------------------- +int __cdecl __trailz_D2A(int a1) +{ + int *v1; // eax + unsigned int v2; // ebx + int v3; // edx + + v1 = (int *)(a1 + 20); + v2 = a1 + 20 + 4 * *(_DWORD *)(a1 + 16); + v3 = 0; + if ( a1 + 20 < v2 ) + { + while ( 1 ) + { + _ECX = *v1; + if ( *v1 ) + break; + ++v1; + v3 += 32; + if ( v2 <= (unsigned int)v1 ) + return v3; + } + if ( v2 > (unsigned int)v1 ) + { + __asm { tzcnt ecx, ecx } + v3 += _ECX; + } + } + return v3; +} + +//----- (00431690) -------------------------------------------------------- +int *__cdecl __s2b_D2A(int a1, int a2, int a3, int a4, int a5) +{ + int v5; // esi + int v6; // eax + int v7; // ecx + int *result; // eax + char *v9; // ebp + int v10; // ecx + char *v11; // ebp + char *v12; // ebx + int v13; // edx + + v5 = a2; + if ( a3 <= 9 ) + { + v7 = 0; + } + else + { + v6 = 1; + v7 = 0; + do + { + v6 *= 2; + ++v7; + } + while ( (a3 + 8) / 9 > v6 ); + } + result = __Balloc_D2A(v7); + result[4] = 1; + result[5] = a4; + if ( a2 <= 9 ) + { + v11 = (char *)(a1 + a5 + 9); + v5 = 9; + } + else + { + v9 = (char *)(a1 + 9); + do + { + v10 = *v9++; + result = __multadd_D2A(result, 10, v10 - 48); + } + while ( v9 != (char *)(a2 + a1) ); + v11 = (char *)(a1 + a2 + a5); + } + if ( a3 > v5 ) + { + v12 = &v11[a3 - v5]; + do + { + v13 = *v11++; + result = __multadd_D2A(result, 10, v13 - 48); + } + while ( v12 != v11 ); + } + return result; +} + +//----- (00431790) -------------------------------------------------------- +long double __cdecl __ratio_D2A(int a1, int a2) +{ + int v2; // eax + double v4; // [esp+10h] [ebp-3Ch] + double v5; // [esp+18h] [ebp-34h] + double v6; // [esp+20h] [ebp-2Ch] + double v7; // [esp+28h] [ebp-24h] + int v8; // [esp+38h] [ebp-14h] BYREF + int v9[4]; // [esp+3Ch] [ebp-10h] BYREF + + v4 = __b2d_D2A(a1, &v8); + v6 = v4; + v5 = __b2d_D2A(a2, v9); + v7 = v5; + v2 = v8 + 32 * (*(_DWORD *)(a1 + 16) - *(_DWORD *)(a2 + 16)) - v9[0]; + if ( v2 <= 0 ) + { + HIDWORD(v7) = HIDWORD(v5) - (v2 << 20); + return v4 / v7; + } + else + { + HIDWORD(v6) = HIDWORD(v4) + (v2 << 20); + return v6 / v5; + } +} +// 431790: using guessed type int var_10[4]; + +//----- (00431850) -------------------------------------------------------- +int __cdecl __match_D2A(char **a1, char *a2) +{ + char *v3; // edx + int v4; // ebx + int v5; // eax + + v3 = *a1; + while ( 1 ) + { + v4 = *a2++; + ++v3; + if ( !v4 ) + break; + v5 = *v3; + if ( (unsigned int)(v5 - 65) > 0x19 ) + { + if ( v5 != v4 ) + return 0; + } + else if ( v5 + 32 != v4 ) + { + return 0; + } + } + *a1 = v3; + return 1; +} + +//----- (004318A0) -------------------------------------------------------- +_DWORD *__cdecl __copybits_D2A(_DWORD *a1, int a2, int a3) +{ + _DWORD *result; // eax + _DWORD *v4; // esi + unsigned int v5; // ecx + unsigned int v6; // edx + _DWORD *v7; // edi + + result = a1; + v4 = (_DWORD *)(a3 + 20); + v5 = (unsigned int)&a1[((a2 - 1) >> 5) + 1]; + v6 = a3 + 20 + 4 * *(_DWORD *)(a3 + 16); + if ( a3 + 20 >= v6 ) + goto LABEL_6; + v7 = a1; + do + *v7++ = *v4++; + while ( v6 > (unsigned int)v4 ); + result = &a1[((v6 - a3 - 21) >> 2) + 1]; + while ( v5 > (unsigned int)result ) + { + *result++ = 0; +LABEL_6: + ; + } + return result; +} + +//----- (00431900) -------------------------------------------------------- +int __cdecl __any_on_D2A(int a1, int a2) +{ + int v2; // esi + unsigned int v3; // edx + _DWORD *v4; // eax + int v6; // ecx + + v2 = *(_DWORD *)(a1 + 16); + v3 = a1 + 20; + if ( v2 < a2 >> 5 ) + { + v4 = (_DWORD *)(v3 + 4 * v2); + goto LABEL_4; + } + v4 = (_DWORD *)(v3 + 4 * (a2 >> 5)); + if ( v2 > a2 >> 5 && (a2 & 0x1F) != 0 ) + { + v6 = 1; + if ( *v4 != *v4 >> (a2 & 0x1F) << (a2 & 0x1F) ) + return v6; + } + do + { +LABEL_4: + if ( (unsigned int)v4 <= v3 ) + return 0; + } + while ( !*--v4 ); + return 1; +} + +//----- (00431970) -------------------------------------------------------- +int *__cdecl __sum_D2A(int *a1, int *a2) +{ + int *v2; // esi + int *v3; // ebx + unsigned int *v4; // ebp + int *v5; // eax + int v6; // edi + int *v7; // ecx + unsigned int *v8; // edi + unsigned int v9; // esi + unsigned int v10; // eax + unsigned int v11; // ebx + unsigned int v12; // edx + unsigned int v13; // eax + unsigned int v14; // edx + unsigned int *v15; // ebx + unsigned int v16; // edi + char *i; // edx + unsigned int v18; // ecx + unsigned int v19; // eax + unsigned int v20; // ecx + int *v22; // ebx + unsigned int v23; // [esp+18h] [ebp-34h] + int *v24; // [esp+1Ch] [ebp-30h] + int v25; // [esp+20h] [ebp-2Ch] + int v26; // [esp+24h] [ebp-28h] + int *v27; // [esp+28h] [ebp-24h] + int *v28; // [esp+2Ch] [ebp-20h] + + v2 = a2; + v3 = a1; + if ( a1[4] < a2[4] ) + { + v3 = a2; + v2 = a1; + } + v4 = (unsigned int *)(v3 + 5); + v5 = __Balloc_D2A(v3[1]); + v6 = v3[4]; + v27 = v3 + 5; + v7 = v5 + 5; + v24 = v5; + v5[4] = v6; + v28 = v5 + 5; + v26 = v2[4]; + v23 = (unsigned int)&v5[v26 + 5]; + v25 = v6; + v8 = (unsigned int *)(v2 + 5); + v9 = 0; + do + { + v10 = *v4; + v11 = *v8; + ++v4; + ++v8; + ++v7; + v12 = v9 + (unsigned __int16)v10 + (unsigned __int16)v11; + *((_WORD *)v7 - 2) = v12; + v13 = HIWORD(v12) + HIWORD(v11) + HIWORD(v10); + *((_WORD *)v7 - 1) = v13; + v9 = HIWORD(v13); + } + while ( v23 > (unsigned int)v7 ); + v14 = 4; + if ( v23 >= (unsigned int)v24 + 21 ) + v14 = 4 * ((v23 - (unsigned int)v24 - 21) >> 2) + 4; + v15 = (unsigned int *)((char *)v27 + v14); + v16 = v23 + 4 * (v25 - v26); + for ( i = (char *)v28 + v14; v16 > (unsigned int)i; v9 = HIWORD(v20) ) + { + v18 = *v15; + i += 4; + ++v15; + v19 = v9 + (unsigned __int16)v18; + *((_WORD *)i - 2) = v19; + v20 = HIWORD(v19) + HIWORD(v18); + *((_WORD *)i - 1) = v20; + } + if ( v9 ) + { + if ( v25 == v24[2] ) + { + v22 = __Balloc_D2A(v24[1] + 1); + memcpy(v22 + 3, v24 + 3, 4 * v24[4] + 8); + __Bfree_D2A((unsigned int)v24); + v24 = v22; + v25 = v22[4]; + } + v24[4] = v25 + 1; + v24[v25 + 5] = 1; + } + return v24; +} + +//----- (00431B10) -------------------------------------------------------- +int hexdig_init_D2A() +{ + const char *v0; // edx + int v1; // eax + int v2; // ecx + const char *v3; // edx + int v4; // eax + int v5; // ecx + const char *v6; // edx + int result; // eax + int v8; // ecx + + v0 = "123456789"; + v1 = 48; + do + { + v2 = (int)&(v0++)[16 - (_DWORD)"123456789"]; + __hexdig_D2A[v1] = v2; + v1 = *((unsigned __int8 *)v0 - 1); + } + while ( (_BYTE)v1 ); + v3 = "bcdef"; + v4 = 97; + do + { + v5 = (int)&(v3++)[26 - (_DWORD)"bcdef"]; + __hexdig_D2A[v4] = v5; + v4 = *((unsigned __int8 *)v3 - 1); + } + while ( (_BYTE)v4 ); + v6 = "BCDEF"; + result = 65; + do + { + v8 = (int)&(v6++)[26 - (_DWORD)"BCDEF"]; + __hexdig_D2A[result] = v8; + result = *((unsigned __int8 *)v6 - 1); + } + while ( (_BYTE)result ); + return result; +} + +//----- (00431B90) -------------------------------------------------------- +int __usercall sub_431B90@(int *a1@) +{ + _BYTE *v1; // edx + char v2; // bl + int v3; // esi + int v4; // edx + + v1 = (_BYTE *)*a1; + v2 = *(_BYTE *)*a1; + v3 = *a1 + 1; + switch ( v2 ) + { + case 'I': + if ( *v1 != 73 ) + goto LABEL_3; + if ( v1[1] == 51 && v1[2] == 50 ) + { + v3 = (int)(v1 + 3); + v4 = 2; + } + else + { + if ( v1[1] != 54 || v1[2] != 52 ) + { +LABEL_3: + v1 = (_BYTE *)(*a1 + 1); + goto LABEL_4; + } + v3 = (int)(v1 + 3); +LABEL_14: + v4 = 3; + } + break; + case 'L': + *a1 = v3; + return 76; + case 'h': + case 'l': + if ( v2 == v1[1] ) + { + v3 = (int)(v1 + 2); + v4 = 4; + if ( v2 != 104 ) + v4 = 3 * (v2 == 108); + } + else + { + v4 = 1; + if ( v2 != 104 ) + v4 = 2 * (v2 == 108); + } + break; + case 'j': + goto LABEL_14; + case 't': + case 'z': + goto LABEL_5; + default: +LABEL_4: + v3 = (int)v1; +LABEL_5: + v4 = 0; + break; + } + *a1 = v3; + return v4; +} +// 431BF9: conditional instruction was optimized away because ecx.4==49 + +//----- (00431C50) -------------------------------------------------------- +int *__usercall sub_431C50@(int a1@, __int64 a2, int a3, int a4, int a5, int *a6, int *a7) +{ + char v10; // c2 + char v11; // c3 + char v12; // c0 + __int16 v13; // cx + int v14; // ebx + int v15; // eax + long double v17; // [esp+20h] [ebp-2Ch] BYREF + int v18; // [esp+2Ch] [ebp-20h] + int v19; // [esp+38h] [ebp-14h] BYREF + int *v20; // [esp+3Ch] [ebp-10h] BYREF + + *(_QWORD *)&v17 = a2; + HIDWORD(v17) = a3; + _FST7 = v17; + v18 = a4; + __asm { fxam } + if ( v12 ) + { + if ( !v10 ) + { + v19 = 4; + v14 = 0; + v15 = 0; + goto LABEL_7; + } + v19 = 3; + v13 = WORD4(v17); + v14 = 0; + } + else + { + v13 = WORD4(v17); + if ( v10 ) + { + if ( v11 ) + { + v19 = 2; + v14 = -16445; + } + else + { + v19 = 1; + v14 = (WORD4(v17) & 0x7FFF) - 16446; + } + } + else + { + v19 = 0; + v14 = 0; + } + } + v15 = v13 & 0x8000; +LABEL_7: + *a7 = v15; + return __gdtoa(dword_4E8080, v14, (int *)&v17, &v19, a1, a5, a6, &v20); +} +// 431C84: variable 'v12' is possibly undefined +// 431C89: variable 'v10' is possibly undefined +// 431D0B: variable 'v11' is possibly undefined +// 4E8080: using guessed type int dword_4E8080[5]; + +//----- (00431D50) -------------------------------------------------------- +int __usercall sub_431D50@(int result@, int a2@) +{ + int v3; // ecx + int v4; // edx + + v3 = *(_DWORD *)(a2 + 4); + if ( (v3 & 0x2000) == 0 ) + { + v4 = *(_DWORD *)(a2 + 24); + if ( *(_DWORD *)(a2 + 28) <= v4 ) + goto LABEL_5; + } + if ( (v3 & 0x1000) == 0 ) + { + *(_BYTE *)(*(_DWORD *)a2 + *(_DWORD *)(a2 + 24)) = result; + v4 = *(_DWORD *)(a2 + 24); +LABEL_5: + *(_DWORD *)(a2 + 24) = v4 + 1; + return result; + } + result = fputc((unsigned __int8)result, *(FILE **)a2); + ++*(_DWORD *)(a2 + 24); + return result; +} + +//----- (00431DB0) -------------------------------------------------------- +int __usercall sub_431DB0@(int a1@, int a2@, int a3@) +{ + int v5; // eax + int result; // eax + signed int v7; // eax + unsigned __int16 *v8; // ebx + unsigned __int16 *p_Byte; // edi + int v10; // eax + int v11; // eax + int v13; // [esp+1Ch] [ebp-14h] + mbstate_t State; // [esp+2Ch] [ebp-4h] BYREF + + wcrtomb((char *)&State._Byte, 0, &State); + v5 = *(_DWORD *)(a3 + 12); + if ( v5 >= 0 && a2 > v5 ) + a2 = *(_DWORD *)(a3 + 12); + result = *(_DWORD *)(a3 + 8); + if ( result <= a2 ) + { + *(_DWORD *)(a3 + 8) = -1; + goto LABEL_6; + } + v11 = result - a2; + *(_DWORD *)(a3 + 8) = v11; + if ( (*(_BYTE *)(a3 + 5) & 4) == 0 ) + { + *(_DWORD *)(a3 + 8) = v11 - 1; + do + { + sub_431D50(32, a3); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + } + while ( result ); +LABEL_6: + if ( a2 <= 0 ) + { + *(_DWORD *)(a3 + 8) = -2; + return result; + } + goto LABEL_7; + } + if ( a2 <= 0 ) + { + *(_DWORD *)(a3 + 8) = v11 - 1; + do + { +LABEL_13: + sub_431D50(32, a3); +LABEL_14: + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + } + while ( result > 0 ); + return result; + } +LABEL_7: + v13 = a2; + do + { + a1 += 2; + v7 = wcrtomb((char *)&State._Byte, *(_WORD *)(a1 - 2), &State); + if ( v7 <= 0 ) + goto LABEL_14; + v8 = (unsigned __int16 *)((char *)&State._Byte + v7); + p_Byte = &State._Byte; + do + { + v10 = *(char *)p_Byte; + p_Byte = (unsigned __int16 *)((char *)p_Byte + 1); + sub_431D50(v10, a3); + } + while ( p_Byte != v8 ); + --v13; + } + while ( v13 ); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + if ( result > 0 ) + goto LABEL_13; + return result; +} + +//----- (00431EE0) -------------------------------------------------------- +int __usercall sub_431EE0@(char *a1@, int a2@, int a3@) +{ + int v3; // edi + int v5; // eax + int result; // eax + char *v8; // edi + int v9; // eax + int v10; // eax + + v3 = a2; + v5 = *(_DWORD *)(a3 + 12); + if ( v5 >= 0 && a2 > v5 ) + v3 = *(_DWORD *)(a3 + 12); + result = *(_DWORD *)(a3 + 8); + if ( result <= v3 ) + { + *(_DWORD *)(a3 + 8) = -1; + if ( v3 ) + goto LABEL_6; +LABEL_18: + *(_DWORD *)(a3 + 8) = -2; + return result; + } + v10 = result - v3; + *(_DWORD *)(a3 + 8) = v10; + if ( (*(_BYTE *)(a3 + 5) & 4) != 0 ) + { + if ( !v3 ) + { + *(_DWORD *)(a3 + 8) = v10 - 1; + do + { +LABEL_9: + sub_431D50(32, a3); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + } + while ( result > 0 ); + return result; + } + } + else + { + *(_DWORD *)(a3 + 8) = v10 - 1; + do + { + sub_431D50(32, a3); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + } + while ( result ); + if ( !v3 ) + goto LABEL_18; + } +LABEL_6: + v8 = &a1[v3]; + do + { + v9 = *a1++; + sub_431D50(v9, a3); + } + while ( a1 != v8 ); + result = *(_DWORD *)(a3 + 8); + *(_DWORD *)(a3 + 8) = result - 1; + if ( result > 0 ) + goto LABEL_9; + return result; +} + +//----- (00431FB0) -------------------------------------------------------- +int __usercall sub_431FB0@(int a1@, int a2@, int a3@) +{ + int v3; // edi + char *v4; // esi + char v5; // di + int i; // ebx + char v8; // [esp+Ch] [ebp-20h] BYREF + char v9[31]; // [esp+Dh] [ebp-1Fh] BYREF + + *(_DWORD *)(a3 + 12) = -1; + v3 = *(_DWORD *)(a3 + 4); + if ( a1 ) + { + v8 = 45; + v4 = v9; + } + else if ( (v3 & 0x100) != 0 ) + { + v8 = 43; + v4 = v9; + } + else if ( (v3 & 0x40) != 0 ) + { + v8 = 32; + v4 = v9; + } + else + { + v4 = &v8; + } + v5 = v3 & 0x20; + for ( i = 0; i != 3; ++i ) + v4[i] = v5 | *(_BYTE *)(a2 + i) & 0xDF; + return sub_431EE0(&v8, v4 + 3 - &v8, a3); +} + +//----- (00432050) -------------------------------------------------------- +int __usercall sub_432050@(wchar_t a1@, int a2@, int a3@) +{ + int v5; // eax + void *v6; // esp + void *v7; // esp + char *v8; // edi + signed int v9; // eax + char *v10; // ebx + int v11; // eax + char *Dest; // [esp+0h] [ebp-4Ch] BYREF + char v14[16]; // [esp+Ch] [ebp-40h] BYREF + char **p_Dest; // [esp+1Ch] [ebp-30h] + mbstate_t State; // [esp+2Ch] [ebp-20h] BYREF + + if ( !a1 ) + return -1; + v5 = 16 * ((unsigned int)(a2 + 15) >> 4); + p_Dest = &Dest; + v6 = alloca(v5); + v7 = alloca(v5); + State._Wchar = 0; + v8 = v14; + v9 = wcrtomb(v14, a1, &State); + if ( v9 <= 0 ) + return -1; + v10 = &v14[v9]; + do + { + v11 = *v8++; + sub_431D50(v11, a3); + } + while ( v8 != v10 ); + return 0; +} +// 432050: using guessed type char var_40[16]; + +//----- (004320D0) -------------------------------------------------------- +int __usercall sub_4320D0@(int a1@) +{ + int v1; // ebx + struct lconv *v4; // eax + char *v5; // eax + char v6; // al + wchar_t v7; // dx + signed int v8; // eax + struct lconv *v9; // eax + wchar_t DstCh; // [esp+1Ah] [ebp-12h] BYREF + mbstate_t State; // [esp+1Ch] [ebp-10h] BYREF + + v1 = *(_DWORD *)(a1 + 4) & 1; + if ( v1 && *(_DWORD *)(a1 + 36) == -3 ) + { + v4 = localeconv(); + v5 = strdup(v4->grouping); + *(_DWORD *)(a1 + 44) = v5; + if ( v5 && (v6 = *v5) != 0 ) + { + State._Wchar = 0; + if ( v6 == 127 ) + { + v7 = *(_WORD *)(a1 + 40); + v8 = 0; + } + else + { + v9 = localeconv(); + v8 = mbrtowc(&DstCh, v9->thousands_sep, 0x10u, &State); + if ( v8 <= 0 ) + { + v7 = *(_WORD *)(a1 + 40); + } + else + { + v7 = DstCh; + if ( (DstCh & 0xF800) == 0xD800 ) + { + v7 = *(_WORD *)(a1 + 40); + v8 = -1; + } + else + { + *(_WORD *)(a1 + 40) = DstCh; + } + } + } + *(_DWORD *)(a1 + 36) = v8; + } + else + { + v7 = *(_WORD *)(a1 + 40); + } + if ( !v7 ) + { + v1 = 0; + __mingw_free(*(_DWORD *)(a1 + 44)); + *(_DWORD *)(a1 + 4) &= ~1u; + *(_DWORD *)(a1 + 44) = 0; + } + } + return v1; +} + +//----- (004321B0) -------------------------------------------------------- +int __usercall sub_4321B0@(_DWORD *a1@) +{ + int v1; // ebx + int v2; // edx + int result; // eax + char *v5; // esi + int v6; // ebx + char *v7; // eax + + v1 = *(char *)*a1; + v2 = v1 - 48; + if ( (unsigned int)(v1 - 48) <= 9 ) + { + v5 = (char *)(*a1 + 1); + v6 = 0; + while ( 1 ) + { + result = v6 + v2; + if ( v6 + v2 > 16 ) + break; + *a1 = v5; + v1 = *v5; + v2 = v1 - 48; + if ( (unsigned int)(v1 - 48) > 9 ) + goto LABEL_3; + v6 = 0; + if ( result > 0 ) + v6 = 10 * result; + ++v5; + } + v7 = (char *)*a1; + do + *a1 = ++v7; + while ( (unsigned int)(*v7 - 48) <= 9 ); + return 0; + } + result = 0; +LABEL_3: + if ( (_BYTE)v1 != 36 ) + return 0; + return result; +} + +//----- (00432230) -------------------------------------------------------- +int __usercall sub_432230@(int *a1@) +{ + int result; // eax + _BYTE *v3; // edx + int v4; // ecx + _BYTE *v5; // [esp+Ch] [ebp-8h] BYREF + + v5 = (_BYTE *)*a1; + result = sub_4321B0(&v5); + v3 = v5; + v4 = (int)++v5; + if ( *v3 == 36 ) + *a1 = v4; + return result; +} + +//----- (00432260) -------------------------------------------------------- +int __usercall sub_432260@(unsigned __int8 *a1@) +{ + char *v2; // eax + int v3; // eax + int result; // eax + int v5; // edx + + v2 = strchr("aAeEfFgGcCdiouxXnpsS", *a1); + if ( !v2 ) + return 4; + v3 = (v2 - "aAeEfFgGcCdiouxXnpsS") / 8; + if ( v3 ) + { + if ( v3 == 1 ) + return 4 * (a1[1] == 3) + 4; + return 4; + } + v5 = a1[1]; + result = 12; + if ( v5 != 76 && ((byte_1541CCD & 1) == 0 || v5 != 2) ) + return 8; + return result; +} +// 1541CCD: using guessed type char byte_1541CCD; + +//----- (004322E0) -------------------------------------------------------- +int __usercall sub_4322E0@(int a1@) +{ + int v2; // edx + wchar_t v3; // ax + int result; // eax + struct lconv *v5; // eax + wchar_t DstCh; // [esp+1Ah] [ebp-12h] BYREF + mbstate_t State; // [esp+1Ch] [ebp-10h] BYREF + + v2 = *(_DWORD *)(a1 + 16); + if ( v2 == -3 ) + { + State._Wchar = 0; + v5 = localeconv(); + v2 = mbrtowc(&DstCh, v5->decimal_point, 0x10u, &State); + if ( v2 <= 0 ) + { + v3 = *(_WORD *)(a1 + 20); + } + else + { + v3 = DstCh; + if ( (DstCh & 0xF800) == 0xD800 ) + { + v3 = *(_WORD *)(a1 + 20); + v2 = -1; + } + else + { + *(_WORD *)(a1 + 20) = DstCh; + } + } + *(_DWORD *)(a1 + 16) = v2; + } + else + { + v3 = *(_WORD *)(a1 + 20); + } + result = sub_432050(v3, v2, a1); + if ( result ) + return sub_431D50(46, a1); + return result; +} + +//----- (00432390) -------------------------------------------------------- +int __usercall sub_432390@(int a1@, int a2@) +{ + if ( a1 == 44 ) + return sub_432050(*(_WORD *)(a2 + 40), *(_DWORD *)(a2 + 36), a2); + if ( a1 == 46 ) + return sub_4322E0(a2); + return sub_431D50(a1, a2); +} + +//----- (004323D0) -------------------------------------------------------- +int __usercall sub_4323D0@(unsigned int a1@, unsigned int a2@, int a3@) +{ + unsigned __int64 v3; // rdi + _DWORD *v4; // ebx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // eax + void *v9; // esp + void *v10; // esp + int v11; // eax + char v12; // al + int v13; // eax + int *v14; // ebx + int *v15; // ecx + int v16; // eax + int v17; // edi + _BYTE *v18; // eax + int v19; // ecx + int v20; // eax + int v21; // eax + __int16 v22; // si + int v23; // edi + int v24; // eax + unsigned int v25; // edi + int v26; // esi + int v27; // eax + int result; // eax + int v29; // eax + int v30; // edx + int v31; // eax + int v32; // eax + int v33; // edx + _BYTE *v34; // ecx + _BYTE *v35; // edx + _DWORD *v37; // [esp+10h] [ebp-38h] BYREF + int v38; // [esp+14h] [ebp-34h] + int v39; // [esp+18h] [ebp-30h] + int v40; // [esp+1Ch] [ebp-2Ch] + int *v41; // [esp+20h] [ebp-28h] + int v42; // [esp+24h] [ebp-24h] + int *v43; // [esp+28h] [ebp-20h] + int v44; // [esp+2Ch] [ebp-1Ch] + + v3 = __PAIR64__(a1, a2); + v4 = (_DWORD *)a3; + v44 = (*(_DWORD *)(a3 + 12) & ~(*(int *)(a3 + 12) >> 31)) + 23; + v5 = sub_4320D0(a3); + v6 = v44; + if ( v5 ) + v6 = 2 * v44; + v7 = v4[2]; + v39 = v7; + if ( v7 < v6 ) + v7 = v6; + v8 = 16 * ((unsigned int)(v7 + 15) >> 4); + v9 = alloca(v8); + v10 = alloca(v8); + v44 = v4[11]; + v42 = 0; + v41 = (int *)&v37; + v11 = v4[1]; + v40 = v11; + if ( v44 ) + { + v42 = v11 & 1; + if ( (v11 & 1) != 0 ) + { + v12 = *(_BYTE *)v44; + v42 = *(char *)v44; + v44 = (unsigned __int8)(v12 - 1) < 0x7Eu ? v44 : 0; + } + else + { + v44 = 0; + } + } + v38 = v4[3]; + if ( (v40 & 0x80u) != 0 ) + { + if ( (v3 & 0x80000000) != 0LL ) + { + HIDWORD(v3) = -HIDWORD(v3); + LODWORD(v3) = (unsigned __int64)-__SPAIR64__(v3, HIDWORD(v3)) >> 32; +LABEL_12: + v37 = v4; + v14 = v41; + while ( 1 ) + { + v15 = v14; + if ( v44 ) + { + if ( v42 ) + { + --v42; + } + else + { + v16 = *(char *)(v44 + 1); + if ( (_BYTE)v16 ) + ++v44; + else + v16 = *(char *)v44; + *(_BYTE *)v14 = 44; + v42 = v16 - 1; + v15 = (int *)((char *)v14 + 1); + v44 = v16 == 127 ? 0 : v44; + } + } + v14 = (int *)((char *)v15 + 1); + v43 = v15; + *(_BYTE *)v15 = __PAIR64__(v3, HIDWORD(v3)) % 0xA + 48; + if ( __PAIR64__(v3, HIDWORD(v3)) <= 9 ) + break; + v3 = __PAIR64__(__PAIR64__(v3, HIDWORD(v3)) / 0xA, (__PAIR64__(v3, HIDWORD(v3)) / 0xA) >> 32); + } + v44 = (int)v15 + 1; + v4 = v37; + if ( v38 > 0 ) + { + v17 = v38 - ((char *)v15 + 1 - (char *)v41); + if ( v17 <= 0 ) + goto LABEL_29; + goto LABEL_24; + } + if ( v41 != (int *)v44 ) + goto LABEL_30; +LABEL_51: + if ( !v38 ) + { + LOWORD(v21) = v40; + if ( v39 <= 0 ) + goto LABEL_36; + if ( (v40 & 0x1C0) == 0 ) + goto LABEL_35; + goto LABEL_33; + } + goto LABEL_58; + } + v13 = v40; + LOBYTE(v13) = v40 & 0x7F; + v4[1] = v13; + v40 = v13; + } + if ( v3 ) + goto LABEL_12; + v44 = (int)v41; + v17 = v38; + if ( v38 <= 0 ) + goto LABEL_51; +LABEL_24: + v18 = (_BYTE *)v44; + v19 = v44 + v17; + do + *v18++ = 48; + while ( v19 - (int)v18 > 0 ); + v20 = 1; + if ( v17 > 0 ) + v20 = v17; + v44 += v20; +LABEL_29: + if ( v41 == (int *)v44 ) + { +LABEL_58: + v32 = v44; + *(_BYTE *)v44 = 48; + v44 = v32 + 1; + } +LABEL_30: + LOWORD(v21) = v40; + if ( v39 <= 0 ) + goto LABEL_36; + v22 = v40; + v39 -= v44 - (_DWORD)v41; + v23 = v39; + LOWORD(v21) = v40; + v4[2] = v39; + if ( v23 <= 0 ) + goto LABEL_36; + if ( (v22 & 0x1C0) != 0 ) +LABEL_33: + v4[2] = v39 - 1; + if ( v38 < 0 && (v40 & 0x600) == 512 ) + { + v33 = v4[2]; + v4[2] = v33 - 1; + if ( v33 > 0 ) + { + v34 = (_BYTE *)v44; + v35 = (_BYTE *)(v44 + v33); + do + *v34++ = 48; + while ( v34 != v35 ); + v44 = (int)v34; + v4[2] = -1; + } + goto LABEL_36; + } +LABEL_35: + if ( (v40 & 0x400) == 0 ) + { + v30 = v4[2]; + v4[2] = v30 - 1; + if ( v30 > 0 ) + { + do + { + sub_431D50(32, (int)v4); + v31 = v4[2]; + v4[2] = v31 - 1; + } + while ( v31 > 0 ); + v21 = v4[1]; + } + } +LABEL_36: + if ( (v21 & 0x80u) == 0 ) + { + if ( (v21 & 0x100) != 0 ) + { + v29 = v44; + *(_BYTE *)v44 = 43; + v25 = v29 + 1; + } + else + { + v25 = v44; + if ( (v21 & 0x40) != 0 ) + { + *(_BYTE *)v44 = 32; + ++v25; + } + } + } + else + { + v24 = v44; + *(_BYTE *)v44 = 45; + v25 = v24 + 1; + } + v26 = (int)v41; + if ( (unsigned int)v41 >= v25 ) + goto LABEL_42; + do + { + v27 = *(char *)--v25; + sub_432390(v27, (int)v4); + } + while ( v26 != v25 ); + result = v4[2]; + for ( v4[2] = result - 1; result > 0; v4[2] = result - 1 ) + { + sub_431D50(32, (int)v4); +LABEL_42: + result = v4[2]; + } + return result; +} + +//----- (004327A0) -------------------------------------------------------- +int __usercall sub_4327A0@(int a1@, _BYTE *a2@, int a3@, int a4) +{ + int v5; // esi + int v6; // ebx + int v7; // edx + int v8; // ebp + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + int v15; // ebx + int v16; // eax + char *v17; // eax + char v18; // cl + char *v19; // ebp + char v20; // bl + int v21; // eax + int result; // eax + char v23; // dl + int v24; // eax + int v25; // eax + int v26; // ecx + int v27; // edx + char *v28; // edx + int v29; // ecx + int v30; // eax + _BYTE *v32; // [esp+8h] [ebp-24h] + int v33; // [esp+Ch] [ebp-20h] + int v34; // [esp+Ch] [ebp-20h] + + v5 = a3; + v6 = a4; + if ( a3 > 0 ) + { + v8 = a3; + v33 = sub_4320D0(a4); + if ( v33 ) + { + v28 = *(char **)(a4 + 44); + v29 = 0; + v30 = *v28; + do + { + if ( v30 >= v8 ) + break; + v8 -= v30; + v30 = v28[1]; + ++v29; + if ( (_BYTE)v30 ) + ++v28; + else + v30 = *v28; + } + while ( v30 != 127 ); + v33 = v29; + v5 += v29; + } + v27 = *(_DWORD *)(a4 + 8); + if ( v27 <= v5 ) + goto LABEL_17; + v7 = v27 - v5; + *(_DWORD *)(a4 + 8) = v7; + } + else + { + v7 = *(_DWORD *)(a4 + 8); + if ( v7 > 0 ) + { + v33 = 0; + --v7; + v8 = a3; + goto LABEL_4; + } + v33 = 0; + v8 = a3; + } + if ( v7 < 0 ) + goto LABEL_17; +LABEL_4: + v9 = *(_DWORD *)(a4 + 12); + if ( v9 >= v7 ) + { +LABEL_17: + *(_DWORD *)(a4 + 8) = -1; + goto LABEL_18; + } + v10 = v7 - v9; + *(_DWORD *)(a4 + 8) = v10; + if ( v9 > 0 || (*(_BYTE *)(a4 + 5) & 8) != 0 ) + { + *(_DWORD *)(a4 + 8) = --v10; + if ( !v10 ) + { +LABEL_18: + if ( !a1 ) + { +LABEL_19: + v11 = *(_DWORD *)(a4 + 4); + goto LABEL_20; + } + goto LABEL_53; + } + } + if ( a1 ) + { + v12 = v10 - 1; + *(_DWORD *)(a4 + 8) = v12; + if ( v12 && (*(_DWORD *)(a4 + 4) & 0x600) == 0 ) + goto LABEL_11; +LABEL_53: + sub_431D50(45, a4); + goto LABEL_23; + } + v11 = *(_DWORD *)(a4 + 4); + if ( (v11 & 0x1C0) != 0 ) + { + v12 = v10 - 1; + *(_DWORD *)(a4 + 8) = v12; + if ( v12 && (v11 & 0x600) == 0 ) + { +LABEL_11: + *(_DWORD *)(a4 + 8) = v12 - 1; + do + { +LABEL_12: + sub_431D50(32, a4); + v13 = *(_DWORD *)(a4 + 8); + *(_DWORD *)(a4 + 8) = v13 - 1; + } + while ( v13 > 0 ); + if ( a1 ) + goto LABEL_53; + goto LABEL_19; + } + } + else if ( (v11 & 0x600) == 0 ) + { + v26 = *(_DWORD *)(a4 + 8); + *(_DWORD *)(a4 + 8) = v26 - 1; + if ( v26 > 0 ) + goto LABEL_12; + } +LABEL_20: + if ( (v11 & 0x100) != 0 ) + { + sub_431D50(43, a4); + } + else if ( (v11 & 0x40) != 0 ) + { + sub_431D50(32, a4); + } +LABEL_23: + v14 = *(_DWORD *)(a4 + 8); + if ( v14 > 0 && (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) + { + *(_DWORD *)(a4 + 8) = v14 - 1; + do + { + sub_431D50(48, a4); + v25 = *(_DWORD *)(a4 + 8); + *(_DWORD *)(a4 + 8) = v25 - 1; + } + while ( v25 > 0 ); + } + if ( v5 <= 0 ) + { + sub_431D50(48, a4); + } + else + { + v32 = a2; + v15 = v33; + do + { + while ( 1 ) + { + v16 = 48; + if ( *v32 ) + v16 = (char)*v32++; + sub_431D50(v16, a4); + if ( !--v8 ) + { + if ( v15 ) + break; + } + if ( --v5 <= 0 ) + goto LABEL_37; + } + v17 = *(char **)(a4 + 44); + v34 = v15 - 1; + v18 = *v17; + v19 = &v17[v15]; + do + { + ++v17; + v20 = v18; + v18 = *v17; + } + while ( *v17 && v18 != 127 && v19 != v17 ); + v8 = v20; + sub_432390(44, a4); + v5 -= 2; + v15 = v34; + } + while ( v5 > 0 ); +LABEL_37: + v6 = a4; + a2 = v32; + } + v21 = *(_DWORD *)(v6 + 12); + if ( v21 > 0 || (*(_BYTE *)(v6 + 5) & 8) != 0 ) + { + sub_4322E0(v6); + if ( !v5 ) + goto LABEL_47; + v21 = *(_DWORD *)(v6 + 12); + } + else if ( !v5 ) + { + result = v21 - 1; + *(_DWORD *)(v6 + 12) = result; + return result; + } + *(_DWORD *)(v6 + 12) = v5 + v21; + do + { + sub_431D50(48, v6); + ++v5; + } + while ( v5 ); + result = *(_DWORD *)(v6 + 12); + for ( *(_DWORD *)(v6 + 12) = result - 1; result > 0; *(_DWORD *)(v6 + 12) = result - 1 ) + { + v23 = *a2; + v24 = 48; + if ( *a2 ) + { + ++a2; + v24 = v23; + } + sub_431D50(v24, v6); +LABEL_47: + result = *(_DWORD *)(v6 + 12); + } + return result; +} + +//----- (00432B10) -------------------------------------------------------- +int __usercall sub_432B10@(int a1@, _BYTE *a2@, int a3@, _DWORD *a4) +{ + int v4; // ecx + int i; // ebx + int v6; // ebp + int v7; // ecx + int v8; // eax + int v9; // edx + __int64 v12; // [esp+18h] [ebp-24h] + + v12 = a3 - 1; + a4[1] &= ~1u; + v4 = (a3 - 1) / 10; + for ( i = 1; v4; v4 /= 10 ) + ++i; + v6 = a4[8]; + if ( v6 < i ) + v6 = i; + v7 = a4[2]; + v8 = -1; + if ( v7 > v6 + 2 ) + v8 = v7 - (v6 + 2); + a4[2] = v8; + sub_4327A0(a1, a2, 1, (int)a4); + a4[3] = a4[8]; + v9 = a4[1]; + a4[1] = v9 | 0x1C0; + sub_431D50(v9 & 0x20 | 0x45, (int)a4); + a4[2] += v6 + 1; + return sub_4323D0(v12, HIDWORD(v12), (int)a4); +} + +//----- (00432BE0) -------------------------------------------------------- +void __usercall sub_432BE0(_DWORD *a1@, long double a2) +{ + int v3; // eax + int v4; // eax + int *v5; // eax + int *v6; // esi + int v7; // [esp+28h] [ebp-24h] BYREF + int v8; // [esp+2Ch] [ebp-20h] BYREF + long double v9; // [esp+30h] [ebp-1Ch] + int v10; // [esp+3Ch] [ebp-10h] + + v3 = a1[3]; + if ( v3 < 0 ) + { + a1[3] = 6; + v4 = 7; + } + else + { + v4 = v3 + 1; + } + v9 = a2; + v5 = sub_431C50(2, *(__int64 *)&v9, SHIDWORD(v9), v10, v4, &v8, &v7); + v6 = v5; + if ( v8 == -32768 ) + sub_431FB0(v7, (int)v5, (int)a1); + else + sub_432B10(v7, v5, v8, a1); + __freedtoa(v6); +} + +//----- (00432C90) -------------------------------------------------------- +void __usercall sub_432C90(int a1@, long double a2) +{ + int v3; // eax + int *v4; // eax + int *v5; // esi + int v6; // eax + int v7; // [esp+28h] [ebp-24h] BYREF + int v8; // [esp+2Ch] [ebp-20h] BYREF + long double v9; // [esp+30h] [ebp-1Ch] + int v10; // [esp+3Ch] [ebp-10h] + + v3 = *(_DWORD *)(a1 + 12); + if ( v3 < 0 ) + { + *(_DWORD *)(a1 + 12) = 6; + v3 = 6; + } + v9 = a2; + v4 = sub_431C50(3, *(__int64 *)&v9, SHIDWORD(v9), v10, v3, &v8, &v7); + v5 = v4; + if ( v8 == -32768 ) + { + sub_431FB0(v7, (int)v4, a1); + __freedtoa(v5); + } + else + { + sub_4327A0(v7, v4, v8, a1); + while ( 1 ) + { + v6 = *(_DWORD *)(a1 + 8); + *(_DWORD *)(a1 + 8) = v6 - 1; + if ( v6 <= 0 ) + break; + sub_431D50(32, a1); + } + __freedtoa(v5); + } +} + +//----- (00432D60) -------------------------------------------------------- +void __usercall sub_432D60(_DWORD *a1@, long double a2) +{ + int v3; // eax + int *v4; // eax + int v5; // edi + int *Str; // esi + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // eax + int v11; // eax + int v12; // edx + int v13; // [esp+28h] [ebp-24h] BYREF + int v14; // [esp+2Ch] [ebp-20h] BYREF + long double v15; // [esp+30h] [ebp-1Ch] + int v16; // [esp+3Ch] [ebp-10h] + + v3 = a1[3]; + if ( v3 < 0 ) + { + a1[3] = 6; + v3 = 6; + } + else if ( !v3 ) + { + a1[3] = 1; + v3 = 1; + } + v15 = a2; + v4 = sub_431C50(2, *(__int64 *)&v15, SHIDWORD(v15), v16, v3, &v14, &v13); + v5 = v14; + Str = v4; + if ( v14 == -32768 ) + { + sub_431FB0(v13, (int)v4, (int)a1); + __freedtoa(Str); + } + else + { + v7 = a1[1] & 0x800; + if ( v14 < -3 || (v8 = a1[3], v14 > v8) ) + { + if ( v7 ) + v10 = a1[3] - 1; + else + v10 = strlen((const char *)Str) - 1; + a1[3] = v10; + sub_432B10(v13, Str, v5, a1); + __freedtoa(Str); + } + else + { + if ( v7 ) + { + a1[3] = v8 - v14; + } + else + { + v11 = strlen((const char *)Str) - v14; + a1[3] = v11; + if ( v11 < 0 ) + { + v12 = a1[2]; + if ( v12 > 0 ) + a1[2] = v12 + v11; + } + } + sub_4327A0(v13, Str, v5, (int)a1); + while ( 1 ) + { + v9 = a1[2]; + a1[2] = v9 - 1; + if ( v9 <= 0 ) + break; + sub_431D50(32, (int)a1); + } + __freedtoa(Str); + } + } +} + +//----- (00432EF0) -------------------------------------------------------- +int __usercall sub_432EF0@(_DWORD *a1@, long double a2) +{ + __int16 v4; // fps + __int16 v5; // fps + unsigned __int64 v9; // rdi + int v10; // eax + __int16 v11; // dx + int v12; // ebp + char *v13; // ebp + char v14; // cl + char v15; // al + int v16; // eax + int v17; // ecx + char *v18; // eax + int v19; // esi + int v20; // eax + int v21; // eax + int v22; // eax + int v23; // eax + unsigned int v25; // edi + unsigned int v26; // esi + unsigned __int64 v27; // kr08_8 + char v28; // cl + int v29; // edx + int v30; // eax + int v31; // edi + int v32; // ecx + int v33; // eax + int v34; // ecx + __int16 v35; // ax + int v36; // eax + int v37; // eax + signed int v38; // [esp+10h] [ebp-7Ch] + int v39; // [esp+10h] [ebp-7Ch] + __int16 v40; // [esp+18h] [ebp-74h] + int v41; // [esp+1Ch] [ebp-70h] + int v42; // [esp+20h] [ebp-6Ch] + int v43; // [esp+24h] [ebp-68h] + char v46; // [esp+5Eh] [ebp-2Eh] BYREF + char v47; // [esp+5Fh] [ebp-2Dh] BYREF + + _FST7 = a2; + __asm { fxam } + if ( (v4 & 0x4500) == 256 ) + return sub_431FB0(0, (int)&off_4F0159, (int)a1); + if ( (SWORD4(a2) & 0x8000u) != 0 ) + a1[1] |= 0x80u; + __asm { fxam } + if ( (v5 & 0x4500) == 1280 ) + return sub_431FB0(WORD4(a2) & 0x8000, (int)&off_4F015D, (int)a1); + v9 = __PAIR64__(LODWORD(a2), DWORD1(a2)); + v40 = WORD4(a2) & 0x7FFF; + if ( (WORD4(a2) & 0x7FFF) != 0 ) + { + v40 -= 0x3FFF; + v12 = a1[3]; + if ( *(_QWORD *)&a2 ) + goto LABEL_11; +LABEL_25: + v43 = a1[1]; + goto LABEL_26; + } + if ( !*(_QWORD *)&a2 ) + { + v12 = a1[3]; + goto LABEL_25; + } + if ( (SDWORD1(a2) & 0x80000000) != 0 ) + { + v12 = a1[3]; + v40 = -16382; + } + else + { + v10 = -16383; + do + { + LODWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 31; + v11 = v10; + HIDWORD(v9) *= 2; + --v10; + } + while ( (v9 & 0x80000000) == 0LL ); + v40 = v11; + v12 = a1[3]; + } +LABEL_11: + if ( (unsigned int)v12 <= 0xE ) + { + while ( (v9 & 0x80000000) == 0LL ) + { + LODWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 31; + HIDWORD(v9) *= 2; + } + v27 = (4LL << (4 * (14 - (unsigned __int8)v12))) + (__PAIR64__(v9, HIDWORD(v9)) >> 1); + v25 = HIDWORD(v27); + v26 = v27; + if ( (v27 & 0x8000000000000000LL) != 0LL ) + { + ++v40; + } + else + { + v25 = v27 >> 31; + v26 = 2 * v27; + } + v28 = 4 * (15 - v12); + HIDWORD(v9) = __PAIR64__(v25, v26) >> v28; + LODWORD(v9) = v25 >> v28; + if ( (v28 & 0x20) != 0 ) + { + HIDWORD(v9) = v9; + LODWORD(v9) = 0; + } + } + v13 = &v46; + v43 = a1[1]; + LOWORD(v41) = v43; + do + { + v16 = BYTE4(v9) & 0xF; + if ( HIDWORD(v9) ^ v16 | (unsigned int)v9 ) + { + v17 = a1[3]; + HIDWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 4; + LODWORD(v9) = (unsigned int)v9 >> 4; + if ( v17 > 0 ) + a1[3] = v17 - 1; + } + else + { + if ( v13 > &v46 || (v43 & 0x800) != 0 || (int)a1[3] > 0 ) + *v13++ = 46; + if ( (unsigned int)v9 | HIDWORD(v9) ^ 1 ) + { + v34 = (unsigned __int16)(v40 - 1); + v39 = BYTE4(v9) & 0xF; + do + { + HIDWORD(v9) = __PAIR64__(v9, HIDWORD(v9)) >> 1; + LODWORD(v9) = (unsigned int)v9 >> 1; + v35 = v34--; + } + while ( HIDWORD(v9) ^ 1 | (unsigned int)v9 ); + v40 = v35; + v9 = 0LL; + v16 = v39; + } + else + { + v9 = 0LL; + } + } + if ( v16 ) + { + v14 = v16; + if ( v16 <= 9 ) +LABEL_15: + v15 = v14 + 48; + else + v15 = v43 & 0x20 | (v16 + 55); + *v13++ = v15; + continue; + } + v14 = 0; + if ( v13 > &v46 || (int)a1[3] >= 0 ) + goto LABEL_15; + } + while ( v9 ); + if ( v13 != &v46 ) + { + v42 = a1[2]; + if ( v42 > 0 ) + goto LABEL_51; +LABEL_29: + v19 = 2; + v38 = v40; + goto LABEL_30; + } + v12 = a1[3]; +LABEL_26: + LOWORD(v41) = v43; + if ( v12 > 0 || (v18 = &v46, (v43 & 0x800) != 0) ) + { + v46 = 46; + v18 = &v47; + } + *v18 = 48; + v13 = v18 + 1; + v42 = a1[2]; + if ( v42 <= 0 ) + goto LABEL_29; +LABEL_51: + v29 = a1[3]; + v30 = v13 - &v46; + v38 = v40; + if ( v29 > 0 ) + v30 += v29; + v31 = v30 + ((v43 & 0x1C0) != 0) + 5; + v32 = v40 / 10; + if ( v32 ) + { + do + { + LOWORD(v19) = ++v31 + 2 - (v30 + ((v43 & 0x1C0) != 0) + 5); + v32 /= 10; + } + while ( v32 ); + v19 = (__int16)v19; + } + else + { + v31 = v30 + ((v43 & 0x1C0) != 0) + 5; + v19 = 2; + } + if ( v42 <= v31 ) + { + a1[2] = -1; + } + else + { + v33 = v42 - v31; + if ( (v43 & 0x600) != 0 ) + { + a1[2] = v33; + } + else + { + a1[2] = v33 - 1; + if ( v33 > 0 ) + { + do + { + sub_431D50(32, (int)a1); + v37 = a1[2]; + a1[2] = v37 - 1; + } + while ( v37 > 0 ); + v41 = a1[1]; + } + } + } +LABEL_30: + if ( (v41 & 0x80u) != 0 ) + { + sub_431D50(45, (int)a1); + } + else if ( (v41 & 0x100) != 0 ) + { + sub_431D50(43, (int)a1); + } + else if ( (v41 & 0x40) != 0 ) + { + sub_431D50(32, (int)a1); + } + sub_431D50(48, (int)a1); + sub_431D50(a1[1] & 0x20 | 0x58, (int)a1); + v20 = a1[2]; + if ( v20 > 0 && (a1[1] & 0x600) == 512 ) + { + a1[2] = v20 - 1; + do + { + sub_431D50(48, (int)a1); + v36 = a1[2]; + a1[2] = v36 - 1; + } + while ( v36 > 0 ); + } + if ( v13 <= &v46 ) + goto LABEL_40; + do + { + v21 = *--v13; + sub_432390(v21, (int)a1); + } + while ( v13 != &v46 ); + v22 = a1[3]; + a1[3] = v22 - 1; + if ( v22 > 0 ) + { + do + { + sub_431D50(48, (int)a1); +LABEL_40: + v23 = a1[3]; + a1[3] = v23 - 1; + } + while ( v23 > 0 ); + } + sub_431D50(a1[1] & 0x20 | 0x50, (int)a1); + a1[2] += v19; + a1[1] |= 0x1C0u; + return sub_4323D0(v38, v38 >> 31, (int)a1); +} +// 4F0159: using guessed type void **off_4F0159; +// 4F015D: using guessed type void *off_4F015D; + +//----- (004334A0) -------------------------------------------------------- +int __usercall sub_4334A0@(int a1@, int a2@, int a3@, int a4) +{ + unsigned __int64 v4; // rdi + signed int v5; // ebx + int v6; // eax + char v7; // dl + int v8; // eax + int v9; // eax + void *v10; // esp + void *v11; // esp + int *v12; // ebx + int v13; // edx + int v14; // eax + int v15; // edi + int result; // eax + bool v17; // zf + int v18; // edi + int v19; // esi + int *v20; // esi + int v21; // ebx + unsigned int v22; // edi + int v23; // eax + int v24; // esi + int v25; // edi + int v26; // eax + char v27; // cl + int v28; // eax + int *v29; // eax + int v30; // eax + char v31; // al + int *v32; // ecx + int v33; // [esp+0h] [ebp-38h] BYREF + int v34; // [esp+4h] [ebp-34h] + int v35; // [esp+8h] [ebp-30h] + int v36; // [esp+Ch] [ebp-2Ch] + int v37; // [esp+10h] [ebp-28h] + int v38; // [esp+14h] [ebp-24h] + int *v39; // [esp+18h] [ebp-20h] + int v40; // [esp+1Ch] [ebp-1Ch] + + v4 = __PAIR64__(a2, a3); + v34 = a3; + v37 = a1; + v38 = a2; + v33 = 8 * (a1 != 111) + 7; + v39 = (int *)((a1 != 111) + 3); + *(_DWORD *)(a4 + 4) &= ~1u; + v40 = *(_DWORD *)(a4 + 12); + v5 = (a1 == 111 ? 0 : 0xFFFFFFFA) + (*(_DWORD *)(a4 + 12) & ~(v40 >> 31)) + 24; + v6 = sub_4320D0(a4); + v7 = (char)v39; + if ( v6 ) + v5 *= 2; + v8 = *(_DWORD *)(a4 + 8); + v35 = v8; + if ( v8 < v5 ) + v8 = v5; + v9 = 16 * ((unsigned int)(v8 + 15) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + v39 = &v33; + v36 = *(_DWORD *)(a4 + 12); + if ( !(v38 | v34) ) + { + v12 = &v33; + goto LABEL_30; + } + v12 = &v33; + LOBYTE(v40) = v33; + LOBYTE(v38) = v37 & 0x20; + do + { + v12 = (int *)((char *)v12 + 1); + if ( (unsigned __int8)((BYTE4(v4) & v40) + 48) <= 0x39u ) + *((_BYTE *)v12 - 1) = (BYTE4(v4) & v40) + 48; + else + *((_BYTE *)v12 - 1) = v38 | ((BYTE4(v4) & v40) + 55); + HIDWORD(v4) = __PAIR64__(v4, HIDWORD(v4)) >> v7; + LODWORD(v4) = (unsigned int)v4 >> v7; + if ( (v7 & 0x20) != 0 ) + { + HIDWORD(v4) = v4; + LODWORD(v4) = 0; + } + } + while ( v4 ); + if ( v39 == v12 ) + { +LABEL_30: + v25 = v36; + *(_DWORD *)(a4 + 4) &= ~0x800u; + v13 = v25 - ((char *)v12 - (char *)v39); + if ( v25 <= 0 ) + { + if ( v37 != 111 ) + goto LABEL_34; + goto LABEL_32; + } +LABEL_47: + v29 = v12; + do + { + v29 = (int *)((char *)v29 + 1); + *((_BYTE *)v29 - 1) = 48; + } + while ( (char *)v12 + v13 - (char *)v29 > 0 ); + v30 = 1; + if ( v13 > 0 ) + v30 = v13; + v12 = (int *)((char *)v12 + v30); + if ( v39 == v12 ) + goto LABEL_36; + v14 = (char *)v12 - (char *)v39; + goto LABEL_18; + } + if ( v36 > 0 ) + { + v13 = v36 - ((char *)v12 - (char *)v39); + if ( v13 > 0 ) + goto LABEL_47; + } + if ( v37 != 111 ) + { +LABEL_17: + v14 = (char *)v12 - (char *)v39; + goto LABEL_18; + } +LABEL_32: + if ( (*(_BYTE *)(a4 + 5) & 8) != 0 ) + { + *(_BYTE *)v12 = 48; + v12 = (int *)((char *)v12 + 1); + } +LABEL_34: + if ( v12 != v39 ) + goto LABEL_17; + v14 = 0; + if ( v36 ) + { +LABEL_36: + v15 = v35; + *(_BYTE *)v12 = 48; + v14 = (char *)v12 + 1 - (char *)v39; + v12 = (int *)((char *)v12 + 1); + if ( v15 <= v14 ) + goto LABEL_19; +LABEL_37: + v18 = v15 - v14; + v17 = v37 == 111; + *(_DWORD *)(a4 + 8) = v18; + v26 = *(_DWORD *)(a4 + 4); + if ( !v17 ) + { + if ( (v26 & 0x800) != 0 ) + { + v18 -= 2; + if ( v18 <= 0 || v36 >= 0 ) + goto LABEL_41; + } + else if ( v36 >= 0 ) + { + goto LABEL_58; + } + if ( (*(_DWORD *)(a4 + 4) & 0x600) != 512 ) + { + if ( (v26 & 0x800) == 0 ) + { +LABEL_58: + v24 = v18 - 1; + if ( (v26 & 0x400) == 0 ) + goto LABEL_44; +LABEL_59: + if ( v39 < v12 ) + goto LABEL_60; + goto LABEL_27; + } +LABEL_41: + v27 = v37; + *((_BYTE *)v12 + 1) = 48; + v12 = (int *)((char *)v12 + 2); + *((_BYTE *)v12 - 2) = v27; + goto LABEL_42; + } + v24 = v18 - 1; +LABEL_62: + v32 = (int *)((char *)v12 + v18); + do + { + v12 = (int *)((char *)v12 + 1); + *((_BYTE *)v12 - 1) = 48; + } + while ( v32 != v12 ); + v18 = v24 - v18; + if ( v37 == 111 || (v26 & 0x800) == 0 ) + { +LABEL_42: + if ( v18 <= 0 ) + { +LABEL_22: + result = (int)v39; + if ( v39 >= v12 ) + return result; + v19 = v18 - 1; +LABEL_24: + v39 = (int *)v19; + v20 = v12; + v21 = a4; + v40 = v18; + v22 = result; + goto LABEL_25; + } + v24 = v18 - 1; + if ( (v26 & 0x400) == 0 ) + { + do + { +LABEL_44: + sub_431D50(32, a4); + v28 = v24--; + } + while ( v28 > 0 ); + result = (int)v39; + v19 = -2; + v18 = -1; + if ( v39 >= v12 ) + return result; + goto LABEL_24; + } + goto LABEL_59; + } + goto LABEL_41; + } + if ( v36 < 0 ) + { + v24 = v18 - 1; + if ( (*(_DWORD *)(a4 + 4) & 0x600) == 512 ) + goto LABEL_62; + if ( (v26 & 0x400) == 0 ) + goto LABEL_44; + } + else + { + v24 = v18 - 1; + if ( (v26 & 0x400) == 0 ) + goto LABEL_44; + } + if ( v12 > v39 ) + goto LABEL_60; + do + { +LABEL_27: + sub_431D50(32, a4); + result = v24--; + } + while ( result > 0 ); + return result; + } +LABEL_18: + v15 = v35; + if ( v35 > v14 ) + goto LABEL_37; +LABEL_19: + result = a4; + v17 = v37 == 111; + *(_DWORD *)(a4 + 8) = -1; + if ( !v17 ) + { + v18 = -1; + if ( (*(_BYTE *)(a4 + 5) & 8) != 0 ) + { + v31 = v37; + *((_BYTE *)v12 + 1) = 48; + v12 = (int *)((char *)v12 + 2); + *((_BYTE *)v12 - 2) = v31; + } + goto LABEL_22; + } + v24 = -2; + v18 = -1; + if ( v12 <= v39 ) + return result; +LABEL_60: + v40 = v18; + v22 = (unsigned int)v39; + v39 = (int *)v24; + v20 = v12; + v21 = a4; + do + { +LABEL_25: + v23 = *((char *)v20 - 1); + v20 = (int *)((char *)v20 - 1); + result = sub_431D50(v23, v21); + } + while ( v22 < (unsigned int)v20 ); + v24 = (int)v39; + if ( v40 > 0 ) + goto LABEL_27; + return result; +} + +//----- (004338A0) -------------------------------------------------------- +int __cdecl __mingw_pformat(__int16 a1, int a2, int a3, char *a4, double *a5) +{ + char *v5; // eax + int v6; // edx + int v7; // eax + char *v8; // esi + char *v9; // ebx + int v10; // edi + int v11; // ebx + char v12; // dl + char v13; // si + char v14; // dl + int v15; // ecx + int v16; // eax + _BYTE *v17; // ebx + char *v18; // eax + char v19; // dl + int v20; // eax + void *v21; // esp + void *v22; // esp + int v23; // eax + void *v24; // esp + char *j; // ebx + void *v26; // esp + _WORD *v27; // eax + _WORD *v28; // edx + int v29; // edi + char *v30; // eax + char *k; // esi + char v32; // dl + char *v33; // ecx + int v34; // eax + int v35; // eax + unsigned __int8 v36; // si + int v37; // edx + int v38; // eax + char *v39; // eax + int v40; // ecx + unsigned __int8 v41; // di + unsigned __int8 *v42; // esi + _WORD *v43; // eax + _WORD *v44; // eax + char *i; // ebx + char v46; // cl + char *v47; // eax + int v48; // edx + int v49; // eax + char *v50; // ebx + char *v51; // eax + char *v52; // eax + int v53; // eax + char v54; // dl + int v55; // eax + int v56; // eax + _WORD *v57; // eax + char *v58; // eax + int v59; // edi + char *v60; // esi + int v61; // eax + double *v62; // edi + char *v63; // eax + char *v64; // ecx + int v65; // ebx + int v66; // eax + int v68; // eax + int v69; // eax + double **v70; // eax + double *v71; // ecx + double **v72; // esi + _BYTE *v73; // edx + char v74; // bl + int v75; // ebx + char *v76; // eax + char *v77; // esi + int v78; // edi + char v79; // dl + int v80; // ecx + int v81; // eax + int v82; // ebx + int v83; // eax + char *v84; // eax + char *v85; // ecx + double *v86; // edx + double *v87; // eax + const char **v88; // edx + double *v89; // eax + char *v90; // ebx + int v91; // edx + long double v92; // fst7 + long double v93; // fst7 + long double v94; // fst7 + long double v95; // fst7 + long double v96; // fst7 + long double v97; // fst7 + long double v98; // fst7 + int *v99; // ebx + int *v100; // eax + int v101; // eax + int v102; // ecx + double *v103; // edx + char *v104; // ebx + bool v105; // zf + int v106; // eax + int *v107; // eax + int v108; // eax + long double v109; // fst7 + double *v110; // edx + int v111; // eax + char *v112; // esi + char *v113; // eax + const wchar_t **v114; // edx + const wchar_t *v115; // ebx + int v116; // eax + int v117; // eax + int v118; // eax + unsigned int v119; // ebx + unsigned int v120; // eax + __int64 v121; // rax + char *v122; // eax + double v123; // rax + int v124; // eax + int v125; // [esp+0h] [ebp-A8h] BYREF + _WORD v126[8]; // [esp+Ch] [ebp-9Ch] BYREF + int *v127; // [esp+1Ch] [ebp-8Ch] + int v128; // [esp+20h] [ebp-88h] + int v129; // [esp+24h] [ebp-84h] + _WORD *v130; // [esp+28h] [ebp-80h] + int *v131; // [esp+2Ch] [ebp-7Ch] + _WORD *v132; // [esp+30h] [ebp-78h] + unsigned __int8 *v133; // [esp+34h] [ebp-74h] + _WORD *v134; // [esp+38h] [ebp-70h] + int *v135; // [esp+3Ch] [ebp-6Ch] + int v136; // [esp+40h] [ebp-68h] + int v137; // [esp+44h] [ebp-64h] + int v138; // [esp+48h] [ebp-60h] + int v139; // [esp+4Ch] [ebp-5Ch] + unsigned __int8 v140[4]; // [esp+54h] [ebp-54h] BYREF + double v141; // [esp+58h] [ebp-50h] BYREF + int v142; // [esp+60h] [ebp-48h] BYREF + int v143; // [esp+64h] [ebp-44h] + int v144; // [esp+68h] [ebp-40h] BYREF + int v145[2]; // [esp+6Ch] [ebp-3Ch] BYREF + __int16 v146; // [esp+74h] [ebp-34h] + int v147; // [esp+78h] [ebp-30h] + int v148; // [esp+7Ch] [ebp-2Ch] + int v149; // [esp+80h] [ebp-28h] + int v150; // [esp+84h] [ebp-24h] + __int16 v151; // [esp+88h] [ebp-20h] + unsigned int v152; // [esp+8Ch] [ebp-1Ch] + + v144 = -1; + v145[0] = -1; + v142 = a2; + v145[1] = -3; + v147 = 0; + v136 = a1 & 0x3000; + v143 = v136; + v146 = 0; + v148 = a3; + v5 = getenv("PRINTF_EXPONENT_DIGITS"); + if ( !v5 || (v6 = *v5, v7 = 2, (unsigned int)(v6 - 48) > 2) ) + v7 = 3 - (__mingw_output_format_flags & 1); + v8 = a4; + v149 = v7; + v150 = -3; + v151 = 0; + v152 = 0; + LODWORD(v141) = a4; + v138 = 0; + do + { + while ( 1 ) + { + v10 = (int)(v8 + 1); + if ( *v8 != 37 ) + goto LABEL_5; + LODWORD(v141) = v8 + 1; + v139 = sub_4321B0(&v141); + if ( !v139 ) + { + v11 = LODWORD(v141); + v12 = *(_BYTE *)LODWORD(v141); + if ( *(_BYTE *)LODWORD(v141) == 36 ) + goto LABEL_206; + v139 = (int)v8; + v13 = v12; + v137 = v10; + while ( strchr("+-' 0#", v13) ) + v13 = *(_BYTE *)++v11; + v14 = v13; + v15 = v13; + v8 = (char *)v139; + v10 = v137; + if ( v14 == 42 ) + { + v54 = *(_BYTE *)++v11; + if ( v54 != 46 ) + goto LABEL_16; + } + else + { + if ( (unsigned int)(v15 - 48) <= 9 ) + { + do + { + v16 = *(char *)++v11; + v14 = v16; + } + while ( (unsigned int)(v16 - 48) <= 9 ); + } + if ( v14 != 46 ) + { +LABEL_16: + LODWORD(v141) = v11; + sub_431B90((int *)&v141); + v17 = (_BYTE *)LODWORD(v141); + LOBYTE(v139) = *(_BYTE *)LODWORD(v141); + v18 = strchr("aAeEfFgGcCdiouxXnpsS", (char)v139); + v19 = v139; + if ( v18 && (unsigned int)(v18 - 5177653) > 7 ) + { +LABEL_206: + v133 = v140; + goto LABEL_77; + } + goto LABEL_18; + } + } + v55 = *(char *)(v11 + 1); + if ( (_BYTE)v55 == 42 ) + { + v11 += 2; + } + else + { + ++v11; + if ( (unsigned int)(v55 - 48) <= 9 ) + { + do + v56 = *(char *)++v11; + while ( (unsigned int)(v56 - 48) <= 9 ); + } + } + goto LABEL_16; + } + for ( i = (char *)++LODWORD(v141); strchr("+-' 0#", *i); ++i ) + ; + LODWORD(v141) = i; + v46 = *i; + if ( *i == 42 ) + { + LODWORD(v141) = i + 1; + v53 = sub_4321B0(&v141); + if ( !v53 ) + goto LABEL_206; + if ( v139 < v53 ) + v139 = v53; + i = (char *)(LODWORD(v141) + 1); + LODWORD(v141) = i; + v46 = *i; + } + else + { + v47 = i + 1; + if ( (unsigned int)(v46 - 48) <= 9 ) + { + do + { + LODWORD(v141) = v47; + v48 = *v47; + i = v47++; + v46 = v48; + } + while ( (unsigned int)(v48 - 48) <= 9 ); + } + } + if ( v46 == 46 ) + { + LODWORD(v141) = i + 1; + v49 = i[1]; + if ( (_BYTE)v49 == 42 ) + { + LODWORD(v141) = i + 2; + v69 = sub_4321B0(&v141); + if ( !v69 ) + goto LABEL_206; + ++LODWORD(v141); + if ( v139 < v69 ) + v139 = v69; + } + else + { + v50 = i + 2; + if ( (unsigned int)(v49 - 48) <= 9 ) + { + do + { + v51 = v50; + LODWORD(v141) = v50++; + } + while ( (unsigned int)(*v51 - 48) <= 9 ); + } + } + } + sub_431B90((int *)&v141); + v17 = (_BYTE *)LODWORD(v141); + LOBYTE(v137) = *(_BYTE *)LODWORD(v141); + v52 = strchr("aAeEfFgGcCdiouxXnpsS", (char)v137); + v19 = v137; + if ( v52 ) + { + if ( (unsigned int)(v52 - 5177653) > 7 ) + break; + } +LABEL_18: + if ( v19 == 37 ) + goto LABEL_19; +LABEL_5: + v9 = v8; + v8 = (char *)v10; + LODWORD(v141) = v10; + if ( !*v9 ) + goto LABEL_21; + } + if ( v138 >= v139 ) + { +LABEL_19: + v8 = v17 + 1; + goto LABEL_20; + } + v138 = v139; + v8 = v17 + 1; +LABEL_20: + LODWORD(v141) = v8; + } + while ( *v17 ); +LABEL_21: + v20 = 16 * ((unsigned int)(4 * v138 + 15) >> 4); + v21 = alloca(v20); + v22 = alloca(v20); + v137 = (int)v126; + v133 = (unsigned __int8 *)v126; + if ( v138 ) + { + v131 = &v125; + v23 = 16 * ((unsigned int)(2 * v138 + 15) >> 4); + v24 = alloca(v23); + j = a4; + v26 = alloca(v23); + LODWORD(v141) = a4; + v27 = v126; + v28 = &v126[v138]; + v130 = v126; + v132 = v126; + v134 = v28; + do + *v27++ = 0; + while ( v28 != v27 ); + v29 = (int)(j + 1); + if ( *j == 37 ) + goto LABEL_28; + while ( 1 ) + { +LABEL_25: + v30 = j; + for ( j = (char *)v29; ; j = (char *)(LODWORD(v141) + 1) ) + { + LODWORD(v141) = j; + if ( !*v30 ) + { + v57 = v132; + do + { + if ( !*v57 ) + goto LABEL_77; + ++v57; + } + while ( v134 != v57 ); + v70 = (double **)v137; + v71 = a5; + v59 = v138 - 1; + v72 = (double **)(v137 + 4 * v138); + v73 = (char *)v130 + 1; + while ( 1 ) + { + v74 = *(v73 - 1); + *v70 = v71; + if ( v74 == 1 ) + { + v75 = (unsigned __int8)*v73; + if ( v75 == 76 || (byte_1541CCD & 1) != 0 && v75 == 2 ) + { + v71 = (double *)((char *)v71 + 12); +LABEL_104: + ++v70; + v73 += 2; + if ( v72 == v70 ) + goto LABEL_110; + continue; + } + } + else if ( v74 == 3 || *v73 != 3 ) + { + v71 = (double *)((char *)v71 + 4); + goto LABEL_104; + } + ++v70; + ++v71; + v73 += 2; + if ( v72 == v70 ) + { +LABEL_110: + v76 = a4; + v60 = ++a4; + v61 = *v76; + if ( !v61 ) + goto LABEL_87; + goto LABEL_78; + } + } + } + v29 = (int)(j + 1); + if ( *j != 37 ) + goto LABEL_25; +LABEL_28: + LODWORD(v141) = v29; + v139 = sub_4321B0(&v141); + if ( v139 > 0 ) + break; + v139 = (int)j; + v77 = (char *)LODWORD(v141); + v135 = (int *)v29; + while ( 1 ) + { + v78 = *v77; + if ( !strchr("+-' 0#", v78) ) + break; + ++v77; + } + v79 = v78; + v80 = v78; + j = (char *)v139; + v29 = (int)v135; + if ( v79 == 42 ) + { + v79 = *++v77; + } + else if ( (unsigned int)(v80 - 48) <= 9 ) + { + do + { + v81 = *++v77; + v79 = v81; + } + while ( (unsigned int)(v81 - 48) <= 9 ); + } + if ( v79 == 46 ) + { + v117 = v77[1]; + if ( (_BYTE)v117 == 42 ) + { + v77 += 2; + } + else + { + ++v77; + if ( (unsigned int)(v117 - 48) <= 9 ) + { + do + v118 = *++v77; + while ( (unsigned int)(v118 - 48) <= 9 ); + } + } + } + LODWORD(v141) = v77; + sub_431B90((int *)&v141); + v30 = (char *)LODWORD(v141); + if ( *(_BYTE *)LODWORD(v141) != 37 ) + goto LABEL_25; + } + for ( k = (char *)++LODWORD(v141); strchr("+-' 0#", *k); ++k ) + ; + LODWORD(v141) = k; + v32 = *k; + if ( *k == 42 ) + { + LODWORD(v141) = k + 1; + v129 = sub_4321B0(&v141); + if ( v129 ) + { + k = (char *)(LODWORD(v141) + 1); + LODWORD(v141) = k; + v32 = *k; + } + else + { + k = (char *)LODWORD(v141); + v139 = 0; + v32 = *(_BYTE *)LODWORD(v141); + } + } + else + { + v33 = k + 1; + if ( (unsigned int)(v32 - 48) <= 9 ) + { + do + { + LODWORD(v141) = v33; + v34 = *v33; + k = v33++; + v32 = v34; + } + while ( (unsigned int)(v34 - 48) <= 9 ); + } + v129 = 0; + } + if ( v32 != 46 ) + { +LABEL_37: + v128 = 0; + goto LABEL_38; + } + LODWORD(v141) = k + 1; + v111 = k[1]; + if ( (_BYTE)v111 != 42 ) + { + v112 = k + 2; + if ( (unsigned int)(v111 - 48) <= 9 ) + { + do + { + v113 = v112; + LODWORD(v141) = v112++; + } + while ( (unsigned int)(*v113 - 48) <= 9 ); + } + goto LABEL_37; + } + LODWORD(v141) = k + 2; + v128 = sub_4321B0(&v141); + if ( !v128 ) + { + sub_431B90((int *)&v141); + v37 = LODWORD(v141); + LOBYTE(v135) = *(_BYTE *)LODWORD(v141); + goto LABEL_97; + } + ++LODWORD(v141); +LABEL_38: + v35 = sub_431B90((int *)&v141); + if ( v35 == 1 ) + v36 = 0; + else + v36 = v35 == 4 ? 0 : v35; + v37 = LODWORD(v141); + v38 = (char)*(_BYTE *)LODWORD(v141); + LOBYTE(v135) = *(_BYTE *)LODWORD(v141); + if ( v139 + && (v127 = (int *)LODWORD(v141), v39 = strchr("aAeEfFgGcCdiouxXnpsS", v38), v37 = (int)v127, v39) + && (v40 = (v39 - "aAeEfFgGcCdiouxXnpsS") / 8 + 1, v40 > 0) ) + { + v41 = v36; + v140[0] = (unsigned __int8)v135; + v140[1] = v36; + v42 = (unsigned __int8 *)&v130[v139 - 1]; + if ( !*(_WORD *)v42 + || (v135 = v127, + v139 = (v39 - "aAeEfFgGcCdiouxXnpsS") / 8 + 1, + v119 = sub_432260(v140), + v120 = sub_432260(v42), + LOBYTE(v40) = v139, + v37 = (int)v135, + v119 > v120) ) + { + *v42 = v40; + v42[1] = v41; + } + if ( v129 > 0 ) + { + v43 = &v130[v129 - 1]; + if ( !*v43 ) + *v43 = 100; + } + if ( v128 > 0 ) + { + v44 = &v130[v128 - 1]; + if ( !*v44 ) + *v44 = 100; + } + v29 = v37 + 1; + j = (char *)v37; + } + else + { +LABEL_97: + if ( (_BYTE)v135 == 37 ) + { + v29 = v37 + 1; + j = (char *)v37; + } + } + } + } +LABEL_77: + v58 = a4; + v59 = -1; + v60 = ++a4; + v61 = *v58; + v138 = 0; + if ( !v61 ) + goto LABEL_88; +LABEL_78: + v134 = (_WORD *)v59; + v62 = a5; +LABEL_81: + if ( v61 != 37 ) + { + sub_431D50(v61, (int)&v142); + v63 = a4; + goto LABEL_80; + } + if ( v138 ) + { + v68 = sub_432230((int *)&a4); + if ( v68 > 0 ) + v62 = *(double **)&v133[4 * v68 - 4]; + } + v64 = a4; + v145[0] = -1; + v144 = -1; + v143 = v136; + if ( !*a4 ) + { +LABEL_131: + v63 = v64; + goto LABEL_80; + } + v139 = 0; + v135 = &v144; + v137 = 0; + while ( 2 ) + { + v63 = v64 + 1; + a4 = v64 + 1; + v65 = *v64; + switch ( *v64 ) + { + case ' ': + ++v64; + if ( !v139 ) + v143 |= 0x40u; + goto LABEL_130; + case '#': + ++v64; + if ( !v139 ) + v143 |= 0x800u; + goto LABEL_130; + case '%': + goto LABEL_156; + case '\'': + ++v64; + if ( !v139 ) + v143 |= 1u; + goto LABEL_130; + case '*': + v99 = v135; + if ( !v135 ) + goto LABEL_174; + if ( (v139 & 5) != 0 ) + { + v135 = 0; + ++v64; +LABEL_133: + v139 = 4; + } + else + { + if ( v138 && (v124 = sub_432230((int *)&a4), v124 > 0) ) + { + v101 = **(_DWORD **)&v133[4 * v124 - 4]; + *v99 = v101; + } + else + { + v100 = (int *)v62; + v62 = (double *)((char *)v62 + 4); + v101 = *v100; + *v135 = v101; + } + if ( v101 >= 0 ) + goto LABEL_190; + if ( !v139 ) + { + v143 |= 0x400u; + v144 = -v144; +LABEL_190: + v135 = 0; + v64 = a4; + goto LABEL_130; + } + v145[0] = -1; + v64 = a4; + v135 = 0; + } + goto LABEL_130; + case '+': + ++v64; + if ( !v139 ) + v143 |= 0x100u; + goto LABEL_130; + case '-': + ++v64; + if ( !v139 ) + v143 |= 0x400u; + goto LABEL_130; + case '.': + if ( (unsigned int)v139 <= 1 ) + { + ++v64; + v145[0] = 0; + v135 = v145; + v139 = 2; + } + else + { +LABEL_174: + v139 = 4; + ++v64; + } + goto LABEL_130; + case '0': + if ( !v139 ) + { + v143 |= 0x200u; + ++v64; + goto LABEL_130; + } + if ( v139 != 4 ) + { +LABEL_219: + if ( v139 == 2 ) + v139 = 3; +LABEL_126: + ++v64; + if ( v135 ) + { + v82 = v65 - 48; + if ( *v135 > 0 ) + v82 += 10 * *v135; + *v135 = v82; + v64 = v63; + } +LABEL_130: + if ( !*v64 ) + goto LABEL_131; + continue; + } +LABEL_155: + a4 = v60; +LABEL_156: + sub_431D50(37, (int)&v142); + v63 = a4; +LABEL_80: + v60 = v63 + 1; + a4 = v63 + 1; + v61 = *v63; + if ( v61 ) + goto LABEL_81; + v59 = (int)v134; + if ( v138 ) + { + do +LABEL_87: + v66 = v59--; + while ( v66 > 0 ); + } +LABEL_88: + __mingw_free(v152); + return v147; + case 'A': + if ( (v143 & 4) != 0 ) + goto LABEL_160; + goto LABEL_180; + case 'C': + v145[0] = -1; + v87 = (double *)((char *)v62 + 4); + goto LABEL_203; + case 'E': + if ( (v143 & 4) == 0 ) + goto LABEL_172; + goto LABEL_164; + case 'F': + if ( (v143 & 4) == 0 ) + goto LABEL_168; + goto LABEL_162; + case 'G': + if ( (v143 & 4) != 0 ) + goto LABEL_170; + goto LABEL_201; + case 'I': + case 'h': + case 'j': + case 'l': + case 't': + case 'z': + a4 = v64; + v83 = sub_431B90((int *)&a4); + v64 = a4; + v137 = v83; + if ( v65 != 108 || (byte_1541CCD & 1) == 0 || v83 != 2 ) + goto LABEL_133; + v137 = 2; +LABEL_205: + v143 |= 4u; + v139 = 4; + goto LABEL_130; + case 'L': + ++v64; + goto LABEL_205; + case 'S': + v89 = (double *)((char *)v62 + 4); + goto LABEL_215; + case 'X': + case 'o': + case 'u': + case 'x': + if ( v137 == 3 ) + { + v123 = *v62++; + v141 = v123; + } + else + { + v84 = *(char **)v62; + if ( v137 == 2 ) + { +LABEL_139: + *(_QWORD *)&v141 = (unsigned int)v84; + v62 = (double *)((char *)v62 + 4); + goto LABEL_140; + } + if ( v137 != 1 ) + { + if ( v137 == 4 ) + v84 = (char *)(unsigned __int8)v84; + goto LABEL_139; + } + v62 = (double *)((char *)v62 + 4); + *(_QWORD *)&v141 = (unsigned __int16)v84; + } +LABEL_140: + if ( v65 != 117 ) + { + sub_4334A0(v65, SLODWORD(v141), SHIDWORD(v141), (int)&v142); + v63 = a4; + goto LABEL_80; + } + goto LABEL_147; + case 'a': + v143 |= 0x20u; + if ( (v143 & 4) != 0 ) + { +LABEL_160: + v92 = *(long double *)v62; + v62 = (double *)((char *)v62 + 12); + sub_432EF0(&v142, v92); + v63 = a4; + } + else + { +LABEL_180: + v98 = *v62++; + sub_432EF0(&v142, v98); + v63 = a4; + } + goto LABEL_80; + case 'c': + v145[0] = -1; + v86 = v62; + v87 = (double *)((char *)v62 + 4); + if ( (unsigned int)(v137 - 2) <= 1 ) + { +LABEL_203: + v110 = v62; + v62 = v87; + LOWORD(v141) = *(_DWORD *)v110; + sub_431DB0((int)&v141, 1, (int)&v142); + v63 = a4; + } + else + { + v62 = (double *)((char *)v62 + 4); + LOBYTE(v141) = *(_DWORD *)v86; + sub_431EE0((char *)&v141, 1, (int)&v142); + v63 = a4; + } + goto LABEL_80; + case 'd': + case 'i': + v143 |= 0x80u; + if ( v137 == 3 ) + { + v121 = *(_QWORD *)v62++; + v141 = *(double *)&v121; + } + else + { + v85 = *(char **)v62; + v62 = (double *)((char *)v62 + 4); + if ( v137 == 2 ) + { +LABEL_226: + *(_QWORD *)&v141 = (int)v85; + goto LABEL_147; + } + if ( v137 != 1 ) + { + if ( v137 == 4 ) + { + *(_QWORD *)&v141 = (char)v85; + goto LABEL_147; + } + goto LABEL_226; + } + *(_QWORD *)&v141 = (__int16)v85; + } +LABEL_147: + sub_4323D0(LODWORD(v141), HIDWORD(v141), (int)&v142); + v63 = a4; + goto LABEL_80; + case 'e': + v143 |= 0x20u; + if ( (v143 & 4) != 0 ) + { +LABEL_164: + v94 = *(long double *)v62; + v62 = (double *)((char *)v62 + 12); + sub_432BE0(&v142, v94); + v63 = a4; + } + else + { +LABEL_172: + v97 = *v62++; + sub_432BE0(&v142, v97); + v63 = a4; + } + goto LABEL_80; + case 'f': + v143 |= 0x20u; + if ( (v143 & 4) != 0 ) + { +LABEL_162: + v93 = *(long double *)v62; + v62 = (double *)((char *)v62 + 12); + sub_432C90((int)&v142, v93); + v63 = a4; + } + else + { +LABEL_168: + v95 = *v62++; + sub_432C90((int)&v142, v95); + v63 = a4; + } + goto LABEL_80; + case 'g': + v143 |= 0x20u; + if ( (v143 & 4) != 0 ) + { +LABEL_170: + v96 = *(long double *)v62; + v62 = (double *)((char *)v62 + 12); + sub_432D60(&v142, v96); + v63 = a4; + } + else + { +LABEL_201: + v109 = *v62++; + sub_432D60(&v142, v109); + v63 = a4; + } + goto LABEL_80; + case 'n': + v102 = v147; + v103 = (double *)((char *)v62 + 4); + if ( v137 == 4 ) + { + v122 = *(char **)v62; + v62 = (double *)((char *)v62 + 4); + *v122 = v147; + v63 = a4; + } + else + { + v104 = *(char **)v62; + if ( v137 == 1 ) + { + *(_WORD *)v104 = v147; + v62 = (double *)((char *)v62 + 4); + } + else if ( v137 == 2 ) + { + *(_DWORD *)v104 = v147; + v62 = (double *)((char *)v62 + 4); + } + else + { + v105 = v137 == 3; + v62 = (double *)((char *)v62 + 4); + *(_DWORD *)v104 = v147; + if ( v105 ) + { + *((_DWORD *)v104 + 1) = v102 >> 31; + v62 = v103; + } + } + } + goto LABEL_80; + case 'p': + if ( !v139 ) + { + v106 = v136; + if ( v143 == v136 ) + { + BYTE1(v106) = BYTE1(v136) | 2; + v145[0] = 8; + v143 = v106; + } + } + v107 = (int *)v62; + v62 = (double *)((char *)v62 + 4); + v108 = *v107; + *(_QWORD *)&v141 = (unsigned int)v108; + sub_4334A0(120, v108, 0, (int)&v142); + v63 = a4; + goto LABEL_80; + case 's': + v88 = (const char **)v62; + v89 = (double *)((char *)v62 + 4); + if ( (unsigned int)(v137 - 2) <= 1 ) + { +LABEL_215: + v114 = (const wchar_t **)v62; + v62 = v89; + v115 = *v114; + if ( !*v114 ) + v115 = (const wchar_t *)&off_4F0162; + v116 = wcslen(v115); + sub_431DB0((int)v115, v116, (int)&v142); + v63 = a4; + } + else + { + v90 = *(char **)v62; + v62 = (double *)((char *)v62 + 4); + if ( *v88 ) + { + v91 = strlen(*v88); + } + else + { + v91 = 6; + v90 = "(null)"; + } + sub_431EE0(v90, v91, (int)&v142); + v63 = a4; + } + goto LABEL_80; + default: + if ( v139 == 4 || (unsigned int)(v65 - 48) > 9 ) + goto LABEL_155; + if ( v139 ) + goto LABEL_219; + v139 = 1; + goto LABEL_126; + } + } +} +// 4F0162: using guessed type void *off_4F0162; +// 1541CCD: using guessed type char byte_1541CCD; + +//----- (004347D0) -------------------------------------------------------- +unsigned int __cdecl __mingw_memalign_base(unsigned int a1, unsigned int *a2) +{ + unsigned int result; // eax + unsigned int v3; // esi + int v4; // edx + int v5; // ebx + int *v6; // ecx + int v7; // edi + int v8; // esi + int v9; // edx + int v10; // [esp+0h] [ebp-18h] + unsigned int v11; // [esp+4h] [ebp-14h] + + result = a1; + if ( a1 ) + { + v3 = __mingw_memalign_lwm; + if ( __mingw_memalign_lwm ) + { + if ( __mingw_memalign_lwm + 8 <= a1 ) + { + v4 = *(_DWORD *)((a1 - 4) & 0xFFFFFFFC); + v5 = v4 & 3; + v6 = (int *)(v4 & 0xFFFFFFFC); + a2[1] = v5; + *a2 = v4 & 0xFFFFFFFC; + if ( v3 <= (v4 & 0xFFFFFFFC) && (unsigned int)v6 <= a1 - 8 ) + { + v11 = v4 & 0xFFFFFFFC; + if ( (v4 & 1) != 0 ) + { + v7 = *v6; + v8 = *v6 + 7; + v10 = -*v6; + } + else + { + v10 = -8; + v8 = 15; + v7 = 8; + } + a2[2] = v7; + v9 = v4 & 2; + if ( v9 ) + { + v9 = v6[(unsigned int)(v5 + 1) >> 2]; + v6 = (int *)((char *)v6 + v9); + } + a2[3] = v9; + if ( v5 == 3 ) + v8 = v7 + 11; + if ( a1 == (((unsigned int)v6 + v8) & v10) - v9 ) + return v11; + } + } + } + } + return result; +} +// 1541CD0: using guessed type int __mingw_memalign_lwm; + +//----- (00434890) -------------------------------------------------------- +void *__cdecl __mingw_memalign_realloc(int a1, int *a2, size_t a3) +{ + size_t v3; // eax + int v4; // edx + size_t v5; // edi + int v6; // ebx + unsigned int v7; // eax + int v8; // edx + void *v9; // ebp + unsigned int v10; // ebx + int v11; // ebp + const void *Src; // eax + void *v13; // ebx + size_t Size; // edi + + v3 = _msize((void *)*a2); + v4 = a2[2]; + v5 = v3; + v6 = v4 + 7; + if ( (a2[1] & 3) == 3 ) + v6 = v4 + 11; + v7 = ___msvcrt_realloc(*a2, v6 + a3); + v8 = *a2; + if ( *a2 == v7 ) + return (void *)a1; + v9 = 0; + if ( v7 ) + { + if ( !__mingw_memalign_lwm || __mingw_memalign_lwm > v7 ) + __mingw_memalign_lwm = v7; + v10 = v7 + a2[3] + v6; + v11 = v7 | a2[1]; + Src = (const void *)(a1 - v8 + v7); + *a2 = v11; + v13 = (void *)((-a2[2] & v10) - a2[3]); + v9 = v13; + if ( v13 != Src ) + { + Size = v8 - a1 + v5; + if ( Size > a3 ) + Size = a3; + memmove(v13, Src, Size); + } + *(_DWORD *)(((int)v13 - 4) & 0xFFFFFFFC) = *a2; + } + return v9; +} +// 1541CD0: using guessed type int __mingw_memalign_lwm; +// 1542418: using guessed type int __cdecl ___msvcrt_realloc(_DWORD, _DWORD); + +//----- (00434970) -------------------------------------------------------- +int __mb_codeset_for_locale() +{ + int v0; // edi + char *v1; // eax + char *v2; // esi + size_t v3; // eax + size_t v4; // edx + int v5; // eax + void *v6; // esp + void *v7; // esp + const char *v8; // esi + char *v9; // eax + char *v10; // eax + char *v11; // eax + char v13[16]; // [esp+Ch] [ebp-3Ch] BYREF + struct _cpinfo CPInfo; // [esp+1Ch] [ebp-2Ch] BYREF + + v0 = 0; + v1 = setlocale(2, 0); + if ( v1 ) + { + v2 = v1; + v3 = strlen(v1); + v4 = v3 + 1; + v5 = 16 * ((v3 + 16) >> 4); + v6 = alloca(v5); + v7 = alloca(v5); + v8 = (const char *)memcpy(v13, v2, v4); + v9 = setlocale(2, &byte_4F0304); + if ( !strcmp(v8, v9) ) + { + v10 = getenv("LC_ALL"); + if ( !v10 ) + { + v10 = getenv("LC_CTYPE"); + if ( !v10 ) + { + v10 = getenv("LANG"); + if ( !v10 ) + v10 = (char *)v8; + } + } + } + else + { + setlocale(2, v8); + v10 = (char *)v8; + } + v11 = strchr(v10, 46); + if ( !v11 ) + return 0; + v0 = atoi(v11 + 1); + if ( !GetCPInfo(v0, &CPInfo) || !CPInfo.MaxCharSize ) + return 0; + } + return v0; +} +// 434970: using guessed type char var_3C[16]; + +//----- (00434AA0) -------------------------------------------------------- +UINT __cdecl __mb_cur_max_for_codeset(UINT CodePage) +{ + BOOL v1; // edx + UINT result; // eax + struct _cpinfo CPInfo; // [esp+1Ch] [ebp-20h] BYREF + + v1 = GetCPInfo(CodePage, &CPInfo); + result = 0; + if ( v1 ) + return CPInfo.MaxCharSize; + return result; +} + +//----- (00434AD0) -------------------------------------------------------- +int __cdecl __mingw_mbrtowc_handler(_WORD *a1, int a2, unsigned int a3, _DWORD *a4) +{ + int v4; // eax + unsigned int v5; // eax + unsigned int v7; // esi + unsigned int v8; // ebx + unsigned int v9; // edx + char v10; // cl + unsigned int v11; // ebp + WCHAR v12; // ax + WCHAR v13[2]; // [esp+24h] [ebp-28h] BYREF + CHAR v14[4]; // [esp+28h] [ebp-24h] BYREF + int v15; // [esp+2Ch] [ebp-20h] + + v4 = __mingw_mbrtowc_codeset_init(); + __mingw_mbrlen_cur_max_init(v4); + v15 = 0; + *(_DWORD *)v14 = *a4; + v5 = __mingw_mbrlen_cur_max(); + *a4 = 0; + if ( !a3 ) + { + if ( (*(_WORD *)v14 & 0xFC00) != 0xD800 || (*(_WORD *)&v14[2] & 0xFC00) != 0xDC00 ) + { + *a4 = *(_DWORD *)v14; + return -2; + } + if ( a1 ) + *a1 = *(_WORD *)&v14[2]; + return 0; + } + v7 = 0; + if ( (*(_WORD *)v14 & 0xFC00) == 0xD800 && (*(_WORD *)&v14[2] & 0xFC00) == 0xDC00 ) + { + *_errno() = 22; + return -1; + } + else + { + do + { + if ( !v14[v7] ) + break; + ++v7; + } + while ( v7 != 4 ); + v8 = v7; + v9 = 0; + if ( v7 < v5 ) + { + do + { + v10 = *(_BYTE *)(a2 + v9); + if ( !v10 ) + goto LABEL_13; + ++v8; + ++v9; + *((_BYTE *)&v13[1] + v8 + 1) = v10; + } + while ( v5 > v8 && a3 > v9 ); + if ( v5 > v8 ) +LABEL_13: + v14[v8] = 0; + } + v11 = 1; + do + { + if ( __mingw_mbtowc_convert(v14, v11, v13, 2) ) + break; + ++v11; + } + while ( v11 <= v8 ); + if ( v7 >= v11 ) + { + *_errno() = 42; + return -1; + } + else + { + v12 = v13[0]; + if ( a1 && (*a1 = v13[0], (v12 & 0xFC00) == 0xD800) ) + { + *a4 = *(_DWORD *)v13; + } + else if ( !v12 ) + { + return 0; + } + return v11 - v7; + } + } +} + +//----- (00434CC0) -------------------------------------------------------- +int __mingw_wctomb_codeset_init() +{ + int v0; // ebx + + v0 = __mb_codeset_for_locale(); + *__emutls_get_address(dword_4E8094) = v0; + return v0; +} +// 4E8094: using guessed type size_t dword_4E8094[4]; + +//----- (00434CE0) -------------------------------------------------------- +UINT __cdecl __mingw_wctomb_cur_max_init(UINT a1) +{ + UINT v1; // ebx + + v1 = __mb_cur_max_for_codeset(a1); + *__emutls_get_address(dword_4E80A4) = v1; + return v1; +} +// 4E80A4: using guessed type size_t dword_4E80A4[4]; + +//----- (00434D10) -------------------------------------------------------- +int __mingw_wctomb_cur_max() +{ + return *__emutls_get_address(dword_4E80A4); +} +// 4E80A4: using guessed type size_t dword_4E80A4[4]; + +//----- (00434D30) -------------------------------------------------------- +UINT __cdecl __mingw_wctomb_convert(LPSTR lpMultiByteStr, int cbMultiByte, WCHAR *lpWideCharStr, int cchWideChar) +{ + LPSTR v4; // ebx + int v5; // esi + UINT result; // eax + WCHAR i; // dx + WCHAR v8; // dx + int v9; // ecx + LPCWCH v10; // ebp + WCHAR v11; // dx + __int16 v12; // dx + int v13; // eax + BOOL *lpUsedDefaultChar; // edx + __int16 v15; // dx + UINT v16; // [esp+2Ch] [ebp-30h] + int v17; // [esp+3Ch] [ebp-20h] BYREF + + v4 = lpMultiByteStr; + v5 = cbMultiByte; + v17 = 0; + result = *__emutls_get_address(dword_4E8094); + if ( !result ) + { + if ( cchWideChar == -1 ) + { + while ( 1 ) + { + v8 = lpWideCharStr[result]; + if ( v8 > 0xFFu ) + break; + if ( v4 ) + { + if ( v5 <= 0 ) + { +LABEL_41: + *_errno() = 12; + return -1; + } + *v4 = v8; + v8 = lpWideCharStr[result]; + --v5; + ++v4; + } + ++result; + if ( !v8 ) + return result; + } + } + else + { + if ( cchWideChar <= 0 ) + return result; + for ( i = *lpWideCharStr; i <= 0xFFu; i = lpWideCharStr[result] ) + { + if ( v4 ) + { + if ( v5 <= 0 ) + goto LABEL_41; + *v4 = i; + i = lpWideCharStr[result]; + --v5; + ++v4; + } + ++result; + if ( !i || cchWideChar == result ) + return result; + } + } +LABEL_11: + *_errno() = 42; + return -1; + } + if ( result <= 0xFDE7 ) + { + lpUsedDefaultChar = &v17; + } + else + { + v9 = cchWideChar; + if ( cchWideChar ) + { + v16 = result; + v10 = lpWideCharStr; + while ( 1 ) + { + v11 = *v10; + if ( v9 == -1 ) + break; + v12 = v11 & 0xFC00; + v13 = v9 - 1; + if ( v12 == -10240 ) + { + if ( v9 == 1 || (v10[1] & 0xFC00) != 0xDC00 ) + goto LABEL_11; + v9 -= 2; + v10 += 2; + if ( !v9 ) + { +LABEL_26: + result = v16; + lpUsedDefaultChar = 0; + goto LABEL_32; + } + } + else + { + if ( v12 == -9216 ) + goto LABEL_11; + --v9; + ++v10; + if ( !v13 ) + goto LABEL_26; + } + } + result = v16; + while ( v11 ) + { + v15 = v11 & 0xFC00; + if ( v15 == -10240 ) + { + if ( (v10[1] & 0xFC00) != 0xDC00 ) + goto LABEL_11; + v11 = v10[2]; + v10 += 2; + } + else + { + if ( v15 == -9216 ) + goto LABEL_11; + v11 = *++v10; + } + } + } + lpUsedDefaultChar = 0; + } +LABEL_32: + result = WideCharToMultiByte(result, 0, lpWideCharStr, cchWideChar, lpMultiByteStr, cbMultiByte, 0, lpUsedDefaultChar); + if ( v17 || !result ) + goto LABEL_11; + return result; +} +// 4E8094: using guessed type size_t dword_4E8094[4]; + +//----- (00434F60) -------------------------------------------------------- +int *__cdecl __gdtoa(int *a1, int a2, int *a3, int *a4, int a5, int a6, int *a7, int **a8) +{ + int v8; // ebp + int v9; // eax + int v10; // edi + int v11; // edx + int v12; // eax + int *v13; // esi + int *v14; // edx + int *v15; // eax + int v16; // edi + int *v17; // ecx + int v18; // ebx + int v19; // ebx + int v20; // ebx + int v21; // eax + unsigned int v22; // edx + unsigned int v23; // eax + double v24; // rax + int v25; // ecx + int v26; // edx + signed int v27; // eax + long double v28; // fst7 + int v30; // eax + signed int v31; // eax + int *v32; // edi + long double v33; // fst7 + int *v34; // ebp + long double v35; // fst6 + bool i; // zf + long double v37; // fst6 + char v38; // cl + long double v39; // fst7 + double v40; // rax + long double v41; // fst6 + long double v42; // fst5 + long double v43; // fst6 + long double v44; // fst7 + long double v45; // fst6 + char v46; // al + long double v47; // rt1 + long double v48; // fst5 + char v49; // dl + int *v50; // eax + char v51; // dl + double v52; // rax + long double v53; // fst6 + int v54; // edx + int v55; // ebp + signed int v56; // eax + int v57; // eax + int *v58; // eax + bool v59; // bl + char v60; // bl + int v61; // ebx + signed int v62; // eax + int v63; // eax + bool v64; // dl + unsigned int v65; // ebx + int v66; // eax + int v67; // edx + int *v68; // eax + int v69; // ebx + int *v70; // ebx + int *v71; // edi + int v72; // eax + int v73; // ebp + int *v74; // eax + int v75; // ecx + int *v76; // ecx + int v77; // eax + int *v78; // eax + unsigned int v79; // eax + int v80; // edx + char v81; // al + int *v82; // edx + int v83; // edx + int v84; // eax + int v85; // edx + long double v86; // fst6 + char v87; // bl + long double v88; // fst5 + int v89; // edx + char v90; // al + long double v91; // rt2 + long double v92; // fst6 + long double v93; // fst7 + long double v94; // rtt + double v95; // rax + int v96; // eax + bool v97; // zf + bool v98; // cc + int *v99; // edi + int *v100; // eax + int *v101; // ebx + long double v102; // fst6 + int v103; // eax + int v104; // [esp+18h] [ebp-84h] + int v105; // [esp+18h] [ebp-84h] + int *v106; // [esp+18h] [ebp-84h] + int *v107; // [esp+18h] [ebp-84h] + int v108; // [esp+18h] [ebp-84h] + int v109; // [esp+1Ch] [ebp-80h] + int *v110; // [esp+1Ch] [ebp-80h] + int v111; // [esp+20h] [ebp-7Ch] + int v112; // [esp+20h] [ebp-7Ch] + unsigned int v113; // [esp+20h] [ebp-7Ch] + int *v114; // [esp+20h] [ebp-7Ch] + double v115; // [esp+28h] [ebp-74h] + int v116; // [esp+28h] [ebp-74h] + int v117; // [esp+28h] [ebp-74h] + int *v118; // [esp+28h] [ebp-74h] + int v119; // [esp+30h] [ebp-6Ch] + unsigned int v120; // [esp+30h] [ebp-6Ch] + bool v121; // [esp+30h] [ebp-6Ch] + int v122; // [esp+34h] [ebp-68h] + unsigned int v123; // [esp+34h] [ebp-68h] + int v124; // [esp+38h] [ebp-64h] + double v125; // [esp+38h] [ebp-64h] + int v126; // [esp+40h] [ebp-5Ch] + int v127; // [esp+44h] [ebp-58h] + int *v128; // [esp+44h] [ebp-58h] + int v129; // [esp+44h] [ebp-58h] + int *v130; // [esp+44h] [ebp-58h] + int v131; // [esp+48h] [ebp-54h] + unsigned int v132; // [esp+48h] [ebp-54h] + int v133; // [esp+4Ch] [ebp-50h] + int *v134; // [esp+4Ch] [ebp-50h] + int v135; // [esp+50h] [ebp-4Ch] + int v136; // [esp+54h] [ebp-48h] + char v137; // [esp+58h] [ebp-44h] + signed int v138; // [esp+58h] [ebp-44h] + int v139; // [esp+5Ch] [ebp-40h] + int v140; // [esp+60h] [ebp-3Ch] + int v141; // [esp+64h] [ebp-38h] + unsigned int v142[8]; // [esp+7Ch] [ebp-20h] BYREF + + v8 = *a4; + *a4 &= 0xFFFFFFCF; + v9 = v8 & 7; + if ( v9 == 3 ) + { + *a7 = -32768; + return __nrv_alloc_D2A("Infinity", a8, 8u); + } + v109 = v8 & 4; + if ( (v8 & 4) != 0 ) + { + v10 = 0; + if ( v9 == 4 ) + { + *a7 = -32768; + return __nrv_alloc_D2A((char *)&off_4F0329, a8, 3u); + } + return (int *)v10; + } + if ( (v8 & 7) == 0 ) + { +LABEL_28: + *a7 = 1; + return __nrv_alloc_D2A("0", a8, 1u); + } + v10 = 0; + if ( (unsigned int)(v9 - 1) > 1 ) + return (int *)v10; + v11 = 0; + v104 = *a1; + v12 = 32; + if ( *a1 <= 32 ) + { + v11 = v8 & 4; + } + else + { + do + { + v12 *= 2; + ++v11; + } + while ( v104 > v12 ); + } + v13 = __Balloc_D2A(v11); + v14 = v13 + 5; + v15 = a3; + v16 = (v104 - 1) >> 5; + v17 = &a3[v16]; + do + { + v18 = *v15++; + *v14++ = v18; + } + while ( v17 >= v15 ); + v19 = 4; + if ( (char *)v17 + 1 >= (char *)a3 + 1 ) + v19 = v16 * 4 + 4; + v20 = v19 >> 2; + do + { + v21 = v20--; + if ( v13[v20 + 5] ) + { + _BitScanReverse(&v22, v13[v20 + 5]); + v13[4] = v21; + v20 = 32 * v21 - (v22 ^ 0x1F); + goto LABEL_15; + } + } + while ( v20 ); + v13[4] = 0; +LABEL_15: + v23 = __trailz_D2A((int)v13); + v142[0] = v23; + v127 = a2; + if ( v23 ) + { + __rshift_D2A((int)v13, v23); + v20 -= v142[0]; + v127 = v142[0] + a2; + } + if ( !v13[4] ) + { + __Bfree_D2A((unsigned int)v13); + goto LABEL_28; + } + v24 = __b2d_D2A((int)v13, v142); + v25 = v127 + v20 - 1; + LODWORD(v115) = LODWORD(v24); + v26 = HIDWORD(v24) & 0xFFFFF | 0x3FF00000; + HIDWORD(v115) = v26; + v27 = abs32(v25) - 1077; + v28 = (v115 - 1.5) * 0.289529654602168 + 0.1760912590558 + (long double)v25 * 0.301029995663981; + if ( v27 > 0 ) + v28 = v28 + (long double)v27 * 7.0e-17; + v119 = (int)v28; + if ( v28 < 0.0 && (long double)v119 != v28 ) + --v119; + HIDWORD(v115) = v26 + (v25 << 20); + v122 = -v127; + if ( (unsigned int)v119 > 0x16 ) + { + v136 = 1; +LABEL_33: + v131 = 0; + if ( v127 <= 0 ) + goto LABEL_34; + goto LABEL_60; + } + if ( __tens_D2A[v119] > (long double)v115 ) + { + v136 = 0; + --v119; + goto LABEL_33; + } + v136 = 0; + v131 = 0; + if ( v127 <= 0 ) + goto LABEL_47; +LABEL_60: + v122 = 0; + v131 = v127; +LABEL_34: + if ( v119 < 0 ) + { + v30 = v119; + v131 -= v119; + v119 = 0; + v126 = v30; + v133 = -v30; + goto LABEL_36; + } +LABEL_47: + v133 = 0; + v122 += v119; + v126 = v119; +LABEL_36: + if ( (unsigned int)a5 > 9 ) + { + a5 = 0; + goto LABEL_49; + } + v137 = 1; + if ( a5 > 5 ) + { + a5 -= 4; + v137 = 0; + } + switch ( a5 ) + { + case 4: + v135 = 1; + goto LABEL_64; + case 5: + v135 = 1; +LABEL_44: + v139 = a6 + v126; + v31 = a6 + v126 + 1; + v111 = v31; + if ( v31 <= 0 ) + { + v142[0] = 1; + v31 = 1; + } + else + { + v142[0] = a6 + v126 + 1; + } + goto LABEL_67; + case 2: + v135 = 0; +LABEL_64: + v31 = a6; + if ( a6 <= 0 ) + v31 = 1; + v142[0] = v31; + v139 = v31; + v111 = v31; + a6 = v31; +LABEL_67: + v32 = __rv_alloc_D2A(v31); + v38 = v137 & ((unsigned int)v111 <= 0xE); + v124 = a1[3] - 1; + if ( a1[3] == 1 ) + goto LABEL_72; + goto LABEL_68; + case 3: + v135 = 0; + goto LABEL_44; + } +LABEL_49: + v142[0] = (int)((long double)v104 * 0.30103) + 3; + v32 = __rv_alloc_D2A(v142[0]); + v112 = a1[3]; + v124 = v112 - 1; + if ( v112 == 1 ) + { + if ( v126 <= 14 && v127 >= 0 ) + { + v111 = -1; + v33 = __tens_D2A[v126]; + goto LABEL_53; + } + a6 = 0; + v111 = -1; + v135 = 1; + v139 = -1; + goto LABEL_138; + } + a6 = 0; + v38 = 0; + v135 = 1; + v139 = -1; + v111 = -1; +LABEL_68: + if ( v124 < 0 ) + v124 = 2; + if ( (v8 & 8) == 0 ) + { +LABEL_97: + if ( v127 >= 0 && v126 <= 14 ) + { + v33 = __tens_D2A[v126]; + if ( a6 < 0 && v111 <= 0 ) + { + if ( !v111 && v33 * 5.0 < v115 ) + { + v106 = 0; + v126 += 2; + v128 = 0; +LABEL_104: + *(_BYTE *)v32 = 49; + v34 = (int *)((char *)v32 + 1); + v109 = 32; + goto LABEL_105; + } + goto LABEL_132; + } +LABEL_53: + ++v126; + v34 = (int *)((char *)v32 + 1); + v142[0] = 1; + v105 = (int)(v115 / v33); + *(_BYTE *)v32 = v105 + 48; + v35 = v115 - (long double)v105 * v33; + for ( i = v35 == 0.0; !i; i = v35 == 0.0 ) + { + if ( v142[0] == v111 ) + { + if ( v124 ) + { + v109 = 16; + if ( v124 == 1 ) + { + v49 = *((_BYTE *)v34 - 1); + goto LABEL_87; + } + } + else + { + v102 = v35 + v35; + v49 = *((_BYTE *)v34 - 1); + if ( v102 <= v33 && (v102 != v33 || (v105 & 1) == 0) ) + goto LABEL_241; + while ( 1 ) + { +LABEL_87: + v50 = (int *)((char *)v34 - 1); + if ( v49 != 57 ) + { + v51 = v49 + 1; + goto LABEL_89; + } + if ( v50 == v32 ) + break; + v49 = *((_BYTE *)v34 - 2); + v34 = (int *)((char *)v34 - 1); + } + ++v126; + v50 = v32; + v51 = 49; + *(_BYTE *)v32 = 48; +LABEL_89: + *(_BYTE *)v50 = v51; + v109 = 32; + } + goto LABEL_57; + } + v37 = v35 * 10.0; + v34 = (int *)((char *)v34 + 1); + ++v142[0]; + v105 = (int)(v37 / v33); + *((_BYTE *)v34 - 1) = v105 + 48; + v35 = v37 - (long double)v105 * v33; + } + goto LABEL_57; + } + if ( !v135 ) + { + v54 = v133; + v55 = v131; + v128 = 0; + goto LABEL_109; + } +LABEL_138: + if ( a5 <= 1 ) + { + v83 = a1[1]; + v84 = v104 - v20 + 1; + v142[0] = v84; + if ( v127 - (v104 - v20) < v83 ) + { + v84 = v127 - v83 + 1; + v142[0] = v84; + } + v122 += v84; + v67 = v133; + v55 = v131; + v131 += v84; + } + else + { + v66 = v111 - 1; + if ( v133 < v111 - 1 ) + { + v85 = v66 - v133; + v133 = v111 - 1; + v119 += v85; + v67 = 0; + } + else + { + v67 = v133 - v66; + } + if ( v111 < 0 ) + { + v55 = v131 - v111; + v142[0] = 0; + } + else + { + v122 += v111; + v142[0] = v111; + v55 = v131; + v131 += v111; + } + } + v108 = v67; + v68 = __i2b_D2A(1); + v54 = v108; + v128 = v68; +LABEL_109: + if ( v55 > 0 && v122 > 0 ) + { + v56 = v55; + if ( v55 > v122 ) + v56 = v122; + v131 -= v56; + v55 -= v56; + v122 -= v56; + v142[0] = v56; + } + if ( v133 ) + { + if ( v135 ) + { + if ( v54 > 0 ) + { + v116 = v54; + v128 = (int *)__pow5mult_D2A(v128, v54); + v107 = __mult_D2A((int)v128, (int)v13); + __Bfree_D2A((unsigned int)v13); + v13 = v107; + v54 = v116; + } + v57 = v133 - v54; + if ( v133 == v54 ) + goto LABEL_119; + } + else + { + v57 = v133; + } + v13 = (int *)__pow5mult_D2A(v13, v57); + } +LABEL_119: + v58 = __i2b_D2A(1); + v106 = v58; + v59 = v20 == 1 && a5 <= 1; + if ( v119 > 0 ) + { + v106 = (int *)__pow5mult_D2A(v58, v119); + if ( !v59 || a2 <= a1[1] + 1 ) + { + v117 = 0; +LABEL_136: + _BitScanReverse(&v65, v106[v106[4] + 4]); + v60 = v65 ^ 0x1F; +LABEL_122: + v61 = (v60 - (_BYTE)v122 - 4) & 0x1F; + v142[0] = v61; + v62 = v61; + if ( v61 + v131 > 0 ) + { + v13 = __lshift_D2A(v13, v61 + v131); + v62 = v142[0]; + } + v63 = v122 + v62; + if ( v63 > 0 ) + v106 = __lshift_D2A(v106, v63); + v64 = a5 > 2; + if ( v136 && (v121 = a5 > 2, v77 = __cmp_D2A((int)v13, (int)v106), v64 = a5 > 2, v77 < 0) ) + { + v13 = __multadd_D2A(v13, 10, 0); + if ( !v135 ) + { + if ( v139 > 0 || !v121 ) + { + v111 = v139; +LABEL_176: + v34 = v32; + v142[0] = 1; + while ( 1 ) + { + v34 = (int *)((char *)v34 + 1); + v79 = __quorem_D2A((int)v13, (int)v106) + 48; + *((_BYTE *)v34 - 1) = v79; + if ( (int)v142[0] >= v111 ) + break; + v78 = __multadd_D2A(v13, 10, 0); + ++v142[0]; + v13 = v78; + } + LOBYTE(v120) = v79; + v76 = 0; +LABEL_180: + if ( v124 ) + { + v80 = v13[4]; + v81 = *((_BYTE *)v34 - 1); + if ( v124 != 2 ) + { + if ( v80 > 1 || v13[5] ) + goto LABEL_190; + goto LABEL_186; + } + } + else + { + v114 = v76; + v13 = __lshift_D2A(v13, 1); + v96 = __cmp_D2A((int)v13, (int)v106); + v76 = v114; + v97 = v96 == 0; + v98 = v96 <= 0; + v81 = *((_BYTE *)v34 - 1); + if ( !v98 || v97 && (v120 & 1) != 0 ) + { + while ( 1 ) + { +LABEL_190: + v82 = (int *)((char *)v34 - 1); + if ( v81 != 57 ) + { + v109 = 32; + *(_BYTE *)v82 = v81 + 1; + goto LABEL_167; + } + if ( v82 == v32 ) + break; + v81 = *((_BYTE *)v34 - 2); + v34 = (int *)((char *)v34 - 1); + } + ++v126; + *(_BYTE *)v32 = 49; + v109 = 32; + goto LABEL_167; + } + v80 = v13[4]; + } + if ( v80 > 1 || v13[5] ) + v109 = 16; +LABEL_186: + while ( v81 == 48 ) + { + v81 = *((_BYTE *)v34 - 2); + v34 = (int *)((char *)v34 - 1); + } +LABEL_167: + v113 = (unsigned int)v76; + __Bfree_D2A((unsigned int)v106); + if ( !v128 ) + goto LABEL_57; + if ( v113 && (int *)v113 != v128 ) + __Bfree_D2A(v113); + goto LABEL_106; + } + goto LABEL_260; + } + v128 = __multadd_D2A(v128, 10, 0); + if ( v139 <= 0 && v121 ) + { +LABEL_260: + --v126; + v111 = v139; + goto LABEL_129; + } + v111 = v139; + } + else + { + if ( v111 <= 0 && v64 ) + { +LABEL_129: + v34 = v32; + if ( !v111 ) + { + v106 = __multadd_D2A(v106, 5, 0); + if ( __cmp_D2A((int)v13, (int)v106) > 0 ) + { + v126 += 2; + goto LABEL_104; + } + } +LABEL_133: + v109 = 16; + v126 = -a6; +LABEL_105: + __Bfree_D2A((unsigned int)v106); + if ( !v128 ) + goto LABEL_57; +LABEL_106: + __Bfree_D2A((unsigned int)v128); + goto LABEL_57; + } + ++v126; + if ( !v135 ) + goto LABEL_176; + } + v69 = v55 + v61; + if ( v69 > 0 ) + v128 = __lshift_D2A(v128, v69); + v70 = v128; + if ( v117 ) + { + v101 = __Balloc_D2A(v128[1]); + memcpy(v101 + 3, v128 + 3, 4 * v128[4] + 8); + v70 = __lshift_D2A(v101, 1); + } + v118 = v32; + v134 = v32; + v71 = v128; + v142[0] = 1; + while ( 1 ) + { + v123 = __quorem_D2A((int)v13, (int)v106); + v120 = v123 + 48; + v73 = __cmp_D2A((int)v13, (int)v71); + v74 = __diff_D2A((int)v106, (int)v70); + if ( v74[3] ) + { + __Bfree_D2A((unsigned int)v74); + v72 = 1; + } + else + { + v132 = (unsigned int)v74; + v129 = __cmp_D2A((int)v13, (int)v74); + __Bfree_D2A(v132); + v72 = a5 | v129; + if ( a5 | v129 ) + { + v72 = v129; + } + else if ( !(v124 | *a3 & 1) ) + { + v130 = v71; + v75 = v73; + v32 = v134; + v34 = (int *)((char *)v118 + 1); + if ( v123 == 9 ) + goto LABEL_259; + if ( v75 <= 0 ) + { + if ( v13[4] > 1 || v13[5] ) + v72 = 16; + } + else + { + LOBYTE(v120) = v123 + 49; + v72 = 32; + } + v109 = v72; + *(_BYTE *)v118 = v120; + v76 = v130; + v128 = v70; + goto LABEL_167; + } + } + if ( v73 < 0 || !(a5 | v73) && (*(_BYTE *)a3 & 1) == 0 ) + break; + v34 = (int *)((char *)v118 + 1); + if ( v72 > 0 && v124 != 2 ) + { + v130 = v71; + v32 = v134; + if ( v123 == 9 ) + goto LABEL_259; + v109 = 32; + v76 = v130; + v128 = v70; + *(_BYTE *)v118 = v123 + 49; + goto LABEL_167; + } + *(_BYTE *)v118 = v120; + if ( v142[0] == v111 ) + { + v76 = v71; + v128 = v70; + v32 = v134; + goto LABEL_180; + } + v13 = __multadd_D2A(v13, 10, 0); + if ( v71 == v70 ) + { + v71 = __multadd_D2A(v71, 10, 0); + v70 = v71; + } + else + { + v71 = __multadd_D2A(v71, 10, 0); + v70 = __multadd_D2A(v70, 10, 0); + } + ++v142[0]; + v118 = (int *)((char *)v118 + 1); + } + v130 = v71; + v32 = v134; + v34 = (int *)((char *)v118 + 1); + if ( v124 ) + { + if ( v13[4] <= 1 && !v13[5] ) + { + if ( v72 <= 0 ) + { + v76 = v130; + v128 = v70; + goto LABEL_257; + } +LABEL_252: + v13 = __lshift_D2A(v13, 1); + v103 = __cmp_D2A((int)v13, (int)v106); + if ( v103 <= 0 && (v103 || (v120 & 1) == 0) ) + { + v124 = 32; + goto LABEL_255; + } + if ( v123 != 9 ) + { + v124 = 32; + LOBYTE(v120) = v123 + 49; + goto LABEL_255; + } +LABEL_259: + v76 = v130; + v128 = v70; + *(_BYTE *)v118 = 57; + v81 = 57; + goto LABEL_190; + } + if ( v124 != 2 ) + { + v99 = (int *)((char *)v118 + 1); + while ( __cmp_D2A((int)v106, (int)v70) > 0 ) + { + *((_BYTE *)v99 - 1) = v120; + v100 = __multadd_D2A(v70, 10, 0); + if ( v130 == v70 ) + v130 = v100; + v110 = v100; + v13 = __multadd_D2A(v13, 10, 0); + v118 = v99; + v99 = (int *)((char *)v99 + 1); + v120 = __quorem_D2A((int)v13, (int)v106) + 48; + v70 = v110; + } + v34 = v99; + v32 = v134; + if ( v120 != 57 ) + { + v76 = v130; + v109 = 32; + LOBYTE(v120) = v120 + 1; + v128 = v70; + goto LABEL_257; + } + goto LABEL_259; + } +LABEL_256: + v76 = v130; + v109 = 16; + v128 = v70; + goto LABEL_257; + } + if ( v72 > 0 ) + goto LABEL_252; +LABEL_255: + if ( v13[4] > 1 ) + goto LABEL_256; + v76 = v130; + v128 = v70; + if ( v13[5] ) + v109 = 16; + else + v109 = v124; +LABEL_257: + *(_BYTE *)v118 = v120; + goto LABEL_167; + } + } + else + { + v117 = 0; + if ( !v59 || a1[1] + 1 >= a2 ) + { +LABEL_121: + v60 = 31; + if ( !v119 ) + goto LABEL_122; + goto LABEL_136; + } + } + ++v131; + ++v122; + v117 = 1; + goto LABEL_121; + } + v124 = 3 - v124; +LABEL_72: + if ( !v38 || v126 | v124 ) + goto LABEL_97; + v39 = v115; + v142[0] = 0; + if ( !v136 || v39 >= 1.0 ) + { + v40 = v39 + v39 + 7.0; + LODWORD(v125) = LODWORD(v40); + HIDWORD(v125) = HIDWORD(v40) - 54525952; + if ( v111 ) + { + v140 = 0; + v138 = v111; + goto LABEL_78; + } +LABEL_94: + v53 = v39 - 5.0; + if ( v53 > v125 ) + { + v126 = 2; + v106 = 0; + v128 = 0; + goto LABEL_104; + } + if ( -v125 > v53 ) + { +LABEL_132: + v106 = 0; + v34 = v32; + v128 = 0; + goto LABEL_133; + } + goto LABEL_96; + } + if ( !v111 ) + { + v52 = v39 + v39 + 7.0; + LODWORD(v125) = LODWORD(v52); + HIDWORD(v125) = HIDWORD(v52) - 54525952; + goto LABEL_94; + } + if ( v139 <= 0 ) + { +LABEL_96: + v124 = 0; + goto LABEL_97; + } + v39 = v39 * 10.0; + v138 = v139; + v140 = -1; + v95 = v39 * 3.0 + 7.0; + LODWORD(v125) = LODWORD(v95); + HIDWORD(v125) = HIDWORD(v95) - 54525952; +LABEL_78: + v41 = v125; + v42 = dbl_4EFE18[v138]; + if ( !v135 ) + { + v86 = v41 * v42; + v141 = v20; + v34 = v32; + v87 = 0; + v142[0] = 1; + v88 = v39; + while ( 1 ) + { + v89 = (int)v88; + if ( (int)v88 ) + { + v87 = v38; + v88 = v88 - (long double)(int)v88; + } + v34 = (int *)((char *)v34 + 1); + v49 = v89 + 48; + *((_BYTE *)v34 - 1) = v49; + if ( v142[0] == v138 ) + break; + v88 = v88 * 10.0; + v87 = v38; + ++v142[0]; + } + v90 = v87; + v20 = v141; + if ( v90 ) + { + v94 = v86; + v92 = v88; + v93 = v94; + } + else + { + v91 = v86; + v92 = v39; + v93 = v91; + } + if ( v92 > v93 + 0.5 ) + { + v126 = v140 + 1; + goto LABEL_87; + } + if ( 0.5 - v93 > v92 ) + { + v126 = v140 + 1; + if ( v92 == 0.0 ) + v109 = 0; + else +LABEL_241: + v109 = 16; + while ( v49 == 48 ) + { + v49 = *((_BYTE *)v34 - 2); + v34 = (int *)((char *)v34 - 1); + } + goto LABEL_57; + } + goto LABEL_96; + } + v34 = (int *)((char *)v32 + 1); + *(_BYTE *)v32 = (int)v39 + 48; + v43 = 0.5 / v42 - v41; + v44 = v39 - (long double)(int)v39; + if ( v43 <= v44 ) + { + do + { + v48 = v43; + if ( v43 > 1.0 - v44 ) + { + v49 = *((_BYTE *)v34 - 1); + v126 = v140 + 1; + goto LABEL_87; + } + if ( (int)++v142[0] >= v138 ) + goto LABEL_96; + v34 = (int *)((char *)v34 + 1); + v45 = v44 * 10.0; + v46 = (int)v45; + v47 = v45 - (long double)(int)v45; + v43 = v48 * 10.0; + v44 = v47; + *((_BYTE *)v34 - 1) = v46 + 48; + } + while ( v43 <= v47 ); + } + v126 = v140 + 1; + if ( v44 == 0.0 ) + v109 = 0; + else + v109 = 16; +LABEL_57: + __Bfree_D2A((unsigned int)v13); + *(_BYTE *)v34 = 0; + *a7 = v126; + if ( a8 ) + *a8 = v34; + *a4 |= v109; + return v32; +} +// 4EFE18: using guessed type double dbl_4EFE18[]; +// 4EFE20: using guessed type double __tens_D2A[24]; +// 4F0329: using guessed type void **off_4F0329; +// 434F60: using guessed type unsigned int var_20[8]; + +//----- (004365D0) -------------------------------------------------------- +int *__cdecl __rv_alloc_D2A(unsigned int a1) +{ + int v1; // ebx + int v2; // eax + int *v3; // eax + + v1 = 0; + if ( a1 > 0x13 ) + { + v2 = 4; + do + { + v2 *= 2; + ++v1; + } + while ( v2 + 16 <= a1 ); + } + v3 = __Balloc_D2A(v1); + *v3 = v1; + return v3 + 1; +} + +//----- (00436610) -------------------------------------------------------- +int *__cdecl __nrv_alloc_D2A(char *a1, _DWORD *a2, unsigned int a3) +{ + int v3; // eax + int v4; // edi + int *v5; // eax + char *v6; // edx + char v7; // cl + int *v8; // edi + _BYTE *v9; // eax + char v10; // cl + + if ( a3 <= 0x13 ) + { + v4 = 0; + } + else + { + v3 = 4; + v4 = 0; + do + { + v3 *= 2; + ++v4; + } + while ( v3 + 16 <= a3 ); + } + v5 = __Balloc_D2A(v4); + v6 = a1 + 1; + *v5 = v4; + v7 = *a1; + v8 = v5 + 1; + *((_BYTE *)v5 + 4) = *a1; + v9 = v5 + 1; + if ( v7 ) + { + do + { + v10 = *v6; + ++v9; + ++v6; + *v9 = v10; + } + while ( v10 ); + } + if ( a2 ) + *a2 = v9; + return v8; +} + +//----- (00436690) -------------------------------------------------------- +void __cdecl __freedtoa(_DWORD *a1) +{ + int v1; // ecx + + v1 = *(a1 - 1); + *a1 = v1; + a1[1] = 1 << v1; + __Bfree_D2A((unsigned int)(a1 - 1)); +} + +//----- (004366B0) -------------------------------------------------------- +unsigned int __cdecl __quorem_D2A(int a1, int a2) +{ + int v2; // ebx + unsigned int result; // eax + unsigned int *v4; // esi + unsigned int v5; // edi + int v6; // eax + __int64 v7; // kr00_8 + __int64 v8; // rcx + int v9; // ecx + unsigned int *v10; // ebp + __int64 v11; // rcx + __int64 v12; // rax + _DWORD *v13; // edx + unsigned int v14; // eax + int v15; // edx + unsigned int v16; // [esp+1Ch] [ebp-50h] + __int64 v17; // [esp+20h] [ebp-4Ch] + __int64 v18; // [esp+30h] [ebp-3Ch] + _DWORD *v19; // [esp+38h] [ebp-34h] + int v20; // [esp+3Ch] [ebp-30h] + unsigned int v21; // [esp+40h] [ebp-2Ch] + unsigned int v22; // [esp+44h] [ebp-28h] + int v23; // [esp+48h] [ebp-24h] + _DWORD *v24; // [esp+4Ch] [ebp-20h] + + v2 = *(_DWORD *)(a2 + 16); + result = 0; + v23 = v2; + if ( *(_DWORD *)(a1 + 16) >= v2 ) + { + v4 = (unsigned int *)(a1 + 20); + v22 = a1 + 20; + v5 = a2 + 20; + v20 = v2 - 1; + v6 = 4 * (v2 - 1); + v16 = a2 + 20; + v24 = (_DWORD *)(a1 + 20 + v6); + v19 = (_DWORD *)(a2 + 20 + v6); + v21 = *v24 / (unsigned int)(*v19 + 1); + if ( *v24 >= (unsigned int)(*v19 + 1) ) + { + v18 = 0LL; + v17 = 0LL; + do + { + v5 += 4; + v7 = v18 + *(unsigned int *)(v5 - 4) * (unsigned __int64)v21; + v18 = HIDWORD(v7); + v8 = *v4++ - (v17 + (unsigned int)v7); + *(v4 - 1) = v8; + v17 = BYTE4(v8) & 1; + } + while ( (unsigned int)v19 >= v5 ); + if ( !*v24 ) + { + if ( v22 < (unsigned int)(v24 - 1) ) + { + v9 = v20; + do + { + if ( v24[v9 - v23] ) + break; + --v9; + } + while ( v23 - 2 - ((unsigned int)(v6 - 5) >> 2) != v9 ); + v20 = v9; + } + *(_DWORD *)(a1 + 16) = v20; + } + } + if ( __cmp_D2A(a1, a2) >= 0 ) + { + v10 = (unsigned int *)(a1 + 20); + v11 = 0LL; + ++v21; + do + { + v16 += 4; + v12 = *v10++ - (v11 + *(unsigned int *)(v16 - 4)); + *(v10 - 1) = v12; + v11 = BYTE4(v12) & 1; + } + while ( (unsigned int)v19 >= v16 ); + v13 = (_DWORD *)(v22 + 4 * v20); + if ( !*v13 ) + { + if ( v22 < (unsigned int)(v13 - 1) ) + { + v14 = v20 - 1 - (((unsigned int)v13 - a1 - 25) >> 2); + v15 = v20; + do + { + if ( *(_DWORD *)(v22 + 4 * v15 - 4) ) + break; + --v15; + } + while ( v15 != v14 ); + v20 = v15; + } + *(_DWORD *)(a1 + 16) = v20; + } + } + return v21; + } + return result; +} + +//----- (00436B50) -------------------------------------------------------- +int __cdecl __gthr_win32_once(__gthread_once_t *once, void (*func)(void)) +{ + if ( !once || !func ) + return 22; + if ( once->done ) + return 0; + if ( InterlockedIncrement(&once->started) ) + { + while ( !once->done ) + Sleep(0); + return 0; + } + func(); + once->done = 1; + return 0; +} + +//----- (00436BD0) -------------------------------------------------------- +int __cdecl __gthr_win32_key_create(__gthread_key_t *key, void (*dtor)(void *)) +{ + DWORD v2; // eax + + v2 = TlsAlloc(); + if ( v2 == -1 ) + return GetLastError(); + *key = v2; + return __mingwthr_key_dtor(v2, (int)dtor); +} + +//----- (00436C10) -------------------------------------------------------- +int __cdecl __gthr_win32_key_delete(__gthread_key_t key) +{ + if ( TlsFree(key) ) + return 0; + else + return GetLastError(); +} + +//----- (00436C40) -------------------------------------------------------- +void *__cdecl __gthr_win32_getspecific(__gthread_key_t key) +{ + DWORD LastError; // esi + void *Value; // ebx + + LastError = GetLastError(); + Value = TlsGetValue(key); + SetLastError(LastError); + return Value; +} + +//----- (00436C70) -------------------------------------------------------- +int __cdecl __gthr_win32_setspecific(__gthread_key_t key, const void *ptr) +{ + if ( TlsSetValue(key, (LPVOID)ptr) ) + return 0; + else + return GetLastError(); +} + +//----- (00436CA0) -------------------------------------------------------- +void __cdecl __gthr_win32_mutex_init_function(__gthread_mutex_t *mutex) +{ + mutex->counter = -1; + mutex->sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); +} + +//----- (00436CE0) -------------------------------------------------------- +void __cdecl __gthr_win32_mutex_destroy(__gthread_mutex_t *mutex) +{ + CloseHandle(mutex->sema); +} + +//----- (00436D00) -------------------------------------------------------- +int __cdecl __gthr_win32_mutex_lock(__gthread_mutex_t *mutex) +{ + if ( !InterlockedIncrement(&mutex->counter) || !WaitForSingleObject(mutex->sema, 0xFFFFFFFF) ) + return 0; + InterlockedDecrement(&mutex->counter); + return 1; +} + +//----- (00436D50) -------------------------------------------------------- +int __cdecl __gthr_win32_mutex_trylock(__gthread_mutex_t *mutex) +{ + return _InterlockedCompareExchange(&mutex->counter, 0, -1) >= 0; +} + +//----- (00436D70) -------------------------------------------------------- +int __cdecl __gthr_win32_mutex_unlock(__gthread_mutex_t *mutex) +{ + LONG v1; // edx + int result; // eax + + v1 = InterlockedDecrement(&mutex->counter); + result = 0; + if ( v1 >= 0 ) + return !ReleaseSemaphore(mutex->sema, 1, 0); + return result; +} + +//----- (00436DC0) -------------------------------------------------------- +void __cdecl __gthr_win32_recursive_mutex_init_function(__gthread_recursive_mutex_t *mutex) +{ + mutex->counter = -1; + mutex->depth = 0; + mutex->owner = 0; + mutex->sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); +} + +//----- (00436E10) -------------------------------------------------------- +int __cdecl __gthr_win32_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex) +{ + unsigned int CurrentThreadId; // esi + int result; // eax + + CurrentThreadId = GetCurrentThreadId(); + result = InterlockedIncrement(&mutex->counter); + if ( !result ) + goto LABEL_4; + if ( mutex->owner == CurrentThreadId ) + { + InterlockedDecrement(&mutex->counter); + ++mutex->depth; + return 0; + } + else + { + result = WaitForSingleObject(mutex->sema, 0xFFFFFFFF); + if ( !result ) + { +LABEL_4: + mutex->depth = 1; + mutex->owner = CurrentThreadId; + return result; + } + InterlockedDecrement(&mutex->counter); + return 1; + } +} + +//----- (00436EA0) -------------------------------------------------------- +int __cdecl __gthr_win32_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex) +{ + unsigned int CurrentThreadId; // edx + int result; // eax + + CurrentThreadId = GetCurrentThreadId(); + if ( _InterlockedCompareExchange(&mutex->counter, 0, -1) < 0 ) + { + mutex->depth = 1; + result = 0; + mutex->owner = CurrentThreadId; + } + else + { + result = 1; + if ( mutex->owner == CurrentThreadId ) + { + ++mutex->depth; + return 0; + } + } + return result; +} + +//----- (00436EF0) -------------------------------------------------------- +int __cdecl __gthr_win32_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex) +{ + bool v1; // zf + + v1 = mutex->depth-- == 1; + if ( v1 && (mutex->owner = 0, InterlockedDecrement(&mutex->counter) >= 0) ) + return !ReleaseSemaphore(mutex->sema, 1, 0); + else + return 0; +} + +//----- (00436F50) -------------------------------------------------------- +int __cdecl __gthr_win32_recursive_mutex_destroy(__gthread_recursive_mutex_t *mutex) +{ + CloseHandle(mutex->sema); + return 0; +} + +//----- (00436F70) -------------------------------------------------------- +char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4) +{ + int v6; // edx + char *result; // eax + _DWORD *v8; // eax + int v9; // edx + int v10; // ecx + int v11; // ebp + char v12; // dl + int v13; // edi + unsigned int v14; // ecx + int v15; // ebp + char v16; // dl + int v17; // edi + char v18; // di + + if ( a1 == 80 ) + { + v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); + v9 = *v8; + result = (char *)(v8 + 1); + *a4 = v9; + } + else + { + switch ( a1 & 0xF ) + { + case 0: + case 3: + case 0xB: + v6 = *a3; + result = (char *)(a3 + 1); + goto LABEL_4; + case 1: + result = (char *)a3; + v10 = 0; + v11 = 0; + do + { + v12 = *result++; + v13 = (v12 & 0x7F) << v10; + v10 += 7; + v11 |= v13; + } + while ( v12 < 0 ); + v6 = v11; + goto LABEL_4; + case 2: + v6 = *(unsigned __int16 *)a3; + result = (char *)a3 + 2; + goto LABEL_4; + case 4: + case 0xC: + v6 = *a3; + result = (char *)(a3 + 2); + goto LABEL_4; + case 9: + result = (char *)a3; + v14 = 0; + v15 = 0; + do + { + v16 = *result++; + v17 = (v16 & 0x7F) << v14; + v14 += 7; + v15 |= v17; + } + while ( v16 < 0 ); + v18 = v16; + v6 = v15; + if ( v14 > 0x1F || (v18 & 0x40) == 0 ) + goto LABEL_4; + v6 = (-1 << v14) | v15; + goto LABEL_5; + case 0xA: + v6 = *(__int16 *)a3; + result = (char *)a3 + 2; +LABEL_4: + if ( !v6 ) + goto LABEL_8; +LABEL_5: + if ( (a1 & 0x70) == 16 ) + a2 = a3; + v6 += (int)a2; + if ( a1 < 0 ) + *a4 = *(_DWORD *)v6; + else +LABEL_8: + *a4 = v6; + break; + default: + abort(); + } + } + return result; +} + +//----- (004370B0) -------------------------------------------------------- +int __usercall base_of_encoded_value@(char a1@, _DWORD *a2@) +{ + unsigned __int8 v2; // cl + + if ( a1 == -1 ) + return 0; + v2 = a1 & 0x70; + if ( (a1 & 0x70) != 48 ) + { + if ( v2 > 0x30u ) + { + if ( v2 == 64 ) + return a2[23]; + if ( v2 == 80 ) + return 0; + } + else + { + if ( v2 == 32 ) + return a2[21]; + if ( v2 <= 0x20u && (a1 & 0x60) == 0 ) + return 0; + } + base_of_encoded_value_cold(); + } + return a2[22]; +} + +//----- (00437120) -------------------------------------------------------- +unsigned int __usercall execute_cfa_program@( + int *a1@, + unsigned int a2@, + _DWORD *a3@, + unsigned int a4) +{ + unsigned int result; // eax + unsigned int v6; // edx + int *encoded_value_with_base; // ebx + char v8; // cl + unsigned int v9; // eax + int v10; // ecx + char v11; // si + int v12; // edx + int v13; // edi + int v14; // ecx + unsigned int v15; // esi + char v16; // al + int v17; // edx + int v18; // edi + int v19; // ecx + char v20; // si + int v21; // edx + unsigned int v22; // eax + int v23; // ecx + char v24; // si + int v25; // edx + int **v26; // eax + int v27; // esi + int v28; // ecx + char v29; // dl + unsigned int v30; // eax + int v31; // ecx + char v32; // si + int v33; // edx + int v34; // edi + unsigned int v35; // ecx + unsigned int v36; // esi + char v37; // al + int v38; // edx + unsigned int v39; // edx + char v40; // si + unsigned int v41; // esi + int v42; // edi + unsigned int v43; // eax + int v44; // ecx + char v45; // si + int v46; // edx + int v47; // edi + int v48; // ecx + unsigned int v49; // esi + char v50; // al + int v51; // edx + int v52; // eax + unsigned int v53; // ecx + char v54; // si + int v55; // edx + int v56; // eax + int v57; // ecx + char v58; // si + int v59; // edx + int v60; // esi + unsigned int v61; // ecx + char v62; // dl + int v63; // eax + int v64; // esi + unsigned int v65; // eax + int v66; // ecx + char v67; // si + int v68; // edx + int v69; // edi + unsigned int v70; // ecx + unsigned int v71; // esi + char v72; // al + int v73; // edx + unsigned int v74; // edx + char v75; // si + unsigned int v76; // esi + int v77; // edi + unsigned int v78; // eax + int v79; // ecx + char v80; // si + int v81; // edx + int **v82; // eax + int v83; // esi + int v84; // ecx + char v85; // dl + int v86; // ecx + char v87; // si + int v88; // edx + int v89; // ecx + char v90; // si + int v91; // edx + int v92; // eax + int v93; // ecx + char v94; // si + int v95; // edx + int v96; // esi + int v97; // ecx + char v98; // dl + int v99; // eax + unsigned int v100; // eax + int v101; // ecx + char v102; // si + int v103; // edx + int v104; // edi + int v105; // ecx + unsigned int v106; // esi + char v107; // al + int v108; // edx + int v109; // ecx + char v110; // si + int v111; // edx + int v112; // ecx + char v113; // si + int v114; // edx + int v115; // ecx + char v116; // si + int v117; // edx + unsigned int v118; // eax + int v119; // ecx + char v120; // si + int v121; // edx + int v122; // edi + int v123; // ecx + unsigned int v124; // esi + char v125; // al + int v126; // edx + int v127; // esi + int v128; // ecx + int v129; // edi + char v130; // dl + int v131; // eax + int v132; // esi + int v133; // esi + int v134; // ecx + char v135; // dl + char v136; // si + int *v137; // eax + int v138; // edi + void *v139; // esp + void *v140; // esp + int v141; // [esp-A0h] [ebp-E8h] BYREF + unsigned int v142; // [esp+10h] [ebp-38h] + unsigned int v143; // [esp+14h] [ebp-34h] + _DWORD *v144; // [esp+18h] [ebp-30h] + unsigned int v145; // [esp+1Ch] [ebp-2Ch] + unsigned int v146[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + result = a4; + v143 = a2; + v144 = a3; + *(_DWORD *)(a4 + 144) = 0; + v142 = 0; + if ( (unsigned int)a1 < a2 ) + { + while ( 1 ) + { + v6 = *(_DWORD *)(a4 + 164); + v145 = v144[24]; + result = v144[19] + (v145 >> 31); + if ( v6 >= result ) + break; + result = *(unsigned __int8 *)a1; + encoded_value_with_base = (int *)((char *)a1 + 1); + v8 = *(_BYTE *)a1 & 0xC0; + switch ( v8 ) + { + case 64: + result = *(_DWORD *)(a4 + 176) * (result & 0x3F); + *(_DWORD *)(a4 + 164) = result + v6; + break; + case -128: + v127 = 0; + v128 = 0; + v129 = result & 0x3F; + LOBYTE(v145) = result & 0x3F; + do + { + v130 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v131 = (v130 & 0x7F) << v128; + v128 += 7; + v127 |= v131; + } + while ( v130 < 0 ); + result = a4; + v132 = *(_DWORD *)(a4 + 172) * v127; + if ( (unsigned __int8)v145 <= 0x11u ) + { + result = a4 + 8 * v129; + *(_DWORD *)(result + 4) = 1; + *(_DWORD *)result = v132; + } + break; + case -64: + result &= 0x3Fu; + if ( (*(_BYTE *)a1 & 0x3Fu) <= 0x11 ) +LABEL_108: + *(_DWORD *)(a4 + 8 * result + 4) = 0; + break; + default: + switch ( (char)result ) + { + case 0: + case 45: + goto LABEL_13; + case 1: + v136 = *(_BYTE *)(a4 + 184); + v137 = (int *)base_of_encoded_value(v136, v144); + encoded_value_with_base = (int *)read_encoded_value_with_base( + v136, + v137, + encoded_value_with_base, + (int *)v146); + result = v146[0]; + *(_DWORD *)(a4 + 164) = v146[0]; + goto LABEL_13; + case 2: + encoded_value_with_base = (int *)((char *)a1 + 2); + result = *(_DWORD *)(a4 + 176) * *((unsigned __int8 *)a1 + 1); + *(_DWORD *)(a4 + 164) = result + v6; + goto LABEL_13; + case 3: + encoded_value_with_base = (int *)((char *)a1 + 3); + result = *(_DWORD *)(a4 + 176) * *(unsigned __int16 *)((char *)a1 + 1); + *(_DWORD *)(a4 + 164) = result + v6; + goto LABEL_13; + case 4: + encoded_value_with_base = (int *)((char *)a1 + 5); + result = a4; + *(_DWORD *)(a4 + 164) = *(int *)((char *)a1 + 1) * *(_DWORD *)(a4 + 176) + v6; + goto LABEL_13; + case 5: + v118 = 0; + v119 = 0; + do + { + v120 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v121 = (v120 & 0x7F) << v119; + v119 += 7; + v118 |= v121; + } + while ( v120 < 0 ); + v122 = 0; + v123 = 0; + v124 = v118; + do + { + v125 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v126 = (v125 & 0x7F) << v123; + v123 += 7; + v122 |= v126; + } + while ( v125 < 0 ); + result = v124; + v76 = a4; + v77 = *(_DWORD *)(a4 + 172) * v122; + if ( result <= 0x11 ) + goto LABEL_105; + goto LABEL_13; + case 6: + result = 0; + v115 = 0; + do + { + v116 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v117 = (v116 & 0x7F) << v115; + v115 += 7; + result |= v117; + } + while ( v116 < 0 ); + if ( result > 0x11 ) + goto LABEL_13; + goto LABEL_108; + case 7: + result = 0; + v112 = 0; + do + { + v113 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v114 = (v113 & 0x7F) << v112; + v112 += 7; + result |= v114; + } + while ( v113 < 0 ); + if ( result <= 0x11 ) + *(_DWORD *)(a4 + 8 * result + 4) = 6; + goto LABEL_13; + case 8: + result = 0; + v109 = 0; + do + { + v110 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v111 = (v110 & 0x7F) << v109; + v109 += 7; + result |= v111; + } + while ( v110 < 0 ); + if ( result > 0x11 ) + goto LABEL_13; + goto LABEL_108; + case 9: + v100 = 0; + v101 = 0; + do + { + v102 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v103 = (v102 & 0x7F) << v101; + v101 += 7; + v100 |= v103; + } + while ( v102 < 0 ); + v104 = 0; + v105 = 0; + v106 = v100; + do + { + v107 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v108 = (v107 & 0x7F) << v105; + v105 += 7; + v104 |= v108; + } + while ( v107 < 0 ); + result = v106; + if ( v106 <= 0x11 ) + { + result = a4 + 8 * v106; + *(_DWORD *)(result + 4) = 2; + *(_DWORD *)result = v104; + } + goto LABEL_13; + case 10: + result = v142; + if ( v142 ) + { + v142 = *(_DWORD *)(v142 + 144); + } + else + { + v139 = alloca(176); + v140 = alloca(176); + result = (unsigned int)&v141; + } + qmemcpy((void *)result, (const void *)a4, 0xA4u); + *(_DWORD *)(a4 + 144) = result; + goto LABEL_13; + case 11: + result = *(_DWORD *)(a4 + 144); + qmemcpy((void *)a4, (const void *)result, 0xA4u); + v138 = v142; + v142 = result; + *(_DWORD *)(result + 144) = v138; + goto LABEL_13; + case 12: + v92 = 0; + v93 = 0; + do + { + v94 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v95 = (v94 & 0x7F) << v93; + v93 += 7; + v92 |= v95; + } + while ( v94 < 0 ); + v96 = 0; + v97 = 0; + *(_DWORD *)(a4 + 152) = v92; + do + { + v98 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v99 = (v98 & 0x7F) << v97; + v97 += 7; + v96 |= v99; + } + while ( v98 < 0 ); + result = a4; + *(_DWORD *)(a4 + 148) = v96; + *(_DWORD *)(a4 + 160) = 1; + goto LABEL_13; + case 13: + result = 0; + v89 = 0; + do + { + v90 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v91 = (v90 & 0x7F) << v89; + v89 += 7; + result |= v91; + } + while ( v90 < 0 ); + *(_DWORD *)(a4 + 152) = result; + *(_DWORD *)(a4 + 160) = 1; + goto LABEL_13; + case 14: + result = 0; + v86 = 0; + do + { + v87 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v88 = (v87 & 0x7F) << v86; + v86 += 7; + result |= v88; + } + while ( v87 < 0 ); + *(_DWORD *)(a4 + 148) = result; + goto LABEL_13; + case 15: + v133 = 0; + v134 = 0; + *(_DWORD *)(a4 + 156) = encoded_value_with_base; + *(_DWORD *)(a4 + 160) = 2; + do + { + v135 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + result = (v135 & 0x7F) << v134; + v134 += 7; + v133 |= result; + } + while ( v135 < 0 ); + encoded_value_with_base = (int *)((char *)encoded_value_with_base + v133); + goto LABEL_13; + case 16: + v78 = 0; + v79 = 0; + do + { + v80 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v81 = (v80 & 0x7F) << v79; + v79 += 7; + v78 |= v81; + } + while ( v80 < 0 ); + if ( v78 <= 0x11 ) + { + v82 = (int **)(a4 + 8 * v78); + v82[1] = (int *)3; + *v82 = encoded_value_with_base; + } + v83 = 0; + v84 = 0; + do + { + v85 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + result = (v85 & 0x7F) << v84; + v84 += 7; + v83 |= result; + } + while ( v85 < 0 ); + encoded_value_with_base = (int *)((char *)encoded_value_with_base + v83); + goto LABEL_13; + case 17: + v65 = 0; + v66 = 0; + do + { + v67 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v68 = (v67 & 0x7F) << v66; + v66 += 7; + v65 |= v68; + } + while ( v67 < 0 ); + v69 = 0; + v70 = 0; + v71 = v65; + do + { + v72 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v73 = (v72 & 0x7F) << v70; + v70 += 7; + v69 |= v73; + } + while ( v72 < 0 ); + v74 = v71; + v75 = v72; + result = v74; + if ( v70 <= 0x1F && (v75 & 0x40) != 0 ) + v69 |= -(1 << v70); + v76 = a4; + v77 = *(_DWORD *)(a4 + 172) * v69; + if ( v74 > 0x11 ) + goto LABEL_13; +LABEL_105: + result = v76 + 8 * result; + *(_DWORD *)(result + 4) = 1; + *(_DWORD *)result = v77; + goto LABEL_13; + case 18: + v56 = 0; + v57 = 0; + do + { + v58 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v59 = (v58 & 0x7F) << v57; + v57 += 7; + v56 |= v59; + } + while ( v58 < 0 ); + v60 = 0; + v61 = 0; + *(_DWORD *)(a4 + 152) = v56; + do + { + v62 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v63 = (v62 & 0x7F) << v61; + v61 += 7; + v60 |= v63; + } + while ( v62 < 0 ); + if ( v61 <= 0x1F && (v62 & 0x40) != 0 ) + v60 |= -(1 << v61); + result = a4; + v64 = *(_DWORD *)(a4 + 172) * v60; + *(_DWORD *)(a4 + 160) = 1; + *(_DWORD *)(a4 + 148) = v64; + goto LABEL_13; + case 19: + v52 = 0; + v53 = 0; + do + { + v54 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v55 = (v54 & 0x7F) << v53; + v53 += 7; + v52 |= v55; + } + while ( v54 < 0 ); + if ( v53 <= 0x1F && (v54 & 0x40) != 0 ) + v52 |= -(1 << v53); + result = *(_DWORD *)(a4 + 172) * v52; + *(_DWORD *)(a4 + 148) = result; + goto LABEL_13; + case 20: + v43 = 0; + v44 = 0; + do + { + v45 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v46 = (v45 & 0x7F) << v44; + v44 += 7; + v43 |= v46; + } + while ( v45 < 0 ); + v47 = 0; + v48 = 0; + v49 = v43; + do + { + v50 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v51 = (v50 & 0x7F) << v48; + v48 += 7; + v47 |= v51; + } + while ( v50 < 0 ); + result = v49; + v41 = a4; + v42 = *(_DWORD *)(a4 + 172) * v47; + if ( result <= 0x11 ) + goto LABEL_40; + goto LABEL_13; + case 21: + v30 = 0; + v31 = 0; + do + { + v32 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v33 = (v32 & 0x7F) << v31; + v31 += 7; + v30 |= v33; + } + while ( v32 < 0 ); + v34 = 0; + v35 = 0; + v36 = v30; + do + { + v37 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v38 = (v37 & 0x7F) << v35; + v35 += 7; + v34 |= v38; + } + while ( v37 < 0 ); + v39 = v36; + v40 = v37; + result = v39; + if ( v35 <= 0x1F && (v40 & 0x40) != 0 ) + v34 |= -(1 << v35); + v41 = a4; + v42 = *(_DWORD *)(a4 + 172) * v34; + if ( v39 > 0x11 ) + goto LABEL_13; +LABEL_40: + result = v41 + 8 * result; + *(_DWORD *)(result + 4) = 4; + *(_DWORD *)result = v42; + goto LABEL_13; + case 22: + v22 = 0; + v23 = 0; + do + { + v24 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v25 = (v24 & 0x7F) << v23; + v23 += 7; + v22 |= v25; + } + while ( v24 < 0 ); + if ( v22 <= 0x11 ) + { + v26 = (int **)(a4 + 8 * v22); + v26[1] = (int *)5; + *v26 = encoded_value_with_base; + } + v27 = 0; + v28 = 0; + do + { + v29 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + result = (v29 & 0x7F) << v28; + v28 += 7; + v27 |= result; + } + while ( v29 < 0 ); + encoded_value_with_base = (int *)((char *)encoded_value_with_base + v27); + goto LABEL_13; + case 46: + result = 0; + v19 = 0; + do + { + v20 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v21 = (v20 & 0x7F) << v19; + v19 += 7; + result |= v21; + } + while ( v20 < 0 ); + v144[26] = result; + if ( v143 <= (unsigned int)encoded_value_with_base ) + return result; + goto LABEL_14; + case 47: + v9 = 0; + v10 = 0; + do + { + v11 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v12 = (v11 & 0x7F) << v10; + v10 += 7; + v9 |= v12; + } + while ( v11 < 0 ); + v13 = 0; + v14 = 0; + v15 = v9; + do + { + v16 = *(_BYTE *)encoded_value_with_base; + encoded_value_with_base = (int *)((char *)encoded_value_with_base + 1); + v17 = (v16 & 0x7F) << v14; + v14 += 7; + v13 |= v17; + } + while ( v16 < 0 ); + result = v15; + v18 = *(_DWORD *)(a4 + 172) * v13; + if ( v15 <= 0x11 ) + { + result = a4 + 8 * v15; + *(_DWORD *)(result + 4) = 1; + *(_DWORD *)result = -v18; + } + goto LABEL_13; + default: + abort(); + } + } +LABEL_13: + if ( v143 <= (unsigned int)encoded_value_with_base ) + break; +LABEL_14: + a1 = encoded_value_with_base; + } + } + return result; +} +// 437120: using guessed type unsigned int var_1C[7]; + +//----- (004378C0) -------------------------------------------------------- +void init_dwarf_reg_size_table() +{ + dwarf_reg_size_table[0] = 4; + dwarf_reg_size_table[2] = 4; + dwarf_reg_size_table[1] = 4; + dwarf_reg_size_table[3] = 4; + dwarf_reg_size_table[6] = 4; + dwarf_reg_size_table[7] = 4; + dwarf_reg_size_table[5] = 4; + dwarf_reg_size_table[4] = 4; + dwarf_reg_size_table[11] = 12; + dwarf_reg_size_table[12] = 12; + dwarf_reg_size_table[13] = 12; + dwarf_reg_size_table[14] = 12; + dwarf_reg_size_table[15] = 12; + dwarf_reg_size_table[16] = 12; + dwarf_reg_size_table[9] = 4; + dwarf_reg_size_table[8] = 4; +} + +//----- (00437940) -------------------------------------------------------- +int __usercall uw_frame_state_for@(dwarf_eh_bases *a1@, _DWORD *a2@) +{ + char *dbase; // edx + char *v5; // ebx + char v6; // dl + int v7; // edi + int v8; // ecx + int v9; // eax + unsigned int v10; // ecx + int v11; // edi + char *v12; // esi + char v13; // dl + int v14; // eax + int v15; // ecx + int v16; // edi + char v17; // dl + int v18; // eax + char v19; // al + char *encoded_value_with_base; // ecx + char *v21; // edi + char v22; // al + char v23; // al + unsigned __int8 v24; // al + int v25; // ebx + int *v26; // ebx + int v27; // edi + int v28; // ecx + char v29; // dl + int v30; // eax + int *v31; // edi + int result; // eax + int v33; // eax + char v34; // al + char v35; // bl + int *v36; // eax + char *v37; // edx + _DWORD *tbase; // ecx + char v39; // al + int *v40; // eax + int v41; // edi + int v42; // ecx + char v43; // dl + int v44; // eax + int *v45; // eax + int v46; // eax + int v47; // edx + int v48; // ecx + char v49; // al + const fde *FDE; // [esp+18h] [ebp-44h] + int v51; // [esp+1Ch] [ebp-40h] + char v52; // [esp+1Ch] [ebp-40h] + char *v53; // [esp+1Ch] [ebp-40h] + int v54; // [esp+20h] [ebp-3Ch] + unsigned __int8 v55; // [esp+24h] [ebp-38h] + int *v56; // [esp+24h] [ebp-38h] + unsigned int v57; // [esp+28h] [ebp-34h] + int v58[8]; // [esp+3Ch] [ebp-20h] BYREF + + memset(a2, 0, 0xC0u); + a1[8].func = 0; + a1[6].func = 0; + dbase = (char *)a1[6].dbase; + if ( !dbase ) + return 5; + FDE = _Unwind_Find_FDE(&dbase[((unsigned int)a1[8].tbase >> 31) - 1], a1 + 7); + if ( !FDE ) + { + v37 = (char *)a1[6].dbase; + tbase = a1[6].tbase; + v39 = *(v37 - 5); + if ( *(v37 - 2) == -1 && *(v37 - 1) == -48 && *v37 == -125 && v37[1] == -8 ) + goto LABEL_81; + if ( v39 == -24 ) + { + v49 = *v37; + if ( *(v37 - 4) == 104 && v49 == -61 ) + { +LABEL_81: + v46 = *(_DWORD *)(*tbase + 4); + goto LABEL_72; + } + if ( v49 == -125 ) + { + result = 5; + if ( v37[1] != -60 || v37[3] != -72 ) + return result; + v46 = tbase[14]; +LABEL_72: + v47 = *(_DWORD *)(v46 + 196); + a2[1] = 1; + a2[40] = 1; + a2[7] = 1; + a2[38] = 4; + a2[37] = v47 - (_DWORD)tbase; + *a2 = v46 + 176 - v47; + a2[3] = 1; + a2[6] = v46 + 164 - v47; + a2[5] = 1; + a2[2] = v46 + 172 - v47; + a2[13] = 1; + a2[4] = v46 + 168 - v47; + a2[15] = 1; + a2[12] = v46 + 160 - v47; + a2[11] = 1; + a2[14] = v46 + 156 - v47; + v48 = v46 + 180 - v47; + a2[17] = 1; + a2[16] = v46 + 184 - v47; + result = 0; + a2[10] = v48; + a2[45] = 8; + *((_BYTE *)a2 + 187) = 1; + return result; + } + } + else if ( v39 == -117 && *(v37 - 4) == 77 && *v37 == 100 ) + { + if ( v37[1] == -117 ) + { + v46 = tbase[2]; + goto LABEL_72; + } + return 5; + } + if ( *(v37 - 1) == -125 && *v37 == 9 && !v37[1] && v37[2] == 45 && !v37[3] && v37[4] == 16 && !v37[5] ) + { + a2[40] = 1; + result = 0; + a2[38] = 4; + a2[37] = 4; + a2[3] = 1; + a2[2] = -4; + a2[45] = 8; + a2[17] = 1; + a2[16] = 0; + *((_BYTE *)a2 + 187) = 1; + return result; + } + return 5; + } + a2[41] = a1[7].func; + v54 = (int)&FDE->CIE_delta - FDE->CIE_delta; + v51 = v54 + 9; + v5 = (char *)(v51 + strlen((const char *)v51) + 1); + if ( *(_BYTE *)(v54 + 9) == 101 && *(_BYTE *)(v54 + 10) == 104 ) + { + v33 = *(_DWORD *)v5; + v5 += 4; + a2[47] = v33; + v51 = v54 + 11; + } + v6 = *v5; + v55 = *(_BYTE *)(v54 + 8); + if ( v55 > 3u ) + { + if ( v6 != 4 || v5[1] ) + return 3; + v6 = v5[2]; + v5 += 2; + } + v7 = 0; + v8 = 0; + while ( 1 ) + { + ++v5; + v9 = (v6 & 0x7F) << v8; + v8 += 7; + v7 |= v9; + if ( v6 >= 0 ) + break; + v6 = *v5; + } + v57 = (unsigned int)a2; + v10 = 0; + a2[44] = v7; + v11 = 0; + do + { + v12 = v5; + v13 = *v5++; + v14 = (v13 & 0x7F) << v10; + v10 += 7; + v11 |= v14; + } + while ( v13 < 0 ); + if ( v10 <= 0x1F && (v13 & 0x40) != 0 ) + v11 |= -1 << v10; + v15 = 0; + *(_DWORD *)(v57 + 172) = v11; + v16 = 0; + if ( v55 == 1 ) + { + *(_DWORD *)(v57 + 180) = (unsigned __int8)*v5; + v5 = v12 + 2; + } + else + { + do + { + v17 = *v5++; + v18 = (v17 & 0x7F) << v15; + v15 += 7; + v16 |= v18; + } + while ( v17 < 0 ); + *(_DWORD *)(v57 + 180) = v16; + } + *(_BYTE *)(v57 + 185) = -1; + v19 = *(_BYTE *)v51; + if ( *(_BYTE *)v51 == 122 ) + { + v41 = 0; + v42 = 0; + do + { + v43 = *v5++; + v44 = (v43 & 0x7F) << v42; + v42 += 7; + v41 |= v44; + } + while ( v43 < 0 ); + *(_BYTE *)(v57 + 186) = 1; + v56 = (int *)&v5[v41]; + v19 = *(_BYTE *)(v51 + 1); + if ( !v19 ) + goto LABEL_27; + ++v51; + } + else + { + v56 = 0; + if ( !v19 ) + { + v56 = (int *)v5; + goto LABEL_27; + } + } + encoded_value_with_base = v5; + v21 = (char *)(v51 + 1); + do + { + while ( v19 == 76 ) + { + v22 = *encoded_value_with_base; + ++v21; + ++encoded_value_with_base; + *(_BYTE *)(v57 + 185) = v22; + v19 = *(v21 - 1); + if ( !v19 ) + goto LABEL_26; + } + switch ( v19 ) + { + case 'R': + v34 = *encoded_value_with_base++; + *(_BYTE *)(v57 + 184) = v34; + break; + case 'P': + v35 = *encoded_value_with_base; + v53 = encoded_value_with_base; + v36 = (int *)base_of_encoded_value(*encoded_value_with_base, a1); + encoded_value_with_base = read_encoded_value_with_base(v35, v36, (int *)(v53 + 1), v58); + *(_DWORD *)(v57 + 168) = v58[0]; + break; + case 'S': + *(_BYTE *)(v57 + 187) = 1; + break; + default: + goto LABEL_55; + } + v19 = *v21++; + } + while ( v19 ); +LABEL_26: + if ( !v56 ) + { + v56 = (int *)encoded_value_with_base; +LABEL_55: + if ( !v56 ) + return 3; + } +LABEL_27: + execute_cfa_program(v56, v54 + *(_DWORD *)v54 + 4, a1, v57); + v23 = *(_BYTE *)(v57 + 184); + if ( v23 == -1 ) + { + v25 = 8; + goto LABEL_33; + } + v24 = v23 & 7; + if ( v24 == 2 ) + { + v25 = 12; + goto LABEL_33; + } + if ( v24 <= 2u ) + { + if ( v24 ) + goto LABEL_90; +LABEL_46: + v25 = 16; + goto LABEL_33; + } + if ( v24 == 3 ) + goto LABEL_46; + if ( v24 != 4 ) +LABEL_90: + uw_frame_state_for_cold(); + v25 = 24; +LABEL_33: + v26 = (int *)((char *)FDE + v25); + v52 = *(_BYTE *)(v57 + 185); + if ( *(_BYTE *)(v57 + 186) ) + { + v27 = 0; + v28 = 0; + do + { + v29 = *(_BYTE *)v26; + v26 = (int *)((char *)v26 + 1); + v30 = (v29 & 0x7F) << v28; + v28 += 7; + v27 |= v30; + } + while ( v29 < 0 ); + v31 = (int *)((char *)v26 + v27); + if ( v52 != -1 ) + { + v45 = (int *)base_of_encoded_value(v52, a1); + read_encoded_value_with_base(v52, v45, v26, v58); + a1[6].func = (void *)v58[0]; + } + } + else + { + v31 = v26; + if ( v52 != -1 ) + { + v40 = (int *)base_of_encoded_value(v52, a1); + v31 = (int *)read_encoded_value_with_base(v52, v40, v26, v58); + a1[6].func = (void *)v58[0]; + } + } + execute_cfa_program(v31, (unsigned int)&FDE->CIE_delta + FDE->length, a1, v57); + return 0; +} + +//----- (00437FD0) -------------------------------------------------------- +int __usercall uw_install_context_1@(int a1@, int a2@) +{ + int v2; // eax + int v3; // eax + _DWORD *v4; // ecx + _BYTE *v5; // esi + int v6; // ebp + int result; // eax + _DWORD *v8; // eax + int v10; // [esp+1Ch] [ebp-20h] BYREF + + v2 = *(_DWORD *)(a2 + 96); + if ( ((v2 & 0x40000000) == 0 || !*(_BYTE *)(a2 + 112)) && !*(_DWORD *)(a2 + 16) ) + { + if ( dwarf_reg_size_table[4] != 4 ) + goto LABEL_32; + v10 = *(_DWORD *)(a2 + 72); + if ( (v2 & 0x40000000) != 0 ) + *(_BYTE *)(a2 + 112) = 0; + *(_DWORD *)(a2 + 16) = &v10; + } + v3 = 0; + do + { + while ( 1 ) + { + v4 = *(_DWORD **)(a1 + 4 * v3); + v5 = *(_BYTE **)(a2 + 4 * v3); + if ( *(_BYTE *)(a1 + v3 + 108) ) + goto LABEL_32; + if ( *(_BYTE *)(a2 + v3 + 108) ) + { + if ( v4 ) + { + if ( dwarf_reg_size_table[v3] != 4 ) + goto LABEL_32; + *v4 = v5; + } + goto LABEL_8; + } + if ( v4 != 0 && v5 != 0 && v4 != (_DWORD *)v5 ) + break; +LABEL_8: + if ( ++v3 == 17 ) + goto LABEL_18; + } + v6 = dwarf_reg_size_table[v3]; + if ( (unsigned __int8)v6 <= 3u ) + { + if ( dwarf_reg_size_table[v3] ) + { + *(_BYTE *)v4 = *v5; + if ( (v6 & 2) != 0 ) + *(_WORD *)((char *)v4 + v6 - 2) = *(_WORD *)&v5[v6 - 2]; + } + goto LABEL_8; + } + ++v3; + *v4 = *(_DWORD *)v5; + *(_DWORD *)((char *)v4 + v6 - 4) = *(_DWORD *)&v5[v6 - 4]; + qmemcpy( + (void *)((unsigned int)(v4 + 1) & 0xFFFFFFFC), + (const void *)(v5 - ((char *)v4 - ((unsigned int)(v4 + 1) & 0xFFFFFFFC))), + 4 * (((unsigned int)v4 + v6 - ((unsigned int)(v4 + 1) & 0xFFFFFFFC)) >> 2)); + } + while ( v3 != 17 ); +LABEL_18: + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 && *(_BYTE *)(a1 + 112) ) + return 0; + result = 0; + if ( !*(_DWORD *)(a1 + 16) ) + { + v8 = *(_DWORD **)(a2 + 16); + if ( (*(_BYTE *)(a2 + 99) & 0x40) != 0 && *(_BYTE *)(a2 + 112) ) + return (int)v8 + *(_DWORD *)(a2 + 104) - *(_DWORD *)(a1 + 72); + if ( dwarf_reg_size_table[4] == 4 ) + { + v8 = (_DWORD *)*v8; + return (int)v8 + *(_DWORD *)(a2 + 104) - *(_DWORD *)(a1 + 72); + } +LABEL_32: + uw_install_context_1_cold(); + } + return result; +} + +//----- (00438160) -------------------------------------------------------- +int __usercall execute_stack_op@(char *a1@, unsigned int a2@, int a3@, int a4) +{ + int result; // eax + int v6; // ebp + int v7; // eax + char v8; // dl + char *v9; // esi + int v10; // edi + unsigned int v11; // ecx + char v12; // bl + int v13; // edx + int v14; // eax + _DWORD *v15; // esi + int v16; // esi + int v17; // edi + int v18; // eax + int v19; // ecx + int v20; // esi + int v21; // esi + int v22; // eax + int v23; // ecx + int v24; // edx + char v25; // si + int *v26; // eax + char *v27; // eax + int v28; // ebx + int v29; // esi + int v30; // ecx + int v31; // ecx + unsigned __int8 v32; // al + int v33; // edi + int v34; // ecx + char v35; // dl + int v36; // eax + int v37; // esi + unsigned int v38; // ecx + char v39; // al + int v40; // edx + _DWORD *v41; // eax + unsigned int v42; // ecx + char v43; // dl + int v44; // eax + int v45; // edi + int v46; // ecx + char v47; // dl + int v48; // eax + int v49; // ecx + char v50; // dl + int v51; // eax + char *v52; // [esp+14h] [ebp-138h] + char *v53; // [esp+14h] [ebp-138h] + int v56; // [esp+28h] [ebp-124h] + int v57; // [esp+2Ch] [ebp-120h] BYREF + int v58[71]; // [esp+30h] [ebp-11Ch] + + result = a4; + v58[0] = a4; + if ( (unsigned int)a1 < a2 ) + { + v6 = 1; + while ( 2 ) + { + v52 = a1 + 1; + v7 = (unsigned __int8)*a1; + v8 = *a1; + switch ( (char)v7 ) + { + case 3: + case 12: + case 13: + v16 = *(_DWORD *)(a1 + 1); + v17 = v6; + a1 += 5; + goto LABEL_16; + case 6: + case 25: + case 31: + case 32: + case 35: + case -108: + if ( !v6 ) + goto LABEL_121; + v17 = v6 - 1; + v21 = v58[v6 - 1]; + if ( (unsigned __int8)v7 <= 0x23u ) + { + switch ( v8 ) + { + case 6: + v16 = *(_DWORD *)v21; + ++a1; + goto LABEL_16; + case 25: + ++a1; + v16 = abs32(v21); + goto LABEL_16; + case 31: + ++a1; + v16 = -v21; + goto LABEL_16; + case 32: + ++a1; + v16 = ~v21; + goto LABEL_16; + case 35: + v22 = 0; + v23 = 0; + do + { + v24 = (*v52++ & 0x7F) << v23; + v23 += 7; + v22 |= v24; + } + while ( *(v52 - 1) < 0 ); + a1 = v52; + v16 = v22 + v21; + goto LABEL_16; + default: + goto _execute_stack_op_cold; + } + } + if ( (_BYTE)v7 != 0x94 ) + goto _execute_stack_op_cold; + v32 = a1[1]; + if ( v32 == 4 ) + goto LABEL_116; + if ( v32 > 4u ) + { + if ( v32 != 8 ) +_execute_stack_op_cold: + abort(); +LABEL_116: + v16 = *(_DWORD *)v21; + a1 += 2; + } + else if ( v32 == 1 ) + { + v16 = *(unsigned __int8 *)v21; + a1 += 2; + } + else + { + if ( v32 != 2 ) + goto _execute_stack_op_cold; + v16 = *(unsigned __int16 *)v21; + a1 += 2; + } +LABEL_16: + if ( v17 > 63 ) + goto LABEL_121; + v58[v17] = v16; + v6 = v17 + 1; +LABEL_18: + if ( a2 > (unsigned int)a1 ) + continue; + if ( !v6 ) +LABEL_121: + abort(); + result = v58[v6 - 1]; + break; + case 8: + v16 = (unsigned __int8)a1[1]; + v17 = v6; + a1 += 2; + goto LABEL_16; + case 9: + v16 = a1[1]; + v17 = v6; + a1 += 2; + goto LABEL_16; + case 10: + v16 = *(unsigned __int16 *)(a1 + 1); + v17 = v6; + a1 += 3; + goto LABEL_16; + case 11: + v16 = *(__int16 *)(a1 + 1); + v17 = v6; + a1 += 3; + goto LABEL_16; + case 14: + case 15: + v16 = *(_DWORD *)(a1 + 1); + v17 = v6; + a1 += 9; + goto LABEL_16; + case 16: + ++a1; + v16 = 0; + v49 = 0; + do + { + v50 = *a1++; + v51 = (v50 & 0x7F) << v49; + v49 += 7; + v16 |= v51; + } + while ( v50 < 0 ); + v17 = v6; + goto LABEL_16; + case 17: + ++a1; + v16 = 0; + v42 = 0; + do + { + v43 = *a1++; + v44 = (v43 & 0x7F) << v42; + v42 += 7; + v16 |= v44; + } + while ( v43 < 0 ); + v17 = v6; + if ( v42 <= 0x1F && (v43 & 0x40) != 0 ) + v16 |= -(1 << v42); + goto LABEL_16; + case 18: + if ( !v6 ) + goto LABEL_121; + v16 = v58[v6 - 1]; + ++a1; + v17 = v6; + goto LABEL_16; + case 19: + if ( !v6 ) + goto LABEL_121; + ++a1; + --v6; + goto LABEL_18; + case 20: + if ( v6 <= 1 ) + goto LABEL_121; + v16 = *(&v56 + v6); + ++a1; + v17 = v6; + goto LABEL_16; + case 21: + v31 = (unsigned __int8)a1[1]; + if ( v31 >= v6 - 1 ) + goto LABEL_121; + v17 = v6; + a1 += 2; + v16 = v58[v6 - 1 - v31]; + goto LABEL_16; + case 22: + if ( v6 <= 1 ) + goto LABEL_121; + v30 = v58[v6 - 1]; + v58[v6 - 1] = v58[v6 - 2]; + ++a1; + v58[v6 - 2] = v30; + goto LABEL_18; + case 23: + if ( v6 <= 2 ) + goto LABEL_121; + v28 = v58[v6 - 1]; + v29 = v58[v6 - 3]; + v58[v6 - 1] = v58[v6 - 2]; + v58[v6 - 2] = v29; + v58[v6 - 3] = v28; + a1 = v52; + goto LABEL_18; + case 26: + case 27: + case 28: + case 29: + case 30: + case 33: + case 34: + case 36: + case 37: + case 38: + case 39: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + if ( v6 > 1 ) + { + v17 = v6 - 2; + v19 = v58[v6 - 1]; + v20 = v58[v6 - 2]; + switch ( v8 ) + { + case 26: + ++a1; + v16 = v19 & v20; + goto LABEL_16; + case 27: + ++a1; + v16 = v20 / v19; + goto LABEL_16; + case 28: + ++a1; + v16 = v20 - v19; + goto LABEL_16; + case 29: + ++a1; + v16 = v20 % (unsigned int)v19; + goto LABEL_16; + case 30: + v16 = v19 * v20; + ++a1; + goto LABEL_16; + case 33: + ++a1; + v16 = v19 | v20; + goto LABEL_16; + case 34: + ++a1; + v16 = v19 + v20; + goto LABEL_16; + case 36: + ++a1; + v16 = v20 << v19; + goto LABEL_16; + case 37: + ++a1; + v16 = (unsigned int)v20 >> v19; + goto LABEL_16; + case 38: + ++a1; + v16 = v20 >> v19; + goto LABEL_16; + case 39: + ++a1; + v16 = v19 ^ v20; + goto LABEL_16; + case 41: + ++a1; + v16 = v20 == v19; + goto LABEL_16; + case 42: + ++a1; + v16 = v20 >= v19; + goto LABEL_16; + case 43: + ++a1; + v16 = v20 > v19; + goto LABEL_16; + case 44: + ++a1; + v16 = v20 <= v19; + goto LABEL_16; + case 45: + ++a1; + v16 = v20 < v19; + goto LABEL_16; + case 46: + ++a1; + v16 = v20 != v19; + goto LABEL_16; + default: + goto _execute_stack_op_cold; + } + } + goto LABEL_121; + case 40: + if ( !v6 ) + goto LABEL_121; + if ( v58[--v6] ) + a1 += *(__int16 *)(a1 + 1) + 3; + else + a1 += 3; + goto LABEL_18; + case 47: + a1 += *(__int16 *)(a1 + 1) + 3; + goto LABEL_18; + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + ++a1; + v16 = v7 - 48; + v17 = v6; + goto LABEL_16; + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + v18 = v7 - 80; + if ( v18 > 17 ) + goto LABEL_121; + v16 = *(_DWORD *)(a3 + 4 * v18); + if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v18 + 108) ) + goto LABEL_28; + if ( dwarf_reg_size_table[v18] != 4 ) + goto LABEL_121; + v16 = *(_DWORD *)v16; +LABEL_28: + ++a1; + v17 = v6; + goto LABEL_16; + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + case 123: + case 124: + case 125: + case 126: + case 127: + case -128: + case -127: + case -126: + case -125: + case -124: + case -123: + case -122: + case -121: + case -120: + case -119: + case -118: + case -117: + case -116: + case -115: + case -114: + case -113: + v9 = a1 + 1; + v10 = 0; + v11 = 0; + do + { + v12 = *v9++; + v13 = (v12 & 0x7F) << v11; + v11 += 7; + v10 |= v13; + } + while ( v12 < 0 ); + v53 = v9; + if ( v11 <= 0x1F && (v12 & 0x40) != 0 ) + v10 |= -(1 << v11); + v14 = v7 - 112; + if ( v14 > 17 ) + goto LABEL_121; + v15 = *(_DWORD **)(a3 + 4 * v14); + if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v14 + 108) ) + goto LABEL_14; + if ( dwarf_reg_size_table[v14] != 4 ) + goto LABEL_121; + v15 = (_DWORD *)*v15; +LABEL_14: + v16 = (int)v15 + v10; + a1 = v53; + v17 = v6; + goto LABEL_16; + case -112: + ++a1; + v45 = 0; + v46 = 0; + do + { + v47 = *a1++; + v48 = (v47 & 0x7F) << v46; + v46 += 7; + v45 |= v48; + } + while ( v47 < 0 ); + if ( v45 > 17 ) + goto LABEL_121; + v16 = *(_DWORD *)(a3 + 4 * v45); + if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v45 + 108) ) + goto LABEL_95; + if ( dwarf_reg_size_table[v45] != 4 ) + goto LABEL_121; + v16 = *(_DWORD *)v16; +LABEL_95: + v17 = v6; + goto LABEL_16; + case -110: + ++a1; + v33 = 0; + v34 = 0; + do + { + v35 = *a1++; + v36 = (v35 & 0x7F) << v34; + v34 += 7; + v33 |= v36; + } + while ( v35 < 0 ); + v37 = 0; + v38 = 0; + do + { + v39 = *a1++; + v40 = (v39 & 0x7F) << v38; + v38 += 7; + v37 |= v40; + } + while ( v39 < 0 ); + if ( v38 <= 0x1F && (v39 & 0x40) != 0 ) + v37 |= -(1 << v38); + if ( v33 > 17 ) + goto LABEL_121; + v41 = *(_DWORD **)(a3 + 4 * v33); + if ( (*(_BYTE *)(a3 + 99) & 0x40) != 0 && *(_BYTE *)(a3 + v33 + 108) ) + goto LABEL_81; + if ( dwarf_reg_size_table[v33] != 4 ) + goto LABEL_121; + v41 = (_DWORD *)*v41; +LABEL_81: + v16 = (int)v41 + v37; + v17 = v6; + goto LABEL_16; + case -106: + ++a1; + goto LABEL_18; + case -15: + v25 = a1[1]; + v17 = v6; + v26 = (int *)base_of_encoded_value(v25, (_DWORD *)a3); + v27 = read_encoded_value_with_base(v25, v26, (int *)(a1 + 2), &v57); + v16 = v57; + a1 = v27; + goto LABEL_16; + default: + goto _execute_stack_op_cold; + } + break; + } + } + return result; +} +// 438160: using guessed type int var_11C[71]; + +//----- (00438790) -------------------------------------------------------- +unsigned int __usercall uw_update_context_1@(int a1@, int a2@) +{ + int v3; // edx + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + char *v7; // ebx + int v8; // esi + int v9; // ecx + char v10; // dl + int v11; // eax + int v12; // ebx + char *v13; // esi + int v14; // edi + int v15; // ecx + char v16; // dl + int v17; // eax + int v18; // eax + unsigned int result; // eax + char *v20; // esi + int v21; // edi + int v22; // ecx + char v23; // dl + int v24; // eax + int v25; // eax + int v26; // eax + int v27; // eax + int v29; // [esp+1Ch] [ebp-B0h] + int v30; // [esp+2Ch] [ebp-A0h] BYREF + int v31[39]; // [esp+30h] [ebp-9Ch] BYREF + + qmemcpy(v31, (const void *)a1, 0x80u); + v3 = v31[24]; + if ( ((v31[24] & 0x40000000) == 0 || !LOBYTE(v31[28])) && !v31[4] ) + { + v27 = *(_DWORD *)(a1 + 72); + if ( dwarf_reg_size_table[4] != 4 ) + goto LABEL_23; + v30 = v27; + if ( (v31[24] & 0x40000000) != 0 ) + LOBYTE(v31[28]) = 0; + v31[4] = (int)&v30; + } + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + 112) = 0; + *(_DWORD *)(a1 + 16) = 0; + v4 = *(_DWORD *)(a2 + 160); + if ( v4 != 1 ) + { + if ( v4 != 2 ) + abort(); + v7 = *(char **)(a2 + 156); + v8 = 0; + v9 = 0; + do + { + v10 = *v7++; + v11 = (v10 & 0x7F) << v9; + v9 += 7; + v8 |= v11; + } + while ( v10 < 0 ); + v29 = execute_stack_op(v7, (unsigned int)&v7[v8], (int)v31, 0); + goto LABEL_17; + } + v5 = *(_DWORD *)(a2 + 152); + if ( v5 > 17 ) + goto LABEL_23; + v6 = (_DWORD *)v31[v5]; + if ( (v3 & 0x40000000) != 0 && *((_BYTE *)&v31[27] + v5) ) + goto LABEL_12; + if ( dwarf_reg_size_table[v5] != 4 ) +LABEL_23: + uw_update_context_1_cold(); + v6 = (_DWORD *)*v6; +LABEL_12: + v29 = (int)v6 + *(_DWORD *)(a2 + 148); +LABEL_17: + *(_DWORD *)(a1 + 72) = v29; + v12 = 0; + while ( 2 ) + { + switch ( *(_DWORD *)(a2 + 8 * v12 + 4) ) + { + case 1: + v25 = *(_DWORD *)(a2 + 8 * v12) + v29; + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + v12 + 108) = 0; + goto LABEL_36; + case 2: + v26 = *(_DWORD *)(a2 + 8 * v12); + if ( *((_BYTE *)&v31[27] + v26) ) + { + if ( v26 > 17 ) + goto LABEL_23; + if ( (v31[24] & 0x40000000) != 0 ) + { + v18 = v31[v26]; + } + else + { + if ( dwarf_reg_size_table[v26] != 4 ) + goto LABEL_23; + v18 = *(_DWORD *)v31[v26]; + } +LABEL_22: + if ( dwarf_reg_size_table[v12] > 4u ) + goto LABEL_23; +LABEL_25: + *(_BYTE *)(a1 + v12 + 108) = 1; + *(_DWORD *)(a1 + 4 * v12) = v18; + } + else + { + v25 = v31[v26]; + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + v12 + 108) = 0; +LABEL_36: + *(_DWORD *)(a1 + 4 * v12) = v25; + } +LABEL_26: + if ( ++v12 != 18 ) + continue; + result = *(_DWORD *)(a1 + 96) & 0x7FFFFFFF; + if ( *(_BYTE *)(a2 + 187) ) + result = *(_DWORD *)(a1 + 96) | 0x80000000; + *(_DWORD *)(a1 + 96) = result; + return result; + case 3: + v20 = *(char **)(a2 + 8 * v12); + v21 = 0; + v22 = 0; + do + { + v23 = *v20++; + v24 = (v23 & 0x7F) << v22; + v22 += 7; + v21 |= v24; + } + while ( v23 < 0 ); + v25 = execute_stack_op(v20, (unsigned int)&v20[v21], (int)v31, v29); + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + v12 + 108) = 0; + goto LABEL_36; + case 4: + v18 = *(_DWORD *)(a2 + 8 * v12) + v29; + if ( dwarf_reg_size_table[v12] <= 4u ) + goto LABEL_25; + goto LABEL_23; + case 5: + v13 = *(char **)(a2 + 8 * v12); + v14 = 0; + v15 = 0; + do + { + v16 = *v13++; + v17 = (v16 & 0x7F) << v15; + v15 += 7; + v14 |= v17; + } + while ( v16 < 0 ); + v18 = execute_stack_op(v13, (unsigned int)&v13[v14], (int)v31, v29); + goto LABEL_22; + default: + goto LABEL_26; + } + } +} + +//----- (00438A80) -------------------------------------------------------- +unsigned int __usercall uw_init_context_1@(int a1@, int a2@, int a3@) +{ + unsigned int result; // eax + int v7; // [esp+1Ch] [ebp-E0h] BYREF + _DWORD v8[55]; // [esp+20h] [ebp-DCh] BYREF + void *retaddr; // [esp+FCh] [ebp+0h] + + memset((void *)a1, 0, 0x80u); + *(_DWORD *)(a1 + 96) = 0x40000000; + *(_DWORD *)(a1 + 76) = retaddr; + if ( uw_frame_state_for((dwarf_eh_bases *)a1, v8) ) + goto LABEL_15; + if ( _CRT_MT ) + { + if ( !once_regsizes_22907 ) + { + if ( InterlockedIncrement(&Addend) ) + { + while ( !once_regsizes_22907 ) + Sleep(0); + } + else + { + dwarf_reg_size_table[0] = 4; + dwarf_reg_size_table[2] = 4; + dwarf_reg_size_table[1] = 4; + dwarf_reg_size_table[3] = 4; + dwarf_reg_size_table[6] = 4; + dwarf_reg_size_table[7] = 4; + dwarf_reg_size_table[5] = 4; + dwarf_reg_size_table[4] = 4; + dwarf_reg_size_table[11] = 12; + dwarf_reg_size_table[12] = 12; + dwarf_reg_size_table[13] = 12; + dwarf_reg_size_table[14] = 12; + dwarf_reg_size_table[15] = 12; + dwarf_reg_size_table[16] = 12; + dwarf_reg_size_table[9] = 4; + dwarf_reg_size_table[8] = 4; + once_regsizes_22907 = 1; + } + } + } + else if ( !dwarf_reg_size_table[0] ) + { + dwarf_reg_size_table[0] = 4; + dwarf_reg_size_table[2] = 4; + dwarf_reg_size_table[1] = 4; + dwarf_reg_size_table[3] = 4; + dwarf_reg_size_table[6] = 4; + dwarf_reg_size_table[7] = 4; + dwarf_reg_size_table[5] = 4; + dwarf_reg_size_table[4] = 4; + dwarf_reg_size_table[11] = 12; + dwarf_reg_size_table[12] = 12; + dwarf_reg_size_table[13] = 12; + dwarf_reg_size_table[14] = 12; + dwarf_reg_size_table[15] = 12; + dwarf_reg_size_table[16] = 12; + dwarf_reg_size_table[9] = 4; + dwarf_reg_size_table[8] = 4; + } + if ( dwarf_reg_size_table[4] != 4 ) +LABEL_15: + uw_init_context_1_cold(); + v7 = a2; + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 ) + *(_BYTE *)(a1 + 112) = 0; + v8[40] = 1; + *(_DWORD *)(a1 + 16) = &v7; + v8[38] = 4; + v8[37] = 0; + result = uw_update_context_1(a1, (int)v8); + *(_DWORD *)(a1 + 76) = a3; + return result; +} +// 4E80B4: using guessed type int once_regsizes_22907; +// 15412D0: using guessed type int _CRT_MT; + +//----- (00438C80) -------------------------------------------------------- +int __usercall uw_update_context@(int a1@, int a2@) +{ + int result; // eax + _DWORD *v5; // edx + + uw_update_context_1(a1, a2); + result = *(_DWORD *)(a2 + 180); + if ( *(_DWORD *)(a2 + 8 * result + 4) == 6 ) + { + *(_DWORD *)(a1 + 76) = 0; + return result; + } + if ( result > 17 ) + goto LABEL_3; + v5 = *(_DWORD **)(a1 + 4 * result); + if ( (*(_BYTE *)(a1 + 99) & 0x40) != 0 && *(_BYTE *)(a1 + result + 108) ) + goto LABEL_8; + if ( dwarf_reg_size_table[result] != 4 ) +LABEL_3: + uw_update_context_cold(); + v5 = (_DWORD *)*v5; +LABEL_8: + *(_DWORD *)(a1 + 76) = v5; + return result; +} + +//----- (00438CF0) -------------------------------------------------------- +int __usercall _Unwind_RaiseException_Phase2@(_DWORD *a1@, dwarf_eh_bases *a2@, int *a3@) +{ + int i; // edi + int result; // eax + int v7; // edx + int v8; // ebp + _DWORD v10[42]; // [esp+30h] [ebp-DCh] BYREF + int (__cdecl *v11)(int, int, _DWORD, _DWORD, _DWORD *, dwarf_eh_bases *); // [esp+D8h] [ebp-34h] + + for ( i = 1; ; ++i ) + { + v7 = uw_frame_state_for(a2, v10); + v8 = 4 * ((void *)a1[4] == (char *)a2[6].tbase - ((unsigned int)a2[8].tbase >> 31)); + if ( v7 ) + return 2; + if ( v11 ) + break; +LABEL_5: + if ( v8 ) + _Unwind_RaiseException_Phase2_cold(); + uw_update_context((int)a2, (int)v10); + } + result = v11(1, v8 | 2, *a1, a1[1], a1, a2); + if ( result != 7 ) + { + if ( result != 8 ) + return 2; + goto LABEL_5; + } + *a3 = i; + return result; +} +// 438CF0: using guessed type _DWORD var_DC[42]; + +//----- (00438DC0) -------------------------------------------------------- +int __usercall _Unwind_ForcedUnwind_Phase2@( + _Unwind_Exception *exc@, + dwarf_eh_bases *context@, + unsigned int *frames_p@) +{ + unsigned int v3; // edi + _Unwind_Word private_2; // ebp + int v7; // eax + int v8; // eax + int exception_class_high; // edx + int v10; // ebp + _Unwind_Stop_Fn stop; // [esp+24h] [ebp-E8h] + void *stop_argument; // [esp+28h] [ebp-E4h] + _Unwind_FrameState fs_0; // [esp+30h] [ebp-DCh] BYREF + + v3 = 1; + private_2 = exc->private_2; + stop = (_Unwind_Stop_Fn)exc->private_1; + stop_argument = (void *)private_2; + while ( 1 ) + { + v8 = uw_frame_state_for(context, &fs_0); + if ( v8 && v8 != 5 ) + return 2; + exception_class_high = HIDWORD(exc->exception_class); + if ( v8 == 5 ) + break; + if ( ((int (__cdecl *)(int, int, _DWORD, int, _Unwind_Exception *, dwarf_eh_bases *, _Unwind_Word))stop)( + 1, + 10, + exc->exception_class, + exception_class_high, + exc, + context, + private_2) ) + { + return 2; + } + if ( fs_0.personality ) + { + v7 = ((int (__cdecl *)(int, int, _DWORD, _DWORD, _Unwind_Exception *, dwarf_eh_bases *))fs_0.personality)( + 1, + 10, + exc->exception_class, + HIDWORD(exc->exception_class), + exc, + context); + if ( v7 == 7 ) + { + v10 = 7; + goto LABEL_13; + } + if ( v7 != 8 ) + return 2; + } + ++v3; + uw_update_context((int)context, (int)&fs_0); + } + v10 = 5; + if ( ((int (__cdecl *)(int, int, _DWORD, int, _Unwind_Exception *, dwarf_eh_bases *, void *))stop)( + 1, + 26, + exc->exception_class, + exception_class_high, + exc, + context, + stop_argument) ) + { + return 2; + } +LABEL_13: + *frames_p = v3; + return v10; +} + +//----- (00438F00) -------------------------------------------------------- +int __cdecl _Unwind_GetGR(int a1, int a2) +{ + int result; // eax + + if ( a2 > 17 ) + goto LABEL_7; + result = *(_DWORD *)(a1 + 4 * a2); + if ( (*(_BYTE *)(a1 + 99) & 0x40) == 0 || !*(_BYTE *)(a1 + a2 + 108) ) + { + if ( dwarf_reg_size_table[a2] == 4 ) + return *(_DWORD *)result; +LABEL_7: + _Unwind_GetGR_cold(); + } + return result; +} + +//----- (00438F40) -------------------------------------------------------- +_Unwind_Word __cdecl _Unwind_GetCFA(_Unwind_Context *context) +{ + return (_Unwind_Word)context->cfa; +} + +//----- (00438F50) -------------------------------------------------------- +_DWORD *__cdecl _Unwind_SetGR(int a1, int a2, int a3) +{ + _DWORD *result; // eax + + result = (_DWORD *)a2; + if ( a2 > 17 ) + goto LABEL_7; + if ( (*(_BYTE *)(a1 + 99) & 0x40) == 0 || !*(_BYTE *)(a1 + a2 + 108) ) + { + result = *(_DWORD **)(a1 + 4 * a2); + if ( dwarf_reg_size_table[a2] == 4 ) + { + *result = a3; + return result; + } +LABEL_7: + _Unwind_SetGR_cold(); + } + *(_DWORD *)(a1 + 4 * a2) = a3; + return result; +} + +//----- (00438FA0) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetIP(_Unwind_Context *context) +{ + return (_Unwind_Ptr)context->ra; +} + +//----- (00438FB0) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetIPInfo(_Unwind_Context *context, int *ip_before_insn) +{ + *ip_before_insn = context->flags >> 31; + return (_Unwind_Ptr)context->ra; +} + +//----- (00438FD0) -------------------------------------------------------- +void __cdecl _Unwind_SetIP(_Unwind_Context *context, _Unwind_Ptr val) +{ + context->ra = (void *)val; +} + +//----- (00438FE0) -------------------------------------------------------- +void *__cdecl _Unwind_GetLanguageSpecificData(_Unwind_Context *context) +{ + return context->lsda; +} + +//----- (00438FF0) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetRegionStart(_Unwind_Context *context) +{ + return (_Unwind_Ptr)context->bases.func; +} + +//----- (00439000) -------------------------------------------------------- +void *__cdecl _Unwind_FindEnclosingFunction(void *pc) +{ + void *result; // eax + dwarf_eh_bases bases; // [esp+14h] [ebp-18h] BYREF + + result = (void *)_Unwind_Find_FDE((char *)pc - 1, &bases); + if ( result ) + return bases.func; + return result; +} + +//----- (00439030) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetDataRelBase(_Unwind_Context *context) +{ + return (_Unwind_Ptr)context->bases.dbase; +} + +//----- (00439040) -------------------------------------------------------- +_Unwind_Ptr __cdecl _Unwind_GetTextRelBase(_Unwind_Context *context) +{ + return (_Unwind_Ptr)context->bases.tbase; +} + +//----- (00439050) -------------------------------------------------------- +frame_state *__cdecl __frame_state_for(void *pc_target, frame_state *state_in) +{ + int v2; // eax + enum : __int32 {REG_UNSAVED = 0x0,REG_SAVED_OFFSET = 0x1,REG_SAVED_REG = 0x2,REG_SAVED_EXP = 0x3,REG_SAVED_VAL_OFFSET = 0x4,REG_SAVED_VAL_EXP = 0x5,REG_UNDEFINED = 0x6,} how; // edx + _Unwind_Context context; // [esp+0h] [ebp-14Ch] BYREF + _Unwind_FrameState fs_0; // [esp+80h] [ebp-CCh] BYREF + + memset(&context, 0, sizeof(context)); + context.flags = 0x40000000; + context.ra = (char *)pc_target + 1; + v2 = uw_frame_state_for((dwarf_eh_bases *)&context, &fs_0); + if ( v2 || fs_0.regs.cfa_how == 2 ) + return 0; + do + { + while ( 1 ) + { + how = fs_0.regs.reg[v2].how; + state_in->saved[v2] = how; + if ( (_BYTE)how == 1 || (_BYTE)how == 2 ) + break; + state_in->reg_or_offset[v2++] = 0; + if ( v2 == 18 ) + goto LABEL_8; + } + state_in->reg_or_offset[v2] = fs_0.regs.reg[v2].loc.offset; + ++v2; + } + while ( v2 != 18 ); +LABEL_8: + state_in->cfa_offset = fs_0.regs.cfa_offset; + state_in->cfa_reg = fs_0.regs.cfa_reg; + state_in->retaddr_column = fs_0.retaddr_column; + state_in->args_size = context.args_size; + state_in->eh_ptr = fs_0.eh_ptr; + return state_in; +} + +//----- (00439140) -------------------------------------------------------- +_Unwind_Reason_Code __cdecl _Unwind_RaiseException(_Unwind_Exception *exc) +{ + _Unwind_Reason_Code v1; // eax + int v2; // edx + int v3; // eax + _Unwind_Reason_Code result; // eax + void *cfa; // esi + _Unwind_Exception *v6; // edi + _Unwind_Exception *v7; // eax + void *ra; // ebx + int v9; // edx + _Unwind_Context this_context; // [esp+0h] [ebp-1D8h] BYREF + _Unwind_Context cur_context; // [esp+80h] [ebp-158h] BYREF + _Unwind_FrameState fs_0; // [esp+100h] [ebp-D8h] BYREF + _Unwind_Reason_Code v13; // [esp+1C4h] [ebp-14h] + int v14; // [esp+1C8h] [ebp-10h] + int retaddr; // [esp+1DCh] [ebp+4h] + + v14 = v2; + v13 = v1; + uw_init_context_1((int)&this_context, (int)&exc, retaddr); + qmemcpy(&cur_context, &this_context, sizeof(cur_context)); + while ( 1 ) + { + result = uw_frame_state_for((dwarf_eh_bases *)&cur_context, &fs_0); + if ( result == 5 ) + break; + if ( result ) + return 3; + if ( fs_0.personality ) + { + v3 = ((int (__cdecl *)(int, int, _DWORD, _DWORD, _Unwind_Exception *, _Unwind_Context *))fs_0.personality)( + 1, + 1, + exc->exception_class, + HIDWORD(exc->exception_class), + exc, + &cur_context); + if ( v3 == 6 ) + { + cfa = cur_context.cfa; + v6 = exc; + exc->private_1 = 0; + v7 = exc; + v6->private_2 = (_Unwind_Word)cfa - (cur_context.flags >> 31); + qmemcpy(&cur_context, &this_context, sizeof(cur_context)); + result = _Unwind_RaiseException_Phase2(v7, (dwarf_eh_bases *)&cur_context, (int *)&fs_0); + if ( result == 7 ) + { + uw_install_context_1((int)&this_context, (int)&cur_context); + ra = cur_context.ra; + _Unwind_DebugHook(cur_context.cfa, cur_context.ra); + *(int *)((char *)&retaddr + v9) = (int)ra; + return v13; + } + return result; + } + if ( v3 != 8 ) + return 3; + } + uw_update_context((int)&cur_context, (int)&fs_0); + } + return result; +} +// 439152: variable 'v2' is possibly undefined +// 439158: variable 'v1' is possibly undefined +// 43926E: variable 'v9' is possibly undefined + +//----- (00439290) -------------------------------------------------------- +_Unwind_Reason_Code __cdecl _Unwind_ForcedUnwind(_Unwind_Exception *exc, _Unwind_Stop_Fn stop, void *stop_argument) +{ + _Unwind_Reason_Code v3; // eax + int v4; // edx + _Unwind_Exception *v5; // esi + _Unwind_Reason_Code result; // eax + void *ra; // ebx + int v8; // edx + unsigned int frames; // [esp+0h] [ebp-11Ch] BYREF + _Unwind_Context this_context; // [esp+4h] [ebp-118h] BYREF + _Unwind_Context cur_context; // [esp+84h] [ebp-98h] BYREF + _Unwind_Reason_Code v12; // [esp+108h] [ebp-14h] + int v13; // [esp+10Ch] [ebp-10h] + int retaddr; // [esp+120h] [ebp+4h] + + v13 = v4; + v12 = v3; + uw_init_context_1((int)&this_context, (int)&exc, retaddr); + qmemcpy(&cur_context, &this_context, sizeof(cur_context)); + v5 = exc; + exc->private_1 = (_Unwind_Word)stop; + v5->private_2 = (_Unwind_Word)stop_argument; + result = _Unwind_ForcedUnwind_Phase2(v5, (dwarf_eh_bases *)&cur_context, &frames); + if ( result == 7 ) + { + uw_install_context_1((int)&this_context, (int)&cur_context); + ra = cur_context.ra; + _Unwind_DebugHook(cur_context.cfa, cur_context.ra); + *(int *)((char *)&retaddr + v8) = (int)ra; + return v12; + } + return result; +} +// 4392A2: variable 'v4' is possibly undefined +// 4392A8: variable 'v3' is possibly undefined +// 439315: variable 'v8' is possibly undefined + +//----- (00439340) -------------------------------------------------------- +void __usercall __noreturn _Unwind_Resume(int a1@, int a2@, _Unwind_Exception *exc) +{ + int v3; // eax + int v4; // eax + int v5; // edx + unsigned int frames_p; // [esp+0h] [ebp-11Ch] BYREF + char v7[128]; // [esp+4h] [ebp-118h] BYREF + _Unwind_Context context; // [esp+84h] [ebp-98h] BYREF + int v9; // [esp+108h] [ebp-14h] + int v10; // [esp+10Ch] [ebp-10h] + int retaddr; // [esp+120h] [ebp+4h] + + v10 = a2; + v9 = a1; + uw_init_context_1((int)v7, (int)&exc, retaddr); + qmemcpy(&context, v7, sizeof(context)); + if ( exc->private_1 ) + v3 = _Unwind_ForcedUnwind_Phase2(exc, (dwarf_eh_bases *)&context, &frames_p); + else + v3 = _Unwind_RaiseException_Phase2(exc, (dwarf_eh_bases *)&context, (int *)&frames_p); + if ( v3 != 7 ) + _Unwind_Resume_cold(); + uw_install_context_1((int)v7, (int)&context); + _Unwind_DebugHook(context.cfa, context.ra); + *(int *)((char *)&retaddr + v4) = v5; +} +// 4393B1: variable 'v5' is possibly undefined +// 4393B1: variable 'v4' is possibly undefined + +//----- (004393E0) -------------------------------------------------------- +void __usercall __noreturn _Unwind_Resume_or_Rethrow(int a1@, int a2@, _Unwind_Exception *exc) +{ + _Unwind_Exception *v3; // ebx + void *ra; // ebx + int v5; // edx + unsigned int frames_p; // [esp+0h] [ebp-11Ch] BYREF + char v7[128]; // [esp+4h] [ebp-118h] BYREF + _Unwind_Context context; // [esp+84h] [ebp-98h] BYREF + int v9; // [esp+108h] [ebp-14h] + int v10; // [esp+10Ch] [ebp-10h] + int retaddr; // [esp+120h] [ebp+4h] + + v10 = a2; + v9 = a1; + v3 = exc; + if ( exc->private_1 ) + { + uw_init_context_1((int)v7, (int)&exc, retaddr); + qmemcpy(&context, v7, sizeof(context)); + if ( _Unwind_ForcedUnwind_Phase2(v3, (dwarf_eh_bases *)&context, &frames_p) != 7 ) + _Unwind_Resume_or_Rethrow_cold(); + uw_install_context_1((int)v7, (int)&context); + ra = context.ra; + _Unwind_DebugHook(context.cfa, context.ra); + *(int *)((char *)&retaddr + v5) = (int)ra; + } + else + { + _Unwind_RaiseException(exc); + } +} +// 439472: variable 'v5' is possibly undefined + +//----- (00439490) -------------------------------------------------------- +void __cdecl _Unwind_DeleteException(_Unwind_Exception *exc) +{ + _Unwind_Exception_Cleanup_Fn exception_cleanup; // eax + + exception_cleanup = exc->exception_cleanup; + if ( exception_cleanup ) + exception_cleanup((_Unwind_Reason_Code)1, exc); +} + +//----- (004394B0) -------------------------------------------------------- +_Unwind_Reason_Code __cdecl _Unwind_Backtrace(_Unwind_Trace_Fn trace, void *trace_argument) +{ + _Unwind_Trace_Fn v2; // edi + void *v3; // esi + int v4; // eax + _Unwind_Reason_Code v5; // ebx + _Unwind_Context context; // [esp+10h] [ebp-158h] BYREF + _Unwind_FrameState fs_0; // [esp+90h] [ebp-D8h] BYREF + int retaddr; // [esp+16Ch] [ebp+4h] + + v2 = trace; + v3 = trace_argument; + uw_init_context_1((int)&context, (int)&trace, retaddr); + while ( 1 ) + { + v4 = uw_frame_state_for((dwarf_eh_bases *)&context, &fs_0); + v5 = v4; + if ( v4 ) + { + if ( v4 != 5 ) + break; + } + if ( v2(&context, v3) ) + break; + if ( v5 == 5 ) + return v5; + uw_update_context((int)&context, (int)&fs_0); + } + return 3; +} + +//----- (00439530) -------------------------------------------------------- +int __cdecl fde_unencoded_compare(object *ob, const fde *x, const fde *y) +{ + int result; // eax + unsigned int v4; // edx + + result = 1; + v4 = *(_DWORD *)y->pc_begin; + if ( *(_DWORD *)x->pc_begin <= v4 ) + return -(*(_DWORD *)x->pc_begin < v4); + return result; +} + +//----- (00439550) -------------------------------------------------------- +void __usercall frame_downheap(object *ob@, fde_compare_t fde_compare@, const fde **a@, int lo, int hi) +{ + int v6; // edx + int v7; // ebx + int v8; // eax + const fde *v9; // eax + int v10; // esi + const fde **v11; // ebx + const fde *v12; // eax + const fde **v13; // edi + const fde **v16; // [esp+1Ch] [ebp-20h] + int i; // [esp+40h] [ebp+4h] + + v6 = lo; + v7 = 2 * lo + 1; + if ( v7 < hi ) + { + while ( 1 ) + { + v10 = v7 + 1; + v13 = &a[v7]; + v9 = *v13; + if ( v7 + 1 < hi ) + { + i = v6; + v16 = &a[v7 + 1]; + v8 = fde_compare(ob, v9, *v16); + v6 = i; + if ( v8 < 0 ) + { + v9 = *v16; + v13 = &a[v7 + 1]; + } + else + { + v9 = *v13; + v10 = v7; + } + } + else + { + v10 = v7; + } + v11 = &a[v6]; + if ( fde_compare(ob, *v11, v9) >= 0 ) + break; + v12 = *v11; + *v11 = *v13; + v7 = 2 * v10 + 1; + *v13 = v12; + if ( hi <= v7 ) + break; + v6 = v10; + } + } +} + +//----- (00439620) -------------------------------------------------------- +void __usercall frame_heapsort(object *ob@, fde_compare_t fde_compare@, fde_vector *erratic@) +{ + fde_vector *v5; // esi + int v6; // ebx + int hi; // ebx + const dwarf_fde *v8; // eax + int lo; // [esp+0h] [ebp-3Ch] + unsigned int n; // [esp+14h] [ebp-28h] + const dwarf_fde **a; // [esp+18h] [ebp-24h] + + v5 = erratic; + a = erratic->array; + n = erratic->count; + if ( n >> 1 ) + { + v6 = (n >> 1) - 1; + do + { + lo = v6--; + frame_downheap(ob, fde_compare, a, lo, n); + } + while ( v6 != -1 ); + v5 = erratic; + } + hi = n - 1; + if ( (int)(n - 1) > 0 ) + { + do + { + v8 = v5->array[0]; + v5->array[0] = v5->array[hi]; + v5->array[hi] = v8; + frame_downheap(ob, fde_compare, a, 0, hi--); + } + while ( hi ); + } +} + +//----- (004396C0) -------------------------------------------------------- +void init_object_mutex() +{ + object_mutex.counter = -1; + object_mutex.sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); +} + +//----- (00439700) -------------------------------------------------------- +int __usercall size_of_encoded_value@(char a1@) +{ + unsigned __int8 v1; // al + + if ( a1 == -1 ) + return 0; + v1 = a1 & 7; + if ( v1 == 2 ) + return 2; + if ( v1 <= 2u ) + { + if ( v1 ) + goto LABEL_12; + return 4; + } + if ( v1 == 3 ) + return 4; + if ( v1 != 4 ) +LABEL_12: + size_of_encoded_value_cold(); + return 8; +} + +//----- (00439750) -------------------------------------------------------- +int __usercall base_from_object@(char a1@, int a2@) +{ + unsigned __int8 v2; // cl + + if ( a1 == -1 ) + return 0; + v2 = a1 & 0x70; + if ( (a1 & 0x70) == 32 ) + return *(_DWORD *)(a2 + 4); + if ( v2 <= 0x20u ) + { + if ( (a1 & 0x60) == 0 ) + return 0; + goto LABEL_13; + } + if ( v2 != 48 ) + { + if ( v2 == 80 ) + return 0; +LABEL_13: + base_from_object_cold(); + } + return *(_DWORD *)(a2 + 8); +} + +//----- (004397A0) -------------------------------------------------------- +char *__usercall read_encoded_value_with_base_0@(char a1@, int *a2@, int *a3@, int *a4) +{ + int v6; // edx + char *result; // eax + _DWORD *v8; // eax + int v9; // edx + int v10; // ecx + int v11; // ebp + char v12; // dl + int v13; // edi + unsigned int v14; // ecx + int v15; // ebp + char v16; // dl + int v17; // edi + char v18; // di + + if ( a1 == 80 ) + { + v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); + v9 = *v8; + result = (char *)(v8 + 1); + *a4 = v9; + } + else + { + switch ( a1 & 0xF ) + { + case 0: + case 3: + case 0xB: + v6 = *a3; + result = (char *)(a3 + 1); + goto LABEL_4; + case 1: + result = (char *)a3; + v10 = 0; + v11 = 0; + do + { + v12 = *result++; + v13 = (v12 & 0x7F) << v10; + v10 += 7; + v11 |= v13; + } + while ( v12 < 0 ); + v6 = v11; + goto LABEL_4; + case 2: + v6 = *(unsigned __int16 *)a3; + result = (char *)a3 + 2; + goto LABEL_4; + case 4: + case 0xC: + v6 = *a3; + result = (char *)(a3 + 2); + goto LABEL_4; + case 9: + result = (char *)a3; + v14 = 0; + v15 = 0; + do + { + v16 = *result++; + v17 = (v16 & 0x7F) << v14; + v14 += 7; + v15 |= v17; + } + while ( v16 < 0 ); + v18 = v16; + v6 = v15; + if ( v14 > 0x1F || (v18 & 0x40) == 0 ) + goto LABEL_4; + v6 = (-1 << v14) | v15; + goto LABEL_5; + case 0xA: + v6 = *(__int16 *)a3; + result = (char *)a3 + 2; +LABEL_4: + if ( !v6 ) + goto LABEL_8; +LABEL_5: + if ( (a1 & 0x70) == 16 ) + a2 = a3; + v6 += (int)a2; + if ( a1 < 0 ) + *a4 = *(_DWORD *)v6; + else +LABEL_8: + *a4 = v6; + break; + default: + abort(); + } + } + return result; +} + +//----- (004398E0) -------------------------------------------------------- +int __cdecl fde_single_encoding_compare(object *ob, const fde *x, const fde *y) +{ + char v3; // bl + int *v4; // esi + int result; // eax + _Unwind_Ptr x_ptr; // [esp+18h] [ebp-14h] BYREF + _Unwind_Ptr y_ptr[4]; // [esp+1Ch] [ebp-10h] BYREF + + v3 = *(_WORD *)&ob->s.b >> 3; + v4 = (int *)base_from_object(v3, (int)ob); + read_encoded_value_with_base_0(v3, v4, (int *)x->pc_begin, (int *)&x_ptr); + read_encoded_value_with_base_0(*(_WORD *)&ob->s.b >> 3, v4, (int *)y->pc_begin, (int *)y_ptr); + result = 1; + if ( x_ptr <= y_ptr[0] ) + return -(x_ptr < y_ptr[0]); + return result; +} +// 4398E0: using guessed type _Unwind_Ptr y_ptr[4]; + +//----- (00439950) -------------------------------------------------------- +int __usercall get_cie_encoding@(const dwarf_cie *cie@) +{ + ubyte *v2; // ebx + size_t v3; // eax + ubyte version; // cl + char *encoded_value_with_base_0; // eax + int v6; // edx + char *v8; // edx + ubyte *v9; // ebx + ubyte i; // dl + _Unwind_Ptr dummy[4]; // [esp+1Ch] [ebp-10h] BYREF + + v2 = &cie->version + 1; + v3 = strlen((const char *)&cie->version + 1); + version = cie->version; + encoded_value_with_base_0 = (char *)&v2[v3 + 1]; + if ( version > 3u ) + { + v6 = 255; + if ( *encoded_value_with_base_0 != 4 || encoded_value_with_base_0[1] ) + return v6; + encoded_value_with_base_0 += 2; + } + if ( *(&cie->version + 1) != 122 ) + return 0; + do + ++encoded_value_with_base_0; + while ( *(encoded_value_with_base_0 - 1) < 0 ); + do + v8 = encoded_value_with_base_0++; + while ( *(encoded_value_with_base_0 - 1) < 0 ); + if ( version == 1 ) + { + encoded_value_with_base_0 = v8 + 2; + } + else + { + do + ++encoded_value_with_base_0; + while ( *(encoded_value_with_base_0 - 1) < 0 ); + } + v9 = &cie->version + 2; + do + ++encoded_value_with_base_0; + while ( *(encoded_value_with_base_0 - 1) < 0 ); + for ( i = *(&cie->version + 2); i != 82; ++encoded_value_with_base_0 ) + { + while ( i == 80 ) + { + ++v9; + encoded_value_with_base_0 = read_encoded_value_with_base_0( + *encoded_value_with_base_0 & 0x7F, + 0, + (int *)(encoded_value_with_base_0 + 1), + (int *)dummy); + i = *v9; + if ( *v9 == 82 ) + return (unsigned __int8)*encoded_value_with_base_0; + } + if ( i != 76 ) + return 0; + i = *++v9; + } + return (unsigned __int8)*encoded_value_with_base_0; +} +// 439950: using guessed type _Unwind_Ptr dummy[4]; + +//----- (00439A50) -------------------------------------------------------- +size_t __usercall classify_object_over_fdes@(object *ob@, const fde *this_fde@) +{ + const fde *v3; // ebx + char *v4; // ecx + sword CIE_delta; // eax + char *v6; // esi + char v7; // di + unsigned __int16 i; // ax + unsigned int v9; // eax + int v10; // edx + int encoding; // [esp+14h] [ebp-38h] + int *base; // [esp+18h] [ebp-34h] + uword count; // [esp+1Ch] [ebp-30h] + _Unwind_Ptr pc_begin[8]; // [esp+2Ch] [ebp-20h] BYREF + + count = this_fde->length; + if ( !this_fde->length ) + return count; + base = 0; + v3 = this_fde; + v4 = 0; + LOBYTE(encoding) = 0; + count = 0; + while ( 1 ) + { + CIE_delta = v3->CIE_delta; + if ( CIE_delta ) + break; +LABEL_15: + v3 = (const fde *)((char *)v3 + v3->length + 4); + if ( !v3->length ) + return count; + } + v6 = (char *)&v3->CIE_delta - CIE_delta; + if ( v6 == v4 ) + { + v7 = encoding; +LABEL_9: + read_encoded_value_with_base_0(v7, base, (int *)v3->pc_begin, (int *)pc_begin); + v9 = size_of_encoded_value(v7); + v10 = -1; + if ( v9 <= 3 ) + v10 = (1 << (8 * v9)) - 1; + v4 = v6; + if ( (v10 & pc_begin[0]) != 0 ) + { + ++count; + if ( ob->pc_begin > (void *)pc_begin[0] ) + ob->pc_begin = (void *)pc_begin[0]; + v4 = v6; + } + goto LABEL_15; + } + encoding = get_cie_encoding((const dwarf_cie *)((char *)&v3->CIE_delta - CIE_delta)); + if ( encoding != 255 ) + { + v7 = encoding; + base = (int *)base_from_object(encoding, (int)ob); + i = ob->s.i; + if ( (i & 0x7F8) == 2040 ) + { + *(_WORD *)&ob->s.b = (8 * (unsigned __int8)encoding) | i & 0xF807; + } + else if ( (unsigned __int8)(i >> 3) != encoding ) + { + *(_BYTE *)&ob->s.b |= 4u; + } + goto LABEL_9; + } + return -1; +} +// 439A50: using guessed type _Unwind_Ptr pc_begin[8]; + +//----- (00439BB0) -------------------------------------------------------- +void __usercall add_fdes(object *ob@, fde_accumulator *accu@, const fde *this_fde@) +{ + __int16 v5; // ax + int cie_encoding; // esi + int v7; // eax + int *v8; // edx + fde_vector *linear; // eax + size_t count; // ecx + sword CIE_delta; // eax + const dwarf_cie *v12; // ebp + int v13; // ebp + unsigned int v14; // eax + const dwarf_cie *last_cie; // [esp+14h] [ebp-38h] + _Unwind_Ptr base; // [esp+1Ch] [ebp-30h] + _Unwind_Ptr pc_begin[8]; // [esp+2Ch] [ebp-20h] BYREF + + v5 = *(_WORD *)&ob->s.b >> 3; + cie_encoding = (unsigned __int8)v5; + v7 = base_from_object(v5, (int)ob); + if ( this_fde->length ) + { + last_cie = 0; + v8 = (int *)v7; + while ( 1 ) + { + CIE_delta = this_fde->CIE_delta; + if ( !CIE_delta ) + goto LABEL_6; + if ( (*(_BYTE *)&ob->s.b & 4) != 0 ) + { + v12 = (const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta); + if ( v12 != last_cie ) + { + cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta)); + last_cie = v12; + v8 = (int *)base_from_object(cie_encoding, (int)ob); + } + } + if ( cie_encoding ) + { + base = (_Unwind_Ptr)v8; + read_encoded_value_with_base_0(cie_encoding, v8, (int *)this_fde->pc_begin, (int *)pc_begin); + v13 = -1; + v14 = size_of_encoded_value(cie_encoding); + v8 = (int *)base; + if ( v14 <= 3 ) + v13 = (1 << (8 * v14)) - 1; + if ( (v13 & pc_begin[0]) != 0 ) + { +LABEL_4: + linear = accu->linear; + if ( accu->linear ) + { + count = linear->count; + linear->count = count + 1; + linear->array[count] = this_fde; + } + goto LABEL_6; + } + this_fde = (const fde *)((char *)this_fde + this_fde->length + 4); + if ( !this_fde->length ) + return; + } + else + { + if ( *(_DWORD *)this_fde->pc_begin ) + goto LABEL_4; +LABEL_6: + this_fde = (const fde *)((char *)this_fde + this_fde->length + 4); + if ( !this_fde->length ) + return; + } + } + } +} +// 439BB0: using guessed type _Unwind_Ptr pc_begin[8]; + +//----- (00439CC0) -------------------------------------------------------- +const fde *__usercall linear_search_fdes@(object *ob@, const fde *this_fde@, char *pc@) +{ + __int16 v6; // ax + int cie_encoding; // esi + _Unwind_Ptr v8; // eax + char *v9; // edx + sword CIE_delta; // eax + const dwarf_cie *v11; // ebp + int *encoded_value_with_base_0; // eax + unsigned int v13; // eax + int v14; // edx + const dwarf_cie *last_cie; // [esp+14h] [ebp-38h] + int *base; // [esp+1Ch] [ebp-30h] + _Unwind_Ptr pc_begin; // [esp+28h] [ebp-24h] BYREF + _Unwind_Ptr pc_range[8]; // [esp+2Ch] [ebp-20h] BYREF + + v6 = *(_WORD *)&ob->s.b >> 3; + cie_encoding = (unsigned __int8)v6; + last_cie = 0; + for ( base = (int *)base_from_object(v6, (int)ob); + this_fde->length; + this_fde = (const fde *)((char *)this_fde + this_fde->length + 4) ) + { + CIE_delta = this_fde->CIE_delta; + if ( CIE_delta ) + { + if ( (*(_BYTE *)&ob->s.b & 4) != 0 ) + { + v11 = (const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta); + if ( v11 != last_cie ) + { + cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&this_fde->CIE_delta - CIE_delta)); + last_cie = v11; + base = (int *)base_from_object(cie_encoding, (int)ob); + } + } + if ( cie_encoding ) + { + encoded_value_with_base_0 = (int *)read_encoded_value_with_base_0( + cie_encoding, + base, + (int *)this_fde->pc_begin, + (int *)&pc_begin); + read_encoded_value_with_base_0(cie_encoding & 0xF, 0, encoded_value_with_base_0, (int *)pc_range); + v13 = size_of_encoded_value(cie_encoding); + v14 = -1; + if ( v13 <= 3 ) + v14 = (1 << (8 * v13)) - 1; + if ( (v14 & pc_begin) != 0 && (unsigned int)&pc[-pc_begin] < pc_range[0] ) + return this_fde; + } + else + { + v8 = *(_DWORD *)this_fde->pc_begin; + v9 = *(char **)&this_fde->pc_begin[4]; + pc_begin = v8; + pc_range[0] = (_Unwind_Ptr)v9; + if ( v8 && &pc[-v8] < v9 ) + return this_fde; + } + } + } + return 0; +} +// 439CC0: using guessed type _Unwind_Ptr pc_range[8]; + +//----- (00439DF0) -------------------------------------------------------- +int __cdecl fde_mixed_encoding_compare(object *ob, const fde *x, const fde *y) +{ + char cie_encoding; // di + int *v4; // eax + char v5; // si + int *v6; // eax + int result; // eax + _Unwind_Ptr x_ptr; // [esp+18h] [ebp-24h] BYREF + _Unwind_Ptr y_ptr[8]; // [esp+1Ch] [ebp-20h] BYREF + + cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&x->CIE_delta - x->CIE_delta)); + v4 = (int *)base_from_object(cie_encoding, (int)ob); + read_encoded_value_with_base_0(cie_encoding, v4, (int *)x->pc_begin, (int *)&x_ptr); + v5 = get_cie_encoding((const dwarf_cie *)((char *)&y->CIE_delta - y->CIE_delta)); + v6 = (int *)base_from_object(v5, (int)ob); + read_encoded_value_with_base_0(v5, v6, (int *)y->pc_begin, (int *)y_ptr); + result = 1; + if ( x_ptr <= y_ptr[0] ) + return -(x_ptr < y_ptr[0]); + return result; +} +// 439DF0: using guessed type _Unwind_Ptr y_ptr[8]; + +//----- (00439E70) -------------------------------------------------------- +const fde *__usercall search_object@(int a1@, char *a2@) +{ + object *v2; // edi + char b; // al + union {const dwarf_fde *single;dwarf_fde **array;fde_vector *sort;} v4; // ebp + unsigned __int16 v5; // ax + unsigned int v6; // edx + unsigned int v7; // ecx + unsigned int v8; // eax + int v9; // ebx + unsigned int v10; // esi + const fde *result; // eax + size_t v12; // esi + const fde **single; // ebx + const fde *v14; // edx + size_t v15; // eax + unsigned int v16; // esi + int v17; // edi + char cie_encoding; // bl + int *v19; // eax + int *v20; // eax + const fde **v21; // esi + const fde *i; // edx + char v23; // bl + int v24; // eax + unsigned int CIE_delta; // edi + unsigned int v26; // ebp + unsigned int v27; // esi + int *encoded_value_with_base_0; // eax + fde_vector *v29; // eax + fde_vector *v30; // eax + const fde **v31; // ebx + const fde *v32; // ecx + fde_vector *linear; // esi + size_t count; // eax + const fde **v35; // ebx + int v36; // esi + fde_vector *v37; // ebp + fde_vector *v38; // eax + int v39; // ebp + fde_vector *v40; // esi + char *v41; // eax + fde_vector *v42; // eax + fde_vector *v43; // eax + fde_vector *v44; // esi + size_t v45; // ebp + size_t v46; // edx + int v47; // eax + const dwarf_fde *v48; // ecx + fde_vector *v49; // ecx + size_t v50; // eax + fde_vector *v51; // ebp + size_t v52; // edi + const dwarf_fde **v53; // ebx + int v54; // esi + size_t v55; // ebx + fde_vector *v56; // eax + fde_compare_t fde_compare; // [esp+10h] [ebp-4Ch] + char fde_comparea; // [esp+10h] [ebp-4Ch] + int (*fde_compareb)(object *, const fde *, const fde *); // [esp+10h] [ebp-4Ch] + unsigned int v61; // [esp+18h] [ebp-44h] + int *v62; // [esp+18h] [ebp-44h] + fde_vector *erratic; // [esp+18h] [ebp-44h] + const dwarf_fde *v64; // [esp+18h] [ebp-44h] + const dwarf_fde **ob; // [esp+1Ch] [ebp-40h] + object *oba; // [esp+1Ch] [ebp-40h] + size_t v67; // [esp+20h] [ebp-3Ch] + size_t v68; // [esp+20h] [ebp-3Ch] + char v69; // [esp+24h] [ebp-38h] + int v70; // [esp+24h] [ebp-38h] + fde_vector *v71; // [esp+24h] [ebp-38h] + int v72; // [esp+28h] [ebp-34h] + union {const dwarf_fde *single;dwarf_fde **array;fde_vector *sort;} v73; // [esp+28h] [ebp-34h] + fde_vector *v74; // [esp+28h] [ebp-34h] + size_t v75; // [esp+2Ch] [ebp-30h] + unsigned int v76; // [esp+34h] [ebp-28h] BYREF + fde_accumulator accu; // [esp+38h] [ebp-24h] BYREF + + v2 = (object *)a1; + b = *(_BYTE *)(a1 + 16); + if ( (b & 1) != 0 ) + goto LABEL_2; + v12 = v2->s.i >> 11; + v67 = v12; + if ( !v12 ) + { + single = (const fde **)v2->u.single; + if ( (b & 2) != 0 ) + { + v14 = *single; + if ( !*single ) + goto LABEL_30; + do + { + v15 = classify_object_over_fdes(v2, v14); + if ( v15 == -1 ) + goto LABEL_16; + v14 = single[1]; + ++single; + v12 += v15; + } + while ( v14 ); + v67 = v12; + } + else + { + v67 = classify_object_over_fdes(v2, v2->u.single); + if ( v67 == -1 ) + { +LABEL_16: + v2->s.i = 2040; + v2->u.single = (const dwarf_fde *)&terminator_22562; + goto LABEL_30; + } + } + if ( (v67 & 0xFFE00000) != 0 ) + v2->s.i &= 0x7FFu; + else + v2->s.i = (v67 << 11) | v2->s.i & 0x7FF; + if ( !v67 ) + goto LABEL_30; + } + v29 = (fde_vector *)malloc(4 * v67 + 8); + accu.linear = v29; + if ( !v29 ) + goto LABEL_30; + v29->count = 0; + v30 = (fde_vector *)malloc(4 * v67 + 8); + accu.erratic = v30; + if ( v30 ) + v30->count = 0; + v31 = (const fde **)v2->u.single; + if ( (*(_BYTE *)&v2->s.b & 2) != 0 ) + { + v32 = *v31; + if ( !*v31 ) + goto LABEL_96; + do + { + ++v31; + add_fdes(v2, &accu, v32); + v32 = *v31; + } + while ( *v31 ); + } + else + { + add_fdes(v2, &accu, v2->u.single); + } + linear = accu.linear; + v74 = accu.linear; + if ( accu.linear && accu.linear->count != v67 ) + goto LABEL_96; + fde_compareb = fde_mixed_encoding_compare; + if ( (*(_BYTE *)&v2->s.b & 4) == 0 ) + { + fde_compareb = fde_unencoded_compare; + if ( (*(_WORD *)&v2->s.b & 0x7F8) != 0 ) + fde_compareb = fde_single_encoding_compare; + } + erratic = accu.erratic; + if ( !accu.erratic ) + { + frame_heapsort(v2, fde_compareb, accu.linear); + goto LABEL_86; + } + count = accu.linear->count; + v75 = count; + if ( count ) + { + v35 = (const fde **)&marker_22456; + v70 = 4 * count + 4; + ob = accu.linear->array; + v36 = 8; + v37 = accu.linear; + while ( 1 ) + { + *(const void **)((char *)&erratic->orig_data + v36) = v35; + v35 = (const fde **)((char *)v37 + v36); + if ( v70 == v36 ) + break; + if ( v35 != (const fde **)&marker_22456 ) + { + v38 = v37; + v39 = v36; + v40 = v38; + do + { + if ( fde_compareb(v2, *(const fde **)((char *)&v40->count + v39), *v35) >= 0 ) + { + v42 = v40; + v36 = v39; + v37 = v42; + goto LABEL_65; + } + v41 = (char *)erratic + (char *)v35 - (char *)ob; + v35 = (const fde **)*((_DWORD *)v41 + 2); + *((_DWORD *)v41 + 2) = 0; + } + while ( v35 != (const fde **)&marker_22456 ); + v43 = v40; + v36 = v39; + v37 = v43; + } + v35 = (const fde **)&marker_22456; +LABEL_65: + v36 += 4; + } + v44 = v37; + v45 = 0; + v46 = 0; + v47 = 0; + do + { + v48 = v44->array[v47]; + if ( erratic->array[v47] ) + v44->array[v46++] = v48; + else + erratic->array[v45++] = v48; + ++v47; + } + while ( v75 != v47 ); + v49 = accu.erratic; + linear = accu.linear; + } + else + { + v49 = accu.erratic; + v45 = 0; + v46 = 0; + } + v74->count = v46; + erratic->count = v45; + if ( linear->count + v49->count != v67 ) +LABEL_96: + search_object_cold(); + frame_heapsort(v2, fde_compareb, v49); + v71 = accu.erratic; + v50 = accu.erratic->count; + if ( !v50 ) + goto LABEL_85; + v51 = accu.linear; + oba = v2; + v52 = accu.linear->count; + while ( 1 ) + { + v68 = v50 - 1; + v53 = (const dwarf_fde **)(&v71->orig_data + v50); + v64 = v53[1]; + if ( !v52 ) + break; + v54 = v52 + v50 - 1; + v55 = v52; + while ( 1 ) + { + v52 = v55--; + if ( fde_compareb(oba, v51->array[v55], v64) <= 0 ) + break; + v51->array[v54--] = v51->array[v55]; + if ( !v55 ) + { + v54 = v68; + v52 = 0; + break; + } + } +LABEL_81: + v51->array[v54] = v64; + if ( !v68 ) + goto LABEL_84; + v50 = v68; + } + v51->array[v50 - 1] = v64; + if ( v50 != 1 ) + { + v54 = v50 - 2; + v68 = v50 - 2; + v64 = *v53; + goto LABEL_81; + } +LABEL_84: + v2 = oba; + v51->count += v71->count; + v71 = accu.erratic; +LABEL_85: + __mingw_free((unsigned int)v71); +LABEL_86: + v56 = accu.linear; + accu.linear->orig_data = v2->u.single; + *(_BYTE *)&v2->s.b |= 1u; + v2->u.single = (const dwarf_fde *)v56; +LABEL_30: + if ( v2->pc_begin > a2 ) + return 0; + b = (char)v2->s.b; + v21 = (const fde **)v2->u.single; + if ( (b & 1) == 0 ) + { + if ( (b & 2) == 0 ) + return linear_search_fdes(v2, v2->u.single, a2); + for ( i = *v21; i; ++v21 ) + { + result = linear_search_fdes(v2, i, a2); + if ( result ) + return result; + i = v21[1]; + } + return 0; + } +LABEL_2: + v4.single = (const dwarf_fde *)v2->u; + if ( (b & 4) == 0 ) + { + v5 = v2->s.i; + if ( (v5 & 0x7F8) != 0 ) + { + v23 = v5 >> 3; + fde_comparea = v23; + v24 = base_from_object(v23, (int)v2); + CIE_delta = v4.single->CIE_delta; + v62 = (int *)v24; + if ( CIE_delta ) + { + v73.single = v4.single; + v26 = 0; + v69 = v23 & 0xF; + do + { + v27 = (CIE_delta + v26) >> 1; + v9 = *(_DWORD *)&v73.single->pc_begin[4 * v27]; + encoded_value_with_base_0 = (int *)read_encoded_value_with_base_0( + fde_comparea, + v62, + (int *)(v9 + 8), + (int *)&v76); + read_encoded_value_with_base_0(v69, 0, encoded_value_with_base_0, (int *)&accu); + if ( v76 <= (unsigned int)a2 ) + { + if ( (char *)accu.linear + v76 > a2 ) + return (const fde *)v9; + v26 = v27 + 1; + } + else + { + CIE_delta = (CIE_delta + v26) >> 1; + } + } + while ( v26 < CIE_delta ); + } + } + else + { + v6 = v4.single->CIE_delta; + v7 = 0; + while ( v6 > v7 ) + { + v8 = (v6 + v7) >> 1; + v9 = *(_DWORD *)&v4.single->pc_begin[4 * v8]; + v10 = *(_DWORD *)(v9 + 8); + if ( (unsigned int)a2 >= v10 ) + { + if ( (unsigned int)a2 < *(_DWORD *)(v9 + 12) + v10 ) + return (const fde *)v9; + v7 = v8 + 1; + } + else + { + v6 = (v6 + v7) >> 1; + } + } + } + return 0; + } + fde_compare = (fde_compare_t)v4.single->CIE_delta; + if ( !fde_compare ) + return 0; + v61 = 0; + v72 = (int)v2; + while ( 2 ) + { + v16 = ((unsigned int)fde_compare + v61) >> 1; + v17 = *(_DWORD *)&v4.single->pc_begin[4 * v16]; + cie_encoding = get_cie_encoding((const dwarf_cie *)(v17 + 4 - *(_DWORD *)(v17 + 4))); + v19 = (int *)base_from_object(cie_encoding, v72); + v20 = (int *)read_encoded_value_with_base_0(cie_encoding, v19, (int *)(v17 + 8), (int *)&v76); + read_encoded_value_with_base_0(cie_encoding & 0xF, 0, v20, (int *)&accu); + if ( v76 > (unsigned int)a2 ) + { + fde_compare = (fde_compare_t)(((unsigned int)fde_compare + v61) >> 1); +LABEL_23: + if ( v61 >= (unsigned int)fde_compare ) + return 0; + continue; + } + break; + } + if ( (char *)accu.linear + v76 <= a2 ) + { + v61 = v16 + 1; + goto LABEL_23; + } + return (const fde *)v17; +} + +//----- (0043A4F0) -------------------------------------------------------- +void __usercall __register_frame_info_bases_part_0( + const void *begin@, + object *ob@, + void *tbase@, + void *dbase) +{ + int v5; // eax + LONG v6; // eax + int v7; // edx + object *v8; // eax + object *v9; // eax + + ob->pc_begin = (void *)-1; + ob->tbase = tbase; + ob->u.single = (const dwarf_fde *)begin; + v5 = _CRT_MT; + ob->dbase = dbase; + ob->s.i = 2040; + if ( !v5 ) + goto LABEL_9; + if ( !once_22341 ) + { + if ( InterlockedIncrement(&dword_4E80C0) ) + { + while ( !once_22341 ) + Sleep(0); + if ( _CRT_MT ) + goto LABEL_3; + } + else + { + init_object_mutex(); + once_22341 = 1; + if ( _CRT_MT ) + goto LABEL_3; + } +LABEL_9: + v9 = unseen_objects; + unseen_objects = ob; + ob->next = v9; + return; + } +LABEL_3: + v6 = InterlockedIncrement(&object_mutex.counter); + v7 = _CRT_MT; + if ( v6 ) + { + if ( WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&object_mutex.counter); + v7 = _CRT_MT; + } + v8 = unseen_objects; + unseen_objects = ob; + ob->next = v8; + if ( v7 ) + { + if ( InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + } +} +// 4E80BC: using guessed type int once_22341; +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043A650) -------------------------------------------------------- +void __cdecl __register_frame_info_bases(const void *begin, object *ob, void *tbase, void *dbase) +{ + if ( begin ) + { + if ( *(_DWORD *)begin ) + __register_frame_info_bases_part_0(begin, ob, tbase, dbase); + } +} + +//----- (0043A680) -------------------------------------------------------- +void __cdecl __register_frame_info(const void *begin, object *ob) +{ + if ( begin ) + { + if ( *(_DWORD *)begin ) + __register_frame_info_bases_part_0(begin, ob, 0, 0); + } +} + +//----- (0043A6B0) -------------------------------------------------------- +void __cdecl __register_frame(void *begin) +{ + object *v1; // eax + + if ( *(_DWORD *)begin ) + { + v1 = (object *)malloc(0x18u); + __register_frame_info_bases_part_0(begin, v1, 0, 0); + } +} + +//----- (0043A6F0) -------------------------------------------------------- +void __cdecl __register_frame_info_table_bases(void *begin, object *ob, void *tbase, void *dbase) +{ + LONG v4; // eax + int v5; // edx + object *v6; // eax + object *v7; // eax + + ob->tbase = tbase; + ob->pc_begin = (void *)-1; + ob->dbase = dbase; + ob->s.i = 2042; + ob->u.single = (const dwarf_fde *)begin; + if ( !_CRT_MT ) + goto LABEL_9; + if ( !once_22341 ) + { + if ( InterlockedIncrement(&dword_4E80C0) ) + { + while ( !once_22341 ) + Sleep(0); + if ( _CRT_MT ) + goto LABEL_3; + } + else + { + init_object_mutex(); + once_22341 = 1; + if ( _CRT_MT ) + goto LABEL_3; + } +LABEL_9: + v7 = unseen_objects; + unseen_objects = ob; + ob->next = v7; + return; + } +LABEL_3: + v4 = InterlockedIncrement(&object_mutex.counter); + v5 = _CRT_MT; + if ( v4 ) + { + if ( WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&object_mutex.counter); + v5 = _CRT_MT; + } + v6 = unseen_objects; + unseen_objects = ob; + ob->next = v6; + if ( v5 ) + { + if ( InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + } +} +// 4E80BC: using guessed type int once_22341; +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043A860) -------------------------------------------------------- +void __cdecl __register_frame_info_table(void *begin, object *ob) +{ + __register_frame_info_table_bases(begin, ob, 0, 0); +} + +//----- (0043A890) -------------------------------------------------------- +void __cdecl __register_frame_table(void *begin) +{ + object *ob; // [esp+4h] [ebp-18h] + + ob = (object *)malloc(0x18u); + __register_frame_info_table_bases(begin, ob, 0, 0); +} + +//----- (0043A8D0) -------------------------------------------------------- +void *__cdecl __deregister_frame_info_bases(const void *begin) +{ + object *v1; // eax + object **p_next; // ecx + const void *single; // edx + object *v4; // ebx + object **v6; // edx + const void **v7; // eax + + if ( !begin || !*(_DWORD *)begin ) + return 0; + if ( _CRT_MT ) + { + if ( once_22341 ) + goto LABEL_39; + if ( InterlockedIncrement(&dword_4E80C0) ) + { + while ( !once_22341 ) + Sleep(0); + } + else + { + init_object_mutex(); + once_22341 = 1; + } + if ( _CRT_MT ) + { +LABEL_39: + if ( InterlockedIncrement(&object_mutex.counter) && WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&object_mutex.counter); + } + } + v1 = unseen_objects; + if ( unseen_objects ) + { + p_next = &unseen_objects; + do + { + single = v1->u.single; + v4 = v1; + v1 = v1->next; + if ( begin == single ) + { + *p_next = v1; + goto LABEL_11; + } + p_next = &v4->next; + } + while ( v1 ); + } + v4 = seen_objects; + if ( !seen_objects ) + { +LABEL_30: + if ( _CRT_MT && InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + abort(); + } + v6 = &seen_objects; + while ( 1 ) + { + v7 = (const void **)v4->u.single; + if ( (*(_BYTE *)&v4->s.b & 1) != 0 ) + break; + if ( begin == v7 ) + { + *v6 = v4->next; + goto LABEL_11; + } +LABEL_17: + v6 = &v4->next; + v4 = v4->next; + if ( !v4 ) + goto LABEL_30; + } + if ( begin != *v7 ) + goto LABEL_17; + *v6 = v4->next; + __mingw_free((unsigned int)v7); +LABEL_11: + if ( _CRT_MT ) + { + if ( InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + } + return v4; +} +// 4E80BC: using guessed type int once_22341; +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043AAE0) -------------------------------------------------------- +void __cdecl __deregister_frame(void *begin) +{ + void *v1; // eax + + if ( *(_DWORD *)begin ) + { + v1 = __deregister_frame_info_bases(begin); + __mingw_free((unsigned int)v1); + } +} + +//----- (0043AB10) -------------------------------------------------------- +const fde *__cdecl _Unwind_Find_FDE(void *pc, dwarf_eh_bases *bases) +{ + object *v2; // ebx + const fde *v3; // esi + char cie_encoding; // bp + int *v5; // eax + object **p_next; // edx + object *v8; // eax + _Unwind_Ptr func[8]; // [esp+1Ch] [ebp-20h] BYREF + + if ( _CRT_MT ) + { + if ( once_22341 ) + goto LABEL_3; + if ( InterlockedIncrement(&dword_4E80C0) ) + { + while ( !once_22341 ) + Sleep(0); + if ( _CRT_MT ) + { +LABEL_3: + if ( InterlockedIncrement(&object_mutex.counter) && WaitForSingleObject(object_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&object_mutex.counter); + } + } + else + { + init_object_mutex(); + once_22341 = 1; + if ( _CRT_MT ) + goto LABEL_3; + } + } + v2 = seen_objects; + if ( !seen_objects ) + goto LABEL_15; + while ( v2->pc_begin > pc ) + { + v2 = v2->next; + if ( !v2 ) + goto LABEL_15; + } + v3 = search_object((int)v2, (char *)pc); + if ( v3 ) + { +LABEL_9: + if ( _CRT_MT && InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + bases->tbase = v2->tbase; + bases->dbase = v2->dbase; + if ( (*(_BYTE *)&v2->s.b & 4) != 0 ) + cie_encoding = get_cie_encoding((const dwarf_cie *)((char *)&v3->CIE_delta - v3->CIE_delta)); + else + cie_encoding = *(_WORD *)&v2->s.b >> 3; + v5 = (int *)base_from_object(cie_encoding, (int)v2); + read_encoded_value_with_base_0(cie_encoding, v5, (int *)v3->pc_begin, (int *)func); + bases->func = (void *)func[0]; + return v3; + } + else + { +LABEL_15: + while ( 1 ) + { + v2 = unseen_objects; + if ( !unseen_objects ) + break; + unseen_objects = unseen_objects->next; + v3 = search_object((int)v2, (char *)pc); + v8 = seen_objects; + if ( seen_objects ) + { + p_next = &seen_objects; + while ( v8->pc_begin >= v2->pc_begin ) + { + p_next = &v8->next; + v8 = v8->next; + if ( !v8 ) + goto LABEL_14; + } + v2->next = v8; + *p_next = v2; + if ( v3 ) + goto LABEL_9; + } + else + { + p_next = &seen_objects; +LABEL_14: + v2->next = v8; + *p_next = v2; + if ( v3 ) + goto LABEL_9; + } + } + if ( _CRT_MT && InterlockedDecrement(&object_mutex.counter) >= 0 ) + ReleaseSemaphore(object_mutex.sema, 1, 0); + return 0; + } +} +// 4E80BC: using guessed type int once_22341; +// 15412D0: using guessed type int _CRT_MT; +// 43AB10: using guessed type _Unwind_Ptr func[8]; + +//----- (0043AD90) -------------------------------------------------------- +void __cdecl emutls_destroy(void *ptr) +{ + int v1; // edi + int v2; // ebx + int v3; // eax + + v1 = *(_DWORD *)ptr; + if ( *(_DWORD *)ptr ) + { + v2 = 0; + do + { + v3 = *((_DWORD *)ptr + v2 + 1); + if ( v3 ) + __mingw_free(*(_DWORD *)(v3 - 4)); + ++v2; + } + while ( v1 != v2 ); + } + __mingw_free((unsigned int)ptr); +} + +//----- (0043ADE0) -------------------------------------------------------- +_DWORD *__usercall emutls_alloc@(size_t *a1@) +{ + unsigned int v2; // ebp + size_t v3; // edi + _DWORD *v4; // eax + _DWORD *v5; // ebx + const void *Src; // eax + void *v8; // eax + size_t v9; // [esp+8h] [ebp-24h] + + v2 = a1[1]; + v3 = *a1; + if ( v2 > 4 ) + { + v8 = malloc(v2 + v3 + 3); + if ( v8 ) + { + v5 = (_DWORD *)(-v2 & ((unsigned int)v8 + v2 + 3)); + *(v5 - 1) = v8; + Src = (const void *)a1[3]; + v9 = v3; + if ( Src ) + goto LABEL_4; + goto LABEL_7; + } +LABEL_8: + emutls_alloc_cold(); + } + v4 = malloc(v3 + 4); + if ( !v4 ) + goto LABEL_8; + *v4 = v4; + v5 = v4 + 1; + Src = (const void *)a1[3]; + v9 = v3; + if ( Src ) + { +LABEL_4: + memcpy(v5, Src, v9); + return v5; + } +LABEL_7: + memset(v5, 0, v9); + return v5; +} + +//----- (0043AE80) -------------------------------------------------------- +DWORD emutls_init() +{ + int v0; // eax + DWORD result; // eax + + emutls_mutex.counter = -1; + emutls_mutex.sema = CreateSemaphoreW(0, 0, 0xFFFF, 0); + v0 = TlsAlloc(); + if ( v0 == -1 ) + { + result = GetLastError(); + } + else + { + emutls_key = v0; + result = __mingwthr_key_dtor(v0, (int)emutls_destroy); + } + if ( result ) + emutls_init_cold(); + return result; +} + +//----- (0043AEF0) -------------------------------------------------------- +_DWORD *__cdecl __emutls_get_address(size_t *a1) +{ + _DWORD *result; // eax + pointer v2; // edi + DWORD dwTlsIndex; // ebx + DWORD LastError; // ebp + pointer *Value; // ebx + pointer v6; // ebp + pointer *v7; // ebx + pointer *v8; // eax + int v9; // edx + pointer *v10; // eax + int v11; // [esp+1Ch] [ebp-20h] + + if ( !_CRT_MT ) + { + result = (_DWORD *)a1[2]; + if ( !result ) + { + result = emutls_alloc(a1); + a1[2] = (size_t)result; + } + return result; + } + v2 = a1[2]; + if ( !v2 ) + { + if ( !_CRT_MT ) + goto LABEL_28; + if ( once_21263 ) + goto LABEL_39; + if ( InterlockedIncrement(&dword_4E80C8) ) + { + while ( !once_21263 ) + Sleep(0); + } + else + { + emutls_init(); + once_21263 = 1; + } + if ( _CRT_MT ) + { +LABEL_39: + if ( InterlockedIncrement(&emutls_mutex.counter) && WaitForSingleObject(emutls_mutex.sema, 0xFFFFFFFF) ) + InterlockedDecrement(&emutls_mutex.counter); + v2 = a1[2]; + if ( v2 ) + goto LABEL_14; + } + else + { +LABEL_28: + v2 = a1[2]; + if ( v2 ) + goto LABEL_5; + } + v2 = emutls_size + 1; + emutls_size = v2; + a1[2] = v2; +LABEL_14: + if ( _CRT_MT && InterlockedDecrement(&emutls_mutex.counter) >= 0 ) + ReleaseSemaphore(emutls_mutex.sema, 1, 0); + } +LABEL_5: + dwTlsIndex = emutls_key; + LastError = GetLastError(); + Value = (pointer *)TlsGetValue(dwTlsIndex); + SetLastError(LastError); + if ( !Value ) + { + v8 = (pointer *)calloc(v2 + 33, 4u); + Value = v8; + if ( v8 ) + { + *v8 = v2 + 32; + goto LABEL_19; + } +LABEL_35: + __emutls_get_address_cold(); + } + v6 = *Value; + if ( *Value < v2 ) + { + v9 = 2 * v6; + if ( v2 > 2 * v6 ) + v9 = v2 + 32; + v11 = v9; + v10 = (pointer *)__mingw_realloc((unsigned int)Value, 4 * v9 + 4); + Value = v10; + if ( v10 ) + { + *v10 = v11; + memset(&v10[v6 + 1], 0, 4 * (v11 - v6)); +LABEL_19: + if ( !TlsSetValue(emutls_key, Value) ) + GetLastError(); + goto LABEL_7; + } + goto LABEL_35; + } +LABEL_7: + v7 = &Value[v2]; + result = (_DWORD *)*v7; + if ( !*v7 ) + { + result = emutls_alloc(a1); + *v7 = (pointer)result; + } + return result; +} +// 4E80C4: using guessed type int once_21263; +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043B160) -------------------------------------------------------- +void __cdecl __emutls_register_common(__emutls_object *obj, word size, word align, void *templ) +{ + if ( obj->size < size ) + { + obj->size = size; + obj->templ = 0; + } + if ( obj->align < align ) + obj->align = align; + if ( templ ) + { + if ( obj->size == size ) + obj->templ = templ; + } +} + +//----- (0043B4F0) -------------------------------------------------------- +int __cdecl __mingwthr_key_dtor(int a1, int a2) +{ + if ( a2 ) + return ___w64_mingwthr_add_key_dtor(a1, a2); + else + return 0; +} + +//----- (0043B510) -------------------------------------------------------- +int __cdecl _txnal_cow_string_D1() +{ + int v0; // eax + + v0 = MEMORY[0](); + return MEMORY[0](1, 0, v0 - 12); +} + +//----- (0043B540) -------------------------------------------------------- +void __cdecl __noreturn _txnal_cow_string_c_str() +{ + JUMPOUT(0); +} +// 43B544: control flows out of bounds to 0 + +//----- (0043B550) -------------------------------------------------------- +void __cdecl __noreturn _txnal_sso_string_c_str() +{ + JUMPOUT(0); +} +// 43B554: control flows out of bounds to 0 + +//----- (0043B560) -------------------------------------------------------- +char *__cdecl _txnal_logic_error_get_msg(char *a1) +{ + return a1 + 4; +} + +//----- (0043B570) -------------------------------------------------------- +void __cdecl _txnal_cow_string_D1_commit(volatile signed __int32 *a1) +{ + int v1; // eax + int v2[3]; // [esp+1Fh] [ebp-Dh] BYREF + + if ( a1 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + { + v1 = _InterlockedExchangeAdd(a1 + 2, 0xFFFFFFFF); + } + else + { + v1 = *((_DWORD *)a1 + 2); + *((_DWORD *)a1 + 2) = v1 - 1; + } + if ( v1 <= 0 ) + std::string::_Rep::_M_destroy((void *)a1, (int)v2); + } +} +// 15412D0: using guessed type int _CRT_MT; +// 43B570: using guessed type int var_D[3]; + +//----- (0043B5C0) -------------------------------------------------------- +char *__cdecl _txnal_runtime_error_get_msg(char *a1) +{ + return a1 + 4; +} + +//----- (0043B5D0) -------------------------------------------------------- +_DWORD *__cdecl _txnal_cow_string_C1_for_exceptions(_DWORD *a1) +{ + int v1; // ebx + _DWORD *v2; // eax + _DWORD *v3; // esi + _DWORD *result; // eax + + v1 = 1; + while ( (unsigned __int8)MEMORY[0]() ) + ++v1; + v2 = (_DWORD *)MEMORY[0](v1 + 12); + v2[2] = 0; + v3 = v2 + 3; + v2[1] = v1 - 1; + *v2 = v1 - 1; + MEMORY[0](v1); + result = a1; + *a1 = v3; + return result; +} +// 4DB784: using guessed type void __noreturn _txnal_cow_string_C1_for_exceptions(void); + +//----- (0043B640) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNKSt11logic_error4whatEv(int a1) +{ + JUMPOUT(0); +} +// 43B647: control flows out of bounds to 0 + +//----- (0043B660) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNKSt13runtime_error4whatEv(int a1) +{ + JUMPOUT(0); +} +// 43B667: control flows out of bounds to 0 + +//----- (0043B680) -------------------------------------------------------- +void __cdecl _ZGTtNSt11logic_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::logic_error::~logic_error(v2); +} +// 43B693: variable 'v1' is possibly undefined +// 43B680: using guessed type _DWORD var_14[5]; + +//----- (0043B6E0) -------------------------------------------------------- +void __cdecl _ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::logic_error::~logic_error(v2); +} +// 43B6F3: variable 'v1' is possibly undefined +// 43B6E0: using guessed type _DWORD var_14[5]; + +//----- (0043B740) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt11logic_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 43B75B: control flows out of bounds to 0 + +//----- (0043B760) -------------------------------------------------------- +int _ZGTtNSt11logic_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0043B770) -------------------------------------------------------- +void __cdecl _ZGTtNSt11range_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F5F94; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::range_error::~range_error(v2); +} +// 43B783: variable 'v1' is possibly undefined +// 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); + +//----- (0043B7E0) -------------------------------------------------------- +void __cdecl _ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F5F94; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::range_error::~range_error(v2); +} +// 43B7F3: variable 'v1' is possibly undefined +// 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); + +//----- (0043B850) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt11range_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 43B86B: control flows out of bounds to 0 + +//----- (0043B870) -------------------------------------------------------- +int _ZGTtNSt11range_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0043B880) -------------------------------------------------------- +void __cdecl _ZGTtNSt12domain_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F6018; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::domain_error::~domain_error(v2); +} +// 43B893: variable 'v1' is possibly undefined +// 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); + +//----- (0043B8F0) -------------------------------------------------------- +void __cdecl _ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F6018; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::domain_error::~domain_error(v2); +} +// 43B903: variable 'v1' is possibly undefined +// 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); + +//----- (0043B960) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt12domain_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 43B97B: control flows out of bounds to 0 + +//----- (0043B980) -------------------------------------------------------- +int _ZGTtNSt12domain_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0043B990) -------------------------------------------------------- +void __cdecl _ZGTtNSt12length_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F602C; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::length_error::~length_error(v2); +} +// 43B9A3: variable 'v1' is possibly undefined +// 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); + +//----- (0043BA00) -------------------------------------------------------- +void __cdecl _ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F602C; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::length_error::~length_error(v2); +} +// 43BA13: variable 'v1' is possibly undefined +// 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); + +//----- (0043BA70) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt12length_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 43BA8B: control flows out of bounds to 0 + +//----- (0043BA90) -------------------------------------------------------- +int _ZGTtNSt12length_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0043BAA0) -------------------------------------------------------- +void __cdecl _ZGTtNSt12out_of_rangeC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F6040; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::out_of_range::~out_of_range(v2); +} +// 43BAB3: variable 'v1' is possibly undefined +// 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); + +//----- (0043BB10) -------------------------------------------------------- +void __cdecl _ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F6040; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::out_of_range::~out_of_range(v2); +} +// 43BB23: variable 'v1' is possibly undefined +// 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); + +//----- (0043BB80) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt12out_of_rangeD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 43BB9B: control flows out of bounds to 0 + +//----- (0043BBA0) -------------------------------------------------------- +int _ZGTtNSt12out_of_rangeD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0043BBB0) -------------------------------------------------------- +void __cdecl _ZGTtNSt13runtime_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::runtime_error::~runtime_error(v2); +} +// 43BBC3: variable 'v1' is possibly undefined +// 43BBB0: using guessed type _DWORD var_14[5]; + +//----- (0043BC10) -------------------------------------------------------- +void __cdecl _ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + _DWORD v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::runtime_error::~runtime_error(v2); +} +// 43BC23: variable 'v1' is possibly undefined +// 43BC10: using guessed type _DWORD var_14[5]; + +//----- (0043BC70) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt13runtime_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 43BC8B: control flows out of bounds to 0 + +//----- (0043BC90) -------------------------------------------------------- +int _ZGTtNSt13runtime_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0043BCA0) -------------------------------------------------------- +void __cdecl _ZGTtNSt14overflow_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F6358; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::overflow_error::~overflow_error(v2); +} +// 43BCB3: variable 'v1' is possibly undefined +// 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); + +//----- (0043BD10) -------------------------------------------------------- +void __cdecl _ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F6358; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::overflow_error::~overflow_error(v2); +} +// 43BD23: variable 'v1' is possibly undefined +// 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); + +//----- (0043BD80) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt14overflow_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 43BD9B: control flows out of bounds to 0 + +//----- (0043BDA0) -------------------------------------------------------- +int _ZGTtNSt14overflow_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0043BDB0) -------------------------------------------------------- +void __cdecl _ZGTtNSt15underflow_errorC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F658C; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::underflow_error::~underflow_error(v2); +} +// 43BDC3: variable 'v1' is possibly undefined +// 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); + +//----- (0043BE20) -------------------------------------------------------- +void __cdecl _ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::runtime_error::runtime_error((int)v2, (std::runtime_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F658C; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::underflow_error::~underflow_error(v2); +} +// 43BE33: variable 'v1' is possibly undefined +// 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); + +//----- (0043BE90) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt15underflow_errorD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 43BEAB: control flows out of bounds to 0 + +//----- (0043BEB0) -------------------------------------------------------- +int _ZGTtNSt15underflow_errorD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0043BEC0) -------------------------------------------------------- +void __cdecl _ZGTtNSt16invalid_argumentC2EPKc(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F65C0; + MEMORY[0](8); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::invalid_argument::~invalid_argument(v2); +} +// 43BED3: variable 'v1' is possibly undefined +// 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); + +//----- (0043BF30) -------------------------------------------------------- +void __cdecl _ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(_DWORD *a1) +{ + char *v1; // [esp+4h] [ebp-28h] + int v2[5]; // [esp+18h] [ebp-14h] BYREF + + std::logic_error::logic_error((int)v2, (std::logic_error *)&unk_4EE074, v1); + v2[0] = (int)&off_4F65C0; + MEMORY[0](8); + MEMORY[0](); + _txnal_cow_string_C1_for_exceptions(a1 + 1); + std::invalid_argument::~invalid_argument(v2); +} +// 43BF43: variable 'v1' is possibly undefined +// 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); + +//----- (0043BFA0) -------------------------------------------------------- +void __cdecl __noreturn _ZGTtNSt16invalid_argumentD0Ev(int a1) +{ + _txnal_cow_string_D1(); + JUMPOUT(0); +} +// 43BFBB: control flows out of bounds to 0 + +//----- (0043BFC0) -------------------------------------------------------- +int _ZGTtNSt16invalid_argumentD2Ev() +{ + return _txnal_cow_string_D1(); +} + +//----- (0043BFD0) -------------------------------------------------------- +void __cdecl eh_globals_dtor(int *a1) +{ + int v1; // ebx + int v2; // eax + + if ( a1 ) + { + v1 = *a1; + while ( v1 ) + { + v2 = v1; + v1 = *(_DWORD *)(v1 + 16); + _Unwind_DeleteException((_Unwind_Exception *)(v2 + 48)); + } + __mingw_free((unsigned int)a1); + } +} + +//----- (0043C020) -------------------------------------------------------- +int __usercall get_ttype_entry@(int a1@, int a2@) +{ + char v2; // bl + unsigned __int8 v3; // cl + int v4; // ecx + int v6[4]; // [esp+1Ch] [ebp-10h] BYREF + + v2 = *(_BYTE *)(a1 + 20); + if ( v2 == -1 ) + { + v4 = 0; + goto LABEL_7; + } + v3 = v2 & 7; + if ( (v2 & 7) == 2 ) + { + v4 = -2 * a2; + goto LABEL_7; + } + if ( v3 <= 2u ) + { + if ( v3 ) + goto LABEL_12; +LABEL_9: + v4 = -4 * a2; + goto LABEL_7; + } + if ( v3 == 3 ) + goto LABEL_9; + if ( v3 != 4 ) +LABEL_12: + get_ttype_entry(); + v4 = -8 * a2; +LABEL_7: + read_encoded_value_with_base(v2, *(int **)(a1 + 8), (int *)(*(_DWORD *)(a1 + 12) + v4), v6); + return v6[0]; +} +// 43C020: using guessed type int var_10[4]; + +//----- (0043C0A0) -------------------------------------------------------- +int __usercall get_adjusted_ptr@(int a1@, int a2@, int **a3@) +{ + int result; // eax + int *v7; // [esp+1Ch] [ebp-10h] BYREF + + v7 = *a3; + if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2) ) + v7 = (int *)*v7; + result = (*(int (__thiscall **)(int, int, int **, int))(*(_DWORD *)a1 + 16))(a1, a2, &v7, 1); + if ( (_BYTE)result ) + *a3 = v7; + return result; +} + +//----- (0043C100) -------------------------------------------------------- +char *__usercall parse_lsda_header@(_Unwind_Context *a1@, char *a2@, int a3@) +{ + _Unwind_Ptr RegionStart; // eax + char v7; // dl + int *v8; // ebp + char v9; // al + char *v10; // esi + int v11; // edi + int v12; // ecx + char v13; // dl + int v14; // eax + char *v15; // edx + int v16; // edi + int v17; // ecx + char v18; // si + int v19; // eax + char *result; // eax + char v21; // di + int *v22; // eax + char *encoded_value_with_base; // ebp + char v24; // al + + RegionStart = 0; + if ( a1 ) + RegionStart = _Unwind_GetRegionStart(a1); + *(_DWORD *)a3 = RegionStart; + v7 = *a2; + v8 = (int *)(a2 + 1); + if ( *a2 == -1 ) + { + *(_DWORD *)(a3 + 4) = RegionStart; + v9 = *(_BYTE *)v8; + v10 = a2 + 2; + *(_BYTE *)(a3 + 20) = *(_BYTE *)v8; + if ( v9 != -1 ) + goto LABEL_5; +LABEL_12: + *(_DWORD *)(a3 + 12) = 0; + goto LABEL_8; + } + v21 = *a2; + v22 = (int *)base_of_encoded_value(v7, a1); + encoded_value_with_base = read_encoded_value_with_base(v21, v22, v8, (int *)(a3 + 4)); + v24 = *encoded_value_with_base; + v10 = encoded_value_with_base + 1; + *(_BYTE *)(a3 + 20) = *encoded_value_with_base; + if ( v24 == -1 ) + goto LABEL_12; +LABEL_5: + v11 = 0; + v12 = 0; + do + { + v13 = *v10++; + v14 = (v13 & 0x7F) << v12; + v12 += 7; + v11 |= v14; + } + while ( v13 < 0 ); + *(_DWORD *)(a3 + 12) = &v10[v11]; +LABEL_8: + v15 = v10 + 1; + v16 = 0; + v17 = 0; + *(_BYTE *)(a3 + 21) = *v10; + do + { + v18 = *v15++; + v19 = (v18 & 0x7F) << v17; + v17 += 7; + v16 |= v19; + } + while ( v18 < 0 ); + result = v15; + *(_DWORD *)(a3 + 16) = &v15[v16]; + return result; +} + +//----- (0043C1E0) -------------------------------------------------------- +int __usercall check_exception_spec@(int a1@, int a2@, int *a3@, int a4) +{ + char *v6; // ebx + int v7; // ebp + int v8; // ecx + char v9; // dl + int v10; // eax + int ttype_entry; // eax + int result; // eax + int *v13; // [esp+Ch] [ebp-20h] BYREF + + v13 = a3; + v6 = (char *)(*(_DWORD *)(a1 + 12) + ~a4); + while ( 1 ) + { + v7 = 0; + v8 = 0; + do + { + v9 = *v6++; + v10 = (v9 & 0x7F) << v8; + v8 += 7; + v7 |= v10; + } + while ( v9 < 0 ); + if ( !v7 ) + break; + ttype_entry = get_ttype_entry(a1, v7); + result = get_adjusted_ptr(ttype_entry, a2, &v13); + if ( (_BYTE)result ) + return result; + } + return 0; +} + +//----- (0043C250) -------------------------------------------------------- +_Unwind_Ptr __usercall base_of_encoded_value@(char a1@, _Unwind_Context *context@) +{ + unsigned __int8 v2; // cl + + if ( a1 == -1 ) + return 0; + v2 = a1 & 0x70; + if ( (a1 & 0x70) == 48 ) + return _Unwind_GetDataRelBase(context); + if ( v2 <= 0x30u ) + { + if ( v2 == 32 ) + return _Unwind_GetTextRelBase(context); + if ( v2 <= 0x20u && (a1 & 0x60) == 0 ) + return 0; + goto LABEL_13; + } + if ( v2 != 64 ) + { + if ( v2 == 80 ) + return 0; +LABEL_13: + base_of_encoded_value(); + } + return _Unwind_GetRegionStart(context); +} + +//----- (0043C2D0) -------------------------------------------------------- +void __cdecl __gxx_exception_cleanup(_Unwind_Reason_Code a1, _Unwind_Exception *a2) +{ + void (__fastcall *v2)(_Unwind_Exception *); // edx + + if ( (unsigned int)a1 > 1 ) + __cxxabiv1::__terminate(*((void (**)(void))&a2[-2].private_2 + 3)); + if ( !_InterlockedSub((volatile signed __int32 *)&a2[-2], 1u) ) + { + v2 = (void (__fastcall *)(_Unwind_Exception *))*(&a2[-2].private_2 + 1); + if ( v2 ) + v2(a2 + 1); + __cxa_free_exception(&a2[1]); + } +} + +//----- (0043C320) -------------------------------------------------------- +char *__usercall read_encoded_value_with_base@(char a1@, int *a2@, int *a3@, int *a4) +{ + int v6; // edx + char *result; // eax + _DWORD *v8; // eax + int v9; // edx + int v10; // ecx + int v11; // ebp + char v12; // dl + int v13; // edi + unsigned int v14; // ecx + int v15; // ebp + char v16; // dl + int v17; // edi + char v18; // di + + if ( a1 == 80 ) + { + v8 = (_DWORD *)(((unsigned int)a3 + 3) & 0xFFFFFFFC); + v9 = *v8; + result = (char *)(v8 + 1); + *a4 = v9; + } + else + { + switch ( a1 & 0xF ) + { + case 0: + case 3: + case 0xB: + v6 = *a3; + result = (char *)(a3 + 1); + goto LABEL_4; + case 1: + result = (char *)a3; + v10 = 0; + v11 = 0; + do + { + v12 = *result++; + v13 = (v12 & 0x7F) << v10; + v10 += 7; + v11 |= v13; + } + while ( v12 < 0 ); + v6 = v11; + goto LABEL_4; + case 2: + v6 = *(unsigned __int16 *)a3; + result = (char *)a3 + 2; + goto LABEL_4; + case 4: + case 0xC: + v6 = *a3; + result = (char *)(a3 + 2); + goto LABEL_4; + case 9: + result = (char *)a3; + v14 = 0; + v15 = 0; + do + { + v16 = *result++; + v17 = (v16 & 0x7F) << v14; + v14 += 7; + v15 |= v17; + } + while ( v16 < 0 ); + v18 = v16; + v6 = v15; + if ( v14 > 0x1F || (v18 & 0x40) == 0 ) + goto LABEL_4; + v6 = (-1 << v14) | v15; + goto LABEL_5; + case 0xA: + v6 = *(__int16 *)a3; + result = (char *)a3 + 2; +LABEL_4: + if ( !v6 ) + goto LABEL_8; +LABEL_5: + if ( (a1 & 0x70) == 16 ) + a2 = a3; + v6 += (int)a2; + if ( a1 < 0 ) + *a4 = *(_DWORD *)v6; + else +LABEL_8: + *a4 = v6; + break; + default: + abort(); + } + } + return result; +} + +//----- (0043C460) -------------------------------------------------------- +void __cdecl __noreturn __cxxabiv1::__terminate(void (*a1)(void)) +{ + a1(); + JUMPOUT(0x4D9BB0); +} +// 43C467: control flows out of bounds to 4D9BB0 +// 4D9BA8: using guessed type void __noreturn __cxxabiv1::__terminate(void); + +//----- (0043C480) -------------------------------------------------------- +void __cdecl __noreturn __cxxabiv1::__unexpected(void (*a1)(void)) +{ + a1(); + std::terminate(); +} + +//----- (0043C490) -------------------------------------------------------- +void __fastcall __cxxabiv1::__forced_unwind::~__forced_unwind(void *a1) +{ + operator delete(a1, 4u); +} + +//----- (0043C4C0) -------------------------------------------------------- +void __fastcall __cxxabiv1::__class_type_info::~__class_type_info(_DWORD *a1) +{ + std::type_info *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F4F74; + std::type_info::~type_info(v2); + operator delete(a1, 8u); +} +// 43C4CC: variable 'v2' is possibly undefined +// 4F4F74: using guessed type void (__cdecl *off_4F4F74)(__cxxabiv1::__class_type_info *__hidden this); + +//----- (0043C4F0) -------------------------------------------------------- +void __cdecl __cxxabiv1::__class_type_info::~__class_type_info(__cxxabiv1::__class_type_info *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F4F74; + std::type_info::~type_info(this); +} +// 43C4F0: variable 'v1' is possibly undefined +// 4F4F74: using guessed type void (__cdecl *off_4F4F74)(__cxxabiv1::__class_type_info *__hidden this); + +//----- (0043C500) -------------------------------------------------------- +void __fastcall __cxxabiv1::__foreign_exception::~__foreign_exception(void *a1) +{ + operator delete(a1, 4u); +} + +//----- (0043C530) -------------------------------------------------------- +void __fastcall __cxxabiv1::__si_class_type_info::~__si_class_type_info(_DWORD *a1) +{ + __cxxabiv1::__class_type_info *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F4FB4; + __cxxabiv1::__class_type_info::~__class_type_info(v2); + operator delete(a1, 0xCu); +} +// 43C53C: variable 'v2' is possibly undefined +// 4F4FB4: using guessed type void (__cdecl *off_4F4FB4)(__cxxabiv1::__si_class_type_info *__hidden this); + +//----- (0043C560) -------------------------------------------------------- +void __cdecl __cxxabiv1::__si_class_type_info::~__si_class_type_info(__cxxabiv1::__si_class_type_info *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F4FB4; + __cxxabiv1::__class_type_info::~__class_type_info(this); +} +// 43C560: variable 'v1' is possibly undefined +// 4F4FB4: using guessed type void (__cdecl *off_4F4FB4)(__cxxabiv1::__si_class_type_info *__hidden this); + +//----- (0043C570) -------------------------------------------------------- +void __fastcall __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(_DWORD *a1) +{ + __cxxabiv1::__class_type_info *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F4FE0; + __cxxabiv1::__class_type_info::~__class_type_info(v2); + operator delete(a1, 0x18u); +} +// 43C57C: variable 'v2' is possibly undefined +// 4F4FE0: using guessed type void (__cdecl *off_4F4FE0)(__cxxabiv1::__vmi_class_type_info *__hidden this); + +//----- (0043C5A0) -------------------------------------------------------- +void __cdecl __cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info(__cxxabiv1::__vmi_class_type_info *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F4FE0; + __cxxabiv1::__class_type_info::~__class_type_info(this); +} +// 43C5A0: variable 'v1' is possibly undefined +// 4F4FE0: using guessed type void (__cdecl *off_4F4FE0)(__cxxabiv1::__vmi_class_type_info *__hidden this); + +//----- (0043C5B0) -------------------------------------------------------- +__gthread_mutex_t *`anonymous namespace'::get_locale_mutex() +{ + if ( (_BYTE)`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex ) + return &`anonymous namespace'::get_locale_mutex(void)::locale_mutex; + if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex) ) + { + if ( _CRT_MT ) + __gthr_win32_mutex_init_function(&`anonymous namespace'::get_locale_mutex(void)::locale_mutex); + __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_mutex(void)::locale_mutex); + atexit(__tcf_0_3); + } + return &`anonymous namespace'::get_locale_mutex(void)::locale_mutex; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043C630) -------------------------------------------------------- +void __fastcall `anonymous namespace'::io_error_category::~io_error_category(_DWORD *a1) +{ + std::_V2::error_category *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F500C; + std::_V2::error_category::~error_category(v2); + operator delete(a1); +} +// 43C63C: variable 'v2' is possibly undefined +// 4F500C: using guessed type void (__cdecl *off_4F500C)(_anonymous_namespace_::io_error_category *__hidden this); + +//----- (0043C650) -------------------------------------------------------- +void __cdecl `anonymous namespace'::io_error_category::~io_error_category( + _anonymous_namespace_::io_error_category *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F500C; + std::_V2::error_category::~error_category(this); +} +// 43C650: variable 'v1' is possibly undefined +// 4F500C: using guessed type void (__cdecl *off_4F500C)(_anonymous_namespace_::io_error_category *__hidden this); + +//----- (0043C660) -------------------------------------------------------- +void __fastcall `anonymous namespace'::system_error_category::~system_error_category(void *a1) +{ + operator delete(a1); +} + +//----- (0043C680) -------------------------------------------------------- +void (__cdecl ***`anonymous namespace'::__io_category_instance())(_anonymous_namespace_::io_error_category *__hidden this) +{ + if ( (_BYTE)`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec ) + return &`anonymous namespace'::__io_category_instance(void)::__ec; + if ( __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec) ) + { + __cxa_guard_release(&`guard variable for'`anonymous namespace'::__io_category_instance(void)::__ec); + atexit((void (__cdecl *)())__tcf_0_5); + } + return &`anonymous namespace'::__io_category_instance(void)::__ec; +} +// 4E9B50: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); + +//----- (0043C6E0) -------------------------------------------------------- +void __fastcall `anonymous namespace'::generic_error_category::~generic_error_category(void *a1) +{ + operator delete(a1); +} + +//----- (0043C700) -------------------------------------------------------- +_DWORD *__usercall `anonymous namespace'::pool::free@( + int a1@, + struct type_info *a2, + void (__cdecl *a3)(void *)) +{ + int v4; // edi + _DWORD *result; // eax + _DWORD *v6; // ebp + _DWORD *v7; // esi + _DWORD *v8; // edx + int *v9; // ebp + int v10; // ecx + int v11; // [esp+14h] [ebp-28h] + int *v12; // [esp+18h] [ebp-24h] + + v4 = _CRT_MT; + if ( _CRT_MT ) + { + if ( __gthr_win32_mutex_lock(&`anonymous namespace'::emergency_pool) ) + __gnu_cxx::__throw_concurrence_lock_error(); + v4 = _CRT_MT; + } + result = (_DWORD *)dword_4E8378; + v6 = (_DWORD *)(a1 - 16); + if ( !dword_4E8378 + || (v11 = *(_DWORD *)(a1 - 16), v7 = (_DWORD *)((char *)v6 + v11), dword_4E8378 > (unsigned int)v6 + v11) ) + { + *(_DWORD *)(a1 - 12) = dword_4E8378; + dword_4E8378 = a1 - 16; + goto LABEL_18; + } + v8 = *(_DWORD **)(dword_4E8378 + 4); + if ( (_DWORD *)dword_4E8378 == (_DWORD *)((char *)v6 + v11) ) + { + v10 = *(_DWORD *)dword_4E8378 + v11; + *(_DWORD *)(a1 - 12) = v8; + *(_DWORD *)(a1 - 16) = v10; + dword_4E8378 = a1 - 16; + goto LABEL_18; + } + if ( v8 ) + { + v9 = &dword_4E8378; + while ( v7 < v8 ) + { + v9 = result + 1; + if ( !v8[1] ) + { + v12 = result + 1; + result = (_DWORD *)result[1]; + v6 = (_DWORD *)(a1 - 16); + goto LABEL_13; + } + result = v8; + v8 = (_DWORD *)v8[1]; + } + v12 = v9; + v6 = (_DWORD *)(a1 - 16); + if ( v7 == v8 ) + { + v11 += *v7; + result[1] = v7[1]; + } + result = (_DWORD *)*v12; + } + else + { + v12 = &dword_4E8378; + } +LABEL_13: + if ( v6 == (_DWORD *)((char *)result + *result) ) + { + *result += v11; +LABEL_18: + if ( !v4 ) + return result; + goto LABEL_15; + } + *(_DWORD *)(a1 - 12) = result[1]; + *(_DWORD *)(a1 - 16) = v11; + result = (_DWORD *)*v12; + *(_DWORD *)(*v12 + 4) = v6; + if ( !v4 ) + return result; +LABEL_15: + result = (_DWORD *)__gthr_win32_mutex_unlock(&`anonymous namespace'::emergency_pool); + if ( result ) + `anonymous namespace'::pool::free(a2, a3); + return result; +} +// 4E8378: using guessed type int dword_4E8378; +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043C870) -------------------------------------------------------- +unsigned int *__usercall `anonymous namespace'::pool::allocate@(int a1@) +{ + unsigned int v2; // eax + unsigned int *v3; // ebx + unsigned int v4; // eax + int *v5; // esi + unsigned int v6; // edx + unsigned int *v7; // ecx + unsigned int v8; // edx + unsigned int *v10; // edi + int v11; // eax + + if ( _CRT_MT ) + { + if ( __gthr_win32_mutex_lock(&`anonymous namespace'::emergency_pool) ) + `anonymous namespace'::pool::allocate(); + v11 = a1 + 16; + if ( (unsigned int)(a1 + 16) < 8 ) + v11 = 8; + v3 = (unsigned int *)dword_4E8378; + v4 = (v11 + 15) & 0xFFFFFFF0; + if ( !dword_4E8378 ) + { +LABEL_19: + v3 = 0; +LABEL_11: + if ( _CRT_MT && __gthr_win32_mutex_unlock(&`anonymous namespace'::emergency_pool) ) + JUMPOUT(0x4DAF89); + return v3; + } +LABEL_5: + v5 = &dword_4E8378; + while ( 1 ) + { + v6 = *v3; + v7 = v3; + v3 = (unsigned int *)v3[1]; + if ( v6 >= v4 ) + break; + v5 = (int *)(v7 + 1); + if ( !v3 ) + goto LABEL_19; + } + v8 = v6 - v4; + if ( v8 > 7 ) + { + v10 = (unsigned int *)((char *)v7 + v4); + v10[1] = (unsigned int)v3; + v7 = (unsigned int *)*v5; + *v10 = v8; + *v7 = v4; + *v5 = (int)v10; + } + else + { + *v5 = (int)v3; + } + v3 = v7 + 4; + goto LABEL_11; + } + v2 = a1 + 16; + if ( v2 < 8 ) + v2 = 8; + v3 = (unsigned int *)dword_4E8378; + v4 = (v2 + 15) & 0xFFFFFFF0; + if ( dword_4E8378 ) + goto LABEL_5; + return v3; +} +// 43C8E1: control flows out of bounds to 4DAF89 +// 4E8378: using guessed type int dword_4E8378; +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043C960) -------------------------------------------------------- +void `anonymous namespace'::init(void) +{ + if ( _CRT_MT ) + __gthr_win32_recursive_mutex_init_function(&`anonymous namespace'::fake_mutex); + `anonymous namespace'::static_mutex = &`anonymous namespace'::fake_mutex; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043C9A0) -------------------------------------------------------- +unsigned int __usercall `anonymous namespace'::xwrite@(int a1@, char *a2@, unsigned int a3@) +{ + unsigned int MaxCharCount; // ebp + int v7; // eax + + MaxCharCount = a3; + while ( 1 ) + { + while ( 1 ) + { + v7 = write(a1, a2, MaxCharCount); + if ( v7 != -1 ) + break; + if ( *_errno() != 4 ) + return a3 - MaxCharCount; + } + MaxCharCount -= v7; + if ( !MaxCharCount ) + break; + a2 += v7; + } + return a3; +} + +//----- (0043CA00) -------------------------------------------------------- +#error "43CA6E: call analysis failed (funcsize=38)" + +//----- (0043CAA0) -------------------------------------------------------- +#error "43CB0E: call analysis failed (funcsize=38)" + +//----- (0043CB40) -------------------------------------------------------- +int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) +{ + _DWORD *v3; // eax + volatile signed __int32 *v4; // edx + void (__cdecl *v6)(void *); // [esp+4h] [ebp-24h] + volatile signed __int32 *v7; // [esp+1Ch] [ebp-Ch] BYREF + + *this = 0; + this[1] = 0; + v7 = 0; + v3 = operator new((struct type_info *)0x10, v6); + v3[3] = a2; + v3[1] = 1; + *this = a2; + v4 = (volatile signed __int32 *)this[1]; + v3[2] = 1; + this[1] = v3; + *v3 = &off_4F63A4; + v7 = v4; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v7); +} +// 43CB6B: variable 'v6' is possibly undefined +// 4F63A4: using guessed type int (*off_4F63A4)(); + +//----- (0043CBD8) -------------------------------------------------------- +void __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) +{ + _DWORD *v3; // eax + volatile signed __int32 *v4; // edx + void (__cdecl *v5)(void *); // [esp+4h] [ebp-24h] + volatile signed __int32 *v6; // [esp+1Ch] [ebp-Ch] BYREF + + *this = 0; + this[1] = 0; + v6 = 0; + v3 = operator new((struct type_info *)0x10, v5); + v3[3] = a2; + v3[1] = 1; + *this = a2; + v4 = (volatile signed __int32 *)this[1]; + v3[2] = 1; + this[1] = v3; + *v3 = &off_4F63A4; + v6 = v4; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v6); +} +// 43CC03: variable 'v5' is possibly undefined +// 4F63A4: using guessed type int (*off_4F63A4)(); + +//----- (0043CC70) -------------------------------------------------------- +int __thiscall zcc::shared_ptr::shared_ptr(_DWORD *this, int a2) +{ + _DWORD *v3; // eax + volatile signed __int32 *v4; // edx + void (__cdecl *v6)(void *); // [esp+4h] [ebp-24h] + volatile signed __int32 *v7; // [esp+1Ch] [ebp-Ch] BYREF + + *this = 0; + this[1] = 0; + v7 = 0; + v3 = operator new((struct type_info *)0x10, v6); + v3[3] = a2; + v3[1] = 1; + *this = a2; + v4 = (volatile signed __int32 *)this[1]; + v3[2] = 1; + this[1] = v3; + *v3 = &off_4F63C0; + v7 = v4; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v7); +} +// 43CC9B: variable 'v6' is possibly undefined +// 4F63C0: using guessed type int (*off_4F63C0)(); + +//----- (0043CD08) -------------------------------------------------------- +#error "43CD76: call analysis failed (funcsize=38)" + +//----- (0043CDA8) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::NonTerminal::~NonTerminal(void *a1) +{ + operator delete(a1); +} + +//----- (0043CDBC) -------------------------------------------------------- +char __stdcall WXSS::CSSTreeLib::MarkHostRule::MarkGood( + WXSS::CSSTreeLib::MarkHostRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a2) +{ + int *i; // ebx + int **v3; // edi + int v4; // eax + int v5; // edi + unsigned int v6; // ebx + const char *Literal; // eax + int v8; // ebx + const char ***v9; // edi + const char **v10; // ebx + _DWORD *v11; // eax + char *v12; // eax + unsigned int *v13; // eax + void (__cdecl *v15)(void *); // [esp+4h] [ebp-94h] + int v16; // [esp+1Ch] [ebp-7Ch] + int v17; // [esp+28h] [ebp-70h] BYREF + volatile signed __int32 *v18; // [esp+2Ch] [ebp-6Ch] BYREF + int v19; // [esp+30h] [ebp-68h] BYREF + volatile signed __int32 *v20; // [esp+34h] [ebp-64h] BYREF + void *v21[6]; // [esp+38h] [ebp-60h] BYREF + void *v22[6]; // [esp+50h] [ebp-48h] BYREF + void *v23; // [esp+68h] [ebp-30h] BYREF + volatile signed __int32 *v24; // [esp+6Ch] [ebp-2Ch] BYREF + + for ( i = (int *)*((_DWORD *)this + 30); *((int **)this + 31) != i; i += 2 ) + { + if ( std::operator==(*i, "SELECTORS") ) + { + v3 = *(int ***)(*i + 120); + if ( *(_DWORD *)(*i + 124) - (_DWORD)v3 == 8 ) + { + v4 = **v3; + if ( *(_BYTE *)v4 == 70 && !strcmp((const char *)(v4 + 1), "_SELECTOR") ) + { + std::__shared_ptr::__shared_ptr(&v17, v3); + v5 = *(_DWORD *)(v17 + 120); + v6 = *(_DWORD *)(v17 + 124) - v5; + if ( v6 > 0xF ) + { + v16 = *(_DWORD *)(v5 + 8); + if ( !strcmp(*(const char **)v16, "$NAME") ) + { + Literal = WXSS::Token::GetLiteral((_DWORD *)(v16 + 24)); + if ( !strncmp(Literal, "host", 4u) ) + { + *((_DWORD *)this + 43) = 1; + if ( v6 == 40 ) + { + v8 = *(_DWORD *)(v5 + 24); + if ( !strcmp(*(const char **)v8, "SELECTOR") ) + { + v9 = *(const char ****)(v8 + 120); + if ( *(const char ****)(v8 + 124) != v9 ) + { + v10 = *v9; + if ( !strcmp(**v9, "$NAME") && *WXSS::Token::GetLiteral(v10 + 6) == 46 ) + { + *((_DWORD *)this + 43) = 2; + std::__shared_ptr::__shared_ptr( + &v19, + v9); + if ( !*(_DWORD *)(v19 + 132) ) + { + v11 = operator new((struct type_info *)0x18, v15); + v11[1] = 0; + *v11 = v11 + 2; + *((_BYTE *)v11 + 8) = 0; + zcc::shared_ptr::shared_ptr(v11); + std::__shared_ptr::operator=( + (volatile signed __int32 **)(v19 + 132), + (volatile signed __int32 **)&v23); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v24); + } + v12 = (char *)WXSS::Token::GetLiteral((_DWORD *)(v19 + 24)); + std::string::basic_string(v21, v12); + std::string::substr(v22, v21, 1u, 0xFFFFFFFF); + v13 = std::string::insert((unsigned int *)v22, 0, ".%%HERESUFFIX%%"); + std::string::basic_string(&v23, v13); + std::string::operator=(*(_DWORD **)(v19 + 132), &v23); + std::string::_M_dispose(&v23); + std::string::_M_dispose(v22); + std::string::_M_dispose(v21); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v20); + } + } + } + } + } + } + } + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v18); + return 1; + } + } + } + } + return 1; +} +// 43CF27: variable 'v15' is possibly undefined +// 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); + +//----- (0043D044) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::MarkHostRule::~MarkHostRule(void *a1) +{ + operator delete(a1); +} + +//----- (0043D058) -------------------------------------------------------- +bool __stdcall WXSS::CSSTreeLib::AttrDebugRule::MarkGood( + WXSS::CSSTreeLib::AttrDebugRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a2) +{ + void *v2; // eax + int v3; // edx + unsigned int v4; // esi + int v5; // eax + std::ostream::sentry *v6; // esi + char *Literal; // eax + std::ostream::sentry *v8; // eax + std::ostream::sentry *v9; // esi + char *v10; // eax + std::ostream::sentry *v11; // eax + void *v12; // esi + unsigned int *v13; // edx + void (__cdecl *v15)(void *); // [esp+4h] [ebp-124h] + void (__cdecl *v16)(void *); // [esp+4h] [ebp-124h] + int v17; // [esp+18h] [ebp-110h] + bool v18; // [esp+1Eh] [ebp-10Ah] + bool v19; // [esp+1Fh] [ebp-109h] + bool v20; // [esp+1Fh] [ebp-109h] + unsigned int *v21; // [esp+20h] [ebp-108h] BYREF + volatile signed __int32 *v22; // [esp+24h] [ebp-104h] BYREF + volatile signed __int32 *v23; // [esp+28h] [ebp-100h] BYREF + volatile signed __int32 *v24; // [esp+2Ch] [ebp-FCh] BYREF + volatile signed __int32 *v25; // [esp+30h] [ebp-F8h] BYREF + volatile signed __int32 *v26; // [esp+34h] [ebp-F4h] BYREF + volatile signed __int32 *v27; // [esp+38h] [ebp-F0h] BYREF + volatile signed __int32 *v28; // [esp+3Ch] [ebp-ECh] BYREF + char v29[8]; // [esp+40h] [ebp-E8h] BYREF + char v30[4]; // [esp+48h] [ebp-E0h] BYREF + int v31[55]; // [esp+4Ch] [ebp-DCh] BYREF + + v17 = *((_DWORD *)this + 42); + v2 = operator new((struct type_info *)0xB0, v15); + WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v2); + zcc::shared_ptr::shared_ptr(v3); + std::basic_stringstream,std::allocator>::basic_stringstream((int)v29); + v23 = 0; + v4 = 0; + v24 = 0; + v25 = 0; + v26 = 0; + v18 = 0; + v19 = 0; + while ( 1 ) + { + v5 = *((_DWORD *)this + 30); + if ( (*((_DWORD *)this + 31) - v5) >> 3 <= v4 ) + break; + if ( !v19 ) + { + v19 = std::operator==(*(_DWORD *)(v5 + 8 * v4), "$NAME"); + if ( v19 ) + std::__shared_ptr::operator=( + &v23, + (volatile signed __int32 **)(*((_DWORD *)this + 30) + 8 * v4)); + } + if ( !v18 ) + { + v18 = std::operator==(*(_DWORD *)(*((_DWORD *)this + 30) + 8 * v4), "$ESV"); + if ( v18 ) + std::__shared_ptr::operator=( + &v25, + (volatile signed __int32 **)(*((_DWORD *)this + 30) + 8 * v4)); + } + ++v4; + } + v20 = v18 && v19; + if ( v20 ) + { + v6 = std::operator<<>((std::ostream::sentry *)v30, ";wxcs_style_"); + Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)v23 + 6); + v8 = std::operator<<>(v6, Literal); + v9 = std::operator<<>(v8, " : "); + v10 = (char *)WXSS::Token::GetLiteral((_DWORD *)v25 + 6); + v11 = std::operator<<>(v9, v10); + std::operator<<>(v11, ";"); + std::string::operator=(v21, "FAKE_ATTR"); + v12 = operator new((struct type_info *)0x18, v16); + std::stringbuf::str((int)v12, v31); + zcc::shared_ptr::shared_ptr(v12); + std::__shared_ptr::operator=((volatile signed __int32 **)v21 + 7, &v27); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v28); + v13 = v21; + v21[6] = 3; + v13[41] = v17 + 1; + v13[42] = v17 + 2; + std::vector>::push_back((char **)this + 30, &v21); + *((_BYTE *)this + 116) = 1; + } + else + { + *((_BYTE *)this + 116) = 0; + } + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v26); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v24); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v29); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v22); + return v20; +} +// 43D07A: variable 'v15' is possibly undefined +// 43D091: variable 'v3' is possibly undefined +// 43D219: variable 'v16' is possibly undefined +// 43CA00: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 43D058: using guessed type char var_E0[4]; +// 43D058: using guessed type int var_DC[55]; + +//----- (0043D324) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::AttrDebugRule::~AttrDebugRule(void *a1) +{ + operator delete(a1); +} + +//----- (0043D338) -------------------------------------------------------- +char __userpurge WXSS::CSSTreeLib::BlackListRule::MarkGood@( + int a1@, + WXSS::CSSTreeLib::BlackListRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a3) +{ + unsigned int v4; // ebx + const char *Literal; // edx + int v6; // ecx + int v7; // eax + const char *v9; // [esp+1Ch] [ebp-1Ch] + + v4 = 0; + Literal = WXSS::Token::GetLiteral((_DWORD *)this + 6); + while ( 1 ) + { + v6 = *(_DWORD *)(a1 + 4); + if ( -1431655765 * ((*(_DWORD *)(a1 + 8) - v6) >> 3) <= v4 ) + break; + v9 = Literal; + v7 = _stricmp(*(const char **)(v6 + 24 * v4), Literal); + Literal = v9; + if ( !v7 ) + { + *((_BYTE *)this + 116) = 0; + return v7; + } + ++v4; + } + LOBYTE(v7) = *((_BYTE *)this + 116); + return v7; +} + +//----- (0043D39C) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(void *a1, int a2) +{ + WXSS::CSSTreeLib::BlackListRule::~BlackListRule((int)a1, a2); + operator delete(a1); +} + +//----- (0043D3B8) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::BlackListRule::~BlackListRule(int a1, int a2) +{ + *(_DWORD *)a1 = &off_4F50C8; + std::vector::~vector((void ***)(a1 + 4), a2); +} +// 4F50C8: using guessed type void (__cdecl *off_4F50C8)(WXSS::CSSTreeLib::BlackListRule *__hidden this); + +//----- (0043D3C8) -------------------------------------------------------- +void __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(int this, WXSS::Token *a2, unsigned __int8 a3) +{ + unsigned int v4; // esi + char *Literal; // eax + int v6; // ecx + + if ( *(_BYTE *)(this + 116) ) + { + v4 = *(_DWORD *)(this + 172); + if ( !v4 ) + { + if ( *(_DWORD *)(this + 132) && a3 ) + { + std::string::operator+=(a2, *(_DWORD *)(this + 132)); + } + else + { + Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)(this + 24)); + std::string::operator+=(a2, Literal); + } + while ( 1 ) + { + v6 = *(_DWORD *)(this + 120); + if ( (*(_DWORD *)(this + 124) - v6) >> 3 <= v4 ) + break; + if ( v4 + && *(_DWORD *)(*(_DWORD *)(v6 + 8 * v4) + 164) > *(_DWORD *)(*(_DWORD *)(v6 + 8 * v4 - 8) + 168) + && *(_BYTE *)(*(_DWORD *)a2 + *((_DWORD *)a2 + 1) - 1) != 10 ) + { + std::string::operator+=(a2, " "); + } + ++v4; + WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(a2, a3); + } + if ( std::operator==(this, "MEDIA_RULE") + || std::operator==(this, "RULE") + || std::operator==(this, "DIRECTIVE") ) + { + std::string::operator+=(a2, "\n"); + } + } + } +} + +//----- (0043D4F0) -------------------------------------------------------- +unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(int this, WXSS::Token *a2) +{ + unsigned int v2; // edi + int v4; // eax + int v5; // edx + unsigned int *v6; // eax + _DWORD *v7; // eax + int v8; // edx + unsigned int result; // eax + bool v10; // zf + int v11; // eax + unsigned int *v12; // eax + _DWORD *v13; // eax + void *v14[6]; // [esp+10h] [ebp-78h] BYREF + void *v15[6]; // [esp+28h] [ebp-60h] BYREF + void *v16[6]; // [esp+40h] [ebp-48h] BYREF + void *v17[12]; // [esp+58h] [ebp-30h] BYREF + + v2 = 0; + v4 = *(_DWORD *)(this + 172); + if ( v4 == 1 ) + { + while ( 1 ) + { + v5 = *(_DWORD *)(this + 120); + if ( (*(_DWORD *)(this + 124) - v5) >> 3 <= v2 ) + break; + if ( std::operator==(*(_DWORD *)(v5 + 8 * v2), "SELECTORS") ) + { + std::string::substr(v14, *(_DWORD **)(this + 148), 2u, *(_DWORD *)(*(_DWORD *)(this + 148) + 4) - 7); + WXML::Rewrite::ToStringCode2((int)v15, (int *)v14); + v6 = std::string::insert((unsigned int *)v15, 0, "[is=\""); + std::string::basic_string(v16, v6); + v7 = std::string::append(v16, "\"]"); + std::string::basic_string(v17, v7); + std::string::operator+=(a2, (int)v17); + std::string::_M_dispose(v17); + std::string::_M_dispose(v16); + std::string::_M_dispose(v15); + std::string::_M_dispose(v14); + } + else + { + WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(*(_DWORD *)(this + 120) + 8 * v2), a2, 1u); + } + ++v2; + } + return (unsigned int)std::string::operator+=(a2, "\n"); + } + if ( v4 == 2 ) + { + while ( 1 ) + { + v8 = *(_DWORD *)(this + 120); + if ( (*(_DWORD *)(this + 124) - v8) >> 3 <= v2 ) + break; + v10 = !std::operator==(*(_DWORD *)(v8 + 8 * v2), "SELECTORS"); + v11 = *(_DWORD *)(this + 120); + if ( v10 ) + { + WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*(_DWORD *)(v11 + 8 * v2), a2, 1u); + } + else + { + WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode( + *(_DWORD *)(*(_DWORD *)(**(_DWORD **)(*(_DWORD *)(v11 + 8 * v2) + 120) + 120) + 24), + a2, + 1u); + std::string::substr(v14, *(_DWORD **)(this + 148), 2u, *(_DWORD *)(*(_DWORD *)(this + 148) + 4) - 7); + WXML::Rewrite::ToStringCode2((int)v15, (int *)v14); + v12 = std::string::insert((unsigned int *)v15, 0, "[is=\""); + std::string::basic_string(v16, v12); + v13 = std::string::append(v16, "\"]"); + std::string::basic_string(v17, v13); + std::string::operator+=(a2, (int)v17); + std::string::_M_dispose(v17); + std::string::_M_dispose(v16); + std::string::_M_dispose(v15); + std::string::_M_dispose(v14); + } + ++v2; + } + return (unsigned int)std::string::operator+=(a2, "\n"); + } + while ( 1 ) + { + result = (*(_DWORD *)(this + 124) - *(_DWORD *)(this + 120)) >> 3; + if ( result <= v2 ) + break; + ++v2; + WXSS::CSSTreeLib::CSSSyntaxTree::GetHostRule(a2); + } + return result; +} + +//----- (0043D798) -------------------------------------------------------- +unsigned int __thiscall WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(int this, int a2, int a3) +{ + int i; // esi + std::ostream::sentry *v5; // eax + std::ostream::sentry *v6; // eax + std::ostream::sentry *v7; // esi + unsigned int v8; // esi + unsigned int result; // eax + std::ostream::sentry *v10; // [esp+0h] [ebp-28h] + std::ostream::sentry *v11; // [esp+0h] [ebp-28h] + char *v12; // [esp+4h] [ebp-24h] + char *Literal; // [esp+4h] [ebp-24h] + + for ( i = 0; i < a2; ++i ) + { + if ( *(_BYTE *)(this + 116) ) + v12 = " "; + else + v12 = "- "; + std::operator<<>((std::ostream::sentry *)(a3 + 8), v12); + } + v10 = (std::ostream::sentry *)(a3 + 8); + if ( *(_DWORD *)(this + 132) ) + { + v5 = std::operator<<(v10, (int *)this); + v11 = std::operator<<>(v5, ": "); + std::operator<<>(v11, **(char ***)(this + 132)); + } + else + { + v6 = std::operator<<(v10, (int *)this); + v7 = std::operator<<>(v6, ": "); + Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)(this + 24)); + std::operator<<>(v7, Literal); + } + v8 = 0; + std::endl>((std::ostream::sentry *)(a3 + 8)); + while ( 1 ) + { + result = (*(_DWORD *)(this + 124) - *(_DWORD *)(this + 120)) >> 3; + if ( result <= v8 ) + break; + ++v8; + WXSS::CSSTreeLib::CSSSyntaxTree::Print2Stream(a2 + 1, a3); + } + return result; +} + +//----- (0043D874) -------------------------------------------------------- +int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1) +{ + int result; // eax + + result = a1 + 8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + *(_BYTE *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 24) = 1; + *(_DWORD *)(a1 + 36) = 0; + *(_DWORD *)(a1 + 40) = 0; + *(_DWORD *)(a1 + 44) = 0; + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)(a1 + 144) = 0; + *(_DWORD *)(a1 + 148) = 0; + *(_DWORD *)(a1 + 152) = 0; + *(_DWORD *)(a1 + 156) = 0; + *(_DWORD *)(a1 + 160) = 0; + *(_BYTE *)(a1 + 116) = 1; + *(_DWORD *)(a1 + 172) = 0; + *(_DWORD *)(a1 + 168) = 0; + *(_DWORD *)(a1 + 164) = 0; + return result; +} + +//----- (0043D944) -------------------------------------------------------- +int __fastcall WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree(int a1) +{ + int result; // eax + + result = a1 + 8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + *(_BYTE *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 24) = 1; + *(_DWORD *)(a1 + 36) = 0; + *(_DWORD *)(a1 + 40) = 0; + *(_DWORD *)(a1 + 44) = 0; + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)(a1 + 144) = 0; + *(_DWORD *)(a1 + 148) = 0; + *(_DWORD *)(a1 + 152) = 0; + *(_DWORD *)(a1 + 156) = 0; + *(_DWORD *)(a1 + 160) = 0; + *(_BYTE *)(a1 + 116) = 1; + *(_DWORD *)(a1 + 172) = 0; + *(_DWORD *)(a1 + 168) = 0; + *(_DWORD *)(a1 + 164) = 0; + return result; +} + +//----- (0043DA14) -------------------------------------------------------- +void __stdcall WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo(int *a1, unsigned int a2, int a3) +{ + int v3; // ecx + std::ostream::sentry *v4; // eax + std::ostream::sentry *v5; // eax + void *v6; // eax + int v7; // edx + void *v8; // esi + unsigned int *v9; // edx + void (__cdecl *v10)(void *); // [esp+4h] [ebp-134h] + void (__cdecl *v11)(void *); // [esp+4h] [ebp-134h] + unsigned int *v12; // [esp+10h] [ebp-128h] BYREF + volatile signed __int32 *v13; // [esp+14h] [ebp-124h] BYREF + volatile signed __int32 *v14; // [esp+18h] [ebp-120h] BYREF + volatile signed __int32 *v15; // [esp+1Ch] [ebp-11Ch] BYREF + int v16[2]; // [esp+20h] [ebp-118h] BYREF + char v17; // [esp+28h] [ebp-110h] BYREF + void *v18[2]; // [esp+38h] [ebp-100h] BYREF + char v19; // [esp+40h] [ebp-F8h] BYREF + char v20[8]; // [esp+50h] [ebp-E8h] BYREF + char v21[4]; // [esp+58h] [ebp-E0h] BYREF + int v22[55]; // [esp+5Ch] [ebp-DCh] BYREF + + v16[0] = (int)&v17; + v3 = *a1; + v16[1] = 0; + v17 = 0; + v18[0] = &v19; + v18[1] = 0; + v19 = 0; + WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(v3, (WXSS::Token *)v16, 0); + WXSS::CSSTreeLib::CSSSyntaxTree::RenderCode(*a1, (WXSS::Token *)v18, 1u); + if ( !std::operator==((int)v16, (int)v18) ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)v20); + v4 = std::operator<<>((std::ostream::sentry *)v21, ";wxcs_originclass: "); + v5 = std::operator<<(v4, v16); + std::operator<<>(v5, ";"); + v6 = operator new((struct type_info *)0xB0, v10); + WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v6); + zcc::shared_ptr::shared_ptr(v7); + std::string::operator=(v12, "FAKE_ATTR"); + v8 = operator new((struct type_info *)0x18, v11); + std::stringbuf::str((int)v8, v22); + zcc::shared_ptr::shared_ptr(v8); + std::__shared_ptr::operator=((volatile signed __int32 **)v12 + 7, &v14); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v15); + v9 = v12; + v12[41] = a2; + v9[42] = a2 + 1; + v9[6] = 3; + std::vector>::push_back((char **)(*(_DWORD *)a3 + 120), &v12); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v13); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v20); + } + std::string::_M_dispose(v18); + std::string::_M_dispose((void **)v16); +} +// 43DAEF: variable 'v10' is possibly undefined +// 43DB06: variable 'v7' is possibly undefined +// 43DB26: variable 'v11' is possibly undefined +// 43CA00: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 43DA14: using guessed type char var_E0[4]; +// 43DA14: using guessed type int var_DC[55]; + +//----- (0043DC18) -------------------------------------------------------- +bool __stdcall WXSS::CSSTreeLib::RuleDebugRule::MarkGood( + WXSS::CSSTreeLib::RuleDebugRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a2) +{ + unsigned int v2; // ebx + int v3; // edx + int v4; // esi + bool v5; // al + bool v6; // zf + int v7; // eax + int *v8; // esi + int *v9; // ecx + int *v10; // ebx + std::ostream::sentry *v11; // eax + std::ostream::sentry *v12; // eax + std::ostream::sentry *v13; // eax + std::ostream::sentry *v14; // eax + void *v15; // eax + int v16; // edx + void *v17; // esi + unsigned int *v18; // edx + void (__cdecl *v20)(void *); // [esp+4h] [ebp-134h] + void (__cdecl *v21)(void *); // [esp+4h] [ebp-134h] + int v22; // [esp+18h] [ebp-120h] + bool v23; // [esp+1Eh] [ebp-11Ah] + bool v24; // [esp+1Eh] [ebp-11Ah] + bool v25; // [esp+1Fh] [ebp-119h] + bool v26; // [esp+1Fh] [ebp-119h] + volatile signed __int32 *v27; // [esp+28h] [ebp-110h] BYREF + volatile signed __int32 *v28; // [esp+2Ch] [ebp-10Ch] BYREF + volatile signed __int32 *v29; // [esp+30h] [ebp-108h] BYREF + volatile signed __int32 *v30; // [esp+34h] [ebp-104h] BYREF + volatile signed __int32 *v31; // [esp+38h] [ebp-100h] BYREF + volatile signed __int32 *v32; // [esp+3Ch] [ebp-FCh] BYREF + unsigned int *v33; // [esp+40h] [ebp-F8h] BYREF + volatile signed __int32 *v34; // [esp+44h] [ebp-F4h] BYREF + volatile signed __int32 *v35; // [esp+48h] [ebp-F0h] BYREF + volatile signed __int32 *v36; // [esp+4Ch] [ebp-ECh] BYREF + int v37; // [esp+50h] [ebp-E8h] BYREF + volatile signed __int32 *v38; // [esp+54h] [ebp-E4h] BYREF + char v39[4]; // [esp+58h] [ebp-E0h] BYREF + int v40[55]; // [esp+5Ch] [ebp-DCh] BYREF + + v2 = 0; + v27 = 0; + v28 = 0; + v29 = 0; + v30 = 0; + v25 = 0; + while ( 1 ) + { + v3 = *((_DWORD *)this + 30); + if ( (*((_DWORD *)this + 31) - v3) >> 3 <= v2 ) + break; + v4 = 8 * v2; + v5 = std::operator==(*(_DWORD *)(v3 + 8 * v2), "ATTRS"); + v6 = !v5; + v23 = v5; + v7 = *((_DWORD *)this + 30); + if ( v6 ) + { + if ( std::operator==(*(_DWORD *)(v7 + 8 * v2), "{") ) + std::__shared_ptr::operator=( + &v29, + (volatile signed __int32 **)(*((_DWORD *)this + 30) + v4)); + } + else + { + std::__shared_ptr::operator=( + &v27, + (volatile signed __int32 **)(v7 + v4)); + v25 = v23; + } + ++v2; + } + if ( !v25 ) + std::__shared_ptr::operator=(&v27, &v29); + v26 = 0; + v31 = 0; + v8 = (int *)*((_DWORD *)this + 30); + v32 = 0; + v22 = *((_DWORD *)v27 + 42); + do + { + if ( *((int **)this + 31) == v8 ) + break; + v24 = std::operator==(*v8, "SELECTORS"); + if ( v24 ) + { + std::__shared_ptr::__shared_ptr(&v37, &v27); + std::__shared_ptr::__shared_ptr(&v35, v8); + WXSS::CSSTreeLib::RuleDebugRule::InsertOriginSelectorInfo(v9, v22 + 1, (int)&v37); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v36); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v38); + v10 = *(int **)(*v8 + 120); + while ( !v26 ) + { + if ( *(int **)(*v8 + 124) == v10 ) + goto LABEL_16; + if ( std::operator==(*v10, "SELECTOR") + || std::operator==(*v10, "U_SELECTOR") + || (v26 = std::operator==(*v10, "F_SELECTOR")) ) + { + std::__shared_ptr::operator=( + &v31, + *(volatile signed __int32 ***)(*v10 + 120)); + v26 = v24; + } + v10 += 2; + } + v24 = v26; + } +LABEL_16: + v8 += 2; + } + while ( !v24 ); + if ( v26 ) + { + std::basic_stringstream,std::allocator>::basic_stringstream((int)&v37); + v11 = std::operator<<>((std::ostream::sentry *)v39, ";wxcs_fileinfo: "); + v12 = std::operator<<(v11, *((int **)this + 37)); + std::operator<<>(v12, " "); + v13 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v31 + 11)); + std::operator<<>(v13, " "); + v14 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)v31 + 12)); + std::operator<<>(v14, ";"); + v15 = operator new((struct type_info *)0xB0, v20); + WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v15); + zcc::shared_ptr::shared_ptr(v16); + std::string::operator=(v33, "FAKE_ATTR"); + v17 = operator new((struct type_info *)0x18, v21); + std::stringbuf::str((int)v17, v40); + zcc::shared_ptr::shared_ptr(v17); + std::__shared_ptr::operator=((volatile signed __int32 **)v33 + 7, &v35); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v36); + v18 = v33; + v33[6] = 3; + v18[41] = v22 + 2; + v18[42] = v22 + 3; + std::vector>::push_back((char **)v27 + 30, &v33); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v34); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v37); + *((_BYTE *)this + 116) = 1; + } + else + { + *((_BYTE *)this + 116) = 0; + } + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v32); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v28); + return v26; +} +// 43DD93: variable 'v9' is possibly undefined +// 43DF05: variable 'v20' is possibly undefined +// 43DF1C: variable 'v16' is possibly undefined +// 43DF3C: variable 'v21' is possibly undefined +// 43CA00: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 48D770: using guessed type _DWORD __stdcall std::ostream::operator<<(_DWORD); +// 43DC18: using guessed type char var_E0[4]; +// 43DC18: using guessed type int var_DC[55]; + +//----- (0043E084) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::RuleDebugRule::~RuleDebugRule(void *a1) +{ + operator delete(a1); +} + +//----- (0043E098) -------------------------------------------------------- +char *WXSS::CSSTreeLib::LexicalChecker::GetInstance() +{ + bool v1; // [esp+4h] [ebp-14h] + + if ( !(_BYTE)`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc + && __cxa_guard_acquire(&`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc) ) + { + dword_4E9B7C = 0; + dword_4E9B80 = 0; + WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; + __cxa_guard_release(&`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc); + atexit(__tcf_2); + } + WXSS::CSSTreeLib::LexicalChecker::Init((int)&WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc, 0, v1); + return &WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; +} +// 43E0F6: variable 'v1' is possibly undefined +// 4E9B78: using guessed type char WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; +// 4E9B7C: using guessed type int dword_4E9B7C; +// 4E9B80: using guessed type int dword_4E9B80; + +//----- (0043E104) -------------------------------------------------------- +char *WXSS::CSSTreeLib::LexicalChecker::GetInstance() +{ + bool v1; // [esp+4h] [ebp-14h] + + if ( !(_BYTE)`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc + && __cxa_guard_acquire(&`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc) ) + { + dword_4E9B88 = 0; + dword_4E9B8C = 0; + WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc = 0; + __cxa_guard_release(&`guard variable for'WXSS::CSSTreeLib::LexicalChecker* WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc); + atexit(__tcf_1_0); + } + WXSS::CSSTreeLib::LexicalChecker::Init( + (int)&WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc, + (WXSS::CSSTreeLib::LexicalChecker *)1, + v1); + return &WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; +} +// 43E162: variable 'v1' is possibly undefined +// 4E9B84: using guessed type char WXSS::CSSTreeLib::LexicalChecker::GetInstance(void)::lc; +// 4E9B88: using guessed type int dword_4E9B88; +// 4E9B8C: using guessed type int dword_4E9B8C; + +//----- (0043E170) -------------------------------------------------------- +WXSS::CSSTreeLib::LexicalChecker *__userpurge WXSS::CSSTreeLib::LexicalChecker::Init@( + int a1@, + WXSS::CSSTreeLib::LexicalChecker *this, + bool a3) +{ + WXSS::CSSTreeLib::LexicalChecker *result; // eax + _DWORD *v4; // eax + _DWORD *v5; // eax + _DWORD *v6; // eax + char **v7; // ebx + _DWORD *v8; // eax + int v9; // edi + _DWORD *v10; // eax + _DWORD *v11; // eax + char **v12; // esi + _DWORD *v13; // eax + _DWORD *v14; // eax + _DWORD *v15; // eax + int v16; // esi + _DWORD *v17; // eax + char **v18; // ebx + _DWORD *v19; // eax + int v20; // esi + _DWORD *v21; // eax + _DWORD *v22; // eax + int v23; // ebx + _DWORD *v24; // eax + _DWORD *v25; // eax + char **v26; // ebx + _DWORD *v27; // eax + int v28; // edi + _DWORD *v29; // eax + volatile signed __int32 **v30; // ecx + _DWORD *v31; // eax + void ***v32; // esi + _DWORD *v33; // eax + char **v34; // ebx + _DWORD *v35; // eax + int v36; // esi + _DWORD *v37; // eax + int v38; // ebx + _DWORD *v39; // eax + int v40; // esi + _DWORD *v41; // eax + int v42; // edi + _DWORD *v43; // eax + char **v44; // esi + _DWORD *v45; // eax + _DWORD *v46; // eax + int v47; // edi + _DWORD *v48; // eax + void (__cdecl *v49)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v50)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v51)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v52)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v53)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v54)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v55)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v56)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v57)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v58)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v59)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v60)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v61)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v62)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v63)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v64)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v65)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v66)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v67)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v68)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v69)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v70)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v71)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v72)(void *); // [esp+4h] [ebp-104h] + void (__cdecl *v73)(void *); // [esp+4h] [ebp-104h] + int v74; // [esp+20h] [ebp-E8h] + int v75; // [esp+24h] [ebp-E4h] + int v77; // [esp+34h] [ebp-D4h] BYREF + volatile signed __int32 *v78; // [esp+38h] [ebp-D0h] BYREF + int v79; // [esp+3Ch] [ebp-CCh] BYREF + volatile signed __int32 *v80; // [esp+40h] [ebp-C8h] BYREF + int v81; // [esp+44h] [ebp-C4h] BYREF + volatile signed __int32 *v82; // [esp+48h] [ebp-C0h] BYREF + int v83; // [esp+4Ch] [ebp-BCh] BYREF + volatile signed __int32 *v84; // [esp+50h] [ebp-B8h] BYREF + int v85; // [esp+54h] [ebp-B4h] BYREF + volatile signed __int32 *v86; // [esp+58h] [ebp-B0h] BYREF + int v87; // [esp+5Ch] [ebp-ACh] BYREF + volatile signed __int32 *v88; // [esp+60h] [ebp-A8h] BYREF + int v89; // [esp+64h] [ebp-A4h] BYREF + volatile signed __int32 *v90; // [esp+68h] [ebp-A0h] BYREF + char **v91; // [esp+6Ch] [ebp-9Ch] BYREF + volatile signed __int32 *v92; // [esp+70h] [ebp-98h] BYREF + int v93; // [esp+74h] [ebp-94h] BYREF + volatile signed __int32 *v94; // [esp+78h] [ebp-90h] BYREF + int v95; // [esp+7Ch] [ebp-8Ch] BYREF + volatile signed __int32 *v96; // [esp+80h] [ebp-88h] BYREF + char **v97; // [esp+84h] [ebp-84h] BYREF + volatile signed __int32 *v98; // [esp+88h] [ebp-80h] BYREF + int v99; // [esp+8Ch] [ebp-7Ch] BYREF + volatile signed __int32 *v100; // [esp+90h] [ebp-78h] BYREF + int v101; // [esp+94h] [ebp-74h] BYREF + volatile signed __int32 *v102; // [esp+98h] [ebp-70h] BYREF + int v103; // [esp+9Ch] [ebp-6Ch] BYREF + volatile signed __int32 *v104; // [esp+A0h] [ebp-68h] BYREF + char **v105; // [esp+A4h] [ebp-64h] BYREF + volatile signed __int32 *v106; // [esp+A8h] [ebp-60h] BYREF + int v107; // [esp+ACh] [ebp-5Ch] BYREF + volatile signed __int32 *v108; // [esp+B0h] [ebp-58h] BYREF + int v109; // [esp+B4h] [ebp-54h] BYREF + volatile signed __int32 *v110; // [esp+B8h] [ebp-50h] BYREF + int v111; // [esp+BCh] [ebp-4Ch] BYREF + volatile signed __int32 *v112; // [esp+C0h] [ebp-48h] BYREF + const char *v113; // [esp+C4h] [ebp-44h] BYREF + int v114; // [esp+C8h] [ebp-40h] BYREF + volatile signed __int32 *v115; // [esp+CCh] [ebp-3Ch] BYREF + void *v116; // [esp+D0h] [ebp-38h] BYREF + volatile signed __int32 *v117[13]; // [esp+D4h] [ebp-34h] BYREF + + result = this; + if ( !*(_BYTE *)a1 ) + { + v4 = operator new((struct type_info *)4, v49); + *v4 = &off_4F51AC; + zcc::shared_ptr::shared_ptr(&v77, (int)v4); + v5 = operator new((struct type_info *)4, v50); + *v5 = &off_4F51DC; + zcc::shared_ptr::shared_ptr(&v79, (int)v5); + v6 = operator new((struct type_info *)0x10, v51); + *v6 = &off_4F51F4; + v6[1] = 0; + v6[2] = 0; + v6[3] = 0; + zcc::shared_ptr::shared_ptr(&v116, (int)v6); + *(_DWORD *)(a1 + 4) = v116; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(a1 + 8), v117[0]); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v117); + v7 = *(char ***)(a1 + 4); + v8 = operator new((struct type_info *)0x10, v52); + *v8 = &off_4F51C4; + v8[1] = 0; + v8[2] = 0; + v8[3] = 0; + zcc::shared_ptr::shared_ptr(&v81, (int)v8); + ++v7; + v9 = v81; + std::vector>::push_back(v7, &v81); + std::vector>::push_back(v7, &v77); + v10 = operator new((struct type_info *)0x10, v53); + *v10 = &off_4F51C4; + v10[1] = 0; + v10[2] = 0; + v10[3] = 0; + zcc::shared_ptr::shared_ptr(&v83, (int)v10); + v75 = v83; + v11 = operator new((struct type_info *)0x10, v54); + *v11 = &off_4F5180; + v11[1] = 0; + v11[2] = 0; + v11[3] = 0; + zcc::shared_ptr::shared_ptr(&v85, (int)v11); + v12 = (char **)(v85 + 4); + std::vector>::push_back((char **)(v85 + 4), &v83); + if ( (_BYTE)this ) + { + v13 = operator new((struct type_info *)4, v55); + *v13 = &off_4F50E0; + zcc::shared_ptr::shared_ptr(&v116, (int)v13); + std::vector>::push_back(v12, &v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v117); + } + v14 = operator new((struct type_info *)4, v55); + *v14 = &off_4F5098; + zcc::shared_ptr::shared_ptr(&v87, (int)v14); + std::vector>::push_back(v12, &v87); + v113 = "RULE"; + std::__shared_ptr::__shared_ptr(&v114, &v85); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v9 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v15 = operator new((struct type_info *)0x10, v56); + *v15 = &off_4F51C4; + v15[1] = 0; + v15[2] = 0; + v15[3] = 0; + zcc::shared_ptr::shared_ptr(&v89, (int)v15); + v16 = v89; + v113 = "MULTIRULE"; + std::__shared_ptr::__shared_ptr(&v114, &v89); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v9 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v113 = "RULES"; + std::__shared_ptr::__shared_ptr(&v114, (_DWORD *)(a1 + 4)); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v16 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v17 = operator new((struct type_info *)0x10, v57); + *v17 = &off_4F51F4; + v17[1] = 0; + v17[2] = 0; + v17[3] = 0; + zcc::shared_ptr::shared_ptr(&v91, (int)v17); + v18 = v91; + v19 = operator new((struct type_info *)0x10, v58); + *v19 = &off_4F51C4; + v19[1] = 0; + v19[2] = 0; + v19[3] = 0; + zcc::shared_ptr::shared_ptr(&v93, (int)v19); + v20 = v93; + v21 = operator new((struct type_info *)4, v59); + *v21 = &off_4F5110; + zcc::shared_ptr::shared_ptr(&v95, (int)v21); + std::vector>::push_back(++v18, &v93); + std::vector>::push_back(v18, &v95); + v113 = "SELECTORS"; + std::__shared_ptr::__shared_ptr(&v114, &v91); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v75 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v22 = operator new((struct type_info *)0x10, v60); + *v22 = &off_4F51C4; + v22[1] = 0; + v22[2] = 0; + v22[3] = 0; + zcc::shared_ptr::shared_ptr(&v101, (int)v22); + v23 = v101; + v113 = "SELECTOR"; + std::__shared_ptr::__shared_ptr(&v114, &v101); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v20 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v24 = operator new((struct type_info *)4, v61); + *v24 = &off_4F5140; + zcc::shared_ptr::shared_ptr(&v103, (int)v24); + v74 = v23 + 4; + v113 = "$NAME"; + std::__shared_ptr::__shared_ptr(&v114, &v103); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v23 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v25 = operator new((struct type_info *)0x10, v62); + *v25 = &off_4F5180; + v25[1] = 0; + v25[2] = 0; + v25[3] = 0; + zcc::shared_ptr::shared_ptr(&v105, (int)v25); + v26 = v105; + v113 = "F_SELECTOR"; + std::__shared_ptr::__shared_ptr(&v114, &v105); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v20 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v27 = operator new((struct type_info *)0x10, v63); + *v27 = &off_4F51C4; + v27[1] = 0; + v27[2] = 0; + v27[3] = 0; + zcc::shared_ptr::shared_ptr(&v107, (int)v27); + v28 = v107; + v29 = operator new((struct type_info *)0xC, v64); + *v29 = &off_4F520C; + v29[1] = 0; + v29[2] = 0; + zcc::shared_ptr::shared_ptr(&v109, (int)v29); + ++v26; + v30 = (volatile signed __int32 **)(v109 + 8); + *(_DWORD *)(v109 + 4) = v101; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v30, v102); + std::vector>::push_back(v26, &v107); + std::vector>::push_back(v26, &v109); + v31 = operator new((struct type_info *)0x10, v65); + *v31 = &off_4F50C8; + v31[1] = 0; + v31[2] = 0; + v31[3] = 0; + zcc::shared_ptr::shared_ptr(&v111, (int)v31); + v32 = (void ***)(v111 + 4); + std::string::basic_string(&v116, "root"); + std::vector::emplace_back(v32, &v116); + std::string::_M_dispose(&v116); + v113 = "$NAME"; + std::__shared_ptr::__shared_ptr(&v114, &v111); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v28 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v113 = "SELECTOR"; + std::__shared_ptr::__shared_ptr(&v114, &v101); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v74, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v112); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v110); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v108); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v106); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v104); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v102); + v33 = operator new((struct type_info *)0x10, v66); + *v33 = &off_4F51F4; + v33[1] = 0; + v33[2] = 0; + v33[3] = 0; + zcc::shared_ptr::shared_ptr(&v97, (int)v33); + v34 = v97; + v113 = "ATTRS"; + std::__shared_ptr::__shared_ptr(&v114, &v97); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v75 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v35 = operator new((struct type_info *)0x10, v67); + *v35 = &off_4F51C4; + v35[1] = 0; + v35[2] = 0; + v35[3] = 0; + zcc::shared_ptr::shared_ptr(&v99, (int)v35); + ++v34; + v36 = v99; + std::vector>::push_back(v34, &v99); + std::vector>::push_back(v34, &v77); + v37 = operator new((struct type_info *)0x10, v68); + *v37 = &off_4F51F4; + v37[1] = 0; + v37[2] = 0; + v37[3] = 0; + zcc::shared_ptr::shared_ptr(&v101, (int)v37); + v38 = v101; + v113 = "ATTR"; + std::__shared_ptr::__shared_ptr(&v114, &v101); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v36 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + v39 = operator new((struct type_info *)0x10, v69); + *v39 = &off_4F5180; + v39[1] = 0; + v39[2] = 0; + v39[3] = 0; + zcc::shared_ptr::shared_ptr(&v103, (int)v39); + v40 = v103; + v41 = operator new((struct type_info *)0x10, v70); + *v41 = &off_4F51C4; + v41[1] = 0; + v41[2] = 0; + v41[3] = 0; + zcc::shared_ptr::shared_ptr(&v105, (int)v41); + v42 = (int)v105; + v43 = operator new((struct type_info *)4, v71); + *v43 = &off_4F50F8; + zcc::shared_ptr::shared_ptr(&v107, (int)v43); + v113 = "$ESV"; + std::__shared_ptr::__shared_ptr(&v114, &v107); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v42 + 4, + &v116); + v44 = (char **)(v40 + 4); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + std::vector>::push_back(v44, &v105); + if ( (_BYTE)this ) + { + v45 = operator new((struct type_info *)4, v72); + *v45 = &off_4F50B0; + zcc::shared_ptr::shared_ptr(&v116, (int)v45); + std::vector>::push_back(v44, &v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v117); + } + std::vector>::push_back((char **)(v38 + 4), &v103); + v46 = operator new((struct type_info *)0x10, v72); + *v46 = &off_4F51C4; + v46[1] = 0; + v46[2] = 0; + v46[3] = 0; + zcc::shared_ptr::shared_ptr(&v109, (int)v46); + v47 = v109; + v48 = operator new((struct type_info *)4, v73); + *v48 = &off_4F5128; + zcc::shared_ptr::shared_ptr(&v111, (int)v48); + v113 = "$ESV"; + std::__shared_ptr::__shared_ptr(&v114, &v111); + std::pair>::pair,true>( + (int)&v116, + (int)&v113); + std::vector>>::emplace_back>>( + v47 + 4, + &v116); + std::pair>::~pair((int)&v116); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v115); + std::vector>::push_back((char **)(v38 + 4), &v109); + std::vector>::push_back((char **)(v38 + 4), &v77); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v112); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v110); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v108); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v106); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v104); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v102); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v100); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v98); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v96); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v94); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v92); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v90); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v88); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v86); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v84); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v82); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v80); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v78); + result = (WXSS::CSSTreeLib::LexicalChecker *)a1; + *(_BYTE *)a1 = 1; + } + return result; +} +// 43E19B: variable 'v49' is possibly undefined +// 43E1BC: variable 'v50' is possibly undefined +// 43E1DD: variable 'v51' is possibly undefined +// 43E24B: variable 'v52' is possibly undefined +// 43E2A8: variable 'v53' is possibly undefined +// 43E2EA: variable 'v54' is possibly undefined +// 43E343: variable 'v55' is possibly undefined +// 43E3F5: variable 'v56' is possibly undefined +// 43E4B7: variable 'v57' is possibly undefined +// 43E4F3: variable 'v58' is possibly undefined +// 43E52F: variable 'v59' is possibly undefined +// 43E5C9: variable 'v60' is possibly undefined +// 43E64A: variable 'v61' is possibly undefined +// 43E6B3: variable 'v62' is possibly undefined +// 43E72B: variable 'v63' is possibly undefined +// 43E761: variable 'v64' is possibly undefined +// 43E7C4: variable 'v65' is possibly undefined +// 43E8D6: variable 'v66' is possibly undefined +// 43E954: variable 'v67' is possibly undefined +// 43E9AB: variable 'v68' is possibly undefined +// 43EA2F: variable 'v69' is possibly undefined +// 43EA65: variable 'v70' is possibly undefined +// 43EA9B: variable 'v71' is possibly undefined +// 43EB23: variable 'v72' is possibly undefined +// 43EBA8: variable 'v73' is possibly undefined +// 4F5098: using guessed type void (__cdecl *off_4F5098)(WXSS::CSSTreeLib::MarkHostRule *__hidden this); +// 4F50B0: using guessed type void (__cdecl *off_4F50B0)(WXSS::CSSTreeLib::AttrDebugRule *__hidden this); +// 4F50C8: using guessed type void (__cdecl *off_4F50C8)(WXSS::CSSTreeLib::BlackListRule *__hidden this); +// 4F50E0: using guessed type void (__cdecl *off_4F50E0)(WXSS::CSSTreeLib::RuleDebugRule *__hidden this); +// 4F50F8: using guessed type void (__cdecl *off_4F50F8)(WXSS::CSSTreeLib::ReWriteRpxRule *__hidden this); +// 4F5110: using guessed type void (__cdecl *off_4F5110)(WXSS::CSSTreeLib::MarkSelectorRule *__hidden this); +// 4F5128: using guessed type void (__cdecl *off_4F5128)(WXSS::CSSTreeLib::RewriteImgUrlRule *__hidden this); +// 4F5140: using guessed type void (__cdecl *off_4F5140)(WXSS::CSSTreeLib::RewriteSelectorRule *__hidden this); +// 4F5180: using guessed type void (__cdecl *off_4F5180)(WXSS::CSSTreeLib::AndRules *__hidden this); +// 4F51AC: using guessed type void (__cdecl *off_4F51AC)(WXSS::CSSTreeLib::TrueRule *__hidden this); +// 4F51C4: using guessed type void (__cdecl *off_4F51C4)(WXSS::CSSTreeLib::ChildRule *__hidden this); +// 4F51DC: using guessed type void (__cdecl *off_4F51DC)(WXSS::CSSTreeLib::FalseRule *__hidden this); +// 4F51F4: using guessed type void (__cdecl *off_4F51F4)(WXSS::CSSTreeLib::RuleChain *__hidden this); +// 4F520C: using guessed type void (__cdecl *off_4F520C)(WXSS::CSSTreeLib::SPNotRule *__hidden this); + +//----- (0043EF4C) -------------------------------------------------------- +int __thiscall WXSS::CSSTreeLib::LexicalChecker::Traval(_DWORD **this, _DWORD *a2) +{ + if ( *(_BYTE *)this ) + return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this[1] + 8))(this[1], *a2); + else + return 0; +} + +//----- (0043EF70) -------------------------------------------------------- +char __stdcall WXSS::CSSTreeLib::ReWriteRpxRule::MarkGood( + WXSS::CSSTreeLib::ReWriteRpxRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a2) +{ + char *Literal; // eax + BOOL v3; // edx + char v4; // al + _DWORD *v5; // ebx + void (__cdecl *v7)(void *); // [esp+4h] [ebp-74h] + char v8; // [esp+1Fh] [ebp-59h] + volatile signed __int32 *v9; // [esp+28h] [ebp-50h] BYREF + volatile signed __int32 *v10; // [esp+2Ch] [ebp-4Ch] BYREF + void *v11[6]; // [esp+30h] [ebp-48h] BYREF + void *v12[2]; // [esp+48h] [ebp-30h] BYREF + char v13; // [esp+50h] [ebp-28h] BYREF + + Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)this + 6); + std::string::basic_string(v11, Literal); + v12[1] = 0; + v12[0] = &v13; + v13 = 0; + v3 = WXML::Rewrite::RewriteRPX((int)v11, (unsigned int *)v12, "%%?", "?%%"); + v4 = 0; + if ( v3 ) + { + v5 = operator new((struct type_info *)0x18, v7); + std::string::basic_string(v5, (int)v12); + zcc::shared_ptr::shared_ptr(v5); + std::__shared_ptr::operator=((volatile signed __int32 **)this + 33, &v9); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v10); + v4 = 1; + } + v8 = v4; + std::string::_M_dispose(v12); + std::string::_M_dispose(v11); + return v8; +} +// 43EFD1: variable 'v7' is possibly undefined +// 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); + +//----- (0043F054) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::ReWriteRpxRule::~ReWriteRpxRule(void *a1) +{ + operator delete(a1); +} + +//----- (0043F068) -------------------------------------------------------- +char __stdcall WXSS::CSSTreeLib::MarkSelectorRule::MarkGood( + WXSS::CSSTreeLib::MarkSelectorRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a2) +{ + unsigned int i; // esi + int v3; // eax + int *v4; // edi + int v5; // ecx + int v6; // eax + int v7; // eax + volatile signed __int32 *v8; // edi + const char *Literal; // eax + _DWORD *v10; // ecx + _DWORD *v11; // eax + _BYTE *v12; // edi + const char *v13; // edi + const char *v14; // edx + char v15; // al + int v16; // eax + _BYTE **v17; // eax + int v18; // edi + _DWORD *v19; // esi + void (__cdecl *v21)(void *); // [esp+4h] [ebp-44h] + const char *v22; // [esp+4h] [ebp-44h] + const char *v23; // [esp+10h] [ebp-38h] + _DWORD **v24; // [esp+14h] [ebp-34h] + int v25; // [esp+18h] [ebp-30h] + _DWORD **j; // [esp+18h] [ebp-30h] + _DWORD **v27; // [esp+1Ch] [ebp-2Ch] + _BYTE **v28; // [esp+1Ch] [ebp-2Ch] + volatile signed __int32 *v29; // [esp+28h] [ebp-20h] BYREF + volatile signed __int32 *v30[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + for ( i = 0; ; ++i ) + { + v3 = *((_DWORD *)this + 30); + if ( i >= (*((_DWORD *)this + 31) - v3) >> 3 ) + goto LABEL_39; + v4 = *(int **)(v3 + 8 * i); + v5 = *v4; + if ( i ) + { + if ( v4[41] <= *(_DWORD *)(*(_DWORD *)(v3 + 8 * i - 8) + 168) ) + break; + } + if ( *(_BYTE *)v5 != 70 ) + break; + v25 = *v4; + v6 = strcmp((const char *)(v5 + 1), "_SELECTOR"); + v5 = v25; + if ( v6 ) + break; + v7 = v4[30]; + if ( (unsigned int)(v4[31] - v7) <= 0xF ) + goto LABEL_14; + std::__shared_ptr::__shared_ptr( + &v29, + (_DWORD *)(v7 + 8)); + v8 = v29; + if ( **(_BYTE **)v29 != 36 + || strcmp((const char *)(*v29 + 1), "NAME") + || (Literal = WXSS::Token::GetLiteral((_DWORD *)v8 + 6), *Literal != 104) + || strcmp(Literal + 1, "ost") ) + { + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v30); +LABEL_14: + v10 = (_DWORD *)*((_DWORD *)this + 39); + v11 = *(_DWORD **)(*(_DWORD *)(*((_DWORD *)this + 30) + 8 * i) + 120); + goto LABEL_36; + } + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v30); +LABEL_38: + ; + } + if ( *(_BYTE *)v5 == 70 ) + { + if ( strcmp((const char *)(v5 + 1), "_SELECTOR") ) + goto LABEL_35; + goto LABEL_38; + } + v27 = (_DWORD **)v4[30]; + if ( *(_BYTE *)v5 == 83 && !strcmp((const char *)(v5 + 1), "ELECTOR") ) + { + v24 = (_DWORD **)v4[31]; + for ( j = v27; ; j += 2 ) + { + if ( v24 == j ) + goto LABEL_38; + v12 = (_BYTE *)**j; + v28 = (_BYTE **)*j; + if ( *v12 == 36 ) + { + v13 = v12 + 1; + if ( !strcmp(v13, "NAME") ) + { + v14 = WXSS::Token::GetLiteral(v28 + 6); + v15 = *v14; + if ( *v14 == 64 || v15 == 46 ) + continue; + if ( v15 == 102 ) + { + v22 = (const char *)&off_4EAFF9; +LABEL_30: + v23 = v14; + v16 = strcmp(v14 + 1, v22); + v14 = v23; + if ( !v16 ) + continue; + } + else if ( v15 == 116 ) + { + v22 = "o"; + goto LABEL_30; + } + if ( v14[strlen(v14) - 1] != 37 ) + goto LABEL_32; + continue; + } + if ( !strcmp(v13, "ID") ) + { +LABEL_32: + v10 = (_DWORD *)*((_DWORD *)this + 39); + v17 = v28; + goto LABEL_37; + } + } + } + } +LABEL_35: + v10 = (_DWORD *)*((_DWORD *)this + 39); + v11 = (_DWORD *)v4[30]; +LABEL_36: + v17 = (_BYTE **)*v11; +LABEL_37: + WXSS::Token::operator=(v10, (int)(v17 + 6)); +LABEL_39: + v18 = *((_DWORD *)this + 37); + v19 = operator new((struct type_info *)0x18, v21); + std::string::basic_string(v19, v18); + zcc::shared_ptr::shared_ptr(v19); + std::__shared_ptr::operator=( + (volatile signed __int32 **)(*((_DWORD *)this + 39) + 4), + &v29); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v30); + return 1; +} +// 43F29B: variable 'v21' is possibly undefined +// 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); +// 4EAFF9: using guessed type void *off_4EAFF9; + +//----- (0043F2F4) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::MarkSelectorRule::~MarkSelectorRule(void *a1) +{ + operator delete(a1); +} + +//----- (0043F308) -------------------------------------------------------- +char __stdcall WXSS::CSSTreeLib::RewriteImgUrlRule::MarkGood( + WXSS::CSSTreeLib::RewriteImgUrlRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a2) +{ + char *Literal; // eax + int v3; // edi + int v4; // eax + int v5; // edi + char v6; // al + _DWORD *v7; // edi + void (__cdecl *v9)(void *); // [esp+4h] [ebp-94h] + int v10; // [esp+2Ch] [ebp-6Ch] + char v11; // [esp+2Ch] [ebp-6Ch] + void *v12[6]; // [esp+38h] [ebp-60h] BYREF + void *v13[2]; // [esp+50h] [ebp-48h] BYREF + char v14; // [esp+58h] [ebp-40h] BYREF + void *v15; // [esp+68h] [ebp-30h] BYREF + volatile signed __int32 *v16; // [esp+6Ch] [ebp-2Ch] BYREF + + Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)this + 6); + std::string::basic_string(v12, Literal); + v13[1] = 0; + v3 = *((_DWORD *)this + 12); + v13[0] = &v14; + v4 = *((_DWORD *)this + 11); + v14 = 0; + v10 = v4; + std::string::basic_string(&v15, *((_DWORD *)this + 37)); + v5 = WXML::Rewrite::RewriteImg((int)v12, (unsigned int *)v13, (int *)&v15, v10, v3); + std::string::_M_dispose(&v15); + if ( !v5 ) + goto LABEL_4; + v6 = 0; + if ( v5 == 1 ) + { + v7 = operator new((struct type_info *)0x18, v9); + std::string::basic_string(v7, (int)v13); + zcc::shared_ptr::shared_ptr(v7); + std::__shared_ptr::operator=( + (volatile signed __int32 **)this + 33, + (volatile signed __int32 **)&v15); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v16); +LABEL_4: + v6 = 1; + } + v11 = v6; + std::string::_M_dispose(v13); + std::string::_M_dispose(v12); + return v11; +} +// 43F395: variable 'v9' is possibly undefined +// 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); + +//----- (0043F420) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::RewriteImgUrlRule::~RewriteImgUrlRule(void *a1) +{ + operator delete(a1); +} + +//----- (0043F434) -------------------------------------------------------- +char __stdcall WXSS::CSSTreeLib::RewriteSelectorRule::MarkGood( + WXSS::CSSTreeLib::RewriteSelectorRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a2) +{ + char *Literal; // eax + unsigned int i; // ebx + char v4; // dl + int v5; // eax + int v6; // eax + _DWORD *v7; // ebx + void **v8; // ebx + int v9; // eax + bool v11; // si + _DWORD *v12; // ebx + char v13; // al + void (__cdecl *v15)(void *); // [esp+4h] [ebp-A4h] + void (__cdecl *v16)(void *); // [esp+4h] [ebp-A4h] + void (__cdecl *v17)(void *); // [esp+4h] [ebp-A4h] + char v18; // [esp+1Fh] [ebp-89h] + volatile signed __int32 *v19; // [esp+20h] [ebp-88h] BYREF + volatile signed __int32 *v20; // [esp+24h] [ebp-84h] BYREF + volatile signed __int32 *v21; // [esp+28h] [ebp-80h] BYREF + volatile signed __int32 *v22; // [esp+2Ch] [ebp-7Ch] BYREF + char *v23; // [esp+30h] [ebp-78h] BYREF + int v24; // [esp+34h] [ebp-74h] + char v25; // [esp+38h] [ebp-70h] BYREF + _BYTE *v26; // [esp+48h] [ebp-60h] BYREF + unsigned int v27; // [esp+4Ch] [ebp-5Ch] + char *String1[6]; // [esp+60h] [ebp-48h] BYREF + int v29; // [esp+78h] [ebp-30h] BYREF + volatile signed __int32 *v30; // [esp+7Ch] [ebp-2Ch] BYREF + + v23 = &v25; + v24 = 0; + v25 = 0; + Literal = (char *)WXSS::Token::GetLiteral((_DWORD *)this + 6); + if ( Literal ) + { + std::string::basic_string((void **)&v26, Literal); + for ( i = 0; i < v27; ++i ) + { + v4 = v26[i]; + if ( v4 != 46 + || i + 1 >= v27 + || ((v5 = (char)v26[i + 1], ___mb_cur_max != 1) ? (v6 = _isctype(v5, 4), v4 = 46) : (v6 = __pctype[v5] & 4), v6) ) + { + std::string::push_back(&v23, v4); + } + else + { + std::string::operator+=(&v23, ".%%HERESUFFIX%%"); + } + } + if ( *((_DWORD *)this + 10) != v24 ) + { + v7 = operator new((struct type_info *)0x18, v15); + std::string::basic_string(v7, (int)&v23); + zcc::shared_ptr::shared_ptr(v7); + std::__shared_ptr::operator=((volatile signed __int32 **)this + 33, &v19); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v20); + } + std::string::basic_string((void **)String1, v23); + if ( !_stricmp(String1[0], "page") ) + { + v8 = (void **)operator new((struct type_info *)0x18, v16); + std::string::basic_string(v8, "body"); + zcc::shared_ptr::shared_ptr(v8); + std::__shared_ptr::operator=( + (volatile signed __int32 **)this + 33, + (volatile signed __int32 **)&v29); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v30); + } + else if ( _stricmp(String1[0], asc_4EAFF8) + && _stricmp(String1[0], "to") + && _stricmp(String1[0], off_4EAF6E) + && String1[1] ) + { + v9 = *String1[0]; + if ( ___mb_cur_max == 1 ? __pctype[v9] & 0x103 : _isctype(v9, 259) ) + { + std::string::substr((void **)&v29, String1, 0, 3u); + v11 = std::operator==((int)&v29, "wx-"); + std::string::_M_dispose((void **)&v29); + if ( !v11 ) + { + std::string::basic_string((void **)&v29, "wx-"); + std::string::operator+=(&v29, (int)String1); + v12 = operator new((struct type_info *)0x18, v17); + std::string::basic_string(v12, (int)&v29); + zcc::shared_ptr::shared_ptr(v12); + std::__shared_ptr::operator=( + (volatile signed __int32 **)this + 33, + &v21); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v22); + std::string::_M_dispose((void **)&v29); + } + } + } + *((_BYTE *)this + 116) = 1; + std::string::_M_dispose((void **)String1); + std::string::_M_dispose((void **)&v26); + v13 = 1; + } + else + { + v13 = 0; + } + v18 = v13; + std::string::_M_dispose((void **)&v23); + return v18; +} +// 43F500: variable 'v15' is possibly undefined +// 43F56D: variable 'v16' is possibly undefined +// 43F6A9: variable 'v17' is possibly undefined +// 43CD08: using guessed type _DWORD __stdcall zcc::shared_ptr::shared_ptr(_DWORD); + +//----- (0043F780) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::RewriteSelectorRule::~RewriteSelectorRule(void *a1) +{ + operator delete(a1); +} + +//----- (0043F794) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::EPS::~EPS(void *a1) +{ + operator delete(a1); +} + +//----- (0043F7A8) -------------------------------------------------------- +int __fastcall WXSS::CSSTreeLib::Action::Action(int a1) +{ + int result; // eax + + *(_DWORD *)a1 = &off_4F516C; + *(_DWORD *)(a1 + 4) = a1 + 12; + result = a1 + 44; + *(_DWORD *)(a1 + 8) = 0; + *(_BYTE *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 36) = a1 + 44; + *(_DWORD *)(a1 + 40) = 0; + *(_BYTE *)(a1 + 44) = 0; + *(_DWORD *)(a1 + 28) = 0; + return result; +} +// 4F516C: using guessed type void (__cdecl *off_4F516C)(WXSS::CSSTreeLib::Action *__hidden this); + +//----- (0043F7D8) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1) +{ + WXSS::CSSTreeLib::Action::~Action(a1); + operator delete(a1); +} + +//----- (0043F7F4) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::Action::~Action(void **a1) +{ + WXSS::CSSTreeLib::Action::~Action(a1, (WXSS::CSSTreeLib::Action *)2); +} + +//----- (0043F80C) -------------------------------------------------------- +void __thiscall WXSS::CSSTreeLib::Action::~Action(void **ecx0, WXSS::CSSTreeLib::Action *this) +{ + void **v3; // ecx + + v3 = ecx0 + 9; + *(v3 - 9) = &off_4F516C; + std::string::_M_dispose(v3); + std::string::_M_dispose(ecx0 + 1); +} +// 4F516C: using guessed type void (__cdecl *off_4F516C)(WXSS::CSSTreeLib::Action *__hidden this); + +//----- (0043F830) -------------------------------------------------------- +char *__fastcall WXSS::CSSTreeLib::Parser::Parser(_DWORD *a1) +{ + char *v2; // eax + int v3; // edx + char *v4; // esi + char *v5; // eax + char *v6; // eax + int v7; // edx + char *v8; // esi + char *result; // eax + void (__cdecl *v10)(void *); // [esp+4h] [ebp-14h] + void (__cdecl *v11)(void *); // [esp+4h] [ebp-14h] + void (__cdecl *v12)(void *); // [esp+4h] [ebp-14h] + void (__cdecl *v13)(void *); // [esp+4h] [ebp-14h] + + *a1 = 0; + a1[1] = 0; + a1[2] = 0; + a1[4] = 0; + a1[5] = 0; + a1[6] = 0; + a1[7] = 0; + a1[8] = 0; + a1[9] = 0; + a1[10] = 0; + a1[11] = 0; + a1[3] = 8; + v2 = (char *)operator new((struct type_info *)0x20, v10); + v3 = a1[3]; + a1[2] = v2; + v4 = &v2[(2 * v3 - 2) & 0xFFFFFFFC]; + v5 = (char *)operator new((struct type_info *)0x200, v11); + *(_DWORD *)v4 = v5; + a1[7] = v4; + a1[5] = v5; + a1[6] = v5 + 512; + a1[11] = v4; + a1[9] = v5; + a1[10] = v5 + 512; + a1[4] = v5; + a1[8] = v5; + a1[12] = 0; + a1[14] = 0; + a1[15] = 0; + a1[16] = 0; + a1[17] = 0; + a1[18] = 0; + a1[19] = 0; + a1[20] = 0; + a1[21] = 0; + a1[13] = 8; + v6 = (char *)operator new((struct type_info *)0x20, v12); + v7 = a1[13]; + a1[12] = v6; + v8 = &v6[(2 * v7 - 2) & 0xFFFFFFFC]; + result = (char *)operator new((struct type_info *)0x200, v13); + *(_DWORD *)v8 = result; + a1[17] = v8; + a1[21] = v8; + a1[15] = result; + a1[16] = result + 512; + a1[19] = result; + a1[20] = result + 512; + a1[14] = result; + a1[18] = result; + return result; +} +// 43F894: variable 'v10' is possibly undefined +// 43F8AF: variable 'v11' is possibly undefined +// 43F921: variable 'v12' is possibly undefined +// 43F93C: variable 'v13' is possibly undefined + +//----- (0043FA0C) -------------------------------------------------------- +char __userpurge WXSS::CSSTreeLib::AndRules::MarkGood@( + int a1@, + WXSS::CSSTreeLib::AndRules *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a3) +{ + unsigned int v4; // ebx + int v5; // edx + int v6; // ecx + char result; // al + + v4 = 0; + while ( 1 ) + { + v5 = *(_DWORD *)(a1 + 4); + if ( (*(_DWORD *)(a1 + 8) - v5) >> 3 <= v4 ) + break; + v6 = *(_DWORD *)(v5 + 8 * v4++); + result = (*(int (__thiscall **)(int, WXSS::CSSTreeLib::AndRules *))(*(_DWORD *)v6 + 8))(v6, this); + if ( !result ) + goto LABEL_6; + } + result = 1; +LABEL_6: + *((_BYTE *)this + 116) = result; + return result; +} + +//----- (0043FA50) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(void *a1) +{ + WXSS::CSSTreeLib::AndRules::~AndRules((int)a1); + operator delete(a1); +} + +//----- (0043FA6C) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::AndRules::~AndRules(int a1) +{ + *(_DWORD *)a1 = &off_4F5180; + std::vector>::~vector((void **)(a1 + 4)); +} +// 4F5180: using guessed type void (__cdecl *off_4F5180)(WXSS::CSSTreeLib::AndRules *__hidden this); + +//----- (0043FA7C) -------------------------------------------------------- +int __fastcall WXSS::CSSTreeLib::Terminal::Terminal(int a1) +{ + int result; // eax + + result = a1 + 12; + *(_DWORD *)a1 = &off_4F5198; + *(_DWORD *)(a1 + 4) = a1 + 12; + *(_DWORD *)(a1 + 8) = 0; + *(_BYTE *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + *(_BYTE *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 28) = 1; + *(_DWORD *)(a1 + 40) = 0; + *(_DWORD *)(a1 + 44) = 0; + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + return result; +} +// 4F5198: using guessed type void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this); + +//----- (0043FACC) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1) +{ + WXSS::CSSTreeLib::Terminal::~Terminal(a1); + operator delete(a1); +} + +//----- (0043FAE8) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::Terminal::~Terminal(void **a1) +{ + WXSS::CSSTreeLib::Terminal::~Terminal(a1, (WXSS::CSSTreeLib::Terminal *)2); +} + +//----- (0043FB00) -------------------------------------------------------- +void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this) +{ + volatile signed __int32 **v3; // ecx + + v3 = (volatile signed __int32 **)(ecx0 + 9); + *(v3 - 9) = (volatile signed __int32 *)&off_4F5198; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); + std::string::_M_dispose(ecx0 + 1); +} +// 4F5198: using guessed type void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this); + +//----- (0043FB24) -------------------------------------------------------- +void __thiscall WXSS::CSSTreeLib::Terminal::~Terminal(void **ecx0, WXSS::CSSTreeLib::Terminal *this) +{ + volatile signed __int32 **v3; // ecx + + v3 = (volatile signed __int32 **)(ecx0 + 9); + *(v3 - 9) = (volatile signed __int32 *)&off_4F5198; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3); + std::string::_M_dispose(ecx0 + 1); +} +// 4F5198: using guessed type void (__cdecl *off_4F5198)(WXSS::CSSTreeLib::Terminal *__hidden this); + +//----- (0043FB48) -------------------------------------------------------- +char __stdcall WXSS::CSSTreeLib::TrueRule::MarkGood( + WXSS::CSSTreeLib::TrueRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a2) +{ + *((_BYTE *)this + 116) = 1; + return 1; +} + +//----- (0043FB58) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::TrueRule::~TrueRule(void *a1) +{ + operator delete(a1); +} + +//----- (0043FB6C) -------------------------------------------------------- +char __userpurge WXSS::CSSTreeLib::ChildRule::MarkGood@( + int a1@, + WXSS::CSSTreeLib::ChildRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a3) +{ + unsigned int v3; // edi + int i; // ebx + char result; // al + int v6; // [esp+10h] [ebp-28h] + char v8; // [esp+1Fh] [ebp-19h] + + v3 = 0; + v8 = 1; + while ( (*((_DWORD *)this + 31) - *((_DWORD *)this + 30)) >> 3 > v3 ) + { + for ( i = *(_DWORD *)(a1 + 4); *(_DWORD *)(a1 + 8) != i; i += 32 ) + { + v6 = *(_DWORD *)(*((_DWORD *)this + 30) + 8 * v3); + if ( std::operator==(i, v6) ) + v8 &= (*(int (__thiscall **)(_DWORD, int))(**(_DWORD **)(i + 24) + 8))(*(_DWORD *)(i + 24), v6); + } + ++v3; + } + result = v8; + *((_BYTE *)this + 116) = v8; + return result; +} + +//----- (0043FBEC) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1) +{ + WXSS::CSSTreeLib::ChildRule::~ChildRule(a1); + operator delete(a1); +} + +//----- (0043FC08) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::ChildRule::~ChildRule(_DWORD *a1) +{ + int v2; // edi + int v3; // esi + int v4; // ecx + + v2 = a1[2]; + v3 = a1[1]; + *a1 = &off_4F51C4; + while ( v2 != v3 ) + { + v4 = v3; + v3 += 32; + std::pair>::~pair(v4); + } + if ( a1[1] ) + operator delete((void *)a1[1]); +} +// 4F51C4: using guessed type void (__cdecl *off_4F51C4)(WXSS::CSSTreeLib::ChildRule *__hidden this); + +//----- (0043FC48) -------------------------------------------------------- +int __stdcall WXSS::CSSTreeLib::FalseRule::MarkGood( + WXSS::CSSTreeLib::FalseRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a2) +{ + *((_BYTE *)this + 116) = 0; + return 0; +} + +//----- (0043FC58) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::FalseRule::~FalseRule(void *a1) +{ + operator delete(a1); +} + +//----- (0043FC6C) -------------------------------------------------------- +int __userpurge WXSS::CSSTreeLib::RuleChain::MarkGood@( + int a1@, + WXSS::CSSTreeLib::RuleChain *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a3) +{ + int result; // eax + unsigned int i; // ebx + int v6; // ecx + int v7; // ecx + + result = 0; + for ( i = 0; ; ++i ) + { + v6 = *(_DWORD *)(a1 + 4); + if ( (*(_DWORD *)(a1 + 8) - v6) >> 3 <= i ) + break; + v7 = *(_DWORD *)(v6 + 8 * i); + result = (*(int (__thiscall **)(int, WXSS::CSSTreeLib::RuleChain *))(*(_DWORD *)v7 + 8))(v7, this); + } + *((_BYTE *)this + 116) = result; + return result; +} + +//----- (0043FCAC) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(void *a1) +{ + WXSS::CSSTreeLib::RuleChain::~RuleChain((int)a1); + operator delete(a1); +} + +//----- (0043FCC8) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::RuleChain::~RuleChain(int a1) +{ + *(_DWORD *)a1 = &off_4F51F4; + std::vector>::~vector((void **)(a1 + 4)); +} +// 4F51F4: using guessed type void (__cdecl *off_4F51F4)(WXSS::CSSTreeLib::RuleChain *__hidden this); + +//----- (0043FCD8) -------------------------------------------------------- +char __userpurge WXSS::CSSTreeLib::SPNotRule::MarkGood@( + int a1@, + WXSS::CSSTreeLib::SPNotRule *this, + WXSS::CSSTreeLib::CSSSyntaxTree *a3) +{ + int v3; // edx + const char *Literal; // eax + + v3 = *((_DWORD *)this + 30); + if ( *((_DWORD *)this + 31) - v3 == 40 ) + { + Literal = WXSS::Token::GetLiteral((_DWORD *)(*(_DWORD *)(v3 + 8) + 24)); + if ( !_stricmp(Literal, off_4EAF6E) && !_stricmp(**(const char ***)(*((_DWORD *)this + 30) + 24), "SELECTOR") ) + (*(void (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 8))( + *(_DWORD *)(a1 + 4), + *(_DWORD *)(*((_DWORD *)this + 30) + 24)); + } + return 1; +} + +//----- (0043FD4C) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(void *a1) +{ + WXSS::CSSTreeLib::SPNotRule::~SPNotRule((int)a1); + operator delete(a1); +} + +//----- (0043FD68) -------------------------------------------------------- +void __fastcall WXSS::CSSTreeLib::SPNotRule::~SPNotRule(int a1) +{ + *(_DWORD *)a1 = &off_4F520C; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(a1 + 8)); +} +// 4F520C: using guessed type void (__cdecl *off_4F520C)(WXSS::CSSTreeLib::SPNotRule *__hidden this); + +//----- (0043FD78) -------------------------------------------------------- +int __userpurge WXSS::Token::Token@(_DWORD *a1@, WXSS::Token *this, const WXSS::Token *a3) +{ + int v3; // eax + int result; // eax + + *a1 = *(_DWORD *)this; + a1[1] = *((_DWORD *)this + 1); + v3 = *((_DWORD *)this + 2); + a1[2] = v3; + if ( v3 ) + { + if ( _CRT_MT ) + _InterlockedIncrement((volatile signed __int32 *)(v3 + 4)); + else + ++*(_DWORD *)(v3 + 4); + } + a1[3] = *((_DWORD *)this + 3); + a1[4] = *((_DWORD *)this + 4); + a1[5] = *((_DWORD *)this + 5); + result = *((_DWORD *)this + 6); + a1[6] = result; + qmemcpy(a1 + 7, (char *)this + 28, 0x40u); + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043FDD4) -------------------------------------------------------- +_DWORD *__thiscall WXSS::Token::operator=(_DWORD *this, int a2) +{ + volatile signed __int32 **v3; // ecx + int i; // eax + + v3 = (volatile signed __int32 **)(this + 1); + *(v3 - 1) = *(volatile signed __int32 **)a2; + std::__shared_ptr::operator=(v3, (volatile signed __int32 **)(a2 + 4)); + this[3] = *(_DWORD *)(a2 + 12); + this[4] = *(_DWORD *)(a2 + 16); + this[5] = *(_DWORD *)(a2 + 20); + this[6] = *(_DWORD *)(a2 + 24); + for ( i = 28; i != 92; ++i ) + *((_BYTE *)this + i) = *(_BYTE *)(a2 + i); + return this; +} + +//----- (0043FE2C) -------------------------------------------------------- +int __thiscall WXSS::Tokenizer::SubStrCheckingClause::SubStrCheckingClause(char *this, int a2, char *Source, int a4) +{ + int result; // eax + + *(_DWORD *)this = a2; + strcpy(this + 8, Source); + *((_DWORD *)this + 1) = strlen(Source); + result = a4; + *((_DWORD *)this + 6) = a4; + return result; +} + +//----- (0043FE70) -------------------------------------------------------- +void __fastcall __gnu_cxx::__scoped_lock::~__scoped_lock(__gthread_mutex_t **a1) +{ + _DWORD *exception; // eax + + if ( _CRT_MT ) + { + if ( __gthr_win32_mutex_unlock(*a1) ) + { + exception = __cxa_allocate_exception(4u); + *exception = &off_4F534C; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); + } + } +} +// 4F1314: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; +// 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); +// 15412D0: using guessed type int _CRT_MT; + +//----- (0043FEE0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) +{ + return std::__basic_file::fd(a1 + 40); +} + +//----- (0043FEF0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) +{ + return std::__basic_file::file(a1 + 40); +} + +//----- (0043FF10) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::filebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_4F5224; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::filebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 4F5224: using guessed type int (*off_4F5224)(); + +//----- (0043FFB0) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::filebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_4F5224; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::filebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 4F5224: using guessed type int (*off_4F5224)(); + +//----- (00440050) -------------------------------------------------------- +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) +{ + void *result; // eax + + result = std::filebuf::basic_filebuf((int)a1); + *a1 = &off_4F5224; + return result; +} +// 4F5224: using guessed type int (*off_4F5224)(); + +//----- (00440070) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::filebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_4F5224; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::filebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 4F5224: using guessed type int (*off_4F5224)(); + +//----- (00440110) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::filebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_4F5224; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::filebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 4F5224: using guessed type int (*off_4F5224)(); + +//----- (004401B0) -------------------------------------------------------- +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) +{ + void *result; // eax + + result = std::filebuf::basic_filebuf((int)a1); + *a1 = &off_4F5224; + return result; +} +// 4F5224: using guessed type int (*off_4F5224)(); + +//----- (004401D0) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1) +{ + *a1 = &off_4F6090; + std::filebuf::close((int)a1); + std::__basic_file::~__basic_file(a1 + 10); + *a1 = &off_4F6414; + std::locale::~locale(a1 + 7); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (00440220) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6090; + std::filebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (00440260) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6090; + std::filebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004402A0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_filebuf::fd(int a1) +{ + return std::__basic_file::fd(a1 + 40); +} + +//----- (004402B0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_filebuf::file(int a1) +{ + return std::__basic_file::file(a1 + 40); +} + +//----- (004402D0) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::wfilebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_4F5264; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::wfilebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 4F5264: using guessed type int (*off_4F5264)(); + +//----- (00440370) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::wfilebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_4F5264; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::wfilebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 4F5264: using guessed type int (*off_4F5264)(); + +//----- (00440410) -------------------------------------------------------- +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) +{ + void *result; // eax + + result = std::wfilebuf::basic_filebuf((int)a1); + *a1 = &off_4F5264; + return result; +} +// 4F5264: using guessed type int (*off_4F5264)(); + +//----- (00440430) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, FILE *a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::wfilebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_4F5264; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::wfilebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 4F5264: using guessed type int (*off_4F5264)(); + +//----- (004404D0) -------------------------------------------------------- +char __thiscall __gnu_cxx::stdio_filebuf::stdio_filebuf(char *this, int a2, int a3, int a4) +{ + _BYTE *v5; // esi + int v6; // eax + + v5 = this + 40; + std::wfilebuf::basic_filebuf((int)this); + *(_DWORD *)this = &off_4F5264; + std::__basic_file::sys_open(v5, a2, a3); + LOBYTE(v6) = std::__basic_file::is_open(v5); + if ( (_BYTE)v6 ) + { + *((_DWORD *)this + 12) = a3; + *((_DWORD *)this + 17) = a4; + std::wfilebuf::_M_allocate_internal_buffer((int)this); + *((_DWORD *)this + 5) = 0; + *(_WORD *)(this + 73) = 0; + v6 = *((_DWORD *)this + 16); + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 1) = v6; + *((_DWORD *)this + 2) = v6; + *((_DWORD *)this + 3) = v6; + *((_DWORD *)this + 6) = 0; + } + return v6; +} +// 4F5264: using guessed type int (*off_4F5264)(); + +//----- (00440570) -------------------------------------------------------- +void *__fastcall __gnu_cxx::stdio_filebuf::stdio_filebuf(_DWORD *a1) +{ + void *result; // eax + + result = std::wfilebuf::basic_filebuf((int)a1); + *a1 = &off_4F5264; + return result; +} +// 4F5264: using guessed type int (*off_4F5264)(); + +//----- (00440590) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(_DWORD **a1) +{ + *a1 = &off_4F60D0; + std::wfilebuf::close((int)a1); + std::__basic_file::~__basic_file(a1 + 10); + *a1 = &off_4F6454; + std::locale::~locale(a1 + 7); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004405E0) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F60D0; + std::wfilebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (00440620) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_filebuf::~stdio_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F60D0; + std::wfilebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (00440660) -------------------------------------------------------- +int __cdecl __gnu_cxx::__concat_size_t(char *a1, unsigned int a2, unsigned int a3) +{ + void *v4; // esp + void *v5; // esp + _BYTE *v6; // ebx + unsigned int v7; // eax + int v8; // edi + int v10; // [esp-10h] [ebp-48h] BYREF + _BYTE v11[28]; // [esp-4h] [ebp-3Ch] BYREF + int *v12; // [esp+18h] [ebp-20h] + _BYTE *v13; // [esp+1Ch] [ebp-1Ch] + + v4 = alloca(32); + v5 = alloca(32); + v12 = &v10; + v13 = v11; + v6 = v11; + do + { + *--v6 = byte_4ED4CD[a3 % 0xA]; + v7 = a3; + a3 /= 0xAu; + } + while ( v7 > 9 ); + v8 = v13 - v6; + if ( v13 - v6 > a2 ) + return -1; + memcpy(a1, (char *)v12 - v8 + 12, v13 - v6); + return v8; +} + +//----- (004406F0) -------------------------------------------------------- +int __cdecl __gnu_cxx::__snprintf_lite(char *a1, unsigned int a2, const char *a3, char *a4) +{ + const char *Src; // edx + const char *v5; // esi + const char *v7; // edi + char *v8; // ebx + char v9; // al + char v10; // al + char *v11; // ebp + int v12; // eax + int result; // eax + char *v14; // ebp + char *v15; // ecx + char v16; // al + char *v17; // [esp+30h] [ebp+4h] + + Src = a1; + v5 = a3; + v7 = &a1[a2 - 1]; + v8 = a1; + v9 = *a3; + if ( !*a3 ) + { + result = 0; + goto LABEL_17; + } + if ( a1 >= v7 ) +LABEL_26: + __gnu_cxx::__throw_insufficient_space(Src, v8); + while ( 1 ) + { + if ( v9 != 37 ) + goto LABEL_4; + v10 = v5[1]; + if ( v10 == 115 ) + { + v14 = a4 + 4; + v15 = *(char **)a4; + v16 = *v15; + if ( *v15 ) + { + if ( v7 <= v8 ) + { + v7 = v8; +LABEL_24: + __gnu_cxx::__throw_insufficient_space(Src, v7); + } + while ( 1 ) + { + ++v15; + *v8++ = v16; + v16 = *v15; + if ( !*v15 ) + break; + if ( v7 == v8 ) + goto LABEL_24; + } + } + v5 += 2; + a4 = v14; + goto LABEL_6; + } + if ( v10 != 122 ) + { + if ( v10 == 37 ) + ++v5; + else +LABEL_4: + v10 = *v5; + *v8 = v10; + ++v5; + ++v8; +LABEL_6: + v9 = *v5; + if ( !*v5 ) + break; + goto LABEL_7; + } + if ( v5[2] != 117 ) + goto LABEL_4; + v11 = a4 + 4; + v17 = (char *)Src; + v12 = __gnu_cxx::__concat_size_t(v8, v7 - v8, *(_DWORD *)a4); + Src = v17; + if ( v12 <= 0 ) + goto LABEL_26; + v5 += 3; + v8 += v12; + a4 = v11; + v9 = *v5; + if ( !*v5 ) + break; +LABEL_7: + if ( v8 >= v7 ) + goto LABEL_26; + } + result = v8 - Src; +LABEL_17: + *v8 = 0; + return result; +} + +//----- (00440810) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) +{ + return *(_DWORD *)(a1 + 32); +} + +//----- (00440820) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + int v15; // edx + int result; // eax + const std::locale *v17; // [esp+4h] [ebp-48h] + volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] + _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + v18 = (volatile signed __int32 **)(this + 28); + std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); + std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); + std::locale::~locale(v19); + v14 = *(_DWORD *)(this + 32); + *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); + v15 = *(_DWORD *)(a2 + 36); + *(_DWORD *)(a2 + 32) = v14; + result = *(_DWORD *)(this + 36); + *(_DWORD *)(this + 36) = v15; + *(_DWORD *)(a2 + 36) = result; + return result; +} +// 440888: variable 'v17' is possibly undefined + +//----- (004408E0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) +{ + return fflush(*(FILE **)(a1 + 32)); +} + +//----- (00440900) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) +{ + FILE *File; // edx + char *v4; // eax + int result; // eax + + File = *(FILE **)(a1 + 32); + if ( --File->_cnt < 0 ) + { + result = _filbuf(File); + } + else + { + v4 = File->_ptr++; + result = (unsigned __int8)*v4; + } + *(_DWORD *)(a1 + 36) = result; + return result; +} + +//----- (00440940) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, char *Buffer, size_t ElementCount) +{ + int result; // eax + int v5; // edx + + result = fread(Buffer, 1u, ElementCount, *(FILE **)(this + 32)); + v5 = -1; + if ( result > 0 ) + v5 = (unsigned __int8)Buffer[result - 1]; + *(_DWORD *)(this + 36) = v5; + return result; +} + +//----- (00440990) -------------------------------------------------------- +size_t __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, void *Buffer, size_t ElementCount) +{ + return fwrite(Buffer, 1u, ElementCount, this[8]); +} + +//----- (004409C0) -------------------------------------------------------- +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff( + _DWORD *this, + int a2, + int Offset, + int a4, + int a5, + int a6) +{ + int Origin; // eax + int v9; // eax + + Origin = 0; + *this = -1; + this[1] = -1; + this[2] = 0; + if ( a5 ) + Origin = (a5 != 1) + 1; + if ( !fseek(*(FILE **)(a2 + 32), Offset, Origin) ) + { + v9 = ftell(*(FILE **)(a2 + 32)); + this[2] = 0; + *(_QWORD *)this = v9; + } + return this; +} + +//----- (00440A50) -------------------------------------------------------- +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( + _DWORD *this, + FILE **a2, + int Offset, + int a4, + int a5, + int a6, + int a7) +{ + _DWORD *(__thiscall *file)(_DWORD *, int, int, int, int, int); // edx + FILE *Stream; // eax + int v11; // eax + + file = (_DWORD *(__thiscall *)(_DWORD *, int, int, int, int, int))(*a2)->_file; + if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) + { + Stream = a2[8]; + *this = -1; + this[1] = -1; + this[2] = 0; + if ( !fseek(Stream, Offset, 0) ) + { + v11 = ftell(a2[8]); + this[2] = 0; + *(_QWORD *)this = v11; + } + return this; + } + else + { + file(this, (int)a2, Offset, a4, 0, a7); + return this; + } +} + +//----- (00440B20) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(_DWORD *this, int a2) +{ + FILE *Stream; // edx + char *v4; // ecx + + Stream = (FILE *)this[8]; + if ( a2 == -1 ) + return -(fflush(Stream) != 0); + if ( --Stream->_cnt < 0 ) + return _flsbuf(a2, Stream); + v4 = Stream->_ptr++; + *v4 = a2; + return (unsigned __int8)a2; +} + +//----- (00440B90) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, int a2) +{ + int result; // eax + + result = a2; + if ( a2 != -1 || (result = *(_DWORD *)(this + 36), result != -1) ) + result = ungetc(result, *(FILE **)(this + 32)); + *(_DWORD *)(this + 36) = -1; + return result; +} + +//----- (00440BD0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) +{ + FILE *Stream; // edx + char *v3; // eax + int Character; // eax + + Stream = *(FILE **)(a1 + 32); + if ( --Stream->_cnt < 0 ) + { + Character = _filbuf(Stream); + Stream = *(FILE **)(a1 + 32); + } + else + { + v3 = Stream->_ptr++; + Character = (unsigned __int8)*v3; + } + return ungetc(Character, Stream); +} + +//----- (00440C10) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + int v3; // eax + int result; // eax + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf(this, a2, v5); + v3 = *(_DWORD *)(a2 + 32); + *this = &off_4F52A4; + *(_DWORD *)(a2 + 32) = 0; + this[8] = v3; + result = *(_DWORD *)(a2 + 36); + *(_DWORD *)(a2 + 36) = -1; + this[9] = result; + return result; +} +// 440C1E: variable 'v5' is possibly undefined +// 4F52A4: using guessed type int (*off_4F52A4)(); + +//----- (00440C50) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_4F6414; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + result = a2; + *this = &off_4F52A4; + this[9] = -1; + this[8] = a2; + return result; +} +// 4F52A4: using guessed type int (*off_4F52A4)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (00440CB0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + int v3; // eax + int result; // eax + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf(this, a2, v5); + v3 = *(_DWORD *)(a2 + 32); + *this = &off_4F52A4; + *(_DWORD *)(a2 + 32) = 0; + this[8] = v3; + result = *(_DWORD *)(a2 + 36); + *(_DWORD *)(a2 + 36) = -1; + this[9] = result; + return result; +} +// 440CBE: variable 'v5' is possibly undefined +// 4F52A4: using guessed type int (*off_4F52A4)(); + +//----- (00440CF0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_4F6414; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + result = a2; + *this = &off_4F52A4; + this[9] = -1; + this[8] = a2; + return result; +} +// 4F52A4: using guessed type int (*off_4F52A4)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (00440D50) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1) +{ + _DWORD **v2; // ecx + + v2 = (_DWORD **)(a1 + 28); + *(v2 - 7) = &off_4F6414; + std::locale::~locale(v2); + operator delete(a1); +} +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (00440D80) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (00440D90) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) +{ + int v3; // eax + int v4; // eax + + std::streambuf::operator=((volatile signed __int32 **)this, a2); + v3 = *(_DWORD *)(a2 + 32); + *(_DWORD *)(a2 + 32) = 0; + *(_DWORD *)(this + 32) = v3; + v4 = *(_DWORD *)(a2 + 36); + *(_DWORD *)(a2 + 36) = -1; + *(_DWORD *)(this + 36) = v4; + return this; +} + +//----- (00440DD0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::file(int a1) +{ + return *(_DWORD *)(a1 + 32); +} + +//----- (00440DE0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::swap(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + __int16 v15; // dx + int result; // eax + const std::locale *v17; // [esp+4h] [ebp-48h] + volatile signed __int32 **v18; // [esp+1Ch] [ebp-30h] + _DWORD *v19[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + v18 = (volatile signed __int32 **)(this + 28); + std::locale::locale((volatile signed __int32 **)v19, (volatile signed __int32 **)(this + 28), v17); + std::locale::operator=(v18, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v19); + std::locale::~locale(v19); + v14 = *(_DWORD *)(this + 32); + *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); + v15 = *(_WORD *)(a2 + 36); + *(_DWORD *)(a2 + 32) = v14; + result = *(unsigned __int16 *)(this + 36); + *(_WORD *)(this + 36) = v15; + *(_WORD *)(a2 + 36) = result; + return result; +} +// 440E48: variable 'v17' is possibly undefined + +//----- (00440EA0) -------------------------------------------------------- +int __fastcall __gnu_cxx::stdio_sync_filebuf::sync(int a1) +{ + return fflush(*(FILE **)(a1 + 32)); +} + +//----- (00440EC0) -------------------------------------------------------- +wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::uflow(int a1) +{ + wint_t result; // ax + + result = getwc(*(FILE **)(a1 + 32)); + *(_WORD *)(a1 + 36) = result; + return result; +} + +//----- (00440EE0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsgetn(int this, int a2, int a3) +{ + int v4; // edi + wint_t v5; // ax + + v4 = 0; + if ( a3 ) + { + while ( 1 ) + { + v5 = getwc(*(FILE **)(this + 32)); + if ( v5 == 0xFFFF ) + break; + *(_WORD *)(a2 + 2 * v4++) = v5; + if ( a3 == v4 ) + goto LABEL_7; + } + if ( !v4 ) + goto LABEL_6; +LABEL_7: + *(_WORD *)(this + 36) = *(_WORD *)(a2 + 2 * v4 - 2); + return v4; + } + else + { +LABEL_6: + *(_WORD *)(this + 36) = -1; + return 0; + } +} + +//----- (00440F60) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::xsputn(FILE **this, int a2, int a3) +{ + int i; // ebx + + if ( !a3 ) + return 0; + for ( i = 0; i != a3; ++i ) + { + if ( putwc(*(_WORD *)(a2 + 2 * i), this[8]) == 0xFFFF ) + break; + } + return i; +} + +//----- (00440FB0) -------------------------------------------------------- +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekoff( + _DWORD *this, + int a2, + int Offset, + int a4, + int a5, + int a6) +{ + int Origin; // eax + int v9; // eax + + Origin = 0; + *this = -1; + this[1] = -1; + this[2] = 0; + if ( a5 ) + Origin = (a5 != 1) + 1; + if ( !fseek(*(FILE **)(a2 + 32), Offset, Origin) ) + { + v9 = ftell(*(FILE **)(a2 + 32)); + this[2] = 0; + *(_QWORD *)this = v9; + } + return this; +} + +//----- (00441040) -------------------------------------------------------- +_DWORD *__thiscall __gnu_cxx::stdio_sync_filebuf::seekpos( + _DWORD *this, + FILE **a2, + int Offset, + int a4, + int a5, + int a6, + int a7) +{ + _DWORD *(__thiscall *file)(_DWORD *, int, int, int, int, int); // edx + FILE *Stream; // eax + int v11; // eax + + file = (_DWORD *(__thiscall *)(_DWORD *, int, int, int, int, int))(*a2)->_file; + if ( file == __gnu_cxx::stdio_sync_filebuf::seekoff ) + { + Stream = a2[8]; + *this = -1; + this[1] = -1; + this[2] = 0; + if ( !fseek(Stream, Offset, 0) ) + { + v11 = ftell(a2[8]); + this[2] = 0; + *(_QWORD *)this = v11; + } + return this; + } + else + { + file(this, (int)a2, Offset, a4, 0, a7); + return this; + } +} + +//----- (00441110) -------------------------------------------------------- +__int16 __thiscall __gnu_cxx::stdio_sync_filebuf::overflow(FILE **this, wchar_t Character) +{ + int v2; // eax + + if ( Character == 0xFFFF ) + return -(fflush(this[8]) != 0); + else + LOWORD(v2) = putwc(Character, this[8]); + return v2; +} + +//----- (00441150) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::pbackfail(int this, wint_t Character) +{ + int result; // eax + + if ( Character == 0xFFFF ) + { + result = *(unsigned __int16 *)(this + 36); + if ( (_WORD)result != 0xFFFF ) + LOWORD(result) = ungetwc(*(_WORD *)(this + 36), *(FILE **)(this + 32)); + *(_WORD *)(this + 36) = -1; + } + else + { + LOWORD(result) = ungetwc(Character, *(FILE **)(this + 32)); + *(_WORD *)(this + 36) = -1; + } + return result; +} + +//----- (004411C0) -------------------------------------------------------- +wint_t __fastcall __gnu_cxx::stdio_sync_filebuf::underflow(int a1) +{ + wint_t v2; // ax + + v2 = getwc(*(FILE **)(a1 + 32)); + return ungetwc(v2, *(FILE **)(a1 + 32)); +} + +//----- (004411F0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2) +{ + int v3; // eax + int result; // eax + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v5); + v3 = *(_DWORD *)(a2 + 32); + *(_DWORD *)this = &off_4F52E4; + *(_DWORD *)(a2 + 32) = 0; + *(_DWORD *)(this + 32) = v3; + *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); + result = -1; + *(_WORD *)(a2 + 36) = -1; + return result; +} +// 4411FE: variable 'v5' is possibly undefined +// 4F52E4: using guessed type int (*off_4F52E4)(); + +//----- (00441240) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_4F6454; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_4F52E4; + this[8] = a2; + result = -1; + *((_WORD *)this + 18) = -1; + return result; +} +// 4F52E4: using guessed type int (*off_4F52E4)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004412A0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(int this, int a2) +{ + int v3; // eax + int result; // eax + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v5); + v3 = *(_DWORD *)(a2 + 32); + *(_DWORD *)this = &off_4F52E4; + *(_DWORD *)(a2 + 32) = 0; + *(_DWORD *)(this + 32) = v3; + *(_WORD *)(this + 36) = *(_WORD *)(a2 + 36); + result = -1; + *(_WORD *)(a2 + 36) = -1; + return result; +} +// 4412AE: variable 'v5' is possibly undefined +// 4F52E4: using guessed type int (*off_4F52E4)(); + +//----- (004412F0) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::stdio_sync_filebuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_4F6454; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_4F52E4; + this[8] = a2; + result = -1; + *((_WORD *)this + 18) = -1; + return result; +} +// 4F52E4: using guessed type int (*off_4F52E4)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (00441350) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(char *a1) +{ + _DWORD **v2; // ecx + + v2 = (_DWORD **)(a1 + 28); + *(v2 - 7) = &off_4F6454; + std::locale::~locale(v2); + operator delete(a1); +} +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (00441380) -------------------------------------------------------- +void __fastcall __gnu_cxx::stdio_sync_filebuf::~stdio_sync_filebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (00441390) -------------------------------------------------------- +int __thiscall __gnu_cxx::stdio_sync_filebuf::operator=(int this, int a2) +{ + int v3; // eax + + std::wstreambuf::operator=((volatile signed __int32 **)this, a2); + v3 = *(_DWORD *)(a2 + 32); + *(_DWORD *)(a2 + 32) = 0; + *(_DWORD *)(this + 32) = v3; + LOWORD(v3) = *(_WORD *)(a2 + 36); + *(_WORD *)(a2 + 36) = -1; + *(_WORD *)(this + 36) = v3; + return this; +} + +//----- (004413D0) -------------------------------------------------------- +void __fastcall __gnu_cxx::recursive_init_error::recursive_init_error(_DWORD *a1) +{ + *a1 = &off_4F5324; +} +// 4F5324: using guessed type void (__cdecl *off_4F5324)(__gnu_cxx::recursive_init_error *__hidden this); + +//----- (004413E0) -------------------------------------------------------- +void __fastcall __gnu_cxx::recursive_init_error::~recursive_init_error(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5324; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 4413EC: variable 'v2' is possibly undefined +// 4F5324: using guessed type void (__cdecl *off_4F5324)(__gnu_cxx::recursive_init_error *__hidden this); + +//----- (00441410) -------------------------------------------------------- +void __cdecl __gnu_cxx::recursive_init_error::~recursive_init_error(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5324; + std::exception::~exception(a1); +} +// 441410: variable 'v1' is possibly undefined +// 4F5324: using guessed type void (__cdecl *off_4F5324)(__gnu_cxx::recursive_init_error *__hidden this); + +//----- (00441420) -------------------------------------------------------- +void __fastcall __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5338; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 44142C: variable 'v2' is possibly undefined +// 4F5338: using guessed type void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this); + +//----- (00441450) -------------------------------------------------------- +void __cdecl __gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5338; + std::exception::~exception(a1); +} +// 441450: variable 'v1' is possibly undefined +// 4F5338: using guessed type void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this); + +//----- (00441460) -------------------------------------------------------- +void __fastcall __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F534C; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 44146C: variable 'v2' is possibly undefined +// 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); + +//----- (00441490) -------------------------------------------------------- +void __cdecl __gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F534C; + std::exception::~exception(a1); +} +// 441490: variable 'v1' is possibly undefined +// 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); + +//----- (004414A0) -------------------------------------------------------- +void __cdecl __noreturn __gnu_cxx::__throw_insufficient_space(const char *Src, const char *a2) +{ + void *v2; // esp + void *v3; // esp + int v4[38]; // [esp+10h] [ebp-98h] BYREF + + HIBYTE(v4[5]) = unk_4ED464; + strcpy((char *)&v4[31], " "); + strcpy( + (char *)&v4[6], + "ot enough space for format expansion (Please submit full bug report at https://gcc.gnu.org/bugs/):\n "); + v2 = alloca(a2 - Src + 117); + v3 = alloca(a2 - Src + 117); + qmemcpy(v4, (char *)&v4[5] + 3, 0x68u); + memcpy(&v4[26], Src, a2 - Src); + *((_BYTE *)&v4[26] + v4[3]) = 0; + std::__throw_logic_error((std::logic_error *)v4); +} + +//----- (00441530) -------------------------------------------------------- +void __cdecl __noreturn __gnu_cxx::__verbose_terminate_handler(size_t a1, size_t a2, FILE *a3) +{ + struct type_info *v3; // eax + const char *lpmangled; // ebx + char *v5; // esi + FILE *lpout; // [esp+4h] [ebp-38h] + int status[8]; // [esp+1Ch] [ebp-20h] BYREF + + if ( !__gnu_cxx::__verbose_terminate_handler(void)::terminating ) + { + __gnu_cxx::__verbose_terminate_handler(void)::terminating = 1; + v3 = __cxa_current_exception_type(); + if ( v3 ) + { + lpmangled = (const char *)((**((_BYTE **)v3 + 1) == 42) + *((_DWORD *)v3 + 1)); + status[0] = -1; + v5 = __cxa_demangle(lpmangled, 0, 0, status); + fwrite("terminate called after throwing an instance of '", 1u, 0x30u, &__iob[2]); + lpout = &__iob[2]; + if ( status[0] ) + fputs(lpmangled, lpout); + else + fputs(v5, lpout); + fwrite("'\n", 1u, 2u, &__iob[2]); + if ( !status[0] ) + __mingw_free((unsigned int)v5); + __cxa_rethrow(); + } + fwrite("terminate called without an active exception\n", 1u, 0x2Du, &__iob[2]); + abort(); + } + __gnu_cxx::__verbose_terminate_handler(a1, a2, a3); +} +// 4E9B90: using guessed type char __gnu_cxx::__verbose_terminate_handler(void)::terminating; +// 441530: using guessed type int status[8]; + +//----- (00441620) -------------------------------------------------------- +void __noreturn __gnu_cxx::__throw_concurrence_lock_error(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_4F5338; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); +} +// 4F1308: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; +// 4F5338: using guessed type void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this); + +//----- (00441650) -------------------------------------------------------- +void __noreturn __gnu_cxx::__throw_concurrence_unlock_error(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_4F534C; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); +} +// 4F1314: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; +// 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); + +//----- (00441680) -------------------------------------------------------- +int __gnu_cxx::__freeres(void) +{ + int result; // eax + + result = dword_4E837C; + if ( dword_4E837C ) + { + result = __mingw_free(dword_4E837C); + dword_4E837C = 0; + } + return result; +} +// 4E837C: using guessed type int dword_4E837C; + +//----- (004416B0) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (004416C0) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (004416D0) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (004416E0) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (004416F0) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (00441700) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (00441710) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (00441720) -------------------------------------------------------- +bool __cdecl __gnu_cxx::operator==(_DWORD *a1, _DWORD *a2) +{ + return *a1 == *a2; +} + +//----- (00441730) -------------------------------------------------------- +char __userpurge __cxxabiv1::__class_type_info::__do_catch@( + _DWORD *a1@, + __cxxabiv1::__class_type_info *this, + const std::type_info *a3, + void **a4, + unsigned int a5) +{ + char result; // al + + result = std::type_info::operator==(a1, (int)this); + if ( !result && (unsigned int)a4 <= 3 ) + return (*(int (__thiscall **)(__cxxabiv1::__class_type_info *, _DWORD *, const std::type_info *))(*(_DWORD *)this + 20))( + this, + a1, + a3); + return result; +} + +//----- (00441770) -------------------------------------------------------- +bool __thiscall __cxxabiv1::__class_type_info::__do_upcast(_DWORD *this, int a2, int a3, _DWORD *a4) +{ + bool result; // al + + result = std::type_info::operator==(this, a2); + if ( result ) + { + a4[3] = 8; + a4[1] = 6; + *a4 = a3; + } + return result; +} + +//----- (004417B0) -------------------------------------------------------- +int __userpurge __cxxabiv1::__class_type_info::__do_upcast@( + int *a1@, + __cxxabiv1::__class_type_info *this, + const __class_type_info *a3, + void **a4) +{ + int v4; // eax + int v5; // edx + int v6; // edx + int v8; // [esp+10h] [ebp-1Ch] BYREF + int v9; // [esp+14h] [ebp-18h] + int v10; // [esp+18h] [ebp-14h] + int v11; // [esp+1Ch] [ebp-10h] + + v4 = *a1; + v8 = 0; + v5 = *(_DWORD *)a3; + v9 = 0; + v10 = 16; + v11 = 0; + (*(void (__thiscall **)(int *, __cxxabiv1::__class_type_info *, int, int *))(v4 + 24))(a1, this, v5, &v8); + v6 = 0; + if ( (v9 & 6) == 6 ) + { + v6 = 1; + *(_DWORD *)a3 = v8; + } + return v6; +} + +//----- (00441820) -------------------------------------------------------- +int __thiscall __cxxabiv1::__class_type_info::__do_dyncast( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + _DWORD *a8) +{ + bool v9; // al + _DWORD *v10; // [esp+1Ch] [ebp-10h] + + if ( a5 == a7 && (v10 = this, v9 = std::type_info::operator==(this, a6), this = v10, v9) ) + { + a8[2] = a3; + return 0; + } + else + { + if ( std::type_info::operator==(this, a4) ) + { + *a8 = a5; + a8[3] = 1; + a8[1] = a3; + } + return 0; + } +} + +//----- (00441890) -------------------------------------------------------- +int __stdcall __cxxabiv1::__class_type_info::__do_find_public_src( + __cxxabiv1::__class_type_info *this, + const __cxxabiv1::__class_type_info *a2, + const void *a3, + const __cxxabiv1::__class_type_info *a4, + const void *a5) +{ + return 5 * (a4 == a2) + 1; +} + +//----- (004418B0) -------------------------------------------------------- +char __thiscall __cxxabiv1::__si_class_type_info::__do_upcast(int this, int a2, int a3, _DWORD *a4) +{ + char result; // al + + result = __cxxabiv1::__class_type_info::__do_upcast((_DWORD *)this, a2, a3, a4); + if ( !result ) + return (*(int (__thiscall **)(_DWORD, int, int, _DWORD *))(**(_DWORD **)(this + 8) + 24))( + *(_DWORD *)(this + 8), + a2, + a3, + a4); + return result; +} + +//----- (00441910) -------------------------------------------------------- +int __thiscall __cxxabiv1::__si_class_type_info::__do_dyncast( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + _DWORD *a8) +{ + bool v8; // al + _DWORD *v9; // ecx + int v10; // edx + bool v12; // al + + v8 = std::type_info::operator==(this, a4); + v9 = this; + v10 = a7; + if ( v8 ) + { + *a8 = a5; + a8[1] = a3; + if ( a2 < 0 ) + { + if ( a2 == -2 ) + a8[3] = 1; + } + else + { + a8[3] = 5 * (a7 == a2 + a5) + 1; + } + } + else + { + if ( a5 != a7 ) + return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( + v9[2], + a2, + a3, + a4, + a5, + a6, + v10, + a8); + v12 = std::type_info::operator==(this, a6); + v9 = this; + v10 = a7; + if ( !v12 ) + return (*(int (__thiscall **)(_DWORD, int, int, int, int, int, int, _DWORD *))(*(_DWORD *)v9[2] + 28))( + v9[2], + a2, + a3, + a4, + a5, + a6, + v10, + a8); + a8[2] = a3; + } + return 0; +} + +//----- (00441A10) -------------------------------------------------------- +int __userpurge __cxxabiv1::__si_class_type_info::__do_find_public_src@( + int a1@, + __cxxabiv1::__si_class_type_info *this, + const __cxxabiv1::__class_type_info *a3, + const void *a4, + const __cxxabiv1::__class_type_info *a5, + const void *a6) +{ + __cxxabiv1::__si_class_type_info *v7; // edx + bool v9; // al + + v7 = this; + if ( a5 == a3 && (v9 = std::type_info::operator==((_DWORD *)a1, (int)a4), v7 = this, v9) ) + return 6; + else + return (*(int (__thiscall **)(_DWORD, __cxxabiv1::__si_class_type_info *, const __cxxabiv1::__class_type_info *, const void *, const __cxxabiv1::__class_type_info *))(**(_DWORD **)(a1 + 8) + 32))( + *(_DWORD *)(a1 + 8), + v7, + a3, + a4, + a5); +} + +//----- (00441A80) -------------------------------------------------------- +int __thiscall __cxxabiv1::__vmi_class_type_info::__do_upcast(_DWORD *this, int a2, _DWORD *a3, _DWORD *a4) +{ + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // ebx + int v9; // eax + int v10; // esi + char *v11; // edx + int v12; // eax + int v13; // eax + int v14; // ecx + int v15; // eax + _DWORD *v16; // ecx + int result; // eax + bool v18; // al + char v19; // [esp+13h] [ebp-39h] + unsigned __int8 v20; // [esp+13h] [ebp-39h] + int v21; // [esp+18h] [ebp-34h] + int v22; // [esp+20h] [ebp-2Ch] BYREF + int v23; // [esp+24h] [ebp-28h] + int v24; // [esp+28h] [ebp-24h] + _DWORD *v25; // [esp+2Ch] [ebp-20h] + + LOBYTE(v5) = __cxxabiv1::__class_type_info::__do_upcast(this, a2, (int)a3, a4); + v6 = v5; + if ( (_BYTE)v5 ) + return v6; + v21 = a4[2]; + if ( (v21 & 0x10) != 0 ) + v21 = this[2]; + v7 = this[3]; + v8 = v7 - 1; + if ( !v7 ) + { +LABEL_34: + LOBYTE(v6) = a4[1] != 0; + return v6; + } + while ( 1 ) + { + while ( 1 ) + { + v22 = 0; + v23 = 0; + v24 = v21; + v9 = this[2 * v8 + 5]; + v25 = 0; + v10 = v9 & 2; + v6 = v9 & 1; + v19 = v9 & 1; + if ( !(v10 | v21 & 1) ) + goto LABEL_9; + v11 = 0; + if ( a3 ) + { + v12 = v9 >> 8; + if ( v19 ) + v12 = *(_DWORD *)(*a3 + v12); + v11 = (char *)a3 + v12; + } + v6 = (*(int (__thiscall **)(_DWORD, int, char *, int *))(*(_DWORD *)this[2 * v8 + 4] + 24))( + this[2 * v8 + 4], + a2, + v11, + &v22); + if ( !(_BYTE)v6 ) + goto LABEL_9; + if ( v25 == (_DWORD *)8 && v19 ) + v25 = (_DWORD *)this[2 * v8 + 4]; + if ( !v10 && v23 > 3 ) + v23 &= ~2u; + v13 = a4[3]; + if ( v13 ) + break; + v14 = v24; + *a4 = v22; + v15 = v23; + a4[2] = v14; + v16 = v25; + a4[1] = v15; + a4[3] = v16; + if ( v15 <= 3 ) + return v6; + if ( (v15 & 2) != 0 ) + { + if ( (this[2] & 1) == 0 ) + return v6; + goto LABEL_9; + } + if ( (v15 & 1) == 0 || (this[2] & 2) == 0 ) + return v6; + if ( --v8 == -1 ) + goto LABEL_34; + } + if ( *a4 != v22 ) + break; + if ( !*a4 ) + { + if ( v25 == (_DWORD *)8 || v13 == 8 || (v20 = v6, v18 = std::type_info::operator==(v25, a4[3]), v6 = v20, !v18) ) + { + a4[1] = 2; + return v6; + } + } + a4[1] |= v23; +LABEL_9: + if ( --v8 == -1 ) + goto LABEL_34; + } + *a4 = 0; + result = v6; + a4[1] = 2; + return result; +} +// 441AA8: variable 'v5' is possibly undefined + +//----- (00441CB0) -------------------------------------------------------- +int __thiscall __cxxabiv1::__vmi_class_type_info::__do_dyncast( + _DWORD *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + _DWORD *a7, + int *a8) +{ + int v8; // eax + int v9; // edi + int v10; // esi + int v11; // ebx + int v12; // edx + int v13; // ecx + int v14; // edx + int v15; // eax + int v16; // eax + int v17; // ecx + int v18; // eax + int v19; // edx + unsigned __int8 v20; // si + int v21; // edx + int v22; // ecx + int v24; // edx + int v25; // eax + int v26; // eax + int v28; // [esp+44h] [ebp-54h] + int v29; // [esp+44h] [ebp-54h] + int v30; // [esp+48h] [ebp-50h] + char v31; // [esp+48h] [ebp-50h] + unsigned int v32; // [esp+4Ch] [ebp-4Ch] + int v33; // [esp+54h] [ebp-44h] + unsigned __int8 v34; // [esp+59h] [ebp-3Fh] + char i; // [esp+5Ah] [ebp-3Eh] + char v36; // [esp+5Bh] [ebp-3Dh] + int v37; // [esp+68h] [ebp-30h] BYREF + int v38; // [esp+6Ch] [ebp-2Ch] + int v39; // [esp+70h] [ebp-28h] + int v40; // [esp+74h] [ebp-24h] + int v41; // [esp+78h] [ebp-20h] + + if ( (a8[4] & 0x10) != 0 ) + a8[4] = this[2]; + if ( a5 == a7 && std::type_info::operator==(this, a6) ) + { + a8[2] = a3; + return 0; + } + if ( !std::type_info::operator==(this, a4) ) + { + v32 = 0; + if ( a2 >= 0 ) + v32 = (unsigned int)a7 - a2; + v34 = 0; + v36 = 0; + for ( i = 1; ; i = 0 ) + { + v8 = this[3]; + v9 = v8 - 1; + if ( v8 ) + break; +LABEL_57: + v36 &= i; + if ( !v36 ) + return v34; + } + while ( 1 ) + { + while ( 1 ) + { + v16 = a8[4]; + v37 = 0; + v38 = 0; + v17 = a3; + v31 = v16; + v41 = v16; + v39 = 0; + v18 = this[2 * v9 + 5]; + v40 = 0; + v19 = v18 >> 8; + if ( (v18 & 1) != 0 ) + { + v17 = a3 | 1; + v19 = *(_DWORD *)(*a5 + v19); + } + if ( v32 && i == v32 < (unsigned int)a5 + v19 ) + { + v36 = 1; + goto LABEL_30; + } + if ( (v18 & 2) == 0 ) + break; +LABEL_38: + v20 = (*(int (__thiscall **)(_DWORD, int, int, int, int, int, _DWORD *, int *))(*(_DWORD *)this[2 * v9 + 4] + 28))( + this[2 * v9 + 4], + a2, + v17, + a4, + (int)a5 + v19, + a6, + a7, + &v37); + v11 = v40; + v21 = v39 | a8[2]; + v30 = v21; + v22 = v40; + a8[2] = v21; + if ( (v22 & 0xFFFFFFFB) == 2 ) + { + v26 = v37; + a8[3] = v11; + *a8 = v26; + a8[1] = v38; + return v20; + } + v13 = v37; + v28 = *a8; + if ( !v34 ) + { + if ( !*a8 ) + { + v24 = v38; + *a8 = v37; + a8[1] = v24; + if ( v13 && v30 ) + { + v34 = v20; + if ( (this[2] & 1) == 0 ) + return v34; + } + else + { + v34 = v20; + } + goto LABEL_29; + } +LABEL_11: + if ( v28 == v37 ) + { + a8[1] |= v38; + goto LABEL_29; + } + if ( !v37 && !v20 ) + goto LABEL_29; + v10 = a8[3]; + if ( v21 <= 3 ) + goto LABEL_43; + goto LABEL_15; + } + if ( v28 ) + goto LABEL_11; + if ( !v37 ) + goto LABEL_29; + v10 = a8[3]; + if ( v21 <= 3 ) + goto LABEL_43; +LABEL_15: + if ( (v21 & 1) == 0 || (a8[4] & 2) == 0 ) + { + if ( !v10 ) + v10 = 1; + if ( !v11 ) + v11 = 1; + v33 = v11; + v12 = v10; +LABEL_22: + if ( (v11 ^ v12) > 3 ) + goto LABEL_23; + goto LABEL_51; + } +LABEL_43: + v33 = v11; + v12 = v10; + if ( v10 <= 0 ) + { + if ( v11 > 3 && ((v11 & 1) == 0 || (this[2] & 2) == 0) ) + { + if ( (v11 ^ 1) > 3 ) + goto LABEL_24; + goto LABEL_53; + } + if ( a2 >= 0 ) + { + if ( a7 != (_DWORD *)(a2 + v28) ) + { + if ( v11 > 0 ) + goto LABEL_96; + if ( a7 == (_DWORD *)(v37 + a2) ) + goto LABEL_101; +LABEL_75: + v12 = 1; + v11 = 1; +LABEL_76: + v25 = v12 ^ 1; + goto LABEL_77; + } + v12 = 6; + v10 = 6; + if ( v11 <= 0 ) + { + v11 = 6; +LABEL_78: + v14 = v12 & 2; + goto LABEL_26; + } + goto LABEL_22; + } + if ( a2 == -2 ) + { + if ( v11 > 0 ) + { +LABEL_96: + if ( (v11 ^ 1) > 3 ) + { + v10 = 1; +LABEL_23: + v13 = v37; + if ( v11 > 3 ) + { +LABEL_24: + v14 = v11 & 2; + goto LABEL_25; + } + v11 = v10; + v14 = v10 & 2; +LABEL_26: + a8[3] = v11; + if ( v14 || (v11 & 1) == 0 ) + return 0; + v30 = a8[2]; +LABEL_29: + if ( v30 == 4 ) + return v34; + goto LABEL_30; + } + goto LABEL_53; + } + goto LABEL_75; + } + v10 = (*(int (__thiscall **)(int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, a2, v28, a6, a7); + v12 = v10; + } + if ( v11 > 0 ) + goto LABEL_22; + if ( v10 > 3 && ((v10 & 1) == 0 || (this[2] & 2) == 0) ) + { + v11 = v10; + v25 = v10 ^ 1; +LABEL_77: + if ( v25 > 3 ) + goto LABEL_78; + goto LABEL_52; + } + v13 = v37; + if ( a2 >= 0 ) + { + if ( a7 != (_DWORD *)(v37 + a2) ) + { +LABEL_91: + v11 = v10; + goto LABEL_76; + } + if ( (v10 ^ 6) > 3 ) + { +LABEL_101: + v14 = 2; + v11 = 6; +LABEL_25: + v15 = v38; + *a8 = v13; + v34 = 0; + a8[1] = v15; + goto LABEL_26; + } + v33 = 6; + } + else + { + if ( a2 == -2 ) + goto LABEL_91; + v29 = v12; + v11 = (*(int (__thiscall **)(int, int, int, int, _DWORD *))(*(_DWORD *)a4 + 32))(a4, a2, v37, a6, a7); + v12 = v29; + v33 = v11; + if ( (v11 ^ v29) > 3 ) + goto LABEL_23; + } +LABEL_51: + if ( (v33 & v12) > 3 ) + { + *a8 = 0; + a8[3] = 2; + return 1; + } +LABEL_52: + v30 = a8[2]; +LABEL_53: + *a8 = 0; + a8[3] = 1; + v34 = 1; + if ( v30 == 4 ) + return v34; +LABEL_30: + if ( --v9 == -1 ) + goto LABEL_57; + } + if ( a2 != -2 || (v31 & 3) != 0 ) + { + v17 &= ~2u; + goto LABEL_38; + } + if ( --v9 == -1 ) + goto LABEL_57; + } + } + *a8 = (int)a5; + a8[1] = a3; + if ( a2 < 0 ) + { + v34 = 0; + if ( a2 == -2 ) + a8[3] = 1; + return v34; + } + else + { + a8[3] = 5 * (a7 == (_DWORD *)((char *)a5 + a2)) + 1; + return 0; + } +} + +//----- (00442370) -------------------------------------------------------- +int __userpurge __cxxabiv1::__vmi_class_type_info::__do_find_public_src@( + _DWORD *a1@, + __cxxabiv1::__vmi_class_type_info *this, + const __cxxabiv1::__class_type_info *a3, + const void *a4, + const __cxxabiv1::__class_type_info *a5, + const void *a6) +{ + int v7; // eax + int v8; // ebx + int v9; // edx + int v10; // eax + int result; // eax + bool v12; // dl + char v13; // [esp+1Fh] [ebp-1Dh] + + if ( a3 != a5 || (v12 = std::type_info::operator==(a1, (int)a4), result = 6, !v12) ) + { + v7 = a1[3]; + v8 = v7 - 1; + if ( !v7 ) + return 1; + while ( 1 ) + { + v9 = a1[2 * v8 + 5]; + if ( (v9 & 2) != 0 ) + { + v10 = v9 >> 8; + v13 = v9 & 1; + if ( (v9 & 1) != 0 ) + { + if ( this == (__cxxabiv1::__vmi_class_type_info *)-3 ) + goto LABEL_8; + v10 = *(_DWORD *)(*(_DWORD *)a3 + v10); + } + result = (*(int (__thiscall **)(_DWORD, __cxxabiv1::__vmi_class_type_info *, int, const void *, const __cxxabiv1::__class_type_info *))(*(_DWORD *)a1[2 * v8 + 4] + 32))( + a1[2 * v8 + 4], + this, + (int)a3 + v10, + a4, + a5); + if ( result > 3 ) + { + if ( v13 ) + return result | 1; + return result; + } + } +LABEL_8: + if ( --v8 == -1 ) + return 1; + } + } + return result; +} + +//----- (00442450) -------------------------------------------------------- +const char *`anonymous namespace'::io_error_category::name() +{ + return "iostream"; +} + +//----- (00442460) -------------------------------------------------------- +int __thiscall `anonymous namespace'::io_error_category::message[abi:cxx11](int this, int a2, int a3) +{ + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + if ( a3 == 1 ) + std::string::_M_replace((unsigned int *)this, 0, 0, "iostream error", 0xEu); + else + std::string::_M_replace((unsigned int *)this, 0, 0, "Unknown error", 0xDu); + return this; +} + +//----- (00442500) -------------------------------------------------------- +_anonymous_namespace_::system_error_category *__stdcall `anonymous namespace'::system_error_category::default_error_condition( + _anonymous_namespace_::system_error_category *this, + int a2) +{ + return this; +} + +//----- (00442540) -------------------------------------------------------- +const char *`anonymous namespace'::system_error_category::name() +{ + return "system"; +} + +//----- (00442550) -------------------------------------------------------- +const char *`anonymous namespace'::generic_error_category::name() +{ + return "generic"; +} + +//----- (00442560) -------------------------------------------------------- +void **__thiscall `anonymous namespace'::system_error_category::message[abi:cxx11]( + void **this, + int a2, + int ErrorMessage) +{ + char *v4; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v4 = strerror(ErrorMessage); + *this = this + 2; + Size = -1; + if ( v4 ) + Size = (size_t)&v4[strlen(v4)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)v4, Size, v7); + return this; +} +// 44259B: variable 'v7' is possibly undefined + +//----- (004425B0) -------------------------------------------------------- +int WXSS::CSSTreeLib::NonTerminal::GetClass() +{ + return 2; +} + +//----- (004425B8) -------------------------------------------------------- +int WXSS::CSSTreeLib::EPS::GetClass() +{ + return 4; +} + +//----- (004425C0) -------------------------------------------------------- +int WXSS::CSSTreeLib::Rule::GetClass() +{ + return 0; +} + +//----- (004425C4) -------------------------------------------------------- +int WXSS::CSSTreeLib::Action::GetClass() +{ + return 3; +} + +//----- (004425CC) -------------------------------------------------------- +int WXSS::CSSTreeLib::Terminal::GetClass() +{ + return 1; +} + +//----- (004425D4) -------------------------------------------------------- +const char *__fastcall WXSS::Token::GetLiteral(_DWORD *a1) +{ + const char *result; // eax + int v2; // edx + + if ( *a1 == 1 ) + return (const char *)(a1 + 7); + result = "$"; + if ( *a1 != 8 ) + { + v2 = a1[1]; + result = "UNKNOWN"; + if ( v2 ) + return *(const char **)v2; + } + return result; +} + +//----- (00442600) -------------------------------------------------------- +const char *__gnu_cxx::__concurrence_lock_error::what() +{ + return "__gnu_cxx::__concurrence_lock_error"; +} + +//----- (00442610) -------------------------------------------------------- +const char *__gnu_cxx::__concurrence_unlock_error::what() +{ + return "__gnu_cxx::__concurrence_unlock_error"; +} + +//----- (00442620) -------------------------------------------------------- +int __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) +{ + unsigned int v2; // eax + int v3; // edx + + v2 = *this; + v3 = 1; + if ( *this <= a2 ) + { + v3 = *(_DWORD *)(v2 - 12); + LOBYTE(v3) = v2 + 2 * v3 < a2; + } + return v3; +} + +//----- (00442650) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_last_of(this, String, a3, v4); +} + +//----- (00442690) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t *S, unsigned int a3, size_t N) +{ + int v4; // eax + int v5; // ebx + unsigned int v7; // ebx + + v4 = *this; + v5 = *(_DWORD *)(*this - 12); + if ( !v5 || !N ) + return -1; + v7 = v5 - 1; + if ( v7 > a3 ) + v7 = a3; + while ( !wmemchr(S, *(_WORD *)(v4 + 2 * v7), N) ) + { + if ( --v7 == -1 ) + return -1; + v4 = *this; + } + return v7; +} + +//----- (00442710) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(int *this, wchar_t **a2, int a3) +{ + return std::wstring::find_last_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (00442740) -------------------------------------------------------- +int __thiscall std::wstring::find_last_of(_DWORD *this, __int16 a2, unsigned int a3) +{ + int result; // eax + int v4; // ebx + unsigned int v5; // ebx + + result = -1; + v4 = *(_DWORD *)(*this - 12); + if ( v4 ) + { + result = a3; + v5 = v4 - 1; + if ( a3 > v5 ) + result = v5; + do + { + if ( a2 == *(_WORD *)(*this + 2 * result) ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00442790) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_first_of(this, String, a3, v4); +} + +//----- (004427D0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + if ( N ) + { + while ( *(_DWORD *)(*this - 12) > a3 ) + { + if ( wmemchr(S, *(_WORD *)(*this + 2 * a3), N) ) + return a3; + ++a3; + } + } + return -1; +} + +//----- (00442840) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t **a2, int a3) +{ + return std::wstring::find_first_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (00442870) -------------------------------------------------------- +int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3) +{ + return std::wstring::find(this, C, a3); +} + +//----- (00442880) -------------------------------------------------------- +void *__thiscall std::wstring::get_allocator(void *this, int a2) +{ + return this; +} + +//----- (00442890) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) +{ + unsigned int result; // eax + + result = a2 + 536870910 - *(_DWORD *)(*this - 12); + if ( result < a3 ) + std::__throw_length_error(a4); + return result; +} + +//----- (004428C0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_last_not_of(this, String, a3, v4); +} + +//----- (00442900) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t *S, unsigned int a3, size_t N) +{ + int v4; // eax + int v5; // ebx + unsigned int v7; // ebx + + v4 = *this; + v5 = *(_DWORD *)(*this - 12); + if ( !v5 ) + return -1; + v7 = v5 - 1; + if ( v7 > a3 ) + v7 = a3; + if ( N ) + { + while ( wmemchr(S, *(_WORD *)(v4 + 2 * v7), N) ) + { + if ( --v7 == -1 ) + return -1; + v4 = *this; + } + } + return v7; +} +// 44294C: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (00442990) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(int *this, wchar_t **a2, int a3) +{ + return std::wstring::find_last_not_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (004429C0) -------------------------------------------------------- +int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3) +{ + int v3; // edx + int result; // eax + int v5; // ebx + + v3 = *this; + result = -1; + v5 = *(_DWORD *)(*this - 12); + if ( v5 ) + { + result = v5 - 1; + if ( v5 - 1 <= a3 ) + goto LABEL_5; + result = a3; + if ( *(_WORD *)(v3 + 2 * a3) == a2 ) + { + do + { + if ( --result == -1 ) + break; +LABEL_5: + ; + } + while ( *(_WORD *)(v3 + 2 * result) == a2 ); + } + } + return result; +} + +//----- (00442A10) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_first_not_of(this, String, a3, v4); +} + +//----- (00442A50) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + unsigned int v4; // ebx + unsigned int v5; // edx + wchar_t *i; // eax + + v4 = a3; + if ( a3 >= *(_DWORD *)(*this - 12) ) + return -1; + v5 = a3; + if ( N ) + { + for ( i = (wchar_t *)(*this + 2 * a3); wmemchr(S, *i, N); i = (wchar_t *)(*this + 2 * v4) ) + { + if ( *(_DWORD *)(*this - 12) <= ++v4 ) + return -1; + } + return v4; + } + return v5; +} + +//----- (00442AD0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t **a2, int a3) +{ + return std::wstring::find_first_not_of(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (00442B00) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3) +{ + int v3; // edx + int result; // eax + unsigned int v5; // ecx + + v3 = *this; + result = a3; + v5 = *(_DWORD *)(*this - 12); + if ( a3 >= v5 ) + return -1; + while ( *(_WORD *)(v3 + 2 * result) == a2 ) + { + if ( ++result == v5 ) + return -1; + } + return result; +} + +//----- (00442B40) -------------------------------------------------------- +int __thiscall std::wstring::at(int *this, unsigned int a2) +{ + int v2; // edx + unsigned int v3; // ecx + + v2 = *this; + v3 = *(_DWORD *)(*this - 12); + if ( a2 >= v3 ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, v3); + return v2 + 2 * a2; +} + +//----- (00442B70) -------------------------------------------------------- +int __fastcall std::wstring::end(_DWORD *a1) +{ + return *a1 + 2 * *(_DWORD *)(*a1 - 12); +} + +//----- (00442B80) -------------------------------------------------------- +int __fastcall std::wstring::_Rep::_M_is_leaked(int a1) +{ + return *(_DWORD *)(a1 + 8) >> 31; +} + +//----- (00442B90) -------------------------------------------------------- +bool __fastcall std::wstring::_Rep::_M_is_shared(int a1) +{ + return *(_DWORD *)(a1 + 8) > 0; +} + +//----- (00442BA0) -------------------------------------------------------- +int __fastcall std::wstring::back(_DWORD *a1) +{ + return *a1 + 2 * *(_DWORD *)(*a1 - 12) - 2; +} + +//----- (00442BB0) -------------------------------------------------------- +int __fastcall std::wstring::cend(_DWORD *a1) +{ + return *a1 + 2 * *(_DWORD *)(*a1 - 12); +} + +//----- (00442BC0) -------------------------------------------------------- +size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4) +{ + unsigned int v4; // ebx + size_t N; // ebx + const wchar_t *S2; // eax + + v4 = *(_DWORD *)(*this - 12); + if ( a4 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::copy", + a4, + *(_DWORD *)(*this - 12)); + N = v4 - a4; + if ( N > a3 ) + { + N = a3; + if ( !a3 ) + return N; + } + else if ( !N ) + { + return N; + } + S2 = (const wchar_t *)(*this + 2 * a4); + if ( N != 1 ) + { + wmemcpy(S1, S2, N); + return N; + } + *S1 = *S2; + return 1; +} + +//----- (00442C50) -------------------------------------------------------- +int __fastcall std::wstring::data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00442C60) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3) +{ + size_t v4; // eax + + v4 = wcslen(S2); + return std::wstring::find(this, S2, a3, v4); +} + +//----- (00442CA0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4) +{ + int v4; // edi + unsigned int v5; // eax + size_t N; // ecx + const wchar_t *S; // edx + wchar_t C; // bp + wchar_t *v9; // edi + unsigned int v10; // ecx + int v13; // [esp+18h] [ebp-24h] + int v14; // [esp+1Ch] [ebp-20h] + + v4 = *this; + v5 = *(_DWORD *)(*this - 12); + if ( a4 ) + { + if ( v5 > a3 && a4 <= v5 - a3 ) + { + N = 1 - a4 + v5 - a3; + if ( N ) + { + v14 = v4; + S = (const wchar_t *)(v4 + 2 * a3); + v13 = v4 + 2 * v5; + C = *S2; + while ( 1 ) + { + v9 = wmemchr(S, C, N); + if ( !v9 ) + break; + if ( !wmemcmp(v9, S2, a4) ) + return ((int)v9 - v14) >> 1; + S = v9 + 1; + v10 = (v13 - (int)(v9 + 1)) >> 1; + if ( a4 <= v10 ) + { + N = 1 - a4 + v10; + if ( N ) + continue; + } + return -1; + } + } + } + } + else if ( v5 >= a3 ) + { + return a3; + } + return -1; +} + +//----- (00442D60) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t **a2, int a3) +{ + return std::wstring::find(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (00442D90) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3) +{ + int v3; // ebx + unsigned int v4; // eax + wchar_t *v6; // eax + + v3 = *this; + v4 = *(_DWORD *)(*this - 12); + if ( v4 > a3 && (v6 = wmemchr((const wchar_t *)(v3 + 2 * a3), C, v4 - a3)) != 0 ) + return ((int)v6 - v3) >> 1; + else + return -1; +} + +//----- (00442DE0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (00442DF0) -------------------------------------------------------- +int __fastcall std::wstring::size(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12); +} + +//----- (00442E00) -------------------------------------------------------- +int __fastcall std::wstring::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00442E10) -------------------------------------------------------- +int __fastcall std::wstring::c_str(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00442E20) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (00442E30) -------------------------------------------------------- +bool __fastcall std::wstring::empty(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) == 0; +} + +//----- (00442E40) -------------------------------------------------------- +int __fastcall std::wstring::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00442E50) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::rfind(this, String, a3, v4); +} + +//----- (00442E90) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N) +{ + int v4; // edi + size_t v5; // ebx + unsigned int v6; // ebx + + v4 = *this; + v5 = *(_DWORD *)(*this - 12); + if ( N > v5 ) + return -1; + v6 = v5 - N; + if ( v6 > a3 ) + v6 = a3; + if ( N ) + { + while ( wmemcmp((const wchar_t *)(v4 + 2 * v6), S2, N) ) + { + if ( !v6 ) + return -1; + --v6; + } + } + return v6; +} +// 442ED5: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (00442F00) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t **a2, int a3) +{ + return std::wstring::rfind(this, *a2, a3, *((_DWORD *)*a2 - 3)); +} + +//----- (00442F30) -------------------------------------------------------- +int __thiscall std::wstring::rfind(_DWORD *this, __int16 a2, unsigned int a3) +{ + int result; // eax + int v4; // ebx + + result = -1; + v4 = *(_DWORD *)(*this - 12); + if ( v4 ) + { + result = v4 - 1; + if ( v4 - 1 > a3 ) + result = a3; + do + { + if ( *(_WORD *)(*this + 2 * result) == a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00442F70) -------------------------------------------------------- +int __fastcall std::wstring::_M_rep(_DWORD *a1) +{ + return *a1 - 12; +} + +//----- (00442F80) -------------------------------------------------------- +int __fastcall std::wstring::cbegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00442F90) -------------------------------------------------------- +int __fastcall std::wstring::length(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12); +} + +//----- (00442FA0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); + return result; +} + +//----- (00442FC0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::substr(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) +{ + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::substr", + a3, + *(_DWORD *)(*a2 - 12)); + std::wstring::basic_string(this, a2, a3, a4); + return this; +} + +//----- (00443020) -------------------------------------------------------- +int __fastcall std::wstring::_M_data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00443030) -------------------------------------------------------- +int __fastcall std::wstring::_M_iend(_DWORD *a1) +{ + return *a1 + 2 * *(_DWORD *)(*a1 - 12); +} + +//----- (00443040) -------------------------------------------------------- +int __thiscall std::wstring::compare(const wchar_t **this, wchar_t *String) +{ + size_t v3; // edi + size_t N; // eax + size_t v5; // ebx + int result; // eax + + v3 = *((_DWORD *)*this - 3); + N = wcslen(String); + v5 = N; + if ( N > v3 ) + N = v3; + if ( !N ) + return v3 - v5; + result = wmemcmp(*this, String, N); + if ( !result ) + return v3 - v5; + return result; +} + +//----- (004430A0) -------------------------------------------------------- +int __thiscall std::wstring::compare(const wchar_t **this, const wchar_t **a2) +{ + size_t v2; // esi + size_t N; // eax + size_t v4; // ebx + int result; // eax + + v2 = *((_DWORD *)*this - 3); + N = v2; + v4 = *((_DWORD *)*a2 - 3); + if ( v4 <= v2 ) + N = *((_DWORD *)*a2 - 3); + if ( !N ) + return v2 - v4; + result = wmemcmp(*this, *a2, N); + if ( !result ) + return v2 - v4; + return result; +} + +//----- (004430F0) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) +{ + unsigned int v4; // ebx + unsigned int v5; // ebx + size_t N; // eax + size_t v8; // esi + int result; // eax + + v4 = *(_DWORD *)(*this - 12); + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + *(_DWORD *)(*this - 12)); + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + N = wcslen(String); + v8 = N; + if ( N > v5 ) + { + N = v5; + if ( !v5 ) + return v5 - v8; + } + else if ( !N ) + { + return v5 - v8; + } + result = wmemcmp((const wchar_t *)(*this + 2 * a2), String, N); + if ( !result ) + return v5 - v8; + return result; +} + +//----- (00443190) -------------------------------------------------------- +int __thiscall std::wstring::compare(int *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5) +{ + int v5; // ecx + size_t N; // edx + unsigned int v7; // ebx + unsigned int v8; // ebx + int result; // eax + + v5 = *this; + N = a3; + v7 = *(_DWORD *)(v5 - 12); + if ( a2 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + *(_DWORD *)(v5 - 12)); + v8 = v7 - a2; + if ( v8 <= a3 ) + { + N = v8; + if ( v8 <= a5 ) + goto LABEL_4; +LABEL_6: + N = a5; + if ( !a5 ) + return v8 - a5; + goto LABEL_7; + } + v8 = a3; + if ( a3 > a5 ) + goto LABEL_6; +LABEL_4: + if ( !N ) + return v8 - a5; +LABEL_7: + result = wmemcmp((const wchar_t *)(v5 + 2 * a2), S2, N); + if ( !result ) + return v8 - a5; + return result; +} + +//----- (00443230) -------------------------------------------------------- +int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, const wchar_t **a4) +{ + int v4; // ecx + unsigned int v5; // ebx + size_t v6; // ebx + const wchar_t *S2; // edi + size_t v8; // esi + size_t N; // edx + int result; // eax + + v4 = *this; + v5 = *(_DWORD *)(v4 - 12); + if ( a2 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + *(_DWORD *)(v4 - 12)); + v6 = v5 - a2; + if ( v6 <= a3 ) + { + S2 = *a4; + v8 = *((_DWORD *)*a4 - 3); + N = v8; + if ( v8 <= v6 ) + goto LABEL_4; +LABEL_6: + N = v6; + if ( !v6 ) + return v6 - v8; + goto LABEL_7; + } + v6 = a3; + S2 = *a4; + v8 = *((_DWORD *)*a4 - 3); + N = v8; + if ( v8 > a3 ) + goto LABEL_6; +LABEL_4: + if ( !N ) + return v6 - v8; +LABEL_7: + result = wmemcmp((const wchar_t *)(v4 + 2 * a2), S2, N); + if ( !result ) + return v6 - v8; + return result; +} + +//----- (004432D0) -------------------------------------------------------- +int __thiscall std::wstring::compare(int *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) +{ + int v6; // ecx + unsigned int v7; // esi + unsigned int v8; // ebx + size_t v9; // esi + size_t v10; // ebx + size_t N; // ebp + int result; // eax + + v6 = *this; + v7 = *(_DWORD *)(v6 - 12); + if ( a2 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + *(_DWORD *)(v6 - 12)); + v8 = *(_DWORD *)(*a4 - 12); + if ( a5 > v8 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a5, + *(_DWORD *)(*a4 - 12)); + v9 = v7 - a2; + if ( v9 > a3 ) + { + v9 = a3; + v10 = v8 - a5; + if ( v10 <= a6 ) + { +LABEL_5: + N = v10; + if ( v10 <= v9 ) + goto LABEL_6; +LABEL_8: + N = v9; + if ( !v9 ) + return v9 - v10; + goto LABEL_9; + } + } + else + { + v10 = v8 - a5; + if ( v10 <= a6 ) + goto LABEL_5; + } + v10 = a6; + N = a6; + if ( a6 > v9 ) + goto LABEL_8; +LABEL_6: + if ( !N ) + return v9 - v10; +LABEL_9: + result = wmemcmp((const wchar_t *)(v6 + 2 * a2), (const wchar_t *)(*a4 + 2 * a5), N); + if ( !result ) + return v9 - v10; + return result; +} + +//----- (004433B0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * *(_DWORD *)(*a2 - 12); + return result; +} + +//----- (004433D0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) +{ + unsigned int result; // eax + unsigned int v4; // edx + + result = a2; + v4 = *(_DWORD *)(*this - 12); + if ( v4 < a2 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v4); + return result; +} + +//----- (00443410) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) +{ + unsigned int result; // eax + + result = *(_DWORD *)(*this - 12) - a2; + if ( result > a3 ) + return a3; + return result; +} + +//----- (00443430) -------------------------------------------------------- +int __fastcall std::wstring::capacity(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 8); +} + +//----- (00443440) -------------------------------------------------------- +int std::wstring::max_size() +{ + return 536870910; +} + +//----- (00443450) -------------------------------------------------------- +int __fastcall std::wstring::_M_ibegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00443460) -------------------------------------------------------- +int __thiscall std::wstring::operator[](_DWORD *this, int a2) +{ + return *this + 2 * a2; +} + +//----- (00443470) -------------------------------------------------------- +int __fastcall std::istream::gcount(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00443480) -------------------------------------------------------- +int __fastcall std::istream::sentry::operator bool(unsigned __int8 *a1) +{ + return *a1; +} + +//----- (00443490) -------------------------------------------------------- +int __fastcall std::ostream::sentry::operator bool(unsigned __int8 *a1) +{ + return *a1; +} + +//----- (004434A0) -------------------------------------------------------- +int __userpurge std::string::_M_disjunct@(_DWORD *a1@, std::string *this, const char *a3) +{ + int v3; // edx + + v3 = 1; + if ( *a1 <= (unsigned int)this ) + LOBYTE(v3) = *(_DWORD *)(*a1 - 12) + *a1 < (unsigned int)this; + return v3; +} + +//----- (004434C0) -------------------------------------------------------- +int __userpurge std::string::find_last_of@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::find_last_of(a1, this, a3, v5, v7); +} +// 4434E4: variable 'v7' is possibly undefined + +//----- (00443500) -------------------------------------------------------- +int __userpurge std::string::find_last_of@( + int *a1@, + std::string *this, + const char *a3, + size_t MaxCount, + unsigned int a5) +{ + int v5; // esi + int v6; // ebx + const char *v7; // ebx + + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( !v6 || !MaxCount ) + return -1; + v7 = (const char *)(v6 - 1); + if ( v7 > a3 ) + v7 = a3; + do + { + if ( memchr(this, v7[v5], MaxCount) ) + break; + --v7; + } + while ( v7 != (const char *)-1 ); + return (int)v7; +} + +//----- (00443580) -------------------------------------------------------- +int __userpurge std::string::find_last_of@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find_last_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 44359B: variable 'v5' is possibly undefined + +//----- (004435B0) -------------------------------------------------------- +int __userpurge std::string::find_last_of@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + int result; // eax + int v5; // ebx + unsigned int v6; // ebx + + result = -1; + v5 = *(_DWORD *)(*a1 - 12); + if ( v5 ) + { + result = a3; + v6 = v5 - 1; + if ( a3 > v6 ) + result = v6; + do + { + if ( (_BYTE)this == *(_BYTE *)(*a1 + result) ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00443600) -------------------------------------------------------- +int __userpurge std::string::find_first_of@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::find_first_of(a1, this, a3, v5, v7); +} +// 443624: variable 'v7' is possibly undefined + +//----- (00443640) -------------------------------------------------------- +int __userpurge std::string::find_first_of@( + int *a1@, + std::string *this, + const char *a3, + size_t MaxCount, + unsigned int a5) +{ + int v6; // esi + unsigned int v7; // edi + + if ( MaxCount ) + { + v6 = *a1; + v7 = *(_DWORD *)(*a1 - 12); + while ( v7 > (unsigned int)a3 ) + { + if ( memchr(this, a3[v6], MaxCount) ) + return (int)a3; + ++a3; + } + } + return -1; +} + +//----- (004436B0) -------------------------------------------------------- +int __userpurge std::string::find_first_of@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find_first_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 4436CB: variable 'v5' is possibly undefined + +//----- (004436E0) -------------------------------------------------------- +char *__userpurge std::string::find_first_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + return std::string::find(a1, (std::string *)(char)this, a3, a4); +} + +//----- (004436F0) -------------------------------------------------------- +void *__thiscall std::string::get_allocator(void *ecx0, std::string *this) +{ + return ecx0; +} + +//----- (00443700) -------------------------------------------------------- +char *__userpurge std::string::_M_check_length@( + _DWORD *a1@, + std::string *this, + unsigned int a3, + std::length_error *a4, + const char *a5) +{ + char *result; // eax + + result = (char *)this - *(_DWORD *)(*a1 - 12) + 1073741820; + if ( (unsigned int)result < a3 ) + std::__throw_length_error(a4); + return result; +} + +//----- (00443730) -------------------------------------------------------- +int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + unsigned int v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::find_last_not_of(a1, this, a3, v5, v7); +} +// 443754: variable 'v7' is possibly undefined + +//----- (00443770) -------------------------------------------------------- +int __userpurge std::string::find_last_not_of@( + int *a1@, + std::string *this, + const char *a3, + unsigned int MaxCount, + unsigned int a5) +{ + int v5; // ebx + int v6; // edi + int v7; // eax + + v5 = -1; + v6 = *a1; + v7 = *(_DWORD *)(*a1 - 12); + if ( v7 ) + { + v5 = v7 - 1; + if ( v7 - 1 > (unsigned int)a3 ) + v5 = (int)a3; + do + { + if ( !MaxCount ) + break; + if ( !memchr(this, *(char *)(v6 + v5), MaxCount) ) + break; + --v5; + } + while ( v5 != -1 ); + } + return v5; +} + +//----- (004437E0) -------------------------------------------------------- +int __userpurge std::string::find_last_not_of@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find_last_not_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 4437FB: variable 'v5' is possibly undefined + +//----- (00443810) -------------------------------------------------------- +int __userpurge std::string::find_last_not_of@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + int v4; // edx + int result; // eax + int v6; // ebx + + v4 = *a1; + result = -1; + v6 = *(_DWORD *)(*a1 - 12); + if ( v6 ) + { + result = v6 - 1; + if ( v6 - 1 <= a3 ) + goto LABEL_5; + result = a3; + if ( *(_BYTE *)(v4 + a3) == (_BYTE)this ) + { + do + { + if ( --result == -1 ) + break; +LABEL_5: + ; + } + while ( *(_BYTE *)(v4 + result) == (_BYTE)this ); + } + } + return result; +} + +//----- (00443860) -------------------------------------------------------- +int __userpurge std::string::find_first_not_of@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::find_first_not_of(a1, this, a3, v5, v7); +} +// 443884: variable 'v7' is possibly undefined + +//----- (004438A0) -------------------------------------------------------- +int __userpurge std::string::find_first_not_of@( + int *a1@, + std::string *this, + const char *a3, + size_t MaxCount, + unsigned int a5) +{ + int v5; // ebx + const char *v6; // ebp + unsigned int v7; // edi + + v5 = *a1; + v6 = a3; + v7 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)a3 >= v7 ) + return -1; + if ( MaxCount ) + { + while ( memchr(this, v6[v5], MaxCount) ) + { + if ( ++v6 == (const char *)v7 ) + return -1; + } + } + return (int)v6; +} + +//----- (00443900) -------------------------------------------------------- +int __userpurge std::string::find_first_not_of@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find_first_not_of(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 44391B: variable 'v5' is possibly undefined + +//----- (00443930) -------------------------------------------------------- +int __userpurge std::string::find_first_not_of@( + int *a1@, + std::string *this, + unsigned int a3, + unsigned int a4) +{ + int v4; // edx + int result; // eax + unsigned int v6; // ecx + + v4 = *a1; + result = a3; + v6 = *(_DWORD *)(*a1 - 12); + if ( a3 >= v6 ) + return -1; + while ( *(_BYTE *)(v4 + result) == (_BYTE)this ) + { + if ( ++result == v6 ) + return -1; + } + return result; +} + +//----- (00443970) -------------------------------------------------------- +char *__userpurge std::string::at@(int *a1@, std::string *this, unsigned int a3) +{ + int v3; // eax + unsigned int v4; // ecx + + v3 = *a1; + v4 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this >= v4 ) + std::__throw_out_of_range_fmt( + "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", + (size_t)this, + v4); + return (char *)this + v3; +} + +//----- (004439A0) -------------------------------------------------------- +int __fastcall std::string::end(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) + *a1; +} + +//----- (004439B0) -------------------------------------------------------- +int __fastcall std::string::_Rep::_M_is_leaked(int a1) +{ + return *(_DWORD *)(a1 + 8) >> 31; +} + +//----- (004439C0) -------------------------------------------------------- +bool __fastcall std::string::_Rep::_M_is_shared(int a1) +{ + return *(_DWORD *)(a1 + 8) > 0; +} + +//----- (004439D0) -------------------------------------------------------- +int __fastcall std::string::back(_DWORD *a1) +{ + return *a1 + *(_DWORD *)(*a1 - 12) - 1; +} + +//----- (004439E0) -------------------------------------------------------- +int __fastcall std::string::cend(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) + *a1; +} + +//----- (004439F0) -------------------------------------------------------- +int __userpurge std::string::copy@( + _DWORD *a1@, + std::string *this, + char *a3, + unsigned int a4, + unsigned int a5) +{ + unsigned int v5; // ebx + char *Size; // ebx + _BYTE *Src; // eax + + v5 = *(_DWORD *)(*a1 - 12); + if ( a4 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::copy", + a4, + *(_DWORD *)(*a1 - 12)); + Size = (char *)(v5 - a4); + if ( Size > a3 ) + { + Size = a3; + if ( !a3 ) + return (int)Size; + } + else if ( !Size ) + { + return (int)Size; + } + Src = (_BYTE *)(*a1 + a4); + if ( Size != (char *)1 ) + { + memcpy(this, Src, (size_t)Size); + return (int)Size; + } + *(_BYTE *)this = *Src; + return 1; +} + +//----- (00443A70) -------------------------------------------------------- +int __fastcall std::string::data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00443A80) -------------------------------------------------------- +unsigned int __userpurge std::string::find@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t Size; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + Size = strlen((const char *)this); + return std::string::find(a1, this, a3, Size, v7); +} +// 443AA4: variable 'v7' is possibly undefined + +//----- (00443AC0) -------------------------------------------------------- +unsigned int __userpurge std::string::find@( + int *a1@, + std::string *this, + const char *a3, + size_t Size, + unsigned int a5) +{ + int v5; // edi + unsigned int v6; // esi + int v7; // ecx + const char *Buf; // eax + size_t MaxCount; // edx + int Val; // ebp + const char *v11; // edi + int v13; // [esp+18h] [ebp-24h] + int v14; // [esp+1Ch] [ebp-20h] + + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( !Size ) + return v6 < (unsigned int)a3 ? -1 : (unsigned int)a3; + v7 = -1; + if ( v6 > (unsigned int)a3 ) + { + Buf = &a3[v5]; + v13 = v5 + v6; + if ( Size <= v6 - (unsigned int)a3 ) + { + MaxCount = 1 - Size + v6 - (_DWORD)a3; + if ( MaxCount ) + { + v14 = v5; + Val = *(char *)this; + while ( 1 ) + { + v11 = (const char *)memchr(Buf, Val, MaxCount); + if ( !v11 ) + return -1; + if ( !memcmp(v11, this, Size) ) + break; + Buf = v11 + 1; + if ( Size <= v13 - (int)(v11 + 1) ) + { + MaxCount = v13 - (_DWORD)v11 - Size; + if ( MaxCount ) + continue; + } + return -1; + } + return (unsigned int)&v11[-v14]; + } + } + } + return v7; +} + +//----- (00443B90) -------------------------------------------------------- +unsigned int __userpurge std::string::find@( + int *a1@, + std::string **this, + const std::string *a3, + unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::find(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 443BAB: variable 'v5' is possibly undefined + +//----- (00443BC0) -------------------------------------------------------- +char *__userpurge std::string::find@(int *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + int v4; // esi + int v5; // ebx + unsigned int v6; // edx + char *v7; // eax + + v4 = -1; + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( a3 < v6 ) + { + v7 = (char *)memchr((const void *)(v5 + a3), (char)this, v6 - a3); + if ( v7 ) + return &v7[-v5]; + } + return (char *)v4; +} + +//----- (00443C10) -------------------------------------------------------- +_DWORD *__thiscall std::string::rend(_DWORD *ecx0, std::string *this) +{ + _DWORD *result; // eax + + result = ecx0; + *ecx0 = *(_DWORD *)this; + return result; +} + +//----- (00443C20) -------------------------------------------------------- +int __fastcall std::string::size(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12); +} + +//----- (00443C30) -------------------------------------------------------- +int __fastcall std::string::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00443C40) -------------------------------------------------------- +int __fastcall std::string::c_str(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00443C50) -------------------------------------------------------- +_DWORD *__thiscall std::string::crend(_DWORD *ecx0, std::string *this) +{ + _DWORD *result; // eax + + result = ecx0; + *ecx0 = *(_DWORD *)this; + return result; +} + +//----- (00443C60) -------------------------------------------------------- +bool __fastcall std::string::empty(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) == 0; +} + +//----- (00443C70) -------------------------------------------------------- +int __fastcall std::string::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00443C80) -------------------------------------------------------- +int __userpurge std::string::rfind@(int *a1@, std::string *this, char *a3, unsigned int a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen((const char *)this); + return std::string::rfind(a1, this, a3, v5, v7); +} +// 443CA4: variable 'v7' is possibly undefined + +//----- (00443CC0) -------------------------------------------------------- +int __userpurge std::string::rfind@( + int *a1@, + std::string *this, + const char *a3, + size_t Size, + unsigned int a5) +{ + int v5; // ebx + int v6; // edi + size_t v7; // eax + + v5 = -1; + v6 = *a1; + v7 = *(_DWORD *)(*a1 - 12); + if ( Size <= v7 ) + { + v5 = v7 - Size; + if ( v7 - Size > (unsigned int)a3 ) + v5 = (int)a3; + if ( Size ) + { + while ( memcmp((const void *)(v6 + v5), this, Size) ) + { + if ( !v5 ) + return -1; + --v5; + } + } + } + return v5; +} +// 443D0D: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (00443D40) -------------------------------------------------------- +int __userpurge std::string::rfind@(int *a1@, std::string **this, const std::string *a3, unsigned int a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::rfind(a1, *this, (const char *)a3, *((_DWORD *)*this - 3), v5); +} +// 443D5B: variable 'v5' is possibly undefined + +//----- (00443D70) -------------------------------------------------------- +int __userpurge std::string::rfind@(_DWORD *a1@, std::string *this, unsigned int a3, unsigned int a4) +{ + int result; // eax + int v5; // ebx + + result = -1; + v5 = *(_DWORD *)(*a1 - 12); + if ( v5 ) + { + result = v5 - 1; + if ( v5 - 1 > a3 ) + result = a3; + do + { + if ( *(_BYTE *)(*a1 + result) == (_BYTE)this ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (00443DB0) -------------------------------------------------------- +int __fastcall std::string::_M_rep(_DWORD *a1) +{ + return *a1 - 12; +} + +//----- (00443DC0) -------------------------------------------------------- +int __fastcall std::string::cbegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00443DD0) -------------------------------------------------------- +int __fastcall std::string::length(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12); +} + +//----- (00443DE0) -------------------------------------------------------- +_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, std::string *this) +{ + _DWORD *result; // eax + + result = ecx0; + *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; + return result; +} + +//----- (00443DF0) -------------------------------------------------------- +_DWORD *__thiscall std::string::substr(_DWORD *ecx0, std::string *this, std::string *a3, unsigned int a4) +{ + unsigned int v6; // [esp+Ch] [ebp-10h] + + if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::substr", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + std::string::string(ecx0, this, a3, a4, v6); + return ecx0; +} +// 443E18: variable 'v6' is possibly undefined + +//----- (00443E50) -------------------------------------------------------- +int __fastcall std::string::_M_data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00443E60) -------------------------------------------------------- +int __fastcall std::string::_M_iend(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 12) + *a1; +} + +//----- (00443E70) -------------------------------------------------------- +int __userpurge std::string::compare@(const void **a1@, std::string *this, const char *a3) +{ + const void *v3; // ebp + size_t v4; // esi + size_t Size; // eax + size_t v6; // ebx + int result; // eax + + v3 = *a1; + v4 = *((_DWORD *)*a1 - 3); + Size = strlen((const char *)this); + v6 = Size; + if ( Size > v4 ) + Size = v4; + if ( !Size ) + return v4 - v6; + result = memcmp(v3, this, Size); + if ( !result ) + return v4 - v6; + return result; +} + +//----- (00443EC0) -------------------------------------------------------- +int __userpurge std::string::compare@(const void **a1@, const void **this, const std::string *a3) +{ + size_t v3; // esi + size_t Size; // eax + size_t v5; // ebx + int result; // eax + + v3 = *((_DWORD *)*a1 - 3); + Size = v3; + v5 = *((_DWORD *)*this - 3); + if ( v5 <= v3 ) + Size = *((_DWORD *)*this - 3); + if ( !Size ) + return v3 - v5; + result = memcmp(*a1, *this, Size); + if ( !result ) + return v3 - v5; + return result; +} + +//----- (00443F00) -------------------------------------------------------- +int __userpurge std::string::compare@( + int *a1@, + std::string *this, + unsigned int a3, + char *Str, + const char *a5) +{ + int v5; // ebp + unsigned int v6; // ebx + unsigned int v7; // ebx + size_t Size; // eax + size_t v9; // esi + int result; // eax + + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)this, + *(_DWORD *)(*a1 - 12)); + v7 = v6 - (_DWORD)this; + if ( v7 > a3 ) + v7 = a3; + Size = strlen(Str); + v9 = Size; + if ( Size > v7 ) + Size = v7; + if ( !Size ) + return v7 - v9; + result = memcmp((char *)this + v5, Str, Size); + if ( !result ) + return v7 - v9; + return result; +} + +//----- (00443F90) -------------------------------------------------------- +int __userpurge std::string::compare@( + int *a1@, + std::string *this, + const char *a3, + void *Buf2, + const char *a5, + unsigned int a6) +{ + int v6; // eax + unsigned int v7; // ebx + unsigned int v8; // ebx + const char *Size; // ecx + int result; // eax + + v6 = *a1; + v7 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)this, + *(_DWORD *)(*a1 - 12)); + v8 = v7 - (_DWORD)this; + if ( v8 > (unsigned int)a3 ) + { + v8 = (unsigned int)a3; + Size = a3; + if ( a3 <= a5 ) + goto LABEL_4; + goto LABEL_8; + } + Size = (const char *)v8; + if ( v8 > (unsigned int)a5 ) +LABEL_8: + Size = a5; +LABEL_4: + if ( !Size ) + return v8 - (_DWORD)a5; + result = memcmp((char *)this + v6, Buf2, (size_t)Size); + if ( !result ) + return v8 - (_DWORD)a5; + return result; +} + +//----- (00444020) -------------------------------------------------------- +int __userpurge std::string::compare@( + int *a1@, + std::string *this, + unsigned int a3, + const void **a4, + const std::string *a5) +{ + int v5; // eax + unsigned int v6; // ebx + unsigned int v7; // ebx + const void *Buf2; // edi + unsigned int v9; // esi + size_t Size; // ecx + int result; // eax + + v5 = *a1; + v6 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)this, + *(_DWORD *)(*a1 - 12)); + v7 = v6 - (_DWORD)this; + if ( v7 > a3 ) + { + v7 = a3; + Buf2 = *a4; + v9 = *((_DWORD *)*a4 - 3); + Size = v9; + if ( v9 <= a3 ) + goto LABEL_4; + goto LABEL_8; + } + Buf2 = *a4; + v9 = *((_DWORD *)*a4 - 3); + Size = v9; + if ( v9 > v7 ) +LABEL_8: + Size = v7; +LABEL_4: + if ( !Size ) + return v7 - v9; + result = memcmp((char *)this + v5, Buf2, Size); + if ( !result ) + return v7 - v9; + return result; +} + +//----- (004440B0) -------------------------------------------------------- +int __userpurge std::string::compare@( + int *a1@, + std::string *this, + unsigned int a3, + _DWORD *a4, + const std::string *a5, + size_t a6, + unsigned int a7) +{ + int v7; // eax + unsigned int v8; // esi + unsigned int v9; // ebx + unsigned int v10; // esi + unsigned int v11; // ebx + size_t Size; // ebp + int result; // eax + + v7 = *a1; + v8 = *(_DWORD *)(*a1 - 12); + if ( (unsigned int)this > v8 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)this, + *(_DWORD *)(v7 - 12)); + v9 = *(_DWORD *)(*a4 - 12); + if ( (unsigned int)a5 > v9 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + (size_t)a5, + *(_DWORD *)(*a4 - 12)); + v10 = v8 - (_DWORD)this; + if ( v10 <= a3 ) + { + v11 = v9 - (_DWORD)a5; + if ( v11 <= a6 ) + goto LABEL_5; +LABEL_11: + v11 = a6; + Size = a6; + if ( a6 <= v10 ) + goto LABEL_6; + goto LABEL_10; + } + v10 = a3; + v11 = v9 - (_DWORD)a5; + if ( v11 > a6 ) + goto LABEL_11; +LABEL_5: + Size = v11; + if ( v11 > v10 ) +LABEL_10: + Size = v10; +LABEL_6: + if ( !Size ) + return v10 - v11; + result = memcmp((char *)this + v7, (char *)a5 + *a4, Size); + if ( !result ) + return v10 - v11; + return result; +} + +//----- (00444180) -------------------------------------------------------- +_DWORD *__thiscall std::string::crbegin(_DWORD *ecx0, std::string *this) +{ + _DWORD *result; // eax + + result = ecx0; + *ecx0 = *(_DWORD *)(*(_DWORD *)this - 12) + *(_DWORD *)this; + return result; +} + +//----- (00444190) -------------------------------------------------------- +std::string *__userpurge std::string::_M_check@( + _DWORD *a1@, + std::string *this, + const char *a3, + const char *a4) +{ + std::string *result; // eax + unsigned int v5; // edx + + result = this; + v5 = *(_DWORD *)(*a1 - 12); + if ( v5 < (unsigned int)this ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, (size_t)this, v5); + return result; +} + +//----- (004441D0) -------------------------------------------------------- +unsigned int __userpurge std::string::_M_limit@( + _DWORD *a1@, + std::string *this, + unsigned int a3, + unsigned int a4) +{ + unsigned int result; // eax + + result = *(_DWORD *)(*a1 - 12) - (_DWORD)this; + if ( result > a3 ) + return a3; + return result; +} + +//----- (004441F0) -------------------------------------------------------- +int __fastcall std::string::capacity(_DWORD *a1) +{ + return *(_DWORD *)(*a1 - 8); +} + +//----- (00444200) -------------------------------------------------------- +int std::string::max_size() +{ + return 1073741820; +} + +//----- (00444210) -------------------------------------------------------- +int __fastcall std::string::_M_ibegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00444220) -------------------------------------------------------- +int __thiscall std::string::operator[](_DWORD *this, int a2) +{ + return a2 + *this; +} + +//----- (00444230) -------------------------------------------------------- +const char *std::bad_typeid::what() +{ + return "std::bad_typeid"; +} + +//----- (00444240) -------------------------------------------------------- +int __fastcall std::error_code::default_error_condition(int a1) +{ + return (*(int (__thiscall **)(_DWORD, _DWORD))(**(_DWORD **)(a1 + 4) + 20))(*(_DWORD *)(a1 + 4), *(_DWORD *)a1); +} + +//----- (00444260) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (00444280) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (004442A0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) + std::string::string(this, *(char **)(a2[2] + 20), (int)v5); + else + v3(a2); + return this; +} +// 4442A0: using guessed type int var_D[3]; + +//----- (00444300) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 444300: using guessed type int var_D[3]; + +//----- (00444330) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 44); + else + return v1(); +} + +//----- (00444350) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 17); + else + return v1(); +} + +//----- (00444370) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (00444380) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (00444390) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); + if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) + std::string::string(this, *(char **)(a2[2] + 36), (int)v5); + else + v3(a2); + return this; +} +// 444390: using guessed type int var_D[3]; + +//----- (004443F0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) + std::string::string(this, *(char **)(a2[2] + 28), (int)v5); + else + v3(a2); + return this; +} +// 4443F0: using guessed type int var_D[3]; + +//----- (00444450) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 18); + else + return v1(); +} + +//----- (00444470) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); + return this; +} +// 444470: using guessed type int var_D[3]; + +//----- (004444A0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); +} + +//----- (004444B0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); +} + +//----- (004444C0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); + return this; +} +// 4444C0: using guessed type int var_D[3]; + +//----- (004444F0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); + return this; +} +// 4444F0: using guessed type int var_D[3]; + +//----- (00444520) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (00444530) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 444530: using guessed type int var_D[3]; + +//----- (00444590) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (004445B0) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (004445D0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) + std::string::string(this, *(char **)(a2[2] + 20), (int)v5); + else + v3(a2); + return this; +} +// 4445D0: using guessed type int var_D[3]; + +//----- (00444630) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 444630: using guessed type int var_D[3]; + +//----- (00444660) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 44); + else + return v1(); +} + +//----- (00444680) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 17); + else + return v1(); +} + +//----- (004446A0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (004446B0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (004446C0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); + if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) + std::string::string(this, *(char **)(a2[2] + 36), (int)v5); + else + v3(a2); + return this; +} +// 4446C0: using guessed type int var_D[3]; + +//----- (00444720) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) + std::string::string(this, *(char **)(a2[2] + 28), (int)v5); + else + v3(a2); + return this; +} +// 444720: using guessed type int var_D[3]; + +//----- (00444780) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 18); + else + return v1(); +} + +//----- (004447A0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); + return this; +} +// 4447A0: using guessed type int var_D[3]; + +//----- (004447D0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); +} + +//----- (004447E0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); +} + +//----- (004447F0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 36), (int)v4); + return this; +} +// 4447F0: using guessed type int var_D[3]; + +//----- (00444820) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); + return this; +} +// 444820: using guessed type int var_D[3]; + +//----- (00444850) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (00444860) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 444860: using guessed type int var_D[3]; + +//----- (004448C0) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 56); + else + return v1(); +} + +//----- (004448E0) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (00444900) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); + else + v3(a2); + return this; +} +// 444900: using guessed type int var_D[3]; + +//----- (00444960) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 444960: using guessed type int var_D[3]; + +//----- (00444990) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (004449B0) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 18); + else + return v1(); +} + +//----- (004449D0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); +} + +//----- (004449E0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (004449F0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); + if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); + else + v3(a2); + return this; +} +// 4449F0: using guessed type int var_D[3]; + +//----- (00444A50) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); + else + v3(a2); + return this; +} +// 444A50: using guessed type int var_D[3]; + +//----- (00444AB0) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 20); + else + return v1(); +} + +//----- (00444AD0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); + return this; +} +// 444AD0: using guessed type int var_D[3]; + +//----- (00444B00) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (00444B10) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (00444B20) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); + return this; +} +// 444B20: using guessed type int var_D[3]; + +//----- (00444B50) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); + return this; +} +// 444B50: using guessed type int var_D[3]; + +//----- (00444B80) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); +} + +//----- (00444B90) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 444B90: using guessed type int var_D[3]; + +//----- (00444BF0) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 56); + else + return v1(); +} + +//----- (00444C10) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (00444C30) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::curr_symbol(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::moneypunct::do_curr_symbol ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 24), (int)v5); + else + v3(a2); + return this; +} +// 444C30: using guessed type int var_D[3]; + +//----- (00444C90) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 444C90: using guessed type int var_D[3]; + +//----- (00444CC0) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (00444CE0) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 18); + else + return v1(); +} + +//----- (00444D00) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); +} + +//----- (00444D10) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (00444D20) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::negative_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 28); + if ( (char *)v3 == (char *)std::moneypunct::do_negative_sign ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 40), (int)v5); + else + v3(a2); + return this; +} +// 444D20: using guessed type int var_D[3]; + +//----- (00444D80) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::positive_sign(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::moneypunct::do_positive_sign ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 32), (int)v5); + else + v3(a2); + return this; +} +// 444D80: using guessed type int var_D[3]; + +//----- (00444DE0) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 20); + else + return v1(); +} + +//----- (00444E00) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_curr_symbol(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24), (int)v4); + return this; +} +// 444E00: using guessed type int var_D[3]; + +//----- (00444E30) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (00444E40) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (00444E50) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_negative_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40), (int)v4); + return this; +} +// 444E50: using guessed type int var_D[3]; + +//----- (00444E80) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::do_positive_sign(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32), (int)v4); + return this; +} +// 444E80: using guessed type int var_D[3]; + +//----- (00444EB0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); +} + +//----- (00444EC0) -------------------------------------------------------- +_DWORD *__thiscall std::moneypunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::moneypunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 444EC0: using guessed type int var_D[3]; + +//----- (00444F30) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 8); + a2[1] = *(_DWORD *)(v2 + 12); + return result; +} + +//----- (00444F50) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 16); + a2[1] = *(_DWORD *)(v2 + 20); + return result; +} + +//----- (00444F70) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[18]; + a2[1] = v2[19]; + a2[2] = v2[20]; + a2[3] = v2[21]; + a2[4] = v2[22]; + a2[5] = v2[23]; + a2[6] = v2[24]; + return result; +} + +//----- (00444FB0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 24); + a2[1] = *(_DWORD *)(v2 + 28); + return result; +} + +//----- (00444FD0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[37]; + a2[1] = v2[38]; + a2[2] = v2[39]; + a2[3] = v2[40]; + a2[4] = v2[41]; + a2[5] = v2[42]; + a2[6] = v2[43]; + a2[7] = v2[44]; + a2[8] = v2[45]; + a2[9] = v2[46]; + a2[10] = v2[47]; + a2[11] = v2[48]; + return result; +} + +//----- (00445050) -------------------------------------------------------- +void __thiscall std::__timepunct::_M_put( + const char **this, + char *Buffer, + size_t SizeInBytes, + char *Format, + struct tm *Tm) +{ + char *v6; // ebx + unsigned int Size; // esi + void *Locale; // ebp + size_t v9; // ebx + + v6 = setlocale(0, 0); + Size = strlen(v6) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v6, Size); + setlocale(0, this[4]); + v9 = strftime(Buffer, SizeInBytes, Format, Tm); + setlocale(0, (const char *)Locale); + operator delete[](Locale); + if ( !v9 ) + *Buffer = 0; +} + +//----- (00445100) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[11]; + a2[1] = v2[12]; + a2[2] = v2[13]; + a2[3] = v2[14]; + a2[4] = v2[15]; + a2[5] = v2[16]; + a2[6] = v2[17]; + return result; +} + +//----- (00445140) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 32); + a2[1] = *(_DWORD *)(v2 + 36); + return result; +} + +//----- (00445160) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[25]; + a2[1] = v2[26]; + a2[2] = v2[27]; + a2[3] = v2[28]; + a2[4] = v2[29]; + a2[5] = v2[30]; + a2[6] = v2[31]; + a2[7] = v2[32]; + a2[8] = v2[33]; + a2[9] = v2[34]; + a2[10] = v2[35]; + a2[11] = v2[36]; + return result; +} + +//----- (004451D0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_date_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 8); + a2[1] = *(_DWORD *)(v2 + 12); + return result; +} + +//----- (004451F0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_time_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 16); + a2[1] = *(_DWORD *)(v2 + 20); + return result; +} + +//----- (00445210) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_days_abbreviated(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[18]; + a2[1] = v2[19]; + a2[2] = v2[20]; + a2[3] = v2[21]; + a2[4] = v2[22]; + a2[5] = v2[23]; + a2[6] = v2[24]; + return result; +} + +//----- (00445250) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_date_time_formats(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 24); + a2[1] = *(_DWORD *)(v2 + 28); + return result; +} + +//----- (00445270) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_months_abbreviated(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[37]; + a2[1] = v2[38]; + a2[2] = v2[39]; + a2[3] = v2[40]; + a2[4] = v2[41]; + a2[5] = v2[42]; + a2[6] = v2[43]; + a2[7] = v2[44]; + a2[8] = v2[45]; + a2[9] = v2[46]; + a2[10] = v2[47]; + a2[11] = v2[48]; + return result; +} + +//----- (004452F0) -------------------------------------------------------- +void __thiscall std::__timepunct::_M_put( + const char **this, + wchar_t *Buffer, + size_t SizeInWords, + wchar_t *Format, + struct tm *Tm) +{ + char *v6; // ebx + unsigned int Size; // esi + void *Locale; // ebp + size_t v9; // ebx + + v6 = setlocale(0, 0); + Size = strlen(v6) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v6, Size); + setlocale(0, this[4]); + v9 = wcsftime(Buffer, SizeInWords, Format, Tm); + setlocale(0, (const char *)Locale); + operator delete[](Locale); + if ( !v9 ) + *Buffer = 0; +} + +//----- (004453B0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_days(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[11]; + a2[1] = v2[12]; + a2[2] = v2[13]; + a2[3] = v2[14]; + a2[4] = v2[15]; + a2[5] = v2[16]; + a2[6] = v2[17]; + return result; +} + +//----- (004453F0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_am_pm(_DWORD *this, _DWORD *a2) +{ + int v2; // edx + _DWORD *result; // eax + + v2 = this[2]; + result = a2; + *a2 = *(_DWORD *)(v2 + 32); + a2[1] = *(_DWORD *)(v2 + 36); + return result; +} + +//----- (00445410) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_months(_DWORD *this, _DWORD *a2) +{ + _DWORD *v2; // edx + _DWORD *result; // eax + + v2 = (_DWORD *)this[2]; + result = a2; + *a2 = v2[25]; + a2[1] = v2[26]; + a2[2] = v2[27]; + a2[3] = v2[28]; + a2[4] = v2[29]; + a2[5] = v2[30]; + a2[6] = v2[31]; + a2[7] = v2[32]; + a2[8] = v2[33]; + a2[9] = v2[34]; + a2[10] = v2[35]; + a2[11] = v2[36]; + return result; +} + +//----- (00445470) -------------------------------------------------------- +int __stdcall std::__use_cache>::operator()(int *a1) +{ + int v1; // ebx + int v2; // edi + int result; // eax + _DWORD *v4; // eax + void (__cdecl *v5)(void *); // [esp+4h] [ebp-34h] + unsigned int v6; // [esp+8h] [ebp-30h] + std::locale::_Impl *v7; // [esp+1Ch] [ebp-1Ch] + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = *(_DWORD *)(*a1 + 12) + 4 * v1; + result = *(_DWORD *)v2; + if ( !*(_DWORD *)v2 ) + { + v4 = operator new((struct type_info *)0x68, v5); + v4[1] = 0; + *v4 = &off_4F65A0; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + *((_WORD *)v4 + 18) = 0; + *((_BYTE *)v4 + 100) = 0; + v7 = (std::locale::_Impl *)v4; + std::__numpunct_cache::_M_cache((int)v4, (int)a1); + std::locale::_Impl::_M_install_cache(*a1, v7, (const std::locale::facet *)v1, v6); + return *(_DWORD *)v2; + } + return result; +} +// 4454A7: variable 'v5' is possibly undefined +// 44550D: variable 'v6' is possibly undefined +// 4E9608: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (00445560) -------------------------------------------------------- +int __stdcall std::__use_cache>::operator()(int *a1) +{ + int v1; // ebx + int v2; // edi + int result; // eax + _DWORD *v4; // eax + void (__cdecl *v5)(void *); // [esp+4h] [ebp-34h] + unsigned int v6; // [esp+8h] [ebp-30h] + std::locale::_Impl *v7; // [esp+1Ch] [ebp-1Ch] + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = *(_DWORD *)(*a1 + 12) + 4 * v1; + result = *(_DWORD *)v2; + if ( !*(_DWORD *)v2 ) + { + v4 = operator new((struct type_info *)0xA8, v5); + v4[1] = 0; + *v4 = &off_4F65B0; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + *((_BYTE *)v4 + 164) = 0; + v7 = (std::locale::_Impl *)v4; + std::__numpunct_cache::_M_cache((int)v4, (int)a1); + std::locale::_Impl::_M_install_cache(*a1, v7, (const std::locale::facet *)v1, v6); + return *(_DWORD *)v2; + } + return result; +} +// 445597: variable 'v5' is possibly undefined +// 445601: variable 'v6' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (00445650) -------------------------------------------------------- +int __fastcall std::logic_error::what(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00445660) -------------------------------------------------------- +bool __fastcall std::__basic_file::is_open(_DWORD *a1) +{ + return *a1 != 0; +} + +//----- (00445670) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( + int *this, + int a2, + int a3, + int a4, + int a5) +{ + int v6; // [esp+0h] [ebp-2Ch] + + LOBYTE(v6) = 0; + return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); +} +// 44569E: variable 'v6' is possibly undefined + +//----- (004456B0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( + int *this, + int a2, + int a3, + int a4, + int a5) +{ + int v6; // [esp+0h] [ebp-2Ch] + + LOBYTE(v6) = 0; + return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); +} +// 4456DE: variable 'v6' is possibly undefined + +//----- (004456F0) -------------------------------------------------------- +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( + _DWORD *this, + int a2, + int a3, + int a4) +{ + int v6; // [esp+0h] [ebp-48h] + char v7; // [esp+23h] [ebp-25h] BYREF + _BYTE *v8[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v9)(_BYTE **); // [esp+3Ch] [ebp-Ch] + + v9 = 0; + LOBYTE(v6) = 0; + std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), v8, a3, a4); + if ( !v9 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::string::string(this, v8[0], (int)v8[1], (int)&v7); + if ( v9 ) + v9(v8); + return this; +} +// 445724: variable 'v6' is possibly undefined + +//----- (00445780) -------------------------------------------------------- +void **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( + void **this, + int a2, + std::string *a3, + int a4) +{ + unsigned __int8 *v5; // eax + int v7; // [esp+0h] [ebp-48h] + int v8; // [esp+8h] [ebp-40h] + int v9[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v10)(int *); // [esp+3Ch] [ebp-Ch] + + v10 = 0; + LOBYTE(v7) = 0; + std::__facet_shims::__collate_transform(v7, *(_DWORD *)(a2 + 12), (int)v9, a3, a4); + if ( !v10 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v5 = (unsigned __int8 *)v9[0]; + *this = this + 2; + LOBYTE(v8) = 0; + std::string::_M_construct(this, v5, (size_t)&v5[v9[1]], v8); + if ( v10 ) + v10(v9); + return this; +} +// 4457B4: variable 'v7' is possibly undefined +// 4457DB: variable 'v8' is possibly undefined + +//----- (00445810) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( + int *this, + int a2, + int a3, + int a4, + int a5) +{ + int v6; // [esp+0h] [ebp-2Ch] + + LOBYTE(v6) = 0; + return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); +} +// 44583E: variable 'v6' is possibly undefined + +//----- (00445850) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_compare( + int *this, + int a2, + int a3, + int a4, + int a5) +{ + int v6; // [esp+0h] [ebp-2Ch] + + LOBYTE(v6) = 0; + return std::__facet_shims::__collate_compare(v6, this[3], a2, a3, a4, a5); +} +// 44587E: variable 'v6' is possibly undefined + +//----- (00445890) -------------------------------------------------------- +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( + _DWORD *this, + int a2, + int a3, + int a4) +{ + int v6; // [esp+0h] [ebp-48h] + char v7; // [esp+23h] [ebp-25h] BYREF + const wchar_t *v8[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v9)(const wchar_t **); // [esp+3Ch] [ebp-Ch] + + v9 = 0; + LOBYTE(v6) = 0; + std::__facet_shims::__collate_transform(v6, *(_DWORD *)(a2 + 12), (int)v8, a3, a4); + if ( !v9 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::wstring::basic_string(this, v8[0], (int)v8[1], (int)&v7); + if ( v9 ) + v9(v8); + return this; +} +// 4458C4: variable 'v6' is possibly undefined + +//----- (00445920) -------------------------------------------------------- +wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::collate_shim::do_transform( + wchar_t **this, + int a2, + int a3, + int a4) +{ + wchar_t *v5; // eax + int v7; // [esp+0h] [ebp-48h] + int v8; // [esp+8h] [ebp-40h] + wchar_t *v9[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v10)(wchar_t **); // [esp+3Ch] [ebp-Ch] + + v10 = 0; + LOBYTE(v7) = 0; + std::__facet_shims::__collate_transform(v7, *(_DWORD *)(a2 + 12), v9, a3, a4); + if ( !v10 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v5 = v9[0]; + *this = (wchar_t *)(this + 2); + LOBYTE(v8) = 0; + std::wstring::_M_construct(this, v5, (int)&v5[(int)v9[1]], v8); + if ( v10 ) + v10(v9); + return this; +} +// 445954: variable 'v7' is possibly undefined +// 44597C: variable 'v8' is possibly undefined + +//----- (004459B0) -------------------------------------------------------- +void **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( + void **this, + int a2, + std::string *a3, + int a4, + int a5, + int a6) +{ + unsigned __int8 *v7; // eax + int v9; // [esp+0h] [ebp-48h] + int v10; // [esp+8h] [ebp-40h] + int v11[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v12)(int *); // [esp+3Ch] [ebp-Ch] + + v12 = 0; + LOBYTE(v9) = 0; + std::__facet_shims::__messages_get( + v9, + *(_DWORD *)(a2 + 16), + (int)v11, + a3, + a4, + a5, + *(_BYTE **)a6, + *(_DWORD *)(a6 + 4)); + if ( !v12 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v7 = (unsigned __int8 *)v11[0]; + *this = this + 2; + LOBYTE(v10) = 0; + std::string::_M_construct(this, v7, (size_t)&v7[v11[1]], v10); + if ( v12 ) + v12(v11); + return this; +} +// 4459FB: variable 'v9' is possibly undefined +// 445A22: variable 'v10' is possibly undefined + +//----- (00445A60) -------------------------------------------------------- +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 **a6) +{ + int v8; // [esp+0h] [ebp-48h] + char v9; // [esp+23h] [ebp-25h] BYREF + _BYTE *v10[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v11)(_BYTE **); // [esp+3Ch] [ebp-Ch] + + v11 = 0; + LOBYTE(v8) = 0; + std::__facet_shims::__messages_get(v8, *(_DWORD *)(a2 + 16), v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); + if ( !v11 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::string::string(this, v10[0], (int)v10[1], (int)&v9); + if ( v11 ) + v11(v10); + return this; +} +// 445AAB: variable 'v8' is possibly undefined + +//----- (00445B00) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3) +{ + int v4; // [esp+0h] [ebp-2Ch] + + LOBYTE(v4) = 0; + return std::__facet_shims::__messages_open(v4, this[4], *(_BYTE **)a2, *(_DWORD *)(a2 + 4), a3); +} +// 445B27: variable 'v4' is possibly undefined + +//----- (00445B40) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( + int *this, + unsigned __int8 **a2, + int a3) +{ + int v4; // [esp+0h] [ebp-2Ch] + + LOBYTE(v4) = 0; + return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); +} +// 445B67: variable 'v4' is possibly undefined + +//----- (00445B80) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) +{ + int v3; // [esp+0h] [ebp-1Ch] + + LOBYTE(v3) = 0; + return std::__facet_shims::__messages_close(v3, this[4], a2); +} +// 445B96: variable 'v3' is possibly undefined + +//----- (00445BB0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) +{ + int v3; // [esp+0h] [ebp-1Ch] + + LOBYTE(v3) = 0; + return std::__facet_shims::__messages_close(v3, this[4], a2); +} +// 445BC6: variable 'v3' is possibly undefined + +//----- (00445BE0) -------------------------------------------------------- +wchar_t **__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( + wchar_t **this, + int a2, + int a3, + int a4, + int a5, + int a6) +{ + wchar_t *v7; // eax + int v9; // [esp+0h] [ebp-48h] + int v10; // [esp+8h] [ebp-40h] + wchar_t *v11[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v12)(wchar_t **); // [esp+3Ch] [ebp-Ch] + + v12 = 0; + LOBYTE(v9) = 0; + std::__facet_shims::__messages_get( + v9, + *(_DWORD *)(a2 + 16), + v11, + a3, + a4, + a5, + *(const wchar_t **)a6, + *(_DWORD *)(a6 + 4)); + if ( !v12 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v7 = v11[0]; + *this = (wchar_t *)(this + 2); + LOBYTE(v10) = 0; + std::wstring::_M_construct(this, v7, (int)&v7[(int)v11[1]], v10); + if ( v12 ) + v12(v11); + return this; +} +// 445C2B: variable 'v9' is possibly undefined +// 445C53: variable 'v10' is possibly undefined + +//----- (00445C90) -------------------------------------------------------- +_DWORD *__thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + wchar_t **a6) +{ + int v8; // [esp+0h] [ebp-48h] + char v9; // [esp+23h] [ebp-25h] BYREF + const wchar_t *v10[6]; // [esp+24h] [ebp-24h] BYREF + void (__cdecl *v11)(const wchar_t **); // [esp+3Ch] [ebp-Ch] + + v11 = 0; + LOBYTE(v8) = 0; + std::__facet_shims::__messages_get(v8, *(_DWORD *)(a2 + 16), (int)v10, a3, a4, a5, *a6, *((_DWORD *)*a6 - 3)); + if ( !v11 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::wstring::basic_string(this, v10[0], (int)v10[1], (int)&v9); + if ( v11 ) + v11(v10); + return this; +} +// 445CDB: variable 'v8' is possibly undefined + +//----- (00445D30) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open(int *this, int a2, int a3) +{ + int v4; // [esp+0h] [ebp-2Ch] + + LOBYTE(v4) = 0; + return std::__facet_shims::__messages_open(v4, this[4], *(_BYTE **)a2, *(_DWORD *)(a2 + 4), a3); +} +// 445D57: variable 'v4' is possibly undefined + +//----- (00445D70) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_open( + int *this, + unsigned __int8 **a2, + int a3) +{ + int v4; // [esp+0h] [ebp-2Ch] + + LOBYTE(v4) = 0; + return std::__facet_shims::__messages_open(v4, this[4], *a2, *((_DWORD *)*a2 - 3), a3); +} +// 445D97: variable 'v4' is possibly undefined + +//----- (00445DB0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) +{ + int v3; // [esp+0h] [ebp-1Ch] + + LOBYTE(v3) = 0; + return std::__facet_shims::__messages_close(v3, this[4], a2); +} +// 445DC6: variable 'v3' is possibly undefined + +//----- (00445DE0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::messages_shim::do_close(int *this, int a2) +{ + int v3; // [esp+0h] [ebp-1Ch] + + LOBYTE(v3) = 0; + return std::__facet_shims::__messages_close(v3, this[4], a2); +} +// 445DF6: variable 'v3' is possibly undefined + +//----- (00445E10) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); +} +// 445E5E: variable 'v9' is possibly undefined + +//----- (00445E70) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); +} +// 445EBE: variable 'v9' is possibly undefined + +//----- (00445ED0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); +} +// 445F1E: variable 'v9' is possibly undefined + +//----- (00445F30) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); +} +// 445F7E: variable 'v9' is possibly undefined + +//----- (00445F90) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); +} +// 445FDE: variable 'v9' is possibly undefined + +//----- (00445FF0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); +} +// 44603E: variable 'v9' is possibly undefined + +//----- (00446050) -------------------------------------------------------- +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) +{ + int v2; // [esp+0h] [ebp-1Ch] + + LOBYTE(v2) = 0; + return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); +} +// 44605E: variable 'v2' is possibly undefined + +//----- (00446070) -------------------------------------------------------- +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) +{ + int v2; // [esp+0h] [ebp-1Ch] + + LOBYTE(v2) = 0; + return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); +} +// 44607E: variable 'v2' is possibly undefined + +//----- (00446090) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); +} +// 4460DE: variable 'v9' is possibly undefined + +//----- (004460F0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); +} +// 44613E: variable 'v9' is possibly undefined + +//----- (00446150) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); +} +// 44619E: variable 'v9' is possibly undefined + +//----- (004461B0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); +} +// 4461FE: variable 'v9' is possibly undefined + +//----- (00446210) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); +} +// 44625E: variable 'v9' is possibly undefined + +//----- (00446270) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_date( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 100); +} +// 4462BE: variable 'v9' is possibly undefined + +//----- (004462D0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); +} +// 44631E: variable 'v9' is possibly undefined + +//----- (00446330) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_time( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 116); +} +// 44637E: variable 'v9' is possibly undefined + +//----- (00446390) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); +} +// 4463DE: variable 'v9' is possibly undefined + +//----- (004463F0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_year( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 121); +} +// 44643E: variable 'v9' is possibly undefined + +//----- (00446450) -------------------------------------------------------- +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) +{ + int v2; // [esp+0h] [ebp-1Ch] + + LOBYTE(v2) = 0; + return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); +} +// 44645E: variable 'v2' is possibly undefined + +//----- (00446470) -------------------------------------------------------- +int __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::do_date_order(int a1) +{ + int v2; // [esp+0h] [ebp-1Ch] + + LOBYTE(v2) = 0; + return std::__facet_shims::__time_get_dateorder(v2, *(_DWORD *)(a1 + 8)); +} +// 44647E: variable 'v2' is possibly undefined + +//----- (00446490) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); +} +// 4464DE: variable 'v9' is possibly undefined + +//----- (004464F0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_weekday( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 119); +} +// 44653E: variable 'v9' is possibly undefined + +//----- (00446550) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); +} +// 44659E: variable 'v9' is possibly undefined + +//----- (004465B0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::time_get_shim::do_get_monthname( + int *this, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8) +{ + int v9; // [esp+0h] [ebp-3Ch] + + LOBYTE(v9) = 0; + return std::__facet_shims::__time_get(v9, this[2], a2, a3, a4, a5, a6, a7, a8, 109); +} +// 4465FE: variable 'v9' is possibly undefined + +//----- (00446610) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + std::string *a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + int *a8, + int a9) +{ + int v9; // esi + void (__cdecl *v10)(int *); // eax + int *v12; // eax + int v13; // [esp+0h] [ebp-98h] + int *v14; // [esp+4h] [ebp-94h] + int v15; // [esp+8h] [ebp-90h] + int v16; // [esp+30h] [ebp-68h] + int v17; // [esp+34h] [ebp-64h] + size_t Size; // [esp+38h] [ebp-60h] + int v19; // [esp+48h] [ebp-50h] BYREF + void *v20; // [esp+4Ch] [ebp-4Ch] BYREF + size_t v21; // [esp+50h] [ebp-48h] + int v22[4]; // [esp+54h] [ebp-44h] BYREF + int v23[6]; // [esp+64h] [ebp-34h] BYREF + void (__cdecl *v24)(int *); // [esp+7Ch] [ebp-1Ch] + + v24 = 0; + LOBYTE(v13) = 0; + v14 = (int *)this[2]; + v19 = 0; + v9 = std::__facet_shims::__money_get(v13, v14, a2, a3, a4, a5, a6, a7, &v19, 0, (int)v23); + v10 = v24; + if ( v19 ) + { + *a8 = v19; + goto LABEL_3; + } + if ( !v24 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + LOBYTE(v15) = 0; + v20 = v22; + std::string::_M_construct(&v20, (unsigned __int8 *)v23[0], v23[0] + v23[1], v15); + Size = v21; + v12 = *(int **)a9; + if ( v20 == v22 ) + { + if ( v21 ) + { + if ( v21 == 1 ) + *(_BYTE *)v12 = v22[0]; + else + memcpy(*(void **)a9, v22, v21); + Size = v21; + v12 = *(int **)a9; + } + *(_DWORD *)(a9 + 4) = Size; + *((_BYTE *)v12 + Size) = 0; + v12 = (int *)v20; + goto LABEL_11; + } + v17 = v22[0]; + if ( v12 == (int *)(a9 + 8) ) + { + *(_DWORD *)a9 = v20; + *(_DWORD *)(a9 + 4) = Size; + *(_DWORD *)(a9 + 8) = v17; + goto LABEL_15; + } + v16 = *(_DWORD *)(a9 + 8); + *(_DWORD *)a9 = v20; + *(_DWORD *)(a9 + 4) = Size; + *(_DWORD *)(a9 + 8) = v17; + if ( !v12 ) + { +LABEL_15: + v20 = v22; + v12 = v22; + goto LABEL_11; + } + v20 = v12; + v22[0] = v16; +LABEL_11: + v21 = 0; + *(_BYTE *)v12 = 0; + if ( v20 != v22 ) + operator delete(v20); + v10 = v24; +LABEL_3: + if ( v10 ) + v10(v23); + return v9; +} +// 446676: variable 'v13' is possibly undefined +// 4466D0: variable 'v15' is possibly undefined + +//----- (004467E0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + int *a9) +{ + int v9; // esi + void (__cdecl *v10)(_BYTE **); // eax + int v12; // edx + int v13; // [esp+0h] [ebp-88h] + int *v14; // [esp+4h] [ebp-84h] + std::string *v15; // [esp+4h] [ebp-84h] + volatile signed __int32 *v16; // [esp+3Ch] [ebp-4Ch] + char v17[5]; // [esp+4Bh] [ebp-3Dh] BYREF + volatile signed __int32 *v18; // [esp+50h] [ebp-38h] BYREF + _BYTE *v19[6]; // [esp+54h] [ebp-34h] BYREF + void (__cdecl *v20)(_BYTE **); // [esp+6Ch] [ebp-1Ch] + + v20 = 0; + LOBYTE(v13) = 0; + v14 = (int *)this[2]; + *(_DWORD *)&v17[1] = 0; + v9 = std::__facet_shims::__money_get(v13, v14, a2, a3, a4, a5, a6, a7, &v17[1], 0, v19); + v10 = v20; + if ( *(_DWORD *)&v17[1] ) + { + *a8 = *(_DWORD *)&v17[1]; + } + else + { + if ( !v20 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::string::string(&v18, v19[0], (int)v19[1], (int)v17); + std::string::swap(a9, (std::string *)&v18, v15); + v16 = v18 - 3; + if ( v18 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd(v18 - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)v18 - 1); + *((_DWORD *)v18 - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy((void *)v16, (int)v17); + } + v10 = v20; + } + if ( v10 ) + v10(v19); + return v9; +} +// 446843: variable 'v13' is possibly undefined +// 4468A8: variable 'v15' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (00446920) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + long double *a9) +{ + int result; // eax + int v10; // [esp+0h] [ebp-5Ch] + int *v11; // [esp+4h] [ebp-58h] + int v12; // [esp+3Ch] [ebp-20h] BYREF + long double v13[2]; // [esp+40h] [ebp-1Ch] BYREF + + LOBYTE(v10) = 0; + v11 = (int *)this[2]; + v12 = 0; + result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); + if ( v12 ) + *a8 = v12; + else + *a9 = v13[0]; + return result; +} +// 446981: variable 'v10' is possibly undefined +// 446920: using guessed type long double var_1C[2]; + +//----- (004469B0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + std::string *a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + int *a8, + long double *a9) +{ + int result; // eax + int v10; // [esp+0h] [ebp-5Ch] + int *v11; // [esp+4h] [ebp-58h] + int v12; // [esp+3Ch] [ebp-20h] BYREF + long double v13[2]; // [esp+40h] [ebp-1Ch] BYREF + + LOBYTE(v10) = 0; + v11 = (int *)this[2]; + v12 = 0; + result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); + if ( v12 ) + *a8 = v12; + else + *a9 = v13[0]; + return result; +} +// 446A11: variable 'v10' is possibly undefined +// 4469B0: using guessed type long double var_1C[2]; + +//----- (00446A40) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + int a9) +{ + int v9; // esi + void (__cdecl *v10)(wchar_t **); // eax + size_t v12; // edi + wchar_t *v13; // eax + wchar_t *v14; // edx + int v15; // [esp+0h] [ebp-98h] + int *v16; // [esp+4h] [ebp-94h] + int v17; // [esp+8h] [ebp-90h] + int v18; // [esp+30h] [ebp-68h] + int v19; // [esp+34h] [ebp-64h] + int v20; // [esp+48h] [ebp-50h] BYREF + wchar_t *v21; // [esp+4Ch] [ebp-4Ch] BYREF + size_t N; // [esp+50h] [ebp-48h] + wchar_t S2[2]; // [esp+54h] [ebp-44h] BYREF + wchar_t *v24[6]; // [esp+64h] [ebp-34h] BYREF + void (__cdecl *v25)(wchar_t **); // [esp+7Ch] [ebp-1Ch] + + v25 = 0; + LOBYTE(v15) = 0; + v16 = (int *)this[2]; + v20 = 0; + v9 = std::__facet_shims::__money_get(v15, v16, a2, a3, a4, a5, a6, a7, &v20, 0, v24); + v10 = v25; + if ( v20 ) + { + *a8 = v20; + goto LABEL_3; + } + if ( !v25 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + LOBYTE(v17) = 0; + v21 = S2; + std::wstring::_M_construct(&v21, v24[0], (int)&v24[0][(int)v24[1]], v17); + v12 = N; + v13 = *(wchar_t **)a9; + if ( v21 == S2 ) + { + v14 = S2; + if ( N ) + { + if ( N == 1 ) + { + *v13 = S2[0]; + v14 = S2; + } + else + { + wmemcpy(v13, S2, N); + v14 = v21; + v12 = N; + v13 = *(wchar_t **)a9; + } + } + *(_DWORD *)(a9 + 4) = v12; + v13[v12] = 0; + v13 = v14; + goto LABEL_11; + } + v19 = *(_DWORD *)S2; + if ( v13 == (wchar_t *)(a9 + 8) ) + { + *(_DWORD *)a9 = v21; + *(_DWORD *)(a9 + 4) = v12; + *(_DWORD *)(a9 + 8) = v19; + } + else + { + v18 = *(_DWORD *)(a9 + 8); + *(_DWORD *)a9 = v21; + *(_DWORD *)(a9 + 4) = v12; + *(_DWORD *)(a9 + 8) = v19; + if ( v13 ) + { + v21 = v13; + *(_DWORD *)S2 = v18; +LABEL_11: + N = 0; + *v13 = 0; + if ( v13 != S2 ) + operator delete(v13); + } + } + v10 = v25; +LABEL_3: + if ( v10 ) + v10(v24); + return v9; +} +// 446AA6: variable 'v15' is possibly undefined +// 446B16: variable 'v17' is possibly undefined + +//----- (00446C00) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + int *a9) +{ + int v9; // esi + void (__cdecl *v10)(const wchar_t **); // eax + int v12; // edx + int v13; // [esp+0h] [ebp-88h] + int *v14; // [esp+4h] [ebp-84h] + volatile signed __int32 *v15; // [esp+30h] [ebp-58h] + char v16[5]; // [esp+4Bh] [ebp-3Dh] BYREF + volatile signed __int32 *v17; // [esp+50h] [ebp-38h] BYREF + const wchar_t *v18[6]; // [esp+54h] [ebp-34h] BYREF + void (__cdecl *v19)(const wchar_t **); // [esp+6Ch] [ebp-1Ch] + + v19 = 0; + LOBYTE(v13) = 0; + v14 = (int *)this[2]; + *(_DWORD *)&v16[1] = 0; + v9 = std::__facet_shims::__money_get(v13, v14, a2, a3, a4, a5, a6, a7, &v16[1], 0, (int)v18); + v10 = v19; + if ( *(_DWORD *)&v16[1] ) + { + *a8 = *(_DWORD *)&v16[1]; + } + else + { + if ( !v19 ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::wstring::basic_string(&v17, v18[0], (int)v18[1], (int)v16); + std::wstring::swap(a9, (int *)&v17); + v15 = v17 - 3; + if ( v17 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd(v17 - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)v17 - 1); + *((_DWORD *)v17 - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)v15, (int)v16); + } + v10 = v19; + } + if ( v10 ) + v10(v18); + return v9; +} +// 446C63: variable 'v13' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (00446D50) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + long double *a9) +{ + int result; // eax + int v10; // [esp+0h] [ebp-6Ch] + int *v11; // [esp+4h] [ebp-68h] + int v12; // [esp+4Ch] [ebp-20h] BYREF + long double v13[2]; // [esp+50h] [ebp-1Ch] BYREF + + LOBYTE(v10) = 0; + v11 = (int *)this[2]; + v12 = 0; + result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); + if ( v12 ) + *a8 = v12; + else + *a9 = v13[0]; + return result; +} +// 446DBB: variable 'v10' is possibly undefined +// 446D50: using guessed type long double var_1C[2]; + +//----- (00446E10) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_get_shim::do_get( + _DWORD *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6, + int a7, + _DWORD *a8, + long double *a9) +{ + int result; // eax + int v10; // [esp+0h] [ebp-6Ch] + int *v11; // [esp+4h] [ebp-68h] + int v12; // [esp+4Ch] [ebp-20h] BYREF + long double v13[2]; // [esp+50h] [ebp-1Ch] BYREF + + LOBYTE(v10) = 0; + v11 = (int *)this[2]; + v12 = 0; + result = std::__facet_shims::__money_get(v10, v11, a2, a3, a4, a5, a6, a7, &v12, (int)v13, 0); + if ( v12 ) + *a8 = v12; + else + *a9 = v13[0]; + return result; +} +// 446E7B: variable 'v10' is possibly undefined +// 446E10: using guessed type long double var_1C[2]; + +//----- (00446ED0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + _DWORD *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6, + int a7) +{ + int v8; // ebx + int v10; // [esp+0h] [ebp-78h] + int v11; // [esp+4h] [ebp-74h] + int v12; // [esp+8h] [ebp-70h] + int v13[2]; // [esp+44h] [ebp-34h] BYREF + char v14; // [esp+4Ch] [ebp-2Ch] BYREF + void (__cdecl *v15)(void **); // [esp+5Ch] [ebp-1Ch] + + v15 = 0; + v13[0] = (int)&v14; + LOBYTE(v12) = 0; + std::string::_M_construct(v13, *(_BYTE **)a7, *(_DWORD *)a7 + *(_DWORD *)(a7 + 4), v12); + LOBYTE(v10) = 0; + v11 = this[2]; + v15 = std::__facet_shims::`anonymous namespace'::__destroy_string; + v8 = std::__facet_shims::__money_put(v10, v11, a2, a3, a4, a5, a6, 0.0, (int)v13); + if ( v15 ) + v15((void **)v13); + return v8; +} +// 446F0C: variable 'v12' is possibly undefined +// 446F56: variable 'v10' is possibly undefined + +//----- (00446F80) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6, + unsigned int **a7) +{ + int v8; // ebx + int v10; // [esp+0h] [ebp-78h] + const std::string *v11; // [esp+4h] [ebp-74h] + int v12[6]; // [esp+44h] [ebp-34h] BYREF + void (__cdecl *v13)(volatile signed __int32 **); // [esp+5Ch] [ebp-1Ch] + + v13 = 0; + std::string::string((unsigned int **)v12, a7, v11); + v12[1] = *(*a7 - 3); + v13 = std::__facet_shims::`anonymous namespace'::__destroy_string; + LOBYTE(v10) = 0; + v8 = std::__facet_shims::__money_put(v10, this[2], a2, a3, a4, a5, a6, 0.0, (int)v12); + if ( v13 ) + v13((volatile signed __int32 **)v12); + return v8; +} +// 446FA6: variable 'v11' is possibly undefined +// 446FFB: variable 'v10' is possibly undefined + +//----- (00447030) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6, + long double a7) +{ + int v8; // [esp+0h] [ebp-3Ch] + + LOBYTE(v8) = 0; + return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); +} +// 447078: variable 'v8' is possibly undefined + +//----- (00447090) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6, + long double a7) +{ + int v8; // [esp+0h] [ebp-3Ch] + + LOBYTE(v8) = 0; + return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); +} +// 4470D8: variable 'v8' is possibly undefined + +//----- (004470F0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + _DWORD *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6, + int a7) +{ + int v8; // ebx + int v10; // [esp+0h] [ebp-78h] + int v11; // [esp+4h] [ebp-74h] + int v12; // [esp+8h] [ebp-70h] + int v13[2]; // [esp+44h] [ebp-34h] BYREF + char v14; // [esp+4Ch] [ebp-2Ch] BYREF + void (__cdecl *v15)(void **); // [esp+5Ch] [ebp-1Ch] + + v15 = 0; + v13[0] = (int)&v14; + LOBYTE(v12) = 0; + std::wstring::_M_construct((wchar_t **)v13, *(wchar_t **)a7, *(_DWORD *)a7 + 2 * *(_DWORD *)(a7 + 4), v12); + LOBYTE(v10) = 0; + v11 = this[2]; + v15 = std::__facet_shims::`anonymous namespace'::__destroy_string; + v8 = std::__facet_shims::__money_put(v10, v11, a2, a3, a4, a5, a6, 0.0, (int)v13); + if ( v15 ) + v15((void **)v13); + return v8; +} +// 44712D: variable 'v12' is possibly undefined +// 447177: variable 'v10' is possibly undefined + +//----- (004471B0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6, + _DWORD *a7) +{ + int v8; // ebx + int v10; // [esp+0h] [ebp-78h] + int v11[6]; // [esp+44h] [ebp-34h] BYREF + void (__cdecl *v12)(volatile signed __int32 **); // [esp+5Ch] [ebp-1Ch] + + v12 = 0; + std::wstring::basic_string(v11, a7); + v11[1] = *(_DWORD *)(*a7 - 12); + v12 = std::__facet_shims::`anonymous namespace'::__destroy_string; + LOBYTE(v10) = 0; + v8 = std::__facet_shims::__money_put(v10, this[2], a2, a3, a4, a5, a6, 0.0, (int)v11); + if ( v12 ) + v12((volatile signed __int32 **)v11); + return v8; +} +// 447229: variable 'v10' is possibly undefined + +//----- (00447260) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + __int16 a6, + long double a7) +{ + int v8; // [esp+0h] [ebp-3Ch] + + LOBYTE(v8) = 0; + return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); +} +// 4472A8: variable 'v8' is possibly undefined + +//----- (004472C0) -------------------------------------------------------- +int __thiscall std::__facet_shims::`anonymous namespace'::money_put_shim::do_put( + int *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + __int16 a6, + long double a7) +{ + int v8; // [esp+0h] [ebp-3Ch] + + LOBYTE(v8) = 0; + return std::__facet_shims::__money_put(v8, this[2], a2, a3, a4, a5, a6, a7, 0); +} +// 447308: variable 'v8' is possibly undefined + +//----- (00447320) -------------------------------------------------------- +const char *_ZGTtNKSt13bad_exception4whatEv() +{ + return "std::bad_exception"; +} + +//----- (00447330) -------------------------------------------------------- +bool __fastcall std::filebuf::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 40)); +} + +//----- (00447340) -------------------------------------------------------- +bool __fastcall std::wfilebuf::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 40)); +} + +//----- (00447350) -------------------------------------------------------- +int __fastcall std::fstream::rdbuf(int a1) +{ + return a1 + 12; +} + +//----- (00447360) -------------------------------------------------------- +bool __fastcall std::fstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 52)); +} + +//----- (00447370) -------------------------------------------------------- +int __fastcall std::wfstream::rdbuf(int a1) +{ + return a1 + 12; +} + +//----- (00447380) -------------------------------------------------------- +bool __fastcall std::wfstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 52)); +} + +//----- (00447390) -------------------------------------------------------- +int __fastcall std::wistream::gcount(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (004473A0) -------------------------------------------------------- +int __fastcall std::wistream::sentry::operator bool(unsigned __int8 *a1) +{ + return *a1; +} + +//----- (004473B0) -------------------------------------------------------- +int __fastcall std::wostream::sentry::operator bool(unsigned __int8 *a1) +{ + return *a1; +} + +//----- (004473C0) -------------------------------------------------------- +int __fastcall std::runtime_error::what(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (004473D0) -------------------------------------------------------- +int __fastcall std::ifstream::rdbuf(int a1) +{ + return a1 + 8; +} + +//----- (004473E0) -------------------------------------------------------- +bool __fastcall std::ifstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 48)); +} + +//----- (004473F0) -------------------------------------------------------- +int __fastcall std::wifstream::rdbuf(int a1) +{ + return a1 + 8; +} + +//----- (00447400) -------------------------------------------------------- +bool __fastcall std::wifstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 48)); +} + +//----- (00447410) -------------------------------------------------------- +int __fastcall std::ofstream::rdbuf(int a1) +{ + return a1 + 4; +} + +//----- (00447420) -------------------------------------------------------- +bool __fastcall std::ofstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 44)); +} + +//----- (00447430) -------------------------------------------------------- +int __fastcall std::wofstream::rdbuf(int a1) +{ + return a1 + 4; +} + +//----- (00447440) -------------------------------------------------------- +bool __fastcall std::wofstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 44)); +} + +//----- (00447450) -------------------------------------------------------- +int __fastcall std::streambuf::gptr(int a1) +{ + return *(_DWORD *)(a1 + 8); +} + +//----- (00447460) -------------------------------------------------------- +int __fastcall std::streambuf::pptr(int a1) +{ + return *(_DWORD *)(a1 + 20); +} + +//----- (00447470) -------------------------------------------------------- +int __fastcall std::streambuf::eback(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00447480) -------------------------------------------------------- +int __fastcall std::streambuf::egptr(int a1) +{ + return *(_DWORD *)(a1 + 12); +} + +//----- (00447490) -------------------------------------------------------- +int __fastcall std::streambuf::epptr(int a1) +{ + return *(_DWORD *)(a1 + 24); +} + +//----- (004474A0) -------------------------------------------------------- +int __fastcall std::streambuf::pbase(int a1) +{ + return *(_DWORD *)(a1 + 16); +} + +//----- (004474B0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::streambuf::getloc(volatile signed __int32 **this, int a2) +{ + const std::locale *v4; // [esp+4h] [ebp-18h] + + std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); + return this; +} +// 4474C0: variable 'v4' is possibly undefined + +//----- (004474E0) -------------------------------------------------------- +int __fastcall std::wstreambuf::gptr(int a1) +{ + return *(_DWORD *)(a1 + 8); +} + +//----- (004474F0) -------------------------------------------------------- +int __fastcall std::wstreambuf::pptr(int a1) +{ + return *(_DWORD *)(a1 + 20); +} + +//----- (00447500) -------------------------------------------------------- +int __fastcall std::wstreambuf::eback(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00447510) -------------------------------------------------------- +int __fastcall std::wstreambuf::egptr(int a1) +{ + return *(_DWORD *)(a1 + 12); +} + +//----- (00447520) -------------------------------------------------------- +int __fastcall std::wstreambuf::epptr(int a1) +{ + return *(_DWORD *)(a1 + 24); +} + +//----- (00447530) -------------------------------------------------------- +int __fastcall std::wstreambuf::pbase(int a1) +{ + return *(_DWORD *)(a1 + 16); +} + +//----- (00447540) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::wstreambuf::getloc(volatile signed __int32 **this, int a2) +{ + const std::locale *v4; // [esp+4h] [ebp-18h] + + std::locale::locale(this, (volatile signed __int32 **)(a2 + 28), v4); + return this; +} +// 447550: variable 'v4' is possibly undefined + +//----- (00447570) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; +} + +//----- (00447590) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_in( + unsigned int *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + _DWORD *a8) +{ + unsigned int v8; // edx + int result; // eax + int v10[2]; // [esp+4h] [ebp-10h] BYREF + int v11[2]; // [esp+Ch] [ebp-8h] BYREF + + v8 = this[3]; + v10[0] = a3; + v10[1] = a4; + v11[0] = a6; + v11[1] = a7; + result = std::`anonymous namespace'::ucs4_in(v10, v11, this[2], v8); + *a5 = v10[0]; + *a8 = v11[0]; + return result; +} + +//----- (004475F0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_out( + int this, + int a2, + unsigned int *a3, + unsigned int *a4, + unsigned int **a5, + _BYTE *a6, + _BYTE *a7, + _BYTE **a8) +{ + unsigned int v8; // edi + unsigned int *v9; // ebx + int result; // eax + _BYTE *v11[5]; // [esp+8h] [ebp-14h] BYREF + + v8 = *(_DWORD *)(this + 8); + v9 = a3; + v11[0] = a6; + v11[1] = a7; + if ( (*(_BYTE *)(this + 12) & 2) != 0 + && !(unsigned __int8)std::`anonymous namespace'::write_utf8_bom((int *)v11) ) + { +LABEL_10: + result = 1; + } + else if ( a3 == a4 ) + { +LABEL_11: + result = 0; + } + else + { + while ( v8 >= *v9 ) + { + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v11, *v9) ) + goto LABEL_10; + if ( a4 == ++v9 ) + goto LABEL_11; + } + result = 2; + } + *a5 = v9; + *a8 = v11[0]; + return result; +} + +//----- (00447690) -------------------------------------------------------- +unsigned __int8 *__thiscall std::__codecvt_utf8_base::do_length( + int this, + int a2, + unsigned __int8 *a3, + unsigned __int8 *a4, + int a5) +{ + unsigned int v5; // edi + int v6; // ebx + bool v7; // dl + bool v8; // al + unsigned __int8 *v10[6]; // [esp+8h] [ebp-18h] BYREF + + v5 = *(_DWORD *)(this + 8); + v10[0] = a3; + v10[1] = a4; + if ( (*(_BYTE *)(this + 12) & 4) != 0 ) + std::`anonymous namespace'::read_bom((int *)v10); + v6 = a5 - 1; + if ( a5 ) + { + do + { + v7 = v5 >= std::`anonymous namespace'::read_utf8_code_point(v10, v5); + v8 = v6-- != 0; + } + while ( v8 && v7 ); + } + return (unsigned __int8 *)(v10[0] - a3); +} + +//----- (00447700) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 3 : 6; +} + +//----- (00447720) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_in( + _DWORD *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + unsigned int v9; // ecx + char v10; // al + int result; // eax + int v12[2]; // [esp+8h] [ebp-10h] BYREF + int v13[2]; // [esp+10h] [ebp-8h] BYREF + + v12[0] = a3; + v12[1] = a4; + v13[0] = a6; + v13[1] = a7; + v8 = this[3]; + v9 = this[2]; + v10 = v8 & 6 | 1; + if ( v9 > 0xFFFE ) + v9 = 0xFFFF; + result = std::`anonymous namespace'::utf16_in(v12, v13, v9, v10, 1); + *a5 = v12[0]; + *a8 = v13[0]; + return result; +} + +//----- (00447790) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_out( + _DWORD *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + unsigned int v9; // ecx + int result; // eax + unsigned __int16 *v11[2]; // [esp+8h] [ebp-10h] BYREF + int v12[2]; // [esp+10h] [ebp-8h] BYREF + + v11[0] = a3; + v11[1] = a4; + v12[0] = a6; + v12[1] = a7; + v8 = this[3]; + v9 = this[2]; + if ( v9 > 0xFFFE ) + v9 = 0xFFFF; + result = std::`anonymous namespace'::utf16_out(v11, v12, v9, v8, 1); + *a5 = v11[0]; + *a8 = v12[0]; + return result; +} + +//----- (00447800) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + int a5) +{ + std::`anonymous namespace'::ucs2_span(a5, a4, this[2], this[3]); + return 0; +} + +//----- (00447830) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 3 : 6; +} + +//----- (00447850) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_in( + _DWORD *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + _DWORD *a8) +{ + unsigned int v8; // ecx + int result; // eax + int v10[2]; // [esp+8h] [ebp-10h] BYREF + int v11[2]; // [esp+10h] [ebp-8h] BYREF + + v8 = this[3]; + v10[0] = a3; + v10[1] = a4; + v11[0] = a6; + v11[1] = a7; + if ( v8 > 0xFFFE ) + v8 = 0xFFFF; + result = std::`anonymous namespace'::utf16_in(v10, v11, v8, 1, 1); + *a5 = v10[0]; + *a8 = v11[0]; + return result; +} + +//----- (004478C0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_out( + _DWORD *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + unsigned int v9; // ecx + int result; // eax + int v11[2]; // [esp+8h] [ebp-10h] BYREF + unsigned __int16 *v12[2]; // [esp+10h] [ebp-8h] BYREF + + v11[0] = a6; + v11[1] = a7; + v12[0] = a3; + v12[1] = a4; + v8 = this[4]; + v9 = this[3]; + if ( v9 > 0xFFFE ) + v9 = 0xFFFF; + result = std::`anonymous namespace'::utf16_out(v12, v11, v9, v8, 1); + *a5 = v12[0]; + *a8 = v11[0]; + return result; +} + +//----- (00447930) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + int a5) +{ + std::`anonymous namespace'::ucs2_span(a5, a4, this[3], this[4]); + return 0; +} + +//----- (00447960) -------------------------------------------------------- +char __userpurge std::__iosfail_type_info::__do_upcast@( + int *a1@, + std::__iosfail_type_info *this, + const __cxxabiv1::__class_type_info *a3, + void **a4) +{ + char result; // al + + result = std::__is_ios_failure_handler(this); + if ( !result ) + return __cxxabiv1::__class_type_info::__do_upcast(a1, this, a3, a4); + *(_DWORD *)a3 += 16; + return result; +} + +//----- (004479B0) -------------------------------------------------------- +bool __thiscall std::istreambuf_iterator::equal(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + unsigned __int8 v4; // dl + _DWORD *v5; // ecx + char v6; // bl + char v7; // di + unsigned __int8 v9; // di + int v10; // eax + int v11; // eax + unsigned __int8 v12; // [esp+Fh] [ebp-Dh] + + v3 = (_DWORD *)*this; + v4 = this[1] == -1; + if ( (v4 & (v3 != 0)) != 0 ) + { + v9 = v4 & (v3 != 0); + v4 = 0; + if ( v3[2] >= v3[3] ) + { + v10 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + v4 = 0; + if ( v10 == -1 ) + { + *this = 0; + v4 = v9; + } + } + } + v5 = *(_DWORD **)a2; + v6 = *(_DWORD *)(a2 + 4) == -1; + v7 = v6 & (*(_DWORD *)a2 != 0); + if ( v7 ) + { + v6 = 0; + if ( v5[2] >= v5[3] ) + { + v12 = v4; + v11 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); + v4 = v12; + if ( v11 == -1 ) + { + *(_DWORD *)a2 = 0; + v6 = v7; + } + } + } + return v6 == (char)v4; +} + +//----- (00447A50) -------------------------------------------------------- +int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@) +{ + int result; // eax + _DWORD *v4; // ecx + unsigned __int8 *v5; // eax + + result = a2; + v4 = *a1; + if ( a2 == -1 && v4 ) + { + v5 = (unsigned __int8 *)v4[2]; + if ( (unsigned int)v5 >= v4[3] ) + { + result = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); + if ( result == -1 ) + *a1 = 0; + } + else + { + return *v5; + } + } + return result; +} + +//----- (00447AA0) -------------------------------------------------------- +bool __thiscall std::istreambuf_iterator::equal(_WORD *this, int a2) +{ + _DWORD *v3; // ecx + char v4; // si + char v5; // dl + _DWORD *v6; // ecx + char v7; // dl + char v8; // bl + __int16 *v10; // eax + __int16 v11; // ax + __int16 *v12; // eax + __int16 v13; // ax + char v14; // [esp+Fh] [ebp-Dh] + + v3 = *(_DWORD **)this; + v4 = this[2] == 0xFFFF; + v5 = v4 & (v3 != 0); + if ( v5 ) + { + v10 = (__int16 *)v3[2]; + if ( (unsigned int)v10 >= v3[3] ) + { + v14 = v4 & (v3 != 0); + v11 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + v5 = v14; + } + else + { + v11 = *v10; + } + v4 = 0; + if ( v11 == -1 ) + { + *(_DWORD *)this = 0; + v4 = v5; + } + } + v6 = *(_DWORD **)a2; + v7 = *(_WORD *)(a2 + 4) == 0xFFFF; + v8 = v7 & (*(_DWORD *)a2 != 0); + if ( v8 ) + { + v12 = (__int16 *)v6[2]; + if ( (unsigned int)v12 >= v6[3] ) + v13 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + else + v13 = *v12; + v7 = 0; + if ( v13 == -1 ) + { + *(_DWORD *)a2 = 0; + v7 = v8; + } + } + return v4 == v7; +} + +//----- (00447B40) -------------------------------------------------------- +int __usercall std::istreambuf_iterator::_M_get@(_DWORD **a1@, int a2@) +{ + int result; // eax + _DWORD *v4; // ecx + unsigned __int16 *v5; // eax + + result = a2; + v4 = *a1; + if ( (_WORD)a2 == 0xFFFF && v4 ) + { + v5 = (unsigned __int16 *)v4[2]; + if ( (unsigned int)v5 >= v4[3] ) + result = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); + else + result = *v5; + if ( (_WORD)result == 0xFFFF ) + *a1 = 0; + } + return result; +} + +//----- (00447B90) -------------------------------------------------------- +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 6; +} + +//----- (00447BB0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_in( + _DWORD *this, + int a2, + int a3, + int a4, + int *a5, + unsigned int *a6, + unsigned int *a7, + unsigned int **a8) +{ + unsigned int v8; // esi + int v10; // eax + int v11; // edx + unsigned int utf16_code; // eax + int result; // eax + int v14; // [esp+4h] [ebp-1Ch] BYREF + int v15; // [esp+8h] [ebp-18h] BYREF + int v16; // [esp+Ch] [ebp-14h] + + v8 = this[2]; + v15 = a3; + v10 = this[3]; + v16 = a4; + v14 = v10; + std::`anonymous namespace'::read_utf16_bom((int)&v15, &v14); + v11 = v15; + if ( (unsigned int)(v16 - v15) >> 1 ) + { + while ( 1 ) + { + if ( a7 == a6 ) + { + *a5 = v15; + *a8 = a7; + return 1; + } + utf16_code = std::`anonymous namespace'::read_utf16_code_point((unsigned int)&v15, v8, v14); + v11 = v15; + if ( utf16_code == -2 ) + { + result = 1; + goto LABEL_10; + } + if ( v8 < utf16_code ) + break; + *a6++ = utf16_code; + if ( !((unsigned int)(v16 - v11) >> 1) ) + goto LABEL_8; + } + result = 2; +LABEL_10: + *a5 = v15; + *a8 = a6; + } + else + { +LABEL_8: + *a5 = v11; + *a8 = a6; + return 2 * (a4 != v11); + } + return result; +} + +//----- (00447CA0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_out( + _DWORD *this, + int a2, + unsigned int *a3, + unsigned int *a4, + unsigned int **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // ebp + unsigned int v9; // esi + unsigned int *v10; // edi + bool v11; // zf + _WORD *v12; // eax + int v13; // ebp + unsigned int v14; // edx + unsigned int v15; // ecx + int v16; // edx + unsigned int v18; // ecx + __int16 v19; // dx + __int16 v20; // cx + int v21; // eax + __int16 v22; // cx + _WORD *v23; // [esp+8h] [ebp-18h] BYREF + int v24; // [esp+Ch] [ebp-14h] + + v8 = this[3]; + v9 = this[2]; + v10 = a3; + v23 = (_WORD *)a6; + v24 = a7; + v11 = (unsigned __int8)std::`anonymous namespace'::write_utf16_bom((int)&v23, v8) == 0; + v12 = v23; + if ( v11 ) + { +LABEL_7: + v16 = 1; + } + else if ( a3 == a4 ) + { +LABEL_14: + v16 = 0; + } + else + { + v13 = v8 & 1; + while ( 1 ) + { + v14 = *v10; + if ( v9 < *v10 ) + break; + v15 = (unsigned int)(v24 - (_DWORD)v12) >> 1; + if ( v14 > 0xFFFF ) + { + if ( v15 <= 1 ) + goto LABEL_7; + v18 = v14 >> 10; + v19 = (v14 & 0x3FF) - 9216; + v20 = v18 - 10304; + if ( !v13 ) + { + v20 = __ROL2__(v20, 8); + v19 = __ROL2__(v19, 8); + } + *v12 = v20; + v21 = (int)v23++; + *(_WORD *)(v21 + 2) = v19; + v12 = ++v23; + } + else + { + if ( !v15 ) + goto LABEL_7; + v22 = __ROL2__(v14, 8); + if ( v13 ) + *v12 = v14; + else + *v12 = v22; + v12 = ++v23; + } + if ( a4 == ++v10 ) + goto LABEL_14; + } + v16 = 2; + } + *a5 = v10; + *a8 = v12; + return v16; +} + +//----- (00447DE0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) +{ + unsigned int v5; // edi + int v6; // eax + int v7; // ebp + unsigned int utf16_code; // eax + bool v9; // dl + int v11; // [esp+4h] [ebp-1Ch] BYREF + int v12[6]; // [esp+8h] [ebp-18h] BYREF + + v5 = this[2]; + v12[1] = a4; + v6 = this[3]; + v12[0] = a3; + v11 = v6; + std::`anonymous namespace'::read_utf16_bom((int)v12, &v11); + if ( a5 ) + { + v7 = a5 - 1; + do + { + utf16_code = std::`anonymous namespace'::read_utf16_code_point((unsigned int)v12, v5, v11); + v9 = v7-- != 0; + } + while ( v5 >= utf16_code && v9 ); + } + return v12[0] - a3; +} + +//----- (00447E50) -------------------------------------------------------- +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 2 : 4; +} + +//----- (00447E70) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_in( + unsigned int *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + int *a8) +{ + unsigned int v8; // edx + int result; // eax + int v10; // edx + int v11; // esi + int v12[2]; // [esp+4h] [ebp-18h] BYREF + int v13[4]; // [esp+Ch] [ebp-10h] BYREF + + v8 = this[3]; + v12[0] = a3; + v12[1] = a4; + v13[0] = a6; + v13[1] = a7; + result = std::`anonymous namespace'::ucs2_in(v12, v13, this[2], v8); + v10 = v12[0]; + v11 = v13[0]; + *a5 = v12[0]; + *a8 = v11; + if ( !result && v10 != a4 ) + return 2; + return result; +} + +//----- (00447EE0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_out( + _DWORD *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // ebx + unsigned int v9; // esi + char v10; // dl + int result; // eax + unsigned __int16 *v12[2]; // [esp+4h] [ebp-18h] BYREF + int v13[4]; // [esp+Ch] [ebp-10h] BYREF + + v8 = this[3]; + v9 = this[2]; + v12[0] = a3; + v12[1] = a4; + v13[0] = a6; + v13[1] = a7; + v10 = std::`anonymous namespace'::write_utf16_bom((int)v13, v8); + result = 1; + if ( v10 ) + result = std::`anonymous namespace'::ucs2_out(v12, v13, v9, v8); + *a5 = v12[0]; + *a8 = v13[0]; + return result; +} + +//----- (00447F50) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) +{ + int v5; // edx + unsigned int v6; // ecx + int v8[3]; // [esp+Ch] [ebp-Ch] BYREF + + v5 = this[3]; + v8[1] = a4; + v6 = this[2]; + v8[0] = a3; + return std::`anonymous namespace'::ucs2_span((unsigned int)v8, a5, v6, v5) - a3; +} + +//----- (00447F90) -------------------------------------------------------- +int __fastcall std::__codecvt_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 2 : 4; +} + +//----- (00447FB0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_in( + unsigned int *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + int *a8) +{ + unsigned int v8; // edx + int result; // eax + int v10; // edx + int v11; // esi + int v12[2]; // [esp+4h] [ebp-18h] BYREF + int v13[4]; // [esp+Ch] [ebp-10h] BYREF + + v8 = this[4]; + v12[0] = a3; + v12[1] = a4; + v13[0] = a6; + v13[1] = a7; + result = std::`anonymous namespace'::ucs2_in(v12, v13, this[3], v8); + v10 = v12[0]; + v11 = v13[0]; + *a5 = v12[0]; + *a8 = v11; + if ( !result && v10 != a4 ) + return 2; + return result; +} + +//----- (00448020) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_out( + _DWORD *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int v8; // ebx + unsigned int v9; // esi + char v10; // dl + int result; // eax + int v12[2]; // [esp+4h] [ebp-18h] BYREF + unsigned __int16 *v13[4]; // [esp+Ch] [ebp-10h] BYREF + + v8 = this[4]; + v9 = this[3]; + v12[0] = a6; + v12[1] = a7; + v13[0] = a3; + v13[1] = a4; + v10 = std::`anonymous namespace'::write_utf16_bom((int)v12, v8); + result = 1; + if ( v10 ) + result = std::`anonymous namespace'::ucs2_out(v13, v12, v9, v8); + *a5 = v13[0]; + *a8 = v12[0]; + return result; +} + +//----- (00448090) -------------------------------------------------------- +int __thiscall std::__codecvt_utf16_base::do_length(_DWORD *this, int a2, int a3, int a4, int a5) +{ + int v5; // edx + unsigned int v6; // ecx + int v8[3]; // [esp+Ch] [ebp-Ch] BYREF + + v5 = this[4]; + v8[1] = a4; + v6 = this[3]; + v8[0] = a3; + return std::`anonymous namespace'::ucs2_span((unsigned int)v8, a5, v6, v5) - a3; +} + +//----- (004480D0) -------------------------------------------------------- +const char *std::bad_array_new_length::what() +{ + return "std::bad_array_new_length"; +} + +//----- (004480E0) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; +} + +//----- (00448100) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_in( + int this, + int a2, + unsigned __int8 *a3, + unsigned __int8 *a4, + unsigned __int8 **a5, + unsigned int *a6, + unsigned int *a7, + unsigned int **a8) +{ + unsigned int v8; // edi + unsigned __int8 *v9; // ebp + unsigned __int8 *v10; // eax + unsigned int v12; // eax + int result; // eax + unsigned __int8 *v14; // [esp+8h] [ebp-18h] BYREF + unsigned __int8 *v15; // [esp+Ch] [ebp-14h] + + v8 = *(_DWORD *)(this + 8); + v9 = a3; + v10 = a4; + v14 = a3; + v15 = a4; + if ( (*(_BYTE *)(this + 12) & 4) != 0 ) + { + std::`anonymous namespace'::read_bom((int *)&v14); + v9 = v14; + v10 = v15; + } + if ( v10 == v9 ) + { +LABEL_14: + result = 0; + } + else + { + while ( 1 ) + { + if ( a7 == a6 ) + { + v9 = v14; + result = 0; + goto LABEL_12; + } + v12 = std::`anonymous namespace'::read_utf8_code_point(&v14, v8); + if ( v12 == -2 ) + { + v9 = v14; + result = 1; + goto LABEL_12; + } + if ( v8 < v12 ) + break; + if ( v12 <= 0xFFFF ) + { + *a6 = v12; + v9 = v14; + ++a6; + if ( v14 == v15 ) + goto LABEL_14; + } + else + { + if ( (char *)a7 - (char *)a6 == 4 ) + { + result = 1; + goto LABEL_12; + } + v9 = v14; + a6 += 2; + *(a6 - 1) = (unsigned __int16)((v12 & 0x3FF) - 9216); + *(a6 - 2) = (unsigned __int16)((v12 >> 10) - 10304); + if ( v9 == v15 ) + goto LABEL_14; + } + } + v9 = v14; + result = 2; + } +LABEL_12: + *a5 = v9; + *a8 = a6; + return result; +} + +//----- (00448220) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_out( + int this, + int a2, + unsigned int *a3, + unsigned int *a4, + unsigned int **a5, + _BYTE *a6, + _BYTE *a7, + _BYTE **a8) +{ + unsigned int v8; // edi + unsigned int *v9; // ebx + unsigned int v10; // eax + unsigned int v11; // eax + int v12; // ebp + unsigned int v13; // edx + int result; // eax + _BYTE *v15[6]; // [esp+8h] [ebp-18h] BYREF + + v8 = *(_DWORD *)(this + 8); + v9 = a3; + v15[0] = a6; + v15[1] = a7; + if ( (*(_BYTE *)(this + 12) & 2) != 0 + && !(unsigned __int8)std::`anonymous namespace'::write_utf8_bom((int *)v15) ) + { +LABEL_14: + result = 1; + goto LABEL_15; + } + v10 = a4 - a3; + if ( a3 == a4 ) + { +LABEL_16: + result = 0; + goto LABEL_15; + } + while ( 1 ) + { + v13 = *v9; + if ( *v9 - 55296 <= 0x3FF ) + break; + if ( v13 - 56320 <= 0x3FF ) + goto LABEL_13; + v12 = 1; + if ( v8 < v13 ) + goto LABEL_13; +LABEL_8: + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v15, v13) ) + goto LABEL_14; + v9 += v12; + v10 = a4 - v9; + if ( a4 == v9 ) + goto LABEL_16; + } + if ( v10 <= 1 ) + goto LABEL_16; + v11 = v9[1]; + if ( v11 - 56320 <= 0x3FF ) + { + v12 = 2; + v13 = v11 + (v13 << 10) - 56613888; + if ( v8 >= v13 ) + goto LABEL_8; + } +LABEL_13: + result = 2; +LABEL_15: + *a5 = v9; + *a8 = v15[0]; + return result; +} + +//----- (00448320) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + unsigned int a5) +{ + std::`anonymous namespace'::utf16_span(a5, a4, this[2], this[3]); + return 0; +} + +//----- (00448350) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 12) & 4) == 0 ? 4 : 7; +} + +//----- (00448370) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_in( + _DWORD *this, + int a2, + int a3, + int a4, + _DWORD *a5, + int a6, + int a7, + _DWORD *a8) +{ + unsigned int v8; // edx + int result; // eax + int v10[2]; // [esp+8h] [ebp-10h] BYREF + int v11[2]; // [esp+10h] [ebp-8h] BYREF + + v8 = this[2]; + v10[0] = a3; + v10[1] = a4; + v11[0] = a6; + v11[1] = a7; + result = std::`anonymous namespace'::utf16_in(v10, v11, v8, this[3] & 6 | 1, 0); + *a5 = v10[0]; + *a8 = v11[0]; + return result; +} + +//----- (004483E0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_out( + unsigned int *this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + int a6, + int a7, + _DWORD *a8) +{ + int result; // eax + unsigned __int16 *v9[2]; // [esp+8h] [ebp-10h] BYREF + int v10[2]; // [esp+10h] [ebp-8h] BYREF + + v9[0] = a3; + v9[1] = a4; + v10[0] = a6; + v10[1] = a7; + result = std::`anonymous namespace'::utf16_out(v9, v10, this[2], this[3], 0); + *a5 = v9[0]; + *a8 = v10[0]; + return result; +} + +//----- (00448440) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + unsigned int a5) +{ + std::`anonymous namespace'::utf16_span(a5, a4, this[2], this[3]); + return 0; +} + +//----- (00448470) -------------------------------------------------------- +int __fastcall std::__codecvt_utf8_utf16_base::do_max_length(int a1) +{ + return (*(_DWORD *)(a1 + 16) & 4) == 0 ? 4 : 7; +} + +//----- (00448490) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_in( + int this, + int a2, + unsigned __int8 *a3, + unsigned __int8 *a4, + unsigned __int8 **a5, + char *a6, + char *a7, + char **a8) +{ + unsigned int v8; // edi + unsigned __int8 *v9; // ebp + unsigned __int8 *v10; // eax + unsigned int v12; // eax + int result; // eax + unsigned __int8 *v14; // [esp+8h] [ebp-18h] BYREF + unsigned __int8 *v15; // [esp+Ch] [ebp-14h] + + v8 = *(_DWORD *)(this + 12); + v9 = a3; + v10 = a4; + v14 = a3; + v15 = a4; + if ( (*(_BYTE *)(this + 16) & 4) != 0 ) + { + std::`anonymous namespace'::read_bom((int *)&v14); + v10 = v15; + v9 = v14; + } + if ( v9 == v10 ) + { +LABEL_14: + result = 0; + } + else + { + while ( 1 ) + { + if ( a7 == a6 ) + { + v9 = v14; + result = 0; + goto LABEL_12; + } + v12 = std::`anonymous namespace'::read_utf8_code_point(&v14, v8); + if ( v12 == -2 ) + { + v9 = v14; + result = 1; + goto LABEL_12; + } + if ( v8 < v12 ) + break; + if ( v12 <= 0xFFFF ) + { + *(_WORD *)a6 = v12; + v9 = v14; + a6 += 2; + if ( v14 == v15 ) + goto LABEL_14; + } + else + { + if ( a7 - a6 == 2 ) + { + result = 1; + goto LABEL_12; + } + v9 = v14; + a6 += 4; + *((_WORD *)a6 - 1) = (v12 & 0x3FF) - 9216; + *((_WORD *)a6 - 2) = (v12 >> 10) - 10304; + if ( v9 == v15 ) + goto LABEL_14; + } + } + v9 = v14; + result = 2; + } +LABEL_12: + *a5 = v9; + *a8 = a6; + return result; +} + +//----- (004485B0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_out( + int this, + int a2, + unsigned __int16 *a3, + unsigned __int16 *a4, + unsigned __int16 **a5, + _BYTE *a6, + _BYTE *a7, + _BYTE **a8) +{ + unsigned int v8; // edi + unsigned __int16 *v9; // ebx + unsigned int v10; // eax + int v11; // eax + int v12; // ebp + unsigned int v13; // edx + int result; // eax + _BYTE *v15[6]; // [esp+8h] [ebp-18h] BYREF + + v8 = *(_DWORD *)(this + 12); + v9 = a3; + v15[0] = a6; + v15[1] = a7; + if ( (*(_BYTE *)(this + 16) & 2) != 0 + && !(unsigned __int8)std::`anonymous namespace'::write_utf8_bom((int *)v15) ) + { +LABEL_14: + result = 1; + goto LABEL_15; + } + v10 = a4 - a3; + if ( a3 == a4 ) + { +LABEL_16: + result = 0; + goto LABEL_15; + } + while ( 1 ) + { + v13 = *v9; + if ( v13 - 55296 <= 0x3FF ) + break; + if ( v13 - 56320 <= 0x3FF ) + goto LABEL_13; + v12 = 1; + if ( v8 < v13 ) + goto LABEL_13; +LABEL_8: + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v15, v13) ) + goto LABEL_14; + v9 += v12; + v10 = a4 - v9; + if ( a4 == v9 ) + goto LABEL_16; + } + if ( v10 <= 1 ) + goto LABEL_16; + v11 = v9[1]; + if ( (unsigned int)(v11 - 56320) <= 0x3FF ) + { + v12 = 2; + v13 = v11 + (v13 << 10) - 56613888; + if ( v8 >= v13 ) + goto LABEL_8; + } +LABEL_13: + result = 2; +LABEL_15: + *a5 = v9; + *a8 = v15[0]; + return result; +} + +//----- (004486B0) -------------------------------------------------------- +int __thiscall std::__codecvt_utf8_utf16_base::do_length( + unsigned int *this, + int a2, + int a3, + unsigned __int8 *a4, + unsigned int a5) +{ + std::`anonymous namespace'::utf16_span(a5, a4, this[3], this[4]); + return 0; +} + +//----- (004486E0) -------------------------------------------------------- +_DWORD *__thiscall std::_V2::error_category::_M_message[abi:cxx11](_DWORD *this, int a2, int a3) +{ + unsigned int v5; // [esp+8h] [ebp-30h] + std::__cow_string *v6[2]; // [esp+18h] [ebp-20h] BYREF + char v7; // [esp+20h] [ebp-18h] BYREF + + (*(void (__thiscall **)(std::__cow_string **, int, int))(*(_DWORD *)a2 + 16))(v6, a2, a3); + std::__cow_string::__cow_string(this, v6[0], (const char *)v6[1], v5); + if ( (char *)v6[0] != &v7 ) + operator delete(v6[0]); + return this; +} +// 448710: variable 'v5' is possibly undefined + +//----- (00448740) -------------------------------------------------------- +void **__thiscall std::_V2::error_category::_M_message(void **ecx0, std::_V2::error_category *this, int a3) +{ + void *v4; // ecx + int v6; // edx + unsigned int v7; // [esp+8h] [ebp-20h] + char v8[13]; // [esp+1Bh] [ebp-Dh] BYREF + + (*(void (__thiscall **)(char *, std::_V2::error_category *, int))(*(_DWORD *)this + 12))(&v8[1], this, a3); + std::__sso_string::__sso_string(ecx0, *(std::__sso_string **)&v8[1], *(const char **)(*(_DWORD *)&v8[1] - 12), v7); + v4 = (void *)(*(_DWORD *)&v8[1] - 12); + if ( *(_UNKNOWN **)&v8[1] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v6 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v8[1] - 4), 0xFFFFFFFF); + } + else + { + v6 = *(_DWORD *)(*(_DWORD *)&v8[1] - 4); + *(_DWORD *)(*(_DWORD *)&v8[1] - 4) = v6 - 1; + } + if ( v6 <= 0 ) + std::string::_Rep::_M_destroy(v4, (int)v8); + } + return ecx0; +} +// 448771: variable 'v7' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004487E0) -------------------------------------------------------- +bool __userpurge std::_V2::error_category::equivalent@( + int a1@, + std::_V2::error_category *this, + const std::error_code *a3, + int a4) +{ + bool result; // al + + result = 0; + if ( *((_DWORD *)this + 1) == a1 ) + return *(_DWORD *)this == (_DWORD)a3; + return result; +} + +//----- (00448800) -------------------------------------------------------- +int __thiscall std::_V2::error_category::equivalent(void *this, int a2, _DWORD *a3) +{ + int v3; // eax + int v4; // edx + int v5; // ecx + int v6; // edx + + v3 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)this + 20))(this, a2); + v5 = v4; + v6 = 0; + if ( a3[1] == v5 ) + LOBYTE(v6) = *a3 == v3; + return v6; +} +// 448814: variable 'v4' is possibly undefined + +//----- (00448840) -------------------------------------------------------- +std::_V2::error_category *__stdcall std::_V2::error_category::default_error_condition( + std::_V2::error_category *this, + int a2) +{ + return this; +} + +//----- (00448850) -------------------------------------------------------- +char *__thiscall std::ctype::do_tolower(_DWORD *this, char *a2, char *a3) +{ + char *v3; // ebx + int (__thiscall *v5)(_DWORD *, int); // eax + int v7; // [esp+0h] [ebp-1Ch] + + v3 = a2; + if ( a2 < a3 ) + { + do + { + while ( 1 ) + { + v5 = *(int (__thiscall **)(_DWORD *, int))(*this + 16); + v7 = *v3; + if ( v5 != std::ctype::do_tolower ) + break; + *v3++ = std::ctype::do_tolower(this, v7); + if ( a3 == v3 ) + return a3; + } + *v3++ = v5(this, v7); + } + while ( a3 != v3 ); + } + return a3; +} + +//----- (004488B0) -------------------------------------------------------- +int __thiscall std::ctype::do_tolower(_DWORD *this, int a2) +{ + int v2; // edx + + v2 = a2 + 32; + if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 1) == 0 ) + return a2; + return v2; +} + +//----- (004488D0) -------------------------------------------------------- +char *__thiscall std::ctype::do_toupper(_DWORD *this, char *a2, char *a3) +{ + char *v3; // ebx + int (__thiscall *v5)(_DWORD *, int); // eax + int v7; // [esp+0h] [ebp-1Ch] + + v3 = a2; + if ( a2 < a3 ) + { + do + { + while ( 1 ) + { + v5 = *(int (__thiscall **)(_DWORD *, int))(*this + 8); + v7 = *v3; + if ( v5 != std::ctype::do_toupper ) + break; + *v3++ = std::ctype::do_toupper(this, v7); + if ( a3 == v3 ) + return a3; + } + *v3++ = v5(this, v7); + } + while ( a3 != v3 ); + } + return a3; +} + +//----- (00448930) -------------------------------------------------------- +int __thiscall std::ctype::do_toupper(_DWORD *this, int a2) +{ + int v2; // edx + + v2 = a2 - 32; + if ( (*(_BYTE *)(this[6] + 2 * (unsigned __int8)a2) & 2) == 0 ) + return a2; + return v2; +} + +//----- (00448950) -------------------------------------------------------- +int __fastcall std::ctype::_M_widen_init(int a1) +{ + int i; // eax + char *Buf2; // edx + void (__thiscall *v4)(int, _DWORD *, char *, int); // eax + int result; // eax + char *v6; // [esp+1Ch] [ebp-120h] + _DWORD Buf1[64]; // [esp+20h] [ebp-11Ch] BYREF + char v8[28]; // [esp+120h] [ebp-1Ch] BYREF + + for ( i = 0; i != 256; ++i ) + *((_BYTE *)Buf1 + i) = i; + Buf2 = (char *)(a1 + 29); + v4 = *(void (__thiscall **)(int, _DWORD *, char *, int))(*(_DWORD *)a1 + 28); + if ( (char *)v4 == (char *)std::ctype::do_widen ) + { + *(_DWORD *)(a1 + 29) = Buf1[0]; + *(_DWORD *)(a1 + 281) = Buf1[63]; + qmemcpy( + (void *)((a1 + 33) & 0xFFFFFFFC), + (const void *)((char *)Buf1 - &Buf2[-((a1 + 33) & 0xFFFFFFFC)]), + 4 * ((unsigned int)&Buf2[-((a1 + 33) & 0xFFFFFFFC) + 256] >> 2)); + } + else + { + v6 = (char *)(a1 + 29); + v4(a1, Buf1, v8, a1 + 29); + Buf2 = v6; + } + *(_BYTE *)(a1 + 28) = 1; + result = memcmp(Buf1, Buf2, 0x100u); + if ( result ) + *(_BYTE *)(a1 + 28) = 2; + return result; +} +// 448950: using guessed type char var_1C[28]; + +//----- (00448A00) -------------------------------------------------------- +int __fastcall std::ctype::_M_narrow_init(int a1) +{ + int i; // eax + char *Buf2; // edx + void (__thiscall *v4)(int, _DWORD *, char *, _DWORD, int); // eax + int result; // eax + int (__thiscall *v6)(int, _DWORD *, char *, int, char *); // eax + char *v7; // [esp+1Ch] [ebp-130h] + char v8; // [esp+2Fh] [ebp-11Dh] BYREF + _DWORD Buf1[64]; // [esp+30h] [ebp-11Ch] BYREF + char v10[28]; // [esp+130h] [ebp-1Ch] BYREF + + for ( i = 0; i != 256; ++i ) + *((_BYTE *)Buf1 + i) = i; + Buf2 = (char *)(a1 + 285); + v4 = *(void (__thiscall **)(int, _DWORD *, char *, _DWORD, int))(*(_DWORD *)a1 + 36); + if ( (char *)v4 == (char *)std::ctype::do_narrow ) + { + *(_DWORD *)(a1 + 285) = Buf1[0]; + *(_DWORD *)(a1 + 537) = Buf1[63]; + qmemcpy( + (void *)((a1 + 289) & 0xFFFFFFFC), + (const void *)((char *)Buf1 - &Buf2[-((a1 + 289) & 0xFFFFFFFC)]), + 4 * ((unsigned int)&Buf2[-((a1 + 289) & 0xFFFFFFFC) + 256] >> 2)); + } + else + { + v7 = (char *)(a1 + 285); + v4(a1, Buf1, v10, 0, a1 + 285); + Buf2 = v7; + } + *(_BYTE *)(a1 + 541) = 1; + result = memcmp(Buf1, Buf2, 0x100u); + if ( result + || ((v6 = *(int (__thiscall **)(int, _DWORD *, char *, int, char *))(*(_DWORD *)a1 + 36), + (char *)v6 != (char *)std::ctype::do_narrow) + ? (result = v6(a1, Buf1, (char *)Buf1 + 1, 1, &v8)) + : (result = LOBYTE(Buf1[0]), v8 = Buf1[0]), + v8 == 1) ) + { + *(_BYTE *)(a1 + 541) = 2; + } + return result; +} +// 448A00: using guessed type char var_1C[28]; + +//----- (00448B10) -------------------------------------------------------- +_BYTE *__thiscall std::ctype::widen(_BYTE *this, _BYTE *Src, _BYTE *a3, void *a4) +{ + char v4; // al + _BYTE *(__stdcall *v5)(_BYTE *, _BYTE *, void *); // eax + + v4 = this[28]; + if ( v4 == 1 ) + goto LABEL_4; + if ( v4 ) + { + v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); + if ( v5 == std::ctype::do_widen ) + goto LABEL_4; + return v5(Src, a3, a4); + } + std::ctype::_M_widen_init((int)this); + v5 = *(_BYTE *(__stdcall **)(_BYTE *, _BYTE *, void *))(*(_DWORD *)this + 28); + if ( v5 != std::ctype::do_widen ) + return v5(Src, a3, a4); +LABEL_4: + if ( Src == a3 ) + return Src; + memcpy(a4, Src, a3 - Src); + return a3; +} + +//----- (00448BA0) -------------------------------------------------------- +_BYTE *__stdcall std::ctype::do_widen(_BYTE *Src, _BYTE *a2, void *a3) +{ + if ( a2 != Src ) + memcpy(a3, Src, a2 - Src); + return a2; +} + +//----- (00448BE0) -------------------------------------------------------- +int __stdcall std::ctype::do_widen(unsigned __int8 a1) +{ + return a1; +} + +//----- (00448BF0) -------------------------------------------------------- +_BYTE *__stdcall std::ctype::do_narrow(_BYTE *Src, _BYTE *a2, int a3, void *a4) +{ + if ( a2 != Src ) + memcpy(a4, Src, a2 - Src); + return a2; +} + +//----- (00448C30) -------------------------------------------------------- +int __stdcall std::ctype::do_narrow(unsigned __int8 a1, int a2) +{ + return a1; +} + +//----- (00448C40) -------------------------------------------------------- +unsigned __int16 *__thiscall std::ctype::do_scan_is( + void *this, + unsigned __int16 a2, + unsigned __int16 *a3, + unsigned int a4) +{ + unsigned __int16 *i; // ebx + + for ( i = a3; a4 > (unsigned int)i; ++i ) + { + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, *i) ) + break; + } + return i; +} + +//----- (00448C90) -------------------------------------------------------- +unsigned int __stdcall std::ctype::do_tolower(wint_t *a1, unsigned int a2) +{ + wint_t *v2; // ebx + wint_t C; // ax + + v2 = a1; + if ( (unsigned int)a1 < a2 ) + { + do + { + C = *v2++; + *(v2 - 1) = towlower(C); + } + while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); + } + return a2; +} + +//----- (00448CE0) -------------------------------------------------------- +wint_t __stdcall std::ctype::do_tolower(wint_t C) +{ + return towlower(C); +} + +//----- (00448D00) -------------------------------------------------------- +unsigned int __stdcall std::ctype::do_toupper(wint_t *a1, unsigned int a2) +{ + wint_t *v2; // ebx + wint_t C; // ax + + v2 = a1; + if ( (unsigned int)a1 < a2 ) + { + do + { + C = *v2++; + *(v2 - 1) = towupper(C); + } + while ( v2 != &a1[((a2 - 1 - (unsigned int)a1) >> 1) + 1] ); + } + return a2; +} + +//----- (00448D50) -------------------------------------------------------- +wint_t __stdcall std::ctype::do_toupper(wint_t C) +{ + return towupper(C); +} + +//----- (00448D70) -------------------------------------------------------- +unsigned __int16 *__thiscall std::ctype::do_scan_not( + void *this, + unsigned __int16 a2, + unsigned __int16 *a3, + unsigned int a4) +{ + unsigned __int16 *i; // ebx + + for ( i = a3; a4 > (unsigned int)i; ++i ) + { + if ( !(*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, *i) ) + break; + } + return i; +} + +//----- (00448DC0) -------------------------------------------------------- +wctype_t __stdcall std::ctype::_M_convert_to_wmask(unsigned __int16 a1) +{ + wctype_t result; // ax + + if ( a1 > 0x40u ) + { + switch ( a1 ) + { + case 0x200u: + return wctype("punct"); + case 0x20Cu: + return wctype("graph"); + case 0x100u: + return wctype("cntrl"); + case 0x400u: + return wctype("blank"); + default: + return 0; + } + } + else + { + result = 0; + if ( a1 ) + { + switch ( a1 ) + { + case 1u: + result = wctype("upper"); + break; + case 2u: + result = wctype("lower"); + break; + case 4u: + result = wctype("alpha"); + break; + case 8u: + result = wctype("digit"); + break; + case 0xCu: + result = wctype("alnum"); + break; + case 0x10u: + result = wctype("xdigit"); + break; + case 0x20u: + result = wctype("space"); + break; + case 0x40u: + result = wctype("print"); + break; + default: + return 0; + } + } + } + return result; +} + +//----- (00448EE0) -------------------------------------------------------- +unsigned int __thiscall std::ctype::do_is(char *this, wint_t *a2, unsigned int a3, _WORD *a4) +{ + wint_t *v4; // ebx + _WORD *v5; // edi + _WORD *v6; // ebp + __int16 v7; // si + _WORD *v8; // eax + unsigned int v10; // [esp+18h] [ebp-24h] + _WORD *v11; // [esp+1Ch] [ebp-20h] + + v4 = a2; + if ( (unsigned int)a2 < a3 ) + { + v5 = this + 686; + v10 = (unsigned int)&a4[((a3 - 1 - (unsigned int)a2) >> 1) + 1]; + v11 = this + 654; + do + { + v6 = v11; + v7 = 0; + do + { + if ( iswctype(*v4, v6[16]) ) + v7 |= *v6; + ++v6; + } + while ( v6 != v5 ); + v8 = a4; + ++v4; + ++a4; + *v8 = v7; + } + while ( a4 != (_WORD *)v10 ); + } + return a3; +} + +//----- (00448F80) -------------------------------------------------------- +int __thiscall std::ctype::do_is(_WORD *this, unsigned __int16 a2, wint_t C) +{ + _WORD *v3; // esi + _WORD *v4; // ebx + + v3 = this + 343; + v4 = this + 327; + do + { + if ( (a2 & *v4) != 0 && iswctype(C, v4[16]) ) + return 1; + ++v4; + } + while ( v4 != v3 ); + return 0; +} + +//----- (00448FE0) -------------------------------------------------------- +unsigned __int8 *__thiscall std::ctype::do_widen( + _WORD *this, + unsigned __int8 *a2, + unsigned __int8 *a3, + int a4) +{ + unsigned __int8 *v4; // eax + int v6; // ebx + + v4 = a2; + if ( a2 < a3 ) + { + do + { + v6 = *v4++; + a4 += 2; + *(_WORD *)(a4 - 2) = this[v6 + 71]; + } + while ( a3 != v4 ); + } + return a3; +} + +//----- (00449020) -------------------------------------------------------- +int __thiscall std::ctype::do_widen(unsigned __int16 *this, unsigned __int8 a2) +{ + return this[a2 + 71]; +} + +//----- (00449030) -------------------------------------------------------- +unsigned int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t *a2, unsigned int a3, char a4, char *a5) +{ + wint_t *v5; // ebx + char *v6; // esi + unsigned int v8; // ebp + int v9; // ecx + int v10; // eax + char v11; // cl + int v13; // eax + char v14; // dl + + v5 = a2; + v6 = a5; + if ( this[12] ) + { + if ( (unsigned int)a2 < a3 ) + { + v8 = (unsigned int)&a2[((a3 - 1 - (unsigned int)a2) >> 1) + 1]; + do + { + while ( 1 ) + { + v9 = *v5; + if ( (unsigned __int16)v9 > 0x7Fu ) + break; + ++v5; + *v6++ = this[v9 + 13]; + if ( (wint_t *)v8 == v5 ) + return a3; + } + v10 = wctob(*v5); + v11 = a4; + if ( v10 != -1 ) + v11 = v10; + ++v5; + *v6++ = v11; + } + while ( (wint_t *)v8 != v5 ); + } + return a3; + } + if ( (unsigned int)a2 >= a3 ) + return a3; + do + { + v13 = wctob(*v5); + v14 = a4; + if ( v13 != -1 ) + v14 = v13; + *v6++ = v14; + ++v5; + } + while ( v6 != &a5[((a3 - 1 - (unsigned int)a2) >> 1) + 1] ); + return a3; +} + +//----- (00449110) -------------------------------------------------------- +int __thiscall std::ctype::do_narrow(_BYTE *this, wint_t WCh, int a3) +{ + int v3; // edx + int result; // eax + + if ( WCh <= 0x7Fu && this[12] ) + return (unsigned __int8)this[WCh + 13]; + v3 = wctob(WCh); + result = a3; + if ( v3 != -1 ) + return v3; + return result; +} + +//----- (00449160) -------------------------------------------------------- +int __fastcall std::locale::id::_M_id(int *a1) +{ + int v1; // eax + + v1 = *a1; + if ( !*a1 ) + { + if ( _CRT_MT ) + v1 = _InterlockedIncrement(&std::locale::id::_S_refcount); + else + v1 = ++std::locale::id::_S_refcount; + *a1 = v1; + } + return v1 - 1; +} +// 4E956C: using guessed type int std::locale::id::_S_refcount; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004491A0) -------------------------------------------------------- +int __thiscall std::locale::name[abi:cxx11](int this, int *a2) +{ + int v3; // eax + int v4; // edi + unsigned int v5; // esi + int v6; // eax + unsigned int v7; // eax + size_t v8; // esi + int v9; // eax + unsigned int v10; // edi + unsigned int v11; // edx + int v12; // eax + unsigned int v13; // eax + int i; // esi + size_t v15; // edi + int v16; // eax + unsigned int v17; // edx + unsigned int v18; // eax + size_t v19; // edi + int v20; // eax + unsigned int v21; // edx + unsigned int v22; // eax + size_t v24; // eax + const char *v25; // [esp+0h] [ebp-38h] + char *Str; // [esp+14h] [ebp-24h] + int v27; // [esp+18h] [ebp-20h] + char *Str1; // [esp+1Ch] [ebp-1Ch] + + *(_DWORD *)this = this + 8; + v27 = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = *a2; + *(_DWORD *)(this + 4) = 0; + v4 = *(_DWORD *)(v3 + 16); + Str = *(char **)v4; + if ( !*(_DWORD *)v4 ) + { + std::string::_M_replace_aux((_DWORD *)this, 0, 0, 1u, 42); + return this; + } + if ( !*(_DWORD *)(v4 + 4) ) + { +LABEL_26: + v24 = strlen(Str); + std::string::_M_replace((unsigned int *)this, 0, 0, Str, v24); + return this; + } + v5 = 0; + Str1 = *(char **)v4; + while ( 1 ) + { + ++v5; + v25 = Str1; + Str1 = *(char **)(v4 + 4 * v5); + v6 = strcmp(v25, Str1); + if ( v5 > 4 ) + break; + if ( v6 ) + goto LABEL_6; + } + if ( !v6 ) + goto LABEL_26; +LABEL_6: + std::string::reserve((_DWORD *)this, 0x80u); + v7 = strlen(*std::locale::_S_categories); + if ( v7 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, *std::locale::_S_categories, v7); + v8 = *(_DWORD *)(this + 4); + v9 = *(_DWORD *)this; + v10 = v8 + 1; + if ( v27 == *(_DWORD *)this ) + v11 = 15; + else + v11 = *(_DWORD *)(this + 8); + if ( v10 > v11 ) + { + std::string::_M_mutate(this, v8, 0, 0, 1u); + v9 = *(_DWORD *)this; + } + *(_BYTE *)(v9 + v8) = 61; + v12 = *(_DWORD *)this; + *(_DWORD *)(this + 4) = v10; + *(_BYTE *)(v12 + v8 + 1) = 0; + v13 = strlen(**(const char ***)(*a2 + 16)); + if ( v13 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, **(_BYTE ***)(*a2 + 16), v13); + for ( i = 1; i != 6; ++i ) + { + v15 = *(_DWORD *)(this + 4); + v16 = *(_DWORD *)this; + if ( v27 == *(_DWORD *)this ) + v17 = 15; + else + v17 = *(_DWORD *)(this + 8); + if ( v15 + 1 > v17 ) + { + std::string::_M_mutate(this, v15, 0, 0, 1u); + v16 = *(_DWORD *)this; + } + *(_BYTE *)(v16 + v15) = 59; + *(_DWORD *)(this + 4) = v15 + 1; + *(_BYTE *)(*(_DWORD *)this + v15 + 1) = 0; + v18 = strlen(std::locale::_S_categories[i]); + if ( v18 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, std::locale::_S_categories[i], v18); + v19 = *(_DWORD *)(this + 4); + v20 = *(_DWORD *)this; + if ( v27 == *(_DWORD *)this ) + v21 = 15; + else + v21 = *(_DWORD *)(this + 8); + if ( v19 + 1 > v21 ) + { + std::string::_M_mutate(this, v19, 0, 0, 1u); + v20 = *(_DWORD *)this; + } + *(_BYTE *)(v20 + v19) = 61; + *(_DWORD *)(this + 4) = v19 + 1; + *(_BYTE *)(*(_DWORD *)this + v19 + 1) = 0; + v22 = strlen(*(const char **)(*(_DWORD *)(*a2 + 16) + i * 4)); + if ( v22 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, *(_BYTE **)(*(_DWORD *)(*a2 + 16) + i * 4), v22); + } + return this; +} +// 4F0AF4: using guessed type char **std::locale::_S_categories; + +//----- (00449510) -------------------------------------------------------- +unsigned int **__thiscall std::locale::name(unsigned int **ecx0, std::locale *this) +{ + int v3; // edi + unsigned int v4; // esi + int v5; // eax + size_t v6; // eax + int v7; // edi + unsigned int *v8; // eax + size_t v9; // eax + int i; // esi + char *v11; // edx + unsigned int v12; // edi + unsigned int *v13; // eax + int v14; // edx + size_t v15; // eax + char *v16; // edx + unsigned int v17; // edi + unsigned int *v18; // eax + int v19; // edx + size_t v20; // eax + size_t v22; // eax + const char *v23; // [esp+0h] [ebp-48h] + unsigned int v24; // [esp+4h] [ebp-44h] + unsigned int v25; // [esp+4h] [ebp-44h] + unsigned int v26; // [esp+4h] [ebp-44h] + unsigned int v27; // [esp+4h] [ebp-44h] + unsigned int v28; // [esp+8h] [ebp-40h] + unsigned int v29; // [esp+8h] [ebp-40h] + unsigned int v30; // [esp+8h] [ebp-40h] + unsigned int v31; // [esp+8h] [ebp-40h] + char v32; // [esp+10h] [ebp-38h] + char *Str; // [esp+18h] [ebp-30h] + char *Str1; // [esp+1Ch] [ebp-2Ch] + char *Str1a; // [esp+1Ch] [ebp-2Ch] + char *Str1b; // [esp+1Ch] [ebp-2Ch] + + *ecx0 = (unsigned int *)&unk_4E93FC; + v3 = *(_DWORD *)(*(_DWORD *)this + 16); + Str = *(char **)v3; + if ( *(_DWORD *)v3 ) + { + if ( *(_DWORD *)(v3 + 4) ) + { + v4 = 0; + Str1 = *(char **)v3; + while ( 1 ) + { + ++v4; + v23 = Str1; + Str1 = *(char **)(v3 + 4 * v4); + v5 = strcmp(v23, Str1); + if ( v4 > 4 ) + break; + if ( v5 ) + goto LABEL_6; + } + if ( !v5 ) + goto LABEL_25; +LABEL_6: + std::string::reserve(ecx0, (std::string *)0x80, v24); + v6 = strlen(*std::locale::_S_categories); + std::string::append(ecx0, (std::string *)*std::locale::_S_categories, v6, v28); + v7 = *(*ecx0 - 3); + if ( v7 + 1 > *(*ecx0 - 2) || (int)*(*ecx0 - 1) > 0 ) + std::string::reserve(ecx0, (std::string *)(v7 + 1), v25); + *((_BYTE *)*ecx0 + *(*ecx0 - 3)) = 61; + v8 = *ecx0; + if ( *ecx0 != (unsigned int *)&unk_4E93FC ) + { + *(v8 - 1) = 0; + *(v8 - 3) = v7 + 1; + *((_BYTE *)v8 + v7 + 1) = 0; + } + v9 = strlen(**(const char ***)(*(_DWORD *)this + 16)); + std::string::append(ecx0, **(std::string ***)(*(_DWORD *)this + 16), v9, v29); + for ( i = 1; i != 6; ++i ) + { + v11 = (char *)*(*ecx0 - 3); + Str1a = v11; + v12 = (unsigned int)(v11 + 1); + if ( (unsigned int)(v11 + 1) > *(*ecx0 - 2) || (int)*(*ecx0 - 1) > 0 ) + std::string::reserve(ecx0, (std::string *)(v11 + 1), v26); + *((_BYTE *)*ecx0 + *(*ecx0 - 3)) = 59; + v13 = *ecx0; + v14 = (int)(*ecx0 - 3); + if ( *ecx0 != (unsigned int *)&unk_4E93FC ) + { + *(v13 - 1) = 0; + *(v13 - 3) = v12; + Str1a[v14 + 13] = 0; + } + v15 = strlen(std::locale::_S_categories[i]); + std::string::append(ecx0, (std::string *)std::locale::_S_categories[i], v15, v30); + v16 = (char *)*(*ecx0 - 3); + Str1b = v16; + v17 = (unsigned int)(v16 + 1); + if ( (unsigned int)(v16 + 1) > *(*ecx0 - 2) || (int)*(*ecx0 - 1) > 0 ) + std::string::reserve(ecx0, (std::string *)(v16 + 1), v27); + *((_BYTE *)*ecx0 + *(*ecx0 - 3)) = 61; + v18 = *ecx0; + v19 = (int)(*ecx0 - 3); + if ( *ecx0 != (unsigned int *)&unk_4E93FC ) + { + *(v18 - 1) = 0; + *(v18 - 3) = v17; + Str1b[v19 + 13] = 0; + } + v20 = strlen(*(const char **)(*(_DWORD *)(*(_DWORD *)this + 16) + i * 4)); + std::string::append(ecx0, *(std::string **)(*(_DWORD *)(*(_DWORD *)this + 16) + i * 4), v20, v31); + } + return ecx0; + } + else + { +LABEL_25: + v22 = strlen(Str); + std::string::assign((volatile signed __int32 **)ecx0, (std::string *)Str, v22, v28); + return ecx0; + } + } + else + { + std::string::_M_replace_aux( + (volatile signed __int32 **)ecx0, + 0, + std::string::_Rep::_S_empty_rep_storage, + 1u, + 42, + v32); + return ecx0; + } +} +// 44957E: variable 'v24' is possibly undefined +// 44959E: variable 'v28' is possibly undefined +// 4495BF: variable 'v25' is possibly undefined +// 4495F8: variable 'v29' is possibly undefined +// 449621: variable 'v26' is possibly undefined +// 44965B: variable 'v30' is possibly undefined +// 44967F: variable 'v27' is possibly undefined +// 4496BC: variable 'v31' is possibly undefined +// 449770: variable 'v32' is possibly undefined +// 4F0AF4: using guessed type char **std::locale::_S_categories; + +//----- (004497B0) -------------------------------------------------------- +_DWORD *__userpurge std::locale::facet::_M_cow_shim@( + volatile signed __int32 *a1@, + std::locale::facet *this, + const std::locale::id *a3) +{ + void *v4; // eax + _DWORD *v5; // esi + int v7; // eax + _WORD *v8; // eax + int v9; // edi + _DWORD *v10; // eax + int v11; // ecx + _DWORD *v12; // eax + _DWORD *v13; // eax + int v14; // eax + _DWORD *v15; // eax + int c_locale; // eax + int v17; // edx + _DWORD *v18; // eax + _DWORD *v19; // eax + _DWORD *v20; // eax + int v21; // edi + _DWORD *v22; // eax + int v23; // eax + _WORD *v24; // eax + int v25; // edi + _DWORD *v26; // eax + int v27; // edx + int v28; // eax + _DWORD *v29; // eax + int v30; // edi + _DWORD *v31; // eax + int v32; // eax + _DWORD *v33; // eax + _DWORD *v34; // eax + _DWORD *v35; // eax + int v36; // edi + _DWORD *v37; // eax + int v38; // edi + _DWORD *v39; // eax + int v40; // ecx + _DWORD *v41; // eax + int v42; // edi + _DWORD *v43; // eax + int v44; // edx + int v45; // [esp+0h] [ebp-28h] + int v46; // [esp+0h] [ebp-28h] + int v47; // [esp+0h] [ebp-28h] + int v48; // [esp+0h] [ebp-28h] + int v49; // [esp+0h] [ebp-28h] + int v50; // [esp+0h] [ebp-28h] + void (__cdecl *v51)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v52)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v53)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v54)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v55)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v56)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v57)(void *); // [esp+4h] [ebp-24h] + + v4 = __dynamic_cast( + (const void *)a1, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, + -2); + if ( v4 ) + return *(_DWORD **)v4; + if ( this == (std::locale::facet *)&std::numpunct::id ) + { + v8 = operator new((struct type_info *)0x68, v51); + v8[18] = 0; + v9 = (int)v8; + *((_DWORD *)v8 + 1) = 0; + *(_DWORD *)v8 = &off_4F65A0; + *((_DWORD *)v8 + 2) = 0; + *((_DWORD *)v8 + 3) = 0; + *((_BYTE *)v8 + 16) = 0; + *((_DWORD *)v8 + 5) = 0; + *((_DWORD *)v8 + 6) = 0; + *((_DWORD *)v8 + 7) = 0; + *((_DWORD *)v8 + 8) = 0; + *((_BYTE *)v8 + 100) = 0; + v10 = operator new((struct type_info *)0x14, v52); + v10[1] = 0; + v5 = v10; + *v10 = &off_4F6D3C; + v10[2] = v9; + std::numpunct::_M_initialize_numpunct(v10, 0); + v11 = _CRT_MT; + v5[3] = a1; + if ( v11 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5440; + v5[4] = v9; + LOBYTE(v45) = 0; + std::__facet_shims::__numpunct_fill_cache(v45, (int *)a1, v9); + } + else if ( this == (std::locale::facet *)&std::collate::id ) + { + v15 = operator new((struct type_info *)0x10, v51); + v15[1] = 0; + v5 = v15; + *v15 = &off_4F6BD0; + c_locale = std::locale::facet::_S_get_c_locale(); + v17 = _CRT_MT; + v5[2] = c_locale; + v5[3] = a1; + if ( v17 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5360; + } + else if ( this == (std::locale::facet *)&std::time_get>::id ) + { + v12 = operator new((struct type_info *)0xC, v51); + v12[1] = 0; + v5 = v12; + *v12 = &off_4F6D84; + v12[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v12 = &off_4F54D0; + } + else if ( this == (std::locale::facet *)&std::money_get>::id ) + { + v18 = operator new((struct type_info *)0xC, v51); + v18[1] = 0; + v5 = v18; + *v18 = &off_4F6E44; + v18[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v18 = &off_4F5578; + } + else if ( this == (std::locale::facet *)&std::money_put>::id ) + { + v19 = operator new((struct type_info *)0xC, v51); + v19[1] = 0; + v5 = v19; + *v19 = &off_4F6E74; + v19[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v19 = &off_4F55D8; + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v20 = operator new((struct type_info *)0x44, v51); + *v20 = &off_4F66D4; + v21 = (int)v20; + v20[1] = 0; + v20[2] = 0; + v20[3] = 0; + *((_WORD *)v20 + 8) = 0; + *((_BYTE *)v20 + 18) = 0; + v20[5] = 0; + v20[6] = 0; + v20[7] = 0; + v20[8] = 0; + v20[9] = 0; + v20[10] = 0; + v20[11] = 0; + v20[12] = 0; + v20[13] = 0; + *((_BYTE *)v20 + 67) = 0; + v22 = operator new((struct type_info *)0x14, v53); + v22[1] = 0; + v5 = v22; + *v22 = &off_4F5EC4; + v22[2] = v21; + std::moneypunct::_M_initialize_moneypunct(v22, 0, 0); + v23 = _CRT_MT; + v5[3] = a1; + if ( v23 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F56A0; + v5[4] = v21; + LOBYTE(v46) = 0; + std::__facet_shims::__moneypunct_fill_cache(v46, (int *)a1, v21); + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v24 = operator new((struct type_info *)0x44, v51); + v24[8] = 0; + v25 = (int)v24; + *(_DWORD *)v24 = &off_4F66C4; + *((_DWORD *)v24 + 1) = 0; + *((_DWORD *)v24 + 2) = 0; + *((_DWORD *)v24 + 3) = 0; + *((_BYTE *)v24 + 18) = 0; + *((_DWORD *)v24 + 5) = 0; + *((_DWORD *)v24 + 6) = 0; + *((_DWORD *)v24 + 7) = 0; + *((_DWORD *)v24 + 8) = 0; + *((_DWORD *)v24 + 9) = 0; + *((_DWORD *)v24 + 10) = 0; + *((_DWORD *)v24 + 11) = 0; + *((_DWORD *)v24 + 12) = 0; + *((_DWORD *)v24 + 13) = 0; + *((_BYTE *)v24 + 67) = 0; + v26 = operator new((struct type_info *)0x14, v54); + v26[1] = 0; + v5 = v26; + *v26 = &off_4F5E90; + v26[2] = v25; + std::moneypunct::_M_initialize_moneypunct(v26, 0, 0); + v27 = _CRT_MT; + v5[3] = a1; + if ( v27 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5638; + v5[4] = v25; + LOBYTE(v47) = 0; + std::__facet_shims::__moneypunct_fill_cache(v47, (int *)a1, v25); + } + else if ( this == (std::locale::facet *)&std::messages::id ) + { + v5 = operator new((struct type_info *)0x14, v51); + std::messages::messages(v5, 0); + v28 = _CRT_MT; + v5[4] = a1; + if ( v28 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F53D0; + } + else if ( this == (std::locale::facet *)&std::numpunct::id ) + { + v29 = operator new((struct type_info *)0xA8, v51); + v29[1] = 0; + v30 = (int)v29; + *v29 = &off_4F65B0; + v29[2] = 0; + v29[3] = 0; + *((_BYTE *)v29 + 16) = 0; + v29[5] = 0; + v29[6] = 0; + v29[7] = 0; + v29[8] = 0; + v29[9] = 0; + *((_BYTE *)v29 + 164) = 0; + v31 = operator new((struct type_info *)0x14, v55); + v31[1] = 0; + v5 = v31; + *v31 = &off_4F6D60; + v31[2] = v30; + std::numpunct::_M_initialize_numpunct(v31, 0); + v32 = _CRT_MT; + v5[3] = a1; + if ( v32 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5488; + v5[4] = v30; + LOBYTE(v48) = 0; + std::__facet_shims::__numpunct_fill_cache(v48, (int *)a1, v30); + } + else if ( this == (std::locale::facet *)&std::collate::id ) + { + v13 = operator new((struct type_info *)0x10, v51); + v13[1] = 0; + v5 = v13; + *v13 = &off_4F6BEC; + v13[2] = std::locale::facet::_S_get_c_locale(); + v14 = _CRT_MT; + v5[3] = a1; + if ( v14 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5398; + } + else if ( this == (std::locale::facet *)&std::time_get>::id ) + { + v33 = operator new((struct type_info *)0xC, v51); + v33[1] = 0; + v5 = v33; + *v33 = &off_4F6DAC; + v33[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v33 = &off_4F5524; + } + else if ( this == (std::locale::facet *)&std::money_get>::id ) + { + v34 = operator new((struct type_info *)0xC, v51); + v34[1] = 0; + v5 = v34; + *v34 = &off_4F6E5C; + v34[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v34 = &off_4F55A8; + } + else if ( this == (std::locale::facet *)std::money_put>::id ) + { + v35 = operator new((struct type_info *)0xC, v51); + v36 = _CRT_MT; + v35[1] = 0; + v5 = v35; + *v35 = &off_4F6E8C; + v35[2] = a1; + if ( v36 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v35 = &off_4F5608; + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v37 = operator new((struct type_info *)0x54, v51); + v37[1] = 0; + v38 = (int)v37; + *v37 = &off_4F66F4; + v37[2] = 0; + v37[3] = 0; + *((_BYTE *)v37 + 16) = 0; + *(_DWORD *)((char *)v37 + 18) = 0; + v37[6] = 0; + v37[7] = 0; + v37[8] = 0; + v37[9] = 0; + v37[10] = 0; + v37[11] = 0; + v37[12] = 0; + v37[13] = 0; + v37[14] = 0; + *((_BYTE *)v37 + 82) = 0; + v39 = operator new((struct type_info *)0x14, v56); + v39[1] = 0; + v5 = v39; + *v39 = &off_4F5F2C; + v39[2] = v38; + std::moneypunct::_M_initialize_moneypunct(v39, 0, 0); + v40 = _CRT_MT; + v5[3] = a1; + if ( v40 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5770; + v5[4] = v38; + LOBYTE(v49) = 0; + std::__facet_shims::__moneypunct_fill_cache(v49, (int *)a1, v38); + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v41 = operator new((struct type_info *)0x54, v51); + v41[1] = 0; + v42 = (int)v41; + *v41 = &off_4F66E4; + v41[2] = 0; + v41[3] = 0; + *((_BYTE *)v41 + 16) = 0; + *(_DWORD *)((char *)v41 + 18) = 0; + v41[6] = 0; + v41[7] = 0; + v41[8] = 0; + v41[9] = 0; + v41[10] = 0; + v41[11] = 0; + v41[12] = 0; + v41[13] = 0; + v41[14] = 0; + *((_BYTE *)v41 + 82) = 0; + v43 = operator new((struct type_info *)0x14, v57); + v43[1] = 0; + v5 = v43; + *v43 = &off_4F5EF8; + v43[2] = v42; + std::moneypunct::_M_initialize_moneypunct(v43, 0, 0); + v44 = _CRT_MT; + v5[3] = a1; + if ( v44 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5708; + v5[4] = v42; + LOBYTE(v50) = 0; + std::__facet_shims::__moneypunct_fill_cache(v50, (int *)a1, v42); + } + else + { + if ( this != (std::locale::facet *)&std::messages::id ) + std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); + v5 = operator new((struct type_info *)0x14, v51); + std::messages::messages(v5, 0); + v7 = _CRT_MT; + v5[4] = a1; + if ( v7 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5408; + } + return v5; +} +// 4498B7: variable 'v51' is possibly undefined +// 44994A: variable 'v52' is possibly undefined +// 449998: variable 'v45' is possibly undefined +// 449B7D: variable 'v53' is possibly undefined +// 449BD6: variable 'v46' is possibly undefined +// 449C5D: variable 'v54' is possibly undefined +// 449CB7: variable 'v47' is possibly undefined +// 449D8E: variable 'v55' is possibly undefined +// 449DDF: variable 'v48' is possibly undefined +// 449F52: variable 'v56' is possibly undefined +// 449FAC: variable 'v49' is possibly undefined +// 44A03E: variable 'v57' is possibly undefined +// 44A094: variable 'v50' is possibly undefined +// 4E940C: using guessed type int std::moneypunct::id; +// 4E9410: using guessed type int std::moneypunct::id; +// 4E9414: using guessed type int std::moneypunct::id; +// 4E9418: using guessed type int std::moneypunct::id; +// 4E95E0: using guessed type int std::collate::id; +// 4E95E4: using guessed type int std::collate::id; +// 4E9600: using guessed type int std::messages::id; +// 4E9604: using guessed type int std::messages::id; +// 4E9608: using guessed type int std::numpunct::id; +// 4E960C: using guessed type int std::numpunct::id; +// 4E9610: using guessed type int std::time_get>::id; +// 4E9614: using guessed type int std::time_get>::id; +// 4E9620: using guessed type int std::money_get>::id; +// 4E9624: using guessed type int std::money_get>::id; +// 4E9628: using guessed type int std::money_put>::id; +// 4E962C: using guessed type int std::money_put>::id[5]; +// 4F1728: using guessed type int *`typeinfo for'std::locale::facet::__shim; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F5360: using guessed type int (*off_4F5360)(); +// 4F5398: using guessed type int (*off_4F5398)(); +// 4F53D0: using guessed type int (*off_4F53D0)(); +// 4F5408: using guessed type int (*off_4F5408)(); +// 4F5440: using guessed type int (*off_4F5440)(); +// 4F5488: using guessed type int (*off_4F5488)(); +// 4F54D0: using guessed type int (*off_4F54D0)(); +// 4F5524: using guessed type int (*off_4F5524)(); +// 4F5578: using guessed type int (*off_4F5578)(); +// 4F55A8: using guessed type int (*off_4F55A8)(); +// 4F55D8: using guessed type int (*off_4F55D8)(); +// 4F5608: using guessed type int (*off_4F5608)(); +// 4F5638: using guessed type int (*off_4F5638)(); +// 4F56A0: using guessed type int (*off_4F56A0)(); +// 4F5708: using guessed type int (*off_4F5708)(); +// 4F5770: using guessed type int (*off_4F5770)(); +// 4F5E90: using guessed type int (*off_4F5E90)(); +// 4F5EC4: using guessed type int (*off_4F5EC4)(); +// 4F5EF8: using guessed type int (*off_4F5EF8)(); +// 4F5F2C: using guessed type int (*off_4F5F2C)(); +// 4F65A0: using guessed type int (*off_4F65A0)(); +// 4F65B0: using guessed type int (*off_4F65B0)(); +// 4F66C4: using guessed type int (*off_4F66C4)(); +// 4F66D4: using guessed type int (*off_4F66D4)(); +// 4F66E4: using guessed type int (*off_4F66E4)(); +// 4F66F4: using guessed type int (*off_4F66F4)(); +// 4F6BD0: using guessed type int (*off_4F6BD0)(); +// 4F6BEC: using guessed type int (*off_4F6BEC)(); +// 4F6D3C: using guessed type int (*off_4F6D3C)(); +// 4F6D60: using guessed type int (*off_4F6D60)(); +// 4F6D84: using guessed type int (*off_4F6D84)(); +// 4F6DAC: using guessed type int (*off_4F6DAC)(); +// 4F6E44: using guessed type int (*off_4F6E44)(); +// 4F6E5C: using guessed type int (*off_4F6E5C)(); +// 4F6E74: using guessed type int (*off_4F6E74)(); +// 4F6E8C: using guessed type int (*off_4F6E8C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (0044A160) -------------------------------------------------------- +_DWORD *__userpurge std::locale::facet::_M_sso_shim@( + volatile signed __int32 *a1@, + std::locale::facet *this, + const std::locale::id *a3) +{ + void *v4; // eax + _DWORD *v5; // esi + int v7; // eax + _WORD *v8; // eax + int v9; // edi + _DWORD *v10; // eax + int v11; // ecx + _DWORD *v12; // eax + _DWORD *v13; // eax + int v14; // eax + _DWORD *v15; // eax + int c_locale; // eax + int v17; // edx + _DWORD *v18; // eax + _DWORD *v19; // eax + _DWORD *v20; // eax + int v21; // edi + _DWORD *v22; // eax + int v23; // eax + _WORD *v24; // eax + int v25; // edi + _DWORD *v26; // eax + int v27; // edx + int v28; // eax + _DWORD *v29; // eax + int v30; // edi + _DWORD *v31; // eax + int v32; // eax + _DWORD *v33; // eax + _DWORD *v34; // eax + _DWORD *v35; // eax + int v36; // edi + _DWORD *v37; // eax + int v38; // edi + _DWORD *v39; // eax + int v40; // ecx + _DWORD *v41; // eax + int v42; // edi + _DWORD *v43; // eax + int v44; // edx + int v45; // [esp+0h] [ebp-28h] + int v46; // [esp+0h] [ebp-28h] + int v47; // [esp+0h] [ebp-28h] + int v48; // [esp+0h] [ebp-28h] + int v49; // [esp+0h] [ebp-28h] + int v50; // [esp+0h] [ebp-28h] + void (__cdecl *v51)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v52)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v53)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v54)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v55)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v56)(void *); // [esp+4h] [ebp-24h] + void (__cdecl *v57)(void *); // [esp+4h] [ebp-24h] + + v4 = __dynamic_cast( + (const void *)a1, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet::__shim, + -2); + if ( v4 ) + return *(_DWORD **)v4; + if ( this == (std::locale::facet *)&std::numpunct::id ) + { + v8 = operator new((struct type_info *)0x68, v51); + v8[18] = 0; + v9 = (int)v8; + *((_DWORD *)v8 + 1) = 0; + *(_DWORD *)v8 = &off_4F65A0; + *((_DWORD *)v8 + 2) = 0; + *((_DWORD *)v8 + 3) = 0; + *((_BYTE *)v8 + 16) = 0; + *((_DWORD *)v8 + 5) = 0; + *((_DWORD *)v8 + 6) = 0; + *((_DWORD *)v8 + 7) = 0; + *((_DWORD *)v8 + 8) = 0; + *((_BYTE *)v8 + 100) = 0; + v10 = operator new((struct type_info *)0x14, v52); + v10[1] = 0; + v5 = v10; + *v10 = &off_4F5CC8; + v10[2] = v9; + std::numpunct::_M_initialize_numpunct(v10, 0); + v11 = _CRT_MT; + v5[3] = a1; + if ( v11 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5464; + v5[4] = v9; + LOBYTE(v45) = 0; + std::__facet_shims::__numpunct_fill_cache(v45, (int *)a1, v9); + } + else if ( this == (std::locale::facet *)&std::collate::id ) + { + v15 = operator new((struct type_info *)0x10, v51); + v15[1] = 0; + v5 = v15; + *v15 = &off_4F5C58; + c_locale = std::locale::facet::_S_get_c_locale(); + v17 = _CRT_MT; + v5[2] = c_locale; + v5[3] = a1; + if ( v17 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F537C; + } + else if ( this == (std::locale::facet *)&std::time_get>::id ) + { + v12 = operator new((struct type_info *)0xC, v51); + v12[1] = 0; + v5 = v12; + *v12 = &off_4F5D10; + v12[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v12 = &off_4F54F8; + } + else if ( this == (std::locale::facet *)&std::money_get>::id ) + { + v18 = operator new((struct type_info *)0xC, v51); + v18[1] = 0; + v5 = v18; + *v18 = &off_4F5D68; + v18[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v18 = &off_4F5590; + } + else if ( this == (std::locale::facet *)&std::money_put>::id ) + { + v19 = operator new((struct type_info *)0xC, v51); + v19[1] = 0; + v5 = v19; + *v19 = &off_4F5D98; + v19[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v19 = &off_4F55F0; + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v20 = operator new((struct type_info *)0x44, v51); + *v20 = &off_4F66D4; + v21 = (int)v20; + v20[1] = 0; + v20[2] = 0; + v20[3] = 0; + *((_WORD *)v20 + 8) = 0; + *((_BYTE *)v20 + 18) = 0; + v20[5] = 0; + v20[6] = 0; + v20[7] = 0; + v20[8] = 0; + v20[9] = 0; + v20[10] = 0; + v20[11] = 0; + v20[12] = 0; + v20[13] = 0; + *((_BYTE *)v20 + 67) = 0; + v22 = operator new((struct type_info *)0x14, v53); + v22[1] = 0; + v5 = v22; + *v22 = &off_4F5844; + v22[2] = v21; + std::moneypunct::_M_initialize_moneypunct(v22, 0, 0); + v23 = _CRT_MT; + v5[3] = a1; + if ( v23 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F56D4; + v5[4] = v21; + LOBYTE(v46) = 0; + std::__facet_shims::__moneypunct_fill_cache(v46, (int *)a1, v21); + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v24 = operator new((struct type_info *)0x44, v51); + v24[8] = 0; + v25 = (int)v24; + *(_DWORD *)v24 = &off_4F66C4; + *((_DWORD *)v24 + 1) = 0; + *((_DWORD *)v24 + 2) = 0; + *((_DWORD *)v24 + 3) = 0; + *((_BYTE *)v24 + 18) = 0; + *((_DWORD *)v24 + 5) = 0; + *((_DWORD *)v24 + 6) = 0; + *((_DWORD *)v24 + 7) = 0; + *((_DWORD *)v24 + 8) = 0; + *((_DWORD *)v24 + 9) = 0; + *((_DWORD *)v24 + 10) = 0; + *((_DWORD *)v24 + 11) = 0; + *((_DWORD *)v24 + 12) = 0; + *((_DWORD *)v24 + 13) = 0; + *((_BYTE *)v24 + 67) = 0; + v26 = operator new((struct type_info *)0x14, v54); + v26[1] = 0; + v5 = v26; + *v26 = &off_4F5810; + v26[2] = v25; + std::moneypunct::_M_initialize_moneypunct(v26, 0, 0); + v27 = _CRT_MT; + v5[3] = a1; + if ( v27 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F566C; + v5[4] = v25; + LOBYTE(v47) = 0; + std::__facet_shims::__moneypunct_fill_cache(v47, (int *)a1, v25); + } + else if ( this == (std::locale::facet *)&std::messages::id ) + { + v5 = operator new((struct type_info *)0x14, v51); + std::messages::messages(v5, 0); + v28 = _CRT_MT; + v5[4] = a1; + if ( v28 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F53EC; + } + else if ( this == (std::locale::facet *)&std::numpunct::id ) + { + v29 = operator new((struct type_info *)0xA8, v51); + v29[1] = 0; + v30 = (int)v29; + *v29 = &off_4F65B0; + v29[2] = 0; + v29[3] = 0; + *((_BYTE *)v29 + 16) = 0; + v29[5] = 0; + v29[6] = 0; + v29[7] = 0; + v29[8] = 0; + v29[9] = 0; + *((_BYTE *)v29 + 164) = 0; + v31 = operator new((struct type_info *)0x14, v55); + v31[1] = 0; + v5 = v31; + *v31 = &off_4F5CEC; + v31[2] = v30; + std::numpunct::_M_initialize_numpunct(v31, 0); + v32 = _CRT_MT; + v5[3] = a1; + if ( v32 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F54AC; + v5[4] = v30; + LOBYTE(v48) = 0; + std::__facet_shims::__numpunct_fill_cache(v48, (int *)a1, v30); + } + else if ( this == (std::locale::facet *)&std::collate::id ) + { + v13 = operator new((struct type_info *)0x10, v51); + v13[1] = 0; + v5 = v13; + *v13 = &off_4F5C74; + v13[2] = std::locale::facet::_S_get_c_locale(); + v14 = _CRT_MT; + v5[3] = a1; + if ( v14 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F53B4; + } + else if ( this == (std::locale::facet *)&std::time_get>::id ) + { + v33 = operator new((struct type_info *)0xC, v51); + v33[1] = 0; + v5 = v33; + *v33 = &off_4F5D3C; + v33[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v33 = &off_4F554C; + } + else if ( this == (std::locale::facet *)&std::money_get>::id ) + { + v34 = operator new((struct type_info *)0xC, v51); + v34[1] = 0; + v5 = v34; + *v34 = &off_4F5D80; + v34[2] = a1; + if ( _CRT_MT ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v34 = &off_4F55C0; + } + else if ( this == (std::locale::facet *)&std::money_put>::id ) + { + v35 = operator new((struct type_info *)0xC, v51); + v36 = _CRT_MT; + v35[1] = 0; + v5 = v35; + *v35 = &off_4F5DB0; + v35[2] = a1; + if ( v36 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v35 = &off_4F5620; + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v37 = operator new((struct type_info *)0x54, v51); + v37[1] = 0; + v38 = (int)v37; + *v37 = &off_4F66F4; + v37[2] = 0; + v37[3] = 0; + *((_BYTE *)v37 + 16) = 0; + *(_DWORD *)((char *)v37 + 18) = 0; + v37[6] = 0; + v37[7] = 0; + v37[8] = 0; + v37[9] = 0; + v37[10] = 0; + v37[11] = 0; + v37[12] = 0; + v37[13] = 0; + v37[14] = 0; + *((_BYTE *)v37 + 82) = 0; + v39 = operator new((struct type_info *)0x14, v56); + v39[1] = 0; + v5 = v39; + *v39 = &off_4F58AC; + v39[2] = v38; + std::moneypunct::_M_initialize_moneypunct(v39, 0, 0); + v40 = _CRT_MT; + v5[3] = a1; + if ( v40 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F57A4; + v5[4] = v38; + LOBYTE(v49) = 0; + std::__facet_shims::__moneypunct_fill_cache(v49, (int *)a1, v38); + } + else if ( this == (std::locale::facet *)&std::moneypunct::id ) + { + v41 = operator new((struct type_info *)0x54, v51); + v41[1] = 0; + v42 = (int)v41; + *v41 = &off_4F66E4; + v41[2] = 0; + v41[3] = 0; + *((_BYTE *)v41 + 16) = 0; + *(_DWORD *)((char *)v41 + 18) = 0; + v41[6] = 0; + v41[7] = 0; + v41[8] = 0; + v41[9] = 0; + v41[10] = 0; + v41[11] = 0; + v41[12] = 0; + v41[13] = 0; + v41[14] = 0; + *((_BYTE *)v41 + 82) = 0; + v43 = operator new((struct type_info *)0x14, v57); + v43[1] = 0; + v5 = v43; + *v43 = &off_4F5878; + v43[2] = v42; + std::moneypunct::_M_initialize_moneypunct(v43, 0, 0); + v44 = _CRT_MT; + v5[3] = a1; + if ( v44 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F573C; + v5[4] = v42; + LOBYTE(v50) = 0; + std::__facet_shims::__moneypunct_fill_cache(v50, (int *)a1, v42); + } + else + { + if ( this != (std::locale::facet *)&std::messages::id ) + std::__throw_logic_error((std::logic_error *)"cannot create shim for unknown locale::facet"); + v5 = operator new((struct type_info *)0x14, v51); + std::messages::messages(v5, 0); + v7 = _CRT_MT; + v5[4] = a1; + if ( v7 ) + _InterlockedAdd(a1 + 1, 1u); + else + ++*((_DWORD *)a1 + 1); + *v5 = &off_4F5424; + } + return v5; +} +// 44A267: variable 'v51' is possibly undefined +// 44A2FA: variable 'v52' is possibly undefined +// 44A348: variable 'v45' is possibly undefined +// 44A52D: variable 'v53' is possibly undefined +// 44A586: variable 'v46' is possibly undefined +// 44A60D: variable 'v54' is possibly undefined +// 44A667: variable 'v47' is possibly undefined +// 44A73E: variable 'v55' is possibly undefined +// 44A78F: variable 'v48' is possibly undefined +// 44A902: variable 'v56' is possibly undefined +// 44A95C: variable 'v49' is possibly undefined +// 44A9EE: variable 'v57' is possibly undefined +// 44AA44: variable 'v50' is possibly undefined +// 4F1728: using guessed type int *`typeinfo for'std::locale::facet::__shim; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F537C: using guessed type int (*off_4F537C)(); +// 4F53B4: using guessed type int (*off_4F53B4)(); +// 4F53EC: using guessed type int (*off_4F53EC)(); +// 4F5424: using guessed type int (*off_4F5424)(); +// 4F5464: using guessed type int (*off_4F5464)(); +// 4F54AC: using guessed type int (*off_4F54AC)(); +// 4F54F8: using guessed type int (*off_4F54F8)(); +// 4F554C: using guessed type int (*off_4F554C)(); +// 4F5590: using guessed type int (*off_4F5590)(); +// 4F55C0: using guessed type int (*off_4F55C0)(); +// 4F55F0: using guessed type int (*off_4F55F0)(); +// 4F5620: using guessed type int (*off_4F5620)(); +// 4F566C: using guessed type int (*off_4F566C)(); +// 4F56D4: using guessed type int (*off_4F56D4)(); +// 4F573C: using guessed type int (*off_4F573C)(); +// 4F57A4: using guessed type int (*off_4F57A4)(); +// 4F5810: using guessed type int (*off_4F5810)(); +// 4F5844: using guessed type int (*off_4F5844)(); +// 4F5878: using guessed type int (*off_4F5878)(); +// 4F58AC: using guessed type int (*off_4F58AC)(); +// 4F5C58: using guessed type int (*off_4F5C58)(); +// 4F5C74: using guessed type int (*off_4F5C74)(); +// 4F5CC8: using guessed type int (*off_4F5CC8)(); +// 4F5CEC: using guessed type int (*off_4F5CEC)(); +// 4F5D10: using guessed type int (*off_4F5D10)(); +// 4F5D3C: using guessed type int (*off_4F5D3C)(); +// 4F5D68: using guessed type int (*off_4F5D68)(); +// 4F5D80: using guessed type int (*off_4F5D80)(); +// 4F5D98: using guessed type int (*off_4F5D98)(); +// 4F5DB0: using guessed type int (*off_4F5DB0)(); +// 4F65A0: using guessed type int (*off_4F65A0)(); +// 4F65B0: using guessed type int (*off_4F65B0)(); +// 4F66C4: using guessed type int (*off_4F66C4)(); +// 4F66D4: using guessed type int (*off_4F66D4)(); +// 4F66E4: using guessed type int (*off_4F66E4)(); +// 4F66F4: using guessed type int (*off_4F66F4)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (0044AB10) -------------------------------------------------------- +int __fastcall std::locale::facet::_M_remove_reference(volatile signed __int32 *a1) +{ + int result; // eax + + if ( _CRT_MT ) + { + result = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); + } + else + { + result = *((_DWORD *)a1 + 1); + *((_DWORD *)a1 + 1) = result - 1; + } + if ( result == 1 ) + return (*(int (__fastcall **)(volatile signed __int32 *))(*a1 + 4))(a1); + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0044AB50) -------------------------------------------------------- +bool __thiscall std::locale::operator==(int *this, int *a2) +{ + int v2; // edi + const char **v4; // ecx + char *v5; // ebx + bool result; // al + const char **v7; // [esp+1Ch] [ebp-4Ch] + bool v8; // [esp+1Ch] [ebp-4Ch] + bool v9; // [esp+1Ch] [ebp-4Ch] + void *Buf1; // [esp+20h] [ebp-48h] BYREF + size_t Size; // [esp+24h] [ebp-44h] + char v12; // [esp+28h] [ebp-40h] BYREF + void *Buf2[2]; // [esp+38h] [ebp-30h] BYREF + char v14; // [esp+40h] [ebp-28h] BYREF + + if ( *this == *a2 ) + return 1; + v2 = *(_DWORD *)(*this + 16); + if ( !*(_DWORD *)v2 ) + return 0; + v4 = *(const char ***)(*a2 + 16); + v7 = v4; + if ( !*v4 || strcmp(*(const char **)v2, *v4) ) + return 0; + if ( !*(_DWORD *)(v2 + 4) && !v7[1] ) + return 1; + std::locale::name[abi:cxx11]((int)Buf2, a2); + std::locale::name[abi:cxx11]((int)&Buf1, this); + v5 = (char *)Buf1; + result = 0; + if ( (void *)Size == Buf2[1] ) + { + result = 1; + if ( Size ) + result = memcmp(Buf1, Buf2[0], Size) == 0; + } + if ( v5 != &v12 ) + { + v8 = result; + operator delete(v5); + result = v8; + } + if ( Buf2[0] != &v14 ) + { + v9 = result; + operator delete(Buf2[0]); + return v9; + } + return result; +} + +//----- (0044AC60) -------------------------------------------------------- +int __thiscall std::vector::_M_check_len(_DWORD *this, unsigned int a2, std::length_error *a3) +{ + unsigned int v3; // eax + int v4; // edx + int v5; // ecx + bool v6; // cf + unsigned int v7; // eax + + v3 = -1431655765 * ((this[1] - *this) >> 3); + if ( 89478485 - v3 < a2 ) + std::__throw_length_error(a3); + v4 = a2; + if ( a2 < v3 ) + v4 = -1431655765 * ((this[1] - *this) >> 3); + v5 = 89478485; + v6 = __CFADD__(v4, v3); + v7 = v4 + v3; + if ( !v6 ) + { + v5 = v7; + if ( v7 > 0x5555555 ) + return 89478485; + } + return v5; +} + +//----- (0044ACC0) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (0044ACE0) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (0044AD00) -------------------------------------------------------- +void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 20); + if ( v3 == std::moneypunct::do_curr_symbol ) + { + Str = *(char **)(a2[2] + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44AD44: variable 'v7' is possibly undefined + +//----- (0044AD80) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44ADB7: variable 'v6' is possibly undefined + +//----- (0044ADD0) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 44); + else + return v1(); +} + +//----- (0044ADF0) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 17); + else + return v1(); +} + +//----- (0044AE10) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (0044AE20) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (0044AE30) -------------------------------------------------------- +void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 28); + if ( v3 == std::moneypunct::do_negative_sign ) + { + Str = *(char **)(a2[2] + 36); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44AE74: variable 'v7' is possibly undefined + +//----- (0044AEB0) -------------------------------------------------------- +void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 24); + if ( v3 == std::moneypunct::do_positive_sign ) + { + Str = *(char **)(a2[2] + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44AEF4: variable 'v7' is possibly undefined + +//----- (0044AF30) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 18); + else + return v1(); +} + +//----- (0044AF50) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44AF87: variable 'v6' is possibly undefined + +//----- (0044AFA0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); +} + +//----- (0044AFB0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); +} + +//----- (0044AFC0) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 36); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44AFF7: variable 'v6' is possibly undefined + +//----- (0044B010) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44B047: variable 'v6' is possibly undefined + +//----- (0044B060) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (0044B070) -------------------------------------------------------- +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::moneypunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B0B4: variable 'v7' is possibly undefined + +//----- (0044B0F0) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (0044B110) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (0044B130) -------------------------------------------------------- +void **__thiscall std::moneypunct::curr_symbol(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 20); + if ( v3 == std::moneypunct::do_curr_symbol ) + { + Str = *(char **)(a2[2] + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B174: variable 'v7' is possibly undefined + +//----- (0044B1B0) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44B1E7: variable 'v6' is possibly undefined + +//----- (0044B200) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 44); + else + return v1(); +} + +//----- (0044B220) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 17); + else + return v1(); +} + +//----- (0044B240) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (0044B250) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (0044B260) -------------------------------------------------------- +void **__thiscall std::moneypunct::negative_sign(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 28); + if ( v3 == std::moneypunct::do_negative_sign ) + { + Str = *(char **)(a2[2] + 36); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B2A4: variable 'v7' is possibly undefined + +//----- (0044B2E0) -------------------------------------------------------- +void **__thiscall std::moneypunct::positive_sign(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 24); + if ( v3 == std::moneypunct::do_positive_sign ) + { + Str = *(char **)(a2[2] + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B324: variable 'v7' is possibly undefined + +//----- (0044B360) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 18); + else + return v1(); +} + +//----- (0044B380) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_curr_symbol(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44B3B7: variable 'v6' is possibly undefined + +//----- (0044B3D0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 44); +} + +//----- (0044B3E0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 17); +} + +//----- (0044B3F0) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_negative_sign(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 36); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44B427: variable 'v6' is possibly undefined + +//----- (0044B440) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_positive_sign(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44B477: variable 'v6' is possibly undefined + +//----- (0044B490) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (0044B4A0) -------------------------------------------------------- +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::moneypunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B4E4: variable 'v7' is possibly undefined + +//----- (0044B520) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 56); + else + return v1(); +} + +//----- (0044B540) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (0044B560) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 20); + if ( v3 == std::moneypunct::do_curr_symbol ) + { + String = *(wchar_t **)(a2[2] + 24); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B5A5: variable 'v7' is possibly undefined + +//----- (0044B5E0) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44B617: variable 'v6' is possibly undefined + +//----- (0044B630) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (0044B650) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 18); + else + return v1(); +} + +//----- (0044B670) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); +} + +//----- (0044B680) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (0044B690) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 28); + if ( v3 == std::moneypunct::do_negative_sign ) + { + String = *(wchar_t **)(a2[2] + 40); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B6D5: variable 'v7' is possibly undefined + +//----- (0044B710) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 24); + if ( v3 == std::moneypunct::do_positive_sign ) + { + String = *(wchar_t **)(a2[2] + 32); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B755: variable 'v7' is possibly undefined + +//----- (0044B790) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 20); + else + return v1(); +} + +//----- (0044B7B0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 44B7E8: variable 'v6' is possibly undefined + +//----- (0044B800) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (0044B810) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (0044B820) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 44B858: variable 'v6' is possibly undefined + +//----- (0044B870) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 44B8A8: variable 'v6' is possibly undefined + +//----- (0044B8C0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); +} + +//----- (0044B8D0) -------------------------------------------------------- +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::moneypunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B914: variable 'v7' is possibly undefined + +//----- (0044B950) -------------------------------------------------------- +int __fastcall std::moneypunct::neg_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 40); + if ( (char *)v1 == (char *)std::moneypunct::do_neg_format ) + return *(_DWORD *)(a1[2] + 56); + else + return v1(); +} + +//----- (0044B970) -------------------------------------------------------- +int __fastcall std::moneypunct::pos_format(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 36); + if ( (char *)v1 == (char *)std::moneypunct::do_pos_format ) + return *(_DWORD *)(a1[2] + 52); + else + return v1(); +} + +//----- (0044B990) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::curr_symbol(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 20); + if ( v3 == std::moneypunct::do_curr_symbol ) + { + String = *(wchar_t **)(a2[2] + 24); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44B9D5: variable 'v7' is possibly undefined + +//----- (0044BA10) -------------------------------------------------------- +void **__thiscall std::moneypunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44BA47: variable 'v6' is possibly undefined + +//----- (0044BA60) -------------------------------------------------------- +int __fastcall std::moneypunct::frac_digits(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 32); + if ( (char *)v1 == (char *)std::moneypunct::do_frac_digits ) + return *(_DWORD *)(a1[2] + 48); + else + return v1(); +} + +//----- (0044BA80) -------------------------------------------------------- +int __fastcall std::moneypunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::moneypunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 18); + else + return v1(); +} + +//----- (0044BAA0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_neg_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 56); +} + +//----- (0044BAB0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_pos_format(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 52); +} + +//----- (0044BAC0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::negative_sign(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 28); + if ( v3 == std::moneypunct::do_negative_sign ) + { + String = *(wchar_t **)(a2[2] + 40); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44BB05: variable 'v7' is possibly undefined + +//----- (0044BB40) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::positive_sign(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 24); + if ( v3 == std::moneypunct::do_positive_sign ) + { + String = *(wchar_t **)(a2[2] + 32); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44BB85: variable 'v7' is possibly undefined + +//----- (0044BBC0) -------------------------------------------------------- +int __fastcall std::moneypunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::moneypunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 20); + else + return v1(); +} + +//----- (0044BBE0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_curr_symbol(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 24); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 44BC18: variable 'v6' is possibly undefined + +//----- (0044BC30) -------------------------------------------------------- +int __fastcall std::moneypunct::do_frac_digits(int a1) +{ + return *(_DWORD *)(*(_DWORD *)(a1 + 8) + 48); +} + +//----- (0044BC40) -------------------------------------------------------- +int __fastcall std::moneypunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 18); +} + +//----- (0044BC50) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_negative_sign(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 40); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 44BC88: variable 'v6' is possibly undefined + +//----- (0044BCA0) -------------------------------------------------------- +wchar_t **__thiscall std::moneypunct::do_positive_sign(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 32); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 44BCD8: variable 'v6' is possibly undefined + +//----- (0044BCF0) -------------------------------------------------------- +int __fastcall std::moneypunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 20); +} + +//----- (0044BD00) -------------------------------------------------------- +void **__thiscall std::moneypunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::moneypunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44BD44: variable 'v7' is possibly undefined + +//----- (0044BD80) -------------------------------------------------------- +int __thiscall std::string::_M_disjunct(unsigned int *this, unsigned int a2) +{ + int v2; // edx + + v2 = 1; + if ( *this <= a2 ) + LOBYTE(v2) = this[1] + *this < a2; + return v2; +} + +//----- (0044BDA0) -------------------------------------------------------- +bool __fastcall std::string::_M_is_local(_DWORD *a1) +{ + return a1 + 2 == (_DWORD *)*a1; +} + +//----- (0044BDB0) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_of(int *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::find_last_of(this, Str, a3, v4); +} + +//----- (0044BDF0) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) +{ + int v4; // ebx + unsigned int v5; // ebx + int v6; // ebp + + v4 = this[1]; + if ( !v4 || !MaxCount ) + return -1; + v5 = v4 - 1; + if ( v5 > a3 ) + v5 = a3; + v6 = *this; + do + { + if ( memchr(Buf, *(char *)(v6 + v5), MaxCount) ) + break; + --v5; + } + while ( v5 != -1 ); + return v5; +} + +//----- (0044BE80) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_of(int *this, int a2, int a3) +{ + return std::string::find_last_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044BEB0) -------------------------------------------------------- +int __thiscall std::string::find_last_of(int *this, char a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + unsigned int v5; // ebx + int v6; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = a3; + v5 = v3 - 1; + if ( a3 > v5 ) + result = v5; + v6 = *this; + do + { + if ( a2 == *(_BYTE *)(v6 + result) ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (0044BEF0) -------------------------------------------------------- +int __fastcall std::string::_M_local_data(int a1) +{ + return a1 + 8; +} + +//----- (0044BF00) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_of(_DWORD *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::find_first_of(this, Str, a3, v4); +} + +//----- (0044BF40) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_of(_DWORD *this, void *Buf, unsigned int a3, size_t MaxCount) +{ + unsigned int v5; // edi + + if ( MaxCount ) + { + v5 = this[1]; + while ( v5 > a3 ) + { + if ( memchr(Buf, *(char *)(*this + a3), MaxCount) ) + return a3; + ++a3; + } + } + return -1; +} + +//----- (0044BFB0) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_of(_DWORD *this, int a2, int a3) +{ + return std::string::find_first_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044BFE0) -------------------------------------------------------- +char *__thiscall std::string::find_first_of(int *this, char a2, unsigned int a3) +{ + return std::string::find(this, a2, a3); +} + +//----- (0044BFF0) -------------------------------------------------------- +void *__thiscall std::string::get_allocator(void *this, int a2) +{ + return this; +} + +//----- (0044C000) -------------------------------------------------------- +unsigned int __thiscall std::string::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) +{ + unsigned int result; // eax + + result = a2 + 0x3FFFFFFF - this[1]; + if ( result < a3 ) + std::__throw_length_error(a4); + return result; +} + +//----- (0044C030) -------------------------------------------------------- +int __fastcall std::string::_M_get_allocator(int a1) +{ + return a1; +} + +//----- (0044C040) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_not_of(int *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::find_last_not_of(this, Str, a3, v4); +} + +//----- (0044C080) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) +{ + unsigned int v4; // ebx + int v5; // eax + int v6; // ebp + + v4 = -1; + v5 = this[1]; + if ( v5 ) + { + v4 = v5 - 1; + if ( v5 - 1 > a3 ) + v4 = a3; + v6 = *this; + do + { + if ( !MaxCount ) + break; + if ( !memchr(Buf, *(char *)(v6 + v4), MaxCount) ) + break; + --v4; + } + while ( v4 != -1 ); + } + return v4; +} + +//----- (0044C0F0) -------------------------------------------------------- +unsigned int __thiscall std::string::find_last_not_of(int *this, int a2, int a3) +{ + return std::string::find_last_not_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044C120) -------------------------------------------------------- +int __thiscall std::string::find_last_not_of(int *this, char a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = v3 - 1; + if ( v3 - 1 > a3 ) + result = a3; + v5 = *this; + do + { + if ( *(_BYTE *)(v5 + result) != a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (0044C160) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_not_of(int *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::find_first_not_of(this, Str, a3, v4); +} + +//----- (0044C1A0) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_not_of(int *this, void *Buf, unsigned int a3, size_t MaxCount) +{ + unsigned int v4; // esi + unsigned int v5; // edi + int v6; // ebp + + v4 = this[1]; + v5 = a3; + if ( a3 >= v4 ) + return -1; + v6 = *this; + if ( MaxCount ) + { + while ( memchr(Buf, *(char *)(v6 + v5), MaxCount) ) + { + if ( v4 == ++v5 ) + return -1; + } + } + return v5; +} + +//----- (0044C200) -------------------------------------------------------- +unsigned int __thiscall std::string::find_first_not_of(int *this, int a2, int a3) +{ + return std::string::find_first_not_of(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044C230) -------------------------------------------------------- +int __thiscall std::string::find_first_not_of(int *this, char a2, unsigned int a3) +{ + int result; // eax + unsigned int v4; // edx + int v5; // ecx + + result = a3; + v4 = this[1]; + if ( a3 >= v4 ) + return -1; + v5 = *this; + while ( *(_BYTE *)(v5 + result) == a2 ) + { + if ( ++result == v4 ) + return -1; + } + return result; +} + +//----- (0044C270) -------------------------------------------------------- +unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= this[1] ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); + return *this + a2; +} + +//----- (0044C2A0) -------------------------------------------------------- +int __fastcall std::string::end(_DWORD *a1) +{ + return a1[1] + *a1; +} + +//----- (0044C2B0) -------------------------------------------------------- +int __fastcall std::string::back(_DWORD *a1) +{ + return *a1 + a1[1] - 1; +} + +//----- (0044C2C0) -------------------------------------------------------- +int __fastcall std::string::cend(_DWORD *a1) +{ + return a1[1] + *a1; +} + +//----- (0044C2D0) -------------------------------------------------------- +size_t __thiscall std::string::copy(_DWORD *this, _BYTE *a2, unsigned int a3, unsigned int a4) +{ + unsigned int v4; // ebx + size_t Size; // ebx + _BYTE *Src; // eax + + v4 = this[1]; + if ( a4 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::copy", + a4, + this[1]); + Size = v4 - a4; + if ( Size > a3 ) + { + Size = a3; + if ( !a3 ) + return Size; + } + else if ( !Size ) + { + return Size; + } + Src = (_BYTE *)(*this + a4); + if ( Size != 1 ) + { + memcpy(a2, Src, Size); + return Size; + } + *a2 = *Src; + return 1; +} + +//----- (0044C350) -------------------------------------------------------- +int __fastcall std::string::data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044C360) -------------------------------------------------------- +int __thiscall std::string::find(int *this, char *Str, int a3) +{ + size_t Size; // eax + + Size = strlen(Str); + return std::string::find(this, Str, a3, Size); +} + +//----- (0044C3A0) -------------------------------------------------------- +int __thiscall std::string::find(int *this, char *Buf2, unsigned int a3, size_t Size) +{ + unsigned int v4; // esi + int v5; // ebp + int v6; // ecx + const void *Buf; // eax + size_t MaxCount; // edx + int Val; // ebp + char *v10; // edi + int v12; // [esp+18h] [ebp-24h] + int v13; // [esp+1Ch] [ebp-20h] + + v4 = this[1]; + if ( !Size ) + return v4 < a3 ? -1 : a3; + v5 = -1; + if ( v4 > a3 ) + { + v6 = *this; + Buf = (const void *)(v6 + a3); + v13 = v6; + v12 = v6 + v4; + if ( Size <= v4 - a3 ) + { + MaxCount = 1 - Size + v4 - a3; + if ( MaxCount ) + { + Val = *Buf2; + while ( 1 ) + { + v10 = (char *)memchr(Buf, Val, MaxCount); + if ( !v10 ) + return -1; + if ( !memcmp(v10, Buf2, Size) ) + break; + Buf = v10 + 1; + if ( Size <= v12 - (int)(v10 + 1) ) + { + MaxCount = v12 - (_DWORD)v10 - Size; + if ( MaxCount ) + continue; + } + return -1; + } + return (int)&v10[-v13]; + } + } + } + return v5; +} + +//----- (0044C460) -------------------------------------------------------- +int __thiscall std::string::find(int *this, int a2, int a3) +{ + return std::string::find(this, *(char **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044C490) -------------------------------------------------------- +char *__thiscall std::string::find(int *this, char a2, unsigned int a3) +{ + int v3; // ebx + unsigned int v4; // edx + int v5; // esi + char *v6; // eax + + v3 = -1; + v4 = this[1]; + if ( a3 < v4 ) + { + v5 = *this; + v6 = (char *)memchr((const void *)(*this + a3), a2, v4 - a3); + if ( v6 ) + return &v6[-v5]; + } + return (char *)v3; +} + +//----- (0044C4E0) -------------------------------------------------------- +_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (0044C4F0) -------------------------------------------------------- +int __fastcall std::string::size(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (0044C500) -------------------------------------------------------- +int __fastcall std::string::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044C510) -------------------------------------------------------- +int __fastcall std::string::c_str(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044C520) -------------------------------------------------------- +_DWORD *__thiscall std::string::crend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (0044C530) -------------------------------------------------------- +bool __fastcall std::string::empty(int a1) +{ + return *(_DWORD *)(a1 + 4) == 0; +} + +//----- (0044C540) -------------------------------------------------------- +int __fastcall std::string::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044C550) -------------------------------------------------------- +unsigned int __thiscall std::string::rfind(int *this, char *Str, int a3) +{ + size_t v4; // eax + + v4 = strlen(Str); + return std::string::rfind(this, Str, a3, v4); +} + +//----- (0044C590) -------------------------------------------------------- +unsigned int __thiscall std::string::rfind(int *this, void *Buf2, unsigned int a3, size_t Size) +{ + unsigned int v4; // ebx + size_t v5; // eax + int v6; // ebp + + v4 = -1; + v5 = this[1]; + if ( Size <= v5 ) + { + v4 = v5 - Size; + if ( v5 - Size > a3 ) + v4 = a3; + v6 = *this; + if ( Size ) + { + while ( memcmp((const void *)(v6 + v4), Buf2, Size) ) + { + if ( !v4 ) + return -1; + --v4; + } + } + } + return v4; +} +// 44C5DE: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (0044C610) -------------------------------------------------------- +unsigned int __thiscall std::string::rfind(int *this, int a2, int a3) +{ + return std::string::rfind(this, *(void **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044C640) -------------------------------------------------------- +int __thiscall std::string::rfind(int *this, char a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = v3 - 1; + if ( v3 - 1 > a3 ) + result = a3; + v5 = *this; + do + { + if ( *(_BYTE *)(v5 + result) == a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (0044C680) -------------------------------------------------------- +int __fastcall std::string::cbegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044C690) -------------------------------------------------------- +int __fastcall std::string::length(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (0044C6A0) -------------------------------------------------------- +_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + a2[1]; + return result; +} + +//----- (0044C6B0) -------------------------------------------------------- +void **__thiscall std::string::substr(void **this, _DWORD *a2, unsigned int a3, unsigned int a4) +{ + unsigned int v5; // edx + unsigned int v6; // edx + int v8; // [esp+8h] [ebp-14h] + + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::substr", + a3, + a2[1]); + v6 = v5 - a3; + *this = this + 2; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + std::string::_M_construct(this, (unsigned __int8 *)(a3 + *a2), a3 + *a2 + v6, v8); + return this; +} +// 44C6EC: variable 'v8' is possibly undefined + +//----- (0044C720) -------------------------------------------------------- +int __fastcall std::string::_M_data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044C730) -------------------------------------------------------- +int __thiscall std::string::compare(int this, char *Str) +{ + size_t v3; // edi + size_t Size; // eax + size_t v5; // ebx + int result; // eax + + v3 = *(_DWORD *)(this + 4); + Size = strlen(Str); + v5 = Size; + if ( Size > v3 ) + Size = v3; + if ( !Size ) + return v3 - v5; + result = memcmp(*(const void **)this, Str, Size); + if ( !result ) + return v3 - v5; + return result; +} + +//----- (0044C780) -------------------------------------------------------- +int __thiscall std::string::compare(int this, int a2) +{ + size_t v2; // esi + size_t Size; // eax + size_t v4; // ebx + int result; // eax + + v2 = *(_DWORD *)(this + 4); + Size = v2; + v4 = *(_DWORD *)(a2 + 4); + if ( v4 <= v2 ) + Size = *(_DWORD *)(a2 + 4); + if ( !Size ) + return v2 - v4; + result = memcmp(*(const void **)this, *(const void **)a2, Size); + if ( !result ) + return v2 - v4; + return result; +} + +//----- (0044C7C0) -------------------------------------------------------- +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, char *Str) +{ + unsigned int v4; // ebx + unsigned int v5; // ebx + size_t Size; // eax + size_t v8; // esi + int result; // eax + + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + Size = strlen(Str); + v8 = Size; + if ( Size > v5 ) + Size = v5; + if ( !Size ) + return v5 - v8; + result = memcmp((const void *)(*this + a2), Str, Size); + if ( !result ) + return v5 - v8; + return result; +} + +//----- (0044C850) -------------------------------------------------------- +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, unsigned int a3, void *Buf2, unsigned int a5) +{ + unsigned int v5; // ebx + size_t Size; // edx + unsigned int v7; // ebx + int result; // eax + + v5 = this[1]; + Size = a3; + if ( a2 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v7 = v5 - a2; + if ( v7 > a3 ) + { + v7 = a3; + if ( a3 <= a5 ) + goto LABEL_4; + goto LABEL_8; + } + Size = v7; + if ( v7 > a5 ) +LABEL_8: + Size = a5; +LABEL_4: + if ( !Size ) + return v7 - a5; + result = memcmp((const void *)(*this + a2), Buf2, Size); + if ( !result ) + return v7 - a5; + return result; +} + +//----- (0044C8D0) -------------------------------------------------------- +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, int a4) +{ + unsigned int v4; // ebx + size_t v5; // ebx + size_t v6; // esi + size_t Size; // edx + int result; // eax + + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v5 = v4 - a2; + if ( v5 > a3 ) + { + v6 = *(_DWORD *)(a4 + 4); + v5 = a3; + Size = v6; + if ( v6 <= a3 ) + goto LABEL_4; + goto LABEL_8; + } + v6 = *(_DWORD *)(a4 + 4); + Size = v6; + if ( v6 > v5 ) +LABEL_8: + Size = v5; +LABEL_4: + if ( !Size ) + return v5 - v6; + result = memcmp((const void *)(*this + a2), *(const void **)a4, Size); + if ( !result ) + return v5 - v6; + return result; +} + +//----- (0044C960) -------------------------------------------------------- +int __thiscall std::string::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) +{ + unsigned int v6; // esi + unsigned int v7; // ebx + size_t v8; // esi + size_t v9; // ebx + size_t Size; // ebp + int result; // eax + + v6 = this[1]; + if ( a2 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v7 = a4[1]; + if ( a5 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a5, + a4[1]); + v8 = v6 - a2; + if ( v8 <= a3 ) + { + v9 = v7 - a5; + if ( v9 <= a6 ) + goto LABEL_5; +LABEL_11: + v9 = a6; + Size = a6; + if ( a6 <= v8 ) + goto LABEL_6; + goto LABEL_10; + } + v8 = a3; + v9 = v7 - a5; + if ( v9 > a6 ) + goto LABEL_11; +LABEL_5: + Size = v9; + if ( v9 > v8 ) +LABEL_10: + Size = v8; +LABEL_6: + if ( !Size ) + return v8 - v9; + result = memcmp((const void *)(*this + a2), (const void *)(*a4 + a5), Size); + if ( !result ) + return v8 - v9; + return result; +} + +//----- (0044CA30) -------------------------------------------------------- +_DWORD *__thiscall std::string::crbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + a2[1]; + return result; +} + +//----- (0044CA40) -------------------------------------------------------- +unsigned int __thiscall std::string::_M_check(_DWORD *this, unsigned int a2, const char *a3) +{ + unsigned int v3; // edx + unsigned int result; // eax + + v3 = this[1]; + result = a2; + if ( a2 > v3 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); + return result; +} + +//----- (0044CA70) -------------------------------------------------------- +unsigned int __thiscall std::string::_M_limit(_DWORD *this, int a2, unsigned int a3) +{ + unsigned int result; // eax + + result = this[1] - a2; + if ( result > a3 ) + return a3; + return result; +} + +//----- (0044CA90) -------------------------------------------------------- +int __fastcall std::string::capacity(_DWORD *a1) +{ + if ( (_DWORD *)*a1 == a1 + 2 ) + return 15; + else + return a1[2]; +} + +//----- (0044CAB0) -------------------------------------------------------- +int std::string::max_size() +{ + return 0x3FFFFFFF; +} + +//----- (0044CAC0) -------------------------------------------------------- +int __thiscall std::string::operator[](_DWORD *this, int a2) +{ + return a2 + *this; +} + +//----- (0044CAD0) -------------------------------------------------------- +bool __thiscall std::wstring::_M_disjunct(unsigned int *this, unsigned int a2) +{ + bool result; // al + + result = 1; + if ( *this <= a2 ) + return *this + 2 * this[1] < a2; + return result; +} + +//----- (0044CAF0) -------------------------------------------------------- +bool __fastcall std::wstring::_M_is_local(_DWORD *a1) +{ + return a1 + 2 == (_DWORD *)*a1; +} + +//----- (0044CB00) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_last_of(this, String, a3, v4); +} + +//----- (0044CB40) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + int v4; // ebx + unsigned int v6; // ebx + + v4 = this[1]; + if ( !v4 || !N ) + return -1; + v6 = v4 - 1; + if ( v6 > a3 ) + v6 = a3; + while ( !wmemchr(S, *(_WORD *)(*this + 2 * v6), N) ) + { + if ( --v6 == -1 ) + return -1; + } + return v6; +} + +//----- (0044CBC0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_of(_DWORD *this, int a2, int a3) +{ + return std::wstring::find_last_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044CBF0) -------------------------------------------------------- +int __thiscall std::wstring::find_last_of(int *this, __int16 a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + unsigned int v5; // ebx + int v6; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = a3; + v5 = v3 - 1; + if ( a3 > v5 ) + result = v5; + v6 = *this; + do + { + if ( a2 == *(_WORD *)(v6 + 2 * result) ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (0044CC30) -------------------------------------------------------- +int __fastcall std::wstring::_M_local_data(int a1) +{ + return a1 + 8; +} + +//----- (0044CC40) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_first_of(this, String, a3, v4); +} + +//----- (0044CC80) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + if ( N ) + { + while ( this[1] > a3 ) + { + if ( wmemchr(S, *(_WORD *)(*this + 2 * a3), N) ) + return a3; + ++a3; + } + } + return -1; +} + +//----- (0044CCF0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_first_of(_DWORD *this, int a2, int a3) +{ + return std::wstring::find_first_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044CD20) -------------------------------------------------------- +int __thiscall std::wstring::find_first_of(int *this, wchar_t C, unsigned int a3) +{ + return std::wstring::find(this, C, a3); +} + +//----- (0044CD30) -------------------------------------------------------- +void *__thiscall std::wstring::get_allocator(void *this, int a2) +{ + return this; +} + +//----- (0044CD40) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_check_length(_DWORD *this, int a2, unsigned int a3, std::length_error *a4) +{ + unsigned int result; // eax + + result = a2 + 0x1FFFFFFF - this[1]; + if ( result < a3 ) + std::__throw_length_error(a4); + return result; +} + +//----- (0044CD70) -------------------------------------------------------- +int __fastcall std::wstring::_M_get_allocator(int a1) +{ + return a1; +} + +//----- (0044CD80) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *String, int a3) +{ + int v4; // eax + + v4 = wcslen(String); + return std::wstring::find_last_not_of(this, String, a3, v4); +} + +//----- (0044CDC0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, wchar_t *S, unsigned int a3, int N) +{ + int v4; // ebx + unsigned int v6; // ebx + + v4 = this[1]; + if ( !v4 ) + return -1; + v6 = v4 - 1; + if ( v6 > a3 ) + v6 = a3; + while ( N && wmemchr(S, *(_WORD *)(*this + 2 * v6), N) ) + { + if ( --v6 == -1 ) + return -1; + } + return v6; +} + +//----- (0044CE30) -------------------------------------------------------- +unsigned int __thiscall std::wstring::find_last_not_of(_DWORD *this, int a2, int a3) +{ + return std::wstring::find_last_not_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044CE60) -------------------------------------------------------- +int __thiscall std::wstring::find_last_not_of(int *this, __int16 a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = v3 - 1; + if ( v3 - 1 > a3 ) + result = a3; + v5 = *this; + do + { + if ( *(_WORD *)(v5 + 2 * result) != a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (0044CEA0) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::find_first_not_of(this, String, a3, v4); +} + +//----- (0044CEE0) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(_DWORD *this, wchar_t *S, unsigned int a3, size_t N) +{ + unsigned int v4; // ebx + int result; // eax + wchar_t *i; // eax + + v4 = a3; + if ( a3 >= this[1] ) + return -1; + result = a3; + if ( N ) + { + for ( i = (wchar_t *)(*this + 2 * a3); wmemchr(S, *i, N); i = (wchar_t *)(*this + 2 * v4) ) + { + if ( this[1] <= ++v4 ) + return -1; + } + return v4; + } + return result; +} + +//----- (0044CF50) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(_DWORD *this, int a2, int a3) +{ + return std::wstring::find_first_not_of(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044CF80) -------------------------------------------------------- +int __thiscall std::wstring::find_first_not_of(int *this, __int16 a2, unsigned int a3) +{ + int result; // eax + unsigned int v4; // edx + int v5; // ecx + + result = a3; + v4 = this[1]; + if ( a3 >= v4 ) + return -1; + v5 = *this; + while ( *(_WORD *)(v5 + 2 * result) == a2 ) + { + if ( ++result == v4 ) + return -1; + } + return result; +} + +//----- (0044CFC0) -------------------------------------------------------- +int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= this[1] ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); + return *this + 2 * a2; +} + +//----- (0044CFF0) -------------------------------------------------------- +int __fastcall std::wstring::end(_DWORD *a1) +{ + return *a1 + 2 * a1[1]; +} + +//----- (0044D000) -------------------------------------------------------- +int __fastcall std::wstring::back(_DWORD *a1) +{ + return *a1 + 2 * a1[1] - 2; +} + +//----- (0044D010) -------------------------------------------------------- +int __fastcall std::wstring::cend(_DWORD *a1) +{ + return *a1 + 2 * a1[1]; +} + +//----- (0044D020) -------------------------------------------------------- +size_t __thiscall std::wstring::copy(_DWORD *this, wchar_t *S1, unsigned int a3, unsigned int a4) +{ + unsigned int v4; // ebx + size_t N; // ebx + const wchar_t *S2; // eax + + v4 = this[1]; + if ( a4 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::copy", + a4, + this[1]); + N = v4 - a4; + if ( N > a3 ) + { + N = a3; + if ( !a3 ) + return N; + } + else if ( !N ) + { + return N; + } + S2 = (const wchar_t *)(*this + 2 * a4); + if ( N != 1 ) + { + wmemcpy(S1, S2, N); + return N; + } + *S1 = *S2; + return 1; +} + +//----- (0044D0A0) -------------------------------------------------------- +int __fastcall std::wstring::data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044D0B0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t *S2, int a3) +{ + size_t v4; // eax + + v4 = wcslen(S2); + return std::wstring::find(this, S2, a3, v4); +} + +//----- (0044D0F0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t *S2, unsigned int a3, size_t a4) +{ + unsigned int v4; // ebp + size_t N; // eax + const wchar_t *S; // edx + wchar_t C; // di + wchar_t *v8; // ebp + unsigned int v9; // eax + int result; // eax + int v11; // [esp+18h] [ebp-24h] + int v12; // [esp+1Ch] [ebp-20h] + + v4 = this[1]; + if ( a4 ) + { + if ( v4 > a3 && a4 <= v4 - a3 ) + { + N = 1 - a4 + v4 - a3; + if ( N ) + { + v12 = *this; + S = (const wchar_t *)(*this + 2 * a3); + C = *S2; + v11 = *this + 2 * v4; + while ( 1 ) + { + v8 = wmemchr(S, C, N); + if ( !v8 ) + break; + if ( !wmemcmp(v8, S2, a4) ) + return ((int)v8 - v12) >> 1; + S = v8 + 1; + v9 = (v11 - (int)(v8 + 1)) >> 1; + if ( a4 <= v9 ) + { + N = 1 - a4 + v9; + if ( N ) + continue; + } + return -1; + } + } + } + return -1; + } + result = a3; + if ( v4 < a3 ) + return -1; + return result; +} + +//----- (0044D1B0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, int a2, int a3) +{ + return std::wstring::find(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044D1E0) -------------------------------------------------------- +int __thiscall std::wstring::find(int *this, wchar_t C, unsigned int a3) +{ + unsigned int v3; // eax + int v5; // ebx + wchar_t *v6; // eax + + v3 = this[1]; + if ( a3 < v3 && (v5 = *this, (v6 = wmemchr((const wchar_t *)(*this + 2 * a3), C, v3 - a3)) != 0) ) + return ((int)v6 - v5) >> 1; + else + return -1; +} + +//----- (0044D240) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (0044D250) -------------------------------------------------------- +int __fastcall std::wstring::size(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (0044D260) -------------------------------------------------------- +int __fastcall std::wstring::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044D270) -------------------------------------------------------- +int __fastcall std::wstring::c_str(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044D280) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::crend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (0044D290) -------------------------------------------------------- +bool __fastcall std::wstring::empty(int a1) +{ + return *(_DWORD *)(a1 + 4) == 0; +} + +//----- (0044D2A0) -------------------------------------------------------- +int __fastcall std::wstring::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044D2B0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *String, int a3) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::rfind(this, String, a3, v4); +} + +//----- (0044D2F0) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, wchar_t *S2, unsigned int a3, size_t N) +{ + size_t v4; // ebx + unsigned int v5; // ebx + int v6; // edi + + v4 = this[1]; + if ( N > v4 ) + return -1; + v5 = v4 - N; + if ( v5 > a3 ) + v5 = a3; + v6 = *this; + if ( N ) + { + while ( wmemcmp((const wchar_t *)(v6 + 2 * v5), S2, N) ) + { + if ( !v5 ) + return -1; + --v5; + } + } + return v5; +} +// 44D335: conditional instruction was optimized away because %arg_8.4!=0 + +//----- (0044D360) -------------------------------------------------------- +unsigned int __thiscall std::wstring::rfind(int *this, int a2, int a3) +{ + return std::wstring::rfind(this, *(wchar_t **)a2, a3, *(_DWORD *)(a2 + 4)); +} + +//----- (0044D390) -------------------------------------------------------- +int __thiscall std::wstring::rfind(int *this, __int16 a2, unsigned int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + + v3 = this[1]; + result = -1; + if ( v3 ) + { + result = v3 - 1; + if ( v3 - 1 > a3 ) + result = a3; + v5 = *this; + do + { + if ( *(_WORD *)(v5 + 2 * result) == a2 ) + break; + --result; + } + while ( result != -1 ); + } + return result; +} + +//----- (0044D3D0) -------------------------------------------------------- +int __fastcall std::wstring::cbegin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044D3E0) -------------------------------------------------------- +int __fastcall std::wstring::length(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (0044D3F0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * a2[1]; + return result; +} + +//----- (0044D410) -------------------------------------------------------- +wchar_t **__thiscall std::wstring::substr(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::substr", + a3, + a2[1]); + v6 = v5 - a3; + *this = (wchar_t *)(this + 2); + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + std::wstring::_M_construct(this, (wchar_t *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); + return this; +} +// 44D44C: variable 'v8' is possibly undefined + +//----- (0044D480) -------------------------------------------------------- +int __fastcall std::wstring::_M_data(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044D490) -------------------------------------------------------- +int __thiscall std::wstring::compare(int this, wchar_t *String) +{ + size_t v3; // edi + size_t N; // eax + size_t v5; // ebx + int result; // eax + + v3 = *(_DWORD *)(this + 4); + N = wcslen(String); + v5 = N; + if ( N > v3 ) + N = v3; + if ( !N ) + return v3 - v5; + result = wmemcmp(*(const wchar_t **)this, String, N); + if ( !result ) + return v3 - v5; + return result; +} + +//----- (0044D4F0) -------------------------------------------------------- +int __thiscall std::wstring::compare(int this, int a2) +{ + size_t v2; // esi + size_t N; // eax + size_t v4; // ebx + int result; // eax + + v2 = *(_DWORD *)(this + 4); + N = v2; + v4 = *(_DWORD *)(a2 + 4); + if ( v4 <= v2 ) + N = *(_DWORD *)(a2 + 4); + if ( !N ) + return v2 - v4; + result = wmemcmp(*(const wchar_t **)this, *(const wchar_t **)a2, N); + if ( !result ) + return v2 - v4; + return result; +} + +//----- (0044D540) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) +{ + unsigned int v4; // ebx + unsigned int v5; // ebx + size_t N; // eax + size_t v8; // esi + int result; // eax + + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + N = wcslen(String); + v8 = N; + if ( N > v5 ) + { + N = v5; + if ( !v5 ) + return v5 - v8; + } + else if ( !N ) + { + return v5 - v8; + } + result = wmemcmp((const wchar_t *)(*this + 2 * a2), String, N); + if ( !result ) + return v5 - v8; + return result; +} + +//----- (0044D5E0) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *S2, unsigned int a5) +{ + unsigned int v5; // ebx + size_t N; // eax + unsigned int v7; // ebx + int result; // eax + + v5 = this[1]; + N = a3; + if ( a2 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v7 = v5 - a2; + if ( v7 <= a3 ) + { + N = v7; + if ( v7 <= a5 ) + goto LABEL_4; +LABEL_6: + N = a5; + if ( !a5 ) + return v7 - a5; + goto LABEL_7; + } + v7 = a3; + if ( a3 > a5 ) + goto LABEL_6; +LABEL_4: + if ( !N ) + return v7 - a5; +LABEL_7: + result = wmemcmp((const wchar_t *)(*this + 2 * a2), S2, N); + if ( !result ) + return v7 - a5; + return result; +} + +//----- (0044D670) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, int a4) +{ + unsigned int v4; // ebx + size_t v5; // ebx + size_t v6; // esi + size_t N; // edx + int result; // eax + + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v5 = v4 - a2; + if ( v5 <= a3 ) + { + v6 = *(_DWORD *)(a4 + 4); + N = v6; + if ( v6 <= v5 ) + goto LABEL_4; +LABEL_6: + N = v5; + if ( !v5 ) + return v5 - v6; + goto LABEL_7; + } + v6 = *(_DWORD *)(a4 + 4); + v5 = a3; + N = v6; + if ( v6 > a3 ) + goto LABEL_6; +LABEL_4: + if ( !N ) + return v5 - v6; +LABEL_7: + result = wmemcmp((const wchar_t *)(*this + 2 * a2), *(const wchar_t **)a4, N); + if ( !result ) + return v5 - v6; + return result; +} + +//----- (0044D710) -------------------------------------------------------- +int __thiscall std::wstring::compare(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) +{ + unsigned int v6; // esi + unsigned int v7; // ebx + size_t v8; // esi + size_t v9; // ebx + size_t N; // ebp + int result; // eax + + v6 = this[1]; + if ( a2 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a2, + this[1]); + v7 = a4[1]; + if ( a5 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::compare", + a5, + a4[1]); + v8 = v6 - a2; + if ( v8 > a3 ) + { + v8 = a3; + v9 = v7 - a5; + if ( v9 <= a6 ) + { +LABEL_5: + N = v9; + if ( v9 <= v8 ) + goto LABEL_6; +LABEL_8: + N = v8; + if ( !v8 ) + return v8 - v9; + goto LABEL_9; + } + } + else + { + v9 = v7 - a5; + if ( v9 <= a6 ) + goto LABEL_5; + } + v9 = a6; + N = a6; + if ( a6 > v8 ) + goto LABEL_8; +LABEL_6: + if ( !N ) + return v8 - v9; +LABEL_9: + result = wmemcmp((const wchar_t *)(*this + 2 * a2), (const wchar_t *)(*a4 + 2 * a5), N); + if ( !result ) + return v8 - v9; + return result; +} + +//----- (0044D7F0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::crbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * a2[1]; + return result; +} + +//----- (0044D810) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_check(_DWORD *this, unsigned int a2, const char *a3) +{ + unsigned int v3; // edx + unsigned int result; // eax + + v3 = this[1]; + result = a2; + if ( a2 > v3 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", a3, a2, v3); + return result; +} + +//----- (0044D840) -------------------------------------------------------- +unsigned int __thiscall std::wstring::_M_limit(_DWORD *this, int a2, unsigned int a3) +{ + unsigned int result; // eax + + result = this[1] - a2; + if ( result > a3 ) + return a3; + return result; +} + +//----- (0044D860) -------------------------------------------------------- +int __fastcall std::wstring::capacity(_DWORD *a1) +{ + if ( (_DWORD *)*a1 == a1 + 2 ) + return 7; + else + return a1[2]; +} + +//----- (0044D880) -------------------------------------------------------- +int std::wstring::max_size() +{ + return 0x1FFFFFFF; +} + +//----- (0044D890) -------------------------------------------------------- +int __thiscall std::wstring::operator[](_DWORD *this, int a2) +{ + return *this + 2 * a2; +} + +//----- (0044D8A0) -------------------------------------------------------- +int __thiscall std::stringbuf::str(int this, _DWORD *a2) +{ + unsigned int v3; // edx + unsigned int v4; // ecx + char *v5; // eax + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = a2[5]; + *(_DWORD *)(this + 4) = 0; + if ( v3 ) + { + v4 = a2[3]; + v5 = (char *)a2[4]; + if ( v3 > v4 ) + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); + else + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); + return this; + } + else + { + std::string::_M_assign(this, (int)(a2 + 9)); + return this; + } +} + +//----- (0044D950) -------------------------------------------------------- +_WORD *__thiscall std::wstringbuf::str(_WORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + unsigned int v4; // ecx + wchar_t *v5; // edx + + *(_DWORD *)this = this + 4; + this[4] = 0; + v3 = a2[5]; + *((_DWORD *)this + 1) = 0; + if ( v3 ) + { + v4 = a2[3]; + v5 = (wchar_t *)a2[4]; + if ( v3 > v4 ) + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); + else + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); + return this; + } + else + { + std::wstring::_M_assign((int)this, (int)(a2 + 9)); + return this; + } +} + +//----- (0044DA00) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::str(int this, _DWORD *a2) +{ + unsigned int v3; // edx + unsigned int v4; // ecx + char *v5; // eax + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = a2[8]; + *(_DWORD *)(this + 4) = 0; + if ( v3 ) + { + v4 = a2[6]; + v5 = (char *)a2[7]; + if ( v3 > v4 ) + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); + else + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); + return this; + } + else + { + std::string::_M_assign(this, (int)(a2 + 12)); + return this; + } +} + +//----- (0044DAB0) -------------------------------------------------------- +int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) +{ + return a1 + 12; +} + +//----- (0044DAC0) -------------------------------------------------------- +_WORD *__thiscall std::basic_stringstream,std::allocator>::str( + _WORD *this, + _DWORD *a2) +{ + unsigned int v3; // eax + unsigned int v4; // ecx + wchar_t *v5; // edx + + *(_DWORD *)this = this + 4; + this[4] = 0; + v3 = a2[8]; + *((_DWORD *)this + 1) = 0; + if ( v3 ) + { + v4 = a2[6]; + v5 = (wchar_t *)a2[7]; + if ( v3 > v4 ) + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); + else + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); + return this; + } + else + { + std::wstring::_M_assign((int)this, (int)(a2 + 12)); + return this; + } +} + +//----- (0044DB70) -------------------------------------------------------- +int __fastcall std::basic_stringstream,std::allocator>::rdbuf(int a1) +{ + return a1 + 12; +} + +//----- (0044DB80) -------------------------------------------------------- +int __thiscall std::istringstream::str(int this, _DWORD *a2) +{ + unsigned int v3; // edx + unsigned int v4; // ecx + char *v5; // eax + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = a2[7]; + *(_DWORD *)(this + 4) = 0; + if ( v3 ) + { + v4 = a2[5]; + v5 = (char *)a2[6]; + if ( v3 > v4 ) + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); + else + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); + return this; + } + else + { + std::string::_M_assign(this, (int)(a2 + 11)); + return this; + } +} + +//----- (0044DC30) -------------------------------------------------------- +int __fastcall std::istringstream::rdbuf(int a1) +{ + return a1 + 8; +} + +//----- (0044DC40) -------------------------------------------------------- +_WORD *__thiscall std::wistringstream::str(_WORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + unsigned int v4; // ecx + wchar_t *v5; // edx + + *(_DWORD *)this = this + 4; + this[4] = 0; + v3 = a2[7]; + *((_DWORD *)this + 1) = 0; + if ( v3 ) + { + v4 = a2[5]; + v5 = (wchar_t *)a2[6]; + if ( v3 > v4 ) + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); + else + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); + return this; + } + else + { + std::wstring::_M_assign((int)this, (int)(a2 + 11)); + return this; + } +} + +//----- (0044DCF0) -------------------------------------------------------- +int __fastcall std::wistringstream::rdbuf(int a1) +{ + return a1 + 8; +} + +//----- (0044DD00) -------------------------------------------------------- +int __thiscall std::ostringstream::str(int this, _DWORD *a2) +{ + unsigned int v3; // edx + unsigned int v4; // ecx + char *v5; // eax + + *(_DWORD *)this = this + 8; + *(_BYTE *)(this + 8) = 0; + v3 = a2[6]; + *(_DWORD *)(this + 4) = 0; + if ( v3 ) + { + v4 = a2[4]; + v5 = (char *)a2[5]; + if ( v3 > v4 ) + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v3 - (_DWORD)v5); + else + std::string::_M_replace((unsigned int *)this, 0, 0, v5, v4 - (_DWORD)v5); + return this; + } + else + { + std::string::_M_assign(this, (int)(a2 + 10)); + return this; + } +} + +//----- (0044DDB0) -------------------------------------------------------- +int __fastcall std::ostringstream::rdbuf(int a1) +{ + return a1 + 4; +} + +//----- (0044DDC0) -------------------------------------------------------- +_WORD *__thiscall std::wostringstream::str(_WORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + unsigned int v4; // ecx + wchar_t *v5; // edx + + *(_DWORD *)this = this + 4; + this[4] = 0; + v3 = a2[6]; + *((_DWORD *)this + 1) = 0; + if ( v3 ) + { + v4 = a2[4]; + v5 = (wchar_t *)a2[5]; + if ( v3 > v4 ) + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v3 - (_DWORD)v5) >> 1); + else + std::wstring::_M_replace((int)this, 0, 0, v5, (int)(v4 - (_DWORD)v5) >> 1); + return this; + } + else + { + std::wstring::_M_assign((int)this, (int)(a2 + 10)); + return this; + } +} + +//----- (0044DE70) -------------------------------------------------------- +int __fastcall std::wostringstream::rdbuf(int a1) +{ + return a1 + 4; +} + +//----- (0044DE80) -------------------------------------------------------- +int __stdcall std::collate::_M_compare(char *String1, char *String2) +{ + int v2; // eax + + v2 = strcoll(String1, String2); + return (v2 >> 30) | (v2 != 0); +} + +//----- (0044DEB0) -------------------------------------------------------- +int __stdcall std::collate::do_compare(unsigned __int8 *a1, size_t Size, unsigned __int8 *a3, size_t a4) +{ + char *v4; // ebx + char *v5; // esi + char *v6; // ebx + char *v7; // esi + int v8; // edi + int v10; // [esp+8h] [ebp-60h] + int v11; // [esp+8h] [ebp-60h] + char *v12; // [esp+18h] [ebp-50h] + char *v13; // [esp+1Ch] [ebp-4Ch] + char *Str[2]; // [esp+20h] [ebp-48h] BYREF + char v15[16]; // [esp+28h] [ebp-40h] BYREF + char *v16[2]; // [esp+38h] [ebp-30h] BYREF + char v17[40]; // [esp+40h] [ebp-28h] BYREF + + Str[0] = v15; + LOBYTE(v10) = 0; + std::string::_M_construct((void **)Str, a1, Size, v10); + v16[0] = v17; + LOBYTE(v11) = 0; + std::string::_M_construct((void **)v16, a3, a4, v11); + v4 = Str[0]; + v5 = v16[0]; + v13 = &Str[0][(unsigned int)Str[1]]; + v12 = &v16[0][(unsigned int)v16[1]]; + while ( 1 ) + { + v8 = std::collate::_M_compare(v4, v5); + if ( v8 ) + break; + v6 = &v4[strlen(v4)]; + v7 = &v5[strlen(v5)]; + if ( v13 == v6 && v12 == v7 ) + break; + if ( v13 == v6 ) + { + v8 = -1; + break; + } + if ( v12 == v7 ) + { + v8 = 1; + break; + } + v4 = v6 + 1; + v5 = v7 + 1; + } + if ( v16[0] != v17 ) + operator delete(v16[0]); + if ( Str[0] != v15 ) + operator delete(Str[0]); + return v8; +} +// 44DED8: variable 'v10' is possibly undefined +// 44DEFD: variable 'v11' is possibly undefined + +//----- (0044DFE0) -------------------------------------------------------- +size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) +{ + return strxfrm(Destination, Source, MaxCount); +} + +//----- (0044E010) -------------------------------------------------------- +int __thiscall std::collate::do_transform(int this, int a2, unsigned __int8 *a3, size_t Size) +{ + unsigned int v5; // edi + char *v6; // esi + unsigned int v7; // eax + char *v8; // eax + int v9; // eax + unsigned int v10; // edx + int v12; // [esp+8h] [ebp-60h] + int v13; // [esp+1Ch] [ebp-4Ch] + char *v14; // [esp+20h] [ebp-48h] + size_t v15; // [esp+24h] [ebp-44h] + unsigned int v16; // [esp+28h] [ebp-40h] + char *Str; // [esp+2Ch] [ebp-3Ch] + void *v18[2]; // [esp+38h] [ebp-30h] BYREF + char v19[40]; // [esp+40h] [ebp-28h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_BYTE *)(this + 8) = 0; + LOBYTE(v12) = 0; + v13 = this + 8; + v18[0] = v19; + std::string::_M_construct(v18, a3, Size, v12); + v5 = 2 * (Size - (_DWORD)a3); + Str = (char *)v18[0]; + v14 = (char *)v18[1] + (unsigned int)v18[0]; + v6 = (char *)operator new[](v5); + while ( 1 ) + { + v7 = std::collate::_M_transform(v6, Str, v5); + if ( v5 <= v7 ) + { + v5 = v7 + 1; + operator delete[](v6); + v6 = (char *)operator new[](v5); + v7 = std::collate::_M_transform(v6, Str, v5); + } + if ( v7 > 0x3FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append((_DWORD *)this, v6, v7); + v8 = &Str[strlen(Str)]; + if ( v14 == v8 ) + break; + Str = v8 + 1; + v15 = *(_DWORD *)(this + 4); + v16 = v15 + 1; + v9 = *(_DWORD *)this; + if ( v13 == *(_DWORD *)this ) + v10 = 15; + else + v10 = *(_DWORD *)(this + 8); + if ( v16 > v10 ) + { + std::string::_M_mutate(this, v15, 0, 0, 1u); + v9 = *(_DWORD *)this; + } + *(_BYTE *)(v9 + v15) = 0; + *(_DWORD *)(this + 4) = v16; + *(_BYTE *)(*(_DWORD *)this + v15 + 1) = 0; + } + operator delete[](v6); + if ( v18[0] != v19 ) + operator delete(v18[0]); + return this; +} +// 44E049: variable 'v12' is possibly undefined + +//----- (0044E200) -------------------------------------------------------- +int __thiscall std::collate::hash(void *this, char *a1, char *a2) +{ + int (__stdcall *v3)(char *, char *); // eax + + v3 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); + if ( v3 == std::collate::do_hash ) + return std::collate::do_hash(a1, a2); + else + return v3(a1, a2); +} + +//----- (0044E220) -------------------------------------------------------- +int __fastcall std::collate::compare(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (0044E230) -------------------------------------------------------- +int __stdcall std::collate::do_hash(char *a1, char *a2) +{ + char *v2; // edx + int result; // eax + int v4; // ecx + + v2 = a1; + result = 0; + if ( a1 < a2 ) + { + do + { + v4 = *v2++; + result = v4 + __ROL4__(result, 7); + } + while ( a2 != v2 ); + } + return result; +} + +//----- (0044E260) -------------------------------------------------------- +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) +{ + (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); + return this; +} + +//----- (0044E290) -------------------------------------------------------- +int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) +{ + int v2; // eax + + v2 = wcscoll(String1, String2); + return (v2 >> 30) | (v2 != 0); +} + +//----- (0044E2C0) -------------------------------------------------------- +int __stdcall std::collate::do_compare(wchar_t *a1, int a2, wchar_t *a3, int a4) +{ + wchar_t *v4; // ebx + wchar_t *v5; // esi + wchar_t *v6; // ebx + wchar_t *v7; // esi + int v8; // edi + int v10; // [esp+8h] [ebp-60h] + int v11; // [esp+8h] [ebp-60h] + wchar_t *v12; // [esp+18h] [ebp-50h] + wchar_t *v13; // [esp+1Ch] [ebp-4Ch] + wchar_t *String[2]; // [esp+20h] [ebp-48h] BYREF + char v15[16]; // [esp+28h] [ebp-40h] BYREF + wchar_t *v16[2]; // [esp+38h] [ebp-30h] BYREF + char v17[40]; // [esp+40h] [ebp-28h] BYREF + + String[0] = (wchar_t *)v15; + LOBYTE(v10) = 0; + std::wstring::_M_construct(String, a1, a2, v10); + v16[0] = (wchar_t *)v17; + LOBYTE(v11) = 0; + std::wstring::_M_construct(v16, a3, a4, v11); + v4 = String[0]; + v5 = v16[0]; + v13 = &String[0][(int)String[1]]; + v12 = &v16[0][(int)v16[1]]; + while ( 1 ) + { + v8 = std::collate::_M_compare(v4, v5); + if ( v8 ) + break; + v6 = &v4[wcslen(v4)]; + v7 = &v5[wcslen(v5)]; + if ( v13 == v6 && v12 == v7 ) + break; + if ( v13 == v6 ) + { + v8 = -1; + break; + } + if ( v12 == v7 ) + { + v8 = 1; + break; + } + v4 = v6 + 1; + v5 = v7 + 1; + } + if ( (char *)v16[0] != v17 ) + operator delete(v16[0]); + if ( (char *)String[0] != v15 ) + operator delete(String[0]); + return v8; +} +// 44E2E8: variable 'v10' is possibly undefined +// 44E30D: variable 'v11' is possibly undefined + +//----- (0044E3F0) -------------------------------------------------------- +size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) +{ + return wcsxfrm(Destination, Source, MaxCount); +} + +//----- (0044E420) -------------------------------------------------------- +int __thiscall std::collate::do_transform(int this, int a2, wchar_t *a3, int a4) +{ + size_t v5; // edi + wchar_t *v6; // esi + unsigned int v7; // eax + wchar_t *v8; // eax + const wchar_t *v9; // eax + unsigned int v10; // edx + int v12; // [esp+8h] [ebp-60h] + int v13; // [esp+1Ch] [ebp-4Ch] + char *v14; // [esp+20h] [ebp-48h] + size_t v15; // [esp+24h] [ebp-44h] + unsigned int v16; // [esp+28h] [ebp-40h] + wchar_t *String; // [esp+2Ch] [ebp-3Ch] + void *v18[2]; // [esp+38h] [ebp-30h] BYREF + char v19[40]; // [esp+40h] [ebp-28h] BYREF + + *(_DWORD *)this = this + 8; + *(_DWORD *)(this + 4) = 0; + *(_WORD *)(this + 8) = 0; + LOBYTE(v12) = 0; + v13 = this + 8; + v18[0] = v19; + std::wstring::_M_construct((wchar_t **)v18, a3, a4, v12); + v5 = a4 - (_DWORD)a3; + String = (wchar_t *)v18[0]; + v14 = (char *)v18[0] + 2 * (int)v18[1]; + if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v6 = (wchar_t *)operator new[](2 * v5); + while ( 1 ) + { + v7 = std::collate::_M_transform(v6, String, v5); + if ( v5 <= v7 ) + { + v5 = v7 + 1; + operator delete[](v6); + if ( v5 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v6 = (wchar_t *)operator new[](2 * v5); + v7 = std::collate::_M_transform(v6, String, v5); + } + if ( v7 > 0x1FFFFFFF - *(_DWORD *)(this + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append(this, v6, v7); + v8 = &String[wcslen(String)]; + if ( v14 == (char *)v8 ) + break; + String = v8 + 1; + v15 = *(_DWORD *)(this + 4); + v16 = v15 + 1; + v9 = *(const wchar_t **)this; + if ( v13 == *(_DWORD *)this ) + v10 = 7; + else + v10 = *(_DWORD *)(this + 8); + if ( v16 > v10 ) + { + std::wstring::_M_mutate((const wchar_t **)this, v15, 0, 0, 1u); + v9 = *(const wchar_t **)this; + } + v9[v15] = 0; + *(_DWORD *)(this + 4) = v16; + v9[v15 + 1] = 0; + } + operator delete[](v6); + if ( v18[0] != v19 ) + operator delete(v18[0]); + return this; +} +// 44E45B: variable 'v12' is possibly undefined + +//----- (0044E640) -------------------------------------------------------- +int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2) +{ + int (__stdcall *v3)(unsigned __int16 *, unsigned int); // eax + + v3 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); + if ( v3 == std::collate::do_hash ) + return std::collate::do_hash(a1, a2); + else + return v3(a1, a2); +} + +//----- (0044E660) -------------------------------------------------------- +int __fastcall std::collate::compare(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (0044E670) -------------------------------------------------------- +int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) +{ + unsigned __int16 *v2; // edx + int result; // eax + int v4; // ecx + + v2 = a1; + for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) + v4 = *v2++; + return result; +} + +//----- (0044E6A0) -------------------------------------------------------- +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) +{ + (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); + return this; +} + +//----- (0044E6D0) -------------------------------------------------------- +int __stdcall std::messages::_M_convert_to_char(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044E6E0) -------------------------------------------------------- +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) +{ + _DWORD *result; // eax + + this[1] = 0; + result = this; + *this = this + 2; + *((_BYTE *)this + 8) = 0; + return result; +} + +//----- (0044E700) -------------------------------------------------------- +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) +{ + (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); + return this; +} + +//----- (0044E740) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3) +{ + int (__stdcall *v3)(int, int); // eax + + v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v3 == std::messages::do_open ) + return 0; + else + return v3(a2, a3); +} + +//----- (0044E760) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3, int a4) +{ + int (__stdcall *v4)(int, int); // edx + + v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v4 == std::messages::do_open ) + return 0; + else + return v4(a2, a3); +} + +//----- (0044E7A0) -------------------------------------------------------- +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) +{ + int (__stdcall *result)(int); // eax + + result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); + if ( result != std::messages::do_close ) + return (int (__stdcall *)(int))result(a2); + return result; +} +// 44E810: using guessed type int __stdcall std::messages::do_close(int); + +//----- (0044E7C0) -------------------------------------------------------- +_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + int v8; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v8) = 0; + std::string::_M_construct(this, *(_BYTE **)a6, *(_DWORD *)a6 + *(_DWORD *)(a6 + 4), v8); + return this; +} +// 44E7E4: variable 'v8' is possibly undefined + +//----- (0044E800) -------------------------------------------------------- +int __stdcall std::messages::do_open(int a1, int a2) +{ + return 0; +} + +//----- (0044E820) -------------------------------------------------------- +int __stdcall std::messages::_M_convert_to_char(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (0044E830) -------------------------------------------------------- +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) +{ + _DWORD *result; // eax + + this[1] = 0; + result = this; + *this = this + 2; + *((_WORD *)this + 4) = 0; + return result; +} + +//----- (0044E850) -------------------------------------------------------- +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) +{ + (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); + return this; +} + +//----- (0044E890) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3) +{ + int (__stdcall *v3)(int, int); // eax + + v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v3 == std::messages::do_open ) + return 0; + else + return v3(a2, a3); +} + +//----- (0044E8B0) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3, int a4) +{ + int (__stdcall *v4)(int, int); // edx + + v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v4 == std::messages::do_open ) + return 0; + else + return v4(a2, a3); +} + +//----- (0044E8F0) -------------------------------------------------------- +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) +{ + int (__stdcall *result)(int); // eax + + result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); + if ( result != std::messages::do_close ) + return (int (__stdcall *)(int))result(a2); + return result; +} +// 44E960: using guessed type int __stdcall std::messages::do_close(int); + +//----- (0044E910) -------------------------------------------------------- +wchar_t **__thiscall std::messages::do_get(wchar_t **this, int a2, int a3, int a4, int a5, int a6) +{ + int v8; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v8) = 0; + std::wstring::_M_construct(this, *(wchar_t **)a6, *(_DWORD *)a6 + 2 * *(_DWORD *)(a6 + 4), v8); + return this; +} +// 44E933: variable 'v8' is possibly undefined + +//----- (0044E950) -------------------------------------------------------- +int __stdcall std::messages::do_open(int a1, int a2) +{ + return 0; +} + +//----- (0044E970) -------------------------------------------------------- +void **__thiscall std::numpunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44E9A7: variable 'v6' is possibly undefined + +//----- (0044E9C0) -------------------------------------------------------- +void **__thiscall std::numpunct::do_truename(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44E9F7: variable 'v6' is possibly undefined + +//----- (0044EA10) -------------------------------------------------------- +void **__thiscall std::numpunct::do_falsename(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44EA47: variable 'v6' is possibly undefined + +//----- (0044EA60) -------------------------------------------------------- +int __fastcall std::numpunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 36); + else + return v1(); +} + +//----- (0044EA80) -------------------------------------------------------- +int __fastcall std::numpunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 37); + else + return v1(); +} + +//----- (0044EAA0) -------------------------------------------------------- +int __fastcall std::numpunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); +} + +//----- (0044EAB0) -------------------------------------------------------- +int __fastcall std::numpunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); +} + +//----- (0044EAC0) -------------------------------------------------------- +void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::numpunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44EB04: variable 'v7' is possibly undefined + +//----- (0044EB40) -------------------------------------------------------- +void **__thiscall std::numpunct::truename(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 20); + if ( v3 == std::numpunct::do_truename ) + { + Str = *(char **)(a2[2] + 20); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44EB84: variable 'v7' is possibly undefined + +//----- (0044EBC0) -------------------------------------------------------- +void **__thiscall std::numpunct::falsename(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 24); + if ( v3 == std::numpunct::do_falsename ) + { + Str = *(char **)(a2[2] + 28); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44EC04: variable 'v7' is possibly undefined + +//----- (0044EC40) -------------------------------------------------------- +void **__thiscall std::numpunct::do_grouping(void **this, int a2) +{ + char *Str; // esi + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + Str = *(char **)(*(_DWORD *)(a2 + 8) + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); + return this; +} +// 44EC77: variable 'v6' is possibly undefined + +//----- (0044EC90) -------------------------------------------------------- +wchar_t **__thiscall std::numpunct::do_truename(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 44ECC8: variable 'v6' is possibly undefined + +//----- (0044ECE0) -------------------------------------------------------- +wchar_t **__thiscall std::numpunct::do_falsename(wchar_t **this, int a2) +{ + wchar_t *String; // esi + int v4; // eax + int v6; // [esp+8h] [ebp-14h] + + String = *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28); + *this = (wchar_t *)(this + 2); + v4 = -2; + if ( String ) + v4 = (int)&String[wcslen(String)]; + LOBYTE(v6) = 0; + std::wstring::_M_construct(this, String, v4, v6); + return this; +} +// 44ED18: variable 'v6' is possibly undefined + +//----- (0044ED30) -------------------------------------------------------- +int __fastcall std::numpunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 36); + else + return v1(); +} + +//----- (0044ED50) -------------------------------------------------------- +int __fastcall std::numpunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 38); + else + return v1(); +} + +//----- (0044ED70) -------------------------------------------------------- +int __fastcall std::numpunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); +} + +//----- (0044ED80) -------------------------------------------------------- +int __fastcall std::numpunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); +} + +//----- (0044ED90) -------------------------------------------------------- +void **__thiscall std::numpunct::grouping(void **this, _DWORD *a2) +{ + void **(__thiscall *v3)(void **, int); // edx + char *Str; // esi + size_t Size; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(void **(__thiscall **)(void **, int))(*a2 + 16); + if ( v3 == std::numpunct::do_grouping ) + { + Str = *(char **)(a2[2] + 8); + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v7) = 0; + std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44EDD4: variable 'v7' is possibly undefined + +//----- (0044EE10) -------------------------------------------------------- +wchar_t **__thiscall std::numpunct::truename(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 20); + if ( v3 == std::numpunct::do_truename ) + { + String = *(wchar_t **)(a2[2] + 20); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44EE55: variable 'v7' is possibly undefined + +//----- (0044EE90) -------------------------------------------------------- +wchar_t **__thiscall std::numpunct::falsename(wchar_t **this, _DWORD *a2) +{ + wchar_t **(__thiscall *v3)(wchar_t **, int); // edx + wchar_t *String; // esi + int v5; // eax + int v7; // [esp+8h] [ebp-14h] + + v3 = *(wchar_t **(__thiscall **)(wchar_t **, int))(*a2 + 24); + if ( v3 == std::numpunct::do_falsename ) + { + String = *(wchar_t **)(a2[2] + 28); + *this = (wchar_t *)(this + 2); + v5 = -2; + if ( String ) + v5 = (int)&String[wcslen(String)]; + LOBYTE(v7) = 0; + std::wstring::_M_construct(this, String, v5, v7); + return this; + } + else + { + ((void (__stdcall *)(_DWORD *))v3)(a2); + return this; + } +} +// 44EED5: variable 'v7' is possibly undefined + +//----- (0044EF10) -------------------------------------------------------- +int __fastcall std::time_get>::date_order(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); + if ( v1 == std::time_get>::do_date_order ) + return 0; + else + return v1(); +} + +//----- (0044EF30) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_date( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // eax + _DWORD *v8; // esi + int v9; // edx + char v10; // dl + char v11; // al + int v13; // eax + int v14; // eax + char v15; // [esp+2Ch] [ebp-20h] + char v16; // [esp+2Ch] [ebp-20h] + + v7 = std::use_facet>(a5 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + *(char **)(v7[2] + 8)); + v10 = v9 == -1; + v15 = v10 & (v8 != 0); + if ( v15 ) + { + v10 = 0; + if ( v8[2] >= v8[3] ) + { + v14 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v8 + 36))(v8, 0); + v10 = v14 != -1 ? 0 : v15; + v8 = v14 == -1 ? 0 : v8; + } + } + v11 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v11 = 0; + if ( a3[2] >= a3[3] ) + { + v16 = v10; + v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v16; + v11 = v13 == -1; + } + } + } + if ( v10 == v11 ) + *a6 |= 2u; + return v8; +} +// 44EF99: variable 'v9' is possibly undefined + +//----- (0044F030) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_time( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // eax + _DWORD *v8; // esi + int v9; // edx + char v10; // dl + char v11; // al + int v13; // eax + int v14; // eax + char v15; // [esp+2Ch] [ebp-20h] + char v16; // [esp+2Ch] [ebp-20h] + + v7 = std::use_facet>(a5 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + *(char **)(v7[2] + 16)); + v10 = v9 == -1; + v15 = v10 & (v8 != 0); + if ( v15 ) + { + v10 = 0; + if ( v8[2] >= v8[3] ) + { + v14 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v8 + 36))(v8, 0); + v10 = v14 != -1 ? 0 : v15; + v8 = v14 == -1 ? 0 : v8; + } + } + v11 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v11 = 0; + if ( a3[2] >= a3[3] ) + { + v16 = v10; + v13 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v16; + v11 = v13 == -1; + } + } + } + if ( v10 == v11 ) + *a6 |= 2u; + return v8; +} +// 44F099: variable 'v9' is possibly undefined + +//----- (0044F130) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_year( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + int v7; // edx + _DWORD *v8; // ecx + _DWORD *v9; // ebp + int v10; // ebx + char v11; // bl + char v12; // al + int v14; // eax + char v15; // [esp+34h] [ebp-38h] + _DWORD *v16; // [esp+38h] [ebp-34h] + int v17; // [esp+48h] [ebp-24h] BYREF + int v18[8]; // [esp+4Ch] [ebp-20h] BYREF + + v18[0] = 0; + v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v17, 0, 9999, 4u, a5, v18); + v9 = v8; + if ( v18[0] ) + { + *a6 |= 4u; + } + else + { + v10 = v17 - 1900; + if ( v17 < 0 ) + v10 = v17 + 100; + *(_DWORD *)(a7 + 20) = v10; + } + v11 = v7 == -1; + v15 = v11 & (v8 != 0); + if ( v15 ) + { + v11 = 0; + if ( v8[2] >= v8[3] ) + { + v16 = v8; + v14 = (*(int (**)(void))(*v8 + 36))(); + v11 = v14 != -1 ? 0 : v15; + v9 = v14 == -1 ? 0 : v16; + } + } + v12 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v12 = 0; + if ( a3[2] >= a3[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; + } + } + if ( v11 == v12 ) + *a6 |= 2u; + return v9; +} +// 44F1C1: variable 'v7' is possibly undefined +// 44F130: using guessed type int var_20[8]; + +//----- (0044F290) -------------------------------------------------------- +int __fastcall std::time_get>::get_weekday(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); +} + +//----- (0044F2A0) -------------------------------------------------------- +int std::time_get>::do_date_order() +{ + return 0; +} + +//----- (0044F2B0) -------------------------------------------------------- +int __fastcall std::time_get>::get_monthname(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); +} + +//----- (0044F2C0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_num( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int *a5, + signed int a6, + int a7, + unsigned int a8, + int a9, + _DWORD *a10) +{ + int v10; // ebx + unsigned int v12; // ebp + int v13; // edi + char v14; // bl + _BYTE *v15; // eax + int v16; // ebx + int v17; // edx + int (__stdcall *v18)(unsigned __int8, int); // edx + unsigned int v19; // eax + bool v20; // dl + bool v21; // bl + int v22; // eax + int v24; // eax + unsigned int v26; // [esp+20h] [ebp-2Ch] + _BYTE *v27; // [esp+24h] [ebp-28h] + bool v29; // [esp+2Fh] [ebp-1Dh] + + v10 = 10; + v27 = std::use_facet>(a9 + 108); + if ( a8 != 2 ) + v10 = a8 == 4 ? 1000 : 1; + v26 = 0; + v12 = v10; + v13 = 0; + while ( 1 ) + { + v20 = a2 == -1; + v21 = v20 && a1 != 0; + if ( v21 ) + { + if ( a1[2] >= a1[3] ) + { + v24 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v20 = a2 == -1; + v14 = v24 == -1 && v21; + a1 = v24 == -1 ? 0 : a1; + } + else + { + v14 = 0; + } + } + else + { + v14 = a2 == -1; + } + if ( a3 && a4 == -1 ) + { + if ( a3[2] >= a3[3] ) + { + v29 = v20; + v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v20 = v29; + if ( v22 == -1 ) + { + a3 = 0; + v14 ^= 1u; + } + } + } + else + { + v14 ^= a4 == -1; + } + if ( v26 >= a8 || !v14 ) + break; + if ( a1 && v20 ) + { + v15 = (_BYTE *)a1[2]; + if ( (unsigned int)v15 >= a1[3] ) + { + v15 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v15 == (_BYTE *)-1 ) + { + v16 = 255; + LOBYTE(v15) = -1; + a1 = 0; + } + else + { + v16 = (unsigned __int8)v15; + } + } + else + { + v16 = (unsigned __int8)*v15; + LOBYTE(v15) = *v15; + } + } + else + { + LOBYTE(v15) = a2; + v16 = (unsigned __int8)a2; + } + v17 = (char)v27[v16 + 285]; + if ( !(_BYTE)v17 ) + { + v18 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v27 + 32); + if ( v18 == std::ctype::do_narrow ) + { + if ( (_BYTE)v15 == 42 ) + goto LABEL_32; + } + else + { + LOBYTE(v15) = v18((unsigned __int8)v15, 42); + if ( (_BYTE)v15 == 42 ) + goto LABEL_32; + } + v17 = (char)v15; + v27[v16 + 285] = (_BYTE)v15; + } + if ( (unsigned __int8)(v17 - 48) > 9u ) + goto LABEL_32; + v13 = v17 + 10 * v13 - 48; + if ( (int)(v13 * v12) > a7 || (int)(v12 + v13 * v12) <= a6 ) + goto LABEL_32; + v19 = a1[2]; + v12 /= 0xAu; + if ( v19 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v19 + 1; + ++v26; + a2 = -1; + } + if ( v26 == a8 ) + { +LABEL_35: + *a5 = v13; + return a1; + } +LABEL_32: + if ( a8 == 4 && v26 == 2 ) + { + v13 -= 100; + goto LABEL_35; + } + *a10 |= 4u; + return a1; +} + +//----- (0044F580) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_weekday( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // dl + char v14; // al + int v16; // eax + int v17; // eax + char v18; // [esp+38h] [ebp-64h] + char v19; // [esp+38h] [ebp-64h] + _DWORD *v20; // [esp+3Ch] [ebp-60h] + unsigned int v21; // [esp+40h] [ebp-5Ch] BYREF + int v22; // [esp+44h] [ebp-58h] BYREF + int v23[21]; // [esp+48h] [ebp-54h] BYREF + + v22 = 0; + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v23[0] = v7[18]; + v23[1] = v7[19]; + v23[2] = v7[20]; + v23[3] = v7[21]; + v23[4] = v7[22]; + v23[5] = v7[23]; + v23[6] = v7[24]; + v23[7] = v7[11]; + v23[8] = v7[12]; + v23[9] = v7[13]; + v23[10] = v7[14]; + v23[11] = v7[15]; + v8 = v7[16]; + v9 = v7[17]; + v23[12] = v8; + v23[13] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v21, + (int)v23, + 7u, + a5, + &v22); + v12 = v11; + if ( v22 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 24) = v21; + v13 = v10 == -1; + v18 = v13 & (v11 != 0); + if ( v18 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v20 = v11; + v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v17 != -1 ? 0 : v18; + v12 = v17 == -1 ? 0 : v20; + } + } + v14 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v14 = 0; + if ( a3[2] >= a3[3] ) + { + v19 = v13; + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v19; + v14 = v16 == -1; + } + } + } + if ( v13 == v14 ) + *a6 |= 2u; + return v12; +} +// 44F68F: variable 'v10' is possibly undefined + +//----- (0044F750) -------------------------------------------------------- +int __stdcall std::time_get>::_M_extract_name( + unsigned __int64 a1, + _DWORD *a2, + int a3, + _DWORD *a4, + int a5, + _DWORD *a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + void *v9; // esp + void *v10; // esp + char v11; // dl + unsigned __int8 v12; // bl + char v14; // dl + _DWORD *v15; // esi + int v16; // edx + unsigned int v17; // ebx + int v18; // edi + char v19; // al + int v20; // ecx + _DWORD *v21; // edi + _DWORD *v22; // edx + void *v23; // edi + size_t v24; // eax + unsigned int v25; // ebx + size_t v26; // eax + void *v27; // edi + unsigned int v28; // eax + char v29; // si + unsigned __int8 v30; // si + unsigned int i; // esi + char v32; // di + char v33; // al + char *v34; // eax + unsigned int v35; // eax + int v36; // eax + const char *v37; // edi + char *v38; // ebx + size_t v39; // eax + unsigned int v40; // esi + _DWORD **v41; // edi + unsigned __int8 v42; // bl + char v43; // bl + char v44; // al + _BYTE *v45; // eax + unsigned __int8 v46; // dl + char v47; // bl + int v48; // edx + bool v49; // zf + int v50; // eax + int v51; // esi + int v52; // eax + int v53; // eax + char *v54; // eax + int v55; // eax + int v56; // eax + int v57; // eax + int v58; // eax + int v59; // edx + int v60; // edx + int v61; // eax + _DWORD *v62; // [esp+10h] [ebp-38h] BYREF + _DWORD *v63; // [esp+14h] [ebp-34h] + void *v64; // [esp+18h] [ebp-30h] + unsigned __int8 v65; // [esp+1Fh] [ebp-29h] + unsigned __int64 v66; // [esp+20h] [ebp-28h] + _DWORD **v67; // [esp+28h] [ebp-20h] + unsigned int v68; // [esp+2Ch] [ebp-1Ch] + + v67 = (_DWORD **)HIDWORD(a1); + v66 = a1; + v62 = a2; + v64 = std::use_facet>(a7 + 108); + v8 = 16 * ((unsigned int)(4 * (_DWORD)a6 + 27) >> 4); + v9 = alloca(v8); + v10 = alloca(v8); + LOBYTE(v68) = HIDWORD(a1) == -1; + if ( ((unsigned __int8)v68 & ((_DWORD)a1 != 0)) != 0 ) + { + if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) + { + v65 = v68 & ((_DWORD)a1 != 0); + v55 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); + v11 = v55 != -1 ? 0 : v65; + LODWORD(v66) = v55 == -1 ? 0 : v66; + } + else + { + v11 = 0; + } + } + else + { + v11 = v68; + } + v65 = a3 == -1; + if ( (v65 & (a2 != 0)) != 0 ) + { + if ( a2[2] >= a2[3] ) + { + v56 = *a2; + LOBYTE(v63) = v11; + v57 = (*(int (__fastcall **)(_DWORD *))(v56 + 36))(a2); + v11 = (char)v63; + v12 = v57 == -1 && v65 & (a2 != 0); + v62 = v57 == -1 ? 0 : a2; + } + else + { + v12 = 0; + } + } + else + { + v12 = v65; + } + if ( v11 == v12 + || ((_DWORD)v66 && (_BYTE)v68 + ? ((v54 = *(char **)(v66 + 8), (unsigned int)v54 >= *(_DWORD *)(v66 + 12)) + ? (v58 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66), + v14 = v58 != -1 ? v58 : -1, + LODWORD(v66) = v58 == -1 ? 0 : v66) + : (v14 = *v54)) + : (v14 = (char)v67), + !a6) ) + { +LABEL_6: + *a8 |= 4u; + return v66; + } + LOBYTE(v68) = v14; + v15 = 0; + v16 = a5; + v17 = 0; + v67 = &v62; + v18 = (int)v64; + do + { + while ( 1 ) + { + v20 = **(char **)(v16 + 4 * (_DWORD)v15); + if ( (_BYTE)v20 == (_BYTE)v68 ) + break; + a5 = v16; + v19 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v18 + 8))(v18, v20); + v16 = a5; + if ( v19 == (_BYTE)v68 ) + break; + v15 = (_DWORD *)((char *)v15 + 1); + if ( a6 == v15 ) + goto LABEL_16; + } + v67[v17++] = v15; + v15 = (_DWORD *)((char *)v15 + 1); + } + while ( a6 != v15 ); +LABEL_16: + v21 = v67; + v67 = 0; + if ( v17 <= 1 ) + goto LABEL_40; + v22 = v21; + do + { + v23 = (void *)*v22; + v63 = v22; + v24 = strlen(*(const char **)(a5 + 4 * (_DWORD)v23)); + HIDWORD(v66) = v17; + v25 = 1; + v68 = v24; + v64 = v23; + do + { + v26 = strlen(*(const char **)(a5 + 4 * v63[v25])); + if ( v68 > v26 ) + v68 = v26; + ++v25; + } + while ( v25 < HIDWORD(v66) ); + v22 = v63; + v17 = HIDWORD(v66); + v27 = v64; + v28 = *(_DWORD *)(v66 + 8); + if ( v28 >= *(_DWORD *)(v66 + 12) ) + { + HIDWORD(v66) = v63; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 40))(v66); + v22 = (_DWORD *)HIDWORD(v66); + } + else + { + *(_DWORD *)(v66 + 8) = v28 + 1; + } + v67 = (_DWORD **)((char *)v67 + 1); + if ( (unsigned int)v67 >= v68 ) + goto LABEL_58; + LOBYTE(v68) = 0; + if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) + { + v51 = v66; + v52 = *(_DWORD *)v66; + HIDWORD(v66) = v22; + v53 = (*(int (__fastcall **)(_DWORD))(v52 + 36))(v66); + v22 = (_DWORD *)HIDWORD(v66); + LOBYTE(v68) = v53 == -1; + LODWORD(v66) = ((unsigned __int8)v68 - 1) & v51; + } + v29 = v65 & (v62 != 0); + if ( v29 ) + { + if ( v62[2] < v62[3] ) + { + if ( !(_BYTE)v68 ) + goto LABEL_58; + goto LABEL_30; + } + HIDWORD(v66) = v22; + v50 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); + v22 = (_DWORD *)HIDWORD(v66); + v30 = v50 != -1 ? 0 : v29; + v62 = v50 == -1 ? 0 : v62; + } + else + { + v30 = v65; + } + if ( (_BYTE)v68 == v30 ) + goto LABEL_58; +LABEL_30: + for ( i = 0; ; v27 = (void *)v22[i] ) + { + v32 = *((_BYTE *)v67 + *(_DWORD *)(a5 + 4 * (_DWORD)v27)); + v33 = -1; + if ( (_DWORD)v66 ) + { + v34 = *(char **)(v66 + 8); + if ( (unsigned int)v34 >= *(_DWORD *)(v66 + 12) ) + { + v68 = (unsigned int)v22; + v48 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); + v33 = v48 != -1 ? v48 : -1; + v49 = v48 == -1; + v22 = (_DWORD *)v68; + LODWORD(v66) = v49 ? 0 : v66; + } + else + { + v33 = *v34; + } + } + if ( v32 == v33 ) + break; + v22[i] = v22[--v17]; + if ( v17 <= i ) + goto LABEL_38; +LABEL_32: + ; + } + if ( v17 > ++i ) + goto LABEL_32; +LABEL_38: + ; + } + while ( v17 > 1 ); + HIDWORD(v66) = -1; + v21 = v22; +LABEL_40: + if ( v17 != 1 ) + goto LABEL_6; + v35 = *(_DWORD *)(v66 + 8); + if ( v35 >= *(_DWORD *)(v66 + 12) ) + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 40))(v66); + else + *(_DWORD *)(v66 + 8) = v35 + 1; + v36 = *v21; + v37 = *(const char **)(a5 + 4 * *v21); + HIDWORD(v66) = v36; + v38 = (char *)v67 + 1; + v39 = strlen(v37); + v67 = (_DWORD **)v39; + if ( (unsigned int)v38 < v39 ) + { + v68 = (unsigned int)v37; + v40 = v66; + v41 = (_DWORD **)v38; + while ( 1 ) + { + while ( 1 ) + { + v46 = 0; + if ( *(_DWORD *)(v40 + 8) >= *(_DWORD *)(v40 + 12) ) + { + v46 = (*(int (__fastcall **)(unsigned int, _DWORD))(*(_DWORD *)v40 + 36))(v40, 0) == -1; + v40 &= v46 - 1; + } + v47 = v65 & (v62 != 0); + if ( v47 ) + { + if ( v62[2] >= v62[3] ) + { + LOBYTE(v66) = v46; + v61 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); + v46 = v66; + v42 = v61 != -1 ? 0 : v47; + v62 = v61 == -1 ? 0 : v62; + } + else + { + v42 = 0; + } + } + else + { + v42 = v65; + } + if ( v46 == v42 ) + { +LABEL_73: + v66 = v40 | 0xFFFFFFFF00000000LL; + goto LABEL_6; + } + v43 = *((_BYTE *)v41 + v68); + v44 = -1; + if ( v40 ) + break; +LABEL_48: + if ( v43 != v44 ) + goto LABEL_73; + v45 = *(_BYTE **)(v40 + 8); + if ( (unsigned int)v45 < *(_DWORD *)(v40 + 12) ) + goto LABEL_50; + v41 = (_DWORD **)((char *)v41 + 1); + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 40))(v40); + if ( v41 == v67 ) + { +LABEL_75: + LODWORD(v66) = v40; + goto LABEL_76; + } + } + v45 = *(_BYTE **)(v40 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(v40 + 12) ) + { + v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 36))(v40); + v44 = v60 != -1 ? v60 : -1; + v40 &= (v60 == -1) - 1; + goto LABEL_48; + } + if ( v43 != *v45 ) + goto LABEL_73; +LABEL_50: + v41 = (_DWORD **)((char *)v41 + 1); + *(_DWORD *)(v40 + 8) = v45 + 1; + if ( v41 == v67 ) + goto LABEL_75; + } + } + if ( v38 != (char *)v39 ) + { +LABEL_58: + HIDWORD(v66) = -1; + goto LABEL_6; + } +LABEL_76: + v59 = HIDWORD(v66); + HIDWORD(v66) = -1; + *a4 = v59; + return v66; +} + +//----- (0044FCD0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_monthname( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // edx + int v9; // edx + int v10; // edx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // dl + char v14; // al + int v16; // eax + int v17; // eax + char v18; // [esp+38h] [ebp-94h] + char v19; // [esp+38h] [ebp-94h] + _DWORD *v20; // [esp+3Ch] [ebp-90h] + unsigned int v21; // [esp+48h] [ebp-84h] BYREF + int v22; // [esp+4Ch] [ebp-80h] BYREF + int v23[31]; // [esp+50h] [ebp-7Ch] BYREF + + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v23[0] = v7[37]; + v23[1] = v7[38]; + v23[2] = v7[39]; + v23[3] = v7[40]; + v23[4] = v7[41]; + v23[5] = v7[42]; + v23[6] = v7[43]; + v23[7] = v7[44]; + v23[8] = v7[45]; + v23[9] = v7[46]; + v23[10] = v7[47]; + v23[11] = v7[48]; + v23[12] = v7[25]; + v23[13] = v7[26]; + v23[14] = v7[27]; + v23[15] = v7[28]; + v8 = v7[29]; + v22 = 0; + v23[16] = v8; + v23[17] = v7[30]; + v23[18] = v7[31]; + v23[19] = v7[32]; + v23[20] = v7[33]; + v23[21] = v7[34]; + v9 = v7[35]; + v23[23] = v7[36]; + v23[22] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v21, + (int)v23, + 0xCu, + a5, + &v22); + v12 = v11; + if ( v22 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 16) = v21; + v13 = v10 == -1; + v18 = v13 & (v11 != 0); + if ( v18 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v20 = v11; + v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v17 != -1 ? 0 : v18; + v12 = v17 == -1 ? 0 : v20; + } + } + v14 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v14 = 0; + if ( a3[2] >= a3[3] ) + { + v19 = v13; + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v19; + v14 = v16 == -1; + } + } + } + if ( v13 == v14 ) + *a6 |= 2u; + return v12; +} +// 44FE7C: variable 'v10' is possibly undefined + +//----- (0044FF40) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_via_format( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7, + char *a8) +{ + size_t v8; // esi + _BYTE *v9; // ebx + _BYTE *v10; // edi + char v12; // dl + int v13; // edx + char v14; // al + char v15; // cl + int (__stdcall *v16)(unsigned __int8, int); // eax + int v17; // ebp + char v18; // dl + char v19; // al + int (__stdcall *v20)(unsigned __int8, int); // edx + char v21; // dl + char v22; // dl + int v23; // eax + int v24; // eax + int v25; // esi + char v26; // al + int (__stdcall *v27)(unsigned __int8, int); // edx + _DWORD *v28; // edi + _BYTE *v30; // eax + int v31; // edx + int v32; // edx + _DWORD *v33; // eax + int v34; // eax + int v35; // edx + _DWORD *v36; // eax + int v37; // eax + int v38; // edx + int v39; // esi + int v40; // edx + char v41; // al + int (__stdcall *v42)(unsigned __int8, int); // eax + unsigned int v43; // eax + int v44; // eax + _DWORD *v45; // eax + int v46; // edx + char v47; // si + char v48; // dl + int v49; // esi + char v50; // al + int v51; // esi + char v52; // al + _DWORD *v53; // eax + int v54; // edx + int v55; // edx + _DWORD *v56; // eax + _DWORD *v57; // eax + int v58; // edx + char v59; // al + void (__thiscall *v60)(_BYTE *, const char *, const char *, int *); // eax + _DWORD *v61; // eax + int v62; // edx + int v63; // edx + char v64; // al + void (__thiscall *v65)(_BYTE *, const char *, const char *, int *); // eax + int v66; // edx + char v67; // al + void (__thiscall *v68)(_BYTE *, const char *, void *, int *); // eax + int v69; // esi + char v70; // al + int (__stdcall *v71)(unsigned __int8, int); // eax + _DWORD *v72; // eax + _DWORD *v73; // eax + int v74; // edx + int v75; // eax + unsigned __int8 *v76; // eax + int v77; // edx + int v78; // eax + unsigned __int8 *v79; // eax + unsigned __int8 *v80; // eax + unsigned __int8 *v81; // eax + int v82; // eax + int v83; // eax + int v84; // eax + char *v85; // edx + _BYTE *v86; // eax + _BYTE *v87; // eax + char *Str; // [esp+0h] [ebp-BCh] + int v89; // [esp+14h] [ebp-A8h] + int v90; // [esp+20h] [ebp-9Ch] + bool v91; // [esp+3Ah] [ebp-82h] + bool v92; // [esp+3Ah] [ebp-82h] + char v93; // [esp+3Ah] [ebp-82h] + char v94; // [esp+3Bh] [ebp-81h] + char v95; // [esp+3Bh] [ebp-81h] + size_t v98; // [esp+44h] [ebp-78h] + char v99; // [esp+44h] [ebp-78h] + size_t v100; // [esp+4Ch] [ebp-70h] + char *v101; // [esp+50h] [ebp-6Ch] + bool v102; // [esp+50h] [ebp-6Ch] + _DWORD *v103; // [esp+58h] [ebp-64h] + int v104; // [esp+5Ch] [ebp-60h] + int v105; // [esp+5Ch] [ebp-60h] + int v106; // [esp+68h] [ebp-54h] BYREF + int v107; // [esp+6Ch] [ebp-50h] BYREF + int v108[3]; // [esp+70h] [ebp-4Ch] BYREF + int v109; // [esp+7Ch] [ebp-40h] + int v110; // [esp+80h] [ebp-3Ch] + int v111; // [esp+84h] [ebp-38h] + int v112; // [esp+88h] [ebp-34h] + int v113; // [esp+8Ch] [ebp-30h] + int v114; // [esp+90h] [ebp-2Ch] + int v115; // [esp+94h] [ebp-28h] + int v116; // [esp+98h] [ebp-24h] + int v117; // [esp+9Ch] [ebp-20h] + + v8 = 0; + v103 = std::use_facet>(a5 + 108); + v9 = std::use_facet>(a5 + 108); + v106 = 0; + v100 = strlen(a8); + v10 = v9; + while ( 1 ) + { + v91 = a2 == -1; + if ( v91 && a1 != 0 ) + { + if ( a1[2] >= a1[3] ) + { + v78 = (*(int (__thiscall **)(_DWORD *, char *))(*a1 + 36))(a1, Str); + v12 = v78 == -1 && v91 && a1 != 0; + a1 = v78 == -1 ? 0 : a1; + } + else + { + v12 = 0; + } + } + else + { + v12 = a2 == -1; + } + v94 = a4 == -1; + if ( a3 && a4 == -1 ) + { + if ( a3[2] >= a3[3] ) + { + v99 = v12; + v24 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v12 = v99; + if ( v24 == -1 ) + { + a3 = 0; + v12 = v99 ^ 1; + } + } + } + else + { + v12 ^= v94; + } + if ( v8 >= v100 || !v12 ) + break; + if ( v106 ) + { + v28 = a1; +LABEL_44: + *a6 |= 4u; + return v28; + } + v13 = (unsigned __int8)a8[v8]; + v101 = &a8[v8]; + v98 = v8 + 1; + v14 = v10[v13 + 285]; + v15 = a8[v8]; + if ( v14 ) + { +LABEL_15: + if ( v14 != 37 ) + goto LABEL_25; + v17 = (unsigned __int8)a8[v8 + 1]; + v18 = v10[v17 + 285]; + v19 = a8[v8 + 1]; + if ( !v18 ) + { + v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v20 != std::ctype::do_narrow ) + v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v10, v19, 0); + if ( !v19 ) + { +LABEL_40: + v106 |= 4u; + goto LABEL_41; + } + v10[v17 + 285] = v19; + v18 = v19; + } + v107 = 0; + if ( (v18 == 69 || v18 == 79) + && (v98 = v8 + 2, v25 = (unsigned __int8)a8[v8 + 2], v18 = v10[v25 + 285], v26 = v25, !v18) ) + { + v27 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v27 != std::ctype::do_narrow ) + v26 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v27)(v10, (char)v25, 0); + if ( !v26 ) + goto LABEL_40; + v10[v25 + 285] = v26; + v21 = v26 - 65; + if ( (unsigned __int8)(v26 - 65) > 0x38u ) + goto LABEL_40; + } + else + { + v21 = v18 - 65; + } + switch ( v21 ) + { + case 0: + v36 = (_DWORD *)v103[2]; + v108[0] = v36[11]; + v108[1] = v36[12]; + v108[2] = v36[13]; + v109 = v36[14]; + v110 = v36[15]; + v111 = v36[16]; + v37 = v36[17]; + goto LABEL_62; + case 1: + v72 = (_DWORD *)v103[2]; + v108[0] = v72[25]; + v108[1] = v72[26]; + v108[2] = v72[27]; + v109 = v72[28]; + v110 = v72[29]; + v111 = v72[30]; + v112 = v72[31]; + v113 = v72[32]; + v114 = v72[33]; + v115 = v72[34]; + v116 = v72[35]; + v34 = v72[36]; + goto LABEL_59; + case 2: + case 24: + case 56: + a1 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 0, + 9999, + 4u, + a5, + &v106); + a2 = v31; + if ( !v106 ) + { + v32 = v107 - 1900; + if ( v107 < 0 ) + v32 = v107 + 100; + a7[5] = v32; + } + break; + case 3: + v59 = v10[28]; + if ( v59 == 1 ) + goto LABEL_102; + if ( !v59 ) + std::ctype::_M_widen_init((int)v10); + v60 = *(void (__thiscall **)(_BYTE *, const char *, const char *, int *))(*(_DWORD *)v10 + 28); + if ( (char *)v60 == (char *)std::ctype::do_widen ) +LABEL_102: + strcpy((char *)v108, "%m/%d/%y"); + else + v60(v10, "%m/%d/%y", "%H:%M", v108); + goto LABEL_103; + case 7: + v61 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 0, + 23, + 2u, + a5, + &v106); + goto LABEL_105; + case 8: + v61 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 1, + 12, + 2u, + a5, + &v106); +LABEL_105: + a1 = v61; + a2 = v62; + if ( !v106 ) + a7[2] = v107; + break; + case 12: + a1 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 0, + 59, + 2u, + a5, + &v106); + a2 = v63; + if ( !v106 ) + a7[1] = v107; + break; + case 17: + v64 = v10[28]; + if ( v64 == 1 ) + goto LABEL_114; + if ( !v64 ) + std::ctype::_M_widen_init((int)v10); + v65 = *(void (__thiscall **)(_BYTE *, const char *, const char *, int *))(*(_DWORD *)v10 + 28); + if ( (char *)v65 == (char *)std::ctype::do_widen ) +LABEL_114: + strcpy((char *)v108, "%H:%M"); + else + v65(v10, "%H:%M", "%H:%M:%S", v108); + goto LABEL_103; + case 18: + a1 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 0, + 61, + 2u, + a5, + &v106); + a2 = v66; + if ( !v106 ) + *a7 = v107; + break; + case 19: + v67 = v10[28]; + if ( v67 == 1 ) + goto LABEL_121; + if ( !v67 ) + std::ctype::_M_widen_init((int)v10); + v68 = *(void (__thiscall **)(_BYTE *, const char *, void *, int *))(*(_DWORD *)v10 + 28); + if ( (char *)v68 == (char *)std::ctype::do_widen ) +LABEL_121: + strcpy((char *)v108, "%H:%M:%S"); + else + v68(v10, "%H:%M:%S", &unk_4ECD6E, v108); +LABEL_103: + v57 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + a2, + (int)a3, + a4, + a5, + (int)&v106, + (int)a7, + (char *)v108); + goto LABEL_97; + case 23: + v57 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + a2, + (int)a3, + a4, + a5, + (int)&v106, + (int)a7, + *(char **)(v103[2] + 16)); + goto LABEL_97; + case 25: + if ( a1 && a2 == -1 ) + { + v81 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v81 >= a1[3] ) + { + v44 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v44 == -1 ) + { + v44 = 255; + a1 = 0; + } + else + { + v44 = (unsigned __int8)v44; + } + } + else + { + v44 = *v81; + } + } + else + { + v44 = (unsigned __int8)a2; + } + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * v44) & 1) == 0 ) + goto LABEL_40; + v45 = (_DWORD *)std::time_get>::_M_extract_name( + __PAIR64__(a2, (unsigned int)a1), + a3, + a4, + v108, + (int)std::__timepunct_cache::_S_timezones, + (_DWORD *)0xE, + a5, + &v106); + a1 = v45; + v92 = v46 == -1; + v105 = v46; + a2 = v46; + v47 = v92; + v102 = v92 && v45 != 0; + if ( v102 ) + { + v47 = 0; + if ( v45[2] >= v45[3] && (*(int (__fastcall **)(_DWORD *))(*v45 + 36))(v45) == -1 ) + { + v47 = v102; + a1 = 0; + v102 = 0; + } + } + v48 = v94 & (a3 != 0); + if ( v48 ) + { + v94 = 0; + if ( a3[2] >= a3[3] ) + { + v95 = v48; + v82 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v94 = v82 != -1 ? 0 : v95; + a3 = v82 == -1 ? 0 : a3; + } + } + if ( v47 != v94 && !(v108[0] | v106) ) + { + LOBYTE(v49) = v105; + if ( v102 ) + { + v86 = (_BYTE *)a1[2]; + if ( (unsigned int)v86 >= a1[3] ) + { + v49 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + a1 = v49 == -1 ? 0 : a1; + } + else + { + LOBYTE(v49) = *v86; + } + } + if ( v10[28] ) + { + v50 = v10[74]; + } + else + { + std::ctype::_M_widen_init((int)v10); + v50 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 45); + } + if ( (_BYTE)v49 == v50 + || (a1 && v92 + ? ((v87 = (_BYTE *)a1[2], (unsigned int)v87 >= a1[3]) + ? (v51 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1), a1 = v51 == -1 ? 0 : a1) + : (_DWORD *)(LOBYTE(v51) = *v87)) + : (_DWORD *)(LOBYTE(v51) = v105), + !v10[28] + ? (std::ctype::_M_widen_init((int)v10), + v52 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 43), + Str = v85) + : (char *)(v52 = v10[72]), + (_BYTE)v51 == v52) ) + { + v53 = std::time_get>::_M_extract_num( + a1, + v105, + a3, + a4, + v108, + 0, + 23, + 2u, + a5, + &v106); + a1 = std::time_get>::_M_extract_num( + v53, + v54, + a3, + a4, + v108, + 0, + 59, + 2u, + a5, + &v106); + a2 = v55; + } + } + break; + case 32: + v56 = (_DWORD *)v103[2]; + v108[0] = v56[18]; + v108[1] = v56[19]; + v108[2] = v56[20]; + v109 = v56[21]; + v110 = v56[22]; + v111 = v56[23]; + v37 = v56[24]; +LABEL_62: + v112 = v37; + a1 = (_DWORD *)std::time_get>::_M_extract_name( + __PAIR64__(a2, (unsigned int)a1), + a3, + a4, + &v107, + (int)v108, + (_DWORD *)7, + a5, + &v106); + a2 = v38; + if ( !v106 ) + a7[6] = v107; + break; + case 33: + case 39: + v33 = (_DWORD *)v103[2]; + v108[0] = v33[37]; + v108[1] = v33[38]; + v108[2] = v33[39]; + v109 = v33[40]; + v110 = v33[41]; + v111 = v33[42]; + v112 = v33[43]; + v113 = v33[44]; + v114 = v33[45]; + v115 = v33[46]; + v116 = v33[47]; + v34 = v33[48]; +LABEL_59: + v117 = v34; + a1 = (_DWORD *)std::time_get>::_M_extract_name( + __PAIR64__(a2, (unsigned int)a1), + a3, + a4, + &v107, + (int)v108, + (_DWORD *)0xC, + a5, + &v106); + a2 = v35; + if ( !v106 ) + a7[4] = v107; + break; + case 34: + v57 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + a2, + (int)a3, + a4, + a5, + (int)&v106, + (int)a7, + *(char **)(v103[2] + 24)); + goto LABEL_97; + case 35: + v90 = a5; + v89 = 1; + goto LABEL_136; + case 36: + if ( a1 && a2 == -1 ) + { + v76 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v76 < a1[3] ) + { + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * *v76) & 0x20) != 0 ) + goto LABEL_144; + goto LABEL_151; + } + v75 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + a1 = v75 == -1 ? 0 : a1; + } + else + { + LOBYTE(v75) = a2; + } + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + 2 * (unsigned __int8)v75) & 0x20) != 0 ) + { + v76 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v76 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else +LABEL_144: + a1[2] = v76 + 1; + v73 = std::time_get>::_M_extract_num( + a1, + -1, + a3, + a4, + &v107, + 1, + 9, + 1u, + a5, + &v106); + goto LABEL_137; + } +LABEL_151: + v90 = a5; + v89 = 10; +LABEL_136: + v73 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + v89, + 31, + 2u, + v90, + &v106); +LABEL_137: + a1 = v73; + a2 = v74; + if ( !v106 ) + a7[3] = v107; + break; + case 44: + a1 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v107, + 1, + 12, + 2u, + a5, + &v106); + a2 = v77; + if ( !v106 ) + a7[4] = v107 - 1; + break; + case 45: + if ( a1 && a2 == -1 ) + { + v79 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v79 >= a1[3] ) + { + v83 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v40 = v83; + if ( v83 == -1 ) + { + v40 = -1; + v39 = 255; + a1 = 0; + } + else + { + v39 = (unsigned __int8)v83; + } + } + else + { + v39 = *v79; + v40 = v39; + } + } + else + { + v39 = (unsigned __int8)a2; + v40 = a2; + } + v41 = v10[v39 + 285]; + if ( v41 ) + goto LABEL_72; + v42 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v42 != std::ctype::do_narrow ) + v40 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v42)(v10, (char)v40, 0); + if ( (_BYTE)v40 ) + { + v10[v39 + 285] = v40; + v41 = v40; +LABEL_72: + if ( v41 == 10 ) + goto LABEL_73; + } + goto LABEL_40; + case 51: + if ( a1 && a2 == -1 ) + { + v80 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v80 >= a1[3] ) + { + v84 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v84 == -1 ) + { + v69 = 255; + v40 = -1; + a1 = 0; + } + else + { + v40 = v84; + v69 = (unsigned __int8)v84; + } + } + else + { + v69 = *v80; + v40 = v69; + } + } + else + { + v40 = a2; + v69 = (unsigned __int8)a2; + } + v70 = v10[v69 + 285]; + if ( v70 ) + goto LABEL_131; + v71 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v71 != std::ctype::do_narrow ) + v40 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v71)(v10, (char)v40, 0); + if ( !(_BYTE)v40 ) + goto LABEL_40; + v10[v69 + 285] = v40; + v70 = v40; +LABEL_131: + if ( v70 != 9 ) + goto LABEL_40; +LABEL_73: + v43 = a1[2]; + if ( v43 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *, int))(*a1 + 40))(a1, v40); + else + a1[2] = v43 + 1; + a2 = -1; + break; + case 55: + v57 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + a2, + (int)a3, + a4, + a5, + (int)&v106, + (int)a7, + *(char **)(v103[2] + 8)); +LABEL_97: + a1 = v57; + a2 = v58; + break; + default: + goto LABEL_40; + } +LABEL_41: + v8 = v98 + 1; + } + else + { + v16 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v16 != std::ctype::do_narrow ) + { + v104 = (unsigned __int8)a8[v8]; + v15 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v16)(v10, (char)v13, 0); + v13 = v104; + } + if ( v15 ) + { + v10[v13 + 285] = v15; + v14 = v15; + goto LABEL_15; + } +LABEL_25: + v22 = *v101; + if ( !a1 || a2 != -1 ) + { + LOBYTE(v23) = a2; + goto LABEL_28; + } + v30 = (_BYTE *)a1[2]; + if ( (unsigned int)v30 >= a1[3] ) + { + v93 = *v101; + v23 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v22 = v93; + a1 = v23 == -1 ? 0 : a1; +LABEL_28: + if ( v22 != (_BYTE)v23 ) + goto LABEL_29; + v30 = (_BYTE *)a1[2]; + if ( (unsigned int)v30 < a1[3] ) + { +LABEL_47: + a1[2] = v30 + 1; + goto LABEL_48; + } + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); +LABEL_48: + a2 = -1; + ++v8; + } + else + { + if ( v22 == *v30 ) + goto LABEL_47; +LABEL_29: + v106 |= 4u; + ++v8; + } + } + } + v28 = a1; + if ( v106 || v8 != v100 ) + goto LABEL_44; + return v28; +} +// 4502F0: variable 'v31' is possibly undefined +// 45041B: variable 'v35' is possibly undefined +// 4504D7: variable 'v38' is possibly undefined +// 4505D5: variable 'v46' is possibly undefined +// 450716: variable 'v54' is possibly undefined +// 450720: variable 'v55' is possibly undefined +// 4507C7: variable 'v58' is possibly undefined +// 450872: variable 'v62' is possibly undefined +// 450921: variable 'v63' is possibly undefined +// 4509DB: variable 'v66' is possibly undefined +// 450B8F: variable 'v74' is possibly undefined +// 450C96: variable 'v77' is possibly undefined +// 450CE8: variable 'Str' is possibly undefined +// 450FAF: variable 'v85' is possibly undefined +// 4E94E0: using guessed type void *std::__timepunct_cache::_S_timezones[2]; + +//----- (00451040) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + unsigned int *a5, + int a6, + unsigned int a7, + int a8, + _DWORD *a9) +{ + int v9; // eax + void *v10; // esp + void *v11; // esp + char v12; // dl + bool v13; // bl + char v14; // bl + int v15; // edi + unsigned int v16; // esi + char v17; // dl + bool v18; // bl + char v19; // bl + unsigned int v20; // edx + unsigned int *v21; // ecx + unsigned int v22; // edi + unsigned int v23; // eax + char *v25; // eax + unsigned int v26; // eax + int v27; // edx + unsigned int v28; // ebx + int v29; // edi + char v30; // al + int v31; // ecx + unsigned int v32; // eax + int v33; // eax + void *v34; // esp + int v35; // edi + void *v36; // esp + int v37; // ebx + int v38; // eax + int v39; // eax + _DWORD *v40; // ebx + int v41; // eax + int v42; // eax + int v43; // eax + _DWORD *v44; // ebx + int v45; // eax + _BYTE *v46; // eax + int v47; // eax + int v48; // eax + _DWORD *v49; // esi + int v50; // eax + _BYTE v51[8]; // [esp+10h] [ebp-48h] BYREF + _BYTE *v52; // [esp+18h] [ebp-40h] + _DWORD *v53; // [esp+1Ch] [ebp-3Ch] + int v54; // [esp+20h] [ebp-38h] + _DWORD *v55; // [esp+24h] [ebp-34h] + bool v56; // [esp+2Ah] [ebp-2Eh] + char v57; // [esp+2Bh] [ebp-2Dh] + int v58; // [esp+2Ch] [ebp-2Ch] + unsigned int *v59; // [esp+30h] [ebp-28h] + unsigned int *v60; // [esp+34h] [ebp-24h] + _BYTE *v61; // [esp+38h] [ebp-20h] + unsigned int v62; // [esp+3Ch] [ebp-1Ch] + + v55 = a1; + v54 = a2; + v53 = a3; + v60 = (unsigned int *)std::use_facet>(a8 + 108); + v9 = 16 * ((8 * a7 + 27) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + v59 = (unsigned int *)v51; + v12 = a2 == -1; + LOBYTE(v62) = v12 & (a1 != 0); + if ( (_BYTE)v62 ) + { + v12 = 0; + if ( v55[2] >= v55[3] ) + { + v38 = *v55; + LOBYTE(v61) = 0; + v39 = (*(int (__fastcall **)(_DWORD *))(v38 + 36))(v55); + v12 = (char)v61; + if ( v39 == -1 ) + { + v12 = v62; + v55 = 0; + LOBYTE(v62) = 0; + } + } + } + v56 = a4 == -1; + v13 = v56 && a3 != 0; + if ( v13 ) + { + if ( a3[2] >= a3[3] ) + { + v47 = *a3; + LOBYTE(v61) = v12; + v48 = (*(int (__fastcall **)(_DWORD *))(v47 + 36))(a3); + v12 = (char)v61; + v14 = v48 == -1 && v13; + v53 = v48 == -1 ? 0 : a3; + } + else + { + v14 = 0; + } + } + else + { + v14 = v56; + } + if ( v14 == v12 ) + { + v52 = 0; + v15 = 0; + v16 = 0; + } + else + { + if ( (_BYTE)v62 ) + { + v46 = (_BYTE *)v55[2]; + if ( (unsigned int)v46 >= v55[3] ) + { + v49 = v55; + v50 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + LOBYTE(v62) = v50 != -1 ? v50 : -1; + v55 = v50 == -1 ? 0 : v49; + } + else + { + LOBYTE(v62) = *v46; + } + } + else + { + LOBYTE(v62) = a2; + } + v15 = 2 * a7; + if ( 2 * a7 ) + { + v61 = (_BYTE *)(2 * a7); + v27 = a6; + v28 = 0; + v16 = 0; + v29 = (int)v60; + do + { + while ( 1 ) + { + v31 = **(char **)(v27 + 4 * v28); + if ( (_BYTE)v31 == (_BYTE)v62 ) + break; + a6 = v27; + v30 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v29 + 8))(v29, v31); + v27 = a6; + if ( v30 == (_BYTE)v62 ) + break; + if ( v61 == (_BYTE *)++v28 ) + goto LABEL_50; + } + v59[v16++] = v28++; + } + while ( v61 != (_BYTE *)v28 ); +LABEL_50: + if ( v16 ) + { + v32 = v55[2]; + if ( v32 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v32 + 1; + v33 = 16 * ((4 * v16 + 27) >> 4); + v34 = alloca(v33); + v35 = 0; + v36 = alloca(v33); + v62 = v16; + v52 = v51; + v61 = v51; + v37 = (int)v59; + do + { + *(_DWORD *)&v61[4 * v35] = strlen(*(const char **)(a6 + 4 * *(_DWORD *)(v37 + 4 * v35))); + ++v35; + } + while ( v62 != v35 ); + v54 = -1; + v16 = v62; + v15 = 1; + } + else + { + v52 = 0; + v15 = 0; + } + } + else + { + v52 = 0; + v16 = 0; + } + } + while ( 2 ) + { + v17 = v54 == -1; + LOBYTE(v62) = v17 & (v55 != 0); + if ( (_BYTE)v62 ) + { + if ( v55[2] >= v55[3] ) + { + v40 = v55; + v41 = *v55; + LOBYTE(v61) = v54 == -1; + v42 = (*(int (__fastcall **)(_DWORD *))(v41 + 36))(v55); + v17 = (char)v61; + LOBYTE(v62) = v42 != -1 ? 0 : v62; + v55 = v42 == -1 ? 0 : v40; + } + else + { + LOBYTE(v62) = 0; + } + } + else + { + LOBYTE(v62) = v54 == -1; + } + v18 = v56 && v53 != 0; + if ( v18 ) + { + if ( v53[2] < v53[3] ) + { + if ( !(_BYTE)v62 ) + break; + goto LABEL_11; + } + LOBYTE(v61) = v17; + v43 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); + v17 = (char)v61; + v19 = v43 == -1 && v18; + v53 = v43 == -1 ? 0 : v53; + } + else + { + v19 = v56; + } + if ( v19 == (_BYTE)v62 ) + break; +LABEL_11: + if ( v55 && v17 ) + { + v25 = (char *)v55[2]; + if ( (unsigned int)v25 >= v55[3] ) + { + v44 = v55; + v45 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + v57 = v45 != -1 ? v45 : -1; + v55 = v45 == -1 ? 0 : v44; + } + else + { + v57 = *v25; + } + } + else + { + v57 = v54; + } + if ( !v16 ) + { +LABEL_30: + *a9 |= 4u; + return v55; + } + v62 = v15; + v20 = 0; + v58 = 0; + v61 = v52; + do + { + while ( 1 ) + { + v21 = (unsigned int *)&v61[4 * v20]; + if ( *v21 > v62 ) + break; + ++v58; + ++v20; +LABEL_17: + if ( v20 >= v16 ) + goto LABEL_21; + } + v22 = v59[v20]; + v60 = &v59[v20]; + if ( *(_BYTE *)(*(_DWORD *)(a6 + 4 * v22) + v62) == v57 ) + { + ++v20; + goto LABEL_17; + } + *v60 = v59[--v16]; + *v21 = *(_DWORD *)&v61[4 * v16]; + } + while ( v20 < v16 ); +LABEL_21: + v15 = v62; + if ( v58 != v16 ) + { + v23 = v55[2]; + if ( v23 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v23 + 1; + v54 = -1; + ++v15; + continue; + } + break; + } + if ( v16 != 1 ) + { + if ( v16 == 2 && (*(_DWORD *)v52 == v15 || *((_DWORD *)v52 + 1) == v15) ) + goto LABEL_39; + goto LABEL_30; + } + if ( *(_DWORD *)v52 != v15 ) + goto LABEL_30; +LABEL_39: + v26 = *v59; + if ( *v59 >= a7 ) + v26 -= a7; + *a5 = v26; + return v55; +} + +//----- (00451500) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + int a2, + int a3, + _DWORD *a4, + int a5, + int a6, + _DWORD *a7, + _DWORD *a8, + unsigned __int8 *a9, + unsigned __int8 *a10) +{ + unsigned __int8 *v10; // esi + _DWORD *v12; // ebp + int v13; // edx + char v14; // dl + char v15; // bl + char v16; // dl + char v17; // bl + unsigned int v18; // eax + char v19; // dl + char v20; // bl + int v21; // edx + char v22; // bl + char v23; // al + int (__stdcall *v24)(unsigned __int8, int); // ebx + unsigned __int8 v25; // dl + int (__stdcall *v26)(unsigned __int8, int); // eax + int v27; // ecx + __int64 (__thiscall *v28)(void *, int, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int); // eax + _BYTE *v29; // eax + char v30; // dl + _BYTE *v31; // esi + _DWORD *v32; // eax + int v33; // edx + char v34; // bl + char v35; // dl + char v36; // al + unsigned __int8 *i; // esi + int j; // ebp + bool v40; // si + char v41; // bl + char v42; // dl + int v43; // eax + unsigned __int8 *v44; // eax + int v45; // esi + char v46; // al + int (__stdcall *v47)(unsigned __int8, int); // eax + int (__stdcall *v48)(unsigned __int8); // eax + char *v49; // eax + __int64 v50; // kr00_8 + int v51; // eax + int v52; // eax + int v53; // eax + char *v54; // eax + int v55; // eax + int v56; // eax + signed __int8 v57; // al + int v58; // eax + int v59; // eax + bool v60; // [esp+4Bh] [ebp-51h] + bool v62; // [esp+50h] [ebp-4Ch] + char v63; // [esp+50h] [ebp-4Ch] + _DWORD *v64; // [esp+50h] [ebp-4Ch] + char v65; // [esp+50h] [ebp-4Ch] + unsigned __int8 *v67; // [esp+58h] [ebp-44h] + int v68; // [esp+58h] [ebp-44h] + char v69; // [esp+58h] [ebp-44h] + int v71; // [esp+60h] [ebp-3Ch] + unsigned __int8 v72; // [esp+60h] [ebp-3Ch] + int v73; // [esp+68h] [ebp-34h] + char v74; // [esp+7Ch] [ebp-20h] BYREF + char v75; // [esp+7Dh] [ebp-1Fh] + char v76; // [esp+7Eh] [ebp-1Eh] + char v77; // [esp+7Fh] [ebp-1Dh] + unsigned __int8 *v78; // [esp+BCh] [ebp+20h] + + v10 = a9; + v12 = std::use_facet>(a6 + 108); + *a7 = 0; + if ( a9 == a10 ) + return a2; + v60 = a5 == -1; + while ( 1 ) + { + v62 = a3 == -1; + if ( v62 && a2 != 0 ) + { + if ( *(_DWORD *)(a2 + 8) >= *(_DWORD *)(a2 + 12) ) + { + v55 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v19 = v55 == -1 && v62 && a2 != 0; + a2 = v55 == -1 ? 0 : a2; + } + else + { + v19 = 0; + } + } + else + { + v19 = a3 == -1; + } + if ( !v60 || a4 == 0 ) + { + v20 = a5 == -1; + goto LABEL_21; + } + if ( a4[2] >= a4[3] ) + { + v69 = v19; + v56 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v19 = v69; + v20 = v56 == -1 && v60 && a4 != 0; + a4 = v56 == -1 ? 0 : a4; +LABEL_21: + if ( v19 == v20 ) + goto LABEL_77; + goto LABEL_22; + } + if ( !v19 ) + { +LABEL_77: + *a7 = 6; + return a2; + } +LABEL_22: + v21 = *v10; + v22 = *((_BYTE *)v12 + v21 + 285); + v23 = *v10; + if ( !v22 ) + { + v24 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); + if ( v24 != std::ctype::do_narrow ) + { + v68 = *v10; + v23 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v24)(v12, (char)v21, 0); + v21 = v68; + } + if ( !v23 ) + goto LABEL_3; + *((_BYTE *)v12 + v21 + 285) = v23; + v22 = v23; + } + if ( v22 == 37 ) + { + v67 = v10 + 1; + if ( a10 == v10 + 1 ) + break; + v71 = v10[1]; + v25 = v10[1]; + v63 = *((_BYTE *)v12 + v71 + 285); + if ( !v63 ) + { + v26 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); + if ( v26 != std::ctype::do_narrow ) + v25 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v26)(v12, (char)v71, 0); + if ( !v25 ) + { + v63 = 0; + v27 = 0; + v73 = 0; + goto LABEL_37; + } + v63 = v25; + *((_BYTE *)v12 + v71 + 285) = v25; + } + v25 = v63; + if ( v63 == 69 || v63 == 79 ) + { + v67 = v10 + 2; + if ( a10 == v10 + 2 ) + break; + v45 = v10[2]; + v46 = *((_BYTE *)v12 + v45 + 285); + v73 = v63; + v25 = v45; + if ( v46 ) + { + v27 = v46; + v25 = *((_BYTE *)v12 + v45 + 285); + } + else + { + v27 = (char)v45; + v47 = *(int (__stdcall **)(unsigned __int8, int))(*v12 + 32); + if ( v47 != std::ctype::do_narrow ) + { + v57 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v47)(v12, (char)v45, 0); + v27 = v57; + v25 = v57; + } + if ( v25 ) + *((_BYTE *)v12 + v45 + 285) = v25; + } + } + else + { + v73 = 0; + v27 = v63; + v63 = 0; + } +LABEL_37: + v72 = v25; + v28 = *(__int64 (__thiscall **)(void *, int, int, _DWORD *, int, int, _DWORD *, _DWORD *, int, int))(*(_DWORD *)this + 32); + if ( (char *)v28 == (char *)std::time_get>::do_get ) + { + v29 = std::use_facet>(a6 + 108); + v30 = v72; + v31 = v29; + *a7 = 0; + if ( v29[28] ) + { + v22 = v29[66]; + } + else + { + std::ctype::_M_widen_init((int)v29); + v30 = v72; + v48 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v31 + 24); + if ( v48 != std::ctype::do_widen ) + { + v22 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v48)(v31, v72, 37); + v30 = v72; + } + } + v74 = v22; + if ( v63 ) + { + v76 = v30; + v77 = 0; + v75 = v63; + } + else + { + v75 = v30; + v76 = 0; + } + v32 = std::time_get>::_M_extract_via_format( + (_DWORD *)a2, + a3, + a4, + a5, + a6, + a7, + a8, + &v74); + a2 = (int)v32; + v34 = v33 == -1; + a3 = v33; + v35 = v34 & (v32 != 0); + if ( v35 ) + { + v34 = 0; + if ( v32[2] >= v32[3] ) + { + v65 = v35; + v53 = (*(int (__fastcall **)(_DWORD *))(*v32 + 36))(v32); + v34 = v53 != -1 ? 0 : v65; + a2 = v53 == -1 ? 0 : a2; + } + } + if ( a4 && a5 == -1 ) + { + v36 = 0; + if ( a4[2] >= a4[3] ) + v36 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4) == -1; + } + else + { + v36 = a5 == -1; + } + if ( v36 == v34 ) + *a7 |= 2u; + } + else + { + v50 = v28(this, a2, a3, a4, a5, a6, a7, a8, v27, v73); + a3 = HIDWORD(v50); + a2 = v50; + } + v10 = v67 + 1; + if ( a10 == v67 + 1 ) + return a2; + goto LABEL_16; + } +LABEL_3: + v13 = v12[6]; + if ( (*(_BYTE *)(v13 + 2 * *v10) & 0x20) != 0 ) + { + for ( i = v10 + 1; a10 != i; ++i ) + { + if ( (*(_BYTE *)(v13 + 2 * *i) & 0x20) == 0 ) + break; + } + v78 = i; + v64 = v12; + for ( j = a3; ; j = -1 ) + { + v40 = j == -1; + if ( v40 && a2 != 0 ) + { + if ( *(_DWORD *)(a2 + 8) >= *(_DWORD *)(a2 + 12) ) + { + v52 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v41 = v52 == -1 && v40 && a2 != 0; + a2 = v52 == -1 ? 0 : a2; + } + else + { + v41 = 0; + } + } + else + { + v41 = j == -1; + } + if ( !v60 || a4 == 0 ) + break; + if ( a4[2] >= a4[3] ) + { + v51 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v42 = v51 == -1 && v60 && a4 != 0; + a4 = v51 == -1 ? 0 : a4; +LABEL_59: + if ( v42 == v41 ) + goto LABEL_72; + goto LABEL_60; + } + if ( !v41 ) + { +LABEL_72: + a3 = j; + v10 = v78; + v12 = v64; + goto LABEL_15; + } +LABEL_60: + if ( a2 && j == -1 ) + { + v44 = *(unsigned __int8 **)(a2 + 8); + if ( (unsigned int)v44 < *(_DWORD *)(a2 + 12) ) + { + if ( (*(_BYTE *)(v64[6] + 2 * *v44) & 0x20) == 0 ) + { + v12 = v64; + a3 = -1; + v10 = v78; + goto LABEL_15; + } +LABEL_65: + *(_DWORD *)(a2 + 8) = v44 + 1; + continue; + } + v43 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + a2 = v43 == -1 ? 0 : a2; + } + else + { + LOBYTE(v43) = j; + } + if ( (*(_BYTE *)(v64[6] + 2 * (unsigned __int8)v43) & 0x20) == 0 ) + goto LABEL_72; + v44 = *(unsigned __int8 **)(a2 + 8); + if ( (unsigned int)v44 < *(_DWORD *)(a2 + 12) ) + goto LABEL_65; + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + } + v42 = a5 == -1; + goto LABEL_59; + } + if ( a2 && a3 == -1 ) + { + v49 = *(char **)(a2 + 8); + if ( (unsigned int)v49 >= *(_DWORD *)(a2 + 12) ) + { + v58 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v14 = v58 != -1 ? v58 : -1; + a2 = v58 == -1 ? 0 : a2; + } + else + { + v14 = *v49; + } + } + else + { + v14 = a3; + } + v15 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, v14); + if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 16))(v12, (char)*v10) != v15 ) + { + if ( a2 && a3 == -1 ) + { + v54 = *(char **)(a2 + 8); + if ( (unsigned int)v54 >= *(_DWORD *)(a2 + 12) ) + { + v59 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v16 = v59 != -1 ? v59 : -1; + a2 = v59 == -1 ? 0 : a2; + } + else + { + v16 = *v54; + } + } + else + { + v16 = a3; + } + v17 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, v16); + if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v12 + 8))(v12, (char)*v10) != v17 ) + break; + } + v18 = *(_DWORD *)(a2 + 8); + if ( v18 >= *(_DWORD *)(a2 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + else + *(_DWORD *)(a2 + 8) = v18 + 1; + a3 = -1; + ++v10; +LABEL_15: + if ( a10 == v10 ) + return a2; +LABEL_16: + if ( *a7 ) + return a2; + } + *a7 = 4; + return a2; +} +// 4517F0: variable 'v33' is possibly undefined + +//----- (00451D80) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + _DWORD *a2, + int a3, + _DWORD *a4, + int a5, + int a6, + _DWORD *a7, + _DWORD *a8, + char a9, + char a10) +{ + _DWORD *(__stdcall *v10)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char); // eax + _BYTE *v11; // ecx + char v12; // al + _DWORD *v13; // esi + int v14; // edx + char v15; // dl + char v16; // bp + char v17; // al + int (__stdcall *v19)(unsigned __int8); // edx + int v20; // eax + int v21; // eax + char v22; // [esp+30h] [ebp-3Ch] + _BYTE *v23; // [esp+3Ch] [ebp-30h] + char v24; // [esp+4Ch] [ebp-20h] BYREF + char v25; // [esp+4Dh] [ebp-1Fh] + char v26; // [esp+4Eh] [ebp-1Eh] + char v27; // [esp+4Fh] [ebp-1Dh] + + v10 = *(_DWORD *(__stdcall **)(_DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); + if ( v10 != std::time_get>::do_get ) + return ((int (__thiscall *)(void *, _DWORD *, int, _DWORD *, int, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( + this, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v11 = std::use_facet>(a6 + 108); + *a7 = 0; + if ( v11[28] ) + { + v12 = v11[66]; + } + else + { + v23 = v11; + std::ctype::_M_widen_init((int)v11); + v19 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); + v12 = 37; + if ( v19 != std::ctype::do_widen ) + v12 = v19(37u); + } + v24 = v12; + if ( a10 ) + { + v25 = a10; + v27 = 0; + v26 = a9; + } + else + { + v26 = 0; + v25 = a9; + } + v13 = std::time_get>::_M_extract_via_format(a2, a3, a4, a5, a6, a7, a8, &v24); + v15 = v14 == -1; + v16 = v15 & (v13 != 0); + if ( v16 ) + { + v15 = 0; + if ( v13[2] >= v13[3] ) + { + v21 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v13 + 36))(v13, 0); + v15 = v21 != -1 ? 0 : v16; + v13 = v21 == -1 ? 0 : v13; + } + } + v17 = a5 == -1; + if ( a4 ) + { + if ( a5 == -1 ) + { + v17 = 0; + if ( a4[2] >= a4[3] ) + { + v22 = v15; + v20 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v15 = v22; + v17 = v20 == -1; + } + } + } + if ( v15 == v17 ) + *a7 |= 2u; + return (int)v13; +} +// 451E5A: variable 'v14' is possibly undefined + +//----- (00451FD0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7, + char a8, + char a9) +{ + _BYTE *v9; // ebp + char v10; // al + _DWORD *v11; // esi + int v12; // edx + char v13; // dl + char v14; // bp + char v15; // al + int v17; // eax + int (__stdcall *v18)(unsigned __int8); // edx + int v19; // eax + char v20; // [esp+20h] [ebp-3Ch] + char v21; // [esp+3Ch] [ebp-20h] BYREF + char v22; // [esp+3Dh] [ebp-1Fh] + char v23; // [esp+3Eh] [ebp-1Eh] + char v24; // [esp+3Fh] [ebp-1Dh] + + v9 = std::use_facet>(a5 + 108); + *a6 = 0; + if ( v9[28] ) + { + v10 = v9[66]; + } + else + { + std::ctype::_M_widen_init((int)v9); + v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v9 + 24); + v10 = 37; + if ( v18 != std::ctype::do_widen ) + v10 = ((int (__thiscall *)(_BYTE *, int))v18)(v9, 37); + } + v21 = v10; + if ( a9 ) + { + v24 = 0; + v22 = a9; + v23 = a8; + } + else + { + v23 = 0; + v22 = a8; + } + v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, a7, &v21); + v13 = v12 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v19 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v19 != -1 ? 0 : v14; + v11 = v19 == -1 ? 0 : v11; + } + } + v15 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v15 = 0; + if ( a3[2] >= a3[3] ) + { + v20 = v13; + v17 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v20; + v15 = v17 == -1; + } + } + } + if ( v13 == v15 ) + *a6 |= 2u; + return v11; +} +// 45208D: variable 'v12' is possibly undefined + +//----- (00452190) -------------------------------------------------------- +int __fastcall std::time_get>::get_date(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); +} + +//----- (004521A0) -------------------------------------------------------- +int __fastcall std::time_get>::get_time(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); +} + +//----- (004521B0) -------------------------------------------------------- +int __fastcall std::time_get>::get_year(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); +} + +//----- (004521C0) -------------------------------------------------------- +int __fastcall std::time_get>::date_order(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); + if ( v1 == std::time_get>::do_date_order ) + return 0; + else + return v1(); +} + +//----- (004521E0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_date( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // eax + _DWORD *v8; // ecx + __int16 v9; // dx + _DWORD *v10; // ebp + __int16 v11; // bx + char v12; // cl + __int16 *v14; // eax + __int16 v15; // ax + __int16 *v16; // eax + __int16 v17; // ax + char v18; // [esp+2Ch] [ebp-30h] + _DWORD *v19; // [esp+30h] [ebp-2Ch] + + v7 = std::use_facet>(a5 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + *(wchar_t **)(v7[2] + 8)); + v10 = v8; + v11 = v9 == -1; + v18 = v11 & (v8 != 0); + if ( v18 ) + { + v16 = (__int16 *)v8[2]; + if ( (unsigned int)v16 >= v8[3] ) + { + v19 = v8; + v17 = (*(int (**)(void))(*v8 + 36))(); + v8 = v19; + } + else + { + v17 = *v16; + } + LOBYTE(v11) = v17 != -1 ? 0 : v18; + v10 = v17 == -1 ? 0 : v8; + } + v12 = (_WORD)a4 == 0xFFFF; + if ( a3 && (_WORD)a4 == 0xFFFF ) + { + v14 = (__int16 *)a3[2]; + if ( (unsigned int)v14 >= a3[3] ) + v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v15 = *v14; + v12 = v15 == -1; + } + if ( (_BYTE)v11 == v12 ) + *a6 |= 2u; + return v10; +} +// 452259: variable 'v9' is possibly undefined + +//----- (00452320) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_time( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // eax + _DWORD *v8; // ecx + __int16 v9; // dx + _DWORD *v10; // ebp + __int16 v11; // bx + char v12; // cl + __int16 *v14; // eax + __int16 v15; // ax + __int16 *v16; // eax + __int16 v17; // ax + char v18; // [esp+2Ch] [ebp-30h] + _DWORD *v19; // [esp+30h] [ebp-2Ch] + + v7 = std::use_facet>(a5 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + *(wchar_t **)(v7[2] + 16)); + v10 = v8; + v11 = v9 == -1; + v18 = v11 & (v8 != 0); + if ( v18 ) + { + v16 = (__int16 *)v8[2]; + if ( (unsigned int)v16 >= v8[3] ) + { + v19 = v8; + v17 = (*(int (**)(void))(*v8 + 36))(); + v8 = v19; + } + else + { + v17 = *v16; + } + LOBYTE(v11) = v17 != -1 ? 0 : v18; + v10 = v17 == -1 ? 0 : v8; + } + v12 = (_WORD)a4 == 0xFFFF; + if ( a3 && (_WORD)a4 == 0xFFFF ) + { + v14 = (__int16 *)a3[2]; + if ( (unsigned int)v14 >= a3[3] ) + v15 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v15 = *v14; + v12 = v15 == -1; + } + if ( (_BYTE)v11 == v12 ) + *a6 |= 2u; + return v10; +} +// 452399: variable 'v9' is possibly undefined + +//----- (00452460) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_year( + _DWORD *a1, + __int16 a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // ecx + __int16 v8; // dx + __int16 v9; // ax + _DWORD *v10; // ebp + int v11; // edx + char v12; // bl + char v13; // cl + __int16 *v15; // eax + __int16 v16; // ax + __int16 *v17; // eax + __int16 v18; // ax + char v19; // [esp+43h] [ebp-39h] + _DWORD *v20; // [esp+44h] [ebp-38h] + int v21; // [esp+58h] [ebp-24h] BYREF + int v22[8]; // [esp+5Ch] [ebp-20h] BYREF + + v22[0] = 0; + v7 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v21, + 0, + 9999, + 4u, + a5, + v22); + v9 = v8; + v10 = v7; + if ( v22[0] ) + { + *a6 |= 4u; + } + else + { + v11 = v21 - 1900; + if ( v21 < 0 ) + v11 = v21 + 100; + *(_DWORD *)(a7 + 20) = v11; + } + v12 = v9 == -1; + v19 = v12 & (v7 != 0); + if ( v19 ) + { + v17 = (__int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + { + v20 = v7; + v18 = (*(int (**)(void))(*v7 + 36))(); + v7 = v20; + } + else + { + v18 = *v17; + } + v12 = v18 != -1 ? 0 : v19; + v10 = v18 == -1 ? 0 : v7; + } + v13 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v15 = (__int16 *)a3[2]; + if ( (unsigned int)v15 >= a3[3] ) + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v16 = *v15; + v13 = v16 == -1; + } + if ( v12 == v13 ) + *a6 |= 2u; + return v10; +} +// 4524DA: variable 'v8' is possibly undefined +// 452460: using guessed type int var_20[8]; + +//----- (004525E0) -------------------------------------------------------- +int __fastcall std::time_get>::get_weekday(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); +} + +//----- (004525F0) -------------------------------------------------------- +int std::time_get>::do_date_order() +{ + return 0; +} + +//----- (00452600) -------------------------------------------------------- +int __fastcall std::time_get>::get_monthname(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); +} + +//----- (00452610) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_num( + _DWORD *a1, + __int16 a2, + _DWORD *a3, + __int16 a4, + int *a5, + signed int a6, + int a7, + unsigned int a8, + int a9, + _DWORD *a10) +{ + unsigned int v10; // ebp + int v12; // edi + unsigned int i; // esi + unsigned __int8 v14; // dl + unsigned __int16 v15; // ax + char v16; // al + unsigned int v17; // eax + __int16 *v18; // eax + __int16 v19; // ax + __int16 *v20; // eax + __int16 v21; // ax + unsigned __int16 *v23; // eax + char v24; // [esp+1Fh] [ebp-2Dh] + bool v25; // [esp+1Fh] [ebp-2Dh] + void *v27; // [esp+24h] [ebp-28h] + char v29; // [esp+2Eh] [ebp-1Eh] + unsigned __int8 v30; // [esp+2Fh] [ebp-1Dh] + + v10 = 10; + v27 = std::use_facet>(a9 + 108); + if ( a8 != 2 ) + v10 = a8 == 4 ? 1000 : 1; + v29 = a4 == -1; + v12 = 0; + for ( i = 0; ; ++i ) + { + v25 = a2 == -1 && a1 != 0; + if ( v25 ) + break; + v24 = a2 == -1; + v14 = v29 & (a3 != 0); + if ( v14 ) + goto LABEL_20; +LABEL_5: + if ( v24 == v29 ) + goto LABEL_23; +LABEL_6: + if ( i >= a8 ) + goto LABEL_23; + if ( a1 && a2 == -1 ) + { + v23 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v23 >= a1[3] ) + v15 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v15 = *v23; + a1 = v15 == 0xFFFF ? 0 : a1; + } + else + { + v15 = a2; + } + v16 = (*(int (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v27 + 48))(v27, v15, 42); + if ( (unsigned __int8)(v16 - 48) > 9u ) + goto LABEL_24; + v12 = v16 + 10 * v12 - 48; + if ( (int)(v12 * v10) > a7 || (int)(v10 + v12 * v10) <= a6 ) + goto LABEL_24; + v17 = a1[2]; + v10 /= 0xAu; + if ( v17 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v17 + 2; + a2 = -1; + } + v18 = (__int16 *)a1[2]; + if ( (unsigned int)v18 >= a1[3] ) + v19 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v19 = *v18; + a1 = v19 == -1 ? 0 : a1; + v24 = v19 == -1 && v25; + v14 = v29 & (a3 != 0); + if ( !v14 ) + goto LABEL_5; +LABEL_20: + v20 = (__int16 *)a3[2]; + if ( (unsigned int)v20 >= a3[3] ) + { + v30 = v14; + v21 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v14 = v30; + } + else + { + v21 = *v20; + } + a3 = v21 == -1 ? 0 : a3; + if ( v24 != ((unsigned __int8)((v21 != -1) - 1) & v14) ) + goto LABEL_6; +LABEL_23: + if ( i == a8 ) + { +LABEL_27: + *a5 = v12; + return a1; + } +LABEL_24: + if ( a8 == 4 && i == 2 ) + { + v12 -= 100; + goto LABEL_27; + } + *a10 |= 4u; + return a1; +} + +//----- (004528A0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_weekday( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // ecx + int v9; // eax + __int16 v10; // dx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // bl + char v14; // si + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + _DWORD *v21; // [esp+40h] [ebp-6Ch] + int v22; // [esp+50h] [ebp-5Ch] BYREF + int v23; // [esp+54h] [ebp-58h] BYREF + int v24[21]; // [esp+58h] [ebp-54h] BYREF + + v23 = 0; + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v24[0] = v7[18]; + v24[1] = v7[19]; + v24[2] = v7[20]; + v24[3] = v7[21]; + v24[4] = v7[22]; + v24[5] = v7[23]; + v24[6] = v7[24]; + v24[7] = v7[11]; + v24[8] = v7[12]; + v24[9] = v7[13]; + v24[10] = v7[14]; + v24[11] = v7[15]; + v8 = v7[16]; + v9 = v7[17]; + v24[12] = v8; + v24[13] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v22, + (int)v24, + 7u, + a5, + &v23); + v12 = v11; + if ( v23 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 24) = v22; + v13 = v10 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v19 = (__int16 *)v11[2]; + if ( (unsigned int)v19 >= v11[3] ) + { + v21 = v11; + v20 = (*(int (**)(void))(*v11 + 36))(); + v11 = v21; + } + else + { + v20 = *v19; + } + v13 = v20 != -1 ? 0 : v14; + v12 = v20 == -1 ? 0 : v11; + } + v15 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( v15 == v13 ) + *a6 |= 2u; + return v12; +} +// 4529CD: variable 'v10' is possibly undefined + +//----- (00452AA0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_name( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + _DWORD *a5, + int a6, + int a7, + int a8, + _DWORD *a9) +{ + int v9; // eax + void *v10; // esp + void *v11; // esp + char v12; // dl + char v13; // dl + char v14; // bl + int v16; // edx + int v17; // esi + size_t v18; // ebx + int v19; // edi + __int16 v20; // ax + int v21; // ecx + int *v22; // edi + size_t v23; // eax + unsigned int v24; // ebx + size_t v25; // eax + unsigned int v26; // eax + _WORD *v27; // eax + __int16 v28; // dx + char v29; // si + char v30; // dl + char v31; // dl + unsigned int v32; // ecx + size_t v33; // esi + int i; // eax + __int16 v35; // ax + __int16 *v36; // eax + unsigned int v37; // eax + int *v38; // eax + int *v39; // ebx + const wchar_t *v40; // edi + unsigned int v41; // ebx + unsigned int v42; // esi + unsigned int v43; // eax + __int16 *v44; // eax + __int16 v45; // ax + unsigned __int8 v46; // di + char v47; // dl + char v48; // dl + __int16 v49; // di + __int16 *v50; // eax + __int16 v51; // ax + __int16 *v52; // eax + __int16 v53; // cx + int v54; // eax + __int16 *v55; // eax + __int16 v56; // ax + __int16 *v57; // eax + __int16 v58; // ax + __int16 v59; // ax + _WORD *v60; // eax + int v61; // eax + int v62; // eax + __int16 *v63; // eax + __int16 v64; // cx + __int16 v65; // ax + int v66; // [esp+10h] [ebp-38h] BYREF + _DWORD *v67; // [esp+14h] [ebp-34h] + bool v68; // [esp+1Bh] [ebp-2Dh] + int v69; // [esp+1Ch] [ebp-2Ch] + _DWORD *v70; // [esp+20h] [ebp-28h] + int *v71; // [esp+24h] [ebp-24h] + size_t v72; // [esp+28h] [ebp-20h] + unsigned int v73; // [esp+2Ch] [ebp-1Ch] + + v71 = a4; + v66 = a2; + LOWORD(v72) = a2; + v70 = a1; + v67 = a3; + v69 = (int)std::use_facet>(a8 + 108); + v9 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + LOBYTE(v73) = (_WORD)a2 == 0xFFFF; + v12 = v73 & (a1 != 0); + if ( v12 ) + { + v57 = (__int16 *)a1[2]; + if ( (unsigned int)v57 >= a1[3] ) + { + v61 = *a1; + LOBYTE(v70) = v73 & (a1 != 0); + v58 = (*(int (__fastcall **)(_DWORD *))(v61 + 36))(a1); + v12 = (char)v70; + } + else + { + v58 = *v57; + } + v70 = v58 == -1 ? 0 : a1; + v13 = v58 != -1 ? 0 : v12; + } + else + { + v13 = v73; + } + v68 = (_WORD)v71 == 0xFFFF; + if ( v68 && a3 != 0 ) + { + v55 = (__int16 *)a3[2]; + if ( (unsigned int)v55 >= a3[3] ) + { + v62 = *a3; + LOBYTE(v71) = v13; + v56 = (*(int (__fastcall **)(_DWORD *))(v62 + 36))(a3); + v13 = (char)v71; + } + else + { + v56 = *v55; + } + v67 = v56 == -1 ? 0 : a3; + v14 = v56 == -1 && v68 && a3 != 0; + } + else + { + v14 = v68; + } + if ( v14 == v13 ) + goto LABEL_6; + if ( v70 && (_BYTE)v73 ) + { + v60 = (_WORD *)v70[2]; + LOWORD(v73) = (unsigned int)v60 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v60; + v70 = (_WORD)v73 == 0xFFFF ? 0 : v70; + } + else + { + LOWORD(v73) = v72; + } + if ( !a7 ) + goto LABEL_6; + v71 = &v66; + v16 = a6; + v17 = 0; + v18 = 0; + v19 = v69; + do + { + while ( 1 ) + { + v21 = **(unsigned __int16 **)(v16 + 4 * v17); + if ( (_WORD)v21 == (_WORD)v73 ) + break; + a6 = v16; + v20 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v19 + 24))(v19, v21); + v16 = a6; + if ( v20 == (_WORD)v73 ) + break; + if ( a7 == ++v17 ) + goto LABEL_17; + } + v71[v18++] = v17++; + } + while ( a7 != v17 ); +LABEL_17: + v22 = v71; + v71 = 0; + if ( v18 <= 1 ) + goto LABEL_41; + do + { + v69 = *v22; + v23 = wcslen(*(const wchar_t **)(a6 + 4 * v69)); + v72 = v18; + v24 = 1; + v73 = v23; + do + { + v25 = wcslen(*(const wchar_t **)(a6 + 4 * v22[v24])); + if ( v73 > v25 ) + v73 = v25; + ++v24; + } + while ( v24 < v72 ); + v18 = v72; + v26 = v70[2]; + if ( v26 >= v70[3] ) + (*(void (__fastcall **)(_DWORD *))(*v70 + 40))(v70); + else + v70[2] = v26 + 2; + v71 = (int *)((char *)v71 + 1); + if ( (unsigned int)v71 >= v73 ) + goto LABEL_59; + v27 = (_WORD *)v70[2]; + v28 = (unsigned int)v27 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v27; + v70 = v28 == -1 ? 0 : v70; + v29 = v28 == -1; + v30 = v68 && v67 != 0; + if ( v30 ) + { + v52 = (__int16 *)v67[2]; + if ( (unsigned int)v52 >= v67[3] ) + { + LOBYTE(v73) = v68 && v67 != 0; + v59 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); + v30 = v73; + v53 = v59; + } + else + { + v53 = *v52; + } + v67 = v53 == -1 ? 0 : v67; + v31 = v53 != -1 ? 0 : v30; + } + else + { + v31 = v68; + } + if ( v29 == v31 ) + goto LABEL_59; + v32 = (unsigned int)v70; + v33 = 0; + v72 = 2 * (_DWORD)v71; + for ( i = v69; ; i = v22[v33] ) + { + v16 = v72; + LOWORD(v73) = *(_WORD *)(*(_DWORD *)(a6 + 4 * i) + v72); + v35 = -1; + if ( v32 ) + { + v36 = *(__int16 **)(v32 + 8); + if ( (unsigned int)v36 >= *(_DWORD *)(v32 + 12) ) + { + v54 = *(_DWORD *)v32; + v70 = (_DWORD *)v32; + v35 = (*(int (**)(void))(v54 + 36))(); + v32 = (unsigned int)v70; + } + else + { + v35 = *v36; + } + v16 = (v35 == -1) - 1; + v32 &= v16; + } + if ( (_WORD)v73 == v35 ) + break; + v22[v33] = v22[--v18]; + if ( v18 <= v33 ) + goto LABEL_39; +LABEL_32: + ; + } + if ( v18 > ++v33 ) + goto LABEL_32; +LABEL_39: + v70 = (_DWORD *)v32; + } + while ( v18 > 1 ); + LOWORD(v72) = -1; +LABEL_41: + if ( v18 == 1 ) + { + v37 = v70[2]; + if ( v37 >= v70[3] ) + (*(void (__fastcall **)(_DWORD *, int))(*v70 + 40))(v70, v16); + else + v70[2] = v37 + 2; + v38 = (int *)*v22; + v39 = v71; + v40 = *(const wchar_t **)(a6 + 4 * *v22); + v71 = v38; + v41 = (unsigned int)v39 + 1; + v72 = wcslen(v40); + if ( v41 < v72 ) + { + v73 = (unsigned int)v40; + v42 = (unsigned int)v70; + do + { + while ( 1 ) + { + v44 = *(__int16 **)(v42 + 8); + if ( (unsigned int)v44 >= *(_DWORD *)(v42 + 12) ) + v45 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); + else + v45 = *v44; + v46 = v45 == -1; + v42 &= v46 - 1; + v47 = v68 && v67 != 0; + if ( v47 ) + { + v63 = (__int16 *)v67[2]; + if ( (unsigned int)v63 >= v67[3] ) + { + LOBYTE(v70) = v68 && v67 != 0; + v65 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); + v47 = (char)v70; + v64 = v65; + } + else + { + v64 = *v63; + } + v67 = v64 == -1 ? 0 : v67; + v48 = v64 != -1 ? 0 : v47; + } + else + { + v48 = v68; + } + if ( v48 == v46 ) + { +LABEL_58: + v70 = (_DWORD *)v42; + goto LABEL_59; + } + v49 = *(_WORD *)(v73 + 2 * v41); + if ( v42 ) + { + v50 = *(__int16 **)(v42 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v42 + 12) ) + v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); + else + v51 = *v50; + v42 &= (v51 == -1) - 1; + if ( v49 != v51 ) + goto LABEL_58; + } + else if ( v49 != -1 ) + { + goto LABEL_58; + } + v43 = *(_DWORD *)(v42 + 8); + if ( v43 >= *(_DWORD *)(v42 + 12) ) + break; + ++v41; + *(_DWORD *)(v42 + 8) = v43 + 2; + if ( v41 >= v72 ) + goto LABEL_83; + } + ++v41; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 40))(v42); + } + while ( v41 < v72 ); +LABEL_83: + v70 = (_DWORD *)v42; + } + if ( v72 == v41 ) + { + LOWORD(v72) = -1; + *a5 = v71; + goto LABEL_7; + } +LABEL_59: + LOWORD(v72) = -1; + } +LABEL_6: + *a9 |= 4u; +LABEL_7: + LOWORD(v66) = v72; + return v70; +} + +//----- (00452FE0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_monthname( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // ecx + int v9; // ecx + __int16 v10; // dx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // bl + char v14; // si + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + _DWORD *v21; // [esp+40h] [ebp-9Ch] + int v22; // [esp+58h] [ebp-84h] BYREF + int v23; // [esp+5Ch] [ebp-80h] BYREF + int v24[31]; // [esp+60h] [ebp-7Ch] BYREF + + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v24[0] = v7[37]; + v24[1] = v7[38]; + v24[2] = v7[39]; + v24[3] = v7[40]; + v24[4] = v7[41]; + v24[5] = v7[42]; + v24[6] = v7[43]; + v24[7] = v7[44]; + v24[8] = v7[45]; + v24[9] = v7[46]; + v24[10] = v7[47]; + v24[11] = v7[48]; + v24[12] = v7[25]; + v24[13] = v7[26]; + v24[14] = v7[27]; + v24[15] = v7[28]; + v8 = v7[29]; + v23 = 0; + v24[16] = v8; + v24[17] = v7[30]; + v24[18] = v7[31]; + v24[19] = v7[32]; + v24[20] = v7[33]; + v24[21] = v7[34]; + v9 = v7[35]; + v24[23] = v7[36]; + v24[22] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v22, + (int)v24, + 0xCu, + a5, + &v23); + v12 = v11; + if ( v23 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 16) = v22; + v13 = v10 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v19 = (__int16 *)v11[2]; + if ( (unsigned int)v19 >= v11[3] ) + { + v21 = v11; + v20 = (*(int (**)(void))(*v11 + 36))(); + v11 = v21; + } + else + { + v20 = *v19; + } + v13 = v20 != -1 ? 0 : v14; + v12 = v20 == -1 ? 0 : v11; + } + v15 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( v13 == v15 ) + *a6 |= 2u; + return v12; +} +// 4531AA: variable 'v10' is possibly undefined + +//----- (00453280) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_via_format( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + int a5, + _DWORD *a6, + _DWORD *a7, + wchar_t *String) +{ + void *v9; // esi + size_t v10; // edi + bool v11; // dl + char v12; // dl + char v13; // bl + int v14; // eax + size_t v15; // ebx + char v16; // al + unsigned __int8 v17; // al + wchar_t v18; // bx + unsigned __int16 v19; // ax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // bl + __int16 *v24; // eax + __int16 v25; // ax + unsigned int v26; // eax + unsigned __int16 *v27; // eax + unsigned __int16 v28; // dx + int v29; // edx + _DWORD *v30; // eax + _DWORD *v31; // eax + unsigned __int16 v32; // dx + _DWORD *v33; // eax + _DWORD *v34; // eax + unsigned __int16 v35; // dx + unsigned __int16 v36; // dx + unsigned __int16 v37; // dx + unsigned __int16 v38; // dx + unsigned __int16 v39; // dx + unsigned __int16 v40; // dx + int v41; // edx + _DWORD *v42; // eax + __int16 v43; // dx + unsigned __int16 v44; // di + char v45; // dl + char v46; // bl + char v47; // bl + unsigned __int16 v48; // bx + unsigned __int16 v49; // bx + _DWORD *v50; // eax + __int16 v51; // dx + unsigned __int16 v52; // dx + _DWORD *v53; // eax + unsigned __int16 v54; // dx + _DWORD *v55; // eax + _DWORD *v56; // eax + unsigned __int16 v57; // dx + int v58; // edx + unsigned int v59; // eax + unsigned __int16 v60; // dx + unsigned __int16 v61; // dx + int v62; // edx + unsigned int v63; // eax + unsigned __int16 v64; // dx + int v65; // edx + unsigned __int16 v66; // dx + unsigned __int16 v67; // dx + unsigned __int16 *v68; // eax + unsigned __int16 *v69; // eax + unsigned __int16 *v70; // eax + unsigned __int16 *v71; // eax + unsigned __int16 *v72; // eax + unsigned __int16 v73; // dx + __int16 *v74; // eax + __int16 v75; // ax + _WORD *v76; // edx + __int16 v77; // ax + unsigned __int16 *v78; // eax + bool v79; // [esp+5Fh] [ebp-12Dh] + bool v80; // [esp+5Fh] [ebp-12Dh] + size_t v82; // [esp+64h] [ebp-128h] + char v83; // [esp+64h] [ebp-128h] + int v84; // [esp+68h] [ebp-124h] + size_t v85; // [esp+6Ch] [ebp-120h] + bool v86; // [esp+70h] [ebp-11Ch] + _DWORD *v87; // [esp+7Ch] [ebp-110h] + __int16 v88; // [esp+80h] [ebp-10Ch] + unsigned __int16 v89; // [esp+84h] [ebp-108h] + char v90; // [esp+86h] [ebp-106h] + char v91; // [esp+87h] [ebp-105h] + int v92; // [esp+138h] [ebp-54h] BYREF + int v93; // [esp+13Ch] [ebp-50h] BYREF + wchar_t v94[2]; // [esp+140h] [ebp-4Ch] BYREF + int v95; // [esp+144h] [ebp-48h] + int v96; // [esp+148h] [ebp-44h] + int v97; // [esp+14Ch] [ebp-40h] + int v98; // [esp+150h] [ebp-3Ch] + int v99; // [esp+154h] [ebp-38h] + int v100; // [esp+158h] [ebp-34h] + int v101; // [esp+15Ch] [ebp-30h] + int v102; // [esp+160h] [ebp-2Ch] + int v103; // [esp+164h] [ebp-28h] + int v104; // [esp+168h] [ebp-24h] + int v105; // [esp+16Ch] [ebp-20h] + + HIWORD(v84) = HIWORD(a2); + v89 = a2; + v87 = std::use_facet>(a5 + 108); + v9 = std::use_facet>(a5 + 108); + v92 = 0; + v85 = wcslen(String); + v90 = (_WORD)a4 == 0xFFFF; + v10 = 0; + while ( 1 ) + { + v79 = v89 == 0xFFFF; + v11 = v79 && a1 != 0; + if ( v11 ) + { + v24 = (__int16 *)a1[2]; + if ( (unsigned int)v24 >= a1[3] ) + { + v25 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v11 = v79 && a1 != 0; + } + else + { + v25 = *v24; + } + a1 = v25 == -1 ? 0 : a1; + v12 = v25 == -1 && v11; + } + else + { + v12 = v89 == 0xFFFF; + } + v13 = v90 & (a3 != 0); + if ( !v13 ) + { + v14 = v92; + if ( v12 == v90 ) + break; + goto LABEL_6; + } + v20 = (__int16 *)a3[2]; + if ( (unsigned int)v20 >= a3[3] ) + { + v83 = v12; + v21 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v12 = v83; + } + else + { + v21 = *v20; + } + a3 = v21 == -1 ? 0 : a3; + v22 = v21 != -1 ? 0 : v13; + v14 = v92; + if ( v12 == v22 ) + break; +LABEL_6: + if ( v10 >= v85 ) + break; + if ( v14 ) + goto LABEL_23; + v15 = v10; + v82 = v10 + 1; + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v10], 0) == 37 ) + { + v16 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v15 + 1], 0); + v93 = 0; + if ( v16 == 69 || v16 == 79 ) + { + v82 = v10 + 2; + v17 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v9 + 48))(v9, String[v15 + 2], 0) - 65; + if ( v17 > 0x38u ) + { +LABEL_29: + v92 |= 4u; + goto LABEL_30; + } + } + else + { + v17 = v16 - 65; + } + switch ( v17 ) + { + case 0u: + v55 = (_DWORD *)v87[2]; + *(_DWORD *)v94 = v55[11]; + v95 = v55[12]; + v96 = v55[13]; + v97 = v55[14]; + v98 = v55[15]; + v99 = v55[16]; + v100 = v55[17]; + LOWORD(v84) = v89; + v34 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + &v93, + (int)v94, + 7, + a5, + &v92); + goto LABEL_45; + case 1u: + v56 = (_DWORD *)v87[2]; + *(_DWORD *)v94 = v56[25]; + v95 = v56[26]; + v96 = v56[27]; + v97 = v56[28]; + v98 = v56[29]; + v99 = v56[30]; + v100 = v56[31]; + v101 = v56[32]; + v102 = v56[33]; + v103 = v56[34]; + v104 = v56[35]; + v105 = v56[36]; + LOWORD(v84) = v89; + v31 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + &v93, + (int)v94, + 12, + a5, + &v92); + goto LABEL_42; + case 2u: + case 0x18u: + case 0x38u: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 0, + 9999, + 4u, + a5, + &v92); + v89 = v28; + if ( !v92 ) + { + v29 = v93 - 1900; + if ( v93 < 0 ) + v29 = v93 + 100; + a7[5] = v29; + } + break; + case 3u: + (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( + v9, + "%m/%d/%y", + "%H:%M", + v94); + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + v94); + v89 = v57; + break; + case 7u: + v53 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 0, + 23, + 2u, + a5, + &v92); + goto LABEL_71; + case 8u: + v53 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 1, + 12, + 2u, + a5, + &v92); +LABEL_71: + a1 = v53; + v89 = v54; + if ( !v92 ) + a7[2] = v93; + break; + case 0xCu: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 0, + 59, + 2u, + a5, + &v92); + v89 = v66; + if ( !v92 ) + a7[1] = v93; + break; + case 0x11u: + (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v9 + 44))( + v9, + "%H:%M", + "%H:%M:%S", + v94); + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + v94); + v89 = v67; + break; + case 0x12u: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 0, + 61, + 2u, + a5, + &v92); + v89 = v38; + if ( !v92 ) + *a7 = v93; + break; + case 0x13u: + (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v9 + 44))( + v9, + "%H:%M:%S", + &unk_4ED02A, + v94); + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + v94); + v89 = v39; + break; + case 0x17u: + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + *(wchar_t **)(v87[2] + 16)); + v89 = v40; + break; + case 0x19u: + if ( a1 && v89 == 0xFFFF ) + { + v71 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v71 >= a1[3] ) + v41 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v41 = *v71; + a1 = (_WORD)v41 == 0xFFFF ? 0 : a1; + } + else + { + v41 = v89; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v9 + 8))(v9, 1, v41) ) + goto LABEL_29; + LOWORD(v84) = v89; + v42 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + v94, + (int)std::__timepunct_cache::_S_timezones, + 14, + a5, + &v92); + v44 = v43; + a1 = v42; + v80 = v43 == -1; + v88 = v43; + v45 = v80; + v89 = v44; + v86 = v80 && v42 != 0; + if ( v86 ) + { + v76 = (_WORD *)v42[2]; + v77 = (unsigned int)v76 >= v42[3] ? (*(int (__fastcall **)(_DWORD *))(*v42 + 36))(v42) : *v76; + v45 = 0; + if ( v77 == -1 ) + { + v45 = v86; + a1 = 0; + v86 = 0; + } + } + v46 = v90 & (a3 != 0); + if ( v46 ) + { + v74 = (__int16 *)a3[2]; + if ( (unsigned int)v74 >= a3[3] ) + { + v91 = v45; + v75 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v45 = v91; + } + else + { + v75 = *v74; + } + a3 = v75 == -1 ? 0 : a3; + v47 = v75 != -1 ? 0 : v46; + } + else + { + v47 = (_WORD)a4 == 0xFFFF; + } + if ( v45 != v47 && !(*(_DWORD *)v94 | v92) ) + { + v48 = v44; + if ( v86 ) + { + v78 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v78 >= a1[3] ) + v48 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v48 = *v78; + a1 = v48 == 0xFFFF ? 0 : a1; + } + if ( (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 45) == v48 + || (a1 && v80 + ? ((v72 = (unsigned __int16 *)a1[2], (unsigned int)v72 >= a1[3]) + ? (v49 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1)) + : (v49 = *v72), + a1 = v49 == 0xFFFF ? 0 : a1) + : (_DWORD *)(v49 = v44), + (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 43) == v49) ) + { + v50 = std::time_get>::_M_extract_num( + a1, + v88, + a3, + (__int16)a4, + (int *)v94, + 0, + 23, + 2u, + a5, + &v92); + a1 = std::time_get>::_M_extract_num( + v50, + v51, + a3, + (__int16)a4, + (int *)v94, + 0, + 59, + 2u, + a5, + &v92); + v89 = v52; + } + } + break; + case 0x20u: + v33 = (_DWORD *)v87[2]; + *(_DWORD *)v94 = v33[18]; + v95 = v33[19]; + v96 = v33[20]; + v97 = v33[21]; + v98 = v33[22]; + v99 = v33[23]; + v100 = v33[24]; + LOWORD(v84) = v89; + v34 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + &v93, + (int)v94, + 7, + a5, + &v92); +LABEL_45: + a1 = v34; + v89 = v35; + if ( !v92 ) + a7[6] = v93; + break; + case 0x21u: + case 0x27u: + v30 = (_DWORD *)v87[2]; + *(_DWORD *)v94 = v30[37]; + v95 = v30[38]; + v96 = v30[39]; + v97 = v30[40]; + v98 = v30[41]; + v99 = v30[42]; + v100 = v30[43]; + v101 = v30[44]; + v102 = v30[45]; + v103 = v30[46]; + v104 = v30[47]; + v105 = v30[48]; + LOWORD(v84) = v89; + v31 = std::time_get>::_M_extract_name( + a1, + v84, + a3, + a4, + &v93, + (int)v94, + 12, + a5, + &v92); +LABEL_42: + a1 = v31; + v89 = v32; + if ( !v92 ) + a7[4] = v93; + break; + case 0x22u: + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + *(wchar_t **)(v87[2] + 24)); + v89 = v36; + break; + case 0x23u: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 1, + 31, + 2u, + a5, + &v92); + v89 = v37; + if ( !v92 ) + goto LABEL_49; + break; + case 0x24u: + if ( a1 && v89 == 0xFFFF ) + { + v70 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v70 >= a1[3] ) + v58 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v58 = *v70; + a1 = (_WORD)v58 == 0xFFFF ? 0 : a1; + } + else + { + v58 = v89; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, int, int))(*(_DWORD *)v9 + 8))(v9, 32, v58) ) + { + v59 = a1[2]; + if ( v59 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v59 + 2; + a1 = std::time_get>::_M_extract_num( + a1, + 0xFFFF, + a3, + (__int16)a4, + &v93, + 1, + 9, + 1u, + a5, + &v92); + v89 = v60; + } + else + { + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 10, + 31, + 2u, + a5, + &v92); + v89 = v73; + } + if ( !v92 ) +LABEL_49: + a7[3] = v93; + break; + case 0x2Cu: + a1 = std::time_get>::_M_extract_num( + a1, + v89, + a3, + (__int16)a4, + &v93, + 1, + 12, + 2u, + a5, + &v92); + v89 = v61; + if ( !v92 ) + a7[4] = v93 - 1; + break; + case 0x2Du: + if ( a1 && v89 == 0xFFFF ) + { + v68 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v68 >= a1[3] ) + v65 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v65 = *v68; + a1 = (_WORD)v65 == 0xFFFF ? 0 : a1; + } + else + { + v65 = v89; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 48))(v9, v65, 0) != 10 ) + goto LABEL_29; + goto LABEL_91; + case 0x33u: + if ( a1 && v89 == 0xFFFF ) + { + v69 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v69 >= a1[3] ) + v62 = (*(unsigned __int16 (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v62 = *v69; + a1 = (_WORD)v62 == 0xFFFF ? 0 : a1; + } + else + { + v62 = v89; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v9 + 48))(v9, v62, 0) != 9 ) + goto LABEL_29; +LABEL_91: + v63 = a1[2]; + if ( v63 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v63 + 2; + v89 = -1; + break; + case 0x37u: + LOWORD(v84) = v89; + a1 = (_DWORD *)std::time_get>::_M_extract_via_format( + (int)a1, + v84, + (int)a3, + (int)a4, + a5, + (int)&v92, + (int)a7, + *(wchar_t **)(v87[2] + 8)); + v89 = v64; + break; + default: + goto LABEL_29; + } +LABEL_30: + v10 = v82 + 1; + } + else + { + v18 = String[v10]; + if ( a1 && v89 == 0xFFFF ) + { + v27 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v27 >= a1[3] ) + v19 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v19 = *v27; + a1 = v19 == 0xFFFF ? 0 : a1; + } + else + { + v19 = v89; + } + if ( v18 == v19 ) + { + v26 = a1[2]; + if ( v26 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v26 + 2; + ++v10; + v89 = -1; + } + else + { + v92 |= 4u; + ++v10; + } + } + } + if ( v14 || v10 != v85 ) +LABEL_23: + *a6 |= 4u; + return a1; +} +// 4535F0: variable 'v28' is possibly undefined +// 453744: variable 'v32' is possibly undefined +// 453835: variable 'v35' is possibly undefined +// 4538CD: variable 'v36' is possibly undefined +// 45394F: variable 'v37' is possibly undefined +// 453A06: variable 'v38' is possibly undefined +// 453AB7: variable 'v39' is possibly undefined +// 453B36: variable 'v40' is possibly undefined +// 453BD8: variable 'v43' is possibly undefined +// 453D4E: variable 'v51' is possibly undefined +// 453D65: variable 'v52' is possibly undefined +// 453DF6: variable 'v54' is possibly undefined +// 454073: variable 'v57' is possibly undefined +// 45413C: variable 'v60' is possibly undefined +// 4541DB: variable 'v61' is possibly undefined +// 4542C8: variable 'v64' is possibly undefined +// 45438E: variable 'v66' is possibly undefined +// 4544BD: variable 'v67' is possibly undefined +// 45465C: variable 'v73' is possibly undefined +// 4E9520: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[11]; + +//----- (00454780) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + _DWORD *a5, + int a6, + unsigned int a7, + int a8, + _DWORD *a9) +{ + void *v9; // edi + int v10; // eax + void *v11; // esp + void *v12; // esp + char v13; // dl + char v14; // bl + char v15; // bl + int *v16; // edi + unsigned int v17; // esi + char v18; // dl + char v19; // dl + unsigned __int8 v20; // bl + unsigned int v21; // edx + unsigned int *v22; // ecx + int v23; // ebx + unsigned int v24; // eax + __int16 *v25; // eax + __int16 v26; // cx + __int16 *v28; // eax + __int16 v29; // cx + __int16 *v30; // eax + int v31; // eax + int v32; // edx + int v33; // ebx + __int16 v34; // ax + int v35; // ecx + unsigned int v36; // eax + int v37; // eax + void *v38; // esp + void *v39; // esp + int v40; // esi + int v41; // ebx + __int16 *v42; // eax + __int16 v43; // cx + _WORD *v44; // eax + __int16 v45; // ax + __int16 v46; // ax + __int16 v47; // ax + _WORD *v48; // eax + int v49; // eax + __int16 v50; // ax + int v51; // [esp+10h] [ebp-48h] BYREF + int v52; // [esp+14h] [ebp-44h] + _DWORD *v53; // [esp+18h] [ebp-40h] + char v54; // [esp+1Fh] [ebp-39h] + _DWORD *v55; // [esp+20h] [ebp-38h] + unsigned int v56; // [esp+24h] [ebp-34h] + __int16 v57; // [esp+28h] [ebp-30h] + __int16 v58; // [esp+2Ah] [ebp-2Eh] + int v59; // [esp+2Ch] [ebp-2Ch] + int *v60; // [esp+30h] [ebp-28h] + int *v61; // [esp+34h] [ebp-24h] + unsigned int v62; // [esp+38h] [ebp-20h] + unsigned int v63; // [esp+3Ch] [ebp-1Ch] + + v52 = a2; + v57 = a2; + v55 = a1; + v53 = a3; + v9 = std::use_facet>(a8 + 108); + v10 = 16 * ((8 * a7 + 27) >> 4); + v11 = alloca(v10); + v12 = alloca(v10); + v61 = &v51; + v13 = (_WORD)a2 == 0xFFFF; + LOBYTE(v62) = v13 & (a1 != 0); + if ( (_BYTE)v62 ) + { + v44 = (_WORD *)v55[2]; + v45 = (unsigned int)v44 >= v55[3] ? (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55) : *v44; + v13 = 0; + if ( v45 == -1 ) + { + v13 = v62; + v55 = 0; + LOBYTE(v62) = 0; + } + } + v54 = a4 == -1; + v14 = v54 & (a3 != 0); + if ( v14 ) + { + v42 = (__int16 *)a3[2]; + if ( (unsigned int)v42 >= a3[3] ) + { + v49 = *a3; + LOBYTE(v63) = v13; + v50 = (*(int (__fastcall **)(_DWORD *))(v49 + 36))(a3); + v13 = v63; + v43 = v50; + } + else + { + v43 = *v42; + } + v53 = v43 == -1 ? 0 : a3; + v15 = v43 != -1 ? 0 : v14; + } + else + { + v15 = v54; + } + if ( v15 == v13 ) + { + v62 = 0; + v16 = 0; + v17 = 0; + goto LABEL_6; + } + LOWORD(v63) = v57; + if ( (_BYTE)v62 ) + { + v48 = (_WORD *)v55[2]; + if ( (unsigned int)v48 >= v55[3] ) + LOWORD(v63) = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + else + LOWORD(v63) = *v48; + v55 = (_WORD)v63 == 0xFFFF ? 0 : v55; + } + v62 = 2 * a7; + if ( 2 * a7 ) + { + v32 = a6; + v33 = 0; + v17 = 0; + while ( 1 ) + { + v35 = **(unsigned __int16 **)(v32 + 4 * v33); + if ( (_WORD)v35 == (_WORD)v63 + || (a6 = v32, + v34 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v35), + v32 = a6, + v34 == (_WORD)v63) ) + { + v61[v17++] = v33; + if ( ++v33 == v62 ) + { +LABEL_52: + if ( v17 ) + { + v36 = v55[2]; + if ( v36 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *, int))(*v55 + 40))(v55, v32); + else + v55[2] = v36 + 2; + v37 = 16 * ((4 * v17 + 27) >> 4); + v38 = alloca(v37); + v39 = alloca(v37); + v63 = v17; + v62 = (unsigned int)&v51; + v60 = &v51; + v40 = 0; + v41 = (int)v61; + do + { + *(_DWORD *)(v62 + 4 * v40) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v41 + 4 * v40))); + ++v40; + } + while ( v63 != v40 ); + v17 = v63; + v16 = v60; + v62 = 1; + v57 = -1; + } + else + { + v62 = 0; + v16 = 0; + } + goto LABEL_6; + } + } + else if ( ++v33 == v62 ) + { + goto LABEL_52; + } + } + } + v17 = 0; + v16 = 0; +LABEL_6: + while ( 2 ) + { + LOBYTE(v63) = v57 == -1; + v18 = v63 & (v55 != 0); + if ( v18 ) + { + v28 = (__int16 *)v55[2]; + if ( (unsigned int)v28 >= v55[3] ) + { + LOBYTE(v60) = v63 & (v55 != 0); + v46 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + v18 = (char)v60; + v29 = v46; + } + else + { + v29 = *v28; + } + v55 = v29 == -1 ? 0 : v55; + v19 = v29 != -1 ? 0 : v18; + } + else + { + v19 = v63; + } + v20 = v54 & (v53 != 0); + if ( v20 ) + { + v25 = (__int16 *)v53[2]; + if ( (unsigned int)v25 >= v53[3] ) + { + LOBYTE(v60) = v19; + v47 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); + v19 = (char)v60; + v26 = v47; + } + else + { + v26 = *v25; + } + v53 = v26 == -1 ? 0 : v53; + if ( ((unsigned __int8)((v26 != -1) - 1) & v20) == v19 ) + break; + } + else if ( v54 == v19 ) + { + break; + } + if ( v55 && (_BYTE)v63 ) + { + v30 = (__int16 *)v55[2]; + if ( (unsigned int)v30 >= v55[3] ) + v58 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + else + v58 = *v30; + v55 = v58 == -1 ? 0 : v55; + } + else + { + v58 = v57; + } + if ( !v17 ) + { +LABEL_30: + *a9 |= 4u; + goto LABEL_31; + } + v63 = (unsigned int)v16; + v21 = 0; + v59 = 0; + v56 = 2 * v62; + do + { + while ( 1 ) + { + v22 = (unsigned int *)(v63 + 4 * v21); + if ( *v22 > v62 ) + break; + ++v59; + ++v21; +LABEL_16: + if ( v21 >= v17 ) + goto LABEL_20; + } + v23 = v61[v21]; + v60 = &v61[v21]; + if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v23) + v56) == v58 ) + { + ++v21; + goto LABEL_16; + } + *v60 = v61[--v17]; + *v22 = *(_DWORD *)(v63 + 4 * v17); + } + while ( v21 < v17 ); +LABEL_20: + v16 = (int *)v63; + if ( v59 != v17 ) + { + v24 = v55[2]; + if ( v24 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v24 + 2; + ++v62; + v57 = -1; + continue; + } + break; + } + if ( v17 != 1 ) + { + if ( v17 == 2 && (*v16 == v62 || v16[1] == v62) ) + goto LABEL_42; + goto LABEL_30; + } + if ( *v16 != v62 ) + goto LABEL_30; +LABEL_42: + v31 = *v61; + if ( *v61 >= a7 ) + v31 -= a7; + *a5 = v31; +LABEL_31: + LOWORD(v52) = v57; + return v55; +} + +//----- (00454C60) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + int a2, + int a3, + _DWORD *a4, + int a5, + int a6, + _DWORD *a7, + _DWORD *a8, + unsigned __int16 *a9, + unsigned __int16 *a10) +{ + void *v11; // ebp + unsigned __int16 *v12; // edi + int v13; // edx + __int16 v14; // si + int v15; // edx + __int16 v16; // si + unsigned int v17; // eax + bool v18; // dl + char v19; // dl + unsigned __int8 v20; // si + char v21; // si + int v22; // eax + int (__thiscall *v23)(void *, int, int, _DWORD *, int *, int, _DWORD *, _DWORD *, _DWORD, int); // edx + int *v24; // eax + int v25; // edx + _DWORD *v26; // esi + unsigned __int16 v27; // dx + char v28; // dl + char v29; // di + char v30; // al + unsigned __int16 *i; // edi + char v33; // dl + unsigned __int8 v34; // si + unsigned __int16 v35; // ax + unsigned int v36; // eax + bool v37; // di + bool v38; // dl + __int16 *v39; // eax + __int16 v40; // ax + __int16 *v41; // eax + __int16 v42; // ax + _WORD *v43; // eax + __int16 *v44; // eax + __int16 v45; // ax + __int16 *v46; // eax + __int16 v47; // ax + char v48; // dl + unsigned __int16 *v49; // eax + unsigned __int16 v50; // dx + __int16 *v51; // eax + __int16 v52; // ax + __int16 *v53; // eax + __int16 v54; // ax + _WORD *v55; // eax + unsigned __int16 v56; // [esp+66h] [ebp-52h] + bool v58; // [esp+6Ch] [ebp-4Ch] + unsigned __int16 *v59; // [esp+6Ch] [ebp-4Ch] + char v60; // [esp+6Ch] [ebp-4Ch] + int v61; // [esp+70h] [ebp-48h] + int *v63; // [esp+78h] [ebp-40h] + char v64; // [esp+7Ch] [ebp-3Ch] + char v65; // [esp+7Dh] [ebp-3Bh] + char v66; // [esp+7Dh] [ebp-3Bh] + char v67; // [esp+7Dh] [ebp-3Bh] + wchar_t v68; // [esp+94h] [ebp-24h] BYREF + __int16 v69; // [esp+96h] [ebp-22h] + __int16 v70; // [esp+98h] [ebp-20h] + __int16 v71; // [esp+9Ah] [ebp-1Eh] + unsigned __int16 *v72; // [esp+D8h] [ebp+20h] + + HIWORD(v61) = HIWORD(a3); + v56 = a3; + HIWORD(v63) = HIWORD(a5); + v11 = std::use_facet>(a6 + 108); + *a7 = 0; + if ( a9 != a10 ) + { + v12 = a9; + v64 = (_WORD)a5 == 0xFFFF; + do + { + v58 = v56 == 0xFFFF; + v18 = v58 && a2 != 0; + if ( v18 ) + { + v46 = *(__int16 **)(a2 + 8); + if ( (unsigned int)v46 >= *(_DWORD *)(a2 + 12) ) + { + v47 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v18 = v58 && a2 != 0; + } + else + { + v47 = *v46; + } + a2 = v47 == -1 ? 0 : a2; + v19 = v47 == -1 && v18; + } + else + { + v19 = v56 == 0xFFFF; + } + v20 = v64 & (a4 != 0); + if ( v20 ) + { + v44 = (__int16 *)a4[2]; + if ( (unsigned int)v44 >= a4[3] ) + { + v66 = v19; + v45 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v19 = v66; + } + else + { + v45 = *v44; + } + a4 = v45 == -1 ? 0 : a4; + if ( ((unsigned __int8)((v45 != -1) - 1) & v20) == v19 ) + { +LABEL_65: + *a7 = 6; + return a2; + } + } + else if ( v64 == v19 ) + { + goto LABEL_65; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, *v12, 0) == 37 ) + { + v59 = v12 + 1; + if ( a10 == v12 + 1 ) + goto LABEL_92; + v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v12[1], 0); + if ( v21 == 69 || (v65 = 0, v22 = 0, v21 == 79) ) + { + v59 = v12 + 2; + if ( a10 == v12 + 2 ) + goto LABEL_92; + v48 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v12[2], 0); + v65 = v21; + v22 = v21; + v21 = v48; + } + v23 = *(int (__thiscall **)(void *, int, int, _DWORD *, int *, int, _DWORD *, _DWORD *, _DWORD, int))(*(_DWORD *)this + 32); + if ( (char *)v23 == (char *)std::time_get>::do_get ) + { + LOWORD(v61) = v56; + LOWORD(v63) = a5; + v24 = (int *)std::use_facet>(a6 + 108); + v25 = *v24; + *a7 = 0; + v68 = (*(int (__thiscall **)(int *, int))(v25 + 40))(v24, 37); + if ( v65 ) + { + v70 = v21; + v69 = v65; + v71 = 0; + } + else + { + v69 = v21; + v70 = 0; + } + v26 = std::time_get>::_M_extract_via_format( + (_DWORD *)a2, + v61, + a4, + v63, + a6, + a7, + a8, + &v68); + a2 = (int)v26; + v56 = v27; + v28 = v27 == 0xFFFF; + v29 = v28 & (v26 != 0); + if ( v29 ) + { + v53 = (__int16 *)v26[2]; + if ( (unsigned int)v53 >= v26[3] ) + v54 = (*(int (__fastcall **)(_DWORD *))(*v26 + 36))(v26); + else + v54 = *v53; + v28 = v54 != -1 ? 0 : v29; + a2 = v54 == -1 ? 0 : (unsigned int)v26; + } + if ( a4 && (_WORD)a5 == 0xFFFF ) + { + v51 = (__int16 *)a4[2]; + if ( (unsigned int)v51 >= a4[3] ) + { + v67 = v28; + v52 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v28 = v67; + } + else + { + v52 = *v51; + } + v30 = v52 == -1; + } + else + { + v30 = (_WORD)a5 == 0xFFFF; + } + if ( v28 == v30 ) + *a7 |= 2u; + } + else + { + LOWORD(v61) = v56; + LOWORD(v63) = a5; + a2 = v23(this, a2, v61, a4, v63, a6, a7, a8, v21, v22); + v56 = v50; + } + v12 = v59 + 1; + if ( a10 == v59 + 1 ) + return a2; + } + else + { + if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v11 + 8))(v11, 32, *v12) ) + { + for ( i = v12 + 1; a10 != i; ++i ) + { + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v11 + 8))(v11, 32, *i) ) + break; + } + v72 = i; + while ( 1 ) + { + v37 = v56 == 0xFFFF; + v38 = v37 && a2 != 0; + if ( v38 ) + { + v39 = *(__int16 **)(a2 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(a2 + 12) ) + { + v40 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v38 = v37 && a2 != 0; + } + else + { + v40 = *v39; + } + a2 = v40 == -1 ? 0 : a2; + v33 = v40 == -1 && v38; + } + else + { + v33 = v56 == 0xFFFF; + } + v34 = v64 & (a4 != 0); + if ( v34 ) + { + v41 = (__int16 *)a4[2]; + if ( (unsigned int)v41 >= a4[3] ) + { + v60 = v33; + v42 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v33 = v60; + } + else + { + v42 = *v41; + } + a4 = v42 == -1 ? 0 : a4; + if ( ((unsigned __int8)((v42 != -1) - 1) & v34) == v33 ) + break; + } + else if ( v64 == v33 ) + { + break; + } + if ( a2 && v56 == 0xFFFF ) + { + v43 = *(_WORD **)(a2 + 8); + v35 = (unsigned int)v43 >= *(_DWORD *)(a2 + 12) + ? (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2) + : *v43; + a2 = v35 == 0xFFFF ? 0 : a2; + } + else + { + v35 = v56; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v11 + 8))(v11, 32, v35) ) + break; + v36 = *(_DWORD *)(a2 + 8); + if ( v36 >= *(_DWORD *)(a2 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + else + *(_DWORD *)(a2 + 8) = v36 + 2; + v56 = -1; + } + v12 = v72; + } + else + { + if ( a2 && v56 == 0xFFFF ) + { + v49 = *(unsigned __int16 **)(a2 + 8); + if ( (unsigned int)v49 >= *(_DWORD *)(a2 + 12) ) + v13 = (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + else + v13 = *v49; + a2 = (_WORD)v13 == 0xFFFF ? 0 : a2; + } + else + { + v13 = v56; + } + v14 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v11 + 32))(v11, v13); + if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v11 + 32))(v11, *v12) != v14 ) + { + if ( a2 && v56 == 0xFFFF ) + { + v55 = *(_WORD **)(a2 + 8); + v15 = (unsigned int)v55 >= *(_DWORD *)(a2 + 12) + ? (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2) + : (unsigned __int16)*v55; + a2 = (_WORD)v15 == 0xFFFF ? 0 : a2; + } + else + { + v15 = v56; + } + v16 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v11 + 24))(v11, v15); + if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v11 + 24))(v11, *v12) != v16 ) + { +LABEL_92: + *a7 = 4; + return a2; + } + } + v17 = *(_DWORD *)(a2 + 8); + if ( v17 >= *(_DWORD *)(a2 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + else + *(_DWORD *)(a2 + 8) = v17 + 2; + ++v12; + v56 = -1; + } + if ( a10 == v12 ) + return a2; + } + } + while ( !*a7 ); + } + return a2; +} +// 454F44: variable 'v27' is possibly undefined +// 4552D8: variable 'v50' is possibly undefined + +//----- (00455440) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + _DWORD *a2, + int a3, + _DWORD *a4, + int *a5, + int a6, + _DWORD *a7, + _DWORD *a8, + char a9, + char a10) +{ + _DWORD *(__stdcall *v10)(_DWORD *, int, _DWORD *, int *, int, _DWORD *, _DWORD *, char, char); // eax + int *v11; // eax + int v12; // edx + _DWORD *v13; // ecx + __int16 v14; // dx + char v15; // dl + _DWORD *v16; // ebx + char v17; // si + char v18; // cl + __int16 *v20; // eax + __int16 v21; // ax + __int16 *v22; // eax + __int16 v23; // ax + char v24; // [esp+3Ch] [ebp-34h] + _DWORD *v25; // [esp+40h] [ebp-30h] + wchar_t v26; // [esp+4Ch] [ebp-24h] BYREF + __int16 v27; // [esp+4Eh] [ebp-22h] + __int16 v28; // [esp+50h] [ebp-20h] + __int16 v29; // [esp+52h] [ebp-1Eh] + + v10 = *(_DWORD *(__stdcall **)(_DWORD *, int, _DWORD *, int *, int, _DWORD *, _DWORD *, char, char))(*(_DWORD *)this + 32); + if ( v10 != std::time_get>::do_get ) + return ((int (__thiscall *)(void *, _DWORD *, int, _DWORD *, int *, int, _DWORD *, _DWORD *, _DWORD, _DWORD))v10)( + this, + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v11 = (int *)std::use_facet>(a6 + 108); + v12 = *v11; + *a7 = 0; + v26 = (*(int (__thiscall **)(int *, int))(v12 + 40))(v11, 37); + if ( a10 ) + { + v28 = a9; + v27 = a10; + v29 = 0; + } + else + { + v27 = a9; + v28 = 0; + } + v13 = std::time_get>::_M_extract_via_format( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + &v26); + v15 = v14 == -1; + v16 = v13; + v17 = v15 & (v13 != 0); + if ( v17 ) + { + v20 = (__int16 *)v13[2]; + if ( (unsigned int)v20 >= v13[3] ) + { + v25 = v13; + v21 = (*(int (**)(void))(*v13 + 36))(); + v13 = v25; + } + else + { + v21 = *v20; + } + v15 = v21 != -1 ? 0 : v17; + v16 = v21 == -1 ? 0 : v13; + } + v18 = (_WORD)a5 == 0xFFFF; + if ( a4 && (_WORD)a5 == 0xFFFF ) + { + v22 = (__int16 *)a4[2]; + if ( (unsigned int)v22 >= a4[3] ) + { + v24 = v15; + v23 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v15 = v24; + } + else + { + v23 = *v22; + } + v18 = v23 == -1; + } + if ( v18 == v15 ) + *a7 |= 2u; + return (int)v16; +} +// 45551D: variable 'v14' is possibly undefined + +//----- (00455670) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + int a5, + _DWORD *a6, + _DWORD *a7, + char a8, + char a9) +{ + void *v9; // eax + _DWORD *v10; // ecx + _DWORD *v11; // ebp + __int16 v12; // dx + __int16 v13; // bx + char v14; // di + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + int v21; // [esp+34h] [ebp-3Ch] + wchar_t v22; // [esp+4Ch] [ebp-24h] BYREF + __int16 v23; // [esp+4Eh] [ebp-22h] + __int16 v24; // [esp+50h] [ebp-20h] + __int16 v25; // [esp+52h] [ebp-1Eh] + + v9 = std::use_facet>(a5 + 108); + *a6 = 0; + v22 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 40))(v9, 37); + if ( a9 ) + { + v24 = a8; + v23 = a9; + v25 = 0; + } + else + { + v23 = a8; + v24 = 0; + } + v10 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + a7, + &v22); + v11 = v10; + v13 = v12 == -1; + v14 = v13 & (v10 != 0); + if ( v14 ) + { + v19 = (__int16 *)v10[2]; + if ( (unsigned int)v19 >= v10[3] ) + { + v21 = (int)v10; + v20 = (*(int (**)(void))(*v10 + 36))(); + v10 = (_DWORD *)v21; + } + else + { + v20 = *v19; + } + LOBYTE(v13) = v20 != -1 ? 0 : v14; + v11 = v20 == -1 ? 0 : v10; + } + v15 = (_WORD)a4 == 0xFFFF; + if ( a3 && (_WORD)a4 == 0xFFFF ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( (_BYTE)v13 == v15 ) + *a6 |= 2u; + return v11; +} +// 455752: variable 'v12' is possibly undefined + +//----- (00455830) -------------------------------------------------------- +int __fastcall std::time_get>::get_date(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); +} + +//----- (00455840) -------------------------------------------------------- +int __fastcall std::time_get>::get_time(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); +} + +//----- (00455850) -------------------------------------------------------- +int __fastcall std::time_get>::get_year(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); +} + +//----- (00455860) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::_M_extract( + unsigned int a1, + int a2, + unsigned int a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + unsigned int v8; // edx + int v9; // eax + size_t v10; // esi + size_t v11; // edi + _BYTE *v12; // eax + unsigned int v13; // eax + bool v14; // si + char v15; // si + unsigned __int8 v16; // si + _BYTE *v17; // eax + char v18; // al + size_t v19; // esi + _BYTE *v20; // eax + size_t v21; // edi + unsigned int v22; // edx + char v23; // al + _BYTE *v24; // eax + unsigned int i; // edi + char v26; // si + char v27; // si + int v28; // eax + char v29; // si + _BYTE *v30; // eax + char v31; // si + int v32; // eax + unsigned __int8 *v33; // eax + bool v34; // si + int v35; // edi + int v36; // esi + int v37; // esi + char v38; // al + int v39; // eax + unsigned __int8 *v40; // eax + int v41; // eax + char v42; // al + unsigned int v43; // edi + bool v44; // si + char v45; // si + int v46; // eax + _BYTE *v47; // eax + int v48; // eax + int v49; // edx + char v50; // al + unsigned __int8 *v52; // eax + int v53; // eax + int v54; // edx + char v55; // al + int v56; // eax + bool v57; // si + char v58; // si + char v59; // al + bool v60; // al + size_t v61; // esi + _BYTE *v62; // eax + size_t v63; // edx + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // esi + bool v68; // di + char v69; // al + unsigned int first_not_of; // eax + int v71; // edx + _BYTE *v72; // eax + int v73; // eax + std::locale::_Impl *v74; // eax + std::locale::_Impl *v75; // esi + int v76; // edx + int v77; // eax + int v78; // eax + int v79; // eax + int v80; // eax + _BYTE *v81; // eax + int v82; // eax + int v83; // edx + int v84; // edx + int v85; // eax + int v86; // eax + void (__cdecl *v87)(void *); // [esp+4h] [ebp-A4h] + unsigned int v88; // [esp+8h] [ebp-A0h] + char v89; // [esp+18h] [ebp-90h] + char v90; // [esp+1Ch] [ebp-8Ch] + unsigned int v91; // [esp+1Ch] [ebp-8Ch] + _DWORD *v92; // [esp+20h] [ebp-88h] + unsigned int v93; // [esp+24h] [ebp-84h] + int v94; // [esp+2Ch] [ebp-7Ch] + bool v95; // [esp+31h] [ebp-77h] + char v96; // [esp+32h] [ebp-76h] + char v97; // [esp+33h] [ebp-75h] + _BYTE *Buf; // [esp+34h] [ebp-74h] + int *v99; // [esp+38h] [ebp-70h] + int v100; // [esp+38h] [ebp-70h] + int v101; // [esp+3Ch] [ebp-6Ch] + std::locale::facet *v102; // [esp+40h] [ebp-68h] + char v103; // [esp+40h] [ebp-68h] + char v104; // [esp+40h] [ebp-68h] + char v105; // [esp+40h] [ebp-68h] + char v106; // [esp+40h] [ebp-68h] + char v107; // [esp+40h] [ebp-68h] + char v108; // [esp+40h] [ebp-68h] + char v109; // [esp+40h] [ebp-68h] + char v112; // [esp+4Ch] [ebp-5Ch] + char v113; // [esp+4Ch] [ebp-5Ch] + char v114; // [esp+5Bh] [ebp-4Dh] BYREF + int v115; // [esp+5Ch] [ebp-4Ch] + void *v116; // [esp+60h] [ebp-48h] BYREF + size_t v117; // [esp+64h] [ebp-44h] + int v118[4]; // [esp+68h] [ebp-40h] BYREF + void *v119; // [esp+78h] [ebp-30h] BYREF + size_t v120; // [esp+7Ch] [ebp-2Ch] + int v121[10]; // [esp+80h] [ebp-28h] BYREF + + v92 = std::use_facet>(a5 + 108); + v102 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); + v99 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v102); + v101 = *v99; + if ( !*v99 ) + { + v74 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v87); + *(_DWORD *)v74 = &off_4F66C4; + v75 = v74; + *((_DWORD *)v74 + 1) = 0; + *((_DWORD *)v74 + 2) = 0; + *((_DWORD *)v74 + 3) = 0; + *((_WORD *)v74 + 8) = 0; + *((_BYTE *)v74 + 18) = 0; + *((_DWORD *)v74 + 5) = 0; + *((_DWORD *)v74 + 6) = 0; + *((_DWORD *)v74 + 7) = 0; + *((_DWORD *)v74 + 8) = 0; + *((_DWORD *)v74 + 9) = 0; + *((_DWORD *)v74 + 10) = 0; + *((_DWORD *)v74 + 11) = 0; + *((_DWORD *)v74 + 12) = 0; + *((_DWORD *)v74 + 13) = 0; + *((_BYTE *)v74 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v74, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v75, v102, v88); + v101 = *v99; + } + if ( *(_DWORD *)(v101 + 32) ) + v95 = *(_DWORD *)(v101 + 40) != 0; + else + v95 = 0; + v117 = 0; + v116 = v118; + LOBYTE(v118[0]) = 0; + if ( *(_BYTE *)(v101 + 16) ) + std::string::reserve(&v116, 0x20u); + v119 = v121; + v120 = 0; + LOBYTE(v121[0]) = 0; + std::string::reserve(&v119, 0x20u); + v97 = 0; + v94 = 1; + v100 = 0; + v115 = *(_DWORD *)(v101 + 52); + v89 = 0; + v93 = 0; + v96 = 0; + while ( 2 ) + { + v9 = (unsigned __int8)*(&v114 + v94); + switch ( *(&v114 + v94) ) + { + case 0: + v104 = 1; + goto LABEL_37; + case 1: + LOBYTE(v9) = a2 == -1; + v35 = v9; + LOBYTE(v9) = v9 & (a1 != 0); + v36 = v9; + if ( (_BYTE)v9 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v86 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v86 == -1) - 1; + LOBYTE(v86) = v86 != -1; + v37 = (v86 - 1) & v36; + } + else + { + v37 = 0; + } + } + else + { + v37 = v35; + } + v38 = a4 == -1; + v106 = v38 & (a3 != 0); + if ( v106 ) + { + v38 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v38 = v76 != -1 ? 0 : v106; + a3 &= (v76 == -1) - 1; + } + } + v8 = v37; + v104 = 0; + if ( v38 == (_BYTE)v37 ) + goto LABEL_37; + if ( a1 && (_BYTE)v35 ) + { + v40 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v40 < *(_DWORD *)(a1 + 12) ) + { + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * *v40) & 0x20) != 0 ) + goto LABEL_77; + a2 = -1; + goto LABEL_37; + } + v39 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v39 == -1) - 1; + } + else + { + LOBYTE(v39) = a2; + } + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v39) & 0x20) != 0 ) + { + v40 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_78; + } +LABEL_77: + *(_DWORD *)(a1 + 8) = v40 + 1; +LABEL_78: + a2 = -1; + v104 = 1; + goto LABEL_37; + } + v104 = 0; +LABEL_37: + if ( v94 == 4 ) + { + v23 = v104 & (v93 > 1); +LABEL_39: + if ( v23 ) + { + if ( v96 ) + v24 = *(_BYTE **)(v101 + 36); + else + v24 = *(_BYTE **)(v101 + 28); + Buf = v24; + for ( i = 1; ; ++i ) + { + v105 = a2 == -1; + v26 = v105 & (a1 != 0); + if ( v26 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v78 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v78 == -1) - 1; + v27 = v78 != -1 ? 0 : v26; + } + else + { + v27 = 0; + } + } + else + { + v27 = a2 == -1; + } + if ( a3 && a4 == -1 ) + { + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v56 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + if ( v56 == -1 ) + { + a3 = 0; + v27 ^= 1u; + } + } + } + else + { + v27 ^= a4 == -1; + } + if ( i >= v93 || !v27 ) + { + if ( i != v93 ) + { +LABEL_182: + v29 = (a1 != 0) & v105; + goto LABEL_108; + } + if ( v120 > 1 ) + goto LABEL_198; + goto LABEL_165; + } + LOBYTE(v28) = a2; + v29 = v105 & (a1 != 0); + if ( v29 ) + { + v30 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) + { + if ( Buf[i] != *v30 ) + { + v105 &= a1 != 0; + goto LABEL_108; + } +LABEL_53: + *(_DWORD *)(a1 + 8) = v30 + 1; + goto LABEL_54; + } + v28 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v28 == -1) - 1; + } + if ( Buf[i] != (_BYTE)v28 ) + goto LABEL_182; + v30 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) + goto LABEL_53; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); +LABEL_54: + a2 = -1; + } + } + if ( !v104 ) + goto LABEL_107; + if ( v120 > 1 ) + { +LABEL_198: + first_not_of = std::string::find_first_not_of((int *)&v119, 48, 0); + if ( first_not_of ) + { + v71 = v120; + if ( first_not_of != -1 ) + goto LABEL_200; + first_not_of = v120 - 1; + if ( !v120 ) + { + *(_BYTE *)v119 = 0; + goto LABEL_165; + } + if ( v120 != 1 ) + { +LABEL_200: + if ( v120 > first_not_of ) + v71 = first_not_of; + std::string::_M_erase((int *)&v119, 0, v71); + } + } + } +LABEL_165: + if ( v96 && *(_BYTE *)v119 != 48 ) + std::string::_M_replace_aux(&v119, 0, 0, 1u, 45); + v61 = v117; + if ( v117 ) + { + v108 = v100; + if ( v97 ) + v108 = v89; + v62 = v116; + if ( v116 == v118 ) + v63 = 15; + else + v63 = v118[0]; + if ( v117 + 1 > v63 ) + { + std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); + v62 = v116; + } + v62[v61] = v108; + v117 = v61 + 1; + *((_BYTE *)v116 + v61 + 1) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v101 + 8), *(_DWORD *)(v101 + 12), (int)&v116) ) + *a6 |= 4u; + } + v105 = a2 == -1; + v29 = (a1 != 0) & v105; + if ( v97 && *(_DWORD *)(v101 + 44) != v100 ) + goto LABEL_108; + std::string::swap(a7, &v119); + if ( !v29 ) + goto LABEL_109; +LABEL_180: + v105 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v105 = v64 != -1 ? 0 : v29; + a1 &= (v64 == -1) - 1; + } + goto LABEL_109; + } + while ( 1 ) + { + v34 = a2 == -1 && a1 != 0; + if ( v34 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v77 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v8 = (v77 == -1) - 1; + a1 &= v8; + v31 = v77 == -1 && v34; + } + else + { + v31 = 0; + } + } + else + { + v31 = a2 == -1; + } + LOBYTE(v8) = a4 == -1; + v90 = v8 & (a3 != 0); + if ( v90 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) + { + v53 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + LOBYTE(v54) = v53 != -1; + v8 = v54 - 1; + LOBYTE(v8) = v90 & v8; + a3 &= (v53 == -1) - 1; + if ( (_BYTE)v8 == v31 ) + goto LABEL_125; + } + else if ( (_BYTE)v8 == v31 ) + { + goto LABEL_125; + } + if ( a1 && a2 == -1 ) + { + v33 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + { + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * *v33) & 0x20) == 0 ) + { + a2 = -1; + v42 = v104 ^ 1; + goto LABEL_126; + } +LABEL_63: + *(_DWORD *)(a1 + 8) = v33 + 1; + goto LABEL_64; + } + v32 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v32 == -1) - 1; + } + else + { + LOBYTE(v32) = a2; + } + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v32) & 0x20) == 0 ) + goto LABEL_125; + v33 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + goto LABEL_63; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); +LABEL_64: + a2 = -1; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_89; + v8 = v94 - 1; + v42 = v94 == 1 || v93 > 1; + if ( v42 ) + goto LABEL_89; + if ( v94 != 2 ) + { + v104 = 1; + if ( v94 == 3 ) + { + if ( HIBYTE(v115) == 4 || HIBYTE(v115) == 3 && v95 ) + goto LABEL_89; + } + else + { +LABEL_126: + if ( v94 > 3 || v42 ) + { + v23 = v104 & (v93 > 1); + goto LABEL_39; + } + } +LABEL_128: + ++v94; + continue; + } + if ( !v95 && (_BYTE)v115 != 3 && BYTE2(v115) != 1 ) + goto LABEL_128; +LABEL_89: + v43 = 0; + v91 = *(_DWORD *)(v101 + 24); + while ( 2 ) + { + v44 = a2 == -1 && a1 != 0; + if ( v44 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v79 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v8); + a1 &= (v79 == -1) - 1; + v45 = v79 == -1 && v44; + } + else + { + v45 = 0; + } + } + else + { + v45 = a2 == -1; + } + v8 = a3; + if ( a3 && a4 == -1 ) + { + v8 = *(_DWORD *)(a3 + 12); + if ( *(_DWORD *)(a3 + 8) >= v8 ) + { + v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; + v45 ^= v60; + a3 &= v60 - 1; + } + } + else + { + v45 ^= a4 == -1; + } + v42 = v45 & (v43 < v91); + if ( !v42 ) + { + if ( v43 != v91 ) + goto LABEL_159; +LABEL_187: + v104 = 1; + goto LABEL_126; + } + if ( !a1 || a2 != -1 ) + { + LOBYTE(v46) = a2; + goto LABEL_99; + } + v47 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) + { + v46 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v46 == -1) - 1; +LABEL_99: + v8 = *(_DWORD *)(v101 + 20); + if ( *(_BYTE *)(v8 + v43) != (_BYTE)v46 ) + goto LABEL_159; + v47 = *(_BYTE **)(a1 + 8); + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v47 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_102; + } +LABEL_101: + *(_DWORD *)(a1 + 8) = v47 + 1; +LABEL_102: + a2 = -1; + ++v43; + continue; + } + break; + } + v8 = *(_DWORD *)(v101 + 20); + if ( *v47 == *(_BYTE *)(v8 + v43) ) + goto LABEL_101; + a2 = -1; +LABEL_159: + if ( !v43 ) + { + v104 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; + v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; + goto LABEL_126; + } +LABEL_107: + v105 = a2 == -1; + v29 = (a1 != 0) & v105; +LABEL_108: + *a6 |= 4u; + if ( v29 ) + goto LABEL_180; +LABEL_109: + v50 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v50 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + v50 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; + } + } + if ( v50 == v105 ) + *a6 |= 2u; + if ( v119 != v121 ) + operator delete(v119); + if ( v116 != v118 ) + operator delete(v116); + return a1; + case 3: + if ( !*(_DWORD *)(v101 + 32) ) + { + v41 = v101; + if ( !*(_DWORD *)(v101 + 40) ) + { +LABEL_81: + v42 = v95; + v8 = !v95; + v104 = !v95; + goto LABEL_126; + } +LABEL_190: + LOBYTE(v41) = a2 == -1; + v67 = v41; + if ( !a1 || a2 != -1 ) + { + v68 = a2 == -1; + goto LABEL_193; + } +LABEL_210: + v68 = 1; + v67 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v73) = v73 == -1; + v67 = v73; + a1 &= (unsigned __int8)v73 - 1; + } +LABEL_193: + v69 = a4 == -1; + v109 = v69 & (a3 != 0); + if ( v109 ) + { + v69 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v84 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v69 = v84 != -1 ? 0 : v109; + a3 &= (v84 == -1) - 1; + } + } + v8 = v67; + if ( (_BYTE)v67 == v69 ) + { +LABEL_195: + if ( !*(_DWORD *)(v101 + 32) || *(_DWORD *)(v101 + 40) ) + goto LABEL_81; + goto LABEL_146; + } + if ( a1 && v68 ) + { + v81 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v81 < *(_DWORD *)(a1 + 12) ) + { + v8 = *(_DWORD *)(v101 + 36); + if ( *(_BYTE *)v8 != *v81 ) + goto LABEL_195; + v93 = *(_DWORD *)(v101 + 40); + goto LABEL_244; + } + v82 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v82 == -1) - 1; + } + else + { + LOBYTE(v82) = a2; + } + v8 = *(_DWORD *)(v101 + 36); + if ( *(_BYTE *)v8 != (_BYTE)v82 ) + goto LABEL_195; + v93 = *(_DWORD *)(v101 + 40); + v81 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v81 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_245; + } +LABEL_244: + *(_DWORD *)(a1 + 8) = v81 + 1; +LABEL_245: + a2 = -1; + v42 = 0; + v104 = 1; + v96 = 1; + goto LABEL_126; + } + v57 = a2 == -1 && a1 != 0; + if ( v57 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v85 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v85 == -1) - 1; + v58 = v85 == -1 && v57; + } + else + { + v58 = 0; + } + } + else + { + v58 = a2 == -1; + } + v8 = a3; + v59 = a4 == -1; + LOBYTE(v8) = v59 & (a3 != 0); + v107 = v8; + if ( (_BYTE)v8 ) + { + v8 = a3; + v59 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v83 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v59 = v83 != -1 ? 0 : v107; + v8 = (v83 == -1) - 1; + a3 &= v8; + } + } + if ( v59 == v58 ) + goto LABEL_144; + if ( a1 && a2 == -1 ) + { + v72 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v72 < *(_DWORD *)(a1 + 12) ) + { + v8 = **(unsigned __int8 **)(v101 + 28); + if ( *v72 != (_BYTE)v8 ) + { + if ( *(_DWORD *)(v101 + 40) ) + goto LABEL_210; + goto LABEL_145; + } + v93 = *(_DWORD *)(v101 + 32); + goto LABEL_237; + } + v80 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v80 == -1) - 1; + } + else + { + LOBYTE(v80) = a2; + } + v8 = *(_DWORD *)(v101 + 28); + if ( *(_BYTE *)v8 != (_BYTE)v80 ) + { +LABEL_144: + v41 = v101; + if ( *(_DWORD *)(v101 + 40) ) + goto LABEL_190; +LABEL_145: + if ( !*(_DWORD *)(v101 + 32) ) + goto LABEL_81; +LABEL_146: + v104 = 1; + v42 = 0; + v96 = 1; + goto LABEL_126; + } + v93 = *(_DWORD *)(v101 + 32); + v72 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_238; + } +LABEL_237: + *(_DWORD *)(a1 + 8) = v72 + 1; +LABEL_238: + a2 = -1; + v42 = 0; + goto LABEL_187; + case 4: + while ( 2 ) + { + v14 = a2 == -1 && a1 != 0; + if ( v14 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v8 = (v65 == -1) - 1; + a1 &= v8; + v15 = v65 == -1 && v14; + } + else + { + v15 = 0; + } + } + else + { + v15 = a2 == -1; + } + LOBYTE(v8) = a4 == -1; + v103 = v8 & (a3 != 0); + if ( v103 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) + { + v48 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + LOBYTE(v49) = v48 != -1; + v8 = v49 - 1; + LOBYTE(v8) = v103 & v8; + a3 &= (v48 == -1) - 1; + if ( v15 == (_BYTE)v8 ) + goto LABEL_105; + } + else if ( v15 == (_BYTE)v8 ) + { + goto LABEL_105; + } + if ( a1 && a2 == -1 ) + { + v52 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ) + { + v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v16 = v66 != -1 ? v66 : -1; + a1 &= (v66 == -1) - 1; + } + else + { + v16 = *v52; + } + } + else + { + v16 = a2; + } + v17 = memchr((const void *)(v101 + 57), (char)v16, 0xAu); + if ( v17 ) + { + v10 = v120; + v11 = v120 + 1; + v112 = v17[(_DWORD)std::money_base::_S_atoms - 56 - v101]; + v12 = v119; + if ( v119 == v121 ) + v8 = 15; + else + v8 = v121[0]; + if ( v11 > v8 ) + { + std::string::_M_mutate((int)&v119, v120, 0, 0, 1u); + v12 = v119; + } + ++v100; + v12[v10] = v112; + v120 = v11; + *((_BYTE *)v119 + v10 + 1) = 0; +LABEL_14: + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + { +LABEL_15: + *(_DWORD *)(a1 + 8) = v13 + 1; +LABEL_16: + a2 = -1; + continue; + } +LABEL_35: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_16; + } + break; + } + v104 = v97 | (*(_BYTE *)(v101 + 17) != v16); + if ( !v104 ) + { + if ( *(int *)(v101 + 44) > 0 ) + { + v55 = v100; + v97 = 1; + v100 = 0; + v89 = v55; + goto LABEL_14; + } + v97 = 0; +LABEL_105: + v104 = 1; +LABEL_106: + if ( !v120 ) + goto LABEL_107; + goto LABEL_125; + } + v18 = *(_BYTE *)(v101 + 16); + if ( !v18 ) + goto LABEL_106; + if ( *(_BYTE *)(v101 + 18) == v16 ) + { + if ( !v97 ) + { + if ( v100 ) + { + v113 = v100; + v19 = v117; + v20 = v116; + v21 = v117 + 1; + if ( v116 == v118 ) + v22 = 15; + else + v22 = v118[0]; + if ( v21 > v22 ) + { + std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); + v20 = v116; + } + v8 = (unsigned __int8)v100; + v100 = 0; + v20[v19] = v113; + v117 = v21; + *((_BYTE *)v116 + v19 + 1) = 0; + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + goto LABEL_15; + goto LABEL_35; + } + v104 = 0; + goto LABEL_106; + } + v18 = v97; + } + v104 = v18; + if ( !v120 ) + goto LABEL_107; +LABEL_125: + v42 = v104 ^ 1; + goto LABEL_126; + default: + v104 = 1; + v42 = 0; + goto LABEL_126; + } + } +} +// 456577: variable 'v87' is possibly undefined +// 456603: variable 'v88' is possibly undefined +// 455E30: variable 'v49' is possibly undefined +// 455FA0: variable 'v54' is possibly undefined +// 45673D: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4E9588: using guessed type int std::moneypunct::id; +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (00456A90) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::_M_extract( + unsigned int a1, + int a2, + unsigned int a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + unsigned int v8; // edx + int v9; // eax + size_t v10; // esi + size_t v11; // edi + _BYTE *v12; // eax + unsigned int v13; // eax + bool v14; // si + char v15; // si + unsigned __int8 v16; // si + _BYTE *v17; // eax + char v18; // al + size_t v19; // esi + _BYTE *v20; // eax + size_t v21; // edi + unsigned int v22; // edx + char v23; // al + _BYTE *v24; // eax + unsigned int i; // edi + char v26; // si + char v27; // si + int v28; // eax + char v29; // si + _BYTE *v30; // eax + char v31; // si + int v32; // eax + unsigned __int8 *v33; // eax + bool v34; // si + int v35; // edi + int v36; // esi + int v37; // esi + char v38; // al + int v39; // eax + unsigned __int8 *v40; // eax + int v41; // eax + char v42; // al + unsigned int v43; // edi + bool v44; // si + char v45; // si + int v46; // eax + _BYTE *v47; // eax + int v48; // eax + int v49; // edx + char v50; // al + unsigned __int8 *v52; // eax + int v53; // eax + int v54; // edx + char v55; // al + int v56; // eax + bool v57; // si + char v58; // si + char v59; // al + bool v60; // al + size_t v61; // esi + _BYTE *v62; // eax + size_t v63; // edx + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // esi + bool v68; // di + char v69; // al + unsigned int first_not_of; // eax + int v71; // edx + _BYTE *v72; // eax + int v73; // eax + std::locale::_Impl *v74; // eax + std::locale::_Impl *v75; // esi + int v76; // edx + int v77; // eax + int v78; // eax + int v79; // eax + int v80; // eax + _BYTE *v81; // eax + int v82; // eax + int v83; // edx + int v84; // edx + int v85; // eax + int v86; // eax + void (__cdecl *v87)(void *); // [esp+4h] [ebp-A4h] + unsigned int v88; // [esp+8h] [ebp-A0h] + char v89; // [esp+18h] [ebp-90h] + char v90; // [esp+1Ch] [ebp-8Ch] + unsigned int v91; // [esp+1Ch] [ebp-8Ch] + _DWORD *v92; // [esp+20h] [ebp-88h] + unsigned int v93; // [esp+24h] [ebp-84h] + int v94; // [esp+2Ch] [ebp-7Ch] + bool v95; // [esp+31h] [ebp-77h] + char v96; // [esp+32h] [ebp-76h] + char v97; // [esp+33h] [ebp-75h] + _BYTE *Buf; // [esp+34h] [ebp-74h] + int *v99; // [esp+38h] [ebp-70h] + int v100; // [esp+38h] [ebp-70h] + int v101; // [esp+3Ch] [ebp-6Ch] + std::locale::facet *v102; // [esp+40h] [ebp-68h] + char v103; // [esp+40h] [ebp-68h] + char v104; // [esp+40h] [ebp-68h] + char v105; // [esp+40h] [ebp-68h] + char v106; // [esp+40h] [ebp-68h] + char v107; // [esp+40h] [ebp-68h] + char v108; // [esp+40h] [ebp-68h] + char v109; // [esp+40h] [ebp-68h] + char v112; // [esp+4Ch] [ebp-5Ch] + char v113; // [esp+4Ch] [ebp-5Ch] + char v114; // [esp+5Bh] [ebp-4Dh] BYREF + int v115; // [esp+5Ch] [ebp-4Ch] + void *v116; // [esp+60h] [ebp-48h] BYREF + size_t v117; // [esp+64h] [ebp-44h] + int v118[4]; // [esp+68h] [ebp-40h] BYREF + void *v119; // [esp+78h] [ebp-30h] BYREF + size_t v120; // [esp+7Ch] [ebp-2Ch] + int v121[10]; // [esp+80h] [ebp-28h] BYREF + + v92 = std::use_facet>(a5 + 108); + v102 = (std::locale::facet *)std::locale::id::_M_id(&std::moneypunct::id); + v99 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v102); + v101 = *v99; + if ( !*v99 ) + { + v74 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v87); + *(_DWORD *)v74 = &off_4F66D4; + v75 = v74; + *((_DWORD *)v74 + 1) = 0; + *((_DWORD *)v74 + 2) = 0; + *((_DWORD *)v74 + 3) = 0; + *((_WORD *)v74 + 8) = 0; + *((_BYTE *)v74 + 18) = 0; + *((_DWORD *)v74 + 5) = 0; + *((_DWORD *)v74 + 6) = 0; + *((_DWORD *)v74 + 7) = 0; + *((_DWORD *)v74 + 8) = 0; + *((_DWORD *)v74 + 9) = 0; + *((_DWORD *)v74 + 10) = 0; + *((_DWORD *)v74 + 11) = 0; + *((_DWORD *)v74 + 12) = 0; + *((_DWORD *)v74 + 13) = 0; + *((_BYTE *)v74 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v74, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v75, v102, v88); + v101 = *v99; + } + if ( *(_DWORD *)(v101 + 32) ) + v95 = *(_DWORD *)(v101 + 40) != 0; + else + v95 = 0; + v117 = 0; + v116 = v118; + LOBYTE(v118[0]) = 0; + if ( *(_BYTE *)(v101 + 16) ) + std::string::reserve(&v116, 0x20u); + v119 = v121; + v120 = 0; + LOBYTE(v121[0]) = 0; + std::string::reserve(&v119, 0x20u); + v97 = 0; + v94 = 1; + v100 = 0; + v115 = *(_DWORD *)(v101 + 52); + v89 = 0; + v93 = 0; + v96 = 0; + while ( 2 ) + { + v9 = (unsigned __int8)*(&v114 + v94); + switch ( *(&v114 + v94) ) + { + case 0: + v104 = 1; + goto LABEL_37; + case 1: + LOBYTE(v9) = a2 == -1; + v35 = v9; + LOBYTE(v9) = v9 & (a1 != 0); + v36 = v9; + if ( (_BYTE)v9 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v86 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v86 == -1) - 1; + LOBYTE(v86) = v86 != -1; + v37 = (v86 - 1) & v36; + } + else + { + v37 = 0; + } + } + else + { + v37 = v35; + } + v38 = a4 == -1; + v106 = v38 & (a3 != 0); + if ( v106 ) + { + v38 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v38 = v76 != -1 ? 0 : v106; + a3 &= (v76 == -1) - 1; + } + } + v8 = v37; + v104 = 0; + if ( v38 == (_BYTE)v37 ) + goto LABEL_37; + if ( a1 && (_BYTE)v35 ) + { + v40 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v40 < *(_DWORD *)(a1 + 12) ) + { + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * *v40) & 0x20) != 0 ) + goto LABEL_77; + a2 = -1; + goto LABEL_37; + } + v39 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v39 == -1) - 1; + } + else + { + LOBYTE(v39) = a2; + } + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v39) & 0x20) != 0 ) + { + v40 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_78; + } +LABEL_77: + *(_DWORD *)(a1 + 8) = v40 + 1; +LABEL_78: + a2 = -1; + v104 = 1; + goto LABEL_37; + } + v104 = 0; +LABEL_37: + if ( v94 == 4 ) + { + v23 = v104 & (v93 > 1); +LABEL_39: + if ( v23 ) + { + if ( v96 ) + v24 = *(_BYTE **)(v101 + 36); + else + v24 = *(_BYTE **)(v101 + 28); + Buf = v24; + for ( i = 1; ; ++i ) + { + v105 = a2 == -1; + v26 = v105 & (a1 != 0); + if ( v26 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v78 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v78 == -1) - 1; + v27 = v78 != -1 ? 0 : v26; + } + else + { + v27 = 0; + } + } + else + { + v27 = a2 == -1; + } + if ( a3 && a4 == -1 ) + { + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v56 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + if ( v56 == -1 ) + { + a3 = 0; + v27 ^= 1u; + } + } + } + else + { + v27 ^= a4 == -1; + } + if ( i >= v93 || !v27 ) + { + if ( i != v93 ) + { +LABEL_182: + v29 = (a1 != 0) & v105; + goto LABEL_108; + } + if ( v120 > 1 ) + goto LABEL_198; + goto LABEL_165; + } + LOBYTE(v28) = a2; + v29 = v105 & (a1 != 0); + if ( v29 ) + { + v30 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) + { + if ( Buf[i] != *v30 ) + { + v105 &= a1 != 0; + goto LABEL_108; + } +LABEL_53: + *(_DWORD *)(a1 + 8) = v30 + 1; + goto LABEL_54; + } + v28 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v28 == -1) - 1; + } + if ( Buf[i] != (_BYTE)v28 ) + goto LABEL_182; + v30 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v30 < *(_DWORD *)(a1 + 12) ) + goto LABEL_53; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); +LABEL_54: + a2 = -1; + } + } + if ( !v104 ) + goto LABEL_107; + if ( v120 > 1 ) + { +LABEL_198: + first_not_of = std::string::find_first_not_of((int *)&v119, 48, 0); + if ( first_not_of ) + { + v71 = v120; + if ( first_not_of != -1 ) + goto LABEL_200; + first_not_of = v120 - 1; + if ( !v120 ) + { + *(_BYTE *)v119 = 0; + goto LABEL_165; + } + if ( v120 != 1 ) + { +LABEL_200: + if ( v120 > first_not_of ) + v71 = first_not_of; + std::string::_M_erase((int *)&v119, 0, v71); + } + } + } +LABEL_165: + if ( v96 && *(_BYTE *)v119 != 48 ) + std::string::_M_replace_aux(&v119, 0, 0, 1u, 45); + v61 = v117; + if ( v117 ) + { + v108 = v100; + if ( v97 ) + v108 = v89; + v62 = v116; + if ( v116 == v118 ) + v63 = 15; + else + v63 = v118[0]; + if ( v117 + 1 > v63 ) + { + std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); + v62 = v116; + } + v62[v61] = v108; + v117 = v61 + 1; + *((_BYTE *)v116 + v61 + 1) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v101 + 8), *(_DWORD *)(v101 + 12), (int)&v116) ) + *a6 |= 4u; + } + v105 = a2 == -1; + v29 = (a1 != 0) & v105; + if ( v97 && *(_DWORD *)(v101 + 44) != v100 ) + goto LABEL_108; + std::string::swap(a7, &v119); + if ( !v29 ) + goto LABEL_109; +LABEL_180: + v105 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v105 = v64 != -1 ? 0 : v29; + a1 &= (v64 == -1) - 1; + } + goto LABEL_109; + } + while ( 1 ) + { + v34 = a2 == -1 && a1 != 0; + if ( v34 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v77 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v8 = (v77 == -1) - 1; + a1 &= v8; + v31 = v77 == -1 && v34; + } + else + { + v31 = 0; + } + } + else + { + v31 = a2 == -1; + } + LOBYTE(v8) = a4 == -1; + v90 = v8 & (a3 != 0); + if ( v90 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) + { + v53 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + LOBYTE(v54) = v53 != -1; + v8 = v54 - 1; + LOBYTE(v8) = v90 & v8; + a3 &= (v53 == -1) - 1; + if ( (_BYTE)v8 == v31 ) + goto LABEL_125; + } + else if ( (_BYTE)v8 == v31 ) + { + goto LABEL_125; + } + if ( a1 && a2 == -1 ) + { + v33 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + { + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * *v33) & 0x20) == 0 ) + { + a2 = -1; + v42 = v104 ^ 1; + goto LABEL_126; + } +LABEL_63: + *(_DWORD *)(a1 + 8) = v33 + 1; + goto LABEL_64; + } + v32 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v32 == -1) - 1; + } + else + { + LOBYTE(v32) = a2; + } + v8 = v92[6]; + if ( (*(_BYTE *)(v8 + 2 * (unsigned __int8)v32) & 0x20) == 0 ) + goto LABEL_125; + v33 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + goto LABEL_63; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); +LABEL_64: + a2 = -1; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_89; + v8 = v94 - 1; + v42 = v94 == 1 || v93 > 1; + if ( v42 ) + goto LABEL_89; + if ( v94 != 2 ) + { + v104 = 1; + if ( v94 == 3 ) + { + if ( HIBYTE(v115) == 4 || HIBYTE(v115) == 3 && v95 ) + goto LABEL_89; + } + else + { +LABEL_126: + if ( v94 > 3 || v42 ) + { + v23 = v104 & (v93 > 1); + goto LABEL_39; + } + } +LABEL_128: + ++v94; + continue; + } + if ( !v95 && (_BYTE)v115 != 3 && BYTE2(v115) != 1 ) + goto LABEL_128; +LABEL_89: + v43 = 0; + v91 = *(_DWORD *)(v101 + 24); + while ( 2 ) + { + v44 = a2 == -1 && a1 != 0; + if ( v44 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v79 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v8); + a1 &= (v79 == -1) - 1; + v45 = v79 == -1 && v44; + } + else + { + v45 = 0; + } + } + else + { + v45 = a2 == -1; + } + v8 = a3; + if ( a3 && a4 == -1 ) + { + v8 = *(_DWORD *)(a3 + 12); + if ( *(_DWORD *)(a3 + 8) >= v8 ) + { + v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; + v45 ^= v60; + a3 &= v60 - 1; + } + } + else + { + v45 ^= a4 == -1; + } + v42 = v45 & (v43 < v91); + if ( !v42 ) + { + if ( v43 != v91 ) + goto LABEL_159; +LABEL_187: + v104 = 1; + goto LABEL_126; + } + if ( !a1 || a2 != -1 ) + { + LOBYTE(v46) = a2; + goto LABEL_99; + } + v47 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) + { + v46 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v46 == -1) - 1; +LABEL_99: + v8 = *(_DWORD *)(v101 + 20); + if ( *(_BYTE *)(v8 + v43) != (_BYTE)v46 ) + goto LABEL_159; + v47 = *(_BYTE **)(a1 + 8); + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v47 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_102; + } +LABEL_101: + *(_DWORD *)(a1 + 8) = v47 + 1; +LABEL_102: + a2 = -1; + ++v43; + continue; + } + break; + } + v8 = *(_DWORD *)(v101 + 20); + if ( *v47 == *(_BYTE *)(v8 + v43) ) + goto LABEL_101; + a2 = -1; +LABEL_159: + if ( !v43 ) + { + v104 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; + v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; + goto LABEL_126; + } +LABEL_107: + v105 = a2 == -1; + v29 = (a1 != 0) & v105; +LABEL_108: + *a6 |= 4u; + if ( v29 ) + goto LABEL_180; +LABEL_109: + v50 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v50 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + v50 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3) == -1; + } + } + if ( v50 == v105 ) + *a6 |= 2u; + if ( v119 != v121 ) + operator delete(v119); + if ( v116 != v118 ) + operator delete(v116); + return a1; + case 3: + if ( !*(_DWORD *)(v101 + 32) ) + { + v41 = v101; + if ( !*(_DWORD *)(v101 + 40) ) + { +LABEL_81: + v42 = v95; + v8 = !v95; + v104 = !v95; + goto LABEL_126; + } +LABEL_190: + LOBYTE(v41) = a2 == -1; + v67 = v41; + if ( !a1 || a2 != -1 ) + { + v68 = a2 == -1; + goto LABEL_193; + } +LABEL_210: + v68 = 1; + v67 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v73) = v73 == -1; + v67 = v73; + a1 &= (unsigned __int8)v73 - 1; + } +LABEL_193: + v69 = a4 == -1; + v109 = v69 & (a3 != 0); + if ( v109 ) + { + v69 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v84 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v69 = v84 != -1 ? 0 : v109; + a3 &= (v84 == -1) - 1; + } + } + v8 = v67; + if ( (_BYTE)v67 == v69 ) + { +LABEL_195: + if ( !*(_DWORD *)(v101 + 32) || *(_DWORD *)(v101 + 40) ) + goto LABEL_81; + goto LABEL_146; + } + if ( a1 && v68 ) + { + v81 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v81 < *(_DWORD *)(a1 + 12) ) + { + v8 = *(_DWORD *)(v101 + 36); + if ( *(_BYTE *)v8 != *v81 ) + goto LABEL_195; + v93 = *(_DWORD *)(v101 + 40); + goto LABEL_244; + } + v82 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v82 == -1) - 1; + } + else + { + LOBYTE(v82) = a2; + } + v8 = *(_DWORD *)(v101 + 36); + if ( *(_BYTE *)v8 != (_BYTE)v82 ) + goto LABEL_195; + v93 = *(_DWORD *)(v101 + 40); + v81 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v81 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_245; + } +LABEL_244: + *(_DWORD *)(a1 + 8) = v81 + 1; +LABEL_245: + a2 = -1; + v42 = 0; + v104 = 1; + v96 = 1; + goto LABEL_126; + } + v57 = a2 == -1 && a1 != 0; + if ( v57 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v85 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v85 == -1) - 1; + v58 = v85 == -1 && v57; + } + else + { + v58 = 0; + } + } + else + { + v58 = a2 == -1; + } + v8 = a3; + v59 = a4 == -1; + LOBYTE(v8) = v59 & (a3 != 0); + v107 = v8; + if ( (_BYTE)v8 ) + { + v8 = a3; + v59 = 0; + if ( *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12) ) + { + v83 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + v59 = v83 != -1 ? 0 : v107; + v8 = (v83 == -1) - 1; + a3 &= v8; + } + } + if ( v59 == v58 ) + goto LABEL_144; + if ( a1 && a2 == -1 ) + { + v72 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v72 < *(_DWORD *)(a1 + 12) ) + { + v8 = **(unsigned __int8 **)(v101 + 28); + if ( *v72 != (_BYTE)v8 ) + { + if ( *(_DWORD *)(v101 + 40) ) + goto LABEL_210; + goto LABEL_145; + } + v93 = *(_DWORD *)(v101 + 32); + goto LABEL_237; + } + v80 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + a1 &= (v80 == -1) - 1; + } + else + { + LOBYTE(v80) = a2; + } + v8 = *(_DWORD *)(v101 + 28); + if ( *(_BYTE *)v8 != (_BYTE)v80 ) + { +LABEL_144: + v41 = v101; + if ( *(_DWORD *)(v101 + 40) ) + goto LABEL_190; +LABEL_145: + if ( !*(_DWORD *)(v101 + 32) ) + goto LABEL_81; +LABEL_146: + v104 = 1; + v42 = 0; + v96 = 1; + goto LABEL_126; + } + v93 = *(_DWORD *)(v101 + 32); + v72 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_238; + } +LABEL_237: + *(_DWORD *)(a1 + 8) = v72 + 1; +LABEL_238: + a2 = -1; + v42 = 0; + goto LABEL_187; + case 4: + while ( 2 ) + { + v14 = a2 == -1 && a1 != 0; + if ( v14 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v8 = (v65 == -1) - 1; + a1 &= v8; + v15 = v65 == -1 && v14; + } + else + { + v15 = 0; + } + } + else + { + v15 = a2 == -1; + } + LOBYTE(v8) = a4 == -1; + v103 = v8 & (a3 != 0); + if ( v103 && (v8 = 0, *(_DWORD *)(a3 + 8) >= *(_DWORD *)(a3 + 12)) ) + { + v48 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + LOBYTE(v49) = v48 != -1; + v8 = v49 - 1; + LOBYTE(v8) = v103 & v8; + a3 &= (v48 == -1) - 1; + if ( v15 == (_BYTE)v8 ) + goto LABEL_105; + } + else if ( v15 == (_BYTE)v8 ) + { + goto LABEL_105; + } + if ( a1 && a2 == -1 ) + { + v52 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ) + { + v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + v16 = v66 != -1 ? v66 : -1; + a1 &= (v66 == -1) - 1; + } + else + { + v16 = *v52; + } + } + else + { + v16 = a2; + } + v17 = memchr((const void *)(v101 + 57), (char)v16, 0xAu); + if ( v17 ) + { + v10 = v120; + v11 = v120 + 1; + v112 = v17[(_DWORD)std::money_base::_S_atoms - 56 - v101]; + v12 = v119; + if ( v119 == v121 ) + v8 = 15; + else + v8 = v121[0]; + if ( v11 > v8 ) + { + std::string::_M_mutate((int)&v119, v120, 0, 0, 1u); + v12 = v119; + } + ++v100; + v12[v10] = v112; + v120 = v11; + *((_BYTE *)v119 + v10 + 1) = 0; +LABEL_14: + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + { +LABEL_15: + *(_DWORD *)(a1 + 8) = v13 + 1; +LABEL_16: + a2 = -1; + continue; + } +LABEL_35: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_16; + } + break; + } + v104 = v97 | (*(_BYTE *)(v101 + 17) != v16); + if ( !v104 ) + { + if ( *(int *)(v101 + 44) > 0 ) + { + v55 = v100; + v97 = 1; + v100 = 0; + v89 = v55; + goto LABEL_14; + } + v97 = 0; +LABEL_105: + v104 = 1; +LABEL_106: + if ( !v120 ) + goto LABEL_107; + goto LABEL_125; + } + v18 = *(_BYTE *)(v101 + 16); + if ( !v18 ) + goto LABEL_106; + if ( *(_BYTE *)(v101 + 18) == v16 ) + { + if ( !v97 ) + { + if ( v100 ) + { + v113 = v100; + v19 = v117; + v20 = v116; + v21 = v117 + 1; + if ( v116 == v118 ) + v22 = 15; + else + v22 = v118[0]; + if ( v21 > v22 ) + { + std::string::_M_mutate((int)&v116, v117, 0, 0, 1u); + v20 = v116; + } + v8 = (unsigned __int8)v100; + v100 = 0; + v20[v19] = v113; + v117 = v21; + *((_BYTE *)v116 + v19 + 1) = 0; + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + goto LABEL_15; + goto LABEL_35; + } + v104 = 0; + goto LABEL_106; + } + v18 = v97; + } + v104 = v18; + if ( !v120 ) + goto LABEL_107; +LABEL_125: + v42 = v104 ^ 1; + goto LABEL_126; + default: + v104 = 1; + v42 = 0; + goto LABEL_126; + } + } +} +// 4577A7: variable 'v87' is possibly undefined +// 457833: variable 'v88' is possibly undefined +// 457060: variable 'v49' is possibly undefined +// 4571D0: variable 'v54' is possibly undefined +// 45796D: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4E958C: using guessed type int std::moneypunct::id; +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (00457CC0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (00457CD0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (00457CE0) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::do_get( + unsigned int a1, + int a2, + unsigned int a3, + int a4, + char a5, + int a6, + _DWORD *a7, + int *a8) +{ + unsigned int v8; // eax + unsigned int v9; // esi + char *v10; // ebx + char v12; // al + void (__thiscall *v13)(_BYTE *, char *, char *, void *); // eax + void *v14; // [esp+20h] [ebp-48h] + char *v15; // [esp+24h] [ebp-44h] + _BYTE *v16; // [esp+28h] [ebp-40h] + _DWORD *Size; // [esp+2Ch] [ebp-3Ch] + void *Src; // [esp+38h] [ebp-30h] BYREF + _DWORD *v19; // [esp+3Ch] [ebp-2Ch] + char v20[40]; // [esp+40h] [ebp-28h] BYREF + + v20[0] = 0; + v16 = std::use_facet>(a6 + 108); + Src = v20; + v19 = 0; + if ( a5 ) + v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &Src); + else + v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &Src); + v9 = v8; + Size = v19; + if ( !v19 ) + goto LABEL_4; + std::string::resize(a8, v19, 0); + v10 = (char *)Src; + v15 = (char *)Size + (_DWORD)Src; + v12 = v16[28]; + v14 = (void *)*a8; + if ( v12 != 1 ) + { + if ( !v12 ) + std::ctype::_M_widen_init((int)v16); + v13 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v16 + 28); + if ( (char *)v13 == (char *)std::ctype::do_widen ) + { + if ( v15 != v10 ) + { + memcpy(v14, v10, (size_t)Size); + v10 = (char *)Src; + goto LABEL_5; + } + } + else + { + v13(v16, v10, v15, v14); + } +LABEL_4: + v10 = (char *)Src; + goto LABEL_5; + } + if ( v15 != Src ) + { + memcpy((void *)*a8, Src, (size_t)Size); + v10 = (char *)Src; + } +LABEL_5: + if ( v10 != v20 ) + operator delete(v10); + return v9; +} + +//----- (00457E80) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::do_get( + std::locale::facet *a1, + int a2, + unsigned int a3, + int a4, + char a5, + int a6, + _DWORD *a7, + long double *a8) +{ + unsigned int v8; // eax + unsigned int v9; // esi + char *String[2]; // [esp+28h] [ebp-30h] BYREF + char v12[40]; // [esp+30h] [ebp-28h] BYREF + + String[0] = v12; + String[1] = 0; + v12[0] = 0; + if ( a5 ) + v8 = std::money_get>::_M_extract( + (unsigned int)a1, + a2, + a3, + a4, + a6, + a7, + String); + else + v8 = std::money_get>::_M_extract( + (unsigned int)a1, + a2, + a3, + a4, + a6, + a7, + String); + v9 = v8; + std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String[0], a8, a7); + if ( String[0] != v12 ) + operator delete(String[0]); + return v9; +} + +//----- (00457F50) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::_M_extract( + unsigned int a1, + __int16 a2, + unsigned int a3, + __int16 a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + int v8; // esi + unsigned int v9; // edx + size_t v10; // esi + size_t v11; // edi + _BYTE *v12; // eax + unsigned int v13; // eax + bool v14; // si + char v15; // si + wchar_t v16; // si + wchar_t *v17; // eax + char v18; // al + size_t v19; // esi + _BYTE *v20; // eax + size_t v21; // edi + char v22; // al + int v23; // eax + unsigned int i; // esi + char v25; // dl + __int16 v26; // ax + unsigned int v27; // eax + char v28; // di + __int16 *v29; // eax + __int16 v30; // ax + char v31; // si + unsigned __int16 v32; // ax + unsigned int v33; // eax + bool v34; // si + _WORD *v35; // eax + __int16 v36; // ax + bool v37; // di + char v38; // di + char v39; // al + unsigned __int16 v40; // ax + unsigned int v41; // eax + char v42; // al + unsigned int v43; // edi + bool v44; // si + bool v45; // al + unsigned int v46; // eax + bool v47; // si + __int16 *v48; // eax + __int16 v49; // dx + __int16 *v50; // eax + __int16 v51; // ax + int v52; // eax + char v53; // si + int v54; // edx + __int16 *v56; // eax + __int16 v57; // ax + wchar_t *v58; // eax + unsigned int v59; // edx + __int16 *v60; // eax + __int16 v61; // ax + _WORD *v62; // eax + char v63; // al + bool v64; // si + char v65; // si + char v66; // al + __int16 *v67; // eax + __int16 v68; // ax + size_t v69; // esi + _BYTE *v70; // eax + size_t v71; // edx + __int16 *v72; // eax + __int16 v73; // dx + __int16 *v74; // eax + __int16 *v75; // eax + __int16 v76; // dx + char v77; // al + __int16 *v78; // eax + __int16 v79; // ax + __int16 *v80; // eax + __int16 v81; // ax + bool v82; // si + char v83; // si + char v84; // al + unsigned int first_not_of; // eax + __int16 *v86; // eax + __int16 v87; // dx + __int16 *v88; // eax + __int16 v89; // ax + _DWORD *v90; // eax + std::locale::_Impl *v91; // edi + __int16 *v92; // eax + __int16 v93; // dx + __int16 *v94; // eax + __int16 v95; // dx + _WORD *v96; // eax + __int16 v97; // ax + unsigned int v98; // eax + __int16 *v99; // eax + __int16 v100; // ax + unsigned int v101; // eax + _WORD *v102; // eax + __int16 *v103; // eax + __int16 v104; // dx + __int16 *v105; // eax + __int16 v106; // dx + void (__cdecl *v107)(void *); // [esp+4h] [ebp-A4h] + unsigned int v108; // [esp+8h] [ebp-A0h] + char v109; // [esp+18h] [ebp-90h] + unsigned int v110; // [esp+20h] [ebp-88h] + void *v111; // [esp+24h] [ebp-84h] + unsigned int v112; // [esp+28h] [ebp-80h] + int v113; // [esp+30h] [ebp-78h] + int v114; // [esp+30h] [ebp-78h] + bool v115; // [esp+34h] [ebp-74h] + char v116; // [esp+35h] [ebp-73h] + char v117; // [esp+36h] [ebp-72h] + bool v118; // [esp+36h] [ebp-72h] + char v119; // [esp+37h] [ebp-71h] + char S; // [esp+38h] [ebp-70h] + int *v121; // [esp+3Ch] [ebp-6Ch] + char v122; // [esp+3Ch] [ebp-6Ch] + char v123; // [esp+3Ch] [ebp-6Ch] + char v124; // [esp+3Ch] [ebp-6Ch] + char v125; // [esp+3Ch] [ebp-6Ch] + char v126; // [esp+3Ch] [ebp-6Ch] + char v127; // [esp+3Ch] [ebp-6Ch] + char v128; // [esp+3Ch] [ebp-6Ch] + int v129; // [esp+40h] [ebp-68h] + int v130; // [esp+44h] [ebp-64h] + char v132; // [esp+4Ch] [ebp-5Ch] + char v134; // [esp+4Eh] [ebp-5Ah] + char v135; // [esp+4Eh] [ebp-5Ah] + char v136; // [esp+5Bh] [ebp-4Dh] BYREF + int v137; // [esp+5Ch] [ebp-4Ch] + void *v138; // [esp+60h] [ebp-48h] BYREF + size_t v139; // [esp+64h] [ebp-44h] + int v140[4]; // [esp+68h] [ebp-40h] BYREF + void *v141; // [esp+78h] [ebp-30h] BYREF + size_t v142; // [esp+7Ch] [ebp-2Ch] + int v143[10]; // [esp+80h] [ebp-28h] BYREF + + v111 = std::use_facet>(a5 + 108); + v8 = std::locale::id::_M_id(&std::moneypunct::id); + v121 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v8); + v130 = *v121; + if ( !*v121 ) + { + v90 = operator new((struct type_info *)0x54, v107); + v90[1] = 0; + v91 = (std::locale::_Impl *)v90; + *v90 = &off_4F66E4; + v90[2] = 0; + v90[3] = 0; + *((_BYTE *)v90 + 16) = 0; + *(_DWORD *)((char *)v90 + 18) = 0; + v90[6] = 0; + v90[7] = 0; + v90[8] = 0; + v90[9] = 0; + v90[10] = 0; + v90[11] = 0; + v90[12] = 0; + v90[13] = 0; + v90[14] = 0; + *((_BYTE *)v90 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v91, (const std::locale::facet *)v8, v108); + v130 = *v121; + } + if ( *(_DWORD *)(v130 + 36) ) + v115 = *(_DWORD *)(v130 + 44) != 0; + else + v115 = 0; + v139 = 0; + v138 = v140; + LOBYTE(v140[0]) = 0; + if ( *(_BYTE *)(v130 + 16) ) + std::string::reserve(&v138, 0x20u); + v141 = v143; + v142 = 0; + LOBYTE(v143[0]) = 0; + std::string::reserve(&v141, 0x20u); + v119 = 0; + v113 = 1; + v116 = 0; + v137 = *(_DWORD *)(v130 + 56); + v129 = 0; + v109 = 0; + v112 = 0; + while ( 2 ) + { + switch ( *(&v136 + v113) ) + { + case 0: + v123 = 1; + goto LABEL_37; + case 1: + v37 = a2 == -1 && a1 != 0; + if ( v37 ) + { + v94 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v94 >= *(_DWORD *)(a1 + 12) ) + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v95 = *v94; + a1 &= (v95 == -1) - 1; + v38 = v95 == -1 && v37; + } + else + { + v38 = a2 == -1; + } + v9 = a3; + v39 = a4 == -1; + v126 = v39 & (a3 != 0); + if ( v126 ) + { + v92 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v92 >= *(_DWORD *)(a3 + 12) ) + v93 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v93 = *v92; + v39 = v93 != -1 ? 0 : v126; + v9 = (v93 == -1) - 1; + a3 &= v9; + } + v123 = 0; + if ( v39 != v38 ) + { + if ( a1 && a2 == -1 ) + { + v102 = *(_WORD **)(a1 + 8); + v40 = (unsigned int)v102 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v102; + a1 &= (v40 == 0xFFFF) - 1; + } + else + { + v40 = a2; + } + v123 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v40); + if ( v123 ) + { + v41 = *(_DWORD *)(a1 + 8); + if ( v41 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v41 + 2; + a2 = -1; + } + } +LABEL_37: + if ( v113 == 4 ) + { + v22 = v123 & (v112 > 1); + goto LABEL_39; + } + while ( 1 ) + { + v34 = a2 == -1 && a1 != 0; + if ( v34 ) + { + v35 = *(_WORD **)(a1 + 8); + v36 = (unsigned int)v35 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v35; + v9 = (v36 == -1) - 1; + a1 &= v9; + v31 = v36 == -1 && v34; + } + else + { + v31 = a2 == -1; + } + LOBYTE(v9) = a4 == -1; + v117 = v9 & (a3 != 0); + if ( v117 ) + { + v59 = a3; + v60 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v60 >= *(_DWORD *)(a3 + 12) ) + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v61 = *v60; + LOBYTE(v59) = v61 != -1; + v9 = v59 - 1; + LOBYTE(v9) = v117 & v9; + a3 &= (v61 == -1) - 1; + if ( v31 == (_BYTE)v9 ) + goto LABEL_133; + } + else if ( v31 == (_BYTE)v9 ) + { + goto LABEL_133; + } + if ( a1 && a2 == -1 ) + { + v62 = *(_WORD **)(a1 + 8); + v32 = (unsigned int)v62 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v62; + a1 &= (v32 == 0xFFFF) - 1; + } + else + { + v32 = a2; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v32) ) + goto LABEL_133; + v33 = *(_DWORD *)(a1 + 8); + if ( v33 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v33 + 2; + a2 = -1; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_93; + v9 = v113 - 1; + v42 = v113 == 1 || v112 > 1; + if ( v42 ) + goto LABEL_93; + if ( v113 == 2 ) + { + if ( v115 || (_BYTE)v137 == 3 || BYTE2(v137) == 1 ) + { +LABEL_93: + v43 = 0; + v110 = *(_DWORD *)(v130 + 28); + while ( 1 ) + { + v47 = a2 == -1 && a1 != 0; + if ( v47 ) + { + v48 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ) + v49 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v9); + else + v49 = *v48; + a1 &= (v49 == -1) - 1; + v44 = v49 == -1 && v47; + } + else + { + v44 = a2 == -1; + } + v9 = a3; + v45 = a4 == -1; + v118 = v45 && a3 != 0; + if ( v118 ) + { + v75 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v75 >= *(_DWORD *)(a3 + 12) ) + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v76 = *v75; + v77 = v44 ^ (v76 == -1 && v118); + v9 = (v76 == -1) - 1; + a3 &= v9; + LOBYTE(v9) = v43 < v110; + v42 = (v43 < v110) & v77; + if ( !v42 ) + { +LABEL_181: + if ( v43 == v110 ) + goto LABEL_182; +LABEL_186: + if ( !v43 ) + { + v123 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; + v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; + goto LABEL_134; + } +LABEL_112: + v28 = a2 == -1; + goto LABEL_113; + } + } + else + { + LOBYTE(v9) = v43 < v110; + v42 = (v43 < v110) & (v44 ^ v45); + if ( !v42 ) + goto LABEL_181; + } + if ( a1 && a2 == -1 ) + { + v78 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v78 >= *(_DWORD *)(a1 + 12) ) + v79 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v79 = *v78; + a1 &= (v79 == -1) - 1; + v9 = *(_DWORD *)(v130 + 24); + if ( *(_WORD *)(v9 + 2 * v43) != v79 ) + goto LABEL_186; + } + else + { + v9 = *(_DWORD *)(v130 + 24); + if ( *(_WORD *)(v9 + 2 * v43) != a2 ) + goto LABEL_186; + } + v46 = *(_DWORD *)(a1 + 8); + if ( v46 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v46 + 2; + ++v43; + a2 = -1; + } + } +LABEL_136: + ++v113; + continue; + } + v123 = 1; + if ( v113 == 3 ) + { + if ( HIBYTE(v137) == 4 || HIBYTE(v137) == 3 && v115 ) + goto LABEL_93; + goto LABEL_136; + } +LABEL_134: + if ( v113 <= 3 && !v42 ) + goto LABEL_136; + v22 = v123 & (v112 > 1); +LABEL_39: + if ( v22 ) + { + if ( v116 ) + v23 = *(_DWORD *)(v130 + 40); + else + v23 = *(_DWORD *)(v130 + 32); + v114 = v23; + for ( i = 1; ; ++i ) + { + v28 = a2 == -1; + v125 = v28 & (a1 != 0); + if ( v125 ) + { + v29 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v29 >= *(_DWORD *)(a1 + 12) ) + v30 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v30 = *v29; + a1 &= (v30 == -1) - 1; + v124 = v30 != -1 ? 0 : v125; + } + else + { + v124 = a2 == -1; + } + v25 = a4 == -1; + S = v25 & (a3 != 0); + if ( S ) + { + v67 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v67 >= *(_DWORD *)(a3 + 12) ) + v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v68 = *v67; + v25 = v68 != -1 ? 0 : S; + a3 &= (v68 == -1) - 1; + if ( i >= v112 ) + { +LABEL_155: + if ( i == v112 ) + { + if ( v142 <= 1 ) + goto LABEL_157; + goto LABEL_204; + } + goto LABEL_113; + } + } + else if ( i >= v112 ) + { + goto LABEL_155; + } + if ( v25 == v124 ) + goto LABEL_155; + if ( a1 && a2 == -1 ) + { + v74 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v74 >= *(_DWORD *)(a1 + 12) ) + v26 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v26 = *v74; + a1 &= (v26 == -1) - 1; + } + else + { + v26 = a2; + } + if ( *(_WORD *)(v114 + 2 * i) != v26 ) + goto LABEL_113; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v27 + 2; + a2 = -1; + } + } + if ( !v123 ) + goto LABEL_112; + if ( v142 <= 1 ) + goto LABEL_157; +LABEL_204: + first_not_of = std::string::find_first_not_of((int *)&v141, 48, 0); + if ( first_not_of ) + { + if ( first_not_of != -1 ) + goto LABEL_206; + first_not_of = v142 - 1; + if ( !v142 ) + { + *(_BYTE *)v141 = 0; + goto LABEL_157; + } + if ( v142 != 1 ) + { +LABEL_206: + if ( first_not_of > v142 ) + first_not_of = v142; + std::string::_M_erase((int *)&v141, 0, first_not_of); + } + } +LABEL_157: + if ( v116 && *(_BYTE *)v141 != 48 ) + std::string::_M_replace_aux(&v141, 0, 0, 1u, 45); + v69 = v139; + if ( v139 ) + { + v132 = v129; + if ( v119 ) + v132 = v109; + v70 = v138; + if ( v138 == v140 ) + v71 = 15; + else + v71 = v140[0]; + if ( v139 + 1 > v71 ) + { + std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); + v70 = v138; + } + v70[v69] = v132; + v139 = v69 + 1; + *((_BYTE *)v138 + v69 + 1) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v130 + 8), *(_DWORD *)(v130 + 12), (int)&v138) ) + *a6 |= 4u; + } + v28 = a2 == -1; + if ( v119 && *(_DWORD *)(v130 + 48) != v129 ) + { +LABEL_113: + v52 = (int)a6; + *a6 |= 4u; + v53 = v28 & (a1 != 0); + if ( v53 ) + goto LABEL_172; + } + else + { + v52 = (int)std::string::swap(a7, &v141); + v53 = v28 & (a1 != 0); + if ( v53 ) + { +LABEL_172: + v72 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v73 = *v72; + v28 = v73 != -1 ? 0 : v53; + v52 = (v73 == -1) - 1; + a1 &= v52; + } + } + LOBYTE(v52) = a4 == -1; + v54 = v52; + if ( a3 && a4 == -1 ) + { + v80 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v80 >= *(_DWORD *)(a3 + 12) ) + v81 = (*(int (__fastcall **)(unsigned int, int))(*(_DWORD *)a3 + 36))(a3, v54); + else + v81 = *v80; + LOBYTE(v54) = v81 == -1; + } + if ( v28 == (_BYTE)v54 ) + *a6 |= 2u; + if ( v141 != v143 ) + operator delete(v141); + if ( v138 != v140 ) + operator delete(v138); + return a1; + case 3: + if ( *(_DWORD *)(v130 + 36) ) + { + v64 = a2 == -1 && a1 != 0; + if ( v64 ) + { + v86 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v86 >= *(_DWORD *)(a1 + 12) ) + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v87 = *v86; + a1 &= (v87 == -1) - 1; + v65 = v87 == -1 && v64; + } + else + { + v65 = a2 == -1; + } + v66 = a4 == -1; + v127 = v66 & (a3 != 0); + if ( v127 ) + { + v103 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v103 >= *(_DWORD *)(a3 + 12) ) + v104 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v104 = *v103; + v66 = v104 != -1 ? 0 : v127; + a3 &= (v104 == -1) - 1; + } + if ( v66 != v65 ) + { + if ( a1 && a2 == -1 ) + { + v96 = *(_WORD **)(a1 + 8); + v97 = (unsigned int)v96 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v96; + a1 &= (v97 == -1) - 1; + } + else + { + v97 = a2; + } + v9 = *(_DWORD *)(v130 + 32); + if ( *(_WORD *)v9 == v97 ) + { + v112 = *(_DWORD *)(v130 + 36); + v98 = *(_DWORD *)(a1 + 8); + if ( v98 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v98 + 2; + v42 = 0; + a2 = -1; +LABEL_182: + v123 = 1; + goto LABEL_134; + } + } + if ( !*(_DWORD *)(v130 + 44) ) + { + v9 = *(_DWORD *)(v130 + 36); + if ( !v9 ) + goto LABEL_85; +LABEL_151: + v123 = 1; + v42 = 0; + v116 = 1; + goto LABEL_134; + } + } + else if ( !*(_DWORD *)(v130 + 44) ) + { + goto LABEL_85; + } + v82 = a2 == -1 && a1 != 0; + if ( v82 ) + { + v88 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v88 >= *(_DWORD *)(a1 + 12) ) + v89 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v89 = *v88; + a1 &= (v89 == -1) - 1; + v83 = v89 == -1 && v82; + } + else + { + v83 = a2 == -1; + } + v9 = a3; + v84 = a4 == -1; + LOBYTE(v9) = v84 & (a3 != 0); + v128 = v9; + if ( (_BYTE)v9 ) + { + v105 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v105 >= *(_DWORD *)(a3 + 12) ) + v106 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v106 = *v105; + v84 = v106 != -1 ? 0 : v128; + v9 = (v106 == -1) - 1; + a3 &= v9; + } + if ( v83 == v84 + || (!a1 || a2 != -1 + ? (v100 = a2) + : ((v99 = *(__int16 **)(a1 + 8), (unsigned int)v99 >= *(_DWORD *)(a1 + 12)) + ? (v100 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1)) + : (v100 = *v99), + a1 &= (v100 == -1) - 1), + v9 = *(_DWORD *)(v130 + 40), + *(_WORD *)v9 != v100) ) + { + if ( !*(_DWORD *)(v130 + 36) || *(_DWORD *)(v130 + 44) ) + { +LABEL_85: + v42 = v115; + v123 = !v115; + goto LABEL_134; + } + goto LABEL_151; + } + v112 = *(_DWORD *)(v130 + 44); + v101 = *(_DWORD *)(a1 + 8); + if ( v101 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v101 + 2; + v9 = -1; + v123 = 1; + v42 = 0; + a2 = -1; + v116 = 1; + goto LABEL_134; + case 4: + while ( 2 ) + { + v14 = a2 == -1 && a1 != 0; + if ( v14 ) + { + v56 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ) + v57 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v57 = *v56; + v9 = (v57 == -1) - 1; + a1 &= v9; + v15 = v57 == -1 && v14; + } + else + { + v15 = a2 == -1; + } + LOBYTE(v9) = a4 == -1; + v122 = v9 & (a3 != 0); + if ( v122 ) + { + v50 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(a3 + 12) ) + v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v51 = *v50; + LOBYTE(v9) = v51 != -1; + --v9; + LOBYTE(v9) = v122 & v9; + a3 &= (v51 == -1) - 1; + if ( v15 == (_BYTE)v9 ) + goto LABEL_110; + } + else if ( v15 == (_BYTE)v9 ) + { + goto LABEL_110; + } + if ( a1 && a2 == -1 ) + { + v58 = *(wchar_t **)(a1 + 8); + if ( (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ) + v16 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v16 = *v58; + a1 &= (v16 == 0xFFFF) - 1; + } + else + { + v16 = a2; + } + v17 = wmemchr((const wchar_t *)(v130 + 62), v16, 0xAu); + if ( v17 ) + { + v10 = v142; + v11 = v142 + 1; + v134 = std::money_base::_S_atoms[((int)v17 - v130 - 60) >> 1]; + v12 = v141; + if ( v141 == v143 ) + v9 = 15; + else + v9 = v143[0]; + if ( v11 > v9 ) + { + std::string::_M_mutate((int)&v141, v142, 0, 0, 1u); + v12 = v141; + } + ++v129; + v12[v10] = v134; + v142 = v11; + *((_BYTE *)v141 + v10 + 1) = 0; +LABEL_14: + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + { +LABEL_15: + *(_DWORD *)(a1 + 8) = v13 + 2; +LABEL_16: + a2 = -1; + continue; + } +LABEL_35: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_16; + } + break; + } + v123 = v119 | (*(_WORD *)(v130 + 18) != v16); + if ( !v123 ) + { + if ( *(int *)(v130 + 48) > 0 ) + { + v63 = v129; + v119 = 1; + v129 = 0; + v109 = v63; + goto LABEL_14; + } + v119 = 0; +LABEL_110: + v123 = 1; + goto LABEL_111; + } + v18 = *(_BYTE *)(v130 + 16); + if ( v18 ) + { + if ( *(_WORD *)(v130 + 20) != v16 ) + goto LABEL_216; + if ( v119 ) + { + v18 = v119; +LABEL_216: + v123 = v18; + if ( !v142 ) + goto LABEL_112; + goto LABEL_133; + } + if ( v129 ) + { + v135 = v129; + v19 = v139; + v20 = v138; + v21 = v139 + 1; + if ( v138 == v140 ) + v9 = 15; + else + v9 = v140[0]; + if ( v21 > v9 ) + { + std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); + v20 = v138; + } + v129 = 0; + v20[v19] = v135; + v139 = v21; + *((_BYTE *)v138 + v19 + 1) = 0; + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + goto LABEL_15; + goto LABEL_35; + } + v123 = 0; + } +LABEL_111: + if ( !v142 ) + goto LABEL_112; +LABEL_133: + v42 = v123 ^ 1; + goto LABEL_134; + default: + v123 = 1; + v42 = 0; + goto LABEL_134; + } + } +} +// 458CC7: variable 'v107' is possibly undefined +// 458D54: variable 'v108' is possibly undefined +// 4585C9: variable 'v9' is possibly undefined +// 458779: variable 'v59' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4E9590: using guessed type int std::moneypunct::id; +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (00459190) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::_M_extract( + unsigned int a1, + __int16 a2, + unsigned int a3, + __int16 a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + int v8; // esi + unsigned int v9; // edx + size_t v10; // esi + size_t v11; // edi + _BYTE *v12; // eax + unsigned int v13; // eax + bool v14; // si + char v15; // si + wchar_t v16; // si + wchar_t *v17; // eax + char v18; // al + size_t v19; // esi + _BYTE *v20; // eax + size_t v21; // edi + char v22; // al + int v23; // eax + unsigned int i; // esi + char v25; // dl + __int16 v26; // ax + unsigned int v27; // eax + char v28; // di + __int16 *v29; // eax + __int16 v30; // ax + char v31; // si + unsigned __int16 v32; // ax + unsigned int v33; // eax + bool v34; // si + _WORD *v35; // eax + __int16 v36; // ax + bool v37; // di + char v38; // di + char v39; // al + unsigned __int16 v40; // ax + unsigned int v41; // eax + char v42; // al + unsigned int v43; // edi + bool v44; // si + bool v45; // al + unsigned int v46; // eax + bool v47; // si + __int16 *v48; // eax + __int16 v49; // dx + __int16 *v50; // eax + __int16 v51; // ax + int v52; // eax + char v53; // si + int v54; // edx + __int16 *v56; // eax + __int16 v57; // ax + wchar_t *v58; // eax + unsigned int v59; // edx + __int16 *v60; // eax + __int16 v61; // ax + _WORD *v62; // eax + char v63; // al + bool v64; // si + char v65; // si + char v66; // al + __int16 *v67; // eax + __int16 v68; // ax + size_t v69; // esi + _BYTE *v70; // eax + size_t v71; // edx + __int16 *v72; // eax + __int16 v73; // dx + __int16 *v74; // eax + __int16 *v75; // eax + __int16 v76; // dx + char v77; // al + __int16 *v78; // eax + __int16 v79; // ax + __int16 *v80; // eax + __int16 v81; // ax + bool v82; // si + char v83; // si + char v84; // al + unsigned int first_not_of; // eax + __int16 *v86; // eax + __int16 v87; // dx + __int16 *v88; // eax + __int16 v89; // ax + _DWORD *v90; // eax + std::locale::_Impl *v91; // edi + __int16 *v92; // eax + __int16 v93; // dx + __int16 *v94; // eax + __int16 v95; // dx + _WORD *v96; // eax + __int16 v97; // ax + unsigned int v98; // eax + __int16 *v99; // eax + __int16 v100; // ax + unsigned int v101; // eax + _WORD *v102; // eax + __int16 *v103; // eax + __int16 v104; // dx + __int16 *v105; // eax + __int16 v106; // dx + void (__cdecl *v107)(void *); // [esp+4h] [ebp-A4h] + unsigned int v108; // [esp+8h] [ebp-A0h] + char v109; // [esp+18h] [ebp-90h] + unsigned int v110; // [esp+20h] [ebp-88h] + void *v111; // [esp+24h] [ebp-84h] + unsigned int v112; // [esp+28h] [ebp-80h] + int v113; // [esp+30h] [ebp-78h] + int v114; // [esp+30h] [ebp-78h] + bool v115; // [esp+34h] [ebp-74h] + char v116; // [esp+35h] [ebp-73h] + char v117; // [esp+36h] [ebp-72h] + bool v118; // [esp+36h] [ebp-72h] + char v119; // [esp+37h] [ebp-71h] + char S; // [esp+38h] [ebp-70h] + int *v121; // [esp+3Ch] [ebp-6Ch] + char v122; // [esp+3Ch] [ebp-6Ch] + char v123; // [esp+3Ch] [ebp-6Ch] + char v124; // [esp+3Ch] [ebp-6Ch] + char v125; // [esp+3Ch] [ebp-6Ch] + char v126; // [esp+3Ch] [ebp-6Ch] + char v127; // [esp+3Ch] [ebp-6Ch] + char v128; // [esp+3Ch] [ebp-6Ch] + int v129; // [esp+40h] [ebp-68h] + int v130; // [esp+44h] [ebp-64h] + char v132; // [esp+4Ch] [ebp-5Ch] + char v134; // [esp+4Eh] [ebp-5Ah] + char v135; // [esp+4Eh] [ebp-5Ah] + char v136; // [esp+5Bh] [ebp-4Dh] BYREF + int v137; // [esp+5Ch] [ebp-4Ch] + void *v138; // [esp+60h] [ebp-48h] BYREF + size_t v139; // [esp+64h] [ebp-44h] + int v140[4]; // [esp+68h] [ebp-40h] BYREF + void *v141; // [esp+78h] [ebp-30h] BYREF + size_t v142; // [esp+7Ch] [ebp-2Ch] + int v143[10]; // [esp+80h] [ebp-28h] BYREF + + v111 = std::use_facet>(a5 + 108); + v8 = std::locale::id::_M_id(&std::moneypunct::id); + v121 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v8); + v130 = *v121; + if ( !*v121 ) + { + v90 = operator new((struct type_info *)0x54, v107); + v90[1] = 0; + v91 = (std::locale::_Impl *)v90; + *v90 = &off_4F66F4; + v90[2] = 0; + v90[3] = 0; + *((_BYTE *)v90 + 16) = 0; + *(_DWORD *)((char *)v90 + 18) = 0; + v90[6] = 0; + v90[7] = 0; + v90[8] = 0; + v90[9] = 0; + v90[10] = 0; + v90[11] = 0; + v90[12] = 0; + v90[13] = 0; + v90[14] = 0; + *((_BYTE *)v90 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v90, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v91, (const std::locale::facet *)v8, v108); + v130 = *v121; + } + if ( *(_DWORD *)(v130 + 36) ) + v115 = *(_DWORD *)(v130 + 44) != 0; + else + v115 = 0; + v139 = 0; + v138 = v140; + LOBYTE(v140[0]) = 0; + if ( *(_BYTE *)(v130 + 16) ) + std::string::reserve(&v138, 0x20u); + v141 = v143; + v142 = 0; + LOBYTE(v143[0]) = 0; + std::string::reserve(&v141, 0x20u); + v119 = 0; + v113 = 1; + v116 = 0; + v137 = *(_DWORD *)(v130 + 56); + v129 = 0; + v109 = 0; + v112 = 0; + while ( 2 ) + { + switch ( *(&v136 + v113) ) + { + case 0: + v123 = 1; + goto LABEL_37; + case 1: + v37 = a2 == -1 && a1 != 0; + if ( v37 ) + { + v94 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v94 >= *(_DWORD *)(a1 + 12) ) + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v95 = *v94; + a1 &= (v95 == -1) - 1; + v38 = v95 == -1 && v37; + } + else + { + v38 = a2 == -1; + } + v9 = a3; + v39 = a4 == -1; + v126 = v39 & (a3 != 0); + if ( v126 ) + { + v92 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v92 >= *(_DWORD *)(a3 + 12) ) + v93 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v93 = *v92; + v39 = v93 != -1 ? 0 : v126; + v9 = (v93 == -1) - 1; + a3 &= v9; + } + v123 = 0; + if ( v39 != v38 ) + { + if ( a1 && a2 == -1 ) + { + v102 = *(_WORD **)(a1 + 8); + v40 = (unsigned int)v102 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v102; + a1 &= (v40 == 0xFFFF) - 1; + } + else + { + v40 = a2; + } + v123 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v40); + if ( v123 ) + { + v41 = *(_DWORD *)(a1 + 8); + if ( v41 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v41 + 2; + a2 = -1; + } + } +LABEL_37: + if ( v113 == 4 ) + { + v22 = v123 & (v112 > 1); + goto LABEL_39; + } + while ( 1 ) + { + v34 = a2 == -1 && a1 != 0; + if ( v34 ) + { + v35 = *(_WORD **)(a1 + 8); + v36 = (unsigned int)v35 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v35; + v9 = (v36 == -1) - 1; + a1 &= v9; + v31 = v36 == -1 && v34; + } + else + { + v31 = a2 == -1; + } + LOBYTE(v9) = a4 == -1; + v117 = v9 & (a3 != 0); + if ( v117 ) + { + v59 = a3; + v60 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v60 >= *(_DWORD *)(a3 + 12) ) + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v61 = *v60; + LOBYTE(v59) = v61 != -1; + v9 = v59 - 1; + LOBYTE(v9) = v117 & v9; + a3 &= (v61 == -1) - 1; + if ( v31 == (_BYTE)v9 ) + goto LABEL_133; + } + else if ( v31 == (_BYTE)v9 ) + { + goto LABEL_133; + } + if ( a1 && a2 == -1 ) + { + v62 = *(_WORD **)(a1 + 8); + v32 = (unsigned int)v62 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v62; + a1 &= (v32 == 0xFFFF) - 1; + } + else + { + v32 = a2; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v111 + 8))(v111, 32, v32) ) + goto LABEL_133; + v33 = *(_DWORD *)(a1 + 8); + if ( v33 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v33 + 2; + a2 = -1; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_93; + v9 = v113 - 1; + v42 = v113 == 1 || v112 > 1; + if ( v42 ) + goto LABEL_93; + if ( v113 == 2 ) + { + if ( v115 || (_BYTE)v137 == 3 || BYTE2(v137) == 1 ) + { +LABEL_93: + v43 = 0; + v110 = *(_DWORD *)(v130 + 28); + while ( 1 ) + { + v47 = a2 == -1 && a1 != 0; + if ( v47 ) + { + v48 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v48 >= *(_DWORD *)(a1 + 12) ) + v49 = (*(int (__fastcall **)(unsigned int, unsigned int))(*(_DWORD *)a1 + 36))(a1, v9); + else + v49 = *v48; + a1 &= (v49 == -1) - 1; + v44 = v49 == -1 && v47; + } + else + { + v44 = a2 == -1; + } + v9 = a3; + v45 = a4 == -1; + v118 = v45 && a3 != 0; + if ( v118 ) + { + v75 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v75 >= *(_DWORD *)(a3 + 12) ) + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v76 = *v75; + v77 = v44 ^ (v76 == -1 && v118); + v9 = (v76 == -1) - 1; + a3 &= v9; + LOBYTE(v9) = v43 < v110; + v42 = (v43 < v110) & v77; + if ( !v42 ) + { +LABEL_181: + if ( v43 == v110 ) + goto LABEL_182; +LABEL_186: + if ( !v43 ) + { + v123 = (*(_DWORD *)(a5 + 12) & 0x200) == 0; + v42 = (*(_DWORD *)(a5 + 12) & 0x200) != 0; + goto LABEL_134; + } +LABEL_112: + v28 = a2 == -1; + goto LABEL_113; + } + } + else + { + LOBYTE(v9) = v43 < v110; + v42 = (v43 < v110) & (v44 ^ v45); + if ( !v42 ) + goto LABEL_181; + } + if ( a1 && a2 == -1 ) + { + v78 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v78 >= *(_DWORD *)(a1 + 12) ) + v79 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v79 = *v78; + a1 &= (v79 == -1) - 1; + v9 = *(_DWORD *)(v130 + 24); + if ( *(_WORD *)(v9 + 2 * v43) != v79 ) + goto LABEL_186; + } + else + { + v9 = *(_DWORD *)(v130 + 24); + if ( *(_WORD *)(v9 + 2 * v43) != a2 ) + goto LABEL_186; + } + v46 = *(_DWORD *)(a1 + 8); + if ( v46 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v46 + 2; + ++v43; + a2 = -1; + } + } +LABEL_136: + ++v113; + continue; + } + v123 = 1; + if ( v113 == 3 ) + { + if ( HIBYTE(v137) == 4 || HIBYTE(v137) == 3 && v115 ) + goto LABEL_93; + goto LABEL_136; + } +LABEL_134: + if ( v113 <= 3 && !v42 ) + goto LABEL_136; + v22 = v123 & (v112 > 1); +LABEL_39: + if ( v22 ) + { + if ( v116 ) + v23 = *(_DWORD *)(v130 + 40); + else + v23 = *(_DWORD *)(v130 + 32); + v114 = v23; + for ( i = 1; ; ++i ) + { + v28 = a2 == -1; + v125 = v28 & (a1 != 0); + if ( v125 ) + { + v29 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v29 >= *(_DWORD *)(a1 + 12) ) + v30 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v30 = *v29; + a1 &= (v30 == -1) - 1; + v124 = v30 != -1 ? 0 : v125; + } + else + { + v124 = a2 == -1; + } + v25 = a4 == -1; + S = v25 & (a3 != 0); + if ( S ) + { + v67 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v67 >= *(_DWORD *)(a3 + 12) ) + v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v68 = *v67; + v25 = v68 != -1 ? 0 : S; + a3 &= (v68 == -1) - 1; + if ( i >= v112 ) + { +LABEL_155: + if ( i == v112 ) + { + if ( v142 <= 1 ) + goto LABEL_157; + goto LABEL_204; + } + goto LABEL_113; + } + } + else if ( i >= v112 ) + { + goto LABEL_155; + } + if ( v25 == v124 ) + goto LABEL_155; + if ( a1 && a2 == -1 ) + { + v74 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v74 >= *(_DWORD *)(a1 + 12) ) + v26 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v26 = *v74; + a1 &= (v26 == -1) - 1; + } + else + { + v26 = a2; + } + if ( *(_WORD *)(v114 + 2 * i) != v26 ) + goto LABEL_113; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v27 + 2; + a2 = -1; + } + } + if ( !v123 ) + goto LABEL_112; + if ( v142 <= 1 ) + goto LABEL_157; +LABEL_204: + first_not_of = std::string::find_first_not_of((int *)&v141, 48, 0); + if ( first_not_of ) + { + if ( first_not_of != -1 ) + goto LABEL_206; + first_not_of = v142 - 1; + if ( !v142 ) + { + *(_BYTE *)v141 = 0; + goto LABEL_157; + } + if ( v142 != 1 ) + { +LABEL_206: + if ( first_not_of > v142 ) + first_not_of = v142; + std::string::_M_erase((int *)&v141, 0, first_not_of); + } + } +LABEL_157: + if ( v116 && *(_BYTE *)v141 != 48 ) + std::string::_M_replace_aux(&v141, 0, 0, 1u, 45); + v69 = v139; + if ( v139 ) + { + v132 = v129; + if ( v119 ) + v132 = v109; + v70 = v138; + if ( v138 == v140 ) + v71 = 15; + else + v71 = v140[0]; + if ( v139 + 1 > v71 ) + { + std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); + v70 = v138; + } + v70[v69] = v132; + v139 = v69 + 1; + *((_BYTE *)v138 + v69 + 1) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v130 + 8), *(_DWORD *)(v130 + 12), (int)&v138) ) + *a6 |= 4u; + } + v28 = a2 == -1; + if ( v119 && *(_DWORD *)(v130 + 48) != v129 ) + { +LABEL_113: + v52 = (int)a6; + *a6 |= 4u; + v53 = v28 & (a1 != 0); + if ( v53 ) + goto LABEL_172; + } + else + { + v52 = (int)std::string::swap(a7, &v141); + v53 = v28 & (a1 != 0); + if ( v53 ) + { +LABEL_172: + v72 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ) + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v73 = *v72; + v28 = v73 != -1 ? 0 : v53; + v52 = (v73 == -1) - 1; + a1 &= v52; + } + } + LOBYTE(v52) = a4 == -1; + v54 = v52; + if ( a3 && a4 == -1 ) + { + v80 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v80 >= *(_DWORD *)(a3 + 12) ) + v81 = (*(int (__fastcall **)(unsigned int, int))(*(_DWORD *)a3 + 36))(a3, v54); + else + v81 = *v80; + LOBYTE(v54) = v81 == -1; + } + if ( v28 == (_BYTE)v54 ) + *a6 |= 2u; + if ( v141 != v143 ) + operator delete(v141); + if ( v138 != v140 ) + operator delete(v138); + return a1; + case 3: + if ( *(_DWORD *)(v130 + 36) ) + { + v64 = a2 == -1 && a1 != 0; + if ( v64 ) + { + v86 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v86 >= *(_DWORD *)(a1 + 12) ) + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v87 = *v86; + a1 &= (v87 == -1) - 1; + v65 = v87 == -1 && v64; + } + else + { + v65 = a2 == -1; + } + v66 = a4 == -1; + v127 = v66 & (a3 != 0); + if ( v127 ) + { + v103 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v103 >= *(_DWORD *)(a3 + 12) ) + v104 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v104 = *v103; + v66 = v104 != -1 ? 0 : v127; + a3 &= (v104 == -1) - 1; + } + if ( v66 != v65 ) + { + if ( a1 && a2 == -1 ) + { + v96 = *(_WORD **)(a1 + 8); + v97 = (unsigned int)v96 >= *(_DWORD *)(a1 + 12) + ? (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1) + : *v96; + a1 &= (v97 == -1) - 1; + } + else + { + v97 = a2; + } + v9 = *(_DWORD *)(v130 + 32); + if ( *(_WORD *)v9 == v97 ) + { + v112 = *(_DWORD *)(v130 + 36); + v98 = *(_DWORD *)(a1 + 8); + if ( v98 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v98 + 2; + v42 = 0; + a2 = -1; +LABEL_182: + v123 = 1; + goto LABEL_134; + } + } + if ( !*(_DWORD *)(v130 + 44) ) + { + v9 = *(_DWORD *)(v130 + 36); + if ( !v9 ) + goto LABEL_85; +LABEL_151: + v123 = 1; + v42 = 0; + v116 = 1; + goto LABEL_134; + } + } + else if ( !*(_DWORD *)(v130 + 44) ) + { + goto LABEL_85; + } + v82 = a2 == -1 && a1 != 0; + if ( v82 ) + { + v88 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v88 >= *(_DWORD *)(a1 + 12) ) + v89 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v89 = *v88; + a1 &= (v89 == -1) - 1; + v83 = v89 == -1 && v82; + } + else + { + v83 = a2 == -1; + } + v9 = a3; + v84 = a4 == -1; + LOBYTE(v9) = v84 & (a3 != 0); + v128 = v9; + if ( (_BYTE)v9 ) + { + v105 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v105 >= *(_DWORD *)(a3 + 12) ) + v106 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v106 = *v105; + v84 = v106 != -1 ? 0 : v128; + v9 = (v106 == -1) - 1; + a3 &= v9; + } + if ( v83 == v84 + || (!a1 || a2 != -1 + ? (v100 = a2) + : ((v99 = *(__int16 **)(a1 + 8), (unsigned int)v99 >= *(_DWORD *)(a1 + 12)) + ? (v100 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1)) + : (v100 = *v99), + a1 &= (v100 == -1) - 1), + v9 = *(_DWORD *)(v130 + 40), + *(_WORD *)v9 != v100) ) + { + if ( !*(_DWORD *)(v130 + 36) || *(_DWORD *)(v130 + 44) ) + { +LABEL_85: + v42 = v115; + v123 = !v115; + goto LABEL_134; + } + goto LABEL_151; + } + v112 = *(_DWORD *)(v130 + 44); + v101 = *(_DWORD *)(a1 + 8); + if ( v101 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v101 + 2; + v9 = -1; + v123 = 1; + v42 = 0; + a2 = -1; + v116 = 1; + goto LABEL_134; + case 4: + while ( 2 ) + { + v14 = a2 == -1 && a1 != 0; + if ( v14 ) + { + v56 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ) + v57 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v57 = *v56; + v9 = (v57 == -1) - 1; + a1 &= v9; + v15 = v57 == -1 && v14; + } + else + { + v15 = a2 == -1; + } + LOBYTE(v9) = a4 == -1; + v122 = v9 & (a3 != 0); + if ( v122 ) + { + v50 = *(__int16 **)(a3 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(a3 + 12) ) + v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a3 + 36))(a3); + else + v51 = *v50; + LOBYTE(v9) = v51 != -1; + --v9; + LOBYTE(v9) = v122 & v9; + a3 &= (v51 == -1) - 1; + if ( v15 == (_BYTE)v9 ) + goto LABEL_110; + } + else if ( v15 == (_BYTE)v9 ) + { + goto LABEL_110; + } + if ( a1 && a2 == -1 ) + { + v58 = *(wchar_t **)(a1 + 8); + if ( (unsigned int)v58 >= *(_DWORD *)(a1 + 12) ) + v16 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 36))(a1); + else + v16 = *v58; + a1 &= (v16 == 0xFFFF) - 1; + } + else + { + v16 = a2; + } + v17 = wmemchr((const wchar_t *)(v130 + 62), v16, 0xAu); + if ( v17 ) + { + v10 = v142; + v11 = v142 + 1; + v134 = std::money_base::_S_atoms[((int)v17 - v130 - 60) >> 1]; + v12 = v141; + if ( v141 == v143 ) + v9 = 15; + else + v9 = v143[0]; + if ( v11 > v9 ) + { + std::string::_M_mutate((int)&v141, v142, 0, 0, 1u); + v12 = v141; + } + ++v129; + v12[v10] = v134; + v142 = v11; + *((_BYTE *)v141 + v10 + 1) = 0; +LABEL_14: + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + { +LABEL_15: + *(_DWORD *)(a1 + 8) = v13 + 2; +LABEL_16: + a2 = -1; + continue; + } +LABEL_35: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)a1 + 40))(a1); + goto LABEL_16; + } + break; + } + v123 = v119 | (*(_WORD *)(v130 + 18) != v16); + if ( !v123 ) + { + if ( *(int *)(v130 + 48) > 0 ) + { + v63 = v129; + v119 = 1; + v129 = 0; + v109 = v63; + goto LABEL_14; + } + v119 = 0; +LABEL_110: + v123 = 1; + goto LABEL_111; + } + v18 = *(_BYTE *)(v130 + 16); + if ( v18 ) + { + if ( *(_WORD *)(v130 + 20) != v16 ) + goto LABEL_216; + if ( v119 ) + { + v18 = v119; +LABEL_216: + v123 = v18; + if ( !v142 ) + goto LABEL_112; + goto LABEL_133; + } + if ( v129 ) + { + v135 = v129; + v19 = v139; + v20 = v138; + v21 = v139 + 1; + if ( v138 == v140 ) + v9 = 15; + else + v9 = v140[0]; + if ( v21 > v9 ) + { + std::string::_M_mutate((int)&v138, v139, 0, 0, 1u); + v20 = v138; + } + v129 = 0; + v20[v19] = v135; + v139 = v21; + *((_BYTE *)v138 + v19 + 1) = 0; + v13 = *(_DWORD *)(a1 + 8); + if ( v13 < *(_DWORD *)(a1 + 12) ) + goto LABEL_15; + goto LABEL_35; + } + v123 = 0; + } +LABEL_111: + if ( !v142 ) + goto LABEL_112; +LABEL_133: + v42 = v123 ^ 1; + goto LABEL_134; + default: + v123 = 1; + v42 = 0; + goto LABEL_134; + } + } +} +// 459F07: variable 'v107' is possibly undefined +// 459F94: variable 'v108' is possibly undefined +// 459809: variable 'v9' is possibly undefined +// 4599B9: variable 'v59' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4E9594: using guessed type int std::moneypunct::id; +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (0045A3D0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (0045A3E0) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (0045A3F0) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::do_get( + unsigned int a1, + __int16 a2, + unsigned int a3, + __int16 a4, + char a5, + int a6, + _DWORD *a7, + int *a8) +{ + unsigned int v8; // eax + unsigned int v9; // esi + unsigned int v10; // edi + void *v12; // [esp+20h] [ebp-48h] + void *v13; // [esp+38h] [ebp-30h] BYREF + unsigned int v14; // [esp+3Ch] [ebp-2Ch] + char v15[40]; // [esp+40h] [ebp-28h] BYREF + + v15[0] = 0; + v12 = std::use_facet>(a6 + 108); + v13 = v15; + v14 = 0; + if ( a5 ) + v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &v13); + else + v8 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, &v13); + v9 = v8; + v10 = v14; + if ( v14 ) + { + std::wstring::resize(a8, v14, 0); + (*(void (__thiscall **)(void *, void *, char *, int))(*(_DWORD *)v12 + 44))(v12, v13, (char *)v13 + v10, *a8); + } + if ( v13 != v15 ) + operator delete(v13); + return v9; +} + +//----- (0045A510) -------------------------------------------------------- +unsigned int __stdcall std::money_get>::do_get( + std::locale::facet *a1, + __int16 a2, + unsigned int a3, + __int16 a4, + char a5, + int a6, + _DWORD *a7, + long double *a8) +{ + unsigned int v8; // eax + unsigned int v9; // esi + char *String[2]; // [esp+38h] [ebp-30h] BYREF + char v12[40]; // [esp+40h] [ebp-28h] BYREF + + String[0] = v12; + String[1] = 0; + v12[0] = 0; + if ( a5 ) + v8 = std::money_get>::_M_extract( + (unsigned int)a1, + a2, + a3, + a4, + a6, + a7, + String); + else + v8 = std::money_get>::_M_extract( + (unsigned int)a1, + a2, + a3, + a4, + a6, + a7, + String); + v9 = v8; + std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String[0], a8, a7); + if ( String[0] != v12 ) + operator delete(String[0]); + return v9; +} + +//----- (0045A5F0) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (0045A610) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (0045A630) -------------------------------------------------------- +int __stdcall std::money_put>::do_put( + int a1, + char a2, + char a3, + int a4, + char a5, + int a6) +{ + if ( a3 ) + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); + else + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); +} + +//----- (0045A6A0) -------------------------------------------------------- +int __thiscall std::money_put>::do_put( + void *this, + int a2, + char a3, + int a4, + int a5, + int a6, + long double a7) +{ + void *v7; // esp + void *v8; // esp + int v9; // eax + int v10; // ebx + int v11; // eax + void *v12; // esp + void *v13; // esp + char v14; // al + void (__thiscall *v15)(_BYTE *, void *, size_t, void *); // eax + int v16; // eax + int v17; // ebx + char v19[52]; // [esp-30h] [ebp-A8h] BYREF + const std::locale *v20; // [esp+4h] [ebp-74h] + void *v21; // [esp+24h] [ebp-54h] + size_t BufferCount; // [esp+28h] [ebp-50h] + int v23; // [esp+2Ch] [ebp-4Ch] + int v24; // [esp+30h] [ebp-48h] + void *v25; // [esp+34h] [ebp-44h] + _BYTE *v26; // [esp+38h] [ebp-40h] + void *Src; // [esp+3Ch] [ebp-3Ch] + _DWORD *v28; // [esp+44h] [ebp-34h] BYREF + std::locale *v29[2]; // [esp+48h] [ebp-30h] BYREF + char v30[40]; // [esp+50h] [ebp-28h] BYREF + + v25 = this; + v24 = a4; + v23 = a6; + std::locale::locale((volatile signed __int32 **)&v28, (volatile signed __int32 **)(a5 + 108), v20); + v26 = std::use_facet>((int)&v28); + v7 = alloca(80); + v8 = alloca(80); + Src = v19; + v29[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); + v9 = std::__convert_from_v((int *const *)v29, v19, 0x40u, "%.*Lf", 0, a7); + v10 = v9; + if ( v9 > 63 ) + { + BufferCount = v9 + 1; + v11 = 16 * ((unsigned int)(v9 + 28) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + Src = v19; + v29[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); + v10 = std::__convert_from_v((int *const *)v29, v19, BufferCount, "%.*Lf", 0, a7); + } + v29[0] = (std::locale *)v30; + std::string::_M_construct(v29, v10, 0); + v21 = v29[0]; + BufferCount = (size_t)Src + v10; + v14 = v26[28]; + if ( v14 == 1 ) + goto LABEL_6; + if ( v14 ) + { + v15 = *(void (__thiscall **)(_BYTE *, void *, size_t, void *))(*(_DWORD *)v26 + 28); + if ( (char *)v15 == (char *)std::ctype::do_widen ) + goto LABEL_6; +LABEL_15: + v15(v26, Src, BufferCount, v21); + goto LABEL_8; + } + std::ctype::_M_widen_init((int)v26); + v15 = *(void (__thiscall **)(_BYTE *, void *, size_t, void *))(*(_DWORD *)v26 + 28); + if ( (char *)v15 != (char *)std::ctype::do_widen ) + goto LABEL_15; +LABEL_6: + if ( (void *)BufferCount != Src ) + memcpy(v21, Src, v10); +LABEL_8: + if ( (_BYTE)v24 ) + v16 = std::money_put>::_M_insert(a2, a3, a5, v23, (int)v29); + else + v16 = std::money_put>::_M_insert(a2, a3, a5, v23, (int)v29); + v17 = v16; + if ( (char *)v29[0] != v30 ) + operator delete(v29[0]); + std::locale::~locale(&v28); + return v17; +} + +//----- (0045A8D0) -------------------------------------------------------- +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + char a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + char *v8; // ebx + int v9; // ecx + unsigned __int8 *v10; // ecx + unsigned __int8 *v11; // eax + size_t v12; // edi + int v14; // eax + _BYTE *v15; // eax + unsigned int v16; // edi + void **v17; // ebx + size_t v18; // edi + _BYTE *v19; // eax + size_t v20; // edx + char v21; // cl + size_t v22; // edx + size_t v23; // edx + size_t v24; // edx + int *v25; // eax + _BYTE *v26; // eax + unsigned int v27; // edx + char *v28; // ebx + std::locale::_Impl *v29; // eax + std::locale::_Impl *v30; // esi + void (__cdecl *v31)(void *); // [esp+4h] [ebp-B4h] + unsigned int v32; // [esp+8h] [ebp-B0h] + size_t v33; // [esp+8h] [ebp-B0h] + char v34; // [esp+30h] [ebp-88h] + size_t v35; // [esp+34h] [ebp-84h] + char v36; // [esp+38h] [ebp-80h] + bool v37; // [esp+3Ch] [ebp-7Ch] + size_t v38; // [esp+3Ch] [ebp-7Ch] + int v39; // [esp+40h] [ebp-78h] + int v40; // [esp+40h] [ebp-78h] + char *v41; // [esp+44h] [ebp-74h] + unsigned int v42; // [esp+4Ch] [ebp-6Ch] + _DWORD *v43; // [esp+50h] [ebp-68h] + size_t v44; // [esp+50h] [ebp-68h] + size_t v45; // [esp+50h] [ebp-68h] + int v46; // [esp+6Ch] [ebp-4Ch] BYREF + void *v47; // [esp+70h] [ebp-48h] BYREF + size_t v48; // [esp+74h] [ebp-44h] + int v49[4]; // [esp+78h] [ebp-40h] BYREF + void *v50; // [esp+88h] [ebp-30h] BYREF + size_t v51; // [esp+8Ch] [ebp-2Ch] + int v52[10]; // [esp+90h] [ebp-28h] BYREF + + v43 = std::use_facet>(a3 + 108); + v5 = std::locale::id::_M_id(&std::moneypunct::id); + v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v29 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v31); + *(_DWORD *)v29 = &off_4F66C4; + v30 = v29; + *((_WORD *)v29 + 8) = 0; + *((_DWORD *)v29 + 1) = 0; + *((_DWORD *)v29 + 2) = 0; + *((_DWORD *)v29 + 3) = 0; + *((_BYTE *)v29 + 18) = 0; + *((_DWORD *)v29 + 5) = 0; + *((_DWORD *)v29 + 6) = 0; + *((_DWORD *)v29 + 7) = 0; + *((_DWORD *)v29 + 8) = 0; + *((_DWORD *)v29 + 9) = 0; + *((_DWORD *)v29 + 10) = 0; + *((_DWORD *)v29 + 11) = 0; + *((_DWORD *)v29 + 12) = 0; + *((_DWORD *)v29 + 13) = 0; + *((_BYTE *)v29 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v5, v32); + v7 = *v6; + } + v8 = *(char **)a5; + v9 = *(_DWORD *)(a5 + 4); + if ( **(_BYTE **)a5 == *(_BYTE *)(v7 + 56) ) + { + v46 = *(_DWORD *)(v7 + 52); + if ( !v9 ) + goto LABEL_10; + ++v8; + v41 = *(char **)(v7 + 36); + v42 = *(_DWORD *)(v7 + 40); + } + else + { + v46 = *(_DWORD *)(v7 + 48); + v41 = *(char **)(v7 + 28); + v42 = *(_DWORD *)(v7 + 32); + } + v10 = (unsigned __int8 *)&v8[v9]; + if ( v10 > (unsigned __int8 *)v8 ) + { + v11 = (unsigned __int8 *)v8; + do + { + if ( (*(_BYTE *)(v43[6] + 2 * *v11) & 8) == 0 ) + break; + ++v11; + } + while ( v10 != v11 ); + v12 = v11 - (unsigned __int8 *)v8; + if ( v11 != (unsigned __int8 *)v8 ) + { + v48 = 0; + v47 = v49; + LOBYTE(v49[0]) = 0; + std::string::reserve(&v47, 2 * v12); + v14 = *(_DWORD *)(v7 + 44); + v39 = v12 - v14; + if ( (int)(v12 - v14) > 0 ) + { + if ( v14 < 0 ) + v39 = v12; + if ( *(_DWORD *)(v7 + 12) ) + { + std::string::_M_replace_aux(&v47, 0, v48, 2 * v39, 0); + v15 = std::__add_grouping( + v47, + *(_BYTE *)(v7 + 18), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v8, + &v8[v39]); + if ( v15 - (_BYTE *)v47 > v48 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v15 - (_BYTE *)v47, + v48); + v48 = v15 - (_BYTE *)v47; + *v15 = 0; + v14 = *(_DWORD *)(v7 + 44); + } + else + { + std::string::_M_replace((unsigned int *)&v47, 0, v48, v8, v39); + v14 = *(_DWORD *)(v7 + 44); + } + } + v44 = v48; + if ( v14 > 0 ) + { + v36 = *(_BYTE *)(v7 + 17); + v38 = v48 + 1; + v26 = v47; + if ( v47 == v49 ) + v27 = 15; + else + v27 = v49[0]; + if ( v38 > v27 ) + { + std::string::_M_mutate((int)&v47, v48, 0, 0, 1u); + v26 = v47; + } + v26[v44] = v36; + v48 = v38; + *((_BYTE *)v47 + v38) = 0; + if ( v39 < 0 ) + { + std::string::_M_replace_aux(&v47, v48, 0, -v39, *(_BYTE *)(v7 + 57)); + if ( v12 > 0x3FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v47, v8, v12); + } + else + { + v28 = &v8[v39]; + if ( *(_DWORD *)(v7 + 44) > 0x3FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v47, v28, *(_DWORD *)(v7 + 44)); + } + v44 = v48; + } + v16 = v42 + v44; + v40 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v16 += *(_DWORD *)(v7 + 24); + v51 = 0; + v50 = v52; + LOBYTE(v52[0]) = 0; + std::string::reserve(&v50, 2 * v16); + v17 = (void **)&v46; + v45 = *(_DWORD *)(a3 + 8); + v35 = v45 - v16; + v37 = v45 > v16 && v40 == 16; + do + { + switch ( *(_BYTE *)v17 ) + { + case 0: + if ( v37 ) + goto LABEL_41; + break; + case 1: + v18 = v51; + if ( !v37 ) + { + v19 = v50; + if ( v50 == v52 ) + v23 = 15; + else + v23 = v52[0]; + if ( v51 + 1 > v23 ) + { + std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); + v19 = v50; + } + v21 = a4; + goto LABEL_39; + } +LABEL_41: + std::string::_M_replace_aux(&v50, v51, 0, v35, a4); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + { + v22 = *(_DWORD *)(v7 + 24); + if ( v22 > 0x3FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v50, *(_BYTE **)(v7 + 20), v22); + } + break; + case 3: + if ( v42 ) + { + v18 = v51; + v34 = *v41; + v19 = v50; + if ( v50 == v52 ) + v20 = 15; + else + v20 = v52[0]; + if ( v51 + 1 > v20 ) + { + std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); + v19 = v50; + } + v21 = v34; +LABEL_39: + v19[v18] = v21; + v51 = v18 + 1; + *((_BYTE *)v50 + v18 + 1) = 0; + } + break; + case 4: + std::string::_M_append(&v50, v47, v48); + break; + default: + break; + } + v17 = (void **)((char *)v17 + 1); + } + while ( &v47 != v17 ); + v24 = v51; + if ( v42 > 1 ) + { + if ( v42 - 1 > 0x3FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v50, v41 + 1, v42 - 1); + v24 = v51; + if ( v45 <= v51 ) + goto LABEL_46; + } + else if ( v45 <= v51 ) + { +LABEL_46: + v45 = v24; +LABEL_47: + v25 = (int *)v50; + if ( !a2 ) + { + (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v45); + v25 = (int *)v50; + } + if ( v25 != v52 ) + operator delete(v25); + if ( v47 != v49 ) + operator delete(v47); + goto LABEL_10; + } + v33 = v45 - v24; + if ( v40 == 32 ) + std::string::_M_replace_aux(&v50, v24, 0, v33, a4); + else + std::string::_M_replace_aux(&v50, 0, 0, v33, a4); + goto LABEL_47; + } + } +LABEL_10: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 45AE07: variable 'v31' is possibly undefined +// 45AE93: variable 'v32' is possibly undefined +// 4E9588: using guessed type int std::moneypunct::id; +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (0045B0A0) -------------------------------------------------------- +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + char a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + char *v8; // ebx + int v9; // ecx + unsigned __int8 *v10; // ecx + unsigned __int8 *v11; // eax + size_t v12; // edi + int v14; // eax + _BYTE *v15; // eax + unsigned int v16; // edi + void **v17; // ebx + size_t v18; // edi + _BYTE *v19; // eax + size_t v20; // edx + char v21; // cl + size_t v22; // edx + size_t v23; // edx + size_t v24; // edx + int *v25; // eax + _BYTE *v26; // eax + unsigned int v27; // edx + char *v28; // ebx + std::locale::_Impl *v29; // eax + std::locale::_Impl *v30; // esi + void (__cdecl *v31)(void *); // [esp+4h] [ebp-B4h] + unsigned int v32; // [esp+8h] [ebp-B0h] + size_t v33; // [esp+8h] [ebp-B0h] + char v34; // [esp+30h] [ebp-88h] + size_t v35; // [esp+34h] [ebp-84h] + char v36; // [esp+38h] [ebp-80h] + bool v37; // [esp+3Ch] [ebp-7Ch] + size_t v38; // [esp+3Ch] [ebp-7Ch] + int v39; // [esp+40h] [ebp-78h] + int v40; // [esp+40h] [ebp-78h] + char *v41; // [esp+44h] [ebp-74h] + unsigned int v42; // [esp+4Ch] [ebp-6Ch] + _DWORD *v43; // [esp+50h] [ebp-68h] + size_t v44; // [esp+50h] [ebp-68h] + size_t v45; // [esp+50h] [ebp-68h] + int v46; // [esp+6Ch] [ebp-4Ch] BYREF + void *v47; // [esp+70h] [ebp-48h] BYREF + size_t v48; // [esp+74h] [ebp-44h] + int v49[4]; // [esp+78h] [ebp-40h] BYREF + void *v50; // [esp+88h] [ebp-30h] BYREF + size_t v51; // [esp+8Ch] [ebp-2Ch] + int v52[10]; // [esp+90h] [ebp-28h] BYREF + + v43 = std::use_facet>(a3 + 108); + v5 = std::locale::id::_M_id(&std::moneypunct::id); + v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v29 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v31); + *(_DWORD *)v29 = &off_4F66D4; + v30 = v29; + *((_WORD *)v29 + 8) = 0; + *((_DWORD *)v29 + 1) = 0; + *((_DWORD *)v29 + 2) = 0; + *((_DWORD *)v29 + 3) = 0; + *((_BYTE *)v29 + 18) = 0; + *((_DWORD *)v29 + 5) = 0; + *((_DWORD *)v29 + 6) = 0; + *((_DWORD *)v29 + 7) = 0; + *((_DWORD *)v29 + 8) = 0; + *((_DWORD *)v29 + 9) = 0; + *((_DWORD *)v29 + 10) = 0; + *((_DWORD *)v29 + 11) = 0; + *((_DWORD *)v29 + 12) = 0; + *((_DWORD *)v29 + 13) = 0; + *((_BYTE *)v29 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v5, v32); + v7 = *v6; + } + v8 = *(char **)a5; + v9 = *(_DWORD *)(a5 + 4); + if ( **(_BYTE **)a5 == *(_BYTE *)(v7 + 56) ) + { + v46 = *(_DWORD *)(v7 + 52); + if ( !v9 ) + goto LABEL_10; + ++v8; + v41 = *(char **)(v7 + 36); + v42 = *(_DWORD *)(v7 + 40); + } + else + { + v46 = *(_DWORD *)(v7 + 48); + v41 = *(char **)(v7 + 28); + v42 = *(_DWORD *)(v7 + 32); + } + v10 = (unsigned __int8 *)&v8[v9]; + if ( v10 > (unsigned __int8 *)v8 ) + { + v11 = (unsigned __int8 *)v8; + do + { + if ( (*(_BYTE *)(v43[6] + 2 * *v11) & 8) == 0 ) + break; + ++v11; + } + while ( v10 != v11 ); + v12 = v11 - (unsigned __int8 *)v8; + if ( v11 != (unsigned __int8 *)v8 ) + { + v48 = 0; + v47 = v49; + LOBYTE(v49[0]) = 0; + std::string::reserve(&v47, 2 * v12); + v14 = *(_DWORD *)(v7 + 44); + v39 = v12 - v14; + if ( (int)(v12 - v14) > 0 ) + { + if ( v14 < 0 ) + v39 = v12; + if ( *(_DWORD *)(v7 + 12) ) + { + std::string::_M_replace_aux(&v47, 0, v48, 2 * v39, 0); + v15 = std::__add_grouping( + v47, + *(_BYTE *)(v7 + 18), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v8, + &v8[v39]); + if ( v15 - (_BYTE *)v47 > v48 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v15 - (_BYTE *)v47, + v48); + v48 = v15 - (_BYTE *)v47; + *v15 = 0; + v14 = *(_DWORD *)(v7 + 44); + } + else + { + std::string::_M_replace((unsigned int *)&v47, 0, v48, v8, v39); + v14 = *(_DWORD *)(v7 + 44); + } + } + v44 = v48; + if ( v14 > 0 ) + { + v36 = *(_BYTE *)(v7 + 17); + v38 = v48 + 1; + v26 = v47; + if ( v47 == v49 ) + v27 = 15; + else + v27 = v49[0]; + if ( v38 > v27 ) + { + std::string::_M_mutate((int)&v47, v48, 0, 0, 1u); + v26 = v47; + } + v26[v44] = v36; + v48 = v38; + *((_BYTE *)v47 + v38) = 0; + if ( v39 < 0 ) + { + std::string::_M_replace_aux(&v47, v48, 0, -v39, *(_BYTE *)(v7 + 57)); + if ( v12 > 0x3FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v47, v8, v12); + } + else + { + v28 = &v8[v39]; + if ( *(_DWORD *)(v7 + 44) > 0x3FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v47, v28, *(_DWORD *)(v7 + 44)); + } + v44 = v48; + } + v16 = v42 + v44; + v40 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v16 += *(_DWORD *)(v7 + 24); + v51 = 0; + v50 = v52; + LOBYTE(v52[0]) = 0; + std::string::reserve(&v50, 2 * v16); + v17 = (void **)&v46; + v45 = *(_DWORD *)(a3 + 8); + v35 = v45 - v16; + v37 = v45 > v16 && v40 == 16; + do + { + switch ( *(_BYTE *)v17 ) + { + case 0: + if ( v37 ) + goto LABEL_41; + break; + case 1: + v18 = v51; + if ( !v37 ) + { + v19 = v50; + if ( v50 == v52 ) + v23 = 15; + else + v23 = v52[0]; + if ( v51 + 1 > v23 ) + { + std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); + v19 = v50; + } + v21 = a4; + goto LABEL_39; + } +LABEL_41: + std::string::_M_replace_aux(&v50, v51, 0, v35, a4); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + { + v22 = *(_DWORD *)(v7 + 24); + if ( v22 > 0x3FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v50, *(_BYTE **)(v7 + 20), v22); + } + break; + case 3: + if ( v42 ) + { + v18 = v51; + v34 = *v41; + v19 = v50; + if ( v50 == v52 ) + v20 = 15; + else + v20 = v52[0]; + if ( v51 + 1 > v20 ) + { + std::string::_M_mutate((int)&v50, v51, 0, 0, 1u); + v19 = v50; + } + v21 = v34; +LABEL_39: + v19[v18] = v21; + v51 = v18 + 1; + *((_BYTE *)v50 + v18 + 1) = 0; + } + break; + case 4: + std::string::_M_append(&v50, v47, v48); + break; + default: + break; + } + v17 = (void **)((char *)v17 + 1); + } + while ( &v47 != v17 ); + v24 = v51; + if ( v42 > 1 ) + { + if ( v42 - 1 > 0x3FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v50, v41 + 1, v42 - 1); + v24 = v51; + if ( v45 <= v51 ) + goto LABEL_46; + } + else if ( v45 <= v51 ) + { +LABEL_46: + v45 = v24; +LABEL_47: + v25 = (int *)v50; + if ( !a2 ) + { + (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v45); + v25 = (int *)v50; + } + if ( v25 != v52 ) + operator delete(v25); + if ( v47 != v49 ) + operator delete(v47); + goto LABEL_10; + } + v33 = v45 - v24; + if ( v40 == 32 ) + std::string::_M_replace_aux(&v50, v24, 0, v33, a4); + else + std::string::_M_replace_aux(&v50, 0, 0, v33, a4); + goto LABEL_47; + } + } +LABEL_10: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 45B5D7: variable 'v31' is possibly undefined +// 45B663: variable 'v32' is possibly undefined +// 4E958C: using guessed type int std::moneypunct::id; +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (0045B870) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (0045B890) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (0045B8B0) -------------------------------------------------------- +int __stdcall std::money_put>::do_put( + int a1, + char a2, + char a3, + int a4, + wchar_t a5, + int a6) +{ + if ( a3 ) + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); + else + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); +} + +//----- (0045B920) -------------------------------------------------------- +int __thiscall std::money_put>::do_put( + void *this, + int a2, + int a3, + int a4, + int a5, + int a6, + long double a7) +{ + void *v7; // esp + void *v8; // esp + int v9; // eax + int v10; // ebx + int v11; // eax + void *v12; // esp + void *v13; // esp + int v14; // eax + int v15; // ebx + int v17; // [esp-44h] [ebp-BCh] + int v18; // [esp-40h] [ebp-B8h] + int v19; // [esp-3Ch] [ebp-B4h] + int v20; // [esp-38h] [ebp-B0h] + int v21; // [esp-34h] [ebp-ACh] + _DWORD v22[7]; // [esp-30h] [ebp-A8h] BYREF + int v23; // [esp-14h] [ebp-8Ch] + int v24; // [esp-10h] [ebp-88h] + int v25; // [esp-Ch] [ebp-84h] + int v26; // [esp-8h] [ebp-80h] + std::locale **v27; // [esp-4h] [ebp-7Ch] + const std::locale *v28; // [esp+4h] [ebp-74h] + size_t BufferCount; // [esp+28h] [ebp-50h] + int v30; // [esp+2Ch] [ebp-4Ch] + int v31; // [esp+30h] [ebp-48h] + void *v32; // [esp+34h] [ebp-44h] + void *v33; // [esp+38h] [ebp-40h] + _DWORD *v34; // [esp+3Ch] [ebp-3Ch] + _DWORD *v35; // [esp+44h] [ebp-34h] BYREF + std::locale *v36[2]; // [esp+48h] [ebp-30h] BYREF + char v37[40]; // [esp+50h] [ebp-28h] BYREF + + v32 = this; + v31 = a4; + v30 = a6; + std::locale::locale((volatile signed __int32 **)&v35, (volatile signed __int32 **)(a5 + 108), v28); + v33 = std::use_facet>((int)&v35); + v7 = alloca(80); + v8 = alloca(80); + v34 = v22; + v36[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); + v9 = std::__convert_from_v((int *const *)v36, (char *)v22, 0x40u, "%.*Lf", 0, a7); + v10 = v9; + if ( v9 > 63 ) + { + BufferCount = v9 + 1; + v11 = 16 * ((unsigned int)(v9 + 28) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + v34 = v22; + v36[0] = (std::locale *)std::locale::facet::_S_get_c_locale(); + v10 = std::__convert_from_v((int *const *)v36, (char *)v22, BufferCount, "%.*Lf", 0, a7); + } + v36[0] = (std::locale *)v37; + std::wstring::_M_construct((wchar_t **)v36, v10, 0); + (*(void (__thiscall **)(void *, _DWORD *, int, std::locale *, int, int, int, int, int, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, int, int, int))(*(_DWORD *)v33 + 44))( + v33, + v34, + (int)v34 + v10, + v36[0], + v17, + v18, + v19, + v20, + v21, + v22[0], + v22[1], + v22[2], + v22[3], + v22[4], + v22[5], + v22[6], + v23, + v24, + v25); + v27 = v36; + v26 = (unsigned __int16)v30; + v24 = a3; + v25 = a5; + v23 = a2; + if ( (_BYTE)v31 ) + v14 = std::money_put>::_M_insert(v23, v24, v25, v26, (int)v27); + else + v14 = std::money_put>::_M_insert(v23, v24, v25, v26, (int)v27); + v15 = v14; + if ( (char *)v36[0] != v37 ) + operator delete(v36[0]); + std::locale::~locale(&v35); + return v15; +} +// 45BA33: variable 'v17' is possibly undefined +// 45BA33: variable 'v18' is possibly undefined +// 45BA33: variable 'v19' is possibly undefined +// 45BA33: variable 'v20' is possibly undefined +// 45BA33: variable 'v21' is possibly undefined + +//----- (0045BAD0) -------------------------------------------------------- +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + wchar_t a4, + int a5) +{ + void *v5; // edi + int v6; // ebx + int v7; // esi + wchar_t *v8; // ebx + int v9; // eax + signed int v10; // eax + int v12; // eax + size_t v13; // edi + _WORD *v14; // eax + unsigned int v15; // edi + wchar_t **v16; // ebx + size_t v17; // edi + _WORD *v18; // eax + size_t v19; // edx + size_t v20; // edx + size_t v21; // edi + _WORD *v22; // eax + size_t v23; // edx + size_t v24; // ecx + int *v25; // eax + wchar_t *v26; // eax + unsigned int v27; // edx + size_t v28; // edx + _DWORD *v29; // eax + std::locale::_Impl *v30; // esi + size_t v31; // [esp-4h] [ebp-BCh] + void (__cdecl *v32)(void *); // [esp+4h] [ebp-B4h] + unsigned int v33; // [esp+8h] [ebp-B0h] + __int16 v34; // [esp+30h] [ebp-88h] + size_t v35; // [esp+34h] [ebp-84h] + wchar_t v36; // [esp+38h] [ebp-80h] + bool v37; // [esp+3Ch] [ebp-7Ch] + unsigned int v38; // [esp+3Ch] [ebp-7Ch] + int v39; // [esp+40h] [ebp-78h] + int v40; // [esp+40h] [ebp-78h] + _WORD *v41; // [esp+48h] [ebp-70h] + int *v42; // [esp+4Ch] [ebp-6Ch] + unsigned int v43; // [esp+4Ch] [ebp-6Ch] + size_t v44; // [esp+4Ch] [ebp-6Ch] + unsigned int v45; // [esp+50h] [ebp-68h] + int v46; // [esp+6Ch] [ebp-4Ch] BYREF + wchar_t *v47; // [esp+70h] [ebp-48h] BYREF + size_t v48; // [esp+74h] [ebp-44h] + int v49[4]; // [esp+78h] [ebp-40h] BYREF + void *v50; // [esp+88h] [ebp-30h] BYREF + size_t v51; // [esp+8Ch] [ebp-2Ch] + int v52[10]; // [esp+90h] [ebp-28h] BYREF + + v5 = std::use_facet>(a3 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + v42 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + if ( !v7 ) + { + v29 = operator new((struct type_info *)0x54, v32); + v29[1] = 0; + v30 = (std::locale::_Impl *)v29; + *v29 = &off_4F66E4; + v29[2] = 0; + v29[3] = 0; + *((_BYTE *)v29 + 16) = 0; + *(_DWORD *)((char *)v29 + 18) = 0; + v29[6] = 0; + v29[7] = 0; + v29[8] = 0; + v29[9] = 0; + v29[10] = 0; + v29[11] = 0; + v29[12] = 0; + v29[13] = 0; + v29[14] = 0; + *((_BYTE *)v29 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v6, v33); + v7 = *v42; + } + v8 = *(wchar_t **)a5; + v9 = *(_DWORD *)(a5 + 4); + if ( **(_WORD **)a5 == *(_WORD *)(v7 + 60) ) + { + v46 = *(_DWORD *)(v7 + 56); + v41 = *(_WORD **)(v7 + 40); + v45 = *(_DWORD *)(v7 + 44); + if ( v9 ) + ++v8; + } + else + { + v46 = *(_DWORD *)(v7 + 52); + v41 = *(_WORD **)(v7 + 32); + v45 = *(_DWORD *)(v7 + 36); + } + v10 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; + v43 = v10 >> 1; + if ( v10 >> 1 ) + { + LOWORD(v49[0]) = 0; + v47 = (wchar_t *)v49; + v48 = 0; + std::wstring::reserve((int)&v47, v10); + v12 = *(_DWORD *)(v7 + 48); + v39 = v43 - v12; + v13 = v48; + if ( (int)(v43 - v12) > 0 ) + { + if ( v12 < 0 ) + v39 = v43; + if ( *(_DWORD *)(v7 + 12) ) + { + std::wstring::_M_replace_aux((int)&v47, 0, v48, 2 * v39, 0); + v14 = std::__add_grouping( + v47, + *(_WORD *)(v7 + 20), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v8, + &v8[v39]); + v13 = v14 - v47; + if ( v13 > v48 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v14 - v47, + v48); + v48 = v14 - v47; + *v14 = 0; + v12 = *(_DWORD *)(v7 + 48); + } + else + { + std::wstring::_M_replace((int)&v47, 0, v48, v8, v39); + v12 = *(_DWORD *)(v7 + 48); + v13 = v48; + } + } + if ( v12 > 0 ) + { + v36 = *(_WORD *)(v7 + 18); + v38 = v13 + 1; + v26 = v47; + if ( v47 == (wchar_t *)v49 ) + v27 = 7; + else + v27 = v49[0]; + if ( v38 > v27 ) + { + std::wstring::_M_mutate((const wchar_t **)&v47, v13, 0, 0, 1u); + v26 = v47; + } + v26[v13] = v36; + v48 = v13 + 1; + v26[v13 + 1] = 0; + if ( v39 < 0 ) + { + std::wstring::_M_replace_aux((int)&v47, v38, 0, -v39, *(_WORD *)(v7 + 62)); + if ( v43 > 0x1FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v47, v8, v43); + } + else + { + v28 = *(_DWORD *)(v7 + 48); + if ( v28 > 0x1FFFFFFF - v38 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v47, &v8[v39], v28); + } + v13 = v48; + } + v15 = v45 + v13; + v40 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v15 += *(_DWORD *)(v7 + 28); + v51 = 0; + v50 = v52; + LOWORD(v52[0]) = 0; + std::wstring::reserve((int)&v50, 2 * v15); + v16 = (wchar_t **)&v46; + v44 = *(_DWORD *)(a3 + 8); + v35 = v44 - v15; + v37 = v44 > v15 && v40 == 16; + do + { + switch ( *(_BYTE *)v16 ) + { + case 0: + if ( v37 ) + goto LABEL_36; + break; + case 1: + v21 = v51; + if ( v37 ) + { +LABEL_36: + std::wstring::_M_replace_aux((int)&v50, v51, 0, v35, a4); + } + else + { + v22 = v50; + if ( v50 == v52 ) + v23 = 7; + else + v23 = v52[0]; + if ( v51 + 1 > v23 ) + { + std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); + v22 = v50; + } + v22[v21] = a4; + v51 = v21 + 1; + v22[v21 + 1] = 0; + } + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + { + v20 = *(_DWORD *)(v7 + 28); + if ( v20 > 0x1FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v50, *(wchar_t **)(v7 + 24), v20); + } + break; + case 3: + if ( v45 ) + { + v17 = v51; + v34 = *v41; + v18 = v50; + if ( v50 == v52 ) + v19 = 7; + else + v19 = v52[0]; + if ( v51 + 1 > v19 ) + { + std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); + v18 = v50; + } + v18[v17] = v34; + v51 = v17 + 1; + v18[v17 + 1] = 0; + } + break; + case 4: + std::wstring::_M_append((int)&v50, v47, v48); + break; + default: + break; + } + v16 = (wchar_t **)((char *)v16 + 1); + } + while ( &v47 != v16 ); + v24 = v51; + if ( v45 > 1 ) + { + if ( v45 - 1 > 0x1FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v50, v41 + 1, v45 - 1); + v24 = v51; + if ( v44 <= v51 ) + goto LABEL_41; + } + else if ( v44 <= v51 ) + { +LABEL_41: + v44 = v24; +LABEL_42: + v25 = (int *)v50; + if ( !a2 ) + { + (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v44); + v25 = (int *)v50; + } + if ( v25 != v52 ) + operator delete(v25); + if ( v47 != (wchar_t *)v49 ) + operator delete(v47); + goto LABEL_6; + } + v31 = v44 - v24; + if ( v40 == 32 ) + std::wstring::_M_replace_aux((int)&v50, v24, 0, v31, a4); + else + std::wstring::_M_replace_aux((int)&v50, 0, 0, v31, a4); + goto LABEL_42; + } +LABEL_6: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 45C017: variable 'v32' is possibly undefined +// 45C0A4: variable 'v33' is possibly undefined +// 4E9590: using guessed type int std::moneypunct::id; +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (0045C2E0) -------------------------------------------------------- +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + wchar_t a4, + int a5) +{ + void *v5; // edi + int v6; // ebx + int v7; // esi + wchar_t *v8; // ebx + int v9; // eax + signed int v10; // eax + int v12; // eax + size_t v13; // edi + _WORD *v14; // eax + unsigned int v15; // edi + wchar_t **v16; // ebx + size_t v17; // edi + _WORD *v18; // eax + size_t v19; // edx + size_t v20; // edx + size_t v21; // edi + _WORD *v22; // eax + size_t v23; // edx + size_t v24; // ecx + int *v25; // eax + wchar_t *v26; // eax + unsigned int v27; // edx + size_t v28; // edx + _DWORD *v29; // eax + std::locale::_Impl *v30; // esi + size_t v31; // [esp-4h] [ebp-BCh] + void (__cdecl *v32)(void *); // [esp+4h] [ebp-B4h] + unsigned int v33; // [esp+8h] [ebp-B0h] + __int16 v34; // [esp+30h] [ebp-88h] + size_t v35; // [esp+34h] [ebp-84h] + wchar_t v36; // [esp+38h] [ebp-80h] + bool v37; // [esp+3Ch] [ebp-7Ch] + unsigned int v38; // [esp+3Ch] [ebp-7Ch] + int v39; // [esp+40h] [ebp-78h] + int v40; // [esp+40h] [ebp-78h] + _WORD *v41; // [esp+48h] [ebp-70h] + int *v42; // [esp+4Ch] [ebp-6Ch] + unsigned int v43; // [esp+4Ch] [ebp-6Ch] + size_t v44; // [esp+4Ch] [ebp-6Ch] + unsigned int v45; // [esp+50h] [ebp-68h] + int v46; // [esp+6Ch] [ebp-4Ch] BYREF + wchar_t *v47; // [esp+70h] [ebp-48h] BYREF + size_t v48; // [esp+74h] [ebp-44h] + int v49[4]; // [esp+78h] [ebp-40h] BYREF + void *v50; // [esp+88h] [ebp-30h] BYREF + size_t v51; // [esp+8Ch] [ebp-2Ch] + int v52[10]; // [esp+90h] [ebp-28h] BYREF + + v5 = std::use_facet>(a3 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + v42 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + if ( !v7 ) + { + v29 = operator new((struct type_info *)0x54, v32); + v29[1] = 0; + v30 = (std::locale::_Impl *)v29; + *v29 = &off_4F66F4; + v29[2] = 0; + v29[3] = 0; + *((_BYTE *)v29 + 16) = 0; + *(_DWORD *)((char *)v29 + 18) = 0; + v29[6] = 0; + v29[7] = 0; + v29[8] = 0; + v29[9] = 0; + v29[10] = 0; + v29[11] = 0; + v29[12] = 0; + v29[13] = 0; + v29[14] = 0; + *((_BYTE *)v29 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v29, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v30, (const std::locale::facet *)v6, v33); + v7 = *v42; + } + v8 = *(wchar_t **)a5; + v9 = *(_DWORD *)(a5 + 4); + if ( **(_WORD **)a5 == *(_WORD *)(v7 + 60) ) + { + v46 = *(_DWORD *)(v7 + 56); + v41 = *(_WORD **)(v7 + 40); + v45 = *(_DWORD *)(v7 + 44); + if ( v9 ) + ++v8; + } + else + { + v46 = *(_DWORD *)(v7 + 52); + v41 = *(_WORD **)(v7 + 32); + v45 = *(_DWORD *)(v7 + 36); + } + v10 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; + v43 = v10 >> 1; + if ( v10 >> 1 ) + { + LOWORD(v49[0]) = 0; + v47 = (wchar_t *)v49; + v48 = 0; + std::wstring::reserve((int)&v47, v10); + v12 = *(_DWORD *)(v7 + 48); + v39 = v43 - v12; + v13 = v48; + if ( (int)(v43 - v12) > 0 ) + { + if ( v12 < 0 ) + v39 = v43; + if ( *(_DWORD *)(v7 + 12) ) + { + std::wstring::_M_replace_aux((int)&v47, 0, v48, 2 * v39, 0); + v14 = std::__add_grouping( + v47, + *(_WORD *)(v7 + 20), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v8, + &v8[v39]); + v13 = v14 - v47; + if ( v13 > v48 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v14 - v47, + v48); + v48 = v14 - v47; + *v14 = 0; + v12 = *(_DWORD *)(v7 + 48); + } + else + { + std::wstring::_M_replace((int)&v47, 0, v48, v8, v39); + v12 = *(_DWORD *)(v7 + 48); + v13 = v48; + } + } + if ( v12 > 0 ) + { + v36 = *(_WORD *)(v7 + 18); + v38 = v13 + 1; + v26 = v47; + if ( v47 == (wchar_t *)v49 ) + v27 = 7; + else + v27 = v49[0]; + if ( v38 > v27 ) + { + std::wstring::_M_mutate((const wchar_t **)&v47, v13, 0, 0, 1u); + v26 = v47; + } + v26[v13] = v36; + v48 = v13 + 1; + v26[v13 + 1] = 0; + if ( v39 < 0 ) + { + std::wstring::_M_replace_aux((int)&v47, v38, 0, -v39, *(_WORD *)(v7 + 62)); + if ( v43 > 0x1FFFFFFF - v48 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v47, v8, v43); + } + else + { + v28 = *(_DWORD *)(v7 + 48); + if ( v28 > 0x1FFFFFFF - v38 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v47, &v8[v39], v28); + } + v13 = v48; + } + v15 = v45 + v13; + v40 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v15 += *(_DWORD *)(v7 + 28); + v51 = 0; + v50 = v52; + LOWORD(v52[0]) = 0; + std::wstring::reserve((int)&v50, 2 * v15); + v16 = (wchar_t **)&v46; + v44 = *(_DWORD *)(a3 + 8); + v35 = v44 - v15; + v37 = v44 > v15 && v40 == 16; + do + { + switch ( *(_BYTE *)v16 ) + { + case 0: + if ( v37 ) + goto LABEL_36; + break; + case 1: + v21 = v51; + if ( v37 ) + { +LABEL_36: + std::wstring::_M_replace_aux((int)&v50, v51, 0, v35, a4); + } + else + { + v22 = v50; + if ( v50 == v52 ) + v23 = 7; + else + v23 = v52[0]; + if ( v51 + 1 > v23 ) + { + std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); + v22 = v50; + } + v22[v21] = a4; + v51 = v21 + 1; + v22[v21 + 1] = 0; + } + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + { + v20 = *(_DWORD *)(v7 + 28); + if ( v20 > 0x1FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v50, *(wchar_t **)(v7 + 24), v20); + } + break; + case 3: + if ( v45 ) + { + v17 = v51; + v34 = *v41; + v18 = v50; + if ( v50 == v52 ) + v19 = 7; + else + v19 = v52[0]; + if ( v51 + 1 > v19 ) + { + std::wstring::_M_mutate((const wchar_t **)&v50, v51, 0, 0, 1u); + v18 = v50; + } + v18[v17] = v34; + v51 = v17 + 1; + v18[v17 + 1] = 0; + } + break; + case 4: + std::wstring::_M_append((int)&v50, v47, v48); + break; + default: + break; + } + v16 = (wchar_t **)((char *)v16 + 1); + } + while ( &v47 != v16 ); + v24 = v51; + if ( v45 > 1 ) + { + if ( v45 - 1 > 0x1FFFFFFF - v51 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append((int)&v50, v41 + 1, v45 - 1); + v24 = v51; + if ( v44 <= v51 ) + goto LABEL_41; + } + else if ( v44 <= v51 ) + { +LABEL_41: + v44 = v24; +LABEL_42: + v25 = (int *)v50; + if ( !a2 ) + { + (*(void (__thiscall **)(int, void *, size_t))(*(_DWORD *)a1 + 48))(a1, v50, v44); + v25 = (int *)v50; + } + if ( v25 != v52 ) + operator delete(v25); + if ( v47 != (wchar_t *)v49 ) + operator delete(v47); + goto LABEL_6; + } + v31 = v44 - v24; + if ( v40 == 32 ) + std::wstring::_M_replace_aux((int)&v50, v24, 0, v31, a4); + else + std::wstring::_M_replace_aux((int)&v50, 0, 0, v31, a4); + goto LABEL_42; + } +LABEL_6: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 45C827: variable 'v32' is possibly undefined +// 45C8B4: variable 'v33' is possibly undefined +// 4E9594: using guessed type int std::moneypunct::id; +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (0045CAF0) -------------------------------------------------------- +int __stdcall std::codecvt::do_in( + int a1, + unsigned __int8 *a2, + int a3, + unsigned __int8 **a4, + int a5, + int a6, + _DWORD *a7) +{ + unsigned __int8 *v7; // edx + unsigned int v9; // eax + int result; // eax + unsigned __int8 *v11; // [esp+8h] [ebp-Ch] BYREF + unsigned __int8 *v12; // [esp+Ch] [ebp-8h] + + v7 = (unsigned __int8 *)a3; + v11 = a2; + v12 = (unsigned __int8 *)a3; + if ( a2 == (unsigned __int8 *)a3 ) + { +LABEL_9: + result = 0; + } + else + { + while ( 1 ) + { + if ( a6 == a5 ) + { + v7 = v11; + result = 1; + goto LABEL_8; + } + v9 = std::`anonymous namespace'::read_utf8_code_point(&v11, 0x10FFFFu); + v7 = v11; + if ( v9 == -2 ) + { + result = 1; + goto LABEL_8; + } + if ( v9 > 0x10FFFF ) + break; + a5 += 4; + *(_DWORD *)(a5 - 4) = v9; + if ( v12 == v7 ) + goto LABEL_9; + } + result = 2; + } +LABEL_8: + *a4 = v7; + *a7 = a5; + return result; +} + +//----- (0045CB80) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + int a1, + unsigned int *a2, + unsigned int *a3, + unsigned int **a4, + int a5, + int a6, + int *a7) +{ + int v7; // eax + unsigned int *v8; // ebx + int v10; // ecx + int v11[4]; // [esp+8h] [ebp-10h] BYREF + + v7 = a5; + v8 = a2; + v11[0] = a5; + v11[1] = a6; + if ( a2 == a3 ) + { + v10 = 0; + } + else + { + do + { + if ( *v8 > 0x10FFFF ) + { + v7 = v11[0]; + v10 = 2; + goto LABEL_7; + } + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)v11, *v8) ) + { + v7 = v11[0]; + v10 = 1; + goto LABEL_7; + } + ++v8; + } + while ( a3 != v8 ); + v7 = v11[0]; + v10 = 0; + } +LABEL_7: + *a4 = v8; + *a7 = v7; + return v10; +} + +//----- (0045CC10) -------------------------------------------------------- +unsigned __int8 *__stdcall std::codecvt::do_length( + int a1, + unsigned __int8 *a2, + unsigned __int8 *a3, + int a4) +{ + int v4; // ebx + bool v5; // dl + bool v6; // al + unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF + + v8[0] = a2; + v8[1] = a3; + if ( !a4 ) + return 0; + v4 = a4 - 1; + do + { + v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; + v6 = v4-- != 0; + } + while ( v6 && v5 ); + return (unsigned __int8 *)(v8[0] - a2); +} + +//----- (0045CC70) -------------------------------------------------------- +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) +{ + int result; // eax + int v8[2]; // [esp+4h] [ebp-10h] BYREF + int v9[2]; // [esp+Ch] [ebp-8h] BYREF + + v8[0] = a2; + v8[1] = a3; + v9[0] = a5; + v9[1] = a6; + result = std::`anonymous namespace'::ucs4_in(v8, v9, 0x10FFFFu, 0); + *a4 = v8[0]; + *a7 = v9[0]; + return result; +} + +//----- (0045CCD0) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + int a1, + unsigned int *a2, + unsigned int *a3, + unsigned int **a4, + _BYTE *a5, + _BYTE *a6, + _DWORD *a7) +{ + _BYTE *v7; // eax + unsigned int *v8; // ebx + int v10; // ecx + _BYTE *v11[4]; // [esp+8h] [ebp-10h] BYREF + + v7 = a5; + v8 = a2; + v11[0] = a5; + v11[1] = a6; + if ( a2 == a3 ) + { + v10 = 0; + } + else + { + do + { + if ( *v8 > 0x10FFFF ) + { + v7 = v11[0]; + v10 = 2; + goto LABEL_7; + } + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(v11, *v8) ) + { + v7 = v11[0]; + v10 = 1; + goto LABEL_7; + } + ++v8; + } + while ( a3 != v8 ); + v7 = v11[0]; + v10 = 0; + } +LABEL_7: + *a4 = v8; + *a7 = v7; + return v10; +} + +//----- (0045CD60) -------------------------------------------------------- +unsigned __int8 *__stdcall std::codecvt::do_length( + int a1, + unsigned __int8 *a2, + unsigned __int8 *a3, + int a4) +{ + int v4; // ebx + bool v5; // dl + bool v6; // al + unsigned __int8 *v8[4]; // [esp+8h] [ebp-10h] BYREF + + v8[0] = a2; + v8[1] = a3; + if ( !a4 ) + return 0; + v4 = a4 - 1; + do + { + v5 = (unsigned int)std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu) <= 0x10FFFF; + v6 = v4-- != 0; + } + while ( v6 && v5 ); + return (unsigned __int8 *)(v8[0] - a2); +} + +//----- (0045CDC0) -------------------------------------------------------- +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) +{ + *a4 = a2; + return 3; +} + +//----- (0045CDE0) -------------------------------------------------------- +int __stdcall std::codecvt::do_in( + int a1, + unsigned __int8 *a2, + unsigned __int8 *a3, + unsigned __int8 **a4, + int a5, + int a6, + int *a7) +{ + unsigned __int8 *v7; // ebx + unsigned __int8 *v8; // eax + int v9; // ecx + int v10; // edx + _WORD *v11; // eax + unsigned int v12; // eax + __int16 v13; // dx + char v14; // al + int v15; // ebx + unsigned __int8 *v17; // [esp+0h] [ebp-14h] BYREF + unsigned __int8 *v18; // [esp+4h] [ebp-10h] + _WORD *v19; // [esp+8h] [ebp-Ch] BYREF + _WORD *v20; // [esp+Ch] [ebp-8h] + + v7 = a2; + v8 = a3; + v9 = a5; + v10 = a6; + v17 = a2; + v18 = a3; + v19 = (_WORD *)a5; + v20 = (_WORD *)a6; + if ( a2 == a3 ) + { +LABEL_13: + v15 = 0; + } + else + { + while ( 1 ) + { + if ( v10 == v9 ) + { + v8 = v17; + v15 = 0; + goto LABEL_14; + } + v12 = std::`anonymous namespace'::read_utf8_code_point(&v17, 0x10FFFFu); + v13 = v12; + if ( v12 == -2 ) + { + v8 = v17; + v9 = (int)v19; + v15 = 1; + goto LABEL_14; + } + if ( v12 > 0x10FFFF ) + break; + if ( v12 <= 0xFFFF ) + { + v11 = v19; + v9 = (int)v20; + if ( v19 == v20 ) + goto LABEL_12; + v9 = (int)++v19; + *v11 = v13; + } + else + { + v14 = std::`anonymous namespace'::write_utf16_code_point((int)&v19, v12, 1); + v9 = (int)v19; + if ( !v14 ) + { +LABEL_12: + v8 = v7; + v15 = 1; + goto LABEL_14; + } + } + v7 = v17; + v8 = v18; + if ( v17 == v18 ) + goto LABEL_13; + v10 = (int)v20; + } + v8 = v17; + v9 = (int)v19; + v15 = 2; + } +LABEL_14: + *a4 = v8; + *a7 = v9; + return v15; +} + +//----- (0045CED0) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + int a1, + unsigned __int16 *a2, + unsigned __int16 *a3, + unsigned __int16 **a4, + int a5, + int a6, + int *a7) +{ + unsigned __int16 *v7; // ebx + int v8; // edx + unsigned int v9; // eax + int v10; // eax + int v11; // edi + unsigned int v12; // edx + int result; // eax + int v14[5]; // [esp+8h] [ebp-14h] BYREF + + v7 = a2; + v8 = a5; + v14[1] = a6; + v14[0] = a5; + v9 = a3 - a2; + if ( a2 != a3 ) + { + while ( 1 ) + { + v12 = *v7; + if ( v12 - 55296 <= 0x3FF ) + { + if ( v9 <= 1 ) + goto LABEL_11; + v10 = v7[1]; + if ( (unsigned int)(v10 - 56320) > 0x3FF ) + { +LABEL_13: + v8 = v14[0]; + result = 2; + goto LABEL_12; + } + v11 = 2; + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point( + (int)v14, + v10 + (v12 << 10) - 56613888) ) + goto LABEL_10; + } + else + { + if ( v12 - 56320 <= 0x3FF ) + goto LABEL_13; + v11 = 1; + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point((int)v14, v12) ) + { +LABEL_10: + v8 = v14[0]; + result = 1; + goto LABEL_12; + } + } + v7 += v11; + v9 = a3 - v7; + if ( a3 == v7 ) + { +LABEL_11: + v8 = v14[0]; + result = 0; + goto LABEL_12; + } + } + } + result = 0; +LABEL_12: + *a4 = v7; + *a7 = v8; + return result; +} + +//----- (0045CFC0) -------------------------------------------------------- +unsigned __int8 *__stdcall std::codecvt::do_length( + int a1, + unsigned __int8 *a2, + unsigned __int8 *a3, + unsigned int a4) +{ + int v4; // ebp + int i; // ebx + unsigned int utf8_code; // eax + unsigned __int8 *v8[6]; // [esp+8h] [ebp-18h] BYREF + + v4 = 1; + v8[0] = a2; + v8[1] = a3; + if ( a4 > 1 ) + { + for ( i = 0; ; ++i ) + { + utf8_code = std::`anonymous namespace'::read_utf8_code_point(v8, 0x10FFFFu); + if ( utf8_code > 0x10FFFF ) + break; + if ( utf8_code > 0xFFFF ) + i = v4; + v4 = i + 2; + if ( a4 <= i + 2 ) + goto LABEL_9; + } + return (unsigned __int8 *)(v8[0] - a2); + } +LABEL_9: + if ( a4 != v4 ) + return (unsigned __int8 *)(v8[0] - a2); + std::`anonymous namespace'::read_utf8_code_point(v8, 0xFFFFu); + return (unsigned __int8 *)(v8[0] - a2); +} + +//----- (0045D060) -------------------------------------------------------- +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) +{ + *a4 = a2; + return 3; +} + +//----- (0045D080) -------------------------------------------------------- +int std::codecvt::do_encoding() +{ + return 0; +} + +//----- (0045D090) -------------------------------------------------------- +int std::codecvt::do_max_length() +{ + return 4; +} + +//----- (0045D0A0) -------------------------------------------------------- +int std::codecvt::do_always_noconv() +{ + return 0; +} + +//----- (0045D0B0) -------------------------------------------------------- +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) +{ + int result; // eax + int v8[2]; // [esp+8h] [ebp-10h] BYREF + int v9[2]; // [esp+10h] [ebp-8h] BYREF + + v8[0] = a2; + v8[1] = a3; + v9[0] = a5; + v9[1] = a6; + result = std::`anonymous namespace'::utf16_in(v8, v9, 0x10FFFFu, 1, 0); + *a4 = v8[0]; + *a7 = v9[0]; + return result; +} + +//----- (0045D110) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + int a1, + unsigned __int16 *a2, + unsigned __int16 *a3, + unsigned __int16 **a4, + _BYTE *a5, + _BYTE *a6, + _BYTE **a7) +{ + int result; // eax + unsigned __int16 *v8[2]; // [esp+4h] [ebp-10h] BYREF + _BYTE *v9[2]; // [esp+Ch] [ebp-8h] BYREF + + v8[0] = a2; + v8[1] = a3; + v9[0] = a5; + v9[1] = a6; + result = std::`anonymous namespace'::utf16_out(v8, v9, 0x10FFFFu, 0); + *a4 = v8[0]; + *a7 = v9[0]; + return result; +} + +//----- (0045D170) -------------------------------------------------------- +int __stdcall std::codecvt::do_length(int a1, int a2, unsigned __int8 *a3, unsigned int a4) +{ + std::`anonymous namespace'::utf16_span(a4, a3, 0x10FFFFu, 0); + return 0; +} + +//----- (0045D1A0) -------------------------------------------------------- +int __stdcall std::codecvt::do_unshift(int a1, int a2, int a3, _DWORD *a4) +{ + *a4 = a2; + return 3; +} + +//----- (0045D1C0) -------------------------------------------------------- +int std::codecvt::do_max_length() +{ + return 1; +} + +//----- (0045D1D0) -------------------------------------------------------- +int std::codecvt::do_always_noconv() +{ + return 1; +} + +//----- (0045D1E0) -------------------------------------------------------- +int __stdcall std::codecvt::do_in(int a1, int a2, int a3, _DWORD *a4, int a5, int a6, _DWORD *a7) +{ + *a4 = a2; + *a7 = a5; + return 3; +} + +//----- (0045D200) -------------------------------------------------------- +unsigned int __stdcall std::codecvt::do_length(int a1, int a2, int a3, unsigned int a4) +{ + unsigned int result; // eax + + result = a3 - a2; + if ( a3 - a2 > a4 ) + return a4; + return result; +} + +//----- (0045D220) -------------------------------------------------------- +BOOL std::codecvt::do_encoding() +{ + return ___mb_cur_max == 1; +} + +//----- (0045D230) -------------------------------------------------------- +int std::codecvt::do_max_length() +{ + return ___mb_cur_max; +} + +//----- (0045D240) -------------------------------------------------------- +int std::codecvt::do_always_noconv() +{ + return 0; +} + +//----- (0045D250) -------------------------------------------------------- +int __stdcall std::codecvt::do_in( + unsigned int *a1, + char *a2, + unsigned int a3, + char **a4, + wchar_t *a5, + unsigned int a6, + wchar_t **a7) +{ + char *v7; // esi + wchar_t *v8; // edi + const char *SrcCh; // edi + wchar_t *DstCh; // esi + size_t v11; // eax + int result; // eax + mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF + wchar_t *v14; // [esp+50h] [ebp+14h] + wchar_t *v15; // [esp+50h] [ebp+14h] + wchar_t *v16; // [esp+50h] [ebp+14h] + + v7 = a2; + v8 = a5; + State._Wchar = *a1; + if ( (unsigned int)a5 >= a6 || (unsigned int)a2 >= a3 ) + { +LABEL_12: + result = (unsigned int)v7 < a3; + } + else + { + SrcCh = a2; + DstCh = a5; + while ( 1 ) + { + v11 = mbrtowc(DstCh, SrcCh, a3 - (_DWORD)SrcCh, &State); + if ( v11 == -1 ) + { + v14 = DstCh; + result = 2; + v7 = (char *)SrcCh; + v8 = v14; + goto LABEL_13; + } + if ( v11 == -2 ) + break; + if ( !v11 ) + { + *DstCh = 0; + v11 = 1; + } + SrcCh += v11; + ++DstCh; + *a1 = State._Wchar; + if ( a3 <= (unsigned int)SrcCh || a6 <= (unsigned int)DstCh ) + { + v15 = DstCh; + v7 = (char *)SrcCh; + v8 = v15; + goto LABEL_12; + } + } + v16 = DstCh; + result = 1; + v7 = (char *)SrcCh; + v8 = v16; + } +LABEL_13: + *a4 = v7; + *a7 = v8; + return result; +} + +//----- (0045D340) -------------------------------------------------------- +int __stdcall std::codecvt::do_out( + unsigned int *a1, + wchar_t *a2, + unsigned int a3, + wchar_t **a4, + char *a5, + unsigned int a6, + char **a7) +{ + wchar_t *v7; // edi + char *v8; // ebx + unsigned int Size; // eax + int result; // eax + size_t v11; // eax + char *Dest; // [esp+0h] [ebp-4Ch] + mbstate_t Src; // [esp+24h] [ebp-28h] BYREF + + v7 = a2; + v8 = a5; + Src._Wchar = *a1; + if ( (int)(___mb_cur_max * ((int)(a3 - (_DWORD)a2) >> 1) - (a6 - (_DWORD)a5)) <= 0 ) + { + if ( a3 <= (unsigned int)a2 ) + { +LABEL_18: + result = 0; + goto LABEL_12; + } + while ( 1 ) + { + v11 = wcrtomb(v8, *v7, &Src); + if ( v11 == -1 ) + break; + v8 += v11; + ++v7; + *a1 = Src._Wchar; + if ( a3 <= (unsigned int)v7 ) + goto LABEL_18; + } + } + else + { + if ( a3 <= (unsigned int)a2 || a6 <= (unsigned int)a5 ) + { +LABEL_11: + result = (unsigned int)v7 < a3; + goto LABEL_12; + } + for ( Size = wcrtomb((char *)&Src._State + 1, *a2, &Src); Size != -1; Size = wcrtomb( + (char *)&Src._State + 1, + *v7, + &Src) ) + { + if ( a6 - (unsigned int)v8 < Size ) + { + result = 1; + goto LABEL_12; + } + Dest = v8; + ++v7; + v8 += Size; + memcpy(Dest, (char *)&Src._State + 1, Size); + *a1 = Src._Wchar; + if ( a3 <= (unsigned int)v7 || a6 <= (unsigned int)v8 ) + goto LABEL_11; + } + } + result = 2; +LABEL_12: + *a4 = v7; + *a7 = v8; + return result; +} + +//----- (0045D470) -------------------------------------------------------- +int __stdcall std::codecvt::do_length(unsigned int *a1, char *a2, unsigned int a3, int a4) +{ + int v4; // esi + const char *SrcCh; // ebp + int v6; // edi + size_t v7; // eax + mbstate_t State; // [esp+1Ch] [ebp-20h] BYREF + + v4 = 0; + State._Wchar = *a1; + if ( a4 && (unsigned int)a2 < a3 ) + { + SrcCh = a2; + v6 = a4; + do + { + v7 = mbrtowc(0, SrcCh, a3 - (_DWORD)SrcCh, &State); + if ( v7 > 0xFFFFFFFD ) + break; + if ( !v7 ) + v7 = 1; + SrcCh += v7; + v4 += v7; + --v6; + *a1 = State._Wchar; + if ( a3 <= (unsigned int)SrcCh ) + break; + } + while ( v6 ); + } + return v4; +} + +//----- (0045D500) -------------------------------------------------------- +int __stdcall std::collate::_M_compare(char *String1, char *String2) +{ + int v2; // eax + + v2 = strcoll(String1, String2); + return (v2 >> 30) | (v2 != 0); +} + +//----- (0045D530) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::collate::do_compare(int a1, _BYTE *a2, int a3, int a4) +{ + char *v4; // ebx + char *v5; // esi + char *v6; // ebx + char *v7; // esi + int v8; // edi + char *v9; // eax + char *v10; // ecx + int v12; // eax + int v13; // eax + char *v14; // [esp+Ch] [ebp-40h] + char *v15; // [esp+10h] [ebp-3Ch] + char *v16; // [esp+14h] [ebp-38h] + char *v17; // [esp+18h] [ebp-34h] + char v18; // [esp+2Bh] [ebp-21h] BYREF + _BYTE *retaddr; // [esp+4Ch] [ebp+0h] + + v16 = (char *)std::string::_S_construct(retaddr, a1); + v4 = v16; + v17 = (char *)std::string::_S_construct(a2, a3); + v5 = v17; + v14 = &v4[*((_DWORD *)v4 - 3)]; + v15 = &v17[*((_DWORD *)v17 - 3)]; + while ( 1 ) + { + v8 = std::collate::_M_compare(v4, v5); + if ( v8 ) + goto LABEL_8; + v6 = &v4[strlen(v4)]; + v7 = &v5[strlen(v5)]; + if ( v14 == v6 && v15 == v7 ) + goto LABEL_8; + if ( v14 == v6 ) + break; + if ( v15 == v7 ) + { + v8 = 1; +LABEL_8: + v9 = v17; + v10 = v17 - 12; + if ( v17 == (char *)&unk_4E93FC ) + goto LABEL_9; + goto LABEL_12; + } + v4 = v6 + 1; + v5 = v7 + 1; + } + v9 = v17; + v8 = -1; + v10 = v17 - 12; + if ( v17 == (char *)&unk_4E93FC ) + goto LABEL_9; +LABEL_12: + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)v9 - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)v17 - 1); + *((_DWORD *)v17 - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v10, (int)&v18); +LABEL_9: + if ( v16 != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF); + } + else + { + v13 = *((_DWORD *)v16 - 1); + *((_DWORD *)v16 - 1) = v13 - 1; + } + if ( v13 <= 0 ) + std::string::_Rep::_M_destroy(v16 - 12, (int)&v18); + } + return v8; +} +// 45D6DB: positive sp value 4 has been found +// 15412D0: using guessed type int _CRT_MT; + +//----- (0045D6F0) -------------------------------------------------------- +size_t __stdcall std::collate::_M_transform(char *Destination, char *Source, size_t MaxCount) +{ + return strxfrm(Destination, Source, MaxCount); +} + +//----- (0045D720) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +unsigned int **__thiscall std::collate::do_transform(unsigned int **this, int a2, _BYTE *a3, int a4) +{ + unsigned int v5; // edi + char *v6; // esi + size_t i; // eax + unsigned int *v8; // eax + int v9; // edx + char *v10; // esi + int v12; // eax + unsigned int v13; // [esp+0h] [ebp-58h] + unsigned int v14; // [esp+4h] [ebp-54h] + char *Str; // [esp+1Ch] [ebp-3Ch] + int v16; // [esp+20h] [ebp-38h] + char *v17; // [esp+24h] [ebp-34h] + std::string *v18; // [esp+28h] [ebp-30h] + char *v19; // [esp+2Ch] [ebp-2Ch] + int v20[6]; // [esp+3Fh] [ebp-19h] BYREF + + *this = (unsigned int *)&unk_4E93FC; + Str = (char *)std::string::_S_construct(a3, a4); + v5 = 2 * (a4 - (_DWORD)a3); + v17 = &Str[*((_DWORD *)Str - 3)]; + v19 = (char *)operator new[](v5); + v6 = Str; + for ( i = std::collate::_M_transform(v19, Str, v5); ; i = std::collate::_M_transform(v19, v6, v5) ) + { + if ( v5 <= i ) + { + v5 = i + 1; + operator delete[](v19); + v19 = (char *)operator new[](v5); + i = std::collate::_M_transform(v19, v6, v5); + } + std::string::append(this, (std::string *)v19, i, v14); + v10 = &v6[strlen(v6)]; + if ( v17 == v10 ) + break; + v6 = v10 + 1; + v16 = *(*this - 3); + v18 = (std::string *)(v16 + 1); + if ( v16 + 1 > *(*this - 2) || (int)*(*this - 1) > 0 ) + std::string::reserve(this, v18, v13); + *((_BYTE *)*this + *(*this - 3)) = 0; + v8 = *this; + v9 = (int)(*this - 3); + if ( *this != (unsigned int *)&unk_4E93FC ) + { + *(v8 - 1) = 0; + *(v8 - 3) = (unsigned int)v18; + *(_BYTE *)(v9 + v16 + 13) = 0; + } + } + operator delete[](v19); + if ( Str != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)Str - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)Str - 1); + *((_DWORD *)Str - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(Str - 12, (int)v20); + } + return this; +} +// 45D8F7: positive sp value 4 has been found +// 45D795: variable 'v13' is possibly undefined +// 45D80E: variable 'v14' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; +// 45D720: using guessed type int var_19[6]; + +//----- (0045D920) -------------------------------------------------------- +int __thiscall std::collate::hash(void *this, char *a1, char *a2) +{ + int (__stdcall *v3)(char *, char *); // eax + + v3 = *(int (__stdcall **)(char *, char *))(*(_DWORD *)this + 16); + if ( v3 == std::collate::do_hash ) + return std::collate::do_hash(a1, a2); + else + return v3(a1, a2); +} + +//----- (0045D940) -------------------------------------------------------- +int __fastcall std::collate::compare(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (0045D950) -------------------------------------------------------- +int __stdcall std::collate::do_hash(char *a1, char *a2) +{ + char *v2; // edx + int result; // eax + int v4; // ecx + + v2 = a1; + result = 0; + if ( a1 < a2 ) + { + do + { + v4 = *v2++; + result = v4 + __ROL4__(result, 7); + } + while ( a2 != v2 ); + } + return result; +} + +//----- (0045D980) -------------------------------------------------------- +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) +{ + (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); + return this; +} + +//----- (0045D9B0) -------------------------------------------------------- +int __stdcall std::collate::_M_compare(wchar_t *String1, wchar_t *String2) +{ + int v2; // eax + + v2 = wcscoll(String1, String2); + return (v2 >> 30) | (v2 != 0); +} + +//----- (0045D9E0) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::collate::do_compare(int a1, const wchar_t *a2, int a3, int a4) +{ + wchar_t *v4; // ebx + wchar_t *v5; // esi + wchar_t *v6; // ebx + wchar_t *v7; // esi + int v8; // edi + wchar_t *v9; // eax + wchar_t *v10; // ecx + int v12; // eax + int v13; // eax + wchar_t *v14; // [esp+Ch] [ebp-40h] + wchar_t *v15; // [esp+10h] [ebp-3Ch] + wchar_t *v16; // [esp+14h] [ebp-38h] + wchar_t *v17; // [esp+18h] [ebp-34h] + char v18; // [esp+2Bh] [ebp-21h] BYREF + const wchar_t *retaddr; // [esp+4Ch] [ebp+0h] + + v16 = (wchar_t *)std::wstring::_S_construct(retaddr, a1); + v4 = v16; + v5 = (wchar_t *)std::wstring::_S_construct(a2, a3); + v17 = v5; + v14 = &v4[*((_DWORD *)v4 - 3)]; + v15 = &v5[*((_DWORD *)v5 - 3)]; + while ( 1 ) + { + v8 = std::collate::_M_compare(v4, v5); + if ( v8 ) + goto LABEL_8; + v6 = &v4[wcslen(v4)]; + v7 = &v5[wcslen(v5)]; + if ( v14 == v6 && v15 == v7 ) + goto LABEL_8; + if ( v14 == v6 ) + break; + if ( v15 == v7 ) + { + v8 = 1; +LABEL_8: + v9 = v17; + v10 = v17 - 6; + if ( v17 == (wchar_t *)&unk_4E93EC ) + goto LABEL_9; + goto LABEL_12; + } + v4 = v6 + 1; + v5 = v7 + 1; + } + v9 = v17; + v8 = -1; + v10 = v17 - 6; + if ( v17 == (wchar_t *)&unk_4E93EC ) + goto LABEL_9; +LABEL_12: + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)v9 - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)v17 - 1); + *((_DWORD *)v17 - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::wstring::_Rep::_M_destroy(v10, (int)&v18); +LABEL_9: + if ( v16 != (wchar_t *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd((volatile signed __int32 *)v16 - 1, 0xFFFFFFFF); + } + else + { + v13 = *((_DWORD *)v16 - 1); + *((_DWORD *)v16 - 1) = v13 - 1; + } + if ( v13 <= 0 ) + std::wstring::_Rep::_M_destroy(v16 - 6, (int)&v18); + } + return v8; +} +// 45DB87: positive sp value 4 has been found +// 15412D0: using guessed type int _CRT_MT; + +//----- (0045DB90) -------------------------------------------------------- +size_t __stdcall std::collate::_M_transform(wchar_t *Destination, wchar_t *Source, size_t MaxCount) +{ + return wcsxfrm(Destination, Source, MaxCount); +} + +//----- (0045DBC0) -------------------------------------------------------- +void **__thiscall std::collate::do_transform(void **this, int a2, const wchar_t *a3, int a4) +{ + size_t v4; // edi + wchar_t *v5; // ebx + wchar_t *v6; // esi + _WORD *v7; // eax + size_t v8; // eax + wchar_t *v9; // ebx + int v11; // eax + wchar_t *String; // [esp+10h] [ebp-38h] + wchar_t *v13; // [esp+14h] [ebp-34h] + char *v14; // [esp+18h] [ebp-30h] + int v16[6]; // [esp+2Fh] [ebp-19h] BYREF + + *this = &unk_4E93EC; + v4 = a4 - (_DWORD)a3; + String = (wchar_t *)std::wstring::_S_construct(a3, a4); + v13 = &String[*((_DWORD *)String - 3)]; + if ( (unsigned int)(a4 - (_DWORD)a3) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v5 = String; + v6 = (wchar_t *)operator new[](2 * v4); + while ( 1 ) + { + v8 = std::collate::_M_transform(v6, v5, v4); + if ( v4 <= v8 ) + { + v4 = v8 + 1; + operator delete[](v6); + if ( v4 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v6 = (wchar_t *)operator new[](2 * v4); + v8 = std::collate::_M_transform(v6, v5, v4); + } + std::wstring::append(this, v6, v8); + v9 = &v5[wcslen(v5)]; + if ( v13 == v9 ) + break; + v5 = v9 + 1; + v14 = (char *)(*((_DWORD *)*this - 3) + 1); + if ( (unsigned int)v14 > *((_DWORD *)*this - 2) || *((int *)*this - 1) > 0 ) + std::wstring::reserve(this, v14); + v7 = *this; + v7[*((_DWORD *)*this - 3)] = 0; + if ( v7 != (_WORD *)&unk_4E93EC ) + { + *((_DWORD *)v7 - 1) = 0; + *((_DWORD *)v7 - 3) = v14; + v7[(_DWORD)v14] = 0; + } + } + operator delete[](v6); + if ( String != (wchar_t *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v11 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v11 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v11 - 1; + } + if ( v11 <= 0 ) + std::wstring::_Rep::_M_destroy(String - 6, (int)v16); + } + return this; +} +// 15412D0: using guessed type int _CRT_MT; +// 45DBC0: using guessed type int var_19[6]; + +//----- (0045DDE0) -------------------------------------------------------- +int __thiscall std::collate::hash(void *this, unsigned __int16 *a1, unsigned int a2) +{ + int (__stdcall *v3)(unsigned __int16 *, unsigned int); // eax + + v3 = *(int (__stdcall **)(unsigned __int16 *, unsigned int))(*(_DWORD *)this + 16); + if ( v3 == std::collate::do_hash ) + return std::collate::do_hash(a1, a2); + else + return v3(a1, a2); +} + +//----- (0045DE00) -------------------------------------------------------- +int __fastcall std::collate::compare(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (0045DE10) -------------------------------------------------------- +int __stdcall std::collate::do_hash(unsigned __int16 *a1, unsigned int a2) +{ + unsigned __int16 *v2; // edx + int result; // eax + int v4; // ecx + + v2 = a1; + for ( result = 0; a2 > (unsigned int)v2; result = v4 + __ROL4__(result, 7) ) + v4 = *v2++; + return result; +} + +//----- (0045DE40) -------------------------------------------------------- +void *__thiscall std::collate::transform(void *this, int a2, int a3, int a4) +{ + (*(void (__thiscall **)(void *, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4); + return this; +} + +//----- (0045DE70) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + unsigned int *a7) +{ + unsigned int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // di + char v12; // dl + char v13; // al + unsigned int v14; // eax + unsigned int v15; // edx + unsigned int v16; // eax + char v17; // dl + unsigned int v18; // eax + _DWORD *v19; // ecx + char v20; // bl + unsigned int v21; // edi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + bool v28; // zf + int v29; // eax + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + bool v33; // di + char v34; // di + size_t v35; // edi + int *v36; // eax + bool v38; // al + char *v39; // eax + char *v40; // eax + unsigned int v41; // edx + _DWORD *v42; // eax + _BYTE *v43; // eax + int v44; // eax + unsigned int v45; // eax + unsigned int v46; // edx + unsigned int v47; // eax + bool v48; // di + char v49; // di + char *v50; // eax + unsigned int v51; // edx + char v52; // cl + int v53; // eax + char *v54; // eax + char *v55; // eax + std::locale::_Impl *v56; // eax + std::locale::_Impl *v57; // esi + int v58; // eax + _DWORD *v59; // eax + _DWORD *v60; // eax + int v61; // eax + _DWORD *v62; // eax + int v63; // eax + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + char v71; // cl + int v72; // eax + void (__cdecl *v73)(void *); // [esp+4h] [ebp-84h] + unsigned int v74; // [esp+8h] [ebp-80h] + size_t MaxCount; // [esp+1Ch] [ebp-6Ch] + bool v76; // [esp+22h] [ebp-66h] + char v77; // [esp+23h] [ebp-65h] + int Buf; // [esp+24h] [ebp-64h] + void *Bufa; // [esp+24h] [ebp-64h] + unsigned int v80; // [esp+28h] [ebp-60h] + char v81; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + bool v83; // [esp+30h] [ebp-58h] + int v84; // [esp+34h] [ebp-54h] + unsigned int v85; // [esp+34h] [ebp-54h] + int v86; // [esp+38h] [ebp-50h] + unsigned __int8 v87; // [esp+3Ch] [ebp-4Ch] + unsigned __int8 v88; // [esp+3Ch] [ebp-4Ch] + char v89; // [esp+3Ch] [ebp-4Ch] + size_t v90; // [esp+3Ch] [ebp-4Ch] + _DWORD *v91; // [esp+40h] [ebp-48h] + int *v92; // [esp+44h] [ebp-44h] + bool v93; // [esp+44h] [ebp-44h] + char v94; // [esp+44h] [ebp-44h] + unsigned __int8 v95; // [esp+44h] [ebp-44h] + bool v96; // [esp+44h] [ebp-44h] + std::locale::facet *v97; // [esp+48h] [ebp-40h] + unsigned int v98; // [esp+48h] [ebp-40h] + bool v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v91 = a3; + v97 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + v92 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + if ( !v8 ) + { + v56 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v73); + *((_DWORD *)v56 + 1) = 0; + v57 = v56; + *(_DWORD *)v56 = &off_4F65A0; + *((_DWORD *)v56 + 2) = 0; + *((_DWORD *)v56 + 3) = 0; + *((_BYTE *)v56 + 16) = 0; + *((_DWORD *)v56 + 5) = 0; + *((_DWORD *)v56 + 6) = 0; + *((_DWORD *)v56 + 7) = 0; + *((_DWORD *)v56 + 8) = 0; + *((_WORD *)v56 + 18) = 0; + *((_BYTE *)v56 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v56, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v57, v97, v74); + v8 = *v92; + } + v98 = 8; + v9 = *(_DWORD *)(a5 + 12) & 0x4A; + v84 = v9; + if ( v9 != 64 ) + v98 = v9 == 8 ? 16 : 10; + v93 = a2 == -1 && a1 != 0; + if ( v93 ) + { + if ( a1[2] >= a1[3] ) + { + v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v94 = v69 == -1 && v93; + v7 = v69 == -1 ? 0 : (unsigned int)a1; + } + else + { + v94 = 0; + } + } + else + { + v94 = a2 == -1; + } + v99 = a4 == -1; + if ( v99 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v68 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v68 == -1 && v99 && a3 != 0; + v91 = v68 == -1 ? 0 : a3; + } + else + { + v10 = 0; + } + } + else + { + v10 = a4 == -1; + } + if ( v94 == v10 ) + { + v76 = 0; + v11 = 0; + v82 = 1; + v86 = 0; + v96 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v54 = *(char **)(v7 + 8); + if ( (unsigned int)v54 >= *(_DWORD *)(v7 + 12) ) + { + v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v70 != -1 ? v70 : -1; + v7 &= (v70 == -1) - 1; + } + else + { + v11 = *v54; + } + } + else + { + v11 = a2; + } + v12 = *(_BYTE *)(v8 + 74); + v13 = *(_BYTE *)(v8 + 16); + v76 = v12 == v11; + if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) + { + if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) + { + v14 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + if ( v14 >= v15 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v16 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + } + else + { + v16 = v14 + 1; + *(_DWORD *)(v7 + 8) = v16; + } + v95 = 0; + if ( v16 >= v15 ) + { + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v95 - 1; + } + if ( v99 && v91 != 0 ) + { + if ( v91[2] >= v91[3] ) + { + v72 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v17 = v72 == -1 && v99 && v91 != 0; + v91 = v72 == -1 ? 0 : v91; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v95 == v17 ) + { + v18 = v98; + v82 = 1; + v86 = 0; + v96 = 0; + if ( v98 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v11 = -1; + if ( v7 ) + { + v55 = *(char **)(v7 + 8); + if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v64 != -1 ? v64 : -1; + v7 &= (v64 == -1) - 1; + } + else + { + v11 = *v55; + } + } + v13 = *(_BYTE *)(v8 + 16); + } + } + else + { + v76 = 0; + } + v86 = 0; + v19 = (_DWORD *)v7; + v20 = v11; + v96 = 0; + v21 = (unsigned int)v19; + while ( 1 ) + { + if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) + { +LABEL_111: + v42 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v42; + goto LABEL_43; + } + if ( *(_BYTE *)(v8 + 78) != v20 ) + { + if ( !v96 ) + goto LABEL_111; +LABEL_33: + if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) + { + v59 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v96 = 1; + v7 = (unsigned int)v59; + goto LABEL_43; + } + if ( v84 != 0 && v98 != 16 ) + { + v82 = 0; + v60 = (_DWORD *)v21; + v11 = v20; + v7 = (unsigned int)v60; + v96 = 1; + MaxCount = v98; + Buf = v98; + goto LABEL_45; + } + v86 = 0; + v96 = 0; + v98 = 16; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v38 = !v96 || v98 == 10; + if ( !v38 ) + goto LABEL_33; + v96 = v84 == 0 || v98 == 8; + if ( !v96 ) + { + ++v86; + v96 = v38; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v86 = 0; + v98 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v87 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v87 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v99 && v91 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v87 - 1; + v25 = v99 && v91 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v91[2] >= v91[3] ) + { + v83 = v25; + v53 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v26 = v53 == -1 && v83; + v91 = v53 == -1 ? 0 : v91; +LABEL_41: + if ( v26 == v87 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v87 ) + { +LABEL_42: + v27 = (_DWORD *)v21; + v11 = v20; + v82 = 1; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v39 = *(char **)(v21 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) + { + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v61 != -1 ? v61 : -1; + v21 &= (v61 == -1) - 1; + } + else + { + v20 = *v39; + } + } + if ( !v96 ) + break; + v13 = *(_BYTE *)(v8 + 16); + } + v62 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v62; +LABEL_43: + v18 = v98; + if ( v98 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v28 = *(_BYTE *)(v8 + 16) == 0; + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( !v28 ) + std::string::reserve(&v101, 0x20u); + v80 = 0xFFFFFFFF / v98; + v77 = *(_BYTE *)(v8 + 100); + if ( !v77 ) + { + if ( v82 ) + { + v71 = v82; + v35 = v102; + v81 = 0; + v82 = 0; + v36 = (int *)v101; + v77 = v71; + v85 = 0; + goto LABEL_61; + } + v81 = 0; + v85 = 0; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v11 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v11 - 97) > 5u ) + { + if ( (unsigned __int8)(v11 - 65) > 5u ) + goto LABEL_110; + v29 = v11 - 55; + goto LABEL_54; + } + v29 = v11 - 87; + if ( v80 >= v85 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v81 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v88 = 0; + if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) + goto LABEL_87; +LABEL_57: + v33 = v99 && v91 != 0; + if ( !v33 ) + goto LABEL_58; +LABEL_88: + if ( v91[2] >= v91[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v58 == -1 ? 0 : v91; + v34 = v58 == -1 && v33; + goto LABEL_59; + } + if ( !v88 ) + { +LABEL_60: + v35 = v102; + v36 = (int *)v101; + v77 = 1; + goto LABEL_61; + } + } + else + { + if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) + goto LABEL_110; +LABEL_53: + v29 = v11 - 48; +LABEL_54: + if ( v80 < v85 ) + goto LABEL_55; +LABEL_85: + v31 = *(_DWORD *)(v7 + 12); + v81 |= ~v29 < v98 * v85; + v85 = v98 * v85 + v29; + v30 = *(_DWORD *)(v7 + 8); + ++v86; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v88 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v31 > v32 ) + goto LABEL_57; +LABEL_87: + v88 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v88 - 1; + v33 = v99 && v91 != 0; + if ( v33 ) + goto LABEL_88; +LABEL_58: + v34 = a4 == -1; +LABEL_59: + if ( v34 == v88 ) + goto LABEL_60; + } + if ( v7 ) + { + v40 = *(char **)(v7 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v11 = *v40; + } + } + else + { + v11 = -1; + } + continue; + } + } + if ( v82 ) + { + v35 = v102; + v85 = 0; + v81 = 0; + v36 = (int *)v101; + v77 = v82; + v82 = 0; + goto LABEL_61; + } + v81 = 0; + Bufa = (void *)(v8 + 78); + v85 = 0; + while ( 2 ) + { + if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) + { + if ( v11 == *(_BYTE *)(v8 + 36) || (v43 = memchr(Bufa, v11, MaxCount)) == 0 ) + { +LABEL_110: + v35 = v102; + v36 = (int *)v101; + v77 = 0; + goto LABEL_61; + } + v44 = v43 - (_BYTE *)Bufa; + if ( v44 > 15 ) + v44 -= 6; + if ( v80 >= v85 ) + { + v81 |= ~v44 < v98 * v85; + ++v86; + v85 = v98 * v85 + v44; + goto LABEL_122; + } + v46 = *(_DWORD *)(v7 + 12); + v81 = v77; + v45 = *(_DWORD *)(v7 + 8); + if ( v45 >= v46 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v47 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v47 = v45 + 1; + *(_DWORD *)(v7 + 8) = v47; +LABEL_124: + v89 = 0; + if ( v46 <= v47 ) + { + v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v89 = v67 != -1 ? 0 : v77; + v7 &= (v67 == -1) - 1; + } + v48 = v99 && v91 != 0; + if ( v48 ) + { + if ( v91[2] >= v91[3] ) + { + v66 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v66 == -1 ? 0 : v91; + v49 = v66 == -1 && v48; + } + else + { + v49 = 0; + } + } + else + { + v49 = a4 == -1; + } + if ( v89 == v49 ) + { + v35 = v102; + v36 = (int *)v101; + goto LABEL_61; + } + if ( v7 ) + { + v50 = *(char **)(v7 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v7 + 12) ) + { + v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v63 != -1 ? v63 : -1; + v7 &= (v63 == -1) - 1; + } + else + { + v11 = *v50; + } + } + else + { + v11 = -1; + } + continue; + } + break; + } + v35 = v102; + v36 = (int *)v101; + if ( v86 ) + { + v90 = v102 + 1; + if ( v101 == v103 ) + v51 = 15; + else + v51 = v103[0]; + if ( v90 > v51 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v36 = (int *)v101; + } + v52 = v86; + v86 = 0; + *((_BYTE *)v36 + v35) = v52; + v102 = v90; + *((_BYTE *)v101 + v90) = 0; +LABEL_122: + v45 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + if ( v45 >= v46 ) + goto LABEL_131; + goto LABEL_123; + } + v77 = 0; + v82 = *(_BYTE *)(v8 + 16); +LABEL_61: + if ( v35 ) + { + v100 = v35 + 1; + if ( v36 == v103 ) + v41 = 15; + else + v41 = v103[0]; + if ( v100 > v41 ) + { + std::string::_M_mutate((int)&v101, v35, 0, 0, 1u); + v36 = (int *)v101; + } + *((_BYTE *)v36 + v35) = v86; + v102 = v35 + 1; + *((_BYTE *)v101 + v100) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v36 = (int *)v101; + if ( v96 || v102 | v86 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + *a6 = 4; + } + else + { + if ( !v86 && !v96 ) + goto LABEL_64; +LABEL_103: + if ( v82 ) + goto LABEL_64; + if ( v81 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v76 ) + v85 = -v85; + *a7 = v85; + } + } + if ( v77 ) + *a6 |= 2u; + if ( v36 != v103 ) + operator delete(v36); + return v7; +} +// 45E7A7: variable 'v73' is possibly undefined +// 45E810: variable 'v74' is possibly undefined +// 4E95A8: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (0045EB90) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int *a7) +{ + unsigned int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // di + char v12; // dl + char v13; // al + unsigned int v14; // eax + unsigned int v15; // edx + unsigned int v16; // eax + char v17; // dl + unsigned int v18; // eax + _DWORD *v19; // ecx + char v20; // bl + unsigned int v21; // edi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + bool v28; // zf + int v29; // eax + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + bool v33; // di + char v34; // di + size_t v35; // edi + int *v36; // eax + bool v38; // al + char *v39; // eax + char *v40; // eax + unsigned int v41; // edx + int v42; // edx + _DWORD *v43; // eax + _BYTE *v44; // eax + int v45; // eax + unsigned int v46; // eax + unsigned int v47; // edx + unsigned int v48; // eax + bool v49; // di + char v50; // di + char *v51; // eax + unsigned int v52; // edx + char v53; // cl + int v54; // eax + char *v55; // eax + char *v56; // eax + std::locale::_Impl *v57; // eax + std::locale::_Impl *v58; // esi + int v59; // eax + _DWORD *v60; // eax + _DWORD *v61; // eax + int v62; // eax + _DWORD *v63; // eax + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + int v71; // eax + char v72; // cl + int v73; // eax + void (__cdecl *v74)(void *); // [esp+4h] [ebp-84h] + unsigned int v75; // [esp+8h] [ebp-80h] + bool v76; // [esp+14h] [ebp-74h] + size_t MaxCount; // [esp+18h] [ebp-70h] + unsigned int v78; // [esp+1Ch] [ebp-6Ch] + char v79; // [esp+23h] [ebp-65h] + int Buf; // [esp+24h] [ebp-64h] + void *Bufa; // [esp+24h] [ebp-64h] + unsigned int v82; // [esp+28h] [ebp-60h] + char v83; // [esp+2Ch] [ebp-5Ch] + char v84; // [esp+30h] [ebp-58h] + bool v85; // [esp+30h] [ebp-58h] + int v86; // [esp+34h] [ebp-54h] + unsigned int v87; // [esp+34h] [ebp-54h] + int v88; // [esp+38h] [ebp-50h] + unsigned __int8 v89; // [esp+3Ch] [ebp-4Ch] + unsigned __int8 v90; // [esp+3Ch] [ebp-4Ch] + char v91; // [esp+3Ch] [ebp-4Ch] + size_t v92; // [esp+3Ch] [ebp-4Ch] + _DWORD *v93; // [esp+40h] [ebp-48h] + int *v94; // [esp+44h] [ebp-44h] + bool v95; // [esp+44h] [ebp-44h] + char v96; // [esp+44h] [ebp-44h] + unsigned __int8 v97; // [esp+44h] [ebp-44h] + bool v98; // [esp+44h] [ebp-44h] + std::locale::facet *v99; // [esp+48h] [ebp-40h] + unsigned int v100; // [esp+48h] [ebp-40h] + bool v101; // [esp+4Ch] [ebp-3Ch] + unsigned int v102; // [esp+4Ch] [ebp-3Ch] + void *v103; // [esp+58h] [ebp-30h] BYREF + size_t v104; // [esp+5Ch] [ebp-2Ch] + int v105[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v93 = a3; + v99 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + if ( !v8 ) + { + v57 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v74); + *((_DWORD *)v57 + 1) = 0; + v58 = v57; + *(_DWORD *)v57 = &off_4F65A0; + *((_DWORD *)v57 + 2) = 0; + *((_DWORD *)v57 + 3) = 0; + *((_BYTE *)v57 + 16) = 0; + *((_DWORD *)v57 + 5) = 0; + *((_DWORD *)v57 + 6) = 0; + *((_DWORD *)v57 + 7) = 0; + *((_DWORD *)v57 + 8) = 0; + *((_WORD *)v57 + 18) = 0; + *((_BYTE *)v57 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v57, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v58, v99, v75); + v8 = *v94; + } + v100 = 8; + v9 = *(_DWORD *)(a5 + 12) & 0x4A; + v86 = v9; + if ( v9 != 64 ) + v100 = v9 == 8 ? 16 : 10; + v95 = a2 == -1 && a1 != 0; + if ( v95 ) + { + if ( a1[2] >= a1[3] ) + { + v70 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v96 = v70 == -1 && v95; + v7 = v70 == -1 ? 0 : (unsigned int)a1; + } + else + { + v96 = 0; + } + } + else + { + v96 = a2 == -1; + } + v101 = a4 == -1; + if ( v101 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v69 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v69 == -1 && v101 && a3 != 0; + v93 = v69 == -1 ? 0 : a3; + } + else + { + v10 = 0; + } + } + else + { + v10 = a4 == -1; + } + if ( v96 == v10 ) + { + v76 = 0; + v11 = 0; + v84 = 1; + v88 = 0; + v98 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v55 = *(char **)(v7 + 8); + if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) + { + v71 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v71 != -1 ? v71 : -1; + v7 &= (v71 == -1) - 1; + } + else + { + v11 = *v55; + } + } + else + { + v11 = a2; + } + v12 = *(_BYTE *)(v8 + 74); + v13 = *(_BYTE *)(v8 + 16); + v76 = v12 == v11; + if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) + { + if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) + { + v14 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + if ( v14 >= v15 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v16 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + } + else + { + v16 = v14 + 1; + *(_DWORD *)(v7 + 8) = v16; + } + v97 = 0; + if ( v16 >= v15 ) + { + v97 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v97 - 1; + } + if ( v101 && v93 != 0 ) + { + if ( v93[2] >= v93[3] ) + { + v73 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); + v17 = v73 == -1 && v101 && v93 != 0; + v93 = v73 == -1 ? 0 : v93; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v17 == v97 ) + { + v18 = v100; + v84 = 1; + v88 = 0; + v98 = 0; + if ( v100 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v11 = -1; + if ( v7 ) + { + v56 = *(char **)(v7 + 8); + if ( (unsigned int)v56 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v11 = *v56; + } + } + v13 = *(_BYTE *)(v8 + 16); + } + } + else + { + v76 = 0; + } + v88 = 0; + v19 = (_DWORD *)v7; + v20 = v11; + v98 = 0; + v21 = (unsigned int)v19; + while ( 1 ) + { + if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) + { +LABEL_111: + v43 = (_DWORD *)v21; + v84 = 0; + v11 = v20; + v7 = (unsigned int)v43; + goto LABEL_43; + } + if ( *(_BYTE *)(v8 + 78) != v20 ) + { + if ( !v98 ) + goto LABEL_111; +LABEL_33: + if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) + { + v60 = (_DWORD *)v21; + v84 = 0; + v11 = v20; + v98 = 1; + v7 = (unsigned int)v60; + goto LABEL_43; + } + if ( v86 != 0 && v100 != 16 ) + { + v84 = 0; + v61 = (_DWORD *)v21; + v11 = v20; + v7 = (unsigned int)v61; + v98 = 1; + MaxCount = v100; + Buf = v100; + goto LABEL_45; + } + v88 = 0; + v98 = 0; + v100 = 16; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v38 = !v98 || v100 == 10; + if ( !v38 ) + goto LABEL_33; + v98 = v86 == 0 || v100 == 8; + if ( !v98 ) + { + ++v88; + v98 = v38; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v88 = 0; + v100 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v89 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v89 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v101 && v93 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v89 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v89 - 1; + v25 = v101 && v93 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v93[2] >= v93[3] ) + { + v85 = v25; + v54 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); + v26 = v54 == -1 && v85; + v93 = v54 == -1 ? 0 : v93; +LABEL_41: + if ( v26 == v89 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v89 ) + { +LABEL_42: + v27 = (_DWORD *)v21; + v11 = v20; + v84 = 1; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v39 = *(char **)(v21 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) + { + v62 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v62 != -1 ? v62 : -1; + v21 &= (v62 == -1) - 1; + } + else + { + v20 = *v39; + } + } + if ( !v98 ) + break; + v13 = *(_BYTE *)(v8 + 16); + } + v63 = (_DWORD *)v21; + v84 = 0; + v11 = v20; + v7 = (unsigned int)v63; +LABEL_43: + v18 = v100; + if ( v100 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v28 = *(_BYTE *)(v8 + 16) == 0; + v104 = 0; + v103 = v105; + LOBYTE(v105[0]) = 0; + if ( !v28 ) + std::string::reserve(&v103, 0x20u); + v78 = v76 + 0x7FFFFFFF; + v82 = v78 / v100; + v79 = *(_BYTE *)(v8 + 100); + if ( !v79 ) + { + if ( v84 ) + { + v72 = v84; + v35 = v104; + v83 = 0; + v84 = 0; + v36 = (int *)v103; + v79 = v72; + v87 = 0; + goto LABEL_61; + } + v83 = 0; + v87 = 0; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v11 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v11 - 97) > 5u ) + { + if ( (unsigned __int8)(v11 - 65) > 5u ) + goto LABEL_110; + v29 = v11 - 55; + goto LABEL_54; + } + v29 = v11 - 87; + if ( v82 >= v87 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v83 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v90 = 0; + if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) + goto LABEL_87; +LABEL_57: + v33 = v101 && v93 != 0; + if ( !v33 ) + goto LABEL_58; +LABEL_88: + if ( v93[2] >= v93[3] ) + { + v59 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); + v93 = v59 == -1 ? 0 : v93; + v34 = v59 == -1 && v33; + goto LABEL_59; + } + if ( !v90 ) + { +LABEL_60: + v35 = v104; + v36 = (int *)v103; + v79 = 1; + goto LABEL_61; + } + } + else + { + if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) + goto LABEL_110; +LABEL_53: + v29 = v11 - 48; +LABEL_54: + if ( v82 < v87 ) + goto LABEL_55; +LABEL_85: + v31 = *(_DWORD *)(v7 + 12); + v83 |= v78 - v29 < v100 * v87; + v87 = v100 * v87 + v29; + v30 = *(_DWORD *)(v7 + 8); + ++v88; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v90 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v32 < v31 ) + goto LABEL_57; +LABEL_87: + v90 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v90 - 1; + v33 = v101 && v93 != 0; + if ( v33 ) + goto LABEL_88; +LABEL_58: + v34 = a4 == -1; +LABEL_59: + if ( v34 == v90 ) + goto LABEL_60; + } + if ( v7 ) + { + v40 = *(char **)(v7 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) + { + v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v66 != -1 ? v66 : -1; + v7 &= (v66 == -1) - 1; + } + else + { + v11 = *v40; + } + } + else + { + v11 = -1; + } + continue; + } + } + if ( v84 ) + { + v35 = v104; + v87 = 0; + v83 = 0; + v36 = (int *)v103; + v79 = v84; + v84 = 0; + goto LABEL_61; + } + v83 = 0; + Bufa = (void *)(v8 + 78); + v87 = 0; + while ( 2 ) + { + if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) + { + if ( v11 == *(_BYTE *)(v8 + 36) || (v44 = memchr(Bufa, v11, MaxCount)) == 0 ) + { +LABEL_110: + v35 = v104; + v36 = (int *)v103; + v79 = 0; + goto LABEL_61; + } + v45 = v44 - (_BYTE *)Bufa; + if ( v45 > 15 ) + v45 -= 6; + if ( v82 >= v87 ) + { + v83 |= v78 - v45 < v100 * v87; + ++v88; + v87 = v100 * v87 + v45; + goto LABEL_122; + } + v47 = *(_DWORD *)(v7 + 12); + v83 = v79; + v46 = *(_DWORD *)(v7 + 8); + if ( v46 >= v47 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v48 = *(_DWORD *)(v7 + 8); + v47 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v48 = v46 + 1; + *(_DWORD *)(v7 + 8) = v48; +LABEL_124: + v91 = 0; + if ( v47 <= v48 ) + { + v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v91 = v68 != -1 ? 0 : v79; + v7 &= (v68 == -1) - 1; + } + v49 = v101 && v93 != 0; + if ( v49 ) + { + if ( v93[2] >= v93[3] ) + { + v67 = (*(int (__fastcall **)(_DWORD *))(*v93 + 36))(v93); + v93 = v67 == -1 ? 0 : v93; + v50 = v67 == -1 && v49; + } + else + { + v50 = 0; + } + } + else + { + v50 = a4 == -1; + } + if ( v91 == v50 ) + { + v35 = v104; + v36 = (int *)v103; + goto LABEL_61; + } + if ( v7 ) + { + v51 = *(char **)(v7 + 8); + if ( (unsigned int)v51 >= *(_DWORD *)(v7 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v64 != -1 ? v64 : -1; + v7 &= (v64 == -1) - 1; + } + else + { + v11 = *v51; + } + } + else + { + v11 = -1; + } + continue; + } + break; + } + v35 = v104; + v36 = (int *)v103; + if ( v88 ) + { + v92 = v104 + 1; + if ( v103 == v105 ) + v52 = 15; + else + v52 = v105[0]; + if ( v92 > v52 ) + { + std::string::_M_mutate((int)&v103, v104, 0, 0, 1u); + v36 = (int *)v103; + } + v53 = v88; + v88 = 0; + *((_BYTE *)v36 + v35) = v53; + v104 = v92; + *((_BYTE *)v103 + v92) = 0; +LABEL_122: + v46 = *(_DWORD *)(v7 + 8); + v47 = *(_DWORD *)(v7 + 12); + if ( v46 >= v47 ) + goto LABEL_131; + goto LABEL_123; + } + v79 = 0; + v84 = *(_BYTE *)(v8 + 16); +LABEL_61: + if ( v35 ) + { + v102 = v35 + 1; + if ( v36 == v105 ) + v41 = 15; + else + v41 = v105[0]; + if ( v102 > v41 ) + { + std::string::_M_mutate((int)&v103, v35, 0, 0, 1u); + v36 = (int *)v103; + } + *((_BYTE *)v36 + v35) = v88; + v104 = v35 + 1; + *((_BYTE *)v103 + v102) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v103) ) + *a6 = 4; + v36 = (int *)v103; + if ( v98 || v104 | v88 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + *a6 = 4; + } + else + { + if ( !v88 && !v98 ) + goto LABEL_64; +LABEL_103: + if ( v84 ) + goto LABEL_64; + if ( v83 ) + { + *a7 = v76 + 0x7FFFFFFF; + *a6 = 4; + } + else + { + v42 = v87; + if ( v76 ) + v42 = -v87; + *a7 = v42; + } + } + if ( v79 ) + *a6 |= 2u; + if ( v36 != v105 ) + operator delete(v36); + return v7; +} +// 45F4E7: variable 'v74' is possibly undefined +// 45F550: variable 'v75' is possibly undefined +// 4E95A8: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (0045F8D0) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + unsigned int *a7) +{ + unsigned int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // di + char v12; // dl + char v13; // al + unsigned int v14; // eax + unsigned int v15; // edx + unsigned int v16; // eax + char v17; // dl + unsigned int v18; // eax + _DWORD *v19; // ecx + char v20; // bl + unsigned int v21; // edi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + bool v28; // zf + int v29; // eax + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + bool v33; // di + char v34; // di + size_t v35; // edi + int *v36; // eax + bool v38; // al + char *v39; // eax + char *v40; // eax + unsigned int v41; // edx + _DWORD *v42; // eax + _BYTE *v43; // eax + int v44; // eax + unsigned int v45; // eax + unsigned int v46; // edx + unsigned int v47; // eax + bool v48; // di + char v49; // di + char *v50; // eax + unsigned int v51; // edx + char v52; // cl + int v53; // eax + char *v54; // eax + char *v55; // eax + std::locale::_Impl *v56; // eax + std::locale::_Impl *v57; // esi + int v58; // eax + _DWORD *v59; // eax + _DWORD *v60; // eax + int v61; // eax + _DWORD *v62; // eax + int v63; // eax + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + char v71; // cl + int v72; // eax + void (__cdecl *v73)(void *); // [esp+4h] [ebp-84h] + unsigned int v74; // [esp+8h] [ebp-80h] + size_t MaxCount; // [esp+1Ch] [ebp-6Ch] + bool v76; // [esp+22h] [ebp-66h] + char v77; // [esp+23h] [ebp-65h] + int Buf; // [esp+24h] [ebp-64h] + void *Bufa; // [esp+24h] [ebp-64h] + unsigned int v80; // [esp+28h] [ebp-60h] + char v81; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + bool v83; // [esp+30h] [ebp-58h] + int v84; // [esp+34h] [ebp-54h] + unsigned int v85; // [esp+34h] [ebp-54h] + int v86; // [esp+38h] [ebp-50h] + unsigned __int8 v87; // [esp+3Ch] [ebp-4Ch] + unsigned __int8 v88; // [esp+3Ch] [ebp-4Ch] + char v89; // [esp+3Ch] [ebp-4Ch] + size_t v90; // [esp+3Ch] [ebp-4Ch] + _DWORD *v91; // [esp+40h] [ebp-48h] + int *v92; // [esp+44h] [ebp-44h] + bool v93; // [esp+44h] [ebp-44h] + char v94; // [esp+44h] [ebp-44h] + unsigned __int8 v95; // [esp+44h] [ebp-44h] + bool v96; // [esp+44h] [ebp-44h] + std::locale::facet *v97; // [esp+48h] [ebp-40h] + unsigned int v98; // [esp+48h] [ebp-40h] + bool v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v91 = a3; + v97 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + v92 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + if ( !v8 ) + { + v56 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v73); + *((_DWORD *)v56 + 1) = 0; + v57 = v56; + *(_DWORD *)v56 = &off_4F65A0; + *((_DWORD *)v56 + 2) = 0; + *((_DWORD *)v56 + 3) = 0; + *((_BYTE *)v56 + 16) = 0; + *((_DWORD *)v56 + 5) = 0; + *((_DWORD *)v56 + 6) = 0; + *((_DWORD *)v56 + 7) = 0; + *((_DWORD *)v56 + 8) = 0; + *((_WORD *)v56 + 18) = 0; + *((_BYTE *)v56 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v56, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v57, v97, v74); + v8 = *v92; + } + v98 = 8; + v9 = *(_DWORD *)(a5 + 12) & 0x4A; + v84 = v9; + if ( v9 != 64 ) + v98 = v9 == 8 ? 16 : 10; + v93 = a2 == -1 && a1 != 0; + if ( v93 ) + { + if ( a1[2] >= a1[3] ) + { + v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v94 = v69 == -1 && v93; + v7 = v69 == -1 ? 0 : (unsigned int)a1; + } + else + { + v94 = 0; + } + } + else + { + v94 = a2 == -1; + } + v99 = a4 == -1; + if ( v99 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v68 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v68 == -1 && v99 && a3 != 0; + v91 = v68 == -1 ? 0 : a3; + } + else + { + v10 = 0; + } + } + else + { + v10 = a4 == -1; + } + if ( v94 == v10 ) + { + v76 = 0; + v11 = 0; + v82 = 1; + v86 = 0; + v96 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v54 = *(char **)(v7 + 8); + if ( (unsigned int)v54 >= *(_DWORD *)(v7 + 12) ) + { + v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v70 != -1 ? v70 : -1; + v7 &= (v70 == -1) - 1; + } + else + { + v11 = *v54; + } + } + else + { + v11 = a2; + } + v12 = *(_BYTE *)(v8 + 74); + v13 = *(_BYTE *)(v8 + 16); + v76 = v12 == v11; + if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) + { + if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) + { + v14 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + if ( v14 >= v15 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v16 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + } + else + { + v16 = v14 + 1; + *(_DWORD *)(v7 + 8) = v16; + } + v95 = 0; + if ( v16 >= v15 ) + { + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v95 - 1; + } + if ( v99 && v91 != 0 ) + { + if ( v91[2] >= v91[3] ) + { + v72 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v17 = v72 == -1 && v99 && v91 != 0; + v91 = v72 == -1 ? 0 : v91; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v95 == v17 ) + { + v18 = v98; + v82 = 1; + v86 = 0; + v96 = 0; + if ( v98 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v11 = -1; + if ( v7 ) + { + v55 = *(char **)(v7 + 8); + if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v64 != -1 ? v64 : -1; + v7 &= (v64 == -1) - 1; + } + else + { + v11 = *v55; + } + } + v13 = *(_BYTE *)(v8 + 16); + } + } + else + { + v76 = 0; + } + v86 = 0; + v19 = (_DWORD *)v7; + v20 = v11; + v96 = 0; + v21 = (unsigned int)v19; + while ( 1 ) + { + if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) + { +LABEL_111: + v42 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v42; + goto LABEL_43; + } + if ( *(_BYTE *)(v8 + 78) != v20 ) + { + if ( !v96 ) + goto LABEL_111; +LABEL_33: + if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) + { + v59 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v96 = 1; + v7 = (unsigned int)v59; + goto LABEL_43; + } + if ( v84 != 0 && v98 != 16 ) + { + v82 = 0; + v60 = (_DWORD *)v21; + v11 = v20; + v7 = (unsigned int)v60; + v96 = 1; + MaxCount = v98; + Buf = v98; + goto LABEL_45; + } + v86 = 0; + v96 = 0; + v98 = 16; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v38 = !v96 || v98 == 10; + if ( !v38 ) + goto LABEL_33; + v96 = v84 == 0 || v98 == 8; + if ( !v96 ) + { + ++v86; + v96 = v38; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v86 = 0; + v98 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v87 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v87 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v99 && v91 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v87 - 1; + v25 = v99 && v91 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v91[2] >= v91[3] ) + { + v83 = v25; + v53 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v26 = v53 == -1 && v83; + v91 = v53 == -1 ? 0 : v91; +LABEL_41: + if ( v26 == v87 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v87 ) + { +LABEL_42: + v27 = (_DWORD *)v21; + v11 = v20; + v82 = 1; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v39 = *(char **)(v21 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) + { + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v61 != -1 ? v61 : -1; + v21 &= (v61 == -1) - 1; + } + else + { + v20 = *v39; + } + } + if ( !v96 ) + break; + v13 = *(_BYTE *)(v8 + 16); + } + v62 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v62; +LABEL_43: + v18 = v98; + if ( v98 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v28 = *(_BYTE *)(v8 + 16) == 0; + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( !v28 ) + std::string::reserve(&v101, 0x20u); + v80 = 0xFFFFFFFF / v98; + v77 = *(_BYTE *)(v8 + 100); + if ( !v77 ) + { + if ( v82 ) + { + v71 = v82; + v35 = v102; + v81 = 0; + v82 = 0; + v36 = (int *)v101; + v77 = v71; + v85 = 0; + goto LABEL_61; + } + v81 = 0; + v85 = 0; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v11 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v11 - 97) > 5u ) + { + if ( (unsigned __int8)(v11 - 65) > 5u ) + goto LABEL_110; + v29 = v11 - 55; + goto LABEL_54; + } + v29 = v11 - 87; + if ( v80 >= v85 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v81 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v88 = 0; + if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) + goto LABEL_87; +LABEL_57: + v33 = v99 && v91 != 0; + if ( !v33 ) + goto LABEL_58; +LABEL_88: + if ( v91[2] >= v91[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v58 == -1 ? 0 : v91; + v34 = v58 == -1 && v33; + goto LABEL_59; + } + if ( !v88 ) + { +LABEL_60: + v35 = v102; + v36 = (int *)v101; + v77 = 1; + goto LABEL_61; + } + } + else + { + if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) + goto LABEL_110; +LABEL_53: + v29 = v11 - 48; +LABEL_54: + if ( v80 < v85 ) + goto LABEL_55; +LABEL_85: + v31 = *(_DWORD *)(v7 + 12); + v81 |= ~v29 < v98 * v85; + v85 = v98 * v85 + v29; + v30 = *(_DWORD *)(v7 + 8); + ++v86; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v88 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v31 > v32 ) + goto LABEL_57; +LABEL_87: + v88 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v88 - 1; + v33 = v99 && v91 != 0; + if ( v33 ) + goto LABEL_88; +LABEL_58: + v34 = a4 == -1; +LABEL_59: + if ( v34 == v88 ) + goto LABEL_60; + } + if ( v7 ) + { + v40 = *(char **)(v7 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v11 = *v40; + } + } + else + { + v11 = -1; + } + continue; + } + } + if ( v82 ) + { + v35 = v102; + v85 = 0; + v81 = 0; + v36 = (int *)v101; + v77 = v82; + v82 = 0; + goto LABEL_61; + } + v81 = 0; + Bufa = (void *)(v8 + 78); + v85 = 0; + while ( 2 ) + { + if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) + { + if ( v11 == *(_BYTE *)(v8 + 36) || (v43 = memchr(Bufa, v11, MaxCount)) == 0 ) + { +LABEL_110: + v35 = v102; + v36 = (int *)v101; + v77 = 0; + goto LABEL_61; + } + v44 = v43 - (_BYTE *)Bufa; + if ( v44 > 15 ) + v44 -= 6; + if ( v80 >= v85 ) + { + v81 |= ~v44 < v98 * v85; + ++v86; + v85 = v98 * v85 + v44; + goto LABEL_122; + } + v46 = *(_DWORD *)(v7 + 12); + v81 = v77; + v45 = *(_DWORD *)(v7 + 8); + if ( v45 >= v46 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v47 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v47 = v45 + 1; + *(_DWORD *)(v7 + 8) = v47; +LABEL_124: + v89 = 0; + if ( v46 <= v47 ) + { + v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v89 = v67 != -1 ? 0 : v77; + v7 &= (v67 == -1) - 1; + } + v48 = v99 && v91 != 0; + if ( v48 ) + { + if ( v91[2] >= v91[3] ) + { + v66 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v66 == -1 ? 0 : v91; + v49 = v66 == -1 && v48; + } + else + { + v49 = 0; + } + } + else + { + v49 = a4 == -1; + } + if ( v89 == v49 ) + { + v35 = v102; + v36 = (int *)v101; + goto LABEL_61; + } + if ( v7 ) + { + v50 = *(char **)(v7 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v7 + 12) ) + { + v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v63 != -1 ? v63 : -1; + v7 &= (v63 == -1) - 1; + } + else + { + v11 = *v50; + } + } + else + { + v11 = -1; + } + continue; + } + break; + } + v35 = v102; + v36 = (int *)v101; + if ( v86 ) + { + v90 = v102 + 1; + if ( v101 == v103 ) + v51 = 15; + else + v51 = v103[0]; + if ( v90 > v51 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v36 = (int *)v101; + } + v52 = v86; + v86 = 0; + *((_BYTE *)v36 + v35) = v52; + v102 = v90; + *((_BYTE *)v101 + v90) = 0; +LABEL_122: + v45 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + if ( v45 >= v46 ) + goto LABEL_131; + goto LABEL_123; + } + v77 = 0; + v82 = *(_BYTE *)(v8 + 16); +LABEL_61: + if ( v35 ) + { + v100 = v35 + 1; + if ( v36 == v103 ) + v41 = 15; + else + v41 = v103[0]; + if ( v100 > v41 ) + { + std::string::_M_mutate((int)&v101, v35, 0, 0, 1u); + v36 = (int *)v101; + } + *((_BYTE *)v36 + v35) = v86; + v102 = v35 + 1; + *((_BYTE *)v101 + v100) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v36 = (int *)v101; + if ( v96 || v102 | v86 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + *a6 = 4; + } + else + { + if ( !v86 && !v96 ) + goto LABEL_64; +LABEL_103: + if ( v82 ) + goto LABEL_64; + if ( v81 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v76 ) + v85 = -v85; + *a7 = v85; + } + } + if ( v77 ) + *a6 |= 2u; + if ( v36 != v103 ) + operator delete(v36); + return v7; +} +// 460207: variable 'v73' is possibly undefined +// 460270: variable 'v74' is possibly undefined +// 4E95A8: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (004605F0) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + unsigned __int16 *a7) +{ + unsigned int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // di + char v12; // dl + char v13; // al + unsigned int v14; // eax + unsigned int v15; // edx + unsigned int v16; // eax + char v17; // dl + int v18; // eax + _DWORD *v19; // ecx + char v20; // bl + unsigned int v21; // edi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + bool v28; // zf + int v29; // eax + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + bool v33; // di + char v34; // di + size_t v35; // edi + int *v36; // eax + bool v38; // al + char *v39; // eax + char *v40; // eax + unsigned int v41; // edx + _DWORD *v42; // eax + _BYTE *v43; // eax + int v44; // eax + unsigned int v45; // eax + unsigned int v46; // edx + unsigned int v47; // eax + bool v48; // di + char v49; // di + char *v50; // eax + unsigned int v51; // edx + char v52; // cl + int v53; // eax + char *v54; // eax + char *v55; // eax + std::locale::_Impl *v56; // eax + std::locale::_Impl *v57; // esi + int v58; // eax + _DWORD *v59; // eax + _DWORD *v60; // eax + int v61; // eax + _DWORD *v62; // eax + int v63; // eax + int v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + char v71; // cl + int v72; // eax + void (__cdecl *v73)(void *); // [esp+4h] [ebp-84h] + unsigned int v74; // [esp+8h] [ebp-80h] + size_t MaxCount; // [esp+1Ch] [ebp-6Ch] + bool v76; // [esp+22h] [ebp-66h] + char v77; // [esp+23h] [ebp-65h] + int Buf; // [esp+24h] [ebp-64h] + void *Bufa; // [esp+24h] [ebp-64h] + int v80; // [esp+28h] [ebp-60h] + char v81; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + bool v83; // [esp+30h] [ebp-58h] + int v84; // [esp+34h] [ebp-54h] + unsigned __int16 v85; // [esp+34h] [ebp-54h] + int v86; // [esp+38h] [ebp-50h] + unsigned __int8 v87; // [esp+3Ch] [ebp-4Ch] + unsigned __int8 v88; // [esp+3Ch] [ebp-4Ch] + char v89; // [esp+3Ch] [ebp-4Ch] + size_t v90; // [esp+3Ch] [ebp-4Ch] + _DWORD *v91; // [esp+40h] [ebp-48h] + int *v92; // [esp+44h] [ebp-44h] + bool v93; // [esp+44h] [ebp-44h] + char v94; // [esp+44h] [ebp-44h] + unsigned __int8 v95; // [esp+44h] [ebp-44h] + bool v96; // [esp+44h] [ebp-44h] + std::locale::facet *v97; // [esp+48h] [ebp-40h] + int v98; // [esp+48h] [ebp-40h] + bool v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v91 = a3; + v97 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + v92 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v97); + if ( !v8 ) + { + v56 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v73); + *((_DWORD *)v56 + 1) = 0; + v57 = v56; + *(_DWORD *)v56 = &off_4F65A0; + *((_DWORD *)v56 + 2) = 0; + *((_DWORD *)v56 + 3) = 0; + *((_BYTE *)v56 + 16) = 0; + *((_DWORD *)v56 + 5) = 0; + *((_DWORD *)v56 + 6) = 0; + *((_DWORD *)v56 + 7) = 0; + *((_DWORD *)v56 + 8) = 0; + *((_WORD *)v56 + 18) = 0; + *((_BYTE *)v56 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v56, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v57, v97, v74); + v8 = *v92; + } + v98 = 8; + v9 = *(_DWORD *)(a5 + 12) & 0x4A; + v84 = v9; + if ( v9 != 64 ) + v98 = v9 == 8 ? 16 : 10; + v93 = a2 == -1 && a1 != 0; + if ( v93 ) + { + if ( a1[2] >= a1[3] ) + { + v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v94 = v69 == -1 && v93; + v7 = v69 == -1 ? 0 : (unsigned int)a1; + } + else + { + v94 = 0; + } + } + else + { + v94 = a2 == -1; + } + v99 = a4 == -1; + if ( v99 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v68 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v68 == -1 && v99 && a3 != 0; + v91 = v68 == -1 ? 0 : a3; + } + else + { + v10 = 0; + } + } + else + { + v10 = a4 == -1; + } + if ( v94 == v10 ) + { + v76 = 0; + v11 = 0; + v82 = 1; + v86 = 0; + v96 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v54 = *(char **)(v7 + 8); + if ( (unsigned int)v54 >= *(_DWORD *)(v7 + 12) ) + { + v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v70 != -1 ? v70 : -1; + v7 &= (v70 == -1) - 1; + } + else + { + v11 = *v54; + } + } + else + { + v11 = a2; + } + v12 = *(_BYTE *)(v8 + 74); + v13 = *(_BYTE *)(v8 + 16); + v76 = v12 == v11; + if ( v12 == v11 || *(_BYTE *)(v8 + 75) == v11 ) + { + if ( (!v13 || *(_BYTE *)(v8 + 37) != v11) && *(_BYTE *)(v8 + 36) != v11 ) + { + v14 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + if ( v14 >= v15 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v16 = *(_DWORD *)(v7 + 8); + v15 = *(_DWORD *)(v7 + 12); + } + else + { + v16 = v14 + 1; + *(_DWORD *)(v7 + 8) = v16; + } + v95 = 0; + if ( v16 >= v15 ) + { + v95 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v95 - 1; + } + if ( v99 && v91 != 0 ) + { + if ( v91[2] >= v91[3] ) + { + v72 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v17 = v72 == -1 && v99 && v91 != 0; + v91 = v72 == -1 ? 0 : v91; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v95 == v17 ) + { + v18 = v98; + v82 = 1; + v86 = 0; + v96 = 0; + if ( v98 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v11 = -1; + if ( v7 ) + { + v55 = *(char **)(v7 + 8); + if ( (unsigned int)v55 >= *(_DWORD *)(v7 + 12) ) + { + v64 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v64 != -1 ? v64 : -1; + v7 &= (v64 == -1) - 1; + } + else + { + v11 = *v55; + } + } + v13 = *(_BYTE *)(v8 + 16); + } + } + else + { + v76 = 0; + } + v86 = 0; + v19 = (_DWORD *)v7; + v20 = v11; + v96 = 0; + v21 = (unsigned int)v19; + while ( 1 ) + { + if ( v13 && *(_BYTE *)(v8 + 37) == v20 || *(_BYTE *)(v8 + 36) == v20 ) + { +LABEL_111: + v42 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v42; + goto LABEL_43; + } + if ( *(_BYTE *)(v8 + 78) != v20 ) + { + if ( !v96 ) + goto LABEL_111; +LABEL_33: + if ( *(_BYTE *)(v8 + 76) != v20 && *(_BYTE *)(v8 + 77) != v20 ) + { + v59 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v96 = 1; + v7 = (unsigned int)v59; + goto LABEL_43; + } + if ( v84 != 0 && v98 != 16 ) + { + v82 = 0; + v60 = (_DWORD *)v21; + v11 = v20; + v7 = (unsigned int)v60; + v96 = 1; + MaxCount = v98; + Buf = v98; + goto LABEL_45; + } + v86 = 0; + v96 = 0; + v98 = 16; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v38 = !v96 || v98 == 10; + if ( !v38 ) + goto LABEL_33; + v96 = v84 == 0 || v98 == 8; + if ( !v96 ) + { + ++v86; + v96 = v38; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v86 = 0; + v98 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v87 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v87 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v99 && v91 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v87 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v87 - 1; + v25 = v99 && v91 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v91[2] >= v91[3] ) + { + v83 = v25; + v53 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v26 = v53 == -1 && v83; + v91 = v53 == -1 ? 0 : v91; +LABEL_41: + if ( v26 == v87 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v87 ) + { +LABEL_42: + v27 = (_DWORD *)v21; + v11 = v20; + v82 = 1; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v39 = *(char **)(v21 + 8); + if ( (unsigned int)v39 >= *(_DWORD *)(v21 + 12) ) + { + v61 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v61 != -1 ? v61 : -1; + v21 &= (v61 == -1) - 1; + } + else + { + v20 = *v39; + } + } + if ( !v96 ) + break; + v13 = *(_BYTE *)(v8 + 16); + } + v62 = (_DWORD *)v21; + v82 = 0; + v11 = v20; + v7 = (unsigned int)v62; +LABEL_43: + v18 = v98; + if ( v98 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v28 = *(_BYTE *)(v8 + 16) == 0; + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( !v28 ) + std::string::reserve(&v101, 0x20u); + v80 = 0xFFFF / v98; + v77 = *(_BYTE *)(v8 + 100); + if ( !v77 ) + { + if ( v82 ) + { + v71 = v82; + v35 = v102; + v81 = 0; + v82 = 0; + v36 = (int *)v101; + v77 = v71; + v85 = 0; + goto LABEL_61; + } + v81 = 0; + v85 = 0; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v11 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v11 - 97) > 5u ) + { + if ( (unsigned __int8)(v11 - 65) > 5u ) + goto LABEL_110; + v29 = v11 - 55; + goto LABEL_54; + } + v29 = v11 - 87; + if ( (unsigned __int16)v80 >= v85 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v81 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v88 = 0; + if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) + goto LABEL_87; +LABEL_57: + v33 = v99 && v91 != 0; + if ( !v33 ) + goto LABEL_58; +LABEL_88: + if ( v91[2] >= v91[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v58 == -1 ? 0 : v91; + v34 = v58 == -1 && v33; + goto LABEL_59; + } + if ( !v88 ) + { +LABEL_60: + v35 = v102; + v36 = (int *)v101; + v77 = 1; + goto LABEL_61; + } + } + else + { + if ( v11 <= 47 || (char)(Buf + 48) <= v11 ) + goto LABEL_110; +LABEL_53: + v29 = v11 - 48; +LABEL_54: + if ( (unsigned __int16)v80 < v85 ) + goto LABEL_55; +LABEL_85: + v31 = *(_DWORD *)(v7 + 12); + v81 |= (unsigned __int16)(v98 * v85) > 0xFFFF - v29; + v85 = v98 * v85 + v29; + v30 = *(_DWORD *)(v7 + 8); + ++v86; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v88 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v31 > v32 ) + goto LABEL_57; +LABEL_87: + v88 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v88 - 1; + v33 = v99 && v91 != 0; + if ( v33 ) + goto LABEL_88; +LABEL_58: + v34 = a4 == -1; +LABEL_59: + if ( v34 == v88 ) + goto LABEL_60; + } + if ( v7 ) + { + v40 = *(char **)(v7 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v11 = *v40; + } + } + else + { + v11 = -1; + } + continue; + } + } + if ( v82 ) + { + v35 = v102; + v81 = 0; + v85 = 0; + v36 = (int *)v101; + v77 = v82; + v82 = 0; + goto LABEL_61; + } + v81 = 0; + Bufa = (void *)(v8 + 78); + v85 = 0; + while ( 2 ) + { + if ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != v11 ) + { + if ( v11 == *(_BYTE *)(v8 + 36) || (v43 = memchr(Bufa, v11, MaxCount)) == 0 ) + { +LABEL_110: + v35 = v102; + v36 = (int *)v101; + v77 = 0; + goto LABEL_61; + } + v44 = v43 - (_BYTE *)Bufa; + if ( v44 > 15 ) + v44 -= 6; + if ( (unsigned __int16)v80 >= v85 ) + { + v81 |= (unsigned __int16)(v98 * v85) > 0xFFFF - v44; + ++v86; + v85 = v98 * v85 + v44; + goto LABEL_122; + } + v46 = *(_DWORD *)(v7 + 12); + v81 = v77; + v45 = *(_DWORD *)(v7 + 8); + if ( v45 >= v46 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v47 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v47 = v45 + 1; + *(_DWORD *)(v7 + 8) = v47; +LABEL_124: + v89 = 0; + if ( v46 <= v47 ) + { + v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v89 = v67 != -1 ? 0 : v77; + v7 &= (v67 == -1) - 1; + } + v48 = v99 && v91 != 0; + if ( v48 ) + { + if ( v91[2] >= v91[3] ) + { + v66 = (*(int (__fastcall **)(_DWORD *))(*v91 + 36))(v91); + v91 = v66 == -1 ? 0 : v91; + v49 = v66 == -1 && v48; + } + else + { + v49 = 0; + } + } + else + { + v49 = a4 == -1; + } + if ( v89 == v49 ) + { + v35 = v102; + v36 = (int *)v101; + goto LABEL_61; + } + if ( v7 ) + { + v50 = *(char **)(v7 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v7 + 12) ) + { + v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v11 = v63 != -1 ? v63 : -1; + v7 &= (v63 == -1) - 1; + } + else + { + v11 = *v50; + } + } + else + { + v11 = -1; + } + continue; + } + break; + } + v35 = v102; + v36 = (int *)v101; + if ( v86 ) + { + v90 = v102 + 1; + if ( v101 == v103 ) + v51 = 15; + else + v51 = v103[0]; + if ( v90 > v51 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v36 = (int *)v101; + } + v52 = v86; + v86 = 0; + *((_BYTE *)v36 + v35) = v52; + v102 = v90; + *((_BYTE *)v101 + v90) = 0; +LABEL_122: + v45 = *(_DWORD *)(v7 + 8); + v46 = *(_DWORD *)(v7 + 12); + if ( v45 >= v46 ) + goto LABEL_131; + goto LABEL_123; + } + v77 = 0; + v82 = *(_BYTE *)(v8 + 16); +LABEL_61: + if ( v35 ) + { + v100 = v35 + 1; + if ( v36 == v103 ) + v41 = 15; + else + v41 = v103[0]; + if ( v100 > v41 ) + { + std::string::_M_mutate((int)&v101, v35, 0, 0, 1u); + v36 = (int *)v101; + } + *((_BYTE *)v36 + v35) = v86; + v102 = v35 + 1; + *((_BYTE *)v101 + v100) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v36 = (int *)v101; + if ( v96 || v102 | v86 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + *a6 = 4; + } + else + { + if ( !v86 && !v96 ) + goto LABEL_64; +LABEL_103: + if ( v82 ) + goto LABEL_64; + if ( v81 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v76 ) + v85 = -v85; + *a7 = v85; + } + } + if ( v77 ) + *a6 |= 2u; + if ( v36 != v103 ) + operator delete(v36); + return v7; +} +// 460F4F: variable 'v73' is possibly undefined +// 460FB8: variable 'v74' is possibly undefined +// 4E95A8: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (00461330) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int *a7) +{ + int v7; // edi + bool v8; // dl + char v9; // bl + char v10; // bl + char v11; // dl + char v12; // al + unsigned int v13; // eax + unsigned int v14; // edx + unsigned int v15; // eax + unsigned __int8 v16; // si + char v17; // dl + int v18; // eax + unsigned int v19; // ecx + unsigned int v20; // eax + unsigned int v21; // edx + unsigned int v22; // eax + unsigned __int8 v23; // si + bool v24; // dl + char v25; // dl + bool v26; // zf + unsigned __int64 v27; // kr00_8 + int v28; // ecx + unsigned int v29; // esi + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + unsigned __int8 v33; // si + bool v34; // bl + char v35; // bl + size_t v36; // ebx + int *v37; // ecx + bool v39; // al + char *v40; // eax + int v41; // ebx + int v42; // esi + char *v43; // eax + unsigned int v44; // eax + int v45; // eax + unsigned int v46; // edx + _BYTE *v47; // eax + int v48; // eax + int v49; // ecx + UDItype v50; // rax + unsigned int v51; // esi + unsigned int v52; // eax + unsigned int v53; // edx + unsigned int v54; // eax + char v55; // si + bool v56; // bl + char v57; // bl + char *v58; // eax + size_t v59; // esi + unsigned int v60; // eax + char v61; // al + int v62; // eax + char *v63; // eax + char *v64; // eax + std::locale::_Impl *v65; // eax + std::locale::_Impl *v66; // edi + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + int v71; // eax + int v72; // eax + int v73; // eax + int v74; // eax + int v75; // eax + int v76; // eax + char v77; // al + int v78; // eax + void (__cdecl *v79)(void *); // [esp+4h] [ebp-94h] + unsigned int v80; // [esp+8h] [ebp-90h] + size_t MaxCount; // [esp+1Ch] [ebp-7Ch] + UDItype n; // [esp+20h] [ebp-78h] + int Buf; // [esp+28h] [ebp-70h] + void *Bufa; // [esp+28h] [ebp-70h] + bool v85; // [esp+35h] [ebp-63h] + char v86; // [esp+36h] [ebp-62h] + char v87; // [esp+37h] [ebp-61h] + bool v88; // [esp+37h] [ebp-61h] + int v89; // [esp+38h] [ebp-60h] + __int64 v90; // [esp+38h] [ebp-60h] + char v91; // [esp+40h] [ebp-58h] + bool v92; // [esp+40h] [ebp-58h] + int v93; // [esp+44h] [ebp-54h] + int *d; // [esp+48h] [ebp-50h] + int da; // [esp+48h] [ebp-50h] + UDItype db; // [esp+48h] [ebp-50h] + UDItype dc; // [esp+48h] [ebp-50h] + UDItype dd; // [esp+48h] [ebp-50h] + unsigned int v99; // [esp+50h] [ebp-48h] + _DWORD *v100; // [esp+54h] [ebp-44h] + std::locale::facet *v101; // [esp+58h] [ebp-40h] + bool v102; // [esp+58h] [ebp-40h] + char v103; // [esp+58h] [ebp-40h] + bool v104; // [esp+58h] [ebp-40h] + bool v105; // [esp+5Ch] [ebp-3Ch] + unsigned int v106; // [esp+5Ch] [ebp-3Ch] + void *v107; // [esp+68h] [ebp-30h] BYREF + size_t v108; // [esp+6Ch] [ebp-2Ch] + int v109[10]; // [esp+70h] [ebp-28h] BYREF + + v99 = (unsigned int)a1; + v100 = a3; + v101 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); + d = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); + if ( !v7 ) + { + v65 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v79); + *((_DWORD *)v65 + 1) = 0; + v66 = v65; + *(_DWORD *)v65 = &off_4F65A0; + *((_DWORD *)v65 + 2) = 0; + *((_DWORD *)v65 + 3) = 0; + *((_BYTE *)v65 + 16) = 0; + *((_DWORD *)v65 + 5) = 0; + *((_DWORD *)v65 + 6) = 0; + *((_DWORD *)v65 + 7) = 0; + *((_DWORD *)v65 + 8) = 0; + *((_WORD *)v65 + 18) = 0; + *((_BYTE *)v65 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v65, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v66, v101, v80); + v7 = *d; + } + da = 8; + v89 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v89 != 64 ) + da = v89 == 8 ? 16 : 10; + v8 = a2 == -1; + v102 = v8 && a1 != 0; + if ( v102 ) + { + if ( a1[2] >= a1[3] ) + { + v75 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v8 = a2 == -1; + v103 = v75 == -1 && v102; + v99 = v75 == -1 ? 0 : (unsigned int)a1; + } + else + { + v103 = 0; + } + } + else + { + v103 = a2 == -1; + } + v105 = a4 == -1; + if ( v105 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v88 = v8; + v74 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v8 = v88; + v9 = v74 == -1 && v105 && a3 != 0; + v100 = v74 == -1 ? 0 : a3; + } + else + { + v9 = 0; + } + } + else + { + v9 = a4 == -1; + } + if ( v103 == v9 ) + { + v85 = 0; + v10 = 0; + v91 = 1; + v93 = 0; + v104 = 0; + goto LABEL_43; + } + if ( v99 && v8 ) + { + v63 = *(char **)(v99 + 8); + if ( (unsigned int)v63 >= *(_DWORD *)(v99 + 12) ) + { + v76 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v76 != -1 ? v76 : -1; + v99 &= (v76 == -1) - 1; + } + else + { + v10 = *v63; + } + } + else + { + v10 = a2; + } + v11 = *(_BYTE *)(v7 + 74); + v12 = *(_BYTE *)(v7 + 16); + v85 = v11 == v10; + if ( v11 == v10 || *(_BYTE *)(v7 + 75) == v10 ) + { + if ( (!v12 || *(_BYTE *)(v7 + 37) != v10) && *(_BYTE *)(v7 + 36) != v10 ) + { + v13 = *(_DWORD *)(v99 + 8); + v14 = *(_DWORD *)(v99 + 12); + if ( v13 >= v14 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); + v15 = *(_DWORD *)(v99 + 8); + v14 = *(_DWORD *)(v99 + 12); + } + else + { + v15 = v13 + 1; + *(_DWORD *)(v99 + 8) = v15; + } + v16 = 0; + if ( v15 >= v14 ) + { + v16 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99) == -1; + v99 &= v16 - 1; + } + if ( v105 && v100 != 0 ) + { + if ( v100[2] >= v100[3] ) + { + v78 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); + v17 = v78 == -1 && v105 && v100 != 0; + v100 = v78 == -1 ? 0 : v100; + } + else + { + v17 = 0; + } + } + else + { + v17 = a4 == -1; + } + if ( v17 == v16 ) + { + v18 = da; + v91 = 1; + v93 = 0; + v104 = 0; + if ( da != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v10 = -1; + if ( v99 ) + { + v64 = *(char **)(v99 + 8); + if ( (unsigned int)v64 >= *(_DWORD *)(v99 + 12) ) + { + v70 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v70 != -1 ? v70 : -1; + v99 &= (v70 == -1) - 1; + } + else + { + v10 = *v64; + } + } + v12 = *(_BYTE *)(v7 + 16); + } + } + else + { + v85 = 0; + } + v93 = 0; + v104 = 0; + while ( 1 ) + { + if ( v12 && *(_BYTE *)(v7 + 37) == v10 || *(_BYTE *)(v7 + 36) == v10 ) + { +LABEL_112: + v91 = 0; + goto LABEL_43; + } + if ( *(_BYTE *)(v7 + 78) != v10 ) + { + if ( !v104 ) + goto LABEL_112; +LABEL_33: + if ( *(_BYTE *)(v7 + 76) != v10 && *(_BYTE *)(v7 + 77) != v10 ) + { + v91 = 0; + v104 = 1; + goto LABEL_43; + } + if ( v89 != 0 && da != 16 ) + { + v91 = 0; + v104 = 1; + MaxCount = da; + Buf = da; + goto LABEL_45; + } + v93 = 0; + v104 = 0; + da = 16; +LABEL_37: + v19 = v99; + v20 = *(_DWORD *)(v99 + 8); + v21 = *(_DWORD *)(v99 + 12); + if ( v20 < v21 ) + goto LABEL_38; + goto LABEL_75; + } + v39 = !v104 || da == 10; + if ( !v39 ) + goto LABEL_33; + v104 = v89 == 0 || da == 8; + if ( !v104 ) + { + ++v93; + v104 = v39; + goto LABEL_37; + } + v19 = v99; + v93 = 0; + da = 8; + v20 = *(_DWORD *)(v99 + 8); + v21 = *(_DWORD *)(v99 + 12); + if ( v20 < v21 ) + { +LABEL_38: + v22 = v20 + 1; + v23 = 0; + *(_DWORD *)(v19 + 8) = v22; + if ( v22 < v21 ) + goto LABEL_39; + goto LABEL_76; + } +LABEL_75: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); + v23 = 0; + if ( *(_DWORD *)(v99 + 8) < *(_DWORD *)(v99 + 12) ) + { +LABEL_39: + v24 = v105 && v100 != 0; + if ( !v24 ) + goto LABEL_40; + goto LABEL_77; + } +LABEL_76: + v23 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99) == -1; + v99 &= v23 - 1; + v24 = v105 && v100 != 0; + if ( !v24 ) + { +LABEL_40: + v25 = a4 == -1; + goto LABEL_41; + } +LABEL_77: + if ( v100[2] >= v100[3] ) + { + v92 = v24; + v62 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); + v25 = v62 == -1 && v92; + v100 = v62 == -1 ? 0 : v100; +LABEL_41: + if ( v25 == v23 ) + goto LABEL_42; + goto LABEL_79; + } + if ( !v23 ) + { +LABEL_42: + v91 = 1; + goto LABEL_43; + } +LABEL_79: + v10 = -1; + if ( v99 ) + { + v40 = *(char **)(v99 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v99 + 12) ) + { + v68 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v68 != -1 ? v68 : -1; + v99 &= (v68 == -1) - 1; + } + else + { + v10 = *v40; + } + } + if ( !v104 ) + break; + v12 = *(_BYTE *)(v7 + 16); + } + v91 = 0; +LABEL_43: + v18 = da; + if ( da == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v18; + Buf = v18; +LABEL_45: + v26 = *(_BYTE *)(v7 + 16) == 0; + v108 = 0; + v107 = v109; + LOBYTE(v109[0]) = 0; + if ( !v26 ) + std::string::reserve(&v107, 0x20u); + n = 0x8000000000000000LL; + if ( !v85 ) + n = 0x7FFFFFFFFFFFFFFFLL; + v90 = da; + v27 = n / da; + v86 = *(_BYTE *)(v7 + 100); + if ( !v86 ) + { + if ( v91 ) + { + v77 = v91; + v36 = v108; + v87 = 0; + v91 = 0; + v37 = (int *)v107; + v86 = v77; + db = 0LL; + goto LABEL_63; + } + v87 = 0; + db = 0LL; + while ( 2 ) + { + if ( Buf <= 10 ) + { + if ( v10 <= 47 || (char)(Buf + 48) <= v10 ) + goto LABEL_111; +LABEL_55: + v28 = v10 - 48; + goto LABEL_56; + } + if ( (unsigned __int8)(v10 - 48) <= 9u ) + goto LABEL_55; + v28 = v10 - 87; + if ( (unsigned __int8)(v10 - 97) <= 5u ) + { +LABEL_56: + if ( v27 >= db ) + goto LABEL_88; + } + else + { + if ( (unsigned __int8)(v10 - 65) > 5u ) + goto LABEL_111; + v28 = v10 - 55; + if ( v27 >= db ) + { +LABEL_88: + v41 = HIDWORD(v90) * db; + v42 = v90 * HIDWORD(db); + dc = (unsigned int)v90 * (unsigned __int64)(unsigned int)db; + HIDWORD(dc) += v42 + v41; + v87 |= n - v28 < dc; + db = dc + v28; + v29 = v99; + ++v93; + v30 = *(_DWORD *)(v99 + 8); + v31 = *(_DWORD *)(v99 + 12); + if ( v30 >= v31 ) + { +LABEL_89: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); + v33 = 0; + if ( *(_DWORD *)(v99 + 8) >= *(_DWORD *)(v99 + 12) ) + { +LABEL_90: + v33 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99) == -1; + v99 &= v33 - 1; + v34 = v105 && v100 != 0; + if ( v34 ) + { +LABEL_91: + if ( v100[2] < v100[3] ) + { + if ( !v33 ) + { +LABEL_62: + v36 = v108; + v37 = (int *)v107; + v86 = 1; + goto LABEL_63; + } + goto LABEL_93; + } + v67 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); + v100 = v67 == -1 ? 0 : v100; + v35 = v67 == -1 && v34; +LABEL_61: + if ( v35 == v33 ) + goto LABEL_62; +LABEL_93: + if ( v99 ) + { + v43 = *(char **)(v99 + 8); + if ( (unsigned int)v43 >= *(_DWORD *)(v99 + 12) ) + { + v71 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v71 != -1 ? v71 : -1; + v99 &= (v71 == -1) - 1; + } + else + { + v10 = *v43; + } + } + else + { + v10 = -1; + } + continue; + } +LABEL_60: + v35 = a4 == -1; + goto LABEL_61; + } +LABEL_59: + v34 = v105 && v100 != 0; + if ( v34 ) + goto LABEL_91; + goto LABEL_60; + } +LABEL_58: + v32 = v30 + 1; + *(_DWORD *)(v29 + 8) = v32; + v33 = 0; + if ( v32 >= v31 ) + goto LABEL_90; + goto LABEL_59; + } + } + break; + } + v29 = v99; + v87 = 1; + v30 = *(_DWORD *)(v99 + 8); + v31 = *(_DWORD *)(v99 + 12); + if ( v30 >= v31 ) + goto LABEL_89; + goto LABEL_58; + } + if ( v91 ) + { + v36 = v108; + db = 0LL; + v37 = (int *)v107; + v86 = v91; + v87 = 0; + v91 = 0; + goto LABEL_63; + } + v87 = 0; + Bufa = (void *)(v7 + 78); + db = 0LL; + while ( 2 ) + { + if ( !*(_BYTE *)(v7 + 16) || *(_BYTE *)(v7 + 37) != v10 ) + { + if ( v10 == *(_BYTE *)(v7 + 36) || (v47 = memchr(Bufa, v10, MaxCount)) == 0 ) + { +LABEL_111: + v36 = v108; + v37 = (int *)v107; + v86 = 0; + goto LABEL_63; + } + v48 = v47 - (_BYTE *)Bufa; + v49 = v48; + if ( v48 > 15 ) + v49 = v48 - 6; + v50 = db; + if ( v27 >= db ) + { + dd = (unsigned int)v90 * (unsigned __int64)(unsigned int)db; + HIDWORD(dd) += HIDWORD(v50) * v90 + v50 * HIDWORD(v90); + v87 |= n - v49 < dd; + ++v93; + db = dd + v49; + goto LABEL_123; + } + v51 = v99; + v87 = v86; + v53 = *(_DWORD *)(v99 + 12); + v52 = *(_DWORD *)(v99 + 8); + if ( v52 >= v53 ) + { +LABEL_132: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 40))(v99); + v54 = *(_DWORD *)(v99 + 8); + v53 = *(_DWORD *)(v99 + 12); + goto LABEL_125; + } +LABEL_124: + v54 = v52 + 1; + *(_DWORD *)(v51 + 8) = v54; +LABEL_125: + v55 = 0; + if ( v53 <= v54 ) + { + v73 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v55 = v73 != -1 ? 0 : v86; + v99 &= (v73 == -1) - 1; + } + v56 = v105 && v100 != 0; + if ( v56 ) + { + if ( v100[2] >= v100[3] ) + { + v72 = (*(int (__fastcall **)(_DWORD *))(*v100 + 36))(v100); + v100 = v72 == -1 ? 0 : v100; + v57 = v72 == -1 && v56; + } + else + { + v57 = 0; + } + } + else + { + v57 = a4 == -1; + } + if ( v55 == v57 ) + { + v36 = v108; + v37 = (int *)v107; + goto LABEL_63; + } + if ( v99 ) + { + v58 = *(char **)(v99 + 8); + if ( (unsigned int)v58 >= *(_DWORD *)(v99 + 12) ) + { + v69 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v99 + 36))(v99); + v10 = v69 != -1 ? v69 : -1; + v99 &= (v69 == -1) - 1; + } + else + { + v10 = *v58; + } + } + else + { + v10 = -1; + } + continue; + } + break; + } + v36 = v108; + v37 = (int *)v107; + if ( v93 ) + { + v59 = v108 + 1; + if ( v107 == v109 ) + v60 = 15; + else + v60 = v109[0]; + if ( v59 > v60 ) + { + std::string::_M_mutate((int)&v107, v108, 0, 0, 1u); + v37 = (int *)v107; + } + v61 = v93; + v93 = 0; + *((_BYTE *)v37 + v36) = v61; + v108 = v36 + 1; + *((_BYTE *)v107 + v59) = 0; +LABEL_123: + v51 = v99; + v52 = *(_DWORD *)(v99 + 8); + v53 = *(_DWORD *)(v99 + 12); + if ( v52 >= v53 ) + goto LABEL_132; + goto LABEL_124; + } + v86 = 0; + v91 = *(_BYTE *)(v7 + 16); +LABEL_63: + if ( v36 ) + { + v106 = v36 + 1; + if ( v37 == v109 ) + v44 = 15; + else + v44 = v109[0]; + if ( v106 > v44 ) + { + std::string::_M_mutate((int)&v107, v36, 0, 0, 1u); + v37 = (int *)v107; + } + *((_BYTE *)v37 + v36) = v93; + v108 = v36 + 1; + *((_BYTE *)v107 + v106) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v7 + 8), *(_DWORD *)(v7 + 12), (int)&v107) ) + *a6 = 4; + v37 = (int *)v107; + if ( v104 || v108 | v93 ) + goto LABEL_104; +LABEL_66: + *a7 = 0; + a7[1] = 0; + *a6 = 4; + } + else + { + if ( !v93 && !v104 ) + goto LABEL_66; +LABEL_104: + if ( v91 ) + goto LABEL_66; + if ( v87 ) + { + v45 = 0; + v46 = 0x80000000; + if ( !v85 ) + { + v45 = -1; + v46 = 0x7FFFFFFF; + } + *a7 = v45; + a7[1] = v46; + *a6 = 4; + } + else + { + if ( v85 ) + db = -(__int64)db; + *(_QWORD *)a7 = db; + } + } + if ( v86 ) + *a6 |= 2u; + if ( v37 != v109 ) + operator delete(v37); + return v99; +} +// 461D4F: variable 'v79' is possibly undefined +// 461DBE: variable 'v80' is possibly undefined +// 4E95A8: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (00462160) -------------------------------------------------------- +unsigned int __stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + unsigned int v7; // ebx + std::locale::_Impl **v8; // edi + int v9; // edi + int v10; // eax + char v11; // dl + char v12; // si + char v13; // dl + char v14; // al + unsigned int v15; // eax + unsigned int v16; // edx + unsigned int v17; // eax + char v18; // dl + _DWORD *v19; // edx + char v20; // bl + unsigned int v21; // esi + unsigned int v22; // eax + unsigned int v23; // edx + unsigned int v24; // eax + bool v25; // dl + char v26; // dl + _DWORD *v27; // eax + unsigned __int64 v28; // kr00_8 + int v29; // ecx + unsigned int v30; // eax + unsigned int v31; // edx + unsigned int v32; // eax + unsigned __int8 v33; // di + bool v34; // si + char v35; // si + size_t v36; // esi + int *v37; // eax + bool v39; // al + char *v40; // eax + char *v41; // eax + unsigned int v42; // edi + unsigned int v43; // edx + _DWORD *v44; // eax + _BYTE *v45; // eax + int v46; // ecx + unsigned int v47; // eax + unsigned int v48; // edx + unsigned int v49; // eax + char v50; // di + bool v51; // si + char v52; // si + char *v53; // eax + size_t v54; // edi + unsigned int v55; // edx + int v56; // eax + char *v57; // eax + char *v58; // eax + _DWORD *v59; // eax + int v60; // eax + _DWORD *v61; // eax + _DWORD *v62; // eax + int v63; // eax + _DWORD *v64; // eax + int v65; // eax + int v66; // eax + int v67; // eax + int v68; // eax + int v69; // eax + int v70; // eax + int v71; // eax + int v72; // eax + char v73; // cl + int v74; // eax + void (__cdecl *v75)(void *); // [esp+4h] [ebp-84h] + unsigned int v76; // [esp+8h] [ebp-80h] + size_t MaxCount; // [esp+10h] [ebp-78h] + int Buf; // [esp+14h] [ebp-74h] + void *Bufa; // [esp+14h] [ebp-74h] + bool v80; // [esp+21h] [ebp-67h] + char v81; // [esp+22h] [ebp-66h] + char v82; // [esp+23h] [ebp-65h] + char v83; // [esp+24h] [ebp-64h] + int v84; // [esp+28h] [ebp-60h] + __int64 v85; // [esp+28h] [ebp-60h] + int v86; // [esp+30h] [ebp-58h] + char v87; // [esp+34h] [ebp-54h] + bool v88; // [esp+34h] [ebp-54h] + std::locale::_Impl *v89; // [esp+38h] [ebp-50h] + unsigned __int8 v90; // [esp+38h] [ebp-50h] + std::locale::_Impl *v91; // [esp+38h] [ebp-50h] + _DWORD *v92; // [esp+3Ch] [ebp-4Ch] + int v93; // [esp+40h] [ebp-48h] + bool v94; // [esp+40h] [ebp-48h] + char v95; // [esp+40h] [ebp-48h] + unsigned __int8 v96; // [esp+40h] [ebp-48h] + std::locale::_Impl *i; // [esp+40h] [ebp-48h] + unsigned __int64 v98; // [esp+40h] [ebp-48h] + bool v99; // [esp+48h] [ebp-40h] + bool v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = (unsigned int)a1; + v92 = a3; + v93 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (std::locale::_Impl **)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v93); + v89 = *v8; + if ( !*v8 ) + { + v59 = operator new((struct type_info *)0x68, v75); + v59[1] = 0; + *v59 = &off_4F65A0; + v59[2] = 0; + v59[3] = 0; + *((_BYTE *)v59 + 16) = 0; + v59[5] = 0; + v59[6] = 0; + v59[7] = 0; + v59[8] = 0; + *((_WORD *)v59 + 18) = 0; + *((_BYTE *)v59 + 100) = 0; + v91 = (std::locale::_Impl *)v59; + std::__numpunct_cache::_M_cache((int)v59, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v91, (const std::locale::facet *)v93, v76); + v89 = *v8; + } + v9 = 8; + v10 = *(_DWORD *)(a5 + 12) & 0x4A; + v84 = v10; + if ( v10 != 64 ) + v9 = v10 == 8 ? 16 : 10; + v94 = a2 == -1 && a1 != 0; + if ( v94 ) + { + if ( a1[2] >= a1[3] ) + { + v71 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v95 = v71 == -1 && v94; + v7 = v71 == -1 ? 0 : (unsigned int)a1; + } + else + { + v95 = 0; + } + } + else + { + v95 = a2 == -1; + } + v100 = a4 == -1; + if ( v100 && a3 != 0 ) + { + if ( a3[2] >= a3[3] ) + { + v70 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v11 = v70 == -1 && v100 && a3 != 0; + v92 = v70 == -1 ? 0 : a3; + } + else + { + v11 = 0; + } + } + else + { + v11 = a4 == -1; + } + if ( v95 == v11 ) + { + v80 = 0; + v12 = 0; + v83 = 1; + v86 = 0; + v99 = 0; + goto LABEL_43; + } + if ( v7 && a2 == -1 ) + { + v57 = *(char **)(v7 + 8); + if ( (unsigned int)v57 >= *(_DWORD *)(v7 + 12) ) + { + v72 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v12 = v72 != -1 ? v72 : -1; + v7 &= (v72 == -1) - 1; + } + else + { + v12 = *v57; + } + } + else + { + v12 = a2; + } + v13 = *((_BYTE *)v89 + 74); + v14 = *((_BYTE *)v89 + 16); + v80 = v13 == v12; + if ( v13 == v12 || *((_BYTE *)v89 + 75) == v12 ) + { + if ( (!v14 || *((_BYTE *)v89 + 37) != v12) && *((_BYTE *)v89 + 36) != v12 ) + { + v15 = *(_DWORD *)(v7 + 8); + v16 = *(_DWORD *)(v7 + 12); + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v17 = *(_DWORD *)(v7 + 8); + v16 = *(_DWORD *)(v7 + 12); + } + else + { + v17 = v15 + 1; + *(_DWORD *)(v7 + 8) = v17; + } + v96 = 0; + if ( v17 >= v16 ) + { + v96 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v96 - 1; + } + if ( v100 && v92 != 0 ) + { + if ( v92[2] >= v92[3] ) + { + v74 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); + v18 = v74 == -1 && v100 && v92 != 0; + v92 = v74 == -1 ? 0 : v92; + } + else + { + v18 = 0; + } + } + else + { + v18 = a4 == -1; + } + if ( v96 == v18 ) + { + v83 = 1; + v86 = 0; + v99 = 0; + if ( v9 != 16 ) + goto LABEL_44; + goto LABEL_25; + } + v12 = -1; + if ( v7 ) + { + v58 = *(char **)(v7 + 8); + if ( (unsigned int)v58 >= *(_DWORD *)(v7 + 12) ) + { + v66 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v12 = v66 != -1 ? v66 : -1; + v7 &= (v66 == -1) - 1; + } + else + { + v12 = *v58; + } + } + v14 = *((_BYTE *)v89 + 16); + } + } + else + { + v80 = 0; + } + v86 = 0; + v19 = (_DWORD *)v7; + v20 = v12; + v99 = 0; + v21 = (unsigned int)v19; + for ( i = v89; ; v14 = *((_BYTE *)i + 16) ) + { + if ( v14 && *((_BYTE *)i + 37) == v20 || *((_BYTE *)i + 36) == v20 ) + { +LABEL_111: + v83 = 0; + v89 = i; + v44 = (_DWORD *)v21; + v12 = v20; + v7 = (unsigned int)v44; + goto LABEL_43; + } + if ( *((_BYTE *)i + 78) != v20 ) + { + if ( !v99 ) + goto LABEL_111; +LABEL_33: + if ( *((_BYTE *)i + 76) != v20 && *((_BYTE *)i + 77) != v20 ) + { + v83 = 0; + v89 = i; + v61 = (_DWORD *)v21; + v12 = v20; + v99 = 1; + v7 = (unsigned int)v61; + goto LABEL_43; + } + if ( v84 != 0 && v9 != 16 ) + { + v83 = 0; + v89 = i; + v62 = (_DWORD *)v21; + v12 = v20; + MaxCount = v9; + v7 = (unsigned int)v62; + Buf = v9; + v99 = 1; + goto LABEL_45; + } + v86 = 0; + v9 = 16; + v99 = 0; +LABEL_37: + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_73; + } + v39 = !v99 || v9 == 10; + if ( !v39 ) + goto LABEL_33; + v99 = v84 == 0 || v9 == 8; + if ( !v99 ) + { + ++v86; + v99 = v39; + goto LABEL_37; + } + v22 = *(_DWORD *)(v21 + 8); + v23 = *(_DWORD *)(v21 + 12); + v9 = 8; + v86 = 0; + if ( v22 < v23 ) + { +LABEL_38: + v24 = v22 + 1; + v90 = 0; + *(_DWORD *)(v21 + 8) = v24; + if ( v24 < v23 ) + goto LABEL_39; + goto LABEL_74; + } +LABEL_73: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 40))(v21); + v90 = 0; + if ( *(_DWORD *)(v21 + 8) < *(_DWORD *)(v21 + 12) ) + { +LABEL_39: + v25 = v100 && v92 != 0; + if ( !v25 ) + goto LABEL_40; + goto LABEL_75; + } +LABEL_74: + v90 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21) == -1; + v21 &= v90 - 1; + v25 = v100 && v92 != 0; + if ( !v25 ) + { +LABEL_40: + v26 = a4 == -1; + goto LABEL_41; + } +LABEL_75: + if ( v92[2] >= v92[3] ) + { + v88 = v25; + v56 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); + v26 = v56 == -1 && v88; + v92 = v56 == -1 ? 0 : v92; +LABEL_41: + if ( v26 == v90 ) + goto LABEL_42; + goto LABEL_77; + } + if ( !v90 ) + { +LABEL_42: + v83 = 1; + v89 = i; + v27 = (_DWORD *)v21; + v12 = v20; + v7 = (unsigned int)v27; + goto LABEL_43; + } +LABEL_77: + v20 = -1; + if ( v21 ) + { + v40 = *(char **)(v21 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(v21 + 12) ) + { + v63 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v21 + 36))(v21); + v20 = v63 != -1 ? v63 : -1; + v21 &= (v63 == -1) - 1; + } + else + { + v20 = *v40; + } + } + if ( !v99 ) + break; + } + v89 = i; + v64 = (_DWORD *)v21; + v12 = v20; + v83 = 0; + v7 = (unsigned int)v64; +LABEL_43: + if ( v9 == 16 ) + { +LABEL_25: + MaxCount = 22; + Buf = 22; + goto LABEL_45; + } +LABEL_44: + MaxCount = v9; + Buf = v9; +LABEL_45: + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( *((_BYTE *)v89 + 16) ) + std::string::reserve(&v101, 0x20u); + v85 = v9; + v28 = 0xFFFFFFFFFFFFFFFFLL / v9; + v81 = *((_BYTE *)v89 + 100); + if ( !v81 ) + { + if ( v83 ) + { + v73 = v83; + v36 = v102; + v82 = 0; + v83 = 0; + v37 = (int *)v101; + v81 = v73; + v98 = 0LL; + goto LABEL_61; + } + v82 = 0; + v98 = 0LL; + while ( 2 ) + { + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v12 - 48) <= 9u ) + goto LABEL_53; + if ( (unsigned __int8)(v12 - 97) > 5u ) + { + if ( (unsigned __int8)(v12 - 65) > 5u ) + goto LABEL_110; + v29 = v12 - 55; + goto LABEL_54; + } + v29 = v12 - 87; + if ( v28 >= v98 ) + goto LABEL_85; +LABEL_55: + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + v82 = 1; + if ( v30 < v31 ) + goto LABEL_56; +LABEL_86: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v33 = 0; + if ( *(_DWORD *)(v7 + 12) <= *(_DWORD *)(v7 + 8) ) + goto LABEL_87; +LABEL_57: + v34 = v100 && v92 != 0; + if ( !v34 ) + goto LABEL_58; +LABEL_88: + if ( v92[2] >= v92[3] ) + { + v60 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); + v92 = v60 == -1 ? 0 : v92; + v35 = v60 == -1 && v34; + goto LABEL_59; + } + if ( !v33 ) + { +LABEL_60: + v36 = v102; + v37 = (int *)v101; + v81 = 1; + goto LABEL_61; + } + } + else + { + if ( v12 <= 47 || (char)(Buf + 48) <= v12 ) + goto LABEL_110; +LABEL_53: + v29 = v12 - 48; +LABEL_54: + if ( v28 < v98 ) + goto LABEL_55; +LABEL_85: + v82 |= __PAIR64__(~(v29 >> 31), ~v29) < v85 * v98; + v30 = *(_DWORD *)(v7 + 8); + v31 = *(_DWORD *)(v7 + 12); + ++v86; + v98 = v85 * v98 + v29; + if ( v30 >= v31 ) + goto LABEL_86; +LABEL_56: + v32 = v30 + 1; + v33 = 0; + *(_DWORD *)(v7 + 8) = v32; + if ( v31 > v32 ) + goto LABEL_57; +LABEL_87: + v33 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7) == -1; + v7 &= v33 - 1; + v34 = v100 && v92 != 0; + if ( v34 ) + goto LABEL_88; +LABEL_58: + v35 = a4 == -1; +LABEL_59: + if ( v35 == v33 ) + goto LABEL_60; + } + if ( v7 ) + { + v41 = *(char **)(v7 + 8); + if ( (unsigned int)v41 >= *(_DWORD *)(v7 + 12) ) + { + v67 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v12 = v67 != -1 ? v67 : -1; + v7 &= (v67 == -1) - 1; + } + else + { + v12 = *v41; + } + } + else + { + v12 = -1; + } + continue; + } + } + if ( v83 ) + { + v36 = v102; + v98 = 0LL; + v37 = (int *)v101; + v81 = v83; + v82 = 0; + v83 = 0; + goto LABEL_61; + } + v82 = 0; + v98 = 0LL; + Bufa = (char *)v89 + 78; + while ( 2 ) + { + if ( !*((_BYTE *)v89 + 16) || *((_BYTE *)v89 + 37) != v12 ) + { + if ( v12 == *((_BYTE *)v89 + 36) || (v45 = memchr(Bufa, v12, MaxCount)) == 0 ) + { +LABEL_110: + v36 = v102; + v37 = (int *)v101; + v81 = 0; + goto LABEL_61; + } + v46 = v45 - (_BYTE *)Bufa; + if ( v45 - (_BYTE *)Bufa > 15 ) + v46 -= 6; + if ( v28 >= v98 ) + { + v82 |= __PAIR64__(~(v46 >> 31), ~v46) < v85 * v98; + ++v86; + v98 = v85 * v98 + v46; + goto LABEL_122; + } + v48 = *(_DWORD *)(v7 + 12); + v82 = v81; + v47 = *(_DWORD *)(v7 + 8); + if ( v47 >= v48 ) + { +LABEL_131: + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 40))(v7); + v49 = *(_DWORD *)(v7 + 8); + v48 = *(_DWORD *)(v7 + 12); + goto LABEL_124; + } +LABEL_123: + v49 = v47 + 1; + *(_DWORD *)(v7 + 8) = v49; +LABEL_124: + v50 = 0; + if ( v48 <= v49 ) + { + v69 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v50 = v69 != -1 ? 0 : v81; + v7 &= (v69 == -1) - 1; + } + v51 = v100 && v92 != 0; + if ( v51 ) + { + if ( v92[2] >= v92[3] ) + { + v68 = (*(int (__fastcall **)(_DWORD *))(*v92 + 36))(v92); + v92 = v68 == -1 ? 0 : v92; + v52 = v68 == -1 && v51; + } + else + { + v52 = 0; + } + } + else + { + v52 = a4 == -1; + } + if ( v50 == v52 ) + { + v36 = v102; + v37 = (int *)v101; + goto LABEL_61; + } + if ( v7 ) + { + v53 = *(char **)(v7 + 8); + if ( (unsigned int)v53 >= *(_DWORD *)(v7 + 12) ) + { + v65 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v7 + 36))(v7); + v12 = v65 != -1 ? v65 : -1; + v7 &= (v65 == -1) - 1; + } + else + { + v12 = *v53; + } + } + else + { + v12 = -1; + } + continue; + } + break; + } + v36 = v102; + v37 = (int *)v101; + if ( v86 ) + { + v54 = v102 + 1; + v87 = v86; + if ( v101 == v103 ) + v55 = 15; + else + v55 = v103[0]; + if ( v54 > v55 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v37 = (int *)v101; + } + v86 = 0; + *((_BYTE *)v37 + v36) = v87; + v102 = v36 + 1; + *((_BYTE *)v101 + v54) = 0; +LABEL_122: + v47 = *(_DWORD *)(v7 + 8); + v48 = *(_DWORD *)(v7 + 12); + if ( v47 >= v48 ) + goto LABEL_131; + goto LABEL_123; + } + v81 = 0; + v83 = *((_BYTE *)v89 + 16); +LABEL_61: + if ( v36 ) + { + v42 = v36 + 1; + if ( v37 == v103 ) + v43 = 15; + else + v43 = v103[0]; + if ( v42 > v43 ) + { + std::string::_M_mutate((int)&v101, v36, 0, 0, 1u); + v37 = (int *)v101; + } + *((_BYTE *)v37 + v36) = v86; + v102 = v36 + 1; + *((_BYTE *)v101 + v42) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*((char **)v89 + 2), *((_DWORD *)v89 + 3), (int)&v101) ) + *a6 = 4; + v37 = (int *)v101; + if ( v99 || v102 | v86 ) + goto LABEL_103; +LABEL_64: + *a7 = 0; + a7[1] = 0; + *a6 = 4; + } + else + { + if ( !v86 && !v99 ) + goto LABEL_64; +LABEL_103: + if ( v83 ) + goto LABEL_64; + if ( v82 ) + { + *a7 = -1; + a7[1] = -1; + *a6 = 4; + } + else + { + if ( v80 ) + v98 = -(__int64)v98; + *(_QWORD *)a7 = v98; + } + } + if ( v81 ) + *a6 |= 2u; + if ( v37 != v103 ) + operator delete(v37); + return v7; +} +// 462B57: variable 'v75' is possibly undefined +// 462BC4: variable 'v76' is possibly undefined +// 4E95A8: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (00462F60) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // eax + unsigned int v10; // edi + char v11; // dl + char v12; // bl + char v13; // bl + int v14; // ebx + char v15; // al + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + char v20; // dl + int v21; // edx + int v22; // edx + _DWORD *v23; // ecx + unsigned int v24; // eax + char v25; // al + char v26; // bl + unsigned int *v27; // ecx + int v28; // ebx + volatile signed __int32 *v29; // ecx + unsigned __int64 result; // rax + bool v31; // al + int v32; // eax + _BYTE *v33; // eax + int v34; // edx + _BYTE *v35; // eax + unsigned int *v36; // edi + unsigned int *v37; // ecx + char v38; // al + _BYTE *v39; // eax + int v40; // eax + _DWORD *v41; // ecx + unsigned int v42; // eax + char v43; // al + char v44; // bl + _BYTE *v45; // eax + int v46; // edx + char v47; // cl + unsigned int *v48; // eax + int v49; // eax + int v50; // eax + _BYTE *v51; // eax + char v52; // al + char v53; // al + std::locale::_Impl *v54; // eax + std::locale::_Impl *v55; // esi + int v56; // eax + char v57; // al + void (__cdecl *v58)(void *); // [esp+4h] [ebp-64h] + unsigned int v59; // [esp+8h] [ebp-60h] + size_t MaxCount; // [esp+18h] [ebp-50h] + char v61; // [esp+1Ch] [ebp-4Ch] + std::string *v62; // [esp+1Ch] [ebp-4Ch] + int Buf; // [esp+20h] [ebp-48h] + std::string *Bufa; // [esp+20h] [ebp-48h] + unsigned int *Bufc; // [esp+20h] [ebp-48h] + void *Bufb; // [esp+20h] [ebp-48h] + unsigned int v67; // [esp+24h] [ebp-44h] + bool v68; // [esp+29h] [ebp-3Fh] + char v69; // [esp+2Ah] [ebp-3Eh] + char v70; // [esp+2Bh] [ebp-3Dh] + char v71; // [esp+2Bh] [ebp-3Dh] + char v72; // [esp+2Bh] [ebp-3Dh] + char v73; // [esp+2Ch] [ebp-3Ch] + int v74; // [esp+2Ch] [ebp-3Ch] + int v75; // [esp+30h] [ebp-38h] + char v76; // [esp+30h] [ebp-38h] + unsigned int v77; // [esp+30h] [ebp-38h] + int v78; // [esp+34h] [ebp-34h] + char v79; // [esp+34h] [ebp-34h] + int *v80; // [esp+38h] [ebp-30h] + char v81; // [esp+38h] [ebp-30h] + bool v82; // [esp+38h] [ebp-30h] + unsigned __int64 v83; // [esp+38h] [ebp-30h] + char v84; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v85[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v80 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v54 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v58); + *((_DWORD *)v54 + 1) = 0; + v55 = v54; + *((_WORD *)v54 + 18) = 0; + *(_DWORD *)v54 = &off_4F65A0; + *((_DWORD *)v54 + 2) = 0; + *((_DWORD *)v54 + 3) = 0; + *((_BYTE *)v54 + 16) = 0; + *((_DWORD *)v54 + 5) = 0; + *((_DWORD *)v54 + 6) = 0; + *((_DWORD *)v54 + 7) = 0; + *((_DWORD *)v54 + 8) = 0; + *((_BYTE *)v54 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v54, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v55, (const std::locale::facet *)v7, v59); + v8 = *v80; + } + v9 = *(_DWORD *)(v6 + 12); + v10 = 8; + v75 = v9 & 0x4A; + if ( v75 != 64 ) + v10 = v75 == 8 ? 16 : 10; + v11 = HIDWORD(a1) == -1; + v12 = v11 & ((_DWORD)a1 != 0); + if ( v12 ) + { + v11 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v50 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = 0; + if ( v50 == -1 ) + { + LODWORD(a1) = 0; + v11 = v12; + } + } + } + v13 = a3 == -1; + v81 = v13 & (a2 != 0); + if ( v81 ) + { + v13 = 0; + if ( a2[2] >= a2[3] ) + { + v79 = v11; + v49 = (*(int (**)(void))(*a2 + 36))(); + v11 = v79; + if ( v49 == -1 ) + { + a2 = 0; + v13 = v81; + } + } + } + if ( v11 == v13 ) + { + v68 = 0; + v16 = *(_BYTE *)(v8 + 16); + LOBYTE(v14) = 0; + v73 = 1; + v78 = 0; + v82 = 0; +LABEL_36: + if ( v10 == 16 ) + { +LABEL_17: + MaxCount = 22; + Buf = 22; + v85[0] = (unsigned int *)&unk_4E93FC; + if ( !v16 ) + goto LABEL_39; + goto LABEL_18; + } +LABEL_37: + MaxCount = v10; + Buf = v10; + goto LABEL_38; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + { +LABEL_9: + v15 = *(_BYTE *)(v8 + 74); + v16 = *(_BYTE *)(v8 + 16); + v68 = v15 == (char)v14; + if ( v15 == (_BYTE)v14 ) + goto LABEL_11; + goto LABEL_10; + } + v51 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ) + { + v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v14 == -1 ) + LODWORD(a1) = 0; + goto LABEL_9; + } + LOBYTE(v14) = *v51; + v52 = *(_BYTE *)(v8 + 74); + v16 = *(_BYTE *)(v8 + 16); + v68 = v52 == (char)v14; + if ( v52 == (_BYTE)v14 ) + { +LABEL_11: + if ( (!v16 || *(_BYTE *)(v8 + 37) != (_BYTE)v14) && *(_BYTE *)(v8 + 36) != (_BYTE)v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 1; + HIDWORD(a1) = -1; + v73 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v73 ) + { + v78 = 0; + v16 = *(_BYTE *)(v8 + 16); + v82 = 0; + if ( v10 == 16 ) + goto LABEL_17; + goto LABEL_37; + } + v53 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v16 = *(_BYTE *)(v8 + 16); + LOBYTE(v14) = v53; + } + goto LABEL_20; + } +LABEL_10: + if ( *(_BYTE *)(v8 + 75) == (_BYTE)v14 ) + goto LABEL_11; + v68 = 0; +LABEL_20: + v78 = 0; + v82 = 0; + v74 = v75; + while ( 1 ) + { + if ( v16 && *(_BYTE *)(v8 + 37) == (_BYTE)v14 || *(_BYTE *)(v8 + 36) == (_BYTE)v14 ) + { +LABEL_68: + v73 = 0; + goto LABEL_36; + } + if ( *(_BYTE *)(v8 + 78) != (_BYTE)v14 ) + break; + v31 = !v82 || v10 == 10; + if ( !v31 ) + goto LABEL_26; + v82 = v74 == 0 || v10 == 8; + if ( !v82 ) + { + ++v78; + v82 = v31; +LABEL_30: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_31; + goto LABEL_64; + } + v18 = (_DWORD *)a1; + v78 = 0; + v10 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_31: + HIDWORD(a1) = -1; + v18[2] = v19 + 1; +LABEL_32: + v76 = 0; + if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) + { + LODWORD(a1) = 0; + v76 = 1; + } + goto LABEL_33; + } +LABEL_64: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_32; + v76 = 1; +LABEL_33: + v20 = a3 == -1; + v70 = v20 & (a2 != 0); + if ( v70 ) + { + v20 = 0; + if ( a2[2] >= a2[3] ) + { + v32 = (*(int (**)(void))(*a2 + 36))(); + v20 = 0; + if ( v32 == -1 ) + { + a2 = 0; + v20 = v70; + } + } + } + if ( v20 == v76 ) + { + v73 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_36; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v35 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) + { + v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v14 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v14) = *v35; + } + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v82 ) + goto LABEL_68; + } + if ( !v82 ) + goto LABEL_68; +LABEL_26: + if ( *(_BYTE *)(v8 + 76) != (_BYTE)v14 && *(_BYTE *)(v8 + 77) != (_BYTE)v14 ) + { + v73 = 0; + v82 = 1; + goto LABEL_36; + } + if ( v10 == 16 || v74 == 0 ) + { + v78 = 0; + v10 = 16; + v82 = 0; + goto LABEL_30; + } + v73 = 0; + MaxCount = v10; + Buf = v10; + v82 = 1; +LABEL_38: + v85[0] = (unsigned int *)&unk_4E93FC; + if ( v16 ) +LABEL_18: + std::string::reserve(v85, (std::string *)0x20, (unsigned int)v58); +LABEL_39: + v67 = 0xFFFFFFFF / v10; + v71 = *(_BYTE *)(v8 + 100); + if ( v71 ) + { + if ( v73 ) + { + v27 = v85[0]; + v77 = 0; + v69 = 0; + v71 = v73; + v28 = *(v85[0] - 3); + v73 = 0; + goto LABEL_53; + } + v69 = 0; + Bufb = (void *)(v8 + 78); + v77 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v14 ) + { + if ( (_BYTE)v14 == *(_BYTE *)(v8 + 36) ) + goto LABEL_103; + v39 = memchr(Bufb, (char)v14, MaxCount); + if ( !v39 ) + goto LABEL_103; + v40 = v39 - (_BYTE *)Bufb; + if ( v40 > 15 ) + v40 -= 6; + if ( v67 >= v77 ) + { + v69 |= ~v40 < v10 * v77; + ++v78; + v77 = v10 * v77 + v40; + goto LABEL_114; + } + v41 = (_DWORD *)a1; + v69 = v71; + v42 = *(_DWORD *)(a1 + 8); + if ( v42 < *(_DWORD *)(a1 + 12) ) + { +LABEL_115: + HIDWORD(a1) = -1; + v41[2] = v42 + 1; + goto LABEL_116; + } +LABEL_121: + (*(void (__fastcall **)(_DWORD *))(*v41 + 40))(v41); + v41 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v61 = v71; + goto LABEL_117; + } +LABEL_116: + v61 = 0; + if ( v41[2] >= v41[3] ) + { + v61 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v41 + 36))(v41) == -1 ) + { + LODWORD(a1) = 0; + v61 = v71; + } + } +LABEL_117: + v43 = a3 == -1; + v44 = v43 & (a2 != 0); + if ( v44 ) + { + v43 = 0; + if ( a2[2] >= a2[3] ) + { + v46 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v43 = 0; + if ( v46 == -1 ) + { + a2 = 0; + v43 = v44; + } + } + } + if ( v61 == v43 ) + { + v27 = v85[0]; + v28 = *(v85[0] - 3); + goto LABEL_53; + } + LOBYTE(v14) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v45 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) + { + v56 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v14) = v56; + if ( v56 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v14) = -1; + } + } + else + { + LOBYTE(v14) = *v45; + } + } + } + v27 = v85[0]; + v28 = *(v85[0] - 3); + if ( !v78 ) + { + v71 = 0; + v73 = *(_BYTE *)(v8 + 16); + goto LABEL_53; + } + v62 = (std::string *)(v28 + 1); + if ( v28 + 1 > *(v85[0] - 2) || *((int *)v85[0] - 1) > 0 ) + std::string::reserve(v85, v62, (unsigned int)v58); + v47 = v78; + v78 = 0; + *((_BYTE *)v85[0] + *(v85[0] - 3)) = v47; + v48 = v85[0]; + if ( (_UNKNOWN *)v85[0] != &unk_4E93FC ) + { + *(v85[0] - 1) = 0; + *(v48 - 3) = (unsigned int)v62; + *((_BYTE *)v48 + v28 + 1) = 0; + } +LABEL_114: + v41 = (_DWORD *)a1; + v42 = *(_DWORD *)(a1 + 8); + if ( v42 < *(_DWORD *)(a1 + 12) ) + goto LABEL_115; + goto LABEL_121; + } + if ( v73 ) + { + v57 = v73; + v27 = v85[0]; + v69 = 0; + v73 = 0; + v71 = v57; + v28 = *(v85[0] - 3); + v77 = 0; + } + else + { + v69 = 0; + v77 = 0; +LABEL_42: + v21 = (char)v14; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v14 - 48) <= 9u ) + goto LABEL_45; + while ( (unsigned __int8)(v14 - 97) <= 5u ) + { + v22 = v21 - 87; + if ( v67 < v77 ) + goto LABEL_47; +LABEL_72: + v69 |= ~v22 < v10 * v77; + v23 = (_DWORD *)a1; + v77 = v22 + v10 * v77; + ++v78; + v24 = *(_DWORD *)(a1 + 8); + if ( v24 < *(_DWORD *)(a1 + 12) ) + goto LABEL_48; +LABEL_73: + (*(void (__fastcall **)(_DWORD *, int))(*v23 + 40))(v23, v22); + v23 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_49; + v72 = 1; +LABEL_50: + v25 = a3 == -1; + v26 = v25 & (a2 != 0); + if ( v26 ) + { + v25 = 0; + if ( a2[2] >= a2[3] ) + { + v34 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v25 = 0; + if ( v34 == -1 ) + { + a2 = 0; + v25 = v26; + } + } + } + if ( v72 == v25 ) + { + v27 = v85[0]; + v71 = 1; + v28 = *(v85[0] - 3); + goto LABEL_53; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_42; + v33 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v14) = *v33; + goto LABEL_42; + } + v21 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v14) = v21; + if ( v21 != -1 ) + goto LABEL_42; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_103; + LOBYTE(v14) = -1; + } + if ( (unsigned __int8)(v14 - 65) <= 5u ) + { + v22 = v21 - 55; + goto LABEL_46; + } + } + else if ( (char)v14 > 47 && (char)(Buf + 48) > (char)v14 ) + { +LABEL_45: + v22 = (char)v14 - 48; +LABEL_46: + if ( v67 >= v77 ) + goto LABEL_72; +LABEL_47: + v23 = (_DWORD *)a1; + v69 = 1; + v24 = *(_DWORD *)(a1 + 8); + if ( v24 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_73; +LABEL_48: + HIDWORD(a1) = -1; + v23[2] = v24 + 1; +LABEL_49: + v72 = 0; + if ( v23[2] >= v23[3] ) + { + v72 = 0; + if ( (*(int (__fastcall **)(_DWORD *, int))(*v23 + 36))(v23, v22) == -1 ) + { + LODWORD(a1) = 0; + v72 = 1; + } + } + goto LABEL_50; + } +LABEL_103: + v27 = v85[0]; + v28 = *(v85[0] - 3); + v71 = 0; + } +LABEL_53: + if ( v28 ) + { + Bufa = (std::string *)(v28 + 1); + if ( v28 + 1 > *(v27 - 2) || (int)*(v27 - 1) > 0 ) + std::string::reserve(v85, Bufa, (unsigned int)v58); + *((_BYTE *)v85[0] + *(v85[0] - 3)) = v78; + v36 = v85[0]; + v37 = v85[0] - 3; + if ( (_UNKNOWN *)v85[0] != &unk_4E93FC ) + { + *(v85[0] - 1) = 0; + *(v36 - 3) = (unsigned int)Bufa; + *((_BYTE *)v37 + v28 + 13) = 0; + v36 = v85[0]; + v37 = v85[0] - 3; + } + Bufc = v37; + v38 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v85); + v29 = (volatile signed __int32 *)Bufc; + if ( !v38 ) + *a5 = 4; + if ( v78 || v82 || *(v36 - 3) ) + goto LABEL_97; +LABEL_56: + *a6 = 0; + *a5 = 4; + } + else + { + v29 = (volatile signed __int32 *)(v27 - 3); + if ( !v78 && !v82 ) + goto LABEL_56; +LABEL_97: + if ( v73 ) + goto LABEL_56; + if ( v69 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v68 ) + v77 = -v77; + *a6 = v77; + } + } + if ( v71 ) + *a5 |= 2u; + result = a1; + if ( v29 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v83 = a1; + std::string::_Rep::_M_dispose(v29, (int)&v84); + return v83; + } + return result; +} +// 4638B7: variable 'v58' is possibly undefined +// 46391D: variable 'v59' is possibly undefined +// 463932: variable 'v22' is possibly undefined +// 4E9608: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (00463B20) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + unsigned int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // bl + char v11; // dl + char v12; // dl + int v13; // ebx + char v14; // al + char v15; // cl + unsigned int v16; // eax + _DWORD *v17; // ecx + unsigned int v18; // eax + char v19; // dl + int v20; // edx + int v21; // edx + _DWORD *v22; // ecx + unsigned int v23; // eax + char v24; // al + char v25; // bl + unsigned int *v26; // edx + int v27; // ebx + unsigned __int64 v28; // kr00_8 + bool v30; // al + int v31; // eax + _BYTE *v32; // eax + int v33; // edx + _BYTE *v34; // eax + int v35; // eax + _BYTE *v36; // eax + int v37; // eax + _DWORD *v38; // ecx + unsigned int v39; // eax + char v40; // al + char v41; // bl + _BYTE *v42; // eax + int v43; // edx + char v44; // cl + unsigned int *v45; // eax + int v46; // eax + _BYTE *v47; // eax + char v48; // al + char v49; // al + int v50; // eax + char v51; // al + unsigned int v52; // [esp+4h] [ebp-64h] + bool v53; // [esp+18h] [ebp-50h] + size_t MaxCount; // [esp+1Ch] [ebp-4Ch] + char v55; // [esp+20h] [ebp-48h] + std::string *v56; // [esp+20h] [ebp-48h] + unsigned int v57; // [esp+24h] [ebp-44h] + int Buf; // [esp+28h] [ebp-40h] + void *Bufa; // [esp+28h] [ebp-40h] + unsigned int v60; // [esp+2Ch] [ebp-3Ch] + char v61; // [esp+30h] [ebp-38h] + int v62; // [esp+30h] [ebp-38h] + int v63; // [esp+34h] [ebp-34h] + char v64; // [esp+34h] [ebp-34h] + unsigned int v65; // [esp+34h] [ebp-34h] + int v66; // [esp+38h] [ebp-30h] + char v67; // [esp+3Dh] [ebp-2Bh] + char v68; // [esp+3Eh] [ebp-2Ah] + char v69; // [esp+3Eh] [ebp-2Ah] + char v70; // [esp+3Eh] [ebp-2Ah] + char v71; // [esp+3Fh] [ebp-29h] + bool v72; // [esp+3Fh] [ebp-29h] + char v73; // [esp+3Fh] [ebp-29h] + char v74; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v75[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = 8; + v7 = a4; + v8 = std::__use_cache>::operator()((int *)(a4 + 108)); + v9 = *(_DWORD *)(v7 + 12) & 0x4A; + v63 = v9; + if ( v9 != 64 ) + v6 = v9 == 8 ? 16 : 10; + v10 = HIDWORD(a1) == -1; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v10 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v73 = v11; + if ( (*(int (**)(void))(*(_DWORD *)a1 + 36))() == -1 ) + { + LODWORD(a1) = 0; + v10 = v73; + } + } + } + v12 = a3 == -1; + v71 = v12 & (a2 != 0); + if ( v71 ) + { + v12 = 0; + if ( a2[2] >= a2[3] ) + { + v46 = (*(int (**)(void))(*a2 + 36))(); + v12 = 0; + if ( v46 == -1 ) + { + a2 = 0; + v12 = v71; + } + } + } + if ( v12 == v10 ) + { + v53 = 0; + v15 = *(_BYTE *)(v8 + 16); + LOBYTE(v13) = 0; + v61 = 1; + v66 = 0; + v72 = 0; +LABEL_34: + if ( v6 == 16 ) + { +LABEL_15: + MaxCount = 22; + Buf = 22; + v75[0] = (unsigned int *)&unk_4E93FC; + if ( !v15 ) + goto LABEL_37; + goto LABEL_16; + } +LABEL_35: + MaxCount = v6; + Buf = v6; + goto LABEL_36; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + { +LABEL_7: + v14 = *(_BYTE *)(v8 + 74); + v15 = *(_BYTE *)(v8 + 16); + v53 = v14 == (char)v13; + if ( v14 == (_BYTE)v13 ) + goto LABEL_9; + goto LABEL_8; + } + v47 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) + { + v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v13 == -1 ) + LODWORD(a1) = 0; + goto LABEL_7; + } + LOBYTE(v13) = *v47; + v48 = *(_BYTE *)(v8 + 74); + v15 = *(_BYTE *)(v8 + 16); + v53 = v48 == (char)v13; + if ( v48 == (_BYTE)v13 ) + { +LABEL_9: + if ( (!v15 || *(_BYTE *)(v8 + 37) != (_BYTE)v13) && *(_BYTE *)(v8 + 36) != (_BYTE)v13 ) + { + v16 = *(_DWORD *)(a1 + 8); + if ( v16 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v16 + 1; + HIDWORD(a1) = -1; + v61 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v61 ) + { + v66 = 0; + v15 = *(_BYTE *)(v8 + 16); + v72 = 0; + if ( v6 == 16 ) + goto LABEL_15; + goto LABEL_35; + } + v49 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v15 = *(_BYTE *)(v8 + 16); + LOBYTE(v13) = v49; + } + goto LABEL_18; + } +LABEL_8: + if ( *(_BYTE *)(v8 + 75) == (_BYTE)v13 ) + goto LABEL_9; + v53 = 0; +LABEL_18: + v66 = 0; + v72 = 0; + v62 = v63; + while ( 1 ) + { + if ( v15 && *(_BYTE *)(v8 + 37) == (_BYTE)v13 || *(_BYTE *)(v8 + 36) == (_BYTE)v13 ) + { +LABEL_66: + v61 = 0; + goto LABEL_34; + } + if ( *(_BYTE *)(v8 + 78) != (_BYTE)v13 ) + break; + v30 = !v72 || v6 == 10; + if ( !v30 ) + goto LABEL_24; + v72 = v62 == 0 || v6 == 8; + if ( !v72 ) + { + ++v66; + v72 = v30; +LABEL_28: + v17 = (_DWORD *)a1; + v18 = *(_DWORD *)(a1 + 8); + if ( v18 < *(_DWORD *)(a1 + 12) ) + goto LABEL_29; + goto LABEL_62; + } + v17 = (_DWORD *)a1; + v66 = 0; + v6 = 8; + v18 = *(_DWORD *)(a1 + 8); + if ( v18 < *(_DWORD *)(a1 + 12) ) + { +LABEL_29: + HIDWORD(a1) = -1; + v17[2] = v18 + 1; +LABEL_30: + v64 = 0; + if ( v17[2] >= v17[3] && (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17) == -1 ) + { + LODWORD(a1) = 0; + v64 = 1; + } + goto LABEL_31; + } +LABEL_62: + (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); + v17 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_30; + v64 = 1; +LABEL_31: + v19 = a3 == -1; + v68 = v19 & (a2 != 0); + if ( v68 ) + { + v19 = 0; + if ( a2[2] >= a2[3] ) + { + v31 = (*(int (**)(void))(*a2 + 36))(); + v19 = 0; + if ( v31 == -1 ) + { + a2 = 0; + v19 = v68; + } + } + } + if ( v19 == v64 ) + { + v61 = 1; + v15 = *(_BYTE *)(v8 + 16); + goto LABEL_34; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v34 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) + { + v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v13 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v13) = *v34; + } + } + v15 = *(_BYTE *)(v8 + 16); + if ( !v72 ) + goto LABEL_66; + } + if ( !v72 ) + goto LABEL_66; +LABEL_24: + if ( *(_BYTE *)(v8 + 76) != (_BYTE)v13 && *(_BYTE *)(v8 + 77) != (_BYTE)v13 ) + { + v61 = 0; + v72 = 1; + goto LABEL_34; + } + if ( v62 == 0 || v6 == 16 ) + { + v66 = 0; + v6 = 16; + v72 = 0; + goto LABEL_28; + } + v61 = 0; + MaxCount = v6; + Buf = v6; + v72 = 1; +LABEL_36: + v75[0] = (unsigned int *)&unk_4E93FC; + if ( v15 ) +LABEL_16: + std::string::reserve(v75, (std::string *)0x20, v52); +LABEL_37: + v57 = v53 + 0x7FFFFFFF; + v60 = v57 / v6; + v69 = *(_BYTE *)(v8 + 100); + if ( v69 ) + { + if ( v61 ) + { + v26 = v75[0]; + v65 = 0; + v67 = 0; + v69 = v61; + v27 = *(v75[0] - 3); + v61 = 0; + goto LABEL_51; + } + v67 = 0; + Bufa = (void *)(v8 + 78); + v65 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v13 ) + { + if ( (_BYTE)v13 == *(_BYTE *)(v8 + 36) ) + goto LABEL_97; + v36 = memchr(Bufa, (char)v13, MaxCount); + if ( !v36 ) + goto LABEL_97; + v37 = v36 - (_BYTE *)Bufa; + if ( v37 > 15 ) + v37 -= 6; + if ( v60 >= v65 ) + { + v67 |= v57 - v37 < v6 * v65; + ++v66; + v65 = v6 * v65 + v37; + goto LABEL_108; + } + v38 = (_DWORD *)a1; + v67 = v69; + v39 = *(_DWORD *)(a1 + 8); + if ( v39 < *(_DWORD *)(a1 + 12) ) + { +LABEL_109: + HIDWORD(a1) = -1; + v38[2] = v39 + 1; + goto LABEL_110; + } +LABEL_115: + (*(void (__fastcall **)(_DWORD *))(*v38 + 40))(v38); + v38 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v55 = v69; + goto LABEL_111; + } +LABEL_110: + v55 = 0; + if ( v38[2] >= v38[3] ) + { + v55 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v38 + 36))(v38) == -1 ) + { + LODWORD(a1) = 0; + v55 = v69; + } + } +LABEL_111: + v40 = a3 == -1; + v41 = v40 & (a2 != 0); + if ( v41 ) + { + v40 = 0; + if ( a2[2] >= a2[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v40 = 0; + if ( v43 == -1 ) + { + a2 = 0; + v40 = v41; + } + } + } + if ( v55 == v40 ) + { + v26 = v75[0]; + v27 = *(v75[0] - 3); + goto LABEL_51; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v42 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v42 >= *(_DWORD *)(a1 + 12) ) + { + v50 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v13) = v50; + if ( v50 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v13) = -1; + } + } + else + { + LOBYTE(v13) = *v42; + } + } + } + v26 = v75[0]; + v27 = *(v75[0] - 3); + if ( !v66 ) + { + v69 = 0; + v61 = *(_BYTE *)(v8 + 16); + goto LABEL_51; + } + v56 = (std::string *)(v27 + 1); + if ( v27 + 1 > *(v75[0] - 2) || *((int *)v75[0] - 1) > 0 ) + std::string::reserve(v75, v56, v52); + v44 = v66; + v66 = 0; + *((_BYTE *)v75[0] + *(v75[0] - 3)) = v44; + v45 = v75[0]; + if ( (_UNKNOWN *)v75[0] != &unk_4E93FC ) + { + *(v75[0] - 1) = 0; + *(v45 - 3) = (unsigned int)v56; + *((_BYTE *)v45 + v27 + 1) = 0; + } +LABEL_108: + v38 = (_DWORD *)a1; + v39 = *(_DWORD *)(a1 + 8); + if ( v39 < *(_DWORD *)(a1 + 12) ) + goto LABEL_109; + goto LABEL_115; + } + if ( v61 ) + { + v51 = v61; + v26 = v75[0]; + v67 = 0; + v61 = 0; + v69 = v51; + v27 = *(v75[0] - 3); + v65 = 0; + } + else + { + v67 = 0; + v65 = 0; +LABEL_40: + v20 = (char)v13; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v13 - 48) <= 9u ) + goto LABEL_43; + while ( (unsigned __int8)(v13 - 97) <= 5u ) + { + v21 = v20 - 87; + if ( v60 < v65 ) + goto LABEL_45; +LABEL_70: + v67 |= v57 - v21 < v6 * v65; + v22 = (_DWORD *)a1; + v65 = v21 + v6 * v65; + ++v66; + v23 = *(_DWORD *)(a1 + 8); + if ( v23 < *(_DWORD *)(a1 + 12) ) + goto LABEL_46; +LABEL_71: + (*(void (__fastcall **)(_DWORD *, int))(*v22 + 40))(v22, v21); + v22 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_47; + v70 = 1; +LABEL_48: + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v24 = 0; + if ( a2[2] >= a2[3] ) + { + v33 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v24 = 0; + if ( v33 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + } + if ( v70 == v24 ) + { + v26 = v75[0]; + v69 = 1; + v27 = *(v75[0] - 3); + goto LABEL_51; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_40; + v32 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v32 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v13) = *v32; + goto LABEL_40; + } + v20 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v13) = v20; + if ( v20 != -1 ) + goto LABEL_40; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_97; + LOBYTE(v13) = -1; + } + if ( (unsigned __int8)(v13 - 65) <= 5u ) + { + v21 = v20 - 55; + goto LABEL_44; + } + } + else if ( (char)v13 > 47 && (char)(Buf + 48) > (char)v13 ) + { +LABEL_43: + v21 = (char)v13 - 48; +LABEL_44: + if ( v60 >= v65 ) + goto LABEL_70; +LABEL_45: + v22 = (_DWORD *)a1; + v67 = 1; + v23 = *(_DWORD *)(a1 + 8); + if ( v23 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_71; +LABEL_46: + HIDWORD(a1) = -1; + v22[2] = v23 + 1; +LABEL_47: + v70 = 0; + if ( v22[2] >= v22[3] ) + { + v70 = 0; + if ( (*(int (__fastcall **)(_DWORD *, int))(*v22 + 36))(v22, v21) == -1 ) + { + LODWORD(a1) = 0; + v70 = 1; + } + } + goto LABEL_48; + } +LABEL_97: + v26 = v75[0]; + v27 = *(v75[0] - 3); + v69 = 0; + } +LABEL_51: + if ( v27 ) + { + std::string::push_back(v75, (std::string *)(char)v66, v52); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v75) ) + *a5 = 4; + v26 = v75[0]; + if ( v66 || v72 || *(v75[0] - 3) ) + goto LABEL_91; +LABEL_54: + *a6 = 0; + *a5 = 4; + } + else + { + if ( !v66 && !v72 ) + goto LABEL_54; +LABEL_91: + if ( v61 ) + goto LABEL_54; + if ( v67 ) + { + *a6 = v53 + 0x7FFFFFFF; + *a5 = 4; + } + else + { + v35 = v65; + if ( v53 ) + v35 = -v65; + *a6 = v35; + } + } + if ( v69 ) + *a5 |= 2u; + v28 = a1; + if ( v26 == (unsigned int *)&unk_4E93FC ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v26 - 3, (int)&v74); + return v28; +} +// 463C53: variable 'v52' is possibly undefined +// 464412: variable 'v21' is possibly undefined + +//----- (004645A0) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // eax + unsigned int v10; // edi + char v11; // dl + char v12; // bl + char v13; // bl + int v14; // ebx + char v15; // al + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + char v20; // dl + int v21; // edx + int v22; // edx + _DWORD *v23; // ecx + unsigned int v24; // eax + char v25; // al + char v26; // bl + unsigned int *v27; // ecx + int v28; // ebx + volatile signed __int32 *v29; // ecx + unsigned __int64 result; // rax + bool v31; // al + int v32; // eax + _BYTE *v33; // eax + int v34; // edx + _BYTE *v35; // eax + unsigned int *v36; // edi + unsigned int *v37; // ecx + char v38; // al + _BYTE *v39; // eax + int v40; // eax + _DWORD *v41; // ecx + unsigned int v42; // eax + char v43; // al + char v44; // bl + _BYTE *v45; // eax + int v46; // edx + char v47; // cl + unsigned int *v48; // eax + int v49; // eax + int v50; // eax + _BYTE *v51; // eax + char v52; // al + char v53; // al + std::locale::_Impl *v54; // eax + std::locale::_Impl *v55; // esi + int v56; // eax + char v57; // al + void (__cdecl *v58)(void *); // [esp+4h] [ebp-64h] + unsigned int v59; // [esp+8h] [ebp-60h] + size_t MaxCount; // [esp+18h] [ebp-50h] + char v61; // [esp+1Ch] [ebp-4Ch] + std::string *v62; // [esp+1Ch] [ebp-4Ch] + int Buf; // [esp+20h] [ebp-48h] + std::string *Bufa; // [esp+20h] [ebp-48h] + unsigned int *Bufc; // [esp+20h] [ebp-48h] + void *Bufb; // [esp+20h] [ebp-48h] + unsigned int v67; // [esp+24h] [ebp-44h] + bool v68; // [esp+29h] [ebp-3Fh] + char v69; // [esp+2Ah] [ebp-3Eh] + char v70; // [esp+2Bh] [ebp-3Dh] + char v71; // [esp+2Bh] [ebp-3Dh] + char v72; // [esp+2Bh] [ebp-3Dh] + char v73; // [esp+2Ch] [ebp-3Ch] + int v74; // [esp+2Ch] [ebp-3Ch] + int v75; // [esp+30h] [ebp-38h] + char v76; // [esp+30h] [ebp-38h] + unsigned int v77; // [esp+30h] [ebp-38h] + int v78; // [esp+34h] [ebp-34h] + char v79; // [esp+34h] [ebp-34h] + int *v80; // [esp+38h] [ebp-30h] + char v81; // [esp+38h] [ebp-30h] + bool v82; // [esp+38h] [ebp-30h] + unsigned __int64 v83; // [esp+38h] [ebp-30h] + char v84; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v85[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v80 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v54 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v58); + *((_DWORD *)v54 + 1) = 0; + v55 = v54; + *((_WORD *)v54 + 18) = 0; + *(_DWORD *)v54 = &off_4F65A0; + *((_DWORD *)v54 + 2) = 0; + *((_DWORD *)v54 + 3) = 0; + *((_BYTE *)v54 + 16) = 0; + *((_DWORD *)v54 + 5) = 0; + *((_DWORD *)v54 + 6) = 0; + *((_DWORD *)v54 + 7) = 0; + *((_DWORD *)v54 + 8) = 0; + *((_BYTE *)v54 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v54, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v55, (const std::locale::facet *)v7, v59); + v8 = *v80; + } + v9 = *(_DWORD *)(v6 + 12); + v10 = 8; + v75 = v9 & 0x4A; + if ( v75 != 64 ) + v10 = v75 == 8 ? 16 : 10; + v11 = HIDWORD(a1) == -1; + v12 = v11 & ((_DWORD)a1 != 0); + if ( v12 ) + { + v11 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v50 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = 0; + if ( v50 == -1 ) + { + LODWORD(a1) = 0; + v11 = v12; + } + } + } + v13 = a3 == -1; + v81 = v13 & (a2 != 0); + if ( v81 ) + { + v13 = 0; + if ( a2[2] >= a2[3] ) + { + v79 = v11; + v49 = (*(int (**)(void))(*a2 + 36))(); + v11 = v79; + if ( v49 == -1 ) + { + a2 = 0; + v13 = v81; + } + } + } + if ( v11 == v13 ) + { + v68 = 0; + v16 = *(_BYTE *)(v8 + 16); + LOBYTE(v14) = 0; + v73 = 1; + v78 = 0; + v82 = 0; +LABEL_36: + if ( v10 == 16 ) + { +LABEL_17: + MaxCount = 22; + Buf = 22; + v85[0] = (unsigned int *)&unk_4E93FC; + if ( !v16 ) + goto LABEL_39; + goto LABEL_18; + } +LABEL_37: + MaxCount = v10; + Buf = v10; + goto LABEL_38; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + { +LABEL_9: + v15 = *(_BYTE *)(v8 + 74); + v16 = *(_BYTE *)(v8 + 16); + v68 = v15 == (char)v14; + if ( v15 == (_BYTE)v14 ) + goto LABEL_11; + goto LABEL_10; + } + v51 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v51 >= *(_DWORD *)(a1 + 12) ) + { + v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v14 == -1 ) + LODWORD(a1) = 0; + goto LABEL_9; + } + LOBYTE(v14) = *v51; + v52 = *(_BYTE *)(v8 + 74); + v16 = *(_BYTE *)(v8 + 16); + v68 = v52 == (char)v14; + if ( v52 == (_BYTE)v14 ) + { +LABEL_11: + if ( (!v16 || *(_BYTE *)(v8 + 37) != (_BYTE)v14) && *(_BYTE *)(v8 + 36) != (_BYTE)v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 1; + HIDWORD(a1) = -1; + v73 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v73 ) + { + v78 = 0; + v16 = *(_BYTE *)(v8 + 16); + v82 = 0; + if ( v10 == 16 ) + goto LABEL_17; + goto LABEL_37; + } + v53 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v16 = *(_BYTE *)(v8 + 16); + LOBYTE(v14) = v53; + } + goto LABEL_20; + } +LABEL_10: + if ( *(_BYTE *)(v8 + 75) == (_BYTE)v14 ) + goto LABEL_11; + v68 = 0; +LABEL_20: + v78 = 0; + v82 = 0; + v74 = v75; + while ( 1 ) + { + if ( v16 && *(_BYTE *)(v8 + 37) == (_BYTE)v14 || *(_BYTE *)(v8 + 36) == (_BYTE)v14 ) + { +LABEL_68: + v73 = 0; + goto LABEL_36; + } + if ( *(_BYTE *)(v8 + 78) != (_BYTE)v14 ) + break; + v31 = !v82 || v10 == 10; + if ( !v31 ) + goto LABEL_26; + v82 = v74 == 0 || v10 == 8; + if ( !v82 ) + { + ++v78; + v82 = v31; +LABEL_30: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_31; + goto LABEL_64; + } + v18 = (_DWORD *)a1; + v78 = 0; + v10 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_31: + HIDWORD(a1) = -1; + v18[2] = v19 + 1; +LABEL_32: + v76 = 0; + if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) + { + LODWORD(a1) = 0; + v76 = 1; + } + goto LABEL_33; + } +LABEL_64: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_32; + v76 = 1; +LABEL_33: + v20 = a3 == -1; + v70 = v20 & (a2 != 0); + if ( v70 ) + { + v20 = 0; + if ( a2[2] >= a2[3] ) + { + v32 = (*(int (**)(void))(*a2 + 36))(); + v20 = 0; + if ( v32 == -1 ) + { + a2 = 0; + v20 = v70; + } + } + } + if ( v20 == v76 ) + { + v73 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_36; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v35 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v35 >= *(_DWORD *)(a1 + 12) ) + { + v14 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v14 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v14) = *v35; + } + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v82 ) + goto LABEL_68; + } + if ( !v82 ) + goto LABEL_68; +LABEL_26: + if ( *(_BYTE *)(v8 + 76) != (_BYTE)v14 && *(_BYTE *)(v8 + 77) != (_BYTE)v14 ) + { + v73 = 0; + v82 = 1; + goto LABEL_36; + } + if ( v10 == 16 || v74 == 0 ) + { + v78 = 0; + v10 = 16; + v82 = 0; + goto LABEL_30; + } + v73 = 0; + MaxCount = v10; + Buf = v10; + v82 = 1; +LABEL_38: + v85[0] = (unsigned int *)&unk_4E93FC; + if ( v16 ) +LABEL_18: + std::string::reserve(v85, (std::string *)0x20, (unsigned int)v58); +LABEL_39: + v67 = 0xFFFFFFFF / v10; + v71 = *(_BYTE *)(v8 + 100); + if ( v71 ) + { + if ( v73 ) + { + v27 = v85[0]; + v77 = 0; + v69 = 0; + v71 = v73; + v28 = *(v85[0] - 3); + v73 = 0; + goto LABEL_53; + } + v69 = 0; + Bufb = (void *)(v8 + 78); + v77 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v14 ) + { + if ( (_BYTE)v14 == *(_BYTE *)(v8 + 36) ) + goto LABEL_103; + v39 = memchr(Bufb, (char)v14, MaxCount); + if ( !v39 ) + goto LABEL_103; + v40 = v39 - (_BYTE *)Bufb; + if ( v40 > 15 ) + v40 -= 6; + if ( v67 >= v77 ) + { + v69 |= ~v40 < v10 * v77; + ++v78; + v77 = v10 * v77 + v40; + goto LABEL_114; + } + v41 = (_DWORD *)a1; + v69 = v71; + v42 = *(_DWORD *)(a1 + 8); + if ( v42 < *(_DWORD *)(a1 + 12) ) + { +LABEL_115: + HIDWORD(a1) = -1; + v41[2] = v42 + 1; + goto LABEL_116; + } +LABEL_121: + (*(void (__fastcall **)(_DWORD *))(*v41 + 40))(v41); + v41 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v61 = v71; + goto LABEL_117; + } +LABEL_116: + v61 = 0; + if ( v41[2] >= v41[3] ) + { + v61 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v41 + 36))(v41) == -1 ) + { + LODWORD(a1) = 0; + v61 = v71; + } + } +LABEL_117: + v43 = a3 == -1; + v44 = v43 & (a2 != 0); + if ( v44 ) + { + v43 = 0; + if ( a2[2] >= a2[3] ) + { + v46 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v43 = 0; + if ( v46 == -1 ) + { + a2 = 0; + v43 = v44; + } + } + } + if ( v61 == v43 ) + { + v27 = v85[0]; + v28 = *(v85[0] - 3); + goto LABEL_53; + } + LOBYTE(v14) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v45 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) + { + v56 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v14) = v56; + if ( v56 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v14) = -1; + } + } + else + { + LOBYTE(v14) = *v45; + } + } + } + v27 = v85[0]; + v28 = *(v85[0] - 3); + if ( !v78 ) + { + v71 = 0; + v73 = *(_BYTE *)(v8 + 16); + goto LABEL_53; + } + v62 = (std::string *)(v28 + 1); + if ( v28 + 1 > *(v85[0] - 2) || *((int *)v85[0] - 1) > 0 ) + std::string::reserve(v85, v62, (unsigned int)v58); + v47 = v78; + v78 = 0; + *((_BYTE *)v85[0] + *(v85[0] - 3)) = v47; + v48 = v85[0]; + if ( (_UNKNOWN *)v85[0] != &unk_4E93FC ) + { + *(v85[0] - 1) = 0; + *(v48 - 3) = (unsigned int)v62; + *((_BYTE *)v48 + v28 + 1) = 0; + } +LABEL_114: + v41 = (_DWORD *)a1; + v42 = *(_DWORD *)(a1 + 8); + if ( v42 < *(_DWORD *)(a1 + 12) ) + goto LABEL_115; + goto LABEL_121; + } + if ( v73 ) + { + v57 = v73; + v27 = v85[0]; + v69 = 0; + v73 = 0; + v71 = v57; + v28 = *(v85[0] - 3); + v77 = 0; + } + else + { + v69 = 0; + v77 = 0; +LABEL_42: + v21 = (char)v14; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v14 - 48) <= 9u ) + goto LABEL_45; + while ( (unsigned __int8)(v14 - 97) <= 5u ) + { + v22 = v21 - 87; + if ( v67 < v77 ) + goto LABEL_47; +LABEL_72: + v69 |= ~v22 < v10 * v77; + v23 = (_DWORD *)a1; + v77 = v22 + v10 * v77; + ++v78; + v24 = *(_DWORD *)(a1 + 8); + if ( v24 < *(_DWORD *)(a1 + 12) ) + goto LABEL_48; +LABEL_73: + (*(void (__fastcall **)(_DWORD *, int))(*v23 + 40))(v23, v22); + v23 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_49; + v72 = 1; +LABEL_50: + v25 = a3 == -1; + v26 = v25 & (a2 != 0); + if ( v26 ) + { + v25 = 0; + if ( a2[2] >= a2[3] ) + { + v34 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v25 = 0; + if ( v34 == -1 ) + { + a2 = 0; + v25 = v26; + } + } + } + if ( v72 == v25 ) + { + v27 = v85[0]; + v71 = 1; + v28 = *(v85[0] - 3); + goto LABEL_53; + } + LOBYTE(v14) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_42; + v33 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v33 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v14) = *v33; + goto LABEL_42; + } + v21 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v14) = v21; + if ( v21 != -1 ) + goto LABEL_42; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_103; + LOBYTE(v14) = -1; + } + if ( (unsigned __int8)(v14 - 65) <= 5u ) + { + v22 = v21 - 55; + goto LABEL_46; + } + } + else if ( (char)v14 > 47 && (char)(Buf + 48) > (char)v14 ) + { +LABEL_45: + v22 = (char)v14 - 48; +LABEL_46: + if ( v67 >= v77 ) + goto LABEL_72; +LABEL_47: + v23 = (_DWORD *)a1; + v69 = 1; + v24 = *(_DWORD *)(a1 + 8); + if ( v24 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_73; +LABEL_48: + HIDWORD(a1) = -1; + v23[2] = v24 + 1; +LABEL_49: + v72 = 0; + if ( v23[2] >= v23[3] ) + { + v72 = 0; + if ( (*(int (__fastcall **)(_DWORD *, int))(*v23 + 36))(v23, v22) == -1 ) + { + LODWORD(a1) = 0; + v72 = 1; + } + } + goto LABEL_50; + } +LABEL_103: + v27 = v85[0]; + v28 = *(v85[0] - 3); + v71 = 0; + } +LABEL_53: + if ( v28 ) + { + Bufa = (std::string *)(v28 + 1); + if ( v28 + 1 > *(v27 - 2) || (int)*(v27 - 1) > 0 ) + std::string::reserve(v85, Bufa, (unsigned int)v58); + *((_BYTE *)v85[0] + *(v85[0] - 3)) = v78; + v36 = v85[0]; + v37 = v85[0] - 3; + if ( (_UNKNOWN *)v85[0] != &unk_4E93FC ) + { + *(v85[0] - 1) = 0; + *(v36 - 3) = (unsigned int)Bufa; + *((_BYTE *)v37 + v28 + 13) = 0; + v36 = v85[0]; + v37 = v85[0] - 3; + } + Bufc = v37; + v38 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v85); + v29 = (volatile signed __int32 *)Bufc; + if ( !v38 ) + *a5 = 4; + if ( v78 || v82 || *(v36 - 3) ) + goto LABEL_97; +LABEL_56: + *a6 = 0; + *a5 = 4; + } + else + { + v29 = (volatile signed __int32 *)(v27 - 3); + if ( !v78 && !v82 ) + goto LABEL_56; +LABEL_97: + if ( v73 ) + goto LABEL_56; + if ( v69 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v68 ) + v77 = -v77; + *a6 = v77; + } + } + if ( v71 ) + *a5 |= 2u; + result = a1; + if ( v29 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v83 = a1; + std::string::_Rep::_M_dispose(v29, (int)&v84); + return v83; + } + return result; +} +// 464EF7: variable 'v58' is possibly undefined +// 464F5D: variable 'v59' is possibly undefined +// 464F72: variable 'v22' is possibly undefined +// 4E9608: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (00465160) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned __int16 *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // eax + char v10; // dl + char v11; // bl + char v12; // bl + int v13; // ebx + char v14; // al + char v15; // cl + unsigned int v16; // eax + _DWORD *v17; // ecx + unsigned int v18; // eax + char v19; // dl + unsigned int v20; // edx + int v21; // eax + _DWORD *v22; // ecx + unsigned int v23; // eax + char v24; // al + char v25; // bl + unsigned int *v26; // edx + int v27; // ebx + unsigned __int64 v28; // kr00_8 + bool v30; // al + int v31; // eax + _BYTE *v32; // eax + _BYTE *v33; // eax + _BYTE *v34; // eax + int v35; // eax + _DWORD *v36; // ecx + unsigned int v37; // eax + char v38; // al + char v39; // bl + _BYTE *v40; // eax + int v41; // edx + char v42; // cl + unsigned int *v43; // eax + int v44; // eax + int v45; // eax + _BYTE *v46; // eax + char v47; // al + char v48; // al + int v49; // eax + char v50; // al + unsigned int v51; // [esp+4h] [ebp-54h] + size_t MaxCount; // [esp+10h] [ebp-48h] + char v53; // [esp+14h] [ebp-44h] + std::string *v54; // [esp+14h] [ebp-44h] + int Buf; // [esp+18h] [ebp-40h] + void *Bufa; // [esp+18h] [ebp-40h] + int v57; // [esp+1Ch] [ebp-3Ch] + char v58; // [esp+20h] [ebp-38h] + int v59; // [esp+20h] [ebp-38h] + int v60; // [esp+24h] [ebp-34h] + char v61; // [esp+24h] [ebp-34h] + unsigned __int16 v62; // [esp+24h] [ebp-34h] + int v63; // [esp+28h] [ebp-30h] + char v64; // [esp+28h] [ebp-30h] + bool v65; // [esp+2Ch] [ebp-2Ch] + char v66; // [esp+2Dh] [ebp-2Bh] + char v67; // [esp+2Eh] [ebp-2Ah] + char v68; // [esp+2Eh] [ebp-2Ah] + char v69; // [esp+2Eh] [ebp-2Ah] + char v70; // [esp+2Fh] [ebp-29h] + bool v71; // [esp+2Fh] [ebp-29h] + char v72; // [esp+3Bh] [ebp-1Dh] BYREF + unsigned int *v73[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v6 = 8; + v7 = a4; + v8 = std::__use_cache>::operator()((int *)(a4 + 108)); + v9 = *(_DWORD *)(v7 + 12) & 0x4A; + v60 = v9; + if ( v9 != 64 ) + v6 = v9 == 8 ? 16 : 10; + v10 = HIDWORD(a1) == -1; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v10 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v45 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v10 = 0; + if ( v45 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + } + v12 = a3 == -1; + v70 = v12 & (a2 != 0); + if ( v70 ) + { + v12 = 0; + if ( a2[2] >= a2[3] ) + { + v64 = v10; + v44 = (*(int (**)(void))(*a2 + 36))(); + v10 = v64; + if ( v44 == -1 ) + { + a2 = 0; + v12 = v70; + } + } + } + if ( v10 == v12 ) + { + v65 = 0; + v15 = *(_BYTE *)(v8 + 16); + LOBYTE(v13) = 0; + v58 = 1; + v63 = 0; + v71 = 0; +LABEL_34: + if ( v6 == 16 ) + { +LABEL_15: + MaxCount = 22; + Buf = 22; + v73[0] = (unsigned int *)&unk_4E93FC; + if ( !v15 ) + goto LABEL_37; + goto LABEL_16; + } +LABEL_35: + MaxCount = v6; + Buf = v6; + goto LABEL_36; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + { +LABEL_7: + v14 = *(_BYTE *)(v8 + 74); + v15 = *(_BYTE *)(v8 + 16); + v65 = v14 == (char)v13; + if ( v14 == (_BYTE)v13 ) + goto LABEL_9; + goto LABEL_8; + } + v46 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ) + { + v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v13 == -1 ) + LODWORD(a1) = 0; + goto LABEL_7; + } + LOBYTE(v13) = *v46; + v47 = *(_BYTE *)(v8 + 74); + v15 = *(_BYTE *)(v8 + 16); + v65 = v47 == (char)v13; + if ( v47 == (_BYTE)v13 ) + { +LABEL_9: + if ( (!v15 || *(_BYTE *)(v8 + 37) != (_BYTE)v13) && *(_BYTE *)(v8 + 36) != (_BYTE)v13 ) + { + v16 = *(_DWORD *)(a1 + 8); + if ( v16 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v16 + 1; + HIDWORD(a1) = -1; + v58 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v58 ) + { + v63 = 0; + v15 = *(_BYTE *)(v8 + 16); + v71 = 0; + if ( v6 == 16 ) + goto LABEL_15; + goto LABEL_35; + } + v48 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v15 = *(_BYTE *)(v8 + 16); + LOBYTE(v13) = v48; + } + goto LABEL_18; + } +LABEL_8: + if ( *(_BYTE *)(v8 + 75) == (_BYTE)v13 ) + goto LABEL_9; + v65 = 0; +LABEL_18: + v63 = 0; + v71 = 0; + v59 = v60; + while ( 1 ) + { + if ( v15 && *(_BYTE *)(v8 + 37) == (_BYTE)v13 || *(_BYTE *)(v8 + 36) == (_BYTE)v13 ) + { +LABEL_66: + v58 = 0; + goto LABEL_34; + } + if ( *(_BYTE *)(v8 + 78) != (_BYTE)v13 ) + break; + v30 = !v71 || v6 == 10; + if ( !v30 ) + goto LABEL_24; + v71 = v59 == 0 || v6 == 8; + if ( !v71 ) + { + ++v63; + v71 = v30; +LABEL_28: + v17 = (_DWORD *)a1; + v18 = *(_DWORD *)(a1 + 8); + if ( v18 < *(_DWORD *)(a1 + 12) ) + goto LABEL_29; + goto LABEL_62; + } + v17 = (_DWORD *)a1; + v63 = 0; + v6 = 8; + v18 = *(_DWORD *)(a1 + 8); + if ( v18 < *(_DWORD *)(a1 + 12) ) + { +LABEL_29: + HIDWORD(a1) = -1; + v17[2] = v18 + 1; +LABEL_30: + v61 = 0; + if ( v17[2] >= v17[3] && (*(int (__fastcall **)(_DWORD *))(*v17 + 36))(v17) == -1 ) + { + LODWORD(a1) = 0; + v61 = 1; + } + goto LABEL_31; + } +LABEL_62: + (*(void (__fastcall **)(_DWORD *))(*v17 + 40))(v17); + v17 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_30; + v61 = 1; +LABEL_31: + v19 = a3 == -1; + v67 = v19 & (a2 != 0); + if ( v67 ) + { + v19 = 0; + if ( a2[2] >= a2[3] ) + { + v31 = (*(int (**)(void))(*a2 + 36))(); + v19 = 0; + if ( v31 == -1 ) + { + a2 = 0; + v19 = v67; + } + } + } + if ( v61 == v19 ) + { + v58 = 1; + v15 = *(_BYTE *)(v8 + 16); + goto LABEL_34; + } + LOBYTE(v13) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v33 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v33 >= *(_DWORD *)(a1 + 12) ) + { + v13 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v13 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v13) = *v33; + } + } + v15 = *(_BYTE *)(v8 + 16); + if ( !v71 ) + goto LABEL_66; + } + if ( !v71 ) + goto LABEL_66; +LABEL_24: + if ( *(_BYTE *)(v8 + 76) != (_BYTE)v13 && *(_BYTE *)(v8 + 77) != (_BYTE)v13 ) + { + v58 = 0; + v71 = 1; + goto LABEL_34; + } + if ( v59 == 0 || v6 == 16 ) + { + v63 = 0; + v6 = 16; + v71 = 0; + goto LABEL_28; + } + v58 = 0; + MaxCount = v6; + Buf = v6; + v71 = 1; +LABEL_36: + v73[0] = (unsigned int *)&unk_4E93FC; + if ( v15 ) +LABEL_16: + std::string::reserve(v73, (std::string *)0x20, v51); +LABEL_37: + v57 = 0xFFFF / v6; + v68 = *(_BYTE *)(v8 + 100); + if ( v68 ) + { + if ( v58 ) + goto LABEL_163; + v66 = 0; + Bufa = (void *)(v8 + 78); + v62 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_BYTE *)(v8 + 37) != (_BYTE)v13 ) + { + if ( (_BYTE)v13 == *(_BYTE *)(v8 + 36) ) + goto LABEL_98; + v34 = memchr(Bufa, (char)v13, MaxCount); + if ( !v34 ) + goto LABEL_98; + v35 = v34 - (_BYTE *)Bufa; + if ( v35 > 15 ) + v35 -= 6; + if ( (unsigned __int16)v57 >= v62 ) + { + v66 |= (unsigned __int16)(v6 * v62) > 0xFFFF - v35; + ++v63; + v62 = v6 * v62 + v35; + goto LABEL_109; + } + v36 = (_DWORD *)a1; + v66 = v68; + v37 = *(_DWORD *)(a1 + 8); + if ( v37 < *(_DWORD *)(a1 + 12) ) + { +LABEL_110: + HIDWORD(a1) = -1; + v36[2] = v37 + 1; + goto LABEL_111; + } +LABEL_116: + (*(void (__fastcall **)(_DWORD *))(*v36 + 40))(v36); + v36 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v53 = v68; + goto LABEL_112; + } +LABEL_111: + v53 = 0; + if ( v36[2] >= v36[3] ) + { + v53 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v36 + 36))(v36) == -1 ) + { + LODWORD(a1) = 0; + v53 = v68; + } + } +LABEL_112: + v38 = a3 == -1; + v39 = v38 & (a2 != 0); + if ( v39 ) + { + v38 = 0; + if ( a2[2] >= a2[3] ) + { + v41 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v38 = 0; + if ( v41 == -1 ) + { + a2 = 0; + v38 = v39; + } + } + } + if ( v53 == v38 ) + { + v26 = v73[0]; + v27 = *(v73[0] - 3); + goto LABEL_51; + } + LOBYTE(v13) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v40 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(a1 + 12) ) + { + v49 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + LOBYTE(v13) = v49; + if ( v49 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v13) = -1; + } + } + else + { + LOBYTE(v13) = *v40; + } + } + } + v26 = v73[0]; + v27 = *(v73[0] - 3); + if ( !v63 ) + { + v68 = 0; + v58 = *(_BYTE *)(v8 + 16); + goto LABEL_51; + } + v54 = (std::string *)(v27 + 1); + if ( v27 + 1 > *(v73[0] - 2) || *((int *)v73[0] - 1) > 0 ) + std::string::reserve(v73, v54, v51); + v42 = v63; + v63 = 0; + *((_BYTE *)v73[0] + *(v73[0] - 3)) = v42; + v43 = v73[0]; + if ( (_UNKNOWN *)v73[0] != &unk_4E93FC ) + { + *(v73[0] - 1) = 0; + *(v43 - 3) = (unsigned int)v54; + *((_BYTE *)v43 + v27 + 1) = 0; + } +LABEL_109: + v36 = (_DWORD *)a1; + v37 = *(_DWORD *)(a1 + 8); + if ( v37 < *(_DWORD *)(a1 + 12) ) + goto LABEL_110; + goto LABEL_116; + } + if ( v58 ) + { +LABEL_163: + v50 = v58; + v26 = v73[0]; + v66 = 0; + v58 = 0; + v68 = v50; + v27 = *(v73[0] - 3); + v62 = 0; + goto LABEL_51; + } + v66 = 0; + v62 = 0; +LABEL_40: + v20 = (char)v13; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v13 - 48) <= 9u ) + goto LABEL_43; + while ( (unsigned __int8)(v13 - 97) <= 5u ) + { + v21 = v20 - 87; + if ( (unsigned __int16)v57 < v62 ) + goto LABEL_45; +LABEL_70: + v20 = v6 * v62; + v66 |= (unsigned __int16)v20 > 0xFFFF - v21; + v22 = (_DWORD *)a1; + v62 = v20 + v21; + ++v63; + v23 = *(_DWORD *)(a1 + 8); + if ( v23 < *(_DWORD *)(a1 + 12) ) + goto LABEL_46; +LABEL_71: + (*(void (__fastcall **)(_DWORD *, unsigned int))(*v22 + 40))(v22, v20); + v22 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_47; + v69 = 1; +LABEL_48: + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v20 = a2[3]; + v24 = 0; + if ( a2[2] >= v20 ) + { + v20 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v24 = 0; + if ( v20 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + } + if ( v69 == v24 ) + { + v26 = v73[0]; + v68 = 1; + v27 = *(v73[0] - 3); + goto LABEL_51; + } + LOBYTE(v13) = BYTE4(a1); + if ( !(_DWORD)a1 || HIDWORD(a1) != -1 ) + goto LABEL_40; + v32 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v32 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v13) = *v32; + goto LABEL_40; + } + v20 = (*(int (__fastcall **)(_DWORD, unsigned int))(*(_DWORD *)a1 + 36))(a1, v20); + LOBYTE(v13) = v20; + if ( v20 != -1 ) + goto LABEL_40; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_98; + LOBYTE(v13) = -1; + } + if ( (unsigned __int8)(v13 - 65) <= 5u ) + { + v21 = v20 - 55; + goto LABEL_44; + } + } + else if ( (char)v13 > 47 && (char)v13 < (char)(Buf + 48) ) + { +LABEL_43: + v21 = (char)v13 - 48; +LABEL_44: + if ( (unsigned __int16)v57 >= v62 ) + goto LABEL_70; +LABEL_45: + v22 = (_DWORD *)a1; + v66 = 1; + v23 = *(_DWORD *)(a1 + 8); + if ( v23 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_71; +LABEL_46: + HIDWORD(a1) = -1; + v22[2] = v23 + 1; +LABEL_47: + v69 = 0; + if ( v22[2] >= v22[3] ) + { + v69 = 0; + if ( (*(int (__fastcall **)(_DWORD *, unsigned int))(*v22 + 36))(v22, v20) == -1 ) + { + LODWORD(a1) = 0; + v69 = 1; + } + } + goto LABEL_48; + } +LABEL_98: + v26 = v73[0]; + v27 = *(v73[0] - 3); + v68 = 0; +LABEL_51: + if ( v27 ) + { + std::string::push_back(v73, (std::string *)(char)v63, v51); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v73) ) + *a5 = 4; + v26 = v73[0]; + if ( v63 || v71 || *(v73[0] - 3) ) + goto LABEL_92; +LABEL_54: + *a6 = 0; + *a5 = 4; + } + else + { + if ( !v63 && !v71 ) + goto LABEL_54; +LABEL_92: + if ( v58 ) + goto LABEL_54; + if ( v66 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v65 ) + v62 = -v62; + *a6 = v62; + } + } + if ( v68 ) + *a5 |= 2u; + v28 = a1; + if ( v26 == (unsigned int *)&unk_4E93FC ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v26 - 3, (int)&v72); + return v28; +} +// 465293: variable 'v51' is possibly undefined +// 465A42: variable 'v20' is possibly undefined + +//----- (00465BD0) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + char v9; // bl + char v10; // dl + char v11; // dl + int v12; // ebx + char v13; // al + char v14; // cl + unsigned int v15; // eax + int v16; // eax + int v17; // esi + int v18; // edi + _DWORD *v19; // ecx + unsigned int v20; // eax + char v21; // dl + unsigned __int64 v22; // kr00_8 + int v23; // esi + int v24; // edi + int v25; // ecx + int v26; // ecx + _DWORD *v27; // ecx + unsigned int v28; // eax + char v29; // al + char v30; // bl + unsigned int *v31; // ecx + int v32; // ebx + int *v33; // eax + unsigned __int64 result; // rax + bool v35; // al + int v36; // ebx + int v37; // edi + unsigned int v38; // esi + int v39; // eax + unsigned int v40; // edi + int v41; // eax + _BYTE *v42; // eax + int v43; // edx + _BYTE *v44; // eax + int v45; // eax + unsigned int v46; // edx + int *v47; // edi + _DWORD *v48; // eax + _BYTE *v49; // eax + int v50; // eax + int v51; // ecx + int v52; // ebx + int v53; // edi + unsigned int v54; // esi + unsigned int v55; // edi + _DWORD *v56; // ecx + unsigned int v57; // eax + char v58; // al + char v59; // bl + _BYTE *v60; // eax + int v61; // edx + char v62; // cl + unsigned int *v63; // eax + int v64; // eax + int *v65; // eax + _BYTE *v66; // eax + int v67; // eax + char v68; // al + unsigned int v69; // [esp+4h] [ebp-74h] + unsigned int v70; // [esp+4h] [ebp-74h] + bool v71; // [esp+1Bh] [ebp-5Dh] + size_t MaxCount; // [esp+1Ch] [ebp-5Ch] + UDItype n; // [esp+20h] [ebp-58h] + char v74; // [esp+28h] [ebp-50h] + std::string *v75; // [esp+28h] [ebp-50h] + int Buf; // [esp+2Ch] [ebp-4Ch] + void *Bufa; // [esp+2Ch] [ebp-4Ch] + char v78; // [esp+38h] [ebp-40h] + __int64 v79; // [esp+38h] [ebp-40h] + int v80; // [esp+40h] [ebp-38h] + char v81; // [esp+44h] [ebp-34h] + char v82; // [esp+45h] [ebp-33h] + char v83; // [esp+45h] [ebp-33h] + char v84; // [esp+46h] [ebp-32h] + char v85; // [esp+46h] [ebp-32h] + char v86; // [esp+47h] [ebp-31h] + bool v87; // [esp+47h] [ebp-31h] + char v88; // [esp+47h] [ebp-31h] + int v89; // [esp+48h] [ebp-30h] + unsigned __int64 v90; // [esp+48h] [ebp-30h] + char v91; // [esp+5Bh] [ebp-1Dh] BYREF + unsigned int *v92[7]; // [esp+5Ch] [ebp-1Ch] BYREF + + v6 = 8; + v7 = a4; + v89 = std::__use_cache>::operator()((int *)(a4 + 108)); + v8 = *(_DWORD *)(v7 + 12) & 0x4A; + if ( v8 != 64 ) + v6 = v8 == 8 ? 16 : 10; + v9 = HIDWORD(a1) == -1; + v10 = v9 & ((_DWORD)a1 != 0); + if ( v10 ) + { + v9 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v88 = v10; + if ( (*(int (**)(void))(*(_DWORD *)a1 + 36))() == -1 ) + { + LODWORD(a1) = 0; + v9 = v88; + } + } + } + v11 = a3 == -1; + v86 = v11 & (a2 != 0); + if ( v86 ) + { + v11 = 0; + if ( a2[2] >= a2[3] ) + { + v64 = (*(int (**)(void))(*a2 + 36))(); + v11 = 0; + if ( v64 == -1 ) + { + a2 = 0; + v11 = v86; + } + } + } + if ( v11 == v9 ) + { + v71 = 0; + LOBYTE(v12) = 0; + v84 = 1; + v80 = 0; + v14 = *(_BYTE *)(v89 + 16); + v87 = 0; +LABEL_34: + if ( v6 == 16 ) + { +LABEL_15: + MaxCount = 22; + Buf = 22; + v92[0] = (unsigned int *)&unk_4E93FC; + if ( !v14 ) + goto LABEL_37; + goto LABEL_16; + } +LABEL_35: + MaxCount = v6; + Buf = v6; + goto LABEL_36; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v66 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v66 >= *(_DWORD *)(a1 + 12) ) + { + v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v12 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v12) = *v66; + } + } + v13 = *(_BYTE *)(v89 + 74); + v14 = *(_BYTE *)(v89 + 16); + v71 = v13 == (char)v12; + if ( v13 == (_BYTE)v12 || *(_BYTE *)(v89 + 75) == (_BYTE)v12 ) + { + if ( (!v14 || *(_BYTE *)(v89 + 37) != (_BYTE)v12) && *(_BYTE *)(v89 + 36) != (_BYTE)v12 ) + { + v15 = *(_DWORD *)(a1 + 8); + if ( v15 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v15 + 1; + HIDWORD(a1) = -1; + v84 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v84 ) + { + v80 = 0; + v87 = 0; + v14 = *(_BYTE *)(v89 + 16); + if ( v6 == 16 ) + goto LABEL_15; + goto LABEL_35; + } + LOBYTE(v12) = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v14 = *(_BYTE *)(v89 + 16); + } + } + else + { + v71 = 0; + } + v80 = 0; + v16 = v8; + v17 = v6; + v87 = 0; + v18 = v16; + while ( 1 ) + { + if ( v14 && *(_BYTE *)(v89 + 37) == (_BYTE)v12 || *(_BYTE *)(v89 + 36) == (_BYTE)v12 ) + { +LABEL_68: + v84 = 0; + v6 = v17; + goto LABEL_34; + } + if ( *(_BYTE *)(v89 + 78) != (_BYTE)v12 ) + break; + v35 = !v87 || v17 == 10; + if ( !v35 ) + goto LABEL_24; + v87 = v18 == 0 || v17 == 8; + if ( !v87 ) + { + ++v80; + v87 = v35; +LABEL_28: + v19 = (_DWORD *)a1; + v20 = *(_DWORD *)(a1 + 8); + if ( v20 < *(_DWORD *)(a1 + 12) ) + goto LABEL_29; + goto LABEL_64; + } + v19 = (_DWORD *)a1; + v80 = 0; + v17 = 8; + v20 = *(_DWORD *)(a1 + 8); + if ( v20 < *(_DWORD *)(a1 + 12) ) + { +LABEL_29: + HIDWORD(a1) = -1; + v19[2] = v20 + 1; +LABEL_30: + v78 = 0; + if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) + { + LODWORD(a1) = 0; + v78 = 1; + } + goto LABEL_31; + } +LABEL_64: + (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); + v19 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_30; + v78 = 1; +LABEL_31: + v21 = a3 == -1; + v85 = v21 & (a2 != 0); + if ( v85 ) + { + v21 = 0; + if ( a2[2] >= a2[3] ) + { + v41 = (*(int (**)(void))(*a2 + 36))(); + v21 = 0; + if ( v41 == -1 ) + { + a2 = 0; + v21 = v85; + } + } + } + if ( v21 == v78 ) + { + v84 = 1; + v6 = v17; + v14 = *(_BYTE *)(v89 + 16); + goto LABEL_34; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v44 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v44 >= *(_DWORD *)(a1 + 12) ) + { + v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v12 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v12) = *v44; + } + } + v14 = *(_BYTE *)(v89 + 16); + if ( !v87 ) + goto LABEL_68; + } + if ( !v87 ) + goto LABEL_68; +LABEL_24: + if ( *(_BYTE *)(v89 + 76) != (_BYTE)v12 && *(_BYTE *)(v89 + 77) != (_BYTE)v12 ) + { + v84 = 0; + v6 = v17; + v87 = 1; + goto LABEL_34; + } + if ( v18 == 0 || v17 == 16 ) + { + v80 = 0; + v17 = 16; + v87 = 0; + goto LABEL_28; + } + v84 = 0; + v6 = v17; + MaxCount = v17; + Buf = v17; + v87 = 1; +LABEL_36: + v92[0] = (unsigned int *)&unk_4E93FC; + if ( v14 ) +LABEL_16: + std::string::reserve(v92, (std::string *)0x20, v69); +LABEL_37: + n = 0x8000000000000000LL; + if ( !v71 ) + n = 0x7FFFFFFFFFFFFFFFLL; + v79 = v6; + v22 = n / v6; + v82 = *(_BYTE *)(v89 + 100); + if ( v82 ) + { + if ( v84 ) + goto LABEL_164; + v81 = 0; + v23 = 0; + v24 = 0; + Bufa = (void *)(v89 + 78); + while ( !*(_BYTE *)(v89 + 16) || *(_BYTE *)(v89 + 37) != (_BYTE)v12 ) + { + if ( (_BYTE)v12 == *(_BYTE *)(v89 + 36) ) + goto LABEL_99; + v49 = memchr(Bufa, (char)v12, MaxCount); + if ( !v49 ) + goto LABEL_99; + v50 = v49 - (_BYTE *)Bufa; + v51 = v50; + if ( v50 > 15 ) + v51 = v50 - 6; + if ( v22 >= __PAIR64__(v24, v23) ) + { + v52 = v24 * v79 + v23 * HIDWORD(v79); + v53 = ((unsigned int)v79 * (unsigned __int64)(unsigned int)v23) >> 32; + v54 = v79 * v23; + v55 = v52 + v53; + v81 |= n - v51 < __PAIR64__(v55, v54); + v24 = (v51 + __PAIR64__(v55, v54)) >> 32; + v23 = v51 + v54; + ++v80; + goto LABEL_110; + } + v56 = (_DWORD *)a1; + v81 = v82; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 < *(_DWORD *)(a1 + 12) ) + { +LABEL_111: + HIDWORD(a1) = -1; + v56[2] = v57 + 1; + goto LABEL_112; + } +LABEL_117: + (*(void (__fastcall **)(_DWORD *))(*v56 + 40))(v56); + v56 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v74 = v82; + goto LABEL_113; + } +LABEL_112: + v74 = 0; + if ( v56[2] >= v56[3] ) + { + v74 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56) == -1 ) + { + LODWORD(a1) = 0; + v74 = v82; + } + } +LABEL_113: + v58 = a3 == -1; + v59 = v58 & (a2 != 0); + if ( v59 ) + { + v58 = 0; + if ( a2[2] >= a2[3] ) + { + v61 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v58 = 0; + if ( v61 == -1 ) + { + a2 = 0; + v58 = v59; + } + } + } + if ( v74 == v58 ) + { + v31 = v92[0]; + v32 = *(v92[0] - 3); + goto LABEL_53; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v60 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v60 >= *(_DWORD *)(a1 + 12) ) + { + v67 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v12) = v67; + if ( v67 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v12) = -1; + } + } + else + { + LOBYTE(v12) = *v60; + } + } + } + v31 = v92[0]; + v32 = *(v92[0] - 3); + if ( !v80 ) + { + v82 = 0; + v84 = *(_BYTE *)(v89 + 16); + goto LABEL_53; + } + v75 = (std::string *)(v32 + 1); + if ( v32 + 1 > *(v92[0] - 2) || *((int *)v92[0] - 1) > 0 ) + std::string::reserve(v92, v75, v70); + v62 = v80; + v80 = 0; + *((_BYTE *)v92[0] + *(v92[0] - 3)) = v62; + v63 = v92[0]; + if ( (_UNKNOWN *)v92[0] != &unk_4E93FC ) + { + *(v92[0] - 1) = 0; + *(v63 - 3) = (unsigned int)v75; + *((_BYTE *)v63 + v32 + 1) = 0; + } +LABEL_110: + v56 = (_DWORD *)a1; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 < *(_DWORD *)(a1 + 12) ) + goto LABEL_111; + goto LABEL_117; + } + if ( v84 ) + { +LABEL_164: + v68 = v84; + v31 = v92[0]; + v81 = 0; + v23 = 0; + v84 = 0; + v24 = 0; + v82 = v68; + v32 = *(v92[0] - 3); + goto LABEL_53; + } + v81 = 0; + v23 = 0; + v24 = 0; +LABEL_42: + v25 = (char)v12; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v12 - 48) <= 9u ) + goto LABEL_45; + while ( (unsigned __int8)(v12 - 97) <= 5u ) + { + v26 = v25 - 87; + if ( v22 < __PAIR64__(v24, v23) ) + goto LABEL_47; +LABEL_72: + v36 = v24 * v79 + v23 * HIDWORD(v79); + v37 = ((unsigned int)v79 * (unsigned __int64)(unsigned int)v23) >> 32; + v38 = v79 * v23; + v39 = v26; + v40 = v36 + v37; + v81 |= n - v26 < __PAIR64__(v40, v38); + v27 = (_DWORD *)a1; + v24 = (v39 + __PAIR64__(v40, v38)) >> 32; + v23 = v39 + v38; + ++v80; + v28 = *(_DWORD *)(a1 + 8); + if ( v28 < *(_DWORD *)(a1 + 12) ) + goto LABEL_48; +LABEL_73: + (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); + v27 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_49; + v83 = 1; +LABEL_50: + v29 = a3 == -1; + v30 = v29 & (a2 != 0); + if ( v30 ) + { + v29 = 0; + if ( a2[2] >= a2[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v29 = 0; + if ( v43 == -1 ) + { + a2 = 0; + v29 = v30; + } + } + } + if ( v83 == v29 ) + { + v31 = v92[0]; + v82 = 1; + v32 = *(v92[0] - 3); + goto LABEL_53; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_42; + v42 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v12) = *v42; + goto LABEL_42; + } + v25 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v12) = v25; + if ( v25 != -1 ) + goto LABEL_42; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_99; + LOBYTE(v12) = -1; + } + if ( (unsigned __int8)(v12 - 65) <= 5u ) + { + v26 = v25 - 55; + goto LABEL_46; + } + } + else if ( (char)v12 > 47 && (char)(Buf + 48) > (char)v12 ) + { +LABEL_45: + v26 = (char)v12 - 48; +LABEL_46: + if ( v22 >= __PAIR64__(v24, v23) ) + goto LABEL_72; +LABEL_47: + v27 = (_DWORD *)a1; + v81 = 1; + v28 = *(_DWORD *)(a1 + 8); + if ( v28 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_73; +LABEL_48: + HIDWORD(a1) = -1; + v27[2] = v28 + 1; +LABEL_49: + v83 = 0; + if ( v27[2] >= v27[3] ) + { + v83 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) + { + LODWORD(a1) = 0; + v83 = 1; + } + } + goto LABEL_50; + } +LABEL_99: + v31 = v92[0]; + v32 = *(v92[0] - 3); + v82 = 0; +LABEL_53: + if ( v32 ) + { + std::string::push_back(v92, (std::string *)(char)v80, v70); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v89 + 8), *(_DWORD *)(v89 + 12), (const char **)v92) ) + *a5 = 4; + v31 = v92[0]; + if ( v80 || v87 || *(v92[0] - 3) ) + goto LABEL_93; +LABEL_56: + v33 = a6; + *a6 = 0; + v33[1] = 0; + *a5 = 4; + } + else + { + if ( !v80 && !v87 ) + goto LABEL_56; +LABEL_93: + if ( v84 ) + goto LABEL_56; + if ( v81 ) + { + v45 = 0; + v46 = 0x80000000; + if ( !v71 ) + { + v45 = -1; + v46 = 0x7FFFFFFF; + } + v47 = a6; + *a6 = v45; + v48 = a5; + v47[1] = v46; + *v48 = 4; + } + else + { + if ( v71 ) + { + v23 = -v23; + v24 = (unsigned __int64)-__SPAIR64__(v24, v23) >> 32; + } + v65 = a6; + *a6 = v23; + v65[1] = v24; + } + } + if ( v82 ) + *a5 |= 2u; + result = a1; + if ( v31 != (unsigned int *)&unk_4E93FC ) + { + v90 = a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v31 - 3, (int)&v91); + return v90; + } + return result; +} +// 465D0D: variable 'v69' is possibly undefined +// 4661AC: variable 'v70' is possibly undefined + +//----- (00466720) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_int( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + char v9; // dl + char v10; // bl + char v11; // bl + int v12; // ebx + char v13; // al + char v14; // cl + unsigned int v15; // eax + int v16; // eax + int v17; // esi + int v18; // edi + _DWORD *v19; // ecx + unsigned int v20; // eax + char v21; // dl + unsigned __int64 v22; // kr00_8 + int v23; // esi + int v24; // edi + int v25; // ecx + int v26; // ecx + _DWORD *v27; // ecx + unsigned int v28; // eax + char v29; // al + char v30; // bl + unsigned int *v31; // edx + int v32; // ebx + int *v33; // eax + unsigned __int64 v34; // kr08_8 + bool v36; // al + int v37; // eax + int v38; // edi + int v39; // ebx + int v40; // eax + int v41; // esi + unsigned __int64 v42; // rax + int v43; // eax + _BYTE *v44; // eax + int v45; // edx + _BYTE *v46; // eax + int *v47; // eax + _BYTE *v48; // eax + int v49; // ecx + int v50; // ebx + unsigned __int64 v51; // rax + unsigned int v52; // esi + unsigned __int64 v53; // rcx + unsigned int v54; // edi + _DWORD *v55; // ecx + unsigned int v56; // eax + char v57; // al + char v58; // bl + _BYTE *v59; // eax + int v60; // edx + char v61; // cl + unsigned int *v62; // eax + int v63; // eax + int v64; // eax + int *v65; // eax + _BYTE *v66; // eax + int v67; // eax + char v68; // al + unsigned int v69; // [esp+4h] [ebp-64h] + unsigned int v70; // [esp+4h] [ebp-64h] + size_t MaxCount; // [esp+14h] [ebp-54h] + char v72; // [esp+18h] [ebp-50h] + std::string *v73; // [esp+18h] [ebp-50h] + int Buf; // [esp+1Ch] [ebp-4Ch] + void *Bufa; // [esp+1Ch] [ebp-4Ch] + char v76; // [esp+28h] [ebp-40h] + __int64 v77; // [esp+28h] [ebp-40h] + bool v78; // [esp+30h] [ebp-38h] + char v79; // [esp+31h] [ebp-37h] + char v80; // [esp+32h] [ebp-36h] + char v81; // [esp+32h] [ebp-36h] + _BYTE v82[5]; // [esp+33h] [ebp-35h] + char v83; // [esp+33h] [ebp-35h] + char v84; // [esp+34h] [ebp-34h] + char v85; // [esp+3Bh] [ebp-2Dh] + bool v86; // [esp+3Bh] [ebp-2Dh] + int v87; // [esp+3Ch] [ebp-2Ch] + char v88; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v89[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = 8; + v7 = a4; + v87 = std::__use_cache>::operator()((int *)(a4 + 108)); + v8 = *(_DWORD *)(v7 + 12) & 0x4A; + if ( v8 != 64 ) + v6 = v8 == 8 ? 16 : 10; + v9 = HIDWORD(a1) == -1; + v10 = v9 & ((_DWORD)a1 != 0); + if ( v10 ) + { + v9 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v64 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v9 = 0; + if ( v64 == -1 ) + { + LODWORD(a1) = 0; + v9 = v10; + } + } + } + v11 = a3 == -1; + v85 = v11 & (a2 != 0); + if ( v85 ) + { + v11 = 0; + if ( a2[2] >= a2[3] ) + { + v84 = v9; + v63 = (*(int (**)(void))(*a2 + 36))(); + v9 = v84; + if ( v63 == -1 ) + { + a2 = 0; + v11 = v85; + } + } + } + if ( v9 == v11 ) + { + v78 = 0; + LOBYTE(v12) = 0; + v82[0] = 1; + *(_DWORD *)&v82[1] = 0; + v14 = *(_BYTE *)(v87 + 16); + v86 = 0; +LABEL_34: + if ( v6 == 16 ) + { +LABEL_15: + MaxCount = 22; + Buf = 22; + v89[0] = (unsigned int *)&unk_4E93FC; + if ( !v14 ) + goto LABEL_37; + goto LABEL_16; + } +LABEL_35: + MaxCount = v6; + Buf = v6; + goto LABEL_36; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v66 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v66 >= *(_DWORD *)(a1 + 12) ) + { + v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v12 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v12) = *v66; + } + } + v13 = *(_BYTE *)(v87 + 74); + v14 = *(_BYTE *)(v87 + 16); + v78 = v13 == (char)v12; + if ( v13 == (_BYTE)v12 || *(_BYTE *)(v87 + 75) == (_BYTE)v12 ) + { + if ( (!v14 || *(_BYTE *)(v87 + 37) != (_BYTE)v12) && *(_BYTE *)(v87 + 36) != (_BYTE)v12 ) + { + v15 = *(_DWORD *)(a1 + 8); + if ( v15 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v15 + 1; + HIDWORD(a1) = -1; + v82[0] = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v82[0] ) + { + *(_DWORD *)&v82[1] = 0; + v86 = 0; + v14 = *(_BYTE *)(v87 + 16); + if ( v6 == 16 ) + goto LABEL_15; + goto LABEL_35; + } + LOBYTE(v12) = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v14 = *(_BYTE *)(v87 + 16); + } + } + else + { + v78 = 0; + } + *(_DWORD *)&v82[1] = 0; + v16 = v8; + v17 = v6; + v86 = 0; + v18 = v16; + while ( 1 ) + { + if ( v14 && *(_BYTE *)(v87 + 37) == (_BYTE)v12 || *(_BYTE *)(v87 + 36) == (_BYTE)v12 ) + { +LABEL_66: + v82[0] = 0; + v6 = v17; + goto LABEL_34; + } + if ( *(_BYTE *)(v87 + 78) != (_BYTE)v12 ) + break; + v36 = !v86 || v17 == 10; + if ( !v36 ) + goto LABEL_24; + v86 = v18 == 0 || v17 == 8; + if ( !v86 ) + { + ++*(_DWORD *)&v82[1]; + v86 = v36; +LABEL_28: + v19 = (_DWORD *)a1; + v20 = *(_DWORD *)(a1 + 8); + if ( v20 < *(_DWORD *)(a1 + 12) ) + goto LABEL_29; + goto LABEL_62; + } + v19 = (_DWORD *)a1; + *(_DWORD *)&v82[1] = 0; + v17 = 8; + v20 = *(_DWORD *)(a1 + 8); + if ( v20 < *(_DWORD *)(a1 + 12) ) + { +LABEL_29: + HIDWORD(a1) = -1; + v19[2] = v20 + 1; +LABEL_30: + v76 = 0; + if ( v19[2] >= v19[3] && (*(int (__fastcall **)(_DWORD *))(*v19 + 36))(v19) == -1 ) + { + LODWORD(a1) = 0; + v76 = 1; + } + goto LABEL_31; + } +LABEL_62: + (*(void (__fastcall **)(_DWORD *))(*v19 + 40))(v19); + v19 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_30; + v76 = 1; +LABEL_31: + v21 = a3 == -1; + v83 = v21 & (a2 != 0); + if ( v83 ) + { + v21 = 0; + if ( a2[2] >= a2[3] ) + { + v43 = (*(int (**)(void))(*a2 + 36))(); + v21 = 0; + if ( v43 == -1 ) + { + a2 = 0; + v21 = v83; + } + } + } + if ( v76 == v21 ) + { + v82[0] = 1; + v6 = v17; + v14 = *(_BYTE *)(v87 + 16); + goto LABEL_34; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v46 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ) + { + v12 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v12 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v12) = *v46; + } + } + v14 = *(_BYTE *)(v87 + 16); + if ( !v86 ) + goto LABEL_66; + } + if ( !v86 ) + goto LABEL_66; +LABEL_24: + if ( *(_BYTE *)(v87 + 76) != (_BYTE)v12 && *(_BYTE *)(v87 + 77) != (_BYTE)v12 ) + { + v82[0] = 0; + v6 = v17; + v86 = 1; + goto LABEL_34; + } + if ( v18 == 0 || v17 == 16 ) + { + *(_DWORD *)&v82[1] = 0; + v17 = 16; + v86 = 0; + goto LABEL_28; + } + v82[0] = 0; + v6 = v17; + MaxCount = v17; + Buf = v17; + v86 = 1; +LABEL_36: + v89[0] = (unsigned int *)&unk_4E93FC; + if ( v14 ) +LABEL_16: + std::string::reserve(v89, (std::string *)0x20, v69); +LABEL_37: + v77 = v6; + v22 = 0xFFFFFFFFFFFFFFFFLL / v6; + v80 = *(_BYTE *)(v87 + 100); + if ( v80 ) + { + if ( v82[0] ) + goto LABEL_160; + v79 = 0; + v23 = 0; + v24 = 0; + Bufa = (void *)(v87 + 78); + while ( !*(_BYTE *)(v87 + 16) || *(_BYTE *)(v87 + 37) != (_BYTE)v12 ) + { + if ( (_BYTE)v12 == *(_BYTE *)(v87 + 36) ) + goto LABEL_97; + v48 = memchr(Bufa, (char)v12, MaxCount); + if ( !v48 ) + goto LABEL_97; + v49 = v48 - (_BYTE *)Bufa; + if ( v48 - (_BYTE *)Bufa > 15 ) + v49 -= 6; + if ( v22 >= __PAIR64__(v24, v23) ) + { + v50 = v24 * v77 + v23 * HIDWORD(v77); + v51 = (unsigned int)v77 * (unsigned __int64)(unsigned int)v23; + v52 = v77 * v23; + LODWORD(v51) = v49; + LODWORD(v53) = ~v49; + v54 = v50 + HIDWORD(v51); + HIDWORD(v53) = ~((int)v51 >> 31); + v79 |= v53 < __PAIR64__(v54, v52); + v24 = ((int)v51 + __PAIR64__(v54, v52)) >> 32; + v23 = v51 + v52; + ++*(_DWORD *)&v82[1]; + goto LABEL_108; + } + v55 = (_DWORD *)a1; + v79 = v80; + v56 = *(_DWORD *)(a1 + 8); + if ( v56 < *(_DWORD *)(a1 + 12) ) + { +LABEL_109: + HIDWORD(a1) = -1; + v55[2] = v56 + 1; + goto LABEL_110; + } +LABEL_115: + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + v55 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v72 = v80; + goto LABEL_111; + } +LABEL_110: + v72 = 0; + if ( v55[2] >= v55[3] ) + { + v72 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55) == -1 ) + { + LODWORD(a1) = 0; + v72 = v80; + } + } +LABEL_111: + v57 = a3 == -1; + v58 = v57 & (a2 != 0); + if ( v58 ) + { + v57 = 0; + if ( a2[2] >= a2[3] ) + { + v60 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v57 = 0; + if ( v60 == -1 ) + { + a2 = 0; + v57 = v58; + } + } + } + if ( v57 == v72 ) + { + v31 = v89[0]; + v32 = *(v89[0] - 3); + goto LABEL_51; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v59 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v59 >= *(_DWORD *)(a1 + 12) ) + { + v67 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v12) = v67; + if ( v67 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v12) = -1; + } + } + else + { + LOBYTE(v12) = *v59; + } + } + } + v31 = v89[0]; + v32 = *(v89[0] - 3); + if ( !*(_DWORD *)&v82[1] ) + { + v80 = 0; + *(_DWORD *)v82 = *(unsigned __int8 *)(v87 + 16); + goto LABEL_51; + } + v73 = (std::string *)(v32 + 1); + if ( v32 + 1 > *(v89[0] - 2) || *((int *)v89[0] - 1) > 0 ) + std::string::reserve(v89, v73, v70); + v61 = v82[1]; + *(_DWORD *)&v82[1] = 0; + *((_BYTE *)v89[0] + *(v89[0] - 3)) = v61; + v62 = v89[0]; + if ( (_UNKNOWN *)v89[0] != &unk_4E93FC ) + { + *(v89[0] - 1) = 0; + *(v62 - 3) = (unsigned int)v73; + *((_BYTE *)v62 + v32 + 1) = 0; + } +LABEL_108: + v55 = (_DWORD *)a1; + v56 = *(_DWORD *)(a1 + 8); + if ( v56 < *(_DWORD *)(a1 + 12) ) + goto LABEL_109; + goto LABEL_115; + } + if ( v82[0] ) + { +LABEL_160: + v68 = v82[0]; + v31 = v89[0]; + v79 = 0; + v23 = 0; + v82[0] = 0; + v24 = 0; + v80 = v68; + v32 = *(v89[0] - 3); + goto LABEL_51; + } + v79 = 0; + v23 = 0; + v24 = 0; +LABEL_40: + v25 = (char)v12; + if ( Buf > 10 ) + { + if ( (unsigned __int8)(v12 - 48) <= 9u ) + goto LABEL_43; + while ( (unsigned __int8)(v12 - 97) <= 5u ) + { + v26 = v25 - 87; + if ( v22 < __PAIR64__(v24, v23) ) + goto LABEL_45; +LABEL_70: + v37 = v24 * v77; + v38 = v26 >> 31; + v39 = v37 + v23 * HIDWORD(v77); + v40 = v23; + v41 = v26; + v42 = (unsigned int)v77 * (unsigned __int64)(unsigned int)v40; + HIDWORD(v42) += v39; + v79 |= __PAIR64__(~(v26 >> 31), ~v26) < v42; + v27 = (_DWORD *)a1; + v24 = (v42 + __PAIR64__(v38, v41)) >> 32; + v23 = v42 + v41; + ++*(_DWORD *)&v82[1]; + v28 = *(_DWORD *)(a1 + 8); + if ( v28 < *(_DWORD *)(a1 + 12) ) + goto LABEL_46; +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v27 + 40))(v27); + v27 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_47; + v81 = 1; +LABEL_48: + v29 = a3 == -1; + v30 = v29 & (a2 != 0); + if ( v30 ) + { + v29 = 0; + if ( a2[2] >= a2[3] ) + { + v45 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v29 = 0; + if ( v45 == -1 ) + { + a2 = 0; + v29 = v30; + } + } + } + if ( v81 == v29 ) + { + v31 = v89[0]; + v80 = 1; + v32 = *(v89[0] - 3); + goto LABEL_51; + } + LOBYTE(v12) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_40; + v44 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v44 < *(_DWORD *)(a1 + 12) ) + { + LOBYTE(v12) = *v44; + goto LABEL_40; + } + v25 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + LOBYTE(v12) = v25; + if ( v25 != -1 ) + goto LABEL_40; + LODWORD(a1) = 0; + if ( Buf <= 10 ) + goto LABEL_97; + LOBYTE(v12) = -1; + } + if ( (unsigned __int8)(v12 - 65) <= 5u ) + { + v26 = v25 - 55; + goto LABEL_44; + } + } + else if ( (char)v12 > 47 && (char)(Buf + 48) > (char)v12 ) + { +LABEL_43: + v26 = (char)v12 - 48; +LABEL_44: + if ( v22 >= __PAIR64__(v24, v23) ) + goto LABEL_70; +LABEL_45: + v27 = (_DWORD *)a1; + v79 = 1; + v28 = *(_DWORD *)(a1 + 8); + if ( v28 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_71; +LABEL_46: + HIDWORD(a1) = -1; + v27[2] = v28 + 1; +LABEL_47: + v81 = 0; + if ( v27[2] >= v27[3] ) + { + v81 = 0; + if ( (*(int (__fastcall **)(_DWORD *))(*v27 + 36))(v27) == -1 ) + { + LODWORD(a1) = 0; + v81 = 1; + } + } + goto LABEL_48; + } +LABEL_97: + v31 = v89[0]; + v32 = *(v89[0] - 3); + v80 = 0; +LABEL_51: + if ( v32 ) + { + std::string::push_back(v89, (std::string *)v82[1], v70); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v87 + 8), *(_DWORD *)(v87 + 12), (const char **)v89) ) + *a5 = 4; + v31 = v89[0]; + if ( *(_DWORD *)&v82[1] || v86 || *(v89[0] - 3) ) + goto LABEL_91; +LABEL_54: + v33 = a6; + *a6 = 0; + v33[1] = 0; + *a5 = 4; + } + else + { + if ( !*(_DWORD *)&v82[1] && !v86 ) + goto LABEL_54; +LABEL_91: + if ( v82[0] ) + goto LABEL_54; + if ( v79 ) + { + v65 = a6; + *a6 = -1; + v65[1] = -1; + *a5 = 4; + } + else + { + if ( v78 ) + { + v23 = -v23; + v24 = (unsigned __int64)-__SPAIR64__(v24, v23) >> 32; + } + v47 = a6; + *a6 = v23; + v47[1] = v24; + } + } + if ( v80 ) + *a5 |= 2u; + v34 = a1; + if ( v31 == (unsigned int *)&unk_4E93FC ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v31 - 3, (int)&v88); + return v34; +} +// 46685D: variable 'v69' is possibly undefined +// 466CCC: variable 'v70' is possibly undefined + +//----- (00467210) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::_M_extract_float( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int **a6) +{ + unsigned int **v6; // ebx + char v7; // si + char v8; // dl + char v9; // dl + char v10; // di + int v11; // edi + char v12; // al + char v13; // si + unsigned int *v14; // eax + int v15; // edx + _DWORD *v16; // ecx + unsigned int v17; // eax + char v18; // di + char v19; // al + char v20; // si + _BYTE *v21; // eax + int v22; // edi + unsigned int *v23; // eax + unsigned int v24; // eax + int v25; // eax + char v26; // al + void *v27; // eax + char v28; // si + int v29; // edx + unsigned int v30; // edi + unsigned int *v31; // eax + unsigned int *v32; // edx + _DWORD *v33; // ecx + unsigned int v34; // eax + char v35; // di + char v36; // al + char v37; // si + unsigned int *v38; // edx + int v39; // edi + int v40; // edi + char v41; // al + unsigned __int64 v42; // kr00_8 + int v44; // edx + bool v45; // zf + unsigned int *v46; // eax + unsigned int *v47; // edx + int v48; // edi + unsigned int *v49; // eax + int v50; // edi + unsigned int *v51; // eax + _DWORD *v52; // ecx + unsigned int v53; // eax + char v54; // di + char v55; // al + char v56; // si + char v57; // dl + int v58; // edx + char *v59; // esi + char *v60; // edi + char v61; // cl + unsigned int *v62; // eax + char v63; // si + _BYTE *v64; // eax + int v65; // edx + _BYTE *v66; // eax + unsigned int *v67; // eax + unsigned int *v68; // edx + char v69; // dl + int v70; // edx + _DWORD *v71; // ecx + unsigned int v72; // eax + char v73; // dl + char v74; // bl + unsigned int *v75; // eax + int v76; // eax + _BYTE *v77; // eax + int v78; // eax + _BYTE *v79; // eax + unsigned int v80; // eax + unsigned int *v81; // eax + _BYTE *v82; // eax + unsigned int v83; // [esp+4h] [ebp-54h] + std::string *v84; // [esp+14h] [ebp-44h] + std::string *v85; // [esp+14h] [ebp-44h] + std::string *v86; // [esp+14h] [ebp-44h] + void *Buf; // [esp+18h] [ebp-40h] + __int16 v88; // [esp+1Eh] [ebp-3Ah] + bool v89; // [esp+1Fh] [ebp-39h] + char v90; // [esp+20h] [ebp-38h] + int v91; // [esp+20h] [ebp-38h] + int v92; // [esp+24h] [ebp-34h] + char v93; // [esp+28h] [ebp-30h] + int v94; // [esp+28h] [ebp-30h] + unsigned int *v95; // [esp+28h] [ebp-30h] + char v96; // [esp+28h] [ebp-30h] + int v97; // [esp+28h] [ebp-30h] + char v98; // [esp+28h] [ebp-30h] + int v99; // [esp+2Ch] [ebp-2Ch] + char v100; // [esp+3Bh] [ebp-1Dh] BYREF + unsigned int *v101[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v6 = a6; + v99 = std::__use_cache>::operator()((int *)(a4 + 108)); + v7 = HIDWORD(a1) == -1; + v8 = v7 & ((_DWORD)a1 != 0); + if ( v8 ) + { + v7 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v98 = v8; + if ( (*(int (**)(void))(*(_DWORD *)a1 + 36))() == -1 ) + { + LODWORD(a1) = 0; + v7 = v98; + } + } + } + v9 = a3 == -1; + v10 = v9 & (a2 != 0); + if ( v10 ) + { + v9 = 0; + if ( a2[2] >= a2[3] ) + { + v78 = (*(int (**)(void))(*a2 + 36))(); + v9 = 0; + if ( v78 == -1 ) + { + a2 = 0; + v9 = v10; + } + } + } + if ( v7 == v9 ) + { + v92 = 0; + LOBYTE(v11) = 0; + v93 = 0; + v89 = 1; + v12 = *(_BYTE *)(v99 + 16); + goto LABEL_5; + } + LOBYTE(v11) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v79 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v79 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v11) = *v79; + } + } + v69 = *(_BYTE *)(v99 + 75); + v12 = *(_BYTE *)(v99 + 16); + if ( v69 != (_BYTE)v11 && *(_BYTE *)(v99 + 74) != (_BYTE)v11 + || v12 && *(_BYTE *)(v99 + 37) == (_BYTE)v11 + || *(_BYTE *)(v99 + 36) == (_BYTE)v11 ) + { + goto LABEL_146; + } + std::string::push_back(v6, (std::string *)(2 * (v69 != (char)v11) + 43), v83); + v80 = *(_DWORD *)(a1 + 8); + if ( v80 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v80 + 1; + HIDWORD(a1) = -1; + v89 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v89 ) + { + LOBYTE(v11) = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v12 = *(_BYTE *)(v99 + 16); +LABEL_146: + v92 = 0; + v70 = 0; + a6 = v6; + while ( 1 ) + { + if ( v12 && *(_BYTE *)(v99 + 37) == (_BYTE)v11 ) + { + v93 = v70; + v6 = a6; + v101[0] = (unsigned int *)&unk_4E93FC; + v89 = 0; + goto LABEL_142; + } + if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 || *(_BYTE *)(v99 + 78) != (_BYTE)v11 ) + { + v93 = v70; + v6 = a6; + v89 = 0; + goto LABEL_5; + } + if ( (_BYTE)v70 ) + goto LABEL_152; + v97 = *(*a6 - 3); + if ( v97 + 1 > *(*a6 - 2) || (int)*(*a6 - 1) > 0 ) + std::string::reserve(a6, (std::string *)(v97 + 1), v83); + *((_BYTE *)*a6 + *(*a6 - 3)) = 48; + v75 = *a6; + v70 = (int)(*a6 - 3); + if ( *a6 == (unsigned int *)&unk_4E93FC ) + { +LABEL_152: + v71 = (_DWORD *)a1; + ++v92; + v72 = *(_DWORD *)(a1 + 8); + if ( v72 < *(_DWORD *)(a1 + 12) ) + goto LABEL_153; + } + else + { + *(v75 - 1) = 0; + *(v75 - 3) = v97 + 1; + ++v92; + *(_BYTE *)(v70 + v97 + 13) = 0; + v71 = (_DWORD *)a1; + v72 = *(_DWORD *)(a1 + 8); + if ( v72 < *(_DWORD *)(a1 + 12) ) + { +LABEL_153: + HIDWORD(a1) = -1; + v71[2] = v72 + 1; + goto LABEL_154; + } + } + (*(void (__fastcall **)(_DWORD *, int))(*v71 + 40))(v71, v70); + v71 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v96 = 1; + goto LABEL_155; + } +LABEL_154: + v96 = 0; + if ( v71[2] >= v71[3] && (*(int (__fastcall **)(_DWORD *, int))(*v71 + 36))(v71, v70) == -1 ) + { + LODWORD(a1) = 0; + v96 = 1; + } +LABEL_155: + v73 = a3 == -1; + v74 = v73 & (a2 != 0); + if ( v74 ) + { + v73 = 0; + if ( a2[2] >= a2[3] ) + { + v76 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v73 = 0; + if ( v76 == -1 ) + { + a2 = 0; + v73 = v74; + } + } + } + if ( v96 == v73 ) + { + v6 = a6; + v93 = 1; + v89 = 1; + v12 = *(_BYTE *)(v99 + 16); + goto LABEL_5; + } + LOBYTE(v11) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v77 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v77 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v11) = *v77; + } + } + v12 = *(_BYTE *)(v99 + 16); + v70 = 1; + } + } + v92 = 0; + v93 = 0; + v12 = *(_BYTE *)(v99 + 16); +LABEL_5: + v101[0] = (unsigned int *)&unk_4E93FC; + if ( v12 ) +LABEL_142: + std::string::reserve(v101, (std::string *)0x20, v83); + v90 = *(_BYTE *)(v99 + 100); + if ( !v90 ) + { + if ( !v89 ) + { + v88 = 0; +LABEL_9: + v13 = v11; + if ( (unsigned __int8)(v11 - 48) <= 9u ) + { +LABEL_10: + v91 = *(*v6 - 3); + if ( v91 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v91 + 1), v83); + v93 = 1; + *((_BYTE *)*v6 + *(*v6 - 3)) = v13; + v14 = *v6; + v15 = (int)(*v6 - 3); + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v14 - 1) = 0; + *(v14 - 3) = v91 + 1; + *(_BYTE *)(v15 + v91 + 13) = 0; + } + goto LABEL_15; + } + while ( 1 ) + { + if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 && !v88 ) + { + std::string::push_back(v6, (std::string *)0x2E, v83); + v88 = 1; +LABEL_15: + v16 = (_DWORD *)a1; + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_41; +LABEL_16: + HIDWORD(a1) = -1; + v16[2] = v17 + 1; +LABEL_17: + v18 = 0; + if ( v16[2] >= v16[3] && (*(int (__fastcall **)(_DWORD *, int))(*v16 + 36))(v16, v15) == -1 ) + { + LODWORD(a1) = 0; + v18 = 1; + } + goto LABEL_18; + } + if ( *(_BYTE *)(v99 + 92) != (_BYTE)v11 && *(_BYTE *)(v99 + 98) != (_BYTE)v11 ) + goto LABEL_60; + v93 &= HIBYTE(v88) ^ 1; + if ( !v93 ) + goto LABEL_60; + v22 = *(*v6 - 3); + if ( v22 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v22 + 1), v83); + *((_BYTE *)*v6 + *(*v6 - 3)) = 101; + v23 = *v6; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v23 - 1) = 0; + *(v23 - 3) = v22 + 1; + *((_BYTE *)v23 + v22 + 1) = 0; + } + v24 = *(_DWORD *)(a1 + 8); + if ( v24 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v24 + 1; + HIDWORD(a1) = -1; + if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) + goto LABEL_214; + LOBYTE(v11) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v82 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v82 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v11) = -1; + } + } + else + { + LOBYTE(v11) = *v82; + } + } + if ( *(_BYTE *)(v99 + 75) == (_BYTE)v11 ) + { + v25 = 43; + } + else + { + if ( *(_BYTE *)(v99 + 74) != (_BYTE)v11 ) + { + HIBYTE(v88) = v93; + goto LABEL_9; + } + v25 = 45; + } + std::string::push_back(v6, (std::string *)v25, v83); + v16 = (_DWORD *)a1; + HIBYTE(v88) = v93; + v17 = *(_DWORD *)(a1 + 8); + if ( v17 < *(_DWORD *)(a1 + 12) ) + goto LABEL_16; +LABEL_41: + (*(void (__fastcall **)(_DWORD *, int))(*v16 + 40))(v16, v15); + v16 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_17; + v18 = 1; +LABEL_18: + v19 = a3 == -1; + v20 = v19 & (a2 != 0); + if ( v20 ) + { + v19 = 0; + if ( a2[2] >= a2[3] ) + { + v44 = (*(int (**)(void))(*a2 + 36))(); + v19 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v19 = v20; + } + } + } + if ( v18 == v19 ) + goto LABEL_60; + LOBYTE(v11) = BYTE4(a1); + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_9; + v21 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v21 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v11) = -1; + } + goto LABEL_9; + } + LOBYTE(v11) = *v21; + v13 = *v21; + if ( (unsigned __int8)(*v21 - 48) <= 9u ) + goto LABEL_10; + } + } +LABEL_201: + v38 = v101[0]; + if ( *(v101[0] - 3) ) + goto LABEL_63; + goto LABEL_68; + } + if ( v89 ) + goto LABEL_201; + v88 = 0; + v26 = *(_BYTE *)(v99 + 16); + Buf = (void *)(v99 + 78); + while ( 1 ) + { + while ( 1 ) + { + if ( v26 && *(_BYTE *)(v99 + 37) == (_BYTE)v11 ) + { + LOBYTE(v88) = HIBYTE(v88) | v88; + if ( (_BYTE)v88 ) + { + v38 = v101[0]; + v40 = *(v101[0] - 3); +LABEL_65: + if ( !v40 ) + goto LABEL_68; + goto LABEL_66; + } + if ( !v92 ) + { + v81 = *v6; + if ( (int)*(*v6 - 1) <= 0 ) + { + if ( v81 != (unsigned int *)&unk_4E93FC ) + { + *(v81 - 1) = 0; + *(v81 - 3) = 0; + *(_BYTE *)v81 = 0; + } + } + else + { + if ( v81 != (unsigned int *)&unk_4E93FC ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v81 - 3, (int)&v100); + *v6 = (unsigned int *)&unk_4E93FC; + } + goto LABEL_201; + } + v59 = (char *)*(v101[0] - 3); + v85 = (std::string *)v59; + v60 = v59 + 1; + if ( (unsigned int)(v59 + 1) > *(v101[0] - 2) || *((int *)v101[0] - 1) > 0 ) + std::string::reserve(v101, (std::string *)(v59 + 1), v83); + v61 = v92; + HIBYTE(v88) = 0; + v92 = 0; + *((_BYTE *)v101[0] + *(v101[0] - 3)) = v61; + v62 = v101[0]; + v32 = v101[0] - 3; + if ( (_UNKNOWN *)v101[0] != &unk_4E93FC ) + goto LABEL_118; + goto LABEL_55; + } + if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 ) + break; + v27 = memchr(Buf, (char)v11, 0xAu); + if ( v27 ) + { + v28 = (_BYTE)v27 - (_BYTE)Buf + 48; + v29 = *(*v6 - 3); + v94 = v29; + v30 = v29 + 1; + if ( v29 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v29 + 1), v83); + *((_BYTE *)*v6 + *(*v6 - 3)) = v28; + v31 = *v6; + v32 = *v6 - 3; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v31 - 1) = 0; + *(v31 - 3) = v30; + *((_BYTE *)v32 + v94 + 13) = 0; + } + ++v92; + v93 = v90; + goto LABEL_55; + } + if ( *(_BYTE *)(v99 + 92) != (_BYTE)v11 && *(_BYTE *)(v99 + 98) != (_BYTE)v11 ) + goto LABEL_60; + v38 = v101[0]; + v45 = ((HIBYTE(v88) ^ 1) & (unsigned __int8)v93) == 0; + v93 &= HIBYTE(v88) ^ 1; + v39 = *(v101[0] - 3); + if ( v45 ) + goto LABEL_61; + if ( v39 && !(_BYTE)v88 ) + { + v86 = (std::string *)(v39 + 1); + if ( v39 + 1 > *(v101[0] - 2) || *((int *)v101[0] - 1) > 0 ) + std::string::reserve(v101, v86, v83); + *((_BYTE *)v101[0] + *(v101[0] - 3)) = v92; + v67 = v101[0]; + v68 = v101[0] - 3; + if ( (_UNKNOWN *)v101[0] != &unk_4E93FC ) + { + *(v101[0] - 1) = 0; + *(v67 - 3) = (unsigned int)v86; + *((_BYTE *)v68 + v39 + 13) = 0; + } + } + v50 = *(*v6 - 3); + if ( v50 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v50 + 1), v83); + *((_BYTE *)*v6 + *(*v6 - 3)) = 101; + v51 = *v6; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v51 - 1) = 0; + *(v51 - 3) = v50 + 1; + *((_BYTE *)v51 + v50 + 1) = 0; + } + v52 = (_DWORD *)a1; + v53 = *(_DWORD *)(a1 + 8); + if ( v53 < *(_DWORD *)(a1 + 12) ) + { + HIDWORD(a1) = -1; + *(_DWORD *)(a1 + 8) = v53 + 1; +LABEL_102: + v54 = 0; + if ( v52[2] >= v52[3] && (*(int (__fastcall **)(_DWORD *))(*v52 + 36))(v52) == -1 ) + { + LODWORD(a1) = 0; + v54 = v93; + } + goto LABEL_103; + } + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v52 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_102; + v54 = v93; +LABEL_103: + v55 = a3 == -1; + v56 = v55 & (a2 != 0); + if ( v56 ) + { + v55 = 0; + if ( a2[2] >= a2[3] ) + { + v65 = (*(int (**)(void))(*a2 + 36))(); + v55 = 0; + if ( v65 == -1 ) + { + a2 = 0; + v55 = v56; + } + } + } + if ( v54 == v55 ) + { +LABEL_214: + v38 = v101[0]; + if ( *(v101[0] - 3) ) + goto LABEL_66; + goto LABEL_68; + } + LOBYTE(v11) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v66 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v66 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v11) = -1; + } + } + else + { + LOBYTE(v11) = *v66; + } + } + v57 = *(_BYTE *)(v99 + 75); + v26 = *(_BYTE *)(v99 + 16); + if ( v57 == (_BYTE)v11 || *(_BYTE *)(v99 + 74) == (_BYTE)v11 ) + { + if ( !v26 || *(_BYTE *)(v99 + 37) != (_BYTE)v11 ) + { + if ( *(_BYTE *)(v99 + 36) == (_BYTE)v11 ) + goto LABEL_108; + v63 = 2 * (v57 != (char)v11) + 43; + v85 = (std::string *)*(*v6 - 3); + v60 = (char *)v85 + 1; + if ( (unsigned int)v85 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)((char *)v85 + 1), v83); + *((_BYTE *)*v6 + *(*v6 - 3)) = v63; + v62 = *v6; + HIBYTE(v88) = v93; + v32 = *v6 - 3; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { +LABEL_118: + *(v62 - 1) = 0; + *(v62 - 3) = (unsigned int)v60; + *((_BYTE *)v85 + (_DWORD)v32 + 13) = 0; + } +LABEL_55: + v33 = (_DWORD *)a1; + v34 = *(_DWORD *)(a1 + 8); + if ( v34 < *(_DWORD *)(a1 + 12) ) + goto LABEL_56; + goto LABEL_85; + } + HIBYTE(v88) = *(_BYTE *)(v99 + 16); + v93 = HIBYTE(v88); + } + else + { +LABEL_108: + HIBYTE(v88) = v93; + } + } + v45 = v88 == 0; + HIBYTE(v88) |= v88; + v38 = v101[0]; + v40 = *(v101[0] - 3); + if ( !v45 ) + goto LABEL_65; + if ( v40 ) + { + v84 = (std::string *)(v40 + 1); + if ( v40 + 1 > *(v101[0] - 2) || *((int *)v101[0] - 1) > 0 ) + std::string::reserve(v101, v84, v83); + *((_BYTE *)v101[0] + *(v101[0] - 3)) = v92; + v46 = v101[0]; + v47 = v101[0] - 3; + if ( (_UNKNOWN *)v101[0] != &unk_4E93FC ) + { + *(v101[0] - 1) = 0; + *(v46 - 3) = (unsigned int)v84; + *((_BYTE *)v47 + v40 + 13) = 0; + } + } + v48 = *(*v6 - 3); + if ( v48 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v48 + 1), v83); + v32 = (unsigned int *)*(*v6 - 3); + LOBYTE(v88) = v90; + *((_BYTE *)v32 + (_DWORD)*v6) = 46; + v49 = *v6; + if ( *v6 == (unsigned int *)&unk_4E93FC ) + goto LABEL_55; + *(v49 - 1) = 0; + *(v49 - 3) = v48 + 1; + *((_BYTE *)v49 + v48 + 1) = 0; + v33 = (_DWORD *)a1; + v34 = *(_DWORD *)(a1 + 8); + if ( v34 < *(_DWORD *)(a1 + 12) ) + { +LABEL_56: + HIDWORD(a1) = -1; + v33[2] = v34 + 1; + goto LABEL_57; + } +LABEL_85: + (*(void (__fastcall **)(_DWORD *, unsigned int *))(*v33 + 40))(v33, v32); + v33 = (_DWORD *)a1; + HIDWORD(a1) = -1; + if ( !(_DWORD)a1 ) + { + v35 = v90; + goto LABEL_58; + } +LABEL_57: + v35 = 0; + if ( v33[2] >= v33[3] && (*(int (__fastcall **)(_DWORD *, unsigned int *))(*v33 + 36))(v33, v32) == -1 ) + { + LODWORD(a1) = 0; + v35 = v90; + } +LABEL_58: + v36 = a3 == -1; + v37 = v36 & (a2 != 0); + if ( v37 ) + { + v36 = 0; + if ( a2[2] >= a2[3] ) + { + v58 = (*(int (**)(void))(*a2 + 36))(); + v36 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v36 = v37; + } + } + } + if ( v36 == v35 ) + break; + LOBYTE(v11) = BYTE4(a1); + if ( (_DWORD)a1 && HIDWORD(a1) == -1 ) + { + v64 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v64 >= *(_DWORD *)(a1 + 12) ) + { + v11 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v11 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v11) = -1; + } + } + else + { + LOBYTE(v11) = *v64; + } + } + v26 = *(_BYTE *)(v99 + 16); + } +LABEL_60: + v38 = v101[0]; + v39 = *(v101[0] - 3); +LABEL_61: + if ( !v39 ) + goto LABEL_68; + if ( v88 ) + goto LABEL_66; +LABEL_63: + std::string::push_back(v101, (std::string *)(char)v92, v83); + v38 = v101[0]; +LABEL_66: + v95 = v38; + v41 = std::__verify_grouping(*(char **)(v99 + 8), *(_DWORD *)(v99 + 12), (const char **)v101); + v38 = v95; + if ( !v41 ) + *a5 = 4; +LABEL_68: + v42 = a1; + if ( v38 == (unsigned int *)&unk_4E93FC ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v38 - 3, (int)&v100); + return v42; +} +// 4672F4: variable 'v83' is possibly undefined +// 467492: variable 'v15' is possibly undefined +// 467DAA: variable 'v70' is possibly undefined +// 467DD2: variable 'v32' is possibly undefined + +//----- (004680F0) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); +} + +//----- (00468100) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (00468110) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); +} + +//----- (00468120) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); +} + +//----- (00468130) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); +} + +//----- (00468140) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 468BE0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (00468160) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 468BF0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (00468180) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 468C00: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (004681A0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned __int16 *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 468C10: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (004681C0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 468C20: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (004681E0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 468C30: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (00468200) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + int v6; // esi + unsigned __int64 result; // rax + unsigned int v8[8]; // [esp+2Ch] [ebp-20h] BYREF + + v6 = *(_DWORD *)(a4 + 12); + *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; + result = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, v8); + *(_DWORD *)(a4 + 12) = v6; + *a6 = v8[0]; + return result; +} +// 468200: using guessed type unsigned int var_20[8]; + +//----- (00468270) -------------------------------------------------------- +unsigned __int64 __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + int *a5, + _BYTE *a6) +{ + _BYTE *v6; // edi + int v8; // eax + int v9; // ecx + _DWORD *v10; // edi + int v11; // eax + bool v12; // dl + _DWORD *v13; // ebp + int v14; // eax + unsigned int v15; // edi + bool v16; // si + unsigned int v17; // eax + bool v18; // cl + char v19; // si + char v20; // si + char v21; // bl + _BYTE *v22; // eax + int v23; // eax + int v24; // eax + unsigned int v25; // eax + bool v26; // bl + _DWORD *v27; // edi + unsigned int v28; // ebp + int v29; // eax + unsigned int v30; // eax + char v31; // [esp+27h] [ebp-35h] + char v32; // [esp+27h] [ebp-35h] + bool v33; // [esp+27h] [ebp-35h] + bool v34; // [esp+28h] [ebp-34h] + bool v35; // [esp+2Ch] [ebp-30h] + bool v36; // [esp+2Ch] [ebp-30h] + bool v37; // [esp+2Dh] [ebp-2Fh] + bool v38; // [esp+2Eh] [ebp-2Eh] + bool v39; // [esp+2Fh] [ebp-2Dh] + unsigned int v40[8]; // [esp+3Ch] [ebp-20h] BYREF + + if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) + { + v40[0] = -1; + a1 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v40); + if ( v40[0] > 1 ) + { + *a6 = 1; + *a5 = 4; + if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) + *a5 |= 2u; + } + else + { + v6 = a6; + *a6 = v40[0]; + *v6 &= 1u; + } + return a1; + } + v8 = std::__use_cache>::operator()((int *)(a4 + 108)); + v9 = *(_DWORD *)(v8 + 32); + v10 = (_DWORD *)v8; + v11 = *(_DWORD *)(v8 + 24); + v37 = v11 == 0; + if ( !(v11 | v9) ) + goto LABEL_30; + v38 = 1; + v12 = 1; + v13 = v10; + v35 = v9 == 0; + v14 = HIDWORD(a1); + v15 = 0; + while ( 1 ) + { + v32 = v14 == -1; + v19 = v32 & ((_DWORD)a1 != 0); + if ( v19 ) + { + v32 = 0; + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v39 = v12; + v24 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v12 = v39; + if ( v24 == -1 ) + { + LODWORD(a1) = 0; + v32 = v19; + } + } + } + v20 = a3 == -1; + v21 = v20 & (a2 != 0); + if ( v21 ) + { + v20 = 0; + if ( a2[2] >= a2[3] ) + { + v34 = v12; + v23 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v12 = v34; + if ( v23 == -1 ) + { + a2 = 0; + v20 = v21; + } + } + } + if ( v32 == v20 ) + { + v31 = 1; + v25 = v15; + v26 = v12; + v27 = v13; + v28 = v25; +LABEL_46: + if ( v26 && v27[8] == v28 && v28 ) + { + *a6 = 0; + if ( v38 && v27[6] == v28 ) + goto LABEL_31; + } + else + { + if ( !v38 || v27[6] != v28 || !v28 ) + { + *a6 = 0; + if ( !v31 ) + goto LABEL_31; + *a5 = 6; + return a1; + } + *a6 = 1; + } + v29 = 2 * (v31 != 0); + goto LABEL_61; + } + LOBYTE(v22) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v22 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ) + { + v33 = v12; + v22 = (_BYTE *)(*(int (**)(void))(*(_DWORD *)a1 + 36))(); + v12 = v33; + if ( v22 == (_BYTE *)-1 ) + LODWORD(a1) = 0; + } + else + { + LOBYTE(v22) = *v22; + } + } + if ( !v35 ) + v12 = *(_BYTE *)(v13[7] + v15) == (unsigned __int8)v22; + if ( !v12 ) + break; + if ( !v37 ) + goto LABEL_8; +LABEL_9: + v31 = v35 && !v38; + if ( v31 ) + { + if ( v12 && v13[8] == v15 && v15 ) + { + *a6 = 0; + v29 = 0; + goto LABEL_61; + } + goto LABEL_30; + } + v16 = v12 || v38; + if ( !v12 && !v38 ) + goto LABEL_30; + ++v15; + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + { + v36 = v12; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v12 = v36; + } + else + { + *(_DWORD *)(a1 + 8) = v17 + 1; + } + HIDWORD(a1) = -1; + if ( !v12 ) + { + v35 = v16; +LABEL_33: + v37 = v13[6] <= v15; + v18 = v37 && v35; + v38 = v16; + goto LABEL_16; + } + v35 = v13[8] <= v15; + if ( v38 ) + goto LABEL_33; + v37 = v12; + v18 = v13[8] <= v15; +LABEL_16: + v14 = -1; + if ( v18 ) + { + v30 = v15; + v26 = v12; + v27 = v13; + v28 = v30; + goto LABEL_46; + } + } + if ( !v37 ) + { +LABEL_8: + v38 = *(_BYTE *)(v13[5] + v15) == (unsigned __int8)v22; + goto LABEL_9; + } + if ( v38 && v13[6] == v15 && v15 ) + { + *a6 = 1; + v29 = 0; +LABEL_61: + *a5 = v29; + return a1; + } +LABEL_30: + *a6 = 0; +LABEL_31: + *a5 = 4; + return a1; +} +// 468270: using guessed type unsigned int var_20[8]; + +//----- (004686D0) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + double *a6) +{ + unsigned __int64 v6; // rax + unsigned __int64 v7; // kr00_8 + char v8; // al + char *v9; // ecx + int v11; // eax + int v12; // edx + unsigned int v13; // [esp+4h] [ebp-54h] + int v14; // [esp+20h] [ebp-38h] + char v15; // [esp+2Eh] [ebp-2Ah] + char v16; // [esp+2Fh] [ebp-29h] + char *String; // [esp+38h] [ebp-20h] BYREF + int v18[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_4E93FC; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v13); + v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (unsigned int **)&String); + v14 = v6; + v7 = v6; + v18[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v16 = HIDWORD(v7) == -1; + v15 = v16 & ((_DWORD)v7 != 0); + if ( v15 ) + { + v16 = 0; + if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) + { + v11 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v7 + 36))(v7); + v16 = v11 != -1 ? 0 : v15; + v14 = v11 == -1 ? 0 : v7; + } + } + v8 = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + v8 = 0; + if ( a2[2] >= a2[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; + } + } + if ( v8 == v16 ) + *a5 |= 2u; + v9 = String - 12; + if ( String != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v9, (int)v18); + } + return v14; +} +// 468700: variable 'v13' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; +// 4686D0: using guessed type int var_1C[7]; + +//----- (00468880) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + long double *a6) +{ + unsigned __int64 v6; // rax + unsigned __int64 v7; // kr00_8 + char v8; // al + char *v9; // ecx + int v11; // eax + int v12; // edx + unsigned int v13; // [esp+4h] [ebp-54h] + int v14; // [esp+20h] [ebp-38h] + char v15; // [esp+2Eh] [ebp-2Ah] + char v16; // [esp+2Fh] [ebp-29h] + char *String; // [esp+38h] [ebp-20h] BYREF + int v18[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_4E93FC; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v13); + v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (unsigned int **)&String); + v14 = v6; + v7 = v6; + v18[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v16 = HIDWORD(v7) == -1; + v15 = v16 & ((_DWORD)v7 != 0); + if ( v15 ) + { + v16 = 0; + if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) + { + v11 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v7 + 36))(v7); + v16 = v11 != -1 ? 0 : v15; + v14 = v11 == -1 ? 0 : v7; + } + } + v8 = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + v8 = 0; + if ( a2[2] >= a2[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; + } + } + if ( v8 == v16 ) + *a5 |= 2u; + v9 = String - 12; + if ( String != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v9, (int)v18); + } + return v14; +} +// 4688B0: variable 'v13' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; +// 468880: using guessed type int var_1C[7]; + +//----- (00468A30) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + float *a6) +{ + unsigned __int64 v6; // rax + unsigned __int64 v7; // kr00_8 + char v8; // al + char *v9; // ecx + int v11; // eax + int v12; // edx + unsigned int v13; // [esp+4h] [ebp-54h] + int v14; // [esp+20h] [ebp-38h] + char v15; // [esp+2Eh] [ebp-2Ah] + char v16; // [esp+2Fh] [ebp-29h] + char *String; // [esp+38h] [ebp-20h] BYREF + int v18[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_4E93FC; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v13); + v6 = std::num_get>::_M_extract_float(a1, a2, a3, a4, a5, (unsigned int **)&String); + v14 = v6; + v7 = v6; + v18[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v16 = HIDWORD(v7) == -1; + v15 = v16 & ((_DWORD)v7 != 0); + if ( v15 ) + { + v16 = 0; + if ( *(_DWORD *)(v7 + 8) >= *(_DWORD *)(v7 + 12) ) + { + v11 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v7 + 36))(v7); + v16 = v11 != -1 ? 0 : v15; + v14 = v11 == -1 ? 0 : v7; + } + } + v8 = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + v8 = 0; + if ( a2[2] >= a2[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) == -1; + } + } + if ( v8 == v16 ) + *a5 |= 2u; + v9 = String - 12; + if ( String != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v9, (int)v18); + } + return v14; +} +// 468A60: variable 'v13' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; +// 468A30: using guessed type int var_1C[7]; + +//----- (00468C40) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + unsigned int *a7) +{ + _DWORD *v7; // ebx + int v8; // esi + bool v9; // dl + char v10; // dl + char v11; // di + wchar_t v12; // di + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + unsigned int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + wchar_t *v28; // eax + int v29; // eax + int v30; // edx + unsigned int v31; // eax + unsigned int v32; // edx + __int16 *v33; // eax + __int16 v34; // dx + bool v35; // di + char v36; // di + size_t v37; // edi + int *v38; // eax + bool v40; // al + wchar_t *v41; // eax + __int16 *v42; // eax + __int16 v43; // ax + int v44; // edx + unsigned int v45; // eax + unsigned int v46; // edx + __int16 *v47; // eax + __int16 v48; // ax + bool v49; // di + char v50; // di + unsigned int v51; // edx + bool v52; // cl + unsigned int v53; // eax + wchar_t *v54; // eax + __int16 *v55; // eax + __int16 v56; // ax + wchar_t *v57; // eax + __int16 *v58; // eax + __int16 v59; // dx + unsigned int v60; // edx + char v61; // cl + __int16 *v62; // eax + __int16 v63; // cx + __int16 *v64; // eax + __int16 v65; // ax + wchar_t *v66; // eax + std::locale::_Impl *v67; // eax + std::locale::_Impl *v68; // esi + wchar_t *v69; // eax + __int16 *v70; // eax + __int16 v71; // cx + char v72; // cl + __int16 v73; // ax + __int16 v74; // ax + void (__cdecl *v75)(void *); // [esp+4h] [ebp-84h] + unsigned int v76; // [esp+8h] [ebp-80h] + bool v77; // [esp+1Fh] [ebp-69h] + size_t N; // [esp+20h] [ebp-68h] + unsigned int v79; // [esp+28h] [ebp-60h] + int S; // [esp+2Ch] [ebp-5Ch] + wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + char v83; // [esp+32h] [ebp-56h] + char v84; // [esp+33h] [ebp-55h] + int v85; // [esp+34h] [ebp-54h] + unsigned int v86; // [esp+34h] [ebp-54h] + _DWORD *v87; // [esp+38h] [ebp-50h] + char v88; // [esp+38h] [ebp-50h] + int v89; // [esp+3Ch] [ebp-4Ch] + char v90; // [esp+40h] [ebp-48h] + char v91; // [esp+40h] [ebp-48h] + char v92; // [esp+40h] [ebp-48h] + size_t v93; // [esp+40h] [ebp-48h] + bool v94; // [esp+44h] [ebp-44h] + int *v95; // [esp+48h] [ebp-40h] + bool v96; // [esp+48h] [ebp-40h] + char v97; // [esp+48h] [ebp-40h] + bool v98; // [esp+48h] [ebp-40h] + std::locale::facet *v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + std::locale::facet *v101; // [esp+4Ch] [ebp-3Ch] + void *v102; // [esp+58h] [ebp-30h] BYREF + size_t v103; // [esp+5Ch] [ebp-2Ch] + int v104[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v87 = a3; + v99 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + v95 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + if ( !v8 ) + { + v67 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v75); + *((_DWORD *)v67 + 1) = 0; + v68 = v67; + *(_DWORD *)v67 = &off_4F65B0; + *((_DWORD *)v67 + 2) = 0; + *((_DWORD *)v67 + 3) = 0; + *((_BYTE *)v67 + 16) = 0; + *((_DWORD *)v67 + 5) = 0; + *((_DWORD *)v67 + 6) = 0; + *((_DWORD *)v67 + 7) = 0; + *((_DWORD *)v67 + 8) = 0; + *((_DWORD *)v67 + 9) = 0; + *((_BYTE *)v67 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v67, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v68, v99, v76); + v8 = *v95; + } + v100 = 8; + v85 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v85 != 64 ) + v100 = v85 == 8 ? 16 : 10; + v96 = a2 == 0xFFFF; + v9 = v96 && a1 != 0; + if ( v9 ) + { + v64 = (__int16 *)a1[2]; + if ( (unsigned int)v64 >= a1[3] ) + { + v65 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v96 && a1 != 0; + } + else + { + v65 = *v64; + } + v7 = v65 == -1 ? 0 : a1; + v10 = v65 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v94 = a4 == -1; + if ( v94 && a3 != 0 ) + { + v62 = (__int16 *)a3[2]; + if ( (unsigned int)v62 >= a3[3] ) + { + v88 = v10; + v73 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v88; + v63 = v73; + } + else + { + v63 = *v62; + } + v87 = v63 == -1 ? 0 : a3; + v11 = v63 == -1 && v94 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v77 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v84 = 1; + v89 = 0; + v98 = 0; +LABEL_44: + v21 = v100; + if ( v100 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v66 = (wchar_t *)v7[2]; + if ( (unsigned int)v66 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v66; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v77 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v97 = v18 == -1; + v19 = v94 && v87 != 0; + if ( v19 ) + { + v70 = (__int16 *)v87[2]; + if ( (unsigned int)v70 >= v87[3] ) + { + v74 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + v19 = v94 && v87 != 0; + v71 = v74; + } + else + { + v71 = *v70; + } + v87 = v71 == -1 ? 0 : v87; + v20 = v71 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v97 == v20 ) + { + v84 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = v100; + v89 = 0; + v98 = 0; + if ( v100 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v69 = (wchar_t *)v7[2]; + if ( (unsigned int)v69 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v69; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v77 = 0; + } + v89 = 0; + v98 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v84 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v40 = !v98 || v100 == 10; + if ( !v40 ) + goto LABEL_33; + v98 = v85 == 0 || v100 == 8; + if ( !v98 ) + { + ++v89; + v98 = v40; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v89 = 0; + v100 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v90 = v25 == -1; + v26 = v94 && v87 != 0; + if ( v26 ) + { + v42 = (__int16 *)v87[2]; + if ( (unsigned int)v42 >= v87[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + v26 = v94 && v87 != 0; + } + else + { + v43 = *v42; + } + v87 = v43 == -1 ? 0 : v87; + v27 = v43 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v90 == v27 ) + { + v84 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v41 = (wchar_t *)v7[2]; + if ( (unsigned int)v41 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v41; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v98 ) + goto LABEL_86; + } + if ( !v98 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v84 = 0; + v98 = 1; + goto LABEL_44; + } + if ( v85 == 0 || v100 == 16 ) + { + v89 = 0; + v98 = 0; + v100 = 16; + goto LABEL_37; + } + v84 = 0; + v98 = 1; + N = v100; + S = v100; +LABEL_46: + v103 = 0; + v102 = v104; + LOBYTE(v104[0]) = 0; + if ( v14 ) + std::string::reserve(&v102, 0x20u); + v79 = 0xFFFFFFFF / v100; + v82 = *(_BYTE *)(v8 + 164); + if ( v82 ) + { + if ( v84 ) + { + v37 = v103; + v86 = 0; + v83 = 0; + v38 = (int *)v102; + v82 = v84; + v84 = 0; +LABEL_67: + if ( !v37 ) + goto LABEL_68; +LABEL_105: + v101 = (std::locale::facet *)(v37 + 1); + if ( v38 == v104 ) + v51 = 15; + else + v51 = v104[0]; + if ( (unsigned int)v101 > v51 ) + { + std::string::_M_mutate((int)&v102, v37, 0, 0, 1u); + v38 = (int *)v102; + } + *((_BYTE *)v38 + v37) = v89; + v103 = v37 + 1; + *((_BYTE *)v101 + (_DWORD)v102) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v102) ) + *a6 = 4; + v38 = (int *)v102; + if ( !v98 && !(v103 | v89) ) + goto LABEL_70; + goto LABEL_113; + } + v83 = 0; + Sa = (wchar_t *)(v8 + 120); + v86 = 0; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v37 = v103; + v38 = (int *)v102; + if ( !v89 ) + { + v82 = 0; + v84 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v93 = v103 + 1; + if ( v102 == v104 ) + v60 = 15; + else + v60 = v104[0]; + if ( v93 > v60 ) + { + std::string::_M_mutate((int)&v102, v103, 0, 0, 1u); + v38 = (int *)v102; + } + v61 = v89; + v89 = 0; + *((_BYTE *)v38 + v37) = v61; + v103 = v93; + *((_BYTE *)v102 + v93) = 0; +LABEL_59: + v31 = v7[2]; + v32 = v7[3]; + if ( v31 >= v32 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v28 = wmemchr(Sa, v12, N); + if ( !v28 ) + goto LABEL_131; + v29 = (char *)v28 - (char *)Sa; + v30 = v29 >> 1; + if ( v29 > 30 ) + v30 -= 6; + if ( v79 >= v86 ) + { + v83 |= ~v30 < v100 * v86; + ++v89; + v86 = v30 + v100 * v86; + goto LABEL_59; + } + v32 = v7[3]; + v83 = v82; + v31 = v7[2]; + if ( v31 >= v32 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v33 = (__int16 *)v7[2]; + v32 = v7[3]; + goto LABEL_61; + } + } + v33 = (__int16 *)(v31 + 2); + v7[2] = v33; +LABEL_61: + if ( (unsigned int)v33 >= v32 ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v34 = *v33; + v7 = v34 == -1 ? 0 : v7; + v91 = v34 == -1; + v35 = v94 && v87 != 0; + if ( v35 ) + { + v58 = (__int16 *)v87[2]; + if ( (unsigned int)v58 >= v87[3] ) + v59 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + else + v59 = *v58; + v87 = v59 == -1 ? 0 : v87; + v36 = v59 == -1 && v35; + } + else + { + v36 = a4 == -1; + } + if ( v36 == v91 ) + { + v37 = v103; + v38 = (int *)v102; + goto LABEL_67; + } + if ( v7 ) + { + v57 = (wchar_t *)v7[2]; + if ( (unsigned int)v57 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v57; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v84 ) + { + v72 = v84; + v37 = v103; + v83 = 0; + v84 = 0; + v38 = (int *)v102; + v82 = v72; + v86 = 0; + goto LABEL_67; + } + v83 = 0; + v86 = 0; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v44 = v12 - 55; + goto LABEL_96; + } + v44 = v12 - 87; + if ( v79 >= v86 ) + goto LABEL_121; +LABEL_97: + v45 = v7[2]; + v46 = v7[3]; + v83 = 1; + if ( v45 < v46 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v47 = (__int16 *)v7[2]; + v46 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_131: + v37 = v103; + v38 = (int *)v102; + v82 = 0; + goto LABEL_67; + } +LABEL_95: + v44 = v12 - 48; +LABEL_96: + if ( v79 < v86 ) + goto LABEL_97; +LABEL_121: + v52 = ~v44 < v100 * v86; + v53 = v44 + v100 * v86; + v46 = v7[3]; + v83 |= v52; + v86 = v53; + v45 = v7[2]; + ++v89; + if ( v45 >= v46 ) + goto LABEL_122; +LABEL_98: + v47 = (__int16 *)(v45 + 2); + v7[2] = v47; + } + if ( (unsigned int)v47 >= v46 ) + v48 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v48 = *v47; + v7 = v48 == -1 ? 0 : v7; + v92 = v48 == -1; + v49 = v94 && v87 != 0; + if ( v49 ) + { + v55 = (__int16 *)v87[2]; + if ( (unsigned int)v55 >= v87[3] ) + v56 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + else + v56 = *v55; + v87 = v56 == -1 ? 0 : v87; + v50 = v56 == -1 && v49; + } + else + { + v50 = a4 == -1; + } + if ( v92 != v50 ) + { + if ( v7 ) + { + v54 = (wchar_t *)v7[2]; + if ( (unsigned int)v54 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v54; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v37 = v103; + v38 = (int *)v102; + v82 = 1; + if ( v103 ) + goto LABEL_105; +LABEL_68: + if ( !v98 && !v89 ) + { +LABEL_70: + *a7 = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v84 ) + goto LABEL_70; + if ( v83 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v77 ) + v86 = -v86; + *a7 = v86; + } +LABEL_71: + if ( v82 ) + *a6 |= 2u; + if ( v38 != v104 ) + operator delete(v38); + return v7; +} +// 469627: variable 'v75' is possibly undefined +// 46969A: variable 'v76' is possibly undefined +// 4E95AC: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (00469930) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int *a7) +{ + _DWORD *v7; // ebx + int v8; // esi + bool v9; // dl + char v10; // dl + char v11; // di + wchar_t v12; // di + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + unsigned int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + wchar_t *v28; // eax + int v29; // eax + int v30; // edx + unsigned int v31; // eax + unsigned int v32; // edx + __int16 *v33; // eax + __int16 v34; // dx + bool v35; // di + char v36; // di + size_t v37; // edi + int *v38; // eax + bool v40; // al + wchar_t *v41; // eax + __int16 *v42; // eax + __int16 v43; // ax + int v44; // edx + unsigned int v45; // eax + unsigned int v46; // edx + __int16 *v47; // eax + __int16 v48; // ax + bool v49; // di + char v50; // di + unsigned int v51; // edx + int v52; // edx + bool v53; // cl + unsigned int v54; // eax + wchar_t *v55; // eax + __int16 *v56; // eax + __int16 v57; // ax + wchar_t *v58; // eax + __int16 *v59; // eax + __int16 v60; // dx + unsigned int v61; // edx + char v62; // cl + __int16 *v63; // eax + __int16 v64; // cx + __int16 *v65; // eax + __int16 v66; // ax + wchar_t *v67; // eax + std::locale::_Impl *v68; // eax + std::locale::_Impl *v69; // esi + wchar_t *v70; // eax + __int16 *v71; // eax + __int16 v72; // cx + char v73; // cl + __int16 v74; // ax + __int16 v75; // ax + void (__cdecl *v76)(void *); // [esp+4h] [ebp-84h] + unsigned int v77; // [esp+8h] [ebp-80h] + size_t N; // [esp+18h] [ebp-70h] + bool v79; // [esp+1Ch] [ebp-6Ch] + unsigned int v80; // [esp+24h] [ebp-64h] + unsigned int v81; // [esp+28h] [ebp-60h] + int S; // [esp+2Ch] [ebp-5Ch] + wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] + char v84; // [esp+30h] [ebp-58h] + char v85; // [esp+32h] [ebp-56h] + char v86; // [esp+33h] [ebp-55h] + int v87; // [esp+34h] [ebp-54h] + unsigned int v88; // [esp+34h] [ebp-54h] + _DWORD *v89; // [esp+38h] [ebp-50h] + char v90; // [esp+38h] [ebp-50h] + int v91; // [esp+3Ch] [ebp-4Ch] + char v92; // [esp+40h] [ebp-48h] + char v93; // [esp+40h] [ebp-48h] + char v94; // [esp+40h] [ebp-48h] + size_t v95; // [esp+40h] [ebp-48h] + bool v96; // [esp+44h] [ebp-44h] + int *v97; // [esp+48h] [ebp-40h] + bool v98; // [esp+48h] [ebp-40h] + char v99; // [esp+48h] [ebp-40h] + bool v100; // [esp+48h] [ebp-40h] + std::locale::facet *v101; // [esp+4Ch] [ebp-3Ch] + unsigned int v102; // [esp+4Ch] [ebp-3Ch] + std::locale::facet *v103; // [esp+4Ch] [ebp-3Ch] + void *v104; // [esp+58h] [ebp-30h] BYREF + size_t v105; // [esp+5Ch] [ebp-2Ch] + int v106[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v89 = a3; + v101 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); + v97 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v101); + if ( !v8 ) + { + v68 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v76); + *((_DWORD *)v68 + 1) = 0; + v69 = v68; + *(_DWORD *)v68 = &off_4F65B0; + *((_DWORD *)v68 + 2) = 0; + *((_DWORD *)v68 + 3) = 0; + *((_BYTE *)v68 + 16) = 0; + *((_DWORD *)v68 + 5) = 0; + *((_DWORD *)v68 + 6) = 0; + *((_DWORD *)v68 + 7) = 0; + *((_DWORD *)v68 + 8) = 0; + *((_DWORD *)v68 + 9) = 0; + *((_BYTE *)v68 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v68, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v69, v101, v77); + v8 = *v97; + } + v102 = 8; + v87 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v87 != 64 ) + v102 = v87 == 8 ? 16 : 10; + v98 = a2 == 0xFFFF; + v9 = v98 && a1 != 0; + if ( v9 ) + { + v65 = (__int16 *)a1[2]; + if ( (unsigned int)v65 >= a1[3] ) + { + v66 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v98 && a1 != 0; + } + else + { + v66 = *v65; + } + v7 = v66 == -1 ? 0 : a1; + v10 = v66 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v96 = a4 == -1; + if ( v96 && a3 != 0 ) + { + v63 = (__int16 *)a3[2]; + if ( (unsigned int)v63 >= a3[3] ) + { + v90 = v10; + v74 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v90; + v64 = v74; + } + else + { + v64 = *v63; + } + v89 = v64 == -1 ? 0 : a3; + v11 = v64 == -1 && v96 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v79 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v86 = 1; + v91 = 0; + v100 = 0; +LABEL_44: + v21 = v102; + if ( v102 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v67 = (wchar_t *)v7[2]; + if ( (unsigned int)v67 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v67; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v79 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v99 = v18 == -1; + v19 = v96 && v89 != 0; + if ( v19 ) + { + v71 = (__int16 *)v89[2]; + if ( (unsigned int)v71 >= v89[3] ) + { + v75 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); + v19 = v96 && v89 != 0; + v72 = v75; + } + else + { + v72 = *v71; + } + v89 = v72 == -1 ? 0 : v89; + v20 = v72 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v99 == v20 ) + { + v86 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = v102; + v91 = 0; + v100 = 0; + if ( v102 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v70 = (wchar_t *)v7[2]; + if ( (unsigned int)v70 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v70; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v79 = 0; + } + v91 = 0; + v100 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v86 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v40 = !v100 || v102 == 10; + if ( !v40 ) + goto LABEL_33; + v100 = v87 == 0 || v102 == 8; + if ( !v100 ) + { + ++v91; + v100 = v40; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v91 = 0; + v102 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v92 = v25 == -1; + v26 = v96 && v89 != 0; + if ( v26 ) + { + v42 = (__int16 *)v89[2]; + if ( (unsigned int)v42 >= v89[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); + v26 = v96 && v89 != 0; + } + else + { + v43 = *v42; + } + v89 = v43 == -1 ? 0 : v89; + v27 = v43 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v92 == v27 ) + { + v86 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v41 = (wchar_t *)v7[2]; + if ( (unsigned int)v41 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v41; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v100 ) + goto LABEL_86; + } + if ( !v100 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v86 = 0; + v100 = 1; + goto LABEL_44; + } + if ( v87 == 0 || v102 == 16 ) + { + v91 = 0; + v100 = 0; + v102 = 16; + goto LABEL_37; + } + v86 = 0; + v100 = 1; + N = v102; + S = v102; +LABEL_46: + v105 = 0; + v104 = v106; + LOBYTE(v106[0]) = 0; + if ( v14 ) + std::string::reserve(&v104, 0x20u); + v80 = v79 + 0x7FFFFFFF; + v81 = v80 / v102; + v84 = *(_BYTE *)(v8 + 164); + if ( v84 ) + { + if ( v86 ) + { + v37 = v105; + v88 = 0; + v85 = 0; + v38 = (int *)v104; + v84 = v86; + v86 = 0; +LABEL_67: + if ( !v37 ) + goto LABEL_68; +LABEL_105: + v103 = (std::locale::facet *)(v37 + 1); + if ( v38 == v106 ) + v51 = 15; + else + v51 = v106[0]; + if ( (unsigned int)v103 > v51 ) + { + std::string::_M_mutate((int)&v104, v37, 0, 0, 1u); + v38 = (int *)v104; + } + *((_BYTE *)v38 + v37) = v91; + v105 = v37 + 1; + *((_BYTE *)v103 + (_DWORD)v104) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v104) ) + *a6 = 4; + v38 = (int *)v104; + if ( !v100 && !(v105 | v91) ) + goto LABEL_70; + goto LABEL_113; + } + v85 = 0; + Sa = (wchar_t *)(v8 + 120); + v88 = 0; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v37 = v105; + v38 = (int *)v104; + if ( !v91 ) + { + v84 = 0; + v86 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v95 = v105 + 1; + if ( v104 == v106 ) + v61 = 15; + else + v61 = v106[0]; + if ( v95 > v61 ) + { + std::string::_M_mutate((int)&v104, v105, 0, 0, 1u); + v38 = (int *)v104; + } + v62 = v91; + v91 = 0; + *((_BYTE *)v38 + v37) = v62; + v105 = v95; + *((_BYTE *)v104 + v95) = 0; +LABEL_59: + v31 = v7[2]; + v32 = v7[3]; + if ( v31 >= v32 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v28 = wmemchr(Sa, v12, N); + if ( !v28 ) + goto LABEL_131; + v29 = (char *)v28 - (char *)Sa; + v30 = v29 >> 1; + if ( v29 > 30 ) + v30 -= 6; + if ( v81 >= v88 ) + { + v85 |= v80 - v30 < v102 * v88; + ++v91; + v88 = v30 + v102 * v88; + goto LABEL_59; + } + v32 = v7[3]; + v85 = v84; + v31 = v7[2]; + if ( v31 >= v32 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v33 = (__int16 *)v7[2]; + v32 = v7[3]; + goto LABEL_61; + } + } + v33 = (__int16 *)(v31 + 2); + v7[2] = v33; +LABEL_61: + if ( (unsigned int)v33 >= v32 ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v34 = *v33; + v7 = v34 == -1 ? 0 : v7; + v93 = v34 == -1; + v35 = v96 && v89 != 0; + if ( v35 ) + { + v59 = (__int16 *)v89[2]; + if ( (unsigned int)v59 >= v89[3] ) + v60 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); + else + v60 = *v59; + v89 = v60 == -1 ? 0 : v89; + v36 = v60 == -1 && v35; + } + else + { + v36 = a4 == -1; + } + if ( v36 == v93 ) + { + v37 = v105; + v38 = (int *)v104; + goto LABEL_67; + } + if ( v7 ) + { + v58 = (wchar_t *)v7[2]; + if ( (unsigned int)v58 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v58; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v86 ) + { + v73 = v86; + v37 = v105; + v85 = 0; + v86 = 0; + v38 = (int *)v104; + v84 = v73; + v88 = 0; + goto LABEL_67; + } + v85 = 0; + v88 = 0; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v44 = v12 - 55; + goto LABEL_96; + } + v44 = v12 - 87; + if ( v81 >= v88 ) + goto LABEL_121; +LABEL_97: + v45 = v7[2]; + v46 = v7[3]; + v85 = 1; + if ( v45 < v46 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v47 = (__int16 *)v7[2]; + v46 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_131: + v37 = v105; + v38 = (int *)v104; + v84 = 0; + goto LABEL_67; + } +LABEL_95: + v44 = v12 - 48; +LABEL_96: + if ( v81 < v88 ) + goto LABEL_97; +LABEL_121: + v53 = v80 - v44 < v102 * v88; + v54 = v44 + v102 * v88; + v46 = v7[3]; + v85 |= v53; + v88 = v54; + v45 = v7[2]; + ++v91; + if ( v45 >= v46 ) + goto LABEL_122; +LABEL_98: + v47 = (__int16 *)(v45 + 2); + v7[2] = v47; + } + if ( (unsigned int)v47 >= v46 ) + v48 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v48 = *v47; + v7 = v48 == -1 ? 0 : v7; + v94 = v48 == -1; + v49 = v96 && v89 != 0; + if ( v49 ) + { + v56 = (__int16 *)v89[2]; + if ( (unsigned int)v56 >= v89[3] ) + v57 = (*(int (__fastcall **)(_DWORD *))(*v89 + 36))(v89); + else + v57 = *v56; + v89 = v57 == -1 ? 0 : v89; + v50 = v57 == -1 && v49; + } + else + { + v50 = a4 == -1; + } + if ( v94 != v50 ) + { + if ( v7 ) + { + v55 = (wchar_t *)v7[2]; + if ( (unsigned int)v55 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v55; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v37 = v105; + v38 = (int *)v104; + v84 = 1; + if ( v105 ) + goto LABEL_105; +LABEL_68: + if ( !v100 && !v91 ) + { +LABEL_70: + *a7 = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v86 ) + goto LABEL_70; + if ( v85 ) + { + *a7 = v79 + 0x7FFFFFFF; + *a6 = 4; + } + else + { + v52 = v88; + if ( v79 ) + v52 = -v88; + *a7 = v52; + } +LABEL_71: + if ( v84 ) + *a6 |= 2u; + if ( v38 != v106 ) + operator delete(v38); + return v7; +} +// 46A327: variable 'v76' is possibly undefined +// 46A39A: variable 'v77' is possibly undefined +// 4E95AC: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (0046A630) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + unsigned int *a7) +{ + _DWORD *v7; // ebx + int v8; // esi + bool v9; // dl + char v10; // dl + char v11; // di + wchar_t v12; // di + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + unsigned int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + wchar_t *v28; // eax + int v29; // eax + int v30; // edx + unsigned int v31; // eax + unsigned int v32; // edx + __int16 *v33; // eax + __int16 v34; // dx + bool v35; // di + char v36; // di + size_t v37; // edi + int *v38; // eax + bool v40; // al + wchar_t *v41; // eax + __int16 *v42; // eax + __int16 v43; // ax + int v44; // edx + unsigned int v45; // eax + unsigned int v46; // edx + __int16 *v47; // eax + __int16 v48; // ax + bool v49; // di + char v50; // di + unsigned int v51; // edx + bool v52; // cl + unsigned int v53; // eax + wchar_t *v54; // eax + __int16 *v55; // eax + __int16 v56; // ax + wchar_t *v57; // eax + __int16 *v58; // eax + __int16 v59; // dx + unsigned int v60; // edx + char v61; // cl + __int16 *v62; // eax + __int16 v63; // cx + __int16 *v64; // eax + __int16 v65; // ax + wchar_t *v66; // eax + std::locale::_Impl *v67; // eax + std::locale::_Impl *v68; // esi + wchar_t *v69; // eax + __int16 *v70; // eax + __int16 v71; // cx + char v72; // cl + __int16 v73; // ax + __int16 v74; // ax + void (__cdecl *v75)(void *); // [esp+4h] [ebp-84h] + unsigned int v76; // [esp+8h] [ebp-80h] + bool v77; // [esp+1Fh] [ebp-69h] + size_t N; // [esp+20h] [ebp-68h] + unsigned int v79; // [esp+28h] [ebp-60h] + int S; // [esp+2Ch] [ebp-5Ch] + wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] + char v82; // [esp+30h] [ebp-58h] + char v83; // [esp+32h] [ebp-56h] + char v84; // [esp+33h] [ebp-55h] + int v85; // [esp+34h] [ebp-54h] + unsigned int v86; // [esp+34h] [ebp-54h] + _DWORD *v87; // [esp+38h] [ebp-50h] + char v88; // [esp+38h] [ebp-50h] + int v89; // [esp+3Ch] [ebp-4Ch] + char v90; // [esp+40h] [ebp-48h] + char v91; // [esp+40h] [ebp-48h] + char v92; // [esp+40h] [ebp-48h] + size_t v93; // [esp+40h] [ebp-48h] + bool v94; // [esp+44h] [ebp-44h] + int *v95; // [esp+48h] [ebp-40h] + bool v96; // [esp+48h] [ebp-40h] + char v97; // [esp+48h] [ebp-40h] + bool v98; // [esp+48h] [ebp-40h] + std::locale::facet *v99; // [esp+4Ch] [ebp-3Ch] + unsigned int v100; // [esp+4Ch] [ebp-3Ch] + std::locale::facet *v101; // [esp+4Ch] [ebp-3Ch] + void *v102; // [esp+58h] [ebp-30h] BYREF + size_t v103; // [esp+5Ch] [ebp-2Ch] + int v104[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v87 = a3; + v99 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + v95 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v99); + if ( !v8 ) + { + v67 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v75); + *((_DWORD *)v67 + 1) = 0; + v68 = v67; + *(_DWORD *)v67 = &off_4F65B0; + *((_DWORD *)v67 + 2) = 0; + *((_DWORD *)v67 + 3) = 0; + *((_BYTE *)v67 + 16) = 0; + *((_DWORD *)v67 + 5) = 0; + *((_DWORD *)v67 + 6) = 0; + *((_DWORD *)v67 + 7) = 0; + *((_DWORD *)v67 + 8) = 0; + *((_DWORD *)v67 + 9) = 0; + *((_BYTE *)v67 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v67, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v68, v99, v76); + v8 = *v95; + } + v100 = 8; + v85 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v85 != 64 ) + v100 = v85 == 8 ? 16 : 10; + v96 = a2 == 0xFFFF; + v9 = v96 && a1 != 0; + if ( v9 ) + { + v64 = (__int16 *)a1[2]; + if ( (unsigned int)v64 >= a1[3] ) + { + v65 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v96 && a1 != 0; + } + else + { + v65 = *v64; + } + v7 = v65 == -1 ? 0 : a1; + v10 = v65 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v94 = a4 == -1; + if ( v94 && a3 != 0 ) + { + v62 = (__int16 *)a3[2]; + if ( (unsigned int)v62 >= a3[3] ) + { + v88 = v10; + v73 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v88; + v63 = v73; + } + else + { + v63 = *v62; + } + v87 = v63 == -1 ? 0 : a3; + v11 = v63 == -1 && v94 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v77 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v84 = 1; + v89 = 0; + v98 = 0; +LABEL_44: + v21 = v100; + if ( v100 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v66 = (wchar_t *)v7[2]; + if ( (unsigned int)v66 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v66; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v77 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v97 = v18 == -1; + v19 = v94 && v87 != 0; + if ( v19 ) + { + v70 = (__int16 *)v87[2]; + if ( (unsigned int)v70 >= v87[3] ) + { + v74 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + v19 = v94 && v87 != 0; + v71 = v74; + } + else + { + v71 = *v70; + } + v87 = v71 == -1 ? 0 : v87; + v20 = v71 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v97 == v20 ) + { + v84 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = v100; + v89 = 0; + v98 = 0; + if ( v100 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v69 = (wchar_t *)v7[2]; + if ( (unsigned int)v69 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v69; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v77 = 0; + } + v89 = 0; + v98 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v84 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v40 = !v98 || v100 == 10; + if ( !v40 ) + goto LABEL_33; + v98 = v85 == 0 || v100 == 8; + if ( !v98 ) + { + ++v89; + v98 = v40; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v89 = 0; + v100 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v90 = v25 == -1; + v26 = v94 && v87 != 0; + if ( v26 ) + { + v42 = (__int16 *)v87[2]; + if ( (unsigned int)v42 >= v87[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + v26 = v94 && v87 != 0; + } + else + { + v43 = *v42; + } + v87 = v43 == -1 ? 0 : v87; + v27 = v43 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v90 == v27 ) + { + v84 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v41 = (wchar_t *)v7[2]; + if ( (unsigned int)v41 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v41; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v98 ) + goto LABEL_86; + } + if ( !v98 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v84 = 0; + v98 = 1; + goto LABEL_44; + } + if ( v85 == 0 || v100 == 16 ) + { + v89 = 0; + v98 = 0; + v100 = 16; + goto LABEL_37; + } + v84 = 0; + v98 = 1; + N = v100; + S = v100; +LABEL_46: + v103 = 0; + v102 = v104; + LOBYTE(v104[0]) = 0; + if ( v14 ) + std::string::reserve(&v102, 0x20u); + v79 = 0xFFFFFFFF / v100; + v82 = *(_BYTE *)(v8 + 164); + if ( v82 ) + { + if ( v84 ) + { + v37 = v103; + v86 = 0; + v83 = 0; + v38 = (int *)v102; + v82 = v84; + v84 = 0; +LABEL_67: + if ( !v37 ) + goto LABEL_68; +LABEL_105: + v101 = (std::locale::facet *)(v37 + 1); + if ( v38 == v104 ) + v51 = 15; + else + v51 = v104[0]; + if ( (unsigned int)v101 > v51 ) + { + std::string::_M_mutate((int)&v102, v37, 0, 0, 1u); + v38 = (int *)v102; + } + *((_BYTE *)v38 + v37) = v89; + v103 = v37 + 1; + *((_BYTE *)v101 + (_DWORD)v102) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v102) ) + *a6 = 4; + v38 = (int *)v102; + if ( !v98 && !(v103 | v89) ) + goto LABEL_70; + goto LABEL_113; + } + v83 = 0; + Sa = (wchar_t *)(v8 + 120); + v86 = 0; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v37 = v103; + v38 = (int *)v102; + if ( !v89 ) + { + v82 = 0; + v84 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v93 = v103 + 1; + if ( v102 == v104 ) + v60 = 15; + else + v60 = v104[0]; + if ( v93 > v60 ) + { + std::string::_M_mutate((int)&v102, v103, 0, 0, 1u); + v38 = (int *)v102; + } + v61 = v89; + v89 = 0; + *((_BYTE *)v38 + v37) = v61; + v103 = v93; + *((_BYTE *)v102 + v93) = 0; +LABEL_59: + v31 = v7[2]; + v32 = v7[3]; + if ( v31 >= v32 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v28 = wmemchr(Sa, v12, N); + if ( !v28 ) + goto LABEL_131; + v29 = (char *)v28 - (char *)Sa; + v30 = v29 >> 1; + if ( v29 > 30 ) + v30 -= 6; + if ( v79 >= v86 ) + { + v83 |= ~v30 < v100 * v86; + ++v89; + v86 = v30 + v100 * v86; + goto LABEL_59; + } + v32 = v7[3]; + v83 = v82; + v31 = v7[2]; + if ( v31 >= v32 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v33 = (__int16 *)v7[2]; + v32 = v7[3]; + goto LABEL_61; + } + } + v33 = (__int16 *)(v31 + 2); + v7[2] = v33; +LABEL_61: + if ( (unsigned int)v33 >= v32 ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v34 = *v33; + v7 = v34 == -1 ? 0 : v7; + v91 = v34 == -1; + v35 = v94 && v87 != 0; + if ( v35 ) + { + v58 = (__int16 *)v87[2]; + if ( (unsigned int)v58 >= v87[3] ) + v59 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + else + v59 = *v58; + v87 = v59 == -1 ? 0 : v87; + v36 = v59 == -1 && v35; + } + else + { + v36 = a4 == -1; + } + if ( v36 == v91 ) + { + v37 = v103; + v38 = (int *)v102; + goto LABEL_67; + } + if ( v7 ) + { + v57 = (wchar_t *)v7[2]; + if ( (unsigned int)v57 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v57; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v84 ) + { + v72 = v84; + v37 = v103; + v83 = 0; + v84 = 0; + v38 = (int *)v102; + v82 = v72; + v86 = 0; + goto LABEL_67; + } + v83 = 0; + v86 = 0; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v44 = v12 - 55; + goto LABEL_96; + } + v44 = v12 - 87; + if ( v79 >= v86 ) + goto LABEL_121; +LABEL_97: + v45 = v7[2]; + v46 = v7[3]; + v83 = 1; + if ( v45 < v46 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v47 = (__int16 *)v7[2]; + v46 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_131: + v37 = v103; + v38 = (int *)v102; + v82 = 0; + goto LABEL_67; + } +LABEL_95: + v44 = v12 - 48; +LABEL_96: + if ( v79 < v86 ) + goto LABEL_97; +LABEL_121: + v52 = ~v44 < v100 * v86; + v53 = v44 + v100 * v86; + v46 = v7[3]; + v83 |= v52; + v86 = v53; + v45 = v7[2]; + ++v89; + if ( v45 >= v46 ) + goto LABEL_122; +LABEL_98: + v47 = (__int16 *)(v45 + 2); + v7[2] = v47; + } + if ( (unsigned int)v47 >= v46 ) + v48 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v48 = *v47; + v7 = v48 == -1 ? 0 : v7; + v92 = v48 == -1; + v49 = v94 && v87 != 0; + if ( v49 ) + { + v55 = (__int16 *)v87[2]; + if ( (unsigned int)v55 >= v87[3] ) + v56 = (*(int (__fastcall **)(_DWORD *))(*v87 + 36))(v87); + else + v56 = *v55; + v87 = v56 == -1 ? 0 : v87; + v50 = v56 == -1 && v49; + } + else + { + v50 = a4 == -1; + } + if ( v92 != v50 ) + { + if ( v7 ) + { + v54 = (wchar_t *)v7[2]; + if ( (unsigned int)v54 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v54; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v37 = v103; + v38 = (int *)v102; + v82 = 1; + if ( v103 ) + goto LABEL_105; +LABEL_68: + if ( !v98 && !v89 ) + { +LABEL_70: + *a7 = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v84 ) + goto LABEL_70; + if ( v83 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v77 ) + v86 = -v86; + *a7 = v86; + } +LABEL_71: + if ( v82 ) + *a6 |= 2u; + if ( v38 != v104 ) + operator delete(v38); + return v7; +} +// 46B017: variable 'v75' is possibly undefined +// 46B08A: variable 'v76' is possibly undefined +// 4E95AC: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (0046B320) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + unsigned __int16 *a7) +{ + _DWORD *v7; // ebx + int v8; // esi + bool v9; // dl + char v10; // dl + char v11; // di + wchar_t v12; // di + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + wchar_t *v28; // eax + int v29; // eax + int v30; // ecx + int v31; // edi + unsigned int v32; // eax + unsigned int v33; // edx + __int16 *v34; // eax + __int16 v35; // dx + bool v36; // di + char v37; // di + size_t v38; // edi + int *v39; // eax + bool v41; // al + wchar_t *v42; // eax + __int16 *v43; // eax + __int16 v44; // ax + int v45; // eax + unsigned int v46; // eax + unsigned int v47; // edx + __int16 *v48; // eax + __int16 v49; // ax + bool v50; // di + char v51; // di + unsigned int v52; // edx + wchar_t *v53; // eax + __int16 *v54; // eax + __int16 v55; // ax + wchar_t *v56; // eax + __int16 *v57; // eax + __int16 v58; // dx + unsigned int v59; // edx + char v60; // cl + __int16 *v61; // eax + __int16 v62; // cx + __int16 *v63; // eax + __int16 v64; // ax + wchar_t *v65; // eax + std::locale::_Impl *v66; // eax + std::locale::_Impl *v67; // esi + wchar_t *v68; // eax + __int16 *v69; // eax + __int16 v70; // cx + char v71; // cl + __int16 v72; // ax + __int16 v73; // ax + void (__cdecl *v74)(void *); // [esp+4h] [ebp-84h] + unsigned int v75; // [esp+8h] [ebp-80h] + bool v76; // [esp+1Fh] [ebp-69h] + size_t N; // [esp+20h] [ebp-68h] + int v78; // [esp+28h] [ebp-60h] + int S; // [esp+2Ch] [ebp-5Ch] + wchar_t *Sa; // [esp+2Ch] [ebp-5Ch] + char v81; // [esp+30h] [ebp-58h] + char v82; // [esp+32h] [ebp-56h] + char v83; // [esp+33h] [ebp-55h] + int v84; // [esp+34h] [ebp-54h] + unsigned __int16 v85; // [esp+34h] [ebp-54h] + _DWORD *v86; // [esp+38h] [ebp-50h] + char v87; // [esp+38h] [ebp-50h] + int v88; // [esp+3Ch] [ebp-4Ch] + char v89; // [esp+40h] [ebp-48h] + char v90; // [esp+40h] [ebp-48h] + char v91; // [esp+40h] [ebp-48h] + size_t v92; // [esp+40h] [ebp-48h] + bool v93; // [esp+44h] [ebp-44h] + int *v94; // [esp+48h] [ebp-40h] + bool v95; // [esp+48h] [ebp-40h] + char v96; // [esp+48h] [ebp-40h] + bool v97; // [esp+48h] [ebp-40h] + std::locale::facet *v98; // [esp+4Ch] [ebp-3Ch] + int v99; // [esp+4Ch] [ebp-3Ch] + std::locale::facet *v100; // [esp+4Ch] [ebp-3Ch] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v86 = a3; + v98 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v98); + v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v98); + if ( !v8 ) + { + v66 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v74); + *((_DWORD *)v66 + 1) = 0; + v67 = v66; + *(_DWORD *)v66 = &off_4F65B0; + *((_DWORD *)v66 + 2) = 0; + *((_DWORD *)v66 + 3) = 0; + *((_BYTE *)v66 + 16) = 0; + *((_DWORD *)v66 + 5) = 0; + *((_DWORD *)v66 + 6) = 0; + *((_DWORD *)v66 + 7) = 0; + *((_DWORD *)v66 + 8) = 0; + *((_DWORD *)v66 + 9) = 0; + *((_BYTE *)v66 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v66, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v67, v98, v75); + v8 = *v94; + } + v99 = 8; + v84 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v84 != 64 ) + v99 = v84 == 8 ? 16 : 10; + v95 = a2 == 0xFFFF; + v9 = v95 && a1 != 0; + if ( v9 ) + { + v63 = (__int16 *)a1[2]; + if ( (unsigned int)v63 >= a1[3] ) + { + v64 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v95 && a1 != 0; + } + else + { + v64 = *v63; + } + v7 = v64 == -1 ? 0 : a1; + v10 = v64 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v93 = a4 == -1; + if ( v93 && a3 != 0 ) + { + v61 = (__int16 *)a3[2]; + if ( (unsigned int)v61 >= a3[3] ) + { + v87 = v10; + v72 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v87; + v62 = v72; + } + else + { + v62 = *v61; + } + v86 = v62 == -1 ? 0 : a3; + v11 = v62 == -1 && v93 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v76 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v83 = 1; + v88 = 0; + v97 = 0; +LABEL_44: + v21 = v99; + if ( v99 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v65 = (wchar_t *)v7[2]; + if ( (unsigned int)v65 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v65; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v76 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v96 = v18 == -1; + v19 = v93 && v86 != 0; + if ( v19 ) + { + v69 = (__int16 *)v86[2]; + if ( (unsigned int)v69 >= v86[3] ) + { + v73 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); + v19 = v93 && v86 != 0; + v70 = v73; + } + else + { + v70 = *v69; + } + v86 = v70 == -1 ? 0 : v86; + v20 = v70 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v96 == v20 ) + { + v83 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = v99; + v88 = 0; + v97 = 0; + if ( v99 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v68 = (wchar_t *)v7[2]; + if ( (unsigned int)v68 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v68; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v76 = 0; + } + v88 = 0; + v97 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v83 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v41 = !v97 || v99 == 10; + if ( !v41 ) + goto LABEL_33; + v97 = v84 == 0 || v99 == 8; + if ( !v97 ) + { + ++v88; + v97 = v41; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v88 = 0; + v99 = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v89 = v25 == -1; + v26 = v93 && v86 != 0; + if ( v26 ) + { + v43 = (__int16 *)v86[2]; + if ( (unsigned int)v43 >= v86[3] ) + { + v44 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); + v26 = v93 && v86 != 0; + } + else + { + v44 = *v43; + } + v86 = v44 == -1 ? 0 : v86; + v27 = v44 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v89 == v27 ) + { + v83 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v42 = (wchar_t *)v7[2]; + if ( (unsigned int)v42 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v42; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v97 ) + goto LABEL_86; + } + if ( !v97 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v83 = 0; + v97 = 1; + goto LABEL_44; + } + if ( v84 == 0 || v99 == 16 ) + { + v88 = 0; + v97 = 0; + v99 = 16; + goto LABEL_37; + } + v83 = 0; + v97 = 1; + N = v99; + S = v99; +LABEL_46: + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( v14 ) + std::string::reserve(&v101, 0x20u); + v78 = 0xFFFF / v99; + v81 = *(_BYTE *)(v8 + 164); + if ( v81 ) + { + if ( v83 ) + { + v38 = v102; + v82 = 0; + v85 = 0; + v39 = (int *)v101; + v81 = v83; + v83 = 0; +LABEL_67: + if ( !v38 ) + goto LABEL_68; +LABEL_105: + v100 = (std::locale::facet *)(v38 + 1); + if ( v39 == v103 ) + v52 = 15; + else + v52 = v103[0]; + if ( (unsigned int)v100 > v52 ) + { + std::string::_M_mutate((int)&v101, v38, 0, 0, 1u); + v39 = (int *)v101; + } + *((_BYTE *)v39 + v38) = v88; + v102 = v38 + 1; + *((_BYTE *)v100 + (_DWORD)v101) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v39 = (int *)v101; + if ( !v97 && !(v102 | v88) ) + goto LABEL_70; + goto LABEL_113; + } + v82 = 0; + Sa = (wchar_t *)(v8 + 120); + v85 = 0; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v38 = v102; + v39 = (int *)v101; + if ( !v88 ) + { + v81 = 0; + v83 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v92 = v102 + 1; + if ( v101 == v103 ) + v59 = 15; + else + v59 = v103[0]; + if ( v92 > v59 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v39 = (int *)v101; + } + v60 = v88; + v88 = 0; + *((_BYTE *)v39 + v38) = v60; + v102 = v92; + *((_BYTE *)v101 + v92) = 0; +LABEL_59: + v32 = v7[2]; + v33 = v7[3]; + if ( v32 >= v33 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v28 = wmemchr(Sa, v12, N); + if ( !v28 ) + goto LABEL_131; + v29 = (char *)v28 - (char *)Sa; + v30 = v29 >> 1; + if ( v29 > 30 ) + v30 -= 6; + if ( (unsigned __int16)v78 >= v85 ) + { + v31 = (unsigned __int16)(v99 * v85); + ++v88; + v82 |= v31 > 0xFFFF - v30; + v85 = v31 + v30; + goto LABEL_59; + } + v33 = v7[3]; + v82 = v81; + v32 = v7[2]; + if ( v32 >= v33 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v34 = (__int16 *)v7[2]; + v33 = v7[3]; + goto LABEL_61; + } + } + v34 = (__int16 *)(v32 + 2); + v7[2] = v34; +LABEL_61: + if ( (unsigned int)v34 >= v33 ) + v35 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v35 = *v34; + v7 = v35 == -1 ? 0 : v7; + v90 = v35 == -1; + v36 = v93 && v86 != 0; + if ( v36 ) + { + v57 = (__int16 *)v86[2]; + if ( (unsigned int)v57 >= v86[3] ) + v58 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); + else + v58 = *v57; + v86 = v58 == -1 ? 0 : v86; + v37 = v58 == -1 && v36; + } + else + { + v37 = a4 == -1; + } + if ( v37 == v90 ) + { + v38 = v102; + v39 = (int *)v101; + goto LABEL_67; + } + if ( v7 ) + { + v56 = (wchar_t *)v7[2]; + if ( (unsigned int)v56 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v56; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v83 ) + { + v71 = v83; + v38 = v102; + v82 = 0; + v83 = 0; + v39 = (int *)v101; + v81 = v71; + v85 = 0; + goto LABEL_67; + } + v82 = 0; + v85 = 0; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v45 = v12 - 55; + goto LABEL_96; + } + v45 = v12 - 87; + if ( v85 <= (unsigned __int16)v78 ) + goto LABEL_121; +LABEL_97: + v46 = v7[2]; + v47 = v7[3]; + v82 = 1; + if ( v46 < v47 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v48 = (__int16 *)v7[2]; + v47 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || v12 >= (unsigned __int16)(S + 48) ) + { +LABEL_131: + v38 = v102; + v39 = (int *)v101; + v81 = 0; + goto LABEL_67; + } +LABEL_95: + v45 = v12 - 48; +LABEL_96: + if ( v85 > (unsigned __int16)v78 ) + goto LABEL_97; +LABEL_121: + v47 = v7[3]; + v82 |= (unsigned __int16)(v99 * v85) > 0xFFFF - v45; + v85 = v99 * v85 + v45; + v46 = v7[2]; + ++v88; + if ( v46 >= v47 ) + goto LABEL_122; +LABEL_98: + v48 = (__int16 *)(v46 + 2); + v7[2] = v48; + } + if ( v47 <= (unsigned int)v48 ) + v49 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v49 = *v48; + v7 = v49 == -1 ? 0 : v7; + v91 = v49 == -1; + v50 = v93 && v86 != 0; + if ( v50 ) + { + v54 = (__int16 *)v86[2]; + if ( (unsigned int)v54 >= v86[3] ) + v55 = (*(int (__fastcall **)(_DWORD *))(*v86 + 36))(v86); + else + v55 = *v54; + v86 = v55 == -1 ? 0 : v86; + v51 = v55 == -1 && v50; + } + else + { + v51 = a4 == -1; + } + if ( v91 != v51 ) + { + if ( v7 ) + { + v53 = (wchar_t *)v7[2]; + if ( (unsigned int)v53 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v53; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v38 = v102; + v39 = (int *)v101; + v81 = 1; + if ( v102 ) + goto LABEL_105; +LABEL_68: + if ( !v97 && !v88 ) + { +LABEL_70: + *a7 = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v83 ) + goto LABEL_70; + if ( v82 ) + { + *a7 = -1; + *a6 = 4; + } + else + { + if ( v76 ) + v85 = -v85; + *a7 = v85; + } +LABEL_71: + if ( v81 ) + *a6 |= 2u; + if ( v39 != v103 ) + operator delete(v39); + return v7; +} +// 46BD17: variable 'v74' is possibly undefined +// 46BD8A: variable 'v75' is possibly undefined +// 4E95AC: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (0046C020) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int *a7) +{ + int v7; // esi + int v8; // edi + char v9; // bl + bool v10; // dl + char v11; // dl + wchar_t v12; // bx + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + _DWORD *v21; // ecx + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + unsigned __int64 v28; // kr00_8 + wchar_t *v29; // eax + int v30; // eax + int v31; // ebx + _DWORD *v32; // edi + unsigned int v33; // eax + unsigned int v34; // edx + __int16 *v35; // eax + __int16 v36; // dx + bool v37; // bl + char v38; // bl + size_t v39; // ebx + int *v40; // ecx + bool v42; // al + wchar_t *v43; // eax + __int16 *v44; // eax + __int16 v45; // ax + int v46; // ecx + _DWORD *v47; // ebx + unsigned int v48; // eax + unsigned int v49; // edx + __int16 *v50; // eax + __int16 v51; // ax + bool v52; // bl + char v53; // bl + unsigned int v54; // edi + unsigned int v55; // eax + int v56; // eax + unsigned int v57; // edx + wchar_t *v58; // eax + __int16 *v59; // eax + __int16 v60; // ax + wchar_t *v61; // eax + __int16 *v62; // eax + __int16 v63; // dx + size_t v64; // edi + unsigned int v65; // eax + __int16 *v66; // eax + __int16 v67; // cx + __int16 *v68; // eax + __int16 v69; // dx + wchar_t *v70; // eax + std::locale::_Impl *v71; // eax + std::locale::_Impl *v72; // edi + wchar_t *v73; // eax + __int16 *v74; // eax + __int16 v75; // cx + char v76; // al + __int16 v77; // ax + __int16 v78; // ax + void (__cdecl *v79)(void *); // [esp+4h] [ebp-94h] + unsigned int v80; // [esp+8h] [ebp-90h] + size_t N; // [esp+10h] [ebp-88h] + UDItype n; // [esp+18h] [ebp-80h] + int S; // [esp+28h] [ebp-70h] + wchar_t *Sa; // [esp+28h] [ebp-70h] + char v85; // [esp+2Ch] [ebp-6Ch] + bool v86; // [esp+2Eh] [ebp-6Ah] + char v87; // [esp+2Fh] [ebp-69h] + __int64 v88; // [esp+30h] [ebp-68h] + char v89; // [esp+38h] [ebp-60h] + _DWORD *v90; // [esp+3Ch] [ebp-5Ch] + int *v91; // [esp+40h] [ebp-58h] + int v92; // [esp+40h] [ebp-58h] + unsigned __int64 v93; // [esp+40h] [ebp-58h] + char v94; // [esp+48h] [ebp-50h] + char v95; // [esp+48h] [ebp-50h] + char v96; // [esp+48h] [ebp-50h] + char v97; // [esp+48h] [ebp-50h] + int v98; // [esp+50h] [ebp-48h] + bool v99; // [esp+54h] [ebp-44h] + std::locale::facet *v100; // [esp+58h] [ebp-40h] + bool v101; // [esp+58h] [ebp-40h] + char v102; // [esp+58h] [ebp-40h] + bool v103; // [esp+58h] [ebp-40h] + _DWORD *v104; // [esp+5Ch] [ebp-3Ch] + void *v105; // [esp+68h] [ebp-30h] BYREF + size_t v106; // [esp+6Ch] [ebp-2Ch] + int v107[10]; // [esp+70h] [ebp-28h] BYREF + + v104 = a1; + v90 = a3; + v100 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v100); + v91 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * (_DWORD)v100); + if ( !v7 ) + { + v71 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v79); + *((_DWORD *)v71 + 1) = 0; + v72 = v71; + *(_DWORD *)v71 = &off_4F65B0; + *((_DWORD *)v71 + 2) = 0; + *((_DWORD *)v71 + 3) = 0; + *((_BYTE *)v71 + 16) = 0; + *((_DWORD *)v71 + 5) = 0; + *((_DWORD *)v71 + 6) = 0; + *((_DWORD *)v71 + 7) = 0; + *((_DWORD *)v71 + 8) = 0; + *((_DWORD *)v71 + 9) = 0; + *((_BYTE *)v71 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v71, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v72, v100, v80); + v7 = *v91; + } + v8 = 8; + v92 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v92 != 64 ) + v8 = v92 == 8 ? 16 : 10; + v101 = a2 == 0xFFFF; + if ( v101 && a1 != 0 ) + { + v68 = (__int16 *)a1[2]; + if ( (unsigned int)v68 >= a1[3] ) + v69 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v69 = *v68; + v104 = v69 == -1 ? 0 : a1; + v9 = v69 == -1 && v101 && a1 != 0; + } + else + { + v9 = a2 == 0xFFFF; + } + v99 = a4 == -1; + v10 = v99 && a3 != 0; + if ( v10 ) + { + v66 = (__int16 *)a3[2]; + if ( (unsigned int)v66 >= a3[3] ) + { + v77 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v99 && a3 != 0; + v67 = v77; + } + else + { + v67 = *v66; + } + v90 = v67 == -1 ? 0 : a3; + v11 = v67 == -1 && v10; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v9 ) + { + v86 = 0; + v14 = *(_BYTE *)(v7 + 16); + v12 = 0; + v89 = 1; + v98 = 0; + v103 = 0; +LABEL_44: + if ( v8 == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v104 && a2 == 0xFFFF ) + { + v70 = (wchar_t *)v104[2]; + if ( (unsigned int)v70 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v70; + v104 = v12 == 0xFFFF ? 0 : v104; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v7 + 112); + v14 = *(_BYTE *)(v7 + 16); + v86 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v7 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v7 + 38) != v12) && *(_WORD *)(v7 + 36) != v12 ) + { + v15 = v104[2]; + v16 = v104[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); + v17 = (__int16 *)v104[2]; + v16 = v104[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v104[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v18 = *v17; + v104 = v18 == -1 ? 0 : v104; + v102 = v18 == -1; + v19 = v99 && v90 != 0; + if ( v19 ) + { + v74 = (__int16 *)v90[2]; + if ( (unsigned int)v74 >= v90[3] ) + { + v78 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); + v19 = v99 && v90 != 0; + v75 = v78; + } + else + { + v75 = *v74; + } + v90 = v75 == -1 ? 0 : v90; + v20 = v75 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v102 == v20 ) + { + v89 = 1; + v14 = *(_BYTE *)(v7 + 16); + v98 = 0; + v103 = 0; + if ( v8 == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v8; + S = v8; + goto LABEL_46; + } + if ( v104 ) + { + v73 = (wchar_t *)v104[2]; + if ( (unsigned int)v73 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v73; + v14 = *(_BYTE *)(v7 + 16); + v104 = v12 == 0xFFFF ? 0 : v104; + } + else + { + v14 = *(_BYTE *)(v7 + 16); + v12 = -1; + } + } + } + else + { + v86 = 0; + } + v98 = 0; + v103 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v7 + 38) == v12 || *(_WORD *)(v7 + 36) == v12 ) + { +LABEL_88: + v89 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v7 + 120) != v12 ) + break; + v42 = !v103 || v8 == 10; + if ( !v42 ) + goto LABEL_33; + v103 = v92 == 0 || v8 == 8; + if ( !v103 ) + { + ++v98; + v103 = v42; +LABEL_37: + v21 = v104; + v22 = v104[2]; + v23 = v104[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_81; + } + v21 = v104; + v98 = 0; + v8 = 8; + v22 = v104[2]; + v23 = v104[3]; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v21[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_82; + goto LABEL_39; + } +LABEL_81: + (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); + v24 = (__int16 *)v104[2]; + if ( v104[3] <= (unsigned int)v24 ) + { +LABEL_82: + v25 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v104 = v25 == -1 ? 0 : v104; + v94 = v25 == -1; + v26 = v99 && v90 != 0; + if ( v26 ) + { + v44 = (__int16 *)v90[2]; + if ( (unsigned int)v44 >= v90[3] ) + { + v45 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); + v26 = v99 && v90 != 0; + } + else + { + v45 = *v44; + } + v90 = v45 == -1 ? 0 : v90; + v27 = v45 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v94 == v27 ) + { + v89 = 1; + v14 = *(_BYTE *)(v7 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v104 ) + { + v43 = (wchar_t *)v104[2]; + if ( (unsigned int)v43 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v43; + v104 = v12 == 0xFFFF ? 0 : v104; + } + v14 = *(_BYTE *)(v7 + 16); + if ( !v103 ) + goto LABEL_88; + } + if ( !v103 ) + goto LABEL_88; +LABEL_33: + if ( *(_WORD *)(v7 + 116) != v12 && *(_WORD *)(v7 + 118) != v12 ) + { + v89 = 0; + v103 = 1; + goto LABEL_44; + } + if ( v92 == 0 || v8 == 16 ) + { + v98 = 0; + v8 = 16; + v103 = 0; + goto LABEL_37; + } + v89 = 0; + N = v8; + S = v8; + v103 = 1; +LABEL_46: + v106 = 0; + v105 = v107; + LOBYTE(v107[0]) = 0; + if ( v14 ) + std::string::reserve(&v105, 0x20u); + n = 0x8000000000000000LL; + if ( !v86 ) + n = 0x7FFFFFFFFFFFFFFFLL; + v88 = v8; + v28 = n / v8; + v85 = *(_BYTE *)(v7 + 164); + if ( v85 ) + { + if ( v89 ) + { + v39 = v106; + v93 = 0LL; + v40 = (int *)v105; + v85 = v89; + v87 = 0; + v89 = 0; +LABEL_69: + if ( !v39 ) + goto LABEL_70; +LABEL_107: + v54 = v39 + 1; + if ( v40 == v107 ) + v55 = 15; + else + v55 = v107[0]; + if ( v54 > v55 ) + { + std::string::_M_mutate((int)&v105, v39, 0, 0, 1u); + v40 = (int *)v105; + } + *((_BYTE *)v40 + v39) = v98; + v106 = v39 + 1; + *((_BYTE *)v105 + v54) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v7 + 8), *(_DWORD *)(v7 + 12), (int)&v105) ) + *a6 = 4; + v40 = (int *)v105; + if ( !v103 && !(v106 | v98) ) + goto LABEL_72; + goto LABEL_115; + } + v87 = 0; + Sa = (wchar_t *)(v7 + 120); + v93 = 0LL; + while ( 2 ) + { + if ( *(_BYTE *)(v7 + 16) && *(_WORD *)(v7 + 38) == v12 ) + { + v39 = v106; + v40 = (int *)v105; + if ( !v98 ) + { + v85 = 0; + v89 = *(_BYTE *)(v7 + 16); + goto LABEL_69; + } + v97 = v98; + v64 = v106 + 1; + if ( v105 == v107 ) + v65 = 15; + else + v65 = v107[0]; + if ( v64 > v65 ) + { + std::string::_M_mutate((int)&v105, v106, 0, 0, 1u); + v40 = (int *)v105; + } + v98 = 0; + *((_BYTE *)v40 + v39) = v97; + v106 = v39 + 1; + *((_BYTE *)v105 + v64) = 0; +LABEL_61: + v32 = v104; + v33 = v104[2]; + v34 = v104[3]; + if ( v33 >= v34 ) + goto LABEL_136; + } + else + { + if ( v12 == *(_WORD *)(v7 + 36) ) + goto LABEL_134; + v29 = wmemchr(Sa, v12, N); + if ( !v29 ) + goto LABEL_134; + v30 = (char *)v29 - (char *)Sa; + v31 = v30 >> 1; + if ( v30 > 30 ) + v31 -= 6; + if ( v28 >= v93 ) + { + v87 |= n - v31 < v88 * v93; + ++v98; + v93 = v88 * v93 + v31; + goto LABEL_61; + } + v32 = v104; + v87 = v85; + v34 = v104[3]; + v33 = v104[2]; + if ( v33 >= v34 ) + { +LABEL_136: + (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); + v35 = (__int16 *)v104[2]; + v34 = v104[3]; + goto LABEL_63; + } + } + v35 = (__int16 *)(v33 + 2); + v32[2] = v35; +LABEL_63: + if ( (unsigned int)v35 >= v34 ) + v36 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v36 = *v35; + v104 = v36 == -1 ? 0 : v104; + v95 = v36 == -1; + v37 = v99 && v90 != 0; + if ( v37 ) + { + v62 = (__int16 *)v90[2]; + if ( (unsigned int)v62 >= v90[3] ) + v63 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); + else + v63 = *v62; + v90 = v63 == -1 ? 0 : v90; + v38 = v63 == -1 && v37; + } + else + { + v38 = a4 == -1; + } + if ( v38 == v95 ) + { + v39 = v106; + v40 = (int *)v105; + goto LABEL_69; + } + if ( v104 ) + { + v61 = (wchar_t *)v104[2]; + if ( (unsigned int)v61 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v61; + v104 = v12 == 0xFFFF ? 0 : v104; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v89 ) + { + v76 = v89; + v39 = v106; + v87 = 0; + v89 = 0; + v40 = (int *)v105; + v85 = v76; + v93 = 0LL; + goto LABEL_69; + } + v87 = 0; + v93 = 0LL; + while ( 2 ) + { + if ( S <= 10 ) + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_134: + v39 = v106; + v40 = (int *)v105; + v85 = 0; + goto LABEL_69; + } +LABEL_97: + v46 = v12 - 48; + goto LABEL_98; + } + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_97; + v46 = v12 - 87; + if ( (unsigned __int16)(v12 - 97) <= 5u ) + { +LABEL_98: + if ( v28 >= v93 ) + goto LABEL_124; +LABEL_99: + v47 = v104; + v87 = 1; + v48 = v104[2]; + v49 = v104[3]; + if ( v48 >= v49 ) + goto LABEL_125; + goto LABEL_100; + } + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_134; + v46 = v12 - 55; + if ( v28 < v93 ) + goto LABEL_99; +LABEL_124: + v87 |= n - v46 < v8 * v93; + v93 = v8 * v93 + v46; + v47 = v104; + ++v98; + v48 = v104[2]; + v49 = v104[3]; + if ( v48 < v49 ) + { +LABEL_100: + v50 = (__int16 *)(v48 + 2); + v47[2] = v50; + goto LABEL_101; + } +LABEL_125: + (*(void (__fastcall **)(_DWORD *))(*v104 + 40))(v104); + v50 = (__int16 *)v104[2]; + v49 = v104[3]; +LABEL_101: + if ( (unsigned int)v50 >= v49 ) + v51 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v51 = *v50; + v104 = v51 == -1 ? 0 : v104; + v96 = v51 == -1; + v52 = v99 && v90 != 0; + if ( v52 ) + { + v59 = (__int16 *)v90[2]; + if ( (unsigned int)v59 >= v90[3] ) + v60 = (*(int (__fastcall **)(_DWORD *))(*v90 + 36))(v90); + else + v60 = *v59; + v90 = v60 == -1 ? 0 : v90; + v53 = v60 == -1 && v52; + } + else + { + v53 = a4 == -1; + } + if ( v96 != v53 ) + { + if ( v104 ) + { + v58 = (wchar_t *)v104[2]; + if ( (unsigned int)v58 >= v104[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v104 + 36))(v104); + else + v12 = *v58; + v104 = v12 == 0xFFFF ? 0 : v104; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v39 = v106; + v40 = (int *)v105; + v85 = 1; + if ( v106 ) + goto LABEL_107; +LABEL_70: + if ( !v103 && !v98 ) + { +LABEL_72: + *a7 = 0; + a7[1] = 0; + *a6 = 4; + goto LABEL_73; + } +LABEL_115: + if ( v89 ) + goto LABEL_72; + if ( v87 ) + { + v56 = 0; + v57 = 0x80000000; + if ( !v86 ) + { + v56 = -1; + v57 = 0x7FFFFFFF; + } + *a7 = v56; + a7[1] = v57; + *a6 = 4; + } + else + { + if ( v86 ) + v93 = -(__int64)v93; + *(_QWORD *)a7 = v93; + } +LABEL_73: + if ( v85 ) + *a6 |= 2u; + if ( v40 != v107 ) + operator delete(v40); + return v104; +} +// 46CB47: variable 'v79' is possibly undefined +// 46CBB4: variable 'v80' is possibly undefined +// 4E95AC: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (0046CE70) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::_M_extract_int[abi:cxx11]( + _DWORD *a1, + wchar_t a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + _DWORD *a7) +{ + _DWORD *v7; // ebx + int v8; // edi + bool v9; // dl + char v10; // dl + char v11; // si + wchar_t v12; // si + __int16 v13; // ax + char v14; // cl + unsigned int v15; // eax + unsigned int v16; // edx + __int16 *v17; // eax + __int16 v18; // dx + bool v19; // dl + char v20; // dl + int v21; // eax + unsigned int v22; // eax + unsigned int v23; // edx + __int16 *v24; // eax + __int16 v25; // ax + bool v26; // dl + char v27; // dl + unsigned __int64 v28; // kr00_8 + wchar_t *v29; // eax + int v30; // eax + unsigned int v31; // eax + unsigned int v32; // edx + __int16 *v33; // eax + __int16 v34; // dx + bool v35; // si + char v36; // si + size_t v37; // esi + int *v38; // eax + bool v40; // al + wchar_t *v41; // eax + __int16 *v42; // eax + __int16 v43; // ax + unsigned int v44; // eax + unsigned int v45; // edx + __int16 *v46; // eax + __int16 v47; // ax + bool v48; // si + char v49; // si + unsigned int v50; // edx + wchar_t *v51; // eax + __int16 *v52; // eax + __int16 v53; // ax + wchar_t *v54; // eax + __int16 *v55; // eax + __int16 v56; // dx + unsigned int v57; // edx + char v58; // cl + __int16 *v59; // eax + __int16 v60; // cx + __int16 *v61; // eax + __int16 v62; // ax + wchar_t *v63; // eax + std::locale::_Impl *v64; // eax + std::locale::_Impl *v65; // edi + wchar_t *v66; // eax + __int16 *v67; // eax + __int16 v68; // cx + char v69; // cl + __int16 v70; // ax + __int16 v71; // ax + void (__cdecl *v72)(void *); // [esp+4h] [ebp-84h] + unsigned int v73; // [esp+8h] [ebp-80h] + size_t N; // [esp+10h] [ebp-78h] + int S; // [esp+20h] [ebp-68h] + wchar_t *Sa; // [esp+20h] [ebp-68h] + char v77; // [esp+24h] [ebp-64h] + bool v78; // [esp+26h] [ebp-62h] + char v79; // [esp+27h] [ebp-61h] + __int64 v80; // [esp+28h] [ebp-60h] + int v81; // [esp+30h] [ebp-58h] + char v82; // [esp+30h] [ebp-58h] + _DWORD *v83; // [esp+34h] [ebp-54h] + char v84; // [esp+34h] [ebp-54h] + int v85; // [esp+38h] [ebp-50h] + char v86; // [esp+3Ch] [ebp-4Ch] + int v87; // [esp+3Ch] [ebp-4Ch] + char v88; // [esp+3Ch] [ebp-4Ch] + int v89; // [esp+3Ch] [ebp-4Ch] + char v90; // [esp+3Ch] [ebp-4Ch] + size_t v91; // [esp+3Ch] [ebp-4Ch] + bool v92; // [esp+40h] [ebp-48h] + unsigned int v93; // [esp+40h] [ebp-48h] + int *v94; // [esp+44h] [ebp-44h] + bool v95; // [esp+44h] [ebp-44h] + char v96; // [esp+44h] [ebp-44h] + bool v97; // [esp+44h] [ebp-44h] + int d; // [esp+48h] [ebp-40h] + int da; // [esp+48h] [ebp-40h] + UDItype db; // [esp+48h] [ebp-40h] + void *v101; // [esp+58h] [ebp-30h] BYREF + size_t v102; // [esp+5Ch] [ebp-2Ch] + int v103[10]; // [esp+60h] [ebp-28h] BYREF + + v7 = a1; + v83 = a3; + d = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * d); + v94 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * d); + if ( !v8 ) + { + v64 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v72); + *((_DWORD *)v64 + 1) = 0; + v65 = v64; + *(_DWORD *)v64 = &off_4F65B0; + *((_DWORD *)v64 + 2) = 0; + *((_DWORD *)v64 + 3) = 0; + *((_BYTE *)v64 + 16) = 0; + *((_DWORD *)v64 + 5) = 0; + *((_DWORD *)v64 + 6) = 0; + *((_DWORD *)v64 + 7) = 0; + *((_DWORD *)v64 + 8) = 0; + *((_DWORD *)v64 + 9) = 0; + *((_BYTE *)v64 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v64, a5 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v65, (const std::locale::facet *)d, v73); + v8 = *v94; + } + da = 8; + v81 = *(_DWORD *)(a5 + 12) & 0x4A; + if ( v81 != 64 ) + da = v81 == 8 ? 16 : 10; + v95 = a2 == 0xFFFF; + v9 = v95 && a1 != 0; + if ( v9 ) + { + v61 = (__int16 *)a1[2]; + if ( (unsigned int)v61 >= a1[3] ) + { + v62 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v9 = v95 && a1 != 0; + } + else + { + v62 = *v61; + } + v7 = v62 == -1 ? 0 : a1; + v10 = v62 == -1 && v9; + } + else + { + v10 = a2 == 0xFFFF; + } + v92 = a4 == -1; + if ( v92 && a3 != 0 ) + { + v59 = (__int16 *)a3[2]; + if ( (unsigned int)v59 >= a3[3] ) + { + v84 = v10; + v70 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v10 = v84; + v60 = v70; + } + else + { + v60 = *v59; + } + v83 = v60 == -1 ? 0 : a3; + v11 = v60 == -1 && v92 && a3 != 0; + } + else + { + v11 = a4 == -1; + } + if ( v11 == v10 ) + { + v78 = 0; + v14 = *(_BYTE *)(v8 + 16); + v12 = 0; + v82 = 1; + v85 = 0; + v97 = 0; +LABEL_44: + v21 = da; + if ( da == 16 ) + goto LABEL_25; + goto LABEL_45; + } + if ( v7 && a2 == 0xFFFF ) + { + v63 = (wchar_t *)v7[2]; + if ( (unsigned int)v63 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v63; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = a2; + } + v13 = *(_WORD *)(v8 + 112); + v14 = *(_BYTE *)(v8 + 16); + v78 = v13 == (__int16)v12; + if ( v13 == v12 || *(_WORD *)(v8 + 114) == v12 ) + { + if ( (!v14 || *(_WORD *)(v8 + 38) != v12) && *(_WORD *)(v8 + 36) != v12 ) + { + v15 = v7[2]; + v16 = v7[3]; + if ( v15 >= v16 ) + { + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v17 = (__int16 *)v7[2]; + v16 = v7[3]; + } + else + { + v17 = (__int16 *)(v15 + 2); + v7[2] = v17; + } + if ( v16 <= (unsigned int)v17 ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v18 = *v17; + v7 = v18 == -1 ? 0 : v7; + v96 = v18 == -1; + v19 = v92 && v83 != 0; + if ( v19 ) + { + v67 = (__int16 *)v83[2]; + if ( (unsigned int)v67 >= v83[3] ) + { + v71 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); + v19 = v92 && v83 != 0; + v68 = v71; + } + else + { + v68 = *v67; + } + v83 = v68 == -1 ? 0 : v83; + v20 = v68 == -1 && v19; + } + else + { + v20 = a4 == -1; + } + if ( v96 == v20 ) + { + v82 = 1; + v14 = *(_BYTE *)(v8 + 16); + v21 = da; + v85 = 0; + v97 = 0; + if ( da == 16 ) + { +LABEL_25: + N = 22; + S = 22; + goto LABEL_46; + } +LABEL_45: + N = v21; + S = v21; + goto LABEL_46; + } + if ( v7 ) + { + v66 = (wchar_t *)v7[2]; + if ( (unsigned int)v66 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v66; + v14 = *(_BYTE *)(v8 + 16); + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v14 = *(_BYTE *)(v8 + 16); + v12 = -1; + } + } + } + else + { + v78 = 0; + } + v85 = 0; + v97 = 0; + while ( 1 ) + { + if ( v14 && *(_WORD *)(v8 + 38) == v12 || *(_WORD *)(v8 + 36) == v12 ) + { +LABEL_86: + v82 = 0; + goto LABEL_44; + } + if ( *(_WORD *)(v8 + 120) != v12 ) + break; + v40 = !v97 || da == 10; + if ( !v40 ) + goto LABEL_33; + v97 = v81 == 0 || da == 8; + if ( !v97 ) + { + ++v85; + v97 = v40; +LABEL_37: + v22 = v7[2]; + v23 = v7[3]; + if ( v22 < v23 ) + goto LABEL_38; + goto LABEL_79; + } + v22 = v7[2]; + v23 = v7[3]; + v85 = 0; + da = 8; + if ( v22 < v23 ) + { +LABEL_38: + v24 = (__int16 *)(v22 + 2); + v7[2] = v24; + if ( v23 <= (unsigned int)v24 ) + goto LABEL_80; + goto LABEL_39; + } +LABEL_79: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v24 = (__int16 *)v7[2]; + if ( v7[3] <= (unsigned int)v24 ) + { +LABEL_80: + v25 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_40; + } +LABEL_39: + v25 = *v24; +LABEL_40: + v7 = v25 == -1 ? 0 : v7; + v86 = v25 == -1; + v26 = v92 && v83 != 0; + if ( v26 ) + { + v42 = (__int16 *)v83[2]; + if ( (unsigned int)v42 >= v83[3] ) + { + v43 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); + v26 = v92 && v83 != 0; + } + else + { + v43 = *v42; + } + v83 = v43 == -1 ? 0 : v83; + v27 = v43 == -1 && v26; + } + else + { + v27 = a4 == -1; + } + if ( v86 == v27 ) + { + v82 = 1; + v14 = *(_BYTE *)(v8 + 16); + goto LABEL_44; + } + v12 = -1; + if ( v7 ) + { + v41 = (wchar_t *)v7[2]; + if ( (unsigned int)v41 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v41; + v7 = v12 == 0xFFFF ? 0 : v7; + } + v14 = *(_BYTE *)(v8 + 16); + if ( !v97 ) + goto LABEL_86; + } + if ( !v97 ) + goto LABEL_86; +LABEL_33: + if ( *(_WORD *)(v8 + 116) != v12 && *(_WORD *)(v8 + 118) != v12 ) + { + v82 = 0; + v97 = 1; + goto LABEL_44; + } + if ( v81 == 0 || da == 16 ) + { + v85 = 0; + v97 = 0; + da = 16; + goto LABEL_37; + } + v82 = 0; + v97 = 1; + N = da; + S = da; +LABEL_46: + v102 = 0; + v101 = v103; + LOBYTE(v103[0]) = 0; + if ( v14 ) + std::string::reserve(&v101, 0x20u); + v80 = da; + v28 = 0xFFFFFFFFFFFFFFFFLL / da; + v77 = *(_BYTE *)(v8 + 164); + if ( v77 ) + { + if ( v82 ) + { + v37 = v102; + db = 0LL; + v38 = (int *)v101; + v77 = v82; + v79 = 0; + v82 = 0; +LABEL_67: + if ( !v37 ) + goto LABEL_68; +LABEL_105: + v93 = v37 + 1; + if ( v38 == v103 ) + v50 = 15; + else + v50 = v103[0]; + if ( v93 > v50 ) + { + std::string::_M_mutate((int)&v101, v37, 0, 0, 1u); + v38 = (int *)v101; + } + *((_BYTE *)v38 + v37) = v85; + v102 = v37 + 1; + *((_BYTE *)v101 + v93) = 0; + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (int)&v101) ) + *a6 = 4; + v38 = (int *)v101; + if ( !v97 && !(v102 | v85) ) + goto LABEL_70; + goto LABEL_113; + } + v79 = 0; + Sa = (wchar_t *)(v8 + 120); + db = 0LL; + while ( 2 ) + { + if ( *(_BYTE *)(v8 + 16) && *(_WORD *)(v8 + 38) == v12 ) + { + v37 = v102; + v38 = (int *)v101; + if ( !v85 ) + { + v77 = 0; + v82 = *(_BYTE *)(v8 + 16); + goto LABEL_67; + } + v91 = v102 + 1; + if ( v101 == v103 ) + v57 = 15; + else + v57 = v103[0]; + if ( v91 > v57 ) + { + std::string::_M_mutate((int)&v101, v102, 0, 0, 1u); + v38 = (int *)v101; + } + v58 = v85; + v85 = 0; + *((_BYTE *)v38 + v37) = v58; + v102 = v91; + *((_BYTE *)v101 + v91) = 0; +LABEL_59: + v31 = v7[2]; + v32 = v7[3]; + if ( v31 >= v32 ) + goto LABEL_135; + } + else + { + if ( v12 == *(_WORD *)(v8 + 36) ) + goto LABEL_131; + v29 = wmemchr(Sa, v12, N); + if ( !v29 ) + goto LABEL_131; + v30 = (char *)v29 - (char *)Sa; + v87 = v30 >> 1; + if ( v30 > 30 ) + v87 = (v30 >> 1) - 6; + if ( v28 >= db ) + { + v79 |= __PAIR64__(~(v87 >> 31), ~v87) < v80 * db; + ++v85; + db = v87 + v80 * db; + goto LABEL_59; + } + v32 = v7[3]; + v79 = v77; + v31 = v7[2]; + if ( v31 >= v32 ) + { +LABEL_135: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v33 = (__int16 *)v7[2]; + v32 = v7[3]; + goto LABEL_61; + } + } + v33 = (__int16 *)(v31 + 2); + v7[2] = v33; +LABEL_61: + if ( (unsigned int)v33 >= v32 ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v34 = *v33; + v7 = v34 == -1 ? 0 : v7; + v88 = v34 == -1; + v35 = v92 && v83 != 0; + if ( v35 ) + { + v55 = (__int16 *)v83[2]; + if ( (unsigned int)v55 >= v83[3] ) + v56 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); + else + v56 = *v55; + v83 = v56 == -1 ? 0 : v83; + v36 = v56 == -1 && v35; + } + else + { + v36 = a4 == -1; + } + if ( v36 == v88 ) + { + v37 = v102; + v38 = (int *)v101; + goto LABEL_67; + } + if ( v7 ) + { + v54 = (wchar_t *)v7[2]; + if ( (unsigned int)v54 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v54; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + } + if ( v82 ) + { + v69 = v82; + v37 = v102; + v79 = 0; + v82 = 0; + v38 = (int *)v101; + v77 = v69; + db = 0LL; + goto LABEL_67; + } + v79 = 0; + db = 0LL; + while ( 2 ) + { + if ( S > 10 ) + { + if ( (unsigned __int16)(v12 - 48) <= 9u ) + goto LABEL_95; + if ( (unsigned __int16)(v12 - 97) > 5u ) + { + if ( (unsigned __int16)(v12 - 65) > 5u ) + goto LABEL_131; + v89 = v12 - 55; + goto LABEL_96; + } + v89 = v12 - 87; + if ( v28 >= db ) + goto LABEL_121; +LABEL_97: + v44 = v7[2]; + v45 = v7[3]; + v79 = 1; + if ( v44 < v45 ) + goto LABEL_98; +LABEL_122: + (*(void (__fastcall **)(_DWORD *))(*v7 + 40))(v7); + v46 = (__int16 *)v7[2]; + v45 = v7[3]; + } + else + { + if ( v12 <= 0x2Fu || (unsigned __int16)(S + 48) <= v12 ) + { +LABEL_131: + v37 = v102; + v38 = (int *)v101; + v77 = 0; + goto LABEL_67; + } +LABEL_95: + v89 = v12 - 48; +LABEL_96: + if ( v28 < db ) + goto LABEL_97; +LABEL_121: + v79 |= __PAIR64__(~(v89 >> 31), ~v89) < v80 * db; + db = v89 + v80 * db; + v44 = v7[2]; + v45 = v7[3]; + ++v85; + if ( v44 >= v45 ) + goto LABEL_122; +LABEL_98: + v46 = (__int16 *)(v44 + 2); + v7[2] = v46; + } + if ( (unsigned int)v46 >= v45 ) + v47 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v47 = *v46; + v7 = v47 == -1 ? 0 : v7; + v90 = v47 == -1; + v48 = v92 && v83 != 0; + if ( v48 ) + { + v52 = (__int16 *)v83[2]; + if ( (unsigned int)v52 >= v83[3] ) + v53 = (*(int (__fastcall **)(_DWORD *))(*v83 + 36))(v83); + else + v53 = *v52; + v83 = v53 == -1 ? 0 : v83; + v49 = v53 == -1 && v48; + } + else + { + v49 = a4 == -1; + } + if ( v90 != v49 ) + { + if ( v7 ) + { + v51 = (wchar_t *)v7[2]; + if ( (unsigned int)v51 >= v7[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v12 = *v51; + v7 = v12 == 0xFFFF ? 0 : v7; + } + else + { + v12 = -1; + } + continue; + } + break; + } + v37 = v102; + v38 = (int *)v101; + v77 = 1; + if ( v102 ) + goto LABEL_105; +LABEL_68: + if ( !v97 && !v85 ) + { +LABEL_70: + *a7 = 0; + a7[1] = 0; + *a6 = 4; + goto LABEL_71; + } +LABEL_113: + if ( v82 ) + goto LABEL_70; + if ( v79 ) + { + *a7 = -1; + a7[1] = -1; + *a6 = 4; + } + else + { + if ( v78 ) + db = -(__int64)db; + *(_QWORD *)a7 = db; + } +LABEL_71: + if ( v77 ) + *a6 |= 2u; + if ( v38 != v103 ) + operator delete(v38); + return v7; +} +// 46D917: variable 'v72' is possibly undefined +// 46D98A: variable 'v73' is possibly undefined +// 4E95AC: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (0046DC30) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + unsigned int v9; // edi + char v10; // bl + char v11; // dl + char v12; // al + char v13; // dl + wchar_t v14; // bx + __int16 v15; // ax + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // al + char v23; // dl + int v24; // edx + int v25; // edx + _DWORD *v26; // ecx + unsigned int v27; // eax + __int16 *v28; // eax + __int16 v29; // ax + char v30; // dl + char v31; // bl + unsigned int *v32; // ecx + int v33; // ebx + volatile signed __int32 *v34; // ecx + __int64 result; // rax + bool v36; // al + __int16 *v37; // eax + __int16 v38; // cx + _WORD *v39; // eax + unsigned int *v40; // edi + unsigned int *v41; // ecx + char v42; // al + _WORD *v43; // eax + __int16 v44; // ax + _WORD *v45; // eax + wchar_t *v46; // eax + int v47; // eax + int v48; // edx + _DWORD *v49; // ecx + unsigned int v50; // eax + __int16 *v51; // eax + __int16 v52; // ax + char v53; // al + char v54; // bl + _WORD *v55; // eax + _WORD *v56; // eax + __int16 v57; // dx + __int16 v58; // ax + __int16 *v59; // eax + __int16 v60; // cx + __int16 *v61; // eax + __int16 v62; // ax + _WORD *v63; // eax + wchar_t v64; // ax + std::locale::_Impl *v65; // eax + std::locale::_Impl *v66; // esi + char v67; // al + __int16 v68; // ax + void (__cdecl *v69)(void *); // [esp+4h] [ebp-64h] + unsigned int v70; // [esp+8h] [ebp-60h] + wchar_t *S; // [esp+18h] [ebp-50h] + size_t N; // [esp+1Ch] [ebp-4Ch] + int v73; // [esp+20h] [ebp-48h] + std::string *v74; // [esp+20h] [ebp-48h] + std::string *v75; // [esp+20h] [ebp-48h] + char v76; // [esp+20h] [ebp-48h] + unsigned int v77; // [esp+24h] [ebp-44h] + bool v78; // [esp+29h] [ebp-3Fh] + char v79; // [esp+2Ah] [ebp-3Eh] + char v80; // [esp+2Bh] [ebp-3Dh] + char v81; // [esp+2Bh] [ebp-3Dh] + int v82; // [esp+2Ch] [ebp-3Ch] + char v83; // [esp+2Ch] [ebp-3Ch] + char v84; // [esp+2Ch] [ebp-3Ch] + int v85; // [esp+30h] [ebp-38h] + char v86; // [esp+34h] [ebp-34h] + unsigned int v87; // [esp+34h] [ebp-34h] + int *v88; // [esp+38h] [ebp-30h] + bool v89; // [esp+38h] [ebp-30h] + __int64 v90; // [esp+38h] [ebp-30h] + char v91; // [esp+38h] [ebp-30h] + char v92; // [esp+38h] [ebp-30h] + char v93; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v94[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v88 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v65 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v69); + *((_DWORD *)v65 + 1) = 0; + v66 = v65; + *(_DWORD *)v65 = &off_4F65B0; + *((_DWORD *)v65 + 2) = 0; + *((_DWORD *)v65 + 3) = 0; + *((_BYTE *)v65 + 16) = 0; + *((_DWORD *)v65 + 5) = 0; + *((_DWORD *)v65 + 6) = 0; + *((_DWORD *)v65 + 7) = 0; + *((_DWORD *)v65 + 8) = 0; + *((_DWORD *)v65 + 9) = 0; + *((_BYTE *)v65 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v65, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v66, (const std::locale::facet *)v7, v70); + v8 = *v88; + } + v82 = *(_DWORD *)(v6 + 12) & 0x4A; + v9 = 8; + if ( v82 != 64 ) + v9 = v82 == 8 ? 16 : 10; + v10 = WORD2(a1) == 0xFFFF; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v61 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v61 >= *(_DWORD *)(a1 + 12) ) + { + v92 = v10 & ((_DWORD)a1 != 0); + v62 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = v92; + } + else + { + v62 = *v61; + } + v10 = 0; + if ( v62 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + v12 = a3 == -1; + v13 = v12 & (a2 != 0); + if ( v13 ) + { + v59 = (__int16 *)a2[2]; + if ( (unsigned int)v59 >= a2[3] ) + { + v91 = v13; + v68 = (*(int (**)(void))(*a2 + 36))(); + v13 = v91; + v60 = v68; + } + else + { + v60 = *v59; + } + v12 = 0; + if ( v60 == -1 ) + { + a2 = 0; + v12 = v13; + } + } + if ( v10 == v12 ) + { + v78 = 0; + v16 = *(_BYTE *)(v8 + 16); + v14 = 0; + v80 = 1; + v85 = 0; + v89 = 0; +LABEL_40: + if ( v9 == 16 ) + { +LABEL_18: + N = 22; + v73 = 22; + v94[0] = (unsigned int *)&unk_4E93FC; + if ( !v16 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v9; + v73 = v9; + goto LABEL_42; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v63 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v63 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v63; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v15 = *(_WORD *)(v8 + 112); + v16 = *(_BYTE *)(v8 + 16); + v78 = v15 == (__int16)v14; + if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) + { + if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 2; + WORD2(a1) = -1; + v80 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v80 ) + { + v85 = 0; + v16 = *(_BYTE *)(v8 + 16); + v89 = 0; + if ( v9 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v64 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v16 = *(_BYTE *)(v8 + 16); + v14 = v64; + } + } + else + { + v78 = 0; + } + v85 = 0; + v89 = 0; + while ( 1 ) + { + if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) + { +LABEL_76: + v80 = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v14 ) + break; + v36 = !v89 || v9 == 10; + if ( !v36 ) + goto LABEL_27; + v89 = v82 == 0 || v9 == 8; + if ( !v89 ) + { + ++v85; + v89 = v36; +LABEL_31: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v18 = (_DWORD *)a1; + v85 = 0; + v9 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v18[2] = v19 + 2; + WORD2(a1) = -1; +LABEL_33: + v20 = (__int16 *)v18[2]; + if ( (unsigned int)v20 >= v18[3] ) + v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); + else + v21 = *v20; + v86 = 0; + if ( v21 == -1 ) + { + LODWORD(a1) = 0; + v86 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v86 = 1; +LABEL_37: + v22 = a3 == -1; + v23 = v22 & (a2 != 0); + if ( v23 ) + { + v37 = (__int16 *)a2[2]; + if ( (unsigned int)v37 >= a2[3] ) + { + v81 = v23; + v58 = (*(int (**)(void))(*a2 + 36))(); + v23 = v81; + v38 = v58; + } + else + { + v38 = *v37; + } + v22 = 0; + if ( v38 == -1 ) + { + a2 = 0; + v22 = v23; + } + } + if ( v22 == v86 ) + { + v80 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v45 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v45; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v89 ) + goto LABEL_76; + } + if ( !v89 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) + { + v80 = 0; + v89 = 1; + goto LABEL_40; + } + if ( v9 == 16 || v82 == 0 ) + { + v85 = 0; + v9 = 16; + v89 = 0; + goto LABEL_31; + } + v80 = 0; + N = v9; + v73 = v9; + v89 = 1; +LABEL_42: + v94[0] = (unsigned int *)&unk_4E93FC; + if ( v16 ) +LABEL_19: + std::string::reserve(v94, (std::string *)0x20, (unsigned int)v69); +LABEL_43: + v77 = 0xFFFFFFFF / v9; + v83 = *(_BYTE *)(v8 + 164); + if ( v83 ) + { + if ( v80 ) + { + v87 = 0; + v79 = 0; + v83 = v80; + v80 = 0; +LABEL_60: + v32 = v94[0]; + v33 = *(v94[0] - 3); + if ( v33 ) + goto LABEL_94; +LABEL_61: + v34 = (volatile signed __int32 *)(v32 - 3); + if ( v85 || v89 ) + goto LABEL_103; + goto LABEL_63; + } + v79 = 0; + S = (wchar_t *)(v8 + 120); + v87 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) + { + if ( v14 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v46 = wmemchr(S, v14, N); + if ( !v46 ) + goto LABEL_93; + v47 = (char *)v46 - (char *)S; + v48 = v47 >> 1; + if ( v47 > 30 ) + v48 -= 6; + if ( v77 >= v87 ) + { + v79 |= ~v48 < v9 * v87; + ++v85; + v87 = v48 + v9 * v87; + goto LABEL_129; + } + v49 = (_DWORD *)a1; + v79 = v83; + v50 = *(_DWORD *)(a1 + 8); + if ( v50 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v49[2] = v50 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v49 + 40))(v49); + v49 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v76 = v83; + goto LABEL_135; + } +LABEL_131: + v51 = (__int16 *)v49[2]; + if ( (unsigned int)v51 >= v49[3] ) + v52 = (*(int (__fastcall **)(_DWORD *))(*v49 + 36))(v49); + else + v52 = *v51; + v76 = 0; + if ( v52 == -1 ) + { + LODWORD(a1) = 0; + v76 = v83; + } +LABEL_135: + v53 = a3 == -1; + v54 = v53 & (a2 != 0); + if ( v54 ) + { + v56 = (_WORD *)a2[2]; + v57 = (unsigned int)v56 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v56; + v53 = 0; + if ( v57 == -1 ) + { + a2 = 0; + v53 = v54; + } + } + if ( v53 == v76 ) + goto LABEL_60; + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v55 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v55 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v55; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v85 ) + { + v83 = 0; + v80 = *(_BYTE *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v94, (std::string *)(char)v85, (char)v69); + v85 = 0; +LABEL_129: + v49 = (_DWORD *)a1; + v50 = *(_DWORD *)(a1 + 8); + if ( v50 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v79 = 0; + if ( v80 ) + { + v67 = v80; + v87 = 0; + v80 = 0; + v83 = v67; + goto LABEL_60; + } + v87 = 0; +LABEL_46: + v24 = v14; + if ( v73 > 10 ) + { + if ( (unsigned __int16)(v14 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v14 - 97) <= 5u ) + { + v25 = v24 - 87; + if ( v77 < v87 ) + goto LABEL_51; +LABEL_84: + v79 |= ~v25 < v9 * v87; + v26 = (_DWORD *)a1; + v87 = v25 + v9 * v87; + ++v85; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *, int))(*v26 + 40))(v26, v25); + v26 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v84 = 1; +LABEL_57: + v30 = a3 == -1; + v31 = v30 & (a2 != 0); + if ( v31 ) + { + v43 = (_WORD *)a2[2]; + v44 = (unsigned int)v43 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v43; + v30 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v30 = v31; + } + } + if ( v30 == v84 ) + { + v83 = 1; + goto LABEL_60; + } + v14 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_46; + v39 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v39; + if ( v14 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( v73 <= 10 ) + goto LABEL_93; + v24 = 0xFFFF; + } + if ( (unsigned __int16)(v14 - 65) <= 5u ) + { + v25 = v24 - 55; + goto LABEL_50; + } + } + else if ( v14 > 0x2Fu && (unsigned __int16)(v73 + 48) > v14 ) + { +LABEL_49: + v25 = v14 - 48; +LABEL_50: + if ( v77 >= v87 ) + goto LABEL_84; +LABEL_51: + v26 = (_DWORD *)a1; + v79 = 1; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v26[2] = v27 + 2; + WORD2(a1) = -1; +LABEL_53: + v28 = (__int16 *)v26[2]; + if ( (unsigned int)v28 >= v26[3] ) + v29 = (*(int (__fastcall **)(_DWORD *, int))(*v26 + 36))(v26, v25); + else + v29 = *v28; + v84 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v84 = 1; + } + goto LABEL_57; + } +LABEL_93: + v32 = v94[0]; + v83 = 0; + v33 = *(v94[0] - 3); + if ( !v33 ) + goto LABEL_61; +LABEL_94: + v74 = (std::string *)(v33 + 1); + if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) + std::string::reserve(v94, v74, (unsigned int)v69); + *((_BYTE *)v94[0] + *(v94[0] - 3)) = v85; + v40 = v94[0]; + v41 = v94[0] - 3; + if ( (_UNKNOWN *)v94[0] != &unk_4E93FC ) + { + *(v94[0] - 1) = 0; + *(v40 - 3) = (unsigned int)v74; + *((_BYTE *)v41 + v33 + 13) = 0; + v40 = v94[0]; + v41 = v94[0] - 3; + } + v75 = (std::string *)v41; + v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v94); + v34 = (volatile signed __int32 *)v75; + if ( !v42 ) + *a5 = 4; + if ( !v85 && !v89 && !*(v40 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v80 ) + { +LABEL_63: + *a6 = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v79 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v78 ) + v87 = -v87; + *a6 = v87; + } +LABEL_64: + if ( v83 ) + *a5 |= 2u; + result = a1; + if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v90 = a1; + std::string::_Rep::_M_dispose(v34, (int)&v93); + return v90; + } + return result; +} +// 46E607: variable 'v69' is possibly undefined +// 46E671: variable 'v70' is possibly undefined +// 46E6C5: variable 'v25' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (0046E830) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + unsigned int v9; // edi + char v10; // bl + char v11; // dl + char v12; // al + char v13; // dl + wchar_t v14; // bx + __int16 v15; // ax + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // al + char v23; // dl + int v24; // edx + int v25; // edx + _DWORD *v26; // ecx + unsigned int v27; // eax + __int16 *v28; // eax + __int16 v29; // ax + char v30; // dl + char v31; // bl + unsigned int *v32; // ecx + int v33; // ebx + volatile signed __int32 *v34; // ecx + __int64 result; // rax + bool v36; // al + __int16 *v37; // eax + __int16 v38; // cx + _WORD *v39; // eax + unsigned int *v40; // edi + unsigned int *v41; // ecx + char v42; // al + int v43; // eax + _WORD *v44; // eax + __int16 v45; // ax + _WORD *v46; // eax + wchar_t *v47; // eax + int v48; // eax + int v49; // edx + _DWORD *v50; // ecx + unsigned int v51; // eax + __int16 *v52; // eax + __int16 v53; // ax + char v54; // al + char v55; // bl + _WORD *v56; // eax + _WORD *v57; // eax + __int16 v58; // dx + __int16 v59; // ax + __int16 *v60; // eax + __int16 v61; // cx + __int16 *v62; // eax + __int16 v63; // ax + _WORD *v64; // eax + wchar_t v65; // ax + std::locale::_Impl *v66; // eax + std::locale::_Impl *v67; // esi + char v68; // al + __int16 v69; // ax + void (__cdecl *v70)(void *); // [esp+4h] [ebp-64h] + unsigned int v71; // [esp+8h] [ebp-60h] + wchar_t *S; // [esp+10h] [ebp-58h] + bool v73; // [esp+14h] [ebp-54h] + size_t N; // [esp+18h] [ebp-50h] + unsigned int v75; // [esp+1Ch] [ebp-4Ch] + int v76; // [esp+20h] [ebp-48h] + std::string *v77; // [esp+20h] [ebp-48h] + std::string *v78; // [esp+20h] [ebp-48h] + char v79; // [esp+20h] [ebp-48h] + unsigned int v80; // [esp+24h] [ebp-44h] + char v81; // [esp+2Ah] [ebp-3Eh] + char v82; // [esp+2Bh] [ebp-3Dh] + char v83; // [esp+2Bh] [ebp-3Dh] + int v84; // [esp+2Ch] [ebp-3Ch] + char v85; // [esp+2Ch] [ebp-3Ch] + char v86; // [esp+2Ch] [ebp-3Ch] + int v87; // [esp+30h] [ebp-38h] + char v88; // [esp+34h] [ebp-34h] + unsigned int v89; // [esp+34h] [ebp-34h] + int *v90; // [esp+38h] [ebp-30h] + bool v91; // [esp+38h] [ebp-30h] + __int64 v92; // [esp+38h] [ebp-30h] + char v93; // [esp+38h] [ebp-30h] + char v94; // [esp+38h] [ebp-30h] + char v95; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v96[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v90 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v66 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v70); + *((_DWORD *)v66 + 1) = 0; + v67 = v66; + *(_DWORD *)v66 = &off_4F65B0; + *((_DWORD *)v66 + 2) = 0; + *((_DWORD *)v66 + 3) = 0; + *((_BYTE *)v66 + 16) = 0; + *((_DWORD *)v66 + 5) = 0; + *((_DWORD *)v66 + 6) = 0; + *((_DWORD *)v66 + 7) = 0; + *((_DWORD *)v66 + 8) = 0; + *((_DWORD *)v66 + 9) = 0; + *((_BYTE *)v66 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v66, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v67, (const std::locale::facet *)v7, v71); + v8 = *v90; + } + v84 = *(_DWORD *)(v6 + 12) & 0x4A; + v9 = 8; + if ( v84 != 64 ) + v9 = v84 == 8 ? 16 : 10; + v10 = WORD2(a1) == 0xFFFF; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v62 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ) + { + v94 = v10 & ((_DWORD)a1 != 0); + v63 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = v94; + } + else + { + v63 = *v62; + } + v10 = 0; + if ( v63 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + v12 = a3 == -1; + v13 = v12 & (a2 != 0); + if ( v13 ) + { + v60 = (__int16 *)a2[2]; + if ( (unsigned int)v60 >= a2[3] ) + { + v93 = v13; + v69 = (*(int (**)(void))(*a2 + 36))(); + v13 = v93; + v61 = v69; + } + else + { + v61 = *v60; + } + v12 = 0; + if ( v61 == -1 ) + { + a2 = 0; + v12 = v13; + } + } + if ( v12 == v10 ) + { + v73 = 0; + v16 = *(_BYTE *)(v8 + 16); + v14 = 0; + v82 = 1; + v87 = 0; + v91 = 0; +LABEL_40: + if ( v9 == 16 ) + { +LABEL_18: + N = 22; + v76 = 22; + v96[0] = (unsigned int *)&unk_4E93FC; + if ( !v16 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v9; + v76 = v9; + goto LABEL_42; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v64 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v64 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v64; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v15 = *(_WORD *)(v8 + 112); + v16 = *(_BYTE *)(v8 + 16); + v73 = v15 == (__int16)v14; + if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) + { + if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 2; + WORD2(a1) = -1; + v82 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v82 ) + { + v87 = 0; + v16 = *(_BYTE *)(v8 + 16); + v91 = 0; + if ( v9 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v65 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v16 = *(_BYTE *)(v8 + 16); + v14 = v65; + } + } + else + { + v73 = 0; + } + v87 = 0; + v91 = 0; + while ( 1 ) + { + if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) + { +LABEL_76: + v82 = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v14 ) + break; + v36 = !v91 || v9 == 10; + if ( !v36 ) + goto LABEL_27; + v91 = v84 == 0 || v9 == 8; + if ( !v91 ) + { + ++v87; + v91 = v36; +LABEL_31: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v18 = (_DWORD *)a1; + v87 = 0; + v9 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v18[2] = v19 + 2; + WORD2(a1) = -1; +LABEL_33: + v20 = (__int16 *)v18[2]; + if ( (unsigned int)v20 >= v18[3] ) + v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); + else + v21 = *v20; + v88 = 0; + if ( v21 == -1 ) + { + LODWORD(a1) = 0; + v88 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v88 = 1; +LABEL_37: + v22 = a3 == -1; + v23 = v22 & (a2 != 0); + if ( v23 ) + { + v37 = (__int16 *)a2[2]; + if ( (unsigned int)v37 >= a2[3] ) + { + v83 = v23; + v59 = (*(int (**)(void))(*a2 + 36))(); + v23 = v83; + v38 = v59; + } + else + { + v38 = *v37; + } + v22 = 0; + if ( v38 == -1 ) + { + a2 = 0; + v22 = v23; + } + } + if ( v22 == v88 ) + { + v82 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v46 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v46; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v91 ) + goto LABEL_76; + } + if ( !v91 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) + { + v82 = 0; + v91 = 1; + goto LABEL_40; + } + if ( v9 == 16 || v84 == 0 ) + { + v87 = 0; + v9 = 16; + v91 = 0; + goto LABEL_31; + } + v82 = 0; + N = v9; + v76 = v9; + v91 = 1; +LABEL_42: + v96[0] = (unsigned int *)&unk_4E93FC; + if ( v16 ) +LABEL_19: + std::string::reserve(v96, (std::string *)0x20, (unsigned int)v70); +LABEL_43: + v75 = v73 + 0x7FFFFFFF; + v80 = v75 / v9; + v85 = *(_BYTE *)(v8 + 164); + if ( v85 ) + { + if ( v82 ) + { + v89 = 0; + v81 = 0; + v85 = v82; + v82 = 0; +LABEL_60: + v32 = v96[0]; + v33 = *(v96[0] - 3); + if ( v33 ) + goto LABEL_94; +LABEL_61: + v34 = (volatile signed __int32 *)(v32 - 3); + if ( v87 || v91 ) + goto LABEL_103; + goto LABEL_63; + } + v81 = 0; + S = (wchar_t *)(v8 + 120); + v89 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) + { + if ( v14 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v47 = wmemchr(S, v14, N); + if ( !v47 ) + goto LABEL_93; + v48 = (char *)v47 - (char *)S; + v49 = v48 >> 1; + if ( v48 > 30 ) + v49 -= 6; + if ( v80 >= v89 ) + { + v81 |= v75 - v49 < v9 * v89; + ++v87; + v89 = v49 + v9 * v89; + goto LABEL_129; + } + v50 = (_DWORD *)a1; + v81 = v85; + v51 = *(_DWORD *)(a1 + 8); + if ( v51 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v50[2] = v51 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v50 + 40))(v50); + v50 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v79 = v85; + goto LABEL_135; + } +LABEL_131: + v52 = (__int16 *)v50[2]; + if ( (unsigned int)v52 >= v50[3] ) + v53 = (*(int (__fastcall **)(_DWORD *))(*v50 + 36))(v50); + else + v53 = *v52; + v79 = 0; + if ( v53 == -1 ) + { + LODWORD(a1) = 0; + v79 = v85; + } +LABEL_135: + v54 = a3 == -1; + v55 = v54 & (a2 != 0); + if ( v55 ) + { + v57 = (_WORD *)a2[2]; + v58 = (unsigned int)v57 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v57; + v54 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v54 = v55; + } + } + if ( v79 == v54 ) + goto LABEL_60; + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v56 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v56; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v87 ) + { + v85 = 0; + v82 = *(_BYTE *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v96, (std::string *)(char)v87, (char)v70); + v87 = 0; +LABEL_129: + v50 = (_DWORD *)a1; + v51 = *(_DWORD *)(a1 + 8); + if ( v51 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v81 = 0; + if ( v82 ) + { + v68 = v82; + v89 = 0; + v82 = 0; + v85 = v68; + goto LABEL_60; + } + v89 = 0; +LABEL_46: + v24 = v14; + if ( v76 > 10 ) + { + if ( (unsigned __int16)(v14 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v14 - 97) <= 5u ) + { + v25 = v24 - 87; + if ( v80 < v89 ) + goto LABEL_51; +LABEL_84: + v81 |= v75 - v25 < v9 * v89; + v26 = (_DWORD *)a1; + v89 = v25 + v9 * v89; + ++v87; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *, int))(*v26 + 40))(v26, v25); + v26 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v86 = 1; +LABEL_57: + v30 = a3 == -1; + v31 = v30 & (a2 != 0); + if ( v31 ) + { + v44 = (_WORD *)a2[2]; + v45 = (unsigned int)v44 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v44; + v30 = 0; + if ( v45 == -1 ) + { + a2 = 0; + v30 = v31; + } + } + if ( v30 == v86 ) + { + v85 = 1; + goto LABEL_60; + } + v14 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_46; + v39 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v39; + if ( v14 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( v76 <= 10 ) + goto LABEL_93; + v24 = 0xFFFF; + } + if ( (unsigned __int16)(v14 - 65) <= 5u ) + { + v25 = v24 - 55; + goto LABEL_50; + } + } + else if ( v14 > 0x2Fu && (unsigned __int16)(v76 + 48) > v14 ) + { +LABEL_49: + v25 = v14 - 48; +LABEL_50: + if ( v80 >= v89 ) + goto LABEL_84; +LABEL_51: + v26 = (_DWORD *)a1; + v81 = 1; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v26[2] = v27 + 2; + WORD2(a1) = -1; +LABEL_53: + v28 = (__int16 *)v26[2]; + if ( (unsigned int)v28 >= v26[3] ) + v29 = (*(int (__fastcall **)(_DWORD *, int))(*v26 + 36))(v26, v25); + else + v29 = *v28; + v86 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v86 = 1; + } + goto LABEL_57; + } +LABEL_93: + v32 = v96[0]; + v85 = 0; + v33 = *(v96[0] - 3); + if ( !v33 ) + goto LABEL_61; +LABEL_94: + v77 = (std::string *)(v33 + 1); + if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) + std::string::reserve(v96, v77, (unsigned int)v70); + *((_BYTE *)v96[0] + *(v96[0] - 3)) = v87; + v40 = v96[0]; + v41 = v96[0] - 3; + if ( (_UNKNOWN *)v96[0] != &unk_4E93FC ) + { + *(v96[0] - 1) = 0; + *(v40 - 3) = (unsigned int)v77; + *((_BYTE *)v41 + v33 + 13) = 0; + v40 = v96[0]; + v41 = v96[0] - 3; + } + v78 = (std::string *)v41; + v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v96); + v34 = (volatile signed __int32 *)v78; + if ( !v42 ) + *a5 = 4; + if ( !v87 && !v91 && !*(v40 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v82 ) + { +LABEL_63: + *a6 = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v81 ) + { + *a6 = v73 + 0x7FFFFFFF; + *a5 = 4; + } + else + { + v43 = v89; + if ( v73 ) + v43 = -v89; + *a6 = v43; + } +LABEL_64: + if ( v85 ) + *a5 |= 2u; + result = a1; + if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v92 = a1; + std::string::_Rep::_M_dispose(v34, (int)&v95); + return v92; + } + return result; +} +// 46F207: variable 'v70' is possibly undefined +// 46F271: variable 'v71' is possibly undefined +// 46F2C5: variable 'v25' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (0046F430) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + unsigned int v9; // edi + char v10; // bl + char v11; // dl + char v12; // al + char v13; // dl + wchar_t v14; // bx + __int16 v15; // ax + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // al + char v23; // dl + int v24; // edx + int v25; // edx + _DWORD *v26; // ecx + unsigned int v27; // eax + __int16 *v28; // eax + __int16 v29; // ax + char v30; // dl + char v31; // bl + unsigned int *v32; // ecx + int v33; // ebx + volatile signed __int32 *v34; // ecx + __int64 result; // rax + bool v36; // al + __int16 *v37; // eax + __int16 v38; // cx + _WORD *v39; // eax + unsigned int *v40; // edi + unsigned int *v41; // ecx + char v42; // al + _WORD *v43; // eax + __int16 v44; // ax + _WORD *v45; // eax + wchar_t *v46; // eax + int v47; // eax + int v48; // edx + _DWORD *v49; // ecx + unsigned int v50; // eax + __int16 *v51; // eax + __int16 v52; // ax + char v53; // al + char v54; // bl + _WORD *v55; // eax + _WORD *v56; // eax + __int16 v57; // dx + __int16 v58; // ax + __int16 *v59; // eax + __int16 v60; // cx + __int16 *v61; // eax + __int16 v62; // ax + _WORD *v63; // eax + wchar_t v64; // ax + std::locale::_Impl *v65; // eax + std::locale::_Impl *v66; // esi + char v67; // al + __int16 v68; // ax + void (__cdecl *v69)(void *); // [esp+4h] [ebp-64h] + unsigned int v70; // [esp+8h] [ebp-60h] + wchar_t *S; // [esp+18h] [ebp-50h] + size_t N; // [esp+1Ch] [ebp-4Ch] + int v73; // [esp+20h] [ebp-48h] + std::string *v74; // [esp+20h] [ebp-48h] + std::string *v75; // [esp+20h] [ebp-48h] + char v76; // [esp+20h] [ebp-48h] + unsigned int v77; // [esp+24h] [ebp-44h] + bool v78; // [esp+29h] [ebp-3Fh] + char v79; // [esp+2Ah] [ebp-3Eh] + char v80; // [esp+2Bh] [ebp-3Dh] + char v81; // [esp+2Bh] [ebp-3Dh] + int v82; // [esp+2Ch] [ebp-3Ch] + char v83; // [esp+2Ch] [ebp-3Ch] + char v84; // [esp+2Ch] [ebp-3Ch] + int v85; // [esp+30h] [ebp-38h] + char v86; // [esp+34h] [ebp-34h] + unsigned int v87; // [esp+34h] [ebp-34h] + int *v88; // [esp+38h] [ebp-30h] + bool v89; // [esp+38h] [ebp-30h] + __int64 v90; // [esp+38h] [ebp-30h] + char v91; // [esp+38h] [ebp-30h] + char v92; // [esp+38h] [ebp-30h] + char v93; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v94[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v88 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v65 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v69); + *((_DWORD *)v65 + 1) = 0; + v66 = v65; + *(_DWORD *)v65 = &off_4F65B0; + *((_DWORD *)v65 + 2) = 0; + *((_DWORD *)v65 + 3) = 0; + *((_BYTE *)v65 + 16) = 0; + *((_DWORD *)v65 + 5) = 0; + *((_DWORD *)v65 + 6) = 0; + *((_DWORD *)v65 + 7) = 0; + *((_DWORD *)v65 + 8) = 0; + *((_DWORD *)v65 + 9) = 0; + *((_BYTE *)v65 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v65, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v66, (const std::locale::facet *)v7, v70); + v8 = *v88; + } + v82 = *(_DWORD *)(v6 + 12) & 0x4A; + v9 = 8; + if ( v82 != 64 ) + v9 = v82 == 8 ? 16 : 10; + v10 = WORD2(a1) == 0xFFFF; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v61 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v61 >= *(_DWORD *)(a1 + 12) ) + { + v92 = v10 & ((_DWORD)a1 != 0); + v62 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = v92; + } + else + { + v62 = *v61; + } + v10 = 0; + if ( v62 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + v12 = a3 == -1; + v13 = v12 & (a2 != 0); + if ( v13 ) + { + v59 = (__int16 *)a2[2]; + if ( (unsigned int)v59 >= a2[3] ) + { + v91 = v13; + v68 = (*(int (**)(void))(*a2 + 36))(); + v13 = v91; + v60 = v68; + } + else + { + v60 = *v59; + } + v12 = 0; + if ( v60 == -1 ) + { + a2 = 0; + v12 = v13; + } + } + if ( v10 == v12 ) + { + v78 = 0; + v16 = *(_BYTE *)(v8 + 16); + v14 = 0; + v80 = 1; + v85 = 0; + v89 = 0; +LABEL_40: + if ( v9 == 16 ) + { +LABEL_18: + N = 22; + v73 = 22; + v94[0] = (unsigned int *)&unk_4E93FC; + if ( !v16 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v9; + v73 = v9; + goto LABEL_42; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v63 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v63 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v63; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v15 = *(_WORD *)(v8 + 112); + v16 = *(_BYTE *)(v8 + 16); + v78 = v15 == (__int16)v14; + if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) + { + if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 2; + WORD2(a1) = -1; + v80 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v80 ) + { + v85 = 0; + v16 = *(_BYTE *)(v8 + 16); + v89 = 0; + if ( v9 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v64 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v16 = *(_BYTE *)(v8 + 16); + v14 = v64; + } + } + else + { + v78 = 0; + } + v85 = 0; + v89 = 0; + while ( 1 ) + { + if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) + { +LABEL_76: + v80 = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v14 ) + break; + v36 = !v89 || v9 == 10; + if ( !v36 ) + goto LABEL_27; + v89 = v82 == 0 || v9 == 8; + if ( !v89 ) + { + ++v85; + v89 = v36; +LABEL_31: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v18 = (_DWORD *)a1; + v85 = 0; + v9 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v18[2] = v19 + 2; + WORD2(a1) = -1; +LABEL_33: + v20 = (__int16 *)v18[2]; + if ( (unsigned int)v20 >= v18[3] ) + v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); + else + v21 = *v20; + v86 = 0; + if ( v21 == -1 ) + { + LODWORD(a1) = 0; + v86 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v86 = 1; +LABEL_37: + v22 = a3 == -1; + v23 = v22 & (a2 != 0); + if ( v23 ) + { + v37 = (__int16 *)a2[2]; + if ( (unsigned int)v37 >= a2[3] ) + { + v81 = v23; + v58 = (*(int (**)(void))(*a2 + 36))(); + v23 = v81; + v38 = v58; + } + else + { + v38 = *v37; + } + v22 = 0; + if ( v38 == -1 ) + { + a2 = 0; + v22 = v23; + } + } + if ( v22 == v86 ) + { + v80 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v45 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v45; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v89 ) + goto LABEL_76; + } + if ( !v89 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) + { + v80 = 0; + v89 = 1; + goto LABEL_40; + } + if ( v9 == 16 || v82 == 0 ) + { + v85 = 0; + v9 = 16; + v89 = 0; + goto LABEL_31; + } + v80 = 0; + N = v9; + v73 = v9; + v89 = 1; +LABEL_42: + v94[0] = (unsigned int *)&unk_4E93FC; + if ( v16 ) +LABEL_19: + std::string::reserve(v94, (std::string *)0x20, (unsigned int)v69); +LABEL_43: + v77 = 0xFFFFFFFF / v9; + v83 = *(_BYTE *)(v8 + 164); + if ( v83 ) + { + if ( v80 ) + { + v87 = 0; + v79 = 0; + v83 = v80; + v80 = 0; +LABEL_60: + v32 = v94[0]; + v33 = *(v94[0] - 3); + if ( v33 ) + goto LABEL_94; +LABEL_61: + v34 = (volatile signed __int32 *)(v32 - 3); + if ( v85 || v89 ) + goto LABEL_103; + goto LABEL_63; + } + v79 = 0; + S = (wchar_t *)(v8 + 120); + v87 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) + { + if ( v14 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v46 = wmemchr(S, v14, N); + if ( !v46 ) + goto LABEL_93; + v47 = (char *)v46 - (char *)S; + v48 = v47 >> 1; + if ( v47 > 30 ) + v48 -= 6; + if ( v77 >= v87 ) + { + v79 |= ~v48 < v9 * v87; + ++v85; + v87 = v48 + v9 * v87; + goto LABEL_129; + } + v49 = (_DWORD *)a1; + v79 = v83; + v50 = *(_DWORD *)(a1 + 8); + if ( v50 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v49[2] = v50 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v49 + 40))(v49); + v49 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v76 = v83; + goto LABEL_135; + } +LABEL_131: + v51 = (__int16 *)v49[2]; + if ( (unsigned int)v51 >= v49[3] ) + v52 = (*(int (__fastcall **)(_DWORD *))(*v49 + 36))(v49); + else + v52 = *v51; + v76 = 0; + if ( v52 == -1 ) + { + LODWORD(a1) = 0; + v76 = v83; + } +LABEL_135: + v53 = a3 == -1; + v54 = v53 & (a2 != 0); + if ( v54 ) + { + v56 = (_WORD *)a2[2]; + v57 = (unsigned int)v56 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v56; + v53 = 0; + if ( v57 == -1 ) + { + a2 = 0; + v53 = v54; + } + } + if ( v53 == v76 ) + goto LABEL_60; + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v55 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v55 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v55; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v85 ) + { + v83 = 0; + v80 = *(_BYTE *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v94, (std::string *)(char)v85, (char)v69); + v85 = 0; +LABEL_129: + v49 = (_DWORD *)a1; + v50 = *(_DWORD *)(a1 + 8); + if ( v50 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v79 = 0; + if ( v80 ) + { + v67 = v80; + v87 = 0; + v80 = 0; + v83 = v67; + goto LABEL_60; + } + v87 = 0; +LABEL_46: + v24 = v14; + if ( v73 > 10 ) + { + if ( (unsigned __int16)(v14 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v14 - 97) <= 5u ) + { + v25 = v24 - 87; + if ( v77 < v87 ) + goto LABEL_51; +LABEL_84: + v79 |= ~v25 < v9 * v87; + v26 = (_DWORD *)a1; + v87 = v25 + v9 * v87; + ++v85; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *, int))(*v26 + 40))(v26, v25); + v26 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v84 = 1; +LABEL_57: + v30 = a3 == -1; + v31 = v30 & (a2 != 0); + if ( v31 ) + { + v43 = (_WORD *)a2[2]; + v44 = (unsigned int)v43 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v43; + v30 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v30 = v31; + } + } + if ( v30 == v84 ) + { + v83 = 1; + goto LABEL_60; + } + v14 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_46; + v39 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v39; + if ( v14 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( v73 <= 10 ) + goto LABEL_93; + v24 = 0xFFFF; + } + if ( (unsigned __int16)(v14 - 65) <= 5u ) + { + v25 = v24 - 55; + goto LABEL_50; + } + } + else if ( v14 > 0x2Fu && (unsigned __int16)(v73 + 48) > v14 ) + { +LABEL_49: + v25 = v14 - 48; +LABEL_50: + if ( v77 >= v87 ) + goto LABEL_84; +LABEL_51: + v26 = (_DWORD *)a1; + v79 = 1; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v26[2] = v27 + 2; + WORD2(a1) = -1; +LABEL_53: + v28 = (__int16 *)v26[2]; + if ( (unsigned int)v28 >= v26[3] ) + v29 = (*(int (__fastcall **)(_DWORD *, int))(*v26 + 36))(v26, v25); + else + v29 = *v28; + v84 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v84 = 1; + } + goto LABEL_57; + } +LABEL_93: + v32 = v94[0]; + v83 = 0; + v33 = *(v94[0] - 3); + if ( !v33 ) + goto LABEL_61; +LABEL_94: + v74 = (std::string *)(v33 + 1); + if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) + std::string::reserve(v94, v74, (unsigned int)v69); + *((_BYTE *)v94[0] + *(v94[0] - 3)) = v85; + v40 = v94[0]; + v41 = v94[0] - 3; + if ( (_UNKNOWN *)v94[0] != &unk_4E93FC ) + { + *(v94[0] - 1) = 0; + *(v40 - 3) = (unsigned int)v74; + *((_BYTE *)v41 + v33 + 13) = 0; + v40 = v94[0]; + v41 = v94[0] - 3; + } + v75 = (std::string *)v41; + v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v94); + v34 = (volatile signed __int32 *)v75; + if ( !v42 ) + *a5 = 4; + if ( !v85 && !v89 && !*(v40 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v80 ) + { +LABEL_63: + *a6 = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v79 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v78 ) + v87 = -v87; + *a6 = v87; + } +LABEL_64: + if ( v83 ) + *a5 |= 2u; + result = a1; + if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v90 = a1; + std::string::_Rep::_M_dispose(v34, (int)&v93); + return v90; + } + return result; +} +// 46FE07: variable 'v69' is possibly undefined +// 46FE71: variable 'v70' is possibly undefined +// 46FEC5: variable 'v25' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (00470030) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + unsigned __int16 *a6) +{ + int v6; // edi + int v7; // ebx + int v8; // esi + int v9; // edi + char v10; // bl + char v11; // dl + char v12; // al + char v13; // dl + wchar_t v14; // bx + __int16 v15; // ax + char v16; // cl + unsigned int v17; // eax + _DWORD *v18; // ecx + unsigned int v19; // eax + __int16 *v20; // eax + __int16 v21; // ax + char v22; // al + char v23; // dl + int v24; // eax + int v25; // eax + _DWORD *v26; // ecx + unsigned int v27; // eax + __int16 *v28; // eax + __int16 v29; // ax + char v30; // dl + char v31; // bl + unsigned int *v32; // ecx + int v33; // ebx + volatile signed __int32 *v34; // ecx + __int64 result; // rax + bool v36; // al + __int16 *v37; // eax + __int16 v38; // cx + _WORD *v39; // eax + unsigned int *v40; // edi + unsigned int *v41; // ecx + char v42; // al + _WORD *v43; // eax + __int16 v44; // ax + _WORD *v45; // eax + wchar_t *v46; // eax + int v47; // eax + int v48; // ecx + int v49; // ebx + _DWORD *v50; // ecx + unsigned int v51; // eax + __int16 *v52; // eax + __int16 v53; // ax + char v54; // al + char v55; // bl + _WORD *v56; // eax + _WORD *v57; // eax + __int16 v58; // dx + __int16 v59; // ax + __int16 *v60; // eax + __int16 v61; // cx + __int16 *v62; // eax + __int16 v63; // ax + _WORD *v64; // eax + wchar_t v65; // ax + std::locale::_Impl *v66; // eax + std::locale::_Impl *v67; // esi + char v68; // al + __int16 v69; // ax + char v70; // al + void (__cdecl *v71)(void *); // [esp+4h] [ebp-64h] + unsigned int v72; // [esp+8h] [ebp-60h] + bool v73; // [esp+1Bh] [ebp-4Dh] + wchar_t *S; // [esp+1Ch] [ebp-4Ch] + size_t N; // [esp+20h] [ebp-48h] + int v76; // [esp+24h] [ebp-44h] + std::string *v77; // [esp+24h] [ebp-44h] + std::string *v78; // [esp+24h] [ebp-44h] + char v79; // [esp+24h] [ebp-44h] + int v80; // [esp+28h] [ebp-40h] + int v81; // [esp+2Ch] [ebp-3Ch] + char v82; // [esp+2Ch] [ebp-3Ch] + char v83; // [esp+2Ch] [ebp-3Ch] + int v84; // [esp+30h] [ebp-38h] + char v85; // [esp+34h] [ebp-34h] + char v86; // [esp+35h] [ebp-33h] + char v87; // [esp+35h] [ebp-33h] + char v88; // [esp+36h] [ebp-32h] + unsigned __int16 v89; // [esp+36h] [ebp-32h] + int *v90; // [esp+38h] [ebp-30h] + bool v91; // [esp+38h] [ebp-30h] + __int64 v92; // [esp+38h] [ebp-30h] + char v93; // [esp+38h] [ebp-30h] + char v94; // [esp+38h] [ebp-30h] + char v95; // [esp+4Bh] [ebp-1Dh] BYREF + unsigned int *v96[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v90 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v66 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v71); + *((_DWORD *)v66 + 1) = 0; + v67 = v66; + *(_DWORD *)v66 = &off_4F65B0; + *((_DWORD *)v66 + 2) = 0; + *((_DWORD *)v66 + 3) = 0; + *((_BYTE *)v66 + 16) = 0; + *((_DWORD *)v66 + 5) = 0; + *((_DWORD *)v66 + 6) = 0; + *((_DWORD *)v66 + 7) = 0; + *((_DWORD *)v66 + 8) = 0; + *((_DWORD *)v66 + 9) = 0; + *((_BYTE *)v66 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v66, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v67, (const std::locale::facet *)v7, v72); + v8 = *v90; + } + v81 = *(_DWORD *)(v6 + 12) & 0x4A; + v9 = 8; + if ( v81 != 64 ) + v9 = v81 == 8 ? 16 : 10; + v10 = WORD2(a1) == 0xFFFF; + v11 = v10 & ((_DWORD)a1 != 0); + if ( v11 ) + { + v62 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v62 >= *(_DWORD *)(a1 + 12) ) + { + v94 = v10 & ((_DWORD)a1 != 0); + v63 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v11 = v94; + } + else + { + v63 = *v62; + } + v10 = 0; + if ( v63 == -1 ) + { + LODWORD(a1) = 0; + v10 = v11; + } + } + v12 = a3 == -1; + v13 = v12 & (a2 != 0); + if ( v13 ) + { + v60 = (__int16 *)a2[2]; + if ( (unsigned int)v60 >= a2[3] ) + { + v93 = v13; + v69 = (*(int (**)(void))(*a2 + 36))(); + v13 = v93; + v61 = v69; + } + else + { + v61 = *v60; + } + v12 = 0; + if ( v61 == -1 ) + { + a2 = 0; + v12 = v13; + } + } + if ( v10 == v12 ) + { + v73 = 0; + v16 = *(_BYTE *)(v8 + 16); + v14 = 0; + v86 = 1; + v84 = 0; + v91 = 0; +LABEL_40: + if ( v9 == 16 ) + { +LABEL_18: + N = 22; + v76 = 22; + v96[0] = (unsigned int *)&unk_4E93FC; + if ( !v16 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v9; + v76 = v9; + goto LABEL_42; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v64 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v64 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v64; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v15 = *(_WORD *)(v8 + 112); + v16 = *(_BYTE *)(v8 + 16); + v73 = v15 == (__int16)v14; + if ( v15 == v14 || *(_WORD *)(v8 + 114) == v14 ) + { + if ( (!v16 || *(_WORD *)(v8 + 38) != v14) && *(_WORD *)(v8 + 36) != v14 ) + { + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 2; + WORD2(a1) = -1; + v86 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v86 ) + { + v84 = 0; + v16 = *(_BYTE *)(v8 + 16); + v91 = 0; + if ( v9 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v65 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v16 = *(_BYTE *)(v8 + 16); + v14 = v65; + } + } + else + { + v73 = 0; + } + v84 = 0; + v91 = 0; + while ( 1 ) + { + if ( v16 && *(_WORD *)(v8 + 38) == v14 || *(_WORD *)(v8 + 36) == v14 ) + { +LABEL_76: + v86 = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v14 ) + break; + v36 = !v91 || v9 == 10; + if ( !v36 ) + goto LABEL_27; + v91 = v81 == 0 || v9 == 8; + if ( !v91 ) + { + ++v84; + v91 = v36; +LABEL_31: + v18 = (_DWORD *)a1; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v18 = (_DWORD *)a1; + v84 = 0; + v9 = 8; + v19 = *(_DWORD *)(a1 + 8); + if ( v19 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v18[2] = v19 + 2; + WORD2(a1) = -1; +LABEL_33: + v20 = (__int16 *)v18[2]; + if ( (unsigned int)v20 >= v18[3] ) + v21 = (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18); + else + v21 = *v20; + v88 = 0; + if ( v21 == -1 ) + { + LODWORD(a1) = 0; + v88 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v88 = 1; +LABEL_37: + v22 = a3 == -1; + v23 = v22 & (a2 != 0); + if ( v23 ) + { + v37 = (__int16 *)a2[2]; + if ( (unsigned int)v37 >= a2[3] ) + { + v87 = v23; + v59 = (*(int (**)(void))(*a2 + 36))(); + v23 = v87; + v38 = v59; + } + else + { + v38 = *v37; + } + v22 = 0; + if ( v38 == -1 ) + { + a2 = 0; + v22 = v23; + } + } + if ( v22 == v88 ) + { + v86 = 1; + v16 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v45 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v45; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + v16 = *(_BYTE *)(v8 + 16); + if ( !v91 ) + goto LABEL_76; + } + if ( !v91 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v14 && *(_WORD *)(v8 + 118) != v14 ) + { + v86 = 0; + v91 = 1; + goto LABEL_40; + } + if ( v9 == 16 || v81 == 0 ) + { + v84 = 0; + v9 = 16; + v91 = 0; + goto LABEL_31; + } + v86 = 0; + N = v9; + v76 = v9; + v91 = 1; +LABEL_42: + v96[0] = (unsigned int *)&unk_4E93FC; + if ( v16 ) +LABEL_19: + std::string::reserve(v96, (std::string *)0x20, (unsigned int)v71); +LABEL_43: + v80 = 0xFFFF / v9; + v82 = *(_BYTE *)(v8 + 164); + if ( v82 ) + { + if ( v86 ) + { + v70 = v86; + v85 = 0; + v86 = 0; + v82 = v70; + v89 = 0; +LABEL_60: + v32 = v96[0]; + v33 = *(v96[0] - 3); + if ( v33 ) + goto LABEL_94; +LABEL_61: + v34 = (volatile signed __int32 *)(v32 - 3); + if ( v84 || v91 ) + goto LABEL_103; + goto LABEL_63; + } + v85 = 0; + S = (wchar_t *)(v8 + 120); + v89 = 0; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v14 ) + { + if ( v14 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v46 = wmemchr(S, v14, N); + if ( !v46 ) + goto LABEL_93; + v47 = (char *)v46 - (char *)S; + v48 = v47 >> 1; + if ( v47 > 30 ) + v48 -= 6; + if ( (unsigned __int16)v80 >= v89 ) + { + v49 = (unsigned __int16)(v9 * v89); + ++v84; + v85 |= v49 > 0xFFFF - v48; + v89 = v49 + v48; + goto LABEL_129; + } + v50 = (_DWORD *)a1; + v85 = v82; + v51 = *(_DWORD *)(a1 + 8); + if ( v51 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v50[2] = v51 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v50 + 40))(v50); + v50 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v79 = v82; + goto LABEL_135; + } +LABEL_131: + v52 = (__int16 *)v50[2]; + if ( (unsigned int)v52 >= v50[3] ) + v53 = (*(int (__fastcall **)(_DWORD *))(*v50 + 36))(v50); + else + v53 = *v52; + v79 = 0; + if ( v53 == -1 ) + { + LODWORD(a1) = 0; + v79 = v82; + } +LABEL_135: + v54 = a3 == -1; + v55 = v54 & (a2 != 0); + if ( v55 ) + { + v57 = (_WORD *)a2[2]; + v58 = (unsigned int)v57 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v57; + v54 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v54 = v55; + } + } + if ( v54 == v79 ) + goto LABEL_60; + v14 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v56 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v56 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v56; + if ( v14 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v84 ) + { + v82 = 0; + v86 = *(_BYTE *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v96, (std::string *)(char)v84, (char)v71); + v84 = 0; +LABEL_129: + v50 = (_DWORD *)a1; + v51 = *(_DWORD *)(a1 + 8); + if ( v51 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v85 = 0; + if ( v86 ) + { + v68 = v86; + v86 = 0; + v82 = v68; + v89 = 0; + goto LABEL_60; + } + v89 = 0; +LABEL_46: + v24 = v14; + if ( v76 > 10 ) + { + if ( (unsigned __int16)(v14 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v14 - 97) <= 5u ) + { + v25 = v24 - 87; + if ( (unsigned __int16)v80 < v89 ) + goto LABEL_51; +LABEL_84: + v85 |= (unsigned __int16)(v9 * v89) > 0xFFFF - v25; + v26 = (_DWORD *)a1; + v89 = v9 * v89 + v25; + ++v84; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *))(*v26 + 40))(v26); + v26 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v83 = 1; +LABEL_57: + v30 = a3 == -1; + v31 = v30 & (a2 != 0); + if ( v31 ) + { + v43 = (_WORD *)a2[2]; + v44 = (unsigned int)v43 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v43; + v30 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v30 = v31; + } + } + if ( v30 == v83 ) + { + v82 = 1; + goto LABEL_60; + } + v14 = WORD2(a1); + if ( WORD2(a1) != 0xFFFF || !(_DWORD)a1 ) + goto LABEL_46; + v39 = *(_WORD **)(a1 + 8); + v14 = (unsigned int)v39 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v39; + if ( v14 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( v76 <= 10 ) + goto LABEL_93; + v24 = 0xFFFF; + } + if ( (unsigned __int16)(v14 - 65) <= 5u ) + { + v25 = v24 - 55; + goto LABEL_50; + } + } + else if ( v14 > 0x2Fu && (unsigned __int16)(v76 + 48) > v14 ) + { +LABEL_49: + v25 = v14 - 48; +LABEL_50: + if ( (unsigned __int16)v80 >= v89 ) + goto LABEL_84; +LABEL_51: + v26 = (_DWORD *)a1; + v85 = 1; + v27 = *(_DWORD *)(a1 + 8); + if ( v27 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v26[2] = v27 + 2; + WORD2(a1) = -1; +LABEL_53: + v28 = (__int16 *)v26[2]; + if ( (unsigned int)v28 >= v26[3] ) + v29 = (*(int (__fastcall **)(_DWORD *))(*v26 + 36))(v26); + else + v29 = *v28; + v83 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v83 = 1; + } + goto LABEL_57; + } +LABEL_93: + v32 = v96[0]; + v82 = 0; + v33 = *(v96[0] - 3); + if ( !v33 ) + goto LABEL_61; +LABEL_94: + v77 = (std::string *)(v33 + 1); + if ( v33 + 1 > *(v32 - 2) || (int)*(v32 - 1) > 0 ) + std::string::reserve(v96, v77, (unsigned int)v71); + *((_BYTE *)v96[0] + *(v96[0] - 3)) = v84; + v40 = v96[0]; + v41 = v96[0] - 3; + if ( (_UNKNOWN *)v96[0] != &unk_4E93FC ) + { + *(v96[0] - 1) = 0; + *(v40 - 3) = (unsigned int)v77; + *((_BYTE *)v41 + v33 + 13) = 0; + v40 = v96[0]; + v41 = v96[0] - 3; + } + v78 = (std::string *)v41; + v42 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v96); + v34 = (volatile signed __int32 *)v78; + if ( !v42 ) + *a5 = 4; + if ( !v84 && !v91 && !*(v40 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v86 ) + { +LABEL_63: + *a6 = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v85 ) + { + *a6 = -1; + *a5 = 4; + } + else + { + if ( v73 ) + v89 = -v89; + *a6 = v89; + } +LABEL_64: + if ( v82 ) + *a5 |= 2u; + result = a1; + if ( v34 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v92 = a1; + std::string::_Rep::_M_dispose(v34, (int)&v95); + return v92; + } + return result; +} +// 470A07: variable 'v71' is possibly undefined +// 470A71: variable 'v72' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (00470C30) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // esi + int v7; // ebx + std::locale::_Impl **v8; // edi + int v9; // eax + int v10; // esi + int v11; // edi + char v12; // bl + char v13; // dl + char v14; // al + char v15; // dl + wchar_t v16; // bx + __int16 v17; // ax + char v18; // cl + unsigned int v19; // eax + _DWORD *v20; // ecx + unsigned int v21; // eax + __int16 *v22; // eax + __int16 v23; // ax + char v24; // al + char v25; // dl + unsigned __int64 v26; // kr00_8 + int v27; // esi + int v28; // edi + int v29; // eax + int v30; // ecx + _DWORD *v31; // ecx + unsigned int v32; // eax + __int16 *v33; // eax + __int16 v34; // ax + char v35; // dl + char v36; // bl + unsigned int *v37; // ecx + int v38; // ebx + volatile signed __int32 *v39; // ecx + int *v40; // eax + __int64 result; // rax + bool v42; // al + __int16 *v43; // eax + __int16 v44; // cx + int v45; // ebx + int v46; // edi + unsigned int v47; // esi + int v48; // eax + unsigned int v49; // edi + _WORD *v50; // eax + unsigned int *v51; // edx + unsigned int *v52; // ecx + char v53; // al + int v54; // eax + unsigned int v55; // edx + int *v56; // edi + _DWORD *v57; // eax + _WORD *v58; // eax + __int16 v59; // ax + _WORD *v60; // eax + wchar_t *v61; // eax + int v62; // eax + int v63; // ecx + int v64; // ebx + int v65; // edi + unsigned int v66; // esi + unsigned int v67; // edi + _DWORD *v68; // ecx + unsigned int v69; // eax + __int16 *v70; // eax + __int16 v71; // ax + char v72; // al + char v73; // bl + _WORD *v74; // eax + _WORD *v75; // eax + __int16 v76; // dx + __int16 v77; // ax + __int16 *v78; // eax + __int16 v79; // cx + __int16 *v80; // eax + __int16 v81; // ax + int *v82; // eax + _WORD *v83; // eax + _DWORD *v84; // eax + char v85; // al + __int16 v86; // ax + char v87; // al + void (__cdecl *v88)(void *); // [esp+4h] [ebp-74h] + unsigned int v89; // [esp+4h] [ebp-74h] + unsigned int v90; // [esp+8h] [ebp-70h] + wchar_t *S; // [esp+18h] [ebp-60h] + bool v92; // [esp+1Fh] [ebp-59h] + UDItype n; // [esp+20h] [ebp-58h] + size_t N; // [esp+28h] [ebp-50h] + int v95; // [esp+2Ch] [ebp-4Ch] + char v96; // [esp+2Ch] [ebp-4Ch] + std::string *v97; // [esp+30h] [ebp-48h] + std::string *v98; // [esp+30h] [ebp-48h] + __int64 v99; // [esp+38h] [ebp-40h] + unsigned int *v100; // [esp+38h] [ebp-40h] + char v101; // [esp+38h] [ebp-40h] + int v102; // [esp+40h] [ebp-38h] + char v103; // [esp+44h] [ebp-34h] + char v104; // [esp+45h] [ebp-33h] + char v105; // [esp+45h] [ebp-33h] + char v106; // [esp+46h] [ebp-32h] + char v107; // [esp+46h] [ebp-32h] + bool v108; // [esp+47h] [ebp-31h] + char v109; // [esp+47h] [ebp-31h] + char v110; // [esp+47h] [ebp-31h] + std::locale::_Impl *v111; // [esp+48h] [ebp-30h] + std::locale::_Impl *v112; // [esp+48h] [ebp-30h] + __int64 v113; // [esp+48h] [ebp-30h] + char v114; // [esp+5Bh] [ebp-1Dh] BYREF + unsigned int *v115[7]; // [esp+5Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (std::locale::_Impl **)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v111 = *v8; + if ( !*v8 ) + { + v84 = operator new((struct type_info *)0xA8, v88); + v84[1] = 0; + *v84 = &off_4F65B0; + v84[2] = 0; + v84[3] = 0; + *((_BYTE *)v84 + 16) = 0; + v84[5] = 0; + v84[6] = 0; + v84[7] = 0; + v84[8] = 0; + v84[9] = 0; + *((_BYTE *)v84 + 164) = 0; + v112 = (std::locale::_Impl *)v84; + std::__numpunct_cache::_M_cache((int)v84, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v112, (const std::locale::facet *)v7, v90); + v111 = *v8; + } + v9 = *(_DWORD *)(v6 + 12); + v10 = 8; + v11 = v9 & 0x4A; + if ( v11 != 64 ) + v10 = v11 == 8 ? 16 : 10; + v12 = WORD2(a1) == 0xFFFF; + v13 = v12 & ((_DWORD)a1 != 0); + if ( v13 ) + { + v80 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v80 >= *(_DWORD *)(a1 + 12) ) + { + v110 = v12 & ((_DWORD)a1 != 0); + v81 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v13 = v110; + } + else + { + v81 = *v80; + } + v12 = 0; + if ( v81 == -1 ) + { + LODWORD(a1) = 0; + v12 = v13; + } + } + v14 = a3 == -1; + v15 = v14 & (a2 != 0); + if ( v15 ) + { + v78 = (__int16 *)a2[2]; + if ( (unsigned int)v78 >= a2[3] ) + { + v109 = v15; + v86 = (*(int (**)(void))(*a2 + 36))(); + v15 = v109; + v79 = v86; + } + else + { + v79 = *v78; + } + v14 = 0; + if ( v79 == -1 ) + { + a2 = 0; + v14 = v15; + } + } + if ( v14 == v12 ) + { + v92 = 0; + v16 = 0; + v106 = 1; + v102 = 0; + v18 = *((_BYTE *)v111 + 16); + v108 = 0; +LABEL_40: + if ( v10 == 16 ) + { +LABEL_18: + N = 22; + v95 = 22; + v115[0] = (unsigned int *)&unk_4E93FC; + if ( !v18 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v10; + v95 = v10; + goto LABEL_42; + } + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v83 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v83 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v83; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + v17 = *((_WORD *)v111 + 56); + v18 = *((_BYTE *)v111 + 16); + v92 = v17 == (__int16)v16; + if ( v17 == v16 || *((_WORD *)v111 + 57) == v16 ) + { + if ( (!v18 || *((_WORD *)v111 + 19) != v16) && *((_WORD *)v111 + 18) != v16 ) + { + v19 = *(_DWORD *)(a1 + 8); + if ( v19 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v19 + 2; + WORD2(a1) = -1; + v106 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v106 ) + { + v102 = 0; + v108 = 0; + v18 = *((_BYTE *)v111 + 16); + if ( v10 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v16 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v18 = *((_BYTE *)v111 + 16); + } + } + else + { + v92 = 0; + } + v102 = 0; + v108 = 0; + while ( 1 ) + { + if ( v18 && *((_WORD *)v111 + 19) == v16 || *((_WORD *)v111 + 18) == v16 ) + { +LABEL_78: + v106 = 0; + goto LABEL_40; + } + if ( *((_WORD *)v111 + 60) != v16 ) + break; + v42 = !v108 || v10 == 10; + if ( !v42 ) + goto LABEL_27; + v108 = v11 == 0 || v10 == 8; + if ( !v108 ) + { + ++v102; + v108 = v42; +LABEL_31: + v20 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_73; + } + v20 = (_DWORD *)a1; + v102 = 0; + v10 = 8; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v20[2] = v21 + 2; + WORD2(a1) = -1; +LABEL_33: + v22 = (__int16 *)v20[2]; + if ( (unsigned int)v22 >= v20[3] ) + v23 = (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20); + else + v23 = *v22; + v107 = 0; + if ( v23 == -1 ) + { + LODWORD(a1) = 0; + v107 = 1; + } + goto LABEL_37; + } +LABEL_73: + (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); + v20 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v107 = 1; +LABEL_37: + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v43 = (__int16 *)a2[2]; + if ( (unsigned int)v43 >= a2[3] ) + { + v101 = v25; + v77 = (*(int (**)(void))(*a2 + 36))(); + v25 = v101; + v44 = v77; + } + else + { + v44 = *v43; + } + v24 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + if ( v24 == v107 ) + { + v106 = 1; + v18 = *((_BYTE *)v111 + 16); + goto LABEL_40; + } + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v60 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v60 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v60; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + v18 = *((_BYTE *)v111 + 16); + if ( !v108 ) + goto LABEL_78; + } + if ( !v108 ) + goto LABEL_78; +LABEL_27: + if ( *((_WORD *)v111 + 58) != v16 && *((_WORD *)v111 + 59) != v16 ) + { + v106 = 0; + v108 = 1; + goto LABEL_40; + } + if ( v10 == 16 || v11 == 0 ) + { + v102 = 0; + v10 = 16; + v108 = 0; + goto LABEL_31; + } + v106 = 0; + N = v10; + v95 = v10; + v108 = 1; +LABEL_42: + v115[0] = (unsigned int *)&unk_4E93FC; + if ( v18 ) +LABEL_19: + std::string::reserve(v115, (std::string *)0x20, (unsigned int)v88); +LABEL_43: + n = 0x8000000000000000LL; + if ( !v92 ) + n = 0x7FFFFFFFFFFFFFFFLL; + v99 = v10; + v26 = n / v10; + v104 = *((_BYTE *)v111 + 164); + if ( v104 ) + { + if ( v106 ) + { + v87 = v106; + v103 = 0; + v27 = 0; + v28 = 0; + v106 = 0; + v104 = v87; + goto LABEL_62; + } + v103 = 0; + v27 = 0; + v28 = 0; + S = (wchar_t *)((char *)v111 + 120); + while ( !*((_BYTE *)v111 + 16) || *((_WORD *)v111 + 19) != v16 ) + { + if ( v16 == *((_WORD *)v111 + 18) ) + goto LABEL_96; + v61 = wmemchr(S, v16, N); + if ( !v61 ) + goto LABEL_96; + v62 = (char *)v61 - (char *)S; + v63 = v62 >> 1; + if ( v62 > 30 ) + v63 -= 6; + if ( v26 >= __PAIR64__(v28, v27) ) + { + v64 = v28 * v99 + v27 * HIDWORD(v99); + v65 = ((unsigned int)v99 * (unsigned __int64)(unsigned int)v27) >> 32; + v66 = v99 * v27; + v67 = v64 + v65; + v103 |= n - v63 < __PAIR64__(v67, v66); + v28 = (v63 + __PAIR64__(v67, v66)) >> 32; + v27 = v63 + v66; + ++v102; + goto LABEL_130; + } + v68 = (_DWORD *)a1; + v103 = v104; + v69 = *(_DWORD *)(a1 + 8); + if ( v69 < *(_DWORD *)(a1 + 12) ) + { +LABEL_131: + v68[2] = v69 + 2; + WORD2(a1) = -1; + goto LABEL_132; + } +LABEL_145: + (*(void (__fastcall **)(_DWORD *))(*v68 + 40))(v68); + v68 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v96 = v104; + goto LABEL_136; + } +LABEL_132: + v70 = (__int16 *)v68[2]; + if ( (unsigned int)v70 >= v68[3] ) + v71 = (*(int (__fastcall **)(_DWORD *))(*v68 + 36))(v68); + else + v71 = *v70; + v96 = 0; + if ( v71 == -1 ) + { + LODWORD(a1) = 0; + v96 = v104; + } +LABEL_136: + v72 = a3 == -1; + v73 = v72 & (a2 != 0); + if ( v73 ) + { + v75 = (_WORD *)a2[2]; + v76 = (unsigned int)v75 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v75; + v72 = 0; + if ( v76 == -1 ) + { + a2 = 0; + v72 = v73; + } + } + if ( v96 == v72 ) + goto LABEL_62; + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v74 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v74 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v74; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !v102 ) + { + v104 = 0; + v106 = *((_BYTE *)v111 + 16); + goto LABEL_62; + } + std::string::push_back(v115, (std::string *)(char)v102, v89); + v102 = 0; +LABEL_130: + v68 = (_DWORD *)a1; + v69 = *(_DWORD *)(a1 + 8); + if ( v69 < *(_DWORD *)(a1 + 12) ) + goto LABEL_131; + goto LABEL_145; + } + v103 = 0; + if ( v106 ) + { + v85 = v106; + v27 = 0; + v106 = 0; + v28 = 0; + v104 = v85; + goto LABEL_62; + } + v27 = 0; + v28 = 0; +LABEL_48: + v29 = v16; + if ( v95 > 10 ) + { + if ( (unsigned __int16)(v16 - 48) <= 9u ) + { +LABEL_51: + v30 = v16 - 48; +LABEL_52: + if ( v26 >= __PAIR64__(v28, v27) ) + goto LABEL_87; +LABEL_53: + v31 = (_DWORD *)a1; + v103 = 1; + v32 = *(_DWORD *)(a1 + 8); + if ( v32 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_88; +LABEL_54: + v31[2] = v32 + 2; + WORD2(a1) = -1; +LABEL_55: + v33 = (__int16 *)v31[2]; + if ( (unsigned int)v33 >= v31[3] ) + v34 = (*(int (__fastcall **)(_DWORD *))(*v31 + 36))(v31); + else + v34 = *v33; + v105 = 0; + if ( v34 == -1 ) + { + LODWORD(a1) = 0; + v105 = 1; + } + goto LABEL_59; + } + while ( 1 ) + { + v30 = v29 - 87; + if ( (unsigned __int16)(v16 - 97) <= 5u ) + goto LABEL_52; + if ( (unsigned __int16)(v16 - 65) > 5u ) + goto LABEL_96; + v30 = v29 - 55; + if ( v26 < __PAIR64__(v28, v27) ) + goto LABEL_53; +LABEL_87: + v45 = v28 * v99 + v27 * HIDWORD(v99); + v46 = ((unsigned int)v99 * (unsigned __int64)(unsigned int)v27) >> 32; + v47 = v99 * v27; + v48 = v30; + v49 = v45 + v46; + v103 |= n - v30 < __PAIR64__(v49, v47); + v31 = (_DWORD *)a1; + v28 = (v48 + __PAIR64__(v49, v47)) >> 32; + v27 = v48 + v47; + ++v102; + v32 = *(_DWORD *)(a1 + 8); + if ( v32 < *(_DWORD *)(a1 + 12) ) + goto LABEL_54; +LABEL_88: + (*(void (__fastcall **)(_DWORD *))(*v31 + 40))(v31); + v31 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_55; + v105 = 1; +LABEL_59: + v35 = a3 == -1; + v36 = v35 & (a2 != 0); + if ( v36 ) + { + v58 = (_WORD *)a2[2]; + v59 = (unsigned int)v58 >= a2[3] ? (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2) : *v58; + v35 = 0; + if ( v59 == -1 ) + { + a2 = 0; + v35 = v36; + } + } + if ( v35 == v105 ) + break; + v16 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_48; + v50 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v50 >= *(_DWORD *)(a1 + 12) ? (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1) : *v50; + if ( v16 != 0xFFFF ) + goto LABEL_48; + LODWORD(a1) = 0; + if ( v95 <= 10 ) + goto LABEL_96; + v29 = 0xFFFF; + } + v104 = 1; +LABEL_62: + v37 = v115[0]; + v38 = *(v115[0] - 3); + if ( v38 ) + goto LABEL_97; +LABEL_63: + v39 = (volatile signed __int32 *)(v37 - 3); + if ( v102 || v108 ) + goto LABEL_106; + goto LABEL_65; + } + if ( v16 > 0x2Fu && (unsigned __int16)(v95 + 48) > v16 ) + goto LABEL_51; +LABEL_96: + v37 = v115[0]; + v104 = 0; + v38 = *(v115[0] - 3); + if ( !v38 ) + goto LABEL_63; +LABEL_97: + v97 = (std::string *)(v38 + 1); + if ( v38 + 1 > *(v37 - 2) || (int)*(v37 - 1) > 0 ) + std::string::reserve(v115, v97, v89); + *((_BYTE *)v115[0] + *(v115[0] - 3)) = v102; + v51 = v115[0]; + v52 = v115[0] - 3; + if ( (_UNKNOWN *)v115[0] != &unk_4E93FC ) + { + *(v115[0] - 1) = 0; + *(v51 - 3) = (unsigned int)v97; + *((_BYTE *)v52 + v38 + 13) = 0; + v51 = v115[0]; + v52 = v115[0] - 3; + } + v98 = (std::string *)v51; + v100 = v52; + v53 = std::__verify_grouping(*((char **)v111 + 2), *((_DWORD *)v111 + 3), (const char **)v115); + v39 = (volatile signed __int32 *)v100; + if ( !v53 ) + *a5 = 4; + if ( !v102 && !v108 && !*((_DWORD *)v98 - 3) ) + goto LABEL_65; +LABEL_106: + if ( v106 ) + { +LABEL_65: + v40 = a6; + *a6 = 0; + v40[1] = 0; + *a5 = 4; + goto LABEL_66; + } + if ( v103 ) + { + v54 = 0; + v55 = 0x80000000; + if ( !v92 ) + { + v54 = -1; + v55 = 0x7FFFFFFF; + } + v56 = a6; + *a6 = v54; + v57 = a5; + v56[1] = v55; + *v57 = 4; + } + else + { + if ( v92 ) + { + v27 = -v27; + v28 = (unsigned __int64)-__SPAIR64__(v28, v27) >> 32; + } + v82 = a6; + *a6 = v27; + v82[1] = v28; + } +LABEL_66: + if ( v104 ) + *a5 |= 2u; + result = a1; + if ( v39 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v113 = a1; + std::string::_Rep::_M_dispose(v39, (int)&v114); + return v113; + } + return result; +} +// 4716A7: variable 'v88' is possibly undefined +// 471717: variable 'v90' is possibly undefined +// 47121E: variable 'v89' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (004718D0) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_int( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + int v6; // edi + int v7; // esi + int v8; // ebx + int v9; // eax + int v10; // edi + int v11; // eax + char v12; // dl + char v13; // si + char v14; // al + char v15; // si + wchar_t v16; // si + __int16 v17; // ax + char v18; // cl + unsigned int v19; // eax + _DWORD *v20; // ecx + unsigned int v21; // eax + __int16 *v22; // eax + __int16 v23; // ax + char v24; // al + char v25; // dl + unsigned __int64 v26; // kr00_8 + int v27; // ecx + int v28; // ecx + _DWORD *v29; // ecx + unsigned int v30; // eax + __int16 *v31; // eax + __int16 v32; // ax + char v33; // di + char v34; // dl + char v35; // si + unsigned int *v36; // ecx + int v37; // esi + volatile signed __int32 *v38; // ecx + _DWORD *v39; // eax + __int64 result; // rax + bool v41; // al + __int16 *v42; // eax + __int16 v43; // cx + int v44; // edi + int v45; // esi + _WORD *v46; // eax + unsigned int *v47; // edx + unsigned int *v48; // ecx + char v49; // al + _WORD *v50; // eax + __int16 v51; // ax + _WORD *v52; // eax + wchar_t *v53; // eax + int v54; // eax + int v55; // ecx + _DWORD *v56; // ecx + unsigned int v57; // eax + __int16 *v58; // eax + __int16 v59; // ax + char v60; // di + char v61; // al + char v62; // si + _WORD *v63; // eax + _WORD *v64; // eax + __int16 v65; // dx + __int16 v66; // ax + __int16 *v67; // eax + __int16 v68; // cx + _WORD *v69; // eax + __int16 v70; // ax + _DWORD *v71; // eax + _WORD *v72; // eax + wchar_t v73; // ax + std::locale::_Impl *v74; // eax + std::locale::_Impl *v75; // ebx + char v76; // al + __int16 v77; // ax + void (__cdecl *v78)(void *); // [esp+4h] [ebp-74h] + unsigned int v79; // [esp+4h] [ebp-74h] + unsigned int v80; // [esp+8h] [ebp-70h] + bool v81; // [esp+1Fh] [ebp-59h] + size_t N; // [esp+20h] [ebp-58h] + int S; // [esp+24h] [ebp-54h] + wchar_t *Sa; // [esp+24h] [ebp-54h] + unsigned int *v85; // [esp+28h] [ebp-50h] + int v86; // [esp+30h] [ebp-48h] + __int64 v87; // [esp+30h] [ebp-48h] + unsigned int *v88; // [esp+30h] [ebp-48h] + char v89; // [esp+38h] [ebp-40h] + char v90; // [esp+3Ah] [ebp-3Eh] + _BYTE v91[5]; // [esp+3Bh] [ebp-3Dh] + char v92; // [esp+3Bh] [ebp-3Dh] + char v93; // [esp+40h] [ebp-38h] + unsigned __int64 v94; // [esp+40h] [ebp-38h] + char v95; // [esp+40h] [ebp-38h] + int *v96; // [esp+48h] [ebp-30h] + bool v97; // [esp+48h] [ebp-30h] + __int64 v98; // [esp+48h] [ebp-30h] + char v99; // [esp+5Bh] [ebp-1Dh] BYREF + unsigned int *v100[7]; // [esp+5Ch] [ebp-1Ch] BYREF + + v6 = a4; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + v96 = (int *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * v7); + if ( !v8 ) + { + v74 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v78); + *((_DWORD *)v74 + 1) = 0; + v75 = v74; + *(_DWORD *)v74 = &off_4F65B0; + *((_DWORD *)v74 + 2) = 0; + *((_DWORD *)v74 + 3) = 0; + *((_BYTE *)v74 + 16) = 0; + *((_DWORD *)v74 + 5) = 0; + *((_DWORD *)v74 + 6) = 0; + *((_DWORD *)v74 + 7) = 0; + *((_DWORD *)v74 + 8) = 0; + *((_DWORD *)v74 + 9) = 0; + *((_BYTE *)v74 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v74, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v75, (const std::locale::facet *)v7, v80); + v8 = *v96; + } + v9 = *(_DWORD *)(v6 + 12); + v10 = 8; + v11 = v9 & 0x4A; + v86 = v11; + if ( v11 != 64 ) + v10 = v11 == 8 ? 16 : 10; + v12 = WORD2(a1) == 0xFFFF; + v13 = v12 & ((_DWORD)a1 != 0); + if ( v13 ) + { + v69 = *(_WORD **)(a1 + 8); + v70 = (unsigned int)v69 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v69; + v12 = 0; + if ( v70 == -1 ) + { + LODWORD(a1) = 0; + v12 = v13; + } + } + v14 = a3 == -1; + v15 = v14 & (a2 != 0); + if ( v15 ) + { + v67 = (__int16 *)a2[2]; + if ( (unsigned int)v67 >= a2[3] ) + { + v95 = v12; + v77 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v12 = v95; + v68 = v77; + } + else + { + v68 = *v67; + } + v14 = 0; + if ( v68 == -1 ) + { + a2 = 0; + v14 = v15; + } + } + if ( v12 == v14 ) + { + v81 = 0; + v18 = *(_BYTE *)(v8 + 16); + v16 = 0; + v91[0] = 1; + *(_DWORD *)&v91[1] = 0; + v97 = 0; +LABEL_40: + if ( v10 == 16 ) + { +LABEL_18: + N = 22; + S = 22; + v100[0] = (unsigned int *)&unk_4E93FC; + if ( !v18 ) + goto LABEL_43; + goto LABEL_19; + } +LABEL_41: + N = v10; + S = v10; + goto LABEL_42; + } + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v72 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v72; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + v17 = *(_WORD *)(v8 + 112); + v18 = *(_BYTE *)(v8 + 16); + v81 = v17 == (__int16)v16; + if ( v17 == v16 || *(_WORD *)(v8 + 114) == v16 ) + { + if ( (!v18 || *(_WORD *)(v8 + 38) != v16) && *(_WORD *)(v8 + 36) != v16 ) + { + v19 = *(_DWORD *)(a1 + 8); + if ( v19 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v19 + 2; + WORD2(a1) = -1; + v91[0] = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( v91[0] ) + { + *(_DWORD *)&v91[1] = 0; + v18 = *(_BYTE *)(v8 + 16); + v97 = 0; + if ( v10 == 16 ) + goto LABEL_18; + goto LABEL_41; + } + v73 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v18 = *(_BYTE *)(v8 + 16); + v16 = v73; + } + } + else + { + v81 = 0; + } + *(_DWORD *)&v91[1] = 0; + v97 = 0; + while ( 1 ) + { + if ( v18 && *(_WORD *)(v8 + 38) == v16 || *(_WORD *)(v8 + 36) == v16 ) + { +LABEL_76: + v91[0] = 0; + goto LABEL_40; + } + if ( *(_WORD *)(v8 + 120) != v16 ) + break; + v41 = !v97 || v10 == 10; + if ( !v41 ) + goto LABEL_27; + v97 = v86 == 0 || v10 == 8; + if ( !v97 ) + { + ++*(_DWORD *)&v91[1]; + v97 = v41; +LABEL_31: + v20 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 < *(_DWORD *)(a1 + 12) ) + goto LABEL_32; + goto LABEL_71; + } + v20 = (_DWORD *)a1; + *(_DWORD *)&v91[1] = 0; + v10 = 8; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 < *(_DWORD *)(a1 + 12) ) + { +LABEL_32: + v20[2] = v21 + 2; + WORD2(a1) = -1; +LABEL_33: + v22 = (__int16 *)v20[2]; + if ( (unsigned int)v22 >= v20[3] ) + v23 = (*(int (__fastcall **)(_DWORD *))(*v20 + 36))(v20); + else + v23 = *v22; + v93 = 0; + if ( v23 == -1 ) + { + LODWORD(a1) = 0; + v93 = 1; + } + goto LABEL_37; + } +LABEL_71: + (*(void (__fastcall **)(_DWORD *))(*v20 + 40))(v20); + v20 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_33; + v93 = 1; +LABEL_37: + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v42 = (__int16 *)a2[2]; + if ( (unsigned int)v42 >= a2[3] ) + { + v92 = v25; + v66 = (*(int (**)(void))(*a2 + 36))(); + v25 = v92; + v43 = v66; + } + else + { + v43 = *v42; + } + v24 = 0; + if ( v43 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + if ( v24 == v93 ) + { + v91[0] = 1; + v18 = *(_BYTE *)(v8 + 16); + goto LABEL_40; + } + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v52 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v52 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v52; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + v18 = *(_BYTE *)(v8 + 16); + if ( !v97 ) + goto LABEL_76; + } + if ( !v97 ) + goto LABEL_76; +LABEL_27: + if ( *(_WORD *)(v8 + 116) != v16 && *(_WORD *)(v8 + 118) != v16 ) + { + v91[0] = 0; + v97 = 1; + goto LABEL_40; + } + if ( v10 == 16 || v86 == 0 ) + { + *(_DWORD *)&v91[1] = 0; + v10 = 16; + v97 = 0; + goto LABEL_31; + } + v91[0] = 0; + N = v10; + S = v10; + v97 = 1; +LABEL_42: + v100[0] = (unsigned int *)&unk_4E93FC; + if ( v18 ) +LABEL_19: + std::string::reserve(v100, (std::string *)0x20, (unsigned int)v78); +LABEL_43: + v87 = v10; + v26 = 0xFFFFFFFFFFFFFFFFLL / v10; + v89 = *(_BYTE *)(v8 + 164); + if ( v89 ) + { + if ( v91[0] ) + { + v94 = 0LL; + v89 = v91[0]; + v90 = 0; + v91[0] = 0; +LABEL_60: + v36 = v100[0]; + v37 = *(v100[0] - 3); + if ( v37 ) + goto LABEL_94; +LABEL_61: + v38 = (volatile signed __int32 *)(v36 - 3); + if ( *(_DWORD *)&v91[1] || v97 ) + goto LABEL_103; + goto LABEL_63; + } + v90 = 0; + Sa = (wchar_t *)(v8 + 120); + v94 = 0LL; + while ( !*(_BYTE *)(v8 + 16) || *(_WORD *)(v8 + 38) != v16 ) + { + if ( v16 == *(_WORD *)(v8 + 36) ) + goto LABEL_93; + v53 = wmemchr(Sa, v16, N); + if ( !v53 ) + goto LABEL_93; + v54 = (char *)v53 - (char *)Sa; + v55 = v54 >> 1; + if ( v54 > 30 ) + v55 -= 6; + if ( v26 >= v94 ) + { + v90 |= __PAIR64__(~(v55 >> 31), ~v55) < v87 * v94; + ++*(_DWORD *)&v91[1]; + v94 = v87 * v94 + v55; + goto LABEL_129; + } + v56 = (_DWORD *)a1; + v90 = v89; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 < *(_DWORD *)(a1 + 12) ) + { +LABEL_130: + v56[2] = v57 + 2; + WORD2(a1) = -1; + goto LABEL_131; + } +LABEL_144: + (*(void (__fastcall **)(_DWORD *))(*v56 + 40))(v56); + v56 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v60 = v89; + goto LABEL_135; + } +LABEL_131: + v58 = (__int16 *)v56[2]; + if ( (unsigned int)v58 >= v56[3] ) + v59 = (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56); + else + v59 = *v58; + v60 = 0; + if ( v59 == -1 ) + { + LODWORD(a1) = 0; + v60 = v89; + } +LABEL_135: + v61 = a3 == -1; + v62 = v61 & (a2 != 0); + if ( v62 ) + { + v64 = (_WORD *)a2[2]; + v65 = (unsigned int)v64 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v64; + v61 = 0; + if ( v65 == -1 ) + { + a2 = 0; + v61 = v62; + } + } + if ( v61 == v60 ) + goto LABEL_60; + v16 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v63 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v63 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v63; + if ( v16 == 0xFFFF ) + LODWORD(a1) = 0; + } + } + if ( !*(_DWORD *)&v91[1] ) + { + v89 = 0; + *(_DWORD *)v91 = *(unsigned __int8 *)(v8 + 16); + goto LABEL_60; + } + std::string::push_back(v100, (std::string *)v91[1], v79); + *(_DWORD *)&v91[1] = 0; +LABEL_129: + v56 = (_DWORD *)a1; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 < *(_DWORD *)(a1 + 12) ) + goto LABEL_130; + goto LABEL_144; + } + v90 = 0; + if ( v91[0] ) + { + v76 = v91[0]; + v94 = 0LL; + v91[0] = 0; + v89 = v76; + goto LABEL_60; + } + v94 = 0LL; +LABEL_46: + v27 = v16; + if ( S > 10 ) + { + if ( (unsigned __int16)(v16 - 48) <= 9u ) + goto LABEL_49; + while ( (unsigned __int16)(v16 - 97) <= 5u ) + { + v28 = v27 - 87; + if ( v26 < v94 ) + goto LABEL_51; +LABEL_84: + v44 = v28 >> 31; + v45 = v28; + v90 |= __PAIR64__(~(v28 >> 31), ~v28) < v87 * v94; + v29 = (_DWORD *)a1; + v94 = v87 * v94 + __PAIR64__(v44, v45); + ++*(_DWORD *)&v91[1]; + v30 = *(_DWORD *)(a1 + 8); + if ( v30 < *(_DWORD *)(a1 + 12) ) + goto LABEL_52; +LABEL_85: + (*(void (__fastcall **)(_DWORD *))(*v29 + 40))(v29); + v29 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_53; + v33 = 1; +LABEL_57: + v34 = a3 == -1; + v35 = v34 & (a2 != 0); + if ( v35 ) + { + v50 = (_WORD *)a2[2]; + v51 = (unsigned int)v50 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v50; + v34 = 0; + if ( v51 == -1 ) + { + a2 = 0; + v34 = v35; + } + } + if ( v34 == v33 ) + { + v89 = 1; + goto LABEL_60; + } + v16 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_46; + v46 = *(_WORD **)(a1 + 8); + v16 = (unsigned int)v46 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v46; + if ( v16 != 0xFFFF ) + goto LABEL_46; + LODWORD(a1) = 0; + if ( S <= 10 ) + goto LABEL_93; + v27 = 0xFFFF; + } + if ( (unsigned __int16)(v16 - 65) <= 5u ) + { + v28 = v27 - 55; + goto LABEL_50; + } + } + else if ( v16 > 0x2Fu && (unsigned __int16)(S + 48) > v16 ) + { +LABEL_49: + v28 = v16 - 48; +LABEL_50: + if ( v26 >= v94 ) + goto LABEL_84; +LABEL_51: + v29 = (_DWORD *)a1; + v90 = 1; + v30 = *(_DWORD *)(a1 + 8); + if ( v30 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_85; +LABEL_52: + v29[2] = v30 + 2; + WORD2(a1) = -1; +LABEL_53: + v31 = (__int16 *)v29[2]; + if ( (unsigned int)v31 >= v29[3] ) + v32 = (*(int (__fastcall **)(_DWORD *))(*v29 + 36))(v29); + else + v32 = *v31; + v33 = 0; + if ( v32 == -1 ) + { + LODWORD(a1) = 0; + v33 = 1; + } + goto LABEL_57; + } +LABEL_93: + v36 = v100[0]; + v89 = 0; + v37 = *(v100[0] - 3); + if ( !v37 ) + goto LABEL_61; +LABEL_94: + if ( v37 + 1 > *(v36 - 2) || (int)*(v36 - 1) > 0 ) + std::string::reserve(v100, (std::string *)(v37 + 1), v79); + *((_BYTE *)v100[0] + *(v100[0] - 3)) = v91[1]; + v47 = v100[0]; + v48 = v100[0] - 3; + if ( (_UNKNOWN *)v100[0] != &unk_4E93FC ) + { + *(v100[0] - 1) = 0; + *(v47 - 3) = v37 + 1; + *((_BYTE *)v48 + v37 + 13) = 0; + v47 = v100[0]; + v48 = v100[0] - 3; + } + v85 = v48; + v88 = v47; + v49 = std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)v100); + v38 = (volatile signed __int32 *)v85; + if ( !v49 ) + *a5 = 4; + if ( !*(_DWORD *)&v91[1] && !v97 && !*(v88 - 3) ) + goto LABEL_63; +LABEL_103: + if ( v91[0] ) + { +LABEL_63: + v39 = a6; + *a6 = 0; + v39[1] = 0; + *a5 = 4; + goto LABEL_64; + } + if ( v90 ) + { + v71 = a6; + *a6 = -1; + v71[1] = -1; + *a5 = 4; + } + else + { + if ( v81 ) + v94 = -(__int64)v94; + *(_QWORD *)a6 = v94; + } +LABEL_64: + if ( v89 ) + *a5 |= 2u; + result = a1; + if ( v38 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + v98 = a1; + std::string::_Rep::_M_dispose(v38, (int)&v99); + return v98; + } + return result; +} +// 472347: variable 'v78' is possibly undefined +// 4723B1: variable 'v80' is possibly undefined +// 471EA8: variable 'v79' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (00472570) -------------------------------------------------------- +__int64 __stdcall std::num_get>::_M_extract_float( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + unsigned int **a6) +{ + unsigned int **v6; // ebx + unsigned __int8 v7; // dl + char v8; // al + char v9; // si + wchar_t v10; // si + char v11; // al + int v12; // esi + char v13; // cl + unsigned int *v14; // eax + _DWORD *v15; // ecx + unsigned int v16; // eax + __int16 *v17; // eax + __int16 v18; // ax + char v19; // di + char v20; // dl + char v21; // si + _WORD *v22; // eax + int v23; // edi + unsigned int *v24; // eax + unsigned int v25; // eax + int v26; // eax + char v27; // al + bool v28; // zf + unsigned int *v29; // edx + int v30; // esi + unsigned int *v31; // eax + unsigned int *v32; // edx + int v33; // edi + unsigned int *v34; // edx + unsigned int *v35; // eax + _DWORD *v36; // ecx + unsigned int v37; // eax + __int16 *v38; // eax + __int16 v39; // ax + char v40; // di + char v41; // dl + char v42; // si + int v43; // esi + char v44; // al + __int64 v45; // kr00_8 + wchar_t *v47; // eax + int v48; // esi + unsigned int *v49; // eax + _WORD *v50; // eax + __int16 v51; // ax + _WORD *v52; // eax + __int16 v53; // ax + int v54; // edi + unsigned int *v55; // eax + _DWORD *v56; // ecx + unsigned int v57; // eax + __int16 *v58; // eax + __int16 v59; // ax + char v60; // si + char v61; // al + char v62; // di + __int16 v63; // dx + int v64; // edi + char v65; // cl + unsigned int *v66; // eax + char v67; // si + unsigned int *v68; // eax + wchar_t *v69; // eax + _WORD *v70; // eax + __int16 v71; // dx + _WORD *v72; // eax + unsigned int *v73; // eax + unsigned int *v74; // edx + __int16 v75; // dx + char v76; // dl + unsigned int **v77; // edi + _DWORD *v78; // ecx + unsigned int v79; // eax + __int16 *v80; // eax + __int16 v81; // ax + char v82; // bl + char v83; // al + char v84; // dl + int v85; // edx + unsigned int v86; // ebx + unsigned int *v87; // eax + __int16 *v88; // eax + __int16 v89; // cx + _WORD *v90; // eax + __int16 *v91; // eax + __int16 v92; // cx + unsigned __int8 v93; // si + _WORD *v94; // eax + __int16 v95; // ax + __int16 v96; // ax + _WORD *v97; // eax + unsigned int v98; // eax + unsigned int *v99; // eax + wchar_t *v100; // eax + __int16 v101; // ax + unsigned int v102; // [esp+4h] [ebp-54h] + std::string *v103; // [esp+18h] [ebp-40h] + std::string *v104; // [esp+18h] [ebp-40h] + std::string *v105; // [esp+18h] [ebp-40h] + wchar_t *S; // [esp+1Ch] [ebp-3Ch] + char v107; // [esp+21h] [ebp-37h] + __int16 v108; // [esp+22h] [ebp-36h] + bool v109; // [esp+23h] [ebp-35h] + int v110; // [esp+24h] [ebp-34h] + char v111; // [esp+28h] [ebp-30h] + char v112; // [esp+28h] [ebp-30h] + unsigned int *v113; // [esp+28h] [ebp-30h] + char v114; // [esp+28h] [ebp-30h] + int v115; // [esp+28h] [ebp-30h] + char v116; // [esp+28h] [ebp-30h] + unsigned __int8 v117; // [esp+28h] [ebp-30h] + int v118; // [esp+2Ch] [ebp-2Ch] + char v119; // [esp+3Bh] [ebp-1Dh] BYREF + unsigned int *v120[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v6 = a6; + v118 = std::__use_cache>::operator()((int *)(a4 + 108)); + v7 = WORD2(a1) == 0xFFFF; + if ( (v7 & ((_DWORD)a1 != 0)) != 0 ) + { + v93 = v7 & ((_DWORD)a1 != 0); + v94 = *(_WORD **)(a1 + 8); + v95 = (unsigned int)v94 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v94; + v7 = 0; + if ( v95 == -1 ) + { + LODWORD(a1) = 0; + v7 = v93; + } + } + v8 = a3 == -1; + v9 = v8 & (a2 != 0); + if ( v9 ) + { + v91 = (__int16 *)a2[2]; + if ( (unsigned int)v91 >= a2[3] ) + { + v117 = v7; + v101 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v7 = v117; + v92 = v101; + } + else + { + v92 = *v91; + } + v8 = 0; + if ( v92 == -1 ) + { + a2 = 0; + v8 = v9; + } + } + if ( v8 == v7 ) + { + v110 = 0; + v10 = 0; + v111 = 0; + v109 = 1; + v11 = *(_BYTE *)(v118 + 16); + goto LABEL_5; + } + v10 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v97 = *(_WORD **)(a1 + 8); + v10 = (unsigned int)v97 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v97; + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + v75 = *(_WORD *)(v118 + 114); + v11 = *(_BYTE *)(v118 + 16); + if ( v75 != v10 && *(_WORD *)(v118 + 112) != v10 + || v11 && *(_WORD *)(v118 + 38) == v10 + || *(_WORD *)(v118 + 36) == v10 ) + { + goto LABEL_167; + } + std::string::push_back(v6, (std::string *)(2 * (v75 != (__int16)v10) + 43), v102); + v98 = *(_DWORD *)(a1 + 8); + if ( v98 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v98 + 2; + WORD2(a1) = -1; + v109 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v109 ) + { + v10 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + v11 = *(_BYTE *)(v118 + 16); +LABEL_167: + v110 = 0; + v76 = 0; + v77 = v6; + while ( 1 ) + { + if ( v11 && *(_WORD *)(v118 + 38) == v10 ) + { + v111 = v76; + v6 = v77; + v120[0] = (unsigned int *)&unk_4E93FC; + v109 = 0; + goto LABEL_162; + } + if ( *(_WORD *)(v118 + 36) == v10 || *(_WORD *)(v118 + 120) != v10 ) + { + v111 = v76; + v6 = v77; + v109 = 0; + goto LABEL_5; + } + if ( v76 ) + goto LABEL_173; + v85 = *(*v77 - 3); + v86 = v85 + 1; + if ( v85 + 1 > *(*v77 - 2) || (int)*(*v77 - 1) > 0 ) + { + v115 = *(*v77 - 3); + std::string::reserve(v77, (std::string *)(v85 + 1), v102); + v85 = v115; + } + *((_BYTE *)*v77 + *(*v77 - 3)) = 48; + v87 = *v77; + if ( *v77 == (unsigned int *)&unk_4E93FC ) + { +LABEL_173: + v78 = (_DWORD *)a1; + ++v110; + v79 = *(_DWORD *)(a1 + 8); + if ( v79 < *(_DWORD *)(a1 + 12) ) + goto LABEL_174; + } + else + { + *(v87 - 1) = 0; + *(v87 - 3) = v86; + *((_BYTE *)v87 + v85 + 1) = 0; + v78 = (_DWORD *)a1; + ++v110; + v79 = *(_DWORD *)(a1 + 8); + if ( v79 < *(_DWORD *)(a1 + 12) ) + { +LABEL_174: + v78[2] = v79 + 2; + WORD2(a1) = -1; + goto LABEL_175; + } + } + (*(void (__fastcall **)(_DWORD *))(*v78 + 40))(v78); + v78 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v82 = 1; + goto LABEL_179; + } +LABEL_175: + v80 = (__int16 *)v78[2]; + if ( (unsigned int)v80 >= v78[3] ) + v81 = (*(int (__fastcall **)(_DWORD *))(*v78 + 36))(v78); + else + v81 = *v80; + v82 = 0; + if ( v81 == -1 ) + { + LODWORD(a1) = 0; + v82 = 1; + } +LABEL_179: + v83 = a3 == -1; + v84 = v83 & (a2 != 0); + if ( v84 ) + { + v88 = (__int16 *)a2[2]; + if ( (unsigned int)v88 >= a2[3] ) + { + v116 = v84; + v96 = (*(int (**)(void))(*a2 + 36))(); + v84 = v116; + v89 = v96; + } + else + { + v89 = *v88; + } + v83 = 0; + if ( v89 == -1 ) + { + a2 = 0; + v83 = v84; + } + } + if ( v83 == v82 ) + { + v111 = 1; + v6 = v77; + v109 = 1; + v11 = *(_BYTE *)(v118 + 16); + goto LABEL_5; + } + v10 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v90 = *(_WORD **)(a1 + 8); + v10 = (unsigned int)v90 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v90; + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + v76 = 1; + v11 = *(_BYTE *)(v118 + 16); + } + } + v110 = 0; + v111 = 0; + v11 = *(_BYTE *)(v118 + 16); +LABEL_5: + v120[0] = (unsigned int *)&unk_4E93FC; + if ( v11 ) +LABEL_162: + std::string::reserve(v120, (std::string *)0x20, v102); + v107 = *(_BYTE *)(v118 + 164); + if ( !v107 ) + { + if ( !v109 ) + { + v108 = 0; +LABEL_9: + if ( (unsigned __int16)(v10 - 48) <= 9u ) + { + v112 = v10; + v12 = *(*v6 - 3); + if ( v12 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v12 + 1), v102); + v13 = v112; + v111 = 1; + *((_BYTE *)*v6 + *(*v6 - 3)) = v13; + v14 = *v6; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v14 - 1) = 0; + *(v14 - 3) = v12 + 1; + *((_BYTE *)v14 + v12 + 1) = 0; + } + goto LABEL_15; + } + while ( 1 ) + { + if ( *(_WORD *)(v118 + 36) == v10 && !v108 ) + { + v108 = 1; + std::string::push_back(v6, (std::string *)0x2E, v102); +LABEL_15: + v15 = (_DWORD *)a1; + v16 = *(_DWORD *)(a1 + 8); + if ( v16 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_47; +LABEL_16: + v15[2] = v16 + 2; + WORD2(a1) = -1; +LABEL_17: + v17 = (__int16 *)v15[2]; + if ( (unsigned int)v17 >= v15[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*v15 + 36))(v15); + else + v18 = *v17; + v19 = 0; + if ( v18 == -1 ) + { + LODWORD(a1) = 0; + v19 = 1; + } + goto LABEL_21; + } + if ( *(_WORD *)(v118 + 148) != v10 && *(_WORD *)(v118 + 160) != v10 ) + goto LABEL_74; + v111 &= HIBYTE(v108) ^ 1; + if ( !v111 ) + goto LABEL_74; + v23 = *(*v6 - 3); + if ( v23 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v23 + 1), v102); + *((_BYTE *)*v6 + *(*v6 - 3)) = 101; + v24 = *v6; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v24 - 1) = 0; + *(v24 - 3) = v23 + 1; + *((_BYTE *)v24 + v23 + 1) = 0; + } + v25 = *(_DWORD *)(a1 + 8); + if ( v25 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v25 + 2; + WORD2(a1) = -1; + if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) + goto LABEL_245; + v10 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v100 = *(wchar_t **)(a1 + 8); + if ( (unsigned int)v100 >= *(_DWORD *)(a1 + 12) ) + v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + else + v10 = *v100; + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + if ( *(_WORD *)(v118 + 114) == v10 ) + { + v26 = 43; + } + else + { + if ( *(_WORD *)(v118 + 112) != v10 ) + { + HIBYTE(v108) = v111; + goto LABEL_9; + } + v26 = 45; + } + std::string::push_back(v6, (std::string *)v26, v102); + v15 = (_DWORD *)a1; + HIBYTE(v108) = v111; + v16 = *(_DWORD *)(a1 + 8); + if ( v16 < *(_DWORD *)(a1 + 12) ) + goto LABEL_16; +LABEL_47: + (*(void (__fastcall **)(_DWORD *))(*v15 + 40))(v15); + v15 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( (_DWORD)a1 ) + goto LABEL_17; + v19 = 1; +LABEL_21: + v20 = a3 == -1; + v21 = v20 & (a2 != 0); + if ( v21 ) + { + v50 = (_WORD *)a2[2]; + v51 = (unsigned int)v50 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v50; + v20 = 0; + if ( v51 == -1 ) + { + a2 = 0; + v20 = v21; + } + } + if ( v20 == v19 ) + goto LABEL_74; + v10 = WORD2(a1); + if ( !(_DWORD)a1 || WORD2(a1) != 0xFFFF ) + goto LABEL_9; + v22 = *(_WORD **)(a1 + 8); + v10 = (unsigned int)v22 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v22; + if ( v10 != 0xFFFF ) + goto LABEL_9; + LODWORD(a1) = 0; + } + } +LABEL_233: + v29 = v120[0]; + if ( *(v120[0] - 3) ) + goto LABEL_77; + goto LABEL_82; + } + if ( v109 ) + goto LABEL_233; + v108 = 0; + v27 = *(_BYTE *)(v118 + 16); + S = (wchar_t *)(v118 + 120); + while ( 1 ) + { + while ( 1 ) + { + if ( v27 && *(_WORD *)(v118 + 38) == v10 ) + { + LOBYTE(v108) = HIBYTE(v108) | v108; + if ( (_BYTE)v108 ) + { + v29 = v120[0]; + v30 = *(v120[0] - 3); +LABEL_79: + if ( !v30 ) + goto LABEL_82; + goto LABEL_80; + } + if ( !v110 ) + { + v99 = *v6; + if ( (int)*(*v6 - 1) <= 0 ) + { + if ( v99 != (unsigned int *)&unk_4E93FC ) + { + *(v99 - 1) = 0; + *(v99 - 3) = 0; + *(_BYTE *)v99 = 0; + } + } + else + { + if ( v99 != (unsigned int *)&unk_4E93FC ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v99 - 3, (int)&v119); + *v6 = (unsigned int *)&unk_4E93FC; + } + goto LABEL_233; + } + v64 = *(v120[0] - 3); + if ( v64 + 1 > *(v120[0] - 2) || *((int *)v120[0] - 1) > 0 ) + std::string::reserve(v120, (std::string *)(v64 + 1), v102); + v65 = v110; + HIBYTE(v108) = 0; + v110 = 0; + *((_BYTE *)v120[0] + *(v120[0] - 3)) = v65; + v66 = v120[0]; + v34 = v120[0] - 3; + if ( (_UNKNOWN *)v120[0] != &unk_4E93FC ) + { + *(v120[0] - 1) = 0; + *(v66 - 3) = v64 + 1; + *((_BYTE *)v34 + v64 + 13) = 0; + } +LABEL_66: + v36 = (_DWORD *)a1; + v37 = *(_DWORD *)(a1 + 8); + if ( v37 < *(_DWORD *)(a1 + 12) ) + goto LABEL_67; + goto LABEL_91; + } + if ( *(_WORD *)(v118 + 36) == v10 ) + { + v28 = v108 == 0; + HIBYTE(v108) |= v108; + v29 = v120[0]; + v30 = *(v120[0] - 3); + if ( !v28 ) + goto LABEL_79; + if ( v30 ) + { + v103 = (std::string *)(v30 + 1); + if ( v30 + 1 > *(v120[0] - 2) || *((int *)v120[0] - 1) > 0 ) + std::string::reserve(v120, v103, v102); + *((_BYTE *)v120[0] + *(v120[0] - 3)) = v110; + v31 = v120[0]; + v32 = v120[0] - 3; + if ( (_UNKNOWN *)v120[0] != &unk_4E93FC ) + { + *(v120[0] - 1) = 0; + *(v31 - 3) = (unsigned int)v103; + *((_BYTE *)v32 + v30 + 13) = 0; + } + } + v33 = *(*v6 - 3); + if ( v33 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v33 + 1), v102); + v34 = (unsigned int *)*(*v6 - 3); + LOBYTE(v108) = v107; + *((_BYTE *)v34 + (_DWORD)*v6) = 46; + v35 = *v6; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v35 - 1) = 0; + *(v35 - 3) = v33 + 1; + *((_BYTE *)v35 + v33 + 1) = 0; + } + goto LABEL_66; + } + v47 = wmemchr(S, v10, 0xAu); + if ( v47 ) + break; + if ( *(_WORD *)(v118 + 148) != v10 && *(_WORD *)(v118 + 160) != v10 ) + goto LABEL_74; + v29 = v120[0]; + v28 = ((HIBYTE(v108) ^ 1) & (unsigned __int8)v111) == 0; + v111 &= HIBYTE(v108) ^ 1; + v43 = *(v120[0] - 3); + if ( v28 ) + goto LABEL_75; + if ( v43 && !(_BYTE)v108 ) + { + v105 = (std::string *)(v43 + 1); + if ( v43 + 1 > *(v120[0] - 2) || *((int *)v120[0] - 1) > 0 ) + std::string::reserve(v120, v105, v102); + *((_BYTE *)v120[0] + *(v120[0] - 3)) = v110; + v73 = v120[0]; + v74 = v120[0] - 3; + if ( (_UNKNOWN *)v120[0] != &unk_4E93FC ) + { + *(v120[0] - 1) = 0; + *(v73 - 3) = (unsigned int)v105; + *((_BYTE *)v74 + v43 + 13) = 0; + } + } + v54 = *(*v6 - 3); + if ( v54 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v54 + 1), v102); + *((_BYTE *)*v6 + *(*v6 - 3)) = 101; + v55 = *v6; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v55 - 1) = 0; + *(v55 - 3) = v54 + 1; + *((_BYTE *)v55 + v54 + 1) = 0; + } + v56 = (_DWORD *)a1; + v57 = *(_DWORD *)(a1 + 8); + if ( v57 >= *(_DWORD *)(a1 + 12) ) + { + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v56 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v60 = v111; + goto LABEL_120; + } + } + else + { + *(_DWORD *)(a1 + 8) = v57 + 2; + WORD2(a1) = -1; + } + v58 = (__int16 *)v56[2]; + if ( (unsigned int)v58 >= v56[3] ) + v59 = (*(int (__fastcall **)(_DWORD *))(*v56 + 36))(v56); + else + v59 = *v58; + v60 = 0; + if ( v59 == -1 ) + { + LODWORD(a1) = 0; + v60 = v111; + } +LABEL_120: + v61 = a3 == -1; + v62 = v61 & (a2 != 0); + if ( v62 ) + { + v70 = (_WORD *)a2[2]; + v71 = (unsigned int)v70 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v70; + v61 = 0; + if ( v71 == -1 ) + { + a2 = 0; + v61 = v62; + } + } + if ( v61 == v60 ) + { +LABEL_245: + v29 = v120[0]; + if ( !*(v120[0] - 3) ) + goto LABEL_82; + goto LABEL_80; + } + v10 = WORD2(a1); + if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) + { + v72 = *(_WORD **)(a1 + 8); + v10 = (unsigned int)v72 >= *(_DWORD *)(a1 + 12) ? (*(int (**)(void))(*(_DWORD *)a1 + 36))() : *v72; + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + v63 = *(_WORD *)(v118 + 114); + v27 = *(_BYTE *)(v118 + 16); + if ( v63 != v10 && *(_WORD *)(v118 + 112) != v10 ) + goto LABEL_126; + if ( v27 && *(_WORD *)(v118 + 38) == v10 ) + { + HIBYTE(v108) = *(_BYTE *)(v118 + 16); + v111 = HIBYTE(v108); + } + else + { + if ( *(_WORD *)(v118 + 36) != v10 ) + { + v67 = 2 * (v63 != (__int16)v10) + 43; + v104 = (std::string *)*(*v6 - 3); + if ( (unsigned int)v104 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)((char *)v104 + 1), v102); + *((_BYTE *)*v6 + *(*v6 - 3)) = v67; + v68 = *v6; + HIBYTE(v108) = v111; + v34 = *v6 - 3; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v68 - 1) = 0; + *(v68 - 3) = (unsigned int)v104 + 1; + *((_BYTE *)v104 + (_DWORD)v34 + 13) = 0; + } + goto LABEL_66; + } +LABEL_126: + HIBYTE(v108) = v111; + } + } + v114 = v47 - S + 48; + v48 = *(*v6 - 3); + if ( v48 + 1 > *(*v6 - 2) || (int)*(*v6 - 1) > 0 ) + std::string::reserve(v6, (std::string *)(v48 + 1), v102); + v34 = (unsigned int *)*(*v6 - 3); + *((_BYTE *)v34 + (_DWORD)*v6) = v114; + v49 = *v6; + if ( *v6 != (unsigned int *)&unk_4E93FC ) + { + *(v49 - 1) = 0; + *(v49 - 3) = v48 + 1; + *((_BYTE *)v49 + v48 + 1) = 0; + } + v36 = (_DWORD *)a1; + ++v110; + v111 = v107; + v37 = *(_DWORD *)(a1 + 8); + if ( v37 < *(_DWORD *)(a1 + 12) ) + { +LABEL_67: + v36[2] = v37 + 2; + WORD2(a1) = -1; + goto LABEL_68; + } +LABEL_91: + (*(void (__fastcall **)(_DWORD *))(*v36 + 40))(v36); + v36 = (_DWORD *)a1; + WORD2(a1) = -1; + if ( !(_DWORD)a1 ) + { + v40 = v107; + goto LABEL_72; + } +LABEL_68: + v38 = (__int16 *)v36[2]; + if ( (unsigned int)v38 >= v36[3] ) + v39 = (*(int (__fastcall **)(_DWORD *, unsigned int *))(*v36 + 36))(v36, v34); + else + v39 = *v38; + v40 = 0; + if ( v39 == -1 ) + { + LODWORD(a1) = 0; + v40 = v107; + } +LABEL_72: + v41 = a3 == -1; + v42 = v41 & (a2 != 0); + if ( v42 ) + { + v52 = (_WORD *)a2[2]; + v53 = (unsigned int)v52 >= a2[3] ? (*(int (**)(void))(*a2 + 36))() : *v52; + v41 = 0; + if ( v53 == -1 ) + { + a2 = 0; + v41 = v42; + } + } + if ( v41 == v40 ) + break; + v10 = WORD2(a1); + if ( (_DWORD)a1 && WORD2(a1) == 0xFFFF ) + { + v69 = *(wchar_t **)(a1 + 8); + if ( (unsigned int)v69 >= *(_DWORD *)(a1 + 12) ) + v10 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + else + v10 = *v69; + v27 = *(_BYTE *)(v118 + 16); + if ( v10 == 0xFFFF ) + LODWORD(a1) = 0; + } + else + { + v27 = *(_BYTE *)(v118 + 16); + } + } +LABEL_74: + v29 = v120[0]; + v43 = *(v120[0] - 3); +LABEL_75: + if ( !v43 ) + goto LABEL_82; + if ( v108 ) + goto LABEL_80; +LABEL_77: + std::string::push_back(v120, (std::string *)(char)v110, v102); + v29 = v120[0]; +LABEL_80: + v113 = v29; + v44 = std::__verify_grouping(*(char **)(v118 + 8), *(_DWORD *)(v118 + 12), (const char **)v120); + v29 = v113; + if ( !v44 ) + *a5 = 4; +LABEL_82: + v45 = a1; + if ( v29 == (unsigned int *)&unk_4E93FC ) + return a1; + std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v119); + return v45; +} +// 47264C: variable 'v102' is possibly undefined +// 47319A: variable 'v34' is possibly undefined + +//----- (004734D0) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); +} + +//----- (004734E0) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 8))(a1); +} + +//----- (004734F0) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); +} + +//----- (00473500) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 44))(a1); +} + +//----- (00473510) -------------------------------------------------------- +int __fastcall std::num_get>::get(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); +} + +//----- (00473520) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 20); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 474150: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (00473540) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 12); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 474160: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (00473560) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 24); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int( + a1, + a2, + a3, + a4, + a5, + a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 474170: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (00473580) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + unsigned __int16 *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 16); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int( + a1, + a2, + a3, + a4, + a5, + a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 474180: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (004735A0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 28); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 474190: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (004735C0) -------------------------------------------------------- +int __thiscall std::num_get>::get( + void *this, + __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + int (__stdcall *v7)(int, int, int, int, int, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, int, int, int, int, int))(*(_DWORD *)this + 32); + if ( v7 == std::num_get>::do_get ) + return std::num_get>::_M_extract_int( + a1, + a2, + a3, + a4, + a5, + a6); + else + return v7(a1, HIDWORD(a1), (int)a2, a3, a4, (int)a5, (int)a6); +} +// 4741A0: using guessed type int __stdcall std::num_get>::do_get(int, int, int, int, int, int, int); + +//----- (004735E0) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + int v6; // edi + int result; // eax + unsigned int v8[8]; // [esp+3Ch] [ebp-20h] BYREF + + v6 = *(_DWORD *)(a4 + 12); + *(_DWORD *)(a4 + 12) = v6 & 0xFFFFFFB5 | 8; + result = std::num_get>::_M_extract_int( + a1, + a2, + a3, + a4, + a5, + v8); + *(_DWORD *)(a4 + 12) = v6; + *a6 = v8[0]; + return result; +} +// 4735E0: using guessed type unsigned int var_20[8]; + +//----- (00473680) -------------------------------------------------------- +int __stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + int *a5, + _BYTE *a6) +{ + int v6; // ebx + _BYTE *v7; // edx + _DWORD *v9; // edi + _DWORD *v10; // esi + int v11; // ecx + int v12; // eax + __int16 v13; // ax + bool v14; // dl + bool v15; // di + bool v16; // si + unsigned int v17; // eax + bool v18; // cl + char v19; // si + char v20; // di + char v21; // al + char v22; // di + unsigned __int16 v23; // ax + __int16 *v24; // eax + __int16 v25; // cx + _DWORD *v26; // esi + bool v27; // bl + char v28; // cl + unsigned int v29; // edx + __int16 *v30; // eax + __int16 v31; // ax + unsigned __int16 *v32; // eax + std::locale::_Impl *v33; // eax + std::locale::_Impl *v34; // esi + __int16 v35; // ax + int v36; // eax + void (__cdecl *v37)(void *); // [esp+4h] [ebp-64h] + unsigned int v38; // [esp+8h] [ebp-60h] + _DWORD *v39; // [esp+28h] [ebp-40h] + bool v40; // [esp+2Dh] [ebp-3Bh] + bool v41; // [esp+2Dh] [ebp-3Bh] + bool v42; // [esp+2Dh] [ebp-3Bh] + bool v43; // [esp+2Eh] [ebp-3Ah] + bool v44; // [esp+2Fh] [ebp-39h] + unsigned int v45; // [esp+30h] [ebp-38h] + std::locale::facet *v46; // [esp+34h] [ebp-34h] + bool v47; // [esp+34h] [ebp-34h] + bool v48; // [esp+34h] [ebp-34h] + __int64 v49; // [esp+38h] [ebp-30h] + unsigned int v50[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v6 = a4; + if ( (*(_BYTE *)(a4 + 12) & 1) == 0 ) + { + v50[0] = -1; + v49 = std::num_get>::_M_extract_int(a1, a2, a3, a4, a5, (int *)v50); + LODWORD(a1) = v49; + WORD2(a1) = WORD2(v49); + if ( v50[0] > 1 ) + { + *a6 = 1; + *a5 = 4; + if ( std::istreambuf_iterator::equal(&a1, (int)&a2) ) + { + *a5 |= 2u; + return a1; + } + } + else + { + v7 = a6; + *a6 = v50[0]; + *v7 &= 1u; + } + return a1; + } + v46 = (std::locale::facet *)std::locale::id::_M_id(&std::numpunct::id); + v9 = (_DWORD *)(*(_DWORD *)(*(_DWORD *)(v6 + 108) + 12) + 4 * (_DWORD)v46); + v10 = (_DWORD *)*v9; + if ( !*v9 ) + { + v33 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v37); + *((_DWORD *)v33 + 1) = 0; + v34 = v33; + *(_DWORD *)v33 = &off_4F65B0; + *((_DWORD *)v33 + 2) = 0; + *((_DWORD *)v33 + 3) = 0; + *((_BYTE *)v33 + 16) = 0; + *((_DWORD *)v33 + 5) = 0; + *((_DWORD *)v33 + 6) = 0; + *((_DWORD *)v33 + 7) = 0; + *((_DWORD *)v33 + 8) = 0; + *((_DWORD *)v33 + 9) = 0; + *((_BYTE *)v33 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v33, v6 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(v6 + 108), v34, v46, v38); + v10 = (_DWORD *)*v9; + } + v11 = v10[8]; + v12 = v10[6]; + v44 = v12 == 0; + if ( !(v12 | v11) ) + goto LABEL_57; + v43 = 1; + v13 = WORD2(a1); + v45 = 0; + v14 = 1; + v39 = v10; + v47 = v11 == 0; + while ( 1 ) + { + v19 = v13 == -1; + v20 = v19 & ((_DWORD)a1 != 0); + if ( v20 ) + { + v30 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v30 >= *(_DWORD *)(a1 + 12) ) + { + v40 = v14; + v31 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + v14 = v40; + } + else + { + v31 = *v30; + } + v19 = 0; + if ( v31 == -1 ) + { + LODWORD(a1) = 0; + v19 = v20; + } + } + v21 = a3 == -1; + v22 = v21 & (a2 != 0); + if ( v22 ) + { + v24 = (__int16 *)a2[2]; + if ( (unsigned int)v24 >= a2[3] ) + { + v41 = v14; + v35 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v14 = v41; + v25 = v35; + } + else + { + v25 = *v24; + } + v21 = 0; + if ( v25 == -1 ) + break; + } + if ( v19 == v21 ) + goto LABEL_37; +LABEL_22: + v23 = WORD2(a1); + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v32 = *(unsigned __int16 **)(a1 + 8); + if ( (unsigned int)v32 >= *(_DWORD *)(a1 + 12) ) + { + v42 = v14; + v23 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + v14 = v42; + } + else + { + v23 = *v32; + } + if ( v23 == 0xFFFF ) + LODWORD(a1) = 0; + } + if ( !v47 ) + v14 = *(_WORD *)(v39[7] + 2 * v45) == v23; + if ( !v14 ) + { + if ( v44 ) + { + if ( v43 ) + { + if ( v39[6] == v45 && v45 ) + { + *a6 = 1; + v36 = 0; +LABEL_70: + *a5 = v36; + return a1; + } +LABEL_57: + *a6 = 0; + goto LABEL_58; + } +LABEL_59: + *a6 = 0; + *a5 = 4; + return a1; + } +LABEL_10: + v43 = *(_WORD *)(v39[5] + 2 * v45) == v23; + goto LABEL_11; + } + if ( !v44 ) + goto LABEL_10; +LABEL_11: + v15 = v47 && !v43; + if ( v15 ) + { + if ( v14 ) + { + if ( v39[8] == v45 && v45 ) + { + *a6 = 0; + v36 = 0; + goto LABEL_70; + } + goto LABEL_57; + } + goto LABEL_59; + } + v16 = v14 || v43; + if ( !v14 && !v43 ) + goto LABEL_59; + ++v45; + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + { + v48 = v14; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v14 = v48; + } + else + { + *(_DWORD *)(a1 + 8) = v17 + 2; + } + WORD2(a1) = -1; + if ( !v14 ) + { + v47 = v16; +LABEL_32: + v44 = v39[6] <= v45; + v18 = v44 && v47; + v43 = v16; + goto LABEL_18; + } + v47 = v39[8] <= v45; + if ( v43 ) + goto LABEL_32; + v44 = v14; + v18 = v39[8] <= v45; +LABEL_18: + v13 = -1; + if ( v18 ) + { + v27 = v14; + v26 = v39; + v28 = v15; + v29 = v45; + goto LABEL_38; + } + } + a2 = 0; + if ( v19 != v22 ) + goto LABEL_22; +LABEL_37: + v26 = v39; + v27 = v14; + v28 = 1; + v29 = v45; +LABEL_38: + if ( v27 && v26[8] == v29 && v29 ) + { + *a6 = 0; + if ( !v43 || v26[6] != v29 ) + goto LABEL_73; +LABEL_58: + *a5 = 4; + return a1; + } + if ( v43 && v26[6] == v29 && v29 ) + { + *a6 = 1; +LABEL_73: + v36 = 2 * (v28 != 0); + goto LABEL_70; + } + *a6 = 0; + if ( !v28 ) + goto LABEL_58; + *a5 = 6; + return a1; +} +// 473A07: variable 'v37' is possibly undefined +// 473A74: variable 'v38' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); +// 473680: using guessed type unsigned int var_1C[7]; + +//----- (00473BE0) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + double *a6) +{ + __int64 v6; // rax + _DWORD *v7; // esi + __int16 v8; // di + _DWORD *v9; // ebx + int v10; // eax + char v11; // di + int v12; // edx + char *v13; // ecx + __int16 *v15; // eax + __int16 v16; // ax + unsigned __int16 *v17; // eax + int v18; // edx + unsigned int v19; // [esp+4h] [ebp-64h] + char v20; // [esp+2Bh] [ebp-3Dh] + char *String; // [esp+48h] [ebp-20h] BYREF + int v22[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_4E93FC; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v19); + v6 = std::num_get>::_M_extract_float( + a1, + a2, + a3, + a4, + a5, + (unsigned int **)&String); + v7 = (_DWORD *)v6; + v8 = WORD2(v6); + v9 = (_DWORD *)v6; + v22[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v11 = v8 == -1; + v20 = v11 & (v7 != 0); + if ( v20 ) + { + v17 = (unsigned __int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + v10 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v10 = *v17; + v11 = (_WORD)v10 != 0xFFFF ? 0 : v20; + v9 = (_WORD)v10 == 0xFFFF ? 0 : v7; + } + LOBYTE(v10) = a3 == -1; + v12 = v10; + if ( a2 && a3 == -1 ) + { + v15 = (__int16 *)a2[2]; + if ( (unsigned int)v15 >= a2[3] ) + v16 = (*(int (__fastcall **)(_DWORD *, int))(*a2 + 36))(a2, v12); + else + v16 = *v15; + LOBYTE(v12) = v16 == -1; + } + if ( v11 == (_BYTE)v12 ) + *a5 |= 2u; + v13 = String - 12; + if ( String != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v18 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v18 - 1; + } + if ( v18 <= 0 ) + std::string::_Rep::_M_destroy(v13, (int)v22); + } + return v9; +} +// 473C13: variable 'v19' is possibly undefined +// 473CB0: variable 'v10' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; +// 473BE0: using guessed type int var_1C[7]; + +//----- (00473DB0) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + long double *a6) +{ + __int64 v6; // rax + _DWORD *v7; // esi + __int16 v8; // di + _DWORD *v9; // ebx + int v10; // eax + char v11; // di + int v12; // edx + char *v13; // ecx + __int16 *v15; // eax + __int16 v16; // ax + unsigned __int16 *v17; // eax + int v18; // edx + unsigned int v19; // [esp+4h] [ebp-64h] + char v20; // [esp+2Bh] [ebp-3Dh] + char *String; // [esp+48h] [ebp-20h] BYREF + int v22[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_4E93FC; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v19); + v6 = std::num_get>::_M_extract_float( + a1, + a2, + a3, + a4, + a5, + (unsigned int **)&String); + v7 = (_DWORD *)v6; + v8 = WORD2(v6); + v9 = (_DWORD *)v6; + v22[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v11 = v8 == -1; + v20 = v11 & (v7 != 0); + if ( v20 ) + { + v17 = (unsigned __int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + v10 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v10 = *v17; + v11 = (_WORD)v10 != 0xFFFF ? 0 : v20; + v9 = (_WORD)v10 == 0xFFFF ? 0 : v7; + } + LOBYTE(v10) = a3 == -1; + v12 = v10; + if ( a2 && a3 == -1 ) + { + v15 = (__int16 *)a2[2]; + if ( (unsigned int)v15 >= a2[3] ) + v16 = (*(int (__fastcall **)(_DWORD *, int))(*a2 + 36))(a2, v12); + else + v16 = *v15; + LOBYTE(v12) = v16 == -1; + } + if ( v11 == (_BYTE)v12 ) + *a5 |= 2u; + v13 = String - 12; + if ( String != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v18 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v18 - 1; + } + if ( v18 <= 0 ) + std::string::_Rep::_M_destroy(v13, (int)v22); + } + return v9; +} +// 473DE3: variable 'v19' is possibly undefined +// 473E80: variable 'v10' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; +// 473DB0: using guessed type int var_1C[7]; + +//----- (00473F80) -------------------------------------------------------- +_DWORD *__stdcall std::num_get>::do_get( + __int64 a1, + _DWORD *a2, + __int16 a3, + int a4, + _DWORD *a5, + float *a6) +{ + __int64 v6; // rax + _DWORD *v7; // esi + __int16 v8; // di + _DWORD *v9; // ebx + int v10; // eax + char v11; // di + int v12; // edx + char *v13; // ecx + __int16 *v15; // eax + __int16 v16; // ax + unsigned __int16 *v17; // eax + int v18; // edx + unsigned int v19; // [esp+4h] [ebp-64h] + char v20; // [esp+2Bh] [ebp-3Dh] + char *String; // [esp+48h] [ebp-20h] BYREF + int v22[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_4E93FC; + std::string::reserve((unsigned int **)&String, (std::string *)0x20, v19); + v6 = std::num_get>::_M_extract_float( + a1, + a2, + a3, + a4, + a5, + (unsigned int **)&String); + v7 = (_DWORD *)v6; + v8 = WORD2(v6); + v9 = (_DWORD *)v6; + v22[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a6, a5); + v11 = v8 == -1; + v20 = v11 & (v7 != 0); + if ( v20 ) + { + v17 = (unsigned __int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + v10 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + else + v10 = *v17; + v11 = (_WORD)v10 != 0xFFFF ? 0 : v20; + v9 = (_WORD)v10 == 0xFFFF ? 0 : v7; + } + LOBYTE(v10) = a3 == -1; + v12 = v10; + if ( a2 && a3 == -1 ) + { + v15 = (__int16 *)a2[2]; + if ( (unsigned int)v15 >= a2[3] ) + v16 = (*(int (__fastcall **)(_DWORD *, int))(*a2 + 36))(a2, v12); + else + v16 = *v15; + LOBYTE(v12) = v16 == -1; + } + if ( v11 == (_BYTE)v12 ) + *a5 |= 2u; + v13 = String - 12; + if ( String != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v18 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v18 - 1; + } + if ( v18 <= 0 ) + std::string::_Rep::_M_destroy(v13, (int)v22); + } + return v9; +} +// 473FB3: variable 'v19' is possibly undefined +// 474050: variable 'v10' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; +// 473F80: using guessed type int var_1C[7]; + +//----- (004741B0) -------------------------------------------------------- +_BYTE *__stdcall std::num_put>::_M_group_int( + char *a1, + int a2, + char a3, + int a4, + _BYTE *a5, + _BYTE *a6, + _DWORD *a7) +{ + _BYTE *result; // eax + + result = (_BYTE *)(std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5); + *a7 = result; + return result; +} + +//----- (00474200) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + unsigned int v8; // edi + void *v9; // esp + void *v10; // esp + unsigned int v11; // eax + int v12; // eax + int v13; // ebx + char *v14; // edx + int v15; // esi + char v16; // si + int v18; // eax + void *v19; // esp + void *v20; // esp + int v21; // eax + void *v22; // esp + void *v23; // esp + char *v24; // eax + _BYTE *v25; // eax + char v26; // al + std::locale::_Impl *v27; // eax + std::locale::_Impl *v28; // esi + int v29; // [esp-14h] [ebp-6Ch] + int v30; // [esp-Ch] [ebp-64h] + char v31[2]; // [esp+0h] [ebp-58h] BYREF + _BYTE v32[2]; // [esp+2h] [ebp-56h] BYREF + void (__cdecl *v33)(void *); // [esp+4h] [ebp-54h] + unsigned int v34; // [esp+8h] [ebp-50h] + char v35[20]; // [esp+14h] [ebp-44h] BYREF + unsigned int v36; // [esp+28h] [ebp-30h] + int v37; // [esp+2Ch] [ebp-2Ch] + char *v38; // [esp+30h] [ebp-28h] + int v39; // [esp+34h] [ebp-24h] + int v40; // [esp+38h] [ebp-20h] + int v41; // [esp+3Ch] [ebp-1Ch] + + v40 = a1; + v39 = a2; + v37 = a4; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v27 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v33); + *((_DWORD *)v27 + 1) = 0; + v28 = v27; + *(_DWORD *)v27 = &off_4F65A0; + *((_DWORD *)v27 + 2) = 0; + *((_DWORD *)v27 + 3) = 0; + *((_BYTE *)v27 + 16) = 0; + *((_DWORD *)v27 + 5) = 0; + *((_DWORD *)v27 + 6) = 0; + *((_DWORD *)v27 + 7) = 0; + *((_DWORD *)v27 + 8) = 0; + *((_WORD *)v27 + 18) = 0; + *((_BYTE *)v27 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v27, (int)(a3 + 27)); + std::locale::_Impl::_M_install_cache(a3[27], v28, (const std::locale::facet *)v5, v34); + v7 = *v6; + } + v41 = v7 + 38; + v8 = a3[3]; + v9 = alloca(32); + v10 = alloca(32); + v36 = v8 & 0x4A; + v11 = a5; + LOBYTE(v41) = v36 != 8 && v36 != 64; + if ( a5 <= 0 && (v8 & 0x4A) != 8 && (v8 & 0x4A) != 64 ) + v11 = -a5; + v38 = v31; + v12 = std::__int_to_char(v35, v11, v7 + 38, v8, v41); + v13 = v12; + v14 = &v38[-v12 + 20]; + if ( !*(_BYTE *)(v7 + 16) ) + { + if ( (_BYTE)v41 ) + goto LABEL_8; +LABEL_18: + if ( (v8 & 0x200) != 0 && a5 ) + { + if ( v36 == 64 ) + { + v26 = *(_BYTE *)(v7 + 42); + ++v13; + --v14; + } + else + { + v13 += 2; + v14 -= 2; + v14[1] = *(_BYTE *)(v7 + ((v8 >> 14) & 1) + 40); + v26 = *(_BYTE *)(v7 + 42); + } + *v14 = v26; + } + goto LABEL_10; + } + v21 = 16 * ((unsigned int)(2 * v12 + 29) >> 4); + v22 = alloca(v21); + v23 = alloca(v21); + v29 = *(_DWORD *)(v7 + 12); + v24 = *(char **)(v7 + 8); + v38 = v32; + v25 = std::__add_grouping(v32, *(_BYTE *)(v7 + 37), v24, v29, v14, &v14[v13]); + v14 = v38; + v13 = v25 - v38; + if ( !(_BYTE)v41 ) + goto LABEL_18; +LABEL_8: + if ( a5 < 0 ) + { + ++v13; + *--v14 = *(_BYTE *)(v7 + 38); + } + else if ( (v8 & 0x800) != 0 ) + { + ++v13; + *--v14 = *(_BYTE *)(v7 + 39); + v15 = a3[2]; + if ( v15 <= v13 ) + goto LABEL_11; + goto LABEL_15; + } +LABEL_10: + v15 = a3[2]; + if ( v15 <= v13 ) + goto LABEL_11; +LABEL_15: + v18 = 16 * ((unsigned int)(v15 + 27) >> 4); + v19 = alloca(v18); + v20 = alloca(v18); + v30 = v13; + v13 = v15; + std::__pad>::_S_pad(a3, (void *)(char)v37, v31, v14, v15, v30); + v14 = v31; +LABEL_11: + a3[2] = 0; + v16 = v39; + if ( !(_BYTE)v39 ) + v16 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v40 + 48))(v40, v14, v13) != v13; + LOBYTE(v41) = v16; + return v40; +} +// 4E9608: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); +// 474200: using guessed type char anonymous_2[20]; + +//----- (00474520) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + unsigned int v8; // edi + void *v9; // esp + void *v10; // esp + int v11; // eax + int v12; // ebx + char *v13; // edx + int v14; // esi + char v15; // si + int v17; // eax + void *v18; // esp + void *v19; // esp + char *v20; // eax + _BYTE *v21; // eax + char v22; // al + int v23; // eax + void *v24; // esp + void *v25; // esp + std::locale::_Impl *v26; // eax + std::locale::_Impl *v27; // esi + int v28; // [esp-14h] [ebp-6Ch] + int v29; // [esp-Ch] [ebp-64h] + char v30[2]; // [esp+0h] [ebp-58h] BYREF + _BYTE v31[2]; // [esp+2h] [ebp-56h] BYREF + void (__cdecl *v32)(void *); // [esp+4h] [ebp-54h] + unsigned int v33; // [esp+8h] [ebp-50h] + char v34[16]; // [esp+14h] [ebp-44h] BYREF + int v35; // [esp+24h] [ebp-34h] + unsigned int v36; // [esp+28h] [ebp-30h] + int v37; // [esp+2Ch] [ebp-2Ch] + char *v38; // [esp+30h] [ebp-28h] + int v39; // [esp+34h] [ebp-24h] + bool v40; // [esp+3Bh] [ebp-1Dh] + int v41; // [esp+3Ch] [ebp-1Ch] + + v41 = a1; + v39 = a2; + v37 = a4; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v26 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v32); + *((_DWORD *)v26 + 1) = 0; + v27 = v26; + *(_DWORD *)v26 = &off_4F65A0; + *((_DWORD *)v26 + 2) = 0; + *((_DWORD *)v26 + 3) = 0; + *((_BYTE *)v26 + 16) = 0; + *((_DWORD *)v26 + 5) = 0; + *((_DWORD *)v26 + 6) = 0; + *((_DWORD *)v26 + 7) = 0; + *((_DWORD *)v26 + 8) = 0; + *((_WORD *)v26 + 18) = 0; + *((_BYTE *)v26 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v26, (int)(a3 + 27)); + std::locale::_Impl::_M_install_cache(a3[27], v27, (const std::locale::facet *)v5, v33); + v7 = *v6; + } + v35 = v7 + 38; + v8 = a3[3]; + v9 = alloca(32); + v10 = alloca(32); + v36 = v8 & 0x4A; + v38 = v30; + v40 = v36 != 8 && v36 != 64; + v11 = std::__int_to_char(v34, a5, v7 + 38, v8, v40); + v12 = v11; + v13 = &v38[-v11 + 20]; + if ( *(_BYTE *)(v7 + 16) ) + { + v17 = 16 * ((unsigned int)(2 * v11 + 29) >> 4); + v18 = alloca(v17); + v19 = alloca(v17); + v28 = *(_DWORD *)(v7 + 12); + v20 = *(char **)(v7 + 8); + v38 = v31; + v21 = std::__add_grouping(v31, *(_BYTE *)(v7 + 37), v20, v28, v13, &v13[v12]); + v13 = v38; + v12 = v21 - v38; + if ( v40 ) + goto LABEL_5; + } + else if ( v40 ) + { + goto LABEL_5; + } + if ( (v8 & 0x200) != 0 && a5 ) + { + if ( v36 == 64 ) + { + v22 = *(_BYTE *)(v7 + 42); + ++v12; + --v13; + } + else + { + v12 += 2; + v13 -= 2; + v13[1] = *(_BYTE *)(v35 + ((v8 >> 14) & 1) + 2); + v22 = *(_BYTE *)(v7 + 42); + } + *v13 = v22; + } +LABEL_5: + v14 = a3[2]; + if ( v14 > v12 ) + { + v23 = 16 * ((unsigned int)(v14 + 27) >> 4); + v24 = alloca(v23); + v25 = alloca(v23); + v29 = v12; + v12 = a3[2]; + std::__pad>::_S_pad(a3, (void *)(char)v37, v30, v13, v14, v29); + v13 = v30; + } + a3[2] = 0; + v15 = v39; + if ( !(_BYTE)v39 ) + v15 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v41 + 48))(v41, v13, v12) != v12; + v40 = v15; + return v41; +} +// 4E9608: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); +// 474520: using guessed type char anonymous_2[16]; + +//----- (004747F0) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + _DWORD *a3, + int a4, + UDItype a5) +{ + int v5; // ebx + int *v6; // esi + int v7; // edi + void *v8; // esp + void *v9; // esp + __int64 v10; // rax + int v11; // eax + char *v12; // esi + int v13; // ebx + char *v14; // edx + int v15; // esi + char v16; // si + int v18; // eax + void *v19; // esp + void *v20; // esp + int v21; // eax + void *v22; // esp + void *v23; // esp + _BYTE *v24; // eax + char v25; // al + std::locale::_Impl *v26; // eax + std::locale::_Impl *v27; // edi + int v28; // [esp-2Ch] [ebp-84h] + char v29[2]; // [esp-20h] [ebp-78h] BYREF + _BYTE v30[34]; // [esp-1Eh] [ebp-76h] BYREF + void (__cdecl *v31)(void *); // [esp+4h] [ebp-54h] + unsigned int v32[6]; // [esp+8h] [ebp-50h] BYREF + int v33; // [esp+20h] [ebp-38h] + int v34; // [esp+24h] [ebp-34h] + int v35; // [esp+28h] [ebp-30h] + int v36; // [esp+2Ch] [ebp-2Ch] + int v37; // [esp+30h] [ebp-28h] + int v38; // [esp+34h] [ebp-24h] + UDItype n; // [esp+38h] [ebp-20h] + + v37 = a1; + v35 = a2; + v34 = a4; + n = a5; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v26 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v31); + *((_DWORD *)v26 + 1) = 0; + v27 = v26; + *(_DWORD *)v26 = &off_4F65A0; + *((_DWORD *)v26 + 2) = 0; + *((_DWORD *)v26 + 3) = 0; + *((_BYTE *)v26 + 16) = 0; + *((_DWORD *)v26 + 5) = 0; + *((_DWORD *)v26 + 6) = 0; + *((_DWORD *)v26 + 7) = 0; + *((_DWORD *)v26 + 8) = 0; + *((_WORD *)v26 + 18) = 0; + *((_BYTE *)v26 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v26, (int)(a3 + 27)); + std::locale::_Impl::_M_install_cache(a3[27], v27, (const std::locale::facet *)v5, v32[0]); + v7 = *v6; + } + v38 = v7 + 38; + v36 = a3[3]; + v8 = alloca(64); + v9 = alloca(64); + v33 = v36 & 0x4A; + v10 = n; + LOBYTE(v38) = v33 != 8 && v33 != 64; + if ( ((HIDWORD(n) | ((n - 1) >> 32)) & 0x80000000) != 0LL && (_BYTE)v38 ) + v10 = -(__int64)n; + v11 = std::__int_to_char(v32, v10, v7 + 38, v36, v38); + v12 = &v29[-v11]; + v13 = v11; + v14 = &v29[-v11 + 40]; + if ( !*(_BYTE *)(v7 + 16) ) + { + if ( (_BYTE)v38 ) + goto LABEL_8; +LABEL_18: + if ( (v36 & 0x200) != 0 && n ) + { + if ( v33 == 64 ) + { + v25 = *(_BYTE *)(v7 + 42); + ++v13; + --v14; + } + else + { + v13 += 2; + v14 -= 2; + v14[1] = *(_BYTE *)(v7 + (((unsigned int)v36 >> 14) & 1) + 40); + v25 = *(_BYTE *)(v7 + 42); + } + *v14 = v25; + } + goto LABEL_10; + } + v21 = 16 * ((unsigned int)(2 * v11 + 29) >> 4); + v22 = alloca(v21); + v23 = alloca(v21); + v24 = std::__add_grouping( + v30, + *(_BYTE *)(v7 + 37), + *(char **)(v7 + 8), + *(_DWORD *)(v7 + 12), + v12 + 40, + &v14[v13]); + v14 = v30; + v13 = v24 - v30; + if ( !(_BYTE)v38 ) + goto LABEL_18; +LABEL_8: + if ( (n & 0x8000000000000000LL) != 0LL ) + { + ++v13; + *--v14 = *(_BYTE *)(v7 + 38); + } + else if ( (v36 & 0x800) != 0 ) + { + ++v13; + *--v14 = *(_BYTE *)(v7 + 39); + v15 = a3[2]; + if ( v15 <= v13 ) + goto LABEL_11; + goto LABEL_15; + } +LABEL_10: + v15 = a3[2]; + if ( v15 <= v13 ) + goto LABEL_11; +LABEL_15: + v18 = 16 * ((unsigned int)(v15 + 27) >> 4); + v19 = alloca(v18); + v20 = alloca(v18); + v28 = v13; + v13 = v15; + std::__pad>::_S_pad(a3, (void *)(char)v34, v29, v14, v15, v28); + v14 = v29; +LABEL_11: + a3[2] = 0; + v16 = v35; + if ( !(_BYTE)v35 ) + v16 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v37 + 48))(v37, v14, v13) != v13; + LOBYTE(n) = v16; + return v37; +} +// 4E9608: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); +// 4747F0: using guessed type unsigned int anonymous_1[6]; + +//----- (00474B30) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5, + int a6) +{ + int v6; // ebx + int *v7; // edi + int v8; // esi + unsigned int v9; // edi + void *v10; // esp + void *v11; // esp + int v12; // eax + int v13; // ebx + char *v14; // edx + int v15; // esi + char v16; // si + int v18; // eax + void *v19; // esp + void *v20; // esp + char *v21; // eax + _BYTE *v22; // eax + char v23; // al + int v24; // eax + void *v25; // esp + void *v26; // esp + std::locale::_Impl *v27; // eax + std::locale::_Impl *v28; // esi + int v29; // [esp-34h] [ebp-9Ch] + int v30; // [esp-2Ch] [ebp-94h] + char v31[2]; // [esp-20h] [ebp-88h] BYREF + _BYTE v32[34]; // [esp-1Eh] [ebp-86h] BYREF + void (__cdecl *v33)(void *); // [esp+4h] [ebp-64h] + unsigned int v34[9]; // [esp+8h] [ebp-60h] BYREF + int v35; // [esp+2Ch] [ebp-3Ch] + unsigned int v36; // [esp+30h] [ebp-38h] + int v37; // [esp+34h] [ebp-34h] + char *v38; // [esp+38h] [ebp-30h] + int v39; // [esp+3Ch] [ebp-2Ch] + bool v40; // [esp+43h] [ebp-25h] + unsigned __int64 v41; // [esp+44h] [ebp-24h] + int v42; // [esp+4Ch] [ebp-1Ch] + + v42 = a1; + v39 = a2; + v37 = a4; + v41 = __PAIR64__(a5, a6); + v6 = std::locale::id::_M_id(&std::numpunct::id); + v7 = (int *)(*(_DWORD *)(a3[27] + 12) + 4 * v6); + v8 = *v7; + if ( !*v7 ) + { + v27 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v33); + *((_DWORD *)v27 + 1) = 0; + v28 = v27; + *(_DWORD *)v27 = &off_4F65A0; + *((_DWORD *)v27 + 2) = 0; + *((_DWORD *)v27 + 3) = 0; + *((_BYTE *)v27 + 16) = 0; + *((_DWORD *)v27 + 5) = 0; + *((_DWORD *)v27 + 6) = 0; + *((_DWORD *)v27 + 7) = 0; + *((_DWORD *)v27 + 8) = 0; + *((_WORD *)v27 + 18) = 0; + *((_BYTE *)v27 + 100) = 0; + std::__numpunct_cache::_M_cache((int)v27, (int)(a3 + 27)); + std::locale::_Impl::_M_install_cache(a3[27], v28, (const std::locale::facet *)v6, v34[0]); + v8 = *v7; + } + v35 = v8 + 38; + v9 = a3[3]; + v10 = alloca(64); + v11 = alloca(64); + v36 = v9 & 0x4A; + v38 = v31; + v40 = v36 != 8 && v36 != 64; + v12 = std::__int_to_char(v34, __PAIR64__(v41, HIDWORD(v41)), v8 + 38, v9, v40); + v13 = v12; + v14 = &v38[-v12 + 40]; + if ( *(_BYTE *)(v8 + 16) ) + { + v18 = 16 * ((unsigned int)(2 * v12 + 29) >> 4); + v19 = alloca(v18); + v20 = alloca(v18); + v29 = *(_DWORD *)(v8 + 12); + v21 = *(char **)(v8 + 8); + v38 = v32; + v22 = std::__add_grouping(v32, *(_BYTE *)(v8 + 37), v21, v29, v14, &v14[v13]); + v14 = v38; + v13 = v22 - v38; + if ( v40 ) + goto LABEL_5; + } + else if ( v40 ) + { + goto LABEL_5; + } + if ( (v9 & 0x200) != 0 && v41 ) + { + if ( v36 == 64 ) + { + v23 = *(_BYTE *)(v8 + 42); + ++v13; + --v14; + } + else + { + v13 += 2; + v14 -= 2; + v14[1] = *(_BYTE *)(v35 + ((v9 >> 14) & 1) + 2); + v23 = *(_BYTE *)(v8 + 42); + } + *v14 = v23; + } +LABEL_5: + v15 = a3[2]; + if ( v15 > v13 ) + { + v24 = 16 * ((unsigned int)(v15 + 27) >> 4); + v25 = alloca(v24); + v26 = alloca(v24); + v30 = v13; + v13 = a3[2]; + std::__pad>::_S_pad(a3, (void *)(char)v37, v31, v14, v15, v30); + v14 = v31; + } + a3[2] = 0; + v16 = v39; + if ( !(_BYTE)v39 ) + v16 = (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v42 + 48))(v42, v14, v13) != v13; + BYTE4(v41) = v16; + return v42; +} +// 4E9608: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); +// 474B30: using guessed type unsigned int anonymous_1[9]; + +//----- (00474E10) -------------------------------------------------------- +_BYTE *__stdcall std::num_put>::_M_group_float( + char *a1, + int a2, + char a3, + char *Src, + int a5, + _BYTE *a6, + _DWORD *a7) +{ + char *v7; // ebp + _BYTE *v8; // edx + _BYTE *v9; // edi + int v10; // eax + _BYTE *result; // eax + + if ( Src ) + { + v7 = (char *)(Src - a6); + v8 = std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, Src); + v9 = &v8[-a5]; + v10 = 0; + if ( *a7 != Src - a6 ) + { + memcpy(v8, Src, *a7 - (_DWORD)v7); + v10 = *a7 - (_DWORD)v7; + } + result = &v9[v10]; + *a7 = result; + } + else + { + result = &std::__add_grouping((_BYTE *)a5, a3, a1, a2, a6, &a6[*a7])[-a5]; + *a7 = result; + } + return result; +} + +//----- (00474ED0) -------------------------------------------------------- +int __thiscall std::num_put>::_M_insert_float( + void *this, + int a2, + int a3, + _DWORD *a4, + int a5, + int a6, + double a7) +{ + int v7; // ebx + int *v8; // edi + int v9; // esi + void *v10; // esp + void *v11; // esp + int v12; // eax + _BYTE *v13; // eax + int v14; // ebx + _BYTE *v15; // esi + int v16; // eax + void *v17; // esp + char v18; // dl + void *v19; // esp + char *v20; // eax + void (__thiscall *v21)(_BYTE *, char *, char *, void *); // edx + char *v22; // eax + char *v23; // edx + int v24; // ecx + signed int v25; // esi + char v26; // si + int v28; // eax + void *v29; // esp + void *v30; // esp + int v31; // eax + void *v32; // esp + void *v33; // esp + int v34; // ebx + char *v35; // ecx + int v36; // eax + void *v37; // esp + void *v38; // esp + int v39; // eax + int v40; // eax + void *v41; // esp + void *v42; // esp + std::locale::_Impl *v43; // eax + std::locale::_Impl *v44; // esi + int v45; // ecx + void *v46; // eax + int v47; // [esp-2Ch] [ebp-B4h] + char v48; // [esp-20h] [ebp-A8h] BYREF + _BYTE v49[35]; // [esp-1Fh] [ebp-A7h] BYREF + void (__cdecl *v50)(void *); // [esp+4h] [ebp-84h] + unsigned int v51; // [esp+8h] [ebp-80h] + char *v52; // [esp+28h] [ebp-60h] + int v53; // [esp+2Ch] [ebp-5Ch] + void *v54; // [esp+30h] [ebp-58h] + int v55; // [esp+34h] [ebp-54h] + size_t Size; // [esp+38h] [ebp-50h] + int v57; // [esp+3Ch] [ebp-4Ch] + void *v58; // [esp+40h] [ebp-48h] + int v59; // [esp+44h] [ebp-44h] + int v60[2]; // [esp+48h] [ebp-40h] + size_t MaxCount; // [esp+58h] [ebp-30h] BYREF + int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF + char v63[40]; // [esp+60h] [ebp-28h] BYREF + + v54 = this; + v59 = a2; + *(double *)v60 = a7; + v55 = a3; + v53 = a5; + Size = a6; + v58 = a4 + 27; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (int *)(*(_DWORD *)(a4[27] + 12) + 4 * v7); + v57 = *v8; + if ( !v57 ) + { + v43 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v50); + *((_DWORD *)v43 + 1) = 0; + v44 = v43; + *(_DWORD *)v43 = &off_4F65A0; + v45 = (int)v43; + *((_DWORD *)v43 + 2) = 0; + *((_DWORD *)v43 + 3) = 0; + *((_BYTE *)v43 + 16) = 0; + *((_DWORD *)v43 + 5) = 0; + *((_DWORD *)v43 + 6) = 0; + *((_DWORD *)v43 + 7) = 0; + *((_DWORD *)v43 + 8) = 0; + *((_WORD *)v43 + 18) = 0; + v46 = v58; + *(_BYTE *)(v45 + 100) = 0; + std::__numpunct_cache::_M_cache(v45, (int)v46); + std::locale::_Impl::_M_install_cache(a4[27], v44, (const std::locale::facet *)v7, v51); + v57 = *v8; + } + v9 = a4[1]; + if ( v9 < 0 ) + v9 = 6; + std::__num_base::_S_format_float((std::__num_base *)a4, (const std::ios_base *)v63, (char *)(char)Size); + v10 = alloca(64); + v11 = alloca(64); + if ( (a4[3] & 0x104) == 260 ) + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v39 = std::__convert_from_v(&c_locale, &v48, 0x2Du, v63, v60[0], v60[1]); + MaxCount = v39; + if ( v39 > 44 ) + { + Size = v39 + 1; + v40 = 16 * ((unsigned int)(v39 + 28) >> 4); + v41 = alloca(v40); + v42 = alloca(v40); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v48, Size, v63, v60[0], v60[1]); + } + } + else + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v12 = std::__convert_from_v(&c_locale, &v48, 0x2Du, v63, v9, v60[0], v60[1]); + MaxCount = v12; + if ( v12 > 44 ) + { + Size = v12 + 1; + v28 = 16 * ((unsigned int)(v12 + 28) >> 4); + v29 = alloca(v28); + v30 = alloca(v28); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v48, Size, v63, v9, v60[0], v60[1]); + } + } + v13 = std::use_facet>((int)v58); + v14 = MaxCount; + v15 = v13; + Size = MaxCount; + v16 = 16 * ((MaxCount + 27) >> 4); + v17 = alloca(v16); + v18 = v15[28]; + v19 = alloca(v16); + v58 = &v48; + v60[0] = (int)&v48; + v20 = &v49[MaxCount - 1]; + if ( v18 != 1 ) + { + if ( v18 ) + { + v21 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v15 + 28); + if ( (char *)v21 == (char *)std::ctype::do_widen ) + goto LABEL_11; + } + else + { + v52 = &v49[MaxCount - 1]; + std::ctype::_M_widen_init((int)v15); + v20 = v52; + v21 = *(void (__thiscall **)(_BYTE *, char *, char *, void *))(*(_DWORD *)v15 + 28); + if ( (char *)v21 == (char *)std::ctype::do_widen ) + { +LABEL_11: + v14 = MaxCount; + if ( v20 != &v48 ) + memcpy(v58, &v48, Size); + goto LABEL_13; + } + } + v21(v15, &v48, v20, v58); + v14 = MaxCount; + goto LABEL_13; + } + if ( v20 != &v48 ) + memcpy(v58, &v48, MaxCount); +LABEL_13: + if ( !v14 ) + { + if ( *(_BYTE *)(v57 + 16) ) + { + v23 = 0; + goto LABEL_22; + } +LABEL_16: + v25 = a4[2]; + if ( v14 >= v25 ) + goto LABEL_17; + goto LABEL_25; + } + v22 = (char *)memchr(&v48, 46, v14); + v23 = v22; + if ( !v22 ) + { + if ( *(_BYTE *)(v57 + 16) && (v14 <= 2 || v49[0] <= 57 && (unsigned __int8)(v49[1] - 48) <= 9u && v49[0] > 47) ) + goto LABEL_22; + goto LABEL_16; + } + v24 = v57; + v23 = (char *)v58 + v22 - &v48; + *v23 = *(_BYTE *)(v57 + 36); + if ( !*(_BYTE *)(v24 + 16) ) + goto LABEL_16; +LABEL_22: + v31 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); + v32 = alloca(v31); + v33 = alloca(v31); + if ( ((v48 - 43) & 0xFD) != 0 ) + { + v35 = &v48; + v34 = 0; + } + else + { + MaxCount = v14 - 1; + v34 = 1; + v48 = *(_BYTE *)v58; + v35 = v49; + v60[0] = (int)v58 + 1; + } + std::num_put>::_M_group_float( + *(char **)(v57 + 8), + *(_DWORD *)(v57 + 12), + *(_BYTE *)(v57 + 37), + v23, + (int)v35, + (_BYTE *)v60[0], + &MaxCount); + v14 = MaxCount + v34; + v60[0] = (int)&v48; + MaxCount = v14; + v25 = a4[2]; + if ( v14 >= v25 ) + goto LABEL_17; +LABEL_25: + v36 = 16 * ((unsigned int)(v25 + 27) >> 4); + v37 = alloca(v36); + v38 = alloca(v36); + v47 = v14; + v14 = v25; + std::__pad>::_S_pad(a4, (void *)(char)v53, &v48, (_BYTE *)v60[0], v25, v47); + MaxCount = v25; + v60[0] = (int)&v48; +LABEL_17: + a4[2] = 0; + v26 = v55; + if ( !(_BYTE)v55 ) + v26 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v59 + 48))(v59, v60[0], v14) != v14; + LOBYTE(v60[0]) = v26; + return v59; +} +// 4E9608: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (00475420) -------------------------------------------------------- +int __thiscall std::num_put>::_M_insert_float( + void *this, + int a2, + int a3, + std::__num_base *a4, + int a5, + int a6, + long double a7) +{ + int v7; // ebx + int *v8; // edi + int v9; // esi + void *v10; // esp + void *v11; // esp + int v12; // eax + _BYTE *v13; // eax + int v14; // ebx + _BYTE *v15; // esi + int v16; // eax + void *v17; // esp + char v18; // dl + void *v19; // esp + char *v20; // eax + void (__thiscall *v21)(_BYTE *, char *, char *, size_t); // edx + char *v22; // eax + char *v23; // edx + int v24; // ecx + signed int v25; // esi + char v26; // si + int v28; // eax + void *v29; // esp + void *v30; // esp + int v31; // eax + void *v32; // esp + void *v33; // esp + int v34; // ebx + char *v35; // ecx + int v36; // eax + void *v37; // esp + void *v38; // esp + int v39; // eax + int v40; // eax + void *v41; // esp + void *v42; // esp + std::locale::_Impl *v43; // eax + std::locale::_Impl *v44; // esi + int v45; // ecx + int v46; // eax + int v51; // [esp-3Ch] [ebp-C4h] + char v52; // [esp-30h] [ebp-B8h] BYREF + _BYTE v53[51]; // [esp-2Fh] [ebp-B7h] BYREF + void (__cdecl *v54)(void *); // [esp+4h] [ebp-84h] + unsigned int v55; // [esp+8h] [ebp-80h] + char *v56; // [esp+2Ch] [ebp-5Ch] + int v57; // [esp+30h] [ebp-58h] + void *v58; // [esp+34h] [ebp-54h] + size_t Size; // [esp+38h] [ebp-50h] + int v60; // [esp+3Ch] [ebp-4Ch] + int v61; // [esp+40h] [ebp-48h] + size_t BufferCount; // [esp+44h] [ebp-44h] + int v63; // [esp+48h] [ebp-40h] + int v64; // [esp+4Ch] [ebp-3Ch] + size_t MaxCount; // [esp+58h] [ebp-30h] BYREF + int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF + char v67[40]; // [esp+60h] [ebp-28h] BYREF + + v58 = this; + v63 = a2; + v60 = a3; + v57 = a5; + BufferCount = a6; + v64 = (int)a4 + 108; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (int *)(*(_DWORD *)(*((_DWORD *)a4 + 27) + 12) + 4 * v7); + v61 = *v8; + if ( !v61 ) + { + v43 = (std::locale::_Impl *)operator new((struct type_info *)0x68, v54); + *((_DWORD *)v43 + 1) = 0; + v44 = v43; + *(_DWORD *)v43 = &off_4F65A0; + v45 = (int)v43; + *((_DWORD *)v43 + 2) = 0; + *((_DWORD *)v43 + 3) = 0; + *((_BYTE *)v43 + 16) = 0; + *((_DWORD *)v43 + 5) = 0; + *((_DWORD *)v43 + 6) = 0; + *((_DWORD *)v43 + 7) = 0; + *((_DWORD *)v43 + 8) = 0; + *((_WORD *)v43 + 18) = 0; + v46 = v64; + *(_BYTE *)(v45 + 100) = 0; + std::__numpunct_cache::_M_cache(v45, v46); + std::locale::_Impl::_M_install_cache(*((_DWORD *)a4 + 27), v44, (const std::locale::facet *)v7, v55); + v61 = *v8; + } + v9 = *((_DWORD *)a4 + 1); + if ( v9 < 0 ) + v9 = 6; + std::__num_base::_S_format_float(a4, (const std::ios_base *)v67, (char *)(char)BufferCount); + v10 = alloca(80); + v11 = alloca(80); + if ( (*((_DWORD *)a4 + 3) & 0x104) == 260 ) + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v39 = std::__convert_from_v(&c_locale, &v52, 0x36u, v67, *(_QWORD *)&a7, HIDWORD(a7)); + MaxCount = v39; + if ( v39 > 53 ) + { + BufferCount = v39 + 1; + v40 = 16 * ((unsigned int)(v39 + 28) >> 4); + v41 = alloca(v40); + v42 = alloca(v40); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v52, BufferCount, v67, *(_QWORD *)&a7, HIDWORD(a7)); + } + } + else + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v12 = std::__convert_from_v(&c_locale, &v52, 0x36u, v67, v9, *(_QWORD *)&a7, HIDWORD(a7)); + MaxCount = v12; + if ( v12 > 53 ) + { + BufferCount = v12 + 1; + v28 = 16 * ((unsigned int)(v12 + 28) >> 4); + v29 = alloca(v28); + v30 = alloca(v28); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v52, BufferCount, v67, v9, *(_QWORD *)&a7, HIDWORD(a7)); + } + } + v13 = std::use_facet>(v64); + v14 = MaxCount; + v15 = v13; + Size = MaxCount; + v16 = 16 * ((MaxCount + 27) >> 4); + v17 = alloca(v16); + v18 = v15[28]; + v19 = alloca(v16); + BufferCount = (size_t)&v52; + v64 = (int)&v52; + v20 = &v53[MaxCount - 1]; + if ( v18 != 1 ) + { + if ( v18 ) + { + v21 = *(void (__thiscall **)(_BYTE *, char *, char *, size_t))(*(_DWORD *)v15 + 28); + if ( (char *)v21 == (char *)std::ctype::do_widen ) + goto LABEL_11; + } + else + { + v56 = &v53[MaxCount - 1]; + std::ctype::_M_widen_init((int)v15); + v20 = v56; + v21 = *(void (__thiscall **)(_BYTE *, char *, char *, size_t))(*(_DWORD *)v15 + 28); + if ( (char *)v21 == (char *)std::ctype::do_widen ) + { +LABEL_11: + v14 = MaxCount; + if ( v20 != &v52 ) + memcpy((void *)BufferCount, &v52, Size); + goto LABEL_13; + } + } + v21(v15, &v52, v20, BufferCount); + v14 = MaxCount; + goto LABEL_13; + } + if ( v20 != &v52 ) + memcpy((void *)BufferCount, &v52, MaxCount); +LABEL_13: + if ( !v14 ) + { + if ( *(_BYTE *)(v61 + 16) ) + { + v23 = 0; + goto LABEL_22; + } +LABEL_16: + v25 = *((_DWORD *)a4 + 2); + if ( v14 >= v25 ) + goto LABEL_17; + goto LABEL_25; + } + v22 = (char *)memchr(&v52, 46, v14); + v23 = v22; + if ( !v22 ) + { + if ( *(_BYTE *)(v61 + 16) && (v14 <= 2 || v53[0] <= 57 && (unsigned __int8)(v53[1] - 48) <= 9u && v53[0] > 47) ) + goto LABEL_22; + goto LABEL_16; + } + v24 = v61; + v23 = (char *)(BufferCount + v22 - &v52); + *v23 = *(_BYTE *)(v61 + 36); + if ( !*(_BYTE *)(v24 + 16) ) + goto LABEL_16; +LABEL_22: + v31 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); + v32 = alloca(v31); + v33 = alloca(v31); + if ( ((v52 - 43) & 0xFD) != 0 ) + { + v35 = &v52; + v34 = 0; + } + else + { + MaxCount = v14 - 1; + v34 = 1; + v52 = *(_BYTE *)BufferCount; + v35 = v53; + v64 = BufferCount + 1; + } + std::num_put>::_M_group_float( + *(char **)(v61 + 8), + *(_DWORD *)(v61 + 12), + *(_BYTE *)(v61 + 37), + v23, + (int)v35, + (_BYTE *)v64, + &MaxCount); + v14 = MaxCount + v34; + v64 = (int)&v52; + MaxCount = v14; + v25 = *((_DWORD *)a4 + 2); + if ( v14 >= v25 ) + goto LABEL_17; +LABEL_25: + v36 = 16 * ((unsigned int)(v25 + 27) >> 4); + v37 = alloca(v36); + v38 = alloca(v36); + v51 = v14; + v14 = v25; + std::__pad>::_S_pad(a4, (void *)(char)v57, &v52, (_BYTE *)v64, v25, v51); + MaxCount = v25; + v64 = (int)&v52; +LABEL_17: + *((_DWORD *)a4 + 2) = 0; + v26 = v60; + if ( !(_BYTE)v60 ) + v26 = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v63 + 48))(v63, v64, v14) != v14; + LOBYTE(v64) = v26; + return v63; +} +// 4E9608: using guessed type int std::numpunct::id; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (00475960) -------------------------------------------------------- +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 36))(this, a2, a3, a4, a5); +} + +//----- (00475970) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + char a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (00475990) -------------------------------------------------------- +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 28))(this, a2, a3, a4, a5); +} + +//----- (004759A0) -------------------------------------------------------- +int __thiscall std::num_put>::put(void *this, int a2, int a3, int a4, char a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 32))(this, a2, a3, a4, a5); +} + +//----- (004759B0) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + int a6) +{ + int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax + + v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 12); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return v6(a2, a3, a4, a5, a6); +} + +//----- (004759E0) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + int a6) +{ + int (__stdcall *v6)(int, int, _DWORD *, char, int); // eax + + v6 = *(int (__stdcall **)(int, int, _DWORD *, char, int))(*(_DWORD *)this + 16); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return v6(a2, a3, a4, a5, a6); +} + +//----- (00475A10) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + UDItype a6) +{ + int (__stdcall *v6)(int, int, _DWORD *, char, UDItype); // eax + + v6 = *(int (__stdcall **)(int, int, _DWORD *, char, UDItype))(*(_DWORD *)this + 20); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return ((int (__stdcall *)(int, int, _DWORD *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); +} + +//----- (00475A40) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + int a6, + int a7) +{ + int (__stdcall *v7)(int, int, _DWORD *, char, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, _DWORD *, char, int, int))(*(_DWORD *)this + 24); + if ( v7 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6, a7); + else + return v7(a2, a3, a4, a5, a6, a7); +} + +//----- (00475A70) -------------------------------------------------------- +int __stdcall std::num_put>::_M_pad( + char a1, + int a2, + _DWORD *a3, + char *a4, + _BYTE *a5, + int *a6) +{ + int result; // eax + + result = std::__pad>::_S_pad(a3, (void *)a1, a4, a5, a2, *a6); + *a6 = a2; + return result; +} + +//----- (00475AC0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) +{ + int v5; // edi + int result; // eax + + v5 = a3[3]; + a3[3] = v5 & 0xFFFFBDB5 | 0x208; + result = std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); + a3[3] = v5; + return result; +} + +//----- (00475B40) -------------------------------------------------------- +int *__stdcall std::num_put>::do_put(int *a1, int a2, _DWORD *a3, int a4, int a5) +{ + int v5; // eax + _DWORD *v7; // eax + int v8; // edx + int v9; // eax + size_t v10; // ecx + int v11; // eax + void *v12; // esp + void *v13; // esp + int v14; // edx + int v15; // eax + int v16; // eax + int v17; // eax + int v18; // eax + _BYTE v19[8]; // [esp+20h] [ebp-48h] BYREF + _BYTE *v20; // [esp+28h] [ebp-40h] + int v21; // [esp+2Ch] [ebp-3Ch] + int v22; // [esp+30h] [ebp-38h] + int v23; // [esp+34h] [ebp-34h] + int v24; // [esp+38h] [ebp-30h] + int *v25; // [esp+3Ch] [ebp-2Ch] + + v5 = a3[3]; + v23 = a4; + v24 = v5; + if ( (v5 & 1) == 0 ) + return (int *)std::num_put>::_M_insert_int( + (int)a1, + a2, + a3, + (char)a4, + (unsigned __int8)a5); + v22 = a5; + v25 = a1; + v7 = (_DWORD *)std::__use_cache>::operator()(a3 + 27); + if ( (_BYTE)a5 ) + { + v8 = v7[6]; + v22 = v7[5]; + v9 = a3[2]; + if ( v8 >= v9 ) + { +LABEL_6: + a3[2] = 0; + if ( !(_BYTE)a2 ) + (*(int (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v22, v8); + return v25; + } + } + else + { + v8 = v7[8]; + v22 = v7[7]; + v9 = a3[2]; + if ( v8 >= v9 ) + goto LABEL_6; + } + v21 = v8; + v25 = (int *)(v9 - v8); + v10 = v9 - v8; + v11 = 16 * ((unsigned int)(v9 - v8 + 27) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + v20 = v19; + memset(v19, (char)v23, v10); + v14 = v21; + a3[2] = 0; + if ( (v24 & 0xB0) == 32 ) + { + if ( !(_BYTE)a2 ) + { + v17 = *a1; + v24 = v14; + v18 = (*(int (__thiscall **)(int *, int, int))(v17 + 48))(a1, v22, v14); + if ( v24 == v18 ) + (*(void (__thiscall **)(int *, _BYTE *, int *))(*a1 + 48))(a1, v20, v25); + } + } + else + { + v24 = v14; + if ( !(_BYTE)a2 ) + { + v15 = (*(int (__thiscall **)(int *, _BYTE *, int *))(*a1 + 48))(a1, v20, v25); + if ( v25 == (int *)v15 ) + { + v16 = *a1; + v25 = (int *)v24; + (*(void (__thiscall **)(int *, int, int))(v16 + 48))(a1, v22, v24); + } + } + } + return a1; +} + +//----- (00475D30) -------------------------------------------------------- +int __thiscall std::num_put>::do_put( + void *this, + int a2, + int a3, + _DWORD *a4, + char a5, + double a6) +{ + return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 0, a6); +} + +//----- (00475D80) -------------------------------------------------------- +int __thiscall std::num_put>::do_put( + void *this, + int a2, + int a3, + std::__num_base *a4, + char a5, + long double a6) +{ + return std::num_put>::_M_insert_float(this, a2, a3, a4, a5, 76, a6); +} + +//----- (00475DD0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (00475DE0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put(int a1, int a2, _DWORD *a3, char a4, int a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (00475DF0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + _DWORD *a3, + char a4, + UDItype a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (00475E00) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + _DWORD *a3, + char a4, + int a5, + int a6) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5, a6); +} + +//----- (00475E10) -------------------------------------------------------- +int __stdcall std::num_put>::_M_group_int( + char *a1, + int a2, + __int16 a3, + int a4, + _WORD *a5, + _WORD *a6, + int *a7) +{ + int result; // eax + + result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5; + *a7 = result; + return result; +} + +//----- (00475E60) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + wchar_t *S1, + int a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + unsigned int v8; // edi + void *v9; // esp + void *v10; // esp + unsigned int v11; // eax + int v12; // ebx + wchar_t *v13; // edx + int v14; // esi + char v15; // si + int v17; // eax + void *v18; // esp + void *v19; // esp + int v20; // eax + void *v21; // esp + void *v22; // esp + char *v23; // eax + _WORD *v24; // eax + wchar_t v25; // ax + std::locale::_Impl *v26; // eax + std::locale::_Impl *v27; // esi + int v28; // [esp-34h] [ebp-8Ch] + int v29; // [esp-2Ch] [ebp-84h] + wchar_t v30; // [esp-20h] [ebp-78h] BYREF + _WORD v31[16]; // [esp-1Ch] [ebp-74h] BYREF + void (__cdecl *v32)(void *); // [esp+4h] [ebp-54h] + unsigned int v33[8]; // [esp+8h] [ebp-50h] BYREF + unsigned int v34; // [esp+28h] [ebp-30h] + int v35; // [esp+2Ch] [ebp-2Ch] + wchar_t *v36; // [esp+30h] [ebp-28h] + int v37; // [esp+34h] [ebp-24h] + int v38; // [esp+38h] [ebp-20h] + int v39; // [esp+3Ch] [ebp-1Ch] + + v38 = a1; + v37 = a2; + v35 = a4; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v26 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v32); + *((_DWORD *)v26 + 1) = 0; + v27 = v26; + *(_DWORD *)v26 = &off_4F65B0; + *((_DWORD *)v26 + 2) = 0; + *((_DWORD *)v26 + 3) = 0; + *((_BYTE *)v26 + 16) = 0; + *((_DWORD *)v26 + 5) = 0; + *((_DWORD *)v26 + 6) = 0; + *((_DWORD *)v26 + 7) = 0; + *((_DWORD *)v26 + 8) = 0; + *((_DWORD *)v26 + 9) = 0; + *((_BYTE *)v26 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v26, (int)(S1 + 54)); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v27, (const std::locale::facet *)v5, v33[0]); + v7 = *v6; + } + v39 = v7 + 40; + v8 = *((_DWORD *)S1 + 3); + v9 = alloca(64); + v10 = alloca(64); + v34 = v8 & 0x4A; + v11 = a5; + LOBYTE(v39) = v34 != 8 && v34 != 64; + if ( a5 <= 0 && (v8 & 0x4A) != 8 && (v8 & 0x4A) != 64 ) + v11 = -a5; + v36 = &v30; + v12 = std::__int_to_char(v33, v11, v7 + 40, v8, v39); + v13 = &v36[20 - v12]; + if ( !*(_BYTE *)(v7 + 16) ) + { + if ( (_BYTE)v39 ) + goto LABEL_8; +LABEL_18: + if ( (v8 & 0x200) != 0 && a5 ) + { + if ( v34 == 64 ) + { + v25 = *(_WORD *)(v7 + 48); + ++v12; + --v13; + } + else + { + v12 += 2; + v13 -= 2; + v13[1] = *(_WORD *)(v7 + 40 + 2 * (((v8 >> 14) & 1) + 2)); + v25 = *(_WORD *)(v7 + 48); + } + *v13 = v25; + } + goto LABEL_10; + } + v20 = 16 * ((unsigned int)(4 * v12 + 31) >> 4); + v21 = alloca(v20); + v22 = alloca(v20); + v28 = *(_DWORD *)(v7 + 12); + v23 = *(char **)(v7 + 8); + v36 = v31; + v24 = std::__add_grouping(v31, *(_WORD *)(v7 + 38), v23, v28, v13, &v13[v12]); + v13 = v36; + v12 = v24 - v36; + if ( !(_BYTE)v39 ) + goto LABEL_18; +LABEL_8: + if ( a5 < 0 ) + { + ++v12; + *--v13 = *(_WORD *)(v7 + 40); + } + else if ( (v8 & 0x800) != 0 ) + { + ++v12; + *--v13 = *(_WORD *)(v7 + 42); + v14 = *((_DWORD *)S1 + 2); + if ( v14 <= v12 ) + goto LABEL_11; + goto LABEL_15; + } +LABEL_10: + v14 = *((_DWORD *)S1 + 2); + if ( v14 <= v12 ) + goto LABEL_11; +LABEL_15: + v17 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); + v18 = alloca(v17); + v19 = alloca(v17); + v29 = v12; + v12 = v14; + std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v35, &v30, v13, v14, v29); + v13 = &v30; +LABEL_11: + *((_DWORD *)S1 + 2) = 0; + v15 = v37; + if ( !(_BYTE)v37 ) + v15 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v38 + 48))(v38, v13, v12) != v12; + LOBYTE(v39) = v15; + return v38; +} +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); +// 475E60: using guessed type unsigned int anonymous_1[8]; + +//----- (00476190) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + wchar_t *S1, + int a4, + int a5) +{ + int v5; // ebx + int *v6; // edi + int v7; // esi + unsigned int v8; // edi + void *v9; // esp + void *v10; // esp + int v11; // ebx + wchar_t *v12; // edx + int v13; // esi + char v14; // si + int v16; // eax + void *v17; // esp + void *v18; // esp + char *v19; // eax + _WORD *v20; // eax + wchar_t v21; // ax + int v22; // eax + void *v23; // esp + void *v24; // esp + std::locale::_Impl *v25; // eax + std::locale::_Impl *v26; // esi + int v27; // [esp-34h] [ebp-8Ch] + int v28; // [esp-2Ch] [ebp-84h] + wchar_t v29; // [esp-20h] [ebp-78h] BYREF + _WORD v30[16]; // [esp-1Ch] [ebp-74h] BYREF + void (__cdecl *v31)(void *); // [esp+4h] [ebp-54h] + unsigned int v32[7]; // [esp+8h] [ebp-50h] BYREF + int v33; // [esp+24h] [ebp-34h] + unsigned int v34; // [esp+28h] [ebp-30h] + int v35; // [esp+2Ch] [ebp-2Ch] + wchar_t *v36; // [esp+30h] [ebp-28h] + int v37; // [esp+34h] [ebp-24h] + bool v38; // [esp+3Bh] [ebp-1Dh] + int v39; // [esp+3Ch] [ebp-1Ch] + + v39 = a1; + v37 = a2; + v35 = a4; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v25 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v31); + *((_DWORD *)v25 + 1) = 0; + v26 = v25; + *(_DWORD *)v25 = &off_4F65B0; + *((_DWORD *)v25 + 2) = 0; + *((_DWORD *)v25 + 3) = 0; + *((_BYTE *)v25 + 16) = 0; + *((_DWORD *)v25 + 5) = 0; + *((_DWORD *)v25 + 6) = 0; + *((_DWORD *)v25 + 7) = 0; + *((_DWORD *)v25 + 8) = 0; + *((_DWORD *)v25 + 9) = 0; + *((_BYTE *)v25 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v25, (int)(S1 + 54)); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v26, (const std::locale::facet *)v5, v32[0]); + v7 = *v6; + } + v33 = v7 + 40; + v8 = *((_DWORD *)S1 + 3); + v9 = alloca(64); + v10 = alloca(64); + v34 = v8 & 0x4A; + v36 = &v29; + v38 = v34 != 8 && v34 != 64; + v11 = std::__int_to_char(v32, a5, v7 + 40, v8, v38); + v12 = &v36[20 - v11]; + if ( *(_BYTE *)(v7 + 16) ) + { + v16 = 16 * ((unsigned int)(4 * v11 + 31) >> 4); + v17 = alloca(v16); + v18 = alloca(v16); + v27 = *(_DWORD *)(v7 + 12); + v19 = *(char **)(v7 + 8); + v36 = v30; + v20 = std::__add_grouping(v30, *(_WORD *)(v7 + 38), v19, v27, v12, &v12[v11]); + v12 = v36; + v11 = v20 - v36; + if ( v38 ) + goto LABEL_5; + } + else if ( v38 ) + { + goto LABEL_5; + } + if ( (v8 & 0x200) != 0 && a5 ) + { + if ( v34 == 64 ) + { + v21 = *(_WORD *)(v7 + 48); + ++v11; + --v12; + } + else + { + v11 += 2; + v12 -= 2; + v12[1] = *(_WORD *)(v33 + 2 * (((v8 >> 14) & 1) + 2)); + v21 = *(_WORD *)(v7 + 48); + } + *v12 = v21; + } +LABEL_5: + v13 = *((_DWORD *)S1 + 2); + if ( v13 > v11 ) + { + v22 = 16 * ((unsigned int)(2 * v13 + 27) >> 4); + v23 = alloca(v22); + v24 = alloca(v22); + v28 = v11; + v11 = *((_DWORD *)S1 + 2); + std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v35, &v29, v12, v13, v28); + v12 = &v29; + } + *((_DWORD *)S1 + 2) = 0; + v14 = v37; + if ( !(_BYTE)v37 ) + v14 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v39 + 48))(v39, v12, v11) != v11; + v38 = v14; + return v39; +} +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); +// 476190: using guessed type unsigned int anonymous_1[7]; + +//----- (00476470) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + wchar_t *S1, + int a4, + UDItype a5) +{ + int v5; // ebx + int *v6; // esi + int v7; // edi + void *v8; // esp + void *v9; // esp + __int64 v10; // rax + int v11; // ebx + wchar_t *v12; // edx + int v13; // esi + char v14; // si + int v16; // eax + void *v17; // esp + void *v18; // esp + int v19; // eax + void *v20; // esp + void *v21; // esp + _WORD *v22; // eax + wchar_t v23; // ax + std::locale::_Impl *v24; // eax + std::locale::_Impl *v25; // edi + int v26; // [esp-4Ch] [ebp-A4h] + wchar_t v27[2]; // [esp-40h] [ebp-98h] BYREF + _WORD v28[32]; // [esp-3Ch] [ebp-94h] BYREF + void (__cdecl *v29)(void *); // [esp+4h] [ebp-54h] + unsigned int v30; // [esp+8h] [ebp-50h] + __int16 v31[8]; // [esp+10h] [ebp-48h] BYREF + int v32; // [esp+20h] [ebp-38h] + int v33; // [esp+24h] [ebp-34h] + int v34; // [esp+28h] [ebp-30h] + int v35; // [esp+2Ch] [ebp-2Ch] + int v36; // [esp+30h] [ebp-28h] + int v37; // [esp+34h] [ebp-24h] + UDItype n; // [esp+38h] [ebp-20h] + + v36 = a1; + v34 = a2; + v33 = a4; + n = a5; + v5 = std::locale::id::_M_id(&std::numpunct::id); + v6 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v24 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v29); + *((_DWORD *)v24 + 1) = 0; + v25 = v24; + *(_DWORD *)v24 = &off_4F65B0; + *((_DWORD *)v24 + 2) = 0; + *((_DWORD *)v24 + 3) = 0; + *((_BYTE *)v24 + 16) = 0; + *((_DWORD *)v24 + 5) = 0; + *((_DWORD *)v24 + 6) = 0; + *((_DWORD *)v24 + 7) = 0; + *((_DWORD *)v24 + 8) = 0; + *((_DWORD *)v24 + 9) = 0; + *((_BYTE *)v24 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v24, (int)(S1 + 54)); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v25, (const std::locale::facet *)v5, v30); + v7 = *v6; + } + v37 = v7 + 40; + v35 = *((_DWORD *)S1 + 3); + v8 = alloca(96); + v9 = alloca(96); + v32 = v35 & 0x4A; + v10 = n; + LOBYTE(v37) = v32 != 8 && v32 != 64; + if ( ((HIDWORD(n) | ((n - 1) >> 32)) & 0x80000000) != 0LL && (_BYTE)v37 ) + v10 = -(__int64)n; + v11 = std::__int_to_char(v31, v10, v7 + 40, v35, v37); + v12 = &v27[40 - v11]; + if ( !*(_BYTE *)(v7 + 16) ) + { + if ( (_BYTE)v37 ) + goto LABEL_8; +LABEL_18: + if ( (v35 & 0x200) != 0 && n ) + { + if ( v32 == 64 ) + { + v23 = *(_WORD *)(v7 + 48); + ++v11; + --v12; + } + else + { + v11 += 2; + v12 -= 2; + v12[1] = *(_WORD *)(v7 + 40 + 2 * ((((unsigned int)v35 >> 14) & 1) + 2)); + v23 = *(_WORD *)(v7 + 48); + } + *v12 = v23; + } + goto LABEL_10; + } + v19 = 16 * ((unsigned int)(4 * v11 + 31) >> 4); + v20 = alloca(v19); + v21 = alloca(v19); + v22 = std::__add_grouping(v28, *(_WORD *)(v7 + 38), *(char **)(v7 + 8), *(_DWORD *)(v7 + 12), v12, &v12[v11]); + v12 = v28; + v11 = v22 - v28; + if ( !(_BYTE)v37 ) + goto LABEL_18; +LABEL_8: + if ( (n & 0x8000000000000000LL) != 0LL ) + { + ++v11; + *--v12 = *(_WORD *)(v7 + 40); + } + else if ( (v35 & 0x800) != 0 ) + { + ++v11; + *--v12 = *(_WORD *)(v7 + 42); + v13 = *((_DWORD *)S1 + 2); + if ( v13 <= v11 ) + goto LABEL_11; + goto LABEL_15; + } +LABEL_10: + v13 = *((_DWORD *)S1 + 2); + if ( v13 <= v11 ) + goto LABEL_11; +LABEL_15: + v16 = 16 * ((unsigned int)(2 * v13 + 27) >> 4); + v17 = alloca(v16); + v18 = alloca(v16); + v26 = v11; + v11 = v13; + std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v33, v27, v12, v13, v26); + v12 = v27; +LABEL_11: + *((_DWORD *)S1 + 2) = 0; + v14 = v34; + if ( !(_BYTE)v34 ) + v14 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v36 + 48))(v36, v12, v11) != v11; + LOBYTE(n) = v14; + return v36; +} +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); +// 476470: using guessed type __int16 anonymous_2[8]; + +//----- (004767C0) -------------------------------------------------------- +int __stdcall std::num_put>::_M_insert_int( + int a1, + int a2, + wchar_t *S1, + int a4, + int a5, + int a6) +{ + int v6; // ebx + int *v7; // edi + int v8; // esi + unsigned int v9; // edi + void *v10; // esp + void *v11; // esp + int v12; // ebx + wchar_t *v13; // edx + int v14; // esi + char v15; // si + int v17; // eax + void *v18; // esp + void *v19; // esp + char *v20; // eax + _WORD *v21; // eax + wchar_t v22; // ax + int v23; // eax + void *v24; // esp + void *v25; // esp + std::locale::_Impl *v26; // eax + std::locale::_Impl *v27; // esi + int v28; // [esp-54h] [ebp-BCh] + int v29; // [esp-4Ch] [ebp-B4h] + wchar_t v30; // [esp-40h] [ebp-A8h] BYREF + _WORD v31[32]; // [esp-3Ch] [ebp-A4h] BYREF + void (__cdecl *v32)(void *); // [esp+4h] [ebp-64h] + unsigned int v33; // [esp+8h] [ebp-60h] + __int16 v34[14]; // [esp+10h] [ebp-58h] BYREF + int v35; // [esp+2Ch] [ebp-3Ch] + unsigned int v36; // [esp+30h] [ebp-38h] + int v37; // [esp+34h] [ebp-34h] + wchar_t *v38; // [esp+38h] [ebp-30h] + int v39; // [esp+3Ch] [ebp-2Ch] + bool v40; // [esp+43h] [ebp-25h] + unsigned __int64 v41; // [esp+44h] [ebp-24h] + int v42; // [esp+4Ch] [ebp-1Ch] + + v42 = a1; + v39 = a2; + v37 = a4; + v41 = __PAIR64__(a5, a6); + v6 = std::locale::id::_M_id(&std::numpunct::id); + v7 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v6); + v8 = *v7; + if ( !*v7 ) + { + v26 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v32); + *((_DWORD *)v26 + 1) = 0; + v27 = v26; + *(_DWORD *)v26 = &off_4F65B0; + *((_DWORD *)v26 + 2) = 0; + *((_DWORD *)v26 + 3) = 0; + *((_BYTE *)v26 + 16) = 0; + *((_DWORD *)v26 + 5) = 0; + *((_DWORD *)v26 + 6) = 0; + *((_DWORD *)v26 + 7) = 0; + *((_DWORD *)v26 + 8) = 0; + *((_DWORD *)v26 + 9) = 0; + *((_BYTE *)v26 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v26, (int)(S1 + 54)); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v27, (const std::locale::facet *)v6, v33); + v8 = *v7; + } + v35 = v8 + 40; + v9 = *((_DWORD *)S1 + 3); + v10 = alloca(96); + v11 = alloca(96); + v36 = v9 & 0x4A; + v38 = &v30; + v40 = v36 != 8 && v36 != 64; + v12 = std::__int_to_char(v34, __PAIR64__(v41, HIDWORD(v41)), v8 + 40, v9, v40); + v13 = &v38[40 - v12]; + if ( *(_BYTE *)(v8 + 16) ) + { + v17 = 16 * ((unsigned int)(4 * v12 + 31) >> 4); + v18 = alloca(v17); + v19 = alloca(v17); + v28 = *(_DWORD *)(v8 + 12); + v20 = *(char **)(v8 + 8); + v38 = v31; + v21 = std::__add_grouping(v31, *(_WORD *)(v8 + 38), v20, v28, v13, &v13[v12]); + v13 = v38; + v12 = v21 - v38; + if ( v40 ) + goto LABEL_5; + } + else if ( v40 ) + { + goto LABEL_5; + } + if ( (v9 & 0x200) != 0 && v41 ) + { + if ( v36 == 64 ) + { + v22 = *(_WORD *)(v8 + 48); + ++v12; + --v13; + } + else + { + v12 += 2; + v13 -= 2; + v13[1] = *(_WORD *)(v35 + 2 * (((v9 >> 14) & 1) + 2)); + v22 = *(_WORD *)(v8 + 48); + } + *v13 = v22; + } +LABEL_5: + v14 = *((_DWORD *)S1 + 2); + if ( v14 > v12 ) + { + v23 = 16 * ((unsigned int)(2 * v14 + 27) >> 4); + v24 = alloca(v23); + v25 = alloca(v23); + v29 = v12; + v12 = *((_DWORD *)S1 + 2); + std::__pad>::_S_pad(S1, (wchar_t *)(unsigned __int16)v37, &v30, v13, v14, v29); + v13 = &v30; + } + *((_DWORD *)S1 + 2) = 0; + v15 = v39; + if ( !(_BYTE)v39 ) + v15 = (*(int (__thiscall **)(int, wchar_t *, int))(*(_DWORD *)v42 + 48))(v42, v13, v12) != v12; + BYTE4(v41) = v15; + return v42; +} +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); +// 4767C0: using guessed type __int16 anonymous_2[14]; + +//----- (00476AB0) -------------------------------------------------------- +int __stdcall std::num_put>::_M_group_float( + char *a1, + int a2, + __int16 a3, + wchar_t *S2, + _WORD *a5, + _WORD *a6, + _DWORD *a7) +{ + int v7; // ebx + wchar_t *S1; // edx + int v9; // ebp + int v10; // eax + int result; // eax + + if ( S2 ) + { + v7 = S2 - a6; + S1 = std::__add_grouping(a5, a3, a1, a2, a6, S2); + v9 = S1 - a5; + v10 = 0; + if ( *a7 != v7 ) + { + wmemcpy(S1, S2, *a7 - v7); + v10 = *a7 - v7; + } + result = v9 + v10; + *a7 = result; + } + else + { + result = std::__add_grouping(a5, a3, a1, a2, a6, &a6[*a7]) - a5; + *a7 = result; + } + return result; +} + +//----- (00476B80) -------------------------------------------------------- +// bad sp value at call has been detected, the output may be wrong! +int __thiscall std::num_put>::_M_insert_float( + void *this, + int a2, + int a3, + wchar_t *S1, + int a5, + int a6, + double a7) +{ + int v7; // ebx + int *v8; // edi + int v9; // esi + void *v10; // esp + void *v11; // esp + int v12; // eax + int *v13; // ecx + int v14; // eax + void *v15; // esp + void *v16; // esp + int v17; // eax + char *v18; // edi + int v19; // esi + wchar_t *v20; // edx + wchar_t *v21; // eax + wchar_t *v22; // ecx + char v23; // al + bool v24; // zf + signed int v25; // ebx + int v27; // eax + void *v28; // esp + void *v29; // esp + int v30; // eax + void *v31; // esp + void *v32; // esp + wchar_t v33; // bx + int v34; // esi + wchar_t *v35; // ebx + int v36; // eax + void *v37; // esp + void *v38; // esp + int v39; // eax + int v40; // eax + void *v41; // esp + void *v42; // esp + std::locale::_Impl *v43; // eax + std::locale::_Impl *v44; // esi + int v45; // [esp-34h] [ebp-BCh] + int v46; // [esp-30h] [ebp-B8h] + int v47; // [esp-2Ch] [ebp-B4h] + int v48; // [esp-28h] [ebp-B0h] + char v49; // [esp-20h] [ebp-A8h] BYREF + char v50; // [esp-1Fh] [ebp-A7h] + char v51; // [esp-1Eh] [ebp-A6h] + void (__cdecl *v52)(void *); // [esp+4h] [ebp-84h] + unsigned int v53; // [esp+8h] [ebp-80h] + int v54; // [esp+14h] [ebp-74h] + wchar_t v55; // [esp+20h] [ebp-68h] BYREF + __int16 v56; // [esp+22h] [ebp-66h] BYREF + int v57; // [esp+2Ch] [ebp-5Ch] + void *v58; // [esp+30h] [ebp-58h] + int v59; // [esp+34h] [ebp-54h] + size_t BufferCount; // [esp+38h] [ebp-50h] + wchar_t *v61; // [esp+3Ch] [ebp-4Ch] + wchar_t *v62[2]; // [esp+40h] [ebp-48h] + int v63; // [esp+48h] [ebp-40h] + wchar_t *v64; // [esp+4Ch] [ebp-3Ch] + size_t MaxCount; // [esp+58h] [ebp-30h] BYREF + int *c_locale; // [esp+5Ch] [ebp-2Ch] BYREF + char v67[40]; // [esp+60h] [ebp-28h] BYREF + + v58 = this; + v63 = a2; + *(double *)v62 = a7; + v59 = a3; + v57 = a5; + BufferCount = a6; + v61 = S1 + 54; + v7 = std::locale::id::_M_id(&std::numpunct::id); + v8 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v7); + v64 = (wchar_t *)*v8; + if ( !v64 ) + { + v43 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v52); + *((_DWORD *)v43 + 1) = 0; + v44 = v43; + *(_DWORD *)v43 = &off_4F65B0; + *((_DWORD *)v43 + 2) = 0; + *((_DWORD *)v43 + 3) = 0; + *((_BYTE *)v43 + 16) = 0; + *((_DWORD *)v43 + 5) = 0; + *((_DWORD *)v43 + 6) = 0; + *((_DWORD *)v43 + 7) = 0; + *((_DWORD *)v43 + 8) = 0; + *((_DWORD *)v43 + 9) = 0; + *((_BYTE *)v43 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v43, (int)v61); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v44, (const std::locale::facet *)v7, v53); + v64 = (wchar_t *)*v8; + } + v9 = *((_DWORD *)S1 + 1); + if ( v9 < 0 ) + v9 = 6; + std::__num_base::_S_format_float((std::__num_base *)S1, (const std::ios_base *)v67, (char *)(char)BufferCount); + BufferCount = *((_DWORD *)S1 + 3); + v10 = alloca(64); + v11 = alloca(64); + if ( (BufferCount & 0x104) == 260 ) + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v39 = std::__convert_from_v(&c_locale, &v49, 0x2Du, v67, v62[0], v62[1]); + MaxCount = v39; + if ( v39 > 44 ) + { + BufferCount = v39 + 1; + v40 = 16 * ((unsigned int)(v39 + 28) >> 4); + v41 = alloca(v40); + v42 = alloca(v40); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v49, BufferCount, v67, v62[0], v62[1]); + } + } + else + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v12 = std::__convert_from_v(&c_locale, &v49, 0x2Du, v67, v9, v62[0], v62[1]); + MaxCount = v12; + if ( v12 > 44 ) + { + BufferCount = v12 + 1; + v27 = 16 * ((unsigned int)(v12 + 28) >> 4); + v28 = alloca(v27); + v29 = alloca(v27); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v49, BufferCount, v67, v9, v62[0], v62[1]); + } + } + v13 = (int *)std::use_facet>((int)v61); + v14 = 16 * ((2 * MaxCount + 27) >> 4); + v15 = alloca(v14); + v16 = alloca(v14); + v17 = *v13; + v18 = &v49; + v62[0] = (wchar_t *)&v49; + (*(void (__thiscall **)(int *, char *, char *, char *, int, int, int, int))(v17 + 44))( + v13, + &v49, + &v49 + MaxCount, + &v49, + v45, + v46, + v47, + v48); + v19 = MaxCount; + v20 = v62[0]; + if ( !MaxCount ) + { + if ( *((_BYTE *)v64 + 16) ) + { + v62[0] = 0; + goto LABEL_17; + } +LABEL_11: + v25 = *((_DWORD *)S1 + 2); + if ( v25 <= v19 ) + goto LABEL_12; + goto LABEL_20; + } + v61 = v62[0]; + v21 = (wchar_t *)memchr(&v49, 46, MaxCount); + v20 = v61; + v22 = v21; + v62[0] = v21; + v23 = *((_BYTE *)v64 + 16); + LOBYTE(BufferCount) = v23; + if ( !v22 ) + { + if ( v23 && (v19 <= 2 || v50 <= 57 && (unsigned __int8)(v51 - 48) <= 9u && v50 > 47) ) + goto LABEL_17; + goto LABEL_11; + } + v24 = (_BYTE)BufferCount == 0; + v62[0] = &v61[(char *)v62[0] - &v49]; + *v62[0] = v64[18]; + if ( v24 ) + goto LABEL_11; +LABEL_17: + v30 = 16 * ((unsigned int)(4 * v19 + 27) >> 4); + v31 = alloca(v30); + v32 = alloca(v30); + if ( ((v49 - 43) & 0xFD) != 0 ) + { + v35 = &v55; + v34 = 0; + } + else + { + v33 = *v20; + v18 = (char *)(v20 + 1); + MaxCount = v19 - 1; + v34 = 1; + v55 = v33; + v35 = (wchar_t *)&v56; + } + v61 = &v55; + std::num_put>::_M_group_float( + *((char **)v64 + 2), + *((_DWORD *)v64 + 3), + v64[19], + v62[0], + v35, + v18, + &MaxCount); + v19 = MaxCount + v34; + MaxCount = v19; + v18 = (char *)v61; + v25 = *((_DWORD *)S1 + 2); + if ( v25 <= v19 ) + goto LABEL_12; +LABEL_20: + v36 = 16 * ((unsigned int)(2 * v25 + 27) >> 4); + v37 = alloca(v36); + v38 = alloca(v36); + v54 = v19; + v19 = v25; + v64 = &v55; + std::__pad>::_S_pad( + S1, + (wchar_t *)(unsigned __int16)v57, + &v55, + (wchar_t *)v18, + v25, + v54); + MaxCount = v25; + v18 = (char *)v64; +LABEL_12: + *((_DWORD *)S1 + 2) = 0; + if ( !(_BYTE)v59 ) + (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v63 + 48))(v63, v18, v19); + return v63; +} +// 476CCD: bad sp value at call +// 476CA7: variable 'v45' is possibly undefined +// 476CA7: variable 'v46' is possibly undefined +// 476CA7: variable 'v47' is possibly undefined +// 476CA7: variable 'v48' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (00477060) -------------------------------------------------------- +// bad sp value at call has been detected, the output may be wrong! +int __fastcall std::num_put>::_M_insert_float( + int a1, + int a2, + int a3, + int a4, + wchar_t *S1, + int a6, + int a7, + long double a8) +{ + int v8; // ebx + int *v9; // edi + int v10; // esi + void *v11; // esp + void *v12; // esp + int v13; // eax + int *v14; // ecx + int v15; // eax + void *v16; // esp + void *v17; // esp + int v18; // eax + char *v19; // edi + int v20; // esi + wchar_t *v21; // edx + wchar_t *v22; // eax + wchar_t *v23; // ecx + char v24; // al + bool v25; // zf + signed int v26; // ebx + int v28; // eax + void *v29; // esp + void *v30; // esp + int v31; // eax + void *v32; // esp + void *v33; // esp + wchar_t v34; // bx + int v35; // esi + int *v36; // ebx + int v37; // eax + void *v38; // esp + void *v39; // esp + int v40; // eax + int v41; // eax + void *v42; // esp + void *v43; // esp + std::locale::_Impl *v44; // eax + std::locale::_Impl *v45; // esi + int v46; // [esp-44h] [ebp-BCh] + int v47; // [esp-40h] [ebp-B8h] + int v51; // [esp-3Ch] [ebp-B4h] + int v53; // [esp-38h] [ebp-B0h] + int v54; // [esp-34h] [ebp-ACh] + char v55; // [esp-30h] [ebp-A8h] BYREF + char v56; // [esp-2Fh] [ebp-A7h] + char v57; // [esp-2Eh] [ebp-A6h] + void (__cdecl *v58)(void *); // [esp+4h] [ebp-74h] + unsigned int v59; // [esp+8h] [ebp-70h] + int v60; // [esp+14h] [ebp-64h] + int v61[2]; // [esp+20h] [ebp-58h] BYREF + char v62; // [esp+2Bh] [ebp-4Dh] + int v63; // [esp+2Ch] [ebp-4Ch] + size_t BufferCount; // [esp+30h] [ebp-48h] + wchar_t *v65; // [esp+34h] [ebp-44h] + int v66; // [esp+38h] [ebp-40h] + int *v67; // [esp+3Ch] [ebp-3Ch] + size_t MaxCount; // [esp+48h] [ebp-30h] BYREF + int *c_locale; // [esp+4Ch] [ebp-2Ch] BYREF + char v70[40]; // [esp+50h] [ebp-28h] BYREF + + v61[1] = a1; + v66 = a3; + v63 = a4; + v61[0] = a6; + BufferCount = a7; + v65 = S1 + 54; + v8 = std::locale::id::_M_id(&std::numpunct::id); + v9 = (int *)(*(_DWORD *)(*((_DWORD *)S1 + 27) + 12) + 4 * v8); + v67 = (int *)*v9; + if ( !v67 ) + { + v44 = (std::locale::_Impl *)operator new((struct type_info *)0xA8, v58); + *((_DWORD *)v44 + 1) = 0; + v45 = v44; + *(_DWORD *)v44 = &off_4F65B0; + *((_DWORD *)v44 + 2) = 0; + *((_DWORD *)v44 + 3) = 0; + *((_BYTE *)v44 + 16) = 0; + *((_DWORD *)v44 + 5) = 0; + *((_DWORD *)v44 + 6) = 0; + *((_DWORD *)v44 + 7) = 0; + *((_DWORD *)v44 + 8) = 0; + *((_DWORD *)v44 + 9) = 0; + *((_BYTE *)v44 + 164) = 0; + std::__numpunct_cache::_M_cache((int)v44, (int)v65); + std::locale::_Impl::_M_install_cache(*((_DWORD *)S1 + 27), v45, (const std::locale::facet *)v8, v59); + v67 = (int *)*v9; + } + v10 = *((_DWORD *)S1 + 1); + if ( v10 < 0 ) + v10 = 6; + std::__num_base::_S_format_float((std::__num_base *)S1, (const std::ios_base *)v70, (char *)(char)BufferCount); + BufferCount = *((_DWORD *)S1 + 3); + v11 = alloca(80); + v12 = alloca(80); + if ( (BufferCount & 0x104) == 260 ) + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v40 = std::__convert_from_v(&c_locale, &v55, 0x36u, v70, *(_QWORD *)&a8, HIDWORD(a8)); + MaxCount = v40; + if ( v40 > 53 ) + { + BufferCount = v40 + 1; + v41 = 16 * ((unsigned int)(v40 + 28) >> 4); + v42 = alloca(v41); + v43 = alloca(v41); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v55, BufferCount, v70, *(_QWORD *)&a8, HIDWORD(a8)); + } + } + else + { + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + v13 = std::__convert_from_v(&c_locale, &v55, 0x36u, v70, v10, *(_QWORD *)&a8, HIDWORD(a8)); + MaxCount = v13; + if ( v13 > 53 ) + { + BufferCount = v13 + 1; + v28 = 16 * ((unsigned int)(v13 + 28) >> 4); + v29 = alloca(v28); + v30 = alloca(v28); + c_locale = (int *)std::locale::facet::_S_get_c_locale(); + MaxCount = std::__convert_from_v(&c_locale, &v55, BufferCount, v70, v10, *(_QWORD *)&a8, HIDWORD(a8)); + } + } + v14 = (int *)std::use_facet>((int)v65); + v15 = 16 * ((2 * MaxCount + 27) >> 4); + v16 = alloca(v15); + v17 = alloca(v15); + v18 = *v14; + v19 = &v55; + v65 = (wchar_t *)&v55; + (*(void (__thiscall **)(int *, char *, char *, char *, int, int, int, int, int))(v18 + 44))( + v14, + &v55, + &v55 + MaxCount, + &v55, + v46, + v47, + v51, + v53, + v54); + v20 = MaxCount; + v21 = v65; + if ( !MaxCount ) + { + if ( *((_BYTE *)v67 + 16) ) + { + v65 = 0; + goto LABEL_17; + } +LABEL_11: + v26 = *((_DWORD *)S1 + 2); + if ( v26 <= v20 ) + goto LABEL_12; + goto LABEL_20; + } + BufferCount = (size_t)v65; + v22 = (wchar_t *)memchr(&v55, 46, MaxCount); + v21 = (wchar_t *)BufferCount; + v23 = v22; + v65 = v22; + v24 = *((_BYTE *)v67 + 16); + v62 = v24; + if ( !v23 ) + { + if ( v24 && (v20 <= 2 || v56 <= 57 && (unsigned __int8)(v57 - 48) <= 9u && v56 > 47) ) + goto LABEL_17; + goto LABEL_11; + } + v25 = v62 == 0; + v65 = (wchar_t *)(BufferCount + 2 * ((char *)v65 - &v55)); + *v65 = *((_WORD *)v67 + 18); + if ( v25 ) + goto LABEL_11; +LABEL_17: + v31 = 16 * ((unsigned int)(4 * v20 + 27) >> 4); + v32 = alloca(v31); + v33 = alloca(v31); + if ( ((v55 - 43) & 0xFD) != 0 ) + { + v36 = v61; + v35 = 0; + } + else + { + v34 = *v21; + v19 = (char *)(v21 + 1); + MaxCount = v20 - 1; + v35 = 1; + LOWORD(v61[0]) = v34; + v36 = (int *)((char *)v61 + 2); + } + BufferCount = (size_t)v61; + std::num_put>::_M_group_float( + (char *)v67[2], + v67[3], + *((_WORD *)v67 + 19), + v65, + v36, + v19, + &MaxCount); + v20 = MaxCount + v35; + MaxCount = v20; + v19 = (char *)BufferCount; + v26 = *((_DWORD *)S1 + 2); + if ( v26 <= v20 ) + goto LABEL_12; +LABEL_20: + v37 = 16 * ((unsigned int)(2 * v26 + 27) >> 4); + v38 = alloca(v37); + v39 = alloca(v37); + v60 = v20; + v20 = v26; + v67 = v61; + std::__pad>::_S_pad( + S1, + (wchar_t *)LOWORD(v61[0]), + (wchar_t *)v61, + (wchar_t *)v19, + v26, + v60); + MaxCount = v26; + v19 = (char *)v67; +LABEL_12: + *((_DWORD *)S1 + 2) = 0; + if ( !(_BYTE)v63 ) + (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)v66 + 48))(v66, v19, v20); + return v66; +} +// 4771A7: bad sp value at call +// 477181: variable 'v46' is possibly undefined +// 477181: variable 'v47' is possibly undefined +// 477181: variable 'v51' is possibly undefined +// 477181: variable 'v53' is possibly undefined +// 477181: variable 'v54' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (00477530) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 36))(this, a2, a3, a4, a5); +} + +//----- (00477540) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (00477560) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 28))(this, a2, a3, a4, a5); +} + +//----- (00477570) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD))(*(_DWORD *)this + 32))(this, a2, a3, a4, a5); +} + +//----- (00477580) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + wchar_t *a4, + unsigned __int16 a5, + int a6) +{ + int (__stdcall *v6)(int, int, wchar_t *, unsigned __int16, int); // eax + + v6 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, int))(*(_DWORD *)this + 12); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return v6(a2, a3, a4, a5, a6); +} + +//----- (004775B0) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + wchar_t *a4, + unsigned __int16 a5, + int a6) +{ + int (__stdcall *v6)(int, int, wchar_t *, unsigned __int16, int); // eax + + v6 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, int))(*(_DWORD *)this + 16); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return v6(a2, a3, a4, a5, a6); +} + +//----- (004775E0) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + wchar_t *a4, + unsigned __int16 a5, + UDItype a6) +{ + int (__stdcall *v6)(int, int, wchar_t *, unsigned __int16, UDItype); // eax + + v6 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, UDItype))(*(_DWORD *)this + 20); + if ( v6 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int(a2, a3, a4, a5, a6); + else + return ((int (__stdcall *)(int, int, wchar_t *, _DWORD, _DWORD, _DWORD))v6)(a2, a3, a4, a5, a6, HIDWORD(a6)); +} + +//----- (00477610) -------------------------------------------------------- +int __thiscall std::num_put>::put( + void *this, + int a2, + int a3, + wchar_t *a4, + unsigned __int16 a5, + int a6, + int a7) +{ + int (__stdcall *v7)(int, int, wchar_t *, unsigned __int16, int, int); // eax + + v7 = *(int (__stdcall **)(int, int, wchar_t *, unsigned __int16, int, int))(*(_DWORD *)this + 24); + if ( v7 == std::num_put>::do_put ) + return std::num_put>::_M_insert_int( + a2, + a3, + a4, + a5, + a6, + a7); + else + return v7(a2, a3, a4, a5, a6, a7); +} + +//----- (00477640) -------------------------------------------------------- +int __stdcall std::num_put>::_M_pad( + unsigned __int16 a1, + int a2, + wchar_t *S1, + wchar_t *a4, + wchar_t *a5, + int *a6) +{ + int result; // eax + + result = std::__pad>::_S_pad(S1, (wchar_t *)a1, a4, a5, a2, *a6); + *a6 = a2; + return result; +} + +//----- (00477690) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *S1, + unsigned __int16 a4, + int a5) +{ + int v5; // edi + int result; // eax + + v5 = *((_DWORD *)S1 + 3); + *((_DWORD *)S1 + 3) = v5 & 0xFFFFBDB5 | 0x208; + result = std::num_put>::_M_insert_int(a1, a2, S1, a4, a5); + *((_DWORD *)S1 + 3) = v5; + return result; +} + +//----- (00477710) -------------------------------------------------------- +int *__stdcall std::num_put>::do_put( + int *a1, + int a2, + wchar_t *S1, + int a4, + int a5) +{ + int v5; // eax + _DWORD *v7; // eax + int v8; // edx + int v9; // eax + size_t v10; // ecx + int v11; // eax + void *v12; // esp + void *v13; // esp + int v14; // edx + int v15; // eax + int v16; // eax + int v17; // eax + int v18; // eax + wchar_t v19[4]; // [esp+20h] [ebp-48h] BYREF + wchar_t *v20; // [esp+28h] [ebp-40h] + int v21; // [esp+2Ch] [ebp-3Ch] + int v22; // [esp+30h] [ebp-38h] + int v23; // [esp+34h] [ebp-34h] + int v24; // [esp+38h] [ebp-30h] + int *v25; // [esp+3Ch] [ebp-2Ch] + + v5 = *((_DWORD *)S1 + 3); + v23 = a4; + v24 = v5; + if ( (v5 & 1) == 0 ) + return (int *)std::num_put>::_M_insert_int( + (int)a1, + a2, + S1, + (unsigned __int16)a4, + (unsigned __int8)a5); + v22 = a5; + v25 = a1; + v7 = (_DWORD *)std::__use_cache>::operator()((int *)S1 + 27); + if ( (_BYTE)a5 ) + { + v8 = v7[6]; + v22 = v7[5]; + v9 = *((_DWORD *)S1 + 2); + if ( v8 >= v9 ) + { +LABEL_6: + *((_DWORD *)S1 + 2) = 0; + if ( !(_BYTE)a2 ) + (*(int (__thiscall **)(int *, int, int))(*a1 + 48))(a1, v22, v8); + return v25; + } + } + else + { + v8 = v7[8]; + v22 = v7[7]; + v9 = *((_DWORD *)S1 + 2); + if ( v8 >= v9 ) + goto LABEL_6; + } + v21 = v8; + v25 = (int *)(v9 - v8); + v10 = v9 - v8; + v11 = 16 * ((unsigned int)(2 * (v9 - v8) + 27) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + v20 = v19; + wmemset(v19, v23, v10); + v14 = v21; + *((_DWORD *)S1 + 2) = 0; + if ( (v24 & 0xB0) == 32 ) + { + if ( !(_BYTE)a2 ) + { + v17 = *a1; + v24 = v14; + v18 = (*(int (__thiscall **)(int *, int, int))(v17 + 48))(a1, v22, v14); + if ( v24 == v18 ) + (*(void (__thiscall **)(int *, wchar_t *, int *))(*a1 + 48))(a1, v20, v25); + } + } + else + { + v24 = v14; + if ( !(_BYTE)a2 ) + { + v15 = (*(int (__thiscall **)(int *, wchar_t *, int *))(*a1 + 48))(a1, v20, v25); + if ( v25 == (int *)v15 ) + { + v16 = *a1; + v25 = (int *)v24; + (*(void (__thiscall **)(int *, int, int))(v16 + 48))(a1, v22, v24); + } + } + } + return a1; +} + +//----- (00477900) -------------------------------------------------------- +int __thiscall std::num_put>::do_put( + void *this, + int a2, + int a3, + wchar_t *S1, + unsigned __int16 a5, + double a6) +{ + return std::num_put>::_M_insert_float(this, a2, a3, S1, a5, 0, a6); +} + +//----- (00477950) -------------------------------------------------------- +int __thiscall std::num_put>::do_put( + void *this, + int a2, + int a3, + wchar_t *S1, + unsigned __int16 a5, + long double a6) +{ + return std::num_put>::_M_insert_float( + (int)this, + a3, + a2, + a3, + S1, + a5, + 76, + a6); +} + +//----- (004779A0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *a3, + unsigned __int16 a4, + int a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (004779B0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *a3, + unsigned __int16 a4, + int a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (004779C0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *a3, + unsigned __int16 a4, + UDItype a5) +{ + return std::num_put>::_M_insert_int(a1, a2, a3, a4, a5); +} + +//----- (004779D0) -------------------------------------------------------- +int __stdcall std::num_put>::do_put( + int a1, + int a2, + wchar_t *a3, + unsigned __int16 a4, + int a5, + int a6) +{ + return std::num_put>::_M_insert_int( + a1, + a2, + a3, + a4, + a5, + a6); +} + +//----- (004779E0) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( + _DWORD *this, + int a2) +{ + _DWORD *v2; // esi + _DWORD *v3; // edi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + return v2; + return v3; +} + +//----- (00477A40) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::find( + _DWORD *this, + int a2) +{ + _DWORD *v2; // esi + _DWORD *v3; // edi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + return v2; + return v3; +} + +//----- (00477AA0) -------------------------------------------------------- +const char *std::bad_cast::what() +{ + return "std::bad_cast"; +} + +//----- (00477AB0) -------------------------------------------------------- +int __fastcall std::ios_base::failure::what(int a1) +{ + return *(_DWORD *)(a1 + 4); +} + +//----- (00477AD0) -------------------------------------------------------- +int __stdcall std::messages::_M_convert_to_char(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00477AE0) -------------------------------------------------------- +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) +{ + *this = &unk_4E93FC; + return this; +} + +//----- (00477AF0) -------------------------------------------------------- +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) +{ + (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); + return this; +} + +//----- (00477B30) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3) +{ + int (__stdcall *v3)(int, int); // eax + + v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v3 == std::messages::do_open ) + return 0; + else + return v3(a2, a3); +} + +//----- (00477B50) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3, int a4) +{ + int (__stdcall *v4)(int, int); // edx + + v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v4 == std::messages::do_open ) + return 0; + else + return v4(a2, a3); +} + +//----- (00477B90) -------------------------------------------------------- +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) +{ + int (__stdcall *result)(int); // eax + + result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); + if ( result != std::messages::do_close ) + return (int (__stdcall *)(int))result(a2); + return result; +} +// 477BE0: using guessed type int __stdcall std::messages::do_close(int); + +//----- (00477BB0) -------------------------------------------------------- +unsigned int **__thiscall std::messages::do_get( + unsigned int **this, + int a2, + int a3, + int a4, + int a5, + unsigned int **a6) +{ + const std::string *v8; // [esp+4h] [ebp-18h] + + std::string::string(this, a6, v8); + return this; +} +// 477BBD: variable 'v8' is possibly undefined + +//----- (00477BD0) -------------------------------------------------------- +int __stdcall std::messages::do_open(int a1, int a2) +{ + return 0; +} + +//----- (00477BF0) -------------------------------------------------------- +int __stdcall std::messages::_M_convert_to_char(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (00477C00) -------------------------------------------------------- +_DWORD *__thiscall std::messages::_M_convert_from_char(_DWORD *this, int a2, int a3) +{ + *this = &unk_4E93EC; + return this; +} + +//----- (00477C10) -------------------------------------------------------- +void *__thiscall std::messages::get(void *this, int a2, int a3, int a4, int a5, int a6) +{ + (*(void (__thiscall **)(void *, int, int, int, int, int))(*(_DWORD *)a2 + 12))(this, a2, a3, a4, a5, a6); + return this; +} + +//----- (00477C50) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3) +{ + int (__stdcall *v3)(int, int); // eax + + v3 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v3 == std::messages::do_open ) + return 0; + else + return v3(a2, a3); +} + +//----- (00477C70) -------------------------------------------------------- +int __thiscall std::messages::open(void *this, int a2, int a3, int a4) +{ + int (__stdcall *v4)(int, int); // edx + + v4 = *(int (__stdcall **)(int, int))(*(_DWORD *)this + 8); + if ( v4 == std::messages::do_open ) + return 0; + else + return v4(a2, a3); +} + +//----- (00477CB0) -------------------------------------------------------- +int (__stdcall *__thiscall std::messages::close(void *this, int a2))(int) +{ + int (__stdcall *result)(int); // eax + + result = *(int (__stdcall **)(int))(*(_DWORD *)this + 16); + if ( result != std::messages::do_close ) + return (int (__stdcall *)(int))result(a2); + return result; +} +// 477D00: using guessed type int __stdcall std::messages::do_close(int); + +//----- (00477CD0) -------------------------------------------------------- +_DWORD *__thiscall std::messages::do_get(_DWORD *this, int a2, int a3, int a4, int a5, _DWORD *a6) +{ + std::wstring::basic_string(this, a6); + return this; +} + +//----- (00477CF0) -------------------------------------------------------- +int __stdcall std::messages::do_open(int a1, int a2) +{ + return 0; +} + +//----- (00477D10) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 477D10: using guessed type int var_D[3]; + +//----- (00477D40) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); + return this; +} +// 477D40: using guessed type int var_D[3]; + +//----- (00477D70) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); + return this; +} +// 477D70: using guessed type int var_D[3]; + +//----- (00477DA0) -------------------------------------------------------- +int __fastcall std::numpunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) + return *(unsigned __int8 *)(a1[2] + 36); + else + return v1(); +} + +//----- (00477DC0) -------------------------------------------------------- +int __fastcall std::numpunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) + return *(unsigned __int8 *)(a1[2] + 37); + else + return v1(); +} + +//----- (00477DE0) -------------------------------------------------------- +int __fastcall std::numpunct::do_decimal_point(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 36); +} + +//----- (00477DF0) -------------------------------------------------------- +int __fastcall std::numpunct::do_thousands_sep(int a1) +{ + return *(unsigned __int8 *)(*(_DWORD *)(a1 + 8) + 37); +} + +//----- (00477E00) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::numpunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 477E00: using guessed type int var_D[3]; + +//----- (00477E60) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::numpunct::do_truename ) + std::string::string(this, *(char **)(a2[2] + 20), (int)v5); + else + v3(a2); + return this; +} +// 477E60: using guessed type int var_D[3]; + +//----- (00477EC0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::numpunct::do_falsename ) + std::string::string(this, *(char **)(a2[2] + 28), (int)v5); + else + v3(a2); + return this; +} +// 477EC0: using guessed type int var_D[3]; + +//----- (00477F20) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_grouping(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::string::string(this, *(char **)(*(_DWORD *)(a2 + 8) + 8), (int)v4); + return this; +} +// 477F20: using guessed type int var_D[3]; + +//----- (00477F50) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_truename(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 20), (int)v4); + return this; +} +// 477F50: using guessed type int var_D[3]; + +//----- (00477F80) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::do_falsename(_DWORD *this, int a2) +{ + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wstring::basic_string(this, *(wchar_t **)(*(_DWORD *)(a2 + 8) + 28), (int)v4); + return this; +} +// 477F80: using guessed type int var_D[3]; + +//----- (00477FB0) -------------------------------------------------------- +int __fastcall std::numpunct::decimal_point(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 8); + if ( (char *)v1 == (char *)std::numpunct::do_decimal_point ) + return *(unsigned __int16 *)(a1[2] + 36); + else + return v1(); +} + +//----- (00477FD0) -------------------------------------------------------- +int __fastcall std::numpunct::thousands_sep(_DWORD *a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*a1 + 12); + if ( (char *)v1 == (char *)std::numpunct::do_thousands_sep ) + return *(unsigned __int16 *)(a1[2] + 38); + else + return v1(); +} + +//----- (00477FF0) -------------------------------------------------------- +int __fastcall std::numpunct::do_decimal_point(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 36); +} + +//----- (00478000) -------------------------------------------------------- +int __fastcall std::numpunct::do_thousands_sep(int a1) +{ + return *(unsigned __int16 *)(*(_DWORD *)(a1 + 8) + 38); +} + +//----- (00478010) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::grouping(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 16); + if ( (char *)v3 == (char *)std::numpunct::do_grouping ) + std::string::string(this, *(char **)(a2[2] + 8), (int)v5); + else + v3(a2); + return this; +} +// 478010: using guessed type int var_D[3]; + +//----- (00478070) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::truename(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 20); + if ( (char *)v3 == (char *)std::numpunct::do_truename ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 20), (int)v5); + else + v3(a2); + return this; +} +// 478070: using guessed type int var_D[3]; + +//----- (004780D0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::falsename(_DWORD *this, _DWORD *a2) +{ + void (__stdcall *v3)(_DWORD *); // edx + int v5[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = *(void (__stdcall **)(_DWORD *))(*a2 + 24); + if ( (char *)v3 == (char *)std::numpunct::do_falsename ) + std::wstring::basic_string(this, *(wchar_t **)(a2[2] + 28), (int)v5); + else + v3(a2); + return this; +} +// 4780D0: using guessed type int var_D[3]; + +//----- (00478130) -------------------------------------------------------- +int __fastcall std::time_get>::date_order(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); + if ( v1 == std::time_get>::do_date_order ) + return 0; + else + return v1(); +} + +//----- (00478150) -------------------------------------------------------- +int __stdcall std::time_get>::do_get_date( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + _DWORD *v6; // eax + int v7; // esi + unsigned __int64 v8; // rax + char v10; // [esp+2Ch] [ebp-20h] + char v11; // [esp+2Ch] [ebp-20h] + + v6 = std::use_facet>(a4 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + (char *)*(_DWORD *)(v6[2] + 8)); + v7 = v8; + BYTE4(v8) = HIDWORD(v8) == -1; + v10 = BYTE4(v8) & ((_DWORD)v8 != 0); + if ( v10 ) + { + BYTE4(v8) = 0; + if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) + { + LODWORD(v8) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 36))(v8, 0); + BYTE4(v8) = (_DWORD)v8 != -1 ? 0 : v10; + v7 = (_DWORD)v8 == -1 ? 0 : v7; + } + } + LOBYTE(v8) = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + LOBYTE(v8) = 0; + if ( a2[2] >= a2[3] ) + { + v11 = BYTE4(v8); + LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + BYTE4(v8) = v11; + LOBYTE(v8) = (_DWORD)v8 == -1; + } + } + } + if ( BYTE4(v8) == (_BYTE)v8 ) + *a5 |= 2u; + return v7; +} + +//----- (00478250) -------------------------------------------------------- +int __stdcall std::time_get>::do_get_time( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + _DWORD *v6; // eax + int v7; // esi + unsigned __int64 v8; // rax + char v10; // [esp+2Ch] [ebp-20h] + char v11; // [esp+2Ch] [ebp-20h] + + v6 = std::use_facet>(a4 + 108); + v8 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + (char *)*(_DWORD *)(v6[2] + 16)); + v7 = v8; + BYTE4(v8) = HIDWORD(v8) == -1; + v10 = BYTE4(v8) & ((_DWORD)v8 != 0); + if ( v10 ) + { + BYTE4(v8) = 0; + if ( *(_DWORD *)(v8 + 8) >= *(_DWORD *)(v8 + 12) ) + { + LODWORD(v8) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v8 + 36))(v8, 0); + BYTE4(v8) = (_DWORD)v8 != -1 ? 0 : v10; + v7 = (_DWORD)v8 == -1 ? 0 : v7; + } + } + LOBYTE(v8) = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + LOBYTE(v8) = 0; + if ( a2[2] >= a2[3] ) + { + v11 = BYTE4(v8); + LODWORD(v8) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + BYTE4(v8) = v11; + LOBYTE(v8) = (_DWORD)v8 == -1; + } + } + } + if ( BYTE4(v8) == (_BYTE)v8 ) + *a5 |= 2u; + return v7; +} + +//----- (00478350) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_year( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + int v7; // edx + _DWORD *v8; // ecx + _DWORD *v9; // ebp + int v10; // ebx + char v11; // bl + char v12; // al + int v14; // eax + char v15; // [esp+34h] [ebp-38h] + _DWORD *v16; // [esp+38h] [ebp-34h] + int v17; // [esp+48h] [ebp-24h] BYREF + int v18[8]; // [esp+4Ch] [ebp-20h] BYREF + + v18[0] = 0; + v8 = std::time_get>::_M_extract_num(a1, a2, a3, a4, &v17, 0, 9999, 4u, a5, v18); + v9 = v8; + if ( v18[0] ) + { + *a6 |= 4u; + } + else + { + v10 = v17 - 1900; + if ( v17 < 0 ) + v10 = v17 + 100; + *(_DWORD *)(a7 + 20) = v10; + } + v11 = v7 == -1; + v15 = v11 & (v8 != 0); + if ( v15 ) + { + v11 = 0; + if ( v8[2] >= v8[3] ) + { + v16 = v8; + v14 = (*(int (**)(void))(*v8 + 36))(); + v11 = v14 != -1 ? 0 : v15; + v9 = v14 == -1 ? 0 : v16; + } + } + v12 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v12 = 0; + if ( a3[2] >= a3[3] ) + v12 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; + } + } + if ( v11 == v12 ) + *a6 |= 2u; + return v9; +} +// 4783E1: variable 'v7' is possibly undefined +// 478350: using guessed type int var_20[8]; + +//----- (004784B0) -------------------------------------------------------- +int __fastcall std::time_get>::get_weekday(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); +} + +//----- (004784C0) -------------------------------------------------------- +int std::time_get>::do_date_order() +{ + return 0; +} + +//----- (004784D0) -------------------------------------------------------- +int __fastcall std::time_get>::get_monthname(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); +} + +//----- (004784E0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_num( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int *a5, + signed int a6, + int a7, + unsigned int a8, + int a9, + _DWORD *a10) +{ + int v10; // ebx + unsigned int v12; // ebp + int v13; // edi + char v14; // bl + _BYTE *v15; // eax + int v16; // ebx + int v17; // edx + int (__stdcall *v18)(unsigned __int8, int); // edx + unsigned int v19; // eax + bool v20; // dl + bool v21; // bl + int v22; // eax + int v24; // eax + unsigned int v26; // [esp+20h] [ebp-2Ch] + _BYTE *v27; // [esp+24h] [ebp-28h] + bool v29; // [esp+2Fh] [ebp-1Dh] + + v10 = 10; + v27 = std::use_facet>(a9 + 108); + if ( a8 != 2 ) + v10 = a8 == 4 ? 1000 : 1; + v26 = 0; + v12 = v10; + v13 = 0; + while ( 1 ) + { + v20 = a2 == -1; + v21 = v20 && a1 != 0; + if ( v21 ) + { + if ( a1[2] >= a1[3] ) + { + v24 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + v20 = a2 == -1; + v14 = v24 == -1 && v21; + a1 = v24 == -1 ? 0 : a1; + } + else + { + v14 = 0; + } + } + else + { + v14 = a2 == -1; + } + if ( a3 && a4 == -1 ) + { + if ( a3[2] >= a3[3] ) + { + v29 = v20; + v22 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v20 = v29; + if ( v22 == -1 ) + { + a3 = 0; + v14 ^= 1u; + } + } + } + else + { + v14 ^= a4 == -1; + } + if ( v26 >= a8 || !v14 ) + break; + if ( a1 && v20 ) + { + v15 = (_BYTE *)a1[2]; + if ( (unsigned int)v15 >= a1[3] ) + { + v15 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v15 == (_BYTE *)-1 ) + { + v16 = 255; + LOBYTE(v15) = -1; + a1 = 0; + } + else + { + v16 = (unsigned __int8)v15; + } + } + else + { + v16 = (unsigned __int8)*v15; + LOBYTE(v15) = *v15; + } + } + else + { + LOBYTE(v15) = a2; + v16 = (unsigned __int8)a2; + } + v17 = (char)v27[v16 + 285]; + if ( !(_BYTE)v17 ) + { + v18 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v27 + 32); + if ( v18 == std::ctype::do_narrow ) + { + if ( (_BYTE)v15 == 42 ) + goto LABEL_32; + } + else + { + LOBYTE(v15) = v18((unsigned __int8)v15, 42); + if ( (_BYTE)v15 == 42 ) + goto LABEL_32; + } + v17 = (char)v15; + v27[v16 + 285] = (_BYTE)v15; + } + if ( (unsigned __int8)(v17 - 48) > 9u ) + goto LABEL_32; + v13 = v17 + 10 * v13 - 48; + if ( (int)(v13 * v12) > a7 || (int)(v12 + v13 * v12) <= a6 ) + goto LABEL_32; + v19 = a1[2]; + v12 /= 0xAu; + if ( v19 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v19 + 1; + ++v26; + a2 = -1; + } + if ( v26 == a8 ) + { +LABEL_35: + *a5 = v13; + return a1; + } +LABEL_32: + if ( a8 == 4 && v26 == 2 ) + { + v13 -= 100; + goto LABEL_35; + } + *a10 |= 4u; + return a1; +} + +//----- (004787A0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_weekday( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // dl + char v14; // al + int v16; // eax + int v17; // eax + char v18; // [esp+38h] [ebp-64h] + char v19; // [esp+38h] [ebp-64h] + _DWORD *v20; // [esp+3Ch] [ebp-60h] + unsigned int v21; // [esp+40h] [ebp-5Ch] BYREF + int v22; // [esp+44h] [ebp-58h] BYREF + int v23[21]; // [esp+48h] [ebp-54h] BYREF + + v22 = 0; + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v23[0] = v7[18]; + v23[1] = v7[19]; + v23[2] = v7[20]; + v23[3] = v7[21]; + v23[4] = v7[22]; + v23[5] = v7[23]; + v23[6] = v7[24]; + v23[7] = v7[11]; + v23[8] = v7[12]; + v23[9] = v7[13]; + v23[10] = v7[14]; + v23[11] = v7[15]; + v8 = v7[16]; + v9 = v7[17]; + v23[12] = v8; + v23[13] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v21, + (int)v23, + 7u, + a5, + &v22); + v12 = v11; + if ( v22 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 24) = v21; + v13 = v10 == -1; + v18 = v13 & (v11 != 0); + if ( v18 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v20 = v11; + v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v17 != -1 ? 0 : v18; + v12 = v17 == -1 ? 0 : v20; + } + } + v14 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v14 = 0; + if ( a3[2] >= a3[3] ) + { + v19 = v13; + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v19; + v14 = v16 == -1; + } + } + } + if ( v13 == v14 ) + *a6 |= 2u; + return v12; +} +// 4788AF: variable 'v10' is possibly undefined + +//----- (00478970) -------------------------------------------------------- +int __stdcall std::time_get>::_M_extract_name( + unsigned __int64 a1, + _DWORD *a2, + int a3, + _DWORD *a4, + int a5, + _DWORD *a6, + int a7, + _DWORD *a8) +{ + int v8; // eax + void *v9; // esp + void *v10; // esp + char v11; // dl + unsigned __int8 v12; // bl + char v14; // dl + _DWORD *v15; // esi + int v16; // edx + unsigned int v17; // ebx + int v18; // edi + char v19; // al + int v20; // ecx + _DWORD *v21; // edi + _DWORD *v22; // edx + void *v23; // edi + size_t v24; // eax + unsigned int v25; // ebx + size_t v26; // eax + void *v27; // edi + unsigned int v28; // eax + char v29; // si + unsigned __int8 v30; // si + unsigned int i; // esi + char v32; // di + char v33; // al + char *v34; // eax + unsigned int v35; // eax + int v36; // eax + const char *v37; // edi + char *v38; // ebx + size_t v39; // eax + unsigned int v40; // esi + _DWORD **v41; // edi + unsigned __int8 v42; // bl + char v43; // bl + char v44; // al + _BYTE *v45; // eax + unsigned __int8 v46; // dl + char v47; // bl + int v48; // edx + bool v49; // zf + int v50; // eax + int v51; // esi + int v52; // eax + int v53; // eax + char *v54; // eax + int v55; // eax + int v56; // eax + int v57; // eax + int v58; // eax + int v59; // edx + int v60; // edx + int v61; // eax + _DWORD *v62; // [esp+10h] [ebp-38h] BYREF + _DWORD *v63; // [esp+14h] [ebp-34h] + void *v64; // [esp+18h] [ebp-30h] + unsigned __int8 v65; // [esp+1Fh] [ebp-29h] + unsigned __int64 v66; // [esp+20h] [ebp-28h] + _DWORD **v67; // [esp+28h] [ebp-20h] + unsigned int v68; // [esp+2Ch] [ebp-1Ch] + + v67 = (_DWORD **)HIDWORD(a1); + v66 = a1; + v62 = a2; + v64 = std::use_facet>(a7 + 108); + v8 = 16 * ((unsigned int)(4 * (_DWORD)a6 + 27) >> 4); + v9 = alloca(v8); + v10 = alloca(v8); + LOBYTE(v68) = HIDWORD(a1) == -1; + if ( ((unsigned __int8)v68 & ((_DWORD)a1 != 0)) != 0 ) + { + if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) + { + v65 = v68 & ((_DWORD)a1 != 0); + v55 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); + v11 = v55 != -1 ? 0 : v65; + LODWORD(v66) = v55 == -1 ? 0 : v66; + } + else + { + v11 = 0; + } + } + else + { + v11 = v68; + } + v65 = a3 == -1; + if ( (v65 & (a2 != 0)) != 0 ) + { + if ( a2[2] >= a2[3] ) + { + v56 = *a2; + LOBYTE(v63) = v11; + v57 = (*(int (__fastcall **)(_DWORD *))(v56 + 36))(a2); + v11 = (char)v63; + v12 = v57 == -1 && v65 & (a2 != 0); + v62 = v57 == -1 ? 0 : a2; + } + else + { + v12 = 0; + } + } + else + { + v12 = v65; + } + if ( v11 == v12 + || ((_DWORD)v66 && (_BYTE)v68 + ? ((v54 = *(char **)(v66 + 8), (unsigned int)v54 >= *(_DWORD *)(v66 + 12)) + ? (v58 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66), + v14 = v58 != -1 ? v58 : -1, + LODWORD(v66) = v58 == -1 ? 0 : v66) + : (v14 = *v54)) + : (v14 = (char)v67), + !a6) ) + { +LABEL_6: + *a8 |= 4u; + return v66; + } + LOBYTE(v68) = v14; + v15 = 0; + v16 = a5; + v17 = 0; + v67 = &v62; + v18 = (int)v64; + do + { + while ( 1 ) + { + v20 = **(char **)(v16 + 4 * (_DWORD)v15); + if ( (_BYTE)v20 == (_BYTE)v68 ) + break; + a5 = v16; + v19 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v18 + 8))(v18, v20); + v16 = a5; + if ( v19 == (_BYTE)v68 ) + break; + v15 = (_DWORD *)((char *)v15 + 1); + if ( a6 == v15 ) + goto LABEL_16; + } + v67[v17++] = v15; + v15 = (_DWORD *)((char *)v15 + 1); + } + while ( a6 != v15 ); +LABEL_16: + v21 = v67; + v67 = 0; + if ( v17 <= 1 ) + goto LABEL_40; + v22 = v21; + do + { + v23 = (void *)*v22; + v63 = v22; + v24 = strlen(*(const char **)(a5 + 4 * (_DWORD)v23)); + HIDWORD(v66) = v17; + v25 = 1; + v68 = v24; + v64 = v23; + do + { + v26 = strlen(*(const char **)(a5 + 4 * v63[v25])); + if ( v68 > v26 ) + v68 = v26; + ++v25; + } + while ( v25 < HIDWORD(v66) ); + v22 = v63; + v17 = HIDWORD(v66); + v27 = v64; + v28 = *(_DWORD *)(v66 + 8); + if ( v28 >= *(_DWORD *)(v66 + 12) ) + { + HIDWORD(v66) = v63; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 40))(v66); + v22 = (_DWORD *)HIDWORD(v66); + } + else + { + *(_DWORD *)(v66 + 8) = v28 + 1; + } + v67 = (_DWORD **)((char *)v67 + 1); + if ( (unsigned int)v67 >= v68 ) + goto LABEL_58; + LOBYTE(v68) = 0; + if ( *(_DWORD *)(v66 + 8) >= *(_DWORD *)(v66 + 12) ) + { + v51 = v66; + v52 = *(_DWORD *)v66; + HIDWORD(v66) = v22; + v53 = (*(int (__fastcall **)(_DWORD))(v52 + 36))(v66); + v22 = (_DWORD *)HIDWORD(v66); + LOBYTE(v68) = v53 == -1; + LODWORD(v66) = ((unsigned __int8)v68 - 1) & v51; + } + v29 = v65 & (v62 != 0); + if ( v29 ) + { + if ( v62[2] < v62[3] ) + { + if ( !(_BYTE)v68 ) + goto LABEL_58; + goto LABEL_30; + } + HIDWORD(v66) = v22; + v50 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); + v22 = (_DWORD *)HIDWORD(v66); + v30 = v50 != -1 ? 0 : v29; + v62 = v50 == -1 ? 0 : v62; + } + else + { + v30 = v65; + } + if ( v30 == (_BYTE)v68 ) + goto LABEL_58; +LABEL_30: + for ( i = 0; ; v27 = (void *)v22[i] ) + { + v32 = *((_BYTE *)v67 + *(_DWORD *)(a5 + 4 * (_DWORD)v27)); + v33 = -1; + if ( (_DWORD)v66 ) + { + v34 = *(char **)(v66 + 8); + if ( (unsigned int)v34 >= *(_DWORD *)(v66 + 12) ) + { + v68 = (unsigned int)v22; + v48 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v66 + 36))(v66); + v33 = v48 != -1 ? v48 : -1; + v49 = v48 == -1; + v22 = (_DWORD *)v68; + LODWORD(v66) = v49 ? 0 : v66; + } + else + { + v33 = *v34; + } + } + if ( v33 == v32 ) + break; + v22[i] = v22[--v17]; + if ( v17 <= i ) + goto LABEL_38; +LABEL_32: + ; + } + if ( v17 > ++i ) + goto LABEL_32; +LABEL_38: + ; + } + while ( v17 > 1 ); + HIDWORD(v66) = -1; + v21 = v22; +LABEL_40: + if ( v17 != 1 ) + goto LABEL_6; + v35 = *(_DWORD *)(v66 + 8); + if ( v35 >= *(_DWORD *)(v66 + 12) ) + std::streambuf::sbumpc(v66); + else + *(_DWORD *)(v66 + 8) = v35 + 1; + v36 = *v21; + v37 = *(const char **)(a5 + 4 * *v21); + HIDWORD(v66) = v36; + v38 = (char *)v67 + 1; + v39 = strlen(v37); + v67 = (_DWORD **)v39; + if ( (unsigned int)v38 < v39 ) + { + v68 = (unsigned int)v37; + v40 = v66; + v41 = (_DWORD **)v38; + while ( 1 ) + { + while ( 1 ) + { + v46 = 0; + if ( *(_DWORD *)(v40 + 8) >= *(_DWORD *)(v40 + 12) ) + { + v46 = (*(int (__fastcall **)(unsigned int, _DWORD))(*(_DWORD *)v40 + 36))(v40, 0) == -1; + v40 &= v46 - 1; + } + v47 = v65 & (v62 != 0); + if ( v47 ) + { + if ( v62[2] >= v62[3] ) + { + LOBYTE(v66) = v46; + v61 = (*(int (__fastcall **)(_DWORD *))(*v62 + 36))(v62); + v46 = v66; + v42 = v61 != -1 ? 0 : v47; + v62 = v61 == -1 ? 0 : v62; + } + else + { + v42 = 0; + } + } + else + { + v42 = v65; + } + if ( v42 == v46 ) + { +LABEL_73: + v66 = v40 | 0xFFFFFFFF00000000LL; + goto LABEL_6; + } + v43 = *((_BYTE *)v41 + v68); + v44 = -1; + if ( v40 ) + break; +LABEL_48: + if ( v43 != v44 ) + goto LABEL_73; + v45 = *(_BYTE **)(v40 + 8); + if ( (unsigned int)v45 < *(_DWORD *)(v40 + 12) ) + goto LABEL_50; + v41 = (_DWORD **)((char *)v41 + 1); + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 40))(v40); + if ( v41 == v67 ) + { +LABEL_75: + LODWORD(v66) = v40; + goto LABEL_76; + } + } + v45 = *(_BYTE **)(v40 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(v40 + 12) ) + { + v60 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v40 + 36))(v40); + v44 = v60 != -1 ? v60 : -1; + v40 &= (v60 == -1) - 1; + goto LABEL_48; + } + if ( v43 != *v45 ) + goto LABEL_73; +LABEL_50: + v41 = (_DWORD **)((char *)v41 + 1); + *(_DWORD *)(v40 + 8) = v45 + 1; + if ( v41 == v67 ) + goto LABEL_75; + } + } + if ( v38 != (char *)v39 ) + { +LABEL_58: + HIDWORD(v66) = -1; + goto LABEL_6; + } +LABEL_76: + v59 = HIDWORD(v66); + HIDWORD(v66) = -1; + *a4 = v59; + return v66; +} + +//----- (00478EF0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_monthname( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // edx + int v9; // edx + int v10; // edx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // dl + char v14; // al + int v16; // eax + int v17; // eax + char v18; // [esp+38h] [ebp-94h] + char v19; // [esp+38h] [ebp-94h] + _DWORD *v20; // [esp+3Ch] [ebp-90h] + unsigned int v21; // [esp+48h] [ebp-84h] BYREF + int v22; // [esp+4Ch] [ebp-80h] BYREF + int v23[31]; // [esp+50h] [ebp-7Ch] BYREF + + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v23[0] = v7[37]; + v23[1] = v7[38]; + v23[2] = v7[39]; + v23[3] = v7[40]; + v23[4] = v7[41]; + v23[5] = v7[42]; + v23[6] = v7[43]; + v23[7] = v7[44]; + v23[8] = v7[45]; + v23[9] = v7[46]; + v23[10] = v7[47]; + v23[11] = v7[48]; + v23[12] = v7[25]; + v23[13] = v7[26]; + v23[14] = v7[27]; + v23[15] = v7[28]; + v8 = v7[29]; + v22 = 0; + v23[16] = v8; + v23[17] = v7[30]; + v23[18] = v7[31]; + v23[19] = v7[32]; + v23[20] = v7[33]; + v23[21] = v7[34]; + v9 = v7[35]; + v23[23] = v7[36]; + v23[22] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v21, + (int)v23, + 0xCu, + a5, + &v22); + v12 = v11; + if ( v22 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 16) = v21; + v13 = v10 == -1; + v18 = v13 & (v11 != 0); + if ( v18 ) + { + v13 = 0; + if ( v11[2] >= v11[3] ) + { + v20 = v11; + v17 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*v11 + 36))(v11, 0); + v13 = v17 != -1 ? 0 : v18; + v12 = v17 == -1 ? 0 : v20; + } + } + v14 = a4 == -1; + if ( a3 ) + { + if ( a4 == -1 ) + { + v14 = 0; + if ( a3[2] >= a3[3] ) + { + v19 = v13; + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v13 = v19; + v14 = v16 == -1; + } + } + } + if ( v13 == v14 ) + *a6 |= 2u; + return v12; +} +// 47909C: variable 'v10' is possibly undefined + +//----- (00479160) -------------------------------------------------------- +unsigned __int64 __stdcall std::time_get>::_M_extract_via_format( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char *a7) +{ + char *v7; // ebx + _DWORD *v8; // eax + unsigned int v9; // ebx + _BYTE *v10; // esi + unsigned __int64 v11; // rax + _DWORD *v12; // ecx + char v13; // dl + char v14; // di + unsigned int v15; // edi + char *v16; // ebp + int v17; // edx + char v18; // al + char v19; // cl + int (__stdcall *v20)(unsigned __int8, int); // eax + int v21; // ebp + char v22; // dl + char v23; // al + int (__stdcall *v24)(unsigned __int8, int); // edx + char v25; // dl + int v26; // eax + int v27; // eax + char v28; // bl + int v29; // eax + int v30; // ebx + char v31; // al + int (__stdcall *v32)(unsigned __int8, int); // edx + _BYTE *v34; // eax + unsigned __int64 v35; // rax + int v36; // edx + _DWORD *v37; // eax + int v38; // eax + unsigned __int64 v39; // rax + unsigned __int64 v40; // rax + char v41; // bl + char v42; // al + char v43; // bl + char v44; // al + unsigned __int64 v45; // rax + unsigned __int64 v46; // rax + char *v47; // eax + _DWORD *v48; // eax + unsigned __int64 v49; // rax + unsigned __int64 v50; // rax + unsigned __int64 v51; // rax + unsigned int v52; // eax + unsigned __int64 v53; // rax + int v54; // eax + int v55; // ebx + char v56; // dl + int (__stdcall *v57)(unsigned __int8, int); // ebp + int v58; // eax + int v59; // ebx + char v60; // dl + int (__stdcall *v61)(unsigned __int8, int); // ebp + unsigned int v62; // eax + unsigned __int64 v63; // rax + _DWORD *v64; // eax + int v65; // eax + unsigned __int64 v66; // rax + _DWORD *v67; // eax + char *v68; // edx + char *Stra; // [esp+0h] [ebp-9Ch] + char *Str; // [esp+0h] [ebp-9Ch] + unsigned int v71; // [esp+30h] [ebp-6Ch] + _DWORD *v72; // [esp+38h] [ebp-64h] + char v73; // [esp+3Ch] [ebp-60h] + int v74; // [esp+3Ch] [ebp-60h] + int v75; // [esp+48h] [ebp-54h] BYREF + int v76; // [esp+4Ch] [ebp-50h] BYREF + int v77; // [esp+50h] [ebp-4Ch] BYREF + int v78; // [esp+54h] [ebp-48h] + int v79; // [esp+58h] [ebp-44h] + int v80; // [esp+5Ch] [ebp-40h] + int v81; // [esp+60h] [ebp-3Ch] + int v82; // [esp+64h] [ebp-38h] + int v83; // [esp+68h] [ebp-34h] + int v84; // [esp+6Ch] [ebp-30h] + int v85; // [esp+70h] [ebp-2Ch] + int v86; // [esp+74h] [ebp-28h] + int v87; // [esp+78h] [ebp-24h] + int v88; // [esp+7Ch] [ebp-20h] + + v7 = (char *)(a4 + 108); + v8 = std::use_facet>(a4 + 108); + Stra = v7; + v9 = 0; + v72 = v8; + v10 = std::use_facet>((int)Stra); + v11 = __PAIR64__(HIDWORD(a1), strlen(a7)); + v75 = 0; + v71 = v11; + v12 = (_DWORD *)a1; + while ( 1 ) + { + v13 = HIDWORD(v11) == -1; + v14 = v13 & (v12 != 0); + if ( v14 ) + { + v13 = 0; + if ( v12[2] >= v12[3] ) + { + v29 = (*(int (__thiscall **)(_DWORD *, char *))(*v12 + 36))(v12, Str); + v13 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v13 = v14; + } + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v73 = v13; + v26 = (*(int (**)(void))(*a2 + 36))(); + v13 = v73; + if ( v26 == -1 ) + { + a2 = 0; + v13 = v73 ^ 1; + } + } + } + else + { + v13 ^= a3 == -1; + } + if ( v9 >= v71 || !v13 ) + break; + if ( v75 ) + goto LABEL_43; + v15 = v9 + 1; + v16 = &a7[v9]; + v17 = (unsigned __int8)a7[v9]; + v18 = v10[v17 + 285]; + v19 = a7[v9]; + if ( v18 ) + { +LABEL_14: + if ( v18 != 37 ) + goto LABEL_27; + v21 = (unsigned __int8)a7[v15]; + v22 = v10[v21 + 285]; + v23 = a7[v15]; + if ( !v22 ) + { + v24 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v24 != std::ctype::do_narrow ) + v23 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v24)(v10, v23, 0); + if ( !v23 ) + { +LABEL_39: + v75 |= 4u; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + goto LABEL_40; + } + v10[v21 + 285] = v23; + v22 = v23; + } + v76 = 0; + if ( (v22 == 69 || v22 == 79) + && (v15 = v9 + 2, v30 = (unsigned __int8)a7[v9 + 2], v22 = v10[v30 + 285], v31 = v30, !v22) ) + { + v32 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v32 != std::ctype::do_narrow ) + v31 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v32)(v10, (char)v30, 0); + if ( !v31 ) + goto LABEL_39; + v10[v30 + 285] = v31; + v25 = v31 - 65; + if ( (unsigned __int8)(v31 - 65) > 0x38u ) + goto LABEL_39; + } + else + { + v25 = v22 - 65; + } + switch ( v25 ) + { + case 0: + v67 = (_DWORD *)v72[2]; + v77 = v67[11]; + v78 = v67[12]; + v79 = v67[13]; + v80 = v67[14]; + v81 = v67[15]; + v82 = v67[16]; + v65 = v67[17]; + goto LABEL_114; + case 1: + v48 = (_DWORD *)v72[2]; + v77 = v48[25]; + v78 = v48[26]; + v79 = v48[27]; + v80 = v48[28]; + v81 = v48[29]; + v82 = v48[30]; + v83 = v48[31]; + v84 = v48[32]; + v85 = v48[33]; + v86 = v48[34]; + v87 = v48[35]; + v38 = v48[36]; + goto LABEL_57; + case 2: + case 24: + case 56: + LODWORD(v35) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 0, + 9999, + 4u, + a4, + &v75); + a1 = v35; + if ( v75 ) + goto LABEL_69; + v36 = v76 - 1900; + if ( v76 < 0 ) + v36 = v76 + 100; + v12 = (_DWORD *)a1; + a6[5] = v36; + HIDWORD(v11) = HIDWORD(a1); + break; + case 3: + std::ctype::widen(v10, "%m/%d/%y", "%H:%M", &v77); + v47 = (char *)&v77; + goto LABEL_72; + case 7: + LODWORD(v49) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 0, + 23, + 2u, + a4, + &v75); + goto LABEL_76; + case 8: + LODWORD(v49) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 1, + 12, + 2u, + a4, + &v75); +LABEL_76: + a1 = v49; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[2] = v76; + break; + case 12: + LODWORD(v50) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 0, + 59, + 2u, + a4, + &v75); + a1 = v50; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[1] = v76; + break; + case 17: + std::ctype::widen(v10, "%H:%M", "%H:%M:%S", &v77); + v47 = (char *)&v77; + goto LABEL_72; + case 18: + LODWORD(v51) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 0, + 61, + 2u, + a4, + &v75); + a1 = v51; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + *a6 = v76; + break; + case 19: + std::ctype::widen(v10, "%H:%M:%S", byte_4ED356, &v77); + v47 = (char *)&v77; + goto LABEL_72; + case 23: + v47 = *(char **)(v72[2] + 16); + goto LABEL_72; + case 25: + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 1) == 0 ) + goto LABEL_39; + LODWORD(v40) = std::time_get>::_M_extract_name( + a1, + a2, + a3, + &v77, + (int)std::__timepunct_cache::_S_timezones, + (_DWORD *)0xE, + a4, + &v75); + a1 = v40; + LOBYTE(v11) = std::istreambuf_iterator::equal(&a1, (int)&a2); + HIDWORD(v11) = HIDWORD(a1); + if ( (_BYTE)v11 || v77 | v75 ) + goto LABEL_70; + v41 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + if ( v10[28] ) + { + v42 = v10[74]; + } + else + { + std::ctype::_M_widen_init((int)v10); + v42 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 45); + } + if ( v41 == v42 + || ((v43 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)), !v10[28]) + ? (std::ctype::_M_widen_init((int)v10), + v44 = (*(int (__thiscall **)(_BYTE *, int))(*(_DWORD *)v10 + 24))(v10, 43), + Str = v68) + : (char *)(v44 = v10[72]), + v43 == v44) ) + { + LODWORD(v45) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v77, + 0, + 23, + 2u, + a4, + &v75); + a1 = v45; + LODWORD(v46) = std::time_get>::_M_extract_num( + (_DWORD *)v45, + SHIDWORD(v45), + a2, + a3, + &v77, + 0, + 59, + 2u, + a4, + &v75); + a1 = v46; + } +LABEL_69: + HIDWORD(v11) = HIDWORD(a1); +LABEL_70: + v12 = (_DWORD *)a1; + break; + case 32: + v64 = (_DWORD *)v72[2]; + v77 = v64[18]; + v78 = v64[19]; + v79 = v64[20]; + v80 = v64[21]; + v81 = v64[22]; + v82 = v64[23]; + v65 = v64[24]; +LABEL_114: + v83 = v65; + LODWORD(v66) = std::time_get>::_M_extract_name( + a1, + a2, + a3, + &v76, + (int)&v77, + (_DWORD *)7, + a4, + &v75); + a1 = v66; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[6] = v76; + break; + case 33: + case 39: + v37 = (_DWORD *)v72[2]; + v77 = v37[37]; + v78 = v37[38]; + v79 = v37[39]; + v80 = v37[40]; + v81 = v37[41]; + v82 = v37[42]; + v83 = v37[43]; + v84 = v37[44]; + v85 = v37[45]; + v86 = v37[46]; + v87 = v37[47]; + v38 = v37[48]; +LABEL_57: + v88 = v38; + LODWORD(v39) = std::time_get>::_M_extract_name( + a1, + a2, + a3, + &v76, + (int)&v77, + (_DWORD *)0xC, + a4, + &v75); + a1 = v39; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[4] = v76; + break; + case 34: + v47 = *(char **)(v72[2] + 24); + goto LABEL_72; + case 35: + LODWORD(v63) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 1, + 31, + 2u, + a4, + &v75); + a1 = v63; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[3] = v76; + break; + case 36: + if ( (*(_BYTE *)(*((_DWORD *)v10 + 6) + + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 0x20) != 0 ) + { + v52 = *(_DWORD *)(a1 + 8); + if ( v52 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v52 + 1; + HIDWORD(a1) = -1; + LODWORD(v11) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + -1, + a2, + a3, + &v76, + 1, + 9, + 1u, + a4, + &v75); + } + else + { + LODWORD(v11) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 10, + 31, + 2u, + a4, + &v75); + } + a1 = v11; + v12 = (_DWORD *)v11; + if ( !v75 ) + a6[3] = v76; + break; + case 44: + LODWORD(v53) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v76, + 1, + 12, + 2u, + a4, + &v75); + a1 = v53; + if ( v75 ) + goto LABEL_69; + HIDWORD(v11) = HIDWORD(a1); + v12 = (_DWORD *)a1; + a6[4] = v76 - 1; + break; + case 45: + v54 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v55 = (unsigned __int8)v54; + v56 = v10[(unsigned __int8)v54 + 285]; + if ( v56 ) + goto LABEL_99; + v56 = v54; + v57 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v57 != std::ctype::do_narrow ) + v56 = ((int (__fastcall *)(_BYTE *, int, _DWORD, _DWORD))v57)(v10, v54, (char)v54, 0); + if ( !v56 ) + goto LABEL_117; + v10[v55 + 285] = v56; +LABEL_99: + v12 = (_DWORD *)a1; + if ( v56 != 10 ) + goto LABEL_100; + goto LABEL_107; + case 51: + v58 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1)); + v59 = (unsigned __int8)v58; + v60 = v10[(unsigned __int8)v58 + 285]; + if ( v60 ) + goto LABEL_106; + v60 = v58; + v61 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v61 != std::ctype::do_narrow ) + v60 = ((int (__fastcall *)(_BYTE *, int, _DWORD, _DWORD))v61)(v10, v58, (char)v58, 0); + if ( !v60 ) + { +LABEL_117: + v12 = (_DWORD *)a1; +LABEL_100: + v75 |= 4u; + HIDWORD(v11) = HIDWORD(a1); + break; + } + v10[v59 + 285] = v60; +LABEL_106: + v12 = (_DWORD *)a1; + if ( v60 != 9 ) + goto LABEL_100; +LABEL_107: + v62 = v12[2]; + if ( v62 >= v12[3] ) + { + std::streambuf::sbumpc((int)v12); + v12 = (_DWORD *)a1; + } + else + { + v12[2] = v62 + 1; + } + HIDWORD(a1) = -1; + HIDWORD(v11) = -1; + break; + case 55: + v47 = *(char **)(v72[2] + 8); +LABEL_72: + LODWORD(v11) = std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + a3, + a4, + (int)&v75, + (int)a6, + v47); + a1 = v11; + v12 = (_DWORD *)v11; + break; + default: + goto LABEL_39; + } +LABEL_40: + v9 = v15 + 1; + } + else + { + v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v10 + 32); + if ( v20 != std::ctype::do_narrow ) + { + v74 = (unsigned __int8)a7[v9]; + v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v10, (char)v17, 0); + v17 = v74; + } + if ( v19 ) + { + v10[v17 + 285] = v19; + v18 = v19; + goto LABEL_14; + } +LABEL_27: + LOBYTE(v27) = BYTE4(a1); + v28 = *v16; + v12 = (_DWORD *)a1; + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_28; + v34 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v34 >= *(_DWORD *)(a1 + 12) ) + { + v27 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v27 == -1 ) + { + LODWORD(a1) = 0; + v12 = 0; + } + else + { + v12 = (_DWORD *)a1; + } +LABEL_28: + if ( v28 != (_BYTE)v27 ) + { + HIDWORD(v11) = HIDWORD(a1); + goto LABEL_30; + } + v34 = (_BYTE *)v12[2]; + if ( (unsigned int)v34 < v12[3] ) + { +LABEL_46: + v12[2] = v34 + 1; + goto LABEL_47; + } + std::streambuf::sbumpc((int)v12); + v12 = (_DWORD *)a1; +LABEL_47: + HIDWORD(a1) = -1; + v9 = v15; + HIDWORD(v11) = -1; + } + else + { + HIDWORD(v11) = -1; + if ( v28 == *v34 ) + goto LABEL_46; +LABEL_30: + v75 |= 4u; + v9 = v15; + } + } + } + if ( v9 != v71 || v75 ) +LABEL_43: + *a5 |= 4u; + return a1; +} +// 4791B9: variable 'v11' is possibly undefined +// 479354: variable 'Str' is possibly undefined +// 479526: variable 'v35' is possibly undefined +// 479669: variable 'v39' is possibly undefined +// 479729: variable 'v40' is possibly undefined +// 479876: variable 'v45' is possibly undefined +// 47988C: variable 'v46' is possibly undefined +// 479A39: variable 'v49' is possibly undefined +// 479B12: variable 'v50' is possibly undefined +// 479BE1: variable 'v51' is possibly undefined +// 479DA6: variable 'v53' is possibly undefined +// 479F35: variable 'v63' is possibly undefined +// 47A015: variable 'v66' is possibly undefined +// 47A166: variable 'v68' is possibly undefined +// 4E94E0: using guessed type void *std::__timepunct_cache::_S_timezones[2]; +// 4ED356: using guessed type _BYTE byte_4ED356[2]; + +//----- (0047A190) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( + _DWORD *a1, + int a2, + _DWORD *a3, + int a4, + unsigned int *a5, + int a6, + unsigned int a7, + int a8, + _DWORD *a9) +{ + int v9; // eax + void *v10; // esp + void *v11; // esp + char v12; // dl + bool v13; // bl + char v14; // bl + int v15; // edi + unsigned int v16; // esi + char v17; // dl + bool v18; // bl + char v19; // bl + unsigned int v20; // edx + unsigned int *v21; // ecx + unsigned int v22; // edi + unsigned int v23; // eax + char *v25; // eax + unsigned int v26; // eax + int v27; // edx + unsigned int v28; // ebx + int v29; // edi + char v30; // al + int v31; // ecx + unsigned int v32; // eax + int v33; // eax + void *v34; // esp + int v35; // edi + void *v36; // esp + int v37; // ebx + int v38; // eax + int v39; // eax + _DWORD *v40; // ebx + int v41; // eax + int v42; // eax + int v43; // eax + _DWORD *v44; // ebx + int v45; // eax + _BYTE *v46; // eax + int v47; // eax + int v48; // eax + _DWORD *v49; // esi + int v50; // eax + _BYTE v51[8]; // [esp+10h] [ebp-48h] BYREF + _BYTE *v52; // [esp+18h] [ebp-40h] + _DWORD *v53; // [esp+1Ch] [ebp-3Ch] + int v54; // [esp+20h] [ebp-38h] + _DWORD *v55; // [esp+24h] [ebp-34h] + bool v56; // [esp+2Ah] [ebp-2Eh] + char v57; // [esp+2Bh] [ebp-2Dh] + int v58; // [esp+2Ch] [ebp-2Ch] + unsigned int *v59; // [esp+30h] [ebp-28h] + unsigned int *v60; // [esp+34h] [ebp-24h] + _BYTE *v61; // [esp+38h] [ebp-20h] + unsigned int v62; // [esp+3Ch] [ebp-1Ch] + + v55 = a1; + v54 = a2; + v53 = a3; + v60 = (unsigned int *)std::use_facet>(a8 + 108); + v9 = 16 * ((8 * a7 + 27) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + v59 = (unsigned int *)v51; + v12 = a2 == -1; + LOBYTE(v62) = v12 & (a1 != 0); + if ( (_BYTE)v62 ) + { + v12 = 0; + if ( v55[2] >= v55[3] ) + { + v38 = *v55; + LOBYTE(v61) = 0; + v39 = (*(int (__fastcall **)(_DWORD *))(v38 + 36))(v55); + v12 = (char)v61; + if ( v39 == -1 ) + { + v12 = v62; + v55 = 0; + LOBYTE(v62) = 0; + } + } + } + v56 = a4 == -1; + v13 = v56 && a3 != 0; + if ( v13 ) + { + if ( a3[2] >= a3[3] ) + { + v47 = *a3; + LOBYTE(v61) = v12; + v48 = (*(int (__fastcall **)(_DWORD *))(v47 + 36))(a3); + v12 = (char)v61; + v14 = v48 == -1 && v13; + v53 = v48 == -1 ? 0 : a3; + } + else + { + v14 = 0; + } + } + else + { + v14 = v56; + } + if ( v14 == v12 ) + { + v52 = 0; + v15 = 0; + v16 = 0; + } + else + { + if ( (_BYTE)v62 ) + { + v46 = (_BYTE *)v55[2]; + if ( (unsigned int)v46 >= v55[3] ) + { + v49 = v55; + v50 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + LOBYTE(v62) = v50 != -1 ? v50 : -1; + v55 = v50 == -1 ? 0 : v49; + } + else + { + LOBYTE(v62) = *v46; + } + } + else + { + LOBYTE(v62) = a2; + } + v15 = 2 * a7; + if ( 2 * a7 ) + { + v61 = (_BYTE *)(2 * a7); + v27 = a6; + v28 = 0; + v16 = 0; + v29 = (int)v60; + do + { + while ( 1 ) + { + v31 = **(char **)(v27 + 4 * v28); + if ( (_BYTE)v31 == (_BYTE)v62 ) + break; + a6 = v27; + v30 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v29 + 8))(v29, v31); + v27 = a6; + if ( v30 == (_BYTE)v62 ) + break; + if ( v61 == (_BYTE *)++v28 ) + goto LABEL_50; + } + v59[v16++] = v28++; + } + while ( v61 != (_BYTE *)v28 ); +LABEL_50: + if ( v16 ) + { + v32 = v55[2]; + if ( v32 >= v55[3] ) + std::streambuf::sbumpc((int)v55); + else + v55[2] = v32 + 1; + v33 = 16 * ((4 * v16 + 27) >> 4); + v34 = alloca(v33); + v35 = 0; + v36 = alloca(v33); + v62 = v16; + v52 = v51; + v61 = v51; + v37 = (int)v59; + do + { + *(_DWORD *)&v61[4 * v35] = strlen(*(const char **)(a6 + 4 * *(_DWORD *)(v37 + 4 * v35))); + ++v35; + } + while ( v62 != v35 ); + v54 = -1; + v16 = v62; + v15 = 1; + } + else + { + v52 = 0; + v15 = 0; + } + } + else + { + v52 = 0; + v16 = 0; + } + } + while ( 2 ) + { + v17 = v54 == -1; + LOBYTE(v62) = v17 & (v55 != 0); + if ( (_BYTE)v62 ) + { + if ( v55[2] >= v55[3] ) + { + v40 = v55; + v41 = *v55; + LOBYTE(v61) = v54 == -1; + v42 = (*(int (__fastcall **)(_DWORD *))(v41 + 36))(v55); + v17 = (char)v61; + LOBYTE(v62) = v42 != -1 ? 0 : v62; + v55 = v42 == -1 ? 0 : v40; + } + else + { + LOBYTE(v62) = 0; + } + } + else + { + LOBYTE(v62) = v54 == -1; + } + v18 = v56 && v53 != 0; + if ( v18 ) + { + if ( v53[2] < v53[3] ) + { + if ( !(_BYTE)v62 ) + break; + goto LABEL_11; + } + LOBYTE(v61) = v17; + v43 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); + v17 = (char)v61; + v19 = v43 == -1 && v18; + v53 = v43 == -1 ? 0 : v53; + } + else + { + v19 = v56; + } + if ( v19 == (_BYTE)v62 ) + break; +LABEL_11: + if ( v55 && v17 ) + { + v25 = (char *)v55[2]; + if ( (unsigned int)v25 >= v55[3] ) + { + v44 = v55; + v45 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + v57 = v45 != -1 ? v45 : -1; + v55 = v45 == -1 ? 0 : v44; + } + else + { + v57 = *v25; + } + } + else + { + v57 = v54; + } + if ( !v16 ) + { +LABEL_30: + *a9 |= 4u; + return v55; + } + v62 = v15; + v20 = 0; + v58 = 0; + v61 = v52; + do + { + while ( 1 ) + { + v21 = (unsigned int *)&v61[4 * v20]; + if ( *v21 > v62 ) + break; + ++v58; + ++v20; +LABEL_17: + if ( v20 >= v16 ) + goto LABEL_21; + } + v22 = v59[v20]; + v60 = &v59[v20]; + if ( *(_BYTE *)(*(_DWORD *)(a6 + 4 * v22) + v62) == v57 ) + { + ++v20; + goto LABEL_17; + } + *v60 = v59[--v16]; + *v21 = *(_DWORD *)&v61[4 * v16]; + } + while ( v20 < v16 ); +LABEL_21: + v15 = v62; + if ( v58 != v16 ) + { + v23 = v55[2]; + if ( v23 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v23 + 1; + v54 = -1; + ++v15; + continue; + } + break; + } + if ( v16 != 1 ) + { + if ( v16 == 2 && (*(_DWORD *)v52 == v15 || *((_DWORD *)v52 + 1) == v15) ) + goto LABEL_39; + goto LABEL_30; + } + if ( *(_DWORD *)v52 != v15 ) + goto LABEL_30; +LABEL_39: + v26 = *v59; + if ( *v59 >= a7 ) + v26 -= a7; + *a5 = v26; + return v55; +} + +//----- (0047A650) -------------------------------------------------------- +int __stdcall std::time_get>::get( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5, + _DWORD *a6, + _DWORD *a7, + unsigned __int8 *a8, + unsigned __int8 *a9) +{ + unsigned __int8 *v9; // esi + _DWORD *v11; // ebp + int v12; // edx + char v13; // dl + char v14; // bl + char v15; // dl + char v16; // bl + unsigned int v17; // eax + char v18; // bl + char v19; // dl + int v20; // edx + char v21; // bl + char v22; // al + int (__stdcall *v23)(unsigned __int8, int); // ebx + unsigned __int8 v24; // dl + int (__stdcall *v25)(unsigned __int8, int); // eax + int v26; // esi + int (__stdcall *v27)(unsigned __int8, int); // eax + _BYTE *v28; // eax + char v29; // dl + _BYTE *v30; // esi + char v31; // bl + unsigned __int64 v32; // rax + char v33; // al + unsigned __int8 *i; // esi + int j; // ebp + bool v37; // si + char v38; // bl + char v39; // dl + int v40; // eax + unsigned __int8 *v41; // eax + int (__stdcall *v42)(unsigned __int8); // eax + char *v43; // eax + int v44; // eax + int v45; // eax + int v46; // eax + char *v47; // eax + int v48; // eax + int v49; // eax + int v50; // eax + int v51; // eax + bool v52; // [esp+3Fh] [ebp-4Dh] + bool v54; // [esp+44h] [ebp-48h] + char v55; // [esp+44h] [ebp-48h] + _DWORD *v56; // [esp+44h] [ebp-48h] + char v57; // [esp+44h] [ebp-48h] + unsigned __int8 *v59; // [esp+4Ch] [ebp-40h] + int v60; // [esp+4Ch] [ebp-40h] + int v61; // [esp+50h] [ebp-3Ch] + unsigned __int8 v62; // [esp+50h] [ebp-3Ch] + char v63; // [esp+6Ch] [ebp-20h] BYREF + char v64; // [esp+6Dh] [ebp-1Fh] + char v65; // [esp+6Eh] [ebp-1Eh] + char v66; // [esp+6Fh] [ebp-1Dh] + unsigned __int8 *v67; // [esp+ACh] [ebp+20h] + + v9 = a8; + v11 = std::use_facet>(a5 + 108); + *a6 = 0; + if ( a8 == a9 ) + return a1; + v52 = a4 == -1; + while ( 1 ) + { + v54 = a2 == -1; + if ( v54 && a1 != 0 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v48 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + v18 = v48 == -1 && v54 && a1 != 0; + a1 = v48 == -1 ? 0 : a1; + } + else + { + v18 = 0; + } + } + else + { + v18 = a2 == -1; + } + if ( !v52 || a3 == 0 ) + { + v19 = a4 == -1; + goto LABEL_21; + } + if ( a3[2] >= a3[3] ) + { + v49 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v19 = v49 == -1 && v52 && a3 != 0; + a3 = v49 == -1 ? 0 : a3; +LABEL_21: + if ( v19 == v18 ) + goto LABEL_81; + goto LABEL_22; + } + if ( !v18 ) + { +LABEL_81: + *a6 = 6; + return a1; + } +LABEL_22: + v20 = *v9; + v21 = *((_BYTE *)v11 + v20 + 285); + v22 = *v9; + if ( !v21 ) + { + v23 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); + if ( v23 != std::ctype::do_narrow ) + { + v60 = *v9; + v22 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v23)(v11, (char)v20, 0); + v20 = v60; + } + if ( !v22 ) + goto LABEL_3; + *((_BYTE *)v11 + v20 + 285) = v22; + v21 = v22; + } + if ( v21 == 37 ) + { + v59 = v9 + 1; + if ( a9 == v9 + 1 ) + break; + v61 = v9[1]; + v24 = v9[1]; + v55 = *((_BYTE *)v11 + v61 + 285); + if ( !v55 ) + { + v25 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); + if ( v25 != std::ctype::do_narrow ) + v24 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v25)(v11, (char)v61, 0); + if ( !v24 ) + goto LABEL_89; + v55 = v24; + *((_BYTE *)v11 + v61 + 285) = v24; + } + if ( v55 == 69 || v55 == 79 ) + { + v59 = v9 + 2; + if ( a9 == v9 + 2 ) + break; + v26 = v9[2]; + v24 = v26; + if ( *((_BYTE *)v11 + v26 + 285) ) + { + v24 = *((_BYTE *)v11 + v26 + 285); + } + else + { + v27 = *(int (__stdcall **)(unsigned __int8, int))(*v11 + 32); + if ( v27 != std::ctype::do_narrow ) + v24 = ((int (__thiscall *)(_DWORD *, _DWORD, _DWORD))v27)(v11, (char)v26, 0); + if ( v24 ) + *((_BYTE *)v11 + v26 + 285) = v24; + } +LABEL_42: + v62 = v24; + v28 = std::use_facet>(a5 + 108); + v29 = v62; + v30 = v28; + *a6 = 0; + if ( v28[28] ) + { + v21 = v28[66]; + } + else + { + std::ctype::_M_widen_init((int)v28); + v29 = v62; + v42 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v30 + 24); + if ( v42 != std::ctype::do_widen ) + { + v21 = ((int (__fastcall *)(_BYTE *, _DWORD, int))v42)(v30, v62, 37); + v29 = v62; + } + } + v63 = v21; + if ( v55 ) + { + v65 = v29; + v66 = 0; + v64 = v55; + } + else + { + v64 = v29; + v65 = 0; + } + v32 = std::time_get>::_M_extract_via_format( + __PAIR64__(a2, a1), + a3, + a4, + a5, + a6, + a7, + &v63); + a1 = v32; + v31 = HIDWORD(v32) == -1; + a2 = HIDWORD(v32); + BYTE4(v32) = v31 & ((_DWORD)v32 != 0); + if ( BYTE4(v32) ) + { + v31 = 0; + if ( *(_DWORD *)(v32 + 8) >= *(_DWORD *)(v32 + 12) ) + { + v57 = BYTE4(v32); + v44 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v32 + 36))(v32); + v31 = v44 != -1 ? 0 : v57; + a1 = v44 == -1 ? 0 : a1; + } + } + if ( a3 && a4 == -1 ) + { + v33 = 0; + if ( a3[2] >= a3[3] ) + v33 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3) == -1; + } + else + { + v33 = a4 == -1; + } + if ( v33 == v31 ) + *a6 |= 2u; + v9 = v59 + 1; + if ( a9 == v59 + 1 ) + return a1; + goto LABEL_16; + } + v24 = v55; +LABEL_89: + v55 = 0; + goto LABEL_42; + } +LABEL_3: + v12 = v11[6]; + if ( (*(_BYTE *)(v12 + 2 * *v9) & 0x20) != 0 ) + { + for ( i = v9 + 1; a9 != i; ++i ) + { + if ( (*(_BYTE *)(v12 + 2 * *i) & 0x20) == 0 ) + break; + } + v67 = i; + v56 = v11; + for ( j = a2; ; j = -1 ) + { + v37 = j == -1; + if ( v37 && a1 != 0 ) + { + if ( *(_DWORD *)(a1 + 8) >= *(_DWORD *)(a1 + 12) ) + { + v45 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + v38 = v45 == -1 && v37 && a1 != 0; + a1 = v45 == -1 ? 0 : a1; + } + else + { + v38 = 0; + } + } + else + { + v38 = j == -1; + } + if ( !v52 || a3 == 0 ) + break; + if ( a3[2] >= a3[3] ) + { + v46 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v39 = v46 == -1 && v52 && a3 != 0; + a3 = v46 == -1 ? 0 : a3; +LABEL_63: + if ( v39 == v38 ) + goto LABEL_76; + goto LABEL_64; + } + if ( !v38 ) + { +LABEL_76: + a2 = j; + v9 = v67; + v11 = v56; + goto LABEL_15; + } +LABEL_64: + if ( a1 && j == -1 ) + { + v41 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v41 < *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(v56[6] + 2 * *v41) & 0x20) == 0 ) + { + v11 = v56; + a2 = -1; + v9 = v67; + goto LABEL_15; + } +LABEL_69: + *(_DWORD *)(a1 + 8) = v41 + 1; + continue; + } + v40 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + a1 = v40 == -1 ? 0 : a1; + } + else + { + LOBYTE(v40) = j; + } + if ( (*(_BYTE *)(v56[6] + 2 * (unsigned __int8)v40) & 0x20) == 0 ) + goto LABEL_76; + v41 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v41 < *(_DWORD *)(a1 + 12) ) + goto LABEL_69; + (*(void (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); + } + v39 = a4 == -1; + goto LABEL_63; + } + if ( a1 && a2 == -1 ) + { + v43 = *(char **)(a1 + 8); + if ( (unsigned int)v43 >= *(_DWORD *)(a1 + 12) ) + { + v50 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + v13 = v50 != -1 ? v50 : -1; + a1 = v50 == -1 ? 0 : a1; + } + else + { + v13 = *v43; + } + } + else + { + v13 = a2; + } + v14 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, v13); + if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 16))(v11, (char)*v9) != v14 ) + { + if ( a1 && a2 == -1 ) + { + v47 = *(char **)(a1 + 8); + if ( (unsigned int)v47 >= *(_DWORD *)(a1 + 12) ) + { + v51 = (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 36))(a1); + v15 = v51 != -1 ? v51 : -1; + a1 = v51 == -1 ? 0 : a1; + } + else + { + v15 = *v47; + } + } + else + { + v15 = a2; + } + v16 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, v15); + if ( (*(unsigned __int8 (__thiscall **)(_DWORD *, _DWORD))(*v11 + 8))(v11, (char)*v9) != v16 ) + break; + } + v17 = *(_DWORD *)(a1 + 8); + if ( v17 >= *(_DWORD *)(a1 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); + else + *(_DWORD *)(a1 + 8) = v17 + 1; + a2 = -1; + ++v9; +LABEL_15: + if ( a9 == v9 ) + return a1; +LABEL_16: + if ( *a6 ) + return a1; + } + *a6 = 4; + return a1; +} + +//----- (0047AE20) -------------------------------------------------------- +int __stdcall std::time_get>::get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char a7, + char a8) +{ + _BYTE *v8; // ebp + char v9; // al + int v10; // esi + unsigned __int64 v11; // rax + char v12; // bp + int (__stdcall *v14)(unsigned __int8); // edx + char v15; // [esp+20h] [ebp-3Ch] + char v16; // [esp+3Ch] [ebp-20h] BYREF + char v17; // [esp+3Dh] [ebp-1Fh] + char v18; // [esp+3Eh] [ebp-1Eh] + char v19; // [esp+3Fh] [ebp-1Dh] + + v8 = std::use_facet>(a4 + 108); + *a5 = 0; + if ( v8[28] ) + { + v9 = v8[66]; + } + else + { + std::ctype::_M_widen_init((int)v8); + v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); + v9 = 37; + if ( v14 != std::ctype::do_widen ) + v9 = ((int (__thiscall *)(_BYTE *, int))v14)(v8, 37); + } + v16 = v9; + if ( a8 ) + { + v19 = 0; + v17 = a8; + v18 = a7; + } + else + { + v18 = 0; + v17 = a7; + } + v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); + v10 = v11; + BYTE4(v11) = HIDWORD(v11) == -1; + v12 = BYTE4(v11) & ((_DWORD)v11 != 0); + if ( v12 ) + { + BYTE4(v11) = 0; + if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) + { + LODWORD(v11) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v11 + 36))(v11, 0); + BYTE4(v11) = (_DWORD)v11 != -1 ? 0 : v12; + v10 = (_DWORD)v11 == -1 ? 0 : v10; + } + } + LOBYTE(v11) = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + LOBYTE(v11) = 0; + if ( a2[2] >= a2[3] ) + { + v15 = BYTE4(v11); + LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + BYTE4(v11) = v15; + LOBYTE(v11) = (_DWORD)v11 == -1; + } + } + } + if ( BYTE4(v11) == (_BYTE)v11 ) + *a5 |= 2u; + return v10; +} + +//----- (0047AFE0) -------------------------------------------------------- +int __stdcall std::time_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char a7, + char a8) +{ + _BYTE *v8; // ebp + char v9; // al + int v10; // esi + unsigned __int64 v11; // rax + char v12; // bp + int (__stdcall *v14)(unsigned __int8); // edx + char v15; // [esp+20h] [ebp-3Ch] + char v16; // [esp+3Ch] [ebp-20h] BYREF + char v17; // [esp+3Dh] [ebp-1Fh] + char v18; // [esp+3Eh] [ebp-1Eh] + char v19; // [esp+3Fh] [ebp-1Dh] + + v8 = std::use_facet>(a4 + 108); + *a5 = 0; + if ( v8[28] ) + { + v9 = v8[66]; + } + else + { + std::ctype::_M_widen_init((int)v8); + v14 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v8 + 24); + v9 = 37; + if ( v14 != std::ctype::do_widen ) + v9 = ((int (__thiscall *)(_BYTE *, int))v14)(v8, 37); + } + v16 = v9; + if ( a8 ) + { + v19 = 0; + v17 = a8; + v18 = a7; + } + else + { + v18 = 0; + v17 = a7; + } + v11 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v16); + v10 = v11; + BYTE4(v11) = HIDWORD(v11) == -1; + v12 = BYTE4(v11) & ((_DWORD)v11 != 0); + if ( v12 ) + { + BYTE4(v11) = 0; + if ( *(_DWORD *)(v11 + 8) >= *(_DWORD *)(v11 + 12) ) + { + LODWORD(v11) = (*(int (__fastcall **)(_DWORD, _DWORD))(*(_DWORD *)v11 + 36))(v11, 0); + BYTE4(v11) = (_DWORD)v11 != -1 ? 0 : v12; + v10 = (_DWORD)v11 == -1 ? 0 : v10; + } + } + LOBYTE(v11) = a3 == -1; + if ( a2 ) + { + if ( a3 == -1 ) + { + LOBYTE(v11) = 0; + if ( a2[2] >= a2[3] ) + { + v15 = BYTE4(v11); + LODWORD(v11) = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + BYTE4(v11) = v15; + LOBYTE(v11) = (_DWORD)v11 == -1; + } + } + } + if ( BYTE4(v11) == (_BYTE)v11 ) + *a5 |= 2u; + return v10; +} + +//----- (0047B1A0) -------------------------------------------------------- +int __fastcall std::time_get>::get_date(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); +} + +//----- (0047B1B0) -------------------------------------------------------- +int __fastcall std::time_get>::get_time(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); +} + +//----- (0047B1C0) -------------------------------------------------------- +int __fastcall std::time_get>::get_year(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); +} + +//----- (0047B1D0) -------------------------------------------------------- +int __fastcall std::time_get>::date_order(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 8); + if ( v1 == std::time_get>::do_date_order ) + return 0; + else + return v1(); +} + +//----- (0047B1F0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_date( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + _DWORD *v6; // eax + __int64 v7; // rax + _DWORD *v8; // ecx + _DWORD *v9; // ebp + __int16 v10; // bx + char v11; // cl + __int16 *v13; // eax + __int16 v14; // ax + __int16 *v15; // eax + __int16 v16; // ax + char v17; // [esp+2Ch] [ebp-30h] + _DWORD *v18; // [esp+30h] [ebp-2Ch] + + v6 = std::use_facet>(a4 + 108); + v7 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + (wchar_t *)*(_DWORD *)(v6[2] + 8)); + v8 = (_DWORD *)v7; + v9 = (_DWORD *)v7; + v10 = WORD2(v7) == 0xFFFF; + v17 = v10 & ((_DWORD)v7 != 0); + if ( v17 ) + { + v15 = *(__int16 **)(v7 + 8); + if ( (unsigned int)v15 >= v8[3] ) + { + v18 = v8; + v16 = (*(int (**)(void))(*v8 + 36))(); + v8 = v18; + } + else + { + v16 = *v15; + } + LOBYTE(v10) = v16 != -1 ? 0 : v17; + v9 = v16 == -1 ? 0 : v8; + } + v11 = (_WORD)a3 == 0xFFFF; + if ( a2 && (_WORD)a3 == 0xFFFF ) + { + v13 = (__int16 *)a2[2]; + if ( (unsigned int)v13 >= a2[3] ) + v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + else + v14 = *v13; + v11 = v14 == -1; + } + if ( (_BYTE)v10 == v11 ) + *a5 |= 2u; + return v9; +} + +//----- (0047B330) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_time( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6) +{ + _DWORD *v6; // eax + __int64 v7; // rax + _DWORD *v8; // ecx + _DWORD *v9; // ebp + __int16 v10; // bx + char v11; // cl + __int16 *v13; // eax + __int16 v14; // ax + __int16 *v15; // eax + __int16 v16; // ax + char v17; // [esp+2Ch] [ebp-30h] + _DWORD *v18; // [esp+30h] [ebp-2Ch] + + v6 = std::use_facet>(a4 + 108); + v7 = std::time_get>::_M_extract_via_format( + a1, + a2, + a3, + a4, + a5, + a6, + (wchar_t *)*(_DWORD *)(v6[2] + 16)); + v8 = (_DWORD *)v7; + v9 = (_DWORD *)v7; + v10 = WORD2(v7) == 0xFFFF; + v17 = v10 & ((_DWORD)v7 != 0); + if ( v17 ) + { + v15 = *(__int16 **)(v7 + 8); + if ( (unsigned int)v15 >= v8[3] ) + { + v18 = v8; + v16 = (*(int (**)(void))(*v8 + 36))(); + v8 = v18; + } + else + { + v16 = *v15; + } + LOBYTE(v10) = v16 != -1 ? 0 : v17; + v9 = v16 == -1 ? 0 : v8; + } + v11 = (_WORD)a3 == 0xFFFF; + if ( a2 && (_WORD)a3 == 0xFFFF ) + { + v13 = (__int16 *)a2[2]; + if ( (unsigned int)v13 >= a2[3] ) + v14 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + else + v14 = *v13; + v11 = v14 == -1; + } + if ( (_BYTE)v10 == v11 ) + *a5 |= 2u; + return v9; +} + +//----- (0047B470) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_year( + _DWORD *a1, + __int16 a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // ecx + __int16 v8; // dx + __int16 v9; // ax + _DWORD *v10; // ebp + int v11; // edx + char v12; // bl + char v13; // cl + __int16 *v15; // eax + __int16 v16; // ax + __int16 *v17; // eax + __int16 v18; // ax + char v19; // [esp+43h] [ebp-39h] + _DWORD *v20; // [esp+44h] [ebp-38h] + int v21; // [esp+58h] [ebp-24h] BYREF + int v22[8]; // [esp+5Ch] [ebp-20h] BYREF + + v22[0] = 0; + v7 = std::time_get>::_M_extract_num( + a1, + a2, + a3, + a4, + &v21, + 0, + 9999, + 4u, + a5, + v22); + v9 = v8; + v10 = v7; + if ( v22[0] ) + { + *a6 |= 4u; + } + else + { + v11 = v21 - 1900; + if ( v21 < 0 ) + v11 = v21 + 100; + *(_DWORD *)(a7 + 20) = v11; + } + v12 = v9 == -1; + v19 = v12 & (v7 != 0); + if ( v19 ) + { + v17 = (__int16 *)v7[2]; + if ( (unsigned int)v17 >= v7[3] ) + { + v20 = v7; + v18 = (*(int (**)(void))(*v7 + 36))(); + v7 = v20; + } + else + { + v18 = *v17; + } + v12 = v18 != -1 ? 0 : v19; + v10 = v18 == -1 ? 0 : v7; + } + v13 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v15 = (__int16 *)a3[2]; + if ( (unsigned int)v15 >= a3[3] ) + v16 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v16 = *v15; + v13 = v16 == -1; + } + if ( v12 == v13 ) + *a6 |= 2u; + return v10; +} +// 47B4EA: variable 'v8' is possibly undefined +// 47B470: using guessed type int var_20[8]; + +//----- (0047B5F0) -------------------------------------------------------- +int __fastcall std::time_get>::get_weekday(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 20))(a1); +} + +//----- (0047B600) -------------------------------------------------------- +int std::time_get>::do_date_order() +{ + return 0; +} + +//----- (0047B610) -------------------------------------------------------- +int __fastcall std::time_get>::get_monthname(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 24))(a1); +} + +//----- (0047B620) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_num( + _DWORD *a1, + __int16 a2, + _DWORD *a3, + __int16 a4, + int *a5, + signed int a6, + int a7, + unsigned int a8, + int a9, + _DWORD *a10) +{ + unsigned int v10; // ebp + int v12; // edi + unsigned int i; // esi + unsigned __int8 v14; // dl + unsigned __int16 v15; // ax + char v16; // al + unsigned int v17; // eax + __int16 *v18; // eax + __int16 v19; // ax + __int16 *v20; // eax + __int16 v21; // ax + unsigned __int16 *v23; // eax + char v24; // [esp+1Fh] [ebp-2Dh] + bool v25; // [esp+1Fh] [ebp-2Dh] + void *v27; // [esp+24h] [ebp-28h] + char v29; // [esp+2Eh] [ebp-1Eh] + unsigned __int8 v30; // [esp+2Fh] [ebp-1Dh] + + v10 = 10; + v27 = std::use_facet>(a9 + 108); + if ( a8 != 2 ) + v10 = a8 == 4 ? 1000 : 1; + v29 = a4 == -1; + v12 = 0; + for ( i = 0; ; ++i ) + { + v25 = a2 == -1 && a1 != 0; + if ( v25 ) + break; + v24 = a2 == -1; + v14 = v29 & (a3 != 0); + if ( v14 ) + goto LABEL_20; +LABEL_5: + if ( v24 == v29 ) + goto LABEL_23; +LABEL_6: + if ( i >= a8 ) + goto LABEL_23; + if ( a1 && a2 == -1 ) + { + v23 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v23 >= a1[3] ) + v15 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v15 = *v23; + a1 = v15 == 0xFFFF ? 0 : a1; + } + else + { + v15 = a2; + } + v16 = (*(int (__thiscall **)(void *, _DWORD, int))(*(_DWORD *)v27 + 48))(v27, v15, 42); + if ( (unsigned __int8)(v16 - 48) > 9u ) + goto LABEL_24; + v12 = v16 + 10 * v12 - 48; + if ( (int)(v12 * v10) > a7 || (int)(v10 + v12 * v10) <= a6 ) + goto LABEL_24; + v17 = a1[2]; + v10 /= 0xAu; + if ( v17 >= a1[3] ) + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + else + a1[2] = v17 + 2; + a2 = -1; + } + v18 = (__int16 *)a1[2]; + if ( (unsigned int)v18 >= a1[3] ) + v19 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v19 = *v18; + a1 = v19 == -1 ? 0 : a1; + v24 = v19 == -1 && v25; + v14 = v29 & (a3 != 0); + if ( !v14 ) + goto LABEL_5; +LABEL_20: + v20 = (__int16 *)a3[2]; + if ( (unsigned int)v20 >= a3[3] ) + { + v30 = v14; + v21 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + v14 = v30; + } + else + { + v21 = *v20; + } + a3 = v21 == -1 ? 0 : a3; + if ( v24 != ((unsigned __int8)((v21 != -1) - 1) & v14) ) + goto LABEL_6; +LABEL_23: + if ( i == a8 ) + { +LABEL_27: + *a5 = v12; + return a1; + } +LABEL_24: + if ( a8 == 4 && i == 2 ) + { + v12 -= 100; + goto LABEL_27; + } + *a10 |= 4u; + return a1; +} + +//----- (0047B8B0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_weekday( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // ecx + int v9; // eax + __int16 v10; // dx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // bl + char v14; // si + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + _DWORD *v21; // [esp+40h] [ebp-6Ch] + int v22; // [esp+50h] [ebp-5Ch] BYREF + int v23; // [esp+54h] [ebp-58h] BYREF + int v24[21]; // [esp+58h] [ebp-54h] BYREF + + v23 = 0; + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v24[0] = v7[18]; + v24[1] = v7[19]; + v24[2] = v7[20]; + v24[3] = v7[21]; + v24[4] = v7[22]; + v24[5] = v7[23]; + v24[6] = v7[24]; + v24[7] = v7[11]; + v24[8] = v7[12]; + v24[9] = v7[13]; + v24[10] = v7[14]; + v24[11] = v7[15]; + v8 = v7[16]; + v9 = v7[17]; + v24[12] = v8; + v24[13] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v22, + (int)v24, + 7u, + a5, + &v23); + v12 = v11; + if ( v23 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 24) = v22; + v13 = v10 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v19 = (__int16 *)v11[2]; + if ( (unsigned int)v19 >= v11[3] ) + { + v21 = v11; + v20 = (*(int (**)(void))(*v11 + 36))(); + v11 = v21; + } + else + { + v20 = *v19; + } + v13 = v20 != -1 ? 0 : v14; + v12 = v20 == -1 ? 0 : v11; + } + v15 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( v15 == v13 ) + *a6 |= 2u; + return v12; +} +// 47B9DD: variable 'v10' is possibly undefined + +//----- (0047BAB0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_name( + _DWORD *a1, + int a2, + _DWORD *a3, + int *a4, + _DWORD *a5, + int a6, + int a7, + int a8, + _DWORD *a9) +{ + int v9; // eax + void *v10; // esp + void *v11; // esp + char v12; // dl + char v13; // dl + char v14; // bl + int v16; // edx + int v17; // esi + size_t v18; // ebx + int v19; // edi + __int16 v20; // ax + int v21; // ecx + int *v22; // edi + size_t v23; // eax + unsigned int v24; // ebx + size_t v25; // eax + unsigned int v26; // eax + _WORD *v27; // eax + __int16 v28; // dx + char v29; // si + char v30; // dl + char v31; // dl + unsigned int v32; // ecx + size_t v33; // esi + int i; // eax + __int16 v35; // ax + __int16 *v36; // eax + unsigned int v37; // eax + int *v38; // eax + int *v39; // ebx + const wchar_t *v40; // edi + unsigned int v41; // ebx + unsigned int v42; // esi + unsigned int v43; // eax + __int16 *v44; // eax + __int16 v45; // ax + unsigned __int8 v46; // di + char v47; // dl + char v48; // dl + __int16 v49; // di + __int16 *v50; // eax + __int16 v51; // ax + __int16 *v52; // eax + __int16 v53; // cx + int v54; // eax + __int16 *v55; // eax + __int16 v56; // ax + __int16 *v57; // eax + __int16 v58; // ax + __int16 v59; // ax + _WORD *v60; // eax + int v61; // eax + int v62; // eax + __int16 *v63; // eax + __int16 v64; // cx + __int16 v65; // ax + int v66; // [esp+10h] [ebp-38h] BYREF + _DWORD *v67; // [esp+14h] [ebp-34h] + bool v68; // [esp+1Bh] [ebp-2Dh] + int v69; // [esp+1Ch] [ebp-2Ch] + _DWORD *v70; // [esp+20h] [ebp-28h] + int *v71; // [esp+24h] [ebp-24h] + size_t v72; // [esp+28h] [ebp-20h] + unsigned int v73; // [esp+2Ch] [ebp-1Ch] + + v71 = a4; + v66 = a2; + LOWORD(v72) = a2; + v70 = a1; + v67 = a3; + v69 = (int)std::use_facet>(a8 + 108); + v9 = 16 * ((unsigned int)(4 * a7 + 27) >> 4); + v10 = alloca(v9); + v11 = alloca(v9); + LOBYTE(v73) = (_WORD)a2 == 0xFFFF; + v12 = v73 & (a1 != 0); + if ( v12 ) + { + v57 = (__int16 *)a1[2]; + if ( (unsigned int)v57 >= a1[3] ) + { + v61 = *a1; + LOBYTE(v70) = v73 & (a1 != 0); + v58 = (*(int (__fastcall **)(_DWORD *))(v61 + 36))(a1); + v12 = (char)v70; + } + else + { + v58 = *v57; + } + v70 = v58 == -1 ? 0 : a1; + v13 = v58 != -1 ? 0 : v12; + } + else + { + v13 = v73; + } + v68 = (_WORD)v71 == 0xFFFF; + if ( v68 && a3 != 0 ) + { + v55 = (__int16 *)a3[2]; + if ( (unsigned int)v55 >= a3[3] ) + { + v62 = *a3; + LOBYTE(v71) = v13; + v56 = (*(int (__fastcall **)(_DWORD *))(v62 + 36))(a3); + v13 = (char)v71; + } + else + { + v56 = *v55; + } + v67 = v56 == -1 ? 0 : a3; + v14 = v56 == -1 && v68 && a3 != 0; + } + else + { + v14 = v68; + } + if ( v14 == v13 ) + goto LABEL_6; + if ( v70 && (_BYTE)v73 ) + { + v60 = (_WORD *)v70[2]; + LOWORD(v73) = (unsigned int)v60 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v60; + v70 = (_WORD)v73 == 0xFFFF ? 0 : v70; + } + else + { + LOWORD(v73) = v72; + } + if ( !a7 ) + goto LABEL_6; + v71 = &v66; + v16 = a6; + v17 = 0; + v18 = 0; + v19 = v69; + do + { + while ( 1 ) + { + v21 = **(unsigned __int16 **)(v16 + 4 * v17); + if ( (_WORD)v21 == (_WORD)v73 ) + break; + a6 = v16; + v20 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v19 + 24))(v19, v21); + v16 = a6; + if ( v20 == (_WORD)v73 ) + break; + if ( a7 == ++v17 ) + goto LABEL_17; + } + v71[v18++] = v17++; + } + while ( a7 != v17 ); +LABEL_17: + v22 = v71; + v71 = 0; + if ( v18 <= 1 ) + goto LABEL_41; + do + { + v69 = *v22; + v23 = wcslen(*(const wchar_t **)(a6 + 4 * v69)); + v72 = v18; + v24 = 1; + v73 = v23; + do + { + v25 = wcslen(*(const wchar_t **)(a6 + 4 * v22[v24])); + if ( v73 > v25 ) + v73 = v25; + ++v24; + } + while ( v24 < v72 ); + v18 = v72; + v26 = v70[2]; + if ( v26 >= v70[3] ) + (*(void (__fastcall **)(_DWORD *))(*v70 + 40))(v70); + else + v70[2] = v26 + 2; + v71 = (int *)((char *)v71 + 1); + if ( (unsigned int)v71 >= v73 ) + goto LABEL_59; + v27 = (_WORD *)v70[2]; + v28 = (unsigned int)v27 >= v70[3] ? (*(int (__fastcall **)(_DWORD *))(*v70 + 36))(v70) : *v27; + v70 = v28 == -1 ? 0 : v70; + v29 = v28 == -1; + v30 = v68 && v67 != 0; + if ( v30 ) + { + v52 = (__int16 *)v67[2]; + if ( (unsigned int)v52 >= v67[3] ) + { + LOBYTE(v73) = v68 && v67 != 0; + v59 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); + v30 = v73; + v53 = v59; + } + else + { + v53 = *v52; + } + v67 = v53 == -1 ? 0 : v67; + v31 = v53 != -1 ? 0 : v30; + } + else + { + v31 = v68; + } + if ( v29 == v31 ) + goto LABEL_59; + v32 = (unsigned int)v70; + v33 = 0; + v72 = 2 * (_DWORD)v71; + for ( i = v69; ; i = v22[v33] ) + { + v16 = v72; + LOWORD(v73) = *(_WORD *)(*(_DWORD *)(a6 + 4 * i) + v72); + v35 = -1; + if ( v32 ) + { + v36 = *(__int16 **)(v32 + 8); + if ( (unsigned int)v36 >= *(_DWORD *)(v32 + 12) ) + { + v54 = *(_DWORD *)v32; + v70 = (_DWORD *)v32; + v35 = (*(int (**)(void))(v54 + 36))(); + v32 = (unsigned int)v70; + } + else + { + v35 = *v36; + } + v16 = (v35 == -1) - 1; + v32 &= v16; + } + if ( (_WORD)v73 == v35 ) + break; + v22[v33] = v22[--v18]; + if ( v18 <= v33 ) + goto LABEL_39; +LABEL_32: + ; + } + if ( v18 > ++v33 ) + goto LABEL_32; +LABEL_39: + v70 = (_DWORD *)v32; + } + while ( v18 > 1 ); + LOWORD(v72) = -1; +LABEL_41: + if ( v18 == 1 ) + { + v37 = v70[2]; + if ( v37 >= v70[3] ) + (*(void (__fastcall **)(_DWORD *, int))(*v70 + 40))(v70, v16); + else + v70[2] = v37 + 2; + v38 = (int *)*v22; + v39 = v71; + v40 = *(const wchar_t **)(a6 + 4 * *v22); + v71 = v38; + v41 = (unsigned int)v39 + 1; + v72 = wcslen(v40); + if ( v41 < v72 ) + { + v73 = (unsigned int)v40; + v42 = (unsigned int)v70; + do + { + while ( 1 ) + { + v44 = *(__int16 **)(v42 + 8); + if ( (unsigned int)v44 >= *(_DWORD *)(v42 + 12) ) + v45 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); + else + v45 = *v44; + v46 = v45 == -1; + v42 &= v46 - 1; + v47 = v68 && v67 != 0; + if ( v47 ) + { + v63 = (__int16 *)v67[2]; + if ( (unsigned int)v63 >= v67[3] ) + { + LOBYTE(v70) = v68 && v67 != 0; + v65 = (*(int (__fastcall **)(_DWORD *))(*v67 + 36))(v67); + v47 = (char)v70; + v64 = v65; + } + else + { + v64 = *v63; + } + v67 = v64 == -1 ? 0 : v67; + v48 = v64 != -1 ? 0 : v47; + } + else + { + v48 = v68; + } + if ( v48 == v46 ) + { +LABEL_58: + v70 = (_DWORD *)v42; + goto LABEL_59; + } + v49 = *(_WORD *)(v73 + 2 * v41); + if ( v42 ) + { + v50 = *(__int16 **)(v42 + 8); + if ( (unsigned int)v50 >= *(_DWORD *)(v42 + 12) ) + v51 = (*(int (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 36))(v42); + else + v51 = *v50; + v42 &= (v51 == -1) - 1; + if ( v49 != v51 ) + goto LABEL_58; + } + else if ( v49 != -1 ) + { + goto LABEL_58; + } + v43 = *(_DWORD *)(v42 + 8); + if ( v43 >= *(_DWORD *)(v42 + 12) ) + break; + ++v41; + *(_DWORD *)(v42 + 8) = v43 + 2; + if ( v41 >= v72 ) + goto LABEL_83; + } + ++v41; + (*(void (__fastcall **)(unsigned int))(*(_DWORD *)v42 + 40))(v42); + } + while ( v41 < v72 ); +LABEL_83: + v70 = (_DWORD *)v42; + } + if ( v72 == v41 ) + { + LOWORD(v72) = -1; + *a5 = v71; + goto LABEL_7; + } +LABEL_59: + LOWORD(v72) = -1; + } +LABEL_6: + *a9 |= 4u; +LABEL_7: + LOWORD(v66) = v72; + return v70; +} + +//----- (0047BFF0) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get_monthname( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int a7) +{ + _DWORD *v7; // eax + int v8; // ecx + int v9; // ecx + __int16 v10; // dx + _DWORD *v11; // ecx + _DWORD *v12; // ebp + char v13; // bl + char v14; // si + char v15; // cl + __int16 *v17; // eax + __int16 v18; // ax + __int16 *v19; // eax + __int16 v20; // ax + _DWORD *v21; // [esp+40h] [ebp-9Ch] + int v22; // [esp+58h] [ebp-84h] BYREF + int v23; // [esp+5Ch] [ebp-80h] BYREF + int v24[31]; // [esp+60h] [ebp-7Ch] BYREF + + v7 = (_DWORD *)*((_DWORD *)std::use_facet>(a5 + 108) + 2); + v24[0] = v7[37]; + v24[1] = v7[38]; + v24[2] = v7[39]; + v24[3] = v7[40]; + v24[4] = v7[41]; + v24[5] = v7[42]; + v24[6] = v7[43]; + v24[7] = v7[44]; + v24[8] = v7[45]; + v24[9] = v7[46]; + v24[10] = v7[47]; + v24[11] = v7[48]; + v24[12] = v7[25]; + v24[13] = v7[26]; + v24[14] = v7[27]; + v24[15] = v7[28]; + v8 = v7[29]; + v23 = 0; + v24[16] = v8; + v24[17] = v7[30]; + v24[18] = v7[31]; + v24[19] = v7[32]; + v24[20] = v7[33]; + v24[21] = v7[34]; + v9 = v7[35]; + v24[23] = v7[36]; + v24[22] = v9; + v11 = std::time_get>::_M_extract_wday_or_month( + a1, + a2, + a3, + a4, + &v22, + (int)v24, + 0xCu, + a5, + &v23); + v12 = v11; + if ( v23 ) + *a6 |= 4u; + else + *(_DWORD *)(a7 + 16) = v22; + v13 = v10 == -1; + v14 = v13 & (v11 != 0); + if ( v14 ) + { + v19 = (__int16 *)v11[2]; + if ( (unsigned int)v19 >= v11[3] ) + { + v21 = v11; + v20 = (*(int (**)(void))(*v11 + 36))(); + v11 = v21; + } + else + { + v20 = *v19; + } + v13 = v20 != -1 ? 0 : v14; + v12 = v20 == -1 ? 0 : v11; + } + v15 = a4 == -1; + if ( a3 && a4 == -1 ) + { + v17 = (__int16 *)a3[2]; + if ( (unsigned int)v17 >= a3[3] ) + v18 = (*(int (__fastcall **)(_DWORD *))(*a3 + 36))(a3); + else + v18 = *v17; + v15 = v18 == -1; + } + if ( v13 == v15 ) + *a6 |= 2u; + return v12; +} +// 47C1BA: variable 'v10' is possibly undefined + +//----- (0047C290) -------------------------------------------------------- +__int64 __stdcall std::time_get>::_M_extract_via_format( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6, + wchar_t *a7) +{ + wchar_t *v7; // ebx + _DWORD *v8; // eax + size_t v9; // ebx + void *v10; // esi + size_t v11; // eax + __int16 v12; // dx + _DWORD *v13; // ecx + char v14; // dl + char v15; // di + char v16; // al + char v17; // di + int v18; // ecx + size_t v19; // edi + size_t v20; // ebp + char v21; // al + int v22; // eax + __int16 v23; // ax + wchar_t v24; // bx + __int16 *v25; // eax + __int16 v26; // cx + _WORD *v28; // eax + __int16 v29; // ax + unsigned int v30; // eax + __int16 *v31; // eax + int v32; // edx + _DWORD *v33; // eax + _DWORD *v34; // eax + unsigned __int16 v35; // ax + __int16 v36; // dx + bool v37; // al + __int16 v38; // di + __int16 v39; // di + __int16 v40; // dx + _DWORD *v41; // eax + _DWORD *v42; // eax + unsigned __int16 v43; // ax + unsigned int v44; // eax + __int16 v45; // dx + unsigned __int16 v46; // ax + unsigned int v47; // eax + unsigned __int16 v48; // ax + __int16 v49; // ax + __int16 v50; // dx + wchar_t *String; // [esp+20h] [ebp-15Ch] + size_t v52; // [esp+5Ch] [ebp-120h] + wchar_t *v53; // [esp+60h] [ebp-11Ch] + char v54; // [esp+60h] [ebp-11Ch] + _DWORD *v55; // [esp+6Ch] [ebp-110h] + int v56; // [esp+128h] [ebp-54h] BYREF + int v57; // [esp+12Ch] [ebp-50h] BYREF + wchar_t v58[2]; // [esp+130h] [ebp-4Ch] BYREF + int v59; // [esp+134h] [ebp-48h] + int v60; // [esp+138h] [ebp-44h] + int v61; // [esp+13Ch] [ebp-40h] + int v62; // [esp+140h] [ebp-3Ch] + int v63; // [esp+144h] [ebp-38h] + int v64; // [esp+148h] [ebp-34h] + int v65; // [esp+14Ch] [ebp-30h] + int v66; // [esp+150h] [ebp-2Ch] + int v67; // [esp+154h] [ebp-28h] + int v68; // [esp+158h] [ebp-24h] + int v69; // [esp+15Ch] [ebp-20h] + + v7 = (wchar_t *)(a4 + 108); + v8 = std::use_facet>(a4 + 108); + String = v7; + v9 = 0; + v55 = v8; + v10 = std::use_facet>((int)String); + v11 = wcslen(a7); + v12 = WORD2(a1); + v56 = 0; + v52 = v11; + v13 = (_DWORD *)a1; + while ( 1 ) + { + v14 = v12 == -1; + v15 = v14 & (v13 != 0); + if ( v15 ) + { + v28 = (_WORD *)v13[2]; + v29 = (unsigned int)v28 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v28; + v14 = 0; + if ( v29 == -1 ) + { + LODWORD(a1) = 0; + v14 = v15; + } + } + v16 = (_WORD)a3 == 0xFFFF; + v17 = v16 & (a2 != 0); + if ( v17 ) + { + v25 = (__int16 *)a2[2]; + if ( (unsigned int)v25 >= a2[3] ) + { + v54 = v14; + v49 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v14 = v54; + v26 = v49; + } + else + { + v26 = *v25; + } + v16 = 0; + if ( v26 == -1 ) + break; + } + v18 = v56; + if ( v14 == v16 ) + goto LABEL_20; +LABEL_5: + if ( v9 >= v52 ) + goto LABEL_20; + if ( v18 ) + goto LABEL_22; + v19 = v9; + v20 = v9 + 1; + v53 = &a7[v9]; + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, *v53, 0) == 37 ) + { + v21 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v19 + 1], 0); + v57 = 0; + if ( v21 != 69 && v21 != 79 ) + { + LOBYTE(v22) = v21 - 65; +LABEL_11: + switch ( (char)v22 ) + { + case 0: + v41 = (_DWORD *)v55[2]; + *(_DWORD *)v58 = v41[11]; + v59 = v41[12]; + v60 = v41[13]; + v61 = v41[14]; + v62 = v41[15]; + v63 = v41[16]; + v64 = v41[17]; + v13 = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v57, + (int)v58, + 7, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + goto LABEL_54; + goto LABEL_32; + case 1: + v42 = (_DWORD *)v55[2]; + *(_DWORD *)v58 = v42[25]; + v59 = v42[26]; + v60 = v42[27]; + v61 = v42[28]; + v62 = v42[29]; + v63 = v42[30]; + v64 = v42[31]; + v65 = v42[32]; + v66 = v42[33]; + v67 = v42[34]; + v68 = v42[35]; + v69 = v42[36]; + v13 = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v57, + (int)v58, + 12, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + goto LABEL_45; + goto LABEL_32; + case 2: + case 24: + case 56: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 0, + 9999, + 4u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + { + v32 = v57 - 1900; + if ( v57 < 0 ) + v32 = v57 + 100; + v13 = (_DWORD *)a1; + a6[5] = v32; + v12 = WORD2(a1); + } + goto LABEL_32; + case 3: + (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( + v10, + "%m/%d/%y", + "%H:%M", + v58); + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + v58); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 7: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 0, + 23, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + goto LABEL_47; + goto LABEL_32; + case 8: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 1, + 12, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) +LABEL_47: + a6[2] = v57; + goto LABEL_32; + case 12: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 0, + 59, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + a6[1] = v57; + goto LABEL_32; + case 17: + (*(void (__thiscall **)(void *, const char *, const char *, wchar_t *))(*(_DWORD *)v10 + 44))( + v10, + "%H:%M", + "%H:%M:%S", + v58); + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + v58); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 18: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 0, + 61, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + *a6 = v57; + goto LABEL_32; + case 19: + (*(void (__thiscall **)(void *, const char *, void *, wchar_t *))(*(_DWORD *)v10 + 44))( + v10, + "%H:%M:%S", + &unk_4ED73A, + v58); + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + v58); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 23: + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + *(wchar_t **)(v55[2] + 16)); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 25: + v35 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 1, v35) ) + goto LABEL_29; + LODWORD(a1) = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + v58, + (int)std::__timepunct_cache::_S_timezones, + 14, + a4, + &v56); + WORD2(a1) = v36; + v37 = std::istreambuf_iterator::equal(&a1, (int)&a2); + v12 = WORD2(a1); + if ( v37 || *(_DWORD *)v58 | v56 ) + goto LABEL_31; + v38 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( v38 != (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 45) ) + { + v39 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( v39 != (*(unsigned __int16 (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 43) ) + goto LABEL_30; + } + LODWORD(a1) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + (int *)v58, + 0, + 23, + 2u, + a4, + &v56); + WORD2(a1) = v40; + LODWORD(a1) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + v40, + a2, + (__int16)a3, + (int *)v58, + 0, + 59, + 2u, + a4, + &v56); + WORD2(a1) = v12; + goto LABEL_31; + case 32: + v34 = (_DWORD *)v55[2]; + *(_DWORD *)v58 = v34[18]; + v59 = v34[19]; + v60 = v34[20]; + v61 = v34[21]; + v62 = v34[22]; + v63 = v34[23]; + v64 = v34[24]; + v13 = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v57, + (int)v58, + 7, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) +LABEL_54: + a6[6] = v57; + goto LABEL_32; + case 33: + case 39: + v33 = (_DWORD *)v55[2]; + *(_DWORD *)v58 = v33[37]; + v59 = v33[38]; + v60 = v33[39]; + v61 = v33[40]; + v62 = v33[41]; + v63 = v33[42]; + v64 = v33[43]; + v65 = v33[44]; + v66 = v33[45]; + v67 = v33[46]; + v68 = v33[47]; + v69 = v33[48]; + v13 = std::time_get>::_M_extract_name( + (_DWORD *)a1, + SHIDWORD(a1), + a2, + a3, + &v57, + (int)v58, + 12, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) +LABEL_45: + a6[4] = v57; + goto LABEL_32; + case 34: + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + *(wchar_t **)(v55[2] + 24)); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + case 35: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 1, + 31, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + goto LABEL_57; + goto LABEL_32; + case 36: + v43 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( (*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v10 + 8))(v10, 32, v43) ) + { + v44 = *(_DWORD *)(a1 + 8); + if ( v44 >= *(_DWORD *)(a1 + 12) ) + std::wstreambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v44 + 2; + WORD2(a1) = -1; + LODWORD(a1) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + -1, + a2, + (__int16)a3, + &v57, + 1, + 9, + 1u, + a4, + &v56); + WORD2(a1) = v45; + } + else + { + LODWORD(a1) = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 10, + 31, + 2u, + a4, + &v56); + WORD2(a1) = v50; + } + v12 = WORD2(a1); + v13 = (_DWORD *)a1; + if ( !v56 ) +LABEL_57: + a6[3] = v57; + goto LABEL_32; + case 44: + v13 = std::time_get>::_M_extract_num( + (_DWORD *)a1, + SWORD2(a1), + a2, + (__int16)a3, + &v57, + 1, + 12, + 2u, + a4, + &v56); + LODWORD(a1) = v13; + WORD2(a1) = v12; + if ( !v56 ) + a6[4] = v57 - 1; + goto LABEL_32; + case 45: + v46 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v46, 0) != 10 ) + goto LABEL_29; + goto LABEL_82; + case 51: + v48 = std::istreambuf_iterator::_M_get((_DWORD **)&a1, WORD2(a1)); + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, v48, 0) != 9 ) + goto LABEL_29; +LABEL_82: + v13 = (_DWORD *)a1; + v47 = *(_DWORD *)(a1 + 8); + if ( v47 >= *(_DWORD *)(a1 + 12) ) + { + std::wstreambuf::sbumpc(a1); + v13 = (_DWORD *)a1; + } + else + { + *(_DWORD *)(a1 + 8) = v47 + 2; + } + v12 = -1; + WORD2(a1) = -1; + goto LABEL_32; + case 55: + v13 = (_DWORD *)std::time_get>::_M_extract_via_format( + a1, + SHIDWORD(a1), + (int)a2, + (int)a3, + a4, + (int)&v56, + (int)a6, + *(wchar_t **)(v55[2] + 8)); + LODWORD(a1) = v13; + WORD2(a1) = v12; + goto LABEL_32; + default: + goto LABEL_29; + } + } + v20 = v9 + 2; + v22 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v10 + 48))(v10, a7[v19 + 2], 0) - 65; + if ( (unsigned __int8)v22 <= 0x38u ) + goto LABEL_11; +LABEL_29: + v56 |= 4u; +LABEL_30: + v12 = WORD2(a1); +LABEL_31: + v13 = (_DWORD *)a1; +LABEL_32: + v9 = v20 + 1; + } + else + { + v23 = WORD2(a1); + v13 = (_DWORD *)a1; + v24 = *v53; + if ( WORD2(a1) == 0xFFFF && (_DWORD)a1 ) + { + v31 = *(__int16 **)(a1 + 8); + if ( (unsigned int)v31 >= *(_DWORD *)(a1 + 12) ) + v23 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 36))(a1); + else + v23 = *v31; + if ( v23 == -1 ) + { + LODWORD(a1) = 0; + v13 = 0; + } + else + { + v13 = (_DWORD *)a1; + } + } + if ( v24 == v23 ) + { + v30 = v13[2]; + if ( v30 >= v13[3] ) + { + std::wstreambuf::sbumpc((int)v13); + v13 = (_DWORD *)a1; + } + else + { + v13[2] = v30 + 2; + } + v9 = v20; + v12 = -1; + WORD2(a1) = -1; + } + else + { + v56 |= 4u; + v12 = WORD2(a1); + v9 = v20; + } + } + } + v18 = v56; + a2 = 0; + if ( v14 != v17 ) + goto LABEL_5; +LABEL_20: + if ( v18 || v9 != v52 ) +LABEL_22: + *a5 |= 4u; + return a1; +} +// 47C2ED: variable 'v12' is possibly undefined +// 47CF84: variable 'v36' is possibly undefined +// 47D0AE: variable 'v40' is possibly undefined +// 47D4F8: variable 'v45' is possibly undefined +// 47D800: variable 'v50' is possibly undefined +// 4E9520: using guessed type wchar_t *std::__timepunct_cache::_S_timezones[11]; + +//----- (0047D830) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::_M_extract_wday_or_month( + _DWORD *a1, + int a2, + _DWORD *a3, + __int16 a4, + _DWORD *a5, + int a6, + unsigned int a7, + int a8, + _DWORD *a9) +{ + void *v9; // edi + int v10; // eax + void *v11; // esp + void *v12; // esp + char v13; // dl + char v14; // bl + char v15; // bl + int *v16; // edi + unsigned int v17; // esi + char v18; // dl + char v19; // dl + unsigned __int8 v20; // bl + unsigned int v21; // edx + unsigned int *v22; // ecx + int v23; // ebx + unsigned int v24; // eax + __int16 *v25; // eax + __int16 v26; // cx + __int16 *v28; // eax + __int16 v29; // cx + __int16 *v30; // eax + int v31; // eax + int v32; // edx + int v33; // ebx + __int16 v34; // ax + int v35; // ecx + unsigned int v36; // eax + int v37; // eax + void *v38; // esp + void *v39; // esp + int v40; // esi + int v41; // ebx + __int16 *v42; // eax + __int16 v43; // cx + _WORD *v44; // eax + __int16 v45; // ax + __int16 v46; // ax + __int16 v47; // ax + _WORD *v48; // eax + int v49; // eax + __int16 v50; // ax + int v51; // [esp+10h] [ebp-48h] BYREF + int v52; // [esp+14h] [ebp-44h] + _DWORD *v53; // [esp+18h] [ebp-40h] + char v54; // [esp+1Fh] [ebp-39h] + _DWORD *v55; // [esp+20h] [ebp-38h] + unsigned int v56; // [esp+24h] [ebp-34h] + __int16 v57; // [esp+28h] [ebp-30h] + __int16 v58; // [esp+2Ah] [ebp-2Eh] + int v59; // [esp+2Ch] [ebp-2Ch] + int *v60; // [esp+30h] [ebp-28h] + int *v61; // [esp+34h] [ebp-24h] + unsigned int v62; // [esp+38h] [ebp-20h] + unsigned int v63; // [esp+3Ch] [ebp-1Ch] + + v52 = a2; + v57 = a2; + v55 = a1; + v53 = a3; + v9 = std::use_facet>(a8 + 108); + v10 = 16 * ((8 * a7 + 27) >> 4); + v11 = alloca(v10); + v12 = alloca(v10); + v61 = &v51; + v13 = (_WORD)a2 == 0xFFFF; + LOBYTE(v62) = v13 & (a1 != 0); + if ( (_BYTE)v62 ) + { + v44 = (_WORD *)v55[2]; + v45 = (unsigned int)v44 >= v55[3] ? (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55) : *v44; + v13 = 0; + if ( v45 == -1 ) + { + v13 = v62; + v55 = 0; + LOBYTE(v62) = 0; + } + } + v54 = a4 == -1; + v14 = v54 & (a3 != 0); + if ( v14 ) + { + v42 = (__int16 *)a3[2]; + if ( (unsigned int)v42 >= a3[3] ) + { + v49 = *a3; + LOBYTE(v63) = v13; + v50 = (*(int (__fastcall **)(_DWORD *))(v49 + 36))(a3); + v13 = v63; + v43 = v50; + } + else + { + v43 = *v42; + } + v53 = v43 == -1 ? 0 : a3; + v15 = v43 != -1 ? 0 : v14; + } + else + { + v15 = v54; + } + if ( v15 == v13 ) + { + v62 = 0; + v16 = 0; + v17 = 0; + goto LABEL_6; + } + LOWORD(v63) = v57; + if ( (_BYTE)v62 ) + { + v48 = (_WORD *)v55[2]; + if ( (unsigned int)v48 >= v55[3] ) + LOWORD(v63) = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + else + LOWORD(v63) = *v48; + v55 = (_WORD)v63 == 0xFFFF ? 0 : v55; + } + v62 = 2 * a7; + if ( 2 * a7 ) + { + v32 = a6; + v33 = 0; + v17 = 0; + while ( 1 ) + { + v35 = **(unsigned __int16 **)(v32 + 4 * v33); + if ( (_WORD)v35 == (_WORD)v63 + || (a6 = v32, + v34 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v9 + 24))(v9, v35), + v32 = a6, + v34 == (_WORD)v63) ) + { + v61[v17++] = v33; + if ( ++v33 == v62 ) + { +LABEL_52: + if ( v17 ) + { + v36 = v55[2]; + if ( v36 >= v55[3] ) + std::wstreambuf::sbumpc((int)v55); + else + v55[2] = v36 + 2; + v37 = 16 * ((4 * v17 + 27) >> 4); + v38 = alloca(v37); + v39 = alloca(v37); + v63 = v17; + v62 = (unsigned int)&v51; + v60 = &v51; + v40 = 0; + v41 = (int)v61; + do + { + *(_DWORD *)(v62 + 4 * v40) = wcslen(*(const wchar_t **)(a6 + 4 * *(_DWORD *)(v41 + 4 * v40))); + ++v40; + } + while ( v63 != v40 ); + v17 = v63; + v16 = v60; + v62 = 1; + v57 = -1; + } + else + { + v62 = 0; + v16 = 0; + } + goto LABEL_6; + } + } + else if ( ++v33 == v62 ) + { + goto LABEL_52; + } + } + } + v17 = 0; + v16 = 0; +LABEL_6: + while ( 2 ) + { + LOBYTE(v63) = v57 == -1; + v18 = v63 & (v55 != 0); + if ( v18 ) + { + v28 = (__int16 *)v55[2]; + if ( (unsigned int)v28 >= v55[3] ) + { + LOBYTE(v60) = v63 & (v55 != 0); + v46 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + v18 = (char)v60; + v29 = v46; + } + else + { + v29 = *v28; + } + v55 = v29 == -1 ? 0 : v55; + v19 = v29 != -1 ? 0 : v18; + } + else + { + v19 = v63; + } + v20 = v54 & (v53 != 0); + if ( v20 ) + { + v25 = (__int16 *)v53[2]; + if ( (unsigned int)v25 >= v53[3] ) + { + LOBYTE(v60) = v19; + v47 = (*(int (__fastcall **)(_DWORD *))(*v53 + 36))(v53); + v19 = (char)v60; + v26 = v47; + } + else + { + v26 = *v25; + } + v53 = v26 == -1 ? 0 : v53; + if ( v19 == ((unsigned __int8)((v26 != -1) - 1) & v20) ) + break; + } + else if ( v19 == v54 ) + { + break; + } + if ( v55 && (_BYTE)v63 ) + { + v30 = (__int16 *)v55[2]; + if ( (unsigned int)v30 >= v55[3] ) + v58 = (*(int (__fastcall **)(_DWORD *))(*v55 + 36))(v55); + else + v58 = *v30; + v55 = v58 == -1 ? 0 : v55; + } + else + { + v58 = v57; + } + if ( !v17 ) + { +LABEL_30: + *a9 |= 4u; + goto LABEL_31; + } + v63 = (unsigned int)v16; + v21 = 0; + v59 = 0; + v56 = 2 * v62; + do + { + while ( 1 ) + { + v22 = (unsigned int *)(v63 + 4 * v21); + if ( *v22 > v62 ) + break; + ++v59; + ++v21; +LABEL_16: + if ( v21 >= v17 ) + goto LABEL_20; + } + v23 = v61[v21]; + v60 = &v61[v21]; + if ( *(_WORD *)(*(_DWORD *)(a6 + 4 * v23) + v56) == v58 ) + { + ++v21; + goto LABEL_16; + } + *v60 = v61[--v17]; + *v22 = *(_DWORD *)(v63 + 4 * v17); + } + while ( v21 < v17 ); +LABEL_20: + v16 = (int *)v63; + if ( v59 != v17 ) + { + v24 = v55[2]; + if ( v24 >= v55[3] ) + (*(void (__fastcall **)(_DWORD *))(*v55 + 40))(v55); + else + v55[2] = v24 + 2; + ++v62; + v57 = -1; + continue; + } + break; + } + if ( v17 != 1 ) + { + if ( v17 == 2 && (*v16 == v62 || v16[1] == v62) ) + goto LABEL_42; + goto LABEL_30; + } + if ( *v16 != v62 ) + goto LABEL_30; +LABEL_42: + v31 = *v61; + if ( *v61 >= a7 ) + v31 -= a7; + *a5 = v31; +LABEL_31: + LOWORD(v52) = v57; + return v55; +} + +//----- (0047DD10) -------------------------------------------------------- +int __thiscall std::time_get>::get( + void *this, + int a2, + int a3, + _DWORD *a4, + int a5, + _DWORD *a6, + _DWORD *a7, + _DWORD *a8, + unsigned __int16 *a9, + unsigned __int16 *a10) +{ + int v10; // ebx + unsigned __int16 *v11; // edi + void *v13; // esi + int v14; // eax + int v15; // edx + int v16; // edx + unsigned int v17; // eax + bool v18; // dl + char v19; // dl + char v20; // al + __int16 v21; // bx + void *v22; // eax + int v23; // edx + _DWORD *v24; // ebx + __int64 v25; // rax + char v26; // di + unsigned __int16 *v28; // edi + unsigned __int8 v29; // dl + unsigned __int16 v30; // ax + unsigned int v31; // eax + char v32; // di + unsigned __int16 *v33; // eax + int v34; // eax + __int16 *v35; // eax + __int16 v36; // ax + unsigned __int16 *v37; // eax + unsigned __int16 *v38; // eax + int v39; // eax + __int16 *v40; // eax + __int16 v41; // ax + void *v42; // eax + unsigned __int16 *v43; // eax + _WORD *v44; // eax + __int64 v45; // [esp+30h] [ebp-8Ch] + int v46; // [esp+30h] [ebp-8Ch] + __int16 v47; // [esp+5Ah] [ebp-62h] + unsigned __int16 v48; // [esp+5Eh] [ebp-5Eh] + bool v50; // [esp+64h] [ebp-58h] + unsigned __int16 *v51; // [esp+64h] [ebp-58h] + unsigned __int8 v52; // [esp+64h] [ebp-58h] + unsigned __int8 v53; // [esp+6Fh] [ebp-4Dh] + unsigned __int8 v54; // [esp+71h] [ebp-4Bh] + char v55; // [esp+78h] [ebp-44h] + char v56; // [esp+78h] [ebp-44h] + __int16 v57; // [esp+7Eh] [ebp-3Eh] + wchar_t v59; // [esp+98h] [ebp-24h] BYREF + __int16 v60; // [esp+9Ah] [ebp-22h] + __int16 v61; // [esp+9Ch] [ebp-20h] + __int16 v62; // [esp+9Eh] [ebp-1Eh] + unsigned __int16 *v63; // [esp+DCh] [ebp+20h] + + v10 = a5; + v11 = a9; + v48 = a3; + v13 = std::use_facet>((int)(a6 + 27)); + *a7 = 0; + if ( a9 != a10 ) + { + v54 = (_WORD)a5 == 0xFFFF; + while ( 1 ) + { + v50 = v48 == 0xFFFF; + v18 = v50 && a2 != 0; + if ( v18 ) + { + v40 = *(__int16 **)(a2 + 8); + if ( (unsigned int)v40 >= *(_DWORD *)(a2 + 12) ) + { + v41 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + v18 = v50 && a2 != 0; + } + else + { + v41 = *v40; + } + a2 = v41 == -1 ? 0 : a2; + v19 = v41 == -1 && v18; + } + else + { + v19 = v48 == 0xFFFF; + } + LOBYTE(v10) = v54 & (a4 != 0); + if ( (_BYTE)v10 ) + { + v38 = (unsigned __int16 *)a4[2]; + if ( (unsigned int)v38 >= a4[3] ) + { + v55 = v19; + v39 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v19 = v55; + } + else + { + v39 = *v38; + } + a4 = (_WORD)v39 == 0xFFFF ? 0 : a4; + LOBYTE(v39) = (_WORD)v39 != 0xFFFF; + v10 &= v39 - 1; + if ( v19 == (_BYTE)v10 ) + { +LABEL_63: + *a7 = 6; + return a2; + } + } + else + { + v10 = v54; + if ( v19 == v54 ) + goto LABEL_63; + } + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v13 + 48))(v13, *v11, 0) == 37 ) + { + v51 = v11 + 1; + if ( a10 == v11 + 1 ) + goto LABEL_90; + v20 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v13 + 48))(v13, v11[1], 0); + v21 = v20; + if ( v20 == 69 || v20 == 79 ) + { + v51 = v11 + 2; + if ( a10 == v11 + 2 ) + goto LABEL_90; + (*(void (__thiscall **)(void *, _DWORD))(*(_DWORD *)v13 + 48))(v13, v11[2]); + LOWORD(v51) = v47; + v54 = v53; + HIWORD(v11) = a5; + v42 = std::use_facet>((int)this); + *a6 = 0; + v59 = (*(int (__thiscall **)(void *, int, int))(*(_DWORD *)v42 + 40))(v42, 37, v46); + HIWORD(v23) = v57; + if ( (_BYTE)v21 ) + { + v60 = v21; + v61 = (char)v47; + v62 = 0; +LABEL_27: + LOWORD(v11) = a5; + LODWORD(v45) = a2; + LOWORD(v23) = v48; + HIDWORD(v45) = v23; + v25 = std::time_get>::_M_extract_via_format( + v45, + a4, + (int *)v11, + (int)a6, + a7, + a8, + &v59); + v24 = (_DWORD *)v25; + a2 = v25; + v48 = WORD2(v25); + BYTE4(v25) = WORD2(v25) == 0xFFFF; + v26 = BYTE4(v25) & ((_DWORD)v25 != 0); + if ( v26 ) + { + LODWORD(v25) = *(_DWORD *)(v25 + 8); + if ( (unsigned int)v25 >= v24[3] ) + LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*v24 + 36))(v24); + else + LOWORD(v25) = *(_WORD *)v25; + BYTE4(v25) = (_WORD)v25 != 0xFFFF ? 0 : v26; + a2 = (_WORD)v25 == 0xFFFF ? 0 : (unsigned int)v24; + } + v10 = (int)a4; + if ( a4 && v54 ) + { + LODWORD(v25) = a4[2]; + if ( (unsigned int)v25 >= a4[3] ) + { + v56 = BYTE4(v25); + LOWORD(v25) = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + BYTE4(v25) = v56; + } + else + { + LOWORD(v25) = *(_WORD *)v25; + } + LOBYTE(v25) = (_WORD)v25 == 0xFFFF; + } + else + { + LOBYTE(v25) = v54; + } + if ( BYTE4(v25) == (_BYTE)v25 ) + *a7 |= 2u; + v11 = v51 + 1; + if ( a10 == v51 + 1 ) + return a2; + goto LABEL_16; + } + v21 = (char)v47; + } + else + { + HIWORD(v11) = HIWORD(a5); + v22 = std::use_facet>((int)(a6 + 27)); + *a7 = 0; + v59 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v22 + 40))(v22, 37); + HIWORD(v23) = HIWORD(a3); + } + v60 = v21; + v61 = 0; + goto LABEL_27; + } + v14 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v13 + 8))(v13, 32, *v11); + if ( (_BYTE)v14 ) + break; + if ( a2 && v48 == 0xFFFF ) + { + v43 = *(unsigned __int16 **)(a2 + 8); + if ( (unsigned int)v43 >= *(_DWORD *)(a2 + 12) ) + v15 = (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + else + v15 = *v43; + a2 = (_WORD)v15 == 0xFFFF ? 0 : a2; + } + else + { + v15 = v48; + } + v10 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v13 + 32))(v13, v15); + if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v13 + 32))(v13, *v11) != (_WORD)v10 ) + { + if ( a2 && v48 == 0xFFFF ) + { + v44 = *(_WORD **)(a2 + 8); + v16 = (unsigned int)v44 >= *(_DWORD *)(a2 + 12) + ? (*(unsigned __int16 (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2) + : (unsigned __int16)*v44; + a2 = (_WORD)v16 == 0xFFFF ? 0 : a2; + } + else + { + v16 = v48; + } + v10 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v13 + 24))(v13, v16); + if ( (*(unsigned __int16 (__thiscall **)(void *, _DWORD))(*(_DWORD *)v13 + 24))(v13, *v11) != (_WORD)v10 ) + { +LABEL_90: + *a7 = 4; + return a2; + } + } + v17 = *(_DWORD *)(a2 + 8); + if ( v17 >= *(_DWORD *)(a2 + 12) ) + (*(void (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + else + *(_DWORD *)(a2 + 8) = v17 + 2; + ++v11; + v48 = -1; +LABEL_15: + if ( a10 == v11 ) + return a2; +LABEL_16: + if ( *a7 ) + return a2; + } + v28 = v11 + 1; + if ( a10 != v28 ) + { + v10 = (int)a10; + do + { + v14 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v13 + 8))(v13, 32, *v28); + if ( !(_BYTE)v14 ) + break; + ++v28; + } + while ( a10 != v28 ); + } + v63 = v28; + while ( 1 ) + { + LOBYTE(v14) = v48 == 0xFFFF; + v32 = v14; + LOBYTE(v10) = v14 & (a2 != 0); + if ( (_BYTE)v10 ) + { + v33 = *(unsigned __int16 **)(a2 + 8); + if ( (unsigned int)v33 >= *(_DWORD *)(a2 + 12) ) + v34 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + else + v34 = *v33; + a2 = (_WORD)v34 == 0xFFFF ? 0 : a2; + LOBYTE(v34) = (_WORD)v34 != 0xFFFF; + v10 &= v34 - 1; + v29 = v54 & (a4 != 0); + if ( !v29 ) + { +LABEL_41: + if ( v54 == (_BYTE)v10 ) + goto LABEL_56; + goto LABEL_42; + } + } + else + { + v10 = v14; + v29 = v54 & (a4 != 0); + if ( !v29 ) + goto LABEL_41; + } + v35 = (__int16 *)a4[2]; + if ( (unsigned int)v35 >= a4[3] ) + { + v52 = v29; + v36 = (*(int (__fastcall **)(_DWORD *))(*a4 + 36))(a4); + v29 = v52; + } + else + { + v36 = *v35; + } + a4 = v36 == -1 ? 0 : a4; + if ( ((unsigned __int8)((v36 != -1) - 1) & v29) == (_BYTE)v10 ) + goto LABEL_56; +LABEL_42: + if ( a2 && v32 ) + { + v37 = *(unsigned __int16 **)(a2 + 8); + if ( (unsigned int)v37 >= *(_DWORD *)(a2 + 12) ) + v30 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 36))(a2); + else + v30 = *v37; + a2 = v30 == 0xFFFF ? 0 : a2; + } + else + { + v30 = v48; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v13 + 8))(v13, 32, v30) ) + { +LABEL_56: + v11 = v63; + goto LABEL_15; + } + v31 = *(_DWORD *)(a2 + 8); + if ( v31 >= *(_DWORD *)(a2 + 12) ) + { + v14 = (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 40))(a2); + } + else + { + v14 = v31 + 2; + *(_DWORD *)(a2 + 8) = v14; + } + v48 = -1; + } + } + return a2; +} +// 47E296: variable 'v47' is possibly undefined +// 47E2A4: variable 'v53' is possibly undefined +// 47E2D5: variable 'v46' is possibly undefined +// 47E2E2: variable 'v57' is possibly undefined + +//----- (0047E4A0) -------------------------------------------------------- +int __stdcall std::time_get>::get( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char a7, + char a8) +{ + int *v8; // eax + int v9; // edx + unsigned int v10; // ecx + char v11; // bl + int v12; // edi + __int64 v13; // rax + __int16 *v15; // eax + __int16 v16; // ax + _DWORD *v17; // [esp+2Ch] [ebp-34h] + char v18; // [esp+33h] [ebp-2Dh] + wchar_t v19; // [esp+3Ch] [ebp-24h] BYREF + __int16 v20; // [esp+3Eh] [ebp-22h] + __int16 v21; // [esp+40h] [ebp-20h] + __int16 v22; // [esp+42h] [ebp-1Eh] + + v8 = (int *)std::use_facet>(a4 + 108); + v9 = *v8; + *a5 = 0; + v19 = (*(int (__thiscall **)(int *, int))(v9 + 40))(v8, 37); + if ( a8 ) + { + v21 = a7; + v20 = a8; + v22 = 0; + } + else + { + v20 = a7; + v21 = 0; + } + v13 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v19); + v10 = v13; + v11 = WORD2(v13) == 0xFFFF; + v12 = v13; + BYTE4(v13) = v11 & ((_DWORD)v13 != 0); + if ( BYTE4(v13) ) + { + LODWORD(v13) = *(_DWORD *)(v13 + 8); + if ( (unsigned int)v13 >= *(_DWORD *)(v10 + 12) ) + { + v18 = BYTE4(v13); + v17 = (_DWORD *)v10; + LOWORD(v13) = (*(int (**)(void))(*(_DWORD *)v10 + 36))(); + BYTE4(v13) = v18; + v10 = (unsigned int)v17; + } + else + { + LOWORD(v13) = *(_WORD *)v13; + } + v11 = (_WORD)v13 != 0xFFFF ? 0 : BYTE4(v13); + LODWORD(v13) = ((_WORD)v13 == 0xFFFF) - 1; + v12 = v13 & v10; + } + LOBYTE(v13) = (_WORD)a3 == 0xFFFF; + HIDWORD(v13) = v13; + if ( a2 && (_WORD)a3 == 0xFFFF ) + { + v15 = (__int16 *)a2[2]; + if ( (unsigned int)v15 >= a2[3] ) + v16 = (*(int (__fastcall **)(_DWORD *, _DWORD))(*a2 + 36))(a2, HIDWORD(v13)); + else + v16 = *v15; + BYTE4(v13) = v16 == -1; + } + if ( v11 == BYTE4(v13) ) + *a5 |= 2u; + return v12; +} + +//----- (0047E630) -------------------------------------------------------- +_DWORD *__stdcall std::time_get>::do_get( + __int64 a1, + _DWORD *a2, + int *a3, + int a4, + _DWORD *a5, + _DWORD *a6, + char a7, + char a8) +{ + void *v8; // eax + __int64 v9; // rax + _DWORD *v10; // ecx + _DWORD *v11; // ebp + __int16 v12; // bx + char v13; // di + char v14; // cl + __int16 *v16; // eax + __int16 v17; // ax + __int16 *v18; // eax + __int16 v19; // ax + int v20; // [esp+34h] [ebp-3Ch] + wchar_t v21; // [esp+4Ch] [ebp-24h] BYREF + __int16 v22; // [esp+4Eh] [ebp-22h] + __int16 v23; // [esp+50h] [ebp-20h] + __int16 v24; // [esp+52h] [ebp-1Eh] + + v8 = std::use_facet>(a4 + 108); + *a5 = 0; + v21 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v8 + 40))(v8, 37); + if ( a8 ) + { + v23 = a7; + v22 = a8; + v24 = 0; + } + else + { + v22 = a7; + v23 = 0; + } + v9 = std::time_get>::_M_extract_via_format(a1, a2, a3, a4, a5, a6, &v21); + v10 = (_DWORD *)v9; + v11 = (_DWORD *)v9; + v12 = WORD2(v9) == 0xFFFF; + v13 = v12 & ((_DWORD)v9 != 0); + if ( v13 ) + { + v18 = *(__int16 **)(v9 + 8); + if ( (unsigned int)v18 >= v10[3] ) + { + v20 = (int)v10; + v19 = (*(int (**)(void))(*v10 + 36))(); + v10 = (_DWORD *)v20; + } + else + { + v19 = *v18; + } + LOBYTE(v12) = v19 != -1 ? 0 : v13; + v11 = v19 == -1 ? 0 : v10; + } + v14 = (_WORD)a3 == 0xFFFF; + if ( a2 && (_WORD)a3 == 0xFFFF ) + { + v16 = (__int16 *)a2[2]; + if ( (unsigned int)v16 >= a2[3] ) + v17 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + else + v17 = *v16; + v14 = v17 == -1; + } + if ( (_BYTE)v12 == v14 ) + *a5 |= 2u; + return v11; +} + +//----- (0047E7F0) -------------------------------------------------------- +int __fastcall std::time_get>::get_date(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 16))(a1); +} + +//----- (0047E800) -------------------------------------------------------- +int __fastcall std::time_get>::get_time(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 12))(a1); +} + +//----- (0047E810) -------------------------------------------------------- +int __fastcall std::time_get>::get_year(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 28))(a1); +} + +//----- (0047E820) -------------------------------------------------------- +__int64 __thiscall std::time_put>::put( + void *this, + __int64 a2, + int a3, + char a4, + int a5, + unsigned __int8 *a6, + unsigned __int8 *a7) +{ + unsigned __int8 *v7; // ebx + _BYTE *v8; // eax + _BYTE *v9; // esi + int v10; // edx + _BYTE *v11; // eax + int v12; // ebp + unsigned __int8 *v13; // edi + signed __int8 v14; // dl + signed __int8 v15; // al + int (__stdcall *v16)(unsigned __int8, int); // edx + int v17; // ebp + signed __int8 v18; // dl + signed __int8 v19; // al + int (__stdcall *v20)(unsigned __int8, int); // edx + int v21; // ecx + int v22; // ebp + int v24; // ebx + char v25; // al + int (__stdcall *v26)(unsigned __int8, int); // edx + char v27; // [esp+27h] [ebp-35h] + __int64 v28; // [esp+28h] [ebp-34h] + __int64 v30; // [esp+38h] [ebp-24h] + + v7 = a6; + v27 = BYTE4(a2); + v28 = a2; + v8 = std::use_facet>(a3 + 108); + if ( a6 != a7 ) + { + v9 = v8; + while ( 1 ) + { + v12 = *v7; + v13 = v7 + 1; + v14 = v9[v12 + 285]; + v15 = *v7; + if ( !v14 ) + { + v16 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v9 + 32); + if ( v16 != std::ctype::do_narrow ) + v15 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v16)(v9, v15, 0); + if ( !v15 ) + goto LABEL_3; + v9[v12 + 285] = v15; + v14 = v15; + } + if ( v14 == 37 ) + { + if ( a7 == v13 ) + break; + v17 = v7[1]; + v18 = v9[v17 + 285]; + v19 = v7[1]; + if ( !v18 ) + { + v20 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v9 + 32); + if ( v20 != std::ctype::do_narrow ) + v19 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v20)(v9, v19, 0); + if ( !v19 ) + { + v21 = 0; + v22 = 0; + goto LABEL_22; + } + v9[v17 + 285] = v19; + v18 = v19; + } + if ( v18 == 69 || v18 == 79 ) + { + v13 = v7 + 2; + if ( a7 == v7 + 2 ) + break; + v24 = v7[2]; + v22 = v18; + v21 = (char)v9[v24 + 285]; + v25 = v24; + if ( !(_BYTE)v21 ) + { + v21 = (char)v24; + v26 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v9 + 32); + if ( v26 != std::ctype::do_narrow ) + { + v25 = ((int (__thiscall *)(_BYTE *, _DWORD, _DWORD))v26)(v9, (char)v24, 0); + v21 = v25; + } + if ( v25 ) + v9[v24 + 285] = v25; + } + } + else + { + v21 = v18; + v22 = 0; + } +LABEL_22: + BYTE4(v28) = v27; + v7 = v13 + 1; + v30 = ((__int64 (__thiscall *)(void *, _DWORD, _DWORD, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( + this, + v28, + HIDWORD(v28), + a3, + a4, + a5, + v21, + v22); + LODWORD(v28) = v30; + v27 = BYTE4(v30); + if ( a7 == v13 + 1 ) + break; + } + else + { +LABEL_3: + if ( v27 ) + { + ++v7; + } + else + { + v10 = *v7; + v11 = *(_BYTE **)(v28 + 20); + if ( (unsigned int)v11 >= *(_DWORD *)(v28 + 24) ) + { + ++v7; + v27 = (*(int (__thiscall **)(_DWORD, int))(*(_DWORD *)v28 + 52))(v28, v10) == -1; + } + else + { + *v11 = v10; + ++v7; + ++*(_DWORD *)(v28 + 20); + } + } + if ( a7 == v7 ) + break; + } + } + } + BYTE4(v28) = v27; + return v28; +} + +//----- (0047EAB0) -------------------------------------------------------- +int __thiscall std::time_put>::put( + void *this, + int a2, + int a3, + int a4, + char a5, + int a6, + char a7, + char a8) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( + this, + a2, + a3, + a4, + a5, + a6, + a7, + a8); +} + +//----- (0047EAD0) -------------------------------------------------------- +int __stdcall std::time_put>::do_put( + int a1, + char a2, + int a3, + int a4, + struct tm *a5, + char a6, + char a7) +{ + _BYTE *v7; // ebx + const char **v8; // eax + const char **v9; // edx + char v10; // cl + char *v11; // kr00_4 + int (__stdcall *v13)(unsigned __int8); // eax + const char **v14; // [esp+1Ch] [ebp-B0h] + char Format; // [esp+2Ch] [ebp-A0h] BYREF + char v16; // [esp+2Dh] [ebp-9Fh] + char v17; // [esp+2Eh] [ebp-9Eh] + char v18; // [esp+2Fh] [ebp-9Dh] + char Buffer[156]; // [esp+30h] [ebp-9Ch] BYREF + + v7 = std::use_facet>(a3 + 108); + v8 = (const char **)std::use_facet>(a3 + 108); + v9 = v8; + if ( v7[28] ) + { + v10 = v7[66]; + } + else + { + v14 = v8; + std::ctype::_M_widen_init((int)v7); + v9 = v14; + v10 = 37; + v13 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v7 + 24); + if ( v13 != std::ctype::do_widen ) + { + v10 = ((int (__fastcall *)(_BYTE *, const char **, int))v13)(v7, v14, 37); + v9 = v14; + } + } + Format = v10; + if ( a7 ) + { + v16 = a7; + v18 = 0; + v17 = a6; + } + else + { + v17 = 0; + v16 = a6; + } + std::__timepunct::_M_put(v9, Buffer, 0x80u, &Format, a5); + v11 = &Buffer[strlen(Buffer)]; + if ( !a2 ) + (*(int (__thiscall **)(int, char *, int))(*(_DWORD *)a1 + 48))(a1, Buffer, v11 - Buffer); + return a1; +} +// 47EAD0: using guessed type char var_9C[156]; + +//----- (0047EC50) -------------------------------------------------------- +_DWORD *__thiscall std::time_put>::put( + void *this, + _DWORD *a2, + int a3, + int a4, + unsigned __int16 a5, + int a6, + unsigned __int16 *a7, + unsigned __int16 *a8) +{ + int v8; // ebp + unsigned __int16 *v9; // ebx + void *v10; // eax + void *v11; // esi + unsigned __int16 v12; // ax + unsigned __int16 *v13; // edx + unsigned __int16 *v14; // edi + char v15; // al + int v16; // edx + int v17; // eax + int v18; // ecx + int v19; // ebp + __int64 v20; // rax + int v21; // ecx + char v23; // cl + char v26; // [esp+46h] [ebp-26h] + char v27; // [esp+47h] [ebp-25h] + + v8 = a3; + v9 = a7; + v26 = a3; + v10 = std::use_facet>(a4 + 108); + if ( a7 != a8 ) + { + v11 = v10; + do + { + while ( 1 ) + { + v14 = v9 + 1; + if ( (*(unsigned __int8 (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, *v9, 0) != 37 ) + break; + if ( a8 == v14 ) + return a2; + v15 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[1], 0); + v16 = v15; + if ( v15 == 69 || (v17 = 0, (_BYTE)v16 == 79) ) + { + v27 = v16; + v14 = v9 + 2; + if ( a8 == v9 + 2 ) + return a2; + v23 = (*(int (__thiscall **)(void *, _DWORD, _DWORD))(*(_DWORD *)v11 + 48))(v11, v9[2], 0); + v17 = v27; + v16 = v23; + } + v18 = v8; + LOBYTE(v18) = v26; + v19 = v18; + v20 = ((__int64 (__thiscall *)(void *, _DWORD *, int, int, _DWORD, int, int, int))*(_DWORD *)(*(_DWORD *)this + 8))( + this, + a2, + v18, + a4, + a5, + a6, + v16, + v17); + v21 = v19; + v9 = v14 + 1; + LOBYTE(v21) = BYTE4(v20); + v8 = v21; + a2 = (_DWORD *)v20; + v26 = BYTE4(v20); + if ( a8 == v14 + 1 ) + return a2; + } + if ( v26 ) + { + ++v9; + } + else + { + v12 = *v9; + v13 = (unsigned __int16 *)a2[5]; + if ( (unsigned int)v13 >= a2[6] ) + { + v12 = (*(int (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, *v9); + } + else + { + *v13 = v12; + a2[5] = v13 + 1; + } + ++v9; + if ( v12 == 0xFFFF ) + v26 = 1; + } + } + while ( a8 != v9 ); + } + return a2; +} + +//----- (0047EE20) -------------------------------------------------------- +int __thiscall std::time_put>::put( + void *this, + int a2, + int a3, + int a4, + unsigned __int16 a5, + int a6, + char a7, + char a8) +{ + return (*(int (__thiscall **)(void *, int, int, int, _DWORD, int, _DWORD, _DWORD))(*(_DWORD *)this + 8))( + this, + a2, + a3, + a4, + a5, + a6, + a7, + a8); +} + +//----- (0047EE40) -------------------------------------------------------- +int __stdcall std::time_put>::do_put( + int a1, + char a2, + int a3, + int a4, + struct tm *a5, + char a6, + char a7) +{ + const char **v7; // ebx + size_t v8; // ebx + void *v10; // [esp+1Ch] [ebp-134h] + wchar_t Format; // [esp+2Ch] [ebp-124h] BYREF + __int16 v12; // [esp+2Eh] [ebp-122h] + __int16 v13; // [esp+30h] [ebp-120h] + __int16 v14; // [esp+32h] [ebp-11Eh] + wchar_t Buffer[142]; // [esp+34h] [ebp-11Ch] BYREF + + v10 = std::use_facet>(a3 + 108); + v7 = (const char **)std::use_facet>(a3 + 108); + Format = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v10 + 40))(v10, 37); + if ( a7 ) + { + v13 = a6; + v12 = a7; + v14 = 0; + } + else + { + v12 = a6; + v13 = 0; + } + std::__timepunct::_M_put(v7, Buffer, 0x80u, &Format, a5); + v8 = wcslen(Buffer); + if ( !a2 ) + (*(int (__thiscall **)(int, wchar_t *, size_t))(*(_DWORD *)a1 + 48))(a1, Buffer, v8); + return a1; +} + +//----- (0047EF60) -------------------------------------------------------- +const char *std::bad_alloc::what() +{ + return "std::bad_alloc"; +} + +//----- (0047EF70) -------------------------------------------------------- +int __fastcall std::ios::exceptions(int a1) +{ + return *(_DWORD *)(a1 + 16); +} + +//----- (0047EF80) -------------------------------------------------------- +int __fastcall std::ios::bad(int a1) +{ + return *(_DWORD *)(a1 + 20) & 1; +} + +//----- (0047EF90) -------------------------------------------------------- +int __fastcall std::ios::eof(int a1) +{ + return (*(_DWORD *)(a1 + 20) >> 1) & 1; +} + +//----- (0047EFA0) -------------------------------------------------------- +int __fastcall std::ios::tie(int a1) +{ + return *(_DWORD *)(a1 + 112); +} + +//----- (0047EFB0) -------------------------------------------------------- +bool __fastcall std::ios::fail(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) != 0; +} + +//----- (0047EFC0) -------------------------------------------------------- +int __fastcall std::ios::fill(int a1) +{ + int result; // eax + _BYTE *v3; // esi + int (__stdcall *v4)(unsigned __int8); // edx + + if ( *(_BYTE *)(a1 + 117) ) + return *(unsigned __int8 *)(a1 + 116); + v3 = *(_BYTE **)(a1 + 124); + if ( !v3 ) + std::__throw_bad_cast(); + if ( v3[28] ) + { + result = (unsigned __int8)v3[61]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)(a1 + 124)); + v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); + result = 32; + if ( v4 != std::ctype::do_widen ) + result = ((int (__thiscall *)(_BYTE *, int))v4)(v3, 32); + } + *(_BYTE *)(a1 + 116) = result; + *(_BYTE *)(a1 + 117) = 1; + return result; +} + +//----- (0047F030) -------------------------------------------------------- +bool __fastcall std::ios::good(int a1) +{ + return *(_DWORD *)(a1 + 20) == 0; +} + +//----- (0047F040) -------------------------------------------------------- +int __fastcall std::ios::rdbuf(int a1) +{ + return *(_DWORD *)(a1 + 120); +} + +//----- (0047F050) -------------------------------------------------------- +int __thiscall std::ios::widen(int *this, int a2) +{ + _BYTE *v2; // ebx + int result; // eax + int (__stdcall *v4)(unsigned __int8); // edx + + v2 = (_BYTE *)this[31]; + if ( !v2 ) + std::__throw_bad_cast(); + if ( v2[28] ) + return (unsigned __int8)v2[(unsigned __int8)a2 + 29]; + std::ctype::_M_widen_init(this[31]); + v4 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); + result = a2; + if ( v4 != std::ctype::do_widen ) + return ((int (__thiscall *)(_BYTE *, _DWORD))v4)(v2, (char)a2); + return result; +} + +//----- (0047F0B0) -------------------------------------------------------- +int __thiscall std::ios::narrow(_DWORD *this, int a2, int a3) +{ + int v3; // ebx + int result; // eax + int v5; // ecx + int (__stdcall *v6)(unsigned __int8, int); // ebp + + v3 = this[31]; + if ( !v3 ) + std::__throw_bad_cast(); + result = *(unsigned __int8 *)(v3 + (unsigned __int8)a2 + 285); + if ( !(_BYTE)result ) + { + v5 = a2; + v6 = *(int (__stdcall **)(unsigned __int8, int))(*(_DWORD *)v3 + 32); + if ( v6 != std::ctype::do_narrow ) + v5 = ((int (__thiscall *)(int, _DWORD, _DWORD))v6)(v3, (char)a2, (char)a3); + result = a3; + if ( (_BYTE)a3 != (_BYTE)v5 ) + { + *(_BYTE *)(v3 + (unsigned __int8)a2 + 285) = v5; + return v5; + } + } + return result; +} + +//----- (0047F120) -------------------------------------------------------- +int __fastcall std::ios::rdstate(int a1) +{ + return *(_DWORD *)(a1 + 20); +} + +//----- (0047F130) -------------------------------------------------------- +int __fastcall std::ios::operator void *(int a1) +{ + return (*(_DWORD *)(a1 + 20) & 5) == 0 ? a1 : 0; +} + +//----- (0047F140) -------------------------------------------------------- +bool __fastcall std::ios::operator bool(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) == 0; +} + +//----- (0047F150) -------------------------------------------------------- +bool __fastcall std::ios::operator!(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) != 0; +} + +//----- (0047F160) -------------------------------------------------------- +int __fastcall std::wios::exceptions(int a1) +{ + return *(_DWORD *)(a1 + 16); +} + +//----- (0047F170) -------------------------------------------------------- +int __fastcall std::wios::bad(int a1) +{ + return *(_DWORD *)(a1 + 20) & 1; +} + +//----- (0047F180) -------------------------------------------------------- +int __fastcall std::wios::eof(int a1) +{ + return (*(_DWORD *)(a1 + 20) >> 1) & 1; +} + +//----- (0047F190) -------------------------------------------------------- +int __fastcall std::wios::tie(int a1) +{ + return *(_DWORD *)(a1 + 112); +} + +//----- (0047F1A0) -------------------------------------------------------- +bool __fastcall std::wios::fail(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) != 0; +} + +//----- (0047F1B0) -------------------------------------------------------- +int __fastcall std::wios::fill(int a1) +{ + int result; // eax + int v3; // ecx + + if ( *(_BYTE *)(a1 + 118) ) + return *(unsigned __int16 *)(a1 + 116); + v3 = *(_DWORD *)(a1 + 124); + if ( !v3 ) + std::__throw_bad_cast(); + result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 32); + *(_BYTE *)(a1 + 118) = 1; + *(_WORD *)(a1 + 116) = result; + return result; +} + +//----- (0047F1F0) -------------------------------------------------------- +bool __fastcall std::wios::good(int a1) +{ + return *(_DWORD *)(a1 + 20) == 0; +} + +//----- (0047F200) -------------------------------------------------------- +int __fastcall std::wios::rdbuf(int a1) +{ + return *(_DWORD *)(a1 + 120); +} + +//----- (0047F210) -------------------------------------------------------- +int __thiscall std::wios::widen(_DWORD *this, char a2) +{ + int v2; // ecx + + v2 = this[31]; + if ( !v2 ) + std::__throw_bad_cast(); + return (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); +} + +//----- (0047F240) -------------------------------------------------------- +int __thiscall std::wios::narrow(_DWORD *this, unsigned __int16 a2, char a3) +{ + int v3; // ecx + + v3 = this[31]; + if ( !v3 ) + std::__throw_bad_cast(); + return (*(int (__thiscall **)(int, _DWORD, _DWORD))(*(_DWORD *)v3 + 48))(v3, a2, a3); +} + +//----- (0047F280) -------------------------------------------------------- +int __fastcall std::wios::rdstate(int a1) +{ + return *(_DWORD *)(a1 + 20); +} + +//----- (0047F290) -------------------------------------------------------- +int __fastcall std::wios::operator void *(int a1) +{ + return (*(_DWORD *)(a1 + 20) & 5) == 0 ? a1 : 0; +} + +//----- (0047F2A0) -------------------------------------------------------- +bool __fastcall std::wios::operator bool(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) == 0; +} + +//----- (0047F2B0) -------------------------------------------------------- +bool __fastcall std::wios::operator!(int a1) +{ + return (*(_BYTE *)(a1 + 20) & 5) != 0; +} + +//----- (0047F2C0) -------------------------------------------------------- +const char *_ZGTtNKSt9exception4whatEv() +{ + return "std::exception"; +} + +//----- (0047F2D0) -------------------------------------------------------- +int __stdcall std::money_get>::_M_extract( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // esi + int *v7; // edi + int v8; // ebx + bool v9; // zf + char v10; // si + int v11; // edi + int v12; // eax + _DWORD *v13; // ecx + char v14; // si + char v15; // si + _BYTE *v16; // eax + int v17; // eax + _DWORD *v18; // ecx + int v19; // edi + volatile signed __int32 *v20; // eax + unsigned int v21; // eax + char v22; // si + char v23; // di + char v24; // al + char v25; // di + int v26; // edi + _BYTE *v27; // eax + int v28; // edi + char v29; // cl + volatile signed __int32 *v30; // eax + char v31; // di + _DWORD *v32; // ecx + int v33; // eax + char v34; // si + char v35; // di + int v36; // eax + _BYTE *v37; // eax + int v38; // eax + _DWORD *v39; // ecx + char v40; // al + int v41; // eax + unsigned __int8 *v42; // eax + char v43; // di + int v44; // edx + _BYTE *v45; // eax + char v46; // al + char v47; // bl + char v48; // al + char v49; // bl + int v50; // ebx + int v52; // edx + int v53; // eax + unsigned int v54; // eax + int v55; // eax + int v56; // eax + std::string *v57; // eax + int v58; // edx + unsigned int first_not_of; // eax + unsigned int v60; // edx + unsigned int v61; // eax + std::locale::_Impl *v62; // eax + std::locale::_Impl *v63; // ebx + volatile signed __int32 *v64; // eax + unsigned int v65; // eax + void (__cdecl *v66)(void *); // [esp+4h] [ebp-64h] + std::string *v67; // [esp+4h] [ebp-64h] + unsigned int v68; // [esp+8h] [ebp-60h] + unsigned int v69; // [esp+Ch] [ebp-5Ch] + char v70; // [esp+10h] [ebp-58h] + char v71; // [esp+18h] [ebp-50h] + unsigned int v72; // [esp+1Ch] [ebp-4Ch] + _DWORD *v73; // [esp+20h] [ebp-48h] + unsigned int v74; // [esp+24h] [ebp-44h] + int v75; // [esp+2Ch] [ebp-3Ch] + bool v76; // [esp+31h] [ebp-37h] + char v77; // [esp+32h] [ebp-36h] + char v78; // [esp+33h] [ebp-35h] + char v79; // [esp+34h] [ebp-34h] + int v80; // [esp+34h] [ebp-34h] + char v81; // [esp+34h] [ebp-34h] + unsigned int v82; // [esp+34h] [ebp-34h] + char v83; // [esp+34h] [ebp-34h] + char v84; // [esp+34h] [ebp-34h] + unsigned int Buf; // [esp+38h] [ebp-30h] + int v86; // [esp+3Ch] [ebp-2Ch] + int v87; // [esp+3Ch] [ebp-2Ch] + char v88; // [esp+43h] [ebp-25h] BYREF + volatile signed __int32 *v89; // [esp+44h] [ebp-24h] BYREF + volatile signed __int32 *v90; // [esp+48h] [ebp-20h] BYREF + int v91; // [esp+4Ch] [ebp-1Ch] + + v86 = a4 + 108; + v73 = std::use_facet>(a4 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * v6); + v8 = *v7; + if ( !*v7 ) + { + v62 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v66); + *(_DWORD *)v62 = &off_4F66C4; + v63 = v62; + *((_DWORD *)v62 + 1) = 0; + *((_DWORD *)v62 + 2) = 0; + *((_DWORD *)v62 + 3) = 0; + *((_WORD *)v62 + 8) = 0; + *((_BYTE *)v62 + 18) = 0; + *((_DWORD *)v62 + 5) = 0; + *((_DWORD *)v62 + 6) = 0; + *((_DWORD *)v62 + 7) = 0; + *((_DWORD *)v62 + 8) = 0; + *((_DWORD *)v62 + 9) = 0; + *((_DWORD *)v62 + 10) = 0; + *((_DWORD *)v62 + 11) = 0; + *((_DWORD *)v62 + 12) = 0; + *((_DWORD *)v62 + 13) = 0; + *((_BYTE *)v62 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v62, v86); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v63, (const std::locale::facet *)v6, v68); + v8 = *v7; + } + if ( *(_DWORD *)(v8 + 32) ) + v76 = *(_DWORD *)(v8 + 40) != 0; + else + v76 = 0; + v9 = *(_BYTE *)(v8 + 16) == 0; + v89 = (volatile signed __int32 *)&unk_4E93FC; + if ( !v9 ) + std::string::reserve((unsigned int **)&v89, (std::string *)0x20, (unsigned int)v66); + v90 = (volatile signed __int32 *)&unk_4E93FC; + std::string::reserve((unsigned int **)&v90, (std::string *)0x20, (unsigned int)v66); + v78 = 0; + v75 = 1; + v91 = *(_DWORD *)(v8 + 52); + v87 = 0; + v71 = 0; + v74 = 0; + v77 = 0; + while ( 2 ) + { + switch ( *((_BYTE *)&v90 + v75 + 3) ) + { + case 0: + v10 = 1; + goto LABEL_10; + case 1: + if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) + && (*(_BYTE *)(v73[6] + + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 0x20) != 0 ) + { + v54 = *(_DWORD *)(a1 + 8); + if ( v54 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v54 + 1; + HIDWORD(a1) = -1; + v10 = 1; +LABEL_10: + if ( v75 == 4 ) + goto LABEL_11; + goto LABEL_75; + } + v10 = 0; + if ( v75 != 4 ) + { +LABEL_75: + v38 = HIDWORD(a1); + v39 = (_DWORD *)a1; + while ( 1 ) + { + v43 = v38 == -1; + v84 = v43 & (v39 != 0); + if ( v84 ) + { + v43 = 0; + if ( v39[2] >= v39[3] && (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39) == -1 ) + { + LODWORD(a1) = 0; + v43 = v84; + } + } + v40 = a3 == -1; + v83 = v40 & (a2 != 0); + if ( v83 ) + { + v40 = 0; + if ( a2[2] >= a2[3] ) + { + v52 = (*(int (**)(void))(*a2 + 36))(); + v40 = 0; + if ( v52 == -1 ) + { + a2 = 0; + v40 = v83; + } + } + } + if ( v43 == v40 ) + goto LABEL_112; + LOBYTE(v41) = BYTE4(a1); + v39 = (_DWORD *)a1; + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v42 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(v73[6] + 2 * *v42) & 0x20) == 0 ) + goto LABEL_112; +LABEL_81: + v39[2] = v42 + 1; + goto LABEL_82; + } + v41 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v41 == -1 ) + LODWORD(a1) = 0; + } + if ( (*(_BYTE *)(v73[6] + 2 * (unsigned __int8)v41) & 0x20) == 0 ) + goto LABEL_112; + v39 = (_DWORD *)a1; + v42 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + goto LABEL_81; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v39 = (_DWORD *)a1; +LABEL_82: + HIDWORD(a1) = -1; + v38 = -1; + } + } +LABEL_11: + if ( ((unsigned __int8)v10 & (v74 > 1)) == 0 ) + { + if ( v10 ) + { + if ( *((_DWORD *)v90 - 3) > 1u ) + goto LABEL_175; + goto LABEL_152; + } + goto LABEL_99; + } + if ( v77 ) + v11 = *(_DWORD *)(v8 + 36); + else + v11 = *(_DWORD *)(v8 + 28); + v12 = HIDWORD(a1); + v13 = (_DWORD *)a1; + for ( Buf = 1; ; ++Buf ) + { + v14 = v12 == -1; + v79 = v14 & (v13 != 0); + if ( v79 ) + { + v14 = 0; + if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) + { + LODWORD(a1) = 0; + v14 = v79; + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v53 = (*(int (**)(void))(*a2 + 36))(); + v14 ^= v53 == -1; + if ( v53 == -1 ) + a2 = 0; + } + } + else + { + v14 ^= a3 == -1; + } + if ( Buf >= v74 || !v14 ) + break; + v13 = (_DWORD *)a1; + LOBYTE(v80) = BYTE4(a1); + v15 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; + if ( v15 ) + { + v16 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v16 < *(_DWORD *)(a1 + 12) ) + { + if ( *v16 != *(_BYTE *)(v11 + Buf) ) + { + v47 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; + goto LABEL_101; + } +LABEL_24: + v13[2] = v16 + 1; + goto LABEL_25; + } + v80 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v80 == -1 ) + { + LODWORD(a1) = 0; + v13 = 0; + } + else + { + v13 = (_DWORD *)a1; + } + } + if ( *(_BYTE *)(v11 + Buf) != (_BYTE)v80 ) + goto LABEL_100; + v16 = (_BYTE *)v13[2]; + if ( (unsigned int)v16 < v13[3] ) + goto LABEL_24; + (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); + v13 = (_DWORD *)a1; +LABEL_25: + v12 = -1; + HIDWORD(a1) = -1; + } + if ( Buf == v74 ) + { + if ( *((_DWORD *)v90 - 3) <= 1u ) + goto LABEL_152; +LABEL_175: + first_not_of = std::string::find_first_not_of((int *)&v90, (std::string *)0x30, 0, v68); + if ( first_not_of ) + { + v60 = *((_DWORD *)v90 - 3); + if ( first_not_of == -1 ) + first_not_of = v60 - 1; + if ( first_not_of > v60 ) + first_not_of = *((_DWORD *)v90 - 3); + std::string::_M_mutate(&v90, 0, first_not_of, 0, v69); + } +LABEL_152: + if ( v77 ) + { + v64 = v90; + if ( *((int *)v90 - 1) >= 0 ) + { + std::string::_M_leak_hard(&v90); + v64 = v90; + } + if ( *(_BYTE *)v64 != 48 ) + { + if ( *((int *)v64 - 1) >= 0 ) + std::string::_M_leak_hard(&v90); + std::string::_M_replace_aux(&v90, 0, 0, 1u, 45, v70); + *((_DWORD *)v90 - 1) = -1; + } + } + if ( *((_DWORD *)v89 - 3) ) + { + v57 = (std::string *)(char)v87; + if ( v78 ) + v57 = (std::string *)v71; + std::string::push_back((unsigned int **)&v89, v57, (char)v67); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)&v89) ) + *a5 |= 4u; + } + if ( !v78 || *(_DWORD *)(v8 + 44) == v87 ) + { + std::string::swap(a6, (std::string *)&v90, v67); + v13 = (_DWORD *)a1; + v15 = HIDWORD(a1) == -1; + v47 = v15 & ((_DWORD)a1 != 0); + if ( v47 ) + goto LABEL_161; + goto LABEL_102; + } + } +LABEL_99: + v13 = (_DWORD *)a1; +LABEL_100: + v15 = HIDWORD(a1) == -1; + v47 = v15 & (v13 != 0); +LABEL_101: + *a5 |= 4u; + if ( v47 ) + { +LABEL_161: + v15 = 0; + if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) + { + LODWORD(a1) = 0; + v15 = v47; + } + } +LABEL_102: + v48 = a3 == -1; + v49 = v48 & (a2 != 0); + if ( v49 ) + { + v48 = 0; + if ( a2[2] >= a2[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v48 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v48 = v49; + } + } + } + if ( v15 == v48 ) + *a5 |= 2u; + v50 = a1; + if ( v90 != (volatile signed __int32 *)&unk_4E93FC ) + std::string::_Rep::_M_dispose(v90 - 3, (int)&v88); + if ( v89 != (volatile signed __int32 *)&unk_4E93FC ) + std::string::_Rep::_M_dispose(v89 - 3, (int)&v88); + return v50; + case 2: + if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) + goto LABEL_62; + v31 = v75 == 1 || v74 > 1; + if ( v31 ) + goto LABEL_62; + if ( v75 == 2 ) + { + if ( !v76 && (_BYTE)v91 != 3 && BYTE2(v91) != 1 ) + goto LABEL_115; + } + else + { + v10 = 1; + if ( v75 != 3 ) + goto LABEL_113; + if ( HIBYTE(v91) != 4 && (HIBYTE(v91) != 3 || !v76) ) + goto LABEL_115; + } +LABEL_62: + v32 = (_DWORD *)a1; + v82 = 0; + v72 = *(_DWORD *)(v8 + 24); + v33 = HIDWORD(a1); + while ( 2 ) + { + v34 = v33 == -1; + v35 = v34 & (v32 != 0); + if ( v35 ) + { + v34 = 0; + if ( v32[2] >= v32[3] && (*(int (__fastcall **)(_DWORD *))(*v32 + 36))(v32) == -1 ) + { + LODWORD(a1) = 0; + v34 = v35; + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v55 = (*(int (**)(void))(*a2 + 36))(); + v34 ^= v55 == -1; + if ( v55 == -1 ) + a2 = 0; + } + } + else + { + v34 ^= a3 == -1; + } + v31 = (v82 < v72) & v34; + if ( v31 ) + { + LOBYTE(v36) = BYTE4(a1); + v32 = (_DWORD *)a1; + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_69; + v37 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v37 < *(_DWORD *)(a1 + 12) ) + { + if ( *v37 != *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) ) + goto LABEL_146; + goto LABEL_71; + } + v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v36 == -1 ) + LODWORD(a1) = 0; +LABEL_69: + if ( *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) != (_BYTE)v36 ) + goto LABEL_146; + v32 = (_DWORD *)a1; + v37 = *(_BYTE **)(a1 + 8); + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v37 ) + { + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v32 = (_DWORD *)a1; + } + else + { +LABEL_71: + v32[2] = v37 + 1; + } + ++v82; + v33 = -1; + HIDWORD(a1) = -1; + continue; + } + break; + } + if ( v82 == v72 ) + { +LABEL_171: + v10 = 1; + goto LABEL_113; + } +LABEL_146: + if ( v82 ) + goto LABEL_99; + v56 = *(_DWORD *)(a4 + 12) & 0x200; + v10 = v56 == 0; + v31 = v56 != 0; +LABEL_113: + if ( v75 > 3 || v31 ) + goto LABEL_11; +LABEL_115: + ++v75; + continue; + case 3: + if ( *(_DWORD *)(v8 + 32) ) + { + v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v31 + && **(_BYTE **)(v8 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get( + (_DWORD **)&a1, + SHIDWORD(a1)) ) + { + v74 = *(_DWORD *)(v8 + 32); + v61 = *(_DWORD *)(a1 + 8); + if ( v61 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v61 + 1; + HIDWORD(a1) = -1; + v10 = 1; + goto LABEL_113; + } + if ( !*(_DWORD *)(v8 + 40) ) + { + if ( !*(_DWORD *)(v8 + 32) ) + goto LABEL_54; + goto LABEL_131; + } + } + else if ( !*(_DWORD *)(v8 + 40) ) + { + goto LABEL_54; + } + v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v31 + && **(_BYTE **)(v8 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get( + (_DWORD **)&a1, + SHIDWORD(a1)) ) + { + v74 = *(_DWORD *)(v8 + 40); + v65 = *(_DWORD *)(a1 + 8); + if ( v65 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v65 + 1; + HIDWORD(a1) = -1; + v10 = 1; + v77 = 1; + goto LABEL_113; + } + if ( !*(_DWORD *)(v8 + 32) || *(_DWORD *)(v8 + 40) ) + { +LABEL_54: + v31 = v76; + v10 = !v76; + goto LABEL_113; + } +LABEL_131: + v77 = 1; + v31 = 0; + v10 = 1; + goto LABEL_113; + case 4: + v17 = HIDWORD(a1); + v18 = (_DWORD *)a1; + while ( 2 ) + { + v22 = v17 == -1; + v23 = v22 & (v18 != 0); + if ( v23 ) + { + v22 = 0; + if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) + { + LODWORD(a1) = 0; + v22 = v23; + } + } + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v24 = 0; + if ( a2[2] >= a2[3] ) + { + v44 = (*(int (**)(void))(*a2 + 36))(); + v24 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + } + if ( v24 == v22 ) + goto LABEL_168; + LOBYTE(v26) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v45 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) + { + v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v26 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v26) = -1; + } + } + else + { + LOBYTE(v26) = *v45; + } + } + v27 = memchr((const void *)(v8 + 57), (char)v26, 0xAu); + if ( !v27 ) + { + v10 = v78 | (*(_BYTE *)(v8 + 17) != (unsigned __int8)v26); + if ( v10 ) + { + if ( *(_BYTE *)(v8 + 16) ) + { + if ( *(_BYTE *)(v8 + 18) == (_BYTE)v26 ) + { + if ( v78 ) + { + v10 = v78; + } + else + { + if ( v87 ) + { + v28 = *((_DWORD *)v89 - 3); + if ( (unsigned int)(v28 + 1) > *((_DWORD *)v89 - 2) || *((int *)v89 - 1) > 0 ) + std::string::reserve((unsigned int **)&v89, (std::string *)(v28 + 1), (unsigned int)v67); + v29 = v87; + v87 = 0; + *((_BYTE *)v89 + *((_DWORD *)v89 - 3)) = v29; + v30 = v89; + if ( v89 != (volatile signed __int32 *)&unk_4E93FC ) + { + *((_DWORD *)v89 - 1) = 0; + *((_DWORD *)v30 - 3) = v28 + 1; + *((_BYTE *)v30 + v28 + 1) = 0; + v18 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_51; + goto LABEL_34; + } +LABEL_33: + v18 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 >= *(_DWORD *)(a1 + 12) ) + { +LABEL_51: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + goto LABEL_35; + } +LABEL_34: + v18[2] = v21 + 1; +LABEL_35: + HIDWORD(a1) = -1; + v17 = -1; + continue; + } + v10 = 0; + } + } + else + { + v10 = *(_BYTE *)(v8 + 16); + } + } + if ( !*((_DWORD *)v90 - 3) ) + goto LABEL_99; + } + else + { + if ( *(int *)(v8 + 44) > 0 ) + { + v46 = v87; + v78 = 1; + v87 = 0; + v71 = v46; + goto LABEL_33; + } + v78 = 0; +LABEL_168: + v10 = 1; + if ( !*((_DWORD *)v90 - 3) ) + goto LABEL_99; + } +LABEL_112: + v31 = v10 ^ 1; + goto LABEL_113; + } + break; + } + v81 = v27[(_DWORD)std::money_base::_S_atoms - 56 - v8]; + v19 = *((_DWORD *)v90 - 3); + if ( (unsigned int)(v19 + 1) > *((_DWORD *)v90 - 2) || *((int *)v90 - 1) > 0 ) + std::string::reserve((unsigned int **)&v90, (std::string *)(v19 + 1), (unsigned int)v67); + *((_BYTE *)v90 + *((_DWORD *)v90 - 3)) = v81; + v20 = v90; + if ( v90 != (volatile signed __int32 *)&unk_4E93FC ) + { + *((_DWORD *)v90 - 1) = 0; + *((_DWORD *)v20 - 3) = v19 + 1; + *((_BYTE *)v20 + v19 + 1) = 0; + } + ++v87; + goto LABEL_33; + default: + v31 = 0; + goto LABEL_171; + } + } +} +// 47FE87: variable 'v66' is possibly undefined +// 47FF13: variable 'v68' is possibly undefined +// 47F4BB: variable 'v67' is possibly undefined +// 47FDEF: variable 'v69' is possibly undefined +// 47FFC5: variable 'v70' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4E940C: using guessed type int std::moneypunct::id; +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (00480170) -------------------------------------------------------- +int __stdcall std::money_get>::_M_extract( + unsigned __int64 a1, + _DWORD *a2, + int a3, + int a4, + _DWORD *a5, + int *a6) +{ + int v6; // esi + int *v7; // edi + int v8; // ebx + bool v9; // zf + char v10; // si + int v11; // edi + int v12; // eax + _DWORD *v13; // ecx + char v14; // si + char v15; // si + _BYTE *v16; // eax + int v17; // eax + _DWORD *v18; // ecx + int v19; // edi + volatile signed __int32 *v20; // eax + unsigned int v21; // eax + char v22; // si + char v23; // di + char v24; // al + char v25; // di + int v26; // edi + _BYTE *v27; // eax + int v28; // edi + char v29; // cl + volatile signed __int32 *v30; // eax + char v31; // di + _DWORD *v32; // ecx + int v33; // eax + char v34; // si + char v35; // di + int v36; // eax + _BYTE *v37; // eax + int v38; // eax + _DWORD *v39; // ecx + char v40; // al + int v41; // eax + unsigned __int8 *v42; // eax + char v43; // di + int v44; // edx + _BYTE *v45; // eax + char v46; // al + char v47; // bl + char v48; // al + char v49; // bl + int v50; // ebx + int v52; // edx + int v53; // eax + unsigned int v54; // eax + int v55; // eax + int v56; // eax + std::string *v57; // eax + int v58; // edx + unsigned int first_not_of; // eax + unsigned int v60; // edx + unsigned int v61; // eax + std::locale::_Impl *v62; // eax + std::locale::_Impl *v63; // ebx + volatile signed __int32 *v64; // eax + unsigned int v65; // eax + void (__cdecl *v66)(void *); // [esp+4h] [ebp-64h] + std::string *v67; // [esp+4h] [ebp-64h] + unsigned int v68; // [esp+8h] [ebp-60h] + unsigned int v69; // [esp+Ch] [ebp-5Ch] + char v70; // [esp+10h] [ebp-58h] + char v71; // [esp+18h] [ebp-50h] + unsigned int v72; // [esp+1Ch] [ebp-4Ch] + _DWORD *v73; // [esp+20h] [ebp-48h] + unsigned int v74; // [esp+24h] [ebp-44h] + int v75; // [esp+2Ch] [ebp-3Ch] + bool v76; // [esp+31h] [ebp-37h] + char v77; // [esp+32h] [ebp-36h] + char v78; // [esp+33h] [ebp-35h] + char v79; // [esp+34h] [ebp-34h] + int v80; // [esp+34h] [ebp-34h] + char v81; // [esp+34h] [ebp-34h] + unsigned int v82; // [esp+34h] [ebp-34h] + char v83; // [esp+34h] [ebp-34h] + char v84; // [esp+34h] [ebp-34h] + unsigned int Buf; // [esp+38h] [ebp-30h] + int v86; // [esp+3Ch] [ebp-2Ch] + int v87; // [esp+3Ch] [ebp-2Ch] + char v88; // [esp+43h] [ebp-25h] BYREF + volatile signed __int32 *v89; // [esp+44h] [ebp-24h] BYREF + volatile signed __int32 *v90; // [esp+48h] [ebp-20h] BYREF + int v91; // [esp+4Ch] [ebp-1Ch] + + v86 = a4 + 108; + v73 = std::use_facet>(a4 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = (int *)(*(_DWORD *)(*(_DWORD *)(a4 + 108) + 12) + 4 * v6); + v8 = *v7; + if ( !*v7 ) + { + v62 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v66); + *(_DWORD *)v62 = &off_4F66D4; + v63 = v62; + *((_DWORD *)v62 + 1) = 0; + *((_DWORD *)v62 + 2) = 0; + *((_DWORD *)v62 + 3) = 0; + *((_WORD *)v62 + 8) = 0; + *((_BYTE *)v62 + 18) = 0; + *((_DWORD *)v62 + 5) = 0; + *((_DWORD *)v62 + 6) = 0; + *((_DWORD *)v62 + 7) = 0; + *((_DWORD *)v62 + 8) = 0; + *((_DWORD *)v62 + 9) = 0; + *((_DWORD *)v62 + 10) = 0; + *((_DWORD *)v62 + 11) = 0; + *((_DWORD *)v62 + 12) = 0; + *((_DWORD *)v62 + 13) = 0; + *((_BYTE *)v62 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v62, v86); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a4 + 108), v63, (const std::locale::facet *)v6, v68); + v8 = *v7; + } + if ( *(_DWORD *)(v8 + 32) ) + v76 = *(_DWORD *)(v8 + 40) != 0; + else + v76 = 0; + v9 = *(_BYTE *)(v8 + 16) == 0; + v89 = (volatile signed __int32 *)&unk_4E93FC; + if ( !v9 ) + std::string::reserve((unsigned int **)&v89, (std::string *)0x20, (unsigned int)v66); + v90 = (volatile signed __int32 *)&unk_4E93FC; + std::string::reserve((unsigned int **)&v90, (std::string *)0x20, (unsigned int)v66); + v78 = 0; + v75 = 1; + v91 = *(_DWORD *)(v8 + 52); + v87 = 0; + v71 = 0; + v74 = 0; + v77 = 0; + while ( 2 ) + { + switch ( *((_BYTE *)&v90 + v75 + 3) ) + { + case 0: + v10 = 1; + goto LABEL_10; + case 1: + if ( !std::istreambuf_iterator::equal(&a1, (int)&a2) + && (*(_BYTE *)(v73[6] + + 2 * (unsigned __int8)std::istreambuf_iterator::_M_get((_DWORD **)&a1, SHIDWORD(a1))) & 0x20) != 0 ) + { + v54 = *(_DWORD *)(a1 + 8); + if ( v54 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v54 + 1; + HIDWORD(a1) = -1; + v10 = 1; +LABEL_10: + if ( v75 == 4 ) + goto LABEL_11; + goto LABEL_75; + } + v10 = 0; + if ( v75 != 4 ) + { +LABEL_75: + v38 = HIDWORD(a1); + v39 = (_DWORD *)a1; + while ( 1 ) + { + v43 = v38 == -1; + v84 = v43 & (v39 != 0); + if ( v84 ) + { + v43 = 0; + if ( v39[2] >= v39[3] && (*(int (__fastcall **)(_DWORD *))(*v39 + 36))(v39) == -1 ) + { + LODWORD(a1) = 0; + v43 = v84; + } + } + v40 = a3 == -1; + v83 = v40 & (a2 != 0); + if ( v83 ) + { + v40 = 0; + if ( a2[2] >= a2[3] ) + { + v52 = (*(int (**)(void))(*a2 + 36))(); + v40 = 0; + if ( v52 == -1 ) + { + a2 = 0; + v40 = v83; + } + } + } + if ( v43 == v40 ) + goto LABEL_112; + LOBYTE(v41) = BYTE4(a1); + v39 = (_DWORD *)a1; + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v42 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(v73[6] + 2 * *v42) & 0x20) == 0 ) + goto LABEL_112; +LABEL_81: + v39[2] = v42 + 1; + goto LABEL_82; + } + v41 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v41 == -1 ) + LODWORD(a1) = 0; + } + if ( (*(_BYTE *)(v73[6] + 2 * (unsigned __int8)v41) & 0x20) == 0 ) + goto LABEL_112; + v39 = (_DWORD *)a1; + v42 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v42 < *(_DWORD *)(a1 + 12) ) + goto LABEL_81; + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v39 = (_DWORD *)a1; +LABEL_82: + HIDWORD(a1) = -1; + v38 = -1; + } + } +LABEL_11: + if ( ((unsigned __int8)v10 & (v74 > 1)) == 0 ) + { + if ( v10 ) + { + if ( *((_DWORD *)v90 - 3) > 1u ) + goto LABEL_175; + goto LABEL_152; + } + goto LABEL_99; + } + if ( v77 ) + v11 = *(_DWORD *)(v8 + 36); + else + v11 = *(_DWORD *)(v8 + 28); + v12 = HIDWORD(a1); + v13 = (_DWORD *)a1; + for ( Buf = 1; ; ++Buf ) + { + v14 = v12 == -1; + v79 = v14 & (v13 != 0); + if ( v79 ) + { + v14 = 0; + if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) + { + LODWORD(a1) = 0; + v14 = v79; + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v53 = (*(int (**)(void))(*a2 + 36))(); + v14 ^= v53 == -1; + if ( v53 == -1 ) + a2 = 0; + } + } + else + { + v14 ^= a3 == -1; + } + if ( Buf >= v74 || !v14 ) + break; + v13 = (_DWORD *)a1; + LOBYTE(v80) = BYTE4(a1); + v15 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; + if ( v15 ) + { + v16 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v16 < *(_DWORD *)(a1 + 12) ) + { + if ( *v16 != *(_BYTE *)(v11 + Buf) ) + { + v47 = (_DWORD)a1 != 0 && HIDWORD(a1) == -1; + goto LABEL_101; + } +LABEL_24: + v13[2] = v16 + 1; + goto LABEL_25; + } + v80 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v80 == -1 ) + { + LODWORD(a1) = 0; + v13 = 0; + } + else + { + v13 = (_DWORD *)a1; + } + } + if ( *(_BYTE *)(v11 + Buf) != (_BYTE)v80 ) + goto LABEL_100; + v16 = (_BYTE *)v13[2]; + if ( (unsigned int)v16 < v13[3] ) + goto LABEL_24; + (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); + v13 = (_DWORD *)a1; +LABEL_25: + v12 = -1; + HIDWORD(a1) = -1; + } + if ( Buf == v74 ) + { + if ( *((_DWORD *)v90 - 3) <= 1u ) + goto LABEL_152; +LABEL_175: + first_not_of = std::string::find_first_not_of((int *)&v90, (std::string *)0x30, 0, v68); + if ( first_not_of ) + { + v60 = *((_DWORD *)v90 - 3); + if ( first_not_of == -1 ) + first_not_of = v60 - 1; + if ( first_not_of > v60 ) + first_not_of = *((_DWORD *)v90 - 3); + std::string::_M_mutate(&v90, 0, first_not_of, 0, v69); + } +LABEL_152: + if ( v77 ) + { + v64 = v90; + if ( *((int *)v90 - 1) >= 0 ) + { + std::string::_M_leak_hard(&v90); + v64 = v90; + } + if ( *(_BYTE *)v64 != 48 ) + { + if ( *((int *)v64 - 1) >= 0 ) + std::string::_M_leak_hard(&v90); + std::string::_M_replace_aux(&v90, 0, 0, 1u, 45, v70); + *((_DWORD *)v90 - 1) = -1; + } + } + if ( *((_DWORD *)v89 - 3) ) + { + v57 = (std::string *)(char)v87; + if ( v78 ) + v57 = (std::string *)v71; + std::string::push_back((unsigned int **)&v89, v57, (char)v67); + if ( !(unsigned __int8)std::__verify_grouping(*(char **)(v8 + 8), *(_DWORD *)(v8 + 12), (const char **)&v89) ) + *a5 |= 4u; + } + if ( !v78 || *(_DWORD *)(v8 + 44) == v87 ) + { + std::string::swap(a6, (std::string *)&v90, v67); + v13 = (_DWORD *)a1; + v15 = HIDWORD(a1) == -1; + v47 = v15 & ((_DWORD)a1 != 0); + if ( v47 ) + goto LABEL_161; + goto LABEL_102; + } + } +LABEL_99: + v13 = (_DWORD *)a1; +LABEL_100: + v15 = HIDWORD(a1) == -1; + v47 = v15 & (v13 != 0); +LABEL_101: + *a5 |= 4u; + if ( v47 ) + { +LABEL_161: + v15 = 0; + if ( v13[2] >= v13[3] && (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) == -1 ) + { + LODWORD(a1) = 0; + v15 = v47; + } + } +LABEL_102: + v48 = a3 == -1; + v49 = v48 & (a2 != 0); + if ( v49 ) + { + v48 = 0; + if ( a2[2] >= a2[3] ) + { + v58 = (*(int (__fastcall **)(_DWORD *))(*a2 + 36))(a2); + v48 = 0; + if ( v58 == -1 ) + { + a2 = 0; + v48 = v49; + } + } + } + if ( v15 == v48 ) + *a5 |= 2u; + v50 = a1; + if ( v90 != (volatile signed __int32 *)&unk_4E93FC ) + std::string::_Rep::_M_dispose(v90 - 3, (int)&v88); + if ( v89 != (volatile signed __int32 *)&unk_4E93FC ) + std::string::_Rep::_M_dispose(v89 - 3, (int)&v88); + return v50; + case 2: + if ( (*(_BYTE *)(a4 + 13) & 2) != 0 ) + goto LABEL_62; + v31 = v75 == 1 || v74 > 1; + if ( v31 ) + goto LABEL_62; + if ( v75 == 2 ) + { + if ( !v76 && (_BYTE)v91 != 3 && BYTE2(v91) != 1 ) + goto LABEL_115; + } + else + { + v10 = 1; + if ( v75 != 3 ) + goto LABEL_113; + if ( HIBYTE(v91) != 4 && (HIBYTE(v91) != 3 || !v76) ) + goto LABEL_115; + } +LABEL_62: + v32 = (_DWORD *)a1; + v82 = 0; + v72 = *(_DWORD *)(v8 + 24); + v33 = HIDWORD(a1); + while ( 2 ) + { + v34 = v33 == -1; + v35 = v34 & (v32 != 0); + if ( v35 ) + { + v34 = 0; + if ( v32[2] >= v32[3] && (*(int (__fastcall **)(_DWORD *))(*v32 + 36))(v32) == -1 ) + { + LODWORD(a1) = 0; + v34 = v35; + } + } + if ( a2 && a3 == -1 ) + { + if ( a2[2] >= a2[3] ) + { + v55 = (*(int (**)(void))(*a2 + 36))(); + v34 ^= v55 == -1; + if ( v55 == -1 ) + a2 = 0; + } + } + else + { + v34 ^= a3 == -1; + } + v31 = (v82 < v72) & v34; + if ( v31 ) + { + LOBYTE(v36) = BYTE4(a1); + v32 = (_DWORD *)a1; + if ( a1 <= 0xFFFFFFFF00000000LL ) + goto LABEL_69; + v37 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v37 < *(_DWORD *)(a1 + 12) ) + { + if ( *v37 != *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) ) + goto LABEL_146; + goto LABEL_71; + } + v36 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v36 == -1 ) + LODWORD(a1) = 0; +LABEL_69: + if ( *(_BYTE *)(*(_DWORD *)(v8 + 20) + v82) != (_BYTE)v36 ) + goto LABEL_146; + v32 = (_DWORD *)a1; + v37 = *(_BYTE **)(a1 + 8); + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v37 ) + { + (*(void (__fastcall **)(_DWORD))(*(_DWORD *)a1 + 40))(a1); + v32 = (_DWORD *)a1; + } + else + { +LABEL_71: + v32[2] = v37 + 1; + } + ++v82; + v33 = -1; + HIDWORD(a1) = -1; + continue; + } + break; + } + if ( v82 == v72 ) + { +LABEL_171: + v10 = 1; + goto LABEL_113; + } +LABEL_146: + if ( v82 ) + goto LABEL_99; + v56 = *(_DWORD *)(a4 + 12) & 0x200; + v10 = v56 == 0; + v31 = v56 != 0; +LABEL_113: + if ( v75 > 3 || v31 ) + goto LABEL_11; +LABEL_115: + ++v75; + continue; + case 3: + if ( *(_DWORD *)(v8 + 32) ) + { + v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v31 + && **(_BYTE **)(v8 + 28) == (unsigned __int8)std::istreambuf_iterator::_M_get( + (_DWORD **)&a1, + SHIDWORD(a1)) ) + { + v74 = *(_DWORD *)(v8 + 32); + v61 = *(_DWORD *)(a1 + 8); + if ( v61 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v61 + 1; + HIDWORD(a1) = -1; + v10 = 1; + goto LABEL_113; + } + if ( !*(_DWORD *)(v8 + 40) ) + { + if ( !*(_DWORD *)(v8 + 32) ) + goto LABEL_54; + goto LABEL_131; + } + } + else if ( !*(_DWORD *)(v8 + 40) ) + { + goto LABEL_54; + } + v31 = std::istreambuf_iterator::equal(&a1, (int)&a2); + if ( !v31 + && **(_BYTE **)(v8 + 36) == (unsigned __int8)std::istreambuf_iterator::_M_get( + (_DWORD **)&a1, + SHIDWORD(a1)) ) + { + v74 = *(_DWORD *)(v8 + 40); + v65 = *(_DWORD *)(a1 + 8); + if ( v65 >= *(_DWORD *)(a1 + 12) ) + std::streambuf::sbumpc(a1); + else + *(_DWORD *)(a1 + 8) = v65 + 1; + HIDWORD(a1) = -1; + v10 = 1; + v77 = 1; + goto LABEL_113; + } + if ( !*(_DWORD *)(v8 + 32) || *(_DWORD *)(v8 + 40) ) + { +LABEL_54: + v31 = v76; + v10 = !v76; + goto LABEL_113; + } +LABEL_131: + v77 = 1; + v31 = 0; + v10 = 1; + goto LABEL_113; + case 4: + v17 = HIDWORD(a1); + v18 = (_DWORD *)a1; + while ( 2 ) + { + v22 = v17 == -1; + v23 = v22 & (v18 != 0); + if ( v23 ) + { + v22 = 0; + if ( v18[2] >= v18[3] && (*(int (__fastcall **)(_DWORD *))(*v18 + 36))(v18) == -1 ) + { + LODWORD(a1) = 0; + v22 = v23; + } + } + v24 = a3 == -1; + v25 = v24 & (a2 != 0); + if ( v25 ) + { + v24 = 0; + if ( a2[2] >= a2[3] ) + { + v44 = (*(int (**)(void))(*a2 + 36))(); + v24 = 0; + if ( v44 == -1 ) + { + a2 = 0; + v24 = v25; + } + } + } + if ( v24 == v22 ) + goto LABEL_168; + LOBYTE(v26) = BYTE4(a1); + if ( a1 > 0xFFFFFFFF00000000LL ) + { + v45 = *(_BYTE **)(a1 + 8); + if ( (unsigned int)v45 >= *(_DWORD *)(a1 + 12) ) + { + v26 = (*(int (**)(void))(*(_DWORD *)a1 + 36))(); + if ( v26 == -1 ) + { + LODWORD(a1) = 0; + LOBYTE(v26) = -1; + } + } + else + { + LOBYTE(v26) = *v45; + } + } + v27 = memchr((const void *)(v8 + 57), (char)v26, 0xAu); + if ( !v27 ) + { + v10 = v78 | (*(_BYTE *)(v8 + 17) != (unsigned __int8)v26); + if ( v10 ) + { + if ( *(_BYTE *)(v8 + 16) ) + { + if ( *(_BYTE *)(v8 + 18) == (_BYTE)v26 ) + { + if ( v78 ) + { + v10 = v78; + } + else + { + if ( v87 ) + { + v28 = *((_DWORD *)v89 - 3); + if ( (unsigned int)(v28 + 1) > *((_DWORD *)v89 - 2) || *((int *)v89 - 1) > 0 ) + std::string::reserve((unsigned int **)&v89, (std::string *)(v28 + 1), (unsigned int)v67); + v29 = v87; + v87 = 0; + *((_BYTE *)v89 + *((_DWORD *)v89 - 3)) = v29; + v30 = v89; + if ( v89 != (volatile signed __int32 *)&unk_4E93FC ) + { + *((_DWORD *)v89 - 1) = 0; + *((_DWORD *)v30 - 3) = v28 + 1; + *((_BYTE *)v30 + v28 + 1) = 0; + v18 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 >= *(_DWORD *)(a1 + 12) ) + goto LABEL_51; + goto LABEL_34; + } +LABEL_33: + v18 = (_DWORD *)a1; + v21 = *(_DWORD *)(a1 + 8); + if ( v21 >= *(_DWORD *)(a1 + 12) ) + { +LABEL_51: + (*(void (__fastcall **)(_DWORD *))(*v18 + 40))(v18); + v18 = (_DWORD *)a1; + goto LABEL_35; + } +LABEL_34: + v18[2] = v21 + 1; +LABEL_35: + HIDWORD(a1) = -1; + v17 = -1; + continue; + } + v10 = 0; + } + } + else + { + v10 = *(_BYTE *)(v8 + 16); + } + } + if ( !*((_DWORD *)v90 - 3) ) + goto LABEL_99; + } + else + { + if ( *(int *)(v8 + 44) > 0 ) + { + v46 = v87; + v78 = 1; + v87 = 0; + v71 = v46; + goto LABEL_33; + } + v78 = 0; +LABEL_168: + v10 = 1; + if ( !*((_DWORD *)v90 - 3) ) + goto LABEL_99; + } +LABEL_112: + v31 = v10 ^ 1; + goto LABEL_113; + } + break; + } + v81 = v27[(_DWORD)std::money_base::_S_atoms - 56 - v8]; + v19 = *((_DWORD *)v90 - 3); + if ( (unsigned int)(v19 + 1) > *((_DWORD *)v90 - 2) || *((int *)v90 - 1) > 0 ) + std::string::reserve((unsigned int **)&v90, (std::string *)(v19 + 1), (unsigned int)v67); + *((_BYTE *)v90 + *((_DWORD *)v90 - 3)) = v81; + v20 = v90; + if ( v90 != (volatile signed __int32 *)&unk_4E93FC ) + { + *((_DWORD *)v90 - 1) = 0; + *((_DWORD *)v20 - 3) = v19 + 1; + *((_BYTE *)v20 + v19 + 1) = 0; + } + ++v87; + goto LABEL_33; + default: + v31 = 0; + goto LABEL_171; + } + } +} +// 480D27: variable 'v66' is possibly undefined +// 480DB3: variable 'v68' is possibly undefined +// 48035B: variable 'v67' is possibly undefined +// 480C8F: variable 'v69' is possibly undefined +// 480E65: variable 'v70' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4E9410: using guessed type int std::moneypunct::id; +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (00481010) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (00481020) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (00481030) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + char a4, + int a5, + _DWORD *a6, + unsigned int **a7) +{ + int v7; // eax + char *v8; // ebx + int v9; // esi + size_t v10; // eax + char *v11; // ecx + char v13; // al + void (__thiscall *v14)(_BYTE *, char *, char *, unsigned int *); // eax + int v15; // eax + char v16; // [esp+4h] [ebp-54h] + char *v17; // [esp+20h] [ebp-38h] + unsigned int *v18; // [esp+24h] [ebp-34h] + _BYTE *v19; // [esp+28h] [ebp-30h] + size_t Size; // [esp+2Ch] [ebp-2Ch] + int v21; // [esp+3Bh] [ebp-1Dh] BYREF + int v22[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v19 = std::use_facet>(a5 + 108); + v22[0] = (int)&unk_4E93FC; + if ( a4 ) + v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v22); + else + v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, v22); + v8 = (char *)v22[0]; + v9 = v7; + v10 = *(_DWORD *)(v22[0] - 12); + Size = v10; + if ( !v10 ) + { +LABEL_4: + v11 = v8 - 12; + if ( v8 == (char *)&unk_4E93FC ) + return v9; + goto LABEL_15; + } + std::string::resize(a7, v10, 0, v16); + v18 = *a7; + if ( (*(*a7 - 1) & 0x80000000) == 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)a7); + v18 = *a7; + } + v8 = (char *)v22[0]; + v17 = (char *)(v22[0] + Size); + v13 = v19[28]; + if ( v13 != 1 ) + { + if ( !v13 ) + std::ctype::_M_widen_init((int)v19); + v14 = *(void (__thiscall **)(_BYTE *, char *, char *, unsigned int *))(*(_DWORD *)v19 + 28); + if ( (char *)v14 == (char *)std::ctype::do_widen ) + { + if ( v17 != v8 ) + goto LABEL_14; + } + else + { + v14(v19, v8, v17, v18); + } + v8 = (char *)v22[0]; + goto LABEL_4; + } + if ( v17 == (char *)v22[0] ) + goto LABEL_4; +LABEL_14: + memcpy(v18, v8, Size); + v8 = (char *)v22[0]; + v11 = (char *)(v22[0] - 12); + if ( (_UNKNOWN *)v22[0] == &unk_4E93FC ) + return v9; +LABEL_15: + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v8 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v8 - 1); + *((_DWORD *)v8 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + std::string::_Rep::_M_destroy(v11, (int)&v21); + return v9; +} +// 481229: positive sp value 4 has been found +// 4810DE: variable 'v16' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; +// 481030: using guessed type _DWORD *arg_8; + +//----- (00481240) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_get>::do_get( + unsigned __int64 a1, + _DWORD *a2, + int a3, + char a4, + int a5, + _DWORD *a6, + long double *a7) +{ + int v7; // eax + int v8; // esi + char *v9; // ecx + int v11; // edx + char *String; // [esp+28h] [ebp-20h] BYREF + int v13[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_4E93FC; + if ( a4 ) + v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); + else + v7 = std::money_get>::_M_extract(a1, a2, a3, a5, a6, (int *)&String); + v8 = v7; + v13[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a7, a6); + v9 = String - 12; + if ( String != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v11 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v11 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v11 - 1; + } + if ( v11 <= 0 ) + std::string::_Rep::_M_destroy(v9, (int)v13); + } + return v8; +} +// 481336: positive sp value 4 has been found +// 15412D0: using guessed type int _CRT_MT; +// 481240: using guessed type int var_1C[7]; + +//----- (00481340) -------------------------------------------------------- +_DWORD *__stdcall std::money_get>::_M_extract( + _DWORD *a1, + unsigned __int16 a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int *a7) +{ + int v7; // esi + int *v8; // edi + int v9; // ebx + bool v10; // zf + char v11; // di + __int16 v12; // ax + _DWORD *v13; // ecx + char v14; // dl + char v15; // di + unsigned __int16 v16; // ax + unsigned int v17; // eax + char v18; // si + char v19; // di + _WORD *v20; // eax + __int16 v21; // ax + __int16 v22; // ax + _DWORD *v23; // ecx + int v24; // edi + volatile signed __int32 *v25; // eax + unsigned int v26; // eax + char v27; // si + char v28; // di + char v29; // dl + char v30; // di + wchar_t v31; // si + wchar_t *v32; // eax + int v33; // edi + char v34; // cl + unsigned int *v35; // eax + char v36; // si + _DWORD *v37; // ecx + unsigned int v38; // edi + __int16 v39; // ax + bool v40; // al + unsigned __int16 v41; // ax + unsigned int v42; // eax + bool v43; // si + _WORD *v44; // eax + __int16 v45; // ax + __int16 v46; // ax + _DWORD *v47; // ecx + char v48; // dl + unsigned __int16 v49; // ax + unsigned int v50; // eax + char v51; // si + _WORD *v52; // eax + __int16 v53; // ax + __int16 *v54; // eax + __int16 v55; // ax + char v56; // bl + char v57; // si + char v58; // al + char v59; // si + _DWORD *v60; // ebx + volatile signed __int32 *v61; // ecx + _WORD *v63; // eax + __int16 v64; // ax + _WORD *v65; // eax + char v66; // al + _WORD *v67; // eax + __int16 v68; // ax + _WORD *v69; // eax + unsigned __int16 v70; // ax + unsigned int v71; // eax + _WORD *v72; // eax + __int16 v73; // ax + std::string *v74; // eax + unsigned __int16 *v75; // eax + __int16 *v76; // eax + __int16 v77; // dx + unsigned __int16 *v78; // eax + int v79; // edx + int v80; // eax + _WORD *v81; // eax + __int16 v82; // dx + _WORD *v83; // eax + __int16 v84; // ax + unsigned int first_not_of; // eax + unsigned int v86; // edx + unsigned int v87; // eax + unsigned int v88; // eax + _DWORD *v89; // eax + std::locale::_Impl *v90; // ebx + volatile signed __int32 *v91; // eax + void (__cdecl *v92)(void *); // [esp+4h] [ebp-64h] + std::string *v93; // [esp+4h] [ebp-64h] + unsigned int v94; // [esp+8h] [ebp-60h] + unsigned int v95; // [esp+Ch] [ebp-5Ch] + char v96; // [esp+10h] [ebp-58h] + char v97; // [esp+1Ch] [ebp-4Ch] + void *v98; // [esp+20h] [ebp-48h] + unsigned int v99; // [esp+24h] [ebp-44h] + int v100; // [esp+2Ch] [ebp-3Ch] + bool v101; // [esp+30h] [ebp-38h] + char v102; // [esp+31h] [ebp-37h] + bool v103; // [esp+32h] [ebp-36h] + bool v104; // [esp+32h] [ebp-36h] + char v105; // [esp+33h] [ebp-35h] + int v106; // [esp+34h] [ebp-34h] + char v107; // [esp+34h] [ebp-34h] + unsigned int v108; // [esp+34h] [ebp-34h] + char v109; // [esp+34h] [ebp-34h] + char v110; // [esp+34h] [ebp-34h] + unsigned int S; // [esp+38h] [ebp-30h] + int v112; // [esp+3Ch] [ebp-2Ch] + int v113; // [esp+3Ch] [ebp-2Ch] + char v114; // [esp+43h] [ebp-25h] BYREF + unsigned int *v115; // [esp+44h] [ebp-24h] BYREF + volatile signed __int32 *v116; // [esp+48h] [ebp-20h] BYREF + int v117; // [esp+4Ch] [ebp-1Ch] + + v112 = a5 + 108; + v98 = std::use_facet>(a5 + 108); + v7 = std::locale::id::_M_id(&std::moneypunct::id); + v8 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v7); + v9 = *v8; + if ( !*v8 ) + { + v89 = operator new((struct type_info *)0x54, v92); + v89[1] = 0; + v90 = (std::locale::_Impl *)v89; + *v89 = &off_4F66E4; + v89[2] = 0; + v89[3] = 0; + *((_BYTE *)v89 + 16) = 0; + *(_DWORD *)((char *)v89 + 18) = 0; + v89[6] = 0; + v89[7] = 0; + v89[8] = 0; + v89[9] = 0; + v89[10] = 0; + v89[11] = 0; + v89[12] = 0; + v89[13] = 0; + v89[14] = 0; + *((_BYTE *)v89 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v89, v112); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v90, (const std::locale::facet *)v7, v94); + v9 = *v8; + } + if ( *(_DWORD *)(v9 + 36) ) + v101 = *(_DWORD *)(v9 + 44) != 0; + else + v101 = 0; + v10 = *(_BYTE *)(v9 + 16) == 0; + v115 = (unsigned int *)&unk_4E93FC; + if ( !v10 ) + std::string::reserve(&v115, (std::string *)0x20, (unsigned int)v92); + v116 = (volatile signed __int32 *)&unk_4E93FC; + std::string::reserve((unsigned int **)&v116, (std::string *)0x20, (unsigned int)v92); + v105 = 0; + v100 = 1; + v117 = *(_DWORD *)(v9 + 56); + v113 = 0; + v97 = 0; + v99 = 0; + v102 = 0; + while ( 2 ) + { + switch ( *((_BYTE *)&v116 + v100 + 3) ) + { + case 0: + v11 = 1; + goto LABEL_10; + case 1: + if ( !std::istreambuf_iterator::equal(&a1, (int)&a3) ) + { + v70 = std::istreambuf_iterator::_M_get(&a1, a2); + v11 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v70); + if ( v11 ) + { + v71 = a1[2]; + if ( v71 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v71 + 2; + a2 = -1; +LABEL_10: + if ( v100 == 4 ) + goto LABEL_11; + goto LABEL_82; + } + } + v11 = 0; + if ( v100 != 4 ) + { +LABEL_82: + v46 = a2; + v47 = a1; + while ( 1 ) + { + v51 = v46 == -1; + v110 = v51 & (v47 != 0); + if ( v110 ) + { + v52 = (_WORD *)v47[2]; + v53 = (unsigned int)v52 >= v47[3] ? (*(int (__fastcall **)(_DWORD *))(*v47 + 36))(v47) : *v52; + v51 = 0; + if ( v53 == -1 ) + { + a1 = 0; + v51 = v110; + } + } + v48 = a4 == -1; + v109 = v48 & (a3 != 0); + if ( v109 ) + { + v67 = (_WORD *)a3[2]; + v68 = (unsigned int)v67 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v67; + v48 = 0; + if ( v68 == -1 ) + { + a3 = 0; + v48 = v109; + } + } + if ( v51 == v48 ) + break; + v49 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v69 = (_WORD *)a1[2]; + v49 = (unsigned int)v69 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v69; + if ( v49 == 0xFFFF ) + a1 = 0; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v49) ) + break; + v47 = a1; + v50 = a1[2]; + if ( v50 >= a1[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + v47 = a1; + } + else + { + a1[2] = v50 + 2; + } + a2 = -1; + v46 = -1; + } +LABEL_121: + v36 = v11 ^ 1; + goto LABEL_122; + } +LABEL_11: + if ( ((unsigned __int8)v11 & (v99 > 1)) == 0 ) + { + if ( v11 ) + { + if ( *((_DWORD *)v116 - 3) > 1u ) + goto LABEL_193; + goto LABEL_149; + } + goto LABEL_102; + } + if ( v102 ) + v106 = *(_DWORD *)(v9 + 40); + else + v106 = *(_DWORD *)(v9 + 32); + v12 = a2; + v13 = a1; + for ( S = 1; ; ++S ) + { + v18 = v12 == -1; + v19 = v18 & (v13 != 0); + if ( v19 ) + { + v20 = (_WORD *)v13[2]; + v21 = (unsigned int)v20 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v20; + v18 = 0; + if ( v21 == -1 ) + { + a1 = 0; + v18 = v19; + } + } + v14 = a4 == -1; + v15 = v14 & (a3 != 0); + if ( v15 ) + { + v72 = (_WORD *)a3[2]; + v73 = (unsigned int)v72 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v72; + v14 = 0; + if ( v73 == -1 ) + break; + } + if ( S >= v99 ) + goto LABEL_147; +LABEL_17: + if ( v18 == v14 ) + goto LABEL_147; + v13 = a1; + v16 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v75 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v75 >= a1[3] ) + v16 = (*(int (**)(void))(*a1 + 36))(); + else + v16 = *v75; + if ( v16 == 0xFFFF ) + { + a1 = 0; + v13 = 0; + } + else + { + v13 = a1; + } + } + if ( *(_WORD *)(v106 + 2 * S) != v16 ) + goto LABEL_103; + v17 = v13[2]; + if ( v17 >= v13[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); + v13 = a1; + } + else + { + v13[2] = v17 + 2; + } + a2 = -1; + v12 = -1; + } + v14 = v15; + a3 = 0; + if ( S < v99 ) + goto LABEL_17; +LABEL_147: + if ( S == v99 ) + { + if ( *((_DWORD *)v116 - 3) <= 1u ) + goto LABEL_149; +LABEL_193: + first_not_of = std::string::find_first_not_of((int *)&v116, (std::string *)0x30, 0, v94); + if ( first_not_of ) + { + v86 = *((_DWORD *)v116 - 3); + if ( first_not_of == -1 ) + first_not_of = v86 - 1; + if ( first_not_of > v86 ) + first_not_of = *((_DWORD *)v116 - 3); + std::string::_M_mutate(&v116, 0, first_not_of, 0, v95); + } +LABEL_149: + if ( v102 ) + { + v91 = v116; + if ( *((int *)v116 - 1) >= 0 ) + { + std::string::_M_leak_hard(&v116); + v91 = v116; + } + if ( *(_BYTE *)v91 != 48 ) + { + if ( *((int *)v91 - 1) >= 0 ) + std::string::_M_leak_hard(&v116); + std::string::_M_replace_aux(&v116, 0, 0, 1u, 45, v96); + *((_DWORD *)v116 - 1) = -1; + } + } + if ( *(v115 - 3) ) + { + v74 = (std::string *)(char)v113; + if ( v105 ) + v74 = (std::string *)v97; + std::string::push_back(&v115, v74, (char)v93); + if ( !(unsigned __int8)std::__verify_grouping( + *(char **)(v9 + 8), + *(_DWORD *)(v9 + 12), + (const char **)&v115) ) + *a6 |= 4u; + } + if ( !v105 || *(_DWORD *)(v9 + 48) == v113 ) + { + std::string::swap(a7, (std::string *)&v116, v93); + v13 = a1; + goto LABEL_104; + } + } +LABEL_102: + v13 = a1; +LABEL_103: + *a6 |= 4u; +LABEL_104: + v56 = a2 == 0xFFFF; + v57 = v56 & (v13 != 0); + if ( v57 ) + { + v83 = (_WORD *)v13[2]; + v84 = (unsigned int)v83 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v83; + v56 = 0; + if ( v84 == -1 ) + { + a1 = 0; + v56 = v57; + } + } + v58 = a4 == -1; + v59 = v58 & (a3 != 0); + if ( v59 ) + { + v81 = (_WORD *)a3[2]; + v82 = (unsigned int)v81 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v81; + v58 = 0; + if ( v82 == -1 ) + { + a3 = 0; + v58 = v59; + } + } + if ( v56 == v58 ) + *a6 |= 2u; + v60 = a1; + if ( v116 == (volatile signed __int32 *)&unk_4E93FC ) + { + v61 = (volatile signed __int32 *)(v115 - 3); + if ( v115 == (unsigned int *)&unk_4E93FC ) + return v60; +LABEL_227: + std::string::_Rep::_M_dispose(v61, (int)&v114); + return v60; + } + else + { + std::string::_Rep::_M_dispose(v116 - 3, (int)&v114); + v61 = (volatile signed __int32 *)(v115 - 3); + if ( v115 != (unsigned int *)&unk_4E93FC ) + goto LABEL_227; + return v60; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_66; + v36 = v100 == 1 || v99 > 1; + if ( v36 ) + goto LABEL_66; + if ( v100 == 2 ) + { + if ( !v101 && (_BYTE)v117 != 3 && BYTE2(v117) != 1 ) + goto LABEL_124; + } + else + { + v11 = 1; + if ( v100 != 3 ) + goto LABEL_122; + if ( HIBYTE(v117) != 4 && (HIBYTE(v117) != 3 || !v101) ) + goto LABEL_124; + } +LABEL_66: + v37 = a1; + v38 = 0; + v108 = *(_DWORD *)(v9 + 28); + v39 = a2; + while ( 2 ) + { + v43 = v39 == -1; + v104 = v43 && v37 != 0; + if ( v104 ) + { + v44 = (_WORD *)v37[2]; + v45 = (unsigned int)v44 >= v37[3] ? (*(int (__fastcall **)(_DWORD *))(*v37 + 36))(v37) : *v44; + v43 = 0; + if ( v45 == -1 ) + { + a1 = 0; + v43 = v104; + } + } + v40 = a4 == -1; + v103 = v40 && a3 != 0; + if ( !v103 + || ((v76 = (__int16 *)a3[2], (unsigned int)v76 >= a3[3]) + ? (v77 = (*(int (**)(void))(*a3 + 36))()) + : (v77 = *v76), + v40 = 0, + v77 != -1) ) + { + v36 = (v38 < v108) & (v40 ^ v43); + if ( !v36 ) + goto LABEL_166; +LABEL_69: + v41 = a2; + if ( a2 == 0xFFFF + && a1 + && ((v78 = (unsigned __int16 *)a1[2], (unsigned int)v78 >= a1[3]) + ? (v41 = (*(int (**)(void))(*a1 + 36))()) + : (v41 = *v78), + v41 == 0xFFFF) ) + { + v79 = *(_DWORD *)(v9 + 24); + a1 = 0; + if ( *(_WORD *)(v79 + 2 * v38) != 0xFFFF ) + goto LABEL_172; + } + else if ( *(_WORD *)(*(_DWORD *)(v9 + 24) + 2 * v38) != v41 ) + { + goto LABEL_172; + } + v37 = a1; + v42 = a1[2]; + if ( v42 >= a1[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + v37 = a1; + } + else + { + a1[2] = v42 + 2; + } + ++v38; + a2 = -1; + v39 = -1; + continue; + } + break; + } + a3 = 0; + v36 = (v38 < v108) & (v103 ^ v43); + if ( v36 ) + goto LABEL_69; +LABEL_166: + if ( v38 == v108 ) + goto LABEL_167; +LABEL_172: + if ( v38 ) + goto LABEL_102; + v80 = *(_DWORD *)(a5 + 12) & 0x200; + v11 = v80 == 0; + v36 = v80 != 0; +LABEL_122: + if ( v100 > 3 || v36 ) + goto LABEL_11; +LABEL_124: + ++v100; + continue; + case 3: + if ( *(_DWORD *)(v9 + 36) ) + { + v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); + if ( !v36 && **(_WORD **)(v9 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) + { + v99 = *(_DWORD *)(v9 + 36); + v87 = a1[2]; + if ( v87 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v87 + 2; + a2 = -1; +LABEL_167: + v11 = 1; + goto LABEL_122; + } + if ( !*(_DWORD *)(v9 + 44) ) + { + if ( !*(_DWORD *)(v9 + 36) ) + goto LABEL_58; + goto LABEL_138; + } + } + else if ( !*(_DWORD *)(v9 + 44) ) + { + goto LABEL_58; + } + v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); + if ( !v36 && **(_WORD **)(v9 + 40) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) + { + v99 = *(_DWORD *)(v9 + 44); + v88 = a1[2]; + if ( v88 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v88 + 2; + v102 = 1; + a2 = -1; + v11 = 1; + goto LABEL_122; + } + if ( !*(_DWORD *)(v9 + 36) || *(_DWORD *)(v9 + 44) ) + { +LABEL_58: + v36 = v101; + v11 = !v101; + goto LABEL_122; + } +LABEL_138: + v102 = 1; + v36 = 0; + v11 = 1; + goto LABEL_122; + case 4: + v22 = a2; + v23 = a1; + while ( 2 ) + { + v27 = v22 == -1; + v28 = v27 & (v23 != 0); + if ( v28 ) + { + v63 = (_WORD *)v23[2]; + v64 = (unsigned int)v63 >= v23[3] ? (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23) : *v63; + v27 = 0; + if ( v64 == -1 ) + { + a1 = 0; + v27 = v28; + } + } + v29 = a4 == -1; + v30 = v29 & (a3 != 0); + if ( v30 + && ((v54 = (__int16 *)a3[2], (unsigned int)v54 >= a3[3]) + ? (v55 = (*(int (**)(void))(*a3 + 36))()) + : (v55 = *v54), + v29 = 0, + v55 == -1) ) + { + a3 = 0; + if ( v27 == v30 ) + goto LABEL_100; + } + else if ( v27 == v29 ) + { +LABEL_100: + v11 = 1; + goto LABEL_101; + } + v31 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v65 = (_WORD *)a1[2]; + v31 = (unsigned int)v65 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v65; + if ( v31 == 0xFFFF ) + a1 = 0; + } + v32 = wmemchr((const wchar_t *)(v9 + 62), v31, 0xAu); + if ( v32 ) + { + v107 = std::money_base::_S_atoms[((int)v32 - v9 - 60) >> 1]; + v24 = *((_DWORD *)v116 - 3); + if ( (unsigned int)(v24 + 1) > *((_DWORD *)v116 - 2) || *((int *)v116 - 1) > 0 ) + std::string::reserve((unsigned int **)&v116, (std::string *)(v24 + 1), (unsigned int)v93); + *((_BYTE *)v116 + *((_DWORD *)v116 - 3)) = v107; + v25 = v116; + if ( v116 != (volatile signed __int32 *)&unk_4E93FC ) + { + *((_DWORD *)v116 - 1) = 0; + *((_DWORD *)v25 - 3) = v24 + 1; + *((_BYTE *)v25 + v24 + 1) = 0; + } + ++v113; + goto LABEL_36; + } + v11 = v105 | (*(_WORD *)(v9 + 18) != v31); + if ( v11 ) + { + if ( !*(_BYTE *)(v9 + 16) ) + goto LABEL_101; + if ( *(_WORD *)(v9 + 20) == v31 ) + { + if ( v105 ) + { + v11 = v105; + } + else + { + if ( v113 ) + { + v33 = *(v115 - 3); + if ( v33 + 1 > *(v115 - 2) || (int)*(v115 - 1) > 0 ) + std::string::reserve(&v115, (std::string *)(v33 + 1), (unsigned int)v93); + v34 = v113; + v113 = 0; + *((_BYTE *)v115 + *(v115 - 3)) = v34; + v35 = v115; + if ( v115 != (unsigned int *)&unk_4E93FC ) + { + *(v115 - 1) = 0; + *(v35 - 3) = v33 + 1; + *((_BYTE *)v35 + v33 + 1) = 0; + v23 = a1; + v26 = a1[2]; + if ( v26 >= a1[3] ) + goto LABEL_55; + goto LABEL_37; + } +LABEL_36: + v23 = a1; + v26 = a1[2]; + if ( v26 >= a1[3] ) + { +LABEL_55: + (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); + v23 = a1; + goto LABEL_38; + } +LABEL_37: + v23[2] = v26 + 2; +LABEL_38: + a2 = -1; + v22 = -1; + continue; + } + v11 = 0; + } + } + else + { + v11 = *(_BYTE *)(v9 + 16); + } +LABEL_101: + if ( !*((_DWORD *)v116 - 3) ) + goto LABEL_102; + goto LABEL_121; + } + break; + } + if ( *(int *)(v9 + 48) <= 0 ) + { + v105 = 0; + goto LABEL_100; + } + v66 = v113; + v105 = 1; + v113 = 0; + v97 = v66; + goto LABEL_36; + default: + v36 = 0; + v11 = 1; + goto LABEL_122; + } + } +} +// 481F77: variable 'v92' is possibly undefined +// 482004: variable 'v94' is possibly undefined +// 48155D: variable 'v93' is possibly undefined +// 481ED7: variable 'v95' is possibly undefined +// 4820CD: variable 'v96' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4E9414: using guessed type int std::moneypunct::id; +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (00482250) -------------------------------------------------------- +_DWORD *__stdcall std::money_get>::_M_extract( + _DWORD *a1, + unsigned __int16 a2, + _DWORD *a3, + __int16 a4, + int a5, + _DWORD *a6, + int *a7) +{ + int v7; // esi + int *v8; // edi + int v9; // ebx + bool v10; // zf + char v11; // di + __int16 v12; // ax + _DWORD *v13; // ecx + char v14; // dl + char v15; // di + unsigned __int16 v16; // ax + unsigned int v17; // eax + char v18; // si + char v19; // di + _WORD *v20; // eax + __int16 v21; // ax + __int16 v22; // ax + _DWORD *v23; // ecx + int v24; // edi + volatile signed __int32 *v25; // eax + unsigned int v26; // eax + char v27; // si + char v28; // di + char v29; // dl + char v30; // di + wchar_t v31; // si + wchar_t *v32; // eax + int v33; // edi + char v34; // cl + unsigned int *v35; // eax + char v36; // si + _DWORD *v37; // ecx + unsigned int v38; // edi + __int16 v39; // ax + bool v40; // al + unsigned __int16 v41; // ax + unsigned int v42; // eax + bool v43; // si + _WORD *v44; // eax + __int16 v45; // ax + __int16 v46; // ax + _DWORD *v47; // ecx + char v48; // dl + unsigned __int16 v49; // ax + unsigned int v50; // eax + char v51; // si + _WORD *v52; // eax + __int16 v53; // ax + __int16 *v54; // eax + __int16 v55; // ax + char v56; // bl + char v57; // si + char v58; // al + char v59; // si + _DWORD *v60; // ebx + volatile signed __int32 *v61; // ecx + _WORD *v63; // eax + __int16 v64; // ax + _WORD *v65; // eax + char v66; // al + _WORD *v67; // eax + __int16 v68; // ax + _WORD *v69; // eax + unsigned __int16 v70; // ax + unsigned int v71; // eax + _WORD *v72; // eax + __int16 v73; // ax + std::string *v74; // eax + unsigned __int16 *v75; // eax + __int16 *v76; // eax + __int16 v77; // dx + unsigned __int16 *v78; // eax + int v79; // edx + int v80; // eax + _WORD *v81; // eax + __int16 v82; // dx + _WORD *v83; // eax + __int16 v84; // ax + unsigned int first_not_of; // eax + unsigned int v86; // edx + unsigned int v87; // eax + unsigned int v88; // eax + _DWORD *v89; // eax + std::locale::_Impl *v90; // ebx + volatile signed __int32 *v91; // eax + void (__cdecl *v92)(void *); // [esp+4h] [ebp-64h] + std::string *v93; // [esp+4h] [ebp-64h] + unsigned int v94; // [esp+8h] [ebp-60h] + unsigned int v95; // [esp+Ch] [ebp-5Ch] + char v96; // [esp+10h] [ebp-58h] + char v97; // [esp+1Ch] [ebp-4Ch] + void *v98; // [esp+20h] [ebp-48h] + unsigned int v99; // [esp+24h] [ebp-44h] + int v100; // [esp+2Ch] [ebp-3Ch] + bool v101; // [esp+30h] [ebp-38h] + char v102; // [esp+31h] [ebp-37h] + bool v103; // [esp+32h] [ebp-36h] + bool v104; // [esp+32h] [ebp-36h] + char v105; // [esp+33h] [ebp-35h] + int v106; // [esp+34h] [ebp-34h] + char v107; // [esp+34h] [ebp-34h] + unsigned int v108; // [esp+34h] [ebp-34h] + char v109; // [esp+34h] [ebp-34h] + char v110; // [esp+34h] [ebp-34h] + unsigned int S; // [esp+38h] [ebp-30h] + int v112; // [esp+3Ch] [ebp-2Ch] + int v113; // [esp+3Ch] [ebp-2Ch] + char v114; // [esp+43h] [ebp-25h] BYREF + unsigned int *v115; // [esp+44h] [ebp-24h] BYREF + volatile signed __int32 *v116; // [esp+48h] [ebp-20h] BYREF + int v117; // [esp+4Ch] [ebp-1Ch] + + v112 = a5 + 108; + v98 = std::use_facet>(a5 + 108); + v7 = std::locale::id::_M_id(&std::moneypunct::id); + v8 = (int *)(*(_DWORD *)(*(_DWORD *)(a5 + 108) + 12) + 4 * v7); + v9 = *v8; + if ( !*v8 ) + { + v89 = operator new((struct type_info *)0x54, v92); + v89[1] = 0; + v90 = (std::locale::_Impl *)v89; + *v89 = &off_4F66F4; + v89[2] = 0; + v89[3] = 0; + *((_BYTE *)v89 + 16) = 0; + *(_DWORD *)((char *)v89 + 18) = 0; + v89[6] = 0; + v89[7] = 0; + v89[8] = 0; + v89[9] = 0; + v89[10] = 0; + v89[11] = 0; + v89[12] = 0; + v89[13] = 0; + v89[14] = 0; + *((_BYTE *)v89 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v89, v112); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a5 + 108), v90, (const std::locale::facet *)v7, v94); + v9 = *v8; + } + if ( *(_DWORD *)(v9 + 36) ) + v101 = *(_DWORD *)(v9 + 44) != 0; + else + v101 = 0; + v10 = *(_BYTE *)(v9 + 16) == 0; + v115 = (unsigned int *)&unk_4E93FC; + if ( !v10 ) + std::string::reserve(&v115, (std::string *)0x20, (unsigned int)v92); + v116 = (volatile signed __int32 *)&unk_4E93FC; + std::string::reserve((unsigned int **)&v116, (std::string *)0x20, (unsigned int)v92); + v105 = 0; + v100 = 1; + v117 = *(_DWORD *)(v9 + 56); + v113 = 0; + v97 = 0; + v99 = 0; + v102 = 0; + while ( 2 ) + { + switch ( *((_BYTE *)&v116 + v100 + 3) ) + { + case 0: + v11 = 1; + goto LABEL_10; + case 1: + if ( !std::istreambuf_iterator::equal(&a1, (int)&a3) ) + { + v70 = std::istreambuf_iterator::_M_get(&a1, a2); + v11 = (*(int (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v70); + if ( v11 ) + { + v71 = a1[2]; + if ( v71 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v71 + 2; + a2 = -1; +LABEL_10: + if ( v100 == 4 ) + goto LABEL_11; + goto LABEL_82; + } + } + v11 = 0; + if ( v100 != 4 ) + { +LABEL_82: + v46 = a2; + v47 = a1; + while ( 1 ) + { + v51 = v46 == -1; + v110 = v51 & (v47 != 0); + if ( v110 ) + { + v52 = (_WORD *)v47[2]; + v53 = (unsigned int)v52 >= v47[3] ? (*(int (__fastcall **)(_DWORD *))(*v47 + 36))(v47) : *v52; + v51 = 0; + if ( v53 == -1 ) + { + a1 = 0; + v51 = v110; + } + } + v48 = a4 == -1; + v109 = v48 & (a3 != 0); + if ( v109 ) + { + v67 = (_WORD *)a3[2]; + v68 = (unsigned int)v67 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v67; + v48 = 0; + if ( v68 == -1 ) + { + a3 = 0; + v48 = v109; + } + } + if ( v51 == v48 ) + break; + v49 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v69 = (_WORD *)a1[2]; + v49 = (unsigned int)v69 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v69; + if ( v49 == 0xFFFF ) + a1 = 0; + } + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v98 + 8))(v98, 32, v49) ) + break; + v47 = a1; + v50 = a1[2]; + if ( v50 >= a1[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + v47 = a1; + } + else + { + a1[2] = v50 + 2; + } + a2 = -1; + v46 = -1; + } +LABEL_121: + v36 = v11 ^ 1; + goto LABEL_122; + } +LABEL_11: + if ( ((unsigned __int8)v11 & (v99 > 1)) == 0 ) + { + if ( v11 ) + { + if ( *((_DWORD *)v116 - 3) > 1u ) + goto LABEL_193; + goto LABEL_149; + } + goto LABEL_102; + } + if ( v102 ) + v106 = *(_DWORD *)(v9 + 40); + else + v106 = *(_DWORD *)(v9 + 32); + v12 = a2; + v13 = a1; + for ( S = 1; ; ++S ) + { + v18 = v12 == -1; + v19 = v18 & (v13 != 0); + if ( v19 ) + { + v20 = (_WORD *)v13[2]; + v21 = (unsigned int)v20 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v20; + v18 = 0; + if ( v21 == -1 ) + { + a1 = 0; + v18 = v19; + } + } + v14 = a4 == -1; + v15 = v14 & (a3 != 0); + if ( v15 ) + { + v72 = (_WORD *)a3[2]; + v73 = (unsigned int)v72 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v72; + v14 = 0; + if ( v73 == -1 ) + break; + } + if ( S >= v99 ) + goto LABEL_147; +LABEL_17: + if ( v18 == v14 ) + goto LABEL_147; + v13 = a1; + v16 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v75 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v75 >= a1[3] ) + v16 = (*(int (**)(void))(*a1 + 36))(); + else + v16 = *v75; + if ( v16 == 0xFFFF ) + { + a1 = 0; + v13 = 0; + } + else + { + v13 = a1; + } + } + if ( *(_WORD *)(v106 + 2 * S) != v16 ) + goto LABEL_103; + v17 = v13[2]; + if ( v17 >= v13[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*v13 + 40))(v13); + v13 = a1; + } + else + { + v13[2] = v17 + 2; + } + a2 = -1; + v12 = -1; + } + v14 = v15; + a3 = 0; + if ( S < v99 ) + goto LABEL_17; +LABEL_147: + if ( S == v99 ) + { + if ( *((_DWORD *)v116 - 3) <= 1u ) + goto LABEL_149; +LABEL_193: + first_not_of = std::string::find_first_not_of((int *)&v116, (std::string *)0x30, 0, v94); + if ( first_not_of ) + { + v86 = *((_DWORD *)v116 - 3); + if ( first_not_of == -1 ) + first_not_of = v86 - 1; + if ( first_not_of > v86 ) + first_not_of = *((_DWORD *)v116 - 3); + std::string::_M_mutate(&v116, 0, first_not_of, 0, v95); + } +LABEL_149: + if ( v102 ) + { + v91 = v116; + if ( *((int *)v116 - 1) >= 0 ) + { + std::string::_M_leak_hard(&v116); + v91 = v116; + } + if ( *(_BYTE *)v91 != 48 ) + { + if ( *((int *)v91 - 1) >= 0 ) + std::string::_M_leak_hard(&v116); + std::string::_M_replace_aux(&v116, 0, 0, 1u, 45, v96); + *((_DWORD *)v116 - 1) = -1; + } + } + if ( *(v115 - 3) ) + { + v74 = (std::string *)(char)v113; + if ( v105 ) + v74 = (std::string *)v97; + std::string::push_back(&v115, v74, (char)v93); + if ( !(unsigned __int8)std::__verify_grouping( + *(char **)(v9 + 8), + *(_DWORD *)(v9 + 12), + (const char **)&v115) ) + *a6 |= 4u; + } + if ( !v105 || *(_DWORD *)(v9 + 48) == v113 ) + { + std::string::swap(a7, (std::string *)&v116, v93); + v13 = a1; + goto LABEL_104; + } + } +LABEL_102: + v13 = a1; +LABEL_103: + *a6 |= 4u; +LABEL_104: + v56 = a2 == 0xFFFF; + v57 = v56 & (v13 != 0); + if ( v57 ) + { + v83 = (_WORD *)v13[2]; + v84 = (unsigned int)v83 >= v13[3] ? (*(int (__fastcall **)(_DWORD *))(*v13 + 36))(v13) : *v83; + v56 = 0; + if ( v84 == -1 ) + { + a1 = 0; + v56 = v57; + } + } + v58 = a4 == -1; + v59 = v58 & (a3 != 0); + if ( v59 ) + { + v81 = (_WORD *)a3[2]; + v82 = (unsigned int)v81 >= a3[3] ? (*(int (**)(void))(*a3 + 36))() : *v81; + v58 = 0; + if ( v82 == -1 ) + { + a3 = 0; + v58 = v59; + } + } + if ( v56 == v58 ) + *a6 |= 2u; + v60 = a1; + if ( v116 == (volatile signed __int32 *)&unk_4E93FC ) + { + v61 = (volatile signed __int32 *)(v115 - 3); + if ( v115 == (unsigned int *)&unk_4E93FC ) + return v60; +LABEL_227: + std::string::_Rep::_M_dispose(v61, (int)&v114); + return v60; + } + else + { + std::string::_Rep::_M_dispose(v116 - 3, (int)&v114); + v61 = (volatile signed __int32 *)(v115 - 3); + if ( v115 != (unsigned int *)&unk_4E93FC ) + goto LABEL_227; + return v60; + } + case 2: + if ( (*(_BYTE *)(a5 + 13) & 2) != 0 ) + goto LABEL_66; + v36 = v100 == 1 || v99 > 1; + if ( v36 ) + goto LABEL_66; + if ( v100 == 2 ) + { + if ( !v101 && (_BYTE)v117 != 3 && BYTE2(v117) != 1 ) + goto LABEL_124; + } + else + { + v11 = 1; + if ( v100 != 3 ) + goto LABEL_122; + if ( HIBYTE(v117) != 4 && (HIBYTE(v117) != 3 || !v101) ) + goto LABEL_124; + } +LABEL_66: + v37 = a1; + v38 = 0; + v108 = *(_DWORD *)(v9 + 28); + v39 = a2; + while ( 2 ) + { + v43 = v39 == -1; + v104 = v43 && v37 != 0; + if ( v104 ) + { + v44 = (_WORD *)v37[2]; + v45 = (unsigned int)v44 >= v37[3] ? (*(int (__fastcall **)(_DWORD *))(*v37 + 36))(v37) : *v44; + v43 = 0; + if ( v45 == -1 ) + { + a1 = 0; + v43 = v104; + } + } + v40 = a4 == -1; + v103 = v40 && a3 != 0; + if ( !v103 + || ((v76 = (__int16 *)a3[2], (unsigned int)v76 >= a3[3]) + ? (v77 = (*(int (**)(void))(*a3 + 36))()) + : (v77 = *v76), + v40 = 0, + v77 != -1) ) + { + v36 = (v38 < v108) & (v40 ^ v43); + if ( !v36 ) + goto LABEL_166; +LABEL_69: + v41 = a2; + if ( a2 == 0xFFFF + && a1 + && ((v78 = (unsigned __int16 *)a1[2], (unsigned int)v78 >= a1[3]) + ? (v41 = (*(int (**)(void))(*a1 + 36))()) + : (v41 = *v78), + v41 == 0xFFFF) ) + { + v79 = *(_DWORD *)(v9 + 24); + a1 = 0; + if ( *(_WORD *)(v79 + 2 * v38) != 0xFFFF ) + goto LABEL_172; + } + else if ( *(_WORD *)(*(_DWORD *)(v9 + 24) + 2 * v38) != v41 ) + { + goto LABEL_172; + } + v37 = a1; + v42 = a1[2]; + if ( v42 >= a1[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + v37 = a1; + } + else + { + a1[2] = v42 + 2; + } + ++v38; + a2 = -1; + v39 = -1; + continue; + } + break; + } + a3 = 0; + v36 = (v38 < v108) & (v103 ^ v43); + if ( v36 ) + goto LABEL_69; +LABEL_166: + if ( v38 == v108 ) + goto LABEL_167; +LABEL_172: + if ( v38 ) + goto LABEL_102; + v80 = *(_DWORD *)(a5 + 12) & 0x200; + v11 = v80 == 0; + v36 = v80 != 0; +LABEL_122: + if ( v100 > 3 || v36 ) + goto LABEL_11; +LABEL_124: + ++v100; + continue; + case 3: + if ( *(_DWORD *)(v9 + 36) ) + { + v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); + if ( !v36 && **(_WORD **)(v9 + 32) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) + { + v99 = *(_DWORD *)(v9 + 36); + v87 = a1[2]; + if ( v87 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v87 + 2; + a2 = -1; +LABEL_167: + v11 = 1; + goto LABEL_122; + } + if ( !*(_DWORD *)(v9 + 44) ) + { + if ( !*(_DWORD *)(v9 + 36) ) + goto LABEL_58; + goto LABEL_138; + } + } + else if ( !*(_DWORD *)(v9 + 44) ) + { + goto LABEL_58; + } + v36 = std::istreambuf_iterator::equal(&a1, (int)&a3); + if ( !v36 && **(_WORD **)(v9 + 40) == (unsigned __int16)std::istreambuf_iterator::_M_get(&a1, a2) ) + { + v99 = *(_DWORD *)(v9 + 44); + v88 = a1[2]; + if ( v88 >= a1[3] ) + std::wstreambuf::sbumpc((int)a1); + else + a1[2] = v88 + 2; + v102 = 1; + a2 = -1; + v11 = 1; + goto LABEL_122; + } + if ( !*(_DWORD *)(v9 + 36) || *(_DWORD *)(v9 + 44) ) + { +LABEL_58: + v36 = v101; + v11 = !v101; + goto LABEL_122; + } +LABEL_138: + v102 = 1; + v36 = 0; + v11 = 1; + goto LABEL_122; + case 4: + v22 = a2; + v23 = a1; + while ( 2 ) + { + v27 = v22 == -1; + v28 = v27 & (v23 != 0); + if ( v28 ) + { + v63 = (_WORD *)v23[2]; + v64 = (unsigned int)v63 >= v23[3] ? (*(int (__fastcall **)(_DWORD *))(*v23 + 36))(v23) : *v63; + v27 = 0; + if ( v64 == -1 ) + { + a1 = 0; + v27 = v28; + } + } + v29 = a4 == -1; + v30 = v29 & (a3 != 0); + if ( v30 + && ((v54 = (__int16 *)a3[2], (unsigned int)v54 >= a3[3]) + ? (v55 = (*(int (**)(void))(*a3 + 36))()) + : (v55 = *v54), + v29 = 0, + v55 == -1) ) + { + a3 = 0; + if ( v27 == v30 ) + goto LABEL_100; + } + else if ( v27 == v29 ) + { +LABEL_100: + v11 = 1; + goto LABEL_101; + } + v31 = a2; + if ( a1 && a2 == 0xFFFF ) + { + v65 = (_WORD *)a1[2]; + v31 = (unsigned int)v65 >= a1[3] ? (*(int (**)(void))(*a1 + 36))() : *v65; + if ( v31 == 0xFFFF ) + a1 = 0; + } + v32 = wmemchr((const wchar_t *)(v9 + 62), v31, 0xAu); + if ( v32 ) + { + v107 = std::money_base::_S_atoms[((int)v32 - v9 - 60) >> 1]; + v24 = *((_DWORD *)v116 - 3); + if ( (unsigned int)(v24 + 1) > *((_DWORD *)v116 - 2) || *((int *)v116 - 1) > 0 ) + std::string::reserve((unsigned int **)&v116, (std::string *)(v24 + 1), (unsigned int)v93); + *((_BYTE *)v116 + *((_DWORD *)v116 - 3)) = v107; + v25 = v116; + if ( v116 != (volatile signed __int32 *)&unk_4E93FC ) + { + *((_DWORD *)v116 - 1) = 0; + *((_DWORD *)v25 - 3) = v24 + 1; + *((_BYTE *)v25 + v24 + 1) = 0; + } + ++v113; + goto LABEL_36; + } + v11 = v105 | (*(_WORD *)(v9 + 18) != v31); + if ( v11 ) + { + if ( !*(_BYTE *)(v9 + 16) ) + goto LABEL_101; + if ( *(_WORD *)(v9 + 20) == v31 ) + { + if ( v105 ) + { + v11 = v105; + } + else + { + if ( v113 ) + { + v33 = *(v115 - 3); + if ( v33 + 1 > *(v115 - 2) || (int)*(v115 - 1) > 0 ) + std::string::reserve(&v115, (std::string *)(v33 + 1), (unsigned int)v93); + v34 = v113; + v113 = 0; + *((_BYTE *)v115 + *(v115 - 3)) = v34; + v35 = v115; + if ( v115 != (unsigned int *)&unk_4E93FC ) + { + *(v115 - 1) = 0; + *(v35 - 3) = v33 + 1; + *((_BYTE *)v35 + v33 + 1) = 0; + v23 = a1; + v26 = a1[2]; + if ( v26 >= a1[3] ) + goto LABEL_55; + goto LABEL_37; + } +LABEL_36: + v23 = a1; + v26 = a1[2]; + if ( v26 >= a1[3] ) + { +LABEL_55: + (*(void (__fastcall **)(_DWORD *))(*v23 + 40))(v23); + v23 = a1; + goto LABEL_38; + } +LABEL_37: + v23[2] = v26 + 2; +LABEL_38: + a2 = -1; + v22 = -1; + continue; + } + v11 = 0; + } + } + else + { + v11 = *(_BYTE *)(v9 + 16); + } +LABEL_101: + if ( !*((_DWORD *)v116 - 3) ) + goto LABEL_102; + goto LABEL_121; + } + break; + } + if ( *(int *)(v9 + 48) <= 0 ) + { + v105 = 0; + goto LABEL_100; + } + v66 = v113; + v105 = 1; + v113 = 0; + v97 = v66; + goto LABEL_36; + default: + v36 = 0; + v11 = 1; + goto LABEL_122; + } + } +} +// 482E87: variable 'v92' is possibly undefined +// 482F14: variable 'v94' is possibly undefined +// 48246D: variable 'v93' is possibly undefined +// 482DE7: variable 'v95' is possibly undefined +// 482FDD: variable 'v96' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4E9418: using guessed type int std::moneypunct::id; +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (00483160) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (00483170) -------------------------------------------------------- +int __thiscall std::money_get>::get( + void *this, + int a2, + int a3, + int a4, + int a5, + unsigned __int8 a6) +{ + return (*(int (__thiscall **)(void *, int, int, int, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (00483180) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +_DWORD *__stdcall std::money_get>::do_get( + _DWORD *a1, + unsigned __int16 a2, + _DWORD *a3, + __int16 a4, + char a5, + int a6, + _DWORD *a7, + void **a8) +{ + void *v8; // edi + _DWORD *v9; // eax + _DWORD *v10; // esi + int v11; // eax + size_t v12; // edx + void *v13; // ecx + void *v15; // ecx + int v16; // edx + size_t v17; // [esp+24h] [ebp-34h] + int v18; // [esp+3Bh] [ebp-1Dh] BYREF + int v19[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v8 = std::use_facet>(a6 + 108); + v19[0] = (int)&unk_4E93FC; + if ( a5 ) + v9 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, v19); + else + v9 = std::money_get>::_M_extract(a1, a2, a3, a4, a6, a7, v19); + v10 = v9; + v11 = v19[0]; + v12 = *(_DWORD *)(v19[0] - 12); + v17 = v12; + if ( !v12 ) + { + v13 = (void *)(v19[0] - 12); + if ( (_UNKNOWN *)v19[0] == &unk_4E93FC ) + return v10; + goto LABEL_10; + } + std::wstring::resize(a8, v12, 0); + v15 = *a8; + if ( *((int *)*a8 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)a8); + v15 = *a8; + } + (*(void (__thiscall **)(void *, int, size_t, void *))(*(_DWORD *)v8 + 44))(v8, v19[0], v19[0] + v17, v15); + v11 = v19[0]; + v13 = (void *)(v19[0] - 12); + if ( (_UNKNOWN *)v19[0] != &unk_4E93FC ) + { +LABEL_10: + if ( _CRT_MT ) + { + v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v11 - 4), 0xFFFFFFFF); + } + else + { + v16 = *(_DWORD *)(v11 - 4); + *(_DWORD *)(v11 - 4) = v16 - 1; + } + if ( v16 <= 0 ) + std::string::_Rep::_M_destroy(v13, (int)&v18); + } + return v10; +} +// 4832E6: positive sp value 4 has been found +// 15412D0: using guessed type int _CRT_MT; + +//----- (004832F0) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +_DWORD *__stdcall std::money_get>::do_get( + std::locale::facet *a1, + unsigned __int16 a2, + _DWORD *a3, + __int16 a4, + char a5, + int a6, + _DWORD *a7, + long double *a8) +{ + _DWORD *v8; // eax + _DWORD *v9; // esi + char *v10; // ecx + int v12; // edx + char *String; // [esp+38h] [ebp-20h] BYREF + int v14[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + String = (char *)&unk_4E93FC; + if ( a5 ) + v8 = std::money_get>::_M_extract( + a1, + a2, + a3, + a4, + a6, + a7, + (int *)&String); + else + v8 = std::money_get>::_M_extract( + a1, + a2, + a3, + a4, + a6, + a7, + (int *)&String); + v9 = v8; + v14[0] = std::locale::facet::_S_get_c_locale(); + std::__convert_to_v(String, a8, a7); + v10 = String - 12; + if ( String != (char *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)String - 1, 0xFFFFFFFF); + } + else + { + v12 = *((_DWORD *)String - 1); + *((_DWORD *)String - 1) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v10, (int)v14); + } + return v9; +} +// 4833F6: positive sp value 4 has been found +// 15412D0: using guessed type int _CRT_MT; +// 4832F0: using guessed type int var_1C[7]; + +//----- (00483400) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (00483420) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + char a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (00483440) -------------------------------------------------------- +int __stdcall std::money_put>::do_put( + int a1, + char a2, + char a3, + int a4, + char a5, + std::string **a6) +{ + if ( a3 ) + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); + else + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); +} + +//----- (004834B0) -------------------------------------------------------- +int __thiscall std::money_put>::do_put( + void *this, + std::locale *a2, + char a3, + int a4, + int a5, + int a6, + long double a7) +{ + void *v7; // esp + void *v8; // esp + int v9; // eax + int v10; // ebx + int v11; // eax + void *v12; // esp + void *v13; // esp + char v14; // al + void (__thiscall *v15)(_BYTE *, void *, char *, size_t); // eax + int v16; // eax + int v17; // ebx + int v19; // edx + char v20[52]; // [esp-30h] [ebp-98h] BYREF + const std::locale *v21; // [esp+4h] [ebp-64h] + char *v22; // [esp+24h] [ebp-44h] + int v23; // [esp+28h] [ebp-40h] + int v24; // [esp+2Ch] [ebp-3Ch] + void *v25; // [esp+30h] [ebp-38h] + size_t BufferCount; // [esp+34h] [ebp-34h] + _BYTE *v27; // [esp+38h] [ebp-30h] + void *Src; // [esp+3Ch] [ebp-2Ch] + char v29[5]; // [esp+47h] [ebp-21h] BYREF + int *v30[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v25 = this; + v24 = a4; + v23 = a6; + std::locale::locale((volatile signed __int32 **)&v29[1], (volatile signed __int32 **)(a5 + 108), v21); + v27 = std::use_facet>((int)&v29[1]); + v7 = alloca(80); + v8 = alloca(80); + Src = v20; + v30[0] = (int *)std::locale::facet::_S_get_c_locale(); + v9 = std::__convert_from_v(v30, v20, 0x40u, "%.*Lf", 0, a7); + v10 = v9; + if ( v9 > 63 ) + { + BufferCount = v9 + 1; + v11 = 16 * ((unsigned int)(v9 + 28) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + Src = v20; + v30[0] = (int *)std::locale::facet::_S_get_c_locale(); + v10 = std::__convert_from_v(v30, v20, BufferCount, "%.*Lf", 0, a7); + } + std::string::string((unsigned int **)v30, v10, 0, (int)v29); + BufferCount = (size_t)v30[0]; + if ( *(v30[0] - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)v30); + BufferCount = (size_t)v30[0]; + } + v22 = (char *)Src + v10; + v14 = v27[28]; + if ( v14 == 1 ) + goto LABEL_8; + if ( v14 ) + { + v15 = *(void (__thiscall **)(_BYTE *, void *, char *, size_t))(*(_DWORD *)v27 + 28); + if ( (char *)v15 == (char *)std::ctype::do_widen ) + goto LABEL_8; +LABEL_16: + v15(v27, Src, v22, BufferCount); + goto LABEL_10; + } + std::ctype::_M_widen_init((int)v27); + v15 = *(void (__thiscall **)(_BYTE *, void *, char *, size_t))(*(_DWORD *)v27 + 28); + if ( (char *)v15 != (char *)std::ctype::do_widen ) + goto LABEL_16; +LABEL_8: + if ( v22 != Src ) + memcpy((void *)BufferCount, Src, v10); +LABEL_10: + if ( (_BYTE)v24 ) + v16 = std::money_put>::_M_insert( + (int)a2, + a3, + a5, + v23, + (std::string **)v30); + else + v16 = std::money_put>::_M_insert( + (int)a2, + a3, + a5, + v23, + (std::string **)v30); + v17 = v16; + Src = v30[0] - 3; + if ( (_UNKNOWN *)v30[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v19 = _InterlockedExchangeAdd(v30[0] - 1, 0xFFFFFFFF); + } + else + { + v19 = *(v30[0] - 1); + *(v30[0] - 1) = v19 - 1; + } + if ( v19 <= 0 ) + std::string::_Rep::_M_destroy(Src, (int)v29); + } + std::locale::~locale((_DWORD **)&v29[1]); + return v17; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00483740) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + char a4, + std::string **a5) +{ + int v5; // esi + int *v6; // edi + int v7; // ebx + std::string *v8; // esi + int v9; // ecx + unsigned __int8 *v10; // ecx + unsigned __int8 *v11; // eax + size_t v12; // eax + size_t v13; // edi + int v15; // eax + std::string *v16; // edx + _BYTE *v17; // eax + std::string *v18; // edx + size_t v19; // eax + size_t v20; // ecx + unsigned int v21; // edx + unsigned int v22; // esi + unsigned int v23; // ecx + unsigned int v24; // edi + bool v25; // cf + bool v26; // zf + char *v27; // esi + char v28; // al + unsigned int *v29; // eax + unsigned int v30; // edx + std::locale::_Impl *v31; // eax + std::locale::_Impl *v32; // ebx + void (__cdecl *v33)(void *); // [esp+0h] [ebp-78h] + unsigned int v34; // [esp+0h] [ebp-78h] + const std::string *v35; // [esp+0h] [ebp-78h] + unsigned int v36; // [esp+4h] [ebp-74h] + unsigned int v37; // [esp+4h] [ebp-74h] + unsigned int v38; // [esp+8h] [ebp-70h] + char v39; // [esp+Ch] [ebp-6Ch] + char v40; // [esp+20h] [ebp-58h] + char *v41; // [esp+24h] [ebp-54h] + std::string *v42; // [esp+28h] [ebp-50h] + std::string *v43; // [esp+28h] [ebp-50h] + _BYTE *v44; // [esp+2Ch] [ebp-4Ch] + bool v45; // [esp+2Ch] [ebp-4Ch] + char *v46; // [esp+30h] [ebp-48h] + unsigned int v47; // [esp+3Ch] [ebp-3Ch] + _DWORD *v48; // [esp+40h] [ebp-38h] + int v49; // [esp+40h] [ebp-38h] + int v50; // [esp+40h] [ebp-38h] + char v51; // [esp+53h] [ebp-25h] BYREF + std::string *v52; // [esp+54h] [ebp-24h] BYREF + unsigned int *v53; // [esp+58h] [ebp-20h] BYREF + int v54; // [esp+5Ch] [ebp-1Ch] BYREF + char v55; // [esp+60h] [ebp-18h] BYREF + + v48 = std::use_facet>(a3 + 108); + v5 = std::locale::id::_M_id(&std::moneypunct::id); + v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v31 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v33); + *(_DWORD *)v31 = &off_4F66C4; + v32 = v31; + *((_DWORD *)v31 + 1) = 0; + *((_DWORD *)v31 + 2) = 0; + *((_DWORD *)v31 + 3) = 0; + *((_WORD *)v31 + 8) = 0; + *((_BYTE *)v31 + 18) = 0; + *((_DWORD *)v31 + 5) = 0; + *((_DWORD *)v31 + 6) = 0; + *((_DWORD *)v31 + 7) = 0; + *((_DWORD *)v31 + 8) = 0; + *((_DWORD *)v31 + 9) = 0; + *((_DWORD *)v31 + 10) = 0; + *((_DWORD *)v31 + 11) = 0; + *((_DWORD *)v31 + 12) = 0; + *((_DWORD *)v31 + 13) = 0; + *((_BYTE *)v31 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v31, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v32, (const std::locale::facet *)v5, v36); + v7 = *v6; + } + v8 = *a5; + v9 = *((_DWORD *)*a5 - 3); + if ( *(_BYTE *)*a5 == *(_BYTE *)(v7 + 56) ) + { + v54 = *(_DWORD *)(v7 + 52); + if ( !v9 ) + goto LABEL_10; + v8 = (std::string *)((char *)v8 + 1); + v46 = *(char **)(v7 + 36); + v47 = *(_DWORD *)(v7 + 40); + } + else + { + v54 = *(_DWORD *)(v7 + 48); + v46 = *(char **)(v7 + 28); + v47 = *(_DWORD *)(v7 + 32); + } + v10 = (unsigned __int8 *)v8 + v9; + if ( v10 > (unsigned __int8 *)v8 ) + { + v11 = (unsigned __int8 *)v8; + do + { + if ( (*(_BYTE *)(v48[6] + 2 * *v11) & 8) == 0 ) + break; + ++v11; + } + while ( v10 != v11 ); + v12 = v11 - (unsigned __int8 *)v8; + v13 = v12; + if ( v12 ) + { + v52 = (std::string *)&unk_4E93FC; + std::string::reserve((unsigned int **)&v52, (std::string *)(2 * v12), (unsigned int)v33); + v15 = *(_DWORD *)(v7 + 44); + v49 = v13 - v15; + if ( (int)(v13 - v15) > 0 ) + { + if ( v15 < 0 ) + v49 = v13; + if ( *(_DWORD *)(v7 + 12) ) + { + std::string::_M_replace_aux((volatile signed __int32 **)&v52, 0, *((_DWORD *)v52 - 3), 2 * v49, 0, v39); + v16 = v52; + v42 = *(std::string **)(v7 + 12); + v41 = *(char **)(v7 + 8); + v40 = *(_BYTE *)(v7 + 18); + if ( *((int *)v52 - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)&v52); + v16 = v52; + } + v17 = std::__add_grouping(v16, v40, v41, (int)v42, v8, (_BYTE *)v8 + v49); + v18 = v52; + v44 = v17; + if ( *((int *)v52 - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)&v52); + v18 = v52; + } + v19 = *((_DWORD *)v18 - 3); + v20 = v44 - (_BYTE *)v18; + v21 = v19 - (v44 - (_BYTE *)v18); + if ( v20 > v19 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v20, + v19); + std::string::_M_mutate((volatile signed __int32 **)&v52, v20, v21, 0, v38); + v15 = *(_DWORD *)(v7 + 44); + } + else + { + std::string::assign((volatile signed __int32 **)&v52, v8, v49, v36); + v15 = *(_DWORD *)(v7 + 44); + } + } + if ( v15 > 0 ) + { + std::string::push_back((unsigned int **)&v52, (std::string *)*(char *)(v7 + 17), v34); + if ( v49 < 0 ) + { + std::string::append((unsigned int **)&v52, (std::string *)-v49, *(_BYTE *)(v7 + 57), v36); + std::string::append((unsigned int **)&v52, v8, v13, v37); + } + else + { + std::string::append((unsigned int **)&v52, (std::string *)((char *)v8 + v49), *(_DWORD *)(v7 + 44), v36); + } + } + v50 = *(_DWORD *)(a3 + 12) & 0xB0; + v22 = *((_DWORD *)v52 - 3) + v47; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v22 = *(_DWORD *)(v7 + 24) + *((_DWORD *)v52 - 3) + v47; + v53 = (unsigned int *)&unk_4E93FC; + std::string::reserve(&v53, (std::string *)(2 * v22), v34); + v23 = v22; + v24 = *(_DWORD *)(a3 + 8); + v25 = v24 < v22; + v26 = v24 == v22; + v27 = (char *)&v54; + v45 = !v25 && !v26 && v50 == 16; + v43 = (std::string *)(v24 - v23); + do + { + switch ( *v27 ) + { + case 0: + if ( v45 ) + { + v28 = a4; + goto LABEL_33; + } + break; + case 1: + v28 = a4; + if ( v45 ) +LABEL_33: + std::string::append(&v53, v43, v28, v36); + else + std::string::push_back(&v53, (std::string *)a4, (char)v35); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + std::string::append(&v53, *(std::string **)(v7 + 20), *(_DWORD *)(v7 + 24), v36); + break; + case 3: + if ( v47 ) + std::string::push_back(&v53, (std::string *)*v46, (char)v35); + break; + case 4: + std::string::append(&v53, (std::string *)&v52, v35); + break; + default: + break; + } + ++v27; + } + while ( v27 != &v55 ); + if ( v47 > 1 ) + { + std::string::append(&v53, (std::string *)(v46 + 1), v47 - 1, v36); + v29 = v53; + v30 = *(v53 - 3); + if ( v24 <= v30 ) + goto LABEL_40; + } + else + { + v29 = v53; + v30 = *(v53 - 3); + if ( v24 <= v30 ) + { +LABEL_40: + v24 = v30; +LABEL_41: + if ( !a2 ) + { + (*(void (__thiscall **)(int, unsigned int *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v29, v24); + v29 = v53; + } + if ( v29 != (unsigned int *)&unk_4E93FC ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v51); + if ( v52 != (std::string *)&unk_4E93FC ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v52 - 3, (int)&v51); + goto LABEL_10; + } + } + if ( v50 == 32 ) + std::string::append(&v53, (std::string *)(v24 - v30), a4, v36); + else + std::string::_M_replace_aux((volatile signed __int32 **)&v53, 0, 0, v24 - v30, a4, v39); + v29 = v53; + goto LABEL_41; + } + } +LABEL_10: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 483D16: positive sp value 4 has been found +// 483B97: variable 'v33' is possibly undefined +// 483C23: variable 'v36' is possibly undefined +// 483891: variable 'v39' is possibly undefined +// 483921: variable 'v38' is possibly undefined +// 483969: variable 'v34' is possibly undefined +// 4839C7: variable 'v35' is possibly undefined +// 483C94: variable 'v37' is possibly undefined +// 4E940C: using guessed type int std::moneypunct::id; +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (00483D70) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + char a4, + std::string **a5) +{ + int v5; // esi + int *v6; // edi + int v7; // ebx + std::string *v8; // esi + int v9; // ecx + unsigned __int8 *v10; // ecx + unsigned __int8 *v11; // eax + size_t v12; // eax + size_t v13; // edi + int v15; // eax + std::string *v16; // edx + _BYTE *v17; // eax + std::string *v18; // edx + size_t v19; // eax + size_t v20; // ecx + unsigned int v21; // edx + unsigned int v22; // esi + unsigned int v23; // ecx + unsigned int v24; // edi + bool v25; // cf + bool v26; // zf + char *v27; // esi + char v28; // al + unsigned int *v29; // eax + unsigned int v30; // edx + std::locale::_Impl *v31; // eax + std::locale::_Impl *v32; // ebx + void (__cdecl *v33)(void *); // [esp+0h] [ebp-78h] + unsigned int v34; // [esp+0h] [ebp-78h] + const std::string *v35; // [esp+0h] [ebp-78h] + unsigned int v36; // [esp+4h] [ebp-74h] + unsigned int v37; // [esp+4h] [ebp-74h] + unsigned int v38; // [esp+8h] [ebp-70h] + char v39; // [esp+Ch] [ebp-6Ch] + char v40; // [esp+20h] [ebp-58h] + char *v41; // [esp+24h] [ebp-54h] + std::string *v42; // [esp+28h] [ebp-50h] + std::string *v43; // [esp+28h] [ebp-50h] + _BYTE *v44; // [esp+2Ch] [ebp-4Ch] + bool v45; // [esp+2Ch] [ebp-4Ch] + char *v46; // [esp+30h] [ebp-48h] + unsigned int v47; // [esp+3Ch] [ebp-3Ch] + _DWORD *v48; // [esp+40h] [ebp-38h] + int v49; // [esp+40h] [ebp-38h] + int v50; // [esp+40h] [ebp-38h] + char v51; // [esp+53h] [ebp-25h] BYREF + std::string *v52; // [esp+54h] [ebp-24h] BYREF + unsigned int *v53; // [esp+58h] [ebp-20h] BYREF + int v54; // [esp+5Ch] [ebp-1Ch] BYREF + char v55; // [esp+60h] [ebp-18h] BYREF + + v48 = std::use_facet>(a3 + 108); + v5 = std::locale::id::_M_id(&std::moneypunct::id); + v6 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v5); + v7 = *v6; + if ( !*v6 ) + { + v31 = (std::locale::_Impl *)operator new((struct type_info *)0x44, v33); + *(_DWORD *)v31 = &off_4F66D4; + v32 = v31; + *((_DWORD *)v31 + 1) = 0; + *((_DWORD *)v31 + 2) = 0; + *((_DWORD *)v31 + 3) = 0; + *((_WORD *)v31 + 8) = 0; + *((_BYTE *)v31 + 18) = 0; + *((_DWORD *)v31 + 5) = 0; + *((_DWORD *)v31 + 6) = 0; + *((_DWORD *)v31 + 7) = 0; + *((_DWORD *)v31 + 8) = 0; + *((_DWORD *)v31 + 9) = 0; + *((_DWORD *)v31 + 10) = 0; + *((_DWORD *)v31 + 11) = 0; + *((_DWORD *)v31 + 12) = 0; + *((_DWORD *)v31 + 13) = 0; + *((_BYTE *)v31 + 67) = 0; + std::__moneypunct_cache::_M_cache((int)v31, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v32, (const std::locale::facet *)v5, v36); + v7 = *v6; + } + v8 = *a5; + v9 = *((_DWORD *)*a5 - 3); + if ( *(_BYTE *)*a5 == *(_BYTE *)(v7 + 56) ) + { + v54 = *(_DWORD *)(v7 + 52); + if ( !v9 ) + goto LABEL_10; + v8 = (std::string *)((char *)v8 + 1); + v46 = *(char **)(v7 + 36); + v47 = *(_DWORD *)(v7 + 40); + } + else + { + v54 = *(_DWORD *)(v7 + 48); + v46 = *(char **)(v7 + 28); + v47 = *(_DWORD *)(v7 + 32); + } + v10 = (unsigned __int8 *)v8 + v9; + if ( v10 > (unsigned __int8 *)v8 ) + { + v11 = (unsigned __int8 *)v8; + do + { + if ( (*(_BYTE *)(v48[6] + 2 * *v11) & 8) == 0 ) + break; + ++v11; + } + while ( v10 != v11 ); + v12 = v11 - (unsigned __int8 *)v8; + v13 = v12; + if ( v12 ) + { + v52 = (std::string *)&unk_4E93FC; + std::string::reserve((unsigned int **)&v52, (std::string *)(2 * v12), (unsigned int)v33); + v15 = *(_DWORD *)(v7 + 44); + v49 = v13 - v15; + if ( (int)(v13 - v15) > 0 ) + { + if ( v15 < 0 ) + v49 = v13; + if ( *(_DWORD *)(v7 + 12) ) + { + std::string::_M_replace_aux((volatile signed __int32 **)&v52, 0, *((_DWORD *)v52 - 3), 2 * v49, 0, v39); + v16 = v52; + v42 = *(std::string **)(v7 + 12); + v41 = *(char **)(v7 + 8); + v40 = *(_BYTE *)(v7 + 18); + if ( *((int *)v52 - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)&v52); + v16 = v52; + } + v17 = std::__add_grouping(v16, v40, v41, (int)v42, v8, (_BYTE *)v8 + v49); + v18 = v52; + v44 = v17; + if ( *((int *)v52 - 1) >= 0 ) + { + std::string::_M_leak_hard((volatile signed __int32 **)&v52); + v18 = v52; + } + v19 = *((_DWORD *)v18 - 3); + v20 = v44 - (_BYTE *)v18; + v21 = v19 - (v44 - (_BYTE *)v18); + if ( v20 > v19 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v20, + v19); + std::string::_M_mutate((volatile signed __int32 **)&v52, v20, v21, 0, v38); + v15 = *(_DWORD *)(v7 + 44); + } + else + { + std::string::assign((volatile signed __int32 **)&v52, v8, v49, v36); + v15 = *(_DWORD *)(v7 + 44); + } + } + if ( v15 > 0 ) + { + std::string::push_back((unsigned int **)&v52, (std::string *)*(char *)(v7 + 17), v34); + if ( v49 < 0 ) + { + std::string::append((unsigned int **)&v52, (std::string *)-v49, *(_BYTE *)(v7 + 57), v36); + std::string::append((unsigned int **)&v52, v8, v13, v37); + } + else + { + std::string::append((unsigned int **)&v52, (std::string *)((char *)v8 + v49), *(_DWORD *)(v7 + 44), v36); + } + } + v50 = *(_DWORD *)(a3 + 12) & 0xB0; + v22 = *((_DWORD *)v52 - 3) + v47; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v22 = *(_DWORD *)(v7 + 24) + *((_DWORD *)v52 - 3) + v47; + v53 = (unsigned int *)&unk_4E93FC; + std::string::reserve(&v53, (std::string *)(2 * v22), v34); + v23 = v22; + v24 = *(_DWORD *)(a3 + 8); + v25 = v24 < v22; + v26 = v24 == v22; + v27 = (char *)&v54; + v45 = !v25 && !v26 && v50 == 16; + v43 = (std::string *)(v24 - v23); + do + { + switch ( *v27 ) + { + case 0: + if ( v45 ) + { + v28 = a4; + goto LABEL_33; + } + break; + case 1: + v28 = a4; + if ( v45 ) +LABEL_33: + std::string::append(&v53, v43, v28, v36); + else + std::string::push_back(&v53, (std::string *)a4, (char)v35); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + std::string::append(&v53, *(std::string **)(v7 + 20), *(_DWORD *)(v7 + 24), v36); + break; + case 3: + if ( v47 ) + std::string::push_back(&v53, (std::string *)*v46, (char)v35); + break; + case 4: + std::string::append(&v53, (std::string *)&v52, v35); + break; + default: + break; + } + ++v27; + } + while ( v27 != &v55 ); + if ( v47 > 1 ) + { + std::string::append(&v53, (std::string *)(v46 + 1), v47 - 1, v36); + v29 = v53; + v30 = *(v53 - 3); + if ( v24 <= v30 ) + goto LABEL_40; + } + else + { + v29 = v53; + v30 = *(v53 - 3); + if ( v24 <= v30 ) + { +LABEL_40: + v24 = v30; +LABEL_41: + if ( !a2 ) + { + (*(void (__thiscall **)(int, unsigned int *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v29, v24); + v29 = v53; + } + if ( v29 != (unsigned int *)&unk_4E93FC ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v29 - 3, (int)&v51); + if ( v52 != (std::string *)&unk_4E93FC ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)v52 - 3, (int)&v51); + goto LABEL_10; + } + } + if ( v50 == 32 ) + std::string::append(&v53, (std::string *)(v24 - v30), a4, v36); + else + std::string::_M_replace_aux((volatile signed __int32 **)&v53, 0, 0, v24 - v30, a4, v39); + v29 = v53; + goto LABEL_41; + } + } +LABEL_10: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 484346: positive sp value 4 has been found +// 4841C7: variable 'v33' is possibly undefined +// 484253: variable 'v36' is possibly undefined +// 483EC1: variable 'v39' is possibly undefined +// 483F51: variable 'v38' is possibly undefined +// 483F99: variable 'v34' is possibly undefined +// 483FF7: variable 'v35' is possibly undefined +// 4842C4: variable 'v37' is possibly undefined +// 4E9410: using guessed type int std::moneypunct::id; +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (004843A0) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 12))(this, a2, a3, a4, a5, a6); +} + +//----- (004843C0) -------------------------------------------------------- +int __thiscall std::money_put>::put( + void *this, + int a2, + int a3, + unsigned __int8 a4, + int a5, + unsigned __int16 a6) +{ + return (*(int (__thiscall **)(void *, int, int, _DWORD, int, _DWORD))(*(_DWORD *)this + 8))(this, a2, a3, a4, a5, a6); +} + +//----- (004843E0) -------------------------------------------------------- +int __stdcall std::money_put>::do_put( + int a1, + char a2, + char a3, + int a4, + __int16 a5, + wchar_t **a6) +{ + if ( a3 ) + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); + else + return std::money_put>::_M_insert(a1, a2, a4, a5, a6); +} + +//----- (00484450) -------------------------------------------------------- +int __thiscall std::money_put>::do_put( + void *this, + std::locale *a2, + char a3, + int a4, + int a5, + int a6, + long double a7) +{ + void *v7; // esp + void *v8; // esp + int v9; // eax + int v10; // ebx + int v11; // eax + void *v12; // esp + void *v13; // esp + int *v14; // eax + int v15; // eax + int v16; // ebx + int v18; // edx + int v19; // [esp-44h] [ebp-ACh] + int v20; // [esp-40h] [ebp-A8h] + int v21; // [esp-3Ch] [ebp-A4h] + int v22; // [esp-38h] [ebp-A0h] + int v23; // [esp-34h] [ebp-9Ch] + size_t v24[22]; // [esp-30h] [ebp-98h] BYREF + size_t BufferCount; // [esp+28h] [ebp-40h] + int v26; // [esp+2Ch] [ebp-3Ch] + int v27; // [esp+30h] [ebp-38h] + void *v28; // [esp+34h] [ebp-34h] + void *v29; // [esp+38h] [ebp-30h] + void *v30; // [esp+3Ch] [ebp-2Ch] + char v31[5]; // [esp+47h] [ebp-21h] BYREF + int *v32[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v28 = this; + v27 = a4; + v26 = a6; + std::locale::locale( + (volatile signed __int32 **)&v31[1], + (volatile signed __int32 **)(a5 + 108), + (const std::locale *)v24[13]); + v29 = std::use_facet>((int)&v31[1]); + v7 = alloca(80); + v8 = alloca(80); + v30 = v24; + v32[0] = (int *)std::locale::facet::_S_get_c_locale(); + v9 = std::__convert_from_v(v32, (char *)v24, 0x40u, "%.*Lf", 0, a7); + v10 = v9; + if ( v9 > 63 ) + { + BufferCount = v9 + 1; + v11 = 16 * ((unsigned int)(v9 + 28) >> 4); + v12 = alloca(v11); + v13 = alloca(v11); + v30 = v24; + v32[0] = (int *)std::locale::facet::_S_get_c_locale(); + v10 = std::__convert_from_v(v32, (char *)v24, BufferCount, "%.*Lf", 0, a7); + } + std::wstring::basic_string(v32, v10, 0, (int)v31); + v14 = v32[0]; + if ( *(v32[0] - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)v32); + v14 = v32[0]; + } + (*(void (__thiscall **)(void *, void *, char *, int *, int, int, int, int, int, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t))(*(_DWORD *)v29 + 44))( + v29, + v30, + (char *)v30 + v10, + v14, + v19, + v20, + v21, + v22, + v23, + v24[0], + v24[1], + v24[2], + v24[3], + v24[4], + v24[5], + v24[6], + v24[7], + v24[8], + v24[9]); + if ( (_BYTE)v27 ) + v15 = std::money_put>::_M_insert( + (int)a2, + a3, + a5, + v26, + (wchar_t **)v32); + else + v15 = std::money_put>::_M_insert( + (int)a2, + a3, + a5, + v26, + (wchar_t **)v32); + v16 = v15; + v30 = v32[0] - 3; + if ( (_UNKNOWN *)v32[0] != &unk_4E93EC ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd(v32[0] - 1, 0xFFFFFFFF); + } + else + { + v18 = *(v32[0] - 1); + *(v32[0] - 1) = v18 - 1; + } + if ( v18 <= 0 ) + std::wstring::_Rep::_M_destroy(v30, (int)v31); + } + std::locale::~locale((_DWORD **)&v31[1]); + return v16; +} +// 48456F: variable 'v19' is possibly undefined +// 48456F: variable 'v20' is possibly undefined +// 48456F: variable 'v21' is possibly undefined +// 48456F: variable 'v22' is possibly undefined +// 48456F: variable 'v23' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (00484680) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + __int16 a4, + wchar_t **a5) +{ + void *v5; // edi + int v6; // ebx + int v7; // esi + wchar_t *v8; // ebx + int v9; // eax + int v10; // ecx + int v11; // eax + int v13; // eax + __int16 v14; // di + _WORD *v15; // eax + char *v16; // edi + char *v17; // eax + int v18; // edi + unsigned int v19; // eax + unsigned int v20; // edi + int v21; // edi + unsigned int v22; // edi + unsigned int v23; // ebx + unsigned int v24; // ecx + unsigned int v25; // edi + bool v26; // cf + bool v27; // zf + char *v28; // ebx + wchar_t v29; // ax + _DWORD *v30; // eax + unsigned int v31; // edx + char *v32; // edi + _DWORD *v33; // eax + _DWORD *v34; // eax + std::locale::_Impl *v35; // esi + void (__cdecl *v36)(void *); // [esp+0h] [ebp-78h] + unsigned int v37; // [esp+4h] [ebp-74h] + char *v38; // [esp+20h] [ebp-58h] + int v39; // [esp+24h] [ebp-54h] + size_t v40; // [esp+28h] [ebp-50h] + __int16 v41; // [esp+28h] [ebp-50h] + int v42; // [esp+2Ch] [ebp-4Ch] + bool v43; // [esp+2Ch] [ebp-4Ch] + int v44; // [esp+34h] [ebp-44h] + int *v45; // [esp+3Ch] [ebp-3Ch] + int v46; // [esp+3Ch] [ebp-3Ch] + int v47; // [esp+3Ch] [ebp-3Ch] + unsigned int v48; // [esp+40h] [ebp-38h] + char v49; // [esp+53h] [ebp-25h] BYREF + _DWORD *v50; // [esp+54h] [ebp-24h] BYREF + _DWORD *v51; // [esp+58h] [ebp-20h] BYREF + int v52; // [esp+5Ch] [ebp-1Ch] BYREF + char v53; // [esp+60h] [ebp-18h] BYREF + + v5 = std::use_facet>(a3 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + v45 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + if ( !v7 ) + { + v34 = operator new((struct type_info *)0x54, v36); + v34[1] = 0; + v35 = (std::locale::_Impl *)v34; + *v34 = &off_4F66E4; + v34[2] = 0; + v34[3] = 0; + *((_BYTE *)v34 + 16) = 0; + *(_DWORD *)((char *)v34 + 18) = 0; + v34[6] = 0; + v34[7] = 0; + v34[8] = 0; + v34[9] = 0; + v34[10] = 0; + v34[11] = 0; + v34[12] = 0; + v34[13] = 0; + v34[14] = 0; + *((_BYTE *)v34 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v34, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v35, (const std::locale::facet *)v6, v37); + v7 = *v45; + } + v8 = *a5; + v9 = *((_DWORD *)*a5 - 3); + if ( **a5 == *(_WORD *)(v7 + 60) ) + { + v52 = *(_DWORD *)(v7 + 56); + v44 = *(_DWORD *)(v7 + 40); + v48 = *(_DWORD *)(v7 + 44); + if ( v9 ) + ++v8; + } + else + { + v10 = *(_DWORD *)(v7 + 32); + v52 = *(_DWORD *)(v7 + 52); + v44 = v10; + v48 = *(_DWORD *)(v7 + 36); + } + v11 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; + v46 = v11 >> 1; + if ( v11 >> 1 ) + { + v50 = &unk_4E93EC; + std::wstring::reserve((void **)&v50, (char *)v11); + v13 = *(_DWORD *)(v7 + 48); + v42 = v46 - v13; + if ( v46 - v13 > 0 ) + { + if ( v13 < 0 ) + v42 = v46; + if ( *(_DWORD *)(v7 + 12) ) + { + std::wstring::_M_replace_aux((const wchar_t **)&v50, 0, *(v50 - 3), 2 * v42, 0); + v14 = *(_WORD *)(v7 + 20); + v39 = *(_DWORD *)(v7 + 12); + v38 = *(char **)(v7 + 8); + v15 = v50; + if ( (int)*(v50 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)&v50); + v15 = v50; + } + v16 = (char *)std::__add_grouping(v15, v14, v38, v39, v8, &v8[v42]); + v17 = (char *)v50; + if ( (int)*(v50 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)&v50); + v17 = (char *)v50; + } + v18 = v16 - v17; + v19 = *((_DWORD *)v17 - 3); + v20 = v18 >> 1; + if ( v20 > v19 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v20, + v19); + std::wstring::_M_mutate((const wchar_t **)&v50, v20, v19 - v20, 0); + v13 = *(_DWORD *)(v7 + 48); + } + else + { + std::wstring::assign((const wchar_t **)&v50, v8, v42); + v13 = *(_DWORD *)(v7 + 48); + } + } + v21 = *(v50 - 3); + if ( v13 > 0 ) + { + v32 = (char *)(v21 + 1); + v41 = *(_WORD *)(v7 + 18); + if ( (unsigned int)v32 > *(v50 - 2) || (int)*(v50 - 1) > 0 ) + std::wstring::reserve((void **)&v50, v32); + v33 = v50; + *((_WORD *)v50 + *(v50 - 3)) = v41; + if ( v33 != (_DWORD *)&unk_4E93EC ) + { + *(v33 - 1) = 0; + *(v33 - 3) = v32; + *((_WORD *)v33 + (_DWORD)v32) = 0; + } + if ( v42 < 0 ) + { + std::wstring::append((void **)&v50, -v42, *(_WORD *)(v7 + 62)); + std::wstring::append((void **)&v50, v8, v46); + } + else + { + std::wstring::append((void **)&v50, &v8[v42], *(_DWORD *)(v7 + 48)); + } + v21 = *(v50 - 3); + } + v22 = v48 + v21; + v23 = v22; + v47 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v23 = *(_DWORD *)(v7 + 28) + v22; + v51 = &unk_4E93EC; + std::wstring::reserve((void **)&v51, (char *)(2 * v23)); + v24 = v23; + v25 = *(_DWORD *)(a3 + 8); + v26 = v25 < v23; + v27 = v25 == v23; + v28 = (char *)&v52; + v43 = !v26 && !v27 && v47 == 16; + v40 = v25 - v24; + do + { + switch ( *v28 ) + { + case 0: + if ( v43 ) + { + v29 = a4; + goto LABEL_29; + } + break; + case 1: + v29 = a4; + if ( v43 ) +LABEL_29: + std::wstring::append((void **)&v51, v40, v29); + else + std::wstring::push_back((void **)&v51, a4); + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + std::wstring::append((void **)&v51, *(wchar_t **)(v7 + 24), *(_DWORD *)(v7 + 28)); + break; + case 3: + if ( v48 ) + std::wstring::push_back((void **)&v51, *(_WORD *)v44); + break; + case 4: + std::wstring::append((void **)&v51, (const wchar_t **)&v50); + break; + default: + break; + } + ++v28; + } + while ( v28 != &v53 ); + if ( v48 > 1 ) + { + std::wstring::append((void **)&v51, (wchar_t *)(v44 + 2), v48 - 1); + v30 = v51; + v31 = *(v51 - 3); + if ( v25 <= v31 ) + goto LABEL_36; + } + else + { + v30 = v51; + v31 = *(v51 - 3); + if ( v25 <= v31 ) + { +LABEL_36: + v25 = v31; +LABEL_37: + if ( !a2 ) + { + (*(void (__thiscall **)(int, _DWORD *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v30, v25); + v30 = v51; + } + if ( v30 != (_DWORD *)&unk_4E93EC ) + std::wstring::_Rep::_M_dispose(v30 - 3, (int)&v49); + if ( v50 != (_DWORD *)&unk_4E93EC ) + std::wstring::_Rep::_M_dispose(v50 - 3, (int)&v49); + goto LABEL_6; + } + } + if ( v47 == 32 ) + std::wstring::append((void **)&v51, v25 - v31, a4); + else + std::wstring::_M_replace_aux((const wchar_t **)&v51, 0, 0, v25 - v31, a4); + v30 = v51; + goto LABEL_37; + } +LABEL_6: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 484CBD: positive sp value 4 has been found +// 484AF7: variable 'v36' is possibly undefined +// 484B84: variable 'v37' is possibly undefined +// 4E9414: using guessed type int std::moneypunct::id; +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (00484D10) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +int __stdcall std::money_put>::_M_insert( + int a1, + char a2, + int a3, + wchar_t a4, + wchar_t **a5) +{ + void *v5; // edi + int v6; // ebx + int v7; // esi + wchar_t *v8; // ebx + int v9; // eax + int v10; // ecx + int v11; // eax + int v13; // eax + __int16 v14; // di + _WORD *v15; // eax + char *v16; // edi + char *v17; // eax + int v18; // edi + unsigned int v19; // eax + unsigned int v20; // edi + int v21; // edi + unsigned int v22; // edi + unsigned int v23; // ebx + unsigned int v24; // ecx + unsigned int v25; // edi + bool v26; // cf + bool v27; // zf + char *v28; // ebx + _DWORD *v29; // eax + unsigned int v30; // edx + char *v31; // edi + _DWORD *v32; // eax + _DWORD *v33; // eax + _DWORD *v34; // eax + std::locale::_Impl *v35; // esi + void (__cdecl *v36)(void *); // [esp+0h] [ebp-78h] + unsigned int v37; // [esp+4h] [ebp-74h] + char *v38; // [esp+24h] [ebp-54h] + char *v39; // [esp+24h] [ebp-54h] + int v40; // [esp+28h] [ebp-50h] + size_t v41; // [esp+28h] [ebp-50h] + __int16 v42; // [esp+2Ch] [ebp-4Ch] + int v43; // [esp+30h] [ebp-48h] + bool v44; // [esp+30h] [ebp-48h] + int v45; // [esp+38h] [ebp-40h] + int *v46; // [esp+3Ch] [ebp-3Ch] + int v47; // [esp+3Ch] [ebp-3Ch] + int v48; // [esp+3Ch] [ebp-3Ch] + unsigned int v49; // [esp+40h] [ebp-38h] + char v50; // [esp+53h] [ebp-25h] BYREF + _DWORD *v51; // [esp+54h] [ebp-24h] BYREF + _DWORD *v52; // [esp+58h] [ebp-20h] BYREF + int v53; // [esp+5Ch] [ebp-1Ch] BYREF + char v54; // [esp+60h] [ebp-18h] BYREF + + v5 = std::use_facet>(a3 + 108); + v6 = std::locale::id::_M_id(&std::moneypunct::id); + v7 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + v46 = (int *)(*(_DWORD *)(*(_DWORD *)(a3 + 108) + 12) + 4 * v6); + if ( !v7 ) + { + v34 = operator new((struct type_info *)0x54, v36); + v34[1] = 0; + v35 = (std::locale::_Impl *)v34; + *v34 = &off_4F66F4; + v34[2] = 0; + v34[3] = 0; + *((_BYTE *)v34 + 16) = 0; + *(_DWORD *)((char *)v34 + 18) = 0; + v34[6] = 0; + v34[7] = 0; + v34[8] = 0; + v34[9] = 0; + v34[10] = 0; + v34[11] = 0; + v34[12] = 0; + v34[13] = 0; + v34[14] = 0; + *((_BYTE *)v34 + 82) = 0; + std::__moneypunct_cache::_M_cache((int)v34, a3 + 108); + std::locale::_Impl::_M_install_cache(*(_DWORD *)(a3 + 108), v35, (const std::locale::facet *)v6, v37); + v7 = *v46; + } + v8 = *a5; + v9 = *((_DWORD *)*a5 - 3); + if ( **a5 == *(_WORD *)(v7 + 60) ) + { + v53 = *(_DWORD *)(v7 + 56); + v45 = *(_DWORD *)(v7 + 40); + v49 = *(_DWORD *)(v7 + 44); + if ( v9 ) + ++v8; + } + else + { + v10 = *(_DWORD *)(v7 + 32); + v53 = *(_DWORD *)(v7 + 52); + v45 = v10; + v49 = *(_DWORD *)(v7 + 36); + } + v11 = (*(int (__thiscall **)(void *, int, wchar_t *, wchar_t *))(*(_DWORD *)v5 + 20))(v5, 8, v8, &v8[v9]) - (_DWORD)v8; + v47 = v11 >> 1; + if ( v11 >> 1 ) + { + v51 = &unk_4E93EC; + std::wstring::reserve((void **)&v51, (char *)v11); + v13 = *(_DWORD *)(v7 + 48); + v43 = v47 - v13; + if ( v47 - v13 > 0 ) + { + if ( v13 < 0 ) + v43 = v47; + if ( *(_DWORD *)(v7 + 12) ) + { + std::wstring::_M_replace_aux((const wchar_t **)&v51, 0, *(v51 - 3), 2 * v43, 0); + v14 = *(_WORD *)(v7 + 20); + v40 = *(_DWORD *)(v7 + 12); + v38 = *(char **)(v7 + 8); + v15 = v51; + if ( (int)*(v51 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)&v51); + v15 = v51; + } + v16 = (char *)std::__add_grouping(v15, v14, v38, v40, v8, &v8[v43]); + v17 = (char *)v51; + if ( (int)*(v51 - 1) >= 0 ) + { + std::wstring::_M_leak_hard((const wchar_t **)&v51); + v17 = (char *)v51; + } + v18 = v16 - v17; + v19 = *((_DWORD *)v17 - 3); + v20 = v18 >> 1; + if ( v20 > v19 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + v20, + v19); + std::wstring::_M_mutate((const wchar_t **)&v51, v20, v19 - v20, 0); + v13 = *(_DWORD *)(v7 + 48); + } + else + { + std::wstring::assign((const wchar_t **)&v51, v8, v43); + v13 = *(_DWORD *)(v7 + 48); + } + } + v21 = *(v51 - 3); + if ( v13 > 0 ) + { + v31 = (char *)(v21 + 1); + v42 = *(_WORD *)(v7 + 18); + if ( (unsigned int)v31 > *(v51 - 2) || (int)*(v51 - 1) > 0 ) + std::wstring::reserve((void **)&v51, v31); + v32 = v51; + *((_WORD *)v51 + *(v51 - 3)) = v42; + if ( v32 != (_DWORD *)&unk_4E93EC ) + { + *(v32 - 1) = 0; + *(v32 - 3) = v31; + *((_WORD *)v32 + (_DWORD)v31) = 0; + } + if ( v43 < 0 ) + { + std::wstring::append((void **)&v51, -v43, *(_WORD *)(v7 + 62)); + std::wstring::append((void **)&v51, v8, v47); + } + else + { + std::wstring::append((void **)&v51, &v8[v43], *(_DWORD *)(v7 + 48)); + } + v21 = *(v51 - 3); + } + v22 = v49 + v21; + v23 = v22; + v48 = *(_DWORD *)(a3 + 12) & 0xB0; + if ( (*(_DWORD *)(a3 + 12) & 0x200) != 0 ) + v23 = *(_DWORD *)(v7 + 28) + v22; + v52 = &unk_4E93EC; + std::wstring::reserve((void **)&v52, (char *)(2 * v23)); + v24 = v23; + v25 = *(_DWORD *)(a3 + 8); + v26 = v25 < v23; + v27 = v25 == v23; + v28 = (char *)&v53; + v44 = !v26 && !v27 && v48 == 16; + v41 = v25 - v24; + do + { + switch ( *v28 ) + { + case 0: + if ( v44 ) + goto LABEL_29; + break; + case 1: + if ( v44 ) + { +LABEL_29: + std::wstring::append((void **)&v52, v41, a4); + } + else + { + v39 = (char *)(*(v52 - 3) + 1); + if ( (unsigned int)v39 > *(v52 - 2) || (int)*(v52 - 1) > 0 ) + std::wstring::reserve((void **)&v52, v39); + v33 = v52; + *((_WORD *)v52 + *(v52 - 3)) = a4; + if ( v33 != (_DWORD *)&unk_4E93EC ) + { + *(v33 - 1) = 0; + *(v33 - 3) = v39; + *((_WORD *)v33 + (_DWORD)v39) = 0; + } + } + break; + case 2: + if ( (*(_BYTE *)(a3 + 13) & 2) != 0 ) + std::wstring::append((void **)&v52, *(wchar_t **)(v7 + 24), *(_DWORD *)(v7 + 28)); + break; + case 3: + if ( v49 ) + std::wstring::push_back((void **)&v52, *(_WORD *)v45); + break; + case 4: + std::wstring::append((void **)&v52, (const wchar_t **)&v51); + break; + default: + break; + } + ++v28; + } + while ( &v54 != v28 ); + if ( v49 > 1 ) + { + std::wstring::append((void **)&v52, (wchar_t *)(v45 + 2), v49 - 1); + v29 = v52; + v30 = *(v52 - 3); + if ( v25 <= v30 ) + goto LABEL_36; + } + else + { + v29 = v52; + v30 = *(v52 - 3); + if ( v25 <= v30 ) + { +LABEL_36: + v25 = v30; +LABEL_37: + if ( !a2 ) + { + (*(void (__thiscall **)(int, _DWORD *, unsigned int))(*(_DWORD *)a1 + 48))(a1, v29, v25); + v29 = v52; + } + if ( v29 != (_DWORD *)&unk_4E93EC ) + std::wstring::_Rep::_M_dispose(v29 - 3, (int)&v50); + if ( v51 != (_DWORD *)&unk_4E93EC ) + std::wstring::_Rep::_M_dispose(v51 - 3, (int)&v50); + goto LABEL_6; + } + } + if ( v48 == 32 ) + std::wstring::append((void **)&v52, v25 - v30, a4); + else + std::wstring::_M_replace_aux((const wchar_t **)&v52, 0, 0, v25 - v30, a4); + v29 = v52; + goto LABEL_37; + } +LABEL_6: + *(_DWORD *)(a3 + 8) = 0; + return a1; +} +// 4853B5: positive sp value 4 has been found +// 4851C7: variable 'v36' is possibly undefined +// 485254: variable 'v37' is possibly undefined +// 4E9418: using guessed type int std::moneypunct::id; +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (004853E0) -------------------------------------------------------- +bool __userpurge std::type_info::__do_catch@( + _DWORD *a1@, + std::type_info *this, + const std::type_info *a3, + void **a4, + unsigned int a5) +{ + return std::type_info::operator==(a1, (int)this); +} + +//----- (00485400) -------------------------------------------------------- +int __stdcall std::type_info::__do_upcast(std::type_info *this, const __cxxabiv1::__class_type_info *a2, void **a3) +{ + return 0; +} + +//----- (00485410) -------------------------------------------------------- +int std::type_info::__is_function_p() +{ + return 0; +} + +//----- (00485420) -------------------------------------------------------- +bool __thiscall std::type_info::operator==(_DWORD *this, int a2) +{ + bool result; // al + const char *Str1; // ecx + + result = 1; + if ( (_DWORD *)a2 != this ) + { + Str1 = (const char *)this[1]; + result = 0; + if ( *Str1 != 42 ) + return strcmp(Str1, (const char *)((**(_BYTE **)(a2 + 4) == 42) + *(_DWORD *)(a2 + 4))) == 0; + } + return result; +} + +//----- (00485460) -------------------------------------------------------- +int __cdecl std::wstring::_S_compare(int a1, int a2) +{ + return a1 - a2; +} + +//----- (00485470) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (00485480) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (00485490) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::_M_leak_hard(const wchar_t **a1) +{ + const wchar_t *result; // eax + + result = *a1; + if ( *a1 != (const wchar_t *)&unk_4E93EC ) + { + if ( *((int *)result - 1) > 0 ) + { + std::wstring::_M_mutate(a1, 0, 0, 0); + result = *a1; + *((_DWORD *)*a1 - 1) = -1; + } + else + { + result = *a1; + *((_DWORD *)*a1 - 1) = -1; + } + } + return result; +} + +//----- (004854F0) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_S_construct(unsigned int a1, wchar_t a2) +{ + if ( a1 ) + return std::wstring::_S_construct(a1, a2); + else + return &unk_4E93EC; +} + +//----- (00485520) -------------------------------------------------------- +_DWORD *__usercall std::wstring::_S_construct@(unsigned int a1@, wchar_t a2@) +{ + unsigned int *v4; // eax + unsigned int *v5; // esi + _DWORD *v6; // ebp + + v4 = std::wstring::_Rep::_S_create(a1, 0); + v5 = v4; + v6 = v4 + 3; + if ( a1 == 1 ) + { + *((_WORD *)v4 + 6) = a2; + if ( v4 == (unsigned int *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v6; + } + else + { + wmemset((wchar_t *)v4 + 6, a2, a1); + if ( v5 == (unsigned int *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v6; + } + v5[2] = 0; + *v5 = a1; + *((_WORD *)v5 + a1 + 6) = 0; + return v6; +} + +//----- (004855A0) -------------------------------------------------------- +wchar_t *__cdecl std::wstring::_S_construct<__gnu_cxx::__normal_iterator>( + wchar_t *S2, + wchar_t *a2) +{ + wchar_t *S1; // ebp + int v3; // ebx + int v4; // edi + _DWORD *v5; // esi + + S1 = (wchar_t *)&unk_4E93EC; + if ( a2 != S2 ) + { + v3 = (char *)a2 - (char *)S2; + v4 = a2 - S2; + v5 = std::wstring::_Rep::_S_create(v4, 0); + S1 = (wchar_t *)(v5 + 3); + if ( v4 == 1 ) + *((_WORD *)v5 + 6) = *S2; + else + wmemcpy(S1, S2, v3 >> 1); + if ( v5 != (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) + { + v5[2] = 0; + *v5 = v4; + *(_WORD *)((char *)v5 + v3 + 12) = 0; + } + } + return S1; +} + +//----- (00485630) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2) +{ + if ( a1 == (const wchar_t *)a2 ) + return &unk_4E93EC; + if ( !a1 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); + return std::wstring::_S_construct(a1, a2); +} + +//----- (00485670) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_S_construct(const wchar_t *a1, int a2) +{ + if ( a1 == (const wchar_t *)a2 ) + return &unk_4E93EC; + if ( !a1 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); + return std::wstring::_S_construct(a1, a2); +} + +//----- (004856B0) -------------------------------------------------------- +_DWORD *__usercall std::wstring::_S_construct@(const wchar_t *a1@, int a2@) +{ + int v2; // edi + int N; // ebp + int *v5; // eax + int *v6; // ebx + _DWORD *v7; // edx + _DWORD *v9; // [esp+1Ch] [ebp-20h] + + v2 = a2 - (_DWORD)a1; + N = (a2 - (int)a1) >> 1; + v5 = std::wstring::_Rep::_S_create(N, 0); + v6 = v5; + v7 = v5 + 3; + if ( N == 1 ) + { + *((_WORD *)v5 + 6) = *a1; + if ( v5 == (int *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v7; + } + else + { + v9 = v5 + 3; + wmemcpy((wchar_t *)v5 + 6, a1, N); + v7 = v9; + if ( v6 == (int *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v7; + } + v6[2] = 0; + *v6 = N; + *(_WORD *)((char *)v6 + v2 + 12) = 0; + return v7; +} + +//----- (00485740) -------------------------------------------------------- +void *std::wstring::_S_empty_rep() +{ + return &std::wstring::_Rep::_S_empty_rep_storage; +} + +//----- (00485750) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (00485790) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004857D0) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (00485810) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (00485850) -------------------------------------------------------- +char *__fastcall std::wstring::shrink_to_fit(void **a1) +{ + char *result; // eax + + result = (char *)*a1; + if ( *((_DWORD *)*a1 - 3) < *((_DWORD *)*a1 - 2) ) + return std::wstring::reserve(a1, 0); + return result; +} +// 485850: could not find valid save-restore pair for ebp + +//----- (00485890) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::_M_replace_aux(const wchar_t **this, size_t a2, int a3, size_t N, wchar_t C) +{ + wchar_t *S; // eax + + if ( N > a3 + 536870910 - *((_DWORD *)*this - 3) ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); + std::wstring::_M_mutate(this, a2, a3, N); + if ( !N ) + return this; + S = (wchar_t *)&(*this)[a2]; + if ( N != 1 ) + { + wmemset(S, C, N); + return this; + } + *S = C; + return this; +} + +//----- (00485920) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::_M_replace_safe( + const wchar_t **this, + size_t a2, + int a3, + wchar_t *S2, + size_t N) +{ + wchar_t *S1; // eax + + std::wstring::_M_mutate(this, a2, a3, N); + if ( !N ) + return this; + S1 = (wchar_t *)&(*this)[a2]; + if ( N != 1 ) + { + wmemcpy(S1, S2, N); + return this; + } + *S1 = *S2; + return this; +} + +//----- (00485990) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_S_construct_aux_2(unsigned int a1, wchar_t a2) +{ + if ( a1 ) + return std::wstring::_S_construct(a1, a2); + else + return &unk_4E93EC; +} + +//----- (004859C0) -------------------------------------------------------- +const wchar_t *__thiscall std::wstring::at(const wchar_t **this, unsigned int a2) +{ + const wchar_t *v2; // eax + + v2 = *this; + if ( a2 >= *((_DWORD *)*this - 3) ) + std::__throw_out_of_range_fmt( + "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", + a2, + *((_DWORD *)*this - 3)); + if ( *((int *)v2 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(this); + v2 = *this; + } + return &v2[a2]; +} + +//----- (00485A10) -------------------------------------------------------- +int __fastcall std::wstring::end(const wchar_t **a1) +{ + if ( *((int *)*a1 - 1) < 0 ) + return (int)&(*a1)[*((_DWORD *)*a1 - 3)]; + std::wstring::_M_leak_hard(a1); + return (int)&(*a1)[*((_DWORD *)*a1 - 3)]; +} + +//----- (00485A40) -------------------------------------------------------- +void __thiscall std::wstring::_Rep::_M_destroy(void *this, int a2) +{ + operator delete(this); +} + +//----- (00485A60) -------------------------------------------------------- +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( this != (volatile signed __int32 *)&std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)this); + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00485AB0) -------------------------------------------------------- +void __fastcall std::wstring::_Rep::_M_dispose(volatile signed __int32 *a1) +{ + int v1; // eax + + if ( !_CRT_MT ) + { + v1 = *((_DWORD *)a1 + 2); + *((_DWORD *)a1 + 2) = v1 - 1; + if ( v1 > 0 ) + return; +LABEL_5: + operator delete((void *)a1); + return; + } + if ( _InterlockedExchangeAdd(a1 + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00485AF0) -------------------------------------------------------- +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( !_CRT_MT ) + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + if ( v2 > 0 ) + return; +LABEL_5: + std::wstring::_Rep::_M_destroy((void *)this, a2); + return; + } + if ( _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00485B30) -------------------------------------------------------- +int __fastcall std::wstring::_Rep::_M_refcopy(int a1) +{ + if ( (_UNKNOWN *)a1 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); + else + ++*(_DWORD *)(a1 + 8); + } + return a1 + 12; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00485B60) -------------------------------------------------------- +int __fastcall std::wstring::_Rep::_M_refdata(int a1) +{ + return a1 + 12; +} + +//----- (00485B70) -------------------------------------------------------- +void *std::wstring::_Rep::_S_empty_rep() +{ + return &std::wstring::_Rep::_S_empty_rep_storage; +} + +//----- (00485B80) -------------------------------------------------------- +void __fastcall std::wstring::_Rep::_M_set_leaked(int a1) +{ + *(_DWORD *)(a1 + 8) = -1; +} + +//----- (00485B90) -------------------------------------------------------- +void __fastcall std::wstring::_Rep::_M_set_sharable(int a1) +{ + *(_DWORD *)(a1 + 8) = 0; +} + +//----- (00485BA0) -------------------------------------------------------- +int __thiscall std::wstring::_Rep::_M_set_length_and_sharable(int this, int a2) +{ + int result; // eax + + if ( (_UNKNOWN *)this != &std::wstring::_Rep::_S_empty_rep_storage ) + { + result = a2; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)this = a2; + *(_WORD *)(this + 2 * a2 + 12) = 0; + } + return result; +} + +//----- (00485BD0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::_Rep::_M_grab(int this, int a2, int a3) +{ + if ( *(int *)(this + 8) < 0 ) + return std::wstring::_Rep::_M_clone(this, a2, 0); + if ( (_UNKNOWN *)this != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(this + 8), 1u); + else + ++*(_DWORD *)(this + 8); + } + return (_DWORD *)(this + 12); +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00485C20) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::_Rep::_M_clone(int this, int a2, int a3) +{ + _DWORD *v4; // esi + size_t v5; // eax + + v4 = std::wstring::_Rep::_S_create(a3 + *(_DWORD *)this, *(_DWORD *)(this + 4)); + v5 = *(_DWORD *)this; + if ( *(_DWORD *)this ) + { + if ( v5 == 1 ) + { + *((_WORD *)v4 + 6) = *(_WORD *)(this + 12); + if ( v4 == (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v4 + 3; + goto LABEL_7; + } + wmemcpy((wchar_t *)v4 + 6, (const wchar_t *)(this + 12), *(_DWORD *)this); + v5 = *(_DWORD *)this; + } + if ( v4 == (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) + return v4 + 3; +LABEL_7: + *v4 = v5; + v4[2] = 0; + *((_WORD *)v4 + v5 + 6) = 0; + return v4 + 3; +} + +//----- (00485CB0) -------------------------------------------------------- +_DWORD *__cdecl std::wstring::_Rep::_S_create(unsigned int a1, unsigned int a2) +{ + unsigned int v2; // ebx + struct type_info *v3; // edx + unsigned int v4; // ecx + _DWORD *result; // eax + void (__cdecl *v6)(void *); // [esp+4h] [ebp-18h] + + v2 = a1; + if ( a1 > 0x1FFFFFFE ) + std::__throw_length_error((std::length_error *)"basic_string::_S_create"); + if ( a1 <= a2 ) + goto LABEL_9; + if ( a1 < 2 * a2 ) + v2 = 2 * a2; + v3 = (struct type_info *)(2 * v2 + 14); + v4 = 2 * v2 + 30; + if ( v4 > 0x1000 && v2 > a2 ) + { + v2 += (4096 - (v4 & 0xFFF)) >> 1; + if ( v2 > 0x1FFFFFFE ) + v2 = 536870910; +LABEL_9: + v3 = (struct type_info *)(2 * v2 + 14); + goto LABEL_10; + } + if ( (int)v3 < 0 ) + std::__throw_bad_alloc(); +LABEL_10: + result = operator new(v3, v6); + result[1] = v2; + result[2] = 0; + return result; +} +// 485D09: variable 'v6' is possibly undefined + +//----- (00485D40) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::back(const wchar_t **a1) +{ + const wchar_t *v1; // eax + int v2; // esi + + v1 = *a1; + v2 = *((_DWORD *)*a1 - 3) - 1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a1); + v1 = *a1; + } + return &v1[v2]; +} + +//----- (00485D70) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::rend(const wchar_t **this, const wchar_t **a2) +{ + const wchar_t **result; // eax + const wchar_t *v3; // edx + + result = this; + v3 = *a2; + if ( *((int *)*a2 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a2); + v3 = *a2; + result = this; + } + *result = v3; + return result; +} + +//----- (00485DA0) -------------------------------------------------------- +int __thiscall std::wstring::swap(int *this, int *a2) +{ + int result; // eax + int v3; // edx + + result = *this; + if ( *(int *)(*this - 4) < 0 ) + *(_DWORD *)(result - 4) = 0; + v3 = *a2; + if ( *(int *)(*a2 - 4) < 0 ) + *(_DWORD *)(v3 - 4) = 0; + *this = v3; + *a2 = result; + return result; +} + +//----- (00485DD0) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::begin(const wchar_t **a1) +{ + const wchar_t *result; // eax + + result = *a1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a1); + return *a1; + } + return result; +} + +//----- (00485E00) -------------------------------------------------------- +void __fastcall std::wstring::clear(void **a1) +{ + _DWORD *v1; // eax + int v2; // ebx + void **v3; // [esp+1Ch] [ebp-10h] + + v1 = *a1; + if ( *((int *)*a1 - 1) <= 0 ) + { + if ( v1 != (_DWORD *)&unk_4E93EC ) + { + *(v1 - 1) = 0; + *(v1 - 3) = 0; + *(_WORD *)v1 = 0; + } + } + else if ( v1 == (_DWORD *)&unk_4E93EC ) + { + *a1 = &unk_4E93EC; + } + else + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *(v1 - 1); + *(v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + { + v3 = a1; + operator delete(v1 - 3); + a1 = v3; + } + *a1 = &unk_4E93EC; + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00485EA0) -------------------------------------------------------- +char *__thiscall std::wstring::erase(const wchar_t **this, int a2) +{ + int v3; // esi + const wchar_t *v4; // eax + + v3 = a2 - (_DWORD)*this; + std::wstring::_M_mutate(this, v3 >> 1, 1, 0); + v4 = *this; + *((_DWORD *)v4 - 1) = -1; + return (char *)v4 + v3; +} + +//----- (00485EE0) -------------------------------------------------------- +char *__thiscall std::wstring::erase(const wchar_t **this, char *a2, int a3) +{ + char *result; // eax + int v5; // ebx + const wchar_t *v6; // eax + + result = a2; + if ( (a3 - (int)a2) >> 1 ) + { + v5 = a2 - (char *)*this; + std::wstring::_M_mutate(this, v5 >> 1, (a3 - (int)a2) >> 1, 0); + v6 = *this; + *((_DWORD *)v6 - 1) = -1; + return (char *)v6 + v5; + } + return result; +} + +//----- (00485F40) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::erase(const wchar_t **this, size_t a2, unsigned int a3) +{ + size_t v4; // ecx + int v5; // edx + + v4 = *((_DWORD *)*this - 3); + v5 = v4 - a2; + if ( v4 - a2 > a3 ) + v5 = a3; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + a2, + v4); + std::wstring::_M_mutate(this, a2, v5, 0); + return this; +} + +//----- (00485FB0) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::front(const wchar_t **a1) +{ + const wchar_t *result; // eax + + result = *a1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a1); + return *a1; + } + return result; +} + +//----- (00485FE0) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::append(this, String, v3); +} + +//----- (00486010) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, wchar_t *a2, size_t N) +{ + const wchar_t *S2; // ebp + wchar_t *v5; // eax + int v6; // edi + char *v7; // edi + wchar_t *S1; // edx + char *v10; // ebp + bool v11; // cc + + S2 = a2; + if ( !N ) + return this; + v5 = (wchar_t *)*this; + v6 = *((_DWORD *)*this - 3); + if ( N > 536870910 - v6 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + v7 = (char *)(N + v6); + if ( (unsigned int)v7 > *((_DWORD *)v5 - 2) || (v11 = *((_DWORD *)v5 - 1) <= 0, v5 = (wchar_t *)*this, !v11) ) + { + if ( v5 <= a2 && a2 <= &v5[*((_DWORD *)v5 - 3)] ) + { + v10 = (char *)((char *)a2 - (char *)v5); + std::wstring::reserve(this, v7); + v5 = (wchar_t *)*this; + S2 = (const wchar_t *)&v10[(_DWORD)*this]; + S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N != 1 ) + goto LABEL_8; + goto LABEL_13; + } + std::wstring::reserve(this, v7); + v5 = (wchar_t *)*this; + } + S1 = &v5[*((_DWORD *)v5 - 3)]; + if ( N != 1 ) + { +LABEL_8: + wmemcpy(S1, S2, N); + v5 = (wchar_t *)*this; + goto LABEL_9; + } +LABEL_13: + *S1 = *S2; +LABEL_9: + if ( v5 != (wchar_t *)&unk_4E93EC ) + { + *((_DWORD *)v5 - 1) = 0; + *((_DWORD *)v5 - 3) = v7; + v5[(_DWORD)v7] = 0; + } + return this; +} + +//----- (004860F0) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, const wchar_t **a2) +{ + size_t N; // esi + size_t v4; // ebp + _DWORD *v5; // eax + const wchar_t *S2; // ecx + wchar_t *S1; // edx + + N = *((_DWORD *)*a2 - 3); + if ( !N ) + return this; + v4 = N + *((_DWORD *)*this - 3); + if ( v4 <= *((_DWORD *)*this - 2) && *((int *)*this - 1) <= 0 ) + { + v5 = *this; + S2 = *a2; + S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N == 1 ) + goto LABEL_10; +LABEL_4: + wmemcpy(S1, S2, N); + v5 = *this; + goto LABEL_5; + } + std::wstring::reserve(this, (char *)(N + *((_DWORD *)*this - 3))); + v5 = *this; + S2 = *a2; + S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N != 1 ) + goto LABEL_4; +LABEL_10: + *S1 = *S2; +LABEL_5: + if ( v5 != (_DWORD *)&unk_4E93EC ) + { + *(v5 - 1) = 0; + *(v5 - 3) = v4; + *((_WORD *)v5 + v4) = 0; + } + return this; +} + +//----- (004861A0) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, _DWORD *a2, unsigned int a3, size_t a4) +{ + unsigned int v4; // ebx + size_t N; // ebx + char *v7; // edx + const wchar_t *S2; // edi + _DWORD *v9; // eax + wchar_t *S1; // ecx + char *v12; // [esp+1Ch] [ebp-20h] + char *v13; // [esp+1Ch] [ebp-20h] + + v4 = *(_DWORD *)(*a2 - 12); + if ( a3 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::append", + a3, + *(_DWORD *)(*a2 - 12)); + N = v4 - a3; + if ( N > a4 ) + { + N = a4; + if ( !a4 ) + return this; + } + else if ( !N ) + { + return this; + } + v7 = (char *)(N + *((_DWORD *)*this - 3)); + if ( *((_DWORD *)*this - 2) < (unsigned int)v7 || *((int *)*this - 1) > 0 ) + { + v12 = (char *)(N + *((_DWORD *)*this - 3)); + std::wstring::reserve(this, v12); + v7 = v12; + } + S2 = (const wchar_t *)(*a2 + 2 * a3); + v9 = *this; + S1 = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N == 1 ) + { + *S1 = *S2; + } + else + { + v13 = v7; + wmemcpy(S1, S2, N); + v9 = *this; + v7 = v13; + } + if ( v9 != (_DWORD *)&unk_4E93EC ) + { + *(v9 - 1) = 0; + *(v9 - 3) = v7; + *((_WORD *)v9 + (_DWORD)v7) = 0; + } + return this; +} + +//----- (00486290) -------------------------------------------------------- +void **__thiscall std::wstring::append(void **this, size_t N, wchar_t C) +{ + _DWORD *v4; // edx + int v5; // edi + char *v6; // edi + _DWORD *v7; // eax + wchar_t *S; // edx + + if ( N ) + { + v4 = *this; + v5 = *((_DWORD *)*this - 3); + if ( N > 536870910 - v5 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + v6 = (char *)(N + v5); + if ( (unsigned int)v6 > *(v4 - 2) || (int)*(v4 - 1) > 0 ) + std::wstring::reserve(this, v6); + v7 = *this; + S = (wchar_t *)((char *)*this + 2 * *((_DWORD *)*this - 3)); + if ( N == 1 ) + { + *S = C; + } + else + { + wmemset(S, C, N); + v7 = *this; + } + if ( v7 != (_DWORD *)&unk_4E93EC ) + { + *(v7 - 1) = 0; + *(v7 - 3) = v6; + *((_WORD *)v7 + (_DWORD)v6) = 0; + } + } + return this; +} + +//----- (00486330) -------------------------------------------------------- +int __thiscall std::wstring::assign(int *this, int *a2) +{ + int v2; // ecx + + std::wstring::swap(this, a2); + return v2; +} +// 486342: variable 'v2' is possibly undefined + +//----- (00486350) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::assign(this, String, v3); +} + +//----- (00486380) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, wchar_t *S2, size_t N) +{ + const wchar_t *v3; // eax + int v4; // ebx + const wchar_t **result; // eax + wchar_t *v6; // ebx + unsigned int v7; // eax + wchar_t **v8; // [esp+1Ch] [ebp-10h] + wchar_t **v9; // [esp+1Ch] [ebp-10h] + + v3 = *this; + v4 = *((_DWORD *)*this - 3); + if ( N > 0x1FFFFFFE ) + std::__throw_length_error((std::length_error *)"basic_string::assign"); + if ( v3 > S2 || &v3[v4] < S2 ) + return std::wstring::_M_replace_safe(this, 0, v4, S2, N); + if ( *((int *)v3 - 1) > 0 ) + { + v4 = *((_DWORD *)*this - 3); + return std::wstring::_M_replace_safe(this, 0, v4, S2, N); + } + v6 = (wchar_t *)*this; + v7 = S2 - *this; + if ( N <= v7 ) + { + if ( N != 1 ) + { + if ( N ) + { + v9 = (wchar_t **)this; + wmemcpy((wchar_t *)*this, S2, N); + this = (const wchar_t **)v9; + v6 = *v9; + } + goto LABEL_13; + } + } + else + { + if ( !v7 ) + goto LABEL_13; + if ( N != 1 ) + { + if ( N ) + { + v8 = (wchar_t **)this; + wmemmove((wchar_t *)*this, S2, N); + this = (const wchar_t **)v8; + v6 = *v8; + } + goto LABEL_13; + } + } + *v6 = *S2; +LABEL_13: + result = this; + if ( v6 != (wchar_t *)&unk_4E93EC ) + { + *((_DWORD *)v6 - 1) = 0; + *((_DWORD *)v6 - 3) = N; + v6[N] = 0; + } + return result; +} + +//----- (00486480) -------------------------------------------------------- +void **__thiscall std::wstring::assign(void **this, _DWORD *a2) +{ + _DWORD *v3; // esi + _DWORD *v4; // ecx + volatile signed __int32 *v5; // eax + char *v6; // edx + int v8; // ecx + char v9[13]; // [esp+1Fh] [ebp-Dh] BYREF + + v3 = (_DWORD *)*a2; + if ( *this != (void *)*a2 ) + { + v4 = v3 - 3; + if ( (int)*(v3 - 1) < 0 ) + { + v3 = std::wstring::_Rep::_M_clone((int)v4, (int)v9, 0); + } + else if ( v4 != (_DWORD *)&std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(v3 - 1, 1u); + else + ++*(v3 - 1); + } + v5 = (volatile signed __int32 *)*this; + v6 = (char *)*this - 12; + if ( *this == &unk_4E93EC + || (_CRT_MT + ? (v8 = _InterlockedExchangeAdd(v5 - 1, 0xFFFFFFFF)) + : (v8 = *((_DWORD *)v5 - 1), *((_DWORD *)v5 - 1) = v8 - 1), + v8 > 0) ) + { + *this = v3; + } + else + { + operator delete(v6); + *this = v3; + } + } + return this; +} +// 15412D0: using guessed type int _CRT_MT; +// 486480: using guessed type char var_D[13]; + +//----- (00486540) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // edx + + v4 = *(_DWORD *)(*a2 - 12) - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::assign", + a3, + *(_DWORD *)(*a2 - 12)); + return std::wstring::assign(this, (wchar_t *)(*a2 + 2 * a3), v4); +} + +//----- (004865B0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::assign(const wchar_t **this, size_t a2, __int16 a3) +{ + return std::wstring::_M_replace_aux(this, 0, *((_DWORD *)*this - 3), a2, a3); +} + +//----- (004865F0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *a3, size_t a4) +{ + return std::wstring::insert(this, (a2 - (int)*this) >> 1, a3, a4); +} + +//----- (00486610) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, size_t a3, __int16 a4) +{ + return std::wstring::_M_replace_aux(this, (a2 - (int)*this) >> 1, 0, a3, a4); +} + +//----- (00486650) -------------------------------------------------------- +char *__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t a3) +{ + int v4; // esi + const wchar_t *v5; // eax + + v4 = a2 - (_DWORD)*this; + std::wstring::_M_replace_aux(this, v4 >> 1, 0, 1u, a3); + v5 = *this; + *((_DWORD *)v5 - 1) = -1; + return (char *)v5 + v4; +} + +//----- (004866A0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t *String) +{ + size_t v4; // eax + + v4 = wcslen(String); + return std::wstring::insert(this, a2, String, v4); +} + +//----- (004866E0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, wchar_t *a3, size_t N) +{ + const wchar_t *v4; // edx + unsigned int v5; // esi + char *v7; // ebp + _DWORD *v8; // ecx + const wchar_t *S2; // eax + wchar_t *S1; // esi + const wchar_t *v11; // edx + int v12; // edx + int v13; // ebp + size_t v14; // ebx + const wchar_t *v15; // edi + wchar_t *v16; // edx + int v18; // [esp+18h] [ebp-24h] + _DWORD *v19; // [esp+18h] [ebp-24h] + _DWORD *v20; // [esp+18h] [ebp-24h] + int v21; // [esp+18h] [ebp-24h] + _DWORD *v22; // [esp+18h] [ebp-24h] + _DWORD *v23; // [esp+1Ch] [ebp-20h] + + v4 = *this; + v5 = *((_DWORD *)*this - 3); + if ( a2 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a2, + *((_DWORD *)*this - 3)); + if ( N > 536870910 - v5 ) + std::__throw_length_error((std::length_error *)"basic_string::insert"); + if ( v4 > a3 || a3 > &v4[v5] || *((int *)v4 - 1) > 0 ) + return std::wstring::_M_replace_safe(this, a2, 0, a3, N); + v7 = (char *)((char *)a3 - (char *)*this); + std::wstring::_M_mutate(this, a2, 0, N); + v8 = this; + v18 = 2 * a2; + S2 = (const wchar_t *)&v7[*v8]; + S1 = (wchar_t *)(2 * a2 + *v8); + v11 = &S2[N]; + if ( v11 > S1 ) + { + if ( S2 < S1 ) + { + v12 = v18 - (_DWORD)v7; + v13 = (v18 - (int)v7) >> 1; + if ( v13 == 1 ) + { + *S1 = *S2; + } + else if ( v13 ) + { + v23 = v8; + v21 = v12; + wmemcpy(S1, S2, v13); + v8 = v23; + v12 = v21; + } + v14 = N - v13; + v15 = &S1[N]; + v16 = (wchar_t *)((char *)S1 + v12); + if ( N - v13 != 1 ) + { + if ( v14 ) + { + v22 = v8; + wmemcpy(v16, v15, v14); + return (const wchar_t **)v22; + } + return (const wchar_t **)v8; + } + *v16 = *v15; + return (const wchar_t **)v8; + } + else + { + if ( N != 1 ) + { + if ( N ) + { + v20 = v8; + wmemcpy(S1, &S2[N], N); + return (const wchar_t **)v20; + } + return (const wchar_t **)v8; + } + *S1 = *v11; + return (const wchar_t **)v8; + } + } + else + { + if ( N != 1 ) + { + if ( N ) + { + v19 = v8; + wmemcpy(S1, S2, N); + return (const wchar_t **)v19; + } + return (const wchar_t **)v8; + } + *S1 = *S2; + return (const wchar_t **)v8; + } +} + +//----- (004868B0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, wchar_t **a3) +{ + return std::wstring::insert(this, a2, *a3, *((_DWORD *)*a3 - 3)); +} + +//----- (004868E0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, int a2, _DWORD *a3, unsigned int a4, size_t a5) +{ + size_t v5; // edx + + v5 = *(_DWORD *)(*a3 - 12) - a4; + if ( v5 > a5 ) + v5 = a5; + if ( a4 > *(_DWORD *)(*a3 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a4, + *(_DWORD *)(*a3 - 12)); + return std::wstring::insert(this, a2, (wchar_t *)(*a3 + 2 * a4), v5); +} + +//----- (00486950) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::insert(const wchar_t **this, unsigned int a2, size_t a3, __int16 a4) +{ + if ( a2 > *((_DWORD *)*this - 3) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a2, + *((_DWORD *)*this - 3)); + return std::wstring::_M_replace_aux(this, a2, 0, a3, a4); +} + +//----- (004869B0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, const wchar_t **a2) +{ + _DWORD *result; // eax + const wchar_t *v3; // edx + + result = this; + v3 = *a2; + if ( *((int *)*a2 - 1) >= 0 ) + { + std::wstring::_M_leak_hard(a2); + v3 = *a2; + result = this; + } + *result = &v3[*((_DWORD *)v3 - 3)]; + return result; +} + +//----- (004869F0) -------------------------------------------------------- +void __thiscall std::wstring::resize(void **this, size_t a2) +{ + std::wstring::resize(this, a2, 0); +} + +//----- (00486A10) -------------------------------------------------------- +void __thiscall std::wstring::resize(void **this, size_t a2, wchar_t a3) +{ + unsigned int v3; // edx + + v3 = *((_DWORD *)*this - 3); + if ( a2 > 0x1FFFFFFE ) + std::__throw_length_error((std::length_error *)"basic_string::resize"); + if ( a2 > v3 ) + { + std::wstring::append(this, a2 - v3, a3); + } + else if ( a2 < v3 ) + { + std::wstring::_M_mutate((const wchar_t **)this, a2, v3 - a2, 0); + } +} + +//----- (00486A90) -------------------------------------------------------- +size_t __cdecl std::wstring::_M_copy(wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t result; // eax + + result = N; + if ( N == 1 ) + { + result = *S2; + *S1 = result; + } + else if ( N ) + { + return (size_t)wmemcpy(S1, S2, N); + } + return result; +} + +//----- (00486AC0) -------------------------------------------------------- +int __thiscall std::wstring::_M_data(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (00486AD0) -------------------------------------------------------- +const wchar_t *__fastcall std::wstring::_M_leak(const wchar_t **a1) +{ + const wchar_t *result; // eax + + result = (const wchar_t *)*((_DWORD *)*a1 - 1); + if ( (int)result >= 0 ) + return std::wstring::_M_leak_hard(a1); + return result; +} + +//----- (00486AF0) -------------------------------------------------------- +size_t __cdecl std::wstring::_M_move(wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t result; // eax + + result = N; + if ( N == 1 ) + { + result = *S2; + *S1 = result; + } + else if ( N ) + { + return (size_t)wmemmove(S1, S2, N); + } + return result; +} + +//----- (00486B20) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); +} + +//----- (00486B50) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String) +{ + size_t N; // eax + + N = wcslen(String); + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, String, N); +} + +//----- (00486BA0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); +} + +//----- (00486BD0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t a5) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, a5); +} + +//----- (00486BF0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, *a4, *((_DWORD *)*a4 - 3)); +} + +//----- (00486C30) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); +} + +//----- (00486C60) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(N - (_DWORD)a4) >> 1); +} + +//----- (00486C90) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *a4, size_t N) +{ + return std::wstring::replace(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, (int)(2 * N) >> 1); +} + +//----- (00486CC0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, size_t a4, wchar_t a5) +{ + return std::wstring::_M_replace_aux(this, (a2 - (int)*this) >> 1, (a3 - a2) >> 1, a4, a5); +} + +//----- (00486CF0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t *String) +{ + size_t N; // eax + + N = wcslen(String); + return std::wstring::replace(this, a2, a3, String, N); +} + +//----- (00486D30) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace( + const wchar_t **this, + unsigned int a2, + unsigned int a3, + wchar_t *a4, + size_t N) +{ + const wchar_t *v5; // edi + unsigned int v6; // eax + int v7; // ebx + const wchar_t **v8; // ecx + unsigned int v10; // edx + const wchar_t *v11; // eax + int v12; // edi + wchar_t *v13; // esi + wchar_t *v14; // edi + int v15; // edx + wchar_t *v18; // [esp+1Ch] [ebp-2Ch] + + v5 = *this; + v6 = *((_DWORD *)*this - 3); + if ( a2 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + *((_DWORD *)v5 - 3)); + v7 = v6 - a2; + if ( v6 - a2 > a3 ) + v7 = a3; + if ( v7 - v6 + 536870910 < N ) + std::__throw_length_error((std::length_error *)"basic_string::replace"); + if ( v5 > a4 || a4 > &v5[v6] || *((int *)v5 - 1) > 0 ) + return std::wstring::_M_replace_safe(this, a2, v7, a4, N); + v10 = (unsigned int)&a4[N]; + v11 = *this; + if ( v10 <= (unsigned int)&(*this)[a2] ) + { + v12 = a4 - v11; +LABEL_13: + std::wstring::_M_mutate(this, a2, v7, N); + v8 = this; + v13 = (wchar_t *)&(*this)[a2]; + if ( N == 1 ) + { + *v13 = (*this)[v12]; + } + else if ( N ) + { + wmemcpy(v13, &(*this)[v12], N); + return this; + } + return v8; + } + if ( a4 >= &v11[a2 + v7] ) + { + v12 = a4 - v11 + N - v7; + goto LABEL_13; + } + v14 = (wchar_t *)std::wstring::_S_construct(a4, v10); + v8 = std::wstring::_M_replace_safe(this, a2, v7, v14, N); + if ( v14 != (wchar_t *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v14 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v14 - 1); + *((_DWORD *)v14 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + { + v18 = (wchar_t *)v8; + operator delete(v14 - 6); + return (const wchar_t **)v18; + } + } + return v8; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00486F30) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace(const wchar_t **this, int a2, int a3, wchar_t **a4) +{ + return std::wstring::replace(this, a2, a3, *a4, *((_DWORD *)*a4 - 3)); +} + +//----- (00486F70) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace( + const wchar_t **this, + int a2, + int a3, + _DWORD *a4, + unsigned int a5, + size_t a6) +{ + size_t N; // edx + + N = *(_DWORD *)(*a4 - 12) - a5; + if ( N > a6 ) + N = a6; + if ( a5 > *(_DWORD *)(*a4 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a5, + *(_DWORD *)(*a4 - 12)); + return std::wstring::replace(this, a2, a3, (wchar_t *)(*a4 + 2 * a5), N); +} + +//----- (00486FE0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::replace( + const wchar_t **this, + unsigned int a2, + unsigned int a3, + size_t a4, + wchar_t a5) +{ + unsigned int v5; // edx + + v5 = *((_DWORD *)*this - 3) - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > *((_DWORD *)*this - 3) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + *((_DWORD *)*this - 3)); + return std::wstring::_M_replace_aux(this, a2, v5, a4, a5); +} + +//----- (00487050) -------------------------------------------------------- +char *__thiscall std::wstring::reserve(void **this, char *a2) +{ + int *v3; // ecx + char *result; // eax + char *v5; // edx + int v6; // ecx + int *v7; // edx + char *v8; // ecx + int v9; // esi + char *v10; // [esp+1Ch] [ebp-20h] + char v11[13]; // [esp+2Fh] [ebp-Dh] BYREF + + v3 = (int *)*this; + result = a2; + if ( a2 == (char *)*(v3 - 2) ) + { + if ( *(v3 - 1) <= 0 ) + return result; + v3 = (int *)*this; + } + v5 = (char *)*(v3 - 3); + v6 = (int)(v3 - 3); + if ( a2 < v5 ) + result = v5; + result = (char *)std::wstring::_Rep::_M_clone(v6, (int)v11, result - v5); + v7 = (int *)*this; + v8 = (char *)*this - 12; + if ( *this != &unk_4E93EC ) + { + if ( _CRT_MT ) + { + v9 = _InterlockedExchangeAdd(v7 - 1, 0xFFFFFFFF); + } + else + { + v9 = *(v7 - 1); + *(v7 - 1) = v9 - 1; + } + if ( v9 <= 0 ) + { + v10 = result; + operator delete(v8); + result = v10; + } + } + *this = result; + return result; +} +// 15412D0: using guessed type int _CRT_MT; +// 487050: using guessed type char var_D[13]; + +//----- (00487100) -------------------------------------------------------- +void __fastcall std::wstring::pop_back(const wchar_t **a1) +{ + unsigned int v1; // eax + + v1 = *((_DWORD *)*a1 - 3); + if ( v1 - 1 > v1 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + 0xFFFFFFFF, + 0); + std::wstring::_M_mutate(a1, v1 - 1, 1, 0); +} + +//----- (00487160) -------------------------------------------------------- +wchar_t *__cdecl std::wstring::_M_assign(wchar_t *a1, size_t C, size_t N) +{ + wchar_t *result; // eax + + result = (wchar_t *)C; + if ( C == 1 ) + { + *a1 = N; + } + else if ( C ) + { + return wmemset(a1, N, C); + } + return result; +} +// 487160: using guessed type size_t C; + +//----- (004871A0) -------------------------------------------------------- +void __thiscall std::wstring::_M_mutate(const wchar_t **this, size_t a2, int a3, int a4) +{ + int v5; // esi + unsigned int v6; // edi + size_t N; // esi + const wchar_t *v8; // eax + size_t v9; // edx + const wchar_t *v10; // edi + const wchar_t *v11; // ebp + const wchar_t *v12; // eax + const wchar_t *S2; // ecx + const wchar_t *v14; // eax + int v15; // ecx + unsigned int v16; // [esp+18h] [ebp-34h] + + v5 = *((_DWORD *)*this - 3); + v6 = *((_DWORD *)*this - 2); + v16 = a4 - a3 + v5; + N = v5 - (a3 + a2); + if ( v16 > v6 ) + { +LABEL_4: + v8 = (const wchar_t *)std::wstring::_Rep::_S_create(v16, v6); + v9 = a3 + a2; + v10 = v8; + if ( a2 ) + { + v12 = *this; + v11 = v10 + 6; + if ( a2 == 1 ) + { + *((_WORD *)v10 + 6) = *v12; + } + else + { + wmemcpy((wchar_t *)v10 + 6, *this, a2); + v12 = *this; + v9 = a3 + a2; + } + } + else + { + v11 = v8 + 6; + v12 = *this; + } + if ( N ) + { + S2 = &v12[v9]; + if ( N == 1 ) + { + v10[a2 + 6 + a4] = *S2; + } + else + { + wmemcpy((wchar_t *)&v10[a2 + 6 + a4], S2, N); + v12 = *this; + } + } + if ( v12 != (const wchar_t *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v12 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v12 - 1); + *((_DWORD *)v12 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + operator delete((void *)(v12 - 6)); + } + *this = v11; +LABEL_11: + if ( v10 == (const wchar_t *)&std::wstring::_Rep::_S_empty_rep_storage ) + return; +LABEL_20: + *((_DWORD *)v11 - 1) = 0; + *((_DWORD *)v11 - 3) = v16; + v11[v16] = 0; + return; + } + if ( *((int *)*this - 1) > 0 ) + { + v6 = *((_DWORD *)*this - 2); + goto LABEL_4; + } + v11 = *this; + if ( N && a4 != a3 ) + { + v14 = &v11[a3 + a2]; + if ( N == 1 ) + { + v10 = v11 - 6; + v11[a2 + a4] = *v14; + goto LABEL_11; + } + wmemmove((wchar_t *)&v11[a2 + a4], v14, N); + v11 = *this; + } + if ( v11 - 6 != (const wchar_t *)&std::wstring::_Rep::_S_empty_rep_storage ) + goto LABEL_20; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00487370) -------------------------------------------------------- +_WORD *__thiscall std::wstring::push_back(void **this, __int16 a2) +{ + int v3; // edx + int v4; // esi + _WORD *result; // eax + + v3 = *((_DWORD *)*this - 3); + v4 = v3 + 1; + if ( (unsigned int)(v3 + 1) > *((_DWORD *)*this - 2) || *((int *)*this - 1) > 0 ) + std::wstring::reserve(this, (char *)(v3 + 1)); + result = *this; + result[*((_DWORD *)*this - 3)] = a2; + if ( result != (_WORD *)&unk_4E93EC ) + { + *((_DWORD *)result - 1) = 0; + *((_DWORD *)result - 3) = v4; + result[v4] = 0; + } + return result; +} + +//----- (004873E0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_4E93EC; + return result; +} + +//----- (00487400) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_4E93EC; + return result; +} + +//----- (00487420) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) +{ + int v3; // eax + _DWORD *result; // eax + + v3 = -2; + if ( String ) + v3 = (int)&String[wcslen(String)]; + result = std::wstring::_S_construct(String, v3); + *this = result; + return result; +} + +//----- (00487470) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004874B0) -------------------------------------------------------- +void __thiscall std::wstring::basic_string(_DWORD *this, int a2) +{ + *this = &unk_4E93EC; +} + +//----- (004874C0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + void *v4; // ecx + char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF + + result = (_DWORD *)*a2; + v4 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + result = std::wstring::_Rep::_M_clone((int)v4, (int)v5, 0); + *this = result; + } + else + { + if ( v4 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; +// 4874C0: using guessed type char var_D[13]; + +//----- (00487540) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + void *v5; // ecx + + result = (_DWORD *)*a2; + v5 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + result = std::wstring::_Rep::_M_clone((int)v5, a3, 0); + *this = result; + } + else + { + if ( v5 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004875C0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) +{ + unsigned int v5; // edx + _DWORD *result; // eax + + v5 = *(_DWORD *)(*a2 - 12); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(*a2 + 2 * a3), *a2 + 2 * v5); + *this = result; + return result; +} + +//----- (00487620) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) +{ + int v5; // ecx + unsigned int v6; // eax + int v7; // eax + _DWORD *result; // eax + + v5 = *a2; + v6 = *(_DWORD *)(*a2 - 12) - a3; + if ( v6 > a4 ) + v6 = a4; + v7 = v5 + 2 * (a3 + v6); + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(v5 + 2 * a3), v7); + *this = result; + return result; +} + +//----- (00487690) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) +{ + int v6; // ecx + unsigned int v7; // eax + int v8; // eax + _DWORD *result; // eax + + v6 = *a2; + v7 = *(_DWORD *)(*a2 - 12) - a3; + if ( v7 > a4 ) + v7 = a4; + v8 = v6 + 2 * (a3 + v7); + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(v6 + 2 * a3), v8); + *this = result; + return result; +} + +//----- (00487700) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (00487740) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4) +{ + _DWORD *result; // eax + + result = &unk_4E93EC; + if ( a2 ) + { + result = std::wstring::_S_construct(a2, a3); + *this = result; + } + else + { + *this = &unk_4E93EC; + } + return result; +} + +//----- (00487780) -------------------------------------------------------- +void __fastcall std::wstring::basic_string(_DWORD *a1) +{ + *a1 = &unk_4E93EC; +} + +//----- (00487790) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( + wchar_t **this, + wchar_t *a2, + wchar_t *a3, + int a4) +{ + wchar_t *result; // eax + + result = std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); + *this = result; + return result; +} + +//----- (004877C0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (004877F0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (00487820) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_4E93EC; + return result; +} + +//----- (00487840) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_4E93EC; + return result; +} + +//----- (00487860) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, wchar_t *String, int a3) +{ + int v3; // eax + _DWORD *result; // eax + + v3 = -2; + if ( String ) + v3 = (int)&String[wcslen(String)]; + result = std::wstring::_S_construct(String, v3); + *this = result; + return result; +} + +//----- (004878B0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (004878F0) -------------------------------------------------------- +void __thiscall std::wstring::basic_string(_DWORD *this, int a2) +{ + *this = &unk_4E93EC; +} + +//----- (00487900) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + void *v4; // ecx + char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF + + result = (_DWORD *)*a2; + v4 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + result = std::wstring::_Rep::_M_clone((int)v4, (int)v5, 0); + *this = result; + } + else + { + if ( v4 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; +// 487900: using guessed type char var_D[13]; + +//----- (00487980) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + void *v5; // ecx + + result = (_DWORD *)*a2; + v5 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + result = std::wstring::_Rep::_M_clone((int)v5, a3, 0); + *this = result; + } + else + { + if ( v5 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00487A00) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) +{ + unsigned int v5; // edx + _DWORD *result; // eax + + v5 = *(_DWORD *)(*a2 - 12); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(*a2 + 2 * a3), *a2 + 2 * v5); + *this = result; + return result; +} + +//----- (00487A60) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4) +{ + int v5; // ecx + unsigned int v6; // eax + int v7; // eax + _DWORD *result; // eax + + v5 = *a2; + v6 = *(_DWORD *)(*a2 - 12) - a3; + if ( v6 > a4 ) + v6 = a4; + v7 = v5 + 2 * (a3 + v6); + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(v5 + 2 * a3), v7); + *this = result; + return result; +} + +//----- (00487AD0) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) +{ + int v6; // ecx + unsigned int v7; // eax + int v8; // eax + _DWORD *result; // eax + + v6 = *a2; + v7 = *(_DWORD *)(*a2 - 12) - a3; + if ( v7 > a4 ) + v7 = a4; + v8 = v6 + 2 * (a3 + v7); + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::wstring::_S_construct((const wchar_t *)(v6 + 2 * a3), v8); + *this = result; + return result; +} + +//----- (00487B40) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (00487B80) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, unsigned int a2, wchar_t a3, int a4) +{ + _DWORD *result; // eax + + result = &unk_4E93EC; + if ( a2 ) + { + result = std::wstring::_S_construct(a2, a3); + *this = result; + } + else + { + *this = &unk_4E93EC; + } + return result; +} + +//----- (00487BC0) -------------------------------------------------------- +void __fastcall std::wstring::basic_string(_DWORD *a1) +{ + *a1 = &unk_4E93EC; +} + +//----- (00487BD0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator>( + wchar_t **this, + wchar_t *a2, + wchar_t *a3, + int a4) +{ + wchar_t *result; // eax + + result = std::wstring::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); + *this = result; + return result; +} + +//----- (00487C00) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (00487C30) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::basic_string(_DWORD *this, const wchar_t *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::wstring::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (00487C60) -------------------------------------------------------- +void __fastcall std::wstring::~wstring(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // ecx + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)(v1 - 3)); + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00487CC0) -------------------------------------------------------- +void __fastcall std::wstring::~wstring(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // ecx + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)(v1 - 3)); + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00487D20) -------------------------------------------------------- +int __thiscall std::wstring::operator=(int *this, int *a2) +{ + int v2; // ecx + + std::wstring::swap(this, a2); + return v2; +} +// 487D32: variable 'v2' is possibly undefined + +//----- (00487D40) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::assign(this, String, v3); +} + +//----- (00487D80) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t *a2, size_t a3) +{ + std::wstring::assign(this, a2, a3); + return this; +} + +//----- (00487DB0) -------------------------------------------------------- +const wchar_t **__thiscall std::wstring::operator=(const wchar_t **this, wchar_t a2) +{ + std::wstring::_M_replace_aux(this, 0, *((_DWORD *)*this - 3), 1u, a2); + return this; +} + +//----- (00487DF0) -------------------------------------------------------- +const wchar_t *__thiscall std::wstring::operator[](const wchar_t **this, int a2) +{ + const wchar_t *v2; // eax + + v2 = *this; + if ( *((int *)*this - 1) >= 0 ) + { + std::wstring::_M_leak_hard(this); + v2 = *this; + } + return &v2[a2]; +} + +//----- (00487E20) -------------------------------------------------------- +void **__thiscall std::wstring::operator+=(void **this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::append(this, String, v3); +} + +//----- (00487E70) -------------------------------------------------------- +void **__thiscall std::wstring::operator+=(void **this, __int16 a2) +{ + int v3; // edx + int v4; // esi + _WORD *v5; // eax + + v3 = *((_DWORD *)*this - 3); + v4 = v3 + 1; + if ( (unsigned int)(v3 + 1) > *((_DWORD *)*this - 2) || *((int *)*this - 1) > 0 ) + std::wstring::reserve(this, (char *)(v3 + 1)); + v5 = *this; + v5[*((_DWORD *)*this - 3)] = a2; + if ( v5 != (_WORD *)&unk_4E93EC ) + { + *((_DWORD *)v5 - 1) = 0; + *((_DWORD *)v5 - 3) = v4; + v5[v4] = 0; + } + return this; +} + +//----- (00487EE0) -------------------------------------------------------- +int __userpurge std::iostream::swap@(_DWORD *a1@, std::iostream *this, std::iostream *a3) +{ + int v4; // esi + std::ios_base *v5; // ebx + int v6; // eax + char v7; // dl + char v8; // dl + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v4 = (int)a1 + *(_DWORD *)(*a1 - 12); + v5 = (std::iostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); + std::ios_base::_M_swap(v4, v5, v10); + std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); + std::ios::_M_cache_locale(v5, (int)v5 + 108); + v6 = *(_DWORD *)(v4 + 112); + *(_DWORD *)(v4 + 112) = *((_DWORD *)v5 + 28); + *((_DWORD *)v5 + 28) = v6; + v7 = *(_BYTE *)(v4 + 116); + *(_BYTE *)(v4 + 116) = *((_BYTE *)v5 + 116); + LOBYTE(v6) = *((_BYTE *)v5 + 117); + *((_BYTE *)v5 + 116) = v7; + v8 = *(_BYTE *)(v4 + 117); + *(_BYTE *)(v4 + 117) = v6; + result = a1[1]; + *((_BYTE *)v5 + 117) = v8; + a1[1] = *((_DWORD *)this + 1); + *((_DWORD *)this + 1) = result; + return result; +} +// 487F01: variable 'v10' is possibly undefined + +//----- (00487F70) -------------------------------------------------------- +int __thiscall std::iostream::iostream(_DWORD *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // edi + std::ios_base *v6; // edi + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + v10 = this + 3; + std::ios_base::ios_base(this + 3); + *this = &unk_4F0F40; + *((_WORD *)this + 64) = 0; + v3 = a2[1]; + this[31] = 0; + this[1] = v3; + v4 = *a2; + this[33] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[34] = 0; + this[35] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[3] = &unk_4F0F54; + this[36] = 0; + std::ios_base::_M_move((int)v10, v6, v9); + std::ios::_M_cache_locale(v10, (int)(this + 30)); + this[33] = 0; + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[31] = v7; + result = *((unsigned __int16 *)v6 + 58); + *((_WORD *)this + 64) = result; + a2[1] = 0; + *this = &off_4F5DF4; + this[3] = off_4F5E1C; + this[2] = off_4F5E08; + return result; +} +// 487FE3: variable 'v9' is possibly undefined +// 4F5DF4: using guessed type void (__cdecl *off_4F5DF4)(std::iostream *__hidden this); +// 4F5E08: using guessed type void (__cdecl *off_4F5E08[2])(std::iostream *__hidden this); +// 4F5E1C: using guessed type void (__cdecl *off_4F5E1C[2])(std::iostream *__hidden this); + +//----- (00488060) -------------------------------------------------------- +BOOL __thiscall std::iostream::iostream(_DWORD *this, int a2) +{ + int v2; // esi + BOOL result; // eax + + v2 = (int)(this + 3); + std::ios_base::ios_base(this + 3); + this[31] = 0; + *((_WORD *)this + 64) = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + *this = &unk_4F0F40; + this[3] = &unk_4F0F54; + this[1] = 0; + std::ios::init(v2, a2); + this[2] = &unk_4F0F68; + this[3] = &unk_4F0F7C; + result = std::ios::init(v2, a2); + *this = &off_4F5DF4; + this[3] = off_4F5E1C; + this[2] = off_4F5E08; + return result; +} +// 4F5DF4: using guessed type void (__cdecl *off_4F5DF4)(std::iostream *__hidden this); +// 4F5E08: using guessed type void (__cdecl *off_4F5E08[2])(std::iostream *__hidden this); +// 4F5E1C: using guessed type void (__cdecl *off_4F5E1C[2])(std::iostream *__hidden this); + +//----- (00488140) -------------------------------------------------------- +BOOL __fastcall std::iostream::iostream(int a1) +{ + int v1; // esi + BOOL result; // eax + + v1 = a1 + 12; + std::ios_base::ios_base((_DWORD *)(a1 + 12)); + *(_DWORD *)(a1 + 124) = 0; + *(_WORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)(a1 + 144) = 0; + *(_DWORD *)a1 = &unk_4F0F40; + *(_DWORD *)(a1 + 12) = &unk_4F0F54; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_4F0F68; + *(_DWORD *)(a1 + 12) = &unk_4F0F7C; + result = std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_4F5DF4; + *(_DWORD *)(a1 + 12) = off_4F5E1C; + *(_DWORD *)(a1 + 8) = off_4F5E08; + return result; +} +// 4F5DF4: using guessed type void (__cdecl *off_4F5DF4)(std::iostream *__hidden this); +// 4F5E08: using guessed type void (__cdecl *off_4F5E08[2])(std::iostream *__hidden this); +// 4F5E1C: using guessed type void (__cdecl *off_4F5E1C[2])(std::iostream *__hidden this); + +//----- (00488220) -------------------------------------------------------- +int __thiscall std::iostream::iostream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edi + int v6; // edx + __int16 v7; // ax + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + int result; // eax + std::ios_base *v13; // [esp+4h] [ebp-38h] + std::ios_base *v14; // [esp+1Ch] [ebp-20h] + + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = a3[1]; + v5 = (int)this + *(_DWORD *)(v4 - 12); + v14 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v5, v14, v13); + std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); + *(_DWORD *)(v5 + 120) = 0; + v6 = *((_DWORD *)v14 + 28); + *((_DWORD *)v14 + 28) = 0; + v7 = *((_WORD *)v14 + 58); + *(_DWORD *)(v5 + 112) = v6; + *(_WORD *)(v5 + 116) = v7; + v8 = a2[3]; + a3[1] = 0; + v9 = a2[4]; + this[2] = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v9; + v10 = *a2; + v11 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + result = a2[6]; + this[2] = result; + return result; +} +// 48825B: variable 'v13' is possibly undefined + +//----- (004882D0) -------------------------------------------------------- +int __thiscall std::iostream::iostream(int *this, int *a2, int a3) +{ + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + int result; // eax + + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v4 - 12), a3); + v5 = a2[3]; + this[2] = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); + *v6 = a2[4]; + std::ios::init((int)v6, a3); + v7 = *a2; + v8 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + result = a2[6]; + this[2] = result; + return result; +} + +//----- (00488360) -------------------------------------------------------- +int __thiscall std::iostream::iostream(_DWORD *ecx0, std::iostream *this) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int result; // eax + + v3 = *((_DWORD *)this + 1); + *ecx0 = v3; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12)) = *((_DWORD *)this + 2); + ecx0[1] = 0; + std::ios::init((int)ecx0 + *(_DWORD *)(v3 - 12), 0); + v4 = *((_DWORD *)this + 3); + ecx0[2] = v4; + v5 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v4 - 12) + 8); + *v5 = *((_DWORD *)this + 4); + std::ios::init((int)v5, 0); + v6 = *(_DWORD *)this; + v7 = *((_DWORD *)this + 5); + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v6 - 12)) = v7; + result = *((_DWORD *)this + 6); + ecx0[2] = result; + return result; +} + +//----- (004883F0) -------------------------------------------------------- +void __fastcall std::iostream::~iostream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 3; + *(v2 - 1) = &unk_4F0F68; + *(v2 - 3) = &unk_4F0F40; + *(v2 - 2) = 0; + *v2 = &off_4F6E10; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (00488430) -------------------------------------------------------- +void __fastcall std::iostream::~iostream(int a1) +{ + _DWORD *v1; // ecx + + *(_DWORD *)(a1 + 8) = &unk_4F0F68; + v1 = (_DWORD *)(a1 + 12); + *(v1 - 3) = &unk_4F0F40; + *(v1 - 2) = 0; + *v1 = &off_4F6E10; + std::ios_base::~ios_base((int)v1); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (00488460) -------------------------------------------------------- +void __thiscall std::iostream::~iostream(_DWORD *ecx0, std::iostream *this) +{ + int v2; // edx + int v3; // edx + int v4; // edx + + v2 = *(_DWORD *)this; + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 5); + ecx0[2] = *((_DWORD *)this + 6); + v3 = *((_DWORD *)this + 3); + ecx0[2] = v3; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v3 - 12) + 8) = *((_DWORD *)this + 4); + v4 = *((_DWORD *)this + 1); + *ecx0 = v4; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v4 - 12)) = *((_DWORD *)this + 2); + ecx0[1] = 0; +} + +//----- (004884B0) -------------------------------------------------------- +_DWORD *__thiscall std::iostream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return this; +} +// 4884D1: variable 'v10' is possibly undefined + +//----- (00488540) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 48))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 488559: variable 'v7' is possibly undefined +// 488540: using guessed type int var_1C[7]; + +//----- (00488670) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 8))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 488689: variable 'v7' is possibly undefined +// 488670: using guessed type int var_1C[7]; + +//----- (004887A0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 40))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4887B9: variable 'v7' is possibly undefined +// 4887A0: using guessed type int var_1C[7]; + +//----- (004888D0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 44))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 4888E9: variable 'v7' is possibly undefined +// 4888D0: using guessed type int var_1C[7]; + +//----- (00488A00) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 36))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 488A19: variable 'v7' is possibly undefined +// 488A00: using guessed type int var_1C[7]; + +//----- (00488B30) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 20))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 488B49: variable 'v7' is possibly undefined +// 488B30: using guessed type int var_1C[7]; + +//----- (00488C60) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 488C79: variable 'v7' is possibly undefined +// 488C60: using guessed type int var_1C[7]; + +//----- (00488D90) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 24))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 488DA9: variable 'v7' is possibly undefined +// 488D90: using guessed type int var_1C[7]; + +//----- (00488EC0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 16))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 488ED9: variable 'v7' is possibly undefined +// 488EC0: using guessed type int var_1C[7]; + +//----- (00488FF0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 28))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 489009: variable 'v7' is possibly undefined +// 488FF0: using guessed type int var_1C[7]; + +//----- (00489120) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::_M_extract(std::istream::sentry *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+2Bh] [ebp-1Dh] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 32))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + v9, + a2); + if ( !v9[0] ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9[0]); + return this; +} +// 489139: variable 'v7' is possibly undefined +// 489120: using guessed type int var_1C[7]; + +//----- (00489250) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::get@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + int a4) +{ + int v4; // eax + _BYTE *v5; // esi + unsigned __int8 v7; // al + int (__stdcall *v9)(unsigned __int8); // edx + char v10; // [esp+Ch] [ebp-10h] + + v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v5 = *(_BYTE **)((char *)a1 + v4 + 124); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v5[28] ) + { + v7 = v5[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); + v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); + v7 = 10; + if ( v9 != std::ctype::do_widen ) + v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); + } + return std::istream::get(a1, this, a3, v7, v10); +} +// 489283: variable 'v10' is possibly undefined + +//----- (004892D0) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::get@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + unsigned __int8 a4, + char a5) +{ + _DWORD *v7; // esi + unsigned __int8 *v8; // eax + int v9; // eax + unsigned __int8 *v10; // eax + int v11; // edx + unsigned int v12; // eax + unsigned int v13; // edx + bool v15; // [esp+8h] [ebp-34h] + char v16[29]; // [esp+1Fh] [ebp-1Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v16, a1, (std::istream *)1, v15); + if ( !v16[0] ) + goto LABEL_19; + v7 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v8 = (unsigned __int8 *)v7[2]; + if ( v7[3] <= (unsigned int)v8 ) + { + v9 = (*(int (__fastcall **)(_DWORD))(*v7 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); + v11 = *((_DWORD *)a1 + 1); + if ( (int)a3 > v11 + 1 ) + { + if ( v9 != -1 ) + goto LABEL_4; + } + else + { +LABEL_18: + if ( v9 != -1 ) + goto LABEL_19; + } + if ( (int)a3 <= 0 ) + { + if ( v11 ) + goto LABEL_35; + } + else + { + *(_BYTE *)this = 0; + if ( *((_DWORD *)a1 + 1) ) + { +LABEL_35: + v11 = 2; + goto LABEL_15; + } + } + v11 = 6; + goto LABEL_15; + } + v9 = *v8; + if ( (int)a3 <= *((_DWORD *)a1 + 1) + 1 ) + goto LABEL_19; +LABEL_4: + if ( a4 != v9 ) + { + while ( 1 ) + { + while ( 1 ) + { + *(_BYTE *)this = v9; + v12 = v7[2]; + this = (std::istream *)((char *)this + 1); + v13 = v7[3]; + ++*((_DWORD *)a1 + 1); + if ( v12 < v13 ) + { + v10 = (unsigned __int8 *)(v12 + 1); + v7[2] = v10; + } + else + { + if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) + goto LABEL_12; + v10 = (unsigned __int8 *)v7[2]; + v13 = v7[3]; + } + if ( (unsigned int)v10 >= v13 ) + break; + v11 = *((_DWORD *)a1 + 1); + v9 = *v10; + if ( (int)a3 <= v11 + 1 ) + goto LABEL_19; + if ( a4 == v9 ) + { +LABEL_26: + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + v11 = *((_DWORD *)a1 + 1); + } + if ( !v11 ) + { +LABEL_14: + v11 |= 4u; + goto LABEL_15; + } + return a1; + } + } + v9 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + v11 = *((_DWORD *)a1 + 1); + if ( v11 + 1 >= (int)a3 ) + goto LABEL_18; + if ( v9 == -1 ) + break; + if ( a4 == v9 ) + goto LABEL_26; + } +LABEL_12: + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + v11 = 2; + if ( *((_DWORD *)a1 + 1) ) + goto LABEL_15; + goto LABEL_14; + } + if ( !*((_DWORD *)a1 + 1) ) + { + v11 = 6; + goto LABEL_15; + } + goto LABEL_35; + } +LABEL_19: + if ( (int)a3 > 0 ) + *(_BYTE *)this = 0; + v11 = 4; + if ( *((_DWORD *)a1 + 1) ) + return a1; +LABEL_15: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v11); + return a1; +} +// 4892F7: variable 'v15' is possibly undefined +// 4892D0: using guessed type char var_1D[29]; + +//----- (00489540) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2) +{ + int v2; // eax + _BYTE *v3; // esi + unsigned __int8 v5; // al + int (__stdcall *v7)(unsigned __int8); // edx + + v2 = *(_DWORD *)(*(_DWORD *)this - 12); + v3 = *(_BYTE **)((char *)this + v2 + 124); + if ( !v3 ) + std::__throw_bad_cast(); + if ( v3[28] ) + { + v5 = v3[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)this + v2 + 124)); + v7 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); + v5 = 10; + if ( v7 != std::ctype::do_widen ) + v5 = ((int (__thiscall *)(_BYTE *, int))v7)(v3, 10); + } + return std::istream::get(this, a2, v5); +} + +//----- (004895C0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::get(std::istream::sentry *this, _DWORD *a2, unsigned __int8 a3) +{ + _DWORD *v4; // edi + unsigned __int8 *v5; // eax + int v6; // eax + int v7; // edx + _BYTE *v8; // eax + unsigned int v9; // eax + unsigned int v10; // edx + unsigned __int8 *v11; // eax + int v12; // eax + bool v14; // [esp+8h] [ebp-40h] + char v15[25]; // [esp+2Fh] [ebp-19h] BYREF + + *((_DWORD *)this + 1) = 0; + std::istream::sentry::sentry(v15, this, (std::istream *)1, v14); + if ( v15[0] ) + { + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 120); + v5 = (unsigned __int8 *)v4[2]; + if ( v4[3] <= (unsigned int)v5 ) + { +LABEL_14: + v6 = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); + v7 = (unsigned __int8)v6; + if ( v6 == -1 ) + { +LABEL_15: + v12 = *((_DWORD *)this + 1) == 0 ? 6 : 2; + goto LABEL_12; + } + } + else + { + v6 = *v5; + v7 = v6; + } + if ( a3 != v6 ) + { + do + { + v8 = (_BYTE *)a2[5]; + if ( (unsigned int)v8 >= a2[6] ) + { + if ( (*(int (__thiscall **)(_DWORD *, int))(*a2 + 52))(a2, v7) == -1 ) + break; + v9 = v4[2]; + v10 = v4[3]; + ++*((_DWORD *)this + 1); + if ( v9 >= v10 ) + { +LABEL_18: + if ( (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4) == -1 ) + goto LABEL_15; + v11 = (unsigned __int8 *)v4[2]; + v10 = v4[3]; + goto LABEL_8; + } + } + else + { + *v8 = v7; + ++a2[5]; + v9 = v4[2]; + v10 = v4[3]; + ++*((_DWORD *)this + 1); + if ( v9 >= v10 ) + goto LABEL_18; + } + v11 = (unsigned __int8 *)(v9 + 1); + v4[2] = v11; +LABEL_8: + if ( (unsigned int)v11 >= v10 ) + goto LABEL_14; + v7 = *v11; + } + while ( a3 != (unsigned __int8)v7 ); + } + } + if ( !*((_DWORD *)this + 1) ) + { + v12 = 4; +LABEL_12: + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v12); + } + return this; +} +// 4895E8: variable 'v14' is possibly undefined +// 4895C0: using guessed type char var_19[25]; + +//----- (00489750) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::get@(std::istream::sentry *a1@, std::istream *this, char *a3) +{ + _DWORD *v4; // ecx + char *v5; // eax + char v6; // dl + int v7; // eax + int v9; // eax + bool v10; // [esp+8h] [ebp-24h] + char v11[13]; // [esp+1Fh] [ebp-Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v11, a1, (std::istream *)1, v10); + if ( v11[0] ) + { + v4 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v5 = (char *)v4[2]; + if ( v4[3] <= (unsigned int)v5 ) + { + v9 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); + if ( v9 == -1 ) + { + v7 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; + goto LABEL_7; + } + v6 = v9; + } + else + { + v6 = *v5; + v4[2] = v5 + 1; + } + *((_DWORD *)a1 + 1) = 1; + *(_BYTE *)this = v6; + } + if ( !*((_DWORD *)a1 + 1) ) + { + v7 = 4; +LABEL_7: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v7); + } + return a1; +} +// 48976C: variable 'v10' is possibly undefined +// 489750: using guessed type char var_D[13]; + +//----- (00489860) -------------------------------------------------------- +int __fastcall std::istream::get(std::istream::sentry *a1) +{ + _DWORD *v2; // ecx + unsigned __int8 *v3; // edx + int result; // eax + int v5; // eax + bool v6; // [esp+8h] [ebp-24h] + char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v7, a1, (std::istream *)1, v6); + if ( v7[0] ) + { + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v3 = (unsigned __int8 *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + { + result = *v3; + v2[2] = v3 + 1; +LABEL_4: + *((_DWORD *)a1 + 1) = 1; + return result; + } + result = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + if ( result != -1 ) + goto LABEL_4; + v5 = *((_DWORD *)a1 + 1) == 0 ? 6 : 2; + } + else + { + if ( *((_DWORD *)a1 + 1) ) + return -1; + v5 = 4; + } + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v5); + return -1; +} +// 48987C: variable 'v6' is possibly undefined +// 489860: using guessed type char var_D[13]; + +//----- (00489970) -------------------------------------------------------- +int __fastcall std::istream::peek(std::istream::sentry *a1) +{ + _DWORD *v2; // ecx + unsigned __int8 *v3; // eax + int result; // eax + bool v5; // [esp+8h] [ebp-34h] + char v6[13]; // [esp+2Fh] [ebp-Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v6, a1, (std::istream *)1, v5); + if ( !v6[0] ) + return -1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v3 = (unsigned __int8 *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + return *v3; + result = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); + if ( result == -1 ) + { + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return -1; + } + return result; +} +// 48998C: variable 'v5' is possibly undefined +// 489970: using guessed type char var_D[13]; + +//----- (00489A60) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::read@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + int a4) +{ + char *v5; // eax + bool v7; // [esp+8h] [ebp-20h] + char v8[5]; // [esp+1Fh] [ebp-9h] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v8, a1, (std::istream *)1, v7); + if ( !v8[0] ) + return a1; + v5 = (char *)(*(int (__stdcall **)(std::istream *, char *))(**(_DWORD **)((char *)a1 + + *(_DWORD *)(*(_DWORD *)a1 - 12) + + 120) + + 32))( + this, + a3); + *((_DWORD *)a1 + 1) = v5; + if ( a3 == v5 ) + return a1; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); + return a1; +} +// 489A7E: variable 'v7' is possibly undefined +// 489A60: using guessed type char var_9[5]; + +//----- (00489B50) -------------------------------------------------------- +int __userpurge std::istream::swap@(_DWORD *a1@, std::istream *this, std::istream *a3) +{ + int v4; // esi + std::ios_base *v5; // ebx + int v6; // eax + char v7; // dl + char v8; // dl + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v4 = (int)a1 + *(_DWORD *)(*a1 - 12); + v5 = (std::istream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); + std::ios_base::_M_swap(v4, v5, v10); + std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); + std::ios::_M_cache_locale(v5, (int)v5 + 108); + v6 = *(_DWORD *)(v4 + 112); + *(_DWORD *)(v4 + 112) = *((_DWORD *)v5 + 28); + *((_DWORD *)v5 + 28) = v6; + v7 = *(_BYTE *)(v4 + 116); + *(_BYTE *)(v4 + 116) = *((_BYTE *)v5 + 116); + LOBYTE(v6) = *((_BYTE *)v5 + 117); + *((_BYTE *)v5 + 116) = v7; + v8 = *(_BYTE *)(v4 + 117); + *(_BYTE *)(v4 + 117) = v6; + result = a1[1]; + *((_BYTE *)v5 + 117) = v8; + a1[1] = *((_DWORD *)this + 1); + *((_DWORD *)this + 1) = result; + return result; +} +// 489B71: variable 'v10' is possibly undefined + +//----- (00489BE0) -------------------------------------------------------- +int __fastcall std::istream::sync(std::istream::sentry *a1) +{ + int v2; // ecx + bool v4; // [esp+8h] [ebp-34h] + char v5[13]; // [esp+2Fh] [ebp-Dh] BYREF + + std::istream::sentry::sentry(v5, a1, (std::istream *)1, v4); + if ( !v5[0] ) + return -1; + v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + if ( !v2 ) + return -1; + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) + return 0; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + return -1; +} +// 489BF5: variable 'v4' is possibly undefined +// 489BE0: using guessed type char var_D[13]; + +//----- (00489CC0) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4, int a5) +{ + char *v6; // edi + int *v7; // eax + int v8; // edi + bool v10; // [esp+8h] [ebp-70h] + char v11; // [esp+3Fh] [ebp-39h] BYREF + int v12[14]; // [esp+40h] [ebp-38h] BYREF + + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); + std::istream::sentry::sentry(&v11, this, (std::istream *)1, v10); + if ( v11 ) + { + v6 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (v6[20] & 5) == 0 ) + { + v7 = (int *)*((_DWORD *)v6 + 30); + v12[7] = a5; + v8 = *v7; + v12[4] = a2; + v12[6] = a4; + v12[5] = a3; + (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v12, v7, a2, a3, a4, a5, 8); + if ( (v12[0] & v12[1]) == -1 ) + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); + } + } + return this; +} +// 489D07: variable 'v10' is possibly undefined + +//----- (00489E10) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::seekg(std::istream::sentry *this, int a2, int a3, int a4) +{ + char *v5; // edx + bool v7; // [esp+8h] [ebp-50h] + char v8; // [esp+2Fh] [ebp-29h] BYREF + int v9[10]; // [esp+30h] [ebp-28h] BYREF + + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) & 0xFFFFFFFD); + std::istream::sentry::sentry(&v8, this, (std::istream *)1, v7); + if ( v8 ) + { + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (v5[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( + v9, + *((_DWORD *)v5 + 30), + a2, + a3, + a4, + 8); + if ( (v9[0] & v9[1]) == -1 ) + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 4); + } + } + return this; +} +// 489E45: variable 'v7' is possibly undefined + +//----- (00489F30) -------------------------------------------------------- +_DWORD *__thiscall std::istream::tellg(_DWORD *ecx0, std::istream *this) +{ + char *v3; // edx + bool v5; // [esp+8h] [ebp-40h] + char v6; // [esp+2Fh] [ebp-19h] BYREF + int v7[6]; // [esp+30h] [ebp-18h] BYREF + + *ecx0 = -1; + ecx0[1] = -1; + ecx0[2] = 0; + std::istream::sentry::sentry(&v6, this, (std::istream *)1, v5); + if ( v6 ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (v3[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( + v7, + *((_DWORD *)v3 + 30), + 0, + 0, + 1, + 8); + *ecx0 = v7[0]; + ecx0[1] = v7[1]; + ecx0[2] = v7[2]; + } + } + return ecx0; +} +// 489F5F: variable 'v5' is possibly undefined + +//----- (0048A030) -------------------------------------------------------- +std::istream::sentry *__fastcall std::istream::unget(std::istream::sentry *a1) +{ + int v2; // eax + _DWORD *v3; // ecx + _DWORD *v4; // eax + unsigned int v5; // eax + bool v7; // [esp+8h] [ebp-20h] + char v8[5]; // [esp+1Fh] [ebp-9h] BYREF + + v2 = *(_DWORD *)a1; + *((_DWORD *)a1 + 1) = 0; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), + *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); + std::istream::sentry::sentry(v8, a1, (std::istream *)1, v7); + if ( !v8[0] ) + return a1; + v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); + if ( v3 ) + { + v5 = v3[2]; + if ( v3[1] < v5 ) + { + v3[2] = v5 - 1; + return a1; + } + if ( (*(int (__stdcall **)(int))(*v3 + 44))(-1) != -1 ) + return a1; + v4 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); + } + std::ios::clear(v4, v4[5] | 1); + return a1; +} +// 48A064: variable 'v7' is possibly undefined +// 48A030: using guessed type char var_9[5]; + +//----- (0048A150) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::ignore@( + std::istream::sentry *a1@, + std::istream *this, + int a3) +{ + _DWORD *v4; // edi + unsigned __int8 *v5; // eax + int v6; // eax + int i; // edx + unsigned int v8; // ebp + unsigned int v9; // eax + int v10; // ecx + unsigned __int8 *v11; // eax + unsigned __int8 *v13; // eax + bool v14; // [esp+8h] [ebp-44h] + char v15; // [esp+1Eh] [ebp-2Eh] + char v16; // [esp+1Fh] [ebp-2Dh] + char v17[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + if ( this == (std::istream *)1 ) + return std::istream::ignore(a1); + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v17, a1, (std::istream *)1, v14); + if ( (int)this <= 0 ) + return a1; + v15 = v17[0]; + if ( !v17[0] ) + return a1; + v4 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v5 = (unsigned __int8 *)v4[2]; + if ( (unsigned int)v5 >= v4[3] ) + v6 = (*(int (__fastcall **)(_DWORD))(*v4 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); + else + v6 = *v5; + v16 = 0; + for ( i = *((_DWORD *)a1 + 1); ; i = 0x80000000 ) + { + while ( 2 ) + { + if ( (int)this > i ) + { + while ( 1 ) + { + if ( v6 == -1 ) + goto LABEL_26; + v8 = v4[3]; + v9 = v4[2]; + v10 = (int)this - i; + if ( (int)this - i > (int)(v8 - v9) ) + v10 = v4[3] - v9; + if ( v10 <= 1 ) + break; + v11 = (unsigned __int8 *)(v10 + v9); + i += v10; + v4[2] = v11; + *((_DWORD *)a1 + 1) = i; + if ( v8 <= (unsigned int)v11 ) + goto LABEL_29; + v6 = *v11; + if ( (int)this <= i ) + goto LABEL_14; + } + *((_DWORD *)a1 + 1) = i + 1; + if ( v8 <= v9 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4) == -1 ) + { +LABEL_26: + if ( v16 ) + *((_DWORD *)a1 + 1) = 0x7FFFFFFF; + goto LABEL_28; + } + v13 = (unsigned __int8 *)v4[2]; + v8 = v4[3]; + } + else + { + v13 = (unsigned __int8 *)(v9 + 1); + v4[2] = v13; + } + if ( (unsigned int)v13 < v8 ) + { + v6 = *v13; + i = *((_DWORD *)a1 + 1); + continue; + } +LABEL_29: + v6 = (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4); + i = *((_DWORD *)a1 + 1); + continue; + } + break; + } +LABEL_14: + if ( this != (std::istream *)0x7FFFFFFF ) + break; + if ( v6 == -1 ) + goto LABEL_26; + *((_DWORD *)a1 + 1) = 0x80000000; + v16 = v15; + } + if ( v16 ) + *((_DWORD *)a1 + 1) = 0x7FFFFFFF; + if ( v6 != -1 ) + return a1; +LABEL_28: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return a1; +} +// 48A17C: variable 'v14' is possibly undefined +// 4DBBF0: using guessed type int __stdcall std::istream::ignore(_DWORD); +// 48A150: using guessed type char var_1D[29]; + +//----- (0048A2F0) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::ignore@( + std::istream::sentry *a1@, + std::istream *this, + int a3, + int a4) +{ + unsigned __int8 *v5; // eax + int v6; // eax + int i; // edi + signed int v8; // edx + unsigned int v9; // ecx + unsigned __int8 *Buf; // ebp + _BYTE *v11; // eax + int v12; // edx + unsigned __int8 *v13; // ebp + unsigned int v15; // eax + unsigned __int8 *v16; // ebp + int Val; // [esp+4h] [ebp-58h] + bool MaxCount; // [esp+8h] [ebp-54h] + char v19; // [esp+1Eh] [ebp-3Eh] + char v20; // [esp+1Fh] [ebp-3Dh] + _DWORD *v21; // [esp+20h] [ebp-3Ch] + signed int v22; // [esp+24h] [ebp-38h] + unsigned int v23; // [esp+28h] [ebp-34h] + char v24[29]; // [esp+3Fh] [ebp-1Dh] BYREF + + if ( a3 == -1 ) + return std::istream::ignore(a1, this, Val); + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v24, a1, (std::istream *)1, MaxCount); + if ( (int)this <= 0 ) + return a1; + v20 = v24[0]; + if ( !v24[0] ) + return a1; + v21 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v5 = (unsigned __int8 *)v21[2]; + if ( v21[3] <= (unsigned int)v5 ) + v6 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); + else + v6 = *v5; + v19 = 0; + for ( i = *((_DWORD *)a1 + 1); ; i = 0x80000000 ) + { +LABEL_7: + if ( (int)this > i ) + { + while ( 1 ) + { + if ( v6 == -1 ) + goto LABEL_34; + if ( v6 == a3 ) + break; + v8 = (signed int)this - i; + v9 = v21[3]; + Buf = (unsigned __int8 *)v21[2]; + if ( (int)this - i > (int)(v9 - (_DWORD)Buf) ) + v8 = v21[3] - (_DWORD)Buf; + if ( v8 <= 1 ) + { + *((_DWORD *)a1 + 1) = i + 1; + if ( v9 > (unsigned int)Buf ) + { + v16 = Buf + 1; + v21[2] = v16; + goto LABEL_39; + } + if ( (*(int (__fastcall **)(_DWORD *))(*v21 + 40))(v21) != -1 ) + { + v16 = (unsigned __int8 *)v21[2]; + v9 = v21[3]; +LABEL_39: + if ( v9 > (unsigned int)v16 ) + { + v6 = *v16; + i = *((_DWORD *)a1 + 1); + goto LABEL_7; + } +LABEL_41: + v6 = (*(int (__fastcall **)(_DWORD *))(*v21 + 36))(v21); + i = *((_DWORD *)a1 + 1); + goto LABEL_7; + } + goto LABEL_34; + } + v23 = v21[3]; + v22 = v8; + v11 = memchr(Buf, (char)a3, v8); + v12 = v22; + if ( v11 ) + v12 = v11 - Buf; + v13 = &Buf[v12]; + i += v12; + v21[2] = v13; + *((_DWORD *)a1 + 1) = i; + if ( v23 <= (unsigned int)v13 ) + goto LABEL_41; + v6 = *v13; + if ( (int)this <= i ) + goto LABEL_17; + } + if ( this == (std::istream *)0x7FFFFFFF ) + { + if ( !v19 ) + goto LABEL_31; + goto LABEL_26; + } + if ( v19 ) + goto LABEL_26; +LABEL_29: + i = *((_DWORD *)a1 + 1); + goto LABEL_30; + } +LABEL_17: + if ( this != (std::istream *)0x7FFFFFFF ) + { + if ( !v19 ) + { +LABEL_27: + if ( v6 != -1 ) + { + if ( a3 != v6 ) + return a1; + goto LABEL_29; + } +LABEL_36: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return a1; + } +LABEL_26: + *((_DWORD *)a1 + 1) = 0x7FFFFFFF; + goto LABEL_27; + } + if ( v6 == -1 ) + { +LABEL_34: + if ( v19 ) + *((_DWORD *)a1 + 1) = 0x7FFFFFFF; + goto LABEL_36; + } + if ( v6 == a3 ) + break; + *((_DWORD *)a1 + 1) = 0x80000000; + v19 = v20; + } + if ( v19 ) + goto LABEL_26; +LABEL_30: + if ( i != 0x7FFFFFFF ) +LABEL_31: + *((_DWORD *)a1 + 1) = i + 1; + v15 = v21[2]; + if ( v15 >= v21[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*v21 + 40))(v21); + return a1; + } + v21[2] = v15 + 1; + return a1; +} +// 48A31E: variable 'MaxCount' is possibly undefined +// 48A45B: variable 'Val' is possibly undefined +// 4DB4B4: using guessed type int __stdcall std::istream::ignore(_DWORD, _DWORD); +// 48A2F0: using guessed type char var_1D[29]; + +//----- (0048A590) -------------------------------------------------------- +std::istream::sentry *__fastcall std::istream::ignore(std::istream::sentry *a1) +{ + _DWORD *v2; // ecx + unsigned int v3; // eax + bool v5; // [esp+8h] [ebp-24h] + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v6, a1, (std::istream *)1, v5); + if ( !v6[0] ) + return a1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v3 = v2[2]; + if ( v2[3] > v3 ) + { + v2[2] = v3 + 1; +LABEL_4: + *((_DWORD *)a1 + 1) = 1; + return a1; + } + if ( (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2) != -1 ) + goto LABEL_4; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return a1; +} +// 48A5AC: variable 'v5' is possibly undefined +// 48A590: using guessed type char var_D[13]; + +//----- (0048A680) -------------------------------------------------------- +int __userpurge std::istream::sentry::sentry@( + _BYTE *a1@, + std::istream::sentry *this, + std::istream *a3, + bool a4) +{ + char *v5; // ecx + int result; // eax + _DWORD *v7; // edi + _BYTE *v8; // eax + int v9; // ebp + unsigned int v10; // eax + unsigned int v11; // edx + unsigned __int8 *v12; // eax + + *a1 = 0; + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + result = *((_DWORD *)v5 + 5); + if ( result ) + return std::ios::clear(v5, result | 4); + if ( *((_DWORD *)v5 + 28) ) + { + std::ostream::flush(*((_DWORD **)v5 + 28)); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) + goto LABEL_13; + } + else + { + result = (int)a3; + if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) + goto LABEL_17; + } + v7 = (_DWORD *)*((_DWORD *)v5 + 30); + v8 = (_BYTE *)v7[2]; + if ( v7[3] <= (unsigned int)v8 ) + { + v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD))(*v7 + 36))(*((_DWORD *)v5 + 30)); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v9 = *((_DWORD *)v5 + 31); + if ( v9 ) + { + if ( v8 == (_BYTE *)-1 ) + { +LABEL_20: + result = *((_DWORD *)v5 + 5) | 2; + return std::ios::clear(v5, result | 4); + } + goto LABEL_7; + } +LABEL_27: + std::__throw_bad_cast(); + } + v9 = *((_DWORD *)v5 + 31); + LOBYTE(v8) = *v8; + if ( !v9 ) + goto LABEL_27; +LABEL_7: + while ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * (unsigned __int8)v8) & 0x20) != 0 ) + { + while ( 1 ) + { + v10 = v7[2]; + v11 = v7[3]; + if ( v10 >= v11 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) + goto LABEL_19; + v12 = (unsigned __int8 *)v7[2]; + v11 = v7[3]; + } + else + { + v12 = (unsigned __int8 *)(v10 + 1); + v7[2] = v12; + } + if ( (unsigned int)v12 >= v11 ) + break; + if ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * *v12) & 0x20) == 0 ) + goto LABEL_12; + } + v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + if ( v8 == (_BYTE *)-1 ) + { +LABEL_19: + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + goto LABEL_20; + } + } +LABEL_12: + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); +LABEL_13: + result = *((_DWORD *)v5 + 5); + if ( result ) + return std::ios::clear(v5, result | 4); +LABEL_17: + *a1 = 1; + return result; +} + +//----- (0048A840) -------------------------------------------------------- +int __userpurge std::istream::sentry::sentry@( + _BYTE *a1@, + std::istream::sentry *this, + std::istream *a3, + bool a4) +{ + char *v5; // ecx + int result; // eax + _DWORD *v7; // edi + _BYTE *v8; // eax + int v9; // ebp + unsigned int v10; // eax + unsigned int v11; // edx + unsigned __int8 *v12; // eax + + *a1 = 0; + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + result = *((_DWORD *)v5 + 5); + if ( result ) + return std::ios::clear(v5, result | 4); + if ( *((_DWORD *)v5 + 28) ) + { + std::ostream::flush(*((_DWORD **)v5 + 28)); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) + goto LABEL_13; + } + else + { + result = (int)a3; + if ( (_BYTE)a3 || (v5[13] & 0x10) == 0 ) + goto LABEL_17; + } + v7 = (_DWORD *)*((_DWORD *)v5 + 30); + v8 = (_BYTE *)v7[2]; + if ( v7[3] <= (unsigned int)v8 ) + { + v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD))(*v7 + 36))(*((_DWORD *)v5 + 30)); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v9 = *((_DWORD *)v5 + 31); + if ( v9 ) + { + if ( v8 == (_BYTE *)-1 ) + { +LABEL_20: + result = *((_DWORD *)v5 + 5) | 2; + return std::ios::clear(v5, result | 4); + } + goto LABEL_7; + } +LABEL_27: + std::__throw_bad_cast(); + } + v9 = *((_DWORD *)v5 + 31); + LOBYTE(v8) = *v8; + if ( !v9 ) + goto LABEL_27; +LABEL_7: + while ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * (unsigned __int8)v8) & 0x20) != 0 ) + { + while ( 1 ) + { + v10 = v7[2]; + v11 = v7[3]; + if ( v10 >= v11 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) + goto LABEL_19; + v12 = (unsigned __int8 *)v7[2]; + v11 = v7[3]; + } + else + { + v12 = (unsigned __int8 *)(v10 + 1); + v7[2] = v12; + } + if ( (unsigned int)v12 >= v11 ) + break; + if ( (*(_BYTE *)(*(_DWORD *)(v9 + 24) + 2 * *v12) & 0x20) == 0 ) + goto LABEL_12; + } + v8 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + if ( v8 == (_BYTE *)-1 ) + { +LABEL_19: + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + goto LABEL_20; + } + } +LABEL_12: + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); +LABEL_13: + result = *((_DWORD *)v5 + 5); + if ( result ) + return std::ios::clear(v5, result | 4); +LABEL_17: + *a1 = 1; + return result; +} + +//----- (0048AA00) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::getline@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + int a4) +{ + int v4; // eax + _BYTE *v5; // esi + unsigned __int8 v7; // al + int (__stdcall *v9)(unsigned __int8); // edx + char v10; // [esp+Ch] [ebp-10h] + + v4 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v5 = *(_BYTE **)((char *)a1 + v4 + 124); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v5[28] ) + { + v7 = v5[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v4 + 124)); + v9 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v5 + 24); + v7 = 10; + if ( v9 != std::ctype::do_widen ) + v7 = ((int (__thiscall *)(_BYTE *, int))v9)(v5, 10); + } + return std::istream::getline(a1, this, a3, v7, v10); +} +// 48AA33: variable 'v10' is possibly undefined + +//----- (0048AA80) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::getline@( + std::istream::sentry *a1@, + std::istream *this, + char *a3, + unsigned __int8 a4, + char a5) +{ + int v6; // eax + int v8; // eax + _DWORD *v9; // esi + unsigned __int8 *Buf; // edi + unsigned int v11; // edx + int v12; // ebx + int v13; // eax + unsigned __int8 *v14; // eax + unsigned int v15; // edx + signed int v16; // ebx + unsigned int v17; // eax + std::istream *v18; // edi + unsigned int v19; // edx + unsigned __int8 *v20; // eax + int v21; // edx + bool MaxCount; // [esp+8h] [ebp-44h] + int v23; // [esp+14h] [ebp-38h] + unsigned int v24; // [esp+14h] [ebp-38h] + char v25[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v25, a1, (std::istream *)1, MaxCount); + if ( !v25[0] ) + { + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + if ( !*((_DWORD *)a1 + 1) ) + { +LABEL_4: + v6 = 4; + goto LABEL_5; + } + return a1; + } + v23 = *((_DWORD *)a1 + 1); + goto LABEL_7; + } + v8 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v9 = *(_DWORD **)((char *)a1 + v8 + 120); + Buf = (unsigned __int8 *)v9[2]; + v11 = v9[3]; + if ( (unsigned int)Buf >= v11 ) + { + v13 = (*(int (__fastcall **)(_DWORD))(*v9 + 36))(*(_DWORD *)((char *)a1 + v8 + 120)); + v12 = *((_DWORD *)a1 + 1); + v21 = v12; + v23 = v12 + 1; + if ( (int)a3 <= v12 + 1 ) + { +LABEL_50: + if ( v13 != -1 ) + goto LABEL_25; + if ( (int)a3 <= 0 ) + { + v12 = v21; + v6 = 2; + goto LABEL_37; + } + } + else + { + if ( v13 != -1 ) + { + Buf = (unsigned __int8 *)v9[2]; + v11 = v9[3]; +LABEL_11: + if ( a4 == v13 ) + { +LABEL_40: + *((_DWORD *)a1 + 1) = v23; + if ( (unsigned int)Buf >= v11 ) + { + (*(void (__fastcall **)(_DWORD *))(*v9 + 40))(v9); + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + if ( !*((_DWORD *)a1 + 1) ) + goto LABEL_4; + return a1; + } + v23 = *((_DWORD *)a1 + 1); + } + else + { + v9[2] = Buf + 1; + if ( (int)a3 > 0 ) + { + *(_BYTE *)this = 0; + if ( !*((_DWORD *)a1 + 1) ) + goto LABEL_4; + return a1; + } + } +LABEL_7: + if ( !v23 ) + goto LABEL_4; + return a1; + } + while ( 1 ) + { + v16 = (signed int)&a3[-v12 - 1]; + if ( v16 > (int)(v11 - (_DWORD)Buf) ) + v16 = v11 - (_DWORD)Buf; + if ( v16 > 1 ) + { + v24 = v11; + v14 = (unsigned __int8 *)memchr(Buf, (char)a4, v16); + if ( !v14 || (v15 = v24, v16 = v14 - Buf, v14 != Buf) ) + { + memcpy(this, Buf, v16); + v15 = v9[3]; + v14 = (unsigned __int8 *)(v16 + v9[2]); + } + this = (std::istream *)((char *)this + v16); + v12 = *((_DWORD *)a1 + 1) + v16; + v9[2] = v14; + *((_DWORD *)a1 + 1) = v12; + if ( v15 > (unsigned int)v14 ) + { + v13 = *v14; + v23 = v12 + 1; + if ( (int)a3 <= v12 + 1 ) + goto LABEL_25; + goto LABEL_17; + } + v13 = (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9); + } + else + { + *(_BYTE *)this = v13; + v17 = v9[2]; + v18 = (std::istream *)((char *)this + 1); + v19 = v9[3]; + ++*((_DWORD *)a1 + 1); + if ( v17 >= v19 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v9 + 40))(v9) == -1 ) + goto LABEL_33; + v20 = (unsigned __int8 *)v9[2]; + v19 = v9[3]; + } + else + { + v20 = (unsigned __int8 *)(v17 + 1); + v9[2] = v20; + } + if ( (unsigned int)v20 < v19 ) + { + v12 = *((_DWORD *)a1 + 1); + v13 = *v20; + this = (std::istream *)((char *)this + 1); + v23 = v12 + 1; + if ( (int)a3 <= v12 + 1 ) + goto LABEL_25; + goto LABEL_17; + } + v13 = (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9); + this = (std::istream *)((char *)this + 1); + } + v21 = *((_DWORD *)a1 + 1); + v12 = v21; + v23 = v21 + 1; + if ( v21 + 1 >= (int)a3 ) + goto LABEL_50; + if ( v13 == -1 ) + { + v18 = this; +LABEL_33: + if ( (int)a3 > 0 ) + *(_BYTE *)v18 = 0; + v12 = *((_DWORD *)a1 + 1); + v6 = 2; +LABEL_37: + if ( !v12 ) + v6 |= 4u; + goto LABEL_5; + } +LABEL_17: + Buf = (unsigned __int8 *)v9[2]; + v11 = v9[3]; + if ( a4 == v13 ) + goto LABEL_40; + } + } + if ( (int)a3 <= 0 ) + { + v6 = 2; + goto LABEL_37; + } + } + *(_BYTE *)this = 0; + if ( *((_DWORD *)a1 + 1) ) + v6 = 2; + else + v6 = 6; + goto LABEL_5; + } + v12 = *((_DWORD *)a1 + 1); + v13 = *Buf; + v23 = v12 + 1; + if ( (int)a3 > v12 + 1 ) + goto LABEL_11; +LABEL_25: + if ( a4 == v13 ) + { + Buf = (unsigned __int8 *)v9[2]; + v11 = v9[3]; + goto LABEL_40; + } + if ( (int)a3 <= 0 ) + { + v12 = *((_DWORD *)a1 + 1); + v6 = 4; + goto LABEL_37; + } + *(_BYTE *)this = 0; + v6 = 4; +LABEL_5: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v6); + return a1; +} +// 48AE01: control flows out of bounds to 4DB428 +// 48AAA7: variable 'MaxCount' is possibly undefined +// 4DB424: using guessed type int __stdcall std::istream::getline(_DWORD, _DWORD, _DWORD); +// 48AA80: using guessed type char var_1D[29]; + +//----- (0048AE10) -------------------------------------------------------- +std::istream::sentry *__userpurge std::istream::putback@( + std::istream::sentry *a1@, + std::istream *this, + char a3) +{ + int v4; // eax + _DWORD *v5; // ecx + _DWORD *v6; // eax + unsigned int v7; // eax + bool v9; // [esp+8h] [ebp-20h] + char v10[9]; // [esp+1Fh] [ebp-9h] BYREF + + v4 = *(_DWORD *)a1; + *((_DWORD *)a1 + 1) = 0; + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v4 - 12)), + *(_DWORD *)((_BYTE *)a1 + *(_DWORD *)(v4 - 12) + 20) & 0xFFFFFFFD); + std::istream::sentry::sentry(v10, a1, (std::istream *)1, v9); + if ( !v10[0] ) + return a1; + v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); + if ( v5 ) + { + v7 = v5[2]; + if ( v5[1] < v7 && (_BYTE)this == *(_BYTE *)(v7 - 1) ) + { + v5[2] = v7 - 1; + return a1; + } + if ( (*(int (__stdcall **)(_DWORD))(*v5 + 44))((unsigned __int8)this) != -1 ) + return a1; + v6 = (_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)); + } + std::ios::clear(v6, v6[5] | 1); + return a1; +} +// 48AE48: variable 'v9' is possibly undefined +// 48AE10: using guessed type char var_9[9]; + +//----- (0048AF40) -------------------------------------------------------- +int __userpurge std::istream::readsome@(std::istream::sentry *a1@, std::istream *this, char *a3, int a4) +{ + _DWORD *v5; // ecx + char *v6; // eax + int result; // eax + bool v8; // [esp+8h] [ebp-20h] + char v9[5]; // [esp+1Fh] [ebp-9h] BYREF + + *((_DWORD *)a1 + 1) = 0; + std::istream::sentry::sentry(v9, a1, (std::istream *)1, v8); + if ( !v9[0] ) + return *((_DWORD *)a1 + 1); + v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v6 = (char *)(v5[3] - v5[2]); + if ( !v6 ) + v6 = (char *)(*(int (__fastcall **)(_DWORD *))(*v5 + 28))(v5); + if ( (int)v6 <= 0 ) + { + if ( v6 == (char *)-1 ) + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 2); + return *((_DWORD *)a1 + 1); + } + if ( (int)v6 > (int)a3 ) + v6 = a3; + result = (*(int (__stdcall **)(std::istream *, char *))(**(_DWORD **)((char *)a1 + + *(_DWORD *)(*(_DWORD *)a1 - 12) + + 120) + + 32))( + this, + v6); + *((_DWORD *)a1 + 1) = result; + return result; +} +// 48AF5E: variable 'v8' is possibly undefined +// 48AF40: using guessed type char var_9[5]; + +//----- (0048B050) -------------------------------------------------------- +int __thiscall std::istream::istream(_DWORD *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // edi + std::ios_base *v6; // edi + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + v10 = this + 2; + std::ios_base::ios_base(this + 2); + *this = &off_4F5E30; + *((_WORD *)this + 62) = 0; + v3 = a2[1]; + this[30] = 0; + this[1] = v3; + v4 = *a2; + this[32] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[33] = 0; + this[34] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[2] = off_4F5E44; + this[35] = 0; + std::ios_base::_M_move((int)v10, v6, v9); + std::ios::_M_cache_locale(v10, (int)(this + 29)); + this[32] = 0; + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[30] = v7; + result = *((unsigned __int16 *)v6 + 58); + a2[1] = 0; + *((_WORD *)this + 62) = result; + return result; +} +// 48B0C0: variable 'v9' is possibly undefined +// 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); +// 4F5E44: using guessed type void (__cdecl *off_4F5E44[2])(std::istream *__hidden this); + +//----- (0048B130) -------------------------------------------------------- +BOOL __thiscall std::istream::istream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 2); + std::ios_base::ios_base(this + 2); + this[30] = 0; + *((_WORD *)this + 62) = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + *this = &off_4F5E30; + this[2] = off_4F5E44; + this[1] = 0; + return std::ios::init(v2, a2); +} +// 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); +// 4F5E44: using guessed type void (__cdecl *off_4F5E44[2])(std::istream *__hidden this); + +//----- (0048B1C0) -------------------------------------------------------- +BOOL __fastcall std::istream::istream(int a1) +{ + int v1; // esi + + v1 = a1 + 8; + std::ios_base::ios_base((_DWORD *)(a1 + 8)); + *(_DWORD *)(a1 + 120) = 0; + *(_WORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)a1 = &off_4F5E30; + *(_DWORD *)(a1 + 8) = off_4F5E44; + *(_DWORD *)(a1 + 4) = 0; + return std::ios::init(v1, 0); +} +// 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); +// 4F5E44: using guessed type void (__cdecl *off_4F5E44[2])(std::istream *__hidden this); + +//----- (0048B250) -------------------------------------------------------- +int __thiscall std::istream::istream(int *this, int *a2, _DWORD *a3) +{ + int v3; // eax + int v4; // ebx + int v5; // edx + int v6; // ebx + std::ios_base *v7; // esi + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-18h] + + v3 = *a2; + v4 = a2[1]; + v5 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v5) = v4; + this[1] = a3[1]; + v6 = (int)this + *(_DWORD *)(v3 - 12); + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v6, v7, v10); + std::ios::_M_cache_locale((_DWORD *)v6, v6 + 108); + v8 = *((_DWORD *)v7 + 28); + *((_DWORD *)v7 + 28) = 0; + *(_DWORD *)(v6 + 112) = v8; + *(_BYTE *)(v6 + 116) = *((_BYTE *)v7 + 116); + result = *((unsigned __int8 *)v7 + 117); + *(_DWORD *)(v6 + 120) = 0; + *(_BYTE *)(v6 + 117) = result; + a3[1] = 0; + return result; +} +// 48B280: variable 'v10' is possibly undefined + +//----- (0048B2D0) -------------------------------------------------------- +BOOL __thiscall std::istream::istream(int *this, int *a2, int a3) +{ + int v3; // eax + int v4; // ebx + int v5; // edx + + v3 = *a2; + v4 = a2[1]; + v5 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v5) = v4; + this[1] = 0; + return std::ios::init((int)this + *(_DWORD *)(v3 - 12), a3); +} + +//----- (0048B310) -------------------------------------------------------- +BOOL __thiscall std::istream::istream(_DWORD *ecx0, std::istream *this) +{ + int v2; // eax + int v3; // ebx + int v4; // edx + + v2 = *(_DWORD *)this; + v3 = *((_DWORD *)this + 1); + v4 = *(_DWORD *)(*(_DWORD *)this - 12); + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + v4) = v3; + ecx0[1] = 0; + return std::ios::init((int)ecx0 + *(_DWORD *)(v2 - 12), 0); +} + +//----- (0048B340) -------------------------------------------------------- +void __fastcall std::istream::~istream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 2; + *(v2 - 2) = &off_4F5E30; + *(v2 - 1) = 0; + *v2 = &off_4F6E10; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (0048B370) -------------------------------------------------------- +void __fastcall std::istream::~istream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_4F5E30; + v1 = a1 + 2; + *(v1 - 1) = 0; + *v1 = &off_4F6E10; + std::ios_base::~ios_base((int)v1); +} +// 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (0048B390) -------------------------------------------------------- +void __thiscall std::istream::~istream(_DWORD *ecx0, std::istream *this) +{ + int v2; // eax + + v2 = *(_DWORD *)this; + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); + ecx0[1] = 0; +} + +//----- (0048B3B0) -------------------------------------------------------- +_DWORD *__thiscall std::istream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return this; +} +// 48B3D1: variable 'v10' is possibly undefined + +//----- (0048B440) -------------------------------------------------------- +int __thiscall std::istream::operator>>(void *this, int (__cdecl *a2)(void *)) +{ + return a2(this); +} + +//----- (0048B450) -------------------------------------------------------- +char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (0048B470) -------------------------------------------------------- +char *__thiscall std::istream::operator>>(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (0048B490) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) +{ + char *v3; // ecx + int v4; // eax + bool v6; // [esp+8h] [ebp-24h] + char v7; // [esp+1Eh] [ebp-Eh] BYREF + char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF + + std::istream::sentry::sentry(&v7, this, 0, v6); + if ( !v7 ) + { + if ( !a2 ) + { + v4 = 4; + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + goto LABEL_9; + } + return this; + } + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( !a2 ) + { + v4 = 4; + goto LABEL_9; + } + if ( !std::__copy_streambufs_eof>(*((_DWORD **)v3 + 30), a2, v8) ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = v8[0] == 0 ? 4 : 6; + goto LABEL_9; + } + if ( !v8[0] ) + return this; + v4 = 2; + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); +LABEL_9: + std::ios::clear(v3, *((_DWORD *)v3 + 5) | v4); + return this; +} +// 48B4AA: variable 'v6' is possibly undefined +// 48B490: using guessed type char var_D[13]; + +//----- (0048B610) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _DWORD *a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + bool v7; // [esp+8h] [ebp-40h] + char v8; // [esp+27h] [ebp-21h] BYREF + int v9; // [esp+28h] [ebp-20h] BYREF + int v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v8, this, 0, v7); + if ( !v8 ) + return this; + v3 = *(_DWORD *)this; + v9 = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + &v9, + v10); + *a2 = v10[0]; + if ( !v9 ) + return this; + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v9); + return this; +} +// 48B629: variable 'v7' is possibly undefined +// 48B610: using guessed type int var_1C[7]; + +//----- (0048B770) -------------------------------------------------------- +std::istream::sentry *__thiscall std::istream::operator>>(std::istream::sentry *this, _WORD *a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + int v6; // eax + bool v8; // [esp+8h] [ebp-40h] + char v9; // [esp+27h] [ebp-21h] BYREF + int v10; // [esp+28h] [ebp-20h] BYREF + int v11[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v9, this, 0, v8); + if ( !v9 ) + return this; + v3 = *(_DWORD *)this; + v10 = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + -1, + 0, + -1, + v4, + &v10, + v11); + v6 = v10; + if ( v11[0] >= -32768 ) + { + if ( v11[0] > 0x7FFF ) + { + v10 |= 4u; + v6 = v10; + *a2 = 0x7FFF; + goto LABEL_9; + } + *a2 = v11[0]; + } + else + { + v6 = v10 | 4; + v10 |= 4u; + *a2 = 0x8000; + } + if ( !v6 ) + return this; +LABEL_9: + std::ios::clear( + (std::istream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | v6); + return this; +} +// 48B83B: conditional instruction was optimized away because eax.4>=4u +// 48B789: variable 'v8' is possibly undefined +// 48B770: using guessed type int var_1C[7]; + +//----- (0048B910) -------------------------------------------------------- +std::ostream::sentry *__userpurge std::ostream::put@(std::ostream::sentry *a1@, std::ostream *this, char a3) +{ + _DWORD *v4; // ecx + _BYTE *v5; // eax + char *v6; // esi + int v7; // ecx + std::ostream *v9; // [esp+4h] [ebp-24h] + char v10[4]; // [esp+18h] [ebp-10h] BYREF + _DWORD *v11; // [esp+1Ch] [ebp-Ch] + + std::ostream::sentry::sentry((int)v10, a1, v9); + if ( v10[0] ) + { + v4 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v5 = (_BYTE *)v4[5]; + if ( (unsigned int)v5 >= v4[6] ) + { + if ( (*(int (__stdcall **)(_DWORD))(*v4 + 52))((unsigned __int8)this) == -1 ) + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + else + { + *v5 = (_BYTE)this; + ++v4[5]; + } + } + v6 = (char *)v11 + *(_DWORD *)(*v11 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12)), + *(_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12) + 20) | 1); + } + } + return a1; +} +// 48B923: variable 'v9' is possibly undefined +// 48B910: using guessed type char var_10[4]; + +//----- (0048BA40) -------------------------------------------------------- +int __userpurge std::ostream::swap@(_DWORD *a1@, std::ostream *this, std::ostream *a3) +{ + int v3; // ebx + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-18h] + + v3 = (int)a1 + *(_DWORD *)(*a1 - 12); + v4 = (std::ostream *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_BYTE *)v4 + 116); + *((_DWORD *)v4 + 28) = v5; + LOBYTE(v5) = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = v6; + v7 = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v5; + result = *(unsigned __int8 *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v7; + *((_BYTE *)v4 + 117) = result; + return result; +} +// 48BA58: variable 'v9' is possibly undefined + +//----- (0048BAB0) -------------------------------------------------------- +_DWORD *__fastcall std::ostream::flush(_DWORD *a1) +{ + int v2; // ecx + + v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + if ( !v2 || (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) + return a1; + std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return a1; +} + +//----- (0048BB60) -------------------------------------------------------- +_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) +{ + char *v6; // eax + int *v7; // eax + int v8; // edi + int v10[14]; // [esp+40h] [ebp-38h] BYREF + + v6 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v6[20] & 5) != 0 ) + return this; + v7 = (int *)*((_DWORD *)v6 + 30); + v10[4] = a2; + v10[5] = a3; + v10[7] = a5; + v8 = *v7; + v10[6] = a4; + (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v10, v7, a2, a3, a4, a5, 16); + if ( (v10[0] & v10[1]) != -1 ) + return this; + std::ios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + return this; +} + +//----- (0048BC80) -------------------------------------------------------- +_DWORD *__thiscall std::ostream::seekp(_DWORD *this, int a2, int a3, int a4) +{ + char *v5; // edx + int v7[10]; // [esp+20h] [ebp-28h] BYREF + + v5 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v5[20] & 5) != 0 ) + return this; + (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( + v7, + *((_DWORD *)v5 + 30), + a2, + a3, + a4, + 16); + if ( (v7[0] & v7[1]) != -1 ) + return this; + std::ios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + return this; +} + +//----- (0048BD70) -------------------------------------------------------- +_DWORD *__thiscall std::ostream::tellp(_DWORD *ecx0, std::ostream *this) +{ + int v3; // eax + char *v4; // edx + int v6[6]; // [esp+20h] [ebp-18h] BYREF + + *ecx0 = -1; + ecx0[1] = -1; + v3 = *(_DWORD *)this; + ecx0[2] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + if ( (v4[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v4 + 30) + 16))( + v6, + *((_DWORD *)v4 + 30), + 0, + 0, + 1, + 16); + *ecx0 = v6[0]; + ecx0[1] = v6[1]; + ecx0[2] = v6[2]; + } + return ecx0; +} + +//----- (0048BE60) -------------------------------------------------------- +std::ostream::sentry *__userpurge std::ostream::write@( + std::ostream::sentry *a1@, + std::ostream *this, + const char *a3, + int a4) +{ + char *v5; // esi + int v6; // ecx + std::ostream *v8; // [esp+4h] [ebp-24h] + char v9[4]; // [esp+18h] [ebp-10h] BYREF + _DWORD *v10; // [esp+1Ch] [ebp-Ch] + + std::ostream::sentry::sentry((int)v9, a1, v8); + if ( v9[0] + && a3 != (const char *)(*(int (__stdcall **)(std::ostream *, const char *))(**(_DWORD **)((char *)a1 + + *(_DWORD *)(*(_DWORD *)a1 - 12) + + 120) + + 48))( + this, + a3) ) + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + v5 = (char *)v10 + *(_DWORD *)(*v10 - 12); + if ( (v5[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v6 = *((_DWORD *)v5 + 30); + if ( v6 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), + *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); + } + } + return a1; +} +// 48BE70: variable 'v8' is possibly undefined +// 48BE60: using guessed type char var_10[4]; + +//----- (0048BF90) -------------------------------------------------------- +int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) +{ + int v4; // eax + char *v5; // ecx + int result; // eax + + *(_BYTE *)a1 = 0; + v4 = *(_DWORD *)this; + *(_DWORD *)(a1 + 4) = this; + v5 = (char *)this + *(_DWORD *)(v4 - 12); + result = *((_DWORD *)v5 + 5); + if ( *((_DWORD *)v5 + 28) ) + { + if ( result ) + return std::ios::clear(v5, result | 4); + std::ostream::flush(*((_DWORD **)v5 + 28)); + result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + } + if ( result ) + return std::ios::clear(v5, result | 4); + *(_BYTE *)a1 = 1; + return result; +} + +//----- (0048BFF0) -------------------------------------------------------- +int __userpurge std::ostream::sentry::sentry@(int a1@, std::ostream::sentry *this, std::ostream *a3) +{ + int v4; // eax + char *v5; // ecx + int result; // eax + + *(_BYTE *)a1 = 0; + v4 = *(_DWORD *)this; + *(_DWORD *)(a1 + 4) = this; + v5 = (char *)this + *(_DWORD *)(v4 - 12); + result = *((_DWORD *)v5 + 5); + if ( *((_DWORD *)v5 + 28) ) + { + if ( result ) + return std::ios::clear(v5, result | 4); + std::ostream::flush(*((_DWORD **)v5 + 28)); + result = *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20); + v5 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + } + if ( result ) + return std::ios::clear(v5, result | 4); + *(_BYTE *)a1 = 1; + return result; +} + +//----- (0048C050) -------------------------------------------------------- +void __fastcall std::ostream::sentry::~sentry(int a1) +{ + int v2; // ebx + int v3; // ecx + _DWORD *v4; // ecx + + if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) + { + v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + if ( !std::uncaught_exception() ) + { + v3 = *(_DWORD *)(v2 + 120); + if ( v3 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) + { + v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); + std::ios::clear(v4, v4[5] | 1); + } + } + } + } +} + +//----- (0048C0C0) -------------------------------------------------------- +void __fastcall std::ostream::sentry::~sentry(int a1) +{ + int v2; // ebx + int v3; // ecx + _DWORD *v4; // ecx + + if ( (*(_BYTE *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4) + 13) & 0x20) != 0 ) + { + v2 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + if ( !std::uncaught_exception() ) + { + v3 = *(_DWORD *)(v2 + 120); + if ( v3 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v3 + 24))(v3) == -1 ) + { + v4 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); + std::ios::clear(v4, v4[5] | 1); + } + } + } + } +} + +//----- (0048C130) -------------------------------------------------------- +const char *__userpurge std::ostream::_M_write@(_DWORD *a1@, std::ostream *this, const char *a3, int a4) +{ + int v5; // ecx + const char *result; // eax + + v5 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + result = (const char *)(*(int (__thiscall **)(int, std::ostream *, const char *))(*(_DWORD *)v5 + 48))(v5, this, a3); + if ( a3 != result ) + return (const char *)std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return result; +} + +//----- (0048C180) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + int v14; // [esp+28h] [ebp-30h] + _BYTE *v15; // [esp+2Ch] [ebp-2Ch] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v14 = v3[116]; + } + else + { + v15 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v15 ) + std::__throw_bad_cast(); + if ( v15[28] ) + { + v14 = (char)v15[61]; + v9 = v15[61]; + } + else + { + std::ctype::_M_widen_init((int)v15); + v14 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); + v14 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int))(*(_DWORD *)v4 + 36))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v14, + a2); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 48C191: variable 'v13' is possibly undefined +// 48C1FD: variable 'v5' is possibly undefined +// 48C180: using guessed type char var_20[4]; + +//----- (0048C370) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, unsigned __int8 a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + _BYTE *v14; // [esp+24h] [ebp-34h] + int v15; // [esp+2Ch] [ebp-2Ch] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v15 = v3[116]; + } + else + { + v14 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v14 ) + std::__throw_bad_cast(); + if ( v14[28] ) + { + v15 = (char)v14[61]; + v9 = v14[61]; + } + else + { + std::ctype::_M_widen_init((int)v14); + v15 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v14 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v14, 32); + v15 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, _DWORD))(*(_DWORD *)v4 + 8))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v15, + a2); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 48C387: variable 'v13' is possibly undefined +// 48C3FA: variable 'v5' is possibly undefined +// 48C370: using guessed type char var_20[4]; + +//----- (0048C570) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, double a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + _BYTE *v14; // [esp+20h] [ebp-38h] + int v15; // [esp+24h] [ebp-34h] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v15 = v3[116]; + } + else + { + v14 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v14 ) + std::__throw_bad_cast(); + if ( v14[28] ) + { + v15 = (char)v14[61]; + v9 = v14[61]; + } + else + { + std::ctype::_M_widen_init((int)v14); + v15 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v14 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v14, 32); + v15 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v15, + LODWORD(a2), + HIDWORD(a2)); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 48C587: variable 'v13' is possibly undefined +// 48C5F3: variable 'v5' is possibly undefined +// 48C570: using guessed type char var_20[4]; + +//----- (0048C770) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, long double a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + _BYTE *v15; // [esp+28h] [ebp-30h] + int v16; // [esp+2Ch] [ebp-2Ch] + char v17[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v18; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v17, this, v13); + if ( v17[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v16 = v3[116]; + } + else + { + v15 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v15 ) + std::__throw_bad_cast(); + if ( v15[28] ) + { + v16 = (char)v15[61]; + v9 = v15[61]; + } + else + { + std::ctype::_M_widen_init((int)v15); + v16 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); + v16 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 32))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v16, + LODWORD(a2), + DWORD1(a2), + HIDWORD(a2)); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v18 + *(_DWORD *)(*v18 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), + *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); + } + } + return this; +} +// 48C781: variable 'v13' is possibly undefined +// 48C7ED: variable 'v5' is possibly undefined +// 48C770: using guessed type char var_20[4]; + +//----- (0048C960) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + int v14; // [esp+28h] [ebp-30h] + _BYTE *v15; // [esp+2Ch] [ebp-2Ch] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v14 = v3[116]; + } + else + { + v15 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v15 ) + std::__throw_bad_cast(); + if ( v15[28] ) + { + v14 = (char)v15[61]; + v9 = v15[61]; + } + else + { + std::ctype::_M_widen_init((int)v15); + v14 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); + v14 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int))(*(_DWORD *)v4 + 12))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v14, + a2); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 48C971: variable 'v13' is possibly undefined +// 48C9DD: variable 'v5' is possibly undefined +// 48C960: using guessed type char var_20[4]; + +//----- (0048CB50) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + char v9; // cl + int v10; // eax + int (__stdcall *v11)(unsigned __int8); // eax + char v12; // al + std::ostream *v13; // [esp+4h] [ebp-54h] + int v14; // [esp+28h] [ebp-30h] + _BYTE *v15; // [esp+2Ch] [ebp-2Ch] + char v16[4]; // [esp+38h] [ebp-20h] BYREF + _DWORD *v17; // [esp+3Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v16, this, v13); + if ( v16[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[117] ) + { + v14 = v3[116]; + } + else + { + v15 = (_BYTE *)*((_DWORD *)v3 + 31); + if ( !v15 ) + std::__throw_bad_cast(); + if ( v15[28] ) + { + v14 = (char)v15[61]; + v9 = v15[61]; + } + else + { + std::ctype::_M_widen_init((int)v15); + v14 = 32; + v9 = 32; + v11 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v15 + 24); + if ( v11 != std::ctype::do_widen ) + { + v12 = ((int (__thiscall *)(_BYTE *, int))v11)(v15, 32); + v14 = v12; + v9 = v12; + } + } + v3[116] = v9; + v10 = *(_DWORD *)this; + v3[117] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int))(*(_DWORD *)v4 + 16))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v14, + a2); + if ( v5 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v6 = (char *)v17 + *(_DWORD *)(*v17 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12)), + *(_DWORD *)((char *)v17 + *(_DWORD *)(*v17 - 12) + 20) | 1); + } + } + return this; +} +// 48CB61: variable 'v13' is possibly undefined +// 48CBCD: variable 'v5' is possibly undefined +// 48CB50: using guessed type char var_20[4]; + +//----- (0048CD40) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert(std::ostream::sentry *this, int a2, int a3) +{ + char *v4; // esi + int v5; // edi + char v6; // dl + char *v7; // esi + int v8; // ecx + char v10; // cl + int v11; // eax + int (__stdcall *v12)(unsigned __int8); // eax + char v13; // al + std::ostream *v14; // [esp+4h] [ebp-64h] + int v15; // [esp+38h] [ebp-30h] + _BYTE *v16; // [esp+3Ch] [ebp-2Ch] + char v17[4]; // [esp+48h] [ebp-20h] BYREF + _DWORD *v18; // [esp+4Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v17, this, v14); + if ( v17[0] ) + { + v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v5 = *((_DWORD *)v4 + 32); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v4[117] ) + { + v15 = v4[116]; + } + else + { + v16 = (_BYTE *)*((_DWORD *)v4 + 31); + if ( !v16 ) + std::__throw_bad_cast(); + if ( v16[28] ) + { + v15 = (char)v16[61]; + v10 = v16[61]; + } + else + { + std::ctype::_M_widen_init((int)v16); + v15 = 32; + v10 = 32; + v12 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v16 + 24); + if ( v12 != std::ctype::do_widen ) + { + v13 = ((int (__thiscall *)(_BYTE *, int))v12)(v16, 32); + v15 = v13; + v10 = v13; + } + } + v4[116] = v10; + v11 = *(_DWORD *)this; + v4[117] = 1; + v4 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int, int))(*(_DWORD *)v5 + 20))( + v5, + *((_DWORD *)v4 + 30), + *((_DWORD *)v4 + 30) == 0, + v4, + v15, + a2, + a3); + if ( v6 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v7 = (char *)v18 + *(_DWORD *)(*v18 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), + *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); + } + } + return this; +} +// 48CD5D: variable 'v14' is possibly undefined +// 48CDDA: variable 'v6' is possibly undefined +// 48CD40: using guessed type char var_20[4]; + +//----- (0048CF50) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::_M_insert( + std::ostream::sentry *this, + int a2, + int a3) +{ + char *v4; // esi + int v5; // edi + char v6; // dl + char *v7; // esi + int v8; // ecx + char v10; // cl + int v11; // eax + int (__stdcall *v12)(unsigned __int8); // eax + char v13; // al + std::ostream *v14; // [esp+4h] [ebp-64h] + int v15; // [esp+38h] [ebp-30h] + _BYTE *v16; // [esp+3Ch] [ebp-2Ch] + char v17[4]; // [esp+48h] [ebp-20h] BYREF + _DWORD *v18; // [esp+4Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v17, this, v14); + if ( v17[0] ) + { + v4 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + v5 = *((_DWORD *)v4 + 32); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v4[117] ) + { + v15 = v4[116]; + } + else + { + v16 = (_BYTE *)*((_DWORD *)v4 + 31); + if ( !v16 ) + std::__throw_bad_cast(); + if ( v16[28] ) + { + v15 = (char)v16[61]; + v10 = v16[61]; + } + else + { + std::ctype::_M_widen_init((int)v16); + v15 = 32; + v10 = 32; + v12 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v16 + 24); + if ( v12 != std::ctype::do_widen ) + { + v13 = ((int (__thiscall *)(_BYTE *, int))v12)(v16, 32); + v15 = v13; + v10 = v13; + } + } + v4[116] = v10; + v11 = *(_DWORD *)this; + v4[117] = 1; + v4 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, int, int, int))(*(_DWORD *)v5 + 24))( + v5, + *((_DWORD *)v4 + 30), + *((_DWORD *)v4 + 30) == 0, + v4, + v15, + a2, + a3); + if ( v6 ) + std::ios::clear( + (std::ostream::sentry *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 20) | 1); + } + v7 = (char *)v18 + *(_DWORD *)(*v18 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12)), + *(_DWORD *)((char *)v18 + *(_DWORD *)(*v18 - 12) + 20) | 1); + } + } + return this; +} +// 48CF6D: variable 'v14' is possibly undefined +// 48CFEA: variable 'v6' is possibly undefined +// 48CF50: using guessed type char var_20[4]; + +//----- (0048D160) -------------------------------------------------------- +int __thiscall std::ostream::ostream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + std::ios_base *v5; // esi + int v6; // eax + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-24h] + + v2 = this + 1; + std::ios_base::ios_base(this + 1); + this[29] = 0; + *((_WORD *)this + 60) = 0; + v4 = *a2; + this[31] = 0; + v5 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v4 - 12)); + *this = &off_4F5E58; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[1] = off_4F5E6C; + std::ios_base::_M_move((int)v2, v5, v8); + std::ios::_M_cache_locale(v2, (int)(this + 28)); + v6 = *((_DWORD *)v5 + 28); + this[31] = 0; + *((_DWORD *)v5 + 28) = 0; + this[29] = v6; + result = *((unsigned __int16 *)v5 + 58); + *((_WORD *)this + 60) = result; + return result; +} +// 48D1C1: variable 'v8' is possibly undefined +// 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); +// 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); + +//----- (0048D220) -------------------------------------------------------- +BOOL __thiscall std::ostream::ostream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 1); + std::ios_base::ios_base(this + 1); + this[29] = 0; + *((_WORD *)this + 60) = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + *this = &off_4F5E58; + this[1] = off_4F5E6C; + return std::ios::init(v2, a2); +} +// 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); +// 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); + +//----- (0048D2B0) -------------------------------------------------------- +int __userpurge std::ostream::ostream@(int a1@, std::ostream *this, std::iostream *a3) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)(a1 + 4)); + result = 0; + *(_DWORD *)(a1 + 116) = 0; + *(_WORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)a1 = &off_4F5E58; + *(_DWORD *)(a1 + 4) = off_4F5E6C; + return result; +} +// 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); +// 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); + +//----- (0048D310) -------------------------------------------------------- +BOOL __fastcall std::ostream::ostream(int a1) +{ + int v1; // esi + + v1 = a1 + 4; + std::ios_base::ios_base((_DWORD *)(a1 + 4)); + *(_DWORD *)(a1 + 116) = 0; + *(_WORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)a1 = &off_4F5E58; + *(_DWORD *)(a1 + 4) = off_4F5E6C; + return std::ios::init(v1, 0); +} +// 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); +// 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); + +//----- (0048D3A0) -------------------------------------------------------- +int __thiscall std::ostream::ostream(int *this, int *a2, _DWORD *a3) +{ + int v3; // edx + int v4; // eax + _DWORD *v5; // ecx + _DWORD *v6; // ebx + std::ios_base *v7; // esi + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-18h] + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); + *v5 = v4; + v6 = v5; + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move((int)v5, v7, v10); + std::ios::_M_cache_locale(v6, (int)(v6 + 27)); + v8 = *((_DWORD *)v7 + 28); + *((_DWORD *)v7 + 28) = 0; + v6[28] = v8; + *((_BYTE *)v6 + 116) = *((_BYTE *)v7 + 116); + result = *((unsigned __int8 *)v7 + 117); + v6[30] = 0; + *((_BYTE *)v6 + 117) = result; + return result; +} +// 48D3C3: variable 'v10' is possibly undefined + +//----- (0048D410) -------------------------------------------------------- +BOOL __thiscall std::ostream::ostream(int *this, int *a2, int a3) +{ + int v3; // edx + int v4; // eax + _DWORD *v5; // ecx + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); + *v5 = v4; + return std::ios::init((int)v5, a3); +} + +//----- (0048D440) -------------------------------------------------------- +int __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this, std::iostream *a3) +{ + int v3; // eax + int v4; // edx + int result; // eax + + v3 = *(_DWORD *)this; + v4 = *((_DWORD *)this + 1); + *ecx0 = *(_DWORD *)this; + result = *(_DWORD *)(v3 - 12); + *(_DWORD *)((char *)ecx0 + result) = v4; + return result; +} + +//----- (0048D460) -------------------------------------------------------- +BOOL __thiscall std::ostream::ostream(_DWORD *ecx0, std::ostream *this) +{ + int v2; // edx + int v3; // eax + _DWORD *v4; // ecx + + v2 = *(_DWORD *)this; + v3 = *((_DWORD *)this + 1); + *ecx0 = *(_DWORD *)this; + v4 = (_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)); + *v4 = v3; + return std::ios::init((int)v4, 0); +} + +//----- (0048D480) -------------------------------------------------------- +void __fastcall std::ostream::~ostream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 1; + *(v2 - 1) = &off_4F5E58; + *v2 = &off_4F6E10; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (0048D4B0) -------------------------------------------------------- +void __fastcall std::ostream::~ostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_4F5E58; + v1 = a1 + 1; + *v1 = &off_4F6E10; + std::ios_base::~ios_base((int)v1); +} +// 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (0048D4D0) -------------------------------------------------------- +void __thiscall std::ostream::~ostream(_DWORD *ecx0, std::ostream *this) +{ + int v2; // eax + + v2 = *(_DWORD *)this; + *ecx0 = *(_DWORD *)this; + *(_DWORD *)((char *)ecx0 + *(_DWORD *)(v2 - 12)) = *((_DWORD *)this + 1); +} + +//----- (0048D4F0) -------------------------------------------------------- +_DWORD *__thiscall std::ostream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + _DWORD *result; // eax + std::ios_base *v9; // [esp+4h] [ebp-18h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + result = this; + *((_BYTE *)v4 + 117) = v7; + return result; +} +// 48D50D: variable 'v9' is possibly undefined + +//----- (0048D570) -------------------------------------------------------- +int __thiscall std::ostream::operator<<(void *this, int (__cdecl *a2)(void *)) +{ + return a2(this); +} + +//----- (0048D580) -------------------------------------------------------- +char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (0048D5A0) -------------------------------------------------------- +char *__thiscall std::ostream::operator<<(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (0048D5D0) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, _DWORD *a2) +{ + char *v3; // ecx + int v4; // eax + char *v5; // esi + int v6; // ecx + std::ostream *v8; // [esp+4h] [ebp-24h] + char v9; // [esp+17h] [ebp-11h] BYREF + char v10[4]; // [esp+18h] [ebp-10h] BYREF + _DWORD *v11; // [esp+1Ch] [ebp-Ch] + + std::ostream::sentry::sentry((int)v10, this, v8); + if ( v10[0] ) + { + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + if ( !a2 ) + { + v4 = 1; + goto LABEL_13; + } + if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v3 + 30), &v9) ) + { + v4 = 4; + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); +LABEL_13: + std::ios::clear(v3, *((_DWORD *)v3 + 5) | v4); + } + } + else if ( !a2 ) + { + v4 = 1; + v3 = (char *)this + *(_DWORD *)(*(_DWORD *)this - 12); + goto LABEL_13; + } + v5 = (char *)v11 + *(_DWORD *)(*v11 - 12); + if ( (v5[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v6 = *((_DWORD *)v5 + 30); + if ( v6 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12)), + *(_DWORD *)((char *)v11 + *(_DWORD *)(*v11 - 12) + 20) | 1); + } + } + return this; +} +// 48D5E3: variable 'v8' is possibly undefined +// 48D5D0: using guessed type char var_10[4]; + +//----- (0048D720) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int8 a2) +{ + return std::ostream::_M_insert(this, a2); +} + +//----- (0048D750) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, float a2) +{ + return std::ostream::_M_insert(this, a2); +} + +//----- (0048D7B0) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) +{ + int v2; // eax + + v2 = *(_DWORD *)((_BYTE *)this + *(_DWORD *)(*(_DWORD *)this - 12) + 12) & 0x4A; + if ( v2 == 64 || v2 == 8 ) + return std::ostream::_M_insert(this, a2); + else + return std::ostream::_M_insert(this, (__int16)a2); +} + +//----- (0048D7F0) -------------------------------------------------------- +std::ostream::sentry *__thiscall std::ostream::operator<<(std::ostream::sentry *this, unsigned __int16 a2) +{ + return std::ostream::_M_insert(this, a2); +} + +//----- (0048D820) -------------------------------------------------------- +char *__cdecl std::string::_S_compare(std::string *this, unsigned int a2) +{ + return (char *)this - a2; +} + +//----- (0048D830) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (0048D840) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (0048D850) -------------------------------------------------------- +volatile signed __int32 *__fastcall std::string::_M_leak_hard(volatile signed __int32 **a1) +{ + volatile signed __int32 *result; // eax + unsigned int v3; // [esp+Ch] [ebp-10h] + + result = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( *((int *)result - 1) > 0 ) + { + std::string::_M_mutate(a1, 0, 0, 0, v3); + result = *a1; + *((_DWORD *)*a1 - 1) = -1; + } + else + { + result = *a1; + *((_DWORD *)*a1 - 1) = -1; + } + } + return result; +} +// 48D88F: variable 'v3' is possibly undefined + +//----- (0048D8B0) -------------------------------------------------------- +unsigned int *__cdecl std::string::_S_construct(unsigned int a1, char a2) +{ + if ( a1 ) + return std::string::_S_construct(a1, a2); + else + return (unsigned int *)&unk_4E93FC; +} + +//----- (0048D8E0) -------------------------------------------------------- +unsigned int *__usercall std::string::_S_construct@(unsigned int a1@, char a2@
) +{ + unsigned int *v4; // esi + unsigned int *result; // eax + + v4 = std::string::_Rep::_S_create(a1, 0); + if ( a1 == 1 ) + { + *((_BYTE *)v4 + 12) = a2; + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v4 + 3; + } + else + { + memset(v4 + 3, a2, a1); + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v4 + 3; + } + v4[2] = 0; + result = v4 + 3; + *v4 = a1; + *((_BYTE *)v4 + a1 + 12) = 0; + return result; +} + +//----- (0048D960) -------------------------------------------------------- +void *__cdecl std::string::_S_construct<__gnu_cxx::__normal_iterator>(_BYTE *Src, _BYTE *a2) +{ + void *v2; // edi + size_t Size; // ebp + unsigned int *v4; // eax + unsigned int *v5; // esi + + v2 = &unk_4E93FC; + if ( a2 != Src ) + { + Size = a2 - Src; + v4 = std::string::_Rep::_S_create(a2 - Src, 0); + v5 = v4; + v2 = v4 + 3; + if ( a2 - Src == 1 ) + *((_BYTE *)v4 + 12) = *Src; + else + memcpy(v4 + 3, Src, Size); + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + v5[2] = 0; + *v5 = Size; + *((_BYTE *)v5 + Size + 12) = 0; + } + } + return v2; +} + +//----- (0048D9E0) -------------------------------------------------------- +_DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2) +{ + if ( a1 == (_BYTE *)a2 ) + return &unk_4E93FC; + if ( !a1 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); + return std::string::_S_construct(a1, a2); +} + +//----- (0048DA20) -------------------------------------------------------- +_DWORD *__cdecl std::string::_S_construct(_BYTE *a1, int a2) +{ + if ( a1 == (_BYTE *)a2 ) + return &unk_4E93FC; + if ( !a1 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_S_construct null not valid"); + return std::string::_S_construct(a1, a2); +} + +//----- (0048DA60) -------------------------------------------------------- +_DWORD *__usercall std::string::_S_construct@(_BYTE *a1@, int a2@) +{ + size_t Size; // ebx + unsigned int *v4; // eax + unsigned int *v5; // esi + _DWORD *v6; // ebp + _DWORD *result; // eax + + Size = a2 - (_DWORD)a1; + v4 = std::string::_Rep::_S_create(a2 - (_DWORD)a1, 0); + v5 = v4; + v6 = v4 + 3; + if ( Size == 1 ) + { + *((_BYTE *)v4 + 12) = *a1; + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v6; + } + else + { + memcpy(v4 + 3, a1, Size); + if ( v5 == &std::string::_Rep::_S_empty_rep_storage ) + return v6; + } + v5[2] = 0; + result = v6; + *v5 = Size; + *((_BYTE *)v5 + Size + 12) = 0; + return result; +} + +//----- (0048DAE0) -------------------------------------------------------- +unsigned int *std::string::_S_empty_rep() +{ + return &std::string::_Rep::_S_empty_rep_storage; +} + +//----- (0048DAF0) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (0048DB30) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (0048DB70) -------------------------------------------------------- +size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size) +{ + size_t result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = (unsigned __int8)*a2; + *(_BYTE *)this = result; + } + else if ( result ) + { + return (size_t)memcpy(this, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (0048DBB0) -------------------------------------------------------- +size_t __cdecl std::string::_S_copy_chars(std::string *this, char *a2, size_t Size) +{ + size_t result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = (unsigned __int8)*a2; + *(_BYTE *)this = result; + } + else if ( result ) + { + return (size_t)memcpy(this, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (0048DBF0) -------------------------------------------------------- +unsigned int *__fastcall std::string::shrink_to_fit(unsigned int **a1) +{ + unsigned int *result; // eax + unsigned int v2; // [esp+4h] [ebp-18h] + + result = *a1; + if ( *(*a1 - 3) < *(*a1 - 2) ) + return std::string::reserve(a1, 0, v2); + return result; +} +// 48DBF0: could not find valid save-restore pair for ebp +// 48DC0D: variable 'v2' is possibly undefined + +//----- (0048DC30) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::_M_replace_aux@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + size_t Size, + char a5, + char a6) +{ + _BYTE *v7; // edi + unsigned int v9; // [esp+Ch] [ebp-20h] + + if ( Size > a3 + 1073741820 - *((_DWORD *)*a1 - 3) ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); + std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); + if ( !Size ) + return a1; + v7 = (char *)this + (_DWORD)*a1; + if ( Size != 1 ) + { + memset(v7, a5, Size); + return a1; + } + *v7 = a5; + return a1; +} +// 48DC65: variable 'v9' is possibly undefined + +//----- (0048DCC0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::_M_replace_safe@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + _BYTE *Src, + size_t Size, + unsigned int a6) +{ + _BYTE *v7; // edi + unsigned int v9; // [esp+Ch] [ebp-10h] + + std::string::_M_mutate(a1, (size_t)this, a3, Size, v9); + if ( !Size ) + return a1; + v7 = (char *)this + (_DWORD)*a1; + if ( Size != 1 ) + { + memcpy(v7, Src, Size); + return a1; + } + *v7 = *Src; + return a1; +} +// 48DCDF: variable 'v9' is possibly undefined + +//----- (0048DD30) -------------------------------------------------------- +unsigned int *__cdecl std::string::_S_construct_aux_2(unsigned int a1, char a2) +{ + if ( a1 ) + return std::string::_S_construct(a1, a2); + else + return (unsigned int *)&unk_4E93FC; +} + +//----- (0048DD60) -------------------------------------------------------- +char *__userpurge std::string::at@(volatile signed __int32 **a1@, std::string *this, unsigned int a3) +{ + volatile signed __int32 *v3; // eax + + v3 = *a1; + if ( (unsigned int)this >= *((_DWORD *)*a1 - 3) ) + std::__throw_out_of_range_fmt( + "basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", + (size_t)this, + *((_DWORD *)*a1 - 3)); + if ( *((int *)v3 - 1) >= 0 ) + { + std::string::_M_leak_hard(a1); + v3 = *a1; + } + return (char *)v3 + (_DWORD)this; +} + +//----- (0048DDA0) -------------------------------------------------------- +int __fastcall std::string::end(volatile signed __int32 **a1) +{ + if ( *((int *)*a1 - 1) < 0 ) + return (int)*a1 + *((_DWORD *)*a1 - 3); + std::string::_M_leak_hard(a1); + return (int)*a1 + *((_DWORD *)*a1 - 3); +} + +//----- (0048DDD0) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_destroy(void *this, int a2) +{ + operator delete(this); +} + +//----- (0048DDF0) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( this != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)this); + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048DE40) -------------------------------------------------------- +void __fastcall std::string::_Rep::_M_dispose(volatile signed __int32 *a1) +{ + int v1; // eax + + if ( !_CRT_MT ) + { + v1 = *((_DWORD *)a1 + 2); + *((_DWORD *)a1 + 2) = v1 - 1; + if ( v1 > 0 ) + return; +LABEL_5: + operator delete((void *)a1); + return; + } + if ( _InterlockedExchangeAdd(a1 + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048DE80) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( !_CRT_MT ) + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + if ( v2 > 0 ) + return; +LABEL_5: + std::string::_Rep::_M_destroy((void *)this, a2); + return; + } + if ( _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048DEC0) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( !_CRT_MT ) + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + if ( v2 > 0 ) + return; +LABEL_5: + std::string::_Rep::_M_destroy((void *)this, a2); + return; + } + if ( _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF) <= 0 ) + goto LABEL_5; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048DF00) -------------------------------------------------------- +int __fastcall std::string::_Rep::_M_refcopy(int a1) +{ + if ( (unsigned int *)a1 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(a1 + 8), 1u); + else + ++*(_DWORD *)(a1 + 8); + } + return a1 + 12; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048DF30) -------------------------------------------------------- +int __fastcall std::string::_Rep::_M_refdata(int a1) +{ + return a1 + 12; +} + +//----- (0048DF40) -------------------------------------------------------- +unsigned int *std::string::_Rep::_S_empty_rep() +{ + return &std::string::_Rep::_S_empty_rep_storage; +} + +//----- (0048DF50) -------------------------------------------------------- +void __fastcall std::string::_Rep::_M_set_leaked(int a1) +{ + *(_DWORD *)(a1 + 8) = -1; +} + +//----- (0048DF60) -------------------------------------------------------- +void __fastcall std::string::_Rep::_M_set_sharable(int a1) +{ + *(_DWORD *)(a1 + 8) = 0; +} + +//----- (0048DF70) -------------------------------------------------------- +std::string::_Rep *__userpurge std::string::_Rep::_M_set_length_and_sharable@( + unsigned int *a1@, + std::string::_Rep *this, + unsigned int a3) +{ + std::string::_Rep *result; // eax + + if ( a1 != &std::string::_Rep::_S_empty_rep_storage ) + { + result = this; + a1[2] = 0; + *a1 = (unsigned int)this; + *((_BYTE *)this + (_DWORD)a1 + 12) = 0; + } + return result; +} + +//----- (0048DFA0) -------------------------------------------------------- +unsigned int *__thiscall std::string::_Rep::_M_grab(int this, int a2, int a3) +{ + if ( *(int *)(this + 8) < 0 ) + return std::string::_Rep::_M_clone(this, a2, 0); + if ( (unsigned int *)this != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(this + 8), 1u); + else + ++*(_DWORD *)(this + 8); + } + return (unsigned int *)(this + 12); +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048DFF0) -------------------------------------------------------- +unsigned int *__thiscall std::string::_Rep::_M_clone(int this, int a2, int a3) +{ + unsigned int *v4; // esi + size_t v5; // eax + + v4 = std::string::_Rep::_S_create(a3 + *(_DWORD *)this, *(_DWORD *)(this + 4)); + v5 = *(_DWORD *)this; + if ( *(_DWORD *)this ) + { + if ( v5 == 1 ) + { + *((_BYTE *)v4 + 12) = *(_BYTE *)(this + 12); + v5 = *(_DWORD *)this; + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v4 + 3; + goto LABEL_7; + } + memcpy(v4 + 3, (const void *)(this + 12), *(_DWORD *)this); + v5 = *(_DWORD *)this; + } + if ( v4 == &std::string::_Rep::_S_empty_rep_storage ) + return v4 + 3; +LABEL_7: + *v4 = v5; + v4[2] = 0; + *((_BYTE *)v4 + v5 + 12) = 0; + return v4 + 3; +} + +//----- (0048E080) -------------------------------------------------------- +_DWORD *__cdecl std::string::_Rep::_S_create(unsigned int a1, unsigned int a2) +{ + unsigned int v2; // ebx + struct type_info *v3; // eax + _DWORD *result; // eax + void (__cdecl *v5)(void *); // [esp+4h] [ebp-18h] + + v2 = a1; + if ( a1 > 0x3FFFFFFC ) + std::__throw_length_error((std::length_error *)"basic_string::_S_create"); + if ( a1 <= a2 ) + goto LABEL_9; + if ( a1 < 2 * a2 ) + v2 = 2 * a2; + if ( v2 + 29 > 0x1000 && v2 > a2 ) + { + v2 = v2 + 4096 - (((_WORD)v2 + 29) & 0xFFF); + if ( v2 > 0x3FFFFFFC ) + v2 = 1073741820; +LABEL_9: + v3 = (struct type_info *)(v2 + 13); + goto LABEL_10; + } + v3 = (struct type_info *)(v2 + 13); + if ( (int)(v2 + 13) < 0 ) + std::__throw_bad_alloc(); +LABEL_10: + result = operator new(v3, v5); + result[1] = v2; + result[2] = 0; + return result; +} +// 48E0D1: variable 'v5' is possibly undefined + +//----- (0048E100) -------------------------------------------------------- +char *__fastcall std::string::back(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // esi + + v1 = *a1; + v2 = *((_DWORD *)*a1 - 3) - 1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::string::_M_leak_hard(a1); + v1 = *a1; + } + return (char *)v1 + v2; +} + +//----- (0048E130) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::rend(volatile signed __int32 **ecx0, volatile signed __int32 **this) +{ + volatile signed __int32 **result; // eax + volatile signed __int32 *v3; // edx + + result = ecx0; + v3 = *this; + if ( *((int *)*this - 1) >= 0 ) + { + std::string::_M_leak_hard(this); + v3 = *this; + result = ecx0; + } + *result = v3; + return result; +} + +//----- (0048E160) -------------------------------------------------------- +int __userpurge std::string::swap@(int *a1@, std::string *this, std::string *a3) +{ + int result; // eax + int v4; // edx + + result = *a1; + if ( *(int *)(*a1 - 4) < 0 ) + *(_DWORD *)(result - 4) = 0; + v4 = *(_DWORD *)this; + if ( *(int *)(*(_DWORD *)this - 4) < 0 ) + *(_DWORD *)(v4 - 4) = 0; + *a1 = v4; + *(_DWORD *)this = result; + return result; +} + +//----- (0048E190) -------------------------------------------------------- +volatile signed __int32 *__fastcall std::string::begin(volatile signed __int32 **a1) +{ + volatile signed __int32 *result; // eax + + result = *a1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::string::_M_leak_hard(a1); + return *a1; + } + return result; +} + +//----- (0048E1C0) -------------------------------------------------------- +void __fastcall std::string::clear(void **a1) +{ + _DWORD *v1; // eax + int v2; // ebx + void **v3; // [esp+1Ch] [ebp-10h] + + v1 = *a1; + if ( *((int *)*a1 - 1) <= 0 ) + { + if ( v1 != (_DWORD *)&unk_4E93FC ) + { + *(v1 - 1) = 0; + *(v1 - 3) = 0; + *(_BYTE *)v1 = 0; + } + } + else if ( v1 == (_DWORD *)&unk_4E93FC ) + { + *a1 = &unk_4E93FC; + } + else + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *(v1 - 1); + *(v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + { + v3 = a1; + operator delete(v1 - 3); + a1 = v3; + } + *a1 = &unk_4E93FC; + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048E260) -------------------------------------------------------- +char *__thiscall std::string::erase(volatile signed __int32 **this, int a2) +{ + size_t v3; // esi + volatile signed __int32 *v4; // eax + unsigned int v6; // [esp+Ch] [ebp-10h] + + v3 = a2 - (_DWORD)*this; + std::string::_M_mutate(this, v3, 1u, 0, v6); + v4 = *this; + *((_DWORD *)v4 - 1) = -1; + return (char *)v4 + v3; +} +// 48E282: variable 'v6' is possibly undefined + +//----- (0048E2A0) -------------------------------------------------------- +char *__thiscall std::string::erase(volatile signed __int32 **this, char *a2, char *a3) +{ + char *result; // eax + size_t v5; // ebx + volatile signed __int32 *v6; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + result = a2; + if ( a3 != a2 ) + { + v5 = a2 - (char *)*this; + std::string::_M_mutate(this, v5, a3 - a2, 0, v7); + v6 = *this; + *((_DWORD *)v6 - 1) = -1; + return (char *)v6 + v5; + } + return result; +} +// 48E2D5: variable 'v7' is possibly undefined + +//----- (0048E2F0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::erase@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + unsigned int a4) +{ + unsigned int v5; // ecx + unsigned int v6; // edx + unsigned int v8; // [esp+Ch] [ebp-10h] + + v5 = *((_DWORD *)*a1 - 3); + v6 = v5 - (_DWORD)this; + if ( v5 - (unsigned int)this > a3 ) + v6 = a3; + if ( (unsigned int)this > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + (size_t)this, + v5); + std::string::_M_mutate(a1, (size_t)this, v6, 0, v8); + return a1; +} +// 48E323: variable 'v8' is possibly undefined + +//----- (0048E360) -------------------------------------------------------- +volatile signed __int32 *__fastcall std::string::front(volatile signed __int32 **a1) +{ + volatile signed __int32 *result; // eax + + result = *a1; + if ( *((int *)*a1 - 1) >= 0 ) + { + std::string::_M_leak_hard(a1); + return *a1; + } + return result; +} + +//----- (0048E390) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const char *a3) +{ + size_t v4; // eax + unsigned int v6; // [esp+8h] [ebp-14h] + + v4 = strlen((const char *)this); + return std::string::append(a1, this, v4, v6); +} +// 48E3AC: variable 'v6' is possibly undefined + +//----- (0048E3C0) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@( + unsigned int **a1@, + std::string *this, + size_t Size, + unsigned int a4) +{ + std::string *v5; // ebp + unsigned int *v6; // eax + int v7; // edi + std::string *v8; // edi + _BYTE *v9; // eax + unsigned int *v10; // eax + char *v12; // ebp + bool v13; // cc + void *Src; // [esp+4h] [ebp-28h] + + v5 = this; + if ( !Size ) + return a1; + v6 = *a1; + v7 = *(*a1 - 3); + if ( Size > 1073741820 - v7 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + v8 = (std::string *)(Size + v7); + if ( (unsigned int)v8 > *(v6 - 2) || (v13 = (int)*(v6 - 1) <= 0, v6 = *a1, !v13) ) + { + if ( v6 <= (unsigned int *)this && this <= (std::string *)((char *)v6 + *(v6 - 3)) ) + { + v12 = (char *)(this - (std::string *)v6); + std::string::reserve(a1, v8, (unsigned int)Src); + v5 = (std::string *)&v12[(_DWORD)*a1]; + v9 = (char *)*a1 + *(*a1 - 3); + if ( Size != 1 ) + goto LABEL_8; + goto LABEL_13; + } + std::string::reserve(a1, v8, (unsigned int)Src); + v6 = *a1; + } + v9 = (char *)v6 + *(v6 - 3); + if ( Size != 1 ) + { +LABEL_8: + memcpy(v9, v5, Size); + goto LABEL_9; + } +LABEL_13: + *v9 = *(_BYTE *)v5; +LABEL_9: + v10 = *a1; + if ( *a1 != (unsigned int *)&unk_4E93FC ) + { + *(v10 - 1) = 0; + *(v10 - 3) = (unsigned int)v8; + *((_BYTE *)v8 + (_DWORD)v10) = 0; + } + return a1; +} +// 48E402: variable 'Src' is possibly undefined + +//----- (0048E4A0) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, const std::string *a3) +{ + size_t Size; // esi + size_t v5; // edi + _BYTE *v6; // edx + _BYTE *v7; // eax + unsigned int *v8; // eax + void *Src; // [esp+4h] [ebp-28h] + + Size = *(_DWORD *)(*(_DWORD *)this - 12); + if ( !Size ) + return a1; + v5 = Size + *(*a1 - 3); + if ( v5 <= *(*a1 - 2) && (int)*(*a1 - 1) <= 0 ) + { + v6 = *(_BYTE **)this; + v7 = (char *)*a1 + *(*a1 - 3); + if ( Size == 1 ) + goto LABEL_10; +LABEL_4: + memcpy(v7, v6, Size); + goto LABEL_5; + } + std::string::reserve(a1, (std::string *)(Size + *(*a1 - 3)), (unsigned int)Src); + v6 = *(_BYTE **)this; + v7 = (char *)*a1 + *(*a1 - 3); + if ( Size != 1 ) + goto LABEL_4; +LABEL_10: + *v7 = *v6; +LABEL_5: + v8 = *a1; + if ( *a1 != (unsigned int *)&unk_4E93FC ) + { + *(v8 - 1) = 0; + *(v8 - 3) = v5; + *((_BYTE *)v8 + v5) = 0; + } + return a1; +} +// 48E4C8: variable 'Src' is possibly undefined + +//----- (0048E540) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@( + unsigned int **a1@, + std::string *this, + const std::string *a3, + unsigned int a4, + unsigned int a5) +{ + std::string *v6; // eax + unsigned int v7; // ebx + size_t Size; // ebx + size_t v9; // ebp + _BYTE *v10; // edi + _BYTE *v11; // edx + unsigned int *v12; // eax + void *Src; // [esp+4h] [ebp-28h] + + v6 = this; + v7 = *(_DWORD *)(*(_DWORD *)this - 12); + if ( (unsigned int)a3 > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::append", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + Size = v7 - (_DWORD)a3; + if ( Size > a4 ) + { + Size = a4; + if ( !a4 ) + return a1; + } + else if ( !Size ) + { + return a1; + } + v9 = Size + *(*a1 - 3); + if ( *(*a1 - 2) < v9 || (int)*(*a1 - 1) > 0 ) + { + std::string::reserve(a1, (std::string *)(Size + *(*a1 - 3)), (unsigned int)Src); + v6 = this; + } + v10 = (char *)a3 + *(_DWORD *)v6; + v11 = (char *)*a1 + *(*a1 - 3); + if ( Size == 1 ) + *v11 = *v10; + else + memcpy(v11, v10, Size); + v12 = *a1; + if ( *a1 != (unsigned int *)&unk_4E93FC ) + { + *(v12 - 1) = 0; + *(v12 - 3) = v9; + *((_BYTE *)v12 + v9) = 0; + } + return a1; +} +// 48E588: variable 'Src' is possibly undefined + +//----- (0048E620) -------------------------------------------------------- +unsigned int **__userpurge std::string::append@(unsigned int **a1@, std::string *this, char a3, char a4) +{ + if ( this ) + std::string::append(a1, (size_t)this, a3); + return a1; +} + +//----- (0048E650) -------------------------------------------------------- +unsigned int *__thiscall std::string::append(unsigned int **this, size_t Size, char a3) +{ + unsigned int *v3; // edx + int v4; // esi + std::string *v6; // esi + _BYTE *v7; // eax + unsigned int *result; // eax + int Val; // [esp+4h] [ebp-28h] + + v3 = *this; + v4 = *(*this - 3); + if ( 1073741820 - v4 < Size ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + v6 = (std::string *)(Size + v4); + if ( (unsigned int)v6 <= *(v3 - 2) && (int)*(v3 - 1) <= 0 ) + { + v7 = (char *)*this + *(*this - 3); + if ( Size == 1 ) + goto LABEL_10; +LABEL_4: + memset(v7, a3, Size); + goto LABEL_5; + } + std::string::reserve(this, v6, Val); + v7 = (char *)*this + *(*this - 3); + if ( Size != 1 ) + goto LABEL_4; +LABEL_10: + *v7 = a3; +LABEL_5: + result = *this; + if ( *this != (unsigned int *)&unk_4E93FC ) + { + *(result - 1) = 0; + *(result - 3) = (unsigned int)v6; + *((_BYTE *)v6 + (_DWORD)result) = 0; + } + return result; +} +// 48E681: variable 'Val' is possibly undefined + +//----- (0048E700) -------------------------------------------------------- +#error "48E70A: call analysis failed (funcsize=8)" + +//----- (0048E720) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::assign@( + volatile signed __int32 **a1@, + std::string *this, + const char *a3) +{ + size_t v4; // eax + unsigned int v6; // [esp+8h] [ebp-14h] + + v4 = strlen((const char *)this); + return std::string::assign(a1, this, v4, v6); +} +// 48E73C: variable 'v6' is possibly undefined + +//----- (0048E750) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::assign@( + volatile signed __int32 **a1@, + std::string *this, + size_t Size, + unsigned int a4) +{ + volatile signed __int32 *v4; // eax + unsigned int v5; // ebx + volatile signed __int32 **result; // eax + volatile signed __int32 *v7; // ebx + char *v8; // eax + unsigned int v9; // [esp+10h] [ebp-1Ch] + volatile signed __int32 **v10; // [esp+1Ch] [ebp-10h] + volatile signed __int32 **v11; // [esp+1Ch] [ebp-10h] + + v4 = *a1; + v5 = *((_DWORD *)*a1 - 3); + if ( Size > 0x3FFFFFFC ) + std::__throw_length_error((std::length_error *)"basic_string::assign"); + if ( v4 > (volatile signed __int32 *)this || (char *)v4 + v5 < (char *)this ) + return std::string::_M_replace_safe(a1, 0, v5, this, Size, v9); + if ( *((int *)v4 - 1) > 0 ) + { + v5 = *((_DWORD *)*a1 - 3); + return std::string::_M_replace_safe(a1, 0, v5, this, Size, v9); + } + v7 = *a1; + v8 = (char *)(this - (std::string *)*a1); + if ( Size <= (unsigned int)v8 ) + { + if ( Size != 1 ) + { + if ( Size ) + { + v11 = a1; + memcpy((void *)*a1, this, Size); + a1 = v11; + v7 = *v11; + } + goto LABEL_12; + } + } + else + { + if ( !v8 ) + goto LABEL_12; + if ( Size != 1 ) + { + v10 = a1; + memmove((void *)*a1, this, Size); + a1 = v10; + v7 = *v10; + goto LABEL_12; + } + } + *(_BYTE *)v7 = *(_BYTE *)this; + v7 = *a1; +LABEL_12: + result = a1; + if ( v7 != (volatile signed __int32 *)&unk_4E93FC ) + { + *((_DWORD *)v7 - 1) = 0; + *((_DWORD *)v7 - 3) = Size; + *((_BYTE *)v7 + Size) = 0; + } + return result; +} +// 48E786: variable 'v9' is possibly undefined + +//----- (0048E850) -------------------------------------------------------- +unsigned int **__userpurge std::string::assign@( + unsigned int **a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *v4; // esi + unsigned int *v5; // ecx + volatile signed __int32 *v6; // eax + unsigned int *v7; // edx + int v9; // ecx + char v10[13]; // [esp+1Fh] [ebp-Dh] BYREF + + v4 = *this; + if ( *a1 != *this ) + { + v5 = v4 - 3; + if ( (*(v4 - 1) & 0x80000000) != 0 ) + { + v4 = std::string::_Rep::_M_clone((int)v5, (int)v10, 0); + } + else if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v4 - 1, 1u); + else + ++*(v4 - 1); + } + v6 = (volatile signed __int32 *)*a1; + v7 = *a1 - 3; + if ( *a1 == (unsigned int *)&unk_4E93FC + || (_CRT_MT + ? (v9 = _InterlockedExchangeAdd(v6 - 1, 0xFFFFFFFF)) + : (v9 = *((_DWORD *)v6 - 1), *((_DWORD *)v6 - 1) = v9 - 1), + v9 > 0) ) + { + *a1 = v4; + } + else + { + operator delete(v7); + *a1 = v4; + } + } + return a1; +} +// 15412D0: using guessed type int _CRT_MT; +// 48E850: using guessed type char var_D[13]; + +//----- (0048E910) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::assign@( + volatile signed __int32 **a1@, + std::string *this, + const std::string *a3, + unsigned int a4, + unsigned int a5) +{ + size_t v5; // ebx + unsigned int v7; // [esp+8h] [ebp-14h] + + v5 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; + if ( v5 > a4 ) + v5 = a4; + if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::assign", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + return std::string::assign(a1, (const std::string *)((char *)a3 + *(_DWORD *)this), v5, v7); +} +// 48E93E: variable 'v7' is possibly undefined + +//----- (0048E980) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::assign@( + volatile signed __int32 **a1@, + size_t this, + char a3, + char a4) +{ + char v5; // [esp+10h] [ebp-Ch] + + return std::string::_M_replace_aux(a1, 0, *((_DWORD *)*a1 - 3), this, a3, v5); +} +// 48E9A4: variable 'v5' is possibly undefined + +//----- (0048E9C0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *a2, + volatile signed __int32 *a3, + size_t a4, + unsigned int a5) +{ + return std::string::insert(a1, (std::string *)(a2 - (std::string *)*a1), a3, a4, a5); +} + +//----- (0048E9D0) -------------------------------------------------------- +char *__thiscall std::string::insert(volatile signed __int32 **this, int a2, char a3) +{ + std::string *v4; // esi + volatile signed __int32 *v5; // eax + char v7; // [esp+10h] [ebp-Ch] + + v4 = (std::string *)(a2 - (_DWORD)*this); + std::string::_M_replace_aux(this, v4, 0, 1u, a3, v7); + v5 = *this; + *((_DWORD *)v5 - 1) = -1; + return (char *)v5 + (_DWORD)v4; +} +// 48E9FB: variable 'v7' is possibly undefined + +//----- (0048EA20) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::insert(volatile signed __int32 **this, int a2, size_t a3, char a4) +{ + char v5; // [esp+10h] [ebp-Ch] + + return std::string::_M_replace_aux(this, (std::string *)(a2 - (_DWORD)*this), 0, a3, a4, v5); +} +// 48EA45: variable 'v5' is possibly undefined + +//----- (0048EA60) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + char *Str, + const char *a4) +{ + size_t v5; // eax + unsigned int v7; // [esp+Ch] [ebp-10h] + + v5 = strlen(Str); + return std::string::insert(a1, this, (volatile signed __int32 *)Str, v5, v7); +} +// 48EA84: variable 'v7' is possibly undefined + +//----- (0048EAA0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + volatile signed __int32 *a3, + size_t Size, + unsigned int a5) +{ + volatile signed __int32 *v5; // edx + unsigned int v6; // eax + std::string *v8; // edi + volatile signed __int32 **v9; // ecx + char *Src; // eax + char *v11; // ebp + size_t v12; // esi + char *v13; // ebx + char *v14; // ebp + size_t v15; // eax + unsigned int v16; // [esp+Ch] [ebp-30h] + unsigned int v17; // [esp+10h] [ebp-2Ch] + volatile signed __int32 **v19; // [esp+1Ch] [ebp-20h] + + v5 = *a1; + v6 = *((_DWORD *)*a1 - 3); + if ( (unsigned int)this > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + (size_t)this, + *((_DWORD *)*a1 - 3)); + if ( Size > 1073741820 - v6 ) + std::__throw_length_error((std::length_error *)"basic_string::insert"); + if ( v5 > a3 || a3 > (volatile signed __int32 *)((char *)v5 + v6) || *((int *)v5 - 1) > 0 ) + return std::string::_M_replace_safe(a1, this, 0, a3, Size, v17); + v8 = (std::string *)((char *)a3 - (char *)*a1); + std::string::_M_mutate(a1, (size_t)this, 0, Size, v16); + v9 = a1; + Src = (char *)v8 + (_DWORD)*a1; + v11 = (char *)*a1 + (_DWORD)this; + if ( &Src[Size] > v11 ) + { + if ( Src < v11 ) + { + v12 = this - v8; + if ( this - v8 == 1 ) + { + *v11 = *Src; + } + else if ( v12 ) + { + memcpy(v11, Src, v12); + v9 = a1; + } + v13 = &v11[Size]; + v14 = &v11[v12]; + v15 = Size - v12; + if ( Size - v12 != 1 ) + { + if ( v15 ) + { + v19 = v9; + memcpy(v14, v13, v15); + return v19; + } + return v9; + } + *v14 = *v13; + return v9; + } + else + { + if ( Size != 1 ) + { + if ( Size ) + { + memcpy(v11, &Src[Size], Size); + return a1; + } + return v9; + } + *v11 = Src[1]; + return a1; + } + } + else + { + if ( Size != 1 ) + { + if ( Size ) + { + memcpy(v11, Src, Size); + return a1; + } + return v9; + } + *v11 = *Src; + return a1; + } +} +// 48EAE6: variable 'v17' is possibly undefined +// 48EB22: variable 'v16' is possibly undefined + +//----- (0048EC50) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + volatile signed __int32 **a3, + const std::string *a4) +{ + unsigned int v5; // [esp+Ch] [ebp-10h] + + return std::string::insert(a1, this, *a3, *((_DWORD *)*a3 - 3), v5); +} +// 48EC6B: variable 'v5' is possibly undefined + +//----- (0048EC80) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + _DWORD *a3, + const std::string *a4, + unsigned int a5, + unsigned int a6) +{ + size_t v6; // ebx + unsigned int v8; // [esp+Ch] [ebp-10h] + + v6 = *(_DWORD *)(*a3 - 12) - (_DWORD)a4; + if ( v6 > a5 ) + v6 = a5; + if ( (unsigned int)a4 > *(_DWORD *)(*a3 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + (size_t)a4, + *(_DWORD *)(*a3 - 12)); + return std::string::insert(a1, this, (volatile signed __int32 *)((char *)a4 + *a3), v6, v8); +} +// 48ECB6: variable 'v8' is possibly undefined + +//----- (0048ECF0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::insert@( + volatile signed __int32 **a1@, + std::string *this, + size_t a3, + char a4, + char a5) +{ + char v6; // [esp+10h] [ebp-Ch] + + if ( (unsigned int)this > *((_DWORD *)*a1 - 3) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + (size_t)this, + *((_DWORD *)*a1 - 3)); + return std::string::_M_replace_aux(a1, this, 0, a3, a4, v6); +} +// 48ED1D: variable 'v6' is possibly undefined + +//----- (0048ED50) -------------------------------------------------------- +_DWORD *__thiscall std::string::rbegin(_DWORD *ecx0, volatile signed __int32 **this) +{ + _DWORD *result; // eax + volatile signed __int32 *v3; // edx + + result = ecx0; + v3 = *this; + if ( *((int *)*this - 1) >= 0 ) + { + std::string::_M_leak_hard(this); + v3 = *this; + result = ecx0; + } + *result = (char *)v3 + *((_DWORD *)v3 - 3); + return result; +} + +//----- (0048ED80) -------------------------------------------------------- +void __userpurge std::string::resize(unsigned int **a1@, std::string *this, unsigned int a3) +{ + char v3; // [esp+8h] [ebp-14h] + + std::string::resize(a1, (size_t)this, 0, v3); +} +// 48ED92: variable 'v3' is possibly undefined + +//----- (0048EDA0) -------------------------------------------------------- +void __userpurge std::string::resize(unsigned int **a1@, size_t this, char a3, char a4) +{ + unsigned int v4; // edx + unsigned int v5; // [esp+Ch] [ebp-10h] + + v4 = *(*a1 - 3); + if ( this > 0x3FFFFFFC ) + std::__throw_length_error((std::length_error *)"basic_string::resize"); + if ( this > v4 ) + { + std::string::append(a1, this - v4, a3); + } + else if ( this < v4 ) + { + std::string::_M_mutate((volatile signed __int32 **)a1, this, v4 - this, 0, v5); + } +} +// 48EDF1: variable 'v5' is possibly undefined + +//----- (0048EE10) -------------------------------------------------------- +size_t __cdecl std::string::_M_copy(void *this, const void *Src, size_t Size) +{ + size_t result; // eax + + result = Size; + if ( Size == 1 ) + { + result = *(unsigned __int8 *)Src; + *(_BYTE *)this = result; + } + else if ( Size ) + { + return (size_t)memcpy(this, Src, Size); + } + return result; +} + +//----- (0048EE40) -------------------------------------------------------- +std::string *__userpurge std::string::_M_data@(_DWORD *a1@, std::string *this, char *a3) +{ + std::string *result; // eax + + result = this; + *a1 = this; + return result; +} + +//----- (0048EE50) -------------------------------------------------------- +volatile signed __int32 *__fastcall std::string::_M_leak(volatile signed __int32 **a1) +{ + volatile signed __int32 *result; // eax + + result = (volatile signed __int32 *)*((_DWORD *)*a1 - 1); + if ( (int)result >= 0 ) + return std::string::_M_leak_hard(a1); + return result; +} + +//----- (0048EE70) -------------------------------------------------------- +size_t __cdecl std::string::_M_move(void *this, const void *Src, size_t Size) +{ + size_t result; // eax + + result = Size; + if ( Size == 1 ) + { + result = *(unsigned __int8 *)Src; + *(_BYTE *)this = result; + } + else if ( Size ) + { + return (size_t)memmove(this, Src, Size); + } + return result; +} + +//----- (0048EEA0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); +} + +//----- (0048EEC0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::replace(volatile signed __int32 **this, int a2, int a3, char *Str) +{ + size_t Size; // eax + unsigned int v7; // [esp+10h] [ebp-Ch] + + Size = strlen(Str); + return std::string::replace( + this, + (std::string *)(a2 - (_DWORD)*this), + a3 - a2, + (volatile signed __int32 *)Str, + Size, + v7); +} +// 48EEF1: variable 'v7' is possibly undefined + +//----- (0048EF10) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); +} + +//----- (0048EF30) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t a5, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, a5, a6); +} + +//----- (0048EF50) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::replace( + volatile signed __int32 **this, + int a2, + int a3, + volatile signed __int32 **a4) +{ + unsigned int v5; // [esp+10h] [ebp-Ch] + + return std::string::replace(this, (std::string *)(a2 - (_DWORD)*this), a3 - a2, *a4, *((_DWORD *)*a4 - 3), v5); +} +// 48EF78: variable 'v5' is possibly undefined + +//----- (0048EF90) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); +} + +//----- (0048EFB0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, Size - (_DWORD)a4, a6); +} + +//----- (0048EFD0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + volatile signed __int32 *a4, + size_t a5, + unsigned int a6) +{ + return std::string::replace(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, a5, a6); +} + +//----- (0048EFF0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *a2, + int a3, + size_t a4, + char a5, + char a6) +{ + return std::string::_M_replace_aux(a1, (std::string *)(a2 - (std::string *)*a1), a3 - (_DWORD)a2, a4, a5, a6); +} + +//----- (0048F010) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + char *Str, + const char *a5) +{ + size_t Size; // eax + unsigned int v8; // [esp+10h] [ebp-Ch] + + Size = strlen(Str); + return std::string::replace(a1, this, a3, (volatile signed __int32 *)Str, Size, v8); +} +// 48F03C: variable 'v8' is possibly undefined + +//----- (0048F050) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + volatile signed __int32 *a4, + size_t Size, + unsigned int a6) +{ + volatile signed __int32 *v6; // edi + unsigned int v7; // eax + unsigned int v8; // ebx + volatile signed __int32 **v9; // ecx + volatile signed __int32 *v11; // eax + size_t v12; // edi + _BYTE *v13; // esi + volatile signed __int32 *v14; // edi + int v15; // edx + unsigned int v16; // [esp+Ch] [ebp-3Ch] + unsigned int v17; // [esp+10h] [ebp-38h] + volatile signed __int32 **v20; // [esp+1Ch] [ebp-2Ch] + + v6 = *a1; + v7 = *((_DWORD *)*a1 - 3); + if ( (unsigned int)this > v7 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + (size_t)this, + *((_DWORD *)v6 - 3)); + v8 = v7 - (_DWORD)this; + if ( v7 - (unsigned int)this > a3 ) + v8 = a3; + if ( Size > v8 - v7 + 1073741820 ) + std::__throw_length_error((std::length_error *)"basic_string::replace"); + if ( v6 > a4 || a4 > (volatile signed __int32 *)((char *)v6 + v7) || *((int *)v6 - 1) > 0 ) + return std::string::_M_replace_safe(a1, this, v8, a4, Size, v17); + v11 = *a1; + if ( (std::string *)((unsigned int)a4 + Size) <= (std::string *)((char *)this + (int)*a1) ) + { + v12 = (char *)a4 - (char *)v11; +LABEL_13: + std::string::_M_mutate(a1, (size_t)this, v8, Size, v16); + v9 = a1; + v13 = (char *)this + (_DWORD)*a1; + if ( Size == 1 ) + { + *v13 = *((_BYTE *)*a1 + v12); + } + else if ( Size ) + { + memcpy(v13, (char *)*a1 + v12, Size); + return a1; + } + return v9; + } + if ( a4 >= (volatile signed __int32 *)((char *)v11 + (int)this + v8) ) + { + v12 = Size + (char *)a4 - (char *)v11 - v8; + goto LABEL_13; + } + v14 = std::string::_S_construct(a4, (int)a4 + Size); + v9 = std::string::_M_replace_safe(a1, this, v8, v14, Size, v17); + if ( v14 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v14 - 1); + *((_DWORD *)v14 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + { + v20 = v9; + operator delete((void *)(v14 - 3)); + return v20; + } + } + return v9; +} +// 48F0A7: variable 'v17' is possibly undefined +// 48F10C: variable 'v16' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048F240) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + volatile signed __int32 **a4, + const std::string *a5) +{ + unsigned int v6; // [esp+10h] [ebp-Ch] + + return std::string::replace(a1, this, a3, *a4, *((_DWORD *)*a4 - 3), v6); +} +// 48F263: variable 'v6' is possibly undefined + +//----- (0048F280) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + _DWORD *a4, + const std::string *a5, + unsigned int a6, + unsigned int a7) +{ + size_t Size; // ebx + unsigned int v9; // [esp+10h] [ebp-Ch] + + Size = *(_DWORD *)(*a4 - 12) - (_DWORD)a5; + if ( Size > a6 ) + Size = a6; + if ( (unsigned int)a5 > *(_DWORD *)(*a4 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + (size_t)a5, + *(_DWORD *)(*a4 - 12)); + return std::string::replace(a1, this, a3, (volatile signed __int32 *)((char *)a5 + *a4), Size, v9); +} +// 48F2BE: variable 'v9' is possibly undefined + +//----- (0048F2F0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::string::replace@( + volatile signed __int32 **a1@, + std::string *this, + unsigned int a3, + size_t a4, + char a5, + char a6) +{ + unsigned int v6; // edx + + v6 = *((_DWORD *)*a1 - 3) - (_DWORD)this; + if ( v6 > a3 ) + v6 = a3; + if ( (unsigned int)this > *((_DWORD *)*a1 - 3) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + (size_t)this, + *((_DWORD *)*a1 - 3)); + return std::string::_M_replace_aux(a1, this, v6, a4, a5, a6); +} + +//----- (0048F360) -------------------------------------------------------- +unsigned int *__userpurge std::string::reserve@(unsigned int **a1@, std::string *this, unsigned int a3) +{ + int *v4; // ecx + unsigned int *result; // eax + unsigned int v6; // edx + int v7; // ecx + int *v8; // edx + unsigned int *v9; // ecx + int v10; // esi + unsigned int *v11; // [esp+1Ch] [ebp-20h] + char v12[13]; // [esp+2Fh] [ebp-Dh] BYREF + + v4 = (int *)*a1; + result = (unsigned int *)this; + if ( this == (std::string *)*(v4 - 2) ) + { + if ( *(v4 - 1) <= 0 ) + return result; + v4 = (int *)*a1; + } + v6 = *(v4 - 3); + v7 = (int)(v4 - 3); + if ( (unsigned int)this < v6 ) + result = (unsigned int *)v6; + result = std::string::_Rep::_M_clone(v7, (int)v12, (int)result - v6); + v8 = (int *)*a1; + v9 = *a1 - 3; + if ( *a1 != (unsigned int *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v10 = _InterlockedExchangeAdd(v8 - 1, 0xFFFFFFFF); + } + else + { + v10 = *(v8 - 1); + *(v8 - 1) = v10 - 1; + } + if ( v10 <= 0 ) + { + v11 = result; + operator delete(v9); + result = v11; + } + } + *a1 = result; + return result; +} +// 15412D0: using guessed type int _CRT_MT; +// 48F360: using guessed type char var_D[13]; + +//----- (0048F410) -------------------------------------------------------- +void __fastcall std::string::pop_back(volatile signed __int32 **a1) +{ + unsigned int v1; // eax + unsigned int v2; // [esp+Ch] [ebp-10h] + + v1 = *((_DWORD *)*a1 - 3); + if ( v1 - 1 > v1 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + 0xFFFFFFFF, + 0); + std::string::_M_mutate(a1, v1 - 1, 1u, 0, v2); +} +// 48F432: variable 'v2' is possibly undefined + +//----- (0048F470) -------------------------------------------------------- +char *__cdecl std::string::_M_assign(std::string *this, char *Val, size_t Size) +{ + char *result; // eax + + result = Val; + if ( Val == (char *)1 ) + { + *(_BYTE *)this = Size; + } + else if ( Val ) + { + return (char *)memset(this, (char)Size, (size_t)Val); + } + return result; +} + +//----- (0048F4B0) -------------------------------------------------------- +void __userpurge std::string::_M_mutate( + volatile signed __int32 **a1@, + size_t this, + unsigned int a3, + unsigned int a4, + unsigned int a5) +{ + int v6; // esi + unsigned int v7; // edx + unsigned int v8; // edi + size_t Size; // esi + unsigned int *v10; // eax + int v11; // ecx + unsigned int *v12; // ebp + volatile signed __int32 *v13; // edx + volatile signed __int32 *Src; // eax + volatile signed __int32 *v15; // eax + _BYTE *v16; // eax + _BYTE *v17; // ecx + _BYTE *v18; // edx + int v19; // esi + volatile signed __int32 *v20; // [esp+18h] [ebp-34h] + volatile signed __int32 *v21; // [esp+1Ch] [ebp-30h] + volatile signed __int32 *v22; // [esp+1Ch] [ebp-30h] + + v6 = *((_DWORD *)*a1 - 3); + v7 = *((_DWORD *)*a1 - 2); + v8 = v6 + a4 - a3; + Size = v6 - (a3 + this); + if ( v8 > v7 ) + { +LABEL_4: + v10 = std::string::_Rep::_S_create(v8, v7); + v11 = a3 + this; + v12 = v10; + v13 = (volatile signed __int32 *)(v10 + 3); + if ( this ) + { + Src = *a1; + v13 = (volatile signed __int32 *)(v12 + 3); + if ( this == 1 ) + { + *((_BYTE *)v12 + 12) = *(_BYTE *)Src; + v15 = *a1; + if ( !Size ) + goto LABEL_10; + goto LABEL_8; + } + memcpy(v12 + 3, (const void *)Src, this); + v11 = a3 + this; + v13 = (volatile signed __int32 *)(v12 + 3); + } + v15 = *a1; + if ( !Size ) + goto LABEL_10; +LABEL_8: + v16 = (char *)v15 + v11; + if ( Size == 1 ) + { + *((_BYTE *)v12 + this + a4 + 12) = *v16; + v15 = *a1; + v20 = *a1 - 3; + if ( *a1 == (volatile signed __int32 *)&unk_4E93FC ) + goto LABEL_11; + goto LABEL_20; + } + v21 = v13; + memcpy((char *)v12 + this + a4 + 12, v16, Size); + v15 = *a1; + v13 = v21; +LABEL_10: + v20 = v15 - 3; + if ( v15 == (volatile signed __int32 *)&unk_4E93FC ) + { +LABEL_11: + *a1 = v13; + goto LABEL_12; + } +LABEL_20: + if ( _CRT_MT ) + { + v19 = _InterlockedExchangeAdd(v15 - 1, 0xFFFFFFFF); + } + else + { + v19 = *((_DWORD *)v15 - 1); + *((_DWORD *)v15 - 1) = v19 - 1; + } + if ( v19 <= 0 ) + { + v22 = v13; + operator delete((void *)v20); + v13 = v22; + } + goto LABEL_11; + } + if ( *((int *)*a1 - 1) > 0 ) + { + v7 = *((_DWORD *)*a1 - 2); + goto LABEL_4; + } + v13 = *a1; + if ( Size && a4 != a3 ) + { + v17 = (char *)v13 + a3 + this; + v18 = (char *)v13 + this + a4; + if ( Size == 1 ) + { + *v18 = *v17; + v13 = *a1; + v12 = (unsigned int *)(*a1 - 3); +LABEL_12: + if ( v12 == &std::string::_Rep::_S_empty_rep_storage ) + return; +LABEL_19: + *((_DWORD *)v13 - 1) = 0; + *((_DWORD *)v13 - 3) = v8; + *((_BYTE *)v13 + v8) = 0; + return; + } + memmove(v18, v17, Size); + v13 = *a1; + } + if ( v13 - 3 != (volatile signed __int32 *)&std::string::_Rep::_S_empty_rep_storage ) + goto LABEL_19; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048F6A0) -------------------------------------------------------- +unsigned int *__userpurge std::string::push_back@(unsigned int **a1@, std::string *this, char a3) +{ + int v4; // edi + unsigned int *result; // eax + unsigned int v6; // [esp+4h] [ebp-28h] + + v4 = *(*a1 - 3); + if ( v4 + 1 > *(*a1 - 2) || (int)*(*a1 - 1) > 0 ) + std::string::reserve(a1, (std::string *)(v4 + 1), v6); + *((_BYTE *)*a1 + *(*a1 - 3)) = (_BYTE)this; + result = *a1; + if ( *a1 != (unsigned int *)&unk_4E93FC ) + { + *(result - 1) = 0; + *(result - 3) = v4 + 1; + *((_BYTE *)result + v4 + 1) = 0; + } + return result; +} +// 48F6C6: variable 'v6' is possibly undefined + +//----- (0048F710) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_4E93FC; + return result; +} + +//----- (0048F730) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_4E93FC; + return result; +} + +//----- (0048F750) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3) +{ + int v3; // eax + _DWORD *result; // eax + + v3 = -1; + if ( Str ) + v3 = (int)&Str[strlen(Str)]; + result = std::string::_S_construct(Str, v3); + *this = result; + return result; +} + +//----- (0048F7A0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (0048F7E0) -------------------------------------------------------- +void __thiscall std::string::string(_DWORD *this, int a2) +{ + *this = &unk_4E93FC; +} + +//----- (0048F7F0) -------------------------------------------------------- +unsigned int *__userpurge std::string::string@( + unsigned int **a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + unsigned int *v5; // ecx + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + result = *this; + v5 = *this - 3; + if ( (*(*this - 1) & 0x80000000) != 0 ) + { + result = std::string::_Rep::_M_clone((int)v5, (int)v6, 0); + *a1 = result; + } + else + { + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); + else + ++*(result - 1); + } + *a1 = result; + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; +// 48F7F0: using guessed type char var_D[13]; + +//----- (0048F870) -------------------------------------------------------- +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3) +{ + unsigned int *result; // eax + unsigned int *v5; // ecx + + result = *a2; + v5 = *a2 - 3; + if ( (*(*a2 - 1) & 0x80000000) != 0 ) + { + result = std::string::_Rep::_M_clone((int)v5, a3, 0); + *this = result; + } + else + { + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048F8F0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) +{ + unsigned int v5; // edx + _DWORD *result; // eax + + v5 = *(_DWORD *)(*a2 - 12); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); + *this = result; + return result; +} + +//----- (0048F950) -------------------------------------------------------- +_DWORD *__userpurge std::string::string@( + _DWORD *a1@, + std::string *this, + const std::string *a3, + unsigned int a4, + unsigned int a5) +{ + int v6; // edx + unsigned int v7; // eax + char *v8; // eax + _DWORD *result; // eax + + v6 = *(_DWORD *)this; + v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; + if ( v7 > a4 ) + v7 = a4; + v8 = (char *)a3 + v7 + v6; + if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); + *a1 = result; + return result; +} + +//----- (0048F9C0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) +{ + int v6; // edx + unsigned int v7; // eax + int v8; // eax + _DWORD *result; // eax + + v6 = *a2; + v7 = *(_DWORD *)(*a2 - 12) - a3; + if ( v7 > a4 ) + v7 = a4; + v8 = v6 + a3 + v7; + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); + *this = result; + return result; +} + +//----- (0048FA30) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (0048FA70) -------------------------------------------------------- +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4) +{ + unsigned int *result; // eax + + result = (unsigned int *)&unk_4E93FC; + if ( a2 ) + { + result = std::string::_S_construct(a2, a3); + *this = result; + } + else + { + *this = (unsigned int *)&unk_4E93FC; + } + return result; +} + +//----- (0048FAB0) -------------------------------------------------------- +void __fastcall std::string::string(_DWORD *a1) +{ + *a1 = &unk_4E93FC; +} + +//----- (0048FAC0) -------------------------------------------------------- +void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>( + _DWORD *this, + _BYTE *a2, + _BYTE *a3, + int a4) +{ + void *result; // eax + + result = std::string::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); + *this = result; + return result; +} + +//----- (0048FAF0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (0048FB20) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (0048FB50) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_4E93FC; + return result; +} + +//----- (0048FB70) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, int a3) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_4E93FC; + return result; +} + +//----- (0048FB90) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, char *Str, int a3) +{ + int v3; // eax + _DWORD *result; // eax + + v3 = -1; + if ( Str ) + v3 = (int)&Str[strlen(Str)]; + result = std::string::_S_construct(Str, v3); + *this = result; + return result; +} + +//----- (0048FBE0) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (0048FC20) -------------------------------------------------------- +void __thiscall std::string::string(_DWORD *this, int a2) +{ + *this = &unk_4E93FC; +} + +//----- (0048FC30) -------------------------------------------------------- +unsigned int *__userpurge std::string::string@( + unsigned int **a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + unsigned int *v5; // ecx + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + result = *this; + v5 = *this - 3; + if ( (*(*this - 1) & 0x80000000) != 0 ) + { + result = std::string::_Rep::_M_clone((int)v5, (int)v6, 0); + *a1 = result; + } + else + { + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); + else + ++*(result - 1); + } + *a1 = result; + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; +// 48FC30: using guessed type char var_D[13]; + +//----- (0048FCB0) -------------------------------------------------------- +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int **a2, int a3) +{ + unsigned int *result; // eax + unsigned int *v5; // ecx + + result = *a2; + v5 = *a2 - 3; + if ( (*(*a2 - 1) & 0x80000000) != 0 ) + { + result = std::string::_Rep::_M_clone((int)v5, a3, 0); + *this = result; + } + else + { + if ( v5 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)result - 1, 1u); + else + ++*(result - 1); + } + *this = result; + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048FD30) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _DWORD *a2, unsigned int a3, int a4) +{ + unsigned int v5; // edx + _DWORD *result; // eax + + v5 = *(_DWORD *)(*a2 - 12); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::string::_S_construct((_BYTE *)(a3 + *a2), *a2 + v5); + *this = result; + return result; +} + +//----- (0048FD90) -------------------------------------------------------- +_DWORD *__userpurge std::string::string@( + _DWORD *a1@, + std::string *this, + const std::string *a3, + unsigned int a4, + unsigned int a5) +{ + int v6; // edx + unsigned int v7; // eax + char *v8; // eax + _DWORD *result; // eax + + v6 = *(_DWORD *)this; + v7 = *(_DWORD *)(*(_DWORD *)this - 12) - (_DWORD)a3; + if ( v7 > a4 ) + v7 = a4; + v8 = (char *)a3 + v7 + v6; + if ( (unsigned int)a3 > *(_DWORD *)(*(_DWORD *)this - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + (size_t)a3, + *(_DWORD *)(*(_DWORD *)this - 12)); + result = std::string::_S_construct((_BYTE *)a3 + v6, (int)v8); + *a1 = result; + return result; +} + +//----- (0048FE00) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, int *a2, unsigned int a3, unsigned int a4, int a5) +{ + int v6; // edx + unsigned int v7; // eax + int v8; // eax + _DWORD *result; // eax + + v6 = *a2; + v7 = *(_DWORD *)(*a2 - 12) - a3; + if ( v7 > a4 ) + v7 = a4; + v8 = v6 + a3 + v7; + if ( a3 > *(_DWORD *)(*a2 - 12) ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *(_DWORD *)(*a2 - 12)); + result = std::string::_S_construct((_BYTE *)(a3 + v6), v8); + *this = result; + return result; +} + +//----- (0048FE70) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, (int)&a2[a3]); + *this = result; + return result; +} + +//----- (0048FEB0) -------------------------------------------------------- +unsigned int *__thiscall std::string::string(unsigned int **this, unsigned int a2, char a3, int a4) +{ + unsigned int *result; // eax + + result = (unsigned int *)&unk_4E93FC; + if ( a2 ) + { + result = std::string::_S_construct(a2, a3); + *this = result; + } + else + { + *this = (unsigned int *)&unk_4E93FC; + } + return result; +} + +//----- (0048FEF0) -------------------------------------------------------- +void __fastcall std::string::string(_DWORD *a1) +{ + *a1 = &unk_4E93FC; +} + +//----- (0048FF00) -------------------------------------------------------- +void *__thiscall std::string::string<__gnu_cxx::__normal_iterator>( + _DWORD *this, + _BYTE *a2, + _BYTE *a3, + int a4) +{ + void *result; // eax + + result = std::string::_S_construct<__gnu_cxx::__normal_iterator>(a2, a3); + *this = result; + return result; +} + +//----- (0048FF30) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (0048FF60) -------------------------------------------------------- +_DWORD *__thiscall std::string::string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + _DWORD *result; // eax + + result = std::string::_S_construct(a2, a3); + *this = result; + return result; +} + +//----- (0048FF90) -------------------------------------------------------- +void __fastcall std::string::~string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // ecx + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)(v1 - 3)); + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (0048FFF0) -------------------------------------------------------- +void __fastcall std::string::~string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // ecx + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + operator delete((void *)(v1 - 3)); + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00490050) -------------------------------------------------------- +#error "49005A: call analysis failed (funcsize=8)" + +//----- (00490070) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *Str) +{ + size_t v3; // eax + unsigned int v5; // [esp+8h] [ebp-14h] + + v3 = strlen((const char *)Str); + return std::string::assign(this, Str, v3, v5); +} +// 49008C: variable 'v5' is possibly undefined + +//----- (004900B0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, std::string *a2, size_t a3) +{ + unsigned int v5; // [esp+8h] [ebp-14h] + + std::string::assign(this, a2, a3, v5); + return this; +} +// 4900C5: variable 'v5' is possibly undefined + +//----- (004900E0) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::string::operator=(volatile signed __int32 **this, char a2) +{ + char v4; // [esp+10h] [ebp-Ch] + + std::string::_M_replace_aux(this, 0, *((_DWORD *)*this - 3), 1u, a2, v4); + return this; +} +// 490107: variable 'v4' is possibly undefined + +//----- (00490120) -------------------------------------------------------- +char *__thiscall std::string::operator[](volatile signed __int32 **this, int a2) +{ + volatile signed __int32 *v2; // eax + + v2 = *this; + if ( *((int *)*this - 1) >= 0 ) + { + std::string::_M_leak_hard(this); + v2 = *this; + } + return (char *)v2 + a2; +} + +//----- (00490150) -------------------------------------------------------- +unsigned int **__thiscall std::string::operator+=(unsigned int **this, std::string *Str) +{ + size_t v3; // eax + unsigned int v5; // [esp+8h] [ebp-14h] + + v3 = strlen((const char *)Str); + return std::string::append(this, Str, v3, v5); +} +// 49016C: variable 'v5' is possibly undefined + +//----- (004901A0) -------------------------------------------------------- +unsigned int **__thiscall std::string::operator+=(unsigned int **this, char a2) +{ + int v3; // edi + unsigned int *v4; // eax + unsigned int v6; // [esp+4h] [ebp-28h] + + v3 = *(*this - 3); + if ( v3 + 1 > *(*this - 2) || (int)*(*this - 1) > 0 ) + std::string::reserve(this, (std::string *)(v3 + 1), v6); + *((_BYTE *)*this + *(*this - 3)) = a2; + v4 = *this; + if ( *this != (unsigned int *)&unk_4E93FC ) + { + *(v4 - 1) = 0; + *(v4 - 3) = v3 + 1; + *((_BYTE *)v4 + v3 + 1) = 0; + } + return this; +} +// 4901C6: variable 'v6' is possibly undefined + +//----- (00490210) -------------------------------------------------------- +int __cdecl std::__num_base::_S_format_float(std::__num_base *this, const std::ios_base *a2, char *a3) +{ + int result; // eax + char *v4; // edx + int v5; // edi + _BYTE *v6; // ecx + int v7; // eax + + result = *((_DWORD *)this + 3); + v4 = (char *)a2 + 1; + *(_BYTE *)a2 = 37; + if ( (result & 0x800) != 0 ) + { + *((_BYTE *)a2 + 1) = 43; + v4 = (char *)a2 + 2; + } + if ( (result & 0x400) != 0 ) + *v4++ = 35; + *(_WORD *)v4 = 10798; + v5 = result & 0x104; + if ( (_BYTE)a3 ) + { + v6 = v4 + 3; + v4[2] = (char)a3; + if ( v5 != 4 ) + goto LABEL_7; +LABEL_12: + *v6 = 102; + v6[1] = 0; + return result; + } + v6 = v4 + 2; + if ( v5 == 4 ) + goto LABEL_12; +LABEL_7: + v7 = (result & 0x4000) == 0 ? 0x20 : 0; + if ( v5 == 256 ) + result = v7 + 69; + else + result = v7 + 71; + v6[1] = 0; + *v6 = result; + return result; +} + +//----- (004902B0) -------------------------------------------------------- +void __fastcall std::bad_typeid::~bad_typeid(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5E7C; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 4902BC: variable 'v2' is possibly undefined +// 4F5E7C: using guessed type void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this); + +//----- (004902E0) -------------------------------------------------------- +void __cdecl std::bad_typeid::~bad_typeid(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5E7C; + std::exception::~exception(a1); +} +// 4902E0: variable 'v1' is possibly undefined +// 4F5E7C: using guessed type void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this); + +//----- (004902F0) -------------------------------------------------------- +int __cdecl std::money_base::_S_construct_pattern() +{ + return std::money_base::_S_default_pattern; +} +// 4F0AC0: using guessed type int std::money_base::_S_default_pattern; + +//----- (00490300) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ecx + _DWORD *v6; // eax + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x44, v8); + *v4 = &off_4F66C4; + v4[1] = 0; + v4[2] = 0; + v4[3] = 0; + *((_WORD *)v4 + 8) = 0; + *((_BYTE *)v4 + 18) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + *((_BYTE *)v4 + 67) = 0; + this[2] = v4; + } + *((_BYTE *)v4 + 17) = 46; + v5 = std::money_base::_S_atoms; + *(_BYTE *)(this[2] + 18) = 44; + v6 = (_DWORD *)this[2]; + v6[2] = &unk_4EC62C; + v6[3] = 0; + v6[5] = &unk_4EC62C; + v6[6] = 0; + v6[7] = &unk_4EC62C; + v6[8] = 0; + v6[9] = &unk_4EC62C; + v6[10] = 0; + v6[11] = 0; + v6[12] = std::money_base::_S_default_pattern; + *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; + for ( result = 0; result != 11; ++result ) + *(_BYTE *)(this[2] + result + 56) = v5[result]; + return result; +} +// 4903A7: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4F0AC0: using guessed type int std::money_base::_S_default_pattern; +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (00490420) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5E90; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5E90: using guessed type int (*off_4F5E90)(); + +//----- (00490480) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5E90; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5E90: using guessed type int (*off_4F5E90)(); + +//----- (004904E0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5E90; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5E90: using guessed type int (*off_4F5E90)(); + +//----- (00490540) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5E90; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5E90: using guessed type int (*off_4F5E90)(); + +//----- (004905A0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5E90; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5E90: using guessed type int (*off_4F5E90)(); + +//----- (00490600) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5E90; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5E90: using guessed type int (*off_4F5E90)(); + +//----- (00490660) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 490667: variable 'v2' is possibly undefined + +//----- (00490690) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F5E90; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 490697: variable 'v1' is possibly undefined +// 4F5E90: using guessed type int (*off_4F5E90)(); + +//----- (004906C0) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ecx + _DWORD *v6; // eax + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x44, v8); + *v4 = &off_4F66D4; + v4[1] = 0; + v4[2] = 0; + v4[3] = 0; + *((_WORD *)v4 + 8) = 0; + *((_BYTE *)v4 + 18) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + *((_BYTE *)v4 + 67) = 0; + this[2] = v4; + } + *((_BYTE *)v4 + 17) = 46; + v5 = std::money_base::_S_atoms; + *(_BYTE *)(this[2] + 18) = 44; + v6 = (_DWORD *)this[2]; + v6[2] = &unk_4EC62C; + v6[3] = 0; + v6[5] = &unk_4EC62C; + v6[6] = 0; + v6[7] = &unk_4EC62C; + v6[8] = 0; + v6[9] = &unk_4EC62C; + v6[10] = 0; + v6[11] = 0; + v6[12] = std::money_base::_S_default_pattern; + *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; + for ( result = 0; result != 11; ++result ) + *(_BYTE *)(this[2] + result + 56) = v5[result]; + return result; +} +// 490767: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4F0AC0: using guessed type int std::money_base::_S_default_pattern; +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (004907E0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5EC4; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); + +//----- (00490840) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5EC4; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); + +//----- (004908A0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5EC4; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); + +//----- (00490900) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5EC4; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); + +//----- (00490960) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5EC4; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); + +//----- (004909C0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5EC4; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); + +//----- (00490A20) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 490A27: variable 'v2' is possibly undefined + +//----- (00490A50) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F5EC4; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 490A57: variable 'v1' is possibly undefined +// 4F5EC4: using guessed type int (*off_4F5EC4)(); + +//----- (00490A80) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ebx + int v6; // ecx + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x54, v8); + v4[1] = 0; + *v4 = &off_4F66E4; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + *(_DWORD *)((char *)v4 + 18) = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + v4[14] = 0; + *((_BYTE *)v4 + 82) = 0; + this[2] = v4; + } + *(_DWORD *)((char *)v4 + 18) = 2883630; + v4[2] = &unk_4EC62C; + v5 = std::money_base::_S_atoms; + v4[13] = std::money_base::_S_default_pattern; + v4[3] = 0; + v4[6] = &unk_4EC62E; + v4[7] = 0; + v4[8] = &unk_4EC62E; + v4[9] = 0; + v4[10] = &unk_4EC62E; + v4[11] = 0; + v4[12] = 0; + *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; + v6 = this[2]; + for ( result = 0; result != 11; ++result ) + *(_WORD *)(v6 + 2 * result + 60) = v5[result]; + return result; +} +// 490B1F: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4F0AC0: using guessed type int std::money_base::_S_default_pattern; +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (00490BA0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5EF8; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); + +//----- (00490C00) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5EF8; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); + +//----- (00490C60) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5EF8; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); + +//----- (00490CC0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5EF8; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); + +//----- (00490D20) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5EF8; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); + +//----- (00490D80) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5EF8; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); + +//----- (00490DE0) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 490DE7: variable 'v2' is possibly undefined + +//----- (00490E10) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F5EF8; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 490E17: variable 'v1' is possibly undefined +// 4F5EF8: using guessed type int (*off_4F5EF8)(); + +//----- (00490E40) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ebx + int v6; // ecx + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x54, v8); + v4[1] = 0; + *v4 = &off_4F66F4; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + *(_DWORD *)((char *)v4 + 18) = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + v4[14] = 0; + *((_BYTE *)v4 + 82) = 0; + this[2] = v4; + } + *(_DWORD *)((char *)v4 + 18) = 2883630; + v4[2] = &unk_4EC62C; + v5 = std::money_base::_S_atoms; + v4[13] = std::money_base::_S_default_pattern; + v4[3] = 0; + v4[6] = &unk_4EC62E; + v4[7] = 0; + v4[8] = &unk_4EC62E; + v4[9] = 0; + v4[10] = &unk_4EC62E; + v4[11] = 0; + v4[12] = 0; + *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; + v6 = this[2]; + for ( result = 0; result != 11; ++result ) + *(_WORD *)(v6 + 2 * result + 60) = v5[result]; + return result; +} +// 490EDF: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4F0AC0: using guessed type int std::money_base::_S_default_pattern; +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (00490F60) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5F2C; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); + +//----- (00490FC0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5F2C; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); + +//----- (00491020) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5F2C; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); + +//----- (00491080) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5F2C; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); + +//----- (004910E0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5F2C; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); + +//----- (00491140) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5F2C; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); + +//----- (004911A0) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4911A7: variable 'v2' is possibly undefined + +//----- (004911D0) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F5F2C; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4911D7: variable 'v1' is possibly undefined +// 4F5F2C: using guessed type int (*off_4F5F2C)(); + +//----- (00491200) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) +{ + _DWORD *result; // eax + void (__cdecl *v4)(void *); // [esp+4h] [ebp-18h] + + result = (_DWORD *)this[2]; + if ( !result ) + { + result = operator new((struct type_info *)0xC8, v4); + result[1] = 0; + *result = &off_4F65D4; + result[2] = 0; + result[3] = 0; + result[4] = 0; + result[5] = 0; + result[6] = 0; + result[7] = 0; + result[8] = 0; + result[9] = 0; + result[10] = 0; + result[11] = 0; + result[12] = 0; + result[13] = 0; + result[14] = 0; + result[15] = 0; + result[16] = 0; + result[17] = 0; + result[18] = 0; + result[19] = 0; + result[20] = 0; + result[21] = 0; + result[22] = 0; + result[23] = 0; + result[24] = 0; + result[25] = 0; + result[26] = 0; + result[27] = 0; + result[28] = 0; + result[29] = 0; + result[30] = 0; + result[31] = 0; + result[32] = 0; + result[33] = 0; + result[34] = 0; + result[35] = 0; + result[36] = 0; + result[37] = 0; + result[38] = 0; + result[39] = 0; + result[40] = 0; + result[41] = 0; + result[42] = 0; + result[43] = 0; + result[44] = 0; + result[45] = 0; + result[46] = 0; + result[47] = 0; + result[48] = 0; + *((_BYTE *)result + 196) = 0; + this[2] = result; + } + result[2] = "%m/%d/%y"; + result[3] = "%m/%d/%y"; + result[4] = "%H:%M:%S"; + result[5] = "%H:%M:%S"; + result[6] = &off_4EDDB6; + result[7] = &off_4EDDB6; + result[8] = 5168567; + result[9] = &unk_4EDDBA; + result[10] = &off_4EDDB6; + result[11] = "Sunday"; + result[12] = "Monday"; + result[13] = "Tuesday"; + result[14] = "Wednesday"; + result[15] = "Thursday"; + result[16] = "Friday"; + result[17] = "Saturday"; + result[18] = &off_4EDDF6; + result[19] = &off_4EDDFA; + result[20] = &off_4EDDFE; + result[21] = &off_4EDE02; + result[22] = &off_4EDE06; + result[23] = &off_4EDE0A; + result[24] = &off_4EDE0E; + result[25] = "January"; + result[26] = "February"; + result[27] = "March"; + result[28] = "April"; + result[29] = &off_4EDE2F; + result[30] = "June"; + result[31] = "July"; + result[32] = "August"; + result[33] = "September"; + result[34] = "October"; + result[35] = "November"; + result[36] = "December"; + result[37] = &off_4EDE68; + result[38] = &off_4EDE6C; + result[39] = &off_4EDE70; + result[40] = &off_4EDE74; + result[41] = &off_4EDE2F; + result[42] = &off_4EDE78; + result[43] = &off_4EDE7C; + result[44] = &off_4EDE80; + result[45] = &off_4EDE84; + result[46] = &off_4EDE88; + result[47] = &off_4EDE8C; + result[48] = &off_4EDE90; + return result; +} +// 4913A1: variable 'v4' is possibly undefined +// 4EDDB6: using guessed type void *off_4EDDB6; +// 4EDDF6: using guessed type void *off_4EDDF6; +// 4EDDFA: using guessed type void *off_4EDDFA; +// 4EDDFE: using guessed type void *off_4EDDFE; +// 4EDE02: using guessed type void *off_4EDE02; +// 4EDE06: using guessed type void *off_4EDE06; +// 4EDE0A: using guessed type void *off_4EDE0A; +// 4EDE0E: using guessed type void *off_4EDE0E; +// 4EDE2F: using guessed type void *off_4EDE2F; +// 4EDE68: using guessed type void *off_4EDE68; +// 4EDE6C: using guessed type void *off_4EDE6C; +// 4EDE70: using guessed type void *off_4EDE70; +// 4EDE74: using guessed type void *off_4EDE74; +// 4EDE78: using guessed type void *off_4EDE78; +// 4EDE7C: using guessed type void *off_4EDE7C; +// 4EDE80: using guessed type void *off_4EDE80; +// 4EDE84: using guessed type void *off_4EDE84; +// 4EDE88: using guessed type void *off_4EDE88; +// 4EDE8C: using guessed type void *off_4EDE8C; +// 4EDE90: using guessed type void *off_4EDE90; +// 4F65D4: using guessed type int (*off_4F65D4)(); + +//----- (00491540) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5F60; + this[1] = a3 != 0; + this[2] = a2; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 4F5F60: using guessed type int (*off_4F5F60)(); + +//----- (004915A0) -------------------------------------------------------- +#error "491653: call analysis failed (funcsize=61)" + +//----- (00491680) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) +{ + *this = &off_4F5F60; + this[2] = 0; + this[1] = a2 != 0; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 4F5F60: using guessed type int (*off_4F5F60)(); + +//----- (004916E0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5F60; + this[1] = a3 != 0; + this[2] = a2; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 4F5F60: using guessed type int (*off_4F5F60)(); + +//----- (00491740) -------------------------------------------------------- +#error "4917F3: call analysis failed (funcsize=61)" + +//----- (00491820) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) +{ + *this = &off_4F5F60; + this[2] = 0; + this[1] = a2 != 0; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 4F5F60: using guessed type int (*off_4F5F60)(); + +//----- (00491880) -------------------------------------------------------- +void __fastcall std::__timepunct::~__timepunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__timepunct::~__timepunct(v2); + operator delete(a1); +} +// 491886: variable 'v2' is possibly undefined + +//----- (004918A0) -------------------------------------------------------- +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int **v3; // esi + int v4; // ecx + + v2 = v1; + *v1 = &off_4F5F60; + v3 = (int **)v1[4]; + if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) + operator delete[](v3); + v4 = v2[2]; + if ( v4 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); + std::locale::facet::~facet(a1); +} +// 4918A2: variable 'v1' is possibly undefined +// 4F5F60: using guessed type int (*off_4F5F60)(); + +//----- (004918F0) -------------------------------------------------------- +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int **v3; // esi + int v4; // ecx + + v2 = v1; + *v1 = &off_4F5F60; + v3 = (int **)v1[4]; + if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) + operator delete[](v3); + v4 = v2[2]; + if ( v4 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); + std::locale::facet::~facet(a1); +} +// 4918F2: variable 'v1' is possibly undefined +// 4F5F60: using guessed type int (*off_4F5F60)(); + +//----- (00491940) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::_M_initialize_timepunct(_DWORD *this, int a2) +{ + _DWORD *result; // eax + void (__cdecl *v4)(void *); // [esp+4h] [ebp-18h] + + result = (_DWORD *)this[2]; + if ( !result ) + { + result = operator new((struct type_info *)0xC8, v4); + result[1] = 0; + *result = &off_4F65E4; + result[2] = 0; + result[3] = 0; + result[4] = 0; + result[5] = 0; + result[6] = 0; + result[7] = 0; + result[8] = 0; + result[9] = 0; + result[10] = 0; + result[11] = 0; + result[12] = 0; + result[13] = 0; + result[14] = 0; + result[15] = 0; + result[16] = 0; + result[17] = 0; + result[18] = 0; + result[19] = 0; + result[20] = 0; + result[21] = 0; + result[22] = 0; + result[23] = 0; + result[24] = 0; + result[25] = 0; + result[26] = 0; + result[27] = 0; + result[28] = 0; + result[29] = 0; + result[30] = 0; + result[31] = 0; + result[32] = 0; + result[33] = 0; + result[34] = 0; + result[35] = 0; + result[36] = 0; + result[37] = 0; + result[38] = 0; + result[39] = 0; + result[40] = 0; + result[41] = 0; + result[42] = 0; + result[43] = 0; + result[44] = 0; + result[45] = 0; + result[46] = 0; + result[47] = 0; + result[48] = 0; + *((_BYTE *)result + 196) = 0; + this[2] = result; + } + result[2] = &off_4EDE94; + result[3] = &off_4EDE94; + result[4] = "%"; + result[5] = "%"; + result[6] = &unk_4EDEB8; + result[7] = &unk_4EDEB8; + result[8] = &off_4EDEBA; + result[9] = &off_4EDEC0; + result[10] = &unk_4EDEB8; + result[11] = &off_4EDEC6; + result[12] = &off_4EDED4; + result[13] = &off_4EDEE2; + result[14] = &off_4EDEF2; + result[15] = &off_4EDF06; + result[16] = &off_4EDF18; + result[17] = &off_4EDF26; + result[18] = &off_4EDF38; + result[19] = &off_4EDF40; + result[20] = &off_4EDF48; + result[21] = &off_4EDF50; + result[22] = &off_4EDF58; + result[23] = &off_4EDF60; + result[24] = &off_4EDF68; + result[25] = &off_4EDF70; + result[26] = &off_4EDF80; + result[27] = &off_4EDF92; + result[28] = &off_4EDF9E; + result[29] = &off_4EDFAA; + result[30] = &off_4EDFB2; + result[31] = &off_4EDFBC; + result[32] = &off_4EDFC6; + result[33] = &off_4EDFD4; + result[34] = &off_4EDFE8; + result[35] = &off_4EDFF8; + result[36] = &off_4EE00A; + result[37] = &off_4EE01C; + result[38] = &off_4EE024; + result[39] = &off_4EE02C; + result[40] = &off_4EE034; + result[41] = &off_4EDFAA; + result[42] = &off_4EE03C; + result[43] = &off_4EE044; + result[44] = &off_4EE04C; + result[45] = &off_4EE054; + result[46] = &off_4EE05C; + result[47] = &off_4EE064; + result[48] = &off_4EE06C; + return result; +} +// 491AE1: variable 'v4' is possibly undefined +// 4EDE94: using guessed type void *off_4EDE94; +// 4EDEBA: using guessed type void *off_4EDEBA; +// 4EDEC0: using guessed type void *off_4EDEC0; +// 4EDEC6: using guessed type void *off_4EDEC6; +// 4EDED4: using guessed type void *off_4EDED4; +// 4EDEE2: using guessed type void *off_4EDEE2; +// 4EDEF2: using guessed type void *off_4EDEF2; +// 4EDF06: using guessed type void *off_4EDF06; +// 4EDF18: using guessed type void *off_4EDF18; +// 4EDF26: using guessed type void *off_4EDF26; +// 4EDF38: using guessed type void *off_4EDF38; +// 4EDF40: using guessed type void *off_4EDF40; +// 4EDF48: using guessed type void *off_4EDF48; +// 4EDF50: using guessed type void *off_4EDF50; +// 4EDF58: using guessed type void *off_4EDF58; +// 4EDF60: using guessed type void *off_4EDF60; +// 4EDF68: using guessed type void *off_4EDF68; +// 4EDF70: using guessed type void *off_4EDF70; +// 4EDF80: using guessed type void *off_4EDF80; +// 4EDF92: using guessed type void *off_4EDF92; +// 4EDF9E: using guessed type void *off_4EDF9E; +// 4EDFAA: using guessed type void *off_4EDFAA; +// 4EDFB2: using guessed type void *off_4EDFB2; +// 4EDFBC: using guessed type void *off_4EDFBC; +// 4EDFC6: using guessed type void *off_4EDFC6; +// 4EDFD4: using guessed type void *off_4EDFD4; +// 4EDFE8: using guessed type void *off_4EDFE8; +// 4EDFF8: using guessed type void *off_4EDFF8; +// 4EE00A: using guessed type void *off_4EE00A; +// 4EE01C: using guessed type void *off_4EE01C; +// 4EE024: using guessed type void *off_4EE024; +// 4EE02C: using guessed type void *off_4EE02C; +// 4EE034: using guessed type void *off_4EE034; +// 4EE03C: using guessed type void *off_4EE03C; +// 4EE044: using guessed type void *off_4EE044; +// 4EE04C: using guessed type void *off_4EE04C; +// 4EE054: using guessed type void *off_4EE054; +// 4EE05C: using guessed type void *off_4EE05C; +// 4EE064: using guessed type void *off_4EE064; +// 4EE06C: using guessed type void *off_4EE06C; +// 4F65E4: using guessed type int (*off_4F65E4)(); + +//----- (00491C80) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5F70; + this[1] = a3 != 0; + this[2] = a2; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 4F5F70: using guessed type int (*off_4F5F70)(); + +//----- (00491CE0) -------------------------------------------------------- +#error "491D93: call analysis failed (funcsize=61)" + +//----- (00491DC0) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) +{ + *this = &off_4F5F70; + this[2] = 0; + this[1] = a2 != 0; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 4F5F70: using guessed type int (*off_4F5F70)(); + +//----- (00491E20) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5F70; + this[1] = a3 != 0; + this[2] = a2; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 4F5F70: using guessed type int (*off_4F5F70)(); + +//----- (00491E80) -------------------------------------------------------- +#error "491F33: call analysis failed (funcsize=61)" + +//----- (00491F60) -------------------------------------------------------- +_DWORD *__thiscall std::__timepunct::__timepunct(_DWORD *this, int a2) +{ + *this = &off_4F5F70; + this[2] = 0; + this[1] = a2 != 0; + this[4] = std::locale::facet::_S_get_c_name(); + return std::__timepunct::_M_initialize_timepunct(this, 0); +} +// 4F5F70: using guessed type int (*off_4F5F70)(); + +//----- (00491FC0) -------------------------------------------------------- +void __fastcall std::__timepunct::~__timepunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__timepunct::~__timepunct(v2); + operator delete(a1); +} +// 491FC6: variable 'v2' is possibly undefined + +//----- (00491FE0) -------------------------------------------------------- +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int **v3; // esi + int v4; // ecx + + v2 = v1; + *v1 = &off_4F5F70; + v3 = (int **)v1[4]; + if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) + operator delete[](v3); + v4 = v2[2]; + if ( v4 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); + std::locale::facet::~facet(a1); +} +// 491FE2: variable 'v1' is possibly undefined +// 4F5F70: using guessed type int (*off_4F5F70)(); + +//----- (00492030) -------------------------------------------------------- +void __cdecl std::__timepunct::~__timepunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int **v3; // esi + int v4; // ecx + + v2 = v1; + *v1 = &off_4F5F70; + v3 = (int **)v1[4]; + if ( v3 != std::locale::facet::_S_get_c_name() && v3 ) + operator delete[](v3); + v4 = v2[2]; + if ( v4 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v4 + 4))(v4); + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 3)); + std::locale::facet::~facet(a1); +} +// 492032: variable 'v1' is possibly undefined +// 4F5F70: using guessed type int (*off_4F5F70)(); + +//----- (00492080) -------------------------------------------------------- +int __thiscall std::logic_error::logic_error(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = &off_4F5F80; + this[1] = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = &unk_4E93FC; + return result; +} +// 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); + +//----- (004920A0) -------------------------------------------------------- +_DWORD *__userpurge std::logic_error::logic_error@(int a1@, std::logic_error *this, const char *a3) +{ + _DWORD *v3; // ecx + int v5; // [esp+1Fh] [ebp-9h] BYREF + + v3 = (_DWORD *)(a1 + 4); + *(v3 - 1) = &off_4F5F80; + return std::string::string(v3, (char *)this, (int)&v5); +} +// 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); + +//----- (004920E0) -------------------------------------------------------- +_DWORD *__thiscall std::logic_error::logic_error(_DWORD *this, int a2) +{ + _DWORD *v2; // ecx + unsigned int v4; // [esp+8h] [ebp-10h] + + v2 = this + 1; + *(v2 - 1) = &off_4F5F80; + return std::__cow_string::__cow_string(v2, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v4); +} +// 492103: variable 'v4' is possibly undefined +// 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); + +//----- (00492120) -------------------------------------------------------- +unsigned int *__userpurge std::logic_error::logic_error@( + int a1@, + unsigned int **this, + const std::logic_error *a3) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + *(_DWORD *)a1 = &off_4F5F80; + return std::string::string((unsigned int **)(a1 + 4), this + 1, v4); +} +// 492136: variable 'v4' is possibly undefined +// 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); + +//----- (00492150) -------------------------------------------------------- +unsigned int *__userpurge std::logic_error::logic_error@(int a1@, unsigned int **this, const std::string *a3) +{ + unsigned int **v3; // ecx + const std::string *v5; // [esp+4h] [ebp-14h] + + v3 = (unsigned int **)(a1 + 4); + *(v3 - 1) = (unsigned int *)&off_4F5F80; + return std::string::string(v3, this, v5); +} +// 49216A: variable 'v5' is possibly undefined +// 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); + +//----- (00492190) -------------------------------------------------------- +void __fastcall std::logic_error::~logic_error(_DWORD *a1) +{ + std::logic_error::~logic_error(a1); + operator delete(a1); +} + +//----- (004921B0) -------------------------------------------------------- +void __fastcall std::logic_error::~logic_error(_DWORD *a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + std::exception *v3; // [esp+0h] [ebp-2Ch] + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = (volatile signed __int32 *)a1[1]; + *a1 = &off_4F5F80; + if ( v1 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v4); + } + std::exception::~exception(v3); +} +// 4921C9: variable 'v3' is possibly undefined +// 4F5F80: using guessed type void (__cdecl *off_4F5F80)(std::logic_error *__hidden this); +// 15412D0: using guessed type int _CRT_MT; +// 4921B0: using guessed type int var_D[3]; + +//----- (00492220) -------------------------------------------------------- +int *__thiscall std::logic_error::operator=(int *this, int a2) +{ + std::string *v4; // [esp+4h] [ebp-18h] + + std::string::swap(this + 1, (std::string *)(a2 + 4), v4); + return this; +} +// 492233: variable 'v4' is possibly undefined + +//----- (00492250) -------------------------------------------------------- +unsigned int **__thiscall std::logic_error::operator=(unsigned int **this, int a2) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + std::string::assign(this + 1, (unsigned int **)(a2 + 4), v4); + return this; +} +// 492263: variable 'v4' is possibly undefined + +//----- (00492280) -------------------------------------------------------- +_DWORD *__userpurge std::range_error::range_error@(_DWORD *a1@, std::range_error *this, const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_4F5F94; + return result; +} +// 49228D: variable 'v5' is possibly undefined +// 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); + +//----- (004922B0) -------------------------------------------------------- +_DWORD *__thiscall std::range_error::range_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::runtime_error::runtime_error(this, a2); + *this = &off_4F5F94; + return result; +} +// 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); + +//----- (004922E0) -------------------------------------------------------- +unsigned int *__userpurge std::range_error::range_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_4F5F94; + return result; +} +// 4922ED: variable 'v5' is possibly undefined +// 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); + +//----- (00492310) -------------------------------------------------------- +void __fastcall std::range_error::~range_error(_DWORD *a1) +{ + *a1 = &off_4F5F94; + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} +// 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); + +//----- (00492330) -------------------------------------------------------- +void __fastcall std::range_error::~range_error(_DWORD *a1) +{ + *a1 = &off_4F5F94; + std::runtime_error::~runtime_error(a1); +} +// 4F5F94: using guessed type void (__cdecl *off_4F5F94)(std::range_error *__hidden this); + +//----- (00492340) -------------------------------------------------------- +int __usercall std::_Destroy_aux::__destroy *>@( + int a1@, + int a2, + int a3) +{ + volatile signed __int32 **v4; // ecx + + while ( a2 != a3 ) + { + v4 = (volatile signed __int32 **)(a2 + 4); + a2 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + return a1; +} + +//----- (00492360) -------------------------------------------------------- +int __usercall std::_Destroy_aux::__destroy *>@( + int a1@, + int a2, + int a3) +{ + volatile signed __int32 **v4; // ecx + + while ( a2 != a3 ) + { + v4 = (volatile signed __int32 **)(a2 + 4); + a2 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v4); + } + return a1; +} + +//----- (00492380) -------------------------------------------------------- +int __usercall std::_Destroy_aux::__destroy@(int a1@, void **a2, void **a3) +{ + void **v4; // ecx + + while ( a2 != a3 ) + { + v4 = a2; + a2 += 6; + std::string::_M_dispose(v4); + } + return a1; +} + +//----- (004923A0) -------------------------------------------------------- +void __fastcall __spoils std::`anonymous namespace'::utf16_span( + unsigned int a1, + unsigned __int8 *a2, + unsigned int a3, + char a4) +{ + unsigned int v4; // edi + unsigned int v5; // esi + unsigned int v6; // ebx + unsigned int utf8_code; // eax + unsigned __int8 *v9[6]; // [esp+Ch] [ebp-18h] BYREF + + v4 = a3; + v9[1] = a2; + if ( (a4 & 4) != 0 ) + std::`anonymous namespace'::read_bom((int *)v9); + if ( a1 <= 1 ) + { + v6 = 1; +LABEL_11: + if ( a1 == v6 ) + { + if ( a3 > 0xFFFE ) + v4 = 0xFFFF; + std::`anonymous namespace'::read_utf8_code_point(v9, v4); + } + } + else + { + v5 = 0; + v6 = 1; + while ( 1 ) + { + utf8_code = std::`anonymous namespace'::read_utf8_code_point(v9, a3); + if ( a3 < utf8_code ) + break; + if ( utf8_code <= 0xFFFF ) + v6 = v5; + v5 = v6 + 1; + v6 += 2; + if ( v6 >= a1 ) + goto LABEL_11; + } + } +} + +//----- (00492450) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_utf16_bom@(int result@, _DWORD *a2@) +{ + int v2; // esi + + if ( (*(_BYTE *)a2 & 4) != 0 ) + { + v2 = result; + result = std::`anonymous namespace'::read_bom( + result, + std::`anonymous namespace'::utf16_bom); + if ( (_BYTE)result ) + { + *a2 &= ~1u; + } + else + { + result = std::`anonymous namespace'::read_bom( + v2, + std::`anonymous namespace'::utf16le_bom); + if ( (_BYTE)result ) + *a2 |= 1u; + } + } + return result; +} +// 4F0AD4: using guessed type _WORD std::`anonymous namespace'::utf16le_bom[2]; +// 4F0ADC: using guessed type _WORD std::`anonymous namespace'::utf16_bom[2]; + +//----- (004924A0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf8_bom@(int *a1@) +{ + int v1; // ecx + + v1 = *a1; + if ( (unsigned int)(a1[1] - *a1) <= 2 ) + return 0; + *(_BYTE *)(v1 + 2) = -65; + *(_WORD *)v1 = -17425; + *a1 += 3; + return 1; +} + +//----- (004924D0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf16_bom@(int a1@, char a2@
) +{ + _WORD *v2; // ebx + unsigned int v3; // ecx + bool v4; // zf + int v5; // edx + + if ( (a2 & 2) == 0 ) + return 1; + v2 = *(_WORD **)a1; + v3 = *(_DWORD *)(a1 + 4) - *(_DWORD *)a1; + v4 = (a2 & 1) == 0; + v5 = 0; + if ( !v4 ) + { + if ( v3 > 1 ) + { + v5 = 1; + *v2 = -257; + *(_DWORD *)a1 += 2; + } + return v5; + } + if ( v3 <= 1 ) + return v5; + *v2 = -2; + *(_DWORD *)a1 += 2; + return 1; +} + +//----- (00492530) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_utf8_code_point@( + unsigned __int8 **a1@, + unsigned int a2@) +{ + unsigned __int8 *v2; // ecx + unsigned int v3; // edi + int v4; // ebx + unsigned int v5; // esi + unsigned __int8 v7; // di + unsigned __int8 v8; // di + unsigned __int8 v9; // [esp+7h] [ebp-11h] + + v2 = *a1; + v3 = a1[1] - *a1; + if ( !v3 ) + return -2; + v4 = *v2; + if ( (v4 & 0x80u) == 0 ) + { + v5 = (unsigned __int8)v4; + *a1 = v2 + 1; + return v5; + } + v5 = -1; + if ( (unsigned __int8)v4 <= 0xC1u ) + return v5; + if ( (unsigned __int8)v4 > 0xDFu ) + { + if ( (unsigned __int8)v4 > 0xEFu ) + { + if ( (unsigned __int8)v4 <= 0xF4u ) + { + v5 = -2; + if ( v3 > 3 ) + { + v8 = v2[1]; + v5 = -1; + if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) + { + if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) + { + v5 = -1; + v9 = v2[2]; + if ( (v9 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) + { + v5 = (v9 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; + if ( v5 <= a2 ) + *a1 = v2 + 4; + } + } + } + } + } + } + else + { + v5 = -2; + if ( v3 > 2 ) + { + v7 = v2[1]; + v5 = -1; + if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) + { + v5 = -1; + if ( (v2[2] & 0xC0) == 0x80 ) + { + v5 = (v4 << 12) + (v7 << 6) + v2[2] - 925824; + if ( a2 >= v5 ) + *a1 = v2 + 3; + } + } + } + } + return v5; + } + if ( v3 != 1 ) + { + if ( (v2[1] & 0xC0) == 0x80 ) + { + v5 = (v4 << 6) + v2[1] - 12416; + if ( a2 >= v5 ) + *a1 = v2 + 2; + } + return v5; + } + return -2; +} + +//----- (004926F0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_utf8_code_point@( + unsigned __int8 **a1@, + unsigned int a2@) +{ + unsigned __int8 *v2; // ecx + unsigned int v3; // edi + int v4; // ebx + unsigned int v5; // esi + unsigned __int8 v7; // di + unsigned __int8 v8; // di + unsigned __int8 v9; // [esp+7h] [ebp-11h] + + v2 = *a1; + v3 = a1[1] - *a1; + if ( !v3 ) + return -2; + v4 = *v2; + if ( (v4 & 0x80u) == 0 ) + { + v5 = (unsigned __int8)v4; + *a1 = v2 + 1; + return v5; + } + v5 = -1; + if ( (unsigned __int8)v4 <= 0xC1u ) + return v5; + if ( (unsigned __int8)v4 > 0xDFu ) + { + if ( (unsigned __int8)v4 > 0xEFu ) + { + if ( (unsigned __int8)v4 <= 0xF4u ) + { + v5 = -2; + if ( v3 > 3 ) + { + v8 = v2[1]; + v5 = -1; + if ( (v8 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xF0 || v8 > 0x8Fu) ) + { + if ( (_BYTE)v4 != 0xF4 || (v5 = -1, v8 <= 0x8Fu) ) + { + v5 = -1; + v9 = v2[2]; + if ( (v9 & 0xC0) == 0x80 && (v2[3] & 0xC0) == 0x80 ) + { + v5 = (v9 << 6) + (v8 << 12) + (v4 << 18) + v2[3] - 63447168; + if ( v5 <= a2 ) + *a1 = v2 + 4; + } + } + } + } + } + } + else + { + v5 = -2; + if ( v3 > 2 ) + { + v7 = v2[1]; + v5 = -1; + if ( (v7 & 0xC0) == 0x80 && ((_BYTE)v4 != 0xE0 || v7 > 0x9Fu) ) + { + v5 = -1; + if ( (v2[2] & 0xC0) == 0x80 ) + { + v5 = (v4 << 12) + (v7 << 6) + v2[2] - 925824; + if ( a2 >= v5 ) + *a1 = v2 + 3; + } + } + } + } + return v5; + } + if ( v3 != 1 ) + { + if ( (v2[1] & 0xC0) == 0x80 ) + { + v5 = (v4 << 6) + v2[1] - 12416; + if ( a2 >= v5 ) + *a1 = v2 + 2; + } + return v5; + } + return -2; +} + +//----- (004928B0) -------------------------------------------------------- +unsigned int __usercall std::`anonymous namespace'::read_utf16_code_point@( + unsigned int result@, + unsigned int a2@, + char a3@) +{ + _WORD *v3; // edi + unsigned int v4; // ebx + _DWORD *v5; // esi + int v6; // ecx + int v7; // ecx + unsigned __int16 v8; // bx + + v3 = *(_WORD **)result; + v4 = (unsigned int)(*(_DWORD *)(result + 4) - *(_DWORD *)result) >> 1; + if ( !v4 ) + return -2; + v5 = (_DWORD *)result; + LOWORD(result) = *v3; + v6 = a3 & 1; + if ( !v6 ) + LOWORD(result) = __ROL2__(result, 8); + result = (unsigned __int16)result; + if ( (unsigned int)(unsigned __int16)result - 55296 > 0x3FF ) + { + if ( (unsigned int)(unsigned __int16)result - 56320 > 0x3FF ) + { + v7 = 1; + goto LABEL_7; + } + return -1; + } + if ( v4 == 1 ) + return -2; + v8 = v3[1]; + if ( !v6 ) + v8 = __ROL2__(v8, 8); + if ( (unsigned int)v8 - 56320 > 0x3FF ) + return -1; + v7 = 2; + result = v8 + ((unsigned __int16)result << 10) - 56613888; +LABEL_7: + if ( result <= a2 ) + *v5 = &v3[v7]; + return result; +} + +//----- (00492960) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf8_code_point@(int a1@, unsigned int a2@) +{ + _BYTE *v3; // eax + int result; // eax + _BYTE *v5; // esi + int v6; // ebx + _BYTE *v7; // ebx + _BYTE *v8; // ebx + int v9; // esi + + if ( a2 > 0x7F ) + { + if ( a2 > 0x7FF ) + { + if ( a2 <= 0xFFFF ) + { + v8 = *(_BYTE **)a1; + v9 = *(_DWORD *)(a1 + 4); + result = 0; + if ( (unsigned int)(v9 - (_DWORD)v8) > 2 ) + { + *v8 = (a2 >> 12) - 32; + v8[1] = ((a2 >> 6) & 0x3F) + 0x80; + *(_DWORD *)a1 = v8 + 3; + result = 1; + v8[2] = (a2 & 0x3F) + 0x80; + } + } + else + { + result = 0; + if ( a2 <= 0x10FFFF ) + { + v7 = *(_BYTE **)a1; + if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) > 3 ) + { + *v7 = (a2 >> 18) - 16; + v7[1] = ((a2 >> 12) & 0x3F) + 0x80; + v7[2] = ((a2 >> 6) & 0x3F) + 0x80; + *(_DWORD *)a1 = v7 + 4; + result = 1; + v7[3] = (a2 & 0x3F) + 0x80; + } + } + } + } + else + { + v5 = *(_BYTE **)a1; + v6 = *(_DWORD *)(a1 + 4); + result = 0; + if ( (unsigned int)(v6 - (_DWORD)v5) > 1 ) + { + *v5 = (a2 >> 6) - 64; + *(_DWORD *)a1 = v5 + 2; + result = 1; + v5[1] = (a2 & 0x3F) + 0x80; + } + } + } + else + { + v3 = *(_BYTE **)a1; + if ( v3 == *(_BYTE **)(a1 + 4) ) + { + return 0; + } + else + { + *(_DWORD *)a1 = v3 + 1; + *v3 = a2; + return 1; + } + } + return result; +} + +//----- (00492A70) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf8_code_point@(_BYTE **a1@, unsigned int a2@) +{ + _BYTE *v3; // eax + int result; // eax + _BYTE *v5; // esi + _BYTE *v6; // ebx + _BYTE *v7; // eax + _BYTE *v8; // esi + _BYTE *v9; // ebx + _BYTE *v10; // ebx + _BYTE *v11; // esi + _BYTE *v12; // ebx + + if ( a2 <= 0x7F ) + { + v3 = *a1; + if ( v3 == a1[1] ) + return 0; + *a1 = v3 + 1; + *v3 = a2; + return 1; + } + if ( a2 <= 0x7FF ) + { + v5 = *a1; + v6 = a1[1]; + result = 0; + if ( (unsigned int)(v6 - v5) <= 1 ) + return result; + *a1 = v5 + 1; + *v5 = (a2 >> 6) - 64; +LABEL_8: + v7 = (*a1)++; + *v7 = (a2 & 0x3F) + 0x80; + return 1; + } + if ( a2 <= 0xFFFF ) + { + v11 = *a1; + v12 = a1[1]; + result = 0; + if ( (unsigned int)(v12 - v11) <= 2 ) + return result; + *a1 = v11 + 1; + *v11 = (a2 >> 12) - 32; + goto LABEL_13; + } + result = 0; + if ( a2 <= 0x10FFFF ) + { + v8 = *a1; + if ( (unsigned int)(a1[1] - *a1) > 3 ) + { + *a1 = v8 + 1; + *v8 = (a2 >> 18) - 16; + v9 = (*a1)++; + *v9 = ((a2 >> 12) & 0x3F) + 0x80; +LABEL_13: + v10 = (*a1)++; + *v10 = ((a2 >> 6) & 0x3F) + 0x80; + goto LABEL_8; + } + } + return result; +} + +//----- (00492B60) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::write_utf16_code_point@( + int a1@, + unsigned int a2@, + char a3@) +{ + _WORD *v3; // esi + int result; // eax + unsigned int v5; // ebx + __int16 v6; // dx + __int16 v7; // bx + + v3 = *(_WORD **)a1; + if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) <= 3 ) + return 0; + v5 = a2 >> 10; + v6 = (a2 & 0x3FF) - 9216; + v7 = v5 - 10304; + if ( (a3 & 1) == 0 ) + { + v7 = __ROL2__(v7, 8); + v6 = __ROL2__(v6, 8); + } + *v3 = v7; + *(_DWORD *)a1 = v3 + 2; + result = 1; + v3[1] = v6; + return result; +} + +//----- (00492BB0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::ucs2_in@( + _DWORD *a1@, + int *a2@, + unsigned int a3@, + char a4) +{ + int v7; // edx + unsigned int utf16_code; // eax + _WORD *v9; // ecx + + std::`anonymous namespace'::read_utf16_bom((int)a1, &a4); + if ( a3 > 0xFFFE ) + a3 = 0xFFFF; + if ( !((unsigned int)(a1[1] - *a1) >> 1) ) + return 0; + v7 = *a2; + while ( 1 ) + { + if ( a2[1] == v7 ) + return 1; + utf16_code = std::`anonymous namespace'::read_utf16_code_point((unsigned int)a1, a3, a4); + if ( a3 < utf16_code || utf16_code == -2 ) + break; + v9 = (_WORD *)*a2; + v7 = *a2 + 2; + *a2 = v7; + *v9 = utf16_code; + if ( !((unsigned int)(a1[1] - *a1) >> 1) ) + return 0; + } + return 2; +} + +//----- (00492C40) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::ucs4_in@( + int *a1@, + int *a2@, + unsigned int a3@, + char a4) +{ + int v7; // edx + unsigned int utf8_code; // eax + unsigned int *v9; // ecx + + if ( (a4 & 4) != 0 ) + std::`anonymous namespace'::read_bom(a1); + if ( *a1 == a1[1] ) + return 0; + v7 = *a2; + while ( 1 ) + { + if ( a2[1] == v7 ) + return 1; + utf8_code = std::`anonymous namespace'::read_utf8_code_point((unsigned __int8 **)a1, a3); + if ( utf8_code == -2 ) + return 1; + if ( a3 < utf8_code ) + break; + v9 = (unsigned int *)*a2; + v7 = *a2 + 4; + *a2 = v7; + *v9 = utf8_code; + if ( *a1 == a1[1] ) + return 0; + } + return 2; +} + +//----- (00492CC0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_bom@(int a1@, _WORD *a2@) +{ + _WORD *v2; // ebx + + v2 = *(_WORD **)a1; + if ( (unsigned int)(*(_DWORD *)(a1 + 4) - *(_DWORD *)a1) <= 1 || *a2 != *v2 ) + return 0; + *(_DWORD *)a1 = v2 + 1; + return 1; +} + +//----- (00492CF0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_bom@(int *a1@) +{ + int v1; // ecx + + v1 = *a1; + if ( (unsigned int)(a1[1] - *a1) <= 2 + || *(_WORD *)v1 != std::`anonymous namespace'::utf8_bom + || *(_BYTE *)(v1 + 2) != 0xBF ) + { + return 0; + } + *a1 = v1 + 3; + return 1; +} +// 4F0AD8: using guessed type __int16 std::`anonymous namespace'::utf8_bom; + +//----- (00492D30) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::read_bom@(int *a1@) +{ + int v1; // ecx + + v1 = *a1; + if ( (unsigned int)(a1[1] - *a1) <= 2 + || *(_WORD *)v1 != std::`anonymous namespace'::utf8_bom + || *(_BYTE *)(v1 + 2) != 0xBF ) + { + return 0; + } + *a1 = v1 + 3; + return 1; +} +// 4F0AD8: using guessed type __int16 std::`anonymous namespace'::utf8_bom; + +//----- (00492D70) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::ucs2_out@( + unsigned __int16 **a1@, + _DWORD *a2@, + unsigned int a3@, + char a4) +{ + unsigned __int16 *v4; // ebp + unsigned __int16 *v5; // ecx + _WORD *v6; // ebx + unsigned int v7; // ecx + __int16 v8; // si + + v4 = a1[1]; + v5 = *a1; + if ( *a1 == v4 ) + return 0; + v6 = (_WORD *)*a2; + while ( 1 ) + { + if ( !((unsigned int)(a2[1] - (_DWORD)v6) >> 1) ) + return v4 != v5; + v7 = *v5; + v8 = v7; + if ( v7 - 55296 <= 0x3FF || v7 > a3 ) + break; + if ( (a4 & 1) == 0 ) + v8 = __ROL2__(v7, 8); + *v6 = v8; + v4 = a1[1]; + v6 = (_WORD *)(*a2 + 2); + v5 = *a1 + 1; + *a2 = v6; + *a1 = v5; + if ( v4 == v5 ) + return 0; + } + return 2; +} + +//----- (00492E00) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::utf16_in@( + int *a1@, + _DWORD *a2@, + unsigned int a3@, + char a4, + int a5) +{ + int v8; // edi + _WORD *v9; // eax + __int16 v10; // cx + unsigned int utf8_code; // eax + __int16 v12; // dx + int v14; // [esp+0h] [ebp-18h] + + if ( (a4 & 4) != 0 ) + std::`anonymous namespace'::read_bom(a1); + v8 = a1[1]; + v14 = *a1; + if ( v8 != *a1 ) + { + while ( *a2 != a2[1] ) + { + utf8_code = std::`anonymous namespace'::read_utf8_code_point((unsigned __int8 **)a1, a3); + v12 = utf8_code; + if ( utf8_code == -2 ) + return a5 + 1; + if ( a3 < utf8_code ) + return 2; + if ( utf8_code <= 0xFFFF ) + { + v9 = (_WORD *)*a2; + if ( *a2 == a2[1] ) + goto LABEL_15; + v10 = __ROL2__(v12, 8); + if ( (a4 & 1) != 0 ) + v10 = v12; + *a2 = v9 + 1; + *v9 = v10; + } + else if ( !(unsigned __int8)std::`anonymous namespace'::write_utf16_code_point( + (int)a2, + utf8_code, + a4) ) + { +LABEL_15: + a1[1] = v8; + *a1 = v14; + return 1; + } + v8 = a1[1]; + v14 = *a1; + if ( *a1 == v8 ) + return 0; + } + } + return 0; +} + +//----- (00492EF0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::ucs2_span@( + unsigned int a1@, + int a2@, + unsigned int a3@, + char a4) +{ + int v7; // ebx + bool v8; // dl + bool v9; // al + + std::`anonymous namespace'::read_utf16_bom(a1, &a4); + if ( a3 > 0xFFFE ) + a3 = 0xFFFF; + v7 = a2 - 1; + if ( a2 ) + { + do + { + v8 = a3 >= std::`anonymous namespace'::read_utf16_code_point(a1, a3, a4); + v9 = v7-- != 0; + } + while ( v9 && v8 ); + } + return *(_DWORD *)a1; +} + +//----- (00492F50) -------------------------------------------------------- +void __fastcall __spoils std::`anonymous namespace'::ucs2_span( + int a1, + unsigned __int8 *a2, + unsigned int a3, + char a4) +{ + unsigned int v5; // esi + int v6; // ebx + bool v7; // dl + bool v8; // al + unsigned __int8 *v9[6]; // [esp+8h] [ebp-18h] BYREF + + v5 = a3; + v9[1] = a2; + if ( (a4 & 4) != 0 ) + std::`anonymous namespace'::read_bom((int *)v9); + if ( a3 > 0xFFFE ) + v5 = 0xFFFF; + v6 = a1 - 1; + if ( a1 ) + { + do + { + v7 = v5 >= std::`anonymous namespace'::read_utf8_code_point(v9, v5); + v8 = v6-- != 0; + } + while ( v8 && v7 ); + } +} + +//----- (00492FC0) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::utf16_out@( + unsigned __int16 **a1@, + int *a2@, + unsigned int a3@, + char a4, + int a5) +{ + char v6; // al + int *v8; // [esp+0h] [ebp-10h] + unsigned int v9; // [esp+4h] [ebp-Ch] + + if ( (a4 & 2) != 0 + && (v9 = a3, v8 = a2, v6 = std::`anonymous namespace'::write_utf8_bom(a2), a2 = v8, a3 = v9, !v6) ) + { + return 1; + } + else + { + return std::`anonymous namespace'::utf16_out(a1, (_BYTE **)a2, a3, a5); + } +} + +//----- (00493010) -------------------------------------------------------- +int __usercall std::`anonymous namespace'::utf16_out@( + unsigned __int16 **a1@, + _BYTE **a2@, + unsigned int a3@, + int a4) +{ + unsigned __int16 *i; // eax + int v8; // eax + int v9; // ebp + unsigned int v10; // edx + + for ( i = *a1; ; *a1 = i ) + { + if ( a1[1] == i ) + return 0; + v10 = *i; + if ( v10 - 55296 <= 0x3FF ) + { + if ( a4 == 1 ) + return 2; + if ( (unsigned int)(a1[1] - i) <= 1 ) + return 0; + v8 = i[1]; + if ( (unsigned int)(v8 - 56320) > 0x3FF ) + return 2; + v9 = 2; + v10 = v8 + (v10 << 10) - 56613888; + if ( v10 > a3 ) + return 2; + } + else + { + if ( v10 - 56320 <= 0x3FF ) + return 2; + v9 = 1; + if ( v10 > a3 ) + return 2; + } + if ( !(unsigned __int8)std::`anonymous namespace'::write_utf8_code_point(a2, v10) ) + break; + i = &(*a1)[v9]; + } + return 1; +} + +//----- (004930C0) -------------------------------------------------------- +int __fastcall std::__basic_file::fd(int a1) +{ + return *(_DWORD *)(*(_DWORD *)a1 + 16); +} + +//----- (004930D0) -------------------------------------------------------- +int __fastcall std::__basic_file::file(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004930E0) -------------------------------------------------------- +_BYTE *__thiscall std::__basic_file::open(_BYTE *this, char *FileName, char a3, int a4) +{ + unsigned int v4; // edx + const char *Mode; // eax + FILE *v7; // eax + + v4 = (a3 & 0x3D) - 1; + if ( v4 > 0x3B ) + return 0; + Mode = (&CSWTCH_20)[v4]; + if ( !Mode ) + return 0; + if ( *(_DWORD *)this ) + return 0; + v7 = fopen(FileName, Mode); + *(_DWORD *)this = v7; + if ( !v7 ) + return 0; + this[4] = 1; + return this; +} + +//----- (00493140) -------------------------------------------------------- +FILE *__thiscall std::__basic_file::open(_BYTE *this, wchar_t *FileName, char a3) +{ + FILE *v4; // ecx + unsigned int v5; // edx + char *v6; // esi + int v7; // eax + char v8; // dl + FILE *v9; // eax + wchar_t Mode[2]; // [esp+18h] [ebp-14h] BYREF + int v12; // [esp+1Ch] [ebp-10h] + + v4 = 0; + v5 = (a3 & 0x3D) - 1; + if ( v5 > 0x3B ) + return v4; + v6 = (&CSWTCH_20)[v5]; + if ( !v6 ) + return v4; + v4 = *(FILE **)this; + if ( !*(_DWORD *)this ) + { + *(_DWORD *)Mode = 0; + v7 = 0; + v12 = 0; + v8 = *v6; + do + { + while ( 1 ) + { + while ( 1 ) + { + while ( v8 == 98 ) + { + Mode[v7++] = 98; + v8 = v6[v7]; + if ( !v8 ) + goto LABEL_10; + } + if ( v8 > 98 ) + break; + if ( v8 == 43 ) + { + Mode[v7++] = 43; + v8 = v6[v7]; + if ( !v8 ) + goto LABEL_10; + } + else + { + if ( v8 != 97 ) + return v4; + Mode[v7++] = 97; + v8 = v6[v7]; + if ( !v8 ) + goto LABEL_10; + } + } + if ( v8 != 114 ) + break; + Mode[v7++] = 114; + v8 = v6[v7]; + if ( !v8 ) + goto LABEL_10; + } + if ( v8 != 119 ) + return v4; + Mode[v7++] = 119; + v8 = v6[v7]; + } + while ( v8 ); +LABEL_10: + v9 = _wfopen(FileName, Mode); + *(_DWORD *)this = v9; + v4 = v9; + if ( v9 ) + { + this[4] = 1; + return (FILE *)this; + } + return v4; + } + return 0; +} + +//----- (00493290) -------------------------------------------------------- +int __fastcall std::__basic_file::sync(FILE **a1) +{ + return fflush(*a1); +} + +//----- (004932B0) -------------------------------------------------------- +int __fastcall std::__basic_file::close(int a1) +{ + int v3; // eax + + if ( !*(_DWORD *)a1 ) + return 0; + if ( *(_BYTE *)(a1 + 4) ) + { + v3 = fclose(*(FILE **)a1); + *(_DWORD *)a1 = 0; + if ( v3 ) + return 0; + else + return a1; + } + else + { + *(_DWORD *)a1 = 0; + return a1; + } +} + +//----- (00493310) -------------------------------------------------------- +int __thiscall std::__basic_file::xsgetn(void *this, void *DstBuf, unsigned int MaxCharCount) +{ + int v4; // ebx + + do + v4 = read(*(_DWORD *)(*(_DWORD *)this + 16), DstBuf, MaxCharCount); + while ( v4 == -1 && *_errno() == 4 ); + return v4; +} + +//----- (00493360) -------------------------------------------------------- +unsigned int __thiscall std::__basic_file::xsputn(void *this, char *a2, unsigned int a3) +{ + return `anonymous namespace'::xwrite(*(_DWORD *)(*(_DWORD *)this + 16), a2, a3); +} + +//----- (00493380) -------------------------------------------------------- +__int64 __thiscall std::__basic_file::seekoff(void *this, __int64 Offset, int Origin) +{ + if ( (unsigned __int64)(Offset + 0x80000000LL) >> 32 ) + return -1LL; + else + return lseek(*(_DWORD *)(*(_DWORD *)this + 16), Offset, Origin); +} + +//----- (004933E0) -------------------------------------------------------- +_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, FILE *Stream, int a3) +{ + int v4; // edi + _BYTE *result; // eax + + if ( !*(_DWORD *)this && Stream ) + { + v4 = *_errno(); + *_errno() = 0; + do + { + if ( !fflush(Stream) ) + { + *_errno() = v4; + result = this; + *(_DWORD *)this = Stream; + this[4] = 0; + return result; + } + } + while ( *_errno() == 4 ); + *_errno() = v4; + } + return 0; +} + +//----- (00493460) -------------------------------------------------------- +_BYTE *__thiscall std::__basic_file::sys_open(_BYTE *this, int FileHandle, char a3) +{ + unsigned int v3; // eax + const char *Format; // eax + _BYTE *v5; // ebx + FILE *v7; // eax + + v3 = (a3 & 0x3D) - 1; + if ( v3 > 0x3B ) + return 0; + Format = (&CSWTCH_20)[v3]; + if ( !Format ) + return 0; + if ( *(_DWORD *)this ) + return 0; + v7 = fdopen(FileHandle, Format); + *(_DWORD *)this = v7; + if ( !v7 ) + return 0; + this[4] = 1; + v5 = this; + if ( !FileHandle ) + setvbuf(v7, 0, 4, 0); + return v5; +} + +//----- (004934E0) -------------------------------------------------------- +unsigned int __thiscall std::__basic_file::xsputn_2( + void *this, + char *a2, + unsigned int a3, + char *a4, + unsigned int a5) +{ + int v5; // eax + unsigned int result; // eax + + v5 = *(_DWORD *)(*(_DWORD *)this + 16); + if ( !a3 ) + return a3 + `anonymous namespace'::xwrite(v5, a4, a5); + result = `anonymous namespace'::xwrite(v5, a2, a3); + if ( a3 == result ) + { + v5 = *(_DWORD *)(*(_DWORD *)this + 16); + return a3 + `anonymous namespace'::xwrite(v5, a4, a5); + } + return result; +} + +//----- (00493530) -------------------------------------------------------- +int __fastcall std::__basic_file::showmanyc(int a1) +{ + int result; // eax + _off_t st_size; // ebx + struct _stat32 Stat; // [esp+1Ch] [ebp-30h] BYREF + + result = fstat(*(_DWORD *)(*(_DWORD *)a1 + 16), &Stat); + if ( result ) + return 0; + if ( (Stat.st_mode & 0xF000) == 0x8000 ) + { + st_size = Stat.st_size; + return st_size - lseek(*(_DWORD *)(*(_DWORD *)a1 + 16), 0, 1); + } + return result; +} + +//----- (004935B0) -------------------------------------------------------- +void __thiscall std::__basic_file::__basic_file(_BYTE *this, int a2) +{ + *(_DWORD *)this = 0; + this[4] = 0; +} + +//----- (004935D0) -------------------------------------------------------- +_DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = a2; + *this = *a2; + *a2 = &unk_4E93FC; + return result; +} + +//----- (004935F0) -------------------------------------------------------- +_DWORD *__userpurge std::__cow_string::__cow_string@( + _DWORD *a1@, + std::__cow_string *this, + const char *a3, + unsigned int a4) +{ + char v5[13]; // [esp+1Fh] [ebp-Dh] BYREF + + return std::string::string(a1, this, (int)a3, (int)v5); +} +// 4935F0: using guessed type char var_D[13]; + +//----- (00493620) -------------------------------------------------------- +_DWORD *__thiscall std::__cow_string::__cow_string(_DWORD *this, int a2) +{ + unsigned int v3; // [esp+8h] [ebp-14h] + + return std::__cow_string::__cow_string(this, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v3); +} +// 493633: variable 'v3' is possibly undefined + +//----- (00493650) -------------------------------------------------------- +unsigned int *__userpurge std::__cow_string::__cow_string@( + unsigned int **a1@, + unsigned int **this, + const std::__cow_string *a3) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + return std::string::string(a1, this, v4); +} +// 49365A: variable 'v4' is possibly undefined + +//----- (00493680) -------------------------------------------------------- +void __fastcall std::__cow_string::__cow_string(_DWORD *a1) +{ + *a1 = &unk_4E93FC; +} + +//----- (00493690) -------------------------------------------------------- +void __fastcall std::__cow_string::~__cow_string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v3); + } +} +// 15412D0: using guessed type int _CRT_MT; +// 493690: using guessed type int var_D[3]; + +//----- (004936F0) -------------------------------------------------------- +int *__thiscall std::__cow_string::operator=(int *this, std::string *a2) +{ + std::string *v4; // [esp+4h] [ebp-18h] + + std::string::swap(this, a2, v4); + return this; +} +// 4936FD: variable 'v4' is possibly undefined + +//----- (00493710) -------------------------------------------------------- +unsigned int **__thiscall std::__cow_string::operator=(unsigned int **this, unsigned int **a2) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + std::string::assign(this, a2, v4); + return this; +} +// 49371D: variable 'v4' is possibly undefined + +//----- (00493730) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr( + _DWORD *this, + _DWORD *a2) +{ + volatile signed __int32 *result; // eax + + result = (volatile signed __int32 *)a2[1]; + *this = *a2; + this[1] = result; + if ( result ) + return __gnu_cxx::__atomic_add_dispatch(result + 1); + return result; +} + +//----- (00493754) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr( + _DWORD *this, + _DWORD *a2) +{ + volatile signed __int32 *result; // eax + + result = (volatile signed __int32 *)a2[1]; + *this = *a2; + this[1] = result; + if ( result ) + return __gnu_cxx::__atomic_add_dispatch(result + 1); + return result; +} + +//----- (00493778) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::__shared_ptr::operator=( + volatile signed __int32 **this, + volatile signed __int32 **a2) +{ + volatile signed __int32 **v3; // ecx + volatile signed __int32 *v4; // eax + + v3 = this + 1; + v4 = a2[1]; + *(v3 - 1) = *a2; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, v4); + return this; +} + +//----- (004937A4) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::__shared_ptr::__shared_ptr( + _DWORD *this, + _DWORD *a2) +{ + volatile signed __int32 *result; // eax + + result = (volatile signed __int32 *)a2[1]; + *this = *a2; + this[1] = result; + if ( result ) + return __gnu_cxx::__atomic_add_dispatch(result + 1); + return result; +} + +//----- (004937C8) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::__shared_ptr::operator=( + volatile signed __int32 **this, + volatile signed __int32 **a2) +{ + volatile signed __int32 **v3; // ecx + volatile signed __int32 *v4; // eax + + v3 = this + 1; + v4 = a2[1]; + *(v3 - 1) = *a2; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v3, v4); + return this; +} + +//----- (00493800) -------------------------------------------------------- +_DWORD *__thiscall std::__sso_string::__sso_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + int v3; // ebx + + result = a2; + *this = this + 2; + if ( (_DWORD *)*result == result + 2 ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + } + else + { + *this = *a2; + this[2] = a2[2]; + } + v3 = a2[1]; + *a2 = a2 + 2; + a2[1] = 0; + this[1] = v3; + *((_BYTE *)a2 + 8) = 0; + return result; +} + +//----- (00493860) -------------------------------------------------------- +unsigned int __userpurge std::__sso_string::__sso_string@( + void **a1@, + std::__sso_string *this, + const char *a3, + unsigned int a4) +{ + int v5; // [esp+8h] [ebp-14h] + + *a1 = a1 + 2; + LOBYTE(v5) = 0; + return std::string::_M_construct(a1, (unsigned __int8 *)this, (size_t)&a3[(_DWORD)this], v5); +} +// 49387E: variable 'v5' is possibly undefined + +//----- (00493890) -------------------------------------------------------- +_BYTE *__thiscall std::__sso_string::__sso_string(_DWORD *this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v3) = 0; + return std::string::_M_construct(this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v3); +} +// 4938B0: variable 'v3' is possibly undefined + +//----- (004938C0) -------------------------------------------------------- +_BYTE *__userpurge std::__sso_string::__sso_string@( + _DWORD *a1@, + std::__sso_string *this, + const std::__sso_string *a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *a1 = a1 + 2; + LOBYTE(v4) = 0; + return std::string::_M_construct(a1, *(_BYTE **)this, *(_DWORD *)this + *((_DWORD *)this + 1), v4); +} +// 4938E0: variable 'v4' is possibly undefined + +//----- (004938F0) -------------------------------------------------------- +unsigned int __userpurge std::__sso_string::__sso_string@( + void **a1@, + std::__sso_string **this, + const std::string *a3) +{ + unsigned int v4; // [esp+8h] [ebp-14h] + + return std::__sso_string::__sso_string(a1, *this, *((const char **)*this - 3), v4); +} +// 493903: variable 'v4' is possibly undefined + +//----- (00493920) -------------------------------------------------------- +int __fastcall std::__sso_string::__sso_string(int a1) +{ + int result; // eax + + result = a1 + 8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + return result; +} + +//----- (00493940) -------------------------------------------------------- +void __fastcall std::__sso_string::~__sso_string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (00493970) -------------------------------------------------------- +_DWORD *__thiscall std::__sso_string::operator=(_DWORD *this, int a2) +{ + _BYTE *v3; // eax + _BYTE *Src; // ecx + int v5; // edx + int v6; // ebp + + v3 = (_BYTE *)*this; + Src = *(_BYTE **)a2; + v5 = *(_DWORD *)(a2 + 4); + if ( *(_DWORD *)a2 != a2 + 8 ) + { + if ( v3 == (_BYTE *)(this + 2) ) + { + *this = Src; + this[1] = v5; + this[2] = *(_DWORD *)(a2 + 8); + } + else + { + *this = Src; + v6 = this[2]; + this[1] = v5; + this[2] = *(_DWORD *)(a2 + 8); + if ( v3 ) + { + *(_DWORD *)a2 = v3; + *(_DWORD *)(a2 + 8) = v6; + goto LABEL_5; + } + } + *(_DWORD *)a2 = a2 + 8; + v3 = (_BYTE *)(a2 + 8); + goto LABEL_5; + } + if ( v5 ) + { + if ( v5 == 1 ) + *v3 = *(_BYTE *)(a2 + 8); + else + memcpy(v3, Src, *(_DWORD *)(a2 + 4)); + v5 = *(_DWORD *)(a2 + 4); + v3 = (_BYTE *)*this; + } + this[1] = v5; + v3[v5] = 0; + v3 = *(_BYTE **)a2; +LABEL_5: + *(_DWORD *)(a2 + 4) = 0; + *v3 = 0; + return this; +} + +//----- (00493A20) -------------------------------------------------------- +void *__thiscall std::__sso_string::operator=(void *this, int a2) +{ + std::string::_M_assign((int)this, a2); + return this; +} + +//----- (00493A40) -------------------------------------------------------- +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::ctype::ctype(this, 0, 0, a3); + *this = &off_4F5FA8; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F5FA8: using guessed type int (*off_4F5FA8)(); + +//----- (00493AE0) -------------------------------------------------------- +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) +{ + return std::ctype_byname::ctype_byname(this, *a2, a3); +} + +//----- (00493AF0) -------------------------------------------------------- +unsigned __int8 __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) +{ + return std::ctype_byname::ctype_byname(this, *a2, a3); +} + +//----- (00493B00) -------------------------------------------------------- +void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5FA8; + std::ctype::~ctype(v2); + operator delete(a1); +} +// 493B0C: variable 'v2' is possibly undefined +// 4F5FA8: using guessed type int (*off_4F5FA8)(); + +//----- (00493B20) -------------------------------------------------------- +void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5FA8; + std::ctype::~ctype(a1); +} +// 493B20: variable 'v1' is possibly undefined +// 4F5FA8: using guessed type int (*off_4F5FA8)(); + +//----- (00493B30) -------------------------------------------------------- +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int **a2, int a3) +{ + char result; // al + bool v5; // zf + + result = std::ctype::ctype(this, a3); + *this = &off_4F5FD8; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + return std::ctype::_M_initialize_ctype((int)this); + } + } + return result; +} +// 4F5FD8: using guessed type int (*off_4F5FD8)(); + +//----- (00493BC0) -------------------------------------------------------- +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) +{ + return std::ctype_byname::ctype_byname(this, *a2, a3); +} + +//----- (00493BD0) -------------------------------------------------------- +char __thiscall std::ctype_byname::ctype_byname(_DWORD *this, int ***a2, int a3) +{ + return std::ctype_byname::ctype_byname(this, *a2, a3); +} + +//----- (00493BE0) -------------------------------------------------------- +void __fastcall std::ctype_byname::~ctype_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6A88; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + *a1 = &unk_4F688C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 493BFF: variable 'v2' is possibly undefined +// 4F6A88: using guessed type int (*off_4F6A88)(); + +//----- (00493C20) -------------------------------------------------------- +void __cdecl std::ctype_byname::~ctype_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_4F6A88; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + *v2 = &unk_4F688C; + std::locale::facet::~facet(a1); +} +// 493C24: variable 'v1' is possibly undefined +// 4F6A88: using guessed type int (*off_4F6A88)(); + +//----- (00493C50) -------------------------------------------------------- +_DWORD *__userpurge std::domain_error::domain_error@(_DWORD *a1@, std::domain_error *this, const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_4F6018; + return result; +} +// 493C5D: variable 'v5' is possibly undefined +// 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); + +//----- (00493C80) -------------------------------------------------------- +_DWORD *__thiscall std::domain_error::domain_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::logic_error::logic_error(this, a2); + *this = &off_4F6018; + return result; +} +// 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); + +//----- (00493CB0) -------------------------------------------------------- +unsigned int *__userpurge std::domain_error::domain_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_4F6018; + return result; +} +// 493CBD: variable 'v5' is possibly undefined +// 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); + +//----- (00493CE0) -------------------------------------------------------- +void __fastcall std::domain_error::~domain_error(_DWORD *a1) +{ + *a1 = &off_4F6018; + std::logic_error::~logic_error(a1); + operator delete(a1); +} +// 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); + +//----- (00493D00) -------------------------------------------------------- +void __fastcall std::domain_error::~domain_error(_DWORD *a1) +{ + *a1 = &off_4F6018; + std::logic_error::~logic_error(a1); +} +// 4F6018: using guessed type void (__cdecl *off_4F6018)(std::domain_error *__hidden this); + +//----- (00493D10) -------------------------------------------------------- +_DWORD *__userpurge std::length_error::length_error@(_DWORD *a1@, std::length_error *this, const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_4F602C; + return result; +} +// 493D1D: variable 'v5' is possibly undefined +// 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); + +//----- (00493D40) -------------------------------------------------------- +_DWORD *__thiscall std::length_error::length_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::logic_error::logic_error(this, a2); + *this = &off_4F602C; + return result; +} +// 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); + +//----- (00493D70) -------------------------------------------------------- +unsigned int *__userpurge std::length_error::length_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_4F602C; + return result; +} +// 493D7D: variable 'v5' is possibly undefined +// 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); + +//----- (00493DA0) -------------------------------------------------------- +void __fastcall std::length_error::~length_error(_DWORD *a1) +{ + *a1 = &off_4F602C; + std::logic_error::~logic_error(a1); + operator delete(a1); +} +// 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); + +//----- (00493DC0) -------------------------------------------------------- +void __fastcall std::length_error::~length_error(_DWORD *a1) +{ + *a1 = &off_4F602C; + std::logic_error::~logic_error(a1); +} +// 4F602C: using guessed type void (__cdecl *off_4F602C)(std::length_error *__hidden this); + +//----- (00493DD0) -------------------------------------------------------- +_DWORD *__userpurge std::out_of_range::out_of_range@(_DWORD *a1@, std::out_of_range *this, const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_4F6040; + return result; +} +// 493DDD: variable 'v5' is possibly undefined +// 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); + +//----- (00493E00) -------------------------------------------------------- +_DWORD *__thiscall std::out_of_range::out_of_range(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::logic_error::logic_error(this, a2); + *this = &off_4F6040; + return result; +} +// 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); + +//----- (00493E30) -------------------------------------------------------- +unsigned int *__userpurge std::out_of_range::out_of_range@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_4F6040; + return result; +} +// 493E3D: variable 'v5' is possibly undefined +// 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); + +//----- (00493E60) -------------------------------------------------------- +void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) +{ + *a1 = &off_4F6040; + std::logic_error::~logic_error(a1); + operator delete(a1); +} +// 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); + +//----- (00493E80) -------------------------------------------------------- +void __fastcall std::out_of_range::~out_of_range(_DWORD *a1) +{ + *a1 = &off_4F6040; + std::logic_error::~logic_error(a1); +} +// 4F6040: using guessed type void (__cdecl *off_4F6040)(std::out_of_range *__hidden this); + +//----- (00493E90) -------------------------------------------------------- +void __fastcall std::system_error::~system_error(_DWORD *a1) +{ + *a1 = &off_4F6054; + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} +// 4F6054: using guessed type void (__cdecl *off_4F6054)(std::system_error *__hidden this); + +//----- (00493EB0) -------------------------------------------------------- +void __fastcall std::system_error::~system_error(_DWORD *a1) +{ + *a1 = &off_4F6054; + std::runtime_error::~runtime_error(a1); +} +// 4F6054: using guessed type void (__cdecl *off_4F6054)(std::system_error *__hidden this); + +//----- (00493EC0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + char a10) +{ + int result; // eax + + switch ( a10 ) + { + case 'd': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'x': + case 'y': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'm': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 't': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'w': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + } + return result; +} + +//----- (00494030) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + char a10) +{ + int result; // eax + + switch ( a10 ) + { + case 'd': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'x': + case 'y': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'm': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 't': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'w': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + } + return result; +} + +//----- (004941A0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + char a10) +{ + int result; // eax + + switch ( a10 ) + { + case 'd': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'x': + case 'y': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'm': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 't': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'w': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + } + return result; +} + +//----- (00494310) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + char a10) +{ + int result; // eax + + switch ( a10 ) + { + case 'd': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 16))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 'u': + case 'v': + case 'x': + case 'y': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 28))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'm': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 24))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 't': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + case 'w': + result = (*(int (__thiscall **)(int, int, int, int, int, int, int, int))(*(_DWORD *)a2 + 20))( + a2, + a3, + a4, + a5, + a6, + a7, + a8, + a9); + break; + } + return result; +} + +//----- (00494480) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_get( + int a1, + int *a2, + int a3, + std::string *a4, + int a5, + int a6, + unsigned __int8 a7, + int a8, + _DWORD *a9, + int a10, + int a11) +{ + int v11; // eax + int result; // eax + int v13; // esi + unsigned int *v14; // ecx + int v15; // esi + void (__cdecl *v16)(int); // eax + int v17; // eax + const std::string *v18; // [esp+4h] [ebp-54h] + int v19; // [esp+2Ch] [ebp-2Ch] + int v20; // [esp+3Bh] [ebp-1Dh] BYREF + unsigned int *v21[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v11 = *a2; + if ( a10 ) + return (*(int (__stdcall **)(int, std::string *, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v21[0] = (unsigned int *)&unk_4E93FC; + v13 = ((__int64 (__stdcall *)(int, std::string *, int, int, _DWORD, int, _DWORD *, unsigned int **))*(_DWORD *)(v11 + 12))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + v21); + if ( *a9 ) + { + v14 = v21[0]; + } + else + { + v16 = *(void (__cdecl **)(int))(a11 + 24); + if ( v16 ) + v16(a11); + std::string::string((unsigned int **)a11, v21, v18); + v14 = v21[0]; + v17 = *(v21[0] - 3); + *(_DWORD *)(a11 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + *(_DWORD *)(a11 + 4) = v17; + } + result = v13; + if ( v14 != (unsigned int *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)v14 - 1, 0xFFFFFFFF); + } + else + { + v15 = *(v14 - 1); + *(v14 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + { + v19 = result; + std::string::_Rep::_M_destroy(v14 - 3, (int)&v20); + return v19; + } + } + return result; +} +// 494593: variable 'v18' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004945F0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_get( + int a1, + int *a2, + int a3, + int a4, + int a5, + int a6, + unsigned __int8 a7, + int a8, + _DWORD *a9, + int a10, + _DWORD *a11) +{ + int v11; // eax + int result; // eax + int v13; // edi + void (__cdecl *v14)(_DWORD *); // eax + int v15; // edx + int v16; // [esp+8h] [ebp-60h] + void *v17; // [esp+38h] [ebp-30h] BYREF + int v18; // [esp+3Ch] [ebp-2Ch] + char v19[40]; // [esp+40h] [ebp-28h] BYREF + + v11 = *a2; + if ( a10 ) + return (*(int (__stdcall **)(int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v17 = v19; + v18 = 0; + v19[0] = 0; + v13 = ((__int64 (__stdcall *)(int, int, int, int, _DWORD, int, _DWORD *, void **))*(_DWORD *)(v11 + 12))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + &v17); + if ( !*a9 ) + { + v14 = (void (__cdecl *)(_DWORD *))a11[6]; + if ( v14 ) + v14(a11); + v15 = v18; + *a11 = a11 + 2; + LOBYTE(v16) = 0; + std::string::_M_construct(a11, v17, (int)v17 + v15, v16); + a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + } + result = v13; + if ( v17 != v19 ) + { + operator delete(v17); + return v13; + } + return result; +} +// 494701: variable 'v16' is possibly undefined + +//----- (00494730) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_get( + int a1, + int *a2, + int a3, + int a4, + int a5, + int a6, + unsigned __int8 a7, + int a8, + _DWORD *a9, + int a10, + _DWORD *a11) +{ + int v11; // eax + int result; // eax + int v13; // esi + volatile signed __int32 *v14; // ecx + int v15; // esi + void (__cdecl *v16)(_DWORD *); // eax + int v17; // eax + int v18; // [esp+2Ch] [ebp-2Ch] + int v19; // [esp+3Bh] [ebp-1Dh] BYREF + _DWORD v20[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v11 = *a2; + if ( a10 ) + return (*(int (__stdcall **)(int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v20[0] = &unk_4E93EC; + v13 = ((__int64 (__stdcall *)(int, int, int, int, _DWORD, int, _DWORD *, _DWORD *))*(_DWORD *)(v11 + 12))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + v20); + if ( *a9 ) + { + v14 = (volatile signed __int32 *)v20[0]; + } + else + { + v16 = (void (__cdecl *)(_DWORD *))a11[6]; + if ( v16 ) + v16(a11); + std::wstring::basic_string(a11, v20); + v14 = (volatile signed __int32 *)v20[0]; + v17 = *(_DWORD *)(v20[0] - 12); + a11[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + a11[1] = v17; + } + result = v13; + if ( v14 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd(v14 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v14 - 1); + *((_DWORD *)v14 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + { + v18 = result; + std::wstring::_Rep::_M_destroy((void *)(v14 - 3), (int)&v19); + return v18; + } + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004948A0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_get( + int a1, + int *a2, + int a3, + int a4, + int a5, + int a6, + unsigned __int8 a7, + int a8, + _DWORD *a9, + int a10, + int a11) +{ + int v11; // eax + int result; // eax + int v13; // esi + void (__cdecl *v14)(int); // eax + int v15; // edx + int v16; // [esp+8h] [ebp-60h] + wchar_t *v17; // [esp+38h] [ebp-30h] BYREF + int v18; // [esp+3Ch] [ebp-2Ch] + __int16 v19[20]; // [esp+40h] [ebp-28h] BYREF + + v11 = *a2; + if ( a10 ) + return (*(int (__stdcall **)(int, int, int, int, _DWORD, int, _DWORD *, int))(v11 + 8))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + a10); + v17 = (wchar_t *)v19; + v19[0] = 0; + v18 = 0; + v13 = ((__int64 (__stdcall *)(int, int, int, int, _DWORD, int, _DWORD *, wchar_t **))*(_DWORD *)(v11 + 12))( + a3, + a4, + a5, + a6, + a7, + a8, + a9, + &v17); + if ( !*a9 ) + { + v14 = *(void (__cdecl **)(int))(a11 + 24); + if ( v14 ) + v14(a11); + v15 = v18; + *(_DWORD *)a11 = a11 + 8; + LOBYTE(v16) = 0; + std::wstring::_M_construct((wchar_t **)a11, v17, (int)&v17[v15], v16); + *(_DWORD *)(a11 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + } + result = v13; + if ( v17 != (wchar_t *)v19 ) + { + operator delete(v17); + return v13; + } + return result; +} +// 4949BA: variable 'v16' is possibly undefined + +//----- (004949F0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_put( + int a1, + int a2, + int a3, + int a4, + unsigned __int8 a5, + int a6, + char a7, + long double a8, + int a9) +{ + int result; // eax + int v10; // esi + int v12; // [esp+20h] [ebp-38h] + void *v13; // [esp+2Ch] [ebp-2Ch] + char v14; // [esp+3Bh] [ebp-1Dh] BYREF + _DWORD v15[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + if ( !a9 ) + return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( + a2, + a3, + a4, + a5, + a6, + a7, + LODWORD(a8), + DWORD1(a8), + HIDWORD(a8)); + if ( !*(_DWORD *)(a9 + 24) ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::string::string(v15, *(_BYTE **)a9, *(_DWORD *)(a9 + 4), (int)&v14); + result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD *))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + v15); + v13 = (void *)(v15[0] - 12); + if ( (_UNKNOWN *)v15[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v10 = _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF); + } + else + { + v10 = *(_DWORD *)(v15[0] - 4); + *(_DWORD *)(v15[0] - 4) = v10 - 1; + } + if ( v10 <= 0 ) + { + v12 = result; + std::string::_Rep::_M_destroy(v13, (int)&v14); + return v12; + } + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00494B50) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_put( + int a1, + int a2, + int a3, + int a4, + unsigned __int8 a5, + int a6, + char a7, + long double a8, + int a9) +{ + unsigned __int8 *v9; // ecx + int result; // eax + int v11; // [esp+8h] [ebp-60h] + int v13; // [esp+28h] [ebp-40h] + void *v14[2]; // [esp+38h] [ebp-30h] BYREF + char v15[40]; // [esp+40h] [ebp-28h] BYREF + + if ( !a9 ) + return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( + a2, + a3, + a4, + a5, + a6, + a7, + LODWORD(a8), + DWORD1(a8), + HIDWORD(a8)); + if ( !*(_DWORD *)(a9 + 24) ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + v9 = *(unsigned __int8 **)a9; + LOBYTE(v11) = 0; + v14[0] = v15; + std::string::_M_construct(v14, v9, (size_t)&v9[*(_DWORD *)(a9 + 4)], v11); + result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, void **))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + v14); + if ( v14[0] != v15 ) + { + v13 = result; + operator delete(v14[0]); + return v13; + } + return result; +} +// 494B96: variable 'v11' is possibly undefined + +//----- (00494C70) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_put( + int a1, + int a2, + int a3, + int a4, + unsigned __int8 a5, + int a6, + unsigned __int16 a7, + long double a8, + int a9) +{ + int result; // eax + int v10; // esi + int v12; // [esp+20h] [ebp-38h] + void *v13; // [esp+2Ch] [ebp-2Ch] + char v14; // [esp+3Bh] [ebp-1Dh] BYREF + _DWORD v15[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + if ( !a9 ) + return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( + a2, + a3, + a4, + a5, + a6, + a7, + LODWORD(a8), + DWORD1(a8), + HIDWORD(a8)); + if ( !*(_DWORD *)(a9 + 24) ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + std::wstring::basic_string(v15, *(const wchar_t **)a9, *(_DWORD *)(a9 + 4), (int)&v14); + result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD *))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + v15); + v13 = (void *)(v15[0] - 12); + if ( (_UNKNOWN *)v15[0] != &unk_4E93EC ) + { + if ( _CRT_MT ) + { + v10 = _InterlockedExchangeAdd((volatile signed __int32 *)(v15[0] - 4), 0xFFFFFFFF); + } + else + { + v10 = *(_DWORD *)(v15[0] - 4); + *(_DWORD *)(v15[0] - 4) = v10 - 1; + } + if ( v10 <= 0 ) + { + v12 = result; + std::wstring::_Rep::_M_destroy(v13, (int)&v14); + return v12; + } + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00494DD0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__money_put( + int a1, + int a2, + int a3, + int a4, + unsigned __int8 a5, + int a6, + unsigned __int16 a7, + long double a8, + int a9) +{ + int result; // eax + wchar_t *v10; // [esp+0h] [ebp-68h] + int v11; // [esp+4h] [ebp-64h] + int v12; // [esp+8h] [ebp-60h] + int v14; // [esp+28h] [ebp-40h] + void *v15[2]; // [esp+38h] [ebp-30h] BYREF + char v16[40]; // [esp+40h] [ebp-28h] BYREF + + if ( !a9 ) + return (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)a2 + 8))( + a2, + a3, + a4, + a5, + a6, + a7, + LODWORD(a8), + DWORD1(a8), + HIDWORD(a8)); + if ( !*(_DWORD *)(a9 + 24) ) + std::__throw_logic_error((std::logic_error *)"uninitialized __any_string"); + LOBYTE(v12) = 0; + v10 = *(wchar_t **)a9; + v11 = *(_DWORD *)a9 + 2 * *(_DWORD *)(a9 + 4); + v15[0] = v16; + std::wstring::_M_construct((wchar_t **)v15, v10, v11, v12); + result = (*(int (__thiscall **)(int, int, int, _DWORD, int, _DWORD, void **))(*(_DWORD *)a2 + 12))( + a2, + a3, + a4, + a5, + a6, + a7, + v15); + if ( v15[0] != v16 ) + { + v14 = result; + operator delete(v15[0]); + return v14; + } + return result; +} +// 494E1A: variable 'v12' is possibly undefined + +//----- (00494EF0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F5360; + v3 = (volatile signed __int32 *)a1[3]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F6BD0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 494F2E: variable 'v5' is possibly undefined +// 4F5360: using guessed type int (*off_4F5360)(); +// 4F6BD0: using guessed type int (*off_4F6BD0)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00494F50) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F537C; + v3 = (volatile signed __int32 *)a1[3]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F5C58; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 494F8E: variable 'v5' is possibly undefined +// 4F537C: using guessed type int (*off_4F537C)(); +// 4F5C58: using guessed type int (*off_4F5C58)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00494FB0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F5360; + v4 = (volatile signed __int32 *)v1[3]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F6BD0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); + std::locale::facet::~facet(a1); +} +// 494FB1: variable 'v1' is possibly undefined +// 4F5360: using guessed type int (*off_4F5360)(); +// 4F6BD0: using guessed type int (*off_4F6BD0)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495010) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F537C; + v4 = (volatile signed __int32 *)v1[3]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F5C58; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); + std::locale::facet::~facet(a1); +} +// 495011: variable 'v1' is possibly undefined +// 4F537C: using guessed type int (*off_4F537C)(); +// 4F5C58: using guessed type int (*off_4F5C58)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495070) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F5398; + v3 = (volatile signed __int32 *)a1[3]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F6BEC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4950AE: variable 'v5' is possibly undefined +// 4F5398: using guessed type int (*off_4F5398)(); +// 4F6BEC: using guessed type int (*off_4F6BEC)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004950D0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F53B4; + v3 = (volatile signed __int32 *)a1[3]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F5C74; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 49510E: variable 'v5' is possibly undefined +// 4F53B4: using guessed type int (*off_4F53B4)(); +// 4F5C74: using guessed type int (*off_4F5C74)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495130) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F5398; + v4 = (volatile signed __int32 *)v1[3]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F6BEC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); + std::locale::facet::~facet(a1); +} +// 495131: variable 'v1' is possibly undefined +// 4F5398: using guessed type int (*off_4F5398)(); +// 4F6BEC: using guessed type int (*off_4F6BEC)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495190) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::collate_shim::~collate_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F53B4; + v4 = (volatile signed __int32 *)v1[3]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F5C74; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v2 + 2)); + std::locale::facet::~facet(a1); +} +// 495191: variable 'v1' is possibly undefined +// 4F53B4: using guessed type int (*off_4F53B4)(); +// 4F5C74: using guessed type int (*off_4F5C74)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004951F0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F53D0; + v3 = (volatile signed __int32 *)a1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(v5); + operator delete(a1); +} +// 49521D: variable 'v5' is possibly undefined +// 4F53D0: using guessed type int (*off_4F53D0)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495240) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F53EC; + v3 = (volatile signed __int32 *)a1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(v5); + operator delete(a1); +} +// 49526D: variable 'v5' is possibly undefined +// 4F53EC: using guessed type int (*off_4F53EC)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495290) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = _CRT_MT; + *v1 = &off_4F53D0; + v3 = (volatile signed __int32 *)v1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(a1); +} +// 49529B: variable 'v1' is possibly undefined +// 4F53D0: using guessed type int (*off_4F53D0)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004952E0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = _CRT_MT; + *v1 = &off_4F53EC; + v3 = (volatile signed __int32 *)v1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(a1); +} +// 4952EB: variable 'v1' is possibly undefined +// 4F53EC: using guessed type int (*off_4F53EC)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495330) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F5408; + v3 = (volatile signed __int32 *)a1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(v5); + operator delete(a1); +} +// 49535D: variable 'v5' is possibly undefined +// 4F5408: using guessed type int (*off_4F5408)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495380) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F5424; + v3 = (volatile signed __int32 *)a1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(v5); + operator delete(a1); +} +// 4953AD: variable 'v5' is possibly undefined +// 4F5424: using guessed type int (*off_4F5424)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004953D0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = _CRT_MT; + *v1 = &off_4F5408; + v3 = (volatile signed __int32 *)v1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(a1); +} +// 4953DB: variable 'v1' is possibly undefined +// 4F5408: using guessed type int (*off_4F5408)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495420) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::messages_shim::~messages_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = _CRT_MT; + *v1 = &off_4F5424; + v3 = (volatile signed __int32 *)v1[4]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::messages::~messages(a1); +} +// 49542B: variable 'v1' is possibly undefined +// 4F5424: using guessed type int (*off_4F5424)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495470) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = a1[4]; + *a1 = &off_4F5440; + v3 = (volatile signed __int32 *)a1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(v5); + operator delete(a1); +} +// 4954A7: variable 'v5' is possibly undefined +// 4F5440: using guessed type int (*off_4F5440)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004954D0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = a1[4]; + *a1 = &off_4F5464; + v3 = (volatile signed __int32 *)a1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(v5); + operator delete(a1); +} +// 495507: variable 'v5' is possibly undefined +// 4F5464: using guessed type int (*off_4F5464)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495530) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = v1[4]; + *v1 = &off_4F5440; + v3 = (volatile signed __int32 *)v1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(a1); +} +// 495536: variable 'v1' is possibly undefined +// 4F5440: using guessed type int (*off_4F5440)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495580) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = v1[4]; + *v1 = &off_4F5464; + v3 = (volatile signed __int32 *)v1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(a1); +} +// 495586: variable 'v1' is possibly undefined +// 4F5464: using guessed type int (*off_4F5464)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004955D0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = a1[4]; + *a1 = &off_4F5488; + v3 = (volatile signed __int32 *)a1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(v5); + operator delete(a1); +} +// 495607: variable 'v5' is possibly undefined +// 4F5488: using guessed type int (*off_4F5488)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495630) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = a1[4]; + *a1 = &off_4F54AC; + v3 = (volatile signed __int32 *)a1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(v5); + operator delete(a1); +} +// 495667: variable 'v5' is possibly undefined +// 4F54AC: using guessed type int (*off_4F54AC)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495690) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = v1[4]; + *v1 = &off_4F5488; + v3 = (volatile signed __int32 *)v1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(a1); +} +// 495696: variable 'v1' is possibly undefined +// 4F5488: using guessed type int (*off_4F5488)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004956E0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::numpunct_shim::~numpunct_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = v1[4]; + *v1 = &off_4F54AC; + v3 = (volatile signed __int32 *)v1[3]; + *(_DWORD *)(v2 + 12) = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::numpunct::~numpunct(a1); +} +// 4956E6: variable 'v1' is possibly undefined +// 4F54AC: using guessed type int (*off_4F54AC)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495730) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F54D0; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F6D84; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495763: variable 'v5' is possibly undefined +// 4F54D0: using guessed type int (*off_4F54D0)(); +// 4F6D84: using guessed type int (*off_4F6D84)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495790) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F54F8; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F5D10; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4957C3: variable 'v5' is possibly undefined +// 4F54F8: using guessed type int (*off_4F54F8)(); +// 4F5D10: using guessed type int (*off_4F5D10)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004957F0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F54D0; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F6D84; + std::locale::facet::~facet(a1); +} +// 4957F1: variable 'v1' is possibly undefined +// 4F54D0: using guessed type int (*off_4F54D0)(); +// 4F6D84: using guessed type int (*off_4F6D84)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495840) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F54F8; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F5D10; + std::locale::facet::~facet(a1); +} +// 495841: variable 'v1' is possibly undefined +// 4F54F8: using guessed type int (*off_4F54F8)(); +// 4F5D10: using guessed type int (*off_4F5D10)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495890) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F5524; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F6DAC; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 4958C3: variable 'v5' is possibly undefined +// 4F5524: using guessed type int (*off_4F5524)(); +// 4F6DAC: using guessed type int (*off_4F6DAC)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004958F0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F554C; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F5D3C; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495923: variable 'v5' is possibly undefined +// 4F554C: using guessed type int (*off_4F554C)(); +// 4F5D3C: using guessed type int (*off_4F5D3C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495950) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F5524; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F6DAC; + std::locale::facet::~facet(a1); +} +// 495951: variable 'v1' is possibly undefined +// 4F5524: using guessed type int (*off_4F5524)(); +// 4F6DAC: using guessed type int (*off_4F6DAC)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004959A0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::time_get_shim::~time_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F554C; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F5D3C; + std::locale::facet::~facet(a1); +} +// 4959A1: variable 'v1' is possibly undefined +// 4F554C: using guessed type int (*off_4F554C)(); +// 4F5D3C: using guessed type int (*off_4F5D3C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004959F0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F5578; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F6E44; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495A23: variable 'v5' is possibly undefined +// 4F5578: using guessed type int (*off_4F5578)(); +// 4F6E44: using guessed type int (*off_4F6E44)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495A50) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F5590; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F5D68; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495A83: variable 'v5' is possibly undefined +// 4F5590: using guessed type int (*off_4F5590)(); +// 4F5D68: using guessed type int (*off_4F5D68)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495AB0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F5578; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F6E44; + std::locale::facet::~facet(a1); +} +// 495AB1: variable 'v1' is possibly undefined +// 4F5578: using guessed type int (*off_4F5578)(); +// 4F6E44: using guessed type int (*off_4F6E44)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495B00) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F5590; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F5D68; + std::locale::facet::~facet(a1); +} +// 495B01: variable 'v1' is possibly undefined +// 4F5590: using guessed type int (*off_4F5590)(); +// 4F5D68: using guessed type int (*off_4F5D68)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495B50) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F55A8; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F6E5C; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495B83: variable 'v5' is possibly undefined +// 4F55A8: using guessed type int (*off_4F55A8)(); +// 4F6E5C: using guessed type int (*off_4F6E5C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495BB0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F55C0; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F5D80; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495BE3: variable 'v5' is possibly undefined +// 4F55C0: using guessed type int (*off_4F55C0)(); +// 4F5D80: using guessed type int (*off_4F5D80)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495C10) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F55A8; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F6E5C; + std::locale::facet::~facet(a1); +} +// 495C11: variable 'v1' is possibly undefined +// 4F55A8: using guessed type int (*off_4F55A8)(); +// 4F6E5C: using guessed type int (*off_4F6E5C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495C60) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_get_shim::~money_get_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F55C0; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F5D80; + std::locale::facet::~facet(a1); +} +// 495C61: variable 'v1' is possibly undefined +// 4F55C0: using guessed type int (*off_4F55C0)(); +// 4F5D80: using guessed type int (*off_4F5D80)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495CB0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F55D8; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F6E74; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495CE3: variable 'v5' is possibly undefined +// 4F55D8: using guessed type int (*off_4F55D8)(); +// 4F6E74: using guessed type int (*off_4F6E74)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495D10) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F55F0; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F5D98; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495D43: variable 'v5' is possibly undefined +// 4F55F0: using guessed type int (*off_4F55F0)(); +// 4F5D98: using guessed type int (*off_4F5D98)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495D70) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F55D8; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F6E74; + std::locale::facet::~facet(a1); +} +// 495D71: variable 'v1' is possibly undefined +// 4F55D8: using guessed type int (*off_4F55D8)(); +// 4F6E74: using guessed type int (*off_4F6E74)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495DC0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F55F0; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F5D98; + std::locale::facet::~facet(a1); +} +// 495DC1: variable 'v1' is possibly undefined +// 4F55F0: using guessed type int (*off_4F55F0)(); +// 4F5D98: using guessed type int (*off_4F5D98)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495E10) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F5608; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F6E8C; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495E43: variable 'v5' is possibly undefined +// 4F5608: using guessed type int (*off_4F5608)(); +// 4F6E8C: using guessed type int (*off_4F6E8C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495E70) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim(_DWORD *a1) +{ + int v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = _CRT_MT; + *a1 = &off_4F5620; + v3 = (volatile signed __int32 *)a1[2]; + if ( v2 ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + *a1 = &off_4F5DB0; + std::locale::facet::~facet(v5); + operator delete(a1); +} +// 495EA3: variable 'v5' is possibly undefined +// 4F5620: using guessed type int (*off_4F5620)(); +// 4F5DB0: using guessed type int (*off_4F5DB0)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495ED0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F5608; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F6E8C; + std::locale::facet::~facet(a1); +} +// 495ED1: variable 'v1' is possibly undefined +// 4F5608: using guessed type int (*off_4F5608)(); +// 4F6E8C: using guessed type int (*off_4F6E8C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495F20) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::money_put_shim::~money_put_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + int v3; // eax + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + + v2 = v1; + v3 = _CRT_MT; + *v1 = &off_4F5620; + v4 = (volatile signed __int32 *)v1[2]; + if ( v3 ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v4 + 4))(v4); + *v2 = &off_4F5DB0; + std::locale::facet::~facet(a1); +} +// 495F21: variable 'v1' is possibly undefined +// 4F5620: using guessed type int (*off_4F5620)(); +// 4F5DB0: using guessed type int (*off_4F5DB0)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495F70) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_4F5638; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 495FBC: variable 'v5' is possibly undefined +// 4F5638: using guessed type int (*off_4F5638)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00495FE0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_4F566C; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 49602C: variable 'v5' is possibly undefined +// 4F566C: using guessed type int (*off_4F566C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496050) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_4F5638; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 496056: variable 'v1' is possibly undefined +// 4F5638: using guessed type int (*off_4F5638)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004960C0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_4F566C; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4960C6: variable 'v1' is possibly undefined +// 4F566C: using guessed type int (*off_4F566C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496130) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_4F56A0; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 49617C: variable 'v5' is possibly undefined +// 4F56A0: using guessed type int (*off_4F56A0)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004961A0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_4F56D4; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4961EC: variable 'v5' is possibly undefined +// 4F56D4: using guessed type int (*off_4F56D4)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496210) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_4F56A0; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 496216: variable 'v1' is possibly undefined +// 4F56A0: using guessed type int (*off_4F56A0)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496280) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_4F56D4; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[6] = 0; + v2[8] = 0; + v2[10] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 496286: variable 'v1' is possibly undefined +// 4F56D4: using guessed type int (*off_4F56D4)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004962F0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_4F5708; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 49633C: variable 'v5' is possibly undefined +// 4F5708: using guessed type int (*off_4F5708)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496360) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_4F573C; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4963AC: variable 'v5' is possibly undefined +// 4F573C: using guessed type int (*off_4F573C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004963D0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_4F5708; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 4963D6: variable 'v1' is possibly undefined +// 4F5708: using guessed type int (*off_4F5708)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496440) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_4F573C; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 496446: variable 'v1' is possibly undefined +// 4F573C: using guessed type int (*off_4F573C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004964B0) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_4F5770; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 4964FC: variable 'v5' is possibly undefined +// 4F5770: using guessed type int (*off_4F5770)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496520) -------------------------------------------------------- +void __fastcall std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim(_DWORD *a1) +{ + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + std::locale::facet *v5; // [esp+0h] [ebp-1Ch] + + v2 = (_DWORD *)a1[4]; + *a1 = &off_4F57A4; + v3 = (volatile signed __int32 *)a1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(v5); + operator delete(a1); +} +// 49656C: variable 'v5' is possibly undefined +// 4F57A4: using guessed type int (*off_4F57A4)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496590) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_4F5770; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 496596: variable 'v1' is possibly undefined +// 4F5770: using guessed type int (*off_4F5770)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496600) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::moneypunct_shim::~moneypunct_shim( + std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + volatile signed __int32 *v3; // ecx + signed __int32 v4; // eax + + v2 = (_DWORD *)v1[4]; + *v1 = &off_4F57A4; + v3 = (volatile signed __int32 *)v1[3]; + v2[3] = 0; + v2[7] = 0; + v2[9] = 0; + v2[11] = 0; + if ( _CRT_MT ) + { + v4 = _InterlockedExchangeAdd(v3 + 1, 0xFFFFFFFF); + } + else + { + v4 = *((_DWORD *)v3 + 1); + *((_DWORD *)v3 + 1) = v4 - 1; + } + if ( v4 == 1 ) + (*(void (__fastcall **)(volatile signed __int32 *))(*v3 + 4))(v3); + std::moneypunct::~moneypunct(a1); +} +// 496606: variable 'v1' is possibly undefined +// 4F57A4: using guessed type int (*off_4F57A4)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496670) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v3); + } +} +// 15412D0: using guessed type int _CRT_MT; +// 496670: using guessed type int var_D[3]; + +//----- (004966D0) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (00496700) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(volatile signed __int32 **a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = *a1; + if ( *a1 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)(v1 - 3), (int)v3); + } +} +// 15412D0: using guessed type int _CRT_MT; +// 496700: using guessed type int var_D[3]; + +//----- (00496760) -------------------------------------------------------- +void __cdecl std::__facet_shims::`anonymous namespace'::__destroy_string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (00496790) -------------------------------------------------------- +void __cdecl std::__facet_shims::__messages_get( + int a1, + int a2, + int a3, + std::string *a4, + int a5, + int a6, + _BYTE *a7, + int a8) +{ + void (__cdecl *v8)(int); // eax + volatile signed __int32 *v9; // eax + int v10; // edx + void *v11; // ecx + void *v12; // ecx + int v13; // edx + int v14; // edx + const std::string *v15; // [esp+4h] [ebp-44h] + char v16; // [esp+26h] [ebp-22h] BYREF + char v17[5]; // [esp+27h] [ebp-21h] BYREF + int v18[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::string::string(&v17[1], a7, a8, (int)&v16); + (*(void (__thiscall **)(int *, int, std::string *, int, int, char *))(*(_DWORD *)a2 + 12))( + v18, + a2, + a4, + a5, + a6, + &v17[1]); + v8 = *(void (__cdecl **)(int))(a3 + 24); + if ( v8 ) + v8(a3); + std::string::string((unsigned int **)a3, (unsigned int **)v18, v15); + v9 = (volatile signed __int32 *)v18[0]; + v10 = *(_DWORD *)(v18[0] - 12); + v11 = (void *)(v18[0] - 12); + *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + *(_DWORD *)(a3 + 4) = v10; + if ( v9 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd(v9 - 1, 0xFFFFFFFF); + } + else + { + v13 = *((_DWORD *)v9 - 1); + *((_DWORD *)v9 - 1) = v13 - 1; + } + if ( v13 <= 0 ) + std::string::_Rep::_M_destroy(v11, (int)v17); + } + v12 = (void *)(*(_DWORD *)&v17[1] - 12); + if ( *(_UNKNOWN **)&v17[1] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v17[1] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(*(_DWORD *)&v17[1] - 4); + *(_DWORD *)(*(_DWORD *)&v17[1] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy(v12, (int)v18); + } +} +// 4967FB: variable 'v15' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004968F0) -------------------------------------------------------- +void __cdecl std::__facet_shims::__messages_get( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5, + int a6, + unsigned __int8 *a7, + int a8) +{ + void (__cdecl *v8)(_DWORD *); // eax + void *v9; // edx + char *v10; // eax + int v11; // [esp+8h] [ebp-60h] + int v12; // [esp+8h] [ebp-60h] + void *v13[2]; // [esp+20h] [ebp-48h] BYREF + char v14[16]; // [esp+28h] [ebp-40h] BYREF + void *v15[2]; // [esp+38h] [ebp-30h] BYREF + char v16; // [esp+40h] [ebp-28h] BYREF + + v13[0] = v14; + LOBYTE(v11) = 0; + std::string::_M_construct(v13, a7, (size_t)&a7[a8], v11); + (*(void (__thiscall **)(void **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(v15, a2, a4, a5, a6, v13); + v8 = (void (__cdecl *)(_DWORD *))a3[6]; + if ( v8 ) + v8(a3); + v9 = v15[1]; + *a3 = a3 + 2; + LOBYTE(v12) = 0; + std::string::_M_construct(a3, (_BYTE *)v15[0], (int)v15[0] + (unsigned int)v9, v12); + v10 = (char *)v15[0]; + a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + if ( v10 != &v16 ) + operator delete(v10); + if ( v13[0] != v14 ) + operator delete(v13[0]); +} +// 49691C: variable 'v11' is possibly undefined +// 496975: variable 'v12' is possibly undefined + +//----- (004969E0) -------------------------------------------------------- +void __cdecl std::__facet_shims::__messages_get( + int a1, + int a2, + _DWORD *a3, + int a4, + int a5, + int a6, + const wchar_t *a7, + int a8) +{ + void (__cdecl *v8)(_DWORD *); // eax + volatile signed __int32 *v9; // eax + int v10; // edx + void *v11; // ecx + void *v12; // ecx + int v13; // edx + int v14; // edx + char v15; // [esp+26h] [ebp-22h] BYREF + char v16[5]; // [esp+27h] [ebp-21h] BYREF + int v17[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wstring::basic_string(&v16[1], a7, a8, (int)&v15); + (*(void (__thiscall **)(int *, int, int, int, int, char *))(*(_DWORD *)a2 + 12))(v17, a2, a4, a5, a6, &v16[1]); + v8 = (void (__cdecl *)(_DWORD *))a3[6]; + if ( v8 ) + v8(a3); + std::wstring::basic_string(a3, v17); + v9 = (volatile signed __int32 *)v17[0]; + v10 = *(_DWORD *)(v17[0] - 12); + v11 = (void *)(v17[0] - 12); + a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + a3[1] = v10; + if ( v9 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd(v9 - 1, 0xFFFFFFFF); + } + else + { + v13 = *((_DWORD *)v9 - 1); + *((_DWORD *)v9 - 1) = v13 - 1; + } + if ( v13 <= 0 ) + std::wstring::_Rep::_M_destroy(v11, (int)v16); + } + v12 = (void *)(*(_DWORD *)&v16[1] - 12); + if ( *(_UNKNOWN **)&v16[1] != &unk_4E93EC ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)&v16[1] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(*(_DWORD *)&v16[1] - 4); + *(_DWORD *)(*(_DWORD *)&v16[1] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::wstring::_Rep::_M_destroy(v12, (int)v17); + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496B40) -------------------------------------------------------- +void __cdecl std::__facet_shims::__messages_get( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + wchar_t *a7, + int a8) +{ + void (__cdecl *v8)(int); // eax + wchar_t *v9; // edx + wchar_t *v10; // eax + int v11; // [esp+8h] [ebp-60h] + int v12; // [esp+8h] [ebp-60h] + void *v13[2]; // [esp+20h] [ebp-48h] BYREF + char v14[16]; // [esp+28h] [ebp-40h] BYREF + wchar_t *v15[2]; // [esp+38h] [ebp-30h] BYREF + char v16; // [esp+40h] [ebp-28h] BYREF + + v13[0] = v14; + LOBYTE(v11) = 0; + std::wstring::_M_construct((wchar_t **)v13, a7, (int)&a7[a8], v11); + (*(void (__thiscall **)(wchar_t **, int, int, int, int, void **))(*(_DWORD *)a2 + 12))(v15, a2, a4, a5, a6, v13); + v8 = *(void (__cdecl **)(int))(a3 + 24); + if ( v8 ) + v8(a3); + v9 = v15[1]; + *(_DWORD *)a3 = a3 + 8; + LOBYTE(v12) = 0; + std::wstring::_M_construct((wchar_t **)a3, v15[0], (int)&v15[0][(_DWORD)v9], v12); + v10 = v15[0]; + *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + if ( v10 != (wchar_t *)&v16 ) + operator delete(v10); + if ( v13[0] != v14 ) + operator delete(v13[0]); +} +// 496B6D: variable 'v11' is possibly undefined +// 496BC7: variable 'v12' is possibly undefined + +//----- (00496C30) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5) +{ + int result; // eax + void *v6; // ecx + int v7; // ebx + int v8; // [esp+1Ch] [ebp-2Ch] + char v9; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::string::string(v10, a3, a4, (int)&v9); + result = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v10, a5); + v6 = (void *)(v10[0] - 12); + if ( (_UNKNOWN *)v10[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v7 = _InterlockedExchangeAdd((volatile signed __int32 *)(v10[0] - 4), 0xFFFFFFFF); + } + else + { + v7 = *(_DWORD *)(v10[0] - 4); + *(_DWORD *)(v10[0] - 4) = v7 - 1; + } + if ( v7 <= 0 ) + { + v8 = result; + std::string::_Rep::_M_destroy(v6, (int)&v9); + return v8; + } + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496CF0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5) +{ + int v5; // ebx + int v7; // [esp+8h] [ebp-40h] + void *v8[2]; // [esp+18h] [ebp-30h] BYREF + char v9[40]; // [esp+20h] [ebp-28h] BYREF + + v8[0] = v9; + LOBYTE(v7) = 0; + std::string::_M_construct(v8, a3, (size_t)&a3[a4], v7); + v5 = (*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, v8, a5); + if ( v8[0] != v9 ) + operator delete(v8[0]); + return v5; +} +// 496D1B: variable 'v7' is possibly undefined + +//----- (00496D70) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, _BYTE *a3, int a4, int a5) +{ + int result; // eax + void *v6; // ecx + int v7; // ebx + int v8; // [esp+1Ch] [ebp-2Ch] + char v9; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::string::string(v10, a3, a4, (int)&v9); + result = (*(int (__thiscall **)(int, _DWORD *, int))(*(_DWORD *)a2 + 8))(a2, v10, a5); + v6 = (void *)(v10[0] - 12); + if ( (_UNKNOWN *)v10[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v7 = _InterlockedExchangeAdd((volatile signed __int32 *)(v10[0] - 4), 0xFFFFFFFF); + } + else + { + v7 = *(_DWORD *)(v10[0] - 4); + *(_DWORD *)(v10[0] - 4) = v7 - 1; + } + if ( v7 <= 0 ) + { + v8 = result; + std::string::_Rep::_M_destroy(v6, (int)&v9); + return v8; + } + } + return result; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00496E30) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_open(int a1, int a2, unsigned __int8 *a3, int a4, int a5) +{ + int v5; // ebx + int v7; // [esp+8h] [ebp-40h] + void *v8[2]; // [esp+18h] [ebp-30h] BYREF + char v9[40]; // [esp+20h] [ebp-28h] BYREF + + v8[0] = v9; + LOBYTE(v7) = 0; + std::string::_M_construct(v8, a3, (size_t)&a3[a4], v7); + v5 = (*(int (__thiscall **)(int, void **, int))(*(_DWORD *)a2 + 8))(a2, v8, a5); + if ( v8[0] != v9 ) + operator delete(v8[0]); + return v5; +} +// 496E5B: variable 'v7' is possibly undefined + +//----- (00496EB0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) +{ + return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); +} + +//----- (00496ED0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) +{ + return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); +} + +//----- (00496EF0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) +{ + return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); +} + +//----- (00496F10) -------------------------------------------------------- +int __cdecl std::__facet_shims::__messages_close(int a1, int a2, int a3) +{ + return (*(int (__thiscall **)(int, int))(*(_DWORD *)a2 + 16))(a2, a3); +} + +//----- (00496F30) -------------------------------------------------------- +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) +{ + return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); +} + +//----- (00496F70) -------------------------------------------------------- +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) +{ + return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); +} + +//----- (00496FB0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) +{ + return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); +} + +//----- (00496FF0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__collate_compare(int a1, int a2, int a3, int a4, int a5, int a6) +{ + return (*(int (__thiscall **)(int, int, int, int, int))(*(_DWORD *)a2 + 8))(a2, a3, a4, a5, a6); +} + +//----- (00497030) -------------------------------------------------------- +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, std::string *a4, int a5) +{ + void (__cdecl *v5)(int); // eax + unsigned int *v6; // eax + int v7; // edx + unsigned int *v8; // ecx + int v9; // edx + const std::string *v10; // [esp+4h] [ebp-24h] + int v11; // [esp+1Bh] [ebp-Dh] BYREF + unsigned int *v12[3]; // [esp+1Ch] [ebp-Ch] BYREF + + (*(void (__thiscall **)(unsigned int **, int, std::string *, int))(*(_DWORD *)a2 + 12))(v12, a2, a4, a5); + v5 = *(void (__cdecl **)(int))(a3 + 24); + if ( v5 ) + v5(a3); + std::string::string((unsigned int **)a3, v12, v10); + v6 = v12[0]; + v7 = *(v12[0] - 3); + v8 = v12[0] - 3; + *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + *(_DWORD *)(a3 + 4) = v7; + if ( v6 != (unsigned int *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v9 = _InterlockedExchangeAdd((volatile signed __int32 *)v6 - 1, 0xFFFFFFFF); + } + else + { + v9 = *(v6 - 1); + *(v6 - 1) = v9 - 1; + } + if ( v9 <= 0 ) + std::string::_Rep::_M_destroy(v8, (int)&v11); + } +} +// 49706D: variable 'v10' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (00497100) -------------------------------------------------------- +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) +{ + void (__cdecl *v5)(_DWORD *); // eax + void *v6; // edx + char *v7; // eax + int v8; // [esp+8h] [ebp-30h] + void *v9[2]; // [esp+18h] [ebp-20h] BYREF + char v10; // [esp+20h] [ebp-18h] BYREF + + (*(void (__thiscall **)(void **, int, int, int))(*(_DWORD *)a2 + 12))(v9, a2, a4, a5); + v5 = (void (__cdecl *)(_DWORD *))a3[6]; + if ( v5 ) + v5(a3); + v6 = v9[1]; + *a3 = a3 + 2; + LOBYTE(v8) = 0; + std::string::_M_construct(a3, (_BYTE *)v9[0], (int)v9[0] + (unsigned int)v6, v8); + v7 = (char *)v9[0]; + a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + if ( v7 != &v10 ) + operator delete(v7); +} +// 497150: variable 'v8' is possibly undefined + +//----- (004971A0) -------------------------------------------------------- +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, _DWORD *a3, int a4, int a5) +{ + void (__cdecl *v5)(_DWORD *); // eax + volatile signed __int32 *v6; // eax + int v7; // edx + void *v8; // ecx + int v9; // edx + int v10; // [esp+1Bh] [ebp-Dh] BYREF + _DWORD v11[3]; // [esp+1Ch] [ebp-Ch] BYREF + + (*(void (__thiscall **)(_DWORD *, int, int, int))(*(_DWORD *)a2 + 12))(v11, a2, a4, a5); + v5 = (void (__cdecl *)(_DWORD *))a3[6]; + if ( v5 ) + v5(a3); + std::wstring::basic_string(a3, v11); + v6 = (volatile signed __int32 *)v11[0]; + v7 = *(_DWORD *)(v11[0] - 12); + v8 = (void *)(v11[0] - 12); + a3[6] = std::__facet_shims::`anonymous namespace'::__destroy_string; + a3[1] = v7; + if ( v6 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v9 = _InterlockedExchangeAdd(v6 - 1, 0xFFFFFFFF); + } + else + { + v9 = *((_DWORD *)v6 - 1); + *((_DWORD *)v6 - 1) = v9 - 1; + } + if ( v9 <= 0 ) + std::wstring::_Rep::_M_destroy(v8, (int)&v10); + } +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (00497270) -------------------------------------------------------- +void __cdecl std::__facet_shims::__collate_transform(int a1, int a2, int a3, int a4, int a5) +{ + void (__cdecl *v5)(int); // eax + wchar_t *v6; // edx + wchar_t *v7; // eax + int v8; // [esp+8h] [ebp-30h] + wchar_t *v9[2]; // [esp+18h] [ebp-20h] BYREF + char v10; // [esp+20h] [ebp-18h] BYREF + + (*(void (__thiscall **)(wchar_t **, int, int, int))(*(_DWORD *)a2 + 12))(v9, a2, a4, a5); + v5 = *(void (__cdecl **)(int))(a3 + 24); + if ( v5 ) + v5(a3); + v6 = v9[1]; + *(_DWORD *)a3 = a3 + 8; + LOBYTE(v8) = 0; + std::wstring::_M_construct((wchar_t **)a3, v9[0], (int)&v9[0][(_DWORD)v6], v8); + v7 = v9[0]; + *(_DWORD *)(a3 + 24) = std::__facet_shims::`anonymous namespace'::__destroy_string; + if ( v7 != (wchar_t *)&v10 ) + operator delete(v7); +} +// 4972C1: variable 'v8' is possibly undefined + +//----- (00497310) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); +} + +//----- (00497320) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); +} + +//----- (00497330) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); +} + +//----- (00497340) -------------------------------------------------------- +int __cdecl std::__facet_shims::__time_get_dateorder(int a1, int a2) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a2 + 8))(a2); +} + +//----- (00497350) -------------------------------------------------------- +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) +{ + char v3; // al + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + std::string *v7; // edi + void *v8; // ecx + char *v9; // edi + std::string *v10; // esi + volatile signed __int32 *v11; // eax + int v12; // edx + int v13; // edx + int v14; // edx + unsigned int v15; // [esp+Ch] [ebp-3Ch] + unsigned int v16; // [esp+Ch] [ebp-3Ch] + unsigned int v17; // [esp+Ch] [ebp-3Ch] + char *v18; // [esp+1Ch] [ebp-2Ch] + char *v19; // [esp+1Ch] [ebp-2Ch] + char v20; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v21[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_BYTE *)(a3 + 37) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_BYTE *)(a3 + 100) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v21, a2); + v18 = *(char **)(v21[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v18 + 1)); + std::string::copy(v21, v5, v18, 0, v15); + *(_DWORD *)(a3 + 8) = v5; + v18[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v18; + v6 = (void *)(v21[0] - 12); + if ( (_UNKNOWN *)v21[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v12 = _InterlockedExchangeAdd((volatile signed __int32 *)(v21[0] - 4), 0xFFFFFFFF); + } + else + { + v12 = *(_DWORD *)(v21[0] - 4); + *(_DWORD *)(v21[0] - 4) = v12 - 1; + } + if ( v12 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v20); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v21, a2); + v19 = *(char **)(v21[0] - 12); + v7 = (std::string *)operator new[]((unsigned int)(v19 + 1)); + std::string::copy(v21, v7, v19, 0, v16); + *(_DWORD *)(a3 + 20) = v7; + v19[(_DWORD)v7] = 0; + *(_DWORD *)(a3 + 24) = v19; + v8 = (void *)(v21[0] - 12); + if ( (_UNKNOWN *)v21[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v13 = _InterlockedExchangeAdd((volatile signed __int32 *)(v21[0] - 4), 0xFFFFFFFF); + } + else + { + v13 = *(_DWORD *)(v21[0] - 4); + *(_DWORD *)(v21[0] - 4) = v13 - 1; + } + if ( v13 <= 0 ) + std::string::_Rep::_M_destroy(v8, (int)&v20); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v21, a2); + v9 = *(char **)(v21[0] - 12); + v10 = (std::string *)operator new[]((unsigned int)(v9 + 1)); + std::string::copy(v21, v10, v9, 0, v17); + v11 = (volatile signed __int32 *)v21[0]; + v9[(_DWORD)v10] = 0; + *(_DWORD *)(a3 + 28) = v10; + *(_DWORD *)(a3 + 32) = v9; + if ( v11 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd(v11 - 1, 0xFFFFFFFF); + } + else + { + v14 = *((_DWORD *)v11 - 1); + *((_DWORD *)v11 - 1) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v11 - 3), (int)&v20); + } +} +// 4973C5: variable 'v15' is possibly undefined +// 497424: variable 'v16' is possibly undefined +// 49747D: variable 'v17' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004975A0) -------------------------------------------------------- +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) +{ + char v3; // al + int v4; // eax + _BYTE *v5; // edi + _BYTE *v6; // edi + int v7; // edi + _BYTE *v8; // esi + char *v9; // eax + unsigned int v10; // [esp+1Ch] [ebp-3Ch] + unsigned int v11; // [esp+1Ch] [ebp-3Ch] + void *v12; // [esp+28h] [ebp-30h] BYREF + int v13; // [esp+2Ch] [ebp-2Ch] + char v14[40]; // [esp+30h] [ebp-28h] BYREF + + *(_BYTE *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_BYTE *)(a3 + 37) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_BYTE *)(a3 + 100) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v12, a2); + v10 = v13; + v5 = (_BYTE *)operator new[](v13 + 1); + std::string::copy(&v12, v5, v10, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v10] = 0; + *(_DWORD *)(a3 + 12) = v10; + if ( v12 != v14 ) + operator delete(v12); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v12, a2); + v11 = v13; + v6 = (_BYTE *)operator new[](v13 + 1); + std::string::copy(&v12, v6, v11, 0); + *(_DWORD *)(a3 + 20) = v6; + v6[v11] = 0; + *(_DWORD *)(a3 + 24) = v11; + if ( v12 != v14 ) + operator delete(v12); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v12, a2); + v7 = v13; + v8 = (_BYTE *)operator new[](v13 + 1); + std::string::copy(&v12, v8, v7, 0); + v9 = (char *)v12; + v8[v7] = 0; + *(_DWORD *)(a3 + 28) = v8; + *(_DWORD *)(a3 + 32) = v7; + if ( v9 != v14 ) + operator delete(v9); +} + +//----- (00497720) -------------------------------------------------------- +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) +{ + __int16 v3; // ax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + int v7; // eax + wchar_t *v8; // edi + volatile signed __int32 *v9; // eax + unsigned int v10; // edi + unsigned int v11; // edi + wchar_t *v12; // esi + void *v13; // ecx + int v14; // edx + int v15; // edx + int v16; // edx + unsigned int v17; // [esp+Ch] [ebp-3Ch] + int v18; // [esp+18h] [ebp-30h] + char *v19; // [esp+1Ch] [ebp-2Ch] + char *v20; // [esp+1Ch] [ebp-2Ch] + char *v21; // [esp+1Ch] [ebp-2Ch] + char v22; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v23[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_WORD *)(a3 + 38) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_BYTE *)(a3 + 164) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v23, a2); + v19 = *(char **)(v23[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v19 + 1)); + std::string::copy(v23, v5, v19, 0, v17); + *(_DWORD *)(a3 + 8) = v5; + v19[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v19; + v6 = (void *)(v23[0] - 12); + if ( (_UNKNOWN *)v23[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(v23[0] - 4); + *(_DWORD *)(v23[0] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v22); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v23, a2); + v20 = *(char **)(v23[0] - 12); + v7 = (int)(v20 + 1); + if ( (unsigned int)(v20 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v18 = v7; + v8 = (wchar_t *)operator new[](2 * v7); + std::wstring::copy(v23, v8, (unsigned int)v20, 0); + *(_DWORD *)(a3 + 20) = v8; + *(_DWORD *)(a3 + 24) = v20; + v9 = (volatile signed __int32 *)v23[0]; + v8[v18 - 1] = 0; + if ( v9 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd(v9 - 1, 0xFFFFFFFF); + } + else + { + v15 = *((_DWORD *)v9 - 1); + *((_DWORD *)v9 - 1) = v15 - 1; + } + if ( v15 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)(v9 - 3), (int)&v22); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v23, a2); + v10 = *(_DWORD *)(v23[0] - 12) + 1; + v21 = *(char **)(v23[0] - 12); + if ( v10 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v11 = v10; + v12 = (wchar_t *)operator new[](v11 * 2); + std::wstring::copy(v23, v12, (unsigned int)v21, 0); + *(_DWORD *)(a3 + 28) = v12; + v12[v11 - 1] = 0; + *(_DWORD *)(a3 + 32) = v21; + v13 = (void *)(v23[0] - 12); + if ( (_UNKNOWN *)v23[0] != &unk_4E93EC ) + { + if ( _CRT_MT ) + { + v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v23[0] - 4), 0xFFFFFFFF); + } + else + { + v16 = *(_DWORD *)(v23[0] - 4); + *(_DWORD *)(v23[0] - 4) = v16 - 1; + } + if ( v16 <= 0 ) + std::wstring::_Rep::_M_destroy(v13, (int)&v22); + } +} +// 49779A: variable 'v17' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004979E0) -------------------------------------------------------- +void __cdecl std::__facet_shims::__numpunct_fill_cache(int a1, int *a2, int a3) +{ + __int16 v3; // ax + int v4; // eax + _BYTE *v5; // edi + int v6; // eax + wchar_t *v7; // edi + char *v8; // eax + int v9; // edi + int v10; // eax + wchar_t *v11; // esi + int v12; // [esp+18h] [ebp-40h] + unsigned int v13; // [esp+1Ch] [ebp-3Ch] + unsigned int v14; // [esp+1Ch] [ebp-3Ch] + int v15; // [esp+1Ch] [ebp-3Ch] + void *v16; // [esp+28h] [ebp-30h] BYREF + int v17; // [esp+2Ch] [ebp-2Ch] + char v18[40]; // [esp+30h] [ebp-28h] BYREF + + *(_WORD *)(a3 + 36) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_WORD *)(a3 + 38) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_BYTE *)(a3 + 164) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v16, a2); + v13 = v17; + v5 = (_BYTE *)operator new[](v17 + 1); + std::string::copy(&v16, v5, v13, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v13] = 0; + *(_DWORD *)(a3 + 12) = v13; + if ( v16 != v18 ) + operator delete(v16); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v16, a2); + v14 = v17; + v6 = v17 + 1; + if ( (unsigned int)(v17 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v12 = v6; + v7 = (wchar_t *)operator new[](2 * v6); + std::wstring::copy(&v16, v7, v14, 0); + *(_DWORD *)(a3 + 20) = v7; + *(_DWORD *)(a3 + 24) = v14; + v8 = (char *)v16; + v7[v12 - 1] = 0; + if ( v8 != v18 ) + operator delete(v8); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v16, a2); + v9 = v17; + v10 = v17 + 1; + if ( (unsigned int)(v17 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v15 = v10; + v11 = (wchar_t *)operator new[](2 * v10); + std::wstring::copy(&v16, v11, v9, 0); + *(_DWORD *)(a3 + 32) = v9; + *(_DWORD *)(a3 + 28) = v11; + v11[v15 - 1] = 0; + if ( v16 != v18 ) + operator delete(v16); +} + +//----- (00497B90) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + std::string *v7; // edi + void *v8; // ecx + std::string *v9; // edi + void *v10; // ecx + std::string *v11; // edi + void *v12; // ecx + int result; // eax + int v14; // edx + int v15; // edx + int v16; // edx + int v17; // edx + unsigned int v18; // [esp+Ch] [ebp-3Ch] + unsigned int v19; // [esp+Ch] [ebp-3Ch] + unsigned int v20; // [esp+Ch] [ebp-3Ch] + unsigned int v21; // [esp+Ch] [ebp-3Ch] + char *v22; // [esp+1Ch] [ebp-2Ch] + char *v23; // [esp+1Ch] [ebp-2Ch] + char *v24; // [esp+1Ch] [ebp-2Ch] + char *v25; // [esp+1Ch] [ebp-2Ch] + char v26; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v27[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 44) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_DWORD *)(a3 + 36) = 0; + *(_BYTE *)(a3 + 67) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v27, a2); + v22 = *(char **)(v27[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v22 + 1)); + std::string::copy(v27, v5, v22, 0, v18); + *(_DWORD *)(a3 + 8) = v5; + v22[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v22; + v6 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v27, a2); + v23 = *(char **)(v27[0] - 12); + v7 = (std::string *)operator new[]((unsigned int)(v23 + 1)); + std::string::copy(v27, v7, v23, 0, v19); + *(_DWORD *)(a3 + 20) = v7; + v23[(_DWORD)v7] = 0; + *(_DWORD *)(a3 + 24) = v23; + v8 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v15 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v15 - 1; + } + if ( v15 <= 0 ) + std::string::_Rep::_M_destroy(v8, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v27, a2); + v24 = *(char **)(v27[0] - 12); + v9 = (std::string *)operator new[]((unsigned int)(v24 + 1)); + std::string::copy(v27, v9, v24, 0, v20); + *(_DWORD *)(a3 + 28) = v9; + v24[(_DWORD)v9] = 0; + *(_DWORD *)(a3 + 32) = v24; + v10 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v16 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v16 - 1; + } + if ( v16 <= 0 ) + std::string::_Rep::_M_destroy(v10, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v27, a2); + v25 = *(char **)(v27[0] - 12); + v11 = (std::string *)operator new[]((unsigned int)(v25 + 1)); + std::string::copy(v27, v11, v25, 0, v21); + *(_DWORD *)(a3 + 36) = v11; + v25[(_DWORD)v11] = 0; + *(_DWORD *)(a3 + 40) = v25; + v12 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v17 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v17 - 1; + } + if ( v17 <= 0 ) + std::string::_Rep::_M_destroy(v12, (int)&v26); + } + *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 52) = result; + return result; +} +// 497C16: variable 'v18' is possibly undefined +// 497C75: variable 'v19' is possibly undefined +// 497CD4: variable 'v20' is possibly undefined +// 497D33: variable 'v21' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (00497EC0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + _BYTE *v5; // edi + _BYTE *v6; // edi + _BYTE *v7; // edi + _BYTE *v8; // edi + int result; // eax + int v10; // [esp+1Ch] [ebp-3Ch] + int v11; // [esp+1Ch] [ebp-3Ch] + int v12; // [esp+1Ch] [ebp-3Ch] + int v13; // [esp+1Ch] [ebp-3Ch] + void *v14; // [esp+28h] [ebp-30h] BYREF + int v15; // [esp+2Ch] [ebp-2Ch] + char v16[40]; // [esp+30h] [ebp-28h] BYREF + + *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 44) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_DWORD *)(a3 + 36) = 0; + *(_BYTE *)(a3 + 67) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v14, a2); + v10 = v15; + v5 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v5, v10, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v10] = 0; + *(_DWORD *)(a3 + 12) = v10; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v14, a2); + v11 = v15; + v6 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v6, v11, 0); + *(_DWORD *)(a3 + 20) = v6; + v6[v11] = 0; + *(_DWORD *)(a3 + 24) = v11; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v14, a2); + v12 = v15; + v7 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v7, v12, 0); + *(_DWORD *)(a3 + 28) = v7; + v7[v12] = 0; + *(_DWORD *)(a3 + 32) = v12; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v14, a2); + v13 = v15; + v8 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v8, v13, 0); + *(_DWORD *)(a3 + 36) = v8; + v8[v13] = 0; + *(_DWORD *)(a3 + 40) = v13; + if ( v14 != v16 ) + operator delete(v14); + *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 52) = result; + return result; +} + +//----- (004980D0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + std::string *v7; // edi + void *v8; // ecx + std::string *v9; // edi + void *v10; // ecx + std::string *v11; // edi + void *v12; // ecx + int result; // eax + int v14; // edx + int v15; // edx + int v16; // edx + int v17; // edx + unsigned int v18; // [esp+Ch] [ebp-3Ch] + unsigned int v19; // [esp+Ch] [ebp-3Ch] + unsigned int v20; // [esp+Ch] [ebp-3Ch] + unsigned int v21; // [esp+Ch] [ebp-3Ch] + char *v22; // [esp+1Ch] [ebp-2Ch] + char *v23; // [esp+1Ch] [ebp-2Ch] + char *v24; // [esp+1Ch] [ebp-2Ch] + char *v25; // [esp+1Ch] [ebp-2Ch] + char v26; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v27[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 44) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_DWORD *)(a3 + 36) = 0; + *(_BYTE *)(a3 + 67) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v27, a2); + v22 = *(char **)(v27[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v22 + 1)); + std::string::copy(v27, v5, v22, 0, v18); + *(_DWORD *)(a3 + 8) = v5; + v22[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v22; + v6 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v14 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v14 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v14 - 1; + } + if ( v14 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v27, a2); + v23 = *(char **)(v27[0] - 12); + v7 = (std::string *)operator new[]((unsigned int)(v23 + 1)); + std::string::copy(v27, v7, v23, 0, v19); + *(_DWORD *)(a3 + 20) = v7; + v23[(_DWORD)v7] = 0; + *(_DWORD *)(a3 + 24) = v23; + v8 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v15 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v15 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v15 - 1; + } + if ( v15 <= 0 ) + std::string::_Rep::_M_destroy(v8, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v27, a2); + v24 = *(char **)(v27[0] - 12); + v9 = (std::string *)operator new[]((unsigned int)(v24 + 1)); + std::string::copy(v27, v9, v24, 0, v20); + *(_DWORD *)(a3 + 28) = v9; + v24[(_DWORD)v9] = 0; + *(_DWORD *)(a3 + 32) = v24; + v10 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v16 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v16 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v16 - 1; + } + if ( v16 <= 0 ) + std::string::_Rep::_M_destroy(v10, (int)&v26); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v27, a2); + v25 = *(char **)(v27[0] - 12); + v11 = (std::string *)operator new[]((unsigned int)(v25 + 1)); + std::string::copy(v27, v11, v25, 0, v21); + *(_DWORD *)(a3 + 36) = v11; + v25[(_DWORD)v11] = 0; + *(_DWORD *)(a3 + 40) = v25; + v12 = (void *)(v27[0] - 12); + if ( (_UNKNOWN *)v27[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v27[0] - 4), 0xFFFFFFFF); + } + else + { + v17 = *(_DWORD *)(v27[0] - 4); + *(_DWORD *)(v27[0] - 4) = v17 - 1; + } + if ( v17 <= 0 ) + std::string::_Rep::_M_destroy(v12, (int)&v26); + } + *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 52) = result; + return result; +} +// 498156: variable 'v18' is possibly undefined +// 4981B5: variable 'v19' is possibly undefined +// 498214: variable 'v20' is possibly undefined +// 498273: variable 'v21' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (00498400) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + _BYTE *v5; // edi + _BYTE *v6; // edi + _BYTE *v7; // edi + _BYTE *v8; // edi + int result; // eax + int v10; // [esp+1Ch] [ebp-3Ch] + int v11; // [esp+1Ch] [ebp-3Ch] + int v12; // [esp+1Ch] [ebp-3Ch] + int v13; // [esp+1Ch] [ebp-3Ch] + void *v14; // [esp+28h] [ebp-30h] BYREF + int v15; // [esp+2Ch] [ebp-2Ch] + char v16[40]; // [esp+30h] [ebp-28h] BYREF + + *(_BYTE *)(a3 + 17) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_BYTE *)(a3 + 18) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 44) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 20) = 0; + *(_DWORD *)(a3 + 28) = 0; + *(_DWORD *)(a3 + 36) = 0; + *(_BYTE *)(a3 + 67) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v14, a2); + v10 = v15; + v5 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v5, v10, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v10] = 0; + *(_DWORD *)(a3 + 12) = v10; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v14, a2); + v11 = v15; + v6 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v6, v11, 0); + *(_DWORD *)(a3 + 20) = v6; + v6[v11] = 0; + *(_DWORD *)(a3 + 24) = v11; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v14, a2); + v12 = v15; + v7 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v7, v12, 0); + *(_DWORD *)(a3 + 28) = v7; + v7[v12] = 0; + *(_DWORD *)(a3 + 32) = v12; + if ( v14 != v16 ) + operator delete(v14); + (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v14, a2); + v13 = v15; + v8 = (_BYTE *)operator new[](v15 + 1); + std::string::copy(&v14, v8, v13, 0); + *(_DWORD *)(a3 + 36) = v8; + v8[v13] = 0; + *(_DWORD *)(a3 + 40) = v13; + if ( v14 != v16 ) + operator delete(v14); + *(_DWORD *)(a3 + 48) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 52) = result; + return result; +} + +//----- (00498610) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + int v7; // eax + wchar_t *v8; // edi + void *v9; // ecx + int v10; // eax + wchar_t *v11; // edi + volatile signed __int32 *v12; // eax + int v13; // eax + wchar_t *v14; // edi + void *v15; // ecx + int result; // eax + int v17; // edx + int v18; // edx + int v19; // edx + int v20; // edx + unsigned int v21; // [esp+Ch] [ebp-3Ch] + int v22; // [esp+18h] [ebp-30h] + int v23; // [esp+18h] [ebp-30h] + int v24; // [esp+18h] [ebp-30h] + char *v25; // [esp+1Ch] [ebp-2Ch] + char *v26; // [esp+1Ch] [ebp-2Ch] + char *v27; // [esp+1Ch] [ebp-2Ch] + char *v28; // [esp+1Ch] [ebp-2Ch] + char v29; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v30[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 48) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 24) = 0; + *(_DWORD *)(a3 + 32) = 0; + *(_DWORD *)(a3 + 40) = 0; + *(_BYTE *)(a3 + 82) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v30, a2); + v25 = *(char **)(v30[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v25 + 1)); + std::string::copy(v30, v5, v25, 0, v21); + *(_DWORD *)(a3 + 8) = v5; + v25[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v25; + v6 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v17 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v17 - 1; + } + if ( v17 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v30, a2); + v26 = *(char **)(v30[0] - 12); + v7 = (int)(v26 + 1); + if ( (unsigned int)(v26 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v22 = v7; + v8 = (wchar_t *)operator new[](2 * v7); + std::wstring::copy(v30, v8, (unsigned int)v26, 0); + *(_DWORD *)(a3 + 24) = v8; + v8[v22 - 1] = 0; + *(_DWORD *)(a3 + 28) = v26; + v9 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_4E93EC ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v18 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v18 - 1; + } + if ( v18 <= 0 ) + std::wstring::_Rep::_M_destroy(v9, (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v30, a2); + v27 = *(char **)(v30[0] - 12); + v10 = (int)(v27 + 1); + if ( (unsigned int)(v27 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v23 = v10; + v11 = (wchar_t *)operator new[](2 * v10); + std::wstring::copy(v30, v11, (unsigned int)v27, 0); + *(_DWORD *)(a3 + 32) = v11; + *(_DWORD *)(a3 + 36) = v27; + v12 = (volatile signed __int32 *)v30[0]; + v11[v23 - 1] = 0; + if ( v12 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v19 = _InterlockedExchangeAdd(v12 - 1, 0xFFFFFFFF); + } + else + { + v19 = *((_DWORD *)v12 - 1); + *((_DWORD *)v12 - 1) = v19 - 1; + } + if ( v19 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)(v12 - 3), (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v30, a2); + v28 = *(char **)(v30[0] - 12); + v13 = (int)(v28 + 1); + if ( (unsigned int)(v28 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v24 = v13; + v14 = (wchar_t *)operator new[](2 * v13); + std::wstring::copy(v30, v14, (unsigned int)v28, 0); + *(_DWORD *)(a3 + 40) = v14; + v14[v24 - 1] = 0; + *(_DWORD *)(a3 + 44) = v28; + v15 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_4E93EC ) + { + if ( _CRT_MT ) + { + v20 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v20 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v20 - 1; + } + if ( v20 <= 0 ) + std::wstring::_Rep::_M_destroy(v15, (int)&v29); + } + *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 56) = result; + return result; +} +// 498698: variable 'v21' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004989B0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + _BYTE *v5; // edi + int v6; // eax + wchar_t *v7; // edi + int v8; // eax + wchar_t *v9; // edi + char *v10; // eax + int v11; // eax + wchar_t *v12; // edi + int result; // eax + int v14; // [esp+18h] [ebp-40h] + int v15; // [esp+18h] [ebp-40h] + int v16; // [esp+18h] [ebp-40h] + int v17; // [esp+1Ch] [ebp-3Ch] + int v18; // [esp+1Ch] [ebp-3Ch] + int v19; // [esp+1Ch] [ebp-3Ch] + int v20; // [esp+1Ch] [ebp-3Ch] + void *v21; // [esp+28h] [ebp-30h] BYREF + int v22; // [esp+2Ch] [ebp-2Ch] + char v23[40]; // [esp+30h] [ebp-28h] BYREF + + *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 48) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 24) = 0; + *(_DWORD *)(a3 + 32) = 0; + *(_DWORD *)(a3 + 40) = 0; + *(_BYTE *)(a3 + 82) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v21, a2); + v17 = v22; + v5 = (_BYTE *)operator new[](v22 + 1); + std::string::copy(&v21, v5, v17, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v17] = 0; + *(_DWORD *)(a3 + 12) = v17; + if ( v21 != v23 ) + operator delete(v21); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v21, a2); + v18 = v22; + v6 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v14 = v6; + v7 = (wchar_t *)operator new[](2 * v6); + std::wstring::copy(&v21, v7, v18, 0); + *(_DWORD *)(a3 + 24) = v7; + v7[v14 - 1] = 0; + *(_DWORD *)(a3 + 28) = v18; + if ( v21 != v23 ) + operator delete(v21); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v21, a2); + v19 = v22; + v8 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v15 = v8; + v9 = (wchar_t *)operator new[](2 * v8); + std::wstring::copy(&v21, v9, v19, 0); + *(_DWORD *)(a3 + 32) = v9; + *(_DWORD *)(a3 + 36) = v19; + v10 = (char *)v21; + v9[v15 - 1] = 0; + if ( v10 != v23 ) + operator delete(v10); + (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v21, a2); + v20 = v22; + v11 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v16 = v11; + v12 = (wchar_t *)operator new[](2 * v11); + std::wstring::copy(&v21, v12, v20, 0); + *(_DWORD *)(a3 + 40) = v12; + v12[v16 - 1] = 0; + *(_DWORD *)(a3 + 44) = v20; + if ( v21 != v23 ) + operator delete(v21); + *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 56) = result; + return result; +} + +//----- (00498C20) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + std::string *v5; // edi + void *v6; // ecx + int v7; // eax + wchar_t *v8; // edi + void *v9; // ecx + int v10; // eax + wchar_t *v11; // edi + volatile signed __int32 *v12; // eax + int v13; // eax + wchar_t *v14; // edi + void *v15; // ecx + int result; // eax + int v17; // edx + int v18; // edx + int v19; // edx + int v20; // edx + unsigned int v21; // [esp+Ch] [ebp-3Ch] + int v22; // [esp+18h] [ebp-30h] + int v23; // [esp+18h] [ebp-30h] + int v24; // [esp+18h] [ebp-30h] + char *v25; // [esp+1Ch] [ebp-2Ch] + char *v26; // [esp+1Ch] [ebp-2Ch] + char *v27; // [esp+1Ch] [ebp-2Ch] + char *v28; // [esp+1Ch] [ebp-2Ch] + char v29; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD v30[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 48) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 24) = 0; + *(_DWORD *)(a3 + 32) = 0; + *(_DWORD *)(a3 + 40) = 0; + *(_BYTE *)(a3 + 82) = 1; + (*(void (__thiscall **)(_DWORD *, int *))(v4 + 16))(v30, a2); + v25 = *(char **)(v30[0] - 12); + v5 = (std::string *)operator new[]((unsigned int)(v25 + 1)); + std::string::copy(v30, v5, v25, 0, v21); + *(_DWORD *)(a3 + 8) = v5; + v25[(_DWORD)v5] = 0; + *(_DWORD *)(a3 + 12) = v25; + v6 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + v17 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v17 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v17 - 1; + } + if ( v17 <= 0 ) + std::string::_Rep::_M_destroy(v6, (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 20))(v30, a2); + v26 = *(char **)(v30[0] - 12); + v7 = (int)(v26 + 1); + if ( (unsigned int)(v26 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v22 = v7; + v8 = (wchar_t *)operator new[](2 * v7); + std::wstring::copy(v30, v8, (unsigned int)v26, 0); + *(_DWORD *)(a3 + 24) = v8; + v8[v22 - 1] = 0; + *(_DWORD *)(a3 + 28) = v26; + v9 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_4E93EC ) + { + if ( _CRT_MT ) + { + v18 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v18 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v18 - 1; + } + if ( v18 <= 0 ) + std::wstring::_Rep::_M_destroy(v9, (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 24))(v30, a2); + v27 = *(char **)(v30[0] - 12); + v10 = (int)(v27 + 1); + if ( (unsigned int)(v27 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v23 = v10; + v11 = (wchar_t *)operator new[](2 * v10); + std::wstring::copy(v30, v11, (unsigned int)v27, 0); + *(_DWORD *)(a3 + 32) = v11; + *(_DWORD *)(a3 + 36) = v27; + v12 = (volatile signed __int32 *)v30[0]; + v11[v23 - 1] = 0; + if ( v12 != (volatile signed __int32 *)&unk_4E93EC ) + { + if ( _CRT_MT ) + { + v19 = _InterlockedExchangeAdd(v12 - 1, 0xFFFFFFFF); + } + else + { + v19 = *((_DWORD *)v12 - 1); + *((_DWORD *)v12 - 1) = v19 - 1; + } + if ( v19 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)(v12 - 3), (int)&v29); + } + (*(void (__thiscall **)(_DWORD *, int *))(*a2 + 28))(v30, a2); + v28 = *(char **)(v30[0] - 12); + v13 = (int)(v28 + 1); + if ( (unsigned int)(v28 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v24 = v13; + v14 = (wchar_t *)operator new[](2 * v13); + std::wstring::copy(v30, v14, (unsigned int)v28, 0); + *(_DWORD *)(a3 + 40) = v14; + v14[v24 - 1] = 0; + *(_DWORD *)(a3 + 44) = v28; + v15 = (void *)(v30[0] - 12); + if ( (_UNKNOWN *)v30[0] != &unk_4E93EC ) + { + if ( _CRT_MT ) + { + v20 = _InterlockedExchangeAdd((volatile signed __int32 *)(v30[0] - 4), 0xFFFFFFFF); + } + else + { + v20 = *(_DWORD *)(v30[0] - 4); + *(_DWORD *)(v30[0] - 4) = v20 - 1; + } + if ( v20 <= 0 ) + std::wstring::_Rep::_M_destroy(v15, (int)&v29); + } + *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 56) = result; + return result; +} +// 498CA8: variable 'v21' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (00498FC0) -------------------------------------------------------- +int __cdecl std::__facet_shims::__moneypunct_fill_cache(int a1, int *a2, int a3) +{ + int v3; // eax + int v4; // eax + _BYTE *v5; // edi + int v6; // eax + wchar_t *v7; // edi + int v8; // eax + wchar_t *v9; // edi + char *v10; // eax + int v11; // eax + wchar_t *v12; // edi + int result; // eax + int v14; // [esp+18h] [ebp-40h] + int v15; // [esp+18h] [ebp-40h] + int v16; // [esp+18h] [ebp-40h] + int v17; // [esp+1Ch] [ebp-3Ch] + int v18; // [esp+1Ch] [ebp-3Ch] + int v19; // [esp+1Ch] [ebp-3Ch] + int v20; // [esp+1Ch] [ebp-3Ch] + void *v21; // [esp+28h] [ebp-30h] BYREF + int v22; // [esp+2Ch] [ebp-2Ch] + char v23[40]; // [esp+30h] [ebp-28h] BYREF + + *(_WORD *)(a3 + 18) = (*(int (__thiscall **)(int *))(*a2 + 8))(a2); + *(_WORD *)(a3 + 20) = (*(int (__fastcall **)(int *))(*a2 + 12))(a2); + v3 = (*(int (__fastcall **)(int *))(*a2 + 32))(a2); + *(_DWORD *)(a3 + 8) = 0; + *(_DWORD *)(a3 + 48) = v3; + v4 = *a2; + *(_DWORD *)(a3 + 24) = 0; + *(_DWORD *)(a3 + 32) = 0; + *(_DWORD *)(a3 + 40) = 0; + *(_BYTE *)(a3 + 82) = 1; + (*(void (__thiscall **)(void **, int *))(v4 + 16))(&v21, a2); + v17 = v22; + v5 = (_BYTE *)operator new[](v22 + 1); + std::string::copy(&v21, v5, v17, 0); + *(_DWORD *)(a3 + 8) = v5; + v5[v17] = 0; + *(_DWORD *)(a3 + 12) = v17; + if ( v21 != v23 ) + operator delete(v21); + (*(void (__thiscall **)(void **, int *))(*a2 + 20))(&v21, a2); + v18 = v22; + v6 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v14 = v6; + v7 = (wchar_t *)operator new[](2 * v6); + std::wstring::copy(&v21, v7, v18, 0); + *(_DWORD *)(a3 + 24) = v7; + v7[v14 - 1] = 0; + *(_DWORD *)(a3 + 28) = v18; + if ( v21 != v23 ) + operator delete(v21); + (*(void (__thiscall **)(void **, int *))(*a2 + 24))(&v21, a2); + v19 = v22; + v8 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v15 = v8; + v9 = (wchar_t *)operator new[](2 * v8); + std::wstring::copy(&v21, v9, v19, 0); + *(_DWORD *)(a3 + 32) = v9; + *(_DWORD *)(a3 + 36) = v19; + v10 = (char *)v21; + v9[v15 - 1] = 0; + if ( v10 != v23 ) + operator delete(v10); + (*(void (__thiscall **)(void **, int *))(*a2 + 28))(&v21, a2); + v20 = v22; + v11 = v22 + 1; + if ( (unsigned int)(v22 + 1) > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v16 = v11; + v12 = (wchar_t *)operator new[](2 * v11); + std::wstring::copy(&v21, v12, v20, 0); + *(_DWORD *)(a3 + 40) = v12; + v12[v16 - 1] = 0; + *(_DWORD *)(a3 + 44) = v20; + if ( v21 != v23 ) + operator delete(v21); + *(_DWORD *)(a3 + 52) = (*(int (__fastcall **)(int *))(*a2 + 36))(a2); + result = (*(int (__fastcall **)(int *))(*a2 + 40))(a2); + *(_DWORD *)(a3 + 56) = result; + return result; +} + +//----- (00499230) -------------------------------------------------------- +void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, const char *a3) +{ + void (__cdecl ***v4)(_anonymous_namespace_::io_error_category *__hidden); // esi + int (__thiscall *v5)(int, int, int); // eax + unsigned int *v6; // eax + void *v7; // ecx + size_t v8; // eax + unsigned int *v9; // eax + void *v10; // ecx + char *v11; // eax + std::runtime_error *v12[2]; // [esp+28h] [ebp-60h] BYREF + char v13[16]; // [esp+30h] [ebp-58h] BYREF + void *v14[2]; // [esp+40h] [ebp-48h] BYREF + int v15[4]; // [esp+48h] [ebp-40h] BYREF + void *v16[2]; // [esp+58h] [ebp-30h] BYREF + int v17[10]; // [esp+60h] [ebp-28h] BYREF + + v4 = `anonymous namespace'::__io_category_instance(); + v5 = (int (__thiscall *)(int, int, int))(*v4)[4]; + if ( v5 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v12[0] = (std::runtime_error *)v13; + v12[1] = 0; + v13[0] = 0; + std::string::_M_replace((unsigned int *)v12, 0, 0, "iostream error", 0xEu); + } + else + { + v5((int)v12, (int)v4, 1); + } + v6 = std::string::_M_replace((unsigned int *)v12, 0, 0, ": ", 2u); + v14[0] = v15; + if ( (unsigned int *)*v6 == v6 + 2 ) + { + v15[0] = v6[2]; + v15[1] = v6[3]; + v15[2] = v6[4]; + v15[3] = v6[5]; + } + else + { + v14[0] = (void *)*v6; + v15[0] = v6[2]; + } + v7 = (void *)v6[1]; + *((_BYTE *)v6 + 8) = 0; + v14[1] = v7; + *v6 = (unsigned int)(v6 + 2); + v6[1] = 0; + v8 = strlen((const char *)this); + v9 = std::string::_M_replace((unsigned int *)v14, 0, 0, (char *)this, v8); + v16[0] = v17; + if ( (unsigned int *)*v9 == v9 + 2 ) + { + v17[0] = v9[2]; + v17[1] = v9[3]; + v17[2] = v9[4]; + v17[3] = v9[5]; + } + else + { + v16[0] = (void *)*v9; + v17[0] = v9[2]; + } + v10 = (void *)v9[1]; + *((_BYTE *)v9 + 8) = 0; + v16[1] = v10; + *v9 = (unsigned int)(v9 + 2); + v9[1] = 0; + std::runtime_error::runtime_error(a1, (int)v16); + if ( v16[0] != v17 ) + operator delete(v16[0]); + if ( v14[0] != v15 ) + operator delete(v14[0]); + if ( (char *)v12[0] != v13 ) + operator delete(v12[0]); + a1[2] = 1; + a1[3] = v4; + *a1 = &off_4F6068; + v11 = (char *)std::runtime_error::what((int)a1); + std::__construct_ios_failure(a1 + 4, v11); +} +// 4F6068: using guessed type void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this); + +//----- (00499480) -------------------------------------------------------- +void __userpurge std::__ios_failure::__ios_failure(_DWORD *a1@, std::__ios_failure *this, int a3, int a4) +{ + void (__cdecl ***v5)(_anonymous_namespace_::system_error_category *__hidden); // esi + int (__thiscall *v6)(int, int, int); // eax + unsigned int *v7; // eax + void *v8; // ecx + size_t v9; // eax + unsigned int *v10; // eax + void *v11; // ecx + char *v12; // eax + std::runtime_error *v13; // [esp+28h] [ebp-60h] BYREF + int v14; // [esp+2Ch] [ebp-5Ch] + char v15[16]; // [esp+30h] [ebp-58h] BYREF + void *v16[2]; // [esp+40h] [ebp-48h] BYREF + int v17[4]; // [esp+48h] [ebp-40h] BYREF + void *v18[2]; // [esp+58h] [ebp-30h] BYREF + int v19[10]; // [esp+60h] [ebp-28h] BYREF + + if ( a3 ) + { + v5 = std::_V2::system_category(); + v6 = (int (__thiscall *)(int, int, int))(*v5)[4]; + if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v15[0] = 0; + v13 = (std::runtime_error *)v15; + v14 = 0; + if ( a3 != 1 ) + { + std::string::_M_replace((unsigned int *)&v13, 0, 0, "Unknown error", 0xDu); + goto LABEL_5; + } + goto LABEL_18; + } + } + else + { + v5 = `anonymous namespace'::__io_category_instance(); + v6 = (int (__thiscall *)(int, int, int))(*v5)[4]; + if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v14 = 0; + v13 = (std::runtime_error *)v15; + v15[0] = 0; +LABEL_18: + std::string::_M_replace((unsigned int *)&v13, 0, 0, "iostream error", 0xEu); + a3 = 1; + goto LABEL_5; + } + a3 = 1; + } + v6((int)&v13, (int)v5, a3); +LABEL_5: + v7 = std::string::_M_replace((unsigned int *)&v13, 0, 0, ": ", 2u); + v16[0] = v17; + if ( (unsigned int *)*v7 == v7 + 2 ) + { + v17[0] = v7[2]; + v17[1] = v7[3]; + v17[2] = v7[4]; + v17[3] = v7[5]; + } + else + { + v16[0] = (void *)*v7; + v17[0] = v7[2]; + } + v8 = (void *)v7[1]; + *((_BYTE *)v7 + 8) = 0; + v16[1] = v8; + *v7 = (unsigned int)(v7 + 2); + v7[1] = 0; + v9 = strlen((const char *)this); + v10 = std::string::_M_replace((unsigned int *)v16, 0, 0, (char *)this, v9); + v18[0] = v19; + if ( (unsigned int *)*v10 == v10 + 2 ) + { + v19[0] = v10[2]; + v19[1] = v10[3]; + v19[2] = v10[4]; + v19[3] = v10[5]; + } + else + { + v18[0] = (void *)*v10; + v19[0] = v10[2]; + } + v11 = (void *)v10[1]; + *((_BYTE *)v10 + 8) = 0; + v18[1] = v11; + *v10 = (unsigned int)(v10 + 2); + v10[1] = 0; + std::runtime_error::runtime_error(a1, (int)v18); + if ( v18[0] != v19 ) + operator delete(v18[0]); + if ( v16[0] != v17 ) + operator delete(v16[0]); + if ( v13 != (std::runtime_error *)v15 ) + operator delete(v13); + a1[3] = v5; + *a1 = &off_4F6068; + a1[2] = a3; + v12 = (char *)std::runtime_error::what((int)a1); + std::__construct_ios_failure(a1 + 4, v12); +} +// 4F6068: using guessed type void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this); + +//----- (00499750) -------------------------------------------------------- +void __fastcall std::__ios_failure::~__ios_failure(int a1) +{ + *(_DWORD *)a1 = &off_4F6068; + std::__destroy_ios_failure((int (__fastcall ***)(_DWORD))(a1 + 16)); + *(_DWORD *)a1 = &off_4F5DC8; + std::system_error::~system_error((_DWORD *)a1); + operator delete((void *)a1); +} +// 4F5DC8: using guessed type int (*off_4F5DC8)(); +// 4F6068: using guessed type void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this); + +//----- (00499790) -------------------------------------------------------- +void __fastcall std::__ios_failure::~__ios_failure(int a1) +{ + *(_DWORD *)a1 = &off_4F6068; + std::__destroy_ios_failure((int (__fastcall ***)(_DWORD))(a1 + 16)); + *(_DWORD *)a1 = &off_4F5DC8; + std::system_error::~system_error((_DWORD *)a1); +} +// 4F5DC8: using guessed type int (*off_4F5DC8)(); +// 4F6068: using guessed type void (__cdecl *off_4F6068)(std::__ios_failure *__hidden this); + +//----- (004997C0) -------------------------------------------------------- +void __fastcall std::bad_exception::~bad_exception(void *a1) +{ + operator delete(a1, 4u); +} + +//----- (004997F0) -------------------------------------------------------- +unsigned int __thiscall std::filebuf::_M_set_buffer(_DWORD *this, int a2) +{ + unsigned int v2; // eax + int v3; // ebx + int v4; // edx + unsigned int result; // eax + + v2 = this[12]; + v3 = (v2 >> 3) & 1; + if ( (v2 & 0x10) != 0 ) + LOBYTE(v2) = 1; + v4 = this[16]; + result = v2 & 1; + this[1] = v4; + this[2] = v4; + if ( a2 > 0 && (_BYTE)v3 ) + { + this[3] = a2 + v4; +LABEL_6: + this[5] = 0; + this[4] = 0; + this[6] = 0; + return result; + } + this[3] = v4; + if ( a2 ) + goto LABEL_6; + if ( !(_BYTE)result ) + goto LABEL_6; + result = this[17]; + if ( result <= 1 ) + goto LABEL_6; + result = v4 + result - 1; + this[5] = v4; + this[4] = v4; + this[6] = result; + return result; +} + +//----- (00499870) -------------------------------------------------------- +int __thiscall std::filebuf::_M_get_ext_pos(int this, int a2) +{ + if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 88) + 24))(*(_DWORD *)(this + 88)) ) + return *(_DWORD *)(this + 8) - *(_DWORD *)(this + 12); + else + return *(_DWORD *)(this + 92) + + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 88) + 28))( + *(_DWORD *)(this + 88), + a2, + *(_DWORD *)(this + 92), + *(_DWORD *)(this + 100), + *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) + - *(_DWORD *)(this + 104); +} + +//----- (004998D0) -------------------------------------------------------- +int __fastcall std::filebuf::_M_create_pback(int a1) +{ + int v1; // eax + int result; // eax + + if ( !*(_BYTE *)(a1 + 84) ) + { + v1 = *(_DWORD *)(a1 + 8); + *(_BYTE *)(a1 + 84) = 1; + *(_DWORD *)(a1 + 76) = v1; + *(_DWORD *)(a1 + 80) = *(_DWORD *)(a1 + 12); + *(_DWORD *)(a1 + 4) = a1 + 75; + *(_DWORD *)(a1 + 8) = a1 + 75; + result = a1 + 76; + *(_DWORD *)(a1 + 12) = a1 + 76; + } + return result; +} + +//----- (00499900) -------------------------------------------------------- +int __fastcall std::filebuf::_M_destroy_pback(int a1) +{ + bool v1; // zf + int v2; // ebx + int v3; // edx + int result; // eax + + if ( *(_BYTE *)(a1 + 84) ) + { + v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); + v2 = *(_DWORD *)(a1 + 64); + v3 = *(_DWORD *)(a1 + 80); + *(_BYTE *)(a1 + 84) = 0; + result = *(_DWORD *)(a1 + 76) + !v1; + *(_DWORD *)(a1 + 4) = v2; + *(_DWORD *)(a1 + 76) = result; + *(_DWORD *)(a1 + 8) = result; + *(_DWORD *)(a1 + 12) = v3; + } + return result; +} + +//----- (00499940) -------------------------------------------------------- +int __fastcall std::filebuf::_M_terminate_output(_DWORD *a1) +{ + int v1; // esi + int v3; // eax + int v4; // ecx + _DWORD **v5; // eax + _DWORD *v6; // ebx + _DWORD **v7; // ebp + unsigned int v8; // eax + unsigned int v9; // esi + unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] + void *v12; // [esp+2Ch] [ebp-B4h] + int v13; // [esp+30h] [ebp-B0h] + int v14; // [esp+40h] [ebp-A0h] BYREF + char v15[128]; // [esp+44h] [ebp-9Ch] BYREF + char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF + + v1 = 1; + if ( a1[4] < a1[5] ) + { + v3 = (*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, -1); + LOBYTE(v3) = v3 != -1; + v1 = v3; + } + if ( *((_BYTE *)a1 + 74) ) + { + v4 = a1[22]; + if ( !v4 ) + std::__throw_bad_cast(); + v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); + if ( !v11 ) + { + if ( (_BYTE)v1 ) + { + v12 = a1 + 10; + v5 = (_DWORD **)a1; + v6 = a1 + 14; + v7 = v5; + while ( 1 ) + { + v8 = (*(int (__thiscall **)(_DWORD *, _DWORD *, char *, char *, int *))(*v7[22] + 12))( + v7[22], + v6, + v15, + v16, + &v14); + v9 = v8; + if ( v8 == 2 ) + break; + if ( v8 <= 1 && v14 - (int)v15 > 0 ) + { + v13 = v14 - (_DWORD)v15; + if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) + return v11; + if ( v9 == 1 ) + continue; + } + return ((int (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, -1) != -1; + } + return v11; + } + } + } + return v1; +} +// 499940: using guessed type char var_1C[28]; + +//----- (00499A50) -------------------------------------------------------- +bool __thiscall std::filebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3) +{ + int v4; // ecx + unsigned int v5; // esi + int v6; // eax + void *v7; // esp + void *v8; // esp + unsigned int v9; // eax + unsigned int v10; // eax + int v12; // esi + char v13; // [esp+20h] [ebp-38h] + int v14; // [esp+38h] [ebp-20h] BYREF + int v15; // [esp+3Ch] [ebp-1Ch] BYREF + char v16[24]; // [esp+40h] [ebp-18h] BYREF + + v4 = this[22]; + v5 = a3; + if ( !v4 ) + std::__throw_bad_cast(); + if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) + goto LABEL_5; + v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)this[22] + 32))(this[22]) + 27) >> 4); + v7 = alloca(v6); + v8 = alloca(v6); + v9 = (*(int (__thiscall **)(_DWORD, _DWORD *, char *, char *))(*(_DWORD *)this[22] + 8))( + this[22], + this + 14, + a2, + &a2[a3]); + if ( v9 > 1 ) + { + if ( v9 == 3 ) + { +LABEL_5: + v10 = std::__basic_file::xsputn(this + 10, a2, a3); + return v10 == v5; + } +LABEL_11: + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::_M_convert_to_external conversion error"); + } + v13 = v9; + v5 = v14 - (_DWORD)v16; + v10 = std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16); + if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) + return v10 == v5; + if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(*(_DWORD *)this[22] + 8))( + this[22], + &v15, + v15, + this[5], + &v15, + v16, + v14, + &v14) == 2 ) + goto LABEL_11; + v12 = v14 - (_DWORD)v16; + return std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16) == v12; +} + +//----- (00499BC0) -------------------------------------------------------- +void __fastcall std::filebuf::_M_destroy_internal_buffer(int a1) +{ + if ( *(_BYTE *)(a1 + 72) ) + { + if ( *(_DWORD *)(a1 + 64) ) + operator delete[](*(void **)(a1 + 64)); + *(_DWORD *)(a1 + 64) = 0; + *(_BYTE *)(a1 + 72) = 0; + } + if ( *(_DWORD *)(a1 + 92) ) + operator delete[](*(void **)(a1 + 92)); + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; +} + +//----- (00499C20) -------------------------------------------------------- +void __fastcall std::filebuf::_M_allocate_internal_buffer(int a1) +{ + if ( !*(_BYTE *)(a1 + 72) && !*(_DWORD *)(a1 + 64) ) + { + *(_DWORD *)(a1 + 64) = operator new[](*(_DWORD *)(a1 + 68)); + *(_BYTE *)(a1 + 72) = 1; + } +} + +//----- (00499C60) -------------------------------------------------------- +char *__thiscall std::filebuf::open(char *this, char *a2, int a3) +{ + _BYTE *v3; // esi + + v3 = this + 40; + if ( std::__basic_file::is_open((_DWORD *)this + 10) ) + return 0; + std::__basic_file::open(v3, a2, a3, 436); + if ( !std::__basic_file::is_open(v3) ) + return 0; + else + return std::filebuf::open(this, a3); +} + +//----- (00499CD0) -------------------------------------------------------- +char *__thiscall std::filebuf::open(char *this, int a2) +{ + int v3; // eax + int v4; // eax + _DWORD v6[7]; // [esp+20h] [ebp-1Ch] BYREF + + v3 = *((_DWORD *)this + 16); + if ( !this[72] && !v3 ) + { + v3 = operator new[](*((_DWORD *)this + 17)); + this[72] = 1; + *((_DWORD *)this + 16) = v3; + } + *((_DWORD *)this + 1) = v3; + *((_DWORD *)this + 2) = v3; + *((_DWORD *)this + 3) = v3; + v4 = *((_DWORD *)this + 13); + *((_DWORD *)this + 12) = a2; + *(_WORD *)(this + 73) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 14) = v4; + *((_DWORD *)this + 15) = v4; + if ( (a2 & 2) == 0 ) + return this; + (*(void (__thiscall **)(_DWORD *, char *, _DWORD, _DWORD, int, int))(*(_DWORD *)this + 16))(v6, this, 0, 0, 2, a2); + if ( (v6[0] & v6[1]) != -1 ) + return this; + std::filebuf::close((int)this); + return 0; +} + +//----- (00499DA0) -------------------------------------------------------- +char *__thiscall std::filebuf::open(char *this, wchar_t *a2, int a3) +{ + _BYTE *v3; // esi + + v3 = this + 40; + if ( std::__basic_file::is_open((_DWORD *)this + 10) ) + return 0; + std::__basic_file::open(v3, a2, a3); + if ( !std::__basic_file::is_open(v3) ) + return 0; + else + return std::filebuf::open(this, a3); +} + +//----- (00499E10) -------------------------------------------------------- +char *__thiscall std::filebuf::open(char *this, char *a2, int a3) +{ + return std::filebuf::open(this, *(char **)a2, a3); +} + +//----- (00499E20) -------------------------------------------------------- +int __thiscall std::filebuf::swap(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + char v15; // dl + int v16; // edx + int v17; // eax + int v18; // edx + int v19; // eax + int v20; // edx + int v21; // eax + int v22; // edx + int v23; // eax + int v24; // edx + int v25; // eax + int v26; // edx + int v27; // eax + int v28; // edx + int v29; // eax + int v30; // edx + int v31; // eax + int v32; // edx + int v33; // eax + int v34; // edx + int v35; // eax + int v36; // edx + int v37; // eax + int v38; // eax + int result; // eax + const std::locale *v40; // [esp+4h] [ebp-48h] + volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] + _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + v41 = (volatile signed __int32 **)(this + 28); + std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); + std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); + std::locale::~locale(v42); + v14 = *(_DWORD *)(this + 40); + *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); + v15 = *(_BYTE *)(a2 + 44); + *(_DWORD *)(a2 + 40) = v14; + LOBYTE(v14) = *(_BYTE *)(this + 44); + *(_BYTE *)(this + 44) = v15; + v16 = *(_DWORD *)(a2 + 48); + *(_BYTE *)(a2 + 44) = v14; + v17 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 48) = v16; + v18 = *(_DWORD *)(a2 + 52); + *(_DWORD *)(a2 + 48) = v17; + v19 = *(_DWORD *)(this + 52); + *(_DWORD *)(this + 52) = v18; + v20 = *(_DWORD *)(a2 + 56); + *(_DWORD *)(a2 + 52) = v19; + v21 = *(_DWORD *)(this + 56); + *(_DWORD *)(this + 56) = v20; + v22 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(a2 + 56) = v21; + v23 = *(_DWORD *)(this + 60); + *(_DWORD *)(this + 60) = v22; + v24 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 60) = v23; + v25 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 64) = v24; + v26 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(a2 + 64) = v25; + v27 = *(_DWORD *)(this + 68); + *(_DWORD *)(this + 68) = v26; + *(_DWORD *)(a2 + 68) = v27; + LOBYTE(v27) = *(_BYTE *)(this + 72); + *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); + v28 = *(_DWORD *)(a2 + 92); + *(_BYTE *)(a2 + 72) = v27; + v29 = *(_DWORD *)(this + 92); + *(_DWORD *)(this + 92) = v28; + v30 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 92) = v29; + v31 = *(_DWORD *)(this + 96); + *(_DWORD *)(this + 96) = v30; + v32 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = v31; + v33 = *(_DWORD *)(this + 100); + *(_DWORD *)(this + 100) = v32; + v34 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = v33; + v35 = *(_DWORD *)(this + 104); + *(_DWORD *)(this + 104) = v34; + LOBYTE(v34) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(a2 + 104) = v35; + LOBYTE(v35) = *(_BYTE *)(this + 73); + *(_BYTE *)(this + 73) = v34; + LOBYTE(v34) = *(_BYTE *)(a2 + 74); + *(_BYTE *)(a2 + 73) = v35; + LOBYTE(v35) = *(_BYTE *)(this + 74); + *(_BYTE *)(this + 74) = v34; + v36 = *(_DWORD *)(a2 + 76); + *(_BYTE *)(a2 + 74) = v35; + v37 = *(_DWORD *)(this + 76); + *(_DWORD *)(this + 76) = v36; + *(_DWORD *)(a2 + 76) = v37; + v38 = *(_DWORD *)(this + 80); + *(_DWORD *)(this + 80) = *(_DWORD *)(a2 + 80); + LOBYTE(v36) = *(_BYTE *)(a2 + 84); + *(_DWORD *)(a2 + 80) = v38; + result = *(unsigned __int8 *)(this + 84); + *(_BYTE *)(this + 84) = v36; + *(_BYTE *)(a2 + 84) = result; + return result; +} +// 499E88: variable 'v40' is possibly undefined + +//----- (00499FB0) -------------------------------------------------------- +int __fastcall std::filebuf::sync(_DWORD *a1) +{ + if ( a1[4] >= a1[5] ) + return 0; + else + return -((*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, -1) == -1); +} + +//----- (00499FF0) -------------------------------------------------------- +int __fastcall std::filebuf::close(int a1) +{ + int v1; // esi + char v3; // di + int v4; // eax + int v5; // eax + + v1 = a1 + 40; + if ( !std::__basic_file::is_open((_DWORD *)(a1 + 40)) ) + return 0; + v3 = std::filebuf::_M_terminate_output((_DWORD *)a1); + *(_DWORD *)(a1 + 48) = 0; + *(_BYTE *)(a1 + 84) = 0; + std::filebuf::_M_destroy_internal_buffer(a1); + *(_WORD *)(a1 + 73) = 0; + v4 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 4) = v4; + *(_DWORD *)(a1 + 8) = v4; + *(_DWORD *)(a1 + 12) = v4; + v5 = *(_DWORD *)(a1 + 52); + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 56) = v5; + *(_DWORD *)(a1 + 60) = v5; + if ( !std::__basic_file::close(v1) ) + return 0; + if ( v3 == 1 ) + return a1; + else + return 0; +} + +//----- (0049A0B0) -------------------------------------------------------- +char __thiscall std::filebuf::imbue(int this, int a2) +{ + void *v3; // esi + int v4; // eax + int v5; // ecx + int v6; // ecx + int v7; // edi + const void *Src; // eax + int v9; // edi + size_t Size; // edi + int v11; // eax + size_t v12; // edi + int v13; // eax + int v15; // [esp+30h] [ebp-1Ch] BYREF + int v16; // [esp+34h] [ebp-18h] + + if ( (unsigned __int8)std::has_facet>(a2) ) + v3 = std::use_facet>(a2); + else + v3 = 0; + LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)(this + 40)); + if ( !(_BYTE)v4 ) + goto LABEL_13; + if ( !*(_BYTE *)(this + 73) && !*(_BYTE *)(this + 74) ) + { + *(_DWORD *)(this + 88) = v3; + return v4; + } + v5 = *(_DWORD *)(this + 88); + if ( !v5 ) + goto LABEL_24; + v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); + if ( v4 == -1 ) + goto LABEL_18; + if ( !*(_BYTE *)(this + 73) ) + { + if ( !*(_BYTE *)(this + 74) ) + goto LABEL_13; + LOBYTE(v4) = std::filebuf::_M_terminate_output((_DWORD *)this); + if ( (_BYTE)v4 ) + { + v4 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 4) = v4; + *(_DWORD *)(this + 8) = v4; + *(_DWORD *)(this + 12) = v4; + *(_DWORD *)(this + 24) = 0; + goto LABEL_13; + } +LABEL_18: + *(_DWORD *)(this + 88) = 0; + return v4; + } + v6 = *(_DWORD *)(this + 88); + if ( !v6 ) +LABEL_24: + std::__throw_bad_cast(); + LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); + if ( !(_BYTE)v4 ) + { + v7 = *(_DWORD *)(this + 92); + Src = (const void *)(v7 + + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**(_DWORD **)(this + 88) + 28))( + *(_DWORD *)(this + 88), + this + 60, + v7, + *(_DWORD *)(this + 100), + *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4))); + v9 = *(_DWORD *)(this + 104); + *(_DWORD *)(this + 100) = Src; + Size = v9 - (_DWORD)Src; + if ( Size ) + memmove(*(void **)(this + 92), Src, Size); + v11 = *(_DWORD *)(this + 92); + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + v12 = v11 + Size; + *(_DWORD *)(this + 100) = v11; + v13 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 104) = v12; + *(_DWORD *)(this + 4) = v13; + *(_DWORD *)(this + 8) = v13; + *(_DWORD *)(this + 12) = v13; + v4 = *(_DWORD *)(this + 52); + *(_DWORD *)(this + 24) = 0; + *(_DWORD *)(this + 56) = v4; + *(_DWORD *)(this + 60) = v4; + goto LABEL_13; + } + if ( !v3 ) + goto LABEL_18; + LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); + if ( !(_BYTE)v4 ) + { + (*(void (__thiscall **)(int *, int, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( + &v15, + this, + 0, + 0, + 1, + *(_DWORD *)(this + 48)); + LOBYTE(v4) = v15 & v16; + if ( (v15 & v16) == -1 ) + goto LABEL_18; + } +LABEL_13: + *(_DWORD *)(this + 88) = v3; + return v4; +} + +//----- (0049A290) -------------------------------------------------------- +int __thiscall std::filebuf::setbuf(int this, __int64 a2) +{ + if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) + return this; + if ( !a2 ) + { + *(_DWORD *)(this + 68) = 1; + return this; + } + if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) + return this; + *(_QWORD *)(this + 64) = a2; + return this; +} + +//----- (0049A2F0) -------------------------------------------------------- +int __thiscall std::filebuf::xsgetn(_DWORD *this, char *a2, signed int a3) +{ + char *v4; // edi + signed int v5; // esi + int v6; // eax + int v7; // ebp + char *v8; // ecx + bool v9; // zf + int v10; // edx + int v11; // ecx + int v12; // eax + unsigned int v13; // eax + int v14; // ecx + char v15; // al + int v17; // eax + const void *Src; // eax + size_t Size; // edx + int i; // eax + int v21; // eax + int *v22; // eax + int v23; // [esp+1Ch] [ebp-20h] + int v24; // [esp+1Ch] [ebp-20h] + + v4 = a2; + v5 = a3; + if ( *((_BYTE *)this + 84) ) + { + v6 = this[2]; + v7 = 0; + v8 = (char *)this[1]; + if ( a3 <= 0 || v8 != (char *)v6 ) + goto LABEL_4; + v5 = a3 - 1; + *a2 = *v8; + v6 = this[2] + 1; + v9 = *((_BYTE *)this + 84) == 0; + this[2] = v6; + if ( !v9 ) + { + v8 = (char *)this[1]; + v4 = a2 + 1; + v7 = 1; +LABEL_4: + v9 = v6 == (_DWORD)v8; + v10 = this[16]; + v11 = this[20]; + *((_BYTE *)this + 84) = 0; + v12 = this[19] + !v9; + this[1] = v10; + this[19] = v12; + this[2] = v12; + this[3] = v11; + goto LABEL_5; + } + v4 = a2 + 1; + v7 = 1; + } + else if ( *((_BYTE *)this + 74) ) + { + if ( (*(int (__thiscall **)(_DWORD *, int))(*this + 52))(this, -1) == -1 ) + return 0; + v17 = this[16]; + this[5] = 0; + v7 = 0; + this[4] = 0; + this[1] = v17; + this[2] = v17; + this[3] = v17; + this[6] = 0; + *((_BYTE *)this + 74) = 0; + } + else + { + v7 = 0; + } +LABEL_5: + v13 = this[17]; + if ( v13 < 2 ) + v13 = 2; + if ( v5 <= (int)(v13 - 1) ) + goto LABEL_11; + v14 = this[22]; + if ( !v14 ) + std::__throw_bad_cast(); + v23 = this[12]; + v15 = (*(int (__fastcall **)(int))(*(_DWORD *)v14 + 24))(v14); + if ( (v23 & 8) != 0 && v15 ) + { + Src = (const void *)this[2]; + Size = this[3] - (_DWORD)Src; + if ( Size ) + { + v24 = this[3] - (_DWORD)Src; + memcpy(v4, Src, Size); + this[2] += v24; + v4 += v24; + v7 += v24; + v5 -= v24; + } + for ( i = std::__basic_file::xsgetn(this + 10, v4, v5); ; i = std::__basic_file::xsgetn( + this + 10, + v4, + v5) ) + { + if ( i == -1 ) + { + v22 = _errno(); + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", (char *)*v22); + } + if ( !i ) + break; + v7 += i; + v5 -= i; + if ( !v5 ) + goto LABEL_28; + v4 += i; + } + if ( !v5 ) + { +LABEL_28: + *((_BYTE *)this + 73) = 1; + return v7; + } + v21 = this[16]; + this[5] = 0; + this[4] = 0; + this[1] = v21; + this[2] = v21; + this[3] = v21; + this[6] = 0; + *((_BYTE *)this + 73) = 0; + } + else + { +LABEL_11: + v7 += std::streambuf::xsgetn(this, v4, v5); + } + return v7; +} + +//----- (0049A510) -------------------------------------------------------- +int __thiscall std::filebuf::xsputn(int this, unsigned __int8 *a2, int a3) +{ + int v4; // esi + int v5; // ecx + char v6; // si + int v7; // edx + int v8; // eax + unsigned int v9; // ecx + signed int v10; // esi + signed int v11; // eax + int v12; // edx + int v14; // edx + int v15; // ecx + unsigned int v16; // ecx + + v4 = *(_DWORD *)(this + 48); + if ( (v4 & 0x10) != 0 ) + LOBYTE(v4) = 1; + v5 = *(_DWORD *)(this + 88); + v6 = v4 & 1; + if ( !v5 ) + std::__throw_bad_cast(); + if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) + return std::streambuf::xsputn((_DWORD *)this, a2, a3); + v7 = *(_DWORD *)(this + 20); + v8 = *(_DWORD *)(this + 24) - v7; + if ( !*(_BYTE *)(this + 74) ) + { + v9 = *(_DWORD *)(this + 68); + if ( v9 > 1 ) + v8 = v9 - 1; + } + if ( v8 > 1023 ) + v8 = 1024; + if ( a3 < v8 ) + return std::streambuf::xsputn((_DWORD *)this, a2, a3); + v10 = v7 - *(_DWORD *)(this + 16); + v11 = std::__basic_file::xsputn_2((void *)(this + 40), *(char **)(this + 16), v10, (char *)a2, a3); + if ( v10 + a3 == v11 ) + { + v14 = *(_DWORD *)(this + 64); + v15 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v14; + *(_DWORD *)(this + 8) = v14; + *(_DWORD *)(this + 12) = v14; + if ( ((v15 & 0x10) != 0 || (v15 & 1) != 0) && (v16 = *(_DWORD *)(this + 68), v16 > 1) ) + { + *(_DWORD *)(this + 20) = v14; + *(_DWORD *)(this + 16) = v14; + *(_DWORD *)(this + 24) = v14 + v16 - 1; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + *(_BYTE *)(this + 74) = 1; + } + v12 = 0; + if ( v10 < v11 ) + return v11 - v10; + return v12; +} + +//----- (0049A640) -------------------------------------------------------- +_DWORD *__thiscall std::filebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) +{ + _DWORD *result; // eax + __int64 v7; // rax + int v8; // ecx + int v9; // ecx + + *this = -1; + this[1] = -1; + this[2] = 0; + if ( !(unsigned __int8)std::filebuf::_M_terminate_output((_DWORD *)a2) ) + return this; + v7 = std::__basic_file::seekoff((void *)(a2 + 40), a3, a4); + if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) + return this; + *this = v7; + result = this; + *(_WORD *)(a2 + 73) = 0; + v8 = *(_DWORD *)(a2 + 92); + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 104) = v8; + *(_DWORD *)(a2 + 100) = v8; + v9 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 4) = v9; + *(_DWORD *)(a2 + 8) = v9; + *(_DWORD *)(a2 + 12) = v9; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = a5; + this[2] = a5; + this[1] = HIDWORD(v7); + return result; +} + +//----- (0049A6F0) -------------------------------------------------------- +_DWORD *__thiscall std::filebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) +{ + int v6; // ecx + int v7; // eax + bool v8; // al + bool v10; // zf + __int64 v11; // rax + __int64 v12; // rax + int v13; // edx + int v14; // ecx + int v15; // eax + unsigned int v16; // esi + unsigned int v17; // edi + __int64 v18; // kr00_8 + __int64 ext_pos; // [esp+28h] [ebp-54h] + bool v20; // [esp+34h] [ebp-48h] + int v21; // [esp+34h] [ebp-48h] + int v22; // [esp+3Ch] [ebp-40h] + int v23; // [esp+4Ch] [ebp-30h] BYREF + int v24[11]; // [esp+50h] [ebp-2Ch] BYREF + + v6 = *(_DWORD *)(a2 + 88); + if ( v6 ) + { + v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); + v22 = v7 & ~(v7 >> 31); + v8 = v7 <= 0; + } + else + { + v22 = 0; + v8 = 1; + } + *this = -1; + this[1] = -1; + this[2] = 0; + v20 = v8 && a3 != 0; + if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v20 ) + return this; + if ( a4 != 1 + || a3 + || *(_BYTE *)(a2 + 74) + && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 88) + 24))(*(_DWORD *)(a2 + 88)) ) + { + if ( *(_BYTE *)(a2 + 84) ) + { + v10 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); + *(_BYTE *)(a2 + 84) = 0; + v13 = *(_DWORD *)(a2 + 80); + v14 = *(_DWORD *)(a2 + 64); + v15 = *(_DWORD *)(a2 + 76) + !v10; + *(_DWORD *)(a2 + 76) = v15; + *(_DWORD *)(a2 + 4) = v14; + *(_DWORD *)(a2 + 8) = v15; + *(_DWORD *)(a2 + 12) = v13; + } + v21 = *(_DWORD *)(a2 + 52); + v23 = v21; + v16 = a3 * v22; + v17 = (unsigned __int64)(a3 * v22) >> 32; + if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) + { + v23 = *(_DWORD *)(a2 + 60); + v18 = std::filebuf::_M_get_ext_pos(a2, (int)&v23) + __PAIR64__(v17, v16); + std::filebuf::_M_seek(v24, a2, v18, 1, v23); + } + else + { + std::filebuf::_M_seek(v24, a2, __SPAIR64__(v17, v16), a4, v21); + } + *this = v24[0]; + this[1] = v24[1]; + this[2] = v24[2]; + return this; + } + v10 = *(_BYTE *)(a2 + 73) == 0; + ext_pos = 0LL; + v23 = *(_DWORD *)(a2 + 52); + if ( !v10 ) + { + v23 = *(_DWORD *)(a2 + 60); + ext_pos = std::filebuf::_M_get_ext_pos(a2, (int)&v23); + } + if ( *(_BYTE *)(a2 + 74) ) + ext_pos = *(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16); + v11 = std::__basic_file::seekoff((void *)(a2 + 40), 0LL, 1); + if ( ((unsigned int)v11 & HIDWORD(v11)) == -1 ) + return this; + v12 = ext_pos + v11; + *this = v12; + LODWORD(v12) = v23; + this[1] = HIDWORD(v12); + this[2] = v12; + return this; +} + +//----- (0049A950) -------------------------------------------------------- +_DWORD *__thiscall std::filebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) +{ + bool v8; // zf + int v9; // edx + int v10; // ecx + int v11; // eax + int v12[7]; // [esp+30h] [ebp-1Ch] BYREF + + *this = -1; + this[1] = -1; + this[2] = 0; + if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) + { + if ( *(_BYTE *)(a2 + 84) ) + { + v8 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); + *(_BYTE *)(a2 + 84) = 0; + v9 = *(_DWORD *)(a2 + 80); + v10 = *(_DWORD *)(a2 + 64); + v11 = *(_DWORD *)(a2 + 76) + !v8; + *(_DWORD *)(a2 + 76) = v11; + *(_DWORD *)(a2 + 4) = v10; + *(_DWORD *)(a2 + 8) = v11; + *(_DWORD *)(a2 + 12) = v9; + } + std::filebuf::_M_seek(v12, a2, a3, 0, a4); + *this = v12[0]; + this[1] = v12[1]; + this[2] = v12[2]; + } + return this; +} + +//----- (0049AA20) -------------------------------------------------------- +int __thiscall std::filebuf::overflow(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // ecx + int ext_pos; // eax + char *v7; // edx + char *v8; // eax + int v9; // eax + int v10; // edx + int result; // eax + unsigned int v12; // eax + unsigned int v13; // edx + int v14; // edx + int v15; // ecx + int v16[7]; // [esp+20h] [ebp-1Ch] BYREF + + if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) + return -1; + if ( *(_BYTE *)(this + 73) ) + { + if ( *(_BYTE *)(this + 84) ) + { + v3 = *(_DWORD *)(this + 80); + v4 = *(_DWORD *)(this + 76) + (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); + *(_DWORD *)(this + 76) = v4; + v5 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 8) = v4; + *(_DWORD *)(this + 4) = v5; + *(_DWORD *)(this + 12) = v3; + *(_BYTE *)(this + 84) = 0; + } + ext_pos = std::filebuf::_M_get_ext_pos(this, this + 60); + std::filebuf::_M_seek(v16, this, ext_pos, 1, *(_DWORD *)(this + 60)); + if ( (v16[0] & v16[1]) == -1 ) + return -1; + } + v7 = *(char **)(this + 16); + v8 = *(char **)(this + 20); + if ( v7 >= v8 ) + { + v12 = *(_DWORD *)(this + 68); + if ( v12 > 1 ) + { + v14 = *(_DWORD *)(this + 64); + v15 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v14; + *(_DWORD *)(this + 8) = v14; + *(_DWORD *)(this + 12) = v14; + if ( (v15 & 0x10) != 0 || (v15 & 1) != 0 ) + { + *(_DWORD *)(this + 20) = v14; + *(_DWORD *)(this + 16) = v14; + *(_DWORD *)(this + 24) = v14 + v12 - 1; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + *(_BYTE *)(this + 74) = 1; + if ( a2 != -1 ) + { + **(_BYTE **)(this + 20) = a2; + result = a2; + ++*(_DWORD *)(this + 20); + return result; + } + } + else + { + LOBYTE(v16[0]) = a2; + if ( a2 != -1 ) + { + if ( std::filebuf::_M_convert_to_external((_DWORD *)this, (char *)v16, 1u) ) + { + *(_BYTE *)(this + 74) = 1; + return a2; + } + return -1; + } + *(_BYTE *)(this + 74) = 1; + } + return 0; + } + if ( a2 != -1 ) + { + *v8 = a2; + v7 = *(char **)(this + 16); + v8 = (char *)(*(_DWORD *)(this + 20) + 1); + *(_DWORD *)(this + 20) = v8; + } + if ( !std::filebuf::_M_convert_to_external((_DWORD *)this, v7, v8 - v7) ) + return -1; + v9 = *(_DWORD *)(this + 64); + v10 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v9; + *(_DWORD *)(this + 8) = v9; + *(_DWORD *)(this + 12) = v9; + if ( ((v10 & 0x10) != 0 || (v10 & 1) != 0) && (v13 = *(_DWORD *)(this + 68), v13 > 1) ) + { + *(_DWORD *)(this + 20) = v9; + *(_DWORD *)(this + 16) = v9; + *(_DWORD *)(this + 24) = v9 + v13 - 1; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + result = a2; + if ( a2 == -1 ) + return 0; + return result; +} + +//----- (0049AC10) -------------------------------------------------------- +int __thiscall std::filebuf::pbackfail(char *this, int a2) +{ + unsigned int v3; // eax + char v4; // di + int v5; // edx + int result; // eax + _BYTE *v7; // eax + int v8; // eax + int v9; // eax + int v10[7]; // [esp+24h] [ebp-1Ch] BYREF + + if ( (this[48] & 8) == 0 ) + return -1; + if ( this[74] ) + { + if ( (*(int (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, -1) == -1 ) + return -1; + v9 = *((_DWORD *)this + 16); + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 4) = 0; + v4 = this[84]; + *((_DWORD *)this + 1) = v9; + *((_DWORD *)this + 2) = v9; + *((_DWORD *)this + 3) = v9; + *((_DWORD *)this + 6) = 0; + this[74] = 0; + } + else + { + v3 = *((_DWORD *)this + 2); + v4 = this[84]; + if ( v3 > *((_DWORD *)this + 1) ) + { + *((_DWORD *)this + 2) = v3 - 1; + v5 = *(unsigned __int8 *)(v3 - 1); + goto LABEL_5; + } + } + (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); + if ( (v10[0] & v10[1]) == -1 ) + return -1; + v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); + if ( v5 == -1 ) + return -1; +LABEL_5: + result = 0; + if ( a2 == -1 ) + return result; + result = v5; + if ( v5 == a2 ) + return result; + if ( v4 ) + return -1; + v7 = (_BYTE *)*((_DWORD *)this + 2); + if ( !this[84] ) + { + *((_DWORD *)this + 19) = v7; + v8 = *((_DWORD *)this + 3); + *((_DWORD *)this + 3) = this + 76; + *((_DWORD *)this + 20) = v8; + v7 = this + 75; + *((_DWORD *)this + 1) = this + 75; + *((_DWORD *)this + 2) = this + 75; + this[84] = 1; + } + this[73] = 1; + *v7 = a2; + return a2; +} + +//----- (0049AD40) -------------------------------------------------------- +int __fastcall std::filebuf::showmanyc(_DWORD *a1) +{ + int v1; // esi + int v2; // ebp + int v4; // ecx + int v5; // esi + int v6; // edi + int v8; // esi + + v1 = a1[12]; + if ( (v1 & 8) == 0 ) + return -1; + v2 = (int)(a1 + 10); + if ( !std::__basic_file::is_open(a1 + 10) ) + return -1; + v4 = a1[22]; + v5 = v1 & 4; + v6 = a1[3] - a1[2]; + if ( !v4 ) + std::__throw_bad_cast(); + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) + return v6; + v8 = std::__basic_file::showmanyc(v2); + return v8 / (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1[22] + 32))(a1[22]) + v6; +} + +//----- (0049ADD0) -------------------------------------------------------- +int __fastcall std::filebuf::underflow(int a1) +{ + unsigned __int8 *v2; // eax + int result; // eax + bool v4; // zf + unsigned int v5; // edx + int v6; // ecx + unsigned int v7; // edi + int v8; // ecx + int v9; // eax + signed int v10; // esi + int v11; // ecx + const void *v12; // eax + unsigned int v13; // edx + signed int v14; // edi + signed int v15; // ecx + char *v16; // ebp + int v17; // ecx + char *v18; // eax + void *v19; // edx + int v20; // esi + char v21; // di + int v22; // ebp + char v23; // al + int v24; // eax + int v25; // eax + int v26; // eax + _BYTE *Src; // ecx + unsigned int v28; // eax + size_t Size; // esi + int v30; // eax + int *v31; // eax + unsigned __int8 *v32; // edx + int v33; // eax + char *v34; // eax + char *v35; // eax + char *v36; // eax + unsigned int v37; // [esp+48h] [ebp-34h] + unsigned int v38; // [esp+4Ch] [ebp-30h] + unsigned int v39; // [esp+4Ch] [ebp-30h] + unsigned int v40; // [esp+4Ch] [ebp-30h] + unsigned int v41; // [esp+4Ch] [ebp-30h] + unsigned int v42; // [esp+4Ch] [ebp-30h] + void *v43; // [esp+5Ch] [ebp-20h] BYREF + + if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) + return -1; + if ( *(_BYTE *)(a1 + 74) ) + { + result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, -1); + if ( result == -1 ) + return result; + v2 = *(unsigned __int8 **)(a1 + 64); + v4 = *(_BYTE *)(a1 + 84) == 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v2; + *(_DWORD *)(a1 + 8) = v2; + *(_DWORD *)(a1 + 12) = v2; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 74) = 0; + if ( v4 ) + goto LABEL_4; +LABEL_9: + v4 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; + v5 = *(_DWORD *)(a1 + 80); + *(_BYTE *)(a1 + 84) = 0; + v6 = *(_DWORD *)(a1 + 64); + v2 = (unsigned __int8 *)(*(_DWORD *)(a1 + 76) + !v4); + *(_DWORD *)(a1 + 12) = v5; + *(_DWORD *)(a1 + 76) = v2; + *(_DWORD *)(a1 + 4) = v6; + *(_DWORD *)(a1 + 8) = v2; + if ( (unsigned int)v2 < v5 ) + return *v2; + goto LABEL_10; + } + v2 = *(unsigned __int8 **)(a1 + 8); + if ( *(_BYTE *)(a1 + 84) ) + goto LABEL_9; +LABEL_4: + if ( (unsigned int)v2 < *(_DWORD *)(a1 + 12) ) + return *v2; +LABEL_10: + v7 = *(_DWORD *)(a1 + 68); + if ( v7 < 2 ) + v7 = 2; + v8 = *(_DWORD *)(a1 + 88); + v37 = v7 - 1; + if ( !v8 ) + std::__throw_bad_cast(); + if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) ) + { + v9 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 20))(*(_DWORD *)(a1 + 88)); + if ( v9 <= 0 ) + { + v26 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 88) + 32))(*(_DWORD *)(a1 + 88)); + v11 = v7 - 1; + v10 = v7 + v26 - 2; + } + else + { + v10 = v37 * v9; + v11 = v37 * v9; + } + v12 = *(const void **)(a1 + 100); + v13 = 0; + v14 = *(_DWORD *)(a1 + 104) - (_DWORD)v12; + if ( v11 > v14 ) + v13 = v11 - v14; + v15 = *(_DWORD *)(a1 + 96); + if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 12) == *(_DWORD *)(a1 + 4) ) + { + if ( !v14 ) + { + if ( v10 <= v15 ) + { + v16 = *(char **)(a1 + 92); + goto LABEL_22; + } + v42 = v13; + v36 = (char *)operator new[](v10); + v13 = v42; + v16 = v36; +LABEL_61: + if ( *(_DWORD *)(a1 + 92) ) + { + v39 = v13; + operator delete[](*(void **)(a1 + 92)); + v13 = v39; + } + *(_DWORD *)(a1 + 92) = v16; + *(_DWORD *)(a1 + 96) = v10; +LABEL_22: + v17 = *(_DWORD *)(a1 + 56); + v18 = &v16[v14]; + *(_DWORD *)(a1 + 100) = v16; + *(_DWORD *)(a1 + 104) = &v16[v14]; + *(_DWORD *)(a1 + 60) = v17; + if ( v13 ) + { + v20 = 0; + goto LABEL_30; + } + v19 = *(void **)(a1 + 4); + v20 = 0; + v43 = v19; + if ( v18 <= v16 ) + { + while ( 1 ) + { +LABEL_29: + v18 = *(char **)(a1 + 104); + v13 = 1; + v14 = (signed int)&v18[-*(_DWORD *)(a1 + 92)]; +LABEL_30: + if ( (signed int)(v13 + v14) > *(_DWORD *)(a1 + 96) ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow codecvt::max_length() is not valid"); + v24 = std::__basic_file::xsgetn((void *)(a1 + 40), v18, v13); + if ( v24 ) + { + if ( v24 == -1 ) + goto LABEL_49; + v21 = 0; + } + else + { + v21 = 1; + } + v19 = *(void **)(a1 + 4); + v16 = *(char **)(a1 + 100); + v18 = (char *)(*(_DWORD *)(a1 + 104) + v24); + *(_DWORD *)(a1 + 104) = v18; + v43 = v19; + if ( v18 > v16 ) + break; + if ( v20 == 3 ) + goto LABEL_41; + if ( v21 ) + goto LABEL_37; + } + } + else + { + v21 = 0; + } + v20 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, void *, unsigned int, void **))(**(_DWORD **)(a1 + 88) + 16))( + *(_DWORD *)(a1 + 88), + a1 + 56, + v16, + v18, + a1 + 100, + v19, + (unsigned int)v19 + v37, + &v43); + if ( v20 != 3 ) + { + v22 = (int)v43 - *(_DWORD *)(a1 + 4); + if ( v20 != 2 ) + { + v23 = v21 | (v43 != *(void **)(a1 + 4)); + goto LABEL_28; + } + if ( (int)v43 - *(_DWORD *)(a1 + 4) <= 0 ) + { + if ( !v21 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow invalid byte sequence in file"); + goto LABEL_57; + } + goto LABEL_51; + } + v18 = *(char **)(a1 + 104); + v19 = *(void **)(a1 + 4); +LABEL_41: + Src = *(_BYTE **)(a1 + 92); + v28 = v18 - Src; + v22 = v28; + Size = v28; + if ( v37 < v28 ) + { + Size = v37; + v22 = v37; + } + else if ( !v28 ) + { +LABEL_43: + *(_DWORD *)(a1 + 100) = Src; + v20 = 3; + v23 = v21 | (v22 != 0); +LABEL_28: + if ( !v23 ) + goto LABEL_29; + if ( v22 > 0 ) + goto LABEL_51; + if ( v21 ) + { +LABEL_37: + v25 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v25; + *(_DWORD *)(a1 + 8) = v25; + *(_DWORD *)(a1 + 12) = v25; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 0; + if ( v20 == 1 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow incomplete character in file"); + return -1; + } +LABEL_49: + v31 = _errno(); + std::__throw_ios_failure( + (std::__ios_failure *)"basic_filebuf::underflow error reading the file", + (char *)*v31); + } + memcpy(v19, Src, Size); + Src = (_BYTE *)(*(_DWORD *)(a1 + 92) + Size); + goto LABEL_43; + } + if ( v10 <= v15 ) + { + v16 = *(char **)(a1 + 92); + v13 = 0; +LABEL_68: + v40 = v13; + memmove(v16, v12, v14); + v16 = *(char **)(a1 + 92); + v13 = v40; + goto LABEL_22; + } + v35 = (char *)operator new[](v10); + v13 = 0; + v16 = v35; + } + else + { + if ( v10 <= v15 ) + { + v16 = *(char **)(a1 + 92); + if ( !v14 ) + goto LABEL_22; + goto LABEL_68; + } + v38 = v13; + v34 = (char *)operator new[](v10); + v13 = v38; + v16 = v34; + if ( !v14 ) + goto LABEL_61; + } + v41 = v13; + memcpy(v16, *(const void **)(a1 + 100), v14); + v13 = v41; + goto LABEL_61; + } + v30 = std::__basic_file::xsgetn((void *)(a1 + 40), *(void **)(a1 + 4), v37); + v22 = v30; + if ( !v30 ) + { +LABEL_57: + v33 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v33; + *(_DWORD *)(a1 + 8) = v33; + *(_DWORD *)(a1 + 12) = v33; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 0; + return -1; + } + if ( v30 <= 0 ) + goto LABEL_49; +LABEL_51: + v32 = *(unsigned __int8 **)(a1 + 64); + v4 = (*(_BYTE *)(a1 + 48) & 8) == 0; + *(_DWORD *)(a1 + 4) = v32; + *(_DWORD *)(a1 + 8) = v32; + if ( v4 ) + *(_DWORD *)(a1 + 12) = v32; + else + *(_DWORD *)(a1 + 12) = &v32[v22]; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 1; + return *v32; +} + +//----- (0049B260) -------------------------------------------------------- +int __thiscall std::filebuf::basic_filebuf(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + int result; // eax + int v10; // edx + int v11; // edx + int v12; // edx + int v13; // edx + int v14; // edx + int v15; // edx + int v16; // edx + const std::locale *v17; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); + v3 = *(_DWORD *)(a2 + 56); + v4 = *(_DWORD *)(a2 + 40); + *(_DWORD *)this = &off_4F6090; + *(_DWORD *)(this + 56) = v3; + v5 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(this + 40) = v4; + LOBYTE(v4) = *(_BYTE *)(a2 + 44); + *(_DWORD *)(this + 60) = v5; + v6 = *(_DWORD *)(a2 + 64); + *(_BYTE *)(this + 44) = v4; + v7 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(this + 64) = v6; + v8 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(this + 48) = v7; + result = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 68) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 72); + *(_DWORD *)(this + 32) = 0; + *(_BYTE *)(this + 72) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(this + 36) = 0; + *(_BYTE *)(this + 73) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 74); + *(_DWORD *)(a2 + 40) = 0; + *(_BYTE *)(a2 + 44) = 0; + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 52) = result; + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(a2 + 68) = 1; + *(_WORD *)(a2 + 72) = 0; + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 75); + *(_DWORD *)(a2 + 4) = 0; + *(_BYTE *)(this + 75) = v8; + v10 = *(_DWORD *)(a2 + 76); + *(_DWORD *)(a2 + 8) = 0; + *(_DWORD *)(this + 76) = v10; + v11 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 76) = 0; + *(_DWORD *)(this + 80) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 84); + *(_DWORD *)(a2 + 80) = 0; + *(_BYTE *)(this + 84) = v11; + v12 = *(_DWORD *)(a2 + 88); + *(_BYTE *)(a2 + 84) = 0; + *(_DWORD *)(this + 88) = v12; + v13 = *(_DWORD *)(a2 + 92); + *(_DWORD *)(a2 + 12) = 0; + *(_DWORD *)(this + 92) = v13; + v14 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 92) = 0; + *(_DWORD *)(this + 96) = v14; + v15 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 100) = v15; + v16 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(this + 104) = v16; + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = result; + *(_DWORD *)(a2 + 60) = result; + return result; +} +// 49B26E: variable 'v17' is possibly undefined +// 4F6090: using guessed type int (*off_4F6090)(); + +//----- (0049B3A0) -------------------------------------------------------- +void *__fastcall std::filebuf::basic_filebuf(int a1) +{ + int v1; // esi + _BYTE *v3; // edi + void *result; // eax + + v1 = a1 + 28; + v3 = (_BYTE *)(a1 + 40); + *(_DWORD *)a1 = &off_4F6414; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + std::locale::locale((_DWORD *)(a1 + 28)); + *(_DWORD *)a1 = &off_4F6090; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::__basic_file::__basic_file(v3, a1 + 32); + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 68) = 512; + *(_DWORD *)(a1 + 72) = 0; + *(_DWORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_BYTE *)(a1 + 84) = 0; + *(_DWORD *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + result = (void *)std::has_facet>(v1); + if ( (_BYTE)result ) + { + result = std::use_facet>(v1); + *(_DWORD *)(a1 + 88) = result; + } + return result; +} +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (0049B4C0) -------------------------------------------------------- +int __thiscall std::filebuf::basic_filebuf(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + int result; // eax + int v10; // edx + int v11; // edx + int v12; // edx + int v13; // edx + int v14; // edx + int v15; // edx + int v16; // edx + const std::locale *v17; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf((_DWORD *)this, a2, v17); + v3 = *(_DWORD *)(a2 + 56); + v4 = *(_DWORD *)(a2 + 40); + *(_DWORD *)this = &off_4F6090; + *(_DWORD *)(this + 56) = v3; + v5 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(this + 40) = v4; + LOBYTE(v4) = *(_BYTE *)(a2 + 44); + *(_DWORD *)(this + 60) = v5; + v6 = *(_DWORD *)(a2 + 64); + *(_BYTE *)(this + 44) = v4; + v7 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(this + 64) = v6; + v8 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(this + 48) = v7; + result = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 68) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 72); + *(_DWORD *)(this + 32) = 0; + *(_BYTE *)(this + 72) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(this + 36) = 0; + *(_BYTE *)(this + 73) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 74); + *(_DWORD *)(a2 + 40) = 0; + *(_BYTE *)(a2 + 44) = 0; + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 52) = result; + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(a2 + 68) = 1; + *(_WORD *)(a2 + 72) = 0; + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 75); + *(_DWORD *)(a2 + 4) = 0; + *(_BYTE *)(this + 75) = v8; + v10 = *(_DWORD *)(a2 + 76); + *(_DWORD *)(a2 + 8) = 0; + *(_DWORD *)(this + 76) = v10; + v11 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 76) = 0; + *(_DWORD *)(this + 80) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 84); + *(_DWORD *)(a2 + 80) = 0; + *(_BYTE *)(this + 84) = v11; + v12 = *(_DWORD *)(a2 + 88); + *(_BYTE *)(a2 + 84) = 0; + *(_DWORD *)(this + 88) = v12; + v13 = *(_DWORD *)(a2 + 92); + *(_DWORD *)(a2 + 12) = 0; + *(_DWORD *)(this + 92) = v13; + v14 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 92) = 0; + *(_DWORD *)(this + 96) = v14; + v15 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 100) = v15; + v16 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(this + 104) = v16; + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = result; + *(_DWORD *)(a2 + 60) = result; + return result; +} +// 49B4CE: variable 'v17' is possibly undefined +// 4F6090: using guessed type int (*off_4F6090)(); + +//----- (0049B600) -------------------------------------------------------- +void *__fastcall std::filebuf::basic_filebuf(int a1) +{ + int v1; // esi + _BYTE *v3; // edi + void *result; // eax + + v1 = a1 + 28; + v3 = (_BYTE *)(a1 + 40); + *(_DWORD *)a1 = &off_4F6414; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + std::locale::locale((_DWORD *)(a1 + 28)); + *(_DWORD *)a1 = &off_4F6090; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::__basic_file::__basic_file(v3, a1 + 32); + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 68) = 512; + *(_DWORD *)(a1 + 72) = 0; + *(_DWORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_BYTE *)(a1 + 84) = 0; + *(_DWORD *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + result = (void *)std::has_facet>(v1); + if ( (_BYTE)result ) + { + result = std::use_facet>(v1); + *(_DWORD *)(a1 + 88) = result; + } + return result; +} +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (0049B720) -------------------------------------------------------- +void __fastcall std::filebuf::~filebuf(_DWORD **a1) +{ + *a1 = &off_4F6090; + std::filebuf::close((int)a1); + std::__basic_file::~__basic_file(a1 + 10); + *a1 = &off_4F6414; + std::locale::~locale(a1 + 7); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (0049B770) -------------------------------------------------------- +void __fastcall std::filebuf::~filebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6090; + std::filebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (0049B7B0) -------------------------------------------------------- +void __fastcall std::filebuf::~filebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6090; + std::filebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (0049B7F0) -------------------------------------------------------- +int __thiscall std::filebuf::operator=(int this, int a2) +{ + int v3; // eax + char v4; // dl + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // eax + int v9; // eax + int v10; // eax + int v11; // eax + int v12; // eax + int v13; // eax + int v14; // eax + int v15; // eax + int result; // eax + + std::filebuf::close(this); + std::streambuf::operator=((volatile signed __int32 **)this, a2); + v3 = *(_DWORD *)(this + 40); + *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); + v4 = *(_BYTE *)(a2 + 44); + *(_DWORD *)(a2 + 40) = v3; + LOBYTE(v3) = *(_BYTE *)(this + 44); + *(_BYTE *)(this + 44) = v4; + *(_BYTE *)(a2 + 44) = v3; + v5 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 48) = v5; + *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); + *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); + v6 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(this + 64) = v6; + v7 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(a2 + 68) = 1; + *(_DWORD *)(this + 68) = v7; + LOBYTE(v7) = *(_BYTE *)(a2 + 72); + *(_BYTE *)(a2 + 72) = 0; + *(_BYTE *)(this + 72) = v7; + v8 = *(_DWORD *)(a2 + 92); + *(_DWORD *)(a2 + 92) = 0; + *(_DWORD *)(this + 92) = v8; + v9 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 96) = v9; + v10 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(this + 100) = v10; + v11 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(this + 104) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 73); + *(_BYTE *)(a2 + 73) = 0; + *(_BYTE *)(this + 73) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 74); + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v11; + v12 = *(_DWORD *)(a2 + 76); + *(_DWORD *)(a2 + 76) = 0; + *(_DWORD *)(this + 76) = v12; + v13 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 80) = 0; + *(_DWORD *)(this + 80) = v13; + LOBYTE(v13) = *(_BYTE *)(a2 + 84); + *(_BYTE *)(a2 + 84) = 0; + *(_BYTE *)(this + 84) = v13; + v14 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 4) = v14; + *(_DWORD *)(a2 + 8) = v14; + *(_DWORD *)(a2 + 12) = v14; + v15 = *(_DWORD *)(a2 + 52); + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 56) = v15; + *(_DWORD *)(a2 + 60) = v15; + result = this; + *(_DWORD *)(a2 + 24) = 0; + return result; +} + +//----- (0049B910) -------------------------------------------------------- +unsigned int __thiscall std::wfilebuf::_M_set_buffer(_DWORD *this, int a2) +{ + int v2; // eax + bool v3; // bl + int v4; // edx + unsigned int result; // eax + + v2 = this[12]; + v3 = (v2 & 8) != 0; + if ( (v2 & 0x10) != 0 ) + LOBYTE(v2) = 1; + v4 = this[16]; + result = v2 & 1; + this[1] = v4; + this[2] = v4; + if ( a2 > 0 && v3 ) + { + result = v4 + 2 * a2; + this[3] = result; +LABEL_6: + this[5] = 0; + this[4] = 0; + this[6] = 0; + return result; + } + this[3] = v4; + if ( a2 ) + goto LABEL_6; + if ( !(_BYTE)result ) + goto LABEL_6; + result = this[17]; + if ( result <= 1 ) + goto LABEL_6; + result = v4 + 2 * result - 2; + this[5] = v4; + this[4] = v4; + this[6] = result; + return result; +} + +//----- (0049B990) -------------------------------------------------------- +int __thiscall std::wfilebuf::_M_get_ext_pos(int this, int a2) +{ + if ( (*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(this + 92) + 24))(*(_DWORD *)(this + 92)) ) + return (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 12)) >> 1; + else + return *(_DWORD *)(this + 96) + + (*(int (__thiscall **)(_DWORD, int, _DWORD, _DWORD, int))(**(_DWORD **)(this + 92) + 28))( + *(_DWORD *)(this + 92), + a2, + *(_DWORD *)(this + 96), + *(_DWORD *)(this + 104), + (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1) + - *(_DWORD *)(this + 108); +} + +//----- (0049BA00) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_create_pback(int a1) +{ + int v1; // eax + int result; // eax + + if ( !*(_BYTE *)(a1 + 88) ) + { + v1 = *(_DWORD *)(a1 + 8); + *(_BYTE *)(a1 + 88) = 1; + *(_DWORD *)(a1 + 80) = v1; + *(_DWORD *)(a1 + 84) = *(_DWORD *)(a1 + 12); + *(_DWORD *)(a1 + 4) = a1 + 76; + *(_DWORD *)(a1 + 8) = a1 + 76; + result = a1 + 78; + *(_DWORD *)(a1 + 12) = a1 + 78; + } + return result; +} + +//----- (0049BA30) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_destroy_pback(int a1) +{ + bool v1; // zf + int v2; // eax + int v3; // ebx + int result; // eax + int v5; // edx + + if ( *(_BYTE *)(a1 + 88) ) + { + v1 = *(_DWORD *)(a1 + 8) == *(_DWORD *)(a1 + 4); + v2 = *(_DWORD *)(a1 + 80); + v3 = *(_DWORD *)(a1 + 64); + *(_BYTE *)(a1 + 88) = 0; + result = v2 + 2 * !v1; + v5 = *(_DWORD *)(a1 + 84); + *(_DWORD *)(a1 + 4) = v3; + *(_DWORD *)(a1 + 80) = result; + *(_DWORD *)(a1 + 8) = result; + *(_DWORD *)(a1 + 12) = v5; + } + return result; +} + +//----- (0049BA70) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_terminate_output(_DWORD *a1) +{ + int v1; // esi + int v3; // eax + int v4; // ecx + _DWORD **v5; // eax + _DWORD *v6; // ebx + _DWORD **v7; // ebp + unsigned int v8; // eax + unsigned int v9; // esi + unsigned __int8 v11; // [esp+2Bh] [ebp-B5h] + void *v12; // [esp+2Ch] [ebp-B4h] + int v13; // [esp+30h] [ebp-B0h] + int v14; // [esp+40h] [ebp-A0h] BYREF + char v15[128]; // [esp+44h] [ebp-9Ch] BYREF + char v16[28]; // [esp+C4h] [ebp-1Ch] BYREF + + v1 = 1; + if ( a1[4] < a1[5] ) + { + v3 = (*(int (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, 0xFFFF); + LOBYTE(v3) = (_WORD)v3 != 0xFFFF; + v1 = v3; + } + if ( *((_BYTE *)a1 + 74) ) + { + v4 = a1[23]; + if ( !v4 ) + std::__throw_bad_cast(); + v11 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); + if ( !v11 ) + { + if ( (_BYTE)v1 ) + { + v12 = a1 + 10; + v5 = (_DWORD **)a1; + v6 = a1 + 14; + v7 = v5; + while ( 1 ) + { + v8 = (*(int (__thiscall **)(_DWORD *, _DWORD *, char *, char *, int *))(*v7[23] + 12))( + v7[23], + v6, + v15, + v16, + &v14); + v9 = v8; + if ( v8 == 2 ) + break; + if ( v8 <= 1 && v14 - (int)v15 > 0 ) + { + v13 = v14 - (_DWORD)v15; + if ( v13 != std::__basic_file::xsputn(v12, v15, v14 - (_DWORD)v15) ) + return v11; + if ( v9 == 1 ) + continue; + } + return ((unsigned __int16 (__thiscall *)(_DWORD **, int))(*v7)[13])(v7, 0xFFFF) != 0xFFFF; + } + return v11; + } + } + } + return v1; +} +// 49BA70: using guessed type char var_1C[28]; + +//----- (0049BB80) -------------------------------------------------------- +bool __thiscall std::wfilebuf::_M_convert_to_external(_DWORD *this, char *a2, unsigned int a3) +{ + int v4; // ecx + unsigned int v5; // esi + int v6; // eax + void *v7; // esp + void *v8; // esp + unsigned int v9; // eax + unsigned int v10; // eax + int v12; // esi + char v13; // [esp+20h] [ebp-38h] + int v14; // [esp+38h] [ebp-20h] BYREF + int v15; // [esp+3Ch] [ebp-1Ch] BYREF + char v16[24]; // [esp+40h] [ebp-18h] BYREF + + v4 = this[23]; + v5 = a3; + if ( !v4 ) + std::__throw_bad_cast(); + if ( (*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) + goto LABEL_5; + v6 = 16 * ((a3 * (*(int (__thiscall **)(_DWORD))(*(_DWORD *)this[23] + 32))(this[23]) + 27) >> 4); + v7 = alloca(v6); + v8 = alloca(v6); + v9 = (*(int (__thiscall **)(_DWORD, _DWORD *, char *, char *))(*(_DWORD *)this[23] + 8))( + this[23], + this + 14, + a2, + &a2[2 * a3]); + if ( v9 > 1 ) + { + if ( v9 == 3 ) + { +LABEL_5: + v10 = std::__basic_file::xsputn(this + 10, a2, a3); + return v10 == v5; + } +LABEL_11: + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::_M_convert_to_external conversion error"); + } + v13 = v9; + v5 = v14 - (_DWORD)v16; + v10 = std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16); + if ( v14 - (_DWORD)v16 != v10 || (v13 & 1) == 0 ) + return v10 == v5; + if ( (*(int (__thiscall **)(_DWORD, int *, int, _DWORD, int *, char *, int, int *))(*(_DWORD *)this[23] + 8))( + this[23], + &v15, + v15, + this[5], + &v15, + v16, + v14, + &v14) == 2 ) + goto LABEL_11; + v12 = v14 - (_DWORD)v16; + return std::__basic_file::xsputn(this + 10, v16, v14 - (_DWORD)v16) == v12; +} + +//----- (0049BCF0) -------------------------------------------------------- +void __fastcall std::wfilebuf::_M_destroy_internal_buffer(int a1) +{ + if ( *(_BYTE *)(a1 + 72) ) + { + if ( *(_DWORD *)(a1 + 64) ) + operator delete[](*(void **)(a1 + 64)); + *(_DWORD *)(a1 + 64) = 0; + *(_BYTE *)(a1 + 72) = 0; + } + if ( *(_DWORD *)(a1 + 96) ) + operator delete[](*(void **)(a1 + 96)); + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + *(_DWORD *)(a1 + 108) = 0; +} + +//----- (0049BD50) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1) +{ + int result; // eax + + if ( !*(_BYTE *)(a1 + 72) ) + { + result = *(_DWORD *)(a1 + 64); + if ( !result ) + return std::wfilebuf::_M_allocate_internal_buffer(a1); + } + return result; +} + +//----- (0049BD70) -------------------------------------------------------- +int __fastcall std::wfilebuf::_M_allocate_internal_buffer(int a1) +{ + unsigned int v1; // eax + int result; // eax + + v1 = *(_DWORD *)(a1 + 68); + if ( v1 > 0x3FFFFFFE ) + std::wfilebuf::_M_allocate_internal_buffer(); + result = operator new[](2 * v1); + *(_BYTE *)(a1 + 72) = 1; + *(_DWORD *)(a1 + 64) = result; + return result; +} + +//----- (0049BDA0) -------------------------------------------------------- +char *__thiscall std::wfilebuf::open(int this, char *a2, int a3) +{ + _BYTE *v3; // esi + + v3 = (_BYTE *)(this + 40); + if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) + return 0; + std::__basic_file::open(v3, a2, a3, 436); + if ( !std::__basic_file::is_open(v3) ) + return 0; + if ( !*(_BYTE *)(this + 72) && !*(_DWORD *)(this + 64) ) + std::wfilebuf::_M_allocate_internal_buffer(this); + return std::wfilebuf::open((char *)this, a3); +} + +//----- (0049BE20) -------------------------------------------------------- +char *__thiscall std::wfilebuf::open(char *this, int a2) +{ + int v3; // eax + int v4; // eax + _DWORD v6[7]; // [esp+20h] [ebp-1Ch] BYREF + + *(_WORD *)(this + 73) = 0; + v3 = *((_DWORD *)this + 16); + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 1) = v3; + *((_DWORD *)this + 2) = v3; + *((_DWORD *)this + 3) = v3; + v4 = *((_DWORD *)this + 13); + *((_DWORD *)this + 12) = a2; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 14) = v4; + *((_DWORD *)this + 15) = v4; + if ( (a2 & 2) == 0 ) + return this; + (*(void (__thiscall **)(_DWORD *, char *, _DWORD, _DWORD, int, int))(*(_DWORD *)this + 16))(v6, this, 0, 0, 2, a2); + if ( (v6[0] & v6[1]) != -1 ) + return this; + std::wfilebuf::close((int)this); + return 0; +} + +//----- (0049BEC0) -------------------------------------------------------- +char *__thiscall std::wfilebuf::open(int this, wchar_t *a2, int a3) +{ + _BYTE *v3; // esi + + v3 = (_BYTE *)(this + 40); + if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) + return 0; + std::__basic_file::open(v3, a2, a3); + if ( !std::__basic_file::is_open(v3) ) + return 0; + if ( !*(_BYTE *)(this + 72) && !*(_DWORD *)(this + 64) ) + std::wfilebuf::_M_allocate_internal_buffer(this); + return std::wfilebuf::open((char *)this, a3); +} + +//----- (0049BF40) -------------------------------------------------------- +char *__thiscall std::wfilebuf::open(void *this, char *a2, int a3) +{ + return std::wfilebuf::open((int)this, *(char **)a2, a3); +} + +//----- (0049BF50) -------------------------------------------------------- +int __thiscall std::wfilebuf::swap(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // eax + char v15; // dl + int v16; // edx + int v17; // eax + int v18; // edx + int v19; // eax + int v20; // edx + int v21; // eax + int v22; // edx + int v23; // eax + int v24; // edx + int v25; // eax + int v26; // edx + int v27; // eax + int v28; // edx + int v29; // eax + int v30; // edx + int v31; // eax + int v32; // edx + int v33; // eax + int v34; // edx + int v35; // eax + int v36; // edx + int v37; // eax + int v38; // eax + int result; // eax + const std::locale *v40; // [esp+4h] [ebp-48h] + volatile signed __int32 **v41; // [esp+1Ch] [ebp-30h] + _DWORD *v42[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + v41 = (volatile signed __int32 **)(this + 28); + std::locale::locale((volatile signed __int32 **)v42, (volatile signed __int32 **)(this + 28), v40); + std::locale::operator=(v41, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v42); + std::locale::~locale(v42); + v14 = *(_DWORD *)(this + 40); + *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); + v15 = *(_BYTE *)(a2 + 44); + *(_DWORD *)(a2 + 40) = v14; + LOBYTE(v14) = *(_BYTE *)(this + 44); + *(_BYTE *)(this + 44) = v15; + v16 = *(_DWORD *)(a2 + 48); + *(_BYTE *)(a2 + 44) = v14; + v17 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 48) = v16; + v18 = *(_DWORD *)(a2 + 52); + *(_DWORD *)(a2 + 48) = v17; + v19 = *(_DWORD *)(this + 52); + *(_DWORD *)(this + 52) = v18; + v20 = *(_DWORD *)(a2 + 56); + *(_DWORD *)(a2 + 52) = v19; + v21 = *(_DWORD *)(this + 56); + *(_DWORD *)(this + 56) = v20; + v22 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(a2 + 56) = v21; + v23 = *(_DWORD *)(this + 60); + *(_DWORD *)(this + 60) = v22; + v24 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 60) = v23; + v25 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 64) = v24; + v26 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(a2 + 64) = v25; + v27 = *(_DWORD *)(this + 68); + *(_DWORD *)(this + 68) = v26; + *(_DWORD *)(a2 + 68) = v27; + LOBYTE(v27) = *(_BYTE *)(this + 72); + *(_BYTE *)(this + 72) = *(_BYTE *)(a2 + 72); + v28 = *(_DWORD *)(a2 + 96); + *(_BYTE *)(a2 + 72) = v27; + v29 = *(_DWORD *)(this + 96); + *(_DWORD *)(this + 96) = v28; + v30 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = v29; + v31 = *(_DWORD *)(this + 100); + *(_DWORD *)(this + 100) = v30; + v32 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = v31; + v33 = *(_DWORD *)(this + 104); + *(_DWORD *)(this + 104) = v32; + v34 = *(_DWORD *)(a2 + 108); + *(_DWORD *)(a2 + 104) = v33; + v35 = *(_DWORD *)(this + 108); + *(_DWORD *)(this + 108) = v34; + LOBYTE(v34) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(a2 + 108) = v35; + LOBYTE(v35) = *(_BYTE *)(this + 73); + *(_BYTE *)(this + 73) = v34; + LOBYTE(v34) = *(_BYTE *)(a2 + 74); + *(_BYTE *)(a2 + 73) = v35; + LOBYTE(v35) = *(_BYTE *)(this + 74); + *(_BYTE *)(this + 74) = v34; + v36 = *(_DWORD *)(a2 + 80); + *(_BYTE *)(a2 + 74) = v35; + v37 = *(_DWORD *)(this + 80); + *(_DWORD *)(this + 80) = v36; + *(_DWORD *)(a2 + 80) = v37; + v38 = *(_DWORD *)(this + 84); + *(_DWORD *)(this + 84) = *(_DWORD *)(a2 + 84); + LOBYTE(v36) = *(_BYTE *)(a2 + 88); + *(_DWORD *)(a2 + 84) = v38; + result = *(unsigned __int8 *)(this + 88); + *(_BYTE *)(this + 88) = v36; + *(_BYTE *)(a2 + 88) = result; + return result; +} +// 49BFB8: variable 'v40' is possibly undefined + +//----- (0049C0E0) -------------------------------------------------------- +int __fastcall std::wfilebuf::sync(_DWORD *a1) +{ + if ( a1[4] >= a1[5] ) + return 0; + else + return -((*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*a1 + 52))(a1, 0xFFFF) == 0xFFFF); +} + +//----- (0049C120) -------------------------------------------------------- +int __fastcall std::wfilebuf::close(int a1) +{ + int v1; // esi + char v3; // di + int v4; // eax + int v5; // eax + + v1 = a1 + 40; + if ( !std::__basic_file::is_open((_DWORD *)(a1 + 40)) ) + return 0; + v3 = std::wfilebuf::_M_terminate_output((_DWORD *)a1); + *(_DWORD *)(a1 + 48) = 0; + *(_BYTE *)(a1 + 88) = 0; + std::wfilebuf::_M_destroy_internal_buffer(a1); + *(_WORD *)(a1 + 73) = 0; + v4 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 4) = v4; + *(_DWORD *)(a1 + 8) = v4; + *(_DWORD *)(a1 + 12) = v4; + v5 = *(_DWORD *)(a1 + 52); + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 56) = v5; + *(_DWORD *)(a1 + 60) = v5; + if ( !std::__basic_file::close(v1) ) + return 0; + if ( v3 == 1 ) + return a1; + else + return 0; +} + +//----- (0049C1E0) -------------------------------------------------------- +char __thiscall std::wfilebuf::imbue(int this, int a2) +{ + void *v3; // esi + int v4; // eax + int v5; // ecx + int v6; // ecx + int v7; // edi + const void *Src; // eax + int v9; // edi + size_t Size; // edi + int v11; // eax + size_t v12; // edi + int v13; // eax + int v15; // [esp+30h] [ebp-1Ch] BYREF + int v16; // [esp+34h] [ebp-18h] + + if ( (unsigned __int8)std::has_facet>(a2) ) + v3 = std::use_facet>(a2); + else + v3 = 0; + LOBYTE(v4) = std::__basic_file::is_open((_DWORD *)(this + 40)); + if ( !(_BYTE)v4 ) + goto LABEL_13; + if ( !*(_BYTE *)(this + 73) && !*(_BYTE *)(this + 74) ) + { + *(_DWORD *)(this + 92) = v3; + return v4; + } + v5 = *(_DWORD *)(this + 92); + if ( !v5 ) + goto LABEL_24; + v4 = (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 20))(v5); + if ( v4 == -1 ) + goto LABEL_18; + if ( !*(_BYTE *)(this + 73) ) + { + if ( !*(_BYTE *)(this + 74) ) + goto LABEL_13; + LOBYTE(v4) = std::wfilebuf::_M_terminate_output((_DWORD *)this); + if ( (_BYTE)v4 ) + { + v4 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 4) = v4; + *(_DWORD *)(this + 8) = v4; + *(_DWORD *)(this + 12) = v4; + *(_DWORD *)(this + 24) = 0; + goto LABEL_13; + } +LABEL_18: + *(_DWORD *)(this + 92) = 0; + return v4; + } + v6 = *(_DWORD *)(this + 92); + if ( !v6 ) +LABEL_24: + std::__throw_bad_cast(); + LOBYTE(v4) = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6); + if ( !(_BYTE)v4 ) + { + v7 = *(_DWORD *)(this + 96); + Src = (const void *)(v7 + + (*(int (__thiscall **)(_DWORD, int, int, _DWORD, int))(**(_DWORD **)(this + 92) + 28))( + *(_DWORD *)(this + 92), + this + 60, + v7, + *(_DWORD *)(this + 104), + (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1)); + v9 = *(_DWORD *)(this + 108); + *(_DWORD *)(this + 104) = Src; + Size = v9 - (_DWORD)Src; + if ( Size ) + memmove(*(void **)(this + 96), Src, Size); + v11 = *(_DWORD *)(this + 96); + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + v12 = v11 + Size; + *(_DWORD *)(this + 104) = v11; + v13 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 108) = v12; + *(_DWORD *)(this + 4) = v13; + *(_DWORD *)(this + 8) = v13; + *(_DWORD *)(this + 12) = v13; + v4 = *(_DWORD *)(this + 52); + *(_DWORD *)(this + 24) = 0; + *(_DWORD *)(this + 56) = v4; + *(_DWORD *)(this + 60) = v4; + goto LABEL_13; + } + if ( !v3 ) + goto LABEL_18; + LOBYTE(v4) = (*(int (__fastcall **)(void *))(*(_DWORD *)v3 + 24))(v3); + if ( !(_BYTE)v4 ) + { + (*(void (__thiscall **)(int *, int, _DWORD, _DWORD, int, _DWORD))(*(_DWORD *)this + 16))( + &v15, + this, + 0, + 0, + 1, + *(_DWORD *)(this + 48)); + LOBYTE(v4) = v15 & v16; + if ( (v15 & v16) == -1 ) + goto LABEL_18; + } +LABEL_13: + *(_DWORD *)(this + 92) = v3; + return v4; +} + +//----- (0049C3C0) -------------------------------------------------------- +int __thiscall std::wfilebuf::setbuf(int this, __int64 a2) +{ + if ( std::__basic_file::is_open((_DWORD *)(this + 40)) ) + return this; + if ( !a2 ) + { + *(_DWORD *)(this + 68) = 1; + return this; + } + if ( !(_DWORD)a2 || SHIDWORD(a2) <= 0 ) + return this; + *(_QWORD *)(this + 64) = a2; + return this; +} + +//----- (0049C420) -------------------------------------------------------- +int __thiscall std::wfilebuf::xsgetn(_DWORD *this, wchar_t *a2, signed int a3) +{ + wchar_t *S1; // edi + signed int v5; // esi + wchar_t *v6; // eax + int v7; // ebp + wchar_t *v8; // ecx + bool v9; // zf + int v10; // eax + int v11; // edx + int v12; // eax + int v13; // ecx + unsigned int v14; // eax + int v15; // ecx + char v16; // al + int v18; // eax + const wchar_t *v19; // edx + const wchar_t *S2; // eax + int i; // eax + wchar_t v22; // dx + int v23; // eax + int *v24; // eax + int v25; // [esp+18h] [ebp-24h] + int N; // [esp+18h] [ebp-24h] + int v27; // [esp+1Ch] [ebp-20h] + + S1 = a2; + v5 = a3; + if ( *((_BYTE *)this + 88) ) + { + v6 = (wchar_t *)this[2]; + v7 = 0; + v8 = (wchar_t *)this[1]; + if ( a3 > 0 && v6 == v8 ) + { + v22 = *v6; + v5 = a3 - 1; + ++v6; + S1 = a2 + 1; + v7 = 1; + *a2 = v22; + } + v9 = v8 == v6; + v10 = this[20]; + v11 = this[16]; + *((_BYTE *)this + 88) = 0; + this[1] = v11; + v12 = v10 + 2 * !v9; + v13 = this[21]; + this[20] = v12; + this[2] = v12; + this[3] = v13; +LABEL_6: + v14 = this[17]; + if ( v14 >= 2 ) + goto LABEL_7; +LABEL_16: + v14 = 2; + goto LABEL_7; + } + if ( !*((_BYTE *)this + 74) ) + { + v7 = 0; + goto LABEL_6; + } + if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, int))(*this + 52))(this, 0xFFFF) == 0xFFFF ) + return 0; + v18 = this[16]; + this[5] = 0; + v7 = 0; + this[4] = 0; + this[1] = v18; + this[2] = v18; + this[3] = v18; + v14 = this[17]; + this[6] = 0; + *((_BYTE *)this + 74) = 0; + if ( v14 < 2 ) + goto LABEL_16; + if ( v5 <= (int)(v14 - 1) ) + goto LABEL_11; +LABEL_7: + v15 = this[23]; + if ( !v15 ) + std::__throw_bad_cast(); + v25 = this[12]; + v16 = (*(int (__fastcall **)(int))(*(_DWORD *)v15 + 24))(v15); + if ( (v25 & 8) != 0 && v16 ) + { + v19 = (const wchar_t *)this[3]; + S2 = (const wchar_t *)this[2]; + if ( S2 != v19 ) + { + v27 = (char *)v19 - (char *)S2; + N = v19 - S2; + wmemcpy(S1, S2, N); + this[2] += v27; + S1 = (wchar_t *)((char *)S1 + v27); + v7 += N; + v5 -= N; + } + for ( i = std::__basic_file::xsgetn(this + 10, S1, v5); ; i = std::__basic_file::xsgetn( + this + 10, + S1, + v5) ) + { + if ( i == -1 ) + { + v24 = _errno(); + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::xsgetn error reading the file", (char *)*v24); + } + if ( !i ) + break; + v7 += i; + v5 -= i; + if ( !v5 ) + goto LABEL_26; + S1 += i; + } + if ( !v5 ) + { +LABEL_26: + *((_BYTE *)this + 73) = 1; + return v7; + } + v23 = this[16]; + this[5] = 0; + this[4] = 0; + this[1] = v23; + this[2] = v23; + this[3] = v23; + this[6] = 0; + *((_BYTE *)this + 73) = 0; + } + else + { +LABEL_11: + v7 += std::wstreambuf::xsgetn(this, S1, v5); + } + return v7; +} + +//----- (0049C640) -------------------------------------------------------- +int __thiscall std::wfilebuf::xsputn(int this, wchar_t *a2, int a3) +{ + int v4; // esi + int v5; // ecx + char v6; // si + int v7; // edx + int v8; // eax + unsigned int v9; // ecx + int v10; // esi + signed int v11; // eax + int v12; // edx + int v14; // edx + int v15; // ecx + unsigned int v16; // ecx + char *v17; // [esp+0h] [ebp-2Ch] + + v4 = *(_DWORD *)(this + 48); + if ( (v4 & 0x10) != 0 ) + LOBYTE(v4) = 1; + v5 = *(_DWORD *)(this + 92); + v6 = v4 & 1; + if ( !v5 ) + std::__throw_bad_cast(); + if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) || !v6 || *(_BYTE *)(this + 73) ) + return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); + v7 = *(_DWORD *)(this + 20); + v8 = (*(_DWORD *)(this + 24) - v7) >> 1; + if ( !*(_BYTE *)(this + 74) ) + { + v9 = *(_DWORD *)(this + 68); + if ( v9 > 1 ) + v8 = v9 - 1; + } + if ( v8 > 1023 ) + v8 = 1024; + if ( a3 < v8 ) + return std::wstreambuf::xsputn((_DWORD *)this, a2, a3); + v17 = *(char **)(this + 16); + v10 = (v7 - (int)v17) >> 1; + v11 = std::__basic_file::xsputn_2((void *)(this + 40), v17, v10, (char *)a2, a3); + if ( v10 + a3 == v11 ) + { + v14 = *(_DWORD *)(this + 64); + v15 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v14; + *(_DWORD *)(this + 8) = v14; + *(_DWORD *)(this + 12) = v14; + if ( ((v15 & 0x10) != 0 || (v15 & 1) != 0) && (v16 = *(_DWORD *)(this + 68), v16 > 1) ) + { + *(_DWORD *)(this + 20) = v14; + *(_DWORD *)(this + 16) = v14; + *(_DWORD *)(this + 24) = v14 + 2 * v16 - 2; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + *(_BYTE *)(this + 74) = 1; + } + v12 = 0; + if ( v10 < v11 ) + return v11 - v10; + return v12; +} + +//----- (0049C770) -------------------------------------------------------- +_DWORD *__thiscall std::wfilebuf::_M_seek(_DWORD *this, int a2, __int64 a3, int a4, int a5) +{ + _DWORD *result; // eax + __int64 v7; // rax + int v8; // ecx + int v9; // ecx + + *this = -1; + this[1] = -1; + this[2] = 0; + if ( !(unsigned __int8)std::wfilebuf::_M_terminate_output((_DWORD *)a2) ) + return this; + v7 = std::__basic_file::seekoff((void *)(a2 + 40), a3, a4); + if ( ((unsigned int)v7 & HIDWORD(v7)) == -1 ) + return this; + *this = v7; + result = this; + *(_WORD *)(a2 + 73) = 0; + v8 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 108) = v8; + *(_DWORD *)(a2 + 104) = v8; + v9 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 4) = v9; + *(_DWORD *)(a2 + 8) = v9; + *(_DWORD *)(a2 + 12) = v9; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = a5; + this[2] = a5; + this[1] = HIDWORD(v7); + return result; +} + +//----- (0049C820) -------------------------------------------------------- +_DWORD *__thiscall std::wfilebuf::seekoff(_DWORD *this, int a2, __int64 a3, int a4, int a5) +{ + int v6; // ecx + int v7; // eax + bool v8; // al + bool v10; // zf + __int64 v11; // rax + __int64 v12; // rax + int v13; // eax + int v14; // edx + unsigned int v15; // esi + unsigned int v16; // edi + __int64 v17; // kr00_8 + __int64 ext_pos; // [esp+28h] [ebp-54h] + bool v19; // [esp+34h] [ebp-48h] + int v20; // [esp+34h] [ebp-48h] + int v21; // [esp+3Ch] [ebp-40h] + int v22; // [esp+4Ch] [ebp-30h] BYREF + int v23[11]; // [esp+50h] [ebp-2Ch] BYREF + + v6 = *(_DWORD *)(a2 + 92); + if ( v6 ) + { + v7 = (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 20))(v6); + v21 = v7 & ~(v7 >> 31); + v8 = v7 <= 0; + } + else + { + v21 = 0; + v8 = 1; + } + *this = -1; + this[1] = -1; + this[2] = 0; + v19 = v8 && a3 != 0; + if ( !std::__basic_file::is_open((_DWORD *)(a2 + 40)) || v19 ) + return this; + if ( a4 != 1 + || a3 + || *(_BYTE *)(a2 + 74) + && !(*(unsigned __int8 (__fastcall **)(_DWORD))(**(_DWORD **)(a2 + 92) + 24))(*(_DWORD *)(a2 + 92)) ) + { + if ( *(_BYTE *)(a2 + 88) ) + { + v10 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); + *(_BYTE *)(a2 + 88) = 0; + v13 = *(_DWORD *)(a2 + 80) + 2 * !v10; + v14 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 80) = v13; + *(_DWORD *)(a2 + 8) = v13; + *(_DWORD *)(a2 + 12) = v14; + } + v20 = *(_DWORD *)(a2 + 52); + v22 = v20; + v15 = a3 * v21; + v16 = (unsigned __int64)(a3 * v21) >> 32; + if ( *(_BYTE *)(a2 + 73) && a4 == 1 ) + { + v22 = *(_DWORD *)(a2 + 60); + v17 = std::wfilebuf::_M_get_ext_pos(a2, (int)&v22) + __PAIR64__(v16, v15); + std::wfilebuf::_M_seek(v23, a2, v17, 1, v22); + } + else + { + std::wfilebuf::_M_seek(v23, a2, __SPAIR64__(v16, v15), a4, v20); + } + *this = v23[0]; + this[1] = v23[1]; + this[2] = v23[2]; + return this; + } + v10 = *(_BYTE *)(a2 + 73) == 0; + ext_pos = 0LL; + v22 = *(_DWORD *)(a2 + 52); + if ( !v10 ) + { + v22 = *(_DWORD *)(a2 + 60); + ext_pos = std::wfilebuf::_M_get_ext_pos(a2, (int)&v22); + } + if ( *(_BYTE *)(a2 + 74) ) + ext_pos = (*(_DWORD *)(a2 + 20) - *(_DWORD *)(a2 + 16)) >> 1; + v11 = std::__basic_file::seekoff((void *)(a2 + 40), 0LL, 1); + if ( ((unsigned int)v11 & HIDWORD(v11)) == -1 ) + return this; + v12 = ext_pos + v11; + *this = v12; + LODWORD(v12) = v22; + this[1] = HIDWORD(v12); + this[2] = v12; + return this; +} + +//----- (0049CA90) -------------------------------------------------------- +_DWORD *__thiscall std::wfilebuf::seekpos(_DWORD *this, int a2, __int64 a3, int a4, int a5, int a6) +{ + bool v8; // zf + int v9; // eax + int v10; // edx + int v11[7]; // [esp+30h] [ebp-1Ch] BYREF + + *this = -1; + this[1] = -1; + this[2] = 0; + if ( std::__basic_file::is_open((_DWORD *)(a2 + 40)) ) + { + if ( *(_BYTE *)(a2 + 88) ) + { + v8 = *(_DWORD *)(a2 + 8) == *(_DWORD *)(a2 + 4); + *(_BYTE *)(a2 + 88) = 0; + v9 = *(_DWORD *)(a2 + 80) + 2 * !v8; + v10 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 4) = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 80) = v9; + *(_DWORD *)(a2 + 8) = v9; + *(_DWORD *)(a2 + 12) = v10; + } + std::wfilebuf::_M_seek(v11, a2, a3, 0, a4); + *this = v11[0]; + this[1] = v11[1]; + this[2] = v11[2]; + } + return this; +} + +//----- (0049CB60) -------------------------------------------------------- +int __thiscall std::wfilebuf::overflow(int this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // ecx + int ext_pos; // eax + char *v7; // edx + char *v8; // eax + int result; // eax + unsigned int v10; // eax + int v11; // eax + int v12; // edx + int v13; // edx + int v14; // ecx + _WORD *v15; // eax + unsigned int v16; // edx + int v17[7]; // [esp+20h] [ebp-1Ch] BYREF + + if ( (*(_BYTE *)(this + 48) & 0x11) == 0 ) + return -1; + if ( *(_BYTE *)(this + 73) ) + { + if ( *(_BYTE *)(this + 88) ) + { + v3 = *(_DWORD *)(this + 80) + 2 * (*(_DWORD *)(this + 8) != *(_DWORD *)(this + 4)); + v4 = *(_DWORD *)(this + 84); + *(_DWORD *)(this + 80) = v3; + v5 = *(_DWORD *)(this + 64); + *(_DWORD *)(this + 8) = v3; + *(_DWORD *)(this + 4) = v5; + *(_DWORD *)(this + 12) = v4; + *(_BYTE *)(this + 88) = 0; + } + ext_pos = std::wfilebuf::_M_get_ext_pos(this, this + 60); + std::wfilebuf::_M_seek(v17, this, ext_pos, 1, *(_DWORD *)(this + 60)); + if ( (v17[0] & v17[1]) == -1 ) + return -1; + } + v7 = *(char **)(this + 16); + v8 = *(char **)(this + 20); + if ( v7 < v8 ) + { + if ( (_WORD)a2 != 0xFFFF ) + { + *(_WORD *)v8 = a2; + v8 += 2; + *(_DWORD *)(this + 20) = v8; + } + if ( !std::wfilebuf::_M_convert_to_external((_DWORD *)this, v7, (v8 - v7) >> 1) ) + return -1; + v11 = *(_DWORD *)(this + 64); + v12 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v11; + *(_DWORD *)(this + 8) = v11; + *(_DWORD *)(this + 12) = v11; + if ( ((v12 & 0x10) != 0 || (v12 & 1) != 0) && (v16 = *(_DWORD *)(this + 68), v16 > 1) ) + { + *(_DWORD *)(this + 20) = v11; + *(_DWORD *)(this + 16) = v11; + *(_DWORD *)(this + 24) = v11 + 2 * v16 - 2; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + result = a2; + if ( (_WORD)a2 != 0xFFFF ) + return result; + return 0; + } + v10 = *(_DWORD *)(this + 68); + if ( v10 > 1 ) + { + v13 = *(_DWORD *)(this + 64); + v14 = *(_DWORD *)(this + 48); + *(_DWORD *)(this + 4) = v13; + *(_DWORD *)(this + 8) = v13; + *(_DWORD *)(this + 12) = v13; + if ( (v14 & 0x10) != 0 || (v14 & 1) != 0 ) + { + *(_DWORD *)(this + 20) = v13; + *(_DWORD *)(this + 16) = v13; + *(_DWORD *)(this + 24) = v13 + 2 * v10 - 2; + } + else + { + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 24) = 0; + } + *(_BYTE *)(this + 74) = 1; + if ( (_WORD)a2 != 0xFFFF ) + { + v15 = *(_WORD **)(this + 20); + *v15 = a2; + *(_DWORD *)(this + 20) = v15 + 1; + return a2; + } + return 0; + } + LOWORD(v17[0]) = a2; + if ( (_WORD)a2 == 0xFFFF ) + { + *(_BYTE *)(this + 74) = 1; + return 0; + } + if ( !std::wfilebuf::_M_convert_to_external((_DWORD *)this, (char *)v17, 1u) ) + return -1; + *(_BYTE *)(this + 74) = 1; + return a2; +} + +//----- (0049CD40) -------------------------------------------------------- +int __thiscall std::wfilebuf::pbackfail(char *this, int a2) +{ + unsigned int v3; // eax + char v4; // di + int v5; // edx + int result; // eax + _WORD *v7; // eax + int v8; // eax + int v9; // eax + int v10[7]; // [esp+24h] [ebp-1Ch] BYREF + + if ( (this[48] & 8) == 0 ) + return -1; + if ( this[74] ) + { + if ( (*(unsigned __int16 (__thiscall **)(char *, int))(*(_DWORD *)this + 52))(this, 0xFFFF) == 0xFFFF ) + return -1; + v9 = *((_DWORD *)this + 16); + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 4) = 0; + v4 = this[88]; + *((_DWORD *)this + 1) = v9; + *((_DWORD *)this + 2) = v9; + *((_DWORD *)this + 3) = v9; + *((_DWORD *)this + 6) = 0; + this[74] = 0; + } + else + { + v3 = *((_DWORD *)this + 2); + v4 = this[88]; + if ( v3 > *((_DWORD *)this + 1) ) + { + *((_DWORD *)this + 2) = v3 - 2; + v5 = *(unsigned __int16 *)(v3 - 2); + goto LABEL_5; + } + } + (*(void (__thiscall **)(int *, char *, int, int, int, int))(*(_DWORD *)this + 16))(v10, this, -1, -1, 1, 24); + if ( (v10[0] & v10[1]) == -1 ) + return -1; + v5 = (*(int (__fastcall **)(char *))(*(_DWORD *)this + 36))(this); + if ( (_WORD)v5 == 0xFFFF ) + return -1; +LABEL_5: + result = 0; + if ( (_WORD)a2 == 0xFFFF ) + return result; + result = v5; + if ( (_WORD)v5 == (_WORD)a2 ) + return result; + if ( v4 ) + return -1; + v7 = (_WORD *)*((_DWORD *)this + 2); + if ( !this[88] ) + { + *((_DWORD *)this + 20) = v7; + v8 = *((_DWORD *)this + 3); + *((_DWORD *)this + 3) = this + 78; + *((_DWORD *)this + 21) = v8; + v7 = this + 76; + *((_DWORD *)this + 1) = this + 76; + *((_DWORD *)this + 2) = this + 76; + this[88] = 1; + } + this[73] = 1; + *v7 = a2; + return a2; +} + +//----- (0049CE70) -------------------------------------------------------- +int __fastcall std::wfilebuf::showmanyc(_DWORD *a1) +{ + int v1; // edi + int v2; // ebp + int v4; // ecx + int v5; // edi + int v6; // esi + int v8; // edi + + v1 = a1[12]; + if ( (v1 & 8) == 0 ) + return -1; + v2 = (int)(a1 + 10); + if ( !std::__basic_file::is_open(a1 + 10) ) + return -1; + v4 = a1[23]; + v5 = v1 & 4; + v6 = (a1[3] - a1[2]) >> 1; + if ( !v4 ) + std::__throw_bad_cast(); + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 20))(v4) < 0 || !v5 ) + return v6; + v8 = std::__basic_file::showmanyc(v2); + return v8 / (*(int (__fastcall **)(_DWORD))(*(_DWORD *)a1[23] + 32))(a1[23]) + v6; +} + +//----- (0049CF00) -------------------------------------------------------- +int __fastcall std::wfilebuf::underflow(int a1) +{ + unsigned __int16 *v2; // eax + unsigned int v3; // edi + int v4; // ecx + int v5; // eax + signed int v6; // esi + int v7; // ecx + const void *v8; // eax + unsigned int v9; // edx + signed int v10; // edi + signed int v11; // ecx + char *v12; // ebp + int v13; // ecx + char *v14; // eax + wchar_t *S1; // edx + int v16; // esi + char v17; // di + int v18; // ebp + char v19; // al + int v20; // eax + int v21; // eax + int result; // eax + bool v23; // zf + int v24; // eax + int v25; // ecx + unsigned int v26; // edx + int v27; // eax + int v28; // eax + const wchar_t *S2; // ecx + unsigned int v30; // eax + size_t N; // esi + unsigned __int16 *v32; // eax + int v33; // eax + int *v34; // eax + char *v35; // eax + char *v36; // eax + char *v37; // eax + unsigned int v38; // [esp+44h] [ebp-34h] + unsigned int v39; // [esp+48h] [ebp-30h] + unsigned int v40; // [esp+48h] [ebp-30h] + unsigned int v41; // [esp+48h] [ebp-30h] + unsigned int v42; // [esp+48h] [ebp-30h] + unsigned int v43; // [esp+48h] [ebp-30h] + wchar_t *v44; // [esp+58h] [ebp-20h] BYREF + + if ( (*(_BYTE *)(a1 + 48) & 8) == 0 ) + return -1; + if ( *(_BYTE *)(a1 + 74) ) + { + result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 52))(a1, 0xFFFF); + if ( (_WORD)result == 0xFFFF ) + return result; + v2 = *(unsigned __int16 **)(a1 + 64); + v23 = *(_BYTE *)(a1 + 88) == 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v2; + *(_DWORD *)(a1 + 8) = v2; + *(_DWORD *)(a1 + 12) = v2; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 74) = 0; + if ( v23 ) + { +LABEL_4: + if ( *(_DWORD *)(a1 + 12) <= (unsigned int)v2 ) + goto LABEL_5; + return *v2; + } + } + else + { + v2 = *(unsigned __int16 **)(a1 + 8); + if ( !*(_BYTE *)(a1 + 88) ) + goto LABEL_4; + } + v23 = *(_DWORD *)(a1 + 4) == (_DWORD)v2; + v24 = *(_DWORD *)(a1 + 80); + *(_BYTE *)(a1 + 88) = 0; + v25 = *(_DWORD *)(a1 + 64); + v2 = (unsigned __int16 *)(v24 + 2 * !v23); + v26 = *(_DWORD *)(a1 + 84); + *(_DWORD *)(a1 + 80) = v2; + *(_DWORD *)(a1 + 4) = v25; + *(_DWORD *)(a1 + 8) = v2; + *(_DWORD *)(a1 + 12) = v26; + if ( v26 > (unsigned int)v2 ) + return *v2; +LABEL_5: + v3 = *(_DWORD *)(a1 + 68); + if ( v3 < 2 ) + v3 = 2; + v4 = *(_DWORD *)(a1 + 92); + v38 = v3 - 1; + if ( !v4 ) + std::__throw_bad_cast(); + if ( !(*(unsigned __int8 (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4) ) + { + v5 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 20))(*(_DWORD *)(a1 + 92)); + if ( v5 <= 0 ) + { + v33 = (*(int (__fastcall **)(_DWORD))(**(_DWORD **)(a1 + 92) + 32))(*(_DWORD *)(a1 + 92)); + v7 = v3 - 1; + v6 = v3 + v33 - 2; + } + else + { + v6 = v38 * v5; + v7 = v38 * v5; + } + v8 = *(const void **)(a1 + 104); + v9 = 0; + v10 = *(_DWORD *)(a1 + 108) - (_DWORD)v8; + if ( v7 > v10 ) + v9 = v7 - v10; + v11 = *(_DWORD *)(a1 + 100); + if ( *(_BYTE *)(a1 + 73) && *(_DWORD *)(a1 + 12) == *(_DWORD *)(a1 + 4) ) + { + if ( !v10 ) + { + if ( v6 <= v11 ) + { + v12 = *(char **)(a1 + 96); + goto LABEL_17; + } + v43 = v9; + v37 = (char *)operator new[](v6); + v9 = v43; + v12 = v37; +LABEL_62: + if ( *(_DWORD *)(a1 + 96) ) + { + v40 = v9; + operator delete[](*(void **)(a1 + 96)); + v9 = v40; + } + *(_DWORD *)(a1 + 96) = v12; + *(_DWORD *)(a1 + 100) = v6; +LABEL_17: + v13 = *(_DWORD *)(a1 + 56); + v14 = &v12[v10]; + *(_DWORD *)(a1 + 104) = v12; + *(_DWORD *)(a1 + 108) = &v12[v10]; + *(_DWORD *)(a1 + 60) = v13; + if ( v9 ) + { + v16 = 0; + goto LABEL_25; + } + S1 = *(wchar_t **)(a1 + 4); + v16 = 0; + v44 = S1; + if ( v14 <= v12 ) + { + while ( 1 ) + { +LABEL_24: + v14 = *(char **)(a1 + 108); + v9 = 1; + v10 = (signed int)&v14[-*(_DWORD *)(a1 + 96)]; +LABEL_25: + if ( (signed int)(v9 + v10) > *(_DWORD *)(a1 + 100) ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow codecvt::max_length() is not valid"); + v20 = std::__basic_file::xsgetn((void *)(a1 + 40), v14, v9); + if ( v20 ) + { + if ( v20 == -1 ) + goto LABEL_59; + v17 = 0; + } + else + { + v17 = 1; + } + S1 = *(wchar_t **)(a1 + 4); + v12 = *(char **)(a1 + 104); + v14 = (char *)(*(_DWORD *)(a1 + 108) + v20); + *(_DWORD *)(a1 + 108) = v14; + v44 = S1; + if ( v14 > v12 ) + break; + if ( v16 == 3 ) + goto LABEL_44; + if ( v17 ) + goto LABEL_32; + } + } + else + { + v17 = 0; + } + v16 = (*(int (__thiscall **)(_DWORD, int, char *, char *, int, wchar_t *, wchar_t *, wchar_t **))(**(_DWORD **)(a1 + 92) + 16))( + *(_DWORD *)(a1 + 92), + a1 + 56, + v12, + v14, + a1 + 104, + S1, + &S1[v38], + &v44); + if ( v16 != 3 ) + { + v18 = ((int)v44 - *(_DWORD *)(a1 + 4)) >> 1; + if ( v16 != 2 ) + { + v19 = v17 | (v44 != *(wchar_t **)(a1 + 4)); +LABEL_23: + if ( !v19 ) + goto LABEL_24; + if ( v18 > 0 ) + goto LABEL_54; + if ( !v17 ) + { +LABEL_59: + v34 = _errno(); + std::__throw_ios_failure( + (std::__ios_failure *)"basic_filebuf::underflow error reading the file", + (char *)*v34); + } +LABEL_32: + v21 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v21; + *(_DWORD *)(a1 + 8) = v21; + *(_DWORD *)(a1 + 12) = v21; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 0; + if ( v16 == 1 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow incomplete character in file"); + return -1; + } + if ( (int)v44 - *(_DWORD *)(a1 + 4) <= 0 ) + { + if ( !v17 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_filebuf::underflow invalid byte sequence in file"); + goto LABEL_41; + } + goto LABEL_54; + } + v14 = *(char **)(a1 + 108); + S1 = *(wchar_t **)(a1 + 4); +LABEL_44: + S2 = *(const wchar_t **)(a1 + 96); + v30 = v14 - (char *)S2; + v18 = v30; + N = v30; + if ( v38 < v30 ) + { + N = v38; + v18 = v38; + } + else if ( !v30 ) + { +LABEL_46: + *(_DWORD *)(a1 + 104) = S2; + v16 = 3; + v19 = v17 | (v18 != 0); + goto LABEL_23; + } + wmemcpy(S1, S2, N); + S2 = (const wchar_t *)(*(_DWORD *)(a1 + 96) + N); + goto LABEL_46; + } + if ( v6 <= v11 ) + { + v12 = *(char **)(a1 + 96); + v9 = 0; +LABEL_73: + v42 = v9; + memmove(v12, v8, v10); + v12 = *(char **)(a1 + 96); + v9 = v42; + goto LABEL_17; + } + v36 = (char *)operator new[](v6); + v9 = 0; + v12 = v36; + } + else + { + if ( v6 <= v11 ) + { + v12 = *(char **)(a1 + 96); + if ( !v10 ) + goto LABEL_17; + goto LABEL_73; + } + v39 = v9; + v35 = (char *)operator new[](v6); + v9 = v39; + v12 = v35; + if ( !v10 ) + goto LABEL_62; + } + v41 = v9; + memcpy(v12, *(const void **)(a1 + 104), v10); + v9 = v41; + goto LABEL_62; + } + v27 = std::__basic_file::xsgetn((void *)(a1 + 40), *(void **)(a1 + 4), v38); + v18 = v27; + if ( !v27 ) + { +LABEL_41: + v28 = *(_DWORD *)(a1 + 64); + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 4) = v28; + *(_DWORD *)(a1 + 8) = v28; + *(_DWORD *)(a1 + 12) = v28; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 0; + return -1; + } + if ( v27 <= 0 ) + goto LABEL_59; +LABEL_54: + v32 = *(unsigned __int16 **)(a1 + 64); + v23 = (*(_BYTE *)(a1 + 48) & 8) == 0; + *(_DWORD *)(a1 + 4) = v32; + *(_DWORD *)(a1 + 8) = v32; + if ( v23 ) + *(_DWORD *)(a1 + 12) = v32; + else + *(_DWORD *)(a1 + 12) = &v32[v18]; + *(_DWORD *)(a1 + 20) = 0; + result = *v32; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_BYTE *)(a1 + 73) = 1; + return result; +} + +//----- (0049D3C0) -------------------------------------------------------- +int __thiscall std::wfilebuf::basic_filebuf(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + int result; // eax + int v10; // edx + int v11; // edx + int v12; // edx + int v13; // edx + int v14; // edx + int v15; // edx + int v16; // edx + const std::locale *v17; // [esp+4h] [ebp-18h] + + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); + v3 = *(_DWORD *)(a2 + 56); + v4 = *(_DWORD *)(a2 + 40); + *(_DWORD *)this = &off_4F60D0; + *(_DWORD *)(this + 56) = v3; + v5 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(this + 40) = v4; + LOBYTE(v4) = *(_BYTE *)(a2 + 44); + *(_DWORD *)(this + 60) = v5; + v6 = *(_DWORD *)(a2 + 64); + *(_BYTE *)(this + 44) = v4; + v7 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(this + 64) = v6; + v8 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(this + 48) = v7; + result = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 68) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 72); + *(_DWORD *)(this + 32) = 0; + *(_BYTE *)(this + 72) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(this + 36) = 0; + *(_BYTE *)(this + 73) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 74); + *(_DWORD *)(a2 + 40) = 0; + *(_BYTE *)(a2 + 44) = 0; + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 52) = result; + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(a2 + 68) = 1; + *(_WORD *)(a2 + 72) = 0; + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v8; + LOWORD(v8) = *(_WORD *)(a2 + 76); + *(_DWORD *)(a2 + 4) = 0; + *(_WORD *)(this + 76) = v8; + v10 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 8) = 0; + *(_DWORD *)(this + 80) = v10; + v11 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 80) = 0; + *(_DWORD *)(this + 84) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 88); + *(_DWORD *)(a2 + 84) = 0; + *(_BYTE *)(this + 88) = v11; + v12 = *(_DWORD *)(a2 + 92); + *(_BYTE *)(a2 + 88) = 0; + *(_DWORD *)(this + 92) = v12; + v13 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 12) = 0; + *(_DWORD *)(this + 96) = v13; + v14 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 100) = v14; + v15 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(this + 104) = v15; + v16 = *(_DWORD *)(a2 + 108); + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(a2 + 108) = 0; + *(_DWORD *)(this + 108) = v16; + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = result; + *(_DWORD *)(a2 + 60) = result; + return result; +} +// 49D3CE: variable 'v17' is possibly undefined +// 4F60D0: using guessed type int (*off_4F60D0)(); + +//----- (0049D500) -------------------------------------------------------- +void *__fastcall std::wfilebuf::basic_filebuf(int a1) +{ + int v1; // esi + _BYTE *v3; // edi + void *result; // eax + + v1 = a1 + 28; + v3 = (_BYTE *)(a1 + 40); + *(_DWORD *)a1 = &off_4F6454; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + std::locale::locale((_DWORD *)(a1 + 28)); + *(_DWORD *)a1 = &off_4F60D0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::__basic_file::__basic_file(v3, a1 + 32); + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 68) = 512; + *(_WORD *)(a1 + 72) = 0; + *(_BYTE *)(a1 + 74) = 0; + *(_WORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_DWORD *)(a1 + 84) = 0; + *(_BYTE *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + *(_DWORD *)(a1 + 108) = 0; + result = (void *)std::has_facet>(v1); + if ( (_BYTE)result ) + { + result = std::use_facet>(v1); + *(_DWORD *)(a1 + 92) = result; + } + return result; +} +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (0049D630) -------------------------------------------------------- +int __thiscall std::wfilebuf::basic_filebuf(int this, int a2) +{ + int v3; // edx + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + int result; // eax + int v10; // edx + int v11; // edx + int v12; // edx + int v13; // edx + int v14; // edx + int v15; // edx + int v16; // edx + const std::locale *v17; // [esp+4h] [ebp-18h] + + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v17); + v3 = *(_DWORD *)(a2 + 56); + v4 = *(_DWORD *)(a2 + 40); + *(_DWORD *)this = &off_4F60D0; + *(_DWORD *)(this + 56) = v3; + v5 = *(_DWORD *)(a2 + 60); + *(_DWORD *)(this + 40) = v4; + LOBYTE(v4) = *(_BYTE *)(a2 + 44); + *(_DWORD *)(this + 60) = v5; + v6 = *(_DWORD *)(a2 + 64); + *(_BYTE *)(this + 44) = v4; + v7 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(this + 64) = v6; + v8 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(this + 48) = v7; + result = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 68) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 72); + *(_DWORD *)(this + 32) = 0; + *(_BYTE *)(this + 72) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 73); + *(_DWORD *)(this + 36) = 0; + *(_BYTE *)(this + 73) = v8; + LOBYTE(v8) = *(_BYTE *)(a2 + 74); + *(_DWORD *)(a2 + 40) = 0; + *(_BYTE *)(a2 + 44) = 0; + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 52) = result; + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(a2 + 68) = 1; + *(_WORD *)(a2 + 72) = 0; + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v8; + LOWORD(v8) = *(_WORD *)(a2 + 76); + *(_DWORD *)(a2 + 4) = 0; + *(_WORD *)(this + 76) = v8; + v10 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 8) = 0; + *(_DWORD *)(this + 80) = v10; + v11 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 80) = 0; + *(_DWORD *)(this + 84) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 88); + *(_DWORD *)(a2 + 84) = 0; + *(_BYTE *)(this + 88) = v11; + v12 = *(_DWORD *)(a2 + 92); + *(_BYTE *)(a2 + 88) = 0; + *(_DWORD *)(this + 92) = v12; + v13 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 12) = 0; + *(_DWORD *)(this + 96) = v13; + v14 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 100) = v14; + v15 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(this + 104) = v15; + v16 = *(_DWORD *)(a2 + 108); + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(a2 + 108) = 0; + *(_DWORD *)(this + 108) = v16; + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 24) = 0; + *(_DWORD *)(a2 + 56) = result; + *(_DWORD *)(a2 + 60) = result; + return result; +} +// 49D63E: variable 'v17' is possibly undefined +// 4F60D0: using guessed type int (*off_4F60D0)(); + +//----- (0049D770) -------------------------------------------------------- +void *__fastcall std::wfilebuf::basic_filebuf(int a1) +{ + int v1; // esi + _BYTE *v3; // edi + void *result; // eax + + v1 = a1 + 28; + v3 = (_BYTE *)(a1 + 40); + *(_DWORD *)a1 = &off_4F6454; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + std::locale::locale((_DWORD *)(a1 + 28)); + *(_DWORD *)a1 = &off_4F60D0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::__basic_file::__basic_file(v3, a1 + 32); + *(_DWORD *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 60) = 0; + *(_DWORD *)(a1 + 64) = 0; + *(_DWORD *)(a1 + 68) = 512; + *(_WORD *)(a1 + 72) = 0; + *(_BYTE *)(a1 + 74) = 0; + *(_WORD *)(a1 + 76) = 0; + *(_DWORD *)(a1 + 80) = 0; + *(_DWORD *)(a1 + 84) = 0; + *(_BYTE *)(a1 + 88) = 0; + *(_DWORD *)(a1 + 92) = 0; + *(_DWORD *)(a1 + 96) = 0; + *(_DWORD *)(a1 + 100) = 0; + *(_DWORD *)(a1 + 104) = 0; + *(_DWORD *)(a1 + 108) = 0; + result = (void *)std::has_facet>(v1); + if ( (_BYTE)result ) + { + result = std::use_facet>(v1); + *(_DWORD *)(a1 + 92) = result; + } + return result; +} +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (0049D8A0) -------------------------------------------------------- +void __fastcall std::wfilebuf::~wfilebuf(_DWORD **a1) +{ + *a1 = &off_4F60D0; + std::wfilebuf::close((int)a1); + std::__basic_file::~__basic_file(a1 + 10); + *a1 = &off_4F6454; + std::locale::~locale(a1 + 7); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (0049D8F0) -------------------------------------------------------- +void __fastcall std::wfilebuf::~wfilebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F60D0; + std::wfilebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (0049D930) -------------------------------------------------------- +void __fastcall std::wfilebuf::~wfilebuf(int a1) +{ + *(_DWORD *)a1 = &off_4F60D0; + std::wfilebuf::close(a1); + std::__basic_file::~__basic_file(a1 + 40); + *(_DWORD *)a1 = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (0049D970) -------------------------------------------------------- +int __thiscall std::wfilebuf::operator=(int this, int a2) +{ + int v3; // eax + char v4; // dl + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // eax + int v9; // eax + int v10; // eax + int v11; // eax + int v12; // eax + int v13; // eax + int v14; // eax + int v15; // eax + int result; // eax + + std::wfilebuf::close(this); + std::wstreambuf::operator=((volatile signed __int32 **)this, a2); + v3 = *(_DWORD *)(this + 40); + *(_DWORD *)(this + 40) = *(_DWORD *)(a2 + 40); + v4 = *(_BYTE *)(a2 + 44); + *(_DWORD *)(a2 + 40) = v3; + LOBYTE(v3) = *(_BYTE *)(this + 44); + *(_BYTE *)(this + 44) = v4; + *(_BYTE *)(a2 + 44) = v3; + v5 = *(_DWORD *)(a2 + 48); + *(_DWORD *)(a2 + 48) = 0; + *(_DWORD *)(this + 48) = v5; + *(_DWORD *)(this + 52) = *(_DWORD *)(a2 + 52); + *(_DWORD *)(this + 56) = *(_DWORD *)(a2 + 56); + *(_DWORD *)(this + 60) = *(_DWORD *)(a2 + 60); + v6 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 64) = 0; + *(_DWORD *)(this + 64) = v6; + v7 = *(_DWORD *)(a2 + 68); + *(_DWORD *)(a2 + 68) = 1; + *(_DWORD *)(this + 68) = v7; + LOBYTE(v7) = *(_BYTE *)(a2 + 72); + *(_BYTE *)(a2 + 72) = 0; + *(_BYTE *)(this + 72) = v7; + v8 = *(_DWORD *)(a2 + 96); + *(_DWORD *)(a2 + 96) = 0; + *(_DWORD *)(this + 96) = v8; + v9 = *(_DWORD *)(a2 + 100); + *(_DWORD *)(a2 + 100) = 0; + *(_DWORD *)(this + 100) = v9; + v10 = *(_DWORD *)(a2 + 104); + *(_DWORD *)(a2 + 104) = 0; + *(_DWORD *)(this + 104) = v10; + v11 = *(_DWORD *)(a2 + 108); + *(_DWORD *)(a2 + 108) = 0; + *(_DWORD *)(this + 108) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 73); + *(_BYTE *)(a2 + 73) = 0; + *(_BYTE *)(this + 73) = v11; + LOBYTE(v11) = *(_BYTE *)(a2 + 74); + *(_BYTE *)(a2 + 74) = 0; + *(_BYTE *)(this + 74) = v11; + v12 = *(_DWORD *)(a2 + 80); + *(_DWORD *)(a2 + 80) = 0; + *(_DWORD *)(this + 80) = v12; + v13 = *(_DWORD *)(a2 + 84); + *(_DWORD *)(a2 + 84) = 0; + *(_DWORD *)(this + 84) = v13; + LOBYTE(v13) = *(_BYTE *)(a2 + 88); + *(_BYTE *)(a2 + 88) = 0; + *(_BYTE *)(this + 88) = v13; + v14 = *(_DWORD *)(a2 + 64); + *(_DWORD *)(a2 + 20) = 0; + *(_DWORD *)(a2 + 4) = v14; + *(_DWORD *)(a2 + 8) = v14; + *(_DWORD *)(a2 + 12) = v14; + v15 = *(_DWORD *)(a2 + 52); + *(_DWORD *)(a2 + 16) = 0; + *(_DWORD *)(a2 + 56) = v15; + *(_DWORD *)(a2 + 60) = v15; + result = this; + *(_DWORD *)(a2 + 24) = 0; + return result; +} + +//----- (0049DA90) -------------------------------------------------------- +int __thiscall std::fstream::open(char *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 12, a2, a3) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (0049DB00) -------------------------------------------------------- +int __thiscall std::fstream::open(char *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 12, a2, a3) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (0049DB70) -------------------------------------------------------- +int __thiscall std::fstream::open(char *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 12, *a2, a3) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (0049DBE0) -------------------------------------------------------- +int __thiscall std::fstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return std::filebuf::swap((int)(this + 3), (int)(a2 + 3)); +} +// 49DC04: variable 'v10' is possibly undefined + +//----- (0049DC80) -------------------------------------------------------- +int __fastcall std::fstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::filebuf::close((int)(a1 + 3)); + if ( !result ) + return std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (0049DCC0) -------------------------------------------------------- +bool __fastcall std::fstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 52)); +} + +//----- (0049DCD0) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + char *v10; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 30; + std::ios_base::ios_base(this + 30); + *this = &unk_4F0FCC; + *((_WORD *)this + 118) = 0; + v4 = a2[1]; + this[58] = 0; + this[1] = v4; + v5 = *a2; + this[60] = 0; + v6 = *(_DWORD *)(v5 - 12); + this[61] = 0; + this[62] = 0; + this[30] = &unk_4F0FE0; + this[63] = 0; + v10 = (char *)a2 + v6; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); + std::ios::_M_cache_locale(v2, (int)(this + 57)); + this[60] = 0; + v7 = *((_DWORD *)v10 + 28); + *((_DWORD *)v10 + 28) = 0; + this[58] = v7; + *((_WORD *)this + 118) = *((_WORD *)v10 + 58); + a2[1] = 0; + *this = &off_4F6114; + this[30] = off_4F613C; + this[2] = off_4F6128; + result = std::filebuf::basic_filebuf((int)(this + 3), (int)(a2 + 3)); + this[60] = this + 3; + return result; +} +// 49DD45: variable 'v9' is possibly undefined +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); + +//----- (0049DE00) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 120); + std::ios_base::ios_base((_DWORD *)this + 30); + *(_DWORD *)this = &unk_4F0FCC; + *((_DWORD *)this + 58) = 0; + *((_WORD *)this + 118) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 63) = 0; + *((_DWORD *)this + 30) = &unk_4F0FE0; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_4F0FF4; + *((_DWORD *)this + 30) = &unk_4F1008; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F6114; + *((_DWORD *)this + 30) = off_4F613C; + *((_DWORD *)this + 2) = off_4F6128; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init(v3, (int)(this + 12)); + v5 = std::filebuf::open(this + 12, a2, a3); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); + +//----- (0049DF70) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 120); + std::ios_base::ios_base((_DWORD *)this + 30); + *(_DWORD *)this = &unk_4F0FCC; + *((_DWORD *)this + 58) = 0; + *((_WORD *)this + 118) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 63) = 0; + *((_DWORD *)this + 30) = &unk_4F0FE0; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_4F0FF4; + *((_DWORD *)this + 30) = &unk_4F1008; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F6114; + *((_DWORD *)this + 30) = off_4F613C; + *((_DWORD *)this + 2) = off_4F6128; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init(v3, (int)(this + 12)); + v5 = std::filebuf::open(this + 12, a2, a3); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); + +//----- (0049E0E0) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 120); + std::ios_base::ios_base((_DWORD *)this + 30); + *(_DWORD *)this = &unk_4F0FCC; + *((_DWORD *)this + 58) = 0; + *((_WORD *)this + 118) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 63) = 0; + *((_DWORD *)this + 30) = &unk_4F0FE0; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_4F0FF4; + *((_DWORD *)this + 30) = &unk_4F1008; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F6114; + *((_DWORD *)this + 30) = off_4F613C; + *((_DWORD *)this + 2) = off_4F6128; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init(v3, (int)(this + 12)); + v5 = std::filebuf::open(this + 12, *a2, a3); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); + +//----- (0049E250) -------------------------------------------------------- +BOOL __fastcall std::fstream::basic_fstream(int a1) +{ + int v1; // esi + + v1 = a1 + 120; + std::ios_base::ios_base((_DWORD *)(a1 + 120)); + *(_DWORD *)a1 = &unk_4F0FCC; + *(_DWORD *)(a1 + 232) = 0; + *(_WORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)(a1 + 252) = 0; + *(_DWORD *)(a1 + 120) = &unk_4F0FE0; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_4F0FF4; + *(_DWORD *)(a1 + 120) = &unk_4F1008; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_4F6114; + *(_DWORD *)(a1 + 120) = off_4F613C; + *(_DWORD *)(a1 + 8) = off_4F6128; + std::filebuf::basic_filebuf(a1 + 12); + return std::ios::init(v1, a1 + 12); +} +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); + +//----- (0049E360) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edx + __int16 v6; // ax + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int result; // eax + std::ios_base *v14; // [esp+4h] [ebp-34h] + std::ios_base *v15; // [esp+18h] [ebp-20h] + int v16; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = a3[1]; + v16 = (int)this + *(_DWORD *)(v4 - 12); + v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v16, v15, v14); + std::ios::_M_cache_locale((_DWORD *)v16, v16 + 108); + v5 = *((_DWORD *)v15 + 28); + *((_DWORD *)v15 + 28) = 0; + v6 = *((_WORD *)v15 + 58); + *(_DWORD *)(v16 + 120) = 0; + *(_DWORD *)(v16 + 112) = v5; + *(_WORD *)(v16 + 116) = v6; + v7 = a2[4]; + a3[1] = 0; + v8 = a2[5]; + this[2] = v7; + *(int *)((char *)this + *(_DWORD *)(v7 - 12) + 8) = v8; + v9 = a2[1]; + v10 = a2[6]; + *this = v9; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; + this[2] = a2[7]; + v11 = *a2; + v12 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; + this[2] = a2[9]; + std::filebuf::basic_filebuf((int)(this + 3), (int)(a3 + 3)); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)(this + 3); + return result; +} +// 49E39D: variable 'v14' is possibly undefined + +//----- (0049E480) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, int *a2, char *a3, int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + char *v13; // ecx + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::ios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + *((_DWORD *)this + 2) = a2[9]; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); + v12 = std::filebuf::open(this + 12, a3, a4); + v13 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v12 ) + return std::ios::clear(v13, 0); + else + return std::ios::clear(v13, *((_DWORD *)v13 + 5) | 4); +} + +//----- (0049E5D0) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, int *a2, wchar_t *a3, int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + char *v13; // ecx + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::ios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + *((_DWORD *)this + 2) = a2[9]; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); + v12 = std::filebuf::open(this + 12, a3, a4); + v13 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v12 ) + return std::ios::clear(v13, 0); + else + return std::ios::clear(v13, *((_DWORD *)v13 + 5) | 4); +} + +//----- (0049E720) -------------------------------------------------------- +int __thiscall std::fstream::basic_fstream(char *this, int *a2, char **a3, int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + char *v13; // ecx + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::ios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + *((_DWORD *)this + 2) = a2[9]; + std::filebuf::basic_filebuf((int)(this + 12)); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); + v12 = std::filebuf::open(this + 12, *a3, a4); + v13 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v12 ) + return std::ios::clear(v13, 0); + else + return std::ios::clear(v13, *((_DWORD *)v13 + 5) | 4); +} + +//----- (0049E870) -------------------------------------------------------- +BOOL __thiscall std::fstream::basic_fstream(int *this, int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // edx + + v3 = a2[2]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[4]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[5]; + std::ios::init((int)v5, 0); + v6 = a2[1]; + v7 = a2[6]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = a2[7]; + v8 = *a2; + v9 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[9]; + std::filebuf::basic_filebuf((int)(this + 3)); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); +} + +//----- (0049E970) -------------------------------------------------------- +void __fastcall std::fstream::~fstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 3; + *(v2 - 3) = &off_4F6114; + v2[27] = off_4F613C; + *(v2 - 1) = off_4F6128; + *v2 = &off_4F6090; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 13); + a1[3] = &off_4F6414; + std::locale::~locale((_DWORD **)a1 + 10); + a1[2] = &unk_4F0FF4; + *a1 = &unk_4F0FCC; + a1[1] = 0; + a1[30] = &off_4F6E10; + std::ios_base::~ios_base((int)(a1 + 30)); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (0049E9F0) -------------------------------------------------------- +void __fastcall std::fstream::~fstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 12); + *(v2 - 3) = &off_4F6114; + v2[27] = off_4F613C; + *(v2 - 1) = off_4F6128; + *v2 = &off_4F6090; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 52); + *(_DWORD *)(a1 + 12) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 40)); + *(_DWORD *)(a1 + 8) = &unk_4F0FF4; + *(_DWORD *)a1 = &unk_4F0FCC; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 120) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 120); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (0049EA70) -------------------------------------------------------- +int __thiscall std::fstream::~fstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // eax + int result; // eax + + v3 = this + 3; + v4 = *a2; + *(v3 - 3) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 12) = a2[8]; + v5 = a2[9]; + *v3 = &off_4F6090; + *(v3 - 1) = v5; + std::filebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 13); + this[3] = &off_4F6414; + std::locale::~locale((_DWORD **)this + 10); + v6 = a2[1]; + *this = v6; + *(_DWORD *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[6]; + this[2] = a2[7]; + v7 = a2[4]; + this[2] = v7; + *(_DWORD *)((char *)this + *(_DWORD *)(v7 - 12) + 8) = a2[5]; + v8 = a2[2]; + *this = v8; + result = *(_DWORD *)(v8 - 12); + *(_DWORD *)((char *)this + result) = a2[3]; + this[1] = 0; + return result; +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (0049EB10) -------------------------------------------------------- +_DWORD *__thiscall std::fstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + std::filebuf::operator=((int)(this + 3), (int)(a2 + 3)); + return this; +} +// 49EB34: variable 'v10' is possibly undefined + +//----- (0049EBB0) -------------------------------------------------------- +int __thiscall std::wfstream::open(int *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 3), a2, a3) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (0049EC20) -------------------------------------------------------- +int __thiscall std::wfstream::open(int *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 3), a2, a3) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (0049EC90) -------------------------------------------------------- +int __thiscall std::wfstream::open(int *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 3), *a2, a3) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (0049ED00) -------------------------------------------------------- +int __thiscall std::wfstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return std::wfilebuf::swap((int)(this + 3), (int)(a2 + 3)); +} +// 49ED24: variable 'v9' is possibly undefined + +//----- (0049EDA0) -------------------------------------------------------- +int __fastcall std::wfstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::wfilebuf::close((int)(a1 + 3)); + if ( !result ) + return std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (0049EDE0) -------------------------------------------------------- +bool __fastcall std::wfstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 52)); +} + +//----- (0049EDF0) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + char *v10; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 31; + std::ios_base::ios_base(this + 31); + *((_BYTE *)this + 242) = 0; + *((_WORD *)this + 120) = 0; + v4 = a2[1]; + this[59] = 0; + this[1] = v4; + v5 = *a2; + this[61] = 0; + v6 = *(_DWORD *)(v5 - 12); + *this = &unk_4F101C; + this[62] = 0; + this[31] = &unk_4F1030; + this[63] = 0; + this[64] = 0; + v10 = (char *)a2 + v6; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); + std::wios::_M_cache_locale(v2, (int)(this + 58)); + this[61] = 0; + v7 = *((_DWORD *)v10 + 28); + *((_DWORD *)v10 + 28) = 0; + this[59] = v7; + *((_WORD *)this + 120) = *((_WORD *)v10 + 58); + *((_BYTE *)this + 242) = v10[118]; + a2[1] = 0; + *this = &off_4F6150; + this[31] = off_4F6178; + this[2] = off_4F6164; + result = std::wfilebuf::basic_filebuf((int)(this + 3), (int)(a2 + 3)); + this[61] = this + 3; + return result; +} +// 49EE6C: variable 'v9' is possibly undefined +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); + +//----- (0049EF30) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(_DWORD *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 31); + std::ios_base::ios_base(this + 31); + *((_BYTE *)this + 242) = 0; + this[59] = 0; + *((_WORD *)this + 120) = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + this[64] = 0; + *this = &unk_4F101C; + this[31] = &unk_4F1030; + this[1] = 0; + std::wios::init(v3, 0); + this[2] = &unk_4F1080; + this[31] = &unk_4F1094; + std::wios::init(v3, 0); + *this = &off_4F6150; + this[31] = off_4F6178; + this[2] = off_4F6164; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init(v3, (int)(this + 3)); + v5 = std::wfilebuf::open((int)(this + 3), a2, a3); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); + +//----- (0049F0A0) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(_DWORD *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 31); + std::ios_base::ios_base(this + 31); + *((_BYTE *)this + 242) = 0; + this[59] = 0; + *((_WORD *)this + 120) = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + this[64] = 0; + *this = &unk_4F101C; + this[31] = &unk_4F1030; + this[1] = 0; + std::wios::init(v3, 0); + this[2] = &unk_4F1080; + this[31] = &unk_4F1094; + std::wios::init(v3, 0); + *this = &off_4F6150; + this[31] = off_4F6178; + this[2] = off_4F6164; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init(v3, (int)(this + 3)); + v5 = std::wfilebuf::open((int)(this + 3), a2, a3); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); + +//----- (0049F210) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(_DWORD *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 31); + std::ios_base::ios_base(this + 31); + *((_BYTE *)this + 242) = 0; + this[59] = 0; + *((_WORD *)this + 120) = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + this[64] = 0; + *this = &unk_4F101C; + this[31] = &unk_4F1030; + this[1] = 0; + std::wios::init(v3, 0); + this[2] = &unk_4F1080; + this[31] = &unk_4F1094; + std::wios::init(v3, 0); + *this = &off_4F6150; + this[31] = off_4F6178; + this[2] = off_4F6164; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init(v3, (int)(this + 3)); + v5 = std::wfilebuf::open((int)(this + 3), *a2, a3); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); + +//----- (0049F380) -------------------------------------------------------- +BOOL __fastcall std::wfstream::basic_fstream(int a1) +{ + int v1; // esi + + v1 = a1 + 124; + std::ios_base::ios_base((_DWORD *)(a1 + 124)); + *(_BYTE *)(a1 + 242) = 0; + *(_DWORD *)(a1 + 236) = 0; + *(_WORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)(a1 + 252) = 0; + *(_DWORD *)(a1 + 256) = 0; + *(_DWORD *)a1 = &unk_4F101C; + *(_DWORD *)(a1 + 124) = &unk_4F1030; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_4F1080; + *(_DWORD *)(a1 + 124) = &unk_4F1094; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_4F6150; + *(_DWORD *)(a1 + 124) = off_4F6178; + *(_DWORD *)(a1 + 8) = off_4F6164; + std::wfilebuf::basic_filebuf(a1 + 12); + return std::wios::init(v1, a1 + 12); +} +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); + +//----- (0049F4A0) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edx + char v6; // al + int v7; // edx + int v8; // eax + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int result; // eax + std::ios_base *v14; // [esp+4h] [ebp-34h] + std::ios_base *v15; // [esp+18h] [ebp-20h] + int v16; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = a3[1]; + v16 = (int)this + *(_DWORD *)(v4 - 12); + v15 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v16, v15, v14); + std::wios::_M_cache_locale((_DWORD *)v16, v16 + 108); + v5 = *((_DWORD *)v15 + 28); + *((_DWORD *)v15 + 28) = 0; + *(_DWORD *)(v16 + 120) = 0; + *(_DWORD *)(v16 + 112) = v5; + v6 = *((_BYTE *)v15 + 118); + *(_WORD *)(v16 + 116) = *((_WORD *)v15 + 58); + v7 = a2[5]; + *(_BYTE *)(v16 + 118) = v6; + v8 = a2[4]; + a3[1] = 0; + this[2] = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v7; + v9 = a2[1]; + v10 = a2[6]; + *this = v9; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; + this[2] = a2[7]; + v11 = *a2; + v12 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3), (int)(a3 + 3)); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)(this + 3); + return result; +} +// 49F4DD: variable 'v14' is possibly undefined + +//----- (0049F5C0) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char *a3, int a4) +{ + int v5; // eax + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + _DWORD *v13; // ecx + + v5 = a2[2]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = a2[4]; + this[2] = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); + *v7 = a2[5]; + std::wios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *this = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[7]; + v10 = *a2; + v11 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); + v12 = std::wfilebuf::open((int)(this + 3), a3, a4); + v13 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v12 ) + return std::wios::clear(v13, 0); + else + return std::wios::clear(v13, v13[5] | 4); +} + +//----- (0049F710) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, wchar_t *a3, int a4) +{ + int v5; // eax + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + _DWORD *v13; // ecx + + v5 = a2[2]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = a2[4]; + this[2] = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); + *v7 = a2[5]; + std::wios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *this = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[7]; + v10 = *a2; + v11 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); + v12 = std::wfilebuf::open((int)(this + 3), a3, a4); + v13 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v12 ) + return std::wios::clear(v13, 0); + else + return std::wios::clear(v13, v13[5] | 4); +} + +//----- (0049F860) -------------------------------------------------------- +int __thiscall std::wfstream::basic_fstream(int *this, int *a2, char **a3, int a4) +{ + int v5; // eax + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + char *v12; // eax + _DWORD *v13; // ecx + + v5 = a2[2]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = a2[4]; + this[2] = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12) + 8); + *v7 = a2[5]; + std::wios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *this = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[7]; + v10 = *a2; + v11 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3)); + std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); + v12 = std::wfilebuf::open((int)(this + 3), *a3, a4); + v13 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v12 ) + return std::wios::clear(v13, 0); + else + return std::wios::clear(v13, v13[5] | 4); +} + +//----- (0049F9B0) -------------------------------------------------------- +BOOL __thiscall std::wfstream::basic_fstream(int *this, int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // edx + + v3 = a2[2]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[4]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[5]; + std::wios::init((int)v5, 0); + v6 = a2[1]; + v7 = a2[6]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = a2[7]; + v8 = *a2; + v9 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + this[2] = a2[9]; + std::wfilebuf::basic_filebuf((int)(this + 3)); + return std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); +} + +//----- (0049FAB0) -------------------------------------------------------- +void __fastcall std::wfstream::~wfstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 3; + *(v2 - 3) = &off_4F6150; + v2[28] = off_4F6178; + *(v2 - 1) = off_4F6164; + *v2 = &off_4F60D0; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 13); + a1[3] = &off_4F6454; + std::locale::~locale((_DWORD **)a1 + 10); + a1[2] = &unk_4F1080; + *a1 = &unk_4F101C; + a1[1] = 0; + a1[31] = &off_4F6E20; + std::ios_base::~ios_base((int)(a1 + 31)); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (0049FB30) -------------------------------------------------------- +void __fastcall std::wfstream::~wfstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 12); + *(v2 - 3) = &off_4F6150; + v2[28] = off_4F6178; + *(v2 - 1) = off_4F6164; + *v2 = &off_4F60D0; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 52); + *(_DWORD *)(a1 + 12) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 40)); + *(_DWORD *)(a1 + 8) = &unk_4F1080; + *(_DWORD *)a1 = &unk_4F101C; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 124) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 124); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (0049FBB0) -------------------------------------------------------- +int __thiscall std::wfstream::~wfstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // eax + int result; // eax + + v3 = this + 3; + v4 = *a2; + *(v3 - 3) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 12) = a2[8]; + v5 = a2[9]; + *v3 = &off_4F60D0; + *(v3 - 1) = v5; + std::wfilebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 13); + this[3] = &off_4F6454; + std::locale::~locale((_DWORD **)this + 10); + v6 = a2[1]; + *this = v6; + *(_DWORD *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[6]; + this[2] = a2[7]; + v7 = a2[4]; + this[2] = v7; + *(_DWORD *)((char *)this + *(_DWORD *)(v7 - 12) + 8) = a2[5]; + v8 = a2[2]; + *this = v8; + result = *(_DWORD *)(v8 - 12); + *(_DWORD *)((char *)this + result) = a2[3]; + this[1] = 0; + return result; +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (0049FC50) -------------------------------------------------------- +_DWORD *__thiscall std::wfstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + std::wfilebuf::operator=((int)(this + 3), (int)(a2 + 3)); + return this; +} +// 49FC74: variable 'v9' is possibly undefined + +//----- (0049FCF0) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 48))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 49FCF0: using guessed type int var_1C[7]; + +//----- (0049FE20) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 8))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 49FE20: using guessed type int var_1C[7]; + +//----- (0049FF50) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 40))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 49FF50: using guessed type int var_1C[7]; + +//----- (004A0080) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 44))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4A0080: using guessed type int var_1C[7]; + +//----- (004A01B0) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 36))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4A01B0: using guessed type int var_1C[7]; + +//----- (004A02E0) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 20))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4A02E0: using guessed type int var_1C[7]; + +//----- (004A0410) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4A0410: using guessed type int var_1C[7]; + +//----- (004A0540) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 24))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4A0540: using guessed type int var_1C[7]; + +//----- (004A0670) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 16))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4A0670: using guessed type int var_1C[7]; + +//----- (004A07A0) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 28))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4A07A0: using guessed type int var_1C[7]; + +//----- (004A08D0) -------------------------------------------------------- +int *__thiscall std::wistream::_M_extract(int *this, int a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+2Bh] [ebp-1Dh] BYREF + int v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8[0] = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int))(*(_DWORD *)v5 + 32))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + v8, + a2); + if ( !v8[0] ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8[0]); + return this; +} +// 4A08D0: using guessed type int var_1C[7]; + +//----- (004A0A00) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3) +{ + int v4; // ecx + __int16 v5; // ax + + v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); + if ( !v4 ) + std::__throw_bad_cast(); + v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); + return std::wistream::get(this, a2, a3, v5); +} + +//----- (004A0A50) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2, int a3, __int16 a4) +{ + int v6; // ecx + int v8; // eax + _DWORD *v9; // ebx + __int16 *v10; // eax + __int16 v11; // ax + int v12; // edx + __int16 v13; // ax + __int16 *v14; // eax + __int16 *v15; // edx + int v16; // edx + char v17[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v17, this, 1); + if ( !v17[0] ) + { + v6 = this[1]; +LABEL_3: + if ( a3 > 0 ) + *a2 = 0; + if ( v6 ) + return this; + v8 = 4; + goto LABEL_8; + } + v9 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v10 = (__int16 *)v9[2]; + if ( v9[3] <= (unsigned int)v10 ) + v11 = (*(int (__fastcall **)(_DWORD))(*v9 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v11 = *v10; + v6 = this[1]; + v12 = v6 + 1; + if ( a3 <= v6 + 1 ) + { +LABEL_26: + if ( v11 != -1 ) + goto LABEL_3; +LABEL_27: + if ( a3 > 0 ) + *a2 = 0; + v8 = 6; + if ( !v6 ) + goto LABEL_8; +LABEL_30: + v8 = 2; + goto LABEL_8; + } + if ( v11 == -1 ) + goto LABEL_27; + if ( a4 == v11 ) + goto LABEL_3; + while ( 1 ) + { + *a2++ = v11; + this[1] = v12; + v15 = (__int16 *)v9[2]; + if ( (unsigned int)v15 < v9[3] ) + { + v13 = *v15; + v9[2] = v15 + 1; + if ( v13 == -1 ) + goto LABEL_22; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v9 + 40))(v9) == 0xFFFF ) + { +LABEL_22: + v16 = this[1]; + if ( a3 > 0 ) + { + *a2 = 0; + v8 = 2; + if ( v16 ) + goto LABEL_8; + goto LABEL_24; + } + if ( !v16 ) + { + v8 = 6; + goto LABEL_8; + } + goto LABEL_30; + } + v14 = (__int16 *)v9[2]; + if ( (unsigned int)v14 >= v9[3] ) + { + v11 = (*(int (__fastcall **)(_DWORD *))(*v9 + 36))(v9); + v6 = this[1]; + v12 = v6 + 1; + if ( v6 + 1 >= a3 ) + goto LABEL_26; + } + else + { + v6 = this[1]; + v11 = *v14; + v12 = v6 + 1; + if ( v6 + 1 >= a3 ) + goto LABEL_26; + } + if ( v11 == -1 ) + break; + if ( a4 == v11 ) + { + v8 = 0; + goto LABEL_32; + } + } + v8 = 2; +LABEL_32: + if ( a3 > 0 ) + *a2 = 0; + if ( !v6 ) + { +LABEL_24: + v8 |= 4u; + goto LABEL_8; + } + if ( v8 ) + { +LABEL_8: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8); + return this; + } + return this; +} +// 4A0A50: using guessed type char var_1D[29]; + +//----- (004A0CF0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2) +{ + int v3; // ecx + __int16 v4; // ax + + v3 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); + if ( !v3 ) + std::__throw_bad_cast(); + v4 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v3 + 40))(v3, 10); + return std::wistream::get(this, a2, v4); +} + +//----- (004A0D40) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _DWORD *a2, __int16 a3) +{ + _DWORD *v4; // ebx + unsigned __int16 *v5; // eax + unsigned __int16 v6; // ax + __int16 *v7; // edx + __int16 v8; // ax + _WORD *v9; // eax + unsigned __int16 *v10; // edx + int v11; // eax + char v13[25]; // [esp+2Fh] [ebp-19h] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v13, this, 1); + if ( v13[0] ) + { + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v5 = (unsigned __int16 *)v4[2]; + if ( v4[3] <= (unsigned int)v5 ) + v6 = (*(int (__fastcall **)(_DWORD))(*v4 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v6 = *v5; + if ( v6 != 0xFFFF ) + { + if ( v6 == a3 ) + goto LABEL_17; + while ( 1 ) + { + v10 = (unsigned __int16 *)a2[5]; + if ( (unsigned int)v10 < a2[6] ) + { + *v10 = v6; + a2[5] = v10 + 1; + } + else if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, v6) == 0xFFFF ) + { + goto LABEL_17; + } + ++this[1]; + v7 = (__int16 *)v4[2]; + if ( (unsigned int)v7 >= v4[3] ) + { + v8 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); + } + else + { + v8 = *v7; + v4[2] = v7 + 1; + } + if ( v8 == -1 ) + break; + v9 = (_WORD *)v4[2]; + v6 = (unsigned int)v9 >= v4[3] ? (*(int (__fastcall **)(_DWORD *))(*v4 + 36))(v4) : *v9; + if ( v6 == 0xFFFF ) + break; + if ( a3 == v6 ) + goto LABEL_17; + } + } + v11 = this[1] == 0 ? 6 : 2; + goto LABEL_19; + } +LABEL_17: + if ( !this[1] ) + { + v11 = 4; +LABEL_19: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v11); + } + return this; +} +// 4A0D40: using guessed type char var_19[25]; + +//----- (004A0F00) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::get(_DWORD *this, _WORD *a2) +{ + _DWORD *v3; // ecx + __int16 *v4; // edx + __int16 v5; // ax + int v7; // eax + char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v8, this, 1); + if ( v8[0] ) + { + v3 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v4 = (__int16 *)v3[2]; + if ( v3[3] <= (unsigned int)v4 ) + { + v5 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); + } + else + { + v5 = *v4; + v3[2] = v4 + 1; + } + if ( v5 != -1 ) + { + this[1] = 1; + *a2 = v5; + return this; + } + v7 = this[1] == 0 ? 6 : 2; + } + else + { + if ( this[1] ) + return this; + v7 = 4; + } + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v7); + return this; +} +// 4A0F00: using guessed type char var_D[13]; + +//----- (004A1020) -------------------------------------------------------- +int __fastcall std::wistream::get(_DWORD *a1) +{ + _DWORD *v2; // ecx + unsigned __int16 *v3; // edx + int result; // eax + int v5; // eax + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + a1[1] = 0; + std::wistream::sentry::sentry(v6, a1, 1); + if ( v6[0] ) + { + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (unsigned __int16 *)v2[2]; + if ( v2[3] <= (unsigned int)v3 ) + { + result = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + } + else + { + result = *v3; + v2[2] = v3 + 1; + } + if ( (_WORD)result != 0xFFFF ) + { + a1[1] = 1; + return result; + } + v5 = a1[1] == 0 ? 6 : 2; + } + else + { + if ( a1[1] ) + return -1; + v5 = 4; + } + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v5); + return -1; +} +// 4A1020: using guessed type char var_D[13]; + +//----- (004A1130) -------------------------------------------------------- +int __fastcall std::wistream::peek(_DWORD *a1) +{ + _DWORD *v2; // ecx + unsigned __int16 *v3; // eax + int result; // eax + int v5; // [esp+1Ch] [ebp-20h] + char v6[13]; // [esp+2Fh] [ebp-Dh] BYREF + + a1[1] = 0; + std::wistream::sentry::sentry(v6, a1, 1); + if ( !v6[0] ) + return -1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (unsigned __int16 *)v2[2]; + if ( v2[3] <= (unsigned int)v3 ) + result = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); + else + result = *v3; + if ( (_WORD)result == 0xFFFF ) + { + v5 = result; + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); + return v5; + } + return result; +} +// 4A1130: using guessed type char var_D[13]; + +//----- (004A1220) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::read(_DWORD *this, int a2, int a3) +{ + int v4; // eax + char v6[5]; // [esp+1Fh] [ebp-9h] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v6, this, 1); + if ( !v6[0] ) + return this; + v4 = (*(int (__stdcall **)(int, int))(**(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120) + 32))(a2, a3); + this[1] = v4; + if ( a3 == v4 ) + return this; + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 6); + return this; +} +// 4A1220: using guessed type char var_9[5]; + +//----- (004A1310) -------------------------------------------------------- +int __thiscall std::wistream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + result = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = result; + return result; +} +// 4A1331: variable 'v8' is possibly undefined + +//----- (004A13A0) -------------------------------------------------------- +int __fastcall std::wistream::sync(_DWORD *a1) +{ + int v2; // ecx + char v4[13]; // [esp+2Fh] [ebp-Dh] BYREF + + std::wistream::sentry::sentry(v4, a1, 1); + if ( !v4[0] ) + return -1; + v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + if ( !v2 ) + return -1; + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) + return 0; + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return -1; +} +// 4A13A0: using guessed type char var_D[13]; + +//----- (004A1480) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4, int a5) +{ + char *v6; // edi + int *v7; // eax + int v8; // edi + char v10; // [esp+3Fh] [ebp-39h] BYREF + int v11[14]; // [esp+40h] [ebp-38h] BYREF + + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); + std::wistream::sentry::sentry(&v10, this, 1); + if ( v10 ) + { + v6 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v6[20] & 5) == 0 ) + { + v7 = (int *)*((_DWORD *)v6 + 30); + v11[7] = a5; + v8 = *v7; + v11[4] = a2; + v11[6] = a4; + v11[5] = a3; + (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v11, v7, a2, a3, a4, a5, 8); + if ( (v11[0] & v11[1]) == -1 ) + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + } + } + return this; +} + +//----- (004A15D0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::seekg(_DWORD *this, int a2, int a3, int a4) +{ + char *v5; // edx + char v7; // [esp+2Fh] [ebp-29h] BYREF + int v8[10]; // [esp+30h] [ebp-28h] BYREF + + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) & 0xFFFFFFFD); + std::wistream::sentry::sentry(&v7, this, 1); + if ( v7 ) + { + v5 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v5[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( + v8, + *((_DWORD *)v5 + 30), + a2, + a3, + a4, + 8); + if ( (v8[0] & v8[1]) == -1 ) + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + } + } + return this; +} + +//----- (004A16F0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::tellg(_DWORD *this, _DWORD *a2) +{ + char *v3; // edx + char v5; // [esp+2Fh] [ebp-19h] BYREF + int v6[6]; // [esp+30h] [ebp-18h] BYREF + + *this = -1; + this[1] = -1; + this[2] = 0; + std::wistream::sentry::sentry(&v5, a2, 1); + if ( v5 ) + { + v3 = (char *)a2 + *(_DWORD *)(*a2 - 12); + if ( (v3[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v3 + 30) + 16))( + v6, + *((_DWORD *)v3 + 30), + 0, + 0, + 1, + 8); + *this = v6[0]; + this[1] = v6[1]; + this[2] = v6[2]; + } + } + return this; +} + +//----- (004A17F0) -------------------------------------------------------- +int *__fastcall std::wistream::unget(int *a1) +{ + int v2; // eax + _DWORD *v3; // ecx + _DWORD *v4; // eax + unsigned int v5; // eax + unsigned int v6; // edx + __int16 v7; // ax + char v9[5]; // [esp+1Fh] [ebp-9h] BYREF + + v2 = *a1; + a1[1] = 0; + std::wios::clear( + (int *)((char *)a1 + *(_DWORD *)(v2 - 12)), + *(int *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) & 0xFFFFFFFD); + std::wistream::sentry::sentry(v9, a1, 1); + if ( !v9[0] ) + return a1; + v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + if ( v3 ) + { + v5 = v3[2]; + if ( v3[1] >= v5 ) + { + v7 = (*(int (__stdcall **)(int))(*v3 + 44))(0xFFFF); + } + else + { + v6 = v5 - 2; + v7 = *(_WORD *)(v5 - 2); + v3[2] = v6; + } + if ( v7 != -1 ) + return a1; + v4 = (int *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + } + std::wios::clear(v4, v4[5] | 1); + return a1; +} +// 4A17F0: using guessed type char var_9[5]; + +//----- (004A1910) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2) +{ + _DWORD *v3; // edi + __int16 *v4; // eax + __int16 v5; // ax + signed int i; // edx + __int16 *v7; // ecx + int v8; // eax + __int16 *v9; // ecx + __int16 v11; // ax + __int16 *v12; // eax + char v13; // [esp+1Ah] [ebp-32h] + char v14; // [esp+1Bh] [ebp-31h] + unsigned int v15; // [esp+1Ch] [ebp-30h] + char v16[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + if ( a2 != 1 ) + { + this[1] = 0; + std::wistream::sentry::sentry(v16, this, 1); + if ( a2 <= 0 ) + return this; + v13 = v16[0]; + if ( !v16[0] ) + return this; + v3 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v4 = (__int16 *)v3[2]; + if ( (unsigned int)v4 >= v3[3] ) + v5 = (*(int (__fastcall **)(_DWORD))(*v3 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v5 = *v4; + v14 = 0; +LABEL_7: + for ( i = this[1]; a2 <= i; i = 0x80000000 ) + { +LABEL_14: + if ( a2 != 0x7FFFFFFF ) + { + if ( v14 ) + this[1] = 0x7FFFFFFF; + if ( v5 != -1 ) + return this; +LABEL_29: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); + return this; + } + if ( v5 == -1 ) + goto LABEL_27; + this[1] = 0x80000000; + v14 = v13; + } + while ( v5 != -1 ) + { + v7 = (__int16 *)v3[2]; + v15 = v3[3]; + v8 = (int)(v15 - (_DWORD)v7) >> 1; + if ( v8 > a2 - i ) + v8 = a2 - i; + if ( v8 <= 1 ) + { + this[1] = i + 1; + if ( v15 <= (unsigned int)v7 ) + { + v11 = (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3); + } + else + { + v11 = *v7; + v3[2] = v7 + 1; + } + if ( v11 != -1 ) + { + v12 = (__int16 *)v3[2]; + if ( (unsigned int)v12 < v3[3] ) + { + v5 = *v12; + i = this[1]; + goto LABEL_7; + } +LABEL_30: + v5 = (*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + i = this[1]; + goto LABEL_7; + } + break; + } + v9 = &v7[v8]; + i += v8; + v3[2] = v9; + this[1] = i; + if ( v15 <= (unsigned int)v9 ) + goto LABEL_30; + v5 = *v9; + if ( a2 <= i ) + goto LABEL_14; + } +LABEL_27: + if ( v14 ) + this[1] = 0x7FFFFFFF; + goto LABEL_29; + } + return std::wistream::ignore(this); +} +// 4DBC5C: using guessed type int __stdcall std::wistream::ignore(_DWORD); +// 4A1910: using guessed type char var_1D[29]; + +//----- (004A1AB0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::ignore(_DWORD *this, int a2, wchar_t C) +{ + _DWORD *v4; // ebp + __int16 *v5; // eax + __int16 v6; // ax + signed int i; // edx + const wchar_t *S; // ecx + int N; // edi + wchar_t *v10; // eax + int v11; // edx + __int16 *v12; // eax + int v13; // edi + unsigned int v15; // eax + wchar_t v16; // ax + __int16 *v17; // eax + char v18; // [esp+16h] [ebp-36h] + char v19; // [esp+17h] [ebp-35h] + unsigned int v20; // [esp+1Ch] [ebp-30h] + char v21[29]; // [esp+2Fh] [ebp-1Dh] BYREF + + if ( C == 0xFFFF ) + return std::wistream::ignore(this, a2); + this[1] = 0; + std::wistream::sentry::sentry(v21, this, 1); + if ( a2 <= 0 ) + return this; + v19 = v21[0]; + if ( !v21[0] ) + return this; + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v5 = (__int16 *)v4[2]; + if ( v4[3] <= (unsigned int)v5 ) + v6 = (*(int (__fastcall **)(_DWORD))(*v4 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v6 = *v5; + v18 = 0; + for ( i = this[1]; ; i = 0x80000000 ) + { +LABEL_7: + if ( a2 > i ) + { + while ( v6 != -1 ) + { + if ( v6 == C ) + { + if ( a2 == 0x7FFFFFFF ) + { + if ( !v18 ) + goto LABEL_31; + goto LABEL_26; + } + if ( v18 ) + goto LABEL_26; + goto LABEL_29; + } + S = (const wchar_t *)v4[2]; + v20 = v4[3]; + N = (int)(v20 - (_DWORD)S) >> 1; + if ( N > a2 - i ) + N = a2 - i; + if ( N <= 1 ) + { + this[1] = ++i; + if ( v20 <= (unsigned int)S ) + { + v16 = (*(int (__fastcall **)(_DWORD *))(*v4 + 40))(v4); + } + else + { + v16 = *S; + v4[2] = S + 1; + } + if ( v16 != 0xFFFF ) + { + v17 = (__int16 *)v4[2]; + if ( (unsigned int)v17 < v4[3] ) + { + v6 = *v17; + i = this[1]; + goto LABEL_7; + } +LABEL_42: + v6 = (*(int (__fastcall **)(_DWORD *, signed int))(*v4 + 36))(v4, i); + i = this[1]; + goto LABEL_7; + } + break; + } + v10 = wmemchr(S, C, N); + v11 = v4[2]; + if ( v10 ) + N = ((int)v10 - v11) >> 1; + v12 = (__int16 *)(v11 + 2 * N); + v13 = this[1] + N; + v4[2] = v12; + i = v13; + this[1] = v13; + if ( v4[3] <= (unsigned int)v12 ) + goto LABEL_42; + v6 = *v12; + if ( a2 <= v13 ) + goto LABEL_17; + } +LABEL_39: + if ( v18 ) + this[1] = 0x7FFFFFFF; + goto LABEL_41; + } +LABEL_17: + if ( a2 != 0x7FFFFFFF ) + { + if ( v18 ) + goto LABEL_26; + goto LABEL_27; + } + if ( v6 == -1 ) + goto LABEL_39; + if ( v6 == C ) + break; + this[1] = 0x80000000; + v18 = v19; + } + if ( !v18 ) + goto LABEL_30; +LABEL_26: + this[1] = 0x7FFFFFFF; +LABEL_27: + if ( v6 == -1 ) + { +LABEL_41: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); + return this; + } + if ( C != v6 ) + return this; +LABEL_29: + i = this[1]; +LABEL_30: + if ( i != 0x7FFFFFFF ) +LABEL_31: + this[1] = i + 1; + v15 = v4[2]; + if ( v15 >= v4[3] ) + { + (*(void (__fastcall **)(_DWORD *))(*v4 + 40))(v4); + return this; + } + v4[2] = v15 + 2; + return this; +} +// 4A1CE5: variable 'i' is possibly undefined +// 4DB658: using guessed type int __stdcall std::wistream::ignore(_DWORD, _DWORD); +// 4A1AB0: using guessed type char var_1D[29]; + +//----- (004A1D40) -------------------------------------------------------- +_DWORD *__fastcall std::wistream::ignore(_DWORD *a1) +{ + _DWORD *v2; // ecx + __int16 *v3; // edx + __int16 v4; // ax + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + a1[1] = 0; + std::wistream::sentry::sentry(v6, a1, 1); + if ( !v6[0] ) + return a1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (__int16 *)v2[2]; + if ( v2[3] <= (unsigned int)v3 ) + { + v4 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + } + else + { + v4 = *v3; + v2[2] = v3 + 1; + } + if ( v4 != -1 ) + { + a1[1] = 1; + return a1; + } + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); + return a1; +} +// 4A1D40: using guessed type char var_D[13]; + +//----- (004A1E40) -------------------------------------------------------- +int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) +{ + char *v4; // ecx + int result; // eax + _DWORD *v6; // ebx + unsigned __int16 *v7; // eax + unsigned __int16 v8; // ax + __int16 v9; // ax + unsigned __int16 *v10; // eax + __int16 *v11; // edx + int v12; // [esp+1Ch] [ebp-1Ch] + + *this = 0; + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + result = *((_DWORD *)v4 + 5); + if ( result ) + return std::wios::clear(v4, result | 4); + result = *((_DWORD *)v4 + 28); + if ( !result ) + { + if ( a3 || (v4[13] & 0x10) == 0 ) + { + *this = 1; + return result; + } + goto LABEL_5; + } + std::wostream::flush(*((_DWORD **)v4 + 28)); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + if ( !a3 && (v4[13] & 0x10) != 0 ) + { +LABEL_5: + v6 = (_DWORD *)*((_DWORD *)v4 + 30); + v7 = (unsigned __int16 *)v6[2]; + if ( v6[3] <= (unsigned int)v7 ) + { + v8 = (*(int (__fastcall **)(_DWORD))(*v6 + 36))(*((_DWORD *)v4 + 30)); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + else + { + v8 = *v7; + } + v12 = *((_DWORD *)v4 + 31); + if ( !v12 ) + std::__throw_bad_cast(); + if ( v8 == 0xFFFF ) + { +LABEL_18: + result = *((_DWORD *)v4 + 5) | 2; + return std::wios::clear(v4, result | 4); + } + while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, v8) ) + { + v11 = (__int16 *)v6[2]; + if ( (unsigned int)v11 < v6[3] ) + { + v9 = *v11; + v6[2] = v11 + 1; + if ( v9 == -1 ) + goto LABEL_17; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == 0xFFFF ) + { + goto LABEL_17; + } + v10 = (unsigned __int16 *)v6[2]; + if ( (unsigned int)v10 >= v6[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + else + v8 = *v10; + if ( v8 == 0xFFFF ) + { +LABEL_17: + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + goto LABEL_18; + } + } + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + result = *((_DWORD *)v4 + 5); + if ( result ) + return std::wios::clear(v4, result | 4); + *this = 1; + return result; +} + +//----- (004A2020) -------------------------------------------------------- +int __thiscall std::wistream::sentry::sentry(_BYTE *this, _DWORD *a2, char a3) +{ + char *v4; // ecx + int result; // eax + _DWORD *v6; // ebx + unsigned __int16 *v7; // eax + unsigned __int16 v8; // ax + __int16 v9; // ax + unsigned __int16 *v10; // eax + __int16 *v11; // edx + int v12; // [esp+1Ch] [ebp-1Ch] + + *this = 0; + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + result = *((_DWORD *)v4 + 5); + if ( result ) + return std::wios::clear(v4, result | 4); + result = *((_DWORD *)v4 + 28); + if ( !result ) + { + if ( a3 || (v4[13] & 0x10) == 0 ) + { + *this = 1; + return result; + } + goto LABEL_5; + } + std::wostream::flush(*((_DWORD **)v4 + 28)); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + if ( !a3 && (v4[13] & 0x10) != 0 ) + { +LABEL_5: + v6 = (_DWORD *)*((_DWORD *)v4 + 30); + v7 = (unsigned __int16 *)v6[2]; + if ( v6[3] <= (unsigned int)v7 ) + { + v8 = (*(int (__fastcall **)(_DWORD))(*v6 + 36))(*((_DWORD *)v4 + 30)); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + else + { + v8 = *v7; + } + v12 = *((_DWORD *)v4 + 31); + if ( !v12 ) + std::__throw_bad_cast(); + if ( v8 == 0xFFFF ) + { +LABEL_18: + result = *((_DWORD *)v4 + 5) | 2; + return std::wios::clear(v4, result | 4); + } + while ( (*(unsigned __int8 (__thiscall **)(int, int, _DWORD))(*(_DWORD *)v12 + 8))(v12, 32, v8) ) + { + v11 = (__int16 *)v6[2]; + if ( (unsigned int)v11 < v6[3] ) + { + v9 = *v11; + v6[2] = v11 + 1; + if ( v9 == -1 ) + goto LABEL_17; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == 0xFFFF ) + { + goto LABEL_17; + } + v10 = (unsigned __int16 *)v6[2]; + if ( (unsigned int)v10 >= v6[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + else + v8 = *v10; + if ( v8 == 0xFFFF ) + { +LABEL_17: + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + goto LABEL_18; + } + } + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + result = *((_DWORD *)v4 + 5); + if ( result ) + return std::wios::clear(v4, result | 4); + *this = 1; + return result; +} + +//----- (004A2200) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3) +{ + int v4; // ecx + wchar_t v5; // ax + + v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 124); + if ( !v4 ) + std::__throw_bad_cast(); + v5 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 10); + return std::wistream::getline(this, S1, a3, v5); +} + +//----- (004A2250) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::getline(_DWORD *this, wchar_t *S1, int a3, wchar_t C) +{ + int v5; // esi + int v6; // eax + int v8; // esi + wchar_t *v9; // eax + wchar_t v10; // ax + int v11; // ebx + size_t v12; // edi + wchar_t *v13; // eax + int v14; // edx + int N; // ebx + int v16; // edi + wchar_t *v17; // edx + const wchar_t *S; // ecx + wchar_t v19; // ax + wchar_t *v20; // eax + unsigned int v21; // eax + int v22; // esi + int v23; // [esp+18h] [ebp-44h] + unsigned int v24; // [esp+1Ch] [ebp-40h] + wchar_t *v25; // [esp+24h] [ebp-38h] + char v26[29]; // [esp+3Fh] [ebp-1Dh] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v26, this, 1); + if ( !v26[0] ) + { + v5 = this[1]; + v23 = v5; + if ( a3 > 0 ) + { + *S1 = 0; + if ( !v5 ) + { +LABEL_4: + v6 = 4; + goto LABEL_5; + } + return this; + } + goto LABEL_6; + } + v8 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); + v9 = *(wchar_t **)(v8 + 8); + if ( (unsigned int)v9 >= *(_DWORD *)(v8 + 12) ) + v10 = (*(int (__fastcall **)(_DWORD))(*(_DWORD *)v8 + 36))(*(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120)); + else + v10 = *v9; + v11 = this[1]; + v23 = v11 + 1; + if ( v11 + 1 < a3 ) + { + if ( v10 != 0xFFFF ) + { + if ( v10 == C ) + { +LABEL_42: + v21 = *(_DWORD *)(v8 + 8); + this[1] = v23; + if ( v21 >= *(_DWORD *)(v8 + 12) ) + { + (*(void (__fastcall **)(int))(*(_DWORD *)v8 + 40))(v8); + v22 = this[1]; + v23 = v22; + if ( a3 > 0 ) + { + *S1 = 0; + if ( !v22 ) + goto LABEL_4; + return this; + } + } + else + { + *(_DWORD *)(v8 + 8) = v21 + 2; + if ( a3 > 0 ) + { + *S1 = 0; + if ( !v23 ) + goto LABEL_4; + return this; + } + } +LABEL_6: + if ( !v23 ) + goto LABEL_4; + return this; + } + while ( 1 ) + { + S = *(const wchar_t **)(v8 + 8); + v24 = *(_DWORD *)(v8 + 12); + N = a3 - v11 - 1; + if ( N > (int)(v24 - (_DWORD)S) >> 1 ) + N = (int)(v24 - (_DWORD)S) >> 1; + if ( N > 1 ) + break; + v25 = S1 + 1; + *S1 = v10; + this[1] = v23; + if ( v24 <= (unsigned int)S ) + { + v19 = (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 40))(v8); + } + else + { + v19 = *S; + *(_DWORD *)(v8 + 8) = S + 1; + } + if ( v19 == 0xFFFF ) + { + v11 = this[1]; + goto LABEL_36; + } + v20 = *(wchar_t **)(v8 + 8); + if ( (unsigned int)v20 >= *(_DWORD *)(v8 + 12) ) + { + v10 = (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 36))(v8); + v11 = this[1]; + ++S1; + goto LABEL_18; + } + v11 = this[1]; + v10 = *v20; + ++S1; + v23 = v11 + 1; + if ( v11 + 1 >= a3 ) + goto LABEL_29; +LABEL_19: + if ( v10 == 0xFFFF ) + { + v25 = S1; +LABEL_36: + v6 = 2; + if ( a3 > 0 ) + *v25 = 0; +LABEL_38: + if ( !v11 ) + v6 |= 4u; + goto LABEL_5; + } + if ( C == v10 ) + goto LABEL_42; + } + v12 = N; + v13 = wmemchr(S, C, N); + v14 = *(_DWORD *)(v8 + 8); + if ( !v13 || (N = ((int)v13 - v14) >> 1, (v12 = N) != 0) ) + { + wmemcpy(S1, *(const wchar_t **)(v8 + 8), v12); + v14 = *(_DWORD *)(v8 + 8); + } + v16 = 2 * v12; + v11 = this[1] + N; + S1 = (wchar_t *)((char *)S1 + v16); + v17 = (wchar_t *)(v16 + v14); + *(_DWORD *)(v8 + 8) = v17; + this[1] = v11; + if ( *(_DWORD *)(v8 + 12) <= (unsigned int)v17 ) + { + v10 = (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 36))(v8); + v11 = this[1]; + } + else + { + v10 = *v17; + } +LABEL_18: + v23 = v11 + 1; + if ( v11 + 1 >= a3 ) + goto LABEL_29; + goto LABEL_19; + } + if ( a3 > 0 ) + { +LABEL_53: + *S1 = 0; + v6 = 2; + if ( !v11 ) + v6 = 6; + goto LABEL_5; + } +LABEL_56: + v6 = 2; + goto LABEL_38; + } +LABEL_29: + if ( v10 == 0xFFFF ) + { + v11 = this[1]; + if ( a3 > 0 ) + goto LABEL_53; + goto LABEL_56; + } + if ( v10 == C ) + goto LABEL_42; + v11 = this[1]; + if ( a3 <= 0 ) + { + v6 = 4; + goto LABEL_38; + } + *S1 = 0; + v6 = 4; +LABEL_5: + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v6); + return this; +} +// 4A25DA: control flows out of bounds to 4DB5C4 +// 4DB5BC: using guessed type int __stdcall std::wistream::getline(_DWORD, _DWORD, _DWORD); +// 4A2250: using guessed type char var_1D[29]; + +//----- (004A25F0) -------------------------------------------------------- +int *__thiscall std::wistream::putback(int *this, unsigned __int16 a2) +{ + int v3; // eax + _DWORD *v4; // ecx + _DWORD *v5; // eax + unsigned int v6; // edx + __int16 v7; // ax + char v9[9]; // [esp+1Fh] [ebp-9h] BYREF + + v3 = *this; + this[1] = 0; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v3 - 12)), + *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 20) & 0xFFFFFFFD); + std::wistream::sentry::sentry(v9, this, 1); + if ( !v9[0] ) + return this; + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v4 ) + { + v6 = v4[2]; + if ( v4[1] < v6 && (v7 = *(_WORD *)(v6 - 2), a2 == v7) ) + v4[2] = v6 - 2; + else + v7 = (*(int (__stdcall **)(_DWORD))(*v4 + 44))(a2); + if ( v7 != -1 ) + return this; + v5 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + } + std::wios::clear(v5, v5[5] | 1); + return this; +} +// 4A25F0: using guessed type char var_9[9]; + +//----- (004A2720) -------------------------------------------------------- +int __thiscall std::wistream::readsome(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // ecx + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + char v9[5]; // [esp+1Fh] [ebp-9h] BYREF + + this[1] = 0; + std::wistream::sentry::sentry(v9, this, 1); + if ( !v9[0] ) + return this[1]; + v4 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v5 = v4[3]; + v6 = v4[2]; + if ( v6 == v5 ) + v7 = (*(int (__fastcall **)(_DWORD *))(*v4 + 28))(v4); + else + v7 = (v5 - v6) >> 1; + if ( v7 <= 0 ) + { + if ( v7 == -1 ) + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 2); + return this[1]; + } + if ( v7 > a3 ) + v7 = a3; + result = (*(int (__stdcall **)(int, int))(**(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120) + 32))(a2, v7); + this[1] = result; + return result; +} +// 4A2720: using guessed type char var_9[5]; + +//----- (004A2850) -------------------------------------------------------- +int __thiscall std::wistream::basic_istream(_DWORD *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + std::ios_base *v6; // esi + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + v10 = this + 2; + std::ios_base::ios_base(this + 2); + *((_BYTE *)this + 126) = 0; + *((_WORD *)this + 62) = 0; + v3 = a2[1]; + this[30] = 0; + this[1] = v3; + v4 = *a2; + this[32] = 0; + v5 = *(_DWORD *)(v4 - 12); + *this = &off_4F618C; + this[33] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[2] = off_4F61A0; + this[34] = 0; + this[35] = 0; + std::ios_base::_M_move((int)v10, v6, v9); + std::wios::_M_cache_locale(v10, (int)(this + 29)); + this[32] = 0; + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[30] = v7; + *((_WORD *)this + 62) = *((_WORD *)v6 + 58); + result = *((unsigned __int8 *)v6 + 118); + a2[1] = 0; + *((_BYTE *)this + 126) = result; + return result; +} +// 4A28C4: variable 'v9' is possibly undefined +// 4F618C: using guessed type int (*off_4F618C)(); +// 4F61A0: using guessed type int (*off_4F61A0[2])(); + +//----- (004A2930) -------------------------------------------------------- +BOOL __thiscall std::wistream::basic_istream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 2); + std::ios_base::ios_base(this + 2); + this[30] = 0; + *((_WORD *)this + 62) = 0; + *((_BYTE *)this + 126) = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + *this = &off_4F618C; + this[2] = off_4F61A0; + this[1] = 0; + return std::wios::init(v2, a2); +} +// 4F618C: using guessed type int (*off_4F618C)(); +// 4F61A0: using guessed type int (*off_4F61A0[2])(); + +//----- (004A29D0) -------------------------------------------------------- +BOOL __fastcall std::wistream::basic_istream(int a1) +{ + int v1; // esi + + v1 = a1 + 8; + std::ios_base::ios_base((_DWORD *)(a1 + 8)); + *(_DWORD *)(a1 + 120) = 0; + *(_WORD *)(a1 + 124) = 0; + *(_BYTE *)(a1 + 126) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)a1 = &off_4F618C; + *(_DWORD *)(a1 + 8) = off_4F61A0; + *(_DWORD *)(a1 + 4) = 0; + return std::wios::init(v1, 0); +} +// 4F618C: using guessed type int (*off_4F618C)(); +// 4F61A0: using guessed type int (*off_4F61A0[2])(); + +//----- (004A2A70) -------------------------------------------------------- +int __thiscall std::wistream::basic_istream(int *this, int *a2, _DWORD *a3) +{ + int v3; // eax + int v4; // ebx + int v5; // edx + int v6; // ebx + std::ios_base *v7; // esi + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-18h] + + v3 = *a2; + v4 = a2[1]; + v5 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v5) = v4; + this[1] = a3[1]; + v6 = (int)this + *(_DWORD *)(v3 - 12); + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v6, v7, v10); + std::wios::_M_cache_locale((_DWORD *)v6, v6 + 108); + v8 = *((_DWORD *)v7 + 28); + *((_DWORD *)v7 + 28) = 0; + *(_DWORD *)(v6 + 112) = v8; + *(_WORD *)(v6 + 116) = *((_WORD *)v7 + 58); + result = *((unsigned __int8 *)v7 + 118); + *(_DWORD *)(v6 + 120) = 0; + *(_BYTE *)(v6 + 118) = result; + a3[1] = 0; + return result; +} +// 4A2AA0: variable 'v10' is possibly undefined + +//----- (004A2AF0) -------------------------------------------------------- +BOOL __thiscall std::wistream::basic_istream(int *this, int *a2, int a3) +{ + int v3; // eax + int v4; // ebx + int v5; // edx + + v3 = *a2; + v4 = a2[1]; + v5 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v5) = v4; + this[1] = 0; + return std::wios::init((int)this + *(_DWORD *)(v3 - 12), a3); +} + +//----- (004A2B30) -------------------------------------------------------- +BOOL __thiscall std::wistream::basic_istream(int *this, int *a2) +{ + int v2; // eax + int v3; // ebx + int v4; // edx + + v2 = *a2; + v3 = a2[1]; + v4 = *(_DWORD *)(*a2 - 12); + *this = *a2; + *(int *)((char *)this + v4) = v3; + this[1] = 0; + return std::wios::init((int)this + *(_DWORD *)(v2 - 12), 0); +} + +//----- (004A2B60) -------------------------------------------------------- +void __fastcall std::wistream::~wistream(char *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 8; + *(v2 - 2) = &off_4F618C; + *(v2 - 1) = 0; + *v2 = &off_4F6E20; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 4F618C: using guessed type int (*off_4F618C)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A2B90) -------------------------------------------------------- +void __fastcall std::wistream::~wistream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_4F618C; + v1 = a1 + 2; + *(v1 - 1) = 0; + *v1 = &off_4F6E20; + std::ios_base::~ios_base((int)v1); +} +// 4F618C: using guessed type int (*off_4F618C)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A2BB0) -------------------------------------------------------- +int __thiscall std::wistream::~wistream(int *this, int *a2) +{ + int v2; // eax + int result; // eax + + v2 = *a2; + *this = *a2; + result = *(_DWORD *)(v2 - 12); + *(int *)((char *)this + result) = a2[1]; + this[1] = 0; + return result; +} + +//----- (004A2BD0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return this; +} +// 4A2BF1: variable 'v9' is possibly undefined + +//----- (004A2C60) -------------------------------------------------------- +int __thiscall std::wistream::operator>>(void *this, int (__cdecl *a2)(void *)) +{ + return a2(this); +} + +//----- (004A2C70) -------------------------------------------------------- +char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004A2C90) -------------------------------------------------------- +char *__thiscall std::wistream::operator>>(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004A2CB0) -------------------------------------------------------- +_DWORD *__thiscall std::wistream::operator>>(_DWORD *this, _DWORD *a2) +{ + char *v3; // ecx + int v4; // eax + char v6; // [esp+1Eh] [ebp-Eh] BYREF + char v7[13]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wistream::sentry::sentry(&v6, this, 0); + if ( !v6 ) + { + if ( !a2 ) + { + v4 = 4; + v3 = (char *)this + *(_DWORD *)(*this - 12); + goto LABEL_9; + } + return this; + } + v3 = (char *)this + *(_DWORD *)(*this - 12); + if ( !a2 ) + { + v4 = 4; + goto LABEL_9; + } + if ( !std::__copy_streambufs_eof>(*((_DWORD **)v3 + 30), a2, v7) ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = v7[0] == 0 ? 4 : 6; + goto LABEL_9; + } + if ( !v7[0] ) + return this; + v4 = 2; + v3 = (char *)this + *(_DWORD *)(*this - 12); +LABEL_9: + std::wios::clear(v3, *((_DWORD *)v3 + 5) | v4); + return this; +} +// 4A2CB0: using guessed type char var_D[13]; + +//----- (004A2E30) -------------------------------------------------------- +int *__thiscall std::wistream::operator>>(int *this, _DWORD *a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + char v7; // [esp+27h] [ebp-21h] BYREF + int v8; // [esp+28h] [ebp-20h] BYREF + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v7, this, 0); + if ( !v7 ) + return this; + v3 = *this; + v8 = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + &v8, + v9); + *a2 = v9[0]; + if ( !v8 ) + return this; + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v8); + return this; +} +// 4A2E30: using guessed type int var_1C[7]; + +//----- (004A2F90) -------------------------------------------------------- +int *__thiscall std::wistream::operator>>(int *this, _WORD *a2) +{ + int v3; // eax + char *v4; // esi + int v5; // ecx + int v6; // eax + char v8; // [esp+27h] [ebp-21h] BYREF + int v9; // [esp+28h] [ebp-20h] BYREF + int v10[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::wistream::sentry::sentry(&v8, this, 0); + if ( !v8 ) + return this; + v3 = *this; + v9 = 0; + v4 = (char *)this + *(_DWORD *)(v3 - 12); + v5 = *((_DWORD *)v4 + 33); + if ( !v5 ) + std::__throw_bad_cast(); + (*(void (__stdcall **)(_DWORD, int, _DWORD, int, char *, int *, int *))(*(_DWORD *)v5 + 12))( + *((_DWORD *)v4 + 30), + 0xFFFF, + 0, + 0xFFFF, + v4, + &v9, + v10); + v6 = v9; + if ( v10[0] >= -32768 ) + { + if ( v10[0] > 0x7FFF ) + { + v9 |= 4u; + v6 = v9; + *a2 = 0x7FFF; + goto LABEL_9; + } + *a2 = v10[0]; + } + else + { + v6 = v9 | 4; + v9 |= 4u; + *a2 = 0x8000; + } + if ( !v6 ) + return this; +LABEL_9: + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | v6); + return this; +} +// 4A305B: conditional instruction was optimized away because eax.4>=4u +// 4A2F90: using guessed type int var_1C[7]; + +//----- (004A3130) -------------------------------------------------------- +int *__thiscall std::wostream::put(int *this, unsigned __int16 a2) +{ + _DWORD *v3; // ecx + unsigned __int16 *v4; // eax + unsigned __int16 v5; // si + char *v6; // esi + int v7; // ecx + int v9; // [esp+18h] [ebp-20h] BYREF + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v9, this); + if ( (_BYTE)v9 ) + { + v3 = *(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120); + v4 = (unsigned __int16 *)v3[5]; + if ( (unsigned int)v4 >= v3[6] ) + { + v5 = (*(int (__stdcall **)(_DWORD))(*v3 + 52))(a2); + } + else + { + *v4 = a2; + v5 = a2; + v3[5] = v4 + 1; + } + if ( v5 == 0xFFFF ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v10 + *(_DWORD *)(*v10 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), + *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); + } + } + return this; +} + +//----- (004A3280) -------------------------------------------------------- +int __thiscall std::wostream::swap(_DWORD *this, _DWORD *a2) +{ + int v2; // ebx + std::ios_base *v3; // esi + int v4; // eax + __int16 v5; // dx + int result; // eax + std::ios_base *v7; // [esp+4h] [ebp-18h] + + v2 = (int)this + *(_DWORD *)(*this - 12); + v3 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v2, v3, v7); + std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::wios::_M_cache_locale(v3, (int)v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + *(_DWORD *)(v2 + 112) = *((_DWORD *)v3 + 28); + v5 = *((_WORD *)v3 + 58); + *((_DWORD *)v3 + 28) = v4; + LOWORD(v4) = *(_WORD *)(v2 + 116); + *(_WORD *)(v2 + 116) = v5; + LOBYTE(v5) = *((_BYTE *)v3 + 118); + *((_WORD *)v3 + 58) = v4; + result = *(unsigned __int8 *)(v2 + 118); + *(_BYTE *)(v2 + 118) = v5; + *((_BYTE *)v3 + 118) = result; + return result; +} +// 4A3298: variable 'v7' is possibly undefined + +//----- (004A3300) -------------------------------------------------------- +_DWORD *__fastcall std::wostream::flush(_DWORD *a1) +{ + int v2; // ecx + + v2 = *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + if ( !v2 || (*(int (__fastcall **)(int))(*(_DWORD *)v2 + 24))(v2) != -1 ) + return a1; + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return a1; +} + +//----- (004A33B0) -------------------------------------------------------- +_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4, int a5) +{ + char *v6; // eax + int *v7; // eax + int v8; // edi + int v10[14]; // [esp+40h] [ebp-38h] BYREF + + v6 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v6[20] & 5) != 0 ) + return this; + v7 = (int *)*((_DWORD *)v6 + 30); + v10[4] = a2; + v10[5] = a3; + v10[7] = a5; + v8 = *v7; + v10[6] = a4; + (*(void (__thiscall **)(int *, int *, int, int, int, int, int))(v8 + 20))(v10, v7, a2, a3, a4, a5, 16); + if ( (v10[0] & v10[1]) != -1 ) + return this; + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + return this; +} + +//----- (004A34D0) -------------------------------------------------------- +_DWORD *__thiscall std::wostream::seekp(_DWORD *this, int a2, int a3, int a4) +{ + char *v5; // edx + int v7[10]; // [esp+20h] [ebp-28h] BYREF + + v5 = (char *)this + *(_DWORD *)(*this - 12); + if ( (v5[20] & 5) != 0 ) + return this; + (*(void (__thiscall **)(int *, _DWORD, int, int, int, int))(**((_DWORD **)v5 + 30) + 16))( + v7, + *((_DWORD *)v5 + 30), + a2, + a3, + a4, + 16); + if ( (v7[0] & v7[1]) != -1 ) + return this; + std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 4); + return this; +} + +//----- (004A35C0) -------------------------------------------------------- +_DWORD *__thiscall std::wostream::tellp(_DWORD *this, int *a2) +{ + int v3; // eax + char *v4; // edx + int v6[6]; // [esp+20h] [ebp-18h] BYREF + + *this = -1; + this[1] = -1; + v3 = *a2; + this[2] = 0; + v4 = (char *)a2 + *(_DWORD *)(v3 - 12); + if ( (v4[20] & 5) == 0 ) + { + (*(void (__thiscall **)(int *, _DWORD, _DWORD, _DWORD, int, int))(**((_DWORD **)v4 + 30) + 16))( + v6, + *((_DWORD *)v4 + 30), + 0, + 0, + 1, + 16); + *this = v6[0]; + this[1] = v6[1]; + this[2] = v6[2]; + } + return this; +} + +//----- (004A36B0) -------------------------------------------------------- +int *__thiscall std::wostream::write(int *this, int a2, int a3) +{ + char *v4; // esi + int v5; // ecx + int v7; // [esp+18h] [ebp-10h] BYREF + _DWORD *v8; // [esp+1Ch] [ebp-Ch] + + std::wostream::sentry::sentry(&v7, this); + if ( (_BYTE)v7 + && a3 != (*(int (__stdcall **)(int, int))(**(_DWORD **)((char *)this + *(_DWORD *)(*this - 12) + 120) + 48))(a2, a3) ) + { + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v4 = (char *)v8 + *(_DWORD *)(*v8 - 12); + if ( (v4[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v5 = *((_DWORD *)v4 + 30); + if ( v5 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v5 + 24))(v5) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v8 + *(_DWORD *)(*v8 - 12)), + *(_DWORD *)((char *)v8 + *(_DWORD *)(*v8 - 12) + 20) | 1); + } + } + return this; +} + +//----- (004A37E0) -------------------------------------------------------- +int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) +{ + int v3; // eax + char *v4; // ecx + int result; // eax + + *(_BYTE *)this = 0; + v3 = *a2; + this[1] = a2; + v4 = (char *)a2 + *(_DWORD *)(v3 - 12); + result = *((_DWORD *)v4 + 5); + if ( *((_DWORD *)v4 + 28) ) + { + if ( result ) + return std::wios::clear(v4, result | 4); + std::wostream::flush(*((_DWORD **)v4 + 28)); + result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + if ( result ) + return std::wios::clear(v4, result | 4); + *(_BYTE *)this = 1; + return result; +} + +//----- (004A3840) -------------------------------------------------------- +int __thiscall std::wostream::sentry::sentry(_DWORD *this, int *a2) +{ + int v3; // eax + char *v4; // ecx + int result; // eax + + *(_BYTE *)this = 0; + v3 = *a2; + this[1] = a2; + v4 = (char *)a2 + *(_DWORD *)(v3 - 12); + result = *((_DWORD *)v4 + 5); + if ( *((_DWORD *)v4 + 28) ) + { + if ( result ) + return std::wios::clear(v4, result | 4); + std::wostream::flush(*((_DWORD **)v4 + 28)); + result = *(int *)((char *)a2 + *(_DWORD *)(*a2 - 12) + 20); + v4 = (char *)a2 + *(_DWORD *)(*a2 - 12); + } + if ( result ) + return std::wios::clear(v4, result | 4); + *(_BYTE *)this = 1; + return result; +} + +//----- (004A38A0) -------------------------------------------------------- +char __fastcall std::wostream::sentry::~sentry(int a1) +{ + int v1; // eax + int v3; // ebx + int v4; // ecx + _DWORD *v5; // ecx + + v1 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + if ( (*(_BYTE *)(v1 + 13) & 0x20) != 0 ) + { + v3 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + LOBYTE(v1) = std::uncaught_exception(); + if ( !(_BYTE)v1 ) + { + v4 = *(_DWORD *)(v3 + 120); + if ( v4 ) + { + v1 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); + if ( v1 == -1 ) + { + v5 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); + LOBYTE(v1) = std::wios::clear(v5, v5[5] | 1); + } + } + } + } + return v1; +} + +//----- (004A3910) -------------------------------------------------------- +char __fastcall std::wostream::sentry::~sentry(int a1) +{ + int v1; // eax + int v3; // ebx + int v4; // ecx + _DWORD *v5; // ecx + + v1 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + if ( (*(_BYTE *)(v1 + 13) & 0x20) != 0 ) + { + v3 = *(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4); + LOBYTE(v1) = std::uncaught_exception(); + if ( !(_BYTE)v1 ) + { + v4 = *(_DWORD *)(v3 + 120); + if ( v4 ) + { + v1 = (*(int (__fastcall **)(int))(*(_DWORD *)v4 + 24))(v4); + if ( v1 == -1 ) + { + v5 = (_DWORD *)(*(_DWORD *)(**(_DWORD **)(a1 + 4) - 12) + *(_DWORD *)(a1 + 4)); + LOBYTE(v1) = std::wios::clear(v5, v5[5] | 1); + } + } + } + } + return v1; +} + +//----- (004A3980) -------------------------------------------------------- +int __thiscall std::wostream::_M_write(_DWORD *this, int a2, int a3) +{ + int v4; // ecx + int result; // eax + + v4 = *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 120); + result = (*(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 48))(v4, a2, a3); + if ( a3 != result ) + return std::wios::clear( + (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)), + *(_DWORD *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + return result; +} + +//----- (004A39D0) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + int v9; // ecx + unsigned __int16 v10; // ax + int v11; // edx + unsigned __int16 v12; // [esp+2Ah] [ebp-2Eh] + int v13; // [esp+38h] [ebp-20h] BYREF + _DWORD *v14; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v13, this); + if ( (_BYTE)v13 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v12 = *((_WORD *)v3 + 58); + } + else + { + v9 = *((_DWORD *)v3 + 31); + if ( !v9 ) + std::__throw_bad_cast(); + v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v10; + v3[118] = 1; + v12 = v10; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int))(*(_DWORD *)v4 + 36))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v12, + a2); + if ( v5 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v14 + *(_DWORD *)(*v14 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), + *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); + } + } + return this; +} +// 4A3A4F: variable 'v5' is possibly undefined + +//----- (004A3B70) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, unsigned __int8 a2) +{ + char *v3; // esi + unsigned __int16 v4; // ax + char v5; // dl + char *v6; // esi + int v7; // ecx + int v9; // ecx + int v10; // edx + int v11; // [esp+2Ch] [ebp-2Ch] + int v12; // [esp+38h] [ebp-20h] BYREF + _DWORD *v13; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v12, this); + if ( (_BYTE)v12 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v11 = *((_DWORD *)v3 + 32); + if ( !v11 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v4 = *((_WORD *)v3 + 58); + } + else + { + v9 = *((_DWORD *)v3 + 31); + if ( !v9 ) + std::__throw_bad_cast(); + v4 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); + v10 = *this; + *((_WORD *)v3 + 58) = v4; + v3[118] = 1; + v3 = (char *)this + *(_DWORD *)(v10 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, _DWORD))(*(_DWORD *)v11 + 8))( + v11, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v4, + a2); + if ( v5 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v13 + *(_DWORD *)(*v13 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12)), + *(_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12) + 20) | 1); + } + } + return this; +} +// 4A3C00: variable 'v5' is possibly undefined + +//----- (004A3D20) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, double a2) +{ + char *v3; // esi + int v4; // edi + unsigned __int16 v5; // ax + char v6; // dl + char *v7; // esi + int v8; // ecx + int v10; // ecx + int v11; // edx + int v12; // [esp+38h] [ebp-20h] BYREF + _DWORD *v13; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v12, this); + if ( (_BYTE)v12 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v5 = *((_WORD *)v3 + 58); + } + else + { + v10 = *((_DWORD *)v3 + 31); + if ( !v10 ) + std::__throw_bad_cast(); + v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v5; + v3[118] = 1; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 28))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v5, + LODWORD(a2), + HIDWORD(a2)); + if ( v6 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v7 = (char *)v13 + *(_DWORD *)(*v13 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12)), + *(_DWORD *)((char *)v13 + *(_DWORD *)(*v13 - 12) + 20) | 1); + } + } + return this; +} +// 4A3DA0: variable 'v6' is possibly undefined + +//----- (004A3EC0) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, long double a2) +{ + char *v3; // esi + int v4; // edi + unsigned __int16 v5; // ax + char v6; // dl + char *v7; // esi + int v8; // ecx + int v10; // ecx + int v11; // edx + int v13; // [esp+38h] [ebp-20h] BYREF + _DWORD *v14; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v13, this); + if ( (_BYTE)v13 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v5 = *((_WORD *)v3 + 58); + } + else + { + v10 = *((_DWORD *)v3 + 31); + if ( !v10 ) + std::__throw_bad_cast(); + v5 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v5; + v3[118] = 1; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v4 + 32))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v5, + LODWORD(a2), + DWORD1(a2), + HIDWORD(a2)); + if ( v6 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v7 = (char *)v14 + *(_DWORD *)(*v14 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), + *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); + } + } + return this; +} +// 4A3F3A: variable 'v6' is possibly undefined + +//----- (004A4060) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + int v9; // ecx + unsigned __int16 v10; // ax + int v11; // edx + unsigned __int16 v12; // [esp+2Ah] [ebp-2Eh] + int v13; // [esp+38h] [ebp-20h] BYREF + _DWORD *v14; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v13, this); + if ( (_BYTE)v13 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v12 = *((_WORD *)v3 + 58); + } + else + { + v9 = *((_DWORD *)v3 + 31); + if ( !v9 ) + std::__throw_bad_cast(); + v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v10; + v3[118] = 1; + v12 = v10; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int))(*(_DWORD *)v4 + 12))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v12, + a2); + if ( v5 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v14 + *(_DWORD *)(*v14 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), + *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); + } + } + return this; +} +// 4A40DF: variable 'v5' is possibly undefined + +//----- (004A4200) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2) +{ + char *v3; // esi + int v4; // edi + char v5; // dl + char *v6; // esi + int v7; // ecx + int v9; // ecx + unsigned __int16 v10; // ax + int v11; // edx + unsigned __int16 v12; // [esp+2Ah] [ebp-2Eh] + int v13; // [esp+38h] [ebp-20h] BYREF + _DWORD *v14; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v13, this); + if ( (_BYTE)v13 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + v4 = *((_DWORD *)v3 + 32); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v3[118] ) + { + v12 = *((_WORD *)v3 + 58); + } + else + { + v9 = *((_DWORD *)v3 + 31); + if ( !v9 ) + std::__throw_bad_cast(); + v10 = (*(int (__stdcall **)(int))(*(_DWORD *)v9 + 40))(32); + v11 = *this; + *((_WORD *)v3 + 58) = v10; + v3[118] = 1; + v12 = v10; + v3 = (char *)this + *(_DWORD *)(v11 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int))(*(_DWORD *)v4 + 16))( + v4, + *((_DWORD *)v3 + 30), + *((_DWORD *)v3 + 30) == 0, + v3, + v12, + a2); + if ( v5 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v6 = (char *)v14 + *(_DWORD *)(*v14 - 12); + if ( (v6[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v7 = *((_DWORD *)v6 + 30); + if ( v7 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v7 + 24))(v7) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12)), + *(_DWORD *)((char *)v14 + *(_DWORD *)(*v14 - 12) + 20) | 1); + } + } + return this; +} +// 4A427F: variable 'v5' is possibly undefined + +//----- (004A43A0) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) +{ + char *v4; // esi + int v5; // edi + char v6; // dl + char *v7; // esi + int v8; // ecx + int v10; // ecx + unsigned __int16 v11; // ax + int v12; // edx + unsigned __int16 v13; // [esp+2Eh] [ebp-3Ah] + int v14; // [esp+48h] [ebp-20h] BYREF + _DWORD *v15; // [esp+4Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v14, this); + if ( (_BYTE)v14 ) + { + v4 = (char *)this + *(_DWORD *)(*this - 12); + v5 = *((_DWORD *)v4 + 32); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v4[118] ) + { + v13 = *((_WORD *)v4 + 58); + } + else + { + v10 = *((_DWORD *)v4 + 31); + if ( !v10 ) + std::__throw_bad_cast(); + v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); + v12 = *this; + *((_WORD *)v4 + 58) = v11; + v4[118] = 1; + v13 = v11; + v4 = (char *)this + *(_DWORD *)(v12 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int, int))(*(_DWORD *)v5 + 20))( + v5, + *((_DWORD *)v4 + 30), + *((_DWORD *)v4 + 30) == 0, + v4, + v13, + a2, + a3); + if ( v6 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v7 = (char *)v15 + *(_DWORD *)(*v15 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), + *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); + } + } + return this; +} +// 4A443C: variable 'v6' is possibly undefined + +//----- (004A4560) -------------------------------------------------------- +int *__thiscall std::wostream::_M_insert(int *this, int a2, int a3) +{ + char *v4; // esi + int v5; // edi + char v6; // dl + char *v7; // esi + int v8; // ecx + int v10; // ecx + unsigned __int16 v11; // ax + int v12; // edx + unsigned __int16 v13; // [esp+2Eh] [ebp-3Ah] + int v14; // [esp+48h] [ebp-20h] BYREF + _DWORD *v15; // [esp+4Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v14, this); + if ( (_BYTE)v14 ) + { + v4 = (char *)this + *(_DWORD *)(*this - 12); + v5 = *((_DWORD *)v4 + 32); + if ( !v5 ) + std::__throw_bad_cast(); + if ( v4[118] ) + { + v13 = *((_WORD *)v4 + 58); + } + else + { + v10 = *((_DWORD *)v4 + 31); + if ( !v10 ) + std::__throw_bad_cast(); + v11 = (*(int (__stdcall **)(int))(*(_DWORD *)v10 + 40))(32); + v12 = *this; + *((_WORD *)v4 + 58) = v11; + v4[118] = 1; + v13 = v11; + v4 = (char *)this + *(_DWORD *)(v12 - 12); + } + (*(void (__thiscall **)(int, _DWORD, bool, char *, _DWORD, int, int))(*(_DWORD *)v5 + 24))( + v5, + *((_DWORD *)v4 + 30), + *((_DWORD *)v4 + 30) == 0, + v4, + v13, + a2, + a3); + if ( v6 ) + std::wios::clear( + (int *)((char *)this + *(_DWORD *)(*this - 12)), + *(int *)((char *)this + *(_DWORD *)(*this - 12) + 20) | 1); + } + v7 = (char *)v15 + *(_DWORD *)(*v15 - 12); + if ( (v7[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v8 = *((_DWORD *)v7 + 30); + if ( v8 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v8 + 24))(v8) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12)), + *(_DWORD *)((char *)v15 + *(_DWORD *)(*v15 - 12) + 20) | 1); + } + } + return this; +} +// 4A45FC: variable 'v6' is possibly undefined + +//----- (004A4720) -------------------------------------------------------- +int __thiscall std::wostream::basic_ostream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + std::ios_base *v5; // esi + int v6; // eax + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-24h] + + v2 = this + 1; + std::ios_base::ios_base(this + 1); + this[29] = 0; + *((_WORD *)this + 60) = 0; + v4 = *a2; + *((_BYTE *)this + 122) = 0; + v5 = (std::ios_base *)((char *)a2 + *(_DWORD *)(v4 - 12)); + *this = &off_4F61B4; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[1] = off_4F61C8; + std::ios_base::_M_move((int)v2, v5, v8); + std::wios::_M_cache_locale(v2, (int)(this + 28)); + v6 = *((_DWORD *)v5 + 28); + this[31] = 0; + *((_DWORD *)v5 + 28) = 0; + this[29] = v6; + *((_WORD *)this + 60) = *((_WORD *)v5 + 58); + result = *((unsigned __int8 *)v5 + 118); + *((_BYTE *)this + 122) = result; + return result; +} +// 4A4785: variable 'v8' is possibly undefined +// 4F61B4: using guessed type int (*off_4F61B4)(); +// 4F61C8: using guessed type int (*off_4F61C8[2])(); + +//----- (004A47F0) -------------------------------------------------------- +BOOL __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 1); + std::ios_base::ios_base(this + 1); + this[29] = 0; + *((_WORD *)this + 60) = 0; + *((_BYTE *)this + 122) = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + *this = &off_4F61B4; + this[1] = off_4F61C8; + return std::wios::init(v2, a2); +} +// 4F61B4: using guessed type int (*off_4F61B4)(); +// 4F61C8: using guessed type int (*off_4F61C8[2])(); + +//----- (004A4880) -------------------------------------------------------- +int __thiscall std::wostream::basic_ostream(_DWORD *this, int a2) +{ + int result; // eax + + std::ios_base::ios_base(this + 1); + result = 0; + *((_BYTE *)this + 122) = 0; + this[29] = 0; + *((_WORD *)this + 60) = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + *this = &off_4F61B4; + this[1] = off_4F61C8; + return result; +} +// 4F61B4: using guessed type int (*off_4F61B4)(); +// 4F61C8: using guessed type int (*off_4F61C8[2])(); + +//----- (004A48E0) -------------------------------------------------------- +BOOL __fastcall std::wostream::basic_ostream(int a1) +{ + int v1; // esi + + v1 = a1 + 4; + std::ios_base::ios_base((_DWORD *)(a1 + 4)); + *(_DWORD *)(a1 + 116) = 0; + *(_WORD *)(a1 + 120) = 0; + *(_BYTE *)(a1 + 122) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)a1 = &off_4F61B4; + *(_DWORD *)(a1 + 4) = off_4F61C8; + return std::wios::init(v1, 0); +} +// 4F61B4: using guessed type int (*off_4F61B4)(); +// 4F61C8: using guessed type int (*off_4F61C8[2])(); + +//----- (004A4970) -------------------------------------------------------- +int __thiscall std::wostream::basic_ostream(int *this, int *a2, _DWORD *a3) +{ + int v3; // edx + int v4; // eax + _DWORD *v5; // ecx + _DWORD *v6; // ebx + std::ios_base *v7; // esi + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-18h] + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); + *v5 = v4; + v6 = v5; + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move((int)v5, v7, v10); + std::wios::_M_cache_locale(v6, (int)(v6 + 27)); + v8 = *((_DWORD *)v7 + 28); + *((_DWORD *)v7 + 28) = 0; + v6[28] = v8; + *((_WORD *)v6 + 58) = *((_WORD *)v7 + 58); + result = *((unsigned __int8 *)v7 + 118); + v6[30] = 0; + *((_BYTE *)v6 + 118) = result; + return result; +} +// 4A4993: variable 'v10' is possibly undefined + +//----- (004A49E0) -------------------------------------------------------- +BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) +{ + int v3; // edx + int v4; // eax + _DWORD *v5; // ecx + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + v5 = (int *)((char *)this + *(_DWORD *)(v3 - 12)); + *v5 = v4; + return std::wios::init((int)v5, a3); +} + +//----- (004A4A10) -------------------------------------------------------- +int __thiscall std::wostream::basic_ostream(int *this, int *a2, int a3) +{ + int v3; // eax + int v4; // edx + int result; // eax + + v3 = *a2; + v4 = a2[1]; + *this = *a2; + result = *(_DWORD *)(v3 - 12); + *(int *)((char *)this + result) = v4; + return result; +} + +//----- (004A4A30) -------------------------------------------------------- +BOOL __thiscall std::wostream::basic_ostream(int *this, int *a2) +{ + int v2; // edx + int v3; // eax + _DWORD *v4; // ecx + + v2 = *a2; + v3 = a2[1]; + *this = *a2; + v4 = (int *)((char *)this + *(_DWORD *)(v2 - 12)); + *v4 = v3; + return std::wios::init((int)v4, 0); +} + +//----- (004A4A50) -------------------------------------------------------- +void __fastcall std::wostream::~wostream(char *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 4; + *(v2 - 1) = &off_4F61B4; + *v2 = &off_4F6E20; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 4F61B4: using guessed type int (*off_4F61B4)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A4A80) -------------------------------------------------------- +void __fastcall std::wostream::~wostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_4F61B4; + v1 = a1 + 1; + *v1 = &off_4F6E20; + std::ios_base::~ios_base((int)v1); +} +// 4F61B4: using guessed type int (*off_4F61B4)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A4AA0) -------------------------------------------------------- +int __thiscall std::wostream::~wostream(int *this, int *a2) +{ + int v2; // eax + int result; // eax + + v2 = *a2; + *this = *a2; + result = *(_DWORD *)(v2 - 12); + *(int *)((char *)this + result) = a2[1]; + return result; +} + +//----- (004A4AC0) -------------------------------------------------------- +_DWORD *__thiscall std::wostream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + _DWORD *result; // eax + std::ios_base *v8; // [esp+4h] [ebp-18h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + result = this; + *((_BYTE *)v4 + 118) = v6; + return result; +} +// 4A4ADD: variable 'v8' is possibly undefined + +//----- (004A4B40) -------------------------------------------------------- +int __thiscall std::wostream::operator<<(void *this, int (__cdecl *a2)(void *)) +{ + return a2(this); +} + +//----- (004A4B50) -------------------------------------------------------- +char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004A4B70) -------------------------------------------------------- +char *__thiscall std::wostream::operator<<(char *this, void (__cdecl *a2)(char *)) +{ + a2(&this[*(_DWORD *)(*(_DWORD *)this - 12)]); + return this; +} + +//----- (004A4BA0) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, _DWORD *a2) +{ + char *v3; // ecx + int v4; // eax + char *v5; // esi + int v6; // ecx + char v8; // [esp+17h] [ebp-11h] BYREF + int v9; // [esp+18h] [ebp-10h] BYREF + _DWORD *v10; // [esp+1Ch] [ebp-Ch] + + std::wostream::sentry::sentry(&v9, this); + if ( (_BYTE)v9 ) + { + v3 = (char *)this + *(_DWORD *)(*this - 12); + if ( !a2 ) + { + v4 = 1; + goto LABEL_13; + } + if ( !std::__copy_streambufs_eof>(a2, *((_DWORD **)v3 + 30), &v8) ) + { + v4 = 4; + v3 = (char *)this + *(_DWORD *)(*this - 12); +LABEL_13: + std::wios::clear(v3, *((_DWORD *)v3 + 5) | v4); + } + } + else if ( !a2 ) + { + v4 = 1; + v3 = (char *)this + *(_DWORD *)(*this - 12); + goto LABEL_13; + } + v5 = (char *)v10 + *(_DWORD *)(*v10 - 12); + if ( (v5[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v6 = *((_DWORD *)v5 + 30); + if ( v6 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v6 + 24))(v6) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12)), + *(_DWORD *)((char *)v10 + *(_DWORD *)(*v10 - 12) + 20) | 1); + } + } + return this; +} + +//----- (004A4CF0) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, unsigned __int8 a2) +{ + return std::wostream::_M_insert(this, a2); +} + +//----- (004A4D20) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, float a2) +{ + return std::wostream::_M_insert(this, a2); +} + +//----- (004A4D80) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) +{ + int v2; // eax + + v2 = *(int *)((char *)this + *(_DWORD *)(*this - 12) + 12) & 0x4A; + if ( v2 == 64 || v2 == 8 ) + return std::wostream::_M_insert(this, a2); + else + return std::wostream::_M_insert(this, (__int16)a2); +} + +//----- (004A4DC0) -------------------------------------------------------- +int *__thiscall std::wostream::operator<<(int *this, unsigned __int16 a2) +{ + return std::wostream::_M_insert(this, a2); +} + +//----- (004A4DF0) -------------------------------------------------------- +unsigned int __userpurge std::random_device::_M_init_pretr1@( + unsigned int *a1@, + const void **this, + const std::string *a3) +{ + int v4; // eax + unsigned int v5; // ecx + int i; // edx + unsigned int result; // eax + _BYTE *v8; // esi + char **EndPtr; // [esp+4h] [ebp-28h] + char *v10; // [esp+1Ch] [ebp-10h] BYREF + + v4 = std::string::compare(this, (std::string *)"mt19937", (const char *)EndPtr); + v5 = 5489; + if ( v4 ) + { + v8 = *this; + v5 = strtoul((const char *)*this, &v10, 0); + if ( !*v8 || *v10 ) + std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&)"); + } + *a1 = v5; + for ( i = 1; ; v5 = a1[i - 1] ) + { + result = i + 1812433253 * (v5 ^ (v5 >> 30)); + a1[i++] = result; + if ( i == 624 ) + break; + } + a1[624] = 624; + return result; +} +// 4A4E02: variable 'EndPtr' is possibly undefined + +//----- (004A4E90) -------------------------------------------------------- +FILE *__userpurge std::random_device::_M_init@(FILE **a1@, const void **this, const std::string *a3) +{ + unsigned int v4; // kr00_4 + unsigned int v5; // kr04_4 + unsigned int v6; // kr08_4 + FILE *result; // eax + const char *FileName; // ebx + unsigned int v18; // [esp-4h] [ebp-30h] + char *Mode; // [esp+4h] [ebp-28h] + char *Modea; // [esp+4h] [ebp-28h] + char *Modeb; // [esp+4h] [ebp-28h] + + if ( !std::string::compare(this, (std::string *)"default", Mode) ) + { + v4 = __readeflags(); + v18 = v4; + v5 = __readeflags(); + __writeeflags(v5 ^ 0x200000); + v6 = __readeflags(); + __writeeflags(v18); + if ( ((v5 ^ v6) & 0x200000) == 0 ) + goto LABEL_11; + _EAX = 0; + __asm { cpuid } + if ( _EBX != 1970169159 ) + goto LABEL_11; + if ( _EAX ) + { + _EAX = 1; + __asm { cpuid } + FileName = "/dev/urandom"; + if ( (_ECX & 0x40000000) != 0 ) + { + *a1 = 0; + return result; + } + } + else + { +LABEL_11: + FileName = "/dev/urandom"; + } + } + else + { + FileName = (const char *)*this; + if ( std::string::compare(this, (std::string *)"/dev/urandom", Modea) + && std::string::compare(this, (std::string *)"/dev/random", Modeb) ) + { +LABEL_10: + std::__throw_runtime_error((std::runtime_error *)"random_device::random_device(const std::string&)"); + } + } + result = fopen(FileName, "rb"); + *a1 = result; + if ( !result ) + goto LABEL_10; + return result; +} +// 4A4EA6: variable 'Mode' is possibly undefined +// 4A4F2C: variable 'Modea' is possibly undefined +// 4A4F41: variable 'Modeb' is possibly undefined + +//----- (004A4F80) -------------------------------------------------------- +int __thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = &off_4F61D8; + this[1] = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = &unk_4E93FC; + return result; +} +// 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); + +//----- (004A4FA0) -------------------------------------------------------- +_DWORD *__userpurge std::runtime_error::runtime_error@(int a1@, std::runtime_error *this, const char *a3) +{ + _DWORD *v3; // ecx + int v5; // [esp+1Fh] [ebp-9h] BYREF + + v3 = (_DWORD *)(a1 + 4); + *(v3 - 1) = &off_4F61D8; + return std::string::string(v3, (char *)this, (int)&v5); +} +// 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); + +//----- (004A4FE0) -------------------------------------------------------- +_DWORD *__thiscall std::runtime_error::runtime_error(_DWORD *this, int a2) +{ + _DWORD *v2; // ecx + unsigned int v4; // [esp+8h] [ebp-10h] + + v2 = this + 1; + *(v2 - 1) = &off_4F61D8; + return std::__cow_string::__cow_string(v2, *(std::__cow_string **)a2, *(const char **)(a2 + 4), v4); +} +// 4A5003: variable 'v4' is possibly undefined +// 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); + +//----- (004A5020) -------------------------------------------------------- +unsigned int *__userpurge std::runtime_error::runtime_error@( + int a1@, + unsigned int **this, + const std::runtime_error *a3) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + *(_DWORD *)a1 = &off_4F61D8; + return std::string::string((unsigned int **)(a1 + 4), this + 1, v4); +} +// 4A5036: variable 'v4' is possibly undefined +// 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); + +//----- (004A5050) -------------------------------------------------------- +unsigned int *__userpurge std::runtime_error::runtime_error@( + int a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int **v3; // ecx + const std::string *v5; // [esp+4h] [ebp-14h] + + v3 = (unsigned int **)(a1 + 4); + *(v3 - 1) = (unsigned int *)&off_4F61D8; + return std::string::string(v3, this, v5); +} +// 4A506A: variable 'v5' is possibly undefined +// 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); + +//----- (004A5090) -------------------------------------------------------- +void __fastcall std::runtime_error::~runtime_error(_DWORD *a1) +{ + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} + +//----- (004A50B0) -------------------------------------------------------- +void __fastcall std::runtime_error::~runtime_error(_DWORD *a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + std::exception *v3; // [esp+0h] [ebp-2Ch] + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = (volatile signed __int32 *)a1[1]; + *a1 = &off_4F61D8; + if ( v1 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v4); + } + std::exception::~exception(v3); +} +// 4A50C9: variable 'v3' is possibly undefined +// 4F61D8: using guessed type void (__cdecl *off_4F61D8)(std::runtime_error *__hidden this); +// 15412D0: using guessed type int _CRT_MT; +// 4A50B0: using guessed type int var_D[3]; + +//----- (004A5120) -------------------------------------------------------- +int *__thiscall std::runtime_error::operator=(int *this, int a2) +{ + std::string *v4; // [esp+4h] [ebp-18h] + + std::string::swap(this + 1, (std::string *)(a2 + 4), v4); + return this; +} +// 4A5133: variable 'v4' is possibly undefined + +//----- (004A5150) -------------------------------------------------------- +unsigned int **__thiscall std::runtime_error::operator=(unsigned int **this, int a2) +{ + const std::string *v4; // [esp+4h] [ebp-18h] + + std::string::assign(this + 1, (unsigned int **)(a2 + 4), v4); + return this; +} +// 4A5163: variable 'v4' is possibly undefined + +//----- (004A5180) -------------------------------------------------------- +int __thiscall std::ifstream::open(char *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 8, a2, a3 | 8) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004A51F0) -------------------------------------------------------- +int __thiscall std::ifstream::open(char *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 8, a2, a3 | 8) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004A5260) -------------------------------------------------------- +int __thiscall std::ifstream::open(char *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 8, *a2, a3 | 8) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004A52D0) -------------------------------------------------------- +int __thiscall std::ifstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return std::filebuf::swap((int)(this + 2), (int)(a2 + 2)); +} +// 4A52F4: variable 'v10' is possibly undefined + +//----- (004A5370) -------------------------------------------------------- +int __fastcall std::ifstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::filebuf::close((int)(a1 + 2)); + if ( !result ) + return std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004A53B0) -------------------------------------------------------- +bool __fastcall std::ifstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 48)); +} + +//----- (004A53C0) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + char *v10; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 29; + std::ios_base::ios_base(this + 29); + *this = &unk_4F10A8; + *((_WORD *)this + 116) = 0; + v4 = a2[1]; + this[57] = 0; + this[1] = v4; + v5 = *a2; + this[59] = 0; + v6 = *(_DWORD *)(v5 - 12); + this[60] = 0; + this[61] = 0; + this[29] = &unk_4F10BC; + this[62] = 0; + v10 = (char *)a2 + v6; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); + std::ios::_M_cache_locale(v2, (int)(this + 56)); + this[59] = 0; + v7 = *((_DWORD *)v10 + 28); + *((_DWORD *)v10 + 28) = 0; + this[57] = v7; + *((_WORD *)this + 116) = *((_WORD *)v10 + 58); + a2[1] = 0; + *this = &off_4F61F0; + this[29] = off_4F6204; + result = std::filebuf::basic_filebuf((int)(this + 2), (int)(a2 + 2)); + this[59] = this + 2; + return result; +} +// 4A5435: variable 'v9' is possibly undefined +// 4F61F0: using guessed type int (*off_4F61F0)(); +// 4F6204: using guessed type int (*off_4F6204[2])(); + +//----- (004A54E0) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 116); + std::ios_base::ios_base((_DWORD *)this + 29); + *(_DWORD *)this = &unk_4F10A8; + *((_DWORD *)this + 57) = 0; + *((_WORD *)this + 116) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 29) = &unk_4F10BC; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F61F0; + *((_DWORD *)this + 29) = off_4F6204; + std::filebuf::basic_filebuf((int)(this + 8)); + std::ios::init(v3, (int)(this + 8)); + v5 = std::filebuf::open(this + 8, a2, a3 | 8); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 4F61F0: using guessed type int (*off_4F61F0)(); +// 4F6204: using guessed type int (*off_4F6204[2])(); + +//----- (004A5620) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 116); + std::ios_base::ios_base((_DWORD *)this + 29); + *(_DWORD *)this = &unk_4F10A8; + *((_DWORD *)this + 57) = 0; + *((_WORD *)this + 116) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 29) = &unk_4F10BC; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F61F0; + *((_DWORD *)this + 29) = off_4F6204; + std::filebuf::basic_filebuf((int)(this + 8)); + std::ios::init(v3, (int)(this + 8)); + v5 = std::filebuf::open(this + 8, a2, a3 | 8); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 4F61F0: using guessed type int (*off_4F61F0)(); +// 4F6204: using guessed type int (*off_4F6204[2])(); + +//----- (004A5760) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 116); + std::ios_base::ios_base((_DWORD *)this + 29); + *(_DWORD *)this = &unk_4F10A8; + *((_DWORD *)this + 57) = 0; + *((_WORD *)this + 116) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 62) = 0; + *((_DWORD *)this + 29) = &unk_4F10BC; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F61F0; + *((_DWORD *)this + 29) = off_4F6204; + std::filebuf::basic_filebuf((int)(this + 8)); + std::ios::init(v3, (int)(this + 8)); + v5 = std::filebuf::open(this + 8, *a2, a3 | 8); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 4F61F0: using guessed type int (*off_4F61F0)(); +// 4F6204: using guessed type int (*off_4F6204[2])(); + +//----- (004A58A0) -------------------------------------------------------- +BOOL __fastcall std::ifstream::basic_ifstream(int a1) +{ + int v1; // esi + + v1 = a1 + 116; + std::ios_base::ios_base((_DWORD *)(a1 + 116)); + *(_DWORD *)a1 = &unk_4F10A8; + *(_DWORD *)(a1 + 228) = 0; + *(_WORD *)(a1 + 232) = 0; + *(_DWORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)(a1 + 116) = &unk_4F10BC; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_4F61F0; + *(_DWORD *)(a1 + 116) = off_4F6204; + std::filebuf::basic_filebuf(a1 + 8); + return std::ios::init(v1, a1 + 8); +} +// 4F61F0: using guessed type int (*off_4F61F0)(); +// 4F6204: using guessed type int (*off_4F6204[2])(); + +//----- (004A5980) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edx + __int16 v6; // ax + int v7; // edx + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-34h] + std::ios_base *v11; // [esp+18h] [ebp-20h] + int v12; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[1]; + *this = v4; + *(_DWORD *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = a3[1]; + v12 = (int)this + *(_DWORD *)(v4 - 12); + v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v12, v11, v10); + std::ios::_M_cache_locale((_DWORD *)v12, v12 + 108); + v5 = *((_DWORD *)v11 + 28); + *((_DWORD *)v11 + 28) = 0; + v6 = *((_WORD *)v11 + 58); + *(_DWORD *)(v12 + 120) = 0; + *(_DWORD *)(v12 + 112) = v5; + v7 = a2[3]; + *(_WORD *)(v12 + 116) = v6; + v8 = *a2; + a3[1] = 0; + *this = v8; + *(_DWORD *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; + std::filebuf::basic_filebuf((int)(this + 2), (int)(a3 + 2)); + result = *(_DWORD *)(*this - 12); + *(_DWORD *)((char *)this + result + 120) = this + 2; + return result; +} +// 4A59BD: variable 'v10' is possibly undefined + +//----- (004A5A50) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char *a3, int a4) +{ + char *v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + char *v10; // ecx + + v5 = this + 8; + v6 = a2[1]; + *(_DWORD *)this = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12)] = a2[2]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v6 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v9 = std::filebuf::open(v5, a3, a4 | 8); + v10 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v9 ) + return std::ios::clear(v10, 0); + else + return std::ios::clear(v10, *((_DWORD *)v10 + 5) | 4); +} + +//----- (004A5B40) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, wchar_t *a3, int a4) +{ + char *v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + char *v10; // ecx + + v5 = this + 8; + v6 = a2[1]; + *(_DWORD *)this = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12)] = a2[2]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v6 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v9 = std::filebuf::open(v5, a3, a4 | 8); + v10 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v9 ) + return std::ios::clear(v10, 0); + else + return std::ios::clear(v10, *((_DWORD *)v10 + 5) | 4); +} + +//----- (004A5C30) -------------------------------------------------------- +int __thiscall std::ifstream::basic_ifstream(char *this, int *a2, char **a3, int a4) +{ + char *v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + char *v10; // ecx + + v5 = this + 8; + v6 = a2[1]; + *(_DWORD *)this = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12)] = a2[2]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v6 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v9 = std::filebuf::open(v5, *a3, a4 | 8); + v10 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v9 ) + return std::ios::clear(v10, 0); + else + return std::ios::clear(v10, *((_DWORD *)v10 + 5) | 4); +} + +//----- (004A5D20) -------------------------------------------------------- +BOOL __thiscall std::ifstream::basic_ifstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + int v5; // eax + int v6; // edx + + v3 = (int)(this + 2); + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = *a2; + v6 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; + std::filebuf::basic_filebuf(v3); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), v3); +} + +//----- (004A5DC0) -------------------------------------------------------- +void __fastcall std::ifstream::~ifstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 2; + *(v2 - 2) = &off_4F61F0; + v2[27] = off_4F6204; + *v2 = &off_4F6090; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 12); + a1[2] = &off_4F6414; + std::locale::~locale((_DWORD **)a1 + 9); + *a1 = &unk_4F10A8; + a1[1] = 0; + a1[29] = &off_4F6E10; + std::ios_base::~ios_base((int)(a1 + 29)); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F61F0: using guessed type int (*off_4F61F0)(); +// 4F6204: using guessed type int (*off_4F6204[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004A5E40) -------------------------------------------------------- +void __fastcall std::ifstream::~ifstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 8); + *(v2 - 2) = &off_4F61F0; + v2[27] = off_4F6204; + *v2 = &off_4F6090; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 48); + *(_DWORD *)(a1 + 8) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 36)); + *(_DWORD *)a1 = &unk_4F10A8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 116) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 116); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F61F0: using guessed type int (*off_4F61F0)(); +// 4F6204: using guessed type int (*off_4F6204[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004A5EB0) -------------------------------------------------------- +int __thiscall std::ifstream::~ifstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int result; // eax + + v3 = this + 2; + v4 = *a2; + *(v3 - 2) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 8) = a2[3]; + *v3 = &off_4F6090; + std::filebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 12); + this[2] = &off_4F6414; + std::locale::~locale((_DWORD **)this + 9); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(_DWORD *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004A5F20) -------------------------------------------------------- +_DWORD *__thiscall std::ifstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + std::filebuf::operator=((int)(this + 2), (int)(a2 + 2)); + return this; +} +// 4A5F44: variable 'v10' is possibly undefined + +//----- (004A5FC0) -------------------------------------------------------- +int __thiscall std::wifstream::open(int *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004A6030) -------------------------------------------------------- +int __thiscall std::wifstream::open(int *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004A60A0) -------------------------------------------------------- +int __thiscall std::wifstream::open(int *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 2), *a2, a3 | 8) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004A6110) -------------------------------------------------------- +int __thiscall std::wifstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return std::wfilebuf::swap((int)(this + 2), (int)(a2 + 2)); +} +// 4A6134: variable 'v9' is possibly undefined + +//----- (004A61B0) -------------------------------------------------------- +int __fastcall std::wifstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::wfilebuf::close((int)(a1 + 2)); + if ( !result ) + return std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004A61F0) -------------------------------------------------------- +bool __fastcall std::wifstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 48)); +} + +//----- (004A6200) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + char *v10; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 30; + std::ios_base::ios_base(this + 30); + *((_BYTE *)this + 238) = 0; + *((_WORD *)this + 118) = 0; + v4 = a2[1]; + this[58] = 0; + this[1] = v4; + v5 = *a2; + this[60] = 0; + v6 = *(_DWORD *)(v5 - 12); + *this = &unk_4F10D0; + this[61] = 0; + this[30] = &unk_4F10E4; + this[62] = 0; + this[63] = 0; + v10 = (char *)a2 + v6; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v6), v9); + std::wios::_M_cache_locale(v2, (int)(this + 57)); + this[60] = 0; + v7 = *((_DWORD *)v10 + 28); + *((_DWORD *)v10 + 28) = 0; + this[58] = v7; + *((_WORD *)this + 118) = *((_WORD *)v10 + 58); + *((_BYTE *)this + 238) = v10[118]; + a2[1] = 0; + *this = &off_4F6218; + this[30] = off_4F622C; + result = std::wfilebuf::basic_filebuf((int)(this + 2), (int)(a2 + 2)); + this[60] = this + 2; + return result; +} +// 4A627C: variable 'v9' is possibly undefined +// 4F6218: using guessed type int (*off_4F6218)(); +// 4F622C: using guessed type int (*off_4F622C[2])(); + +//----- (004A6330) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 30); + std::ios_base::ios_base(this + 30); + *((_BYTE *)this + 238) = 0; + this[58] = 0; + *((_WORD *)this + 118) = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + *this = &unk_4F10D0; + this[30] = &unk_4F10E4; + this[1] = 0; + std::wios::init(v3, 0); + *this = &off_4F6218; + this[30] = off_4F622C; + std::wfilebuf::basic_filebuf((int)(this + 2)); + std::wios::init(v3, (int)(this + 2)); + v5 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 4F6218: using guessed type int (*off_4F6218)(); +// 4F622C: using guessed type int (*off_4F622C[2])(); + +//----- (004A6470) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 30); + std::ios_base::ios_base(this + 30); + *((_BYTE *)this + 238) = 0; + this[58] = 0; + *((_WORD *)this + 118) = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + *this = &unk_4F10D0; + this[30] = &unk_4F10E4; + this[1] = 0; + std::wios::init(v3, 0); + *this = &off_4F6218; + this[30] = off_4F622C; + std::wfilebuf::basic_filebuf((int)(this + 2)); + std::wios::init(v3, (int)(this + 2)); + v5 = std::wfilebuf::open((int)(this + 2), a2, a3 | 8); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 4F6218: using guessed type int (*off_4F6218)(); +// 4F622C: using guessed type int (*off_4F622C[2])(); + +//----- (004A65B0) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 30); + std::ios_base::ios_base(this + 30); + *((_BYTE *)this + 238) = 0; + this[58] = 0; + *((_WORD *)this + 118) = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + this[63] = 0; + *this = &unk_4F10D0; + this[30] = &unk_4F10E4; + this[1] = 0; + std::wios::init(v3, 0); + *this = &off_4F6218; + this[30] = off_4F622C; + std::wfilebuf::basic_filebuf((int)(this + 2)); + std::wios::init(v3, (int)(this + 2)); + v5 = std::wfilebuf::open((int)(this + 2), *a2, a3 | 8); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 4F6218: using guessed type int (*off_4F6218)(); +// 4F622C: using guessed type int (*off_4F622C[2])(); + +//----- (004A66F0) -------------------------------------------------------- +BOOL __fastcall std::wifstream::basic_ifstream(int a1) +{ + int v1; // esi + + v1 = a1 + 120; + std::ios_base::ios_base((_DWORD *)(a1 + 120)); + *(_BYTE *)(a1 + 238) = 0; + *(_DWORD *)(a1 + 232) = 0; + *(_WORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)(a1 + 252) = 0; + *(_DWORD *)a1 = &unk_4F10D0; + *(_DWORD *)(a1 + 120) = &unk_4F10E4; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_4F6218; + *(_DWORD *)(a1 + 120) = off_4F622C; + std::wfilebuf::basic_filebuf(a1 + 8); + return std::wios::init(v1, a1 + 8); +} +// 4F6218: using guessed type int (*off_4F6218)(); +// 4F622C: using guessed type int (*off_4F622C[2])(); + +//----- (004A67E0) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(_DWORD *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edx + char v6; // al + int v7; // edx + int v8; // eax + int result; // eax + std::ios_base *v10; // [esp+4h] [ebp-34h] + std::ios_base *v11; // [esp+18h] [ebp-20h] + int v12; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[1]; + *this = v4; + *(_DWORD *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = a3[1]; + v12 = (int)this + *(_DWORD *)(v4 - 12); + v11 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v12, v11, v10); + std::wios::_M_cache_locale((_DWORD *)v12, v12 + 108); + v5 = *((_DWORD *)v11 + 28); + *((_DWORD *)v11 + 28) = 0; + *(_DWORD *)(v12 + 120) = 0; + *(_DWORD *)(v12 + 112) = v5; + v6 = *((_BYTE *)v11 + 118); + *(_WORD *)(v12 + 116) = *((_WORD *)v11 + 58); + v7 = a2[3]; + *(_BYTE *)(v12 + 118) = v6; + v8 = *a2; + a3[1] = 0; + *this = v8; + *(_DWORD *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; + std::wfilebuf::basic_filebuf((int)(this + 2), (int)(a3 + 2)); + result = *(_DWORD *)(*this - 12); + *(_DWORD *)((char *)this + result + 120) = this + 2; + return result; +} +// 4A681D: variable 'v10' is possibly undefined + +//----- (004A68C0) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char *a3, int a4) +{ + int v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + _DWORD *v10; // ecx + + v5 = (int)(this + 2); + v6 = a2[1]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v6 - 12), 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v9 = std::wfilebuf::open(v5, a3, a4 | 8); + v10 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v9 ) + return std::wios::clear(v10, 0); + else + return std::wios::clear(v10, v10[5] | 4); +} + +//----- (004A69B0) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, wchar_t *a3, int a4) +{ + int v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + _DWORD *v10; // ecx + + v5 = (int)(this + 2); + v6 = a2[1]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v6 - 12), 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v9 = std::wfilebuf::open(v5, a3, a4 | 8); + v10 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v9 ) + return std::wios::clear(v10, 0); + else + return std::wios::clear(v10, v10[5] | 4); +} + +//----- (004A6AA0) -------------------------------------------------------- +int __thiscall std::wifstream::basic_ifstream(int *this, int *a2, char **a3, int a4) +{ + int v5; // edi + int v6; // eax + int v7; // eax + int v8; // edx + char *v9; // eax + _DWORD *v10; // ecx + + v5 = (int)(this + 2); + v6 = a2[1]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v6 - 12), 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v9 = std::wfilebuf::open(v5, *a3, a4 | 8); + v10 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v9 ) + return std::wios::clear(v10, 0); + else + return std::wios::clear(v10, v10[5] | 4); +} + +//----- (004A6B90) -------------------------------------------------------- +BOOL __thiscall std::wifstream::basic_ifstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + int v5; // eax + int v6; // edx + + v3 = (int)(this + 2); + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = *a2; + v6 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; + std::wfilebuf::basic_filebuf(v3); + return std::wios::init((int)this + *(_DWORD *)(*this - 12), v3); +} + +//----- (004A6C30) -------------------------------------------------------- +void __fastcall std::wifstream::~wifstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 2; + *(v2 - 2) = &off_4F6218; + v2[28] = off_4F622C; + *v2 = &off_4F60D0; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 12); + a1[2] = &off_4F6454; + std::locale::~locale((_DWORD **)a1 + 9); + *a1 = &unk_4F10D0; + a1[1] = 0; + a1[30] = &off_4F6E20; + std::ios_base::~ios_base((int)(a1 + 30)); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6218: using guessed type int (*off_4F6218)(); +// 4F622C: using guessed type int (*off_4F622C[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A6CB0) -------------------------------------------------------- +void __fastcall std::wifstream::~wifstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 8); + *(v2 - 2) = &off_4F6218; + v2[28] = off_4F622C; + *v2 = &off_4F60D0; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 48); + *(_DWORD *)(a1 + 8) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 36)); + *(_DWORD *)a1 = &unk_4F10D0; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 120) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 120); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6218: using guessed type int (*off_4F6218)(); +// 4F622C: using guessed type int (*off_4F622C[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A6D20) -------------------------------------------------------- +int __thiscall std::wifstream::~wifstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int result; // eax + + v3 = this + 2; + v4 = *a2; + *(v3 - 2) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 8) = a2[3]; + *v3 = &off_4F60D0; + std::wfilebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 12); + this[2] = &off_4F6454; + std::locale::~locale((_DWORD **)this + 9); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(_DWORD *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004A6D90) -------------------------------------------------------- +_DWORD *__thiscall std::wifstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + std::wfilebuf::operator=((int)(this + 2), (int)(a2 + 2)); + return this; +} +// 4A6DB4: variable 'v9' is possibly undefined + +//----- (004A6E30) -------------------------------------------------------- +int __thiscall std::wiostream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + result = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = result; + return result; +} +// 4A6E51: variable 'v8' is possibly undefined + +//----- (004A6EC0) -------------------------------------------------------- +int __thiscall std::wiostream::basic_iostream(_DWORD *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + std::ios_base *v6; // esi + int v7; // eax + int result; // eax + std::ios_base *v9; // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + + v10 = this + 3; + std::ios_base::ios_base(this + 3); + *this = &unk_4F10F8; + *((_WORD *)this + 64) = 0; + v3 = a2[1]; + this[31] = 0; + this[1] = v3; + v4 = *a2; + *((_BYTE *)this + 130) = 0; + v5 = *(_DWORD *)(v4 - 12); + this[33] = 0; + this[34] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[3] = &unk_4F110C; + this[35] = 0; + this[36] = 0; + std::ios_base::_M_move((int)v10, v6, v9); + std::wios::_M_cache_locale(v10, (int)(this + 30)); + this[33] = 0; + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[31] = v7; + *((_WORD *)this + 64) = *((_WORD *)v6 + 58); + result = *((unsigned __int8 *)v6 + 118); + *((_BYTE *)this + 130) = result; + a2[1] = 0; + *this = &off_4F6240; + this[3] = off_4F6268; + this[2] = off_4F6254; + return result; +} +// 4A6F3A: variable 'v9' is possibly undefined +// 4F6240: using guessed type int (*off_4F6240)(); +// 4F6254: using guessed type int (*off_4F6254[2])(); +// 4F6268: using guessed type int (*off_4F6268[2])(); + +//----- (004A6FC0) -------------------------------------------------------- +BOOL __thiscall std::wiostream::basic_iostream(_DWORD *this, int a2) +{ + int v2; // esi + BOOL result; // eax + + v2 = (int)(this + 3); + std::ios_base::ios_base(this + 3); + this[31] = 0; + *((_WORD *)this + 64) = 0; + *((_BYTE *)this + 130) = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + *this = &unk_4F10F8; + this[3] = &unk_4F110C; + this[1] = 0; + std::wios::init(v2, a2); + this[2] = &unk_4F1120; + this[3] = &unk_4F1134; + result = std::wios::init(v2, a2); + *this = &off_4F6240; + this[3] = off_4F6268; + this[2] = off_4F6254; + return result; +} +// 4F6240: using guessed type int (*off_4F6240)(); +// 4F6254: using guessed type int (*off_4F6254[2])(); +// 4F6268: using guessed type int (*off_4F6268[2])(); + +//----- (004A70A0) -------------------------------------------------------- +BOOL __fastcall std::wiostream::basic_iostream(int a1) +{ + int v1; // esi + BOOL result; // eax + + v1 = a1 + 12; + std::ios_base::ios_base((_DWORD *)(a1 + 12)); + *(_DWORD *)(a1 + 124) = 0; + *(_WORD *)(a1 + 128) = 0; + *(_BYTE *)(a1 + 130) = 0; + *(_DWORD *)(a1 + 132) = 0; + *(_DWORD *)(a1 + 136) = 0; + *(_DWORD *)(a1 + 140) = 0; + *(_DWORD *)(a1 + 144) = 0; + *(_DWORD *)a1 = &unk_4F10F8; + *(_DWORD *)(a1 + 12) = &unk_4F110C; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_4F1120; + *(_DWORD *)(a1 + 12) = &unk_4F1134; + result = std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_4F6240; + *(_DWORD *)(a1 + 12) = off_4F6268; + *(_DWORD *)(a1 + 8) = off_4F6254; + return result; +} +// 4F6240: using guessed type int (*off_4F6240)(); +// 4F6254: using guessed type int (*off_4F6254[2])(); +// 4F6268: using guessed type int (*off_4F6268[2])(); + +//----- (004A7180) -------------------------------------------------------- +int __thiscall std::wiostream::basic_iostream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // edi + int v6; // edi + std::ios_base *v7; // ebp + int v8; // eax + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int result; // eax + std::ios_base *v14; // [esp+4h] [ebp-28h] + + v4 = a2[1]; + v5 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = v5; + this[1] = a3[1]; + v6 = (int)this + *(_DWORD *)(v4 - 12); + v7 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v6, v7, v14); + std::wios::_M_cache_locale((_DWORD *)v6, v6 + 108); + v8 = *((_DWORD *)v7 + 28); + *(_DWORD *)(v6 + 120) = 0; + *((_DWORD *)v7 + 28) = 0; + *(_DWORD *)(v6 + 112) = v8; + *(_WORD *)(v6 + 116) = *((_WORD *)v7 + 58); + *(_BYTE *)(v6 + 118) = *((_BYTE *)v7 + 118); + v9 = a2[3]; + a3[1] = 0; + v10 = a2[4]; + this[2] = v9; + *(int *)((char *)this + *(_DWORD *)(v9 - 12) + 8) = v10; + v11 = *a2; + v12 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v11 - 12)) = v12; + result = a2[6]; + this[2] = result; + return result; +} +// 4A71B6: variable 'v14' is possibly undefined + +//----- (004A7230) -------------------------------------------------------- +int __thiscall std::wiostream::basic_iostream(int *this, int *a2, int a3) +{ + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + int result; // eax + + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v4 - 12), a3); + v5 = a2[3]; + this[2] = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); + *v6 = a2[4]; + std::wios::init((int)v6, a3); + v7 = *a2; + v8 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + result = a2[6]; + this[2] = result; + return result; +} + +//----- (004A72C0) -------------------------------------------------------- +int __thiscall std::wiostream::basic_iostream(int *this, int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int result; // eax + + v3 = a2[1]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[3]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[4]; + std::wios::init((int)v5, 0); + v6 = *a2; + v7 = a2[5]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + result = a2[6]; + this[2] = result; + return result; +} + +//----- (004A7350) -------------------------------------------------------- +void __fastcall std::wiostream::~basic_iostream(char *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 12; + *(v2 - 1) = &unk_4F1120; + *(v2 - 3) = &unk_4F10F8; + *(v2 - 2) = 0; + *v2 = &off_4F6E20; + std::ios_base::~ios_base((int)v2); + operator delete(a1); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A7390) -------------------------------------------------------- +void __fastcall std::wiostream::~basic_iostream(int a1) +{ + _DWORD *v1; // ecx + + *(_DWORD *)(a1 + 8) = &unk_4F1120; + v1 = (_DWORD *)(a1 + 12); + *(v1 - 3) = &unk_4F10F8; + *(v1 - 2) = 0; + *v1 = &off_4F6E20; + std::ios_base::~ios_base((int)v1); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A73C0) -------------------------------------------------------- +int __thiscall std::wiostream::~basic_iostream(int *this, int *a2) +{ + int v2; // edx + int v3; // edx + int v4; // edx + int result; // eax + + v2 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v2 - 12)) = a2[5]; + this[2] = a2[6]; + v3 = a2[3]; + this[2] = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12) + 8) = a2[4]; + v4 = a2[1]; + *this = v4; + result = *(_DWORD *)(v4 - 12); + *(int *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} + +//----- (004A7410) -------------------------------------------------------- +_DWORD *__thiscall std::wiostream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return this; +} +// 4A7431: variable 'v9' is possibly undefined + +//----- (004A74A0) -------------------------------------------------------- +int __thiscall std::ofstream::open(char *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 4, a2, a3 | 0x10) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004A7510) -------------------------------------------------------- +int __thiscall std::ofstream::open(char *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 4, a2, a3 | 0x10) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004A7580) -------------------------------------------------------- +int __thiscall std::ofstream::open(char *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::filebuf::open(this + 4, *a2, a3 | 0x10) == 0; + v5 = *(_DWORD *)this; + if ( v4 ) + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], *(_DWORD *)&this[*(_DWORD *)(v5 - 12) + 20] | 4); + else + return std::ios::clear(&this[*(_DWORD *)(v5 - 12)], 0); +} + +//----- (004A75F0) -------------------------------------------------------- +int __thiscall std::ofstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + *((_BYTE *)v4 + 117) = v7; + return std::filebuf::swap((int)(this + 1), (int)(a2 + 1)); +} +// 4A7614: variable 'v9' is possibly undefined + +//----- (004A7680) -------------------------------------------------------- +int __fastcall std::ofstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::filebuf::close((int)(a1 + 1)); + if ( !result ) + return std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004A76C0) -------------------------------------------------------- +bool __fastcall std::ofstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 44)); +} + +//----- (004A76D0) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // edx + int v6; // eax + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-34h] + char *v9; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 28; + std::ios_base::ios_base(this + 28); + *this = &unk_4F1148; + *((_WORD *)this + 114) = 0; + v4 = *a2; + this[56] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[58] = 0; + this[59] = 0; + this[28] = &unk_4F115C; + this[60] = 0; + this[61] = 0; + v9 = (char *)a2 + v5; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v5), v8); + std::ios::_M_cache_locale(v2, (int)(this + 55)); + *this = &off_4F627C; + this[58] = 0; + v6 = *((_DWORD *)v9 + 28); + this[28] = off_4F6290; + *((_DWORD *)v9 + 28) = 0; + this[56] = v6; + *((_WORD *)this + 114) = *((_WORD *)v9 + 58); + result = std::filebuf::basic_filebuf((int)(this + 1), (int)(a2 + 1)); + this[58] = this + 1; + return result; +} +// 4A773F: variable 'v8' is possibly undefined +// 4F627C: using guessed type int (*off_4F627C)(); +// 4F6290: using guessed type int (*off_4F6290[2])(); + +//----- (004A77E0) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 112); + std::ios_base::ios_base((_DWORD *)this + 28); + *(_DWORD *)this = &unk_4F1148; + *((_DWORD *)this + 56) = 0; + *((_WORD *)this + 114) = 0; + *((_DWORD *)this + 58) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 28) = &unk_4F115C; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F627C; + *((_DWORD *)this + 28) = off_4F6290; + std::filebuf::basic_filebuf((int)(this + 4)); + std::ios::init(v3, (int)(this + 4)); + v5 = std::filebuf::open(this + 4, a2, a3 | 0x10); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 4F627C: using guessed type int (*off_4F627C)(); +// 4F6290: using guessed type int (*off_4F6290[2])(); + +//----- (004A7900) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 112); + std::ios_base::ios_base((_DWORD *)this + 28); + *(_DWORD *)this = &unk_4F1148; + *((_DWORD *)this + 56) = 0; + *((_WORD *)this + 114) = 0; + *((_DWORD *)this + 58) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 28) = &unk_4F115C; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F627C; + *((_DWORD *)this + 28) = off_4F6290; + std::filebuf::basic_filebuf((int)(this + 4)); + std::ios::init(v3, (int)(this + 4)); + v5 = std::filebuf::open(this + 4, a2, a3 | 0x10); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 4F627C: using guessed type int (*off_4F627C)(); +// 4F6290: using guessed type int (*off_4F6290[2])(); + +//----- (004A7A20) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + char *v6; // ecx + + v3 = (int)(this + 112); + std::ios_base::ios_base((_DWORD *)this + 28); + *(_DWORD *)this = &unk_4F1148; + *((_DWORD *)this + 56) = 0; + *((_WORD *)this + 114) = 0; + *((_DWORD *)this + 58) = 0; + *((_DWORD *)this + 59) = 0; + *((_DWORD *)this + 60) = 0; + *((_DWORD *)this + 61) = 0; + *((_DWORD *)this + 28) = &unk_4F115C; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F627C; + *((_DWORD *)this + 28) = off_4F6290; + std::filebuf::basic_filebuf((int)(this + 4)); + std::ios::init(v3, (int)(this + 4)); + v5 = std::filebuf::open(this + 4, *a2, a3 | 0x10); + v6 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v5 ) + return std::ios::clear(v6, 0); + else + return std::ios::clear(v6, *((_DWORD *)v6 + 5) | 4); +} +// 4F627C: using guessed type int (*off_4F627C)(); +// 4F6290: using guessed type int (*off_4F6290[2])(); + +//----- (004A7B50) -------------------------------------------------------- +BOOL __fastcall std::ofstream::basic_ofstream(int a1) +{ + int v1; // esi + + v1 = a1 + 112; + std::ios_base::ios_base((_DWORD *)(a1 + 112)); + *(_DWORD *)a1 = &unk_4F1148; + *(_DWORD *)(a1 + 224) = 0; + *(_WORD *)(a1 + 228) = 0; + *(_DWORD *)(a1 + 232) = 0; + *(_DWORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 112) = &unk_4F115C; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_4F627C; + *(_DWORD *)(a1 + 112) = off_4F6290; + std::filebuf::basic_filebuf(a1 + 4); + return std::ios::init(v1, a1 + 4); +} +// 4F627C: using guessed type int (*off_4F627C)(); +// 4F6290: using guessed type int (*off_4F6290[2])(); + +//----- (004A7C20) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // esi + int v6; // edx + __int16 v7; // ax + int v8; // edx + int v9; // eax + int result; // eax + std::ios_base *v11; // [esp+4h] [ebp-34h] + std::ios_base *v12; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[1]; + *this = v4; + v5 = (int)this + *(_DWORD *)(v4 - 12); + *(_DWORD *)v5 = a2[2]; + v12 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v5, v12, v11); + std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); + *(_DWORD *)(v5 + 120) = 0; + v6 = *((_DWORD *)v12 + 28); + *((_DWORD *)v12 + 28) = 0; + v7 = *((_WORD *)v12 + 58); + *(_DWORD *)(v5 + 112) = v6; + *(_WORD *)(v5 + 116) = v7; + v8 = a2[3]; + v9 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; + std::filebuf::basic_filebuf((int)(this + 1), (int)(a3 + 1)); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)(this + 1); + return result; +} +// 4A7C55: variable 'v11' is possibly undefined + +//----- (004A7CE0) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char *a3, int a4) +{ + char *v5; // edi + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + char *v11; // ecx + + v5 = this + 4; + v6 = a2[1]; + *(_DWORD *)this = v6; + v7 = &this[*(_DWORD *)(v6 - 12)]; + *(_DWORD *)v7 = a2[2]; + std::ios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v10 = std::filebuf::open(v5, a3, a4 | 0x10); + v11 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v10 ) + return std::ios::clear(v11, 0); + else + return std::ios::clear(v11, *((_DWORD *)v11 + 5) | 4); +} + +//----- (004A7DC0) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, wchar_t *a3, int a4) +{ + char *v5; // edi + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + char *v11; // ecx + + v5 = this + 4; + v6 = a2[1]; + *(_DWORD *)this = v6; + v7 = &this[*(_DWORD *)(v6 - 12)]; + *(_DWORD *)v7 = a2[2]; + std::ios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v10 = std::filebuf::open(v5, a3, a4 | 0x10); + v11 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v10 ) + return std::ios::clear(v11, 0); + else + return std::ios::clear(v11, *((_DWORD *)v11 + 5) | 4); +} + +//----- (004A7EA0) -------------------------------------------------------- +int __thiscall std::ofstream::basic_ofstream(char *this, int *a2, char **a3, int a4) +{ + char *v5; // edi + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + char *v11; // ecx + + v5 = this + 4; + v6 = a2[1]; + *(_DWORD *)this = v6; + v7 = &this[*(_DWORD *)(v6 - 12)]; + *(_DWORD *)v7 = a2[2]; + std::ios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + std::filebuf::basic_filebuf((int)v5); + std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)v5); + v10 = std::filebuf::open(v5, *a3, a4 | 0x10); + v11 = &this[*(_DWORD *)(*(_DWORD *)this - 12)]; + if ( v10 ) + return std::ios::clear(v11, 0); + else + return std::ios::clear(v11, *((_DWORD *)v11 + 5) | 4); +} + +//----- (004A7F80) -------------------------------------------------------- +BOOL __thiscall std::ofstream::basic_ofstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + + v3 = (int)(this + 1); + v4 = a2[1]; + *this = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); + *v5 = a2[2]; + std::ios::init((int)v5, 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + std::filebuf::basic_filebuf(v3); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), v3); +} + +//----- (004A8010) -------------------------------------------------------- +void __fastcall std::ofstream::~ofstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 1; + *(v2 - 1) = &off_4F627C; + v2[27] = off_4F6290; + *v2 = &off_4F6090; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 11); + a1[1] = &off_4F6414; + std::locale::~locale((_DWORD **)a1 + 8); + *a1 = &unk_4F1148; + a1[28] = &off_4F6E10; + std::ios_base::~ios_base((int)(a1 + 28)); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F627C: using guessed type int (*off_4F627C)(); +// 4F6290: using guessed type int (*off_4F6290[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004A8080) -------------------------------------------------------- +void __fastcall std::ofstream::~ofstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 1) = &off_4F627C; + v2[27] = off_4F6290; + *v2 = &off_4F6090; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F1148; + *(_DWORD *)(a1 + 112) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 112); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F627C: using guessed type int (*off_4F627C)(); +// 4F6290: using guessed type int (*off_4F6290[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004A80F0) -------------------------------------------------------- +int __thiscall std::ofstream::~ofstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int result; // eax + + v3 = this + 1; + v4 = *a2; + *(v3 - 1) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 4) = a2[3]; + *v3 = &off_4F6090; + std::filebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 11); + this[1] = &off_4F6414; + std::locale::~locale((_DWORD **)this + 8); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(_DWORD *)((char *)this + result) = a2[2]; + return result; +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004A8160) -------------------------------------------------------- +_DWORD *__thiscall std::ofstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + *((_BYTE *)v4 + 117) = v7; + std::filebuf::operator=((int)(this + 1), (int)(a2 + 1)); + return this; +} +// 4A8184: variable 'v9' is possibly undefined + +//----- (004A81F0) -------------------------------------------------------- +int __thiscall std::wofstream::open(int *this, char *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004A8260) -------------------------------------------------------- +int __thiscall std::wofstream::open(int *this, wchar_t *a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004A82D0) -------------------------------------------------------- +int __thiscall std::wofstream::open(int *this, char **a2, int a3) +{ + bool v4; // zf + int v5; // eax + + v4 = std::wfilebuf::open((int)(this + 1), *a2, a3 | 0x10) == 0; + v5 = *this; + if ( v4 ) + return std::wios::clear( + (int *)((char *)this + *(_DWORD *)(v5 - 12)), + *(int *)((char *)this + *(_DWORD *)(v5 - 12) + 20) | 4); + else + return std::wios::clear((int *)((char *)this + *(_DWORD *)(v5 - 12)), 0); +} + +//----- (004A8340) -------------------------------------------------------- +int __thiscall std::wofstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + *((_BYTE *)v4 + 118) = v6; + return std::wfilebuf::swap((int)(this + 1), (int)(a2 + 1)); +} +// 4A8364: variable 'v8' is possibly undefined + +//----- (004A83D0) -------------------------------------------------------- +int __fastcall std::wofstream::close(_DWORD *a1) +{ + int result; // eax + + result = std::wfilebuf::close((int)(a1 + 1)); + if ( !result ) + return std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 4); + return result; +} + +//----- (004A8410) -------------------------------------------------------- +bool __fastcall std::wofstream::is_open(int a1) +{ + return std::__basic_file::is_open((_DWORD *)(a1 + 44)); +} + +//----- (004A8420) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, int *a2) +{ + _DWORD *v2; // edi + int v4; // eax + int v5; // edx + int v6; // eax + int result; // eax + std::ios_base *v8; // [esp+4h] [ebp-34h] + char *v9; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 29; + std::ios_base::ios_base(this + 29); + *((_BYTE *)this + 234) = 0; + *((_WORD *)this + 116) = 0; + v4 = *a2; + this[57] = 0; + v5 = *(_DWORD *)(v4 - 12); + *this = &unk_4F1170; + this[59] = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + this[29] = &unk_4F1184; + v9 = (char *)a2 + v5; + std::ios_base::_M_move((int)v2, (std::ios_base *)((char *)a2 + v5), v8); + std::wios::_M_cache_locale(v2, (int)(this + 56)); + *this = &off_4F62A4; + this[59] = 0; + v6 = *((_DWORD *)v9 + 28); + this[29] = off_4F62B8; + *((_DWORD *)v9 + 28) = 0; + this[57] = v6; + *((_WORD *)this + 116) = *((_WORD *)v9 + 58); + *((_BYTE *)this + 234) = v9[118]; + result = std::wfilebuf::basic_filebuf((int)(this + 1), (int)(a2 + 1)); + this[59] = this + 1; + return result; +} +// 4A8496: variable 'v8' is possibly undefined +// 4F62A4: using guessed type int (*off_4F62A4)(); +// 4F62B8: using guessed type int (*off_4F62B8[2])(); + +//----- (004A8540) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 29); + std::ios_base::ios_base(this + 29); + *((_BYTE *)this + 234) = 0; + this[57] = 0; + *((_WORD *)this + 116) = 0; + this[59] = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + *this = &unk_4F1170; + this[29] = &unk_4F1184; + std::wios::init(v3, 0); + *this = &off_4F62A4; + this[29] = off_4F62B8; + std::wfilebuf::basic_filebuf((int)(this + 1)); + std::wios::init(v3, (int)(this + 1)); + v5 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 4F62A4: using guessed type int (*off_4F62A4)(); +// 4F62B8: using guessed type int (*off_4F62B8[2])(); + +//----- (004A8670) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, wchar_t *a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 29); + std::ios_base::ios_base(this + 29); + *((_BYTE *)this + 234) = 0; + this[57] = 0; + *((_WORD *)this + 116) = 0; + this[59] = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + *this = &unk_4F1170; + this[29] = &unk_4F1184; + std::wios::init(v3, 0); + *this = &off_4F62A4; + this[29] = off_4F62B8; + std::wfilebuf::basic_filebuf((int)(this + 1)); + std::wios::init(v3, (int)(this + 1)); + v5 = std::wfilebuf::open((int)(this + 1), a2, a3 | 0x10); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 4F62A4: using guessed type int (*off_4F62A4)(); +// 4F62B8: using guessed type int (*off_4F62B8[2])(); + +//----- (004A87A0) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(_DWORD *this, char **a2, int a3) +{ + int v3; // esi + char *v5; // eax + _DWORD *v6; // ecx + + v3 = (int)(this + 29); + std::ios_base::ios_base(this + 29); + *((_BYTE *)this + 234) = 0; + this[57] = 0; + *((_WORD *)this + 116) = 0; + this[59] = 0; + this[60] = 0; + this[61] = 0; + this[62] = 0; + *this = &unk_4F1170; + this[29] = &unk_4F1184; + std::wios::init(v3, 0); + *this = &off_4F62A4; + this[29] = off_4F62B8; + std::wfilebuf::basic_filebuf((int)(this + 1)); + std::wios::init(v3, (int)(this + 1)); + v5 = std::wfilebuf::open((int)(this + 1), *a2, a3 | 0x10); + v6 = (_DWORD *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v5 ) + return std::wios::clear(v6, 0); + else + return std::wios::clear(v6, v6[5] | 4); +} +// 4F62A4: using guessed type int (*off_4F62A4)(); +// 4F62B8: using guessed type int (*off_4F62B8[2])(); + +//----- (004A88D0) -------------------------------------------------------- +BOOL __fastcall std::wofstream::basic_ofstream(int a1) +{ + int v1; // esi + + v1 = a1 + 116; + std::ios_base::ios_base((_DWORD *)(a1 + 116)); + *(_BYTE *)(a1 + 234) = 0; + *(_DWORD *)(a1 + 228) = 0; + *(_WORD *)(a1 + 232) = 0; + *(_DWORD *)(a1 + 236) = 0; + *(_DWORD *)(a1 + 240) = 0; + *(_DWORD *)(a1 + 244) = 0; + *(_DWORD *)(a1 + 248) = 0; + *(_DWORD *)a1 = &unk_4F1170; + *(_DWORD *)(a1 + 116) = &unk_4F1184; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_4F62A4; + *(_DWORD *)(a1 + 116) = off_4F62B8; + std::wfilebuf::basic_filebuf(a1 + 4); + return std::wios::init(v1, a1 + 4); +} +// 4F62A4: using guessed type int (*off_4F62A4)(); +// 4F62B8: using guessed type int (*off_4F62B8[2])(); + +//----- (004A89B0) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, _DWORD *a3) +{ + int v4; // eax + int v5; // esi + int v6; // edx + char v7; // al + int v8; // edx + int v9; // eax + int result; // eax + std::ios_base *v11; // [esp+4h] [ebp-34h] + std::ios_base *v12; // [esp+1Ch] [ebp-1Ch] + + v4 = a2[1]; + *this = v4; + v5 = (int)this + *(_DWORD *)(v4 - 12); + *(_DWORD *)v5 = a2[2]; + v12 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v5, v12, v11); + std::wios::_M_cache_locale((_DWORD *)v5, v5 + 108); + *(_DWORD *)(v5 + 120) = 0; + v6 = *((_DWORD *)v12 + 28); + *((_DWORD *)v12 + 28) = 0; + *(_DWORD *)(v5 + 112) = v6; + v7 = *((_BYTE *)v12 + 118); + *(_WORD *)(v5 + 116) = *((_WORD *)v12 + 58); + *(_BYTE *)(v5 + 118) = v7; + v8 = a2[3]; + v9 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v8; + std::wfilebuf::basic_filebuf((int)(this + 1), (int)(a3 + 1)); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)(this + 1); + return result; +} +// 4A89E5: variable 'v11' is possibly undefined + +//----- (004A8A80) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char *a3, int a4) +{ + int v5; // edi + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + _DWORD *v11; // ecx + + v5 = (int)(this + 1); + v6 = a2[1]; + *this = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12)); + *v7 = a2[2]; + std::wios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v10 = std::wfilebuf::open(v5, a3, a4 | 0x10); + v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v10 ) + return std::wios::clear(v11, 0); + else + return std::wios::clear(v11, v11[5] | 4); +} + +//----- (004A8B60) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, wchar_t *a3, int a4) +{ + int v5; // edi + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + _DWORD *v11; // ecx + + v5 = (int)(this + 1); + v6 = a2[1]; + *this = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12)); + *v7 = a2[2]; + std::wios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v10 = std::wfilebuf::open(v5, a3, a4 | 0x10); + v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v10 ) + return std::wios::clear(v11, 0); + else + return std::wios::clear(v11, v11[5] | 4); +} + +//----- (004A8C40) -------------------------------------------------------- +int __thiscall std::wofstream::basic_ofstream(int *this, int *a2, char **a3, int a4) +{ + int v5; // edi + int v6; // eax + _DWORD *v7; // ecx + int v8; // eax + int v9; // edx + char *v10; // eax + _DWORD *v11; // ecx + + v5 = (int)(this + 1); + v6 = a2[1]; + *this = v6; + v7 = (int *)((char *)this + *(_DWORD *)(v6 - 12)); + *v7 = a2[2]; + std::wios::init((int)v7, 0); + v8 = *a2; + v9 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + std::wfilebuf::basic_filebuf(v5); + std::wios::init((int)this + *(_DWORD *)(*this - 12), v5); + v10 = std::wfilebuf::open(v5, *a3, a4 | 0x10); + v11 = (int *)((char *)this + *(_DWORD *)(*this - 12)); + if ( v10 ) + return std::wios::clear(v11, 0); + else + return std::wios::clear(v11, v11[5] | 4); +} + +//----- (004A8D20) -------------------------------------------------------- +BOOL __thiscall std::wofstream::basic_ofstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + + v3 = (int)(this + 1); + v4 = a2[1]; + *this = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); + *v5 = a2[2]; + std::wios::init((int)v5, 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + std::wfilebuf::basic_filebuf(v3); + return std::wios::init((int)this + *(_DWORD *)(*this - 12), v3); +} + +//----- (004A8DB0) -------------------------------------------------------- +void __fastcall std::wofstream::~wofstream(_DWORD *a1) +{ + _DWORD *v2; // ecx + + v2 = a1 + 1; + *(v2 - 1) = &off_4F62A4; + v2[28] = off_4F62B8; + *v2 = &off_4F60D0; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 11); + a1[1] = &off_4F6454; + std::locale::~locale((_DWORD **)a1 + 8); + *a1 = &unk_4F1170; + a1[29] = &off_4F6E20; + std::ios_base::~ios_base((int)(a1 + 29)); + operator delete(a1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F62A4: using guessed type int (*off_4F62A4)(); +// 4F62B8: using guessed type int (*off_4F62B8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A8E20) -------------------------------------------------------- +void __fastcall std::wofstream::~wofstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 1) = &off_4F62A4; + v2[28] = off_4F62B8; + *v2 = &off_4F60D0; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F1170; + *(_DWORD *)(a1 + 116) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 116); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F62A4: using guessed type int (*off_4F62A4)(); +// 4F62B8: using guessed type int (*off_4F62B8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004A8E90) -------------------------------------------------------- +int __thiscall std::wofstream::~wofstream(_DWORD *this, int *a2) +{ + _DWORD *v3; // ecx + int v4; // eax + int v5; // eax + int result; // eax + + v3 = this + 1; + v4 = *a2; + *(v3 - 1) = *a2; + *(_DWORD *)((char *)v3 + *(_DWORD *)(v4 - 12) - 4) = a2[3]; + *v3 = &off_4F60D0; + std::wfilebuf::close((int)v3); + std::__basic_file::~__basic_file(this + 11); + this[1] = &off_4F6454; + std::locale::~locale((_DWORD **)this + 8); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(_DWORD *)((char *)this + result) = a2[2]; + return result; +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004A8F00) -------------------------------------------------------- +_DWORD *__thiscall std::wofstream::operator=(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + *((_BYTE *)v4 + 118) = v6; + std::wfilebuf::operator=((int)(this + 1), (int)(a2 + 1)); + return this; +} +// 4A8F24: variable 'v8' is possibly undefined + +//----- (004A8F90) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62C8; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F62C8: using guessed type int (*off_4F62C8)(); + +//----- (004A9030) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62C8; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 4F62C8: using guessed type int (*off_4F62C8)(); + +//----- (004A90D0) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62C8; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 4F62C8: using guessed type int (*off_4F62C8)(); + +//----- (004A9170) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62C8; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F62C8: using guessed type int (*off_4F62C8)(); + +//----- (004A9210) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62C8; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 4F62C8: using guessed type int (*off_4F62C8)(); + +//----- (004A92B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62C8; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 4F62C8: using guessed type int (*off_4F62C8)(); + +//----- (004A9350) -------------------------------------------------------- +void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F62C8; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4A935C: variable 'v2' is possibly undefined +// 4F62C8: using guessed type int (*off_4F62C8)(); + +//----- (004A9370) -------------------------------------------------------- +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F62C8; + std::codecvt::~codecvt(a1); +} +// 4A9370: variable 'v1' is possibly undefined +// 4F62C8: using guessed type int (*off_4F62C8)(); + +//----- (004A9380) -------------------------------------------------------- +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F62C8; + std::codecvt::~codecvt(a1); +} +// 4A9380: variable 'v1' is possibly undefined +// 4F62C8: using guessed type int (*off_4F62C8)(); + +//----- (004A9390) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62F4; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F62F4: using guessed type int (*off_4F62F4)(); + +//----- (004A9430) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62F4; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 4F62F4: using guessed type int (*off_4F62F4)(); + +//----- (004A94D0) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62F4; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 4F62F4: using guessed type int (*off_4F62F4)(); + +//----- (004A9570) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62F4; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F62F4: using guessed type int (*off_4F62F4)(); + +//----- (004A9610) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62F4; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 4F62F4: using guessed type int (*off_4F62F4)(); + +//----- (004A96B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::codecvt_byname::codecvt_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + unsigned __int8 result; // al + bool v6; // zf + + v4 = *a2; + result = std::codecvt::codecvt(this, a3); + *this = &off_4F62F4; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), (int **)v4); + } + } + return result; +} +// 4F62F4: using guessed type int (*off_4F62F4)(); + +//----- (004A9750) -------------------------------------------------------- +void __fastcall std::codecvt_byname::~codecvt_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F62F4; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4A975C: variable 'v2' is possibly undefined +// 4F62F4: using guessed type int (*off_4F62F4)(); + +//----- (004A9770) -------------------------------------------------------- +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F62F4; + std::codecvt::~codecvt(a1); +} +// 4A9770: variable 'v1' is possibly undefined +// 4F62F4: using guessed type int (*off_4F62F4)(); + +//----- (004A9780) -------------------------------------------------------- +void __cdecl std::codecvt_byname::~codecvt_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F62F4; + std::codecvt::~codecvt(a1); +} +// 4A9780: variable 'v1' is possibly undefined +// 4F62F4: using guessed type int (*off_4F62F4)(); + +//----- (004A9790) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_4F6BD0; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F6320; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 4F6320: using guessed type int (*off_4F6320)(); +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004A9850) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_4F6BD0; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F6320; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 4F6320: using guessed type int (*off_4F6320)(); +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004A9920) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_4F6BD0; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F6320; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 4F6320: using guessed type int (*off_4F6320)(); +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004A99E0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_4F6BD0; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F6320; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 4F6320: using guessed type int (*off_4F6320)(); +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004A9AB0) -------------------------------------------------------- +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6BD0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4A9AC9: variable 'v2' is possibly undefined +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004A9AE0) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6BD0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4A9AE9: variable 'v1' is possibly undefined +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004A9B10) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6BD0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4A9B19: variable 'v1' is possibly undefined +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004A9B40) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_4F6BEC; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F633C; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 4F633C: using guessed type int (*off_4F633C)(); +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004A9C00) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_4F6BEC; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F633C; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 4F633C: using guessed type int (*off_4F633C)(); +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004A9CD0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_4F6BEC; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F633C; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 4F633C: using guessed type int (*off_4F633C)(); +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004A9D90) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_4F6BEC; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F633C; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 4F633C: using guessed type int (*off_4F633C)(); +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004A9E60) -------------------------------------------------------- +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6BEC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4A9E79: variable 'v2' is possibly undefined +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004A9E90) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6BEC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4A9E99: variable 'v1' is possibly undefined +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004A9EC0) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6BEC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4A9EC9: variable 'v1' is possibly undefined +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004A9EF0) -------------------------------------------------------- +_DWORD *__userpurge std::overflow_error::overflow_error@( + _DWORD *a1@, + std::overflow_error *this, + const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_4F6358; + return result; +} +// 4A9EFD: variable 'v5' is possibly undefined +// 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); + +//----- (004A9F20) -------------------------------------------------------- +_DWORD *__thiscall std::overflow_error::overflow_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::runtime_error::runtime_error(this, a2); + *this = &off_4F6358; + return result; +} +// 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); + +//----- (004A9F50) -------------------------------------------------------- +unsigned int *__userpurge std::overflow_error::overflow_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_4F6358; + return result; +} +// 4A9F5D: variable 'v5' is possibly undefined +// 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); + +//----- (004A9F80) -------------------------------------------------------- +void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) +{ + *a1 = &off_4F6358; + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} +// 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); + +//----- (004A9FA0) -------------------------------------------------------- +void __fastcall std::overflow_error::~overflow_error(_DWORD *a1) +{ + *a1 = &off_4F6358; + std::runtime_error::~runtime_error(a1); +} +// 4F6358: using guessed type void (__cdecl *off_4F6358)(std::overflow_error *__hidden this); + +//----- (004A9FB0) -------------------------------------------------------- +void __fastcall std::_Rb_tree_header::_Rb_tree_header(_DWORD *a1) +{ + *a1 = 0; + a1[1] = 0; + a1[2] = a1; + a1[3] = a1; + a1[4] = 0; +} + +//----- (004A9FCC) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004A9FDC) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + void **v1; // ebx + + v1 = *(void ***)(a1 + 12); + if ( v1 ) + { + std::string::_M_dispose(v1 + 12); + std::string::_M_dispose(v1 + 6); + std::string::_M_dispose(v1); + operator delete(v1); + } +} + +//----- (004AA010) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004AA018) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( + void *a1) +{ + operator delete(a1); +} + +//----- (004AA02C) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy( + void *a1) +{ + operator delete(a1); +} + +//----- (004AA03C) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + void *v1; // ebx + + v1 = *(void **)(a1 + 12); + if ( v1 ) + { + WXSS::CSSTreeLib::CSSSyntaxTree::~CSSSyntaxTree(*(_DWORD *)(a1 + 12)); + operator delete(v1); + } +} + +//----- (004AA060) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter( + int a1) +{ + return 0; +} + +//----- (004AA068) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr( + void *a1) +{ + operator delete(a1); +} + +//----- (004AA07C) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004AA08C) -------------------------------------------------------- +int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + int v1; // ecx + int result; // eax + + v1 = *(_DWORD *)(a1 + 12); + if ( v1 ) + return (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); + return result; +} + +//----- (004AA09C) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004AA0A4) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) +{ + operator delete(a1); +} + +//----- (004AA0B8) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004AA0C8) -------------------------------------------------------- +int __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + int v1; // ecx + int result; // eax + + v1 = *(_DWORD *)(a1 + 12); + if ( v1 ) + return (*(int (__fastcall **)(int))(*(_DWORD *)v1 + 4))(v1); + return result; +} + +//----- (004AA0D8) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004AA0E0) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) +{ + operator delete(a1); +} + +//----- (004AA0F4) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004AA104) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + volatile signed __int32 **v1; // ebx + + v1 = *(volatile signed __int32 ***)(a1 + 12); + if ( v1 ) + { + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v1 + 2); + operator delete(v1); + } +} + +//----- (004AA128) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004AA130) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) +{ + operator delete(a1); +} + +//----- (004AA144) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_destroy(void *a1) +{ + operator delete(a1); +} + +//----- (004AA154) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::_M_dispose(int a1) +{ + void *v1; // ebx + + v1 = *(void **)(a1 + 12); + if ( v1 ) + { + std::string::_M_dispose(*(void ***)(a1 + 12)); + operator delete(v1); + } +} + +//----- (004AA178) -------------------------------------------------------- +int __stdcall std::_Sp_counted_ptr::_M_get_deleter(int a1) +{ + return 0; +} + +//----- (004AA180) -------------------------------------------------------- +void __fastcall std::_Sp_counted_ptr::~_Sp_counted_ptr(void *a1) +{ + operator delete(a1); +} + +//----- (004AA1A0) -------------------------------------------------------- +_DWORD *__thiscall std::streambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx + + result = this; + v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); + if ( v7 == std::streambuf::seekoff ) + { + *this = -1; + this[1] = -1; + this[2] = 0; + } + else + { + v7(this, a2, a3, a4, a5, a6); + return this; + } + return result; +} + +//----- (004AA220) -------------------------------------------------------- +_DWORD *__thiscall std::streambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) +{ + _DWORD *result; // eax + _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx + + result = this; + v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); + if ( v8 == std::streambuf::seekpos ) + { + *this = -1; + this[1] = -1; + this[2] = 0; + } + else + { + v8(this, a2, a3, a4, a5, a6, a7); + return this; + } + return result; +} + +//----- (004AA2C0) -------------------------------------------------------- +int __thiscall std::streambuf::__safe_gbump(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[2] += a2; + return result; +} + +//----- (004AA2D0) -------------------------------------------------------- +int __thiscall std::streambuf::__safe_pbump(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[5] += a2; + return result; +} + +//----- (004AA2E0) -------------------------------------------------------- +int __thiscall std::streambuf::setg(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + this[1] = a2; + this[2] = a3; + result = a4; + this[3] = a4; + return result; +} + +//----- (004AA300) -------------------------------------------------------- +int __thiscall std::streambuf::setp(_DWORD *this, int a2, int a3) +{ + int result; // eax + + this[5] = a2; + this[4] = a2; + result = a3; + this[6] = a3; + return result; +} + +//----- (004AA320) -------------------------------------------------------- +void __thiscall std::streambuf::swap(int this, int a2) +{ + volatile signed __int32 **v2; // esi + int v3; // edx + int v4; // ebx + int v5; // edx + int v6; // ebx + int v7; // edx + int v8; // ebx + int v9; // edx + int v10; // ebx + int v11; // edx + int v12; // ebx + int v13; // edx + const std::locale *v14; // [esp+4h] [ebp-28h] + _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF + + v2 = (volatile signed __int32 **)(this + 28); + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); + std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); + std::locale::~locale(v15); +} +// 4AA381: variable 'v14' is possibly undefined + +//----- (004AA3C0) -------------------------------------------------------- +int std::streambuf::sync() +{ + return 0; +} + +//----- (004AA3D0) -------------------------------------------------------- +int __thiscall std::streambuf::gbump(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[2] += a2; + return result; +} + +//----- (004AA3F0) -------------------------------------------------------- +int __thiscall std::streambuf::pbump(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[5] += a2; + return result; +} + +//----- (004AA400) -------------------------------------------------------- +int __fastcall std::streambuf::sgetc(_DWORD *a1) +{ + unsigned __int8 *v1; // eax + int result; // eax + int (*v3)(void); // edx + + v1 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + return *v1; + v3 = *(int (**)(void))(*a1 + 36); + result = -1; + if ( v3 != std::streambuf::underflow ) + return v3(); + return result; +} + +//----- (004AA430) -------------------------------------------------------- +int __fastcall std::streambuf::sgetn(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); +} + +//----- (004AA440) -------------------------------------------------------- +int __thiscall std::streambuf::sputc(_DWORD *this, unsigned __int8 a2) +{ + unsigned __int8 *v2; // eax + int v3; // ebx + int (__stdcall *v5)(int); // eax + + v2 = (unsigned __int8 *)this[5]; + v3 = a2; + if ( this[6] > (unsigned int)v2 ) + { + *v2 = a2; + ++this[5]; + return v3; + } + v5 = *(int (__stdcall **)(int))(*this + 52); + if ( v5 == std::streambuf::overflow ) + return -1; + return v5(a2); +} + +//----- (004AA480) -------------------------------------------------------- +int __fastcall std::streambuf::sputn(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); +} + +//----- (004AA490) -------------------------------------------------------- +int __fastcall std::streambuf::uflow(_DWORD *a1) +{ + int (*v1)(); // eax + unsigned __int8 *v4; // eax + int v5; // edx + + v1 = *(int (**)())(*a1 + 36); + if ( v1 == std::streambuf::underflow ) + return -1; + if ( v1() == -1 ) + return -1; + v4 = (unsigned __int8 *)a1[2]; + v5 = *v4; + a1[2] = v4 + 1; + return v5; +} + +//----- (004AA4E0) -------------------------------------------------------- +int __fastcall std::streambuf::sbumpc(_DWORD *a1) +{ + unsigned __int8 *v1; // eax + int v2; // edx + int (*v4)(void); // edx + int (*v5)(); // eax + unsigned __int8 *v6; // eax + int v7; // edx + + v1 = (unsigned __int8 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + { + v2 = *v1; + a1[2] = v1 + 1; + return v2; + } + v4 = *(int (**)(void))(*a1 + 40); + if ( (char *)v4 != (char *)std::streambuf::uflow ) + return v4(); + v5 = *(int (**)())(*a1 + 36); + if ( v5 == std::streambuf::underflow ) + return -1; + if ( v5() == -1 ) + return -1; + v6 = (unsigned __int8 *)a1[2]; + v7 = *v6; + a1[2] = v6 + 1; + return v7; +} + +//----- (004AA560) -------------------------------------------------------- +int __fastcall std::streambuf::sbumpc(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); +} + +//----- (004AA570) -------------------------------------------------------- +void *__thiscall std::streambuf::setbuf(void *this, int a2, int a3) +{ + return this; +} + +//----- (004AA580) -------------------------------------------------------- +int __fastcall std::streambuf::snextc(_DWORD *a1) +{ + unsigned int v1; // eax + unsigned int v2; // edx + unsigned __int8 *v3; // eax + int (*v5)(void); // edx + int (*v6)(); // eax + int (*v7)(); // eax + int v8; // eax + _DWORD *v9; // ecx + unsigned __int8 *v10; // eax + unsigned int v11; // edx + + v1 = a1[2]; + v2 = a1[3]; + if ( v1 < v2 ) + { + v3 = (unsigned __int8 *)(v1 + 1); + a1[2] = v3; + if ( (unsigned int)v3 < v2 ) + return *v3; + v7 = *(int (**)())(*a1 + 36); + if ( v7 == std::streambuf::underflow ) + return -1; + return v7(); + } + v5 = *(int (**)(void))(*a1 + 40); + if ( (char *)v5 == (char *)std::streambuf::uflow ) + { + v6 = *(int (**)())(*a1 + 36); + if ( v6 == std::streambuf::underflow || v6() == -1 ) + return -1; + v9 = a1; + v11 = a1[3]; + v10 = (unsigned __int8 *)(a1[2] + 1); + a1[2] = v10; + } + else + { + v8 = v5(); + v9 = a1; + if ( v8 == -1 ) + return -1; + v10 = (unsigned __int8 *)a1[2]; + v11 = a1[3]; + } + if ( (unsigned int)v10 < v11 ) + return *v10; + v7 = *(int (**)())(*v9 + 36); + if ( v7 == std::streambuf::underflow ) + return -1; + return v7(); +} + +//----- (004AA640) -------------------------------------------------------- +int (*__fastcall std::streambuf::stossc(_DWORD *a1))(void) +{ + unsigned int v1; // eax + int (*result)(void); // eax + int (*v3)(void); // edx + + v1 = a1[2]; + if ( v1 >= a1[3] ) + { + v3 = *(int (**)(void))(*a1 + 40); + if ( (char *)v3 == (char *)std::streambuf::uflow ) + { + result = *(int (**)(void))(*a1 + 36); + if ( result != std::streambuf::underflow ) + { + result = (int (*)(void))result(); + if ( result != (int (*)(void))-1 ) + ++a1[2]; + } + } + else + { + return (int (*)(void))v3(); + } + } + else + { + result = (int (*)(void))(v1 + 1); + a1[2] = result; + } + return result; +} + +//----- (004AA6A0) -------------------------------------------------------- +int __thiscall std::streambuf::xsgetn(_DWORD *this, char *a2, int a3) +{ + int v5; // esi + const void *Src; // ecx + int v7; // eax + size_t Size; // ebx + char *v10; // ebx + int (__fastcall *v11)(_DWORD *); // edx + int (*v12)(); // eax + _BYTE *v13; // edx + int v14; // eax + char *v15; // [esp+30h] [ebp+4h] + + if ( a3 > 0 ) + { + v5 = 0; + while ( 1 ) + { + Src = (const void *)this[2]; + v7 = this[3] - (_DWORD)Src; + if ( v7 ) + { + Size = a3 - v5; + if ( a3 - v5 > v7 ) + Size = this[3] - (_DWORD)Src; + v5 += Size; + v15 = a2; + memcpy(a2, Src, Size); + this[2] += Size; + if ( a3 <= v5 ) + return v5; + v10 = &v15[Size]; + } + else + { + v10 = a2; + } + v11 = *(int (__fastcall **)(_DWORD *))(*this + 40); + if ( v11 == std::streambuf::uflow ) + { + v12 = *(int (**)())(*this + 36); + if ( v12 == std::streambuf::underflow || ((int (__fastcall *)(_DWORD *))v12)(this) == -1 ) + return v5; + v13 = (_BYTE *)this[2]; + LOBYTE(v14) = *v13; + this[2] = v13 + 1; + } + else + { + v14 = v11(this); + if ( v14 == -1 ) + return v5; + } + ++v5; + *v10 = v14; + a2 = v10 + 1; + if ( a3 <= v5 ) + return v5; + } + } + return 0; +} + +//----- (004AA770) -------------------------------------------------------- +int __thiscall std::streambuf::xsputn(_DWORD *this, unsigned __int8 *a2, int a3) +{ + int v5; // ebx + void *v6; // ecx + int v7; // eax + size_t Size; // edx + int (__stdcall *v10)(int); // eax + size_t v11; // [esp+1Ch] [ebp-20h] + + if ( a3 > 0 ) + { + v5 = 0; + while ( 1 ) + { + v6 = (void *)this[5]; + v7 = this[6] - (_DWORD)v6; + if ( v7 ) + { + Size = a3 - v5; + if ( a3 - v5 > v7 ) + Size = this[6] - (_DWORD)v6; + v11 = Size; + memcpy(v6, a2, Size); + this[5] += v11; + v5 += v11; + if ( a3 <= v5 ) + return v5; + a2 += v11; + } + v10 = *(int (__stdcall **)(int))(*this + 52); + if ( v10 != std::streambuf::overflow && ((int (__thiscall *)(_DWORD *, _DWORD))v10)(this, *a2) != -1 ) + { + ++v5; + ++a2; + if ( a3 > v5 ) + continue; + } + return v5; + } + } + return 0; +} + +//----- (004AA810) -------------------------------------------------------- +int __fastcall std::streambuf::pubsync(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); + if ( v1 == std::streambuf::sync ) + return 0; + else + return v1(); +} + +//----- (004AA830) -------------------------------------------------------- +_DWORD *__thiscall std::streambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + + *this = -1; + result = this; + this[1] = -1; + this[2] = 0; + return result; +} + +//----- (004AA850) -------------------------------------------------------- +_DWORD *__thiscall std::streambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) +{ + _DWORD *result; // eax + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + return result; +} + +//----- (004AA870) -------------------------------------------------------- +int __fastcall std::streambuf::sungetc(_DWORD *a1) +{ + unsigned int v1; // eax + int result; // eax + int (__stdcall *v3)(int); // edx + + v1 = a1[2]; + if ( a1[1] >= v1 ) + { + v3 = *(int (__stdcall **)(int))(*a1 + 44); + result = -1; + if ( v3 != std::streambuf::pbackfail ) + return v3(-1); + } + else + { + a1[2] = v1 - 1; + return *(unsigned __int8 *)(v1 - 1); + } + return result; +} + +//----- (004AA8C0) -------------------------------------------------------- +int __fastcall std::streambuf::in_avail(_DWORD *a1) +{ + int result; // eax + int (*v2)(void); // edx + + result = a1[3] - a1[2]; + if ( !result ) + { + v2 = *(int (**)(void))(*a1 + 28); + if ( v2 != std::streambuf::showmanyc ) + return v2(); + } + return result; +} + +//----- (004AA8F0) -------------------------------------------------------- +int __stdcall std::streambuf::overflow(int a1) +{ + return -1; +} + +//----- (004AA900) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::streambuf::pubimbue( + volatile signed __int32 **this, + volatile signed __int32 **a2, + volatile signed __int32 **a3) +{ + int (__stdcall *v4)(int); // eax + const std::locale *v6; // [esp+4h] [ebp-24h] + + std::locale::locale(this, a2 + 7, v6); + v4 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); + if ( v4 != std::streambuf::imbue ) + ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v4)(a2, a3); + std::locale::operator=(a2 + 7, a3); + return this; +} +// 4AA914: variable 'v6' is possibly undefined +// 4AA3E0: using guessed type int __stdcall std::streambuf::imbue(int); + +//----- (004AA970) -------------------------------------------------------- +int __stdcall std::streambuf::pbackfail(int a1) +{ + return -1; +} + +//----- (004AA980) -------------------------------------------------------- +int __thiscall std::streambuf::pubsetbuf(void *this, int a2, int a3) +{ + int result; // eax + void *(__thiscall *v4)(void *, int, int); // edx + + result = (int)this; + v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); + if ( v4 != std::streambuf::setbuf ) + return ((int (__stdcall *)(int, int))v4)(a2, a3); + return result; +} + +//----- (004AA9A0) -------------------------------------------------------- +int std::streambuf::showmanyc() +{ + return 0; +} + +//----- (004AA9B0) -------------------------------------------------------- +int __thiscall std::streambuf::sputbackc(_DWORD *this, unsigned __int8 a2) +{ + unsigned int v2; // eax + int result; // eax + + v2 = this[2]; + if ( this[1] < v2 && *(_BYTE *)(v2 - 1) == a2 ) + { + this[2] = v2 - 1; + return *(unsigned __int8 *)(v2 - 1); + } + else + { + result = -1; + if ( *(int (__stdcall **)(int))(*this + 44) != std::streambuf::pbackfail ) + return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, a2); + } + return result; +} + +//----- (004AA9F0) -------------------------------------------------------- +int std::streambuf::underflow() +{ + return -1; +} + +//----- (004AAA00) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( + _DWORD *a1@, + int a2, + const std::locale *a3) +{ + volatile signed __int32 **v3; // ecx + + *a1 = &off_4F6414; + v3 = (volatile signed __int32 **)(a1 + 7); + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); +} +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004AAA40) -------------------------------------------------------- +int __fastcall std::streambuf::basic_streambuf(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_4F6414; + v1 = a1 + 7; + *(v1 - 6) = 0; + *(v1 - 5) = 0; + *(v1 - 4) = 0; + *(v1 - 3) = 0; + *(v1 - 2) = 0; + *(v1 - 1) = 0; + return std::locale::locale(v1); +} +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004AAA80) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::streambuf::basic_streambuf@( + _DWORD *a1@, + int a2, + const std::locale *a3) +{ + volatile signed __int32 **v3; // ecx + + *a1 = &off_4F6414; + v3 = (volatile signed __int32 **)(a1 + 7); + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); +} +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004AAAC0) -------------------------------------------------------- +int __fastcall std::streambuf::basic_streambuf(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_4F6414; + v1 = a1 + 7; + *(v1 - 6) = 0; + *(v1 - 5) = 0; + *(v1 - 4) = 0; + *(v1 - 3) = 0; + *(v1 - 2) = 0; + *(v1 - 1) = 0; + return std::locale::locale(v1); +} +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004AAB00) -------------------------------------------------------- +void __fastcall std::streambuf::~streambuf(char *a1) +{ + _DWORD **v2; // ecx + + v2 = (_DWORD **)(a1 + 28); + *(v2 - 7) = &off_4F6414; + std::locale::~locale(v2); + operator delete(a1); +} +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004AAB30) -------------------------------------------------------- +void __fastcall std::streambuf::~streambuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004AAB40) -------------------------------------------------------- +void __fastcall std::streambuf::~streambuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004AAB50) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::streambuf::operator=(volatile signed __int32 **this, int a2) +{ + volatile signed __int32 **v3; // ecx + + v3 = this + 7; + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); + return this; +} + +//----- (004AABA0) -------------------------------------------------------- +_DWORD *__thiscall std::wstreambuf::pubseekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + _DWORD *(__thiscall *v7)(_DWORD *, int, int, int, int, int); // edx + + result = this; + v7 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int))(*(_DWORD *)a2 + 16); + if ( v7 == std::wstreambuf::seekoff ) + { + *this = -1; + this[1] = -1; + this[2] = 0; + } + else + { + v7(this, a2, a3, a4, a5, a6); + return this; + } + return result; +} + +//----- (004AAC20) -------------------------------------------------------- +_DWORD *__thiscall std::wstreambuf::pubseekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) +{ + _DWORD *result; // eax + _DWORD *(__thiscall *v8)(_DWORD *, int, int, int, int, int, int); // edx + + result = this; + v8 = *(_DWORD *(__thiscall **)(_DWORD *, int, int, int, int, int, int))(*(_DWORD *)a2 + 20); + if ( v8 == std::wstreambuf::seekpos ) + { + *this = -1; + this[1] = -1; + this[2] = 0; + } + else + { + v8(this, a2, a3, a4, a5, a6, a7); + return this; + } + return result; +} + +//----- (004AACC0) -------------------------------------------------------- +int __thiscall std::wstreambuf::__safe_gbump(_DWORD *this, int a2) +{ + int result; // eax + + result = 2 * a2; + this[2] += 2 * a2; + return result; +} + +//----- (004AACD0) -------------------------------------------------------- +int __thiscall std::wstreambuf::__safe_pbump(_DWORD *this, int a2) +{ + int result; // eax + + result = 2 * a2; + this[5] += 2 * a2; + return result; +} + +//----- (004AACE0) -------------------------------------------------------- +int __thiscall std::wstreambuf::setg(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + this[1] = a2; + this[2] = a3; + result = a4; + this[3] = a4; + return result; +} + +//----- (004AAD00) -------------------------------------------------------- +int __thiscall std::wstreambuf::setp(_DWORD *this, int a2, int a3) +{ + int result; // eax + + this[5] = a2; + this[4] = a2; + result = a3; + this[6] = a3; + return result; +} + +//----- (004AAD20) -------------------------------------------------------- +void __thiscall std::wstreambuf::swap(int this, int a2) +{ + volatile signed __int32 **v2; // esi + int v3; // edx + int v4; // ebx + int v5; // edx + int v6; // ebx + int v7; // edx + int v8; // ebx + int v9; // edx + int v10; // ebx + int v11; // edx + int v12; // ebx + int v13; // edx + const std::locale *v14; // [esp+4h] [ebp-28h] + _DWORD *v15[4]; // [esp+1Ch] [ebp-10h] BYREF + + v2 = (volatile signed __int32 **)(this + 28); + v3 = *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = *(_DWORD *)(a2 + 4); + v4 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v3; + v5 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 8) = v4; + v6 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v5; + v7 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 12) = v6; + v8 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v7; + v9 = *(_DWORD *)(this + 16); + *(_DWORD *)(this + 16) = v8; + v10 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v9; + v11 = *(_DWORD *)(this + 20); + *(_DWORD *)(this + 20) = v10; + v12 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v11; + v13 = *(_DWORD *)(this + 24); + *(_DWORD *)(this + 24) = v12; + *(_DWORD *)(a2 + 24) = v13; + std::locale::locale((volatile signed __int32 **)v15, (volatile signed __int32 **)(this + 28), v14); + std::locale::operator=(v2, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)v15); + std::locale::~locale(v15); +} +// 4AAD81: variable 'v14' is possibly undefined + +//----- (004AADC0) -------------------------------------------------------- +int std::wstreambuf::sync() +{ + return 0; +} + +//----- (004AADD0) -------------------------------------------------------- +int __thiscall std::wstreambuf::gbump(_DWORD *this, int a2) +{ + int result; // eax + + result = 2 * a2; + this[2] += 2 * a2; + return result; +} + +//----- (004AADF0) -------------------------------------------------------- +int __thiscall std::wstreambuf::pbump(_DWORD *this, int a2) +{ + int result; // eax + + result = 2 * a2; + this[5] += 2 * a2; + return result; +} + +//----- (004AAE00) -------------------------------------------------------- +int __fastcall std::wstreambuf::sgetc(_DWORD *a1) +{ + unsigned __int16 *v1; // eax + int result; // eax + int (*v3)(void); // edx + + v1 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + return *v1; + v3 = *(int (**)(void))(*a1 + 36); + result = -1; + if ( v3 != std::wstreambuf::underflow ) + return v3(); + return result; +} + +//----- (004AAE30) -------------------------------------------------------- +int __fastcall std::wstreambuf::sgetn(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 32))(a1); +} + +//----- (004AAE40) -------------------------------------------------------- +int __thiscall std::wstreambuf::sputc(_DWORD *this, int a2) +{ + _WORD *v2; // eax + int result; // eax + + v2 = (_WORD *)this[5]; + if ( this[6] <= (unsigned int)v2 ) + { + result = -1; + if ( *(int (__stdcall **)(int))(*this + 52) != std::wstreambuf::overflow ) + return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 52))(this, (unsigned __int16)a2); + } + else + { + *v2 = a2; + this[5] = v2 + 1; + return a2; + } + return result; +} + +//----- (004AAE80) -------------------------------------------------------- +int __fastcall std::wstreambuf::sputn(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 48))(a1); +} + +//----- (004AAE90) -------------------------------------------------------- +int __fastcall std::wstreambuf::uflow(_DWORD *a1) +{ + int (*v1)(); // eax + unsigned __int16 *v4; // eax + int v5; // edx + + v1 = *(int (**)())(*a1 + 36); + if ( v1 == std::wstreambuf::underflow ) + return -1; + if ( (unsigned __int16)v1() == 0xFFFF ) + return -1; + v4 = (unsigned __int16 *)a1[2]; + v5 = *v4; + a1[2] = v4 + 1; + return v5; +} + +//----- (004AAEE0) -------------------------------------------------------- +int __fastcall std::wstreambuf::sbumpc(_DWORD *a1) +{ + unsigned __int16 *v1; // eax + int v2; // edx + int (*v4)(void); // edx + int (*v5)(); // eax + unsigned __int16 *v6; // eax + int v7; // edx + + v1 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + { + v2 = *v1; + a1[2] = v1 + 1; + return v2; + } + v4 = *(int (**)(void))(*a1 + 40); + if ( (char *)v4 != (char *)std::wstreambuf::uflow ) + return v4(); + v5 = *(int (**)())(*a1 + 36); + if ( v5 == std::wstreambuf::underflow ) + return -1; + if ( (unsigned __int16)v5() == 0xFFFF ) + return -1; + v6 = (unsigned __int16 *)a1[2]; + v7 = *v6; + a1[2] = v6 + 1; + return v7; +} + +//----- (004AAF60) -------------------------------------------------------- +int __fastcall std::wstreambuf::sbumpc(int a1) +{ + return (*(int (__fastcall **)(int))(*(_DWORD *)a1 + 40))(a1); +} + +//----- (004AAF70) -------------------------------------------------------- +void *__thiscall std::wstreambuf::setbuf(void *this, int a2, int a3) +{ + return this; +} + +//----- (004AAF80) -------------------------------------------------------- +int __fastcall std::wstreambuf::snextc(_DWORD *a1) +{ + __int16 *v1; // edx + __int16 v2; // ax + unsigned __int16 *v3; // eax + int (*v5)(); // eax + int (*v6)(void); // edx + int (*v7)(); // eax + __int16 v8; // ax + _DWORD *v9; // ecx + unsigned __int16 *v10; // eax + __int16 *v11; // edx + + v1 = (__int16 *)a1[2]; + if ( (unsigned int)v1 < a1[3] ) + { + v2 = *v1; + a1[2] = v1 + 1; + if ( v2 == -1 ) + return -1; + v3 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v3 < a1[3] ) + return *v3; + v5 = *(int (**)())(*a1 + 36); + if ( v5 == std::wstreambuf::underflow ) + return -1; + return v5(); + } + v6 = *(int (**)(void))(*a1 + 40); + if ( (char *)v6 == (char *)std::wstreambuf::uflow ) + { + v7 = *(int (**)())(*a1 + 36); + if ( v7 == std::wstreambuf::underflow || (unsigned __int16)v7() == 0xFFFF ) + return -1; + v9 = a1; + v11 = (__int16 *)a1[2]; + v8 = *v11; + a1[2] = v11 + 1; + } + else + { + v8 = v6(); + v9 = a1; + } + if ( v8 == -1 ) + return -1; + v10 = (unsigned __int16 *)v9[2]; + if ( (unsigned int)v10 < v9[3] ) + return *v10; + v5 = *(int (**)())(*v9 + 36); + if ( v5 == std::wstreambuf::underflow ) + return -1; + return v5(); +} + +//----- (004AB040) -------------------------------------------------------- +int (*__fastcall std::wstreambuf::stossc(_DWORD *a1))(void) +{ + unsigned int v1; // eax + int (*result)(void); // eax + int (*v3)(void); // edx + + v1 = a1[2]; + if ( v1 >= a1[3] ) + { + v3 = *(int (**)(void))(*a1 + 40); + if ( (char *)v3 == (char *)std::wstreambuf::uflow ) + { + result = *(int (**)(void))(*a1 + 36); + if ( result != std::wstreambuf::underflow ) + { + result = (int (*)(void))result(); + if ( (_WORD)result != 0xFFFF ) + a1[2] += 2; + } + } + else + { + return (int (*)(void))v3(); + } + } + else + { + result = (int (*)(void))(v1 + 2); + a1[2] = result; + } + return result; +} + +//----- (004AB0A0) -------------------------------------------------------- +int __thiscall std::wstreambuf::xsgetn(_DWORD *this, wchar_t *a2, int a3) +{ + int v5; // esi + const wchar_t *v6; // ebx + const wchar_t *S2; // eax + int v8; // ebx + int v9; // ebx + wchar_t *v11; // ebx + int (__fastcall *v12)(_DWORD *); // edx + int (*v13)(); // eax + wchar_t *v14; // edx + wchar_t v15; // ax + size_t N; // [esp+8h] [ebp-24h] + wchar_t *v17; // [esp+30h] [ebp+4h] + + if ( a3 > 0 ) + { + v5 = 0; + while ( 1 ) + { + v6 = (const wchar_t *)this[3]; + S2 = (const wchar_t *)this[2]; + if ( v6 == S2 ) + { + v11 = a2; + } + else + { + v8 = v6 - S2; + if ( v8 > a3 - v5 ) + v8 = a3 - v5; + N = v8; + v5 += v8; + v9 = v8; + v17 = a2; + wmemcpy(a2, S2, N); + this[2] += v9 * 2; + if ( a3 <= v5 ) + return v5; + v11 = &v17[v9]; + } + v12 = *(int (__fastcall **)(_DWORD *))(*this + 40); + if ( v12 == std::wstreambuf::uflow ) + { + v13 = *(int (**)())(*this + 36); + if ( v13 == std::wstreambuf::underflow || ((unsigned __int16 (__fastcall *)(_DWORD *))v13)(this) == 0xFFFF ) + return v5; + v14 = (wchar_t *)this[2]; + v15 = *v14; + this[2] = v14 + 1; + } + else + { + v15 = v12(this); + } + if ( v15 != 0xFFFF ) + { + ++v5; + *v11 = v15; + a2 = v11 + 1; + if ( a3 > v5 ) + continue; + } + return v5; + } + } + return 0; +} + +//----- (004AB170) -------------------------------------------------------- +int __thiscall std::wstreambuf::xsputn(_DWORD *this, wchar_t *a2, int a3) +{ + int v3; // esi + wchar_t *v5; // ebx + wchar_t *S1; // eax + int v7; // ebx + int v8; // ebx + int (__stdcall *v10)(int); // eax + size_t N; // [esp+8h] [ebp-34h] + _DWORD *v12; // [esp+1Ch] [ebp-20h] + _DWORD *v13; // [esp+1Ch] [ebp-20h] + + v3 = 0; + if ( a3 > 0 ) + { + while ( 1 ) + { + v5 = (wchar_t *)this[6]; + S1 = (wchar_t *)this[5]; + if ( v5 != S1 ) + { + v7 = v5 - S1; + if ( v7 > a3 - v3 ) + v7 = a3 - v3; + N = v7; + v3 += v7; + v8 = 2 * v7; + v12 = this; + wmemcpy(S1, a2, N); + this = v12; + v12[5] += v8; + if ( a3 <= v3 ) + return v3; + a2 = (wchar_t *)((char *)a2 + v8); + } + v10 = *(int (__stdcall **)(int))(*this + 52); + if ( v10 != std::wstreambuf::overflow ) + { + v13 = this; + if ( (unsigned __int16)v10(*a2) != 0xFFFF ) + { + ++v3; + ++a2; + this = v13; + if ( a3 > v3 ) + continue; + } + } + return v3; + } + } + return v3; +} + +//----- (004AB210) -------------------------------------------------------- +int __fastcall std::wstreambuf::pubsync(int a1) +{ + int (*v1)(void); // eax + + v1 = *(int (**)(void))(*(_DWORD *)a1 + 24); + if ( v1 == std::wstreambuf::sync ) + return 0; + else + return v1(); +} + +//----- (004AB230) -------------------------------------------------------- +_DWORD *__thiscall std::wstreambuf::seekoff(_DWORD *this, int a2, int a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + + *this = -1; + result = this; + this[1] = -1; + this[2] = 0; + return result; +} + +//----- (004AB250) -------------------------------------------------------- +_DWORD *__thiscall std::wstreambuf::seekpos(_DWORD *this, int a2, int a3, int a4, int a5, int a6, int a7) +{ + _DWORD *result; // eax + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + return result; +} + +//----- (004AB270) -------------------------------------------------------- +int __fastcall std::wstreambuf::sungetc(_DWORD *a1) +{ + unsigned int v1; // eax + unsigned int v2; // edx + int result; // eax + int (__stdcall *v4)(int); // edx + + v1 = a1[2]; + if ( a1[1] >= v1 ) + { + v4 = *(int (__stdcall **)(int))(*a1 + 44); + result = -1; + if ( v4 != std::wstreambuf::pbackfail ) + return v4(0xFFFF); + } + else + { + v2 = v1 - 2; + result = *(unsigned __int16 *)(v1 - 2); + a1[2] = v2; + } + return result; +} + +//----- (004AB2C0) -------------------------------------------------------- +int __fastcall std::wstreambuf::in_avail(_DWORD *a1) +{ + int v1; // eax + int v2; // edx + int result; // eax + int (*v4)(void); // edx + + v1 = a1[3]; + v2 = a1[2]; + if ( v1 != v2 ) + return (v1 - v2) >> 1; + v4 = *(int (**)(void))(*a1 + 28); + result = 0; + if ( v4 != std::wstreambuf::showmanyc ) + return v4(); + return result; +} + +//----- (004AB2F0) -------------------------------------------------------- +int __stdcall std::wstreambuf::overflow(int a1) +{ + return -1; +} + +//----- (004AB300) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::wstreambuf::pubimbue( + volatile signed __int32 **this, + volatile signed __int32 **a2, + volatile signed __int32 **a3) +{ + int (__stdcall *v4)(int); // eax + const std::locale *v6; // [esp+4h] [ebp-24h] + + std::locale::locale(this, a2 + 7, v6); + v4 = (int (__stdcall *)(int))*((_DWORD *)*a2 + 2); + if ( v4 != std::wstreambuf::imbue ) + ((void (__thiscall *)(volatile signed __int32 **, volatile signed __int32 **))v4)(a2, a3); + std::locale::operator=(a2 + 7, a3); + return this; +} +// 4AB314: variable 'v6' is possibly undefined +// 4AADE0: using guessed type int __stdcall std::wstreambuf::imbue(int); + +//----- (004AB370) -------------------------------------------------------- +int __stdcall std::wstreambuf::pbackfail(int a1) +{ + return -1; +} + +//----- (004AB380) -------------------------------------------------------- +int __thiscall std::wstreambuf::pubsetbuf(void *this, int a2, int a3) +{ + int result; // eax + void *(__thiscall *v4)(void *, int, int); // edx + + result = (int)this; + v4 = *(void *(__thiscall **)(void *, int, int))(*(_DWORD *)this + 12); + if ( v4 != std::wstreambuf::setbuf ) + return ((int (__stdcall *)(int, int))v4)(a2, a3); + return result; +} + +//----- (004AB3A0) -------------------------------------------------------- +int std::wstreambuf::showmanyc() +{ + return 0; +} + +//----- (004AB3B0) -------------------------------------------------------- +int __thiscall std::wstreambuf::sputbackc(_DWORD *this, int a2) +{ + unsigned int v2; // eax + int result; // eax + + v2 = this[2]; + if ( this[1] < v2 && *(_WORD *)(v2 - 2) == (_WORD)a2 ) + { + this[2] = v2 - 2; + return a2; + } + else + { + result = -1; + if ( *(int (__stdcall **)(int))(*this + 44) != std::wstreambuf::pbackfail ) + return (*(int (__thiscall **)(_DWORD *, _DWORD))(*this + 44))(this, (unsigned __int16)a2); + } + return result; +} + +//----- (004AB3F0) -------------------------------------------------------- +int std::wstreambuf::underflow() +{ + return -1; +} + +//----- (004AB400) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( + _DWORD *a1@, + int a2, + const std::locale *a3) +{ + volatile signed __int32 **v3; // ecx + + *a1 = &off_4F6454; + v3 = (volatile signed __int32 **)(a1 + 7); + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); +} +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004AB440) -------------------------------------------------------- +int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_4F6454; + v1 = a1 + 7; + *(v1 - 6) = 0; + *(v1 - 5) = 0; + *(v1 - 4) = 0; + *(v1 - 3) = 0; + *(v1 - 2) = 0; + *(v1 - 1) = 0; + return std::locale::locale(v1); +} +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004AB480) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::wstreambuf::basic_streambuf@( + _DWORD *a1@, + int a2, + const std::locale *a3) +{ + volatile signed __int32 **v3; // ecx + + *a1 = &off_4F6454; + v3 = (volatile signed __int32 **)(a1 + 7); + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + return std::locale::locale(v3, (volatile signed __int32 **)(a2 + 28), a3); +} +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004AB4C0) -------------------------------------------------------- +int __fastcall std::wstreambuf::basic_streambuf(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &off_4F6454; + v1 = a1 + 7; + *(v1 - 6) = 0; + *(v1 - 5) = 0; + *(v1 - 4) = 0; + *(v1 - 3) = 0; + *(v1 - 2) = 0; + *(v1 - 1) = 0; + return std::locale::locale(v1); +} +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004AB500) -------------------------------------------------------- +void __fastcall std::wstreambuf::~wstreambuf(char *a1) +{ + _DWORD **v2; // ecx + + v2 = (_DWORD **)(a1 + 28); + *(v2 - 7) = &off_4F6454; + std::locale::~locale(v2); + operator delete(a1); +} +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004AB530) -------------------------------------------------------- +void __fastcall std::wstreambuf::~wstreambuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004AB540) -------------------------------------------------------- +void __fastcall std::wstreambuf::~wstreambuf(int a1) +{ + *(_DWORD *)a1 = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004AB550) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::wstreambuf::operator=(volatile signed __int32 **this, int a2) +{ + volatile signed __int32 **v3; // ecx + + v3 = this + 7; + *(v3 - 6) = *(volatile signed __int32 **)(a2 + 4); + *(v3 - 5) = *(volatile signed __int32 **)(a2 + 8); + *(v3 - 4) = *(volatile signed __int32 **)(a2 + 12); + *(v3 - 3) = *(volatile signed __int32 **)(a2 + 16); + *(v3 - 2) = *(volatile signed __int32 **)(a2 + 20); + *(v3 - 1) = *(volatile signed __int32 **)(a2 + 24); + std::locale::operator=(v3, (volatile signed __int32 **)(a2 + 28)); + return this; +} + +//----- (004AB5A0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_4F6494; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F6494: using guessed type int (*off_4F6494)(); + +//----- (004AB640) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) +{ + return std::messages_byname::messages_byname(this, *a2, a3); +} + +//----- (004AB650) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_4F6494; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F6494: using guessed type int (*off_4F6494)(); + +//----- (004AB6F0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) +{ + return std::messages_byname::messages_byname(this, *a2, a3); +} + +//----- (004AB700) -------------------------------------------------------- +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6D04; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4AB719: variable 'v2' is possibly undefined +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004AB730) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D04; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4AB739: variable 'v1' is possibly undefined +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004AB760) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D04; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4AB769: variable 'v1' is possibly undefined +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004AB790) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_4F64B0; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F64B0: using guessed type int (*off_4F64B0)(); + +//----- (004AB830) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) +{ + return std::messages_byname::messages_byname(this, *a2, a3); +} + +//----- (004AB840) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_4F64B0; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F64B0: using guessed type int (*off_4F64B0)(); + +//----- (004AB8E0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int ***a2, int a3) +{ + return std::messages_byname::messages_byname(this, *a2, a3); +} + +//----- (004AB8F0) -------------------------------------------------------- +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6D20; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4AB909: variable 'v2' is possibly undefined +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004AB920) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D20; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4AB929: variable 'v1' is possibly undefined +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004AB950) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D20; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4AB959: variable 'v1' is possibly undefined +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004AB980) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F6D3C; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F64CC; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F64CC: using guessed type int (*off_4F64CC)(); +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004ABA70) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F6D3C; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F64CC; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F64CC: using guessed type int (*off_4F64CC)(); +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004ABB60) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F6D3C; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F64CC; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F64CC: using guessed type int (*off_4F64CC)(); +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004ABC50) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F6D3C; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F64CC; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F64CC: using guessed type int (*off_4F64CC)(); +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004ABD40) -------------------------------------------------------- +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F64CC; + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4ABD4C: variable 'v2' is possibly undefined +// 4F64CC: using guessed type int (*off_4F64CC)(); + +//----- (004ABD60) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F64CC; + std::numpunct::~numpunct(a1); +} +// 4ABD60: variable 'v1' is possibly undefined +// 4F64CC: using guessed type int (*off_4F64CC)(); + +//----- (004ABD70) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F64CC; + std::numpunct::~numpunct(a1); +} +// 4ABD70: variable 'v1' is possibly undefined +// 4F64CC: using guessed type int (*off_4F64CC)(); + +//----- (004ABD80) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F6D60; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F64F0; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F64F0: using guessed type int (*off_4F64F0)(); +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004ABE70) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F6D60; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F64F0; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F64F0: using guessed type int (*off_4F64F0)(); +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004ABF60) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F6D60; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F64F0; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F64F0: using guessed type int (*off_4F64F0)(); +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004AC050) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F6D60; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F64F0; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F64F0: using guessed type int (*off_4F64F0)(); +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004AC140) -------------------------------------------------------- +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F64F0; + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4AC14C: variable 'v2' is possibly undefined +// 4F64F0: using guessed type int (*off_4F64F0)(); + +//----- (004AC160) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F64F0; + std::numpunct::~numpunct(a1); +} +// 4AC160: variable 'v1' is possibly undefined +// 4F64F0: using guessed type int (*off_4F64F0)(); + +//----- (004AC170) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F64F0; + std::numpunct::~numpunct(a1); +} +// 4AC170: variable 'v1' is possibly undefined +// 4F64F0: using guessed type int (*off_4F64F0)(); + +//----- (004AC180) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6514; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6514: using guessed type int (*off_4F6514)(); + +//----- (004AC1A0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6514; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6514: using guessed type int (*off_4F6514)(); + +//----- (004AC1C0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6514; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6514: using guessed type int (*off_4F6514)(); + +//----- (004AC1E0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6514; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6514: using guessed type int (*off_4F6514)(); + +//----- (004AC200) -------------------------------------------------------- +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6D84; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4AC20C: variable 'v2' is possibly undefined +// 4F6D84: using guessed type int (*off_4F6D84)(); + +//----- (004AC220) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D84; + std::locale::facet::~facet(a1); +} +// 4AC220: variable 'v1' is possibly undefined +// 4F6D84: using guessed type int (*off_4F6D84)(); + +//----- (004AC230) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D84; + std::locale::facet::~facet(a1); +} +// 4AC230: variable 'v1' is possibly undefined +// 4F6D84: using guessed type int (*off_4F6D84)(); + +//----- (004AC240) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F653C; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F653C: using guessed type int (*off_4F653C)(); + +//----- (004AC260) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F653C; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F653C: using guessed type int (*off_4F653C)(); + +//----- (004AC280) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F653C; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F653C: using guessed type int (*off_4F653C)(); + +//----- (004AC2A0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F653C; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F653C: using guessed type int (*off_4F653C)(); + +//----- (004AC2C0) -------------------------------------------------------- +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6DAC; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4AC2CC: variable 'v2' is possibly undefined +// 4F6DAC: using guessed type int (*off_4F6DAC)(); + +//----- (004AC2E0) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DAC; + std::locale::facet::~facet(a1); +} +// 4AC2E0: variable 'v1' is possibly undefined +// 4F6DAC: using guessed type int (*off_4F6DAC)(); + +//----- (004AC2F0) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DAC; + std::locale::facet::~facet(a1); +} +// 4AC2F0: variable 'v1' is possibly undefined +// 4F6DAC: using guessed type int (*off_4F6DAC)(); + +//----- (004AC300) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6564; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6564: using guessed type int (*off_4F6564)(); + +//----- (004AC320) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6564; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6564: using guessed type int (*off_4F6564)(); + +//----- (004AC340) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6564; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6564: using guessed type int (*off_4F6564)(); + +//----- (004AC360) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6564; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6564: using guessed type int (*off_4F6564)(); + +//----- (004AC380) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6564; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6564: using guessed type int (*off_4F6564)(); + +//----- (004AC3A0) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6564; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6564: using guessed type int (*off_4F6564)(); + +//----- (004AC3C0) -------------------------------------------------------- +void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6DD4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4AC3CC: variable 'v2' is possibly undefined +// 4F6DD4: using guessed type int (*off_4F6DD4)(); + +//----- (004AC3E0) -------------------------------------------------------- +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DD4; + std::locale::facet::~facet(a1); +} +// 4AC3E0: variable 'v1' is possibly undefined +// 4F6DD4: using guessed type int (*off_4F6DD4)(); + +//----- (004AC3F0) -------------------------------------------------------- +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DD4; + std::locale::facet::~facet(a1); +} +// 4AC3F0: variable 'v1' is possibly undefined +// 4F6DD4: using guessed type int (*off_4F6DD4)(); + +//----- (004AC400) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6578; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6578: using guessed type int (*off_4F6578)(); + +//----- (004AC420) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6578; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6578: using guessed type int (*off_4F6578)(); + +//----- (004AC440) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6578; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6578: using guessed type int (*off_4F6578)(); + +//----- (004AC460) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6578; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6578: using guessed type int (*off_4F6578)(); + +//----- (004AC480) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6578; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6578: using guessed type int (*off_4F6578)(); + +//----- (004AC4A0) -------------------------------------------------------- +BOOL __thiscall std::time_put_byname>::time_put_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F6578; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F6578: using guessed type int (*off_4F6578)(); + +//----- (004AC4C0) -------------------------------------------------------- +void __fastcall std::time_put_byname>::~time_put_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6DE8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4AC4CC: variable 'v2' is possibly undefined +// 4F6DE8: using guessed type int (*off_4F6DE8)(); + +//----- (004AC4E0) -------------------------------------------------------- +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DE8; + std::locale::facet::~facet(a1); +} +// 4AC4E0: variable 'v1' is possibly undefined +// 4F6DE8: using guessed type int (*off_4F6DE8)(); + +//----- (004AC4F0) -------------------------------------------------------- +void __cdecl std::time_put_byname>::~time_put_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DE8; + std::locale::facet::~facet(a1); +} +// 4AC4F0: variable 'v1' is possibly undefined +// 4F6DE8: using guessed type int (*off_4F6DE8)(); + +//----- (004AC500) -------------------------------------------------------- +_DWORD *__userpurge std::underflow_error::underflow_error@( + _DWORD *a1@, + std::underflow_error *this, + const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_4F658C; + return result; +} +// 4AC50D: variable 'v5' is possibly undefined +// 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); + +//----- (004AC530) -------------------------------------------------------- +_DWORD *__thiscall std::underflow_error::underflow_error(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::runtime_error::runtime_error(this, a2); + *this = &off_4F658C; + return result; +} +// 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); + +//----- (004AC560) -------------------------------------------------------- +unsigned int *__userpurge std::underflow_error::underflow_error@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::runtime_error::runtime_error((int)a1, this, v5); + *a1 = &off_4F658C; + return result; +} +// 4AC56D: variable 'v5' is possibly undefined +// 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); + +//----- (004AC590) -------------------------------------------------------- +void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) +{ + *a1 = &off_4F658C; + std::runtime_error::~runtime_error(a1); + operator delete(a1); +} +// 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); + +//----- (004AC5B0) -------------------------------------------------------- +void __fastcall std::underflow_error::~underflow_error(_DWORD *a1) +{ + *a1 = &off_4F658C; + std::runtime_error::~runtime_error(a1); +} +// 4F658C: using guessed type void (__cdecl *off_4F658C)(std::underflow_error *__hidden this); + +//----- (004AC5C0) -------------------------------------------------------- +int __fastcall std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release(volatile signed __int32 *a1) +{ + signed __int32 v1; // eax + int result; // eax + signed __int32 v3; // eax + int v4; // [esp-1Ch] [ebp-1Ch] + int v5; // [esp-18h] [ebp-18h] + int v6; // [esp-14h] [ebp-14h] + volatile signed __int32 *v7; // [esp-10h] [ebp-10h] + int v8; // [esp-Ch] [ebp-Ch] + int v9; // [esp-8h] [ebp-8h] + + if ( _CRT_MT ) + { + v1 = _InterlockedExchangeAdd(a1 + 1, 0xFFFFFFFF); + } + else + { + v1 = *((_DWORD *)a1 + 1); + *((_DWORD *)a1 + 1) = v1 - 1; + } + result = v1 - 1; + if ( !result ) + { + (*(void (__stdcall **)(int, int, int, volatile signed __int32 *, int, int))(*a1 + 8))(v4, v5, v6, a1, v8, v9); + if ( _CRT_MT ) + { + v3 = _InterlockedExchangeAdd(v7 + 2, 0xFFFFFFFF); + } + else + { + v3 = *((_DWORD *)v7 + 2); + *((_DWORD *)v7 + 2) = v3 - 1; + } + result = v3 - 1; + if ( !result ) + return (*(int (__fastcall **)(volatile signed __int32 *))(*v7 + 12))(v7); + } + return result; +} +// 4AC5EA: variable 'v4' is possibly undefined +// 4AC5EA: variable 'v5' is possibly undefined +// 4AC5EA: variable 'v6' is possibly undefined +// 4AC5EA: variable 'v8' is possibly undefined +// 4AC5EA: variable 'v9' is possibly undefined +// 4AC5FC: variable 'v7' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004AC620) -------------------------------------------------------- +void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // esi + _DWORD *(__thiscall *v4)(char *, int); // eax + unsigned int v5; // eax + bool v6; // al + _DWORD *(__thiscall *v7)(_DWORD *, int); // eax + unsigned int v8; // eax + _DWORD *(__thiscall *v9)(int *, int); // eax + unsigned int v10; // eax + int (__fastcall *v11)(int); // eax + char v12; // al + int (__fastcall *v13)(int); // eax + char v14; // al + char v15; // al + char *v16; // esi + void (__thiscall *v17)(_BYTE *, char *, char *, int); // eax + char *v18; // esi + char v19; // al + void (__thiscall *v20)(_BYTE *, char *, char *, int); // eax + volatile signed __int32 *v21; // ecx + volatile signed __int32 *v22; // ecx + unsigned int v23; // [esp+Ch] [ebp-3Ch] + unsigned int v24; // [esp+Ch] [ebp-3Ch] + unsigned int v25; // [esp+Ch] [ebp-3Ch] + std::string *v26; // [esp+10h] [ebp-38h] + std::string *v27; // [esp+14h] [ebp-34h] + std::string *v28; // [esp+18h] [ebp-30h] + _BYTE *v29; // [esp+1Ch] [ebp-2Ch] + char v30[5]; // [esp+23h] [ebp-25h] BYREF + _DWORD *v31; // [esp+28h] [ebp-20h] BYREF + int v32[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = *(_DWORD *(__thiscall **)(char *, int))(*v3 + 16); + if ( (char *)v4 == (char *)std::numpunct::do_grouping ) + std::string::string(&v30[1], *(char **)(v3[2] + 8), (int)v32); + else + v4(&v30[1], (int)v3); + v5 = *(_DWORD *)(*(_DWORD *)&v30[1] - 12); + *(_DWORD *)(this + 12) = v5; + v28 = (std::string *)operator new[](v5); + std::string::copy(&v30[1], v28, *(char **)(this + 12), 0, v23); + v6 = 0; + if ( *(_DWORD *)(this + 12) ) + v6 = (unsigned __int8)(*(_BYTE *)v28 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v6; + v7 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); + if ( v7 == std::numpunct::do_truename ) + std::string::string(&v31, *(char **)(v3[2] + 20), (int)v32); + else + v7(&v31, (int)v3); + v8 = *(v31 - 3); + *(_DWORD *)(this + 24) = v8; + v26 = (std::string *)operator new[](v8); + std::string::copy(&v31, v26, *(char **)(this + 24), 0, v24); + v9 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 24); + if ( v9 == std::numpunct::do_falsename ) + std::string::string(v32, *(char **)(v3[2] + 28), (int)v30); + else + v9(v32, (int)v3); + v10 = *(_DWORD *)(v32[0] - 12); + *(_DWORD *)(this + 32) = v10; + v27 = (std::string *)operator new[](v10); + std::string::copy(v32, v27, *(char **)(this + 32), 0, v25); + v11 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v11 == std::numpunct::do_decimal_point ) + v12 = *(_BYTE *)(v3[2] + 36); + else + v12 = v11((int)v3); + *(_BYTE *)(this + 36) = v12; + v13 = *(int (__fastcall **)(int))(*v3 + 12); + if ( v13 == std::numpunct::do_thousands_sep ) + v14 = *(_BYTE *)(v3[2] + 37); + else + v14 = v13((int)v3); + *(_BYTE *)(this + 37) = v14; + v29 = std::use_facet>(a2); + v15 = v29[28]; + v16 = std::__num_base::_S_atoms_out[0]; + if ( v15 == 1 ) + goto LABEL_16; + if ( v15 ) + { + v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); + if ( (char *)v17 == (char *)std::ctype::do_widen ) + { +LABEL_16: + *(_DWORD *)(this + 38) = *(_DWORD *)v16; + *(_DWORD *)(this + 42) = *((_DWORD *)v16 + 1); + *(_DWORD *)(this + 46) = *((_DWORD *)v16 + 2); + *(_DWORD *)(this + 50) = *((_DWORD *)v16 + 3); + *(_DWORD *)(this + 54) = *((_DWORD *)v16 + 4); + *(_DWORD *)(this + 58) = *((_DWORD *)v16 + 5); + *(_DWORD *)(this + 62) = *((_DWORD *)v16 + 6); + *(_DWORD *)(this + 66) = *((_DWORD *)v16 + 7); + *(_DWORD *)(this + 70) = *((_DWORD *)v16 + 8); + goto LABEL_17; + } + } + else + { + std::ctype::_M_widen_init((int)v29); + v17 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); + if ( (char *)v17 == (char *)std::ctype::do_widen ) + goto LABEL_16; + } + v17(v29, v16, v16 + 36, this + 38); +LABEL_17: + v18 = std::__num_base::_S_atoms_in[0]; + v19 = v29[28]; + if ( v19 == 1 ) + { +LABEL_20: + *(_DWORD *)(this + 74) = *(_DWORD *)v18; + *(_DWORD *)(this + 78) = *((_DWORD *)v18 + 1); + *(_DWORD *)(this + 82) = *((_DWORD *)v18 + 2); + *(_DWORD *)(this + 86) = *((_DWORD *)v18 + 3); + *(_DWORD *)(this + 90) = *((_DWORD *)v18 + 4); + *(_DWORD *)(this + 94) = *((_DWORD *)v18 + 5); + *(_WORD *)(this + 98) = *((_WORD *)v18 + 12); + goto LABEL_21; + } + if ( v19 ) + { + v20 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); + if ( (char *)v20 == (char *)std::ctype::do_widen ) + goto LABEL_20; + } + else + { + std::ctype::_M_widen_init((int)v29); + v20 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v29 + 28); + if ( (char *)v20 == (char *)std::ctype::do_widen ) + goto LABEL_20; + } + v20(v29, v18, v18 + 26, this + 74); +LABEL_21: + *(_BYTE *)(this + 100) = 1; + *(_DWORD *)(this + 8) = v28; + *(_DWORD *)(this + 20) = v26; + *(_DWORD *)(this + 28) = v27; + if ( (_UNKNOWN *)v32[0] == &unk_4E93FC ) + { + v21 = v31 - 3; + if ( v31 == (_DWORD *)&unk_4E93FC ) + goto LABEL_23; + } + else + { + std::string::_Rep::_M_dispose((volatile signed __int32 *)(v32[0] - 12), (int)v30); + v21 = v31 - 3; + if ( v31 == (_DWORD *)&unk_4E93FC ) + { +LABEL_23: + v22 = (volatile signed __int32 *)(*(_DWORD *)&v30[1] - 12); + if ( *(_UNKNOWN **)&v30[1] == &unk_4E93FC ) + return; +LABEL_36: + std::string::_Rep::_M_dispose(v22, (int)v30); + return; + } + } + std::string::_Rep::_M_dispose(v21, (int)v30); + v22 = (volatile signed __int32 *)(*(_DWORD *)&v30[1] - 12); + if ( *(_UNKNOWN **)&v30[1] != &unk_4E93FC ) + goto LABEL_36; +} +// 4AC691: variable 'v23' is possibly undefined +// 4AC70F: variable 'v24' is possibly undefined +// 4AC770: variable 'v25' is possibly undefined +// 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; + +//----- (004ACB30) -------------------------------------------------------- +int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F65A0; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 16) = 0; + this[1] = a2 != 0; + result = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + *((_WORD *)this + 18) = 0; + *((_BYTE *)this + 100) = 0; + return result; +} +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (004ACB80) -------------------------------------------------------- +int __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F65A0; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 16) = 0; + this[1] = a2 != 0; + result = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + *((_WORD *)this + 18) = 0; + *((_BYTE *)this + 100) = 0; + return result; +} +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (004ACBD0) -------------------------------------------------------- +void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__numpunct_cache::~__numpunct_cache(v2); + operator delete(a1); +} +// 4ACBD7: variable 'v2' is possibly undefined + +//----- (004ACC00) -------------------------------------------------------- +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + int v2; // ebx + bool v3; // zf + + v2 = v1; + v3 = *(_BYTE *)(v1 + 100) == 0; + *(_DWORD *)v1 = &off_4F65A0; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( *(_DWORD *)(v2 + 20) ) + operator delete[](*(void **)(v2 + 20)); + if ( *(_DWORD *)(v2 + 28) ) + operator delete[](*(void **)(v2 + 28)); + } + std::locale::facet::~facet(a1); +} +// 4ACC01: variable 'v1' is possibly undefined +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (004ACC50) -------------------------------------------------------- +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + int v2; // ebx + bool v3; // zf + + v2 = v1; + v3 = *(_BYTE *)(v1 + 100) == 0; + *(_DWORD *)v1 = &off_4F65A0; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( *(_DWORD *)(v2 + 20) ) + operator delete[](*(void **)(v2 + 20)); + if ( *(_DWORD *)(v2 + 28) ) + operator delete[](*(void **)(v2 + 28)); + } + std::locale::facet::~facet(a1); +} +// 4ACC51: variable 'v1' is possibly undefined +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (004ACCA0) -------------------------------------------------------- +void __thiscall std::__numpunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // esi + _DWORD *(__thiscall *v4)(char *, int); // eax + unsigned int v5; // eax + std::string *v6; // edi + bool v7; // al + _DWORD *(__thiscall *v8)(_DWORD *, int); // eax + unsigned int v9; // eax + _DWORD *(__thiscall *v10)(int *, int); // eax + unsigned int v11; // eax + int v12; // edx + int (__fastcall *v13)(int); // eax + __int16 v14; // ax + int (__fastcall *v15)(int); // eax + __int16 v16; // ax + void *v17; // esi + volatile signed __int32 *v18; // ecx + volatile signed __int32 *v19; // ecx + unsigned int v20; // [esp+Ch] [ebp-3Ch] + wchar_t *v21; // [esp+18h] [ebp-30h] + wchar_t *v22; // [esp+1Ch] [ebp-2Ch] + char v23[5]; // [esp+23h] [ebp-25h] BYREF + _DWORD *v24; // [esp+28h] [ebp-20h] BYREF + int v25[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = *(_DWORD *(__thiscall **)(char *, int))(*v3 + 16); + if ( (char *)v4 == (char *)std::numpunct::do_grouping ) + std::string::string(&v23[1], *(char **)(v3[2] + 8), (int)v25); + else + v4(&v23[1], (int)v3); + v5 = *(_DWORD *)(*(_DWORD *)&v23[1] - 12); + *(_DWORD *)(this + 12) = v5; + v6 = (std::string *)operator new[](v5); + std::string::copy(&v23[1], v6, *(char **)(this + 12), 0, v20); + v7 = 0; + if ( *(_DWORD *)(this + 12) ) + v7 = (unsigned __int8)(*(_BYTE *)v6 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v7; + v8 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); + if ( v8 == std::numpunct::do_truename ) + std::wstring::basic_string(&v24, *(wchar_t **)(v3[2] + 20), (int)v25); + else + v8(&v24, (int)v3); + v9 = *(v24 - 3); + *(_DWORD *)(this + 24) = v9; + if ( v9 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v21 = (wchar_t *)operator new[](2 * v9); + std::wstring::copy(&v24, v21, *(_DWORD *)(this + 24), 0); + v10 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 24); + if ( v10 == std::numpunct::do_falsename ) + std::wstring::basic_string(v25, *(wchar_t **)(v3[2] + 28), (int)v23); + else + v10(v25, (int)v3); + v11 = *(_DWORD *)(v25[0] - 12); + *(_DWORD *)(this + 32) = v11; + if ( v11 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v22 = (wchar_t *)operator new[](2 * v11); + std::wstring::copy(v25, v22, *(_DWORD *)(this + 32), 0); + v12 = *v3; + v13 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v13 == std::numpunct::do_decimal_point ) + { + v14 = *(_WORD *)(v3[2] + 36); + } + else + { + v14 = v13((int)v3); + v12 = *v3; + } + *(_WORD *)(this + 36) = v14; + v15 = *(int (__fastcall **)(int))(v12 + 12); + if ( v15 == std::numpunct::do_thousands_sep ) + v16 = *(_WORD *)(v3[2] + 38); + else + v16 = v15((int)v3); + *(_WORD *)(this + 38) = v16; + v17 = std::use_facet>(a2); + (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v17 + 44))( + v17, + std::__num_base::_S_atoms_out[0], + std::__num_base::_S_atoms_out[0] + 36, + this + 40); + (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v17 + 44))( + v17, + std::__num_base::_S_atoms_in[0], + std::__num_base::_S_atoms_in[0] + 26, + this + 112); + *(_DWORD *)(this + 8) = v6; + *(_BYTE *)(this + 164) = 1; + *(_DWORD *)(this + 20) = v21; + *(_DWORD *)(this + 28) = v22; + if ( (_UNKNOWN *)v25[0] == &unk_4E93EC ) + { + v18 = v24 - 3; + if ( v24 == (_DWORD *)&unk_4E93EC ) + goto LABEL_17; + } + else + { + std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v25[0] - 12), (int)v23); + v18 = v24 - 3; + if ( v24 == (_DWORD *)&unk_4E93EC ) + { +LABEL_17: + v19 = (volatile signed __int32 *)(*(_DWORD *)&v23[1] - 12); + if ( *(_UNKNOWN **)&v23[1] == &unk_4E93FC ) + return; +LABEL_26: + std::string::_Rep::_M_dispose(v19, (int)v23); + return; + } + } + std::wstring::_Rep::_M_dispose(v18, (int)v23); + v19 = (volatile signed __int32 *)(*(_DWORD *)&v23[1] - 12); + if ( *(_UNKNOWN **)&v23[1] != &unk_4E93FC ) + goto LABEL_26; +} +// 4ACD0E: variable 'v20' is possibly undefined +// 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; + +//----- (004AD0E0) -------------------------------------------------------- +BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F65B0; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + *((_BYTE *)this + 164) = 0; + return result; +} +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (004AD140) -------------------------------------------------------- +BOOL __thiscall std::__numpunct_cache::__numpunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F65B0; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + *((_BYTE *)this + 164) = 0; + return result; +} +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (004AD1A0) -------------------------------------------------------- +void __fastcall std::__numpunct_cache::~__numpunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__numpunct_cache::~__numpunct_cache(v2); + operator delete(a1); +} +// 4AD1A7: variable 'v2' is possibly undefined + +//----- (004AD1D0) -------------------------------------------------------- +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + int v2; // ebx + bool v3; // zf + + v2 = v1; + v3 = *(_BYTE *)(v1 + 164) == 0; + *(_DWORD *)v1 = &off_4F65B0; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( *(_DWORD *)(v2 + 20) ) + operator delete[](*(void **)(v2 + 20)); + if ( *(_DWORD *)(v2 + 28) ) + operator delete[](*(void **)(v2 + 28)); + } + std::locale::facet::~facet(a1); +} +// 4AD1D1: variable 'v1' is possibly undefined +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (004AD220) -------------------------------------------------------- +void __cdecl std::__numpunct_cache::~__numpunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + int v2; // ebx + bool v3; // zf + + v2 = v1; + v3 = *(_BYTE *)(v1 + 164) == 0; + *(_DWORD *)v1 = &off_4F65B0; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( *(_DWORD *)(v2 + 20) ) + operator delete[](*(void **)(v2 + 20)); + if ( *(_DWORD *)(v2 + 28) ) + operator delete[](*(void **)(v2 + 28)); + } + std::locale::facet::~facet(a1); +} +// 4AD221: variable 'v1' is possibly undefined +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (004AD270) -------------------------------------------------------- +_DWORD *__userpurge std::invalid_argument::invalid_argument@( + _DWORD *a1@, + std::invalid_argument *this, + const char *a3) +{ + _DWORD *result; // eax + const char *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_4F65C0; + return result; +} +// 4AD27D: variable 'v5' is possibly undefined +// 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); + +//----- (004AD2A0) -------------------------------------------------------- +_DWORD *__thiscall std::invalid_argument::invalid_argument(_DWORD *this, int a2) +{ + _DWORD *result; // eax + + result = std::logic_error::logic_error(this, a2); + *this = &off_4F65C0; + return result; +} +// 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); + +//----- (004AD2D0) -------------------------------------------------------- +unsigned int *__userpurge std::invalid_argument::invalid_argument@( + _DWORD *a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int *result; // eax + const std::string *v5; // [esp+4h] [ebp-18h] + + result = std::logic_error::logic_error((int)a1, this, v5); + *a1 = &off_4F65C0; + return result; +} +// 4AD2DD: variable 'v5' is possibly undefined +// 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); + +//----- (004AD300) -------------------------------------------------------- +void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) +{ + *a1 = &off_4F65C0; + std::logic_error::~logic_error(a1); + operator delete(a1); +} +// 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); + +//----- (004AD320) -------------------------------------------------------- +void __fastcall std::invalid_argument::~invalid_argument(_DWORD *a1) +{ + *a1 = &off_4F65C0; + std::logic_error::~logic_error(a1); +} +// 4F65C0: using guessed type void (__cdecl *off_4F65C0)(std::invalid_argument *__hidden this); + +//----- (004AD330) -------------------------------------------------------- +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F65D4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + this[4] = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + this[15] = 0; + this[16] = 0; + this[17] = 0; + this[18] = 0; + this[19] = 0; + this[20] = 0; + this[21] = 0; + this[22] = 0; + this[23] = 0; + this[24] = 0; + this[25] = 0; + this[26] = 0; + this[27] = 0; + this[28] = 0; + this[29] = 0; + this[30] = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + this[37] = 0; + this[38] = 0; + this[39] = 0; + this[40] = 0; + this[41] = 0; + this[42] = 0; + this[43] = 0; + this[44] = 0; + this[45] = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + *((_BYTE *)this + 196) = 0; + return result; +} +// 4F65D4: using guessed type int (*off_4F65D4)(); + +//----- (004AD4D0) -------------------------------------------------------- +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F65D4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + this[4] = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + this[15] = 0; + this[16] = 0; + this[17] = 0; + this[18] = 0; + this[19] = 0; + this[20] = 0; + this[21] = 0; + this[22] = 0; + this[23] = 0; + this[24] = 0; + this[25] = 0; + this[26] = 0; + this[27] = 0; + this[28] = 0; + this[29] = 0; + this[30] = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + this[37] = 0; + this[38] = 0; + this[39] = 0; + this[40] = 0; + this[41] = 0; + this[42] = 0; + this[43] = 0; + this[44] = 0; + this[45] = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + *((_BYTE *)this + 196) = 0; + return result; +} +// 4F65D4: using guessed type int (*off_4F65D4)(); + +//----- (004AD670) -------------------------------------------------------- +void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F65D4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4AD67C: variable 'v2' is possibly undefined +// 4F65D4: using guessed type int (*off_4F65D4)(); + +//----- (004AD690) -------------------------------------------------------- +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F65D4; + std::locale::facet::~facet(a1); +} +// 4AD690: variable 'v1' is possibly undefined +// 4F65D4: using guessed type int (*off_4F65D4)(); + +//----- (004AD6A0) -------------------------------------------------------- +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F65D4; + std::locale::facet::~facet(a1); +} +// 4AD6A0: variable 'v1' is possibly undefined +// 4F65D4: using guessed type int (*off_4F65D4)(); + +//----- (004AD6B0) -------------------------------------------------------- +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F65E4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + this[4] = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + this[15] = 0; + this[16] = 0; + this[17] = 0; + this[18] = 0; + this[19] = 0; + this[20] = 0; + this[21] = 0; + this[22] = 0; + this[23] = 0; + this[24] = 0; + this[25] = 0; + this[26] = 0; + this[27] = 0; + this[28] = 0; + this[29] = 0; + this[30] = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + this[37] = 0; + this[38] = 0; + this[39] = 0; + this[40] = 0; + this[41] = 0; + this[42] = 0; + this[43] = 0; + this[44] = 0; + this[45] = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + *((_BYTE *)this + 196) = 0; + return result; +} +// 4F65E4: using guessed type int (*off_4F65E4)(); + +//----- (004AD850) -------------------------------------------------------- +BOOL __thiscall std::__timepunct_cache::__timepunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F65E4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + this[4] = 0; + this[1] = result; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + this[15] = 0; + this[16] = 0; + this[17] = 0; + this[18] = 0; + this[19] = 0; + this[20] = 0; + this[21] = 0; + this[22] = 0; + this[23] = 0; + this[24] = 0; + this[25] = 0; + this[26] = 0; + this[27] = 0; + this[28] = 0; + this[29] = 0; + this[30] = 0; + this[31] = 0; + this[32] = 0; + this[33] = 0; + this[34] = 0; + this[35] = 0; + this[36] = 0; + this[37] = 0; + this[38] = 0; + this[39] = 0; + this[40] = 0; + this[41] = 0; + this[42] = 0; + this[43] = 0; + this[44] = 0; + this[45] = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + *((_BYTE *)this + 196) = 0; + return result; +} +// 4F65E4: using guessed type int (*off_4F65E4)(); + +//----- (004AD9F0) -------------------------------------------------------- +void __fastcall std::__timepunct_cache::~__timepunct_cache(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F65E4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4AD9FC: variable 'v2' is possibly undefined +// 4F65E4: using guessed type int (*off_4F65E4)(); + +//----- (004ADA10) -------------------------------------------------------- +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F65E4; + std::locale::facet::~facet(a1); +} +// 4ADA10: variable 'v1' is possibly undefined +// 4F65E4: using guessed type int (*off_4F65E4)(); + +//----- (004ADA20) -------------------------------------------------------- +void __cdecl std::__timepunct_cache::~__timepunct_cache(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F65E4; + std::locale::facet::~facet(a1); +} +// 4ADA20: variable 'v1' is possibly undefined +// 4F65E4: using guessed type int (*off_4F65E4)(); + +//----- (004ADA30) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5E90; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F65F4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5E90: using guessed type int (*off_4F5E90)(); +// 4F65F4: using guessed type int (*off_4F65F4)(); + +//----- (004ADB30) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5E90; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F65F4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5E90: using guessed type int (*off_4F5E90)(); +// 4F65F4: using guessed type int (*off_4F65F4)(); + +//----- (004ADC30) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5E90; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F65F4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5E90: using guessed type int (*off_4F5E90)(); +// 4F65F4: using guessed type int (*off_4F65F4)(); + +//----- (004ADD30) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5E90; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F65F4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5E90: using guessed type int (*off_4F5E90)(); +// 4F65F4: using guessed type int (*off_4F65F4)(); + +//----- (004ADE30) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F65F4; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4ADE3C: variable 'v2' is possibly undefined +// 4F65F4: using guessed type int (*off_4F65F4)(); + +//----- (004ADE50) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F65F4; + std::moneypunct::~moneypunct(a1); +} +// 4ADE50: variable 'v1' is possibly undefined +// 4F65F4: using guessed type int (*off_4F65F4)(); + +//----- (004ADE60) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F65F4; + std::moneypunct::~moneypunct(a1); +} +// 4ADE60: variable 'v1' is possibly undefined +// 4F65F4: using guessed type int (*off_4F65F4)(); + +//----- (004ADE70) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5EC4; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F6628; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); +// 4F6628: using guessed type int (*off_4F6628)(); + +//----- (004ADF70) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5EC4; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F6628; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); +// 4F6628: using guessed type int (*off_4F6628)(); + +//----- (004AE070) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5EC4; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F6628; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); +// 4F6628: using guessed type int (*off_4F6628)(); + +//----- (004AE170) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5EC4; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F6628; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5EC4: using guessed type int (*off_4F5EC4)(); +// 4F6628: using guessed type int (*off_4F6628)(); + +//----- (004AE270) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6628; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4AE27C: variable 'v2' is possibly undefined +// 4F6628: using guessed type int (*off_4F6628)(); + +//----- (004AE290) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6628; + std::moneypunct::~moneypunct(a1); +} +// 4AE290: variable 'v1' is possibly undefined +// 4F6628: using guessed type int (*off_4F6628)(); + +//----- (004AE2A0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6628; + std::moneypunct::~moneypunct(a1); +} +// 4AE2A0: variable 'v1' is possibly undefined +// 4F6628: using guessed type int (*off_4F6628)(); + +//----- (004AE2B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5EF8; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F665C; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); +// 4F665C: using guessed type int (*off_4F665C)(); + +//----- (004AE3B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5EF8; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F665C; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); +// 4F665C: using guessed type int (*off_4F665C)(); + +//----- (004AE4B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5EF8; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F665C; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); +// 4F665C: using guessed type int (*off_4F665C)(); + +//----- (004AE5B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5EF8; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F665C; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5EF8: using guessed type int (*off_4F5EF8)(); +// 4F665C: using guessed type int (*off_4F665C)(); + +//----- (004AE6B0) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F665C; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4AE6BC: variable 'v2' is possibly undefined +// 4F665C: using guessed type int (*off_4F665C)(); + +//----- (004AE6D0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F665C; + std::moneypunct::~moneypunct(a1); +} +// 4AE6D0: variable 'v1' is possibly undefined +// 4F665C: using guessed type int (*off_4F665C)(); + +//----- (004AE6E0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F665C; + std::moneypunct::~moneypunct(a1); +} +// 4AE6E0: variable 'v1' is possibly undefined +// 4F665C: using guessed type int (*off_4F665C)(); + +//----- (004AE6F0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5F2C; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F6690; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); +// 4F6690: using guessed type int (*off_4F6690)(); + +//----- (004AE7F0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5F2C; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F6690; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); +// 4F6690: using guessed type int (*off_4F6690)(); + +//----- (004AE8F0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5F2C; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F6690; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); +// 4F6690: using guessed type int (*off_4F6690)(); + +//----- (004AE9F0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5F2C; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F6690; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5F2C: using guessed type int (*off_4F5F2C)(); +// 4F6690: using guessed type int (*off_4F6690)(); + +//----- (004AEAF0) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6690; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4AEAFC: variable 'v2' is possibly undefined +// 4F6690: using guessed type int (*off_4F6690)(); + +//----- (004AEB10) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6690; + std::moneypunct::~moneypunct(a1); +} +// 4AEB10: variable 'v1' is possibly undefined +// 4F6690: using guessed type int (*off_4F6690)(); + +//----- (004AEB20) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6690; + std::moneypunct::~moneypunct(a1); +} +// 4AEB20: variable 'v1' is possibly undefined +// 4F6690: using guessed type int (*off_4F6690)(); + +//----- (004AEB30) -------------------------------------------------------- +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // esi + int (__fastcall *v4)(int); // eax + char v5; // al + int (__fastcall *v6)(int); // eax + char v7; // al + int v8; // edx + int (__fastcall *v9)(int); // eax + int v10; // eax + _DWORD *(__thiscall *v11)(char *, int); // eax + unsigned int v12; // eax + bool v13; // al + _DWORD *(__thiscall *v14)(_DWORD *, int); // eax + unsigned int v15; // eax + _DWORD *(__thiscall *v16)(_DWORD *, int); // eax + unsigned int v17; // eax + _DWORD *(__thiscall *v18)(int *, int); // eax + unsigned int v19; // eax + int (__fastcall *v20)(int); // eax + int v21; // eax + int (__fastcall *v22)(int); // eax + int v23; // eax + _BYTE *v24; // esi + char *v25; // edi + char v26; // al + void (__thiscall *v27)(_BYTE *, char *, char *, int); // eax + volatile signed __int32 *v28; // ecx + volatile signed __int32 *v29; // ecx + unsigned int v30; // [esp+Ch] [ebp-5Ch] + unsigned int v31; // [esp+Ch] [ebp-5Ch] + unsigned int v32; // [esp+Ch] [ebp-5Ch] + unsigned int v33; // [esp+Ch] [ebp-5Ch] + std::string *v34; // [esp+20h] [ebp-48h] + std::string *v35; // [esp+24h] [ebp-44h] + std::string *v36; // [esp+28h] [ebp-40h] + std::string *v37; // [esp+2Ch] [ebp-3Ch] + char v38[5]; // [esp+3Fh] [ebp-29h] BYREF + _DWORD *v39; // [esp+44h] [ebp-24h] BYREF + _DWORD *v40; // [esp+48h] [ebp-20h] BYREF + int v41[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v4 == std::moneypunct::do_decimal_point ) + v5 = *(_BYTE *)(v3[2] + 17); + else + v5 = v4((int)v3); + *(_BYTE *)(this + 17) = v5; + v6 = *(int (__fastcall **)(int))(*v3 + 12); + if ( v6 == std::moneypunct::do_thousands_sep ) + v7 = *(_BYTE *)(v3[2] + 18); + else + v7 = v6((int)v3); + *(_BYTE *)(this + 18) = v7; + v8 = *v3; + v9 = *(int (__fastcall **)(int))(*v3 + 32); + if ( v9 == std::moneypunct::do_frac_digits ) + { + v10 = *(_DWORD *)(v3[2] + 44); + } + else + { + v10 = v9((int)v3); + v8 = *v3; + } + *(_DWORD *)(this + 44) = v10; + v11 = *(_DWORD *(__thiscall **)(char *, int))(v8 + 16); + if ( (char *)v11 == (char *)std::moneypunct::do_grouping ) + std::string::string(&v38[1], *(char **)(v3[2] + 8), (int)v41); + else + v11(&v38[1], (int)v3); + v12 = *(_DWORD *)(*(_DWORD *)&v38[1] - 12); + *(_DWORD *)(this + 12) = v12; + v37 = (std::string *)operator new[](v12); + std::string::copy(&v38[1], v37, *(char **)(this + 12), 0, v30); + v13 = 0; + if ( *(_DWORD *)(this + 12) ) + v13 = (unsigned __int8)(*(_BYTE *)v37 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v13; + v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); + if ( v14 == std::moneypunct::do_curr_symbol ) + std::string::string(&v39, *(char **)(v3[2] + 20), (int)v41); + else + v14(&v39, (int)v3); + v15 = *(v39 - 3); + *(_DWORD *)(this + 24) = v15; + v34 = (std::string *)operator new[](v15); + std::string::copy(&v39, v34, *(char **)(this + 24), 0, v31); + v16 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 24); + if ( v16 == std::moneypunct::do_positive_sign ) + std::string::string(&v40, *(char **)(v3[2] + 28), (int)v41); + else + v16(&v40, (int)v3); + v17 = *(v40 - 3); + *(_DWORD *)(this + 32) = v17; + v35 = (std::string *)operator new[](v17); + std::string::copy(&v40, v35, *(char **)(this + 32), 0, v32); + v18 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 28); + if ( v18 == std::moneypunct::do_negative_sign ) + std::string::string(v41, *(char **)(v3[2] + 36), (int)v38); + else + v18(v41, (int)v3); + v19 = *(_DWORD *)(v41[0] - 12); + *(_DWORD *)(this + 40) = v19; + v36 = (std::string *)operator new[](v19); + std::string::copy(v41, v36, *(char **)(this + 40), 0, v33); + v20 = *(int (__fastcall **)(int))(*v3 + 36); + if ( v20 == std::moneypunct::do_pos_format ) + v21 = *(_DWORD *)(v3[2] + 48); + else + v21 = v20((int)v3); + *(_DWORD *)(this + 48) = v21; + v22 = *(int (__fastcall **)(int))(*v3 + 40); + if ( v22 == std::moneypunct::do_neg_format ) + v23 = *(_DWORD *)(v3[2] + 52); + else + v23 = v22((int)v3); + *(_DWORD *)(this + 52) = v23; + v24 = std::use_facet>(a2); + v25 = std::money_base::_S_atoms; + v26 = v24[28]; + if ( v26 == 1 ) + goto LABEL_24; + if ( v26 ) + { + v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); + if ( (char *)v27 == (char *)std::ctype::do_widen ) + { +LABEL_24: + *(_DWORD *)(this + 56) = *(_DWORD *)v25; + *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); + *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); + *(_BYTE *)(this + 66) = v25[10]; + goto LABEL_25; + } + } + else + { + std::ctype::_M_widen_init((int)v24); + v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); + if ( (char *)v27 == (char *)std::ctype::do_widen ) + goto LABEL_24; + } + v27(v24, v25, v25 + 11, this + 56); +LABEL_25: + *(_BYTE *)(this + 67) = 1; + *(_DWORD *)(this + 8) = v37; + *(_DWORD *)(this + 20) = v34; + *(_DWORD *)(this + 28) = v35; + *(_DWORD *)(this + 36) = v36; + if ( (_UNKNOWN *)v41[0] != &unk_4E93FC ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)(v41[0] - 12), (int)v38); + if ( v40 == (_DWORD *)&unk_4E93FC ) + { + v28 = v39 - 3; + if ( v39 == (_DWORD *)&unk_4E93FC ) + goto LABEL_29; + } + else + { + std::string::_Rep::_M_dispose(v40 - 3, (int)v38); + v28 = v39 - 3; + if ( v39 == (_DWORD *)&unk_4E93FC ) + { +LABEL_29: + v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); + if ( *(_UNKNOWN **)&v38[1] == &unk_4E93FC ) + return; +LABEL_44: + std::string::_Rep::_M_dispose(v29, (int)v38); + return; + } + } + std::string::_Rep::_M_dispose(v28, (int)v38); + v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); + if ( *(_UNKNOWN **)&v38[1] != &unk_4E93FC ) + goto LABEL_44; +} +// 4AEBEA: variable 'v30' is possibly undefined +// 4AEC66: variable 'v31' is possibly undefined +// 4AECC5: variable 'v32' is possibly undefined +// 4AED24: variable 'v33' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; + +//----- (004AF110) -------------------------------------------------------- +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F66C4; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 18) = 0; + this[1] = a2 != 0; + result = 0; + *((_WORD *)this + 8) = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + *((_BYTE *)this + 67) = 0; + return result; +} +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (004AF190) -------------------------------------------------------- +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F66C4; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 18) = 0; + this[1] = a2 != 0; + result = 0; + *((_WORD *)this + 8) = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + *((_BYTE *)this + 67) = 0; + return result; +} +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (004AF210) -------------------------------------------------------- +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__moneypunct_cache::~__moneypunct_cache(v2); + operator delete(a1); +} +// 4AF217: variable 'v2' is possibly undefined + +//----- (004AF240) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 67) == 0; + *(_DWORD *)v1 = &off_4F66C4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[5] ) + operator delete[](v2[5]); + if ( v2[7] ) + operator delete[](v2[7]); + if ( v2[9] ) + operator delete[](v2[9]); + } + std::locale::facet::~facet(a1); +} +// 4AF241: variable 'v1' is possibly undefined +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (004AF2A0) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 67) == 0; + *(_DWORD *)v1 = &off_4F66C4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[5] ) + operator delete[](v2[5]); + if ( v2[7] ) + operator delete[](v2[7]); + if ( v2[9] ) + operator delete[](v2[9]); + } + std::locale::facet::~facet(a1); +} +// 4AF2A1: variable 'v1' is possibly undefined +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (004AF300) -------------------------------------------------------- +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // esi + int (__fastcall *v4)(int); // eax + char v5; // al + int (__fastcall *v6)(int); // eax + char v7; // al + int v8; // edx + int (__fastcall *v9)(int); // eax + int v10; // eax + _DWORD *(__thiscall *v11)(char *, int); // eax + unsigned int v12; // eax + bool v13; // al + _DWORD *(__thiscall *v14)(_DWORD *, int); // eax + unsigned int v15; // eax + _DWORD *(__thiscall *v16)(_DWORD *, int); // eax + unsigned int v17; // eax + _DWORD *(__thiscall *v18)(int *, int); // eax + unsigned int v19; // eax + int (__fastcall *v20)(int); // eax + int v21; // eax + int (__fastcall *v22)(int); // eax + int v23; // eax + _BYTE *v24; // esi + char *v25; // edi + char v26; // al + void (__thiscall *v27)(_BYTE *, char *, char *, int); // eax + volatile signed __int32 *v28; // ecx + volatile signed __int32 *v29; // ecx + unsigned int v30; // [esp+Ch] [ebp-5Ch] + unsigned int v31; // [esp+Ch] [ebp-5Ch] + unsigned int v32; // [esp+Ch] [ebp-5Ch] + unsigned int v33; // [esp+Ch] [ebp-5Ch] + std::string *v34; // [esp+20h] [ebp-48h] + std::string *v35; // [esp+24h] [ebp-44h] + std::string *v36; // [esp+28h] [ebp-40h] + std::string *v37; // [esp+2Ch] [ebp-3Ch] + char v38[5]; // [esp+3Fh] [ebp-29h] BYREF + _DWORD *v39; // [esp+44h] [ebp-24h] BYREF + _DWORD *v40; // [esp+48h] [ebp-20h] BYREF + int v41[7]; // [esp+4Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v4 == std::moneypunct::do_decimal_point ) + v5 = *(_BYTE *)(v3[2] + 17); + else + v5 = v4((int)v3); + *(_BYTE *)(this + 17) = v5; + v6 = *(int (__fastcall **)(int))(*v3 + 12); + if ( v6 == std::moneypunct::do_thousands_sep ) + v7 = *(_BYTE *)(v3[2] + 18); + else + v7 = v6((int)v3); + *(_BYTE *)(this + 18) = v7; + v8 = *v3; + v9 = *(int (__fastcall **)(int))(*v3 + 32); + if ( v9 == std::moneypunct::do_frac_digits ) + { + v10 = *(_DWORD *)(v3[2] + 44); + } + else + { + v10 = v9((int)v3); + v8 = *v3; + } + *(_DWORD *)(this + 44) = v10; + v11 = *(_DWORD *(__thiscall **)(char *, int))(v8 + 16); + if ( (char *)v11 == (char *)std::moneypunct::do_grouping ) + std::string::string(&v38[1], *(char **)(v3[2] + 8), (int)v41); + else + v11(&v38[1], (int)v3); + v12 = *(_DWORD *)(*(_DWORD *)&v38[1] - 12); + *(_DWORD *)(this + 12) = v12; + v37 = (std::string *)operator new[](v12); + std::string::copy(&v38[1], v37, *(char **)(this + 12), 0, v30); + v13 = 0; + if ( *(_DWORD *)(this + 12) ) + v13 = (unsigned __int8)(*(_BYTE *)v37 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v13; + v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 20); + if ( v14 == std::moneypunct::do_curr_symbol ) + std::string::string(&v39, *(char **)(v3[2] + 20), (int)v41); + else + v14(&v39, (int)v3); + v15 = *(v39 - 3); + *(_DWORD *)(this + 24) = v15; + v34 = (std::string *)operator new[](v15); + std::string::copy(&v39, v34, *(char **)(this + 24), 0, v31); + v16 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v3 + 24); + if ( v16 == std::moneypunct::do_positive_sign ) + std::string::string(&v40, *(char **)(v3[2] + 28), (int)v41); + else + v16(&v40, (int)v3); + v17 = *(v40 - 3); + *(_DWORD *)(this + 32) = v17; + v35 = (std::string *)operator new[](v17); + std::string::copy(&v40, v35, *(char **)(this + 32), 0, v32); + v18 = *(_DWORD *(__thiscall **)(int *, int))(*v3 + 28); + if ( v18 == std::moneypunct::do_negative_sign ) + std::string::string(v41, *(char **)(v3[2] + 36), (int)v38); + else + v18(v41, (int)v3); + v19 = *(_DWORD *)(v41[0] - 12); + *(_DWORD *)(this + 40) = v19; + v36 = (std::string *)operator new[](v19); + std::string::copy(v41, v36, *(char **)(this + 40), 0, v33); + v20 = *(int (__fastcall **)(int))(*v3 + 36); + if ( v20 == std::moneypunct::do_pos_format ) + v21 = *(_DWORD *)(v3[2] + 48); + else + v21 = v20((int)v3); + *(_DWORD *)(this + 48) = v21; + v22 = *(int (__fastcall **)(int))(*v3 + 40); + if ( v22 == std::moneypunct::do_neg_format ) + v23 = *(_DWORD *)(v3[2] + 52); + else + v23 = v22((int)v3); + *(_DWORD *)(this + 52) = v23; + v24 = std::use_facet>(a2); + v25 = std::money_base::_S_atoms; + v26 = v24[28]; + if ( v26 == 1 ) + goto LABEL_24; + if ( v26 ) + { + v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); + if ( (char *)v27 == (char *)std::ctype::do_widen ) + { +LABEL_24: + *(_DWORD *)(this + 56) = *(_DWORD *)v25; + *(_DWORD *)(this + 60) = *((_DWORD *)v25 + 1); + *(_WORD *)(this + 64) = *((_WORD *)v25 + 4); + *(_BYTE *)(this + 66) = v25[10]; + goto LABEL_25; + } + } + else + { + std::ctype::_M_widen_init((int)v24); + v27 = *(void (__thiscall **)(_BYTE *, char *, char *, int))(*(_DWORD *)v24 + 28); + if ( (char *)v27 == (char *)std::ctype::do_widen ) + goto LABEL_24; + } + v27(v24, v25, v25 + 11, this + 56); +LABEL_25: + *(_BYTE *)(this + 67) = 1; + *(_DWORD *)(this + 8) = v37; + *(_DWORD *)(this + 20) = v34; + *(_DWORD *)(this + 28) = v35; + *(_DWORD *)(this + 36) = v36; + if ( (_UNKNOWN *)v41[0] != &unk_4E93FC ) + std::string::_Rep::_M_dispose((volatile signed __int32 *)(v41[0] - 12), (int)v38); + if ( v40 == (_DWORD *)&unk_4E93FC ) + { + v28 = v39 - 3; + if ( v39 == (_DWORD *)&unk_4E93FC ) + goto LABEL_29; + } + else + { + std::string::_Rep::_M_dispose(v40 - 3, (int)v38); + v28 = v39 - 3; + if ( v39 == (_DWORD *)&unk_4E93FC ) + { +LABEL_29: + v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); + if ( *(_UNKNOWN **)&v38[1] == &unk_4E93FC ) + return; +LABEL_44: + std::string::_Rep::_M_dispose(v29, (int)v38); + return; + } + } + std::string::_Rep::_M_dispose(v28, (int)v38); + v29 = (volatile signed __int32 *)(*(_DWORD *)&v38[1] - 12); + if ( *(_UNKNOWN **)&v38[1] != &unk_4E93FC ) + goto LABEL_44; +} +// 4AF3BA: variable 'v30' is possibly undefined +// 4AF436: variable 'v31' is possibly undefined +// 4AF495: variable 'v32' is possibly undefined +// 4AF4F4: variable 'v33' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; + +//----- (004AF8E0) -------------------------------------------------------- +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F66D4; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 18) = 0; + this[1] = a2 != 0; + result = 0; + *((_WORD *)this + 8) = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + *((_BYTE *)this + 67) = 0; + return result; +} +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (004AF960) -------------------------------------------------------- +int __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F66D4; + this[2] = 0; + this[3] = 0; + *((_BYTE *)this + 18) = 0; + this[1] = a2 != 0; + result = 0; + *((_WORD *)this + 8) = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + *((_BYTE *)this + 67) = 0; + return result; +} +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (004AF9E0) -------------------------------------------------------- +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__moneypunct_cache::~__moneypunct_cache(v2); + operator delete(a1); +} +// 4AF9E7: variable 'v2' is possibly undefined + +//----- (004AFA10) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 67) == 0; + *(_DWORD *)v1 = &off_4F66D4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[5] ) + operator delete[](v2[5]); + if ( v2[7] ) + operator delete[](v2[7]); + if ( v2[9] ) + operator delete[](v2[9]); + } + std::locale::facet::~facet(a1); +} +// 4AFA11: variable 'v1' is possibly undefined +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (004AFA70) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 67) == 0; + *(_DWORD *)v1 = &off_4F66D4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[5] ) + operator delete[](v2[5]); + if ( v2[7] ) + operator delete[](v2[7]); + if ( v2[9] ) + operator delete[](v2[9]); + } + std::locale::facet::~facet(a1); +} +// 4AFA71: variable 'v1' is possibly undefined +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (004AFAD0) -------------------------------------------------------- +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // eax + _DWORD *v4; // edx + _DWORD *v5; // esi + int (__fastcall *v6)(int); // eax + int (__fastcall *v7)(int); // eax + int (__fastcall *v8)(int); // eax + _DWORD *(__thiscall *v9)(char *, int); // eax + unsigned int v10; // eax + bool v11; // al + _DWORD *(__thiscall *v12)(_DWORD *, int); // eax + unsigned int v13; // eax + _DWORD *(__thiscall *v14)(_DWORD *, int); // eax + unsigned int v15; // eax + _DWORD *(__thiscall *v16)(int *, int); // eax + unsigned int v17; // eax + int (__fastcall *v18)(int); // eax + int v19; // eax + int (__fastcall *v20)(int); // eax + int v21; // eax + void *v22; // eax + volatile signed __int32 *v23; // ecx + volatile signed __int32 *v24; // ecx + __int16 v25; // ax + __int16 v26; // ax + int v27; // eax + _DWORD *v28; // edx + unsigned int v29; // [esp+Ch] [ebp-4Ch] + wchar_t *v30; // [esp+10h] [ebp-48h] + wchar_t *v31; // [esp+14h] [ebp-44h] + wchar_t *v32; // [esp+18h] [ebp-40h] + std::string *v33; // [esp+1Ch] [ebp-3Ch] + char v34[5]; // [esp+2Fh] [ebp-29h] BYREF + _DWORD *v35; // [esp+34h] [ebp-24h] BYREF + _DWORD *v36; // [esp+38h] [ebp-20h] BYREF + int v37[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = (_DWORD *)*v3; + v5 = v3; + v6 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v6 == std::moneypunct::do_decimal_point ) + { + *(_WORD *)(this + 18) = *(_WORD *)(v5[2] + 18); + v7 = (int (__fastcall *)(int))v4[3]; + if ( v7 == std::moneypunct::do_thousands_sep ) + goto LABEL_3; + } + else + { + v25 = v6((int)v5); + v4 = (_DWORD *)*v5; + *(_WORD *)(this + 18) = v25; + v7 = (int (__fastcall *)(int))v4[3]; + if ( v7 == std::moneypunct::do_thousands_sep ) + { +LABEL_3: + *(_WORD *)(this + 20) = *(_WORD *)(v5[2] + 20); + v8 = (int (__fastcall *)(int))v4[8]; + if ( v8 == std::moneypunct::do_frac_digits ) + goto LABEL_4; +LABEL_28: + v27 = v8((int)v5); + v28 = (_DWORD *)*v5; + *(_DWORD *)(this + 48) = v27; + v9 = (_DWORD *(__thiscall *)(char *, int))v28[4]; + if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) + goto LABEL_5; + goto LABEL_29; + } + } + v26 = v7((int)v5); + v4 = (_DWORD *)*v5; + *(_WORD *)(this + 20) = v26; + v8 = (int (__fastcall *)(int))v4[8]; + if ( v8 != std::moneypunct::do_frac_digits ) + goto LABEL_28; +LABEL_4: + *(_DWORD *)(this + 48) = *(_DWORD *)(v5[2] + 48); + v9 = (_DWORD *(__thiscall *)(char *, int))v4[4]; + if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) + { +LABEL_5: + std::string::string(&v34[1], *(char **)(v5[2] + 8), (int)v37); + goto LABEL_6; + } +LABEL_29: + v9(&v34[1], (int)v5); +LABEL_6: + v10 = *(_DWORD *)(*(_DWORD *)&v34[1] - 12); + *(_DWORD *)(this + 12) = v10; + v33 = (std::string *)operator new[](v10); + std::string::copy(&v34[1], v33, *(char **)(this + 12), 0, v29); + v11 = 0; + if ( *(_DWORD *)(this + 12) ) + v11 = (unsigned __int8)(*(_BYTE *)v33 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v11; + v12 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 20); + if ( v12 == std::moneypunct::do_curr_symbol ) + std::wstring::basic_string(&v35, *(wchar_t **)(v5[2] + 24), (int)v37); + else + v12(&v35, (int)v5); + v13 = *(v35 - 3); + *(_DWORD *)(this + 28) = v13; + if ( v13 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v30 = (wchar_t *)operator new[](2 * v13); + std::wstring::copy(&v35, v30, *(_DWORD *)(this + 28), 0); + v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 24); + if ( v14 == std::moneypunct::do_positive_sign ) + std::wstring::basic_string(&v36, *(wchar_t **)(v5[2] + 32), (int)v37); + else + v14(&v36, (int)v5); + v15 = *(v36 - 3); + *(_DWORD *)(this + 36) = v15; + if ( v15 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v31 = (wchar_t *)operator new[](2 * v15); + std::wstring::copy(&v36, v31, *(_DWORD *)(this + 36), 0); + v16 = *(_DWORD *(__thiscall **)(int *, int))(*v5 + 28); + if ( v16 == std::moneypunct::do_negative_sign ) + std::wstring::basic_string(v37, *(wchar_t **)(v5[2] + 40), (int)v34); + else + v16(v37, (int)v5); + v17 = *(_DWORD *)(v37[0] - 12); + *(_DWORD *)(this + 44) = v17; + if ( v17 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v32 = (wchar_t *)operator new[](2 * v17); + std::wstring::copy(v37, v32, *(_DWORD *)(this + 44), 0); + v18 = *(int (__fastcall **)(int))(*v5 + 36); + if ( v18 == std::moneypunct::do_pos_format ) + v19 = *(_DWORD *)(v5[2] + 52); + else + v19 = v18((int)v5); + *(_DWORD *)(this + 52) = v19; + v20 = *(int (__fastcall **)(int))(*v5 + 40); + if ( v20 == std::moneypunct::do_neg_format ) + v21 = *(_DWORD *)(v5[2] + 56); + else + v21 = v20((int)v5); + *(_DWORD *)(this + 56) = v21; + v22 = std::use_facet>(a2); + (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( + v22, + std::money_base::_S_atoms, + std::money_base::_S_atoms + 11, + this + 60); + *(_BYTE *)(this + 82) = 1; + *(_DWORD *)(this + 8) = v33; + *(_DWORD *)(this + 24) = v30; + *(_DWORD *)(this + 32) = v31; + *(_DWORD *)(this + 40) = v32; + if ( (_UNKNOWN *)v37[0] == &unk_4E93EC ) + { + v23 = v36 - 3; + if ( v36 == (_DWORD *)&unk_4E93EC ) + goto LABEL_23; + } + else + { + std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v37[0] - 12), (int)v34); + v23 = v36 - 3; + if ( v36 == (_DWORD *)&unk_4E93EC ) + goto LABEL_23; + } + std::wstring::_Rep::_M_dispose(v23, (int)v34); +LABEL_23: + if ( v35 == (_DWORD *)&unk_4E93EC ) + { + v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); + if ( *(_UNKNOWN **)&v34[1] == &unk_4E93FC ) + return; +LABEL_36: + std::string::_Rep::_M_dispose(v24, (int)v34); + return; + } + std::wstring::_Rep::_M_dispose(v35 - 3, (int)v34); + v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); + if ( *(_UNKNOWN **)&v34[1] != &unk_4E93FC ) + goto LABEL_36; +} +// 4AFB88: variable 'v29' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; + +//----- (004B00B0) -------------------------------------------------------- +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F66E4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + *(_DWORD *)((char *)this + 18) = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + *((_BYTE *)this + 82) = 0; + return result; +} +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (004B0130) -------------------------------------------------------- +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F66E4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + *(_DWORD *)((char *)this + 18) = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + *((_BYTE *)this + 82) = 0; + return result; +} +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (004B01B0) -------------------------------------------------------- +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__moneypunct_cache::~__moneypunct_cache(v2); + operator delete(a1); +} +// 4B01B7: variable 'v2' is possibly undefined + +//----- (004B01E0) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 82) == 0; + *(_DWORD *)v1 = &off_4F66E4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[6] ) + operator delete[](v2[6]); + if ( v2[8] ) + operator delete[](v2[8]); + if ( v2[10] ) + operator delete[](v2[10]); + } + std::locale::facet::~facet(a1); +} +// 4B01E1: variable 'v1' is possibly undefined +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (004B0240) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 82) == 0; + *(_DWORD *)v1 = &off_4F66E4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[6] ) + operator delete[](v2[6]); + if ( v2[8] ) + operator delete[](v2[8]); + if ( v2[10] ) + operator delete[](v2[10]); + } + std::locale::facet::~facet(a1); +} +// 4B0241: variable 'v1' is possibly undefined +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (004B02A0) -------------------------------------------------------- +void __thiscall std::__moneypunct_cache::_M_cache(int this, int a2) +{ + _DWORD *v3; // eax + _DWORD *v4; // edx + _DWORD *v5; // esi + int (__fastcall *v6)(int); // eax + int (__fastcall *v7)(int); // eax + int (__fastcall *v8)(int); // eax + _DWORD *(__thiscall *v9)(char *, int); // eax + unsigned int v10; // eax + bool v11; // al + _DWORD *(__thiscall *v12)(_DWORD *, int); // eax + unsigned int v13; // eax + _DWORD *(__thiscall *v14)(_DWORD *, int); // eax + unsigned int v15; // eax + _DWORD *(__thiscall *v16)(int *, int); // eax + unsigned int v17; // eax + int (__fastcall *v18)(int); // eax + int v19; // eax + int (__fastcall *v20)(int); // eax + int v21; // eax + void *v22; // eax + volatile signed __int32 *v23; // ecx + volatile signed __int32 *v24; // ecx + __int16 v25; // ax + __int16 v26; // ax + int v27; // eax + _DWORD *v28; // edx + unsigned int v29; // [esp+Ch] [ebp-4Ch] + wchar_t *v30; // [esp+10h] [ebp-48h] + wchar_t *v31; // [esp+14h] [ebp-44h] + wchar_t *v32; // [esp+18h] [ebp-40h] + std::string *v33; // [esp+1Ch] [ebp-3Ch] + char v34[5]; // [esp+2Fh] [ebp-29h] BYREF + _DWORD *v35; // [esp+34h] [ebp-24h] BYREF + _DWORD *v36; // [esp+38h] [ebp-20h] BYREF + int v37[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + v3 = std::use_facet>(a2); + v4 = (_DWORD *)*v3; + v5 = v3; + v6 = *(int (__fastcall **)(int))(*v3 + 8); + if ( v6 == std::moneypunct::do_decimal_point ) + { + *(_WORD *)(this + 18) = *(_WORD *)(v5[2] + 18); + v7 = (int (__fastcall *)(int))v4[3]; + if ( v7 == std::moneypunct::do_thousands_sep ) + goto LABEL_3; + } + else + { + v25 = v6((int)v5); + v4 = (_DWORD *)*v5; + *(_WORD *)(this + 18) = v25; + v7 = (int (__fastcall *)(int))v4[3]; + if ( v7 == std::moneypunct::do_thousands_sep ) + { +LABEL_3: + *(_WORD *)(this + 20) = *(_WORD *)(v5[2] + 20); + v8 = (int (__fastcall *)(int))v4[8]; + if ( v8 == std::moneypunct::do_frac_digits ) + goto LABEL_4; +LABEL_28: + v27 = v8((int)v5); + v28 = (_DWORD *)*v5; + *(_DWORD *)(this + 48) = v27; + v9 = (_DWORD *(__thiscall *)(char *, int))v28[4]; + if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) + goto LABEL_5; + goto LABEL_29; + } + } + v26 = v7((int)v5); + v4 = (_DWORD *)*v5; + *(_WORD *)(this + 20) = v26; + v8 = (int (__fastcall *)(int))v4[8]; + if ( v8 != std::moneypunct::do_frac_digits ) + goto LABEL_28; +LABEL_4: + *(_DWORD *)(this + 48) = *(_DWORD *)(v5[2] + 48); + v9 = (_DWORD *(__thiscall *)(char *, int))v4[4]; + if ( (char *)v9 == (char *)std::moneypunct::do_grouping ) + { +LABEL_5: + std::string::string(&v34[1], *(char **)(v5[2] + 8), (int)v37); + goto LABEL_6; + } +LABEL_29: + v9(&v34[1], (int)v5); +LABEL_6: + v10 = *(_DWORD *)(*(_DWORD *)&v34[1] - 12); + *(_DWORD *)(this + 12) = v10; + v33 = (std::string *)operator new[](v10); + std::string::copy(&v34[1], v33, *(char **)(this + 12), 0, v29); + v11 = 0; + if ( *(_DWORD *)(this + 12) ) + v11 = (unsigned __int8)(*(_BYTE *)v33 - 1) <= 0x7Du; + *(_BYTE *)(this + 16) = v11; + v12 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 20); + if ( v12 == std::moneypunct::do_curr_symbol ) + std::wstring::basic_string(&v35, *(wchar_t **)(v5[2] + 24), (int)v37); + else + v12(&v35, (int)v5); + v13 = *(v35 - 3); + *(_DWORD *)(this + 28) = v13; + if ( v13 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v30 = (wchar_t *)operator new[](2 * v13); + std::wstring::copy(&v35, v30, *(_DWORD *)(this + 28), 0); + v14 = *(_DWORD *(__thiscall **)(_DWORD *, int))(*v5 + 24); + if ( v14 == std::moneypunct::do_positive_sign ) + std::wstring::basic_string(&v36, *(wchar_t **)(v5[2] + 32), (int)v37); + else + v14(&v36, (int)v5); + v15 = *(v36 - 3); + *(_DWORD *)(this + 36) = v15; + if ( v15 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v31 = (wchar_t *)operator new[](2 * v15); + std::wstring::copy(&v36, v31, *(_DWORD *)(this + 36), 0); + v16 = *(_DWORD *(__thiscall **)(int *, int))(*v5 + 28); + if ( v16 == std::moneypunct::do_negative_sign ) + std::wstring::basic_string(v37, *(wchar_t **)(v5[2] + 40), (int)v34); + else + v16(v37, (int)v5); + v17 = *(_DWORD *)(v37[0] - 12); + *(_DWORD *)(this + 44) = v17; + if ( v17 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v32 = (wchar_t *)operator new[](2 * v17); + std::wstring::copy(v37, v32, *(_DWORD *)(this + 44), 0); + v18 = *(int (__fastcall **)(int))(*v5 + 36); + if ( v18 == std::moneypunct::do_pos_format ) + v19 = *(_DWORD *)(v5[2] + 52); + else + v19 = v18((int)v5); + *(_DWORD *)(this + 52) = v19; + v20 = *(int (__fastcall **)(int))(*v5 + 40); + if ( v20 == std::moneypunct::do_neg_format ) + v21 = *(_DWORD *)(v5[2] + 56); + else + v21 = v20((int)v5); + *(_DWORD *)(this + 56) = v21; + v22 = std::use_facet>(a2); + (*(void (__thiscall **)(void *, char *, char *, int))(*(_DWORD *)v22 + 44))( + v22, + std::money_base::_S_atoms, + std::money_base::_S_atoms + 11, + this + 60); + *(_BYTE *)(this + 82) = 1; + *(_DWORD *)(this + 8) = v33; + *(_DWORD *)(this + 24) = v30; + *(_DWORD *)(this + 32) = v31; + *(_DWORD *)(this + 40) = v32; + if ( (_UNKNOWN *)v37[0] == &unk_4E93EC ) + { + v23 = v36 - 3; + if ( v36 == (_DWORD *)&unk_4E93EC ) + goto LABEL_23; + } + else + { + std::wstring::_Rep::_M_dispose((volatile signed __int32 *)(v37[0] - 12), (int)v34); + v23 = v36 - 3; + if ( v36 == (_DWORD *)&unk_4E93EC ) + goto LABEL_23; + } + std::wstring::_Rep::_M_dispose(v23, (int)v34); +LABEL_23: + if ( v35 == (_DWORD *)&unk_4E93EC ) + { + v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); + if ( *(_UNKNOWN **)&v34[1] == &unk_4E93FC ) + return; +LABEL_36: + std::string::_Rep::_M_dispose(v24, (int)v34); + return; + } + std::wstring::_Rep::_M_dispose(v35 - 3, (int)v34); + v24 = (volatile signed __int32 *)(*(_DWORD *)&v34[1] - 12); + if ( *(_UNKNOWN **)&v34[1] != &unk_4E93FC ) + goto LABEL_36; +} +// 4B0358: variable 'v29' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; + +//----- (004B0880) -------------------------------------------------------- +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F66F4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + *(_DWORD *)((char *)this + 18) = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + *((_BYTE *)this + 82) = 0; + return result; +} +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (004B0900) -------------------------------------------------------- +BOOL __thiscall std::__moneypunct_cache::__moneypunct_cache(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F66F4; + this[2] = 0; + this[3] = 0; + result = a2 != 0; + *((_BYTE *)this + 16) = 0; + this[1] = result; + *(_DWORD *)((char *)this + 18) = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + this[10] = 0; + this[11] = 0; + this[12] = 0; + this[13] = 0; + this[14] = 0; + *((_BYTE *)this + 82) = 0; + return result; +} +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (004B0980) -------------------------------------------------------- +void __fastcall std::__moneypunct_cache::~__moneypunct_cache(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::__moneypunct_cache::~__moneypunct_cache(v2); + operator delete(a1); +} +// 4B0987: variable 'v2' is possibly undefined + +//----- (004B09B0) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 82) == 0; + *(_DWORD *)v1 = &off_4F66F4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[6] ) + operator delete[](v2[6]); + if ( v2[8] ) + operator delete[](v2[8]); + if ( v2[10] ) + operator delete[](v2[10]); + } + std::locale::facet::~facet(a1); +} +// 4B09B1: variable 'v1' is possibly undefined +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (004B0A10) -------------------------------------------------------- +void __cdecl std::__moneypunct_cache::~__moneypunct_cache(std::locale::facet *a1) +{ + int v1; // ecx + void **v2; // ebx + bool v3; // zf + + v2 = (void **)v1; + v3 = *(_BYTE *)(v1 + 82) == 0; + *(_DWORD *)v1 = &off_4F66F4; + if ( !v3 ) + { + if ( *(_DWORD *)(v1 + 8) ) + operator delete[](*(void **)(v1 + 8)); + if ( v2[6] ) + operator delete[](v2[6]); + if ( v2[8] ) + operator delete[](v2[8]); + if ( v2[10] ) + operator delete[](v2[10]); + } + std::locale::facet::~facet(a1); +} +// 4B0A11: variable 'v1' is possibly undefined +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (004B0A70) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F68F8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4B0A7C: variable 'v2' is possibly undefined + +//----- (004B0A90) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F68F8; + std::locale::facet::~facet(a1); +} +// 4B0A90: variable 'v1' is possibly undefined + +//----- (004B0AA0) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F6950; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4B0AAC: variable 'v2' is possibly undefined + +//----- (004B0AC0) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F6950; + std::locale::facet::~facet(a1); +} +// 4B0AC0: variable 'v1' is possibly undefined + +//----- (004B0AD0) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_base::~__codecvt_utf8_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F675C; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4B0ADC: variable 'v2' is possibly undefined +// 4F675C: using guessed type int (*off_4F675C)(); + +//----- (004B0AF0) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_base::~__codecvt_utf8_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F675C; + std::codecvt::~codecvt(a1); +} +// 4B0AF0: variable 'v1' is possibly undefined +// 4F675C: using guessed type int (*off_4F675C)(); + +//----- (004B0B00) -------------------------------------------------------- +void __fastcall std::__iosfail_type_info::~__iosfail_type_info(_DWORD *a1) +{ + __cxxabiv1::__si_class_type_info *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6788; + __cxxabiv1::__si_class_type_info::~__si_class_type_info(v2); + operator delete(a1); +} +// 4B0B0C: variable 'v2' is possibly undefined +// 4F6788: using guessed type void (__cdecl *off_4F6788)(std::__iosfail_type_info *__hidden this); + +//----- (004B0B20) -------------------------------------------------------- +void __cdecl std::__iosfail_type_info::~__iosfail_type_info(std::__iosfail_type_info *this) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6788; + __cxxabiv1::__si_class_type_info::~__si_class_type_info(this); +} +// 4B0B20: variable 'v1' is possibly undefined +// 4F6788: using guessed type void (__cdecl *off_4F6788)(std::__iosfail_type_info *__hidden this); + +//----- (004B0B30) -------------------------------------------------------- +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F68F8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4B0B3C: variable 'v2' is possibly undefined + +//----- (004B0B50) -------------------------------------------------------- +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F68F8; + std::locale::facet::~facet(a1); +} +// 4B0B50: variable 'v1' is possibly undefined + +//----- (004B0B60) -------------------------------------------------------- +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F6950; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4B0B6C: variable 'v2' is possibly undefined + +//----- (004B0B80) -------------------------------------------------------- +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F6950; + std::locale::facet::~facet(a1); +} +// 4B0B80: variable 'v1' is possibly undefined + +//----- (004B0B90) -------------------------------------------------------- +void __fastcall std::__codecvt_utf16_base::~__codecvt_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F680C; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4B0B9C: variable 'v2' is possibly undefined +// 4F680C: using guessed type int (*off_4F680C)(); + +//----- (004B0BB0) -------------------------------------------------------- +void __cdecl std::__codecvt_utf16_base::~__codecvt_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F680C; + std::codecvt::~codecvt(a1); +} +// 4B0BB0: variable 'v1' is possibly undefined +// 4F680C: using guessed type int (*off_4F680C)(); + +//----- (004B0BC0) -------------------------------------------------------- +void __fastcall std::bad_array_new_length::~bad_array_new_length(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6838; + std::bad_alloc::~bad_alloc(v2); + operator delete(a1, 4u); +} +// 4B0BCC: variable 'v2' is possibly undefined +// 4F6838: using guessed type void (__cdecl *off_4F6838)(std::bad_array_new_length *__hidden this); + +//----- (004B0BF0) -------------------------------------------------------- +void __cdecl std::bad_array_new_length::~bad_array_new_length(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6838; + std::bad_alloc::~bad_alloc(a1); +} +// 4B0BF0: variable 'v1' is possibly undefined +// 4F6838: using guessed type void (__cdecl *off_4F6838)(std::bad_array_new_length *__hidden this); + +//----- (004B0C00) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F68F8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4B0C0C: variable 'v2' is possibly undefined + +//----- (004B0C20) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F68F8; + std::locale::facet::~facet(a1); +} +// 4B0C20: variable 'v1' is possibly undefined + +//----- (004B0C30) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F6950; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4B0C3C: variable 'v2' is possibly undefined + +//----- (004B0C50) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F6950; + std::locale::facet::~facet(a1); +} +// 4B0C50: variable 'v1' is possibly undefined + +//----- (004B0C60) -------------------------------------------------------- +void __fastcall std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6A2C; + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4B0C6C: variable 'v2' is possibly undefined +// 4F6A2C: using guessed type int (*off_4F6A2C)(); + +//----- (004B0C80) -------------------------------------------------------- +void __cdecl std::__codecvt_utf8_utf16_base::~__codecvt_utf8_utf16_base(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6A2C; + std::codecvt::~codecvt(a1); +} +// 4B0C80: variable 'v1' is possibly undefined +// 4F6A2C: using guessed type int (*off_4F6A2C)(); + +//----- (004B0C90) -------------------------------------------------------- +void __fastcall std::_V2::error_category::~error_category(void *a1) +{ + operator delete(a1); +} + +//----- (004B0CB0) -------------------------------------------------------- +void (__cdecl ***std::_V2::system_category())(_anonymous_namespace_::system_error_category *__hidden this) +{ + return `anonymous namespace'::system_category_instance; +} +// 4E8F44: using guessed type void (__cdecl **`anonymous namespace'::system_category_instance[2])(_anonymous_namespace_::system_error_category *__hidden this); + +//----- (004B0CC0) -------------------------------------------------------- +void (__cdecl ***std::_V2::generic_category())(_anonymous_namespace_::generic_error_category *__hidden this) +{ + return &`anonymous namespace'::generic_category_instance; +} +// 4E8F48: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); + +//----- (004B0CD0) -------------------------------------------------------- +_DWORD *__thiscall std::map>::operator[]( + _DWORD *this, + int a2) +{ + _DWORD *v2; // edx + _DWORD *inserted; // ebx + _DWORD *v5; // esi + char v6; // al + _DWORD *v7; // esi + int insert_hint_unique_pos; // eax + _DWORD *v9; // edx + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v12; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 1; + inserted = this + 1; + v5 = (_DWORD *)this[2]; + while ( v5 ) + { + v12 = v2; + v6 = std::operator<((int)(v5 + 4), a2); + v2 = v12; + if ( v6 ) + { + v5 = (_DWORD *)v5[3]; + } + else + { + inserted = v5; + v5 = (_DWORD *)v5[2]; + } + } + if ( v2 == inserted || (unsigned __int8)std::operator<(a2, (int)(inserted + 4)) ) + { + v7 = operator new((struct type_info *)0x30, v11); + std::string::basic_string(v7 + 4, a2); + v7[10] = 0; + v7[11] = 0; + insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v7 + 4)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v9 ) + { + inserted = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( + this, + insert_hint_unique_pos, + v9, + v7); + } + else + { + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v7 + 11); + std::string::_M_dispose((void **)v7 + 4); + operator delete(v7); + } + } + return inserted + 10; +} +// 4B0D34: variable 'v11' is possibly undefined +// 4B0D75: variable 'v9' is possibly undefined + +//----- (004B0DDC) -------------------------------------------------------- +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) +{ + _DWORD *v2; // edx + _DWORD *inserted; // ebx + _DWORD *v5; // esi + char v6; // al + char *v7; // esi + int insert_hint_unique_pos; // eax + _DWORD *v9; // edx + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v12; // [esp+1Ch] [ebp-1Ch] + + v2 = this + 1; + inserted = this + 1; + v5 = (_DWORD *)this[2]; + while ( v5 ) + { + v12 = v2; + v6 = std::operator<((int)(v5 + 4), a2); + v2 = v12; + if ( v6 ) + { + v5 = (_DWORD *)v5[3]; + } + else + { + inserted = v5; + v5 = (_DWORD *)v5[2]; + } + } + if ( v2 == inserted || (unsigned __int8)std::operator<(a2, (int)(inserted + 4)) ) + { + v7 = (char *)operator new((struct type_info *)0x40, v11); + std::string::basic_string((_DWORD *)v7 + 4, a2); + *((_DWORD *)v7 + 10) = v7 + 48; + *((_DWORD *)v7 + 11) = 0; + v7[48] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + inserted, + (int)(v7 + 16)); + inserted = (_DWORD *)insert_hint_unique_pos; + if ( v9 ) + { + inserted = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + this, + insert_hint_unique_pos, + v9, + v7); + } + else + { + std::string::_M_dispose((void **)v7 + 10); + std::string::_M_dispose((void **)v7 + 4); + operator delete(v7); + } + } + return inserted + 10; +} +// 4B0E40: variable 'v11' is possibly undefined +// 4B0E84: variable 'v9' is possibly undefined + +//----- (004B0EE8) -------------------------------------------------------- +char *__thiscall std::map>::operator[](_DWORD *this, _DWORD *a2) +{ + _DWORD *v3; // ebx + _DWORD *v4; // edx + int insert_hint_unique_pos; // eax + _DWORD *v6; // edx + _DWORD *v7; // edi + char v8; // al + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + _DWORD *v11; // [esp+18h] [ebp-20h] + _DWORD *v12; // [esp+18h] [ebp-20h] + _DWORD *v13; // [esp+1Ch] [ebp-1Ch] + _DWORD *v14; // [esp+1Ch] [ebp-1Ch] + + v3 = this + 1; + v4 = (_DWORD *)this[2]; + v13 = this + 1; + while ( v4 ) + { + v11 = v4; + if ( (unsigned __int8)std::operator<((int)(v4 + 4), (int)a2) ) + { + v4 = (_DWORD *)v11[3]; + } + else + { + v3 = v11; + v4 = (_DWORD *)v11[2]; + } + } + if ( v13 == v3 || (unsigned __int8)std::operator<((int)a2, (int)(v3 + 4)) ) + { + v12 = v3; + v3 = operator new((struct type_info *)0x34, v10); + std::string::basic_string(v3 + 4, a2); + v3[10] = 0; + v3[11] = 0; + v3[12] = 0; + insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + this, + v12, + (int)(v3 + 4)); + v7 = v6; + if ( v6 ) + { + v8 = v13 == v6 || insert_hint_unique_pos != 0; + if ( !v8 ) + v8 = std::operator<((int)(v3 + 4), (int)(v6 + 4)); + std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); + ++this[5]; + } + else + { + v14 = (_DWORD *)insert_hint_unique_pos; + std::vector::~vector((void ***)v3 + 10); + std::string::_M_dispose((void **)v3 + 4); + operator delete(v3); + v3 = v14; + } + } + return (char *)(v3 + 10); +} +// 4B0F50: variable 'v10' is possibly undefined +// 4B0F91: variable 'v6' is possibly undefined + +//----- (004B1008) -------------------------------------------------------- +char *__thiscall std::map>::operator[](_DWORD *this, int a2) +{ + _DWORD *v2; // edi + _DWORD *v3; // ebx + _DWORD *v4; // edi + _DWORD *v5; // edx + int insert_hint_unique_pos; // edi + _DWORD *v7; // esi + char v8; // al + void *v10; // [esp+0h] [ebp-38h] + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v13; // [esp+1Ch] [ebp-1Ch] + + v2 = (_DWORD *)this[2]; + v13 = this + 1; + v3 = this + 1; + while ( v2 ) + { + if ( (unsigned __int8)std::operator<((int)(v2 + 4), a2) ) + { + v2 = (_DWORD *)v2[3]; + } + else + { + v3 = v2; + v2 = (_DWORD *)v2[2]; + } + } + if ( v13 == v3 || (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + { + v4 = v3; + v3 = operator new((struct type_info *)0x34, v11); + std::string::basic_string(v3 + 4, a2); + v3[10] = 0; + v3[11] = 0; + v3[12] = 0; + insert_hint_unique_pos = std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + this, + v4, + (int)(v3 + 4)); + v7 = v5; + if ( v5 ) + { + v8 = insert_hint_unique_pos != 0 || v13 == v5; + if ( !v8 ) + v8 = std::operator<((int)(v3 + 4), (int)(v5 + 4)); + std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); + ++this[5]; + } + else + { + std::vector::~vector((void ***)v3 + 10, 0); + std::string::_M_dispose((void **)v3 + 4); + v10 = v3; + v3 = (_DWORD *)insert_hint_unique_pos; + operator delete(v10); + } + } + return (char *)(v3 + 10); +} +// 4B106D: variable 'v11' is possibly undefined +// 4B10AF: variable 'v5' is possibly undefined + +//----- (004B1148) -------------------------------------------------------- +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) +{ + _DWORD *v2; // edi + _DWORD *v3; // ebx + _DWORD *v4; // edi + _DWORD *v5; // edx + int insert_hint_unique_pos; // edi + _DWORD *v7; // esi + char v8; // al + void *v10; // [esp+0h] [ebp-38h] + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v13; // [esp+1Ch] [ebp-1Ch] + + v2 = (_DWORD *)this[2]; + v13 = this + 1; + v3 = this + 1; + while ( v2 ) + { + if ( (unsigned __int8)std::operator<((int)(v2 + 4), a2) ) + { + v2 = (_DWORD *)v2[3]; + } + else + { + v3 = v2; + v2 = (_DWORD *)v2[2]; + } + } + if ( v13 == v3 || (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + { + v4 = v3; + v3 = operator new((struct type_info *)0x2C, v11); + std::string::basic_string(v3 + 4, a2); + v3[10] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + v4, + (int)(v3 + 4)); + v7 = v5; + if ( v5 ) + { + v8 = insert_hint_unique_pos != 0 || v13 == v5; + if ( !v8 ) + v8 = std::operator<((int)(v3 + 4), (int)(v5 + 4)); + std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); + ++this[5]; + } + else + { + std::string::_M_dispose((void **)v3 + 4); + v10 = v3; + v3 = (_DWORD *)insert_hint_unique_pos; + operator delete(v10); + } + } + return v3 + 10; +} +// 4B11AD: variable 'v11' is possibly undefined +// 4B11E1: variable 'v5' is possibly undefined + +//----- (004B1270) -------------------------------------------------------- +_DWORD *__thiscall std::map::operator[](_DWORD *this, int a2) +{ + _DWORD *v2; // edi + _DWORD *v3; // ebx + _DWORD *v4; // edi + _DWORD *v5; // edx + int insert_hint_unique_pos; // edi + _DWORD *v7; // esi + char v8; // al + void *v10; // [esp+0h] [ebp-38h] + void (__cdecl *v11)(void *); // [esp+4h] [ebp-34h] + _DWORD *v13; // [esp+1Ch] [ebp-1Ch] + + v2 = (_DWORD *)this[2]; + v13 = this + 1; + v3 = this + 1; + while ( v2 ) + { + if ( (unsigned __int8)std::operator<((int)(v2 + 4), a2) ) + { + v2 = (_DWORD *)v2[3]; + } + else + { + v3 = v2; + v2 = (_DWORD *)v2[2]; + } + } + if ( v13 == v3 || (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + { + v4 = v3; + v3 = operator new((struct type_info *)0x2C, v11); + std::string::basic_string(v3 + 4, a2); + v3[10] = 0; + insert_hint_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + this, + v4, + (int)(v3 + 4)); + v7 = v5; + if ( v5 ) + { + v8 = insert_hint_unique_pos != 0 || v13 == v5; + if ( !v8 ) + v8 = std::operator<((int)(v3 + 4), (int)(v5 + 4)); + std::_Rb_tree_insert_and_rebalance(v8, v3, v7, v13); + ++this[5]; + } + else + { + std::string::_M_dispose((void **)v3 + 4); + v10 = v3; + v3 = (_DWORD *)insert_hint_unique_pos; + operator delete(v10); + } + } + return v3 + 10; +} +// 4B12D5: variable 'v11' is possibly undefined +// 4B1309: variable 'v5' is possibly undefined + +//----- (004B1398) -------------------------------------------------------- +_DWORD *__thiscall std::map>>::operator[]( + _DWORD *this, + _DWORD *a2) +{ + _DWORD *v3; // edi + _DWORD *v4; // ebx + _DWORD *v5; // eax + _DWORD *v6; // edx + bool v7; // al + void (__cdecl *v9)(void *); // [esp+4h] [ebp-34h] + _DWORD *v10; // [esp+1Ch] [ebp-1Ch] + int insert_hint_unique_pos; // [esp+1Ch] [ebp-1Ch] + + v3 = this + 1; + v4 = this + 1; + v5 = (_DWORD *)this[2]; + while ( v5 ) + { + if ( v5[4] < *a2 ) + { + v5 = (_DWORD *)v5[3]; + } + else + { + v4 = v5; + v5 = (_DWORD *)v5[2]; + } + } + if ( v3 == v4 || *a2 < v4[4] ) + { + v10 = v4; + v4 = operator new((struct type_info *)0x2C, v9); + v4[4] = *a2; + std::_Rb_tree_header::_Rb_tree_header(v4 + 6); + insert_hint_unique_pos = std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( + this, + v10, + v4 + 4); + if ( v6 ) + { + v7 = insert_hint_unique_pos != 0 || v3 == v6; + if ( !v7 ) + v7 = v4[4] < v6[4]; + std::_Rb_tree_insert_and_rebalance(v7, v4, v6, v3); + ++this[5]; + } + else + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::~_Rb_tree((int)(v4 + 5)); + operator delete(v4); + v4 = (_DWORD *)insert_hint_unique_pos; + } + } + return v4 + 5; +} +// 4B13E1: variable 'v9' is possibly undefined +// 4B1419: variable 'v6' is possibly undefined + +//----- (004B1470) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::pair>::pair,true>( + int this, + int a2) +{ + std::string::basic_string((void **)this, *(char **)a2); + return std::__shared_ptr::__shared_ptr( + (_DWORD *)(this + 24), + (_DWORD *)(a2 + 4)); +} + +//----- (004B14A0) -------------------------------------------------------- +int __cdecl std::__pad>::_S_pad(_DWORD *a1, void *Src, char *a3, _BYTE *a4, int a5, int a6) +{ + char *v6; // edi + size_t Size; // ebx + int result; // eax + size_t v9; // ebp + char *v10; // esi + char v11; // al + char v12; // dl + _BYTE *v13; // eax + _BYTE *v14; // ecx + int (__stdcall *v15)(unsigned __int8); // edx + int (__stdcall *v16)(unsigned __int8); // edx + char v17; // dl + int (__stdcall *v18)(unsigned __int8); // eax + char v19; // dl + int (__stdcall *v20)(unsigned __int8); // eax + int (__stdcall *v21)(unsigned __int8); // eax + void *v22; // [esp+14h] [ebp-28h] + _BYTE *v23; // [esp+1Ch] [ebp-20h] + _BYTE *v24; // [esp+1Ch] [ebp-20h] + _BYTE *v25; // [esp+1Ch] [ebp-20h] + _BYTE *v26; // [esp+1Ch] [ebp-20h] + _BYTE *v27; // [esp+1Ch] [ebp-20h] + + v6 = a3; + v22 = a4; + Size = a5 - a6; + result = a1[3] & 0xB0; + if ( result == 32 ) + { + if ( a6 ) + { + result = (int)memcpy(a3, a4, a6); + if ( !Size ) + return result; + } + else if ( !Size ) + { + return result; + } + return (int)memset(&a3[a6], (char)Src, Size); + } + v9 = a6; + if ( result != 16 ) + goto LABEL_3; + v13 = std::use_facet>((int)(a1 + 27)); + v14 = v13; + if ( v13[28] ) + { + result = (unsigned __int8)*a4; + if ( v14[74] == (_BYTE)result ) + { +LABEL_23: + *a3 = result; + v9 = a6 - 1; + v6 = a3 + 1; + v22 = a4 + 1; + goto LABEL_3; + } + goto LABEL_22; + } + v23 = v13; + std::ctype::_M_widen_init((int)v13); + v14 = v23; + v15 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v23 + 24); + result = 45; + if ( v15 != std::ctype::do_widen ) + { + result = v15(45u); + v14 = v23; + } + if ( *a4 == (_BYTE)result ) + goto LABEL_23; + if ( v14[28] ) + { + result = (unsigned __int8)*a4; +LABEL_22: + if ( v14[72] == (_BYTE)result ) + goto LABEL_23; +LABEL_7: + if ( v14[77] == (_BYTE)result && a6 > 1 ) + { +LABEL_9: + v11 = a4[1]; + if ( v11 == v14[149] ) + { +LABEL_44: + v6 = a3 + 2; + v9 = a6 - 2; + *a3 = *a4; + result = (unsigned __int8)a4[1]; + v22 = a4 + 2; + a3[1] = result; + goto LABEL_3; + } + goto LABEL_10; + } +LABEL_3: + v10 = &v6[Size]; + if ( !Size ) + { + if ( !v9 ) + return result; + return (int)memcpy(v10, v22, v9); + } + goto LABEL_13; + } + v24 = v14; + std::ctype::_M_widen_init((int)v14); + v14 = v24; + v16 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); + result = 43; + if ( v16 != std::ctype::do_widen ) + { + result = v16(43u); + v14 = v24; + } + if ( *a4 == (_BYTE)result ) + goto LABEL_23; + if ( v14[28] ) + { + result = (unsigned __int8)*a4; + goto LABEL_7; + } + v25 = v14; + std::ctype::_M_widen_init((int)v14); + v14 = v25; + v17 = 48; + v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v25 + 24); + if ( v18 != std::ctype::do_widen ) + { + v17 = v18(48u); + v14 = v25; + } + result = (int)a4; + if ( *a4 != v17 || a6 <= 1 ) + goto LABEL_3; + if ( v14[28] ) + goto LABEL_9; + v26 = v14; + std::ctype::_M_widen_init((int)v14); + v14 = v26; + v19 = 120; + v20 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v26 + 24); + if ( v20 != std::ctype::do_widen ) + { + v19 = v20(120u); + v14 = v26; + } + v11 = a4[1]; + if ( v11 == v19 ) + goto LABEL_44; + if ( v14[28] ) + { +LABEL_10: + v12 = v14[117]; + goto LABEL_11; + } + v27 = v14; + std::ctype::_M_widen_init((int)v14); + v21 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v27 + 24); + if ( v21 == std::ctype::do_widen ) + v12 = 88; + else + v12 = v21(88u); + v11 = a4[1]; +LABEL_11: + if ( v12 == v11 ) + goto LABEL_44; + v10 = &a3[Size]; + if ( !Size ) + return (int)memcpy(v10, v22, v9); +LABEL_13: + result = (int)memset(v6, (char)Src, Size); + if ( v9 ) + return (int)memcpy(v10, v22, v9); + return result; +} + +//----- (004B17C0) -------------------------------------------------------- +int __cdecl std::__pad>::_S_pad( + wchar_t *S1, + wchar_t *S2, + wchar_t *a3, + wchar_t *a4, + int a5, + int a6) +{ + wchar_t *S; // edi + size_t N; // ebx + int result; // eax + size_t v9; // ebp + int v10; // edx + wchar_t *v11; // esi + __int16 v12; // ax + __int16 v13; // ax + wchar_t *v14; // [esp+30h] [ebp-30h] + void *v15; // [esp+3Ch] [ebp-24h] + + S = a3; + v14 = a4; + N = a5 - a6; + result = *((_DWORD *)S1 + 3) & 0xB0; + if ( result == 32 ) + { + if ( a6 ) + { + result = (int)wmemcpy(a3, a4, a6); + if ( !N ) + return result; + } + else if ( !N ) + { + return result; + } + return (int)wmemset(&a3[a6], (wchar_t)S2, N); + } + v9 = a6; + v10 = N; + if ( result != 16 ) + goto LABEL_3; + v15 = std::use_facet>((int)(S1 + 54)); + result = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(45); + v10 = N; + if ( *a4 == (_WORD)result + || (result = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(43), v10 = N, *a4 == (_WORD)result) ) + { + *a3 = result; + v9 = a6 - 1; + S = a3 + 1; + v14 = a4 + 1; + goto LABEL_3; + } + result = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(48); + v10 = N; + if ( *a4 != (_WORD)result || a6 <= 1 ) + { +LABEL_3: + v11 = &S[v10]; + if ( !N ) + { + if ( !v9 ) + return result; + return (int)wmemcpy(v11, v14, v9); + } + goto LABEL_13; + } + v12 = (*(int (__stdcall **)(int))(*(_DWORD *)v15 + 40))(120); + v10 = N; + if ( a4[1] == v12 + || (v13 = (*(int (__thiscall **)(void *, int))(*(_DWORD *)v15 + 40))(v15, 88), v10 = N, a4[1] == v13) ) + { + S = a3 + 2; + v9 = a6 - 2; + *a3 = *a4; + result = a4[1]; + v14 = a4 + 2; + a3[1] = result; + goto LABEL_3; + } + v11 = &a3[N]; + if ( !N ) + return (int)wmemcpy(v11, v14, v9); +LABEL_13: + result = (int)wmemset(S, (wchar_t)S2, N); + if ( v9 ) + return (int)wmemcpy(v11, v14, v9); + return result; +} + +//----- (004B19E0) -------------------------------------------------------- +void **std::ctype::classic_table() +{ + return &std::ctype::classic_table(void)::_S_classic_table; +} +// 4F6EC0: using guessed type void *std::ctype::classic_table(void)::_S_classic_table; + +//----- (004B19F0) -------------------------------------------------------- +int __thiscall std::ctype::ctype(_DWORD *this, void **a2, char a3, int a4) +{ + void **v4; // eax + int result; // eax + + v4 = a2; + *this = &off_4F6A58; + this[4] = 0; + this[5] = 0; + this[1] = a4 != 0; + *((_BYTE *)this + 12) = a3 & (a2 != 0); + if ( !a2 ) + v4 = &std::ctype::classic_table(void)::_S_classic_table; + this[6] = v4; + result = 0; + *(_DWORD *)((char *)this + 29) = 0; + *(_DWORD *)((char *)this + 281) = 0; + memset( + (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); + *((_BYTE *)this + 28) = 0; + *(_DWORD *)((char *)this + 285) = 0; + *(_DWORD *)((char *)this + 537) = 0; + memset( + (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); + *((_BYTE *)this + 541) = 0; + return result; +} +// 4F6A58: using guessed type int (*off_4F6A58)(); +// 4F6EC0: using guessed type void *std::ctype::classic_table(void)::_S_classic_table; + +//----- (004B1AA0) -------------------------------------------------------- +int __thiscall std::ctype::ctype(_DWORD *this, int a2, void **a3, char a4, int a5) +{ + void **v5; // eax + int result; // eax + + v5 = a3; + *this = &off_4F6A58; + this[4] = 0; + this[5] = 0; + this[1] = a5 != 0; + *((_BYTE *)this + 12) = a4 & (a3 != 0); + if ( !a3 ) + v5 = &std::ctype::classic_table(void)::_S_classic_table; + this[6] = v5; + result = 0; + *(_DWORD *)((char *)this + 29) = 0; + *(_DWORD *)((char *)this + 281) = 0; + memset( + (void *)(((unsigned int)this + 33) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)this - (((unsigned int)this + 33) & 0xFFFFFFFC) + 285) >> 2)); + *((_BYTE *)this + 28) = 0; + *(_DWORD *)((char *)this + 285) = 0; + *(_DWORD *)((char *)this + 537) = 0; + memset( + (void *)(((unsigned int)this + 289) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)this - (((unsigned int)this + 289) & 0xFFFFFFFC) + 541) >> 2)); + *((_BYTE *)this + 541) = 0; + return result; +} +// 4F6A58: using guessed type int (*off_4F6A58)(); +// 4F6EC0: using guessed type void *std::ctype::classic_table(void)::_S_classic_table; + +//----- (004B1B50) -------------------------------------------------------- +void __fastcall std::ctype::~ctype(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::ctype::~ctype(v2); + operator delete(a1); +} +// 4B1B56: variable 'v2' is possibly undefined + +//----- (004B1B70) -------------------------------------------------------- +void __cdecl std::ctype::~ctype(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_4F6A58; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + if ( *((_BYTE *)v2 + 12) && v2[6] ) + operator delete[]((void *)v2[6]); + std::locale::facet::~facet(a1); +} +// 4B1B74: variable 'v1' is possibly undefined +// 4F6A58: using guessed type int (*off_4F6A58)(); + +//----- (004B1BB0) -------------------------------------------------------- +wctype_t __fastcall std::ctype::_M_initialize_ctype(int a1) +{ + int WCh; // ebx + int v3; // eax + int i; // ebx + int j; // ebx + wctype_t result; // ax + + for ( WCh = 0; WCh != 128; ++WCh ) + { + v3 = wctob(WCh); + if ( v3 == -1 ) + { + *(_BYTE *)(a1 + 12) = 0; + goto LABEL_5; + } + *(_BYTE *)(a1 + WCh + 13) = v3; + } + *(_BYTE *)(a1 + 12) = 1; +LABEL_5: + for ( i = 0; i != 256; ++i ) + *(_WORD *)(a1 + 2 * i + 142) = btowc(i); + for ( j = 0; j != 16; ++j ) + { + *(_WORD *)(a1 + 2 * j + 654) = 1 << j; + result = std::ctype::_M_convert_to_wmask(1 << j); + *(_WORD *)(a1 + 2 * j + 686) = result; + } + return result; +} + +//----- (004B1C50) -------------------------------------------------------- +wctype_t __thiscall std::ctype::ctype(_DWORD *this, char a2, int a3) +{ + int v4; // eax + + *this = &off_4F6A88; + this[1] = a3 != 0; + v4 = std::locale::facet::_S_clone_c_locale(); + *((_BYTE *)this + 12) = 0; + this[2] = v4; + return std::ctype::_M_initialize_ctype((int)this); +} +// 4F6A88: using guessed type int (*off_4F6A88)(); + +//----- (004B1C90) -------------------------------------------------------- +wctype_t __thiscall std::ctype::ctype(_DWORD *this, int a2) +{ + *this = &off_4F6A88; + this[1] = a2 != 0; + this[2] = std::locale::facet::_S_get_c_locale(); + *((_BYTE *)this + 12) = 0; + return std::ctype::_M_initialize_ctype((int)this); +} +// 4F6A88: using guessed type int (*off_4F6A88)(); + +//----- (004B1CD0) -------------------------------------------------------- +void __fastcall std::ctype::~ctype(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6A88; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + *a1 = &unk_4F688C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4B1CEF: variable 'v2' is possibly undefined +// 4F6A88: using guessed type int (*off_4F6A88)(); + +//----- (004B1D10) -------------------------------------------------------- +void __cdecl std::ctype::~ctype(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_4F6A88; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + *v2 = &unk_4F688C; + std::locale::facet::~facet(a1); +} +// 4B1D14: variable 'v1' is possibly undefined +// 4F6A88: using guessed type int (*off_4F6A88)(); + +//----- (004B1D40) -------------------------------------------------------- +int __thiscall std::deque>::_M_push_back_aux const&>( + int this, + _DWORD *a2) +{ + int v3; // edx + char *v4; // eax + unsigned int v5; // esi + int v6; // ebx + char *v7; // ecx + char *v8; // ebx + unsigned int v9; // eax + unsigned int v10; // esi + char *v11; // eax + const void *v12; // ecx + int v13; // eax + int v14; // eax + char *v15; // ebx + int v16; // eax + int v17; // ebx + int *v18; // ecx + int result; // eax + void (__cdecl *v20)(void *); // [esp+4h] [ebp-34h] + int v21; // [esp+14h] [ebp-24h] + char *v22; // [esp+18h] [ebp-20h] + int v23; // [esp+1Ch] [ebp-1Ch] + + v3 = *(_DWORD *)(this + 36); + v4 = *(char **)(this + 20); + v23 = v3 - (_DWORD)v4; + v21 = (v3 - (int)v4) >> 2; + if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + + ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) + + ((v21 - 1) << 6) == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); + v5 = *(_DWORD *)(this + 4); + if ( v5 - ((v3 - *(_DWORD *)this) >> 2) <= 1 ) + { + v6 = v21 + 2; + if ( v5 <= 2 * (v21 + 2) ) + { + v9 = v5 + 2; + if ( !v5 ) + v5 = 1; + v10 = v9 + v5; + if ( v10 > 0x1FFFFFFF ) + std::__throw_bad_alloc(); + v11 = (char *)operator new((struct type_info *)(4 * v10), v20); + v12 = *(const void **)(this + 20); + v22 = v11; + v8 = &v11[4 * ((v10 - v6) >> 1)]; + v13 = *(_DWORD *)(this + 36) + 4; + if ( (const void *)v13 != v12 ) + memmove(v8, v12, v13 - (_DWORD)v12); + operator delete(*(void **)this); + *(_DWORD *)(this + 4) = v10; + *(_DWORD *)this = v22; + } + else + { + v7 = (char *)(v3 + 4); + v8 = (char *)(*(_DWORD *)this + 4 * ((v5 - v6) >> 1)); + if ( v4 <= v8 ) + { + if ( v4 != v7 ) + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + else if ( v4 != v7 ) + { + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + } + v14 = *(_DWORD *)v8; + *(_DWORD *)(this + 20) = v8; + v15 = &v8[v23]; + *(_DWORD *)(this + 12) = v14; + *(_DWORD *)(this + 16) = v14 + 512; + v16 = *(_DWORD *)v15; + *(_DWORD *)(this + 36) = v15; + *(_DWORD *)(this + 28) = v16; + *(_DWORD *)(this + 32) = v16 + 512; + } + v17 = *(_DWORD *)(this + 36); + *(_DWORD *)(v17 + 4) = operator new((struct type_info *)0x200, v20); + std::__shared_ptr::__shared_ptr( + *(_DWORD **)(this + 24), + a2); + v18 = (int *)(*(_DWORD *)(this + 36) + 4); + result = *v18; + *(_DWORD *)(this + 36) = v18; + *(_DWORD *)(this + 28) = result; + *(_DWORD *)(this + 32) = result + 512; + *(_DWORD *)(this + 24) = result; + return result; +} +// 4B1E2C: variable 'v20' is possibly undefined + +//----- (004B1EDC) -------------------------------------------------------- +int __fastcall std::deque>::back(_DWORD *a1) +{ + int v1; // eax + + v1 = a1[6]; + if ( v1 == a1[7] ) + v1 = *(_DWORD *)(a1[9] - 4) + 512; + return v1 - 8; +} + +//----- (004B1EF4) -------------------------------------------------------- +int __fastcall std::deque>::pop_back(_DWORD *a1) +{ + char *v2; // ecx + int v4; // eax + int v5; // ecx + + v2 = (char *)a1[6]; + if ( v2 == (char *)a1[7] ) + { + operator delete(v2); + v4 = a1[9]; + v5 = *(_DWORD *)(v4 - 4); + a1[9] = v4 - 4; + a1[7] = v5; + a1[8] = v5 + 512; + a1[6] = v5 + 504; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); + } + else + { + a1[6] = v2 - 8; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); + } +} + +//----- (004B1F4C) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::deque>::push_back( + _DWORD *this, + _DWORD *a2) +{ + int v3; // eax + _DWORD *v4; // ecx + volatile signed __int32 *result; // eax + + v3 = this[8]; + v4 = (_DWORD *)this[6]; + if ( v4 == (_DWORD *)(v3 - 8) ) + return (volatile signed __int32 *)std::deque>::_M_push_back_aux const&>( + (int)this, + a2); + result = std::__shared_ptr::__shared_ptr(v4, a2); + this[6] += 8; + return result; +} + +//----- (004B1F84) -------------------------------------------------------- +int __thiscall std::deque>::_M_push_back_aux const&>( + int this, + _DWORD *a2) +{ + int v3; // ecx + char *v4; // eax + unsigned int v5; // esi + int v6; // ebx + char *v7; // edx + char *v8; // ebx + unsigned int v9; // eax + unsigned int v10; // esi + char *v11; // eax + const void *v12; // edx + int v13; // eax + int v14; // eax + char *v15; // ebx + int v16; // eax + int v17; // ebx + _DWORD *v18; // edx + int v19; // eax + int *v20; // edx + int result; // eax + void (__cdecl *v22)(void *); // [esp+4h] [ebp-34h] + int v23; // [esp+14h] [ebp-24h] + char *v24; // [esp+18h] [ebp-20h] + int v25; // [esp+1Ch] [ebp-1Ch] + + v3 = *(_DWORD *)(this + 36); + v4 = *(char **)(this + 20); + v25 = v3 - (_DWORD)v4; + v23 = (v3 - (int)v4) >> 2; + if ( ((*(_DWORD *)(this + 16) - *(_DWORD *)(this + 8)) >> 3) + + ((*(_DWORD *)(this + 24) - *(_DWORD *)(this + 28)) >> 3) + + ((v23 - 1) << 6) == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"cannot create std::deque larger than max_size()"); + v5 = *(_DWORD *)(this + 4); + if ( v5 - ((v3 - *(_DWORD *)this) >> 2) <= 1 ) + { + v6 = v23 + 2; + if ( v5 <= 2 * (v23 + 2) ) + { + v9 = v5 + 2; + if ( !v5 ) + v5 = 1; + v10 = v9 + v5; + if ( v10 > 0x1FFFFFFF ) + std::__throw_bad_alloc(); + v11 = (char *)operator new((struct type_info *)(4 * v10), v22); + v12 = *(const void **)(this + 20); + v24 = v11; + v8 = &v11[4 * ((v10 - v6) >> 1)]; + v13 = *(_DWORD *)(this + 36) + 4; + if ( (const void *)v13 != v12 ) + memmove(v8, v12, v13 - (_DWORD)v12); + operator delete(*(void **)this); + *(_DWORD *)(this + 4) = v10; + *(_DWORD *)this = v24; + } + else + { + v7 = (char *)(v3 + 4); + v8 = (char *)(*(_DWORD *)this + 4 * ((v5 - v6) >> 1)); + if ( v4 <= v8 ) + { + if ( v4 != v7 ) + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + else if ( v4 != v7 ) + { + memmove(v8, v4, v3 + 4 - (_DWORD)v4); + } + } + v14 = *(_DWORD *)v8; + *(_DWORD *)(this + 20) = v8; + v15 = &v8[v25]; + *(_DWORD *)(this + 12) = v14; + *(_DWORD *)(this + 16) = v14 + 512; + v16 = *(_DWORD *)v15; + *(_DWORD *)(this + 36) = v15; + *(_DWORD *)(this + 28) = v16; + *(_DWORD *)(this + 32) = v16 + 512; + } + v17 = *(_DWORD *)(this + 36); + *(_DWORD *)(v17 + 4) = operator new((struct type_info *)0x200, v22); + v18 = *(_DWORD **)(this + 24); + *v18 = *a2; + v19 = a2[1]; + v18[1] = v19; + if ( v19 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v19 + 4)); + v20 = (int *)(*(_DWORD *)(this + 36) + 4); + result = *v20; + *(_DWORD *)(this + 36) = v20; + *(_DWORD *)(this + 28) = result; + *(_DWORD *)(this + 32) = result + 512; + *(_DWORD *)(this + 24) = result; + return result; +} +// 4B2070: variable 'v22' is possibly undefined + +//----- (004B2130) -------------------------------------------------------- +int __fastcall std::deque>::pop_back(_DWORD *a1) +{ + char *v2; // ecx + int v4; // eax + int v5; // ecx + + v2 = (char *)a1[6]; + if ( v2 == (char *)a1[7] ) + { + operator delete(v2); + v4 = a1[9]; + v5 = *(_DWORD *)(v4 - 4); + a1[9] = v4 - 4; + a1[7] = v5; + a1[8] = v5 + 512; + a1[6] = v5 + 504; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)(v5 + 508)); + } + else + { + a1[6] = v2 - 8; + return std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v2 - 1); + } +} + +//----- (004B2188) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::deque>::push_back( + _DWORD *this, + _DWORD *a2) +{ + _DWORD *v2; // edx + volatile signed __int32 *result; // eax + + v2 = (_DWORD *)this[6]; + if ( v2 == (_DWORD *)(this[8] - 8) ) + return (volatile signed __int32 *)std::deque>::_M_push_back_aux const&>( + (int)this, + a2); + *v2 = *a2; + result = (volatile signed __int32 *)a2[1]; + v2[1] = result; + if ( result ) + result = __gnu_cxx::__atomic_add_dispatch(result + 1); + this[6] += 8; + return result; +} +// 4B21B3: variable 'this' is possibly undefined + +//----- (004B21C8) -------------------------------------------------------- +#error "4B2373: call analysis failed (funcsize=146)" + +//----- (004B239C) -------------------------------------------------------- +_BYTE *__thiscall std::deque::push_back(_DWORD *this, int a2) +{ + int v3; // eax + _DWORD *v4; // ecx + _BYTE *result; // eax + + v3 = this[8]; + v4 = (_DWORD *)this[6]; + if ( v4 == (_DWORD *)(v3 - 24) ) + return (_BYTE *)std::deque::_M_push_back_aux(a2); + result = std::string::basic_string(v4, a2); + this[6] += 24; + return result; +} +// 4B21C8: using guessed type _DWORD __stdcall std::deque::_M_push_back_aux(_DWORD); + +//----- (004B23E0) -------------------------------------------------------- +int std::locale::_S_initialize() +{ + int result; // eax + void (*func)(void); // [esp+4h] [ebp-18h] + + if ( !_CRT_MT ) + { + result = std::locale::_S_classic; + if ( std::locale::_S_classic ) + return result; +LABEL_5: + result = std::locale::_Impl::_Impl( + `anonymous namespace'::c_locale_impl, + (std::locale::_Impl *)2, + (unsigned int)func); + std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; + std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; + return result; + } + __gthr_win32_once(&std::locale::_S_once, std::locale::_S_initialize_once); + result = std::locale::_S_classic; + if ( !std::locale::_S_classic ) + goto LABEL_5; + return result; +} +// 4B2429: variable 'func' is possibly undefined +// 4E831C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; +// 4E9568: using guessed type int std::locale::_S_classic; +// 4E9584: using guessed type int std::locale::_S_global; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B2450) -------------------------------------------------------- +void std::locale::_S_initialize_once(void) +{ + unsigned int v0; // [esp+4h] [ebp-18h] + + std::locale::_Impl::_Impl(`anonymous namespace'::c_locale_impl, (std::locale::_Impl *)2, v0); + std::locale::_S_classic = (int)`anonymous namespace'::c_locale_impl; + std::locale::_S_global = (int)`anonymous namespace'::c_locale_impl; +} +// 4B245F: variable 'v0' is possibly undefined +// 4E831C: using guessed type _DWORD `anonymous namespace'::c_locale_impl[5]; +// 4E9568: using guessed type int std::locale::_S_classic; +// 4E9584: using guessed type int std::locale::_S_global; + +//----- (004B2480) -------------------------------------------------------- +std::locale *__cdecl std::locale::_S_normalize_category(std::locale *this) +{ + std::locale *result; // eax + + result = this; + if ( this && (((unsigned __int8)this & 0x3F) == 0 || ((unsigned int)this & 0xFFFFFFC0) != 0) ) + { + if ( (unsigned int)this - 1 > 4 ) + std::__throw_runtime_error((std::runtime_error *)"locale::_S_normalize_category category not found"); + return (std::locale *)CSWTCH_107[(_DWORD)this - 1]; + } + return result; +} +// 4F0948: using guessed type int CSWTCH_107[6]; + +//----- (004B24C0) -------------------------------------------------------- +int __userpurge std::locale::_Impl::_M_init_extra@( + int a1@, + std::locale::_Impl *this, + std::locale::facet **a3) +{ + int v4; // eax + int v5; // ecx + int v6; // edi + int v7; // eax + int v8; // ecx + int v9; // eax + int v10; // esi + int v11; // eax + int v12; // ecx + int v13; // edi + int v14; // edi + int v15; // edi + int v16; // eax + int v17; // ebx + int result; // eax + int v19; // [esp+1Ch] [ebp-2Ch] + int v20; // [esp+1Ch] [ebp-2Ch] + int v21; // [esp+1Ch] [ebp-2Ch] + int v22; // [esp+1Ch] [ebp-2Ch] + int v23; // [esp+1Ch] [ebp-2Ch] + int v24; // [esp+1Ch] [ebp-2Ch] + int v25; // [esp+1Ch] [ebp-2Ch] + int v26; // [esp+1Ch] [ebp-2Ch] + int v27; // [esp+1Ch] [ebp-2Ch] + int v28; // [esp+20h] [ebp-28h] + int v29; // [esp+24h] [ebp-24h] + int v30; // [esp+24h] [ebp-24h] + int v31; // [esp+28h] [ebp-20h] + int v32; // [esp+28h] [ebp-20h] + int v33; // [esp+28h] [ebp-20h] + int v34; // [esp+28h] [ebp-20h] + int v35; // [esp+28h] [ebp-20h] + int v36; // [esp+28h] [ebp-20h] + int v37; // [esp+28h] [ebp-20h] + int v38; // [esp+28h] [ebp-20h] + int v39; // [esp+28h] [ebp-20h] + int v40; // [esp+2Ch] [ebp-1Ch] + + v4 = *(_DWORD *)this; + v5 = *((_DWORD *)this + 2); + std::`anonymous namespace'::numpunct_c = (int)&off_4F6D3C; + v6 = *((_DWORD *)this + 1); + v40 = v5; + v29 = v4; + dword_4E9448 = 1; + dword_4E944C = v4; + std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_c, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E9448, 1u); + else + ++dword_4E9448; + v31 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v31 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_c; + dword_4E94C0 = 1; + std::`anonymous namespace'::collate_c = (int)&off_4F6BD0; + dword_4E94C4 = std::locale::facet::_S_get_c_locale(); + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E94C0, 1u); + else + ++dword_4E94C0; + v32 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v32 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_c; + dword_4E9490 = 1; + std::`anonymous namespace'::moneypunct_cf = (int)&off_4F5E90; + dword_4E9494 = v6; + std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_cf, 0, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E9490, 1u); + else + ++dword_4E9490; + v33 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v33 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_cf; + dword_4E949C = 1; + std::`anonymous namespace'::moneypunct_ct = (int)&off_4F5EC4; + dword_4E94A0 = v40; + std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_ct, 0, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E949C, 1u); + else + ++dword_4E949C; + v34 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v34 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_ct; + dword_4E9470 = 1; + std::`anonymous namespace'::money_get_c = (int)&off_4F6E44; + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E9470, 1u); + else + dword_4E9470 = 2; + v35 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v35 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = &std::`anonymous namespace'::money_get_c; + dword_4E9480 = 1; + std::`anonymous namespace'::money_put_c = (int)&off_4F6E74; + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E9480, 1u); + else + dword_4E9480 = 2; + v36 = *(_DWORD *)(a1 + 4); + v7 = std::locale::id::_M_id(&std::money_put>::id); + v8 = _CRT_MT; + *(_DWORD *)(v36 + 4 * v7) = &std::`anonymous namespace'::money_put_c; + dword_4E9460 = 1; + std::`anonymous namespace'::time_get_c = (int)&off_4F6D84; + if ( v8 ) + _InterlockedAdd(&dword_4E9460, 1u); + else + dword_4E9460 = 2; + v37 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v37 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_c; + std::messages::messages(&std::`anonymous namespace'::messages_c, 1); + if ( _CRT_MT ) + _InterlockedAdd(dword_4E9428, 1u); + else + ++dword_4E9428[0]; + v38 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v38 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_c; + v9 = *((_DWORD *)this + 3); + dword_4E9454 = 1; + v10 = *((_DWORD *)this + 5); + v39 = *((_DWORD *)this + 4); + v28 = v9; + std::`anonymous namespace'::numpunct_w = (int)&off_4F6D60; + dword_4E9458 = v9; + std::numpunct::_M_initialize_numpunct(&std::`anonymous namespace'::numpunct_w, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E9454, 1u); + else + ++dword_4E9454; + v19 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v19 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &std::`anonymous namespace'::numpunct_w; + dword_4E94CC = 1; + std::`anonymous namespace'::collate_w = (int)&off_4F6BEC; + dword_4E94D0 = std::locale::facet::_S_get_c_locale(); + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E94CC, 1u); + else + ++dword_4E94CC; + v20 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v20 + 4 * std::locale::id::_M_id(&std::collate::id)) = &std::`anonymous namespace'::collate_w; + dword_4E94A8 = 1; + std::`anonymous namespace'::moneypunct_wf = (int)&off_4F5EF8; + dword_4E94AC = v39; + std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wf, 0, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E94A8, 1u); + else + ++dword_4E94A8; + v21 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v21 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wf; + dword_4E94B4 = 1; + std::`anonymous namespace'::moneypunct_wt = (int)&off_4F5F2C; + dword_4E94B8 = v10; + std::moneypunct::_M_initialize_moneypunct(&std::`anonymous namespace'::moneypunct_wt, 0, 0); + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E94B4, 1u); + else + ++dword_4E94B4; + v22 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v22 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &std::`anonymous namespace'::moneypunct_wt; + dword_4E9478 = 1; + std::`anonymous namespace'::money_get_w = (int)&off_4F6E5C; + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E9478, 1u); + else + dword_4E9478 = 2; + v23 = *(_DWORD *)(a1 + 4); + v11 = std::locale::id::_M_id(&std::money_get>::id); + v12 = _CRT_MT; + *(_DWORD *)(v23 + 4 * v11) = &std::`anonymous namespace'::money_get_w; + dword_4E9488 = 1; + std::`anonymous namespace'::money_put_w = (int)&off_4F6E8C; + if ( v12 ) + _InterlockedAdd(&dword_4E9488, 1u); + else + dword_4E9488 = 2; + v24 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v24 + 4 * std::locale::id::_M_id(std::money_put>::id)) = &std::`anonymous namespace'::money_put_w; + dword_4E9468 = 1; + std::`anonymous namespace'::time_get_w = (int)&off_4F6DAC; + if ( _CRT_MT ) + _InterlockedAdd(&dword_4E9468, 1u); + else + dword_4E9468 = 2; + v25 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v25 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = &std::`anonymous namespace'::time_get_w; + std::messages::messages(&std::`anonymous namespace'::messages_w, 1); + if ( _CRT_MT ) + _InterlockedAdd(dword_4E9438, 1u); + else + ++dword_4E9438[0]; + v26 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v26 + 4 * std::locale::id::_M_id(&std::messages::id)) = &std::`anonymous namespace'::messages_w; + v27 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v27 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v29; + v30 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v30 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v6; + v13 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v13 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v40; + v14 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v14 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v28; + v15 = *(_DWORD *)(a1 + 12); + v16 = std::locale::id::_M_id(&std::moneypunct::id); + v17 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v15 + 4 * v16) = v39; + result = std::locale::id::_M_id(&std::moneypunct::id); + *(_DWORD *)(v17 + 4 * result) = v10; + return result; +} +// 4E940C: using guessed type int std::moneypunct::id; +// 4E9410: using guessed type int std::moneypunct::id; +// 4E9414: using guessed type int std::moneypunct::id; +// 4E9418: using guessed type int std::moneypunct::id; +// 4E9424: using guessed type _DWORD std::`anonymous namespace'::messages_c; +// 4E9428: using guessed type signed __int32 dword_4E9428[3]; +// 4E9434: using guessed type _DWORD std::`anonymous namespace'::messages_w; +// 4E9438: using guessed type signed __int32 dword_4E9438[3]; +// 4E9444: using guessed type int std::`anonymous namespace'::numpunct_c; +// 4E9448: using guessed type int dword_4E9448; +// 4E944C: using guessed type int dword_4E944C; +// 4E9450: using guessed type int std::`anonymous namespace'::numpunct_w; +// 4E9454: using guessed type int dword_4E9454; +// 4E9458: using guessed type int dword_4E9458; +// 4E945C: using guessed type int std::`anonymous namespace'::time_get_c; +// 4E9460: using guessed type int dword_4E9460; +// 4E9464: using guessed type int std::`anonymous namespace'::time_get_w; +// 4E9468: using guessed type int dword_4E9468; +// 4E946C: using guessed type int std::`anonymous namespace'::money_get_c; +// 4E9470: using guessed type int dword_4E9470; +// 4E9474: using guessed type int std::`anonymous namespace'::money_get_w; +// 4E9478: using guessed type int dword_4E9478; +// 4E947C: using guessed type int std::`anonymous namespace'::money_put_c; +// 4E9480: using guessed type int dword_4E9480; +// 4E9484: using guessed type int std::`anonymous namespace'::money_put_w; +// 4E9488: using guessed type int dword_4E9488; +// 4E948C: using guessed type int std::`anonymous namespace'::moneypunct_cf; +// 4E9490: using guessed type int dword_4E9490; +// 4E9494: using guessed type int dword_4E9494; +// 4E9498: using guessed type int std::`anonymous namespace'::moneypunct_ct; +// 4E949C: using guessed type int dword_4E949C; +// 4E94A0: using guessed type int dword_4E94A0; +// 4E94A4: using guessed type int std::`anonymous namespace'::moneypunct_wf; +// 4E94A8: using guessed type int dword_4E94A8; +// 4E94AC: using guessed type int dword_4E94AC; +// 4E94B0: using guessed type int std::`anonymous namespace'::moneypunct_wt; +// 4E94B4: using guessed type int dword_4E94B4; +// 4E94B8: using guessed type int dword_4E94B8; +// 4E94BC: using guessed type int std::`anonymous namespace'::collate_c; +// 4E94C0: using guessed type int dword_4E94C0; +// 4E94C4: using guessed type int dword_4E94C4; +// 4E94C8: using guessed type int std::`anonymous namespace'::collate_w; +// 4E94CC: using guessed type int dword_4E94CC; +// 4E94D0: using guessed type int dword_4E94D0; +// 4E95E0: using guessed type int std::collate::id; +// 4E95E4: using guessed type int std::collate::id; +// 4E9600: using guessed type int std::messages::id; +// 4E9604: using guessed type int std::messages::id; +// 4E9608: using guessed type int std::numpunct::id; +// 4E960C: using guessed type int std::numpunct::id; +// 4E9610: using guessed type int std::time_get>::id; +// 4E9614: using guessed type int std::time_get>::id; +// 4E9620: using guessed type int std::money_get>::id; +// 4E9624: using guessed type int std::money_get>::id; +// 4E9628: using guessed type int std::money_put>::id; +// 4E962C: using guessed type int std::money_put>::id[5]; +// 4F5E90: using guessed type int (*off_4F5E90)(); +// 4F5EC4: using guessed type int (*off_4F5EC4)(); +// 4F5EF8: using guessed type int (*off_4F5EF8)(); +// 4F5F2C: using guessed type int (*off_4F5F2C)(); +// 4F6BD0: using guessed type int (*off_4F6BD0)(); +// 4F6BEC: using guessed type int (*off_4F6BEC)(); +// 4F6D3C: using guessed type int (*off_4F6D3C)(); +// 4F6D60: using guessed type int (*off_4F6D60)(); +// 4F6D84: using guessed type int (*off_4F6D84)(); +// 4F6DAC: using guessed type int (*off_4F6DAC)(); +// 4F6E44: using guessed type int (*off_4F6E44)(); +// 4F6E5C: using guessed type int (*off_4F6E5C)(); +// 4F6E74: using guessed type int (*off_4F6E74)(); +// 4F6E8C: using guessed type int (*off_4F6E8C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B2BC0) -------------------------------------------------------- +int __userpurge std::locale::_Impl::_M_init_extra@( + int a1@, + std::locale::_Impl *this, + int *a3, + int **a4, + const char *a5, + const char *a6) +{ + _DWORD *v7; // esi + int v8; // eax + void *v9; // esi + _DWORD *v10; // esi + int v11; // eax + _DWORD *v12; // esi + int v13; // eax + void *v14; // eax + void *v15; // eax + void *v16; // eax + int v17; // ecx + volatile signed __int32 *v18; // esi + _DWORD *v19; // esi + int v20; // eax + void *v21; // esi + _DWORD *v22; // esi + int v23; // eax + _DWORD *v24; // esi + int v25; // eax + void *v26; // eax + void *v27; // eax + int v28; // ecx + void *v29; // eax + int v30; // edx + volatile signed __int32 *v31; // esi + int v32; // ebx + int result; // eax + void (__cdecl *v34)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v35)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v36)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v37)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v38)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v39)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v40)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v41)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v42)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v43)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v44)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v45)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v46)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v47)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v48)(void *); // [esp+4h] [ebp-44h] + void (__cdecl *v49)(void *); // [esp+4h] [ebp-44h] + int v50; // [esp+1Ch] [ebp-2Ch] + int v51; // [esp+1Ch] [ebp-2Ch] + int v52; // [esp+1Ch] [ebp-2Ch] + int v53; // [esp+1Ch] [ebp-2Ch] + int v54; // [esp+1Ch] [ebp-2Ch] + int v55; // [esp+1Ch] [ebp-2Ch] + int v56; // [esp+1Ch] [ebp-2Ch] + int v57; // [esp+1Ch] [ebp-2Ch] + int v58; // [esp+1Ch] [ebp-2Ch] + int v59; // [esp+1Ch] [ebp-2Ch] + int v60; // [esp+1Ch] [ebp-2Ch] + int v61; // [esp+1Ch] [ebp-2Ch] + int v62; // [esp+1Ch] [ebp-2Ch] + int v63; // [esp+1Ch] [ebp-2Ch] + int v64; // [esp+1Ch] [ebp-2Ch] + + v7 = operator new((struct type_info *)0xC, v34); + v8 = *(_DWORD *)this; + v7[1] = 0; + *v7 = &off_4F6D3C; + v7[2] = 0; + std::numpunct::_M_initialize_numpunct(v7, v8); + if ( _CRT_MT ) + _InterlockedAdd(v7 + 1, 1u); + else + ++v7[1]; + v50 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v50 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v7; + v9 = operator new((struct type_info *)0xC, v35); + *((_DWORD *)v9 + 1) = 0; + *(_DWORD *)v9 = &off_4F6BD0; + *((_DWORD *)v9 + 2) = std::locale::facet::_S_clone_c_locale(); + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v9 + 1, 1u); + else + ++*((_DWORD *)v9 + 1); + v51 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v51 + 4 * std::locale::id::_M_id(&std::collate::id)) = v9; + v10 = operator new((struct type_info *)0xC, v36); + v11 = *(_DWORD *)this; + v10[1] = 0; + *v10 = &off_4F5E90; + v10[2] = 0; + std::moneypunct::_M_initialize_moneypunct(v10, v11, 0); + if ( _CRT_MT ) + _InterlockedAdd(v10 + 1, 1u); + else + ++v10[1]; + v52 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v52 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v10; + v12 = operator new((struct type_info *)0xC, v37); + v13 = *(_DWORD *)this; + v12[1] = 0; + *v12 = &off_4F5EC4; + v12[2] = 0; + std::moneypunct::_M_initialize_moneypunct(v12, v13, 0); + if ( _CRT_MT ) + _InterlockedAdd(v12 + 1, 1u); + else + ++v12[1]; + v53 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v53 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v12; + v14 = operator new((struct type_info *)8, v38); + *((_DWORD *)v14 + 1) = 0; + *(_DWORD *)v14 = &off_4F6E44; + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v14 + 1, 1u); + else + *((_DWORD *)v14 + 1) = 1; + v54 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v54 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v14; + v15 = operator new((struct type_info *)8, v39); + *((_DWORD *)v15 + 1) = 0; + *(_DWORD *)v15 = &off_4F6E74; + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v15 + 1, 1u); + else + *((_DWORD *)v15 + 1) = 1; + v55 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v55 + 4 * std::locale::id::_M_id(&std::money_put>::id)) = v15; + v16 = operator new((struct type_info *)8, v40); + v17 = _CRT_MT; + *((_DWORD *)v16 + 1) = 0; + *(_DWORD *)v16 = &off_4F6D84; + if ( v17 ) + _InterlockedAdd((volatile signed __int32 *)v16 + 1, 1u); + else + *((_DWORD *)v16 + 1) = 1; + v56 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v56 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v16; + v18 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v41); + std::messages::messages(v18, *(_DWORD *)this, (int)a4, 0); + if ( _CRT_MT ) + _InterlockedAdd(v18 + 1, 1u); + else + ++*((_DWORD *)v18 + 1); + v57 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v57 + 4 * std::locale::id::_M_id(&std::messages::id)) = v18; + v19 = operator new((struct type_info *)0xC, v42); + v20 = *(_DWORD *)this; + v19[1] = 0; + *v19 = &off_4F6D60; + v19[2] = 0; + std::numpunct::_M_initialize_numpunct(v19, v20); + if ( _CRT_MT ) + _InterlockedAdd(v19 + 1, 1u); + else + ++v19[1]; + v58 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v58 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = v19; + v21 = operator new((struct type_info *)0xC, v43); + *((_DWORD *)v21 + 1) = 0; + *(_DWORD *)v21 = &off_4F6BEC; + *((_DWORD *)v21 + 2) = std::locale::facet::_S_clone_c_locale(); + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v21 + 1, 1u); + else + ++*((_DWORD *)v21 + 1); + v59 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v59 + 4 * std::locale::id::_M_id(&std::collate::id)) = v21; + v22 = operator new((struct type_info *)0xC, v44); + v22[1] = 0; + v23 = *a3; + *v22 = &off_4F5EF8; + v22[2] = 0; + std::moneypunct::_M_initialize_moneypunct(v22, v23, (int)a5); + if ( _CRT_MT ) + _InterlockedAdd(v22 + 1, 1u); + else + ++v22[1]; + v60 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v60 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v22; + v24 = operator new((struct type_info *)0xC, v45); + v24[1] = 0; + v25 = *a3; + *v24 = &off_4F5F2C; + v24[2] = 0; + std::moneypunct::_M_initialize_moneypunct(v24, v25, (int)a5); + if ( _CRT_MT ) + _InterlockedAdd(v24 + 1, 1u); + else + ++v24[1]; + v61 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v61 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = v24; + v26 = operator new((struct type_info *)8, v46); + *((_DWORD *)v26 + 1) = 0; + *(_DWORD *)v26 = &off_4F6E5C; + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v26 + 1, 1u); + else + *((_DWORD *)v26 + 1) = 1; + v62 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v62 + 4 * std::locale::id::_M_id(&std::money_get>::id)) = v26; + v27 = operator new((struct type_info *)8, v47); + v28 = _CRT_MT; + *((_DWORD *)v27 + 1) = 0; + *(_DWORD *)v27 = &off_4F6E8C; + if ( v28 ) + _InterlockedAdd((volatile signed __int32 *)v27 + 1, 1u); + else + *((_DWORD *)v27 + 1) = 1; + v63 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v63 + 4 * std::locale::id::_M_id(std::money_put>::id)) = v27; + v29 = operator new((struct type_info *)8, v48); + v30 = _CRT_MT; + *((_DWORD *)v29 + 1) = 0; + *(_DWORD *)v29 = &off_4F6DAC; + if ( v30 ) + _InterlockedAdd((volatile signed __int32 *)v29 + 1, 1u); + else + *((_DWORD *)v29 + 1) = 1; + v64 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v64 + 4 * std::locale::id::_M_id(&std::time_get>::id)) = v29; + v31 = (volatile signed __int32 *)operator new((struct type_info *)0x10, v49); + std::messages::messages(v31, *(_DWORD *)this, (int)a4, 0); + if ( _CRT_MT ) + _InterlockedAdd(v31 + 1, 1u); + else + ++*((_DWORD *)v31 + 1); + v32 = *(_DWORD *)(a1 + 4); + result = std::locale::id::_M_id(&std::messages::id); + *(_DWORD *)(v32 + 4 * result) = v31; + return result; +} +// 4B2BD5: variable 'v34' is possibly undefined +// 4B2C2E: variable 'v35' is possibly undefined +// 4B2C83: variable 'v36' is possibly undefined +// 4B2CE3: variable 'v37' is possibly undefined +// 4B2D43: variable 'v38' is possibly undefined +// 4B2D88: variable 'v39' is possibly undefined +// 4B2DCD: variable 'v40' is possibly undefined +// 4B2E13: variable 'v41' is possibly undefined +// 4B2E67: variable 'v42' is possibly undefined +// 4B2EBF: variable 'v43' is possibly undefined +// 4B2F14: variable 'v44' is possibly undefined +// 4B2F76: variable 'v45' is possibly undefined +// 4B2FD8: variable 'v46' is possibly undefined +// 4B301D: variable 'v47' is possibly undefined +// 4B3063: variable 'v48' is possibly undefined +// 4B30A9: variable 'v49' is possibly undefined +// 4E940C: using guessed type int std::moneypunct::id; +// 4E9410: using guessed type int std::moneypunct::id; +// 4E9414: using guessed type int std::moneypunct::id; +// 4E9418: using guessed type int std::moneypunct::id; +// 4E95E0: using guessed type int std::collate::id; +// 4E95E4: using guessed type int std::collate::id; +// 4E9600: using guessed type int std::messages::id; +// 4E9604: using guessed type int std::messages::id; +// 4E9608: using guessed type int std::numpunct::id; +// 4E960C: using guessed type int std::numpunct::id; +// 4E9610: using guessed type int std::time_get>::id; +// 4E9614: using guessed type int std::time_get>::id; +// 4E9620: using guessed type int std::money_get>::id; +// 4E9624: using guessed type int std::money_get>::id; +// 4E9628: using guessed type int std::money_put>::id; +// 4E962C: using guessed type int std::money_put>::id[5]; +// 4F5E90: using guessed type int (*off_4F5E90)(); +// 4F5EC4: using guessed type int (*off_4F5EC4)(); +// 4F5EF8: using guessed type int (*off_4F5EF8)(); +// 4F5F2C: using guessed type int (*off_4F5F2C)(); +// 4F6BD0: using guessed type int (*off_4F6BD0)(); +// 4F6BEC: using guessed type int (*off_4F6BEC)(); +// 4F6D3C: using guessed type int (*off_4F6D3C)(); +// 4F6D60: using guessed type int (*off_4F6D60)(); +// 4F6D84: using guessed type int (*off_4F6D84)(); +// 4F6DAC: using guessed type int (*off_4F6DAC)(); +// 4F6E44: using guessed type int (*off_4F6E44)(); +// 4F6E5C: using guessed type int (*off_4F6E5C)(); +// 4F6E74: using guessed type int (*off_4F6E74)(); +// 4F6E8C: using guessed type int (*off_4F6E8C)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B3230) -------------------------------------------------------- +void __userpurge std::locale::_Impl::_M_install_cache( + int a1@, + std::locale::_Impl *this, + const std::locale::facet *a3, + unsigned int a4) +{ + int v5; // ebx + int *v6; // ecx + int **v7; // edx + const std::locale::facet *v8; // eax + int v9; // edx + int *v10; // ecx + int v11; // eax + int v12; // edx + int v13; // ebx + _DWORD *v14; // ecx + void (__fastcall *v15)(void *); // eax + int v16; // ecx + volatile signed __int32 *v17; // ebp + int v18; // edx + _DWORD *exception; // eax + + v5 = (int)a3; + if ( !(_BYTE)`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex + && __cxa_guard_acquire(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) + { + if ( _CRT_MT ) + __gthr_win32_mutex_init_function(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); + __cxa_guard_release(&`guard variable for'`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); + atexit(__tcf_0_2); + } + if ( _CRT_MT && __gthr_win32_mutex_lock(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) + { + exception = __cxa_allocate_exception(4u); + *exception = &off_4F5338; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_lock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error); + } + v6 = std::locale::_S_twinned_facets; + if ( std::locale::_S_twinned_facets ) + { + while ( 1 ) + { + v8 = (const std::locale::facet *)std::locale::id::_M_id(v6); + v10 = *(int **)(v9 + 4); + if ( v8 == a3 ) + { + v11 = std::locale::id::_M_id(v10); + goto LABEL_9; + } + if ( (const std::locale::facet *)std::locale::id::_M_id(v10) == a3 ) + break; + v6 = v7[2]; + if ( !v6 ) + goto LABEL_15; + } + v18 = std::locale::id::_M_id(*v7); + v11 = (int)a3; + v5 = v18; +LABEL_9: + v12 = *(_DWORD *)(a1 + 12); + v13 = 4 * v5; + v14 = (_DWORD *)(v12 + v13); + if ( *(_DWORD *)(v12 + v13) ) + goto LABEL_10; +LABEL_16: + v17 = (volatile signed __int32 *)((char *)this + 4); + if ( _CRT_MT ) + { + _InterlockedAdd(v17, 1u); + v16 = _CRT_MT; + v12 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(v12 + v13) = this; + if ( v11 == -1 ) + goto LABEL_13; + if ( v16 ) + { + _InterlockedAdd(v17, 1u); + v16 = _CRT_MT; + *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * v11) = this; + goto LABEL_13; + } + } + else + { + ++*((_DWORD *)this + 1); + *v14 = this; + if ( v11 == -1 ) + return; + } + ++*((_DWORD *)this + 1); + *(_DWORD *)(v12 + 4 * v11) = this; + return; + } +LABEL_15: + v12 = *(_DWORD *)(a1 + 12); + v13 = 4 * (_DWORD)a3; + v11 = -1; + v14 = (_DWORD *)(v12 + 4 * (_DWORD)a3); + if ( !*v14 ) + goto LABEL_16; +LABEL_10: + if ( this ) + { + v15 = *(void (__fastcall **)(void *))(*(_DWORD *)this + 4); + if ( v15 == std::locale::facet::~facet ) + { + operator delete(this); + v16 = _CRT_MT; + goto LABEL_13; + } + v15(this); + } + v16 = _CRT_MT; +LABEL_13: + if ( v16 ) + { + if ( __gthr_win32_mutex_unlock(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex) ) + std::locale::_Impl::_M_install_cache(this, (void (__cdecl *)(void *))a3); + } +} +// 4B328D: variable 'v7' is possibly undefined +// 4B329C: variable 'v9' is possibly undefined +// 4F0B00: using guessed type int *std::locale::_S_twinned_facets; +// 4F1308: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_lock_error; +// 4F5338: using guessed type void (__cdecl *off_4F5338)(__gnu_cxx::__concurrence_lock_error *__hidden this); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B3440) -------------------------------------------------------- +const std::locale::id *__userpurge std::locale::_Impl::_M_install_facet@( + _DWORD *a1@, + std::locale::_Impl *this, + const std::locale::id *a3, + const std::locale::facet *a4) +{ + const std::locale::id *result; // eax + unsigned int v6; // esi + unsigned int v7; // edi + int v8; // eax + unsigned int v9; // ebp + int *v10; // eax + int v11; // edx + int *v12; // ecx + int v13; // ebx + _DWORD *v14; // eax + int v15; // eax + unsigned int v16; // ebp + int v17; // edi + int *v18; // edx + int v19; // ecx + int *v20; // eax + int v21; // ebx + _DWORD *v22; // eax + volatile signed __int32 **v23; // edi + volatile signed __int32 *v24; // eax + int *v25; // ecx + int **v26; // edx + int v27; // edx + int v28; // esi + int v29; // edx + int v30; // ebp + _DWORD *v31; // esi + _DWORD *v32; // ecx + signed __int32 v33; // eax + int v34; // edx + int v35; // edx + unsigned int v36; // esi + volatile signed __int32 *v37; // ecx + signed __int32 v38; // eax + void (*v39)(void); // eax + void (__fastcall *v40)(void *); // edx + int v41; // esi + std::locale::facet **v42; // edx + signed __int32 v43; // eax + void (__fastcall *v44)(void *); // eax + const std::locale::id *v45; // [esp+4h] [ebp-48h] + unsigned int v46; // [esp+1Ch] [ebp-30h] + int v47; // [esp+20h] [ebp-2Ch] + void *v48; // [esp+24h] [ebp-28h] + _DWORD *v49; // [esp+28h] [ebp-24h] + void *v50; // [esp+28h] [ebp-24h] + _DWORD *v51; // [esp+2Ch] [ebp-20h] + + result = a3; + if ( !a3 ) + return result; + v6 = std::locale::id::_M_id((int *)this); + if ( a1[2] - 1 < v6 ) + { + v46 = v6 + 4; + v48 = (void *)a1[1]; + v7 = -1; + if ( v6 + 4 <= 0x1FFFFFFF ) + v7 = 4 * (v6 + 4); + v8 = operator new[](v7); + v9 = a1[2]; + v47 = v8; + if ( v9 ) + { + v10 = (int *)a1[1]; + v11 = v47; + v49 = a1; + v12 = &v10[v9]; + do + { + v13 = *v10++; + v11 += 4; + *(_DWORD *)(v11 - 4) = v13; + } + while ( v10 != v12 ); + a1 = v49; + } + if ( v46 > v9 ) + { + v14 = (_DWORD *)(v47 + 4 * v9); + do + *v14++ = 0; + while ( v14 != (_DWORD *)(v47 + 4 * v6 + 16) ); + } + v50 = (void *)a1[3]; + v15 = operator new[](v7); + v16 = a1[2]; + v17 = v15; + if ( v16 ) + { + v18 = (int *)a1[3]; + v51 = a1; + v19 = v15; + v20 = &v18[v16]; + do + { + v21 = *v18++; + v19 += 4; + *(_DWORD *)(v19 - 4) = v21; + } + while ( v20 != v18 ); + a1 = v51; + } + if ( v46 > v16 ) + { + v22 = (_DWORD *)(v17 + 4 * v16); + do + *v22++ = 0; + while ( (_DWORD *)(v17 + 4 * v6 + 16) != v22 ); + } + a1[3] = v17; + a1[2] = v46; + a1[1] = v47; + if ( v48 ) + operator delete[](v48); + if ( v50 ) + operator delete[](v50); + } + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)a3 + 1, 1u); + else + ++*((_DWORD *)a3 + 1); + v23 = (volatile signed __int32 **)(a1[1] + 4 * v6); + v24 = *v23; + if ( !*v23 ) + goto LABEL_39; + v25 = std::locale::_S_twinned_facets; + if ( !std::locale::_S_twinned_facets ) + { +LABEL_37: + if ( _CRT_MT ) + goto LABEL_52; + goto LABEL_38; + } + while ( 1 ) + { + if ( std::locale::id::_M_id(v25) == v6 ) + { + v28 = a1[1]; + v30 = v28 + 4 * std::locale::id::_M_id(*(int **)(v27 + 4)); + if ( !*(_DWORD *)v30 ) + goto LABEL_51; + v31 = std::locale::facet::_M_sso_shim((volatile signed __int32 *)a3, *(std::locale::facet **)(v29 + 4), v45); + if ( _CRT_MT ) + { + _InterlockedAdd(v31 + 1, 1u); + v32 = *(_DWORD **)v30; + if ( _CRT_MT ) + { + v33 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v30 + 4), 0xFFFFFFFF); +LABEL_35: + if ( v33 == 1 ) + { + v44 = *(void (__fastcall **)(void *))(*v32 + 4); + if ( v44 != std::locale::facet::~facet ) + goto LABEL_71; +LABEL_63: + operator delete(v32); + } + goto LABEL_36; + } + } + else + { + ++v31[1]; + v32 = *(_DWORD **)v30; + } + v33 = v32[1]; + v32[1] = v33 - 1; + goto LABEL_35; + } + if ( std::locale::id::_M_id(*(int **)(v27 + 4)) == v6 ) + break; + v25 = v26[2]; + if ( !v25 ) + goto LABEL_51; + } + v41 = a1[1]; + v30 = v41 + 4 * std::locale::id::_M_id(*v26); + if ( *(_DWORD *)v30 ) + { + v31 = std::locale::facet::_M_cow_shim((volatile signed __int32 *)a3, *v42, v45); + if ( !_CRT_MT ) + { + ++v31[1]; + v32 = *(_DWORD **)v30; + goto LABEL_60; + } + _InterlockedAdd(v31 + 1, 1u); + v32 = *(_DWORD **)v30; + if ( _CRT_MT ) + { + v43 = _InterlockedExchangeAdd((volatile signed __int32 *)(*(_DWORD *)v30 + 4), 0xFFFFFFFF); + } + else + { +LABEL_60: + v43 = v32[1]; + v32[1] = v43 - 1; + } + if ( v43 == 1 ) + { + v44 = *(void (__fastcall **)(void *))(*v32 + 4); + if ( v44 == std::locale::facet::~facet ) + goto LABEL_63; +LABEL_71: + ((void (*)(void))v44)(); + } +LABEL_36: + *(_DWORD *)v30 = v31; + v24 = *v23; + goto LABEL_37; + } +LABEL_51: + v24 = *v23; + if ( _CRT_MT ) + { +LABEL_52: + if ( _InterlockedExchangeAdd(v24 + 1, 0xFFFFFFFF) == 1 ) + goto LABEL_53; + goto LABEL_39; + } +LABEL_38: + v34 = *((_DWORD *)v24 + 1); + *((_DWORD *)v24 + 1) = v34 - 1; + if ( v34 == 1 ) + { +LABEL_53: + v40 = *(void (__fastcall **)(void *))(*v24 + 4); + if ( v40 == std::locale::facet::~facet ) + operator delete((void *)v24); + else + v40((void *)v24); + } +LABEL_39: + result = a3; + v35 = a1[2]; + *v23 = (volatile signed __int32 *)a3; + if ( v35 ) + { + result = (const std::locale::id *)a1[3]; + v36 = 0; + do + { + v37 = (volatile signed __int32 *)*((_DWORD *)result + v36); + if ( v37 ) + { + if ( _CRT_MT ) + { + v38 = _InterlockedExchangeAdd(v37 + 1, 0xFFFFFFFF); + } + else + { + v38 = *((_DWORD *)v37 + 1); + *((_DWORD *)v37 + 1) = v38 - 1; + } + if ( v38 == 1 ) + { + v39 = *(void (**)(void))(*v37 + 4); + if ( (char *)v39 == (char *)std::locale::facet::~facet ) + operator delete((void *)v37); + else + v39(); + } + result = (const std::locale::id *)a1[3]; + *((_DWORD *)result + v36) = 0; + } + ++v36; + } + while ( a1[2] > v36 ); + } + return result; +} +// 4B35B0: variable 'v27' is possibly undefined +// 4B35C0: variable 'v26' is possibly undefined +// 4B35F0: variable 'v29' is possibly undefined +// 4B35FA: variable 'v45' is possibly undefined +// 4B376E: variable 'v42' is possibly undefined +// 4D9E60: using guessed type void __stdcall __noreturn std::locale::_Impl::_M_install_facet(_DWORD, _DWORD); +// 4F0B00: using guessed type int *std::locale::_S_twinned_facets; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B3850) -------------------------------------------------------- +const std::locale::id *__userpurge std::locale::_Impl::_M_replace_facet@( + _DWORD *a1@, + std::locale::_Impl *this, + const std::locale::_Impl *a3, + const std::locale::id *a4) +{ + unsigned int v5; // eax + std::locale::_Impl *v6; // ecx + const std::locale::id *v7; // eax + + v5 = std::locale::id::_M_id((int *)a3); + if ( *((_DWORD *)this + 2) - 1 < v5 || (v7 = *(const std::locale::id **)(*((_DWORD *)this + 1) + 4 * v5)) == 0 ) + std::__throw_runtime_error((std::runtime_error *)"locale::_Impl::_M_replace_facet"); + return std::locale::_Impl::_M_install_facet(a1, v6, v7, a4); +} +// 4B3887: variable 'v6' is possibly undefined + +//----- (004B38A0) -------------------------------------------------------- +const std::locale::_Impl *__userpurge std::locale::_Impl::_M_replace_category@( + _DWORD *a1@, + std::locale::_Impl *this, + const std::locale::_Impl **a3, + const std::locale::id *const *a4) +{ + const std::locale::_Impl **v4; // ebx + const std::locale::_Impl *result; // eax + const std::locale::id *v7; // [esp+8h] [ebp-14h] + + v4 = a3; + for ( result = *a3; *v4; result = *v4 ) + { + ++v4; + std::locale::_Impl::_M_replace_facet(a1, this, result, v7); + } + return result; +} +// 4B38CC: variable 'v7' is possibly undefined + +//----- (004B38F0) -------------------------------------------------------- +void *__userpurge std::locale::_Impl::_Impl@( + _DWORD *a1@, + std::locale::_Impl *this, + const std::locale::_Impl *a3, + unsigned int a4) +{ + unsigned int v4; // edx + unsigned int v6; // eax + int v7; // eax + unsigned int v8; // esi + unsigned int v9; // edx + int v10; // edx + int v11; // ecx + int v12; // eax + int v13; // edx + int v14; // edx + int v15; // ecx + _DWORD *v16; // eax + _DWORD *v17; // edx + int i; // esi + void *result; // eax + unsigned int Size; // ebp + int v21; // eax + int v22; // edx + const void *Src; // edx + void *v24; // eax + _DWORD *v25; // [esp+1Ch] [ebp-20h] + + v4 = -1; + a1[1] = 0; + a1[3] = 0; + a1[4] = 0; + *a1 = a3; + v6 = *((_DWORD *)this + 2); + a1[2] = v6; + if ( v6 <= 0x1FFFFFFF ) + v4 = 4 * v6; + v7 = operator new[](v4); + v8 = a1[2]; + a1[1] = v7; + v9 = v8; + if ( v8 ) + { + v10 = 0; + while ( 1 ) + { + v11 = *(_DWORD *)(*((_DWORD *)this + 1) + 4 * v10); + *(_DWORD *)(v7 + 4 * v10) = v11; + if ( !v11 ) + goto LABEL_6; + if ( !_CRT_MT ) + break; + _InterlockedAdd((volatile signed __int32 *)(v11 + 4), 1u); + v8 = a1[2]; + if ( v8 <= ++v10 ) + { +LABEL_11: + v9 = -1; + if ( v8 <= 0x1FFFFFFF ) + v9 = 4 * v8; + goto LABEL_13; + } +LABEL_7: + v7 = a1[1]; + } + ++*(_DWORD *)(v11 + 4); + v8 = a1[2]; +LABEL_6: + if ( v8 <= ++v10 ) + goto LABEL_11; + goto LABEL_7; + } +LABEL_13: + v12 = operator new[](v9); + v13 = a1[2]; + a1[3] = v12; + if ( v13 ) + { + v14 = 0; + while ( 1 ) + { + v15 = *(_DWORD *)(*((_DWORD *)this + 3) + 4 * v14); + *(_DWORD *)(v12 + 4 * v14) = v15; + if ( !v15 ) + goto LABEL_16; + if ( !_CRT_MT ) + break; + _InterlockedAdd((volatile signed __int32 *)(v15 + 4), 1u); + if ( a1[2] <= (unsigned int)++v14 ) + goto LABEL_21; +LABEL_17: + v12 = a1[3]; + } + ++*(_DWORD *)(v15 + 4); +LABEL_16: + if ( a1[2] <= (unsigned int)++v14 ) + goto LABEL_21; + goto LABEL_17; + } +LABEL_21: + v16 = (_DWORD *)operator new[](0x18u); + a1[4] = v16; + v17 = v16 + 6; + do + *v16++ = 0; + while ( v17 != v16 ); + for ( i = 0; i != 24; i += 4 ) + { + result = *(void **)(*((_DWORD *)this + 4) + i); + if ( !result ) + break; + Size = strlen(*(const char **)(*((_DWORD *)this + 4) + i)) + 1; + v25 = (_DWORD *)(i + a1[4]); + v21 = operator new[](Size); + v22 = *((_DWORD *)this + 4); + *v25 = v21; + Src = *(const void **)(v22 + i); + v24 = *(void **)(a1[4] + i); + result = memcpy(v24, Src, Size); + } + return result; +} +// 4D9E3C: using guessed type void __stdcall __noreturn std::locale::_Impl::_Impl(_DWORD, _DWORD); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B3A80) -------------------------------------------------------- +int __userpurge std::locale::_Impl::_Impl@(_DWORD *a1@, std::locale::_Impl *this, unsigned int a3) +{ + _DWORD *v4; // eax + _DWORD *v5; // eax + int *v6; // eax + int v7; // esi + int v8; // esi + int v9; // esi + int v10; // esi + int v11; // esi + int v12; // esi + int v13; // esi + int v14; // eax + int v15; // ebx + int result; // eax + std::locale::facet **v17; // [esp+4h] [ebp-34h] + const std::locale::facet *v18; // [esp+8h] [ebp-30h] + const std::locale::facet *v19; // [esp+8h] [ebp-30h] + const std::locale::facet *v20; // [esp+8h] [ebp-30h] + const std::locale::facet *v21; // [esp+8h] [ebp-30h] + const std::locale::facet *v22; // [esp+8h] [ebp-30h] + const std::locale::facet *v23; // [esp+8h] [ebp-30h] + const std::locale::facet *v24; // [esp+8h] [ebp-30h] + const std::locale::facet *v25; // [esp+8h] [ebp-30h] + const std::locale::facet *v26; // [esp+8h] [ebp-30h] + const std::locale::facet *v27; // [esp+8h] [ebp-30h] + const std::locale::facet *v28; // [esp+8h] [ebp-30h] + const std::locale::facet *v29; // [esp+8h] [ebp-30h] + const std::locale::facet *v30; // [esp+8h] [ebp-30h] + const std::locale::facet *v31; // [esp+8h] [ebp-30h] + const std::locale::facet *v32; // [esp+8h] [ebp-30h] + const std::locale::facet *v33; // [esp+8h] [ebp-30h] + const std::locale::facet *v34; // [esp+8h] [ebp-30h] + const std::locale::facet *v35; // [esp+8h] [ebp-30h] + const std::locale::facet *v36; // [esp+8h] [ebp-30h] + const std::locale::facet *v37; // [esp+8h] [ebp-30h] + const std::locale::facet *v38; // [esp+8h] [ebp-30h] + const std::locale::facet *v39; // [esp+8h] [ebp-30h] + const std::locale::facet *v40; // [esp+8h] [ebp-30h] + const std::locale::facet *v41; // [esp+8h] [ebp-30h] + const std::locale::facet *v42; // [esp+8h] [ebp-30h] + const std::locale::facet *v43; // [esp+8h] [ebp-30h] + const std::locale::facet *v44; // [esp+8h] [ebp-30h] + const std::locale::facet *v45; // [esp+8h] [ebp-30h] + const std::locale::facet *v46; // [esp+8h] [ebp-30h] + const std::locale::facet *v47; // [esp+8h] [ebp-30h] + const std::locale::facet *v48; // [esp+8h] [ebp-30h] + const std::locale::facet *v49; // [esp+8h] [ebp-30h] + int v50[8]; // [esp+18h] [ebp-20h] BYREF + + a1[2] = 48; + *a1 = this; + v4 = &`anonymous namespace'::facet_vec; + do + *v4++ = 0; + while ( v4 != (_DWORD *)&`anonymous namespace'::num_get_c ); + a1[1] = &`anonymous namespace'::facet_vec; + v5 = &`anonymous namespace'::cache_vec; + do + *v5++ = 0; + while ( `anonymous namespace'::codecvt_c != v5 ); + a1[3] = &`anonymous namespace'::cache_vec; + v6 = &`anonymous namespace'::name_vec; + do + *v6++ = 0; + while ( v6 != (int *)&unk_4E8D5C ); + a1[4] = &`anonymous namespace'::name_vec; + `anonymous namespace'::name_vec = (int)&`anonymous namespace'::name_c; + `anonymous namespace'::name_c = *(_WORD *)std::locale::facet::_S_get_c_name(); + std::ctype::ctype(`anonymous namespace'::ctype_c, 0, 0, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::ctype::id, + (const std::locale::id *)`anonymous namespace'::ctype_c, + v18); + std::codecvt::codecvt(`anonymous namespace'::codecvt_c, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)`anonymous namespace'::codecvt_c, + v19); + dword_4E83A4 = 1; + word_4E83C4 = 0; + `anonymous namespace'::numpunct_cache_c = (int)&off_4F65A0; + dword_4E83A8 = 0; + dword_4E83AC = 0; + byte_4E83B0 = 0; + dword_4E83B4 = 0; + dword_4E83B8 = 0; + dword_4E83BC = 0; + dword_4E83C0 = 0; + byte_4E8404 = 0; + dword_4E828C = 1; + `anonymous namespace'::numpunct_c = &off_4F5CC8; + dword_4E8290 = (int)&`anonymous namespace'::numpunct_cache_c; + std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_c, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::numpunct::id, + (const std::locale::id *)&`anonymous namespace'::numpunct_c, + v20); + dword_4E8F24 = 1; + `anonymous namespace'::num_get_c = &off_4F6C08; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::num_get>::id, + (const std::locale::id *)&`anonymous namespace'::num_get_c, + v21); + dword_4E8F34 = 1; + `anonymous namespace'::num_put_c = &off_4F6C80; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::num_put>::id, + (const std::locale::id *)&`anonymous namespace'::num_put_c, + v22); + dword_4E8E3C = 1; + `anonymous namespace'::collate_c = &off_4F5C58; + dword_4E8E40 = std::locale::facet::_S_get_c_locale(); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::collate::id, + (const std::locale::id *)&`anonymous namespace'::collate_c, + v23); + `anonymous namespace'::moneypunct_cache_cf = (int)&off_4F66C4; + dword_4E86A4 = 1; + dword_4E86A8 = 0; + dword_4E86AC = 0; + word_4E86B0 = 0; + byte_4E86B2 = 0; + dword_4E86B4 = 0; + dword_4E86B8 = 0; + dword_4E86BC = 0; + dword_4E86C0 = 0; + dword_4E86C4 = 0; + dword_4E86C8 = 0; + dword_4E86CC = 0; + dword_4E86D0 = 0; + dword_4E86D4 = 0; + byte_4E86E3 = 0; + dword_4E8334 = 1; + `anonymous namespace'::moneypunct_cf = &off_4F5810; + dword_4E8338 = (int)&`anonymous namespace'::moneypunct_cache_cf; + std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_cf, 0, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::moneypunct::id, + (const std::locale::id *)&`anonymous namespace'::moneypunct_cf, + v24); + `anonymous namespace'::moneypunct_cache_ct = (int)&off_4F66D4; + dword_4E8704 = 1; + dword_4E8708 = 0; + dword_4E870C = 0; + word_4E8710 = 0; + byte_4E8712 = 0; + dword_4E8714 = 0; + dword_4E8718 = 0; + dword_4E871C = 0; + dword_4E8720 = 0; + dword_4E8724 = 0; + dword_4E8728 = 0; + dword_4E872C = 0; + dword_4E8730 = 0; + dword_4E8734 = 0; + byte_4E8743 = 0; + dword_4E8340 = 1; + `anonymous namespace'::moneypunct_ct = &off_4F5844; + dword_4E8344 = (int)&`anonymous namespace'::moneypunct_cache_ct; + std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_ct, 0, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::moneypunct::id, + (const std::locale::id *)&`anonymous namespace'::moneypunct_ct, + v25); + dword_4E82D4 = 1; + `anonymous namespace'::money_get_c = &off_4F5D68; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::money_get>::id, + (const std::locale::id *)&`anonymous namespace'::money_get_c, + v26); + dword_4E82E4 = 1; + `anonymous namespace'::money_put_c = &off_4F5D98; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::money_put>::id, + (const std::locale::id *)&`anonymous namespace'::money_put_c, + v27); + dword_4E84E4 = 1; + `anonymous namespace'::timepunct_cache_c = (int)&off_4F65D4; + dword_4E84E8 = 0; + dword_4E84EC = 0; + dword_4E84F0 = 0; + dword_4E84F4 = 0; + dword_4E84F8 = 0; + dword_4E84FC = 0; + dword_4E8500 = 0; + dword_4E8504 = 0; + dword_4E8508 = 0; + dword_4E850C = 0; + dword_4E8510 = 0; + dword_4E8514 = 0; + dword_4E8518 = 0; + dword_4E851C = 0; + dword_4E8520 = 0; + dword_4E8524 = 0; + dword_4E8528 = 0; + dword_4E852C = 0; + dword_4E8530 = 0; + dword_4E8534 = 0; + dword_4E8538 = 0; + dword_4E853C = 0; + dword_4E8540 = 0; + dword_4E8544 = 0; + dword_4E8548 = 0; + dword_4E854C = 0; + dword_4E8550 = 0; + dword_4E8554 = 0; + dword_4E8558 = 0; + dword_4E855C = 0; + dword_4E8560 = 0; + dword_4E8564 = 0; + dword_4E8568 = 0; + dword_4E856C = 0; + dword_4E8570 = 0; + dword_4E8574 = 0; + dword_4E8578 = 0; + dword_4E857C = 0; + dword_4E8580 = 0; + dword_4E8584 = 0; + dword_4E8588 = 0; + dword_4E858C = 0; + dword_4E8590 = 0; + dword_4E8594 = 0; + dword_4E8598 = 0; + dword_4E859C = 0; + dword_4E85A0 = 0; + byte_4E85A4 = 0; + std::__timepunct::__timepunct( + `anonymous namespace'::timepunct_c, + (int)&`anonymous namespace'::timepunct_cache_c, + 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::__timepunct::id, + (const std::locale::id *)`anonymous namespace'::timepunct_c, + v28); + dword_4E82A4 = 1; + `anonymous namespace'::time_get_c = &off_4F5D10; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::time_get>::id, + (const std::locale::id *)&`anonymous namespace'::time_get_c, + v29); + dword_4E82B4 = 1; + `anonymous namespace'::time_put_c = &off_4F6DD4; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::time_put>::id, + (const std::locale::id *)&`anonymous namespace'::time_put_c, + v30); + std::messages::messages(`anonymous namespace'::messages_c, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::messages::id, + (const std::locale::id *)`anonymous namespace'::messages_c, + v31); + std::ctype::ctype(`anonymous namespace'::ctype_w, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::ctype::id, + (const std::locale::id *)`anonymous namespace'::ctype_w, + v32); + std::codecvt::codecvt(`anonymous namespace'::codecvt_w, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)`anonymous namespace'::codecvt_w, + v33); + dword_4E8424 = 1; + `anonymous namespace'::numpunct_cache_w = (int)&off_4F65B0; + dword_4E8428 = 0; + dword_4E842C = 0; + byte_4E8430 = 0; + dword_4E8434 = 0; + dword_4E8438 = 0; + dword_4E843C = 0; + dword_4E8440 = 0; + dword_4E8444 = 0; + byte_4E84C4 = 0; + dword_4E8298 = 1; + `anonymous namespace'::numpunct_w = &off_4F5CEC; + dword_4E829C = (int)&`anonymous namespace'::numpunct_cache_w; + std::numpunct::_M_initialize_numpunct(&`anonymous namespace'::numpunct_w, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::numpunct::id, + (const std::locale::id *)&`anonymous namespace'::numpunct_w, + v34); + dword_4E8F2C = 1; + `anonymous namespace'::num_get_w = &off_4F6C44; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::num_get>::id, + (const std::locale::id *)&`anonymous namespace'::num_get_w, + v35); + dword_4E8F3C = 1; + `anonymous namespace'::num_put_w = &off_4F6CB0; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::num_put>::id, + (const std::locale::id *)&`anonymous namespace'::num_put_w, + v36); + dword_4E8E48 = 1; + `anonymous namespace'::collate_w = &off_4F5C74; + dword_4E8E4C = std::locale::facet::_S_get_c_locale(); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::collate::id, + (const std::locale::id *)&`anonymous namespace'::collate_w, + v37); + dword_4E8764 = 1; + `anonymous namespace'::moneypunct_cache_wf = (int)&off_4F66E4; + dword_4E8768 = 0; + dword_4E876C = 0; + byte_4E8770 = 0; + dword_4E8772 = 0; + dword_4E8778 = 0; + dword_4E877C = 0; + dword_4E8780 = 0; + dword_4E8784 = 0; + dword_4E8788 = 0; + dword_4E878C = 0; + dword_4E8790 = 0; + dword_4E8794 = 0; + dword_4E8798 = 0; + byte_4E87B2 = 0; + dword_4E834C = 1; + `anonymous namespace'::moneypunct_wf = &off_4F5878; + dword_4E8350 = (int)&`anonymous namespace'::moneypunct_cache_wf; + std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wf, 0, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::moneypunct::id, + (const std::locale::id *)&`anonymous namespace'::moneypunct_wf, + v38); + dword_4E87C4 = 1; + `anonymous namespace'::moneypunct_cache_wt = (int)&off_4F66F4; + dword_4E87C8 = 0; + dword_4E87CC = 0; + byte_4E87D0 = 0; + dword_4E87D2 = 0; + dword_4E87D8 = 0; + dword_4E87DC = 0; + dword_4E87E0 = 0; + dword_4E87E4 = 0; + dword_4E87E8 = 0; + dword_4E87EC = 0; + dword_4E87F0 = 0; + dword_4E87F4 = 0; + dword_4E87F8 = 0; + byte_4E8812 = 0; + dword_4E8358 = 1; + `anonymous namespace'::moneypunct_wt = &off_4F58AC; + dword_4E835C = (int)&`anonymous namespace'::moneypunct_cache_wt; + std::moneypunct::_M_initialize_moneypunct(&`anonymous namespace'::moneypunct_wt, 0, 0); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::moneypunct::id, + (const std::locale::id *)&`anonymous namespace'::moneypunct_wt, + v39); + dword_4E82DC = 1; + `anonymous namespace'::money_get_w = &off_4F5D80; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::money_get>::id, + (const std::locale::id *)&`anonymous namespace'::money_get_w, + v40); + dword_4E82EC = 1; + `anonymous namespace'::money_put_w = &off_4F5DB0; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::money_put>::id, + (const std::locale::id *)&`anonymous namespace'::money_put_w, + v41); + dword_4E85C4 = 1; + `anonymous namespace'::timepunct_cache_w = (int)&off_4F65E4; + dword_4E85C8 = 0; + dword_4E85CC = 0; + dword_4E85D0 = 0; + dword_4E85D4 = 0; + dword_4E85D8 = 0; + dword_4E85DC = 0; + dword_4E85E0 = 0; + dword_4E85E4 = 0; + dword_4E85E8 = 0; + dword_4E85EC = 0; + dword_4E85F0 = 0; + dword_4E85F4 = 0; + dword_4E85F8 = 0; + dword_4E85FC = 0; + dword_4E8600 = 0; + dword_4E8604 = 0; + dword_4E8608 = 0; + dword_4E860C = 0; + dword_4E8610 = 0; + dword_4E8614 = 0; + dword_4E8618 = 0; + dword_4E861C = 0; + dword_4E8620 = 0; + dword_4E8624 = 0; + dword_4E8628 = 0; + dword_4E862C = 0; + dword_4E8630 = 0; + dword_4E8634 = 0; + dword_4E8638 = 0; + dword_4E863C = 0; + dword_4E8640 = 0; + dword_4E8644 = 0; + dword_4E8648 = 0; + dword_4E864C = 0; + dword_4E8650 = 0; + dword_4E8654 = 0; + dword_4E8658 = 0; + dword_4E865C = 0; + dword_4E8660 = 0; + dword_4E8664 = 0; + dword_4E8668 = 0; + dword_4E866C = 0; + dword_4E8670 = 0; + dword_4E8674 = 0; + dword_4E8678 = 0; + dword_4E867C = 0; + dword_4E8680 = 0; + byte_4E8684 = 0; + std::__timepunct::__timepunct( + `anonymous namespace'::timepunct_w, + (int)&`anonymous namespace'::timepunct_cache_w, + 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::__timepunct::id, + (const std::locale::id *)`anonymous namespace'::timepunct_w, + v42); + dword_4E82AC = 1; + `anonymous namespace'::time_get_w = &off_4F5D3C; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::time_get>::id, + (const std::locale::id *)&`anonymous namespace'::time_get_w, + v43); + dword_4E82BC = 1; + `anonymous namespace'::time_put_w = &off_4F6DE8; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::time_put>::id, + (const std::locale::id *)&`anonymous namespace'::time_put_w, + v44); + std::messages::messages(`anonymous namespace'::messages_w, 1); + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::messages::id, + (const std::locale::id *)`anonymous namespace'::messages_w, + v45); + dword_4E82C4 = 1; + `anonymous namespace'::codecvt_c16 = &off_4F6B4C; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)&`anonymous namespace'::codecvt_c16, + v46); + dword_4E82CC = 1; + `anonymous namespace'::codecvt_c32 = &off_4F6AF4; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)&`anonymous namespace'::codecvt_c32, + v47); + dword_4E8364 = 1; + `anonymous namespace'::codecvt_c16_c8 = &off_4F6B20; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)&`anonymous namespace'::codecvt_c16_c8, + v48); + dword_4E836C = 1; + `anonymous namespace'::codecvt_c32_c8 = &off_4F6AC8; + std::locale::_Impl::_M_install_facet( + a1, + (std::locale::_Impl *)&std::codecvt::id, + (const std::locale::id *)&`anonymous namespace'::codecvt_c32_c8, + v49); + v50[0] = (int)&`anonymous namespace'::numpunct_cache_c; + v50[1] = (int)&`anonymous namespace'::moneypunct_cache_cf; + v50[2] = (int)&`anonymous namespace'::moneypunct_cache_ct; + v50[3] = (int)&`anonymous namespace'::numpunct_cache_w; + v50[4] = (int)&`anonymous namespace'::moneypunct_cache_wf; + v50[5] = (int)&`anonymous namespace'::moneypunct_cache_wt; + std::locale::_Impl::_M_init_extra((int)a1, (std::locale::_Impl *)v50, v17); + v7 = a1[3]; + *(_DWORD *)(v7 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_c; + v8 = a1[3]; + *(_DWORD *)(v8 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_cf; + v9 = a1[3]; + *(_DWORD *)(v9 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_ct; + v10 = a1[3]; + *(_DWORD *)(v10 + 4 * std::locale::id::_M_id(&std::__timepunct::id)) = &`anonymous namespace'::timepunct_cache_c; + v11 = a1[3]; + *(_DWORD *)(v11 + 4 * std::locale::id::_M_id(&std::numpunct::id)) = &`anonymous namespace'::numpunct_cache_w; + v12 = a1[3]; + *(_DWORD *)(v12 + 4 * std::locale::id::_M_id(&std::moneypunct::id)) = &`anonymous namespace'::moneypunct_cache_wf; + v13 = a1[3]; + v14 = std::locale::id::_M_id(&std::moneypunct::id); + v15 = a1[3]; + *(_DWORD *)(v13 + 4 * v14) = &`anonymous namespace'::moneypunct_cache_wt; + result = std::locale::id::_M_id(&std::__timepunct::id); + *(_DWORD *)(v15 + 4 * result) = &`anonymous namespace'::timepunct_cache_w; + return result; +} +// 4B3B4C: variable 'v18' is possibly undefined +// 4B3B79: variable 'v19' is possibly undefined +// 4B3C2B: variable 'v20' is possibly undefined +// 4B3C58: variable 'v21' is possibly undefined +// 4B3C85: variable 'v22' is possibly undefined +// 4B3CBC: variable 'v23' is possibly undefined +// 4B3DA8: variable 'v24' is possibly undefined +// 4B3E93: variable 'v25' is possibly undefined +// 4B3EC0: variable 'v26' is possibly undefined +// 4B3EED: variable 'v27' is possibly undefined +// 4B4113: variable 'v28' is possibly undefined +// 4B4140: variable 'v29' is possibly undefined +// 4B416D: variable 'v30' is possibly undefined +// 4B419A: variable 'v31' is possibly undefined +// 4B41C7: variable 'v32' is possibly undefined +// 4B41F4: variable 'v33' is possibly undefined +// 4B42A7: variable 'v34' is possibly undefined +// 4B42D4: variable 'v35' is possibly undefined +// 4B4301: variable 'v36' is possibly undefined +// 4B4338: variable 'v37' is possibly undefined +// 4B4425: variable 'v38' is possibly undefined +// 4B4512: variable 'v39' is possibly undefined +// 4B453F: variable 'v40' is possibly undefined +// 4B456C: variable 'v41' is possibly undefined +// 4B4792: variable 'v42' is possibly undefined +// 4B47BF: variable 'v43' is possibly undefined +// 4B47EC: variable 'v44' is possibly undefined +// 4B4819: variable 'v45' is possibly undefined +// 4B4846: variable 'v46' is possibly undefined +// 4B4873: variable 'v47' is possibly undefined +// 4B48A0: variable 'v48' is possibly undefined +// 4B48CD: variable 'v49' is possibly undefined +// 4B4907: variable 'v17' is possibly undefined +// 4E8268: using guessed type _DWORD `anonymous namespace'::messages_c[4]; +// 4E8278: using guessed type _DWORD `anonymous namespace'::messages_w[4]; +// 4E828C: using guessed type int dword_4E828C; +// 4E8290: using guessed type int dword_4E8290; +// 4E8298: using guessed type int dword_4E8298; +// 4E829C: using guessed type int dword_4E829C; +// 4E82A4: using guessed type int dword_4E82A4; +// 4E82AC: using guessed type int dword_4E82AC; +// 4E82B4: using guessed type int dword_4E82B4; +// 4E82BC: using guessed type int dword_4E82BC; +// 4E82C4: using guessed type int dword_4E82C4; +// 4E82CC: using guessed type int dword_4E82CC; +// 4E82D4: using guessed type int dword_4E82D4; +// 4E82DC: using guessed type int dword_4E82DC; +// 4E82E4: using guessed type int dword_4E82E4; +// 4E82EC: using guessed type int dword_4E82EC; +// 4E82F0: using guessed type _DWORD `anonymous namespace'::timepunct_c[5]; +// 4E8304: using guessed type _DWORD `anonymous namespace'::timepunct_w[5]; +// 4E8334: using guessed type int dword_4E8334; +// 4E8338: using guessed type int dword_4E8338; +// 4E8340: using guessed type int dword_4E8340; +// 4E8344: using guessed type int dword_4E8344; +// 4E834C: using guessed type int dword_4E834C; +// 4E8350: using guessed type int dword_4E8350; +// 4E8358: using guessed type int dword_4E8358; +// 4E835C: using guessed type int dword_4E835C; +// 4E8364: using guessed type int dword_4E8364; +// 4E836C: using guessed type int dword_4E836C; +// 4E83A0: using guessed type int `anonymous namespace'::numpunct_cache_c; +// 4E83A4: using guessed type int dword_4E83A4; +// 4E83A8: using guessed type int dword_4E83A8; +// 4E83AC: using guessed type int dword_4E83AC; +// 4E83B0: using guessed type char byte_4E83B0; +// 4E83B4: using guessed type int dword_4E83B4; +// 4E83B8: using guessed type int dword_4E83B8; +// 4E83BC: using guessed type int dword_4E83BC; +// 4E83C0: using guessed type int dword_4E83C0; +// 4E83C4: using guessed type __int16 word_4E83C4; +// 4E8404: using guessed type char byte_4E8404; +// 4E8420: using guessed type int `anonymous namespace'::numpunct_cache_w; +// 4E8424: using guessed type int dword_4E8424; +// 4E8428: using guessed type int dword_4E8428; +// 4E842C: using guessed type int dword_4E842C; +// 4E8430: using guessed type char byte_4E8430; +// 4E8434: using guessed type int dword_4E8434; +// 4E8438: using guessed type int dword_4E8438; +// 4E843C: using guessed type int dword_4E843C; +// 4E8440: using guessed type int dword_4E8440; +// 4E8444: using guessed type int dword_4E8444; +// 4E84C4: using guessed type char byte_4E84C4; +// 4E84E0: using guessed type int `anonymous namespace'::timepunct_cache_c; +// 4E84E4: using guessed type int dword_4E84E4; +// 4E84E8: using guessed type int dword_4E84E8; +// 4E84EC: using guessed type int dword_4E84EC; +// 4E84F0: using guessed type int dword_4E84F0; +// 4E84F4: using guessed type int dword_4E84F4; +// 4E84F8: using guessed type int dword_4E84F8; +// 4E84FC: using guessed type int dword_4E84FC; +// 4E8500: using guessed type int dword_4E8500; +// 4E8504: using guessed type int dword_4E8504; +// 4E8508: using guessed type int dword_4E8508; +// 4E850C: using guessed type int dword_4E850C; +// 4E8510: using guessed type int dword_4E8510; +// 4E8514: using guessed type int dword_4E8514; +// 4E8518: using guessed type int dword_4E8518; +// 4E851C: using guessed type int dword_4E851C; +// 4E8520: using guessed type int dword_4E8520; +// 4E8524: using guessed type int dword_4E8524; +// 4E8528: using guessed type int dword_4E8528; +// 4E852C: using guessed type int dword_4E852C; +// 4E8530: using guessed type int dword_4E8530; +// 4E8534: using guessed type int dword_4E8534; +// 4E8538: using guessed type int dword_4E8538; +// 4E853C: using guessed type int dword_4E853C; +// 4E8540: using guessed type int dword_4E8540; +// 4E8544: using guessed type int dword_4E8544; +// 4E8548: using guessed type int dword_4E8548; +// 4E854C: using guessed type int dword_4E854C; +// 4E8550: using guessed type int dword_4E8550; +// 4E8554: using guessed type int dword_4E8554; +// 4E8558: using guessed type int dword_4E8558; +// 4E855C: using guessed type int dword_4E855C; +// 4E8560: using guessed type int dword_4E8560; +// 4E8564: using guessed type int dword_4E8564; +// 4E8568: using guessed type int dword_4E8568; +// 4E856C: using guessed type int dword_4E856C; +// 4E8570: using guessed type int dword_4E8570; +// 4E8574: using guessed type int dword_4E8574; +// 4E8578: using guessed type int dword_4E8578; +// 4E857C: using guessed type int dword_4E857C; +// 4E8580: using guessed type int dword_4E8580; +// 4E8584: using guessed type int dword_4E8584; +// 4E8588: using guessed type int dword_4E8588; +// 4E858C: using guessed type int dword_4E858C; +// 4E8590: using guessed type int dword_4E8590; +// 4E8594: using guessed type int dword_4E8594; +// 4E8598: using guessed type int dword_4E8598; +// 4E859C: using guessed type int dword_4E859C; +// 4E85A0: using guessed type int dword_4E85A0; +// 4E85A4: using guessed type char byte_4E85A4; +// 4E85C0: using guessed type int `anonymous namespace'::timepunct_cache_w; +// 4E85C4: using guessed type int dword_4E85C4; +// 4E85C8: using guessed type int dword_4E85C8; +// 4E85CC: using guessed type int dword_4E85CC; +// 4E85D0: using guessed type int dword_4E85D0; +// 4E85D4: using guessed type int dword_4E85D4; +// 4E85D8: using guessed type int dword_4E85D8; +// 4E85DC: using guessed type int dword_4E85DC; +// 4E85E0: using guessed type int dword_4E85E0; +// 4E85E4: using guessed type int dword_4E85E4; +// 4E85E8: using guessed type int dword_4E85E8; +// 4E85EC: using guessed type int dword_4E85EC; +// 4E85F0: using guessed type int dword_4E85F0; +// 4E85F4: using guessed type int dword_4E85F4; +// 4E85F8: using guessed type int dword_4E85F8; +// 4E85FC: using guessed type int dword_4E85FC; +// 4E8600: using guessed type int dword_4E8600; +// 4E8604: using guessed type int dword_4E8604; +// 4E8608: using guessed type int dword_4E8608; +// 4E860C: using guessed type int dword_4E860C; +// 4E8610: using guessed type int dword_4E8610; +// 4E8614: using guessed type int dword_4E8614; +// 4E8618: using guessed type int dword_4E8618; +// 4E861C: using guessed type int dword_4E861C; +// 4E8620: using guessed type int dword_4E8620; +// 4E8624: using guessed type int dword_4E8624; +// 4E8628: using guessed type int dword_4E8628; +// 4E862C: using guessed type int dword_4E862C; +// 4E8630: using guessed type int dword_4E8630; +// 4E8634: using guessed type int dword_4E8634; +// 4E8638: using guessed type int dword_4E8638; +// 4E863C: using guessed type int dword_4E863C; +// 4E8640: using guessed type int dword_4E8640; +// 4E8644: using guessed type int dword_4E8644; +// 4E8648: using guessed type int dword_4E8648; +// 4E864C: using guessed type int dword_4E864C; +// 4E8650: using guessed type int dword_4E8650; +// 4E8654: using guessed type int dword_4E8654; +// 4E8658: using guessed type int dword_4E8658; +// 4E865C: using guessed type int dword_4E865C; +// 4E8660: using guessed type int dword_4E8660; +// 4E8664: using guessed type int dword_4E8664; +// 4E8668: using guessed type int dword_4E8668; +// 4E866C: using guessed type int dword_4E866C; +// 4E8670: using guessed type int dword_4E8670; +// 4E8674: using guessed type int dword_4E8674; +// 4E8678: using guessed type int dword_4E8678; +// 4E867C: using guessed type int dword_4E867C; +// 4E8680: using guessed type int dword_4E8680; +// 4E8684: using guessed type char byte_4E8684; +// 4E86A0: using guessed type int `anonymous namespace'::moneypunct_cache_cf; +// 4E86A4: using guessed type int dword_4E86A4; +// 4E86A8: using guessed type int dword_4E86A8; +// 4E86AC: using guessed type int dword_4E86AC; +// 4E86B0: using guessed type __int16 word_4E86B0; +// 4E86B2: using guessed type char byte_4E86B2; +// 4E86B4: using guessed type int dword_4E86B4; +// 4E86B8: using guessed type int dword_4E86B8; +// 4E86BC: using guessed type int dword_4E86BC; +// 4E86C0: using guessed type int dword_4E86C0; +// 4E86C4: using guessed type int dword_4E86C4; +// 4E86C8: using guessed type int dword_4E86C8; +// 4E86CC: using guessed type int dword_4E86CC; +// 4E86D0: using guessed type int dword_4E86D0; +// 4E86D4: using guessed type int dword_4E86D4; +// 4E86E3: using guessed type char byte_4E86E3; +// 4E8700: using guessed type int `anonymous namespace'::moneypunct_cache_ct; +// 4E8704: using guessed type int dword_4E8704; +// 4E8708: using guessed type int dword_4E8708; +// 4E870C: using guessed type int dword_4E870C; +// 4E8710: using guessed type __int16 word_4E8710; +// 4E8712: using guessed type char byte_4E8712; +// 4E8714: using guessed type int dword_4E8714; +// 4E8718: using guessed type int dword_4E8718; +// 4E871C: using guessed type int dword_4E871C; +// 4E8720: using guessed type int dword_4E8720; +// 4E8724: using guessed type int dword_4E8724; +// 4E8728: using guessed type int dword_4E8728; +// 4E872C: using guessed type int dword_4E872C; +// 4E8730: using guessed type int dword_4E8730; +// 4E8734: using guessed type int dword_4E8734; +// 4E8743: using guessed type char byte_4E8743; +// 4E8760: using guessed type int `anonymous namespace'::moneypunct_cache_wf; +// 4E8764: using guessed type int dword_4E8764; +// 4E8768: using guessed type int dword_4E8768; +// 4E876C: using guessed type int dword_4E876C; +// 4E8770: using guessed type char byte_4E8770; +// 4E8772: using guessed type int dword_4E8772; +// 4E8778: using guessed type int dword_4E8778; +// 4E877C: using guessed type int dword_4E877C; +// 4E8780: using guessed type int dword_4E8780; +// 4E8784: using guessed type int dword_4E8784; +// 4E8788: using guessed type int dword_4E8788; +// 4E878C: using guessed type int dword_4E878C; +// 4E8790: using guessed type int dword_4E8790; +// 4E8794: using guessed type int dword_4E8794; +// 4E8798: using guessed type int dword_4E8798; +// 4E87B2: using guessed type char byte_4E87B2; +// 4E87C0: using guessed type int `anonymous namespace'::moneypunct_cache_wt; +// 4E87C4: using guessed type int dword_4E87C4; +// 4E87C8: using guessed type int dword_4E87C8; +// 4E87CC: using guessed type int dword_4E87CC; +// 4E87D0: using guessed type char byte_4E87D0; +// 4E87D2: using guessed type int dword_4E87D2; +// 4E87D8: using guessed type int dword_4E87D8; +// 4E87DC: using guessed type int dword_4E87DC; +// 4E87E0: using guessed type int dword_4E87E0; +// 4E87E4: using guessed type int dword_4E87E4; +// 4E87E8: using guessed type int dword_4E87E8; +// 4E87EC: using guessed type int dword_4E87EC; +// 4E87F0: using guessed type int dword_4E87F0; +// 4E87F4: using guessed type int dword_4E87F4; +// 4E87F8: using guessed type int dword_4E87F8; +// 4E8812: using guessed type char byte_4E8812; +// 4E8820: using guessed type __int16 `anonymous namespace'::name_c; +// 4E8840: using guessed type _DWORD `anonymous namespace'::ctype_c[136]; +// 4E8A60: using guessed type _DWORD `anonymous namespace'::ctype_w[184]; +// 4E8D44: using guessed type int `anonymous namespace'::name_vec; +// 4E8E20: using guessed type _DWORD `anonymous namespace'::codecvt_c[3]; +// 4E8E2C: using guessed type _DWORD `anonymous namespace'::codecvt_w[3]; +// 4E8E3C: using guessed type int dword_4E8E3C; +// 4E8E40: using guessed type int dword_4E8E40; +// 4E8E48: using guessed type int dword_4E8E48; +// 4E8E4C: using guessed type int dword_4E8E4C; +// 4E8F24: using guessed type int dword_4E8F24; +// 4E8F2C: using guessed type int dword_4E8F2C; +// 4E8F34: using guessed type int dword_4E8F34; +// 4E8F3C: using guessed type int dword_4E8F3C; +// 4E941C: using guessed type int std::__timepunct::id; +// 4E9420: using guessed type int std::__timepunct::id; +// 4E9588: using guessed type int std::moneypunct::id; +// 4E958C: using guessed type int std::moneypunct::id; +// 4E9590: using guessed type int std::moneypunct::id; +// 4E9594: using guessed type int std::moneypunct::id; +// 4E95A8: using guessed type int std::numpunct::id; +// 4E95AC: using guessed type int std::numpunct::id; +// 4F5810: using guessed type int (*off_4F5810)(); +// 4F5844: using guessed type int (*off_4F5844)(); +// 4F5878: using guessed type int (*off_4F5878)(); +// 4F58AC: using guessed type int (*off_4F58AC)(); +// 4F5C58: using guessed type int (*off_4F5C58)(); +// 4F5C74: using guessed type int (*off_4F5C74)(); +// 4F5CC8: using guessed type int (*off_4F5CC8)(); +// 4F5CEC: using guessed type int (*off_4F5CEC)(); +// 4F5D10: using guessed type int (*off_4F5D10)(); +// 4F5D3C: using guessed type int (*off_4F5D3C)(); +// 4F5D68: using guessed type int (*off_4F5D68)(); +// 4F5D80: using guessed type int (*off_4F5D80)(); +// 4F5D98: using guessed type int (*off_4F5D98)(); +// 4F5DB0: using guessed type int (*off_4F5DB0)(); +// 4F65A0: using guessed type int (*off_4F65A0)(); +// 4F65B0: using guessed type int (*off_4F65B0)(); +// 4F65D4: using guessed type int (*off_4F65D4)(); +// 4F65E4: using guessed type int (*off_4F65E4)(); +// 4F66C4: using guessed type int (*off_4F66C4)(); +// 4F66D4: using guessed type int (*off_4F66D4)(); +// 4F66E4: using guessed type int (*off_4F66E4)(); +// 4F66F4: using guessed type int (*off_4F66F4)(); +// 4F6AC8: using guessed type int (*off_4F6AC8)(); +// 4F6AF4: using guessed type int (*off_4F6AF4)(); +// 4F6B20: using guessed type int (*off_4F6B20)(); +// 4F6B4C: using guessed type int (*off_4F6B4C)(); +// 4F6C08: using guessed type int (*off_4F6C08)(); +// 4F6C44: using guessed type int (*off_4F6C44)(); +// 4F6C80: using guessed type int (*off_4F6C80)(); +// 4F6CB0: using guessed type int (*off_4F6CB0)(); +// 4F6DD4: using guessed type int (*off_4F6DD4)(); +// 4F6DE8: using guessed type int (*off_4F6DE8)(); + +//----- (004B4A10) -------------------------------------------------------- +void __fastcall std::locale::_Impl::~_Impl(_DWORD *a1) +{ + _DWORD *v2; // eax + unsigned int v3; // esi + volatile signed __int32 *v4; // ecx + signed __int32 v5; // eax + void (*v6)(void); // eax + _DWORD *v7; // eax + unsigned int v8; // esi + volatile signed __int32 *v9; // ecx + signed __int32 v10; // eax + void (*v11)(void); // eax + char *v12; // edx + int v13; // esi + + v2 = (_DWORD *)a1[1]; + if ( v2 ) + { + if ( !a1[2] ) + goto LABEL_13; + v3 = 0; + do + { + v4 = (volatile signed __int32 *)v2[v3]; + if ( v4 ) + { + if ( _CRT_MT ) + { + v5 = _InterlockedExchangeAdd(v4 + 1, 0xFFFFFFFF); + } + else + { + v5 = *((_DWORD *)v4 + 1); + *((_DWORD *)v4 + 1) = v5 - 1; + } + if ( v5 == 1 ) + { + v6 = *(void (**)(void))(*v4 + 4); + if ( (char *)v6 == (char *)std::locale::facet::~facet ) + operator delete((void *)v4); + else + v6(); + } + v2 = (_DWORD *)a1[1]; + } + ++v3; + } + while ( a1[2] > v3 ); + if ( v2 ) +LABEL_13: + operator delete[](v2); + } + v7 = (_DWORD *)a1[3]; + if ( v7 ) + { + if ( !a1[2] ) + goto LABEL_26; + v8 = 0; + do + { + v9 = (volatile signed __int32 *)v7[v8]; + if ( v9 ) + { + if ( _CRT_MT ) + { + v10 = _InterlockedExchangeAdd(v9 + 1, 0xFFFFFFFF); + } + else + { + v10 = *((_DWORD *)v9 + 1); + *((_DWORD *)v9 + 1) = v10 - 1; + } + if ( v10 == 1 ) + { + v11 = *(void (**)(void))(*v9 + 4); + if ( (char *)v11 == (char *)std::locale::facet::~facet ) + operator delete((void *)v9); + else + v11(); + } + v7 = (_DWORD *)a1[3]; + } + ++v8; + } + while ( a1[2] > v8 ); + if ( v7 ) +LABEL_26: + operator delete[](v7); + } + v12 = (char *)a1[4]; + v13 = 0; + if ( v12 ) + { + do + { + if ( *(_DWORD *)&v12[v13] ) + { + operator delete[](*(void **)&v12[v13]); + v12 = (char *)a1[4]; + } + v13 += 4; + } + while ( v13 != 24 ); + if ( v12 ) + operator delete[](v12); + } +} +// 4D9DEC: using guessed type int std::locale::_Impl::~_Impl(void); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B4B90) -------------------------------------------------------- +int *const *std::locale::facet::_S_get_c_name() +{ + return &std::locale::facet::_S_c_name; +} + +//----- (004B4BA0) -------------------------------------------------------- +int std::locale::facet::_S_get_c_locale() +{ + int result; // eax + + if ( _CRT_MT ) + { + __gthr_win32_once(&std::locale::facet::_S_once, std::locale::facet::_S_initialize_once); + return std::locale::facet::_S_c_locale; + } + else + { + result = std::locale::facet::_S_c_locale; + if ( !std::locale::facet::_S_c_locale ) + { + std::locale::facet::_S_create_c_locale( + (std::locale::facet *)&std::locale::facet::_S_c_locale, + (int **)&std::locale::facet::_S_c_name); + return std::locale::facet::_S_c_locale; + } + } + return result; +} +// 4E9570: using guessed type int std::locale::facet::_S_c_locale; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B4C10) -------------------------------------------------------- +int __cdecl std::locale::facet::_S_clone_c_locale() +{ + return 0; +} + +//----- (004B4C20) -------------------------------------------------------- +int **__cdecl std::locale::facet::_S_create_c_locale(std::locale::facet *this, int **a2) +{ + int **result; // eax + + result = a2; + *(_DWORD *)this = 0; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + std::__throw_runtime_error((std::runtime_error *)"locale::facet::_S_create_c_locale name not valid"); + return result; +} + +//----- (004B4C60) -------------------------------------------------------- +void std::locale::facet::_S_initialize_once(void) +{ + std::locale::facet::_S_create_c_locale( + (std::locale::facet *)&std::locale::facet::_S_c_locale, + (int **)&std::locale::facet::_S_c_name); +} +// 4E9570: using guessed type int std::locale::facet::_S_c_locale; + +//----- (004B4C90) -------------------------------------------------------- +std::locale::facet *__cdecl std::locale::facet::_S_destroy_c_locale(std::locale::facet *this) +{ + std::locale::facet *result; // eax + + result = this; + *(_DWORD *)this = 0; + return result; +} + +//----- (004B4CA0) -------------------------------------------------------- +int __cdecl std::locale::facet::_S_lc_ctype_c_locale() +{ + return 0; +} + +//----- (004B4CB0) -------------------------------------------------------- +void __fastcall std::locale::facet::~facet(void *a1) +{ + operator delete(a1); +} + +//----- (004B4CD0) -------------------------------------------------------- +std::locale *__cdecl std::locale::global(std::locale *this, volatile signed __int32 **a2) +{ + __gthread_mutex_t *locale_mutex; // eax + std::locale *v3; // edi + volatile signed __int32 *v4; // eax + std::locale::_Impl *v6; // [esp+4h] [ebp-44h] + __gthread_mutex_t *mutex; // [esp+14h] [ebp-34h] + char *Locale[2]; // [esp+18h] [ebp-30h] BYREF + char v9; // [esp+20h] [ebp-28h] BYREF + + std::locale::_S_initialize(); + locale_mutex = `anonymous namespace'::get_locale_mutex(); + mutex = locale_mutex; + if ( !_CRT_MT ) + { + v3 = (std::locale *)std::locale::_S_global; + v4 = *a2; + if ( *a2 == (volatile signed __int32 *)std::locale::_S_classic ) + goto LABEL_4; + goto LABEL_3; + } + if ( __gthr_win32_mutex_lock(locale_mutex) ) + __gnu_cxx::__throw_concurrence_lock_error(); + v4 = (volatile signed __int32 *)std::locale::_S_classic; + v3 = (std::locale *)std::locale::_S_global; + if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) + { + if ( !_CRT_MT ) + { + v4 = *a2; +LABEL_3: + ++*v4; + goto LABEL_4; + } + _InterlockedAdd(*a2, 1u); + v4 = *a2; + } +LABEL_4: + std::locale::_S_global = (int)v4; + std::locale::name[abi:cxx11]((int)Locale, (int *)a2); + if ( std::string::compare((int)Locale, "*") ) + setlocale(0, Locale[0]); + if ( Locale[0] != &v9 ) + operator delete(Locale[0]); + if ( _CRT_MT && __gthr_win32_mutex_unlock(mutex) ) + std::locale::global(this, (void (__cdecl *)(void *))a2); + std::locale::locale(this, v3, v6); + return this; +} +// 4B4D56: variable 'v6' is possibly undefined +// 4E9568: using guessed type int std::locale::_S_classic; +// 4E9584: using guessed type int std::locale::_S_global; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B4E00) -------------------------------------------------------- +_DWORD *std::locale::classic() +{ + std::locale::_Impl *v1; // [esp+4h] [ebp-18h] + + std::locale::_S_initialize(); + std::locale::locale(&`anonymous namespace'::c_locale, (std::locale *)std::locale::_S_classic, v1); + return &`anonymous namespace'::c_locale; +} +// 4B4E15: variable 'v1' is possibly undefined +// 4E8D40: using guessed type _DWORD `anonymous namespace'::c_locale; +// 4E9568: using guessed type int std::locale::_S_classic; + +//----- (004B4E30) -------------------------------------------------------- +std::locale *__userpurge std::locale::locale@(_DWORD *a1@, std::locale *this, std::locale::_Impl *a3) +{ + std::locale *result; // eax + + result = this; + *a1 = this; + return result; +} + +//----- (004B4E40) -------------------------------------------------------- +volatile signed __int32 *__userpurge std::locale::locale@( + volatile signed __int32 **a1@, + volatile signed __int32 **this, + const std::locale *a3) +{ + volatile signed __int32 *result; // eax + + result = *this; + *a1 = *this; + if ( result != (volatile signed __int32 *)std::locale::_S_classic ) + { + if ( _CRT_MT ) + _InterlockedAdd(result, 1u); + else + ++*result; + } + return result; +} +// 4E9568: using guessed type int std::locale::_S_classic; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B4E70) -------------------------------------------------------- +int __fastcall std::locale::locale(_DWORD *a1) +{ + int result; // eax + __gthread_mutex_t *mutex; // esi + _DWORD *v4; // eax + _DWORD *exception; // eax + + *a1 = 0; + std::locale::_S_initialize(); + result = std::locale::_S_global; + *a1 = std::locale::_S_global; + if ( result != std::locale::_S_classic ) + { + mutex = `anonymous namespace'::get_locale_mutex(); + v4 = (_DWORD *)std::locale::_S_global; + if ( !_CRT_MT ) + goto LABEL_3; + if ( __gthr_win32_mutex_lock(mutex) ) + __gnu_cxx::__throw_concurrence_lock_error(); + v4 = (_DWORD *)std::locale::_S_global; + if ( _CRT_MT ) + { + _InterlockedAdd((volatile signed __int32 *)std::locale::_S_global, 1u); + v4 = (_DWORD *)std::locale::_S_global; + } + else + { +LABEL_3: + ++*v4; + } + *a1 = v4; + result = _CRT_MT; + if ( _CRT_MT ) + { + result = __gthr_win32_mutex_unlock(mutex); + if ( result ) + { + exception = __cxa_allocate_exception(4u); + *exception = &off_4F534C; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::__concurrence_unlock_error, + (void (__cdecl *)(void *))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error); + } + } + } + return result; +} +// 4E9568: using guessed type int std::locale::_S_classic; +// 4E9584: using guessed type int std::locale::_S_global; +// 4F1314: using guessed type int *`typeinfo for'__gnu_cxx::__concurrence_unlock_error; +// 4F534C: using guessed type void (__cdecl *off_4F534C)(__gnu_cxx::__concurrence_unlock_error *__hidden this); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B4F20) -------------------------------------------------------- +void __fastcall std::locale::~locale(_DWORD **a1) +{ + _DWORD *v1; // ebx + int v2; // eax + + v1 = *a1; + if ( *a1 != (_DWORD *)std::locale::_S_classic ) + { + if ( !_CRT_MT ) + { + v2 = (*v1)--; + if ( v2 != 1 ) + return; +LABEL_6: + std::locale::_Impl::~_Impl(v1); + operator delete(v1); + return; + } + if ( _InterlockedExchangeAdd(v1, 0xFFFFFFFF) == 1 ) + goto LABEL_6; + } +} +// 4E9568: using guessed type int std::locale::_S_classic; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B4F80) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::locale::operator=( + volatile signed __int32 **this, + volatile signed __int32 **a2) +{ + volatile signed __int32 **result; // eax + int v3; // ecx + volatile signed __int32 *v4; // edx + volatile signed __int32 *v5; // ebx + volatile signed __int32 v6; // edx + volatile signed __int32 **v7; // [esp+1Ch] [ebp-10h] + + result = this; + v3 = std::locale::_S_classic; + v4 = *a2; + if ( *a2 != (volatile signed __int32 *)std::locale::_S_classic ) + { + if ( _CRT_MT ) + { + _InterlockedAdd(v4, 1u); + v3 = std::locale::_S_classic; + } + else + { + ++*v4; + } + } + v5 = *result; + if ( *result == (volatile signed __int32 *)v3 ) + goto LABEL_7; + if ( _CRT_MT ) + { + if ( _InterlockedExchangeAdd(v5, 0xFFFFFFFF) != 1 ) + goto LABEL_7; + } + else + { + v6 = (*v5)--; + if ( v6 != 1 ) + { +LABEL_7: + *result = *a2; + return result; + } + } + v7 = result; + std::locale::_Impl::~_Impl(v5); + operator delete((void *)v5); + result = v7; + *v7 = *a2; + return result; +} +// 4E9568: using guessed type int std::locale::_S_classic; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004B5020) -------------------------------------------------------- +char *__thiscall std::vector>::_M_realloc_insert const&>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // ebx + int v4; // eax + bool v5; // cf + unsigned int v6; // ebx + char *v7; // edi + _DWORD *v8; // esi + char *i; // eax + char *v10; // esi + char *v11; // edx + _DWORD *v12; // ecx + volatile signed __int32 **v13; // ecx + char *v14; // esi + char *result; // eax + void (__cdecl *v16)(void *); // [esp+4h] [ebp-44h] + char *v17; // [esp+18h] [ebp-30h] + char *v18; // [esp+1Ch] [ebp-2Ch] + _DWORD *v19; // [esp+20h] [ebp-28h] + char *v20; // [esp+20h] [ebp-28h] + char *v21; // [esp+24h] [ebp-24h] + char *v23; // [esp+2Ch] [ebp-1Ch] + + v21 = this[1]; + v23 = *this; + v3 = (v21 - *this) >> 3; + if ( v3 == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v4 = (v21 - *this) >> 3; + if ( !v3 ) + v4 = 1; + v5 = __CFADD__(v4, v3); + v6 = v4 + v3; + if ( v5 ) + goto LABEL_8; + v7 = 0; + if ( v6 ) + { + if ( v6 <= 0xFFFFFFF ) + { +LABEL_9: + v7 = (char *)operator new((struct type_info *)(8 * v6), v16); + goto LABEL_10; + } +LABEL_8: + v6 = 0xFFFFFFF; + goto LABEL_9; + } +LABEL_10: + v8 = v7; + std::__shared_ptr::__shared_ptr(&v7[a2 - v23], a3); + for ( i = v23; a2 != i; i = v20 + 8 ) + { + v12 = v8; + v8 += 2; + v20 = i; + std::__shared_ptr::__shared_ptr(v12, i); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v20 + 1); + } + v10 = i; + v11 = &v7[i - v23 + 8]; + v19 = v11; + while ( v10 != v21 ) + { + v17 = i; + v18 = v11; + std::__shared_ptr::__shared_ptr(v11, v10); + v13 = (volatile signed __int32 **)(v10 + 4); + v10 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); + i = v17; + v11 = v18 + 8; + } + v14 = (char *)v19 + v10 - i; + if ( v23 ) + operator delete(v23); + *this = v7; + this[1] = v14; + result = &v7[8 * v6]; + this[2] = result; + return result; +} +// 4B508D: variable 'v16' is possibly undefined + +//----- (004B5140) -------------------------------------------------------- +char *__thiscall std::vector>::push_back(char **this, _DWORD *a2) +{ + char *v3; // ecx + char *result; // eax + + v3 = this[1]; + if ( v3 == this[2] ) + return std::vector>::_M_realloc_insert const&>( + this, + v3, + a2); + result = (char *)std::__shared_ptr::__shared_ptr(v3, a2); + this[1] += 8; + return result; +} + +//----- (004B517C) -------------------------------------------------------- +char *__thiscall std::vector>::_M_realloc_insert const&>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // eax + int v4; // edx + bool v5; // cf + unsigned int v6; // eax + int v7; // edi + _DWORD *v8; // ebx + int v9; // eax + _DWORD *v10; // ebx + char *i; // esi + int v12; // eax + volatile signed __int32 **v13; // ecx + char *v14; // ebx + _DWORD *v15; // edx + int v16; // eax + volatile signed __int32 **v17; // ecx + char *v18; // ebx + char *result; // eax + void (__cdecl *v20)(void *); // [esp+4h] [ebp-44h] + _DWORD *v21; // [esp+18h] [ebp-30h] + _DWORD *v22; // [esp+18h] [ebp-30h] + char *v23; // [esp+1Ch] [ebp-2Ch] + char *v25; // [esp+28h] [ebp-20h] + _DWORD *v26; // [esp+2Ch] [ebp-1Ch] + + v23 = this[1]; + v25 = *this; + v3 = (v23 - *this) >> 3; + if ( v3 == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v4 = (v23 - *this) >> 3; + if ( !v3 ) + v4 = 1; + v5 = __CFADD__(v4, v3); + v6 = v4 + v3; + v7 = v6; + if ( v5 ) + goto LABEL_8; + v26 = 0; + if ( !v6 ) + goto LABEL_10; + if ( v6 > 0xFFFFFFF ) +LABEL_8: + v7 = 0xFFFFFFF; + v26 = operator new((struct type_info *)(8 * v7), v20); +LABEL_10: + v8 = (_DWORD *)((char *)v26 + a2 - v25); + *v8 = *a3; + v9 = a3[1]; + v8[1] = v9; + if ( v9 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v9 + 4)); + v10 = v26; + for ( i = v25; a2 != i; i += 8 ) + { + *v10 = *(_DWORD *)i; + v12 = *((_DWORD *)i + 1); + v10[1] = v12; + if ( v12 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v12 + 4)); + v13 = (volatile signed __int32 **)(i + 4); + v10 += 2; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); + } + v14 = i; + v15 = (_DWORD *)((char *)v26 + i - v25 + 8); + while ( v14 != v23 ) + { + *v15 = *(_DWORD *)v14; + v16 = *((_DWORD *)v14 + 1); + v15[1] = v16; + if ( v16 ) + { + v21 = v15; + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v16 + 4)); + v15 = v21; + } + v17 = (volatile signed __int32 **)(v14 + 4); + v22 = v15; + v14 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v17); + v15 = v22 + 2; + } + v18 = &v14[(char *)v26 - v25 + 8]; + if ( v25 ) + operator delete(v25); + this[1] = v18; + *this = (char *)v26; + result = (char *)&v26[2 * v7]; + this[2] = result; + return result; +} +// 4B51F2: variable 'v20' is possibly undefined + +//----- (004B52C4) -------------------------------------------------------- +char *__thiscall std::vector>::push_back(int this, _DWORD *a2) +{ + int v2; // edx + char *result; // eax + + v2 = *(_DWORD *)(this + 4); + if ( v2 == *(_DWORD *)(this + 8) ) + return std::vector>::_M_realloc_insert const&>( + (char **)this, + (char *)v2, + a2); + result = (char *)a2[1]; + *(_DWORD *)v2 = *a2; + *(_DWORD *)(v2 + 4) = result; + if ( result ) + result = (char *)__gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)result + 1); + *(_DWORD *)(this + 4) += 8; + return result; +} +// 4B52EC: variable 'this' is possibly undefined + +//----- (004B5308) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::vector>::vector( + volatile signed __int32 **this, + volatile signed __int32 **a2) +{ + int v3; // esi + volatile signed __int32 *v4; // edx + volatile signed __int32 *result; // eax + volatile signed __int32 *v6; // ecx + volatile signed __int32 *v7; // esi + volatile signed __int32 *v8; // edi + void (__cdecl *v9)(void *); // [esp+4h] [ebp-34h] + volatile signed __int32 *v10; // [esp+1Ch] [ebp-1Ch] + + v3 = (char *)a2[1] - (char *)*a2; + *this = 0; + this[1] = 0; + this[2] = 0; + if ( v3 >> 3 ) + { + if ( (unsigned int)(v3 >> 3) > 0xFFFFFFF ) + std::__throw_bad_alloc(); + v4 = (volatile signed __int32 *)operator new((struct type_info *)v3, v9); + } + else + { + v4 = 0; + } + result = *a2; + *this = v4; + this[1] = v4; + v10 = result; + v6 = result; + this[2] = (volatile signed __int32 *)((char *)v4 + v3); + v7 = a2[1]; + v8 = v4; + while ( v7 != v6 ) + { + *v8 = *v6; + result = (volatile signed __int32 *)*((_DWORD *)v6 + 1); + *((_DWORD *)v8 + 1) = result; + if ( result ) + result = __gnu_cxx::__atomic_add_dispatch(result + 1); + v8 += 2; + v6 += 2; + } + this[1] = (volatile signed __int32 *)((char *)v4 + (char *)v7 - (char *)v10); + return result; +} +// 4B5345: variable 'v9' is possibly undefined +// 4B5383: variable 'v6' is possibly undefined +// 4B538B: variable 'v4' is possibly undefined + +//----- (004B539C) -------------------------------------------------------- +char *__thiscall std::vector>::_M_realloc_insert const&>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // ebx + int v4; // eax + bool v5; // cf + unsigned int v6; // ebx + char *v7; // edi + _DWORD *v8; // esi + char *i; // eax + char *v10; // esi + char *v11; // edx + _DWORD *v12; // ecx + volatile signed __int32 **v13; // ecx + char *v14; // esi + char *result; // eax + void (__cdecl *v16)(void *); // [esp+4h] [ebp-44h] + char *v17; // [esp+18h] [ebp-30h] + char *v18; // [esp+1Ch] [ebp-2Ch] + _DWORD *v19; // [esp+20h] [ebp-28h] + char *v20; // [esp+20h] [ebp-28h] + char *v21; // [esp+24h] [ebp-24h] + char *v23; // [esp+2Ch] [ebp-1Ch] + + v21 = this[1]; + v23 = *this; + v3 = (v21 - *this) >> 3; + if ( v3 == 0xFFFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v4 = (v21 - *this) >> 3; + if ( !v3 ) + v4 = 1; + v5 = __CFADD__(v4, v3); + v6 = v4 + v3; + if ( v5 ) + goto LABEL_8; + v7 = 0; + if ( v6 ) + { + if ( v6 <= 0xFFFFFFF ) + { +LABEL_9: + v7 = (char *)operator new((struct type_info *)(8 * v6), v16); + goto LABEL_10; + } +LABEL_8: + v6 = 0xFFFFFFF; + goto LABEL_9; + } +LABEL_10: + v8 = v7; + std::__shared_ptr::__shared_ptr(&v7[a2 - v23], a3); + for ( i = v23; a2 != i; i = v20 + 8 ) + { + v12 = v8; + v8 += 2; + v20 = i; + std::__shared_ptr::__shared_ptr(v12, i); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)v20 + 1); + } + v10 = i; + v11 = &v7[i - v23 + 8]; + v19 = v11; + while ( v10 != v21 ) + { + v17 = i; + v18 = v11; + std::__shared_ptr::__shared_ptr(v11, v10); + v13 = (volatile signed __int32 **)(v10 + 4); + v10 += 8; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v13); + i = v17; + v11 = v18 + 8; + } + v14 = (char *)v19 + v10 - i; + if ( v23 ) + operator delete(v23); + *this = v7; + this[1] = v14; + result = &v7[8 * v6]; + this[2] = result; + return result; +} +// 4B5409: variable 'v16' is possibly undefined + +//----- (004B54BC) -------------------------------------------------------- +char *__thiscall std::vector>::push_back(char **this, _DWORD *a2) +{ + char *v3; // ecx + char *result; // eax + + v3 = this[1]; + if ( v3 == this[2] ) + return std::vector>::_M_realloc_insert const&>( + this, + v3, + a2); + result = (char *)std::__shared_ptr::__shared_ptr(v3, a2); + this[1] += 8; + return result; +} + +//----- (004B54F8) -------------------------------------------------------- +int __thiscall std::vector::_M_realloc_insert( + void ***this, + char *a2, + volatile signed __int32 **a3) +{ + int v3; // esi + int v5; // eax + char *v6; // esi + void **v7; // ebx + char *i; // eax + char *v9; // eax + unsigned int v10; // ebx + char *v11; // ebx + char *j; // eax + void *v13; // edx + void **v14; // ecx + int result; // eax + void (__cdecl *v16)(void *); // [esp+4h] [ebp-44h] + char *v17; // [esp+18h] [ebp-30h] + void **v18; // [esp+1Ch] [ebp-2Ch] + char *v19; // [esp+20h] [ebp-28h] + char *v20; // [esp+20h] [ebp-28h] + char *v21; // [esp+24h] [ebp-24h] + unsigned int v22; // [esp+28h] [ebp-20h] + void **v23; // [esp+2Ch] [ebp-1Ch] + + v21 = (char *)this[1]; + v23 = *this; + v3 = -1431655765 * ((v21 - (char *)*this) >> 2); + if ( v3 == 178956970 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = -1431655765 * ((v21 - (char *)*this) >> 2); + if ( !v3 ) + v5 = 1; + v22 = v5 - 1431655765 * ((v21 - (char *)*this) >> 2); + if ( __CFADD__(v5, v3) ) + goto LABEL_8; + v6 = 0; + if ( v22 ) + { + if ( v22 <= 0xAAAAAAA ) + { +LABEL_9: + v6 = (char *)operator new((struct type_info *)(12 * v22), v16); + goto LABEL_10; + } +LABEL_8: + v22 = 178956970; + goto LABEL_9; + } +LABEL_10: + v7 = v23; + std::vector>::vector((volatile signed __int32 **)&v6[a2 - (char *)v23], a3); + for ( i = v6; ; i = v20 ) + { + v9 = i + 12; + if ( a2 == (char *)v7 ) + break; + v13 = *v7; + v14 = v7; + v20 = v9; + v7 += 3; + *((_DWORD *)v9 - 3) = v13; + *((_DWORD *)v9 - 2) = *(v7 - 2); + *((_DWORD *)v9 - 1) = *(v7 - 1); + *(v7 - 1) = 0; + *(v7 - 2) = 0; + *(v7 - 3) = 0; + std::vector>::~vector(v14); + } + v10 = (715827883 * ((unsigned int)(a2 - (char *)v23) >> 2)) & 0x3FFFFFFF; + v18 = &v23[3 * v10]; + v19 = &v6[12 * v10 + 12]; + v11 = v19; + for ( j = (char *)v18; v21 != j; j = v17 + 12 ) + { + v17 = j; + v11 += 12; + *((_DWORD *)v11 - 3) = *(_DWORD *)j; + *((_DWORD *)v11 - 2) = *((_DWORD *)j + 1); + *((_DWORD *)v11 - 1) = *((_DWORD *)j + 2); + *((_DWORD *)j + 2) = 0; + *((_DWORD *)j + 1) = 0; + *(_DWORD *)j = 0; + std::vector>::~vector((void **)j); + } + if ( v23 ) + operator delete(v23); + result = 12 * v22; + *this = (void **)v6; + this[1] = (void **)&v19[12 * ((715827883 * ((unsigned int)(v21 - (char *)v18) >> 2)) & 0x3FFFFFFF)]; + this[2] = (void **)&v6[12 * v22]; + return result; +} +// 4B556F: variable 'v16' is possibly undefined + +//----- (004B56B0) -------------------------------------------------------- +volatile signed __int32 *__thiscall std::vector::push_back( + int this, + volatile signed __int32 **a2) +{ + char *v3; // ecx + volatile signed __int32 *result; // eax + + v3 = *(char **)(this + 4); + if ( v3 == *(char **)(this + 8) ) + return (volatile signed __int32 *)std::vector::_M_realloc_insert( + (void ***)this, + v3, + a2); + result = std::vector>::vector((volatile signed __int32 **)v3, a2); + *(_DWORD *)(this + 4) += 12; + return result; +} + +//----- (004B56EC) -------------------------------------------------------- +char **__thiscall std::vector::_M_realloc_insert(char **this, char *a2, _DWORD *a3) +{ + int v3; // ebx + int v4; // eax + bool v5; // cf + unsigned int v6; // ebx + char *v7; // edi + int v8; // eax + _DWORD *v9; // edi + _DWORD *v10; // eax + char *v11; // esi + char **result; // eax + void (__cdecl *v13)(void *); // [esp+4h] [ebp-34h] + char *v14; // [esp+10h] [ebp-28h] + char *v16; // [esp+18h] [ebp-20h] + char *v17; // [esp+1Ch] [ebp-1Ch] + + v14 = this[1]; + v16 = *this; + v3 = -373475417 * ((v14 - *this) >> 2); + if ( v3 == 23342213 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v4 = -373475417 * ((v14 - *this) >> 2); + if ( !v3 ) + v4 = 1; + v5 = __CFADD__(v4, v3); + v6 = v4 - 373475417 * ((v14 - *this) >> 2); + if ( v5 ) + goto LABEL_8; + v17 = 0; + if ( !v6 ) + goto LABEL_10; + if ( v6 > 0x1642C85 ) +LABEL_8: + v6 = 23342213; + v17 = (char *)operator new((struct type_info *)(92 * v6), v13); +LABEL_10: + v7 = &v17[a2 - v16]; + *(_DWORD *)v7 = *a3; + *((_DWORD *)v7 + 1) = a3[1]; + v8 = a3[2]; + *((_DWORD *)v7 + 2) = v8; + if ( v8 ) + __gnu_cxx::__atomic_add_dispatch((volatile signed __int32 *)(v8 + 4)); + v9 = v7 + 28; + *(v9 - 4) = a3[3]; + *(v9 - 3) = a3[4]; + *(v9 - 2) = a3[5]; + *(v9 - 1) = a3[6]; + qmemcpy(v9, a3 + 7, 0x40u); + v10 = std::__relocate_a_1>(v16, a2, v17); + v11 = (char *)std::__relocate_a_1>(a2, v14, v10 + 23); + if ( v16 ) + operator delete(v16); + this[1] = v11; + *this = v17; + result = this; + this[2] = &v17[92 * v6]; + return result; +} +// 4B5763: variable 'v13' is possibly undefined + +//----- (004B5800) -------------------------------------------------------- +char **__thiscall std::vector::push_back(char **this, WXSS::Token *a2) +{ + char *v3; // ecx + char **result; // eax + int v5; // edx + const WXSS::Token *v6; // [esp+4h] [ebp-14h] + + v3 = this[1]; + if ( v3 == this[2] ) + return std::vector::_M_realloc_insert(this, v3, a2); + result = (char **)WXSS::Token::Token(v3, a2, v6); + *(_DWORD *)(v5 + 4) += 92; + return result; +} +// 4B5816: variable 'v6' is possibly undefined +// 4B581B: variable 'v5' is possibly undefined + +//----- (004B5838) -------------------------------------------------------- +void __thiscall std::vector::emplace_back(void ***this, _DWORD *a2) +{ + void (__cdecl *v3)(void *); // edx + unsigned int v4; // edi + void **v5; // esi + _DWORD *v6; // eax + char *v7; // [esp+10h] [ebp-28h] + void **v8; // [esp+14h] [ebp-24h] + void **v9; // [esp+18h] [ebp-20h] + void **v10; // [esp+1Ch] [ebp-1Ch] + void **v11; // [esp+1Ch] [ebp-1Ch] + + v10 = this[1]; + if ( v10 == this[2] ) + { + v4 = std::vector::_M_check_len(this, 1u, (std::length_error *)"vector::_M_realloc_insert"); + v9 = *this; + v8 = this[1]; + v7 = (char *)((char *)v10 - (char *)*this); + if ( v4 ) + { + if ( v4 > 0x5555555 ) + std::__throw_bad_alloc(); + v5 = (void **)operator new((struct type_info *)(24 * v4), v3); + } + else + { + v5 = 0; + } + std::string::basic_string(&v7[(_DWORD)v5], a2); + v6 = std::__relocate_a_1>(v9, v10, v5); + v11 = (void **)std::__relocate_a_1>(v10, v8, v6 + 6); + std::_Vector_base::_M_deallocate(v9); + *this = v5; + this[2] = &v5[6 * v4]; + this[1] = v11; + } + else + { + std::string::basic_string(v10, a2); + this[1] += 6; + } +} +// 4B58A9: variable 'v3' is possibly undefined + +//----- (004B5908) -------------------------------------------------------- +#error "4B59BB: call analysis failed (funcsize=71)" + +//----- (004B59E8) -------------------------------------------------------- +_BYTE *__thiscall std::vector::push_back(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + _BYTE *result; // eax + + v3 = (_DWORD *)this[1]; + if ( v3 == (_DWORD *)this[2] ) + return (_BYTE *)std::vector::_M_realloc_insert(v3, a2); + result = std::string::basic_string(v3, a2); + this[1] += 24; + return result; +} +// 4B5908: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); + +//----- (004B5A24) -------------------------------------------------------- +_DWORD *__thiscall std::vector>::emplace_back>( + char **this, + _DWORD *a2) +{ + char *v3; // ecx + _DWORD *v4; // ecx + _DWORD *result; // eax + + v3 = this[1]; + if ( v3 == this[2] ) + return (_DWORD *)std::vector>::_M_realloc_insert>( + this, + v3, + a2); + v4 = v3 + 4; + *(v4 - 1) = *a2; + result = std::string::basic_string(v4, a2 + 1); + this[1] += 28; + return result; +} + +//----- (004B5A6C) -------------------------------------------------------- +int __thiscall std::vector>::_M_realloc_insert>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // eax + int v5; // esi + bool v6; // cf + unsigned int v7; // eax + int v8; // esi + char *v9; // ebx + char *v10; // eax + char *v11; // ebx + char *v12; // eax + unsigned int v13; // ebx + char *v14; // eax + char *v15; // ebx + void **v16; // edx + void **v17; // edx + char *v18; // ebx + int result; // eax + void (__cdecl *v20)(void *); // [esp+4h] [ebp-44h] + char *v21; // [esp+14h] [ebp-34h] + void **v22; // [esp+18h] [ebp-30h] + char *v23; // [esp+1Ch] [ebp-2Ch] + char *v24; // [esp+1Ch] [ebp-2Ch] + char *v25; // [esp+20h] [ebp-28h] + void **v26; // [esp+20h] [ebp-28h] + char *v27; // [esp+24h] [ebp-24h] + char *v28; // [esp+28h] [ebp-20h] + char *v29; // [esp+2Ch] [ebp-1Ch] + + v27 = this[1]; + v29 = *this; + v3 = -1227133513 * ((v27 - *this) >> 2); + if ( v3 == 76695844 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = -1227133513 * ((v27 - v29) >> 2); + if ( !v3 ) + v5 = 1; + v6 = __CFADD__(v5, v3); + v7 = v5 - 1227133513 * ((v27 - v29) >> 2); + v8 = v7; + if ( v6 ) + goto LABEL_8; + v28 = 0; + if ( v7 ) + { + if ( v7 <= 0x4924924 ) + { +LABEL_9: + v28 = (char *)operator new((struct type_info *)(28 * v8), v20); + goto LABEL_10; + } +LABEL_8: + v8 = 76695844; + goto LABEL_9; + } +LABEL_10: + v9 = &v28[a2 - v29]; + *(_DWORD *)v9 = *a3; + std::string::basic_string((_DWORD *)v9 + 1, a3 + 1); + v10 = v28; + v11 = v29; + while ( 1 ) + { + v12 = v10 + 28; + if ( a2 == v11 ) + break; + v24 = v12; + *((_DWORD *)v12 - 7) = *(_DWORD *)v11; + v16 = (void **)(v11 + 4); + v11 += 28; + v26 = v16; + std::string::basic_string((_DWORD *)v12 - 6, v16); + std::string::_M_dispose(v26); + v10 = v24; + } + v13 = (920350135 * ((unsigned int)(a2 - v29) >> 2)) & 0x3FFFFFFF; + v23 = &v29[28 * v13]; + v25 = &v28[28 * v13 + 28]; + v14 = v25; + v15 = v23; + while ( v15 != v27 ) + { + v21 = v14; + *(_DWORD *)v14 = *(_DWORD *)v15; + v17 = (void **)(v15 + 4); + v15 += 28; + v22 = v17; + std::string::basic_string((_DWORD *)v14 + 1, v17); + std::string::_M_dispose(v22); + v14 = v21 + 28; + } + v18 = &v25[28 * ((920350135 * ((unsigned int)(v15 - v23) >> 2)) & 0x3FFFFFFF)]; + if ( v29 ) + operator delete(v29); + this[1] = v18; + *this = v28; + result = 28 * v8; + this[2] = &v28[28 * v8]; + return result; +} +// 4B5ADF: variable 'v20' is possibly undefined + +//----- (004B5BE8) -------------------------------------------------------- +char **__thiscall std::vector>>::emplace_back>>( + int this, + _DWORD *a2) +{ + int v3; // esi + char **result; // eax + + v3 = *(_DWORD *)(this + 4); + if ( v3 == *(_DWORD *)(this + 8) ) + return std::vector>>::_M_realloc_insert>>( + (char **)this, + (char *)v3, + a2); + std::string::basic_string((_DWORD *)v3, a2); + result = (char **)std::__shared_ptr::__shared_ptr( + (_DWORD *)(v3 + 24), + a2 + 6); + *(_DWORD *)(this + 4) += 32; + return result; +} + +//----- (004B5C38) -------------------------------------------------------- +char **__thiscall std::vector>>::_M_realloc_insert>>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // edi + int v4; // eax + bool v5; // cf + unsigned int v6; // edi + _DWORD *v7; // ebx + _DWORD *v8; // ebx + char *i; // esi + _DWORD *v10; // ebx + _DWORD *v11; // eax + _DWORD *v12; // ecx + int v13; // ecx + int v14; // ecx + char *v15; // ebx + char **result; // eax + void (__cdecl *v17)(void *); // [esp+4h] [ebp-44h] + _DWORD *v18; // [esp+18h] [ebp-30h] + char *v19; // [esp+20h] [ebp-28h] + char *v21; // [esp+28h] [ebp-20h] + _DWORD *v22; // [esp+2Ch] [ebp-1Ch] + + v19 = this[1]; + v21 = *this; + v3 = (v19 - *this) >> 5; + if ( v3 == 0x3FFFFFF ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v4 = (v19 - *this) >> 5; + if ( !v3 ) + v4 = 1; + v5 = __CFADD__(v4, v3); + v6 = v4 + v3; + if ( v5 ) + goto LABEL_8; + v22 = 0; + if ( v6 ) + { + if ( v6 <= 0x3FFFFFF ) + { +LABEL_9: + v22 = operator new((struct type_info *)(32 * v6), v17); + goto LABEL_10; + } +LABEL_8: + v6 = 0x3FFFFFF; + goto LABEL_9; + } +LABEL_10: + v7 = (_DWORD *)((char *)v22 + a2 - v21); + std::string::basic_string(v7, a3); + std::__shared_ptr::__shared_ptr(v7 + 6, a3 + 6); + v8 = v22; + for ( i = v21; a2 != i; i += 32 ) + { + std::string::basic_string(v8, i); + v12 = v8 + 6; + v8 += 8; + std::__shared_ptr::__shared_ptr(v12, (_DWORD *)i + 6); + v13 = (int)i; + std::pair>::~pair(v13); + } + v10 = i; + v11 = (_DWORD *)((char *)v22 + i - v21 + 32); + while ( v10 != (_DWORD *)v19 ) + { + v18 = v11; + std::string::basic_string(v11, v10); + std::__shared_ptr::__shared_ptr(v18 + 6, v10 + 6); + v14 = (int)v10; + v10 += 8; + std::pair>::~pair(v14); + v11 = v18 + 8; + } + v15 = (char *)v10 + (char *)v22 - v21 + 32; + if ( v21 ) + operator delete(v21); + this[1] = v15; + *this = (char *)v22; + result = this; + this[2] = (char *)&v22[8 * v6]; + return result; +} +// 4B5CAB: variable 'v17' is possibly undefined + +//----- (004B5D88) -------------------------------------------------------- +int __thiscall std::vector>::_M_realloc_insert>( + char **this, + char *a2, + _DWORD *a3) +{ + int v3; // eax + int v5; // esi + bool v6; // cf + unsigned int v7; // eax + int v8; // esi + char *v9; // ebx + char *v10; // eax + char *v11; // ebx + char *v12; // eax + unsigned int v13; // ebx + char *v14; // eax + char *v15; // ebx + void **v16; // edx + void **v17; // edx + char *v18; // ebx + int result; // eax + void (__cdecl *v20)(void *); // [esp+4h] [ebp-44h] + char *v21; // [esp+14h] [ebp-34h] + void **v22; // [esp+18h] [ebp-30h] + char *v23; // [esp+1Ch] [ebp-2Ch] + char *v24; // [esp+1Ch] [ebp-2Ch] + char *v25; // [esp+20h] [ebp-28h] + void **v26; // [esp+20h] [ebp-28h] + char *v27; // [esp+24h] [ebp-24h] + char *v28; // [esp+28h] [ebp-20h] + char *v29; // [esp+2Ch] [ebp-1Ch] + + v27 = this[1]; + v29 = *this; + v3 = -1227133513 * ((v27 - *this) >> 2); + if ( v3 == 76695844 ) + std::__throw_length_error((std::length_error *)"vector::_M_realloc_insert"); + v5 = -1227133513 * ((v27 - v29) >> 2); + if ( !v3 ) + v5 = 1; + v6 = __CFADD__(v5, v3); + v7 = v5 - 1227133513 * ((v27 - v29) >> 2); + v8 = v7; + if ( v6 ) + goto LABEL_8; + v28 = 0; + if ( v7 ) + { + if ( v7 <= 0x4924924 ) + { +LABEL_9: + v28 = (char *)operator new((struct type_info *)(28 * v8), v20); + goto LABEL_10; + } +LABEL_8: + v8 = 76695844; + goto LABEL_9; + } +LABEL_10: + v9 = &v28[a2 - v29]; + *(_DWORD *)v9 = *a3; + std::string::basic_string((_DWORD *)v9 + 1, a3 + 1); + v10 = v28; + v11 = v29; + while ( 1 ) + { + v12 = v10 + 28; + if ( a2 == v11 ) + break; + v24 = v12; + *((_DWORD *)v12 - 7) = *(_DWORD *)v11; + v16 = (void **)(v11 + 4); + v11 += 28; + v26 = v16; + std::string::basic_string((_DWORD *)v12 - 6, v16); + std::string::_M_dispose(v26); + v10 = v24; + } + v13 = (920350135 * ((unsigned int)(a2 - v29) >> 2)) & 0x3FFFFFFF; + v23 = &v29[28 * v13]; + v25 = &v28[28 * v13 + 28]; + v14 = v25; + v15 = v23; + while ( v15 != v27 ) + { + v21 = v14; + *(_DWORD *)v14 = *(_DWORD *)v15; + v17 = (void **)(v15 + 4); + v15 += 28; + v22 = v17; + std::string::basic_string((_DWORD *)v14 + 1, v17); + std::string::_M_dispose(v22); + v14 = v21 + 28; + } + v18 = &v25[28 * ((920350135 * ((unsigned int)(v15 - v23) >> 2)) & 0x3FFFFFFF)]; + if ( v29 ) + operator delete(v29); + this[1] = v18; + *this = v28; + result = 28 * v8; + this[2] = &v28[28 * v8]; + return result; +} +// 4B5DFB: variable 'v20' is possibly undefined + +//----- (004B5F10) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ecx + _DWORD *v6; // eax + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x44, v8); + *v4 = &off_4F66C4; + v4[1] = 0; + v4[2] = 0; + v4[3] = 0; + *((_WORD *)v4 + 8) = 0; + *((_BYTE *)v4 + 18) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + *((_BYTE *)v4 + 67) = 0; + this[2] = v4; + } + *((_BYTE *)v4 + 17) = 46; + v5 = std::money_base::_S_atoms; + *(_BYTE *)(this[2] + 18) = 44; + v6 = (_DWORD *)this[2]; + v6[2] = &unk_4EC628; + v6[3] = 0; + v6[5] = &unk_4EC628; + v6[6] = 0; + v6[7] = &unk_4EC628; + v6[8] = 0; + v6[9] = &unk_4EC628; + v6[10] = 0; + v6[11] = 0; + v6[12] = std::money_base::_S_default_pattern; + *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; + for ( result = 0; result != 11; ++result ) + *(_BYTE *)(this[2] + result + 56) = v5[result]; + return result; +} +// 4B5FB7: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4F0AC0: using guessed type int std::money_base::_S_default_pattern; +// 4F66C4: using guessed type int (*off_4F66C4)(); + +//----- (004B6030) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5810; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5810: using guessed type int (*off_4F5810)(); + +//----- (004B6090) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5810; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5810: using guessed type int (*off_4F5810)(); + +//----- (004B60F0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5810; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5810: using guessed type int (*off_4F5810)(); + +//----- (004B6150) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5810; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5810: using guessed type int (*off_4F5810)(); + +//----- (004B61B0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5810; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5810: using guessed type int (*off_4F5810)(); + +//----- (004B6210) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5810; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5810: using guessed type int (*off_4F5810)(); + +//----- (004B6270) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4B6277: variable 'v2' is possibly undefined + +//----- (004B62A0) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F5810; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4B62A7: variable 'v1' is possibly undefined +// 4F5810: using guessed type int (*off_4F5810)(); + +//----- (004B62D0) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ecx + _DWORD *v6; // eax + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x44, v8); + *v4 = &off_4F66D4; + v4[1] = 0; + v4[2] = 0; + v4[3] = 0; + *((_WORD *)v4 + 8) = 0; + *((_BYTE *)v4 + 18) = 0; + v4[5] = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + *((_BYTE *)v4 + 67) = 0; + this[2] = v4; + } + *((_BYTE *)v4 + 17) = 46; + v5 = std::money_base::_S_atoms; + *(_BYTE *)(this[2] + 18) = 44; + v6 = (_DWORD *)this[2]; + v6[2] = &unk_4EC628; + v6[3] = 0; + v6[5] = &unk_4EC628; + v6[6] = 0; + v6[7] = &unk_4EC628; + v6[8] = 0; + v6[9] = &unk_4EC628; + v6[10] = 0; + v6[11] = 0; + v6[12] = std::money_base::_S_default_pattern; + *(_DWORD *)(this[2] + 52) = std::money_base::_S_default_pattern; + for ( result = 0; result != 11; ++result ) + *(_BYTE *)(this[2] + result + 56) = v5[result]; + return result; +} +// 4B6377: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4F0AC0: using guessed type int std::money_base::_S_default_pattern; +// 4F66D4: using guessed type int (*off_4F66D4)(); + +//----- (004B63F0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5844; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5844: using guessed type int (*off_4F5844)(); + +//----- (004B6450) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5844; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5844: using guessed type int (*off_4F5844)(); + +//----- (004B64B0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5844; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5844: using guessed type int (*off_4F5844)(); + +//----- (004B6510) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5844; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5844: using guessed type int (*off_4F5844)(); + +//----- (004B6570) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5844; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5844: using guessed type int (*off_4F5844)(); + +//----- (004B65D0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5844; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5844: using guessed type int (*off_4F5844)(); + +//----- (004B6630) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4B6637: variable 'v2' is possibly undefined + +//----- (004B6660) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F5844; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4B6667: variable 'v1' is possibly undefined +// 4F5844: using guessed type int (*off_4F5844)(); + +//----- (004B6690) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ebx + int v6; // ecx + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x54, v8); + v4[1] = 0; + *v4 = &off_4F66E4; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + *(_DWORD *)((char *)v4 + 18) = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + v4[14] = 0; + *((_BYTE *)v4 + 82) = 0; + this[2] = v4; + } + *(_DWORD *)((char *)v4 + 18) = 2883630; + v4[2] = &unk_4EC628; + v5 = std::money_base::_S_atoms; + v4[13] = std::money_base::_S_default_pattern; + v4[3] = 0; + v4[6] = &unk_4EC62A; + v4[7] = 0; + v4[8] = &unk_4EC62A; + v4[9] = 0; + v4[10] = &unk_4EC62A; + v4[11] = 0; + v4[12] = 0; + *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; + v6 = this[2]; + for ( result = 0; result != 11; ++result ) + *(_WORD *)(v6 + 2 * result + 60) = v5[result]; + return result; +} +// 4B672F: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4F0AC0: using guessed type int std::money_base::_S_default_pattern; +// 4F66E4: using guessed type int (*off_4F66E4)(); + +//----- (004B67B0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5878; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5878: using guessed type int (*off_4F5878)(); + +//----- (004B6810) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5878; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5878: using guessed type int (*off_4F5878)(); + +//----- (004B6870) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5878; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5878: using guessed type int (*off_4F5878)(); + +//----- (004B68D0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5878; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5878: using guessed type int (*off_4F5878)(); + +//----- (004B6930) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F5878; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F5878: using guessed type int (*off_4F5878)(); + +//----- (004B6990) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F5878; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F5878: using guessed type int (*off_4F5878)(); + +//----- (004B69F0) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4B69F7: variable 'v2' is possibly undefined + +//----- (004B6A20) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F5878; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4B6A27: variable 'v1' is possibly undefined +// 4F5878: using guessed type int (*off_4F5878)(); + +//----- (004B6A50) -------------------------------------------------------- +int __thiscall std::moneypunct::_M_initialize_moneypunct(_DWORD *this, int a2, int a3) +{ + _DWORD *v4; // eax + char *v5; // ebx + int v6; // ecx + int result; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[2]; + if ( !v4 ) + { + v4 = operator new((struct type_info *)0x54, v8); + v4[1] = 0; + *v4 = &off_4F66F4; + v4[2] = 0; + v4[3] = 0; + *((_BYTE *)v4 + 16) = 0; + *(_DWORD *)((char *)v4 + 18) = 0; + v4[6] = 0; + v4[7] = 0; + v4[8] = 0; + v4[9] = 0; + v4[10] = 0; + v4[11] = 0; + v4[12] = 0; + v4[13] = 0; + v4[14] = 0; + *((_BYTE *)v4 + 82) = 0; + this[2] = v4; + } + *(_DWORD *)((char *)v4 + 18) = 2883630; + v4[2] = &unk_4EC628; + v5 = std::money_base::_S_atoms; + v4[13] = std::money_base::_S_default_pattern; + v4[3] = 0; + v4[6] = &unk_4EC62A; + v4[7] = 0; + v4[8] = &unk_4EC62A; + v4[9] = 0; + v4[10] = &unk_4EC62A; + v4[11] = 0; + v4[12] = 0; + *(_DWORD *)(this[2] + 56) = std::money_base::_S_default_pattern; + v6 = this[2]; + for ( result = 0; result != 11; ++result ) + *(_WORD *)(v6 + 2 * result + 60) = v5[result]; + return result; +} +// 4B6AEF: variable 'v8' is possibly undefined +// 4E9408: using guessed type char *std::money_base::_S_atoms; +// 4F0AC0: using guessed type int std::money_base::_S_default_pattern; +// 4F66F4: using guessed type int (*off_4F66F4)(); + +//----- (004B6B70) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F58AC; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F58AC: using guessed type int (*off_4F58AC)(); + +//----- (004B6BD0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F58AC; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F58AC: using guessed type int (*off_4F58AC)(); + +//----- (004B6C30) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F58AC; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F58AC: using guessed type int (*off_4F58AC)(); + +//----- (004B6C90) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F58AC; + this[1] = a3 != 0; + this[2] = a2; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F58AC: using guessed type int (*off_4F58AC)(); + +//----- (004B6CF0) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2, int a3, int a4) +{ + *this = &off_4F58AC; + this[2] = 0; + this[1] = a4 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, a2, a3); +} +// 4F58AC: using guessed type int (*off_4F58AC)(); + +//----- (004B6D50) -------------------------------------------------------- +int __thiscall std::moneypunct::moneypunct(_DWORD *this, int a2) +{ + *this = &off_4F58AC; + this[2] = 0; + this[1] = a2 != 0; + return std::moneypunct::_M_initialize_moneypunct(this, 0, 0); +} +// 4F58AC: using guessed type int (*off_4F58AC)(); + +//----- (004B6DB0) -------------------------------------------------------- +void __fastcall std::moneypunct::~moneypunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4B6DB7: variable 'v2' is possibly undefined + +//----- (004B6DE0) -------------------------------------------------------- +void __cdecl std::moneypunct::~moneypunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F58AC; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4B6DE7: variable 'v1' is possibly undefined +// 4F58AC: using guessed type int (*off_4F58AC)(); + +//----- (004B6E10) -------------------------------------------------------- +void __thiscall std::string::_M_destroy(void **this, int a2) +{ + operator delete(*this); +} + +//----- (004B6E30) -------------------------------------------------------- +void __fastcall std::string::_M_dispose(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004B6E60) -------------------------------------------------------- +unsigned int *__thiscall std::string::_M_replace(unsigned int *this, size_t a2, size_t a3, char *Src, size_t a5) +{ + unsigned int v5; // eax + unsigned int v7; // edi + unsigned int v8; // ecx + bool v9; // cl + unsigned int v10; // eax + unsigned int v12; // eax + size_t v13; // eax + size_t v14; // ebp + size_t v15; // edx + _BYTE *v16; // esi + unsigned int v17; // [esp+1Ch] [ebp-30h] + bool v18; // [esp+1Ch] [ebp-30h] + _BYTE *v19; // [esp+20h] [ebp-2Ch] + size_t Size; // [esp+28h] [ebp-24h] + size_t v21; // [esp+2Ch] [ebp-20h] + + v5 = this[1]; + if ( a5 > a3 + 0x3FFFFFFF - v5 ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); + v21 = a5 - a3; + v7 = v5 + a5 - a3; + v17 = *this; + if ( (unsigned int *)*this == this + 2 ) + v8 = 15; + else + v8 = this[2]; + if ( v8 < v7 ) + { + std::string::_M_mutate((int)this, a2, a3, Src, a5); + goto LABEL_12; + } + v19 = (_BYTE *)(a2 + v17); + Size = v5 - (a3 + a2); + v9 = a3 != a5 && v5 != a3 + a2; + if ( v17 <= (unsigned int)Src && (unsigned int)Src <= v17 + v5 ) + { + if ( a5 && a3 >= a5 ) + { + if ( a5 != 1 ) + { + v18 = a3 != a5 && v5 != a3 + a2; + memmove(v19, Src, a5); + if ( !v18 ) + goto LABEL_12; + goto LABEL_18; + } + *v19 = *Src; + } + if ( !v9 ) + { +LABEL_20: + if ( a3 >= a5 ) + goto LABEL_12; + v12 = (unsigned int)&v19[a3]; + if ( &v19[a3] < &Src[a5] ) + { + if ( v12 > (unsigned int)Src ) + { + v13 = v12 - (_DWORD)Src; + v14 = v13; + if ( v13 == 1 ) + { + *v19 = *Src; + } + else if ( v13 ) + { + memmove(v19, Src, v13); + } + v15 = a5 - v14; + v16 = &v19[a5]; + if ( a5 - v14 == 1 ) + { + v19[v14] = *v16; + } + else if ( v15 ) + { + memcpy(&v19[v14], v16, v15); + } + } + else if ( a5 == 1 ) + { + *v19 = Src[v21]; + } + else + { + memcpy(v19, &Src[v21], a5); + } + goto LABEL_12; + } + if ( a5 != 1 ) + { + memmove(v19, Src, a5); + goto LABEL_12; + } +LABEL_26: + *v19 = *Src; + goto LABEL_12; + } +LABEL_18: + if ( Size == 1 ) + v19[a5] = v19[a3]; + else + memmove(&v19[a5], &v19[a3], Size); + goto LABEL_20; + } + if ( v9 ) + { + if ( Size == 1 ) + v19[a5] = v19[a3]; + else + memmove(&v19[a5], &v19[a3], Size); + } + if ( a5 ) + { + if ( a5 != 1 ) + { + memcpy(v19, Src, a5); + goto LABEL_12; + } + goto LABEL_26; + } +LABEL_12: + v10 = *this; + this[1] = v7; + *(_BYTE *)(v10 + v7) = 0; + return this; +} + +//----- (004B7160) -------------------------------------------------------- +int __cdecl std::string::_S_compare(int a1, int a2) +{ + return a1 - a2; +} + +//----- (004B7170) -------------------------------------------------------- +int __thiscall std::string::_M_capacity(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[2] = a2; + return result; +} + +//----- (004B7180) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004B7190) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004B71A0) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004B71B0) -------------------------------------------------------- +int __thiscall std::string::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004B71C0) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct(_DWORD *this, size_t a2, char a3) +{ + size_t Size; // edx + char v5; // si + _BYTE *result; // eax + size_t v7; // edx + + Size = a2; + v5 = a3; + if ( a2 > 0xF ) + { + result = std::string::_M_create(&a2, 0); + *this = result; + Size = a2; + this[2] = a2; + } + else + { + result = (_BYTE *)*this; + } + if ( !Size ) + goto LABEL_6; + if ( Size != 1 ) + { + memset(result, v5, Size); + Size = a2; + result = (_BYTE *)*this; +LABEL_6: + this[1] = Size; + result[Size] = 0; + return result; + } + *result = v5; + v7 = a2; + result = (_BYTE *)*this; + this[1] = a2; + result[v7] = 0; + return result; +} + +//----- (004B7260) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( + _DWORD *this, + _BYTE *Src, + int a3, + int a4) +{ + size_t Size; // ebx + _BYTE *result; // eax + unsigned int v7; // ebx + unsigned int v8; // ebx + unsigned int v9[4]; // [esp+1Ch] [ebp-10h] BYREF + + Size = a3 - (_DWORD)Src; + v9[0] = a3 - (_DWORD)Src; + if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) + { + result = std::string::_M_create(v9, 0); + *this = result; + this[2] = v9[0]; + } + else + { + result = (_BYTE *)*this; + if ( Size == 1 ) + { + *result = *Src; + v7 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v7] = 0; + return result; + } + if ( !Size ) + { + this[1] = 0; + *result = 0; + return result; + } + } + memcpy(result, Src, Size); + v8 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v8] = 0; + return result; +} +// 4B7260: using guessed type unsigned int var_10[4]; + +//----- (004B7300) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct<__gnu_cxx::__normal_iterator>( + _DWORD *this, + _BYTE *Src, + int a3, + int a4) +{ + size_t Size; // ebx + _BYTE *result; // eax + unsigned int v7; // ebx + unsigned int v8; // ebx + unsigned int v9[4]; // [esp+1Ch] [ebp-10h] BYREF + + Size = a3 - (_DWORD)Src; + v9[0] = a3 - (_DWORD)Src; + if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) + { + result = std::string::_M_create(v9, 0); + *this = result; + this[2] = v9[0]; + } + else + { + result = (_BYTE *)*this; + if ( Size == 1 ) + { + *result = *Src; + v7 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v7] = 0; + return result; + } + if ( !Size ) + { + this[1] = 0; + *result = 0; + return result; + } + } + memcpy(result, Src, Size); + v8 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v8] = 0; + return result; +} +// 4B7300: using guessed type unsigned int var_10[4]; + +//----- (004B73A0) -------------------------------------------------------- +unsigned int __thiscall std::string::_M_construct(void **this, unsigned __int8 *a2, size_t Size, int a4) +{ + unsigned int result; // eax + _BYTE *v6; // edx + unsigned int v7[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + if ( !a2 && Size ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + v7[0] = Size - (_DWORD)a2; + if ( Size - (unsigned int)a2 > 0xF ) + { + *this = std::string::_M_create(v7, 0); + this[2] = (void *)v7[0]; + } + std::string::_S_copy_chars(*this, a2, Size); + result = v7[0]; + v6 = *this; + this[1] = (void *)v7[0]; + v6[result] = 0; + return result; +} +// 4B73A0: using guessed type unsigned int var_1C[7]; + +//----- (004B7420) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct(_DWORD *this, _BYTE *Src, int a3, int a4) +{ + size_t Size; // ebx + _BYTE *result; // eax + unsigned int v7; // ebx + unsigned int v8; // ebx + unsigned int v9[4]; // [esp+1Ch] [ebp-10h] BYREF + + if ( a3 ) + { + if ( !Src ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + } + Size = a3 - (_DWORD)Src; + v9[0] = a3 - (_DWORD)Src; + if ( (unsigned int)(a3 - (_DWORD)Src) > 0xF ) + { + result = std::string::_M_create(v9, 0); + *this = result; + this[2] = v9[0]; + } + else + { + result = (_BYTE *)*this; + if ( Size == 1 ) + { + *result = *Src; + v7 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v7] = 0; + return result; + } + if ( !Size ) + { + this[1] = 0; + *result = 0; + return result; + } + } + memcpy(result, Src, Size); + v8 = v9[0]; + result = (_BYTE *)*this; + this[1] = v9[0]; + result[v8] = 0; + return result; +} +// 4B7420: using guessed type unsigned int var_10[4]; + +//----- (004B74E0) -------------------------------------------------------- +int __fastcall std::string::_M_local_data(int a1) +{ + return a1 + 8; +} + +//----- (004B74F0) -------------------------------------------------------- +int __thiscall std::string::_M_set_length(int *this, int a2) +{ + int result; // eax + int v3; // edx + + result = a2; + v3 = *this; + this[1] = a2; + *(_BYTE *)(v3 + a2) = 0; + return result; +} + +//----- (004B7500) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004B7540) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004B7580) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004B75C0) -------------------------------------------------------- +int __cdecl std::string::_S_copy_chars(_BYTE *a1, unsigned __int8 *a2, size_t Size) +{ + int result; // eax + + result = Size - (_DWORD)a2; + if ( Size - (_DWORD)a2 == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)memcpy(a1, a2, Size - (_DWORD)a2); + } + return result; +} + +//----- (004B7600) -------------------------------------------------------- +void __fastcall std::string::shrink_to_fit(_DWORD *a1) +{ + unsigned int v1; // eax + + if ( (_DWORD *)*a1 == a1 + 2 ) + v1 = 15; + else + v1 = a1[2]; + if ( a1[1] < v1 ) + std::string::reserve(a1, 0); +} +// 4B7600: could not find valid save-restore pair for ebp + +//----- (004B7650) -------------------------------------------------------- +_DWORD *__thiscall std::string::_M_replace_aux(_DWORD *this, size_t a2, int a3, size_t a4, char a5) +{ + int v6; // edx + _DWORD *v7; // eax + unsigned int v8; // esi + unsigned int v9; // ebp + size_t Size; // edx + size_t v11; // eax + _BYTE *Src; // ecx + _BYTE *v13; // eax + _BYTE *v14; // eax + + v6 = this[1]; + if ( a4 > a3 + 0x3FFFFFFF - v6 ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); + v7 = (_DWORD *)*this; + v8 = v6 + a4 - a3; + if ( (_DWORD *)*this == this + 2 ) + v9 = 15; + else + v9 = this[2]; + if ( v9 < v8 ) + { + std::string::_M_mutate((int)this, a2, a3, 0, a4); + v7 = (_DWORD *)*this; + if ( !a4 ) + goto LABEL_13; + } + else + { + Size = v6 - (a3 + a2); + if ( !Size || a3 == a4 ) + { +LABEL_9: + if ( !a4 ) + goto LABEL_13; + goto LABEL_10; + } + v11 = (size_t)v7 + a2; + Src = (_BYTE *)(v11 + a3); + v13 = (_BYTE *)(a4 + v11); + if ( Size != 1 ) + { + memmove(v13, Src, Size); + v7 = (_DWORD *)*this; + goto LABEL_9; + } + *v13 = *Src; + v7 = (_DWORD *)*this; + if ( !a4 ) + goto LABEL_13; + } +LABEL_10: + v14 = (char *)v7 + a2; + if ( a4 == 1 ) + *v14 = a5; + else + memset(v14, a5, a4); + v7 = (_DWORD *)*this; +LABEL_13: + this[1] = v8; + *((_BYTE *)v7 + v8) = 0; + return this; +} + +//----- (004B7770) -------------------------------------------------------- +int __fastcall std::string::_M_get_allocator(int a1) +{ + return a1; +} + +//----- (004B7780) -------------------------------------------------------- +_BYTE *__thiscall std::string::_M_construct_aux_2(_DWORD *this, size_t a2, char a3) +{ + return std::string::_M_construct(this, a2, a3); +} + +//----- (004B7790) -------------------------------------------------------- +unsigned int __thiscall std::string::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= this[1] ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); + return *this + a2; +} + +//----- (004B77C0) -------------------------------------------------------- +int __fastcall std::string::end(_DWORD *a1) +{ + return a1[1] + *a1; +} + +//----- (004B77D0) -------------------------------------------------------- +int __fastcall std::string::back(_DWORD *a1) +{ + return *a1 + a1[1] - 1; +} + +//----- (004B77E0) -------------------------------------------------------- +_DWORD *__thiscall std::string::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (004B77F0) -------------------------------------------------------- +_BYTE *__thiscall std::string::swap(_DWORD *this, _DWORD *a2) +{ + _BYTE *result; // eax + _BYTE *v3; // edi + _BYTE *v4; // esi + _BYTE *v5; // edx + int v6; // ebp + int v7; // edx + int v8; // esi + int v9; // edx + int v10; // edi + int v11; // ebp + int v12; // edi + int v13; // [esp+0h] [ebp-28h] + int v14; // [esp+4h] [ebp-24h] + + result = a2; + if ( this != a2 ) + { + v3 = (_BYTE *)*this; + v4 = (_BYTE *)*a2; + v5 = a2 + 2; + if ( this + 2 == (_DWORD *)*this ) + { + if ( v5 == v4 ) + { + v8 = a2[1]; + if ( this[1] ) + { + if ( !v8 ) + { + a2[2] = this[2]; + a2[3] = this[3]; + a2[4] = this[4]; + a2[5] = this[5]; + a2[1] = this[1]; + result = (_BYTE *)*this; + this[1] = 0; + *result = 0; + return result; + } + v11 = a2[2]; + v12 = a2[3]; + v13 = a2[4]; + v14 = a2[5]; + a2[2] = this[2]; + a2[3] = this[3]; + a2[4] = this[4]; + a2[5] = this[5]; + v9 = this[1]; + this[3] = v12; + this[2] = v11; + this[4] = v13; + this[5] = v14; + v8 = a2[1]; + } + else + { + if ( v8 ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + this[1] = a2[1]; + a2[1] = 0; + result = (_BYTE *)*a2; + *(_BYTE *)*a2 = 0; + return result; + } + v9 = 0; + } + } + else + { + v10 = a2[2]; + a2[2] = this[2]; + a2[3] = this[3]; + a2[4] = this[4]; + a2[5] = this[5]; + *this = v4; + *a2 = v5; + v9 = this[1]; + this[2] = v10; + v8 = a2[1]; + } + } + else + { + v6 = this[2]; + if ( v5 == v4 ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + *a2 = v3; + *this = this + 2; + } + else + { + *this = v4; + v7 = a2[2]; + *a2 = v3; + this[2] = v7; + } + a2[2] = v6; + v8 = a2[1]; + v9 = this[1]; + } + this[1] = v8; + a2[1] = v9; + } + return result; +} + +//----- (004B7960) -------------------------------------------------------- +int __fastcall std::string::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004B7970) -------------------------------------------------------- +_BYTE *__fastcall std::string::clear(int a1) +{ + _BYTE *result; // eax + + result = *(_BYTE **)a1; + *(_DWORD *)(a1 + 4) = 0; + *result = 0; + return result; +} + +//----- (004B7980) -------------------------------------------------------- +int __thiscall std::string::erase(int *this, int a2) +{ + int v3; // ebx + + v3 = a2 - *this; + std::string::_M_erase(this, v3, 1); + return v3 + *this; +} + +//----- (004B79B0) -------------------------------------------------------- +int __thiscall std::string::erase(int *this, _BYTE *a2, int a3) +{ + int v4; // esi + + v4 = (int)&a2[-*this]; + if ( a3 == this[1] + *this ) + { + this[1] = v4; + *a2 = 0; + } + else + { + std::string::_M_erase(this, v4, a3 - (_DWORD)a2); + } + return v4 + *this; +} + +//----- (004B7A10) -------------------------------------------------------- +int __thiscall std::string::erase(int *this, int a2) +{ + int v3; // ebx + + v3 = a2 - *this; + std::string::_M_erase(this, v3, 1); + return v3 + *this; +} + +//----- (004B7A40) -------------------------------------------------------- +int __thiscall std::string::erase(int *this, _BYTE *a2, int a3) +{ + int v4; // esi + + v4 = (int)&a2[-*this]; + if ( a3 == this[1] + *this ) + { + this[1] = v4; + *a2 = 0; + } + else + { + std::string::_M_erase(this, v4, a3 - (_DWORD)a2); + } + return v4 + *this; +} + +//----- (004B7AA0) -------------------------------------------------------- +int *__thiscall std::string::erase(int *this, unsigned int a2, unsigned int a3) +{ + int *result; // eax + unsigned int v4; // ebx + unsigned int v5; // ebx + int v6; // ecx + + result = this; + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + a2, + v4); + if ( a3 == -1 ) + { + v6 = *this; + result[1] = a2; + *(_BYTE *)(v6 + a2) = 0; + } + else if ( a3 ) + { + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + std::string::_M_erase(this, a2, v5); + return this; + } + return result; +} + +//----- (004B7B20) -------------------------------------------------------- +int __fastcall std::string::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004B7B30) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, char *Str) +{ + unsigned int v3; // eax + + v3 = strlen(Str); + if ( 0x3FFFFFFF - this[1] < v3 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, Str, v3); +} + +//----- (004B7B80) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3) +{ + if ( a3 > 0x3FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, a2, a3); +} + +//----- (004B7BB0) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, int a2) +{ + return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); +} + +//----- (004B7BE0) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // ebx + + v4 = a2[1] - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > a2[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::append", + a3, + a2[1]); + return std::string::_M_append(this, (_BYTE *)(*a2 + a3), v4); +} + +//----- (004B7C40) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, _BYTE *a2, size_t a3) +{ + if ( a3 > 0x3FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, a2, a3); +} + +//----- (004B7C70) -------------------------------------------------------- +_DWORD *__thiscall std::string::append(_DWORD *this, size_t a2, char a3) +{ + return std::string::_M_replace_aux(this, this[1], 0, a2, a3); +} + +//----- (004B7CA0) -------------------------------------------------------- +_DWORD *__thiscall std::string::assign(_DWORD *this, int a2) +{ + _BYTE *v3; // eax + _BYTE *Src; // ecx + int v5; // edx + int v6; // ebp + + v3 = (_BYTE *)*this; + Src = *(_BYTE **)a2; + v5 = *(_DWORD *)(a2 + 4); + if ( *(_DWORD *)a2 != a2 + 8 ) + { + if ( v3 == (_BYTE *)(this + 2) ) + { + *this = Src; + this[1] = v5; + this[2] = *(_DWORD *)(a2 + 8); + } + else + { + *this = Src; + v6 = this[2]; + this[1] = v5; + this[2] = *(_DWORD *)(a2 + 8); + if ( v3 ) + { + *(_DWORD *)a2 = v3; + *(_DWORD *)(a2 + 8) = v6; + goto LABEL_5; + } + } + *(_DWORD *)a2 = a2 + 8; + v3 = (_BYTE *)(a2 + 8); + goto LABEL_5; + } + if ( v5 ) + { + if ( v5 == 1 ) + *v3 = *(_BYTE *)(a2 + 8); + else + memcpy(v3, Src, *(_DWORD *)(a2 + 4)); + v5 = *(_DWORD *)(a2 + 4); + v3 = (_BYTE *)*this; + } + this[1] = v5; + v3[v5] = 0; + v3 = *(_BYTE **)a2; +LABEL_5: + *(_DWORD *)(a2 + 4) = 0; + *v3 = 0; + return this; +} + +//----- (004B7D50) -------------------------------------------------------- +unsigned int *__thiscall std::string::assign(unsigned int *this, char *Str) +{ + size_t v3; // eax + + v3 = strlen(Str); + return std::string::_M_replace(this, 0, this[1], Str, v3); +} + +//----- (004B7D90) -------------------------------------------------------- +unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3) +{ + return std::string::_M_replace(this, 0, this[1], a2, a3); +} + +//----- (004B7DC0) -------------------------------------------------------- +void *__thiscall std::string::assign(void *this, int a2) +{ + std::string::_M_assign((int)this, a2); + return this; +} + +//----- (004B7DE0) -------------------------------------------------------- +unsigned int *__thiscall std::string::assign(unsigned int *this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // ebx + + v4 = a2[1] - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > a2[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::assign", + a3, + a2[1]); + return std::string::_M_replace(this, 0, this[1], (char *)(*a2 + a3), v4); +} + +//----- (004B7E50) -------------------------------------------------------- +unsigned int *__thiscall std::string::assign(unsigned int *this, char *a2, size_t a3) +{ + return std::string::_M_replace(this, 0, this[1], a2, a3); +} + +//----- (004B7E80) -------------------------------------------------------- +_DWORD *__thiscall std::string::assign(_DWORD *this, size_t a2, char a3) +{ + return std::string::_M_replace_aux(this, 0, this[1], a2, a3); +} + +//----- (004B7EB0) -------------------------------------------------------- +size_t __thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4) +{ + size_t v5; // eax + size_t v6; // ebx + + v5 = this[1]; + v6 = a2 - *this; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + std::string::_M_replace(this, v6, 0, a3, a4); + return v6 + *this; +} + +//----- (004B7F20) -------------------------------------------------------- +size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) +{ + size_t v4; // ebx + + v4 = a2 - *this; + std::string::_M_replace_aux(this, v4, 0, 1u, a3); + return v4 + *this; +} + +//----- (004B7F60) -------------------------------------------------------- +size_t __thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) +{ + size_t v5; // ebx + + v5 = a2 - *this; + std::string::_M_replace_aux(this, v5, 0, a3, a4); + return v5 + *this; +} + +//----- (004B7FA0) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, int a2, char *a3, size_t a4) +{ + size_t v4; // eax + + v4 = a2 - *this; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::string::_M_replace(this, v4, 0, a3, a4); +} + +//----- (004B8000) -------------------------------------------------------- +size_t __thiscall std::string::insert(_DWORD *this, int a2, char a3) +{ + size_t v4; // ebx + + v4 = a2 - *this; + std::string::_M_replace_aux(this, v4, 0, 1u, a3); + return v4 + *this; +} + +//----- (004B8040) -------------------------------------------------------- +_DWORD *__thiscall std::string::insert(_DWORD *this, int a2, size_t a3, char a4) +{ + return std::string::_M_replace_aux(this, a2 - *this, 0, a3, a4); +} + +//----- (004B8080) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *Str) +{ + size_t v4; // eax + + v4 = strlen(Str); + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, 0, Str, v4); +} + +//----- (004B80F0) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, char *a3, size_t a4) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, 0, a3, a4); +} + +//----- (004B8150) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, int a3) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, 0, *(char **)a3, *(_DWORD *)(a3 + 4)); +} + +//----- (004B81B0) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert(unsigned int *this, unsigned int a2, _DWORD *a3, char *a4, size_t a5) +{ + size_t v5; // ebx + + v5 = a3[1] - (_DWORD)a4; + if ( v5 > a5 ) + v5 = a5; + if ( (unsigned int)a4 > a3[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + (size_t)a4, + a3[1]); + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, 0, &a4[*a3], v5); +} + +//----- (004B8240) -------------------------------------------------------- +_DWORD *__thiscall std::string::insert(_DWORD *this, unsigned int a2, size_t a3, char a4) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a2, + this[1]); + return std::string::_M_replace_aux(this, a2, 0, a3, a4); +} + +//----- (004B82A0) -------------------------------------------------------- +unsigned int *__thiscall std::string::insert<__gnu_cxx::__normal_iterator>( + unsigned int *this, + int a2, + char *a3, + int a4) +{ + size_t v4; // eax + + v4 = a2 - *this; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::string::_M_replace(this, v4, 0, a3, a4 - (_DWORD)a3); +} + +//----- (004B8300) -------------------------------------------------------- +_DWORD *__thiscall std::string::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + a2[1]; + return result; +} + +//----- (004B8310) -------------------------------------------------------- +_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2) +{ + return std::string::resize(this, a2, 0); +} + +//----- (004B8330) -------------------------------------------------------- +_DWORD *__thiscall std::string::resize(int *this, _DWORD *a2, char a3) +{ + size_t v3; // edx + _DWORD *result; // eax + int v5; // edx + + v3 = this[1]; + result = a2; + if ( v3 < (unsigned int)a2 ) + return std::string::_M_replace_aux(this, v3, 0, (size_t)a2 - v3, a3); + if ( v3 > (unsigned int)a2 ) + { + v5 = *this; + this[1] = (int)a2; + *((_BYTE *)a2 + v5) = 0; + } + return result; +} + +//----- (004B8380) -------------------------------------------------------- +int __thiscall std::string::_M_data(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004B8390) -------------------------------------------------------- +size_t __cdecl std::string::_S_copy(void *a1, const void *Src, size_t Size) +{ + size_t result; // eax + + result = Size; + if ( Size == 1 ) + { + result = *(unsigned __int8 *)Src; + *(_BYTE *)a1 = result; + } + else if ( Size ) + { + return (size_t)memcpy(a1, Src, Size); + } + return result; +} + +//----- (004B83C0) -------------------------------------------------------- +size_t __cdecl std::string::_S_move(void *a1, const void *Src, size_t Size) +{ + size_t result; // eax + + result = Size; + if ( Size == 1 ) + { + result = *(unsigned __int8 *)Src; + *(_BYTE *)a1 = result; + } + else if ( Size ) + { + return (size_t)memmove(a1, Src, Size); + } + return result; +} + +//----- (004B83F0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004B8470) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004B84F0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) +{ + size_t v4; // ebx + size_t v5; // edx + size_t v6; // eax + + v4 = this[1]; + v5 = a2 - *this; + v6 = v4 - v5; + if ( a3 - a2 <= v4 - v5 ) + v6 = a3 - a2; + if ( v5 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + v4); + return std::string::_M_replace(this, v5, v6, *(char **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004B8570) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) +{ + size_t v5; // eax + size_t v6; // ecx + size_t v7; // edx + size_t v8; // esi + + v5 = strlen(Str); + v6 = this[1]; + v7 = a2 - *this; + v8 = v6 - v7; + if ( a3 - a2 <= v6 - v7 ) + v8 = a3 - a2; + if ( v7 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v7, + v6); + return std::string::_M_replace(this, v7, v8, Str, v5); +} + +//----- (004B85F0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004B8670) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // ebx + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5); +} + +//----- (004B86E0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004B8760) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // ebx + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5); +} + +//----- (004B87D0) -------------------------------------------------------- +_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) +{ + return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); +} + +//----- (004B87F0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004B8870) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *Str) +{ + size_t v5; // eax + size_t v6; // ecx + size_t v7; // edx + size_t v8; // esi + + v5 = strlen(Str); + v6 = this[1]; + v7 = a2 - *this; + v8 = v6 - v7; + if ( a3 - a2 <= v6 - v7 ) + v8 = a3 - a2; + if ( v7 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v7, + v6); + return std::string::_M_replace(this, v7, v8, Str, v5); +} + +//----- (004B88F0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004B8970) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // ebx + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5); +} + +//----- (004B89E0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, int a4) +{ + size_t v4; // ebx + size_t v5; // edx + size_t v6; // eax + + v4 = this[1]; + v5 = a2 - *this; + v6 = v4 - v5; + if ( a3 - a2 <= v4 - v5 ) + v6 = a3 - a2; + if ( v5 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + v4); + return std::string::_M_replace(this, v5, v6, *(char **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004B8A60) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004B8AE0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, int a2, int a3, char *a4, size_t a5) +{ + size_t v5; // esi + size_t v6; // edx + size_t v7; // eax + + v5 = this[1]; + v6 = a2 - *this; + v7 = v5 - v6; + if ( a3 - a2 <= v5 - v6 ) + v7 = a3 - a2; + if ( v6 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + v5); + return std::string::_M_replace(this, v6, v7, a4, a5 - (_DWORD)a4); +} + +//----- (004B8B60) -------------------------------------------------------- +_DWORD *__thiscall std::string::replace(_DWORD *this, int a2, int a3, size_t a4, char a5) +{ + return std::string::_M_replace_aux(this, a2 - *this, a3 - a2, a4, a5); +} + +//----- (004B8B80) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, unsigned int a3, char *Str) +{ + size_t v5; // eax + size_t v6; // edx + + v5 = strlen(Str); + v6 = this[1] - a2; + if ( v6 > a3 ) + v6 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, v6, Str, v5); +} + +//----- (004B8BF0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace( + unsigned int *this, + unsigned int a2, + unsigned int a3, + char *a4, + size_t a5) +{ + size_t v5; // edx + + v5 = this[1] - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, v5, a4, a5); +} + +//----- (004B8C50) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace(unsigned int *this, unsigned int a2, size_t a3, int a4) +{ + size_t v4; // eax + + v4 = this[1] - a2; + if ( v4 > a3 ) + v4 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, v4, *(char **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004B8CC0) -------------------------------------------------------- +unsigned int *__thiscall std::string::replace( + unsigned int *this, + unsigned int a2, + size_t a3, + _DWORD *a4, + unsigned int a5, + size_t a6) +{ + size_t v6; // ebx + size_t v7; // esi + + v6 = a4[1] - a5; + if ( v6 > a6 ) + v6 = a6; + if ( a5 > a4[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a5, + a4[1]); + v7 = this[1] - a2; + if ( v7 > a3 ) + v7 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace(this, a2, v7, (char *)(*a4 + a5), v6); +} + +//----- (004B8D60) -------------------------------------------------------- +_DWORD *__thiscall std::string::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, char a5) +{ + unsigned int v5; // edx + + v5 = this[1] - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::string::_M_replace_aux(this, a2, v5, a4, a5); +} + +//----- (004B8DD0) -------------------------------------------------------- +void __thiscall std::string::reserve(_DWORD *this, unsigned int a2) +{ + unsigned int v3; // ecx + unsigned int v4; // eax + _BYTE *v5; // edi + _BYTE *v6; // esi + unsigned int v7; // edx + _BYTE *v8; // eax + _BYTE *Src; // ebp + _BYTE *v10; // edi + int v11; // eax + unsigned int v12; // eax + + v3 = this[1]; + v4 = a2; + if ( a2 < v3 ) + { + a2 = v3; + v4 = v3; + } + v5 = (_BYTE *)*this; + v6 = this + 2; + if ( this + 2 == (_DWORD *)*this ) + v7 = 15; + else + v7 = this[2]; + if ( v7 != v4 ) + { + if ( v7 > 0xF ) + { + if ( v4 > 0xF ) + goto LABEL_8; + } + else if ( v7 < v4 ) + { +LABEL_8: + v8 = std::string::_M_create(&a2, v7); + Src = (_BYTE *)*this; + v10 = v8; + v11 = this[1]; + if ( v11 ) + { + if ( v11 != -1 ) + memcpy(v10, Src, v11 + 1); + } + else + { + *v10 = *Src; + } + if ( Src != v6 ) + operator delete(Src); + v12 = a2; + *this = v10; + this[2] = v12; + return; + } + if ( v6 != v5 ) + { + if ( v3 ) + { + if ( v3 != -1 ) + memcpy(this + 2, v5, v3 + 1); + } + else + { + *((_BYTE *)this + 8) = *v5; + } + operator delete(v5); + *this = v6; + } + } +} + +//----- (004B8EE0) -------------------------------------------------------- +int __thiscall std::string::_M_erase(int *this, int a2, int a3) +{ + int v4; // eax + int v5; // ecx + _BYTE *Src; // edx + _BYTE *v7; // ecx + int result; // eax + + v4 = this[1]; + v5 = *this; + if ( v4 != a2 + a3 && a3 ) + { + Src = (_BYTE *)(v5 + a2 + a3); + v7 = (_BYTE *)(a2 + v5); + if ( v4 - (a2 + a3) == 1 ) + *v7 = *Src; + else + memmove(v7, Src, v4 - (a2 + a3)); + v5 = *this; + v4 = this[1]; + } + result = v4 - a3; + this[1] = result; + *(_BYTE *)(v5 + result) = 0; + return result; +} + +//----- (004B8F50) -------------------------------------------------------- +int __fastcall std::string::pop_back(int *a1) +{ + return std::string::_M_erase(a1, a1[1] - 1, 1); +} + +//----- (004B8F70) -------------------------------------------------------- +_DWORD *__thiscall std::string::_M_append(_DWORD *this, _BYTE *Src, size_t Size) +{ + _DWORD *v4; // edi + size_t v5; // ecx + _DWORD *v6; // eax + unsigned int v7; // esi + unsigned int v8; // edi + _BYTE *v9; // eax + + v4 = this + 2; + v5 = this[1]; + v6 = (_DWORD *)*this; + v7 = v5 + Size; + if ( (_DWORD *)*this == v4 ) + v8 = 15; + else + v8 = this[2]; + if ( v7 > v8 ) + { + std::string::_M_mutate((int)this, v5, 0, Src, Size); + v6 = (_DWORD *)*this; + } + else if ( Size ) + { + v9 = (char *)v6 + v5; + if ( Size == 1 ) + *v9 = *Src; + else + memcpy(v9, Src, Size); + v6 = (_DWORD *)*this; + } + this[1] = v7; + *((_BYTE *)v6 + v7) = 0; + return this; +} + +//----- (004B9010) -------------------------------------------------------- +void __thiscall std::string::_M_assign(int this, int a2) +{ + _BYTE *v2; // esi + size_t Size; // edi + unsigned int v5; // eax + _BYTE *Src; // eax + unsigned int v7; // eax + int v8; // [esp+1Ch] [ebp-30h] + unsigned int v9[8]; // [esp+2Ch] [ebp-20h] BYREF + + if ( this != a2 ) + { + v2 = *(_BYTE **)this; + Size = *(_DWORD *)(a2 + 4); + if ( this + 8 == *(_DWORD *)this ) + v5 = 15; + else + v5 = *(_DWORD *)(this + 8); + if ( v5 < Size ) + { + v8 = this + 8; + v9[0] = *(_DWORD *)(a2 + 4); + v2 = std::string::_M_create(v9, v5); + if ( v8 != *(_DWORD *)this ) + operator delete(*(void **)this); + v7 = v9[0]; + *(_DWORD *)this = v2; + *(_DWORD *)(this + 8) = v7; + if ( !Size ) + goto LABEL_9; + } + else if ( !Size ) + { +LABEL_9: + *(_DWORD *)(this + 4) = Size; + v2[Size] = 0; + return; + } + Src = *(_BYTE **)a2; + if ( Size == 1 ) + *v2 = *Src; + else + memcpy(v2, Src, Size); + v2 = *(_BYTE **)this; + goto LABEL_9; + } +} +// 4B9010: using guessed type unsigned int var_20[8]; + +//----- (004B90D0) -------------------------------------------------------- +void *__stdcall std::string::_M_create(unsigned int *a1, unsigned int a2) +{ + unsigned int v2; // eax + unsigned int v3; // edx + void (__cdecl *v5)(void *); // [esp+4h] [ebp-18h] + + v2 = *a1; + if ( *a1 > 0x3FFFFFFF ) + std::__throw_length_error((std::length_error *)"basic_string::_M_create"); + if ( v2 > a2 ) + { + v3 = 2 * a2; + if ( v2 < 2 * a2 ) + { + if ( v3 > 0x3FFFFFFF ) + { + *a1 = 0x3FFFFFFF; + return operator new((struct type_info *)0x40000000, v5); + } + *a1 = v3; + v2 = 2 * a2; + } + } + return operator new((struct type_info *)(v2 + 1), v5); +} +// 4B9104: variable 'v5' is possibly undefined + +//----- (004B9140) -------------------------------------------------------- +int __thiscall std::string::_M_length(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[1] = a2; + return result; +} + +//----- (004B9150) -------------------------------------------------------- +size_t __thiscall std::string::_M_mutate(int this, size_t Size, int a3, _BYTE *a4, size_t a5) +{ + _BYTE *v6; // edi + unsigned int v7; // eax + _BYTE *v8; // eax + _BYTE *v9; // ecx + _BYTE *v10; // ebp + _BYTE *v11; // esi + size_t result; // eax + _BYTE *Src; // [esp+4h] [ebp-48h] + size_t v14; // [esp+14h] [ebp-38h] + size_t v15; // [esp+18h] [ebp-34h] + _BYTE *v16; // [esp+18h] [ebp-34h] + _BYTE *v17; // [esp+1Ch] [ebp-30h] + _BYTE *v18; // [esp+1Ch] [ebp-30h] + size_t v19[8]; // [esp+2Ch] [ebp-20h] BYREF + + v15 = Size + a3; + v14 = *(_DWORD *)(this + 4) - (Size + a3); + v6 = (_BYTE *)(this + 8); + v19[0] = *(_DWORD *)(this + 4) + a5 - a3; + if ( this + 8 == *(_DWORD *)this ) + v7 = 15; + else + v7 = *(_DWORD *)(this + 8); + v8 = std::string::_M_create(v19, v7); + v9 = *(_BYTE **)this; + v10 = v8; + if ( Size ) + { + if ( Size == 1 ) + { + *v8 = *v9; + } + else + { + v17 = *(_BYTE **)this; + memcpy(v8, *(const void **)this, Size); + v9 = v17; + } + } + if ( a4 && a5 ) + { + if ( a5 == 1 ) + { + v10[Size] = *a4; + } + else + { + v18 = v9; + memcpy(&v10[Size], a4, a5); + v9 = v18; + } + } + if ( v14 ) + { + v11 = &v10[a5 + Size]; + if ( v14 == 1 ) + { + *v11 = v9[v15]; + } + else + { + Src = &v9[v15]; + v16 = v9; + memcpy(v11, Src, v14); + v9 = v16; + } + } + if ( v6 != v9 ) + operator delete(v9); + result = v19[0]; + *(_DWORD *)this = v10; + *(_DWORD *)(this + 8) = result; + return result; +} +// 4B9150: using guessed type size_t var_20[8]; + +//----- (004B92A0) -------------------------------------------------------- +void *__cdecl std::string::_S_assign(_BYTE *a1, void *Val, size_t Size) +{ + void *result; // eax + + result = Val; + if ( Val == (void *)1 ) + { + *a1 = Size; + } + else if ( Val ) + { + return memset(a1, (char)Size, (size_t)Val); + } + return result; +} + +//----- (004B92E0) -------------------------------------------------------- +_DWORD *__thiscall std::string::push_back(_DWORD *this, char a2) +{ + size_t v3; // esi + _DWORD *v4; // eax + unsigned int v5; // edi + unsigned int v6; // edx + _DWORD *result; // eax + + v3 = this[1]; + v4 = (_DWORD *)*this; + v5 = v3 + 1; + if ( (_DWORD *)*this == this + 2 ) + v6 = 15; + else + v6 = this[2]; + if ( v5 > v6 ) + { + std::string::_M_mutate((int)this, v3, 0, 0, 1u); + v4 = (_DWORD *)*this; + } + *((_BYTE *)v4 + v3) = a2; + result = (_DWORD *)*this; + this[1] = v5; + *((_BYTE *)result + v3 + 1) = 0; + return result; +} + +//----- (004B9360) -------------------------------------------------------- +_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + int v3; // ebx + + result = a2; + *this = this + 2; + if ( result + 2 == (_DWORD *)*result ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + } + else + { + *this = *a2; + this[2] = a2[2]; + } + v3 = a2[1]; + *a2 = a2 + 2; + a2[1] = 0; + *((_BYTE *)a2 + 8) = 0; + this[1] = v3; + return result; +} + +//----- (004B93C0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) +{ + _BYTE *result; // eax + int v4; // ebx + int v5; // ebx + int v6; // edx + + result = (_BYTE *)a2; + *this = this + 2; + if ( result + 8 == *(_BYTE **)result ) + { + this[2] = *(_DWORD *)(a2 + 8); + this[3] = *(_DWORD *)(a2 + 12); + this[4] = *(_DWORD *)(a2 + 16); + this[5] = *(_DWORD *)(a2 + 20); + v6 = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = 0; + result = *(_BYTE **)a2; + this[1] = v6; + *result = 0; + } + else + { + *this = *(_DWORD *)a2; + v4 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + this[1] = v4; + v5 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = 0; + *(_BYTE *)(a2 + 8) = 0; + this[2] = v5; + } + return result; +} + +//----- (004B9430) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3) +{ + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); +} +// 4B9461: variable 'v6' is possibly undefined + +//----- (004B9480) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); +} + +//----- (004B94A0) -------------------------------------------------------- +char *__thiscall std::string::basic_string(_DWORD *this, int a2) +{ + char *result; // eax + + result = (char *)(this + 2); + this[1] = 0; + *this = this + 2; + *((_BYTE *)this + 8) = 0; + return result; +} + +//----- (004B94C0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v3) = 0; + return std::string::_M_construct(this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v3); +} +// 4B94E0: variable 'v3' is possibly undefined + +//----- (004B94F0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v4) = 0; + return std::string::_M_construct<__gnu_cxx::__normal_iterator>( + this, + *(_BYTE **)a2, + *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), + v4); +} +// 4B9510: variable 'v4' is possibly undefined + +//----- (004B9520) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) +{ + size_t v4; // eax + + *this = this + 2; + v4 = a2[1]; + if ( Size > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + Size, + a2[1]); + LOBYTE(a4) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), *a2 + v4, a4); +} + +//----- (004B9570) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) +{ + unsigned int v4; // esi + size_t v5; // eax + unsigned int v6; // eax + + *this = this + 2; + v4 = a4; + v5 = a2[1]; + if ( Size > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + Size, + a2[1]); + v6 = v5 - Size; + LOBYTE(a4) = 0; + if ( v6 > v4 ) + v6 = v4; + return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), Size + *a2 + v6, a4); +} + +//----- (004B95D0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + *this = this + 2; + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); + v6 = v5 - a3; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + return std::string::_M_construct(this, (unsigned __int8 *)(a3 + *a2), a3 + *a2 + v6, v8); +} +// 4B9605: variable 'v8' is possibly undefined + +//----- (004B9640) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); +} + +//----- (004B9660) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4) +{ + *this = this + 2; + return std::string::_M_construct(this, a2, a3); +} + +//----- (004B9690) -------------------------------------------------------- +int __fastcall std::string::basic_string(int a1) +{ + int result; // eax + + result = a1 + 8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + return result; +} + +//----- (004B96B0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( + _DWORD *this, + _BYTE *a2, + int a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); +} + +//----- (004B96C0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string( + void **this, + unsigned __int8 *a2, + size_t a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, a3, a4); +} + +//----- (004B96D0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, a3, a4); +} + +//----- (004B96E0) -------------------------------------------------------- +_DWORD *__thiscall std::string::basic_string(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + int v3; // ebx + + result = a2; + *this = this + 2; + if ( result + 2 == (_DWORD *)*result ) + { + this[2] = a2[2]; + this[3] = a2[3]; + this[4] = a2[4]; + this[5] = a2[5]; + } + else + { + *this = *a2; + this[2] = a2[2]; + } + v3 = a2[1]; + *a2 = a2 + 2; + a2[1] = 0; + *((_BYTE *)a2 + 8) = 0; + this[1] = v3; + return result; +} + +//----- (004B9740) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) +{ + _BYTE *result; // eax + int v4; // ebx + int v5; // ebx + int v6; // edx + + result = (_BYTE *)a2; + *this = this + 2; + if ( result + 8 == *(_BYTE **)result ) + { + this[2] = *(_DWORD *)(a2 + 8); + this[3] = *(_DWORD *)(a2 + 12); + this[4] = *(_DWORD *)(a2 + 16); + this[5] = *(_DWORD *)(a2 + 20); + v6 = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = 0; + result = *(_BYTE **)a2; + this[1] = v6; + *result = 0; + } + else + { + *this = *(_DWORD *)a2; + v4 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + this[1] = v4; + v5 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = 0; + *(_BYTE *)(a2 + 8) = 0; + this[2] = v5; + } + return result; +} + +//----- (004B97B0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, char *Str, int a3) +{ + size_t Size; // eax + int v6; // [esp+8h] [ebp-14h] + + *this = this + 2; + Size = -1; + if ( Str ) + Size = (size_t)&Str[strlen(Str)]; + LOBYTE(v6) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)Str, Size, v6); +} +// 4B97E1: variable 'v6' is possibly undefined + +//----- (004B9800) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); +} + +//----- (004B9820) -------------------------------------------------------- +char *__thiscall std::string::basic_string(_DWORD *this, int a2) +{ + char *result; // eax + + result = (char *)(this + 2); + this[1] = 0; + *this = this + 2; + *((_BYTE *)this + 8) = 0; + return result; +} + +//----- (004B9840) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v3) = 0; + return std::string::_M_construct(this, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v3); +} +// 4B9860: variable 'v3' is possibly undefined + +//----- (004B9870) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *this = this + 2; + LOBYTE(v4) = 0; + return std::string::_M_construct<__gnu_cxx::__normal_iterator>( + this, + *(_BYTE **)a2, + *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), + v4); +} +// 4B9890: variable 'v4' is possibly undefined + +//----- (004B98A0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) +{ + size_t v4; // eax + + *this = this + 2; + v4 = a2[1]; + if ( Size > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + Size, + a2[1]); + LOBYTE(a4) = 0; + return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), *a2 + v4, a4); +} + +//----- (004B98F0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, size_t Size, int a4) +{ + unsigned int v4; // esi + size_t v5; // eax + unsigned int v6; // eax + + *this = this + 2; + v4 = a4; + v5 = a2[1]; + if ( Size > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + Size, + a2[1]); + v6 = v5 - Size; + LOBYTE(a4) = 0; + if ( v6 > v4 ) + v6 = v4; + return std::string::_M_construct(this, (unsigned __int8 *)(Size + *a2), Size + *a2 + v6, a4); +} + +//----- (004B9950) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + *this = this + 2; + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); + v6 = v5 - a3; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + return std::string::_M_construct(this, (unsigned __int8 *)(a3 + *a2), a3 + *a2 + v6, v8); +} +// 4B9985: variable 'v8' is possibly undefined + +//----- (004B99C0) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string(void **this, unsigned __int8 *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, (size_t)&a2[a3], a4); +} + +//----- (004B99E0) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, size_t a2, char a3, int a4) +{ + *this = this + 2; + return std::string::_M_construct(this, a2, a3); +} + +//----- (004B9A10) -------------------------------------------------------- +int __fastcall std::string::basic_string(int a1) +{ + int result; // eax + + result = a1 + 8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + return result; +} + +//----- (004B9A30) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string<__gnu_cxx::__normal_iterator,void>( + _DWORD *this, + _BYTE *a2, + int a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); +} + +//----- (004B9A40) -------------------------------------------------------- +unsigned int __thiscall std::string::basic_string( + void **this, + unsigned __int8 *a2, + size_t a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, a3, a4); +} + +//----- (004B9A50) -------------------------------------------------------- +_BYTE *__thiscall std::string::basic_string(_DWORD *this, _BYTE *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = this + 2; + return std::string::_M_construct(this, a2, a3, a4); +} + +//----- (004B9A60) -------------------------------------------------------- +void __fastcall std::string::~string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004B9A90) -------------------------------------------------------- +void __fastcall std::string::~string(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004B9AC0) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator=(_DWORD *this, _DWORD *a2) +{ + _BYTE *v3; // eax + _DWORD *v4; // ecx + int v5; // edx + int v6; // ebp + + v3 = (_BYTE *)*this; + v4 = (_DWORD *)*a2; + v5 = a2[1]; + if ( a2 + 2 != (_DWORD *)*a2 ) + { + if ( v3 == (_BYTE *)(this + 2) ) + { + *this = v4; + this[1] = v5; + this[2] = a2[2]; + } + else + { + *this = v4; + v6 = this[2]; + this[1] = v5; + this[2] = a2[2]; + if ( v3 ) + { + *a2 = v3; + a2[2] = v6; + goto LABEL_5; + } + } + *a2 = a2 + 2; + v3 = a2 + 2; + goto LABEL_5; + } + if ( v5 ) + { + if ( v5 == 1 ) + *v3 = *((_BYTE *)a2 + 8); + else + memcpy(v3, a2 + 2, a2[1]); + v3 = (_BYTE *)*this; + v5 = a2[1]; + } + this[1] = v5; + v3[v5] = 0; + v3 = (_BYTE *)*a2; +LABEL_5: + a2[1] = 0; + *v3 = 0; + return this; +} + +//----- (004B9B70) -------------------------------------------------------- +unsigned int *__thiscall std::string::operator=(unsigned int *this, char *Str) +{ + size_t v3; // eax + + v3 = strlen(Str); + return std::string::_M_replace(this, 0, this[1], Str, v3); +} + +//----- (004B9BB0) -------------------------------------------------------- +void *__thiscall std::string::operator=(void *this, int a2) +{ + std::string::_M_assign((int)this, a2); + return this; +} + +//----- (004B9BD0) -------------------------------------------------------- +unsigned int *__thiscall std::string::operator=(unsigned int *this, char *a2, size_t a3) +{ + std::string::_M_replace(this, 0, this[1], a2, a3); + return this; +} + +//----- (004B9C10) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator=(_DWORD *this, char a2) +{ + std::string::_M_replace_aux(this, 0, this[1], 1u, a2); + return this; +} + +//----- (004B9C50) -------------------------------------------------------- +int __thiscall std::string::operator[](_DWORD *this, int a2) +{ + return a2 + *this; +} + +//----- (004B9C60) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator+=(_DWORD *this, char *Str) +{ + unsigned int v3; // eax + + v3 = strlen(Str); + if ( v3 > 0x3FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, Str, v3); +} + +//----- (004B9CB0) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator+=(_DWORD *this, int a2) +{ + return std::string::_M_append(this, *(_BYTE **)a2, *(_DWORD *)(a2 + 4)); +} + +//----- (004B9CE0) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator+=(_DWORD *this, _BYTE *a2, size_t a3) +{ + if ( a3 > 0x3FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::string::_M_append(this, a2, a3); +} + +//----- (004B9D10) -------------------------------------------------------- +_DWORD *__thiscall std::string::operator+=(_DWORD *this, char a2) +{ + _DWORD *result; // eax + char *v3; // ecx + size_t v4; // ebx + char *v5; // edx + unsigned int v6; // esi + unsigned int v7; // ecx + int v8; // edx + _DWORD *v9; // [esp+1Ch] [ebp-10h] + + result = this; + v3 = (char *)(this + 2); + v4 = *((_DWORD *)v3 - 1); + v5 = (char *)*((_DWORD *)v3 - 2); + v6 = v4 + 1; + if ( v5 == v3 ) + v7 = 15; + else + v7 = result[2]; + if ( v6 > v7 ) + { + v9 = result; + std::string::_M_mutate((int)result, v4, 0, 0, 1u); + result = v9; + v5 = (char *)*v9; + } + v5[v4] = a2; + v8 = *result; + result[1] = v6; + *(_BYTE *)(v8 + v4 + 1) = 0; + return result; +} + +//----- (004B9D90) -------------------------------------------------------- +void __thiscall std::wstring::_M_destroy(void **this, int a2) +{ + operator delete(*this); +} + +//----- (004B9DB0) -------------------------------------------------------- +void __fastcall std::wstring::_M_dispose(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004B9DE0) -------------------------------------------------------- +int __thiscall std::wstring::_M_replace(int this, size_t a2, size_t a3, wchar_t *a4, size_t a5) +{ + int v5; // eax + unsigned int v7; // edi + unsigned int v8; // ecx + bool v9; // cl + const wchar_t *S2; // edx + const wchar_t *v11; // eax + size_t v13; // ecx + wchar_t *v14; // eax + int v15; // eax + int v16; // esi + size_t v17; // esi + const wchar_t *v18; // [esp+1Ch] [ebp-30h] + bool v19; // [esp+1Ch] [ebp-30h] + int v20; // [esp+1Ch] [ebp-30h] + wchar_t *S1; // [esp+20h] [ebp-2Ch] + size_t N; // [esp+28h] [ebp-24h] + size_t v23; // [esp+2Ch] [ebp-20h] + + v5 = *(_DWORD *)(this + 4); + if ( a5 > a3 + 0x1FFFFFFF - v5 ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace"); + v23 = a5 - a3; + v7 = v5 + a5 - a3; + v18 = *(const wchar_t **)this; + if ( *(_DWORD *)this == this + 8 ) + v8 = 7; + else + v8 = *(_DWORD *)(this + 8); + if ( v8 < v7 ) + { + std::wstring::_M_mutate((const wchar_t **)this, a2, a3, a4, a5); + goto LABEL_12; + } + S1 = (wchar_t *)&v18[a2]; + N = v5 - (a3 + a2); + v9 = a3 != a5 && v5 != a3 + a2; + if ( v18 <= a4 && a4 <= &v18[v5] ) + { + if ( a5 && a3 >= a5 ) + { + if ( a5 != 1 ) + { + v19 = a3 != a5 && v5 != a3 + a2; + wmemmove(S1, a4, a5); + if ( !v19 ) + goto LABEL_12; + goto LABEL_18; + } + *S1 = *a4; + } + if ( !v9 ) + { +LABEL_20: + if ( a3 >= a5 ) + goto LABEL_12; + v13 = a5; + v14 = &S1[a3]; + if ( v14 < &a4[a5] ) + { + if ( v14 > a4 ) + { + v15 = (char *)v14 - (char *)a4; + v20 = v15; + v16 = v15 >> 1; + if ( v15 >> 1 == 1 ) + { + *S1 = *a4; + } + else if ( v16 ) + { + wmemmove(S1, a4, v15 >> 1); + v13 = a5; + } + v17 = a5 - v16; + if ( v17 == 1 ) + { + *(wchar_t *)((char *)S1 + v20) = S1[v13]; + } + else if ( v17 ) + { + wmemcpy((wchar_t *)((char *)S1 + v20), &S1[v13], v17); + } + } + else if ( a5 == 1 ) + { + *S1 = a4[v23]; + } + else + { + wmemcpy(S1, &a4[v23], a5); + } + goto LABEL_12; + } + if ( a5 != 1 ) + { + wmemmove(S1, a4, a5); + goto LABEL_12; + } +LABEL_26: + *S1 = *a4; + goto LABEL_12; + } +LABEL_18: + if ( N == 1 ) + S1[a5] = S1[a3]; + else + wmemmove(&S1[a5], &S1[a3], N); + goto LABEL_20; + } + if ( v9 ) + { + S2 = &S1[a3]; + if ( N == 1 ) + S1[a5] = *S2; + else + wmemmove(&S1[a5], S2, N); + } + if ( a5 ) + { + if ( a5 != 1 ) + { + wmemcpy(S1, a4, a5); + goto LABEL_12; + } + goto LABEL_26; + } +LABEL_12: + v11 = *(const wchar_t **)this; + *(_DWORD *)(this + 4) = v7; + v11[v7] = 0; + return this; +} + +//----- (004BA100) -------------------------------------------------------- +int __cdecl std::wstring::_S_compare(int a1, int a2) +{ + return a1 - a2; +} + +//----- (004BA110) -------------------------------------------------------- +int __thiscall std::wstring::_M_capacity(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[2] = a2; + return result; +} + +//----- (004BA120) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004BA130) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004BA140) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004BA150) -------------------------------------------------------- +int __thiscall std::wstring::_Alloc_hider::_Alloc_hider(_DWORD *this, int a2, int a3) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004BA160) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, size_t a2, wchar_t a3) +{ + size_t N; // edx + wchar_t C; // si + wchar_t *result; // eax + + N = a2; + C = a3; + if ( a2 > 7 ) + { + result = (wchar_t *)std::wstring::_M_create(&a2, 0); + *this = result; + N = a2; + this[2] = (wchar_t *)a2; + } + else + { + result = *this; + } + if ( N ) + { + if ( N == 1 ) + { + *result = C; + } + else + { + wmemset(result, C, N); + N = a2; + result = *this; + } + } + this[1] = (wchar_t *)N; + result[N] = 0; + return result; +} + +//----- (004BA1E0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( + wchar_t **this, + wchar_t *S2, + int a3, + int a4) +{ + unsigned int N; // ebx + wchar_t *result; // eax + int v7; // edx + unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF + + N = (a3 - (int)S2) >> 1; + v8[0] = N; + if ( N > 7 ) + { + result = (wchar_t *)std::wstring::_M_create(v8, 0); + *this = result; + this[2] = (wchar_t *)v8[0]; + goto LABEL_8; + } + result = *this; + v7 = (a3 - (int)S2) >> 1; + if ( N != 1 ) + { + if ( !N ) + goto LABEL_4; +LABEL_8: + wmemcpy(result, S2, N); + v7 = v8[0]; + result = *this; + goto LABEL_4; + } + *result = *S2; +LABEL_4: + this[1] = (wchar_t *)v7; + result[v7] = 0; + return result; +} +// 4BA1E0: using guessed type unsigned int var_10[4]; + +//----- (004BA270) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( + wchar_t **this, + wchar_t *S2, + int a3, + int a4) +{ + unsigned int N; // ebx + wchar_t *result; // eax + int v7; // edx + unsigned int v8[4]; // [esp+1Ch] [ebp-10h] BYREF + + N = (a3 - (int)S2) >> 1; + v8[0] = N; + if ( N > 7 ) + { + result = (wchar_t *)std::wstring::_M_create(v8, 0); + *this = result; + this[2] = (wchar_t *)v8[0]; + goto LABEL_8; + } + result = *this; + v7 = (a3 - (int)S2) >> 1; + if ( N != 1 ) + { + if ( !N ) + goto LABEL_4; +LABEL_8: + wmemcpy(result, S2, N); + v7 = v8[0]; + result = *this; + goto LABEL_4; + } + *result = *S2; +LABEL_4: + this[1] = (wchar_t *)v7; + result[v7] = 0; + return result; +} +// 4BA270: using guessed type unsigned int var_10[4]; + +//----- (004BA300) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4) +{ + unsigned int N; // ebx + unsigned int v6; // edx + wchar_t *result; // eax + wchar_t *v8; // [esp+1Ch] [ebp-10h] BYREF + + if ( a3 && !S2 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + N = (a3 - (int)S2) >> 1; + v8 = (wchar_t *)N; + v6 = N; + if ( N > 7 ) + { + result = (wchar_t *)std::wstring::_M_create((unsigned int *)&v8, 0); + *this = result; + this[2] = v8; + goto LABEL_10; + } + result = *this; + if ( N != 1 ) + { + if ( !N ) + goto LABEL_6; +LABEL_10: + wmemcpy(result, S2, N); + v6 = (unsigned int)v8; + result = *this; + goto LABEL_6; + } + *result = *S2; +LABEL_6: + this[1] = (wchar_t *)v6; + result[v6] = 0; + return result; +} + +//----- (004BA3B0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct(wchar_t **this, wchar_t *S2, int a3, int a4) +{ + unsigned int N; // ebx + unsigned int v6; // edx + wchar_t *result; // eax + wchar_t *v8; // [esp+1Ch] [ebp-10h] BYREF + + if ( a3 && !S2 ) + std::__throw_logic_error((std::logic_error *)"basic_string::_M_construct null not valid"); + N = (a3 - (int)S2) >> 1; + v8 = (wchar_t *)N; + v6 = N; + if ( N > 7 ) + { + result = (wchar_t *)std::wstring::_M_create((unsigned int *)&v8, 0); + *this = result; + this[2] = v8; + goto LABEL_10; + } + result = *this; + if ( N != 1 ) + { + if ( !N ) + goto LABEL_6; +LABEL_10: + wmemcpy(result, S2, N); + v6 = (unsigned int)v8; + result = *this; + goto LABEL_6; + } + *result = *S2; +LABEL_6: + this[1] = (wchar_t *)v6; + result[v6] = 0; + return result; +} + +//----- (004BA460) -------------------------------------------------------- +int __fastcall std::wstring::_M_local_data(int a1) +{ + return a1 + 8; +} + +//----- (004BA470) -------------------------------------------------------- +int __thiscall std::wstring::_M_set_length(int *this, int a2) +{ + int result; // eax + int v3; // edx + + result = a2; + v3 = *this; + this[1] = a2; + *(_WORD *)(v3 + 2 * a2) = 0; + return result; +} + +//----- (004BA490) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004BA4D0) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004BA510) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004BA550) -------------------------------------------------------- +int __cdecl std::wstring::_S_copy_chars(wchar_t *a1, const wchar_t *a2, size_t N) +{ + int result; // eax + + result = (int)(N - (_DWORD)a2) >> 1; + if ( result == 1 ) + { + result = *a2; + *a1 = result; + } + else if ( result ) + { + return (int)wmemcpy(a1, a2, (int)(N - (_DWORD)a2) >> 1); + } + return result; +} + +//----- (004BA590) -------------------------------------------------------- +void __fastcall std::wstring::shrink_to_fit(_DWORD *a1) +{ + unsigned int v1; // eax + + if ( (_DWORD *)*a1 == a1 + 2 ) + v1 = 7; + else + v1 = a1[2]; + if ( a1[1] < v1 ) + std::wstring::reserve((int)a1, 0); +} +// 4BA590: could not find valid save-restore pair for ebp + +//----- (004BA5E0) -------------------------------------------------------- +int __thiscall std::wstring::_M_replace_aux(int this, size_t a2, int a3, size_t a4, wchar_t a5) +{ + int v6; // eax + const wchar_t *v7; // ecx + unsigned int v8; // esi + unsigned int v9; // ebp + size_t N; // eax + const wchar_t *v11; // ebp + const wchar_t *S2; // edx + wchar_t *S1; // ebp + + v6 = *(_DWORD *)(this + 4); + if ( a4 > a3 + 0x1FFFFFFF - v6 ) + std::__throw_length_error((std::length_error *)"basic_string::_M_replace_aux"); + v7 = *(const wchar_t **)this; + v8 = v6 + a4 - a3; + if ( *(_DWORD *)this == this + 8 ) + v9 = 7; + else + v9 = *(_DWORD *)(this + 8); + if ( v9 < v8 ) + { + std::wstring::_M_mutate((const wchar_t **)this, a2, a3, 0, a4); + v7 = *(const wchar_t **)this; + if ( !a4 ) + goto LABEL_12; + } + else + { + N = v6 - (a3 + a2); + if ( !N || a3 == a4 ) + { +LABEL_9: + if ( !a4 ) + goto LABEL_12; + goto LABEL_10; + } + v11 = &v7[a2]; + S2 = &v11[a3]; + S1 = (wchar_t *)&v11[a4]; + if ( N != 1 ) + { + wmemmove(S1, S2, N); + v7 = *(const wchar_t **)this; + goto LABEL_9; + } + *S1 = *S2; + if ( !a4 ) + goto LABEL_12; + } +LABEL_10: + if ( a4 == 1 ) + { + v7[a2] = a5; + } + else + { + wmemset((wchar_t *)&v7[a2], a5, a4); + v7 = *(const wchar_t **)this; + } +LABEL_12: + *(_DWORD *)(this + 4) = v8; + v7[v8] = 0; + return this; +} + +//----- (004BA710) -------------------------------------------------------- +int __fastcall std::wstring::_M_get_allocator(int a1) +{ + return a1; +} + +//----- (004BA720) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::_M_construct_aux_2(wchar_t **this, size_t a2, wchar_t a3) +{ + return std::wstring::_M_construct(this, a2, a3); +} + +//----- (004BA730) -------------------------------------------------------- +int __thiscall std::wstring::at(_DWORD *this, unsigned int a2) +{ + if ( a2 >= this[1] ) + std::__throw_out_of_range_fmt("basic_string::at: __n (which is %zu) >= this->size() (which is %zu)", a2, this[1]); + return *this + 2 * a2; +} + +//----- (004BA760) -------------------------------------------------------- +int __fastcall std::wstring::end(_DWORD *a1) +{ + return *a1 + 2 * a1[1]; +} + +//----- (004BA770) -------------------------------------------------------- +int __fastcall std::wstring::back(_DWORD *a1) +{ + return *a1 + 2 * a1[1] - 2; +} + +//----- (004BA780) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rend(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2; + return result; +} + +//----- (004BA790) -------------------------------------------------------- +void __thiscall std::wstring::swap(wchar_t **this, int a2) +{ + wchar_t *v2; // eax + wchar_t *S2; // ebp + wchar_t *v5; // edi + wchar_t *v6; // ecx + wchar_t *v7; // edx + wchar_t *v8; // eax + wchar_t *v9; // edx + wchar_t *v10; // eax + wchar_t *v11; // eax + wchar_t *v12; // [esp+1Ch] [ebp-30h] + wchar_t *v13; // [esp+1Ch] [ebp-30h] + wchar_t S1[22]; // [esp+20h] [ebp-2Ch] BYREF + + if ( this != (wchar_t **)a2 ) + { + v2 = *this; + S2 = (wchar_t *)(this + 2); + v5 = (wchar_t *)(a2 + 8); + v6 = *(wchar_t **)a2; + if ( S2 == v2 ) + { + if ( v5 == v6 ) + { + v8 = *(wchar_t **)(a2 + 4); + if ( this[1] ) + { + if ( !v8 ) + { + wmemcpy((wchar_t *)(a2 + 8), S2, 8u); + *(_DWORD *)(a2 + 4) = this[1]; + v10 = *this; + this[1] = 0; + *v10 = 0; + return; + } + wmemcpy(S1, (const wchar_t *)(a2 + 8), 8u); + wmemcpy((wchar_t *)(a2 + 8), S2, 8u); + wmemcpy(S2, S1, 8u); + v8 = *(wchar_t **)(a2 + 4); + v9 = this[1]; + } + else + { + if ( v8 ) + { + wmemcpy(S2, (const wchar_t *)(a2 + 8), 8u); + this[1] = *(wchar_t **)(a2 + 4); + v11 = *(wchar_t **)a2; + *(_DWORD *)(a2 + 4) = 0; + *v11 = 0; + return; + } + v9 = 0; + } + } + else + { + v12 = *(wchar_t **)(a2 + 8); + wmemcpy((wchar_t *)(a2 + 8), S2, 8u); + *this = *(wchar_t **)a2; + v8 = *(wchar_t **)(a2 + 4); + *(_DWORD *)a2 = v5; + this[2] = v12; + v9 = this[1]; + } + } + else + { + v7 = this[2]; + if ( v5 == v6 ) + { + v13 = this[2]; + wmemcpy(S2, (const wchar_t *)(a2 + 8), 8u); + v7 = v13; + *(_DWORD *)a2 = *this; + *this = S2; + } + else + { + *this = v6; + *(_DWORD *)a2 = v2; + this[2] = *(wchar_t **)(a2 + 8); + } + *(_DWORD *)(a2 + 8) = v7; + v8 = *(wchar_t **)(a2 + 4); + v9 = this[1]; + } + this[1] = v8; + *(_DWORD *)(a2 + 4) = v9; + } +} + +//----- (004BA910) -------------------------------------------------------- +int __fastcall std::wstring::begin(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004BA920) -------------------------------------------------------- +_WORD *__fastcall std::wstring::clear(int a1) +{ + _WORD *result; // eax + + result = *(_WORD **)a1; + *(_DWORD *)(a1 + 4) = 0; + *result = 0; + return result; +} + +//----- (004BA930) -------------------------------------------------------- +int __thiscall std::wstring::erase(int *this, int a2) +{ + int v3; // ebx + + v3 = a2 - *this; + std::wstring::_M_erase(this, v3 >> 1, 1); + return v3 + *this; +} + +//----- (004BA960) -------------------------------------------------------- +_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) +{ + _WORD *result; // eax + int v5; // esi + int v6; // edi + int v7; // ecx + + result = a2; + v5 = (int)a2 - *this; + v6 = *this + 2 * this[1]; + v7 = v5 >> 1; + if ( a3 == v6 ) + { + this[1] = v7; + *a2 = 0; + } + else + { + std::wstring::_M_erase(this, v7, (a3 - (int)a2) >> 1); + return (_WORD *)(v5 + *this); + } + return result; +} + +//----- (004BA9D0) -------------------------------------------------------- +int __thiscall std::wstring::erase(int *this, int a2) +{ + int v3; // ebx + + v3 = a2 - *this; + std::wstring::_M_erase(this, v3 >> 1, 1); + return v3 + *this; +} + +//----- (004BAA00) -------------------------------------------------------- +_WORD *__thiscall std::wstring::erase(int *this, _WORD *a2, int a3) +{ + _WORD *result; // eax + int v5; // esi + int v6; // edi + int v7; // ecx + + result = a2; + v5 = (int)a2 - *this; + v6 = *this + 2 * this[1]; + v7 = v5 >> 1; + if ( a3 == v6 ) + { + this[1] = v7; + *a2 = 0; + } + else + { + std::wstring::_M_erase(this, v7, (a3 - (int)a2) >> 1); + return (_WORD *)(v5 + *this); + } + return result; +} + +//----- (004BAA70) -------------------------------------------------------- +int *__thiscall std::wstring::erase(int *this, unsigned int a2, unsigned int a3) +{ + int *result; // eax + unsigned int v4; // ebx + unsigned int v5; // ebx + int v6; // ecx + + result = this; + v4 = this[1]; + if ( a2 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::erase", + a2, + v4); + if ( a3 == -1 ) + { + v6 = *this; + result[1] = a2; + *(_WORD *)(v6 + 2 * a2) = 0; + } + else if ( a3 ) + { + v5 = v4 - a2; + if ( v5 > a3 ) + v5 = a3; + std::wstring::_M_erase(this, a2, v5); + return this; + } + return result; +} + +//----- (004BAB00) -------------------------------------------------------- +int __fastcall std::wstring::front(int a1) +{ + return *(_DWORD *)a1; +} + +//----- (004BAB10) -------------------------------------------------------- +int __thiscall std::wstring::append(_DWORD *this, wchar_t *String) +{ + unsigned int v3; // eax + + v3 = wcslen(String); + if ( v3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, String, v3); +} + +//----- (004BAB60) -------------------------------------------------------- +int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3) +{ + if ( a3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, a2, a3); +} + +//----- (004BAB90) -------------------------------------------------------- +int __thiscall std::wstring::append(void *this, int a2) +{ + return std::wstring::_M_append((int)this, *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); +} + +//----- (004BABC0) -------------------------------------------------------- +int __thiscall std::wstring::append(void *this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // edx + + v4 = a2[1] - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > a2[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::append", + a3, + a2[1]); + return std::wstring::_M_append((int)this, (wchar_t *)(*a2 + 2 * a3), v4); +} + +//----- (004BAC20) -------------------------------------------------------- +int __thiscall std::wstring::append(_DWORD *this, wchar_t *a2, size_t a3) +{ + if ( a3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, a2, a3); +} + +//----- (004BAC50) -------------------------------------------------------- +int __thiscall std::wstring::append(size_t *this, size_t a2, __int16 a3) +{ + return std::wstring::_M_replace_aux((int)this, this[1], 0, a2, a3); +} + +//----- (004BAC80) -------------------------------------------------------- +wchar_t **__thiscall std::wstring::assign(wchar_t **this, int a2) +{ + wchar_t *S1; // eax + wchar_t *v4; // edi + wchar_t *v5; // ecx + wchar_t *v6; // edx + wchar_t *v7; // ebp + wchar_t *v9; // [esp+1Ch] [ebp-20h] + + S1 = *this; + v4 = *(wchar_t **)a2; + v5 = (wchar_t *)(a2 + 8); + v6 = *(wchar_t **)(a2 + 4); + if ( *(_DWORD *)a2 != a2 + 8 ) + { + v9 = *(wchar_t **)(a2 + 8); + if ( S1 == (wchar_t *)(this + 2) ) + { + *this = v4; + this[1] = v6; + this[2] = v9; + } + else + { + *this = v4; + v7 = this[2]; + this[1] = v6; + this[2] = v9; + if ( S1 ) + { + *(_DWORD *)a2 = S1; + *(_DWORD *)(a2 + 8) = v7; + goto LABEL_5; + } + } + *(_DWORD *)a2 = v5; + S1 = (wchar_t *)(a2 + 8); + goto LABEL_5; + } + if ( v6 ) + { + if ( v6 == (wchar_t *)1 ) + { + *S1 = *(_WORD *)(a2 + 8); + } + else + { + wmemcpy(S1, (const wchar_t *)(a2 + 8), *(_DWORD *)(a2 + 4)); + v6 = *(wchar_t **)(a2 + 4); + S1 = *this; + v5 = *(wchar_t **)a2; + } + } + this[1] = v6; + S1[(_DWORD)v6] = 0; + S1 = v5; +LABEL_5: + *(_DWORD *)(a2 + 4) = 0; + *S1 = 0; + return this; +} + +//----- (004BAD40) -------------------------------------------------------- +int __thiscall std::wstring::assign(size_t *this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::_M_replace((int)this, 0, this[1], String, v3); +} + +//----- (004BAD80) -------------------------------------------------------- +int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3) +{ + return std::wstring::_M_replace((int)this, 0, this[1], a2, a3); +} + +//----- (004BADB0) -------------------------------------------------------- +void *__thiscall std::wstring::assign(void *this, int a2) +{ + std::wstring::_M_assign((int)this, a2); + return this; +} + +//----- (004BADD0) -------------------------------------------------------- +int __thiscall std::wstring::assign(size_t *this, _DWORD *a2, unsigned int a3, size_t a4) +{ + size_t v4; // edx + + v4 = a2[1] - a3; + if ( v4 > a4 ) + v4 = a4; + if ( a3 > a2[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::assign", + a3, + a2[1]); + return std::wstring::_M_replace((int)this, 0, this[1], (wchar_t *)(*a2 + 2 * a3), v4); +} + +//----- (004BAE40) -------------------------------------------------------- +int __thiscall std::wstring::assign(size_t *this, wchar_t *a2, size_t a3) +{ + return std::wstring::_M_replace((int)this, 0, this[1], a2, a3); +} + +//----- (004BAE70) -------------------------------------------------------- +int __thiscall std::wstring::assign(int *this, size_t a2, __int16 a3) +{ + return std::wstring::_M_replace_aux((int)this, 0, this[1], a2, a3); +} + +//----- (004BAEA0) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, int a4) +{ + int v5; // esi + unsigned int v6; // ecx + + v5 = a2 - *this; + v6 = this[1]; + if ( v5 >> 1 > v6 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5 >> 1, + v6); + std::wstring::_M_replace((int)this, v5 >> 1, 0, a3, (2 * a4) >> 1); + return v5 + *this; +} + +//----- (004BAF10) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4) +{ + int v5; // ebx + + v5 = a2 - *this; + std::wstring::_M_replace_aux((int)this, v5 >> 1, 0, a3, a4); + return v5 + *this; +} + +//----- (004BAF60) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3) +{ + int v4; // ebx + + v4 = a2 - *this; + std::wstring::_M_replace_aux((int)this, v4 >> 1, 0, 1u, a3); + return v4 + *this; +} + +//----- (004BAFB0) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t *a3, size_t a4) +{ + unsigned int v4; // eax + + v4 = (a2 - *this) >> 1; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::wstring::_M_replace((int)this, v4, 0, a3, a4); +} + +//----- (004BB010) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, size_t a3, __int16 a4) +{ + return std::wstring::_M_replace_aux((int)this, (a2 - *this) >> 1, 0, a3, a4); +} + +//----- (004BB050) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, int a2, wchar_t a3) +{ + int v4; // ebx + + v4 = a2 - *this; + std::wstring::_M_replace_aux((int)this, v4 >> 1, 0, 1u, a3); + return v4 + *this; +} + +//----- (004BB0A0) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *String) +{ + size_t v4; // eax + + v4 = wcslen(String); + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, 0, String, v4); +} + +//----- (004BB110) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, wchar_t *a3, size_t a4) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, 0, a3, a4); +} + +//----- (004BB170) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, int a3) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, 0, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); +} + +//----- (004BB1D0) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, _DWORD *a3, unsigned int a4, size_t a5) +{ + size_t v5; // edi + + v5 = a3[1] - a4; + if ( v5 > a5 ) + v5 = a5; + if ( a4 > a3[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a4, + a3[1]); + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, 0, (wchar_t *)(*a3 + 2 * a4), v5); +} + +//----- (004BB260) -------------------------------------------------------- +int __thiscall std::wstring::insert(_DWORD *this, unsigned int a2, size_t a3, __int16 a4) +{ + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::insert", + a2, + this[1]); + return std::wstring::_M_replace_aux((int)this, a2, 0, a3, a4); +} + +//----- (004BB2C0) -------------------------------------------------------- +int __thiscall std::wstring::insert<__gnu_cxx::__normal_iterator>( + _DWORD *this, + int a2, + wchar_t *a3, + int a4) +{ + unsigned int v4; // eax + + v4 = (a2 - *this) >> 1; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::wstring::_M_replace((int)this, v4, 0, a3, (a4 - (int)a3) >> 1); +} + +//----- (004BB330) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::rbegin(_DWORD *this, _DWORD *a2) +{ + _DWORD *result; // eax + + result = this; + *this = *a2 + 2 * a2[1]; + return result; +} + +//----- (004BB350) -------------------------------------------------------- +int __thiscall std::wstring::resize(int *this, unsigned int a2) +{ + return std::wstring::resize(this, a2, 0); +} + +//----- (004BB370) -------------------------------------------------------- +int __thiscall std::wstring::resize(int *this, unsigned int a2, wchar_t a3) +{ + size_t v3; // edx + int result; // eax + int v5; // edx + + v3 = this[1]; + result = a2; + if ( v3 < a2 ) + return std::wstring::_M_replace_aux((int)this, v3, 0, a2 - v3, a3); + if ( v3 > a2 ) + { + v5 = *this; + this[1] = a2; + *(_WORD *)(v5 + 2 * a2) = 0; + } + return result; +} + +//----- (004BB3D0) -------------------------------------------------------- +int __thiscall std::wstring::_M_data(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + *this = a2; + return result; +} + +//----- (004BB3E0) -------------------------------------------------------- +size_t __cdecl std::wstring::_S_copy(wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t result; // eax + + result = N; + if ( N == 1 ) + { + result = *S2; + *S1 = result; + } + else if ( N ) + { + return (size_t)wmemcpy(S1, S2, N); + } + return result; +} + +//----- (004BB410) -------------------------------------------------------- +size_t __cdecl std::wstring::_S_move(wchar_t *S1, const wchar_t *S2, size_t N) +{ + size_t result; // eax + + result = N; + if ( N == 1 ) + { + result = *S2; + *S1 = result; + } + else if ( N ) + { + return (size_t)wmemmove(S1, S2, N); + } + return result; +} + +//----- (004BB440) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004BB4B0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004BB520) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4) +{ + unsigned int v4; // edx + unsigned int v5; // eax + + v4 = (a2 - *this) >> 1; + v5 = (a3 - a2) >> 1; + if ( v5 > this[1] - v4 ) + v5 = this[1] - v4; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::wstring::_M_replace((int)this, v4, v5, *(wchar_t **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004BB5A0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String) +{ + size_t v5; // eax + unsigned int v6; // ebx + unsigned int v7; // edx + + v5 = wcslen(String); + v6 = (a2 - *this) >> 1; + v7 = (a3 - a2) >> 1; + if ( v7 > this[1] - v6 ) + v7 = this[1] - v6; + if ( v6 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + this[1]); + return std::wstring::_M_replace((int)this, v6, v7, String, v5); +} + +//----- (004BB620) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004BB690) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, a5); +} + +//----- (004BB700) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004BB770) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, a5); +} + +//----- (004BB7E0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5) +{ + return std::wstring::_M_replace_aux((int)this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); +} + +//----- (004BB810) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004BB880) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *String) +{ + size_t v5; // eax + unsigned int v6; // ebx + unsigned int v7; // edx + + v5 = wcslen(String); + v6 = (a2 - *this) >> 1; + v7 = (a3 - a2) >> 1; + if ( v7 > this[1] - v6 ) + v7 = this[1] - v6; + if ( v6 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v6, + this[1]); + return std::wstring::_M_replace((int)this, v6, v7, String, v5); +} + +//----- (004BB900) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004BB970) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, a5); +} + +//----- (004BB9E0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, int a4) +{ + unsigned int v4; // edx + unsigned int v5; // eax + + v4 = (a2 - *this) >> 1; + v5 = (a3 - a2) >> 1; + if ( v5 > this[1] - v4 ) + v5 = this[1] - v4; + if ( v4 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v4, + this[1]); + return std::wstring::_M_replace((int)this, v4, v5, *(wchar_t **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004BBA60) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004BBAD0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, wchar_t *a4, size_t a5) +{ + unsigned int v5; // edx + unsigned int v6; // eax + + v5 = (a2 - *this) >> 1; + v6 = (a3 - a2) >> 1; + if ( v6 > this[1] - v5 ) + v6 = this[1] - v5; + if ( v5 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + v5, + this[1]); + return std::wstring::_M_replace((int)this, v5, v6, a4, (int)(a5 - (_DWORD)a4) >> 1); +} + +//----- (004BBB40) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, int a2, int a3, size_t a4, wchar_t a5) +{ + return std::wstring::_M_replace_aux((int)this, (a2 - *this) >> 1, (a3 - a2) >> 1, a4, a5); +} + +//----- (004BBB70) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *String) +{ + size_t v5; // eax + size_t v6; // edx + + v5 = wcslen(String); + v6 = this[1] - a2; + if ( v6 > a3 ) + v6 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, v6, String, v5); +} + +//----- (004BBBE0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, wchar_t *a4, size_t a5) +{ + size_t v5; // edx + + v5 = this[1] - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, v5, a4, a5); +} + +//----- (004BBC40) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, int a4) +{ + size_t v4; // eax + + v4 = this[1] - a2; + if ( v4 > a3 ) + v4 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, v4, *(wchar_t **)a4, *(_DWORD *)(a4 + 4)); +} + +//----- (004BBCB0) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, size_t a3, _DWORD *a4, unsigned int a5, size_t a6) +{ + size_t v6; // ebx + size_t v7; // eax + + v6 = a4[1] - a5; + if ( v6 > a6 ) + v6 = a6; + if ( a5 > a4[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a5, + a4[1]); + v7 = this[1] - a2; + if ( v7 > a3 ) + v7 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace((int)this, a2, v7, (wchar_t *)(*a4 + 2 * a5), v6); +} + +//----- (004BBD50) -------------------------------------------------------- +int __thiscall std::wstring::replace(_DWORD *this, unsigned int a2, unsigned int a3, size_t a4, wchar_t a5) +{ + unsigned int v5; // edx + + v5 = this[1] - a2; + if ( v5 > a3 ) + v5 = a3; + if ( a2 > this[1] ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::replace", + a2, + this[1]); + return std::wstring::_M_replace_aux((int)this, a2, v5, a4, a5); +} + +//----- (004BBDC0) -------------------------------------------------------- +void __thiscall std::wstring::reserve(int this, unsigned int a2) +{ + unsigned int v3; // ecx + unsigned int v4; // eax + wchar_t *v5; // edi + wchar_t *v6; // esi + unsigned int v7; // edx + wchar_t *v8; // eax + int v9; // edx + wchar_t *S1; // edi + wchar_t *S2; // eax + unsigned int v12; // eax + + v3 = *(_DWORD *)(this + 4); + v4 = a2; + if ( a2 < v3 ) + { + a2 = v3; + v4 = v3; + } + v5 = *(wchar_t **)this; + v6 = (wchar_t *)(this + 8); + if ( this + 8 == *(_DWORD *)this ) + v7 = 7; + else + v7 = *(_DWORD *)(this + 8); + if ( v7 != v4 ) + { + if ( v7 > 7 ) + { + if ( v4 > 7 ) + goto LABEL_8; + } + else if ( v4 > v7 ) + { +LABEL_8: + v8 = (wchar_t *)std::wstring::_M_create(&a2, v7); + v9 = *(_DWORD *)(this + 4); + S1 = v8; + S2 = *(wchar_t **)this; + if ( v9 ) + { + if ( v9 != -1 ) + { + wmemcpy(S1, S2, v9 + 1); + S2 = *(wchar_t **)this; + } + } + else + { + *S1 = *S2; + } + if ( v6 != S2 ) + operator delete(S2); + v12 = a2; + *(_DWORD *)this = S1; + *(_DWORD *)(this + 8) = v12; + return; + } + if ( v6 != v5 ) + { + if ( v3 ) + { + if ( v3 != -1 ) + { + wmemcpy((wchar_t *)(this + 8), *(const wchar_t **)this, v3 + 1); + v5 = *(wchar_t **)this; + } + } + else + { + *(_WORD *)(this + 8) = *v5; + } + operator delete(v5); + *(_DWORD *)this = v6; + } + } +} + +//----- (004BBEE0) -------------------------------------------------------- +int __thiscall std::wstring::_M_erase(int *this, int a2, int a3) +{ + int v4; // eax + int v5; // ecx + wchar_t *S1; // edi + int result; // eax + + v4 = this[1]; + v5 = *this; + if ( v4 != a2 + a3 && a3 ) + { + S1 = (wchar_t *)(v5 + 2 * a2); + if ( v4 - (a2 + a3) == 1 ) + { + *S1 = *(_WORD *)(v5 + 2 * (a2 + a3)); + } + else + { + wmemmove(S1, (const wchar_t *)(v5 + 2 * (a2 + a3)), v4 - (a2 + a3)); + v5 = *this; + v4 = this[1]; + } + } + result = v4 - a3; + this[1] = result; + *(_WORD *)(v5 + 2 * result) = 0; + return result; +} + +//----- (004BBF50) -------------------------------------------------------- +int __fastcall std::wstring::pop_back(int *a1) +{ + return std::wstring::_M_erase(a1, a1[1] - 1, 1); +} + +//----- (004BBF70) -------------------------------------------------------- +int __thiscall std::wstring::_M_append(int this, wchar_t *S2, size_t N) +{ + int v4; // edi + size_t v5; // ecx + const wchar_t *v6; // eax + unsigned int v7; // esi + unsigned int v8; // edi + wchar_t *S1; // ecx + + v4 = this + 8; + v5 = *(_DWORD *)(this + 4); + v6 = *(const wchar_t **)this; + v7 = v5 + N; + if ( *(_DWORD *)this == v4 ) + v8 = 7; + else + v8 = *(_DWORD *)(this + 8); + if ( v7 > v8 ) + { + std::wstring::_M_mutate((const wchar_t **)this, v5, 0, S2, N); + v6 = *(const wchar_t **)this; + } + else if ( N ) + { + S1 = (wchar_t *)&v6[v5]; + if ( N == 1 ) + { + *S1 = *S2; + } + else + { + wmemcpy(S1, S2, N); + v6 = *(const wchar_t **)this; + } + } + *(_DWORD *)(this + 4) = v7; + v6[v7] = 0; + return this; +} + +//----- (004BC010) -------------------------------------------------------- +void __thiscall std::wstring::_M_assign(int this, int a2) +{ + wchar_t *S1; // esi + size_t N; // edi + unsigned int v5; // eax + const wchar_t *S2; // eax + unsigned int v7; // eax + int v8; // [esp+1Ch] [ebp-30h] + unsigned int v9[8]; // [esp+2Ch] [ebp-20h] BYREF + + if ( this != a2 ) + { + S1 = *(wchar_t **)this; + N = *(_DWORD *)(a2 + 4); + if ( this + 8 == *(_DWORD *)this ) + v5 = 7; + else + v5 = *(_DWORD *)(this + 8); + if ( v5 < N ) + { + v8 = this + 8; + v9[0] = *(_DWORD *)(a2 + 4); + S1 = (wchar_t *)std::wstring::_M_create(v9, v5); + if ( v8 != *(_DWORD *)this ) + operator delete(*(void **)this); + v7 = v9[0]; + *(_DWORD *)this = S1; + *(_DWORD *)(this + 8) = v7; + if ( !N ) + goto LABEL_8; + } + else if ( !N ) + { +LABEL_8: + *(_DWORD *)(this + 4) = N; + S1[N] = 0; + return; + } + S2 = *(const wchar_t **)a2; + if ( N == 1 ) + { + *S1 = *S2; + } + else + { + wmemcpy(S1, S2, N); + S1 = *(wchar_t **)this; + } + goto LABEL_8; + } +} +// 4BC010: using guessed type unsigned int var_20[8]; + +//----- (004BC0D0) -------------------------------------------------------- +void *__stdcall std::wstring::_M_create(unsigned int *a1, unsigned int a2) +{ + unsigned int v2; // eax + unsigned int v3; // edx + void (__cdecl *v5)(void *); // [esp+4h] [ebp-18h] + + v2 = *a1; + if ( *a1 > 0x1FFFFFFF ) + std::__throw_length_error((std::length_error *)"basic_string::_M_create"); + if ( v2 > a2 ) + { + v3 = 2 * a2; + if ( v2 < 2 * a2 ) + { + if ( v3 > 0x1FFFFFFF ) + { + *a1 = 0x1FFFFFFF; + return operator new((struct type_info *)0x40000000, v5); + } + *a1 = v3; + v2 = 2 * a2; + } + } + return operator new((struct type_info *)(2 * (v2 + 1)), v5); +} +// 4BC106: variable 'v5' is possibly undefined + +//----- (004BC140) -------------------------------------------------------- +int __thiscall std::wstring::_M_length(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[1] = a2; + return result; +} + +//----- (004BC150) -------------------------------------------------------- +const wchar_t *__thiscall std::wstring::_M_mutate(const wchar_t **this, size_t N, int a3, wchar_t *a4, size_t a5) +{ + const wchar_t *v6; // edx + unsigned int v7; // eax + wchar_t *S1; // esi + const wchar_t *S2; // eax + wchar_t *v10; // eax + const wchar_t *v11; // ebp + wchar_t *v12; // ebx + const wchar_t *result; // eax + size_t v14; // [esp+18h] [ebp-34h] + wchar_t *v15; // [esp+1Ch] [ebp-30h] + unsigned int v16[8]; // [esp+2Ch] [ebp-20h] BYREF + + v6 = this[1]; + v16[0] = (unsigned int)v6 + a5 - a3; + v14 = (size_t)v6 - N - a3; + v15 = (wchar_t *)(this + 2); + if ( this + 2 == (const wchar_t **)*this ) + v7 = 7; + else + v7 = (unsigned int)this[2]; + S1 = (wchar_t *)std::wstring::_M_create(v16, v7); + if ( N ) + { + S2 = *this; + if ( N == 1 ) + *S1 = *S2; + else + wmemcpy(S1, S2, N); + } + if ( a4 && a5 ) + { + if ( a5 == 1 ) + S1[N] = *a4; + else + wmemcpy(&S1[N], a4, a5); + } + v10 = (wchar_t *)*this; + if ( v14 ) + { + v11 = &v10[N + a3]; + v12 = &S1[a5 + N]; + if ( v14 == 1 ) + { + *v12 = *v11; + } + else + { + wmemcpy(v12, v11, v14); + v10 = (wchar_t *)*this; + } + } + if ( v15 != v10 ) + operator delete(v10); + result = (const wchar_t *)v16[0]; + *this = S1; + this[2] = result; + return result; +} +// 4BC150: using guessed type unsigned int var_20[8]; + +//----- (004BC290) -------------------------------------------------------- +wchar_t *__cdecl std::wstring::_S_assign(wchar_t *a1, size_t C, size_t N) +{ + wchar_t *result; // eax + + result = (wchar_t *)C; + if ( C == 1 ) + { + *a1 = N; + } + else if ( C ) + { + return wmemset(a1, N, C); + } + return result; +} +// 4BC290: using guessed type size_t C; + +//----- (004BC2D0) -------------------------------------------------------- +const wchar_t *__thiscall std::wstring::push_back(int this, wchar_t a2) +{ + size_t v3; // esi + const wchar_t *result; // eax + unsigned int v5; // edi + unsigned int v6; // edx + + v3 = *(_DWORD *)(this + 4); + result = *(const wchar_t **)this; + v5 = v3 + 1; + if ( *(_DWORD *)this == this + 8 ) + v6 = 7; + else + v6 = *(_DWORD *)(this + 8); + if ( v5 > v6 ) + { + std::wstring::_M_mutate((const wchar_t **)this, v3, 0, 0, 1u); + result = *(const wchar_t **)this; + } + result[v3] = a2; + *(_DWORD *)(this + 4) = v5; + result[v3 + 1] = 0; + return result; +} + +//----- (004BC350) -------------------------------------------------------- +int __thiscall std::wstring::basic_string(wchar_t *this, int a2) +{ + int v3; // eax + int result; // eax + + *(_DWORD *)this = this + 4; + if ( a2 + 8 == *(_DWORD *)a2 ) + { + wmemcpy(this + 4, (const wchar_t *)(a2 + 8), 8u); + } + else + { + *(_DWORD *)this = *(_DWORD *)a2; + *((_DWORD *)this + 2) = *(_DWORD *)(a2 + 8); + } + v3 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + *(_DWORD *)(a2 + 4) = 0; + *((_DWORD *)this + 1) = v3; + result = 0; + *(_WORD *)(a2 + 8) = 0; + return result; +} + +//----- (004BC3B0) -------------------------------------------------------- +_WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3) +{ + wchar_t *S1; // ecx + int v5; // edx + _WORD *result; // eax + int v7; // edx + int v8; // eax + + S1 = this + 4; + *(_DWORD *)this = S1; + if ( a2 + 8 == *(_DWORD *)a2 ) + { + wmemcpy(S1, (const wchar_t *)(a2 + 8), 8u); + v8 = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = 0; + *((_DWORD *)this + 1) = v8; + result = *(_WORD **)a2; + **(_WORD **)a2 = 0; + } + else + { + *(_DWORD *)this = *(_DWORD *)a2; + v5 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + result = 0; + *((_DWORD *)this + 1) = v5; + v7 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = 0; + *(_WORD *)(a2 + 8) = 0; + *((_DWORD *)this + 2) = v7; + } + return result; +} + +//----- (004BC420) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3) +{ + int v3; // eax + size_t v4; // eax + int v6; // [esp+8h] [ebp-24h] + wchar_t **v7; // [esp+1Ch] [ebp-10h] + + *this = (wchar_t *)(this + 2); + v3 = -2; + if ( String ) + { + v7 = this; + v4 = wcslen(String); + this = v7; + v3 = (int)&String[v4]; + } + LOBYTE(v6) = 0; + return std::wstring::_M_construct(this, String, v3, v6); +} +// 4BC455: variable 'v6' is possibly undefined + +//----- (004BC470) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); +} + +//----- (004BC490) -------------------------------------------------------- +int __thiscall std::wstring::basic_string(_DWORD *this, int a2) +{ + int result; // eax + + this[1] = 0; + *this = this + 2; + result = 0; + *((_WORD *)this + 4) = 0; + return result; +} + +//----- (004BC4B0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v3) = 0; + return std::wstring::_M_construct(this, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); +} +// 4BC4D0: variable 'v3' is possibly undefined + +//----- (004BC4E0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v4) = 0; + return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( + this, + *(wchar_t **)a2, + *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), + v4); +} +// 4BC500: variable 'v4' is possibly undefined + +//----- (004BC510) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) +{ + unsigned int v4; // eax + + *this = (wchar_t *)(this + 2); + v4 = *((_DWORD *)a2 + 1); + if ( a3 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *((_DWORD *)a2 + 1)); + LOBYTE(a4) = 0; + return std::wstring::_M_construct( + this, + (wchar_t *)(*(_DWORD *)a2 + 2 * a3), + *(_DWORD *)a2 + 2 * a3 + 2 * (v4 - a3), + a4); +} + +//----- (004BC570) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) +{ + unsigned int v4; // esi + unsigned int v5; // eax + unsigned int v6; // eax + + *this = (wchar_t *)(this + 2); + v4 = a4; + v5 = *((_DWORD *)a2 + 1); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *((_DWORD *)a2 + 1)); + v6 = v5 - a3; + LOBYTE(a4) = 0; + if ( v6 > v4 ) + v6 = v4; + return std::wstring::_M_construct( + this, + (wchar_t *)(*(_DWORD *)a2 + 2 * a3), + *(_DWORD *)a2 + 2 * a3 + 2 * v6, + a4); +} + +//----- (004BC5E0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); + v6 = v5 - a3; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + return std::wstring::_M_construct(this, (wchar_t *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); +} +// 4BC617: variable 'v8' is possibly undefined + +//----- (004BC650) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); +} + +//----- (004BC670) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4) +{ + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3); +} + +//----- (004BC6A0) -------------------------------------------------------- +int __fastcall std::wstring::basic_string(int a1) +{ + int result; // eax + + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + result = 0; + *(_WORD *)(a1 + 8) = 0; + return result; +} + +//----- (004BC6C0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( + wchar_t **this, + wchar_t *a2, + int a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); +} + +//----- (004BC6D0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3, a4); +} + +//----- (004BC6E0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3, a4); +} + +//----- (004BC6F0) -------------------------------------------------------- +int __thiscall std::wstring::basic_string(wchar_t *this, int a2) +{ + int v3; // eax + int result; // eax + + *(_DWORD *)this = this + 4; + if ( a2 + 8 == *(_DWORD *)a2 ) + { + wmemcpy(this + 4, (const wchar_t *)(a2 + 8), 8u); + } + else + { + *(_DWORD *)this = *(_DWORD *)a2; + *((_DWORD *)this + 2) = *(_DWORD *)(a2 + 8); + } + v3 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + *(_DWORD *)(a2 + 4) = 0; + *((_DWORD *)this + 1) = v3; + result = 0; + *(_WORD *)(a2 + 8) = 0; + return result; +} + +//----- (004BC750) -------------------------------------------------------- +_WORD *__thiscall std::wstring::basic_string(wchar_t *this, int a2, int a3) +{ + wchar_t *S1; // ecx + int v5; // edx + _WORD *result; // eax + int v7; // edx + int v8; // eax + + S1 = this + 4; + *(_DWORD *)this = S1; + if ( a2 + 8 == *(_DWORD *)a2 ) + { + wmemcpy(S1, (const wchar_t *)(a2 + 8), 8u); + v8 = *(_DWORD *)(a2 + 4); + *(_DWORD *)(a2 + 4) = 0; + *((_DWORD *)this + 1) = v8; + result = *(_WORD **)a2; + **(_WORD **)a2 = 0; + } + else + { + *(_DWORD *)this = *(_DWORD *)a2; + v5 = *(_DWORD *)(a2 + 4); + *(_DWORD *)a2 = a2 + 8; + result = 0; + *((_DWORD *)this + 1) = v5; + v7 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = 0; + *(_WORD *)(a2 + 8) = 0; + *((_DWORD *)this + 2) = v7; + } + return result; +} + +//----- (004BC7C0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *String, int a3) +{ + int v3; // eax + size_t v4; // eax + int v6; // [esp+8h] [ebp-24h] + wchar_t **v7; // [esp+1Ch] [ebp-10h] + + *this = (wchar_t *)(this + 2); + v3 = -2; + if ( String ) + { + v7 = this; + v4 = wcslen(String); + this = v7; + v3 = (int)&String[v4]; + } + LOBYTE(v6) = 0; + return std::wstring::_M_construct(this, String, v3, v6); +} +// 4BC7F5: variable 'v6' is possibly undefined + +//----- (004BC810) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); +} + +//----- (004BC830) -------------------------------------------------------- +int __thiscall std::wstring::basic_string(_DWORD *this, int a2) +{ + int result; // eax + + this[1] = 0; + *this = this + 2; + result = 0; + *((_WORD *)this + 4) = 0; + return result; +} + +//----- (004BC850) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2) +{ + int v3; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v3) = 0; + return std::wstring::_M_construct(this, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v3); +} +// 4BC870: variable 'v3' is possibly undefined + +//----- (004BC880) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + LOBYTE(v4) = 0; + return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>( + this, + *(wchar_t **)a2, + *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), + v4); +} +// 4BC8A0: variable 'v4' is possibly undefined + +//----- (004BC8B0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) +{ + unsigned int v4; // eax + + *this = (wchar_t *)(this + 2); + v4 = *((_DWORD *)a2 + 1); + if ( a3 > v4 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *((_DWORD *)a2 + 1)); + LOBYTE(a4) = 0; + return std::wstring::_M_construct( + this, + (wchar_t *)(*(_DWORD *)a2 + 2 * a3), + *(_DWORD *)a2 + 2 * a3 + 2 * (v4 - a3), + a4); +} + +//----- (004BC910) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, unsigned int a3, int a4) +{ + unsigned int v4; // esi + unsigned int v5; // eax + unsigned int v6; // eax + + *this = (wchar_t *)(this + 2); + v4 = a4; + v5 = *((_DWORD *)a2 + 1); + if ( a3 > v5 ) + std::__throw_out_of_range_fmt( + "%s: __pos (which is %zu) > this->size() (which is %zu)", + "basic_string::basic_string", + a3, + *((_DWORD *)a2 + 1)); + v6 = v5 - a3; + LOBYTE(a4) = 0; + if ( v6 > v4 ) + v6 = v4; + return std::wstring::_M_construct( + this, + (wchar_t *)(*(_DWORD *)a2 + 2 * a3), + *(_DWORD *)a2 + 2 * a3 + 2 * v6, + a4); +} + +//----- (004BC980) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, _DWORD *a2, unsigned int a3, unsigned int a4, int a5) +{ + unsigned int v5; // eax + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-14h] + + *this = (wchar_t *)(this + 2); + v5 = a2[1]; + if ( a3 > v5 ) + std::__throw_out_of_range_fmt("%s: __pos (which is %zu) > this->size() (which is %zu)", "string::string", a3, a2[1]); + v6 = v5 - a3; + LOBYTE(v8) = 0; + if ( v6 > a4 ) + v6 = a4; + return std::wstring::_M_construct(this, (wchar_t *)(*a2 + 2 * a3), *a2 + 2 * a3 + 2 * v6, v8); +} +// 4BC9B7: variable 'v8' is possibly undefined + +//----- (004BC9F0) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, (int)&a2[a3], a4); +} + +//----- (004BCA10) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, size_t a2, __int16 a3, int a4) +{ + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3); +} + +//----- (004BCA40) -------------------------------------------------------- +int __fastcall std::wstring::basic_string(int a1) +{ + int result; // eax + + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + result = 0; + *(_WORD *)(a1 + 8) = 0; + return result; +} + +//----- (004BCA60) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string<__gnu_cxx::__normal_iterator,void>( + wchar_t **this, + wchar_t *a2, + int a3, + int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct<__gnu_cxx::__normal_iterator>(this, a2, a3, a4); +} + +//----- (004BCA70) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3, a4); +} + +//----- (004BCA80) -------------------------------------------------------- +wchar_t *__thiscall std::wstring::basic_string(wchar_t **this, wchar_t *a2, int a3, int a4) +{ + LOBYTE(a4) = 0; + *this = (wchar_t *)(this + 2); + return std::wstring::_M_construct(this, a2, a3, a4); +} + +//----- (004BCA90) -------------------------------------------------------- +void __fastcall std::wstring::~wstring(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004BCAC0) -------------------------------------------------------- +void __fastcall std::wstring::~wstring(void **a1) +{ + if ( *a1 != a1 + 2 ) + operator delete(*a1); +} + +//----- (004BCAF0) -------------------------------------------------------- +wchar_t **__thiscall std::wstring::operator=(wchar_t **this, int a2) +{ + wchar_t *S1; // eax + const wchar_t *S2; // edx + wchar_t *v5; // ecx + wchar_t *v6; // ebp + wchar_t *v8; // [esp+1Ch] [ebp-20h] + + S1 = *this; + S2 = *(const wchar_t **)a2; + v5 = *(wchar_t **)(a2 + 4); + if ( a2 + 8 != *(_DWORD *)a2 ) + { + v8 = *(wchar_t **)(a2 + 8); + if ( S1 == (wchar_t *)(this + 2) ) + { + *this = (wchar_t *)S2; + this[1] = v5; + this[2] = v8; + } + else + { + *this = (wchar_t *)S2; + v6 = this[2]; + this[1] = v5; + this[2] = v8; + if ( S1 ) + { + *(_DWORD *)a2 = S1; + *(_DWORD *)(a2 + 8) = v6; + goto LABEL_5; + } + } + *(_DWORD *)a2 = a2 + 8; + S1 = (wchar_t *)(a2 + 8); + goto LABEL_5; + } + if ( v5 ) + { + if ( v5 == (wchar_t *)1 ) + { + *S1 = *S2; + } + else + { + wmemcpy(S1, S2, *(_DWORD *)(a2 + 4)); + S1 = *this; + v5 = *(wchar_t **)(a2 + 4); + S2 = *(const wchar_t **)a2; + } + } + this[1] = v5; + S1[(_DWORD)v5] = 0; + S1 = (wchar_t *)S2; +LABEL_5: + *(_DWORD *)(a2 + 4) = 0; + *S1 = 0; + return this; +} + +//----- (004BCBA0) -------------------------------------------------------- +int __thiscall std::wstring::operator=(size_t *this, wchar_t *String) +{ + size_t v3; // eax + + v3 = wcslen(String); + return std::wstring::_M_replace((int)this, 0, this[1], String, v3); +} + +//----- (004BCBE0) -------------------------------------------------------- +void *__thiscall std::wstring::operator=(void *this, int a2) +{ + std::wstring::_M_assign((int)this, a2); + return this; +} + +//----- (004BCC00) -------------------------------------------------------- +size_t *__thiscall std::wstring::operator=(size_t *this, wchar_t *a2, size_t a3) +{ + std::wstring::_M_replace((int)this, 0, this[1], a2, a3); + return this; +} + +//----- (004BCC40) -------------------------------------------------------- +int *__thiscall std::wstring::operator=(int *this, wchar_t a2) +{ + std::wstring::_M_replace_aux((int)this, 0, this[1], 1u, a2); + return this; +} + +//----- (004BCC80) -------------------------------------------------------- +int __thiscall std::wstring::operator[](_DWORD *this, int a2) +{ + return *this + 2 * a2; +} + +//----- (004BCC90) -------------------------------------------------------- +int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *String) +{ + unsigned int v3; // eax + + v3 = wcslen(String); + if ( v3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, String, v3); +} + +//----- (004BCCE0) -------------------------------------------------------- +int __thiscall std::wstring::operator+=(void *this, int a2) +{ + return std::wstring::_M_append((int)this, *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); +} + +//----- (004BCD10) -------------------------------------------------------- +int __thiscall std::wstring::operator+=(_DWORD *this, wchar_t *a2, size_t a3) +{ + if ( a3 > 0x1FFFFFFF - this[1] ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + return std::wstring::_M_append((int)this, a2, a3); +} + +//----- (004BCD40) -------------------------------------------------------- +_DWORD *__thiscall std::wstring::operator+=(char *this, __int16 a2) +{ + _DWORD *result; // eax + char *v3; // ecx + size_t v4; // ebx + char *v5; // edx + unsigned int v6; // esi + unsigned int v7; // ecx + _DWORD *v8; // [esp+1Ch] [ebp-10h] + + result = this; + v3 = this + 8; + v4 = *((_DWORD *)v3 - 1); + v5 = (char *)*((_DWORD *)v3 - 2); + v6 = v4 + 1; + if ( v5 == v3 ) + v7 = 7; + else + v7 = result[2]; + if ( v6 > v7 ) + { + v8 = result; + std::wstring::_M_mutate((const wchar_t **)result, v4, 0, 0, 1u); + result = v8; + v5 = (char *)*v8; + } + *(_WORD *)&v5[2 * v4] = a2; + result[1] = v6; + *(_WORD *)&v5[2 * v4 + 2] = 0; + return result; +} + +//----- (004BCDC0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_4F5C58; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F58E0; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 4F58E0: using guessed type int (*off_4F58E0)(); +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004BCE80) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_4F5C58; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F58E0; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 4F58E0: using guessed type int (*off_4F58E0)(); +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004BCF50) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_4F5C58; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F58E0; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 4F58E0: using guessed type int (*off_4F58E0)(); +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004BD010) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_4F5C58; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F58E0; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 4F58E0: using guessed type int (*off_4F58E0)(); +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004BD0E0) -------------------------------------------------------- +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5C58; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4BD0F9: variable 'v2' is possibly undefined +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004BD110) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C58; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4BD119: variable 'v1' is possibly undefined +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004BD140) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C58; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4BD149: variable 'v1' is possibly undefined +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004BD170) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_4F5C74; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F58FC; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 4F58FC: using guessed type int (*off_4F58FC)(); +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004BD230) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_4F5C74; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F58FC; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 4F58FC: using guessed type int (*off_4F58FC)(); +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004BD300) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int **a2, int a3) +{ + int c_locale; // eax + bool v5; // zf + + *this = &off_4F5C74; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F58FC; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + LOBYTE(c_locale) = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return c_locale; +} +// 4F58FC: using guessed type int (*off_4F58FC)(); +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004BD3C0) -------------------------------------------------------- +char __thiscall std::collate_byname::collate_byname(_DWORD *this, int *a2, int a3) +{ + int v4; // ebp + int c_locale; // eax + bool v6; // zf + + v4 = *a2; + *this = &off_4F5C74; + this[1] = a3 != 0; + c_locale = std::locale::facet::_S_get_c_locale(); + this[2] = c_locale; + *this = &off_4F58FC; + if ( *(_BYTE *)v4 != 67 || *(_BYTE *)(v4 + 1) ) + { + v6 = strcmp((const char *)v4, "POSIX") == 0; + LOBYTE(c_locale) = !v6; + if ( !v6 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + LOBYTE(c_locale) = (unsigned __int8)std::locale::facet::_S_create_c_locale( + (std::locale::facet *)(this + 2), + (int **)v4); + } + } + return c_locale; +} +// 4F58FC: using guessed type int (*off_4F58FC)(); +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004BD490) -------------------------------------------------------- +void __fastcall std::collate_byname::~collate_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5C74; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4BD4A9: variable 'v2' is possibly undefined +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004BD4C0) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C74; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4BD4C9: variable 'v1' is possibly undefined +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004BD4F0) -------------------------------------------------------- +void __cdecl std::collate_byname::~collate_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C74; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4BD4F9: variable 'v1' is possibly undefined +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004BD520) -------------------------------------------------------- +unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) +{ + int v3; // ebx + unsigned int result; // eax + int v5; // esi + unsigned int v6; // edi + + this[2] = -1; + this[3] = -1; + v3 = a2[9]; + *this = a3; + result = a2[1]; + this[4] = -1; + v5 = a2[4]; + this[5] = -1; + this[6] = -1; + this[7] = -1; + this[8] = -1; + this[9] = -1; + this[10] = -1; + this[11] = -1; + this[12] = -1; + this[13] = -1; + if ( !result ) + { + if ( !v5 ) + return result; + goto LABEL_3; + } + *((_QWORD *)this + 1) = (int)(result - v3); + *((_QWORD *)this + 2) = a2[2] - v3; + result = a2[3]; + *((_QWORD *)this + 3) = (int)(result - v3); + if ( v5 ) + { +LABEL_3: + *((_QWORD *)this + 4) = v5 - v3; + v6 = a2[5]; + *((_QWORD *)this + 5) = (int)(v6 - v5); + *((_QWORD *)this + 6) = a2[6] - v3; + if ( result < v6 ) + result = v6; + } + if ( result ) + { + result -= v3; + a2[10] = result; + } + return result; +} + +//----- (004BD610) -------------------------------------------------------- +unsigned int __thiscall std::stringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) +{ + int v3; // ebx + unsigned int result; // eax + int v5; // esi + unsigned int v6; // edi + + this[2] = -1; + this[3] = -1; + v3 = a2[9]; + *this = a3; + result = a2[1]; + this[4] = -1; + v5 = a2[4]; + this[5] = -1; + this[6] = -1; + this[7] = -1; + this[8] = -1; + this[9] = -1; + this[10] = -1; + this[11] = -1; + this[12] = -1; + this[13] = -1; + if ( !result ) + { + if ( !v5 ) + return result; + goto LABEL_3; + } + *((_QWORD *)this + 1) = (int)(result - v3); + *((_QWORD *)this + 2) = a2[2] - v3; + result = a2[3]; + *((_QWORD *)this + 3) = (int)(result - v3); + if ( v5 ) + { +LABEL_3: + *((_QWORD *)this + 4) = v5 - v3; + v6 = a2[5]; + *((_QWORD *)this + 5) = (int)(v6 - v5); + *((_QWORD *)this + 6) = a2[6] - v3; + if ( result < v6 ) + result = v6; + } + if ( result ) + { + result -= v3; + a2[10] = result; + } + return result; +} + +//----- (004BD700) -------------------------------------------------------- +int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) +{ + int v1; // eax + _DWORD *v2; // esi + int v3; // ebx + int v4; // edx + int v5; // edi + int v6; // edi + int result; // eax + __int64 v8; // rax + int v9; // ebp + int v10; // ebx + int v11; // ecx + + v1 = *(_DWORD *)(a1 + 8); + v2 = *(_DWORD **)a1; + v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); + if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) + { + v4 = *(_DWORD *)(a1 + 24); + v5 = *(_DWORD *)(a1 + 16); + v2[1] = v3 + v1; + v2[2] = v3 + v5; + v2[3] = v3 + v4; + } + v6 = *(_DWORD *)(a1 + 32); + result = v6 & *(_DWORD *)(a1 + 36); + if ( result != -1 ) + { + v8 = *(_QWORD *)(a1 + 40); + v9 = v3 + *(_DWORD *)(a1 + 48); + v10 = v6 + v3; + v2[4] = v10; + v2[6] = v9; + if ( v8 > 0x7FFFFFFF ) + { + v11 = v10 + 0x7FFFFFFF; + do + { + v10 = v11; + v8 -= 0x7FFFFFFFLL; + v11 += 0x7FFFFFFF; + } + while ( v8 > 0x7FFFFFFF ); + } + result = v10 + v8; + v2[5] = result; + } + return result; +} + +//----- (004BD790) -------------------------------------------------------- +int __fastcall std::stringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) +{ + int v1; // eax + _DWORD *v2; // esi + int v3; // ebx + int v4; // edx + int v5; // edi + int v6; // edi + int result; // eax + __int64 v8; // rax + int v9; // ebp + int v10; // ebx + int v11; // ecx + + v1 = *(_DWORD *)(a1 + 8); + v2 = *(_DWORD **)a1; + v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); + if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) + { + v4 = *(_DWORD *)(a1 + 24); + v5 = *(_DWORD *)(a1 + 16); + v2[1] = v3 + v1; + v2[2] = v3 + v5; + v2[3] = v3 + v4; + } + v6 = *(_DWORD *)(a1 + 32); + result = v6 & *(_DWORD *)(a1 + 36); + if ( result != -1 ) + { + v8 = *(_QWORD *)(a1 + 40); + v9 = v3 + *(_DWORD *)(a1 + 48); + v10 = v6 + v3; + v2[4] = v10; + v2[6] = v9; + if ( v8 > 0x7FFFFFFF ) + { + v11 = v10 + 0x7FFFFFFF; + do + { + v10 = v11; + v8 -= 0x7FFFFFFFLL; + v11 += 0x7FFFFFFF; + } + while ( v8 > 0x7FFFFFFF ); + } + result = v10 + v8; + v2[5] = result; + } + return result; +} + +//----- (004BD820) -------------------------------------------------------- +unsigned int __fastcall std::stringbuf::_M_update_egptr(int a1) +{ + unsigned int result; // eax + + result = *(_DWORD *)(a1 + 20); + if ( result && result > *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + { + *(_DWORD *)(a1 + 4) = result; + *(_DWORD *)(a1 + 8) = result; + } + *(_DWORD *)(a1 + 12) = result; + } + return result; +} + +//----- (004BD850) -------------------------------------------------------- +int __thiscall std::stringbuf::_M_stringbuf_init(int this, int a2) +{ + unsigned int v2; // edx + + v2 = 0; + *(_DWORD *)(this + 32) = a2; + if ( (a2 & 3) != 0 ) + v2 = *(_DWORD *)(this + 40); + return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v2); +} + +//----- (004BD890) -------------------------------------------------------- +int __thiscall std::stringbuf::str(int this, int a2) +{ + unsigned int v3; // eax + + std::string::_M_replace((unsigned int *)(this + 36), 0, *(_DWORD *)(this + 40), *(char **)a2, *(_DWORD *)(a2 + 4)); + v3 = 0; + if ( (*(_BYTE *)(this + 32) & 3) != 0 ) + v3 = *(_DWORD *)(this + 40); + return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); +} + +//----- (004BD8F0) -------------------------------------------------------- +int __thiscall std::stringbuf::swap(_DWORD *this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // ecx + unsigned int v6; // edi + unsigned int v7; // eax + int v8; // edi + int v9; // edx + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // edx + int v15; // eax + int v16; // edx + int v17; // eax + int v18; // edx + int v19; // eax + int v20; // eax + _DWORD *v21; // edx + int v22; // esi + int v23; // eax + int v24; // ebx + int v25; // edi + __int64 v26; // rcx + int v27; // eax + int v28; // esi + _DWORD *v29; // edx + int v30; // esi + int v31; // eax + int v32; // ebx + int result; // eax + int v34; // edi + __int64 v35; // rcx + int v36; // eax + int v37; // esi + const std::locale *v38; // [esp+4h] [ebp-B4h] + const std::locale *v39; // [esp+4h] [ebp-B4h] + const std::locale *v40; // [esp+4h] [ebp-B4h] + const std::locale *v41; // [esp+4h] [ebp-B4h] + unsigned int v42; // [esp+10h] [ebp-A8h] + int v43; // [esp+14h] [ebp-A4h] + unsigned int v44; // [esp+18h] [ebp-A0h] + unsigned int v45; // [esp+1Ch] [ebp-9Ch] + _DWORD *v46; // [esp+24h] [ebp-94h] BYREF + _DWORD *v47; // [esp+28h] [ebp-90h] BYREF + _DWORD *v48; // [esp+2Ch] [ebp-8Ch] BYREF + _DWORD *v49; // [esp+30h] [ebp-88h] + __int64 v50; // [esp+38h] [ebp-80h] + int v51; // [esp+40h] [ebp-78h] + int v52; // [esp+44h] [ebp-74h] + __int64 v53; // [esp+48h] [ebp-70h] + __int64 v54; // [esp+50h] [ebp-68h] + __int64 v55; // [esp+58h] [ebp-60h] + int v56; // [esp+60h] [ebp-58h] + int v57; // [esp+64h] [ebp-54h] + _DWORD *v58; // [esp+68h] [ebp-50h] + __int64 v59; // [esp+70h] [ebp-48h] + int v60; // [esp+78h] [ebp-40h] + int v61; // [esp+7Ch] [ebp-3Ch] + __int64 v62; // [esp+80h] [ebp-38h] + __int64 v63; // [esp+88h] [ebp-30h] + __int64 v64; // [esp+90h] [ebp-28h] + int v65; // [esp+98h] [ebp-20h] + int v66; // [esp+9Ch] [ebp-1Ch] + + v3 = this[1]; + v50 = -1LL; + v4 = this[9]; + v49 = (_DWORD *)a2; + v5 = this[4]; + v51 = -1; + v52 = -1; + v53 = -1LL; + v54 = -1LL; + v55 = -1LL; + v56 = -1; + v57 = -1; + v43 = v3; + if ( !v3 ) + { + v45 = 0; + if ( !v5 ) + goto LABEL_7; + goto LABEL_3; + } + v50 = v3 - v4; + v51 = this[2] - v4; + v52 = v51 >> 31; + v45 = this[3]; + v53 = (int)(v45 - v4); + if ( v5 ) + { +LABEL_3: + v54 = v5 - v4; + v6 = this[5]; + v55 = (int)(v6 - v5); + v56 = this[6] - v4; + v57 = v56 >> 31; + if ( v45 < v6 ) + v45 = v6; + } + if ( v45 ) + this[10] = v45 - v4; +LABEL_7: + v7 = *(_DWORD *)(a2 + 4); + v8 = *(_DWORD *)(a2 + 16); + v58 = this; + v59 = -1LL; + v9 = *(_DWORD *)(a2 + 36); + v60 = -1; + v61 = -1; + v62 = -1LL; + v63 = -1LL; + v64 = -1LL; + v65 = -1; + v66 = -1; + v44 = v7; + if ( !v7 ) + { + if ( !v8 ) + goto LABEL_13; + goto LABEL_9; + } + v59 = (int)(v7 - v9); + v60 = *(_DWORD *)(a2 + 8) - v9; + v61 = v60 >> 31; + v7 = *(_DWORD *)(a2 + 12); + v62 = (int)(v7 - v9); + if ( v8 ) + { +LABEL_9: + v63 = v8 - v9; + v42 = *(_DWORD *)(a2 + 20); + v64 = (int)(v42 - v8); + v65 = *(_DWORD *)(a2 + 24) - v9; + v66 = v65 >> 31; + if ( v7 < v42 ) + v7 = v42; + } + if ( v7 ) + *(_DWORD *)(a2 + 40) = v7 - v9; +LABEL_13: + this[1] = v44; + v10 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v43; + v11 = this[2]; + this[2] = v10; + v12 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v11; + v13 = this[3]; + this[3] = v12; + v14 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v13; + v15 = this[4]; + this[4] = v14; + v16 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v15; + v17 = this[5]; + this[5] = v16; + v18 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v17; + v19 = this[6]; + this[6] = v18; + *(_DWORD *)(a2 + 24) = v19; + std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)this + 7, v38); + std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v48); + std::locale::~locale(&v48); + std::locale::locale((volatile signed __int32 **)&v46, (volatile signed __int32 **)(a2 + 28), v39); + std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)this + 7, v40); + (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v46); + std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v46); + std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)(a2 + 28), v41); + (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v47); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v47); + std::locale::~locale(&v48); + std::locale::~locale(&v47); + std::locale::~locale(&v46); + v20 = this[8]; + this[8] = *(_DWORD *)(a2 + 32); + *(_DWORD *)(a2 + 32) = v20; + std::string::swap(this + 9, (_DWORD *)(a2 + 36)); + v21 = v58; + v22 = v58[9]; + if ( ((unsigned int)v59 & HIDWORD(v59)) != -1 ) + { + v23 = v62; + v24 = v60; + v58[1] = v22 + v59; + v21[2] = v22 + v24; + v21[3] = v22 + v23; + } + if ( ((unsigned int)v63 & HIDWORD(v63)) != -1 ) + { + v25 = v65; + v26 = v64; + v27 = v22 + v63; + v21[4] = v22 + v63; + v21[6] = v22 + v25; + if ( v26 > 0x7FFFFFFF ) + { + v28 = v27 + 0x7FFFFFFF; + do + { + v27 = v28; + v26 -= 0x7FFFFFFFLL; + v28 += 0x7FFFFFFF; + } + while ( v26 > 0x7FFFFFFF ); + } + v21[5] = v26 + v27; + } + v29 = v49; + v30 = v49[9]; + if ( ((unsigned int)v50 & HIDWORD(v50)) != -1 ) + { + v31 = v53; + v32 = v51; + v49[1] = v30 + v50; + v29[2] = v30 + v32; + v29[3] = v30 + v31; + } + result = v54; + if ( ((unsigned int)v54 & HIDWORD(v54)) != -1 ) + { + v34 = v56; + v35 = v55; + v36 = v30 + v54; + v29[4] = v30 + v54; + v29[6] = v30 + v34; + if ( v35 > 0x7FFFFFFF ) + { + v37 = v36 + 0x7FFFFFFF; + do + { + v36 = v37; + v35 -= 0x7FFFFFFFLL; + v37 += 0x7FFFFFFF; + } + while ( v35 > 0x7FFFFFFF ); + } + result = v35 + v36; + v29[5] = result; + } + return result; +} +// 4BDB52: variable 'v38' is possibly undefined +// 4BDB8F: variable 'v39' is possibly undefined +// 4BDBA6: variable 'v40' is possibly undefined +// 4BDBE0: variable 'v41' is possibly undefined + +//----- (004BDE00) -------------------------------------------------------- +_DWORD *__thiscall std::stringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3) +{ + _BYTE *v4; // eax + int v5; // ecx + + if ( !a2 || a3 < 0 ) + return this; + v4 = (_BYTE *)this[9]; + this[10] = 0; + *v4 = 0; + std::stringbuf::_M_sync(this, a2, a3, 0); + return (_DWORD *)v5; +} +// 4BDE48: variable 'v5' is possibly undefined + +//----- (004BDE50) -------------------------------------------------------- +int __thiscall std::stringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) +{ + _DWORD *v4; // edi + int v5; // esi + int result; // eax + int v7; // ebx + int v8; // ebp + int v9; // ebp + int v10; // edx + __int64 v11; // rax + _DWORD *v12; // [esp+0h] [ebp-1Ch] + int v13; // [esp+4h] [ebp-18h] + + v4 = (_DWORD *)this[9]; + v5 = this[8] & 0x10; + v12 = a2; + result = (int)a2 + this[10]; + v7 = this[8] & 8; + v13 = result; + if ( v4 == this + 11 ) + v8 = 15; + else + v8 = this[11]; + v9 = (int)a2 + v8; + if ( a2 != v4 ) + { + v10 = a3; + a3 = 0; + v13 = v10 + result; + result = v13; + v9 = v13; + } + if ( v7 ) + { + this[1] = a2; + this[2] = (char *)a2 + a3; + result = v13; + this[3] = v13; + } + if ( v5 ) + { + this[6] = v9; + this[4] = a2; + if ( a4 > 0x7FFFFFFFuLL ) + { + v11 = a4 - 0x7FFFFFFFLL; + if ( (a4 + 1) | HIDWORD(v11) ) + { + v12 = (_DWORD *)((char *)a2 + 0x7FFFFFFF); + } + else + { + v12 = (_DWORD *)((char *)a2 - 2); + LODWORD(v11) = 1; + } + a4 = v11; + } + result = (int)v12 + a4; + this[5] = (char *)v12 + a4; + if ( !v7 ) + { + result = v13; + this[1] = v13; + this[2] = v13; + this[3] = v13; + } + } + return result; +} + +//----- (004BDF50) -------------------------------------------------------- +unsigned int *__thiscall std::stringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5) +{ + unsigned int *result; // eax + bool v6; // cl + unsigned int v7; // ebx + int v8; // ebp + unsigned int v9; // esi + _DWORD *v10; // edi + int v11; // edi + unsigned int v12; // esi + unsigned int v13; // edx + int v14; // ebx + __int64 v15; // [esp+0h] [ebp-34h] + unsigned __int8 v16; // [esp+8h] [ebp-2Ch] + char v17; // [esp+16h] [ebp-1Eh] + char v18; // [esp+16h] [ebp-1Eh] + unsigned __int8 v19; // [esp+17h] [ebp-1Dh] + int v20; // [esp+18h] [ebp-1Ch] + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + v15 = a3; + v20 = a2[8] & 8; + v6 = (a5 & v20) != 0; + v7 = (a5 & a2[8]) >> 4; + v16 = (a4 != 1) & v7 & v6; + v17 = ((a5 >> 3) ^ 1) & 1 & v7; + v19 = v6 & ((a5 >> 4) ^ 1); + if ( v19 ) + { + v8 = a2[1]; + if ( !v8 && a3 ) + return result; + v18 = v16 | v17; + } + else + { + v8 = a2[4]; + if ( !v8 && a3 ) + return result; + v18 = v16 | v17; + if ( !v18 ) + return result; + } + v9 = a2[5]; + if ( v9 ) + { + v10 = a2; + if ( v9 > a2[3] ) + { + if ( !v20 ) + { + v10 = a2; + a2[1] = v9; + a2[2] = v9; + } + v10[3] = v9; + } + } + if ( a4 == 1 ) + { + v11 = (unsigned __int64)(a3 + (int)(v9 - v8)) >> 32; + v12 = a3 + v9 - v8; + v15 = a2[2] - v8 + a3; + } + else + { + v11 = HIDWORD(a3); + v12 = a3; + if ( a4 == 2 ) + { + v15 = a2[3] - v8 + a3; + v11 = HIDWORD(v15); + v12 = v15; + } + } + if ( v16 | v19 && v15 >= 0 && a2[3] - v8 >= v15 ) + { + result[2] = 0; + v14 = a2[1] + v15; + *result = v15; + a2[2] = v14; + result[1] = HIDWORD(v15); + } + if ( v11 >= 0 && v18 && a2[3] - v8 >= __SPAIR64__(v11, v12) ) + { + *result = v12; + result[1] = v11; + v13 = a2[4] + v12; + result[2] = 0; + a2[5] = v13; + } + return result; +} + +//----- (004BE190) -------------------------------------------------------- +_DWORD *__thiscall std::stringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + int v7; // ecx + int v8; // ebx + unsigned int v9; // ebp + int v10; // [esp+0h] [ebp-2Ch] + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + v7 = a2[8] & 8; + v10 = a6 & a2[8]; + if ( (v7 & a6) != 0 ) + v8 = a2[1]; + else + v8 = a2[4]; + if ( (!a3 || v8) && (v10 & 0x18) != 0 ) + { + v9 = a2[5]; + if ( v9 && a2[3] < v9 ) + { + if ( !v7 ) + { + a2[1] = v9; + a2[2] = v9; + } + a2[3] = v9; + } + if ( a3 >= 0 && a2[3] - v8 >= a3 ) + { + if ( (v7 & a6) != 0 ) + a2[2] = a3 + a2[1]; + if ( (v10 & 0x10) != 0 ) + a2[5] = a2[4] + a3; + *(_QWORD *)result = a3; + result[2] = a4; + } + } + return result; +} + +//----- (004BE270) -------------------------------------------------------- +int __thiscall std::stringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) +{ + __int64 v4; // rax + int v5; // ebx + int result; // eax + + v4 = a4; + this[6] = a3; + v5 = a2; + for ( this[4] = a2; v4 > 0x7FFFFFFF; v4 -= 0x7FFFFFFFLL ) + v5 += 0x7FFFFFFF; + result = v5 + v4; + this[5] = result; + return result; +} + +//----- (004BE2D0) -------------------------------------------------------- +int __thiscall std::stringbuf::overflow(int this, int a2) +{ + int v2; // esi + int v4; // ecx + unsigned int v5; // edi + _BYTE *v6; // edx + int result; // eax + _BYTE *v8; // edx + int v9; // edi + int v10; // eax + int v11; // esi + int v12; // eax + unsigned int v13; // eax + int v14; // eax + size_t v15; // esi + _BYTE *v16; // eax + unsigned int v17; // edx + int v18; // [esp+18h] [ebp-40h] + unsigned int v19; // [esp+1Ch] [ebp-3Ch] + unsigned int v20; // [esp+1Ch] [ebp-3Ch] + void *v21; // [esp+28h] [ebp-30h] BYREF + size_t v22; // [esp+2Ch] [ebp-2Ch] + int v23[10]; // [esp+30h] [ebp-28h] BYREF + + v2 = *(_DWORD *)(this + 32); + if ( (v2 & 0x10) == 0 ) + return -1; + if ( a2 == -1 ) + return 0; + v4 = *(_DWORD *)(this + 36); + if ( v4 == this + 44 ) + v19 = 15; + else + v19 = *(_DWORD *)(this + 44); + v5 = *(_DWORD *)(this + 24); + v18 = *(_DWORD *)(this + 16); + v6 = *(_BYTE **)(this + 20); + if ( v5 - v18 >= v19 ) + { + if ( (unsigned int)v6 < v5 ) + { + *v6 = a2; +LABEL_8: + ++*(_DWORD *)(this + 20); + return a2; + } + if ( v19 != 0x3FFFFFFF ) + { + v22 = 0; + v21 = v23; + LOBYTE(v23[0]) = 0; + v13 = 2 * v19; + if ( 2 * v19 <= 0x3FFFFFFF ) + { + if ( v13 < 0x200 ) + v13 = 512; + } + else + { + v13 = 0x3FFFFFFF; + } + std::string::reserve(&v21, v13); + v14 = *(_DWORD *)(this + 16); + v15 = v22; + if ( v14 ) + { + std::string::_M_replace((unsigned int *)&v21, 0, v22, *(char **)(this + 16), *(_DWORD *)(this + 24) - v14); + v15 = v22; + } + v20 = v15 + 1; + v16 = v21; + if ( v21 == v23 ) + v17 = 15; + else + v17 = v23[0]; + if ( v20 > v17 ) + { + std::string::_M_mutate((int)&v21, v15, 0, 0, 1u); + v16 = v21; + } + v16[v15] = a2; + v22 = v15 + 1; + *((_BYTE *)v21 + v20) = 0; + std::string::swap((_DWORD *)(this + 36), &v21); + std::stringbuf::_M_sync( + (_DWORD *)this, + *(_DWORD **)(this + 36), + *(_DWORD *)(this + 8) - *(_DWORD *)(this + 4), + *(_DWORD *)(this + 20) - *(_DWORD *)(this + 16)); + if ( v21 != v23 ) + operator delete(v21); + goto LABEL_8; + } + return -1; + } + *(_DWORD *)(this + 16) = v4; + v8 = &v6[v4 - v18]; + *(_DWORD *)(this + 20) = v8; + *(_DWORD *)(this + 24) = v4 + v19; + if ( (v2 & 8) != 0 ) + { + v9 = *(_DWORD *)(this + 4); + v10 = *(_DWORD *)(this + 12); + *(_DWORD *)(this + 4) = v4; + v11 = v4 + v10 - v9 + 1; + v12 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 12) = v11; + *(_DWORD *)(this + 8) = v4 + v12 - v9; + } + *v8 = a2; + result = a2; + ++*(_DWORD *)(this + 20); + return result; +} + +//----- (004BE530) -------------------------------------------------------- +int __thiscall std::stringbuf::pbackfail(int this, int a2) +{ + unsigned int v2; // edx + int result; // eax + char v4; // bl + + v2 = *(_DWORD *)(this + 8); + result = a2; + if ( v2 <= *(_DWORD *)(this + 4) ) + return -1; + if ( a2 == -1 ) + { + result = 0; + *(_DWORD *)(this + 8) = v2 - 1; + return result; + } + v4 = *(_BYTE *)(v2 - 1); + if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && v4 != (_BYTE)a2 ) + return -1; + *(_DWORD *)(this + 8) = v2 - 1; + if ( v4 != (_BYTE)a2 ) + *(_BYTE *)(v2 - 1) = a2; + return result; +} + +//----- (004BE580) -------------------------------------------------------- +int __fastcall std::stringbuf::showmanyc(int a1) +{ + unsigned int v1; // edx + unsigned int v2; // eax + + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + return -1; + v1 = *(_DWORD *)(a1 + 20); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + if ( v1 > v2 ) + { + *(_DWORD *)(a1 + 12) = v1; + v2 = v1; + } + } + return v2 - *(_DWORD *)(a1 + 8); +} + +//----- (004BE5B0) -------------------------------------------------------- +int __fastcall std::stringbuf::underflow(int a1) +{ + unsigned int v1; // eax + unsigned int v2; // edx + unsigned __int8 *v3; // eax + + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + return -1; + v1 = *(_DWORD *)(a1 + 20); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + if ( v1 > v2 ) + { + *(_DWORD *)(a1 + 12) = v1; + v2 = v1; + } + } + v3 = *(unsigned __int8 **)(a1 + 8); + if ( (unsigned int)v3 < v2 ) + return *v3; + else + return -1; +} + +//----- (004BE5F0) -------------------------------------------------------- +int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + int v4; // ecx + int v5; // eax + _DWORD *v6; // edx + int v7; // edx + int v8; // eax + int v9; // ecx + int v10; // eax + const std::locale *v12; // [esp+4h] [ebp-74h] + int v13; // [esp+1Ch] [ebp-5Ch] + __int64 v15; // [esp+30h] [ebp-48h] + int v16; // [esp+38h] [ebp-40h] + int v17; // [esp+40h] [ebp-38h] + __int64 v18; // [esp+48h] [ebp-30h] + int v19; // [esp+50h] [ebp-28h] + int v20; // [esp+58h] [ebp-20h] + + v15 = -1LL; + v16 = -1; + v13 = a2[9]; + v3 = a2[1]; + v17 = -1; + v18 = -1LL; + v19 = -1; + v20 = -1; + if ( !v3 ) + { + v4 = a2[4]; + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v15 = (int)(v3 - v13); + v16 = a2[2] - v13; + v3 = a2[3]; + v17 = v3 - v13; + v4 = a2[4]; + if ( v4 ) + { +LABEL_3: + v18 = v4 - v13; + v19 = a2[5] - v4; + v20 = a2[6] - v13; + if ( v3 < a2[5] ) + v3 = a2[5]; + } + if ( v3 ) + a2[10] = v3 - v13; +LABEL_7: + std::streambuf::basic_streambuf(this, (int)a2, v12); + v5 = a2[8]; + *this = &off_4F5918; + this[9] = this + 11; + v6 = (_DWORD *)a2[9]; + this[8] = v5; + if ( v6 == a2 + 11 ) + { + this[11] = a2[11]; + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + } + else + { + this[9] = v6; + this[11] = a2[11]; + } + v7 = a2[10]; + a2[9] = a2 + 11; + a2[10] = 0; + this[10] = v7; + *((_BYTE *)a2 + 44) = 0; + v8 = this[9]; + if ( ((unsigned int)v15 & HIDWORD(v15)) != -1 ) + { + this[1] = v8 + v15; + this[2] = v8 + v16; + this[3] = v8 + v17; + } + if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) + { + v9 = v8 + v20; + v10 = v18 + v8; + this[6] = v9; + this[4] = v10; + this[5] = v19 + v10; + } + return std::stringbuf::_M_sync(a2, (_DWORD *)a2[9], 0, 0); +} +// 4BE77E: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4BE6DF: variable 'v12' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); + +//----- (004BE830) -------------------------------------------------------- +_DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3) +{ + int v4; // eax + _DWORD *v5; // edx + _DWORD *result; // eax + int v7; // edx + const std::locale *v8; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf(this, (int)a2, v8); + v4 = a2[8]; + *this = &off_4F5918; + this[9] = this + 11; + v5 = (_DWORD *)a2[9]; + this[8] = v4; + result = a2 + 11; + if ( v5 == a2 + 11 ) + { + this[11] = a2[11]; + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + } + else + { + this[9] = v5; + this[11] = a2[11]; + } + v7 = a2[10]; + a2[9] = result; + a2[10] = 0; + this[10] = v7; + *((_BYTE *)a2 + 44) = 0; + return result; +} +// 4BE83E: variable 'v8' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); + +//----- (004BE8B0) -------------------------------------------------------- +int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3) +{ + int v4; // eax + unsigned __int8 *v5; // edx + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-30h] + + *(_DWORD *)this = &off_4F6414; + *(_DWORD *)(this + 4) = 0; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 24) = 0; + std::locale::locale((_DWORD *)(this + 28)); + *(_DWORD *)this = &off_4F5918; + v4 = *(_DWORD *)(a2 + 4); + v5 = *(unsigned __int8 **)a2; + *(_DWORD *)(this + 32) = 0; + LOBYTE(v8) = 0; + *(_DWORD *)(this + 36) = this + 44; + std::string::_M_construct((void **)(this + 36), v5, (size_t)&v5[v4], v8); + *(_DWORD *)(this + 32) = a3; + v6 = 0; + if ( (a3 & 3) != 0 ) + v6 = *(_DWORD *)(this + 40); + return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v6); +} +// 4BE92D: variable 'v8' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004BE980) -------------------------------------------------------- +char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + char *result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_4F6414; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_4F5918; + this[10] = 0; + this[8] = a2; + result = (char *)(this + 11); + this[9] = this + 11; + *((_BYTE *)this + 44) = 0; + return result; +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004BE9F0) -------------------------------------------------------- +int __fastcall std::stringbuf::basic_stringbuf(int a1) +{ + _DWORD *v2; // ecx + int result; // eax + + v2 = (_DWORD *)(a1 + 28); + *(v2 - 7) = &off_4F6414; + *(v2 - 6) = 0; + *(v2 - 5) = 0; + *(v2 - 4) = 0; + *(v2 - 3) = 0; + *(v2 - 2) = 0; + *(v2 - 1) = 0; + std::locale::locale(v2); + result = a1 + 44; + *(_BYTE *)(a1 + 44) = 0; + *(_DWORD *)a1 = &off_4F5918; + *(_DWORD *)(a1 + 32) = 24; + *(_DWORD *)(a1 + 36) = a1 + 44; + *(_DWORD *)(a1 + 40) = 0; + return result; +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004BEA60) -------------------------------------------------------- +int __thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2) +{ + unsigned int v3; // eax + int v4; // ecx + int v5; // eax + _DWORD *v6; // edx + int v7; // edx + int v8; // eax + int v9; // ecx + int v10; // eax + const std::locale *v12; // [esp+4h] [ebp-74h] + int v13; // [esp+1Ch] [ebp-5Ch] + __int64 v15; // [esp+30h] [ebp-48h] + int v16; // [esp+38h] [ebp-40h] + int v17; // [esp+40h] [ebp-38h] + __int64 v18; // [esp+48h] [ebp-30h] + int v19; // [esp+50h] [ebp-28h] + int v20; // [esp+58h] [ebp-20h] + + v15 = -1LL; + v16 = -1; + v13 = a2[9]; + v3 = a2[1]; + v17 = -1; + v18 = -1LL; + v19 = -1; + v20 = -1; + if ( !v3 ) + { + v4 = a2[4]; + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v15 = (int)(v3 - v13); + v16 = a2[2] - v13; + v3 = a2[3]; + v17 = v3 - v13; + v4 = a2[4]; + if ( v4 ) + { +LABEL_3: + v18 = v4 - v13; + v19 = a2[5] - v4; + v20 = a2[6] - v13; + if ( v3 < a2[5] ) + v3 = a2[5]; + } + if ( v3 ) + a2[10] = v3 - v13; +LABEL_7: + std::streambuf::basic_streambuf(this, (int)a2, v12); + v5 = a2[8]; + *this = &off_4F5918; + this[9] = this + 11; + v6 = (_DWORD *)a2[9]; + this[8] = v5; + if ( v6 == a2 + 11 ) + { + this[11] = a2[11]; + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + } + else + { + this[9] = v6; + this[11] = a2[11]; + } + v7 = a2[10]; + a2[9] = a2 + 11; + a2[10] = 0; + this[10] = v7; + *((_BYTE *)a2 + 44) = 0; + v8 = this[9]; + if ( ((unsigned int)v15 & HIDWORD(v15)) != -1 ) + { + this[1] = v8 + v15; + this[2] = v8 + v16; + this[3] = v8 + v17; + } + if ( ((unsigned int)v18 & HIDWORD(v18)) != -1 ) + { + v9 = v8 + v20; + v10 = v18 + v8; + this[6] = v9; + this[4] = v10; + this[5] = v19 + v10; + } + return std::stringbuf::_M_sync(a2, (_DWORD *)a2[9], 0, 0); +} +// 4BEBEE: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4BEB4F: variable 'v12' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); + +//----- (004BECA0) -------------------------------------------------------- +_DWORD *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, _DWORD *a2, int a3) +{ + int v4; // eax + _DWORD *v5; // edx + _DWORD *result; // eax + int v7; // edx + const std::locale *v8; // [esp+4h] [ebp-18h] + + std::streambuf::basic_streambuf(this, (int)a2, v8); + v4 = a2[8]; + *this = &off_4F5918; + this[9] = this + 11; + v5 = (_DWORD *)a2[9]; + this[8] = v4; + result = a2 + 11; + if ( v5 == a2 + 11 ) + { + this[11] = a2[11]; + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + } + else + { + this[9] = v5; + this[11] = a2[11]; + } + v7 = a2[10]; + a2[9] = result; + a2[10] = 0; + this[10] = v7; + *((_BYTE *)a2 + 44) = 0; + return result; +} +// 4BECAE: variable 'v8' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); + +//----- (004BED20) -------------------------------------------------------- +int __thiscall std::stringbuf::basic_stringbuf(int this, int a2, int a3) +{ + int v4; // eax + unsigned __int8 *v5; // edx + unsigned int v6; // eax + int v8; // [esp+8h] [ebp-30h] + + *(_DWORD *)this = &off_4F6414; + *(_DWORD *)(this + 4) = 0; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 24) = 0; + std::locale::locale((_DWORD *)(this + 28)); + *(_DWORD *)this = &off_4F5918; + v4 = *(_DWORD *)(a2 + 4); + v5 = *(unsigned __int8 **)a2; + *(_DWORD *)(this + 32) = 0; + LOBYTE(v8) = 0; + *(_DWORD *)(this + 36) = this + 44; + std::string::_M_construct((void **)(this + 36), v5, (size_t)&v5[v4], v8); + *(_DWORD *)(this + 32) = a3; + v6 = 0; + if ( (a3 & 3) != 0 ) + v6 = *(_DWORD *)(this + 40); + return std::stringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v6); +} +// 4BED9D: variable 'v8' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004BEDF0) -------------------------------------------------------- +char *__thiscall std::stringbuf::basic_stringbuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + char *result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_4F6414; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_4F5918; + this[10] = 0; + this[8] = a2; + result = (char *)(this + 11); + this[9] = this + 11; + *((_BYTE *)this + 44) = 0; + return result; +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004BEE60) -------------------------------------------------------- +int __fastcall std::stringbuf::basic_stringbuf(int a1) +{ + _DWORD *v2; // ecx + int result; // eax + + v2 = (_DWORD *)(a1 + 28); + *(v2 - 7) = &off_4F6414; + *(v2 - 6) = 0; + *(v2 - 5) = 0; + *(v2 - 4) = 0; + *(v2 - 3) = 0; + *(v2 - 2) = 0; + *(v2 - 1) = 0; + std::locale::locale(v2); + result = a1 + 44; + *(_BYTE *)(a1 + 44) = 0; + *(_DWORD *)a1 = &off_4F5918; + *(_DWORD *)(a1 + 32) = 24; + *(_DWORD *)(a1 + 36) = a1 + 44; + *(_DWORD *)(a1 + 40) = 0; + return result; +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004BEED0) -------------------------------------------------------- +void __fastcall std::stringbuf::~stringbuf(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[9]; + *a1 = &off_4F5918; + if ( v2 != a1 + 11 ) + operator delete(v2); + *a1 = &off_4F6414; + std::locale::~locale((_DWORD **)a1 + 7); + operator delete(a1); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004BEF10) -------------------------------------------------------- +void __fastcall std::stringbuf::~stringbuf(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 36); + *(_DWORD *)a1 = &off_4F5918; + if ( v2 != (void *)(a1 + 44) ) + operator delete(v2); + *(_DWORD *)a1 = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004BEF40) -------------------------------------------------------- +int __thiscall std::stringbuf::operator=(int this, int a2) +{ + unsigned int v2; // eax + int v3; // edx + int v4; // ecx + unsigned int v5; // edi + const void *v6; // edx + _BYTE *v7; // eax + int v8; // ebx + _DWORD *v9; // edx + int v10; // eax + int v11; // esi + int v12; // edi + int v13; // edi + unsigned int v14; // esi + int v15; // ebx + int v16; // eax + bool v17; // cc + int v18; // ecx + bool v19; // cf + int v21; // ecx + const std::locale *v22; // [esp+4h] [ebp-74h] + const std::locale *v23; // [esp+4h] [ebp-74h] + int v24; // [esp+18h] [ebp-60h] + _DWORD *v26; // [esp+20h] [ebp-58h] BYREF + _DWORD *v27; // [esp+24h] [ebp-54h] BYREF + _DWORD *v28; // [esp+28h] [ebp-50h] + __int64 v29; // [esp+30h] [ebp-48h] + int v30; // [esp+38h] [ebp-40h] + int v31; // [esp+3Ch] [ebp-3Ch] + __int64 v32; // [esp+40h] [ebp-38h] + __int64 v33; // [esp+48h] [ebp-30h] + __int64 v34; // [esp+50h] [ebp-28h] + int v35; // [esp+58h] [ebp-20h] + int v36; // [esp+5Ch] [ebp-1Ch] + + v28 = (_DWORD *)this; + v2 = *(_DWORD *)(a2 + 4); + v29 = -1LL; + v3 = *(_DWORD *)(a2 + 36); + v30 = -1; + v4 = *(_DWORD *)(a2 + 16); + v31 = -1; + v32 = -1LL; + v33 = -1LL; + v34 = -1LL; + v35 = -1; + v36 = -1; + if ( !v2 ) + { + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v29 = (int)(v2 - v3); + v30 = *(_DWORD *)(a2 + 8) - v3; + v31 = v30 >> 31; + v2 = *(_DWORD *)(a2 + 12); + v32 = (int)(v2 - v3); + if ( v4 ) + { +LABEL_3: + v33 = v4 - v3; + v5 = *(_DWORD *)(a2 + 20); + v34 = (int)(v5 - v4); + v35 = *(_DWORD *)(a2 + 24) - v3; + v36 = v35 >> 31; + if ( v2 < v5 ) + v2 = v5; + } + if ( v2 ) + *(_DWORD *)(a2 + 40) = v2 - v3; +LABEL_7: + std::streambuf::operator=((volatile signed __int32 **)this, a2); + std::locale::locale((volatile signed __int32 **)&v26, (volatile signed __int32 **)(a2 + 28), v22); + std::locale::locale((volatile signed __int32 **)&v27, (volatile signed __int32 **)(this + 28), v23); + (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v26); + std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v26); + std::locale::~locale(&v27); + std::locale::~locale(&v26); + v6 = *(const void **)(a2 + 36); + *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); + v7 = *(_BYTE **)(this + 36); + if ( v6 == (const void *)(a2 + 44) ) + { + v21 = *(_DWORD *)(a2 + 40); + if ( v21 ) + { + if ( v21 == 1 ) + *v7 = *(_BYTE *)(a2 + 44); + else + memcpy(v7, v6, *(_DWORD *)(a2 + 40)); + v21 = *(_DWORD *)(a2 + 40); + v7 = *(_BYTE **)(this + 36); + } + *(_DWORD *)(this + 40) = v21; + v7[v21] = 0; + v7 = *(_BYTE **)(a2 + 36); + } + else + { + v24 = *(_DWORD *)(a2 + 40); + if ( v7 == (_BYTE *)(this + 44) ) + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 40) = v24; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + } + else + { + v8 = *(_DWORD *)(this + 44); + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 40) = v24; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + if ( v7 ) + { + *(_DWORD *)(a2 + 36) = v7; + *(_DWORD *)(a2 + 44) = v8; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 36) = a2 + 44; + v7 = (_BYTE *)(a2 + 44); + } +LABEL_11: + *(_DWORD *)(a2 + 40) = 0; + *v7 = 0; + std::stringbuf::_M_sync((_DWORD *)a2, *(_DWORD **)(a2 + 36), 0, 0); + v9 = v28; + v10 = v28[9]; + if ( ((unsigned int)v29 & HIDWORD(v29)) != -1 ) + { + v11 = v32; + v12 = v30; + v28[1] = v10 + v29; + v9[2] = v10 + v12; + v9[3] = v10 + v11; + } + if ( ((unsigned int)v33 & HIDWORD(v33)) != -1 ) + { + v13 = HIDWORD(v34); + v14 = v34; + v15 = v10 + v35; + v16 = v33 + v10; + v17 = v34 > 0x7FFFFFFF; + v9[4] = v16; + v9[6] = v15; + if ( v17 ) + { + v18 = v16 + 0x7FFFFFFF; + do + { + v19 = __CFADD__(v14, -2147483647); + v14 -= 0x7FFFFFFF; + v16 = v18; + v13 = v19 + v13 - 1; + v18 += 0x7FFFFFFF; + } + while ( __SPAIR64__(v13, v14) > 0x7FFFFFFF ); + } + v9[5] = v14 + v16; + } + return this; +} +// 4BF03E: variable 'v22' is possibly undefined +// 4BF04C: variable 'v23' is possibly undefined + +//----- (004BF270) -------------------------------------------------------- +unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) +{ + int v3; // ebx + unsigned int result; // eax + int v5; // esi + unsigned int v6; // edi + + this[2] = -1; + this[3] = -1; + v3 = a2[9]; + *this = a3; + result = a2[1]; + this[4] = -1; + v5 = a2[4]; + this[5] = -1; + this[6] = -1; + this[7] = -1; + this[8] = -1; + this[9] = -1; + this[10] = -1; + this[11] = -1; + this[12] = -1; + this[13] = -1; + if ( !result ) + { + if ( !v5 ) + return result; + goto LABEL_3; + } + *((_QWORD *)this + 1) = (int)(result - v3) >> 1; + *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; + result = a2[3]; + *((_QWORD *)this + 3) = (int)(result - v3) >> 1; + if ( v5 ) + { +LABEL_3: + *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); + v6 = a2[5]; + *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; + *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; + if ( result < v6 ) + result = v6; + } + if ( result ) + { + result = (int)(result - v3) >> 1; + a2[10] = result; + } + return result; +} + +//----- (004BF370) -------------------------------------------------------- +unsigned int __thiscall std::wstringbuf::__xfer_bufptrs::__xfer_bufptrs(_DWORD *this, _DWORD *a2, int a3) +{ + int v3; // ebx + unsigned int result; // eax + int v5; // esi + unsigned int v6; // edi + + this[2] = -1; + this[3] = -1; + v3 = a2[9]; + *this = a3; + result = a2[1]; + this[4] = -1; + v5 = a2[4]; + this[5] = -1; + this[6] = -1; + this[7] = -1; + this[8] = -1; + this[9] = -1; + this[10] = -1; + this[11] = -1; + this[12] = -1; + this[13] = -1; + if ( !result ) + { + if ( !v5 ) + return result; + goto LABEL_3; + } + *((_QWORD *)this + 1) = (int)(result - v3) >> 1; + *((_QWORD *)this + 2) = (a2[2] - v3) >> 1; + result = a2[3]; + *((_QWORD *)this + 3) = (int)(result - v3) >> 1; + if ( v5 ) + { +LABEL_3: + *((_QWORD *)this + 4) = __PAIR64__((v5 - v3) >> 31, (v5 - v3) >> 1); + v6 = a2[5]; + *((_QWORD *)this + 5) = (int)(v6 - v5) >> 1; + *((_QWORD *)this + 6) = (a2[6] - v3) >> 1; + if ( result < v6 ) + result = v6; + } + if ( result ) + { + result = (int)(result - v3) >> 1; + a2[10] = result; + } + return result; +} + +//----- (004BF470) -------------------------------------------------------- +int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) +{ + int v1; // eax + _DWORD *v2; // esi + int v3; // ebx + int v4; // edx + int v5; // edi + int v6; // edi + int result; // eax + __int64 v8; // rax + int v9; // ecx + int v10; // ebx + int v11; // ecx + + v1 = *(_DWORD *)(a1 + 8); + v2 = *(_DWORD **)a1; + v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); + if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) + { + v4 = *(_DWORD *)(a1 + 24); + v5 = *(_DWORD *)(a1 + 16); + v2[1] = v3 + 2 * v1; + v2[2] = v3 + 2 * v5; + v2[3] = v3 + 2 * v4; + } + v6 = *(_DWORD *)(a1 + 32); + result = v6 & *(_DWORD *)(a1 + 36); + if ( result != -1 ) + { + v8 = *(_QWORD *)(a1 + 40); + v9 = v3 + 2 * *(_DWORD *)(a1 + 48); + v10 = v3 + 2 * v6; + v2[6] = v9; + v2[4] = v10; + if ( v8 > 0x7FFFFFFF ) + { + v11 = v10 - 2; + do + { + v10 = v11; + v8 -= 0x7FFFFFFFLL; + v11 -= 2; + } + while ( v8 > 0x7FFFFFFF ); + } + result = v10 + 2 * v8; + v2[5] = result; + } + return result; +} + +//----- (004BF500) -------------------------------------------------------- +int __fastcall std::wstringbuf::__xfer_bufptrs::~__xfer_bufptrs(int a1) +{ + int v1; // eax + _DWORD *v2; // esi + int v3; // ebx + int v4; // edx + int v5; // edi + int v6; // edi + int result; // eax + __int64 v8; // rax + int v9; // ecx + int v10; // ebx + int v11; // ecx + + v1 = *(_DWORD *)(a1 + 8); + v2 = *(_DWORD **)a1; + v3 = *(_DWORD *)(*(_DWORD *)a1 + 36); + if ( (v1 & *(_DWORD *)(a1 + 12)) != -1 ) + { + v4 = *(_DWORD *)(a1 + 24); + v5 = *(_DWORD *)(a1 + 16); + v2[1] = v3 + 2 * v1; + v2[2] = v3 + 2 * v5; + v2[3] = v3 + 2 * v4; + } + v6 = *(_DWORD *)(a1 + 32); + result = v6 & *(_DWORD *)(a1 + 36); + if ( result != -1 ) + { + v8 = *(_QWORD *)(a1 + 40); + v9 = v3 + 2 * *(_DWORD *)(a1 + 48); + v10 = v3 + 2 * v6; + v2[6] = v9; + v2[4] = v10; + if ( v8 > 0x7FFFFFFF ) + { + v11 = v10 - 2; + do + { + v10 = v11; + v8 -= 0x7FFFFFFFLL; + v11 -= 2; + } + while ( v8 > 0x7FFFFFFF ); + } + result = v10 + 2 * v8; + v2[5] = result; + } + return result; +} + +//----- (004BF590) -------------------------------------------------------- +unsigned int __fastcall std::wstringbuf::_M_update_egptr(int a1) +{ + unsigned int result; // eax + + result = *(_DWORD *)(a1 + 20); + if ( result && result > *(_DWORD *)(a1 + 12) ) + { + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + { + *(_DWORD *)(a1 + 4) = result; + *(_DWORD *)(a1 + 8) = result; + } + *(_DWORD *)(a1 + 12) = result; + } + return result; +} + +//----- (004BF5C0) -------------------------------------------------------- +int __thiscall std::wstringbuf::_M_stringbuf_init(int this, int a2) +{ + unsigned int v2; // edx + + v2 = 0; + *(_DWORD *)(this + 32) = a2; + if ( (a2 & 3) != 0 ) + v2 = *(_DWORD *)(this + 40); + return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v2); +} + +//----- (004BF600) -------------------------------------------------------- +int __thiscall std::wstringbuf::str(int this, int a2) +{ + unsigned int v3; // eax + + std::wstring::_M_replace(this + 36, 0, *(_DWORD *)(this + 40), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); + v3 = 0; + if ( (*(_BYTE *)(this + 32) & 3) != 0 ) + v3 = *(_DWORD *)(this + 40); + return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v3); +} + +//----- (004BF660) -------------------------------------------------------- +int __thiscall std::wstringbuf::swap(_DWORD *this, int a2) +{ + int v3; // eax + int v4; // edx + int v5; // ecx + unsigned int v6; // edi + unsigned int v7; // eax + int v8; // edi + int v9; // edx + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // edx + int v15; // eax + int v16; // edx + int v17; // eax + int v18; // edx + int v19; // eax + int v20; // eax + _DWORD *v21; // ecx + int v22; // ebx + int v23; // edx + int v24; // esi + __int64 v25; // rax + int v26; // edi + int v27; // ebx + bool v28; // cf + int v29; // esi + _DWORD *v30; // ecx + int v31; // ebx + int v32; // edx + int v33; // esi + int result; // eax + __int64 v35; // rax + int v36; // edi + int v37; // ebx + int v38; // esi + const std::locale *v39; // [esp+4h] [ebp-B4h] + const std::locale *v40; // [esp+4h] [ebp-B4h] + const std::locale *v41; // [esp+4h] [ebp-B4h] + const std::locale *v42; // [esp+4h] [ebp-B4h] + unsigned int v43; // [esp+10h] [ebp-A8h] + int v44; // [esp+14h] [ebp-A4h] + unsigned int v45; // [esp+18h] [ebp-A0h] + unsigned int v46; // [esp+1Ch] [ebp-9Ch] + _DWORD *v47; // [esp+24h] [ebp-94h] BYREF + _DWORD *v48; // [esp+28h] [ebp-90h] BYREF + _DWORD *v49; // [esp+2Ch] [ebp-8Ch] BYREF + _DWORD *v50; // [esp+30h] [ebp-88h] + int v51; // [esp+38h] [ebp-80h] + int v52; // [esp+3Ch] [ebp-7Ch] + int v53; // [esp+40h] [ebp-78h] + int v54; // [esp+44h] [ebp-74h] + int v55; // [esp+48h] [ebp-70h] + int v56; // [esp+4Ch] [ebp-6Ch] + int v57; // [esp+50h] [ebp-68h] + int v58; // [esp+54h] [ebp-64h] + __int64 v59; // [esp+58h] [ebp-60h] + int v60; // [esp+60h] [ebp-58h] + int v61; // [esp+64h] [ebp-54h] + _DWORD *v62; // [esp+68h] [ebp-50h] + int v63; // [esp+70h] [ebp-48h] + int v64; // [esp+74h] [ebp-44h] + int v65; // [esp+78h] [ebp-40h] + int v66; // [esp+7Ch] [ebp-3Ch] + __int64 v67; // [esp+80h] [ebp-38h] + int v68; // [esp+88h] [ebp-30h] + int v69; // [esp+8Ch] [ebp-2Ch] + __int64 v70; // [esp+90h] [ebp-28h] + int v71; // [esp+98h] [ebp-20h] + int v72; // [esp+9Ch] [ebp-1Ch] + + v3 = this[1]; + v51 = -1; + v4 = this[9]; + v52 = -1; + v50 = (_DWORD *)a2; + v5 = this[4]; + v53 = -1; + v54 = -1; + v55 = -1; + v56 = -1; + v57 = -1; + v58 = -1; + v59 = -1LL; + v60 = -1; + v61 = -1; + v44 = v3; + if ( !v3 ) + { + v46 = 0; + if ( !v5 ) + goto LABEL_7; + goto LABEL_3; + } + v51 = (v3 - v4) >> 1; + v52 = (v3 - v4) >> 31; + v53 = (this[2] - v4) >> 1; + v54 = v53 >> 31; + v46 = this[3]; + v55 = (int)(v46 - v4) >> 1; + v56 = (int)(v46 - v4) >> 31; + if ( v5 ) + { +LABEL_3: + v57 = (v5 - v4) >> 1; + v58 = (v5 - v4) >> 31; + v6 = this[5]; + v59 = (int)(v6 - v5) >> 1; + v60 = (this[6] - v4) >> 1; + v61 = v60 >> 31; + if ( v46 < v6 ) + v46 = v6; + } + if ( v46 ) + this[10] = (int)(v46 - v4) >> 1; +LABEL_7: + v7 = *(_DWORD *)(a2 + 4); + v8 = *(_DWORD *)(a2 + 16); + v62 = this; + v63 = -1; + v9 = *(_DWORD *)(a2 + 36); + v64 = -1; + v65 = -1; + v66 = -1; + v67 = -1LL; + v68 = -1; + v69 = -1; + v70 = -1LL; + v71 = -1; + v72 = -1; + v45 = v7; + if ( !v7 ) + { + if ( !v8 ) + goto LABEL_13; + goto LABEL_9; + } + v63 = (int)(v7 - v9) >> 1; + v64 = (int)(v7 - v9) >> 31; + v65 = (*(_DWORD *)(a2 + 8) - v9) >> 1; + v66 = v65 >> 31; + v7 = *(_DWORD *)(a2 + 12); + v67 = (int)(v7 - v9) >> 1; + if ( v8 ) + { +LABEL_9: + v68 = (v8 - v9) >> 1; + v69 = (v8 - v9) >> 31; + v43 = *(_DWORD *)(a2 + 20); + v70 = (int)(v43 - v8) >> 1; + v71 = (*(_DWORD *)(a2 + 24) - v9) >> 1; + v72 = v71 >> 31; + if ( v7 < v43 ) + v7 = v43; + } + if ( v7 ) + *(_DWORD *)(a2 + 40) = (int)(v7 - v9) >> 1; +LABEL_13: + this[1] = v45; + v10 = *(_DWORD *)(a2 + 8); + *(_DWORD *)(a2 + 4) = v44; + v11 = this[2]; + this[2] = v10; + v12 = *(_DWORD *)(a2 + 12); + *(_DWORD *)(a2 + 8) = v11; + v13 = this[3]; + this[3] = v12; + v14 = *(_DWORD *)(a2 + 16); + *(_DWORD *)(a2 + 12) = v13; + v15 = this[4]; + this[4] = v14; + v16 = *(_DWORD *)(a2 + 20); + *(_DWORD *)(a2 + 16) = v15; + v17 = this[5]; + this[5] = v16; + v18 = *(_DWORD *)(a2 + 24); + *(_DWORD *)(a2 + 20) = v17; + v19 = this[6]; + this[6] = v18; + *(_DWORD *)(a2 + 24) = v19; + std::locale::locale((volatile signed __int32 **)&v49, (volatile signed __int32 **)this + 7, v39); + std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)(a2 + 28)); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v49); + std::locale::~locale(&v49); + std::locale::locale((volatile signed __int32 **)&v47, (volatile signed __int32 **)(a2 + 28), v40); + std::locale::locale((volatile signed __int32 **)&v48, (volatile signed __int32 **)this + 7, v41); + (*(void (__thiscall **)(_DWORD *, _DWORD **))(*this + 8))(this, &v47); + std::locale::operator=((volatile signed __int32 **)this + 7, (volatile signed __int32 **)&v47); + std::locale::locale((volatile signed __int32 **)&v49, (volatile signed __int32 **)(a2 + 28), v42); + (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)a2 + 8))(a2, &v48); + std::locale::operator=((volatile signed __int32 **)(a2 + 28), (volatile signed __int32 **)&v48); + std::locale::~locale(&v49); + std::locale::~locale(&v48); + std::locale::~locale(&v47); + v20 = this[8]; + this[8] = *(_DWORD *)(a2 + 32); + *(_DWORD *)(a2 + 32) = v20; + std::wstring::swap((wchar_t **)this + 9, a2 + 36); + v21 = v62; + v22 = v62[9]; + if ( (v63 & v64) != -1 ) + { + v23 = v67; + v24 = v65; + v62[1] = v22 + 2 * v63; + v21[2] = v22 + 2 * v24; + v21[3] = v22 + 2 * v23; + } + if ( (v68 & v69) != -1 ) + { + v25 = v70; + v26 = v22 + 2 * v71; + v27 = v22 + 2 * v68; + v28 = (unsigned int)v70 > 0x7FFFFFFF; + v21[4] = v27; + v21[6] = v26; + if ( v28 + HIDWORD(v25) > 0 ) + { + v29 = v27 - 2; + do + { + v27 = v29; + v25 -= 0x7FFFFFFFLL; + v29 -= 2; + } + while ( v25 > 0x7FFFFFFF ); + } + v21[5] = v27 + 2 * v25; + } + v30 = v50; + v31 = v50[9]; + if ( (v51 & v52) != -1 ) + { + v32 = v55; + v33 = v53; + v50[1] = v31 + 2 * v51; + v30[2] = v31 + 2 * v33; + v30[3] = v31 + 2 * v32; + } + result = v57 & v58; + if ( (v57 & v58) != -1 ) + { + v35 = v59; + v36 = v31 + 2 * v60; + v37 = v31 + 2 * v57; + v28 = (unsigned int)v59 > 0x7FFFFFFF; + v30[4] = v37; + v30[6] = v36; + if ( v28 + HIDWORD(v35) > 0 ) + { + v38 = v37 - 2; + do + { + v37 = v38; + v35 -= 0x7FFFFFFFLL; + v38 -= 2; + } + while ( v35 > 0x7FFFFFFF ); + } + result = v37 + 2 * v35; + v30[5] = result; + } + return result; +} +// 4BF8DE: variable 'v39' is possibly undefined +// 4BF91B: variable 'v40' is possibly undefined +// 4BF932: variable 'v41' is possibly undefined +// 4BF96C: variable 'v42' is possibly undefined + +//----- (004BFB80) -------------------------------------------------------- +_DWORD *__thiscall std::wstringbuf::setbuf(_DWORD *this, _DWORD *a2, int a3) +{ + _WORD *v4; // eax + int v5; // ecx + + if ( !a2 || a3 < 0 ) + return this; + v4 = (_WORD *)this[9]; + this[10] = 0; + *v4 = 0; + std::wstringbuf::_M_sync(this, a2, a3, 0); + return (_DWORD *)v5; +} +// 4BFBCA: variable 'v5' is possibly undefined + +//----- (004BFBE0) -------------------------------------------------------- +int __thiscall std::wstringbuf::_M_sync(_DWORD *this, _DWORD *a2, int a3, unsigned int a4) +{ + int result; // eax + _DWORD *v5; // esi + int v6; // ebx + int v7; // edx + int v8; // edi + int v9; // edi + int v10; // esi + int v11; // edi + int v12; // [esp+0h] [ebp-1Ch] + + result = (int)a2; + v5 = (_DWORD *)this[9]; + v6 = this[8] & 0x10; + v7 = (int)a2 + 2 * this[10]; + v12 = this[8] & 8; + if ( v5 == this + 11 ) + v8 = 14; + else + v8 = 2 * this[11]; + v9 = (int)a2 + v8; + if ( a2 != v5 ) + { + v10 = a3; + a3 = 0; + v7 += 2 * v10; + v9 = v7; + } + if ( v12 ) + { + this[1] = a2; + this[3] = v7; + this[2] = (char *)a2 + 2 * a3; + } + if ( v6 ) + { + this[6] = v9; + this[4] = a2; + if ( a4 > 0x7FFFFFFF ) + { + v11 = a4 - 0x7FFFFFFF; + if ( (((unsigned __int64)a4 - 0x7FFFFFFF) >> 32) | (a4 + 1) ) + { + result = (int)a2 - 2; + } + else + { + result = (int)(a2 - 1); + v11 = 1; + } + a4 = v11; + } + this[5] = result + 2 * a4; + result = v12; + if ( !v12 ) + { + this[1] = v7; + this[2] = v7; + this[3] = v7; + } + } + return result; +} + +//----- (004BFCD0) -------------------------------------------------------- +unsigned int *__thiscall std::wstringbuf::seekoff(unsigned int *this, _DWORD *a2, __int64 a3, int a4, unsigned int a5) +{ + unsigned int *result; // eax + bool v6; // cl + unsigned int v7; // ebx + int v8; // ebp + unsigned int v9; // esi + _DWORD *v10; // edi + int v11; // edi + unsigned int v12; // esi + int v13; // edx + int v14; // edx + int v15; // esi + bool v16; // cf + __int64 v17; // [esp+0h] [ebp-34h] + unsigned __int8 v18; // [esp+8h] [ebp-2Ch] + char v19; // [esp+16h] [ebp-1Eh] + char v20; // [esp+16h] [ebp-1Eh] + unsigned __int8 v21; // [esp+17h] [ebp-1Dh] + int v22; // [esp+18h] [ebp-1Ch] + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + v17 = a3; + v22 = a2[8] & 8; + v6 = (a5 & v22) != 0; + v7 = (a5 & a2[8]) >> 4; + v18 = (a4 != 1) & v7 & v6; + v19 = ((a5 >> 3) ^ 1) & 1 & v7; + v21 = v6 & ((a5 >> 4) ^ 1); + if ( v21 ) + { + v8 = a2[1]; + if ( !v8 && a3 ) + return result; + v20 = v18 | v19; + } + else + { + v8 = a2[4]; + if ( !v8 && a3 ) + return result; + v20 = v18 | v19; + if ( !v20 ) + return result; + } + v9 = a2[5]; + if ( v9 ) + { + v10 = a2; + if ( v9 > a2[3] ) + { + if ( !v22 ) + { + v10 = a2; + a2[1] = v9; + a2[2] = v9; + } + v10[3] = v9; + } + } + if ( a4 == 1 ) + { + v11 = (unsigned __int64)(a3 + ((int)(v9 - v8) >> 1)) >> 32; + v12 = a3 + ((int)(v9 - v8) >> 1); + v17 = ((a2[2] - v8) >> 1) + a3; + } + else + { + v11 = HIDWORD(a3); + v12 = a3; + if ( a4 == 2 ) + { + v15 = (a2[3] - v8) >> 1; + v16 = __CFADD__(v15, (_DWORD)a3); + LODWORD(v17) = v15 + a3; + v12 = v15 + a3; + HIDWORD(v17) = ((a2[3] - v8) >> 31) + v16 + HIDWORD(a3); + v11 = HIDWORD(v17); + } + } + if ( v18 | v21 && v17 >= 0 && (a2[3] - v8) >> 1 >= v17 ) + { + result[2] = 0; + v14 = a2[1] + 2 * v17; + result[1] = HIDWORD(v17); + a2[2] = v14; + *result = v17; + } + if ( v11 >= 0 && v20 && __SPAIR64__((a2[3] - v8) >> 31, (a2[3] - v8) >> 1) >= __SPAIR64__(v11, v12) ) + { + *result = v12; + result[1] = v11; + v13 = a2[4] + 2 * v12; + result[2] = 0; + a2[5] = v13; + } + return result; +} + +//----- (004BFF20) -------------------------------------------------------- +_DWORD *__thiscall std::wstringbuf::seekpos(_DWORD *this, _DWORD *a2, __int64 a3, int a4, int a5, int a6) +{ + _DWORD *result; // eax + int v7; // ecx + int v8; // ebx + unsigned int v9; // ebp + int v10; // [esp+0h] [ebp-2Ch] + + result = this; + *this = -1; + this[1] = -1; + this[2] = 0; + v7 = a2[8] & 8; + v10 = a6 & a2[8]; + if ( (v7 & a6) != 0 ) + v8 = a2[1]; + else + v8 = a2[4]; + if ( (!a3 || v8) && (v10 & 0x18) != 0 ) + { + v9 = a2[5]; + if ( v9 && a2[3] < v9 ) + { + if ( !v7 ) + { + a2[1] = v9; + a2[2] = v9; + } + a2[3] = v9; + } + if ( a3 >= 0 && __SPAIR64__((a2[3] - v8) >> 31, (a2[3] - v8) >> 1) >= a3 ) + { + if ( (v7 & a6) != 0 ) + a2[2] = a2[1] + 2 * a3; + if ( (v10 & 0x10) != 0 ) + a2[5] = a2[4] + 2 * a3; + *(_QWORD *)result = a3; + result[2] = a4; + } + } + return result; +} + +//----- (004C0010) -------------------------------------------------------- +int __thiscall std::wstringbuf::_M_pbump(_DWORD *this, int a2, int a3, __int64 a4) +{ + __int64 v4; // rax + int v5; // ebx + int result; // eax + + v4 = a4; + this[6] = a3; + v5 = a2; + for ( this[4] = a2; v4 > 0x7FFFFFFF; v4 -= 0x7FFFFFFFLL ) + v5 -= 2; + result = v5 + 2 * v4; + this[5] = result; + return result; +} + +//----- (004C0070) -------------------------------------------------------- +int __thiscall std::wstringbuf::overflow(int this, int a2) +{ + int v2; // edi + unsigned int v4; // edx + _WORD *v5; // eax + int v7; // edx + int v8; // edx + unsigned int v9; // edx + wchar_t *v10; // edx + _WORD *v11; // eax + unsigned int v12; // edx + int v13; // [esp+14h] [ebp-44h] + unsigned int v14; // [esp+18h] [ebp-40h] + size_t v15; // [esp+1Ch] [ebp-3Ch] + int v16; // [esp+1Ch] [ebp-3Ch] + void *v17; // [esp+28h] [ebp-30h] BYREF + int v18; // [esp+2Ch] [ebp-2Ch] + int v19[10]; // [esp+30h] [ebp-28h] BYREF + + v13 = *(_DWORD *)(this + 32); + if ( (v13 & 0x10) == 0 ) + return -1; + if ( (_WORD)a2 != 0xFFFF ) + { + v2 = *(_DWORD *)(this + 36); + if ( v2 == this + 44 ) + v4 = 7; + else + v4 = *(_DWORD *)(this + 44); + v14 = *(_DWORD *)(this + 24); + v15 = *(_DWORD *)(this + 16); + v5 = *(_WORD **)(this + 20); + if ( (int)(v14 - v15) >> 1 < v4 ) + { + *(_DWORD *)(this + 16) = v2; + v5 = (_WORD *)((char *)v5 + v2 - v15); + *(_DWORD *)(this + 24) = v2 + 2 * v4; + *(_DWORD *)(this + 20) = v5; + if ( (v13 & 8) != 0 ) + { + v7 = *(_DWORD *)(this + 8); + *(_DWORD *)(this + 12) = v2 + *(_DWORD *)(this + 12) - *(_DWORD *)(this + 4) + 2; + v8 = v2 + v7 - *(_DWORD *)(this + 4); + *(_DWORD *)(this + 4) = v2; + *(_DWORD *)(this + 8) = v8; + } + goto LABEL_7; + } + if ( (unsigned int)v5 < v14 ) + { +LABEL_7: + *v5 = a2; +LABEL_8: + *(_DWORD *)(this + 20) = v5 + 1; + return a2; + } + if ( v4 != 0x1FFFFFFF ) + { + v9 = 2 * v4; + v18 = 0; + v17 = v19; + LOWORD(v19[0]) = 0; + if ( v9 <= 0x1FFFFFFF ) + { + if ( v9 < 0x200 ) + v9 = 512; + } + else + { + v9 = 0x1FFFFFFF; + } + std::wstring::reserve((int)&v17, v9); + v10 = *(wchar_t **)(this + 16); + v16 = v18; + if ( v10 ) + { + std::wstring::_M_replace((int)&v17, 0, v18, v10, (*(_DWORD *)(this + 24) - (int)v10) >> 1); + v16 = v18; + } + v11 = v17; + if ( v17 == v19 ) + v12 = 7; + else + v12 = v19[0]; + if ( v16 + 1 > v12 ) + { + std::wstring::_M_mutate((const wchar_t **)&v17, v16, 0, 0, 1u); + v11 = v17; + } + v11[v16] = a2; + v18 = v16 + 1; + v11[v16 + 1] = 0; + std::wstring::swap((wchar_t **)(this + 36), (int)&v17); + std::wstringbuf::_M_sync( + (_DWORD *)this, + *(_DWORD **)(this + 36), + (*(_DWORD *)(this + 8) - *(_DWORD *)(this + 4)) >> 1, + (*(_DWORD *)(this + 20) - *(_DWORD *)(this + 16)) >> 1); + if ( v17 != v19 ) + operator delete(v17); + v5 = *(_WORD **)(this + 20); + goto LABEL_8; + } + return -1; + } + return 0; +} + +//----- (004C02D0) -------------------------------------------------------- +int __thiscall std::wstringbuf::pbackfail(int this, int a2) +{ + unsigned int v2; // eax + int v3; // edx + int v4; // esi + + v2 = *(_DWORD *)(this + 8); + v3 = -1; + if ( v2 <= *(_DWORD *)(this + 4) ) + return v3; + if ( (_WORD)a2 == 0xFFFF ) + { + *(_DWORD *)(this + 8) = v2 - 2; + return 0; + } + v4 = *(unsigned __int16 *)(v2 - 2); + if ( (*(_BYTE *)(this + 32) & 0x10) == 0 && (_WORD)v4 != (_WORD)a2 ) + return v3; + *(_DWORD *)(this + 8) = v2 - 2; + v3 = v4; + if ( (_WORD)v4 == (_WORD)a2 ) + return v3; + *(_WORD *)(v2 - 2) = a2; + return a2; +} + +//----- (004C0330) -------------------------------------------------------- +int __fastcall std::wstringbuf::showmanyc(int a1) +{ + unsigned int v1; // edx + unsigned int v2; // eax + + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + return -1; + v1 = *(_DWORD *)(a1 + 20); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + if ( v1 > v2 ) + { + *(_DWORD *)(a1 + 12) = v1; + v2 = v1; + } + } + return (int)(v2 - *(_DWORD *)(a1 + 8)) >> 1; +} + +//----- (004C0360) -------------------------------------------------------- +int __fastcall std::wstringbuf::underflow(int a1) +{ + unsigned int v1; // eax + unsigned int v2; // edx + unsigned __int16 *v3; // eax + + if ( (*(_BYTE *)(a1 + 32) & 8) == 0 ) + return -1; + v1 = *(_DWORD *)(a1 + 20); + v2 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + if ( v1 > v2 ) + { + *(_DWORD *)(a1 + 12) = v1; + v2 = v1; + } + } + v3 = *(unsigned __int16 **)(a1 + 8); + if ( v2 > (unsigned int)v3 ) + return *v3; + else + return -1; +} + +//----- (004C0390) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2) +{ + unsigned int v3; // eax + int v4; // ecx + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // esi + int v9; // edi + int v10; // esi + const std::locale *v12; // [esp+4h] [ebp-74h] + int v13; // [esp+1Ch] [ebp-5Ch] + int v15; // [esp+30h] [ebp-48h] + int v16; // [esp+34h] [ebp-44h] + int v17; // [esp+38h] [ebp-40h] + int v18; // [esp+40h] [ebp-38h] + int v19; // [esp+48h] [ebp-30h] + int v20; // [esp+4Ch] [ebp-2Ch] + int v21; // [esp+50h] [ebp-28h] + int v22; // [esp+58h] [ebp-20h] + + v15 = -1; + v16 = -1; + v17 = -1; + v13 = *(_DWORD *)(a2 + 36); + v3 = *(_DWORD *)(a2 + 4); + v18 = -1; + v19 = -1; + v20 = -1; + v21 = -1; + v22 = -1; + if ( !v3 ) + { + v4 = *(_DWORD *)(a2 + 16); + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v15 = (int)(v3 - v13) >> 1; + v16 = (int)(v3 - v13) >> 31; + v17 = (*(_DWORD *)(a2 + 8) - v13) >> 1; + v3 = *(_DWORD *)(a2 + 12); + v18 = (int)(v3 - v13) >> 1; + v4 = *(_DWORD *)(a2 + 16); + if ( v4 ) + { +LABEL_3: + v19 = (v4 - v13) >> 1; + v20 = (v4 - v13) >> 31; + v21 = (*(_DWORD *)(a2 + 20) - v4) >> 1; + v22 = (*(_DWORD *)(a2 + 24) - v13) >> 1; + if ( v3 < *(_DWORD *)(a2 + 20) ) + v3 = *(_DWORD *)(a2 + 20); + } + if ( v3 ) + *(_DWORD *)(a2 + 40) = (int)(v3 - v13) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v12); + v5 = *(_DWORD *)(a2 + 32); + *(_DWORD *)this = &off_4F5958; + *(_DWORD *)(this + 36) = this + 44; + *(_DWORD *)(this + 32) = v5; + v6 = *(_DWORD *)(a2 + 36); + if ( v6 == a2 + 44 ) + { + wmemcpy((wchar_t *)(this + 44), (const wchar_t *)(a2 + 44), 8u); + } + else + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + } + v7 = *(_DWORD *)(a2 + 40); + *(_DWORD *)(a2 + 36) = a2 + 44; + *(_DWORD *)(a2 + 40) = 0; + *(_DWORD *)(this + 40) = v7; + *(_WORD *)(a2 + 44) = 0; + v8 = *(_DWORD *)(this + 36); + if ( (v15 & v16) != -1 ) + { + *(_DWORD *)(this + 4) = v8 + 2 * v15; + *(_DWORD *)(this + 8) = v8 + 2 * v17; + *(_DWORD *)(this + 12) = v8 + 2 * v18; + } + if ( (v20 & v19) != -1 ) + { + v9 = v8 + 2 * v22; + v10 = v8 + 2 * v19; + *(_DWORD *)(this + 24) = v9; + *(_DWORD *)(this + 16) = v10; + *(_DWORD *)(this + 20) = v10 + 2 * v21; + } + return std::wstringbuf::_M_sync((_DWORD *)a2, *(_DWORD **)(a2 + 36), 0, 0); +} +// 4C053F: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C048D: variable 'v12' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); + +//----- (004C0600) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3) +{ + const wchar_t *v4; // edi + int v5; // eax + _DWORD *v6; // eax + int v7; // eax + int result; // eax + wchar_t *S2; // [esp+4h] [ebp-18h] + + v4 = (const wchar_t *)(a2 + 11); + std::wstreambuf::basic_streambuf((_DWORD *)this, (int)a2, (const std::locale *)S2); + v5 = a2[8]; + *(_DWORD *)this = &off_4F5958; + *(_DWORD *)(this + 36) = this + 44; + *(_DWORD *)(this + 32) = v5; + v6 = (_DWORD *)a2[9]; + if ( v6 == a2 + 11 ) + { + wmemcpy((wchar_t *)(this + 44), v4, 8u); + } + else + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 44) = a2[11]; + } + v7 = a2[10]; + a2[9] = v4; + a2[10] = 0; + *(_DWORD *)(this + 40) = v7; + result = 0; + *((_WORD *)a2 + 22) = 0; + return result; +} +// 4C0612: variable 'S2' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); + +//----- (004C0680) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3) +{ + int v4; // edx + unsigned int v5; // eax + wchar_t *v7; // [esp+0h] [ebp-28h] + int v8; // [esp+8h] [ebp-20h] + + *(_DWORD *)this = &off_4F6454; + *(_DWORD *)(this + 4) = 0; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 24) = 0; + std::locale::locale((_DWORD *)(this + 28)); + *(_DWORD *)this = &off_4F5958; + *(_DWORD *)(this + 32) = 0; + v4 = *(_DWORD *)(a2 + 4); + LOBYTE(v8) = 0; + v7 = *(wchar_t **)a2; + *(_DWORD *)(this + 36) = this + 44; + std::wstring::_M_construct((wchar_t **)(this + 36), v7, (int)&v7[v4], v8); + *(_DWORD *)(this + 32) = a3; + v5 = 0; + if ( (a3 & 3) != 0 ) + v5 = *(_DWORD *)(this + 40); + return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v5); +} +// 4C06F8: variable 'v8' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C0750) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_4F6454; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_4F5958; + this[10] = 0; + this[8] = a2; + this[9] = this + 11; + result = 0; + *((_WORD *)this + 22) = 0; + return result; +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C07C0) -------------------------------------------------------- +int __fastcall std::wstringbuf::basic_stringbuf(int a1) +{ + _DWORD *v2; // ecx + int result; // eax + + v2 = (_DWORD *)(a1 + 28); + *(v2 - 7) = &off_4F6454; + *(v2 - 6) = 0; + *(v2 - 5) = 0; + *(v2 - 4) = 0; + *(v2 - 3) = 0; + *(v2 - 2) = 0; + *(v2 - 1) = 0; + std::locale::locale(v2); + *(_DWORD *)a1 = &off_4F5958; + *(_DWORD *)(a1 + 36) = a1 + 44; + result = 0; + *(_DWORD *)(a1 + 32) = 24; + *(_DWORD *)(a1 + 40) = 0; + *(_WORD *)(a1 + 44) = 0; + return result; +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C0830) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2) +{ + unsigned int v3; // eax + int v4; // ecx + int v5; // eax + int v6; // eax + int v7; // eax + int v8; // esi + int v9; // edi + int v10; // esi + const std::locale *v12; // [esp+4h] [ebp-74h] + int v13; // [esp+1Ch] [ebp-5Ch] + int v15; // [esp+30h] [ebp-48h] + int v16; // [esp+34h] [ebp-44h] + int v17; // [esp+38h] [ebp-40h] + int v18; // [esp+40h] [ebp-38h] + int v19; // [esp+48h] [ebp-30h] + int v20; // [esp+4Ch] [ebp-2Ch] + int v21; // [esp+50h] [ebp-28h] + int v22; // [esp+58h] [ebp-20h] + + v15 = -1; + v16 = -1; + v17 = -1; + v13 = *(_DWORD *)(a2 + 36); + v3 = *(_DWORD *)(a2 + 4); + v18 = -1; + v19 = -1; + v20 = -1; + v21 = -1; + v22 = -1; + if ( !v3 ) + { + v4 = *(_DWORD *)(a2 + 16); + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v15 = (int)(v3 - v13) >> 1; + v16 = (int)(v3 - v13) >> 31; + v17 = (*(_DWORD *)(a2 + 8) - v13) >> 1; + v3 = *(_DWORD *)(a2 + 12); + v18 = (int)(v3 - v13) >> 1; + v4 = *(_DWORD *)(a2 + 16); + if ( v4 ) + { +LABEL_3: + v19 = (v4 - v13) >> 1; + v20 = (v4 - v13) >> 31; + v21 = (*(_DWORD *)(a2 + 20) - v4) >> 1; + v22 = (*(_DWORD *)(a2 + 24) - v13) >> 1; + if ( v3 < *(_DWORD *)(a2 + 20) ) + v3 = *(_DWORD *)(a2 + 20); + } + if ( v3 ) + *(_DWORD *)(a2 + 40) = (int)(v3 - v13) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf((_DWORD *)this, a2, v12); + v5 = *(_DWORD *)(a2 + 32); + *(_DWORD *)this = &off_4F5958; + *(_DWORD *)(this + 36) = this + 44; + *(_DWORD *)(this + 32) = v5; + v6 = *(_DWORD *)(a2 + 36); + if ( v6 == a2 + 44 ) + { + wmemcpy((wchar_t *)(this + 44), (const wchar_t *)(a2 + 44), 8u); + } + else + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + } + v7 = *(_DWORD *)(a2 + 40); + *(_DWORD *)(a2 + 36) = a2 + 44; + *(_DWORD *)(a2 + 40) = 0; + *(_DWORD *)(this + 40) = v7; + *(_WORD *)(a2 + 44) = 0; + v8 = *(_DWORD *)(this + 36); + if ( (v15 & v16) != -1 ) + { + *(_DWORD *)(this + 4) = v8 + 2 * v15; + *(_DWORD *)(this + 8) = v8 + 2 * v17; + *(_DWORD *)(this + 12) = v8 + 2 * v18; + } + if ( (v20 & v19) != -1 ) + { + v9 = v8 + 2 * v22; + v10 = v8 + 2 * v19; + *(_DWORD *)(this + 24) = v9; + *(_DWORD *)(this + 16) = v10; + *(_DWORD *)(this + 20) = v10 + 2 * v21; + } + return std::wstringbuf::_M_sync((_DWORD *)a2, *(_DWORD **)(a2 + 36), 0, 0); +} +// 4C09DF: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C092D: variable 'v12' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); + +//----- (004C0AA0) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, _DWORD *a2, int a3) +{ + const wchar_t *v4; // edi + int v5; // eax + _DWORD *v6; // eax + int v7; // eax + int result; // eax + wchar_t *S2; // [esp+4h] [ebp-18h] + + v4 = (const wchar_t *)(a2 + 11); + std::wstreambuf::basic_streambuf((_DWORD *)this, (int)a2, (const std::locale *)S2); + v5 = a2[8]; + *(_DWORD *)this = &off_4F5958; + *(_DWORD *)(this + 36) = this + 44; + *(_DWORD *)(this + 32) = v5; + v6 = (_DWORD *)a2[9]; + if ( v6 == a2 + 11 ) + { + wmemcpy((wchar_t *)(this + 44), v4, 8u); + } + else + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 44) = a2[11]; + } + v7 = a2[10]; + a2[9] = v4; + a2[10] = 0; + *(_DWORD *)(this + 40) = v7; + result = 0; + *((_WORD *)a2 + 22) = 0; + return result; +} +// 4C0AB2: variable 'S2' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); + +//----- (004C0B20) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(int this, int a2, int a3) +{ + int v4; // edx + unsigned int v5; // eax + wchar_t *v7; // [esp+0h] [ebp-28h] + int v8; // [esp+8h] [ebp-20h] + + *(_DWORD *)this = &off_4F6454; + *(_DWORD *)(this + 4) = 0; + *(_DWORD *)(this + 8) = 0; + *(_DWORD *)(this + 12) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = 0; + *(_DWORD *)(this + 24) = 0; + std::locale::locale((_DWORD *)(this + 28)); + *(_DWORD *)this = &off_4F5958; + *(_DWORD *)(this + 32) = 0; + v4 = *(_DWORD *)(a2 + 4); + LOBYTE(v8) = 0; + v7 = *(wchar_t **)a2; + *(_DWORD *)(this + 36) = this + 44; + std::wstring::_M_construct((wchar_t **)(this + 36), v7, (int)&v7[v4], v8); + *(_DWORD *)(this + 32) = a3; + v5 = 0; + if ( (a3 & 3) != 0 ) + v5 = *(_DWORD *)(this + 40); + return std::wstringbuf::_M_sync((_DWORD *)this, *(_DWORD **)(this + 36), 0, v5); +} +// 4C0B98: variable 'v8' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C0BF0) -------------------------------------------------------- +int __thiscall std::wstringbuf::basic_stringbuf(_DWORD *this, int a2) +{ + _DWORD *v3; // ecx + int result; // eax + + v3 = this + 7; + *(v3 - 7) = &off_4F6454; + *(v3 - 6) = 0; + *(v3 - 5) = 0; + *(v3 - 4) = 0; + *(v3 - 3) = 0; + *(v3 - 2) = 0; + *(v3 - 1) = 0; + std::locale::locale(v3); + *this = &off_4F5958; + this[10] = 0; + this[8] = a2; + this[9] = this + 11; + result = 0; + *((_WORD *)this + 22) = 0; + return result; +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C0C60) -------------------------------------------------------- +int __fastcall std::wstringbuf::basic_stringbuf(int a1) +{ + _DWORD *v2; // ecx + int result; // eax + + v2 = (_DWORD *)(a1 + 28); + *(v2 - 7) = &off_4F6454; + *(v2 - 6) = 0; + *(v2 - 5) = 0; + *(v2 - 4) = 0; + *(v2 - 3) = 0; + *(v2 - 2) = 0; + *(v2 - 1) = 0; + std::locale::locale(v2); + *(_DWORD *)a1 = &off_4F5958; + *(_DWORD *)(a1 + 36) = a1 + 44; + result = 0; + *(_DWORD *)(a1 + 32) = 24; + *(_DWORD *)(a1 + 40) = 0; + *(_WORD *)(a1 + 44) = 0; + return result; +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C0CD0) -------------------------------------------------------- +void __fastcall std::wstringbuf::~wstringbuf(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[9]; + *a1 = &off_4F5958; + if ( v2 != a1 + 11 ) + operator delete(v2); + *a1 = &off_4F6454; + std::locale::~locale((_DWORD **)a1 + 7); + operator delete(a1); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C0D10) -------------------------------------------------------- +void __fastcall std::wstringbuf::~wstringbuf(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 36); + *(_DWORD *)a1 = &off_4F5958; + if ( v2 != (void *)(a1 + 44) ) + operator delete(v2); + *(_DWORD *)a1 = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 28)); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C0D40) -------------------------------------------------------- +int __thiscall std::wstringbuf::operator=(int this, int a2) +{ + unsigned int v2; // eax + int v3; // edx + int v4; // ecx + unsigned int v5; // edi + int v6; // ecx + wchar_t *v7; // edx + wchar_t *v8; // eax + int v9; // ebx + _DWORD *v10; // ecx + int v11; // esi + int v12; // edx + int v13; // edi + __int64 v14; // rax + int v15; // edi + int v16; // esi + int v17; // edi + int v19; // ecx + const std::locale *v20; // [esp+4h] [ebp-74h] + const std::locale *v21; // [esp+4h] [ebp-74h] + int v22; // [esp+18h] [ebp-60h] + _DWORD *v24; // [esp+20h] [ebp-58h] BYREF + _DWORD *v25; // [esp+24h] [ebp-54h] BYREF + _DWORD *v26; // [esp+28h] [ebp-50h] + int v27; // [esp+30h] [ebp-48h] + int v28; // [esp+34h] [ebp-44h] + int v29; // [esp+38h] [ebp-40h] + int v30; // [esp+3Ch] [ebp-3Ch] + __int64 v31; // [esp+40h] [ebp-38h] + int v32; // [esp+48h] [ebp-30h] + int v33; // [esp+4Ch] [ebp-2Ch] + __int64 v34; // [esp+50h] [ebp-28h] + int v35; // [esp+58h] [ebp-20h] + int v36; // [esp+5Ch] [ebp-1Ch] + + v26 = (_DWORD *)this; + v2 = *(_DWORD *)(a2 + 4); + v27 = -1; + v28 = -1; + v3 = *(_DWORD *)(a2 + 36); + v29 = -1; + v4 = *(_DWORD *)(a2 + 16); + v30 = -1; + v31 = -1LL; + v32 = -1; + v33 = -1; + v34 = -1LL; + v35 = -1; + v36 = -1; + if ( !v2 ) + { + if ( !v4 ) + goto LABEL_7; + goto LABEL_3; + } + v27 = (int)(v2 - v3) >> 1; + v28 = (int)(v2 - v3) >> 31; + v29 = (*(_DWORD *)(a2 + 8) - v3) >> 1; + v30 = v29 >> 31; + v2 = *(_DWORD *)(a2 + 12); + v31 = (int)(v2 - v3) >> 1; + if ( v4 ) + { +LABEL_3: + v32 = (v4 - v3) >> 1; + v33 = (v4 - v3) >> 31; + v5 = *(_DWORD *)(a2 + 20); + v34 = (int)(v5 - v4) >> 1; + v35 = (*(_DWORD *)(a2 + 24) - v3) >> 1; + v36 = v35 >> 31; + if ( v2 < v5 ) + v2 = v5; + } + if ( v2 ) + *(_DWORD *)(a2 + 40) = (int)(v2 - v3) >> 1; +LABEL_7: + std::wstreambuf::operator=((volatile signed __int32 **)this, a2); + std::locale::locale((volatile signed __int32 **)&v24, (volatile signed __int32 **)(a2 + 28), v20); + std::locale::locale((volatile signed __int32 **)&v25, (volatile signed __int32 **)(this + 28), v21); + (*(void (__thiscall **)(int, _DWORD **))(*(_DWORD *)this + 8))(this, &v24); + std::locale::operator=((volatile signed __int32 **)(this + 28), (volatile signed __int32 **)&v24); + std::locale::~locale(&v25); + std::locale::~locale(&v24); + v6 = *(_DWORD *)(a2 + 36); + v7 = (wchar_t *)(a2 + 44); + *(_DWORD *)(this + 32) = *(_DWORD *)(a2 + 32); + v8 = *(wchar_t **)(this + 36); + if ( v6 == a2 + 44 ) + { + v19 = *(_DWORD *)(a2 + 40); + if ( v19 ) + { + if ( v19 == 1 ) + { + *v8 = *(_WORD *)(a2 + 44); + } + else + { + wmemcpy(v8, (const wchar_t *)(a2 + 44), *(_DWORD *)(a2 + 40)); + v19 = *(_DWORD *)(a2 + 40); + v7 = *(wchar_t **)(a2 + 36); + v8 = *(wchar_t **)(this + 36); + } + } + *(_DWORD *)(this + 40) = v19; + v8[v19] = 0; + v8 = v7; + } + else + { + v22 = *(_DWORD *)(a2 + 40); + if ( v8 == (wchar_t *)(this + 44) ) + { + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 40) = v22; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + } + else + { + v9 = *(_DWORD *)(this + 44); + *(_DWORD *)(this + 36) = v6; + *(_DWORD *)(this + 40) = v22; + *(_DWORD *)(this + 44) = *(_DWORD *)(a2 + 44); + if ( v8 ) + { + *(_DWORD *)(a2 + 36) = v8; + *(_DWORD *)(a2 + 44) = v9; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 36) = v7; + v8 = (wchar_t *)(a2 + 44); + } +LABEL_11: + *(_DWORD *)(a2 + 40) = 0; + *v8 = 0; + std::wstringbuf::_M_sync((_DWORD *)a2, v8, 0, 0); + v10 = v26; + v11 = v26[9]; + if ( (v27 & v28) != -1 ) + { + v12 = v31; + v13 = v29; + v26[1] = v11 + 2 * v27; + v10[2] = v11 + 2 * v13; + v10[3] = v11 + 2 * v12; + } + if ( (v33 & v32) != -1 ) + { + v14 = v34; + v15 = v11 + 2 * v35; + v16 = v11 + 2 * v32; + v10[6] = v15; + v10[4] = v16; + if ( v14 > 0x7FFFFFFF ) + { + v17 = v16 - 2; + do + { + v16 = v17; + v14 -= 0x7FFFFFFFLL; + v17 -= 2; + } + while ( v14 > 0x7FFFFFFF ); + } + v10[5] = v16 + 2 * v14; + } + return this; +} +// 4C0E4C: variable 'v20' is possibly undefined +// 4C0E5A: variable 'v21' is possibly undefined + +//----- (004C1070) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_4F5998; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F5998: using guessed type int (*off_4F5998)(); + +//----- (004C1110) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + return std::messages_byname::messages_byname(this, (int **)*a2, a3); +} + +//----- (004C1120) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_4F5998; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F5998: using guessed type int (*off_4F5998)(); + +//----- (004C11C0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + return std::messages_byname::messages_byname(this, (int **)*a2, a3); +} + +//----- (004C11D0) -------------------------------------------------------- +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5C90; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4C11E9: variable 'v2' is possibly undefined +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004C1200) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C90; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4C1209: variable 'v1' is possibly undefined +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004C1230) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C90; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4C1239: variable 'v1' is possibly undefined +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004C1260) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_4F59B4; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F59B4: using guessed type int (*off_4F59B4)(); + +//----- (004C1300) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + return std::messages_byname::messages_byname(this, (int **)*a2, a3); +} + +//----- (004C1310) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + unsigned __int8 result; // al + bool v5; // zf + + result = std::messages::messages(this, a3); + *this = &off_4F59B4; + if ( *(_BYTE *)a2 != 67 || *((_BYTE *)a2 + 1) ) + { + v5 = strcmp((const char *)a2, "POSIX") == 0; + result = !v5; + if ( !v5 ) + { + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(this + 2)); + return (unsigned __int8)std::locale::facet::_S_create_c_locale((std::locale::facet *)(this + 2), a2); + } + } + return result; +} +// 4F59B4: using guessed type int (*off_4F59B4)(); + +//----- (004C13B0) -------------------------------------------------------- +unsigned __int8 __thiscall std::messages_byname::messages_byname(_DWORD *this, int **a2, int a3) +{ + return std::messages_byname::messages_byname(this, (int **)*a2, a3); +} + +//----- (004C13C0) -------------------------------------------------------- +void __fastcall std::messages_byname::~messages_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5CAC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4C13D9: variable 'v2' is possibly undefined +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004C13F0) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5CAC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4C13F9: variable 'v1' is possibly undefined +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004C1420) -------------------------------------------------------- +void __cdecl std::messages_byname::~messages_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5CAC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4C1429: variable 'v1' is possibly undefined +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004C1450) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5CC8; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F59D0; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F59D0: using guessed type int (*off_4F59D0)(); +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004C1540) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5CC8; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F59D0; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F59D0: using guessed type int (*off_4F59D0)(); +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004C1630) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5CC8; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F59D0; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F59D0: using guessed type int (*off_4F59D0)(); +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004C1720) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5CC8; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F59D0; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F59D0: using guessed type int (*off_4F59D0)(); +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004C1810) -------------------------------------------------------- +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F59D0; + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4C181C: variable 'v2' is possibly undefined +// 4F59D0: using guessed type int (*off_4F59D0)(); + +//----- (004C1830) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F59D0; + std::numpunct::~numpunct(a1); +} +// 4C1830: variable 'v1' is possibly undefined +// 4F59D0: using guessed type int (*off_4F59D0)(); + +//----- (004C1840) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F59D0; + std::numpunct::~numpunct(a1); +} +// 4C1840: variable 'v1' is possibly undefined +// 4F59D0: using guessed type int (*off_4F59D0)(); + +//----- (004C1850) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5CEC; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F59F4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F59F4: using guessed type int (*off_4F59F4)(); +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004C1940) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5CEC; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F59F4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F59F4: using guessed type int (*off_4F59F4)(); +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004C1A30) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5CEC; + this[2] = 0; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F59F4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::numpunct::_M_initialize_numpunct(this, v6[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F59F4: using guessed type int (*off_4F59F4)(); +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004C1B20) -------------------------------------------------------- +unsigned __int8 __thiscall std::numpunct_byname::numpunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5CEC; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::numpunct::_M_initialize_numpunct(this, 0); + *this = &off_4F59F4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::numpunct::_M_initialize_numpunct(this, v9[0]); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F59F4: using guessed type int (*off_4F59F4)(); +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004C1C10) -------------------------------------------------------- +void __fastcall std::numpunct_byname::~numpunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F59F4; + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4C1C1C: variable 'v2' is possibly undefined +// 4F59F4: using guessed type int (*off_4F59F4)(); + +//----- (004C1C30) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F59F4; + std::numpunct::~numpunct(a1); +} +// 4C1C30: variable 'v1' is possibly undefined +// 4F59F4: using guessed type int (*off_4F59F4)(); + +//----- (004C1C40) -------------------------------------------------------- +void __cdecl std::numpunct_byname::~numpunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F59F4; + std::numpunct::~numpunct(a1); +} +// 4C1C40: variable 'v1' is possibly undefined +// 4F59F4: using guessed type int (*off_4F59F4)(); + +//----- (004C1C50) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F5A18; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F5A18: using guessed type int (*off_4F5A18)(); + +//----- (004C1C70) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F5A18; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F5A18: using guessed type int (*off_4F5A18)(); + +//----- (004C1C90) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F5A18; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F5A18: using guessed type int (*off_4F5A18)(); + +//----- (004C1CB0) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F5A18; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F5A18: using guessed type int (*off_4F5A18)(); + +//----- (004C1CD0) -------------------------------------------------------- +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5D10; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4C1CDC: variable 'v2' is possibly undefined +// 4F5D10: using guessed type int (*off_4F5D10)(); + +//----- (004C1CF0) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D10; + std::locale::facet::~facet(a1); +} +// 4C1CF0: variable 'v1' is possibly undefined +// 4F5D10: using guessed type int (*off_4F5D10)(); + +//----- (004C1D00) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D10; + std::locale::facet::~facet(a1); +} +// 4C1D00: variable 'v1' is possibly undefined +// 4F5D10: using guessed type int (*off_4F5D10)(); + +//----- (004C1D10) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F5A44; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F5A44: using guessed type int (*off_4F5A44)(); + +//----- (004C1D30) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F5A44; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F5A44: using guessed type int (*off_4F5A44)(); + +//----- (004C1D50) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F5A44; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F5A44: using guessed type int (*off_4F5A44)(); + +//----- (004C1D70) -------------------------------------------------------- +BOOL __thiscall std::time_get_byname>::time_get_byname( + _DWORD *this, + int a2, + int a3) +{ + BOOL result; // eax + + *this = &off_4F5A44; + result = a3 != 0; + this[1] = result; + return result; +} +// 4F5A44: using guessed type int (*off_4F5A44)(); + +//----- (004C1D90) -------------------------------------------------------- +void __fastcall std::time_get_byname>::~time_get_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5D3C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4C1D9C: variable 'v2' is possibly undefined +// 4F5D3C: using guessed type int (*off_4F5D3C)(); + +//----- (004C1DB0) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D3C; + std::locale::facet::~facet(a1); +} +// 4C1DB0: variable 'v1' is possibly undefined +// 4F5D3C: using guessed type int (*off_4F5D3C)(); + +//----- (004C1DC0) -------------------------------------------------------- +void __cdecl std::time_get_byname>::~time_get_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D3C; + std::locale::facet::~facet(a1); +} +// 4C1DC0: variable 'v1' is possibly undefined +// 4F5D3C: using guessed type int (*off_4F5D3C)(); + +//----- (004C1DD0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5810; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5A70; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5810: using guessed type int (*off_4F5810)(); +// 4F5A70: using guessed type int (*off_4F5A70)(); + +//----- (004C1ED0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5810; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5A70; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5810: using guessed type int (*off_4F5810)(); +// 4F5A70: using guessed type int (*off_4F5A70)(); + +//----- (004C1FD0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5810; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5A70; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5810: using guessed type int (*off_4F5810)(); +// 4F5A70: using guessed type int (*off_4F5A70)(); + +//----- (004C20D0) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5810; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5A70; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5810: using guessed type int (*off_4F5810)(); +// 4F5A70: using guessed type int (*off_4F5A70)(); + +//----- (004C21D0) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5A70; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4C21DC: variable 'v2' is possibly undefined +// 4F5A70: using guessed type int (*off_4F5A70)(); + +//----- (004C21F0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5A70; + std::moneypunct::~moneypunct(a1); +} +// 4C21F0: variable 'v1' is possibly undefined +// 4F5A70: using guessed type int (*off_4F5A70)(); + +//----- (004C2200) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5A70; + std::moneypunct::~moneypunct(a1); +} +// 4C2200: variable 'v1' is possibly undefined +// 4F5A70: using guessed type int (*off_4F5A70)(); + +//----- (004C2210) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5844; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5AA4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5844: using guessed type int (*off_4F5844)(); +// 4F5AA4: using guessed type int (*off_4F5AA4)(); + +//----- (004C2310) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5844; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5AA4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5844: using guessed type int (*off_4F5844)(); +// 4F5AA4: using guessed type int (*off_4F5AA4)(); + +//----- (004C2410) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5844; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5AA4; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5844: using guessed type int (*off_4F5844)(); +// 4F5AA4: using guessed type int (*off_4F5AA4)(); + +//----- (004C2510) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5844; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5AA4; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5844: using guessed type int (*off_4F5844)(); +// 4F5AA4: using guessed type int (*off_4F5AA4)(); + +//----- (004C2610) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5AA4; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4C261C: variable 'v2' is possibly undefined +// 4F5AA4: using guessed type int (*off_4F5AA4)(); + +//----- (004C2630) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5AA4; + std::moneypunct::~moneypunct(a1); +} +// 4C2630: variable 'v1' is possibly undefined +// 4F5AA4: using guessed type int (*off_4F5AA4)(); + +//----- (004C2640) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5AA4; + std::moneypunct::~moneypunct(a1); +} +// 4C2640: variable 'v1' is possibly undefined +// 4F5AA4: using guessed type int (*off_4F5AA4)(); + +//----- (004C2650) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5878; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5AD8; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5878: using guessed type int (*off_4F5878)(); +// 4F5AD8: using guessed type int (*off_4F5AD8)(); + +//----- (004C2750) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5878; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5AD8; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5878: using guessed type int (*off_4F5878)(); +// 4F5AD8: using guessed type int (*off_4F5AD8)(); + +//----- (004C2850) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F5878; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5AD8; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F5878: using guessed type int (*off_4F5878)(); +// 4F5AD8: using guessed type int (*off_4F5AD8)(); + +//----- (004C2950) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F5878; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5AD8; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F5878: using guessed type int (*off_4F5878)(); +// 4F5AD8: using guessed type int (*off_4F5AD8)(); + +//----- (004C2A50) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5AD8; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4C2A5C: variable 'v2' is possibly undefined +// 4F5AD8: using guessed type int (*off_4F5AD8)(); + +//----- (004C2A70) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5AD8; + std::moneypunct::~moneypunct(a1); +} +// 4C2A70: variable 'v1' is possibly undefined +// 4F5AD8: using guessed type int (*off_4F5AD8)(); + +//----- (004C2A80) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5AD8; + std::moneypunct::~moneypunct(a1); +} +// 4C2A80: variable 'v1' is possibly undefined +// 4F5AD8: using guessed type int (*off_4F5AD8)(); + +//----- (004C2A90) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F58AC; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5B0C; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F58AC: using guessed type int (*off_4F58AC)(); +// 4F5B0C: using guessed type int (*off_4F5B0C)(); + +//----- (004C2B90) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F58AC; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5B0C; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F58AC: using guessed type int (*off_4F58AC)(); +// 4F5B0C: using guessed type int (*off_4F5B0C)(); + +//----- (004C2C90) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int **a2, int a3) +{ + bool v4; // zf + unsigned __int8 result; // al + int v6[7]; // [esp+1Ch] [ebp-1Ch] BYREF + + *this = &off_4F58AC; + this[2] = 0; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5B0C; + if ( *(_BYTE *)a2 != 67 || (result = (unsigned __int8)a2, *((_BYTE *)a2 + 1)) ) + { + v4 = strcmp((const char *)a2, "POSIX") == 0; + result = !v4; + if ( !v4 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v6, a2); + std::moneypunct::_M_initialize_moneypunct(this, v6[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v6); + } + } + return result; +} +// 4F58AC: using guessed type int (*off_4F58AC)(); +// 4F5B0C: using guessed type int (*off_4F5B0C)(); + +//----- (004C2D90) -------------------------------------------------------- +unsigned __int8 __thiscall std::moneypunct_byname::moneypunct_byname(_DWORD *this, int ***a2, int a3) +{ + int **v4; // eax + int **v5; // edi + bool v6; // zf + unsigned __int8 result; // al + int **v8; // [esp+1Ch] [ebp-2Ch] + int v9[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v4 = *a2; + *this = &off_4F58AC; + this[2] = 0; + v8 = v4; + v5 = v4; + this[1] = a3 != 0; + std::moneypunct::_M_initialize_moneypunct(this, 0, 0); + *this = &off_4F5B0C; + if ( *(_BYTE *)v5 != 67 || (result = (unsigned __int8)v8, *((_BYTE *)v8 + 1)) ) + { + v6 = strcmp((const char *)v8, "POSIX") == 0; + result = !v6; + if ( !v6 ) + { + std::locale::facet::_S_create_c_locale((std::locale::facet *)v9, v8); + std::moneypunct::_M_initialize_moneypunct(this, v9[0], 0); + return (unsigned __int8)std::locale::facet::_S_destroy_c_locale((std::locale::facet *)v9); + } + } + return result; +} +// 4F58AC: using guessed type int (*off_4F58AC)(); +// 4F5B0C: using guessed type int (*off_4F5B0C)(); + +//----- (004C2E90) -------------------------------------------------------- +void __fastcall std::moneypunct_byname::~moneypunct_byname(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5B0C; + std::moneypunct::~moneypunct(v2); + operator delete(a1); +} +// 4C2E9C: variable 'v2' is possibly undefined +// 4F5B0C: using guessed type int (*off_4F5B0C)(); + +//----- (004C2EB0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5B0C; + std::moneypunct::~moneypunct(a1); +} +// 4C2EB0: variable 'v1' is possibly undefined +// 4F5B0C: using guessed type int (*off_4F5B0C)(); + +//----- (004C2EC0) -------------------------------------------------------- +void __cdecl std::moneypunct_byname::~moneypunct_byname(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5B0C; + std::moneypunct::~moneypunct(a1); +} +// 4C2EC0: variable 'v1' is possibly undefined +// 4F5B0C: using guessed type int (*off_4F5B0C)(); + +//----- (004C2ED0) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 12); + std::string::_M_replace((unsigned int *)(this + 48), 0, *(_DWORD *)(this + 52), *(char **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 44) & 3) != 0 ) + v4 = *(_DWORD *)(this + 52); + return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); +} + +//----- (004C2F40) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::swap( + _DWORD *this, + _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return std::stringbuf::swap(this + 3, (int)(a2 + 3)); +} +// 4C2F64: variable 'v10' is possibly undefined + +//----- (004C2FE0) -------------------------------------------------------- +char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + _DWORD *this, + _DWORD *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + std::ios_base *v6; // esi + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + int v11; // eax + _DWORD *v12; // edx + int v13; // edx + int v14; // eax + int v15; // ecx + int v16; // eax + char *result; // eax + std::ios_base *v18; // [esp+4h] [ebp-84h] + const std::locale *v19; // [esp+4h] [ebp-84h] + _DWORD *v20; // [esp+1Ch] [ebp-6Ch] + _DWORD *v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + __int64 v23; // [esp+40h] [ebp-48h] + int v24; // [esp+48h] [ebp-40h] + int v25; // [esp+50h] [ebp-38h] + __int64 v26; // [esp+58h] [ebp-30h] + int v27; // [esp+60h] [ebp-28h] + int v28; // [esp+68h] [ebp-20h] + + v21 = this + 18; + std::ios_base::ios_base(this + 18); + *this = &unk_4F0DC4; + *((_WORD *)this + 94) = 0; + v3 = a2[1]; + this[46] = 0; + this[1] = v3; + v4 = *a2; + this[48] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[49] = 0; + this[50] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[18] = &unk_4F0DD8; + this[51] = 0; + std::ios_base::_M_move((int)v21, v6, v18); + std::ios::_M_cache_locale(v21, (int)(this + 45)); + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[48] = 0; + this[46] = v7; + v20 = a2 + 3; + *((_WORD *)this + 94) = *((_WORD *)v6 + 58); + v8 = a2[12]; + v22 = this + 3; + v9 = a2[4]; + a2[1] = 0; + v23 = -1LL; + *this = &off_4F5B44; + this[18] = off_4F5B6C; + this[2] = off_4F5B58; + v24 = -1; + v25 = -1; + v26 = -1LL; + v27 = -1; + v28 = -1; + if ( !v9 ) + { + v10 = a2[7]; + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v23 = (int)(v9 - v8); + v24 = a2[5] - v8; + v9 = a2[6]; + v25 = v9 - v8; + v10 = a2[7]; + if ( v10 ) + { +LABEL_3: + v26 = v10 - v8; + v27 = a2[8] - v10; + v28 = a2[9] - v8; + if ( v9 < a2[8] ) + v9 = a2[8]; + } + if ( v9 ) + a2[13] = v9 - v8; +LABEL_7: + std::streambuf::basic_streambuf(v22, (int)v20, v19); + this[3] = &off_4F5918; + v11 = a2[11]; + this[12] = this + 14; + this[11] = v11; + v12 = (_DWORD *)a2[12]; + if ( v12 == a2 + 14 ) + { + this[14] = a2[14]; + this[15] = a2[15]; + this[16] = a2[16]; + this[17] = a2[17]; + } + else + { + this[12] = v12; + this[14] = a2[14]; + } + v13 = a2[13]; + a2[12] = a2 + 14; + a2[13] = 0; + this[13] = v13; + *((_BYTE *)a2 + 56) = 0; + v14 = this[12]; + if ( ((unsigned int)v23 & HIDWORD(v23)) != -1 ) + { + this[4] = v14 + v23; + this[5] = v14 + v24; + this[6] = v14 + v25; + } + if ( ((unsigned int)v26 & HIDWORD(v26)) != -1 ) + { + v15 = v14 + v28; + v16 = v26 + v14; + this[9] = v15; + this[7] = v16; + this[8] = v27 + v16; + } + std::stringbuf::_M_sync(v20, (_DWORD *)a2[12], 0, 0); + result = (char *)(this + 3); + this[48] = v22; + return result; +} +// 4C3254: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C3059: variable 'v18' is possibly undefined +// 4C31A9: variable 'v19' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); + +//----- (004C3370) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int a2, + int a3) +{ + int v3; // esi + unsigned __int8 *v5; // edx + int v6; // eax + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 72); + std::ios_base::ios_base((_DWORD *)this + 18); + *(_DWORD *)this = &unk_4F0DC4; + *((_DWORD *)this + 46) = 0; + *((_WORD *)this + 94) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 51) = 0; + *((_DWORD *)this + 18) = &unk_4F0DD8; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_4F0DEC; + *((_DWORD *)this + 18) = &unk_4F0E00; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F5B44; + *((_DWORD *)this + 18) = off_4F5B6C; + *((_DWORD *)this + 2) = off_4F5B58; + *((_DWORD *)this + 3) = &off_4F6414; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + *((_DWORD *)this + 9) = 0; + std::locale::locale((_DWORD *)this + 10); + *((_DWORD *)this + 3) = &off_4F5918; + v5 = *(unsigned __int8 **)a2; + v6 = *(_DWORD *)(a2 + 4); + *((_DWORD *)this + 11) = 0; + LOBYTE(v9) = 0; + *((_DWORD *)this + 12) = this + 56; + std::string::_M_construct((void **)this + 12, v5, (size_t)&v5[v6], v9); + *((_DWORD *)this + 11) = a3; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 13); + std::stringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v7); + return std::ios::init(v3, (int)(this + 12)); +} +// 4C348A: variable 'v9' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C3530) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + _DWORD *this, + int a2) +{ + int v2; // esi + + v2 = (int)(this + 18); + std::ios_base::ios_base(this + 18); + *this = &unk_4F0DC4; + this[46] = 0; + *((_WORD *)this + 94) = 0; + this[48] = 0; + this[49] = 0; + this[50] = 0; + this[51] = 0; + this[18] = &unk_4F0DD8; + this[1] = 0; + std::ios::init(v2, 0); + this[2] = &unk_4F0DEC; + this[18] = &unk_4F0E00; + std::ios::init(v2, 0); + *this = &off_4F5B44; + this[18] = off_4F5B6C; + this[2] = off_4F5B58; + this[3] = &off_4F6414; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + *((_BYTE *)this + 56) = 0; + this[3] = &off_4F5918; + this[11] = a2; + this[12] = this + 14; + this[13] = 0; + return std::ios::init(v2, (int)(this + 3)); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C36A0) -------------------------------------------------------- +BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 72; + std::ios_base::ios_base((_DWORD *)(a1 + 72)); + *(_DWORD *)a1 = &unk_4F0DC4; + *(_DWORD *)(a1 + 184) = 0; + *(_WORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 200) = 0; + *(_DWORD *)(a1 + 204) = 0; + *(_DWORD *)(a1 + 72) = &unk_4F0DD8; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_4F0DEC; + *(_DWORD *)(a1 + 72) = &unk_4F0E00; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_4F5B44; + *(_DWORD *)(a1 + 72) = off_4F5B6C; + *(_DWORD *)(a1 + 8) = off_4F5B58; + *(_DWORD *)(a1 + 12) = &off_4F6414; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::locale::locale((_DWORD *)(a1 + 40)); + *(_BYTE *)(a1 + 56) = 0; + *(_DWORD *)(a1 + 12) = &off_4F5918; + *(_DWORD *)(a1 + 44) = 24; + *(_DWORD *)(a1 + 48) = a1 + 56; + *(_DWORD *)(a1 + 52) = 0; + return std::ios::init(v1, a1 + 12); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C3810) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2, + _DWORD *a3) +{ + int v4; // eax + int v5; // esi + int v6; // edx + __int16 v7; // ax + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + int v12; // eax + int v13; // edx + unsigned int v14; // eax + int v15; // ecx + int v16; // eax + _DWORD *v17; // edx + int v18; // edx + int v19; // eax + int v20; // edi + int v21; // eax + int result; // eax + std::ios_base *v23; // [esp+4h] [ebp-84h] + const std::locale *v24; // [esp+4h] [ebp-84h] + _DWORD *v25; // [esp+1Ch] [ebp-6Ch] + std::ios_base *v26; // [esp+20h] [ebp-68h] + int v27; // [esp+20h] [ebp-68h] + _DWORD *v28; // [esp+28h] [ebp-60h] + __int64 v29; // [esp+40h] [ebp-48h] + int v30; // [esp+48h] [ebp-40h] + int v31; // [esp+50h] [ebp-38h] + __int64 v32; // [esp+58h] [ebp-30h] + int v33; // [esp+60h] [ebp-28h] + int v34; // [esp+68h] [ebp-20h] + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = a3[1]; + v26 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + v5 = (int)this + *(_DWORD *)(v4 - 12); + std::ios_base::_M_move(v5, v26, v23); + std::ios::_M_cache_locale((_DWORD *)v5, v5 + 108); + *(_DWORD *)(v5 + 120) = 0; + v6 = *((_DWORD *)v26 + 28); + *((_DWORD *)v26 + 28) = 0; + v7 = *((_WORD *)v26 + 58); + *(_DWORD *)(v5 + 112) = v6; + *(_WORD *)(v5 + 116) = v7; + v8 = a2[4]; + v9 = a2[5]; + a3[1] = 0; + this[2] = v8; + *(int *)((char *)this + *(_DWORD *)(v8 - 12) + 8) = v9; + v10 = a2[1]; + v11 = a2[6]; + *this = v10; + *(int *)((char *)this + *(_DWORD *)(v10 - 12)) = v11; + this[2] = a2[7]; + v12 = *a2; + v13 = a2[8]; + *this = *a2; + v29 = -1LL; + *(int *)((char *)this + *(_DWORD *)(v12 - 12)) = v13; + v25 = a3 + 3; + this[2] = a2[9]; + v28 = this + 3; + v30 = -1; + v27 = a3[12]; + v14 = a3[4]; + v31 = -1; + v32 = -1LL; + v33 = -1; + v34 = -1; + if ( !v14 ) + { + v15 = a3[7]; + if ( !v15 ) + goto LABEL_7; + goto LABEL_3; + } + v29 = (int)(v14 - v27); + v30 = a3[5] - v27; + v14 = a3[6]; + v31 = v14 - v27; + v15 = a3[7]; + if ( v15 ) + { +LABEL_3: + v32 = v15 - v27; + v33 = a3[8] - v15; + v34 = a3[9] - v27; + if ( v14 < a3[8] ) + v14 = a3[8]; + } + if ( v14 ) + a3[13] = v14 - v27; +LABEL_7: + std::streambuf::basic_streambuf(v28, (int)v25, v24); + this[3] = (int)&off_4F5918; + v16 = a3[11]; + this[12] = (int)(this + 14); + this[11] = v16; + v17 = (_DWORD *)a3[12]; + if ( v17 == a3 + 14 ) + { + this[14] = a3[14]; + this[15] = a3[15]; + this[16] = a3[16]; + this[17] = a3[17]; + } + else + { + this[12] = (int)v17; + this[14] = a3[14]; + } + v18 = a3[13]; + a3[12] = a3 + 14; + a3[13] = 0; + this[13] = v18; + *((_BYTE *)a3 + 56) = 0; + v19 = this[12]; + if ( ((unsigned int)v29 & HIDWORD(v29)) != -1 ) + { + this[4] = v19 + v29; + this[5] = v19 + v30; + this[6] = v19 + v31; + } + if ( ((unsigned int)v32 & HIDWORD(v32)) != -1 ) + { + v20 = v19 + v34; + v21 = v32 + v19; + this[9] = v20; + this[7] = v21; + this[8] = v33 + v21; + } + std::stringbuf::_M_sync(v25, (_DWORD *)a3[12], 0, 0); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)v28; + return result; +} +// 4C3A77: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C384A: variable 'v23' is possibly undefined +// 4C39C0: variable 'v24' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); + +//----- (004C3B80) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int *a2, + int a3, + int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + int v12; // eax + unsigned __int8 *v13; // edx + int v14; // eax + unsigned int v15; // eax + int v17; // [esp+8h] [ebp-30h] + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::ios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + v12 = a2[9]; + *((_DWORD *)this + 3) = &off_4F6414; + *((_DWORD *)this + 2) = v12; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + *((_DWORD *)this + 9) = 0; + std::locale::locale((_DWORD *)this + 10); + *((_DWORD *)this + 3) = &off_4F5918; + v13 = *(unsigned __int8 **)a3; + v14 = *(_DWORD *)(a3 + 4); + *((_DWORD *)this + 11) = 0; + LOBYTE(v17) = 0; + *((_DWORD *)this + 12) = this + 56; + std::string::_M_construct((void **)this + 12, v13, (size_t)&v13[v14], v17); + *((_DWORD *)this + 11) = a4; + v15 = 0; + if ( (a4 & 3) != 0 ) + v15 = *((_DWORD *)this + 13); + std::stringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v15); + return std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); +} +// 4C3C71: variable 'v17' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C3D30) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2, + int a3) +{ + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // eax + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = a2[4]; + this[2] = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); + *v6 = a2[5]; + std::ios::init((int)v6, 0); + v7 = a2[1]; + v8 = a2[6]; + *this = v7; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + this[2] = a2[7]; + v9 = *a2; + v10 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; + v11 = a2[9]; + this[3] = (int)&off_4F6414; + this[2] = v11; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + *((_BYTE *)this + 56) = 0; + this[13] = 0; + this[11] = a3; + this[12] = (int)(this + 14); + v12 = *this; + this[3] = (int)&off_4F5918; + return std::ios::init((int)this + *(_DWORD *)(v12 - 12), (int)(this + 3)); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C3E90) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // eax + int v12; // ecx + + v3 = a2[2]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[4]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[5]; + std::ios::init((int)v5, 0); + v6 = a2[1]; + v7 = a2[6]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = a2[7]; + v8 = *a2; + v9 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + v10 = a2[9]; + this[3] = (int)&off_4F6414; + this[2] = v10; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + *((_BYTE *)this + 56) = 0; + this[12] = (int)(this + 14); + v11 = *this; + this[13] = 0; + this[3] = (int)&off_4F5918; + v12 = *(_DWORD *)(v11 - 12); + this[11] = 24; + return std::ios::init((int)this + v12, (int)(this + 3)); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C3FF0) -------------------------------------------------------- +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[12]; + *a1 = &off_4F5B44; + a1[18] = off_4F5B6C; + a1[2] = off_4F5B58; + a1[3] = &off_4F5918; + if ( v2 != a1 + 14 ) + operator delete(v2); + a1[3] = &off_4F6414; + std::locale::~locale((_DWORD **)a1 + 10); + a1[2] = &unk_4F0DEC; + *a1 = &unk_4F0DC4; + a1[1] = 0; + a1[18] = &off_4F6E10; + std::ios_base::~ios_base((int)(a1 + 18)); + operator delete(a1); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004C4070) -------------------------------------------------------- +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 48); + *(_DWORD *)a1 = &off_4F5B44; + *(_DWORD *)(a1 + 72) = off_4F5B6C; + *(_DWORD *)(a1 + 8) = off_4F5B58; + *(_DWORD *)(a1 + 12) = &off_4F5918; + if ( v2 != (void *)(a1 + 56) ) + operator delete(v2); + *(_DWORD *)(a1 + 12) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 40)); + *(_DWORD *)(a1 + 8) = &unk_4F0DEC; + *(_DWORD *)a1 = &unk_4F0DC4; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 72) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 72); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004C40E0) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( + char *this, + int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // eax + int v6; // eax + int v7; // eax + int result; // eax + + v3 = *a2; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; + v4 = a2[9]; + *((_DWORD *)this + 3) = &off_4F5918; + *((_DWORD *)this + 2) = v4; + if ( *((char **)this + 12) != this + 56 ) + operator delete(*((void **)this + 12)); + *((_DWORD *)this + 3) = &off_4F6414; + std::locale::~locale((_DWORD **)this + 10); + v5 = a2[1]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; + *((_DWORD *)this + 2) = a2[7]; + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; + v7 = a2[2]; + *(_DWORD *)this = v7; + result = *(_DWORD *)(v7 - 12); + *(_DWORD *)&this[result] = a2[3]; + *((_DWORD *)this + 1) = 0; + return result; +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C4170) -------------------------------------------------------- +char *__thiscall std::basic_stringstream,std::allocator>::operator=( + char *this, + int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + char *v11; // eax + const void *v12; // edx + int v13; // esi + _DWORD *v14; // edx + int v15; // eax + int v16; // ebx + int v17; // edi + __int64 v18; // rcx + int v19; // edi + int v20; // eax + int v21; // edi + int v23; // ecx + std::ios_base *v24; // [esp+4h] [ebp-74h] + const std::locale *v25; // [esp+4h] [ebp-74h] + const std::locale *v26; // [esp+4h] [ebp-74h] + unsigned int v27; // [esp+10h] [ebp-68h] + int v28; // [esp+14h] [ebp-64h] + _DWORD *v30; // [esp+20h] [ebp-58h] BYREF + _DWORD *v31; // [esp+24h] [ebp-54h] BYREF + _DWORD *v32; // [esp+28h] [ebp-50h] + __int64 v33; // [esp+30h] [ebp-48h] + int v34; // [esp+38h] [ebp-40h] + int v35; // [esp+3Ch] [ebp-3Ch] + __int64 v36; // [esp+40h] [ebp-38h] + __int64 v37; // [esp+48h] [ebp-30h] + __int64 v38; // [esp+50h] [ebp-28h] + int v39; // [esp+58h] [ebp-20h] + int v40; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v24); + std::ios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v33 = -1LL; + *(_DWORD *)(v2 + 112) = v5; + *(_DWORD *)(v3 + 112) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 116); + LOBYTE(v5) = *(_BYTE *)(v2 + 116); + v34 = -1; + *(_BYTE *)(v2 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 117); + *(_BYTE *)(v2 + 117) = v4; + *(_BYTE *)(v3 + 117) = v5; + v6 = *(_DWORD *)(a2 + 4); + v35 = -1; + v7 = *((_DWORD *)this + 1); + LODWORD(v36) = -1; + *((_DWORD *)this + 1) = v6; + *(_DWORD *)(a2 + 4) = v7; + v32 = this + 12; + HIDWORD(v36) = -1; + v37 = -1LL; + v38 = -1LL; + v39 = -1; + v40 = -1; + v8 = *(_DWORD *)(a2 + 48); + v9 = *(_DWORD *)(a2 + 16); + if ( !v9 ) + { + v10 = *(_DWORD *)(a2 + 28); + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v33 = (int)(v9 - v8); + v34 = *(_DWORD *)(a2 + 20) - v8; + v35 = v34 >> 31; + v9 = *(_DWORD *)(a2 + 24); + v36 = (int)(v9 - v8); + v10 = *(_DWORD *)(a2 + 28); + if ( v10 ) + { +LABEL_3: + v37 = v10 - v8; + v27 = *(_DWORD *)(a2 + 32); + v38 = (int)(v27 - v10); + v39 = *(_DWORD *)(a2 + 36) - v8; + v40 = v39 >> 31; + if ( v9 < v27 ) + v9 = v27; + } + if ( v9 ) + *(_DWORD *)(a2 + 52) = v9 - v8; +LABEL_7: + std::streambuf::operator=((volatile signed __int32 **)this + 3, a2 + 12); + std::locale::locale((volatile signed __int32 **)&v31, (volatile signed __int32 **)(a2 + 40), v25); + std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)this + 10, v26); + std::locale::operator=((volatile signed __int32 **)this + 10, (volatile signed __int32 **)&v31); + std::locale::~locale(&v30); + std::locale::~locale(&v31); + *((_DWORD *)this + 11) = *(_DWORD *)(a2 + 44); + v11 = (char *)*((_DWORD *)this + 12); + v12 = *(const void **)(a2 + 48); + if ( v12 == (const void *)(a2 + 56) ) + { + v23 = *(_DWORD *)(a2 + 52); + if ( v23 ) + { + if ( v23 == 1 ) + *v11 = *(_BYTE *)(a2 + 56); + else + memcpy(v11, v12, *(_DWORD *)(a2 + 52)); + v23 = *(_DWORD *)(a2 + 52); + v11 = (char *)*((_DWORD *)this + 12); + } + *((_DWORD *)this + 13) = v23; + v11[v23] = 0; + v11 = *(char **)(a2 + 48); + } + else + { + v28 = *(_DWORD *)(a2 + 52); + if ( v11 == this + 56 ) + { + *((_DWORD *)this + 12) = v12; + *((_DWORD *)this + 13) = v28; + *((_DWORD *)this + 14) = *(_DWORD *)(a2 + 56); + } + else + { + v13 = *((_DWORD *)this + 14); + *((_DWORD *)this + 12) = v12; + *((_DWORD *)this + 13) = v28; + *((_DWORD *)this + 14) = *(_DWORD *)(a2 + 56); + if ( v11 ) + { + *(_DWORD *)(a2 + 48) = v11; + *(_DWORD *)(a2 + 56) = v13; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 48) = a2 + 56; + v11 = (char *)(a2 + 56); + } +LABEL_11: + *(_DWORD *)(a2 + 52) = 0; + *v11 = 0; + std::stringbuf::_M_sync((_DWORD *)(a2 + 12), *(_DWORD **)(a2 + 48), 0, 0); + v14 = v32; + v15 = v32[9]; + if ( ((unsigned int)v33 & HIDWORD(v33)) != -1 ) + { + v16 = v36; + v17 = v34; + v32[1] = v15 + v33; + v14[2] = v15 + v17; + v14[3] = v15 + v16; + } + if ( ((unsigned int)v37 & HIDWORD(v37)) != -1 ) + { + v18 = v38; + v19 = v15 + v39; + v20 = v37 + v15; + v14[6] = v19; + v14[4] = v20; + if ( v18 > 0x7FFFFFFF ) + { + v21 = v20 + 0x7FFFFFFF; + do + { + v20 = v21; + v18 -= 0x7FFFFFFFLL; + v21 += 0x7FFFFFFF; + } + while ( v18 > 0x7FFFFFFF ); + } + v14[5] = v18 + v20; + } + return this; +} +// 4C4190: variable 'v24' is possibly undefined +// 4C42EE: variable 'v25' is possibly undefined +// 4C4302: variable 'v26' is possibly undefined + +//----- (004C4500) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::str( + int this, + int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 12); + std::wstring::_M_replace(this + 48, 0, *(_DWORD *)(this + 52), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 44) & 3) != 0 ) + v4 = *(_DWORD *)(this + 52); + return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 48), 0, v4); +} + +//----- (004C4570) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::swap( + _DWORD *this, + _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return std::wstringbuf::swap(this + 3, (int)(a2 + 3)); +} +// 4C4594: variable 'v9' is possibly undefined + +//----- (004C4610) -------------------------------------------------------- +char *__thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + int v6; // esi + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + unsigned int v11; // esi + int v12; // eax + int *v13; // eax + int v14; // eax + int v15; // edx + int v16; // ecx + int v17; // edx + char *result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + _DWORD *v21; // [esp+1Ch] [ebp-6Ch] + _DWORD *v22; // [esp+20h] [ebp-68h] + _DWORD *v23; // [esp+28h] [ebp-60h] + int v24; // [esp+40h] [ebp-48h] + int v25; // [esp+44h] [ebp-44h] + int v26; // [esp+48h] [ebp-40h] + int v27; // [esp+50h] [ebp-38h] + int v28; // [esp+58h] [ebp-30h] + int v29; // [esp+5Ch] [ebp-2Ch] + __int64 v30; // [esp+60h] [ebp-28h] + int v31; // [esp+68h] [ebp-20h] + + v22 = this + 72; + std::ios_base::ios_base((_DWORD *)this + 18); + v3 = a2[1]; + *(_DWORD *)this = &unk_4F0E14; + *((_DWORD *)this + 46) = 0; + *((_DWORD *)this + 1) = v3; + v4 = *a2; + *((_WORD *)this + 94) = 0; + v5 = *(_DWORD *)(v4 - 12); + this[190] = 0; + *((_DWORD *)this + 48) = 0; + v6 = (int)a2 + v5; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 51) = 0; + *((_DWORD *)this + 18) = &unk_4F0E28; + std::ios_base::_M_move((int)v22, (std::ios_base *)v6, v19); + std::wios::_M_cache_locale(v22, (int)(this + 180)); + v7 = *(_DWORD *)(v6 + 112); + *(_DWORD *)(v6 + 112) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 46) = v7; + v21 = a2 + 3; + v8 = a2[12]; + *((_WORD *)this + 94) = *(_WORD *)(v6 + 116); + v24 = -1; + this[190] = *(_BYTE *)(v6 + 118); + v23 = this + 12; + v9 = a2[4]; + a2[1] = 0; + v25 = -1; + *(_DWORD *)this = &off_4F5B80; + *((_DWORD *)this + 18) = off_4F5BA8; + *((_DWORD *)this + 2) = off_4F5B94; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + LODWORD(v30) = -1; + v31 = -1; + if ( !v9 ) + { + v10 = a2[7]; + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v9 - v8) >> 1; + v25 = (int)(v9 - v8) >> 31; + v26 = (a2[5] - v8) >> 1; + v9 = a2[6]; + v27 = (int)(v9 - v8) >> 1; + v10 = a2[7]; + if ( v10 ) + { +LABEL_3: + v11 = a2[8]; + v28 = (v10 - v8) >> 1; + v29 = (v10 - v8) >> 31; + v30 = (int)(v11 - v10) >> 1; + v31 = (a2[9] - v8) >> 1; + if ( v9 < v11 ) + v9 = a2[8]; + } + if ( v9 ) + a2[13] = (int)(v9 - v8) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v23, (int)v21, v20); + *((_DWORD *)this + 3) = &off_4F5958; + v12 = a2[11]; + *((_DWORD *)this + 12) = this + 56; + *((_DWORD *)this + 11) = v12; + v13 = (int *)a2[12]; + if ( v13 == a2 + 14 ) + { + wmemcpy((wchar_t *)this + 28, (const wchar_t *)a2 + 28, 8u); + } + else + { + *((_DWORD *)this + 12) = v13; + *((_DWORD *)this + 14) = a2[14]; + } + v14 = a2[13]; + a2[12] = (int)(a2 + 14); + a2[13] = 0; + *((_DWORD *)this + 13) = v14; + *((_WORD *)a2 + 28) = 0; + v15 = *((_DWORD *)this + 12); + if ( (v24 & v25) != -1 ) + { + *((_DWORD *)this + 4) = v15 + 2 * v24; + *((_DWORD *)this + 5) = v15 + 2 * v26; + *((_DWORD *)this + 6) = v15 + 2 * v27; + } + if ( (v28 & v29) != -1 ) + { + v16 = v15 + 2 * v31; + v17 = v15 + 2 * v28; + *((_DWORD *)this + 9) = v16; + *((_DWORD *)this + 7) = v17; + *((_DWORD *)this + 8) = 2 * v30 + v17; + } + std::wstringbuf::_M_sync(v21, (_DWORD *)a2[12], 0, 0); + result = this + 12; + *((_DWORD *)this + 48) = v23; + return result; +} +// 4C48B6: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C4690: variable 'v19' is possibly undefined +// 4C47F8: variable 'v20' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); + +//----- (004C49B0) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int a2, + int a3) +{ + int v3; // esi + wchar_t *v5; // edx + int v6; // eax + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 72); + std::ios_base::ios_base((_DWORD *)this + 18); + this[190] = 0; + *((_DWORD *)this + 46) = 0; + *((_WORD *)this + 94) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 51) = 0; + *(_DWORD *)this = &unk_4F0E14; + *((_DWORD *)this + 18) = &unk_4F0E28; + *((_DWORD *)this + 1) = 0; + std::wios::init(v3, 0); + *((_DWORD *)this + 2) = &unk_4F0E78; + *((_DWORD *)this + 18) = &unk_4F0E8C; + std::wios::init(v3, 0); + *(_DWORD *)this = &off_4F5B80; + *((_DWORD *)this + 18) = off_4F5BA8; + *((_DWORD *)this + 2) = off_4F5B94; + *((_DWORD *)this + 3) = &off_4F6454; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + *((_DWORD *)this + 9) = 0; + std::locale::locale((_DWORD *)this + 10); + *((_DWORD *)this + 3) = &off_4F5958; + v5 = *(wchar_t **)a2; + v6 = *(_DWORD *)(a2 + 4); + *((_DWORD *)this + 11) = 0; + LOBYTE(v9) = 0; + *((_DWORD *)this + 12) = this + 56; + std::wstring::_M_construct((wchar_t **)this + 12, v5, (int)&v5[v6], v9); + *((_DWORD *)this + 11) = a3; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 13); + std::wstringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v7); + return std::wios::init(v3, (int)(this + 12)); +} +// 4C4AD4: variable 'v9' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C4B80) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + _DWORD *this, + int a2) +{ + int v2; // esi + + v2 = (int)(this + 18); + std::ios_base::ios_base(this + 18); + *((_BYTE *)this + 190) = 0; + this[46] = 0; + *((_WORD *)this + 94) = 0; + this[48] = 0; + this[49] = 0; + this[50] = 0; + this[51] = 0; + *this = &unk_4F0E14; + this[18] = &unk_4F0E28; + this[1] = 0; + std::wios::init(v2, 0); + this[2] = &unk_4F0E78; + this[18] = &unk_4F0E8C; + std::wios::init(v2, 0); + *this = &off_4F5B80; + this[18] = off_4F5BA8; + this[2] = off_4F5B94; + this[3] = &off_4F6454; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + this[3] = &off_4F5958; + this[11] = a2; + this[12] = this + 14; + this[13] = 0; + *((_WORD *)this + 28) = 0; + return std::wios::init(v2, (int)(this + 3)); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C4CF0) -------------------------------------------------------- +BOOL __fastcall std::basic_stringstream,std::allocator>::basic_stringstream( + int a1) +{ + int v1; // esi + + v1 = a1 + 72; + std::ios_base::ios_base((_DWORD *)(a1 + 72)); + *(_BYTE *)(a1 + 190) = 0; + *(_DWORD *)(a1 + 184) = 0; + *(_WORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 200) = 0; + *(_DWORD *)(a1 + 204) = 0; + *(_DWORD *)a1 = &unk_4F0E14; + *(_DWORD *)(a1 + 72) = &unk_4F0E28; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)(a1 + 8) = &unk_4F0E78; + *(_DWORD *)(a1 + 72) = &unk_4F0E8C; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_4F5B80; + *(_DWORD *)(a1 + 72) = off_4F5BA8; + *(_DWORD *)(a1 + 8) = off_4F5B94; + *(_DWORD *)(a1 + 12) = &off_4F6454; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + *(_DWORD *)(a1 + 36) = 0; + std::locale::locale((_DWORD *)(a1 + 40)); + *(_DWORD *)(a1 + 48) = a1 + 56; + *(_DWORD *)(a1 + 12) = &off_4F5958; + *(_DWORD *)(a1 + 44) = 24; + *(_DWORD *)(a1 + 52) = 0; + *(_WORD *)(a1 + 56) = 0; + return std::wios::init(v1, a1 + 12); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C4E60) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int *a2, + _DWORD *a3) +{ + int v4; // eax + int v5; // ecx + int v6; // edx + int v7; // esi + int v8; // edx + char v9; // al + int v10; // edx + int v11; // eax + int v12; // eax + int v13; // edx + int v14; // eax + int v15; // edx + unsigned int v16; // eax + int v17; // ecx + int v18; // eax + const wchar_t *v19; // edi + _DWORD *v20; // eax + int v21; // eax + int v22; // edx + int v23; // ecx + int v24; // edx + int result; // eax + std::ios_base *v26; // [esp+4h] [ebp-84h] + const std::locale *v27; // [esp+4h] [ebp-84h] + _DWORD *v28; // [esp+1Ch] [ebp-6Ch] + std::ios_base *v29; // [esp+20h] [ebp-68h] + int v30; // [esp+20h] [ebp-68h] + _DWORD *v31; // [esp+28h] [ebp-60h] + int v32; // [esp+40h] [ebp-48h] + int v33; // [esp+44h] [ebp-44h] + int v34; // [esp+48h] [ebp-40h] + int v35; // [esp+50h] [ebp-38h] + int v36; // [esp+58h] [ebp-30h] + int v37; // [esp+5Ch] [ebp-2Ch] + int v38; // [esp+60h] [ebp-28h] + int v39; // [esp+68h] [ebp-20h] + + v4 = a2[2]; + v5 = a2[3]; + v6 = *(_DWORD *)(v4 - 12); + *(_DWORD *)this = v4; + *(_DWORD *)&this[v6] = v5; + *((_DWORD *)this + 1) = a3[1]; + v29 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + v7 = (int)&this[*(_DWORD *)(v4 - 12)]; + std::ios_base::_M_move(v7, v29, v26); + std::wios::_M_cache_locale((_DWORD *)v7, v7 + 108); + *(_DWORD *)(v7 + 120) = 0; + v8 = *((_DWORD *)v29 + 28); + *((_DWORD *)v29 + 28) = 0; + *(_DWORD *)(v7 + 112) = v8; + v9 = *((_BYTE *)v29 + 118); + *(_WORD *)(v7 + 116) = *((_WORD *)v29 + 58); + v10 = a2[5]; + *(_BYTE *)(v7 + 118) = v9; + v11 = a2[4]; + a3[1] = 0; + *((_DWORD *)this + 2) = v11; + v28 = a3 + 3; + *(_DWORD *)&this[*(_DWORD *)(v11 - 12) + 8] = v10; + v12 = a2[1]; + v13 = a2[6]; + *(_DWORD *)this = v12; + *(_DWORD *)&this[*(_DWORD *)(v12 - 12)] = v13; + *((_DWORD *)this + 2) = a2[7]; + v14 = *a2; + v15 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v14 - 12)] = v15; + *((_DWORD *)this + 2) = a2[9]; + v31 = this + 12; + v32 = -1; + v30 = a3[12]; + v16 = a3[4]; + v33 = -1; + v34 = -1; + v35 = -1; + v36 = -1; + v37 = -1; + v38 = -1; + v39 = -1; + if ( !v16 ) + { + v17 = a3[7]; + if ( !v17 ) + goto LABEL_7; + goto LABEL_3; + } + v32 = (int)(v16 - v30) >> 1; + v33 = (int)(v16 - v30) >> 31; + v34 = (a3[5] - v30) >> 1; + v16 = a3[6]; + v35 = (int)(v16 - v30) >> 1; + v17 = a3[7]; + if ( v17 ) + { +LABEL_3: + v36 = (v17 - v30) >> 1; + v37 = (v17 - v30) >> 31; + v38 = (a3[8] - v17) >> 1; + v39 = (a3[9] - v30) >> 1; + if ( v16 < a3[8] ) + v16 = a3[8]; + } + if ( v16 ) + a3[13] = (int)(v16 - v30) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v31, (int)v28, v27); + *((_DWORD *)this + 3) = &off_4F5958; + v18 = a3[11]; + *((_DWORD *)this + 12) = this + 56; + v19 = (const wchar_t *)(a3 + 14); + *((_DWORD *)this + 11) = v18; + v20 = (_DWORD *)a3[12]; + if ( v20 == a3 + 14 ) + { + wmemcpy((wchar_t *)this + 28, v19, 8u); + } + else + { + *((_DWORD *)this + 12) = v20; + *((_DWORD *)this + 14) = a3[14]; + } + v21 = a3[13]; + a3[12] = v19; + a3[13] = 0; + *((_DWORD *)this + 13) = v21; + *((_WORD *)a3 + 28) = 0; + v22 = *((_DWORD *)this + 12); + if ( (v32 & v33) != -1 ) + { + *((_DWORD *)this + 4) = v22 + 2 * v32; + *((_DWORD *)this + 5) = v22 + 2 * v34; + *((_DWORD *)this + 6) = v22 + 2 * v35; + } + if ( (v36 & v37) != -1 ) + { + v23 = v22 + 2 * v39; + v24 = v22 + 2 * v36; + *((_DWORD *)this + 9) = v23; + *((_DWORD *)this + 7) = v24; + *((_DWORD *)this + 8) = 2 * v38 + v24; + } + std::wstringbuf::_M_sync(v28, (_DWORD *)a3[12], 0, 0); + result = *(_DWORD *)(*(_DWORD *)this - 12); + *(_DWORD *)&this[result + 120] = v31; + return result; +} +// 4C50E7: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C4E9E: variable 'v26' is possibly undefined +// 4C5029: variable 'v27' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); + +//----- (004C51E0) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + char *this, + int *a2, + int a3, + int a4) +{ + int v5; // eax + int v6; // eax + char *v7; // ecx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // edx + int v12; // eax + wchar_t *v13; // edx + int v14; // eax + unsigned int v15; // eax + int v17; // [esp+8h] [ebp-30h] + + v5 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[3]; + *((_DWORD *)this + 1) = 0; + std::wios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + v7 = &this[*(_DWORD *)(v6 - 12) + 8]; + *(_DWORD *)v7 = a2[5]; + std::wios::init((int)v7, 0); + v8 = a2[1]; + v9 = a2[6]; + *(_DWORD *)this = v8; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v9; + *((_DWORD *)this + 2) = a2[7]; + v10 = *a2; + v11 = a2[8]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v10 - 12)] = v11; + v12 = a2[9]; + *((_DWORD *)this + 3) = &off_4F6454; + *((_DWORD *)this + 2) = v12; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + *((_DWORD *)this + 9) = 0; + std::locale::locale((_DWORD *)this + 10); + *((_DWORD *)this + 3) = &off_4F5958; + v13 = *(wchar_t **)a3; + v14 = *(_DWORD *)(a3 + 4); + *((_DWORD *)this + 11) = 0; + LOBYTE(v17) = 0; + *((_DWORD *)this + 12) = this + 56; + std::wstring::_M_construct((wchar_t **)this + 12, v13, (int)&v13[v14], v17); + *((_DWORD *)this + 11) = a4; + v15 = 0; + if ( (a4 & 3) != 0 ) + v15 = *((_DWORD *)this + 13); + std::wstringbuf::_M_sync((_DWORD *)this + 3, *((_DWORD **)this + 12), 0, v15); + return std::wios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 12)); +} +// 4C52D4: variable 'v17' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C5390) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2, + int a3) +{ + int v4; // eax + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + + v4 = a2[2]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = a2[4]; + this[2] = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12) + 8); + *v6 = a2[5]; + std::wios::init((int)v6, 0); + v7 = a2[1]; + v8 = a2[6]; + *this = v7; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + this[2] = a2[7]; + v9 = *a2; + v10 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v9 - 12)) = v10; + v11 = a2[9]; + this[3] = (int)&off_4F6454; + this[2] = v11; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + this[13] = 0; + this[3] = (int)&off_4F5958; + this[11] = a3; + this[12] = (int)(this + 14); + *((_WORD *)this + 28) = 0; + return std::wios::init((int)this + *(_DWORD *)(*this - 12), (int)(this + 3)); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C54F0) -------------------------------------------------------- +BOOL __thiscall std::basic_stringstream,std::allocator>::basic_stringstream( + int *this, + int *a2) +{ + int v3; // eax + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // edx + int v10; // eax + int v11; // eax + int v12; // ecx + + v3 = a2[2]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v3 - 12), 0); + v4 = a2[4]; + this[2] = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12) + 8); + *v5 = a2[5]; + std::wios::init((int)v5, 0); + v6 = a2[1]; + v7 = a2[6]; + *this = v6; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = a2[7]; + v8 = *a2; + v9 = a2[8]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v9; + v10 = a2[9]; + this[3] = (int)&off_4F6454; + this[2] = v10; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + this[9] = 0; + std::locale::locale(this + 10); + this[13] = 0; + this[12] = (int)(this + 14); + *((_WORD *)this + 28) = 0; + v11 = *this; + this[3] = (int)&off_4F5958; + v12 = *(_DWORD *)(v11 - 12); + this[11] = 24; + return std::wios::init((int)this + v12, (int)(this + 3)); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C5650) -------------------------------------------------------- +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[12]; + *a1 = &off_4F5B80; + a1[18] = off_4F5BA8; + a1[2] = off_4F5B94; + a1[3] = &off_4F5958; + if ( v2 != a1 + 14 ) + operator delete(v2); + a1[3] = &off_4F6454; + std::locale::~locale((_DWORD **)a1 + 10); + a1[2] = &unk_4F0E78; + *a1 = &unk_4F0E14; + a1[1] = 0; + a1[18] = &off_4F6E20; + std::ios_base::~ios_base((int)(a1 + 18)); + operator delete(a1); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004C56D0) -------------------------------------------------------- +void __fastcall std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 48); + *(_DWORD *)a1 = &off_4F5B80; + *(_DWORD *)(a1 + 72) = off_4F5BA8; + *(_DWORD *)(a1 + 8) = off_4F5B94; + *(_DWORD *)(a1 + 12) = &off_4F5958; + if ( v2 != (void *)(a1 + 56) ) + operator delete(v2); + *(_DWORD *)(a1 + 12) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 40)); + *(_DWORD *)(a1 + 8) = &unk_4F0E78; + *(_DWORD *)a1 = &unk_4F0E14; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 72) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 72); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004C5740) -------------------------------------------------------- +int __thiscall std::basic_stringstream,std::allocator>::~basic_stringstream( + char *this, + int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // eax + int v6; // eax + int v7; // eax + int result; // eax + + v3 = *a2; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[8]; + v4 = a2[9]; + *((_DWORD *)this + 3) = &off_4F5958; + *((_DWORD *)this + 2) = v4; + if ( *((char **)this + 12) != this + 56 ) + operator delete(*((void **)this + 12)); + *((_DWORD *)this + 3) = &off_4F6454; + std::locale::~locale((_DWORD **)this + 10); + v5 = a2[1]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = a2[6]; + *((_DWORD *)this + 2) = a2[7]; + v6 = a2[4]; + *((_DWORD *)this + 2) = v6; + *(_DWORD *)&this[*(_DWORD *)(v6 - 12) + 8] = a2[5]; + v7 = a2[2]; + *(_DWORD *)this = v7; + result = *(_DWORD *)(v7 - 12); + *(_DWORD *)&this[result] = a2[3]; + *((_DWORD *)this + 1) = 0; + return result; +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C57D0) -------------------------------------------------------- +char *__thiscall std::basic_stringstream,std::allocator>::operator=( + char *this, + int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + unsigned int v11; // esi + int v12; // ecx + wchar_t *v13; // eax + wchar_t *v14; // edx + int v15; // esi + _DWORD *v16; // ecx + int v17; // ebx + int v18; // edx + int v19; // edi + __int64 v20; // rax + int v21; // edi + int v22; // ebx + int v23; // edi + int v25; // eax + int v26; // ecx + std::ios_base *v27; // [esp+4h] [ebp-74h] + const std::locale *v28; // [esp+4h] [ebp-74h] + const std::locale *v29; // [esp+4h] [ebp-74h] + int v30; // [esp+14h] [ebp-64h] + _DWORD *v32; // [esp+20h] [ebp-58h] BYREF + _DWORD *v33; // [esp+24h] [ebp-54h] BYREF + _DWORD *v34; // [esp+28h] [ebp-50h] + int v35; // [esp+30h] [ebp-48h] + int v36; // [esp+34h] [ebp-44h] + int v37; // [esp+38h] [ebp-40h] + int v38; // [esp+3Ch] [ebp-3Ch] + __int64 v39; // [esp+40h] [ebp-38h] + int v40; // [esp+48h] [ebp-30h] + int v41; // [esp+4Ch] [ebp-2Ch] + __int64 v42; // [esp+50h] [ebp-28h] + int v43; // [esp+58h] [ebp-20h] + int v44; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v27); + std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v35 = -1; + v36 = -1; + *(_DWORD *)(v2 + 112) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_DWORD *)(v3 + 112) = v4; + LOWORD(v4) = *(_WORD *)(v2 + 116); + *(_WORD *)(v2 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 118); + *(_WORD *)(v3 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 118); + v37 = -1; + *(_BYTE *)(v2 + 118) = v4; + *(_BYTE *)(v3 + 118) = v5; + v6 = *(_DWORD *)(a2 + 4); + v38 = -1; + v7 = *((_DWORD *)this + 1); + LODWORD(v39) = -1; + *((_DWORD *)this + 1) = v6; + *(_DWORD *)(a2 + 4) = v7; + v34 = this + 12; + HIDWORD(v39) = -1; + v40 = -1; + v41 = -1; + v42 = -1LL; + v43 = -1; + v44 = -1; + v8 = *(_DWORD *)(a2 + 48); + v9 = *(_DWORD *)(a2 + 16); + if ( !v9 ) + { + v10 = *(_DWORD *)(a2 + 28); + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v35 = (int)(v9 - v8) >> 1; + v36 = (int)(v9 - v8) >> 31; + v37 = (*(_DWORD *)(a2 + 20) - v8) >> 1; + v38 = v37 >> 31; + v9 = *(_DWORD *)(a2 + 24); + v39 = (int)(v9 - v8) >> 1; + v10 = *(_DWORD *)(a2 + 28); + if ( v10 ) + { +LABEL_3: + v40 = (v10 - v8) >> 1; + v41 = (v10 - v8) >> 31; + v11 = *(_DWORD *)(a2 + 32); + v42 = (int)(v11 - v10) >> 1; + v43 = (*(_DWORD *)(a2 + 36) - v8) >> 1; + v44 = v43 >> 31; + if ( v9 < v11 ) + v9 = v11; + } + if ( v9 ) + *(_DWORD *)(a2 + 52) = (int)(v9 - v8) >> 1; +LABEL_7: + std::wstreambuf::operator=((volatile signed __int32 **)this + 3, a2 + 12); + std::locale::locale((volatile signed __int32 **)&v33, (volatile signed __int32 **)(a2 + 40), v28); + std::locale::locale((volatile signed __int32 **)&v32, (volatile signed __int32 **)this + 10, v29); + std::locale::operator=((volatile signed __int32 **)this + 10, (volatile signed __int32 **)&v33); + std::locale::~locale(&v32); + std::locale::~locale(&v33); + v12 = *(_DWORD *)(a2 + 48); + *((_DWORD *)this + 11) = *(_DWORD *)(a2 + 44); + v13 = (wchar_t *)*((_DWORD *)this + 12); + v14 = (wchar_t *)(a2 + 56); + if ( v12 == a2 + 56 ) + { + v26 = *(_DWORD *)(a2 + 52); + if ( v26 ) + { + if ( v26 == 1 ) + { + *v13 = *(_WORD *)(a2 + 56); + } + else + { + wmemcpy(v13, (const wchar_t *)(a2 + 56), *(_DWORD *)(a2 + 52)); + v26 = *(_DWORD *)(a2 + 52); + v14 = *(wchar_t **)(a2 + 48); + v13 = (wchar_t *)*((_DWORD *)this + 12); + } + } + *((_DWORD *)this + 13) = v26; + v13[v26] = 0; + v13 = v14; + } + else + { + v30 = *(_DWORD *)(a2 + 52); + if ( v13 == (wchar_t *)(this + 56) ) + { + *((_DWORD *)this + 13) = v30; + v25 = *(_DWORD *)(a2 + 56); + *((_DWORD *)this + 12) = v12; + *((_DWORD *)this + 14) = v25; + } + else + { + v15 = *((_DWORD *)this + 14); + *((_DWORD *)this + 12) = v12; + *((_DWORD *)this + 13) = v30; + *((_DWORD *)this + 14) = *(_DWORD *)(a2 + 56); + if ( v13 ) + { + *(_DWORD *)(a2 + 48) = v13; + *(_DWORD *)(a2 + 56) = v15; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 48) = v14; + v13 = (wchar_t *)(a2 + 56); + } +LABEL_11: + *(_DWORD *)(a2 + 52) = 0; + *v13 = 0; + std::wstringbuf::_M_sync((_DWORD *)(a2 + 12), v13, 0, 0); + v16 = v34; + v17 = v34[9]; + if ( (v35 & v36) != -1 ) + { + v18 = v39; + v19 = v37; + v34[1] = v17 + 2 * v35; + v16[2] = v17 + 2 * v19; + v16[3] = v17 + 2 * v18; + } + if ( (v41 & v40) != -1 ) + { + v20 = v42; + v21 = v17 + 2 * v43; + v22 = v17 + 2 * v40; + v16[6] = v21; + v16[4] = v22; + if ( v20 > 0x7FFFFFFF ) + { + v23 = v22 - 2; + do + { + v22 = v23; + v20 -= 0x7FFFFFFFLL; + v23 -= 2; + } + while ( v20 > 0x7FFFFFFF ); + } + v16[5] = v22 + 2 * v20; + } + return this; +} +// 4C57F0: variable 'v27' is possibly undefined +// 4C595A: variable 'v28' is possibly undefined +// 4C596E: variable 'v29' is possibly undefined + +//----- (004C5B60) -------------------------------------------------------- +int __thiscall std::istringstream::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 8); + std::string::_M_replace((unsigned int *)(this + 44), 0, *(_DWORD *)(this + 48), *(char **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 40) & 3) != 0 ) + v4 = *(_DWORD *)(this + 48); + return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); +} + +//----- (004C5BD0) -------------------------------------------------------- +int __thiscall std::istringstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + char v6; // dl + char v7; // dl + int v8; // eax + std::ios_base *v10; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v10); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + v8 = this[1]; + *((_BYTE *)v4 + 117) = v7; + this[1] = a2[1]; + a2[1] = v8; + return std::stringbuf::swap(this + 2, (int)(a2 + 2)); +} +// 4C5BF4: variable 'v10' is possibly undefined + +//----- (004C5C70) -------------------------------------------------------- +char *__thiscall std::istringstream::basic_istringstream(_DWORD *this, _DWORD *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + std::ios_base *v6; // esi + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + int v11; // eax + _DWORD *v12; // edx + int v13; // edx + int v14; // eax + int v15; // ecx + int v16; // eax + char *result; // eax + std::ios_base *v18; // [esp+4h] [ebp-84h] + const std::locale *v19; // [esp+4h] [ebp-84h] + _DWORD *v20; // [esp+1Ch] [ebp-6Ch] + _DWORD *v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + __int64 v23; // [esp+40h] [ebp-48h] + int v24; // [esp+48h] [ebp-40h] + int v25; // [esp+50h] [ebp-38h] + __int64 v26; // [esp+58h] [ebp-30h] + int v27; // [esp+60h] [ebp-28h] + int v28; // [esp+68h] [ebp-20h] + + v21 = this + 17; + std::ios_base::ios_base(this + 17); + *this = &unk_4F0EA0; + *((_WORD *)this + 92) = 0; + v3 = a2[1]; + this[45] = 0; + this[1] = v3; + v4 = *a2; + this[47] = 0; + v5 = *(_DWORD *)(v4 - 12); + this[48] = 0; + this[49] = 0; + v6 = (std::ios_base *)((char *)a2 + v5); + this[17] = &unk_4F0EB4; + this[50] = 0; + std::ios_base::_M_move((int)v21, v6, v18); + std::ios::_M_cache_locale(v21, (int)(this + 44)); + v7 = *((_DWORD *)v6 + 28); + *((_DWORD *)v6 + 28) = 0; + this[47] = 0; + this[45] = v7; + v20 = a2 + 2; + *((_WORD *)this + 92) = *((_WORD *)v6 + 58); + v8 = a2[11]; + v22 = this + 2; + v9 = a2[3]; + a2[1] = 0; + v23 = -1LL; + *this = &off_4F5BBC; + this[17] = off_4F5BD0; + v24 = -1; + v25 = -1; + v26 = -1LL; + v27 = -1; + v28 = -1; + if ( !v9 ) + { + v10 = a2[6]; + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v23 = (int)(v9 - v8); + v24 = a2[4] - v8; + v9 = a2[5]; + v25 = v9 - v8; + v10 = a2[6]; + if ( v10 ) + { +LABEL_3: + v26 = v10 - v8; + v27 = a2[7] - v10; + v28 = a2[8] - v8; + if ( v9 < a2[7] ) + v9 = a2[7]; + } + if ( v9 ) + a2[12] = v9 - v8; +LABEL_7: + std::streambuf::basic_streambuf(v22, (int)v20, v19); + this[2] = &off_4F5918; + v11 = a2[10]; + this[11] = this + 13; + this[10] = v11; + v12 = (_DWORD *)a2[11]; + if ( v12 == a2 + 13 ) + { + this[13] = a2[13]; + this[14] = a2[14]; + this[15] = a2[15]; + this[16] = a2[16]; + } + else + { + this[11] = v12; + this[13] = a2[13]; + } + v13 = a2[12]; + a2[11] = a2 + 13; + a2[12] = 0; + this[12] = v13; + *((_BYTE *)a2 + 52) = 0; + v14 = this[11]; + if ( ((unsigned int)v23 & HIDWORD(v23)) != -1 ) + { + this[3] = v14 + v23; + this[4] = v14 + v24; + this[5] = v14 + v25; + } + if ( ((unsigned int)v26 & HIDWORD(v26)) != -1 ) + { + v15 = v14 + v28; + v16 = v26 + v14; + this[8] = v15; + this[6] = v16; + this[7] = v27 + v16; + } + std::stringbuf::_M_sync(v20, (_DWORD *)a2[11], 0, 0); + result = (char *)(this + 2); + this[47] = v22; + return result; +} +// 4C5EDD: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C5CE9: variable 'v18' is possibly undefined +// 4C5E32: variable 'v19' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5BBC: using guessed type int (*off_4F5BBC)(); +// 4F5BD0: using guessed type int (*off_4F5BD0[2])(); + +//----- (004C5FE0) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(char *this, int a2, int a3) +{ + int v3; // esi + int v5; // eax + unsigned __int8 *v6; // edx + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 68); + std::ios_base::ios_base((_DWORD *)this + 17); + *(_DWORD *)this = &unk_4F0EA0; + *((_DWORD *)this + 45) = 0; + *((_WORD *)this + 92) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 17) = &unk_4F0EB4; + *((_DWORD *)this + 1) = 0; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F5BBC; + *((_DWORD *)this + 17) = off_4F5BD0; + *((_DWORD *)this + 2) = &off_4F6414; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + std::locale::locale((_DWORD *)this + 9); + *((_DWORD *)this + 2) = &off_4F5918; + *((_DWORD *)this + 10) = 0; + v5 = *(_DWORD *)(a2 + 4); + v6 = *(unsigned __int8 **)a2; + LOBYTE(v9) = 0; + *((_DWORD *)this + 11) = this + 52; + std::string::_M_construct((void **)this + 11, v6, (size_t)&v6[v5], v9); + *((_DWORD *)this + 10) = a3 | 8; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 12); + std::stringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v7); + return std::ios::init(v3, (int)(this + 8)); +} +// 4C60DA: variable 'v9' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5BBC: using guessed type int (*off_4F5BBC)(); +// 4F5BD0: using guessed type int (*off_4F5BD0[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C6170) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 17); + std::ios_base::ios_base(this + 17); + *this = &unk_4F0EA0; + this[45] = 0; + *((_WORD *)this + 92) = 0; + this[47] = 0; + this[48] = 0; + this[49] = 0; + this[50] = 0; + this[17] = &unk_4F0EB4; + this[1] = 0; + std::ios::init(v2, 0); + *this = &off_4F5BBC; + this[17] = off_4F5BD0; + this[2] = &off_4F6414; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + *((_BYTE *)this + 52) = 0; + this[2] = &off_4F5918; + this[12] = 0; + this[10] = a2 | 8; + this[11] = this + 13; + return std::ios::init(v2, (int)(this + 2)); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5BBC: using guessed type int (*off_4F5BBC)(); +// 4F5BD0: using guessed type int (*off_4F5BD0[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C62A0) -------------------------------------------------------- +BOOL __fastcall std::istringstream::basic_istringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 68; + std::ios_base::ios_base((_DWORD *)(a1 + 68)); + *(_DWORD *)a1 = &unk_4F0EA0; + *(_DWORD *)(a1 + 180) = 0; + *(_WORD *)(a1 + 184) = 0; + *(_DWORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 200) = 0; + *(_DWORD *)(a1 + 68) = &unk_4F0EB4; + *(_DWORD *)(a1 + 4) = 0; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_4F5BBC; + *(_DWORD *)(a1 + 68) = off_4F5BD0; + *(_DWORD *)(a1 + 8) = &off_4F6414; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + std::locale::locale((_DWORD *)(a1 + 36)); + *(_BYTE *)(a1 + 52) = 0; + *(_DWORD *)(a1 + 8) = &off_4F5918; + *(_DWORD *)(a1 + 40) = 8; + *(_DWORD *)(a1 + 44) = a1 + 52; + *(_DWORD *)(a1 + 48) = 0; + return std::ios::init(v1, a1 + 8); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5BBC: using guessed type int (*off_4F5BBC)(); +// 4F5BD0: using guessed type int (*off_4F5BD0[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C63D0) -------------------------------------------------------- +int __thiscall std::istringstream::basic_istringstream(int *this, int *a2, _DWORD *a3) +{ + int v3; // eax + int v4; // esi + int v5; // edx + __int16 v6; // ax + int v7; // edx + int v8; // eax + int v9; // edx + unsigned int v10; // eax + int v11; // ecx + unsigned int v12; // esi + _DWORD *v13; // edx + int v14; // edx + int v15; // eax + int v16; // ecx + int v17; // eax + int result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + std::ios_base *v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + __int64 v24; // [esp+40h] [ebp-48h] + int v25; // [esp+48h] [ebp-40h] + int v26; // [esp+50h] [ebp-38h] + __int64 v27; // [esp+58h] [ebp-30h] + int v28; // [esp+60h] [ebp-28h] + int v29; // [esp+68h] [ebp-20h] + + v3 = a2[1]; + *this = v3; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[2]; + this[1] = a3[1]; + v4 = (int)this + *(_DWORD *)(v3 - 12); + v21 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v4, v21, v19); + std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); + *(_DWORD *)(v4 + 120) = 0; + v5 = *((_DWORD *)v21 + 28); + *((_DWORD *)v21 + 28) = 0; + v6 = *((_WORD *)v21 + 58); + *(_DWORD *)(v4 + 112) = v5; + *(_WORD *)(v4 + 116) = v6; + a3[1] = 0; + v7 = a2[3]; + v8 = *a2; + *this = *a2; + v24 = -1LL; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; + v9 = a3[11]; + v22 = this + 2; + v25 = -1; + v26 = -1; + v27 = -1LL; + v28 = -1; + v29 = -1; + v10 = a3[3]; + if ( !v10 ) + { + v11 = a3[6]; + if ( !v11 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v10 - v9); + v25 = a3[4] - v9; + v10 = a3[5]; + v26 = v10 - v9; + v11 = a3[6]; + if ( v11 ) + { +LABEL_3: + v12 = a3[7]; + v27 = v11 - v9; + v28 = v12 - v11; + v29 = a3[8] - v9; + if ( v10 < v12 ) + v10 = a3[7]; + } + if ( v10 ) + a3[12] = v10 - v9; +LABEL_7: + std::streambuf::basic_streambuf(v22, (int)(a3 + 2), v20); + this[10] = a3[10]; + this[2] = (int)&off_4F5918; + this[11] = (int)(this + 13); + v13 = (_DWORD *)a3[11]; + if ( v13 == a3 + 13 ) + { + this[13] = a3[13]; + this[14] = a3[14]; + this[15] = a3[15]; + this[16] = a3[16]; + } + else + { + this[11] = (int)v13; + this[13] = a3[13]; + } + v14 = a3[12]; + a3[11] = a3 + 13; + a3[12] = 0; + this[12] = v14; + *((_BYTE *)a3 + 52) = 0; + v15 = this[11]; + if ( ((unsigned int)v24 & HIDWORD(v24)) != -1 ) + { + this[3] = v15 + v24; + this[4] = v15 + v25; + this[5] = v15 + v26; + } + if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) + { + v16 = v15 + v29; + v17 = v27 + v15; + this[8] = v16; + this[6] = v17; + this[7] = v28 + v17; + } + std::stringbuf::_M_sync(a3 + 2, (_DWORD *)a3[11], 0, 0); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)v22; + return result; +} +// 4C65F4: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C640F: variable 'v19' is possibly undefined +// 4C654B: variable 'v20' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); + +//----- (004C66E0) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(char *this, int *a2, int a3, int a4) +{ + int v5; // eax + int v6; // edi + int v7; // eax + int v8; // ecx + int v9; // eax + unsigned __int8 *v10; // edx + unsigned int v11; // eax + int v13; // [esp+8h] [ebp-30h] + + v5 = a2[1]; + v6 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = v6; + *((_DWORD *)this + 1) = 0; + std::ios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + *((_DWORD *)this + 2) = &off_4F6414; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + std::locale::locale((_DWORD *)this + 9); + *((_DWORD *)this + 2) = &off_4F5918; + *((_DWORD *)this + 10) = 0; + v9 = *(_DWORD *)(a3 + 4); + v10 = *(unsigned __int8 **)a3; + LOBYTE(v13) = 0; + *((_DWORD *)this + 11) = this + 52; + std::string::_M_construct((void **)this + 11, v10, (size_t)&v10[v9], v13); + *((_DWORD *)this + 10) = a4 | 8; + v11 = 0; + if ( (a4 & 3) != 0 ) + v11 = *((_DWORD *)this + 12); + std::stringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v11); + return std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 8)); +} +// 4C6799: variable 'v13' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C6830) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2, int a3) +{ + int v4; // edi + int v5; // eax + int v6; // eax + int v7; // edx + + v4 = (int)(this + 2); + v5 = a2[1]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[2]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = (int)&off_4F6414; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + *((_BYTE *)this + 52) = 0; + this[12] = 0; + this[2] = (int)&off_4F5918; + this[10] = a3 | 8; + this[11] = (int)(this + 13); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), v4); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C6920) -------------------------------------------------------- +BOOL __thiscall std::istringstream::basic_istringstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // ecx + + v3 = (int)(this + 2); + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::ios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = *a2; + v6 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; + this[2] = (int)&off_4F6414; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + *((_BYTE *)this + 52) = 0; + this[11] = (int)(this + 13); + v7 = *this; + this[12] = 0; + this[2] = (int)&off_4F5918; + v8 = *(_DWORD *)(v7 - 12); + this[10] = 8; + return std::ios::init((int)this + v8, v3); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C6A10) -------------------------------------------------------- +void __fastcall std::istringstream::~istringstream(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[11]; + *a1 = &off_4F5BBC; + a1[17] = off_4F5BD0; + a1[2] = &off_4F5918; + if ( v2 != a1 + 13 ) + operator delete(v2); + a1[2] = &off_4F6414; + std::locale::~locale((_DWORD **)a1 + 9); + *a1 = &unk_4F0EA0; + a1[1] = 0; + a1[17] = &off_4F6E10; + std::ios_base::~ios_base((int)(a1 + 17)); + operator delete(a1); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5BBC: using guessed type int (*off_4F5BBC)(); +// 4F5BD0: using guessed type int (*off_4F5BD0[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004C6A80) -------------------------------------------------------- +void __fastcall std::istringstream::~istringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 44); + *(_DWORD *)a1 = &off_4F5BBC; + *(_DWORD *)(a1 + 68) = off_4F5BD0; + *(_DWORD *)(a1 + 8) = &off_4F5918; + if ( v2 != (void *)(a1 + 52) ) + operator delete(v2); + *(_DWORD *)(a1 + 8) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 36)); + *(_DWORD *)a1 = &unk_4F0EA0; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 68) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 68); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5BBC: using guessed type int (*off_4F5BBC)(); +// 4F5BD0: using guessed type int (*off_4F5BD0[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004C6AE0) -------------------------------------------------------- +int __thiscall std::istringstream::~istringstream(int *this, int *a2) +{ + int v3; // eax + char *v4; // eax + int v5; // eax + int result; // eax + + v3 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + v4 = (char *)this[11]; + this[2] = (int)&off_4F5918; + if ( v4 != (char *)(this + 13) ) + operator delete(v4); + this[2] = (int)&off_4F6414; + std::locale::~locale((_DWORD **)this + 9); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(int *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C6B40) -------------------------------------------------------- +char *__thiscall std::istringstream::operator=(char *this, int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + char *v11; // eax + const void *v12; // edx + int v13; // esi + _DWORD *v14; // edx + int v15; // eax + int v16; // ebx + int v17; // edi + __int64 v18; // rcx + int v19; // edi + int v20; // eax + int v21; // edi + int v23; // ecx + std::ios_base *v24; // [esp+4h] [ebp-74h] + const std::locale *v25; // [esp+4h] [ebp-74h] + const std::locale *v26; // [esp+4h] [ebp-74h] + unsigned int v27; // [esp+10h] [ebp-68h] + int v28; // [esp+14h] [ebp-64h] + _DWORD *v30; // [esp+20h] [ebp-58h] BYREF + _DWORD *v31; // [esp+24h] [ebp-54h] BYREF + _DWORD *v32; // [esp+28h] [ebp-50h] + __int64 v33; // [esp+30h] [ebp-48h] + int v34; // [esp+38h] [ebp-40h] + int v35; // [esp+3Ch] [ebp-3Ch] + __int64 v36; // [esp+40h] [ebp-38h] + __int64 v37; // [esp+48h] [ebp-30h] + __int64 v38; // [esp+50h] [ebp-28h] + int v39; // [esp+58h] [ebp-20h] + int v40; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v24); + std::ios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v33 = -1LL; + *(_DWORD *)(v2 + 112) = v5; + *(_DWORD *)(v3 + 112) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 116); + LOBYTE(v5) = *(_BYTE *)(v2 + 116); + v34 = -1; + *(_BYTE *)(v2 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 117); + *(_BYTE *)(v2 + 117) = v4; + *(_BYTE *)(v3 + 117) = v5; + v6 = *(_DWORD *)(a2 + 4); + v35 = -1; + v7 = *((_DWORD *)this + 1); + LODWORD(v36) = -1; + *((_DWORD *)this + 1) = v6; + *(_DWORD *)(a2 + 4) = v7; + v32 = this + 8; + HIDWORD(v36) = -1; + v37 = -1LL; + v38 = -1LL; + v39 = -1; + v40 = -1; + v8 = *(_DWORD *)(a2 + 44); + v9 = *(_DWORD *)(a2 + 12); + if ( !v9 ) + { + v10 = *(_DWORD *)(a2 + 24); + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v33 = (int)(v9 - v8); + v34 = *(_DWORD *)(a2 + 16) - v8; + v35 = v34 >> 31; + v9 = *(_DWORD *)(a2 + 20); + v36 = (int)(v9 - v8); + v10 = *(_DWORD *)(a2 + 24); + if ( v10 ) + { +LABEL_3: + v37 = v10 - v8; + v27 = *(_DWORD *)(a2 + 28); + v38 = (int)(v27 - v10); + v39 = *(_DWORD *)(a2 + 32) - v8; + v40 = v39 >> 31; + if ( v9 < v27 ) + v9 = v27; + } + if ( v9 ) + *(_DWORD *)(a2 + 48) = v9 - v8; +LABEL_7: + std::streambuf::operator=((volatile signed __int32 **)this + 2, a2 + 8); + std::locale::locale((volatile signed __int32 **)&v31, (volatile signed __int32 **)(a2 + 36), v25); + std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)this + 9, v26); + std::locale::operator=((volatile signed __int32 **)this + 9, (volatile signed __int32 **)&v31); + std::locale::~locale(&v30); + std::locale::~locale(&v31); + *((_DWORD *)this + 10) = *(_DWORD *)(a2 + 40); + v11 = (char *)*((_DWORD *)this + 11); + v12 = *(const void **)(a2 + 44); + if ( v12 == (const void *)(a2 + 52) ) + { + v23 = *(_DWORD *)(a2 + 48); + if ( v23 ) + { + if ( v23 == 1 ) + *v11 = *(_BYTE *)(a2 + 52); + else + memcpy(v11, v12, *(_DWORD *)(a2 + 48)); + v23 = *(_DWORD *)(a2 + 48); + v11 = (char *)*((_DWORD *)this + 11); + } + *((_DWORD *)this + 12) = v23; + v11[v23] = 0; + v11 = *(char **)(a2 + 44); + } + else + { + v28 = *(_DWORD *)(a2 + 48); + if ( v11 == this + 52 ) + { + *((_DWORD *)this + 11) = v12; + *((_DWORD *)this + 12) = v28; + *((_DWORD *)this + 13) = *(_DWORD *)(a2 + 52); + } + else + { + v13 = *((_DWORD *)this + 13); + *((_DWORD *)this + 11) = v12; + *((_DWORD *)this + 12) = v28; + *((_DWORD *)this + 13) = *(_DWORD *)(a2 + 52); + if ( v11 ) + { + *(_DWORD *)(a2 + 44) = v11; + *(_DWORD *)(a2 + 52) = v13; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 44) = a2 + 52; + v11 = (char *)(a2 + 52); + } +LABEL_11: + *(_DWORD *)(a2 + 48) = 0; + *v11 = 0; + std::stringbuf::_M_sync((_DWORD *)(a2 + 8), *(_DWORD **)(a2 + 44), 0, 0); + v14 = v32; + v15 = v32[9]; + if ( ((unsigned int)v33 & HIDWORD(v33)) != -1 ) + { + v16 = v36; + v17 = v34; + v32[1] = v15 + v33; + v14[2] = v15 + v17; + v14[3] = v15 + v16; + } + if ( ((unsigned int)v37 & HIDWORD(v37)) != -1 ) + { + v18 = v38; + v19 = v15 + v39; + v20 = v37 + v15; + v14[6] = v19; + v14[4] = v20; + if ( v18 > 0x7FFFFFFF ) + { + v21 = v20 + 0x7FFFFFFF; + do + { + v20 = v21; + v18 -= 0x7FFFFFFFLL; + v21 += 0x7FFFFFFF; + } + while ( v18 > 0x7FFFFFFF ); + } + v14[5] = v18 + v20; + } + return this; +} +// 4C6B60: variable 'v24' is possibly undefined +// 4C6CBE: variable 'v25' is possibly undefined +// 4C6CD2: variable 'v26' is possibly undefined + +//----- (004C6ED0) -------------------------------------------------------- +int __thiscall std::wistringstream::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 8); + std::wstring::_M_replace(this + 44, 0, *(_DWORD *)(this + 48), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 40) & 3) != 0 ) + v4 = *(_DWORD *)(this + 48); + return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 44), 0, v4); +} + +//----- (004C6F40) -------------------------------------------------------- +int __thiscall std::wistringstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // edi + std::ios_base *v4; // esi + int v5; // eax + __int16 v6; // dx + int v7; // eax + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + v7 = this[1]; + *((_BYTE *)v4 + 118) = v6; + this[1] = a2[1]; + a2[1] = v7; + return std::wstringbuf::swap(this + 2, (int)(a2 + 2)); +} +// 4C6F64: variable 'v9' is possibly undefined + +//----- (004C6FE0) -------------------------------------------------------- +char *__thiscall std::wistringstream::basic_istringstream(char *this, int *a2) +{ + int v3; // eax + int v4; // eax + int v5; // esi + int v6; // esi + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + unsigned int v11; // esi + int v12; // eax + int *v13; // eax + int v14; // eax + int v15; // edx + int v16; // ecx + int v17; // edx + char *result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + _DWORD *v21; // [esp+1Ch] [ebp-6Ch] + _DWORD *v22; // [esp+20h] [ebp-68h] + _DWORD *v23; // [esp+28h] [ebp-60h] + int v24; // [esp+40h] [ebp-48h] + int v25; // [esp+44h] [ebp-44h] + int v26; // [esp+48h] [ebp-40h] + int v27; // [esp+50h] [ebp-38h] + int v28; // [esp+58h] [ebp-30h] + int v29; // [esp+5Ch] [ebp-2Ch] + __int64 v30; // [esp+60h] [ebp-28h] + int v31; // [esp+68h] [ebp-20h] + + v22 = this + 68; + std::ios_base::ios_base((_DWORD *)this + 17); + v3 = a2[1]; + *(_DWORD *)this = &unk_4F0EC8; + *((_DWORD *)this + 45) = 0; + *((_DWORD *)this + 1) = v3; + v4 = *a2; + *((_WORD *)this + 92) = 0; + v5 = *(_DWORD *)(v4 - 12); + this[186] = 0; + *((_DWORD *)this + 47) = 0; + v6 = (int)a2 + v5; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *((_DWORD *)this + 17) = &unk_4F0EDC; + std::ios_base::_M_move((int)v22, (std::ios_base *)v6, v19); + std::wios::_M_cache_locale(v22, (int)(this + 176)); + v7 = *(_DWORD *)(v6 + 112); + *(_DWORD *)(v6 + 112) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 45) = v7; + v21 = a2 + 2; + v8 = a2[11]; + *((_WORD *)this + 92) = *(_WORD *)(v6 + 116); + v24 = -1; + this[186] = *(_BYTE *)(v6 + 118); + v23 = this + 8; + v9 = a2[3]; + a2[1] = 0; + v25 = -1; + *(_DWORD *)this = &off_4F5BE4; + *((_DWORD *)this + 17) = off_4F5BF8; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + LODWORD(v30) = -1; + v31 = -1; + if ( !v9 ) + { + v10 = a2[6]; + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v9 - v8) >> 1; + v25 = (int)(v9 - v8) >> 31; + v26 = (a2[4] - v8) >> 1; + v9 = a2[5]; + v27 = (int)(v9 - v8) >> 1; + v10 = a2[6]; + if ( v10 ) + { +LABEL_3: + v11 = a2[7]; + v28 = (v10 - v8) >> 1; + v29 = (v10 - v8) >> 31; + v30 = (int)(v11 - v10) >> 1; + v31 = (a2[8] - v8) >> 1; + if ( v9 < v11 ) + v9 = a2[7]; + } + if ( v9 ) + a2[12] = (int)(v9 - v8) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v23, (int)v21, v20); + *((_DWORD *)this + 2) = &off_4F5958; + v12 = a2[10]; + *((_DWORD *)this + 11) = this + 52; + *((_DWORD *)this + 10) = v12; + v13 = (int *)a2[11]; + if ( v13 == a2 + 13 ) + { + wmemcpy((wchar_t *)this + 26, (const wchar_t *)a2 + 26, 8u); + } + else + { + *((_DWORD *)this + 11) = v13; + *((_DWORD *)this + 13) = a2[13]; + } + v14 = a2[12]; + a2[11] = (int)(a2 + 13); + a2[12] = 0; + *((_DWORD *)this + 12) = v14; + *((_WORD *)a2 + 26) = 0; + v15 = *((_DWORD *)this + 11); + if ( (v24 & v25) != -1 ) + { + *((_DWORD *)this + 3) = v15 + 2 * v24; + *((_DWORD *)this + 4) = v15 + 2 * v26; + *((_DWORD *)this + 5) = v15 + 2 * v27; + } + if ( (v28 & v29) != -1 ) + { + v16 = v15 + 2 * v31; + v17 = v15 + 2 * v28; + *((_DWORD *)this + 8) = v16; + *((_DWORD *)this + 6) = v17; + *((_DWORD *)this + 7) = 2 * v30 + v17; + } + std::wstringbuf::_M_sync(v21, (_DWORD *)a2[11], 0, 0); + result = this + 8; + *((_DWORD *)this + 47) = v23; + return result; +} +// 4C727F: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C7060: variable 'v19' is possibly undefined +// 4C71C1: variable 'v20' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5BE4: using guessed type int (*off_4F5BE4)(); +// 4F5BF8: using guessed type int (*off_4F5BF8[2])(); + +//----- (004C7380) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int a2, int a3) +{ + int v3; // esi + int v5; // eax + wchar_t *v6; // edx + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 68); + std::ios_base::ios_base((_DWORD *)this + 17); + this[186] = 0; + *((_DWORD *)this + 45) = 0; + *((_WORD *)this + 92) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 50) = 0; + *(_DWORD *)this = &unk_4F0EC8; + *((_DWORD *)this + 17) = &unk_4F0EDC; + *((_DWORD *)this + 1) = 0; + std::wios::init(v3, 0); + *(_DWORD *)this = &off_4F5BE4; + *((_DWORD *)this + 17) = off_4F5BF8; + *((_DWORD *)this + 2) = &off_4F6454; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + std::locale::locale((_DWORD *)this + 9); + *((_DWORD *)this + 2) = &off_4F5958; + *((_DWORD *)this + 10) = 0; + v5 = *(_DWORD *)(a2 + 4); + v6 = *(wchar_t **)a2; + LOBYTE(v9) = 0; + *((_DWORD *)this + 11) = this + 52; + std::wstring::_M_construct((wchar_t **)this + 11, v6, (int)&v6[v5], v9); + *((_DWORD *)this + 10) = a3 | 8; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 12); + std::wstringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v7); + return std::wios::init(v3, (int)(this + 8)); +} +// 4C7484: variable 'v9' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5BE4: using guessed type int (*off_4F5BE4)(); +// 4F5BF8: using guessed type int (*off_4F5BF8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C7520) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 17); + std::ios_base::ios_base(this + 17); + *((_BYTE *)this + 186) = 0; + this[45] = 0; + *((_WORD *)this + 92) = 0; + this[47] = 0; + this[48] = 0; + this[49] = 0; + this[50] = 0; + *this = &unk_4F0EC8; + this[17] = &unk_4F0EDC; + this[1] = 0; + std::wios::init(v2, 0); + *this = &off_4F5BE4; + this[17] = off_4F5BF8; + this[2] = &off_4F6454; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + this[2] = &off_4F5958; + this[12] = 0; + this[10] = a2 | 8; + this[11] = this + 13; + *((_WORD *)this + 26) = 0; + return std::wios::init(v2, (int)(this + 2)); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5BE4: using guessed type int (*off_4F5BE4)(); +// 4F5BF8: using guessed type int (*off_4F5BF8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C7660) -------------------------------------------------------- +BOOL __fastcall std::wistringstream::basic_istringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 68; + std::ios_base::ios_base((_DWORD *)(a1 + 68)); + *(_BYTE *)(a1 + 186) = 0; + *(_DWORD *)(a1 + 180) = 0; + *(_WORD *)(a1 + 184) = 0; + *(_DWORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 200) = 0; + *(_DWORD *)a1 = &unk_4F0EC8; + *(_DWORD *)(a1 + 68) = &unk_4F0EDC; + *(_DWORD *)(a1 + 4) = 0; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_4F5BE4; + *(_DWORD *)(a1 + 68) = off_4F5BF8; + *(_DWORD *)(a1 + 8) = &off_4F6454; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + *(_DWORD *)(a1 + 32) = 0; + std::locale::locale((_DWORD *)(a1 + 36)); + *(_DWORD *)(a1 + 44) = a1 + 52; + *(_DWORD *)(a1 + 8) = &off_4F5958; + *(_DWORD *)(a1 + 40) = 8; + *(_DWORD *)(a1 + 48) = 0; + *(_WORD *)(a1 + 52) = 0; + return std::wios::init(v1, a1 + 8); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5BE4: using guessed type int (*off_4F5BE4)(); +// 4F5BF8: using guessed type int (*off_4F5BF8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C77A0) -------------------------------------------------------- +int __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3) +{ + int v3; // eax + int v4; // esi + int v5; // edx + char v6; // al + int v7; // edx + int v8; // eax + unsigned int v9; // eax + int v10; // edx + int v11; // ecx + unsigned int v12; // esi + int v13; // eax + int v14; // eax + int v15; // edx + int v16; // ecx + int v17; // edx + int result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + int v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + int v24; // [esp+40h] [ebp-48h] + int v25; // [esp+44h] [ebp-44h] + int v26; // [esp+48h] [ebp-40h] + int v27; // [esp+50h] [ebp-38h] + int v28; // [esp+58h] [ebp-30h] + int v29; // [esp+5Ch] [ebp-2Ch] + __int64 v30; // [esp+60h] [ebp-28h] + int v31; // [esp+68h] [ebp-20h] + + v3 = a2[1]; + *(_DWORD *)this = v3; + *(_DWORD *)&this[*(_DWORD *)(v3 - 12)] = a2[2]; + *((_DWORD *)this + 1) = *(_DWORD *)(a3 + 4); + v4 = (int)&this[*(_DWORD *)(v3 - 12)]; + v21 = a3 + *(_DWORD *)(*(_DWORD *)a3 - 12); + std::ios_base::_M_move(v4, (std::ios_base *)v21, v19); + std::wios::_M_cache_locale((_DWORD *)v4, v4 + 108); + *(_DWORD *)(v4 + 120) = 0; + v5 = *(_DWORD *)(v21 + 112); + *(_DWORD *)(v21 + 112) = 0; + *(_DWORD *)(v4 + 112) = v5; + v6 = *(_BYTE *)(v21 + 118); + *(_WORD *)(v4 + 116) = *(_WORD *)(v21 + 116); + *(_BYTE *)(v4 + 118) = v6; + *(_DWORD *)(a3 + 4) = 0; + v7 = a2[3]; + v8 = *a2; + *(_DWORD *)this = *a2; + v24 = -1; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v7; + v22 = this + 8; + v25 = -1; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + LODWORD(v30) = -1; + v31 = -1; + v9 = *(_DWORD *)(a3 + 12); + v10 = *(_DWORD *)(a3 + 44); + if ( !v9 ) + { + v11 = *(_DWORD *)(a3 + 24); + if ( !v11 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v9 - v10) >> 1; + v25 = (int)(v9 - v10) >> 31; + v26 = (*(_DWORD *)(a3 + 16) - v10) >> 1; + v9 = *(_DWORD *)(a3 + 20); + v27 = (int)(v9 - v10) >> 1; + v11 = *(_DWORD *)(a3 + 24); + if ( v11 ) + { +LABEL_3: + v12 = *(_DWORD *)(a3 + 28); + v28 = (v11 - v10) >> 1; + v29 = (v11 - v10) >> 31; + v30 = (int)(v12 - v11) >> 1; + v31 = (*(_DWORD *)(a3 + 32) - v10) >> 1; + if ( v9 < v12 ) + v9 = *(_DWORD *)(a3 + 28); + } + if ( v9 ) + *(_DWORD *)(a3 + 48) = (int)(v9 - v10) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v22, a3 + 8, v20); + *((_DWORD *)this + 10) = *(_DWORD *)(a3 + 40); + *((_DWORD *)this + 2) = &off_4F5958; + *((_DWORD *)this + 11) = this + 52; + v13 = *(_DWORD *)(a3 + 44); + if ( v13 == a3 + 52 ) + { + wmemcpy((wchar_t *)this + 26, (const wchar_t *)(a3 + 52), 8u); + } + else + { + *((_DWORD *)this + 11) = v13; + *((_DWORD *)this + 13) = *(_DWORD *)(a3 + 52); + } + v14 = *(_DWORD *)(a3 + 48); + *(_DWORD *)(a3 + 44) = a3 + 52; + *(_DWORD *)(a3 + 48) = 0; + *((_DWORD *)this + 12) = v14; + *(_WORD *)(a3 + 52) = 0; + v15 = *((_DWORD *)this + 11); + if ( (v24 & v25) != -1 ) + { + *((_DWORD *)this + 3) = v15 + 2 * v24; + *((_DWORD *)this + 4) = v15 + 2 * v26; + *((_DWORD *)this + 5) = v15 + 2 * v27; + } + if ( (v28 & v29) != -1 ) + { + v16 = v15 + 2 * v31; + v17 = v15 + 2 * v28; + *((_DWORD *)this + 8) = v16; + *((_DWORD *)this + 6) = v17; + *((_DWORD *)this + 7) = 2 * v30 + v17; + } + std::wstringbuf::_M_sync((_DWORD *)(a3 + 8), *(_DWORD **)(a3 + 44), 0, 0); + result = *(_DWORD *)(*(_DWORD *)this - 12); + *(_DWORD *)&this[result + 120] = v22; + return result; +} +// 4C79F0: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C77DF: variable 'v19' is possibly undefined +// 4C7930: variable 'v20' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); + +//----- (004C7AD0) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(char *this, int *a2, int a3, int a4) +{ + int v5; // eax + int v6; // edi + int v7; // eax + int v8; // ecx + int v9; // eax + wchar_t *v10; // edx + unsigned int v11; // eax + int v13; // [esp+8h] [ebp-30h] + + v5 = a2[1]; + v6 = a2[2]; + *(_DWORD *)this = v5; + *(_DWORD *)&this[*(_DWORD *)(v5 - 12)] = v6; + *((_DWORD *)this + 1) = 0; + std::wios::init((int)&this[*(_DWORD *)(v5 - 12)], 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + *((_DWORD *)this + 2) = &off_4F6454; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + *((_DWORD *)this + 8) = 0; + std::locale::locale((_DWORD *)this + 9); + *((_DWORD *)this + 2) = &off_4F5958; + *((_DWORD *)this + 10) = 0; + v9 = *(_DWORD *)(a3 + 4); + v10 = *(wchar_t **)a3; + LOBYTE(v13) = 0; + *((_DWORD *)this + 11) = this + 52; + std::wstring::_M_construct((wchar_t **)this + 11, v10, (int)&v10[v9], v13); + *((_DWORD *)this + 10) = a4 | 8; + v11 = 0; + if ( (a4 & 3) != 0 ) + v11 = *((_DWORD *)this + 12); + std::wstringbuf::_M_sync((_DWORD *)this + 2, *((_DWORD **)this + 11), 0, v11); + return std::wios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 8)); +} +// 4C7B8C: variable 'v13' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C7C30) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2, int a3) +{ + int v4; // edi + int v5; // eax + int v6; // eax + int v7; // edx + + v4 = (int)(this + 2); + v5 = a2[1]; + *this = v5; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v5 - 12), 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[2] = (int)&off_4F6454; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + this[12] = 0; + this[2] = (int)&off_4F5958; + this[10] = a3 | 8; + this[11] = (int)(this + 13); + *((_WORD *)this + 26) = 0; + return std::wios::init((int)this + *(_DWORD *)(*this - 12), v4); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C7D20) -------------------------------------------------------- +BOOL __thiscall std::wistringstream::basic_istringstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + int v5; // eax + int v6; // edx + int v7; // eax + int v8; // ecx + + v3 = (int)(this + 2); + v4 = a2[1]; + *this = v4; + *(int *)((char *)this + *(_DWORD *)(v4 - 12)) = a2[2]; + this[1] = 0; + std::wios::init((int)this + *(_DWORD *)(v4 - 12), 0); + v5 = *a2; + v6 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v5 - 12)) = v6; + this[2] = (int)&off_4F6454; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + this[8] = 0; + std::locale::locale(this + 9); + this[12] = 0; + this[11] = (int)(this + 13); + *((_WORD *)this + 26) = 0; + v7 = *this; + this[2] = (int)&off_4F5958; + v8 = *(_DWORD *)(v7 - 12); + this[10] = 8; + return std::wios::init((int)this + v8, v3); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C7E10) -------------------------------------------------------- +void __fastcall std::wistringstream::~wistringstream(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[11]; + *a1 = &off_4F5BE4; + a1[17] = off_4F5BF8; + a1[2] = &off_4F5958; + if ( v2 != a1 + 13 ) + operator delete(v2); + a1[2] = &off_4F6454; + std::locale::~locale((_DWORD **)a1 + 9); + *a1 = &unk_4F0EC8; + a1[1] = 0; + a1[17] = &off_4F6E20; + std::ios_base::~ios_base((int)(a1 + 17)); + operator delete(a1); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5BE4: using guessed type int (*off_4F5BE4)(); +// 4F5BF8: using guessed type int (*off_4F5BF8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004C7E80) -------------------------------------------------------- +void __fastcall std::wistringstream::~wistringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 44); + *(_DWORD *)a1 = &off_4F5BE4; + *(_DWORD *)(a1 + 68) = off_4F5BF8; + *(_DWORD *)(a1 + 8) = &off_4F5958; + if ( v2 != (void *)(a1 + 52) ) + operator delete(v2); + *(_DWORD *)(a1 + 8) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 36)); + *(_DWORD *)a1 = &unk_4F0EC8; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)(a1 + 68) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 68); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5BE4: using guessed type int (*off_4F5BE4)(); +// 4F5BF8: using guessed type int (*off_4F5BF8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004C7EE0) -------------------------------------------------------- +int __thiscall std::wistringstream::~wistringstream(int *this, int *a2) +{ + int v3; // eax + char *v4; // eax + int v5; // eax + int result; // eax + + v3 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + v4 = (char *)this[11]; + this[2] = (int)&off_4F5958; + if ( v4 != (char *)(this + 13) ) + operator delete(v4); + this[2] = (int)&off_4F6454; + std::locale::~locale((_DWORD **)this + 9); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(int *)((char *)this + result) = a2[2]; + this[1] = 0; + return result; +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C7F40) -------------------------------------------------------- +char *__thiscall std::wistringstream::operator=(char *this, int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + int v7; // eax + int v8; // edx + unsigned int v9; // eax + int v10; // ecx + unsigned int v11; // esi + int v12; // ecx + wchar_t *v13; // eax + wchar_t *v14; // edx + int v15; // esi + _DWORD *v16; // ecx + int v17; // ebx + int v18; // edx + int v19; // edi + __int64 v20; // rax + int v21; // edi + int v22; // ebx + int v23; // edi + int v25; // eax + int v26; // ecx + std::ios_base *v27; // [esp+4h] [ebp-74h] + const std::locale *v28; // [esp+4h] [ebp-74h] + const std::locale *v29; // [esp+4h] [ebp-74h] + int v30; // [esp+14h] [ebp-64h] + _DWORD *v32; // [esp+20h] [ebp-58h] BYREF + _DWORD *v33; // [esp+24h] [ebp-54h] BYREF + _DWORD *v34; // [esp+28h] [ebp-50h] + int v35; // [esp+30h] [ebp-48h] + int v36; // [esp+34h] [ebp-44h] + int v37; // [esp+38h] [ebp-40h] + int v38; // [esp+3Ch] [ebp-3Ch] + __int64 v39; // [esp+40h] [ebp-38h] + int v40; // [esp+48h] [ebp-30h] + int v41; // [esp+4Ch] [ebp-2Ch] + __int64 v42; // [esp+50h] [ebp-28h] + int v43; // [esp+58h] [ebp-20h] + int v44; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v27); + std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v35 = -1; + v36 = -1; + *(_DWORD *)(v2 + 112) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_DWORD *)(v3 + 112) = v4; + LOWORD(v4) = *(_WORD *)(v2 + 116); + *(_WORD *)(v2 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 118); + *(_WORD *)(v3 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 118); + v37 = -1; + *(_BYTE *)(v2 + 118) = v4; + *(_BYTE *)(v3 + 118) = v5; + v6 = *(_DWORD *)(a2 + 4); + v38 = -1; + v7 = *((_DWORD *)this + 1); + LODWORD(v39) = -1; + *((_DWORD *)this + 1) = v6; + *(_DWORD *)(a2 + 4) = v7; + v34 = this + 8; + HIDWORD(v39) = -1; + v40 = -1; + v41 = -1; + v42 = -1LL; + v43 = -1; + v44 = -1; + v8 = *(_DWORD *)(a2 + 44); + v9 = *(_DWORD *)(a2 + 12); + if ( !v9 ) + { + v10 = *(_DWORD *)(a2 + 24); + if ( !v10 ) + goto LABEL_7; + goto LABEL_3; + } + v35 = (int)(v9 - v8) >> 1; + v36 = (int)(v9 - v8) >> 31; + v37 = (*(_DWORD *)(a2 + 16) - v8) >> 1; + v38 = v37 >> 31; + v9 = *(_DWORD *)(a2 + 20); + v39 = (int)(v9 - v8) >> 1; + v10 = *(_DWORD *)(a2 + 24); + if ( v10 ) + { +LABEL_3: + v40 = (v10 - v8) >> 1; + v41 = (v10 - v8) >> 31; + v11 = *(_DWORD *)(a2 + 28); + v42 = (int)(v11 - v10) >> 1; + v43 = (*(_DWORD *)(a2 + 32) - v8) >> 1; + v44 = v43 >> 31; + if ( v9 < v11 ) + v9 = v11; + } + if ( v9 ) + *(_DWORD *)(a2 + 48) = (int)(v9 - v8) >> 1; +LABEL_7: + std::wstreambuf::operator=((volatile signed __int32 **)this + 2, a2 + 8); + std::locale::locale((volatile signed __int32 **)&v33, (volatile signed __int32 **)(a2 + 36), v28); + std::locale::locale((volatile signed __int32 **)&v32, (volatile signed __int32 **)this + 9, v29); + std::locale::operator=((volatile signed __int32 **)this + 9, (volatile signed __int32 **)&v33); + std::locale::~locale(&v32); + std::locale::~locale(&v33); + v12 = *(_DWORD *)(a2 + 44); + *((_DWORD *)this + 10) = *(_DWORD *)(a2 + 40); + v13 = (wchar_t *)*((_DWORD *)this + 11); + v14 = (wchar_t *)(a2 + 52); + if ( v12 == a2 + 52 ) + { + v26 = *(_DWORD *)(a2 + 48); + if ( v26 ) + { + if ( v26 == 1 ) + { + *v13 = *(_WORD *)(a2 + 52); + } + else + { + wmemcpy(v13, (const wchar_t *)(a2 + 52), *(_DWORD *)(a2 + 48)); + v26 = *(_DWORD *)(a2 + 48); + v14 = *(wchar_t **)(a2 + 44); + v13 = (wchar_t *)*((_DWORD *)this + 11); + } + } + *((_DWORD *)this + 12) = v26; + v13[v26] = 0; + v13 = v14; + } + else + { + v30 = *(_DWORD *)(a2 + 48); + if ( v13 == (wchar_t *)(this + 52) ) + { + *((_DWORD *)this + 12) = v30; + v25 = *(_DWORD *)(a2 + 52); + *((_DWORD *)this + 11) = v12; + *((_DWORD *)this + 13) = v25; + } + else + { + v15 = *((_DWORD *)this + 13); + *((_DWORD *)this + 11) = v12; + *((_DWORD *)this + 12) = v30; + *((_DWORD *)this + 13) = *(_DWORD *)(a2 + 52); + if ( v13 ) + { + *(_DWORD *)(a2 + 44) = v13; + *(_DWORD *)(a2 + 52) = v15; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 44) = v14; + v13 = (wchar_t *)(a2 + 52); + } +LABEL_11: + *(_DWORD *)(a2 + 48) = 0; + *v13 = 0; + std::wstringbuf::_M_sync((_DWORD *)(a2 + 8), v13, 0, 0); + v16 = v34; + v17 = v34[9]; + if ( (v35 & v36) != -1 ) + { + v18 = v39; + v19 = v37; + v34[1] = v17 + 2 * v35; + v16[2] = v17 + 2 * v19; + v16[3] = v17 + 2 * v18; + } + if ( (v41 & v40) != -1 ) + { + v20 = v42; + v21 = v17 + 2 * v43; + v22 = v17 + 2 * v40; + v16[6] = v21; + v16[4] = v22; + if ( v20 > 0x7FFFFFFF ) + { + v23 = v22 - 2; + do + { + v22 = v23; + v20 -= 0x7FFFFFFFLL; + v23 -= 2; + } + while ( v20 > 0x7FFFFFFF ); + } + v16[5] = v22 + 2 * v20; + } + return this; +} +// 4C7F60: variable 'v27' is possibly undefined +// 4C80CA: variable 'v28' is possibly undefined +// 4C80DE: variable 'v29' is possibly undefined + +//----- (004C82D0) -------------------------------------------------------- +int __thiscall std::ostringstream::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 4); + std::string::_M_replace((unsigned int *)(this + 40), 0, *(_DWORD *)(this + 44), *(char **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 36) & 3) != 0 ) + v4 = *(_DWORD *)(this + 44); + return std::stringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); +} + +//----- (004C8340) -------------------------------------------------------- +int __thiscall std::ostringstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + char v6; // dl + char v7; // dl + std::ios_base *v9; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v9); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::ios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + *((_DWORD *)v4 + 28) = v5; + v6 = *(_BYTE *)(v3 + 116); + *(_BYTE *)(v3 + 116) = *((_BYTE *)v4 + 116); + LOBYTE(v5) = *((_BYTE *)v4 + 117); + *((_BYTE *)v4 + 116) = v6; + v7 = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 117) = v5; + *((_BYTE *)v4 + 117) = v7; + return std::stringbuf::swap(this + 1, (int)(a2 + 1)); +} +// 4C8364: variable 'v9' is possibly undefined + +//----- (004C83D0) -------------------------------------------------------- +char *__thiscall std::ostringstream::basic_ostringstream(_DWORD *this, _DWORD *a2) +{ + int v3; // eax + int v4; // esi + std::ios_base *v5; // esi + int v6; // eax + int v7; // edx + unsigned int v8; // eax + int v9; // ecx + int v10; // eax + _DWORD *v11; // edx + int v12; // edx + int v13; // eax + int v14; // ecx + int v15; // eax + char *result; // eax + std::ios_base *v17; // [esp+4h] [ebp-84h] + const std::locale *v18; // [esp+4h] [ebp-84h] + _DWORD *v19; // [esp+1Ch] [ebp-6Ch] + _DWORD *v20; // [esp+20h] [ebp-68h] + _DWORD *v21; // [esp+28h] [ebp-60h] + __int64 v22; // [esp+40h] [ebp-48h] + int v23; // [esp+48h] [ebp-40h] + int v24; // [esp+50h] [ebp-38h] + __int64 v25; // [esp+58h] [ebp-30h] + int v26; // [esp+60h] [ebp-28h] + int v27; // [esp+68h] [ebp-20h] + + v20 = this + 16; + std::ios_base::ios_base(this + 16); + *this = &unk_4F0EF0; + *((_WORD *)this + 90) = 0; + v3 = *a2; + this[44] = 0; + v4 = *(_DWORD *)(v3 - 12); + this[46] = 0; + this[47] = 0; + v5 = (std::ios_base *)((char *)a2 + v4); + this[16] = &unk_4F0F04; + this[48] = 0; + this[49] = 0; + std::ios_base::_M_move((int)v20, v5, v17); + std::ios::_M_cache_locale(v20, (int)(this + 43)); + v6 = *((_DWORD *)v5 + 28); + *((_DWORD *)v5 + 28) = 0; + v19 = a2 + 1; + this[44] = v6; + LOWORD(v6) = *((_WORD *)v5 + 58); + this[46] = 0; + *((_WORD *)this + 90) = v6; + v7 = a2[10]; + v21 = this + 1; + v8 = a2[2]; + *this = &off_4F5C0C; + this[16] = off_4F5C20; + v22 = -1LL; + v23 = -1; + v24 = -1; + v25 = -1LL; + v26 = -1; + v27 = -1; + if ( !v8 ) + { + v9 = a2[5]; + if ( !v9 ) + goto LABEL_7; + goto LABEL_3; + } + v22 = (int)(v8 - v7); + v23 = a2[3] - v7; + v8 = a2[4]; + v24 = v8 - v7; + v9 = a2[5]; + if ( v9 ) + { +LABEL_3: + v25 = v9 - v7; + v26 = a2[6] - v9; + v27 = a2[7] - v7; + if ( v8 < a2[6] ) + v8 = a2[6]; + } + if ( v8 ) + a2[11] = v8 - v7; +LABEL_7: + std::streambuf::basic_streambuf(v21, (int)v19, v18); + this[1] = &off_4F5918; + v10 = a2[9]; + this[10] = this + 12; + this[9] = v10; + v11 = (_DWORD *)a2[10]; + if ( v11 == a2 + 12 ) + { + this[12] = a2[12]; + this[13] = a2[13]; + this[14] = a2[14]; + this[15] = a2[15]; + } + else + { + this[10] = v11; + this[12] = a2[12]; + } + v12 = a2[11]; + a2[10] = a2 + 12; + a2[11] = 0; + this[11] = v12; + *((_BYTE *)a2 + 48) = 0; + v13 = this[10]; + if ( ((unsigned int)v22 & HIDWORD(v22)) != -1 ) + { + this[2] = v13 + v22; + this[3] = v13 + v23; + this[4] = v13 + v24; + } + if ( ((unsigned int)v25 & HIDWORD(v25)) != -1 ) + { + v14 = v13 + v27; + v15 = v25 + v13; + this[7] = v14; + this[5] = v15; + this[6] = v26 + v15; + } + std::stringbuf::_M_sync(v19, (_DWORD *)a2[10], 0, 0); + result = (char *)(this + 1); + this[46] = v21; + return result; +} +// 4C8630: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C8443: variable 'v17' is possibly undefined +// 4C8585: variable 'v18' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5C0C: using guessed type int (*off_4F5C0C)(); +// 4F5C20: using guessed type int (*off_4F5C20[2])(); + +//----- (004C8730) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int a2, int a3) +{ + int v3; // esi + int v5; // eax + unsigned __int8 *v6; // edx + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 64); + std::ios_base::ios_base((_DWORD *)this + 16); + *(_DWORD *)this = &unk_4F0EF0; + *((_DWORD *)this + 44) = 0; + *((_WORD *)this + 90) = 0; + *((_DWORD *)this + 46) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 16) = &unk_4F0F04; + std::ios::init(v3, 0); + *(_DWORD *)this = &off_4F5C0C; + *((_DWORD *)this + 16) = off_4F5C20; + *((_DWORD *)this + 1) = &off_4F6414; + *((_DWORD *)this + 2) = 0; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + std::locale::locale((_DWORD *)this + 8); + *((_DWORD *)this + 1) = &off_4F5918; + *((_DWORD *)this + 9) = 0; + v5 = *(_DWORD *)(a2 + 4); + v6 = *(unsigned __int8 **)a2; + LOBYTE(v9) = 0; + *((_DWORD *)this + 10) = this + 48; + std::string::_M_construct((void **)this + 10, v6, (size_t)&v6[v5], v9); + *((_DWORD *)this + 9) = a3 | 0x10; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 11); + std::stringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v7); + return std::ios::init(v3, (int)(this + 4)); +} +// 4C8823: variable 'v9' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5C0C: using guessed type int (*off_4F5C0C)(); +// 4F5C20: using guessed type int (*off_4F5C20[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C88C0) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 16); + std::ios_base::ios_base(this + 16); + *this = &unk_4F0EF0; + this[44] = 0; + *((_WORD *)this + 90) = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + this[49] = 0; + this[16] = &unk_4F0F04; + std::ios::init(v2, 0); + *this = &off_4F5C0C; + this[16] = off_4F5C20; + this[1] = &off_4F6414; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + *((_BYTE *)this + 48) = 0; + this[1] = &off_4F5918; + this[11] = 0; + this[9] = a2 | 0x10; + this[10] = this + 12; + return std::ios::init(v2, (int)(this + 1)); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5C0C: using guessed type int (*off_4F5C0C)(); +// 4F5C20: using guessed type int (*off_4F5C20[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C89E0) -------------------------------------------------------- +BOOL __fastcall std::ostringstream::basic_ostringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 64; + std::ios_base::ios_base((_DWORD *)(a1 + 64)); + *(_DWORD *)a1 = &unk_4F0EF0; + *(_DWORD *)(a1 + 176) = 0; + *(_WORD *)(a1 + 180) = 0; + *(_DWORD *)(a1 + 184) = 0; + *(_DWORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)(a1 + 64) = &unk_4F0F04; + std::ios::init(v1, 0); + *(_DWORD *)a1 = &off_4F5C0C; + *(_DWORD *)(a1 + 64) = off_4F5C20; + *(_DWORD *)(a1 + 4) = &off_4F6414; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + std::locale::locale((_DWORD *)(a1 + 32)); + *(_BYTE *)(a1 + 48) = 0; + *(_DWORD *)(a1 + 4) = &off_4F5918; + *(_DWORD *)(a1 + 36) = 16; + *(_DWORD *)(a1 + 40) = a1 + 48; + *(_DWORD *)(a1 + 44) = 0; + return std::ios::init(v1, a1 + 4); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5C0C: using guessed type int (*off_4F5C0C)(); +// 4F5C20: using guessed type int (*off_4F5C20[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C8B00) -------------------------------------------------------- +int __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, _DWORD *a3) +{ + int v3; // eax + int v4; // esi + int v5; // edx + __int16 v6; // ax + int v7; // edx + int v8; // eax + int v9; // edx + unsigned int v10; // eax + int v11; // ecx + unsigned int v12; // esi + _DWORD *v13; // edx + int v14; // edx + int v15; // eax + int v16; // ecx + int v17; // eax + int result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + std::ios_base *v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + __int64 v24; // [esp+40h] [ebp-48h] + int v25; // [esp+48h] [ebp-40h] + int v26; // [esp+50h] [ebp-38h] + __int64 v27; // [esp+58h] [ebp-30h] + int v28; // [esp+60h] [ebp-28h] + int v29; // [esp+68h] [ebp-20h] + + v3 = a2[1]; + *this = v3; + v4 = (int)this + *(_DWORD *)(v3 - 12); + *(_DWORD *)v4 = a2[2]; + v21 = (std::ios_base *)((char *)a3 + *(_DWORD *)(*a3 - 12)); + std::ios_base::_M_move(v4, v21, v19); + std::ios::_M_cache_locale((_DWORD *)v4, v4 + 108); + *(_DWORD *)(v4 + 120) = 0; + v5 = *((_DWORD *)v21 + 28); + *((_DWORD *)v21 + 28) = 0; + v6 = *((_WORD *)v21 + 58); + *(_DWORD *)(v4 + 112) = v5; + *(_WORD *)(v4 + 116) = v6; + v7 = a2[3]; + v8 = *a2; + *this = *a2; + v24 = -1LL; + *(int *)((char *)this + *(_DWORD *)(v8 - 12)) = v7; + v9 = a3[10]; + v22 = this + 1; + v10 = a3[2]; + v25 = -1; + v26 = -1; + v27 = -1LL; + v28 = -1; + v29 = -1; + if ( !v10 ) + { + v11 = a3[5]; + if ( !v11 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v10 - v9); + v25 = a3[3] - v9; + v10 = a3[4]; + v26 = v10 - v9; + v11 = a3[5]; + if ( v11 ) + { +LABEL_3: + v12 = a3[6]; + v27 = v11 - v9; + v28 = v12 - v11; + v29 = a3[7] - v9; + if ( v10 < v12 ) + v10 = a3[6]; + } + if ( v10 ) + a3[11] = v10 - v9; +LABEL_7: + std::streambuf::basic_streambuf(v22, (int)(a3 + 1), v20); + this[9] = a3[9]; + this[1] = (int)&off_4F5918; + this[10] = (int)(this + 12); + v13 = (_DWORD *)a3[10]; + if ( v13 == a3 + 12 ) + { + this[12] = a3[12]; + this[13] = a3[13]; + this[14] = a3[14]; + this[15] = a3[15]; + } + else + { + this[10] = (int)v13; + this[12] = a3[12]; + } + v14 = a3[11]; + a3[10] = a3 + 12; + a3[11] = 0; + this[11] = v14; + *((_BYTE *)a3 + 48) = 0; + v15 = this[10]; + if ( ((unsigned int)v24 & HIDWORD(v24)) != -1 ) + { + this[2] = v15 + v24; + this[3] = v15 + v25; + this[4] = v15 + v26; + } + if ( ((unsigned int)v27 & HIDWORD(v27)) != -1 ) + { + v16 = v15 + v29; + v17 = v27 + v15; + this[7] = v16; + this[5] = v17; + this[6] = v28 + v17; + } + std::stringbuf::_M_sync(a3 + 1, (_DWORD *)a3[10], 0, 0); + result = *(_DWORD *)(*this - 12); + *(int *)((char *)this + result + 120) = (int)v22; + return result; +} +// 4C8D11: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C8B33: variable 'v19' is possibly undefined +// 4C8C68: variable 'v20' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); + +//----- (004C8E00) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4) +{ + int v5; // eax + char *v6; // ecx + int v7; // eax + int v8; // ecx + int v9; // eax + unsigned __int8 *v10; // edx + unsigned int v11; // eax + int v13; // [esp+8h] [ebp-30h] + + v5 = a2[1]; + *(_DWORD *)this = v5; + v6 = &this[*(_DWORD *)(v5 - 12)]; + *(_DWORD *)v6 = a2[2]; + std::ios::init((int)v6, 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + *((_DWORD *)this + 1) = &off_4F6414; + *((_DWORD *)this + 2) = 0; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + std::locale::locale((_DWORD *)this + 8); + *((_DWORD *)this + 1) = &off_4F5918; + *((_DWORD *)this + 9) = 0; + v9 = *(_DWORD *)(a3 + 4); + v10 = *(unsigned __int8 **)a3; + LOBYTE(v13) = 0; + *((_DWORD *)this + 10) = this + 48; + std::string::_M_construct((void **)this + 10, v10, (size_t)&v10[v9], v13); + *((_DWORD *)this + 9) = a4 | 0x10; + v11 = 0; + if ( (a4 & 3) != 0 ) + v11 = *((_DWORD *)this + 11); + std::stringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v11); + return std::ios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 4)); +} +// 4C8EAE: variable 'v13' is possibly undefined +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C8F40) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2, int a3) +{ + int v4; // edi + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + + v4 = (int)(this + 1); + v5 = a2[1]; + *this = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); + *v6 = a2[2]; + std::ios::init((int)v6, 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + this[1] = (int)&off_4F6414; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + *((_BYTE *)this + 48) = 0; + this[11] = 0; + this[1] = (int)&off_4F5918; + this[9] = a3 | 0x10; + this[10] = (int)(this + 12); + return std::ios::init((int)this + *(_DWORD *)(*this - 12), v4); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C9020) -------------------------------------------------------- +BOOL __thiscall std::ostringstream::basic_ostringstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // ecx + + v3 = (int)(this + 1); + v4 = a2[1]; + *this = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); + *v5 = a2[2]; + std::ios::init((int)v5, 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[1] = (int)&off_4F6414; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + *((_BYTE *)this + 48) = 0; + this[10] = (int)(this + 12); + v8 = *this; + this[11] = 0; + this[1] = (int)&off_4F5918; + v9 = *(_DWORD *)(v8 - 12); + this[9] = 16; + return std::ios::init((int)this + v9, v3); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C9100) -------------------------------------------------------- +void __fastcall std::ostringstream::~ostringstream(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[10]; + *a1 = &off_4F5C0C; + a1[16] = off_4F5C20; + a1[1] = &off_4F5918; + if ( v2 != a1 + 12 ) + operator delete(v2); + a1[1] = &off_4F6414; + std::locale::~locale((_DWORD **)a1 + 8); + *a1 = &unk_4F0EF0; + a1[16] = &off_4F6E10; + std::ios_base::~ios_base((int)(a1 + 16)); + operator delete(a1); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5C0C: using guessed type int (*off_4F5C0C)(); +// 4F5C20: using guessed type int (*off_4F5C20[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004C9160) -------------------------------------------------------- +void __fastcall std::ostringstream::~ostringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 40); + *(_DWORD *)a1 = &off_4F5C0C; + *(_DWORD *)(a1 + 64) = off_4F5C20; + *(_DWORD *)(a1 + 4) = &off_4F5918; + if ( v2 != (void *)(a1 + 48) ) + operator delete(v2); + *(_DWORD *)(a1 + 4) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F0EF0; + *(_DWORD *)(a1 + 64) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 64); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5C0C: using guessed type int (*off_4F5C0C)(); +// 4F5C20: using guessed type int (*off_4F5C20[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004C91C0) -------------------------------------------------------- +int __thiscall std::ostringstream::~ostringstream(int *this, int *a2) +{ + int v3; // eax + char *v4; // eax + int v5; // eax + int result; // eax + + v3 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + v4 = (char *)this[10]; + this[1] = (int)&off_4F5918; + if ( v4 != (char *)(this + 12) ) + operator delete(v4); + this[1] = (int)&off_4F6414; + std::locale::~locale((_DWORD **)this + 8); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(int *)((char *)this + result) = a2[2]; + return result; +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F6414: using guessed type int (*off_4F6414)(); + +//----- (004C9220) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::ostringstream::operator=(volatile signed __int32 **this, int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + unsigned int v7; // eax + int v8; // ecx + const void *v9; // edx + volatile signed __int32 *v10; // eax + volatile signed __int32 *v11; // esi + _DWORD *v12; // edx + int v13; // eax + int v14; // ebx + int v15; // edi + __int64 v16; // rcx + int v17; // edi + int v18; // eax + int v19; // edi + volatile signed __int32 *v21; // ecx + std::ios_base *v22; // [esp+4h] [ebp-74h] + const std::locale *v23; // [esp+4h] [ebp-74h] + const std::locale *v24; // [esp+4h] [ebp-74h] + unsigned int v25; // [esp+10h] [ebp-68h] + volatile signed __int32 *v26; // [esp+14h] [ebp-64h] + _DWORD *v28; // [esp+20h] [ebp-58h] BYREF + _DWORD *v29; // [esp+24h] [ebp-54h] BYREF + _DWORD *v30; // [esp+28h] [ebp-50h] + __int64 v31; // [esp+30h] [ebp-48h] + int v32; // [esp+38h] [ebp-40h] + int v33; // [esp+3Ch] [ebp-3Ch] + __int64 v34; // [esp+40h] [ebp-38h] + __int64 v35; // [esp+48h] [ebp-30h] + __int64 v36; // [esp+50h] [ebp-28h] + int v37; // [esp+58h] [ebp-20h] + int v38; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)this + *((_DWORD *)*this - 3); + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v22); + std::ios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::ios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v31 = -1LL; + *(_DWORD *)(v2 + 112) = v5; + *(_DWORD *)(v3 + 112) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 116); + LOBYTE(v5) = *(_BYTE *)(v2 + 116); + v32 = -1; + *(_BYTE *)(v2 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 117); + *(_BYTE *)(v3 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 117); + *(_BYTE *)(v2 + 117) = v4; + *(_BYTE *)(v3 + 117) = v5; + v33 = -1; + v6 = *(_DWORD *)(a2 + 40); + v30 = this + 1; + v7 = *(_DWORD *)(a2 + 8); + v34 = -1LL; + v35 = -1LL; + v36 = -1LL; + v37 = -1; + v38 = -1; + if ( !v7 ) + { + v8 = *(_DWORD *)(a2 + 20); + if ( !v8 ) + goto LABEL_7; + goto LABEL_3; + } + v31 = (int)(v7 - v6); + v32 = *(_DWORD *)(a2 + 12) - v6; + v33 = v32 >> 31; + v7 = *(_DWORD *)(a2 + 16); + v34 = (int)(v7 - v6); + v8 = *(_DWORD *)(a2 + 20); + if ( v8 ) + { +LABEL_3: + v35 = v8 - v6; + v25 = *(_DWORD *)(a2 + 24); + v36 = (int)(v25 - v8); + v37 = *(_DWORD *)(a2 + 28) - v6; + v38 = v37 >> 31; + if ( v7 < v25 ) + v7 = v25; + } + if ( v7 ) + *(_DWORD *)(a2 + 44) = v7 - v6; +LABEL_7: + std::streambuf::operator=(this + 1, a2 + 4); + std::locale::locale((volatile signed __int32 **)&v29, (volatile signed __int32 **)(a2 + 32), v23); + std::locale::locale((volatile signed __int32 **)&v28, this + 8, v24); + std::locale::operator=(this + 8, (volatile signed __int32 **)&v29); + std::locale::~locale(&v28); + std::locale::~locale(&v29); + v9 = *(const void **)(a2 + 40); + this[9] = *(volatile signed __int32 **)(a2 + 36); + v10 = this[10]; + if ( v9 == (const void *)(a2 + 48) ) + { + v21 = *(volatile signed __int32 **)(a2 + 44); + if ( v21 ) + { + if ( v21 == (volatile signed __int32 *)1 ) + *(_BYTE *)v10 = *(_BYTE *)(a2 + 48); + else + memcpy((void *)v10, v9, *(_DWORD *)(a2 + 44)); + v21 = *(volatile signed __int32 **)(a2 + 44); + v10 = this[10]; + } + this[11] = v21; + *((_BYTE *)v21 + (_DWORD)v10) = 0; + v10 = *(volatile signed __int32 **)(a2 + 40); + } + else + { + v26 = *(volatile signed __int32 **)(a2 + 44); + if ( v10 == (volatile signed __int32 *)(this + 12) ) + { + this[10] = (volatile signed __int32 *)v9; + this[11] = v26; + this[12] = *(volatile signed __int32 **)(a2 + 48); + } + else + { + v11 = this[12]; + this[10] = (volatile signed __int32 *)v9; + this[11] = v26; + this[12] = *(volatile signed __int32 **)(a2 + 48); + if ( v10 ) + { + *(_DWORD *)(a2 + 40) = v10; + *(_DWORD *)(a2 + 48) = v11; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 40) = a2 + 48; + v10 = (volatile signed __int32 *)(a2 + 48); + } +LABEL_11: + *(_DWORD *)(a2 + 44) = 0; + *(_BYTE *)v10 = 0; + std::stringbuf::_M_sync((_DWORD *)(a2 + 4), *(_DWORD **)(a2 + 40), 0, 0); + v12 = v30; + v13 = v30[9]; + if ( ((unsigned int)v31 & HIDWORD(v31)) != -1 ) + { + v14 = v34; + v15 = v32; + v30[1] = v13 + v31; + v12[2] = v13 + v15; + v12[3] = v13 + v14; + } + if ( ((unsigned int)v35 & HIDWORD(v35)) != -1 ) + { + v16 = v36; + v17 = v13 + v37; + v18 = v35 + v13; + v12[6] = v17; + v12[4] = v18; + if ( v16 > 0x7FFFFFFF ) + { + v19 = v18 + 0x7FFFFFFF; + do + { + v18 = v19; + v16 -= 0x7FFFFFFFLL; + v19 += 0x7FFFFFFF; + } + while ( v16 > 0x7FFFFFFF ); + } + v12[5] = v16 + v18; + } + return this; +} +// 4C9240: variable 'v22' is possibly undefined +// 4C9392: variable 'v23' is possibly undefined +// 4C93A6: variable 'v24' is possibly undefined + +//----- (004C9590) -------------------------------------------------------- +int __thiscall std::wostringstream::str(int this, int a2) +{ + _DWORD *v2; // esi + unsigned int v4; // eax + + v2 = (_DWORD *)(this + 4); + std::wstring::_M_replace(this + 40, 0, *(_DWORD *)(this + 44), *(wchar_t **)a2, *(_DWORD *)(a2 + 4)); + v4 = 0; + if ( (*(_BYTE *)(this + 36) & 3) != 0 ) + v4 = *(_DWORD *)(this + 44); + return std::wstringbuf::_M_sync(v2, *(_DWORD **)(this + 40), 0, v4); +} + +//----- (004C9600) -------------------------------------------------------- +int __thiscall std::wostringstream::swap(_DWORD *this, _DWORD *a2) +{ + int v3; // esi + std::ios_base *v4; // ebx + int v5; // eax + __int16 v6; // dx + std::ios_base *v8; // [esp+4h] [ebp-28h] + + v3 = (int)this + *(_DWORD *)(*this - 12); + v4 = (std::ios_base *)((char *)a2 + *(_DWORD *)(*a2 - 12)); + std::ios_base::_M_swap(v3, v4, v8); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + std::wios::_M_cache_locale(v4, (int)v4 + 108); + v5 = *(_DWORD *)(v3 + 112); + *(_DWORD *)(v3 + 112) = *((_DWORD *)v4 + 28); + v6 = *((_WORD *)v4 + 58); + *((_DWORD *)v4 + 28) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_WORD *)(v3 + 116) = v6; + LOBYTE(v6) = *(_BYTE *)(v3 + 118); + *((_WORD *)v4 + 58) = v5; + *(_BYTE *)(v3 + 118) = *((_BYTE *)v4 + 118); + *((_BYTE *)v4 + 118) = v6; + return std::wstringbuf::swap(this + 1, (int)(a2 + 1)); +} +// 4C9624: variable 'v8' is possibly undefined + +//----- (004C9690) -------------------------------------------------------- +char *__thiscall std::wostringstream::basic_ostringstream(char *this, int *a2) +{ + int v3; // eax + int v4; // esi + int v5; // esi + int v6; // eax + int v7; // edx + unsigned int v8; // eax + int v9; // ecx + int v10; // eax + int *v11; // eax + int v12; // eax + int v13; // edx + int v14; // ecx + int v15; // edx + char *result; // eax + std::ios_base *v17; // [esp+4h] [ebp-84h] + const std::locale *v18; // [esp+4h] [ebp-84h] + _DWORD *v19; // [esp+1Ch] [ebp-6Ch] + _DWORD *v20; // [esp+20h] [ebp-68h] + _DWORD *v21; // [esp+28h] [ebp-60h] + int v22; // [esp+40h] [ebp-48h] + int v23; // [esp+44h] [ebp-44h] + int v24; // [esp+48h] [ebp-40h] + int v25; // [esp+50h] [ebp-38h] + int v26; // [esp+58h] [ebp-30h] + int v27; // [esp+5Ch] [ebp-2Ch] + int v28; // [esp+60h] [ebp-28h] + int v29; // [esp+68h] [ebp-20h] + + v20 = this + 64; + std::ios_base::ios_base((_DWORD *)this + 16); + v3 = *a2; + this[182] = 0; + *((_DWORD *)this + 44) = 0; + v4 = *(_DWORD *)(v3 - 12); + *(_DWORD *)this = &unk_4F0F18; + *((_WORD *)this + 90) = 0; + v5 = (int)a2 + v4; + *((_DWORD *)this + 46) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *((_DWORD *)this + 16) = &unk_4F0F2C; + std::ios_base::_M_move((int)v20, (std::ios_base *)v5, v17); + std::wios::_M_cache_locale(v20, (int)(this + 172)); + v6 = *(_DWORD *)(v5 + 112); + *(_DWORD *)(v5 + 112) = 0; + v19 = a2 + 1; + v7 = a2[10]; + *((_DWORD *)this + 44) = v6; + LOWORD(v6) = *(_WORD *)(v5 + 116); + *((_DWORD *)this + 46) = 0; + *((_WORD *)this + 90) = v6; + LOBYTE(v6) = *(_BYTE *)(v5 + 118); + *(_DWORD *)this = &off_4F5C34; + this[182] = v6; + v21 = this + 4; + v8 = a2[2]; + *((_DWORD *)this + 16) = off_4F5C48; + v22 = -1; + v23 = -1; + v24 = -1; + v25 = -1; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + if ( !v8 ) + { + v9 = a2[5]; + if ( !v9 ) + goto LABEL_7; + goto LABEL_3; + } + v22 = (int)(v8 - v7) >> 1; + v23 = (int)(v8 - v7) >> 31; + v24 = (a2[3] - v7) >> 1; + v8 = a2[4]; + v25 = (int)(v8 - v7) >> 1; + v9 = a2[5]; + if ( v9 ) + { +LABEL_3: + v26 = (v9 - v7) >> 1; + v27 = (v9 - v7) >> 31; + v28 = (a2[6] - v9) >> 1; + v29 = (a2[7] - v7) >> 1; + if ( v8 < a2[6] ) + v8 = a2[6]; + } + if ( v8 ) + a2[11] = (int)(v8 - v7) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v21, (int)v19, v18); + *((_DWORD *)this + 1) = &off_4F5958; + v10 = a2[9]; + *((_DWORD *)this + 10) = this + 48; + *((_DWORD *)this + 9) = v10; + v11 = (int *)a2[10]; + if ( v11 == a2 + 12 ) + { + wmemcpy((wchar_t *)this + 24, (const wchar_t *)a2 + 24, 8u); + } + else + { + *((_DWORD *)this + 10) = v11; + *((_DWORD *)this + 12) = a2[12]; + } + v12 = a2[11]; + a2[10] = (int)(a2 + 12); + a2[11] = 0; + *((_DWORD *)this + 11) = v12; + *((_WORD *)a2 + 24) = 0; + v13 = *((_DWORD *)this + 10); + if ( (v22 & v23) != -1 ) + { + *((_DWORD *)this + 2) = v13 + 2 * v22; + *((_DWORD *)this + 3) = v13 + 2 * v24; + *((_DWORD *)this + 4) = v13 + 2 * v25; + } + if ( (v26 & v27) != -1 ) + { + v14 = v13 + 2 * v29; + v15 = v13 + 2 * v26; + *((_DWORD *)this + 7) = v14; + *((_DWORD *)this + 5) = v15; + *((_DWORD *)this + 6) = 2 * v28 + v15; + } + std::wstringbuf::_M_sync(v19, (_DWORD *)a2[10], 0, 0); + result = this + 4; + *((_DWORD *)this + 46) = v21; + return result; +} +// 4C9922: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C970A: variable 'v17' is possibly undefined +// 4C9864: variable 'v18' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5C34: using guessed type int (*off_4F5C34)(); +// 4F5C48: using guessed type int (*off_4F5C48[2])(); + +//----- (004C9A10) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int a2, int a3) +{ + int v3; // esi + int v5; // eax + wchar_t *v6; // edx + unsigned int v7; // eax + int v9; // [esp+8h] [ebp-30h] + + v3 = (int)(this + 64); + std::ios_base::ios_base((_DWORD *)this + 16); + this[182] = 0; + *((_DWORD *)this + 44) = 0; + *((_WORD *)this + 90) = 0; + *((_DWORD *)this + 46) = 0; + *((_DWORD *)this + 47) = 0; + *((_DWORD *)this + 48) = 0; + *((_DWORD *)this + 49) = 0; + *(_DWORD *)this = &unk_4F0F18; + *((_DWORD *)this + 16) = &unk_4F0F2C; + std::wios::init(v3, 0); + *(_DWORD *)this = &off_4F5C34; + *((_DWORD *)this + 16) = off_4F5C48; + *((_DWORD *)this + 1) = &off_4F6454; + *((_DWORD *)this + 2) = 0; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + std::locale::locale((_DWORD *)this + 8); + *((_DWORD *)this + 1) = &off_4F5958; + *((_DWORD *)this + 9) = 0; + v5 = *(_DWORD *)(a2 + 4); + v6 = *(wchar_t **)a2; + LOBYTE(v9) = 0; + *((_DWORD *)this + 10) = this + 48; + std::wstring::_M_construct((wchar_t **)this + 10, v6, (int)&v6[v5], v9); + *((_DWORD *)this + 9) = a3 | 0x10; + v7 = 0; + if ( (a3 & 3) != 0 ) + v7 = *((_DWORD *)this + 11); + std::wstringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v7); + return std::wios::init(v3, (int)(this + 4)); +} +// 4C9B0D: variable 'v9' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5C34: using guessed type int (*off_4F5C34)(); +// 4F5C48: using guessed type int (*off_4F5C48[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C9BA0) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(_DWORD *this, int a2) +{ + int v2; // esi + + v2 = (int)(this + 16); + std::ios_base::ios_base(this + 16); + *((_BYTE *)this + 182) = 0; + this[44] = 0; + *((_WORD *)this + 90) = 0; + this[46] = 0; + this[47] = 0; + this[48] = 0; + this[49] = 0; + *this = &unk_4F0F18; + this[16] = &unk_4F0F2C; + std::wios::init(v2, 0); + *this = &off_4F5C34; + this[16] = off_4F5C48; + this[1] = &off_4F6454; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + this[1] = &off_4F5958; + this[11] = 0; + this[9] = a2 | 0x10; + this[10] = this + 12; + *((_WORD *)this + 24) = 0; + return std::wios::init(v2, (int)(this + 1)); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5C34: using guessed type int (*off_4F5C34)(); +// 4F5C48: using guessed type int (*off_4F5C48[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C9CD0) -------------------------------------------------------- +BOOL __fastcall std::wostringstream::basic_ostringstream(int a1) +{ + int v1; // esi + + v1 = a1 + 64; + std::ios_base::ios_base((_DWORD *)(a1 + 64)); + *(_BYTE *)(a1 + 182) = 0; + *(_DWORD *)(a1 + 176) = 0; + *(_WORD *)(a1 + 180) = 0; + *(_DWORD *)(a1 + 184) = 0; + *(_DWORD *)(a1 + 188) = 0; + *(_DWORD *)(a1 + 192) = 0; + *(_DWORD *)(a1 + 196) = 0; + *(_DWORD *)a1 = &unk_4F0F18; + *(_DWORD *)(a1 + 64) = &unk_4F0F2C; + std::wios::init(v1, 0); + *(_DWORD *)a1 = &off_4F5C34; + *(_DWORD *)(a1 + 64) = off_4F5C48; + *(_DWORD *)(a1 + 4) = &off_4F6454; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 0; + *(_DWORD *)(a1 + 16) = 0; + *(_DWORD *)(a1 + 20) = 0; + *(_DWORD *)(a1 + 24) = 0; + *(_DWORD *)(a1 + 28) = 0; + std::locale::locale((_DWORD *)(a1 + 32)); + *(_DWORD *)(a1 + 40) = a1 + 48; + *(_DWORD *)(a1 + 4) = &off_4F5958; + *(_DWORD *)(a1 + 36) = 16; + *(_DWORD *)(a1 + 44) = 0; + *(_WORD *)(a1 + 48) = 0; + return std::wios::init(v1, a1 + 4); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5C34: using guessed type int (*off_4F5C34)(); +// 4F5C48: using guessed type int (*off_4F5C48[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004C9E00) -------------------------------------------------------- +int __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3) +{ + int v3; // eax + int v4; // esi + int v5; // edx + char v6; // al + int v7; // edx + int v8; // eax + int v9; // edx + unsigned int v10; // eax + int v11; // ecx + unsigned int v12; // esi + int v13; // eax + int v14; // eax + int v15; // edx + int v16; // ecx + int v17; // edx + int result; // eax + std::ios_base *v19; // [esp+4h] [ebp-84h] + const std::locale *v20; // [esp+4h] [ebp-84h] + int v21; // [esp+20h] [ebp-68h] + _DWORD *v22; // [esp+28h] [ebp-60h] + int v24; // [esp+40h] [ebp-48h] + int v25; // [esp+44h] [ebp-44h] + int v26; // [esp+48h] [ebp-40h] + int v27; // [esp+50h] [ebp-38h] + int v28; // [esp+58h] [ebp-30h] + int v29; // [esp+5Ch] [ebp-2Ch] + __int64 v30; // [esp+60h] [ebp-28h] + int v31; // [esp+68h] [ebp-20h] + + v3 = a2[1]; + *(_DWORD *)this = v3; + v4 = (int)&this[*(_DWORD *)(v3 - 12)]; + *(_DWORD *)v4 = a2[2]; + v21 = a3 + *(_DWORD *)(*(_DWORD *)a3 - 12); + std::ios_base::_M_move(v4, (std::ios_base *)v21, v19); + std::wios::_M_cache_locale((_DWORD *)v4, v4 + 108); + *(_DWORD *)(v4 + 120) = 0; + v5 = *(_DWORD *)(v21 + 112); + *(_DWORD *)(v21 + 112) = 0; + *(_DWORD *)(v4 + 112) = v5; + v6 = *(_BYTE *)(v21 + 118); + *(_WORD *)(v4 + 116) = *(_WORD *)(v21 + 116); + *(_BYTE *)(v4 + 118) = v6; + v7 = a2[3]; + v8 = *a2; + *(_DWORD *)this = *a2; + v24 = -1; + *(_DWORD *)&this[*(_DWORD *)(v8 - 12)] = v7; + v22 = this + 4; + v25 = -1; + v26 = -1; + v27 = -1; + v28 = -1; + v29 = -1; + LODWORD(v30) = -1; + v31 = -1; + v9 = *(_DWORD *)(a3 + 40); + v10 = *(_DWORD *)(a3 + 8); + if ( !v10 ) + { + v11 = *(_DWORD *)(a3 + 20); + if ( !v11 ) + goto LABEL_7; + goto LABEL_3; + } + v24 = (int)(v10 - v9) >> 1; + v25 = (int)(v10 - v9) >> 31; + v26 = (*(_DWORD *)(a3 + 12) - v9) >> 1; + v10 = *(_DWORD *)(a3 + 16); + v27 = (int)(v10 - v9) >> 1; + v11 = *(_DWORD *)(a3 + 20); + if ( v11 ) + { +LABEL_3: + v12 = *(_DWORD *)(a3 + 24); + v28 = (v11 - v9) >> 1; + v29 = (v11 - v9) >> 31; + v30 = (int)(v12 - v11) >> 1; + v31 = (*(_DWORD *)(a3 + 28) - v9) >> 1; + if ( v10 < v12 ) + v10 = *(_DWORD *)(a3 + 24); + } + if ( v10 ) + *(_DWORD *)(a3 + 44) = (int)(v10 - v9) >> 1; +LABEL_7: + std::wstreambuf::basic_streambuf(v22, a3 + 4, v20); + *((_DWORD *)this + 9) = *(_DWORD *)(a3 + 36); + *((_DWORD *)this + 1) = &off_4F5958; + *((_DWORD *)this + 10) = this + 48; + v13 = *(_DWORD *)(a3 + 40); + if ( v13 == a3 + 48 ) + { + wmemcpy((wchar_t *)this + 24, (const wchar_t *)(a3 + 48), 8u); + } + else + { + *((_DWORD *)this + 10) = v13; + *((_DWORD *)this + 12) = *(_DWORD *)(a3 + 48); + } + v14 = *(_DWORD *)(a3 + 44); + *(_DWORD *)(a3 + 40) = a3 + 48; + *(_DWORD *)(a3 + 44) = 0; + *((_DWORD *)this + 11) = v14; + *(_WORD *)(a3 + 48) = 0; + v15 = *((_DWORD *)this + 10); + if ( (v24 & v25) != -1 ) + { + *((_DWORD *)this + 2) = v15 + 2 * v24; + *((_DWORD *)this + 3) = v15 + 2 * v26; + *((_DWORD *)this + 4) = v15 + 2 * v27; + } + if ( (v28 & v29) != -1 ) + { + v16 = v15 + 2 * v31; + v17 = v15 + 2 * v28; + *((_DWORD *)this + 7) = v16; + *((_DWORD *)this + 5) = v17; + *((_DWORD *)this + 6) = 2 * v30 + v17; + } + std::wstringbuf::_M_sync((_DWORD *)(a3 + 4), *(_DWORD **)(a3 + 40), 0, 0); + result = *(_DWORD *)(*(_DWORD *)this - 12); + *(_DWORD *)&this[result + 120] = v22; + return result; +} +// 4CA03D: conditional instruction was optimized away because %var_28.8 is in (<80000000u|>=FFFFFFFF80000000u) +// 4C9E33: variable 'v19' is possibly undefined +// 4C9F7D: variable 'v20' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); + +//----- (004CA120) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(char *this, int *a2, int a3, int a4) +{ + int v5; // eax + char *v6; // ecx + int v7; // eax + int v8; // ecx + int v9; // eax + wchar_t *v10; // edx + unsigned int v11; // eax + int v13; // [esp+8h] [ebp-30h] + + v5 = a2[1]; + *(_DWORD *)this = v5; + v6 = &this[*(_DWORD *)(v5 - 12)]; + *(_DWORD *)v6 = a2[2]; + std::wios::init((int)v6, 0); + v7 = *a2; + v8 = a2[3]; + *(_DWORD *)this = *a2; + *(_DWORD *)&this[*(_DWORD *)(v7 - 12)] = v8; + *((_DWORD *)this + 1) = &off_4F6454; + *((_DWORD *)this + 2) = 0; + *((_DWORD *)this + 3) = 0; + *((_DWORD *)this + 4) = 0; + *((_DWORD *)this + 5) = 0; + *((_DWORD *)this + 6) = 0; + *((_DWORD *)this + 7) = 0; + std::locale::locale((_DWORD *)this + 8); + *((_DWORD *)this + 1) = &off_4F5958; + *((_DWORD *)this + 9) = 0; + v9 = *(_DWORD *)(a3 + 4); + v10 = *(wchar_t **)a3; + LOBYTE(v13) = 0; + *((_DWORD *)this + 10) = this + 48; + std::wstring::_M_construct((wchar_t **)this + 10, v10, (int)&v10[v9], v13); + *((_DWORD *)this + 9) = a4 | 0x10; + v11 = 0; + if ( (a4 & 3) != 0 ) + v11 = *((_DWORD *)this + 11); + std::wstringbuf::_M_sync((_DWORD *)this + 1, *((_DWORD **)this + 10), 0, v11); + return std::wios::init((int)&this[*(_DWORD *)(*(_DWORD *)this - 12)], (int)(this + 4)); +} +// 4CA1D1: variable 'v13' is possibly undefined +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004CA270) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2, int a3) +{ + int v4; // edi + int v5; // eax + _DWORD *v6; // ecx + int v7; // eax + int v8; // edx + + v4 = (int)(this + 1); + v5 = a2[1]; + *this = v5; + v6 = (int *)((char *)this + *(_DWORD *)(v5 - 12)); + *v6 = a2[2]; + std::wios::init((int)v6, 0); + v7 = *a2; + v8 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v7 - 12)) = v8; + this[1] = (int)&off_4F6454; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + this[11] = 0; + this[1] = (int)&off_4F5958; + this[9] = a3 | 0x10; + this[10] = (int)(this + 12); + *((_WORD *)this + 24) = 0; + return std::wios::init((int)this + *(_DWORD *)(*this - 12), v4); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004CA350) -------------------------------------------------------- +BOOL __thiscall std::wostringstream::basic_ostringstream(int *this, int *a2) +{ + int v3; // edi + int v4; // eax + _DWORD *v5; // ecx + int v6; // eax + int v7; // edx + int v8; // eax + int v9; // ecx + + v3 = (int)(this + 1); + v4 = a2[1]; + *this = v4; + v5 = (int *)((char *)this + *(_DWORD *)(v4 - 12)); + *v5 = a2[2]; + std::wios::init((int)v5, 0); + v6 = *a2; + v7 = a2[3]; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v6 - 12)) = v7; + this[1] = (int)&off_4F6454; + this[2] = 0; + this[3] = 0; + this[4] = 0; + this[5] = 0; + this[6] = 0; + this[7] = 0; + std::locale::locale(this + 8); + this[11] = 0; + this[10] = (int)(this + 12); + *((_WORD *)this + 24) = 0; + v8 = *this; + this[1] = (int)&off_4F5958; + v9 = *(_DWORD *)(v8 - 12); + this[9] = 16; + return std::wios::init((int)this + v9, v3); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004CA430) -------------------------------------------------------- +void __fastcall std::wostringstream::~wostringstream(_DWORD *a1) +{ + _DWORD *v2; // eax + + v2 = (_DWORD *)a1[10]; + *a1 = &off_4F5C34; + a1[16] = off_4F5C48; + a1[1] = &off_4F5958; + if ( v2 != a1 + 12 ) + operator delete(v2); + a1[1] = &off_4F6454; + std::locale::~locale((_DWORD **)a1 + 8); + *a1 = &unk_4F0F18; + a1[16] = &off_4F6E20; + std::ios_base::~ios_base((int)(a1 + 16)); + operator delete(a1); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5C34: using guessed type int (*off_4F5C34)(); +// 4F5C48: using guessed type int (*off_4F5C48[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004CA490) -------------------------------------------------------- +void __fastcall std::wostringstream::~wostringstream(int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 40); + *(_DWORD *)a1 = &off_4F5C34; + *(_DWORD *)(a1 + 64) = off_4F5C48; + *(_DWORD *)(a1 + 4) = &off_4F5958; + if ( v2 != (void *)(a1 + 48) ) + operator delete(v2); + *(_DWORD *)(a1 + 4) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F0F18; + *(_DWORD *)(a1 + 64) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 64); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5C34: using guessed type int (*off_4F5C34)(); +// 4F5C48: using guessed type int (*off_4F5C48[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004CA4F0) -------------------------------------------------------- +int __thiscall std::wostringstream::~wostringstream(int *this, int *a2) +{ + int v3; // eax + char *v4; // eax + int v5; // eax + int result; // eax + + v3 = *a2; + *this = *a2; + *(int *)((char *)this + *(_DWORD *)(v3 - 12)) = a2[3]; + v4 = (char *)this[10]; + this[1] = (int)&off_4F5958; + if ( v4 != (char *)(this + 12) ) + operator delete(v4); + this[1] = (int)&off_4F6454; + std::locale::~locale((_DWORD **)this + 8); + v5 = a2[1]; + *this = v5; + result = *(_DWORD *)(v5 - 12); + *(int *)((char *)this + result) = a2[2]; + return result; +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004CA550) -------------------------------------------------------- +char *__thiscall std::wostringstream::operator=(char *this, int a2) +{ + int v2; // esi + int v3; // edi + int v4; // eax + int v5; // edx + int v6; // edx + unsigned int v7; // eax + int v8; // ecx + unsigned int v9; // esi + int v10; // ecx + wchar_t *v11; // eax + wchar_t *v12; // edx + int v13; // esi + _DWORD *v14; // ecx + int v15; // ebx + int v16; // edx + int v17; // edi + __int64 v18; // rax + int v19; // edi + int v20; // ebx + int v21; // edi + int v23; // ecx + std::ios_base *v24; // [esp+4h] [ebp-74h] + const std::locale *v25; // [esp+4h] [ebp-74h] + const std::locale *v26; // [esp+4h] [ebp-74h] + int v27; // [esp+14h] [ebp-64h] + _DWORD *v29; // [esp+20h] [ebp-58h] BYREF + _DWORD *v30; // [esp+24h] [ebp-54h] BYREF + _DWORD *v31; // [esp+28h] [ebp-50h] + int v32; // [esp+30h] [ebp-48h] + int v33; // [esp+34h] [ebp-44h] + int v34; // [esp+38h] [ebp-40h] + int v35; // [esp+3Ch] [ebp-3Ch] + __int64 v36; // [esp+40h] [ebp-38h] + int v37; // [esp+48h] [ebp-30h] + int v38; // [esp+4Ch] [ebp-2Ch] + __int64 v39; // [esp+50h] [ebp-28h] + int v40; // [esp+58h] [ebp-20h] + int v41; // [esp+5Ch] [ebp-1Ch] + + v2 = (int)&this[*(_DWORD *)(*(_DWORD *)this - 12)]; + v3 = a2 + *(_DWORD *)(*(_DWORD *)a2 - 12); + std::ios_base::_M_swap(v2, (std::ios_base *)v3, v24); + std::wios::_M_cache_locale((_DWORD *)v2, v2 + 108); + std::wios::_M_cache_locale((_DWORD *)v3, v3 + 108); + v4 = *(_DWORD *)(v2 + 112); + v5 = *(_DWORD *)(v3 + 112); + v32 = -1; + v33 = -1; + *(_DWORD *)(v2 + 112) = v5; + LOWORD(v5) = *(_WORD *)(v3 + 116); + *(_DWORD *)(v3 + 112) = v4; + LOWORD(v4) = *(_WORD *)(v2 + 116); + *(_WORD *)(v2 + 116) = v5; + LOBYTE(v5) = *(_BYTE *)(v2 + 118); + *(_WORD *)(v3 + 116) = v4; + LOBYTE(v4) = *(_BYTE *)(v3 + 118); + v34 = -1; + *(_BYTE *)(v2 + 118) = v4; + *(_BYTE *)(v3 + 118) = v5; + v35 = -1; + v6 = *(_DWORD *)(a2 + 40); + v31 = this + 4; + v7 = *(_DWORD *)(a2 + 8); + v36 = -1LL; + v37 = -1; + v38 = -1; + v39 = -1LL; + v40 = -1; + v41 = -1; + if ( !v7 ) + { + v8 = *(_DWORD *)(a2 + 20); + if ( !v8 ) + goto LABEL_7; + goto LABEL_3; + } + v32 = (int)(v7 - v6) >> 1; + v33 = (int)(v7 - v6) >> 31; + v34 = (*(_DWORD *)(a2 + 12) - v6) >> 1; + v35 = v34 >> 31; + v7 = *(_DWORD *)(a2 + 16); + v36 = (int)(v7 - v6) >> 1; + v8 = *(_DWORD *)(a2 + 20); + if ( v8 ) + { +LABEL_3: + v37 = (v8 - v6) >> 1; + v38 = (v8 - v6) >> 31; + v9 = *(_DWORD *)(a2 + 24); + v39 = (int)(v9 - v8) >> 1; + v40 = (*(_DWORD *)(a2 + 28) - v6) >> 1; + v41 = v40 >> 31; + if ( v7 < v9 ) + v7 = v9; + } + if ( v7 ) + *(_DWORD *)(a2 + 44) = (int)(v7 - v6) >> 1; +LABEL_7: + std::wstreambuf::operator=((volatile signed __int32 **)this + 1, a2 + 4); + std::locale::locale((volatile signed __int32 **)&v30, (volatile signed __int32 **)(a2 + 32), v25); + std::locale::locale((volatile signed __int32 **)&v29, (volatile signed __int32 **)this + 8, v26); + std::locale::operator=((volatile signed __int32 **)this + 8, (volatile signed __int32 **)&v30); + std::locale::~locale(&v29); + std::locale::~locale(&v30); + v10 = *(_DWORD *)(a2 + 40); + *((_DWORD *)this + 9) = *(_DWORD *)(a2 + 36); + v11 = (wchar_t *)*((_DWORD *)this + 10); + v12 = (wchar_t *)(a2 + 48); + if ( v10 == a2 + 48 ) + { + v23 = *(_DWORD *)(a2 + 44); + if ( v23 ) + { + if ( v23 == 1 ) + { + *v11 = *(_WORD *)(a2 + 48); + } + else + { + wmemcpy(v11, (const wchar_t *)(a2 + 48), *(_DWORD *)(a2 + 44)); + v23 = *(_DWORD *)(a2 + 44); + v12 = *(wchar_t **)(a2 + 40); + v11 = (wchar_t *)*((_DWORD *)this + 10); + } + } + *((_DWORD *)this + 11) = v23; + v11[v23] = 0; + v11 = v12; + } + else + { + v27 = *(_DWORD *)(a2 + 44); + if ( v11 == (wchar_t *)(this + 48) ) + { + *((_DWORD *)this + 10) = v10; + *((_DWORD *)this + 11) = v27; + *((_DWORD *)this + 12) = *(_DWORD *)(a2 + 48); + } + else + { + v13 = *((_DWORD *)this + 12); + *((_DWORD *)this + 10) = v10; + *((_DWORD *)this + 11) = v27; + *((_DWORD *)this + 12) = *(_DWORD *)(a2 + 48); + if ( v11 ) + { + *(_DWORD *)(a2 + 40) = v11; + *(_DWORD *)(a2 + 48) = v13; + goto LABEL_11; + } + } + *(_DWORD *)(a2 + 40) = v12; + v11 = (wchar_t *)(a2 + 48); + } +LABEL_11: + *(_DWORD *)(a2 + 44) = 0; + *v11 = 0; + std::wstringbuf::_M_sync((_DWORD *)(a2 + 4), v11, 0, 0); + v14 = v31; + v15 = v31[9]; + if ( (v32 & v33) != -1 ) + { + v16 = v36; + v17 = v34; + v31[1] = v15 + 2 * v32; + v14[2] = v15 + 2 * v17; + v14[3] = v15 + 2 * v16; + } + if ( (v38 & v37) != -1 ) + { + v18 = v39; + v19 = v15 + 2 * v40; + v20 = v15 + 2 * v37; + v14[6] = v19; + v14[4] = v20; + if ( v18 > 0x7FFFFFFF ) + { + v21 = v20 - 2; + do + { + v20 = v21; + v18 -= 0x7FFFFFFFLL; + v21 -= 2; + } + while ( v18 > 0x7FFFFFFF ); + } + v14[5] = v20 + 2 * v18; + } + return this; +} +// 4CA570: variable 'v24' is possibly undefined +// 4CA6CE: variable 'v25' is possibly undefined +// 4CA6E2: variable 'v26' is possibly undefined + +//----- (004CA8D0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F5C58; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004CA900) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F5C58; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004CA940) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F5C58; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004CA970) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F5C58; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004CA9B0) -------------------------------------------------------- +void __fastcall std::collate::~collate(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5C58; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CA9C9: variable 'v2' is possibly undefined +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004CA9E0) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C58; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CA9E9: variable 'v1' is possibly undefined +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004CAA10) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C58; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CAA19: variable 'v1' is possibly undefined +// 4F5C58: using guessed type int (*off_4F5C58)(); + +//----- (004CAA40) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F5C74; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004CAA70) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F5C74; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004CAAB0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F5C74; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004CAAE0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F5C74; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004CAB20) -------------------------------------------------------- +void __fastcall std::collate::~collate(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5C74; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CAB39: variable 'v2' is possibly undefined +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004CAB50) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C74; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CAB59: variable 'v1' is possibly undefined +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004CAB80) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C74; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CAB89: variable 'v1' is possibly undefined +// 4F5C74: using guessed type int (*off_4F5C74)(); + +//----- (004CABB0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_4F5C90; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004CABF0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F5C90; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004CAC30) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_4F5C90; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004CAC70) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F5C90; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004CACB0) -------------------------------------------------------- +void __fastcall std::messages::~messages(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5C90; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CACC9: variable 'v2' is possibly undefined +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004CACE0) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C90; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CACE9: variable 'v1' is possibly undefined +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004CAD10) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5C90; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CAD19: variable 'v1' is possibly undefined +// 4F5C90: using guessed type int (*off_4F5C90)(); + +//----- (004CAD40) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_4F5CAC; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004CAD80) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F5CAC; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004CADC0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_4F5CAC; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004CAE00) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F5CAC; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004CAE40) -------------------------------------------------------- +void __fastcall std::messages::~messages(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5CAC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CAE59: variable 'v2' is possibly undefined +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004CAE70) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5CAC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CAE79: variable 'v1' is possibly undefined +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004CAEA0) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5CAC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CAEA9: variable 'v1' is possibly undefined +// 4F5CAC: using guessed type int (*off_4F5CAC)(); + +//----- (004CAED0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) +{ + _DWORD *v3; // eax + char *v4; // ecx + int i; // eax + char *v6; // esi + int j; // eax + _DWORD *result; // eax + void (__cdecl *v9)(void *); // [esp+4h] [ebp-18h] + + v3 = (_DWORD *)this[2]; + if ( !v3 ) + { + v3 = operator new((struct type_info *)0x68, v9); + v3[1] = 0; + *v3 = &off_4F65A0; + v3[2] = 0; + v3[3] = 0; + *((_BYTE *)v3 + 16) = 0; + v3[5] = 0; + v3[6] = 0; + v3[7] = 0; + v3[8] = 0; + *((_WORD *)v3 + 18) = 0; + *((_BYTE *)v3 + 100) = 0; + this[2] = v3; + } + v3[2] = &unk_4EC630; + v4 = std::__num_base::_S_atoms_out[0]; + v3[3] = 0; + *((_BYTE *)v3 + 16) = 0; + *((_BYTE *)v3 + 36) = 46; + *(_BYTE *)(this[2] + 37) = 44; + for ( i = 0; i != 36; ++i ) + *(_BYTE *)(this[2] + i + 38) = v4[i]; + v6 = std::__num_base::_S_atoms_in[0]; + for ( j = 0; j != 26; ++j ) + *(_BYTE *)(this[2] + j + 74) = v6[j]; + result = (_DWORD *)this[2]; + result[5] = "true"; + result[6] = 4; + result[7] = "false"; + result[8] = 5; + return result; +} +// 4CAF72: variable 'v9' is possibly undefined +// 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (004CAFD0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5CC8; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004CB020) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5CC8; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004CB070) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_4F5CC8; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004CB0C0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5CC8; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004CB110) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5CC8; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004CB160) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_4F5CC8; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004CB1B0) -------------------------------------------------------- +void __fastcall std::numpunct::~numpunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4CB1B7: variable 'v2' is possibly undefined + +//----- (004CB1E0) -------------------------------------------------------- +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F5CC8; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4CB1E7: variable 'v1' is possibly undefined +// 4F5CC8: using guessed type int (*off_4F5CC8)(); + +//----- (004CB210) -------------------------------------------------------- +int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) +{ + _DWORD *v2; // edx + char *v3; // ebx + int v4; // eax + char *v5; // ebx + int result; // eax + _DWORD *v7; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-28h] + + v2 = (_DWORD *)this[2]; + if ( !v2 ) + { + v7 = operator new((struct type_info *)0xA8, v8); + v7[1] = 0; + v2 = v7; + *v7 = &off_4F65B0; + v7[2] = 0; + v7[3] = 0; + *((_BYTE *)v7 + 16) = 0; + v7[5] = 0; + v7[6] = 0; + v7[7] = 0; + v7[8] = 0; + v7[9] = 0; + *((_BYTE *)v7 + 164) = 0; + this[2] = v7; + } + v2[2] = &unk_4EC630; + v3 = std::__num_base::_S_atoms_out[0]; + v4 = 0; + v2[3] = 0; + *((_BYTE *)v2 + 16) = 0; + v2[9] = 2883630; + do + { + *((_WORD *)v2 + v4 + 20) = v3[v4]; + ++v4; + } + while ( v4 != 36 ); + v5 = std::__num_base::_S_atoms_in[0]; + for ( result = 0; result != 26; ++result ) + *((_WORD *)v2 + result + 56) = v5[result]; + v2[5] = &off_4EC63C; + v2[6] = 4; + v2[7] = &off_4EC646; + v2[8] = 5; + return result; +} +// 4CB2A0: variable 'v8' is possibly undefined +// 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; +// 4EC63C: using guessed type void *off_4EC63C; +// 4EC646: using guessed type void *off_4EC646; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (004CB300) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5CEC; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004CB350) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5CEC; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004CB3A0) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_4F5CEC; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004CB3F0) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5CEC; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004CB440) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F5CEC; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004CB490) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_4F5CEC; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004CB4E0) -------------------------------------------------------- +void __fastcall std::numpunct::~numpunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4CB4E7: variable 'v2' is possibly undefined + +//----- (004CB510) -------------------------------------------------------- +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F5CEC; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4CB517: variable 'v1' is possibly undefined +// 4F5CEC: using guessed type int (*off_4F5CEC)(); + +//----- (004CB540) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D10; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D10: using guessed type int (*off_4F5D10)(); + +//----- (004CB560) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D10; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D10: using guessed type int (*off_4F5D10)(); + +//----- (004CB580) -------------------------------------------------------- +void __fastcall std::time_get>::~time_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5D10; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB58C: variable 'v2' is possibly undefined +// 4F5D10: using guessed type int (*off_4F5D10)(); + +//----- (004CB5A0) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D10; + std::locale::facet::~facet(a1); +} +// 4CB5A0: variable 'v1' is possibly undefined +// 4F5D10: using guessed type int (*off_4F5D10)(); + +//----- (004CB5B0) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D10; + std::locale::facet::~facet(a1); +} +// 4CB5B0: variable 'v1' is possibly undefined +// 4F5D10: using guessed type int (*off_4F5D10)(); + +//----- (004CB5C0) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D3C; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D3C: using guessed type int (*off_4F5D3C)(); + +//----- (004CB5E0) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D3C; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D3C: using guessed type int (*off_4F5D3C)(); + +//----- (004CB600) -------------------------------------------------------- +void __fastcall std::time_get>::~time_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5D3C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB60C: variable 'v2' is possibly undefined +// 4F5D3C: using guessed type int (*off_4F5D3C)(); + +//----- (004CB620) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D3C; + std::locale::facet::~facet(a1); +} +// 4CB620: variable 'v1' is possibly undefined +// 4F5D3C: using guessed type int (*off_4F5D3C)(); + +//----- (004CB630) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D3C; + std::locale::facet::~facet(a1); +} +// 4CB630: variable 'v1' is possibly undefined +// 4F5D3C: using guessed type int (*off_4F5D3C)(); + +//----- (004CB640) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D68; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D68: using guessed type int (*off_4F5D68)(); + +//----- (004CB660) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D68; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D68: using guessed type int (*off_4F5D68)(); + +//----- (004CB680) -------------------------------------------------------- +void __fastcall std::money_get>::~money_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5D68; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB68C: variable 'v2' is possibly undefined +// 4F5D68: using guessed type int (*off_4F5D68)(); + +//----- (004CB6A0) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D68; + std::locale::facet::~facet(a1); +} +// 4CB6A0: variable 'v1' is possibly undefined +// 4F5D68: using guessed type int (*off_4F5D68)(); + +//----- (004CB6B0) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D68; + std::locale::facet::~facet(a1); +} +// 4CB6B0: variable 'v1' is possibly undefined +// 4F5D68: using guessed type int (*off_4F5D68)(); + +//----- (004CB6C0) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D80; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D80: using guessed type int (*off_4F5D80)(); + +//----- (004CB6E0) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D80; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D80: using guessed type int (*off_4F5D80)(); + +//----- (004CB700) -------------------------------------------------------- +void __fastcall std::money_get>::~money_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5D80; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB70C: variable 'v2' is possibly undefined +// 4F5D80: using guessed type int (*off_4F5D80)(); + +//----- (004CB720) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D80; + std::locale::facet::~facet(a1); +} +// 4CB720: variable 'v1' is possibly undefined +// 4F5D80: using guessed type int (*off_4F5D80)(); + +//----- (004CB730) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D80; + std::locale::facet::~facet(a1); +} +// 4CB730: variable 'v1' is possibly undefined +// 4F5D80: using guessed type int (*off_4F5D80)(); + +//----- (004CB740) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D98; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D98: using guessed type int (*off_4F5D98)(); + +//----- (004CB760) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5D98; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5D98: using guessed type int (*off_4F5D98)(); + +//----- (004CB780) -------------------------------------------------------- +void __fastcall std::money_put>::~money_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5D98; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB78C: variable 'v2' is possibly undefined +// 4F5D98: using guessed type int (*off_4F5D98)(); + +//----- (004CB7A0) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D98; + std::locale::facet::~facet(a1); +} +// 4CB7A0: variable 'v1' is possibly undefined +// 4F5D98: using guessed type int (*off_4F5D98)(); + +//----- (004CB7B0) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5D98; + std::locale::facet::~facet(a1); +} +// 4CB7B0: variable 'v1' is possibly undefined +// 4F5D98: using guessed type int (*off_4F5D98)(); + +//----- (004CB7C0) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5DB0; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5DB0: using guessed type int (*off_4F5DB0)(); + +//----- (004CB7E0) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F5DB0; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F5DB0: using guessed type int (*off_4F5DB0)(); + +//----- (004CB800) -------------------------------------------------------- +void __fastcall std::money_put>::~money_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F5DB0; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB80C: variable 'v2' is possibly undefined +// 4F5DB0: using guessed type int (*off_4F5DB0)(); + +//----- (004CB820) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5DB0; + std::locale::facet::~facet(a1); +} +// 4CB820: variable 'v1' is possibly undefined +// 4F5DB0: using guessed type int (*off_4F5DB0)(); + +//----- (004CB830) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F5DB0; + std::locale::facet::~facet(a1); +} +// 4CB830: variable 'v1' is possibly undefined +// 4F5DB0: using guessed type int (*off_4F5DB0)(); + +//----- (004CB840) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F68CC; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB84C: variable 'v2' is possibly undefined + +//----- (004CB860) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F68CC; + std::locale::facet::~facet(a1); +} +// 4CB860: variable 'v1' is possibly undefined + +//----- (004CB870) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F68F8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB87C: variable 'v2' is possibly undefined + +//----- (004CB890) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F68F8; + std::locale::facet::~facet(a1); +} +// 4CB890: variable 'v1' is possibly undefined + +//----- (004CB8A0) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F6924; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB8AC: variable 'v2' is possibly undefined + +//----- (004CB8C0) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F6924; + std::locale::facet::~facet(a1); +} +// 4CB8C0: variable 'v1' is possibly undefined + +//----- (004CB8D0) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &unk_4F6950; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CB8DC: variable 'v2' is possibly undefined + +//----- (004CB8F0) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &unk_4F6950; + std::locale::facet::~facet(a1); +} +// 4CB8F0: variable 'v1' is possibly undefined + +//----- (004CB900) -------------------------------------------------------- +int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F6B78; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F6B78: using guessed type int (*off_4F6B78)(); + +//----- (004CB930) -------------------------------------------------------- +int __thiscall std::codecvt::codecvt(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6B78; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6B78: using guessed type int (*off_4F6B78)(); + +//----- (004CB970) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4CB977: variable 'v2' is possibly undefined + +//----- (004CB9A0) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_4F6B78; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + *v2 = &unk_4F697C; + std::locale::facet::~facet(a1); +} +// 4CB9A5: variable 'v1' is possibly undefined +// 4F6B78: using guessed type int (*off_4F6B78)(); + +//----- (004CB9E0) -------------------------------------------------------- +int __thiscall std::codecvt::codecvt(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F6BA4; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F6BA4: using guessed type int (*off_4F6BA4)(); + +//----- (004CBA10) -------------------------------------------------------- +int __thiscall std::codecvt::codecvt(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6BA4; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6BA4: using guessed type int (*off_4F6BA4)(); + +//----- (004CBA50) -------------------------------------------------------- +void __fastcall std::codecvt::~codecvt(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::codecvt::~codecvt(v2); + operator delete(a1); +} +// 4CBA57: variable 'v2' is possibly undefined + +//----- (004CBA80) -------------------------------------------------------- +void __cdecl std::codecvt::~codecvt(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // ebx + + v2 = v1; + *v1 = &off_4F6BA4; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + *v2 = &unk_4F69A8; + std::locale::facet::~facet(a1); +} +// 4CBA85: variable 'v1' is possibly undefined +// 4F6BA4: using guessed type int (*off_4F6BA4)(); + +//----- (004CBAC0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F6BD0; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004CBAF0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6BD0; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004CBB30) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F6BD0; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004CBB60) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6BD0; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004CBBA0) -------------------------------------------------------- +void __fastcall std::collate::~collate(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6BD0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CBBB9: variable 'v2' is possibly undefined +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004CBBD0) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6BD0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CBBD9: variable 'v1' is possibly undefined +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004CBC00) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6BD0; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CBC09: variable 'v1' is possibly undefined +// 4F6BD0: using guessed type int (*off_4F6BD0)(); + +//----- (004CBC30) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F6BEC; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004CBC60) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6BEC; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004CBCA0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, char a2, int a3) +{ + int result; // eax + + *this = &off_4F6BEC; + this[1] = a3 != 0; + result = std::locale::facet::_S_clone_c_locale(); + this[2] = result; + return result; +} +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004CBCD0) -------------------------------------------------------- +int __thiscall std::collate::collate(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6BEC; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004CBD10) -------------------------------------------------------- +void __fastcall std::collate::~collate(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6BEC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CBD29: variable 'v2' is possibly undefined +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004CBD40) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6BEC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CBD49: variable 'v1' is possibly undefined +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004CBD70) -------------------------------------------------------- +void __cdecl std::collate::~collate(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6BEC; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CBD79: variable 'v1' is possibly undefined +// 4F6BEC: using guessed type int (*off_4F6BEC)(); + +//----- (004CBDA0) -------------------------------------------------------- +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6C08; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6C08: using guessed type int (*off_4F6C08)(); + +//----- (004CBDC0) -------------------------------------------------------- +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6C08; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6C08: using guessed type int (*off_4F6C08)(); + +//----- (004CBDE0) -------------------------------------------------------- +void __fastcall std::num_get>::~num_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6C08; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CBDEC: variable 'v2' is possibly undefined +// 4F6C08: using guessed type int (*off_4F6C08)(); + +//----- (004CBE00) -------------------------------------------------------- +void __cdecl std::num_get>::~num_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6C08; + std::locale::facet::~facet(a1); +} +// 4CBE00: variable 'v1' is possibly undefined +// 4F6C08: using guessed type int (*off_4F6C08)(); + +//----- (004CBE10) -------------------------------------------------------- +void __cdecl std::num_get>::~num_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6C08; + std::locale::facet::~facet(a1); +} +// 4CBE10: variable 'v1' is possibly undefined +// 4F6C08: using guessed type int (*off_4F6C08)(); + +//----- (004CBE20) -------------------------------------------------------- +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6C44; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6C44: using guessed type int (*off_4F6C44)(); + +//----- (004CBE40) -------------------------------------------------------- +BOOL __thiscall std::num_get>::num_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6C44; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6C44: using guessed type int (*off_4F6C44)(); + +//----- (004CBE60) -------------------------------------------------------- +void __fastcall std::num_get>::~num_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6C44; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CBE6C: variable 'v2' is possibly undefined +// 4F6C44: using guessed type int (*off_4F6C44)(); + +//----- (004CBE80) -------------------------------------------------------- +void __cdecl std::num_get>::~num_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6C44; + std::locale::facet::~facet(a1); +} +// 4CBE80: variable 'v1' is possibly undefined +// 4F6C44: using guessed type int (*off_4F6C44)(); + +//----- (004CBE90) -------------------------------------------------------- +void __cdecl std::num_get>::~num_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6C44; + std::locale::facet::~facet(a1); +} +// 4CBE90: variable 'v1' is possibly undefined +// 4F6C44: using guessed type int (*off_4F6C44)(); + +//----- (004CBEA0) -------------------------------------------------------- +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6C80; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6C80: using guessed type int (*off_4F6C80)(); + +//----- (004CBEC0) -------------------------------------------------------- +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6C80; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6C80: using guessed type int (*off_4F6C80)(); + +//----- (004CBEE0) -------------------------------------------------------- +void __fastcall std::num_put>::~num_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6C80; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CBEEC: variable 'v2' is possibly undefined +// 4F6C80: using guessed type int (*off_4F6C80)(); + +//----- (004CBF00) -------------------------------------------------------- +void __cdecl std::num_put>::~num_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6C80; + std::locale::facet::~facet(a1); +} +// 4CBF00: variable 'v1' is possibly undefined +// 4F6C80: using guessed type int (*off_4F6C80)(); + +//----- (004CBF10) -------------------------------------------------------- +void __cdecl std::num_put>::~num_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6C80; + std::locale::facet::~facet(a1); +} +// 4CBF10: variable 'v1' is possibly undefined +// 4F6C80: using guessed type int (*off_4F6C80)(); + +//----- (004CBF20) -------------------------------------------------------- +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6CB0; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6CB0: using guessed type int (*off_4F6CB0)(); + +//----- (004CBF40) -------------------------------------------------------- +BOOL __thiscall std::num_put>::num_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6CB0; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6CB0: using guessed type int (*off_4F6CB0)(); + +//----- (004CBF60) -------------------------------------------------------- +void __fastcall std::num_put>::~num_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6CB0; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CBF6C: variable 'v2' is possibly undefined +// 4F6CB0: using guessed type int (*off_4F6CB0)(); + +//----- (004CBF80) -------------------------------------------------------- +void __cdecl std::num_put>::~num_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6CB0; + std::locale::facet::~facet(a1); +} +// 4CBF80: variable 'v1' is possibly undefined +// 4F6CB0: using guessed type int (*off_4F6CB0)(); + +//----- (004CBF90) -------------------------------------------------------- +void __cdecl std::num_put>::~num_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6CB0; + std::locale::facet::~facet(a1); +} +// 4CBF90: variable 'v1' is possibly undefined +// 4F6CB0: using guessed type int (*off_4F6CB0)(); + +//----- (004CBFA0) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::less,std::allocator>::_M_insert_unique( + _DWORD *this, + int a2) +{ + _DWORD *v3; // esi + _DWORD *v4; // ebx + char v5; // al + _DWORD *v6; // edx + int v7; // ebx + _DWORD *v9; // ebx + void (__cdecl *v10)(void *); // [esp+4h] [ebp-34h] + char v11; // [esp+1Bh] [ebp-1Dh] + _DWORD *v12; // [esp+1Ch] [ebp-1Ch] + + v3 = this + 1; + v4 = (_DWORD *)this[2]; + v12 = this + 1; + v5 = 1; + while ( v4 ) + { + v5 = std::operator<(a2, (int)(v4 + 4)); + if ( v5 ) + v6 = (_DWORD *)v4[2]; + else + v6 = (_DWORD *)v4[3]; + v3 = v4; + v4 = v6; + } + if ( v5 ) + { + if ( (_DWORD *)this[3] == v3 ) + goto LABEL_13; + v7 = std::_Rb_tree_decrement(v3); + } + else + { + v7 = (int)v3; + } + if ( !(unsigned __int8)std::operator<(v7 + 16, a2) ) + return (_DWORD *)v7; +LABEL_13: + v11 = 1; + if ( v12 != v3 ) + v11 = std::operator<(a2, (int)(v3 + 4)); + v9 = operator new((struct type_info *)0x28, v10); + std::string::basic_string(v9 + 4, a2); + std::_Rb_tree_insert_and_rebalance(v11, v9, v3, v12); + ++this[5]; + return v9; +} +// 4CC03B: variable 'v10' is possibly undefined + +//----- (004CC0A8) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::less,std::allocator>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::less,std::allocator>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004CC0EC) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_insert_node( + _DWORD *this, + int a2, + _DWORD *a3, + _DWORD *a4) +{ + char v4; // al + _DWORD *v6; // ebx + _DWORD *result; // eax + + v4 = 1; + v6 = this + 1; + if ( !a2 && a3 != v6 ) + v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); + std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); + result = a4; + ++this[5]; + return result; +} + +//----- (004CC148) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004CC1C8) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004CC2C4) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::find( + _DWORD *this, + int a2) +{ + _DWORD *v2; // esi + _DWORD *v3; // edi + _DWORD *v4; // ebx + + v2 = this + 1; + v3 = this + 1; + v4 = (_DWORD *)this[2]; + while ( v4 ) + { + if ( (unsigned __int8)std::operator<((int)(v4 + 4), a2) ) + { + v4 = (_DWORD *)v4[3]; + } + else + { + v3 = v4; + v4 = (_DWORD *)v4[2]; + } + } + if ( v2 != v3 && (unsigned __int8)std::operator<(a2, (int)(v3 + 4)) ) + return v2; + return v3; +} + +//----- (004CC324) -------------------------------------------------------- +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( + void *a1) +{ + void *v2; // edi + void *v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void **)a1 + 3)); + v2 = (void *)*((_DWORD *)a1 + 2); + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count((volatile signed __int32 **)a1 + 11); + std::string::_M_dispose((void **)a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004CC370) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + _DWORD *this, + int a2, + _DWORD *a3, + _DWORD *a4) +{ + char v4; // al + _DWORD *v6; // ebx + _DWORD *result; // eax + + v4 = 1; + v6 = this + 1; + if ( !a2 && a3 != v6 ) + v4 = std::operator<((int)(a4 + 4), (int)(a3 + 4)); + std::_Rb_tree_insert_and_rebalance(v4, a4, a3, v6); + result = a4; + ++this[5]; + return result; +} + +//----- (004CC3CC) -------------------------------------------------------- +_DWORD *__thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + _DWORD *this, + _DWORD *a2) +{ + void **v3; // ebx + int insert_unique_pos; // eax + _DWORD *v5; // edx + void (__cdecl *v7)(void *); // [esp+4h] [ebp-34h] + int v8; // [esp+1Ch] [ebp-1Ch] + + v3 = (void **)operator new((struct type_info *)0x40, v7); + std::string::basic_string(v3 + 4, a2); + std::string::basic_string(v3 + 10, a2 + 6); + insert_unique_pos = std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + (int)(v3 + 4)); + if ( v5 ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_insert_node( + this, + insert_unique_pos, + v5, + v3); + v8 = insert_unique_pos; + std::string::_M_dispose(v3 + 10); + std::string::_M_dispose(v3 + 4); + operator delete(v3); + return (_DWORD *)v8; +} +// 4CC3DE: variable 'v7' is possibly undefined +// 4CC41B: variable 'v5' is possibly undefined + +//----- (004CC464) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004CC4E4) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004CC5E0) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( + void **a1) +{ + void **v2; // esi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 10); + std::string::_M_dispose(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004CC62C) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004CC6AC) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004CC7A8) -------------------------------------------------------- +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( + void **a1) +{ + volatile signed __int32 ***v2; // edi + volatile signed __int32 **v3; // edx + volatile signed __int32 **v4; // [esp+1Ch] [ebp-2Ch] + volatile signed __int32 **v5; // [esp+20h] [ebp-28h] + volatile signed __int32 ***v6; // [esp+24h] [ebp-24h] + void **v7; // [esp+2Ch] [ebp-1Ch] + + while ( a1 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(a1[3]); + v2 = (volatile signed __int32 ***)a1[10]; + v7 = (void **)a1[2]; + v6 = (volatile signed __int32 ***)a1[11]; + while ( v6 != v2 ) + { + v3 = *v2; + v5 = v2[1]; + while ( v5 != v3 ) + { + v4 = v3; + std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v3 + 1); + v3 = v4 + 2; + } + if ( *v2 ) + operator delete(*v2); + v2 += 3; + } + if ( a1[10] ) + operator delete(a1[10]); + std::string::_M_dispose(a1 + 4); + operator delete(a1); + a1 = v7; + } +} + +//----- (004CC84C) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004CC8CC) -------------------------------------------------------- +int __thiscall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004CC9C8) -------------------------------------------------------- +void __stdcall std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase( + void *a1) +{ + void *v2; // esi + int v3; // edx + void *v4; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void **)a1 + 3)); + v2 = (void *)*((_DWORD *)a1 + 2); + std::vector::~vector((void ***)a1 + 10, v3); + std::string::_M_dispose((void **)a1 + 4); + v4 = a1; + a1 = v2; + operator delete(v4); + } +} +// 4CC9EE: variable 'v3' is possibly undefined + +//----- (004CCA14) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004CCA94) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004CCB90) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004CCBD4) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + _DWORD *this, + int a2) +{ + char v2; // al + _DWORD *v3; // ebx + _DWORD *i; // esi + _DWORD *v5; // edx + int v6; // esi + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + v8 = this; + v2 = std::operator<(a2, (int)(i + 4)); + this = v8; + if ( v2 ) + v5 = (_DWORD *)i[2]; + else + v5 = (_DWORD *)i[3]; + v3 = i; + } + if ( v2 ) + { + if ( (_DWORD *)this[3] == v3 ) + return 0; + v6 = std::_Rb_tree_decrement(v3); + } + else + { + v6 = (int)v3; + } + if ( (unsigned __int8)std::operator<(v6 + 16, a2) ) + return 0; + return v6; +} + +//----- (004CCC54) -------------------------------------------------------- +int __thiscall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int a3) +{ + int result; // eax + int v5; // [esp+1Ch] [ebp-1Ch] + int v6; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && (unsigned __int8)std::operator<(this[4] + 16, a3) ) + return 0; + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + if ( !(unsigned __int8)std::operator<(a3, (int)(a2 + 4)) ) + { + if ( !(unsigned __int8)std::operator<((int)(a2 + 4), a3) ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v6 = std::_Rb_tree_increment((int)a2); + if ( (unsigned __int8)std::operator<(a3, v6 + 16) ) + { + if ( !a2[3] ) + return 0; + return v6; + } + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v5 = std::_Rb_tree_decrement(a2); + if ( !(unsigned __int8)std::operator<(v5 + 16, a3) ) + return std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v5 + 12) ) + return 0; + return result; +} + +//----- (004CCD50) -------------------------------------------------------- +void __stdcall std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase( + void **a1) +{ + void **v2; // edi + void **v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(a1[3]); + v2 = (void **)a1[2]; + std::string::_M_dispose(a1 + 4); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004CCD94) -------------------------------------------------------- +int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( + _DWORD *this, + _DWORD *a2) +{ + char v2; // dl + _DWORD *v3; // ebx + _DWORD *i; // eax + _DWORD *v5; // edi + int result; // eax + + v2 = 1; + v3 = this + 1; + for ( i = (_DWORD *)this[2]; i; i = v5 ) + { + if ( *a2 >= i[4] ) + { + v5 = (_DWORD *)i[3]; + v2 = 0; + } + else + { + v5 = (_DWORD *)i[2]; + v2 = 1; + } + v3 = i; + } + if ( !v2 ) + { + result = (int)v3; +LABEL_11: + if ( *(_DWORD *)(result + 16) >= *a2 ) + return result; + return 0; + } + if ( (_DWORD *)this[3] != v3 ) + { + result = std::_Rb_tree_decrement(v3); + goto LABEL_11; + } + return 0; +} + +//----- (004CCDF4) -------------------------------------------------------- +int __thiscall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_hint_unique_pos( + _DWORD *this, + _DWORD *a2, + int *a3) +{ + int v3; // edi + int result; // eax + int v5; // eax + int v6; // edx + _DWORD *v7; // [esp+1Ch] [ebp-1Ch] + _DWORD *v8; // [esp+1Ch] [ebp-1Ch] + + if ( a2 == this + 1 ) + { + if ( this[5] && *(_DWORD *)(this[4] + 16) < *a3 ) + return 0; + return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( + this, + a3); + } + v3 = *a3; + if ( *a3 >= a2[4] ) + { + if ( *a3 <= a2[4] ) + return (int)a2; + if ( (_DWORD *)this[4] == a2 ) + return 0; + v8 = this; + result = std::_Rb_tree_increment((int)a2); + this = v8; + if ( v3 < *(_DWORD *)(result + 16) ) + { + if ( !a2[3] ) + return 0; + return result; + } + return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( + this, + a3); + } + result = this[3]; + if ( (_DWORD *)result == a2 ) + return result; + v7 = this; + v5 = std::_Rb_tree_decrement(a2); + this = v7; + v6 = v5; + if ( v3 <= *(_DWORD *)(v5 + 16) ) + return std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_get_insert_unique_pos( + this, + a3); + result = (int)a2; + if ( !*(_DWORD *)(v6 + 12) ) + return 0; + return result; +} + +//----- (004CCE94) -------------------------------------------------------- +void __stdcall std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase( + void *a1) +{ + void *v2; // edi + void *v3; // [esp+0h] [ebp-28h] + + while ( a1 ) + { + std::_Rb_tree>>,std::_Select1st>>>,std::less,std::allocator>>>>::_M_erase(*((void **)a1 + 3)); + v2 = (void *)*((_DWORD *)a1 + 2); + std::_Rb_tree>,std::_Select1st>>,std::less,std::allocator>>>::_M_erase(*((void ***)a1 + 7)); + v3 = a1; + a1 = v2; + operator delete(v3); + } +} + +//----- (004CCEE0) -------------------------------------------------------- +void __fastcall std::bad_cast::~bad_cast(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6CE0; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 4CCEEC: variable 'v2' is possibly undefined +// 4F6CE0: using guessed type void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this); + +//----- (004CCF10) -------------------------------------------------------- +void __cdecl std::bad_cast::~bad_cast(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6CE0; + std::exception::~exception(a1); +} +// 4CCF10: variable 'v1' is possibly undefined +// 4F6CE0: using guessed type void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this); + +//----- (004CCF20) -------------------------------------------------------- +int *__userpurge std::ios_base::_M_grow_words@(_DWORD *a1@, int this, char a3, bool a4) +{ + int *v5; // esi + char *v6; // eax + int v7; // ebp + _DWORD *v8; // eax + int v9; // edx + _DWORD *v10; // ebp + int *v11; // edi + int v12; // ebp + int *v13; // eax + int *v14; // ecx + int v15; // edi + int v16; // ebp + char *v17; // edx + int v18; // eax + int v20; // [esp+14h] [ebp-28h] + int v21; // [esp+18h] [ebp-24h] + int *v22; // [esp+1Ch] [ebp-20h] + + if ( (unsigned int)this > 0x7FFFFFFE ) + { + v17 = "ios_base::_M_grow_words is not valid"; + } + else + { + v5 = a1 + 9; + if ( this <= 7 ) + { + v20 = 8; +LABEL_22: + a1[26] = v5; + a1[25] = v20; + return &v5[2 * this]; + } + v6 = (char *)(this + 1); + v20 = this + 1; + if ( this + 1 > 0xFFFFFFF ) + std::ios_base::_M_grow_words(); + v7 = 8 * (_DWORD)v6; + v21 = operator new[](8 * (_DWORD)v6); + if ( v21 ) + { + v8 = (_DWORD *)v21; + v9 = v21; + v10 = (_DWORD *)(v21 + v7); + do + { + *v8 = 0; + v8 += 2; + *(v8 - 1) = 0; + } + while ( v10 != v8 ); + v11 = (int *)a1[26]; + v12 = a1[25]; + v13 = v11; + v14 = &v11[2 * v12]; + if ( v12 > 0 ) + { + v22 = (int *)a1[26]; + do + { + v15 = *v13; + v16 = v13[1]; + v13 += 2; + v9 += 8; + *(_DWORD *)(v9 - 8) = v15; + *(_DWORD *)(v9 - 4) = v16; + } + while ( v14 != v13 ); + v11 = v22; + } + if ( v5 != v11 ) + { + if ( v11 ) + operator delete[](v11); + } + v5 = (int *)v21; + goto LABEL_22; + } + v17 = "ios_base::_M_grow_words allocation failed"; + } + v18 = a1[5] | 1; + a1[5] = v18; + if ( (v18 & a1[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)v17); + if ( a3 ) + a1[8] = 0; + else + a1[7] = 0; + return a1 + 7; +} + +//----- (004CD070) -------------------------------------------------------- +int __cdecl std::ios_base::sync_with_stdio(std::ios_base *this) +{ + int v1; // esi + + v1 = (unsigned __int8)std::ios_base::Init::_S_synced_with_stdio; + if ( (_BYTE)this == 1 || !std::ios_base::Init::_S_synced_with_stdio ) + return (unsigned __int8)std::ios_base::Init::_S_synced_with_stdio; + std::ios_base::Init::Init(); + std::ios_base::Init::_S_synced_with_stdio = 0; + __gnu_internal::buf_cout_sync = &off_4F6414; + std::locale::~locale((_DWORD **)&dword_4E8FFC); + __gnu_internal::buf_cin_sync = &off_4F6414; + std::locale::~locale((_DWORD **)&dword_4E8F7C); + __gnu_internal::buf_cerr_sync = &off_4F6414; + std::locale::~locale((_DWORD **)&dword_4E8FBC); + __gnu_internal::buf_wcout_sync = &off_4F6454; + std::locale::~locale((_DWORD **)&dword_4E90BC); + __gnu_internal::buf_wcin_sync = &off_4F6454; + std::locale::~locale((_DWORD **)&dword_4E903C); + __gnu_internal::buf_wcerr_sync = &off_4F6454; + std::locale::~locale((_DWORD **)&dword_4E907C); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cout, &__iob[1], 16, 512); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cin, (FILE *)__iob[0]._ptr, 8, 512); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_cerr, &__iob[2], 16, 512); + std::ios::rdbuf(dword_4E9824, (int)__gnu_internal::buf_cout); + std::ios::rdbuf(dword_4E9648, (int)__gnu_internal::buf_cin); + std::ios::rdbuf(&dword_4E96E4, (int)__gnu_internal::buf_cerr); + std::ios::rdbuf(dword_4E9784, (int)__gnu_internal::buf_cerr); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcout, &__iob[1], 16, 512); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcin, (FILE *)__iob[0]._ptr, 8, 512); + __gnu_cxx::stdio_filebuf::stdio_filebuf(__gnu_internal::buf_wcerr, &__iob[2], 16, 512); + std::wios::rdbuf(dword_4E9AA4, (int)__gnu_internal::buf_wcout); + std::wios::rdbuf(dword_4E98C8, (int)__gnu_internal::buf_wcin); + std::wios::rdbuf(&dword_4E9964, (int)__gnu_internal::buf_wcerr); + std::wios::rdbuf(dword_4E9A04, (int)__gnu_internal::buf_wcerr); + std::ios_base::Init::~Init(); + return v1; +} +// 4E8F7C: using guessed type _DWORD dword_4E8F7C; +// 4E8FBC: using guessed type _DWORD dword_4E8FBC; +// 4E8FFC: using guessed type _DWORD dword_4E8FFC; +// 4E903C: using guessed type _DWORD dword_4E903C; +// 4E907C: using guessed type _DWORD dword_4E907C; +// 4E90BC: using guessed type _DWORD dword_4E90BC; +// 4E95FC: using guessed type char std::ios_base::Init::_S_synced_with_stdio; +// 4E9648: using guessed type int dword_4E9648[28]; +// 4E96E4: using guessed type int dword_4E96E4; +// 4E9784: using guessed type int dword_4E9784[28]; +// 4E9824: using guessed type int dword_4E9824[28]; +// 4E98C8: using guessed type int dword_4E98C8[28]; +// 4E9964: using guessed type int dword_4E9964; +// 4E9A04: using guessed type int dword_4E9A04[28]; +// 4E9AA4: using guessed type int dword_4E9AA4[28]; +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6454: using guessed type int (*off_4F6454)(); + +//----- (004CD2B0) -------------------------------------------------------- +int __thiscall std::ios_base::_M_call_callbacks(_DWORD *this, int a2) +{ + int **i; // ebx + int result; // eax + + for ( i = (int **)this[6]; i; i = (int **)*i ) + result = ((int (__cdecl *)(int, _DWORD *, int *))i[1])(a2, this, i[2]); + return result; +} +// 4DAD70: using guessed type int __stdcall std::ios_base::_M_call_callbacks(_DWORD); + +//----- (004CD2F0) -------------------------------------------------------- +_DWORD *__thiscall std::ios_base::register_callback(_DWORD *this, int a2, int a3) +{ + _DWORD *result; // eax + int v5; // edx + void (__cdecl *v6)(void *); // [esp+4h] [ebp-18h] + + result = operator new((struct type_info *)0x10, v6); + v5 = this[6]; + result[3] = 0; + *result = v5; + this[6] = result; + result[1] = a2; + result[2] = a3; + return result; +} +// 4CD2FD: variable 'v6' is possibly undefined + +//----- (004CD330) -------------------------------------------------------- +void __fastcall std::ios_base::_M_dispose_callbacks(int a1) +{ + volatile signed __int32 *v2; // eax + int v3; // edx + volatile signed __int32 *v4; // esi + + v2 = *(volatile signed __int32 **)(a1 + 24); + if ( v2 ) + { + while ( 1 ) + { + if ( _CRT_MT ) + { + if ( _InterlockedExchangeAdd(v2 + 3, 0xFFFFFFFF) ) + break; + } + else + { + v3 = *((_DWORD *)v2 + 3); + *((_DWORD *)v2 + 3) = v3 - 1; + if ( v3 ) + break; + } + v4 = (volatile signed __int32 *)*v2; + operator delete((void *)v2); + if ( !v4 ) + break; + v2 = v4; + } + } + *(_DWORD *)(a1 + 24) = 0; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004CD390) -------------------------------------------------------- +int std::ios_base::Init::Init() +{ + int result; // eax + + if ( _CRT_MT ) + { + result = _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 1u); + if ( result ) + return result; + } + else + { + result = std::ios_base::Init::_S_refcount++; + if ( result ) + return result; + } + std::ios_base::Init::_S_synced_with_stdio = 1; + __gnu_internal::buf_cout_sync = &off_4F6414; + dword_4E8FE4 = 0; + dword_4E8FE8 = 0; + dword_4E8FEC = 0; + dword_4E8FF0 = 0; + dword_4E8FF4 = 0; + dword_4E8FF8 = 0; + std::locale::locale(&dword_4E8FFC); + __gnu_internal::buf_cout_sync = &off_4F52A4; + dword_4E9004 = -1; + __gnu_internal::buf_cin_sync = &off_4F6414; + dword_4E9000 = (int)&__iob[1]; + dword_4E8F64 = 0; + dword_4E8F68 = 0; + dword_4E8F6C = 0; + dword_4E8F70 = 0; + dword_4E8F74 = 0; + dword_4E8F78 = 0; + std::locale::locale(&dword_4E8F7C); + __gnu_internal::buf_cin_sync = &off_4F52A4; + dword_4E8F80 = (int)__iob[0]._ptr; + dword_4E8F84 = -1; + __gnu_internal::buf_cerr_sync = &off_4F6414; + dword_4E8FA4 = 0; + dword_4E8FA8 = 0; + dword_4E8FAC = 0; + dword_4E8FB0 = 0; + dword_4E8FB4 = 0; + dword_4E8FB8 = 0; + std::locale::locale(&dword_4E8FBC); + __gnu_internal::buf_cerr_sync = &off_4F52A4; + dword_4E8FC0 = (int)&__iob[2]; + dword_4E8FC4 = -1; + std::ios_base::ios_base(dword_4E9824); + dword_4E9894 = 0; + word_4E9898 = 0; + dword_4E989C = 0; + dword_4E98A0 = 0; + dword_4E98A4 = 0; + dword_4E98A8 = 0; + std::cout = (int)&off_4F5E58; + dword_4E9824[0] = (int)off_4F5E6C; + std::ios::init((int)dword_4E9824, (int)&__gnu_internal::buf_cout_sync); + std::ios_base::ios_base(dword_4E9648); + word_4E96BC = 0; + dword_4E96B8 = 0; + dword_4E96C0 = 0; + dword_4E96C4 = 0; + dword_4E96C8 = 0; + dword_4E96CC = 0; + std::cin = (int)&off_4F5E30; + dword_4E9648[0] = (int)off_4F5E44; + dword_4E9644 = 0; + std::ios::init((int)dword_4E9648, (int)&__gnu_internal::buf_cin_sync); + std::ios_base::ios_base(&dword_4E96E4); + dword_4E9754 = 0; + word_4E9758 = 0; + dword_4E975C = 0; + dword_4E9760 = 0; + dword_4E9764 = 0; + dword_4E9768 = 0; + std::cerr = (int)&off_4F5E58; + dword_4E96E4 = (int)off_4F5E6C; + std::ios::init((int)&dword_4E96E4, (int)&__gnu_internal::buf_cerr_sync); + std::ios_base::ios_base(dword_4E9784); + dword_4E97F4 = 0; + word_4E97F8 = 0; + dword_4E97FC = 0; + dword_4E9800 = 0; + dword_4E9804 = 0; + dword_4E9808 = 0; + std::clog = (int)&off_4F5E58; + dword_4E9784[0] = (int)off_4F5E6C; + std::ios::init((int)dword_4E9784, (int)&__gnu_internal::buf_cerr_sync); + dword_4E96F0 |= 0x2000u; + dword_4E96B8 = (int)&std::cout; + dword_4E9754 = (int)&std::cout; + __gnu_internal::buf_wcout_sync = &off_4F6454; + dword_4E90A4 = 0; + dword_4E90A8 = 0; + dword_4E90AC = 0; + dword_4E90B0 = 0; + dword_4E90B4 = 0; + dword_4E90B8 = 0; + std::locale::locale(&dword_4E90BC); + __gnu_internal::buf_wcout_sync = &off_4F52E4; + dword_4E90C0 = (int)&__iob[1]; + word_4E90C4 = -1; + __gnu_internal::buf_wcin_sync = &off_4F6454; + dword_4E9024 = 0; + dword_4E9028 = 0; + dword_4E902C = 0; + dword_4E9030 = 0; + dword_4E9034 = 0; + dword_4E9038 = 0; + std::locale::locale(&dword_4E903C); + dword_4E9040 = (int)__iob[0]._ptr; + word_4E9044 = -1; + __gnu_internal::buf_wcin_sync = &off_4F52E4; + __gnu_internal::buf_wcerr_sync = &off_4F6454; + dword_4E9064 = 0; + dword_4E9068 = 0; + dword_4E906C = 0; + dword_4E9070 = 0; + dword_4E9074 = 0; + dword_4E9078 = 0; + std::locale::locale(&dword_4E907C); + __gnu_internal::buf_wcerr_sync = &off_4F52E4; + word_4E9084 = -1; + dword_4E9080 = (int)&__iob[2]; + std::ios_base::ios_base(dword_4E9AA4); + dword_4E9B14 = 0; + word_4E9B18 = 0; + byte_4E9B1A = 0; + dword_4E9B1C = 0; + dword_4E9B20 = 0; + dword_4E9B24 = 0; + dword_4E9B28 = 0; + std::wcout = (int)&off_4F61B4; + dword_4E9AA4[0] = (int)off_4F61C8; + std::wios::init((int)dword_4E9AA4, (int)&__gnu_internal::buf_wcout_sync); + std::ios_base::ios_base(dword_4E98C8); + dword_4E9938 = 0; + word_4E993C = 0; + byte_4E993E = 0; + dword_4E9940 = 0; + dword_4E9944 = 0; + dword_4E9948 = 0; + dword_4E994C = 0; + std::wcin = (int)&off_4F618C; + dword_4E98C8[0] = (int)off_4F61A0; + dword_4E98C4 = 0; + std::wios::init((int)dword_4E98C8, (int)&__gnu_internal::buf_wcin_sync); + std::ios_base::ios_base(&dword_4E9964); + word_4E99D8 = 0; + dword_4E99D4 = 0; + byte_4E99DA = 0; + dword_4E99DC = 0; + dword_4E99E0 = 0; + dword_4E99E4 = 0; + dword_4E99E8 = 0; + std::wcerr = (int)&off_4F61B4; + dword_4E9964 = (int)off_4F61C8; + std::wios::init((int)&dword_4E9964, (int)&__gnu_internal::buf_wcerr_sync); + std::ios_base::ios_base(dword_4E9A04); + dword_4E9A74 = 0; + word_4E9A78 = 0; + byte_4E9A7A = 0; + dword_4E9A7C = 0; + dword_4E9A80 = 0; + dword_4E9A84 = 0; + dword_4E9A88 = 0; + std::wclog = (int)&off_4F61B4; + dword_4E9A04[0] = (int)off_4F61C8; + std::wios::init((int)dword_4E9A04, (int)&__gnu_internal::buf_wcerr_sync); + result = _CRT_MT; + dword_4E9970 |= 0x2000u; + dword_4E9938 = (int)&std::wcout; + dword_4E99D4 = (int)&std::wcout; + if ( _CRT_MT ) + _InterlockedAdd(&std::ios_base::Init::_S_refcount, 1u); + else + ++std::ios_base::Init::_S_refcount; + return result; +} +// 4CD390: could not find valid save-restore pair for ebp +// 4E8F64: using guessed type int dword_4E8F64; +// 4E8F68: using guessed type int dword_4E8F68; +// 4E8F6C: using guessed type int dword_4E8F6C; +// 4E8F70: using guessed type int dword_4E8F70; +// 4E8F74: using guessed type int dword_4E8F74; +// 4E8F78: using guessed type int dword_4E8F78; +// 4E8F7C: using guessed type _DWORD dword_4E8F7C; +// 4E8F80: using guessed type int dword_4E8F80; +// 4E8F84: using guessed type int dword_4E8F84; +// 4E8FA4: using guessed type int dword_4E8FA4; +// 4E8FA8: using guessed type int dword_4E8FA8; +// 4E8FAC: using guessed type int dword_4E8FAC; +// 4E8FB0: using guessed type int dword_4E8FB0; +// 4E8FB4: using guessed type int dword_4E8FB4; +// 4E8FB8: using guessed type int dword_4E8FB8; +// 4E8FBC: using guessed type _DWORD dword_4E8FBC; +// 4E8FC0: using guessed type int dword_4E8FC0; +// 4E8FC4: using guessed type int dword_4E8FC4; +// 4E8FE4: using guessed type int dword_4E8FE4; +// 4E8FE8: using guessed type int dword_4E8FE8; +// 4E8FEC: using guessed type int dword_4E8FEC; +// 4E8FF0: using guessed type int dword_4E8FF0; +// 4E8FF4: using guessed type int dword_4E8FF4; +// 4E8FF8: using guessed type int dword_4E8FF8; +// 4E8FFC: using guessed type _DWORD dword_4E8FFC; +// 4E9000: using guessed type int dword_4E9000; +// 4E9004: using guessed type int dword_4E9004; +// 4E9024: using guessed type int dword_4E9024; +// 4E9028: using guessed type int dword_4E9028; +// 4E902C: using guessed type int dword_4E902C; +// 4E9030: using guessed type int dword_4E9030; +// 4E9034: using guessed type int dword_4E9034; +// 4E9038: using guessed type int dword_4E9038; +// 4E903C: using guessed type _DWORD dword_4E903C; +// 4E9040: using guessed type int dword_4E9040; +// 4E9044: using guessed type __int16 word_4E9044; +// 4E9064: using guessed type int dword_4E9064; +// 4E9068: using guessed type int dword_4E9068; +// 4E906C: using guessed type int dword_4E906C; +// 4E9070: using guessed type int dword_4E9070; +// 4E9074: using guessed type int dword_4E9074; +// 4E9078: using guessed type int dword_4E9078; +// 4E907C: using guessed type _DWORD dword_4E907C; +// 4E9080: using guessed type int dword_4E9080; +// 4E9084: using guessed type __int16 word_4E9084; +// 4E90A4: using guessed type int dword_4E90A4; +// 4E90A8: using guessed type int dword_4E90A8; +// 4E90AC: using guessed type int dword_4E90AC; +// 4E90B0: using guessed type int dword_4E90B0; +// 4E90B4: using guessed type int dword_4E90B4; +// 4E90B8: using guessed type int dword_4E90B8; +// 4E90BC: using guessed type _DWORD dword_4E90BC; +// 4E90C0: using guessed type int dword_4E90C0; +// 4E90C4: using guessed type __int16 word_4E90C4; +// 4E95F8: using guessed type int std::ios_base::Init::_S_refcount; +// 4E95FC: using guessed type char std::ios_base::Init::_S_synced_with_stdio; +// 4E9640: using guessed type int std::cin; +// 4E9644: using guessed type int dword_4E9644; +// 4E9648: using guessed type int dword_4E9648[28]; +// 4E96B8: using guessed type int dword_4E96B8; +// 4E96BC: using guessed type __int16 word_4E96BC; +// 4E96C0: using guessed type int dword_4E96C0; +// 4E96C4: using guessed type int dword_4E96C4; +// 4E96C8: using guessed type int dword_4E96C8; +// 4E96CC: using guessed type int dword_4E96CC; +// 4E96E0: using guessed type int std::cerr; +// 4E96E4: using guessed type int dword_4E96E4; +// 4E96F0: using guessed type int dword_4E96F0; +// 4E9754: using guessed type int dword_4E9754; +// 4E9758: using guessed type __int16 word_4E9758; +// 4E975C: using guessed type int dword_4E975C; +// 4E9760: using guessed type int dword_4E9760; +// 4E9764: using guessed type int dword_4E9764; +// 4E9768: using guessed type int dword_4E9768; +// 4E9780: using guessed type int std::clog; +// 4E9784: using guessed type int dword_4E9784[28]; +// 4E97F4: using guessed type int dword_4E97F4; +// 4E97F8: using guessed type __int16 word_4E97F8; +// 4E97FC: using guessed type int dword_4E97FC; +// 4E9800: using guessed type int dword_4E9800; +// 4E9804: using guessed type int dword_4E9804; +// 4E9808: using guessed type int dword_4E9808; +// 4E9820: using guessed type int std::cout; +// 4E9824: using guessed type int dword_4E9824[28]; +// 4E9894: using guessed type int dword_4E9894; +// 4E9898: using guessed type __int16 word_4E9898; +// 4E989C: using guessed type int dword_4E989C; +// 4E98A0: using guessed type int dword_4E98A0; +// 4E98A4: using guessed type int dword_4E98A4; +// 4E98A8: using guessed type int dword_4E98A8; +// 4E98C0: using guessed type int std::wcin; +// 4E98C4: using guessed type int dword_4E98C4; +// 4E98C8: using guessed type int dword_4E98C8[28]; +// 4E9938: using guessed type int dword_4E9938; +// 4E993C: using guessed type __int16 word_4E993C; +// 4E993E: using guessed type char byte_4E993E; +// 4E9940: using guessed type int dword_4E9940; +// 4E9944: using guessed type int dword_4E9944; +// 4E9948: using guessed type int dword_4E9948; +// 4E994C: using guessed type int dword_4E994C; +// 4E9960: using guessed type int std::wcerr; +// 4E9964: using guessed type int dword_4E9964; +// 4E9970: using guessed type int dword_4E9970; +// 4E99D4: using guessed type int dword_4E99D4; +// 4E99D8: using guessed type __int16 word_4E99D8; +// 4E99DA: using guessed type char byte_4E99DA; +// 4E99DC: using guessed type int dword_4E99DC; +// 4E99E0: using guessed type int dword_4E99E0; +// 4E99E4: using guessed type int dword_4E99E4; +// 4E99E8: using guessed type int dword_4E99E8; +// 4E9A00: using guessed type int std::wclog; +// 4E9A04: using guessed type int dword_4E9A04[28]; +// 4E9A74: using guessed type int dword_4E9A74; +// 4E9A78: using guessed type __int16 word_4E9A78; +// 4E9A7A: using guessed type char byte_4E9A7A; +// 4E9A7C: using guessed type int dword_4E9A7C; +// 4E9A80: using guessed type int dword_4E9A80; +// 4E9A84: using guessed type int dword_4E9A84; +// 4E9A88: using guessed type int dword_4E9A88; +// 4E9AA0: using guessed type int std::wcout; +// 4E9AA4: using guessed type int dword_4E9AA4[28]; +// 4E9B14: using guessed type int dword_4E9B14; +// 4E9B18: using guessed type __int16 word_4E9B18; +// 4E9B1A: using guessed type char byte_4E9B1A; +// 4E9B1C: using guessed type int dword_4E9B1C; +// 4E9B20: using guessed type int dword_4E9B20; +// 4E9B24: using guessed type int dword_4E9B24; +// 4E9B28: using guessed type int dword_4E9B28; +// 4F52A4: using guessed type int (*off_4F52A4)(); +// 4F52E4: using guessed type int (*off_4F52E4)(); +// 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); +// 4F5E44: using guessed type void (__cdecl *off_4F5E44[2])(std::istream *__hidden this); +// 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); +// 4F5E6C: using guessed type void (__cdecl *off_4F5E6C[2])(std::ostream *__hidden this); +// 4F618C: using guessed type int (*off_4F618C)(); +// 4F61A0: using guessed type int (*off_4F61A0[2])(); +// 4F61B4: using guessed type int (*off_4F61B4)(); +// 4F61C8: using guessed type int (*off_4F61C8[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004CDA90) -------------------------------------------------------- +void __cdecl std::ios_base::Init::~Init() +{ + int v0; // eax + + if ( !_CRT_MT ) + { + v0 = std::ios_base::Init::_S_refcount--; + if ( v0 != 2 ) + return; +LABEL_5: + std::ostream::flush(&std::cout); + std::ostream::flush(&std::cerr); + std::ostream::flush(&std::clog); + std::wostream::flush(&std::wcout); + std::wostream::flush(&std::wcerr); + std::wostream::flush(&std::wclog); + return; + } + if ( _InterlockedExchangeAdd(&std::ios_base::Init::_S_refcount, 0xFFFFFFFF) == 2 ) + goto LABEL_5; +} +// 4E95F8: using guessed type int std::ios_base::Init::_S_refcount; +// 4E96E0: using guessed type int std::cerr; +// 4E9780: using guessed type int std::clog; +// 4E9820: using guessed type int std::cout; +// 4E9960: using guessed type int std::wcerr; +// 4E9A00: using guessed type int std::wclog; +// 4E9AA0: using guessed type int std::wcout; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004CDB10) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::ios_base::imbue( + volatile signed __int32 **ecx0, + volatile signed __int32 **this, + volatile signed __int32 **a3) +{ + const std::locale *v5; // [esp+4h] [ebp-18h] + + std::locale::locale(ecx0, this + 27, v5); + std::locale::operator=(this + 27, a3); + std::ios_base::_M_call_callbacks(this, 1); + return ecx0; +} +// 4CDB22: variable 'v5' is possibly undefined + +//----- (004CDB60) -------------------------------------------------------- +int std::ios_base::xalloc() +{ + int result; // eax + + if ( _CRT_MT ) + return _InterlockedExchangeAdd(&std::ios_base::xalloc(void)::_S_top, 1u) + 4; + result = std::ios_base::xalloc(void)::_S_top + 4; + ++std::ios_base::xalloc(void)::_S_top; + return result; +} +// 4E9B94: using guessed type int std::ios_base::xalloc(void)::_S_top; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004CDBA0) -------------------------------------------------------- +void __fastcall std::ios_base::_M_init(int a1) +{ + _DWORD *v2[4]; // [esp+1Ch] [ebp-10h] BYREF + + *(_DWORD *)(a1 + 4) = 6; + *(_DWORD *)(a1 + 8) = 0; + *(_DWORD *)(a1 + 12) = 4098; + std::locale::locale(v2); + std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)v2); + std::locale::~locale(v2); +} + +//----- (004CDBF0) -------------------------------------------------------- +volatile signed __int32 **__userpurge std::ios_base::_M_move@( + int a1@, + std::ios_base *this, + std::ios_base *a3) +{ + int v3; // edi + int v5; // eax + int v6; // eax + std::ios_base *v7; // eax + int v8; // eax + int v10; // edx + _DWORD *v11; // eax + int *v12; // ecx + int v13; // ebp + int v14; // edi + + v3 = a1 + 36; + *(_DWORD *)(a1 + 4) = *((_DWORD *)this + 1); + *(_DWORD *)(a1 + 8) = *((_DWORD *)this + 2); + *(_DWORD *)(a1 + 12) = *((_DWORD *)this + 3); + *(_DWORD *)(a1 + 16) = *((_DWORD *)this + 4); + *(_DWORD *)(a1 + 20) = *((_DWORD *)this + 5); + v5 = *((_DWORD *)this + 6); + *((_DWORD *)this + 6) = 0; + *(_DWORD *)(a1 + 24) = v5; + v6 = *(_DWORD *)(a1 + 104); + if ( v6 != a1 + 36 && v6 ) + operator delete[](*(void **)(a1 + 104)); + v7 = (std::ios_base *)*((_DWORD *)this + 26); + if ( v7 == (std::ios_base *)((char *)this + 36) ) + { + *(_DWORD *)(a1 + 104) = v3; + v10 = 0; + *(_DWORD *)(a1 + 100) = 8; + while ( 1 ) + { + v11 = (_DWORD *)(v3 + v10); + v12 = (int *)(v10 + *((_DWORD *)this + 26)); + v10 += 8; + v13 = *v12; + v14 = v12[1]; + *v12 = 0; + v12[1] = 0; + *v11 = v13; + v11[1] = v14; + if ( v10 == 64 ) + break; + v3 = *(_DWORD *)(a1 + 104); + } + } + else + { + *((_DWORD *)this + 26) = (char *)this + 36; + *(_DWORD *)(a1 + 104) = v7; + v8 = *((_DWORD *)this + 25); + *((_DWORD *)this + 25) = 8; + *(_DWORD *)(a1 + 100) = v8; + } + return std::locale::operator=((volatile signed __int32 **)(a1 + 108), (volatile signed __int32 **)this + 27); +} + +//----- (004CDCC0) -------------------------------------------------------- +void __userpurge std::ios_base::_M_swap(int a1@, std::ios_base *this, std::ios_base *a3) +{ + char *v3; // esi + int v4; // eax + char *v5; // edi + int v6; // edx + int v7; // eax + int v8; // edx + int v9; // eax + int v10; // edx + int v11; // eax + int v12; // edx + int v13; // eax + int v14; // edx + int v15; // eax + char *v16; // edx + char *v17; // eax + int i; // esi + int v19; // ebp + int v20; // edi + int v21; // edx + volatile signed __int32 **v22; // esi + int v23; // eax + std::ios_base *v24; // edi + std::ios_base *v25; // ebp + int v26; // eax + int v27; // ecx + const std::locale *v28; // [esp+4h] [ebp-48h] + int v29; // [esp+1Ch] [ebp-30h] + _DWORD *v30[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = (char *)(a1 + 36); + v4 = *(_DWORD *)(a1 + 4); + v5 = (char *)this + 36; + *(_DWORD *)(a1 + 4) = *((_DWORD *)this + 1); + v6 = *((_DWORD *)this + 2); + *((_DWORD *)this + 1) = v4; + v7 = *(_DWORD *)(a1 + 8); + *(_DWORD *)(a1 + 8) = v6; + v8 = *((_DWORD *)this + 3); + *((_DWORD *)this + 2) = v7; + v9 = *(_DWORD *)(a1 + 12); + *(_DWORD *)(a1 + 12) = v8; + v10 = *((_DWORD *)this + 4); + *((_DWORD *)this + 3) = v9; + v11 = *(_DWORD *)(a1 + 16); + *(_DWORD *)(a1 + 16) = v10; + v12 = *((_DWORD *)this + 5); + *((_DWORD *)this + 4) = v11; + v13 = *(_DWORD *)(a1 + 20); + *(_DWORD *)(a1 + 20) = v12; + v14 = *((_DWORD *)this + 6); + *((_DWORD *)this + 5) = v13; + v15 = *(_DWORD *)(a1 + 24); + *(_DWORD *)(a1 + 24) = v14; + v16 = *(char **)(a1 + 104); + *((_DWORD *)this + 6) = v15; + v17 = (char *)*((_DWORD *)this + 26); + if ( v16 != (char *)(a1 + 36) ) + { +LABEL_7: + if ( v17 != v5 ) + { + *(_DWORD *)(a1 + 104) = v17; + *((_DWORD *)this + 26) = v16; +LABEL_9: + v23 = *(_DWORD *)(a1 + 100); + *(_DWORD *)(a1 + 100) = *((_DWORD *)this + 25); + *((_DWORD *)this + 25) = v23; + goto LABEL_5; + } + if ( v16 != v3 ) + { + v24 = (std::ios_base *)a1; + v25 = this; +LABEL_11: + v26 = 0; + v29 = a1; + do + { + v27 = *((_DWORD *)v25 + 2 * v26 + 10); + *((_DWORD *)v24 + 2 * v26 + 9) = *((_DWORD *)v25 + 2 * v26 + 9); + *((_DWORD *)v24 + 2 * v26++ + 10) = v27; + } + while ( v26 != 8 ); + a1 = v29; + *((_DWORD *)v25 + 26) = v16; + *((_DWORD *)v24 + 26) = v3; + goto LABEL_9; + } +LABEL_10: + v3 = (char *)this + 36; + v16 = (char *)*((_DWORD *)this + 26); + v24 = this; + v25 = (std::ios_base *)a1; + goto LABEL_11; + } + if ( v17 != v5 ) + { + if ( v16 == v3 ) + goto LABEL_10; + goto LABEL_7; + } + for ( i = 0; i != 8; ++i ) + { + v19 = *(_DWORD *)(a1 + 8 * i + 36); + v20 = *(_DWORD *)(a1 + 8 * i + 40); + v21 = *((_DWORD *)this + 2 * i + 10); + *(_DWORD *)(a1 + 8 * i + 36) = *((_DWORD *)this + 2 * i + 9); + *(_DWORD *)(a1 + 8 * i + 40) = v21; + *((_DWORD *)this + 2 * i + 9) = v19; + *((_DWORD *)this + 2 * i + 10) = v20; + } +LABEL_5: + v22 = (volatile signed __int32 **)(a1 + 108); + std::locale::locale((volatile signed __int32 **)v30, (volatile signed __int32 **)(a1 + 108), v28); + std::locale::operator=(v22, (volatile signed __int32 **)this + 27); + std::locale::operator=((volatile signed __int32 **)this + 27, (volatile signed __int32 **)v30); + std::locale::~locale(v30); +} +// 4CDD67: variable 'v28' is possibly undefined + +//----- (004CDE10) -------------------------------------------------------- +int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, char *Str, int *a3) +{ + int v4; // esi + int v5; // edx + int (__thiscall *v6)(int, int, int); // eax + unsigned int *v7; // eax + void *v8; // ecx + size_t v9; // eax + unsigned int *v10; // eax + void *v11; // ecx + int result; // eax + int v13; // [esp+1Ch] [ebp-6Ch] + void *v14[2]; // [esp+28h] [ebp-60h] BYREF + char v15[16]; // [esp+30h] [ebp-58h] BYREF + void *v16[2]; // [esp+40h] [ebp-48h] BYREF + int v17[4]; // [esp+48h] [ebp-40h] BYREF + void *v18[2]; // [esp+58h] [ebp-30h] BYREF + int v19[10]; // [esp+60h] [ebp-28h] BYREF + + v4 = a3[1]; + v5 = *a3; + v13 = *a3; + v6 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 16); + if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v14[1] = 0; + v14[0] = v15; + v15[0] = 0; + if ( v5 == 1 ) + std::string::_M_replace((unsigned int *)v14, 0, 0, "iostream error", 0xEu); + else + std::string::_M_replace((unsigned int *)v14, 0, 0, "Unknown error", 0xDu); + } + else + { + v6((int)v14, v4, v13); + } + v7 = std::string::_M_replace((unsigned int *)v14, 0, 0, ": ", 2u); + v16[0] = v17; + if ( (unsigned int *)*v7 == v7 + 2 ) + { + v17[0] = v7[2]; + v17[1] = v7[3]; + v17[2] = v7[4]; + v17[3] = v7[5]; + } + else + { + v16[0] = (void *)*v7; + v17[0] = v7[2]; + } + v8 = (void *)v7[1]; + *((_BYTE *)v7 + 8) = 0; + v16[1] = v8; + *v7 = (unsigned int)(v7 + 2); + v7[1] = 0; + v9 = strlen(Str); + v10 = std::string::_M_replace((unsigned int *)v16, 0, 0, Str, v9); + v18[0] = v19; + if ( (unsigned int *)*v10 == v10 + 2 ) + { + v19[0] = v10[2]; + v19[1] = v10[3]; + v19[2] = v10[4]; + v19[3] = v10[5]; + } + else + { + v18[0] = (void *)*v10; + v19[0] = v10[2]; + } + v11 = (void *)v10[1]; + *((_BYTE *)v10 + 8) = 0; + v18[1] = v11; + *v10 = (unsigned int)(v10 + 2); + v10[1] = 0; + std::runtime_error::runtime_error(this, (int)v18); + if ( v18[0] != v19 ) + operator delete(v18[0]); + if ( v16[0] != v17 ) + operator delete(v16[0]); + if ( v14[0] != v15 ) + operator delete(v14[0]); + result = v13; + this[3] = v4; + *this = &off_4F5DC8; + this[2] = v13; + return result; +} +// 4F5DC8: using guessed type int (*off_4F5DC8)(); + +//----- (004CE040) -------------------------------------------------------- +void __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2) +{ + void (__cdecl ***v3)(_anonymous_namespace_::io_error_category *__hidden); // esi + int (__thiscall *v4)(int, int, int); // eax + unsigned int v5; // edi + unsigned int v6; // ecx + unsigned int v7; // ecx + unsigned int *v8; // eax + unsigned int *v9; // edx + void *v10; // ecx + void *v11; // ecx + int v12; // [esp+8h] [ebp-80h] + void *v13; // [esp+28h] [ebp-60h] BYREF + size_t v14; // [esp+2Ch] [ebp-5Ch] + int v15[4]; // [esp+30h] [ebp-58h] BYREF + void *v16; // [esp+40h] [ebp-48h] BYREF + size_t v17; // [esp+44h] [ebp-44h] + int v18[4]; // [esp+48h] [ebp-40h] BYREF + void *v19[2]; // [esp+58h] [ebp-30h] BYREF + int v20[10]; // [esp+60h] [ebp-28h] BYREF + + v3 = `anonymous namespace'::__io_category_instance(); + v4 = (int (__thiscall *)(int, int, int))(*v3)[4]; + if ( v4 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v16 = v18; + v17 = 0; + LOBYTE(v18[0]) = 0; + std::string::_M_replace((unsigned int *)&v16, 0, 0, "iostream error", 0xEu); + } + else + { + v4((int)&v16, (int)v3, 1); + } + v13 = v15; + LOBYTE(v12) = 0; + std::string::_M_construct(&v13, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v12); + if ( v14 == 0x3FFFFFFF || v14 == 1073741822 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v13, ": ", 2u); + v5 = v17 + v14; + if ( v13 == v15 ) + v6 = 15; + else + v6 = v15[0]; + if ( v5 > v6 && (v16 == v18 ? (v7 = 15) : (v7 = v18[0]), v5 <= v7) ) + { + v8 = std::string::_M_replace((unsigned int *)&v16, 0, 0, (char *)v13, v14); + v9 = v8 + 2; + v19[0] = v20; + v10 = (void *)*v8; + if ( (unsigned int *)*v8 != v8 + 2 ) + goto LABEL_11; + } + else + { + v8 = std::string::_M_append(&v13, v16, v17); + v9 = v8 + 2; + v19[0] = v20; + v10 = (void *)*v8; + if ( (unsigned int *)*v8 != v8 + 2 ) + { +LABEL_11: + v19[0] = v10; + v20[0] = v8[2]; + goto LABEL_12; + } + } + v20[0] = v8[2]; + v20[1] = v8[3]; + v20[2] = v8[4]; + v20[3] = v8[5]; +LABEL_12: + v11 = (void *)v8[1]; + *((_BYTE *)v8 + 8) = 0; + v19[1] = v11; + *v8 = (unsigned int)v9; + v8[1] = 0; + std::runtime_error::runtime_error(this, (int)v19); + if ( v19[0] != v20 ) + operator delete(v19[0]); + if ( v13 != v15 ) + operator delete(v13); + if ( v16 != v18 ) + operator delete(v16); + this[2] = 1; + this[3] = v3; + *this = &off_4F5DC8; +} +// 4CE0C2: variable 'v12' is possibly undefined +// 4F5DC8: using guessed type int (*off_4F5DC8)(); + +//----- (004CE2B0) -------------------------------------------------------- +int __thiscall std::ios_base::failure[abi:cxx11]::failure(_DWORD *this, int a2, int *a3) +{ + int v4; // edi + int v5; // edx + int (__thiscall *v6)(int, int, int); // eax + unsigned int v7; // edx + unsigned int v8; // esi + unsigned int v9; // esi + unsigned int *v10; // eax + unsigned int *v11; // edx + void *v12; // ecx + void *v13; // ecx + int result; // eax + int v15; // [esp+8h] [ebp-90h] + int v16; // [esp+28h] [ebp-70h] + void *v17; // [esp+38h] [ebp-60h] BYREF + size_t v18; // [esp+3Ch] [ebp-5Ch] + int v19[4]; // [esp+40h] [ebp-58h] BYREF + void *v20; // [esp+50h] [ebp-48h] BYREF + size_t v21; // [esp+54h] [ebp-44h] + int v22[4]; // [esp+58h] [ebp-40h] BYREF + void *v23[2]; // [esp+68h] [ebp-30h] BYREF + int v24[10]; // [esp+70h] [ebp-28h] BYREF + + v4 = a3[1]; + v5 = *a3; + v16 = *a3; + v6 = *(int (__thiscall **)(int, int, int))(*(_DWORD *)v4 + 16); + if ( v6 == `anonymous namespace'::io_error_category::message[abi:cxx11] ) + { + v21 = 0; + v20 = v22; + LOBYTE(v22[0]) = 0; + if ( v5 == 1 ) + std::string::_M_replace((unsigned int *)&v20, 0, 0, "iostream error", 0xEu); + else + std::string::_M_replace((unsigned int *)&v20, 0, 0, "Unknown error", 0xDu); + } + else + { + v6((int)&v20, v4, v16); + } + v17 = v19; + LOBYTE(v15) = 0; + std::string::_M_construct(&v17, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v15); + if ( v18 == 0x3FFFFFFF || v18 == 1073741822 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(&v17, ": ", 2u); + v7 = v21 + v18; + if ( v17 == v19 ) + v8 = 15; + else + v8 = v19[0]; + if ( v7 > v8 && (v20 == v22 ? (v9 = 15) : (v9 = v22[0]), v7 <= v9) ) + { + v10 = std::string::_M_replace((unsigned int *)&v20, 0, 0, (char *)v17, v18); + v11 = v10 + 2; + v23[0] = v24; + v12 = (void *)*v10; + if ( (unsigned int *)*v10 != v10 + 2 ) + goto LABEL_12; + } + else + { + v10 = std::string::_M_append(&v17, v20, v21); + v11 = v10 + 2; + v23[0] = v24; + v12 = (void *)*v10; + if ( (unsigned int *)*v10 != v10 + 2 ) + { +LABEL_12: + v23[0] = v12; + v24[0] = v10[2]; + goto LABEL_13; + } + } + v24[0] = v10[2]; + v24[1] = v10[3]; + v24[2] = v10[4]; + v24[3] = v10[5]; +LABEL_13: + v13 = (void *)v10[1]; + *((_BYTE *)v10 + 8) = 0; + v23[1] = v13; + *v10 = (unsigned int)v11; + v10[1] = 0; + std::runtime_error::runtime_error(this, (int)v23); + if ( v23[0] != v24 ) + operator delete(v23[0]); + if ( v17 != v19 ) + operator delete(v17); + if ( v20 != v22 ) + operator delete(v20); + result = v16; + this[3] = v4; + *this = &off_4F5DC8; + this[2] = v16; + return result; +} +// 4CE348: variable 'v15' is possibly undefined +// 4F5DC8: using guessed type int (*off_4F5DC8)(); + +//----- (004CE560) -------------------------------------------------------- +void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1) +{ + *a1 = &off_4F5DC8; + std::system_error::~system_error(a1); + operator delete(a1); +} +// 4F5DC8: using guessed type int (*off_4F5DC8)(); + +//----- (004CE580) -------------------------------------------------------- +void __fastcall std::ios_base::failure[abi:cxx11]::~failure(_DWORD *a1) +{ + *a1 = &off_4F5DC8; + std::system_error::~system_error(a1); +} +// 4F5DC8: using guessed type int (*off_4F5DC8)(); + +//----- (004CE590) -------------------------------------------------------- +unsigned int *__userpurge std::ios_base::failure::failure@( + int a1@, + unsigned int **this, + const std::string *a3) +{ + unsigned int **v3; // ecx + const std::string *v5; // [esp+4h] [ebp-24h] + + v3 = (unsigned int **)(a1 + 4); + *(v3 - 1) = (unsigned int *)&off_4F5DDC; + return std::string::string(v3, this, v5); +} +// 4CE5AB: variable 'v5' is possibly undefined +// 4F5DDC: using guessed type void (__cdecl *off_4F5DDC)(std::ios_base::failure *__hidden this); + +//----- (004CE5D0) -------------------------------------------------------- +void __fastcall std::ios_base::failure::~failure(_DWORD *a1) +{ + std::ios_base::failure::~failure(a1); + operator delete(a1); +} + +//----- (004CE5F0) -------------------------------------------------------- +void __fastcall std::ios_base::failure::~failure(_DWORD *a1) +{ + volatile signed __int32 *v1; // eax + int v2; // edx + std::exception *v3; // [esp+0h] [ebp-2Ch] + int v4[3]; // [esp+1Fh] [ebp-Dh] BYREF + + v1 = (volatile signed __int32 *)a1[1]; + *a1 = &off_4F5DDC; + if ( v1 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(v1 - 1, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)v1 - 1); + *((_DWORD *)v1 - 1) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v1 - 3), (int)v4); + } + std::exception::~exception(v3); +} +// 4CE609: variable 'v3' is possibly undefined +// 4F5DDC: using guessed type void (__cdecl *off_4F5DDC)(std::ios_base::failure *__hidden this); +// 15412D0: using guessed type int _CRT_MT; +// 4CE5F0: using guessed type int var_D[3]; + +//----- (004CE660) -------------------------------------------------------- +int __fastcall std::ios_base::ios_base(_DWORD *a1) +{ + _DWORD *v1; // ebx + _DWORD *v2; // eax + _DWORD *v3; // ecx + + v1 = a1 + 9; + *a1 = &off_4F6CF4; + v2 = a1 + 9; + a1[1] = 0; + a1[2] = 0; + a1[3] = 0; + a1[4] = 0; + a1[5] = 0; + a1[6] = 0; + a1[7] = 0; + a1[8] = 0; + do + { + *v2 = 0; + v2 += 2; + *(v2 - 1) = 0; + } + while ( a1 + 25 != v2 ); + a1[25] = 8; + v3 = a1 + 27; + *(v3 - 1) = v1; + return std::locale::locale(v3); +} +// 4F6CF4: using guessed type void (__cdecl *off_4F6CF4)(std::ios_base *__hidden this); + +//----- (004CE6E0) -------------------------------------------------------- +void __fastcall std::ios_base::~ios_base(void *a1) +{ + std::ios_base::~ios_base((int)a1); + operator delete(a1); +} + +//----- (004CE700) -------------------------------------------------------- +void __fastcall std::ios_base::~ios_base(int a1) +{ + void *v2; // eax + + *(_DWORD *)a1 = &off_4F6CF4; + std::ios_base::_M_call_callbacks((_DWORD *)a1, 0); + std::ios_base::_M_dispose_callbacks(a1); + v2 = *(void **)(a1 + 104); + if ( v2 != (void *)(a1 + 36) ) + { + if ( v2 ) + operator delete[](v2); + *(_DWORD *)(a1 + 104) = 0; + } + std::locale::~locale((_DWORD **)(a1 + 108)); +} +// 4F6CF4: using guessed type void (__cdecl *off_4F6CF4)(std::ios_base *__hidden this); + +//----- (004CE750) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_4F6D04; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004CE790) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6D04; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004CE7D0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_4F6D04; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004CE810) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6D04; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004CE850) -------------------------------------------------------- +void __fastcall std::messages::~messages(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6D04; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CE869: variable 'v2' is possibly undefined +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004CE880) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D04; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CE889: variable 'v1' is possibly undefined +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004CE8B0) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D04; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CE8B9: variable 'v1' is possibly undefined +// 4F6D04: using guessed type int (*off_4F6D04)(); + +//----- (004CE8E0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_4F6D20; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004CE920) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6D20; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004CE960) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2, int a3, int a4) +{ + int result; // eax + + *this = &off_4F6D20; + this[1] = a4 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004CE9A0) -------------------------------------------------------- +int __thiscall std::messages::messages(_DWORD *this, int a2) +{ + int result; // eax + + *this = &off_4F6D20; + this[1] = a2 != 0; + result = std::locale::facet::_S_get_c_locale(); + this[2] = result; + return result; +} +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004CE9E0) -------------------------------------------------------- +void __fastcall std::messages::~messages(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6D20; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(a1 + 2)); + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CE9F9: variable 'v2' is possibly undefined +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004CEA10) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D20; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CEA19: variable 'v1' is possibly undefined +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004CEA40) -------------------------------------------------------- +void __cdecl std::messages::~messages(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D20; + std::locale::facet::_S_destroy_c_locale((std::locale::facet *)(v1 + 2)); + std::locale::facet::~facet(a1); +} +// 4CEA49: variable 'v1' is possibly undefined +// 4F6D20: using guessed type int (*off_4F6D20)(); + +//----- (004CEA70) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) +{ + _DWORD *v3; // eax + char *v4; // ecx + int i; // eax + char *v6; // esi + int j; // eax + _DWORD *result; // eax + void (__cdecl *v9)(void *); // [esp+4h] [ebp-18h] + + v3 = (_DWORD *)this[2]; + if ( !v3 ) + { + v3 = operator new((struct type_info *)0x68, v9); + v3[1] = 0; + *v3 = &off_4F65A0; + v3[2] = 0; + v3[3] = 0; + *((_BYTE *)v3 + 16) = 0; + v3[5] = 0; + v3[6] = 0; + v3[7] = 0; + v3[8] = 0; + *((_WORD *)v3 + 18) = 0; + *((_BYTE *)v3 + 100) = 0; + this[2] = v3; + } + v3[2] = &unk_4EC654; + v4 = std::__num_base::_S_atoms_out[0]; + v3[3] = 0; + *((_BYTE *)v3 + 16) = 0; + *((_BYTE *)v3 + 36) = 46; + *(_BYTE *)(this[2] + 37) = 44; + for ( i = 0; i != 36; ++i ) + *(_BYTE *)(this[2] + i + 38) = v4[i]; + v6 = std::__num_base::_S_atoms_in[0]; + for ( j = 0; j != 26; ++j ) + *(_BYTE *)(this[2] + j + 74) = v6[j]; + result = (_DWORD *)this[2]; + result[5] = "true"; + result[6] = 4; + result[7] = "false"; + result[8] = 5; + return result; +} +// 4CEB12: variable 'v9' is possibly undefined +// 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; +// 4F65A0: using guessed type int (*off_4F65A0)(); + +//----- (004CEB70) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F6D3C; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004CEBC0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F6D3C; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004CEC10) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_4F6D3C; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004CEC60) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F6D3C; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004CECB0) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F6D3C; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004CED00) -------------------------------------------------------- +_DWORD *__thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_4F6D3C; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004CED50) -------------------------------------------------------- +void __fastcall std::numpunct::~numpunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4CED57: variable 'v2' is possibly undefined + +//----- (004CED80) -------------------------------------------------------- +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F6D3C; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4CED87: variable 'v1' is possibly undefined +// 4F6D3C: using guessed type int (*off_4F6D3C)(); + +//----- (004CEDB0) -------------------------------------------------------- +int __thiscall std::numpunct::_M_initialize_numpunct(_DWORD *this, int a2) +{ + _DWORD *v2; // edx + char *v3; // ebx + int v4; // eax + char *v5; // ebx + int result; // eax + _DWORD *v7; // eax + void (__cdecl *v8)(void *); // [esp+4h] [ebp-28h] + + v2 = (_DWORD *)this[2]; + if ( !v2 ) + { + v7 = operator new((struct type_info *)0xA8, v8); + v7[1] = 0; + v2 = v7; + *v7 = &off_4F65B0; + v7[2] = 0; + v7[3] = 0; + *((_BYTE *)v7 + 16) = 0; + v7[5] = 0; + v7[6] = 0; + v7[7] = 0; + v7[8] = 0; + v7[9] = 0; + *((_BYTE *)v7 + 164) = 0; + this[2] = v7; + } + v2[2] = &unk_4EC654; + v3 = std::__num_base::_S_atoms_out[0]; + v4 = 0; + v2[3] = 0; + *((_BYTE *)v2 + 16) = 0; + v2[9] = 2883630; + do + { + *((_WORD *)v2 + v4 + 20) = v3[v4]; + ++v4; + } + while ( v4 != 36 ); + v5 = std::__num_base::_S_atoms_in[0]; + for ( result = 0; result != 26; ++result ) + *((_WORD *)v2 + result + 56) = v5[result]; + v2[5] = &off_4EC660; + v2[6] = 4; + v2[7] = &off_4EC66A; + v2[8] = 5; + return result; +} +// 4CEE40: variable 'v8' is possibly undefined +// 4E9400: using guessed type char *std::__num_base::_S_atoms_in[3]; +// 4E9404: using guessed type char *std::__num_base::_S_atoms_out[2]; +// 4EC660: using guessed type void *off_4EC660; +// 4EC66A: using guessed type void *off_4EC66A; +// 4F65B0: using guessed type int (*off_4F65B0)(); + +//----- (004CEEA0) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F6D60; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004CEEF0) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F6D60; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004CEF40) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_4F6D60; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004CEF90) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F6D60; + this[1] = a3 != 0; + this[2] = a2; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004CEFE0) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2, int a3) +{ + *this = &off_4F6D60; + this[2] = 0; + this[1] = a3 != 0; + return std::numpunct::_M_initialize_numpunct(this, a2); +} +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004CF030) -------------------------------------------------------- +int __thiscall std::numpunct::numpunct(_DWORD *this, int a2) +{ + *this = &off_4F6D60; + this[2] = 0; + this[1] = a2 != 0; + return std::numpunct::_M_initialize_numpunct(this, 0); +} +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004CF080) -------------------------------------------------------- +void __fastcall std::numpunct::~numpunct(void *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + std::numpunct::~numpunct(v2); + operator delete(a1); +} +// 4CF087: variable 'v2' is possibly undefined + +//----- (004CF0B0) -------------------------------------------------------- +void __cdecl std::numpunct::~numpunct(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + int v2; // ecx + + *v1 = &off_4F6D60; + v2 = v1[2]; + if ( v2 ) + (*(void (__fastcall **)(int))(*(_DWORD *)v2 + 4))(v2); + std::locale::facet::~facet(a1); +} +// 4CF0B7: variable 'v1' is possibly undefined +// 4F6D60: using guessed type int (*off_4F6D60)(); + +//----- (004CF0E0) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6D84; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6D84: using guessed type int (*off_4F6D84)(); + +//----- (004CF100) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6D84; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6D84: using guessed type int (*off_4F6D84)(); + +//----- (004CF120) -------------------------------------------------------- +void __fastcall std::time_get>::~time_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6D84; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CF12C: variable 'v2' is possibly undefined +// 4F6D84: using guessed type int (*off_4F6D84)(); + +//----- (004CF140) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D84; + std::locale::facet::~facet(a1); +} +// 4CF140: variable 'v1' is possibly undefined +// 4F6D84: using guessed type int (*off_4F6D84)(); + +//----- (004CF150) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6D84; + std::locale::facet::~facet(a1); +} +// 4CF150: variable 'v1' is possibly undefined +// 4F6D84: using guessed type int (*off_4F6D84)(); + +//----- (004CF160) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6DAC; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6DAC: using guessed type int (*off_4F6DAC)(); + +//----- (004CF180) -------------------------------------------------------- +BOOL __thiscall std::time_get>::time_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6DAC; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6DAC: using guessed type int (*off_4F6DAC)(); + +//----- (004CF1A0) -------------------------------------------------------- +void __fastcall std::time_get>::~time_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6DAC; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CF1AC: variable 'v2' is possibly undefined +// 4F6DAC: using guessed type int (*off_4F6DAC)(); + +//----- (004CF1C0) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DAC; + std::locale::facet::~facet(a1); +} +// 4CF1C0: variable 'v1' is possibly undefined +// 4F6DAC: using guessed type int (*off_4F6DAC)(); + +//----- (004CF1D0) -------------------------------------------------------- +void __cdecl std::time_get>::~time_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DAC; + std::locale::facet::~facet(a1); +} +// 4CF1D0: variable 'v1' is possibly undefined +// 4F6DAC: using guessed type int (*off_4F6DAC)(); + +//----- (004CF1E0) -------------------------------------------------------- +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6DD4; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6DD4: using guessed type int (*off_4F6DD4)(); + +//----- (004CF200) -------------------------------------------------------- +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6DD4; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6DD4: using guessed type int (*off_4F6DD4)(); + +//----- (004CF220) -------------------------------------------------------- +void __fastcall std::time_put>::~time_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6DD4; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CF22C: variable 'v2' is possibly undefined +// 4F6DD4: using guessed type int (*off_4F6DD4)(); + +//----- (004CF240) -------------------------------------------------------- +void __cdecl std::time_put>::~time_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DD4; + std::locale::facet::~facet(a1); +} +// 4CF240: variable 'v1' is possibly undefined +// 4F6DD4: using guessed type int (*off_4F6DD4)(); + +//----- (004CF250) -------------------------------------------------------- +void __cdecl std::time_put>::~time_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DD4; + std::locale::facet::~facet(a1); +} +// 4CF250: variable 'v1' is possibly undefined +// 4F6DD4: using guessed type int (*off_4F6DD4)(); + +//----- (004CF260) -------------------------------------------------------- +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6DE8; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6DE8: using guessed type int (*off_4F6DE8)(); + +//----- (004CF280) -------------------------------------------------------- +BOOL __thiscall std::time_put>::time_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6DE8; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6DE8: using guessed type int (*off_4F6DE8)(); + +//----- (004CF2A0) -------------------------------------------------------- +void __fastcall std::time_put>::~time_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6DE8; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4CF2AC: variable 'v2' is possibly undefined +// 4F6DE8: using guessed type int (*off_4F6DE8)(); + +//----- (004CF2C0) -------------------------------------------------------- +void __cdecl std::time_put>::~time_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DE8; + std::locale::facet::~facet(a1); +} +// 4CF2C0: variable 'v1' is possibly undefined +// 4F6DE8: using guessed type int (*off_4F6DE8)(); + +//----- (004CF2D0) -------------------------------------------------------- +void __cdecl std::time_put>::~time_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DE8; + std::locale::facet::~facet(a1); +} +// 4CF2D0: variable 'v1' is possibly undefined +// 4F6DE8: using guessed type int (*off_4F6DE8)(); + +//----- (004CF2E0) -------------------------------------------------------- +void __fastcall std::bad_alloc::~bad_alloc(_DWORD *a1) +{ + std::exception *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6DFC; + std::exception::~exception(v2); + operator delete(a1, 4u); +} +// 4CF2EC: variable 'v2' is possibly undefined +// 4F6DFC: using guessed type void (__cdecl *off_4F6DFC)(std::bad_alloc *__hidden this); + +//----- (004CF310) -------------------------------------------------------- +void __cdecl std::bad_alloc::~bad_alloc(std::exception *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6DFC; + std::exception::~exception(a1); +} +// 4CF310: variable 'v1' is possibly undefined +// 4F6DFC: using guessed type void (__cdecl *off_4F6DFC)(std::bad_alloc *__hidden this); + +//----- (004CF320) -------------------------------------------------------- +int __thiscall std::ios::exceptions(_DWORD *this, int a2) +{ + this[4] = a2; + return std::ios::clear(this, this[5]); +} + +//----- (004CF340) -------------------------------------------------------- +int __thiscall std::ios::_M_setstate(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[5] |= a2; + if ( (a2 & this[4]) != 0 ) + __cxa_rethrow(); + return result; +} + +//----- (004CF360) -------------------------------------------------------- +void *__thiscall std::ios::_M_cache_locale(_DWORD *this, int a2) +{ + void *result; // eax + + if ( (unsigned __int8)std::has_facet>(a2) ) + { + this[31] = std::use_facet>(a2); + if ( (unsigned __int8)std::has_facet>>(a2) ) + goto LABEL_3; +LABEL_6: + this[32] = 0; + result = (void *)std::has_facet>>(a2); + if ( (_BYTE)result ) + goto LABEL_4; + goto LABEL_7; + } + this[31] = 0; + if ( !(unsigned __int8)std::has_facet>>(a2) ) + goto LABEL_6; +LABEL_3: + this[32] = std::use_facet>>(a2); + result = (void *)std::has_facet>>(a2); + if ( (_BYTE)result ) + { +LABEL_4: + result = std::use_facet>>(a2); + this[33] = result; + return result; + } +LABEL_7: + this[33] = 0; + return result; +} + +//----- (004CF400) -------------------------------------------------------- +int __thiscall std::ios::tie(_DWORD *this, int a2) +{ + int result; // eax + + result = this[28]; + this[28] = a2; + return result; +} + +//----- (004CF410) -------------------------------------------------------- +int __thiscall std::ios::fill(int this, char a2) +{ + int result; // eax + _BYTE *v4; // edi + int (__stdcall *v5)(unsigned __int8); // edx + + if ( *(_BYTE *)(this + 117) ) + { + result = *(unsigned __int8 *)(this + 116); + *(_BYTE *)(this + 116) = a2; + } + else + { + v4 = *(_BYTE **)(this + 124); + if ( !v4 ) + std::__throw_bad_cast(); + if ( v4[28] ) + { + result = (unsigned __int8)v4[61]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); + v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); + result = 32; + if ( v5 != std::ctype::do_widen ) + result = ((int (__thiscall *)(_BYTE *, int))v5)(v4, 32); + } + *(_BYTE *)(this + 117) = 1; + *(_BYTE *)(this + 116) = a2; + } + return result; +} + +//----- (004CF490) -------------------------------------------------------- +BOOL __thiscall std::ios::init(int this, int a2) +{ + BOOL result; // eax + + std::ios_base::_M_init(this); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + *(_DWORD *)(this + 120) = a2; + *(_WORD *)(this + 116) = 0; + result = a2 == 0; + *(_DWORD *)(this + 112) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = result; + return result; +} + +//----- (004CF4E0) -------------------------------------------------------- +int __thiscall std::ios::move(int this, std::ios_base *a2) +{ + int v3; // eax + int result; // eax + std::ios_base *v5; // [esp+4h] [ebp-18h] + + std::ios_base::_M_move(this, a2, v5); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + v3 = *((_DWORD *)a2 + 28); + *((_DWORD *)a2 + 28) = 0; + *(_DWORD *)(this + 112) = v3; + *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); + result = *((unsigned __int8 *)a2 + 117); + *(_DWORD *)(this + 120) = 0; + *(_BYTE *)(this + 117) = result; + return result; +} +// 4CF4EE: variable 'v5' is possibly undefined + +//----- (004CF530) -------------------------------------------------------- +int __thiscall std::ios::move(int this, std::ios_base *a2) +{ + int v3; // eax + int result; // eax + std::ios_base *v5; // [esp+4h] [ebp-18h] + + std::ios_base::_M_move(this, a2, v5); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + v3 = *((_DWORD *)a2 + 28); + *((_DWORD *)a2 + 28) = 0; + *(_DWORD *)(this + 112) = v3; + *(_BYTE *)(this + 116) = *((_BYTE *)a2 + 116); + result = *((unsigned __int8 *)a2 + 117); + *(_DWORD *)(this + 120) = 0; + *(_BYTE *)(this + 117) = result; + return result; +} +// 4CF53E: variable 'v5' is possibly undefined + +//----- (004CF580) -------------------------------------------------------- +int __thiscall std::ios::swap(int this, std::ios_base *a2) +{ + int v3; // eax + char v4; // dl + char v5; // dl + int result; // eax + std::ios_base *v7; // [esp+4h] [ebp-18h] + + std::ios_base::_M_swap(this, a2, v7); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + std::ios::_M_cache_locale(a2, (int)a2 + 108); + v3 = *(_DWORD *)(this + 112); + *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); + v4 = *((_BYTE *)a2 + 116); + *((_DWORD *)a2 + 28) = v3; + LOBYTE(v3) = *(_BYTE *)(this + 116); + *(_BYTE *)(this + 116) = v4; + v5 = *((_BYTE *)a2 + 117); + *((_BYTE *)a2 + 116) = v3; + result = *(unsigned __int8 *)(this + 117); + *(_BYTE *)(this + 117) = v5; + *((_BYTE *)a2 + 117) = result; + return result; +} +// 4CF58E: variable 'v7' is possibly undefined + +//----- (004CF5F0) -------------------------------------------------------- +int __thiscall std::ios::clear(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + if ( !this[30] ) + result = a2 | 1; + this[5] = result; + if ( (result & this[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); + return result; +} + +//----- (004CF630) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::ios::imbue( + volatile signed __int32 **this, + volatile signed __int32 **a2, + volatile signed __int32 **a3) +{ + volatile signed __int32 **v4; // esi + const std::locale *v6; // [esp+4h] [ebp-44h] + const std::locale *v7; // [esp+4h] [ebp-44h] + _DWORD *v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::locale::locale(this, a2 + 27, v6); + std::ios_base::imbue((volatile signed __int32 **)v8, a2, a3); + std::locale::~locale(v8); + std::ios::_M_cache_locale(a2, (int)a3); + v4 = (volatile signed __int32 **)a2[30]; + if ( v4 ) + { + std::locale::locale((volatile signed __int32 **)v8, v4 + 7, v7); + (*((void (__thiscall **)(volatile signed __int32 **, volatile signed __int32 **))*v4 + 2))(v4, a3); + std::locale::operator=(v4 + 7, a3); + std::locale::~locale(v8); + } + return this; +} +// 4CF647: variable 'v6' is possibly undefined +// 4CF68B: variable 'v7' is possibly undefined + +//----- (004CF6E0) -------------------------------------------------------- +int __thiscall std::ios::rdbuf(_DWORD *this, int a2) +{ + int v2; // edx + BOOL v3; // eax + + v2 = this[30]; + this[30] = a2; + v3 = a2 == 0; + this[5] = v3; + if ( (v3 & this[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); + return v2; +} + +//----- (004CF720) -------------------------------------------------------- +int __thiscall std::ios::copyfmt(int this, _DWORD *a2) +{ + _DWORD *v3; // esi + int v4; // eax + _DWORD *v5; // eax + int v6; // ebp + int v7; // edi + int v8; // edx + _DWORD *v9; // eax + int v10; // ebp + int v11; // ecx + int v12; // edx + int v13; // esi + int v14; // eax + bool v15; // zf + char v16; // dl + _DWORD *v18; // edx + int v19; // ecx + _BYTE *v20; // edi + _BYTE *v21; // edi + int (__stdcall *v22)(unsigned __int8); // eax + int (__stdcall *v23)(unsigned __int8); // eax + const std::locale *v24; // [esp+4h] [ebp-48h] + _DWORD *v25; // [esp+1Ch] [ebp-30h] + _DWORD *v26; // [esp+1Ch] [ebp-30h] + unsigned __int8 v27; // [esp+1Ch] [ebp-30h] + _DWORD *v28[8]; // [esp+2Ch] [ebp-20h] BYREF + + v3 = a2; + if ( (_DWORD *)this != a2 ) + { + v4 = a2[25]; + if ( v4 > 8 ) + { + if ( v4 > 0xFFFFFFF ) + __cxa_throw_bad_array_new_length(); + v6 = this + 36; + v5 = (_DWORD *)operator new[](8 * v4); + v18 = v5; + v19 = a2[25] - 1; + if ( v19 >= 0 ) + { + do + { + --v19; + *v18 = 0; + v18 += 2; + *(v18 - 1) = 0; + } + while ( v19 != -1 ); + } + } + else + { + v5 = (_DWORD *)(this + 36); + v6 = this + 36; + } + v7 = a2[6]; + if ( v7 ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); + else + ++*(_DWORD *)(v7 + 12); + } + v25 = v5; + std::ios_base::_M_call_callbacks((_DWORD *)this, 0); + v8 = *(_DWORD *)(this + 104); + v9 = v25; + if ( v8 != v6 ) + { + if ( v8 ) + { + operator delete[](*(void **)(this + 104)); + v9 = v25; + } + *(_DWORD *)(this + 104) = 0; + } + v26 = v9; + std::ios_base::_M_dispose_callbacks(this); + v10 = a2[25]; + *(_DWORD *)(this + 24) = v7; + if ( v10 > 0 ) + { + v11 = a2[26]; + v12 = 0; + do + { + v13 = *(_DWORD *)(v11 + v12 * 4 + 4); + v26[v12] = *(_DWORD *)(v11 + v12 * 4); + v26[v12 + 1] = v13; + v12 += 2; + } + while ( v12 != 2 * v10 ); + v3 = a2; + } + *(_DWORD *)(this + 104) = v26; + v14 = v3[3]; + *(_DWORD *)(this + 100) = v10; + v15 = *((_BYTE *)v3 + 117) == 0; + *(_DWORD *)(this + 12) = v14; + *(_DWORD *)(this + 8) = v3[2]; + *(_DWORD *)(this + 4) = v3[1]; + *(_DWORD *)(this + 112) = v3[28]; + if ( v15 ) + { + v20 = (_BYTE *)v3[31]; + if ( !v20 ) + goto LABEL_35; + if ( v20[28] ) + { + v16 = v20[61]; + } + else + { + std::ctype::_M_widen_init(v3[31]); + v16 = 32; + v23 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v20 + 24); + if ( v23 != std::ctype::do_widen ) + v16 = ((int (__fastcall *)(_BYTE *, int, int))v23)(v20, 32, 32); + } + *((_BYTE *)v3 + 116) = v16; + *((_BYTE *)v3 + 117) = 1; + if ( *(_BYTE *)(this + 117) ) + goto LABEL_17; + } + else + { + v16 = *((_BYTE *)v3 + 116); + if ( *(_BYTE *)(this + 117) ) + { +LABEL_17: + *(_BYTE *)(this + 116) = v16; + std::locale::locale((volatile signed __int32 **)v28, (volatile signed __int32 **)v3 + 27, v24); + std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v28); + std::locale::~locale(v28); + std::ios::_M_cache_locale((_DWORD *)this, this + 108); + std::ios_base::_M_call_callbacks((_DWORD *)this, 2); + *(_DWORD *)(this + 16) = v3[4]; + std::ios::clear((_DWORD *)this, *(_DWORD *)(this + 20)); + return this; + } + } + v21 = *(_BYTE **)(this + 124); + if ( v21 ) + { + if ( !v21[28] ) + { + v27 = v16; + std::ctype::_M_widen_init(*(_DWORD *)(this + 124)); + v16 = v27; + v22 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v21 + 24); + if ( v22 != std::ctype::do_widen ) + { + ((void (__fastcall *)(_BYTE *, _DWORD, int))v22)(v21, v27, 32); + v16 = v27; + } + } + *(_BYTE *)(this + 117) = 1; + goto LABEL_17; + } +LABEL_35: + std::__throw_bad_cast(); + } + return this; +} +// 4CF82D: variable 'v24' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004CF9A0) -------------------------------------------------------- +int __thiscall std::ios::setstate(_DWORD *this, int a2) +{ + return std::ios::clear(this, this[5] | a2); +} + +//----- (004CF9B0) -------------------------------------------------------- +int __thiscall std::ios::set_rdbuf(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[30] = a2; + return result; +} + +//----- (004CF9C0) -------------------------------------------------------- +BOOL __thiscall std::ios::basic_ios(int this, int a2) +{ + std::ios_base::ios_base((_DWORD *)this); + *(_DWORD *)this = &off_4F6E10; + *(_WORD *)(this + 116) = 0; + *(_DWORD *)(this + 112) = 0; + *(_DWORD *)(this + 120) = 0; + *(_DWORD *)(this + 124) = 0; + *(_DWORD *)(this + 128) = 0; + *(_DWORD *)(this + 132) = 0; + return std::ios::init(this, a2); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004CFA30) -------------------------------------------------------- +int __fastcall std::ios::basic_ios(int a1) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)a1); + result = 0; + *(_DWORD *)a1 = &off_4F6E10; + *(_DWORD *)(a1 + 112) = 0; + *(_WORD *)(a1 + 116) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + return result; +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004CFA80) -------------------------------------------------------- +BOOL __thiscall std::ios::basic_ios(int this, int a2) +{ + std::ios_base::ios_base((_DWORD *)this); + *(_DWORD *)this = &off_4F6E10; + *(_WORD *)(this + 116) = 0; + *(_DWORD *)(this + 112) = 0; + *(_DWORD *)(this + 120) = 0; + *(_DWORD *)(this + 124) = 0; + *(_DWORD *)(this + 128) = 0; + *(_DWORD *)(this + 132) = 0; + return std::ios::init(this, a2); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004CFAF0) -------------------------------------------------------- +int __fastcall std::ios::basic_ios(int a1) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)a1); + result = 0; + *(_DWORD *)a1 = &off_4F6E10; + *(_DWORD *)(a1 + 112) = 0; + *(_WORD *)(a1 + 116) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + return result; +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004CFB40) -------------------------------------------------------- +void __fastcall std::ios::~ios(_DWORD *a1) +{ + *a1 = &off_4F6E10; + std::ios_base::~ios_base((int)a1); + operator delete(a1); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004CFB60) -------------------------------------------------------- +void __fastcall std::ios::~ios(int a1) +{ + *(_DWORD *)a1 = &off_4F6E10; + std::ios_base::~ios_base(a1); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004CFB70) -------------------------------------------------------- +void __fastcall std::ios::~ios(int a1) +{ + *(_DWORD *)a1 = &off_4F6E10; + std::ios_base::~ios_base(a1); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004CFB80) -------------------------------------------------------- +int __thiscall std::wios::exceptions(_DWORD *this, int a2) +{ + this[4] = a2; + return std::wios::clear(this, this[5]); +} + +//----- (004CFBA0) -------------------------------------------------------- +int __thiscall std::wios::_M_setstate(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[5] |= a2; + if ( (a2 & this[4]) != 0 ) + __cxa_rethrow(); + return result; +} + +//----- (004CFBC0) -------------------------------------------------------- +void *__thiscall std::wios::_M_cache_locale(_DWORD *this, int a2) +{ + void *result; // eax + + if ( (unsigned __int8)std::has_facet>(a2) ) + { + this[31] = std::use_facet>(a2); + if ( (unsigned __int8)std::has_facet>>(a2) ) + goto LABEL_3; +LABEL_6: + this[32] = 0; + result = (void *)std::has_facet>>(a2); + if ( (_BYTE)result ) + goto LABEL_4; + goto LABEL_7; + } + this[31] = 0; + if ( !(unsigned __int8)std::has_facet>>(a2) ) + goto LABEL_6; +LABEL_3: + this[32] = std::use_facet>>(a2); + result = (void *)std::has_facet>>(a2); + if ( (_BYTE)result ) + { +LABEL_4: + result = std::use_facet>>(a2); + this[33] = result; + return result; + } +LABEL_7: + this[33] = 0; + return result; +} + +//----- (004CFC60) -------------------------------------------------------- +int __thiscall std::wios::tie(_DWORD *this, int a2) +{ + int result; // eax + + result = this[28]; + this[28] = a2; + return result; +} + +//----- (004CFC70) -------------------------------------------------------- +int __thiscall std::wios::fill(int this, __int16 a2) +{ + int result; // eax + int v4; // ecx + + if ( *(_BYTE *)(this + 118) ) + { + result = *(unsigned __int16 *)(this + 116); + *(_WORD *)(this + 116) = a2; + } + else + { + v4 = *(_DWORD *)(this + 124); + if ( !v4 ) + std::__throw_bad_cast(); + result = (*(int (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); + *(_WORD *)(this + 116) = a2; + *(_BYTE *)(this + 118) = 1; + } + return result; +} + +//----- (004CFCD0) -------------------------------------------------------- +BOOL __thiscall std::wios::init(int this, int a2) +{ + BOOL result; // eax + + std::ios_base::_M_init(this); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + *(_DWORD *)(this + 120) = a2; + *(_WORD *)(this + 116) = 0; + result = a2 == 0; + *(_BYTE *)(this + 118) = 0; + *(_DWORD *)(this + 112) = 0; + *(_DWORD *)(this + 16) = 0; + *(_DWORD *)(this + 20) = result; + return result; +} + +//----- (004CFD20) -------------------------------------------------------- +int __thiscall std::wios::move(int this, std::ios_base *a2) +{ + int v3; // eax + int result; // eax + std::ios_base *v5; // [esp+4h] [ebp-18h] + + std::ios_base::_M_move(this, a2, v5); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + v3 = *((_DWORD *)a2 + 28); + *((_DWORD *)a2 + 28) = 0; + *(_DWORD *)(this + 112) = v3; + *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); + result = *((unsigned __int8 *)a2 + 118); + *(_DWORD *)(this + 120) = 0; + *(_BYTE *)(this + 118) = result; + return result; +} +// 4CFD2E: variable 'v5' is possibly undefined + +//----- (004CFD80) -------------------------------------------------------- +int __thiscall std::wios::move(int this, std::ios_base *a2) +{ + int v3; // eax + int result; // eax + std::ios_base *v5; // [esp+4h] [ebp-18h] + + std::ios_base::_M_move(this, a2, v5); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + v3 = *((_DWORD *)a2 + 28); + *((_DWORD *)a2 + 28) = 0; + *(_DWORD *)(this + 112) = v3; + *(_WORD *)(this + 116) = *((_WORD *)a2 + 58); + result = *((unsigned __int8 *)a2 + 118); + *(_DWORD *)(this + 120) = 0; + *(_BYTE *)(this + 118) = result; + return result; +} +// 4CFD8E: variable 'v5' is possibly undefined + +//----- (004CFDE0) -------------------------------------------------------- +int __thiscall std::wios::swap(int this, std::ios_base *a2) +{ + int v3; // eax + __int16 v4; // dx + int result; // eax + std::ios_base *v6; // [esp+4h] [ebp-18h] + + std::ios_base::_M_swap(this, a2, v6); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + std::wios::_M_cache_locale(a2, (int)a2 + 108); + v3 = *(_DWORD *)(this + 112); + *(_DWORD *)(this + 112) = *((_DWORD *)a2 + 28); + v4 = *((_WORD *)a2 + 58); + *((_DWORD *)a2 + 28) = v3; + LOWORD(v3) = *(_WORD *)(this + 116); + *(_WORD *)(this + 116) = v4; + LOBYTE(v4) = *((_BYTE *)a2 + 118); + *((_WORD *)a2 + 58) = v3; + result = *(unsigned __int8 *)(this + 118); + *(_BYTE *)(this + 118) = v4; + *((_BYTE *)a2 + 118) = result; + return result; +} +// 4CFDEE: variable 'v6' is possibly undefined + +//----- (004CFE50) -------------------------------------------------------- +int __thiscall std::wios::clear(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + if ( !this[30] ) + result = a2 | 1; + this[5] = result; + if ( (result & this[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); + return result; +} + +//----- (004CFE90) -------------------------------------------------------- +volatile signed __int32 **__thiscall std::wios::imbue( + volatile signed __int32 **this, + volatile signed __int32 **a2, + volatile signed __int32 **a3) +{ + volatile signed __int32 **v4; // esi + const std::locale *v6; // [esp+4h] [ebp-44h] + const std::locale *v7; // [esp+4h] [ebp-44h] + _DWORD *v8[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + std::locale::locale(this, a2 + 27, v6); + std::ios_base::imbue((volatile signed __int32 **)v8, a2, a3); + std::locale::~locale(v8); + std::wios::_M_cache_locale(a2, (int)a3); + v4 = (volatile signed __int32 **)a2[30]; + if ( v4 ) + { + std::locale::locale((volatile signed __int32 **)v8, v4 + 7, v7); + (*((void (__thiscall **)(volatile signed __int32 **, volatile signed __int32 **))*v4 + 2))(v4, a3); + std::locale::operator=(v4 + 7, a3); + std::locale::~locale(v8); + } + return this; +} +// 4CFEA7: variable 'v6' is possibly undefined +// 4CFEEB: variable 'v7' is possibly undefined + +//----- (004CFF40) -------------------------------------------------------- +int __thiscall std::wios::rdbuf(_DWORD *this, int a2) +{ + int v2; // edx + BOOL v3; // eax + + v2 = this[30]; + this[30] = a2; + v3 = a2 == 0; + this[5] = v3; + if ( (v3 & this[4]) != 0 ) + std::__throw_ios_failure((std::__ios_failure *)"basic_ios::clear"); + return v2; +} + +//----- (004CFF80) -------------------------------------------------------- +int __thiscall std::wios::copyfmt(int this, _DWORD *a2) +{ + _DWORD *v3; // esi + int v4; // eax + _DWORD *v5; // eax + int v6; // ebp + int v7; // edi + int v8; // edx + _DWORD *v9; // eax + int v10; // ebp + int v11; // ecx + int v12; // edx + int v13; // esi + int v14; // eax + bool v15; // zf + __int16 v16; // di + _DWORD *v18; // edx + int v19; // ecx + int v20; // ecx + __int16 v21; // ax + int v22; // ecx + const std::locale *v23; // [esp+8h] [ebp-48h] + _DWORD *v24; // [esp+20h] [ebp-30h] + _DWORD *v25; // [esp+20h] [ebp-30h] + _DWORD *v26[8]; // [esp+30h] [ebp-20h] BYREF + + v3 = a2; + if ( (_DWORD *)this != a2 ) + { + v4 = a2[25]; + if ( v4 > 8 ) + { + if ( v4 > 0xFFFFFFF ) + __cxa_throw_bad_array_new_length(); + v6 = this + 36; + v5 = (_DWORD *)operator new[](8 * v4); + v18 = v5; + v19 = a2[25] - 1; + if ( v19 >= 0 ) + { + do + { + --v19; + *v18 = 0; + v18 += 2; + *(v18 - 1) = 0; + } + while ( v19 != -1 ); + } + } + else + { + v5 = (_DWORD *)(this + 36); + v6 = this + 36; + } + v7 = a2[6]; + if ( v7 ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)(v7 + 12), 1u); + else + ++*(_DWORD *)(v7 + 12); + } + v24 = v5; + std::ios_base::_M_call_callbacks((_DWORD *)this, 0); + v8 = *(_DWORD *)(this + 104); + v9 = v24; + if ( v8 != v6 ) + { + if ( v8 ) + { + operator delete[](*(void **)(this + 104)); + v9 = v24; + } + *(_DWORD *)(this + 104) = 0; + } + v25 = v9; + std::ios_base::_M_dispose_callbacks(this); + v10 = a2[25]; + *(_DWORD *)(this + 24) = v7; + if ( v10 > 0 ) + { + v11 = a2[26]; + v12 = 0; + do + { + v13 = *(_DWORD *)(v11 + v12 * 4 + 4); + v25[v12] = *(_DWORD *)(v11 + v12 * 4); + v25[v12 + 1] = v13; + v12 += 2; + } + while ( v12 != 2 * v10 ); + v3 = a2; + } + *(_DWORD *)(this + 104) = v25; + v14 = v3[3]; + *(_DWORD *)(this + 100) = v10; + v15 = *((_BYTE *)v3 + 118) == 0; + *(_DWORD *)(this + 12) = v14; + *(_DWORD *)(this + 8) = v3[2]; + *(_DWORD *)(this + 4) = v3[1]; + *(_DWORD *)(this + 112) = v3[28]; + if ( v15 ) + { + v20 = v3[31]; + if ( !v20 ) + goto LABEL_28; + v21 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v20 + 40))(v20, 32); + *((_BYTE *)v3 + 118) = 1; + v15 = *(_BYTE *)(this + 118) == 0; + *((_WORD *)v3 + 58) = v21; + v16 = v21; + if ( !v15 ) + goto LABEL_17; + } + else + { + v16 = *((_WORD *)v3 + 58); + if ( *(_BYTE *)(this + 118) ) + { +LABEL_17: + *(_WORD *)(this + 116) = v16; + std::locale::locale((volatile signed __int32 **)v26, (volatile signed __int32 **)v3 + 27, v23); + std::locale::operator=((volatile signed __int32 **)(this + 108), (volatile signed __int32 **)v26); + std::locale::~locale(v26); + std::wios::_M_cache_locale((_DWORD *)this, this + 108); + std::ios_base::_M_call_callbacks((_DWORD *)this, 2); + *(_DWORD *)(this + 16) = v3[4]; + std::wios::clear((_DWORD *)this, *(_DWORD *)(this + 20)); + return this; + } + } + v22 = *(_DWORD *)(this + 124); + if ( v22 ) + { + (*(void (__thiscall **)(int, int))(*(_DWORD *)v22 + 40))(v22, 32); + *(_BYTE *)(this + 118) = 1; + goto LABEL_17; + } +LABEL_28: + std::__throw_bad_cast(); + } + return this; +} +// 4D008E: variable 'v23' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004D01B0) -------------------------------------------------------- +int __thiscall std::wios::setstate(_DWORD *this, int a2) +{ + return std::wios::clear(this, this[5] | a2); +} + +//----- (004D01C0) -------------------------------------------------------- +int __thiscall std::wios::set_rdbuf(_DWORD *this, int a2) +{ + int result; // eax + + result = a2; + this[30] = a2; + return result; +} + +//----- (004D01D0) -------------------------------------------------------- +BOOL __thiscall std::wios::basic_ios(int this, int a2) +{ + std::ios_base::ios_base((_DWORD *)this); + *(_DWORD *)this = &off_4F6E20; + *(_WORD *)(this + 116) = 0; + *(_DWORD *)(this + 112) = 0; + *(_BYTE *)(this + 118) = 0; + *(_DWORD *)(this + 120) = 0; + *(_DWORD *)(this + 124) = 0; + *(_DWORD *)(this + 128) = 0; + *(_DWORD *)(this + 132) = 0; + return std::wios::init(this, a2); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D0250) -------------------------------------------------------- +int __fastcall std::wios::basic_ios(int a1) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)a1); + result = 0; + *(_DWORD *)a1 = &off_4F6E20; + *(_DWORD *)(a1 + 112) = 0; + *(_WORD *)(a1 + 116) = 0; + *(_BYTE *)(a1 + 118) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + return result; +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D02A0) -------------------------------------------------------- +BOOL __thiscall std::wios::basic_ios(int this, int a2) +{ + std::ios_base::ios_base((_DWORD *)this); + *(_DWORD *)this = &off_4F6E20; + *(_WORD *)(this + 116) = 0; + *(_DWORD *)(this + 112) = 0; + *(_BYTE *)(this + 118) = 0; + *(_DWORD *)(this + 120) = 0; + *(_DWORD *)(this + 124) = 0; + *(_DWORD *)(this + 128) = 0; + *(_DWORD *)(this + 132) = 0; + return std::wios::init(this, a2); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D0320) -------------------------------------------------------- +int __fastcall std::wios::basic_ios(int a1) +{ + int result; // eax + + std::ios_base::ios_base((_DWORD *)a1); + result = 0; + *(_DWORD *)a1 = &off_4F6E20; + *(_DWORD *)(a1 + 112) = 0; + *(_WORD *)(a1 + 116) = 0; + *(_BYTE *)(a1 + 118) = 0; + *(_DWORD *)(a1 + 120) = 0; + *(_DWORD *)(a1 + 124) = 0; + *(_DWORD *)(a1 + 128) = 0; + *(_DWORD *)(a1 + 132) = 0; + return result; +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D0370) -------------------------------------------------------- +void __fastcall std::wios::~wios(_DWORD *a1) +{ + *a1 = &off_4F6E20; + std::ios_base::~ios_base((int)a1); + operator delete(a1); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D0390) -------------------------------------------------------- +void __fastcall std::wios::~wios(int a1) +{ + *(_DWORD *)a1 = &off_4F6E20; + std::ios_base::~ios_base(a1); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D03A0) -------------------------------------------------------- +void __fastcall std::wios::~wios(int a1) +{ + *(_DWORD *)a1 = &off_4F6E20; + std::ios_base::~ios_base(a1); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D03B0) -------------------------------------------------------- +void __fastcall std::exception::~exception(void *a1) +{ + operator delete(a1, 4u); +} + +//----- (004D03E0) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6E44; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6E44: using guessed type int (*off_4F6E44)(); + +//----- (004D0400) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6E44; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6E44: using guessed type int (*off_4F6E44)(); + +//----- (004D0420) -------------------------------------------------------- +void __fastcall std::money_get>::~money_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6E44; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D042C: variable 'v2' is possibly undefined +// 4F6E44: using guessed type int (*off_4F6E44)(); + +//----- (004D0440) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6E44; + std::locale::facet::~facet(a1); +} +// 4D0440: variable 'v1' is possibly undefined +// 4F6E44: using guessed type int (*off_4F6E44)(); + +//----- (004D0450) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6E44; + std::locale::facet::~facet(a1); +} +// 4D0450: variable 'v1' is possibly undefined +// 4F6E44: using guessed type int (*off_4F6E44)(); + +//----- (004D0460) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6E5C; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6E5C: using guessed type int (*off_4F6E5C)(); + +//----- (004D0480) -------------------------------------------------------- +BOOL __thiscall std::money_get>::money_get(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6E5C; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6E5C: using guessed type int (*off_4F6E5C)(); + +//----- (004D04A0) -------------------------------------------------------- +void __fastcall std::money_get>::~money_get(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6E5C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D04AC: variable 'v2' is possibly undefined +// 4F6E5C: using guessed type int (*off_4F6E5C)(); + +//----- (004D04C0) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6E5C; + std::locale::facet::~facet(a1); +} +// 4D04C0: variable 'v1' is possibly undefined +// 4F6E5C: using guessed type int (*off_4F6E5C)(); + +//----- (004D04D0) -------------------------------------------------------- +void __cdecl std::money_get>::~money_get(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6E5C; + std::locale::facet::~facet(a1); +} +// 4D04D0: variable 'v1' is possibly undefined +// 4F6E5C: using guessed type int (*off_4F6E5C)(); + +//----- (004D04E0) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6E74; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6E74: using guessed type int (*off_4F6E74)(); + +//----- (004D0500) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6E74; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6E74: using guessed type int (*off_4F6E74)(); + +//----- (004D0520) -------------------------------------------------------- +void __fastcall std::money_put>::~money_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6E74; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D052C: variable 'v2' is possibly undefined +// 4F6E74: using guessed type int (*off_4F6E74)(); + +//----- (004D0540) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6E74; + std::locale::facet::~facet(a1); +} +// 4D0540: variable 'v1' is possibly undefined +// 4F6E74: using guessed type int (*off_4F6E74)(); + +//----- (004D0550) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6E74; + std::locale::facet::~facet(a1); +} +// 4D0550: variable 'v1' is possibly undefined +// 4F6E74: using guessed type int (*off_4F6E74)(); + +//----- (004D0560) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6E8C; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6E8C: using guessed type int (*off_4F6E8C)(); + +//----- (004D0580) -------------------------------------------------------- +BOOL __thiscall std::money_put>::money_put(_DWORD *this, int a2) +{ + BOOL result; // eax + + *this = &off_4F6E8C; + result = a2 != 0; + this[1] = result; + return result; +} +// 4F6E8C: using guessed type int (*off_4F6E8C)(); + +//----- (004D05A0) -------------------------------------------------------- +void __fastcall std::money_put>::~money_put(_DWORD *a1) +{ + std::locale::facet *v2; // [esp+0h] [ebp-1Ch] + + *a1 = &off_4F6E8C; + std::locale::facet::~facet(v2); + operator delete(a1); +} +// 4D05AC: variable 'v2' is possibly undefined +// 4F6E8C: using guessed type int (*off_4F6E8C)(); + +//----- (004D05C0) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6E8C; + std::locale::facet::~facet(a1); +} +// 4D05C0: variable 'v1' is possibly undefined +// 4F6E8C: using guessed type int (*off_4F6E8C)(); + +//----- (004D05D0) -------------------------------------------------------- +void __cdecl std::money_put>::~money_put(std::locale::facet *a1) +{ + _DWORD *v1; // ecx + + *v1 = &off_4F6E8C; + std::locale::facet::~facet(a1); +} +// 4D05D0: variable 'v1' is possibly undefined +// 4F6E8C: using guessed type int (*off_4F6E8C)(); + +//----- (004D05E0) -------------------------------------------------------- +void __fastcall std::type_info::~type_info(void *a1) +{ + operator delete(a1, 8u); +} + +//----- (004D0610) -------------------------------------------------------- +void __noreturn std::unexpected(void) +{ + __cxxabiv1::__unexpected(__cxxabiv1::__unexpected_handler); +} + +//----- (004D0620) -------------------------------------------------------- +int __cdecl std::__int_to_char(_BYTE *a1, unsigned int a2, int a3, __int16 a4, char a5) +{ + _BYTE *v6; // ebx + unsigned int v7; // eax + int v9; // eax + int v10; // eax + + if ( a5 ) + { + v6 = a1; + do + { + *--v6 = *(_BYTE *)(a3 + a2 % 0xA + 4); + v7 = a2; + a2 /= 0xAu; + } + while ( v7 > 9 ); + } + else if ( (a4 & 0x4A) == 64 ) + { + v6 = a1; + do + { + --v6; + v10 = a2 & 7; + a2 >>= 3; + *v6 = *(_BYTE *)(a3 + v10 + 4); + } + while ( a2 ); + } + else + { + v6 = a1; + do + { + --v6; + v9 = a2 & 0xF; + a2 >>= 4; + *v6 = *(_BYTE *)(a3 + ((a4 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + v9); + } + while ( a2 ); + } + return a1 - v6; +} + +//----- (004D06D0) -------------------------------------------------------- +int __cdecl std::__int_to_char(_BYTE *a1, UDItype n, int a3, __int16 a4, char a5) +{ + unsigned __int64 v5; // rdi + _BYTE *v6; // ebx + unsigned __int64 v7; // kr08_8 + char v9; // al + char v10; // al + unsigned __int64 v11; // [esp+18h] [ebp-24h] + + v5 = __PAIR64__(n, HIDWORD(n)); + if ( a5 ) + { + v6 = a1; + do + { + --v6; + v11 = __PAIR64__(v5, HIDWORD(v5)); + *v6 = *(_BYTE *)(a3 + __PAIR64__(v5, HIDWORD(v5)) % 0xA + 4); + v7 = __PAIR64__(v5, HIDWORD(v5)) / 0xA; + LODWORD(v5) = (__PAIR64__(v5, HIDWORD(v5)) / 0xA) >> 32; + HIDWORD(v5) = v7; + } + while ( v11 > 9 ); + } + else if ( (a4 & 0x4A) == 64 ) + { + v6 = a1; + do + { + v10 = BYTE4(v5); + HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 3; + --v6; + LODWORD(v5) = (unsigned int)v5 >> 3; + *v6 = *(_BYTE *)(a3 + (v10 & 7) + 4); + } + while ( v5 ); + } + else + { + v6 = a1; + do + { + v9 = BYTE4(v5); + HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 4; + --v6; + LODWORD(v5) = (unsigned int)v5 >> 4; + *v6 = *(_BYTE *)(a3 + ((a4 & 0x4000) == 0 ? 0xFFFFFFF0 : 0) + 20 + (v9 & 0xF)); + } + while ( v5 ); + } + return a1 - v6; +} + +//----- (004D07D0) -------------------------------------------------------- +int __cdecl std::__int_to_char(_WORD *a1, unsigned int a2, int a3, __int16 a4, char a5) +{ + _WORD *v6; // ebx + unsigned int v7; // eax + int v9; // eax + int v10; // eax + + if ( a5 ) + { + v6 = a1; + do + { + *--v6 = *(_WORD *)(a3 + 2 * (a2 % 0xA) + 8); + v7 = a2; + a2 /= 0xAu; + } + while ( v7 > 9 ); + } + else if ( (a4 & 0x4A) == 64 ) + { + v6 = a1; + do + { + --v6; + v10 = a2 & 7; + a2 >>= 3; + *v6 = *(_WORD *)(a3 + 2 * v10 + 8); + } + while ( a2 ); + } + else + { + v6 = a1; + do + { + --v6; + v9 = ((a4 & 0x4000) == 0 ? 4 : 20) + (a2 & 0xF); + a2 >>= 4; + *v6 = *(_WORD *)(a3 + 2 * v9); + } + while ( a2 ); + } + return a1 - v6; +} + +//----- (004D0890) -------------------------------------------------------- +int __cdecl std::__int_to_char(_WORD *a1, UDItype n, int a3, __int16 a4, char a5) +{ + unsigned __int64 v5; // rdi + _WORD *v6; // ebx + unsigned __int64 v7; // kr08_8 + char v9; // al + char v10; // al + unsigned __int64 v11; // [esp+18h] [ebp-24h] + + v5 = __PAIR64__(n, HIDWORD(n)); + if ( a5 ) + { + v6 = a1; + do + { + --v6; + v11 = __PAIR64__(v5, HIDWORD(v5)); + *v6 = *(_WORD *)(a3 + 2 * (__PAIR64__(v5, HIDWORD(v5)) % 0xA) + 8); + v7 = __PAIR64__(v5, HIDWORD(v5)) / 0xA; + LODWORD(v5) = (__PAIR64__(v5, HIDWORD(v5)) / 0xA) >> 32; + HIDWORD(v5) = v7; + } + while ( v11 > 9 ); + } + else if ( (a4 & 0x4A) == 64 ) + { + v6 = a1; + do + { + v10 = BYTE4(v5); + HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 3; + --v6; + LODWORD(v5) = (unsigned int)v5 >> 3; + *v6 = *(_WORD *)(a3 + 2 * (v10 & 7) + 8); + } + while ( v5 ); + } + else + { + v6 = a1; + do + { + v9 = BYTE4(v5); + HIDWORD(v5) = __PAIR64__(v5, HIDWORD(v5)) >> 4; + --v6; + LODWORD(v5) = (unsigned int)v5 >> 4; + *v6 = *(_WORD *)(a3 + 2 * (((a4 & 0x4000) == 0 ? 4 : 20) + (v9 & 0xF))); + } + while ( v5 ); + } + return a1 - v6; +} + +//----- (004D09A0) -------------------------------------------------------- +void (*std::get_terminate(void))(void) +{ + return __cxxabiv1::__terminate_handler; +} + +//----- (004D09B0) -------------------------------------------------------- +__int32 __cdecl std::set_terminate(void (*a1)(void)) +{ + return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__terminate_handler, (__int32)a1); +} + +//----- (004D09C0) -------------------------------------------------------- +_BYTE *__cdecl std::__add_grouping(_BYTE *a1, char a2, char *a3, int a4, _BYTE *a5, _BYTE *a6) +{ + _BYTE *v6; // edi + _BYTE *v7; // esi + _BYTE *v8; // ecx + int v9; // edx + unsigned int v10; // ebx + char *v11; // edi + int v12; // ebp + int v13; // ebx + int v14; // edx + _BYTE *result; // eax + int v16; // ebx + _BYTE *v17; // ebp + char v18; // dl + _BYTE *v19; // edi + int v20; // eax + _BYTE *v21; // esi + int v22; // edx + _BYTE *v23; // ebp + char v24; // dl + _BYTE *v25; // edi + int v26; // eax + _BYTE *v27; // esi + int v28; // edx + char *v29; // [esp+4h] [ebp-1Ch] + int v30; // [esp+8h] [ebp-18h] + int v31; // [esp+8h] [ebp-18h] + unsigned int v32; // [esp+Ch] [ebp-14h] + _BYTE *v33; // [esp+38h] [ebp+18h] + _BYTE *v34; // [esp+38h] [ebp+18h] + + v6 = a1; + v7 = a5; + v8 = a6; + v9 = *a3; + if ( (unsigned __int8)(v9 - 1) > 0x7Du || a6 - a5 <= v9 ) + { + if ( a6 == a5 ) + return a1; + v13 = -1; + v14 = -1; + v12 = 0; + v32 = 0; + v29 = a3; + goto LABEL_10; + } + v10 = 0; + v30 = 0; + do + { + v8 -= v9; + if ( a4 - 1 > v10 ) + ++v10; + else + ++v30; + v11 = &a3[v10]; + v9 = a3[v10]; + } + while ( v8 - a5 > v9 && (unsigned __int8)(v9 - 1) <= 0x7Du ); + v12 = v30; + v32 = v10; + v13 = v10 - 1; + v29 = v11; + v6 = a1; + v14 = v30 - 1; + if ( a5 != v8 ) + { +LABEL_10: + result = &v6[v8 - a5]; + do + *v6++ = *v7++; + while ( v6 != result ); + goto LABEL_12; + } + result = a1; +LABEL_12: + if ( v12 ) + { + v33 = v8; + v31 = v13; + v16 = v14; + do + { + v17 = result + 1; + *result = a2; + v18 = *v29; + if ( *v29 <= 0 ) + { + ++result; + } + else + { + v19 = result + 1; + v20 = (int)&result[(unsigned __int8)(v18 - 1) + 2]; + v21 = v33; + do + *v19++ = *v21++; + while ( v19 != (_BYTE *)v20 ); + v22 = (char)(v18 - 1) + 1; + v33 += v22; + result = &v17[v22]; + } + --v16; + } + while ( v16 != -1 ); + v13 = v31; + v8 = v33; + } + if ( v32 ) + { + v34 = v8; + do + { + v23 = result + 1; + *result = a2; + v24 = a3[v13]; + if ( v24 <= 0 ) + { + ++result; + } + else + { + v25 = result + 1; + v26 = (int)&result[(unsigned __int8)(v24 - 1) + 2]; + v27 = v34; + do + *v25++ = *v27++; + while ( v25 != (_BYTE *)v26 ); + v28 = (char)(v24 - 1) + 1; + v34 += v28; + result = &v23[v28]; + } + --v13; + } + while ( v13 != -1 ); + } + return result; +} + +//----- (004D0B90) -------------------------------------------------------- +_WORD *__cdecl std::__add_grouping(_WORD *a1, __int16 a2, char *a3, int a4, _WORD *a5, _WORD *a6) +{ + _WORD *v6; // eax + int v7; // edx + int v8; // ebp + unsigned int v9; // esi + int v10; // ecx + int v11; // ebx + _WORD *v12; // edi + _WORD *v13; // esi + _WORD *v14; // edx + _WORD *result; // eax + _WORD *v16; // edi + int v17; // ebx + _WORD *v18; // ebp + char v19; // cl + _WORD *v20; // edx + int v21; // eax + _WORD *v22; // esi + _WORD *v23; // edi + int v24; // eax + _WORD *v25; // edx + _WORD *v26; // edi + _WORD *v27; // ebp + char v28; // cl + _WORD *v29; // edx + int v30; // eax + _WORD *v31; // esi + _WORD *v32; // edi + int v33; // eax + _WORD *v34; // edx + char *v35; // [esp+4h] [ebp-1Ch] + unsigned int v36; // [esp+8h] [ebp-18h] + int v37; // [esp+Ch] [ebp-14h] + + v6 = a6; + v7 = *a3; + if ( a6 - a5 <= v7 || (unsigned __int8)(v7 - 1) > 0x7Du ) + { + if ( a6 == a5 ) + return a1; + v36 = 0; + v10 = -1; + v8 = 0; + v35 = a3; + v11 = -1; + goto LABEL_10; + } + v8 = 0; + v9 = 0; + do + { + v6 -= v7; + if ( a4 - 1 > v9 ) + ++v9; + else + ++v8; + v7 = a3[v9]; + } + while ( v6 - a5 > v7 && (unsigned __int8)(v7 - 1) <= 0x7Du ); + v35 = &a3[v9]; + v10 = v8 - 1; + v36 = v9; + v11 = v9 - 1; + if ( a5 != v6 ) + { +LABEL_10: + v12 = a1; + v13 = a5; + do + *v12++ = *v13++; + while ( v6 != v13 ); + v14 = v13; + result = (_WORD *)((char *)a1 + (char *)v13 - (char *)a5); + goto LABEL_13; + } + v14 = a5; + result = a1; +LABEL_13: + if ( v8 ) + { + v37 = v11; + v16 = v14; + v17 = v10; + do + { + v18 = result + 1; + *result = a2; + v19 = *v35; + if ( *v35 <= 0 ) + { + ++result; + } + else + { + v20 = v16; + v21 = (int)&result[(unsigned __int8)(v19 - 1) + 2]; + v22 = v16; + v23 = v18; + do + *v23++ = *v22++; + while ( v23 != (_WORD *)v21 ); + v24 = 2 * (char)(v19 - 1) + 2; + v25 = (_WORD *)((char *)v20 + v24); + result = (_WORD *)((char *)v18 + v24); + v16 = v25; + } + --v17; + } + while ( v17 != -1 ); + v11 = v37; + v14 = v16; + } + if ( v36 ) + { + v26 = v14; + do + { + v27 = result + 1; + *result = a2; + v28 = a3[v11]; + if ( v28 <= 0 ) + { + ++result; + } + else + { + v29 = v26; + v30 = (int)&result[(unsigned __int8)(v28 - 1) + 2]; + v31 = v26; + v32 = v27; + do + *v32++ = *v31++; + while ( v32 != (_WORD *)v30 ); + v33 = 2 * (char)(v28 - 1) + 2; + v34 = (_WORD *)((char *)v29 + v33); + result = (_WORD *)((char *)v27 + v33); + v26 = v34; + } + --v11; + } + while ( v11 != -1 ); + } + return result; +} + +//----- (004D0D70) -------------------------------------------------------- +void __cdecl std::__convert_to_v(char *String, double *a2, _DWORD *a3) +{ + char *v3; // ebx + unsigned int Size; // esi + void *Locale; // edi + long double v6; // fst7 + char *v7; // eax + char *EndPtr; // [esp+1Ch] [ebp-20h] BYREF + + v3 = setlocale(0, 0); + Size = strlen(v3) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v3, Size); + setlocale(0, "C"); + v6 = strtod(String, &EndPtr); + v7 = EndPtr; + *a2 = v6; + if ( v7 == String || *v7 ) + { + *a2 = 0.0; + *a3 = 4; + } + else if ( v6 < -1.797693134862316e308 || v6 > 1.797693134862316e308 ) + { + if ( v6 <= 0.0 ) + *a2 = -1.797693134862316e308; + else + *a2 = 1.797693134862316e308; + *a3 = 4; + } + setlocale(0, (const char *)Locale); + operator delete[](Locale); +} + +//----- (004D0EA0) -------------------------------------------------------- +void __cdecl std::__convert_to_v(char *String, long double *a2, _DWORD *a3) +{ + char *v3; // ebx + unsigned int Size; // esi + void *Locale; // edi + long double v6; // fst7 + char *v7; // eax + long double v8; // fst7 + char *EndPtr; // [esp+1Ch] [ebp-20h] BYREF + + v3 = setlocale(0, 0); + Size = strlen(v3) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v3, Size); + setlocale(0, "C"); + v6 = strtold(String, &EndPtr); + v7 = EndPtr; + *a2 = v6; + if ( v7 == String || *v7 ) + { + *a2 = 0.0; + *a3 = 4; + } + else if ( v6 < -1.189731495357231765e4932 || v6 > 1.189731495357231765e4932 ) + { + if ( v6 <= 0.0 ) + v8 = -1.189731495357231765e4932; + else + v8 = 1.189731495357231765e4932; + *a2 = v8; + *a3 = 4; + } + setlocale(0, (const char *)Locale); + operator delete[](Locale); +} + +//----- (004D0FC0) -------------------------------------------------------- +void __cdecl std::__convert_to_v(char *String, float *a2, _DWORD *a3) +{ + char *v3; // ebx + unsigned int Size; // esi + void *Locale; // edi + long double v6; // fst7 + char *v7; // eax + char *EndPtr; // [esp+1Ch] [ebp-20h] BYREF + + v3 = setlocale(0, 0); + Size = strlen(v3) + 1; + Locale = (void *)operator new[](Size); + memcpy(Locale, v3, Size); + setlocale(0, "C"); + v6 = strtof(String, &EndPtr); + v7 = EndPtr; + *a2 = v6; + if ( v7 == String || *v7 ) + { + *a2 = 0.0; + *a3 = 4; + } + else if ( v6 < -3.4028235e38 || v6 > 3.4028235e38 ) + { + if ( v6 <= 0.0 ) + *a2 = -3.4028235e38; + else + *a2 = 3.4028235e38; + *a3 = 4; + } + setlocale(0, (const char *)Locale); + operator delete[](Locale); +} + +//----- (004D10F0) -------------------------------------------------------- +void (*std::get_unexpected(void))(void) +{ + return __cxxabiv1::__unexpected_handler; +} + +//----- (004D1100) -------------------------------------------------------- +__int32 __cdecl std::set_unexpected(void (*a1)(void)) +{ + return _InterlockedExchange((volatile __int32 *)&__cxxabiv1::__unexpected_handler, (__int32)a1); +} + +//----- (004D1110) -------------------------------------------------------- +int std::get_new_handler(void) +{ + return `anonymous namespace'::__new_handler; +} +// 4E8318: using guessed type int `anonymous namespace'::__new_handler; + +//----- (004D1120) -------------------------------------------------------- +__int32 __cdecl std::set_new_handler(void (*a1)(void)) +{ + return _InterlockedExchange(&`anonymous namespace'::__new_handler, (__int32)a1); +} +// 4E8318: using guessed type int `anonymous namespace'::__new_handler; + +//----- (004D1130) -------------------------------------------------------- +int std::__convert_from_v(int *const *a1, char *Buffer, size_t BufferCount, char *Format, ...) +{ + char *v4; // ebx + unsigned int v6; // edi + void *Locale; // esi + int v8; // ebx + va_list va; // [esp+30h] [ebp+14h] BYREF + + va_start(va, Format); + v4 = setlocale(4, 0); + if ( *v4 == 67 && !v4[1] ) + return vsnprintf(Buffer, BufferCount, Format, va); + v6 = strlen(v4) + 1; + Locale = (void *)operator new[](v6); + memcpy(Locale, v4, v6); + setlocale(4, "C"); + v8 = vsnprintf(Buffer, BufferCount, Format, va); + setlocale(4, (const char *)Locale); + operator delete[](Locale); + return v8; +} + +//----- (004D1210) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::__ostream_insert>( + std::ostream::sentry *a1, + int a2, + int a3) +{ + int v3; // eax + char *v4; // esi + int v5; // edi + int v6; // edi + _DWORD *v7; // ecx + unsigned __int8 *v8; // eax + char *v9; // esi + int v10; // ecx + int v12; // eax + int v13; // edx + int v14; // eax + int v15; // edi + _DWORD *v16; // ecx + unsigned __int8 *v17; // eax + int (__stdcall *v18)(unsigned __int8); // eax + int (__stdcall *v19)(unsigned __int8); // eax + std::ostream *v20; // [esp+4h] [ebp-44h] + _BYTE *v21; // [esp+10h] [ebp-38h] + int v22; // [esp+14h] [ebp-34h] + int v23; // [esp+18h] [ebp-30h] + _BYTE *v24; // [esp+18h] [ebp-30h] + unsigned __int8 v25; // [esp+1Fh] [ebp-29h] + unsigned __int8 v26; // [esp+1Fh] [ebp-29h] + char v27[4]; // [esp+28h] [ebp-20h] BYREF + _DWORD *v28; // [esp+2Ch] [ebp-1Ch] + + std::ostream::sentry::sentry((int)v27, a1, v20); + if ( v27[0] ) + { + v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v4 = (char *)a1 + v3; + v5 = *(_DWORD *)((char *)a1 + v3 + 8); + v23 = v5; + if ( a3 >= v5 ) + { + v12 = (*(int (__cdecl **)(int, int))(**((_DWORD **)v4 + 30) + 48))(a2, a3); + v4 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); + if ( a3 == v12 ) + goto LABEL_11; + std::ios::clear((std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), *((_DWORD *)v4 + 5) | 1); +LABEL_20: + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + } + else + { + v22 = *((_DWORD *)v4 + 3) & 0xB0; + if ( v22 != 32 ) + { + v6 = v5 - a3; + if ( v4[117] ) + { + v25 = v4[116]; + } + else + { + v21 = (_BYTE *)*((_DWORD *)v4 + 31); + if ( !v21 ) + std::__throw_bad_cast(); + if ( v21[28] ) + { + v25 = v21[61]; + } + else + { + std::ctype::_M_widen_init((int)v21); + v25 = 32; + v18 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v21 + 24); + if ( v18 != std::ctype::do_widen ) + v25 = ((int (__thiscall *)(_BYTE *, int))v18)(v21, 32); + } + v4[117] = 1; + v4[116] = v25; + v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); + } + while ( 1 ) + { + v7 = *(_DWORD **)((char *)a1 + v3 + 120); + v8 = (unsigned __int8 *)v7[5]; + if ( (unsigned int)v8 < v7[6] ) + { + *v8 = v25; + ++v7[5]; + } + else if ( (*(int (__cdecl **)(_DWORD))(*v7 + 52))(v25) == -1 ) + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + v4 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); + if ( !*((_DWORD *)v4 + 5) ) + goto LABEL_23; + goto LABEL_11; + } + v3 = *(_DWORD *)(*(_DWORD *)a1 - 12); + if ( !--v6 ) + { + v4 = (char *)a1 + v3; + break; + } + } + } + if ( !*((_DWORD *)v4 + 5) ) + { +LABEL_23: + v13 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v4 + 30) + 48))(*((_DWORD *)v4 + 30), a2, a3); + v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v4 = (char *)a1 + v14; + if ( a3 != v13 ) + { + std::ios::clear((std::ostream::sentry *)((char *)a1 + v14), *((_DWORD *)v4 + 5) | 1); + v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v4 = (char *)a1 + v14; + } + if ( v22 == 32 && !*((_DWORD *)v4 + 5) ) + { + v15 = v23 - a3; + if ( v4[117] ) + { + v26 = v4[116]; + } + else + { + v24 = (_BYTE *)*((_DWORD *)v4 + 31); + if ( !v24 ) + std::__throw_bad_cast(); + if ( v24[28] ) + { + v26 = v24[61]; + } + else + { + std::ctype::_M_widen_init((int)v24); + v26 = 32; + v19 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v24 + 24); + if ( v19 != std::ctype::do_widen ) + v26 = ((int (__thiscall *)(_BYTE *, int))v19)(v24, 32); + } + v4[117] = 1; + v4[116] = v26; + v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); + } + do + { + v16 = *(_DWORD **)((char *)a1 + v14 + 120); + v17 = (unsigned __int8 *)v16[5]; + if ( (unsigned int)v17 < v16[6] ) + { + *v17 = v26; + ++v16[5]; + } + else if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*v16 + 52))(v16, v26) == -1 ) + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + goto LABEL_20; + } + v14 = *(_DWORD *)(*(_DWORD *)a1 - 12); + --v15; + } + while ( v15 ); + v4 = (char *)a1 + v14; + } + } +LABEL_11: + *((_DWORD *)v4 + 2) = 0; + } + } + v9 = (char *)v28 + *(_DWORD *)(*v28 - 12); + if ( (v9[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v10 = *((_DWORD *)v9 + 30); + if ( v10 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v10 + 24))(v10) == -1 ) + std::ios::clear( + (_DWORD *)((char *)v28 + *(_DWORD *)(*v28 - 12)), + *(_DWORD *)((char *)v28 + *(_DWORD *)(*v28 - 12) + 20) | 1); + } + } + return a1; +} +// 4D1222: variable 'v20' is possibly undefined +// 4D1210: using guessed type char var_20[4]; + +//----- (004D15D0) -------------------------------------------------------- +int *__cdecl std::__ostream_insert>(int *a1, int a2, int a3) +{ + char *v3; // esi + int v4; // eax + char *v5; // ecx + unsigned int v6; // eax + _DWORD *v7; // edx + unsigned int v8; // eax + __int16 v9; // ax + char *v10; // esi + int v11; // ecx + int v13; // eax + int v14; // eax + char *v15; // esi + unsigned int v16; // eax + unsigned __int16 v17; // ax + _DWORD *v18; // edx + unsigned int v19; // eax + int v20; // ecx + unsigned __int16 v21; // ax + int v22; // eax + int v23; // ecx + unsigned __int16 v24; // ax + int v25; // eax + int v26; // [esp+20h] [ebp-38h] + int v27; // [esp+24h] [ebp-34h] + int v28; // [esp+28h] [ebp-30h] + int v29; // [esp+28h] [ebp-30h] + unsigned __int16 v30; // [esp+2Eh] [ebp-2Ah] + unsigned __int16 v31; // [esp+2Eh] [ebp-2Ah] + int v32; // [esp+38h] [ebp-20h] BYREF + _DWORD *v33; // [esp+3Ch] [ebp-1Ch] + + std::wostream::sentry::sentry(&v32, a1); + if ( (_BYTE)v32 ) + { + v3 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v4 = *((_DWORD *)v3 + 2); + v5 = v3; + v27 = v4; + if ( a3 >= v4 ) + { + v13 = (*(int (__cdecl **)(int, int))(**((_DWORD **)v3 + 30) + 48))(a2, a3); + v5 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( a3 != v13 ) + { + std::wios::clear(v5, *((_DWORD *)v5 + 5) | 1); +LABEL_20: + *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; + goto LABEL_12; + } + goto LABEL_11; + } + v26 = *((_DWORD *)v3 + 3) & 0xB0; + if ( v26 == 32 ) + { + if ( *((_DWORD *)v3 + 5) ) + { +LABEL_11: + *((_DWORD *)v5 + 2) = 0; + goto LABEL_12; + } + } + else + { + v28 = v4 - a3; + if ( v3[118] ) + { + v30 = *((_WORD *)v3 + 58); + } + else + { + v20 = *((_DWORD *)v3 + 31); + if ( !v20 ) + std::__throw_bad_cast(); + v21 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v20 + 40))(v20, 32); + *((_WORD *)v3 + 58) = v21; + v30 = v21; + v22 = *a1; + v3[118] = 1; + v3 = (char *)a1 + *(_DWORD *)(v22 - 12); + } + do + { + v7 = (_DWORD *)*((_DWORD *)v3 + 30); + v5 = v3; + v8 = v7[5]; + if ( v8 < v7[6] ) + { + v6 = v8 + 2; + *(_WORD *)(v6 - 2) = v30; + v7[5] = v6; + if ( v30 == 0xFFFF ) + goto LABEL_10; + } + else + { + v9 = (*(int (__thiscall **)(_DWORD, _DWORD))(*v7 + 52))(*((_DWORD *)v3 + 30), v30); + v3 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v5 = v3; + if ( v9 == -1 ) + { +LABEL_10: + std::wios::clear(v3, *((_DWORD *)v3 + 5) | 1); + v5 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !*((_DWORD *)v5 + 5) ) + goto LABEL_22; + goto LABEL_11; + } + } + --v28; + } + while ( v28 ); + if ( *((_DWORD *)v3 + 5) ) + goto LABEL_11; + } +LABEL_22: + v14 = (*(int (__thiscall **)(_DWORD, int, int))(**((_DWORD **)v5 + 30) + 48))(*((_DWORD *)v5 + 30), a2, a3); + v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v5 = v15; + if ( a3 != v14 ) + { + std::wios::clear(v15, *((_DWORD *)v15 + 5) | 1); + v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v5 = v15; + } + if ( v26 == 32 && !*((_DWORD *)v15 + 5) ) + { + v29 = v27 - a3; + if ( v15[118] ) + { + v31 = *((_WORD *)v15 + 58); + } + else + { + v23 = *((_DWORD *)v15 + 31); + if ( !v23 ) + std::__throw_bad_cast(); + v24 = (*(int (__cdecl **)(int))(*(_DWORD *)v23 + 40))(32); + *((_WORD *)v15 + 58) = v24; + v31 = v24; + v25 = *a1; + v15[118] = 1; + v15 = (char *)a1 + *(_DWORD *)(v25 - 12); + } + while ( 1 ) + { + v18 = (_DWORD *)*((_DWORD *)v15 + 30); + v5 = v15; + v19 = v18[5]; + if ( v19 < v18[6] ) + { + v16 = v19 + 2; + *(_WORD *)(v16 - 2) = v31; + v18[5] = v16; + v17 = v31; + } + else + { + v17 = (*(int (__thiscall **)(_DWORD, _DWORD))(*v18 + 52))(*((_DWORD *)v15 + 30), v31); + v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v5 = v15; + } + if ( v17 == 0xFFFF ) + break; + if ( !--v29 ) + goto LABEL_11; + } + std::wios::clear(v15, *((_DWORD *)v15 + 5) | 1); + goto LABEL_20; + } + goto LABEL_11; + } +LABEL_12: + v10 = (char *)v33 + *(_DWORD *)(*v33 - 12); + if ( (v10[13] & 0x20) != 0 && !std::uncaught_exception() ) + { + v11 = *((_DWORD *)v10 + 30); + if ( v11 ) + { + if ( (*(int (__fastcall **)(int))(*(_DWORD *)v11 + 24))(v11) == -1 ) + std::wios::clear( + (_DWORD *)((char *)v33 + *(_DWORD *)(*v33 - 12)), + *(_DWORD *)((char *)v33 + *(_DWORD *)(*v33 - 12) + 20) | 1); + } + } + return a1; +} + +//----- (004D1950) -------------------------------------------------------- +int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) +{ + char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF + + return std::__copy_streambufs_eof>(a1, a2, v3); +} +// 4D1950: using guessed type char var_D[13]; + +//----- (004D1980) -------------------------------------------------------- +int __cdecl std::__copy_streambufs>(_DWORD *a1, _DWORD *a2) +{ + char v3[13]; // [esp+1Fh] [ebp-Dh] BYREF + + return std::__copy_streambufs_eof>(a1, a2, v3); +} +// 4D1980: using guessed type char var_D[13]; + +//----- (004D19B0) -------------------------------------------------------- +int __cdecl std::__verify_grouping(char *a1, unsigned int a2, int a3) +{ + return std::__verify_grouping_impl(a1, a2, *(const char **)a3, *(_DWORD *)(a3 + 4)); +} + +//----- (004D19F0) -------------------------------------------------------- +int __cdecl std::__verify_grouping(char *a1, unsigned int a2, const char **a3) +{ + return std::__verify_grouping_impl(a1, a2, *a3, *((_DWORD *)*a3 - 3)); +} + +//----- (004D1A20) -------------------------------------------------------- +void (__cdecl ***std::iostream_category(void))(_anonymous_namespace_::io_error_category *__hidden this) +{ + return `anonymous namespace'::__io_category_instance(); +} + +//----- (004D1A30) -------------------------------------------------------- +int __cdecl std::_Rb_tree_decrement(_DWORD *a1) +{ + return std::local_Rb_tree_decrement(a1); +} + +//----- (004D1A40) -------------------------------------------------------- +int __cdecl std::_Rb_tree_decrement(_DWORD *a1) +{ + return std::local_Rb_tree_decrement(a1); +} + +//----- (004D1A60) -------------------------------------------------------- +int __cdecl std::_Rb_tree_increment(int a1) +{ + int v1; // eax + int v2; // edx + int result; // eax + + v1 = *(_DWORD *)(a1 + 12); + if ( v1 ) + { + do + { + v2 = v1; + v1 = *(_DWORD *)(v1 + 8); + } + while ( v1 ); + return v2; + } + result = *(_DWORD *)(a1 + 4); + if ( a1 == *(_DWORD *)(result + 12) ) + { + do + { + v2 = result; + result = *(_DWORD *)(result + 4); + } + while ( *(_DWORD *)(result + 12) == v2 ); + if ( result == *(_DWORD *)(v2 + 12) ) + return v2; + } + return result; +} + +//----- (004D1AB0) -------------------------------------------------------- +bool std::uncaught_exception(void) +{ + return __cxa_get_globals()[1] != 0; +} + +//----- (004D1AD0) -------------------------------------------------------- +int std::uncaught_exceptions(void) +{ + return __cxa_get_globals()[1]; +} + +//----- (004D1AE0) -------------------------------------------------------- +int __cdecl std::_Rb_tree_black_count(_DWORD *a1, _DWORD *a2) +{ + _DWORD *v2; // eax + int v3; // edx + + v2 = a1; + v3 = 0; + if ( a1 ) + { + while ( 1 ) + { + v3 += *v2 == 1; + if ( v2 == a2 ) + break; + v2 = (_DWORD *)v2[1]; + } + } + return v3; +} + +//----- (004D1B10) -------------------------------------------------------- +int __cdecl std::_Rb_tree_rotate_left(int a1, _DWORD *a2) +{ + int result; // eax + int v3; // edx + int v4; // ecx + int v5; // ecx + + result = a1; + v3 = *(_DWORD *)(a1 + 12); + v4 = *(_DWORD *)(v3 + 8); + *(_DWORD *)(a1 + 12) = v4; + if ( v4 ) + *(_DWORD *)(v4 + 4) = a1; + v5 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v3 + 4) = v5; + if ( a1 == *a2 ) + { + *a2 = v3; + *(_DWORD *)(v3 + 8) = a1; + *(_DWORD *)(a1 + 4) = v3; + } + else + { + if ( a1 == *(_DWORD *)(v5 + 8) ) + *(_DWORD *)(v5 + 8) = v3; + else + *(_DWORD *)(v5 + 12) = v3; + *(_DWORD *)(v3 + 8) = a1; + *(_DWORD *)(a1 + 4) = v3; + } + return result; +} + +//----- (004D1B70) -------------------------------------------------------- +int __cdecl std::_Rb_tree_rotate_right(int a1, _DWORD *a2) +{ + int result; // eax + int v3; // edx + int v4; // ecx + int v5; // ecx + + result = a1; + v3 = *(_DWORD *)(a1 + 8); + v4 = *(_DWORD *)(v3 + 12); + *(_DWORD *)(a1 + 8) = v4; + if ( v4 ) + *(_DWORD *)(v4 + 4) = a1; + v5 = *(_DWORD *)(a1 + 4); + *(_DWORD *)(v3 + 4) = v5; + if ( a1 == *a2 ) + { + *a2 = v3; + *(_DWORD *)(v3 + 12) = a1; + *(_DWORD *)(a1 + 4) = v3; + } + else + { + if ( a1 == *(_DWORD *)(v5 + 12) ) + *(_DWORD *)(v5 + 12) = v3; + else + *(_DWORD *)(v5 + 8) = v3; + *(_DWORD *)(v3 + 12) = a1; + *(_DWORD *)(a1 + 4) = v3; + } + return result; +} + +//----- (004D1BD0) -------------------------------------------------------- +int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) +{ + _BYTE *v3; // ecx + unsigned int v4; // ebx + int v5; // eax + int v6; // edi + int v7; // ebx + int v8; // eax + _BYTE *v9; // ecx + unsigned int v10; // ecx + + v3 = (_BYTE *)a1[2]; + v4 = a1[3]; + *a3 = 1; + if ( v4 <= (unsigned int)v3 ) + { + v6 = 0; + v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v5 == -1 ) + return v6; + v4 = a1[3]; + v3 = (_BYTE *)a1[2]; + } + else + { + LOBYTE(v5) = *v3; + } + v6 = 0; + while ( 1 ) + { + v7 = v4 - (_DWORD)v3; + if ( v7 > 1 ) + break; + while ( 1 ) + { + v9 = (_BYTE *)a2[5]; + if ( (unsigned int)v9 >= a2[6] ) + { + if ( (*(int (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, (unsigned __int8)v5) == -1 ) + goto LABEL_17; + } + else + { + *v9 = v5; + ++a2[5]; + } + v10 = a1[2]; + v4 = a1[3]; + ++v6; + if ( v10 >= v4 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1) == -1 ) + return v6; + v3 = (_BYTE *)a1[2]; + v4 = a1[3]; + } + else + { + v3 = (_BYTE *)(v10 + 1); + a1[2] = v3; + } + if ( (unsigned int)v3 < v4 ) + break; +LABEL_6: + v5 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v5 == -1 ) + return v6; + v3 = (_BYTE *)a1[2]; + v7 = a1[3] - (_DWORD)v3; + if ( v7 > 1 ) + goto LABEL_5; + } + LOBYTE(v5) = *v3; + } +LABEL_5: + v8 = (*(int (__thiscall **)(_DWORD *, _BYTE *, int))(*a2 + 48))(a2, v3, v7); + a1[2] += v8; + v6 += v8; + if ( v7 <= v8 ) + goto LABEL_6; +LABEL_17: + *a3 = 0; + return v6; +} + +//----- (004D1CD0) -------------------------------------------------------- +int __cdecl std::__copy_streambufs_eof>(_DWORD *a1, _DWORD *a2, _BYTE *a3) +{ + unsigned __int16 *v3; // eax + unsigned __int16 v4; // ax + int v5; // edi + int v6; // esi + int v7; // eax + int v8; // esi + unsigned __int16 *v9; // ecx + __int16 *v10; // ecx + __int16 v11; // ax + unsigned __int16 *v12; // eax + + *a3 = 1; + v3 = (unsigned __int16 *)a1[2]; + if ( a1[3] <= (unsigned int)v3 ) + v4 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + else + v4 = *v3; + v5 = 0; + if ( v4 == 0xFFFF ) + return v5; + while ( 1 ) + { + while ( 1 ) + { + v8 = a1[3] - a1[2]; + if ( v8 <= 2 ) + break; + v6 = v8 >> 1; + v7 = (*(int (__thiscall **)(_DWORD *, _DWORD, int))(*a2 + 48))(a2, a1[2], v6); + a1[2] += 2 * v7; + v5 += v7; + if ( v6 > v7 ) + goto LABEL_17; +LABEL_6: + v4 = (*(int (__fastcall **)(_DWORD *))(*a1 + 36))(a1); + if ( v4 == 0xFFFF ) + return v5; + } + v9 = (unsigned __int16 *)a2[5]; + if ( (unsigned int)v9 < a2[6] ) + { + *v9 = v4; + a2[5] = v9 + 1; + goto LABEL_10; + } + if ( (*(unsigned __int16 (__thiscall **)(_DWORD *, _DWORD))(*a2 + 52))(a2, v4) == 0xFFFF ) + break; +LABEL_10: + v10 = (__int16 *)a1[2]; + ++v5; + if ( (unsigned int)v10 >= a1[3] ) + { + v11 = (*(int (__fastcall **)(_DWORD *))(*a1 + 40))(a1); + } + else + { + v11 = *v10; + a1[2] = v10 + 1; + } + if ( v11 == -1 ) + return v5; + v12 = (unsigned __int16 *)a1[2]; + if ( (unsigned int)v12 >= a1[3] ) + goto LABEL_6; + v4 = *v12; + if ( v4 == 0xFFFF ) + return v5; + } +LABEL_17: + *a3 = 0; + return v5; +} + +//----- (004D1DD0) -------------------------------------------------------- +int __cdecl std::__destroy_ios_failure(int (__fastcall ***a1)(_DWORD)) +{ + return (**a1)(a1); +} + +//----- (004D1DE0) -------------------------------------------------------- +int __cdecl std::__verify_grouping_impl(const char *a1, unsigned int a2, const char *a3, unsigned int a4) +{ + const char *v4; // ecx + int v5; // eax + unsigned int v6; // ebp + unsigned int v7; // edx + char v8; // bl + char v9; // cl + bool v10; // cl + bool v11; // di + char v12; // bl + char v13; // dl + char v15; // [esp+3h] [ebp-11h] + unsigned __int8 v16; // [esp+3h] [ebp-11h] + + v4 = a3; + v5 = a4 - 1; + v6 = a2 - 1; + if ( a2 - 1 > a4 - 1 ) + v6 = a4 - 1; + v7 = 0; + if ( v6 ) + { + do + { + v8 = a3[v5--]; + v9 = a1[v7++]; + v15 = v9; + v10 = v8 != v9; + v11 = v10; + } + while ( v7 < v6 && !v10 ); + v4 = a3; + v16 = v8 == v15; + } + else + { + v16 = 1; + v11 = 0; + } + v12 = a1[v6]; + if ( v5 && !v11 ) + { + do + v13 = v4[v5--]; + while ( v5 && v13 == v12 ); + v16 = v13 == v12; + } + if ( (unsigned __int8)(v12 - 1) <= 0x7Du ) + v16 &= *v4 <= (unsigned __int8)v12; + return v16; +} + +//----- (004D1EB0) -------------------------------------------------------- +void __cdecl std::__construct_ios_failure(void *a1, char *a2) +{ + unsigned int *v2; // ecx + int v3; // edx + const std::string *v4; // [esp+4h] [ebp-28h] + int v5; // [esp+1Ah] [ebp-12h] BYREF + unsigned int *v6[4]; // [esp+1Ch] [ebp-10h] BYREF + + std::string::string(v6, a2, (int)&v5); + std::ios_base::failure::failure((int)a1, v6, v4); + if ( (_UNKNOWN *)v6[0] != &unk_4E93FC ) + { + v2 = v6[0] - 3; + if ( _CRT_MT ) + { + v3 = _InterlockedExchangeAdd((volatile signed __int32 *)v6[0] - 1, 0xFFFFFFFF); + } + else + { + v3 = *(v6[0] - 1); + *(v6[0] - 1) = v3 - 1; + } + if ( v3 <= 0 ) + std::string::_Rep::_M_destroy(v2, (int)&v5 + 1); + } +} +// 4D1ED8: variable 'v4' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004D1F30) -------------------------------------------------------- +bool __cdecl std::__is_ios_failure_handler(const __cxxabiv1::__class_type_info *a1) +{ + return std::type_info::operator==(a1, (int)&`typeinfo for'std::ios_base::failure); +} +// 4F1994: using guessed type int *`typeinfo for'std::ios_base::failure; + +//----- (004D1F50) -------------------------------------------------------- +void __noreturn std::__throw_out_of_range_fmt(char *Str, ...) +{ + size_t v1; // eax + unsigned int v2; // edx + int v3; // eax + void *v4; // esp + void *v5; // esp + _DWORD *exception; // ebx + const char *v7; // [esp+4h] [ebp-14h] + char v8[8]; // [esp+10h] [ebp-8h] BYREF + va_list va; // [esp+24h] [ebp+Ch] BYREF + + va_start(va, Str); + v1 = strlen(Str); + v2 = v1 + 512; + v3 = 16 * ((v1 + 539) >> 4); + v4 = alloca(v3); + v5 = alloca(v3); + __gnu_cxx::__snprintf_lite(v8, v2, Str, va); + exception = __cxa_allocate_exception(8u); + std::out_of_range::out_of_range(exception, (std::out_of_range *)v8, v7); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::out_of_range, + (void (__cdecl *)(void *))std::out_of_range::~out_of_range); +} +// 4D1FAC: variable 'v7' is possibly undefined +// 4F1AFC: using guessed type int *`typeinfo for'std::out_of_range; + +//----- (004D1FE0) -------------------------------------------------------- +int *__cdecl std::_Rb_tree_rebalance_for_erase(int *a1, _DWORD *a2) +{ + int *v2; // ebp + int *v3; // edi + int *v4; // eax + int *v5; // ecx + int *v6; // edx + int *v7; // eax + int *v8; // ebp + int v9; // edi + int v10; // edi + int *v11; // ebp + int v12; // edi + int *v13; // edi + int *v14; // ecx + _DWORD *v15; // edi + int *v16; // ecx + int *v17; // ebp + int v18; // edi + int *v19; // edi + _DWORD *v20; // edi + int *v21; // ebp + int v22; // ecx + int v23; // ecx + int v25; // ecx + int *v26; // ecx + int *v27; // ebp + int *v28; // ecx + int *v29; // edi + _DWORD *v30; // edi + int v31; // edi + int v32; // edi + int *v33; // ebp + _DWORD *v34; // edi + int v35; // ecx + int v36; // ecx + _DWORD *v37; // edi + int v38; // edi + int v39; // edi + _DWORD *v40; // edi + _DWORD *v41; // [esp+0h] [ebp-14h] + _DWORD *v42; // [esp+0h] [ebp-14h] + + v2 = (int *)a1[2]; + v3 = (int *)a1[3]; + if ( !v2 ) + goto LABEL_76; + if ( !v3 ) + { + v7 = (int *)a1[1]; + goto LABEL_56; + } + v4 = (int *)a1[3]; + do + { + v5 = v4; + v4 = (int *)v4[2]; + } + while ( v4 ); + v6 = (int *)v5[3]; + if ( v5 == a1 ) + { + v3 = (int *)v5[3]; +LABEL_76: + v7 = (int *)a1[1]; + if ( !v3 ) + { + v6 = 0; + goto LABEL_57; + } + v2 = v3; +LABEL_56: + v2[1] = (int)v7; + v6 = v2; +LABEL_57: + if ( (int *)a2[1] == a1 ) + { + a2[1] = v6; + } + else + { + v25 = a1[1]; + if ( *(int **)(v25 + 8) == a1 ) + *(_DWORD *)(v25 + 8) = v6; + else + *(_DWORD *)(v25 + 12) = v6; + } + if ( (int *)a2[2] == a1 ) + { + v28 = v6; + if ( a1[3] ) + { + do + { + v29 = v28; + v28 = (int *)v28[2]; + } + while ( v28 ); + a2[2] = v29; + } + else + { + a2[2] = a1[1]; + } + } + v10 = *a1; + if ( (int *)a2[3] == a1 ) + { + v26 = v6; + if ( a1[2] ) + { + do + { + v27 = v26; + v26 = (int *)v26[3]; + } + while ( v26 ); + a2[3] = v27; + } + else + { + a2[3] = a1[1]; + } + } + goto LABEL_14; + } + v2[1] = (int)v5; + v7 = v3; + v5[2] = (int)v2; + if ( v5 != v3 ) + { + v7 = (int *)v5[1]; + v8 = v7; + if ( v6 ) + { + v6[1] = (int)v7; + v8 = (int *)v5[1]; + } + v8[2] = (int)v6; + v5[3] = (int)v3; + *(_DWORD *)(a1[3] + 4) = v5; + } + if ( (int *)a2[1] == a1 ) + { + a2[1] = v5; + v9 = a1[1]; + } + else + { + v9 = a1[1]; + if ( *(int **)(v9 + 8) == a1 ) + *(_DWORD *)(v9 + 8) = v5; + else + *(_DWORD *)(v9 + 12) = v5; + } + v5[1] = v9; + v10 = *v5; + *v5 = *a1; + *a1 = v10; +LABEL_14: + if ( !v10 ) + return a1; + if ( (int *)a2[1] == v6 ) + { +LABEL_53: + if ( v6 ) + goto LABEL_68; + return a1; + } + while ( 1 ) + { + if ( v6 && *v6 != 1 ) + goto LABEL_68; + v14 = (int *)v7[2]; + if ( v14 != v6 ) + break; + v14 = (int *)v7[3]; + v17 = (int *)v14[2]; + if ( !*v14 ) + { + *v14 = 1; + *v7 = 0; + v7[3] = (int)v17; + if ( v17 ) + v17[1] = (int)v7; + v18 = v7[1]; + v14[1] = v18; + if ( v7 == (int *)a2[1] ) + { + a2[1] = v14; + v19 = (int *)v7[3]; + } + else if ( v7 == *(int **)(v18 + 8) ) + { + *(_DWORD *)(v18 + 8) = v14; + v19 = v17; + } + else + { + *(_DWORD *)(v18 + 12) = v14; + v19 = (int *)v7[3]; + } + v14[2] = (int)v7; + v17 = (int *)v19[2]; + v7[1] = (int)v14; + v14 = v19; + } + if ( v17 && *v17 != 1 ) + { + v37 = (_DWORD *)v14[3]; + v41 = v37; + if ( !v37 || *v37 == 1 ) + { + v38 = v17[3]; + *v17 = 1; + *v14 = 0; + v14[2] = v38; + if ( v38 ) + *(_DWORD *)(v38 + 4) = v14; + v39 = v14[1]; + v17[1] = v39; + if ( v14 == (int *)a2[1] ) + { + a2[1] = v17; + } + else if ( v14 == *(int **)(v39 + 12) ) + { + *(_DWORD *)(v39 + 12) = v17; + } + else + { + *(_DWORD *)(v39 + 8) = v17; + } + v17[3] = (int)v14; + v14[1] = (int)v17; + v21 = (int *)v7[3]; + v40 = (_DWORD *)v21[3]; + *v21 = *v7; + v41 = v40; + *v7 = 1; + if ( !v40 ) + goto LABEL_47; + goto LABEL_46; + } +LABEL_45: + v21 = (int *)v7[3]; + *v14 = *v7; + *v7 = 1; +LABEL_46: + *v41 = 1; +LABEL_47: + v22 = v21[2]; + v7[3] = v22; + if ( v22 ) + *(_DWORD *)(v22 + 4) = v7; + v23 = v7[1]; + v21[1] = v23; + if ( v7 == (int *)a2[1] ) + { + a2[1] = v21; + } + else if ( v7 == *(int **)(v23 + 8) ) + { + *(_DWORD *)(v23 + 8) = v21; + } + else + { + *(_DWORD *)(v23 + 12) = v21; + } + v21[2] = (int)v7; + v7[1] = (int)v21; + goto LABEL_53; + } + v20 = (_DWORD *)v14[3]; + if ( v20 && *v20 != 1 ) + { + v41 = (_DWORD *)v14[3]; + goto LABEL_45; + } +LABEL_28: + *v14 = 0; + v16 = (int *)a2[1]; + v6 = v7; + if ( v7 == v16 ) + goto LABEL_69; + v7 = (int *)v7[1]; + } + v11 = (int *)v14[3]; + if ( !*v14 ) + { + *v14 = 1; + *v7 = 0; + v7[2] = (int)v11; + if ( v11 ) + v11[1] = (int)v7; + v12 = v7[1]; + v14[1] = v12; + if ( v7 == (int *)a2[1] ) + { + a2[1] = v14; + v13 = (int *)v7[2]; + } + else if ( v7 == *(int **)(v12 + 12) ) + { + *(_DWORD *)(v12 + 12) = v14; + v13 = v11; + } + else + { + *(_DWORD *)(v12 + 8) = v14; + v13 = (int *)v7[2]; + } + v14[3] = (int)v7; + v11 = (int *)v13[3]; + v7[1] = (int)v14; + v14 = v13; + } + if ( !v11 || *v11 == 1 ) + { + v15 = (_DWORD *)v14[2]; + if ( v15 && *v15 != 1 ) + { + v42 = (_DWORD *)v14[2]; + goto LABEL_90; + } + goto LABEL_28; + } + v30 = (_DWORD *)v14[2]; + v42 = v30; + if ( v30 && *v30 != 1 ) + { +LABEL_90: + v33 = (int *)v7[2]; + *v14 = *v7; + *v7 = 1; + goto LABEL_91; + } + v31 = v11[2]; + *v11 = 1; + *v14 = 0; + v14[3] = v31; + if ( v31 ) + *(_DWORD *)(v31 + 4) = v14; + v32 = v14[1]; + v11[1] = v32; + if ( v14 == (int *)a2[1] ) + { + a2[1] = v11; + } + else if ( v14 == *(int **)(v32 + 8) ) + { + *(_DWORD *)(v32 + 8) = v11; + } + else + { + *(_DWORD *)(v32 + 12) = v11; + } + v11[2] = (int)v14; + v14[1] = (int)v11; + v33 = (int *)v7[2]; + v34 = (_DWORD *)v33[2]; + *v33 = *v7; + v42 = v34; + *v7 = 1; + if ( v34 ) +LABEL_91: + *v42 = 1; + v35 = v33[3]; + v7[2] = v35; + if ( v35 ) + *(_DWORD *)(v35 + 4) = v7; + v36 = v7[1]; + v33[1] = v36; + if ( v7 == (int *)a2[1] ) + { + a2[1] = v33; + } + else if ( v7 == *(int **)(v36 + 12) ) + { + *(_DWORD *)(v36 + 12) = v33; + } + else + { + *(_DWORD *)(v36 + 8) = v33; + } + v33[3] = (int)v7; + v7[1] = (int)v33; + if ( !v6 ) + return a1; +LABEL_68: + v16 = v6; +LABEL_69: + *v16 = 1; + return a1; +} + +//----- (004D24A0) -------------------------------------------------------- +_DWORD *__cdecl std::_Rb_tree_insert_and_rebalance(char a1, _DWORD *a2, _DWORD *a3, _DWORD *a4) +{ + _DWORD *v4; // ecx + _DWORD *v5; // edi + _DWORD *result; // eax + _DWORD *v7; // edx + _DWORD *v8; // eax + _DWORD *v9; // ebx + _DWORD *v10; // ebp + int v11; // edx + int v12; // ebx + int v13; // ebx + int v14; // edx + int v15; // edx + int v16; // edi + int v17; // ebx + _DWORD *v18; // ebx + int v19; // ebx + _DWORD *v20; // ebx + _DWORD *v21; // edi + + v4 = a2; + a2[1] = a3; + a2[2] = 0; + a2[3] = 0; + *a2 = 0; + if ( !a1 ) + { + a3[3] = a2; + if ( (_DWORD *)a4[3] == a3 ) + { + v5 = (_DWORD *)a4[1]; + a4[3] = a2; + result = v5; +LABEL_6: + if ( a2 == v5 ) + { +LABEL_18: + *result = 1; + return result; + } + while ( 1 ) + { + while ( 1 ) + { + v7 = (_DWORD *)v4[1]; + if ( *v7 ) + goto LABEL_18; + v8 = (_DWORD *)v7[1]; + v9 = (_DWORD *)v8[2]; + if ( v7 != v9 ) + { + if ( !v9 || *v9 ) + { + if ( (_DWORD *)v7[2] == v4 ) + { + v16 = v4[3]; + v17 = v7[1]; + v7[2] = v16; + if ( v16 ) + { + *(_DWORD *)(v16 + 4) = v7; + v17 = v7[1]; + } + v4[1] = v17; + if ( v7 == (_DWORD *)a4[1] ) + { + a4[1] = v4; + } + else if ( v7 == *(_DWORD **)(v17 + 12) ) + { + *(_DWORD *)(v17 + 12) = v4; + } + else + { + *(_DWORD *)(v17 + 8) = v4; + } + v18 = v4; + v4[3] = v7; + v7[1] = v4; + v4 = v7; + v7 = v18; + } + *v7 = 1; + v11 = v8[3]; + *v8 = 0; + v12 = *(_DWORD *)(v11 + 8); + v8[3] = v12; + if ( v12 ) + *(_DWORD *)(v12 + 4) = v8; + v13 = v8[1]; + *(_DWORD *)(v11 + 4) = v13; + if ( v8 == (_DWORD *)a4[1] ) + { + a4[1] = v11; + } + else if ( v8 == *(_DWORD **)(v13 + 8) ) + { + *(_DWORD *)(v13 + 8) = v11; + } + else + { + *(_DWORD *)(v13 + 12) = v11; + } + *(_DWORD *)(v11 + 8) = v8; + v8[1] = v11; + v5 = (_DWORD *)a4[1]; + } + else + { + *v7 = 1; + v4 = v8; + *v9 = 1; + *v8 = 0; + } + goto LABEL_11; + } + v10 = (_DWORD *)v8[3]; + if ( !v10 || *v10 ) + break; + v4 = (_DWORD *)v7[1]; + *v7 = 1; + *v10 = 1; + *v8 = 0; + result = v5; + if ( v5 == v4 ) + { +LABEL_17: + result = v4; + goto LABEL_18; + } + } + if ( (_DWORD *)v7[3] == v4 ) + break; +LABEL_29: + *v7 = 1; + v14 = v9[3]; + *v8 = 0; + v8[2] = v14; + if ( v14 ) + *(_DWORD *)(v14 + 4) = v8; + v15 = v8[1]; + v9[1] = v15; + if ( v8 == (_DWORD *)a4[1] ) + { + a4[1] = v9; + } + else if ( v8 == *(_DWORD **)(v15 + 12) ) + { + *(_DWORD *)(v15 + 12) = v9; + } + else + { + *(_DWORD *)(v15 + 8) = v9; + } + v9[3] = v8; + v8[1] = v9; + v5 = (_DWORD *)a4[1]; +LABEL_11: + result = v5; + if ( v5 == v4 ) + goto LABEL_17; + } + v19 = v4[2]; + v7[3] = v19; + if ( v19 ) + { + *(_DWORD *)(v19 + 4) = v7; + v20 = (_DWORD *)v7[1]; + v4[1] = v20; + if ( v7 != (_DWORD *)a4[1] ) + { + if ( v7 != (_DWORD *)v20[2] ) + { + v20[3] = v4; +LABEL_48: + v21 = v4; + v4[2] = v7; + v9 = (_DWORD *)v8[2]; + v7[1] = v4; + v4 = v7; + v7 = v21; + goto LABEL_29; + } +LABEL_54: + v20[2] = v4; + goto LABEL_48; + } + } + else + { + v4[1] = v8; + v20 = v8; + if ( v7 != (_DWORD *)a4[1] ) + goto LABEL_54; + } + a4[1] = v4; + goto LABEL_48; + } +LABEL_5: + v5 = (_DWORD *)a4[1]; + result = v5; + goto LABEL_6; + } + a3[2] = a2; + if ( a4 != a3 ) + { + if ( (_DWORD *)a4[2] == a3 ) + a4[2] = a2; + goto LABEL_5; + } + result = a2; + a4[1] = a2; + a4[3] = a2; + *a2 = 1; + return result; +} + +//----- (004D2740) -------------------------------------------------------- +_DWORD *__cdecl std::ws>(_DWORD *a1) +{ + _DWORD *v1; // esi + _DWORD *v2; // edi + _BYTE *v3; // eax + unsigned int v4; // eax + unsigned int v5; // edx + const std::locale *v7; // [esp+4h] [ebp-28h] + _DWORD *v8[4]; // [esp+1Ch] [ebp-10h] BYREF + + std::locale::locale( + (volatile signed __int32 **)v8, + (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), + v7); + v1 = std::use_facet>((int)v8); + std::locale::~locale(v8); + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (_BYTE *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + goto LABEL_5; +LABEL_11: + v3 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); + if ( v3 == (_BYTE *)-1 ) + { +LABEL_9: + std::ios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); + } + else + { + while ( (*(_BYTE *)(v1[6] + 2 * (unsigned __int8)v3) & 0x20) != 0 ) + { + v4 = v2[2]; + v5 = v2[3]; + if ( v4 < v5 ) + { + v3 = (_BYTE *)(v4 + 1); + v2[2] = v3; + } + else + { + if ( (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2) == -1 ) + goto LABEL_9; + v3 = (_BYTE *)v2[2]; + v5 = v2[3]; + } + if ( (unsigned int)v3 >= v5 ) + goto LABEL_11; +LABEL_5: + LOBYTE(v3) = *v3; + } + } + return a1; +} +// 4D275F: variable 'v7' is possibly undefined + +//----- (004D2810) -------------------------------------------------------- +_DWORD *__cdecl std::ws>(_DWORD *a1) +{ + void *v1; // edi + _DWORD *v2; // ebx + unsigned __int16 *v3; // eax + __int16 v4; // ax + unsigned __int16 i; // ax + __int16 *v6; // edx + const std::locale *v8; // [esp+Ch] [ebp-28h] + _DWORD *v9[4]; // [esp+24h] [ebp-10h] BYREF + + std::locale::locale( + (volatile signed __int32 **)v9, + (volatile signed __int32 **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 108), + v8); + v1 = std::use_facet>((int)v9); + std::locale::~locale(v9); + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (unsigned __int16 *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + goto LABEL_5; +LABEL_12: + for ( i = (*(int (__fastcall **)(_DWORD *))(*v2 + 36))(v2); i != 0xFFFF; i = *v3 ) + { + if ( !(*(unsigned __int8 (__thiscall **)(void *, int, _DWORD))(*(_DWORD *)v1 + 8))(v1, 32, i) ) + return a1; + v6 = (__int16 *)v2[2]; + if ( (unsigned int)v6 < v2[3] ) + { + v4 = *v6; + v2[2] = v6 + 1; + if ( v4 == -1 ) + break; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v2 + 40))(v2) == 0xFFFF ) + { + break; + } + v3 = (unsigned __int16 *)v2[2]; + if ( (unsigned int)v3 >= v2[3] ) + goto LABEL_12; +LABEL_5: + ; + } + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 2); + return a1; +} +// 4D282F: variable 'v8' is possibly undefined + +//----- (004D2900) -------------------------------------------------------- +std::ios_base *__cdecl std::hex(std::ios_base *a1) +{ + *((_DWORD *)a1 + 3) = *((_DWORD *)a1 + 3) & 0xFFFFFFB5 | 8; + return a1; +} + +//----- (004D2920) -------------------------------------------------------- +_DWORD *__cdecl std::endl>(std::ostream::sentry *a1) +{ + int v1; // eax + _BYTE *v2; // ebx + int v3; // eax + std::ostream::sentry *v4; // eax + int (__stdcall *v6)(unsigned __int8); // edx + char v7; // [esp+4h] [ebp-18h] + + v1 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v2 = *(_BYTE **)((char *)a1 + v1 + 124); + if ( !v2 ) + std::__throw_bad_cast(); + if ( v2[28] ) + { + v3 = (char)v2[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v1 + 124)); + v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v2 + 24); + v3 = 10; + if ( v6 != std::ctype::do_widen ) + v3 = ((char (__thiscall *)(_BYTE *, int))v6)(v2, 10); + } + v4 = std::ostream::put(a1, (std::ostream *)v3, v7); + return std::ostream::flush(v4); +} +// 4D2945: variable 'v7' is possibly undefined + +//----- (004D29A0) -------------------------------------------------------- +_DWORD *__cdecl std::endl>(int *a1) +{ + int v1; // ecx + unsigned __int16 v2; // ax + int *v3; // eax + + v1 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); + if ( !v1 ) + std::__throw_bad_cast(); + v2 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v1 + 40))(v1, 10); + v3 = std::wostream::put(a1, v2); + return std::wostream::flush(v3); +} + +//----- (004D29F0) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::ends>(std::ostream::sentry *a1) +{ + char v2; // [esp+4h] [ebp-18h] + + return std::ostream::put(a1, 0, v2); +} +// 4D29FE: variable 'v2' is possibly undefined + +//----- (004D2A10) -------------------------------------------------------- +int *__cdecl std::ends>(int *a1) +{ + return std::wostream::put(a1, 0); +} + +//----- (004D2A30) -------------------------------------------------------- +_DWORD *__cdecl std::flush>(_DWORD *a1) +{ + return std::ostream::flush(a1); +} + +//----- (004D2A40) -------------------------------------------------------- +_DWORD *__cdecl std::flush>(_DWORD *a1) +{ + return std::wostream::flush(a1); +} + +//----- (004D2A50) -------------------------------------------------------- +std::istream::sentry *__cdecl std::getline,std::allocator>( + std::istream::sentry *a1, + _DWORD *a2) +{ + int v2; // eax + _BYTE *v3; // ebx + unsigned __int8 v4; // al + int (__stdcall *v6)(unsigned __int8); // edx + + v2 = *(_DWORD *)(*(_DWORD *)a1 - 12); + v3 = *(_BYTE **)((char *)a1 + v2 + 124); + if ( !v3 ) + std::__throw_bad_cast(); + if ( v3[28] ) + { + v4 = v3[39]; + } + else + { + std::ctype::_M_widen_init(*(_DWORD *)((char *)a1 + v2 + 124)); + v6 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v3 + 24); + v4 = 10; + if ( v6 != std::ctype::do_widen ) + v4 = ((int (__thiscall *)(_BYTE *, int))v6)(v3, 10); + } + return std::getline,std::allocator>(a1, a2, v4); +} + +//----- (004D2AD0) -------------------------------------------------------- +std::istream::sentry *__cdecl std::getline,std::allocator>( + std::istream::sentry *a1, + _DWORD *a2, + unsigned __int8 a3) +{ + int v3; // edx + _BYTE *v5; // eax + _DWORD *v6; // esi + unsigned __int8 *v7; // eax + int v8; // eax + _BYTE *v9; // eax + signed int v10; // ebx + unsigned __int8 *v11; // eax + unsigned int v12; // ecx + char *v13; // edx + signed int v14; // ecx + unsigned int v15; // ebx + _BYTE *v16; // eax + unsigned int v17; // edx + _BYTE *v18; // eax + unsigned int v19; // eax + unsigned int v20; // edx + bool v21; // [esp+8h] [ebp-50h] + _BYTE *v22; // [esp+24h] [ebp-34h] + char v23; // [esp+24h] [ebp-34h] + size_t v24; // [esp+28h] [ebp-30h] + unsigned int v25; // [esp+2Ch] [ebp-2Ch] + unsigned int v26; // [esp+2Ch] [ebp-2Ch] + char v27[25]; // [esp+3Fh] [ebp-19h] BYREF + + std::istream::sentry::sentry(v27, a1, (std::istream *)1, v21); + if ( !v27[0] ) + { +LABEL_2: + v3 = 4; +LABEL_3: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | v3); + return a1; + } + v5 = (_BYTE *)*a2; + a2[1] = 0; + *v5 = 0; + v6 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v7 = (unsigned __int8 *)v6[2]; + if ( (unsigned int)v7 >= v6[3] ) + v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + else + v8 = *v7; + v25 = 0; + do + { + while ( 1 ) + { + if ( v8 == -1 ) + { + if ( !v25 ) + { + v3 = 6; + goto LABEL_3; + } +LABEL_34: + v3 = 2; + goto LABEL_3; + } + v12 = v6[3]; + v13 = (char *)v6[2]; + if ( a3 == v8 ) + goto LABEL_29; + v14 = v12 - (_DWORD)v13; + v10 = 0x3FFFFFFF - v25; + if ( (int)(0x3FFFFFFF - v25) > v14 ) + v10 = v14; + v24 = a2[1]; + if ( v10 <= 1 ) + break; + v22 = (_BYTE *)v6[2]; + v9 = memchr(v13, (char)a3, v10); + if ( v9 ) + v10 = v9 - v22; + if ( v10 > 0x3FFFFFFF - v24 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(a2, v22, v10); + v25 += v10; + v11 = (unsigned __int8 *)(v10 + v6[2]); + v6[2] = v11; + if ( v6[3] <= (unsigned int)v11 ) + goto LABEL_25; +LABEL_12: + v8 = *v11; + if ( v25 > 0x3FFFFFFE ) + goto LABEL_26; + } + v23 = v8; + v15 = v24 + 1; + v16 = (_BYTE *)*a2; + if ( (_DWORD *)*a2 == a2 + 2 ) + v17 = 15; + else + v17 = a2[2]; + if ( v15 > v17 ) + { + std::string::_M_mutate((int)a2, v24, 0, 0, 1u); + v16 = (_BYTE *)*a2; + } + ++v25; + v16[v24] = v23; + v18 = (_BYTE *)*a2; + a2[1] = v15; + v18[v24 + 1] = 0; + v19 = v6[2]; + v20 = v6[3]; + if ( v19 >= v20 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v6 + 40))(v6) == -1 ) + goto LABEL_34; + v11 = (unsigned __int8 *)v6[2]; + v20 = v6[3]; + } + else + { + v11 = (unsigned __int8 *)(v19 + 1); + v6[2] = v11; + } + if ( v20 > (unsigned int)v11 ) + goto LABEL_12; +LABEL_25: + v8 = (*(int (__fastcall **)(_DWORD *))(*v6 + 36))(v6); + } + while ( v25 <= 0x3FFFFFFE ); +LABEL_26: + if ( v8 == -1 ) + goto LABEL_34; + v3 = 4; + if ( a3 != v8 ) + goto LABEL_3; + v13 = (char *)v6[2]; + v12 = v6[3]; +LABEL_29: + v26 = v25 + 1; + if ( v12 <= (unsigned int)v13 ) + { + (*(void (__fastcall **)(_DWORD *))(*v6 + 40))(v6); + if ( v26 ) + return a1; + goto LABEL_2; + } + v6[2] = v13 + 1; + if ( !v26 ) + goto LABEL_2; + return a1; +} +// 4D2D72: control flows out of bounds to 4DB323 +// 4D2AF3: variable 'v21' is possibly undefined +// 4DB31C: using guessed type int std::getline,std::allocator>(void); +// 4D2AD0: using guessed type char var_19[25]; + +//----- (004D2D80) -------------------------------------------------------- +_DWORD *__cdecl std::getline,std::allocator>(_DWORD *a1, int a2, wchar_t a3) +{ + int v3; // eax + _DWORD *v5; // ebx + wchar_t *v6; // eax + wchar_t v7; // si + unsigned int v8; // esi + wchar_t *v9; // eax + wchar_t *v10; // edx + wchar_t *v11; // eax + const wchar_t *v12; // edx + int v13; // eax + size_t v14; // edi + const wchar_t *v15; // eax + unsigned int v16; // ecx + wchar_t v17; // ax + unsigned int v18; // [esp+24h] [ebp-34h] + unsigned int v19; // [esp+2Ch] [ebp-2Ch] + unsigned int v20; // [esp+2Ch] [ebp-2Ch] + char v21[25]; // [esp+3Fh] [ebp-19h] BYREF + + std::wistream::sentry::sentry(v21, a1, 1); + if ( !v21[0] ) + { +LABEL_2: + v3 = 4; +LABEL_3: + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | v3); + return a1; + } + *(_DWORD *)(a2 + 4) = 0; + **(_WORD **)a2 = 0; + v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v6 = (wchar_t *)v5[2]; + if ( (unsigned int)v6 >= v5[3] ) + v7 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); + else + v7 = *v6; + v19 = 0; + do + { + while ( 1 ) + { + if ( v7 == 0xFFFF ) + { + if ( !v19 ) + { + v3 = 6; + goto LABEL_3; + } +LABEL_34: + v3 = 2; + goto LABEL_3; + } + v12 = (const wchar_t *)v5[2]; + v18 = v5[3]; + if ( a3 == v7 ) + goto LABEL_29; + v13 = (v5[3] - (int)v12) >> 1; + if ( v13 > (int)(0x1FFFFFFF - v19) ) + v13 = 0x1FFFFFFF - v19; + if ( v13 <= 1 ) + break; + v8 = v13; + v9 = wmemchr(v12, a3, v13); + v10 = (wchar_t *)v5[2]; + if ( v9 ) + v8 = v9 - v10; + if ( 0x1FFFFFFF - *(_DWORD *)(a2 + 4) < v8 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append(a2, v10, v8); + v19 += v8; + v11 = (wchar_t *)(v5[2] + 2 * v8); + v5[2] = v11; + if ( v5[3] <= (unsigned int)v11 ) + goto LABEL_25; +LABEL_12: + v7 = *v11; + if ( v19 > 0x1FFFFFFE ) + goto LABEL_26; + } + v14 = *(_DWORD *)(a2 + 4); + v15 = *(const wchar_t **)a2; + if ( *(_DWORD *)a2 == a2 + 8 ) + v16 = 7; + else + v16 = *(_DWORD *)(a2 + 8); + if ( v14 + 1 > v16 ) + { + std::wstring::_M_mutate((const wchar_t **)a2, v14, 0, 0, 1u); + v12 = (const wchar_t *)v5[2]; + v18 = v5[3]; + v15 = *(const wchar_t **)a2; + } + v15[v14] = v7; + ++v19; + *(_DWORD *)(a2 + 4) = v14 + 1; + v15[v14 + 1] = 0; + if ( v18 <= (unsigned int)v12 ) + { + if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v5 + 40))(v5) == 0xFFFF ) + goto LABEL_34; + } + else + { + v17 = *v12; + v5[2] = v12 + 1; + if ( v17 == 0xFFFF ) + goto LABEL_34; + } + v11 = (wchar_t *)v5[2]; + if ( (unsigned int)v11 < v5[3] ) + goto LABEL_12; +LABEL_25: + v7 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); + } + while ( v19 <= 0x1FFFFFFE ); +LABEL_26: + if ( v7 == 0xFFFF ) + goto LABEL_34; + v3 = 4; + if ( v7 != a3 ) + goto LABEL_3; + v12 = (const wchar_t *)v5[2]; + v18 = v5[3]; +LABEL_29: + v20 = v19 + 1; + if ( v18 <= (unsigned int)v12 ) + { + (*(void (__fastcall **)(_DWORD *))(*v5 + 40))(v5); + if ( v20 ) + return a1; + goto LABEL_2; + } + v5[2] = v12 + 1; + if ( !v20 ) + goto LABEL_2; + return a1; +} +// 4D3059: control flows out of bounds to 4DB3A7 +// 4DB3A0: using guessed type int std::getline,std::allocator>(void); +// 4D2D80: using guessed type char var_19[25]; + +//----- (004D3070) -------------------------------------------------------- +int __cdecl std::setfill(unsigned __int8 a1) +{ + return a1; +} + +//----- (004D3080) -------------------------------------------------------- +int __cdecl std::setfill(unsigned __int16 a1) +{ + return a1; +} + +//----- (004D3090) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0) != 0; + } + return v2; +} +// 4D30D9: variable 'v2' is possibly undefined +// 4E9588: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1738: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D30E0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0) != 0; + } + return v2; +} +// 4D3129: variable 'v2' is possibly undefined +// 4E9590: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1778: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D3130) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0) != 0; + } + return v2; +} +// 4D3179: variable 'v2' is possibly undefined +// 4E9598: using guessed type int std::collate::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F18A8: using guessed type int *`typeinfo for'std::collate; + +//----- (004D3180) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0) != 0; + } + return v2; +} +// 4D31C9: variable 'v2' is possibly undefined +// 4E959C: using guessed type int std::collate::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F18B4: using guessed type int *`typeinfo for'std::collate; + +//----- (004D31D0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0) != 0; + } + return v2; +} +// 4D3219: variable 'v2' is possibly undefined +// 4E95A0: using guessed type int std::messages::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F18C0: using guessed type int *`typeinfo for'std::messages; + +//----- (004D3220) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0) != 0; + } + return v2; +} +// 4D3269: variable 'v2' is possibly undefined +// 4E95A4: using guessed type int std::messages::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F18E0: using guessed type int *`typeinfo for'std::messages; + +//----- (004D3270) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0) != 0; + } + return v2; +} +// 4D32B9: variable 'v2' is possibly undefined +// 4E95A8: using guessed type int std::numpunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1900: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004D32C0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0) != 0; + } + return v2; +} +// 4D3309: variable 'v2' is possibly undefined +// 4E95AC: using guessed type int std::numpunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F190C: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004D3310) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0) != 0; + } + return v2; +} +// 4D3359: variable 'v2' is possibly undefined +// 4E95B0: using guessed type int std::time_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1918: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004D3360) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0) != 0; + } + return v2; +} +// 4D33A9: variable 'v2' is possibly undefined +// 4E95B4: using guessed type int std::time_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1938: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004D33B0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0) != 0; + } + return v2; +} +// 4D33F9: variable 'v2' is possibly undefined +// 4E95B8: using guessed type int std::money_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1958: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004D3400) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0) != 0; + } + return v2; +} +// 4D3449: variable 'v2' is possibly undefined +// 4E95BC: using guessed type int std::money_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1964: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004D3450) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0) != 0; + } + return v2; +} +// 4D3499: variable 'v2' is possibly undefined +// 4E95C0: using guessed type int std::money_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1970: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004D34A0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0) != 0; + } + return v2; +} +// 4D34E9: variable 'v2' is possibly undefined +// 4E95C4: using guessed type int std::money_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F197C: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004D34F0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0) != 0; + } + return v2; +} +// 4D3539: variable 'v2' is possibly undefined +// 4E940C: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1A0C: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D3540) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0) != 0; + } + return v2; +} +// 4D3589: variable 'v2' is possibly undefined +// 4E9414: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1A4C: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D3590) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::__timepunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::__timepunct, + 0) != 0; + } + return v2; +} +// 4D35D9: variable 'v2' is possibly undefined +// 4E941C: using guessed type int std::__timepunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1A94: using guessed type int *`typeinfo for'std::__timepunct; + +//----- (004D35E0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::__timepunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::__timepunct, + 0) != 0; + } + return v2; +} +// 4D3629: variable 'v2' is possibly undefined +// 4E9420: using guessed type int std::__timepunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1AA0: using guessed type int *`typeinfo for'std::__timepunct; + +//----- (004D3630) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::ctype::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::ctype, + 0) != 0; + } + return v2; +} +// 4D3679: variable 'v2' is possibly undefined +// 4E9560: using guessed type int std::ctype::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F28: using guessed type int *`typeinfo for'std::ctype; + +//----- (004D3680) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::ctype::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::ctype, + 0) != 0; + } + return v2; +} +// 4D36C9: variable 'v2' is possibly undefined +// 4E9564: using guessed type int std::ctype::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F48: using guessed type int *`typeinfo for'std::ctype; + +//----- (004D36D0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::codecvt::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::codecvt, + 0) != 0; + } + return v2; +} +// 4D3719: variable 'v2' is possibly undefined +// 4E95D8: using guessed type int std::codecvt::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F84: using guessed type int *`typeinfo for'std::codecvt; + +//----- (004D3720) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::codecvt::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::codecvt, + 0) != 0; + } + return v2; +} +// 4D3769: variable 'v2' is possibly undefined +// 4E95DC: using guessed type int std::codecvt::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F90: using guessed type int *`typeinfo for'std::codecvt; + +//----- (004D3770) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0) != 0; + } + return v2; +} +// 4D37B9: variable 'v2' is possibly undefined +// 4E95E0: using guessed type int std::collate::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F9C: using guessed type int *`typeinfo for'std::collate; + +//----- (004D37C0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0) != 0; + } + return v2; +} +// 4D3809: variable 'v2' is possibly undefined +// 4E95E4: using guessed type int std::collate::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FA8: using guessed type int *`typeinfo for'std::collate; + +//----- (004D3810) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::num_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_get>, + 0) != 0; + } + return v2; +} +// 4D3859: variable 'v2' is possibly undefined +// 4E95E8: using guessed type int std::num_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FB4: using guessed type int *`typeinfo for'std::num_get>; + +//----- (004D3860) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::num_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_get>, + 0) != 0; + } + return v2; +} +// 4D38A9: variable 'v2' is possibly undefined +// 4E95EC: using guessed type int std::num_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FC0: using guessed type int *`typeinfo for'std::num_get>; + +//----- (004D38B0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::num_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_put>, + 0) != 0; + } + return v2; +} +// 4D38F9: variable 'v2' is possibly undefined +// 4E95F0: using guessed type int std::num_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FCC: using guessed type int *`typeinfo for'std::num_put>; + +//----- (004D3900) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::num_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_put>, + 0) != 0; + } + return v2; +} +// 4D3949: variable 'v2' is possibly undefined +// 4E95F4: using guessed type int std::num_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FD8: using guessed type int *`typeinfo for'std::num_put>; + +//----- (004D3950) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0) != 0; + } + return v2; +} +// 4D3999: variable 'v2' is possibly undefined +// 4E9600: using guessed type int std::messages::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FF8: using guessed type int *`typeinfo for'std::messages; + +//----- (004D39A0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0) != 0; + } + return v2; +} +// 4D39E9: variable 'v2' is possibly undefined +// 4E9604: using guessed type int std::messages::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2018: using guessed type int *`typeinfo for'std::messages; + +//----- (004D39F0) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0) != 0; + } + return v2; +} +// 4D3A39: variable 'v2' is possibly undefined +// 4E9608: using guessed type int std::numpunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2038: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004D3A40) -------------------------------------------------------- +int __cdecl std::has_facet>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0) != 0; + } + return v2; +} +// 4D3A89: variable 'v2' is possibly undefined +// 4E960C: using guessed type int std::numpunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2044: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004D3A90) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0) != 0; + } + return v2; +} +// 4D3AD9: variable 'v2' is possibly undefined +// 4E9610: using guessed type int std::time_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2050: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004D3AE0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0) != 0; + } + return v2; +} +// 4D3B29: variable 'v2' is possibly undefined +// 4E9614: using guessed type int std::time_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2070: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004D3B30) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_put>, + 0) != 0; + } + return v2; +} +// 4D3B79: variable 'v2' is possibly undefined +// 4E9618: using guessed type int std::time_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2090: using guessed type int *`typeinfo for'std::time_put>; + +//----- (004D3B80) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::time_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_put>, + 0) != 0; + } + return v2; +} +// 4D3BC9: variable 'v2' is possibly undefined +// 4E961C: using guessed type int std::time_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F209C: using guessed type int *`typeinfo for'std::time_put>; + +//----- (004D3BD0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0) != 0; + } + return v2; +} +// 4D3C19: variable 'v2' is possibly undefined +// 4E9620: using guessed type int std::money_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F20D4: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004D3C20) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0) != 0; + } + return v2; +} +// 4D3C69: variable 'v2' is possibly undefined +// 4E9624: using guessed type int std::money_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F20E0: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004D3C70) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0) != 0; + } + return v2; +} +// 4D3CB9: variable 'v2' is possibly undefined +// 4E9628: using guessed type int std::money_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F20EC: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004D3CC0) -------------------------------------------------------- +int __cdecl std::has_facet>>(int a1) +{ + unsigned int v1; // eax + int v2; // ecx + const void *lpsrc; // eax + + v1 = std::locale::id::_M_id(std::money_put>::id); + v2 = 0; + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) > v1 ) + { + lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1); + if ( lpsrc ) + LOBYTE(v2) = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0) != 0; + } + return v2; +} +// 4D3D09: variable 'v2' is possibly undefined +// 4E962C: using guessed type int std::money_put>::id[5]; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F20F8: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004D3D10) -------------------------------------------------------- +void __noreturn std::terminate(void) +{ + __cxxabiv1::__terminate(__cxxabiv1::__terminate_handler); +} + +//----- (004D3D20) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9588: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1738: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D3D80) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E958C: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1758: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D3DE0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9590: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1778: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D3E40) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9594: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1798: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D3EA0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9598: using guessed type int std::collate::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F18A8: using guessed type int *`typeinfo for'std::collate; + +//----- (004D3F00) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E959C: using guessed type int std::collate::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F18B4: using guessed type int *`typeinfo for'std::collate; + +//----- (004D3F60) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95A0: using guessed type int std::messages::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F18C0: using guessed type int *`typeinfo for'std::messages; + +//----- (004D3FC0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95A4: using guessed type int std::messages::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F18E0: using guessed type int *`typeinfo for'std::messages; + +//----- (004D4020) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95A8: using guessed type int std::numpunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1900: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004D4080) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95AC: using guessed type int std::numpunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F190C: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004D40E0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95B0: using guessed type int std::time_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1918: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004D4140) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95B4: using guessed type int std::time_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1938: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004D41A0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95B8: using guessed type int std::money_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1958: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004D4200) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95BC: using guessed type int std::money_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1964: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004D4260) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95C0: using guessed type int std::money_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1970: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004D42C0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95C4: using guessed type int std::money_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F197C: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004D4320) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E940C: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1A0C: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D4380) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9410: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1A2C: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D43E0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9414: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1A4C: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D4440) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::moneypunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::moneypunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9418: using guessed type int std::moneypunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1A6C: using guessed type int *`typeinfo for'std::moneypunct; + +//----- (004D44A0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::__timepunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::__timepunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E941C: using guessed type int std::__timepunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1A94: using guessed type int *`typeinfo for'std::__timepunct; + +//----- (004D4500) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::__timepunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::__timepunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9420: using guessed type int std::__timepunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1AA0: using guessed type int *`typeinfo for'std::__timepunct; + +//----- (004D4560) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::ctype::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::ctype, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9560: using guessed type int std::ctype::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F28: using guessed type int *`typeinfo for'std::ctype; + +//----- (004D45C0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::ctype::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::ctype, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9564: using guessed type int std::ctype::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F48: using guessed type int *`typeinfo for'std::ctype; + +//----- (004D4620) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::codecvt::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::codecvt, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95D8: using guessed type int std::codecvt::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F84: using guessed type int *`typeinfo for'std::codecvt; + +//----- (004D4680) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::codecvt::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::codecvt, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95DC: using guessed type int std::codecvt::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F90: using guessed type int *`typeinfo for'std::codecvt; + +//----- (004D46E0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95E0: using guessed type int std::collate::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1F9C: using guessed type int *`typeinfo for'std::collate; + +//----- (004D4740) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::collate::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::collate, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95E4: using guessed type int std::collate::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FA8: using guessed type int *`typeinfo for'std::collate; + +//----- (004D47A0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::num_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95E8: using guessed type int std::num_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FB4: using guessed type int *`typeinfo for'std::num_get>; + +//----- (004D4800) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::num_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95EC: using guessed type int std::num_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FC0: using guessed type int *`typeinfo for'std::num_get>; + +//----- (004D4860) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::num_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95F0: using guessed type int std::num_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FCC: using guessed type int *`typeinfo for'std::num_put>; + +//----- (004D48C0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::num_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::num_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E95F4: using guessed type int std::num_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FD8: using guessed type int *`typeinfo for'std::num_put>; + +//----- (004D4920) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9600: using guessed type int std::messages::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F1FF8: using guessed type int *`typeinfo for'std::messages; + +//----- (004D4980) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::messages::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::messages, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9604: using guessed type int std::messages::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2018: using guessed type int *`typeinfo for'std::messages; + +//----- (004D49E0) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9608: using guessed type int std::numpunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2038: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004D4A40) -------------------------------------------------------- +void *__cdecl std::use_facet>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::numpunct::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::numpunct, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E960C: using guessed type int std::numpunct::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2044: using guessed type int *`typeinfo for'std::numpunct; + +//----- (004D4AA0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9610: using guessed type int std::time_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2050: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004D4B00) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9614: using guessed type int std::time_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2070: using guessed type int *`typeinfo for'std::time_get>; + +//----- (004D4B60) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9618: using guessed type int std::time_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F2090: using guessed type int *`typeinfo for'std::time_put>; + +//----- (004D4BC0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::time_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::time_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E961C: using guessed type int std::time_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F209C: using guessed type int *`typeinfo for'std::time_put>; + +//----- (004D4C20) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9620: using guessed type int std::money_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F20D4: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004D4C80) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_get>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_get>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9624: using guessed type int std::money_get>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F20E0: using guessed type int *`typeinfo for'std::money_get>; + +//----- (004D4CE0) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(&std::money_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E9628: using guessed type int std::money_put>::id; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F20EC: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004D4D40) -------------------------------------------------------- +void *__cdecl std::use_facet>>(int a1) +{ + unsigned int v1; // eax + const void *lpsrc; // eax + void *result; // eax + + v1 = std::locale::id::_M_id(std::money_put>::id); + if ( *(_DWORD *)(*(_DWORD *)a1 + 8) <= v1 || (lpsrc = *(const void **)(*(_DWORD *)(*(_DWORD *)a1 + 4) + 4 * v1)) == 0 ) + std::__throw_bad_cast(); + result = __dynamic_cast( + lpsrc, + (const struct __class_type_info *)&`typeinfo for'std::locale::facet, + (const struct __class_type_info *)&`typeinfo for'std::money_put>, + 0); + if ( !result ) + __cxa_bad_cast(); + return result; +} +// 4E962C: using guessed type int std::money_put>::id[5]; +// 4F1730: using guessed type int *`typeinfo for'std::locale::facet; +// 4F20F8: using guessed type int *`typeinfo for'std::money_put>; + +//----- (004D4DA0) -------------------------------------------------------- +int __usercall std::local_Rb_tree_decrement@(_DWORD *a1@) +{ + int v2; // edx + int result; // eax + int v4; // edx + + if ( !*a1 && *(_DWORD **)(a1[1] + 4) == a1 ) + return a1[3]; + v2 = a1[2]; + if ( v2 ) + { + do + { + result = v2; + v2 = *(_DWORD *)(v2 + 12); + } + while ( v2 ); + } + else + { + result = a1[1]; + if ( a1 == *(_DWORD **)(result + 8) ) + { + do + { + v4 = result; + result = *(_DWORD *)(result + 4); + } + while ( *(_DWORD *)(result + 8) == v4 ); + } + } + return result; +} + +//----- (004D4E00) -------------------------------------------------------- +bool __cdecl std::operator==(int a1, int a2) +{ + bool result; // al + int v3; // edx + + result = 0; + v3 = *(_DWORD *)(a1 + 4); + if ( v3 == *(_DWORD *)(a2 + 4) ) + { + result = 1; + if ( v3 ) + return memcmp(*(const void **)a1, *(const void **)a2, *(_DWORD *)(a1 + 4)) == 0; + } + return result; +} + +//----- (004D4E3C) -------------------------------------------------------- +bool __cdecl std::operator==(int a1, char *a2) +{ + return std::string::compare(a1, a2) == 0; +} + +//----- (004D4E60) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) +{ + int v2; // eax + + if ( Str ) + { + v2 = strlen(Str); + std::__ostream_insert>(a1, (int)Str, v2); + } + else + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + return a1; +} + +//----- (004D4EC0) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) +{ + int v2; // eax + + if ( Str ) + { + v2 = strlen(Str); + std::__ostream_insert>(a1, (int)Str, v2); + } + else + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + return a1; +} + +//----- (004D4F20) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char *Str) +{ + int v2; // eax + + if ( Str ) + { + v2 = strlen(Str); + std::__ostream_insert>(a1, (int)Str, v2); + } + else + { + std::ios::clear( + (std::ostream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 1); + } + return a1; +} + +//----- (004D4F80) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) +{ + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + LOBYTE(v3[0]) = a2; + return std::__ostream_insert>(a1, (int)v3, 1); +} +// 4D4F80: using guessed type int var_D[3]; + +//----- (004D4FB0) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) +{ + int v3[4]; // [esp+1Ch] [ebp-10h] BYREF + + LOBYTE(v3[0]) = a2; + return std::__ostream_insert>(a1, (int)v3, 1); +} +// 4D4FB0: using guessed type int var_10[4]; + +//----- (004D4FE0) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<>(std::ostream::sentry *a1, char a2) +{ + int v3[3]; // [esp+1Fh] [ebp-Dh] BYREF + + LOBYTE(v3[0]) = a2; + return std::__ostream_insert>(a1, (int)v3, 1); +} +// 4D4FE0: using guessed type int var_D[3]; + +//----- (004D5010) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; + return result; +} + +//----- (004D5030) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; + return result; +} + +//----- (004D5050) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; + return result; +} + +//----- (004D5070) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; + return result; +} + +//----- (004D5090) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + int v2; // ecx + + v2 = 64; + if ( a2 != 8 ) + { + v2 = 2; + if ( a2 != 10 ) + v2 = 8 * (a2 == 16); + } + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; + return a1; +} + +//----- (004D50D0) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, char a2) +{ + char *v2; // esi + _BYTE *v4; // edi + int (__stdcall *v5)(unsigned __int8); // eax + + v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !v2[117] ) + { + v4 = (_BYTE *)*((_DWORD *)v2 + 31); + if ( !v4 ) + std::__throw_bad_cast(); + if ( !v4[28] ) + { + std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); + v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); + if ( v5 != std::ctype::do_widen ) + ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); + } + v2[117] = 1; + } + v2[116] = a2; + return a1; +} + +//----- (004D5140) -------------------------------------------------------- +std::ostream::sentry *__cdecl std::operator<<(std::ostream::sentry *a1, int *a2) +{ + return std::__ostream_insert>(a1, *a2, a2[1]); +} + +//----- (004D5170) -------------------------------------------------------- +int *__cdecl std::operator<<>(int *a1, wchar_t *String) +{ + int v2; // eax + + if ( String ) + { + v2 = wcslen(String); + std::__ostream_insert>(a1, (int)String, v2); + } + else + { + std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + } + return a1; +} + +//----- (004D51D0) -------------------------------------------------------- +int *__cdecl std::operator<<>(int *a1, char *Str) +{ + char *v2; // ebx + size_t v3; // eax + _WORD *v4; // esi + int v5; // ecx + int v7; // [esp+14h] [ebp-24h] + _WORD *v8; // [esp+18h] [ebp-20h] + + v2 = Str; + if ( Str ) + { + v3 = strlen(Str); + if ( v3 > 0x3FFFFFFE ) + __cxa_throw_bad_array_new_length(); + v7 = v3; + v8 = (_WORD *)operator new[](2 * v3); + v4 = v8; + if ( v7 ) + { + do + { + v5 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); + if ( !v5 ) + std::__throw_bad_cast(); + *v4++ = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v5 + 40))(v5, *v2++); + } + while ( &Str[v7] != v2 ); + } + std::__ostream_insert>(a1, (int)v8, v7); + operator delete[](v8); + return a1; + } + else + { + std::wios::clear((int *)((char *)a1 + *(_DWORD *)(*a1 - 12)), *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 1); + return a1; + } +} + +//----- (004D5330) -------------------------------------------------------- +int *__cdecl std::operator<<>(int *a1, __int16 a2) +{ + __int16 v3[8]; // [esp+1Ch] [ebp-10h] BYREF + + v3[0] = a2; + return std::__ostream_insert>(a1, (int)v3, 1); +} +// 4D5330: using guessed type __int16 var_10[8]; + +//----- (004D5360) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; + return result; +} + +//----- (004D5380) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; + return result; +} + +//----- (004D53A0) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; + return result; +} + +//----- (004D53C0) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; + return result; +} + +//----- (004D53E0) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, int a2) +{ + int v2; // ecx + + v2 = 64; + if ( a2 != 8 ) + { + v2 = 2; + if ( a2 != 10 ) + v2 = 8 * (a2 == 16); + } + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; + return a1; +} + +//----- (004D5420) -------------------------------------------------------- +_DWORD *__cdecl std::operator<<>(_DWORD *a1, __int16 a2) +{ + char *v2; // esi + int v4; // ecx + + v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !v2[118] ) + { + v4 = *((_DWORD *)v2 + 31); + if ( !v4 ) + std::__throw_bad_cast(); + (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); + v2[118] = 1; + } + *((_WORD *)v2 + 58) = a2; + return a1; +} + +//----- (004D5480) -------------------------------------------------------- +int *__cdecl std::operator<<>(int *a1, char a2) +{ + int v2; // ecx + __int16 v4[7]; // [esp+22h] [ebp-Eh] BYREF + + v2 = *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 124); + if ( !v2 ) + std::__throw_bad_cast(); + v4[0] = (*(int (__thiscall **)(int, _DWORD))(*(_DWORD *)v2 + 40))(v2, a2); + return std::__ostream_insert>(a1, (int)v4, 1); +} +// 4D5480: using guessed type __int16 var_E[7]; + +//----- (004D54D0) -------------------------------------------------------- +unsigned int __cdecl std::operator<(int a1, int a2) +{ + return (unsigned int)std::string::compare(a1, a2) >> 31; +} + +//----- (004D54EC) -------------------------------------------------------- +int __cdecl std::operator+(int a1, char *a2, int a3) +{ + unsigned int v3; // kr04_4 + + v3 = strlen(a2) + 1; + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + std::string::reserve((_DWORD *)a1, v3 - 1 + *(_DWORD *)(a3 + 4)); + std::string::append((_DWORD *)a1, a2, v3 - 1); + std::string::append((_DWORD *)a1, a3); + return a1; +} + +//----- (004D5570) -------------------------------------------------------- +_DWORD *__cdecl std::operator+(_DWORD *a1, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-20h] + + *a1 = a1 + 2; + LOBYTE(v4) = 0; + std::string::_M_construct(a1, *(_BYTE **)a2, *(_DWORD *)a2 + *(_DWORD *)(a2 + 4), v4); + std::string::_M_append(a1, *(_BYTE **)a3, *(_DWORD *)(a3 + 4)); + return a1; +} +// 4D559C: variable 'v4' is possibly undefined + +//----- (004D55E0) -------------------------------------------------------- +int __cdecl std::operator+(int a1, char a2, int a3) +{ + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_BYTE *)(a1 + 8) = 0; + std::string::reserve((_DWORD *)a1, *(_DWORD *)(a3 + 4) + 1); + std::string::_M_replace_aux((_DWORD *)a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); + std::string::_M_append((_DWORD *)a1, *(_BYTE **)a3, *(_DWORD *)(a3 + 4)); + return a1; +} + +//----- (004D5680) -------------------------------------------------------- +unsigned int **__cdecl std::operator+(unsigned int **a1, char *Str, std::string *a3) +{ + size_t v3; // eax + size_t v4; // esi + unsigned int v6; // [esp+4h] [ebp-24h] + const std::string *v7; // [esp+4h] [ebp-24h] + unsigned int v8; // [esp+8h] [ebp-20h] + + v3 = strlen(Str); + *a1 = (unsigned int *)&unk_4E93FC; + v4 = v3; + std::string::reserve(a1, (std::string *)(v3 + *(_DWORD *)(*(_DWORD *)a3 - 12)), v6); + std::string::append(a1, (std::string *)Str, v4, v8); + std::string::append(a1, a3, v7); + return a1; +} +// 4D56AE: variable 'v6' is possibly undefined +// 4D56C2: variable 'v8' is possibly undefined +// 4D56CF: variable 'v7' is possibly undefined + +//----- (004D5700) -------------------------------------------------------- +unsigned int **__cdecl std::operator+(unsigned int **a1, unsigned int **a2, std::string *a3) +{ + unsigned int *v3; // eax + unsigned int *v4; // ecx + const std::string *v6; // [esp+4h] [ebp-24h] + char v7[9]; // [esp+1Fh] [ebp-9h] BYREF + + v3 = *a2; + v4 = *a2 - 3; + if ( (*(*a2 - 1) & 0x80000000) != 0 ) + { + v3 = std::string::_Rep::_M_clone((int)v4, (int)v7, 0); + } + else if ( v4 != &std::string::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd((volatile signed __int32 *)v3 - 1, 1u); + else + ++*(v3 - 1); + } + *a1 = v3; + std::string::append(a1, a3, v6); + return a1; +} +// 4D572C: variable 'v6' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; +// 4D5700: using guessed type char var_9[9]; + +//----- (004D57A0) -------------------------------------------------------- +unsigned int **__cdecl std::operator+(unsigned int **a1, char a2, std::string *a3) +{ + unsigned int v4; // [esp+4h] [ebp-24h] + const std::string *v5; // [esp+4h] [ebp-24h] + + *a1 = (unsigned int *)&unk_4E93FC; + std::string::reserve(a1, (std::string *)(*(_DWORD *)(*(_DWORD *)a3 - 12) + 1), v4); + std::string::append(a1, 1u, a2); + std::string::append(a1, a3, v5); + return a1; +} +// 4D57C5: variable 'v4' is possibly undefined +// 4D57EC: variable 'v5' is possibly undefined + +//----- (004D5820) -------------------------------------------------------- +int __cdecl std::operator+(int a1, wchar_t *String, int a3) +{ + size_t v3; // eax + size_t v4; // esi + + v3 = wcslen(String); + *(_DWORD *)(a1 + 4) = 0; + v4 = v3; + *(_DWORD *)a1 = a1 + 8; + *(_WORD *)(a1 + 8) = 0; + std::wstring::reserve(a1, v3 + *(_DWORD *)(a3 + 4)); + if ( v4 > 0x1FFFFFFF - *(_DWORD *)(a1 + 4) ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::wstring::_M_append(a1, String, v4); + std::wstring::_M_append(a1, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); + return a1; +} + +//----- (004D58D0) -------------------------------------------------------- +wchar_t **__cdecl std::operator+(wchar_t **a1, int a2, int a3) +{ + int v4; // [esp+8h] [ebp-20h] + + *a1 = (wchar_t *)(a1 + 2); + LOBYTE(v4) = 0; + std::wstring::_M_construct(a1, *(wchar_t **)a2, *(_DWORD *)a2 + 2 * *(_DWORD *)(a2 + 4), v4); + std::wstring::_M_append((int)a1, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); + return a1; +} +// 4D58FD: variable 'v4' is possibly undefined + +//----- (004D5940) -------------------------------------------------------- +int __cdecl std::operator+(int a1, wchar_t a2, int a3) +{ + *(_DWORD *)(a1 + 4) = 0; + *(_DWORD *)a1 = a1 + 8; + *(_WORD *)(a1 + 8) = 0; + std::wstring::reserve(a1, *(_DWORD *)(a3 + 4) + 1); + std::wstring::_M_replace_aux(a1, *(_DWORD *)(a1 + 4), 0, 1u, a2); + std::wstring::_M_append(a1, *(wchar_t **)a3, *(_DWORD *)(a3 + 4)); + return a1; +} + +//----- (004D59E0) -------------------------------------------------------- +void **__cdecl std::operator+(void **a1, wchar_t *String, const wchar_t **a3) +{ + size_t v3; // eax + size_t v4; // esi + + v3 = wcslen(String); + *a1 = &unk_4E93EC; + v4 = v3; + std::wstring::reserve(a1, (char *)(v3 + *((_DWORD *)*a3 - 3))); + std::wstring::append(a1, String, v4); + std::wstring::append(a1, a3); + return a1; +} + +//----- (004D5A60) -------------------------------------------------------- +void **__cdecl std::operator+(void **a1, _DWORD *a2, const wchar_t **a3) +{ + _DWORD *v3; // eax + void *v4; // ecx + char v6[9]; // [esp+1Fh] [ebp-9h] BYREF + + v3 = (_DWORD *)*a2; + v4 = (void *)(*a2 - 12); + if ( *(int *)(*a2 - 4) < 0 ) + { + v3 = std::wstring::_Rep::_M_clone((int)v4, (int)v6, 0); + } + else if ( v4 != &std::wstring::_Rep::_S_empty_rep_storage ) + { + if ( _CRT_MT ) + _InterlockedAdd(v3 - 1, 1u); + else + ++*(v3 - 1); + } + *a1 = v3; + std::wstring::append(a1, a3); + return a1; +} +// 15412D0: using guessed type int _CRT_MT; +// 4D5A60: using guessed type char var_9[9]; + +//----- (004D5B00) -------------------------------------------------------- +void **__cdecl std::operator+(void **a1, wchar_t a2, const wchar_t **a3) +{ + *a1 = &unk_4E93EC; + std::wstring::reserve(a1, (char *)(*((_DWORD *)*a3 - 3) + 1)); + std::wstring::append(a1, 1u, a2); + std::wstring::append(a1, a3); + return a1; +} + +//----- (004D5BC0) -------------------------------------------------------- +std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, char *a2) +{ + char *v2; // eax + _DWORD *v3; // ebx + _BYTE *v4; // eax + int v5; // edi + int v6; // ecx + char *v7; // esi + int v8; // edx + unsigned int v9; // edx + int v11; // edx + int v12; // eax + unsigned int v13; // eax + _BYTE *v14; // esi + unsigned int v15; // edx + int v16; // ebp + size_t v17; // edx + const std::locale *Src; // [esp+4h] [ebp-58h] + bool Size; // [esp+8h] [ebp-54h] + unsigned int v20; // [esp+1Ch] [ebp-40h] + unsigned int v21; // [esp+1Ch] [ebp-40h] + int v22; // [esp+20h] [ebp-3Ch] + _DWORD *v23; // [esp+24h] [ebp-38h] + int v24; // [esp+28h] [ebp-34h] + size_t v25; // [esp+2Ch] [ebp-30h] + char v26; // [esp+3Bh] [ebp-21h] BYREF + _DWORD *v27[8]; // [esp+3Ch] [ebp-20h] BYREF + + std::istream::sentry::sentry(&v26, a1, 0, Size); + if ( !v26 ) + { + v11 = *(_DWORD *)a1; + v12 = 4; + goto LABEL_22; + } + v2 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); + v22 = *((_DWORD *)v2 + 2); + if ( v22 <= 0 ) + v22 = 0x7FFFFFFF; + std::locale::locale((volatile signed __int32 **)v27, (volatile signed __int32 **)v2 + 27, Src); + v23 = std::use_facet>((int)v27); + std::locale::~locale(v27); + v3 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v4 = (_BYTE *)v3[2]; + if ( v3[3] <= (unsigned int)v4 ) + { + v4 = (_BYTE *)(*(int (__fastcall **)(_DWORD))(*v3 + 36))(*(_DWORD *)((char *)a1 + + *(_DWORD *)(*(_DWORD *)a1 - 12) + + 120)); + v24 = v22 - 1; + if ( v22 == 1 ) + { + if ( v4 != (_BYTE *)-1 ) + goto LABEL_41; + } + else if ( v4 != (_BYTE *)-1 ) + { + goto LABEL_6; + } + *a2 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v12 = 6; + goto LABEL_22; + } + LOBYTE(v4) = *v4; + v24 = v22 - 1; + if ( v22 == 1 ) + { +LABEL_41: + *a2 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v12 = 4; + goto LABEL_22; + } +LABEL_6: + v5 = 0; + do + { + while ( 1 ) + { + v6 = v23[6]; + if ( (*(_BYTE *)(v6 + 2 * (unsigned __int8)v4) & 0x20) != 0 ) + { + *a2 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + if ( !v5 ) + { + v12 = 4; + goto LABEL_22; + } + return a1; + } + v7 = (char *)v3[2]; + v20 = v3[3]; + v8 = v22 - v5 - 1; + if ( v8 > (int)(v20 - (_DWORD)v7) ) + v8 = v20 - (_DWORD)v7; + if ( v8 <= 1 ) + break; + v9 = (unsigned int)&v7[v8]; + v4 = v7 + 1; + if ( v9 <= (unsigned int)(v7 + 1) ) + { + v16 = 1; + v17 = 1; +LABEL_27: + v5 += v16; + v25 = v17; + memcpy(a2, v7, v17); + a2 += v25; + v21 = v3[3]; + v4 = (_BYTE *)(v25 + v3[2]); + v3[2] = v4; + if ( v21 <= (unsigned int)v4 ) + { +LABEL_28: + v4 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + goto LABEL_29; + } + goto LABEL_17; + } + do + { + if ( (*(_BYTE *)(v6 + 2 * (unsigned __int8)*v4) & 0x20) != 0 ) + break; + ++v4; + } + while ( v9 > (unsigned int)v4 ); + v16 = v4 - v7; + v17 = v4 - v7; + if ( v4 != v7 ) + goto LABEL_27; + a2 += v17; + v5 += v16; + v3[2] = v4; + if ( v20 <= (unsigned int)v4 ) + goto LABEL_28; +LABEL_17: + LOBYTE(v4) = *v4; +LABEL_18: + if ( v5 >= v24 ) + goto LABEL_19; + } + ++v5; + *a2 = (char)v4; + v13 = v3[2]; + v14 = a2 + 1; + v15 = v3[3]; + if ( v13 >= v15 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v3 + 40))(v3) == -1 ) + goto LABEL_33; + v4 = (_BYTE *)v3[2]; + v15 = v3[3]; + } + else + { + v4 = (_BYTE *)(v13 + 1); + v3[2] = v4; + } + if ( (unsigned int)v4 < v15 ) + { + ++a2; + LOBYTE(v4) = *v4; + goto LABEL_18; + } + v4 = (_BYTE *)(*(int (__fastcall **)(_DWORD *))(*v3 + 36))(v3); + ++a2; +LABEL_29: + if ( v5 >= v24 ) + { + if ( v4 == (_BYTE *)-1 ) + { + *a2 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v12 = 2; + goto LABEL_22; + } +LABEL_19: + *a2 = 0; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + return a1; + } + } + while ( v4 != (_BYTE *)-1 ); + v14 = a2; +LABEL_33: + *v14 = 0; + v11 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v12 = v5 == 0 ? 6 : 2; +LABEL_22: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v11 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(v11 - 12) + 20) | v12); + return a1; +} +// 4D5F23: control flows out of bounds to 4DB522 +// 4D5BDA: variable 'Size' is possibly undefined +// 4D5C17: variable 'Src' is possibly undefined +// 4DB520: using guessed type int std::operator>>>(void); + +//----- (004D5F40) -------------------------------------------------------- +std::istream::sentry *__cdecl std::operator>>>(std::istream::sentry *a1, _BYTE *a2) +{ + _DWORD *v2; // ecx + char *v3; // eax + char v4; // dl + int v6; // eax + bool v7; // [esp+8h] [ebp-24h] + char v8[13]; // [esp+1Fh] [ebp-Dh] BYREF + + std::istream::sentry::sentry(v8, a1, 0, v7); + if ( !v8[0] ) + return a1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v3 = (char *)v2[2]; + if ( v2[3] > (unsigned int)v3 ) + { + v4 = *v3; + v2[2] = v3 + 1; +LABEL_4: + *a2 = v4; + return a1; + } + v6 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + if ( v6 != -1 ) + { + v4 = v6; + goto LABEL_4; + } + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 20) | 6); + return a1; +} +// 4D5F57: variable 'v7' is possibly undefined +// 4D5F40: using guessed type char var_D[13]; + +//----- (004D6030) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; + return result; +} + +//----- (004D6050) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; + return result; +} + +//----- (004D6070) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; + return result; +} + +//----- (004D6090) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; + return result; +} + +//----- (004D60B0) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + int v2; // ecx + + v2 = 64; + if ( a2 != 8 ) + { + v2 = 2; + if ( a2 != 10 ) + v2 = 8 * (a2 == 16); + } + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; + return a1; +} + +//----- (004D60F0) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, char a2) +{ + char *v2; // esi + _BYTE *v4; // edi + int (__stdcall *v5)(unsigned __int8); // eax + + v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !v2[117] ) + { + v4 = (_BYTE *)*((_DWORD *)v2 + 31); + if ( !v4 ) + std::__throw_bad_cast(); + if ( !v4[28] ) + { + std::ctype::_M_widen_init(*((_DWORD *)v2 + 31)); + v5 = *(int (__stdcall **)(unsigned __int8))(*(_DWORD *)v4 + 24); + if ( v5 != std::ctype::do_widen ) + ((void (__thiscall *)(_BYTE *, int))v5)(v4, 32); + } + v2[117] = 1; + } + v2[116] = a2; + return a1; +} + +//----- (004D6160) -------------------------------------------------------- +std::istream::sentry *__cdecl std::operator>>(std::istream::sentry *a1, _DWORD *a2) +{ + int v2; // edx + int v3; // eax + _BYTE *v5; // eax + char *v6; // eax + _DWORD *v7; // esi + unsigned __int8 *v8; // eax + int v9; // ebx + _BYTE *v10; // ecx + int v11; // edx + unsigned int v12; // edx + unsigned __int8 *v13; // eax + size_t v14; // ebx + unsigned __int8 *v15; // eax + _BYTE *v16; // eax + unsigned int v17; // edx + unsigned int v18; // eax + unsigned int v19; // edx + const std::locale *v20; // [esp+4h] [ebp-54h] + bool v21; // [esp+8h] [ebp-50h] + _DWORD *v22; // [esp+1Ch] [ebp-3Ch] + int v23; // [esp+20h] [ebp-38h] + unsigned int v24; // [esp+20h] [ebp-38h] + int v25; // [esp+24h] [ebp-34h] + size_t v26; // [esp+28h] [ebp-30h] + unsigned int v27; // [esp+2Ch] [ebp-2Ch] + char v28; // [esp+3Bh] [ebp-1Dh] BYREF + _DWORD *v29[7]; // [esp+3Ch] [ebp-1Ch] BYREF + + std::istream::sentry::sentry(&v28, a1, 0, v21); + if ( !v28 ) + { + v2 = *(_DWORD *)a1; + v3 = 4; + goto LABEL_3; + } + v5 = (_BYTE *)*a2; + a2[1] = 0; + *v5 = 0; + v6 = (char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12); + v25 = *((_DWORD *)v6 + 2); + if ( v25 <= 0 ) + v25 = 0x3FFFFFFF; + std::locale::locale((volatile signed __int32 **)v29, (volatile signed __int32 **)v6 + 27, v20); + v22 = std::use_facet>((int)v29); + std::locale::~locale(v29); + v7 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120); + v8 = (unsigned __int8 *)v7[2]; + if ( v7[3] <= (unsigned int)v8 ) + v9 = (*(int (__fastcall **)(_DWORD))(*v7 + 36))(*(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 120)); + else + v9 = *v8; + v27 = 0; + while ( 1 ) + { + if ( v9 == -1 ) + { + v2 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + v3 = v27 == 0 ? 6 : 2; + goto LABEL_3; + } + v23 = v22[6]; + if ( (*(_BYTE *)(v23 + 2 * (unsigned __int8)v9) & 0x20) != 0 ) + break; + v10 = (_BYTE *)v7[2]; + v11 = v7[3] - (_DWORD)v10; + if ( v11 > (int)(v25 - v27) ) + v11 = v25 - v27; + v26 = a2[1]; + if ( v11 <= 1 ) + { + v24 = v26 + 1; + v16 = (_BYTE *)*a2; + if ( (_DWORD *)*a2 == a2 + 2 ) + v17 = 15; + else + v17 = a2[2]; + if ( v24 > v17 ) + { + std::string::_M_mutate((int)a2, v26, 0, 0, 1u); + v16 = (_BYTE *)*a2; + } + ++v27; + v16[v26] = v9; + a2[1] = v24; + *(_BYTE *)(*a2 + v26 + 1) = 0; + v18 = v7[2]; + v19 = v7[3]; + if ( v18 >= v19 ) + { + if ( (*(int (__fastcall **)(_DWORD *))(*v7 + 40))(v7) == -1 ) + { + v2 = *(_DWORD *)a1; +LABEL_37: + *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 8) = 0; + v3 = 2; + goto LABEL_3; + } + v15 = (unsigned __int8 *)v7[2]; + v19 = v7[3]; + } + else + { + v15 = (unsigned __int8 *)(v18 + 1); + v7[2] = v15; + } + if ( (unsigned int)v15 >= v19 ) + { +LABEL_33: + v9 = (*(int (__fastcall **)(_DWORD *))(*v7 + 36))(v7); + goto LABEL_23; + } + } + else + { + v12 = (unsigned int)&v10[v11]; + v13 = v10 + 1; + if ( v12 <= (unsigned int)(v10 + 1) ) + { + v14 = 1; + } + else + { + do + { + if ( (*(_BYTE *)(v23 + 2 * *v13) & 0x20) != 0 ) + break; + ++v13; + } + while ( v12 > (unsigned int)v13 ); + v14 = v13 - v10; + } + if ( 0x3FFFFFFF - v26 < v14 ) + std::__throw_length_error((std::length_error *)"basic_string::append"); + std::string::_M_append(a2, v10, v14); + v27 += v14; + v15 = (unsigned __int8 *)(v14 + v7[2]); + v7[2] = v15; + if ( v7[3] <= (unsigned int)v15 ) + goto LABEL_33; + } + v9 = *v15; +LABEL_23: + if ( v27 >= v25 ) + { + v2 = *(_DWORD *)a1; + if ( v9 != -1 ) + { + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + return a1; + } + goto LABEL_37; + } + } + v2 = *(_DWORD *)a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*(_DWORD *)a1 - 12) + 8) = 0; + if ( v27 ) + return a1; + v3 = 4; +LABEL_3: + std::ios::clear( + (std::istream::sentry *)((char *)a1 + *(_DWORD *)(v2 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(v2 - 12) + 20) | v3); + return a1; +} +// 4D645C: control flows out of bounds to 4DB28A +// 4D6461: control flows out of bounds to 4DB2B1 +// 4D617D: variable 'v21' is possibly undefined +// 4D61EA: variable 'v20' is possibly undefined + +//----- (004D6470) -------------------------------------------------------- +int *__cdecl std::operator>>>(int *a1, _WORD *a2) +{ + _WORD *v2; // esi + int v3; // eax + char *v4; // eax + _DWORD *v5; // ebx + unsigned __int16 *v6; // eax + unsigned __int16 v7; // di + int v8; // eax + __int16 v9; // ax + unsigned __int16 *v10; // eax + __int16 *v11; // edx + int v12; // edx + char *v13; // edx + char *v15; // edx + char *v16; // edx + const std::locale *v17; // [esp+4h] [ebp-44h] + _WORD *v18; // [esp+14h] [ebp-34h] + void *v19; // [esp+18h] [ebp-30h] + int v20; // [esp+1Ch] [ebp-2Ch] + int v21; // [esp+1Ch] [ebp-2Ch] + char v22; // [esp+2Bh] [ebp-1Dh] BYREF + _DWORD *v23[7]; // [esp+2Ch] [ebp-1Ch] BYREF + + v2 = a2; + std::wistream::sentry::sentry(&v22, a1, 0); + v3 = *a1; + if ( !v22 ) + { +LABEL_18: + v12 = 4; + goto LABEL_19; + } + v4 = (char *)a1 + *(_DWORD *)(v3 - 12); + v20 = *((_DWORD *)v4 + 2); + if ( v20 <= 0 ) + v20 = 0x7FFFFFFF; + std::locale::locale((volatile signed __int32 **)v23, (volatile signed __int32 **)v4 + 27, v17); + v19 = std::use_facet>((int)v23); + std::locale::~locale(v23); + v5 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v6 = (unsigned __int16 *)v5[2]; + if ( v5[3] <= (unsigned int)v6 ) + v7 = (*(int (__fastcall **)(_DWORD))(*v5 + 36))(*(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120)); + else + v7 = *v6; + if ( v20 == 1 ) + { + v3 = *a1; + v16 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *a2 = 0; + *((_DWORD *)v16 + 2) = 0; + if ( v7 == 0xFFFF ) + { + v12 = 6; + goto LABEL_19; + } + goto LABEL_18; + } + if ( v7 == 0xFFFF ) + { + *a2 = 0; + v3 = *a1; + *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; + v12 = 6; + goto LABEL_19; + } + v8 = (int)&a2[v20 - 1]; + v21 = 0; + v18 = (_WORD *)v8; + while ( 1 ) + { + if ( (*(unsigned __int8 (__stdcall **)(int, _DWORD))(*(_DWORD *)v19 + 8))(32, v7) ) + { + v3 = *a1; + v13 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *v2 = 0; + *((_DWORD *)v13 + 2) = 0; + if ( v21 ) + return a1; + goto LABEL_18; + } + ++v2; + ++v21; + v11 = (__int16 *)v5[2]; + *(v2 - 1) = v7; + if ( (unsigned int)v11 < v5[3] ) + { + v9 = *v11; + v5[2] = v11 + 1; + if ( v9 == -1 ) + goto LABEL_16; + } + else if ( (*(unsigned __int16 (__fastcall **)(_DWORD *))(*v5 + 40))(v5) == 0xFFFF ) + { +LABEL_16: + *v2 = 0; + v3 = *a1; + *(int *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = 0; + v12 = 2; + goto LABEL_19; + } + v10 = (unsigned __int16 *)v5[2]; + if ( (unsigned int)v10 < v5[3] ) + { + v7 = *v10; + if ( v2 == v18 ) + break; + goto LABEL_12; + } + v7 = (*(int (__fastcall **)(_DWORD *))(*v5 + 36))(v5); + if ( v2 == v18 ) + break; +LABEL_12: + if ( v7 == 0xFFFF ) + goto LABEL_16; + } + v3 = *a1; + v15 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *v2 = 0; + *((_DWORD *)v15 + 2) = 0; + if ( v7 != 0xFFFF ) + return a1; + v12 = 2; +LABEL_19: + std::wios::clear((int *)((char *)a1 + *(_DWORD *)(v3 - 12)), *(int *)((char *)a1 + *(_DWORD *)(v3 - 12) + 20) | v12); + return a1; +} +// 4D64C5: variable 'v17' is possibly undefined + +//----- (004D6760) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, _WORD *a2) +{ + _DWORD *v2; // ecx + __int16 *v3; // edx + __int16 v4; // ax + char v6[13]; // [esp+1Fh] [ebp-Dh] BYREF + + std::wistream::sentry::sentry(v6, a1, 0); + if ( !v6[0] ) + return a1; + v2 = *(_DWORD **)((char *)a1 + *(_DWORD *)(*a1 - 12) + 120); + v3 = (__int16 *)v2[2]; + if ( v2[3] <= (unsigned int)v3 ) + { + v4 = (*(int (__fastcall **)(_DWORD *))(*v2 + 40))(v2); + } + else + { + v4 = *v3; + v2[2] = v3 + 1; + } + if ( v4 != -1 ) + { + *a2 = v4; + return a1; + } + std::wios::clear( + (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)), + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 20) | 6); + return a1; +} +// 4D6760: using guessed type char var_D[13]; + +//----- (004D6850) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) |= a2; + return result; +} + +//----- (004D6870) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 4) = a2; + return result; +} + +//----- (004D6890) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) &= ~a2; + return result; +} + +//----- (004D68B0) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + _DWORD *result; // eax + + result = a1; + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 8) = a2; + return result; +} + +//----- (004D68D0) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, int a2) +{ + int v2; // ecx + + v2 = 64; + if ( a2 != 8 ) + { + v2 = 2; + if ( a2 != 10 ) + v2 = 8 * (a2 == 16); + } + *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) = v2 | *(_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12) + 12) & 0xFFFFFFB5; + return a1; +} + +//----- (004D6910) -------------------------------------------------------- +_DWORD *__cdecl std::operator>>>(_DWORD *a1, __int16 a2) +{ + char *v2; // esi + int v4; // ecx + + v2 = (char *)a1 + *(_DWORD *)(*a1 - 12); + if ( !v2[118] ) + { + v4 = *((_DWORD *)v2 + 31); + if ( !v4 ) + std::__throw_bad_cast(); + (*(void (__thiscall **)(int, int))(*(_DWORD *)v4 + 40))(v4, 32); + v2[118] = 1; + } + *((_WORD *)v2 + 58) = a2; + return a1; +} + +//----- (004D6970) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::iostream::~iostream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 1) = &unk_4F0F68; + *(v2 - 3) = &unk_4F0F40; + *(v2 - 2) = 0; + *v2 = &off_4F6E10; + std::ios_base::~ios_base((int)v2); + operator delete((void *)(a1 - 8)); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D69B0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::iostream::~iostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &unk_4F0F68; + v1 = a1 + 1; + *(v1 - 3) = &unk_4F0F40; + *(v1 - 2) = 0; + *v1 = &off_4F6E10; + std::ios_base::~ios_base((int)v1); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D69E0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) +{ + void *v1; // esi + _DWORD *v3; // ecx + + v1 = (void *)(a1 - 8); + v3 = (_DWORD *)(a1 + 4); + *(v3 - 3) = &off_4F6114; + v3[27] = off_4F613C; + *(v3 - 1) = off_4F6128; + *v3 = &off_4F6090; + std::filebuf::close((int)v3); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F0FF4; + *(_DWORD *)(a1 - 8) = &unk_4F0FCC; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 112) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 112); + operator delete(v1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6A70) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::fstream::~fstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 3) = &off_4F6114; + v2[27] = off_4F613C; + *(v2 - 1) = off_4F6128; + *v2 = &off_4F6090; + std::filebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F0FF4; + *(_DWORD *)(a1 - 8) = &unk_4F0FCC; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 112) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 112); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6AF0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) +{ + void *v1; // esi + _DWORD *v3; // ecx + + v1 = (void *)(a1 - 8); + v3 = (_DWORD *)(a1 + 4); + *(v3 - 3) = &off_4F6150; + v3[28] = off_4F6178; + *(v3 - 1) = off_4F6164; + *v3 = &off_4F60D0; + std::wfilebuf::close((int)v3); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F1080; + *(_DWORD *)(a1 - 8) = &unk_4F101C; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 116) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 116); + operator delete(v1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D6B80) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::wfstream::~wfstream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 3) = &off_4F6150; + v2[28] = off_4F6178; + *(v2 - 1) = off_4F6164; + *v2 = &off_4F60D0; + std::wfilebuf::close((int)v2); + std::__basic_file::~__basic_file(a1 + 44); + *(_DWORD *)(a1 + 4) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F1080; + *(_DWORD *)(a1 - 8) = &unk_4F101C; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 116) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 116); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D6C00) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(int a1) +{ + _DWORD *v2; // ecx + + v2 = (_DWORD *)(a1 + 4); + *(v2 - 1) = &unk_4F1120; + *(v2 - 3) = &unk_4F10F8; + *(v2 - 2) = 0; + *v2 = &off_4F6E20; + std::ios_base::~ios_base((int)v2); + operator delete((void *)(a1 - 8)); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D6C40) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + *a1 = &unk_4F1120; + v1 = a1 + 1; + *(v1 - 3) = &unk_4F10F8; + *(v1 - 2) = 0; + *v1 = &off_4F6E20; + std::ios_base::~ios_base((int)v1); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D6C70) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v1; // esi + void *v3; // eax + + v1 = (void *)(a1 - 8); + v3 = *(void **)(a1 + 40); + *(_DWORD *)(a1 - 8) = &off_4F5B44; + *(_DWORD *)(a1 + 64) = off_4F5B6C; + *(_DWORD *)a1 = off_4F5B58; + *(_DWORD *)(a1 + 4) = &off_4F5918; + if ( v3 != (void *)(a1 + 48) ) + operator delete(v3); + *(_DWORD *)(a1 + 4) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F0DEC; + *(_DWORD *)(a1 - 8) = &unk_4F0DC4; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 64) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 64); + operator delete(v1); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6CF0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 40); + *(_DWORD *)(a1 - 8) = &off_4F5B44; + *(_DWORD *)(a1 + 64) = off_4F5B6C; + *(_DWORD *)a1 = off_4F5B58; + *(_DWORD *)(a1 + 4) = &off_4F5918; + if ( v2 != (void *)(a1 + 48) ) + operator delete(v2); + *(_DWORD *)(a1 + 4) = &off_4F6414; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F0DEC; + *(_DWORD *)(a1 - 8) = &unk_4F0DC4; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 64) = &off_4F6E10; + std::ios_base::~ios_base(a1 + 64); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6D60) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v1; // esi + void *v3; // eax + + v1 = (void *)(a1 - 8); + v3 = *(void **)(a1 + 40); + *(_DWORD *)(a1 - 8) = &off_4F5B80; + *(_DWORD *)(a1 + 64) = off_4F5BA8; + *(_DWORD *)a1 = off_4F5B94; + *(_DWORD *)(a1 + 4) = &off_4F5958; + if ( v3 != (void *)(a1 + 48) ) + operator delete(v3); + *(_DWORD *)(a1 + 4) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F0E78; + *(_DWORD *)(a1 - 8) = &unk_4F0E14; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 64) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 64); + operator delete(v1); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D6DE0) -------------------------------------------------------- +void __fastcall `non-virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + int a1) +{ + void *v2; // eax + + v2 = *(void **)(a1 + 40); + *(_DWORD *)(a1 - 8) = &off_4F5B80; + *(_DWORD *)(a1 + 64) = off_4F5BA8; + *(_DWORD *)a1 = off_4F5B94; + *(_DWORD *)(a1 + 4) = &off_4F5958; + if ( v2 != (void *)(a1 + 48) ) + operator delete(v2); + *(_DWORD *)(a1 + 4) = &off_4F6454; + std::locale::~locale((_DWORD **)(a1 + 32)); + *(_DWORD *)a1 = &unk_4F0E78; + *(_DWORD *)(a1 - 8) = &unk_4F0E14; + *(_DWORD *)(a1 - 4) = 0; + *(_DWORD *)(a1 + 64) = &off_4F6E20; + std::ios_base::~ios_base(a1 + 64); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D6E50) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v1[2] = &unk_4F0F68; + *v1 = &unk_4F0F40; + v1[1] = 0; + v1[3] = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 3)); + operator delete(v1); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6E90) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::iostream::~iostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v1[2] = &unk_4F0F68; + v1 += 3; + *(v1 - 3) = &unk_4F0F40; + *(v1 - 2) = 0; + *v1 = &off_4F6E10; + std::ios_base::~ios_base((int)v1); +} +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6EC0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_4F5E30; + v1[1] = 0; + v1[2] = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 2)); + operator delete(v1); +} +// 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6F00) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::istream::~istream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_4F5E30; + v1 += 2; + *(v1 - 1) = 0; + *v1 = &off_4F6E10; + std::ios_base::~ios_base((int)v1); +} +// 4F5E30: using guessed type void (__cdecl *off_4F5E30)(std::istream *__hidden this); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6F20) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_4F5E58; + v1[1] = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 1)); + operator delete(v1); +} +// 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6F50) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ostream::~ostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1++ = &off_4F5E58; + *v1 = &off_4F6E10; + std::ios_base::~ios_base((int)v1); +} +// 4F5E58: using guessed type void (__cdecl *off_4F5E58)(std::ostream *__hidden this); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D6F70) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F6114; + *((_DWORD *)v1 + 30) = off_4F613C; + *((_DWORD *)v1 + 2) = off_4F6128; + *((_DWORD *)v1 + 3) = &off_4F6090; + std::filebuf::close((int)(v1 + 12)); + std::__basic_file::~__basic_file(v1 + 52); + *((_DWORD *)v1 + 3) = &off_4F6414; + std::locale::~locale((_DWORD **)v1 + 10); + *((_DWORD *)v1 + 2) = &unk_4F0FF4; + *(_DWORD *)v1 = &unk_4F0FCC; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 30) = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 120)); + operator delete(v1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D7000) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::fstream::~fstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F6114; + *((_DWORD *)v1 + 30) = off_4F613C; + *((_DWORD *)v1 + 2) = off_4F6128; + *((_DWORD *)v1 + 3) = &off_4F6090; + std::filebuf::close((int)(v1 + 12)); + std::__basic_file::~__basic_file(v1 + 52); + *((_DWORD *)v1 + 3) = &off_4F6414; + std::locale::~locale((_DWORD **)v1 + 10); + *((_DWORD *)v1 + 2) = &unk_4F0FF4; + *(_DWORD *)v1 = &unk_4F0FCC; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 30) = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 120)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F6114: using guessed type int (*off_4F6114)(); +// 4F6128: using guessed type int (*off_4F6128[2])(); +// 4F613C: using guessed type int (*off_4F613C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D7080) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F6150; + *((_DWORD *)v1 + 31) = off_4F6178; + *((_DWORD *)v1 + 2) = off_4F6164; + *((_DWORD *)v1 + 3) = &off_4F60D0; + std::wfilebuf::close((int)(v1 + 12)); + std::__basic_file::~__basic_file(v1 + 52); + *((_DWORD *)v1 + 3) = &off_4F6454; + std::locale::~locale((_DWORD **)v1 + 10); + *((_DWORD *)v1 + 2) = &unk_4F1080; + *(_DWORD *)v1 = &unk_4F101C; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 31) = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 124)); + operator delete(v1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7110) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wfstream::~wfstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F6150; + *((_DWORD *)v1 + 31) = off_4F6178; + *((_DWORD *)v1 + 2) = off_4F6164; + *((_DWORD *)v1 + 3) = &off_4F60D0; + std::wfilebuf::close((int)(v1 + 12)); + std::__basic_file::~__basic_file(v1 + 52); + *((_DWORD *)v1 + 3) = &off_4F6454; + std::locale::~locale((_DWORD **)v1 + 10); + *((_DWORD *)v1 + 2) = &unk_4F1080; + *(_DWORD *)v1 = &unk_4F101C; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 31) = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 124)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6150: using guessed type int (*off_4F6150)(); +// 4F6164: using guessed type int (*off_4F6164[2])(); +// 4F6178: using guessed type int (*off_4F6178[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7190) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_4F618C; + v1[1] = 0; + v1[2] = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 2)); + operator delete(v1); +} +// 4F618C: using guessed type int (*off_4F618C)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D71D0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wistream::~wistream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_4F618C; + v1 += 2; + *(v1 - 1) = 0; + *v1 = &off_4F6E20; + std::ios_base::~ios_base((int)v1); +} +// 4F618C: using guessed type int (*off_4F618C)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D71F0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1 = &off_4F61B4; + v1[1] = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 1)); + operator delete(v1); +} +// 4F61B4: using guessed type int (*off_4F61B4)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7220) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wostream::~wostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + *v1++ = &off_4F61B4; + *v1 = &off_4F6E20; + std::ios_base::~ios_base((int)v1); +} +// 4F61B4: using guessed type int (*off_4F61B4)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7240) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F61F0; + *((_DWORD *)v1 + 29) = off_4F6204; + *((_DWORD *)v1 + 2) = &off_4F6090; + std::filebuf::close((int)(v1 + 8)); + std::__basic_file::~__basic_file(v1 + 48); + *((_DWORD *)v1 + 2) = &off_4F6414; + std::locale::~locale((_DWORD **)v1 + 9); + *(_DWORD *)v1 = &unk_4F10A8; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 29) = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 116)); + operator delete(v1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F61F0: using guessed type int (*off_4F61F0)(); +// 4F6204: using guessed type int (*off_4F6204[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D72C0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ifstream::~ifstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F61F0; + *((_DWORD *)v1 + 29) = off_4F6204; + *((_DWORD *)v1 + 2) = &off_4F6090; + std::filebuf::close((int)(v1 + 8)); + std::__basic_file::~__basic_file(v1 + 48); + *((_DWORD *)v1 + 2) = &off_4F6414; + std::locale::~locale((_DWORD **)v1 + 9); + *(_DWORD *)v1 = &unk_4F10A8; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 29) = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 116)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F61F0: using guessed type int (*off_4F61F0)(); +// 4F6204: using guessed type int (*off_4F6204[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D7330) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F6218; + *((_DWORD *)v1 + 30) = off_4F622C; + *((_DWORD *)v1 + 2) = &off_4F60D0; + std::wfilebuf::close((int)(v1 + 8)); + std::__basic_file::~__basic_file(v1 + 48); + *((_DWORD *)v1 + 2) = &off_4F6454; + std::locale::~locale((_DWORD **)v1 + 9); + *(_DWORD *)v1 = &unk_4F10D0; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 30) = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 120)); + operator delete(v1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6218: using guessed type int (*off_4F6218)(); +// 4F622C: using guessed type int (*off_4F622C[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D73B0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wifstream::~wifstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F6218; + *((_DWORD *)v1 + 30) = off_4F622C; + *((_DWORD *)v1 + 2) = &off_4F60D0; + std::wfilebuf::close((int)(v1 + 8)); + std::__basic_file::~__basic_file(v1 + 48); + *((_DWORD *)v1 + 2) = &off_4F6454; + std::locale::~locale((_DWORD **)v1 + 9); + *(_DWORD *)v1 = &unk_4F10D0; + *((_DWORD *)v1 + 1) = 0; + *((_DWORD *)v1 + 30) = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 120)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F6218: using guessed type int (*off_4F6218)(); +// 4F622C: using guessed type int (*off_4F622C[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7420) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) +{ + _DWORD *v1; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v1[2] = &unk_4F1120; + *v1 = &unk_4F10F8; + v1[1] = 0; + v1[3] = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 3)); + operator delete(v1); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7460) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wiostream::~basic_iostream(_DWORD *a1) +{ + _DWORD *v1; // ecx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v1[2] = &unk_4F1120; + v1 += 3; + *(v1 - 3) = &unk_4F10F8; + *(v1 - 2) = 0; + *v1 = &off_4F6E20; + std::ios_base::~ios_base((int)v1); +} +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7490) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F627C; + *((_DWORD *)v1 + 28) = off_4F6290; + *((_DWORD *)v1 + 1) = &off_4F6090; + std::filebuf::close((int)(v1 + 4)); + std::__basic_file::~__basic_file(v1 + 44); + *((_DWORD *)v1 + 1) = &off_4F6414; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_4F1148; + *((_DWORD *)v1 + 28) = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 112)); + operator delete(v1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F627C: using guessed type int (*off_4F627C)(); +// 4F6290: using guessed type int (*off_4F6290[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D7500) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ofstream::~ofstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F627C; + *((_DWORD *)v1 + 28) = off_4F6290; + *((_DWORD *)v1 + 1) = &off_4F6090; + std::filebuf::close((int)(v1 + 4)); + std::__basic_file::~__basic_file(v1 + 44); + *((_DWORD *)v1 + 1) = &off_4F6414; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_4F1148; + *((_DWORD *)v1 + 28) = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 112)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F6090: using guessed type int (*off_4F6090)(); +// 4F627C: using guessed type int (*off_4F627C)(); +// 4F6290: using guessed type int (*off_4F6290[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D7570) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F62A4; + *((_DWORD *)v1 + 29) = off_4F62B8; + *((_DWORD *)v1 + 1) = &off_4F60D0; + std::wfilebuf::close((int)(v1 + 4)); + std::__basic_file::~__basic_file(v1 + 44); + *((_DWORD *)v1 + 1) = &off_4F6454; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_4F1170; + *((_DWORD *)v1 + 29) = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 116)); + operator delete(v1); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F62A4: using guessed type int (*off_4F62A4)(); +// 4F62B8: using guessed type int (*off_4F62B8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D75E0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wofstream::~wofstream(_DWORD *a1) +{ + char *v1; // ebx + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + *(_DWORD *)v1 = &off_4F62A4; + *((_DWORD *)v1 + 29) = off_4F62B8; + *((_DWORD *)v1 + 1) = &off_4F60D0; + std::wfilebuf::close((int)(v1 + 4)); + std::__basic_file::~__basic_file(v1 + 44); + *((_DWORD *)v1 + 1) = &off_4F6454; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_4F1170; + *((_DWORD *)v1 + 29) = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 116)); +} +// 4935C0: using guessed type int __fastcall std::__basic_file::~__basic_file(_DWORD); +// 4F60D0: using guessed type int (*off_4F60D0)(); +// 4F62A4: using guessed type int (*off_4F62A4)(); +// 4F62B8: using guessed type int (*off_4F62B8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7650) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[12]; + *v1 = &off_4F5B44; + v3 = v1; + v1[18] = off_4F5B6C; + v1[2] = off_4F5B58; + v1[3] = &off_4F5918; + if ( v2 != v1 + 14 ) + operator delete(v2); + v3[3] = &off_4F6414; + std::locale::~locale((_DWORD **)v3 + 10); + v3[2] = &unk_4F0DEC; + *v3 = &unk_4F0DC4; + v3[1] = 0; + v3[18] = &off_4F6E10; + std::ios_base::~ios_base((int)(v3 + 18)); + operator delete(v3); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D76D0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[12]; + *v1 = &off_4F5B44; + v3 = v1; + v1[18] = off_4F5B6C; + v1[2] = off_4F5B58; + v1[3] = &off_4F5918; + if ( v2 != v1 + 14 ) + operator delete(v2); + v3[3] = &off_4F6414; + std::locale::~locale((_DWORD **)v3 + 10); + v3[2] = &unk_4F0DEC; + *v3 = &unk_4F0DC4; + v3[1] = 0; + v3[18] = &off_4F6E10; + std::ios_base::~ios_base((int)(v3 + 18)); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5B44: using guessed type int (*off_4F5B44)(); +// 4F5B58: using guessed type int (*off_4F5B58[2])(); +// 4F5B6C: using guessed type int (*off_4F5B6C[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D7740) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[12]; + *v1 = &off_4F5B80; + v3 = v1; + v1[18] = off_4F5BA8; + v1[2] = off_4F5B94; + v1[3] = &off_4F5958; + if ( v2 != v1 + 14 ) + operator delete(v2); + v3[3] = &off_4F6454; + std::locale::~locale((_DWORD **)v3 + 10); + v3[2] = &unk_4F0E78; + *v3 = &unk_4F0E14; + v3[1] = 0; + v3[18] = &off_4F6E20; + std::ios_base::~ios_base((int)(v3 + 18)); + operator delete(v3); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D77C0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::basic_stringstream,std::allocator>::~basic_stringstream( + _DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[12]; + *v1 = &off_4F5B80; + v3 = v1; + v1[18] = off_4F5BA8; + v1[2] = off_4F5B94; + v1[3] = &off_4F5958; + if ( v2 != v1 + 14 ) + operator delete(v2); + v3[3] = &off_4F6454; + std::locale::~locale((_DWORD **)v3 + 10); + v3[2] = &unk_4F0E78; + *v3 = &unk_4F0E14; + v3[1] = 0; + v3[18] = &off_4F6E20; + std::ios_base::~ios_base((int)(v3 + 18)); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5B80: using guessed type int (*off_4F5B80)(); +// 4F5B94: using guessed type int (*off_4F5B94[2])(); +// 4F5BA8: using guessed type int (*off_4F5BA8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7830) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[11]; + *v1 = &off_4F5BBC; + v3 = v1; + v1[17] = off_4F5BD0; + v1[2] = &off_4F5918; + if ( v2 != v1 + 13 ) + operator delete(v2); + v3[2] = &off_4F6414; + std::locale::~locale((_DWORD **)v3 + 9); + *v3 = &unk_4F0EA0; + v3[1] = 0; + v3[17] = &off_4F6E10; + std::ios_base::~ios_base((int)(v3 + 17)); + operator delete(v3); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5BBC: using guessed type int (*off_4F5BBC)(); +// 4F5BD0: using guessed type int (*off_4F5BD0[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D78A0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::istringstream::~istringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[11]; + *v1 = &off_4F5BBC; + v3 = v1; + v1[17] = off_4F5BD0; + v1[2] = &off_4F5918; + if ( v2 != v1 + 13 ) + operator delete(v2); + v3[2] = &off_4F6414; + std::locale::~locale((_DWORD **)v3 + 9); + *v3 = &unk_4F0EA0; + v3[1] = 0; + v3[17] = &off_4F6E10; + std::ios_base::~ios_base((int)(v3 + 17)); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5BBC: using guessed type int (*off_4F5BBC)(); +// 4F5BD0: using guessed type int (*off_4F5BD0[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D7900) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[11]; + *v1 = &off_4F5BE4; + v3 = v1; + v1[17] = off_4F5BF8; + v1[2] = &off_4F5958; + if ( v2 != v1 + 13 ) + operator delete(v2); + v3[2] = &off_4F6454; + std::locale::~locale((_DWORD **)v3 + 9); + *v3 = &unk_4F0EC8; + v3[1] = 0; + v3[17] = &off_4F6E20; + std::ios_base::~ios_base((int)(v3 + 17)); + operator delete(v3); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5BE4: using guessed type int (*off_4F5BE4)(); +// 4F5BF8: using guessed type int (*off_4F5BF8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7970) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wistringstream::~wistringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[11]; + *v1 = &off_4F5BE4; + v3 = v1; + v1[17] = off_4F5BF8; + v1[2] = &off_4F5958; + if ( v2 != v1 + 13 ) + operator delete(v2); + v3[2] = &off_4F6454; + std::locale::~locale((_DWORD **)v3 + 9); + *v3 = &unk_4F0EC8; + v3[1] = 0; + v3[17] = &off_4F6E20; + std::ios_base::~ios_base((int)(v3 + 17)); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5BE4: using guessed type int (*off_4F5BE4)(); +// 4F5BF8: using guessed type int (*off_4F5BF8[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D79D0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[10]; + *v1 = &off_4F5C0C; + v3 = v1; + v1[16] = off_4F5C20; + v1[1] = &off_4F5918; + if ( v2 != v1 + 12 ) + operator delete(v2); + v3[1] = &off_4F6414; + std::locale::~locale((_DWORD **)v3 + 8); + *v3 = &unk_4F0EF0; + v3[16] = &off_4F6E10; + std::ios_base::~ios_base((int)(v3 + 16)); + operator delete(v3); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5C0C: using guessed type int (*off_4F5C0C)(); +// 4F5C20: using guessed type int (*off_4F5C20[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D7A40) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::ostringstream::~ostringstream(_DWORD *a1) +{ + char *v1; // ebx + char *v2; // eax + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v2 = (char *)*((_DWORD *)v1 + 10); + *(_DWORD *)v1 = &off_4F5C0C; + *((_DWORD *)v1 + 16) = off_4F5C20; + *((_DWORD *)v1 + 1) = &off_4F5918; + if ( v2 != v1 + 48 ) + operator delete(v2); + *((_DWORD *)v1 + 1) = &off_4F6414; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_4F0EF0; + *((_DWORD *)v1 + 16) = &off_4F6E10; + std::ios_base::~ios_base((int)(v1 + 64)); +} +// 4F5918: using guessed type int (*off_4F5918)(); +// 4F5C0C: using guessed type int (*off_4F5C0C)(); +// 4F5C20: using guessed type int (*off_4F5C20[2])(); +// 4F6414: using guessed type int (*off_4F6414)(); +// 4F6E10: using guessed type int (*off_4F6E10)(); + +//----- (004D7AA0) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) +{ + _DWORD *v1; // ecx + _DWORD *v2; // eax + _DWORD *v3; // ebx + + v1 = (_DWORD *)((char *)a1 + *(_DWORD *)(*a1 - 12)); + v2 = (_DWORD *)v1[10]; + *v1 = &off_4F5C34; + v3 = v1; + v1[16] = off_4F5C48; + v1[1] = &off_4F5958; + if ( v2 != v1 + 12 ) + operator delete(v2); + v3[1] = &off_4F6454; + std::locale::~locale((_DWORD **)v3 + 8); + *v3 = &unk_4F0F18; + v3[16] = &off_4F6E20; + std::ios_base::~ios_base((int)(v3 + 16)); + operator delete(v3); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5C34: using guessed type int (*off_4F5C34)(); +// 4F5C48: using guessed type int (*off_4F5C48[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7B10) -------------------------------------------------------- +void __fastcall `virtual thunk to'std::wostringstream::~wostringstream(_DWORD *a1) +{ + char *v1; // ebx + char *v2; // eax + + v1 = (char *)a1 + *(_DWORD *)(*a1 - 12); + v2 = (char *)*((_DWORD *)v1 + 10); + *(_DWORD *)v1 = &off_4F5C34; + *((_DWORD *)v1 + 16) = off_4F5C48; + *((_DWORD *)v1 + 1) = &off_4F5958; + if ( v2 != v1 + 48 ) + operator delete(v2); + *((_DWORD *)v1 + 1) = &off_4F6454; + std::locale::~locale((_DWORD **)v1 + 8); + *(_DWORD *)v1 = &unk_4F0F18; + *((_DWORD *)v1 + 16) = &off_4F6E20; + std::ios_base::~ios_base((int)(v1 + 64)); +} +// 4F5958: using guessed type int (*off_4F5958)(); +// 4F5C34: using guessed type int (*off_4F5C34)(); +// 4F5C48: using guessed type int (*off_4F5C48[2])(); +// 4F6454: using guessed type int (*off_4F6454)(); +// 4F6E20: using guessed type int (*off_4F6E20)(); + +//----- (004D7B70) -------------------------------------------------------- +int __fastcall std::filebuf::close(void)::__close_sentry::~__close_sentry(int *a1) +{ + int v2; // ecx + int result; // eax + int v4; // edx + int v5; // edx + + v2 = *a1; + *(_DWORD *)(v2 + 48) = 0; + *(_BYTE *)(v2 + 84) = 0; + std::filebuf::_M_destroy_internal_buffer(v2); + result = *a1; + *(_WORD *)(result + 73) = 0; + v4 = *(_DWORD *)(result + 64); + *(_DWORD *)(result + 20) = 0; + *(_DWORD *)(result + 4) = v4; + *(_DWORD *)(result + 8) = v4; + *(_DWORD *)(result + 12) = v4; + v5 = *(_DWORD *)(result + 52); + *(_DWORD *)(result + 16) = 0; + *(_DWORD *)(result + 24) = 0; + *(_DWORD *)(result + 56) = v5; + *(_DWORD *)(result + 60) = v5; + return result; +} + +//----- (004D7BC0) -------------------------------------------------------- +int __fastcall std::wfilebuf::close(void)::__close_sentry::~__close_sentry(int *a1) +{ + int v2; // ecx + int result; // eax + int v4; // edx + int v5; // edx + + v2 = *a1; + *(_DWORD *)(v2 + 48) = 0; + *(_BYTE *)(v2 + 88) = 0; + std::wfilebuf::_M_destroy_internal_buffer(v2); + result = *a1; + *(_WORD *)(result + 73) = 0; + v4 = *(_DWORD *)(result + 64); + *(_DWORD *)(result + 20) = 0; + *(_DWORD *)(result + 4) = v4; + *(_DWORD *)(result + 8) = v4; + *(_DWORD *)(result + 12) = v4; + v5 = *(_DWORD *)(result + 52); + *(_DWORD *)(result + 16) = 0; + *(_DWORD *)(result + 24) = 0; + *(_DWORD *)(result + 56) = v5; + *(_DWORD *)(result + 60) = v5; + return result; +} + +//----- (004D7C50) -------------------------------------------------------- +int __cdecl operator new[](unsigned int a1) +{ + return operator new[](a1); +} +// 4DB0E0: using guessed type int operator new[](void); + +//----- (004D7C70) -------------------------------------------------------- +void *__cdecl operator new(struct type_info *a1, void (__cdecl *a2)(void *)) +{ + size_t Size; // ebx + void *result; // eax + void (*new_handler)(void); // eax + + Size = (size_t)a1; + if ( !a1 ) + Size = 1; + while ( 1 ) + { + result = malloc(Size); + if ( result ) + break; + new_handler = (void (*)(void))std::get_new_handler(); + if ( !new_handler ) + operator new(a1, a2); + new_handler(); + } + return result; +} + +//----- (004D7CB0) -------------------------------------------------------- +unsigned int *__cxa_allocate_dependent_exception() +{ + unsigned int *v0; // eax + unsigned int *v1; // edx + + v0 = (unsigned int *)malloc(0x50u); + if ( v0 ) + { + v1 = v0; + } + else + { + v1 = `anonymous namespace'::pool::allocate(80); + if ( !v1 ) + std::terminate(); + } + *v1 = 0; + v1[19] = 0; + memset( + (void *)((unsigned int)(v1 + 1) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)v1 - ((unsigned int)(v1 + 1) & 0xFFFFFFFC) + 80) >> 2)); + return v1; +} + +//----- (004D7D10) -------------------------------------------------------- +void *__cdecl __cxa_allocate_exception(size_t thrown_size) +{ + unsigned int *v1; // eax + unsigned int *v2; // edx + + v1 = (unsigned int *)malloc(thrown_size + 96); + if ( v1 ) + { + v2 = v1; + } + else + { + v2 = `anonymous namespace'::pool::allocate(thrown_size + 96); + if ( !v2 ) + std::terminate(); + } + *v2 = 0; + v2[23] = 0; + memset( + (void *)((unsigned int)(v2 + 1) & 0xFFFFFFFC), + 0, + 4 * (((unsigned int)v2 - ((unsigned int)(v2 + 1) & 0xFFFFFFFC) + 96) >> 2)); + return v2 + 24; +} + +//----- (004D7D70) -------------------------------------------------------- +void *__cdecl __cxa_begin_catch(void *a1) +{ + char **globals; // eax + char *v2; // edx + char *v3; // edi + int v5; // ecx + int v6; // ebx + + globals = (char **)__cxa_get_globals(); + v2 = *globals; + v3 = (char *)a1 - 48; + if ( (unsigned __int64)(*(_QWORD *)a1 - 0x474E5543432B2B00LL) <= 1 ) + { + v5 = *((_DWORD *)a1 - 7); + v6 = v5 + 1; + if ( v5 < 0 ) + v6 = 1 - v5; + *((_DWORD *)a1 - 7) = v6; + --globals[1]; + if ( v2 != v3 ) + { + *((_DWORD *)a1 - 8) = v2; + *globals = v3; + } + return (void *)*((_DWORD *)a1 - 2); + } + else + { + if ( v2 ) + std::terminate(); + *globals = v3; + return 0; + } +} + +//----- (004D7E00) -------------------------------------------------------- +void __cdecl __noreturn __cxa_call_terminate(_Unwind_Exception *a1) +{ + if ( a1 ) + { + __cxa_begin_catch(a1); + if ( !(((unsigned int)(LODWORD(a1->exception_class) - 1126902528) > 1) + + ((a1->exception_class - 0x474E5543432B2B00LL) >> 32)) ) + __cxxabiv1::__terminate(*((void (**)(void))&a1[-2].private_2 + 3)); + } + std::terminate(); +} + +//----- (004D7E50) -------------------------------------------------------- +void __cdecl __noreturn __cxa_call_unexpected(void *a1) +{ + __cxa_begin_catch(a1); + __cxxabiv1::__unexpected(*((void (**)(void))a1 - 10)); +} +// 4D9B08: using guessed type void __noreturn __cxa_call_unexpected_cold(void); + +//----- (004D7E90) -------------------------------------------------------- +struct type_info *__cxa_current_exception_type(void) +{ + struct type_info *result; // eax + int v1; // edx + + result = (struct type_info *)*__cxa_get_globals(); + if ( result ) + { + v1 = *((_DWORD *)result + 12); + result = *(struct type_info **)result; + if ( (v1 & 1) != 0 ) + return (struct type_info *)*((_DWORD *)result - 20); + } + return result; +} + +//----- (004D7EB0) -------------------------------------------------------- +void __noreturn __cxa_deleted_virtual(void) +{ + write(2, "deleted virtual method called\n", 0x1Eu); + std::terminate(); +} + +//----- (004D7EE0) -------------------------------------------------------- +void __cxa_end_catch(void) +{ + int *globals_fast; // eax + int v1; // edx + int v2; // ecx + int v3; // ecx + + globals_fast = (int *)__cxa_get_globals_fast(); + v1 = *globals_fast; + if ( *globals_fast ) + { + if ( ((unsigned int)(*(_DWORD *)(v1 + 48) - 1126902528) > 1) + + ((unsigned __int64)(*(_QWORD *)(v1 + 48) - 0x474E5543432B2B00LL) >> 32) ) + { + *globals_fast = 0; + _Unwind_DeleteException((_Unwind_Exception *)(v1 + 48)); + return; + } + v2 = *(_DWORD *)(v1 + 20); + if ( v2 < 0 ) + { + v3 = v2 + 1; + if ( !v3 ) + *globals_fast = *(_DWORD *)(v1 + 16); + } + else + { + v3 = v2 - 1; + if ( !v3 ) + { + *globals_fast = *(_DWORD *)(v1 + 16); + _Unwind_DeleteException((_Unwind_Exception *)(v1 + 48)); + return; + } + if ( v3 == -1 ) + std::terminate(); + } + *(_DWORD *)(v1 + 20) = v3; + } +} + +//----- (004D7F80) -------------------------------------------------------- +_DWORD *__cdecl __cxa_free_dependent_exception(unsigned int a1) +{ + struct type_info *v2; // [esp+0h] [ebp-Ch] + void (__cdecl *v3)(void *); // [esp+4h] [ebp-8h] + + if ( a1 <= dword_4E837C || a1 >= dword_4E8380 + dword_4E837C ) + return (_DWORD *)__mingw_free(a1); + else + return `anonymous namespace'::pool::free(a1, v2, v3); +} +// 4D7F9B: variable 'v2' is possibly undefined +// 4D7F9B: variable 'v3' is possibly undefined +// 4E837C: using guessed type int dword_4E837C; +// 4E8380: using guessed type int dword_4E8380; + +//----- (004D7FC0) -------------------------------------------------------- +void __cdecl __cxa_free_exception(void *a1) +{ + char *v1; // eax + struct type_info *v2; // [esp+0h] [ebp-Ch] + void (__cdecl *v3)(void *); // [esp+4h] [ebp-8h] + + v1 = (char *)a1 - 96; + if ( (char *)a1 - 96 <= (char *)dword_4E837C || (unsigned int)v1 >= dword_4E8380 + dword_4E837C ) + __mingw_free((unsigned int)a1 - 96); + else + `anonymous namespace'::pool::free((int)v1, v2, v3); +} +// 4D7FDE: variable 'v2' is possibly undefined +// 4D7FDE: variable 'v3' is possibly undefined +// 4E837C: using guessed type int dword_4E837C; +// 4E8380: using guessed type int dword_4E8380; + +//----- (004D8000) -------------------------------------------------------- +void *__cdecl __cxa_get_exception_ptr(void *a1) +{ + return (void *)*((_DWORD *)a1 - 2); +} + +//----- (004D8010) -------------------------------------------------------- +_DWORD *__cxa_get_globals() +{ + _DWORD *v0; // ebx + _DWORD *ptr; // eax + + v0 = &eh_globals; + if ( byte_4E824C ) + { + v0 = __gthr_win32_getspecific(init); + if ( !v0 ) + { + ptr = malloc(8u); + v0 = ptr; + if ( !ptr || __gthr_win32_setspecific(init, ptr) ) + std::terminate(); + *v0 = 0; + v0[1] = 0; + } + } + return v0; +} +// 4E824C: using guessed type char byte_4E824C; + +//----- (004D8080) -------------------------------------------------------- +void *__cxa_get_globals_fast() +{ + if ( byte_4E824C ) + return __gthr_win32_getspecific(init); + else + return &eh_globals; +} +// 4E824C: using guessed type char byte_4E824C; + +//----- (004D80B0) -------------------------------------------------------- +void __cdecl __cxa_guard_abort(__guard *a1) +{ + *((_BYTE *)a1 + 1) = 0; + if ( _CRT_MT ) + { + if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) + __cxa_guard_abort_cold(); + } +} +// 4D9C50: using guessed type void __noreturn __cxa_guard_abort_cold(void); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004D80F0) -------------------------------------------------------- +int __cdecl __cxa_guard_acquire(__guard *a1) +{ + int result; // eax + void (__cdecl *v2)(void *); // [esp+24h] [ebp+8h] + + if ( *(_BYTE *)a1 ) + return 0; + result = _CRT_MT; + if ( _CRT_MT ) + { + __gthr_win32_once(&`anonymous namespace'::get_static_mutex(void)::once, `anonymous namespace'::init); + if ( _CRT_MT ) + { + if ( __gthr_win32_recursive_mutex_lock(`anonymous namespace'::static_mutex) ) + __cxa_guard_acquire_cold((struct type_info *)a1, v2); + if ( !*(_BYTE *)a1 ) + goto LABEL_9; + if ( _CRT_MT && __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) + __gnu_cxx::__throw_concurrence_unlock_error(); + } + else if ( !*(_BYTE *)a1 ) + { +LABEL_9: + if ( *((_BYTE *)a1 + 1) ) + __cxxabiv1::throw_recursive_init_exception(); + goto LABEL_5; + } + return 0; + } + if ( *(_BYTE *)a1 ) + return result; + if ( *((_BYTE *)a1 + 1) ) + __cxxabiv1::throw_recursive_init_exception(); +LABEL_5: + *((_BYTE *)a1 + 1) = 1; + return 1; +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004D81A0) -------------------------------------------------------- +void __cdecl __cxa_guard_release(__guard *a1) +{ + *((_BYTE *)a1 + 1) = 0; + *(_BYTE *)a1 = 1; + if ( _CRT_MT ) + { + if ( __gthr_win32_recursive_mutex_unlock(`anonymous namespace'::static_mutex) ) + __cxa_guard_release_cold(); + } +} +// 4D9C68: using guessed type void __noreturn __cxa_guard_release_cold(void); +// 15412D0: using guessed type int _CRT_MT; + +//----- (004D81E0) -------------------------------------------------------- +int __cdecl __cxa_init_primary_exception(int a1, int a2, int a3) +{ + void (*terminate)(void); // eax + int result; // eax + + *(_DWORD *)(a1 - 80) = a2; + *(_DWORD *)(a1 - 96) = 0; + *(_DWORD *)(a1 - 76) = a3; + *(_DWORD *)(a1 - 72) = std::get_unexpected(); + terminate = std::get_terminate(); + *(_DWORD *)(a1 - 32) = 1126902528; + *(_DWORD *)(a1 - 68) = terminate; + result = a1 - 96; + *(_DWORD *)(a1 - 28) = 1196315971; + *(_DWORD *)(a1 - 24) = __gxx_exception_cleanup; + return result; +} + +//----- (004D8230) -------------------------------------------------------- +void __noreturn __cxa_pure_virtual(void) +{ + write(2, "pure virtual method called\n", 0x1Bu); + std::terminate(); +} + +//----- (004D8260) -------------------------------------------------------- +void __noreturn __cxa_rethrow(void) +{ + int *globals; // eax + int v1; // edx + + globals = __cxa_get_globals(); + v1 = *globals; + ++globals[1]; + if ( v1 ) + { + if ( ((unsigned int)(*(_DWORD *)(v1 + 48) - 1126902528) > 1) + + ((unsigned __int64)(*(_QWORD *)(v1 + 48) - 0x474E5543432B2B00LL) >> 32) ) + { + *globals = 0; + } + else + { + *(_DWORD *)(v1 + 20) = -*(_DWORD *)(v1 + 20); + } + _Unwind_Resume_or_Rethrow((int)globals, v1, (_Unwind_Exception *)(v1 + 48)); + } + std::terminate(); +} + +//----- (004D82C0) -------------------------------------------------------- +void __cdecl __noreturn __cxa_throw(void *a1, struct type_info *lptinfo, void (__cdecl *a3)(void *)) +{ + _DWORD *globals; // eax + _DWORD *v4; // ebx + void (*terminate)(void); // eax + + globals = __cxa_get_globals(); + ++globals[1]; + *((_DWORD *)a1 - 24) = 0; + v4 = (char *)a1 - 32; + *((_DWORD *)a1 - 20) = lptinfo; + *((_DWORD *)a1 - 19) = a3; + *((_DWORD *)a1 - 18) = std::get_unexpected(); + terminate = std::get_terminate(); + *v4 = 1126902528; + *((_DWORD *)a1 - 17) = terminate; + v4[1] = 1196315971; + v4[2] = __gxx_exception_cleanup; + *((_DWORD *)a1 - 24) = 1; + _Unwind_RaiseException((_Unwind_Exception *)a1 - 1); + __cxa_begin_catch((char *)a1 - 32); + std::terminate(); +} + +//----- (004D8330) -------------------------------------------------------- +void *__cdecl __dynamic_cast( + const void *lpsrc, + const struct __class_type_info *lpstype, + const struct __class_type_info *lpdtype, + ptrdiff_t s2d) +{ + int v4; // edx + int v5; // ecx + int *v6; // edx + int v7; // eax + char *v8; // edx + void *result; // eax + char *v10; // [esp+48h] [ebp-30h] BYREF + int v11; // [esp+4Ch] [ebp-2Ch] + int v12; // [esp+50h] [ebp-28h] + int v13; // [esp+54h] [ebp-24h] + int v14; // [esp+58h] [ebp-20h] + + v4 = *(_DWORD *)(*(_DWORD *)lpsrc - 8); + v5 = *(_DWORD *)(*(_DWORD *)lpsrc - 4); + v10 = 0; + v11 = 0; + v6 = (int *)((char *)lpsrc + v4); + v12 = 0; + v7 = *v6; + v13 = 0; + v14 = 16; + if ( *(_DWORD *)(v7 - 4) != v5 ) + return 0; + (*(void (__thiscall **)(int, ptrdiff_t, int, const struct __class_type_info *, int *, const struct __class_type_info *, const void *, char **))(*(_DWORD *)v5 + 28))( + v5, + s2d, + 6, + lpdtype, + v6, + lpstype, + lpsrc, + &v10); + v8 = v10; + result = v10; + if ( !v10 ) + return 0; + if ( (v13 & 6) != 6 && ((unsigned __int8)v12 & (unsigned __int8)v11 & 6) != 6 ) + { + if ( (v12 & 5) == 4 || v13 ) + return 0; + if ( s2d < 0 ) + { + if ( s2d == -2 + || ((*(int (__thiscall **)(const struct __class_type_info *, ptrdiff_t, char *, const struct __class_type_info *, const void *))(*(_DWORD *)lpdtype + 32))( + lpdtype, + s2d, + v10, + lpstype, + lpsrc) & 6) != 6 ) + { + return 0; + } + return v10; + } + else if ( lpsrc != &v10[s2d] ) + { + return 0; + } + return v8; + } + return result; +} + +//----- (004D8440) -------------------------------------------------------- +int __cdecl __gxx_personality_v0(int a1, int a2, __int64 a3, _Unwind_Exception *a4, _Unwind_Context *context) +{ + int result; // eax + int *v6; // ebx + _Unwind_Ptr IPInfo; // eax + unsigned int v8; // esi + char v9; // bp + int *v10; // eax + char *encoded_value_with_base; // eax + char v12; // bl + int *v13; // ebp + int *v14; // eax + char *v15; // eax + char v16; // bl + int *v17; // ebp + int *v18; // eax + int *v19; // ecx + int v20; // ebp + char *v21; // eax + int v22; // ecx + char v23; // dl + int v24; // eax + int *v25; // edx + char *v26; // ebx + int v27; // ebp + unsigned int v28; // ecx + char v29; // dl + int v30; // eax + char *v31; // edx + int v32; // esi + unsigned int v33; // ecx + char *v34; // edi + char v35; // bl + int v36; // eax + char *v37; // eax + char v38; // di + char *v39; // ebx + int v40; // ecx + char *v41; // edi + char *v42; // edx + int v43; // esi + char v44; // bl + int v45; // eax + int v46; // eax + char v47; // al + int ttype_entry; // eax + _Unwind_Exception *v49; // eax + _Unwind_Exception_Cleanup_Fn exception_cleanup; // [esp+18h] [ebp-74h] + _Unwind_Word v51; // [esp+1Ch] [ebp-70h] + bool v52; // [esp+22h] [ebp-6Ah] + char v53; // [esp+23h] [ebp-69h] + _Unwind_Word val; // [esp+24h] [ebp-68h] + unsigned __int64 v55; // [esp+28h] [ebp-64h] + char *private_2; // [esp+30h] [ebp-5Ch] + int **v57; // [esp+34h] [ebp-58h] + int v58; // [esp+3Ch] [ebp-50h] + _Unwind_Exception *v59; // [esp+44h] [ebp-48h] BYREF + int ip_before_insn; // [esp+48h] [ebp-44h] BYREF + unsigned __int8 v61[4]; // [esp+4Ch] [ebp-40h] BYREF + unsigned __int8 v62[4]; // [esp+50h] [ebp-3Ch] BYREF + unsigned __int8 v63[4]; // [esp+54h] [ebp-38h] BYREF + int v64; // [esp+58h] [ebp-34h] BYREF + int v65; // [esp+5Ch] [ebp-30h] + _Unwind_Ptr v66; // [esp+60h] [ebp-2Ch] + int v67; // [esp+64h] [ebp-28h] + unsigned int v68; // [esp+68h] [ebp-24h] + char v69; // [esp+6Ch] [ebp-20h] + char v70; // [esp+6Dh] [ebp-1Fh] + + v59 = 0; + ip_before_insn = 0; + if ( a1 != 1 ) + return 3; + v55 = a3 - 0x474E5543432B2B00LL; + v52 = ((unsigned int)v55 > 1) + HIDWORD(v55) == 0; + v53 = v52 && a2 == 6; + if ( v53 ) + { + val = *(&a4[-1].private_2 + 1); + if ( val ) + { + exception_cleanup = a4[-1].exception_cleanup; + private_2 = (char *)a4[-1].private_2; + goto LABEL_5; + } + goto LABEL_19; + } + private_2 = (char *)_Unwind_GetLanguageSpecificData(context); + if ( !private_2 ) + return 8; + v6 = (int *)parse_lsda_header(context, private_2, (int)&v64); + v66 = base_of_encoded_value(v69, context); + IPInfo = _Unwind_GetIPInfo(context, &ip_before_insn); + v8 = (__PAIR64__(IPInfo, ip_before_insn) - 1) >> 32; + if ( (unsigned int)v6 >= v68 ) + { +LABEL_15: + if ( (a2 & 1) != 0 ) + { + exception_cleanup = 0; + val = 0; + v51 = 0; +LABEL_17: + result = 6; + if ( v55 <= 1 ) + { + v25 = (int *)v59; + a4[-1].exception_cleanup = exception_cleanup; + *(&a4[-1].private_2 + 2) = (_Unwind_Word)v25; + a4[-1].private_1 = v51; + a4[-1].private_2 = (_Unwind_Word)private_2; + *(&a4[-1].private_2 + 1) = val; + } + return result; + } + if ( (a2 & 8) != 0 || __PAIR64__(a2 & 8, 1) < v55 ) + std::terminate(); +LABEL_19: + __cxa_call_terminate(a4); + } + while ( 1 ) + { + v9 = v70; + v10 = (int *)base_of_encoded_value(v70, 0); + encoded_value_with_base = read_encoded_value_with_base(v9, v10, v6, (int *)v61); + v12 = v70; + v13 = (int *)encoded_value_with_base; + v14 = (int *)base_of_encoded_value(v70, 0); + v15 = read_encoded_value_with_base(v12, v14, v13, (int *)v62); + v16 = v70; + v17 = (int *)v15; + v18 = (int *)base_of_encoded_value(v70, 0); + v19 = v17; + v20 = 0; + v21 = read_encoded_value_with_base(v16, v18, v19, (int *)v63); + v22 = 0; + v6 = (int *)v21; + do + { + v23 = *(_BYTE *)v6; + v6 = (int *)((char *)v6 + 1); + v24 = (v23 & 0x7F) << v22; + v22 += 7; + v20 |= v24; + } + while ( v23 < 0 ); + if ( v64 + *(_DWORD *)v61 > v8 ) + goto LABEL_15; + if ( *(_DWORD *)v62 + v64 + *(_DWORD *)v61 > v8 ) + break; + if ( v68 <= (unsigned int)v6 ) + goto LABEL_15; + } + if ( !*(_DWORD *)v63 ) + return 8; + val = v65 + *(_DWORD *)v63; + if ( !v20 ) + { + if ( v65 + *(_DWORD *)v63 ) + goto LABEL_23; + return 8; + } + v51 = v68 + v20 - 1; + if ( !val ) + return 8; + if ( v68 + v20 == 1 ) + { +LABEL_23: + exception_cleanup = (_Unwind_Exception_Cleanup_Fn)(a2 & 1); + if ( (a2 & 1) == 0 ) + goto LABEL_7; + return 8; + } + v57 = &`typeinfo for'__cxxabiv1::__forced_unwind; + if ( (a2 & 8) == 0 ) + { + v57 = &`typeinfo for'__cxxabiv1::__foreign_exception; + if ( __PAIR64__(a2 & 8, 1) >= v55 ) + { + v49 = a4 + 1; + if ( (a4->exception_class & 1) != 0 ) + v49 = (_Unwind_Exception *)a4[-2].private_2; + v59 = v49; + v57 = (int **)v49[-3].private_2; + } + } + while ( 1 ) + { + v26 = (char *)v51; + v27 = 0; + v28 = 0; + do + { + v29 = *v26++; + v30 = (v29 & 0x7F) << v28; + v28 += 7; + v27 |= v30; + } + while ( v29 < 0 ); + if ( v28 <= 0x1F && (v29 & 0x40) != 0 ) + v27 |= -(1 << v28); + exception_cleanup = (_Unwind_Exception_Cleanup_Fn)v27; + v31 = v26; + v32 = 0; + v33 = 0; + v34 = v26; + do + { + v35 = *v31++; + v36 = (v35 & 0x7F) << v33; + v33 += 7; + v32 |= v36; + } + while ( v35 < 0 ); + v37 = v34; + v38 = v35; + v39 = v37; + if ( v33 <= 0x1F && (v38 & 0x40) != 0 ) + v32 |= -(1 << v33); + if ( !v27 ) + { + v53 = 1; + goto LABEL_53; + } + if ( v27 <= 0 ) + break; + ttype_entry = get_ttype_entry((int)&v64, v27); + if ( !ttype_entry || v57 && (unsigned __int8)get_adjusted_ptr(ttype_entry, (int)v57, (int **)&v59) ) + goto LABEL_59; +LABEL_53: + if ( !v32 ) + { + if ( v53 ) + goto LABEL_23; + return 8; + } + v51 = (_Unwind_Word)&v39[v32]; + } + if ( (a2 & 8) == 0 && v52 && v57 ) + { + v47 = check_exception_spec((int)&v64, (int)v57, (int *)v59, v27) ^ 1; + } + else + { + v58 = v32; + v40 = 0; + v41 = v37; + v42 = (char *)(v67 + ~v27); + v43 = 0; + do + { + v44 = *v42++; + v45 = (v44 & 0x7F) << v40; + v40 += 7; + v43 |= v45; + } + while ( v44 < 0 ); + v46 = v43; + v32 = v58; + v39 = v41; + v47 = v46 == 0; + } + if ( !v47 ) + goto LABEL_53; +LABEL_59: + if ( (a2 & 1) != 0 ) + goto LABEL_17; + if ( (a2 & 8) != 0 || v55 > 1 ) + { + if ( v27 < 0 ) + std::unexpected(); + goto LABEL_7; + } +LABEL_5: + if ( (int)exception_cleanup < 0 ) + { + parse_lsda_header(context, private_2, (int)&v64); + v66 = base_of_encoded_value(v69, context); + *(&a4[-1].private_2 + 1) = base_of_encoded_value(v69, context); + } +LABEL_7: + _Unwind_SetGR((int)context, 0, (int)a4); + _Unwind_SetGR((int)context, 2, (int)exception_cleanup); + _Unwind_SetIP(context, val); + return 7; +} +// 4D9AF8: using guessed type void __noreturn __gxx_personality_v0_cold(void); +// 4F118C: using guessed type int *`typeinfo for'__cxxabiv1::__forced_unwind; +// 4F11A0: using guessed type int *`typeinfo for'__cxxabiv1::__foreign_exception; + +//----- (004D8A00) -------------------------------------------------------- +void __cdecl __tcf_0_1() +{ + if ( byte_4E824C ) + __gthr_win32_key_delete(init); +} +// 4E824C: using guessed type char byte_4E824C; + +//----- (004D8A30) -------------------------------------------------------- +void __cdecl __tcf_0_2() +{ + if ( _CRT_MT ) + __gthr_win32_mutex_destroy(&`anonymous namespace'::get_locale_cache_mutex(void)::locale_cache_mutex); +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004D8A60) -------------------------------------------------------- +void __cdecl __tcf_0_3() +{ + if ( _CRT_MT ) + __gthr_win32_mutex_destroy(&`anonymous namespace'::get_locale_mutex(void)::locale_mutex); +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004D8A90) -------------------------------------------------------- +void __cdecl __tcf_0_4() +{ + if ( _CRT_MT ) + __gthr_win32_mutex_destroy(&`anonymous namespace'::emergency_pool); +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004D8AC0) -------------------------------------------------------- +void __cdecl __tcf_0_5(std::_V2::error_category *a1) +{ + `anonymous namespace'::__io_category_instance(void)::__ec = &off_4F500C; + std::_V2::error_category::~error_category(a1); +} +// 4E9B50: using guessed type void (__cdecl **`anonymous namespace'::__io_category_instance(void)::__ec)(_anonymous_namespace_::io_error_category *__hidden this); +// 4F500C: using guessed type void (__cdecl *off_4F500C)(_anonymous_namespace_::io_error_category *__hidden this); + +//----- (004D8B00) -------------------------------------------------------- +int __cdecl main(int argc, const char **argv, const char **envp) +{ + int v3; // ebx + int v4; // ebx + int v5; // edi + char **v6; // esi + int v7; // eax + bool v8; // dl + int v9; // edi + char v10; // bl + int v11; // esi + void **v12; // ecx + _BYTE *v13; // eax + char v14; // bl + char v15; // al + int v16; // edx + char v17; // al + void **v18; // ebx + _DWORD *v19; // eax + FILE *v20; // eax + unsigned int i; // esi + int File; // eax + void **v23; // ebx + const char *v24; // eax + int j; // ebx + int v26; // edi + int *v27; // edx + char v28; // al + unsigned int *v29; // esi + void **v30; // eax + unsigned int v31; // edi + int CommHead; // eax + int PageCss; // eax + std::ostream::sentry *v34; // eax + std::ostream::sentry *v35; // eax + void *v36; // eax + unsigned int *v37; // eax + void **v39; // [esp-3Ch] [ebp-298h] + void (__cdecl *v40)(void *); // [esp-38h] [ebp-294h] + int v41; // [esp+0h] [ebp-25Ch] + char v42; // [esp+5h] [ebp-257h] + unsigned __int8 v43; // [esp+6h] [ebp-256h] + char v44; // [esp+7h] [ebp-255h] + const char **v45; // [esp+8h] [ebp-254h] + char v46; // [esp+10h] [ebp-24Ch] + char v47; // [esp+11h] [ebp-24Bh] + char v48; // [esp+12h] [ebp-24Ah] + char v49; // [esp+13h] [ebp-249h] + char *FileName; // [esp+14h] [ebp-248h] + int v51; // [esp+18h] [ebp-244h] + int v52; // [esp+1Ch] [ebp-240h] + std::ostream::sentry *v53; // [esp+1Ch] [ebp-240h] + std::ostream::sentry *v54; // [esp+1Ch] [ebp-240h] + bool Streama; // [esp+20h] [ebp-23Ch] + FILE *Stream; // [esp+20h] [ebp-23Ch] + void **v57; // [esp+30h] [ebp-22Ch] BYREF + void **v58; // [esp+34h] [ebp-228h] + int v59; // [esp+38h] [ebp-224h] + void **v60; // [esp+3Ch] [ebp-220h] BYREF + int v61; // [esp+40h] [ebp-21Ch] + int v62; // [esp+44h] [ebp-218h] + void **v63; // [esp+48h] [ebp-214h] BYREF + char *v64; // [esp+4Ch] [ebp-210h] + char *v65; // [esp+50h] [ebp-20Ch] + void *v66[6]; // [esp+54h] [ebp-208h] BYREF + void *v67[6]; // [esp+6Ch] [ebp-1F0h] BYREF + int v68; // [esp+84h] [ebp-1D8h] BYREF + int v69; // [esp+88h] [ebp-1D4h] BYREF + int v70; // [esp+8Ch] [ebp-1D0h] + int *v71; // [esp+90h] [ebp-1CCh] + int *v72; // [esp+94h] [ebp-1C8h] + int v73; // [esp+98h] [ebp-1C4h] + int v74[2]; // [esp+9Ch] [ebp-1C0h] BYREF + char v75; // [esp+A4h] [ebp-1B8h] BYREF + char *v76; // [esp+B4h] [ebp-1A8h] BYREF + int v77; // [esp+B8h] [ebp-1A4h] + char v78; // [esp+BCh] [ebp-1A0h] BYREF + char *Buffer[2]; // [esp+CCh] [ebp-190h] BYREF + char v80; // [esp+D4h] [ebp-188h] BYREF + void *v81[2]; // [esp+E4h] [ebp-178h] BYREF + char v82; // [esp+ECh] [ebp-170h] BYREF + int v83; // [esp+FCh] [ebp-160h] BYREF + int v84[5]; // [esp+100h] [ebp-15Ch] BYREF + void *v85[2]; // [esp+114h] [ebp-148h] BYREF + char v86; // [esp+11Ch] [ebp-140h] BYREF + void *v87[2]; // [esp+12Ch] [ebp-130h] BYREF + char v88; // [esp+134h] [ebp-128h] BYREF + int v89; // [esp+144h] [ebp-118h] BYREF + int v90; // [esp+148h] [ebp-114h] + char v91[16]; // [esp+14Ch] [ebp-110h] BYREF + int v92[2]; // [esp+15Ch] [ebp-100h] BYREF + char v93; // [esp+164h] [ebp-F8h] BYREF + void *v94[2]; // [esp+174h] [ebp-E8h] BYREF + char v95[4]; // [esp+17Ch] [ebp-E0h] BYREF + int v96[3]; // [esp+180h] [ebp-DCh] BYREF + _DWORD v97[52]; // [esp+18Ch] [ebp-D0h] BYREF + + v97[48] = &argc; + v52 = argc; + v45 = argv; + __main(); + std::string::basic_string(v66, (char *)&byte_4EA251); + std::string::basic_string(v67, "./app.wxss"); + v71 = &v69; + v72 = &v69; + v57 = 0; + v58 = 0; + v59 = 0; + v69 = 0; + v70 = 0; + v73 = 0; + v74[0] = (int)&v75; + v74[1] = 0; + v75 = 0; + if ( v52 <= 1 ) + { + v3 = Usage(v52, v45); + goto LABEL_106; + } + v4 = 1; + v60 = 0; + v61 = 0; + v62 = 0; + v76 = &v78; + v77 = 0; + v78 = 0; + do + { + std::string::basic_string(v94, "--config-path"); + v5 = v4; + v6 = (char **)&v45[v4]; + v7 = std::string::compare((int)v94, *v6); + v8 = 0; + if ( !v7 ) + v8 = v4 + 1 < v52; + Streama = v8; + std::string::_M_dispose(v94); + if ( Streama ) + { + ++v4; + std::string::operator=((unsigned int *)&v76, (char *)v45[v5 + 1]); + } + else + { + std::string::basic_string(v94, *v6); + std::vector::emplace_back(&v60, v94); + std::string::_M_dispose(v94); + } + ++v4; + } + while ( v52 > v4 ); + if ( v77 ) + { + v90 = 0; + v89 = (int)v91; + v91[0] = 0; + ReadFile(v76, (unsigned int *)&v89); + while ( v90 ) + { + std::string::basic_string((void **)v92, "\n"); + GetNextArg(v94, &v89, (int)v92); + std::vector::emplace_back(&v60, v94); + std::string::_M_dispose(v94); + std::string::_M_dispose((void **)v92); + } + std::string::_M_dispose((void **)&v89); + } + v9 = 0; + v41 = 0; + v48 = 0; + v10 = 0; + v42 = 0; + v43 = 0; + v49 = 0; + v51 = -1431655765 * ((v61 - (int)v60) >> 3); + v47 = 0; + v44 = 0; + v46 = 0; + FileName = 0; + while ( v9 < v51 ) + { + v11 = 6 * v9; + v12 = &v60[6 * v9]; + v13 = *v12; + if ( *(_BYTE *)*v12 != 45 ) + { + v39 = &v60[6 * v9]; + if ( !v10 ) + { + std::string::basic_string(v94, (int)v39); + std::vector::emplace_back(&v57, v94); + std::string::_M_dispose(v94); + goto LABEL_54; + } + std::string::basic_string(v94, (int)v39); + std::string::operator=(v66, v94); + std::string::_M_dispose(v94); + goto LABEL_53; + } + v14 = v13[1]; + switch ( v14 ) + { + case 'o': + if ( v51 > v9 + 1 ) + { + ++v9; + FileName = (char *)v60[v11 + 6]; +LABEL_53: + v10 = 0; + goto LABEL_54; + } + break; + case 's': + v15 = v13[2]; + if ( v15 == 116 ) + { + v46 = 1; + v10 = 0; + goto LABEL_54; + } + v16 = v9 + 1; + if ( v15 == 100 ) + { + if ( v51 > v16 ) + { + std::string::operator=((unsigned int *)v74, (char *)v60[v11 + 6]); + v47 = 1; + ++v9; + v10 = 0; + goto LABEL_54; + } + } + else if ( v51 > v16 ) + { + v44 = 1; + ++v9; + v10 = 0; + goto LABEL_54; + } + break; + case 'l': + v17 = v13[2]; + if ( v17 == 99 ) + goto LABEL_53; + if ( v17 == 108 ) + { + v48 = 1; + goto LABEL_53; + } + break; + case 'd': + if ( v13[2] == 98 ) + { + v49 = 1; + v10 = 0; + goto LABEL_54; + } + break; + case 'j': + if ( v13[2] == 115 ) + { + v43 = 1; + v10 = 0; + goto LABEL_54; + } + break; + case 'c': + if ( v13[2] == 112 ) + { + v10 = 1; + goto LABEL_54; + } + break; + default: + if ( v14 == 112 && v13[2] == 99 ) + { + v42 = 1; + ++v9; + v41 = atoi((const char *)v60[v11 + 6]); + goto LABEL_53; + } + break; + } + v10 = 0; + if ( !std::string::compare((int)v12, "--subpackage") && v51 > v9 + 1 ) + { + v93 = 0; + v92[1] = 0; + v18 = &v60[v11 + 6]; + v92[0] = (int)&v93; + std::string::reserve(v92, (unsigned int)v60[v11 + 7] + 2); + v40 = (void (__cdecl *)(void *))std::string::append(v92, "./", 2u); + std::string::append(v92, (int)v18); + v19 = std::string::append(v92, "/app.wxss"); + std::string::basic_string(v94, v19); + std::string::operator=(v67, v94); + std::string::_M_dispose(v94); + std::string::_M_dispose((void **)v92); + ++v9; + goto LABEL_53; + } +LABEL_54: + ++v9; + } + if ( v58 == v57 && !v44 && !v47 ) + { + v3 = Usage(v52, v45); + goto LABEL_90; + } + if ( FileName && *FileName ) + v20 = fopen(FileName, "w"); + else + v20 = &__iob[1]; + Stream = v20; + if ( !v47 ) + { + for ( i = 0; -1431655765 * (((char *)v58 - (char *)v57) >> 3) > i; ++i ) + { + File = ReadFile((char *)v57[6 * i], (unsigned int *)v74); + v23 = &v57[6 * i]; + if ( File ) + { + v24 = (const char *)*v23; + v3 = 1; + fprintf(&__iob[2], "%s not found\n", v24); + goto LABEL_90; + } + std::string::basic_string(v94, (int)v23); + std::string::basic_string(v97, (int)v74); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + &v68, + v94); + std::pair::~pair(v94); + } + } + Buffer[1] = 0; + Buffer[0] = &v80; + v80 = 0; + v81[0] = &v82; + v81[1] = 0; + v82 = 0; + v63 = 0; + v64 = 0; + v65 = 0; + if ( !v42 ) + { + if ( !v48 ) + { + v36 = WXSS::LintAndParseCSSList(&v68, (int)v57, (unsigned int *)Buffer, (int)v81, 0, v43, v49, v46, (int)v66); + goto LABEL_99; + } +LABEL_86: + v84[2] = (int)v84; + v84[3] = (int)v84; + v85[0] = &v86; + v84[0] = 0; + v84[1] = 0; + v84[4] = 0; + v85[1] = 0; + v86 = 0; + v87[0] = &v88; + v87[1] = 0; + v88 = 0; + v29 = (unsigned int *)operator new((struct type_info *)0xB0, v40); + WXSS::XCompiler::XCompiler((int)v29, (unsigned int)v29, &v68, v49, (int)v66); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase((void **)v29[34]); + v29[35] = (unsigned int)(v29 + 33); + v29[36] = (unsigned int)(v29 + 33); + v30 = (void **)v29[40]; + v29[34] = 0; + v29[37] = 0; + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_erase(v30); + v29[41] = (unsigned int)(v29 + 39); + v29[42] = (unsigned int)(v29 + 39); + v29[40] = 0; + v29[43] = 0; + std::string::_M_assign((int)v87, (int)(v29 + 2)); + v31 = *v29; + if ( !*v29 ) + { + CommHead = WXSS::XCompiler::GetCommHead((int *)v29, &v63, v85, 1, (int *)v67); + v3 = CommHead; + if ( CommHead ) + fprintf(&__iob[2], "ERR: GetCommHead ret %d", CommHead); + while ( -1431655765 * ((v64 - (char *)v63) >> 3) > v31 ) + { + v90 = 0; + v89 = (int)v91; + v91[0] = 0; + WXML::Rewrite::ToStringCode((int)v92, (int *)&v63[6 * v31]); + PageCss = WXSS::XCompiler::GetPageCss((int *)v29, v92, &v89, 0); + v3 = PageCss; + if ( PageCss ) + fprintf(&__iob[2], "INFO: GetPageCss fail ret %d", PageCss); + std::string::basic_string(v94, (int)&v63[6 * v31]); + std::string::basic_string(v97, (int)&v89); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::_M_emplace_unique>( + &v83, + v94); + ++v31; + std::pair::~pair(v94); + std::string::_M_dispose((void **)v92); + std::string::_M_dispose((void **)&v89); + } + std::basic_stringstream,std::allocator>::basic_stringstream((int)v94); + v54 = std::operator<<>((std::ostream::sentry *)v95, "{\"common\":\""); + EscapeToJsonString((int)v92, (int)v85); + v34 = std::operator<<(v54, v92); + std::operator<<>(v34, "\",\"pageWxss\":"); + std::string::_M_dispose((void **)v92); + DictToJsonString((int)v92, (int)&v83); + v35 = std::operator<<((std::ostream::sentry *)v95, v92); + std::operator<<>(v35, "}"); + std::string::_M_dispose((void **)v92); + std::stringbuf::str((int)v92, v96); + std::string::operator=(Buffer, v92); + std::string::_M_dispose((void **)v92); + std::basic_stringstream,std::allocator>::~basic_stringstream((int)v94); + std::string::_M_dispose(v87); + std::string::_M_dispose(v85); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v83); + goto LABEL_100; + } + fprintf( + &__iob[2], + "ERR: wxss GetCompiledResult: %s, error file count: %d, ret %d", + (const char *)v87[0], + v29[1], + *v29); + std::string::_M_dispose(v87); + std::string::_M_dispose(v85); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v83); +LABEL_88: + v3 = 1; + goto LABEL_89; + } + for ( j = 0; v41 > j; ++j ) + { + if ( v64 == v65 ) + { + std::vector::_M_realloc_insert(v64, &v57[6 * j]); + v40 = (void (__cdecl *)(void *))v9; + } + else + { + std::string::basic_string(v64, (int)&v57[6 * j]); + v64 += 24; + } + } + v26 = v70; + v27 = &v69; + while ( v26 ) + { + v53 = (std::ostream::sentry *)v27; + v28 = std::operator<(v26 + 16, (int)v67); + v27 = (int *)v53; + if ( v28 ) + { + v26 = *(_DWORD *)(v26 + 12); + } + else + { + v27 = (int *)v26; + v26 = *(_DWORD *)(v26 + 8); + } + } + if ( v27 == &v69 || (unsigned __int8)std::operator<((int)v67, (int)(v27 + 4)) ) + { + v37 = std::map::operator[](&v68, (int)v67); + std::string::operator=(v37, (char *)&byte_4EA251); + } + if ( v48 ) + goto LABEL_86; + v36 = WXSS::NewLintAndParseCSSList( + (unsigned int)Buffer, + &v68, + (int *)&v63, + (unsigned int *)Buffer, + (int)v81, + 0, + v49, + (int)v66, + (int *)v67); +LABEL_99: + v3 = (int)v36; +LABEL_100: + if ( v3 ) + { + fprintf(&__iob[2], "ERR: %s\nerror file count: %d\n", (const char *)v81[0], 0); + goto LABEL_88; + } + fputs(Buffer[0], Stream); + fclose(Stream); +LABEL_89: + std::vector::~vector(&v63); + std::string::_M_dispose(v81); + std::string::_M_dispose((void **)Buffer); +LABEL_90: + std::string::_M_dispose((void **)&v76); + std::vector::~vector(&v60); +LABEL_106: + std::string::_M_dispose((void **)v74); + std::_Rb_tree,std::_Select1st>,std::less,std::allocator>>::~_Rb_tree((int)&v68); + std::vector::~vector(&v57); + std::string::_M_dispose(v67); + std::string::_M_dispose(v66); + return v3; +} +// 4D937C: variable 'v40' is possibly undefined +// 4B5908: using guessed type _DWORD __stdcall std::vector::_M_realloc_insert(_DWORD, _DWORD); +// 4D8B00: using guessed type _DWORD var_D0[52]; +// 4D8B00: using guessed type char var_E0[4]; +// 4D8B00: using guessed type int var_DC[3]; + +//----- (004D99F2) -------------------------------------------------------- +int _GLOBAL__sub_I__Z5UsageiPPKc() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_1); +} + +//----- (004D9A10) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXSS11RemoveQuoteERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_3); +} + +//----- (004D9A30) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib6Parser5ParseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_RS7_S9_() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_1_1); +} + +//----- (004D9A50) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXSS9Tokenizer2TTE() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_0_0); +} + +//----- (004D9A70) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN4WXSS10CSSTreeLib12TransitTable10GetTopTypeEv() +{ + std::ios_base::Init::Init(); + return atexit(__tcf_1_2); +} + +//----- (004D9A90) -------------------------------------------------------- +int _GLOBAL__sub_I___cxa_get_globals_fast() +{ + byte_4E824C = 0; + if ( _CRT_MT ) + byte_4E824C = __gthr_win32_key_create(&init, (void (*)(void *))eh_globals_dtor) == 0; + return atexit(__tcf_0_1); +} +// 4E824C: using guessed type char byte_4E824C; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004D9AF8) -------------------------------------------------------- +#error "4D9AFB: call analysis failed (funcsize=3)" + +//----- (004D9B08) -------------------------------------------------------- +#error "4D9B0B: call analysis failed (funcsize=37)" + +//----- (004D9BA8) -------------------------------------------------------- +#error "4D9BAB: call analysis failed (funcsize=3)" + +//----- (004D9BB8) -------------------------------------------------------- +void __noreturn __cxxabiv1::throw_recursive_init_exception(void) +{ + _DWORD *exception; // ebx + + exception = __cxa_allocate_exception(4u); + __gnu_cxx::recursive_init_error::recursive_init_error(exception); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'__gnu_cxx::recursive_init_error, + (void (__cdecl *)(void *))__gnu_cxx::recursive_init_error::~recursive_init_error); +} +// 4F12FC: using guessed type int *`typeinfo for'__gnu_cxx::recursive_init_error; + +//----- (004D9BEC) -------------------------------------------------------- +#error "4D9BF3: call analysis failed (funcsize=7)" + +//----- (004D9C80) -------------------------------------------------------- +#error "4D9C87: call analysis failed (funcsize=7)" + +//----- (004D9CAC) -------------------------------------------------------- +#error "4D9CC3: call analysis failed (funcsize=5)" + +//----- (004D9D8C) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +void __usercall std::ios_base::Init::~Init(void *a1@) +{ + __cxa_begin_catch(a1); + __cxa_end_catch(); +} +// 4D9D97: positive sp value 1C has been found + +//----- (004D9D9C) -------------------------------------------------------- +#error "4D9DA7: call analysis failed (funcsize=4)" + +//----- (004D9DAC) -------------------------------------------------------- +#error "4D9DB6: call analysis failed (funcsize=7)" + +//----- (004D9DC4) -------------------------------------------------------- +#error "4D9DD1: call analysis failed (funcsize=13)" + +//----- (004D9DEC) -------------------------------------------------------- +#error "4D9DEF: call analysis failed (funcsize=5)" + +//----- (004D9E3C) -------------------------------------------------------- +#error "4D9E3F: call analysis failed (funcsize=5)" + +//----- (004D9E60) -------------------------------------------------------- +#error "4D9E63: call analysis failed (funcsize=6)" + +//----- (004D9F18) -------------------------------------------------------- +#error "4D9F1F: call analysis failed (funcsize=7)" + +//----- (004D9FA4) -------------------------------------------------------- +#error "4D9FAB: call analysis failed (funcsize=4)" + +//----- (004D9FB8) -------------------------------------------------------- +#error "4D9FBD: call analysis failed (funcsize=9)" + +//----- (004DA09C) -------------------------------------------------------- +#error "4DA0A3: call analysis failed (funcsize=7)" + +//----- (004DA0F0) -------------------------------------------------------- +#error "4DA0F2: call analysis failed (funcsize=4)" + +//----- (004DA100) -------------------------------------------------------- +#error "4DA103: call analysis failed (funcsize=4)" + +//----- (004DA110) -------------------------------------------------------- +#error "4DA112: call analysis failed (funcsize=4)" + +//----- (004DA120) -------------------------------------------------------- +#error "4DA123: call analysis failed (funcsize=4)" + +//----- (004DA130) -------------------------------------------------------- +#error "4DA132: call analysis failed (funcsize=4)" + +//----- (004DA140) -------------------------------------------------------- +#error "4DA143: call analysis failed (funcsize=4)" + +//----- (004DA150) -------------------------------------------------------- +#error "4DA152: call analysis failed (funcsize=4)" + +//----- (004DA160) -------------------------------------------------------- +#error "4DA163: call analysis failed (funcsize=4)" + +//----- (004DA170) -------------------------------------------------------- +#error "4DA172: call analysis failed (funcsize=4)" + +//----- (004DA180) -------------------------------------------------------- +#error "4DA183: call analysis failed (funcsize=4)" + +//----- (004DA190) -------------------------------------------------------- +#error "4DA192: call analysis failed (funcsize=4)" + +//----- (004DA1A0) -------------------------------------------------------- +#error "4DA1A3: call analysis failed (funcsize=4)" + +//----- (004DA1B0) -------------------------------------------------------- +#error "4DA1B2: call analysis failed (funcsize=4)" + +//----- (004DA1C0) -------------------------------------------------------- +#error "4DA1C3: call analysis failed (funcsize=4)" + +//----- (004DA1D0) -------------------------------------------------------- +#error "4DA1D2: call analysis failed (funcsize=4)" + +//----- (004DA1E0) -------------------------------------------------------- +#error "4DA1E3: call analysis failed (funcsize=4)" + +//----- (004DA1F0) -------------------------------------------------------- +#error "4DA1F2: call analysis failed (funcsize=4)" + +//----- (004DA200) -------------------------------------------------------- +#error "4DA203: call analysis failed (funcsize=4)" + +//----- (004DA210) -------------------------------------------------------- +#error "4DA212: call analysis failed (funcsize=4)" + +//----- (004DA220) -------------------------------------------------------- +#error "4DA223: call analysis failed (funcsize=4)" + +//----- (004DA230) -------------------------------------------------------- +#error "4DA232: call analysis failed (funcsize=4)" + +//----- (004DA240) -------------------------------------------------------- +#error "4DA243: call analysis failed (funcsize=4)" + +//----- (004DA250) -------------------------------------------------------- +#error "4DA252: call analysis failed (funcsize=4)" + +//----- (004DA260) -------------------------------------------------------- +#error "4DA263: call analysis failed (funcsize=4)" + +//----- (004DA270) -------------------------------------------------------- +#error "4DA275: call analysis failed (funcsize=4)" + +//----- (004DA300) -------------------------------------------------------- +#error "4DA302: call analysis failed (funcsize=6)" + +//----- (004DA3AC) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +void __usercall __noreturn std::locale::name(int a1@, void **a2@, int a3@, _Unwind_Exception *a4@) +{ + volatile signed __int32 *v4; // eax + char *v5; // ecx + + v4 = (volatile signed __int32 *)*a2; + v5 = (char *)*a2 - 12; + if ( *a2 != &unk_4E93FC ) + { + if ( _CRT_MT ) + { + a1 = _InterlockedExchangeAdd(v4 - 1, 0xFFFFFFFF); + } + else + { + a1 = *((_DWORD *)v4 - 1); + *((_DWORD *)v4 - 1) = a1 - 1; + } + if ( a1 <= 0 ) + std::string::_Rep::_M_destroy(v5, a3 - 25); + } + _Unwind_Resume((int)v4, a1, a4); +} +// 4DA3D8: positive sp value 4 has been found +// 4DA3DC: variable 'v4' is possibly undefined +// 4DA3DC: variable 'a1' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004DA3EC) -------------------------------------------------------- +void __thiscall std::wstring::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + } + if ( v2 <= 0 ) + std::wstring::_Rep::_M_destroy((void *)this, a2); +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004DA420) -------------------------------------------------------- +void __thiscall std::string::_Rep::_M_dispose(volatile signed __int32 *this, int a2) +{ + int v2; // eax + + if ( _CRT_MT ) + { + v2 = _InterlockedExchangeAdd(this + 2, 0xFFFFFFFF); + } + else + { + v2 = *((_DWORD *)this + 2); + *((_DWORD *)this + 2) = v2 - 1; + } + if ( v2 <= 0 ) + std::string::_Rep::_M_destroy((void *)this, a2); +} +// 15412D0: using guessed type int _CRT_MT; + +//----- (004DA454) -------------------------------------------------------- +#error "4DA463: call analysis failed (funcsize=7)" + +//----- (004DA468) -------------------------------------------------------- +#error "4DA477: call analysis failed (funcsize=7)" + +//----- (004DA47C) -------------------------------------------------------- +#error "4DA48B: call analysis failed (funcsize=7)" + +//----- (004DA490) -------------------------------------------------------- +#error "4DA49F: call analysis failed (funcsize=7)" + +//----- (004DA4A4) -------------------------------------------------------- +#error "4DA4B3: call analysis failed (funcsize=7)" + +//----- (004DA4B8) -------------------------------------------------------- +#error "4DA4C7: call analysis failed (funcsize=7)" + +//----- (004DA4CC) -------------------------------------------------------- +#error "4DA4DB: call analysis failed (funcsize=7)" + +//----- (004DA4E0) -------------------------------------------------------- +#error "4DA4EF: call analysis failed (funcsize=7)" + +//----- (004DA4F4) -------------------------------------------------------- +#error "4DA4F6: call analysis failed (funcsize=6)" + +//----- (004DA63C) -------------------------------------------------------- +#error "4DA644: call analysis failed (funcsize=5)" + +//----- (004DA654) -------------------------------------------------------- +#error "4DA65D: call analysis failed (funcsize=8)" + +//----- (004DA678) -------------------------------------------------------- +#error "4DA67A: call analysis failed (funcsize=4)" + +//----- (004DA690) -------------------------------------------------------- +void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() +{ + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::money_get>::id ) + `guard variable for'std::money_get>::id = 1; + if ( !`guard variable for'std::money_put>::id ) + `guard variable for'std::money_put>::id = 1; + if ( !`guard variable for'std::numpunct::id ) + `guard variable for'std::numpunct::id = 1; + if ( !`guard variable for'std::time_get>::id ) + `guard variable for'std::time_get>::id = 1; + if ( !`guard variable for'std::messages::id ) + `guard variable for'std::messages::id = 1; + if ( !`guard variable for'std::collate::id ) + `guard variable for'std::collate::id = 1; +} +// 4E8100: using guessed type char `guard variable for'std::moneypunct::id; +// 4E8108: using guessed type char `guard variable for'std::moneypunct::id; +// 4E8120: using guessed type char `guard variable for'std::collate::id; +// 4E8130: using guessed type char `guard variable for'std::messages::id; +// 4E8140: using guessed type char `guard variable for'std::numpunct::id; +// 4E8150: using guessed type char `guard variable for'std::time_get>::id; +// 4E8160: using guessed type char `guard variable for'std::money_get>::id; +// 4E8170: using guessed type char `guard variable for'std::money_put>::id; + +//----- (004DA720) -------------------------------------------------------- +#error "4DA72F: call analysis failed (funcsize=7)" + +//----- (004DA734) -------------------------------------------------------- +#error "4DA743: call analysis failed (funcsize=7)" + +//----- (004DA748) -------------------------------------------------------- +#error "4DA757: call analysis failed (funcsize=7)" + +//----- (004DA75C) -------------------------------------------------------- +#error "4DA76B: call analysis failed (funcsize=7)" + +//----- (004DA770) -------------------------------------------------------- +#error "4DA77F: call analysis failed (funcsize=7)" + +//----- (004DA784) -------------------------------------------------------- +#error "4DA793: call analysis failed (funcsize=7)" + +//----- (004DA798) -------------------------------------------------------- +#error "4DA7A7: call analysis failed (funcsize=7)" + +//----- (004DA7AC) -------------------------------------------------------- +#error "4DA7BE: call analysis failed (funcsize=8)" + +//----- (004DA7C4) -------------------------------------------------------- +#error "4DA7C6: call analysis failed (funcsize=6)" + +//----- (004DA910) -------------------------------------------------------- +void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj() +{ + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::money_get>::id ) + `guard variable for'std::money_get>::id = 1; + if ( !`guard variable for'std::money_put>::id ) + `guard variable for'std::money_put>::id = 1; + if ( !`guard variable for'std::numpunct::id ) + `guard variable for'std::numpunct::id = 1; + if ( !`guard variable for'std::time_get>::id ) + `guard variable for'std::time_get>::id = 1; + if ( !`guard variable for'std::messages::id ) + `guard variable for'std::messages::id = 1; + if ( !`guard variable for'std::collate::id ) + `guard variable for'std::collate::id = 1; +} +// 4E8110: using guessed type char `guard variable for'std::moneypunct::id; +// 4E8118: using guessed type char `guard variable for'std::moneypunct::id; +// 4E8128: using guessed type char `guard variable for'std::collate::id; +// 4E8138: using guessed type char `guard variable for'std::messages::id; +// 4E8148: using guessed type char `guard variable for'std::numpunct::id; +// 4E8158: using guessed type char `guard variable for'std::time_get>::id; +// 4E8168: using guessed type char `guard variable for'std::money_get>::id; +// 4E8178: using guessed type char `guard variable for'std::money_put>::id; + +//----- (004DA9A8) -------------------------------------------------------- +void __noreturn std::__throw_bad_exception(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_4F607C; + __cxa_throw(exception, (struct type_info *)&`typeinfo for'std::bad_exception, std::bad_exception::~bad_exception); +} +// 4F1B20: using guessed type int *`typeinfo for'std::bad_exception; +// 4F607C: using guessed type void (__cdecl *off_4F607C)(std::bad_exception *__hidden this); + +//----- (004DA9D8) -------------------------------------------------------- +void __noreturn std::__throw_bad_alloc(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_4F6DFC; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_alloc, + (void (__cdecl *)(void *))std::bad_alloc::~bad_alloc); +} +// 4F20A8: using guessed type int *`typeinfo for'std::bad_alloc; +// 4F6DFC: using guessed type void (__cdecl *off_4F6DFC)(std::bad_alloc *__hidden this); + +//----- (004DAA08) -------------------------------------------------------- +void __noreturn std::__throw_bad_cast(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_4F6CE0; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_cast, + (void (__cdecl *)(void *))std::bad_cast::~bad_cast); +} +// 4F1FE4: using guessed type int *`typeinfo for'std::bad_cast; +// 4F6CE0: using guessed type void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this); + +//----- (004DAA38) -------------------------------------------------------- +void __noreturn std::__throw_bad_typeid(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_4F5E7C; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_typeid, + (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); +} +// 4F19F0: using guessed type int `typeinfo for'std::bad_typeid; +// 4F5E7C: using guessed type void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this); + +//----- (004DAA68) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_logic_error(std::logic_error *a1) +{ + void *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::logic_error::logic_error(a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::logic_error, + (void (__cdecl *)(void *))std::logic_error::~logic_error); +} +// 4DAA86: variable 'v2' is possibly undefined +// 4F1AAC: using guessed type int *`typeinfo for'std::logic_error; + +//----- (004DAAB8) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_domain_error(std::domain_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::domain_error::domain_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::domain_error, + (void (__cdecl *)(void *))std::domain_error::~domain_error); +} +// 4DAAD6: variable 'v2' is possibly undefined +// 4F1AE4: using guessed type int *`typeinfo for'std::domain_error; + +//----- (004DAB08) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_invalid_argument(std::invalid_argument *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::invalid_argument::invalid_argument(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::invalid_argument, + (void (__cdecl *)(void *))std::invalid_argument::~invalid_argument); +} +// 4DAB26: variable 'v2' is possibly undefined +// 4F1D14: using guessed type int *`typeinfo for'std::invalid_argument; + +//----- (004DAB58) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_length_error(std::length_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::length_error::length_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::length_error, + (void (__cdecl *)(void *))std::length_error::~length_error); +} +// 4DAB76: variable 'v2' is possibly undefined +// 4F1AF0: using guessed type int *`typeinfo for'std::length_error; + +//----- (004DABA8) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_out_of_range(std::out_of_range *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::out_of_range::out_of_range(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::out_of_range, + (void (__cdecl *)(void *))std::out_of_range::~out_of_range); +} +// 4DABC6: variable 'v2' is possibly undefined +// 4F1AFC: using guessed type int *`typeinfo for'std::out_of_range; + +//----- (004DABF8) -------------------------------------------------------- +#error "4DABFB: call analysis failed (funcsize=4)" + +//----- (004DAC08) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_runtime_error(std::runtime_error *a1) +{ + void *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::runtime_error::runtime_error((int)exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::runtime_error, + (void (__cdecl *)(void *))std::runtime_error::~runtime_error); +} +// 4DAC26: variable 'v2' is possibly undefined +// 4F1B94: using guessed type int *`typeinfo for'std::runtime_error; + +//----- (004DAC58) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_range_error(std::range_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::range_error::range_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::range_error, + (void (__cdecl *)(void *))std::range_error::~range_error); +} +// 4DAC76: variable 'v2' is possibly undefined +// 4F1AB8: using guessed type int *`typeinfo for'std::range_error; + +//----- (004DACA8) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_overflow_error(std::overflow_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::overflow_error::overflow_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::overflow_error, + (void (__cdecl *)(void *))std::overflow_error::~overflow_error); +} +// 4DACC6: variable 'v2' is possibly undefined +// 4F1C20: using guessed type int *`typeinfo for'std::overflow_error; + +//----- (004DACF8) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_underflow_error(std::underflow_error *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(8u); + std::underflow_error::underflow_error(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::underflow_error, + (void (__cdecl *)(void *))std::underflow_error::~underflow_error); +} +// 4DAD16: variable 'v2' is possibly undefined +// 4F1CE4: using guessed type int *`typeinfo for'std::underflow_error; + +//----- (004DAD48) -------------------------------------------------------- +#error "4DAD69: call analysis failed (funcsize=9)" + +//----- (004DAD70) -------------------------------------------------------- +#error "4DAD73: call analysis failed (funcsize=4)" + +//----- (004DADA0) -------------------------------------------------------- +void _GLOBAL__sub_I__ZNSt12ctype_bynameIcEC2ERKSsj() +{ + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::money_get>::id ) + `guard variable for'std::money_get>::id = 1; + if ( !`guard variable for'std::money_put>::id ) + `guard variable for'std::money_put>::id = 1; + if ( !`guard variable for'std::numpunct::id ) + `guard variable for'std::numpunct::id = 1; + if ( !`guard variable for'std::num_get>::id ) + `guard variable for'std::num_get>::id = 1; + if ( !`guard variable for'std::num_put>::id ) + `guard variable for'std::num_put>::id = 1; + if ( !`guard variable for'std::__timepunct::id ) + `guard variable for'std::__timepunct::id = 1; + if ( !`guard variable for'std::time_put>::id ) + `guard variable for'std::time_put>::id = 1; + if ( !`guard variable for'std::time_get>::id ) + `guard variable for'std::time_get>::id = 1; + if ( !`guard variable for'std::messages::id ) + `guard variable for'std::messages::id = 1; + if ( !`guard variable for'std::collate::id ) + `guard variable for'std::collate::id = 1; +} +// 4E80D0: using guessed type char `guard variable for'std::moneypunct::id; +// 4E80D8: using guessed type char `guard variable for'std::moneypunct::id; +// 4E80F0: using guessed type char `guard variable for'std::__timepunct::id; +// 4E8180: using guessed type char `guard variable for'std::collate::id; +// 4E8190: using guessed type char `guard variable for'std::num_get>::id; +// 4E81A0: using guessed type char `guard variable for'std::num_put>::id; +// 4E81B0: using guessed type char `guard variable for'std::messages::id; +// 4E81C0: using guessed type char `guard variable for'std::numpunct::id; +// 4E81D0: using guessed type char `guard variable for'std::time_get>::id; +// 4E81E0: using guessed type char `guard variable for'std::time_put>::id; +// 4E81F0: using guessed type char `guard variable for'std::money_get>::id; +// 4E8200: using guessed type char `guard variable for'std::money_put>::id; + +//----- (004DAE70) -------------------------------------------------------- +void _GLOBAL__sub_I__ZNSt12ctype_bynameIwEC2ERKSsj() +{ + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::moneypunct::id ) + `guard variable for'std::moneypunct::id = 1; + if ( !`guard variable for'std::money_get>::id ) + `guard variable for'std::money_get>::id = 1; + if ( !`guard variable for'std::money_put>::id ) + `guard variable for'std::money_put>::id = 1; + if ( !`guard variable for'std::numpunct::id ) + `guard variable for'std::numpunct::id = 1; + if ( !`guard variable for'std::num_get>::id ) + `guard variable for'std::num_get>::id = 1; + if ( !`guard variable for'std::num_put>::id ) + `guard variable for'std::num_put>::id = 1; + if ( !`guard variable for'std::__timepunct::id ) + `guard variable for'std::__timepunct::id = 1; + if ( !`guard variable for'std::time_put>::id ) + `guard variable for'std::time_put>::id = 1; + if ( !`guard variable for'std::time_get>::id ) + `guard variable for'std::time_get>::id = 1; + if ( !`guard variable for'std::messages::id ) + `guard variable for'std::messages::id = 1; + if ( !`guard variable for'std::collate::id ) + `guard variable for'std::collate::id = 1; +} +// 4E80E0: using guessed type char `guard variable for'std::moneypunct::id; +// 4E80E8: using guessed type char `guard variable for'std::moneypunct::id; +// 4E80F8: using guessed type char `guard variable for'std::__timepunct::id; +// 4E8188: using guessed type char `guard variable for'std::collate::id; +// 4E8198: using guessed type char `guard variable for'std::num_get>::id; +// 4E81A8: using guessed type char `guard variable for'std::num_put>::id; +// 4E81B8: using guessed type char `guard variable for'std::messages::id; +// 4E81C8: using guessed type char `guard variable for'std::numpunct::id; +// 4E81D8: using guessed type char `guard variable for'std::time_get>::id; +// 4E81E8: using guessed type char `guard variable for'std::time_put>::id; +// 4E81F8: using guessed type char `guard variable for'std::money_get>::id; +// 4E8208: using guessed type char `guard variable for'std::money_put>::id; + +//----- (004DAF40) -------------------------------------------------------- +#error "4DAF47: call analysis failed (funcsize=7)" + +//----- (004DAF84) -------------------------------------------------------- +void __cdecl __noreturn `anonymous namespace'::pool::allocate() +{ + __gnu_cxx::__throw_concurrence_lock_error(); +} + +//----- (004DAFD0) -------------------------------------------------------- +int _GLOBAL__sub_I__ZN9__gnu_cxx9__freeresEv() +{ + _DWORD *v0; // eax + + if ( _CRT_MT ) + __gthr_win32_mutex_init_function(&`anonymous namespace'::emergency_pool); + dword_4E8380 = 18944; + v0 = malloc(0x4A00u); + dword_4E837C = (int)v0; + if ( v0 ) + { + dword_4E8378 = (int)v0; + *v0 = 18944; + v0[1] = 0; + } + else + { + dword_4E8380 = 0; + dword_4E8378 = 0; + } + return atexit(__tcf_0_4); +} +// 4E8378: using guessed type int dword_4E8378; +// 4E837C: using guessed type int dword_4E837C; +// 4E8380: using guessed type int dword_4E8380; +// 15412D0: using guessed type int _CRT_MT; + +//----- (004DB050) -------------------------------------------------------- +void __noreturn __cxa_bad_cast(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_4F6CE0; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_cast, + (void (__cdecl *)(void *))std::bad_cast::~bad_cast); +} +// 4F1FE4: using guessed type int *`typeinfo for'std::bad_cast; +// 4F6CE0: using guessed type void (__cdecl *off_4F6CE0)(std::bad_cast *__hidden this); + +//----- (004DB080) -------------------------------------------------------- +void __noreturn __cxa_bad_typeid(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_4F5E7C; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_typeid, + (void (__cdecl *)(void *))std::bad_typeid::~bad_typeid); +} +// 4F19F0: using guessed type int `typeinfo for'std::bad_typeid; +// 4F5E7C: using guessed type void (__cdecl *off_4F5E7C)(std::bad_typeid *__hidden this); + +//----- (004DB0B0) -------------------------------------------------------- +void __noreturn __cxa_throw_bad_array_new_length(void) +{ + _DWORD *exception; // eax + + exception = __cxa_allocate_exception(4u); + *exception = &off_4F6838; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::bad_array_new_length, + (void (__cdecl *)(void *))std::bad_array_new_length::~bad_array_new_length); +} +// 4F1DF8: using guessed type int *`typeinfo for'std::bad_array_new_length; +// 4F6838: using guessed type void (__cdecl *off_4F6838)(std::bad_array_new_length *__hidden this); + +//----- (004DB0E0) -------------------------------------------------------- +#error "4DB0E3: call analysis failed (funcsize=5)" + +//----- (004DB0F4) -------------------------------------------------------- +#error "4DB117: call analysis failed (funcsize=8)" + +//----- (004DB1BC) -------------------------------------------------------- +#error "4DB1C9: call analysis failed (funcsize=5)" + +//----- (004DB1D0) -------------------------------------------------------- +#error "4DB1DD: call analysis failed (funcsize=5)" + +//----- (004DB1E4) -------------------------------------------------------- +#error "4DB1F1: call analysis failed (funcsize=5)" + +//----- (004DB1F8) -------------------------------------------------------- +#error "4DB200: call analysis failed (funcsize=5)" + +//----- (004DB210) -------------------------------------------------------- +#error "4DB218: call analysis failed (funcsize=5)" + +//----- (004DB228) -------------------------------------------------------- +#error "4DB22B: call analysis failed (funcsize=4)" + +//----- (004DB238) -------------------------------------------------------- +#error "4DB23B: call analysis failed (funcsize=4)" + +//----- (004DB248) -------------------------------------------------------- +#error "4DB250: call analysis failed (funcsize=5)" + +//----- (004DB260) -------------------------------------------------------- +#error "4DB268: call analysis failed (funcsize=5)" + +//----- (004DB278) -------------------------------------------------------- +#error "4DB2BA: call analysis failed (funcsize=34)" + +//----- (004DB31C) -------------------------------------------------------- +#error "4DB34A: call analysis failed (funcsize=27)" + +//----- (004DB3A0) -------------------------------------------------------- +#error "4DB3CE: call analysis failed (funcsize=27)" + +//----- (004DB424) -------------------------------------------------------- +#error "4DB44A: call analysis failed (funcsize=30)" + +//----- (004DB4B4) -------------------------------------------------------- +#error "4DB4D5: call analysis failed (funcsize=22)" + +//----- (004DB520) -------------------------------------------------------- +#error "4DB55A: call analysis failed (funcsize=30)" + +//----- (004DB5BC) -------------------------------------------------------- +#error "4DB5E6: call analysis failed (funcsize=32)" + +//----- (004DB658) -------------------------------------------------------- +#error "4DB679: call analysis failed (funcsize=22)" + +//----- (004DB6C4) -------------------------------------------------------- +#error "4DB6D1: call analysis failed (funcsize=5)" + +//----- (004DB6D8) -------------------------------------------------------- +#error "4DB6DA: call analysis failed (funcsize=4)" + +//----- (004DB6E8) -------------------------------------------------------- +#error "4DB6EA: call analysis failed (funcsize=4)" + +//----- (004DB6F8) -------------------------------------------------------- +#error "4DB705: call analysis failed (funcsize=5)" + +//----- (004DB70C) -------------------------------------------------------- +#error "4DB719: call analysis failed (funcsize=5)" + +//----- (004DB720) -------------------------------------------------------- +#error "4DB722: call analysis failed (funcsize=4)" + +//----- (004DB730) -------------------------------------------------------- +#error "4DB732: call analysis failed (funcsize=4)" + +//----- (004DB740) -------------------------------------------------------- +// positive sp value has been detected, the output may be wrong! +void __usercall __noreturn std::_V2::error_category::_M_message( + int a1@, + _Unwind_Exception *a2@, + int a3@) +{ + volatile signed __int32 *v3; // eax + + v3 = *(volatile signed __int32 **)(a3 - 12); + if ( v3 != (volatile signed __int32 *)&unk_4E93FC ) + { + if ( _CRT_MT ) + { + a1 = _InterlockedExchangeAdd(v3 - 1, 0xFFFFFFFF); + } + else + { + a1 = *((_DWORD *)v3 - 1); + *((_DWORD *)v3 - 1) = a1 - 1; + } + if ( a1 <= 0 ) + std::string::_Rep::_M_destroy((void *)(v3 - 3), a3 - 13); + } + _Unwind_Resume((int)v3, a1, a2); +} +// 4DB76D: positive sp value 4 has been found +// 4DB771: variable 'v3' is possibly undefined +// 4DB771: variable 'a1' is possibly undefined +// 15412D0: using guessed type int _CRT_MT; + +//----- (004DB784) -------------------------------------------------------- +#error "4DB787: call analysis failed (funcsize=3)" + +//----- (004DB7A0) -------------------------------------------------------- +#error "4DB7AC: call analysis failed (funcsize=4)" + +//----- (004DB7B4) -------------------------------------------------------- +#error "4DB7C0: call analysis failed (funcsize=4)" + +//----- (004DB7C8) -------------------------------------------------------- +#error "4DB7D4: call analysis failed (funcsize=4)" + +//----- (004DB7DC) -------------------------------------------------------- +#error "4DB7E8: call analysis failed (funcsize=4)" + +//----- (004DB7F0) -------------------------------------------------------- +#error "4DB7FC: call analysis failed (funcsize=4)" + +//----- (004DB804) -------------------------------------------------------- +#error "4DB810: call analysis failed (funcsize=4)" + +//----- (004DB818) -------------------------------------------------------- +#error "4DB824: call analysis failed (funcsize=4)" + +//----- (004DB82C) -------------------------------------------------------- +#error "4DB838: call analysis failed (funcsize=4)" + +//----- (004DB840) -------------------------------------------------------- +#error "4DB84C: call analysis failed (funcsize=4)" + +//----- (004DB854) -------------------------------------------------------- +#error "4DB860: call analysis failed (funcsize=4)" + +//----- (004DB868) -------------------------------------------------------- +#error "4DB874: call analysis failed (funcsize=4)" + +//----- (004DB87C) -------------------------------------------------------- +#error "4DB888: call analysis failed (funcsize=4)" + +//----- (004DB890) -------------------------------------------------------- +#error "4DB89C: call analysis failed (funcsize=4)" + +//----- (004DB8A4) -------------------------------------------------------- +#error "4DB8B0: call analysis failed (funcsize=4)" + +//----- (004DB8B8) -------------------------------------------------------- +#error "4DB8C4: call analysis failed (funcsize=4)" + +//----- (004DB8CC) -------------------------------------------------------- +#error "4DB8D8: call analysis failed (funcsize=4)" + +//----- (004DB8E0) -------------------------------------------------------- +#error "4DB8EC: call analysis failed (funcsize=4)" + +//----- (004DB8F4) -------------------------------------------------------- +#error "4DB900: call analysis failed (funcsize=4)" + +//----- (004DB908) -------------------------------------------------------- +#error "4DB911: call analysis failed (funcsize=7)" + +//----- (004DB920) -------------------------------------------------------- +#error "4DB92A: call analysis failed (funcsize=18)" + +//----- (004DB988) -------------------------------------------------------- +#error "4DB992: call analysis failed (funcsize=18)" + +//----- (004DB9F0) -------------------------------------------------------- +#error "4DB9FB: call analysis failed (funcsize=7)" + +//----- (004DBA44) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1) +{ + _DWORD *exception; // ebx + const char *v2; // [esp+4h] [ebp-14h] + + exception = __cxa_allocate_exception(0x18u); + std::__ios_failure::__ios_failure(exception, a1, v2); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::__ios_failure, + (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); +} +// 4DBA62: variable 'v2' is possibly undefined +// 4F1B14: using guessed type int *`typeinfo for'std::__ios_failure; + +//----- (004DBA94) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_ios_failure(std::__ios_failure *a1, char *a2) +{ + _DWORD *exception; // ebx + int v3; // [esp+8h] [ebp-10h] + + exception = __cxa_allocate_exception(0x18u); + std::__ios_failure::__ios_failure(exception, a1, (int)a2, v3); + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::__ios_failure, + (void (__cdecl *)(void *))std::__ios_failure::~__ios_failure); +} +// 4DBAB9: variable 'v3' is possibly undefined +// 4F1B14: using guessed type int *`typeinfo for'std::__ios_failure; + +//----- (004DBAEC) -------------------------------------------------------- +#error "4DBAEE: call analysis failed (funcsize=4)" + +//----- (004DBAFC) -------------------------------------------------------- +#error "4DBAFE: call analysis failed (funcsize=4)" + +//----- (004DBB0C) -------------------------------------------------------- +#error "4DBB19: call analysis failed (funcsize=8)" + +//----- (004DBB28) -------------------------------------------------------- +void __cdecl __noreturn std::__throw_system_error(int a1) +{ + _DWORD *exception; // esi + void *v2[2]; // [esp+18h] [ebp-30h] BYREF + char v3; // [esp+20h] [ebp-28h] BYREF + + exception = __cxa_allocate_exception(0x10u); + `anonymous namespace'::system_error_category::message[abi:cxx11]( + v2, + (int)&`anonymous namespace'::generic_category_instance, + a1); + std::runtime_error::runtime_error(exception, (int)v2); + if ( v2[0] != &v3 ) + operator delete(v2[0]); + *exception = &off_4F6054; + exception[2] = a1; + exception[3] = &`anonymous namespace'::generic_category_instance; + __cxa_throw( + exception, + (struct type_info *)&`typeinfo for'std::system_error, + (void (__cdecl *)(void *))std::system_error::~system_error); +} +// 4E8F48: using guessed type void (__cdecl **`anonymous namespace'::generic_category_instance)(_anonymous_namespace_::generic_error_category *__hidden this); +// 4F1B08: using guessed type int *`typeinfo for'std::system_error; +// 4F6054: using guessed type void (__cdecl *off_4F6054)(std::system_error *__hidden this); + +//----- (004DBBD0) -------------------------------------------------------- +int _GLOBAL__sub_I__ZSt20__throw_system_errori() +{ + atexit(__tcf_0_6); + return atexit(__tcf_1_3); +} + +//----- (004DBBF0) -------------------------------------------------------- +#error "4DBC11: call analysis failed (funcsize=22)" + +//----- (004DBC5C) -------------------------------------------------------- +#error "4DBC7D: call analysis failed (funcsize=22)" + +//----- (004DBCC8) -------------------------------------------------------- +void __cdecl __noreturn d_type_cold( + int a1, + int a2, + int a3, + int a4, + int a5, + int a6, + int a7, + int a8, + int a9, + int a10, + int a11) +{ + BUG(); +} + +//----- (004DBD5C) -------------------------------------------------------- +#error "4DBD5E: call analysis failed (funcsize=7)" + +// nfuncs=4486 queued=4231 decompiled=4231 lumina nreq=0 worse=0 better=0 +#error "There were 134 decompilation failure(s) on 4231 function(s)" diff --git a/test/wine/info.txt b/test/wine/info.txt index b0aab3f..8d67fe9 100644 --- a/test/wine/info.txt +++ b/test/wine/info.txt @@ -1,3 +1,3 @@ -root@DESKTOP-AL3TQTI:~/github/wx-compiler/test/wine# md5sum wcc.exe wcsc.exe -a310e176feb4bff40eb6d901d7b8e083 wcc.exe -1a9ed324400861c62d2d22c709bab105 wcsc.exe \ No newline at end of file +msojocs@DESKTOP-1TV4OAG:~/github/wx-compiler/test/wine$ md5sum wcc.exe wcsc.exe +3c3eb3ac0ec1f85e5a72a9e7608a770a wcc.exe +472fef6c6e0f6b3217e3d3dfa85188b2 wcsc.exe \ No newline at end of file diff --git a/test/wine/wcc.exe b/test/wine/wcc.exe index 3d75fdab4381be3e72fc6da9fbf5b276819e99e1..c6432147a146b02a3a920466533ee46280c33a83 100755 GIT binary patch literal 3120488 zcmbrn4SWV-pnov3@R81Ca9I}r};lmb~9$41Bbu) z*LMr(Cj6#2T5x*svIRlhslMnB8Dd{K2yy>r`SNF-e(6QQi%?eH6@S?GbX?D%3}XLs ze6y-fpQjO5kA_g@;`zC_7XAh=r_TUg@6s#KSk;j}-<7yNh-=)x9ADp@(=WdMdKP7r zWcYl257$GVuZZo=*6oT6AxmE}Dz#~j4|-Ln=N3*RJ$X_GJg_HY%R=){@Pc!6yDWoj z1+VjO>GjFd9Z98(_ZqyTTjJ#m@6&IvP|pey5%7Fm(^}%C4(~G{OYknHe2dQV`MTkH zM;9sc{^a<8H*lcbZkmZpIq+uTy7n-5XPhZ`;0*tU=zb(0D|g->^mlllL4D71+`;e-AgPN^M{N%nlT{>&s?)PeUCec^)% zDaG&OuB0lZM-~1k=_F7Zqz2?t^ zr^n5+4R|K}PYCZxdt_Yq2@r2E9n4VfJ~BmpF^n|Th4&;APR;SDpELXzRKI%XRlo0% ziTMRS%b%&*fKzos4NA5>xd5a>=PDZ=v5%TcgjBWvEmYdQSB-xicnkT&XQ8b}e0`@9 z@IT@w079$&o8q&o)kvUN>6vOh8ncf}s$L*ikCB?4n@Yqz=!i7N>UM5lmhEg_md~=S zD2rT6@vZC5u7&qxJ0miC%UJ2gQy<9(S#*y)gc}m@s5db|I2out$f$aQa@(3+T?Tyy zD#hJ&)SfL1eCkC?Qq!hD^>Yf(Jb$41^QMz~qc>iK`M#!;JLA4A`frl;C#htA@GpFp zgsy_zwyFufruP9f9Ep*=h*G-j;Ix@Ds$=}sCbDYLrvcxlzPkcGccb@6cexDwQiF&D z9@}|D>mDI*DCxjK_)jPIMvP!B?T`vK}kXeXi0gsKR&C$xr;k5Cz* z{VxMrKxhx4S%f|(G@8&(LVXFnNhpobRzf~PFA!2$fGP;p5qg49C7}lil@q#)P${8O zLURe-LTDvd;LTD}?zrZ2GSr_G4;2V}H! z=%h)L66YtX%3-O#tE$pi^>L{x%+^}lCR=Y#uzn8j>1|EgJ!Ho2pzyKT3N)zWzUb() z>ciC_{rSd@K0DA5u1a%vSv#G}_VqkCZL?}UyXxtuo@#$G=Fah;ov@c|mQ8YoB|#7r zLvK5jWF=tY&9V+yuV+<-Uv2vSnFDW+vGR61*++yArOZFx3GAi}#OTzMyJH$U`U(rJ z)^=dGm78SUoS9?=A@SCH_ViY=vD-e<%JtX4N`n!K2JR4Z?_7vcU4(9GAwA;9v?S>u zMUJrp%3VZx^DUU*K(fs`uj*%hwE=~=UvwQ1R%y7D@ZU7NnsAAR-z22UqX0{hHoW2RKrgb&eHIQgiqG+km~_=(eUMjJ8JlL!U=#YX@Os@<^WEf zaO<9Q2+z(-hN#hj3L*s~5Fw=AmEHd*O2Th7SpzcF98|WTN1-J5eC=7BjeCA>YTAIc zi7%_FwnX8EBk{x2&PKx4bcl_kgC?x(Ow}I*poT{PMvLmdXeZx&H>(M4iMpPI=NJdAWJf1rzvh3fnlJNn$0?G8?UQ_;-{O&Osv*2K&tC)6NpM(YlbulsMQo3D;T zT|3v0pz4NA?q94Lu+ttzBtQHaGJeq7Ne3W;brzL__c@sN=&45>o*P=YVqY6yZD2J8 zWmP+YHIuDC`Q)0w8ejP5rcfqL#37>H@li+L1Xebq@(I`|fIj=(xx|5JolvDm8C^yd z`+)B9A@cO=SM0JAsw-5Nyg8Ruc%H!KnrM7(C(VJx5*R&~#Vg`DJ+is9(& z{US_fQ5_8k)%U7jpwd*`B=zNeP+jYgYR6tTs#dsQ^n(3JeStsWQ}4VkAOd^uOI_CSX{{-+LLA$4d!gUX8hjww(HZX# z*QBd|kj{5@Yp^SN^zr8@QD-(OtBU5!&g(qEo{C_ZxRMF76S5Ec$Qc9}PsTVRXp6aV;+K`Xl zS|9xI6pUKpgO^P8$r2%P>*WUWm#p>*{Uw<(aC;14oB?yf2agTCS(}*TJxWZDLa9-x za}-L8Lg`T`BMN0kp&n7Fw}EOB*^vaQJ?!Ao^j`i<_6Gxs_=AB*lG=(Xj0vNytL}a( zP|$r#x<5v`zZYw8(|v!*=)7pJ=N3$rHGi$Y+ zRzr!EwuQss`q_Ktsl#DV$HHl=$>qM&Q1c=0Uq6zb`MJJMgf=-mO z6FG>dFoxT(y7tC!4~jHH`=Zc6K&_?mjKLl>dZ=N|U*a1W?Q0J_*GsyRd>|Nb!LTT9 zc|e00?DnDRnnZHr^&v_3flS5sVMwz+*pnC`PKGWg*=IR7G+F(YjZFwgdK4XMbHiCF z>tAikbW%59K&2Dz%v#~Wom?v&aL3n*Jl&DCB18A=T3;J<%ss<8Ygvb)Lm9!uqC@RM z8Fs&t{kL?AD`_)6*Xrl0T3=gYCt3Zpy_}X+6?MN^yRe=@XfR|(a*Fd2(Coa_luiC_ zPC-)kDZyEbPtQIvIC}BX+3kb#vOA`ftf4%ieZ9e~J1Dz*N(q+uQZj%g-LuaQ<}B`% zogM6(Jv4L+F>_gdME3Mxwo6y;?}K|>(sKKBZi3?{}NLT3~DoX}`OI|=0xdUM%` zZVArl)kTNW=C=o5so*Nv?TkQYL_*4A+pcd<%zR?5CR9l1evF3LxUbMsZlo(ra(HX1 z@!vGVFd>tY86DX9eq8+8d4GioB))7y)-K2Cfm*lj*^NG`Yi~NjH)KZYqM4X#&WgTx z06C>)4-F1Phr0*Uv$I13*|>D#=0b;2g zFQ-eO;hvmUh7TjB+fYb3-MIRH$mwGYzbB{36P#640IUAiJ)D@BCTjLV5JG5XkJNEW z8xGTR|3%y+{5bzkWd#VmQN7vJ1`b=tT!kMqj3`tuRNz{#ez@%jhLcoA2{XUIJ-z9! z$Ampea==tLxk-KvO*Q=or6tH@WE3hFoKYlB66^{$SR^_M{t-|{4_!U6w^AQ z_*5sbR-Q1LK&7L(9N1DxgIlsAl#I39qP1;PmRE(VT3g@unp9B(JfD;IQo@J8X3Pbx zwDQ(DdF!meYSroA3}9DVhZxWYwmX4!l`xa4|cT!+ryjv*0BFF zUVBhKFAV4S(-E*IbJ0O9Q4g;|ti#J!=wvuxcXTVvr?#>t!CF zgeyBS?NM2uNcf=FsjndlL2Q=F1xf;93`DglvQD)=4MslD}W#c{><8vIp#+71FLZJ4{`D|suy>4 z^wpG1#KVM_>Fx?_sb)K*Zf)uL+UB2H&EE0+)w|XY{vaj1hy#9M(^b3D!`WRDLNlD) z^n}e;Nj`AHgMFbq(0v$mAy4(3+XgGbs?cCN(AmkWr0{=1%lWqO=}bs>oVlpxOicAV z)6>9ks=amOr+mqG|uA6_llUHTRDp^)FxbB8yv6MlF zC_#3BT5vT|R)vLbiW8_bWM9O>W&-FtGwLu4XP}V+y_S3wf-SV_N2xCVpu&`^zsR*z zwc}MfpnhG;N0n+nu3GNBL^_)fwwhffGOrD_)uZDZ6}cEv8N4~zu4p5N%NOdzsW{m` zB;OxAMy8fKFs#z_vMv*?=ewU|RbgHo4?J;7S~JAHOn;fn>Xa2#DeJ2oJ=UTG>fwE` zRsu%XYFM>eKd3_R$aM+3GBOI6s>iJDxh@(lXR;Jfb#t zHZ41j0$tS$X4=hdy^4)+#h^9y@AcHwqtS*Yl(5rI3Lo+ZyE^&)@S#>I#TBr4aNLH- z0-zUaMm5u;de+4>;9$y<%|O5EQzpWn6n?o= z>A0+Qc1F;j-7eHRSKMI|<25?Ir$K>(@cK)l0LAB1^f07Yy~y)_ndeWN=Y!32iC|Ix zCG*@i&%2oC5|iWk%jWr2=J_Geb(}OPtSXuZ7gdr0kc_-SM9j;lo{*)T^Ka}|H$i!2 z^wbVGj0v{DvXlm5!jmb&;cKSib*N}h;zCx!kHcn)~;2N-2o(80vfJ-h}1omRhu z$dl-JxW@04B%!wBuy?g3e*8r_y{c8hq8fSZQ_Hu3n85-gvexluQbwxh`i?$K6&YY5 zGnp*rqI80(p!Gskz~i}zks~l7h0ZF991|C)+undtq94PsCxhw9FjU2B$TT@n3ju1q z>m_PGDyDn2p)q=D`P>{kCy6R6bSW#e!c?tlh3T54MtrF=A2Kc2&|~k@64tA(pdL9M zD;J~e9dJJ?av|o;;JRR1(MC>OUoZuRiyVU6D^U@W;EYn8_97%+FIo__Mof&<{2e__ zVT^(?+Q1tcCOrmUBb;)3nP;n_&!nq&#Miqu`b?(syy&eoz4AM4tRA=@83*j6L8z2aZ$fhkok(aZp)^7{gpMH8gOHz4 zDxseq2Xqi=h{#?-4TQcTw2jb5genN_AapOGZG?&lZ2}Z&_l@6IhF~*pr{b$Ry;IS= zw9b?we3Jc(jC{2S1oZyJ^?;%~8@=<@CDAA6$3MZw#F*%lbIg;L*{EczFcX3(|r;*renFt=7@x zH`y;XZS`hbm+Q6~-qvlUu`O?hhvMpOC1Bx%ogHNK4*bvEoxwGT#JRUqh|Qfs?CRXC z_jlOr8&5GPJlyV1nVryFd+vJE?0#uZoP}v72WcfZ!!oR4T>aM$lciP7uq0pYFrGZ| z)eOrJkFpQjNQGE<=sf*bxXZ`*nG~y)JD@gq5Dluaa$AypFkpw&Cy&b7?gL)14okU5 zXFs`r7T%M=%ujCLA-U=Ej;u*QgVJ^_+QvV(z{yW=#->>l`m&!tK8@y=`RuWS>(=H%d*lFn@}Onyu#;BW!J2>^w%+{!LDAcI ziaEbSvWFp=DIH3+M-H;b56CI{seP!;Fo}UnkF>`6G0<_u!EJa?4@@g3Z;u)VmshlC zk1rn!Nj+a;&u(b(Oh#IFG(%J_ZhYmm&D|e8loWFqAD$oX zkM*mK;I|lOZt9>`G2}x)E?U&kCqJd+c|HJQg+cs#GsF{7N<=i0kLqYB)J>hqfFN3+ zdf?Wo&sUwnnwzD*)3i^`4_z2*(2qiWS4d`mL>G9=pOcfS|W(oeqjZ>Yax`s!?snh5Ci~5#y=eQ1Nu01)T|o&O6mY2aHW2+0LL7 zSpp7P-!y=gk*-l?%_`4}W8xlN*<<1Z$c;>(BWkSXV}$0TH4KPhWq31coSz;mqnop0 zff^{+DW8yXLgi{dk}LFMvLiX0twA{0Q1Geb*Wd%t!e;m$ALuYlPipXumzBW1!zPG> zTB+SmUY*<7?c$!~_OPnmB)0Gn=t5{KadEqH=~}03!i*O4D&4Pux6|Fhn{qXexbSvQ zm5FC#I(LjeW&IzV#i)Ts%BGUuat`6RPfGDC7<(}6%xHjeJ_C;PIq?`DlK98>a?3K< zwjv>NClL9F0V5x6kw>8~S;l~oWzXocw^_!}k!APmvW+Zbn8>mvy6j1oF<@lbJYBYe zWegozHdB|~$}$F#EIU`qQc7lHIoIxhbTbc3`OgTeN zmVdpHT}~-!XUZ9NvV4ar_m0#tRAl)Jro0}rm;5kLX8EI19-J1g$%b;A{4!<^_E=S| zL4OM9EWoo<@k~8y%I}Jm4`BI9Q+{Ktd=SeQqui=54Sb+xKhV*)Ebsvwh<0{mzZv6` zxqSD=__fU~#`w@Z(J}t6#Tb7gkMtOGdBA?XrpsiEy>VZ!%Vdnbaeq{o$ryX%euplT zG4{s&MqMUj?2Y?hr7Ska-q?>f<=z;3V}FJz_r};8`);P(8)I+m+n921jJ>h{c7+~$ zZ;ZM4V4vSN<=z;3IF}fDc0WN!J#UENOs@2(^nO3qZrMQT7S}WfV z@S4{eRIZDNdOc8q24mA13Fh-<6*86&UaQ7l$1s!y9Q#2KPz&#cr?86&UPEx~9Q9YZ zPK3SSeYTn`*EBUASD3X?yg>YmK?>$|5O2ZpT-?&c_P~8pU~A-9%y@6vE)k4(PT@ko zcTNEgSI&`r3{*Qe`2w8E==Z%om7#;&-u5D%F=8yOX0f@=4)PEQae)}J_Bh+6?#6Kn zdX0m`JcF1x?vR94Ms5bO1i5KW?g%S4+sU17Nk!9c2iC0+Dx9(X;CB{yixycI@HCAHqu|g3tCs~Lldx^Ebg>`>X?ztD%l(1s>C))#)o3 zbXB5IqO;=NXbFA-GiWuu1U3d#GBD7W)tF`M+s9k9W;%Hk>v z0SOL36adUyI3h3w$2|fmIg85mviBU!QIzJZHsrlgHQf!J`h&sB&Quq3JA#s@Yb3>K z7!8E#*lb~Q?_e*0u_R>w9EdrAQV5$5ijfP&dOOJoHiTOUwp86ttf*l9v=SgXAElJ5 z)#!HME}omH%V(N$)+_`}c`sX{GasVl8Cd^xxV6N7&(Y)*l*sFJ(m z)Zrp38OodBXCXJaJ)|~Z8NsE7Geb5RKg1k@en`@A3TuG@QO$zwZKy$oR&Ajw`5Oka zUfqHVWB>WMjsm~I3)~|l@p2goA`d{{?QUp@AsE%O173%U zUXOKXU72*~AGolU$8oj0RWj}gH#LQhscZn`rkbqyQap`p*J5G6+BWOgV(i_Ue$52p zC{C)py5KqFu(e2LN;0zH=K=DwxJL?&A%Br>#*{O&u~UIe3IU^}k_-LjkFg z0JiaHMin#2U(d810L9kA%Y@{0T0xvqwm51Nz%QgPW66O>r|l`gXwqR z=)pz~N0W&+IU%kv6XH!+wb+Ch3CC&_=VVlqjF(KwF|K$S?3qs@Bi5ukx<|v0vM_mQ z(VD!w3=XTIE{XxDbr8vx4 z5Gcn^KisaTqSKK*g5Qo${Om;+Fv@l}cz-a?of`UMOm-xp7zB*@5uKMHpeLH(`2g*R zetrh5(F?(DeFu0l-Fq9NV4D7VJ0{|7U;*3s(y_d9Z(1{X6iebbP#HR?T`?3Q|9FKKVXM0S#s-{r*T1s!DLDWRGbgB4K_^NCcGn0gV zT_>fXRydEiwKG~~;+nJFqs44*Gg`EkYRF+}o%}nr^s%Zj={(1Eibt=H;f+e7+$F+W zm+&oqU+^e$XoABX@<6kv4_$eAaAfx-eT4TIpbZyqM0VnrubAx=i@=jcI9Fl?-c>Iz zV@&=o#KB_;qLZ7|vb9oJ;GRG^NJeb}I4d--AK0iveXU+3DduQCU-Dh)if2rojy>V_}B8R(ym`M}22(W2eHU=jC523BWPxvYpj91V%u7YP05LtJ@YZ3Z zFnFtG^{7smGJ`ZqPxjb)gkvD>SgujQ%~ z%NO|P<$RxZIph*vkki_kn?0Xz|0cmJ(n@>sp%8PR9I0wPWrY3q zsPwoH@eXv3P7tlt+fn0)!MGbs4$n3|k0~OyF>g8e5X0zMR`4Og;!hD6hZ;1kE?~=i zO#ya$yn(?)Emp zYzh1isTV6x>bpx~Qr~G{Nc|0flzQSqy%TD7-p3(JL9O@oDLp|g0h#qyjM+vt7g156OkKK9c?5B>*-{XGts7mGZ}p#_i}Zoa{A z=-Cdqv0;8Ye}J8XUEwn7;_c8~#3@!yxJp*lpFk#vu()`kC3%IGWMq+;=acOV(@=B} zK993zoyIiF^xg9hEU#UvS;sf(G;7wnI8F%~2w z!c43bzoLu#>S88hrT7_L+(j4f@QPRJ;-H(U8K%?M<~l(SIQ8geM0=5|@Ir*HT<=xB zKvzCf7dLptxw<$*7k}v$_m<+6lKrr;kq;4zgKP33Q(fIvrB4*L2`|p@-O}A2Me%W& z2Jun$^Dw%MX6?M?RL98I@K95s!}j8I7;;hLJ!}bT{2f9GRQ{2-jp|9Pa3m*!T5tTF z!N78?w;>Z86)B@SgB=kOh?8;(+?32wGFXEzGNp}gqesf3EsgHNYgG;e<5vA5~k^?BzMxJkPFG>v_%h1 zF6XOTg$>wDOH!j?+zK~wnj z8V-is)0<-?0b@!OBLf)12GU$J!H0W_?m(r=$DMV^#wKXLQz1dDSUjrlUoIV~wDZa+ zrMs_0Sbrh-)7|B64LK>tV8ld|1`i{YtJQ%bTE=qVu=YZrakrHc#fYkUEEd=SN7D7g znDP%}pEsc*%+JetNQ5Rv&O?h9!FV*vWMA{~#;!KYN4J*Fo4!B zc~SIdHrf-$(311G3`7A4{;vMK^*M|LvN`_Dqe&A%hU#~7yiJfP#{T2XmyCoAcN%Pc zgs=LTu%s(0t3x+QSW?^-I?8#m_;)n^7X%e(&}jVgSY>#d&AX_f)cDE2&+&2KIBxcX zwM4KM8=6J1nr3LGFV;h&7jvg0otclRz=JiA&hfnEJb<1ehk<#JJ3wV1$I6Il5Mmlc zOW?AO^OAd&U8Q$H9>m0`ozerNcA|-3&tva@zESu77p~g{rvRUBnPAQgbw^=!L8QSf z>OuHqR;rOoq5ejUy;$~~E<3)txsV(!%taMqg9uIxQGz7Fm8c(+hv%D54lmC1Ej}K( zG$ve;7zd#h5SkbcT#U(gLXi#*K1Z8w=&09ufD_L5U*m8p9UoS+5B0+E7Eua zgtI#JDzIcs53%{@frt)bUZpG#+^LEeVP+>r@=!(7ydDKbi|+IVr?TTWNXO3rC2A2H zvTu!r3iT?mET(a@AJrPyIOX>>?&(jPX`Cz%{sw_Cc>sTtOcRU_RjWPNQi&dhl6#@+chB>Z0aL76P%i*$2!w0F^3Q4nZ${H%!E2m}8?=Q5&=Jg{pyXs- zf+bF-n}lT!bLxN5`GWSE3=d$aUvCnUa{l6bz!dbU*D_I8u0F>-LL-whFmW{+M51o3 z9_RuLkNV;RSRdp$^dxy3$z{Bm4K(#A>T{EHGUkh(?4CzR!+_zm5v?}_*%x-mxSeZJ zMY{$s!SxNKXf=AMmmxG4`36c=E^z~;5I)(Ux4aH+1i4ZUDagKfF~emnzeZz=1#1*I zjvT)|SAwgOAeI5@o0Bl1shiC5+>4m%4-<>oD74! zykqMo^R@hWAVAG+MofL?`Q=hogY56h*giC^jrMzp>>b|NfHcih4d>(#Ls;&~eHKT*6_kHMLG4%Hzw^8}x7O62rZ z7>)~jJ5CYChiY3bGM?;law$1M*Kt3I63l)t-WZ(<_KceTyg;idkAIT$F4zE}KPi!c z?_lm~R020fWB{{v@to0p^qe~T!JtuvgX~)9Xj8V0W!IuiaxTM>1KUWY^99e;S^&PN z<4^{_8ttKVjXvYSG{*dVe3?8pbXiFqBW(q{I3p=t+FL=)*2TydYC7x&H0x;?w|v5| z@ed0ueKSuT2~u{!DIQXv4Mm__fmBm?V=v?)hc!go8ez9-@7h?s z{j7JguGb0~NY-1>ti9(@&&c-7SiKw=wa7PEDMOH49y+V;h1B4)hpVieG%QQ5xwz6c7rYW{FIW}9WZ-axhJ44 zE-9T=Jb{X~-g+B?(QPHOt?a|K^=DcdfEW%zLrO`XSW8@`I;*znmM%j}rdN+5o_EiR zYsvKK&$LquA0<8d5gKKB#AUCuitn(YN59lXdvq4t85C{j|Io^Gv?9HEG1dxK(ax%a zx|Nk^#q{P~cttns|I$i?%UtQiEiv+3jXSGSk?2Dw2E{rNBKcGQ6#2+X&=t0a#pud1 z+Pq1v8s3VseH`hY^v84~=Xi|zV+6UxcUI+SM(+ecqd(iR6mZjjhhXGem5M%8&QaY+7rO0ZK5UDMTkzfYFSv6OaXcc4T9Fph|CE;EwZBN$~xi7~B zm@}gkvfln?R3`0M%b&HwJzd)AuF;PNI+t7wwH^jCBIR=J6YH_p;Es4MLAQeorzS3( zn7D9a;=+lE3nwNnbXNNHOF2UGuY|}s$etK1;j#mSj)42`iDDXL*&#{zlh8I}c{qnz zXxLN{PTz)TAk==~R8|}EhV2h;M8~Et@Il+EPgx=CsAsR^u03iQ)}PZX{R<3AAB49* z(UHh-aEVB$WEQ$5Z$(ETht^pp=QxWmylF&5|;)$1LM4R^y~hj5W(>IMg61)8PfmXtGo$%B;QM2L-g1 z>PQq6@8T_uwDRNDap)V=p=-&G7zCJ|&J5VaMV^U`3FER} zLS^IDe>?@QXP&NC`T{k(PQ8M9u{B^5<9EF}D2~;8crfanrRzPuN!N3lwO5OJroC~o zdf%OfdaZOlS(~E0NzK~JjkVWV*9+*C2wxl|dw1Y8SS%yb21^;5U&Ks@j)qkLhK~5u z`_~}emAMxA1@j1@lWIiVBp+5AgtY)9b)}KiJFl4@|9<8g^t-}uF=j(Wi5>%2O7u9w z1i?IPrLuHcUsEO#<#D=<8A!i#J)=LKjZtlM@s*K8!(CTI{)oT(w@82-D|jg-k6@0* zCq7!4@+VOanjpfc>ud}&)bZMNrXenhb57>T+hVbgDhkJaM&(|FEC3E(FV0~PE;`-M6BX= z!*c#uv;M^+vv(iq4=sfy#bN+D72)yq$WIV**w?0o@+aZ=d^>CeqI>&TpKGqm&isx?-%!6 z+d@2-z)BBQCwa~%p6$hR+DbFWzemzo&v713W#=Tu)Ro_hJ^Wrjlu%bctc*T{fki!9 zRYP=D^bt}qry>>826-J%5!_U*DGPu^O~I7A+JIWg)J)tmV!vlbBGf@VMphLfcEsx< zqPTcnM6TljU*rI0=;83So5Q1K*gW$XhaHXmWt3XrGGY9`aNVna7sDO<+edESxH31L z9dz+Q7Pp<502K-J`0RYlH;cE9Mn>YIP2gjc)5I|;#j|mMD>4FqV%vPoWy$%-I=&9T z(*~JHed4e_Odt0O-~s|$)x0|;J;L- zc3`hb!RrHyLYRxaD|2$5MQ zB!}=?vD*hHB)Y@SL=k!B`XV6W^8$i66o_KdYSf8rjYqZdCRU~Dj60?++Uwfn6jjs) z;7?(y_j~O}z4F{o&>+jXZN}pzAP=`SZ#$ZzN2r$Kb@u3VrGRQrS_fg+g*by!VHf)C z8wc2hgN%Q(VC=0$Yph9Y)dQE%QKYP|#<}#A;x(EFXGWb$hg;E2ST(968Y#wxePCUv zpFNkp)h3C0wV)dFsu3GvYe5>DX=|c6Ge|BawvZdwrA|T@_cI2iCk)6 zL!jFE7rU?idzlDBZxOtOoTUijMG=I&!eBh_z38FZb&)vwqhboN2yHWMn&x&li1!om zIYA74;Esk6(RDQmcu<_sAaqf>73-yXWHb23n0op9-wf-wwM1BrQKaxmZWFfctw0jK z1T+*gt5KbSUWf&a>U$_j-@!9eO{0YNF5m#&ucA-Q|9Pj(BDv$-L#;!;Bga zjkm>8-_F}7pC*A4h_d9O=>m+~K5EVmoLwo@Z!y!Nh&dUS&O|eI@fTnhf2;aCJQzrF zWXL_X7|x$1Qasic`QjNPKvAo6W@Ra{l&4&^b4#KezV0(e`Q!j%> z*#%$+h=?l^S8~NdO^f^cS75pGvz@sU(Q>$Iq7_(+_De3raNuhwc3y=#wuIWfb_&P$ z2*7y#BwckyC~wsw5N*-uKs3r_O#S3PYIG4Ar6kSRsPq0RBQ_m|Ib55~Zs4Kp=27Hm z_gf$U*=z%?!CE7BO5`<6s{e6Hq$As_S2x2bfQr1-$8oGtr_YpzXWKW?sPTXy#!BoJ ztQz|P9n6;n2bL2MFXF$!lq3K%t&^LJ}qY0vlsopV?6_Jij1}*z~%7AZ3QU*Ma7DF8e z!*ASPFQUShZ`w+}myml@lFtAPW4MU(2)%&VzM-VSaN zH9fE{x}{h_9TvMpZGjrTLRV3*2H?~XW0*RlA(bP|tVopp1joZy8<~jN>8ssx@w*7I z+^o0&Ref@yjG=psY(UoG4r7cBNc9RIK#P7U)MiCK`E1V5%Gg4xeAUvQ$>hA+^kTf& zw?gcExk4=_6?_W`r^eu!5p&%LNRM-0Jh2Q@?w3gQH7zWdH^N{myJQ5)@YhX^u+fG$GQ+K^JGe+HY}PE{w8QoT9_ z==L;DoxMh+HELxsA9)5O1-?R?_^s-j8Cs^5jDf5Qh5=^cRvS*$Yd|4~t-zu95$LD5 zl5zIJv}FN&{|;?&I+q4sR;RHg1Yl6k(X>-mV-_6uR#hVHBtENrQ<6MMT=fWKkyvi#=Zf%?Ix=KLd26t@k1|CZy4&~ zi*hOY;~DsVk3VxA2MiNNbv$2m;$l0Hf#U66@&2h&Je*&75E{(=qwQc{JC|aV+>uPl zK$Xf9qgW*!tYsXIKq|0ZJuw|Kv=Z~Sjd^~fzowqe>KSl9*E^I<%2j*&cQF>D_amb?dP-?Wp|AiRxaX>`B;|%jm zwQ5vHfguiB-gz{}TRmf(u164&i}{S@`3wfYs~jbpdt1Dklp=)FDX~it(x~cbcpJ^1 zX^xU%@uY?UU3@E#D}d4GVFC53X(ezOGmiI;lgURGt#AX>OU;EN0wM0=W8Rg_BJn$( z*P?`lSue7Aqf7Z?JTB(Vxlk z+yW;7j$|o@iIf0lK!}r_x}zG`i`OW}y}TRnnZD;y1lg>ATkhp+j3|;r5}Tw526^LL za1I?Ak%@PB`MwKIYnS5!-b-Q4JL4(e6~X2<)SOlw5?G0d6Q8J}aIU~(HRb|z0&h|c zlWVyeEZ0hvCD%IDlUG5-DCqBqs#~EnvSSK!ldF*fm?_Xam4uB8o(ua6EQqs!4p7d8!B42xlVr;G#tgw+Nx|9{ zqCleBlUCC@krpR6r1cHfr|xj`hJ+kfsGi9BDaGqKYC@w6<}GO8XA?XcFKQY_;!koR zttEcrR7yO!NLQT0l}&Y_dyRXU_=D+q%89#tELJWicRm_rjJ2SY?k6}cbfkNndx|^I z?JqS>jXo_^-J)>0>J)|X{uALgu|(9pFbMjfkLSbnndEG|&wvh8@*NRmoYg}Uq@yKI zu%jrzGs!RDws(+!|+E3iU6h0#NZf;LU zz6}6GSz*v-ms}ttRqdWaaUD`ap%;(}My>x8bcwNOqv`>WGMja7+?od+gSW!Bra%r{ z`nbM3WfxS#tnZ`@qkGA>Xx>}jeGlDfxxVvEq(rQFIJFk@q?f_s$x)_SwR*CcM}D{i zdO-7dVl&kHH-R#qU_H1HsEk-&l!!H41x~=Dcc3Et91Vu&tB->`w%z7vkk-w3pFGfnh2wVW$WGo3Odx)p0w34 zBYBHN@tG;b(`cuRAmLr8%?Pg~W#6bCYQzLNjr5mm`e(NYIPVtXK^enF_011j<k@c5~3Mju(9*=mzx?j)jT18aP!4z>*_cY`{|LND$;lsw6t( zVAn3$$qW9WBVwh~{s~4H7D?UbU@tI24XS=3$5?H`>Wrj>0IG1Su{&%%E{~FYMHUW)&W|Ws1lvs~lv@jiX z7nM1+U4NtLqAdRkuo@Aat5JPH#m-H~_#dv9(X0e`=aDFma(A#FQ{T?;@S>9lY<5qe zQdVIe_SehyA5jIA)ep}~6$ajzkg(^`MF`izka-SVOSJD6%o(*@y01Hr=6QfdJ*5fJ z3!zp8L?>&4tI)6+5H?rb467T)n;fbDurMa4dgK}Mdt*|7Dxhk{#D)As=R2Va&7A&q znii>ewXaZ*K<|<9BXBcEpe+JdJp!EaY<->+8Boz{bp}vG?M>9^T73ji zwS>#mZBbm0tPi-t_#sLp4Y(%onL<zz0iHfX-ZLdd{^I={-DG)JN{{#t4S`PPjTfCsv zKSUK6+?SXN|3C#075!>dwK0TCfiMLWZwCUj130ZVYlV6gNU`Di2&s@l{o>a}KxNAM z2gJy6`13STqc;n@;q4D>EFa?DpeeNix2sM}tuPTZ(7vA8r?zZW@~Wqj4ztO(GycL! z!>A%N?!sie0X_*e_`ajg$RAuwsmR;Lw}NaRn>5~TKKZvm0&2f<8b zfAq2E6@fD4)RwY~k z8fZzXv1+XL?hjEvbh)&##*{CKmCI&ynUsg-p+1kAVRYYrIx3+f!7^UU3?|FM&K(lj z?3ZDbgJO&LdghZrHmmNhxKz-uXI8;hUw$5>)Q-_iWIAdwil2xguKQAo2QZ$4a$~GT zv(@Fyb?Rh?#AmM#jQT+NM&K~C6EkwVAX3@`e)g_uJhU~ye3_?U=tHMiAI<|?I5YDy z_DtB7c3DmC!pI@LgK|0*2|LUPXhDw--IAe%v3Gml&G+2JnzOw5%1l;>vq3Bn;NQGZhJ7JvKqVL$=Ibk9uO!Qf5&R^UN(0|=oX5QiOl5G`|w zt-ik==uyjgB~}l7y&v!O>s8(t{gHn`4RsbPLmx_M)||kDv|o3fVKQEQz%2rk7Fpmv zPkI``IWNP1nAGzP@FQ^}_|qB@gHMsf_^}KwlAs^GKWg~83BF^F9ZQjXr8m2E0mvw&g3v zYFp0p092KKLDkSJPsJYc=*b5tZbzGL4Wb2@G9a;2Q2rZ%W7QYZs2&4FqkB3BRMCrQ zhUx-$syo@8=$`LR!7CKw+;iQwTqB)`ZK!JZ1lbQsMir27k9JRU`*CXhd@i+8?c)VT zzxUZ#XT@H`Xt80x6LfY&zgPl4!u{igX?RQ3WUz-`CrV37Q;{~{h9k0FD?yy$@FSb_ z1e<{wf;Q(M@I_ij=Xa>KZ6S4g#`XgHmUMiZ&b$e#mstn7M>Odr3!zz;k=jh>GZm(v ziuq13y6g&5#^sdiqRS?lGH#csL|v9+ z%4V^waRmDv>TSy8m4=UXS(+(h_Da1fWhuq~B0q;z0|IIu?9#`coSf*&i0jWp<8GG% z7pf2E1e-H9`hkXr!ul1+tMqQ&8PQ;4<7zsss^}i)OD%(q_V7C1gplyWMhzw$ph-7_ zBbZ#oyW>Y|i~B5=6jZ1=m?^xD1_mwnN|d{m?s$Ecfy;JA1C8p5YoL}eT$np2AmrEI zNl5@P<^u60wD4~BN3XM0&k&HKUzKCtmm7)ij6x|UPO?NTuka46{c@IhhuQn)oa`og zv!M^0javLs$bd+MTC0|zI?cdZObCimzEu#Yi01M1$_BFLKK z6^Y1m?k*j z72*qIqv=XkA#D^70mGoi4L^J#Z*;c0ZJr2CeI1~1*J16)Htxe;*3^o;O3Ji zin+5qF-p`MIPx1Ky1n;rwBVo3i1myk);3Da<8WXzVvCy*<3~`{rOk+agaBW>KRA0~ z1f@`6ZQvY=dl%|+xB>~Q?yQs~OZOJX9Ph{xjlsK66&O1x^2%>8dGRh(g?ouPOCia{ zziK?Z3uW*&eoj$KmBKwxZFhj1!Gnh~F?)j>FE^ON61Sa~W~fssc*t2h>P$(h@S7Rl zS7h)V(7Zam3EsxHb9IIP)Hg&xL1 zf>;}oo>Zt9>s&+`=4-IWVaRjGU?^!bEm*12ql`;z2*%HCMszudLI_jzGD7xB7lK$U z@NR^8@}%(AFwN&bTd4X0*m+3Dgt{9e+$ho?&B4za!bYt`Jvkh3NZoEgzV=WQg)3E% zaH_ogikJ(vqThhL08gm2cMXVTX3TDt=WHaeyybEkK$BoU%VWDnbpZhkoP4vmQMnhx ziO~A=#kAygFWi!IM=`Yzd4ga8G}K!WTl#mi)?~vG2?z_H<&2V}6_0@qzKNIbjFMN; zm*W-+&=(XfypTR>fHiV}dIKS#+YxOuf34nzS7Kt;+f#Y+L787H;?|$K5BCW9Ilp9I z$-+JSR&-BgA?^$H+XX<8jOAZZM1?YYDlKLgP5mG2E1d&7VlCN6tHs?V)p!n7p;SfW zTCP5mYo)4}Yn^%<*Cu|=SG|g?dn}`w;f*zqCvsg6JZ*wX)v735uKpHS6i=I5BhkmdG;3oT+V~x7 zG$=-%*67*C!MV0ZcaXF&F0V<0@t3ZQXS@xF#;lP<@$Mz@*60$@(y?5n8fN%xX^m!s zBpSgPFM8EJa3gfXNGr8LexGsua*S<@9l(Ua;*9xY>d^0wUt!*Mi{Ih+&kp`Q=g z1^urnbjOQz+kib6W8I!HAg$Y@QMgjwL-?@P?Pffo@~`W2xbq&y&W%Y|w;>s+b&5X` z1sUNCYP?RJE6WARFZ2XSAk;3QmFB-@I~`(*PQOkv_9JkQ$rUv{ zzpmuHHoK6WUg)#MX~#K*WoP>6t%-ESIWlgR=1>;B5dx0_|yuNk7kbd3^N-hw7$xv@F2)(~AE3PRW;DB+$xo%u9wXmN4Y zBhHPhJK@0Ly2qKYS{7_K=`y2CmQkjoq7D6#GR=S+iKn%6fY2X+1Uv+TntDOYEIiJ8 z=WSI>hGMbBPf2a1NlJq^fFSeL;z7-Fd-pDn?`1z&D-rDZz=Bbl`3~nS7DH89dw0SP zFuC;FOvo~CtEaTX5VdOyxm_KPnh-O7O%+;P@e&l&Dyza@3L1Red%RhQeFKMtoOKIX zv;#ZThkBlW{@saHa6ho*Gdmn9N=2>fPjQ59F(MM@Q7&aE#ZyeK_&MYTIbib++w>iG zdy@F0rr*C0K3R@3O4AU#8Z6C3++QS{!eVOdIZ<-#c0CpYB3R#$+t%4$aJNf6UZ#_eh;iREqoO}zgse4Q*A zrz3!e61QA3PU|Onh9%>6z5cuOQ@v!|-uyd8{WTtzj0SJnyR>A`#d>x8C+w7o&YOL7 zrg^SYeU5Dunw4XFwm9cEhnu3`V+9=BdO(byJDtazM?<`r37k>*G0;Mqj<0Y6P-CsYtn=2bGTZ2(u0_<7o+r1PE1LN-S{`Oh_@K1 z5wcd~elygKJZ^^%0J0n{mxNbd95NLCw=Mw-%$2BAGkj12h$9BtDSQpqAW} z4m*2}R2y3JCpfTvR$0PmXqAa!WD1Ts zQ<%>n=ah*vKAN}u>Ke&grpS*FaatZgvK>?SxcK_*P#>G9+nvjlv9 z>cVXNX!au`urKC~9@wTl)Yxmy=STV4O!T9#s|Lzg_i~Q{` z{b2`)L-%I~>C6H%NDmjI@s>l?#e4eOp<189in=FY?M`^)d@TXp8Fih-psGy$h`c{K z#g&alS4RSOLe{RPk$5}xc!I>Xh&olqATe9Zg+feeq$KhAMO_ zY^78H0%k{l^}|un8rx9kMh7I@1fQ87MN@S^0UbLh2Xb~tsH*rXb`g){n~F7bwy}yU zHKJxTL1StvPHuuFzxZu074E0{d!=puxz*rR8R$|C|N(O;Ujr{dl zC4F&Y%j4RT0i=(Al+?dFdm>I^m_QMC>PZuqQam42bQL2Ipf3SBgzc;v4I0?wj+fp2 z6VL&SIY;ge1B3qq&}a26mJ{Byi@DHBjQolt7+4z1%x{9GaT)-fZ?&qIfj+@mHA@;H zn>;Ut=lSY!*+Ia08(h(l5ljjlye;`=F%%qx7}IYbX_%%VA=8!Yy!l%FAh>L!$?`hu z)(hBl3H#^FSVK=h^UqTP?AJ`Ve=sTGK)p%>n}yB{%vJJumg$5_XvW+1AjoNJ)q^$l zWiNC@TbK_8WFOUA0 zG^d~-rMMr)4t&aYZ~{fTLe#;PP!6@?0;vWyfg+#kc$xn8`#jiRx(03>vO?k(bUZs# zUDiiBp2}Oi*Ms#B$IjU(B1Pwi=A&PMH701k6SiB1Yd_NWGy~t_3NmK6W}Q!wM18Ql zb-+f!R+FH5RRkCs-YlDgVL9=N*zE0Ys*T~Gx2ipv;zP>-k$Qda= zv_ch7@3g00361U|JfW|UzOU5Jo%<4BT52xYuh_ zJ|c||l?Rq%#C+;Mf*a&IVj!#tr(qJkCMFclg0QD$Y9&rpApcZ>UN?`(|6d08ToU65 zwiwxdUiojsytfkR4B_CkgxCYs2Yj1>-GcDFbzphXPYL0=ChX2}qz9ZU!!cQ1yBI@! zEBuzJ%n(kk&yXQLh7r6Wf(2yu_drdC2Q#S5z$yE%sFwjN@);r{gUZ)g)vUv!o`vC# ztdF5Gzpn-!7IhLdF=EG1`O<@Ge^}IO+5&Y}43#ers85eST(|loSsob}L**HBweGN} z6Z!e4_AyjBdu1IKbrLd$kxygBK#p$BJS=K}PlT(p>^cq_KWIOu$!=j!~ z6?!#>DhJR;9~SjnQjI%`%{-AhPNQ~iu9%zCkdB#eT9-ZiACF@{L;0pmj<9^D%d$z1qb)TeOz{VUetH%hcsWjjeH~;+Au^tTSF-mDP33xlMA0 z$%@x}d;`B6k6++Ps2P^zvzIdAZGNa0=UB)jL*#D{O8Qsc=alo|hj1PVQKFnVJ8mS* z0{1o~MR6^Bge2&MnNNLlqp)9&O-u5B2AQ(&+>OV` z)h6Wjl{5ji1%tWh^KAB6GNkKKtpFvMuRirpoWNrzHzUjYIOfh_b6wf_60x&kRRK50 zRW0<6LkA5w5l8tU4AEsdlXV)_Vw0sUvUMJ)fK~sI}@K8x@tRHLg%Q%`{ko z_4BFmziFZB#}+NTj^zw9(;&ZhI0GC=01_Qw$ge$4kIHIXTdQ{x8@v zvQQn#GW`B8E_R?eWa|lyloMSSP&?qJ{Xqg(zIAUIxrzIFQ1V zEB|XIVw}(?o0IVwMEx=CKZsZafm>AjIY+4&v{pI$fEk-_ZxEF%jX=|$gzD8_QH;sW z1r8;I5Xa2z1XPck+jn@?6H%R$=a;UyM&JFF-#M1~^Cil?`BQIT%%3*_a2LlI&HDQ>!+D_M zO&e8!#*F|G?Op|{5DX$vRVgulRDL8GFT!8obLHn{^qU*YfDNt1d;OZ;U1E{y)Ule) zI?d*#n&!KjP4(WfT3&C+wOqZzYneC2!y04h!*>qmo`%czolgii9j$HsAJv$~o`7$hoVs>ol*_gC> z#bU=^$1(u(J!`)jX1E-TD@_fX*khVFzZIKEjq+M^eX!Z{!FXN($=ONjg5PkneQ%5# zv8o@OOo{0T;pd@{4bO=}WavvaS0#8fQazWZh4vJ#U?(z%i*Rf$-p~6$QDhU=82Gik zm3!l5Sd$W7iTjfMA-+NQgi*yiv4cPlYuea}paefNNu|Z;sxcsF-$^nY`UjelTR4S| zE!j^4`>ZVdf_;k8`0qs^&7O@^KOCdkcX1{A6Tm)L;%+zal^=-cXDJ@3Z9w_04ISv7 zCAPG!7ri_JG%tEt5rxb7TZ?Fs@9N{CZi+ssRM$q~Qgw-e+4vN|w6k}%Z)sX0pAwsdUJHLgo0FqFdbfif4R0~7nj5g<_H7otT!Ckv z^_Xs8Sd0RI9C52%^WY_#-n2t+ZM009IMR8$mHlmt+@IvLGy zIEqLVl_)N#D5$7JgAxb?lYpWD5r}v}7qrJgC5qg1<$vGmJ~L;cyZ`?G^F1FAPo}!N zy1Kf$y82e#hdj%p&~nz<8GMU*{04^#R)D17^a)W|WrTUabX;w3Os^lRM)tbiV)13T zK?BW$3wypLA<225R~J|W8psFlsSW(=*b<5N`EmW7=Hzws15HKE!4w8t z=FCP*WIe)cl=b4@Mel*lO&Mts&xu_0_)2)W4VC6rt+PM;CMYsj&dD;JT4_4kA6Qx7 zq#3t3nV51J+Xj9)-{JTG1B+qdI$*(z5}3P>S~0Cb=gsHvbTaaD z7xXbuMbn4)QG@1$KK(5o)nwhdnI^UQdx9)gdo@RW1*kF$jFg%D=Q3ZwvFk<*`bSWFBxPZ$H^n@dS03kWVMr)nz043#y&0WS=K${zCafTl9RU@R0W z4AJ?G>Z=-o0UIp~jcGza95boI>T=1Acbvh%jm!!MnP?rJ(>di;q->p&Q&3K;RZFB5 zM4T+nmSWlTqOy}P;6i=WmnUlRZLdBZ_kZ{+?x5;D0a+upLO@DDy&xc^rJfcr zf#9P8@=az{BA~SKeFOt6+h_smviC|FAF3E^6O%abXcL+BL~rG83?;>l%qkb?hvBzBS79Dz&K zItSK*cry|dVJwaWMIiGdK@mzI5){EqiUdVCw?%>?pka|9C84e|K_i395Y+ZtT?mll z5avS*<8OsXLZGwIaJG`>uO2C4jxs?jJ@uv};d zriqw>t-<-a^<<1CubnszZN!^PTrXg@kf>+_Ii%pn=qF6DCSatq)uU`pp*t>P5sF-kt$S-acv3eC~pe=4yVlEA`IyAxm6oq88hqPRvqM62Kg=0G!yF!4b4OGsKybsA3vP2EBP%|yYc(y zd2VOUa@7W;(WD^TDg!d>s}Z@t1ym_s@9>8=A(xk z*obYvsQ(V^vb-gXIb38r^C6z=I$cxmWx}-><)69-H0S}$#$1hYDtIL0SiU+F#alX) z{_HJ%M<5RMw>Ujb;%6PLM|Oj%>{f9}SLgGO#f*W3I{hlW)XMi}Cg5Y55nQJIc7Rh5 zy}I%r_7M;qOn4pzZ_-0rw`0pzNBGJL z=B!p{yK05<;0~6Vv%0ur1W9>;5V`{c87d$yGpO!9$Q$jq8dXJx@Kz*=vka29FbVPf zLQkNTT_URFTmlJ3Owj@s{}Pp}uJOHHT?A*6U_WHEp4d$}IFskPd;b}FBStX8K`1Ji zDNW4<^F3}exdk(clxaGCX!93>i5F^-#k3ZTucS|`Bsl+pAO>nlgw8>#vw!v^sIs#_ zNtFedy`tuKFVG_|QJOtidQRq5`uA~N$L(Yoz3(r?)Nk5q&k%f!B0H`w+l!id@Dygt z+HCAsjfQ-T?OiQW`$D!Z%ZGokt_3$3b zae}vN`no@k%Pd}5oM`D?UB~UK_TEL|oXEcQ6|8e%oK=i>l(9hQogQw`gVPHjX$F9& z4M+|j0ZjI4fAb2*(^;}>^l(OIJuG8SEhpaD0V>Jf6 z3IMh~1DDR@tx~Cr!+71qi`fCk|Kt`7dHM3I7^#c{4N9e-`ucd(;cc>@3zY7;u%#55 zfjHTnZB*Z1Of|F-L^7Q!mM&*yTrrt&rF~RKl{tMC6)6U>sKbJmhUr$=WyhQHH znPaYLN$MyDVbsC4$3o-l0(?Z78akvdu+xBbfzJ&DK2cwJCXbdl<7QqejJL&k%C_n7 zRu|xekOWxK04IyVKsWp~FM0;z1ZF99fkcB^Cyt!V6m_|)6E6@Qmu~Qa0WYAsK)ea7 zN4kj@8L8P7EZ&CmI~Rz8NU2g(^@CdBifDYW$u8dqOjX|sS{vvIbfjW`Lp=3tJV6k+ zhH-~|Zy)B1w%VtUHJOTMPGvm@D2`NXB{#U`R9W+QeFPdEf$}5J;0QDZ5SjsbIXBjM z_e3CNAoVmH!TtNtDy$pc72w{Rzltv#d5TViXwi&n_c`b;Ywjb5jp`SiO+b5I8-)W} zIrG9OAN*2%j_A5m4;aqmdn2uX(ko9Y66C}aFX_k<4QnowQf8UyJ*kbwS3O;G2foJb!CR)~5F zt3a?TNG#eV{#T86_nSKLDJ4U}ie}nB7h7LLwW?F^@vSJ`2^_s|$anN!zTN73dzadb zedDO=AF<^tZ_PS@EuT;dmhnSMc3D3D!W_k8(kH4P?H2z>I>BfoRsF3T^a_^8+SUaI zN1$N_l9$${S5U4>p*j6kQ<#X8ee8GTC8-b3f<<_beIoQdTG=jNjb!&u+AlP>u#3O7 zl9~GN3^u9?EH$uFr{-|X-p-z-gRqpci_sBlv>~=l144|Iz|bL{nR{!nBXN(WF$WlS zl|yNcrX+SJzlC(stN7EXdgF(K6O@R)=vtrR)Xkc&6F`x3W6&I=%dyLsn6kUG>;Ork z#&SvcAq)l@D_?!@ky8GJA9uZZiGuZRsp+3c`i-gzs}a#6xMf^JZKlY`ciW_6bNOQj3SvE?iG= zJ7Pn(LLX%9Q_m1jeh}KO#imvwPA)DWf^DZ3yCTRlp5@9SKKLkgB?<0iSA^8>R#yaD zO%*bNPY)q~7}ug$u2jCK3sWl4)fFMt`24y^HGD`L09y_J#tMpEod$nceGFCt*$-s< zJ^%+k+m`-Oe+ycb$H+;lB8AP-q&EK%?@{&Le4h7=t>#*=l96vAl5<>RXAgdWQuCIm z^H92u7F!*>mCVqLx>BUD6Gosgl)tPgVyoXYG`__sX>9dX(fr>_tmNIomU8A-=7R66 zeZPy9j!dWqVl;9lDcwJgUDozi z*Zj}36;Oy8ZuFA>dA3sC%wF$?ZOXT0YC?MrWw*;YX%Ur&=u+@THs>jgc7>=y%D-^BE zI6e8#2K#D{+hBXK48!I%yB`hL*=IOrCbI2(6EKYFBt}cYV6WjpvKZ`YtX^RJ*bnV; zhte+e6qtVLUeDny07h~Fezc8LHb6|4BSstTg6XDu?HJCcys2We8`W6Q#kC5O&=aYL zK@)Wy!v3-ATy6T6Aay9-|0Zdct^N-1uMGA;P1_jkc+E4d3~P11=9WQ}F9X#bz`#J| z)TbRVbch3$818zkFi>yd4>Us9N!P;(jCV4ro{Nb^zLCK*MxwupG!@Z5pi-_CG-e%xS}(tcEe#42|b2Lm0J&{^!j3?;~KKf^+Y#6`YIz)%+p2AMZBytS6?I zxo6`SuUTj8!q+32_N7%tV!?8m{FD!7odPNRTR}p>FEgtcD(c8VyGbb=`}u3L^8IyL z;k{Z>Y&mQUR!G)sD1@cRpp77QdxCPL6%4FoWS|;<>jXjfqvZ%|s4@Z(N5^e2P*9E> zf^x`E7iciC>h-JOWLQQdTR(&TAYKNO)TuZ12&w+!oOxM(>1F`7fqmZT>aR}#7j*4pC{&{SBv25#u zTdaX`DBw^~pKnP-JR__!Rv~DUm!L2jEF(u&8O34CVl=uW)f(+un96D@7}z5_c#E0THez_%n_rv==hhUwat3k8>QfmFdb2h;!C{+a$Lug55gw99lix%ax_v zg&|qyxFVQEJ>ZHU>$suptTjh7=_*nKLp^Rl8aLn_ZmKaDI1xhWbwt>5j;h)N*|sTS z)vqRsCW2_|Dp1661UtPBArZ)$P7isIP3F4TKAstZuKuT?E_i&cdER z_cs>C-$`4TXFx$cflDCHjET~Hh>^1p=~~@xSdUUMV>)~-7?wpZhkrG6B$<&JQ#3^i z+l98H`MFO;W=t~;jg_EbW=x%;`70$>@;=9QkIb0n&YinT-80M+`Vl+4s~QOHAyi4| zGeV09H4rK#R7+?Aq1A+j5qgtQ7NMnt(g;0ED1p#?LWd^+noVdop_zp02~8rjg3x$E z3kcmrXeOaygvJsYKq#M3A41&;T}CK{P&%PFLgx_Le>b3HLOTg{AXH5#j?hva!Pje^z?18Qn-QFk8vT*Oom zUyefv4#mjK=*^ftU}Jp|qPinWRWY2gtH-EBpT8QE1H15Ib@3o@i&qqL7Q)`(j^jh| z^nIiMgm^jhMn>`*JSdYS3F5sCtYxBJe7B&gIN4Z4yq8f%I3FbKK`pQeiYGPR3&c|F zV<=u4L$L|Vm?*`LE{a3Rb+9R0eT0()?qk>DH*_hwC+gMDRP`H7gYbPQR`qIDbt}T= z5>bJ1Ags$NK?M<8s(KH>$q`w{94(clfUvg*vjxxV@9;~I)PkY~^#TgVyyxjl{~ z=K9{QmSGf%H5dac_QO@v8l>dJAInM%cd+{>s1`UQK^eHhcqvM;vePWN^auT})9=o9 zomOg9P;$V^t<9QYyu(V<+S86i~!sDV%ep;|(f zgjN$;MCeUIrG%Cenn37TLc<8nCzM5KHlZ{^GYKUSnndXEL_p&S?Iv^+p?X5Y2(2JA zfY1U$eF)7YbQz(sgwhG+6FP@bcS6a8QV4Y*6h|nI(EfV?{jm?wPC^F=RTKK2&{9IX z3C$(6ozN6Q9}*f(Xg#4^LY0Kl3B5)riO>>49zst8(%a`4W{MZ_o8KH`a0-MCXX-5X zNAx&@{wqVx`B**36XXHfODNQP92oqETTYtnS6(i1(J3)m(k^x|`F*?S%hz(lU_%`g zZY5%XfNx`|lfgh>S8*y1(4-&rOjYB0Kx4V#o1m;D*_2ejgrQ_f@4>t{pV9gnG1Q}z zzw+|t#8w2OQzm^RhKEBjPKzH)Lh}K-$7JuszBGeJ)NQG)Jp+AfJi+z;Z@%(>-)rX4 zlPAUZ9EC5F=Qqqe+Gg_Us5n$Q1s$Vrez;af>6=+Ps`kv6nB7HYYK4^v36Ra+p@YDaMV$KZdNQC$}} zi~!BjFU#yI!d!BRsbUEbQYP}^5w7+ksCac8+|2XC+bEF>k&;o(uQ=fW<>;IR=fJWZ z{h=v*|G%S!Uj*t*D2~t-g!WGXbP=JQgw7*WO(=!XQbH#YnoB62&=f+)5gJYCa0pN?p&tpQ z6WT*4iO^?+JcJqusmXw92{jN}O{kL4n}ik-T1u#t(6fXl5SmYD7@^sOvIxy2ltyS0 zp#(zX2_2pU=q5tD2@NAuPiO$46@>Z_T0rPBLNf`a6Bz88~Z;2-3 zks03AhUz3hH~jnLec){!eV&aq^4d0i9Ii^vSF=ELxZU52ccUf&)VP-y78bU`-pcRe ze4cUDk~Jh*b+U~!H7L>Hjk2o~PtySlG7~yQRhn_37lr84b-56kTt{`|)P&AM>N!xV z%aSJ>>?znyugem3#MIN1_~;;zTF@V&BvDogS%cPe2EEXAnXk6FMO+UGfmpxn&oX} z!q=GeU;h=&d%MYdtx0P{nk{G2R-X7SCSB5++i~PsU9(Dzg!uv+x9cVPVnmbY^FPCw zX|)M#ENT@hz&5Wa@j zopgK)D6E^dx|;qe9f{(W>Q$UM2I3#?QJ|K;0Wp5pNowcdX$+Z%3) zKUN(0X&1~npw^tlDanCgk~}wNzSRf~vv3I(5?*#~dr!W+Qx=VTruU!Y-s}12xYIM8 zxS{y=V{kh@U5UDYq0>3B6=y_e5%P8m@m=swj6H%3M$oYg&8{CRNX?qH@h1)q%E6NK7Ni3{ErXXkxhM?Pt4^iLdr)MMb*D8A9$ zp+oFxJMDXtz`-h_`u9!!$PVehB4%xD)y7rf@!E>&iwG_z|1UM zQiKKM0*F%5rXr0RkGBS~FJ@H#HbnY+c#6)kvQw>ziS`t4=AlVGt2HRI2@afq&8#1+ zmV^~x|Awg|V38cEL?aT+1q1fPTvSt)d;?=*@#dp?3IewKk5!M!?=bZSej_#BX;17P z2|yN3_3`RQR51TPWZ}U?&yhv_1CA_;7iAVx7KI`UC@=15|Aj1`M5OLc{`A8m^cR)U0qstZcv z-Ehn@?;s{dv)!K(pyj-y11IKw+zGk@tt7?!R8?n8tL>Rs#14Xi zw6pNK+GqrTRNrGD-j`<++6xfFL$b|`Itx(+{p~;{7rucNL=LRPU(n=;WBF<&3Hv3O zmEg<2C~{_x3$0FeuDAGaRt2fs<@Na6r8c`GjVwSUj=c^eQr07E+#lek zgu@ULQ*V3)E7mh~FHa#W60jz=1H`2n>d2uP?I`mk4&5-KLMU6cBX9U3;Y8%l92GZX zgV4?#6+b=Gu1JfaGJ8{$%G6jY@6%F)%K7ABy=8(_+O{p9Y=$hRJ;2c=d5ASME|_5TOKjOM zp{r;|pnCdQqQw%z9U<-)P@Rt_?b%Q%jtw25F%8fdovy-%>C9eET|{&nfdeJ<+S76)_?s^o!KKWWsdGSr`h zR9P49AVs8BAk~_d0+9AyodZ(L{FzC9f|=o8Gl8{h{G7dJ151{JkBwbh(@iIZJu44W z0DM?WRRAa06dKBnOD*kk$^ozVK@#bZ)^R-{?b>vecnETa%L(#6-w1)=3P!D(jNJUv z=@2bh;=(e8__%|nrsbI|^8D;3Y*|5`ZBI1vOi-P$bIYBp3qgl-1JCRP|M%%wSzCn( zz9*&Otb4sJYBOt#{ysa&9@Jp>e-5d>C)UqAa1Hzm4+EU)N?+ zN*R?QE4*oD6#VjRdO?BFNt+5=XrNw)zi~kGDFMQRU<&JKax2Ls* zL$6D_idiajPqeENsiJ!h%R`asV!0mL#LV3d%iV=#HS4ojX79n44aP3ft6yQ2p&M!> zakR+iEywaoY!I3OkrU7;ssPU=gkEI@v67)V3f~Fms3vtb@`e8q?uZL;81t~jo5+YW zvAuYLiD=0P@mG>Ad=aSYpwK;nHxqP_=2M-9VvJGk3I*0FH12A3qeF&+jd~S9JpihI zMp8K7sK*hc)_;KK&2SFOsCpD)sD27v*CT?uLr4gfXC~x*|INR8sLQvZHbdU=HJ_f zZ0j?sOSa-8zGy)!=Ndb2r3?c(xm4uocX>R6@QT?&*_~$b>N^Oiz&hT}l_$%-zCjz( z6Y*jMGT68n{}DR=5a{+L;KIhZ?;YlJt`8Jd+DF~C1JyzG zM#=9=RfntgdIR3Krh@I2u`8&n@^%HA(&}Vgoofxerpu;vM_Xoo=6h&6c;hhrktoDq za84esv2yb9lMB(~r;i1>OFjGG2Nlf1Pj}7OMOKcf>P3j`rt5{8vRh6~((*BY(G~Dl-TN%< zVZ2=MDjH>rCkj>ePN)M}owpSVTZaj_U6DkF&5>97*?@T*(-Ze8pwrB9ugNkBS$u1D zAvecpmGudGihAnPc*F)+bX{OH{*pV)rU0@0Ld@x{fnNAaBcjXtbw|CoZ++*^U2pd& zBd+hE5FVNwS4DV&UBU6cE-(jwg@{Zx?24TT+cw{R4^}kbuT`94moH^x8Ha@yhl4hM zZF>>^vN^b{kXeSUhiT}CT```CMX7vSEddj1?Xis=`2Y#S^e*8K{?!IZ8WF1_5o8My z+aeL<2+#b$a_D`0e#2aM1h1AfCAc~yfk3Z&W-9P{P?S+ zp1zXfu>`UM6eq~V*#WogKq)w$QynJH?0#YK-|g}wPKHJNtkVT-V;*ooZ|ga}qcTnE zG!KWhA?hI%q-h(Exr!RRC{dU^$iLp3xxP3BeTYOJGF;C1Shk(6m{~<#_7q?IXKmdB z6r918Q&l5e%aP)YGtuStf*sptqPqVXnFmltwm7s>E@wk?S)wx~DI>Xcn0&GNNdGjY z+4QnVBS3#WR-f)-Xx{*iOfnrJ`M|NuL~iI2TurY*3$qx@RO|v^@Fu89eh$gDe!W#| z0OA|fb!W835x1Tfd;xk^SPX<2WD#?&*6X2BNx3!20nZy9=nK+h^;CwFR> zL6J47**t&8`$zcsQ;&Go5OI1$dosly;q-+!Q$Wv@evd(R`ohI`qn1WOrhE0vF*SHka0+VECqa}e~2i2;267QKbsGl~=1O#824*sUTVc<@K`>9R= zDQdT>jRe`A;VUHf8}8goVlY%$Bq;6hP$Vc4o*W5^l*b}y7Cj>c6e$lBP^8?C_;Fn5 zgnwc6I15tuJ{MWRuqDm{4z1RRYOXf~BOe%8H!-ypiA7J9xxKB0j>!~vA$h6|H+6ab z2oe(26I;msiJ4GfE{fDn$w7I41d{^9c+?)47YtXl(lwJaBq8&X z`0*a7tG8l|HJR9lJOVsW8%8=D-)2&q^HF#Db)s zbSZ}-jTP+Czy zFp3a``6-ca2WUxq$EJDAnbN3+F3pLD+HG7Rkup=LL}E^B_RRFILZ1ag+G+@AzWX_ z6^T70ajBsHPOuw53=vjVJo*PBd~0fgfjIyWNng9bOu#*KQpx=%aQ;X%XhIws5Zm0P z*el0~HzmQ!O2pU%rAM+~wUTadQ)}5LrQZDQav6fvZSSMK8?k|Q$wmltKi~esDGjIU z$VX=N?gH)xm~dTSxq(!eZ{!FfG$u|Xq8zN-WWlCcv$E1y-_UH-TQj4#e}8X7Q(cPI z(sqhS({DkADk?!A+qM*R;2_RU`$o=A2cnaSKjAOdB%Ym4!r7@EAYx{Xb}B@TQ90E` z5Pc=zqXKB0bPBz^1bFJJUr=9Mi=Dvp$0pT48(;;Pgx7xX*Ekl|W%IOBpRI$jHpw`Y z)V_tqWb~;6paSjd1!`*Q5d>=0uW0AHYb~LN;U??@#?=>hwtG7ckHIqG<6-nO zOF)ARXG30Z<)X!b zs6nQ*ITyV9NelvaY~}Mc=m2^>I2AUmmNM#n5*Rk~%@(!VYB{Ujdw_41QNJNonciQ! zf%>SH*0KXHL4s9A&2uekGs~#bK7SWH&u&*tA^UbN{!-g3CNNkrmw(GgGqQpmVq68Y zOt8zc7-jP>UJxT(&cE2CCS1XWffq(gElw_BWl_5T(SQ;o3tChdceIg(608ldaCDgK zBM~eZ5k-**GKq*ekq9z~wq;a=bM@? z?E}?vSx2mCzeNL@Y0`^xIQUls&l&y(LpfQTvliWe;<%s{eL(woJ2YF+E(U_`(?k>H z?UNwu+Qt)`t!t+M)h-j68O8q=t;N!ub?p$A#&$+Yo7nPld}5b3Q0U0hs7gA>aLg%? zio=XGvZx(b!+}ty*o(?AVSUN9sGVVoaTc{dtp#a~dl9omBEG%(l zPbxbMnZ~SgM}Lkoabq_P$?7g}qbaGI1tdpm7(lJLU`(%Vi(ubmeJjRK`Y`EB|LBQh zxhlY1;wH; zVSK$eDh$SnFp?oK2!jGMDkdVS04~KK*6a&k^X7X3jl)K8w5>Jxifz6o z34Syqs;hwPXex!E42YCV)HZhq^;l|8u-;la;k6`H%KW(RG8j$rX*Cy;4C>gX#B1AJkW@R%s!lM(B$l1W2R3a3x@ZctVou98K7Et3cusx7-Q zozg_r-ZdfxPRB2Ug5p{ovvk@Cj+U~kXpe`}qe;K-KvE}6q?^xarK{i=*gc{3vOVDM zBiGg0&YjJK_KA1Vs+`c?g7Wo*Hj~9waH`3kiF=%=GqcG0iz`t!HMXAdSC8mK@Tlv> z>QW7LpMxEXY%KkNYVa{1=ETMl{;FTA*u^*-hk%@3=C4kJine@IS)T3$71RSdLJ`5OH7Xu87>3a7f|)JwyM?}3CqqBY(0AySf*xr& z%hOVn7u#QMWr=#=d2co9i}fFVjOBWnpfro_c4k?t*1gx9%;_YfS9(H>S~#v!|Cy;3~|s{%k3bdZDH~!cHXZc)rB4Vbz%cO_PFb;!H?d8aQ+pj{0U+ zaq;LW?gwj@0_8K6nY0}GQ+#xxV7!b`J zz+jHqCOq7P-!b801c&rK0Jh@@Cu?O|KlLrd4p$S|w3zn_ z9x83b>rg89U7R_~s-WmnlNF+S7r5g32A*yO?m%{5@MW3}b<2Vt1F;RVN2~FjVRP}@ zx*8!9ejH&(Qj<{yNQ$*|rmy=dWHo!{!JO35#mP)L^9n7G;jWBVAfu}hhygyjyD*Yt zFeV#}lUx`_0Y_>4Y%mU>e22ZAF&HbZ)TL~7VZ0rK@wvfR;lh|7gYl0nP2&+@ScNIn zslm{xV_=q5z0M@x?IJKJhQMfpk>|q5h{0$y7+qZ$z8H)rZqZD%abf%bI4X?Z_iBvq zRz`*KK@7(2_iK#zT^KLNV9cGaF&4Wp9*)8IX^qC1<-)iH7>*6OHOkOEYc=W+7wTm( z#AX?ci(D8t@-%Kh4CgaBE9#Eb-+MRSq=;~ zY4Lg;UTDIfnD87E?pCAIr<$| zvQ0W|Cep0J?oMxLGS$73$>`QMy0Ye&tl1`OPHfhp8BhZJU+aR&ohfyNE9-od)v4=z$(rw!+NxQp#jdQ^nXEfa zsn^A3-DK+1@dGWU%UoGcYgX!Mk~PaI^-+`6k?^q<(YpSNs5#i-Jx&knMPh`{VMowgj;fzVvgft8_ z86d9;K9YeZk>xzri<4;ikj%kfy)rR*<*j&_25vxmiZ0Pa;077Z-ocf9AhMf}H~r(F z7nB;+IAqrwed_5=m{a5ZEHm?9%U*1R`0MLYNi?FaQR6VtV0_}jcqay9xxskDg;5rR z@twhV6c{e^?=h{_`a|846I=uagMc+M)&DPV(alk2+8fNiF3j^{iW+1vQe%rMLz}U_ zPEoB~1VVu8WctksztfzhoXqR(WZ8o9mGtC3m(7KNnzxZ#{+ul8VwFt zl5yw^JYwi+GVzXK&45T}Minq+B%utujJchT@DOB1aXe};4!#;~{?CXVq4BuE*ai%{ z%rGQ|qqm{)mce+F7?FGxCU)VU^0h@i$FklPQ`SzCXY8NyY-baJ-vb7tFEAV$=aEK* zQ|BYZz>a1rFmTzbEpsJo9*E;jLIVIXwY4k%_ki^lB|W}#(@?pjjIDuPzOwcH>I8%m z;d8=<7!0SoGA;!G#oJ{(JpvTRH^_}G-4USQ9S$oUZpN`ZG|Usrn@i7YYUHemiii=( z=Sc5{Kjr%nwRLKq4$h-_WCTT7=OK@S(H%*nmA7X>9bSYA(Gbv{uYomw*i% zHLtt)LYw6xh@Akh5^M|*OP%q0WJz|CfYb)nPC!{VWzFKcNft|A;EWX=gb1m%usUyo zK$O*|jaX(Zi?Ij$$t_yxEt5PN$xcoB#K`9zgKk7k3yUhfMNkNOrhb1A{hnh#4>o>#xDFJ995&X82rFY%eml&caPOG*roNZM3sgYhLO= z#92&jQsZC60uTdB(LD&(ghs$(kw!N|~hzaj7;WZ{)XTm?2 z@H-}a$b?@q;nP3X^qw@~AtwB=374AiWD|bFgl{w9%_ck)VW$atpkCxHu0hl8;YvGQ z8e$)szz*z@hA2AUhJ1joTZDp{?NW*#nHd!xGJ(L9JaL7gEBEYlO{SKInT>HLsMT4ofPT=q& zJ*^4PE`_GbKrL2A<^z{uK-c^Y!fWlaAL5Kpvhie8t{YCmTywOAMqKSFE)*KSl-7<+ zIWrNhk8nMN{?gz9sgAwgvPBsooh6(~*fv#~sV5)75QU1Kh>Au#LkCm9vX`Q5^(YE6 z<_GwOO-?mN=hTZZ=gHXWui|!@2WHn28=}uf(RSC+zj$gYHx_cWk8vMv zUx=%57JlGrOy_5~8q>!ZuExZKSM^`H8s~5aEIHU<%(uLcmZU8^_p*@)w`1{CwF~r) zcrOkJvcK_d0}$X+O|huNSGWmE5EnT%v_p$FstNbP{*`m2$KEigQB9Mynqqp$h`>Jl zMf2mJkO&?%?L|lnm$&d*J}C1%U%h)MIs+)DIv@p7UwpU~eFS6#Mw_Ia3-rW=XP)L~mp26}kYf3x;g8_s@ZPvR$11@cR<>2a%uDQTOy< zqhX;6#|@lNL*mc=64MJh9&97sy&X%94BV%fUho3Q#!iX$&naki4Pg- zj**pS<>y*i*K}!EcerIHK4*9*4_3Ut5{Y~tri)KtDip=?{!G1iYcV&Dd?i-`&s0Pj z)dD5ll}g@^ww0@8*%#@2>g#prhkE44H4M@i)B@Z}E?mM?nJ>kAdWhePuOx(G{Z%}; z!;{w0YC40=8WbLl%`jD4idbV~5`}SdPz?>|`E0bN;Lpnoq2$jn*9Xku-W)6FUnkcz z-uASIqGAzsJDy7bw?-Em)fqT0f|Vjkw$C4U=+|YXCLYjMYTSzvr5Q~y(o`22Zjb(x zo)xTO-_T^~yUy(G5`(c582@tv?Ux23InzKLko$jbAm&q9)y*5|&1147jn2acTJQoJ zh^S5ji5>c@209gmN2}~K(D8`<4-F)m6;Z|51`_5LuayQOY#QiqU``sSzA?6eX2Puu z4MdV`pppAy8ffd!x`8$=i8Rn!f`4kD>z-!=v5L(b=yKCQmjc6?A9QAo_2&Hqp)3aB zg-MaA>HPQ5G!-%L^otcLyy_#t~SXHNOp=@i6Wg1yECIa4>G7P zxKM*YjbaoV48IHGwit|hgK=XlH(OCLa)nomqG31Lj8?Yi&OpI zCb%)bHkdy=7p>wJU`FSL9k=ND)(5~K8&{a{dk9;Fk&T^hhRZxA!?Y}P5u6Evj?5;I z#t1`WvI}VhkeK$BNgLrxyV9h6ZPKoErJZHcoQ=e@TxrK6E!qMtw`$f}xG?qthJTq$ zc5w!4*RxTHtOb_8iXKXyqA5{=0}bj5ppx}lO?Z(BJ1gY52uE{GHdyyJ%XNndmzwn9 z2s>JL1sI4@m~Sw;yD*afJBue6;;)&k|1Q@oJ1qWyaI^r2#T^FA$yH~u(d|)ujTp0HO!%+j5z_%OJJ6xy(Vu%g>L^oWn3!@t_{zCJ|7}Qf;s4Yk=vevnu z7_dseEsXO16|fy*vi)Znr0p)GcY(xKb`Aq?Oq@YL78ZBk|$`S1z!@3@SMJ=YyO4jxcJ>0 zmGCzF7$1Z?F{gvFy4mnUD_+W>W2DN(xWUHQh4#n^@d-z5@MNv;7+8hl(BB1O; z_yrVWUpXOS>Au8`f)JTeeTL7qX5uoCc$sFL8 zS74Z!%iQ=n4E-n7h3_EdG)%UPCx1JX8~Td;nY#hvYIQMKaNiBsTi*O`z$b`-6STe? zP|JXGH(-@cfgipH;!&?ef~=>x8&KxXT^fU-?u!IDtyOnKf>OB=kzgrPuR#z#`~-Um zIE>&W0*X&c*9g8WO|QS(al}poB0lKTPNzdW3C#KXLa7#l(iC~`f@OJpcnOqFor87{ zeMRBH-xiraB6cCK9EjA`>dZRr%?Krm0oM~iQ?QEaj z(B@J`qZ+Oea6bbdz|3Rv0MnZ4N`^9sEUl|9WVnM){UkJv?trzyPeL;sV3q^;9Uvfp zI=B(;zl~4|Q_pXo0U@krNS2RJZ%0@^5q+&Mz)#IlISb%nZ^77>P0$(@j*JcoU4@mb`i22Om2 zn>cdQz^+=WlEIB`P|>EZS32!0O>@_qPLO_S>UE?V@1RNnxdEbncuON;9e^M{M~lC- zB1e9rPjMwe*m0!$H6s@w(s=5t-Q#iF5v=XB>Eb4`HnOF|B~zydSI_e9in@U|XeWyjiM=3@QDTs-A-B6UX~=K+MirZI9fb zy=oJR00o^!_MyHc@@ zpdHWP2XsOwc)3bWppQh(3INu~71o5fX1?~{!q7MOwa*;6BF4>rz2NvtHj@M6WBhu0IX-8w;Q( z;X@fpg@7^(SHPzpPSa)8aIF8E%dx(2smkCGR=Cv4TfuF5-`fr1YD1s;#8h?BZAi>X z;N!ig)1N+Pg(`dlf@xBhEzmor_o6^6XGO5a>W{sR)kdgz8p_BunAc$EZNo!lR(7}G zAW+z*I)VbO+B&ktD|CM$%cr0If0yMX!SR(eXjyW*B?wtw2$o#3Oj*-RmWf7|b=kb+ z5V^3h;4u2l4kOeXDb#OC2ts{iJ%qXub_YW34MB%KhOrZ&uGd0sDE9F=WOJ|StEVW@ z6`1P9i7asrLa{=edvBqz5{)?1D9+1Ph&aPfXmOr}qO>@RH&CL3x>?!j!HH>BaeZ)N zH>>!=;KXzhX+yAZTQFy*QE;Q(Mzhu4*I_a8s@2Q#yFq=5UuZGw^x$w*0}6c?3>Ecw zSiEir=&7%y3F1I&;mKCD{Z*XZ$rF5WKxen%7BL9aUx%JhyeEj)&wVA!kzv*!@^~a4 zMBRz0jOvbOogoT4Z^K_RxBGHDwPH=%5d0ZmSImv8)6cc}@#`|FZu;Pnwng_x^AG7}^-aSiiii`XKM8u0-OXxUhtH7WU$A9xXI*wYLB}5B z=5ltLIe|7|Lu3`qq@KL~Lnbv7}w&-;K*x3pMO3lUs)CR4f1P z7V5rbJQzNVBz2d731|m(GeA6|!Z*ars+nzayuS`4761-b@p~ef75wWf$-y+#89=PQ ziS`W%cGX~zKrMntoB?EML+k+3GgZC%C~A77G_V0w)Rf2LJ+lSmzSFhn(#F6`9Q%e% zJS#sgxC4*0U&^C90edk27n`cynPcNZ+~B-WeP1{$yw)M zG+LKHM)@A#N@Paqfp|pw-WCxVT2(Ate{cpbJ9eebHieh56m`E88!2!HKF|{0ZVikN zZ^@LbMIFhnaW&18Vv5*Bm*Y(|wYL*L0zwEL~R7xD;aR4v{KNxRw@e^;!=WqbUsh#g(_WCFk(%nMxrle^e7UflKK8`ex_#vZt z+CSoIp2o+b%~R~7?$#9|xi)kN6F$S9R1f>*hC?vJ2UlFo*yueh>@j?iB`EFc7wLG4 zUJLa)n=PIS^Eb0<395*_Rm$8K_#Q(h5^%@a%8H{&xdI~tBlP!q@)i!o3%2ZW!Tk7O zenMTATn8L%^CWUjnrndrDF;r-YC8@T4#}ZH}7oHplC{RC{Dea9SxF{t;AmXmFjsRyXLkSS}|)zB4o7_fNOdH4WQTN=I^<*$;7c?~|WuC}}g zMIDjC#_sN);`J1rXL)%4>MVpE-9-VcEvrFM4E|7*HtYk6spdLVa|pD9ZO#IvPw=D- zXEurW!8EiRvtEw*C))csaETaxp`LBR{w8grZh5gC+-n*3l`KPXHtLQeZoJAvhwR^W zV{#%^anPUu-g24+49-1jGLQP^SI5;9cMLW_R6LKNzF+?sYm0VC1D-k!-oQJVJ}l(k(1S;{^^D z_X1Cu>wP6-&H&-{35b*v#dzrYTx}$;MhY8xt*z%u?-Y=o%yKGo@nhi&INZ{ZL6Nj+ z9)gV8oFbdp<)3*8b{;Rm+I;Tl9;jfX%a)*Z_8|iEZfK(J>@WaoH1)JLQ;b8=$^5v6 zv8snKn&9EC)>Z}W2I-v*&N3xboFAbJQ}EaQd4?3G`}5jUcvA@dO}y<}qN72*^3}FE zsA{9yj1Eczge%TD3-Laz9)}G}xHE27aKN_YJ6isl1k9`&)m~_K=Ki9NR0+dyU(N9O z>@@?HpjLRoRLqk~!L&m6c{cj=9@625sM}v49}Cs_JKA}|54&rm)`L72ppJ1ny%T3R zT%CzZtIlBD;dmt`XSn|=n!N@3Xytdq`70M{@{uskKSj7fF-twn82>aep;%(CtzmJ_ zo6yGX<9>`4(xhKmkvE}x=#lSa*Iay%prMT<2@0!6$KuEJfCY(DK`+$COjPqJ&JlRI zBneAGNu(-pnriIGX2xk zfbRHx!0~C+54}x+kYVrAXz41^4g>Wp_tedFY;00nX4A2eQz}nUdNeOmu0+NHlW|5g z<7i~$GnWgH5fxE$2e6xj?qNqQr+x9)#LcYY{LNF`9c`M!0Sk@19~vDBUeY% zZ$awE1lmx@-^v+J(mzA61@fe!+^|5QB@f9BiRMlpBE}<$^#C z(wwS^BhRpF#Av1pC5|EY!>j<`~UUrTs@n_*IAw34qB#>Zn32_&)K(jEt#75H{ z4_#Aoqfgxkvt09PP7REK(FlbrI% zOJUyb9kdP6pFTyzA#u78jjN)lG3-o;)4Tr9Yp&Fil4#?VLL{0ghu_wwsaG1IO#(KB z7{6T$@m5#vtC5>&=P?Z`c(uWm`!NV#X2Nnm2I2EudD|l|+$6|i(ImXc2j!NFF^~;B z9E^2R4bMw=%VKAkI+?d(@ERk>9(BRP5R(kfnKDHz$}kjQhMz_*^lr)37rC7KG34rv{2*sNch`Z(_O1+J_YH!JmG$vVX;^+l7_ zsq0CutVaQ}uHs&gQjgAJT_ah?nXHa`{VpUsbzN(+I(1zuS;so1rZ+2fkt=Hnvifyr ziR~y4xR6E}`r?%i)<(I~vQ3)!qa!Wbm3FR46Hj!co$E?#XVSz69ck^5W|tY0B#LpL zk)`7s9-0}g@n&HAs}@QJ8cwN+2Rg`Xa3L)P64M45-{Yl7i!I`$W<@;Y%6$iNJLV=8 zqEz?6+!Wv$Nj)&bB6_T(U|A)2=uytUz7ikSaWay}tAttj=mOrapo!Ie_Tba)_)-WE zwSfa?VqY;F;n7eUR57z;*cjI6XH0SLl~u(*bqLoFw9#S?aaTtU8?TOn#ah@eyKtc` zZ?-~+adu$|Wy!R8==%(AQTrd%>lejeK}9^vr3X8wB-}Y{X-uIwt3$BkX6Wpu*M4qf z>v*bPgJee?(;-EYd)&x9omtDq>(NG<_F0qLIo@s$4CWC3Y83Xz^yWFnBZou3!C;GD zIqoXQ!BF&rCssI&N@qZV!dREsG_j*c(7nieaioe0Ou zwXaKmUjaSRcZ~ciz;T$89ba-FZsn+9n(*uH;!l{ia6HRfyLkK_ zFmsDfIdXqLm9=%}9%gboZsqmBaB8?5xt&(Mf@H+29Ap;%iOh+HjN@27%SGlEka4y) zO5SfFTTEW@F9)e%K(x$DoZL^$tnrob9zTl{&vM|TvPOE+qG6p(^fdhBY+%=fMuRgF5!Z5X z^iQBMEKcPJ&og0hDo6N16Beg(gzq(BaVkgnCKDE?a)bw(usD??+}ni3sT|?Io3J>Q zBYdU_i&Htm9ZXo9$`L*eVW$ahw59ZK=Tl%K%D6jB#r=;@f$e)8i=&v~;Es6CxAVOm z1f*B%ZZD15L$(Nt?m(ez5g#1h^3mFQf0rCRUymgdlg3Pw#==Ra`r`gpC?d`hI>sHn z*Y8$9#t`Ir=Lyby1|;Rp3bYP5hQbqM`453TbD!>}P1@gZ_*6Y96^C`S_0cKO2K*AljlIJ3wGx6rTZquvu6C(h zlDV@LDoB5Infk+DJyH8pIb-qD)5;lxA9$*d#?M81 zhdJHKxgMczR?aZ|VE14!ep0bw!w)>w@fRD@S@^;CyN#K5wu5bX+ZIV^Oc8+ea`H=2 zT*9@g5s(`503D_&E9{+K27h%+ng<;;cJaj?E7O9&OyFuHR2^j`s69V;rALcTJ3sl! z##O_yHG~-mhuwiJ_Pj-C0lYvnvPAuKKUZ18PosPzgMR6{#n2c2O1MGcO11TpCN|0< zp6T6yj{U1^Ow)>Yx=5Yg=}-ib>R52^a!ntDwlJ>g*JB;XN~CBhW5=ITjy$Oz5v-Zf za7>jQcMPa(D%eg(!A3p95w%Z5uukYe%}jBqpKwMOg89TiKHAaec2qG? zboBXwNzL?`y(U^*PfF9W8A*LU`TdAK&#Tk=JR60OptznxpU(rq*wK0cG@KZY>vU^mL1KKQv_dnj%w`r z-L0_@VW&07pJ@#i6{%osYYni>xs#dGRs_jW=9K zWrDN-&EnC^eQ_`c(i|7k1jB^5mLqKf(#Vv!mLohGVb{*Y7E?>dwY-;$)Y%~Ah*11k z|1hFRb|HC8dE#0Q`W{!>9>6U7u^oDsZ4Yk*ni|)eG-riV?@C*4(!{A8G?%;5<|55s z=qzouRJQt(6y7ksAGa5l@Ut!#s>?~+}`tt#8= zJ#a2k`dP60X0^&~3_^{P z*ak49E_x3~T=Cx_iRB_5j<`SKIG3YH{X*Cs?Q?a)JP22v`z$m=78<~C=$-?*;T%r= z;z$-`JVIXfCB8u70AFC4p*Sf@@jZBd3{jt!$5P~WgQ~t8?o1=Bas>wMz;67-TC*2? zp6ud<`1WnJydL_@npRlRWha;qeJniEjvfS*)`{>|rrZ2|Aj4|R`UeDE6RwEvBl2wT zgNG=NRF;D^2mo`xSDzR4hVLOYR`FOp%QY6&Q(59hH&vBwH^KDPE#O;jj5?rXzEZ5d1~> z-*Ij6g>3gWPe;^uz@uQQr)J?Mu)t$3mN|sv zm(67`y+qc@nP*}uJSx=ln7;GM&HCUL!74r!%==u2;saZY4_PBqf_b~)Zfgxn#5aez zX)!f57k=wFJEf~nk>0-~$ddQm(^Z(NMlOX}r#K@eLZT(V;;BpE+gvM1sPdm$85 zBAqP6AxZq=?3_x3u%)~RKVAwE0&Ke-?NzuFrY&baPZ|m!3zRSvF5Iv&CUOcI5KiK7 zR2xK`Y4w6L#A!@^EQb_8t^=|cpqC&<@*}DTG9xEyxs(`L$UKnxb?Hca^?dH!Lc5n& zzJzg4vV0R7KH_`qUh)3R2jipno?tJp-7B@OR~)Nbi-((ny^`yCrRY$qr?``Kd2)V% zM?Tw)k9OA|YRFy8jHsR6U$z@3z$r_i|Wo~;m7&(1hbyAD{_~vqr>nru~F<+@qQU`8>4aHaL{Tt%t z^UPzAvCvrDq|bxSI4vgQKaepW z8HbX&jxq!tQCE`+1o+_aX1?F>{JtJ9;PdN`Ih9l^a|Oab9ov98)jDQ_{^9NnB0uC$ z(eYMmcpDa-&tBP6>q!e#-|FW@>vXa@&76ANu?vgZ<5Gp4tAcr}Ro$&<3)9yf9&-}wCI^MRfgjp}67u^>>5uRG_h&djSU z8sHBlk?K958tw%OK;5fRe_Sk|s4waY)RrSR^vJ6&^0DsQ=V0?LXLV9OzG)qgt@KJx zmQ{5>O#TKP!<~X+umT#o5_$b=h9FLa-&QZY})s**r8j#;N90Wc6=I2<}9m ztihzDQT=-ilnEB_VidyOfse5Pf25U_pV>R#x3Icq)%7r8q1Jm&fRm@Yr+Vl9k3IE+ zV5FzcMPdJAPxW8E?d2&@P4E6=o*MlBFFp4%P<8iQ&gW%J7aN`&)6bJtyun6oWYFpP zDAu|gk{wwNrIEz}Y)q~cwf$yYhLfxHf6sM-J;3X)O;*n_+fPx5L<`e3$~b7s zn-*sc%C)l1J0klh`KEb={aQKS#bynfb}YR^w_Ww7@6h9h+*)r-LwmB7?A$_!6fzEm5`a z%Hf$KKgK6IDALHUx>2v&_p_rQ++~!ESJ~1Y<5!r|ODDCRNtHR)0Hlgro|F2+4Ui~0 zI_`;sdQl#0^fT$A<7`2ivn7;c%KXEWS%Ea-dcM%OFCdKPAM*aJGyS9#4xZKR0#VxbL zYb{O8j0<<7=HZa8yZOk+yRUPBt1I>6-`U=AMki4#6Tcnttiwlx;1Sp+u(7CB=$G<# z9%>}?-@a;CzM421qUqmLjg#LLbu)g4W8ySoWOy@XW_W;V?+{!{#4!V`ox;0Ey!&?r zkVtnDyai#{9DNj;m>QG=Yk076#K_R!fatOzk^YT!@2uKVNKw5H-0%<4zIv9B)P{jM zhd`@AH#4K?WL&n4v-^70P^@FDcC3v$8?_1kLkufAPoyMWee+2*bn)T@_1n1+#Syje zcdk>o*FuH*=t=C&RPp%5n_qkme9+^qeq-zj$HpC;&~oxH&JqMwz48=?^7vDshxxPW za?#gJw=z4QHyE{cy2nQ&q-*KpGL+N)RXl=3O?D7oH3%yWBR?!R9qfFg>T`hLdNFYt zg3O<8lJ8`)c#mcrgB3A{kaG4GC;?5q(S+w7A>GWwGdeJ@^g)a{8OR$R2Kr$Y%COk2 z2dYn~BG%_r&LL#T;@nO3C)j_mT8C8YforUZxtWLlAKtzOI?7u4drP-aps)x93s$LG z6$GUyUa3?qlr1P$TA)xA{JMG-@dITSP{E6C7g-)3MWt6%Q1qgrqT)vt5wxY)MMe1( zK@dEV_yDi}P|Id5gm&57i$t07>WHOl~lf&mg5GAU?w)sneGocEQzC)#+03d$>PDr>al6p!;h~Mv!7?2mcOzH-ff5!U_ia|p z#~q`lQC@nq4eZ9WG1c?I6sn^zNX7V~PgI8Xnqx|A9>$Z`;~!6P^;|cU#r;|DyF9ds zdI$$2yYlo1nl@G4@q`?4!Nl2Un(Pa?)PUoU13<7nGzn;+Yw5;Txp;3WXzeO}#5QVFI@#s7COzXi$2g@mQ zypcGi4J1h{tz@g2ktP_Np7NF)2TRjz??TejgOxU83mkml>%B-!=|yTXNc1*Vsvyfmi$@I%HE z^Xh6~vI^XRI`@Q&aF~(|l2%1tmM+)44MMwPp2aF&YkGe1a3I=?6GokpKU4?7y#VID zKsT#C)6wkFuDG27B);&w^iqTuswYhtHThvA@`0kxMKZ;rT2Guk-nY9uT32mm{cKW1 zuC{y>Y2|AK3cC@csI4=xyU9b9k03cB#~@NCQPltqCujoYM6zKV8EOSHfzFaAe0#1- z?irGUG`ST!ArAMRF(a)*Xm#L+?SWtVhU)Sz*DtzO zuXzo;@GzVNCKRCD3`mhG(2mWrdO>F0LS|J%he521(1x0asW&w*6a{~M-cVt|(it#y zgg$i%XhuzKdk+=kQ0Pjyjno%huhxKbaYi(Kj4n))1!YeoBi27GjPMOZYQA+e36&In zqm{tAH9#DgGPB7D|CvYtU8SC@!$MiA9b`#Jfh}cqUk#M_VybP4fI%OIkgpmu$-cTvMJvEMxNmnk30V*24>4N&8#};sR`Dlrpafw@G^!sGj>ue8#G+`rdR50k znd9SIcAC+LKCS_tc_=LUBel|W^$FrxW;x5W`=*9I!3u?$0EUvVU;)kTku|8$_FrGy zzt-;GlIcThYteaRKB(@3_C#xQX$Iq%kUkvNBqxzYFj06mm&!t{ryYcT8$Q^Kb_$hg|B0d)TXf(b{ssaC9HgxZ@I@|A1oU8jvjN@V!=- zUdPI$;Nyu|h~l>tMJ!NBbE`*($XFxee}oWVx)*Vtcj`ddKE&9SW#9+|;7^DLnsgk# z0IDO=+>61&d(Gk$loZ*5{T##g!-Rg~KsgLWmH~?KWFGRmw*k7)fpTsXc?M974~qe9 zN$5ik6!EUeeHu#dm<&S40a|QV%Hr5wM4rybE19KvsHSICq(suo5*VOo5{eG0Nfm@c zb%K0dm-Cn)6A6a*{6kLQ2$CL1vp-B8dV+7^Z&=P7Bj6fan_-uy2wQ@?k1{{1E8V)x*+U!FpWY zQ7`xc%ec>06wkD)ft_8)9I1Z>=_9j2FVD4)A?ynb1c9nloMOL|Eq@WJ z2|DUi%CO3yvPx)cavCUel1GMWTeCnXQb_=VcdUM>TAliz<}P^y#{qv^jNET=W^BFB zS*Yj=j;pHf30S?uqvGysN>pz%b-b+88kJQ6Fv=opQP#T^#wvEonsCgr9zftuJho7x_&)LlcVjJn`U-6lb{k@_csfoKN0|42rPw`XpRe|Lnl z705T)@F9h~Yj|vZM$&#*fnx%{WWW;biuBPvP7(@NJV_6oq^U`wiBS88#3m2R zz|?_YjP2(0+^Dt>bu}J_XJI;JU!D`F?FAW>cu43?3t_TKDx7gz0dZ58f)ahS)l*&x z9M*t=cI7Cd*=xBs8T=;gSGYF_bd*?WUqQ2T7@4yP1A=XH1i~Yq_&eA%)1Vm~9wf>V zcU1Z@fq?K!*hbJ9RMB2hJ1a|ImY~%1ggRKgcrhxg7O2fp*YUohy$RK*z`0djjbar- z_JYXQs7rjOH-TAwq?(>-WoS9GQ&lP4*egzB;-jaXXfv0iNYbx<#Q zS1{Yy3x+Kv!#bk8+_?;Tf^}?#0R#1!VoK>KWVhU0yHp*E#QQAB^~xo^b|StLlIoKz zxL&_}Df5a;v#trMOgWfyhxe|q&stz1z z3py4vJzG>YSzy_eiR8fp8NcSQ=3vx7L>H?^e+CQe9E8;a2x{-S$RjXLdTvP&xLov3 zZn~R3NvXJwok9zl`zxaT>r$Q)W&fip|KModZmi@XDS;~7&mxU}1uP`E`$;6a6WU_- zf>th!X}JRTl^ner-3C;4A&@YmY7ZoaJ&-d}GZaX21!zXR2MfJ6LmT&ifoj8)4z4Le~cxMuZ zt-3_;v;!V1jarG)qdtezaY;dRMOcWZ225y&J`(Afwg<+E?ij=wLO$vEWWI61)V{k< zU|?Zuz^_O5Y0||kq}B9kze)3mlZIHB<}pblRW31UZf%@qZamFdCJih)^kN}}YFFze zE0c^BMKp#}0ntOnZ0(m{NK`~KFN-Onau*SaK(Y7F9WJ7i8^6kd*DF! z$TLsIPLftF)?6u-Hl5V)f!{>EFuPGNm#mAamxe=1T_C1nj5&4pe`CtUp1Tt$)WIJ` z#rOw_ieU+sJ}|Z!%0YEvVS1iBbS+jGHxIWf4>6k;=`G2*8zvBTi1 zaI`>|=XDFzsJ6(`M-Kz#ywbpAY*T3rWA*+((#DuJ@s5d_0ri7 zPteu-&!tj5=1ixtYV9h-ma99A)$IH3Dvt~zEiz(k+D(rbav_k zrxDf1zc#L(g@PMYkGZG`F1WvO>n(jYp?cK3Dla0f_wFT9J?2cT-Y6EPt5>mFSI^cd zmocR@pVn9Q_+IL4q=uR!xkg%UfwXA&5IENlLDt-Tp7Pnc?TA7Htx8I$`WePai9J`U z8*4wv^2;c?K?RwU6Cv=|!IbYlq1mU*!Xs%sUhwpne(7BnP92-bqR*DlLZ_n|Pn zDM1Na@;RyoH?}vC($*bN>?boIU5w`uU_b33iAlg|+nX5t1Fn2M%R z9(w(29G(amf)d5_7(d>qo}aNg5jQH*m)zF5W=JRXUyEJS4F1Nwo%Lg_iY4nYb1P z>Fp6Jcdai?^%#r0gaQRw8PVqUpj34z(h|E*rhl~?XZqJeHv1Pj$f5lZHldx;H{Bzp z``ow&#{*Y*1c-zPA(^6yC6_KP+i^; zxuBKvvehey=gT-3?-*pbNTbAd3hY!T|`D)s~)$HXieTUU*0kLK9A z>euXdW?l7nAUnpo>h(NdqSuKHD_^_Y4RdaUy(|@Uc*;AW6y0VoqV+)1%|epY2z8tT z-eAqtRpLJ$Xm(4Z6Q*ti8Z?yuVnoZr@1-EnS!(|!fw;0`6Bp*mCoa{h-?x(wPNCf> z8dgD8Zb2L0seKBv{Vj2qs+E5zh11G_%CPNXBb(S4Gptj0>Fl2J1<(N^mPD^k@5g>G{CEO_ z8_5HGcI8x-EalSzc5O#PVNsN0*x7~B8pkneuTq#ijIiySOkJAO;R*xX+P*Rr3R8cF z-#U;;tHZ-EC~2|G%6E9&>MxXejCQ{T!-~@~ixQBKqQur&a%>b`H443(Al-C4?u;uz zo5zH5_}^f@=Gd55BueXq*>20g}Rk5-)&n&N;ef%rxGgO8wIi<=Z(H&M6WsAx-U z(|F2HL5k>LtDsG8L6#?&uG0(4mfsR*8EczPW}A+(3doPaus)#4s$f~5j2F&P+goxq zmnB=YJ*z%!=bGwDZh_Z#9{MkUGt!d+KQ^Cw@c4v18qfQ^v382Za_rS@fY&>51jMRqX`8~ z4Y(M+i#H$vbV3XylHWZ6PwU}zr%pz*HG zm!Qzz7eNl9fA*9?bQ?0P7C#AWg9KJgMd!U33q$yMa|^QTU63CpP-)F`m*BLEks@qq zR6^xb1q{-fMJ}upiJ5uxu_fk76n_kfX^xSFTP4qY4T%-I5g(7@!)!$8YJLZC6b=CB z2at8?fx5(eHv+pS8&%hWimBZ$+&uR)_R@0;2Ko?_quOtinDJ%S&{5%n>mhj<3d?dg z`c8xzD4iK9nx!&<*eaT3mCg)QkIVhUuR`PDciqOe=(-UOOhpzbcd^rkUJaF1w6IwF zOT%j~m127Goj{6MMAMs^&UxJRrjnU7p1uP(W5B_G9C_I-`D%;lEd57*)&AM1jxiqo-nm@&>}1qifXj*j%@Z7AX%(AighpV35a# zt8L=iPFWRDLY+jUqq*)~yrYweLt3>Kzt0`ymV9q_u z<$#WQWgIwXI1a^5jyHjpLS^VT>bEiP{1Vrm`^MCI-%WxyEBxJgDSPg6Ut3<0YqE^K z2=zbYV#XV{4A#ox0P@}Z5e;k{TTAxsUD zdp6p}XrTn@A4QI{9k4a0{`!Zsg18*871*W`iSv}dn!r$a4iw}-{BdtREh$KotOLDs zK3V|_(qZ-B1#AW1Wb1u4ozrk|Jg!z}nGAG82Gze-wZtxOwL0Z?G=xkec92<+X3)Ir zOk7}Qj{v*OaUptLf)Q2wS~<55ISV9s>(GsKJdPcFqyKuyD&5EojU?I z5^l2Z$bedWk9{3#W#9Aml$G}QRQcw|V%xtm_OZbBZ!#Y^`C!2hdCG!N>1_D6gi7aG zr3*u)b5Oxh>3pkno_(jgkAMF7&Q=E;j|kMd?HMkZjp*(?SfX;)H;3rV!ky%$^Kwh) z`!cMe+2kZ)>40%_40m|qFp_cesbAOJ73kygoo*FmTjSI1N$%YJ@I-A2%xsZ1*Q0~O zMUG)N!hsc&#W6zse^4b<(Y|DuJw6|GRP8s_*T?F#3D$V*1GRN3Xiq_HovQy|*7g(- zuWRd{m+NP3OQp8(|4~f=JEFFG*P^!fbaDC4fZwe(KCf|gPyVM=S6?=tjt|t=cuZwO z2(;Ie@p$!ST2pc?91oJIv*pERHmA5aD>HQ&16WPZ!p{r=YhTS75;Hw`2I76qR22F- znxcB$0{N-v$GmuSlD{r$1-pXF3kW4VUmTW6Hbe^hz?@p^&}Am1W$Zc{#iCUh3}coYl)d8=__V|7nTR8*%1-4PQ3T@<6@t$cL!J`t|7K zl1;t&51Ps975qSRq>eL=B)8C!1RY~MMkT`wPx)_Aw#$2Bz(I#GAb1W40F#pT^S0jYysh`E+&}Sd zA1*YHmvomdiGCAzqeAMq_aQ3bE_x|}LrRxXoKJv?htHE4gv^P&Q_Unu=C9!(Z9leP zt#>NglV%IQ)EsQdThhG4txC!OtlaV%Kmr#fd4fw2=o4g<>lG?b`7Fd(y3vYe+UV~% zc_t;WO3z&BAj5riJ8{Di=4_#2nM-G1!Bfd|DMxleW&oS`+e1=p*ZtM?O~%x}d+U~W zg7x>FU={2HaIlRDe?g{=qennH5Dv>jqTitN*`sH}^*z*-4So({d1vjDy`Ux2&H9|U z_PN#5t)R&Fog2M|NUnn)|8$64RM^ zTT9U_$U@jVn`PDFTKBMbCWGn%W<{sbJU6jq#7k@>WK)~Yf!GMWn)|gvOj6gCq2<*F zn~Yh!miw@q6Vi+1{fzaDL!DQFOx%KJ$g_lu!a!%V*cP? zST2jwp)wQa>%g4V$VthnJDVm^m->9%moLgSEN*iv0mcLJ68;F`smr=+%o+G$pCgdr zRRH21-E;)QLLUn=?(!m%-9#i~BGyL|d8QqJ@(Ab>^(89e4g!L11VLjZQKs&s;ovna z8vkm8*E5t203DJ~|ATn|_a5+3s^dh!ZL2d`~+PL(?N|3xP)ZfUHk-MW_ zKOXjS@dhau>YqjWN6wRly|cK+qISW@+bW#}q+;MeT77K~2fja)RI5G#DAd%RNq{Ld zWsU(O(<%&nEptFKke_REQ}P zVwT2;SsW+k!USR(45uMHn1d5@r7J`Jt$2DUgmbQ5Jnw|#VLLSHo%~TYQg`~q`eJkacl;iF>rTpSSOPiznLQcJQK~0Grg(y=$Rmw zG%jQl7L|OAQNd$QAoPyGIHstvfUzO3&C=JueQRi~?uy0|15^tR>_Ezl8Iu3_0*!>} zqxpR0uEXLd@Po-*j?AdiXWhXBZUInqibvuphCcM#u2FB}v;_;zL!6~8uy5c_9_#+J zOI)h8B#xX4GKs)L1P4b8g7F5ypJhZKGr)O*U@>!=qpa#Pow$%^JGi?7Ih~Dt)5t~` z)g3yS}(0~jq{Q017rLk#o?8RDQF|86c2n3*D zEfyF8)dh&Cm%%4;5mwxy*_@m5ItU|>od9=uHH5r+8McGWUtNGi=HM%EZ})ot$f?UX z6%p}Xty|r9qI&QQv`)2!*K1Ip)ssx$SqFIZ1a*5N@J#^4@llimQkMW4DFMo(B0e`U z?*!x(XU@$Uafd|UNT<~8qzZ`ZPS-Sbk3OJ{7B#7s8isQnXCXt+&UlvdGD~05#noGS z8Sk0y{Z5?)6j*Y+((+~nYKEal(;b;r=LCr=wu@ZdK!pkID{;PTDw`}W#Ep`95Uw0F z(;->3F)MbvurnU9fDMZ{-(gnCI|K@P(P}>(k%4>jpwn6*L@gq#E9f-OoF=1bkdLo3 z-dSOJz{GRgoALBrvhVG}es&8$_V6|su*EduMl_>KC5JyFdKS|+*@0N-*NY|Aw=r6X zIT8WR=J4q{c@MAw(V46#eq%g9N5ZGBet%xuIqloxAzv*nw zS-m6!y@t^KfJ$#Wj%|#H?@kprV^+mMU&RbKZ-0i&$lcNbpi6op<@6wLnV|*uFq+GH z;6c{4?k|}zu=#B{f}&avm1P30A))1Gtfr29fD;FMFmL1p|5KrdO1biRBj~_AVq?yYO7YIIkKH417EJmGys1jQqY0*WXZCL~@*H{tLQG_ko zRG-sj*`XJH!098F9S&g((Y@Gx3Q9GN_RcAYElqbAbq2Zto9PV0%f|smI|x_E+b_o( zX2<-$C4ZKa{|7Ld`5o{G0cShlm5so?1x$@9Qt*-i_dw~9$*px)rw<<$|Jz-(p`Ck% zj;G%q#V)BkpUpKVg`I7Y(o%LE|9nO46_&gF0 z(Fy&hM2|yKy14;=6&#aG;0)=`7N4ul>UBoo^Fl#Yu2FSJKy^g|Di0FUp$v#7BHvJa zF2kp7b3{`+R*`^8)&ykO!KDn$C3WH8V*G_@Vh;8;V}l#;m&0*zm3;2T-&)Clx#${v zFm0`*LYAF~2nSUxnyFo?dI~*K$%`TWOKqEp)U&73v?EUS9|^KFWl2zIoGL+9Q~41@ zMQ-EIUUegWB7dC)3b9czI7j^x*h>rtd3%MhT4SCJ0|F0Z>2w8nw-BeD)Gs4s$=nov zpg)}%=dv8rBJF_BG@YD45`Jrq?_p)Asf5yQl^?C{ThHG9Ld^M9}E$k`3pPbe7 zyoLNj1Cx6Ho3aIMP|o7aS1pBeJR*h!YIzBf zEILvPOx9Z@6s-F{L{l84&!-N9mYqu$8~RQKeWtz*=xcXO`lNl@G@@_kOO5DTkBGma z@7oWKPTx(?s)1!9Svcn0pgCWK>p^i~nTVIb5}M`_!tCH7)C-r%*%fYT&7cc^DWKFQ z6@=9W3BXyWcg3Df$A=`(L?BebPppD4h0atPB*3Mf(#gByLz4GGAXLFmtdTH$^TkQ6Ttl_)@&tE5Dr~tFnPX5tP~$x0nh};;1SmEbqiZFN*flLr z0M}|b-xrg_nV-INE37O`k;u23PSnG%V<>Iv)WFKRq!IW%fMZtHp|Oputfvh08gwYN z4N$SN29i`nOaT;|5Rf-#^uChx?Nx7MpV3$(FENtqk~lqEtw)kj4J^XorHFS5({M-*i^LN# z%SNEI+95-vw85tW!CWZ=t?(!i(4ZWC8e(mtRnKISDN?~%2%>*Y{gC&Uas8KuyI#KW zdDIJFB8zPQ4d#`t)Z^we3!fyvS;xj)--Q@v=*AQ%d{+jg#10Na)l8Q{zH{fp;n2$O z4Yvn;9d~ncSP97Fm}!fU$rhdIH0DXBU?;^xNP!Fc9B@5aKM}$00*={vI~swD1st>U zsvCiO3OHtjK4-w^m`b+=*skD+>l8oLq&Ux{*mFEn(7&rz-*H<*WjLooDBv2PST@Y!or={uGF4tsRYv*d_#g9g47EV6l>ur35pdo zQ-W_ZK~RDuOWiF&S|{pu35soSy#(2uk@2mxJn{q$t%5r`$lQGrZztqJO)riGxQ!4? z`W!_N>~2O61TiV?jvq(+b7vN+A9G3kG}8NjH zAyEnTh+d%zs&jUO^-zT9H{xcZM~9;2RJ1up<)X=yg{o=gN(cWt;F#KHF7tcJFJ(Cm za(kHDDC?Zz%)Ry*SXWkAZ=;^iLH59(e|dr{(7}*b46V5wJ=Fj&8dpb*BMayC zTPuk{J%)E74W-j1D3nb>5Iw5#m=@`eg(|2EcD6i7q_zUguF-*Xh~@)zR7gCPLu&P` zL`ADKhgs}fPowX{7XI!st!MS{*)9XoAggOpK1ND_XZ3FQ00;1NvV*x z4MFMf>=oeDy)3$v%fvEs`vsCnaG~imS0_-WNivHSHx^crTpA5gI^t~7a1CKP_&?IClTBlyZdtsGwLcnaMOBHadeKO|gM z=DH51&}MZG^MRDBiLO_6O+jw9H2#?|GgcgL(C;%*7e{C zJGmHS*vuu1@DH20!mQh0M$Ho0^e>>dB{6exX>S7>lPPS|xcy0=QCipvM$tw!w7fv{ z5o5?GbyZ9sU3)EDltJ4_&_+}RM1?jv;Az|@H=4p6UVVua32JI!Bk*DYcXvqbYQPS! zo*-Dbb;p;{zjN_uE9LB9jIxL29EVq}5x{UF3F+h$f02EVzVu-FsV0mmJ$_IWE)?He>23g&! zs@q_;dq6G0k5R0zBM7!N9L*uI6Z>iDaM*c%tH$hn9?T-c=NWdkM+%2;F|9(qubQ#W zMyss;kE2xxA}`Ons*zS%mBy|R8%HlRuO%j2#Dri#VM9Fc8a&ko&lyMHNdcbt3`tS`h;N0-@JGwW1#bWfGv70t z;zLZH)h5q!3Q7ricH(=LE ztT@(X49U-!3~LR^o+C2+gcviq?AKcJcn1@M$KSSSjJ*npN#3_6MHNys9L&x(1v&=Y z)5IZK+EF4QQ4&U1Ukz6_bQTddbe6o4FUS-&=u4i~@(HX$c6#J`p$WCJqAB`;*56fw@(@yMw@C`lrnsv*jhAguT!N zq?&%aKaD||r|*^^2YmGnf{|+ON64BZ2SDrUy!eV^ST8gp+L^W7#J!|~Yq*hAEDOF| zl&AhuAN2<7hh7iI^MW>knl2bKxOFO9JG`41jl{w44QPEdSVR4R`19dKpYLxPxF^r` z?_M}tG`06cPq_uWz-IIvcvlTKHN3Qet??YrWDqm4zZ>@tA)O&ZD?im6#2_Y0u{eO~ z(A#gbIW%F0D82L+BP;`iLDj8pc@+Hy`W}Z~o;oRMk|#J8CC?~sGWFmEKAb>0%M-i; z5z=#MGlQhe&ax6yPS4(GcPwvG9ozOHGyIqS!C`8zIv?g(v=#U836IpZku`O7)oR$# zHS!RdB`d$=*3#Si$~4}RW?~_aZ^yh+)^)8)t`8?H_{!=h?utjOHJ7ED_22j+FFXWvV3fS|}XvANrP$D_ZQ`G0>*0q?7sj?~3CW~C>(8SB9&8Gwkzk`)$BuDQi< z@18w-%#vW>4$PCsNMa&kec(e0Tbv?D#t}tmGyH^P2a2xk73_a%=z!S0fAyw+Pe*T- z`Ry4kFf#4oT2`toN79vuxSD>e8{yriNQhH=M8pyS#^w-*M@c0ml8?U>N*T^>t_xj> z30fO8asN zU~5Yv_o^$Kqb{4(F#I$kSUPNsU|`4xxmG1x51uOaT(+?`O5xdj8oi@on6jjmRH9<7 zigWWmIyY~nbMu#WB{RX9`UG?b_R9DY;$z4JkBKIseMVC(PleJDLBgvySLu4=-Bsk* zwYTqMg93JH*P7}-lgDgftJ`ldGPvd5)?mUQbtxw4I9eH1T0HFOlh6_&n@Ciz1#A@> z=}~W^n$M*r7OS}^&i-C$ss`+ba(opUn@-5>L2SK9S%k|==2lo~a&QFv{cX71Vw?`d z98CNs-`CAxj4hMx5>NR&kd8rFk3VGOVEDyhS3{_AXLmrusfBRV8EWfZCIF^89#gYu zO61`*Okr(#B#*Igz?TX~oki^M1PXKCCb`W#m}zXJv29W{oMdf-4>7A#2(ole)klIP zLFGu03Patnnc~t5vAUlU*M(Q`a^{Q@F20KL=q3t7ZhU6jz;oI&?RVqgW=u7Bq5}u& zjSf927NYUaICWbxBtC8rY){c5oNYvSFu*VzMd)e_>?{L27qA2+QAu4CmOjqip+2Iw zJmr6IL}`kqPE8>VkjS3QFFn@|&H^1Fd7;q=NN}d14E3!QuuEN+L5=H^QI$l?qR|DU zeouaiD}Trk|M}Y8K(-UWrw}hT(+&u+wz>ghiykbC)yF9q7v<$3-pkD9Q~x=GhCxi9 zq#9b!H+9{9yk35vhIpMy-!4pV1YJ;}IN^scgh64MqS=mYwhpkiv1Ygc<-|v}_DHD( zFJU<`V-JqA8y)<|d?sfm^|%Cu&ekOTaiK!Cos8Y}Vv=sRe9{XsdmP`kek9jScT(Is zh2vG}M+$h2xqMx$!eY2fqw%x>vv3Fw)hy$;tJr@6fO;_?DsD&p4F2keqE6jJEMt-j@2UWuheg4G{x4mc+DlCSFuuoZ zq~-xb_4tvjXLFpYccmnvG^cJ)FtuC?o-D-#CZV3^S@{j>xuPUi&k}zZjU4ALK%3RS z%~31e4`>UQu$GbY(X=elnbDsCkmZ+23I+o;yNM>qu>n&BERz(1?`i~&)T3Yf#p)*b z3Ilcwz)t{fxb&f31VUp)tLI=|w8JP%dYt*$>G@d(kh*`Lu3zC%0kPztc3J(r*F@t`_(b~_Cm1IY!2#v726+_zD=-8O-nyk-%h_U z*0-f2kr0snD!h_yJ^7XuUdDx>#dWVKRzD@7gUo``!SG~^<0Wv$_?y0+EF^e>S0fV{ zG0e!^(8GAi2|dJ9{vza#kgE(N7Z9uwqHCb=$%7q(pGFKKP5?Av!ulZC#>|c^9Quo3 zk%eJsnp+!zzZP(826njtJF@Tr!3}0$b5I=d-vHvGvh)`)WIlRC+HoW;wr!{OqN$m6 z8Z&_MYmtH9d{Kg0q(l(V#sW03oDXHWRh~)osL9m*h*Dah6wP{bGyg~z+9V7#WTzi~ zfX>FDy4_Ilq(Qd*5ba)>W*N;^WKukb6w!wR_ZHXtuW2|L=++$!j!gz?)Qd1XN;uzx zS6iSq19DC;U_BE+rCQHLbq?UQfR?Ol!H%=&ho%MQsD!kP=cZ0N193Xs8zo@NVv6a;6 zhk4fnO$ycQ=>(U~moPF1{!N$8XAsi3+;5<*j9=i>2anK|_kc-}JCHi^E_!(MIQZ_v z)t^nKs{X>>gm(3>bb@H}5F`rQBathh-=dgjKo0O&<9NhIW{_+i9S-XBW_}mVkyB)P z_H?rWah7lqGMTHWhsJV9+5Kam{YlDsvCr=OJU#ZA&d=jxpTd&V*ym1i=)fT|YZZe( zOHg)bzmwn`#%@ATJjm^GetsPLq$#bI#6D%Wb}*HvGjHXaj;QYeRS`=h=ION9r&MO5 z`DB#`bpxL=F>Mn*jc$-I@~h!rB*Fk6Fv`;jYMo`(C$V!^@q-a@z2x@SqlT`Pc+aNlP4vH1mUJqQx+AM;kw@0rbO1 zBgm7Fc>j`-9nHawf5%dg4f>iZS%vvm3?QvL0-q5c@`<(t<^yVg0h3=RpuosChA*oA zNet)f`Nab$oprh}OtU{#TYhA*YEq$OgTvSXzu}2R-Nw>Dr+uam4K$uZ94O+WdjE15 zq#j0jI-8i9-D96p#xpUbF%oaEZnu;&4+en@I1-*r!PEKY)d* z_5Podp*zVgr~!BfF)N23R30`y-QII>>i}=a0GEExamRd~eHYpVNmSmj!f+Hs%md^z zQ(d`$^^bqVa=wq8p}pE)T78b!TTQdqAZP@~Q$Bqw>{pE-hFIGdW}onRjnI~CLLxI`a!=%RrOfW$1&vOKBn>V*zP@&0yh5Ty^xU0Xr*b^Q z$tiV3#P__8Lno|J2XJk^snpL1a%c2(kWv_{iC%Yv1%-1n#3N0}f+eE?;J#nYmvZ6pmk)3mFr< z=kI6){^mCsDz*1~c44EJZfXql8kW@*P;mvS;8qGEo+q@%xEW}-DG*1=$p=}EqgnkQ znxJ_m*X=r&nEkpk4ue}rW#r3LrpDy`+T=YKc^f*|9LMVEG2mbOxh|rv#*gl|_Y41EP&%aYL4+#KIY)?B9TS(RJkDZdRMxfCg9>cQp{ zaUar;F;R7YZ^+3sX!;S2cDzVvvT1-CCp>mD@P*Y?*@bc5dGwtRW9slVL{O2T?fz?m zM%~Wh=kc+G!C1oRPDYA;9EV7~xE9H*gD!}jTIp?WCBk!<_UM(N&G+r*g=RCnIn#rk zp~Gf)drc3z5kSM)IPRN={r0Zdk67$-WhM9VuEej)b%J-*6yCZd%klp>S&ZH#v{LC1 z^yXYT`yBan8RYAII7?7Pt^e&P7BBk8Q>Vk);b8M75+L0x_=(KJnISuv50b*cJp2`% z9PEvdzC%7Fr@i5&)frK>k`Su^!%WIrxn~{`*(M?!Y!eHmn@~ua*&063D%6+E_mSkD zX;rWtED2K_c`m}v{D=ft`r71k_OQeF<*i1!1-XL7ScL=4mC0=d?kPVHEJmzdw9;~C zfN|Q-h)ch3vQoAIu+Y>C%5##dsDL@r#v&Pes-K3t_%!Q{CWjPR6i0WpDP zQV~zE1|PPt2K(Za;kGm27fsS-HjcJz4ub3oG7n&xL`{ScGX)=4VU{0$;WQxTmQ-fI zExyy>l>|?#V?mT2O_$lydJtY?*wP|l)FxxFP>rWbiS*lixSu8(i==8WpYy!St{#VAO0*ls=QO2rI`*(<=SFl)LBnyX7UOulz-c0 zhK)691W4#3FZ_ARHwyDa9vtQsgLuQdFQzwQ-YOJr%L!zMc^B+$$h?=4B7u1)7_h@U zi{N80Z!o;q5}4PW%XgZ2&tJ^_z|CszUd_CAhItnfTLb2u0Cv`keAkQ6M!G`b*uinA zQ#g1F{-VBE@Vp73T8Tx!AoCd=771ghK|dhaGp#3=S0t%DdQoVz+#xQKt~-vKj|XIs ztRQ7mWSSO{df^H22#`n!G=yU3rEuYXD=AklxAT{7lru{2hED5bJoA# zQ0}JEBXj#Nlsi_+oCef~(tUj_VZ7l&S&}ABM~3cW;hIoQC571!r;g%?&E8>D@LO~> zc4v1dDMc$$*x4Xsggs@Ecw3S}m5G=VY8R;?MqKg2&~-$+@b+>TipG#qz6a5T52$XS z83@&>_(e}VVud1_g>|?%M;2+0jB3D<|2{4pS!6h}b09ggh#dLsXNM#HW<9sa9lQa< zlpZmxXsEyA#Ta;r6i2HaM!ZbV<3vWBCZ!ujkTBIw)AK)M#8^uhaSBK!BRb*tXpH!_ zGcLQ7z7P`C5?Oo*9nU+j);kaH_s%whlew`Xqz9LGWS9-hA$qhjI$#cjLx+0BLeyrA z(>)90Q@6r_SgY-Fg8B3heilV$Gu$a>1@;o#gyP~)l zt=793#4R$fEr+E?%2OQ@vQQ*DKUxB7H>83JSZMa$fF4dk3%Zy<*BiwzuF##;vS~n= zH!$`U8r3UV)u!DoT>&Y;ZB;OPZUqzjW*GHSw1^e?6(dP8WgsoX##MIu)vh;ua8BSc z7*Fs4)Wftnq+GoPcXG{Dod-h;-)EVM3})nP5PuU9S@Mo#qXS_WZS-(2E=nL|Y={-4 zsym|D0gd7`NMkBnvQTjp4e}}>kk2uUqQ{E$goef>Ymy_d2jCiyu$-kKLs^mWB8jI0VRU~}Mc2*+2$0})|N$9LlXC6_~LBx>gTTMv^zeh=p#O%^L z(SSVYA(l&*-ex)>rGvOIv&5H4dp9C(fq-Mnq#YZ9LjsO1lO8lRpJ;erJwIOtJzb<3cWF!jb`svNh#=%xxNSwgoxh*qypbkZ>o|gbb?kP!4X5;qXQb;V-!9 z2SGXqHz#ZKQy0tN=P7T3Mi&h1_(=N^hRs z-;7IS^oRdw#OSM-CC=#8rs*6hxLCk3MlWgv&Ju8p(T^Cg!{{VKPa{U(Y?3*Q{t9oE zAIa!+klKjR&&Ke@7`7JtNMzV;@G(0o!%8-QVe*Ow81|T9*flKqXx)kON6tDVo_|yl z?>O%W5)UI`gEsY@lStlbxNtQP3a35aTyKQp#2-W`FxEiqV#4$Tydg?xbshd*o2Q&5 z>2fG0ZN3u?a}r6G8IlMsA%A>Jh^JgZRAMp;U8v_q9C6}yqX|)W@LFH-x*n$ zSlx^AtqPi*xndOKx*sEiPZ*x2ftH4opS#g)q|EWz`w=u5104gA9tVZs26U;_4{4jm zN+hQR$iXvBUDUEp`jiOz(cN%+6RRtBBmOX43vBHA&(4Ki&)&8I*8!7*OYuu;WGfe{ zW)!K3U()*-8ZeRA3loUN&>@307Q(>Vb`&km7-;J*#Dp^U6E&}$8p zHx0yP>urJhFC4QJCiE#qD6t`!sLXV{i!_8W? zxVlSixEsw(6wVm;DKgu*cFT-gd5|Z9osn%Jzzr)t1FT>QXJnfp2xzOx-1|@Pgb-quYo0Ea~$nTnilYz=ixQJ z97)m}PR>u+F1GGW``nQ3k^AB4QHoTrUpb2G}pc&jhI?VlqHJ};cjp{$aYG5Za+4%E3Qyde6d z=Yz`5i0!#0cP5FCuR;(j9G$M>xY&^=kpa z;x57~)kh|bX*jml9tWC8kjYyMICNOe*9qWcYM7wzM51Uq5H?{+L^9Q+0dnjrGYb2} zV|64KN22X?x-vvznYj&DOjfE(nZONtGbc5eooBFOq*v<`b{8q3E}oWv5vt@e2Pf~j^eDD1_dv-J`$xmPlnusE&ne=e=U zl}dBK1m2`n^fs4pN*CkyMQAy5dmARMmN&oFTZJj?d`xE9sM&r@)^IL-$|AT;mZf^i zxkYYyx$Yza@gSOu(&jA39r_AV?S0$E6X1KT#az=g3z;==B*UGotkwLk95}@-^u+GC zSPYBPysMvRUZ-4TW~)j;lffd41HqCr^@VqDn-q^BMYJ>X$Vh@b_c2d=it{Ukir{xm zhU)~J<%|>S4cHkc3J9Jewl6#))!U80*^)bUCaavt zVy|U#??4`O^7SE+%MFpskkBd}=n#3f!SgY}XpN@8Y_{aCy4f7p#jQvoH9&(^2_fAbQR-{xbgb|+%Z zCd#&O%xH3U7X-8Z{t^IQ7l4B)bbrU%YU0&?lXlA3t~-T78KkzQq4u8}Qo zi6cpWj%yqpxqtdkfTDQ*#`2m>>w00XCSD?VZovyEWn{{y$*!62UHimMuE=#G;Ba~2 zhL{vnaajQ35uP@)E#t&a9!cPW&YGzKo@EV|V z;j$FCoR==SCRFBn&*gTzdREn@5R$}quD@I|5d7HpN;qYArz>3lWd4+450&8#;wA_c zKV0VWNZj?0l*w95IOTe~4Cx4+9xij?JP$&1K6aq9J}q-$Cj@cx5Qo9H9-+^ibhB4G z>E^FxTpOh8@=2MirR2y%2v=kv?$A4B@Rej}<}wGGjyPS~gOv{E2j6p`?hni0BFY@I zKXS0-eBk7m1uUADS=Acq`Jf4wLR*L3!JAOCWLFDUzi4zx5qQxM;zmsY38!Q~%4BYr zqye{(>trdf|6^q?oY_UmH&r;L%x*o>b&AC8JZ_{Zc~0Aru67cq+B_YCcy?ZNrbSy8|E>!N7Fu8 z=4y%xi%f)5>VQvk?Ir+{01BscN2sl|{bKwvr&c?kE^{>#TywxhUDL@g zIdsfNo!KVn2f|~P?u(`K2?t5XZ?Bah6+;VOb+AmYbn39^4F^jW(ouB7Ddn+r<$&tC z&i<~vI%3K)|w=|;T;%!@nn2vx6FBkt<=IV?OQ^TsC91Kf;)_`!z zRD`kw*NVM5XErg;uif`<~mX0*8Jtf&8shSog{G^l8CQ3LFzXlhA^qankFPB)pa%KO3^)Y zH2T6_Y&#a?LkNZ=Lglg0R)nxDgt#3hR8v!G_stIN8gAc_iT9t{g!*QN`(`1DtF~{p zOWl5u(}Pq!Y~=jLRm~gfuDojWa(cdDl(-OYFLNC5e}r+sY99R9mlAox)6&J4Gvzs& zvSQT{Y3xCH>Nxq$QqA#ug+0i9<>=^VoVtX^QfW1HdaA;s4(3s$Osi?%qYm5UWmsr zI2TZ#;zXx?c^=*m>K!WVZ5QM*@*RmR3)GGqGNWMF^g>(_T*mmP5f7h>K+QPS2jU&M z6MsURy4F=Ix4d@I^fW|x##W6>#;wBU$tLHfW87y8#*Kztwn2w63WM~DRjkb6gm`l_GKaI)MZ4ZkNdc@efO$=t=9I<$ELWAt28k(=jaGxhLcnW zy4XO|Na~*_8dtziP2MK~W$Mq(_Y8bDBK=0xhDmlINpz%As7WIJvc%G#0)APJbxOY= zvGgf`%0jGDdZsD;2UB_)zK`Tm;Ym2Hhmv)$ z*Ft+BGcaeCeBVA)kl_i?`3N$do9uaL4T5$>K6x*9XXo>2H*qwAUoB$IT@e+-7_Put z8g6(Thria)HX-y1@n*7yrpNtJLgJ{oZO=IT`jGz8VkixNoT zi$$;;#P`xax9~?l4uTL|Vz}f1u}Ii@SHp0PC*B29so20rJv)rQireeL3M=0o3MvRo zK#gN-pWF;r=Xld`6^+{-I8%eT05H%EKB8tKUOH>20A38TcvFyW34c&&H6N)^M!M(z zcXVmTc>=uB&q}t2;x#gl{UbhXTbNqlHXM{i7kKu8^pGvw)K99~!p%W#5;!QHSk@pg zH4~|U%N4SP2z0Hqu4_XTU5Eq}6{N=5Dx|VQ8~$4E;5E>%A-z|qz3G7If6HwBh83DJ zP?zjWfpA2V@oIzGwSZgn2hI70|qYUOQ!1~PYaVGG&9Y;(m1hT~}7uX`|wu+%*$U8M}NOicG4;V}E$#s_!8S5`!Y| zfHUF{l-V!(3CgfisZYH-67z1FkU6$yT)`1J&qvN;FB zIbnZeKr7g6eN$mubp%84U=8??O7l=2DN4((U-L1{Ls)3TA=kLGv5hsF&))^=n)o_S zOv9U-o^bNKT^NFUQ9+%IcL|zAkGIZ2wK)k^Z@{tpJwX@V_k1Wh+S*E{8OLfB0u)%0 znfOX0dK(M5%Wd_{-S2B>@!>E@+lgsw)1r}h_GUVJ{PDw~J-0~DOSN)HCYGjlq8pBN zrQwAiJkmL3O>%GRcru;umgR1mFxGZIX;GXvfX~*H4P!kS$*G|)?Y?fi1PorKxpG|Y zq&9apgGWJrYIKj4pB9bgmag)p=HA_AVsb(BMH|nYpe`GGw}LHz0x#Dc5jaKi&sp3I zT{XHf!A=B=fti^uxd53yj=e9RP;=ZPgJX~Cb0|y{8sk_xe2T%bSe1L?LMa)$vFOid zi9+(QRag(_;C}oCEbY4*_hp4 zZL0C4HKaCq1kK{!1EMwe9YmTI6DZnOpygHRAoya%hRW*in#5gV|tkAEW!t5um%L7$VLRxj^i|UMii{{ksfp|y8!mDNC=B)Rw;0A$A zF#M?^In%NI^T0gSj4Ow{KLeD%+C)yt=*n<;b!84c4#d2|+of;f^hF#3#5k{8XpW2!gA-5Fi&|G zw7q=~ZsB2TaqsPi9tjonlphclbvLe%cuP|lXjP^md9F0Rr~C`@&N~me?a~FZ>?(=) zeit|!_Ra?!Pu4APsr1oMu~X)|d>2{Xc~g7$@c#q(s5OAC-u5phk2r>y`C^i0e$hN~ z{yBIU^BMORD_|!lvf(^Xtob$EX_D`2=Abhi4JhIH#@Cy?)W=+-E!h5BB~E3kNJb$1H#(X zzN&L|GzGFw^z?71JohJ+b7@<~5r_7?mjz~6@_6AB`w!UeKyck%O#{ob0t(G|8MBCM zd~l1ey(Na}qWaMGuABG0jN3}?!m3TrDhzDa)$VScLtj-NOdhjNx@ZL%le=d8C1dN- zdakoFjNB}+WtC}V?w%PhkuH9Y%$s95^fNHVa4ux zo5%uHcsg;nV92M1>IxPA7Amd_o6i2Z89738Sy0@(RyP8_T_No(^O8^-TifBqZd+a? z4Hct3Y4h(*>jygX5Gr8^-n#e~?Hp-~rLxc`nj?$Jis~Oz*6#?qAM~40{MAuK%0OTq8zA-_-AC zhP~x1I6key?JY>mxRAUw8uCsxh02rnjmj0t_XJ+V;5kblbG2pw8Ko zX~bZCfHsjk3p`}yPB@pdwlpY9er<-+*l>i=S{BEE+|OuqE=~5%ABtDamw136w`iU( z*(zO-yT&tZ4{Bi-Rhjt3jIToc1DhBR?V*h%Xi2hCrNMKqqy)v_1$pRmm9~poV}#o9 zA+!cI9#-+!yVR0X0m*a8m9V!8MPkff5rSXR&{VVAZG4l0>#(3AMNP*8-b6flvFadI zkm(;gal7s~U_ofDy2X@pIczvJD!2sE-}@MPfN5fo_54j+MW5TquF=-x!SbB zpLoL&ZGiV1zt)->Er6ynyOm){<|$7>3!whJNd0zoADn)fqQ=f|6ROspbm|t=pLe5K zMH%6OF05y`pu7Ib;g8d(yH7>t+7fva-G6HIW;Rq#6mh8DCOFipb~q#iqx-?#a4Y)> z<>tz>lXxN&3q2LfQ`h+0IU0}GZ$^E7dbB@> z%X`dlnY)amk}nOTV>m-)eSjfvw^h)^G35q>5KG+plp8S628W9a7>N!jLlQ?Bik2R8 zl5=c4$mX4g(Kk@lgjKrrYqA3gAS<%C>CS$XGMMryuih-0H-aNg7kn52tsrnVCLd6! zJh?Q4at1t=-$Kkld7pwDUpgKD2fy>+pNrTLfr9RM{*7^vl|kIJbgSjh03%Q?R+lZK z9L`hy@oUapoqGssAQJ=BIMiL8+YKkQwQf+){01Qs#i82DYmOWxRPOlZE?bngYVtc~ z6!KPS+$!kTmBMHi7wK}cSbez^6>vw<~U5a9s*{_ zFZlZ;qH${vO4byz`VXDy?B$6PQ-5G?YX}{KjDk@foK+9r*<2T(2`)j6WJcDAXuAuP zB4zEC*OOh*t7y?^Wiba+xFM15WD#!hAor;-)3ZaU$iTB<)8c&i^3YnmBpqDm-ybSk zp}*4jg|)2^d~)zkXX&a)9#ParPDVX68iX5hcRwtwv7+y!S!!^vruF zX5P{v(CPKG`+?qr^leO9Eh5+4-&FW-?2of>4gRA+b}X`*FJ zz1*aJ38`zFC82~?&t|iP(WxPCTJ-#9`zI8a#@xvC2{S=*4k44H?Z&+)qhtuOa}7fEI`%ggozX$26tmN+0j?E$d|Wq_tU^;TC55TmKG zAqtV4Q>ABk1!J(Eo*0OtH_P|H*tyg+b8Q_(oZM3VP#G2Gqxz(uQSX_<(`MqM>H3 zRJ9e06X^Mo8%&jdH$-&MMBMEV(Npf^o=&9g^AgCIV2X9f_?Hw*Ho~0f7#{rbhP229 z4eC$K?Ykt_-;^DzKT{O+irkJyX3ldAwgnnnqxS72_@{7@^IJq*xO*`_|v=X(9X8 zSnh1F7TLkm_``_@` zHT&Pb{;({#_l@}sw!cHe8*Fydp2l=Uy^KX=tbf^qNME2PGgMe-6&wl`9#UOd=DT|9 zx`}LE|ASlC7muyV#MZS_I;lR&PRCH9)jJ)Z{nDcGPKSQG^+9MMyyAnmeM8<^GrY5= zduLinGuli&h(Y~3(`z}X+Y>YJ=&!o)HHd|OChRWH2cu_!E7W8jq_gm(@+T+j?nCQ` z<5*Y?Uy`f^vc*(jqy?gt9$4kVySzRw8HwE#!O$5yN$Sn(Zo=6uuU%&)x6?3c{2 z+SEHH^Nqv}$vmCpVPeB@i`SueR=`<_g^R5OoFCOB%eNs0w4JB+zS@AG>kQ7@49;}~ z`?(!Ydr1`l9DPbHZJ6mS#5x5(LL#)Bjw8*FNK&~4k`-=Z@ZV$b-$^iDrw^+cS#bqE z3b7=7ib-`@!}6A)as)d>p4G67rw!OCqjju|(-X?5TNo#LD^eJuZ4$i|umnaIH7akJ zfVng)OgTHDyvQswu!-RYo;OF@1Ob34G*V4r{`gHBKZ9jV@|daZRRj-!0XNf{O>%=DHmNa^&kwn zAK}S_tH)u;?T`=+xs4J^MjYp;QzyCmdV&X`kgv?-t8Y%M7x`ISfxv!5KQ6(}6c1;*#!WweeL> zux66f*`}$-zf5+;?nvE<1|rxQmxd8sDuM>9Q+?D3d>+6|?hIR};T!vm4*9)FjX43) z!X%wz3O@J}{ZUG1QHF{7E0&~N)>Hl@aRja>?7WXJs+{4ZToi>+;SHE#1SMk#i>P{R8!{%3^&C5pxo6xozJ z35BsGcW0SM(;Di23@5==M!|X{=ExKW@!#}rH#@3t0B7cBzvq6 zcR+Qc{r)fH^gAr?L2e2neNFqytPSnk|9Ra|52B&CDpp!W0ba@uLj_Wb8%3&I>gkKM z09zw^Q+sq>9ysWk(AOG>R?U`<9P2no=`lcSf1PA6r-fClL|3kEB za1gC-0w_^<%kYiONR)v}y4A;&1t?3Fc@~-@ayR_;nOsDx6PGzB6Md@ zRYuHh!1%qM->B*od?y&eKchMX?=s1+NHj&ujDZ0bJ4-Ceb_EYj8 zDtZM9;`TCDo()Sxy+LeX8-dK0h8{i9Xgo~%0ZlM7zc&)#m}|oUPLP1G0Xw?re1It$ zEaw#ib2P^Zgo&ID6!|?1GXW!Lkqufv^d9q%eQ2kEUfoMkO&*Gr(M{Li3~ekYad?y3 zy(RB!I>L}R{y*EGfm=1I*c5>E)&vC0t$sG*;Z*D@fC*s5))|6? z_AXKq+`@p*0NAN+OIG)oiu(6lqXgor*|fOU(2b0lhN}64Jq_&(4nL}!p~Vs1r=B6H zqP);gRGI;|GNeuh*dg^A)?ZiDW5A;mzql%Z#T>pm`SbqL0yi8OUNnTzq(2^Baj8J@`;L z`dca6N^@a~)5aB07eDqUkQ4E-;!4`?gC6)w}W0^KSg}RB{gSKNbDzi=A+J5FW`BHvnoBRWS+P@tQN#QcK zfiJ}uI2HarVFUN9k+6Z=;$t9gle2;AL%q|$U(f?#*R~!c`~Td)2Qa4z8rX|Bo8AmH z@SUj3ZQ!~1*lFMj_G6F5iDBu2L~4oaP9wq%{5ZbtecX~C{~sH;oLF*J1E-^*+y*}V z1}d`+{H*=VYv5n_nZ>z+ppKg>-j+VSzYur&?yOnqP8?$uFE+GB!WJHbyc%2pq>H_r zUAPB6MoR4e$A}W1anwAB76Xt&<)S-5jumNmk$C)oIGF9x!GL6TO#=797GoPUh0EMB zeC$j~ZpOzRkrnVa`XoaSs5R^d9*_OW>2b4ZG7dJm29{I6>x90z#c=ED0N76Es9X~> zY;hY>CT9Fq4Os)|asaym#ks!2{GW3dOb#$3D-~y8E*co@z4bs7y9Vx>7+BPv&2Q%# z%^d%n2^Dy1>^zur5I;tUot;x}$|k-1)*hA!hxxKJ)}y14MsUNyTMwFp*YUVN%Y2Vd zG}9r&Wcq(kIk@&<{)5Gl(O*QrHpBlY| zr==9Al~Sr#L0q&^FBui>_uj5rD$kPb>KFDr?-3n2v_y2IR&p%D`HRofi ztrye!`5F%nKGBMEAU=2J|1}JM@%_wvBmBQc+fP^K8_&PY=THPCl^WJhGL5&MJ~Qt{ zylv{?8C|Tx^+u4;KL(1m!yQnONONj`D!hkz@Y-`ueR?YD9sHhpk1zqZ=q)MH0K!L`-tElZ{5H)@X_1w(zgGe3!zH<<9d$IC zg`qzwE&TyBOr7+u_`lZ$bc&Dm=0R2{-z}YjN7IWS<>p?zU|%sweVCyGoUGQ=AkJl( zNe}dCla!u}2SM_tH!q#p0M#IowLy_2a~P_iGF_8g&Hx&2_FkLzrKE9gg_;x$N@n#> zj6^N-vhwQlbt|&@B!o0c_f%UrhCEacD_ICpzxjGO+A*m-Yfirl@G_He7AIP3`l{Dm-6(FrS%^f=DGXG*F&jl>3)+XZnv51^JlPStS)RExA;!`UQ#& z>51ujo%*GF7f!2RJ}vnaA6`yMOZgXn`l&{#@?@DgwwI|wYg3+({La#Oq|Iqo%{_V0 z3T=TkB`w#PlmboCB*C@V(2E&>TC6p{;9=mw%Q!z2iaL(x0N(31^_@zh2l@7L{Pa~V z(cZJ18g@orneXay<-fKGo*yXo>W66cgUl>%4es}E<_W%ayGNI?Ik{<`2gxCs4TR8@ zXijqtAZ9iYpTp%jnGMwG8mQBu)p~ym6Ohl}Wnu?BeOGPq@V5D~hPBO8IvIhq_n&x- zg&AJR_|WHA4)0-X{~4yWPeoQ6^7|W9HK#x%*hs_OJfo1htX#K3L`ZKmkt|(bn`7MM z*83j@D>${=3Z`h!(9L9A^Q#WjfuN9=)}XXL?1!f)iVfv8@?NA#u9Z@?_kA$=VVI9} zKXWB&!$XFAmZdknF&8q(?duo#`iOjv^qLktWHL7eA3wy8zvIVxLGJ!MxK61ZSkt=F zdk;+SSOLB5Oie^vNtkZbs31CR2a~UsXJJ~OsX9<$M`2jaI$FwK`LmDa(^F)r8Ovr%9Gi>0#@5rM;=iqmOcelcn!rNA;e1`q<^(n9#Y9m$ABl{r3qg1C#~=m zT9=BKxZ#Dg2`?4#T6pR8i^t1B^720YM@FagXDVRSY;`N>?LQDI((k_640r-ksYe=^ z)_8kAJLzD_5l-seBn`>M&(uuocr$)Tw9eq)3e?*1+|3Mj{U>57(YXOzdhoIWDWvvU zzB+>Mq;QG#5MIHRQ_O*%aeTbWR!&c6ttJ^Ywc6hgJDeI7Bq)d<9}+(%i1fFTz1YTQ zm2ie4dD&+1wJ;iI))Mu!2ax9Jc$=x2Fcs;WYmuOu4%6|@a=b%JTMRS}w(!@}d*)4V zHxQZ4smBgpv;PBpx_>JEOGmOQmdQld<2BB?2V!h4oVpWV9J;OdF9-864f^j||Me>6 zWw)v+jqqiJs@$o^Y6)w-kleY}l%OZF(urpMW-yR%e?`=RJJEfcSkd3t2rs8#9` z8wIk;!afM5701J6#l|l)SC7NDa(|JF7F>eAak+W}wD?Fk2-@B>Tr7>g)~tgXXytq5 zmcZv6$0&~1?X{zT(=+?W(Frx6OhQu-@%<`I#HE4wY^couwN-kTiAZk+*_DY=W?iq0 zg)8Mpl3S%x_-WYYL$~$0AuWG;T|GTX;$aQr{osG|;<<$UT4kP^^pL)&H|5}ZKDM`V z2OzzSBNM)u#}}zVC(+>183udNtPK*Wt#MP?NveYY+i9eeT#eV-N7|6&u6SumLI7AOA=R2pVbu%ROF#xn(vlKHqnU{p>^CIN{%-+9NQvPfLCQTv!*~q-9~YV;Z1S&mks@f7d{UeJZRi#$mjCE+S z=gY$>$`3X8Gvg=xw+v6qEz8)zzcRAr|Ks{xaTse`>cRGy`rDdH|p5?KhKu>t=7=`RfQR z#4{@Sru^B>-emIc-~4nS-plw$?S~fpb#YQM-aB<%WdoM7*L6#Z=EC_TGhg;bDtj>L zEWTz;>z0I*5M`z72i=l5t&;EHW|rv`X^dLCeaye|;jdYrsy#vdtCn<=n_Ps~flF1L z)v#&><(fHdx)$&F^{rj4A7|!U{%tpVg-{mEQNn)S=T&-WKmQ_-XTI~^+wuedB6Vvw zd+%-E>b*DlUGKe*V4%uY_@bM=xaQ~Cd~Ymd7tHe-e$SWQd&!^kuM+q)1MjI@RGr_= zUO8hRp|Z5U%fEyB0 z@sMi!ylKsgq_!-Q*1ULX%i?&T{Q@sDJ^vqP?#O#E5B|d=|9H+AS!Jm$|4nONDz)XQ zbR?NAD{XL#GpEQ0KdiWH@bc1pu6T(#E5R(+zxQ|Htuh5tzeRQ%FO@-ddulFRh=C`T zib=M8>Q3g{r#CFj2PaZDB0U68i(?gGx*$j*gO8WY;CbcZ!J54?W*DjI+y6sYTZn{; zw4wYnbLbZQ|9w;RK)GZB-@#vUHwpg2{3BCtQNiDsAO4K5rcL1gwd5X@Vx#VX!=Fi~ zirytLQcXfUzysrEdIqOC91FFUG`Us*%j}_h@YUg^Yt~svExmJB+xFN5-fh84T#9|Q zELT?A%|oY5>c*>6hJFC?#{`t#;W7mQjqi`d`{{a1$g^$Sdt7Ftc1B=%UJ=*1QZZj| z+fqPpC|Pd5@WQLiKiP)QWZ~O+7^Xcru5p>RH80l+ML6tNoQshG7nF<{jyZ!?z4BgM zP_q8a{*eg4ga12&Ec5`@kF8x;8*Qz5!?o_kOK$$`upjSz1@ms8winEpYk)c>1WR&z ziUJl!b%8bZE5hnvPNe# z;cvK1d3ZJcz+ZfzjDMwW9=h%5Cu!2;X$vWsDnG*)EV^|v!tbV+uGzav+CtWmepk(0 z!}Bz#Kdkm9IQ#|vRtlnK1QOG6XDybt=joSIkK1pv zPoy_2m5V)uU86p7q0lu_7cxddT!x^b|DsZ2$Q;V2UG%TK)&^6BS?}_TA!+ISVrrl0 zOCBch!?X$1keW{Q>GEqNsiHGger&`{kX|QWd`rG4q}7op@Os~J@ILzLH#FwBseprh zP8J_P{;zp+9^PAKF2bV~_(fRMV46eIe)buJ12^!4gAwt};?gV-b0-qYWh$u8hSjEKbkwRZ$TcLXf5>GG z1(N11<{Ye0e&^XGCMH)-&4r8uxiuv9*g2nDsxuvpf%`)Cw8mpgt+7ABgao@ayCI!( z?x^RMyb-~>$Wcd`PTt#v5X}E5wgiJk!8F{Nka8xqRo*7OYa^YQR~+O@ZSfbE5Bj`Q zT8qDWdEYOByHQeWA$OE_o!}}8{Fq-~ zJhZl5?;D(S%tU`ZFB}_hs!cJZw%e*aEIj9z~}Pq=M`FcGj$s>CACeF z)HcP_8W+fHa1r%k6Zw|3m-3>OxZ~I_Z`w;maFtKmOT|>9De3I(k{EzRXQiTwO#4{zI2G)f4-Ee&tf+TlAyw}yYzlgKz3V!A+p<4 z$_#Udlv!pHO0audB6i0i6yxmiEOskh==$#7^Bv#)T$Oh))dvZ?PiiIc?7qp2-U#2l z5GF?Y?q!`E-|gZ^yX^ijC&qWTcXZmOtS=p6ccKcP#qPV5^x5rtpY`3Nvg5PZ9F#J{ z?3Oai)B$r~w^1T?Z^3tS`tG_CuJ68D#PQv>(j4&J9|j1!MYWQ6c5g!hdlb80ei7rl z3pzOboM9%fZ5x-}=T$nV@4nA?ABJ{v)FA2$-sB>cfrm&eRsmY>bvPuW|*N; zW|^N*g55h4vAY?M?d0^`rx9s`xLdI>s>PfHcO}S#{HW?rF}+^mhT?KFLo14BcpDRU zBmB3`=int+KIiTA??TB`vd9z%e~-xoFV#$ z**O9P=2<&&i;lRk*g92$F-Wcoq8K15NSR^ENttE(pajsSiAe5&^jN4oD?k)Nzzs&r z?ot~W-Nw=oy=hYKG!&9#zvf?r@Na|FSE&JuzxMb6-M9QWS%6xDU4U4rL8 zI&yHE?@Is2q+6*Qzk(SIZqKXma;CO&(39Z}whf>x#x{&}4H1ha`hG7L4=groq|7kO zP-09k4c@?QYj6t{k@JR2@Xeh5`x&Aw{Fik+iEH^b_k}~GUZt|=hz_GS zP*55D6Y*CV9rTyFYhNid%(E!L=(i|faoYrpu0V2aPDZ=f2n$9pJCBTJG8{-Z+9Rsl zn@3*IXz;ey5$~+)m}DH`tc_+yv)ZDy!|G^9*!9%{5RPKCxGUTy5bo{A0-0v5{#0W@ zKr9ZrvRjeZ<8-4*5_%B_D)80|!~x#y$ZIxAp#-tdq5!d-5)k_&pHa#Y1@a=eT320? zk8u{~a5xe`?IT2UiYeL`&U(b$sWrsY`rP}`wEi|jXvG!9VQ2j(1vOjuH?!%2(me$7+diW;}@lbmWwgNO~JTI&sfwbiyIs}ySEenT$ ziJwHXI^}MM)!j_QjR*mqAspqb4?)=H^aEcQInn{AWmPuJ>Gc$}oc_iDOHTVEb(oy? zmNLV1M+wVU%FAriawOJoc*;Q5Z`{%{eGn@xX-|_?e0itx!?hdyCo%+&M_zBx093@m zwQ`_qe{K!I%gFy%1aUmY)O=3(e-Mdk+RsHc@d>pfSBgiPM1}!+7j0fC8$yGKwSPg~L&vaY24%0Ay^y*$xM1 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�iT9U@wmf+cj3f^7m&OR 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

sXHkO7| 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

{r2VZ?-*r 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�y`pC!@uLzFdnmlhQH_4 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℘-o0;W{%M3_;){&!3EI2iLpnJH<-l&1L8 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

    wcrMx)za9SQBy; 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


    Qw;9@WAC^nW_2ucg|{Z8~D(fe{e~+8_V*XMljV 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Ⓢg@iRqgDs0O7aDkxOZ~$guUf!?Dyut`vcL!& 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íobItZ$ox$yz6YL7vH~6CKtD`u(fvrXt0>B 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

    ;vnBa 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

      Ak41qiB*1SI3yD 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

      I|Rcb<9DoW1+ay*alv)m$2yAsVeS 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

      ^jPZA}6qQvH{F6Yl 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≺lk+q*e)=8ElllqacsJSx%4=BU{+h0 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�FPL)Shi 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�qth_o!f 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 literal 2115080 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 z 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

      uUqFM0< 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≶^8Q~vLVae9Xv^HWOjW27*8 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�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

      BkIeQ5{u<7vAubA!ZCWd=xAN3XG<&`GKv{xx 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

@duT*ciJZcP;q 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�=th~1@(gXP2;N4 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 BpJxC7 literal 2443808 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